情報の表現
ビット
- 「1」や「0」のように、コンピュータで扱う情報の最小単位
- nビットの情報は、2^n 通りの情報を表現できる
バイト
- 8ビットの情報のまとまり
- 10001111 のような8桁の情報を1つの単位として扱う(ビットパターン)
大きな数値を表す接頭語
- K(キロ):10^3
- M(メガ):10^6
- G(ギガ):10^9
- T(テラ):10^12
小さな数値を表す接頭語
- m(ミリ):10^-3
- μ(マイクロ):10^-6
- n(ナノ):10^-9
- p(ピコ):10^-12
文字の表現
- ASCIIコード:英数字・記号・制御文字などを7ビットで表現
- Unicode:世界中の文字を表現するための文字コード
- シフトJIS:ASCIIコードに日本語を追加した文字コード
- EUC:Unix・Linuxで使われる文字コード
確認問題
1. 32ビットの情報で表現できる情報が24ビットで表現できる情報の何倍か?
2^32 / 2^24 = 2^8 = 256 倍
2. 期間=2.5*工数^1/3 の場合、工数が4,096人月の場合の期間を求めよ。
4096 = 2^12
2.5 _ (2^12)1/3 = 2.5 _ 2^4 = 40
コンピュータの構成
コンピュータの五つの装置
- 制御・演算・記憶・入力・出力装置
プログラム記憶方式
- 主記憶に配置されたプログラムの命令を、CPUが順番に取り出して、解読・実行する方式
主記憶
- CPUが直接アクセスできる記憶装置
確認問題
1. 主記憶に配置されたプログラムの命令を、CPUが順番に取り出して、解読・実行する方式は何か?
プログラム格納方式
CPU
クロック周波数
- 各回路間で同期を取るための周期的信号(クロック信号)に合わせて各回路が動作している
- クロック信号が1秒間に繰り返される回数のこと(単位:Hz)
- クロック周波数3GHzの場合、1秒間に30億回のクロック信号が発生する
- CPUのクロック周波数を2倍にすれば、システム全体も2倍になるわけではない
- クロック周波数が高いほど、発熱量も増加して放熱処理が問題となる
内部クロック
- CPU内部で発生するクロック信号
外部クロック
- CPUと各装置を結ぶ経路の周波数
バス
- コンピュータ内の装置間を結ぶ通信経路
確認問題
1. PCのクロック周波数について
- CPU内部のクロック周波数(内部クロック)と、主記憶を接続するシステムバスのクロック周波数は同一でなくても良い
CPUの動作原理
レジスタ
- CPU内部にあるメモリ領域
- 高速にアクセス可能なデータの保持や操作に使用される
命令語
- コンピュータのプログラム内で、実行する特定の操作を指示するためのコード
$ LOAD R1, 100 ; メモリアドレス100からデータをR1に読み込む
$ STORE R1, 200 ; R1の内容をメモリアドレス200に書き込む
xxx
命令実行サイクル
- 命令の取り出し
- 命令の解読
- 実行アドレスの計算
- オペランド(命令が実行される際に使用されるデータやアドレス)の取り出し
- 命令の実行
- 演算結果の格納
アドレス指定方式
即値アドレス指定
- 命令のオペランドとして、その命令自体に直接値を含める方法
$ LOAD R1, #100 ; レジスタR1に即値100を読み込む
直接アドレス指定
- 命令のオペランドとして、メモリ内の特定のアドレスを直接指定する方法
$ LOAD R1, 100 ; メモリアドレス100からデータをR1に読み込む
間接アドレス指定
- 命令のオペランドとして、別のメモリアドレスに格納されたアドレスを使用する方法
$ LOAD R1, (200) ; メモリアドレス200に格納されたアドレスからデータをR1に読み込む
相対アドレス指定
- プログラム内で現在の位置や参照点からの相対的な位置を指定する方法
$ JUMP 100 ; プログラムの100番地にジャンプする
指標アドレス指定
- プログラミングやコンピュータアーキテクチャにおいて、配列や構造体の要素にアクセスする際に使用される方法
int array[5] = {1, 2, 3, 4, 5};
int index = 2;
int value = array[index];
基底アドレス指定
- 配列や構造体などのデータ構造の先頭アドレスを指定する方法
struct example {
int a;
int b;
};
struct example my_struct;
my_struct.a = 10;
my_struct.b = 20;
確認問題
1. 図のように参照するアドレスを格納しているアドレスを指定する方式は何か?
間接アドレス指定
[ アドレス reg (AR 20) ] ---> [ 主記憶 (アドレス 20) ] ---> [ 25 ]
[主記憶(アドレス25)] ---> [レジスタ reg (DR 25)]
2. プロセッサによってフェッチされた命令の格納順序
# プロセッサによってフェッチされた命令の格納順序
[ 主記憶 ] ---> [ 命令レジスタ(IR) ] ---> [ プロセッサ(CPU) ]
(命令の位置)