安騰體系結構-理解64位處理和EPIC原理

安騰體系結構-理解64位處理和EPIC原理

《安騰體系結構-理解64位處理和EPIC原理》是2004年5月1日清華大學出版社出版的圖書,作者是(英)埃文斯,(英)特林普爾著。本書主要全面介紹了新型的64位安騰體系結構及其具有突破性的性能。

圖書簡介

本書通過使用標準命令行工具和大量實例,循序漸進地介紹了安騰彙編語言,並結合當代計算機體系結構的發展,詳細闡述了安騰體系結構設計。

本書涵蓋的內容包括:

·顯式並行指令計算(EPIC)的潛能

·安騰體系結構中的創新,例如暫存器棧引擎(RSE)和廣泛使用的謂詞等

·過程調用以及過程調用機制

·浮點操作

·I/O技術,包括從簡單的調試到檔案的使用等

·開主和源碼、Intel和HP-UX編譯程式的輸出最佳化

編輯推薦

本書每章都包括翔實的數字、論述以及編程練習,並且提供了大量的參考文獻和豐富的網上資源。本書可作為計算機及相關專業學生學習計算機體系結構或彙編語言的教材,也是研究人員系統了解安騰體系結構的必備資源。

目錄

第1章體系結構和實現方法1

1.1類比:鋼琴的體系結構1

1.2計算機語言的類型2

1.3為什麼要學習彙編語言3

1.4二進制倍數的詞頭4

1.5指令集體系結構4

1.6計算機體系結構的生命周期5

1.6.132位Intel體系結構及其先前結構5

1.6.2AlphaTM體系結構及其先前結構6

1.6.3安騰體系結構及其先前結構7

1.6.4體系結構和實現方法的命名8

1.7SQUARES:第一個編程實例9

1.7.1C、FORTRAN和COBOL語言描述9

1.7.2安騰體系結構的彙編語言描述11

1.8記數系統的回顧13

1.8.1位置係數和權值13

1.8.2二進制和十六進制表示14

1.8.3帶符號整數15

本章總結16

參考文獻16

練習題18

第2章計算機結構和數據表示20

2.1計算機結構20

2.1.1中央處理器21

2.1.2存儲器21

2.1.3輸入輸出系統23

2.2指令的執行24

2.3指令集體系結構的類別25

2.4向64位體系結構過渡26

2.5安騰體系結構的信息單位和數據類型28

2.5.1整數29

2.5.2浮點數29

2.5.3字母數字字元32

本章總結35

參考文獻35

練習題36

第3章彙編程式和調試程式38

3.1編程環境38

3.2程式開發步驟39

3.3比較源檔案的不同41

3.4彙編語句的類型42

3.4.1語句格式42

3.4.2符號地址43

3.4.3彙編語言操作符的種類43

3.5符號彙編程式的功能44

3.5.1常量44

3.5.2符號或標識符45

3.5.3存儲器分配45

3.5.4單元計數器47

3.5.5表達式48

3.5.6控制語句49

3.5.7清單檔案的組成部分49

3.6彙編過程51

3.7連線過程52

3.8調試程式55

3.8.1調試程式的功能55

3.8.2使用gdb(Linux和HPUX)運行SQUARES56

3.8.3使用adb(HPUX)運行SQUARES57

3.8.4調試命令舉例58

3.9編寫程式的約定61

本章總結62

參考文獻62

練習題63

第4章安騰指令格式和定址方式65

4.1安騰指令格式概述66

4.1.1指令包66

4.1.2指令位欄位格式67

4.1.3安騰指令類型67

4.2整數算術指令69

4.2.1加法和減法69

4.2.2算術溢出70

4.2.3左移相加指令71

4.2.4算術操作的特殊情況71

4.2.516位帶符號整數的乘法72

4.2.6全寬度的乘法和除法73

4.3安騰指令的位編碼73

4.4HEXNUM:使用算術指令76

4.5數據存取指令78

4.5.1安騰高速快取結構78

4.5.2整型存儲指令80

4.5.3整型裝入指令80

4.5.4長立即數傳送指令81

4.5.5存取簡單的記錄結構82

4.5.6存取專用CPU暫存器83

