コンピュータ・アーキテクチャ

コンピュータ・アーキテクチャの最新ニュースをまとめて検索!

コンピュータ・アーキテクチャ: Computer architecture)は、コンピュータ(特にハードウェア)における基本設計や設計思想などの基本設計概念を意味する。建築の英訳であるアーキテクチャ(アーキテクチュア)が建築分野における設計や様式を指すことから転じて、コンピュータ分野においても使われるようになった。「設計思想」などと訳される。

当初の意味(狭義)では、互換性確保のためのマンマシンインターフェースの厳密な定義であり、具体的にはユーザー(プログラマ)が使用できる(使用して良い)レジスタの構成や命令セットなどである。アーキテクチャが同一のコンピュータ間や、スーパーセット(上位互換)のアーキテクチャを持つコンピュータへの移行は、ソフトウェアの互換性が原則として保障される。またハードウェアの内部設計や実装は、定義されたアーキテクチャを守る限り、技術の進歩に応じて自由に更新できる。この結果、コンピュータ・ファミリー(シリーズ)が形成可能となる。現在で言えばレイヤー定義であり仮想化の1種でもある。

しかし現在(広義)では、特定のコンピュータの単なる「設計方針」や、更には実装例までも「アーキテクチャ」と呼ばれる場合が多い(例えば、CPUの実装に採用した半導体技術や、搭載したキャッシュ容量など)。また単なる「設計思想」という意味で、システムアーキテクチャエンタープライズアーキテクチャソフトウェアアーキテクチャなどの用語も増えている。

目次

[編集] 分類

コンピュータアーキテクチャは少なくとも次の3つに分類される[1]

命令セットアーキテクチャ(ISA)
機械語(またはアセンブリ言語プログラマ)から見たコンピュータシステムの抽象化されたイメージであり、命令セットアドレッシングモードレジスタ、アドレスとデータの形式などが含まれる。すなわち、CPUをソフトウェア側から見たときのインタフェース定義である。
マイクロアーキテクチャ
さらに下位レベルでのより具体的なシステムに関する記述であり、ISAを実装するためにシステムの構成部品をどのように接続し、それらがどのように相互にやりとりするかを示す[2]。例えば、コンピュータのキャッシュの大きさは、ISAには通常何の関係もないが、その下位レベルの実装においては重要な問題である。
システム設計(システムアーキテクチャ)
上記以外のコンピュータシステムのハードウェア全般に関するもの。以下のようなものが含まれる。
  1. バスクロスバースイッチなどのシステムのインターコネクト
  2. メモリコントローラやメモリ階層
  3. Direct Memory Access などのCPUオフロード機構
  4. マルチプロセッシングに関わる部分
  5. 複数のコンピュータによるシステム構成に関するもの(コンピュータ・クラスターNUMAアーキテクチャなど)

[編集] アーキテクチャと実装

ISAとマイクロアーキテクチャが決定されると、実際のハードウェアが設計される。この設計工程を一般に「実装; implementation」と呼ぶ。実装はアーキテクチャ定義には通常含まれず、ハードウェア設計に含まれる。

実装はさらに以下の3段階に分けられる。

  • 論理実装/設計 - マイクロアーキテクチャで定義されたブロックを論理式あるいは論理ゲートレベルの回路で表す。
  • 回路実装/設計 - マイクロアーキテクチャ上のブロック(あるいはそれと等価な論理式)やその論理回路をトランジスタレベルのデジタル回路で表す。
  • 物理実装/設計 - 回路図に従い、チップ上の部品配置や基板上の部品配置、基板間の接続ルートなどを設計する。

CPUの場合、この実装工程全般をCPU設計と呼ぶ。

[編集] 設計上の観点

コンピュータの設計においては、制約条件と目標を考慮して、どの部分を最適化するかを決定する。コンピュータアーキテクチャは一般に、標準規格、コスト、メモリ容量、レイテンシスループットなどのトレードオフで決まる。場合によっては、機能、大きさ、重さ、信頼性、拡張性、電力消費量といった要素も考慮される。

典型的な手法としては、どのボトルネックが最も性能を悪化させるかを注意深く見極める。理想的には、コンピュータの各部の性能向上とそれにかかるコストが比例すると考えられ、コストのかかる部品が全体の性能を決定すると考えられる。

[編集] コスト

一般に、システム要件や市場の状況によって設計前に製造コストが決定される。

[編集] 性能

コンピュータの性能は、クロック周波数(MHz や GHz)でよく表される。これはCPUのクロックが一秒間に何サイクルであるかを示したものである。しかし、クロック周波数の高いマシンが必ずしも性能が高いとは言えない。近年ではクロックの高速化は頭打ちになりつつあり、製造業者は別の指標で性能を示すようになりつつある。プロセッサが搭載するキャッシュ容量で性能を示すという手法もある。クロック周波数が自動車の最高速度だとすれば、キャッシュ容量は車線の数に対応する。自動車がどんなに速くても、渋滞になれば速く走ることはできない。CPUが高速動作でき、キャッシュが多ければ、プロセッサは実際に高速に動作できる。

最近のCPUはスーパースケーラ方式で1クロックサイクルで複数の命令を実行できる。これにより、プログラム実行性能は大幅に改善された。他にも性能に影響する要素として、実行ユニットとしてどういうものを何個持つか、バスの速度、利用可能なメモリ容量、プログラムとして実行しようとする命令の種類と順序などがある。

