Posted on: Written by: K-Sato
⚠️ This article was posted over 2 years ago. The information might be outdated. ⚠️

Table of Contents

コンピュータの 5 大装置

コンピュータは主に以下の5つのパートによって構成されている。
(1) 制御装置:記憶装置からプログラムの命令を取り出して各装置に指示。
(2) 演算装置:データの処理や加工を行う。
(3) 記憶装置:データやプログラムを記憶する。
(4) 入力装置:外部からプログラムやデータを読み込む。
(5) 出力装置:処理された出たを外部へ書き出す。

image

  • プログラム内蔵方式:実行するプログラムをあらかじめ主記憶装置に読み込んでおく方式(プログラム格納方式)。
    -> ハードウェアの変更をしなくても、プログラムを変更する事で様々な処理を行う事ができる。

バス

  • バス:コンピュータ内部でデータや信号を伝達するための回路や通路のこと。
    接続する対象によって、様々な名称で呼び分けられる。

image

内部バス:CPU 内部のデータのやり取りに使用される伝送路。
外部バス:CPU と外部にある主記憶装置、周辺機器の間のデータのやり取りに使用する伝送路。

  • システムバス:CPU や主記憶を接続する高速なバスのこと。
  • 出入力バス:I/O バスとも呼ばれる。入出力装置が接続されるバス。
  • アドレスバス:メモリアドレス信号を出力するために使われる線。
  • データバス:CPU と、メモリや I/O との間でデータを転送するために使われるバス。
  • コントロールバス:アドレスバスやデータバスで実際に入出力を行うタイミングや、その他 CPU と外部との間での必要な制御情報をやり取りする信号線。

CPU

CPU は以下の2つの装置で構成されている。
(1) 制御装置:記憶装置からプログラムの命令を取り出して各装置に指示。
(2) 演算装置:算術論理演算装置(ALU: Athmetic and Logic Unit)とも呼ばれ、四則演算や論理演算を行う。

レジスタ

CPU の中にはレジスタという高速な記憶装置が用意されている。
レジスタには以下のような種類が存在する。

  • 命令レジスタ:主記憶から取り出された命令を格納する。
  • 命令アドレスレジスタ:実行すべき命令のアドレスを保持する。(プログラムカウンタとも呼ばれる。)
  • インデックスレジスタ:アドレス指定に用いるレジスタ。(命令のアドレス部を修飾するための増分値を保持する。)
  • ベースレジスタ:アドレス指定に用いるレジスタ。(命令のアドレス部の値に加えられる基準となるアドレスを保持する。)
  • アキュームレータ:演算結果等を一時的に保持する。
  • 汎用レジスタ:特定の機能に限定せず、多目的に使用される。

クロック周波数

  • クロック周波数:クロックと呼ばれる、回路が処理の歩調をあわせるために用いる信号が、1 秒間に何回発生するかを示す値。
  • 外部クロック:CPU と主記憶装置を接続するシステムバスのクロック。
  • 内部クロック:CPU のクロック周波数。 (内部は CPU 内部の事、外部は CPU 外部の事。)

アドレス指定

プログラムはコンピュータに行わせる命令が集まったもの。これらは最終的に機械語に変換されコンピュータによって解読、実行される。

命令語:命令部とアドレス部(オペランド部)によって構成される。
(1) 命令部:命令や演算の指示をする。
(2) アドレス部:処理対象となるデータの主記憶装置上のアドレスなどを指示する。

命令実行サイクル

命令の読み出しから実行終了までの流れは以下のようになる。

[1] 命令フェッチ: 命令アドレスレジスタで示されたアドレスの命令が命令レジスタに取り出される。
↓
[2] 命令の解読: 命令部分が解読機によって解読される。
↓
[3] 実行アドレス計算: 命令のアドレス部はアドレスレジスタに送られる。アドレスレジスタは実行に必要なデータが入っているアドレスや実行結果を格納するアドレスを計算して主記憶装置に指示をする。
↓
[4] オペランド(データ)の読出し: 演算の対象となるアドレスのデータが演算装置に送られる。
(オペランドとは、数式を構成する要素のうち、演算の対象となる値や変数、定数などのこと。)[5] 命令実行: 演算装置で計算が実行される。
↓
[6] 演算結果格納: 計算結果が、再び主記憶装置に格納される。

