第4章 プロセッサ - wide...

64
第4章 プロセッサ usk

Upload: others

Post on 06-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

第4章 プロセッサ usk

Page 2: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

コンピュータの性能を 決定する要因3つ

  実行命令数   命令セット・アーキテクチャとコンパイラ   クロック・サイクル時間   プロセッサの実装方式   命令当たりのクロック・サイクル数(CPI)   プロセッサの実装方式

MIPSの命令セットの主要部分に対応したデータパスと制御ユニットを実装する

1

Page 3: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

基本的なMIPSの実装方式

  メモリ参照命令のload word (lw)とstore word (sw)

  算術論理演算命令のadd, sub, and, or, slt

  branch equal (beq)命令及びジャンプ (j)命令

2

Page 4: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

実装方式の概要

1.  メモリから命令をフェッチするために、PCの値をコードが保持されているメモリに送る

2.  命令のレジスタ・フィールドに指定されている1つまたは2つのレジスタを読みだす

3

Page 5: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

実装方式の概要   メモリ参照と算術論理と分岐の3つの命令タイプに関しては、必要な作業は概ね同じ (命令の違いにほとんど左右されない)

  ジャンプ以外どの命令でもレジスタを読んだ後でALU (算術論理演算ユニット)が使用される   メモリ参照命令では、アドレスを算出するためにALUが使用される

  算術論理命令では、命令操作の実行にALUが使用される

  分岐命令では、比較のためにALUが使用される 4

Page 6: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

実装方式の概要   ALUを使用した後では、命令完了に要する作業は命令の対応によって異なる   メモリ参照命令では、メモリにアクセスして、ストアするデータを書き込んだりロードするデータを読み出したりする必要がある

  算術論理命令またはロード命令では、ALUまたはメモリからレジスタにデータを書き戻す必要がある

  分岐命令では、比較結果に基づいて、次の命令のアドレスを変更する必要がある、変更しない場合は、次の命令アドレスを設定するために、PCを4繰り上げる

5

Page 7: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

MIPS命令の実装方式の 概念的な構造図

6

Page 8: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

マルチプレクサ

  いくつかの箇所で、2つの別のソースからのデータが1つのユニットに入るように描かれている

  レジスタ・ファイルに書き込まれる値は、ALUとデータ・メモリのどちらかから送られてくる

  ALUへの第2の入力はレジスタまたは命令の測地フィールドのどちらかから送られてくる

7

Page 9: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

制御ユニット

  機能ユニットの幾つかは、命令タイプに応じて異なる制御を行う必要がある

  マルチプレクサと同様に命令の様々なフィールドに基づいて設定される制御線にしたがって、これらの命令操作は遂行される

8

Page 10: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

MIPS命令の実装方式の 概念的な構造図 v2

9

Page 11: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

マルチプレクサ   左上のマルチプレクサ   ALUのゼロ判定出力と命令が分岐であることを示す制御信号の`AND`を取るゲートによって制御される

  真ん中のマルチプレクサ   ALUの出力(算術論理演算の場合)とデータ・メモリからの出力(ロードの場合)のどちらをレジスタ・ファイルに書き込むかを制御する

  一番下のマルチプレクサ   ALUへの第2入力をレジスタ (算術論理演算または分岐の場合)と命令のオフセット・フィールド (ロードまたはストアの場合)の、どちらから取るかを制御する

10

Page 12: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

論理設計とクロック方式

  コンピュータの設計の検討にあたって   マシンを実装するハードウェア論理回路の動作方式

  マシンのクロックの刻み方

11

Page 13: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

データパスユニット

  状態組み合わせ論理要素   データの値に何らかの操作を行う   ANDゲートやALUのような処理要素   組み合わせ → 出力が現在の入力にのみ基づいて決まる   内部記憶が無い

  状態論理要素   状態を記憶する要素   レジスタやメモリのような記憶要素の一種   なんらかの内部記憶を持つ

12

Page 14: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

状態論理要素

  入力   書き込むべきデータの値   書き込むタイミングを決めるクロック信号   書き込みのタイミングの決定のみに使用される、読み出しはいつでも構わない

  出力   前のクロック・サイクルにおいて書き込まれた値

13

Page 15: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

クロック方式

  クロックとの時間関係でいつデータが有効になり安定するかを定めた方式

  読み出しと書き込みのタイミングを区別   読み出しを行なっている時に書き込みが行われると、値が古いものであったり、新しいものであったり、両者が混じったものであったりする可能性が生じるから

14

Page 16: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

エッジ・トリガ・クロック方式 (edge-triggered clocking methodology)

  クロック信号波形のエッジでのみ逐次論理要素に記憶されている値を更新する方式

15

Page 17: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

エッジ・トリガ・クロック方式   データ値を記憶出来るのは、状態論理要素だけであるので、組み合わせ論理回路への入力は状態論理回路から取らなければならないし、組み合わせ論理回路からの出力は状態論理要素に書き込まなければならない

  2つの状態論理要素が1つの組み合わせ論理回路を挟んで単一クロック・サイクルで動いている

  すべての信号は状態論理要素1から組み合わせ論理回路を通って、状態論理要素2まで1クロック・サイクル以内で伝播しなければならない   信号が状態論理要素2に到達するまでに必要な時間がクロック・サイクルの長さを規定する

