計(jì)算機(jī)組成原理-03-計(jì)算機(jī)的組成(一)

總線

總線(Bus)是計(jì)算機(jī)各種功能部件之間傳送信息的公共通信干線,它是cpu、內(nèi)存、輸入、輸出設(shè)備傳遞信息的公用通道,主機(jī)的各個(gè)部件通過總線相連接,外部設(shè)備通過相應(yīng)的接口電路再與總線相連接,從而形成了計(jì)算機(jī)硬件系統(tǒng)。

為什么要有總線?

假設(shè)沒有總線這種設(shè)計(jì),計(jì)算機(jī)設(shè)備都是分散連接的,如下圖:

image

此時(shí)如果新增了一個(gè)輸入設(shè)備2,此時(shí)需要分別連接存儲(chǔ)器、控制器、運(yùn)算器,設(shè)備一多線路就會(huì)十分復(fù)雜。


image

有了總線之后,設(shè)備直接連接總線,使得計(jì)算機(jī)內(nèi)部結(jié)構(gòu)變得十分清晰,設(shè)備的添加和卸載也變得容易。


image

總線的分類

片內(nèi)總線

**高集成度芯片內(nèi)部的信息傳輸線**,用于連接寄存器與寄存器、寄存器和控制器&運(yùn)算器之間。

系統(tǒng)總線

 CPU、主內(nèi)存、IO設(shè)備、各組件之間的信息傳輸線。一般有三類:數(shù)據(jù)總線、地址總線、控制總線。
數(shù)據(jù)總線
雙向傳輸各個(gè)部件的數(shù)據(jù)信息

數(shù)據(jù)總線的位數(shù)(總線寬度)是數(shù)據(jù)總線的重要參數(shù),一般與CPU位數(shù)相同(32位、64位)
地址總線
指定源數(shù)據(jù)或目的數(shù)據(jù)在內(nèi)存中的地址

地址總線的位數(shù)與存儲(chǔ)單元有關(guān)

地址總線位數(shù)=n,尋址范圍:0~??^??
控制總線
控制總線是用來發(fā)出各種控制信號(hào)的傳輸線

控制信號(hào)經(jīng)由控制總線從一個(gè)組件發(fā)給另外一個(gè)組件

控制總線可以監(jiān)視不同組件之間的狀態(tài)(就緒/未就緒)

總線的仲裁

系統(tǒng)中多個(gè)設(shè)備或模塊可能同時(shí)申請(qǐng)對(duì)總線的使用權(quán),為避免產(chǎn)生總線沖突,需由總線仲裁機(jī)構(gòu)合理地控制和管理系統(tǒng)中需要占用總線的申請(qǐng)者,在多個(gè)申請(qǐng)者同時(shí)提出總線請(qǐng)求時(shí),以一定的優(yōu)先算法仲裁哪個(gè)應(yīng)獲得對(duì)總線的使用權(quán)。

仲裁方法

鏈?zhǔn)讲樵?/h5>

總線授權(quán)信號(hào)BG串行地從一個(gè)I/O接口傳送到下一個(gè)I/O接口。假如BG到達(dá)的接口無總線請(qǐng)求,則繼續(xù)往下查詢;假如BG到達(dá)的接口有總線請(qǐng)求,BG信號(hào)便不再往下查詢,該I/O接口獲得了總線控制權(quán)。離中央仲裁器最近的設(shè)備具有最高優(yōu)先級(jí),通過接口的優(yōu)先級(jí)排隊(duì)電路來實(shí)現(xiàn)。

好處:只用很少幾根線就能按一定優(yōu)先次序?qū)崿F(xiàn)總線仲裁,很容易擴(kuò)充設(shè)備。

壞處:對(duì)詢問鏈的電路故障很敏感,如果第i個(gè)設(shè)備的接口中有關(guān)鏈的電路有故障,那么第i個(gè)以后的設(shè)備都不能進(jìn)行工作。查詢鏈的優(yōu)先級(jí)是固定的,如果優(yōu)先級(jí)高的設(shè)備出現(xiàn)頻繁的請(qǐng)求時(shí),優(yōu)先級(jí)較低的設(shè)備可能長期不能使用總線。

計(jì)時(shí)器定時(shí)查詢

