2.ハードウェア

ハードウェア原理/ノイマン型コンピュータの詳細に関して

2.1. ハードウェア原理

2.1.1. コンピュータの構成要素

コンピュータの構成要素にはハードウェアソフトウェアがある。

  • ハードウェア … 物理的なもの
  • ソフトウェア … コンピュータ内部で動作するプログラムなど

2.1.2. ハードウェア5大装置

コンピュータのハードウェアは入力装置記憶装置制御装置演算装置出力装置の5つの装置が連携して動作する。

5大装置

2.1.3. コンピュータの処理の流れ

コンピュータの処理は「入力」=>「演算」=>「出力」の順に処理が行われる。

  1. 入力内容を記憶装置に読み込む
  2. プログラム内の命令を制御装置に送る
  3. プログラム内のデータを演算装置に送りCPUで処理実行する
  4. 実行結果を記憶装置に書き出す
  5. 出力装置に結果を表示する

処理

2.1.4. ノイマン型コンピュータ

ノイマン型コンピュータは以下の特徴を持つコンピュータであり、現在のほとんどのコンピュータがノイマン型である。

  • プログラム内蔵方式 … プログラム実行時にプログラムを予め主記憶装置上に読み込んでおく方式
  • 逐次制御方式 … 命令を1つずつ取り出し順番に実行していく方式

2.2. 入出力装置

2.2.1. 入力装置

コンピュータに入力信号やデータを入力するための装置。

キーボードとポインティングデバイス

装置説明
キーボード数字や文字を入力するための装置
マウスマウスの移動情報を入力し画面上の位置を示す装置
トラックパッド画面を触れることで移動情報を指し示す装置
タッチパネル画面を触れることで画面の位置を指し示す装置
タブレットパネル上でペン等を動かすことで位置情報を入力する装置
ジョイスティックスティックを傾けることで位置情報を入力する装置

読み取り装置とバーコード

バーコードには2種類あり、商品用にはJANコード、2次元コードにはQRコードがある。

装置説明
イメージスキャナ絵や画像をデータとして読み取る装置
OCR印字された文字や手書き文字などを読み取る装置
OMRマークシートの読み取り位置を認識する装置
キャプチャカードビデオデッキなどの映像装置から、映像をデジタルデータとして取り込む装置
デジタルカメラフィルムの代わりにCCDを用いて画像をデジタルデータとして記憶する装置
バーコードリーダバーコードを読み取る装置

2.2.2. 出力装置

コンピュータの処理結果を表示する装置。

ディスプレイ

ディスプレイはコンピュータ出力を画面に表示する。 例としてブラウン管型のCRTディスプレイや液晶で薄型の液晶ディスプレイなどがある。

またディスプレイが表示されるきめ細かさは解像度と呼ばれる。 1ドット当たりRGBの光を重ねて表現される。

VRAM(ビデオRAM)

コンピュータは画面に表示される内容はVRAMと呼ばれる専用のメモリに保持する。 VRAMの容量によって扱える解像度と色数が異なる。

例えば、1024x768ドットの表示能力を持つディスプレイがある場合、16bit(65536色)を表示させたい場合のVRAMの容量は以下の通り。

1024x768x16=12582912bit, 1byte=8bitなため、12582912bit/8 ≒1.6MByte

ディスプレイの種類

装置説明
CRTディスプレイブラウン管を用いたディスプレイ、奥行きが必要であり消費電力も大きい
液晶ディスプレイ電圧により液晶を制御しているディスプレイ、薄型で消費電力も小さい
有機ELディスプレイ有機化合物に電圧を加えることで発光する仕組みを用いたディスプレイ、バックライトが不要である
プラズマディスプレイプラズマ放電による発行を用いたディスプレイ、高電圧が必要である

プリンタの種類

装置説明
ドットインパクトプリンタ印字ヘッドに多数のピンが内蔵され、このピンでインクリボンを打ち付け印字するプリンタ、印字品質は高くない
インクジェットプリンタ印字ヘッドノズルより用紙に直接インクを吹き付け印刷するプリンタ、高速である
レーザプリンタレーザ光線を照射することで感光体に印刷イメージを作成しそこに付着したトナーを紙に転写することで印刷するプリンタ、主にビジネス用

プリンタの性能指標

  • プリンタの解像度 … プリンタの解像度は1inchあたりのドット数を示すdpiを用いて表される
  • プリンタの印刷速度 … プリンタの印字速度は一秒間に何文字印字できるかを示すcpsと一秒間に何ページ印刷できるかを示すppmの2つがある

