<IT情報・ハードウェア編> IT情報TOPヘ
先回のエントリーで、メモリとハードディスクの働きとその取り扱いを学びました。今回は、それらの知識をもとにコンピュータが働く原理をみていきます。複雑怪奇にみえるコンピュータの働きは、実はきわめてシンプルな動作を超高速で行っているに過ぎないことを理解してもらえるでしょう。
<記憶デバイスの動作速度>
先回のエントリー「メモリとハードディスクの働き」で、コンピュータの基本構成を学びましたが、改めて下図に示します。CPU(中央処理装置)を中心にしたこの図は、常に頭に置いておいてください。このコンピュータの働きにおいて、メモリ(主記憶装置)と ハードディスクなど(補助記憶装置)の記憶デバイスの働きは特に重要です。コンピュータの歴史は、記憶デバイスの進歩の歴史でもあります。
ここで、CPU と各種記憶デバイスの動作速度や容量の関係を、階層構造で理解しておきましょう。動作速度が最も速いのはCPUで、CPU>メモリ>ハードディスク
という順序になります。
記憶デバイスの動作速度は、レジスタやキャッシュメモリ(SRAM)が数ナノ秒と最も速く、メモリ(DRAM)は数10ナノ秒とその1/10程度の速さです。また、ハードディスク(HDD)の動作速度は数10ミリ秒と桁違いに遅いデバイスになります。(ナノは10のマイナス9乗、マイクロは10のマイナス6乗、ミリは10のマイナス3乗のことです)
最速デバイスのCPU はレジスタ(SRAM)でできており、メモリ(DRAM)との速度差があるため、その情報の読み出し・書き込みに時間待ちが生じます。この速度差を埋めるために、次に必要な情報を前以て一時的に記憶しておくデバイスを考えました。この待ち時間を減らす工夫が赤文字で示したキャッシュ(cache)です。CPU としては、動作速度の遅い記憶装置には付きっきりというわけには行かない、ということです。
メモリに対するキャッシュが
キャッシュメモリ(SRAM:1~2MB程度=カタログに記載あり)で、ハードディスクに対するキャッシュが
ディスクキャッシュ(DRAM:8MB程度をディスクに内蔵)です。 (以下の説明は、話を簡単にするためキャッシュを無視しています)
<メモリとハードディスクの機能分担>
メモリ(DRAM)とハードディスク(HDD)は共に広義にはメモリ(記憶装置)ですが、動作速度などの物理的な特性が大きく異なり、その違いにより担当機能の住み分けがされています。
違いの第一は、動作速度で 100万倍も違います。コンピュータを動作させたいときには、ハードディスクにあるプログラムやデータを、動作速度の速いメモリに格納して、このメモリにCPU
が高速にアクセスできるようにします。(CPU がハードディスクに直接アクセスしても、相手の応答速度が余りにも遅すぎて仕事になりません)
違いの第二は、電源OFFのときの振る舞いです。電源をOFFにすると、メモリでは記憶していた内容が全て失われますが、ハードディスクでは記憶内容は失われません。従って、メモリは電源ON時にCPUとプログラムのやりとりに使われ、ハードディスクは電源OFF時の永続的な保存に使われます。
違いの第三は、容量の大きさです。メモリの容量は
0.5~1GB程度ですが、ハードディスクの容量は
数10~数100GBの大容量のものが普通になってきました。この面からもハードディスクが、プログラムやデータの保存に使われるのは理にかなっています。
<コンピュータの動作原理>
ここまでコンピュータを構成する各デバイス、すなわち
ハードウェアの説明をしてきましたが、以降は
ソフトウェア、すなわちプログラムとの関連をみていきます。ハードウェアとソフトウェアがうまく調和して、コンピュータのすばらしい働きが生まれます。
先に、CPUとメモリの関係を「コンピュータを動作させたいときには、ハードディスクにあるプログラムやデータを、CPU
に次いで動作速度の速いメモリに一時的に格納して、CPU
が高速にアクセスできるようにします」と説明しましたが、コンピュータの働きをもう少し詳しくみていきましょう。
メモリ上にはプログラムのほかに、プログラムの動作に必要なデータや、プログラムにより作られたデータも置きます。CPU
はメモリにしか直接アクセスできません。そのため、コンピュータを働かせるには、ハードディスクにあるプログラムをその都度メモリに格納(コピー)します。この動作が、「プログラムを起動する」ことを意味します。
さて、CPU がプログラムやデータにアクセス可能なメモリの大きさは、メモリ空間と呼ばれます。このメモリ空間 には、1バイト(8ビット)ごとにアドレス(番地)が振られており、OS
によって異なりますが、Windowsパソコンでは4GB(32ビット=2の32乗=約40億)までのアドレスが扱えます。
CPU
は、加える、引く、掛ける、メモリに保存する、ディスプレイに出力するなど、100前後の基本的なハードウェア機能を持っています。これらの機能を、CPU
が持つ「命令」(Instruction)といいます。プログラムとは、これらの命令に対応するビット列(以降、これも命令と記します)を論理的に並べたものです。
コンピュータを動作させるには、このプログラム(命令系列)をメモリのアドレスに沿って格納します。CPU
は、メモリに格納された命令を、並べられた順番にアクセスし、その命令通りの動作をします。この動作を「プログラムを実行する」といいます。これがコンピュータの基本原理です。
このコンピュータの動作原理は、現在の大型コンピュータからパソコンまで基本的には変りません。これをノイマン型コンピュータ
といい、数学者John von Neumann 氏によって1946年に提案されました。ノイマン型コンピュータの仕組みを、簡単に要約すると次のようになります。
①メモリにプログラムを保存する(ストアードプログラム)
②CPU
は命令を一つずつ実行する(逐次処理)
CPU の逐次処理では、ある時刻には1つの命令しか実行できない、つまり、複数のプログラムの同時実行はできない
ことに注目してください。では、一つのCPU
で、世にいうマルチタスク(プログラムの並列実行)は、どのように実現するのでしょうか。
簡単にいうと、人間の時間の知覚レベルは数100ミリ秒程度ですから、複数のプログラムをこれより短時間で切り替えながら実行します。マルチタスクは、プログラムを並列実行しているように見えるだけです。
<コンピュータの操作とその働き>
コンピュータの基本原理が分かったところで、日々やっているコンピュータの操作では、ハードウェアはどんな動きをしているのか考えてみます。
電源をON
して「コンピュータを起動する」とは、ハードディスクにある「OSをメモリに格納する」ことを意味します。WordやExcel
などの「プログラムを起動する」とは、ハードディスクに保存されている「プログラムをメモリに格納する」ことをいいます。これでコンピュータが働く(プログラムを実行する)環境が整いました。
さらに、WordやExcel
で作った「データを保存する」とは、一時的にメモリに蓄えられたデータを、ハードディスクなどの「補助記憶装置に格納する」という操作になります。名前をつけて保存したデータがファイルです。「ファイルを開く」とは、逆に補助記憶装置にある「データをメモリに格納する」ことを意味します。
<OSとアプリケーション>
実際にコンピュータが働くためには、ハードウェアとソフトウェア(プログラム)の連携が必要です。このハードとソフトの関係を概念的にまとめると、下図 のようになります。
ここでOS(Operating
System)とは、コンピュータシステム全体を管理するソフトウェアのことで、「基本ソフトウェア」とも呼ばれます。最もポピュラーなOS
は、Microsoft社WindowXP,VistaなどのWindowsシリーズです。印刷やマルチメディア業界を中心に、Apple社のMac
OSも利用されています。
このOS は、キーボード入力やディスプレイ出力などの入出力機能や、メモリ・ハードディスクの管理など、多くの
アプリケーションソフトから共通に利用される基本的なプログラム
を提供しています。各種アプリケーションソフトの開発は、このOSの提供する機能を利用することによって、開発の手間を省くとともに、利用者のアプリケーションの操作性を統一することができます。