コンピュータ・アーキテクチャ
[Wikipedia|▼Menu]
最初、1944年ジョン・モークリージョン・プレスパー・エッカートEDVACのためにつくったアーキテクチャであり、後からチームに合流したフォン・ノイマンがそれを自分の名で報告書にまとめたのでフォン・ノイマンの名で呼ばれている。

なおフォン・ノイマン型アーキテクチャだと、CPUのクロック周波数が高くなり命令フェッチや命令実行が速くなると、CPUとメモリ間のデータの移動の頻度が高くなり、命令とデータで「アクセス競合」が起き、メモリから命令やデータが到着するのを待つ状態が増え、動作が遅くなってしまう「フォン・ノイマン・ボトルネック」と呼ばれる現象が発生する。ハーバード・アーキテクチャ
ハーバード・アーキテクチャ

ハーバード・アーキテクチャ(Harvard Architecture)は、命令メモリとデータメモリを分離し別々に置くアーキテクチャ。メモリでの命令とデータのアクセス競合は発生せず、フォン・ノイマン・ボトルネックが解消する。ただしデータを命令として実行することはできず、動作中に命令を書き換えることもできない。1944年にIBMがハーバード大学に納入したHarvard Mark Iで最初に採用されたアーキテクチャである。
修正ハーバード・アーキテクチャ(en:Modified Harvard Architecture)

ハーバード・アーキテクチャを一部修正したアーキテクチャで、基本的には命令とデータを別に置いていてボトルネックが解消しており、なおかつ命令用メモリからデータ用メモリへの移動や、データ用メモリから命令用メモリへの移動も可能な方式。ハーバード・アーキテクチャを一部、修正・改良したので「修正ハーバード・アーキテクチャ」という。マイクロコントローラで主流のアーキテクチャで、基本的には命令用のフラッシュメモリとデータ用のRAMを区別しているが、命令用フラッシュメモリからデータ用のRAMにロードできたり、RAMに置いた命令を取り出しフラッシュメモリに移動し実行することもできる。現在、マイクロコントローラ以外の多くのコンピュータもこの方式を採用している。
アキュムレータ方式と汎用レジスタ方式

CPUのレジスタと演算装置(ALU)の関係性に関するアーキテクチャとしては、典型的なものとしては、アキュムレータ方式と汎用レジスタ方式がある。1970年代や1980年代のCPUや現在のマイクロコントローラの一部はアキュムレータ方式を採用しているが、これは少数派であり、現在のパーソナルコンピュータスマートフォンなどのCPUは基本的に汎用レジスタ方式であり、こちらが現在の主流派である。
アキュムレータ方式
アキュムレータ

演算装置で演算した結果を、必ず「アキュムレータ(accumulator、集積装置)」と呼ばれる特別な位置づけのレジスタに送り込む方式。そしてアキュムレータの値は、次の演算でオペランド被演算子)として使われる。1970年代や80年代など、CPUに入れられるトランジスタの数がまだかなり限られていた時代に、CPUを簡素な構造にしてトランジスタ数を減らすために考案された方式。CPU内部では数を次々と足して総和を求める作業は頻繁に行われているが、アキュムレータ方式だと、オペランドの片方だけを次々と指定しては演算器で加算してゆくだけで総和を求めることができる。たとえばIntel 8080の「Aレジスタ」はアキュムレータである[10]
現在では、1970年代や80年代のようにCPUに収容できるトランジスタ数が限られることは無いが、現在でもマイクロコントローラの一部ではあえてアキュムレータ方式を採用してさらに(上の節で説明した、命令用メモリとデータ用メモリを別に置く)ハーバード・アーキテクチャと組み合わせることで、簡素でコストを抑えていながら高性能のマイクロコントローラを提供しているメーカーもある[11]
汎用レジスタ方式

(上で説明したアキュムレータという特別な扱いのレジスタは置かず)複数のレジスタの中から2つのレジスタを指定して、その2つの値をオペランドとして演算が可能な方式。汎用レジスタ方式だと、オペランドの組み合わせの自由度が高く、高速演算が可能になる。また、マイクロコントローラのプログラミングの際にはCコンパイラのIDE(統合開発環境)との親和性も高く、たとえばプログラムのローカル変数をマイクロコントローラの複数のレジスタに割り当てることができる。(アキュムレータ方式では割り当てられずRAMなどのメモリに割り当てなければならないのに比べて有利。)[11] 現在の技術ではCPUにトランジスタを大量に詰め込むことも容易なので、通常はこの汎用レジスタ方式を採用する。

[注釈 3]
コンピュータ全体のアーキテクチャ

プロセッサだけではなく、コンピュータシステム全体の設計とアーキテクチャについて述べる。

コンピュータの設計をする際は、まず用途や制約条件を考慮し、要素の優先順位を決定する。コンピュータ・アーキテクチャは一般に、標準規格、機能、メモリ容量、レイテンシスループット消費電力、生産コストや生産性などを考慮して決められるが、また信頼性拡張性、大きさ、重さといった要素も考慮される。それらの要素のいくつかは互いにトレードオフの関係にあり、何かを優先すると何かが犠牲になる。少数の要素を最高の状態にすることを重要視して他の要素を大きく犠牲にすることもいとわない設計法と、多くの要素をほどほどの状態に保つ設計法がある。古典的な手法としては、データの処理能力を上げることを最優先し、何がボトルネックとなり最もデータ処理能力を悪化させているかを見極め、そのボトルネックを解消するというものがあった。近年のモバイルコンピュータでは、消費電力を抑えることを優先し、何が電力を消費し電力効率を下げているのか見極め、それを取り除く工夫を重ねる。

現実のコンピュータの設計には、純粋に技術的な観点だけでなく、当該開発プロジェクトのマネージャーの個人的意向や志向も影響し、またコンピュータの開発というのは企業でビジネス(商業活動)の一部として行われているので、コンピュータ市場にすでに存在している他社のコンピュータとの競合関係や棲み分けやポジショニングといった、経営者が判断するマーケティング戦略的なことも、影響を及ぼず。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:69 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef