MIPS體系結構透視

MIPS體系結構透視

《MIPS體系結構透視》是2007年機械工業出版社出版的圖書,作者是斯威特曼。

基本介紹

  • 書名:MIPS體系結構透視
  • 作者:(英)斯威特曼
  • 譯者:李鵬
  • ISBN:9787111206811
  • 頁數:326
  • 定價:65.00 元
  • 出版社機械工業出版社
  • 出版時間:2007年
  • 裝幀:平裝
  • 開本:16
編輯推薦,內容簡介,作者簡介,圖書目錄,

編輯推薦

本書是“計算機科學叢書”之一,全書共分16個章節,對MIPS的體系結構透視作了全面系統地介紹,具體包括MIPS體系結構、MIPS處理器的高速快取、底層記憶體管理與TLB、浮點支持、MIPS指令集完全指南、在MIPS體系結構上移植軟體等。該書可供各大專院校作為教材使用,也可供從事相關工作的人員作為參考用書使用。
大多數“體系結構概覽”類的書籍最終都是對體系結構的彙編語言語焉不詳,只是給出令人厭煩的概述。然而,本書卻是一個典型的反例,它為所有這類書的作者樹立了一個榜樣。作者不但提供了體系結構參考所必需的細節,還以對關鍵體系結構特點(及其原理)富有洞察力的視角表達出這些細節。
無論是對通用的計算機體系結構來說,還是對於MIPS來說,本書都是非常有用的書籍。它闡述了滲入到體系結構發展中的技術、經濟、歷史等因素。
第2版的一個重要增加是涉及作業系統、移植以及ABI等問題,這使得本書對軟體開發者來說也是一本優秀的參考書。任何從事MIPS體系結構相關工作的人都應該樂於擁有這本書。
——Randy AIIen,Catalytic公司的創始人和首席技術官
本書是任何MIPS體系結構參考手冊的極好伴侶。本版延續了第1版的傳統,通過具體實例強調硬體/軟體接口。另外,第2版增加了最新的,從MIPS—I/V體系結構到MIPS-32/64體系結構的轉變,其中包括支持多執行緒的體系結構。總之,這是任何熱衷MIPs體系結構的程式設計師的必備書籍。
——Jan-WiIlem van de Waerdt,飛利浦半導體研究院
第2版不僅對第1版進行了徹底的更新,而且還將套用廣泛的RISC系統結構MIPS與開源作業系統Linux結合在了一起。本書的第一部分從MIPS設計原理開始,進而闡述了MIPS指令集和程式設計師資源。書中還以MIPS32/MIPS64標準為基準,對其他體系結構進行了比較。
與第1版相比,第2版的顯著變化是封面圖片——小企鵝坐在駕駛員的位置上,本書以此作為研究來自Linux核心的真正的低層作業系統的實例,並且展示Linux(包括單處理器和SMP)如何構建於MIPS體系結構所提供的基礎之上。本書從作業系統的底層(中斷、記憶體調度)開始,進而描述更高級的Linux/MIPS套用代碼如何載入到記憶體、連線到庫並運行。
●清晰地闡述了Linux如何在硬體上運行。
●提供了完整的、更新的和簡單易用的MIPS指令集指南。
●本版保留了第1版可讀性好的寫作風格,凝聚了作者在基於MIPS體系結構的系統設計方面20多年的經驗。

內容簡介

本書是一本關於MIPS體系結構的經典之作。第2版延續了第1版的可讀性傳統,通過套用具體的實例對硬體和軟體的接口進行強調,並將廣泛套用的RISC系統結構MIPS與開源作業系統Linux結合在一起,從MIPS設計原理開始,闡述MIPS指令集和程式設計師的可用資源。
第2版在描述Linux/MIPS套用代碼如何載入到記憶體、如何連線到庫以及如何運行等方面做了介紹。此外,書中還提供了完整的、經過更新的MIPS指令集指南。
本書既可作為高等院校計算機體系結構、嵌入式系統編程和高級計算技術等課程的教材或教學參考書,也很適合科研機構專業人士和軟硬體開發人員參考閱讀。

作者簡介

(英)斯威特曼是一名有經驗的硬體系統、CPU、網路和作業系統設計者和開發者,他的豐富經驗來自於低層編碼、作業系統開發、區域網路、分散式系統。他是WhitechapelWorkstations的創立者之一,並在1988年創建了一家MIPS諮詢公司——Algorithmics。

