- ポストムーア時代において、コンピューティングパワーの向上は、技術スタックのTop(ソフトウェア・アルゴリズム・ハードウェアアーキテクチャ)から来ることが多くなり、Bottom(半導体技術など)からくることは少なくなる(従来の逆) - トップの改善は大幅なパフォーマンス向上をもたらすであろう一方で、Opportunistic, Uneven, Sporadic, 収穫逓減の法則に悩まされる - Bottomからの改善はすべての底上げをしていたが、Topからの改善は一部の問題を改善する # Software - ムーア時代のソフトウェア開発は、一般的にアプリケーションの実行時間よりも、開発するのにかかる時間を最小限にする方向に重点を置いてきた - [[富豪的プログラミング]]? - [[Multiprocessor Programming]]や[[ベクトル演算]]ユニットなどを有効活用できていない - 単純に書いたコードは遅く、速いコードは複雑になりがちである - ソフトウェアパフォーマンスエンジニアリングは、以下のループとして抽象化できる 1. プログラムAの性能を測定する 2. Aに変更を加え、高速なプログラムA'を作成する 3. A'の性能を測定する 4. A'がAに勝った場合、A=A'とする 5. Aがまだ十分早くない場合、2に進む - ハードウェアがますますなにかの問題に特化したり、異種混合になるにつれて、とても難しくなるので、コンピューティング業界・研究者・政府はパフォーマンスエンジニアルングを開発する動機づけを十分にもたせるべき # Algorithms - すでに性能向上に大きく貢献している - より少ない計算量で問題を解決することが主な目標 - アルゴリズムの改善による性能向上は、プロセッサ速度の工場による性能向上をもっと大きく上回っている - 人間の創意工夫が必要なので、進歩を予測することは難しい 1. アルゴリズムの進歩は、不均一かつ散発的に起こる 2. アルゴリズムの革新による利益は、ムーアの法則から得られる利益に匹敵する 3. ある問題を解くためのアルゴリズムの改良は、最終的に減っていく - 収穫逓減の法則が適用されるから。最初は大きな改善が見られるが、だんだん改善幅が小さくなっていくので、研究が減る - ただし、多くの研究は新たな問題領域にチャレンジしていたり、スケーラビリティをもたせたり、最新のハードウェアを活用することにチャレンジしていて、そういう意味でまだまだ進歩がある - ほとんどのアルゴリズムは、[[RAMモデル]]を前提に作られている - このモデルでは、並列処理・ベクトルユニット・キャッシングなどを活用できない - マルチスレッド・ダイナミック電圧・周波数スケーリング、ダイレクトマップキャッシュ、様々な特殊命令などのハードウェア機能は、単純な理論モデルでは捉えきれない - 一つの解決策として、autotuningがある - 大変 - ポストムーア時代において、アルゴリズム設計者とハードウェア設計者が協力して、アルゴリズム設計者が理解できる簡単な抽象化をみつけていく必要がある # Hardware Architecture - 従来コンピュータアーキテクトは、シリアル計算を高速に実行することに注力し、処理コアの複雑さを大幅に増加させた - ポストムーア時代では、逆にハードウェアを合理化し、少ないトランジスタと少ないシリコン面積でハードを作る必要がある - こうすると、並列コアを並べる面積の余力ができる - 多くのアプリケーションでは並列性が十分に求められている - [[デナード則]]は終わった! 並列性が大事 - 並列性の他に、[[メモリ局所性]]も大切 - アプリケーションの並列性を利用するために、どのようにプロセッサを効率化するかが主な問題となってくる。2つの戦略がある 1. プロセッサを簡略化する(消費電力が下がり、面積が下がり、コアを増やせる - 投機的実行みたいな複雑なやつをやめたらええ - その場合、ワークロードが十分な並列性をもっていることが前提 2. ドメインSpesicifcなチップを作る - GPUとかもこれ # Big components - Big componentとは、通常100万行以上のコードを持つ再利用可能なソフトウェア、同等の複雑さを持つハードウェア、ハイブリッドなど - ポストムーア時代において、パフォーマンスエンジニアリング・アルゴリズムの開発・ハードウェアの合理化はBig componentの中でとても有効である - モジュール化されていれば、その一部分を改善することが用意 - 多くのコンポーネントに一気に影響を与えるとかなり速いけど、多くのコンポーネントを一度に変更することは厳しい。それを上回るだけのインセンティブが必要 # Conclusions - # 論文 - https://www.science.org/doi/10.1126/science.aam9744 # 参考 - タイトル、[[There's Plenty of Room at the Bottom]]への当てつけかな - https://www.s-graphics.co.jp/tankentai/news/nanocomputer.htm