• 沒有找到結果。

INSTRUCTION SEGMENT

N/A
N/A
Protected

Academic year: 2021

Share "INSTRUCTION SEGMENT"

Copied!
33
0
0

加載中.... (立即查看全文)

全文

(1)

第四章 模擬與驗證

本章敘述 Pipelined MIPS CPU 指令模擬測試與平台規劃和系統測試。

測試流程為:先將 Pipelined MIPS CPU 設計完畢後,利用 Xilinx ISE 設計 軟體與模擬工具 Model Sim 進行 Synthesize、Implement Design、Simulate,

驗證其功能是否正確。最後再進行 Implementation,最後下載至 FPGA 實 驗平台,透過實驗平台周邊 I/O 裝置與測試程式,對整個 Pipelined MIPS CPU 系統執行完整測試。測試流程如圖 4-1。

圖 4-1 系統測試流程

第一節 實驗平台規劃

本研究所使用的 FPGA 實驗平台,主要以 FPGA 晶片板搭配 Xilinx Virtex XCV800 之 FPGA 晶片為核心搭配 I/O 模組。以下將實驗平台分為 六大單元來說明,如圖 4-2、圖 4-3 所示:

一、FPGA 晶片板(FPGA Board):Xilinx Virtex XCV800 晶片,是一顆 HQ 包裝 240 pin 的 FPGA,利用轉接板的連接讓設計者能將 FPGA 的接腳連接到外部 I/O 模組。

二、電源電路(Power Circuit):提供全部電路使用之電源。整個 FPGA 實驗平台共需要二種直流電源的供應,分別為一般 IC 所需的 3.3V

TestPrg

.coe Xilinx ISE Core Generator

Instruction Memory Xilinx ISE 7.1i

FPGA Board JTAG Port

(2)

直流電源,和 FPGA 晶片所需的 2.5V 直流電源。

三、傳輸埠(Print Port):提供由 PC 之印表機 Print Port 下載「FPGA 組 成資料」,規劃 FPGA 晶片的途徑。只需將此 FPGA 實驗平台插 上印表機排線,即可進行下載。

四、 JTAG 埠:提供由 PC 之印表機 Print Port 下載至晶片上,透過 JTAG 電路可搭配 Xilinx ChipScope 做邏輯分析。

五、輸入元件群:包含 1 組 4x4 掃描式鍵盤、3 組 8 位元之指撥開關 以及 4 個按壓開關。

六、輸出元件群:包含 1 個 16 x 2 的文字型 LCD、6 組七段顯示器、

4 組 10 位元之 LED。

圖 4-2 FPGA 實驗平台元件位置圖

Power Circuit

800K Gate counts

FPGA

PrintPort

Text LCD Module

Seven Segment

LED Bar

Dip Switches 4X4 Key Pad Push Buttoms

JTAGPort

LED Bar LED Bar LED Bar

(3)

圖 4-3 FPGA 實驗平台實體

第二節 Pipelined MIPS CPU 指令模擬測試

在 電 腦 上 完 成 測 試 程 式 的 十 六 進 制 碼 輸 入 , 並 建 另 存 新 檔 TestPrg.coe,開啟 Xilinx ISE Core Generator,將 TestPrg.coe 載入 Pipelined MPS CPU 的 Instruction Memory 中,使用 Model Sim 進行 Synthesiz、

Implement 和 Simulate。

壹、R-Type 指令模擬測試

一、R-Type 指令測試如表 4-1 所示。

(一)Memory Address 000~004:LW 指令功能測試,從 Pipelined MIPS CPU 內的 Instruction Memory 中擷取資料,儲存於指定暫存器。

(二)Memory Address 005~008:算術運算指令的測試。

(4)

(三)Memory Address 009:SW 指令功能測試,將指令的暫存器內容 存到特定記憶體位址。

(四)Memory Address 010~013:移位運算指令的測試。

(五)Memory Address 014~017:無符號的算術邏輯指令測試。

表 4-1 R-Type 指令測試程式

INSTRUCTION SEGMENT Program Memory

Address

Machine

Code Function LW $2,128($0) 000 8C020080 $2 = 81

