出版時(shí)間:2008-5 出版社:機(jī)械工業(yè)出版社 作者:斯威特曼 頁(yè)數(shù):326 譯者:李鵬
Tag標(biāo)簽:無(wú)
內(nèi)容概要
本書(shū)是一本關(guān)于MIPS體系結(jié)構(gòu)的經(jīng)典之作。第2版延續(xù)了第1版的可讀性傳統(tǒng),通過(guò)應(yīng)用具體的實(shí)例對(duì)硬件和軟件的接口進(jìn)行強(qiáng)調(diào),并將廣泛應(yīng)用的RISC系統(tǒng)結(jié)構(gòu)MIPS與開(kāi)源操作系統(tǒng)Linux結(jié)合在一起,從MIPS設(shè)計(jì)原理開(kāi)始,闡述MIPS指令集和程序員的可用資源。 第2版在描述Linux/MIPS應(yīng)用代碼如何載入到內(nèi)存、如何連接到庫(kù)以及如何運(yùn)行等方面做了介紹。此外,書(shū)中還提供了完整的、經(jīng)過(guò)更新的MIPS指令集指南。 本書(shū)既可作為高等院校計(jì)算機(jī)體系結(jié)構(gòu)、嵌入式系統(tǒng)編程和高級(jí)計(jì)算技術(shù)等課程的教材或教學(xué)參考書(shū),也很適合科研機(jī)構(gòu)專(zhuān)業(yè)人士和軟硬件開(kāi)發(fā)人員參考閱讀。
作者簡(jiǎn)介
Dominic Sweetman富有大理實(shí)踐經(jīng)驗(yàn)的硬件系統(tǒng)、CPU、網(wǎng)絡(luò)和操作系統(tǒng)設(shè)計(jì)者和開(kāi)發(fā)者。他的豐富經(jīng)驗(yàn)來(lái)自于低層編碼、操作系統(tǒng)開(kāi)發(fā)、局域網(wǎng)和分布式系統(tǒng)。他是Whitechapel WorkstatIons的創(chuàng)立者之一,并在1988年創(chuàng)建了一家MIPS咨詢(xún)公司——AIgomhmics。
書(shū)籍目錄
出版者的話(huà)專(zhuān)家指導(dǎo)委員會(huì)推薦序譯者序序言前言第1章 RISC和MlPS 1.1 流水線(xiàn) 1.1.1 什么使流水線(xiàn)效率降低 1.1.2 流水線(xiàn)和緩存 1.2 MIPS的五段流水線(xiàn) 1.3 RISC和CISC 1.4 迄今為止一些重要的MIPS芯片 1.4.1 R2000處理器到R3000處理器 1.4.2 R6000處理器:一次偏軌 1.4.3 第一批CPLJ內(nèi)核 1.4.4 R4000處理器:一次革命 1.4.5 ACE聯(lián)盟的興衰 1.4.6 SGI收購(gòu)MIPS 1.4.7 QED:嵌入式系統(tǒng)中的快速M(fèi)IPS處理器 1.4.8 R10000處理器和它的后繼者 1.4.9 消費(fèi)類(lèi)電子產(chǎn)品中的MIPS處理器 1.4.10 網(wǎng)絡(luò)路由器和激光打印機(jī)中的MIPS 1.4.11 現(xiàn)代的MIPS處理器 1.4.12 MIPS Technologies的重生 1.4.13 現(xiàn)狀 1.5 MIPS和CISC體系結(jié)構(gòu)的比較 1.5.1 對(duì)MIPS指令的各種限制 1.5.2 編址及內(nèi)存訪問(wèn) 1.5.3 發(fā)展MIPS不支持的特性 1.5.4 程序員可見(jiàn)的流水線(xiàn)效果第2章 MIPS體系結(jié)構(gòu) 2.1 MIPS匯編語(yǔ)言的風(fēng)格 2.2 寄存器 2.3 整數(shù)乘法單元和寄存器 2.4 加載和存儲(chǔ):尋址方式 2.5 存儲(chǔ)器和寄存器中的數(shù)據(jù)類(lèi)型 2.5.1 整數(shù)數(shù)據(jù)類(lèi)型 2.5.2 未對(duì)齊的加載和存儲(chǔ) 2.5.3 內(nèi)存中的浮點(diǎn)數(shù)據(jù) 2.6 匯編語(yǔ)言中的合成指令 2.7 MIPS 1發(fā)展到MIPS 64指令集:64位(和其他)的擴(kuò)展 2.7.1 邁向64位 2.7.2 誰(shuí)需要64位 2.7.3 關(guān)于64位與無(wú)模式轉(zhuǎn)換:寄存器中的數(shù)據(jù) 2.8 基本地址空間 2.8.1 簡(jiǎn)單系統(tǒng)的尋址 2.8.2 核心與用戶(hù)特權(quán)級(jí)別 2.8.3 整體視圖:內(nèi)存映射的64位視圖 2.9 流水線(xiàn)的可見(jiàn)度第3章 協(xié)處理器0:MIPS處理器控制 3.1 CPU控制指令 3.2 相關(guān)寄存器與時(shí)序 3.3 CPU控制寄存器及其編碼 3.3.1 狀態(tài)寄存器(SR) 3.3.2 原因寄存器 3.3.3 異常返回地址(EPC)寄存器 3.3.4 無(wú)效虛地址(BadVaddr)寄存器 3.3.5 計(jì)數(shù)/比較寄存器(Count/Compare)CPU上的計(jì)時(shí)器 3.3.6 處理器ID(PRId)寄存器 3.3.7 配置(Config)寄存器:CPU資源信息與配置 3.3.8 EBase和IntCtl:中斷與異常設(shè)置 3.3.9 SRSCtl和SRSMap:影子寄存器設(shè)置 3.3.10 鏈接加載地址(LLAddr)寄存器 3.4 CPO冒險(xiǎn)——不經(jīng)意間的陷阱 3.4.1 冒險(xiǎn)屏障指令 3.4.2 指令冒險(xiǎn)與用戶(hù)冒險(xiǎn) 3.4.3 CPO指令之間的冒險(xiǎn)第4章 MIPS處理器的高速緩存 4.1 高速緩存和高速緩存的管理 4.2 高速緩存怎樣工作 4.3 早期MIPS CPU中的寫(xiě)透式高速緩存 4.4 MIPs CPU中的寫(xiě)回式高速緩存 4.5 高速緩存設(shè)計(jì)的其他選擇 4.6 管理高速緩存 4.7 二級(jí)和三級(jí)高速緩存 4.8 MIPS CPU高速緩存的配置 4.9 編程MIPS32/64高速緩存 4.9.1 Cache指令 4.9.2 高速緩存初始化和Tag/Data寄存器 4.9.3 CacheErr,ERR和ErrorEPC寄存器:內(nèi)存/高速緩存的錯(cuò)誤處理 4.9.4 計(jì)算高速緩存大小和配置方式 4.9.5 初始化例程 4.9.6 在高速緩存中無(wú)效或?qū)懟匾粋€(gè)內(nèi)存區(qū)域 4.10 高速緩存效率 4.11 重組軟件來(lái)影響高速緩存效率 4.12 高速緩存別名笫5章 異常、中斷和初始化 5.1 精確異常 5.2 異常發(fā)生時(shí)刻 5.3 異常向量:異常處理開(kāi)始的地方 5.4 異常處理:基礎(chǔ) 5.5 從異常返回 5.6 嵌套異常 5.7 一個(gè)異常處理例程 5.8 中斷 5.8.1 MIPS CPU中的中斷資源 5.8.2 通過(guò)軟件實(shí)現(xiàn)中斷優(yōu)先級(jí) 5.8.3 原子性和SR的原子改變 5.8.4 中斷使能時(shí)的臨界區(qū):MIPS中的信號(hào)量機(jī)制 5.8.5 MIPS32/64中向量化和EIC扣斷 5.8.6 影子寄存器 5.9 啟動(dòng) 5.9.1 探測(cè)和識(shí)別CPU型號(hào) 5.9.2 啟動(dòng)序列 5.9.3 啟動(dòng)一個(gè)應(yīng)用程序 5.10 模擬指令第6章 底層內(nèi)存管理與TLB 6.1 TLB/MMU硬件和它的功能 6.2 TLB/MMU的寄存器描述 6.2.1 TLB關(guān)鍵字域——EntryHi和PageMask 6.2.2 TLB輸出域——EntryLo0-1 6.2.3 選擇一個(gè)TLB表項(xiàng)——Index,Random和Wired寄存器 6.2.4 頁(yè)表訪問(wèn)助手——Context和XContext 6.3 TLB/MMU的控制指令 6.4 對(duì)TLB編程 6.4.1 如何進(jìn)行重填 6.4.2 使用ASID 6.4.3 Random寄存器與被鎖定表項(xiàng) 6.5 硬件友好的頁(yè)表和重填機(jī)制 6.5.1 TLB缺失處理 6.5.2 XTLB的缺失處理函數(shù) 6.6 MIPS TLB的日常使用 6.7 更簡(jiǎn)單操作系統(tǒng)中的內(nèi)存管理第7章 浮點(diǎn)支持 7.1 浮點(diǎn)的基本描述 7.2 IEEE 754標(biāo)準(zhǔn)及其背景 7.3 怎樣存儲(chǔ)IEEE浮點(diǎn)數(shù) 7.3.1 IEEE尾數(shù)和規(guī)格化 7.3.2 使用特殊值時(shí)的預(yù)留指數(shù)值 7.3.3 MRS浮點(diǎn)數(shù)據(jù)格式 7.4 IEEE 754的MIPS實(shí)現(xiàn) 7.5 浮點(diǎn)寄存器 7.6 浮點(diǎn)異常/中斷 7.7 浮點(diǎn)控制:控制/狀態(tài)寄存器 7.8 浮點(diǎn)實(shí)現(xiàn)寄存器 7.9 浮點(diǎn)指令指南 7.9.1 加載/存儲(chǔ) 7.9.2 寄存器間的傳遞 7.9.3 三操作數(shù)算術(shù)運(yùn)算 7.9.4 乘加運(yùn)算 7.9.5 一元(改變符號(hào))運(yùn)算 7.9.6 轉(zhuǎn)換操作 7.9.7 條件分支和測(cè)試指令 7.10 成對(duì)單精度浮點(diǎn)指令和MIPS-3D ASE 7.10.1 成對(duì)單精度指令的異常 7.10.2 成對(duì)單精度的三操作數(shù)算術(shù)、乘加、改變符號(hào)和無(wú)條件移動(dòng)操作 7.10.3 成對(duì)單精度轉(zhuǎn)換操作 7.10.4 成對(duì)單精度測(cè)試和條件移動(dòng)指令 7.10.5 MIPS-3D指令 7.11 指令時(shí)序需求 7.12 指令加速的時(shí)序 7.13 按需初始化和使能 7.14 浮點(diǎn)仿真笫8章 MIPS指令集完全指南 8.1 一個(gè)簡(jiǎn)單的例子 8.2 匯編指令及其含義 8.2.1 U和非U助記符 8.2.2 除法助記符 8.2.3 指令的詳細(xì)清單 8.3 浮點(diǎn)指令 8.4 MIPS32/64發(fā)行版1的區(qū)別 8.4.1 在發(fā)行版2中加入的常規(guī)指令 8.4.2 發(fā)行版2新加入的特權(quán)指令 8.5 特殊指令和它們的用途 8.5.1 向左加載/向右加載:地址非對(duì)齊的存取操作 8.5.2 鏈接加載/條件存儲(chǔ) 8.5.3 條件傳遞指令 8.5.4 可能分支指令 8.5.5 整數(shù)乘累加指令和乘加指令 8.5.6 浮點(diǎn)乘加指令 8.5.7 多浮點(diǎn)條件標(biāo)志位 8.5.8 緩存數(shù)據(jù)預(yù)取 8.5.9 存取內(nèi)存屏障:Sync指令 8.5.10 冒險(xiǎn)屏蔽指令 8.5.11 Synci:指令寫(xiě)入的緩存管理 8.5.12 讀取硬件寄存器 8.6 指令的機(jī)器編碼 8.6.1 指令編碼表中的域 8.6.2 指令編碼表的注意事項(xiàng) 8.6.3 編碼方式和處理器的簡(jiǎn)單實(shí)現(xiàn) 8.7 指令集的功能分組 8.7.1 空操作 8.7.2 寄存器間的數(shù)據(jù)傳遞指令 8.7.3 常數(shù)加載指令 8.7.4 算術(shù)/邏輯操作指令 8.7.5 整數(shù)乘法、除法以及求余指令 8.7.6 整數(shù)乘累加指令 8.7.7 存取指令 8.7.8 跳轉(zhuǎn)、分支和子程序調(diào)用指令 8.7.9 斷點(diǎn)及陷阱指令 8.7.10 協(xié)處理器0功能 8.7.11 浮點(diǎn)操作指令 8.7.12 用戶(hù)模式下對(duì)“底層”硬件的有限訪問(wèn)第9章 閱讀MIPS匯編語(yǔ)言 9.1 一個(gè)簡(jiǎn)單的例子 9.2 句法 9.3 指令的約定 9.3.1 計(jì)算指令:3寄存器、2寄存器和1寄存器 9.3.2 立即數(shù):帶常量的計(jì)算指令 9.3.3 關(guān)于64位和32位指令 9.4 尋址模式 9.5 目標(biāo)文件和內(nèi)存布局第10章 在MIPS體系結(jié)構(gòu)上移植軟件 10.1 MIPS應(yīng)用的底層軟件:經(jīng)常會(huì)遇到問(wèn)題的列表 10.2 尾端:字、字節(jié)和位的順序 10.2.1 位、字節(jié)、字和整數(shù) 10.2.2 軟件和尾端 10.2.3 硬件和尾端 10.2.4 MIPS CPU的雙尾端軟件 10.2.5 可移植性和尾端無(wú)關(guān)代碼 10.2.6 尾端和外來(lái)數(shù)據(jù) 10.3 可見(jiàn)緩存的問(wèn)題 10.3.1 緩存管理和DMA數(shù)據(jù) 10.3.2 緩存管理和寫(xiě)指令:自修改代碼 10.3.3 緩存管理和非緩存或?qū)懲笖?shù)據(jù) 10.3.4 緩存別名和頁(yè)面著色 10.4 存儲(chǔ)訪問(wèn)順序和重排 10.4.1 排序與寫(xiě)緩沖 10.4.2 實(shí)現(xiàn)wbflush 10.5 寫(xiě)C程序 10.5.1 用GNU C編譯器包裝匯編代碼 10.5.2 映射為內(nèi)存的I/O寄存器和“Volatile” 10.5.3 用C寫(xiě)MIPS應(yīng)用程序的其他問(wèn)題第11章 MIPS軟件標(biāo)準(zhǔn)(ABI) 11.1 數(shù)據(jù)表示和對(duì)齊 11.1.1 基本類(lèi)型的大小 11.1.2 “l(fā)ong”型和指針型數(shù)據(jù)大小 11.1.3 對(duì)齊要求 11.1.4 基本類(lèi)型的內(nèi)存布局和尾端如何產(chǎn)生影響 11.1.5 內(nèi)存的布局結(jié)構(gòu)、數(shù)組類(lèi)型和對(duì)齊 11.1.6 結(jié)構(gòu)中的位域 11.1.7 C中的不對(duì)齊數(shù)據(jù) 11.2 參數(shù)傳遞以及MIPS ABI中的堆棧約定 11.2.1 堆棧、子例程鏈接和參數(shù)專(zhuān)遞 11.2.2 032的堆棧參數(shù)結(jié)構(gòu) 11.2.3 使用寄存器傳遞參數(shù) 11.2.4 C庫(kù)中的例子 11.2.5 特殊的例子:傳遞結(jié)構(gòu) 11.2.6 傳遞可變參數(shù) 11.2.7 函數(shù)返回值 11.2.8 擴(kuò)展寄存器一使用約定:SGIn32和n64 11.2.9 堆棧布局、堆棧幀和輔助調(diào)試器 11.2.10 可變參數(shù)和stdargs第12章 調(diào)試MIPS設(shè)計(jì)——調(diào)試和剖析特性 12.1 “EJTAG”片上調(diào)試單元 12.1.1 EJTAG歷史 12.1.2 探頭如何控制CPU 12.1.3 通過(guò)JTAG調(diào)試通信 12.1.4 調(diào)試模式 12.1.5 單步 12.1.6 dseg內(nèi)存譯碼區(qū)域 12.1.7 EJTAG CPO寄存器,特殊調(diào)試 12.1.8 DCR(調(diào)試控制)內(nèi)存映射寄存器 12.1.9 EJTAG斷點(diǎn)硬件支持 12.1.10 理解斷點(diǎn)條件 12.1.11 非精確調(diào)試斷點(diǎn) 12.1.12 PC取樣與EJTAG 12.1.13 使用沒(méi)有探頭的EJTAG 12.2 EJTAG之前的調(diào)試支持——break指令和CPO觀察點(diǎn) 12.3 PDtrace 12.4 性能計(jì)數(shù)器第13章 GNU幾inux概覽 13.1 組件 13.2 內(nèi)核代碼的層次 13.2.1 異常模式下的MIPS CPU 13.2.2 屏蔽部分或全部中斷的MIPS CPU 13.2.3 中斷上下文 13.2.4 線(xiàn)程上下文中執(zhí)行內(nèi)核第14章 硬件與軟件如何協(xié)同工作 14.1 中斷的生命周期 14.2 線(xiàn)程、臨界區(qū)和原子性 14.2.1 MIPS體系結(jié)構(gòu)和原子操作 14.2.2 Linux自旋鎖 14.3 系統(tǒng)調(diào)用時(shí)發(fā)生了什么 14.4 Linux/MIPS系統(tǒng)如何進(jìn)行地址翻譯 14.4.1 為什么進(jìn)行內(nèi)存翻譯 14.4.2 基本進(jìn)程布局與保護(hù) 14.4.3 映射進(jìn)程地址到真實(shí)內(nèi)存 14.4.4 選擇頁(yè)式映射 14.4.5 我們真正需要的 14.4.6 MIPs設(shè)計(jì)的起源 14.4.7 記錄被修改的頁(yè)面(模擬“臟”位) 14.4.8 內(nèi)核如何服務(wù)一個(gè)TLB重填異常 14.4.9 TLB的注意事項(xiàng)與維護(hù) 14.4.10 內(nèi)存翻譯與64位指針第15章 Linux內(nèi)核中的MIPS特有問(wèn)題 15.1 顯式緩存管理 15.1.1 DMA設(shè)備訪問(wèn) 15.1.2 寫(xiě)入指令稍后執(zhí)行 15.1.3 緩存/內(nèi)存映射問(wèn)題 15.1.4 緩存別名 15.2 CPO流水線(xiàn)冒險(xiǎn) 15.3 多處理器系統(tǒng)與一致性緩存 15.4 對(duì)一個(gè)關(guān)鍵例程的極度優(yōu)化調(diào)整第16章 Linux應(yīng)用程序代碼、PIC和庫(kù) 16.1 鏈接單元如何進(jìn)入程序 16.2 全局偏移表(GOT)組織附錄A MIPS多線(xiàn)程附錄B MIPS指令集的其他可選擴(kuò)展MIPS術(shù)語(yǔ)表參考文獻(xiàn)
編輯推薦
本書(shū)是“計(jì)算機(jī)科學(xué)叢書(shū)”之一,全書(shū)共分16個(gè)章節(jié),對(duì)MIPS的體系結(jié)構(gòu)透視作了全面系統(tǒng)地介紹,具體包括MIPS體系結(jié)構(gòu)、MIPS處理器的高速緩存、底層內(nèi)存管理與TLB、浮點(diǎn)支持、MIPS指令集完全指南、在MIPS體系結(jié)構(gòu)上移植軟件等。該書(shū)可供各大專(zhuān)院校作為教材使用,也可供從事相關(guān)工作的人員作為參考用書(shū)使用。 大多數(shù)”體系結(jié)構(gòu)概覽”類(lèi)的書(shū)籍對(duì)體系結(jié)構(gòu)的匯編語(yǔ)言語(yǔ)焉不詳,只是給出令人厭煩的概述。然而,本書(shū)卻是一個(gè)典型的反例,為所有這類(lèi)書(shū)的作者樹(shù)立了一個(gè)榜樣。作者不但提供了體系結(jié)構(gòu)參考所必需的細(xì)節(jié),還以對(duì)關(guān)鍵體系結(jié)構(gòu)特點(diǎn)(及其原理)富有洞察力的視角表達(dá)出這些細(xì)節(jié)?! ≡搶?duì)于通用的計(jì)算機(jī)還是對(duì)于MlPS來(lái)說(shuō),本書(shū)都是非常有用的書(shū)籍。它闡述了滲入到體系結(jié)構(gòu)發(fā)展中的技術(shù)、經(jīng)濟(jì)和歷史和政治等因素?! 〉?版的一個(gè)重要補(bǔ)充涉及操作系統(tǒng)、移植以及ABl等問(wèn)題。本書(shū)對(duì)于軟件開(kāi)發(fā)者來(lái)說(shuō)是一本優(yōu)秀的參考書(shū)。任何從事MIPS體系結(jié)構(gòu)相關(guān)工作的人都會(huì)樂(lè)于擁有這本書(shū)?! 猂andy AIIen,Catalytic公司的創(chuàng)始人和首席技術(shù)官 本書(shū)是任何MIPS體系結(jié)構(gòu)參考手冊(cè)的極好伴侶。本版延續(xù)了第1版的傳統(tǒng),通過(guò)具體實(shí)例強(qiáng)調(diào)硬件/軟件接口。另外,第2版增加了最新的,從MIPS—I/V體系結(jié)構(gòu)到MIPS-32/64體系結(jié)構(gòu)的轉(zhuǎn)變,其中包括支持多線(xiàn)程的體系結(jié)構(gòu)??傊?,這是任何熱衷MIPs體系結(jié)構(gòu)的程序員的必備書(shū)籍。 ——Jan-WiIlem van de Waerdt,飛利浦半導(dǎo)體研究院 第2版不僅對(duì)第1版進(jìn)行了徹底的更新,而且將應(yīng)用廣泛的RISC系統(tǒng)結(jié)構(gòu)MIPS與開(kāi)源操作系統(tǒng)Linux結(jié)合在一起。本書(shū)的第一部分從MIPS設(shè)計(jì)原理開(kāi)始,進(jìn)而闡述MIPSt旨令集和程序員資源。書(shū)中以MIPS 32/MIPS64標(biāo)準(zhǔn)為基準(zhǔn),對(duì)其他體系結(jié)構(gòu)進(jìn)行了比較。 與第1版相比,第2版的顯著變化是面圖片的小企鵝坐在駕駛員的位置上,本書(shū)以此作為研究來(lái)自Linux 內(nèi)核的真正的低層操作系統(tǒng)的實(shí)例,展示Linux(包括單處理器和DSMP)如何構(gòu)建于MIPS體系結(jié)構(gòu)所提供的基礎(chǔ)之上。本書(shū)從操作系統(tǒng)的底層(中斷、內(nèi)存調(diào)度)開(kāi)始,進(jìn)而描述Linux/MIPS應(yīng)用代碼如何載入到內(nèi)存、連接到庫(kù)并運(yùn)行。
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版