2.2.3. アナログデータの制御

センサとアクチュエータ

コンピュータはセンサやアクチュエータを用いて、アナログ情報の取得や機械的動作を実現している。

  • センサ … 熱、光などの自然界の情報を電気信号に変換し、A/D変換しコンピュータに伝える
  • アクチュエータ … 電気信号を物理的な動作量に変換する装置。モータやアームなどが例

制御方式

  • シーケンス制御 … 定められた順序や条件に従い、逐次処理を進めていく制御方式
  • フィードバック制御 … 現在の状況を定期的に計測し、目標値とのずれを入力に戻し、出力結果を目標値と一致させようとする制御方式

2.3. 入出力インターフェイス

入出力インターフェイスはコンピュータと周辺機器を接続するために定めた規格のこと。 コンピュータの入出力インターフェスにはさまざまあり、最もポピュラーなのはUSBである。

2.3.1. データ転送方式による分類

入出力インターフェイスはデータの転送方式で以下のように分類される。

方式区分説明
シリアルインターフェイス有線1本の信号線でデータを送る。現在の主流
パラレルインターフェイス有線複数の信号線を同時に使用してデータを送る
ワイヤレスインターフェイス無線有線ではなく無線でデータを送る

2.3.2. 入出力インターフェイスの種類

USB(Universal Serial Bus)

パソコンと各機器を繋ぐ際のもっとも一般的なインターフェスである。 最大127台まで周辺機器を接続でき、ホットプラグ機能に対応している。

USBハブを通してツリー状に接続されます。またUSBには複数の規格がある。

USB

IDE

IDEは内蔵ハードディスクを接続するために規格として使われていたpパラレルインターフェスである。 元々は最大2台までのハードディスクを接続できるという規格であったが、4CD-ROMなどの接続も対応したEIDEとして拡張された。

IDEでは最大4台までの機器を接続が可能。

HDMI

HDMIはケーブル一本で映像/音声/制御データを転送できる規格。

SCSI

SCSIはハードディスクやCD-ROM、MOドライブやイメージスキャナなどの様々な周辺機器の接続に使われていたパラレルインターフェスのこと。

デイジーチェーンと呼ばれる数珠つなぎに機器を接続する方式をとる。 また終端にはターミネータ(終端末抵抗)が必要である。

接続できるのはコンピュータ本体含め最大8台までである。また識別のために機器にID番号を割り当てる。

IEEE1394

i.LinkやFireWireという名前でも呼ばれ、ハードディスクレコーダなどの情報家電、ビデオカメラなどの機器に使われるインターフェス。

リピータハブを用いてツリー状の接続やディジーチェーン方式での接続が可能。

2.3.3. 無線の入出力インターフェイス

BlueTooth

BlueToothは2.4GHz帯の電波を用いて無線通信を行う規格であり、コードレスイヤホンや携帯電話、マウスなど様々な周辺機器をワイヤレスに接続可能である。

通信距離は10mほどであり、障害物があっても関係がない。

IrDA

IrDAは赤外線を用いて無線通信を行う規格であり、携帯電話やノートPC等に使われている。

なおテレビのリモコンは同じく赤外線を用いますがIrDAではない。 また、障害物があると通信できない特徴がある。

2.4. 補助記憶

2.4.1. 主記憶と補助記憶

コンピュータで使うデータを記憶しておく装置には主記憶装置補助記憶装置がある。

  • 主記憶装置 … CPUと直接データがやり取りできる高速記憶装置、電源が切れるとデータが消えてしまう
  • 補助記憶装置 … 電源がなくてもデータを記憶し続けることができる装置

2.4.2. 補助記憶装置の種類

補助記憶装置には磁気ディスク光ディスクフラッシュメモリがある。

種類特徴
磁気ディスク磁性体を塗ったディスクを使用してデータを読み書きするハードディスク(HDD)
光ディスク薄い円盤にレーザ光を当てることでデータを読み書きするCD,DVD,BD
フラッシュメモリ電気でデータの消去、書き込みを行うメモリ、アクセス速度が速いSDカード, USBメモリ、SSD

2.4.3. 磁気ディスク

磁気ディスクは薄い円盤に磁性体を塗った装置のこと。 以下の部品で構成される。

  • 磁気ヘッド … データの読み書きを行う部品
  • アーム … 磁気ヘッドを磁気ディスクの特定カ所へ移動させる部品