4.6其他ALU指令84

4.6.1符號擴展指令84

4.6.2零擴展指令85

4.6.3寬度小於64位的指令85

4.7DOTPROD:使用數據存取指令85

4.8安騰定址方式88

4.8.1立即定址88

4.8.2暫存器直接定址88

4.8.3暫存器間接定址88

4.8.4自動增量定址89

4.8.5安騰定址方式小結89

4.8.6前面程式中的定址細節89

4.9其他體系結構中的定址94

4.9.1基於暫存器間接定址的方式94

4.9.2基於偏移定址的方式94

4.9.3體系結構定址方式的比較95

本章總結96

參考文獻96

練習題96

第5章比較、轉移和判斷99

5.1控制流的硬體基礎99

5.1.1條件碼100

5.1.2狀態管理方法100

5.1.3謂詞暫存器101

5.2整數比較指令102

5.2.1帶符號比較和等式102

5.2.2無符號比較103

5.3程式轉移104

5.3.1普通轉移指令104

5.3.2轉移的時間考慮105

5.3.3if…then…else結構106

5.3.4循環結構108

5.3.5轉移的定址範圍109

5.3.6局部性和程式性能109

5.4DOTLOOP:使用計數循環110

5.5暫停、指令組和性能111

5.5.1DOTLOOP中的暫停和分組111

5.5.2數據相關性的簡化規則113

5.5.3安騰彙編程式處理暫停的方法115

5.5.4循環的局部標號115

5.5.5循環、轉移和整體性能115

5.6DOTCLOOP:使用循環計數暫存器115

5.7其他結構化程式設計成分117

5.7.1無條件比較指令118

5.7.2嵌套的if…then…else結構118

5.7.3多路轉移119

5.7.4簡單的分情況結構120

5.8MAXIMUM:使用條件指令122

本章總結123

參考文獻124

練習題124

第6章邏輯操作、移位操作和位元組操作126

6.1邏輯函式126

6.1.1兩個變數的布爾函式126

6.1.2邏輯指令128

6.1.3邏輯函式的套用128

6.1.4一位測試指令129

6.1.5並行(邏輯)條件130

6.1.6加法的邏輯基礎131

6.2HEXNUM2:使用邏輯掩碼132

6.3位操作和欄位操作134

6.3.1移位指令134

6.3.2移位操作的套用135

6.3.3右移對指令135

6.3.4提取指令和存放指令135

6.4SCANTEXT:處理位元組137

6.5整數乘法和除法138

6.5.1乘法的Booth算法138

6.5.2無符號乘法141

6.5.3使用已知倒數的除法141

6.6DECNUM:將整數轉換成十進制格式143

6.7使用C語言進行ASCII輸入和輸出145

6.7.1GETPUT:封裝C函式146

6.7.2IO_C:一個簡單的測試程式146

6.7.3其他概念148

6.8BACKWARD:使用位元組操作148

本章總結151

參考文獻151

練習題152

第7章子例程、過程和函式155

7.1存儲器棧155

7.1.1CISC體系結構的棧定址155

7.1.2裝入/存儲體系結構的棧定址156

7.1.3安騰體系結構的棧定址156

7.1.4用戶定義的棧158

7.2DECNUM2:使用棧操作159

7.3暫存器棧161

7.3.1SPARC暫存器窗162

7.3.2安騰暫存器棧163

7.3.3alloc指令163

7.3.4暫存器棧引擎(RSE)164

7.3.5存儲體暫存器164

7.4程式分段165

7.4.1源級模組性165

7.4.2傳統子例程166

7.4.3協同例程166

7.4.4過程和函式167

7.4.5共享庫函式167

7.5調用約定167

7.5.1暫存器競爭和使用約定168

7.5.2調用和返迴轉移指令168

7.5.3變元傳送:位置171

7.5.4變元傳送:方法172

7.5.5開始部分和結束部分172

7.5.6.regstk命令176

7.6DECNUM3和BOOTH:建立一個函式176

7.6.1定義接口176

7.6.2BOOTH:可調用的函式177

7.6.3DECNUM3:測試程式178

7.6.4位置獨立的代碼180