アドレス指定

命令実行時には以下のアドレス指定方式を使用して、実行アドレスを求める。 実行アドレスとは処理対象となるデータが実際に格納されている主記憶装置上のアドレス。

  • 即値アドレス指定:命令のアドレス部にデータそのものを格納している方式。(アドレス部にアドレスではなくデータそのものを持つ)
#即値アドレス指定
命令
|命令部|命令|アドレス部|必要なデータ|
  • 直接アドレス指定:命令のアドレス部の値を実行アドレスとする方式。
#即値アドレス指定
命令
|命令部|命令|アドレス部|20|
↓
主記憶装置
|アドレス|20|格納内容|必要なデータ| 
  • 間接アドレス指定:命令のアドレス部に実行アドレスを格納しているアドレスを格納する方式。
#間接アドレス指定
命令
|命令部|命令|アドレス部|20|
↓
主記憶装置
|アドレス|20|格納内容|25| → |アドレス|25|格納内容|必要なデータ|
  • 相対アドレス指定:命令のアドレス部の値と命令アドレスレジスタ(プログラムカウンタ)の値を加算し、実行アドレスとする方式。
#相対アドレス指定
命令
|命令部|命令|アドレス部|20|
↓
プログラムカウンタ
|50|
↓
主記憶装置
|アドレス|70|格納内容|必要なデータ|
  • インデックスアドレス指定:命令のアドレス部の値とインデックスレジスタの値を加算し、実行アドレスとする方式。
#インデックスアドレス指定
命令
|命令部|命令|アドレス部|20|
↓
インデックスレジスタ
|50|
↓
主記憶装置
|アドレス|70|格納内容|必要なデータ|
  • ベースアドレス指定:命令のアドレス部の値とベースレジスタの値を加算し、実行アドレスとする方式。
#ベースアドレス指定
命令
|命令部|命令|アドレス部|20|
↓
ベースレジスタ
|50|
↓
主記憶装置
|アドレス|70|格納内容|必要なデータ|

CPU の高速化

  • 逐次制御方式:命令の実行サイクルの単位で、1命令ずつ順番に繰り返し実行する方式。
# 逐次制御方式のイメージ
(命令1)[1][2][3][4][5][6]
                        (命令2)[1][2][3][4][5][6]
  • パイプライン処理:命令実行サイクルの各段階を並行して実行する事によって処理効率を向上させる方式。
    → 分岐命令が現れると先読みしていた命令が破棄され、新たに分岐命令を実行する。(先読みしていた命令が無駄になる。)
# パイプライン処理のイメージ
(命令1)[1][2][3][4][5][6]
   (命令2)[1][2][3][4][5][6]

パイプライン処理の問題への対策

  • (1)分岐予測: 実行される確率の高い方を予測する。

  • (2)投機実行: 予測した分岐先の命令を開始して結果を保持し、分岐先が正しければその結果を利用する。

  • スーパーパイプライン: 各ステージをさらに細かく分割する事で、パイプラインの動作の効率を向上させる方式

# スーパーパイプライン処理のイメージ
(命令1)[1][2][3][4][5][6]
 (命令2)[1][2][3][4][5][6]
  • スーパースカラ: 複数のパイプラインを設ける事で、複数の命令を同時に実行する方式。
# スーパースカラ処理のイメージ
(命令1)[1][2][3][4][5][6]
(命令2)[1][2][3][4][5][6]
   (命令3)[1][2][3][4][5][6]
   (命令4)[1][2][3][4][5][6]
  • マルチコアプロセッサ:1 つの CPU 内に複数のコア(演算回路の中核部分)を備えている事。シングルコアに比べ、消費電力を抑えながら、処理速度の高速化を図る事ができる。
    (コアが2つのものをデゥアルコアコアが 4 つのものをクアッドコアと呼ぶ。)
  • GPU(Graphics Processing Unit):3D の画像処理を高速化する演算装置。数千個ものコアでデータを並列処理する。
  • 機械学習:大量のデータの解析によりコンピュータが学習し、予測や判断ができるようにする事。
  • ディープラーニング:機械学習の一種で、十分なデータ量があれば、人間の力なしに機械が自動的にデータから特徴を抽出してくれるディープニューラルネットワーク(DNN)を用いた学習のこと。