磁気ディスクの記録単位

磁気ディスクはセクタトラックシリンダという単位でデータ位置を管理する。

  • セクタ … データを記録する最小単位
  • トラック … セクタをつないでディスクを1周する領域
  • シリンダ … 各ディスクの中心から同じ距離にあるトラックをすべてまとめた領域

セクタ

また以下のHDDの総容量を求めてみる。

パラメータ
シリンダ数1500
1シリンダあたりのトラック数20
1トラックあたりのセクタ数40
1セクタあたりのバイト数512

{(512x4)x20}x1500 = 6.144x10^8 Byte

データの書き込み

磁気ディスクへデータを書き込みする際はセクタ単位で行わる。 また、システムがファイルなどのデータを扱う際は複数のセクタを1つとみなしたブロック単位で書き込むことが一般的となる。

磁気ディスクまでのアクセス時間

アクセス時間は制御装置から磁気ディスクにデータ書き込み命令が出てから、読み書きが終わるまでの時間のこと。 アクセスは以下のステップで行われる。

  1. アームを動かしデータのあるトラックまで移動する(シーク時間)
  2. 磁気ディスクを回転させデータのあるセクタまで移動する(サーチ時間)
  3. アクセスアームの先端についている磁気ヘッドからデータを読み書きする

また磁気ディスク御アクセス時間は以下式で求まる。

アクセス時間 = 位置決め時間 + 回転待ち時間 + データ転送時間

以下のパラメータを用いてアクセス時間を算出を行う。

パラメータ
回転速度5000t/m
平均シーク時間20ms
1トラックあたりの記憶容量15000Byte

平均サーチ時間は{60x1000)ms/5000=12ms, 12ms/2=6ms データ転送時間は15000Byte/12ms = 1250Byte/ms, 5000/1250=4ms より 20ms + 6ms + 4ms = 30ms

フラグメンテーションとデフラグ

ハードディスク上でデータの書き込みと消去を繰り返すと、プラッタの空き容量は分散化される。 また、その状態で新しく書き込みを行うと、書き込み箇所が離散化される。 このようにファイルがあちこちの領域に分けられ断片化する状態フラグメンテーション(断片化) と呼ばれる。

  • フラグメンテーション(断片化) … ファイルがあちこちの領域に分けられ断片化する状態
  • デフラグメンテーション(デフラグ) … 断片化したファイルデータを連続した領域に並べ直してフラグメンテーションを解決するもの

RAID

複数のハードディスクを組み合わせ用いて、仮想的なハードディスクを構築運用する技術がRAIDである。

これらの用途はハードディスクの高速化や信頼性向上に用いられる。 RAIDはRAID0からRAID6までの7種類あり、求める速度や信頼性に応じて各種類を組み合わせて使用できる。

RAIDの種類説明
RAID0(ストライピング)RAID0は一つのデータを2台以上のディスク分散させて書き込む。
RAID1(ミラーリング)RAID1は2台以上のディスクに対して常に同じデータを書き込む。
RAID5RAID5は3台以上のディスクを使って、データと同時にパリティと呼ばれる誤り訂正符号も分散させて書き込む。

2.4.4. フラッシュメモリ

フラッシュメモリは電源を切っても内容を保持できる半導体メモリのこと。 ただし、書き込み回数に制限があるのが特徴。

  • SD/microSDカード … カード型のフラッシュメモリ
  • USBメモリ … USBポートに刺して使うフラッシュメモリ
  • SSD … 衝撃に強く、HDDの代わりに使用される

SSD(Solid State Drive)

SSDは近年HDDの代替として注目を集めてる。 SSDはフラッシュメモリを記憶媒体として内蔵する装置である。

機会的な駆動部分がなく、省電力で衝撃にも強い。また高速に読み書きが可能。 ただしSSDには書き込み回数に上限がある。

2.5. 主記憶装置とキャッシュメモリ

2.5.1. 主記憶の仕組み

主記憶はCPUから直接アクセスできる記憶装置のこと。 主記憶では一定の区画ごとに番号が割り当てられており、その杭区でデータを出し入れする仕組みとなっている。

データを保存する区画番号はアドレスと呼ばれる。

2.5.2. メモリの種類

メモリはコンピュータの動作に必要なデータを記憶する装置である。 半導体メモリには2種類あり、それぞれRAMとROMと呼ばれる。

メモリの種類

2.5.3. RAMの種類

