計算機系統基礎(基於LoongArch指令系統)

袁春風、鮑培明

  • 出版商: 清華大學
  • 出版日期: 2025-05-01
  • 售價: $474
  • 語言: 簡體中文
  • ISBN: 7302686033
  • ISBN-13: 9787302686033
  • 下單後立即進貨 (約4週~6週)

  • 計算機系統基礎(基於LoongArch指令系統)-preview-1
  • 計算機系統基礎(基於LoongArch指令系統)-preview-2
  • 計算機系統基礎(基於LoongArch指令系統)-preview-3
計算機系統基礎(基於LoongArch指令系統)-preview-1

相關主題

商品描述

"本書主要介紹與計算機系統相關的基礎性內容和核心概念,解釋這些概念如何相互關聯並最終影響程序執行的結果和性能。本書共9章,主要包括數據的表示和運算、LoongArch指令系統、程序的轉換及機器級表示、程序的鏈接和加載執行、存儲器層次結構、虛擬存儲器、進程控制和異常控制流以及I/O操作的實現等內容。 本書內容詳盡,概念清楚,通俗易懂,實例豐富,並提供大量典型習題以供讀者練習。本書可以作為高等學校計算機專業本科學生計算機系統方面的基礎性教材,也可以作為有關專業研究生或計算機技術人員的參考書。 "

目錄大綱

目錄CONTENTS

 

 

第1章計算機系統概述1

1.1計算機系統基本工作原理1

1.1.1馮·諾依曼結構基本思想1

1.1.2馮·諾依曼機基本結構2

1.1.3程序和指令的執行過程3

1.2程序的開發與運行5

1.2.1程序設計語言和翻譯程序5

1.2.2從源程序到可執行文件7

1.2.3可執行文件的啟動和執行8

1.3計算機系統的層次結構10

1.3.1計算機系統抽象層的轉換10

1.3.2計算機系統核心層之間的關聯12

1.3.3計算機系統的不同用戶13

1.4計算機系統性能評價15

1.4.1計算機性能的定義15

1.4.2計算機性能的測試16

1.4.3用指令執行速度進行性能評估18

1.4.4用基準程序進行性能評估19

1.4.5阿姆達爾定律20

1.5本章小結21

習題21

第2章數據的機器級表示與處理24

2.1數制和編碼24

2.1.1信息的二進制編碼24

2.1.2進位計數制26

2.1.3定點數與浮點數29

2.1.4定點數的編碼表示30

2.2整數的表示34

2.2.1無符號整數和帶符號整數的表示34

2.2.2C語言中的整數及其相互轉換34

2.3浮點數的表示36

2.3.1浮點數的表示範圍37

2.3.2浮點數的規格化37

2.3.3IEEE 754浮點數標準38

2.3.4C語言中的浮點數類型41

2.4非數值數據的編碼表示43

2.4.1邏輯值43

2.4.2西文字符43

2.4.3漢字字符44

2.5數據的寬度和存儲45

2.5.1數據的寬度和單位45

2.5.2數據的存儲和排列順序47

2.6數據的基本運算51

2.6.1按位運算和邏輯運算51

2.6.2左移和右移運算51

2.6.3位擴展和位截斷運算52

2.6.4整數加減運算53

2.6.5整數乘除運算56

2.6.6常量的乘除運算58

2.6.7浮點數運算59

2.7本章小結65

習題65

目錄計算機系統基礎(基於LoongArch指令系統)第3章程序轉換與指令系統72

3.1程序轉換概述72

3.1.1機器指令和匯編指令73

3.1.2ISA概述73

3.1.3指令系統設計風格75

3.1.4機器代碼的生成過程76

3.2LA32/LA64指令系統81

3.2.1LoongArch指令系統概述81

3.2.2機器指令格式83

3.2.3操作數類型84

3.2.4寄存器組織86

3.2.5尋址方式87

3.3LA32/LA64基礎整數指令89

3.3.1基礎整數指令概述89

3.3.2整數運算類指令91

3.3.3移位指令98

3.3.4普通訪存指令100

3.3.5程序執行流控制指令105

3.4LA32/LA64基礎浮點指令110

3.4.1基礎浮點指令集概述110

3.4.2浮點普通訪存指令110

3.4.3浮點運算類指令112

3.4.4浮點轉換指令113

3.4.5浮點傳送指令115

3.5本章小結119

習題119

第4章程序的機器級表示122

4.1過程調用的機器級表示122

4.1.1LoongArch的過程調用約定122

4.1.2變量的作用域和生存期126

4.1.3按值傳遞參數和按地址傳遞參數128

4.1.4遞歸過程調用132

4.1.5非靜態局部變量的存儲分配134

4.1.6入口參數的傳遞與分配137

4.2流程控制語句的機器級表示142

4.2.1選擇語句的機器級表示142

4.2.2循環語句的機器級表示146

4.3復雜數據類型的分配和訪問149

4.3.1數組的分配和訪問149

4.3.2結構體數據的分配和訪問154

4.3.3聯合體數據的分配和訪問156

4.3.4數據的對齊159

4.4越界訪問和緩沖區溢出161

4.4.1緩沖區溢出161

4.4.2緩沖區溢出攻擊163

4.4.3緩沖區溢出攻擊的防範165

4.5本章小結168

習題169

第5章程序的鏈接與加載執行180

5.1編譯、匯編和靜態鏈接180

5.1.1編譯和匯編180

5.1.2可執行文件的生成181

5.2目標文件格式183

5.2.1ELF目標文件格式183

5.2.2可重定位文件格式184

5.2.3可執行文件格式188

5.2.4可執行文件的存儲器映像190

5.3符號表和符號解析191

5.3.1符號和符號表191

5.3.2符號解析194

5.3.3與靜態庫的鏈接197

5.4符號的重定位199

5.4.1重定位信息200

5.4.2重定位過程200

5.4.3LoongArch代碼的重定位203

5.5動態鏈接206

5.5.1動態鏈接的特性206

5.5.2程序加載時的動態鏈接207

5.5.3程序運行時的動態鏈接208

5.5.4位置無關代碼210

5.5.5位置無關可執行文件214

5.6庫打樁機制215

5.6.1編譯時打樁215

5.6.2鏈接時打樁216

5.6.3運行時打樁217

5.7可執行文件的加載和執行219

5.7.1可執行文件的加載219

5.7.2程序和指令的執行過程220

5.7.3CPU的基本功能和基本組成221

5.7.4打斷程序正常執行的事件223

5.8本章小結223

習題224

第6章存儲器層次結構229

6.1存儲器概述229

6.1.1存儲器的分類229

6.1.2主存儲器的組成和基本操作230

6.1.3層次化存儲結構231

6.1.4程序訪問的局部性232

6.2半導體隨機存取存儲器234

6.2.1基本存儲元件234

6.2.2DRAM芯片235

6.2.3SDRAM芯片技術237

6.2.4內存條及其與CPU的連接238

6.2.5存儲器芯片的擴展240

6.2.6主存控制器241

6.3外部存儲器242

6.3.1磁盤存儲器的結構242

6.3.2磁盤存儲器的性能指標244

6.3.3閃速存儲器和U盤245

6.3.4固態硬盤246

6.4cache247

6.4.1cache的基本工作原理247

6.4.2cache的映射方式249

6.4.3cache的替換算法255

6.4.4cache的寫策略258

6.4.5cache的設計259

6.4.6cache和程序性能263

6.5本章小結267

習題267

第7章虛擬存儲器271

7.1虛擬存儲器概述271

7.1.1虛擬存儲器的基本概念271

7.1.2進程的虛擬地址空間272

7.1.3虛擬存儲器的基本類型274

7.2頁式虛擬存儲器的實現275

7.2.1頁表和頁表項的結構275

7.2.2頁式存儲管理總體結構276

7.2.3頁式虛擬存儲地址轉換278

7.2.4快表(TLB)278

7.3具有TLB和cache的存儲系統280

7.3.1層次化存儲系統結構281

7.3.2CPU訪存過程282

7.3.3cache的4種查找方式283

7.4存儲保護機制284

7.5實例: LoongArch架構的虛擬存儲系統285

7.5.1與虛擬存儲管理相關的CSR285

7.5.2LoongArch架構的虛擬地址空間288

7.5.3直接映射地址翻譯模式289

7.5.4頁表映射模式下的TLB訪問290

7.5.5頁表映射模式下的多級頁表結構294

7.5.6頁表映射模式下的多級頁表遍歷296

7.6實例: Intel Core i7+Linux平臺297

7.6.1Core i7的層次化存儲器結構297

7.6.2Core i7的地址轉換機制297

7.7Linux操作系統的虛擬存儲管理300

7.7.1mmap()函數的功能300

7.7.2共享庫的映射302

7.7.3私有的寫時拷貝對象302

7.8本章小結305

習題305

第8章進程與異常控制流308

8.1進程與進程的上下文切換308

8.1.1程序和進程的概念308

8.1.2進程的邏輯控制流309

8.1.3進程的上下文切換310

8.2異常和中斷312

8.2.1異常和中斷的基本概念312

8.2.2異常的分類313

8.2.3中斷的分類317

8.2.4異常和中斷的響應317

8.3LoongArch+Linux平臺的異常和中斷機制319

8.3.1支持的異常/中斷類型319

8.3.2異常/中斷相關的CSR320

8.3.3異常/中斷的響應優先級321

8.3.4異常/中斷的響應過程和處理322

8.3.5異常/中斷處理程序的入口地址324

8.3.6LoongArch+Linux平臺中的異常處理325

8.3.7LoongArch中的系統調用機制328

8.4Linux中的進程控制330

8.4.1進程的創建、休眠和終止330

8.4.2進程ID的獲取和子進程的回收333

8.4.3程序的加載運行335

8.5Linux系統中的信號與非本地跳轉339

8.5.1Linux系統中的信號處理機制339

8.5.2信號的發送340

8.5.3信號的捕獲和信號處理342

8.5.4非本地跳轉處理343

8.6本章小結345

習題346

第9章I/O操作的實現352

9.1I/O子系統概述352

9.2用戶空間I/O軟件354

9.2.1用戶程序中的I/O函數354

9.2.2文件的基本概念357

9.2.3系統級I/O函數358

9.2.4C標準I/O庫函數361

9.3內核空間I/O軟件366

9.3.1設備無關I/O軟件層366

9.3.2設備驅動程序370

9.3.3中斷服務程序376

9.4I/O硬件與軟件的接口378

9.4.1輸入/輸出設備378

9.4.2基於總線的互連結構378

9.4.3I/O接口的功能和結構381

9.4.4I/O端口及其編址383

9.4.5中斷系統387

9.5本章小結388

習題389

參考文獻393