第 回マイクロプロセッサのしくみ マイクロプロセッサの基本的なしくみについて解説する. -1 マイクロプロセッサと周辺回路の接続 制御バス プロセッサ データ バス アドレス バス メモリ 周辺インタフェース バスの基本構成 Fig.-1 バスによる相互接続は, 現在のコンピュータシステムのハードウェアを特徴づけている. バス (Bus): 複数のユニットで共有される信号線システム内の データの通り道 として使用パラレルバス :n ビットを n 本の信号線で伝送 現在シリアルバス :1 本の信号線で複数ビットを伝送 データの流れプロセッサ メモリプロセッサ 周辺インタフェースメモリ 周辺インタフェース の間のデータはバスを介して行われる. バスの基本構成データバスアドレスバス制御バスから構成されている. データバス : 語長だけの本数 (8,16,32,64 等 ), 双方向,3 ステートバッファ * で駆動アドレスバス : メモリや I/O のアドレスを指定.3 ステートバッファで駆動 1 6 bit 2 1 6 =2 6 2 1 0 =6 4 K (2 10 =1024=1 K ) 2 4 bit 2 2 4 =2 4 2 2 0 =1 6 M (2 20 =1024 2 =1 M) 3 2 bit 2 3 2 =2 2 2 3 0 =4 G (2 30 =1024 3 =1 G ) 制御バス : データの流れの方向や入出力のタイミングを制御する * 3 ステートバッファ :0,1 に加えてハイインピーダンス ( 電子的に接続が切れている状態 ) という 3 つの出力を持つ駆動回路 周辺機器インタフェース (I/O) にもアドレスがある分離 I/O: アドレスバスのデータの他に I/O とメモリを区別するための信号を制御バスの中に用意する. メモリマップド I/O:I/O とメモリを区別せず, 同一の空間内にマップする. マイクロプロセッサとインタフェース講義資料 -1
-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR MEMW IOR IOW UBE READY Fig.-2 16 ビットマイクロプロセッサのピン配置の例 ( 信号名の無いピンは NC,Not Connected) 現在のパーソナルコンピュータに採用されているプロセッサのピン数は非常に多い.Fig.-2 は, 原理を説明するための仮想的なプロセッサのピン配置であり, 実際のものよりピン数は少ない. Fig.-2 のプロセッサは, 語長 (1つの単位として扱えるデータのビット数) が 16, 指定できるアドレスが 20 ビットのものである. 各ピンの機能と動作について以下に説明する.( 付録 A1 参照 ) GND: すべての信号の基準となる接地端子.[ 入力 ] Vcc: 電源端子, ボルトが標準だったが, 最近は 3.3 ボルトなどの製品もある.[ 入力 ] CLK: クロック信号を入力する.[ 入力 ] A 0 ~A 19 : アドレスバス出力. アドレスを指定する. この例では 20 ビットアドレスとする.[ 出力 ] D 0 ~D 1 : データバス. データを読み書きするために使う. これは双方向の信号で, 入力と出力の両方に使用する.[ 入力 出力 ] MEMR : メモリからの読みだし (memory read) のためのストローブ信号.[ 出力 ] MEMW : メモリへの書き込み (memory write) のためのストローブ信号.[ 出力 ] IOR :IO からの読みだし (IO read) のためのストローブ信号.[ 出力 ] IOW :IO への書き込み (IO write) のためのストローブ信号.[ 出力 ] UBE : バイト単位の読みだしのための制御信号 (upper byte enable).[ 出力 ] READY: 動作確認信号.[ 入力 ] -2 マイクロプロセッサとインタフェース講義資料
-3 外から見た動作 1) 電源とクロック信号が必要 プロセッサは外部から電源とクロック信号の供給を受けて働く. クロック信号は, 水晶発振器などで発生される安定な周波数の方形波である. プロセッサはこのクロック信号と同期して動作する. 例えば, パーソナルコンピュータの CPU の性能仕様 ( スペック ) として Celeron 1.4GHz などと記載されることがあるが, これはクロック信号の周波数 ( クロック周波数 ) が 1.4GHz ということである. バスとの接続マイクロプロセッサはバスと接続するための入出力を持つ.Fig.-2 の例では,GND,Vcc,CLK 以外はバス用のピンである. D 0 ~D 1 がデータバス,A 0 ~A 19 がアドレスバス,MEMR,MEMW,IOR, IOW, UBE,READY が制御バスである. タイミングが大事バスの動作では, 論理回路やメモリの動作の遅れ時間を考慮する必要がある. バスには様々な遅れ時間の部品が複数個接続されている. そこで, 制御バスの信号は, データの読み書きのタイミングを取るためにも使われる.Fig.-2 のプロセッサでは,Strobe と Ready という 2 種類の信号を用いている. 演習問題 1. 1) 周波数 200[MHz] のクロック信号の周期 (1 クロックサイクルの時間 ) を求め,ms,μs, 及び ns などの単位を用いて答えよ. 2)200MHz で動作するプロセッサを使って, 命令 A, 命令 B, 及び命令 C の 3 種類から構成されてプログラムを実行する 各命令数及び実行に必要なクロックサイクル数は以下のとおりである 表 -1 プログラム内の各命令数及び実行に必要なクロックサイクル数 命令の種類 命令数 実行に必要なクロックサイクル数 命令 A 100,000 1 命令 B 00,000 2 命令 C 300,000 4 プログラムの実行に必要な演算時間を求め,1) と同様の単位を用いて答えよ. 解答欄 1) 2) マイクロプロセッサとインタフェース講義資料 -3
2. 1) アドレス 20 ビットのプロセッサが直接にアクセス ( 読み書き ) できるメモリの最大容量を求めよ. ただし,1 つのアドレスに 1 バイトを割り当てる通常のメモリ構成とし, 容量は K バイト,M バイトなどの慣用的な単位を用いて答えよ. 解答欄 2) 付録 A1 のバスシステムと同様な働きをする 16 ビットマイクロプロセッサの a) タイプのバスシステムについて, 以下のような動作を行う 1.I/O 入力 : アドレス 0000 番地の外部入力ポートからデータを入力する 2. メモリ読み出し :RAM のアドレス 00F0 番地からデータを読み出す 3. 演算 : マイクロプロセッサが演算を行う 4. メモリ書き込み : マイクロプロセッサが演算した結果を RAM アドレス BF01 番地に書き込む.I/O 出力 : アドレス 0001 番地の外部出力ポートにデータを出力する 以上の各バスシステムの動作を示したタイミングチャートが Fig.-3 である この中で空欄になっている部分の信号及びアドレスを埋めよ I/O 入力メモリ読み出し演算メモリ書き込み I/O 出力 クロック アドレス 0000 2 - BF01 4 MEM/ IO 1 RD WR 3 Fig.-3 バスシステムの動作を示すタイミングチャート メモリ読み出しサイクルでは,CPU はアドレスバスに読みたいメモリの番地を出力し, 同時に MEM/ IO を 1 にしてメモリに対する読み書き動作 ( アクセス ) であることを指示する アドレスデコーダの出力が安定した時点で読み出し動作のタイミングを伝える信号 RD を 0 にする この信号によりメモリは指定された番地の内容をデータバスに出力し,CPU はこれを読み込む. 読み込みの間は RD を 0 に保持する 書き込みの場合は WR を使う -4 マイクロプロセッサとインタフェース講義資料
解答例演習問題 1. 1) 周波数 200[MHz] のクロック信号の周期 (1 クロックサイクルの時間 ) を求め,ms,μs, 及び ns などの単位を用いて答えよ. 2)200MHz で動作するプロセッサを使って, 命令 A, 命令 B, 及び命令 C の 3 種類から構成されてプログラムを実行する 各命令数及び実行に必要なクロックサイクル数は以下のとおりである 表 -1 プログラム内の各命令数及び実行に必要なクロックサイクル数 命令の種類 命令数 実行に必要なクロックサイクル数 命令 A 100,000 1 命令 B 00,000 2 命令 C 300,000 4 プログラムの実行に必要な演算時間を求め,1) と同様の単位を用いて答えよ. 解答欄. 1) マイクロプロセッサの動作周波数を f とし クロック信号の周期 T を求める T = 1 1 9 = = 10 = [ns] 6 f 200 10 2) 全部の命令を実行するために必要なクロックサイクル数を C とすると, C 1 10 + 2 10 + 4 3 10 = 23 10 [ クロック ] = となるので, プログラム実行時間 P は P = C T = (23 10 ) ( 10 9 ) = 11 10 4 = 11. 10 3 = 11.[ms] 2) の解説まず 各命令を実行するの必要なクロックサイクル数を求める プログラム内の各命令を実行するのに必要なクロックサイクル数は ( 命令数 ) ( 実行に必要なクロックサイクル数 ) である したがって, プログラムを処理するのに必要な命令を処理するのに必要なクロックサイクル数 C は 上記で求めた各クロックサイクル数を加算する つまり C = ( 命令 Aの実行に必要なクロックサイクル数 ) ( 命令 Aの数 ) + ( 命令 Bの実行に必要なクロックサイクル数 ) ( 命令 Bの数 ) + ( 命令 Cの実行に必要なクロックサイクル数 ) ( 命令 Cの数 ) = 1 10 + 2 10 + 4 3 10 = 23 10 [ クロック] このマイクロプロセッサの周期は ns なので プログラムを処理するのに要する時間 P はC と1で求めたT の積で求められるので P = C T となる 演習問題 2. 1) アドレス 20 ビットのプロセッサが直接にアクセス ( 読み書き ) できるメモリの最大容量を求めよ. ただし1つのアドレスに1バイトを割り当てる通常のメモリ構成とし, 容量は K バイト,M バイトなどの慣用的な単位を用いて答えよ. 解答欄 20 ビットアドレスを扱えるマイクロプロセッサがアクセスできるメモリ空間の容量は, アドレス長を n とす n ると 2 [ ワード] であるから, 2 20 = 1M[ ワード ] である さらに,1 つのアドレスには 1 バイトのデータを格納するので, メモリの最大容量は ( アクセスできるデータの最大数 ) (1 ワードあたりのデータ量 ) =1M[ ワード ] 1[ バイト / ワード ]=1M[ バイト ] となる マイクロプロセッサとインタフェース講義資料 -
2) 付録 A1 のバスシステムと同様な働きをする 16 ビットマイクロプロセッサの a) タイプのバスシステムについて, 以下のような動作を行う 1.I/O 入力 : アドレス 0000 番地の外部入力ポートからデータを入力する 2. メモリ読み出し :RAM のアドレス 00F0 番地からデータを読み出す 3. 演算 : マイクロプロセッサが演算を行う 4. メモリ書き込み : マイクロプロセッサが演算した結果を RAM アドレス BF01 番地に書き込む.I/O 出力 : アドレス 0001 番地の外部出力ポートにデータを出力する以上の各バスシステムの動作を示したタイミングチャートが Fig.-3 である この中で空欄になっている部分の信号及びアドレスを埋めよ I/O 入力メモリ読み出し演算メモリ書き込み I/O 出力 クロック アドレス 0000 2 00F0 - BF01 4 0001 MEM/ IO 1 RD WR 3-6 マイクロプロセッサとインタフェース講義資料
付録 A1 バスの動作タイミング Strobe 信号 : バスに接続されているユニットに, 読み出しや書き込みのタイミングを知らせるためにプロセッサが出力する信号. L H( または H L) と変化する エッジ でタイミングを知らせる. 立ち上がりと立ち下がりのどちらで動作するかは, 信号の表記法でわかる MEMR, MEMW, IOR, IOW : 立ち下がりエッジで外部のメモリなどを動作させることを示している 1. Ready 信号 : 外部機器の準備完了を知らせるためにプロセッサに入力する信号 メモリ読出しサイクルメモリ書込みサイクル I/O 読出しサイクル 1 クロック後に切替わり クロックアドレス MEM/IO RD WR アドレス MEM/IO RD/WR STB (a) (b) バスの読出し書込み制御信号の構成と動作例 Fig.A-1 バスの動作タイミング バスの動作タイミング例 (Fig.A-1 はバスの信号の使い方を表すタイミングチャートの例 ) クロック : クロック波形, アドレス : アドレスバスの信号波形 ( 信号が変化する時点がわかるような表現になっている )MEM/IO, RD, WR ( または RD/ WR, STB ) などは制御バスの信号. (a) の例 : メモリ読み出しサイクルでは,CPU はアドレスバスに読みたいメモリの番地を出力し, 同時に MEM/ IO を 1 にしてメモリに対する読み書き動作 ( アクセス ) であることを指示する. アドレスデコーダの出力が安定した時点で読み出し動作のタイミングを伝える信号 RD を 0 にする. この信号によりメモリは指定された番地の内容をデータバスに出力し,CPU はこれを読み込む. 読み込みの間は RD を 0 に保持する. 書き込みの場合は WR を使う. 一方,(b) では, RD/ WR により読み出しか書き込みかを選択し, 動作のタイミングを STB により伝える. Fig.A-2,Fig.A-3 は, メモリやインタフェースの動作速度がばらついているときに, 動作確認信号 1 このようにレベル Low で動作させる信号をアクティブロー, 逆にレベル High で動作させる信号をア クティブハイの信号と呼ぶ. マイクロプロセッサとインタフェース講義資料 -7
READY の付加により同期をとる方法を示している.CPU はクロックの下降エッジ毎に READY を監視し, これが 1 ならウェイトサイクルを 1 クロック周期挿入する ( 図の 1). READY が 0 になったことを確認して (2) からデータの読み出し 書き込みを行う. クロック プロセッサ 制御バス データ バス アドレス バス MEMRD MEMWR IORD IOWR READY メモリ 周辺インタフェース Fig.A-2 動作確認のための信号 READY の追加 クロック T1 メモリ読出しサイクル T2 T3 Tw T4 T1 メモリ書込みサイクル T2 T3 Tw T4 アドレス MEMRD MEMWR READY データ 1 2 1 2 プロセッサ読込み時刻 メモリ書込み時刻 Fig.A-3 READY を用いる場合の動作タイミングの例 -8 マイクロプロセッサとインタフェース講義資料