2016-07-10 7 views
0
   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
ADD R1,R2,R3 | IF | ID | EX | MA | WB | | | | | | | 
SUB R4,R1,R3 | | IF | ID | EX | MA | WB | | | | | | 
AND R6,R1,R7 | | | IF | ID | EX | MA | WB | | | | | 
OR R8,R1,R9 | | | | IF | ID | EX | MA | WB | | | | 
XOR R10,R1,R11 | | | | | IF | ID | EX | MA | WB | | | 

この後のすべての命令は、R1の値が書き込まれているかどうかによって決まります。だから、これを修正するために、私は積み重ねを挿入する必要があります。MIPS命令のタイミングと固定のハザード

AFTER (Using Stalls) 
       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
ADD R1,R2,R3 | IF | ID | EX | MA | WB | | | | | | | 
SUB R4,R1,R3 | | IF | ID | * | * | EX | MA | WB | | | | 
AND R6,R1,R7 | | | IF | ID | EX | MA | WB | | | | | 
OR R8,R1,R9 | | | | IF | ID | EX | MA | WB | | | | 
XOR R10,R1,R11 | | | | | IF | ID | EX | MA | WB | | | 

メモリアクセスが発生した後に別のストールを挿入する必要がありますか?

転送を使用した場合、タイミングはどのように見えますか?それ、どうやったら出来るの?屋台で

+0

AFAICT、 'SUB'のストールは後で開始されません。 'T3'で' ID'の後まで失速が必要であることさえ知らないので、T2で 'IF'を実行します。つまり、 'SUB'は' SUB'の 'EX'だけ' T6'( 'ADD'の' WB'の後ろ)に止めなければならないので、 ' - IF ID * * EX MA WB'のように見えるはずです。 T5で)。他の命令の「IF」と「ID」には遅延がないため、「スケジュール通りに」開始します。あなたが同意すれば、分析を続ける前に2番目の図を修正したいと思います。 –

+0

私はあなたが提案した変更を加えたと思います。それはあなたが言っていることですか? – brandenwagner

+0

閉じる。今度は他の人のために繰り返します。 「IF」と「ID」はストールしないので、通常の場所に移動します。したがって、 'AND'の' IF'は 'T3'(_not_' T5')です... –

答えて

0

、タイミングは次のようになります。唯一の初期ADDR1に書き込みを行うためです

   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
ADD R1,R2,R3 | IF | ID | EX | MA | WB | | | | | | | 
SUB R4,R1,R3 | | IF | ID | * | * | EX | MA | WB | | | | 
AND R6,R1,R7 | | | IF | ID | * | EX | MA | WB | | | | 
OR R8,R1,R9 | | | | IF | ID | EX | MA | WB | | | | 
XOR R10,R1,R11 | | | | | IF | ID | EX | MA | WB | | | 

。また、命令のデスティネーションレジスタと後の命令のソースレジスタとの間に重複がなくなります。転送して

ADD(すなわちR1)の出力が利用可能となる後のT3EX相(すなわち、それはT4の開始時に、後続の命令に利用可能である)でも、だから、

最もハードプレス命令(SUB)は、転送のためにフェーズで利用可能な値をT4とします。

フォワーディングでは、タイミングは最初の図と同じです(転送によってハザードが修正されます)。