-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

步步驚“芯”——軟核處理器內部設計分析

( 簡體 字)
作者:雷思磊類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社步步驚“芯”——軟核處理器內部設計分析 3dWoo書號: 35910
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:6/1/2013
頁數:500
光碟數:1
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121204890
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

人看見我
就是看見了父

我就是道路、真理、生命
若不借著我
沒有人能到父那里去
——《約翰福音》

現在看來,用上述語句形容1971年誕生的世界上第一款商用微處理器Intel 4004,似乎也是恰當的。從“人類歷史上最具革新性的產品之一”(戈登摩爾語)的4004誕生至今,已過了四十多年,期間,處理器的應用范圍不斷擴展,滲透到各行各業,浸入人們的......
前 言
人看見我
就是看見了父

我就是道路、真理、生命
若不借著我
沒有人能到父那里去
——《約翰福音》

現在看來,用上述語句形容1971年誕生的世界上第一款商用微處理器Intel 4004,似乎也是恰當的。從“人類歷史上最具革新性的產品之一”(戈登摩爾語)的4004誕生至今,已過了四十多年,期間,處理器的應用范圍不斷擴展,滲透到各行各業,浸入人們的日常生活,極大地影響了第五次信息革命的進程。對其自身而言既有“變”也有“不變”,“變”的是處理器的性能,“不變”的是其高高在上的形象,處理器設計制造作為國家信息產業的基石之一,一直都是高科技行業,輕易無法涉足。幸運的是,隨著可編程硬件技術的持續發展,如今可以通過編寫代碼實現處理器,出現了軟核處理器,它的出現使得尋常人士也能有機會了解處理器內部實現原理,甚至參與處理器的設計、研發。
軟核處理器有很多,比如:NiosII、OR1200、LEON3和OpenSparc等,本書選擇OR1200作為分析對象,深度剖析其內部實現,理解其設計思路、工作過程。選擇OR1200的原因有兩個:一方面OR1200是開源的;另一方面,筆者在學習處理器的過程中有一個體會,那就是“一通百通、融會貫通、取長補短、創新提高”。我們的最終目的是了解處理器的實現原理,不必過多糾結于選擇哪個、不選哪個,處理器設計中很多問題都是相通的,深入學習一款處理器,明白其架構,在這個過程中可以找到學習處理器的途徑,找到適合自己的學習方法,有了方法,再學其他的處理器時就會順利很多,所以稱為“一通百通”。
分析第一個處理器內部實現時,是抱著學習的態度,學第二個、第三個就應該在頭腦中形成一種比較的意識,比較這幾種處理器實現相同功能的部分為何會有不同的設計方法,哪一種性能更好,這就稱為“融會貫通”。通過前面的兩步,我們已經如牛頓那般站在巨人的肩膀上了,學習了各種處理器的設計原理,明白了各自優劣,在自己設計處理器的時候就可以“取長補短”。此外,通過獨立思考,或者由于不同設計思路的碰撞,可能會產生新的、更好的設計靈感,是謂“創新提高”。
寫作目的
尋找一個確定性的世界
我們信科學
我們信邏輯
我們信因果
我們是理工男
科學的、邏輯的、因果的,最終表達的是確定性。恐懼源于未知,人類科技活動的目的就是為了探索未知,消除未知帶來的不確定性,努力使得一切都可預測,都是確定性的。當然,現實生活中各種因素使我們個體所接觸的物質世界顯得如此的不確定。從大的方面講,對于個人命運、社會變革這些宏大的命題,我們都顯得渺小和茫然;從小的方面講,即使坐在對面的是自己的意中人,因為不知她(他)的心思,從而產生一種對確定性喪失的焦慮和痛苦。這時我們迫切地需要一種滿足,一種對確定性存在的滿足,進而是一種理想的滿足。筆者覺得這也是剖析處理器的魅力,處理器的世界就是一個確定性的世界,從加電的那一刻開始,讀指令、執行、再讀指令、再執行,一切都是設計好的,精準、無誤、確定。即使出現意外,也可以得到一個確定的意外原因。
對好奇心的滿足
人類進步的推動力量有兩個:懶惰、好奇。這不是玩笑,而是很嚴肅的話題,關于第一點,大家想想洗衣機、電視、麥當勞就很容易理解了。第二點更好理解,看看嬰兒打量這個世界的眼神就知道好奇心是人類與生俱來的。為什么太陽東升西落?為什么蘋果會掉下來?為什么燒開的水會把壺蓋頂起來?……每一個為什么的提出及解答,都使得人類前進了一步。在IT行業,人們會問,為什么可以通過計算機一邊聽音樂、一邊上網、一邊看電影?
不同的人會有不同的答案
A君:啊,這還有為什么啊,計算機本來就可以這樣啊,不這樣還能叫計算機!
B君:這是多線程的效果。
C君:這是操作系統調度的原因。
D君:這是由于處理器在每個時鐘中斷都會進入時鐘中斷處理例程,在其中切換進程。
A君的回答天真無邪,基本可以斷定這位同學不是IT行業的。其他三位同學的答案一個比一個接近根本、接近底層、接近硬件,但好奇的我們不禁要多問一句:時鐘中斷是如何發生的?解答這個問題就需要深入處理器內部實現了。
對現有教科書的不滿
國內大多數計算機方面的教科書,常給人這么一個體會:理論太多、實踐太少。操作系統、計算機體系結構、計算機組成原理等課程無不如此。過多的理論、過少的實踐,給學生帶來的問題是:容易紙上談兵;對具體知識的印象不深刻;知其然,不知其所以然。因此,筆者想結合一款實用的處理器,深度剖析其內部設計實現,作為現有教科書的一個補充。
適合誰讀
適合對確定性世界狂熱追求者閱讀。通過閱讀本書,讀者將發現,雖然處理器內部十分復雜,但是從加電的那一刻開始,它就按照預定程序運行,每一刻都是可預測的,都是確定性的。
適合對處理器內部實現有著強烈好奇心的朋友閱讀。本書通過對OR1200處理器的剖析,將使讀者全方位了解32位RISC處理器設計。
適合不滿足于教科書的同學閱讀。本書可以作為實踐參考書,幫助讀者理解書本上抽象的概念,同時培養讀者的動手能力。
適合正在從事軟核處理器開發、設計的人員閱讀。本書將提供一些經驗、一些好的方法,幫助讀者做到事半功倍。
適合正在從事嵌入式開發的人員閱讀,本書對處理器的一些介紹,有助于嵌入式開發。
內容安排
全書共16章,每章的主要內容如下。
第1章簡單介紹了目前主要的開源軟核處理器,并做了對比,然后重點介紹了OR1200的架構、代碼組織,并對本書的分析方法進行了說明。
第2章帶領讀者一步一步建立起實驗平臺、準備好實驗工具,有了平臺和工具的幫助,可以更加方便地認識和理解OR1200的內部細節。
第3章剖析了OR1200中的QMEM模塊,這是一個快速存儲器模塊,可以在一個時鐘周期內讀取其中的指令,同時分析了復位結束后,指令的讀取過程,給出了一個理想的取指模型。
第4∼9章分別剖析了OR1200中數據處理類指令、特殊寄存器訪問類指令、轉移類指令、異常處理類指令、乘法/除法類指令和加載存儲類指令的處理過程。這些指令也是OR1200支持的全部指令,分析了這些指令的處理過程,也就明白了OR1200處理器中CPU模塊的內部結構、工作原理。在第9章最后給出一個完整的OR1200流水線數據通路圖,而4∼9章中,對每一類指令處理過程的分析都采用相同的方法:首先寫一段簡單的測試代碼,測試代碼包含我們即將分析的指令類別中的全部或部分指令,然后使用OR1KSim模擬器查看執行情況,接下來對這一類指令中有代表性的若干條指令采用流水線驅動的方法進行分析,即分析指令處理過程中,在流水線各個階段引起的信號變化,以及通過這些變化的信號是如何逐步實現指令目標的。
第10章剖析了MMU模塊,采用的是情景分析法,即通過分析使用該模塊的各種情景及各種情景下模塊的工作過程,達到了解該模塊原理的目的。
第11章建立了一個基于OR1200的簡單SOPC,后續章節將借助該SOPC分析OR1200中的指令Cache、數據Cache等模塊。
第12、13章分別剖析了OR1200中的指令Cache、數據Cache,采用的是情景分析法。
第14章剖析了Store Buffer模塊,采用的是直接分析源代碼的方式。
第15章剖析了OR1200處理器與外部Wishbone總線連接的接口模塊WB_BIU,采用的是情景分析法。
第16章剖析了電源管理模塊、計時器單元、可編程中斷控制器,由于比較簡單,采用的都是直接分析源代碼的方式。
寫作原則
不唯上、不唯下,只唯實
要保持質疑,哪怕對方是所謂的權威。本書對OR1200的一些介紹可能與OR1200手冊及其他學者的觀點不同,比如:本書認為OR1200是三級流水線。OR1200手冊上認為是五級流水線,筆者在源代碼的剖析中發現這種說法并不充分,在第9章給出理由以佐證筆者的觀點,整本書也是按照三級流水線進行分析的。同時,本書指出了源代碼中的一些錯誤,有些可能是筆誤,有些就是設計缺陷(如:QMEM的設計)。
像剝洋蔥似的,一步步接近核心
OR1200是一個系統、一個整體,各個模塊之間的聯系很緊密,并且相互影響。最開始,只給出了一種理想情況,也是OR1200大部分時候的運行情況,后面分析到某些指令、某些場景的時候,會具體分析這些指令、場景是如何影響這個理想情況的。比如:第3章給出了一個理想的取指過程,在后續章節,當分析系統調用指令l.sys的時候,就會介紹l.sys對這個取指過程的影響;分析轉移指令l.bf的時候,就會介紹l.bf對這個取指過程的影響;分析特殊寄存器讀指令l.mfspr的時候,就會介紹l.mfspr對這個取指過程的影響。通過這樣一步一步的探索,由簡到繁,由不求甚解到全面了解,最后揭示得出結論,而不是直接給出結論,再分析得出這個結論的理由。筆者認為前者更符合我們認識事物的規律。
依據不同的分析對象使用合適的分析方法
在內容安排中可以發現,本書針對不同的模塊,依據具體情況,采用了不同的分析方法,主要有:流水線驅動的分析方法、場景分析法和直接分析源代碼的方法。
適量重復
在分析過程中,為了直觀,本書大量采用了表格化的顯示方法,表格中列出了當前階段的主要變化信號,包括信號的作用說明,其中有很多信號可能在之前的表格中出現過,但筆者仍然在新的表格中重復給出這個信號的作用說明。這樣適量的重復,增強了各章之間的獨立性,尤其是第5∼9章,便于讀者選擇性閱讀。
感性與理性結合
除了對代碼進行分析,本書還使用ModelSim進行仿真,通過ModelSim仿真結果可以直觀地觀察到任意時刻處理器內部任一信號的狀態,既驗證了代碼分析的正確性,也使讀者加深了印象。
本書特色
(1)國內第一本采用指令驅動分析法、流水線驅動分析法和情景分析法對一款成熟的32位軟核處理器進行分析的圖書,通過對流水線、MMU和Cache等處理器內部重要功能單元的分析,有效消除了處理器的神秘感。
(2)國內第一本采用實驗的方法對處理器設計中的一些重要思想進行闡釋的書,如:通過實驗,給出了存儲操作在Cache存在、Cache不存在時的區別,從而使讀者可以更加深刻地體會到Cache的作用。
(3)國內第一本對OR1200處理器進行全面、詳細介紹的圖書。
閱讀方法
針對不同的閱讀需要,可以有粗讀、精讀兩種閱讀方法。
粗讀
該方法適合希望快速理解處理器內部工作原理的讀者使用,這些讀者可能更關心處理器在流水線每個階段的主要工作,而不關心這個工作是如何實現的。因此,本書在流水線每一個階段分析結束的時候,都會給出一個表格,列出本階段變化信號,其中重要的變化信號都使用“加粗斜體 ”來強調,這些重要變化信號的作用就反映了處理器在本階段的主要工作,讀者只需關注每個階段分析結束時的表格即可,從而達到快速理解處理器內部工作原理之目的。
精讀
該方法適合不僅希望知道處理器在流水線每個階段的主要工作是什么,而且希望知道這個工作是如何實現的讀者使用。這種方法當然比較辛苦,也比較耗時,然而讀書無捷徑,任何知識的獲取都是要下一番苦功夫的。
引用余秋雨先生的話與讀者共勉。

