コンピュータアーキテクチャⅠ コンピュータアーキテクチャとは? 辞書を引くと…, 「アーキテクチャ(architecture)」: 1. 建築術, 2. 建築様式, 3. 建物, 4. 構造, 構成 コンピュータアーキテクチャとは, 「コンピュータの論理的構造」のこと コンピュータとはどのような機械か? 「あらかじめ指示されたことを正確に高速に行う機械」 = プログラム(program:ある物事の進行状態についての 順序・組み合わせ・筋などのこと。及び、それを書いたもの。 ) コンピュータプログラム= コンピュータに一定の仕事を行わせるための コンピュータ固有の命令(instruction)の集まり 「命令」とは ? コンピュータの内部状態を変更するための指示 z データを持ってこい z データを保存しろ z 足算しろ,引算しろ,掛算しろ,... z 二つの数が等しいかどうか判断しろ z どっちの数が大きいか判断しろ z ... 1 電卓とコンピュータ : 何が違うか z 電卓(calculator) – データ入力と計算手順を人間が操作する → 計算速度の限界 z コンピュータ(computer) あらかじめデータと計算の手順(命令)を記憶装置(メモリ) に格納しておき,命令を順番に一つずつ取り出して,命令 を実行する。 プログラム内蔵(stored program)方式 / Von Neumann方式 世界最初のプログラム内蔵方式コンピュータ : EDSAC(ケンブリッジ大学,1949年) パソコンの中身 マザーボード プロセッサ(CPU) 主記憶(メモリ) 2 コンピュータの構成要素 プロセッサ (CPU) メモリバス 主記憶 (メモリ) 入出力バス 入力装置 出力装置 キーボード マウス ディスプレイ プリンタ 補助記憶装置 ハードディスク フロッピーディスク CD、DVD z プロセッサ : CPU(Central Processing Unit,中央処理装置)とも呼ぶ z 主記憶 : メインメモリあるいは単にメモリとも呼ぶ z バス : 信号線の束 プロセッサ(processor:処理装置) z 演算や実行制御(条件判断,繰返しなど)を行う z プロセッサには命令(演算命令,条件判断命令など)が定義されている – プログラムは命令を組み合わせて作られる – 命令は0と1の組合せによって表現される(機械語:Machine Language) プロセッサLSI Large Scale Integrated circuit 3 プロセッサの命令 z 主記憶とレジスタ間のデータの移動命令 z レジスタ同士の演算(算術演算,論理演算)命令 z 条件判断(演算結果の比較)命令 z 制御の移行命令(ジャンプ命令,サブルーチン呼出し) z その他 プロセッサの命令はきわめて単純な動作しか行わない! そのような単純な動作の命令を組み合わせて,一定の動作を させるのが「プログラム / ソフトウェア」。 ※商用のソフトウェアは何百万,何千万命令からなる。 メモリ(memory) ¾ 2進数(0と1)で表現されたプログラム(機械語)やデータを記憶する素子 記憶場所の指定 番地 パッケージ 端子 メモリチップ メモリIC 0 01001010 1 11010111 2 10001111 3 00110110 コネクタ (メモリスロットに接続) … … PSD メモリ(1Gbyte) 999999998 10011001 999999999 01101010 命令 / データがメモリに 格納される 4 コンピュータの構成要素 演算データを保持 実行する命令の 番地を保持 プロセッサ メモリ(1GByte) 0番地 R0 R1 R2 R3 1番地 レジスタ プログラムカウンタ(PC) 命令,データ 2番地 命令レジスタ(IR) 命令解読器(ID) ALU PCの指す番地から 読み出した命令を 保持 計算を実行 命令レジスタの 内容を解読 999999999 番地 プログラムの命令と データを格納 PC : Program Counter IR : Instruction Register ALU : Arithmetic Logical Unit ID : Instruction Decoder コンピュータの動作 z プロセッサはメモリに格納された「命令」を順番に実行していく ① メモリから命令を読み出してくる。 【命令読出し(Fetch)】 ● 何番地から命令を読み出すか? ⇒ プロセッサ内部の「プログラムカウンタ(PC)」により指定する 次の命令の実行に備えてPCの値を増やす。 ● ② 読み出した命令を解読する。 【命令解読(Decode)】 ③ 命令を実行する(計算を行う)。【命令実行(Execute)】 ④ 計算結果を格納する。【結果格納(Store)】 命令とデータ データ (計算結果) 5 コンピュータの動作 主記憶(1GByte) プロセッサ 0番地 R0 R1 R2 R3 1番地 レジスタ プログラムカウンタ(PC) 2番地 命令, データ 命令レジスタ(IR) 命令解読器(ID) ALU 230-1= 1073741823 番地 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新 2.命令の解読:命令レジスタの内容を解読 3.命令の実行:解読結果に従って実行 4.格納:実行結果をレジスタに格納 コンピュータの動作(1-1) プロセッサ R0 R1 R2 R3 実行する命令 の番地 主記憶 PC レジスタ 100 IR add R0, R1, R2 add R0, R1, R2 100番地 sub R0, R2, R0 101番地 sw 102番地 R0, 32(R3) ID PCの指す番地から 読み出した命令を 保持 ALU 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新 2.命令の解読:命令レジスタの内容を解読 3.命令の実行:解読結果に従って実行 4.格納:実行結果をレジスタに格納 6 メモリ内の命令は実際には2進数 (0と1の並び)によって表現される 0110010100001000 1101101111010111 0000100100101010 ・・・ コンピュータの動作(1-2) プロセッサ R0 R1 R2 R3 次に実行する命 令の読出しに備 えてPCを更新 PC レジスタ 101 IR add R0, R1, R2 主記憶 add R0, R1, R2 100番地 sub R0, R2, R0 101番地 sw 102番地 R0, 32(R3) ID ALU 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新する。 2.命令の解読:命令レジスタの内容を解読 3.命令の実行:解読結果に従って実行 4.格納:実行結果をレジスタに格納 コンピュータの動作(2) プロセッサ R0 R1 R2 R3 主記憶 PC レジスタ 101 IR add R0, R1, R2 add R0, R1, R2 100番地 sub R0, R2, R0 101番地 sw R0, 32(R3) 102番地 ID 命令解読 ALU 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新する。 2.命令の解読:命令レジスタの内容を解読する。 3.命令の実行:解読結果に従って実行 4.格納:実行結果をレジスタに格納 7 取得した命令を解読 (R1とR2を加算し,R0へ格納) コンピュータの動作(3) プロセッサ R0 R1 R2 R3 主記憶 PC レジスタ 101 IR add $R0, $R1, $R2 add R0, R1, R2 100番地 sub R0, R2, R0 101番地 sw R0, 32(R3) 102番地 ID 命令解読 加算 ALU 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新する。 2.命令の解読:命令レジスタの内容を解読する。 3.命令の実行:解読結果に従って実行する。 4.格納:実行結果をレジスタに格納 コンピュータの動作(4) プロセッサ R0 R1 R2 R3 主記憶 PC レジスタ 101 IR add $R0, $R1, $R2 add R0, R1, R2 100番地 sub R0, R2, R0 101番地 sw R0, 32(R3) 102番地 ID 命令解読 加算 ALU 1.命令の読出し:PCが指す番地の内容を主記 憶から命令レジスタへ読み出す。同時に,次 命令の読出しに備えてPCの値を更新する。 2.命令の解読:命令レジスタの内容を解読する。 3.命令の実行:解読結果に従って実行する。 4.格納:実行結果をレジスタに格納する。 8 以降,1~4の繰返し・・・ プロセッサの時間動作を決めるもの =動作周波数(クロック周波数) 周波数:1秒間の繰返し回数(単位: Hz(ヘルツ)) 時間 クロック信号 (コンピュータの メトロノーム) サイクル時間 1秒間に10億回の繰返し → 10億Hz=109Hz=1GHz サイクル時間= → 1 動作周波数 サイクル時間 1 =10-9=1ns(ナノセカンド) 109 1秒間に 5億回の繰返し 1 → 5億Hz=500×106Hz=500MHz → 500×106 =0.002×10-6=2×10-9 =2ns(ナノセカンド) 1ns という時間 : 光が約33cm進む距離(光の速度30万km/秒) 量と単位の表し方 接頭語 (補助単位) 単位例 記号 フェムト f 1兆分の1 ピコ p 10-9 10億分の1 ナノ n 10-6 100万分の1 マイクロ μ μs 10-3 1000分の1 ミリ m ms 10-15 10-12 100 =1 ps ns bit Byte Hz 103 1000 (210) キロ k kbit kByte kHz 106 100万 (220) メガ M Mbit MByte MHz 109 10億 (230) ギガ G Gbit GByte GHz 1兆 (240) テラ T Tbit TByte THz 1000兆 (250) ペタ P 1012 1015 9 s 動作周波数(Hz),時間(s)を表す単位 (コンピュータの動作速度の表現) : 1KHz=1x103Hz(1000ヘルツ) : 1MHz=1x106Hz (100万ヘルツ) : 1GHz=1x109Hz (10億ヘルツ) : 1THz=1x1012Hz (1兆ヘルツ) • • • • KHz(キロヘルツ) MHz(メガヘルツ) GHz(ギガヘルツ) THz(テラヘルツ) • • • • ミリセカンド(ms) : マイクロセカンド(μs): ナノセカンド(ns) : ピコセカンド(ps) : 1ms=1x10-3秒(1000分の1秒) 1μs=1x10-6秒(100万分の1秒) 1ns=1x10-9秒(10億分の1秒) 1ps=1x10-12秒(1兆分の1秒) プロセッサの時間動作を決めるもの =動作周波数(クロック周波数) 1命令の実行サイクル 時刻 1 時刻 2 時刻 3 時刻 4 命令実行 結果格納 クロック信号 (コンピュータの メトロノーム) 命令読出し 命令解読 500MHz動作 の場合 2ns 2ns 1GHz動作 の場合 1ns 2ns 2ns 8ns(=8×10-9 秒) = 1命令が8nsで実行できる 1ns 1ns 1ns 4ns(=4×10-9 秒) = 1命令が4nsで実行できる 10 コンピュータの何が凄いのか コンピュータの命令はきわめて単純な動作しか実行できない。 しかし,個々の動作はもの凄く高速に実行できる。 ex. 動作周波数1GHzのコンピュータ:4nsに1命令=1sに2.5億命令 (秒) 単純な動作でも何千,何万,何十万,何百万… と組み合わせれば, 「たくさんの便利なこと」ができる。 「たくさんの便利なこと」:文書処理,表計算,コンピュータ通信, 機器(家電品,自動車など)の制御,… 11
© Copyright 2024 Paperzz