發表於2024-12-26
Raspberry Pi的誕生,深受20世紀80年代價格相對低廉的高度可編程計算機(以及它們對英國高新技術産生的影響)的啓發,它激勵新一代程序設計師並為他們提供準入平颱。經濟成本和技術門檻的可接受性,使得Raspberry Pi成為學習計算機工作原理的理想工具。《使用Raspberry Pi學習計算機體係結構》將會是你整個Raspberry Pi內幕發現之旅的私人指南,也將成為你學習由Raspberry Pi完美詮釋的知識庫的專業級教練。作者Eben Upton和Jeff Duntemann是理想的導師:作為Raspberry Pi的共同創始人,Upton展現齣他的深刻洞察力;Dunteman則將復雜的技術知識凝練為易於理解的解釋。以Raspberry Pi這塊信用卡般大小的計算機(正在革新編程世界)的體係結構為基礎,Upton和Duntemann共同提供瞭隱藏在所有計算機背後的技術的專業級指導。
《使用Raspberry Pi學習計算機體係結構》按部就班地講解每個組件,包括組件能做什麼、為何需要它、該組件與其他組件的關係,以及組件創建過程中設計者麵臨的選擇等。從內存、存儲器和處理器,到以太網、相機和音頻。Upton和Duntemann相互閤作,確保讀者紮實理解Raspberry Pi的內部結構及其整體上與計算背後的技術之間的關係。
《使用Raspberry Pi學習計算機體係結構》能幫助讀者
■ 瞭解Raspberry Pi每個部分的設計目的
■ 理解不同組件之間的交互方式
■ 深入瞭解係統設計的完整過程
■ 學習程序設計原理
■ 觀察硬件和操作係統之間的相互作用
■ 深入研究ARM芯片背後的機製
■ 比較和對照不同的芯片,從ARM到Intel
Eben Upton是Raspberry Pi基金會的創始人,也是該基金會旗下的貿易部門RaspberryPi(貿易)有限公司的CEO,他與Gareth Halfacree閤著瞭Raspberry Pi User Guide一書。Eben早年創辦瞭兩傢成功的移動遊戲和中間件公司(Ideaworks 3d 和Podfun),還曾擔任劍橋大學聖約翰學院計算機科學的教學主管,並和他的父親Clive Upton教授一起編寫瞭牛津詩韻詞典(Oxford Rhyming Dictionary)。Eben在劍橋大學獲得瞭物理學和工程學學士學位以及計算機科學博士學位,還獲得瞭工商管理碩士學位。
Jeff Duntemann從1974年就開始齣版各種技術類和科幻類齣版物。它是Xerox公司的程序師,同時還擔任Ziff-Davis齣版社和Borland國際軟件公司的技術編輯。他編輯發行瞭兩份程序師雜誌,在其名下有20本技術性書籍,包括*暢銷的Assembly Language Step ByStep一書。在Dr. Dobb’s Journal雜誌上,Jeff連續四年撰寫“Structured Programming”專欄,並在很多雜誌上發錶瞭大量技術性文章。1989年,Jeff和他的作傢夥伴Keith Weiskamp發起成立瞭Coriolis Group,到1998年Coriolis Group已經成為美國亞利桑那州*大的圖書齣版商。Jeff對“強”人工智能錶現齣持久的興趣,他的絕大部分科幻著作(包括The CunningBlood和Ten Gentle Opportunities兩本小說)都在探尋強人工智能的因果邏輯。Jeff的其他興趣包括望遠鏡和風箏,他還是一位電子學和無綫電業餘愛好者(呼號K7JPD)。在過去的40年裏,Jeff一直和妻子Carol居住在美國亞利桑那州的菲尼剋斯市,陪伴他們的還有四條捲毛比雄犬。
Ralph Roberts是一名受過嘉奬的越戰老兵,在阿波羅登月工程期間供職於NASA。自從1979年在Creative Computing雜誌上發錶第一篇文章開始,Roberts就一直從事計算機和軟件方麵的寫作。Roberts為國傢齣版商撰寫瞭超過100本書籍,以及上韆篇文章和短篇小說。總而言之,他已經發售瞭超過2000萬字的專業內容。Roberts的*佳暢銷書包括美國*一本關於計算機病毒(美國國傢電颱由此誕生瞭多部相關電影)的書籍,還有過去21年裏反復印刷的一本烹飪食譜—— Classic Cooking with Coca-Cola,目前已經售齣瞭50萬本。
Tim Mamtora是博通有限公司IC設計部門的總工程師,目前是美國GPU硬件團隊的技術帶頭人。他在移動計算機圖形學方麵從事瞭近七年的工作,此前為模擬電視和傳統DSP硬件開發內部IP。Tim 擁有劍橋大學工程學碩士學位,其中第三年在馬薩諸塞州技術學院度過,在那裏激發瞭Tim 對數字硬件設計的興趣。他對推進工程充滿激情,並專門花費時間在劍橋大學指導學生,他還在母校發錶工程學機遇方麵的演講。工作之餘,Tim 喜歡各類體育運動、攝影以及遊覽世界。
Ben Everard 是一位作傢,也是一位播客。平時為Linux 編寫修補代碼,還喜歡擺弄機器人。本書是Everard的第二部著作,他還撰寫瞭Learning Python with Raspberry Pi一書(Wiley 齣版社,2014)。可以在推特@ben_everard上找到他。
第1章 計算機漫談 1
1.1 日益繽彩紛呈的Raspberry 1
1.2 片上係統 4
1.3 一颱令人激動的信用卡般大小的計算機 5
1.4 Raspberry Pi的功能 6
1.5 Raspberry Pi闆 7
1.5.1 GPIO引腳 7
1.5.2 狀態LED 9
1.5.3 USB插口 10
1.5.4 以太網連接 10
1.5.5 音頻輸齣 11
1.5.6 復閤視頻 12
1.5.7 CSI攝像頭模塊連接器 13
1.5.8 HDMI 13
1.5.9 micro USB電源 14
1.5.10 存儲卡 14
1.5.11 DSI顯示連接 15
1.5.12 裝配孔 15
1.5.13 芯片 16
1.6 未來 16
第2章計算概述 19
2.1 計算機與烹飪 20
2.1.1 佐料與數據 20
2.1.2 基本操作 21
2.2 按計劃執行的盒子 22
2.2.1 執行和知曉 22
2.2.2 程序就是數據 23
2.2.3 存儲器 24
2.2.4 寄存器 25
2.2.5 係統總綫 26
2.2.6 指令集 26
2.3 電平、數字及其錶示 27
2.3.1 二進製:以1和0錶示 27
2.3.2 手指的局限性 29
2.3.3 數量、編號和0 29
2.3.4 用於二進製速記的十六進製 30
2.3.5 執行二進製和十六進製運算 31
2.4 操作係統:幕後老闆 33
2.4.1 操作係統的功能 33
2.4.2 嚮內核緻敬 34
2.4.3 多核 34
第3章電子存儲器35
3.1 存儲器先於計算機而存在 35
3.2 鏇轉磁存儲器(Rotating Magnetic Memory) 36
3.3 磁芯存儲器 37
3.3.1 磁芯存儲器的工作過程38
3.3.2 存儲器訪問時間39
3.4 靜態隨機訪問存儲器(SRAM) 40
3.5 地址綫和數據綫 41
3.6 由存儲器芯片構建存儲器係統42
3.7 動態隨機訪問存儲器(DRAM) 45
3.7.1 DRAM的工作原理 45
3.7.2 同步DRAM和異步DRAM47
3.7.3 SDRAM列、行、Bank、Rank和DIMM 49
3.7.4 DDR、DDR2、DDR3和DDR4 SDRAM50
3.7.5 糾錯碼存儲器53
3.8 Raspberry Pi的存儲器係統54
3.8.1節能性54
3.8.2球柵陣列封裝55
3.9 緩存 55
3.9.1訪問的局部性56
3.9.2緩存層級56
3.9.3緩存行和緩存映射57
3.9.4直接映射59
3.9.5相聯映射61
3.9.6組相聯高速緩存62
3.9.7迴寫緩存到存儲器63
3.10 虛擬存儲器 64
3.10.1虛擬存儲器概覽64
3.10.2虛擬存儲器到物理存儲器的映射65
3.10.3 深入瞭解存儲器管理單元66
3.10.4 多級頁錶和TLB69
3.10.5 Raspberry Pi的交換問題70
3.10.6 Raspberry Pi虛擬存儲器70
第4章ARM處理器與片上係統73
4.1 急速縮小的CPU 73
4.1.1微處理器74
4.1.2晶體管預算75
4.2 數字邏輯基礎 75
4.2.1邏輯門75
4.2.2觸發器和時序邏輯76
4.3 CPU內部78
4.3.1分支與標誌79
4.3.2係統棧80
4.3.3係統時鍾和執行時間82
4.3.4流水綫技術83
4.3.5流水綫技術詳解84
4.3.6深入流水綫以及流水綫阻塞86
4.3.7 ARM11 中的流水綫88
4.3.8 超標量執行89
4.3.9 基於SIMD的更多並行機製90
4.3.10 字節序92
4.4 CPU再認識:CISC與RISC 93
4.4.1 RISC的曆史95
4.4.2 擴展的寄存器文件95
4.4.3 加載/存儲架構 96
4.4.4 正交的機器指令96
4.4.5 獨立的指令和數據高速緩存97
4.5 源於艾康的ARM 97
4.5.1微架構、內核及傢族98
4.5.2 齣售設計許可而非成品芯片98
4.6 ARM11 99
4.6.1 ARM指令集99
4.6.2 處理器模式102
4.6.3 模式和寄存器103
4.6.4 快速中斷107
4.6.5 軟件中斷108
4.6.6 中斷優先級108
4.6.7 條件指令執行109
4.7 協處理器 111
4.7.1 ARM協處理器接口112
4.7.2 係統控製協處理器113
4.7.3 嚮量浮點協處理器113
4.7.4 仿真協處理器114
4.8 ARM Cortex 114
4.8.1 多發和亂序執行115
4.8.2 Thumb 2 115
4.8.3 Thumb EE 115
4.8.4 big.LITTLE 116
4.8.5 NEON SIMD協處理器 116
4.8.6 ARMv8和64位計算117
4.9 片上係統 118
4.9.1 博通BCM2835 SoC 118
4.9.2 第二代和第三代博通SoC 設備119
4.9.3 VLSI芯片原理119
4.9.4 流程、製程工藝和掩膜120
4.9.5 IP:單元、宏單元、內核120
4.9.6 硬IP和軟IP121
4.9.7 平麵規劃、布局和布綫121
4.9.8 片上通信的標準:AMBA 122
第5章程序設計 125
5.1 程序設計概述 125
5.1.1 軟件開發過程126
5.1.2 瀑布、螺鏇與敏捷128
5.1.3 二進製程序設計130
5.1.4 匯編語言和助記符131
5.1.5 高級語言132
5.1.6 花樣泛濫的後BASIC 時代134
5.1.7 程序設計術語135
5.2 本地代碼編譯器的工作原理 137
5.2.1 預處理138
5.2.2 詞法分析138
5.2.3 語義分析139
5.2.4 生成中間代碼139
5.2.5 優化139
5.2.6 生成目標代碼139
5.2.7 C編譯:一個具體示例140
5.2.8 鏈接目標代碼文件到可執行文件145
5.3 純文本解釋程序 146
5.4 字節碼解釋語言 148
5.4.1 p-code 148
5.4.2 Java 149
5.4.3 即時編譯(JIT) 150
5.4.4 Java之外的字節碼和JIT 編譯152
5.4.5 Android 、Java和Dalvik 152
5.5 數據構建塊 152
5.5.1 標識符、關鍵字、符號和操作符153
5.5.2 數值、文本和命名常量153
5.5.3 變量、錶達式和賦值154
5.5.4 類型和類型定義154
5.5.5 靜態和動態類型156
5.5.6 補碼和IEEE 754 157
5.6 代碼構建塊 159
5.6.1 控製語句和復閤語句159
5.6.2 if/then/else 159
5.6.3 switch和case 161
5.6.4 repeat循環162
5.6.5 while循環163
5.6.6 for循環164
5.6.7 break和continue語句166
5.6.8 函數166
5.6.9 局部性和作用域168
5.7 麵嚮對象程序設計 170
5.7.1 封裝172
5.7.2 繼承174
5.7.3 多態176
5.7.4 OOP小結 178
5.8 GNU編譯器工具集概覽178
5.8.1 作為編譯器和生成工具的gcc179
5.8.2 使用Linux make 181
第6章非易失性存儲器185
6.1 打孔卡和磁帶 186
6.1.1 打孔卡186
6.1.2 磁帶數據存儲器186
6.1.3 磁存儲器的黎明188
6.2 磁記錄和編碼方案 189
6.2.1 磁通躍遷190
6.2.2 垂直記錄191
6.3 磁盤存儲器 192
6.3.1 柱麵、磁軌和扇區193
6.3.2 低級格式化194
6.3.3 接口和控製器195
6.3.4 軟盤驅動器197
6.4 分區和文件係統 198
6.4.1 主分區和擴展分區198
6.4.2 文件係統和高級格式化199
6.4.3 未來:GUID分區錶 (GPT) 200
6.4.4 Raspberry Pi SD卡的分區201
6.5 光盤 202
6.5.1 源自CD的格式203
6.5.2 源自DVD的格式204
6.6 虛擬硬盤 205
6.7 Flash存儲器206
6.7.1 ROM、PROM和 EPROM 206
6.7.2 Flash與EEPROM 207
6.7.3 單級與多級存儲209
6.7.4 NOR Flash與NAND Flash 210
6.7.5 損耗平衡及Flash轉換層213
6.7.6 碎片迴收和TRIM 214
6.7.7 SD卡 215
6.7.8 eMMC216
6.7.9 非易失性存儲器的未來217
第7章有綫和無綫以太網219
7.1 網絡互連OSI參考模型220
7.1.1 應用層222
7.1.2 錶示層222
7.1.3 會話層223
7.1.4 傳輸層223
7.1.5 網絡層224
7.1.6 數據鏈路層226
7.1.7 物理層226
7.2 以太網 227
7.2.1 粗纜以太網和細纜以太網227
7.2.2 以太網的基本構想227
7.2.3 衝突檢測和規避228
7.2.4 以太網編碼係統229
7.2.5 PAM-5 編碼232
7.2.6 10BASE-T和雙絞綫233
7.2.7 從總綫拓撲結構到星型拓撲結構234
7.2.8 交換以太網235
7.3 路由器和互聯網 237
7.3.1 名稱與地址237
7.3.2 IP地址和TCP端口238
7.3.3 本地IP地址和DHCP 240
7.3.4 網絡地址轉換242
7.4 Wi-Fi 243
7.4.1 標準中的標準244
7.4.2 麵對現實世界245
7.4.3 正在使用的Wi-Fi 設備 248
7.4.4 基礎設施網絡與Ad Hoc 網絡249
7.4.5 Wi-Fi 分布式介質訪問 250
7.4.6 載波監聽和隱藏結點問題251
7.4.7 分片253
7.4.8 調幅、調相和QAM 253
7.4.9 擴頻技術256
7.4.10 Wi-Fi 調製和編碼細節256
7.4.11 Wi-Fi 連接的實現原理259
7.4.12 Wi-Fi 安全性 260
7.4.13 Raspberry Pi上的Wi-Fi 261
7.4.14 更多的網絡263
第8章
操作係統 265
8.1 操作係統簡介 266
8.1.1 操作係統的曆史 267
8.1.2 操作係統基礎 270
8.2 內核:操作係統的核心主導者 274
8.2.1 操作係統控製 276
8.2.2 模式 276
8.2.3 存儲器管理 277
8.2.4 虛擬存儲器 278
8.2.5 多任務處理 278
8.2.6 磁盤訪問和文件係統 279
8.2.7 設備驅動程序 279
8.3 操作係統的使能器和助手 279
8.3.1 喚醒操作係統 280
8.3.2 固件 283
8.4 Raspberry Pi上的操作係統 283
8.4.1 NOOBS 284
8.4.2 第三方操作係統 285
8.4.3 其他可用的操作係統 285
第9章 視頻編解碼器和視頻壓縮 287
9.1 第一個視頻編解碼器 288
9.1.1 利用眼睛 288
9.1.2 利用數據 290
9.1.3 理解頻率變換 293
9.1.4 使用無損編碼技術 297
9.2 時移世易 298
9.2.1 MPEG的最新標準 299
9.2.2 H.265 302
9.3 運動搜索 302
9.3.1 視頻質量 304
9.3.2 處理能力 305
第10章 3D圖形307
10.1 3D圖形簡史307
10.1.1 圖形用戶界麵(Graphical User Interface,GUI) 308
10.1.2 視頻遊戲中的3D圖形310
10.1.3 個人計算和顯卡311
10.1.4 兩個競爭標準312
10.2 OpenGL圖形管綫 314
10.2.1 幾何規範和屬性315
10.2.2 幾何變換317
10.2.3 光照和材質320
10.2.4 圖元組裝和光柵化322
10.2.5 像素處理(片段
使用Raspberry Pi學習計算機體係結構 下載 mobi epub pdf txt 電子書 格式
使用Raspberry Pi學習計算機體係結構 下載 mobi pdf epub txt 電子書 格式 2024
使用Raspberry Pi學習計算機體係結構 下載 mobi epub pdf 電子書使用Raspberry Pi學習計算機體係結構 mobi epub pdf txt 電子書 格式下載 2024