16

Page 18: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

データパスの構築

17

Page 19: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

データパスの構築

  メモリ・ユニット   プログラムの命令を格納するとともに、指定されたアドレスの命令を提供する

  プログラムカウンタ   PCを次の命令のアドレスに繰り上げる加算器

18

Page 20: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

命令を実行するために

1.  メモリ・ユニットから命令を取り出す 2.  次の命令の実行に備えて、プログラムカウンタを4バイト加算する

19

Page 21: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

算術論理演算命令 (R形式命令)

  レジスタを2つ読み出し   ALU演算を実行   結果を書き込む

20

Page 22: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

add $t1,$t2,$t3

  $t2と$t3を読み込んで、$t1に書き込む   レジスタ・ファイル   レジスタ・ファイルはすべてのレジスタを束ねたもの

  レジスタ番号を指定することで任意のレジスタを読み書きできる

  ALU

21

Page 23: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

レジスタ・ファイル

22

Page 24: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

R形式命令

  オペランドにレジスタを3つ使用する   2つのデータを読み出し   レジスタ毎に、対象とするレジスタ番号を指定する入力

  読み出された値を保持する出力が必要   1つのデータを書き込む   書き込み先のレジスタ番号を指定する入力   レジスタに書き込むデータを送り込む入力

23

Page 25: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

レジスタ・ファイル

  レジスタ・ファイルからは「読み出しレジスタ」に指定されたレジスタ番号のレジスタの内容が常に出力される

  書き込みは、書き込む制御信号により制御される

  レジスタ番号を指定する入力の幅は5ビット

  データ入力と出力は、32ビット 24

Page 26: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALU

  32ビットの入力を受けて、32ビットの結果と、結果がゼロの場合には1ビットの信号を生成

  あと、4ビットの制御信号

25

Page 27: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

メモリ参照命令 lw $t1,offset($t2) sw $t1,offset($t2)

  レジスタ・ファイルとALU両方が必要   命令中の16ビットのオフセット値を符号拡張して32ビットの符号付きの値にするユニット

  読み書きするデータを記憶しておくユニット   データ・メモリ   ストア命令で書き込めるようにするため、書き込むための入力データに加え、MemRead及びMemWriteという2本の制御信号とアドレス入力が必要

26

Page 28: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

メモリ参照命令

27

Page 29: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

分岐命令

beq $t1,$t2,offset

  オペランドを3つとる   等しいか否かを比較する対象レジスタ2つ   分岐命令のアドレスい相対的な分岐先アドレスを算出するための16ビットオフセット

28

Page 30: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

分岐先アドレスを算出   命令のオフセット・フィールドを符号拡張したうえで、PCに加算する

1.  分岐先アドレスを算出するベースとなるのは、分岐の次の命令のアドレス   命令フェッチ・データパスにおいてPC+4を計算しているので、その値を分岐先アドレスのベースとして使用

2.  オフセット・フィールドは2ビット左にシフトされて、wordオフセットとされるようになっている   オフセット・フィールドを2ビット左にシフトする必要

29

Page 31: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

後続命令 or 分岐先アドレス

  条件が真 → 分岐の成立   オペランド同士が等しい   分岐先アドレスが新しいPC   条件が偽 → 分岐の不成立   オペランド同士が等しくない   繰り上げたPCで現在のPCを置き換える

30

Page 32: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

分岐命令

31

Page 33: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

分岐命令

  分岐先アドレスの計算のために   符号拡張ユニット   加算器   比較を行うために   レジスタ・ファイル   ALU   オペランドの二つのレジスタの内容を送り、減産するように制御する

  ALUの出力のゼロ判定出力が真ならば、2つの値が等しかった

32

Page 34: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

遅延分岐

  MIPSの命令セットでは分岐は遅延される   分岐命令の直後の命令が必ず実行される

  つまり、分岐条件が成立する場合、遅延分岐ではまず分岐命令の次の命令を実行してから、該当の分岐先アドレスにジャンプする

  遅延分岐を採用する理由   パイプライン処理で分岐が影響を受けるから

33

Page 35: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

単一データパスの作成   最も単純なデータパスではすべての命令を1クロック・サイクルで実行しようとする   どのデータパス資源も1命令辺り2回以上の使用はできない

  2回以上必要となる要素は、必要個数分だけ別個に設ける必要

  データ用メモリとは別に命令用メモリが必要   2つの違った命令タイプ感でデータパスを共有するためには、複数入力を接続して、その中からマルチプレクサと制御信号によって1つの入力を選択できるようにする必要

34

Page 36: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

算術論理演算命令と メモリ参照命令のデータパス

  算術論理命令ではALUに2つのレジスタからの値を入力として使う。しかし、メモリ参照命令では、第2入力は16ビットのオフセット・フィールドを符号拡張したもの

  結果としてレジスタに書き込まれる値は、算術論理命令の場合はALUの出力、メモリ参照命令(ロード)での場合はデータ・メモリから取り出した値