LW $3,129($0) 001 8C030081 $3 = 82 LW $4,130($0) 002 8C040082 $4 = 83 LW $5,131($0) 003 8C050083 $5 = 84 LW $6,132($0) 004 8C060084 $6 = 85 SUB $5,$2,$3 005 00622822 $5 = 1 ADD $4,$2,$4 006 00822020 $4 = 104 AND $3,$4,$0 007 00801824 $3 = 0

OR $5,$2,$4 008 00442825 $5 = 185 SW $6,132($0) 009 AC060083 MEM[84] = 85 SLL $7,$2,5 010 00023940 $7 = 1020 SLL $9,$8,3 011 000848C0 $9 = 0 SRL $10,$4,2 012 00045082 $10 = 41 SRA $11,$2,3 013 000258C3 $11 = 10 ADDU $12,$2,$4 014 00446021 $12 = 185

SUB $9,$6,$2 015 00C24823 $9 = 4 XOR $14,$5,$7 016 00A77026 $14 = 11A5 NOR $15,$2,$8 017 00487827 $15= FFFFFF7E

DATA SEGMENT Memory

Address Data 128 00000081 129 00000082 130 00000083 131 00000084 132 00000085 二、軟體模擬結果:如圖 4-4、圖 4-5 所示。

(5)

圖 4-4 R-Type 指令模擬結果(1)

(6)

圖 4-5 R-Type 指令模擬結果(2)

(7)

貮、I-Type 指令模擬測試

一、I-Type 指令測試如表 4-2 所示。

(一)Memory Address 000~003:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 004~0013:立即值運算指令測試,分別以 Unsigned 與 Signed 立即值運算做測試。

表 4-2 I-Type 指令測試程式

INSTRUCTION SEGMENT Program Memory

Address

Machine

Code Function LW $17,16($0) 000 8E11000A $17 = B LW $18,17($0) 001 8E12000B $18 = C LW $19,18($0) 002 8E13000C $19 = D LW $20,19($0) 003 8E14000D $20 = E LW $21,20($0) 004 8E15000E $21 = F ADDI $19,$18,1 005 22530001 $19 = D ADDIU $20,$18,1 006 26540001 $20 = D ANDI $21,$17,x00f0 007 323500F0 $21 = 0 ORI $22,$17,x00fo 008 363600F0 $22 = FB XORI $23,$17,x00f0 009 3A3700F0 $23 = FB

DATA SEGMENT Memory

Address Data 16 0000000B 17 0000000C 18 0000000D 19 0000000E 20 0000000F 二、軟體模擬結果:如圖 4-6、圖 4-7。

(8)

圖 4-6 I-Type 指令模擬結果(1)

(9)

圖 4-7 I-Type 指令模擬結果(2)

(10)

參、B-Type 和 J-Type 指令模擬測試

一、BEQ 指令測試如表 4-3 所示。

(一)Memory Address 000~005:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 006:BEQ 指令測試。

(三)Memory Address 007~013:算術邏輯運運指令。

表 4-3 BEQ 指令測試程式

INSTRUCTION SEGMENT Program Memory

Address Machine Code Function LW $2,9($0) 000 8C020009 $2 = A LW $3,9($0) 001 8C030009 $3 = A LW $4,A($0) 002 8C04000A $4 = B LW $5,B($0) 003 8C05000B $5 = C LW $6,C($0) 004 8C06000C $6 = D LW $7,D($0) 005 8C07000D $7 = E BEQ $2, $3, 1 006 10430001

jmp 11 if $2=$3

ADD $8, $2, $3 007 00434020 SUB $9, $2, $3 008 00434822 AND $a, $2, $3 009 00435024 XOR $2, $3, $4 010 00641026

OR $3, $4, $5 011 00A61825 $3 = D AND $5, $6, $7 012 00C72824 $5 = C SUB $6, $7, $a 013 00EA3022 $6 = 4

DATA SEGMENT Memory

Address Data 009 0000000A 010 0000000B 011 0000000C 012 0000000D 013 0000000E

(11)

二、軟體模擬結果:如圖 4-8 所示。

圖 4-8 BEQ 指令模擬結果

(12)

三、BNE 指令測試如表 4-4 所示。