7.7整數商和餘數181

7.7.1高級語言使用的例程181

7.7.2Intel公司的開放源例程182

7.8RANDOM:一個可調用的函式182

7.8.1選擇一個算法183

7.8.2RANDOM:函式的開發183

7.8.3高級語言調用程式186

本章總結187

參考文獻188

練習題189

第8章浮點操作191

8.1整數指令和浮點指令之間的並行性191

8.2浮點值的表示192

8.2.1IEEE特殊值192

8.2.2安騰浮點暫存器中的值193

8.3複製浮點數據194

8.3.1浮點存儲指令194

8.3.2浮點裝入指令195

8.3.3浮點裝入對指令196

8.3.4用於暫存器暫存器複製的浮點偽指令197

8.3.5浮點合併指令198

8.4浮點算術指令198

8.4.1加法、減法和乘法198

8.4.2熔絲型乘加和乘減指令199

8.4.3規範化為另一個特例200

8.4.4最大值和最小值操作200

8.4.5捨入、異常和浮點控制200

8.5HORNER:計算一個多項式201

8.6基於浮點值的判斷203

8.6.1浮點比較指令204

8.6.2浮點類指令204

8.7浮點執行部件中的整數操作205

8.7.1數據轉換指令206

8.7.2整數乘法指令208

8.7.3乘法策略209

8.7.4浮點邏輯指令209

8.8倒數和平方根的近似209

8.8.1浮點倒數的近似210

8.8.2倒數平方根的近似211

8.8.3浮點除法211

8.8.4Intel公司的開放源例程212

8.9APPROXPI:使用浮點指令212

本章總結216

參考文獻216

練習題217

第9章文本的輸入和輸出219

9.1檔案系統220

9.1.1UnixI/O軟體220

9.1.2LinuxI/O軟體221

9.2鍵盤和顯示器I/O221

9.2.1未格式化的I/O行221

9.2.2格式化的I/O222

9.3SCANTERM:使用C的標準I/O223

9.4SORTSTR:排序串226

9.5文本檔案I/O230

9.5.1目錄級的訪問230

9.5.2未格式化的I/O行231

9.5.3格式化的I/O232

9.6SCANFILE:檔案的輸入輸出232

9.7SORTINT:對檔案中的整數進行排序236

9.8二進制檔案240

本章總結241

參考文獻241

練習題241

第10章性能考慮244

10.1處理器級的並行性244

10.1.1簡化的指令流水線244

10.1.2超標量流水線245

10.1.3安騰2處理器流水線246

10.1.4流水線冒險247

10.2指令級並行性249

10.2.1RISC方法249

10.2.2VLIW思想250

10.2.3EPIC:體系結構發展的一個方向250

10.3安騰處理器中的顯式並行性250

10.3.1指令模板251

10.3.2數據相關和猜測254

10.3.3控制相關和猜測257

10.3.4組合的控制和數據猜測258

10.4軟體流水線循環258

10.4.1傳統的循環展開259

10.4.2軟體流水線259

10.4.3循環式暫存器260

10.4.4循環階段260

10.4.5軟體流水線的轉移指令261

10.5按模調度一個循環262

10.5.1DOTCTOP:獨立實現的調度262

10.5.2DOTCTOP2:安騰2處理器的調度266

10.5.3進一步的考慮267

10.6程式最佳化因素269

10.6.1指令寬度269

10.6.2定址方式270

10.6.3指令能力270

10.6.4程式長度270

10.6.5將數據預取到高速快取中271

10.6.6直接插入式函式的使用271

10.6.7指令重新排序271

10.6.8遞歸及相關因素272

10.7斐波納契數272

10.7.1FIB1:使用遞歸的函式273

10.7.2FIB2:無遞歸的函式275

10.7.3FIB3:使用暫存器棧的函式275

10.7.4TESTFIB:顯示遞歸的開銷276

本章總結278

參考文獻278

練習題279

第11章查看編譯程式的輸出281

11.1類RISC系統的編譯程式281

11.1.1開放源碼編譯程式的最佳化級別282

11.1.2Intel編譯程式的最佳化級別283

11.1.3HPUX編譯程式的最佳化級別284

