32
CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 1 コンピュータアーキテクチャ Computer Architecture 8. パイプラインプロセッサ Pipelined Processor Ver. 2020-10-30a 2020年度版 Course number: CSC.T363 吉瀬 謙二 情報工学系 Kenji Kise, Department of Computer Science kise _at_ c.titech.ac.jp www.arch.cs.titech.ac.jp/lecture/CA/ Tue 14:20 - 16:00, 16:15 - 17:55 Fri 14:20 - 16:00

CSC.T363 Computer Architecture...2020/10/30  · CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 5 リファレンスデザイン(project_25)のプロセッサがサポートする命令

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 1

    コンピュータアーキテクチャComputer Architecture

    8. パイプラインプロセッサPipelined Processor

    Ver. 2020-10-30a2020年度版

    Course number: CSC.T363

    吉瀬 謙二 情報工学系Kenji Kise, Department of Computer Sciencekise _at_ c.titech.ac.jp

    www.arch.cs.titech.ac.jp/lecture/CA/Tue 14:20 - 16:00, 16:15 - 17:55Fri 14:20 - 16:00

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 2

    A Typical Memory Hierarchy

    Second

    Level

    Cache

    (SRAM)

    Control

    Datapath

    Secondary

    Memory

    (Disk)

    On-Chip Components

    RegF

    ile

    Main

    Memory

    (DRAM)Da

    ta

    Cache

    Instr

    Ca

    ch

    e

    ITL

    BD

    TL

    B

    Speed (%cycles): ½’s 1’s 10’s 100’s 1,000’s

    Size (bytes): 100’s K’s 10K’s M’s G’s to T’s

    Cost: highest lowest

    ❑ By taking advantage of the principle of locality (局所性)

    Present much memory in the cheapest technology

    at the speed of fastest technology

    TLB: Translation Lookaside Buffer

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 3

    プロセッサが命令を処理するための5つのステップの修正

    • IF (Instruction Fetch)メモリから命令をフェッチする.

    • ID (Instruction Decode)命令をデコード(解読)しながら,レジスタの値を読み出す.

    分岐命令である可能性を考慮し,読み出されたレジスタの間で一致比較を行う.命令のオフセットフィールドを符号拡張し,インクリメントされたPCに符号拡張されたオフセットを足し合わせて分岐先のアドレスを計算する.条件が成立した場合には分岐先アドレスをPCにセットして,このステージで分岐命令を完了させる.

    • EX (Execution)命令操作の実行またはアドレスの生成を行う.

    • MEM (Memory Access)必要であれば,データ・メモリ中のオペランドにアクセスする.

    • WB (Write Back)必要であれば,結果をレジスタに書き込む.

    3

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 4

    プロセッサのデータパス(パイプライン処理)

    4Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 5

    リファレンスデザイン(project_25)のプロセッサがサポートする命令

    • コンテストでは,define.v に定義される次の命令から,必要ない命令の処理を削除してよい.

    `define J________ 6'd24`define JAL______ 6'd25`define BEQ______ 6'd26`define BNE______ 6'd27`define ADDI_____ 6'd28`define ADDIU____ 6'd29`define SLTI_____ 6'd30`define SLTIU____ 6'd31`define ANDI_____ 6'd32`define ORI______ 6'd33`define XORI_____ 6'd34`define LUI______ 6'd35`define LW_______ 6'd38`define SW_______ 6'd43`define BLEZ_____ 6'd44`define BGTZ_____ 6'd45`define BLTZ_____ 6'd46`define BGEZ_____ 6'd47

    `define SLL______ 6'd02 `define SRL______ 6'd03 `define SRA______ 6'd04 `define SLLV_____ 6'd05 `define SRLV_____ 6'd06 `define SRAV_____ 6'd07 `define JR_______ 6'd08`define JALR_____ 6'd09 `define ADD______ 6'd14`define ADDU_____ 6'd15`define SUB______ 6'd16`define SUBU_____ 6'd17`define AND______ 6'd18`define OR_______ 6'd19`define XOR______ 6'd20`define NOR______ 6'd21`define SLT______ 6'd22`define SLTU_____ 6'd23

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 6

    リファレンスデザインに含まれるプロセッサ

    • Operating frequency: 50MHz

    • リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.

    m_regfile

    m_regs

    (32bit x 32)

    +

    w_rs

    IMEM

    m_imem

    32

    32

    5

    5

    5

    ID EX MEM

    16

    SignExtIm

    m

    Mu

    x

    Mu

    x

    DRAM

    m_dmem

    WB

    Mu

    x

    32

    32

    12

    32

    32

    +

    pc

    4 32

    32

    IF

    Pipeline register

    IfId IdEx ExMe MeWb

    5

    +

    Shift

    left 2

    32

    32

    Mu

    x

    32

    !=

    1

    Mu

    xM

    ux

    IfId_npc

    IfId_

    ir

    Source code will be available in /home/tu_kise/ca/src/mipscore/

    mipscore.vdefine.v

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 7

    プロセッサMIPSCORE: インタフェース

    • メモリアクセスステージでロード,ストア命令が処理される時にDRAMにアクセスする.この時,STALL信号が1となり,その間はプロセッサの処理をストールさせる.

    • STAT はプロセッサの状態を出力するために使用する.

    • I_ADDR, I_IN は命令をフェッチするために使用する.I_ADDR は pc の値.

    • D_ADDR, D_IN, D_OUT, D_OE, D_WE はデータメモリのリード,ライトのために使う.

    • IO_IN はメモリマップドIOからの入力のために用いるが,このデザインでは使用しない.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 8

    プロセッサMIPSCORE: パイプラインレジスタ

    • IfId_ から始まるレジスタは命令フェッチ(If)とデコード(Id)の間のパイプラインレジスタ

    • IdEx_ から始まるレジスタはデコード(Id)と実行(Ex)の間のパイプラインレジスタ

    • 同様に、ExMa_ と MaWb_ が定義される.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 9

    プロセッサMIPSCORE: 命令フェッチ

    • If から始まるワイヤは命令フェッチ(If)で生成されるもの.他のステージも同様.

    • IdTPC, IdC, IdB はレジスタとして宣言されているが,実際にはワイヤとなる.

    • PSTALL はDRAMアクセスによるプロセッサのストール

    • bstallは?

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 10

    Hazards make pipelining hard

    • 命令を適切なサイクルで実行できないような状況が存在する.これをハザード(hazard)と呼ぶ.

    • 構造ハザード (structural hazard)

    • オーバラップ実行する命令の組み合わせをハードウェアがサポートしていない場合.資源不足により生じる.

    • データ・ハザード(data hazard)

    • データの受け渡しの制約によって生じるハザード

    • 制御ハザード(control hazard)

    • 分岐命令,ジャンプ命令によって生じるハザード

    • まずは,データ・ハザードと制御ハザードが無いものとしてパイプラインプロセッサを構築する.その後,これらに対応するための修正を加える.

    10

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 11

    分岐命令,ジャンプ命令によって生じるハザード

    11Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

    • 上は分岐命令が分岐不成立 (Untaken) の場合の命令実行の様子

    • 下は分岐命令が分岐成立 (Taken) の場合の命令実行の様子

    • 分岐成立の場合に,1サイクルの無駄が生じる.

    • 分岐命令がフェッチされてから,分岐の成立/不成立が確定するまでの間のサイクル数が増えると無駄が増加する点に注意 (bstallにも注意).

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 12

    戦略4: 遅延分岐 (delayed branch), MIPSが採用

    • 分岐命令の後続の幾つかの命令を実行した後に,分岐する.1サイクルの遅延を持つ命令実行順は次の通り.

    • 分岐命令を実行

    • 分岐命令の次アドレスの命令を実行

    • 分岐成立では,飛び先アドレスの命令を実行(不成立では,分岐命令の次の次のアドレスの命令を実行)

    • 分岐命令の後続の幾つかの命令を実行した後に分岐.分岐命令によるストールは生じない.

    12Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 13

    リファレンスデザインに含まれるプロセッサ

    • Operating frequency: 50MHz

    • リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.

    m_regfile

    m_regs

    (32bit x 32)

    +

    w_rs

    IMEM

    m_imem

    32

    32

    5

    5

    5

    ID EX MEM

    16

    SignExtIm

    m

    Mu

    x

    Mu

    x

    DRAM

    m_dmem

    WB

    Mu

    x

    32

    32

    12

    32

    32

    +

    pc

    4 32

    32

    IF

    Pipeline register

    IfId IdEx ExMe MeWb

    5

    +

    Shift

    left 2

    32

    32

    Mu

    x

    32

    !=

    1

    Mu

    xM

    ux

    IfId_npc

    IfId_

    ir

    Source code will be available in /home/tu_kise/ca/src/mipscore/

    mipscore.vdefine.v

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 14

    Hazards make pipelining hard

    • 命令を適切なサイクルで実行できないような状況が存在する.これをハザード(hazard)と呼ぶ.

    • 構造ハザード (structural hazard)

    • オーバラップ実行する命令の組み合わせをハードウェアがサポートしていない場合.資源不足により生じる.

    • データ・ハザード(data hazard)

    • データの受け渡しの制約によって生じるハザード

    • 制御ハザード(control hazard)

    • 分岐命令,ジャンプ命令によって生じるハザード

    • まずは,データ・ハザードと制御ハザードが無いものとしてパイプラインプロセッサを構築する.その後,これらに対応するための修正を加える.

    14

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 15

    Data Hazard

    • sub命令が生成した$2を後続の命令が利用する場合にデータの受け渡しの制約が生じる.

    15Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 16

    Data Hazard and Stall

    16

    stallstall

    Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 17

    フォワーディングによるデータハザードの回避

    17Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 18

    フォワーディングによるデータハザードの回避

    18

    IfId

    IdEx

    ExMe

    MeWb

    Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 19

    フォワーディングによるデータハザードの回避

    19

    IfId

    IdEx

    ExMe

    MeWb

    Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

    IfId

    IdEx

    ExMe

    MeWb

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 20

    フォワーディングのための変更点

    20Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 21

    データハザードによって生じるストール

    21Adapted from Computer Organization and Design, Patterson & Hennessy, © 2005

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 22

    プロセッサMIPSCORE: 命令デコード

    • ビットの切り出し.

    • 命令番号 IdOPNの設定.

    • 書き込みレジスタ番号 IdDSTの設定.

    • この実装では,IdATTR は利用しない.

    • レジスタファイルにアクセスしてオペランド IdRRS, IdRRT をフェッチする.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 23

    プロセッサMIPSCORE: 命令デコード

    • 分岐命令の実行.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 24

    プロセッサMIPSCORE: 実行

    • データフォワーディングと実行

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 25

    プロセッサMIPSCORE: 実行

    • データフォワーディングと実行

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 26

    Data Memory (DRAM, m_dram)

    • プロセッサMIPSCOREはストアすべきデータD_OUTを出力し,それがメモリコントローラDRAMの入力i_dataとなる.また,プロセッサはストアすべきデータのアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_WEにより,DRAMへのデータのストアを指示する.

    • プロセッサはロードするアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_OEにより,DRAMへのデータのリードを指示する.DRAMから得られたデータがo_dataに出力され,それがプロセッサの入力D_INとなる.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 27

    プロセッサMIPSCORE: メモリアクセス

    • コンテストでは,バイト単位のメモリアクセス (LB, SB),ハーフワード単位のメモリアクセス(LH, SH) は実装しなくても良い.LW, SW がアクセスするアドレスは4バイト単位で整列されている.

    赤線の処理は不要.次の記述でよい.wire [31:0] MaLDD = D_IN;

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 28

    リファレンスデザインに含まれるプロセッサ

    • Operating frequency: 50MHz

    • リファレンスデザインには,5段パイプライン処理の典型的なMIPSプロセッサ(のサブセット)が採用されている.下の図からレジスタ名などが変わっているので注意.

    m_regfile

    m_regs

    (32bit x 32)

    +

    w_rs

    IMEM

    m_imem

    32

    32

    5

    5

    5

    ID EX MEM

    16

    SignExtIm

    m

    Mu

    x

    Mu

    x

    DRAM

    m_dmem

    WB

    Mu

    x

    32

    32

    12

    32

    32

    +

    pc

    4 32

    32

    IF

    Pipeline register

    IfId IdEx ExMe MeWb

    5

    +

    Shift

    left 2

    32

    32

    Mu

    x

    32

    !=

    1

    Mu

    xM

    ux

    IfId_npc

    IfId_

    ir

    Source code will be available in /home/tu_kise/ca/src/mipscore/

    mipscore.vdefine.v

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 29

    Reference Design (project_25)

    • Modules

    • PLOADER, IMEM, MIPSCORE, m_7segcon, UartTx, DRAM, clk_wiz_0

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 30

    Program loader (PLOADER)

    • シリアル通信でRXDからデータを受け取る.

    • 32ビットの1つの命令を受け取ると,書き込みアドレスをADDR, 受け取った命令 をDATAを設定し,書き込み信号WE を1にすることで命令メモリIMEM に書き込む.

    • 命令メモリに書き込むのは受信する512KBのデータの最初の64KBのみ.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 31

    Instruction Memory (IMEM)

    • プロセッサ(MIPSCORE)が命令アドレスI_ADDRを出力し,それが命令メモリIMEMの入力INST_ADDRとなる.

    • 命令メモリは指定されたアドレスに格納されている命令をINST_OUTに出力して,それがプロセッサの入力I_INとなる.これらが命令フェッチに対応する.

  • CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 32

    Data Memory (DRAM, m_dram)

    • プロセッサMIPSCOREはストアすべきデータD_OUTを出力し,それがメモリコントローラDRAMの入力i_dataとなる.また,プロセッサはストアすべきデータのアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_WEにより,DRAMへのデータのストアを指示する.

    • プロセッサはロードするアドレスD_ADDRを出力し,それがメモリコントローラの入力i_addrとなる.プロセッサの出力D_OEにより,DRAMへのデータのリードを指示する.DRAMから得られたデータがo_dataに出力され,それがプロセッサの入力D_INとなる.