種類リフレッシュ動作速度集積度価格用途
DRAM必要低速安価主記憶装置
SRAM不要高速高価キャッシュメモリ

DRAM

安価で容量が大きい、主記憶装置に用いられるメモリでコンデンサで構成される読み書き速度はSRAMよりも低速であり、記憶内容の維持のためには定期的に再書き込みするリフレッシュ動作が必要である。

SRAM

DRAMよりも非常に高速であるが高価でフリップフロップで構成される。小規模のキャッシュメモリとして用いられる。 記憶内容の維持にリフレッシュ動作は不要である。

2.5.4. リフレッシュとフリップフロップ

リフレッシュ

リフレッシュはDRAMのデータが失われないように電化を補充すること。 これはDRAMがコンデンサに電化を蓄えることでデータを保持することに由来する。 そのため、定期的にDRAMはリフレッシュする必要がある。

フリップフロップ

フリップフロップはSRAMで使用される記憶ができる電気回路のこと。 回路で記憶されるためリフレッシュは必要がない。

2.5.5. ROMの種類

  • マスクROM … 読み出し専用のメモリであり、製造時にデータが書き込まれている
  • PROM … ユーザの手でプログラミングし書き換えれるROMである
    • EPROM … 紫外線でデータを消去し書き換えられる
    • EEPROM … 電気的にデータを消去し書き換えられる
    • フラッシュメモリ … ブロック単位でデータを消去し書き換えられる

2.5.6. キャッシュメモリ

主記憶として使用されるDRAMはCPUと比較すると低速な読み書き速度なためCPUと主記憶の間に高速なSRAMを介在させる、これはキャッシュメモリと呼ばれる。 このキャッシュメモリを複数使うことでCPUがデータやり取りする速度を高速化することができる。

キャッシュメモリ

2.5.7. 実行アクセス時間

実行アクセス時間はキャッシュメモリを使用した場合の平均的なデータへのアクセス時間のこと。また目的のデータがキャッシュメモリに保存されている確率はヒット率と呼ばれる。

実行アクセス時間 = キャッシュメモリのアクセス時間×ヒット率 + 主記憶のアクセス時間 × (1-ヒット率)

2.5.8. 主記憶への書き込み方式

CPUがキャッシュメモリを使用して主記憶にデータを書き込む方式にはライトスルー方式ライトバック方式がある。

ライトスルー方式

ライトスルー方式ではキャッシュメモリへの書き込みと同時に主記憶装置にも同じデータを書き込む

ライトバック方式

ライトバック方式では通常はキャッシュメモリにのみ書き込みを行い、キャッシュメモリから追い出されるデータが発生するとそれを主記憶装置に書き込み更新する

メモリインタリープ

主記憶装置へのアクセスを高速化する技術にメモリインタリーブがある。

この手法では主記憶装置中を複数の区画に分け、複数の区画に同時アクセスすることで連続した番地のデータを一気に読み出す。

2.6. CPU

2.6.1. CPUの性能指標

CPUの性能はクロック周波数、CPI、MIPS等の指標値を用い評価される。

クロック周波数

CPUはクロック周波数に合わせて動作を行い、クロック周波数が大きいほど高性能であると言える。 1周期で命令を1実行できるため、クロック周波数が1GHz、CPIが1クロックである場合10^9の命令を1秒で実行できることを表す。 またクロック周波数を1で割ったものはクロックサイクル時間と呼ばれ、クロック当たりの所要時間を示す。

MIPS

MIPS(Million Instruction Per Second)は1秒間に実行できる命令の数を表したものである。

CPI

CPI(Clock Per Instruction)は1命令当たり何クロック必要かを表すものである。

2.6.2. CPUのアーキテクチャ

CPUのアーキテクチャには高機能な命令を持つCISCと単純な命令のみで構成されるRISCがある。

CISC

CISCはCPUに高機能な命令を持たせることで、一つの命令で複数な処理を実現するアーキテクチャである。 マイクロプログラムをCPU内部に記憶させることで高機能な命令が実現可能。

RISC

RISCはCPU内部に単純な命令しか持たない代わりに、それらをハードウェアの実で実装し、一つ一つの命令を高速に処理するアーキテクチャである。 ワイヤドロジックによりすべての命令をハードウェア的に実装される。

2.6.3. レジスタの種類

