何芳成+韓曉彤+張珊+時浩然+周曉軍



摘 要:基于EDA技術設計的一種五級流水線CPU,它將指令分解為取指令、指令譯碼、指令執(zhí)行、訪問存儲器、數(shù)據(jù)寫回五階段流水處理。首先進行結構設計,然后解決流水線CPU的各項相關問題,再進行各模塊設計。最后基于CycloneⅢ系列FPGA硬件平臺和QuartusⅡ工具開發(fā)平臺,利用EP3C40Q240C8型FPGA芯片進行設計與調試。
關鍵詞:EDA;流水線;CPU
引言
CPU是由基本的功能模塊和與之相連的數(shù)據(jù)通路組成,對于CPU的設計,首先必須了解其結構的細節(jié)和功能模塊的內容。然后對各模塊電路進行編輯設計、邏輯綜合、時序仿真和硬件設計,最后組裝完成整個硬件系統(tǒng)。在這個過程中還包括指令系統(tǒng)的設計和軟件程序調試等步驟。在流水線CPU設計過程中重點解決結構沖突、數(shù)據(jù)沖突、控制沖突三大問題。
1 流水線CPU工作原理
1.1 流水線原理
對于一條具體的指令執(zhí)行過程,通??梢苑殖晌鍌€部分:取指令,指令譯碼,取操作數(shù),運算,寫結果。其中前面三個步驟一般由指令控制器完成,后面兩步則由運算器完成。指令控制器完成了對第一條指令的處理后,不等待運算器完成后續(xù)的處理直接開始對第二條指令的處理。
1.2 CPU的結構與功能
CPU是負責執(zhí)行指令的,圖1為一個簡單指令的CPU結構圖。
對于馮·諾依曼結構的計算機來說,一旦程序進入存儲器后,就可由計算機自動完成取指令和執(zhí)行指令的任務,控制器就是專門用于完成此項工作的,它負責協(xié)調并控制計算機各個部件執(zhí)行程序的指令序列,其基本功能是取指令,分析指令和執(zhí)行指令。
1.3 流水線CPU工作原理
流水線是一個可以提高CPU運行效率的技術,它的核心思想是把多條指令的不同執(zhí)行階段重疊,讓CPU同時處理多條指令。在流水線CPU中,每條指令的執(zhí)行過程被分成多個執(zhí)行階段。只有當某指令的執(zhí)行階段都完成后,該指令才算執(zhí)行完畢。在每一個指令執(zhí)行階段中,當一條指令在該階段中完成執(zhí)行后,下一條指令將立即進入到該執(zhí)行階段來執(zhí)行。當流水線處于飽和狀態(tài)時,將同時有流水線級數(shù)的指令在同時運行。如圖2所示。
1.4 指令集
指令集是指CPU指令系統(tǒng)所能識別執(zhí)行的全部指令的集合。處理器要完成計算任務,需要具備運算、控制、傳送等指令。運算指令是由運算器單元(ALU)實現(xiàn),包括算術運算指令、邏輯指令和位移指令??刂浦噶钍怯沙俗鲞\算外的其他操作指令,如循環(huán)、跳轉、CPU控制等指令構成,由CPU控制器單元實現(xiàn)。數(shù)據(jù)傳送指令是完成數(shù)據(jù)傳送的任務,如寄存器、存儲器交換數(shù)據(jù)及自身交換數(shù)據(jù)的指令等。
2 流水線CPU創(chuàng)新設計
2.1 流水線工作的五個階段
取指令階段(IF),從指令存儲器中獲取指令存入IR寄存器,并更新PC寄存器的值。該階段完成計算下一條指令的地址(+1)以及取指操作,加法器完成加1操作,Lpm_Instrom完成取指操作。指令譯碼階段(ID),由IR寄存器中的指令的op和func字段譯碼出各個階段需要的控制信號,同時從寄存器組RegSet中獲取EXE階段所需要的操作數(shù)并將指令的立即數(shù)進行擴展。指令執(zhí)行階段(EXE),根據(jù)操作數(shù)計算出結果,算數(shù)運算由ALU完成,移位運算由移位器完成,通過控制信號Resultop選擇執(zhí)行結果。訪問存儲器階段(MEM),把EXE階段計算的結果作為數(shù)據(jù)存儲器的地址輸入端讀取數(shù)據(jù),若數(shù)據(jù)存儲器寫使能信號DMwen為高電平,那么需要把rt寄存器的數(shù)據(jù)寫入數(shù)據(jù)存儲器的對應存儲單元。數(shù)據(jù)寫回階段(WB),選擇寫回寄存器組RegSet的數(shù)據(jù),根據(jù)前面的流水段傳遞的控制信號REwen和目的寄存器RegDest將數(shù)據(jù)寫回。
在每一個階段完成一條指令在該階段的執(zhí)行任務之后,將進下一條指令的執(zhí)行。這樣,每兩個階段之間都需要有一組寄存器來保存剛剛執(zhí)行完成的指令的執(zhí)行結果。該執(zhí)行結果將交給下一個執(zhí)行階段,進行下一個階段的處理任務。
2.2 流水線CPU頂層設計
CPU主要由以ALU為核心的運算器模塊、以程序計數(shù)器PC和地址寄存器AR為核心的數(shù)據(jù)通路模塊、以微指令控制器為核心的控制器模塊、以程序控制器和數(shù)據(jù)RAM為核心的存儲模塊四個模塊構成。
算數(shù)邏輯單元模塊主要有ALU運算器,數(shù)據(jù)寄存器DR等部件,ALU運算器是CPU的核心,它可以執(zhí)行算數(shù)運算,也可以執(zhí)行邏輯運算。數(shù)據(jù)緩沖寄存器DR為ALU提供一個或兩個參與運算的操作數(shù),同時作為CPU、外部設備、主存之間的信息中轉站,對數(shù)據(jù)起暫存作用。數(shù)據(jù)通路模塊主要由程序計數(shù)器PC,地址寄存器AR,指令寄存器IR組成。程序計數(shù)器PC的功能是給出在主存中的下一條指令的地址。PC值的變化分為兩種情況,一是指令順序執(zhí)行的情況,二是跳轉指令的情況。地址寄存器AR用來保存當前CPU所要訪問的主存單元或I/O端口的地址。指令寄存器IR用來保存當前CPU正在執(zhí)行的一條指令。微程序控制器主要由控制存儲器、微指令寄存器和微指令地址形成部件三部分組成??刂拼鎯ζ饔靡源娣胖噶钕到y(tǒng)所對應的全部微程序。微程序控制器主要由微指令控制電路、微地址寄存器和微指令存儲器三個模塊組成。微地址分支轉移控制電路根據(jù)來自指令寄存器IR的指令操作碼生成一個微地址的控制信號,控制微程序按正確順序執(zhí)行微程序和實現(xiàn)分支轉移。微地址寄存器是用來存放從微指令存儲器中讀出的一條微指令信息,由控制字段和下地址字段組成。微指令存儲器是存取微程序的原件,其原件的生成可直接調用LPM宏模塊。組成的流水線CPU頂層結構圖如圖3所示。
3 結束語
流水線CPU是現(xiàn)代CPU非常流行的設計方式,它在只需要添加少數(shù)硬件的條件下大大提高了CPU的性能。本設計從了解并研究CPU工作原理開始,到熟悉并運用EDA技術,再到流水線CPU局部器件設計、模塊設計、整體設計,最后在FPGA硬件平臺和QuartusⅡ工具開發(fā)平臺進行模擬調試驗證了本設計符合設計要求。但本設計的CPU與實際應用中的CPU還存在較大的差距,在接下來的研究中小組成員仍將不斷豐富流水線CPU的知識,將本設計的流水線CPU升級至應用級別。
參考文獻
[1]史展,李占宣.基于FPGA的嵌入式CPU的VHDL設計[J].科技創(chuàng)新與應用,2013(9).
[2]潘松,黃繼業(yè).EDA技術與VHDL[M].北京:清華大學出版社,2013(4).
[3]潘松,潘明,黃繼業(yè).現(xiàn)代計算機組成原理[M].北京:科學出版社,2013.