總線上的任一設(shè)備要求使用總線時(shí),通過BR線發(fā)出總線請(qǐng)求。中央仲裁器接到請(qǐng)求信號(hào)以后,在BS線為“0”的情況下讓計(jì)數(shù)器開始計(jì)數(shù),計(jì)數(shù)值通過一組地址線發(fā)向各設(shè)備。每個(gè)設(shè)備接口都有一個(gè)設(shè)備地址判別電路,當(dāng)?shù)刂肪€上的計(jì)數(shù)值與請(qǐng)求總線的設(shè)備地址相一致時(shí),該設(shè)備 置“1”BS線,獲得了總線使用權(quán),此時(shí)中止計(jì)數(shù)查詢。

每次計(jì)數(shù)可以從“0”開始,也可以從中止點(diǎn)開始。如果從“0”開始,各設(shè)備的優(yōu)先次序與鏈?zhǔn)讲樵兎ㄏ嗤瑑?yōu)先級(jí)的順序是固定的。如果從中止點(diǎn)開始,則每個(gè)設(shè)備使用總線的優(yōu)先級(jí)相等。

計(jì)數(shù)器的初值也可用程序來設(shè)置,這可以方便地改變優(yōu)先次序,但這種靈活性是以增加線數(shù)為代價(jià)的。

獨(dú)立請(qǐng)求

每一個(gè)共享總線的設(shè)備均有一對(duì)總線請(qǐng)求線BRi和總線授權(quán)線BGi。當(dāng)設(shè)備要求使用總線時(shí),便發(fā)出該設(shè)備的請(qǐng)求信號(hào)。中央仲裁器中的排隊(duì)電路決定首先響應(yīng)哪個(gè)設(shè)備的請(qǐng)求,給設(shè)備以授權(quán)信號(hào)BGi。

獨(dú)立請(qǐng)求方式的優(yōu)點(diǎn):響應(yīng)時(shí)間快,確定優(yōu)先響應(yīng)的設(shè)備所花費(fèi)的時(shí)間少,用不著一個(gè)設(shè)備接一個(gè)設(shè)備地查詢。其次,對(duì)優(yōu)先次序的控制相當(dāng)靈活,可以預(yù)先固定也可以通過程序來改變優(yōu)先次序;還可以用屏蔽(禁止)某個(gè)請(qǐng)求的辦法,不響應(yīng)來自無效設(shè)備的請(qǐng)求。

缺點(diǎn):設(shè)備連線多,總線控制復(fù)雜。


輸入輸出設(shè)備

常見的輸入輸出設(shè)備

鼠標(biāo)、鍵盤、掃描儀、顯示器等。

輸入輸出接口的通用設(shè)計(jì)

數(shù)據(jù)線
是I/O設(shè)備與主機(jī)之間進(jìn)行數(shù)據(jù)交換的傳送線 

單向傳輸數(shù)據(jù)線

雙向傳輸數(shù)據(jù)線
狀態(tài)線
IO設(shè)備狀態(tài)向主機(jī)報(bào)告的信號(hào)線 

查詢?cè)O(shè)備是否已經(jīng)正常連接并就緒 

查詢?cè)O(shè)備是否已經(jīng)被占用
命令線
CPU向設(shè)備發(fā)送命令的信號(hào)線 

發(fā)送讀寫信號(hào)

發(fā)送啟動(dòng)停止信號(hào)
設(shè)備選擇線
主機(jī)選擇I/O設(shè)備進(jìn)行操作的信號(hào)線 

對(duì)連在總線上的設(shè)備進(jìn)行選擇   

CPU與IO設(shè)備的通信

CPU和IO設(shè)備的速度是不一致的

程序中斷

提供低速設(shè)備通知CPU的一種異步的方式,CPU可以高速運(yùn)轉(zhuǎn)同時(shí)兼顧低速設(shè)備的響應(yīng)。

當(dāng)外圍IO設(shè)備準(zhǔn)備就緒時(shí),向CPU發(fā)送中斷信號(hào),CPU內(nèi)部有專門的電路響應(yīng)中斷信號(hào),CPU收到中斷信號(hào)后就會(huì)中斷當(dāng)前工作轉(zhuǎn)為處理外圍設(shè)備的工作。待工作完成后,CPU加載之前的工作,繼續(xù)處理。

DMA(直接存儲(chǔ)器訪問)

當(dāng)主存與IO設(shè)備交換信息時(shí),不需要中斷CPU,可以提高CPU的效率。一般計(jì)算機(jī)的硬盤與顯卡都有DMA設(shè)備。

image-20210223233726647

存儲(chǔ)器

存儲(chǔ)器的分類

image-20210224004720192
image-20210224004726664

存儲(chǔ)器的層次結(jié)構(gòu)