CPUには取り出した命令や実行結果を一時的に保存しておくための小さな記憶装置がある。 それはレジスタと呼ばれ、以下のような種類がある。

  • プログラムカウンタ次に実行する命令のメモリ番地を記憶する
  • 命令レジスタ(アキュムレータ) … 主記憶から読みだされた命令を記憶する
  • 汎用レジスタ … アキュムレータの代わりに使用される

2.6.4. CPUの命令実行手順

CPUが解釈する命令は命令部アドレス部から構成され、オペランドと呼ばれるアドレス部に処理対象となるデータの格納場所がアドレス部に指定されている。

またCPUの命令実行手順は以下の通り。

  1. 命令の取り出し(フェッチ)
  2. 命令の解読(デコード)
  3. 実行アドレス計算(オペランド格納場所を求める)
  4. オペランド呼び出し
  5. 命令実行

CPUはこれらの動作を繰り返す。

命令取り出し(フェッチ)

プログラムカウンタが取り出す命令のメモリアドレスを持つ。 プログラムカウンタに従ってアドレスを参照し命令を取り出し、命令レジスタにそれを記憶させる。 それが終わった後プログラムカウンタの値をインクリメントする。

命令解読

命令レジスタに登録された命令は命令部オペランド部で構成される。 命令部は命令の種類を示すコードが、オペランド部には処理対象となるデータを収めたメモリアドレスが格納される。

命令部の中身は命令デコーダへ送られます。 また、命令デコーダは命令部のコードを解読し、制御信号を必要な装置に通知する。

オペランド読み出し

オペランド(処理対象データ)は読み出しデータのメモリアドレスなどが格納され、 これを参照することでデータを読み出し、汎用レジスタに記憶させる。

命令実行

汎用レジスタからALUに処理データを読み出し演算し、その結果を汎用レジスタに書き戻す。

2.6.5. アドレス指定方式

コンピュータは機械語と呼ばれる0と1で構成された命令語を理解し処理する。

命令レジスタに登録された命令のオペランド部には必ずメモリアドレスが入っているとは限らず、基準値からの差分や、メモリアドレスが入っているメモリアドレスなど複雑なものが入っていることもある。

このように何かしらの計算によりアドレスを求める方式は**アドレス修飾(アドレス指定)**と呼ばれる。

即値アドレス指定方式

アドレス部に対象データそのものが入っている方式。

直接アドレス指定方式

アドレス部に対象データの場所を示すアドレス番地が入っている方式。

間接アドレス指定方式

アドレス部の値が指定するアドレス番地に対象データの場所を示すアドレス番地が入っている方式。

指標アドレス指定方式

アドレス部に指標レジスタ番号とアドレス定数を指定する部分がある。

インデックスアドレス指定方式

オペランド部の値にインデックス(指標)レジスタの値を加算することで実効アドレスを求める。

ベースアドレス指定方式

オペランド部の値にベースレジスタの値を加算することで実効アドレスを求める。

相対アドレス指定方式

オペランド部の値にプログラムカウンタの値を加算することで実効アドレスを求める。

2.7. CPUの高速化技術

2.7.1. 並列処理によるCPUの高速化

パイプライン処理

パイプライン処理は複数の命令を並列して実行する処理であり、全体の処理効率が高い処理のこと。 具体的には命令実行サイクルをステージ単位ごとに分け独立実行させ、流れ作業的に命令サイクルが終わる前に新しい命令サイクルを始める方式。

この処理では次々と命令を先読みしていってるため分岐命令が出た際に先読み分が無駄になることがあり、それは分岐ハザードと呼ばれる。

スーパーパイプライン

スーパーパイプラインは処理のレーンのステージをさらに細かいステージに分割することでパイプライン処理の効率アップを図るものである。

スーパースカラ

スーパースカラはパイプライン処理を行う回路を複数持たせることで全く同時に複数の命令を実行できるようにしたものである。

2.7.2. マルチプロセッサによるCPUの高速化

1台のコンピュータに1つのCPUが搭載されているものはシングルプロセッサ、1つのCPUの中に処理を行うコアを複数搭載したものはマルチコアプロセッサと呼ばれる。

2.7.3. CPUの投機実行による高速化

パイプライン処理では分岐処理(ex:if)が発生する。この結果が明確になるまで次の命令を処理できないという問題がある。

そのため分岐予測と呼ばれる、次の命令はどれかを予想して無駄な待ち時間を発生させないようにする処理がある。 この処理に基づいて分岐先の命令を実行する手法が投機実行である。

最終更新 2025.01.19: Added ss command (683d062)