閱讀的最大理由是想擺脫平庸
早一天就多一份人生的精彩
遲一天就多一天平庸的困擾
致謝
筆者第一次與博文視點合作,博文視點干練、敏捷的工作作風給筆者留下了深刻的印象,在此特別感謝孫學瑛老師,正是由于孫老師的出謀劃策、辛苦工作才使得本書能夠及時發行。
感謝酒泉衛星發射中心通信總站的各位領導、同事,雖然我們處在戈壁灘上,自然條件惡劣,但是我們共同從事的是一項偉大的事業,這一事業將我們緊緊聯系在一起。若干年后,當我老得哪兒也去不了的時候,這必定將成為一段珍貴的回憶。
最后,感謝我的爸爸、媽媽、姐姐、姐夫,以及可愛的外甥女,任何成績的取得都離不開家人的付出,謝謝你們!
筆者學識有限,盡管已通讀數次,但仍不能保證書中無一紕漏,歡迎各位讀者朋友對本書提出批評、建議,可以通過郵箱leishangwen@163.com與筆者交流。
內容簡介:

本書以開源32位軟核處理器OR1200為研究對象,像引導讀者如做解剖學實驗那般,對其進行剖析,力圖使讀者對教科書上介紹的處理器有一個實踐上的認識,打破處理器令人高深莫測的印象,同時使讀者了解處理器設計的細節。OR1200包括CPU、MMU、Cache、總線接口、電源管理、中斷控制和計時器單元等多個模塊,對于不同的模塊,根據其難易程度,采用指令驅動分析法、情景分析法及直接分析源代碼等不同的分析方法,便于讀者理解。
通過閱讀本書,讀者可以掌握一款成熟的軟核處理器OR1200的設計思路、實現方法,同時更加深刻、具體地理解計算機組成原理、計算機體系結構等課程介紹的知識。

