next up previous contents index
Next: データ処理部 Up: プログラム Previous: 機械語の命令セットと命令の実行   Contents   Index

蓄積プログラム方式

これらの命令の実行手順を見ると, シークエンス回路の議論を思い起こすかもしれない。 実際,制御ユニットの中心部分はまさにシークエンス回路なのである。

今まで,データと命令は同じメモリー上に置かれていると,気楽に記述してきたが, 黎明期のコンピュータでは,データ(data)はメモリー上に置かれたが, コンピュータに行わせる作業手順はすべてシークエンス回路として, 回路の構造に組み込まれていた。 これらの命令(instruction)を, 書換え可能なメモリー上に置こうというのは一つの大発明であった。 さらにこの際,命令もデータも同じメモリー上に混載されるようになった。 これが蓄積プログラム方式(stored program concept)という概念である 8.2

蓄積プログラム方式では, 命令もデータも同じ外部メモリー上の連続した領域に記憶されるが, 一番最初に実行される命令だけはメモリーの特定の位置に置かれている必要がある。 その他の命令やデータはメモリー上の比較的自由な場所に置くことが可能である。 次の命令がメモリー上,離れたところにある場合には,ジャンプ命令を使う。 また,メモリー上の任意の場所にあるデータを操作(ロード,ストア)する命令が用意されている。 こうした機能を利用して,命令とデータの混載が可能となったのである。

この機能は命令群のフレキシビリティを高めただけでなく, 高級言語の出現という驚くべき効果も産み, 利用者にやさしいプログラム環境へと繋がり, 現在のコンピュータの繁栄を生み出したのである。

高級言語とは,人間にとって読みやすいテキストで書かれた命令書である。 このテキストはコンパイラにとっては,テキストデータである。 コンパイラは,図 8.5に示すように, テキストデータを翻訳して,機械語である2進データとして出力するのである。 そして,その先頭アドレスにジャンプすることにより, 応用プログラムを実行することができるようになったのである。 まさに,あるときはデータとして扱い, あるときには命令として扱うという器用な手法が確立したのである。

Figure 8.5: 蓄積プログラム方式により,高水準プログラムを実行する概念図 (コンパイラの出力データだった機械語にジャンプし, それらを命令として実行する。)
\begin{figure}\centering
%
\unitlength 1pt
\begin{picture}(70,146)
\put(0,0){\s...
...\makebox(0,0)[b]{{\footnotesize\mc 無条件ジャンプ}}}
\end{picture}
\end{figure}


next up previous contents index
Next: データ処理部 Up: プログラム Previous: 機械語の命令セットと命令の実行   Contents   Index
Yoichi OKABE 2008-03-29