●Cellの核となるプロセッサSPECellプロセッサは、9個のCPUコアを搭載したマルチコアCPUだ。Element)」が8個の構成となっている。Data)」型のプロセッサで、ストリーム型の処理で強力な性能を発揮する。unit)」と似ているが、その内容と役割は大きく異なる。SPEはストリーム処理専用のプロセッサコアではなく、汎用性の高いプロセッサコアとして設計されている。Engineに対して、SPEは高等言語でのコンパイラベースの最適化を前提としたアーキテクチャを取っている。SPEは、データの転送を担当するDMAユニットと、プロセッサコア本体であるSPUで構成される。Store(LS)」を備えるが、キャッシュメモリは持たない。3)に搭載されるメインメモリは前回書いた128MBではなく、256MBであることが判明している(昨秋にSCEIがDRAMベンダーに対する要求仕様を256Mbitから512Mbitに変更したため)。Storeに転送して実行する。SPU内部は、7つの演算ユニットがあり、2本のパイプラインに編成されている。SPU自体は、インオーダー型のデュアル発行、つまり、2命令を順番に実行ユニットに対して送る形の構造となっている。4などのCPUコアと大きく異なっている。SPEの大きな特徴は、CPUコアがシンプルに構成されていることだ。キャッシュやアウトオブオーダ型の命令スケジューリング機構を持たないため、従来のCPUと比べると、制御系の回路部分がずっと小さい。演算性能は高く、特に、ゲームなどで多用される単精度(32bit)の浮動小数点演算の性能が高い。単体CPUを単純にマルチコアにしたX86系のマルチコアCPUと異なり、CellのSPEはマルチコア向けに最初から設計されている。そのため、マルチコアに特化したさまざまな工夫が加えられている。マルチコア時代のCPUコアだ。構成図PDF版はこちら●プロセッサの役割分担でレジスタファイルの拡張を可能にSPEは128bit長で128本と膨大なレジスタを備える。レジスタ規模ではSPEは、Itanium並のプロセッサということになる。SPEでは128本のレジスタは、浮動小数点データと整数データ、その他のコンディショナルオペレーションの格納全てに使われる汎用レジスタとなっている。SPEでは、128本の物理レジスタは、論理レジスタとしてマップされる。SPEが膨大なレジスタを備えるのは、OSを走らせるPPEとは異なり、頻繁なスレッド切り替えを行なわないことを前提としているからだ。「レジスタについて、われわれは経験を積んできた。(従来のPowerの)32本のレジスタセットには利点がある。コンテクストスイッチの際の(レジスタ内容のメモリへの)待避を軽減し、(スレッド切り替えを)小さなスライスに保つことを容易にする。SPE(のソフトウェア)はもっと、“始めたら完了まで(継続して実行する)モデル”を取るとわかっている。そのため、コンテクストスイッチングはそれほど頻繁にはしないと考えている。Fellow)は語る。Cellの場合は、頻繁なスレッド切り替えが発生するOSはPPEで実行し、SPEは主にストリーム型の演算タスクを実行する場合が多いことを想定している。そのため、コンテクストスイッチングのオーバーヘッドをあまり気にせずにレジスタ数を増やすことができるというわけだ。これは、処理によってCPUコアを使い分けるCellならではのアプローチだ。●128本の膨大なレジスタはループアンロールのためまた、SIMDプロセッサであるSPEでは、演算の並列度を上げるために膨大なレジスタファイルが必要だったという。「レジスタを大きくするのはループアンローリング(ループの展開)のためでもある。レジスタリネーミングなどの技法を使わずに、パイプラインを埋めるには(ソフトウェアによる)ループの展開が必要だ。他のプロセッサでの経験上、ループアンローリングを行なうのに適切なレジスタ数は100程度だと判断した」(Kahle氏)同じ処理を繰り返すループを展開して、SIMDによる複数データに対する同一命令の処理に変換する。したSIMD化によって、データレベルの並列度を高めて、SPEの効率を高めるために、128本のレジスタが必要になったというわけだ。これは、展開した場合には、ループ内の同レジスタを、それぞれ異なるレジスタに割り当てなければならないためだ。Engine」のようにハンドコーディングで行なうとしたら悪夢だが、Cellの場合はコンパイラベースの最適化を前提としている。「128本のレジスタは、一種のブルートフォース型(力ずく)のアプローチだ。SPEは基本的にインオーダマシンで4GHzで動作するため、レイテンシもそう小さくはない。そのため、コンパイラベースでのスケジューリングが非常に重要となる。ループアンローリングはその好例だ。コンパイラでの高度なスケジューリングのためには、128本のレジスタが必要だと考えた」(鈴置氏)「128本のレジスタがある環境なら、コンパイラが多くの最適化ができる。真にリソースの利用効率を上げることができるだろう。これまでの32本のレジスタは、コンパイラによる最適化の障壁となっていた」(Kahle氏)つまり、コンパイラベースのソフトウェアスケジューリングをゴリゴリ行なうためには、十分なレジスタファイルが必要だと判断したわけだ。レジスタ空間が広ければ、コンパイラがレジスタの競合なくより広い範囲でのスタティックスケジューリングが可能になる。その分、SPEでプログラムを実行する際の並列度が高まり、SPEのパフォーマンスが上がるわけだ。このことは、Cellの設計思想が、基本的にコンパイラベースのソフトウェアスケジューリングを前提としていることを意味する。それは、Cell向けに強力な最適化コンパイラの開発を行なっていることを示す。Engineの時とは、かなり状況が変わる可能性もある。Element)」は、完全にPowerアーキテクチャ互換の命令セットを備える。SPEの命令セットは、PPEのPower命令セットとは全く異なっている。「ベースにしたものはあるが、これは完全に新しい命令セットだ。我々は32bit命令からスタートし、RISC型のオーガナイゼーションを行なった。128本のレジスタのアドレスをしなければならないため、新しい命令セットになった。Fellow)は語る。SPE命令は、RISC型の32bit固定長命令フォーマットで、以下のような命令種類を備える。備えていることになる(ただし、演算ユニット自体は単精度SIMDなので性能は低い可能性がある)。I/O命令はSPE外のユニットとのリード/ライトのための命令だ。最後のMedia命令は、メディア処理に特化した命令とされているが、詳細はまだ明かされていない。SPEの命令セットはフルの汎用命令セットとなっており、CやC++などの高級言語でプログラミングができる。Engineとは大きく異なる。SPEの命令セットは、最大3オペランド。3オペランドの場合は、3つのソースレジスタと1つのターゲットレジスタが命令に納められる。命令体系PDF版はこちら●2本のパイプに構成された実行ユニット群SPEの演算ユニットは7つ(数え方によって異なる)で、OddとEvenの2パイプに編成されている。Unit演算系のユニットは基本的にEvenパイプで、その他の処理がOddパイプのようなイメージだ。SCEIのCell関連の特許出願では、SPEに当たるAPUのパイプは、浮動小数点演算と整数演算に分かれていたため、特許とはパイプ構成はかなり異なる。SPEのパイプの構成は、じつはIBM/Motorolaが開発したPowerPCのマルチメディア処理ユニット「VMX/Altivec」によく似ている。Permute」との2つに分かれている。IBMの経験から、この構成が最適だと判断したと推測される。両パイプへの命令発行はスワップすることもできる。個別にご回答することはいたしかねます。