11.1.4附加的最佳化可能性284

11.2編譯一個簡單程式285

11.2.1比較gcc和ecc(Linux)的輸出286

11.2.2比較gcc和g77(Linux)的輸出289

11.2.3比較cc_bundled和f90(HPUX)的輸出292

11.3最佳化一個簡單程式295

11.3.1比較g77(Linux)的-O1級別和-O2級別的輸出296

11.3.2編譯程式信息298

11.3.3f90(HPUX)的循環的長度和最佳化299

11.4直接插入式最佳化304

11.5剖面制導的最佳化或其他最佳化306

11.6調試經過最佳化的程式306

11.7重訪斐波納契數的遞歸307

本章總結309

參考文獻310

練習題311

第12章並行操作313

12.1計算系統的分類313

12.2整數並行操作315

12.3整數乘法的套用316

12.3.1源運算元32×32位得到32位無符號乘積316

12.3.2源運算元32×32位得到64位無符號數317

12.4機遇和挑戰319

12.5浮點並行操作319

12.6支持並行處理的信號量320

12.6.1先前的體系結構321

12.6.2安騰體系結構321

本章總結324

參考文獻324

練習題325

第13章實現方法的變異326

13.1為什麼改變實現方法327

13.1.1需求和機遇327

13.1.2摩爾定律的含義327

13.1.3期望體系結構具有較長的生命周期328

13.2如何改變實現方法328

13.3最初的安騰處理器329

13.3.1與安騰2處理器的對比329

13.3.2高速快取的層次結構330

13.3.3執行部件和發射連線埠331

13.3.4流水線331

13.3.5等待因子332

13.3.6轉移預測332

13.3.7其他區別和特徵334

13.4軟體的主要作用334

13.4.1新的體系結構335

13.4.2新的實現方法335

13.4.3新的指令或者更多的暫存器336

13.5IA32指令集模式337

13.6確定擴展和實現方案337

本章總結338

參考文獻338

練習題340

附錄A命令行環境341

參考文獻344

練習題344

附錄B推薦的系統資源345

B.1系統硬體345

B.1.1安騰工作站或伺服器345

B.1.2IA32 Linux系統上的Ski模擬器345

B.1.3Linux虛擬機上的Ski模擬器346

B.1.4其他模擬器346

B.2系統軟體347

B.2.1Linux347

B.2.2HPUX347

B.2.3Ski模擬器348

B.2.464位Windows350

B.2.5FreeBSD350

B.2.6OpenVMS351

B.3桌面客戶訪問軟體351

B.3.1Linux個人計算機351

B.3.2Macintosh個人計算機351

B.3.3Windows個人計算機352

參考文獻353

附錄C安騰指令集354

表C1按功能排列的安騰指令354

表C2按彙編程式操作碼排列的安騰指令360

參考文獻366

附錄D安騰暫存器及其用途367

D.1指令指示字367

D.2通用暫存器和NaT位367

D.3謂詞暫存器369

D.4轉移暫存器369

D.5浮點暫存器370

D.6套用暫存器370

D.7狀態管理暫存器372

D.8系統信息暫存器373

D.9系統控制暫存器373

參考文獻374

附錄E條件彙編和宏(GCC彙編程式)375

E.1顯式停止的干擾375

E.2重複塊376

E.2.1簡單重複塊376

E.2.2使用.irp命令的不定重複塊377

E.2.3使用.irpc命令的不定重複塊378

E.3條件彙編379

E.4宏的處理380

E.4.1宏的定義381

E.4.2宏的調用381

E.4.3定位參數的處理383

E.4.4默認值和關鍵字參數的處理383

E.4.5串參數的處理384

E.5宏標號的使用384

E.6遞歸宏385

E.7目標區塊386

E.8MONEY:用於說明段的宏387

本章總結389

參考文獻390

練習題390

附錄F直接插入式彙編392

F.1HPUX的C編譯程式392

F.2用於Linux 的GCC 編譯程式394

F.3Intel的Linux編譯程式395

參考文獻395

參考文獻匯總396

部分練習題答案及提示403

術語表410

相關詞條

熱門詞條

聯絡我們