(*长期更新)软考网络工程师学习笔记——Section 18 计算机硬件基本知识
文章目錄
- 一、計(jì)算機(jī)的概念
- (一)計(jì)算機(jī)的基本組成
- (二)五大部件的功能
- (三)計(jì)算機(jī)硬件的主要技術(shù)指標(biāo)
- 二、CPU(中央處理器)
- (一)CPU 的基本概念
- (二)CPU 指令集
- (三)CPU的主要性能指標(biāo)
- 三、指令系統(tǒng)和指令流水
- (一)指令的組成
- (二)CPU指令的執(zhí)行過(guò)程
- (三)指令周期
- 1、指令周期的關(guān)系
- 2、指令周期的組成
- (四)指令流水
- 四、存儲(chǔ)器
- (一)存儲(chǔ)器分類
- (二)高速緩存中的命中率
- (三)內(nèi)存地址編址
- (四)虛擬內(nèi)存
- 五、計(jì)算機(jī)的運(yùn)算方法
- (一)無(wú)符號(hào)數(shù)和有符號(hào)數(shù)
- (二)數(shù)的定點(diǎn)和浮點(diǎn)表示
- (三)原碼、補(bǔ)碼、反碼與移碼
- (四)移位運(yùn)算
- 六、系統(tǒng)總線
- (一)總線的概念
- (二)總線的分類
- 七、中斷
- (一)中斷、中斷向量、中斷源
- (二)中斷系統(tǒng)的分類
- (三)中斷服務(wù)程序
- (四)DMA方式
一、計(jì)算機(jī)的概念
(一)計(jì)算機(jī)的基本組成
- 計(jì)算機(jī)由硬件系統(tǒng)和軟件系統(tǒng)兩個(gè)部分組成,從硬件系統(tǒng)來(lái)看,主要由運(yùn)算器、存儲(chǔ)器、控制器、輸入設(shè)備和輸出設(shè)備五個(gè)部分組成,如下:
- 但現(xiàn)代計(jì)算機(jī)可簡(jiǎn)化將五大部件認(rèn)為由三部分組成,即CPU(中央處理器,運(yùn)算器+控制器)、主存儲(chǔ)器和I/O設(shè)備(Input /Output),其中CPU和主存儲(chǔ)器可以稱為主機(jī),I/O設(shè)備可以稱為外部設(shè)備。
(二)五大部件的功能
機(jī)器以運(yùn)算器為中心,輸入輸出設(shè)備與存儲(chǔ)器間的數(shù)據(jù)傳送通過(guò)運(yùn)算器完成。
1、運(yùn)算器
- 運(yùn)算器由ALU、累加器、通用寄存器和數(shù)據(jù)暫存器等組成,它用于完成算術(shù)運(yùn)算和邏輯運(yùn)算,并將運(yùn)算的結(jié)果暫存在運(yùn)算器中(通用寄存器用于存放操作數(shù)、中間結(jié)果以及各地址信息等,常見的通用寄存器有數(shù)據(jù)寄存器、地址指針寄存器、累加寄存器等等)。
算術(shù)邏輯單元(ALU):是用于完成算術(shù)運(yùn)算和邏輯運(yùn)算的邏輯電路,它是CPU的執(zhí)行單元,即CPU的核心組成部分,由And(與門) 和Or(或門)構(gòu)成,其基本功能為加、減、乘、除四則運(yùn)算,與、或、非、異或等邏輯操作,以及移位、求補(bǔ)等操作。
2、存儲(chǔ)器
- 存儲(chǔ)器是計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)設(shè)備,用于存放程序和數(shù)據(jù),它根據(jù)控制器指定位置進(jìn)行存入和存出操作。
3、控制器
- 控制器,是計(jì)算機(jī)系統(tǒng)的控制中心,用于控制程序和數(shù)據(jù)的輸入、運(yùn)行以及處理運(yùn)算結(jié)果,它由程序計(jì)數(shù)器PC、指令寄存器IR、地址寄存器AR、數(shù)據(jù)寄存器DR和指令譯碼器等部分組成,控制器從存儲(chǔ)器中逐條取出指令,經(jīng)過(guò)分析后向目標(biāo)位置部件發(fā)送控制信號(hào),從而使計(jì)算機(jī)完成指令。
| 程序計(jì)數(shù)器PC | 指出下條指令在主存中的存放地址,從而CPU取得指令 |
| 指令寄存器IR | 寄存,即保存當(dāng)前正在執(zhí)行的這條指令的代碼 |
| 地址寄存器AR | 存放CPU當(dāng)前訪問(wèn)的內(nèi)存單元地址 |
| 數(shù)據(jù)寄存器DR | 暫存從內(nèi)存儲(chǔ)器中讀出或?qū)懭氲闹噶罨驍?shù)據(jù) |
| 指令譯碼器 | 譯碼,對(duì)獲取的指令進(jìn)行譯碼,并產(chǎn)生信號(hào)使計(jì)算機(jī)各部件完成指令 |
4、輸入設(shè)備和輸出設(shè)備
- 輸入設(shè)備和輸出設(shè)備合并稱為I/O設(shè)備,輸入設(shè)備將人們熟悉的信息形式轉(zhuǎn)換為機(jī)器能識(shí)別的信息形式,而輸出設(shè)備相反,例如鍵盤、鼠標(biāo)等是輸入設(shè)備;打印機(jī)、顯示器等是輸出設(shè)備。
(三)計(jì)算機(jī)硬件的主要技術(shù)指標(biāo)
1、機(jī)器字長(zhǎng)
CPU進(jìn)行一次運(yùn)算所能處理的二進(jìn)制數(shù)據(jù)位數(shù)稱為機(jī)器字長(zhǎng),以單位bit(位,也稱為比特)來(lái)衡量,位是數(shù)據(jù)存儲(chǔ)的最小單位【1字節(jié)=8位(1byte=8bit)】,由于是二進(jìn)制代碼,即1和0,其中每一個(gè)1或0就是一位(bit)。
它通常與CPU的寄存器位數(shù)有關(guān),機(jī)器字長(zhǎng)越長(zhǎng),數(shù)的表示范圍越大且精度也越高,目前大多數(shù)常用計(jì)算機(jī)處理器都為64位,即64位的計(jì)算機(jī),其CPU一次可以處理的二進(jìn)制數(shù)據(jù)位數(shù)為64位。
2、存儲(chǔ)容量
存儲(chǔ)容量包括主存容量和輔存容量,主存容量是指主存中存放的二進(jìn)制代碼的總位數(shù),它等于存儲(chǔ)單元個(gè)數(shù)×存儲(chǔ)字長(zhǎng),主存中有兩個(gè)寄存器,分別為存儲(chǔ)器地址寄存器(MAR)和存儲(chǔ)器數(shù)據(jù)寄存器(MDR),其中MAR存放將訪問(wèn)的存儲(chǔ)單元地址,其位數(shù)代表存儲(chǔ)單元的個(gè)數(shù);MDR存放從存儲(chǔ)體中取出的代碼或?qū)⑾蚰炒鎯?chǔ)單元存入的代碼,其位數(shù)代表存儲(chǔ)字長(zhǎng)。輔存通常以字節(jié)數(shù)表示。
例如,MAR為16位,MDR為32位,則存儲(chǔ)單元個(gè)數(shù)為216=65536,即64K個(gè)存儲(chǔ)字(1K=1024=210),存儲(chǔ)字長(zhǎng)為32,所以存儲(chǔ)容量為216×32=221=2M(1M=1024K=220)位,也等于218byte(1byte(字節(jié))=8bit(位))。
3、運(yùn)算速度
常用單位時(shí)間內(nèi)執(zhí)行指令的平均條數(shù)來(lái)衡量計(jì)算機(jī)的運(yùn)算速度,單位為百萬(wàn)條指令每秒(MIPS),另外還有CPI或FLOPS也可以衡量。
二、CPU(中央處理器)
(一)CPU 的基本概念
- CPU(中央處理器,Center processing units),又稱為微處理器,它是運(yùn)算器+控制器組合起來(lái)的,這是由于這兩者在邏輯關(guān)系和電路結(jié)構(gòu)上聯(lián)系十分緊密。
常與CPU相提到的還有GPU(圖形處理器,Graphics processing unit)、NPU(網(wǎng)絡(luò)處理器,Neural-network Processing Unit)等,這里簡(jiǎn)單了解一下,GPU是用作圖像和圖形相關(guān)運(yùn)算工作的微處理器,從而使顯卡(顯卡用于轉(zhuǎn)換驅(qū)動(dòng),即計(jì)算機(jī)系統(tǒng)要顯示的信息進(jìn)行轉(zhuǎn)換驅(qū)動(dòng),并向輸出設(shè)備輸出并顯示)減少取CPU的依賴;NPU采用“數(shù)據(jù)驅(qū)動(dòng)并行計(jì)算”的架構(gòu),特別擅長(zhǎng)處理視頻、圖像類的海量多媒體數(shù)據(jù)。
以下兩張圖:
1、OPPO發(fā)布首個(gè)自研NPU芯片 馬里亞納 MariSilicon X。
2、麒麟9000E和麒麟9000的差別。
(二)CPU 指令集
CPU用來(lái)計(jì)算和控制計(jì)算機(jī)系統(tǒng)的一套指令集合稱為指令集,可將指令集分為精簡(jiǎn)指令集(RISC)和復(fù)雜指令集(CISC)兩種,精簡(jiǎn)指令集采用簡(jiǎn)單的指令,而復(fù)雜指令集采用復(fù)雜的指令,如下表:
| 指令數(shù)量 | 簡(jiǎn)單 | 復(fù)雜 |
| CPU中通用寄存器數(shù)量 | 多 | 較少 |
| 控制器實(shí)現(xiàn) | 硬布線控制,即組合邏輯器 | 微程序控制器 |
| 指令執(zhí)行方式 | 并行處理(采用超標(biāo)量和超流水線結(jié)構(gòu)) | 順序串行執(zhí)行 |
| 計(jì)算機(jī)各部分利用率 | 高 | 低 |
| 指令執(zhí)行速度 | 快 | 較慢 |
| 編程的便利性 | 較難 | 較容易 |
(三)CPU的主要性能指標(biāo)
1、主頻 (CPU的時(shí)鐘頻率)
時(shí)鐘頻率,其單位為MHz或GHz,它用于表示CPU運(yùn)算和處理數(shù)據(jù)的速度,由于計(jì)算機(jī)的操作在時(shí)鐘信號(hào)的控制下分步進(jìn)行的,每個(gè)時(shí)鐘信號(hào)周期完成一步操作,時(shí)鐘頻率的高低在很大程度上反映了CPU速度的快慢(CPU內(nèi)數(shù)字脈沖信號(hào)震蕩的速度),但單從時(shí)鐘頻率上并不能代表CPU的整體性能,因?yàn)樗皇荂PU性能的一個(gè)方面。
2、緩存(高速存儲(chǔ)器)
緩存是位于CPU與內(nèi)存之間的高速存儲(chǔ)器,其速度比內(nèi)存快(比隨機(jī)存儲(chǔ)器RAM快),緩存主要解決CPU運(yùn)行速度與內(nèi)存讀寫速度不匹配的問(wèn)題,所以說(shuō)緩存容量的大小也是衡量CPU的主要性能指標(biāo)之一,它對(duì)CPU速度的影響很大。
緩存分為一級(jí)緩存、二級(jí)緩存和三級(jí)緩存等,一級(jí)緩存位于CPU內(nèi)核旁邊,它的容量最小;二級(jí)緩存是處理器內(nèi)部的一些緩沖存儲(chǔ)器;三級(jí)緩存可以提升大數(shù)據(jù)計(jì)算時(shí)處理器的性能。
3、另外,衡量CPU的主要性能指標(biāo)的還有位和字長(zhǎng)。
三、指令系統(tǒng)和指令流水
(一)指令的組成
CPU中一條指令由一組二進(jìn)制代碼來(lái)表示,指令是由操作碼和地址碼組成的,一條指令必須有一個(gè)操作碼,但是可以有多個(gè)地址碼。
- 操作碼,用于指明指令要完成的操作,如加法、減法、移位等等,其位數(shù)反映了機(jī)器的操作種類,即機(jī)器允許的指令條數(shù),若操作碼占X位,則該機(jī)器最多包含2X條指令。
- 地址碼,用于指出操作數(shù)的地址(一或兩個(gè))、結(jié)果的地址以及下一條指令的地址。
(二)CPU指令的執(zhí)行過(guò)程
- CPU指令的執(zhí)行過(guò)程簡(jiǎn)單可以概括為:首先通過(guò)指令譯碼器對(duì)操作碼進(jìn)行測(cè)試,以便識(shí)別所要求的操作,操作碼經(jīng)過(guò)譯碼后,向控制器發(fā)出具體的對(duì)應(yīng)信號(hào)。
控制器的基本功能為取指令、分析指令和執(zhí)行指令,即CPU指令的執(zhí)行過(guò)程如下三個(gè)步驟:
#mermaid-svg-J9BL21ULLw3Et7dH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .error-icon{fill:#552222;}#mermaid-svg-J9BL21ULLw3Et7dH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-J9BL21ULLw3Et7dH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-J9BL21ULLw3Et7dH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-J9BL21ULLw3Et7dH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-J9BL21ULLw3Et7dH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-J9BL21ULLw3Et7dH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-J9BL21ULLw3Et7dH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-J9BL21ULLw3Et7dH .marker.cross{stroke:#333333;}#mermaid-svg-J9BL21ULLw3Et7dH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-J9BL21ULLw3Et7dH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .cluster-label text{fill:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .cluster-label span{color:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .label text,#mermaid-svg-J9BL21ULLw3Et7dH span{fill:#333;color:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .node rect,#mermaid-svg-J9BL21ULLw3Et7dH .node circle,#mermaid-svg-J9BL21ULLw3Et7dH .node ellipse,#mermaid-svg-J9BL21ULLw3Et7dH .node polygon,#mermaid-svg-J9BL21ULLw3Et7dH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-J9BL21ULLw3Et7dH .node .label{text-align:center;}#mermaid-svg-J9BL21ULLw3Et7dH .node.clickable{cursor:pointer;}#mermaid-svg-J9BL21ULLw3Et7dH .arrowheadPath{fill:#333333;}#mermaid-svg-J9BL21ULLw3Et7dH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-J9BL21ULLw3Et7dH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-J9BL21ULLw3Et7dH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-J9BL21ULLw3Et7dH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-J9BL21ULLw3Et7dH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-J9BL21ULLw3Et7dH .cluster text{fill:#333;}#mermaid-svg-J9BL21ULLw3Et7dH .cluster span{color:#333;}#mermaid-svg-J9BL21ULLw3Et7dH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-J9BL21ULLw3Et7dH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}取指令分析指令執(zhí)行指令1、取指令
控制器根據(jù)程序計(jì)數(shù)器(PC)提供的指令地址從主存儲(chǔ)器中讀取指令,送到主存數(shù)據(jù)緩沖器中,然后再送往CPU內(nèi)的指令寄存器(IR)中,同時(shí)改變PC的內(nèi)容,使其指向下一條指令地址或緊跟當(dāng)前指令的立即數(shù)或地址碼。
2、分析指令
分析控制器要發(fā)出的指令所對(duì)應(yīng)的操作,且分析參與此次操作的操作數(shù)地址,根據(jù)尋址方式計(jì)算地址,然后到存儲(chǔ)器中取操作數(shù);若是雙操作數(shù)指令,這需兩個(gè)取數(shù)周期來(lái)取操作數(shù);另外若無(wú)操作數(shù)指令,則直接進(jìn)入下一個(gè)過(guò)程。
3、執(zhí)行指令
形成操作控制信號(hào)序列,通過(guò)對(duì)運(yùn)算器、存儲(chǔ)器以及I/O設(shè)備的操作,執(zhí)行每條指令。
總之,CPU必須具有控制程序的順序執(zhí)行(指令控制)、產(chǎn)生完成每條指令所需的控制命令(操作控制)、對(duì)各種操作加以時(shí)間上的控制(時(shí)間控制)、對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算(數(shù)據(jù)加工)以及處理中斷等功能。
(三)指令周期
1、指令周期的關(guān)系
指令周期可以劃分為幾個(gè)不同的階段,每個(gè)階段所需的時(shí)間稱為機(jī)器周期,也稱為CPU工作周期或基本周期,這個(gè)周期是處理操作的最基本單位,另外機(jī)器周期又由若干個(gè)時(shí)鐘周期組成。
2、指令周期的組成
- 按剛剛上述CPU指令的處理過(guò)程來(lái)看,也就是完成一條指令的全部時(shí)間等于取指令、分析指令和執(zhí)行指令所花的時(shí)間總和,所以我們將CPU每取出并執(zhí)行一條指令所需的全部時(shí)間稱為指令周期,也就是CPU完成一條指令的時(shí)間。
另外將完成取指令和分析指令的操作所花的時(shí)間稱為取指周期,而執(zhí)行指令所花的時(shí)間稱為執(zhí)行周期,如下圖:
當(dāng)對(duì)于間接尋址的命令來(lái)說(shuō),還要在取指周期和執(zhí)行周期之間加一個(gè)間址周期,此時(shí)需先訪問(wèn)一次存儲(chǔ)器,取出有效地址,然后再訪問(wèn)存儲(chǔ)器,從而取出操作數(shù),如下圖:
- 準(zhǔn)確的來(lái)說(shuō),一個(gè)完整的指令周期包括取指周期、間址周期、執(zhí)行周期和中斷周期四個(gè)子周期,其中間址周期的存在是判斷是否有間接尋址,中斷周期的存在是判斷是否有中斷,即中間址周期和中斷周期不一定包含在每個(gè)指令周期內(nèi),所以我們一開始所述一般的指令周期包括指令周期包含兩部分。
(四)指令流水
指令流水原理也就是將指令分解成多個(gè)小步驟,其中各個(gè)步驟相互,重疊,從而可以使多條命令并行處理從而提高效率,例如下圖是指令的二級(jí)流水:
流水線中執(zhí)行的總時(shí)間主要取決于流水操作步驟中耗時(shí)時(shí)間最長(zhǎng)的操作,設(shè)流水線由N段組成,每段所需時(shí)間分別為t,其中tj為時(shí)間最長(zhǎng)的那一段的執(zhí)行時(shí)間,則完成M個(gè)任務(wù)的實(shí)際時(shí)間為每段時(shí)間的總和+(M-1)×tj。
流水線性能通常用吞吐率、加速比和效率三項(xiàng)指標(biāo)來(lái)衡量,如下:
1、吞吐率
在單位時(shí)間內(nèi)流水線可以處理的任務(wù)或執(zhí)行指令的數(shù)量稱為吞吐率,吞吐率分為最大吞吐率和實(shí)際吞吐率,其中實(shí)際吞吐率總是小于最大吞吐率。
最大吞吐率是指流水線在連續(xù)流動(dòng)達(dá)到穩(wěn)定狀態(tài)后所獲得的吞吐率,若各段時(shí)間均為△t,則最大吞吐率Tpmax如下:實(shí)際吞吐率是指流水線完成n條指令的實(shí)際吞吐率,對(duì)于m段的指令流水線,若各段時(shí)間均為△t,則在m段流水線上完成n條指令的時(shí)間為T=m△t+(m-1)△t,連續(xù)處理n條指令,其實(shí)際吞吐率Tp如下(當(dāng)n?m時(shí),Tp≈Tpmax):
2、加速比
加速比是指m段流水線的工作速度與等功能的非流水線工作速度之比,若數(shù)值越大,則說(shuō)明該流水線的工作安排方式越好。
設(shè)流水線各段時(shí)間均為△t,在m段流水線上完成n條指令的時(shí)間為T1=m△t+(m-1)△t,但對(duì)于等效的非流水線工作,其所需時(shí)間為T2=nm△t,即加速比Sp為(當(dāng)n?m時(shí),Sp≈m):
3、效率
效率是指流水線中各功能段的利用率,利用率等于加速比Sp/m(m為流水線的段數(shù)),也等于Tp△t(流水線各段時(shí)間為△t)。
四、存儲(chǔ)器
(一)存儲(chǔ)器分類
存儲(chǔ)器分類有很多分類方法,
1、按存儲(chǔ)器在計(jì)算機(jī)中的作用可分類如下幾種存儲(chǔ)器:
2、按數(shù)據(jù)的存取方式可分為以下五種存儲(chǔ)器:
#mermaid-svg-ldFVqND9PcvIIOGw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .error-icon{fill:#552222;}#mermaid-svg-ldFVqND9PcvIIOGw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ldFVqND9PcvIIOGw .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ldFVqND9PcvIIOGw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ldFVqND9PcvIIOGw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ldFVqND9PcvIIOGw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ldFVqND9PcvIIOGw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ldFVqND9PcvIIOGw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ldFVqND9PcvIIOGw .marker.cross{stroke:#333333;}#mermaid-svg-ldFVqND9PcvIIOGw svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ldFVqND9PcvIIOGw .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .cluster-label text{fill:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .cluster-label span{color:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .label text,#mermaid-svg-ldFVqND9PcvIIOGw span{fill:#333;color:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .node rect,#mermaid-svg-ldFVqND9PcvIIOGw .node circle,#mermaid-svg-ldFVqND9PcvIIOGw .node ellipse,#mermaid-svg-ldFVqND9PcvIIOGw .node polygon,#mermaid-svg-ldFVqND9PcvIIOGw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ldFVqND9PcvIIOGw .node .label{text-align:center;}#mermaid-svg-ldFVqND9PcvIIOGw .node.clickable{cursor:pointer;}#mermaid-svg-ldFVqND9PcvIIOGw .arrowheadPath{fill:#333333;}#mermaid-svg-ldFVqND9PcvIIOGw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ldFVqND9PcvIIOGw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ldFVqND9PcvIIOGw .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ldFVqND9PcvIIOGw .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ldFVqND9PcvIIOGw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ldFVqND9PcvIIOGw .cluster text{fill:#333;}#mermaid-svg-ldFVqND9PcvIIOGw .cluster span{color:#333;}#mermaid-svg-ldFVqND9PcvIIOGw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ldFVqND9PcvIIOGw :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}存儲(chǔ)器隨機(jī)存取存儲(chǔ)器RAM只讀存儲(chǔ)器ROM順序存取存儲(chǔ)器SAM直接存取存儲(chǔ)器DAM相聯(lián)存儲(chǔ)器CAM1、RAM和ROM
常說(shuō)的比如手機(jī)或電腦內(nèi)存多少G+多少G也就是指的是RAM和ROM(運(yùn)行內(nèi)存即對(duì)應(yīng)的RAM,而ROM則是存儲(chǔ)容量),它們最大的區(qū)別是數(shù)據(jù)的易失性,即一旦斷電后RAM所存儲(chǔ)的數(shù)據(jù)將隨之丟失,所以在計(jì)算機(jī)和數(shù)字系統(tǒng)中RAM用來(lái)暫時(shí)存儲(chǔ)程序、數(shù)據(jù)和中間結(jié)果,常用于主存和高速緩存中;
DRAM以電容充電放電原理來(lái)寄存信息,SROM以觸發(fā)器原理來(lái)寄存信息,其中SRAM在不斷電的情況下,其儲(chǔ)存的信息一直不會(huì)丟失,而DRAM會(huì)隨著時(shí)間的延長(zhǎng)而逐漸消失,它只能保持很短的時(shí)間,所以需要定時(shí)對(duì)其刷新來(lái)保持信息不丟失。
ROM是固定的,它是非易失性存儲(chǔ)器,所以它被用作操作系統(tǒng)的固化,即只能對(duì)存儲(chǔ)的內(nèi)容讀出,但不能對(duì)其重新寫入修改,ROM的讀取速度通常比RAM慢一些。
總的來(lái)說(shuō),RAM和ROM這兩種存儲(chǔ)器共同作為主存的一部分,統(tǒng)一構(gòu)成主存的地址域。
2、SAM
SAM存儲(chǔ)器只能按照某種順序進(jìn)行順序存取,存取時(shí)間的長(zhǎng)短與信息在存儲(chǔ)體上的物理位置有關(guān),例如磁帶就是SAM的一種。
3、DAM
DAM采用直接存取方式對(duì)信息進(jìn)行存取,當(dāng)存取時(shí),直接指向該存儲(chǔ)器的某個(gè)范圍(某個(gè)磁道),然后在范圍內(nèi)進(jìn)行順序檢索,找到地址后再進(jìn)行讀寫操作,所以說(shuō)這種存儲(chǔ)器的存取時(shí)間與信息所在的物理位置有關(guān)。
4、CAM
CAM是一種基于數(shù)據(jù)內(nèi)容進(jìn)行訪問(wèn)的存儲(chǔ)器,寫入數(shù)據(jù)時(shí),自動(dòng)選擇一個(gè)未使用的空單元進(jìn)行存儲(chǔ);讀取數(shù)據(jù)時(shí),不直接使用存儲(chǔ)單元的地址,而是使用該數(shù)據(jù)或該數(shù)據(jù)的一部分內(nèi)容來(lái)檢索地址,由于它能同時(shí)對(duì)所有存儲(chǔ)單元的數(shù)據(jù)進(jìn)行比較,是并發(fā)進(jìn)行的,所以CAM速度非常快。
閃存
閃存,也稱為快閃存儲(chǔ)器,它是一種電子式可清除程序化只讀存儲(chǔ)器(ROM)的形式,即使斷電后數(shù)據(jù)也不會(huì)丟失,所以說(shuō)它是一種非易失性存儲(chǔ)器,而RAM斷電后數(shù)據(jù)會(huì)丟失;隨機(jī)存取存儲(chǔ)器(RAM)是以字節(jié)為單位來(lái)改寫數(shù)據(jù),而閃存存儲(chǔ)是以固定的區(qū)塊為單位,由于閃存寫入次數(shù)有限制,且讀寫速度相對(duì)于RAM較慢,所以不適合作為主存,但可將其作為ROM的替代品使用。
(二)高速緩存中的命中率
在高速緩存中,設(shè)直接訪問(wèn)主存的時(shí)間為M秒,訪問(wèn)高速緩存的時(shí)間為N秒,CPU訪問(wèn)內(nèi)存的平均時(shí)間為L(zhǎng)秒,命中率為H,則滿足L=M×(1-H)+N×H。
(三)內(nèi)存地址編址
編址是給內(nèi)存單元進(jìn)行編號(hào),通常通過(guò)十六進(jìn)制數(shù)字表示,按照從小到大連續(xù)編排成為內(nèi)存的地址,其中每個(gè)內(nèi)存單元的大小為一個(gè)字節(jié),即8bit,其內(nèi)存容量等于最高地址-最低地址+1。
(四)虛擬內(nèi)存
虛擬內(nèi)存屬于計(jì)算機(jī)內(nèi)存管理技術(shù),它會(huì)開辟一個(gè)邏輯連續(xù)的內(nèi)存(一段連續(xù)完整的地址空間),在物理上,它通常被分隔成多個(gè)物理內(nèi)存碎片,還有部分存儲(chǔ)在外部磁盤存儲(chǔ)器上,只有在需要時(shí)才進(jìn)行數(shù)據(jù)交換。
五、計(jì)算機(jī)的運(yùn)算方法
(一)無(wú)符號(hào)數(shù)和有符號(hào)數(shù)
前面已經(jīng)講到過(guò),CPU進(jìn)行一次運(yùn)算所能處理的二進(jìn)制數(shù)據(jù)位數(shù)稱為機(jī)器字長(zhǎng),以單位bit(位,也稱為比特)來(lái)衡量,即寄存器的位數(shù)為機(jī)器字長(zhǎng),在寄存器中每一位都用于存放數(shù)值,在計(jì)算機(jī)中參與運(yùn)算的數(shù)分為兩類:無(wú)符號(hào)數(shù)和有符號(hào)數(shù)。
這兩種數(shù)的區(qū)別是,有符號(hào)數(shù)在存放時(shí),需在其最高位留位置用于存放其符號(hào)【正號(hào)“+”代表0,負(fù)號(hào)“-”代表1】,而無(wú)符號(hào)數(shù)不需要,當(dāng)機(jī)器字長(zhǎng)相同的情況下,兩種數(shù)對(duì)應(yīng)的數(shù)值范圍是不同的。
| + | 0 |
| - | 1 |
如下,以機(jī)器字長(zhǎng)為4位為例,無(wú)符號(hào)數(shù)的數(shù)值范圍與有符號(hào)數(shù)值范圍是不同的:
(二)數(shù)的定點(diǎn)和浮點(diǎn)表示
在計(jì)算機(jī)中,小數(shù)點(diǎn)的表示方法有兩種,分為定點(diǎn)表示和浮點(diǎn)表示,我們將分別用定點(diǎn)表示和浮點(diǎn)表示的數(shù)稱為定點(diǎn)數(shù)和浮點(diǎn)數(shù)。定點(diǎn)數(shù)的小數(shù)點(diǎn)的位置是固定的,當(dāng)其位于機(jī)器數(shù)的符號(hào)和第一數(shù)值位之間時(shí),這種數(shù)稱為純小數(shù),而小數(shù)點(diǎn)位于數(shù)值位之后的機(jī)器數(shù)稱為純整數(shù)。
浮點(diǎn)數(shù)其小數(shù)點(diǎn)的位置可以浮動(dòng),表示方法:N=S×rj,即浮點(diǎn)數(shù)由階碼j、尾數(shù)S和基數(shù)r組成。
- 總的來(lái)說(shuō),浮點(diǎn)數(shù)在數(shù)的表示范圍、數(shù)的精度、溢出處理等方面上均優(yōu)于定點(diǎn)數(shù),但在運(yùn)算規(guī)則、運(yùn)算速度及硬件成本方面不如浮點(diǎn)數(shù)。
(三)原碼、補(bǔ)碼、反碼與移碼
1、原碼
- 原碼是直接用二進(jìn)制表示的數(shù)值的編碼,但在數(shù)值前添加了一位符號(hào)(+代表0,-代表1),在計(jì)算機(jī)中通常不使用原碼表示數(shù)據(jù)。若一個(gè)定點(diǎn)整數(shù)或定點(diǎn)小數(shù)為正數(shù),則它們的原碼為其本身,當(dāng)為負(fù)數(shù)時(shí),定點(diǎn)整數(shù)的原碼為2n-X,定點(diǎn)小數(shù)的原碼為1-X,另外整數(shù)的符號(hào)位與數(shù)值位之間通過(guò)逗號(hào)“,”隔開,小數(shù)的符號(hào)位與數(shù)值位之間通過(guò)小數(shù)點(diǎn)“.”隔開。
例如求下列定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的原碼:
注:例如8位原碼的表示范圍為-127至-0以及+0至127,一共256個(gè)。
2、反碼
- 正數(shù)的反碼也是其本身,而負(fù)數(shù)的反碼是對(duì)其原碼的所有位,除符號(hào)位之外按位取反(1->0,0->1),從而得到反碼;負(fù)數(shù)的反碼也可以通過(guò)公式求得,其中定點(diǎn)整數(shù)的反碼為2n+1-1+X,定點(diǎn)小數(shù)的反碼為2-2-n+X。
例如求下列定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的反碼:
3、補(bǔ)碼
- 正數(shù)的補(bǔ)碼與原碼、反碼一樣,都是其本身,而負(fù)數(shù)的補(bǔ)碼是對(duì)其原碼所有位,除符號(hào)位之外按位取反(1->0,0->1),并在末位補(bǔ)加1【簡(jiǎn)述為取反加一】,它比反碼就多了加1這個(gè)步驟;負(fù)數(shù)的補(bǔ)碼也可以通過(guò)公式求得,其中定點(diǎn)整數(shù)的補(bǔ)碼為2n+1+X,定點(diǎn)小數(shù)的補(bǔ)碼為2+X。
例如求下列定點(diǎn)整數(shù)和定點(diǎn)小數(shù)的補(bǔ)碼:
注:例如8位補(bǔ)碼的表示范圍為-127至0至127,一共256個(gè)。
4、移碼
移碼又稱為增碼,是符號(hào)位取反的補(bǔ)碼,即移碼與補(bǔ)碼只是符號(hào)位相反,一般用做浮點(diǎn)數(shù)的階碼表示,因此只用于整數(shù),目的是保證浮點(diǎn)數(shù)的機(jī)器零為全零。
(四)移位運(yùn)算
對(duì)于一個(gè)正數(shù),由于其原碼=補(bǔ)碼=反碼,所以經(jīng)過(guò)經(jīng)過(guò)移位后出現(xiàn)的空位以0補(bǔ)齊;而對(duì)于負(fù)數(shù),由于各種編碼的表示形式不同,所以當(dāng)機(jī)器數(shù)移位時(shí),對(duì)空位的補(bǔ)齊要根據(jù)相關(guān)規(guī)則來(lái)進(jìn)行補(bǔ)齊,如下表:
| 正數(shù) | 以0補(bǔ)齊 |
| 負(fù)數(shù) | 原碼以0補(bǔ)齊;反碼以1補(bǔ)齊;補(bǔ)碼若左移以0補(bǔ)齊,若右移以1補(bǔ)齊 |
六、系統(tǒng)總線
(一)總線的概念
總線是計(jì)算機(jī)中各功能部件之間傳送信息的公共通信干線,計(jì)算機(jī)使用總線結(jié)構(gòu)便于增減外設(shè),同時(shí)減少了信息傳輸線的條數(shù),可以提高系統(tǒng)的可擴(kuò)展性。
(二)總線的分類
- 總線可分為內(nèi)部總線和系統(tǒng)總線,內(nèi)部總線是指CPU內(nèi)部連接各寄存器的總線,系統(tǒng)總線是指CPU與主存儲(chǔ)器及外部設(shè)備接口相連的·總線。
- 按照計(jì)算機(jī)所傳輸?shù)男畔⒎N類,計(jì)算機(jī)的總線可以劃分為數(shù)據(jù)總線(DB)、地址總線(AB)和控制總線(CB),它們分別用來(lái)傳輸數(shù)據(jù)、數(shù)據(jù)地址和控制信號(hào)。
1、數(shù)據(jù)總線
數(shù)據(jù)總線用于傳輸各功能部件之間的數(shù)據(jù)信息,它一般是雙向總線,其位數(shù)稱為數(shù)據(jù)總線寬度,它是衡量系統(tǒng)性能的一個(gè)重要參數(shù)。
2、地址總線
地址總線是單向總線,它用于指出數(shù)據(jù)總線上的源數(shù)據(jù)或目的數(shù)據(jù)在主存單元的地址或I/O設(shè)備的地址,地址線的位數(shù)與存儲(chǔ)單元的個(gè)數(shù)有關(guān),若地址線的根數(shù)為M,則對(duì)應(yīng)的存儲(chǔ)單元個(gè)數(shù)(地址總線可訪問(wèn)的最大存儲(chǔ)容量)為2M字節(jié)。
3、控制總線
控制總線是用于發(fā)出各種控制信號(hào)的傳輸線,各部件能在不同時(shí)刻占有總線使用權(quán),需通過(guò)控制總線實(shí)現(xiàn),通常來(lái)說(shuō)它也是單向總線。
七、中斷
(一)中斷、中斷向量、中斷源
- 當(dāng)計(jì)算機(jī)在執(zhí)行程序的過(guò)程中,出現(xiàn)異常情況或特殊請(qǐng)求,計(jì)算機(jī)停止了現(xiàn)行程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求的處理,處理結(jié)束后再返回到現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序,稱為中斷,而中斷程序的入口地址稱為中斷向量,另外我們把凡是能向CPU提出中斷請(qǐng)求的各種因素稱為中斷源,同時(shí)還要注意當(dāng)多個(gè)中斷源同時(shí)向CPU提出中斷請(qǐng)求時(shí),此時(shí)CPU堅(jiān)持一個(gè)原則,即任何瞬間只接受一個(gè)中斷源的請(qǐng)求。
(二)中斷系統(tǒng)的分類
中斷系統(tǒng)可以根據(jù)對(duì)中斷處理策略的不同分類為單級(jí)中斷系統(tǒng)和多級(jí)中斷系統(tǒng),單級(jí)在響應(yīng)某一中斷請(qǐng)求后,在此期間不允許被其他中斷源打斷,也就是只能等其執(zhí)行完畢;而多級(jí)中具有多個(gè)不同優(yōu)先級(jí)的中斷源,其中優(yōu)先級(jí)級(jí)別高的可以打斷優(yōu)先級(jí)級(jí)別低的中斷服務(wù)程序,從而以程序嵌套的方式進(jìn)行工作。
(三)中斷服務(wù)程序
一般中斷服務(wù)程序的流程分為以下四個(gè)部分:
#mermaid-svg-rBvZtlo2mi6Ki9jq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .error-icon{fill:#552222;}#mermaid-svg-rBvZtlo2mi6Ki9jq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rBvZtlo2mi6Ki9jq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .marker.cross{stroke:#333333;}#mermaid-svg-rBvZtlo2mi6Ki9jq svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .cluster-label text{fill:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .cluster-label span{color:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .label text,#mermaid-svg-rBvZtlo2mi6Ki9jq span{fill:#333;color:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .node rect,#mermaid-svg-rBvZtlo2mi6Ki9jq .node circle,#mermaid-svg-rBvZtlo2mi6Ki9jq .node ellipse,#mermaid-svg-rBvZtlo2mi6Ki9jq .node polygon,#mermaid-svg-rBvZtlo2mi6Ki9jq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .node .label{text-align:center;}#mermaid-svg-rBvZtlo2mi6Ki9jq .node.clickable{cursor:pointer;}#mermaid-svg-rBvZtlo2mi6Ki9jq .arrowheadPath{fill:#333333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-rBvZtlo2mi6Ki9jq .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-rBvZtlo2mi6Ki9jq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rBvZtlo2mi6Ki9jq .cluster text{fill:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq .cluster span{color:#333;}#mermaid-svg-rBvZtlo2mi6Ki9jq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rBvZtlo2mi6Ki9jq :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}保護(hù)現(xiàn)場(chǎng)中斷服務(wù)恢復(fù)現(xiàn)場(chǎng)中斷返回CPU暫停現(xiàn)行程序,此時(shí)保護(hù)程序的斷點(diǎn)(由中斷隱指令完成)和保存CPU中各種寄存器的值(由中斷服務(wù)程序完成),稱為保護(hù)現(xiàn)場(chǎng),中斷服務(wù)程序的最后一條指令是中斷返回指令,當(dāng)執(zhí)行結(jié)束后,即中斷返回至原程序的斷點(diǎn)處,從而整個(gè)完整的程序中斷處理過(guò)程完成。
(四)DMA方式
當(dāng)CPU處理I/O事件時(shí)有大量數(shù)據(jù)需處理時(shí),通常不使用中斷,而是使用使CPU效率更高的DMA控制方式,在該方式下,主存和外設(shè)之間建立了直接的數(shù)據(jù)通路,其中具體操作由DMA控制器來(lái)實(shí)行和完成(不需要CPU參與),當(dāng)數(shù)據(jù)傳送完成后再將信息反饋給CPU,這樣就提高了I/O系統(tǒng)處理數(shù)據(jù)的能力,并減少了CPU周期的浪費(fèi),例如磁盤適合用DMA方式來(lái)實(shí)現(xiàn)輸入輸出操作。
總結(jié)
以上是生活随笔為你收集整理的(*长期更新)软考网络工程师学习笔记——Section 18 计算机硬件基本知识的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux操作系统笔记——Shell变量
- 下一篇: 数据结构学习-二维数组与稀疏数组转换