內容簡介
處理器是IT、通信、電子產業的基石,沒有處理器,信息產業大廈就如同建立
在沙灘之上。《大話處理器:處理器基礎知識讀本》是一本圖文並茂、生動幽默的處理器科普讀本,全書行文風趣幽默,用類比來解釋晦澀的技術,用圖畫來代替枯燥的文字。本著科技以人為本的理念,《大話處理器:處理器基礎知識讀本》除了技術外,還介紹了大量人物和公司的故事,供大家閒讀。《大話處理器:處理器基礎知識讀本》的主要讀者是IT、通信、電子、半導體行業的從業人員以及學生。喜歡技術的看技術,不喜歡技術的看故事。
編輯推薦
《大話處理器:處理器基礎知識讀本》特色:國內首本圖文並茂、生動幽默的處理器科普讀本;全面揭秘處理器核心技術;恰當、幽默的類比讓人嘆為觀止;豐富的人物、公司介紹,帶您遨遊計算機、半導體世界。
《大話處理器:處理器基礎知識讀本》部分章節曾在中國第一通信社區——通信人家園論壇上連載,得到了網友的廣泛好評,帖子迅速被置頂、加精、進入論壇首頁,也在公司內部被大量傳播。
媒體推薦
樓主很強很油菜!
——robotbob
頂起,很直觀,很具體,樓主快點。
——gdxky
LZ這樣的高人應該推薦到高校做教授,那將是民族之幸喔。寫的理論透徹、根本,文字通俗簡練,語言風趣形象,好!
——shore70
希望中國多點像樓主那樣的人才!
——davidchan110
樓主真強悍,講解通俗易懂,頂一下!
——漢江之畔
真的講的好,讓我這個處理器的門外漢也產生了興趣!
——tian_mengguang
要是做總的軟體架構工作,你一定能成為大師級的。
——我愛生活
樓主,我雖然不是學數位訊號處理出身,但是你的講解太偉大了。我真的手不釋卷啊!快點刷新吧。
——中飛人1234
越牛的人講的東西越通俗易懂。
——時光機器007
寫得真好!通俗易懂,比較形象化。
——ksyjk
屬於深入學習的人才能寫出這種文字,現在太需要這樣的人才了,更希望看到的朋友也別顧著只叫好,大家以大俠為榜樣,在各自的領域中都能做到深入淺出,與己與人都是一筆財富!
——yucheng_xiao
呵呵,佩服樓主的專業知識是如此的給力啊!
——xiao麥子
寫的不錯,通俗易懂,樓主威武啊!
——caodianxin2011
樓主太有創意了,這樣的帖子太強了!
——lsmx01
作者簡介
萬木楊,網名木兮清揚,華為公司服務近6年,曾任軟體工程師、算法工程師、系統工程師,擅長多媒體算法設計和編寫高效代碼。
作者自2004年起開始研究多媒體算法,從語音識別,到人臉動畫,再到視頻編解碼,足跡遍布語音、圖像、視頻、3D。自2006年在DSP上編寫程式,從此開始深入研究處理器內部結構,後來接觸過大量的半導體公司和處理器晶片,對處理器技術和產品有著深刻的理解。
閒暇之餘,作者喜愛讀書,多年來保持平均兩周一本的速度。
目錄
第1章 漫遊計算機世界 1
1.1 計算機的前世、今生、來世 3
1.1.1 計算機的誕生 3
1.1.2 從軍用到民用——飛入尋常百姓家 12
1.1.3 個人計算機時代——英雄輩出的時代 15
1.1.4 手機——裝在口袋的計算機 25
1.1.5 無處不在的計算機 31
1.1.6 計算機的來世 31
1.2 計算機分門別類 33
1.3 PC機結構探秘 34
1.3.1 處理器——一顆奔騰的心 34
1.3.2 存儲器——大肚能容,容天下難容之事 36
1.3.3 主機板與晶片組——架起溝通的橋樑 38
1.3.4 輸入設備——五覺 39
1.3.5 顯示設備——臉面 42
1.3.6 顯示卡——我貴,因為我專業 47
1.3.7 通信接口——關節 47
1.3.8 軟體——計算機的靈魂 49
1.3.9 計算機產業發展態勢 50
第2章 初識處理器——掀起你的蓋頭來 53
2.1 處理器是怎樣工作的——處理器的硬體模型 55
2.1.1 硬連線電路——一定終身 55
2.1.2 通用計算機模型——硬體搭台,軟體唱戲 56
2.2 怎樣來使用處理器——處理器的編程模型 57
2.2.1 軟硬不分 57
2.2.2 ISA橫插一刀 57
2.3 處理器的分層模型 58
2.4 選什麼樣的處理器——適合的才是最好的 59
2.4.1 硬體指標——硬實力的競爭 59
2.4.2 軟體指標——軟實力的競爭 62
2.4.3 商業指標——在商言商 63
第3章 指令集體系結構——處理器的外表 65
3.1 指令集是什麼 67
3.1.1 從處理器編程模型談起——一切從模型開始 67
3.1.2 計算機語言——人與計算機溝通的橋樑 68
3.2 指令集發展的來龍去脈 69
3.2.1 CISC時代——粗放式擴張 69
3.2.2 RISC時代——最佳化配置資源,合理提升效率 70
3.2.3 後RISC時代——不管黑貓白貓,抓到老鼠就是好貓 71
3.3 指令集的五朵金花 73
3.3.1 x86——碩大的大象 73
3.3.2 ARM——穩紮穩打的蟻群 74
3.3.3 MIPS——優雅的孔雀 75
3.3.4 Power——昔日的貴族 76
3.3.5 C6000——偏安一隅的獨立王國 77
3.3.6 至今仍在服役的元老們 78
3.4 地盤之爭 78
3.4.1 地盤劃分 79
3.4.2 x86、ARM之戰 80
3.4.3 ARM、MIPS之戰 80
3.5 彙編語言格式——沒有規矩不成方圓 81
3.5.1 機器字長 81
3.5.2 運算元個數 82
3.5.3 運算元順序 83
3.5.4 大小端——小問題,大折騰 83
3.5.5 指令類型——我們需要哪些指令 83
3.5.6 定址方式——千萬里,我追尋著你 84
3.5.7 總結 85
第4章 微架構——處理器的內心世界 87
4.1 跟著順溜學流水線 89
4.1.1 順溜的2級流水線 89
4.1.2 順溜流水線的深入分析 90
4.2 從子彈射擊到指令執行 93
4.2.1 最簡單的3級流水線 93
4.2.2 史上最經典的5級流水線 95
4.2.3 DSP更深的流水線 97
4.2.4 流水線上的冒險——免不了磕磕絆絆 98
4.2.5 分支預測——以古為鏡,可以知興替 103
4.3 從順序執行到亂序執行——因時制宜 107
4.3.1 亂序的概念 107
4.3.2 指令的相關 108
4.3.3 去除指令的相關性 110
4.3.4 處理器的亂序執行 113
4.4 處理器並行設計——並行,提高性能的不二法門 117
4.5 指令並行(Instruction Level Parallelism) 118
4.5.1 指令並行的“綠營”和“藍營” 118
4.5.2 Superscalar處理器實例——Intel P4 CPU 119
4.5.3 VLIW處理器實例——TI C6000 DSP 125
4.5.4 Superscalar和VLIW總結 130
4.6 數據並行(Data Level Parallelism) 130
4.6.1 何為SIMD、MMX、SSE 130
4.6.2 幾種不同形式的SSE指令 132
4.7 執行緒並行(Thread Level Parallelism) 133
4.7.1 多執行緒——時分復用 133
4.7.2 硬體多執行緒——讓我來幫你一把 135
4.7.3 多核——從“芯”到“蕊”的跳變 136
4.7.4 各種硬體多執行緒對比 138
4.8 並行總結 139
4.9 微架構總結 142
4.9.1 處理器性能公式 142
4.9.2 通過微架構的改進提高程式執行效率 142
4.9.3 商用處理器微架構的選擇 143
第5章 Cache——處理器的“肚量” 145
5.1 什麼是Cache——探索既熟悉又陌生的領域 147
5.1.1 隨處可見的Cache——技術來源於生活 147
5.12 處理器的Cache——一切都是收益和成本的權衡 147
5.2 處理器的Cache結構——探索那些鮮為人知的秘密 150
5.2.1 Cache的層次——層次化管理 150
5.2.2 Cache的工作方式——丘比特之劍,命中與未命中 151
5.2.3 Cache的映射方式——多對一的策略 152
5.2.4 Cache的寫方式——你不需要知道真相 156
5.3 Cache一致性 158
5.3.1 一致性問題的產生——信息不對稱導致的問題 158
5.3.2 Cache一致性的底層操作 159
5.3.3 Cache一致性協定 160
5.4 片內可定址存儲器——軟體管理的Cache 163
第6章 編寫高效代碼——時間就是生命 167
6.1 軟體效率——21世紀什麼最重要?效率! 169
6.1.1 高效代碼的意義——時間就是生命,時間就是金錢 169
6.1.2 代碼剖析——沒有調查,就沒有發言權 169
6.2 減少指令數——勤儉持家 171
6.2.1 使用更快的算法——算法,程式設計的靈魂 171
6.2.2 選用合適的指令——合適的人做合適的事 172
6.2.3 降低數據精度——比特也要省著用 173
6.2.4 減少函式調用——不要老打斷我 173
6.2.5 空間換時間——我們總是在走,卻忘了停留 174
6.2.6 減少過保護——打不破的部門牆 176
6.3 減少處理器不擅長的操作——不要逼我做我不喜歡的事情 176
6.3.1 少用乘法 177
6.3.2 少用除法、求余 177
6.3.3 在精度允許的條件下,將浮點數定點化 177
6.3.4 儘量減少分支 178
6.3.5 將最可能進入的分支放在 if中,而不是else中 179
6.4 最佳化記憶體訪問——別讓包袱拖垮了你 180
6.4.1 少使用數組,少使用指針 181
6.4.2 少用全局變數 181
6.4.3 一次多訪問一些數據 182
6.4.4 數據對齊訪問 182
6.4.5 大數據結構時的Cache line對齊 183
6.4.6 程式、數據訪問符合Cache的時間、空間局部性 183
6.4.7 多執行緒編程時,避免false sharing 185
6.4.8 自己管理記憶體動態分配 185
6.4.9 隱藏數據搬移時間 186
6.5 充分利用編譯器進行最佳化——編譯器:我才是最佳化第一高手 187
6.5.1 編譯器的結構——知己知彼,百戰不殆 187
6.5.2 編譯器提供了幾級最佳化選項——分級管理 188
6.5.3 編譯器會計算常量 188
6.5.4 簡單的表達式化簡 188
6.5.5 提取公共語句 189
6.5.6 循環展開、軟體流水 190
6.5.7 自動向量化 190
6.5.8 高效的數據組織 191
6.5.9 指令並行化 191
6.5.10 編譯器更懂處理器——百度更懂中文 192
6.6 利用多核來加速程式——人多力量大 193
6.6.1 並行計算 193
6.6.2 openmp 197
第7章 SOC——吸星大法 199
7.1 SOC大一統時代 201
7.1.1 SOC和IP 201
7.1.2 SOC市場驅動力 202
7.2 IP核 202
7.2.1 CPU IP 204
7.2.2 GPU IP 205
7.2.3 DSP IP 205
7.2.4 Video Engine IP 208
7.2.5 其他IP core 209
7.2.6 總結 210
第8章 “芯”路歷程——明明白白我的“芯” 211
8.1 邏輯電路基礎——計算機的基本構成 213
8.1.1 模擬、數字、邏輯的關係——細微之處探真知 213
8.1.2 組合邏輯電路——萬丈高樓平地起 216
8.1.3 時序邏輯電路——你在我心中留下了記憶 219
8.1.4 微電子技術——微乎微乎,至於無形 221
8.2 晶片設計——芯者,國之大事,不可不察也 224
8.2.1 人類是怎么管理複雜事物的 224
8.2.2 晶片設計流程 227
8.2.3 硬體描述語言——軟硬不分 227
8.2.4 邏輯綜合 229
8.2.5 硬體描述語言與軟體描述語言的差別 230
8.2.6 物理設計 231
8.3 晶片製造——點沙成金 233
8.3.1 探索微觀世界 233
8.3.2 晶片製造流程 234