6日でできる 新C言語入門|コンピュータの基本構成

CPU、メモリ、ストレージの役割が見えてくる。
コンピュータの中身を理解して、C言語の学びをもっと深くする。

コンピュータは、見た目だけを見ると1つの箱や1枚の端末のように見えます。しかし内部では、CPU、メモリ、ストレージ、各種インターフェースなど、さまざまな部品が連携しながら動いています。私たちがキーボードで文字を入力したり、画面に画像を表示したり、ファイルを保存したりできるのは、これらの部品が役割を分担しているからです。

C言語を学ぶうえでも、コンピュータの基本構成を知っておくことはとても大切です。なぜなら、C言語ではメモリ、アドレス、データ型、ポインタ、配列など、コンピュータ内部の動きと深く関係する考え方が多く登場するためです。

たとえば、変数に値を入れるという処理も、内部的にはメモリ上のどこかにデータを置く動きとして考えられます。また、CPUがプログラムを実行するには、メモリから命令やデータを読み出し、処理結果を再びメモリへ戻す流れが必要になります。

このように、コンピュータは単にプログラムを動かす装置ではなく、複数の装置が決められた役割に従って協調する仕組みです。ここでは、コンピュータの基本構成を、C言語の学習にもつながる視点でやさしく整理していきます。

コンピュータは複数の部品が連携して動く

コンピュータの内部には、さまざまな部品が搭載されています。その中心になるのがマザーボードです。マザーボードは、CPU、メモリ、ストレージ、拡張スロット、各種インターフェースなどを接続するための基板です。

パソコンの内部を見ると、CPUやメモリが直接マザーボードに取り付けられており、SSDやHDD、USB、ネットワーク、映像出力などの装置も、何らかの形でマザーボードとつながっています。

この構成は、デスクトップパソコンだけに限りません。ノートパソコン、スマートフォン、タブレット、ゲーム機、組込み機器などでも、基本的な考え方は共通しています。形や大きさは違っても、コンピュータは主に処理する部品、記憶する部品、データをやり取りする経路によって成り立っています。

部品主な役割
CPUプログラムの命令を実行し、計算や制御を行う
メモリ実行中のプログラムやデータを一時的に保存する
ストレージOS、アプリ、ファイルなどを長期的に保存する
バスCPU、メモリ、装置同士をつなぎ、信号やデータを運ぶ
インターフェースUSB、映像出力、ネットワークなど外部装置と接続する

コンピュータの動作を理解するときは、まずこの役割分担を押さえることが大切です。CPUだけが高性能でも、メモリやストレージとの連携がうまくいかなければ、全体として快適には動きません。コンピュータは、1つの部品だけで動くのではなく、全体のバランスで動く装置です。

図:コンピュータ内部の基本構成

この図から分かること

この図から分かるのは、コンピュータがCPUだけで動いているわけではないという点です。CPUは中心的な処理装置ですが、命令やデータを置くメモリ、長期保存に使うストレージ、各部品をつなぐバスがあって初めて処理を進められます。

C言語の学習では、変数や配列、ポインタなどを扱う場面で、メモリ上のデータ配置を意識することがあります。そのとき、CPUとメモリがどのようにやり取りしているのかをイメージできると、プログラムの動きがより理解しやすくなります。

マザーボードは各部品をつなぐ土台

マザーボードは、コンピュータ内部の部品を載せる土台です。単なる板ではなく、電気信号が通る細い配線が張り巡らされており、CPU、メモリ、ストレージ、拡張カード、入出力端子などを接続しています。

マザーボード上には、多数のLSIが搭載されています。LSIは大規模集積回路のことで、非常に多くの電子回路を小さなチップの中に集めたものです。現代のコンピュータは、このような高密度な電子回路によって小型化と高速化を実現しています。

マザーボードの役割を一言で表すなら、各部品が協力して動くための基盤です。CPUがメモリへアクセスしたり、ストレージからデータを読み込んだり、USB機器と通信したりできるのは、マザーボード上の回路や接続規格があるからです。