記憶素子

半導体メモリはROMRAMに大別できる。

  • RAM(Random AccessMemory):読み書きが出来る。電源を切ると記憶していた内容が消える。(揮発性)
  • ROM(Read Only Memory):読み出し専用。電源を切っても記憶していた内容は消えない。(不揮発性)

RAM の種類と特徴

  • DRAM(Dynamic RAM): コンデンサ(電気を蓄えたり放出したりする電子部品)で構成され、SRAM に比べて大容量で安価。ただし、コンデンサは放置していると自然放電する特性がある為、一定時間ごとに記憶内容を維持する為にリフレッシュ動作(再書き込み)が必要。(主記憶装置に用いられる。)
  • SRAM(Static RAM): フリップフロップ回路で構成され、DRAM に比べてより高速だが、小容量で高価。電源が供給されている限り記憶内容を保持する為リフレッシュ動作は不要。(キャッシュメモリ等に使用される。)
  • フリップフロップ回路:電気回路の一種で、「0」と「1」の値によって 1 ビットの情報を表現し、それを保持することができる回路のこと。

image

ROM の種類と特徴

  • PROM(Programmable ROM):ユーザが消去したり、後から書き込んだり出来る ROM の事。
  • マスクROM:製造時に書き込まれた後はユーザーは書き込めない。
  • EPROM(Erasable PROM):紫外線照射で全消去出来る。
  • EEPROM(Electrically EPROM):電圧をかけて部分消去できる。消去・書き込みは1バイト単位で可能。
  • フラッシュメモリ:電圧をかけて全消去、または部分消去できる。書き換えはブロック単位で消去後に書き込む。

キャッシュメモリ

主記憶装置(メインメモリ/RAM)と CPU の速度差を補う為、小容量だが高速なキャッシュメモリを CPU と主記憶装置の間に置く。
主記憶装置から読み出したデータをキャッシュメモリに保持し、CPU が後で同じデータを読み出す時は高速なキャッシュメモリから読み出す事でデータ転送の高速化が実現される。
image

  • ライトスルー方式:キャッシュメモリの書き込み命令が実行された際にキャッシュメモリと主記憶装置の両方を書き換える方式。
    → キャッシュメモリと主記憶装置の内容は常に同じなのでデータの一貫性が保たれるが、書き込みの速度を上げることは出来ない。
  • ライトバック方式:キャッシュメモリだけを書き換えておき、主記憶装置の書き換えはブロックの入れ替え時に行う方式。
    → 主記憶装置への書き込み頻度が減り、高速に書き込めるが、キャッシュメモリと主記憶の内容は異なっており、特殊な状況下ではキャッシュされたデータが失われる事がある。

実行アクセス時間

上記を踏まえると、アクセスするデータはキャッシュメモリか主記憶装置のどちらかに存在しているはずである。
以下の ヒット率キャッシュメモリのアクセス時間主記憶装置のアクセス時間がわかれば実行アクセス時間を求める事ができる。

  • ヒット率:アクセスするデータがキャッシュメモリに存在する確率のこと。
  • NFP(Not Found Probability):アクセスするデータが主記憶装置に存在する(キャッシュメモリに存在しない)確率の事。

ヒット率の求め方

ヒット率 + NFP1
ヒット率 = 1NFP
NFP1 - ヒット率

実行アクセス時間を求める公式

(ヒット率 * キャッシュメモリのアクセス時間) + (NFP * 主記憶装置のアクセス時間)

(例題)

以下の実行アクセス時間を求めよ。
- ヒット率: 80%
- キャッシュメモリのアクセス時間: 10ナノ秒
- 主記憶装置のアクセス時間: 60ナノ秒

※ヒット率は80%なのでNFP20%である事がわかる。
よって、