(一)Memory Address 000~005:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 006:BEQ 指令測試。

(三)Memory Address 007~013:算術邏輯運運指令。

表 4-4 BNE 指令測試程式

INSTRUCTION SEGMENT Program Memory

Address Machine Code Function

LW $2,8($0) 000 8C020008 $2 = 9

LW $3,9($0) 001 8C030009 $3 = A

LW $4,A($0) 002 8C04000A $4 = B

LW $5,B($0) 003 8C05000B $5 = C

LW $6,C($0) 004 8C06000C $6 = D

BEQ $2, $3, 1 006 14430001

jmp 11 if $2=/$3

LW $7,D($0) 007 8C07000D $6 = E

ADD $8, $2, $3 008 00434020 SUB $9, $2, $3 009 00434822 AND $a, $2, $3 010 00435024

XOR $2, $3, $4 011 00641026 $2 = 1 OR $3, $4, $5 012 00A61825 $3 = D AND $5, $6, $7 013 00C72824 $5 = 0 SUB $6, $7, $a 014 00EA3022 $6 = 0

DATA SEGMENT Memory

Address Data 008 00000009 009 0000000A 010 0000000B 011 0000000C 012 0000000D 013 0000000E

(13)

四、軟體模擬結果:如圖 4-9 所示。

圖 4-9 BNE 指令模擬結果

(14)

五、JMP 指令測試如表 4-5 所示。

(一)Memory Address 000~005:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 006:BEQ 指令測試。

(三)Memory Address 007~013:算術邏輯運運指令。

表 4-5 JMP 指令測試程式

INSTRUCTION SEGMENT Program Memory

Address Machine Code Function

LW $2,9($0) 000 8C020009 $2 = A

LW $3,9($0) 001 8C030009 $3 = A

LW $4,A($0) 002 8C04000A $4 = B

LW $5,B($0) 003 8C05000B $5 = C

LW $6,C($0) 004 8C06000C $6 = D

LW $7,D($0) 005 8C07000D $7 = E

JMP JMP 13 006 0800000e JMP 13

ADD $8, $2, $3 007 00434020 SUB $9, $2, $3 008 00434822 AND $a, $2, $3 009 00435024 XOR $2, $3, $4 010 00641026 OR $3, $4, $5 011 00A61825 AND $5, $6, $7 012 00C72824

SUB $6, $7, $a 013 00EA3022 $6 = E DATA SEGMENT

Memory

Address Data 009 0000000A 010 0000000B 011 0000000C 012 0000000D 013 0000000E

(15)

六、軟體模擬結果:如圖 4-10 所示。

圖 4-10 JMP 指令模擬結果

(16)

肆、Data Forwarding 的模擬測試

(一)Memory Address 000~004:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 005~07:Memory Address 6、Memory Address 7 與 Memory Address 5 資料相依($2)。

(三)Memory Address 08~09:Memory Address 8 與 Memory Address 9 資料相依($4)。

表 4-6 Data Forwarding 的測試程式

INSTRUCTION SEGMENT Program Memory

Address

Machine

Code Function LW $1,128($0) 000 8C010080 $1 = 81 LW $3,129($0) 001 8C030081 $3 = 82 LW $5,130($0) 002 8C050082 $5 = 83 LW $7,131($0) 003 8C070083 $7 = 84 LW $8,132($0) 004 8C080084 $8 = 85 SUB $2,$3,$1 005 00611022 $2 = 1 AND $4,$2,$5 006 00452024 $4 = 1 OR $4,$4,$2 007 00822025 $4 = 1 ADD $9,$2,$4 008 00842420 $9 = 2

DATA SEGMENT Memory

Address Data 128 00000081 129 00000082 130 00000083 131 00000084 132 00000085 二、軟體模擬結果:如圖 4-11 所示。

(17)

圖 4-11 Data Forwarding 測試模擬

(18)

伍、Load-use Data Hazard 模擬測試

一、Load-use Data Hazard 時的測試如表 4-7 所示。

(一)Memory Address 000~003:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 003~004:產生 Load-use Data Hazard。

(三)Memory Address 005~006:算術邏輯運算指令。

表 4-7 Load-use Data Hazard 的測試程式