バスはデータと信号の通り道

コンピュータ内部では、CPU、メモリ、ストレージ、各種装置が絶えず情報をやり取りしています。この情報の通り道になるのがバスです。

バスは、部品同士を結ぶ通信路のようなものです。CPUがメモリから命令を読み出すとき、メモリ上のどの場所を読むのかを指定し、実際のデータを受け取り、読み出しや書き込みの制御を行います。この一連のやり取りにバスが関わっています。

バスには大きく分けて、アドレスバス、データバス、コントロールバスがあります。

バスの種類主な役割イメージ
アドレスバスメモリや装置内の場所を指定するどこを読むか、どこへ書くかを示す
データバス実際のデータを運ぶ数値や命令などの中身を運ぶ
コントロールバス読み書きなどの制御信号を送る読み込み、書き込み、割り込みなどを伝える

アドレスバスは、データの場所を指定します。メモリは番地で管理されているため、CPUはどの番地にアクセスするのかを指定する必要があります。この番地を伝えるのがアドレスバスです。

データバスは、実際のデータをやり取りするために使われます。CPUがメモリから値を読み出すときも、処理結果をメモリへ書き戻すときも、データバスを通じて情報が移動します。

コントロールバスは、読み込みなのか書き込みなのか、どのタイミングで処理するのかといった制御信号を伝えます。データを正しくやり取りするには、場所と中身だけでなく、操作の種類やタイミングも必要です。

CPUはプログラムを実行する中心装置

CPUはCentral Processing Unitの略で、日本語では中央処理装置と呼ばれます。コンピュータの中で、計算や判断、制御を担当する非常に重要な部品です。

CPUは、メモリ上に置かれた命令を読み出し、その命令に従って処理を行います。処理の内容は、数値計算、データの比較、メモリへの読み書き、装置の制御などさまざまです。

CPUの基本動作は、次のような流れで考えると分かりやすくなります。

CPUの動作内容
命令を取り出すメモリから次に実行する命令を読み出す
命令を解釈するその命令が何をするものか判断する
命令を実行する計算、比較、データ移動などを行う
結果を保存する処理結果をレジスタやメモリへ反映する

この流れは非常に高速に繰り返されます。CPUはプログラム全体を一度に処理するのではなく、小さな命令を順番に処理していきます。

C言語で書いた処理も、最終的にはCPUが理解できる機械語に変換されて実行されます。C言語のソースコードは人間が読み書きしやすい形式ですが、コンピュータが直接実行する段階では、CPUが扱える命令の形になっています。

そのため、C言語を学ぶときには、書いた処理がCPUによって順番に実行されるという感覚を持つことが大切です。特に、条件分岐、繰り返し、関数呼び出し、メモリアクセスなどは、CPUの動作と密接に関係しています。

CPUはメモリとやり取りしながら処理する

CPUは単独で処理を完結させているわけではありません。多くの場合、CPUはメモリから命令やデータを読み出し、処理した結果を再びメモリへ書き込みます。

メモリには、実行中のプログラムや処理対象のデータが置かれています。CPUは必要な情報をメモリから取り出し、内部のレジスタと呼ばれる小さな高速記憶領域を使いながら処理を進めます。

このとき、CPUとメモリの間では大量のデータが行き来します。CPUがどれほど高速でも、メモリからの読み出しが遅ければ処理全体の速度に影響します。そのため、CPUの近くにはキャッシュメモリという高速な記憶領域が用意されています。

図2:CPUとメモリのデータの流れ

この図から分かること

この図から分かるのは、CPUがメモリと何度もやり取りしながらプログラムを実行しているという点です。CPUはメモリから命令とデータを取り出し、処理を行い、その結果をメモリへ戻します。

C言語では、変数や配列の値がメモリ上に置かれます。CPUがそれらの値を使って処理するには、メモリから読み出す動きが必要です。つまり、C言語の処理を正しく理解するには、CPUとメモリの関係をイメージすることがとても役立ちます。

メモリは実行中の作業場所

