計算機係統:核心概念及軟硬件實現(原書第4版)

計算機係統:核心概念及軟硬件實現(原書第4版) pdf epub mobi txt 電子書 下載 2025

[美] J.斯坦利·沃特福德(J.Stanley Warfor) 著
圖書標籤:
  • 計算機係統
  • 計算機組成原理
  • 匯編語言
  • 底層原理
  • 軟硬件結閤
  • 操作係統
  • 計算機體係結構
  • 數字邏輯
  • 深入理解計算機
  • 經典教材
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111507833
版次:4
商品編碼:11736031
品牌:機工齣版
包裝:平裝
叢書名: 計算機科學叢書
開本:16開
齣版時間:2015-07-01
用紙:膠版紙
頁數:476

具體描述

編輯推薦

  《計算機係統:核心概念及軟硬件實現(原書第4版)》清晰、詳細、一步一步地介紹瞭計算機組成、匯編語言和計算機體係結構中的核心概念。它帶領學生用自上而下的方法探索計算機係統各個抽象層次的方方麵麵。通過說明不同的抽象層次和其他層次之間的關係,本書幫助學生將計算機係統及其組成部分看作一個統一的概念。

  《計算機係統:核心概念及軟硬件實現(原書第4版)》基於Pep/8匯編器和模擬器,用來講授經典馮·諾依曼機器的基本知識。Pep/8現在包括新的符號跟蹤特性,能夠在學生單步跟蹤程序時,實時顯示全局變量和運行時棧的情況。

  作者Warford教授從教30餘年,他貫穿全書強調瞭掌握基本計算機概念的重要性,是理解當前和未來技術的基礎,他還強調瞭解決問題能力的重要性。本書覆蓋瞭ACM-IEEE計算機科學課程體係指導意見中體係結構和組成原理中所有的核心概念。

內容簡介

  《計算機係統:核心概念及軟硬件實現(原書第4版)》基於虛構的計算機Pep/8,清晰、詳細、循序漸進地介紹瞭計算機組成、匯編語言和計算機體係結構中的核心思想,圍繞7個抽象層次組織內容,詳細介紹瞭計算機係統的應用層、高級語言層、匯編層、操作係統層、指令集架構層、微代碼層和邏輯門層。本書有完整的程序示例,理論和實踐相結閤,寬度和深度相結閤,提供瞭對普適的馮·諾依曼機器架構的深入理解。

  《計算機係統:核心概念及軟硬件實現(原書第4版)》可作為高等院校計算機科學專業本科生的教材,也可作為相關專業人員學習計算機基礎知識的參考書。

作者簡介

  J. 斯坦利·沃法德(J. Stanley Warford),現為美國佩珀代因大學(Pepperdine University)大學計算機科學係教授。Warford教授在進入學術界前是航空工程師,他任教30餘年,曾擔任佩珀代因大學計算機科學係主任。他從倫斯勒理工學院獲得碩士學位,從加州大學洛杉磯分校獲得博士學位。由於傑齣的教學成果,Warford教授獲得瞭Luckman奬。


  龔奕利,本科畢業於武漢大學,在中國科學院計算技術研究所獲得博士學位,曾在美國印第安納大學從事博士後工作和美國密歇根大學從事訪問學者工作,現為武漢大學計算機學院副教授。主要研究方嚮為高性能計算和分布式係統,包括雲計算和廣域文件係統。翻譯過《深入理解計算機係統》(第一、二版)等計算機專業書籍。

目錄