速度を考える際に、レイテンシスループットが重要である。レイテンシとは、ある処理が開始してから完了するまでの時間である。スループットは単位時間当たりに処理できる仕事の量である。割り込みレイテンシとは、ハードウェアのイベント(例えば、ディスクドライブの読み書きの完了)通知(割り込み)に対して、システムが応答するのにかかる時間である。性能は設計上の様々な選択によって影響される。例えば、キャッシュメモリを追加するとレイテンシは悪化するが、スループットは向上する。制御用のコンピュータでは、割り込みレイテンシの短縮が求められる。そのようなコンピュータはリアルタイム環境で運用され、所定の時間以内に処理が行われないと問題が発生する。例えばコンピュータ制御のアンチロックブレーキは、ブレーキが踏まれたら即座に制動をかけ始めなければならない。

コンピュータの性能は他の測定法によっても測定でき、用途によって様々な測定法がある。システムは用途によってボトルネックとなる部分が異なり、CPUバウンド(例えば数値計算など)、I/Oバウンド(Webサーバなど)、メモリバウンド(ビデオ編集など)に分けられる。サーバや携帯機器では電力消費量も重要な観点である。

ベンチマークは、一連の評価プログラムを実行し、それにかかる時間を計ることで、上述のあらゆる観点を考慮した性能を測定するものである。しかし、ベンチマークが役に立たない場合もある。ベンチマークが異なれば、示される性能も異なる。例えば、あるアプリケーションは高速に実行できても、別のアプリケーションでは遅いかもしれない。さらに、システム設計段階で、特定のベンチマークの結果向上のためにハードウェアやソフトウェアにそのベンチマークだけを高速化できる機能を加えることもある。この機能はそのベンチマークと類似のアプリケーションでは役に立たないことが多い。

[編集] 電力消費

電力消費は、最近のコンピュータ設計では重要性を増してきている。電力消費を抑えると、性能が低下したり、コストが増大したりすることが多い。チップの単位面積当たりのトランジスタ数が増大するにしたがって、電力効率が重要な観点となってきた。Intel Core 2 などの最近のプロセッサでは、電力効率の向上が重要な設計上の観点とされた。また、組み込み用プロセッサでは電力効率が性能と共に最重要観点となっている。

[編集] 歴史的観点

コンピュータ関連での「アーキテクチャ」という用語の使用は、1959年、IBMの研究所に所属していた Lyle R. Johnson とフレデリック・ブルックスまで遡る。Johnson は IBM 7030ロスアラモス研究所向けにIBMが開発したスーパーコンピュータ)について、研究報告を書いた。彼は、コンピュータについて詳細を省いてある水準の記述をしたものを、それまで使われていた「マシン構成; machine organization」ではなく「システムアーキテクチャ; system architecture」と称した。その後、IBM 7030 の設計者の1人である ブルックスが、ある本(Planning a Computer System: Project Stretch、1962年)の第二章で、「コンピュータアーキテクチャは他のアーキテクチャと同様、構造の利用者のニーズを決定する技法であり、それらニーズに合った経済的にも技術的にも可能な限り最適な設計を行うことである」と書いている。ブルックスは System/360 の開発でも大きな役割を果たし、そこで「アーキテクチャ」という用語は「ユーザーが知る必要のある詳細」という定義になっていった。その後、コンピュータ業界で「アーキテクチャ」という用語が様々に使われるようになった。

査読済みのコンピュータ関連の論文で初めて「アーキテクチャ」という用語が使われたのは、1964年の IBM System/360 に関するものであった[3]。この論文ではアーキテクチャを「プログラマから見えるシステムの属性群。すなわち、概念的構造と機能的挙動であり、データフローや制御の構成、論理設計や物理的実装とは異なる」と定義した。この定義において、「プログラマ」から見たコンピュータの機能的挙動が鍵となっている。アーキテクチャに含まれる概念的構造は機能的挙動を理解するための補助的なものであり、ユースケースの範囲を拡大可能にする。CPU内部の処理方法やメモリアクセス方法(マイクロアーキテクチャ)がコンピュータアーキテクチャとされるようになったのは、もっと後のことである。

[編集] コンピュータの種類

アナログコンピュータワイヤードロジック、プログラム内蔵方式(ノイマン型を含む)コンピュータ、ニューロコンピュータ、ファジィコンピュータ(ファジィ制御)、量子コンピュータなど。コンピュータの項を参照。

[編集] 各部分要素のアーキテクチャ

[編集] 関連項目

[編集] 脚注

  1. ^ John L. Hennessy and David A. Patterson (2003年). Computer Architecture: A Quantitative Approach, Third Edition, Morgan Kaufmann Publishers, Inc. ISBN 1558605967. 
  2. ^ Phillip A. Laplante (2001年). Dictionary of Computer Science, Engineering, and Technology. CRC Press, 94–95. ISBN 0849326915. 
  3. ^ G. M. Amdahl, G. A. Blaauw and F. P. Brooks Jr., Architecture of the IBM System/360, IBM Journal for Research and Development, April 1964

[編集] 参考文献

[編集] 外部リンク

最終更新 2009年8月17日 (月) 12:08 (日時は個人設定で未設定ならばUTC)。
【コンピュータ・アーキテクチャ】変更履歴

ご利用上の注意