




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、題 目:5 段流水 CPU 設計專 業(yè):計算機科學與技術班 級:CS1205學 號:U201214940姓 名:游凡電 話:1321217922302015計算機組織與結(jié)構(gòu)計算機組織與結(jié)構(gòu) 課程設計報告課程設計報告郵 件:完成日期:2015-04-02 周四下午指導教師:秦磊華 譚志虎 胡迪青與 與 與 與 與 與 與 與 與 與 與 與 與 與 與 與 與 與 與 與課程設計課程設計任務書任務書一、設計題目基于基于 Logisim 軟件仿真平臺的軟件仿真平臺的 5 段流水段流水 CPU 設計實現(xiàn)設計實現(xiàn)二、設計內(nèi)容在 logisim 平臺設計一款支持特定指令系統(tǒng)的 5 段流水 CPU?;疽?/p>
2、求如下:1)支持 20 條基本指令2)支持 5 段流水機制,可處理數(shù)據(jù)冒險,結(jié)構(gòu)冒險,分支冒險;3)能正確運行自己編寫的測試程序,測試程序應能涵蓋所有指令。4)能正確運行教師提供的標準測試程序5)具有自動統(tǒng)計功能,自動統(tǒng)計執(zhí)行周期,不同冒險沖突次數(shù),動態(tài)預測成功次數(shù)。三、設計要求1)支持 20 條基本指令。2)支持 5 段流水機制,可處理數(shù)據(jù)冒險,結(jié)構(gòu)冒險,分支冒險,動態(tài)分支預測。3)能運行由自己所設計的指令系統(tǒng)構(gòu)成的一段測試程序,測試程序應能涵蓋所有指令,程序執(zhí)行功能正確。4)能運行教師提供的標準測試程序,并統(tǒng)計執(zhí)行時間。四、設計流程1)根據(jù)課程設計指導書的要求,制定出設計方案;2)畫出自己
3、所設計計算機系統(tǒng)的原理框圖,分析所需要的控制信號以及這些控制信號的有效形式;3)設計出實現(xiàn)指令功能的控制器;4)調(diào)試、數(shù)據(jù)分析、驗收檢查;5)課程設計報告和總結(jié)。五、成績評定 成績評定根據(jù)考勤、課程設計的過程、課程設計的效果、課程設計報告質(zhì)量等進行綜合評定;其中設計過程和結(jié)果占 70%,課程設計報告占 30%;課程設計的成績評定等級為不及格、及格、中、良好、優(yōu)秀五級;對基本功能進行擴展或設計具有非常鮮明的特征和一定程度的創(chuàng)新,可根據(jù)實際情況加分。六、設計報告要求 課程設計報告主要內(nèi)容包括:設計題目、設計目的、設備器材、設計原理及內(nèi)容、設計步驟、遇到的問題及解決方法、設計總結(jié)、參考文獻等。要求在
4、適當位置配合相應的實驗原理圖、數(shù)據(jù)通路圖、實驗接線圖等圖表進行說明??偨Y(jié)部分主要寫設計工作簡介以及設計體會。應做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。課程設計報告采用計算機組織與結(jié)構(gòu)專用設計報告模板,A4 紙雙面打印。七、時間安排 課程設計的總體時間為 2 周,具體安排如下:1)第 1 天:到實驗室布置任務和集中講解。2)第 13 天:學生查閱資料,開始方案設計。3)第 4 天:中期進度檢查,單周期 CPU 驗收檢查。4)第 6 天:中期進度檢查,理想流水線多周期 CPU 驗收檢查。5)第 10 天:最終結(jié)果驗收。6)八、主要參考文獻1 DAVID A.PATTERSON(美).計算機
5、組成與設計硬件/軟件接口(原書第 4 版).北京:機械工業(yè)出版社. 2 David Money Harris(美).數(shù)字設計和計算機體系結(jié)構(gòu)(第二版). 機械工業(yè)出版社3 秦磊華,吳非,莫正坤.計算機組成原理. 北京:清華大學出版社,2011 年.4 袁春風編著. 計算機組成與系統(tǒng)結(jié)構(gòu). 北京:清華大學出版社,2011 年.5 張晨曦,王志英. 計算機系統(tǒng)結(jié)構(gòu). 高等教育出版社,2008 年.I華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告目 錄1課程設計概述課程設計概述.31.1課設目的.31.2設計任務.31.3設計要求.32實驗原理與環(huán)境實驗原理與環(huán)境.52.1
6、實驗原理.52.2 實驗環(huán)境.53總體方案設計總體方案設計.63.1構(gòu)建單周期 CPU .63.2可支持理想流水線的多周期 CPU 設計.74詳細設計與實現(xiàn)詳細設計與實現(xiàn).104.1構(gòu)建單周期 CPU .104.2可支持理想流水線多周期 CPU.144.3流水線沖突檢測器.204.4插入氣泡的流水沖突處理 .214.5數(shù)據(jù)重定向的流水沖突處理 .244.6動態(tài)分支預測的流水沖突處理 .275實驗過程與調(diào)試實驗過程與調(diào)試.295.1測試用例和功能測試.295.2性能分析.295.3主要故障與調(diào)試.305.4實驗流程.396設計總結(jié)與心得設計總結(jié)與心得.40II華華 中中 科科 技技 大大 學學
7、課課 程程 設設 計計 報報 告告6.1課設總結(jié).406.2課設心得.40參考文獻參考文獻.433華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告1課程設計概述1.1課設目的計算機組成原理是計算機專業(yè)的核心專業(yè)基礎課。課程設計屬于設計型實驗,不僅鍛煉學生簡單計算機系統(tǒng)的設計能力,而且通過進行設計及實現(xiàn),進一步提高分析和解決問題的能力。1.2設計任務計算機系統(tǒng)設計的總體目標是在 logisim 平臺設計一款支持特定指令系統(tǒng)的 5 段流水 CPU。具體設計任務如下:1)支持 20 條基本指令2)支持 5 段流水機制,可處理數(shù)據(jù)冒險,結(jié)構(gòu)冒險,分支冒險;3)能正確運行自己編寫的
8、測試程序,測試程序應能涵蓋所有指令。4)能正確運行教師提供的標準測試程序5)具有自動統(tǒng)計功能,自動統(tǒng)計執(zhí)行周期,不同冒險沖突次數(shù),動態(tài)預測成功次數(shù)。1.3設計要求根據(jù)課堂上學習的知識以及查閱的相關書籍資料,在 Logisim 平臺上設計一款支持特定 20 條基本指令的指令系統(tǒng)的 5 段流水 CPU。具體要求如下:1)支持 20 條基本指令2)支持 5 段流水機制,可處理數(shù)據(jù)冒險,結(jié)構(gòu)冒險,分支冒險;4華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告3)能正確運行自己編寫的測試程序,測試程序應能涵蓋所有指令。4)能正確運行教師提供的標準測試程序5)具有自動統(tǒng)計功能,自動統(tǒng)計
9、執(zhí)行周期,不同冒險沖突次數(shù),動態(tài)預測成功次數(shù)。5華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告2實驗原理與環(huán)境2.1 實驗原理實驗原理是所學的計算機組成原理中 CPU 的構(gòu)建,結(jié)合數(shù)字邏輯,流水線的相關知識,構(gòu)建 PC、ALU、IM、DM、控制器等主要器件,構(gòu)建專用數(shù)據(jù)通路,最后搭建一款流水 CPU。2.2 實驗環(huán)境實驗環(huán)境:Logisim 仿真平臺。6華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告3總體方案設計3.1構(gòu)建單周期 CPU3.1.1 總體設計本次我們采用的方案是硬布線控制,且主、控存分開的方案,即采用硬布線控制方式,在 Logisi
10、m 中利用已有的功能器件,構(gòu)造 PC,RF,ALU,Decode,控制器,NPC,擴展器,然后構(gòu)造數(shù)據(jù)通路,采用工程化方法設計。 總體結(jié)構(gòu)圖如圖 3.1 所示。 圖 3.1 總體結(jié)構(gòu)圖3.1.2 主要功能部件1. 程序計數(shù)器 PCPC 在不跳轉(zhuǎn)時執(zhí)行加 1 操作,因此用計數(shù)器做基礎,在該基礎上利用計數(shù)器的加載端加載 offset 實現(xiàn)跳轉(zhuǎn)。 PC指令指令存儲器存儲器AddrAddrDataDataDECODERFA AB BZ ZALUALU數(shù)據(jù)存儲器數(shù)據(jù)存儲器AddrAddrReadReadDataDataWriteWriteDataData7華華 中中 科科 技技 大大 學學 課課 程程
11、設設 計計 報報 告告2. 指令存儲器 IM,數(shù)據(jù)存儲器 DM指令存儲器 IM 用 ROM 構(gòu)造,數(shù)據(jù)存儲器 DM 用 RAM 構(gòu)造。在主電路中顯示 IM,DM,便于觀察。3. 寄存器堆 RF寄存器堆 RF 用 4 個寄存器組成,用解碼器和控制信號 RegW 控制選擇將數(shù)據(jù)存入哪個寄存器,用數(shù)據(jù)選擇器控制用哪個寄存器輸出數(shù)據(jù)。 4. 運算器 ALU運算器由加法器,減法器,移位器,比較器,與門,或門,數(shù)據(jù)選擇器組成。加法器實現(xiàn)加法運算,減法器實現(xiàn)減法運算,移位器實現(xiàn)邏輯左移、邏輯右移、算術右移,與門實現(xiàn)與運算,或門實現(xiàn)或運算,比較器實現(xiàn)小于置 1。 5. 控制器 控制器由指令的操作碼 OP 字段
12、 4 位,通過真值表,自動生成各個控制信號的組合邏輯。3.2可支持理想流水線的多周期 CPU 設計3.2.1 總體設計理想流水線的多周期 CPU 設計方案為將指令執(zhí)行過程分為取指 IF、指令譯碼ID、執(zhí)行 EX、數(shù)據(jù)存取 MEM、寫回 WB5 段,在鄰接的兩段中插入由寄存器組成的接口,即四個接口 IF/ID, ID/EX,EX/MEM,MEM/WB。每個接口存儲后面階段要使用的數(shù)據(jù)和控制信號。所有控制信號在指令譯碼 ID 階段生成,不在后面階段生成。3.2.2 接口部件設計接口是利用理想流水線的關鍵部件。接口由寄存器組成,存儲前一個階段生成8華華 中中 科科 技技 大大 學學 課課 程程 設設
13、 計計 報報 告告的數(shù)據(jù)和控制信號和后面階段所需的數(shù)據(jù)和控制信號。IF/ID 只需存儲 PC,沒有控制信號,因為控制信號在 ID 階段生成。ID/EX 存儲所有控制信號以及 EX 和 WB 所需的數(shù)據(jù),其中控制信號分為三類,分別為 EX,MEM,WB 所需的控制信號。EX/MEM 存儲 MEM,WB 所需控制信號和數(shù)據(jù)。MEM/WB 存儲 WB 所需控制信號和數(shù)據(jù)。3.2.3 流水沖突檢測器由于采用指令存儲器和數(shù)據(jù)存儲器分開的設計,不存在結(jié)構(gòu)冒險,但是存在數(shù)據(jù)冒險和控制冒險,產(chǎn)生這兩類冒險時,流水線便會產(chǎn)生沖突。因此要設計冒險檢測部件,即流水線沖突檢測器。沖突檢測器檢測數(shù)據(jù)冒險和控制冒險,數(shù)據(jù)
14、冒險通過檢測 EX 段和 MEM 段的 RegW 信號是否有效以及目的寄存器號是否和 ID 段的源寄存器號相同來判斷是否產(chǎn)生沖突,若滿足 RegW 信號有效且目的寄存器號和源寄存器號相同這兩個條件則產(chǎn)生沖突;控制冒險通過檢測指令是否是跳轉(zhuǎn)指令且執(zhí)行跳轉(zhuǎn)來判斷是否產(chǎn)生沖突,若是跳轉(zhuǎn)指令且執(zhí)行跳轉(zhuǎn)則產(chǎn)生沖突。上面所述的沖突檢測器是只限于插入氣泡方案的,數(shù)據(jù)重定向和動態(tài)分支預測方案的數(shù)據(jù)冒險只有一種情況,即 sw 指令后面緊跟著一條要使用目的寄存器的指令,其他的數(shù)據(jù)冒險通過旁路解決了;控制冒險沒有變化。3.2.4 插入氣泡的流水沖突處理流水沖突檢測器檢測出沖突后,指令將會阻塞一個時鐘周期,IF、ID
15、 段的指令應該保持不變,實現(xiàn)方法是保持 PC 和 IF/ID 流水寄存器不變,即相當于阻塞,而從EX 段開始的流水線后半部分必須“空轉(zhuǎn)” ,即它們執(zhí)行的指令不產(chǎn)生任何結(jié)果,實現(xiàn)方法是把 ID/EX 流水寄存器的所有控制信號置為 0,這樣不會產(chǎn)生任何操作,相當于空轉(zhuǎn)。3.2.5 數(shù)據(jù)重定向的流水沖突處理數(shù)據(jù)重定向產(chǎn)生沖突后,大部分數(shù)據(jù)冒險會被旁路解決,只有 sw 指令后面緊跟著一條要使用目的寄存器的指令這一種情況無法通過旁路解決,這種情況和控制冒險的處理方法和插入氣泡方案一樣。至于旁路就是將前一條指令的計算結(jié)果通過另9華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告外一條線
16、路傳遞給后一條指令。實現(xiàn)方法是通過數(shù)據(jù)選擇器將 ALU 的輸入端A、B、DM 存儲數(shù)據(jù)的輸入端 D、顯示器的輸入端的數(shù)據(jù)來源分為三部分,這三部分數(shù)據(jù)來源分別為寄存器堆 RF、EX/MEM 流水寄存器、MEM/WB 流水寄存器,通過控制信號正確選擇數(shù)據(jù)來源就能讓流水線正確執(zhí)行。3.2.6 動態(tài)分支預測的流水沖突處理動態(tài)分支預測處理數(shù)據(jù)冒險的方法與數(shù)據(jù)重定向一樣,不同的是對控制冒險的處理。動態(tài)分支預測通過提前預測分支指令是否跳轉(zhuǎn)來提前取指,而不是在判斷分支指令確定跳轉(zhuǎn)后再取指。這樣如果預測正確則在處理分支指令時不需插入氣泡,進一步減少時鐘周期數(shù)。10華華 中中 科科 技技 大大 學學 課課 程程
17、設設 計計 報報 告告4詳細設計與實現(xiàn)4.1構(gòu)建單周期 CPU 4.1.1 主要功能部件實現(xiàn)1. 程序計數(shù)器 PC選用的元器件選用的元器件: 計數(shù)器,時鐘,非門。輸入輸入: 時鐘信號、清零信號、offset、分支控制信號Bran。 輸出輸出: 計數(shù)器的輸出端。具體實現(xiàn)具體實現(xiàn): 計數(shù)器的時鐘端連線時鐘,清零直接連接計數(shù)的清零端,計數(shù)器的輸出端連接輸出引腳,offset連接計數(shù)器加載端,Bran連接計數(shù)器的加載,Bran的非連接計數(shù)器的計數(shù),具體電路見圖 4.1。 圖 4.1 PC構(gòu)造圖2.運算器 ALU運算器由與門,或門,加法器,減法器,移位器,比較器,數(shù)據(jù)選擇器組成。11華華 中中 科科 技
18、技 大大 學學 課課 程程 設設 計計 報報 告告輸入輸入:輸入引腳輸出輸出:數(shù)據(jù)選擇器的輸出具體實現(xiàn):具體實現(xiàn):輸入 A,B 直接連接加法器,減法器,比較器,與門,或門的輸入端,輸入 A 連接移位器的輸入端,B 的低四位連接移位器的另一個輸入端,最后將這 8個結(jié)果連接數(shù)據(jù)選擇器的輸入。電路圖見圖 4.2。圖 4.2 ALU 構(gòu)造圖3. 寄存器堆 RF 寄存器堆 RF 用 4 個寄存器組成,用解碼器控制選擇將數(shù)據(jù)存入哪個寄存器,用數(shù)據(jù)選擇器控制用哪個寄存器輸出數(shù)據(jù)。輸入:輸入:寄存器編號、存儲到寄存器的值12華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告輸出:輸出:寄存
19、器中的值具體實現(xiàn):具體實現(xiàn):寄存器編號輸入 R1、R2 連接到數(shù)據(jù)選擇器的選擇端,選擇要讀的寄存器;寄存器編號輸入 W 連接到解碼器的輸入端,解碼器的輸出與 RegW 信號相與連接到四個寄存器的輸入端,控制數(shù)據(jù)寫到哪個寄存器中。電路圖見圖 4.3。 圖 4.3 RF 電路圖4.解碼器 Decode 輸入:輸入:指令 IR 輸出:輸出:立即數(shù) IMM,寄存器號 rd、rt、rs,指令碼 OP,跳轉(zhuǎn)地址 Adr具體實現(xiàn):具體實現(xiàn):指令 IR 連接到分離器,再根據(jù)各個輸出所需的位數(shù)用分離器連接構(gòu)成各個輸出。具體電路見圖 4.4。13華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告
20、告 圖 4.4 Decode 的電路圖5.控制器 Control輸入:輸入:指令碼 OP輸出:輸出:各種控制信號,SrcA、SrcB、bne、beq、bgt、RegDst、RegW、MemR、MemW、jump、ALUtoR、AluC具體實現(xiàn):具體實現(xiàn):OP 連接分離器分成由高到低的 4 位 a、b、c、d,通過對a、b、c、d 使用分析電路,用組合邏輯構(gòu)造各個控制信號。具體電路見圖 4.5。14華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 4.5 控制器電路圖4.2可支持理想流水線多周期 CPU 理想流水線多周期 CPU 關鍵是設計接口,需要四個接口,分別為IF
21、/ID,ID/EX,EX/MEM,MEM/WB。以下為這四個接口要存儲的數(shù)據(jù)和控制信號。IF/ID 接口:這個接口只存儲指令地址值 PC,無控制信號,控制信號在 ID 階段生成,此時無控制信號。該接口非常簡單就不截圖了。ID/EX 接口:該接口存儲控制器生成的所有控制信號,控制信號不再在其他階段生成,因此該接口存儲的數(shù)據(jù)及控制信號非常多,也是最容易出錯的。該接口存儲的數(shù)據(jù)及控15華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告制信號見表 4.1。 表 4.1 ID/EX 接口存儲的數(shù)據(jù)及控制信號EXMEMWB數(shù)據(jù)PC、D1、U、S、rd、rtD2、adrD2控制信號Src
22、A、SrcB、RegDst、ALUCbgt、beq、bne、MemW、MemR、jumpRegW、halt、ALUtoRPC 為指令地址值,D1、D2 為 RF 輸出,U、S 為無符號數(shù)擴展、有符號數(shù)擴展,rd、rt 為寄存器編號,adr 為 jump 指令的后 12 位,SrcA、SrcB 為 ALU 輸入端 A、B 數(shù)據(jù)來源的控制信號,RegDst 為控制寫入哪個寄存器的控制信號,ALUC 為控制 ALU 執(zhí)行何種運算的信號,RegW 為控制寄存器是否寫的信號,ALUtoR 為控制寄存器堆輸入 Din 的信號。具體連接線路如圖 4.1 所示。16華華 中中 科科 技技 大大 學學 課課 程
23、程 設設 計計 報報 告告圖 4.1 ID/EX 接口連接圖17華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告EX/MEM 接口:存儲數(shù)據(jù)和控制信號見表 4.2。 表 4.2 EX/MEM 接口存儲數(shù)據(jù)及控制信號MEMWB數(shù)據(jù)BPC、JPC、D2、FD2、F控制信號MemR、MemW、bgt、beq、bne、jump、g、eW、RegW、halt、ALUtoRBPC、JPC 分別為分支和跳轉(zhuǎn)地址值,F(xiàn) 為 ALU 計算結(jié)果,g、e 為 ALU 中 A、B 比較結(jié)果,AB,g=1;A=B,e=1。具體連接見圖 4.218華華 中中 科科 技技 大大 學學 課課 程程 設設
24、 計計 報報 告告 圖 4.2 EX/MEM 連接圖19華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告MEM/WB 接口:要存儲的數(shù)據(jù)及控制信號見表 4.3 表 4.3MEM/WB 接口存儲數(shù)據(jù)及控制信號數(shù)據(jù)控制信號WBF、DMW、RegW、halt、ALUtoRDM 為 DM 存儲器輸出的值。具體連接見圖 4.3。 圖 4.3 MEM/WB 接口連接圖20華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告4.3流水線沖突檢測器由于采用指令存儲器和數(shù)據(jù)存儲器分開的設計,不存在結(jié)構(gòu)冒險,但是存在數(shù)據(jù)冒險和控制冒險,產(chǎn)生這兩類冒險時,流水線便會產(chǎn)生沖突。
25、因此要設計冒險檢測部件,即流水線沖突檢測器。沖突檢測器檢測數(shù)據(jù)冒險和控制冒險,數(shù)據(jù)冒險通過檢測 EX 段和 MEM 段的 RegW 信號是否有效以及目的寄存器號是否和 ID 段的源寄存器號相同來判斷是否產(chǎn)生沖突,若滿足 RegW 信號有效且目的寄存器號和源寄存器號相同這兩個條件則產(chǎn)生沖突;控制冒險通過檢測指令是否是跳轉(zhuǎn)指令且執(zhí)行跳轉(zhuǎn)來判斷是否產(chǎn)生沖突,若是跳轉(zhuǎn)指令且執(zhí)行跳轉(zhuǎn)則產(chǎn)生沖突。上面所述的沖突檢測器是只限于插入氣泡方案的,數(shù)據(jù)重定向和動態(tài)分支預測方案的數(shù)據(jù)冒險只有一種情況,即 sw 指令后面緊跟著一條要使用目的寄存器的指令,其他的數(shù)據(jù)冒險通過旁路解決了;控制冒險沒有變化。具體電路見圖 4
26、.4。 圖 4.4 沖突檢測器21華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告4.4插入氣泡的流水沖突處理流水沖突檢測器檢測出沖突后,指令將會阻塞一個時鐘周期,IF、ID 段的指令應該保持不變,實現(xiàn)方法是保持 PC 和 IF/ID 流水寄存器不變,即相當于阻塞,而從EX 段開始的流水線后半部分必須“空轉(zhuǎn)” ,即它們執(zhí)行的指令不產(chǎn)生任何結(jié)果,實現(xiàn)方法是把 ID/EX 流水寄存器的所有控制信號置為 0,這樣不會產(chǎn)生任何操作,相當于空轉(zhuǎn)。保持 PC 寄存器不變的電路圖如圖 4.5 所示。 圖 4.5 PC 電路圖保持 IF/ID 流水寄存器不變的電路圖如圖 4.6 所示。2
27、2華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 4.6 IF/ID 流水器寄存器的電路圖清空 ID/EX 流水寄存器的控制信號的電路圖如圖 4.7 所示。23華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告圖 4.7 ID/EX 流水寄存器電路圖24華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告4.5數(shù)據(jù)重定向的流水沖突處理數(shù)據(jù)重定向產(chǎn)生沖突后,大部分數(shù)據(jù)冒險會被旁路解決,只有 sw 指令后面緊跟著一條要使用目的寄存器的指令這一種情況無法通過旁路解決,這種情況和控制冒險的處理方法和插入氣泡方案一樣。至于旁路就是將前一條
28、指令的計算結(jié)果通過另外一條線路傳遞給后一條指令。實現(xiàn)方法是通過數(shù)據(jù)選擇器將 ALU 的輸入端A、B、DM 存儲數(shù)據(jù)的輸入端 D、顯示器的輸入端的數(shù)據(jù)來源分為三部分,這三部分數(shù)據(jù)來源分別為寄存器堆 RF、EX/MEM 流水寄存器、MEM/WB 流水寄存器,通過控制信號正確選擇數(shù)據(jù)來源就能讓流水線正確執(zhí)行。旁路的控制信號的產(chǎn)生電路如圖 4.8 所示。25華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 4.8 旁路控制電路圖26華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖中 a1 有效時控制 ALU 的輸入端 A 選擇數(shù)據(jù)來源于 EX/MEM
29、 流水寄存器,a2 有效時控制 ALU 的輸入端 A 選擇數(shù)據(jù)來源于 MEM/WB 流水寄存器;b1 有效時控制 ALU 的輸入端 B 選擇數(shù)據(jù)來源于 EX/MEM 流水寄存器,b2 有效時控制 ALU的輸入端 B 選擇數(shù)據(jù)來源于 MEM/WB 流水寄存器;D1EXMEM 信號有效時控制顯示器的輸入端 D1 的數(shù)據(jù)來源于 EX/MEM 流水寄存器,D1MEMWB 信號有效時控制顯示器的輸入端 D1 的數(shù)據(jù)來源于 MEM/WB 流水寄存器;D2EXMEM 信號有效時控制數(shù)據(jù)存儲器的數(shù)據(jù)輸入端 D2 的數(shù)據(jù)來源于 EX/MEM 流水寄存器,D2MEMWB 信號有效時控制數(shù)據(jù)存儲器的數(shù)據(jù)輸入端 D2
30、 的數(shù)據(jù)來源于 MEM/WB 流水寄存器。旁路的具體連接示意圖見圖 4.9。27華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 4.9 旁路電路圖圖 4.9 左旋了 90 度,圖中右下的封裝部件就是圖 4.8 所示的旁路控制部件??刂菩盘柦?jīng)過寄存器同步后連接到數(shù)據(jù)選擇器的選擇端,控制選擇 ALU、顯示器、數(shù)據(jù)存儲器的數(shù)據(jù)來源。通過旁路就能解決絕大部分的數(shù)據(jù)冒險,從而大大減少插入氣泡的數(shù)量,進而減少時鐘周期數(shù),提高 CPU 速度。4.6動態(tài)分支預測的流水沖突處理動態(tài)分支預測方案處理數(shù)據(jù)冒險與數(shù)據(jù)重定向方案沒有區(qū)別,主要區(qū)別在于控28華華 中中 科科 技技 大大 學學
31、課課 程程 設設 計計 報報 告告制冒險的沖突處理。動態(tài)分支預測通過提前預測分支指令是否跳轉(zhuǎn)來提前取指,而不是在判斷分支指令確定跳轉(zhuǎn)后再取指。這樣如果預測正確則在處理分支指令時不需插入氣泡,進一步減少時鐘周期數(shù)。預測方法是根據(jù)分支指令過去是否跳轉(zhuǎn)來預測其是否跳轉(zhuǎn),如果過去該分支指令跳轉(zhuǎn)則預測跳轉(zhuǎn)。用一位預測位來預測是否跳轉(zhuǎn)準確率不夠高,用三位及以上的預測位其準確率與兩位預測位沒有太大差別,從而使用兩位預測位。預測分支指令是否跳轉(zhuǎn)的電路圖如圖 4.10 所示。 圖 4.10 預測電路圖29華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告5實驗過程與調(diào)試5.1 測試用例和功能
32、測試5.1.1 測試用例 所有方案都是采用相同的測試用例,理想流水線方案除外,該方案采用的是理想流水線測試用例??倻y試用例 benchmark 分為 B 指令測試、JUM 指令測試、數(shù)據(jù)相關測試、移位測試、走馬燈測試、排序測試 6 個小測試。測試時先從五個小測試用例開始測試,若有問題及時調(diào)試,最好按照測試用例大小從小到大測試這樣便于調(diào)試。5.2 性能分析各個方案的各個測試用例的時鐘周期數(shù)見表 5.1。 表 5.1 各方案測試用例時鐘周期數(shù)B 指令JUM 指令數(shù)據(jù)相關移位走馬燈排序benchmark單周期149211332009461277插入氣泡24215547029219772729數(shù)據(jù)重定
33、向24212516721415521923動態(tài)分支預測24212514520611841489單周期 CPU 方案雖然各測試用例的時鐘周期數(shù)都最少,但是其時鐘周期長,總的 CPU 時間反而更長,性能最差。插入氣泡方案、數(shù)據(jù)重定向方案、動態(tài)分支預測方案各測試用例的時鐘周期數(shù)依次減少,它們的時鐘周期相同,因而總 CPU 時間也依次減少,性能依次增強。30華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告5.3 主要故障與調(diào)試5.3.1 故障 1故障現(xiàn)象故障現(xiàn)象單周期:執(zhí)行 sw 指令時,sw 指令功能正確,但是將要存入存儲器的寄存器 rt的值改變了,改變?yōu)橐嫒氲拇鎯ζ鞯刂返脑?/p>
34、值。原因分析原因分析在 RF 模塊中沒有寄存器寫的信號 RegW,導致存入 RF 中的數(shù)據(jù) Din 無論如何都會存入寄存器。解決方案解決方案增加控制信號 RegW,該信號在執(zhí)行第 18,1014 條指令有效。在控制器中用組合邏輯生成 RegW。 圖 5.1 RegW 的生成圖31華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告5.3.2 故障故障 2故障現(xiàn)象故障現(xiàn)象單周期:指令 bgt 執(zhí)行出錯,該跳轉(zhuǎn)的時候沒跳轉(zhuǎn),不該跳轉(zhuǎn)的時候又跳轉(zhuǎn)了。原因分析原因分析我自己寫了一個小測試程序,一步步執(zhí)行,用探測器仔細觀察每條通路的值,發(fā)現(xiàn)原因是控制信號 SrcA,SrcB 出錯,這兩
35、個信號是控制 ALU 的 A,B 數(shù)據(jù)來源的。這個錯誤主要是我在生成這兩個控制信號時,沒有考慮清楚在執(zhí)行分支指令的情況。解決方案解決方案修改控制信號 SrcA,SrcB,重新生成它們的表達式。 圖 5.2 SrcA 的生成圖32華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖5.3 SrcB 的生成圖我測試了所有 20 條指令,只有在執(zhí)行 bgt 時這兩個信號出錯,執(zhí)行其他指令時均正確,因此我加了數(shù)據(jù)選擇器,將 20 條指令分為 bgt 和另外 19 條指令,在 bgt 有效時讓 SrcA=1,SrcB=00,其他指令維持原來的情況。5.3.3 故障故障 3故障現(xiàn)象故
36、障現(xiàn)象插入氣泡流水線:電路產(chǎn)生明顯震蕩。故障原因故障原因氣泡信號控制各種控制信號清零,是異步清零,氣泡一產(chǎn)生就將各種控制信號清零,而控制信號的改變又在氣泡產(chǎn)生電路中改變了氣泡的值,導致電路產(chǎn)生震蕩。解決方案解決方案采用同步清零的方式,清零各種控制信號。將氣泡信號的非和控制信號用與門做與操作,再通過寄存器,即可實現(xiàn)同步清零。如圖 5.4 所示。33華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 5.4 同步清零5.3.4 故障故障 4故障現(xiàn)象故障現(xiàn)象插入氣泡流水線:氣泡檢測出錯,遇到 DISP、lui 指令檢測電路出錯。故障原因故障原因DISP、lui 指令的兩個源寄
37、存器號中的一個與氣泡檢測無關,DISP 的 rt、lui 的rs,不能參與氣泡檢測,而其他要用到 ALU 的指令的兩個源寄存器號都要參與氣泡檢測,因此在遇到這兩個指令時應分別屏蔽 rt、rs。解決方案解決方案屏蔽 DISP 的 rt、lui 的 rs,見圖 5.5。34華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 5.5 氣泡檢測電路圖我后來仔細思考后發(fā)現(xiàn),該氣泡檢測電路還是不對,盡管可以通過所有的測試,測試文件指令沒有包含所有情況,導致這個檢測電路沒有出錯。lui 和 jump 指令的兩個源寄存器號都與氣泡檢測無關,DISP 的 rs,ori、andi、addi
38、、lw 的 rt 與氣泡檢測無關,因此要屏蔽這些信號,見圖 5.6。35華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 5.6 完善的氣泡檢測電路圖完善后的電路能更加正確的檢測氣泡是否要產(chǎn)生。5.3.5 故障故障 5故障現(xiàn)象故障現(xiàn)象數(shù)據(jù)重定向方案:執(zhí)行 sw 指令沒有將 rt 的值存儲到 DM 的正確地址。故障原因故障原因我一開始做數(shù)據(jù)重定向時只是將 MEM 段 ALU 計算的值 F 和 WB 段 DM 讀出來的值 DB 重定向到 ALU 的 A 和 B,但是沒有將 F 和 DB 重定向到 DM 的數(shù)據(jù)輸入端D,導致 sw 的前一條指令計算的值沒有傳到 DM 的數(shù)據(jù)
39、輸入端。解決方案解決方案利用兩個數(shù)據(jù)選擇器選擇 DM 的數(shù)據(jù)輸入端 D 的數(shù)據(jù)來源。見圖 5.736華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告 圖 5.7 數(shù)據(jù)重定向電路圖圖中左下是控制信號產(chǎn)生器,控制信號控制 ALU 的 A、B,D1、D2 的數(shù)據(jù)來源,決定數(shù)據(jù)是來源于寄存器堆,還是來源于前一條指令 ALU 的計算值 F,還是來源于前兩條指令 ALU 的計算值 F 或者 DM 中讀出來的值(這種情況是前兩條指令是lw) ,數(shù)據(jù)只可能來源于這三種情況。5.3.6 故障故障 6故障現(xiàn)象故障現(xiàn)象數(shù)據(jù)重定向方案:指令 DISP 執(zhí)行出錯,沒有正確顯示寄存器的值。故障原因故
40、障原因該故障與故障 5 是同一原因,數(shù)據(jù)沒有重定向到 D1,D1 是要顯示的值。解決方案解決方案與故障 5 的解決方案一樣,用數(shù)據(jù)選擇器選擇 D1 的數(shù)據(jù)來源。電路連接圖見上圖 5.7。5.3.7 故障故障 7故障現(xiàn)象故障現(xiàn)象37華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告動態(tài)分支預測方案:PC 部件出錯,地址轉(zhuǎn)移邏輯不正確。故障原因故障原因指令地址轉(zhuǎn)移我一開始一直做不對,先想著在原先的地址轉(zhuǎn)移邏輯的基礎上做修改來完成新的地址轉(zhuǎn)移邏輯,結(jié)果被原先的地址轉(zhuǎn)移邏輯誤導,沒有仔細分析動態(tài)分支預測的地址轉(zhuǎn)移邏輯。新的地址轉(zhuǎn)移邏輯應該是,預測分支跳轉(zhuǎn)則 PC 立即跳轉(zhuǎn)到分支指令
41、要跳轉(zhuǎn)的地址,預測不跳轉(zhuǎn)則 PC 加 1;還有預測正確與否也對 PC 有影響,預測正確則 PC 加 1,預測錯誤則要對 PC 做修改,修改分兩種情況,如果是原先預測跳轉(zhuǎn)結(jié)果預測錯誤,則將 PC 修改為 EX 階段的 PC 加 1;如果是預測不跳轉(zhuǎn)結(jié)果預測錯誤,即在 EX 階段執(zhí)行的是跳轉(zhuǎn)指令,則將 PC 修改為 EX 階段的 PC加 1 加 offset,這部分和原先的地址轉(zhuǎn)移邏輯中的跳轉(zhuǎn)部分是一樣的。解決方案解決方案分析出了正確的地址轉(zhuǎn)移邏輯,連接電路實現(xiàn)即可,電路圖見圖 5.8。 圖 5.8 地址轉(zhuǎn)移邏輯圖38華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告5.3.8
42、 故障故障 8故障現(xiàn)象故障現(xiàn)象動態(tài)分支預測方案:判斷跳轉(zhuǎn)指令是否正確出錯,即 correct 信號的控制出錯。故障原因故障原因這個故障我總共錯過三次,第一次是因為預測分支信號 FENZHI 沒有經(jīng)過兩個寄存器就與 EX 階段的跳轉(zhuǎn)信號 CON 比較,導致 FENZHI 信號早了兩個周期;第二次是因為預測出錯后會產(chǎn)生兩條廢指令,這兩條指令是不產(chǎn)生任何實際結(jié)果的,不應該參與 correct 的控制,我原先沒有對這種情況沒有處理導致出錯;第三次的原因是產(chǎn)生氣泡,導致 IF 階段的 FENZHI 信號應該阻塞一個周期,然后再與 CON 比較。解決方案解決方案針對這三個原因,我一個個的解決,最后 cor
43、rect 的控制邏輯如圖 5.9 所示。 圖 5.9 correct 控制邏輯圖圖中比較器連接的另一個輸入是判斷是否跳轉(zhuǎn)的信號 CON。39華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告5.4 實驗流程 實驗流程見表 5.2。表 5.2 課程設計進度表時間進度第一天封裝了 ALU、RF、Decode;實現(xiàn)部分控制器信號第二天完成了單周期 cpu ,通過了測試程序 benchmark,周期數(shù) 04fc第三天完成了單周期部分的實驗報告,封裝了流水線需要的四個寄存器第四天完成了理想流水線,運行理想流水線測試.hex 正確第五天閱讀參考文獻,完成了檢測數(shù)據(jù)冒險的電路并連接到主電
44、路中第六天完成了插入氣泡方案,功能正確,周期數(shù)正確,完成故障報告第七天完成了數(shù)據(jù)重定向方案,功能正確,周期數(shù)正確,完成故障報告第八天閱讀資料,初步完成動態(tài)分支預測電路第九天完成動態(tài)分支預測方案,功能正確,周期數(shù)正確,完成故障報告第十天完成所有方案,準備檢查40華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告6設計總結(jié)與心得6.1 課設總結(jié)這次課程設計設計了一款支持特定指令系統(tǒng)的 5 段流水 CPU,能處理數(shù)據(jù)冒險、結(jié)構(gòu)冒險、控制冒險和支持動態(tài)分支預測,具有自動統(tǒng)計功能,自動統(tǒng)計執(zhí)行周期,不同冒險沖突次數(shù),動態(tài)預測成功次數(shù),能正確運行自己編寫的測試程序,測試程序應能涵蓋所有
45、指令,能正確運行教師提供的標準測試程序。實驗一共完成了 5 個方案,分別是單周期 CPU 方案、理想流水線方案、插入氣泡方案、數(shù)據(jù)重定向方案和動態(tài)分支預測方案,設計了 5 款功能相同但執(zhí)行速度逐步提高同時難度也逐步增加的 CPU。實驗由易到難一步一步引導學生完成實驗,十分科學有效。實驗使用 Logisim 仿真平臺作為實驗環(huán)境,對該平臺更加熟練使用,也充分認識了該平臺的方便與實用,同時也學習使用了匯編器,讓測試變得更加簡單,不用自己寫機器碼,大大節(jié)省了測試的時間。另外也使用了快盤和 tower 平臺,方便師生溝通交流。這些平臺與軟件十分方便,我會在以后自己做組成原理實驗時繼續(xù)使用。6.2 課設
46、心得本次課程設計實驗一共耗時兩周,完成了支持 20 條特定指令指令系統(tǒng)的 5 段流水 CPU,同時能處理數(shù)據(jù)冒險、結(jié)構(gòu)冒險、控制冒險,支持動態(tài)分支預測功能。該實驗我一共完成了 5 個 CPU 方案,即單周期 CPU 方案、理想流水線方案、插入氣泡方案、數(shù)據(jù)重定向方案和動態(tài)分支預測方案,實驗工作量還是挺大的,不過我都完成了,為自己感到自豪,很有成就感!整個實驗做下來當然不是一帆分順,遇到了不少困難。不過正是通過解決困難才提高了我對計算機組成原理的理解,才提高了我對計算機設計的認識,也鍛煉了我的動手實踐能力。下面說說遇到的主要困難。一、在做單周期 CPU 時由于有上學期做的三次實驗的經(jīng)驗,只在設計控器部件時不知怎么下手,其他部件都很快就完成了。后來在老師介紹工程化的方41華華 中中 科科 技技 大大 學學 課課 程程 設設 計計 報報 告告法后,明白將 20 條指令執(zhí)行過程中所需的部件的輸入輸出一一列在一張表中,觀察這些輸入輸出有多少類,若不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司組織健步走活動方案
- 公司植樹節(jié)項目活動方案
- 2025年運動醫(yī)學職業(yè)資格考試試卷及答案
- 拓展知識-室外消火栓系統(tǒng)的工作原理
- 2025年心理咨詢與治療的基礎知能力考試卷及答案
- 2025年小兒醫(yī)學基礎與臨床技能考試卷及答案
- 2025年心理健康教育考試試卷及答案
- 2025年社會心理學基礎知識考試試卷及答案
- 2025年生物技術專業(yè)研究生入學考試試卷及答案
- 2025年企業(yè)培訓與發(fā)展專業(yè)畢業(yè)生測評試卷及答案
- 高中生物2015-2024年10年高考真題專題分類匯編-專題14體液調(diào)節(jié)考點2激素調(diào)節(jié)的過程
- 2024年四川省成都市中考地理試卷(含答案與解析)
- 典當行內(nèi)部基本管理制度
- 2024年內(nèi)蒙古呼和浩特中考滿分作文《留在記憶里的芬芳》
- GB/T 29456-2025能源管理體系實施、保持和改進GB/T 23331能源管理體系指南
- 北京市清華附小2024-2025學年數(shù)學三下期末質(zhì)量檢測模擬試題含解析
- (2025春新版本)北師大七年級下冊生物全冊教案
- 2025年教科新版五年級語文下冊階段測試試卷
- 《MLCC制程介紹》課件
- 關于物業(yè)客服培訓的
- 醫(yī)院感染管理制度培訓
評論
0/150
提交評論