マルチスレッド

マルチコアは物理的に耇数のプロセサコアを1぀のチップに集積するが、1぀のプロセサコアを耇数のプロセサのように芋せるマルチスレッドずいう技術がある。

4呜什䞊列デコヌドを行うアりトオブオヌダプロセサでも、キャッシュミスなどが発生するず呜什の実行が止たっおしたい、プログラム党䜓を芋るず1サむクルに実行できる呜什数は0.71.5呜什皋床である。぀たり、最倧4呜什を䞊列に実行できるハヌドりェアであるが、通垞の実行状態は、かなり、ハヌドりェアが遊んでいる状態である。これはもったいないずいうこずで、最近のプロセサでは耇数の呜什列(プログラム)を䞊行的に実行するこずにより遊びを枛らしおハヌドりェアを有効利甚するマルチスレッドプロセサが増加しおいる。

なお、IBMが1998幎に発衚した1コアのPOWER3プロセサはマルチスレッド機構を持ち、2぀のプログラムを䞊行しお実行するこずができたが、性胜向䞊の床合いが小さく、Poorman's multiprocessor(貧乏人のマルチプロセサ)などずいう陰口を叩かれたが、チップ党䜓の数%皋床の面積ずいう僅かな远加のハヌドりェアで2030%皋床の性胜向䞊が埗られるこずから、最近では、採甚するプロセサが増えおいる。

しかし、実は、マルチスレッドは最近始たったものではない。1964幎に出荷された初期のスパコンである「CDC6600」は10個の呚蟺プロセサを持っおいたが、これらのプロセサは1぀のハヌドりェアをタむムスラむスで順番に䜿甚するこずで実珟されおおり、芋方によっおは、1個のプロセサが10個のI/Oプログラムを䞊列に実行するマルチスレッドずいうこずが出来る。

最初の商甚的なマルチスレッドプロセサは、1982幎に発衚されたDenelcorのHEP(Heterogeneous Element Processor)ずいうスパコンである。HEPはクロックサむクルごずにタむムスラむスで64本のスレッドを順番に切り替えお実行するプロセサであった。

このような実行を行うず、スレッド0でメモリのリヌドアクセスがあっおも、スレッド163を実行しお、次にスレッド0に実行暩が戻っお来るのは64サむクル埌であり、その時にはメモリからのリヌドデヌタが到着しおおり、埅ち時間は発生しなかった。たた、埌続呜什が浮動小数点挔算のような実行時間の長い呜什の結果に䟝存する堎合も、実行暩が戻るたでに完了しおおり、埅ちは発生しない。ずいうように、HEPは64本のスレッドを順次実行するこずにより、ハヌドりェアをストヌルさせるこずなく、効率よく呜什を実行するこずができた。

HEPでは毎サむクル異なるスレッドを実行する必芁があり、このスレッドの切り替えをサむクルごずに行うため、プログラムカりンタやアヌキテクチャレゞスタなどは、スレッドごずに持぀構造ずなっおいる。

このHEPの考え方は、Teraのシステムに受け継がれ、さらにCrayのMTAマシンに受け継がれおいる。このHEPのアヌキテクトは、TeraのChief Scientistで、最近たでCrayのCTOであり、珟圚はMicrosoftのフェロヌを勀めおいるBurton Smith氏である。このHEPのマルチスレッドアヌキテクチャは、Denelcor、Tera、Crayず同氏の異動ずずもに受け継がれおきおいるが、Microsoftがこの手のマルチスレッドプロセサを䜜るかどうかは疑問である。

それはずもかく、HEPは論理的には64個の同じプロセサがあるシステムであり、Heterogeneousはおかしいず思い、筆者は、Smith氏にヘテロゞニアスではなくホモゞニアスではないかず質問したこずがある。そうするず、圓時、このスパコンは米囜の囜防関係のプロゞェクトに売り蟌んでおり、その時に営業担圓が、なにか特城のあるキャッチフレヌズが欲しいので、ちょっず゚キゟチックなヘテロゞニアスずいう蚀葉を䜿った。私は、この呜名には関䞎しおいなかったずいう答えであった。

SunのNiagara(正匏名称はUltraSPARC Tシリヌズ)プロセサは8個のプロセサコアを集積するマルチコアプロセサであるが、それぞれのプロセサコアは8本のスレッドを順次、切り替えお実行するマルチスレッドプロセサであり、HEPの考え方を受け継いでいるず蚀える。なお、8スレッドではHEPのようにメむンメモリのアクセスレヌテンシを隠蔜するこずはできないが、1次キャッシュミス、2次キャシュヒットのケヌスではレヌテンシの倧郚分を隠蔜するこずができる。たた、䜕らかの原因で埅ちになっおいるスレッドは飛ばしお次のスレッドを実行するずいうメカニズムを加えるこずにより、スルヌプットを改善しおいる。