CPU設計

CPU設計の記事では、コンピュータのプロセッサの設計について解説する。

1. 概要
-----

以下のような要素がある。

命令セットアーキテクチャの策定
データパス設計
制御装置の設計
レジスタの構成や命令との関係の設計
メモリの構成やメモリインタフェース
クロック周辺
パッドトランシーバ回路
論理ゲートセルのライブラリ高性能だが高価格でよいプロセッサでは、動作周波数、消費電力、チップ面積の目標を達成するため、これら全てを独自に設計する必要が生じる場合もある。

低価格を求められるプロセッサでは、以下のようにして実装負担を減らす場合がある。

一部を、IPと呼ばれる既存の設計を購入する形で入手する。
制御用論理回路の実装技法を他の部分の実装にも利用する。いずれにせよ、適切な取捨選択を行い、必要な性能や仕様、高い性能対価格比、等を達成した設計を、期日までに完了して製造・生産に向け送り出し、最終製品をそれが必要なタイミングでリリースさせること、が最終目標である。

ブロセッサの制御方式には以下がある。

マイクロプログラム方式
ワイヤードロジック方式論理回路をハードウェアとして実装するには、以下のようなテクノロジがある。

ディスクリート、回路モジュール - 初期のコンピュータは独立した部品か、小さな基板にせいぜい数十程度の部品を集積・モジュール化したもので作られていた
汎用ロジックIC
TTL
ECL
CMOS
LSI - 専用に設計を起こしたもの。マイクロプロセッサ以降ではこれが一般的
TTL, ECL - TTLやECLによるLSIもあった
CMOS - 最近では最も一般的
ASIC - ASICという語は専用設計のLSIを指す総称であるが、マイクロプロセッサ用のチップセットとして周辺機能を集積したものなども多い。それ自身にプロセッサコアを内蔵しているASICもある
プログラマブルロジックデバイス- ASICとは対照的に、任意のロジックをユーザがプログラムできるLSI。こちらは、プロトタイピングや、ASICを設計するほどの数が出ない製品や、ソフトプロセッサの実装に使われる一般に以下のような作業がある。

コンピュータ・アーキテクチャの設計、あるいは選択
プログラマから見える命令セットアーキテクチャの設計。これについては既存のものからの選択が「設計」であることもある
「命令セットアーキテクチャ」に対して、プログラマには直接は見えない、内部実装のことをマイクロアーキテクチャと言う。これも大枠については「選択」であることもある
アーキテクチャ研究と性能モデリング
RTL設計と検証
性能上重要な部分の回路設計
論理合成または論理ゲートレベルの設計
タイミング分析
論理ゲートの配置と配線などの物理設計
RTL、ゲートレベル、トランジスタレベル、物理レベル、それぞれの等価性を検証
デザインルールチェックとシグナルインテグリティのチェック多くの複雑な論理回路の設計と同様、論理の検証がスケジュール上、重要な位置を占めている。

歴史上、アーキテクチャに関する重要な概念や用語を挙げると、キャッシュメモリ、仮想記憶、パイプライン、スーパースケーラ、CISC、RISC、仮想機械、エミュレータ、マイクロプログラム方式、スタックなどがある。

2. 目標
-----

設計の際に目標とするものとしては、以下のようなものがある。

単一のプログラムまたはスレッドの性能を強化する。
複数プログラム/スレッドのスループット性能を強化する。
同じ性能レベルをより低消費電力で達成する。
同じ性能レベルをより低価格で達成する。
接続性を強化し、より大規模な並列システムを構築できるようにする。
特定市場をターゲットとして、より特化したものにする。基本的な再設計を無しとしたまま、製造プロセスの更新と単にパターンを縮小するのみで、これらの目標のいくつかを達成できる場合もある。

全てを縮小すると、より小さいダイに同じ個数のトランジスタが実装されることになり、性能が向上し、電力消費が少なくなり、コストが削減される。
同じダイサイズで、プロセッサコアを縮小すると、製造コストはほぼ同じになるが、空いた面積に様々なものを集積でき、性能が向上し、システム全体のコストが削減できる。