INSTRUCTION SEGMENT

Program Memory Address

Machine

Code Function LW $5,16($0) 000 8C050010 $5 = 11 LW $1,17($0) 001 8C010011 $1 = 12 LW $3,18($0) 002 8C030012 $3 = 13 LW $2,20($0) 003 8C020014 $2 = 15 AND $4,$2,$5 004 00452024 $4 = 11 OR $8,$2,$5 005 00452025 $8 = 15 ADD $9,$4,$2 006 00824820 $9 = 26

DATA SEGMENT Memory

Address Data 16 00000011 17 00000012 18 00000013 19 00000014 20 00000015 二、軟體模擬結果:如圖 4-12 所示。

(19)

圖 4-12 Load-use Data Hazard 測試模擬

(20)

陸、Branch Hazard 模擬測試

一、Branch Hazard 時的測試如表 4-8 所示。

(一)Memory Address 000~002:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 003~004:一般算術邏輯運算指令。

(三)Memory Address 005~006:產生 Branch Hazard,若分支條件成 立,跳至 Memory Address 010。

(四)Memory Address 007~009:一般算術邏輯運算指令。

(五)Memory Address 010~014:立即值運算 表 4-8 Branch Hazard 的測試程式

INSTRUCTION SEGMENT Program MemoryAddress Machine

Code Function

LW $2,8($0) 000 8C020008 $2 = 9

LW $3,9($0) 001 8C030009 $3 = A

LW $4,A($0) 002 8C04000A $4 = B

ADD $8,$2,$3 003 00434020 $8 = 19

XOR $2,$3,$4 004 00641026 $2 = 1

OR $8,$2,$5 005 00452025 $8 = 15

BEQ $2,$8,10 006 14480001 If$2=/$8 then go 10

OR $3,$4,$5 007 00A61825

AND $5,$6,$7 008 00C72824

SUB $6,$7,$0 009 00EA3022

ADDI $13,$12,1 010 22530001 $13 = 1 ADDI $14,$12,1 011 26540001 $14 = 1 ANDI $15,$11,F0 012 323500F0 $15 = 0 ORI $16,$11,F0 013 363600F0 $16 =F0 XORI $17,$11,F0 014 3A3700F0 $17 = F0

DATA SEGMEN

Memory Address Data 8 00000011 9 00000012 10 00000013

(21)

二、軟體模擬結果:如圖 4-13 所示。

圖 4-13 Branch Hazard 測試模擬

(22)

染、浮點數指令模擬測試

一、浮點數指令測試如表 4-9 所示。

(一)Memory Address 000~006:LW 指令,從 Instruction Memory 中 擷取資料,並儲存於指定暫存器。

(二)Memory Address 008~010:一般算術邏輯運算指令測試。

(三)Memory Address 011:浮點數減法指令測試。

(四)Memory Address 012~018:nop 指令,不做任何動作。

(五)Memory Address 019:浮點數減法指令測試。

(六)Memory Address 020~027:nop 指令,不做任何動作。

(七)Memory Address 028:浮點數乘法指令測試。

(八)Memory Address 012~018:nop 指令,不做任何動作。

(九)Memory Address 012~018:浮點數除法指令測試。

(23)

表 4-9 浮點數的測試程式

INSTRUCTION SEGMENT

Program Memory Address Machine Code Function LW $2,128($0) 000 8C020080 $2 = 81

LW $3,129($0) 001 8C030081 $3 = 82 LW $4,130($0) 002 8C040082 $4 = 83 LW $5,131($0) 003 8C050083 $5 = 84 LW $6,132($0) 004 8C060084 $6 = 85

LW $10,10($0) 005 8C0A000A $A=3FC00000 LW $11,11($0) 006 8C0B000B $B=3DA00000

SUB $5,$3,$2 007 00622822 $5 = 1

ADD $9,$2,$3 008 00822020 $4 = 104

AND $3,$4,$0 009 00801824 $3 = 0

OR $5,$2,$4 010 00442825 $5 = 185

F.ADD $12,$10,$11 011 454B6000 $C=3FCA0000

NOP 012~018 00000000

F.SUB $13,$10,$11 019 454B6801 $D=3FB60000