(0.8 * 10) + (0.2 * 10) = 20ナノ秒

と計算ができる。

ディスクキャッシュ

  • ディスクキャッシュ: 主記憶装置のアクセス時間と磁気ディスクのアクセス時間の速度差を補う為に間に置かれるもの。
  • バッファ:速度差のある装置間のギャップを補う事。

記憶装置のアクセス速度

記憶装置をアクセス速度の早い順に上から並べると以下のようになる。

レジスタ
↓
キャッシュメモリ(CPUと主記憶装置の間に置かれ、高速化。)
↓
主記憶装置(メインメモリ/RAM)
↓
ディスクキャッシュ(主記憶装置と磁気ディスクの間に置かれ、高速化。)
↓
ハードディスク(磁気ディスク/HDD/ストーレッジ/ROM)

メモリインタリーブ

  • メモリインタリーブ:主記憶装置をいくつかのアクセス単位(バンク)に分割し、各アクセス単位をできるだけ並行動作させる事によって、実行的なアクセス時間を短縮し高速化を図る方法。

磁気ディスク(HDD = Hard Disk Drive)

HDD の構造

image

  • セクタ:データを記録する最小単位。
  • トラック:セクタがいくつか集まって同心円状のトラックを作る。
  • シリンダ:中心から等距離にあるトラックの集まりのこと。
  • HDDの1面:トラックがいくつか集まって 1 枚のディスクが構成されている。
  • セクタ方式:上記の要素を用いてデータを記録する方式の事。(データセクタ単位で読み書きする。1 つのセクタに収まらない場合は複数のセクタにまたいで情報を記録する。)

HDD のアクセス時間

アクセス時間は制御装置がデータの読み書きの指令を出してから、データの読み書きが終わるまでの時間。
HDD では以下の 3 つのプロセスが存在し、アクセス時間は全ての段階に掛かった時間を加算したもの。

  • シーク時間(位置決め時間):磁気ヘッドを目的のデータが存在するトラックまで移動させるのに要する時間
  • サーチ時間(回転待ち時間):目的のデータが、磁気ヘッドの位置まで回転してくるのを待つ時間。
  • データ転送時間:目的のデータが磁気ヘッドを通り過ぎるのに要する時間。(データを読み取る)
HDDのアクセス時間 = シーク時間 + サーチ時間 + データ転送時間

フラグメンテーション

  • フラグメンテーション:HDD でファイルの書き込みや削除を繰り返した事により、1 つのファイルが分散して記録されるようになる事。
  • 最適化ソフト(デフラグメンテーションソフト):断片化が発生したファイルを連続した領域に再配置する。(連続したデータを読み取る場合、磁気ヘッドの動きが少なくなるので、アクセス時間が短くなる。)

補助記憶装置(リムーバブルディスク)

CPU が直接読み書きできるのは主記憶装置上(RAM)にあるプログラムやデータだけ。
しかし、主記憶装置(RAM)は小容量で揮発性がある。この主記憶装置を補うのが補助記憶装置
つまり、不揮発性を持ちデータの長期保存に使用される上記の HDD も補助記憶装置の 1 つ。

  • 補助記憶装置:一般的に主記憶装置と比較してアクセス速度は遅いが、大容量、安価で不揮発性を持つ。

補助記憶装置の種類

  • 光ディスク:データの読み書きレーザ光線を使用する記憶媒体でCD(Compact Disc)DVD(Digital Versatile Disc), BD(Blue-ray Disc)等があり、大容量、安価で耐久性に優れている。
  • HDD(Hard Disk Drive):磁性体を塗った円盤状のディスクにデータが記憶され、磁気ヘッドを移動させながらデータを読み書きする装置。
  • DAT(Digital Audio Tape):カセットテープ。データの読み書きは磁気を使用する。
  • フラッシュメモリ:電気的に全部、または一部分を決して内容を書き直せる半導体メモリ(USB や SD カード)。
  • SSD(Solid State Drive):フラッシュメモリを用いた記憶媒体で HDD の代わりとして利用される。HDD のようなシーク、サーチと行った機械的な操作がないので、静音で振動や衝撃に強く、消費電力が小さい、アクセス速度が速いなどの特徴を持つ。

