コンピューターの仕組み
3
.
コンピューターには様々な実現方式がある。
コンピューターの黎明期から現在に至るまで、「フォンノイマン型」と呼ばれている構成が主流となっている。私たちが普段目にするコンピューターは、スマートフォンを含めて「フォンノイマン型」である。
フォンノイマン型のコンピューターは、以下の5つの要素で構成されており、それぞれが協調動作することによって、処理を実現している。
・入力装置
・出力装置
・制御装置
・演算装置
・記憶装置(主記憶装置と補助記憶装置)
入力装置は、キーボード、マウス、スマートフォンの画面等になる。ユーザーは入力装置を通してコンピューターに指示を与える。
出力装置は、ディスプレイ、プリンタ、スマートフォンの画面等になる。コンピューターによって処理された結果が表示されたり、コンピューターの状態を把握したりすることに利用する。
制御装置と演算装置はCPU(中央演算装置)を構成しており、コンピューターの心臓部となっている。
制御装置から各々の装置へ指令が出されて、データが演算装置に集められて処理される。CPUの性能が、コンピューター全体の性能に大きく影響する。GPUは画像処理専用の演算装置であり、画像処理を多用する近年のコンピューターでは不可欠な部品となっている。AIの処理に利用されることもある。
記憶装置は、主記憶装置と補助記憶装置に分けられる。
主記憶装置は高速で容量が小さく、補助記憶装置は低速で容量が大きいというのが特徴である。
補助記憶装置に格納されているプログラムとデータが主記憶装置に読みだされることで、必要な処理が行われる。主記憶装置は実行中のプログラムとデータの保存場所として使われる。
また、処理した結果を永続的にコンピューターに保存したい場合は、主記憶装置から補助記憶装置に対して書き込みを行う。主記憶装置は、電源が入っている間のみプログラムとデータを保持可能となっているが、補助記憶装置は電源が入っていないときでもデータを保持可能である。
補助記憶装置から主記憶装置への読み込み、主記憶装置から補助記憶装置への書き込みが遅い場合、コンピューター全体の性能ボトルネックになってしまう可能性がある。そのため、性能を追求したい場合は補助記憶装置にはSSD等の高速な記憶媒体を使用するのが適切である。
一方、画像や動画など、大容量のデータを保存したい場合は、ハードディスクを使うことがある。SSDは高く、ハードディスクは安いため、使用条件を考えて選択する必要がある。もちろん、両方搭載しているコンピューターも存在する。
システムの機能を実現する際は、ハードウェア(装置)で実現する方法とソフトウェア(プログラム)で実現する方法の、大きく2通りが存在する。
一般的には、“ハードウェア”と呼ばれる装置に比べてソフトウェア(プログラム)は柔軟性があり、書き換えが可能である。そのため、ソフトウェア(プログラム)を用いて機能を実現することが多い。ハードウェアは基本的に機能の書き換えができない。
1つのコンピューターは「ハードウェア<->OS<->アプリケーション」という構造になっている。OSとアプリケーションのことをまとめて“ソフトウェア(プログラム)”と呼ぶ。人間やアプリケーションはOSを通じて、ハードウェアを操作することになる。
代表的なOSとしては、Windows・Linux・Android・iOSがある。OSは、モニターに文字を表示したり、キーボードやマイクからの入力を受け付けたり、様々な基本処理を担う。アプリケーションは、OSを前提として動作する、目的特化型のプログラムのことである。
アプリケーションからハードウェアは直接見えないようになっており、OSがあることにより、ハードウェアが異なっていても、アプリケーションに対して同じ動作が基本的に担保されている。したがって、アプリケーションの開発者はOSだけを意識して開発すればよい。
OSとアプリケーションは補助記憶装置に格納されており、主記憶装置に読みだされることで処理を行う。
アプリケーションのユーザーからの指示は「アプリケーション->OS->ハードウェア」の流れで変換されて伝わっていき、最終的に目的のハードウェアが処理を行う。そして、ハードウェアの処理結果が「ハードウェア->OS->アプリケーション」の逆の流れで変換されて伝わり、ユーザーの目に見える形になる。大抵の場合、画面に処理結果が表示される。
この流れを基本として、 “アプリケーション”の部分を開発し、システムの機能を実現する。
近年はシステムの機能をハードウェア(とくに“半導体”関連の部品)で実現して、システムの性能やエネルギー効率(省電力性)を追求する例が出てきている。
アップル社が独自のCPUを開発して自社のパソコンに組み込んで発売したり、グーグル社がAIに特化した独自のCPUを開発して自社のAI関連のサービスに組み込んで利用したりしている。
目的とする処理をアプリケーションで実現しようとすると、「アプリケーション->OS->ハードウェア」の流れで変換されて処理されるため、必然的に処理のオーバーヘッドが発生し、処理の遅延および電力消費量の増大につながる。
ハードウェアで目的の処理を直接行えるようにすれば、処理のオーバーヘッドを避けることが可能になり、処理の高速化と省電力化につながる。
電力消費量を意識しなければならないポータブル機器(外に持ち運びする機器)やデータセンター(大量のコンピューターを運用する組織および建屋)、性能を追求するAI関連の処理にとっては、特に重要な考え方となっている。