NOP 020~027 00000000

F.MUL $14, $10,$11 028 454B7002 $E=3D700000

NOP 029~036 00000000

F.DIV $15,$10,$11 037 454B7803 $F=42199999 DATA SEGMENT

Memory Address Machine Code 00A 3FC00000 00B 3DA00000

…………

080 0000000A 081 0000000B 082 0000000C 083 0000000D 084 0000000E

二、軟體模擬結果:如圖 4-14 所示。

(24)

圖 4-14 浮點數運算指令測試模擬

(25)

捌、測試與比較

本研究所實現的 Pipelined MIPS CPU 其效能與本實驗室之前發展的 Multiple Clock Cycles MIPS CPU 做一比較。

(一)測試程式(a):1+2+3+………+99+100=5050(從 1 累加至 100)

表 4-10 測試程式(a)

INSTRUCTION SEGMENT Program Memory

Address Machine Code Function ADDIU $5,$0,13ba 000 240513BA $5 = 5050 ADDIU $2,$0,1 001 24020001 $2 = 1 ADDIU $3,$0,1 002 24030001 $3 = 1 ADDIU $4,$0,0 003 24040000 $4 = $2 + $4 ADD $4,$2,$4 004 00442020 $2 = $3 + $2

ADD $2,$2,$2 005 00421020 if $4≠$5 then go to 3 BNE $11,11($0) 006 1485FFFD

$4=$4 and $0

AND $4,$4,$0 007 00802024

表 4-11 測試程式(a)數據比較

Multiple Clock Cycles MIPS CPU Pipelined MIP CPU

TIME 242 us 81 us

CLOCK 1210 405

1210÷405 ≒ 2.9877

(二)、軟體模擬結果:如圖 4-15、圖 4-16 所示。

(26)

圖 4-15 Multiple Clock Cycles MIPS CPU 測試程式模擬(a)

(27)

圖 4-16 Pipelined MIPS CPU 測試程式模擬(a)

(28)

(三)測試程式(b):上數 1-100,MIPS CPU 顯示資料為十六進制,須 再用指令修正為十進制顯示。

表 4-12 測試程式(b)

INSTRUCTION SEGMENT

Program Mem.Addr Machine Code Function

LW $14,128($0) 000 8C0E0080 $14 = 100

LW $11,129($0) 001 8C0B0081 $11 = 1

LW $3,130($0) 002 8C030082 $3 = 2

R_INC: ADD $15,$15,$11 003 01EB7820 $15 = $15 + 1

DIS_1: ADDIU $6,$0,10 004 2406000A $6 = 0A

ADDIU $7,$0,15 005 2407000F $7 = 0F

ADDIU $8,$0,6 006 24080006 $8 = 06

DIS_11: AND $10,$15,$7 007 01E75024 $10 = $15 & $7 BNE $10,$7,DLY1 008 15460006 if $10 != $7 then DLY1

ADD $15,$15,$8 009 01E87820 $15 = $15 + 6

SLL $6,$6,4 010 00063100 $6 << 4

SLL $7,$7,4 011 00073900 $7 << 4

SLL $8,$8,7 012 00084100 $8 << 4

J DIS_11 013 08000007 Jump DIS_11

DLY1: ADD $4,$4,$11 014 008B2020 $4 = $4 + 1

BNE $4,$3,DLY1 015 1483FFFF if $4 != 2 then DLY1

AND $4,$4,$0 016 00802024 $4 = 00000000

BNE $15,$14,R_INC 017 15EEFFF2 if $15 =1000then R_INC

DLY2: ADD $4,$4,$11 018 008B2020 $4 = $4 + 1

BNE $4,$3,DLY2 019 1483FFFF if $4 != 2 then DLY2

AND $4,$4,$0 020 00802024 $4 = 00000000

DATA SEGMENT Memory Address Machine Code

128 00000100

129 00000001

130 00000002

(29)

表 4-13 測試程式(b)數據比較

Multiple Clock Cycles MIPS CPU Pipelined MIP CPU

TIME 1015300 ns 315800 ns

CLOCK 5076.5 1579

5076.5÷1579 ≒ 3.215