image-20210224000418297
緩存-主存層次

利用了局部性原理,在CPU和主存之間增加了一層速度快(容量?。┑腃ache,目的是為了解決主存速度不足的問題。

將程序經(jīng)常訪問的內(nèi)存置換到高速緩存即可。

局部性原理
局部性原理是指CPU訪問存儲(chǔ)器時(shí),無論是存取指令 還是存取數(shù)據(jù),所訪問的存儲(chǔ)單元都趨于聚集在一個(gè) 較小的連續(xù)區(qū)域中。
主存-輔存層次

利用了局部性原理,在主存之外增加輔助存儲(chǔ)器,目的是解決主存容量不足的問題。

將程序當(dāng)前使用的數(shù)據(jù)加載到主存,不使用的數(shù)據(jù)加載到輔存。

主存儲(chǔ)器與輔存儲(chǔ)器

主存

RAM(隨機(jī)存取存儲(chǔ)器:Random Access Memory)

RAM通過電容存儲(chǔ)數(shù)據(jù),必須隔一段時(shí)間刷新一次

如果掉電,那么一段時(shí)間后將丟失所有數(shù)據(jù)

32位系統(tǒng)主存大小為:2^32 =4×2^30 =4????

64位系統(tǒng)主存大小為:2^64 = 234 × 2^30 = 2^34????

輔存

表面是可磁化的硬磁特性材料

移動(dòng)磁頭徑向運(yùn)動(dòng)讀取磁道信息

磁盤調(diào)度算法

先來先服務(wù)算法 :按順序訪問進(jìn)程的磁道讀寫需求

最短尋道時(shí)間優(yōu)先:與磁頭當(dāng)前位置有關(guān),優(yōu)先訪問離磁頭最近的磁道

掃描算法(電梯算法) :每次只往一個(gè)方向移動(dòng),到達(dá)一個(gè)方向需要服務(wù)的盡頭再反方向移動(dòng)

循環(huán)掃描算法:每次只往一個(gè)方向移動(dòng),到盡頭后回到初始位繼續(xù)掃描


高速緩存

在存儲(chǔ)器的層次結(jié)構(gòu)中,高速緩存在CPU和主存之間,主要是為了解決CPU和主存速度不匹配的問題。

image-20210224003028615

高速緩存的工作原理

在往下看之前,先了解下下面的概念:

字: 指存放在一個(gè)存儲(chǔ)單元中的二進(jìn)制代碼組合
字塊:存儲(chǔ)在連續(xù)存儲(chǔ)單元中而被看作是一個(gè)單元的一組字

假設(shè)一個(gè)字有32位,一個(gè)字塊有A個(gè)字,主存共有B個(gè)字塊 
那么:主存總字?jǐn)?shù) = A * B ,主存總?cè)萘浚╞its) = A * B * 32

高速緩存的結(jié)構(gòu)和主存類似,但是主存的容量是遠(yuǎn)大于緩存的容量。

緩存中存儲(chǔ)的數(shù)據(jù)是主存中的一份復(fù)制,當(dāng)CPU需要的數(shù)據(jù)在緩存中,直接從緩存里拿,當(dāng)CPU需要的數(shù)據(jù)不在緩存中,則需要從主存里拿。

所以就有了兩個(gè)量化指標(biāo):

命中率:命中緩存的次數(shù)占CPU訪問次數(shù)的比例

訪問效率:訪問緩存時(shí)間和訪問緩存-主存平均時(shí)間之比

高速緩存的替換策略

當(dāng)CPU所需要的數(shù)據(jù)不在高速緩存中時(shí),就需要從主存載入數(shù)據(jù)到高速緩存。一般有四種替換策略。

隨機(jī)算法

隨機(jī)選取高速緩存中的一個(gè)位置再替換

先進(jìn)先出算法(FIFO)

把高速緩存看做是一個(gè)先進(jìn)先出的隊(duì)列,優(yōu)先替換最先進(jìn)入隊(duì)列的字塊

最不經(jīng)常使用算法(LFU)

優(yōu)先淘汰最不經(jīng)常使用的字塊,需要額外的空間記錄字塊的使用頻率

最近最少使用算法(LRU)

優(yōu)先淘汰一段時(shí)間內(nèi)沒有使用的字塊

有多種實(shí)現(xiàn)方法,一般使用雙向鏈表,把當(dāng)前訪問節(jié)點(diǎn)置于鏈表前面(保證鏈表頭部節(jié)點(diǎn)是最近使用的)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容