メモリは、コンピュータが処理中に使う記憶装置です。ストレージのように長期保存するための場所というより、現在実行しているプログラムやデータを一時的に置いておく作業場所と考えると分かりやすくなります。

メモリには主にRAMとROMがあります。RAMは読み書きができるメモリで、実行中のプログラムや作業中のデータを置くために使われます。ただし、電源を切ると内容は消えます。

ROMは読み出し専用の性質を持つメモリで、装置の基本的な制御情報などを保存するために使われます。電源を切っても内容が保持される点が特徴です。

種類特徴主な役割
RAM読み書き可能で、電源を切ると内容が消える実行中のプログラムやデータを一時保存する
ROM基本的に読み出し用で、電源を切っても内容が残る装置の基本制御情報などを保存する

一般的に、パソコンでメモリ容量と呼ばれるものはRAMを指します。メモリ容量が大きいほど、複数のアプリを同時に動かしたり、大きなデータを扱ったりしやすくなります。

C言語の視点では、メモリは非常に重要です。変数、配列、構造体などは、プログラム実行中にメモリ上へ配置されます。ポインタを学ぶときにも、メモリ上の場所を示すアドレスという考え方が登場します。

メインメモリ、キャッシュメモリ、フラッシュメモリの違い

メモリと一口に言っても、種類によって用途や性質が異なります。代表的なものに、DRAM、SRAM、フラッシュメモリがあります。

DRAMは、主にメインメモリとして使われます。容量を大きくしやすく、コンピュータが実行中のプログラムやデータを置くために利用されます。ただし、電源を切ると内容は消えます。

SRAMは、DRAMよりも高速にアクセスできるメモリです。CPU内部やCPUの近くに配置されるキャッシュメモリとして使われます。高速ですが、構造上コストが高く、大容量化には向きません。

フラッシュメモリは、電源を切っても内容が消えない半導体メモリです。USBメモリ、SDカード、SSDなどで使われています。RAMのような一時的な作業場所というより、データを保持する記憶媒体として利用されます。

メモリ種別主な用途速度電源OFF時のデータ保持
DRAMメインメモリ標準的消える
SRAMキャッシュメモリ非常に速い消える
フラッシュメモリSSD、USBメモリ、SDカードDRAMやSRAMより遅い傾向消えない

コンピュータは、速いメモリと大容量の記憶装置をうまく組み合わせて動作しています。CPUに近い場所ほど高速ですが容量は小さく、CPUから遠い場所ほど容量は大きくなりますが速度は遅くなる傾向があります。

この階層構造を理解すると、なぜキャッシュメモリが重要なのか、なぜメインメモリの容量が性能に影響するのか、なぜSSDがHDDより体感速度を上げやすいのかが見えてきます。

ストレージはデータを長期保存する装置

ストレージは、OS、アプリケーション、文書、画像、動画、設定ファイルなどを長期的に保存するための装置です。メモリと違い、電源を切ってもデータが残ることが大きな特徴です。

パソコンやサーバーでは、ストレージとしてHDDやSSDがよく使われます。スマートフォンやタブレットでは、フラッシュメモリを使った内蔵ストレージが一般的です。

メモリとストレージはどちらも記憶装置ですが、役割は異なります。メモリは実行中の作業場所、ストレージは長期保存場所です。アプリを起動すると、ストレージに保存されていたプログラムがメモリへ読み込まれ、CPUがそれを実行します。

項目メモリストレージ
主な役割実行中の作業場所データの長期保存
速度高速メモリより遅い
容量ストレージより小さい傾向大容量にしやすい
電源OFF時RAMは内容が消えるデータが残る
DRAM、SRAMHDD、SSD、USBメモリ、SDカード

この違いは、プログラムの実行を考えるうえでとても重要です。ファイルとして保存されているだけでは、プログラムは実行されません。実行時には必要な部分がメモリに読み込まれ、CPUが命令として処理していきます。

HDD、SSD、外部メディアの特徴

ストレージにはいくつかの種類があります。代表的なものがHDD、SSD、USBメモリやSDカードなどの外部メディアです。