齣版者的話
中文版序
譯者序
前言
第一部分應用層(第7層)
第1章計算機係統2
1.1 抽象層次2
1.1.1 藝術中的抽象3
1.1.2 文檔中的抽象4
1.1.3組織中的抽象5
1.1.4機器中的抽象6
1.1.5計算機係統中的抽象6
1.2 硬件8
1.2.1輸入設備9
1.2.2輸齣設備11
1.2.3主存儲器12
1.2.4中央處理單元13
1.3軟件13
1.3.1操作係統14
1.3.2軟件分析和設計15
1.4數據庫係統16
1.4.1關係17
1.4.2查詢18
1.4.3語言結構19
總結20
練習21
第二部分高級語言層(第6層)
第2章C++24
2.1 變量24
2.1.1C++編譯器24
2.1.2 機器無關性24
2.1.3C++的內存模型25
2.1.4全局變量和賦值語句26
2.1.5局部變量28
2.2控製流29
2.2.1if/else語句29
2.2.2switch語句30
2.2.3while循環30
2.2.4do循環31
2.2.5數組和for循環31
2.3函數32
2.3.1空函數和傳值調用的參數32
2.3.2函數的例子33
2.3.3傳引用調用的參數34
2.4遞歸36
2.4.1階乘函數37
2.4.2遞歸的思考方式39
2.4.3遞歸加法40
2.4.4二項式係數函數41
2.4.5逆轉數組元素順序45
2.4.6漢諾塔45
2.4.7 相互遞歸48
2.4.8遞歸的成本48
2.5動態內存分配49
2.5.1指針49
2.5.2結構50
2.5.3鏈式數據結構51
總結52
練習53
問題54
第三部分指令集架構層(第3層)
第3章信息的錶示58
3.1 無符號二進製錶示58
3.1.1二進製存儲器58
3.1.2整數59
3.1.3基本轉換60
3.1.4無符號整數的範圍61
3.1.5無符號加法62
3.1.6 進位位62
3.2補碼二進製錶示63
3.2.1補碼的錶數範圍65
3.2.2基數轉換66
3.2.3 數軸66
3.2.4溢齣位68
3.2.5負數和零位69
3.3 二進製運算69
3.3.1邏輯運算符69
3.3.2寄存器傳送語言70
3.3.3算術運算符70
3.3.4循環移位運算符72
3.4十六進製和符號錶示72
3.4.1十六進製72
3.4.2基數轉換73
3.4.3字符75
3.5浮點數錶示77
3.5.1二進製小數77
3.5.2餘碼錶示78
3.5.3隱藏位79
3.5.4特殊值80
3.5.5IEEE 754浮點數標準83
3.6跨層的錶示方法85
3.6.1另一種錶示87
3.6.2模型88
總結90
練習90
問題95
第4章計算機體係結構97
4.1硬件97
4.1.1中央處理單元98
4.1.2主存儲器98
4.1.3 輸入設備99
4.1.4 輸齣設備99
4.1.5 數據和控製100
4.1.6 指令格式100
4.2直接尋址102
4.2.1 停止指令102
4.2.2裝入指令103
4.2.3存儲指令103
4.2.4加法指令104
4.2.5減法指令105
4.2.6與和或指令105
4.2.7按位取反和取負指令106
4.2.8裝入字節和存儲字節指令107
4.2.9字符輸入和輸齣指令108
4.3馮·諾依曼機器109
4.3.1 馮·諾依曼執行周期109
4.3.2一個字符輸齣程序110
4.3.3馮·諾依曼漏洞113
4.3.4一個字符輸入程序113
4.3.5十進製轉換為ASCII113
4.3.6一個修改自身的程序114
4.4ISA3層編程115
4.4.1隻讀內存117
4.4.2Pep/8操作係統117
4.4.3使用Pep/8係統119
總結119
練習120
問題121
第四部分匯編層(第5層)
第5章匯編語言124
5.1匯編程序124
5.1.1指令助記符124
5.1.2僞操作126
5.1.3.ASCII和.END僞操作126
5.1.4匯編器127
5.1.5.BLOCK僞操作128
5.1.6.WORD和.BYTE僞操作129
5.1.7使用Pep/8匯編器129
5.1.8交叉匯編器130
5.2立即數尋址和陷阱指令131
5.2.1立即數尋址131
5.2.2DECI、DECO和BR指令131
5.2.3STRO指令133
5.2.4解釋位模式134
5.2.5反匯編器135
5.3符號137
5.3.1帶符號的程序137
5.3.2一個馮·諾依曼示例138
5.4從HOL6層翻譯139
5.4.1cout語句139
5.4.2變量和類型140
5.4.3全局變量和賦值語句141
5.4.4類型兼容143
5.4.5Pep/8符號跟蹤器144
5.4.6 算術移位和循環移位指令145
5.4.7常量和.EQUATE147
5.4.8指令和數據的放置149
總結149
練習150
問題152
第6章編譯到匯編層155
6.1 棧尋址和局部變量155
6.1.1棧相對尋址155
6.1.2訪問運行時棧156
6.1.3局部變量158
6.2轉移指令和控製流159
6.2.1 翻譯if語句160
6.2.2 優化編譯器161
6.2.3翻譯if/else語句162
6.2.4翻譯while循環163
6.2.5翻譯do循環164
6.2.6 翻譯for循環165
6.2.7 麵條代碼166
6.2.8早期語言中的控製流168
6.2.9結構化編程定律169
6.2.10goto爭論169
6.3 函數調用和參數171
6.3.1翻譯函數調用171
6.3.2用全局變量翻譯傳值調用參數173
6.3.3 用局部變量翻譯傳值調用參數176
6.3.4翻譯非空函數調用178
6.3.5 用全局變量翻譯傳引用調用參數180
6.3.6用局部變量翻譯傳引用調用參數183
6.3.7翻譯布爾類型186
6.4 變址尋址和數組188
6.4.1 翻譯全局數組189
6.4.2翻譯局部數組191
6.4.3翻譯作為參數傳遞的數組193
6.4.4翻譯switch語句198
6.5 動態內存分配200
6.5.1翻譯全局指針200
6.5.2翻譯局部指針204
6.5.3翻譯結構207
6.5.4翻譯鏈式數據結構210
總結214
練習214
問題215
第7章語言翻譯原理222
7.1語言、語法和語法分析222
7.1.1連接223
7.1.2 語言223
7.1.3 語法224
7.1.4 C++標識符的語法225
7.1.5有符號整數的語法226
7.1.6上下文相關的語法227
7.1.7語法分析問題227
7.1.8錶達式的語法228
7.1.9C++語法的一部分229
7.1.10 C++的上下文相關性232
7.2 有限狀態機233
7.2.1用FSM來分析標識符233
7.2.2 簡化的有限狀態機234
7.2.3非確定性有限狀態機234
7.2.4 具有空轉移的狀態機235
7.2.5語言符號識彆器237
7.3實現有限狀態機239
7.3.1查找錶分析器240
7.3.2直接編碼分析器241
7.3.3輸入緩衝區類244
7.3.4多token分析器244
7.4 代碼生成249
7.4.1語言翻譯器249
7.4.2 語法分析器特性259
總結260
練習260
問題262
第五部分 操作係統層(第4層)
第8章 進程管理266
8.1 裝載器266
8.1.1 Pep/8操作係統266
8.1.2 Pep/8裝載器267
8.1.3 程序的終止269
8.2 陷阱269
8.2.1 陷阱機製269
8.2.2 RETTR指令270
8.2.3 陷阱處理程序271
8.2.4 陷阱尋址方式斷言273
8.2.5 陷阱操作數地址計算274
8.2.6 空操作陷阱處理程序277
8.2.7 DECI陷阱處理程序277
8.2.8 DECO陷阱處理程序282
8.2.9 STRO陷阱處理程序和OS嚮量284
8.3 並發進程286
8.3.1 異步中斷286
8.3.2 操作係統中的進程287
8.3.3 多處理288
8.3.4 並發處理程序289
8.3.5 臨界區290
8.3.6 第一次嘗試實現互斥291
8.3.7 第二次嘗試實現互斥291
8.3.8 Peterson互斥算法292
8.3.9 信號量293
8.3.10 帶信號量的臨界區295
8.4 死鎖296
8.4.1 資源分配圖296
8.4.2 死鎖策略298
總結298
練習299
問題302
第9章 存儲管理305
9.1 內存分配305
9.1.1 單道程序設計305
9.1.2 固定分區多道程序設計306
9.1.3 邏輯地址306
9.1.4 可變分區多道程序設計308
9.1.5 分頁310
9.2 虛擬內存312
9.2.1 大程序的行為312
9.2.2 虛擬內存313
9.2.3 按需取頁315
9.2.4 替換頁315
9.2.5 頁替換算法316
9.3 文件管理318
9.3.1 磁盤驅動器318
9.3.2 文件抽象319
9.3.3 分配技術319
9.4 錯誤檢測和糾錯碼321
9.4.1 錯誤檢測碼321
9.4.2 編碼要求322
9.4.3 糾正一位錯編碼324
9.5 RAID存儲係統325
9.5.1 RAID 0級:非冗餘條帶化326
9.5.2 RAID 1級:鏡像326
9.5.3 RAID 01級和10級:條帶化和鏡像327
9.5.4 RAID 2級:內存風格的ECC328
9.5.5 RAID 3級:位交叉奇偶校驗329
9.5.6 RAID 4級:塊交叉奇偶校驗329
9.5.7 RAID 5級:塊交叉分布奇偶校驗330
總結331
練習331
第六部分 邏輯門層(第1層)
第10章 組閤電路334
10.1 布爾代數和邏輯門334
10.1.1 組閤電路335
10.1.2 真值錶335
10.1.3 布爾代數336
10.1.4 布爾代數定理337
10.1.5 互補證明338
10.1.6 邏輯圖339
10.1.7 其他錶達方式341
10.2 組閤分析341
10.2.1 布爾錶達式和邏輯圖342
10.2.2 真值錶和布爾錶達式343
10.2.3 兩級電路345
10.2.4 無所不在的NAND346
10.3 組閤設計347
10.3.1 範式348
10.3.2 三變量卡諾圖349
10.3.3 四變量卡諾圖353
10.3.4 對偶卡諾圖355
10.3.5 無關條件356
10.4 組閤設備356
10.4.1 視角356
10.4.2 復用器358
10.4.3 二進製譯碼器358
10.4.4 多路分配器359
10.4.5 加法器359
10.4.6 加法器/減法器361
10.4.7 算術邏輯單元362
10.4.8 LG1層的抽象367
總結368
練習368
第11章 時序電路374
11.1 鎖存器和時鍾觸發器374
11.1.1 SR鎖存器374
11.1.2 鍾控SR觸發器376
11.1.3 主-從SR觸發器377
11.1.4 基本觸發器380
11.1.5 JK觸發器381
11.1.6 D觸發器382
11.1.7 T觸發器383
11.1.8 激勵錶384
11.2 時序分析和設計384
11.2.1 時序分析問題385
11.2.2 預設置和清除387
11.2.3 時序設計387
11.2.4 一個時序設計問題388
11.3 計算機子係統390
11.3.1 寄存器390
11.3.2 總綫391
11.3.3 內存子係統392
11.3.4 地址譯碼396
11.3.5 雙端口寄存器體400
總結401
練習402
第七部分 微代碼層(第2層)
第12章 計算機組成406
12.1 構造ISA3層機器406
12.1.1 中央處理單元406
12.1.2 馮·諾依曼周期408
12.1.3 實現存儲字節指令412
12.1.4 實現加法指令412
12.1.5 實現裝入指令413
12.1.6 實現算術右移指令415
12.2 性能問題416
12.2.1 總綫寬度417
12.2.2 特殊的硬件單元419
12.2.3 3個優化領域421
12.2.4 微代碼423
12.3 MIPS機器425
12.3.1 裝入/存儲體係結構425
12.3.2 指令集427
12.3.3 高速緩存431
12.3.4 MIPS的計算機組成437
12.3.5 流水綫439
12.4 結論445
12.4.1 模型簡化446
12.4.2 更大的景象446
總結447
練習448
附錄Pep/8體係結構451
部分練習參考答案457
索引468

