🎄

パソコンが動く仕組み(CPU・メモリ・OS)【復習】

2022/12/10に公開約6,600字

はじめに

こんにちは、山田です。
今回はパソコンが動く仕組み(CPU・メモリ・OS)について復習をかねて記載していこうと思います。
よろしくお願いします。

CPU

以下よりCPUについて記載していきます。

CPU概要

CPUは「パソコンの頭脳」と言われています。
CPUに対して、命令を一定の手順化したものを渡すとCPUはメモリに一旦記憶させて、メモリから1つずつ命令を取り出して実行していきます。命令を一定の手順で記載したものを、プログラム言います。
上記に記載したように、パソコンは命令を記憶する場所と命令を実行する場所が異なっており、命令を記憶する装置がメモリ、命令を実行する装置がCPUになります。

CPUが命令を実行する順番

CPUの中には、4つのユニットが存在しそれぞれが担当する仕事が異なります。

ユニット名 動作
フェッチユニット メモリから読み込む
デコードユニット 解読する
エグゼキュートユニット ALU:命令を実行する
レジスタ:命令やデータを一時的に記憶する
ライトバックユニット 結果を出力する

クロック周波数

CPUの性能は動作速度に比例すると言われています。このCPUの動作速度を向上させる方法としてはクロック周波数を向上させることです。

マザーボード上にはクロックジェネレーターという装置が搭載されており、このクロックジェネレーターが一定のクロック周波数を発信します。
クロックジェネレーターが発信するクロック周波数をベースクロックと呼びます。CPU内部ではこのベースクロックを数倍に上げて高速に動作します。このベースクロックを数倍に上げるために使用するのが逓倍回路になり、逓倍回路によってCPU内部のベースクロックが数倍になります。

前述で記載した通り、CPU内部では「命令読み込み→解読→実行→出力」の4つのプロセスを踏む必要があるのでベースクロックを数倍にしています。
クロックジェネレーターが発信するベースクロックを外部クロック、CPU内部で数倍にしたベースクロックを内部クロックと呼びます。

スーパーパイプラインとスーパースケーラー

CPUの4つのユニットさらに複数の小さなプロセスに分かれさせることができます。この1つ1つのプロセスをステージ呼びます。この各々のステージが1つの仕事が完了したら次の仕事をするようにすればCPUはさらに高速になります。この次から次へと処理することをスーパーパイプライン処理と呼びます。

上記のスーパーパイプライン処理が並列して複数存在させるように実現した仕組みがスーパースケーラーになります。
CPUに何かさせるときに命令を与えるが、この命令を一般的にx86命令と呼びます。
スパースケーラーでは、命令の解読が完了したらx86命令をμOP(マイクロオペレーション) という複数の処理しやすい単純命令に分解します。

分解された命令は、メモリ上のリザベーションステーションに置かれることになります。リザベーションステーションから、CPUの実行ユニットは5つに分かれ自分が実行できる命令を選んで実行していくことになります。

キャッシュメモリ

CPUとメモリの動作速度を比較すると、メモリの方が動作速度は遅いです。この問題を解決するためにメモリよりも動作速度の速いキャッシュメモリをCPUとメモリの間に配置することが考えられた。
メモリにはいくつか種類はあるが、主に使用されているのはダイナミックRAMスタティックRAMになります。ダイナミックRAMとスタティックRAMの違いについては以下の通りです。

種類 特徴
ダイナミックRAM 記憶する容量は大きいが、動作速度は遅い。
スタティックRAM 記憶する容量は小さいが、動作速度は速い。

CPUではキャッシュメモリは1次キャッシュメモリ2次キャッシュメモリがあり、両方ともCPUの内部に存在します。

メインメモリからデータ読み込む時は、初めに1次キャッシュメモリと2次キャッシュメモリに書き込み、それからデータの読み込みを実行します。

次回同じ命令やデータをメモリから読み込むときは、1次キャッシュメモリにあれば1次キャッシュメモリから読み込み、1次キャッシュメモリになければ2次キャッシュメモリから読みこみ、2次キャッシュメモリにもなければメインメモリから読み込むことになります。

メモリ

以下よりメモリについて記載していきます。

メモリの種類

メモリには、RAMとROMとに分けられ違い関しては以下の通りです。

種類 詳細
RAM(RandomAccessMemory) パソコン起動中のみに、データを自由に記憶させたり読み込んだりできるメモリ。電源が入っていないとデータ維持されない。
● ダイナミックRAM:メインメモリとして使用
● スタティックRAM:キャッシュメモリとして使用
ROM(ReadOnlyMemory) パソコンが起動していなくてもデータが記憶され、私たちが書き込みできないデータが保存されているメモリ

ダイナミックRAM仕組み

パソコンに搭載されているダイナミックRAMと呼ばれるメモリチップはセル単位で構成されており、セル1個にコンデンサトランジスタという2つの回路で構成されている。
コンデンサには電気信号として0か1が記憶されるようになっている。つまり、コンデンサには1ビッのデータが記憶されていることになる。
トランジスタのスイッチをオンにするとコンデンサに電気信号を書き込み、オフにすると電気信号を書き込めないようになっている。

セルは縦横の直角に交わる配線で繋がっており、横の配線をワード線・縦の配線をビット線と呼びます。この配線に電圧をかけることで情報を書き込んだり、読み込んだりすることができるようになる。

