第5章アルゴリズムのハードウェアによる実現:コンピューターシステム設計
Multiple Cores複数のコア
With the stop of Dennard scaling and the inability to increase the frequency of the processor, it was time for a drastic change. On one chip, instead of putting one processor, designers decided to put multiple processors called cores inside the same chip which started the multicore era. All the processors we use today, from our watches to big supercomputers, are multicore processors.
英語のヒント
デナード・スケーリングが止まり、プロセッサの周波数を上げられなくなったため、抜本的な変更が必要になった。設計者は、一つのチップに一つのプロセッサを置く代わりに、コアと呼ばれる複数のプロセッサを同じチップ内に置くことにした。こうしてマルチコアの時代が始まった。腕時計から巨大なスーパーコンピューターまで、現在使っているプロセッサは、すべてマルチコアプロセッサである。
The trend is to increase the number of cores per chip while decreasing their frequency. Each core in the multicore is an SMT to avoid an increase in power consumption as well as an increase in chip temperature. There is one catch though; all previous techniques (such as pipelining, superscalar, and SMT) were giving us performance without the programmers getting involved. To make use of all the cores in the chip with multicore, programmers must write parallel code that requires the use of a parallel programming language. This is bound to become the norm.
英語のヒント
傾向として、コアの周波数を下げながら、チップ当たりのコア数を増やしている。マルチコア内の各コアはSMTであり、消費電力の増加とチップ温度の上昇を避ける。ただし、一つ問題がある。それまでの技法、たとえばパイプライン処理、スーパースカラー、SMTは、プログラマーが関与しなくても性能を高めていた。マルチコアのチップ内のすべてのコアを活用するには、プログラマーが並列コードを書く必要があり、そのためには並列プログラミング言語を使わなければならない。これが標準になることは避けられない。
LINK TO LEARNING学習リンク
Microprocessors (also known as processors) have evolved in the last half century in many ways. Visit this site to learn more about microprocessor trend data (https://openstax.org/r/76CMicroproData) from 1970 to the present.
英語のヒント
マイクロプロセッサ、すなわちプロセッサは、この半世紀にさまざまな形で進化してきた。このサイトで、1970年から現在までのマイクロプロセッサの推移データ(https://openstax.org/r/76CMicroproData)をさらに調べてみよう。
Heterogeneous Processor Architectures異種プロセッサアーキテクチャー
Multicore processors are designed to be good on average for most applications. However, they do not give the best performance for every single program. Designers have started introducing chips that have excellent performance, better than multicore, but for a small subset of program types. Examples of these chips are graphics processing units (GPUs), field programmable gate arrays (FPGAs), and tensors processing units (TPUs). The idea is to start the program on a multicore until there is a part where other chips excel. In that case, the multicore sends that piece of code to the other chips, and this gives rise to parallel programming for heterogeneous systems (i.e., computer systems that have chips with different capabilities). Laptops can now have a multicore plus GPU.
英語のヒント
マルチコアプロセッサは、ほとんどのアプリケーションで平均的によい性能を出すように設計されている。しかし、すべてのプログラムで最高の性能を出すわけではない。設計者は、限られた種類のプログラムについて、マルチコアより優れた性能を出すチップを導入し始めた。GPU(グラフィックス処理ユニット)、FPGA(フィールドプログラマブルゲートアレイ)、TPU(テンソル処理ユニット)が、その例である。考え方は、まずマルチコアでプログラムを実行し、別のチップが得意な部分に達したら、そのコードを別のチップへ送る、というものだ。ここから、異なる能力のチップを持つコンピューターシステム、すなわち異種混在システムの並列プログラミングが生まれる。現在のノートパソコンには、マルチコアとGPUを搭載できる。
Multiple Nodes複数のノード
Having multicore plus accelerator chips (e.g., GPUs) on the same board is now the norm and is called a node. But what about big machines that run in the cloud to give us services such as Amazon, Facebook, and X (formerly Twitter)? These big machines are built using thousands, if not millions, of nodes and they need an even more sophisticated way of programming.
英語のヒント
同じ基板にマルチコアとGPUなどのアクセラレーターチップを置くことは、今や標準となり、この構成をノードと呼ぶ。では、Amazon、Facebook、X(旧Twitter)などのサービスを提供する、クラウド上の大型機はどうだろうか。これらは、数百万とまではいかなくても、数千のノードを使って構築され、さらに高度なプログラミング方法を必要とする。