3. 性能分析とベンチマーク
--------------

初期のコンピュータの時代は、加算に何マイクロ秒、乗算に何マイクロ秒、除算に何マイクロ秒、といったように、1命令を発行してから完了するまでの時間を性能の目安としていた。しかし、オペコードやオペランドをメモリから読み書きする時間やその待ち時間なども考慮されるべきであることから、各命令を毎秒何回というようにして評価されるようになり、これはMIPS値に代表される「毎秒何回、何かを実行できる」というタイプの指標の発祥とも言える。続いて、実際のプログラムで実行されている命令の種別の比率に応じて、その速度が合計されるべきだという発想から、何々ミックスという名前の指標が生まれた。最も有名なものはギブソンミックスであろう。現代でも各種試験などで用語問題に出されることがあるようだが、1972年に石田晴久が D. H. Gibson に問い合わせた結果を紹介した記事「ギブソン・ミックスの起源について」中に紹介されている提案者 Jack Clark Gibson の言に「今日，どういう理由か分らないが，すでに時代遅れと思われるこの方法」とある通り、1972年の時点で既に「時代遅れ」であった概念である。そして結局、何らかのプログラムを走らせて測定するのが最も良い指標なのではないかということで、ベンチマークプログラムを利用した計測が行われるようになった。

箴言として「信頼できるベンチマークが欲しいなら、あなたが実際に使いたいアプリケーションソフトウェアそのものを実行することだ」などと言われたり、ジャーゴンファイルのbenchmarkの項には“In the computer industry, there are three kinds of lies: lies, damn lies, and benchmarks.”などとあったりするように、各種のベンチマークプログラムは絶対的にあてにできるものではない。しかし、定量的な比較のためにはベンチマークプログラムしか方法がないのも確かであり、より良いあるいは、各種の目的に応じたベンチマークが提案されている。

以下にだいたい時代順で、主要なベンチマークの名前を挙げ、一部は解説を付ける。詳細は記事のあるものは各記事を参照のこと。

Whetstone - 主に浮動小数点数計算を評価する。「湿った石」ではなく地名に由来する
Dhrystone - 主に整数計算や文字列処理を評価する。ウェットストーンに対して「乾いた石」というダジャレだが、綴りに「h」が入るヒネりはウェットストーンの綴りから持ってきたもの。ベストセラーのミニコンピュータ VAX 11/780におけるこのベンチマークの値を基準とした、いわゆるVAX MIPSは現代でもしばしば見る
SPECシリーズ
高性能計算とベンチマーク
HPLとHPCG
HPL - LINPACK自体は線型代数数値演算ライブラリで、近年はLAPACKなどに取って代わられているが、HPC分野の標準ベンチマークとして、HPLが使われている
HPCG - 共役勾配法の計算によるベンチマーク
Green500では計算性能を消費電力で割って、効率の値として算出している
Graph500では、Traversed Edges Per Secondという値を評価している
HPC分野についてはHPCチャレンジベンチマークの記事も参照
EEMBC  の ConsumerMark他に、以下のような評価の観点がある。

性能対価格比 - 誰だって損な買い物をしたくはない。
1秒当たりの命令実行数 - 多くの消費者は既存の多数あるソフトウェアをそのまま実行できるアーキテクチャを選ぶ傾向にある。また、そのような大多数の人々はベンチマークについて知識を持たず、クロック周波数でCPUを選ぶ傾向がある。
FLOPS - 1秒当たりの浮動小数点演算回数。科学技術計算で重視される。
1ワット当たりの性能 - 組込み機器や、PCでもノート型などでは航続時間に直結するわけだから重要である。さらに2010年代にはスーパーコンピュータにおいても、性能向上のための大規模化を妨げる一番の要因が電力供給になりつつあるため重要になりつつある。
リアルタイムシステムでは、最悪ケースの応答時間の保証が重要である。これはつまり、CPUの割り込みレイテンシが予測可能でなければならず、また、必要なだけの小ささでなければならない。なお、たいていのCPUはOSによって割り込みを禁止できる。つまり、CPUの設計だけからはこの問題については全てを言うことはできない。
アセンブリ言語でプログラムを書く場合、命令セットが重視される。
組込み機器では、大きさや質量が重要な場合もある。
近年、環境への影響が小さいことが重視されつつある。これらの一部は共存できない。特にとにかく高速に動作することを目標として設計したCPUでは、「1ワット当たりの性能」や「1円当たりの性能」や「応答時間の保証」などは良くない。

