【文章內(nèi)容簡介】
理器延遲調(diào)試 處理器的運算速度是衡量處理器好壞的最重要的標準,而運算速度和處理器的頻率息息相關,因此,處理器的延遲調(diào)試對處理器的性能有很關鍵的作用。本文介 紹了通用的幾種 ASIC 延遲調(diào)試方法,具體介紹了在工作中出現(xiàn)的發(fā)射模塊延遲的調(diào)試過程。 3) . 基于 VMM驗證方法學的對微處理器的驗證 現(xiàn)在隨著集成電路設計越來越復雜,微處理器的驗證成為整個處理器的開發(fā)過程中最重要的過程,往往驗證過程占整個開發(fā)設計的 70%80%。因此加速驗證的過程變得十分必要,而通過不斷的測試,修改原處理器設計中不合理的地方。本文通過基于 Systemverilog 自動對比平臺的搭建,基于 C 語言的對比模型,完成自動對比,加速驗證的速度。具體分析了在測試過程中遇見的幾個經(jīng)典的 BUG 以及修改方法 ?;诠δ芨采w率的通道劃分,基于嵌入式匯編的定向測試編寫,保證整個微處理器的功能正確性。在完成軟件仿真后,把整個處理器下載到 FPGA 中進行硬件驗證和應用程序驗證。 本章闡述了課題的研究背景與意義,總結了微處理器的發(fā)展現(xiàn)狀,分析了微處理器結構的作用,在此基礎上提出了研究課題,并且給出了本課題的主要研究工作和論文的結構安排。 第二章主要介紹 MIPS 處理器的指令集,以及 MIPS 處理器的結構流水線相關策略以及性能概括。 第三章詳細描述微處理器中的訪存部件模塊設計,包括 SRAM 的時序要求 以及應用, LSQ隊列以及訪存和內(nèi)存的交互。并且詳細描述發(fā)射模塊的結構體系設計,包括 IQ 準備和維護、指令發(fā)射和數(shù)據(jù)寫回。 第四章詳細介紹微處理器的延遲調(diào)試幾種方法,具體介紹了發(fā)射模塊調(diào)延遲的過程。 第五章介紹了基于 VMM 驗證方法學的對微處理器的驗證,搭建基于 systemverilog 語言的驗證自動對比平臺的搭建,對微處理器的 c 語言建模,快速的定位 BUG 位置,對功能覆蓋率通道的劃分,最后通過編寫嵌入式匯編的定向測試激勵達到功能覆蓋率 100%的設計目標。 西安理工大學碩士學位論文 4 2. 64bit MIPS 架構處理器體系結構 微處理 器分為 RSIC(精簡指令集處理器)和 CSIC(復雜指令級處理器)。兩種類型的處理器有著各自不同的優(yōu)缺點。本論文采用的是 MIPS 架構的 RSIC 處理器 【 23】 。 RSIC CPU 簡介 IBM 研究中心的 John Cocke 提出 RSIC(精簡指令集計算機)概念。相對于復雜指令集來說精簡的指令集指令數(shù)少 【 24】 。 RSIC 指令集包含了簡單基本的指令集,通過這些指令,就可以組成復雜的指令。相比于 CSIC( Complex Instruction Set Computing)微處理器來說 RSIC 微處理器有以下優(yōu)點 【 25】 : 1) .RSIC 微處理器對結構的依賴不大,設計簡單,結構簡單,驗證相對來說不復雜 【 25】 。 2).RSIC 指令集指令數(shù)不多,軟件開發(fā)相對簡單 【 25】 。 3).RSIC 編譯器編譯所使用的指令少,因此高級語言能更加有效的編寫 【 25】 。 RISC 微處理器不僅精簡了指令系統(tǒng),采用超標量和超流水線結構;它們的指令數(shù)目只有幾十條,卻大大增強了并行處理能力。 RSIC 處理器性能特點如下: 一:由于指令集簡化后,減少了指令的數(shù)量,也就是說減少了硬件的消耗; 二:采用大量 的寄存器,不需要通過頻繁的和內(nèi)存和 cache 交互,提高了處理速度; 三:取數(shù)存數(shù)與取指令分開執(zhí)行,使處理器可以完成更多的操作。 指令集 MIPS 指令編碼格式統(tǒng)一,都是 32位單字對齊。不同種類的指令格式有所不同按照類型分為三種: I 類型(立即數(shù)型)、 J類型(跳轉(zhuǎn)類型)和 R 類型(寄存器型)。其指令格式入圖 所示。圖 是立即數(shù)型, 015 位是立即數(shù)。 rs 是原操作數(shù)寄存器。 rt 是目的寄存器。 Opcode 表示這條指令執(zhí)行的是什么樣的操作。圖 是跳轉(zhuǎn)類型 025 位表示的是跳轉(zhuǎn)地址。圖 寄存器型,通過 funct 位和 opcode 位表明執(zhí)行的操作是什么樣的操作。如果是兩操作數(shù)指令,則 sa 沒用, rd 是目標寄存器, rt, rs是原操作數(shù)寄存器。如果是三操作數(shù)指令,則 rd, rt, rs是原操作數(shù)寄存器, sa 是目的寄存器。 64bit MIPS架構處理器體系結構 5 圖 MIPS 指令集 3 種指令類型 Fig MIPS instruction structure MIPS 的指令種類有 分為 7種如表 所示: MIPS 指令種類 MIPS 指令(部分) 指令的意義 實現(xiàn)與否 訪存類指令 lb, sb, lh, sh, lw, sw, ld, sd, lwc1, swc1, ldc1, sdc1 執(zhí)行從內(nèi)存中取數(shù),或把數(shù)據(jù)存入內(nèi)存中的操作。 實現(xiàn) 定點計算指令 add, sub, mult, and, or, sll, srl, slt, , ... 執(zhí)行定點加減乘除移位前導等運算操作 實現(xiàn) 浮點運算指令 cvt, movf, mul, div,madd, sub... 執(zhí)行 IEEE754 標準的加減乘除浮點運算操作 實現(xiàn) 跳轉(zhuǎn)分支指令 j, jr, jal, beq, bne ... 執(zhí)行跳轉(zhuǎn)操作 實現(xiàn) 協(xié)處理器指令 bc1f、 bc1f bc1t、 bc1t1 執(zhí)行協(xié)處理器CP0, CP1 指令操作 沒實現(xiàn) 斷點及陷阱指令 teq、 teqi、 tge、 tgei、tgeiu、 tgeu、 tlt、 tlti、執(zhí)行系統(tǒng)操作的指令 沒實現(xiàn) 西安理工大學碩士學位論文 6 tltiu、 tltu、 tne、 tnei。 表 MIPS 指令集的種類 Tab MIPS instruction type ( pipeline)設計思想 對通用設計來講, pipeline 是提高系統(tǒng)工作頻率的常見方法。它適合 于大量數(shù)據(jù)處理的場合。指令流水線技術是多條指令重疊執(zhí)行的一個處理器實現(xiàn)技術,流水線的基本結構是將適當劃分的 N 個操作步驟串聯(lián)起來,最大特點是數(shù)據(jù)流在各個步驟的處理從時間上看是連續(xù)的。它實際是將大量的數(shù)據(jù)處理分成幾個階段。每個階段都利用上一個階段產(chǎn)生的中間結果,直到得到最終結果。這樣,從一個數(shù)據(jù)輸入到結果輸出需要多個時鐘周期,但僅從輸出結果來看,每個時鐘周期均可以得到一個結果。 pipeline 所付出的代價就是增加了輸入到輸出的時鐘數(shù)目。 圖 流水線原理示意圖 Fig pipeline elements 如圖 所示步驟 1 是第一級流水線依次類推。當 a1 的數(shù)據(jù)進入步驟一流水線時后面的流水線因為沒有進入數(shù)據(jù),可以看做沒有工作。當下個時鐘周期 b1數(shù)據(jù)進入流水線后 a1 的數(shù)據(jù)經(jīng)過步驟 1處理進入到步驟 2,在這一個時鐘周期時,同時進行的是 b1 在步驟 1 運算, a1 在步驟 2 運算依次類推。最后整個流水級都處于工作狀態(tài)。以每個時鐘周期 ,可以看出采用流水線時 a1的數(shù)據(jù)經(jīng)過 4個流水級 ,而后面每 運算出一個有效數(shù)據(jù)。而不采用流水級的設計只能每 出 一個數(shù)據(jù)。因此采用流水級的設計大大增加了微處理器設計大大增加了微處理器的運算效率。 步驟 1 步驟 2 步驟 3 步驟 4步驟 1 步驟 2 步驟 3 步驟 4步驟 1 步驟 2 步驟 3 步驟 4a 1b 1c 1a 2b 2a 3 a 464bit MIPS架構處理器體系結構 7 在多級流水階段中,若某級流水處理的時間比其它流水階段處理時間長的話,那其它流水階段處理的速度也會受很大影響。因此,在流水線里,應該盡量保證每個階段所占用時間大致相同。這就要求在電路設計中,尋求邏輯復雜性與處理速度之間的平衡,顯得尤為重要。在 IC 設計初期,系統(tǒng)級劃分時,就應合理分配電路到不同階段以使流水線保持均衡。下面對微處理器中影響流水線效率的因素進行分析。 資源沖突 后 繼指令等待 當處理器中多個指令同時使用同一個資源時,這樣后條指令的執(zhí)行就必須等前條指令執(zhí)行完畢后,方可進行。這種因素在流水線中是不不可避免的,雖然編譯器在對指令進行編譯時,會采取相應算法來盡量減少此類沖突,但實際在 CPU 上跑一段應用程序時,這種資源沖突的情況是普遍存在的。因此在微處理器設計中,處理資源沖突的電路策略在前端設計中肯定得預先考慮。 依賴 流水線空泡 在流水線中有的時候中間流水級會產(chǎn)生無效的數(shù)據(jù)這種情況稱為流水線的空泡。產(chǎn)生空泡的原因有很多,比如在微處理器中發(fā)射模塊中前面的指令發(fā) 射到了 fu0 里面,而后面的指令因為資源相關,在下一個時鐘周期發(fā)射模塊沒有繼續(xù)發(fā)射指令,這個是后 fu0 的第一級流水線就產(chǎn)生了一個空泡。這個空泡是因第一個數(shù)據(jù)已經(jīng)進入第二級流水線了,而第一級流水線沒有進入新的數(shù)據(jù),因此產(chǎn)生的這個空泡是可以被后面的數(shù)據(jù)給擠掉。這里用valid 來表示流水級的數(shù)據(jù)是否有效,當 valid 為 0時表示所對應的這級流水是空的,可以被擠掉,當 valid 為 1是表示對應的流水線是有效數(shù)據(jù),執(zhí)行完后需要寫回,不能被擠掉。 數(shù)據(jù)沖突 后繼指令等待 數(shù)據(jù)沖突就是當后條指令的源操作數(shù)要用到 前條指令的目的操作數(shù)時,后條指令就不能發(fā)射出去,由于后條指令的該源操作數(shù)要用到更新之后的數(shù)據(jù),因此必須等待前條指令將結果放到結果總線上時,后條指令才可進行發(fā)射。此因素在流水線里,也是對流水線效率有所影響的。編譯器對指令編譯時,算法會確保減少數(shù)據(jù)相關的發(fā)生。 西安理工大學碩士學位論文 8 64bit MIPS 架構處理器模塊設計 處理器的結構是影響整個處理器的工作效率的關鍵部分,只有合理的結構才能使處理器的效率達到最高。因此微處理器的結構是否合理是整個微處理器設計中最關鍵的部分。作者在整個設計中負責微處理器的訪存部件的所有設 計,和部分發(fā)射模塊設計。 處理器結構 本論文中的微處理器流水線采用經(jīng)典的取址,譯碼,發(fā)射,運算,寫回五個部分,馮 .諾曼結構, 2KB+4KB一級片內(nèi)高速緩存, 4譯碼,能處理 64 位數(shù)據(jù)、四發(fā)射、亂序執(zhí)行(動態(tài)調(diào)度、順序發(fā)射、靜態(tài)轉(zhuǎn)移預測)動態(tài)流水線結構,定點字長 64 位,浮點字長 64 位,PC 地址 32 位。浮點部件采用 IEEE 754 標準。 本文中的微處理器設計如圖 所示: P CP C + 1 6I C A C H EI T L BI RD e c o d e rI n s t r u c t i o nQ u e u eG e n e r a lR e g i s t e rF i l eF l o a t i n gP o i n tR e g i s t e rF i l eA L U 1A L U 2M E MF A L UD D R C o n t r o l l e rP r o c e s s o r I n t e r f a c eR e o d e r L o g i cb r a n c h b u sp r e b r a n c h b u sw r i t e b a c kw r i t e b a c k b u sI C A C H E m i s sr e f i l l b u s 圖 處理器整體結構框圖 Fig cpu structure 1) .PC 模塊是整個流水線的最前端,負責計算和控制下一個時鐘周期需要取出的指令,根據(jù) PC 地址從 icache 中取出相應的指令,當取出指令后, PC地址相應的加 16?;蛘哂商D(zhuǎn)類指令給出下一個時鐘周期取址所需要的 PC地址。 2) .ICAHCE(指令高速緩存),是在內(nèi)存和 CPU 之間的速度快存儲量小的數(shù)據(jù)緩存,由SRAM 組成,寬度 128,深度 256,采用兩組組相連直接映射。包括指令數(shù)據(jù)段(每行 128bit)和 tag 段(每行 20bit), valid 位( 1bit)。 基于 64bit 基于 MIPS架構處理器模塊設計 9 3) .從 icache 出來的 tag 位和 pc 中的 tag 位( pc 地址的高 20 位)進行對比,當對比命中時說明 icache 中存的數(shù)據(jù)是 pc 地址所對應的數(shù)據(jù),把數(shù)據(jù)送入 IR 中存儲。當對比miss 的時候說明 icache 中沒有 pc 地址對應的數(shù)據(jù)這個時候通過總線從內(nèi)存中把數(shù)據(jù)取出來,分別放入 icahce 和 IR中。 4) .IR 存儲的是 4 條 32 位指令,通過 Decoder 模塊把這些指令譯碼成 119 位的機器碼,把軟件編譯出來的指令轉(zhuǎn)換成硬件電路的控制信號包括 op, fc, valid,op, src, dest,imm, pc等等。 5) .譯碼后的 4 條指令放入 IQ( instruction qu