光ディスクには以下のように再生専用型、追記型、書き換え型の3種類が存在する。

  • CD-ROM(CD Read Only Memory):再生専用型の CD。
  • CD-R(CD Recordable):データを一度だけ書き込む事が出来る追記型の CD。
  • CD-RW(CD ReWritable):データを何度でも書き込む事ができる書き換え型の CD。 (DVD にもDVD-ROM, DVD-R,DVD-RWが存在する。)

入力装置

  • ポインテイングデバイス:マウスのように位置や座標を入力する装置の総称。

ポインティングデバイス

  • トラックボール:球を指で回転させてその変化量で座標を指示する。
  • トラックパッド:操作面を指して座標を指示する。(人間のもつ静電気を利用して指の位置を検出する。)
  • タッチパネル:専用のパネル上を直接指で触れる事で位置情報を入力する装置。

その他の入力装置

  • イメージスキャナ:絵や写真、図形などを光学的に読み取る。
  • バーコードリーダ:商品などに印刷された、帯状のマークを読み取る装置。

出力装置

コンピューターの処理結果を外部に出力する装置の総称。ディスプレイやプリンターの他に、音声出力装置なども含まれる。

ディスプレイの種類

  • 液晶ディスプレイ:光の透過を画素ごとに制御する。液晶自体は発光しないので、バックパネルが必要。
  • 有機ELディスプレイ:電気を通すと発行する有機化合物を挟んだ構造のディスプレイ。
  • PDP(Plasma Display Panel):放電による紫外線と蛍光体を利用したディスプレイ。

ディスプレイの解像度

ディスプレイの文字や画像はドット(点)が集まったもの。
ドット(点)の事をピクセル(pixel)とも呼ぶ。ディスプレイの解像度は1280 * 1024 ドットのように横方向と縦方向のドット数で表す。ドットの数が多いほど解像度が高い。

  • VRAM(Video RAM):ディスプレイに表示される内容を一時的に記録する専用のメモリ。(ディスプレイに表現できる解像度や式数は VRAM の容量によって決まる。)
  • ディスプレイの光の3原色:R(Red)・G(Green)・B(Blue)を組み合わせて様々な色を表現する。
  • プリンタの光の3原色:C(Cyan)・M(Magenta)・Y(Yellow)を組み合わせて様々な色を表現する。 1 ドットに 2 色を表現するには 1 ビット(0, 1)、4 色を表現するには 2 ビット(00, 01, 10, 11)、8 色を表現するには 3 ビット(000, 001, 010,011,100,101,110,111)をそれぞれの色に対応させる。

プリンタの種類

  • ドットインパクトプリンタ:ピンで衝撃を与えて印刷。
  • インクジェットプリンタ:ノズルからインクを吹き付ける。
  • レーザプリンタ:トナーを紙に転写する。

出入力インタフェース

周辺装置接続時のコネクタの規格やデータ転送の仕様のことを出入力インタフェースと呼ぶ。

よく使用するインタフェース

  • USB(Universal Serial Bus):コンピュータと周辺装置を接続する標準的なインタフェース。マウスやキーボード、プリンタ、スキャナ等を接続する(最大 127 台まで接続可能)。
  • ホットプラグ:接続されている機器の電源を入れたままで抜き差しができる機能。(USB はホットプラグ対応)
  • バスパワー:USB ケーブルを介してパソコン本体から電源を供給する方式。
  • HDMI:映像、音声、制御信号を 1 本のケーブルで出入力ができるインタフェース。
  • DVI-I:PC の映像をディスプレイに送るためにインタフェース。映像デジタルデータのまま送る事ができる。
  • irDA:赤外線を使用する通信規格で携帯電話等でデータを交換する際に使用された。
  • Bluetooth:2.4GHz 帯の電波を利用し、半径数 10m の範囲で最大 50Mbpps 程度の通信速度を実現する無線技術。

About the author

I am a web-developer based somewhere on earth. I primarily code in TypeScript, Go and Ruby at work. React, RoR and Gin are my go-to Frameworks.