前言/序言

  本書清晰、詳細、循序漸進地展示瞭計算機組成、匯編語言和計算機體係結構中的核心思想。本書的很大一部分是建立在一個虛構的計算機Pep/8基礎上的,用它來講解經典的馮·諾依曼機器的基本概念。這種方法的好處是能夠講解計算機科學的核心概念,而又不必拘泥於此類課程中常見的許多不相關的細節。這種方法還能鼓勵學生思考計算機科學底層的原理。本書的範圍也比較廣泛,重點強調瞭與硬件及其相關軟件的處理有關而少有提及的計算機科學主題。

  內容摘要

  計算機運行在一些抽象層上,在高級抽象層上編程隻是一部分。基於圖1的層次結構,本書展示瞭計算機係統的一個統一的概念。

  對應於圖1的7層,本書也分為7個部分:

  App7層 應用層

  HOL6層 高級語言層

  ISA3層 指令集架構層

  Asmb5層 匯編層

  OS4層 操作係統層

  LG1層 邏輯門層

  Mc2層 微代碼層

  本書主要是按照從上到下、從最高層到最低層的順序來書寫。ISA3層在Asmb5層之前以及LG1層在Mc2層之前講解是齣於教學的目的。在這兩種情況下,暫時用相反的從下至上的方法來講解更自然,有瞭低層的構造模塊就很容易完成上層的構建。

  App7層 App7層是單獨一章,介紹瞭應用程序。本章展示瞭抽象層次的概念,建立本書剩下部分的框架。還介紹瞭一些關係數據庫的概念,作為典型計算機應用的例子。同時,還假設學生對文字編輯器或文字處理器有一定的經驗。

  HOL6層 HOL6層也是一章,復習瞭C++編程語言。本章假設學生具有某種命令語言的經驗,不一定是C++,可以是Java或C。書中避免瞭C++的高級特性,包括麵嚮對象的概念。如果有必要,教師可以把C++例子翻譯成其他HOL6層的語言。

  本章著重介紹瞭C++內存模型,包括全局變量和局部變量、函數參數以及動態分配的變量。也介紹瞭遞歸的問題,因為它依賴於運行時棧上的內存分配機製。還相當詳細地解釋瞭函數調用的內存分配過程,因為本書後麵還會在較低抽象層次上分析這個機製。

  ISA3層 ISA3層是指令集架構層,包括兩章,描述瞭一個用於說明計算機概念的虛構的Pep/8計算機。Pep/8是經典的馮·諾依曼機器。CPU包含一個纍加器、一個變址寄存器、一個程序計數器、一個棧指針和一個指令寄存器。有8種尋址方式:立即數、直接、間接、棧相對、棧相對間接、變址、棧變址和棧變址間接。在模擬的隻讀存儲器(ROM)中,Pep/8操作係統能從學生的文本文件中裝入和執行十六進製格式的程序。學生可以在Pep/8模擬器上運行小程序,學習不會改變內存值的ROM存儲指令。

  學生能學習到位層的信息錶示和計算機組成的知識。因為本書的中心主題是層次之間的關係,所以有關Pep/8的章節展示瞭ASCII錶示(ISA3層)和類型為char的C++變量(HOL6層)之間的關係。還展示瞭補碼錶示(ISA3層)和類型為int的C++變量(HOL6)之間的關係。

  Asmb5層 Asmb5層是匯編層,書中介紹瞭匯編器的概念(匯編器是匯編層和機器層之間的翻譯器),還介紹瞭Asmb5層的符號和符號錶。

  這裏是統一的方法派上用場的地方。第5章和第6章中的編譯器是高級語言到匯編語言的翻譯器。前麵,學生學習瞭一種具體的HOL6層語言C++和一種具體的馮·諾依曼機器Pep/8。接下來的章節將繼續介紹層次之間的關係,講述下麵這樣一些對應關係:(a)HOL6層的賦值語句和Asmb5層的裝入/存儲指令;(b)HOL6層的循環和if語句與Asmb5層的分支指令;(c)HOL6層的數組和Asmb5層的變址尋址;(d)HOL6層的過程調用和Asmb5層的運行時棧;(e)HOL6層的函數和過程參數與Asmb5層的棧相對尋址;(f)HOL6層的switch語句和Asmb5層的轉移錶;(g)HOL6層的指針和Asmb5層的地址。

  統一方法之美就在於可以在較低層次上實現C++章節中的例子。例如,第2章的遞歸例子中描述的運行時棧直接對應於Pep/8主存中的硬件棧。學生可以用手動方式直接在兩層之間翻譯,以便更好地理解編譯的過程。

  這種方法為討論計算機科學中的核心問題提供瞭一種很自然的環境。例如,本書介紹瞭HOL6層的結構化編程,可以和Asmb5層的非結構化編程的可能性進行對比。書中討論瞭goto爭議、結構化編程/效率之間的摺中,給齣瞭兩個層次上語言的實際例子。

  第7章嚮學生介紹瞭計算機科學理論。既然學生對如何把高級語言翻譯成匯編語言已經有瞭感性的認識,那麼我們就提齣所有計算中最基本的問題:什麼是能夠被自動化的?這裏介紹理論是很自然的,因為學生現在知道瞭編譯器(自動化翻譯器)必須做什麼。他們通過識彆C++和Pep/8匯編語言的語言符號來學習語法分析和有限狀態機—確定性的和非確定性的。本章包括兩種小語言之間的自動翻譯器,說明瞭詞法分析、語法分析和代碼生成。詞法分析器是有限狀態機的實現。還有什麼比這樣更自然的介紹理論的方法呢?

  OS4層 OS4層講述操作係統,分為兩章。第8章講述進程管理,包括兩節,一節講裝載器,一節講陷阱處理程序,說明瞭Pep/8操作係統的概念。有5條指令具有産生軟件陷阱的未實現操作碼。操作係統把用戶正在運行的進程的進程控製塊存儲在係統棧上,中斷服務例程解釋該指令。通過具體實現一個掛起進程來強化操作係統中運行和等待進程的經典狀態轉移圖。本章結尾描述瞭並發進程和死鎖。第9章描述存儲管理,包括主存和磁盤存儲器。

  LG1層 LG1層用兩章來介紹組閤電路和時序電路。從布爾代數的定理開始,第10章重點介紹計算機科學的數學基礎的重要性,展示布爾代數和邏輯門之間的關係,然後介紹一些常見的SSI和MSI邏輯設備,包括Pep/8 ALU的完整的邏輯設計。第11章通過介紹時序電路的狀態轉移圖,描述有限狀態機的基本概念。最後描述常見的計算機子係統,比如雙嚮總綫、內存芯片和雙端口存儲器體。

  Mc2層 第12章描述Pep/8 CPU的微程序設計控製區,給齣瞭一些示例指令和尋址方式的控製序列,還提供瞭有關其他指令和尋址方式的大量練習。本章還介紹瞭裝入/存儲體係結構的概念,對比瞭MIPS的RISC機器和Pep/8 CISC機器。最後描述瞭高速緩存、流水綫、動態分支預測和超標量機器,介紹瞭一些性能問題。

  在課程中的使用

  本書覆蓋的內容廣泛,教師在設計課程時可以省略一些內容。第1~5章可以看作核心,第6~12章可以有所取捨。

  本書第1~5章必須順序講授,第6章和第7章可以按任意順序講授。我通常會省略第6章而直接講第7章,開始一個大的軟件項目—為Pep/8匯編語言的一個子集寫一個匯編器,這樣學生在一學期中有足夠的時間完成它。第11章顯然依賴於第10章,但是它們都不依賴於第9章,所以第9章可以省略。圖2是一個章節依賴圖,圖中總結瞭可以省略哪些章節。

  輔助資料

  下麵列齣的輔助資料可以從齣版社網站獲得:

  http://www.jbpub.com/catalog/9780763771447/

  Pep/8匯編器和模擬器 Pep/8機器在MS Windows、Mac OS X和UNIX/Linux係統上都有。匯編器的特性包括:

  集成的文字編輯器;

  在源代碼中發現錯誤的地方插入紅色字體的錯誤消息;

  對學生友好的、十六進製格式的機器語言目標代碼;

  能夠直接以機器語言編寫代碼,跳過匯編器;

  能夠重定義觸發同步陷阱的未實現操作碼的助記符。

  模擬器的特性包括:

  模擬的ROM,裝入指令不能修改;

  在模擬的ROM中燒入瞭一個小的操作係統,包括一個裝載器和一個陷阱處理程序;

  一個集成的調試器,允許設置斷點、單步執行、CPU跟蹤和內存跟蹤;

  用戶定義的、從無限循環恢復的語句執行計數的上限;

  能夠通過為未實現操作碼設計新的陷阱處理程序來修改操作係統。

  Pep/8 CPU模擬器 CPU模擬器,有MS Windows、Mac OS X和UNIX/Linux係統版本,可以用在計算機組成課程中。CPU模擬器的特性包括:

  顔色編碼的展示通路,根據控製信號跟蹤復用器的數據流;

  操作的單周期模式,用GUI輸入每個控製信號,立即展示信號的效果;

  操作的多周期模式,學生可以在集成的文字編輯器中編寫Mc2微代碼序列並執行它們以便實現ISA3指令。

  課程課件 每章有50~125頁的課程幻燈片,有Keynote和PDF格式。幻燈片包括課本中所有的圖和總結信息,通常以標號的形式給齣。不過其中沒有太多的例子,給教師展示示例和教師指導討論留齣瞭空間。

  考試題目 提供有一組考試題目,包括參考信息,例如ASCII錶、指令集錶等,供考試和自學之用。這些對用本書作為教材的教師開放。

  數字電路實驗 有一組6個數字電路實驗,能夠讓學生在物理實驗電路闆上親身體驗。這些實驗說明瞭第10章和第11章的組閤和時序設備,使用許多本書中沒講到的電路。學生可以自學實際的電子設計和實現概念,這些超齣瞭本書的講述範圍,它們可以按照書中討論的主題順序,從組閤電路開始,然後是時序電路和ALU。

  答案手冊 附錄中有部分練習的答案。剩下練習的答案對用本書作為教材的教師開放。齣於安全原因,答案直接從齣版社獲取。相關信息請聯係Jones和Bartlett Publishers Representative,電話1-800-832-0034。

  第4版所做的修改

  第4版對第3版做瞭大量修改,包括使用瞭Pep/8,它是對Pep/7架構的徹底重新設計。前幾版的用戶已經接受瞭Pep/8的教學特性,第4版中還是保留瞭Pep/8架構。本版的每一章都有改進,下麵隻列齣瞭其中一些主要的:

  改進瞭C++迴顧—擴展瞭第3版中引入的C++內存模型,更係統地從頭開始描述。內存分配圖更現實,與主函數一緻,顯示瞭對主函數返迴地址和返迴值的分配。重命名瞭所有以前命名為i的變量。當程序翻譯成Pep/8匯編語言後容易有誤會,Pep/8匯編語言用字母i錶示立即數尋址。

  改進瞭字符編碼的內容—講述瞭Unicode字符集,代替瞭EBCDIC。

  跟蹤標簽—Pep/8匯編器和模擬器包括一個新的符號跟蹤特性,當用戶單步跟蹤程序時,能夠實時顯示全局變量和運行時棧。使用這個新特性要求程序員在某些匯編語言語句的注釋字段放置跟蹤標簽,翻譯器將忽略這些標簽,但是調試器將使用它們。跟蹤標簽的一個巨大好處是迫使程序員做好文件說明。要使用調試器,學生必須在注釋字段精確說明哪些變量要在運行時棧上分配以及分配的順序。匯編器驗證分配的字節數是否與變量列錶要求的字節數匹配。跟蹤標簽的文件說明優點很大,現在這個版本中描述瞭跟蹤標簽語法,書中和答案手冊中的每個匯編語言程序中都包括瞭跟蹤標簽。

  改進瞭語言翻譯的內容—前麵版本中,第7章講述的語言翻譯原理假設學生沒有麵嚮對象知識。本版假設學生已經學習過基本的麵嚮對象設計原理,展示的語法分析程序使用瞭對象組閤、繼承和多態調度以及UML圖。

  新的項目問題—這一版本有兩個項目問題,一個是新的,在第6章中,要求寫一個Pep/8機器模擬器;另一個是改進的,在第7章中,要求寫一個Pep/8匯編器。這兩個項目要求開發上韆行代碼的程序,它們都有多個部分,每一個都往應用程序中增加瞭更多的功能。項目的目的有兩個:1)讓學生獲得編寫較復雜程序的經驗;2)增強對這門課程問題域中計算機係統概念的理解。

  改進瞭RAID的內容—這個版本介紹瞭更廣泛的RAID磁盤係統內容,擴展瞭RAID等級01和10的區彆,增加瞭新的圖和新的量化分析習題。

  改進瞭MIPS的內容—擴展瞭MIPS的內容,更係統地比較瞭CISC架構的Pep/8和RISC架構的MIPS。新的MIPS章節用新的指令集錶描述瞭5種尋址方式。MIPS機器的數據區的圖包括瞭僞直接尋址方式所要求的數據通路和復用器。明確命名的控製信號使用與Pep/8控製信號相同的語法,提供瞭MIPS指令實現更簡潔而詳細的描述。

  獨特的特性

  本書有幾個獨特的特性,使之有彆於其他計算機係統、匯編語言和計算機組成的書。

  概念的方法—許多教科書試圖跟上領域的變化,包括最新的技術發展。例如,最新外圍設備的通信協議規範。這類書通常通篇是“設備如何工作”的描述性解釋。本書避開瞭這類資料,而隻選擇基礎的計算概念,掌握瞭這些就有瞭理解當前和未來技術的基礎。例如,以數字電路設計問題來說,讓學生掌握空間/時間摺中的概念比簡單地閱讀通用描述更重要。再舉一個例子,通過學習如何在ISA指令的微代碼實現中閤並周期來掌握硬件並行的概念,這樣纔是最好的。

  強調問題解決—如果隻聽說或者讀到某個主題,學生能記住的很少;但當他們體驗到時,纔會記住很多。本書強調問題解決,每章後麵有近400道練習,其中很多有多個部分。這些練習不會讓學生重復課本中的原話,而是要求量化地解答、分析或者設計係統某個抽象層次上的一個程序或電子電路。

  一緻的機器模型—Pep/8機器是一個小型的CISC計算機,是描述係統所有層次的載體。學生可以清晰地看到抽象層次之間的關係,因為他們要在所有的層次上為這個機器編程或者設計電子電路。例如,當在LG1層設計ALU組件時,他們知道ALU在ISA3層的實現中應該在哪個位置。通過像編譯器那樣把C++程序翻譯成匯編語言,他們學到優化編譯器和非優化編譯器之間的差彆。在不同層次上都使用同樣的機器模型做工作在效率上有很大的優勢,因為模型從上至下都是一緻的。不過本書也講述瞭MIPS機器,對比瞭RISC設計原理和微程序設計的CISC設計。

  完整的程序示例—許多計算機組成和匯編語言的書會受到代碼片段綜閤徵的影響。Pep/8的內存模型、尋址方式和輸入/輸齣特性使得學生能寫齣完整的程序,容易執行和測試,而不隻是代碼片段。真實的機器,特彆是RISC機器,有復雜的函數調用協議,涉及寄存器分配、寄存器溢齣和內存對齊限製之類的問題。Pep/8是少數幾種教學機之一(有可能是唯一一個),允許學生書寫具有輸入/輸齣的完整程序,可以使用全局變量和局部變量、全局數組和局部數組、傳值調用和傳引用調用、數組參數、使用轉移錶的開關語句、遞歸、使用指針的鏈式結構和堆。寫完整程序的作業進一步實現瞭通過動手來學習的目標,而不是通過讀代碼片段來學習。

  理論和實踐的結閤—有些讀者注意到瞭,講述語言翻譯原理的第7章在計算機係統書中不常見。這種現象可悲地說明瞭計算機科學課程體係甚至計算機科學領域中理論和實踐之間的鴻溝。因為本書講述瞭HOL6層的C++語言、Asmb5層的匯編語言和ISA3層的機器語言,而且都有一個目標,即理解層次之間的關係,一個更好的問題是:“為什麼不能包括講述語言翻譯原理的一章呢?”本書盡可能地加入理論以支持實踐。例如,介紹布爾代數作為一個公理係統,配閤練習來證明定理。

  寬度和深度—第1~6章中的內容對計算機係統或匯編語言編程的書來說是很典型的,第8~12章對計算機組成的書來說是很典型的。在一本書中包括這麼廣泛的內容是很獨特的,而且它還在一個完整機器的各個抽象層次上使用一個一緻的機器模型。數字電路LG1層內容的深度也是很特彆的,它使得CPU的組成部分不再神秘。例如,本書描述瞭Pep/8 CPU的復用器、加法器、ALU、寄存器、內存子係統和雙嚮總綫的實現。學生學習邏輯門層的實現,沒有概念上的空洞,而如果隻是泛泛地描述,就隻能選擇相信而不能完全理解。

  本書迴答瞭這個問題:“匯編語言編程和計算機組成在計算機科學課程體係中的位置是什麼?”它提供瞭對無處不在的馮·諾依曼機器架構的深入理解。本書的目標是提供本領域內所有主要知識域的綜閤概述,包括軟件和硬件的結閤,理論和實踐的結閤。

  計算機課程體係2001

  ACM和IEEE計算機學會建立瞭計算機科學的“課程體係2001”指導原則。該指導原則給齣瞭知識體的分類和具體核心。本書適用於體係結構和組成(Architecture and Organization,AR)類彆,幾乎包含AR知識體中所有的核心主題。初期報告中的AR核心域以及本書中覆蓋這些域的章節如下所示:

  AR1. 數字邏輯和電子係統,第10、11、12章。

  AR2. 數據的機器級錶示,第3章。

  AR3. 匯編層機器組成,第4、5、6章。

  AR4. 內存係統組成和體係結構,第9、11章。

  AR5. 接口與通信,第8、9章。

  AR6. 功能組成,第11、12章。

  AR7. 多處理和其他體係結構,第8章。

  緻謝

  Pep/1有16條指令、一個纍加器和一種尋址方式。Pep/2增加瞭變址尋址。John Vannoy用ALGOL W語言寫瞭2個模擬器。Pep/3有32條指令,用Pascal語言編寫,是學生軟件項目,由Steve Dimse、Russ Hughes、Kazuo Ishikawa、Nancy Brunet和Yvonne Smith完成。Harold Stone在早期審閱中提齣許多對Pep/3架構的改進意見,後來被加到Pep/4中,並延續到後續的機器中。Pep/4有特殊的棧指令,模擬ROM和軟件陷阱。Pep/5有更正交的設計,允許任何指令使用任何尋址方式。John Rooker寫瞭Pep/4係統和早期的Pep/5版本。Gerry St. Romain實現瞭一個MacOS版本和一個MS-DOS版本。Pep/6簡化瞭變址尋址方式,也包括瞭一組完整的條件分支指令。John Webb用BlackBox開發係統編寫瞭跟蹤功能。Pep/7把安裝的內存從4 MB增加到瞭32 MB。Pep/8把尋址方式的數量從4增加到8,安裝的內存增加到64MB。Pep/8匯編器和模擬器的GUI版本由一組學生用Qt開發係統和C++實現和維護,小組成員包括Deacon Bradley、Jeff Cook、Nathan Counts、Stuartt Fox、Dave Grue、Justin Haight、Paul Harvey、Hermi Heimgartner、Matt Highfield、Trent Kyono、Malcolm Lipscomb、Brady Lockhart、Adrian Lomas、Ryan Okelberry、Thomas Rampelberg、Mike Spandrio、Jack Thomason、Daniel Walton、Di Wang、Peter Warford和Matt Wells。Ryan Okelberry也參與編寫瞭Pep/8 CPU模擬器。Luciano d扞lori編寫瞭匯編器的命令行版本。

  Tanenbaum的《Structured Computer Organization》比其他任何一本書都更大地影響瞭本書的編寫。本書擴展瞭Tanenbaum書的層次結構,在上麵增加瞭高級語言層和應用層。

  下麵這些書稿審閱者和前一版本的用戶極大地影響瞭本版本的終稿,他們是:Wayne P. Bailey、Jim Bilitski、Fadi Deek、William Decker、Peter Drexel、Gerald S. Eisman、Victoria Evans、David Garnick、Ephraim P. Glinert、Dave Hanscom、Michael Hennessy、Michael Johnson、Andrew Malton、Robert Martin、Richard H. Mercer、Randy Molmen、John Motil、Peter Ng、Bernard Nudel、Carolyn Oberlink、Wolfgang Pelz、James F. Peters III、James C. Pleasant、Eleanor Quinlan、Glenn A. Richard、David Rosser、Gerry St. Romain、Harold S. Stone、J. Peter Weston和Norman E. Wright。Joe Piasentin提供瞭藝術谘詢。有兩個人極大地影響瞭Pep/8的設計,一位是Myers Foreman,有關指令集的很多想法都來自於他;另一位是Douglas Harms,他提齣很多改進意見,其中之一是MOVSPA指令,使得可以用傳引用方式傳遞局部變量。

  Jones and Bartlett Publishers的責任編輯Tim Anderson、産品主管Amy Rose和編輯助理Melissa Potter提供瞭寶貴的支持,很高興與他們一起工作。Kristin Parker設計的吸引人的封麵正符閤本書的風格。

  我很幸運在一所緻力於在本科教學中追求卓越的學校。佩珀代因(Pepperdine)大學的Ken Perrin,提供瞭富有創造性的環境和專業的支持,正是在這種環境中,本書得到孕育。我的妻子Ann給予我無盡的支持,我要為本書占用的時間嚮她道歉,並送上我由衷的感謝。

  Stan Warford

  Malibu,California


用戶評價

評分

趕上活動買的,價格便宜,省的去書店瞭。

評分

很好,希望可以加深自己的理解

評分

買瞭還沒有好好學習一下

評分

不錯的東西,物美價廉。

評分

hAO

評分

很棒啊,寫得很好,雙十一平均一本纔20塊

評分

多 好 省 快!!!!!

評分

優惠時購買,超值!經典書籍,準備研讀。

評分

全新包裝完整,沒破損,乾淨整潔

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 windowsfront.com All Rights Reserved. 靜流書站 版權所有