そのプログラム、ちょっと貸してくれ!【プログラム内蔵方式】

CPUの要求


プログラムをあらかじめメモリに展開しておき、必要に応じて処理していく。この設計思想は2020年代初頭において実用化されているほぼすべてのコンピュータに適用されているものです。

この記事ではプログラム内蔵方式について解説していきます。日常での事柄にたとえられる程度にシンプルですから、構えずに読み進めていただけることでしょう。

プログラム内蔵方式とは?


プログラム内蔵方式とは、あらかじめプログラムをメモリ内に展開しCPUのアクセスに応じてプログラムを実行する方式のことです。コンピュータ発祥から今日まで駆動するほぼすべてのコンピュータがこの方式をもとにして動いています。

そして、この方式は別名「ノイマン型アーキテクチャ」とも呼ばれます。これはENIAC(「エニアック」と読みます。こちらについては後述)の開発プロジェクトに加わっていたアメリカの数学者フォン・ノイマンの名前から付けられたものです。

プログラム内蔵方式のよくあるたとえ


プログラム内蔵方式については、しばしばメモリに、プログラム筆記用具に置き換えてたとえられます。

みなさんは何かノートを取る際にいちいち机の上を片付けることが億劫になったことはありませんか?

わたしは常にそう思っています。少しでも効率よく作業を始めるにはどうしたらいいのか。これを意識することが重要なのです。

そして、今日の作業を終えて翌日も作業するとしましょう。このとき机の上を片付けずにおいておけば、改めて準備しなおすことはありませんよね。これで次もスムーズに作業を始めやすくなるわけです。

作業領域
ただし、散らかし過ぎは禁物です!
机の上が整理されていることが前提です。


これはそのままプログラム内蔵方式にもあてはまります。あらかじめメモリ上にプログラムとデータを展開しておけば、CPUはスムーズに処理を行うことができるからです。

【独自図解】プログラム内蔵方式


先のたとえはポピュラーなものでとても分かりやすいものです。わたしも自分なりのたとえを思い付いたので図解にしてみました。下図がそのイメージです。

1枚でよくわかるプログラム内蔵方式
図:1枚でよくわかる(?)プログラム内蔵方式


メモリ上のプログラムを必要に応じてちょいちょいアクセスする、ちょうどこれはCPUがメモリにプログラムを借りにいく様子を想像してしまいます。個人的な見解が多分に含まれているかもしれませんが、こうした試みも新しい視点を増やすためには大切でしょう。

プログラム内蔵方式のルーツ


1940年代に開発された世界初のコンピュータとされるENIAC(エニアック)ですが、実はプログラム内蔵方式ではありません(諸説あり)。当時のメモリは容量がきわめて貧弱かつ故障がちで、プログラムを内蔵するだけのスペックはありませんでした。

これをどのように運用していたかというと、パンチカードという紙に穴をあけてプログラムを組み、それをもとに配線を組み込んでプログラムを取り込んでいたのです。

これではプログラムを効率的に実行できませんし、そもそもプログラミングにも膨大な時間が必要となります。そこでより効率的な方法が求められたわけで、この問題を解決したのがプログラム内蔵方式ということになります。

ENIAC
図:ENIACのプログラミングの様子

United States Army – Image from [1], パブリック・ドメイン, https://commons.wikimedia.org/w/index.php?curid=978783による


コンピュータを発明したのは誰か?


プログラム内蔵方式は別名「ノイマン型アーキテクチャ」とも呼ばれますが、名称の由来となったフォン・ノイマンが考案したわけではありません。プロジェクトの中心人物のエッカートモークリによる功績が大きいとされています。

この辺りの関係はとても複雑で「コンピュータを発明したのは誰か?」については裁判にまで至るも、ついに結論が出ることはありませんでした。

ともあれ、プログラム内蔵方式の考え方は後発のEDSAC(エディサック)に反映され、それが次の世代のコンピュータへとつながっていくわけです。

余談:コンピュータの「発明者」についての個人的な見解


プログラム内蔵方式についての説明は以上しますが「コンピュータを発明したのは結局誰なの?」という疑問を少しでも明らかにしたいので、ここで個人的な見解を述べさせていただきます。わたしが勝手に考えた拙論に過ぎませんが、どうか最後までお付き合いいただければ幸いです。

実は、世界初のコンピュータはENIAC以前から存在していたともいえます。イギリスの数学者チャールズ・バベッジが考案した解析機関というものがあるからです。この解析機関は蒸気機関駆動するとされコンピュータの5つの機能を持ち合わせています。

しかし、解析機関が考案されたのは19世紀の中頃で技術的に困難が多く、資金上の都合もありバベッジの存命中に実現されることはありませんでした。


さらにさかのぼること古代ギリシア時代、なんと、この頃にはすでにコンピュータがあったといえるのです!

これはアンティキティラ島の機械と呼ばれるものです。こちらは20世紀の初めに沈没船から引き揚げられた際に発見されました。構造そのものは精巧な歯車によるアナログ的なもので、天体運行の計算に用いられていたとされています。


………と、ここまでくるとオカルトの領域に突入してしまいますから、この辺りで収拾をつけなければいけませんね(苦笑)。



結局のところコンピュータの起源そのものは判然としません。それでも、ひとつ確かなことがあります。

古来から何人もの天才の知恵の集積によってコンピュータは作り上げられた


つまり、コンピュータの発明者はいないことになります。誤解のないように表現するならコンピュータの発明者を決めることはできないということです。

発明者はいないかもしれませんが「開発者」なら何人もいるといえます。こうして現代に至るまで知恵と技術のバトンが渡されているわけです。





それでは、今回はここまでといたします。
最後までお読みいただきありがとうございます。





【参考リンク】
Wikipedia「解析機関」
Wikipedia「アンティキティラ島の機械」


CPUの要求
最新情報をチェックしよう!