CPU設計

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

CPU設計の記事では、コンピュータプロセッサの設計(デザイン)[1]について解説する。

概要[編集]

以下のような要素(一例)がある。

  1. 命令セットアーキテクチャ(ISA)の策定
  2. データパス設計(演算装置パイプラインなど。実行ユニットを、流れるデータの観点から見たものが「データパス」である)
  3. 制御装置の設計(データパスを制御する論理回路)
  4. レジスタの構成や命令との関係の設計
  5. メモリの構成(キャッシュ)やメモリインタフェース
  6. クロック周辺(クロックドライバ、PLL、クロック供給ネットワーク)
  7. パッドトランシーバ回路
  8. 論理ゲートセルのライブラリ(論理回路の実装に使う)

高性能だが高価格でよいプロセッサでは、動作周波数、消費電力、チップ面積の目標を達成するため、これら全てを独自に設計する必要が生じる場合もある。

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

  • 一部を、IP(知的財産のこと)と呼ばれる既存の設計を購入する形で入手する。
  • 制御用論理回路の実装技法(CADツールによる論理合成)を他の部分(データパス、レジスタファイル、クロックなど)の実装にも利用する。

いずれにせよ、適切な取捨選択を行い、必要な性能や仕様(「仕様」には性能外の要素も含まれる)、高い性能対価格比、等を達成した設計を、期日までに完了して製造・生産に向け送り出し、最終製品をそれが必要なタイミングでリリースさせること、が最終目標である。

ブロセッサの制御方式には以下がある(実際には綺麗に二分できるものではない)。

論理回路をハードウェアとして実装するには、以下のようなテクノロジがある。

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

一般に以下のような作業(一例)がある。

多くの複雑な論理回路の設計と同様、論理の検証(設計にバグが含まれていないことの証明)がスケジュール上、重要な位置を占めている。

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

目標[編集]

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

  • 単一のプログラムまたはスレッドの性能を強化する。
  • 複数プログラム/スレッドのスループット性能を強化する。
  • 同じ性能レベルをより低消費電力で達成する。
  • 同じ性能レベルをより低価格で達成する。
  • 接続性を強化し、より大規模な並列システムを構築できるようにする。
  • 特定市場をターゲットとして、より特化したものにする。

基本的な再設計を無しとしたまま、製造プロセスの更新と単にパターンを縮小(シュリンク)するのみで、これらの目標のいくつかを達成できる場合もある。

  • 全てを縮小すると(フォトマスクの縮小)、より小さいダイに同じ個数のトランジスタが実装されることになり、性能が向上し(トランジスタが小さいとスイッチ時間が速くなる)、電力消費が少なくなり(配線が小さくなると寄生容量が小さくなる)、コストが削減される(同じシリコンウェハで、より多くのチップを製造できる)。
  • 同じダイサイズで、プロセッサコアを縮小すると、製造コストはほぼ同じになるが、空いた面積に様々なものを集積でき(キャッシュ追加、複数プロセッサコアなど)、性能が向上し、システム全体のコストが削減できる。

性能分析とベンチマーク[編集]

初期のコンピュータの時代は、加算に何マイクロ秒、乗算に何マイクロ秒、除算に何マイクロ秒、といったように、1命令を発行してから完了するまでの時間を性能の目安としていた。しかし、オペコードやオペランドをメモリから読み書きする時間やその待ち時間なども考慮されるべきであることから、各命令を毎秒何回というようにして評価されるようになり、これはMIPS値に代表される「毎秒何回、何かを実行できる」というタイプの指標の発祥とも言える。続いて、実際のプログラムで実行されている命令の種別の比率に応じて、その速度が合計(ミックス)されるべきだという発想から、何々ミックスという名前の指標が生まれた。最も有名なものはギブソンミックスであろう。現代でも各種試験などで用語問題に出されることがあるようだが、1972年に石田晴久が D. H. Gibson に問い合わせた結果を紹介した記事「ギブソン・ミックスの起源について」[2]中に紹介されている提案者 Jack C. 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)とベンチマーク
    • LINPACKベンチマーク(1979年〜) - LINPACK自体は線型代数数値演算ライブラリで、近年はLAPACKなどに取って代わられているが、HPC分野の標準ベンチマークとして、近年は特にHPLinpack(HPL)が使われている
    • HPCG(en:HPCG benchmark) - 共役勾配法conjugate gradient method)の計算によるベンチマーク。ドンガラ曰く「HPLとHPCGはブックエンドの片方ともう片方」
    • Green500ではHPLの結果を消費電力で割って、効率の値として算出している
    • Graph500では、Traversed Edges Per Second(TEPS)という値を評価している
    • HPC分野についてはHPCチャレンジベンチマークの記事も参照
  • EEMBC (Embedded Microprocessor Benchmark Consortium、en:EEMBC) の ConsumerMark

他に、以下のような評価の観点(一例)がある。

  • 1秒当たりの命令実行数 - 多くの消費者は既存の多数あるソフトウェアをそのまま実行できるアーキテクチャを選ぶ傾向にある(通常、インテルIA-32アーキテクチャ)。また、そのような大多数の人々はベンチマークについて知識を持たず、クロック周波数でCPUを選ぶ傾向がある。
  • FLOPS - 1秒当たりの浮動小数点演算回数。科学技術計算で重視される。
  • 1ワット当たりの性能 - 並列コンピュータを構築する場合(例えば、Google)、消費電力のワット数当たりの性能値を重視する。これは、CPUに電力を供給するコストがCPU自体の価格を上回るためである。[1]
  • また、並列コンピュータ構築に当たって、価格性能比を重視する場合もある。
  • リアルタイムシステムでは、最悪ケースの応答時間の保証が重要である。これはつまり、CPUの割り込みレイテンシが小さく、かつ予測可能であればよい(DSPなど)。
  • アセンブリ言語でプログラムを書く場合、命令セットが重視される。
  • 携帯機器など消費電力を低く抑える必要がある場合は、性能よりも消費電力が重視される。
  • 携帯機器や宇宙船のシステムでは、大きさや重さが重要となる。
  • 近年、環境への影響が小さいこと(製造時、使用時、廃棄時)が重視されつつある(グリーンコンピューティング)。

これらの一部は共存できない。特にとにかく高速に動作することを目標として設計したCPUでは、「1ワット当たりの性能」や「1円当たりの性能」や「応答時間の保証」などは良くない(逆も同様)。

市場[編集]

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

汎用コンピューティング[編集]

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

ハイエンドプロセッサの経済[編集]

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

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

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

科学技術計算[編集]

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

組み込み向け設計[編集]

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

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

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

ソフトプロセッサ[編集]

[編集]

  1. ^ 参: 英語版Wikipediaの対応する記事の記事名はProcessor designとなっている。
  2. ^ http://id.nii.ac.jp/1001/00008214/
  3. ^ http://catb.org/~esr/jargon/html/B/benchmark.html

関連項目[編集]

参考文献[編集]