出版時間:2012-10 出版社:電子工業(yè)出版社 作者:(日) Hisa Ando 頁數(shù):342 字?jǐn)?shù):500000 譯者:李劍
Tag標(biāo)簽:無
前言
關(guān)于本書 2010年,全世界每天都會售出100萬臺個人計(jì)算機(jī),這些計(jì)算機(jī)的核心就是處理器。其實(shí)不僅是個人計(jì)算機(jī),汽車、家電,特別是手機(jī)中也有處理器的身影。幾乎所有的手機(jī)中嵌入的ARM處理器都是由英國的ARM公司開發(fā)的,而據(jù)ARM公司2010年的報(bào)告,當(dāng)年ARM處理器的累計(jì)銷售總量超過了200億個。僅ARM一家公司,每年就會生產(chǎn)40億個ARM處理器,這個數(shù)值超過全世界人口的一半。所以,我們生活的世界,是由地球總?cè)丝诤脦妆抖嗟奶幚砥髦沃?。此外,Google這類搜索引擎、銀行ATM、鐵路運(yùn)管系統(tǒng)等社會基礎(chǔ)設(shè)施也離不開處理器,我們無法想象沒有這些系統(tǒng)的生活?! 』仡櫄v史,人們從古代就為了實(shí)現(xiàn)簡單、高速的計(jì)算而花費(fèi)了很大精力。從算盤等計(jì)算輔助工具,到使用齒輪制作機(jī)械式加法器和乘法器,后來又采用電子線路代替齒輪以實(shí)現(xiàn)更快的速度。第一臺計(jì)算機(jī)ENIAC于1946年完成并投入使用,它是個像房子那么大的龐然大物,每秒能進(jìn)行5000次計(jì)算,耗電量約為150kW。與之相比,現(xiàn)代微處理器的性能為每秒100多億次以上計(jì)算,個人計(jì)算機(jī)的整體最大耗電量約為300W。這就是說,計(jì)算性能提升了200萬倍,耗電量下降到了1/500?! ∑鋵?shí),從最初的電子計(jì)算機(jī)到現(xiàn)在僅用了60年時間。細(xì)數(shù)飛躍進(jìn)步的原因,功勞最大的當(dāng)然要數(shù)從真空管到晶體管再到LSI(Large Scale Integration,大規(guī)模集成電路)的電路技術(shù)的進(jìn)步。而另一方面,追求高速運(yùn)行的計(jì)算機(jī)體系結(jié)構(gòu)的進(jìn)步也為之做出了巨大貢獻(xiàn)?! ”M管處理器性能一直在飛速發(fā)展,但最近由于耗電量的限制,單核心的性能提高速度變慢了。人們開始從多線程、多核心化方面提升性能,并通過虛擬機(jī)、安全等技術(shù)努力提高可用性。另外,不僅是傳統(tǒng)的計(jì)算機(jī),智能手機(jī)、上網(wǎng)本等移動設(shè)備也使用了強(qiáng)大的處理器,由于電池續(xù)航能力的要求,處理器還在朝著節(jié)能方向發(fā)展。 如上所述,處理器在持續(xù)發(fā)展以適應(yīng)時代與需求的變化。個人計(jì)算機(jī)被貼上了“Intel Inside”的標(biāo)志,就連對硬件技術(shù)毫無興趣的人也知道微處理器,至少知道處理器這個名字。另一方面,隨著科技的發(fā)展,處理器也變得極端復(fù)雜,其構(gòu)造與使用技巧很難得到廣泛的認(rèn)知。 但是,是理解處理器的構(gòu)造和運(yùn)行原理,還是把它當(dāng)做黑盒使用而不知其所以然,兩者的使用效果難道沒有差別嗎?就像開車,要是只想把車開走,當(dāng)然不必了解汽車的結(jié)構(gòu)及結(jié)構(gòu)帶來的性質(zhì)差異;但要是能夠理解這些,不就能開得比較“拉風(fēng)”,或比較省油了? 本書主要以希望提高計(jì)算機(jī)系統(tǒng)運(yùn)行效率的程序員為對象,講解處理器中使用的高性能化技術(shù)與構(gòu)造,并介紹怎樣寫程序才能讓處理器高效運(yùn)行。提到處理器的設(shè)計(jì),有些人可能會聯(lián)想到與門、或門等邏輯電路之類的硬件設(shè)計(jì),但本書內(nèi)容處于邏輯電路的上層,主要以“微體系架構(gòu)”和“指令架構(gòu)”這些程序員使用的接口為中心,介紹處理器的結(jié)構(gòu)與運(yùn)行原理?! √幚砥魈幱诟鞣N計(jì)算機(jī)的核心位置,如今在移動設(shè)備乃至社會基礎(chǔ)設(shè)施中都扮演著舉足輕重的角色。希望本書能在理解處理器的發(fā)展、熟練掌握處理器方面助你一臂之力?! ?010年11月 Hisa Ando 本書的結(jié)構(gòu) 本書以程序員為主要對象,以通俗易懂的方式說明處理器的結(jié)構(gòu)和使用技巧。以下是各章內(nèi)容?! 〉?章 處理器與計(jì)算機(jī)系統(tǒng)的基礎(chǔ) 第1章 作為緒論,通俗易懂地介紹了處理器、使用處理器的計(jì)算機(jī)的概要及術(shù)語,以便初次接觸處理器、計(jì)算機(jī)硬件的讀者也能夠理解第2章以后的內(nèi)容。 第2章 處理器發(fā)展史 第2章 說明計(jì)算機(jī)器的發(fā)展史,以及那些提高處理器性能、簡化使用方法的技術(shù)。本章的目標(biāo)是讓讀者理解處理器的發(fā)展歷程和采用技術(shù)的概要?! 〉?章 [詳解]面向程序員的處理器架構(gòu) 第4章 虛擬化支持 第5章 多處理器的出現(xiàn)和普及 第3章 到第5章是本書的中心。第3章具體介紹流水線處理、緩存、亂序執(zhí)行等提高處理器速度的技術(shù),以及內(nèi)存管理、虛擬化、多媒體處理等擴(kuò)大處理器使用范圍的技術(shù)。我們將給出程序例子,通俗易懂地介紹程序員應(yīng)當(dāng)如何高效地使用處理器。另外,第3章還介紹了個人計(jì)算機(jī)和服務(wù)器中廣泛使用的Intel處理器的構(gòu)造?! 〉?章 說明最近的云計(jì)算系統(tǒng)等必不可少的虛擬化,以及虛擬化的實(shí)現(xiàn)機(jī)制,與提高虛擬機(jī)系統(tǒng)效率的注意事項(xiàng)?! 〉?章 就最近流行的多線程、多核心處理器,介紹其出現(xiàn)的背景和使用的技術(shù),介紹高效利用多核心處理器時的要點(diǎn)?! 〉?章 處理器周邊技術(shù) 第6章 介紹處理器周邊技術(shù),它與處理器同樣是計(jì)算機(jī)系統(tǒng)的重要構(gòu)成因素,包括負(fù)責(zé)存儲的內(nèi)存和處理器相連的輸入/輸出設(shè)備接口的結(jié)構(gòu)與運(yùn)作方式?! 〉?章 GPGPU與超并行處理 第7章 著眼于最近以其高計(jì)算處理能力而備受關(guān)注的GPU(Graphics Processing Unit)、GPGPU(General Purpose GPU),本章介紹其結(jié)構(gòu),以及將它作為計(jì)算引擎時的注意事項(xiàng)?! 〉?章 處理器的發(fā)展趨勢 最后在第8章中以今后處理器的發(fā)展為焦點(diǎn),探討技術(shù)的發(fā)展方向和各種用途的處理器的發(fā)展方向?! ≈形陌鏁星锌谔幍摹啊北硎驹瓡摯a,便于讀者與原日文版圖書對照閱讀,本書索引所列頁碼為原日文版頁碼。
內(nèi)容概要
本書用通俗易懂的語言和大量的插圖,介紹了處理器的歷史、基本結(jié)構(gòu)、實(shí)現(xiàn)原理等,還對時下流行的虛擬化技術(shù)、多任務(wù)、多核心、GPGPU
等進(jìn)行了全面的講解,并介紹了有效利用處理器的各種功能來提高應(yīng)用程序性能的方法。對于普通讀者來說,這是本學(xué)習(xí)知識的科普讀物;對于程序員來說,這是一把打開現(xiàn)代處理器寶庫的鑰匙。
本書最后還介紹了處理器在移動設(shè)備、汽車、家電等方面的應(yīng)用,并展望處理器的未來發(fā)展趨勢,希望能對相關(guān)軟硬件的開發(fā)者有所幫助。
作者簡介
Hisa Ando,擁有40年尖端處理器的開發(fā)經(jīng)驗(yàn)。曾作為SPARC架構(gòu)委員會委員參與了SPARC
V9架構(gòu)的開發(fā),后作為HAL公司副總裁兼處理器開發(fā)部總經(jīng)理參與了SPARC64的開發(fā)。后來又擔(dān)任過富士通株式會社計(jì)算機(jī)事業(yè)本部的技師長等職務(wù)?,F(xiàn)在作為技術(shù)作家,主要從事處理器、超級計(jì)算機(jī)相關(guān)的報(bào)道和介紹等。此外,還擔(dān)任了幾所大學(xué)的客座講師,負(fù)責(zé)計(jì)算機(jī)架構(gòu)的課程。擁有工學(xué)博士學(xué)位。
書籍目錄
第1章 處理器與計(jì)算機(jī)系統(tǒng)的基礎(chǔ)
1.1 計(jì)算機(jī)的結(jié)構(gòu)
計(jì)算機(jī)組成部分——處理器、內(nèi)存、輸入/輸出設(shè)備
專欄 處理器封裝的物理結(jié)構(gòu)
計(jì)算機(jī)使用二進(jìn)制進(jìn)行計(jì)算
專欄 2值和多值 非二進(jìn)制不可嗎?不一定!
處理器——計(jì)算機(jī)的大腦,負(fù)責(zé)解釋程序
專欄 處理器、微處理器的定義 計(jì)算機(jī)最重要的組件
——處理器
專欄 流水線級
專欄 表示數(shù)量級的前綴
內(nèi)存——存儲計(jì)算機(jī)的指令和數(shù)據(jù)
輸入/輸出設(shè)備——計(jì)算機(jī)的眼睛、耳朵和嘴巴
北橋和南橋——逐漸淡化的稱呼
1.2 支撐計(jì)算機(jī)高速化的半導(dǎo)體技術(shù)
摩爾(Moore)定律——更多的晶體管,更高的并行度
縮放定律——晶體管的性能提升
源源不斷的開發(fā)投資帶來的半導(dǎo)體微型化——微型化的步伐
還將長期維持
提升性能的三大支柱——提高頻率、并行處理和功能擴(kuò)展
1.3 計(jì)算機(jī)和數(shù)據(jù)表示方法
字節(jié)、半字、字……——比特組及用途
文字編碼
專欄 日語與文字編碼
無符號整數(shù)與有符號整數(shù)、反碼與補(bǔ)碼表示法
浮點(diǎn)小數(shù)——IEEE 754標(biāo)準(zhǔn)
Big Endian與Little Endian
1.4 處理器和指令
指令架構(gòu)入門
機(jī)器指令——處理器的指令
地址空間
專欄 AMD和Intel的64位擴(kuò)展架構(gòu)
1.5 機(jī)器指令程序編寫方法
用匯編語言編程
利用編譯器進(jìn)行高級語言編程
解釋語言編程
1.6 小結(jié)
專欄 半導(dǎo)體的微型化
第2章 處理器發(fā)展史
2.1 計(jì)算機(jī)之前的計(jì)算設(shè)備
算盤——最早的計(jì)算工具
納皮爾算籌(Napier's bones)——乘法輔助工具
機(jī)械式計(jì)算機(jī)——Schikard計(jì)算機(jī)、Pascaline
巴貝奇的差分機(jī)——使用齒輪的超級計(jì)算機(jī)
2.2 最早的電子計(jì)算機(jī)
最早的電子計(jì)算機(jī)——ABC和ENIAC
FUJIC——日本最早的電子計(jì)算機(jī)
2.3 處理器組成元件的變遷
根據(jù)主要部件劃分計(jì)算機(jī)的時代
第1代:真空管
第2代:晶體管
第3代:集成電路
第4代:大規(guī)模集成電路(VLSI)
VLSI處理器的元件數(shù)目和時鐘頻率的發(fā)展趨勢
2.4 指令架構(gòu)的變遷
指令架構(gòu)的發(fā)展之路
存儲程序的計(jì)算機(jī)——程序也從內(nèi)存中讀入
虛擬內(nèi)存——更加豐富、取之不盡的內(nèi)存
多任務(wù)——需要改變程序的部署
分時系統(tǒng)與內(nèi)存管理設(shè)施的出現(xiàn)
專欄 MULTICS之后的事
內(nèi)存管理機(jī)構(gòu)、特權(quán)態(tài)——多用戶需要解決安全問題
指令架構(gòu)擴(kuò)展——指令架構(gòu)的確立與指令兼容性的實(shí)現(xiàn)
2.5 微架構(gòu)的發(fā)展
微架構(gòu)的發(fā)展之道
流水線處理——通過流水線寄存器有效利用硬件
運(yùn)算器的高速化——整數(shù)運(yùn)算器、浮點(diǎn)數(shù)運(yùn)算器
高速緩存——解決內(nèi)存訪問問題的錦囊
RISC的出現(xiàn)——RISC與CISC
超標(biāo)量執(zhí)行——一個周期內(nèi)執(zhí)行多條指令
亂序執(zhí)行——改變指令順序以提高性能
專欄 亂序執(zhí)行(Out of Order):請注意???
分支預(yù)測與預(yù)測執(zhí)行——“條件分支指令”對策
多核心——耗電量的限制推動了多核心的發(fā)展
2.6 處理器的用途越來越廣泛
活躍在各種舞臺的處理器
節(jié)能、高可靠技術(shù)、實(shí)時性——各種各樣的需求
2.7 小結(jié)
第3章 [詳解]面向程序員的處理器架構(gòu)
3.1 支撐微架構(gòu)的技術(shù)
流水線執(zhí)行的原理——并行處理指令
高速緩存的構(gòu)造——提高內(nèi)存訪問速度
RISC與CISC——定長指令與變長指令
提高運(yùn)算器的速度——處理器中因處理復(fù)雜而處理時間長
的組件之一
超標(biāo)量執(zhí)行的原理——一個周期內(nèi)并行執(zhí)行多條指令
亂序執(zhí)行的原理——減輕數(shù)據(jù)冒險(xiǎn)的影響
分支預(yù)測的原理——降低控制冒險(xiǎn)造成的損失
現(xiàn)代處理器會消除或減輕各種冒險(xiǎn)以提高性能
內(nèi)存、I/O與輸入/輸出接口
性能計(jì)數(shù)器——性能分析器和處理器內(nèi)部執(zhí)行狀況的信息
3.2 架構(gòu)擴(kuò)展擴(kuò)大了處理器的使用范圍
多任務(wù)和內(nèi)存管理機(jī)構(gòu)
中斷處理機(jī)構(gòu)
專欄 異常、中斷、陷阱——術(shù)語整理
虛擬化支持——內(nèi)存訪問和內(nèi)存管理機(jī)構(gòu)
多媒體、加密等支持——需要大量數(shù)據(jù)的計(jì)算
3.3 x86 Nehalem架構(gòu)處理器
x86的指令體系和Intel 64架構(gòu)
Core i7處理器的結(jié)構(gòu)
內(nèi)存管理采用4級頁表
新的處理器接口QPI
3.4 小結(jié)
第4章 虛擬化支持
4.1 虛擬化的目的和優(yōu)缺點(diǎn)
虛擬化的基礎(chǔ)知識(復(fù)習(xí))
虛擬化的目的
實(shí)現(xiàn)用戶間強(qiáng)隔離——虛擬化的優(yōu)點(diǎn)
集合多臺服務(wù)器,提高利用率——虛擬化的優(yōu)點(diǎn)
VMM運(yùn)行時的額外開銷——虛擬化的缺點(diǎn)、注意點(diǎn)
4.2 實(shí)現(xiàn)虛擬化的條件
為操作系統(tǒng)提供獨(dú)立的(虛擬)硬件的VMM
4.3 支撐虛擬化的硬件設(shè)施
檢測硬件操作命令
硬件狀態(tài)的保存和還原——切換虛擬機(jī)
雙重地址轉(zhuǎn)換、TLB
I/O的虛擬化
實(shí)時遷移(Live Migration)
4.4 小結(jié)
專欄 虛擬化的前世今生
第5章 多處理器的出現(xiàn)和普及
5.1 多線程處理器
線程、多線程的紛繁蕪雜(!?)——首先總結(jié)一下術(shù)語
多線程的兩種方式
VMT的原理——短時間內(nèi)切換線程
SMT的原理——混雜執(zhí)行多個線程的指令
專欄 歷史悠久的SMT
SMT必需的機(jī)制
多線程的效果如何——通過Windows任務(wù)管理器查看效果
5.2 多處理器系統(tǒng)
多處理器、多核心是什么意思
多核心處理器的結(jié)構(gòu)
專欄 眾核處理器(Many-core processor)的結(jié)構(gòu)
緩存一致性控制——多處理器之間緩存的一致性
多插槽系統(tǒng)
專欄 插槽還是芯片
專欄 多核心時代的處理器、CPU的含義
提高多處理器系統(tǒng)的性能——問題和解決方案
共享內(nèi)存系統(tǒng)和分布式內(nèi)存系統(tǒng)
5.3 小結(jié)
第6章 處理器周邊技術(shù)
6.1 內(nèi)存技術(shù)
內(nèi)存歷史概覽
DRAM內(nèi)存的工作原理——利用電荷存儲信息
DRAM芯片和內(nèi)存DIMM
DRAM芯片的內(nèi)部結(jié)構(gòu)——內(nèi)存單元陣列、行/列解碼器、
檢測放大器、Bank
處理器和DIMM的連接
內(nèi)存系統(tǒng)的錯誤處理
6.2 輸入/輸出設(shè)備的連接
處理器的I/O連接
PCI總線
專欄 通向PCI總線之路
Intel Core i系列處理器的I/O結(jié)構(gòu)
Intel PCH的I/O控制結(jié)構(gòu)
6.3 小結(jié)
專欄 DRAM的刷新
第7章 GPGPU和超并行處理
7.1 GPGPU的原理
3D圖形和GPU——需要大量計(jì)算
GPU系統(tǒng)
從GPU到GPGPU
作為“超并行SIMD處理器”的GPGPU
作為“超多線程處理器”的GPGPU
專欄 Warp!
GPGPU的內(nèi)存層次結(jié)構(gòu)
GPGPU中的多線程需要分割使用通用寄存器
CPU和GPGPU的巨大區(qū)別
7.2 GPGPU編程
現(xiàn)代GPGPU編程
CUDA的運(yùn)行模型——線程塊、網(wǎng)格
CUDA中的函數(shù)聲明和變量聲明
OpenCL編程
如何發(fā)揮GPGPU的性能
7.3 小結(jié)
專欄 Top500和GPU計(jì)算
第8章 處理器的發(fā)展趨勢
8.1 耗電量是決定因素
為何處理器要消耗電力
節(jié)能技術(shù)的發(fā)展
8.2 更高、更快、更強(qiáng)
半導(dǎo)體細(xì)微化技術(shù)
如何有效利用增加的晶體管
利用部分晶體管降低生產(chǎn)成本
有效利用部分塊不合格的芯片
8.3 更可靠、更安全的處理器設(shè)計(jì)
為何處理器會有錯誤行為——故障、噪聲
防止錯誤行為,確保安全運(yùn)轉(zhuǎn)
8.4 未來處理器的發(fā)展方向
無處不在的處理器
家電用處理器
汽車用處理器
個人計(jì)算機(jī)用處理器
智能手機(jī)用處理器
服務(wù)器用處理器
8.5 小結(jié)
索引
章節(jié)摘錄
版權(quán)頁: 插圖: 流水線處理——通過流水線寄存器有效利用硬件 第1章說過,處理器以流水作業(yè)的方式處理指令。 但是,第1代處理器元件很少,無法實(shí)現(xiàn)流水作業(yè),只能順序完成指令讀取到寫回結(jié)果這一連串操作,然后再開始讀取下個指令。負(fù)責(zé)指令讀取、指令解釋、操作數(shù)(指令運(yùn)算對象)讀取、運(yùn)算、寫回結(jié)果的硬件各自獨(dú)立,執(zhí)行一個操作時,負(fù)責(zé)其他功能的單元處于無事可做的狀態(tài)。 這很浪費(fèi),于是人們涉及了流水線處理方式,將各個功能單元的處理結(jié)果保存在寄存器中,下個時鐘周期開始處理下一條指令。這樣,每個時鐘周期都可以開始處理新指令,與順序執(zhí)行相比,性能得到了大幅度提升。 流水線處理方式就是流水作業(yè),就像原油的管道(pipeline)一樣,可以把一連串的功能單元看成管道,而指令就相當(dāng)于原油在這些管道中流動,流水線處理也因此而得名。 流水線處理的實(shí)現(xiàn)難點(diǎn)——隨著元件數(shù)目增加,流水線處理得到普及 流水線處理能大幅度提升性能,但實(shí)現(xiàn)起來也有難點(diǎn)。 例如,如果下一條指令要使用上一條指令的計(jì)算結(jié)果,那么前一條指令寫回結(jié)果之前,下一條指令就無法開始;遇到分支指令,下一條指令就會發(fā)生跳轉(zhuǎn),從而必須讀取跳轉(zhuǎn)目的地的指令。這些情況都無法進(jìn)行流水線處理,需要檢測這些情況并暫時中斷流水作業(yè)。 因此,要實(shí)現(xiàn)流水線處理,就要在功能單元之間增加流水線寄存器,還要添加上述控制電路,整體來看需要的元件數(shù)會大幅度增加。由于這些原因,直到1961年IBM開發(fā)的Stretch(IBM7030)超大型計(jì)算機(jī)才第一次采用了流水線處理。不過,隨著可用元件數(shù)的增加,小型處理器也開始廣泛應(yīng)用流水線處理。 運(yùn)算器的高速化——整數(shù)運(yùn)算器、浮點(diǎn)數(shù)運(yùn)算器 處理器的運(yùn)算對象大致可分為整數(shù)和浮點(diǎn)數(shù)。整數(shù)有時表示數(shù)字,有時只是當(dāng)做比特序列使用。另一方面,如第1章所述,浮點(diǎn)數(shù)包含尾數(shù)部分和指數(shù)部分,能夠表示非常大和非常小的數(shù)。 整數(shù)運(yùn)算包括加減乘除運(yùn)算,以及把整數(shù)當(dāng)做比特序列的AND、OR、NOT等邏輯運(yùn)算,左右移位處理等運(yùn)算。加減法、邏輯運(yùn)算一般由一個運(yùn)算器執(zhí)行,這個運(yùn)算器稱為ALU(Arithmetic Logic Unit,算術(shù)邏輯運(yùn)算單元)。乘除法與加減法差別很大,因此分別采用獨(dú)立的運(yùn)算器。此外,有的處理器把移位運(yùn)算器作為ALU的一部分,不過最近也有移位運(yùn)算器獨(dú)立于ALU的情況。
編輯推薦
《支撐處理器的技術(shù):永無止境地追求速度的世界》對于普通讀者來說,是本學(xué)習(xí)知識的科普讀物;對于程序員來說,是一把打開現(xiàn)代處理器寶庫的鑰匙。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載