連載
» 2016年01月05日 09時00分 公開

SYSTEM DESIGN JOURNAL:FinFET革命がコンピュータアーキテクチャを変える (2/4)

[Ron Wilson,Altera Corporation. MONOist]

モジュール化思考という解決方法

 この一連の利点と課題に対するアーキテクチャ上の明白な回答は、ダイを極めて小さく保つことです。これは多くのSoCアプリケーションでは期待できないので、次善の代替策はモジュール化です。SoCを多くの機能ブロックから構成された1つの巨大な同期回路とみるのではなく、それぞれがダイ上のばらつきの影響を打ち消すほど小さく、周波数と電圧に関して互いに独立した、潜在的に超高速なブロックの集まりであると考えます。

 一見すると、この考え方はマルチコア処理に向かうトレンドと完全に一致しているように見えます。最大速度で動作しようとする1台の無秩序かつ複雑なCPUではなく、大きなL2キャッシュを共有する4、8、場合によっては10台の小さなプロセッサコアを使用します。

 個々のコアはインターコネクト線が短く内部のばらつきが小さいため、高クロック周波数でのデザインがさらに容易になります。コアを出てキャッシュコントローラーまでの長い距離を移動する信号は、CPUコアのクロックより低い周波数で動作します。

 その上、コアごとの周波数と電圧を別々に設定することにより、ばらつきの影響に対する新しい制御方法が手に入ります。また、優れたシステム・エネルギー管理ツールも手に入ります。

 これで問題は解決したようですね。さて、マルチコアのアプローチには少し制約があります。最初の制約は、それぞれが適度なキャッシュとフットプリントを持つ複数の独立スレッドにおいてタスクミックスが豊富な場合にのみ、マルチコアにしたことによる高速化が可能になるということです。コアのほとんどがアイドルであるか、またはキャッシュのデータ入出力が頻繁であると、システムはシングルコアの場合よりも大幅に高速にはなりません。

 この制約は、1〜2個の計算主体のタスクしかないことが多い組み込みシステムにおいて最も顕著です。これらは長く忘れ去られるほど以前にシングルスレッドでコーディングされ、今では初期シュメール語のように見える言葉で文書化されています。

 しかし、スマートフォンアプリにおいても、CPUコアを消費することで悪名高いSoCは8つまたは10個のCPUに十分なスレッドを見つけるのに苦労するようです。少なくとも、これはMediaTekから得た10コアSoCの導入に関する最近の議論の趣旨です。多くのアーキテクトは、8コアを超えるマルチコアデザインは多くのタスクと大量のキャッシュがあるデータセンターに使用するのが最適であると感じています。

 マルチコアのもう1つの問題は、チップデザインレベルでの大きなキャッシュに関するものです。共有キャッシュが増えるにつれて必要とされる帯域幅も増えます。しかし、それらの物理的サイズによって、とりわけ避けようとしている長い配線が必要になり始め、プロセスのばらつきに起因する問題も発生するようになります。

 一部の設計者は、クロックと電源管理を独立させた小さなSRAMブロックのアレイとして大きなキャッシュを実装することによって、この問題を避けようとしています。しかし、これはまだ主流の考え方にはなっていません。L2キャッシュ内のブロック間は言うまでもなく、CPUコアとL2の間の非同期メッセージ伝達インタフェースのアイデアもまだ一般的ではありません。唯一の例外は、インテルのQPI(Quick Path Interconnect)、IBMのCAPI(Coherent Accelerator Processor Interface)など、コヒーレントバスがダイの境界を越えなければならないデザインのものです。

Copyright © ITmedia, Inc. All Rights Reserved.