圖書目錄

出版者的話
專家指導委員會
推薦序
譯者序
序言
前言
第1章 RISC和MlPS
1.1 流水線
1.1.1 什麼使流水線效率降低
1.1.2 流水線和快取
1.2 MIPS的五段流水線
1.3 RISC和CISC
1.4 迄今為止一些重要的MIPS晶片
1.4.1 R2000處理器到R3000處理器
1.4.2 R6000處理器:一次偏軌
1.4.3 第一批CPLJ核心
1.4.4 R4000處理器:一次革命
1.4.5 ACE聯盟的興衰
1.4.6 SGI收購MIPS
1.4.7 QED:嵌入式系統中的快速MIPS處理器
1.4.8 R10000處理器和它的後繼者
1.4.9 消費類電子產品中的MIPS處理器
1.4.10 網路路由器和雷射印表機中的MIPS
1.4.11 現代的MIPS處理器
1.4.12 MIPS Technologies的重生
1.4.13 現狀
1.5 MIPS和CISC體系結構的比較
1.5.1 對MIPS指令的各種限制
1.5.2 編址及記憶體訪問
1.5.3 發展MIPS不支持的特性
1.5.4 程式設計師可見的流水線效果
第2章 MIPS體系結構
2.1 MIPS彙編語言的風格
2.2 暫存器
2.3 整數乘法單元和暫存器
2.4 載入和存儲:定址方式
2.5 存儲器和暫存器中的數據類型
2.5.1 整數數據類型
2.5.2 未對齊的載入和存儲
2.5.3 記憶體中的浮點數據
2.6 彙編語言中的合成指令
2.7 MIPS 1發展到MIPS 64指令集:64位(和其他)的擴展
2.7.1 邁向64位
2.7.2 誰需要64位
2.7.3 關於64位與無模式轉換:暫存器中的數據
2.8 基本地址空間
2.8.1 簡單系統的定址
2.8.2 核心與用戶特權級別
2.8.3 整體視圖:記憶體映射的64位視圖
2.9 流水線的可見度
第3章 協處理器0:MIPS處理器控制
3.1 CPU控制指令
3.2 相關暫存器與時序
3.3 CPU控制暫存器及其編碼
3.3.1 狀態暫存器(SR)
3.3.2 原因暫存器
3.3.3 異常返回地址(EPC)暫存器
3.3.4 無效虛地址(BadVaddr)暫存器
3.3.5 計數/比較暫存器(Count/Compare)CPU上的計時器
3.3.6 處理器ID(PRId)暫存器
3.3.7 配置(Config)暫存器:CPU資源信息與配置
3.3.8 EBase和IntCtl:中斷與異常設定
3.3.9 SRSCtl和SRSMap:影子暫存器設定
3.3.10 連結載入地址(LLAddr)暫存器
3.4 CPO冒險——不經意間的陷阱
3.4.1 冒險屏障指令
3.4.2 指令冒險與用戶冒險
3.4.3 CPO指令之間的冒險
第4章 MIPS處理器的高速快取
4.1 高速快取和高速快取的管理
4.2 高速快取怎樣工作
4.3 早期MIPS CPU中的寫透式高速快取
4.4 MIPs CPU中的寫回式高速快取
4.5 高速快取設計的其他選擇
4.6 管理高速快取
4.7 二級和三級高速快取
4.8 MIPS CPU高速快取的配置
4.9 編程MIPS32/64高速快取
4.9.1 Cache指令
4.9.2 高速快取初始化和Tag/Data暫存器
4.9.3 CacheErr,ERR和ErrorEPC暫存器:記憶體/高速快取的錯誤處理
4.9.4 計算高速快取大小和配置方式
4.9.5 初始化例程
4.9.6 在高速快取中無效或寫回一個記憶體區域
4.10 高速快取效率
4.11 重組軟體來影響高速快取效率
4.12 高速快取別名
第5章 異常、中斷和初始化
5.1 精確異常
5.2 異常發生時刻
5.3 異常向量:異常處理開始的地方
5.4 異常處理:基礎
5.5 從異常返回
5.6 嵌套異常
5.7 一個異常處理例程
5.8 中斷
5.8.1 MIPS CPU中的中斷資源
5.8.2 通過軟體實現中斷優先權
5.8.3 原子性和SR的原子改變
5.8.4 中斷使能時的臨界區:MIPS中的信號量機制
5.8.5 MIPS32/64中向量化和EIC扣斷
5.8.6 影子暫存器
5.9 啟動
5.9.1 探測和識別CPU型號
5.9.2 啟動序列
5.9.3 啟動一個應用程式
5.10 模擬指令
第6章 底層記憶體管理與TLB
6.1 TLB/MMU硬體和它的功能
6.2 TLB/MMU的暫存器描述
6.2.1 TLB關鍵字域——EntryHi和PageMask
6.2.2 TLB輸出域——EntryLo0-1
6.2.3 選擇一個TLB表項——Index,Random和Wired暫存器
6.2.4 頁表訪問助手——Context和XContext
6.3 TLB/MMU的控制指令
6.4 對TLB編程
6.4.1 如何進行重填
6.4.2 使用ASID
6.4.3 Random暫存器與被鎖定表項
6.5 硬體友好的頁表和重填機制
6.5.1 TLB缺失處理
6.5.2 XTLB的缺失處理函式
6.6 MIPS TLB的日常使用
6.7 更簡單作業系統中的記憶體管理
第7章 浮點支持
7.1 浮點的基本描述
7.2 IEEE 754標準及其背景
7.3 怎樣存儲IEEE浮點數
7.3.1 IEEE尾數和規格化
7.3.2 使用特殊值時的預留指數值
7.3.3 MRS浮點數據格式
7.4 IEEE 754的MIPS實現
7.5 浮點暫存器
7.6 浮點異常/中斷
7.7 浮點控制:控制/狀態暫存器
7.8 浮點實現暫存器
7.9 浮點指令指南
7.9.1 載入/存儲
7.9.2 暫存器間的傳遞
7.9.3 三運算元算術運算
7.9.4 乘加運算
7.9.5 一元(改變符號)運算
7.9.6 轉換操作
7.9.7 條件分支和測試指令
7.10 成對單精度浮點指令和MIPS-3D ASE
7.10.1 成對單精度指令的異常
7.10.2 成對單精度的三運算元算術、乘加、改變符號和無條件移動操作
7.10.3 成對單精度轉換操作
7.10.4 成對單精度測試和條件移動指令
7.10.5 MIPS-3D指令
7.11 指令時序需求
7.12 指令加速的時序
7.13 按需初始化和使能
7.14 浮點仿真
第8章 MIPS指令集完全指南
8.1 一個簡單的例子
8.2 彙編指令及其含義
8.2.1 U和非U助記符
8.2.2 除法助記符
8.2.3 指令的詳細清單
8.3 浮點指令
8.4 MIPS32/64發行版1的區別
8.4.1 在發行版2中加入的常規指令
8.4.2 發行版2新加入的特權指令
8.5 特殊指令和它們的用途
8.5.1 向左載入/向右載入:地址非對齊的存取操作
8.5.2 連結載入/條件存儲
8.5.3 條件傳遞指令
8.5.4 可能分支指令
8.5.5 整數乘累加指令和乘加指令
8.5.6 浮點乘加指令
8.5.7 多浮點條件標誌位
8.5.8 快取數據預取
8.5.9 存取記憶體屏障:Sync指令
8.5.10 冒險禁止指令
8.5.11 Synci:指令寫入的快取管理
8.5.12 讀取硬體暫存器
8.6 指令的機器編碼
8.6.1 指令編碼表中的域
8.6.2 指令編碼表的注意事項
8.6.3 編碼方式和處理器的簡單實現
8.7 指令集的功能分組
8.7.1 空操作
8.7.2 暫存器間的數據傳遞指令
8.7.3 常數載入指令
8.7.4 算術/邏輯操作指令
8.7.5 整數乘法、除法以及求余指令
8.7.6 整數乘累加指令
8.7.7 存取指令
8.7.8 跳轉、分支和子程式調用指令
8.7.9 斷點及陷阱指令
8.7.10 協處理器0功能
8.7.11 浮點操作指令
8.7.12 用戶模式下對“底層”硬體的有限訪問
第9章 閱讀MIPS彙編語言
9.1 一個簡單的例子
9.2 句法
9.3 指令的約定
9.3.1 計算指令:3暫存器、2暫存器和1暫存器
9.3.2 立即數:帶常量的計算指令
9.3.3 關於64位和32位指令
9.4 定址模式
9.5 目標檔案和記憶體布局
第10章 在MIPS體系結構上移植軟體
10.1 MIPS套用的底層軟體:經常會遇到問題的列表
10.2 尾端:字、位元組和位的順序
10.2.1 位、位元組、字和整數
10.2.2 軟體和尾端
10.2.3 硬體和尾端
10.2.4 MIPS CPU的雙尾端軟體
10.2.5 可移植性和尾端無關代碼
10.2.6 尾端和外來數據
10.3 可見快取的問題
10.3.1 快取管理和DMA數據
10.3.2 快取管理和寫指令:自修改代碼
10.3.3 快取管理和非快取或寫透數據
10.3.4 快取別名和頁面著色
10.4 存儲訪問順序和重排
10.4.1 排序與寫緩衝
10.4.2 實現wbflush
10.5 寫C程式
10.5.1 用GNU C編譯器包裝彙編代碼
10.5.2 映射為記憶體的I/O暫存器和“Volatile”
10.5.3 用C寫MIPS應用程式的其他問題
第11章 MIPS軟體標準(ABI)
11.1 數據表示和對齊
11.1.1 基本類型的大小
11.1.2 “long”型和指針型數據大小
11.1.3 對齊要求
11.1.4 基本類型的記憶體布局和尾端如何產生影響
11.1.5 記憶體的布局結構、數組類型和對齊
11.1.6 結構中的位域
11.1.7 C中的不對齊數據
11.2 參數傳遞以及MIPS ABI中的堆疊約定
11.2.1 堆疊、子例程連結和參數專遞
11.2.2 032的堆疊參數結構
11.2.3 使用暫存器傳遞參數
11.2.4 C庫中的例子
11.2.5 特殊的例子:傳遞結構
11.2.6 傳遞可變參數
11.2.7 函式返回值
11.2.8 擴展暫存器一使用約定:SGIn32和n64
11.2.9 堆疊布局、堆疊幀和輔助調試器
11.2.10 可變參數和stdargs
第12章 調試MIPS設計——調試和剖析特性
12.1 “EJTAG”片上調試單元
12.1.1 EJTAG歷史
12.1.2 探頭如何控制CPU
12.1.3 通過JTAG調試通信
12.1.4 調試模式
12.1.5 單步
12.1.6 dseg記憶體解碼區域
12.1.7 EJTAG CPO暫存器,特殊調試
12.1.8 DCR(調試控制)記憶體映射暫存器
12.1.9 EJTAG斷點硬體支持
12.1.10 理解斷點條件
12.1.11 非精確調試斷點
12.1.12 PC取樣與EJTAG
12.1.13 使用沒有探頭的EJTAG
12.2 EJTAG之前的調試支持——break指令和CPO觀察點
12.3 PDtrace
12.4 性能計數器
第13章 GNU幾inux概覽
13.1 組件
13.2 核心代碼的層次
13.2.1 異常模式下的MIPS CPU
13.2.2 禁止部分或全部中斷的MIPS CPU
13.2.3 中斷上下文
13.2.4 執行緒上下文中執行核心
第14章 硬體與軟體如何協同工作
14.1 中斷的生命周期
14.2 執行緒、臨界區和原子性
14.2.1 MIPS體系結構和原子操作
14.2.2 Linux自旋鎖
14.3 系統調用時發生了什麼
14.4 Linux/MIPS系統如何進行地址翻譯
14.4.1 為什麼進行記憶體翻譯
14.4.2 基本進程布局與保護
14.4.3 映射進程地址到真實記憶體
14.4.4 選擇頁式映射
14.4.5 我們真正需要的
14.4.6 MIPs設計的起源
14.4.7 記錄被修改的頁面(模擬“髒”位)
14.4.8 核心如何服務一個TLB重填異常
14.4.9 TLB的注意事項與維護
14.4.10 記憶體翻譯與64位指針
第15章 Linux核心中的MIPS特有問題
15.1 顯式快取管理
15.1.1 DMA設備訪問
15.1.2 寫入指令稍後執行
15.1.3 快取/記憶體映射問題
15.1.4 快取別名
15.2 CPO流水線冒險
15.3 多處理器系統與一致性快取
15.4 對一個關鍵例程的極度最佳化調整
第16章 Linux應用程式代碼、PIC和庫
16.1 連結單元如何進入程式
16.2 全局偏移表(GOT)組織
附錄A MIPS多執行緒
附錄B MIPS指令集的其他可選擴展
MIPS術語表
參考文獻

相關詞條

熱門詞條

聯絡我們