(四)軟體模擬結果:如圖 4-17、圖 4-18 所示。

由上述數據顯示,Pipelined MIP CPU 之效能更勝 Multiple Clock Cycles MIPS CPU,其速度會因指令格式不同有所差異,平均速度可提升 3 倍以 上。

(30)

圖 4-17 Multiple Clock Cycles MIPS CPU 測試程式模擬(b)

(31)

圖 4-18 Pipelined MIPS CPU 測試程式模擬(b)

(32)

玖、各模組耗費 Gate Count 數統計

在硬體設計時,考量耗費 Gate Count 數並選用適當的 FPGA 晶片是 非常重要的環節。以下分別列出多重時脈周期 MIPS CPU、未包含浮點 運算的管線化 MIPS CPU、含浮點運算的管線化 MIPS CPU 與浮點運算 器的耗費 Gate Count 數統計表。

表 4-1 未含浮點運算的管線化 MIPS CPU Gate Count 數統計表 Device : v800hq240

Speed Grade: -6

Pipelined MIP CPU (No Floating Unit) Number of Slice 2056 out of 9408 21%

Number of Slice Flip Flop 1516 out of 18816 8%

Total Number 4 input LUTs 750 out of 18816 14%

Number of bonded IOBs 39 out of 170 22%

Number of Block RAMs 4 out of 28 14%

Maximum Frequency Minimum period

36.127MHz 27.680ns

表 4-15 多重時脈周期 MIPS CPU Gate Count 數統計表 Device : v800hq240

Speed Grade: -6

Multiple Clock Cycles MIPS CPU

Number of Slice 2086 out of 9408 22%

Number of Slice Flip Flop 1346 out of 18816 7%

Total Number 4 input LUTs 2983 out of 18816 15%

Number of bonded IOBs 71 out of 170 41%

Number of Block RAMs 2 out of 28 7%

Maximum Frequency Minimum period

34.685MHz 28.831ns

(33)

表 4-16 含浮點運算的管線化 MIPS CPU Gate Count 數統計表 Device : v800hq240

Speed Grade: -6

Pipelined MIP CPU

Number of Slice 4720 out of 9408 50%

Number of Slice Flip Flop 2314 out of 18816 12%

Total Number 4 input LUTs 7555 out of 18816 40%

Number of bonded IOBs 39 out of 170 22%

Number of Block RAMs 4 out of 28 14%

Maximum Frequency Minimum period

5.358MHz 186.620ns

表 4-17 浮點運算器中各功能模組效能表 Device : v800hq240

Speed Grade: -6

加減法模組 乘法模組 除法模組

Number of Slice 972 638 1,594

Number of 4 input LUTs 1,710 900 1,891 Maximum Frequency

Minimum period

38.650MHz (25.484ns)

46.962MHz (21.294ns)

5.358MHz (186.620ns)

數據

圖 4-3 FPGA 實驗平台實體
圖 4-4 R-Type 指令模擬結果(1)
圖 4-5 R-Type 指令模擬結果(2)
圖 4-6 I-Type 指令模擬結果(1)
+7

參考文獻

相關文件

軟體至 NI ELVIS 環境。現在,您在紙上或黑板上的設計可在 Multisim 內進 行模擬,並模擬為 NI ELVIS 或 NI ELVIS II 電路板配置上的傳統電路圖。設 計趨於成熟後,使用者即可在 NI

而使影像設計工具在操作時呈現非預設的結果。為此操作者可以利用重設 Photoshop 軟體

Step 3: : : :模擬環境設定 模擬環境設定 模擬環境設定 模擬環境設定、 、 、 、存檔與執行模擬 存檔與執行模擬

高等電腦輔助設計與製造 (Advanced Computer Aided Design and Manufacturing).

微算機原理與應用 第6

事前事後比較((前測 前測 前測 前測 前測//後測 前測 前測 前測 後測 後測 後測 後測 後測 後測 後測))研究設計 研究設計 研究設計 研究設計 研究設計

依照工作圖或樣品選用適當材料、刀具、夾具及工具,熟悉 CNC 車床操作,設計 CNC

Harvard Graduate School of Design 畢業設計展.. Studio, Harvard Graduate School