目錄:

第1章OpenRISC介紹 1
1.1 開源軟核處理器 1
1.2 OpenRISC 1000架構 4
1.3 OR1200——OpenRISC 1000架構的一個實現 4
1.3.1 尋址模式 5
1.3.2 位和字節次序 6
1.3.3 寄存器集 6
1.3.4 指令集 7
1.3.5 異常模型 8
1.4 OR1200代碼組織 8
1.5 本書的分析方法 11
第2章 實驗環境的搭建 13
2.1 GNU開發工具鏈的安裝 13
2.2 GNU開發工具鏈的使用 18
2.2.1 一個簡單的匯編程序 18
2.2.2 編譯及ELF文件介紹 19
2.2.3 鏈接 21
2.2.4 Makefile文件 23
2.2.5 使用OR1KSim模擬器運行程序 24
2.3 創建OR1200運行的最小系統 25
2.3.1 最小系統的創建 26
2.3.2 運行仿真 29
2.3.3 修改Makefile 30
2.3.4 觀察流水線 32
2.3.5 流水線介紹 33
2.4 本書的一些說明及定義 34
2.4.1 一些說明 34
2.4.2 一些定義 35
第3章 QMEM剖析 37
3.1 QMEM的作用 37
3.2 Wishbone總線快速了解 40
3.3 QMEM的Wishbone總線接口 43
3.3.1 QMEM與CPU、IMMU的連接 44
3.3.2 QMEM與ICache的連接 45
3.3.3 QMEM與CPU、DMMU的連接 46
3.3.4 QMEM與DCache的連接 47
3.4 QMEM的內部RAM 49
3.5 復位后取第一條指令的過程分析 51
3.5.1 復位信號有效階段 51
3.5.2 復位信號無效后的第一個時鐘周期上升沿 56
3.5.3 復位信號無效后的第一個時鐘周期的組合邏輯階段 57
3.6 第二條及后續指令的讀取過程分析 58
3.6.1 復位信號無效后的第二個時鐘周期的上升沿 58
3.6.2 復位信號無效后的第二個時鐘周期的組合邏輯階段 59
第4章 數據處理類指令剖析 61
4.1 數據處理類指令說明 61
4.2 分析用例 65
4.3 流水線的簡單模型 67
4.4 l.add指令分析 69
4.4.1 l.add取指階段的組合邏輯輸出 70
4.4.2 l.add取指階段的時序邏輯輸出 73
4.4.3 l.add譯碼階段的組合邏輯輸出 75
4.4.4 l.add譯碼階段的時序邏輯輸出 80
4.4.5 l.add執行階段的組合邏輯輸出 91
4.4.6 l.add執行階段的時序邏輯輸出 97
4.4.7 第一條指令分析小結 98
4.5 l.sfeqi指令分析 99
4.5.1 l.sfeqi取指階段的組合邏輯輸出 99
4.5.2 l.sfeqi取指階段的時序邏輯輸出 100
4.5.3 l.sfeqi譯碼階段的組合邏輯輸出 100
4.5.4 l.sfeqi譯碼階段的時序邏輯輸出 101
4.5.5 l.sfeqi執行階段的組合邏輯輸出 102
4.5.6 l.sfeqi執行階段的時序邏輯輸出 105
4.5.7 第二條指令分析小結 106
4.6 ALU分析 106
4.7 流水線數據相關的解決方法 112
4.8 定制屬于自己的指令 117
4.9 不完整流水線數據通路圖 121
第5章 特殊寄存器訪問類指令剖析 123
5.1 OR1200中的特殊寄存器 123
5.2 第0組特殊寄存器 125
5.3 特殊寄存器訪問類指令說明 127
5.4 分析用例 128
5.5 l.mfspr指令分析 130
5.5.1 l.mfspr取指階段的組合邏輯輸出 131
5.5.2 l.mfspr取指階段的時序邏輯輸出 132
5.5.3 l.mfspr譯碼階段的組合邏輯輸出 132
5.5.4 l.mfspr譯碼階段的時序邏輯輸出 133
5.5.5 l.mfspr執行階段第1個時鐘周期的組合邏輯輸出 135
5.5.6 l.mfspr執行階段第1個時鐘周期的時序邏輯輸出 138
5.5.7 l.mfspr執行階段第2個時鐘周期的組合邏輯輸出 141
5.5.8 l.mfspr執行階段第2個時鐘周期的時序邏輯輸出 144
5.5.9 l.mfspr指令分析小結 144
5.6 l.mtspr指令分析 145
5.6.1 l.mtspr執行階段的組合邏輯輸出 147
5.6.2 l.mtspr執行階段的時序邏輯輸出 148
5.7 SPRS分析 148
5.8 完善流水線數據通路圖 155
第6章 轉移類指令剖析 157
6.1 延遲槽 157
6.2 轉移類指令說明 158
6.3 分析用例 159
6.4 l.bf指令分析 161
6.4.1 l.bf取指階段的組合邏輯輸出 162
6.4.2 l.bf取指階段的時序邏輯輸出 163
6.4.3 l.bf譯碼階段的組合邏輯輸出 164
6.4.4 l.bf譯碼階段的時序邏輯輸出 166
6.4.5 l.bf執行階段第1個時鐘周期的組合邏輯輸出 169
6.4.6 l.bf執行階段第2個時鐘周期的組合邏輯輸出 173
6.4.7 l.bf執行階段第2個時鐘周期的時序邏輯輸出 174
6.4.8 l.bf指令分析小結 175
6.5 l.jalr指令分析 176
6.5.1 l.jalr取指階段的組合邏輯輸出 177
6.5.2 l.jalr取指階段的時序邏輯輸出 177
6.5.3 l.jalr譯碼階段的組合邏輯輸出 177
6.5.4 l.jalr譯碼階段的時序邏輯輸出 179
6.5.5 l.jalr執行階段第1個時鐘周期的組合邏輯輸出 180
6.5.6 l.jalr執行階段第2個時鐘周期的組合邏輯輸出 181
6.5.7 l.jalr執行階段第2個時鐘周期的時序邏輯輸出 182
6.6 轉移類指令對處理器效率的影響 182
6.7 繼續完善流水線數據通路圖 183
第7章 異常處理類指令剖析 185
7.1 OR1200中的異常分類 185
7.2 OR1200中的異常處理過程 185
7.3 異常處理類指令說明 187
7.4 分析用例 187
7.5 EXCEPTION模塊的作用 190
7.6 l.sys指令分析 195
7.6.1 l.sys取指階段的組合邏輯輸出 196
7.6.2 l.sys取指階段的時序邏輯輸出 196
7.6.3 l.sys譯碼階段的組合邏輯輸出 197
7.6.4 l.sys譯碼階段的時序邏輯輸出 198
7.6.5 l.sys執行階段的組合邏輯輸出 199
7.6.6 l.sys執行階段的時序邏輯輸出 201
7.6.7 異常處理過程——FLU1狀態 207
7.6.8 異常處理過程——FLU2狀態 211
7.6.9 異常處理過程——FLU3狀態 212
7.6.10 異常處理過程——FLU4狀態 212
7.6.11 異常處理過程——FLU5狀態 213
7.6.12 l.sys分析小結 214
7.7 l.trap指令分析 215
7.7.1 l.trap譯碼階段的時序邏輯輸出 216
7.7.2 l.trap執行階段的組合邏輯輸出 216
7.7.3 l.trap執行階段的時序邏輯輸出 216
7.7.4 異常處理過程——FLU1狀態 217
7.7.5 異常處理過程——FLU2狀態 217
7.7.6 l.trap分析小結 218
7.8 l.rfe指令分析 218
7.8.1 l.rfe取指階段的組合邏輯輸出 219
7.8.2 l.rfe取指階段的時序邏輯輸出 219
7.8.3 l.rfe譯碼階段的組合邏輯輸出 220
7.8.4 l.rfe譯碼階段的時序邏輯輸出 221
7.8.5 l.rfe執行階段第1個時鐘周期的組合邏輯輸出 223
7.8.6 l.rfe執行階段第2個時鐘周期的組合邏輯輸出 224
7.8.7 l.rfe執行階段第2個時鐘周期的時序邏輯輸出 225
7.9 繼續完善流水線數據通路圖 226
第8章 乘法、除法類指令剖析 228
8.1 串行乘法與并行乘法 228
8.1.1 串行乘法 228
8.1.2 并行乘法 229
8.2 串行除法與并行除法 230
8.2.1 串行除法 230
8.2.2 并行除法 231
8.3 乘法、除法類指令說明 232
8.4 OR1200中關于乘法、除法的一些配置 234
8.5 分析用例 234
8.6 l.mul指令分析(串行乘法) 238
8.6.1 l.mul取指階段的組合邏輯輸出 239
8.6.2 l.mul取指階段的時序邏輯輸出 240
8.6.3 l.mul譯碼階段的組合邏輯輸出 240
8.6.4 l.mul譯碼階段的時序邏輯輸出 241
8.6.5 l.mul執行階段第1個時鐘周期的組合邏輯輸出 243
8.6.6 l.mul執行階段第1個時鐘周期的時序邏輯輸出 245
8.6.7 l.mul執行階段第2個時鐘周期的組合邏輯輸出 247
8.6.8 l.mul執行階段第2個時鐘周期的時序邏輯輸出 249
8.6.9 l.mul執行階段第33個時鐘周期的時序邏輯輸出 250
8.6.10 l.mul執行階段第34個時鐘周期的組合邏輯輸出 250
8.6.11 l.mul執行階段第34個時鐘周期的時序邏輯輸出 252
8.6.12 l.mul執行階段第35個時鐘周期的時序邏輯輸出 252
8.6.13 l.mul分析小結 252
8.7 l.mul指令分析(并行乘法) 253
8.7.1 l.mul執行階段第1個時鐘周期的組合邏輯輸出(并行乘法) 253
8.7.2 l.mul執行階段第1個時鐘周期的時序邏輯輸出(并行乘法) 254
8.7.3 l.mul執行階段第2個時鐘周期的組合邏輯輸出(并行乘法) 255
8.7.4 l.mul執行階段第2個時鐘周期的時序邏輯輸出(并行乘法) 256
8.7.5 l.mul執行階段第3個時鐘周期的時序邏輯輸出(并行乘法) 256
8.7.6 l.mul執行階段第4個時鐘周期的組合邏輯輸出(并行乘法) 256
8.7.7 l.mul執行階段第4個時鐘周期的時序邏輯輸出(并行乘法) 257
8.7.8 l.mul執行階段第5個時鐘周期的時序邏輯輸出(并行乘法) 257
8.7.9 l.mul分析小結(并行乘法) 257
8.8 l.mac指令分析 257
8.8.1 l.mac執行階段第1個時鐘周期的組合邏輯輸出 259
8.8.2 l.mac執行階段第1個時鐘周期的時序邏輯輸出 260
8.8.3 l.mac執行階段第2個時鐘周期的組合邏輯輸出 261
8.8.4 l.mac執行階段第2個時鐘周期的時序邏輯輸出 261
8.8.5 后l.mac執行階段第1個時鐘周期的時序邏輯輸出 262
8.8.6 后l.mac執行階段第2個時鐘周期的時序邏輯輸出 262
8.8.7 l.mac指令分析小結 263
8.9 l.div指令分析(串行除法) 263
8.10 繼續完善流水線數據通路圖 266
第9章 加載存儲類指令剖析 268
9.1 加載存儲類指令說明 268
9.2 分析用例 270
9.3 l.sb指令分析 274
9.3.1 l.sb取指階段的組合邏輯輸出 276
9.3.2 l.sb取指階段的時序邏輯輸出 276
9.3.3 l.sb譯碼階段的組合邏輯輸出 276
9.3.4 l.sb譯碼階段的時序邏輯輸出 278
9.3.5 l.sb執行階段第1個時鐘周期的組合邏輯輸出 280
9.3.6 l.sb執行階段第2個時鐘周期的組合邏輯輸出 286
9.3.7 l.sb執行階段第2個時鐘周期的時序邏輯輸出 287
9.3.8 l.sb指令分析小結 287
9.4 l.lbs指令分析 288
9.4.1 l.lbs執行階段第1個時鐘周期的組合邏輯輸出 290
9.4.2 l.lbs執行階段第2個時鐘周期的組合邏輯輸出 291
9.4.3 l.lbs執行階段第2個時鐘周期的時序邏輯輸出 294
9.4.4 l.lbs指令分析小結 294
9.5 對齊異常處理流程 295
9.6 三級流水線還是五級流水線 297
9.7 完整的流水線數據通路圖 298

