最近どうっすか?

コンピュータをメインに技術系の話題について書いていけたらいいなぁ。

パイプライン構造

System/360のパイプライン構造のブロックダイアグラムです。

f:id:voyov:20140705223938j:plain

見えにくいのは何とかならないかな?

  • fetch bufferには64bitのバッファが8本ある
  • decode buffer(IR)は32bit
  • 点線の部分はメモリアドレスが通る経路
  • 実線の部分はデータが通る経路
  • 青線はオペコードを送る経路
  1. fetch bufferからIA(Instruction Address)をメモリーに送ってデータを要求する
  2. memoryからfetch bufferに64bitずつ読み込む
  3. fetch bufferからdecode buffer(IR)に32bitを読み込む
  4. decode bufferの先頭16bitをデコードしオペコードの判別をする(RR形式命令の場合は6に進む)
  5. decode bufferの後半16bit(オペランド)をデコードする(SS形式命令の場合は3に戻り追加のオペランドデータを読み込む)
  6. オペコードをopecode buffersに送る
  7. オペランドのアドレスをmemoryに送る(実行結果の書き出しアドレスをstore data buffersに送る)
  8. operand buffersにオペランドのアドレスからデータを読み込む
  9. execution unitで命令を実行する
  10. オペランドのアドレスをstore address buffersに送る
  11. 実行結果のデータがmemoryに書き込まれる

これらの手順をステージ毎に分けて並列処理されていく。
実際にはレジスタのアクセスやメモリアドレス計算と分岐命令の関係もあるので、もっと複雑になるのですが、とりあえずここまでしか理解できていません。

この後は、キャッシュと370で導入された仮想記憶のことも調べようと思います。

ではでは。