35

Page 37: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

算術論理演算命令と メモリ参照命令のデータパス

36

Page 38: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

データパス構成要素をすべて接続

  命令フェッチ用のデータパス   算術論理演算命令及びメモリ参照命令用のデータパス

  分岐命令用のデータパス

37

Page 39: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

データパス構成要素をすべて接続

38

Page 40: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

制御ユニット

  各状態論理要素のWrite信号   各マルチプレクサにおける選択器の制御信号

  ALU制御のための信号

  これらを入力から生成

39

Page 41: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALU制御ユニット

  ALUの4本ある制御入力のうち下記の組み合わせが定義されている

40

Page 42: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALU制御ユニット

  メモリ参照命令: 加算   分岐命令: 減算   算術論理演算命令: 命令の最下位にある6ビットの機能フィールドの値に応じてどれか一つを実行する

41

Page 43: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALU制御ユニットへの入力

  命令の機能フィールド   2ビットの制御フィールド (ALUOp)   どのような演算操作を実施するのか

42

Page 44: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALUOp

  00: メモリ参照命令→加算   01: 分岐命令分岐命令→減算   10: 機能フィールドの値に応じた演算

43

Page 45: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALU制御ユニット

44

Page 46: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

複数レベルにわたるデコード法

  主制御ユニットでALUOpビットを生成   それを入力としてALU制御ユニットでALUを制御する信号を生成

  主制御ユニットを小さくできる   小さな制御ユニットを複数使用することはことは制御ユニットの速度向上に繋がる

45

Page 47: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ALUOpフィールドと 機能フィールドを対応付ける方法

46

Page 48: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

3つの命令タイプの復習

47

Page 49: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

注目すべき点

  オペコードは常にビット31-26   読みだす2つのレジスタは、算術論理演算命令のときも分岐命令のときもビット25-21,20-16い保持さ

  メモリ参照命令のベース・レジスタは常にビット25-21

  分岐命令、メモリ参照命令の16ビットのオフセットは常にビット15-0

  ディスティネーション。レジスタが指定される部分は2通り

48

Page 50: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

主制御ユニットの設計

49

Page 51: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

7本の制御線

50

Page 52: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

制御ユニットと制御信号を 付加したデータパス

51

Page 53: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

各命令操作コードの値と 各制御信号

52

Page 54: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

add $t1,$t2,$t3 の場合

1.  命令フェッチ、PC繰り上げ 2.  2つのレジスタの値読み出し、主制御ユニットは制御線の設定

3.  機能コードからALUの機能の決定、演算 4.  結果を書き込み、ディスティネーション・レジスタ選択のために命令のビット15-11を使用

53

Page 55: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

add $t1,$t2,$t3 の場合

54

Page 56: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

lw $t1,offset($t2) の場合 1.  命令フェッチ、PC繰り上げ 2.  レジスタの値読み出し($t2) 3.  レジスタから読み出された値と命令の下位16ビットを符号拡張した値の和をALUで計算

4.  結果をデータ・メモリ用のアドレスとして使用

5.  メモリ・ユニットからデータが読み出され、レジスタ・ファイルに書き込み、ディスティネーション・レジスタ選択のために命令のビット20-16を使用

55

Page 57: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

lw $t1,offset($t2) の場合

56

Page 58: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

beq $t1,$t2,offset の場合

1.  命令フェッチ、PC繰り上げ 2.  2つのレジスタの値読み出し 3.  レジスタ・ファイルから読み出された値の差をALUで計算、PC+4に命令の下位16ビットを2ビット左にシフトして符号拡張した値に加え、分岐先アドレスの算出

4.  ALUのゼロ判定に基いて、どちらのアドレスをPCに格納するか決定

57

Page 59: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

beq $t1,$t2,offset の場合

58

Page 60: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

制御ユニットの仕上げ

59

Page 61: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ジャンプの実装

  分岐先アドレスは   下位2ビットは00   その次の26ビットは命令中の26ビットのフォ口フィールドから

  上位4ビットは現在のPC+4の上位4ビット

60

Page 62: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

ジャンプの実装

61

Page 63: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

単一クロック・サイクルの 制御方式の問題点

  現代のコンピュータに採用されることはまずない

  各命令のクロック・サイクルが同じでなくてはならない   クロック・サイクルはプロセッサ中の最長パスによって決まる

  この方式はCPIは1であるが、全体的な性能が低い   クロック・サイクルが長すぎるから

62

Page 64: 第4章 プロセッサ - WIDE Projectweb.sfc.wide.ad.jp/~usk/reading/patahene4.pdfマルチプレクサ いくつかの箇所で、2つの別のソースか らのデータが1つのユニットに入るよう

単一クロック・サイクル   初期のコンピュータではこの実装方式が使用されていた   浮動小数点ユニットやもっと複雑な命令を含む命令セットではうまくいかない

  クロック・サイクル時間は最悪の場合に等しくする必要がある   最悪の場合のクロック・サイクル時間の改善には役立たない実装を試みつのは無意味

第1章で学んだ「一般的な場合を高速化せよ」 という腫瘍アイディアに反する

63