メモリからデータを読み込む仕組み

CPUがメモリからデータを読み込むときは、まずCPUからメモリコントローラにメモリの中のデータが記憶されているアドレスを出力する。メモリコントローラはアドレスを行アドレス列アドレスの2つに分ける役割があります。

メモリの背面には、行アドレスを指示する /RAS端子があります。メモリコントローラが行アドレスを出力して/RAS端子をオンにすると、/RAS端子が有効になります。
結果、行アドレスがメモリ内部の行セレクタ回路に到達し、その行アドレスに相当するワード線がオンになります。オンになったワード戦に繋がっているトランジスタがオンになり、コンデンサに記憶されているビットがビット線に乗ります。このビット線に乗ったビットがすべてセンスアンプというメモリ内部の装置に送信されることになります。

次にメモリコントローラは列アドレスを出力する /CAS端子をオンにします。有効にすることで、列アドレスがメモリ内部の列セレクタ回路に到達します。結果、その列アドレスに相当するビット線がオンになります。センスアンプからオンになったビット線の電荷部分だけが選択されて出力アンプという装置に放出されることになります。


列アドレスを連続的に指定して、センスアンプ内のデータを連続的に出力アンプに出力することをバースト転送と呼びます。バースト転送では最大8ビットまで連続的に出力されます。

データをメモリに書き込む仕組み

CPUがメモリにデータを書き込むときは、書き込むデータ・そのデータを記憶させるアドレスをメモリコントローラに出力させます。
そしたら、メモリコントローラは書き込みたいデータを出力してメモリ背面にあるデータ端子をオンにします。結果、メモリの入力アンプという回路に1ビットだけ保持されることになります。ここから先は、データを読み込み仕組みと同じなので省略します。
センスアンプの対象の列のビット線がオンになったら、入力アンプに保持されている1ビットがに置き換えられます。置き換えられたセンスアンプのデータをワード線で指示している対象の行に書き戻します。

OS

以下よりOSについて記載していきます。

OS概要

パソコンのスイッチを入れると、CPUが動き出しBIOSという回路から起動プログラムをメモリに読み込んできます。そして、この起動プログラムがハードディスクからIPLというプログラムを読み込み、このIPLがOSをメモリに読み込んできます。
OSは以下の4つのプログラムで構成されています。

- カーネル
- USER
- GDI
- API

カーネルの役割

①CPU管理
OSのカーネルの1番目の役割はCPU管理です。パソコンを起動するとCPUが動き出しOSをメモリに読み込んできます。そして、この後からはOSのカーネルがCPUに命令して一定の仕事をし始めます。カーネルがCPUを管理してパソコンを動かしています。

②マルチタスク
1台のパソコンで複数の作業を同時に行うことをマルチタスクと呼びます。カーネルを使用すれば、アプリケーションの作業を細かく区切り、区切った作業をCPUに瞬間的に切り替えながら動作させることで、複数の作業が同時に行われているように見せることが可能になります。

③メモリ管理
CPUが使用できるメモリ領域はユーザー領域OS領域の2つに分けることができます。アプリケーションを起動すると、ハードディスクからアアプリケーションを読み込んできてメモリのユーザー領域に記憶します。その後、アプリケーションを使用してデータを作成するとカーネルはメモリのユーザー領域の空いている領域に記憶させます。メモリの空きがなくなると、ハードディスクに記憶されていきます。このメモリの不足分を補うハードディスクの記憶領域を仮想記憶領域と呼びます。
カーネルとデータのメモリの割り当てをメモリの管理機能と呼びます。

④ファイル管理機能
アプリケーションを使用して作成したデータの保存を命令すると、それがファイルの場合ハードディスクに保存されます。この時、ハードディスクのどこが空いているのか気にする必要はありません。ファイル名、ファイルの種類を指定するとカーネルがハードディスクの空いている場所に、ファイル名、ファイルの種類、ファイルの大きさなどを記憶して保存してくれます。
以上のように、カーネルのファイル保存、削除、ファイル名の変更をする機能をファイルの管理機能と呼びます。

USER

ユーザーインターフェースの動きを監視して、操作に応じて処理するプログラムをUSERと呼びます。USERが入力機器からの操作を受け取り、その後OSのカーネルがそれを受け取り、はじめてCPUやメモリなどのハードウェアが動き出します。

GDI

GDIは、グラフィックユーザーインターフェースのことです。
画像情報をOSのUSERが受け取ると、USERからGDIに情報が転送されます。GDIからカーネルに情報が転送され、カーネルがグラフィックカードの中心装置であるGPUに情報を転送します。GPUがそれをグラフィックスメモリに転送して画面上に画像が表示されます。

API

APIとはアプリケーションソフトでの操作情報を受け取り、それをカーネルに渡すプログラムです。

終わりに

今回はパソコンが動く仕組みについて記載しました。
エンジニアになって、2年が経過しましたが基礎が抜けてると会話についていけない、考えることができない状況になってしまうなとつくづく感じています。
これからも日ごろの業務を行う中で、基礎が抜けてるなと感じたら記事にしていこうと思います!
今回記載した内容が誰かの役に立てばと良いなと思います。
最後まで見てくださりありがとうございます。

以上

Discussion

ログインするとコメントできます