4. 市場
-----

プロセッサの市場はいくつかある。それぞれの市場がプロセッサに求めるものは異なるため、ある市場向けに設計したプロセッサは、他の市場には不適当なことが多い。

4.1. 汎用コンピューティング
----------------

マイクロプロセッサの収益の大部分は、汎用コンピューティング向けの販売から得られている。すなわち、ビジネスや家庭で使用するパーソナルコンピュータやサーバである。この市場は、インテルのIA-32アーキテクチャの寡占状態にあり、PowerPCやSPARCがだいぶ引き離されてそれに続いている。毎年、数億個のIA-32アーキテクチャのCPUがこの市場向けに販売されている。その数よりも高付加価値にともなう利幅の大きな市場という点が重要だった。

4.1.1. ハイエンドプロセッサの経済
--------------------

新たなハイエンドCPUの開発には、多大なコストを要する。論理的複雑性と高い動作周波数によって、この種のチップの設計は高くつくことになる。ハイエンドCPUの設計コストは1億ドルのオーダーになる。ハイエンドCPUの設計には約5年を要するため、他社との競争力を維持するには最低でも2つの開発チームを並行して運営する必要がある。これはPC向けよりも高性能なレンジであったワークステーション向けプロセッサの市場のほうが参考になるかもしれない。出荷数で見れば少ないが、より利幅の大きい市場としてワークステーション向けプロセッサの市場は存在していた。

例えば、アメリカでのコンピュータ技術者1人を雇用するのにかかるコストは一年で25万ドルと言われている。これには、給料だけでなく、各種手当て、CADツール、コンピュータ、オフィススペースの賃貸料などが含まれる。100人の技術者でCPUを設計し、4年かかるとすると、総コストは1億ドルになる。これは単なる一例である。実際の設計チームは最近では数百人と言われている。

2004年現在、最新技術を使った汎用コンピューティング向けCPUを設計しているのは、4社だけになっているdate=2008年8月}}。モトローラは、金食い虫と化していた半導体部門をフリースケール・セミコンダクタとしてスピンオフさせた。他社からCPU設計を請け負っている企業として、GLOBALFOUNDRIES、テキサス・インスツルメンツ、TSMC、東芝がある。

4.2. 科学技術計算
-----------

金額的にも出荷台数的にも小さい科学技術計算市場は、研究機関や大学が顧客である。かつてはこの市場向けにCPU設計が盛んに行われていたが、より大きな市場向けに設計したCPUを流用した方が効率的であることから、専用CPUの設計はほとんどなされなくなった。ハードウェア設計や研究が続いている分野としては、高速なシステム間接続に関する分野がある。

4.3. 組み込み向け設計
-------------

出荷台数ベースで言えば、マイクロプロセッサのほとんどは各種機械に組み込まれている。いわゆるマイクロコントローラとかワンチップマイコンとも呼ばれる製品群である。汎用プロセッサよりずっと低価格だが、毎年数十億個が販売されている。

汎用プロセッサとの違いは、以下のような点である。

低価格が最重視される。
ファンを装備できない機器が多いため、低消費電力も重要である。
システム全体のコストを低減するため、チップ内に周辺機能を組み込む。
メモリもチップ内に組み込むことが多い。
割り込みレイテンシを小さく抑えることが重視される。
汎用プロセッサよりも長期間製造される。

4.3.1. ソフトプロセッサ
---------------

5. 注
----

6. 関連項目
-------

CPU
マイクロプロセッサ
マイクロアーキテクチャ
ムーアの法則
アムダールの法則
RISC
CISC

7. 参考文献
-------