- Published on
コンピュータ用語
- Authors
- Name
- Kikusan
Refs
ハードウェア
マイコン(ICむき出しの制御用コンピュータ)が動作するのに必要な部品は以下のチップ。
- CPU : プログラムを解釈・実行する,
- メモリー : プログラムやデータを記録
- I/O : コンピュータと外部装置を接続
- その他補助装置 ex) クロックジェネレータ、入出力装置
I/O <-> CPU <-> メモリー
チップは基本的にピンに電圧がかかっているかで0か1かを判断する。
CPUとメモリーがA0A7の8本のアドレス・ピンで繋がっているとすると、D7の8本のデータ・ピンで繋がっているとすると、
CPUから指定できるアドレスは00000000 ~ 11111111, つまり256通り。
CPUとメモリーがD0
一度に入出力できるデータは8bit。
同じピンから複数のチップに配線することもでき、
その場合はどこにアクセスするかを制御するピンを0か1かにすることでアクセス先を決める。
これらが一つのチップに詰め込まれたものをワンチップマイコンという
CPU
CPU : 中央演算装置, 以下要素で構成される
- レジスタ : データ格納領域
- 制御装置 : コンピュータを制御する
- 演算装置 : レジスタに読みだされたデータを演算する
- クロック : クロック信号を発生させるもの
レジスタ :
CPU及びI/Oの中でデータを記憶する部分。
CPUのレジスタは演算も行う。どのようなレジスタを持っているかはCPUによって違う。
- デコーダ : 命令を解読し、命令に応じた制御信号を生成する
- アキュムレータ : 演算の中心
- フラグレジスタ : 演算の正負の情報を持つ
- プログラム・カウンタ : CPUが次に実行するメモリーアドレスを保持する
- スタックポインタ : サブルーチンの戻り先アドレスを保持
- 命令レジスタ : 命令そのものを格納する
- メモリアドレスレジスタ : アクセス対象のメモリアドレスを格納する
- メモリデータレジスタ : メモリと入出力するデータの内容を格納する
- 汎用レジスタ : 演算対象やアドレス情報など様々な情報を格納する
- DMA : CPUを仲介せずに周辺機器が直接メイン・メモリーとデータ転送を行うこと。
- クロック周波数 = プロセッサの命令実行頻度
- CPI : Cycles Per Instruction : 1命令を実行するのに必要な平均クロック数
- MIPS : Million Instructions Per Second : 1秒間に実行できる平均命令数
- 命令パイプライン : 命令を並列に実行する高速化技術
- スーパスカラ : プロセッサ内に複数のパイプラインを実行させる高速化技術
- マルチプロセッサ : 1台のコンピュータに複数のCPU等を搭載すること
- マルチコアプロセッサ : 演算装置が複数あるCPUのこと
- ESD : ElectroStaticDischarge : 静電気で半導体素子が破壊されること
- SoC : System on a Chip : ボート上で実現していたグラフィクスやメモリやプロセッサを1チップに集約したLSI(高集積回路)
メモリーとディスク
RAM : Random Access Memory は主記憶の作業域を構築するメモリ
DRAM : 高集積・安価・遅い・用途は主記憶・リフレッシュ必要 SRAM : 低集積・高価・速い・用途はレジスタ/キャッシュメモリ・リフレッシュ不要
ROM : Read Only Memory だけど不揮発メモリのこと
フラッシュメモリ : SDカードやUSBメモリのこと、ブロック単位でデータの消去を行う。
プログラムが記憶装置に格納されて順次呼び出しされることをストアド・プログラムという。
以前は配線を変えてプログラムを変えていた。
プログラムはディスクからメモリーにロードされてから実行される。
- キャッシュメモリ : 主記憶とプロセッサの間で利用頻度の高いプログラムやデータをもつこと。CPU内やマザボにある
- 実行アクセス時間 : (主記憶アクセス% × 主記憶速度) + (キャッシュメモリアクセス% × キャッシュメモリ速度)
- ライトスルー方式 : キャッシュメモリの更新と同時に主記憶のデータも更新する
- ライトバック方式 : 通常はキャッシュメモリのみ更新し、ブロックが追い出されるタイミングで主記憶に反映する
- ディスクキャッシュ : メモリーにディスクのデータを持っておいて二度目のアクセスからは高速化すること。
- 仮想記憶 : ディスクの一部を仮想的にメモリーとして扱う。メモリ容量が足りないときに使う。
実際は実メモリーにプログラムをロードしなければならないので、ページング方式やセグメント方式で仮想記憶とデータをスワップしながらプログラムを実行する。 - ページング方式 : 一定の大きさのページにプログラムを分割して置き換えすること。
ページイン : メモリーにページを読み出すこと。
ぺージアウト : ディスクにページを書き込むこと。 - スラッシング : ページ置き換えが頻発して性能が急激に低下すること
- 磁気ディスク : 磁気ディスクに磁気ヘッドでデータを読み書きする補助記憶装置。
- SSD : フラッシュメモリでできた補助記憶装置。
マシン語
CPUが解釈、実行できるのは二進数で書かれたマシン語だけ。メモリーに記憶する。
同じ01010011というマシン語でも、CPUの種類によって解釈は違う。 マシン後を英語に読み替えたのがアセンブリ言語で、オペコードとオペランドで記述する。
- オペコード : 「〇〇せよ」という命令。70種類くらいしかない。これがCPUにできることの全て。
- オペランド : 「△△を」を表すもの。レジスタ、メモリー・アドレス、I/Oアドレスや数値を記述する。
命令の実行過程 :
- 命令フェッチ : 命令の取り出し
- デコード : 命令の解読
- オペランドアドレス算出 : オペランドアドレスが修飾されている場合があるので、有効アドレスを探す
- オペランドフェッチ : レジスタにオペランドを取り込む
- 実行
- ハンド・アセンブル : CPUのドキュメントに従ってアセンブリ言語をマシン語に翻訳すること (手動)
- 割り込み処理 : I/Oからの割り込み信号をCPUが受けると、データ入力を行う部分にプログラムがジャンプする。このプログラムはBIOSやOSがもつ。
2の補数
マイナスの数値を表すには、数値の二進数をすべて反転させ、+1をする。
減算をコンピュータは加算でおこなうため。
2の補数表記のマイナスの値の最上位桁(符号ビット)は1になる。プラスの場合は0。
4 -4
-> 0100 + 1011 + 0001
-> 0100 + 1100
-> 10000 -> 0000 -> 0
プログラムの数値型が 065535 だったり、 -3276832767 だったりするのは、2の補数を使うか否かで分かれている。
シフト演算
- 算術左シフト : 0010 * 4をした場合、左に2ケタずらすと乗算ができる。
空いた下位桁には0が入る。 - 算術右シフト : 0100 / 4をした場合、右に2ケタずらすと除算ができる。
空いた上位桁にはシフト前の符号ビットの値を入れる。
なお、上位桁または下位桁があふれることを「桁あふれ」、「オーバーフロー」といい、そのままなくなる。
論理シフト(数値計算でない)の場合は、空いた桁には0が入る。(電光掲示板の文字が一桁進むイメージ)
浮動小数点数
0.010(2) = 0.125 といった具合に小数点の位置を変えて小数は保存する。
正確に値を示すことができないので、コンピュータは小数の計算を間違える。
± 仮数 × 基数指数 で表す。基数は2。
- float型: 単精度浮動小数点数 : 32ビットで表す。指数が8ビット、仮数が23ビット。
- double型: 倍精度浮動小数点数 : 64ビットで表す。指数が11ビット、仮数が52ビット。
1の位が0になるように表す。 1の位は決まっているので小数だけ保持すれば仮数部はOK。 1011.0011 = 1.0110011 × 103
指数部はイクセス表現を使い、floatの場合 01111111(127) を0として表す。-127乗~128乗を表せる。
絶対に間違えたくない計算は、整数で計算してから割り直せばいい。
16進数
2進数では桁数が大きすぎる場合、16進数が使える。先頭に 0x がついていれば16進数。13 = 0xd = 0b1101
実行可能プログラム
- コンパイラ : ソースコードをCPUが解釈できるマシン語に翻訳するプログラムのこと
CPU,OS,言語の種類が異なれば、コンパイラの種類も異なる。 - リンカー : 複数のオブジェクト・ファイル(コンパイル後のファイル)を結合するプログラム
- インタプリタ : 実行時にソースコードを1行ずつ解釈するプログラム
BIOSとブートストラップ
- Basic Input/Output System : BIOS :ROMに記憶され、あらかじめコンピュータ本体に内蔵されている。
I/O の基本制御プログラムのほか、「ブート・ストラップ・ローダー」を起動する機能を持っている。 - ブート・ストラップ・ローダー : 起動ドライブの先頭領域に記憶された小さなプログラムで、ハードディスクに記憶されたOSをメモリーにロードして実行する。
ソフトウェア
OS : プログラムをロードして使う機能、ハードウェア制御プログラム、言語プロセッサ、様々なユーティリティからなるプログラム。
ハードウェアを意識せずにプログラムが書けるのは、OSがあるから。システム・コール : OSのハードウェア制御機能を呼び出すこと。
カーネル : OSの中核部分, プロセッサなどハードウェアリソースを管理する。
プロセス : プログラムの実行実体。待ち状態 → 実行可能状態 ⇄ 実行状態 → 待ち状態 を状態遷移する。
UNIX : マルチユーザ, マルチプロセスのOS, バックグラウンドプロセスをデーモンと呼ぶ。
プリエンプティブ方式 : 時間などで強制的に別プロセスにプロセッサを割り当てる。
逆はノンプリエンプティブ方式で、強制的な切り替えを行わない。