第10章 MMU剖析 301
10.1 MMU的作用及工作過程 301
10.2 TLB的作用及工作過程 303
10.3 IMMU分析 305
10.3.1 IMMU結構 305
10.3.2 IMMU中的特殊寄存器 307
10.3.3 OR1200中關于IMMU的一些配置 308
10.3.4 ITLB代碼分析 309
10.3.5 IMMU使用情景 313
10.3.6 分析用例 313
10.3.7 IMMU使用情景之一——指令取指階段ITLB命中且無頁錯誤
情況下IMMU工作分析 324
10.3.8 IMMU使用情景之二——指令取指階段ITLB未命中情況下
IMMU工作分析 329
10.3.9 IMMU使用情景之三——指令取指階段ITLB命中但有頁錯誤
情況下IMMU工作分析 333
10.3.10 IMMU使用情景之四——l.mtspr執行階段IMMU工作分析 333
10.3.11 IMMU使用情景之五——l.mfspr執行階段IMMU工作分析 335
10.3.12 IMMU分析小結 336
10.4 DMMU分析 336
10.4.1 DTLB結構圖 337
10.4.2 DMMU中的特殊寄存器 337
10.4.3 DMMU使用情景 338
第11章 基于OR1200的一個簡單SOPC 340
11.1 簡單SOPC的結構 340
11.2 Wishbone總線互聯矩陣WB_CONMAX 341
11.3 掛接在互聯矩陣WB_CONMAX下的RAM模塊 342
11.4 SOPC頂層文件 344
11.5 ModelSim新建工程min_or1200_sopc 346
11.6 示例程序 348
第12章 ICache剖析 350
12.1 Cache基本知識 350
12.1.1 Cache的作用 350
12.1.2 Cache的結構與工作過程 351
12.2 OR1200中Cache簡介 352
12.3 ICache結構 353
12.3.1 ICache模塊與其余模塊的連接關系 353
12.3.2 ICache中數據部分 354
12.3.3 ICache中控制部分 356
12.3.4 ICache數據部分與控制部分的對外接口 357
12.4 ICache中的特殊寄存器 358
12.5 ICache使用情景 358
12.6 分析用例 359
12.7 ICache使用情景之一——l.mtspr執行階段ICache工作分析 364
12.7.1 執行階段的組合邏輯輸出 364
12.7.2 執行階段的時序邏輯輸出 364
12.8 ICache使用情景之二——指令取指階段ICache失靶情
況下ICache工作分析 365
12.8.1 第1個時鐘周期的組合邏輯輸出 365
12.8.2 第1個時鐘周期的時序邏輯輸出 368
12.8.3 第2個時鐘周期的組合邏輯輸出 370
12.8.4 第2個時鐘周期的時序邏輯輸出 371
12.8.5 第n個時鐘周期的組合邏輯輸出 373
12.8.6 第n個時鐘周期的時序邏輯輸出 373
12.8.7 第n+1個時鐘周期的組合邏輯輸出 375
12.8.8 第2n個時鐘周期的組合邏輯輸出 376
12.8.9 第2n個時鐘周期的時序邏輯輸出 377
12.8.10 第2n+1個時鐘周期的組合邏輯輸出 378
12.8.11 第3n個時鐘周期的組合邏輯輸出 379
12.8.12 第3n個時鐘周期的時序邏輯輸出 379
12.8.13 第3n+1個時鐘周期的組合邏輯輸出 379
12.8.14 第4n個時鐘周期的組合邏輯輸出 379
12.8.15 第4n個時鐘周期的時序邏輯輸出 380
12.8.16 第4n+1個時鐘周期的組合邏輯輸出 380
12.8.17 ICache失靶時工作過程小結 381
12.9 ICache使用情景之三——指令取指階段ICache命中情況下
ICache工作分析 381
12.9.1 第1個時鐘周期的組合邏輯輸出 382
12.9.2 第1個時鐘周期的時序邏輯輸出 382
12.9.3 第2個時鐘周期的組合邏輯輸出 383
12.10 ICache使用情景之四——指令取指階段內存頁禁止緩存
情況下ICache工作分析 384
12.10.1 第1個時鐘周期的組合邏輯輸出 384
12.10.2 第1個時鐘周期的時序邏輯輸出 385
12.10.3 第2個時鐘周期的組合邏輯輸出 385
12.10.4 第2個時鐘周期的時序邏輯輸出 386
12.10.5 第3個時鐘周期的組合邏輯輸出 386
12.10.6 第n個時鐘周期的組合邏輯輸出 387
12.10.7 第n個時鐘周期的時序邏輯輸出 387
第13章 DCache剖析 389
13.1 DCache的特別之處 389
13.2 DCache結構 390
13.2.1 DCache模塊與其余模塊的連接關系 391
13.2.2 DCache中數據部分 392
13.2.3 DCache中控制部分 394
13.2.4 DCache數據部分與控制部分的對外接口 395
13.3 DCache中的特殊寄存器 396
13.4 DCache使用情景 397
13.5 分析用例 398
13.5.1 修改已有的簡單SOPC 398
13.5.2 分析用例 398
13.6 DMMU地址翻譯 405
13.7 DCache使用情景之一——存儲指令執行階段DCache失靶 405
13.7.1 通寫法下DCache工作過程分析 406
13.7.2 回寫法下DCache工作過程分析 413
13.8 DCache使用情景之二——存儲指令執行階段DCache命中 422
13.8.1 通寫法下DCache工作過程分析 422
13.8.2 回寫法下DCache工作過程分析 424
13.9 DCache使用情景之三——l.mtspr指令寫DCache中特殊
寄存器 427
13.9.1 通寫法策略下指令l.mtspr寫DCBIR、DCBFR的過程分析 428
13.9.2 回寫法策略下指令l.mtspr寫DCBIR的過程分析 429
13.9.3 回寫法策略下指令l.mtspr寫DCBWR的過程分析 431
13.9.4 回寫法策略下指令l.mtspr寫DCBFR的過程分析 437
13.10 DCache分析小結 438
第14章 Store Buffer(SB)剖析 440
14.1 SB模塊的作用與工作過程 440
14.2 SB模塊的結構 441
14.2.1 SB模塊的對外連接關系 441
14.2.2 SB模塊內部結構 442
14.2.3 SB模塊有關的宏定義 442
14.3 示例程序 442
14.4 SB模塊代碼分析 444
14.4.1 FIFO分析 444
14.4.2 SB分析 447
第15章 WB_BIU剖析 450
15.1 WB_BIU模塊的對外連接關系 450
15.2 Wishbone寄存反饋總線周期 451
15.3 WB_BIU代碼分析 454
15.3.1 WB_BIU中的有限狀態機 455
15.3.2 總線時鐘與處理器時鐘不同時的處理代碼 462
第16章 PM、TT、PIC剖析 466
16.1 電源管理模塊PM分析 466
16.1.1 PM介紹 466
16.1.2 PM模塊的對外連接關系、特殊寄存器及相關宏定義 466
16.1.3 PM代碼分析 468
16.2 計時器單元TT分析 471
16.2.1 TT介紹 471
16.2.2 TT的對外連接關系及相關宏定義 472
16.2.3 TT代碼分析 473
16.2.4 計時器中斷響應過程 475
16.3 可編程中斷控制器PIC分析 477
16.3.1 PIC介紹 477
16.3.2 PIC的對外連接關系及相關宏定義 478
16.3.3 PIC代碼分析 479
序: