計算機系統(tǒng)基礎(chǔ)與實踐(微課版)
定 價:69 元
叢書名:面向新工科專業(yè)建設(shè)計算機系列教材
本書從系統(tǒng)的角度出發(fā),結(jié)合龍芯處理器及Loongnix系統(tǒng)的相關(guān)實例,從軟件和硬件兩個方面對計算機系統(tǒng)進行由硬到軟、自底向上的介紹,目的是幫助讀者掌握完整的計算機系統(tǒng)層次結(jié)構(gòu),了解計算機相關(guān)技術(shù)概念,掌握計算機系統(tǒng)的相關(guān)知識。本書分為基礎(chǔ)部分與實踐部分;A(chǔ)部分主要介紹了計算機系統(tǒng)相關(guān)的基本概念、組合電路與時序電路、處理器體系結(jié)構(gòu)、程序的加載與運行、數(shù)據(jù)的機器級表示和運算、層次化結(jié)構(gòu)存儲、異?刂屏;實踐部分則主要介紹了龍芯實驗平臺的軟硬件環(huán)境、文件讀寫及加解密實驗、二進制炸彈拆除實驗、簡單的計算機模擬器實驗與LoongArch五級流水線模擬器中的Cache實驗。本書可作為高等院校計算機及相關(guān)專業(yè)計算機系統(tǒng)原理課程的教材,也可供從事計算機工作的工程技術(shù)人員參考。
u本書從系統(tǒng)的角度出發(fā),結(jié)合相關(guān)實例,從軟件和硬件兩個方面對計算機系統(tǒng)進行由硬到軟,自底向上的介紹,目的是使讀者掌握完整的計算機系統(tǒng)層次結(jié)構(gòu),了解計算機相關(guān)技術(shù)概念,掌握計算機系統(tǒng)的相關(guān)知識。 u本書設(shè)立實踐部分,以基于國產(chǎn)處理器的龍芯平臺為例,從平臺探索、文件操作、指令解析、處理器模擬及流水線設(shè)計幾個方面入手,使讀者對計算機系統(tǒng)相關(guān)知識有著全方位的了解與掌握,提高實踐操作能力,為后續(xù)其他課程的學習打下堅實基礎(chǔ)。
習近平總書記在黨的二十大報告中指出:教育、科技、人才是全面建設(shè)社會主義現(xiàn)代化國家的基礎(chǔ)性、戰(zhàn)略性支撐。必須堅持科技是生產(chǎn)力、人才是資源、創(chuàng)新是動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,這三大戰(zhàn)略共同服務于創(chuàng)新型國家的建設(shè)。報告同時強調(diào):推動戰(zhàn)略性新興產(chǎn)業(yè)融合集群發(fā)展,構(gòu)建新一代信息技術(shù)、人工智能、生物技術(shù)、新能源、新材料、高端裝備、綠色環(huán)保等一批新的增長引擎。隨著信息技術(shù)的發(fā)展,計算機被廣泛應用于工業(yè)及商業(yè)等領(lǐng)域,新興的軟硬件技術(shù)層出不窮,我國自主研發(fā)的計算機系統(tǒng)不斷涌現(xiàn),計算機系統(tǒng)的相關(guān)知識也亟待更新。本書從系統(tǒng)的角度出發(fā),結(jié)合龍芯處理器架構(gòu)的相關(guān)實例,從硬件和軟件兩個方面對計算機系統(tǒng)進行由硬到軟、自底向上的介紹,目的是幫助讀者掌握完整的計算機系統(tǒng)層次結(jié)構(gòu),了解計算機相關(guān)技術(shù)概念,掌握計算機系統(tǒng)的相關(guān)知識;從硬件電路、計算機子系統(tǒng)、處理器結(jié)構(gòu)方面初步了解計算機系統(tǒng)的硬件架構(gòu)、核心概念及軟硬件實現(xiàn);按照高級語言程序從開發(fā)到運行的路線,串聯(lián)整個過程中的各個環(huán)節(jié),幫助讀者加深對程序從編譯到運行及優(yōu)化等相關(guān)知識的理解;從指令系統(tǒng)出發(fā),結(jié)合LoongArch指令集的相關(guān)實例,介紹計算機系統(tǒng)指令集相關(guān)知識;結(jié)合相關(guān)實例對計算機I/O子系統(tǒng)、存儲結(jié)構(gòu)、計算機系統(tǒng)并行層次等相關(guān)知識進行詳細講解,使讀者對計算機系統(tǒng)相關(guān)知識有全方位的了解與掌握,提高實踐操作能力,為后續(xù)其他課程的學習打下堅實基礎(chǔ)。本書分為基礎(chǔ)部分與實踐部分,其中,基礎(chǔ)部分共分為7章,實踐部分共分為5個實驗,各部分內(nèi)容介紹如下。第1章主要介紹計算機系統(tǒng)相關(guān)的基本概念。內(nèi)容包括計算機系統(tǒng)中相關(guān)的定義、計算機系統(tǒng)的類別、層次結(jié)構(gòu)、用戶角色、體系架構(gòu)及程序編譯執(zhí)行的基本過程,后對計算機性能的衡量指標及測評方式進行了介紹。第2章主要介紹組合電路與時序電路。內(nèi)容包括組合電路與時序電路的描述方法、分析方法、具體表現(xiàn)與應用形式。第3章主要介紹處理器體系結(jié)構(gòu),從指令集架構(gòu)的角度出發(fā)進行闡述。首先描述了指令集架構(gòu)的定義、分類、不同指令集的對比、指令集架構(gòu)的發(fā)展歷程與二進制翻譯技術(shù)。其次詳細介紹了龍芯指令集架構(gòu),包括龍芯指令系統(tǒng)概述,包括龍芯指令的編碼與匯編助記格式、寄存器組織與尋址方式;不同類型的龍芯指令的設(shè)計細節(jié),包括數(shù)據(jù)處理指令、轉(zhuǎn)移指令、訪存指令、柵障指令、浮點處理指令、特權(quán)指令與其他指令;龍芯匯編語言源程序格式和龍芯匯編語言的機器級表示。第4章介紹程序的加載與運行,首先講述源代碼到可執(zhí)行目標文件生成的整體流程,包括編譯、匯編、鏈接步驟;然后根據(jù)可執(zhí)行目標文件的運行過程引出指令的執(zhí)行部分;后介紹如何通過指令流水線技術(shù)提高處理器性能,內(nèi)容包括指令流水線的步驟、存在的問題、異常處理及優(yōu)化技術(shù)。第5章主要介紹數(shù)據(jù)的機器級表示和運算。內(nèi)容包括整數(shù)的編碼表示方法、浮點數(shù)的編碼表示方法、整數(shù)的運算和浮點數(shù)的運算。第6章主要介紹了計算機層次化存儲結(jié)構(gòu)中的存儲器分類、工作原理和組成方式,同時介紹了I/O系統(tǒng)的定義和組成,并對其軟硬件結(jié)構(gòu)進行層次分析。通過介紹存儲技術(shù),局部性原理與層次化存儲結(jié)構(gòu),高速緩存的基本工作原理,虛擬存儲器系統(tǒng)的實現(xiàn)技術(shù),以及Flash存儲器、磁盤存儲器和NVM存儲器等不同類型存儲器的特點,使讀者建立起如何利用不同類型的存儲器構(gòu)造層次化結(jié)構(gòu)的存儲系統(tǒng)的概念。并通過將I/O工作過程與軟硬件系統(tǒng)結(jié)合的方式說明I/O系統(tǒng)的運行原理,幫助讀者從I/O角度進一步認識并了解計算機系統(tǒng),建立起對計算機系統(tǒng)的整體認識。第7章主要介紹異?刂屏鳎紫冉榻B控制流、異常控制流的概念,并介紹了計算機系統(tǒng)中進程、異常、中斷等機制;以LoongArch為例詳細介紹精簡指令集架構(gòu)下的異常與中斷處理理念與實現(xiàn)方式。理解異?刂屏骺梢詭椭绦騿T更好地掌握計算機系統(tǒng)處理不同任務的底層實現(xiàn),并根據(jù)應用場景選擇有效的程序?qū)崿F(xiàn)方式。實踐部分均在龍芯教學實驗平臺設(shè)計和實現(xiàn),借個實驗簡單介紹了龍芯實驗平臺的軟硬件環(huán)境,在熟悉環(huán)境的同時完成字符的大小寫轉(zhuǎn)換。通過第二個讀寫文件實驗,讀者可以掌握動態(tài)庫的創(chuàng)建與鏈接及常見的加解密算法。在第三個二進制炸彈拆除的實驗中,讀者需要使用GDB調(diào)試工具,與匯編陷阱斗智斗勇,經(jīng)過第三個實驗,讀者會進一步理解LoongArch指令。第四個實驗將幫助讀者理解并掌握馮·諾依曼計算機的基本結(jié)構(gòu)與工作原理。通過第五個實驗,讀者會對經(jīng)典五級流水線的每個環(huán)節(jié)有一定的理解,在第三個實驗中LoongArch指令的基礎(chǔ)上,實現(xiàn)指令的匯編翻譯過程,并探究Cache結(jié)構(gòu)對CPU運行速度的影響。本書由申兆巖編寫第1、3、4、6、8章,賈智平編寫第2、7章,王毅編寫第5章,馬良、魏倩、陳澤豪、朱紊濱、姜錫坤、郭瀚文也參與了本書編寫的部分工作。2021年秋季,本講稿已分別在山東大學計算機科學與技術(shù)學院本科生和研究生教學中試用。由于編者水平和經(jīng)驗有限,加之時間倉促,書中難免存在不足之處,敬請讀者諒解,并真誠歡迎讀者提出寶貴的建議。
編者2023年1月
第1章 計算機系統(tǒng)概述1.1 計算機系統(tǒng)的定義和類別1.1.1 計算機系統(tǒng)的定義1.1.2 計算機系統(tǒng)的類別1.2 計算機系統(tǒng)中的抽象層次1.2.1 計算機系統(tǒng)層次結(jié)構(gòu)
第1章計算機系統(tǒng)概述11.1計算機系統(tǒng)的定義和類別11.1.1計算機系統(tǒng)的定義11.1.2計算機系統(tǒng)的類別51.2計算機系統(tǒng)中的抽象層次71.2.1計算機系統(tǒng)層次結(jié)構(gòu)71.2.2計算機系統(tǒng)的不同用戶91.2.3馮·諾依曼架構(gòu)111.2.4程序的編譯及執(zhí)行過程141.3計算機性能161.3.1性能的指標和度量161.3.2CPU性能171.3.3指令性能181.3.4實例: 處理器性能評測21小結(jié)22習題23第2章組合電路與時序電路252.1組合電路252.1.1真值表262.1.2布爾代數(shù)262.1.3邏輯圖272.1.4組合電路分析282.2時序電路312.2.1SR鎖存器322.2.2觸發(fā)器的觸發(fā)方式342.2.3觸發(fā)器的邏輯功能372.3計算機子系統(tǒng)402.3.1CPU子系統(tǒng)40
2.3.2總線452.3.3內(nèi)存子系統(tǒng)47〖3〗計算機系統(tǒng)基礎(chǔ)與實踐(微課版)目錄〖3〗小結(jié)49習題49第3章處理器體系結(jié)構(gòu)523.1指令集體系結(jié)構(gòu)523.1.1精簡指令集與復雜指令集523.1.2二進制翻譯553.2LoongArch指令系統(tǒng)概述573.2.1LoongArch指令的編碼與匯編助記格式573.2.2LoongArch的寄存器組593.2.3LoongArch的尋址方式623.3LoongArch32指令集653.3.1數(shù)據(jù)處理指令653.3.2轉(zhuǎn)移指令743.3.3訪存指令763.3.4柵障指令793.3.5浮點處理指令803.3.6特權(quán)指令813.3.7其他雜項指令873.4匯編語言源程序格式883.4.1匯編語言程序的結(jié)構(gòu)893.4.2匯編語言的行構(gòu)成913.4.3偽指令923.4.4宏指令953.5匯編語言機器級表示973.5.1過程調(diào)用的機器級表示973.5.2選擇語句的機器級表示1003.5.3循環(huán)結(jié)構(gòu)的機器級表示104小結(jié)108習題109第4章程序的加載與運行1114.1可執(zhí)行目標文件的生成1114.1.1編譯1124.1.2匯編1134.1.3鏈接1154.2可執(zhí)行目標文件的運行1174.2.1加載1184.2.2程序執(zhí)行過程1214.2.3指令執(zhí)行介紹1234.3流水線技術(shù)1254.3.1流水線方式1264.3.2指令流水線1274.3.3流水線存在的問題1294.3.4流水線與異常處理1334.3.5流水線優(yōu)化技術(shù)133小結(jié)139習題140第5章數(shù)據(jù)的機器級表示和運算1425.1數(shù)據(jù)類型及編碼方式概述1425.1.1數(shù)值數(shù)據(jù)及其編碼方式1435.1.2非數(shù)值數(shù)據(jù)及其編碼方式1445.1.3進位記數(shù)制1465.2整數(shù)的表示1505.2.1無符號數(shù)編碼1505.2.2有符號數(shù)編碼1505.3整數(shù)運算1545.3.1移位運算1545.3.2加減法運算1555.3.3乘法運算1575.3.4除法運算1665.4浮點數(shù)表示與運算1705.4.1浮點表示法1705.4.2浮點數(shù)計算173小結(jié)174習題175第6章層次化結(jié)構(gòu)存儲1766.1存儲技術(shù)1766.1.1存儲器1766.1.2存儲技術(shù)發(fā)展趨勢1786.2局部性原理與層次化存儲結(jié)構(gòu)1806.2.1局部性1806.2.2存儲器層次結(jié)構(gòu)1826.3高速緩沖存儲器1836.3.1Cache的基本工作原理1836.3.2Cache主存地址映射1846.3.3Cache替換策略1916.3.4Cache寫策略1926.3.5Cache存儲器的性能分析1946.3.6Cache與程序性能1976.4虛擬存儲器2006.4.1虛擬存儲器概述2006.4.2頁式存儲管理2026.4.3段式虛擬存儲管理2096.4.4段頁式存儲管理2116.5外部存儲器2146.5.1磁盤存儲器2146.5.2閃存存儲器2186.5.3新型非易失性存儲器2226.6I/O系統(tǒng)2256.6.1I/O系統(tǒng)的定義與組成2256.6.2I/O軟硬件層次結(jié)構(gòu)2276.6.3Linux中的I/O棧239小結(jié)241習題243第7章異常控制流2467.1進程2467.1.1進程的概念2477.1.2進程的邏輯控制流2487.1.3進程的私有地址空間2497.1.4進程的上下文切換2517.1.5進程的控制2527.2異常和中斷的概念2547.2.1基本概念2547.2.2異常2557.2.3中斷2597.3異常和中斷的響應過程2617.4LoongArch指令系統(tǒng)中的異常和中斷2647.4.1相關(guān)控制狀態(tài)寄存器2647.4.2異常的處理2677.4.3中斷的處理269小結(jié)270習題271第8章實踐部分2738.1龍芯平臺初探2738.1.1實驗背景2738.1.2實驗目的2738.1.3實驗要求2738.1.4實驗步驟2738.2文件讀寫及加解密2788.2.1實驗背景2788.2.2實驗目的2798.2.3實驗要求2798.2.4實驗步驟2798.3二進制炸彈拆除2818.3.1實驗背景2818.3.2實驗目的2828.3.3實驗要求2828.3.4實驗步驟2828.4簡單的計算機模擬器2868.4.1實驗背景2868.4.2實驗目的2878.4.3實驗要求2878.4.4實驗步驟2878.5設(shè)計LoongArch五級流水線模擬器中的Cache3068.5.1實驗背景3068.5.2實驗目的3078.5.3實驗要求3078.5.4實驗步驟309參考文獻327
1.2.2 計算機系統(tǒng)的不同用戶1.2.3 馮·諾依曼架構(gòu)1.2.4 程序的編譯及執(zhí)行過程1.3 計算機性能1.3.1 性能的指標和度量1.3.2 CPU性能1.3.3 指令性能1.3.4 實例:處理器性能評測小結(jié)習題第2章 組合電路與時序電路2.1 組合電路2.1.1 真值表2.1.2 布爾代數(shù)2.1.3 邏輯圖2.1.4 組合電路分析2.2 時序電路2.2.1 SR鎖存器2.2.2 觸發(fā)器的觸發(fā)方式2.2.3 觸發(fā)器的邏輯功能2.3 計算機子系統(tǒng)2.3.1 CPU子系統(tǒng)2.3.2 總線2.3.3 內(nèi)存子系統(tǒng)小結(jié)習題第3章 處理器體系結(jié)構(gòu)3.1 指令集體系結(jié)構(gòu)3.1.1 精簡指令集與復雜指令集3.1.2 二進制翻譯3.2 LoongArch指令系統(tǒng)概述3.2.1 LoongArch指令的編碼與匯編助記格式3.2.2 LoongArch的寄存器組3.2.3 LoongArch的尋址方式3.3 LoongArch32指令集3.3.1 數(shù)據(jù)處理指令3.3.2 轉(zhuǎn)移指令3.3.3 訪存指令3.3.4 柵障指令3.3.5 浮點處理指令3.3.6 特權(quán)指令3.3.7 其他雜項指令3.4 匯編語言源程序格式3.4.1 匯編語言程序的結(jié)構(gòu)3.4.2 匯編語言的行構(gòu)成3.4.3 偽指令3.4.4 宏指令3.5 匯編語言機器級表示3.5.1 過程調(diào)用的機器級表示3.5.2 選擇語句的機器級表示3.5.3 循環(huán)結(jié)構(gòu)的機器級表示小結(jié)習題第4章 程序的加載與運行4.1 可執(zhí)行目標文件的生成4.1.1 編譯4.1.2 匯編4.1.3 鏈接4.2 可執(zhí)行目標文件的運行……第5章 數(shù)據(jù)的機器級表示和運算第6章 層次化結(jié)構(gòu)存儲第7章 異?刂屏第8章 實踐部分參考文獻