CPU設計の記事では、コンピュータのプロセッサの設計(デザイン)[1]について解説する。目次 以下のような要素(一例)がある。 高性能だが高価格でよいプロセッサでは、動作周波数、消費電力、チップ面積の目標を達成するため、これら全てを独自に設計する必要が生じる場合もある。 低価格を求められるプロセッサでは、以下のようにして実装負担を減らす場合がある。 いずれにせよ、適切な取捨選択を行い、必要な性能や仕様(「仕様」には性能外の要素も含まれる)、高い性能対価格比、等を達成した設計を、期日までに完了して製造・生産に向け送り出し、最終製品をそれが必要なタイミングでリリースさせること、が最終目標である。 ブロセッサの制御方式には以下がある(実際には綺麗に二分できるものではない)。 論理回路をハードウェアとして実装するには、以下のようなテクノロジがある。 一般に以下のような作業(一例)がある。
1 概要
2 目標
3 性能分析とベンチマーク
4 市場
4.1 汎用コンピューティング
4.1.1 ハイエンドプロセッサの経済
4.2 科学技術計算
4.3 組み込み向け設計
4.3.1 ソフトプロセッサ
5 注
6 関連項目
7 参考文献
概要
命令セットアーキテクチャ(ISA)の策定
データパス設計(演算装置とパイプラインなど。実行ユニットを、流れるデータの観点から見たものが「データパス」である)
制御装置の設計(データパスを制御する論理回路)
レジスタの構成や命令との関係の設計
メモリの構成(キャッシュ)やメモリインタフェース
クロック周辺(クロックドライバ、PLL、クロック供給ネットワーク)
パッドトランシーバ回路
論理ゲートセルのライブラリ(論理回路の実装に使う)
一部を、IP(知的財産のこと)と呼ばれる既存の設計を購入する形で入手する。
制御用論理回路の実装技法(CADツールによる論理合成)を他の部分(データパス、レジスタファイル、クロックなど)の実装にも利用する。
マイクロプログラム方式
ワイヤードロジック方式
ディスクリート、回路モジュール - 初期(1960年代前半頃迄)のコンピュータは独立した部品か、小さな基板にせいぜい数十程度の部品を集積・モジュール化したもので作られていた
汎用ロジックIC
TTL
ECL
CMOS
LSI - 専用に設計を起こしたもの。マイクロプロセッサ以降ではこれが一般的
TTL, ECL - TTLやECLによるLSIもあった
CMOS - 最近では最も一般的
ASIC - ASICという語は専用設計のLSIを指す総称であるが、マイクロプロセッサ用のチップセットとして周辺機能を集積したものなども多い。それ自身にプロセッサコアを内蔵しているASICもある(システムLSIやSoCなどと言った語もある)
プログラマブルロジックデバイス - ASICとは対象的に、任意のロジックをユーザがプログラムできるLSI。こちらは、プロトタイピングや、ASICを設計するほどの数が出ない製品や、ソフトプロセッサの実装に使われる
コンピュータ・アーキテクチャの設計、あるいは選択
プログラマから見える命令セットアーキテクチャの設計。これについては既存のものからの選択が「設計」であることもある
「命令セットアーキテクチャ」に対して、プログラマには直接は見えない、内部実装のことをマイクロアーキテクチャと言う。これも大枠については「選択」であることもある
アーキテクチャ研究と性能モデリング
RTL設計と検証
性能上重要な部分の回路設計(キャッシュ、レジスタ、ALU)
論理合成または論理ゲートレベルの設計
タイミング分析(各部分が指定した周波数で動作することの確認)
論理ゲートの配置と配線などの物理設計
RTL、ゲートレベル、トランジスタレベル、物理レベル、それぞれの等価性を検証
デザインルールチェックとシグナルインテグリティ
多くの複雑な論理回路の設計と同様、論理の検証(設計にバグが含まれていないことの証明)がスケジュール上、重要な位置を占めている。
歴史上、アーキテクチャに関する重要な概念や用語をざっくばらんに挙げると、キャッシュメモリ、仮想記憶、パイプライン、スーパースケーラ、CISC、RISC、仮想機械、エミュレータ、マイクロプログラム方式、スタックなどがある。 設計の際に目標とするものとしては、以下のようなものがある。 基本的な再設計を無しとしたまま、製造プロセスの更新と単にパターンを縮小(シュリンク)するのみで、これらの目標のいくつかを達成できる場合もある。 初期のコンピュータの時代は、加算に何マイクロ秒、乗算に何マイクロ秒、除算に何マイクロ秒、といったように、1命令を発行してから完了するまでの時間を性能の目安としていた。しかし、オペコードやオペランドをメモリから読み書きする時間やその待ち時間なども考慮されるべきであることから、各命令を毎秒何回というようにして評価されるようになり、これはMIPS値に代表される「毎秒何回、何かを実行できる」というタイプの指標の発祥とも言える。続いて、実際のプログラムで実行されている命令の種別の比率に応じて、その速度が合計(ミックス)されるべきだという発想から、何々ミックスという名前の指標が生まれた。最も有名なものはギブソンミックスであろう。現代でも各種試験などで用語問題に出されることがあるようだが、1972年に石田晴久が D. H. Gibson に問い合わせた結果を紹介した記事「ギブソン・ミックスの起源について」[2]中に紹介されている提案者 Jack Clark Gibson の言に「今日,どういう理由か分らないが,すでに時代遅れと思われるこの方法」とある通り、1972年の時点で既に「時代遅れ」であった概念である。そして結局、何らかのプログラムを走らせて測定するのが最も良い指標なのではないかということで、ベンチマークプログラムを利用した計測が行われるようになった。 箴言として「信頼できるベンチマークが欲しいなら、あなたが実際に使いたいアプリケーションソフトウェアそのものを実行することだ」などと言われたり、ジャーゴンファイルのbenchmarkの項[3]には“In the computer industry, there are three kinds of lies: lies, damn lies, and benchmarks.”などとあったりするように、各種のベンチマークプログラムは絶対的にあてにできるものではない。しかし、定量的な比較のためにはベンチマークプログラムしか方法がないのも確かであり、より良い(何を良いとするかという観点は主観的だが)あるいは、各種の目的に応じたベンチマークが提案されている。 以下にだいたい時代順で、主要なベンチマークの名前を挙げ、一部は解説を付ける。詳細は記事のあるものは各記事を参照のこと。
目標
単一のプログラムまたはスレッドの性能を強化する。
複数プログラム/スレッドのスループット性能を強化する。
同じ性能レベルをより低消費電力で達成する。
同じ性能レベルをより低価格で達成する。
接続性を強化し、より大規模な並列システムを構築できるようにする。
特定市場をターゲットとして、より特化したものにする。
全てを縮小すると(フォトマスクの縮小)、より小さいダイに同じ個数のトランジスタが実装されることになり、性能が向上し(トランジスタが小さいとスイッチ時間が速くなる)、電力消費が少なくなり(配線が小さくなると寄生容量が小さくなる)、コストが削減される(同じシリコンウェハで、より多くのチップを製造できる)。
同じダイサイズで、プロセッサコアを縮小すると、製造コストはほぼ同じになるが、空いた面積に様々なものを集積でき(キャッシュ追加、複数プロセッサコアなど)、性能が向上し、システム全体のコストが削減できる。
性能分析とベンチマーク
Whetstone(ウェットストーン、1972年) - 主に浮動小数点数計算を評価する。「湿った石」(wet stone)ではなく地名に由来する
Dhrystone(ドライストーン、1984年) - 主に整数計算や文字列処理を評価する。ウェットストーンに対して「乾いた石」というダジャレだが、綴りに「h」が入るヒネりはウェットストーンの綴りから持ってきたもの。ベストセラーのミニコンピュータ VAX 11/780(通称「MIPS原器」)におけるこのベンチマークの値を基準とした、いわゆるVAX MIPS(DMIPS)は現代でもしばしば見る
SPECシリーズ(1988年?)
高性能計算(HPC)とベンチマーク
HPLとHPCG(HPLもHPCGも、倍精度浮動小数点演算を多用し、行列の乗算により大規模な連立一次方程式を解くコードによるものであり、計算科学(科学・技術・工学の各分野で必要な大規模計算)向けの良いベンチマークとなっている。