HDDは、磁性体の円盤を回転させ、磁気的にデータを記録する装置です。大容量で比較的低コストなため、大量のデータ保存に向いています。ただし、内部に機械的に動く部品があるため、衝撃に弱く、SSDと比べると読み書き速度は遅くなりやすいです。

SSDは、フラッシュメモリを使ったストレージです。HDDのような回転する部品がないため、読み書きが高速で、衝撃にも比較的強く、動作音もほとんどありません。OSやアプリの起動が速くなるため、現在のパソコンやスマートフォンでは広く使われています。

USBメモリやSDカードなどの外部メディアは、持ち運びやデータ移動、バックアップに便利です。ただし、長期保管や重要データの保存では、故障や紛失に注意が必要です。

ストレージの種類主な特徴主な用途
HDD大容量で低コスト、機械的に動作する大容量データの保存、バックアップ
SSD高速、静音、衝撃に強いOS、アプリ、日常的に使うファイルの保存
USBメモリ持ち運びやすいデータ移動、一時的な保存
SDカード小型で携帯機器に向くカメラ、スマートフォン、組込み機器など

C言語の学習では、ファイル操作を学ぶ場面でストレージの存在を意識することがあります。プログラムがファイルを読み書きするとき、データは最終的にストレージ上に保存されます。ただし、処理中のデータはメモリ上に置かれるため、メモリとストレージの違いを理解しておくことが大切です。

図:メモリとストレージの役割の違い

この図から分かること

この図から分かるのは、メモリとストレージがどちらも記憶に関係する部品でありながら、役割が大きく違うという点です。ストレージはデータを長期保存する場所で、メモリは実行中の作業場所です。

プログラムを動かすときは、ストレージに保存されている内容がメモリへ読み込まれます。そしてCPUは、メモリ上の命令やデータを使って処理を進めます。処理した結果を残したい場合は、再びストレージへ保存します。

この流れを理解しておくと、ファイル保存、メモリ使用量、処理速度、アプリ起動時間などの関係が見えやすくなります。

コンピュータの基本構成をC言語の視点で見る

C言語を学ぶと、コンピュータの内部構成と結びつく概念が多く出てきます。特に重要なのが、メモリとアドレスです。

変数は、メモリ上に確保された領域に値を保存する仕組みとして考えられます。配列は、同じ種類のデータを連続したメモリ領域に並べる考え方につながります。ポインタは、メモリ上の位置を示すアドレスを扱うための重要な仕組みです。

また、データ型によって使用するバイト数が変わることも、コンピュータ内部の構成を理解していると自然に受け止めやすくなります。限られたメモリ領域の中に、どのようなサイズでデータを置くのかを考えることは、C言語らしい重要な視点です。

CPUはプログラムの命令を実行し、メモリはその作業場所となり、ストレージはデータを保存します。そして、それらをバスが結び、全体としてコンピュータが動作します。この関係を意識できるようになると、C言語の学習は単なる文法理解から、コンピュータの動きを想像しながら読む段階へ進みます。

基本構成を理解するとプログラムの動きが見えやすくなる

コンピュータの基本構成を理解すると、プログラムがどのように実行されるのかをイメージしやすくなります。

プログラムはストレージに保存され、実行時にメモリへ読み込まれます。CPUはメモリから命令を取り出し、解釈し、処理を実行します。必要なデータもメモリから読み出され、処理結果はメモリへ戻されます。保存が必要なデータは、最終的にストレージへ書き込まれます。

この一連の流れは、C言語を学ぶうえでとても重要です。なぜなら、C言語ではメモリ上のデータの位置やサイズを意識する場面が多く、コンピュータ内部の基本構成を知っているほど理解が深まるからです。

CPU、メモリ、ストレージ、バスの役割を押さえておくと、変数、配列、ポインタ、ファイル操作、データ型、処理速度といったテーマがつながって見えてきます。コンピュータの中で何が起きているのかを想像できるようになることは、C言語をより実践的に学ぶための大きな土台になります。