(计算机组成原理)第一章计算机系统概述-第二节:计算机硬件组成(存储器、运算器和控制器概述及计算机工作过程详解)
文章目錄
- 一:計算機(jī)層次結(jié)構(gòu)
- (1)早期的馮諾依曼機(jī)
- (2)現(xiàn)代計算機(jī)的組織結(jié)構(gòu)
- 二:計算機(jī)硬件概述
- (1)存儲器
- A:存儲元、存儲單元、存儲體、存儲字和存儲字長
- B:存儲器的基本結(jié)構(gòu)
- (2)運(yùn)算器
- A:運(yùn)算器基本結(jié)構(gòu)
- B:運(yùn)算器過程偽代碼描述
- (3)控制器
- A:指令
- B:控制器基本結(jié)構(gòu)
- C:控制器過程偽代碼描述
- 精華:計算機(jī)的工作過程
一:計算機(jī)層次結(jié)構(gòu)
(1)早期的馮諾依曼機(jī)
馮諾依曼機(jī)特點(diǎn)如下
其中,實(shí)線是數(shù)據(jù)線,虛線是控制線(雙向)。在這種層次結(jié)構(gòu)下,在控制器的指揮下,輸入和輸出設(shè)備輸入一些數(shù)據(jù)給運(yùn)算器進(jìn)行各種運(yùn)算,如果產(chǎn)生中間結(jié)果,就會給存儲器,計算完成結(jié)果給到輸出設(shè)備。可以發(fā)現(xiàn)這種層次結(jié)構(gòu)容易受到輸入和輸出設(shè)備的牽制,因?yàn)樗麄兊乃俣认噍^于運(yùn)算器太慢了,也即是短板效應(yīng)
(2)現(xiàn)代計算機(jī)的組織結(jié)構(gòu)
為了解決I/O設(shè)備的速度和CPU速度差異懸殊的問題,現(xiàn)如今的計算機(jī)則采用以存儲器為中心的計算機(jī)組織結(jié)構(gòu)
這種結(jié)果使I/O操作盡可能繞過CPU,直接在I/O設(shè)備和存儲器之間完成,以提高系統(tǒng)的整體運(yùn)行效率
二:計算機(jī)硬件概述
(1)存儲器
A:存儲元、存儲單元、存儲體、存儲字和存儲字長
目前我們采用半導(dǎo)體器件來承擔(dān)存儲任務(wù),一個半導(dǎo)體觸發(fā)器由于有0和1兩個狀態(tài),就可以記憶一個二進(jìn)制代碼。比如1個數(shù)需要用16位二進(jìn)制代碼表示,那么就需要有16個觸發(fā)器來保存這些代碼,這16個觸發(fā)器就是一個存儲單元。
串講:主存儲器由許多存儲單元組成,每個存儲單元包含多個存儲元,每個存儲元存儲1位二進(jìn)制代碼0或1,故存儲單元可存儲一串二進(jìn)制代碼,稱這串代碼為存儲字,而這串代碼的位數(shù)稱為存儲字長,存儲字長一般是一個字節(jié)(8位)或字節(jié)的偶數(shù)倍。同時許多存儲單元共同構(gòu)成了一個存儲體。
B:存儲器的基本結(jié)構(gòu)
存儲器分為主存(內(nèi)存)和輔存(外存)。CPU可以直接訪問的是主存,主存主要存放的是程序和數(shù)據(jù),是計算機(jī)實(shí)現(xiàn)“存儲程序”控制的基礎(chǔ);外存中信息必須加載進(jìn)主存后,CPU才可以訪問
主存最基本構(gòu)成如下:存儲體存放二進(jìn)制信息,MAR存放的是訪存地址(經(jīng)過地址譯碼后找到所選存儲單元);MBR存儲的是要從存儲器中讀入或?qū)懭氲男畔?/strong>。
【考點(diǎn)】
- 數(shù)據(jù)在存儲體中是按照地址存儲的,每個地址對應(yīng)一個存儲單元;
- 存儲單元數(shù)目=2MAR位數(shù)2^{MAR位數(shù)}2MAR位數(shù),例如如果MAR為10位,則存儲單元數(shù)目為210=10242^{10}=1024210=1024。它用于尋址,其長度和PC長度一致
- MDR的位數(shù)表示存儲字長,例如MDR為16,表示存儲字長為16,也表示1個字(word)=16bit
- 注意區(qū)分字(word)和字節(jié)(Byte),1個字節(jié)等于8個bit,而1個字的大小取決于機(jī)器
- 1B=1個字節(jié),1b=1個bit
(2)運(yùn)算器
運(yùn)算器是計算機(jī)的執(zhí)行部件,用于進(jìn)行算數(shù)運(yùn)算和邏輯運(yùn)算
- 算數(shù)運(yùn)算:比如加減乘除
- 邏輯運(yùn)算:比如與、或、非、異或、比較等等
A:運(yùn)算器基本結(jié)構(gòu)
其中ALU是運(yùn)算器造價最為高昂的部分,其實(shí)就是一堆復(fù)雜的電路
其余三個分別是寄存器,輔助ALU完成計算功能,作用如下了解即可
B:運(yùn)算器過程偽代碼描述
設(shè)M為主存中的某一個存儲單元,(M)表示取M中的數(shù)據(jù),->表示將內(nèi)容送入寄存器
加法實(shí)現(xiàn):假設(shè)ACC中已經(jīng)存在一個數(shù),那么首先取M的內(nèi)容送入操作數(shù)寄存器X,即(M)->X;然后兩者相加重新送入寄存器ACC中,即(ACC)+(M)->(ACC)
乘法實(shí)現(xiàn):假設(shè)ACC中已經(jīng)存在一個數(shù),那么首先取M的內(nèi)容送入乘商寄存器MQ作為乘數(shù),即(M)->MQ,再取ACC寄存器的內(nèi)容放入X寄存器作為被乘數(shù),即ACC->X,接著將ACC清零,即0->ACC,然后乘數(shù)乘以被乘數(shù),一個送入乘積高位,一個送入乘積低位,即(X)×(MQ)->ACC//MQ
除法實(shí)現(xiàn):假設(shè)ACC中已經(jīng)存在一個數(shù),首先取M的內(nèi)容送入X作為除數(shù),即(M)->X,ACC中的內(nèi)容作為被除數(shù),結(jié)果一個放入MQ作為整數(shù)部分,即(ACC)/(X)->MQ,另一個放入ACC作為余數(shù),即(ACC)%(X)->ACC
(3)控制器
控制器是計算機(jī)的指揮中心,由其指揮各部件自動協(xié)調(diào)地進(jìn)行工作
A:指令
計算機(jī)指令就是指揮機(jī)器工作的指示和命令,程序本質(zhì)就是一系列按照一定順序排列的指令
控制器靠指令指揮機(jī)器工作,人們用指令表達(dá)自己的意圖,并交給控制器執(zhí)行
指令=操作碼+地址碼
操作碼就是指示計算機(jī)要干什么,地址碼可以理解為干這些事情需要的原材料在哪里,比如主存中就有可能存儲一些我們需要用到的數(shù)據(jù),甚至可以是一些IO設(shè)備,比如鍵盤的地址
B:控制器基本結(jié)構(gòu)
控制器基本結(jié)構(gòu)如下
- 控制單元(CU):分析指令、發(fā)出信號、協(xié)調(diào)操作
- 指令寄存器(IR):存放當(dāng)前要執(zhí)行的指令,注意內(nèi)容來源于MDR,因?yàn)橹噶詈蛿?shù)據(jù)一樣也被存在存儲器
- 程序計數(shù)器(PC):存放當(dāng)前要執(zhí)行的指令地址, 與MAR直接連通,并且可以自動+1
C:控制器過程偽代碼描述
完成一條指令的過程為:取指令(PC)->分析指令(IR)->執(zhí)行指令(CU)
具體過程:首先取出指令,即(IR),接著獲取指令的操作碼,即OP(IR),然后獲取指令的地址碼,即AD(IR),然后將操作碼送入控制單元分析,即OP(IR)->CU,操作碼表示需要干什么,但是干活需要原材料,所以再把指令的地址碼送入MAR,AD(IR)->MAR,從MAR指示的存儲體取出原材料即可。
結(jié)合前面的加法,我們可以寫出完整的加法運(yùn)算的過程的: 首要取加法指令,而指令存儲在存儲體中,想要取出指令必須要知道的指令的地址,而這個地址就存放在PC中,PC又和MAR直接相連,即(PC)->MAR,于是指令此時被放入了MDR中,那么接著將指令放入IR中,即(MDR)->IR,接著取指令的操作碼送入控制單元,即OP(IR)->CU,然后再把原材料(就是一些操作數(shù))的地址碼送入MAR,即AD(IR)->MAR。接著就可以進(jìn)行加法操作了,由于上一步已經(jīng)將操作數(shù)的地址碼送入了MDR中,所以現(xiàn)在送入操作數(shù)寄存器,即(MDR)->X,然后(ACC)+(X)->ACC,最后PC要自增,即(PC)+1->PC,表示下一條指令
精華:計算機(jī)的工作過程
學(xué)習(xí)到這里,我們就可以從硬件到角度分析一下,看似簡單的C語言代碼,在背后計算機(jī)究竟做了多少事情
以下程序非常簡單,聲明了4個變量并賦值,然后在main函數(shù)內(nèi)進(jìn)行運(yùn)算
經(jīng)過編譯器編譯后,這段程序在主存中就是這樣的
- 下半部分是定義的變量,上半部分則是對應(yīng)于高級語言對應(yīng)的機(jī)器指令
為了方便演示,我們將控制器、運(yùn)算器和存儲體也放在旁邊
第一組
1:程序開始運(yùn)行,PC的值為0,保存的是第一條指令的地址。然后將PC的內(nèi)容,也就是指令的地址送入到MAR中,即(PC)->MAR,MAR=0。也就是說控制器向存儲器指明,我接下來要訪問主存0號地址處的數(shù)據(jù),同時告訴存儲器進(jìn)行讀操作
2+3:主存儲器會根據(jù)MAR記錄的地址信息,到存儲體中找出0號地址對應(yīng)的二進(jìn)制數(shù)據(jù),并將其放入到MDR中,此時MDR中存放了第一條指令。即M(MAR)->MDR,此時MDR=000001 0000000101
4:接著將MDR中的指令放入IR中,于是控制器就存放了當(dāng)前要執(zhí)行的指令。即(MDR)->IR,(IR)=000001 0000000101
5:這條指令的前6個比特位是地址碼,會被送入到控制單元CU中,CU分析后,得知這是一條取數(shù)命令。即OP(IR)->CU
6:取數(shù)指令會將變量a的內(nèi)容放入寄存器ACC中。但是現(xiàn)在變量a不知道在哪里,所以現(xiàn)在會把指令的地址碼送到MAR當(dāng)中,即(MAR)=5
7+8:接著主存儲器根據(jù)MAR指明的地址,也就是a的地址(5),去存儲體中找出5號地址的數(shù)據(jù),并將其放入MDR當(dāng)中。即M(MAR)->MDR,(MDR)=0000000000000010,也即(MDR)=2
9:接著在控制單元的指揮下,MDR中的數(shù)據(jù)就被放入到了ACC中。至此第一條指令完成
10:最后PC自增1,進(jìn)行下一條指令,即(PC)=1
接下來進(jìn)行下一組操作
1:程序接著運(yùn)行,PC的值為1,保存的是第二條指令的地址。然后將PC的內(nèi)容,也就是指令的地址送入到MAR中,即(PC)->MAR,MAR=1。也就是說控制器向存儲器指明,我接下來要訪問主存1號地址處的數(shù)據(jù),同時告訴存儲器進(jìn)行讀操作
2+3:主存儲器會根據(jù)MAR記錄的地址信息,到存儲體中找出1號地址對應(yīng)的二進(jìn)制數(shù)據(jù),并將其放入到MDR中,此時MDR中存放了第二條指令。即M(MAR)->MDR,此時MDR=000100 0000000110
4:接著將MDR中的指令放入IR中,于是控制器就存放了當(dāng)前要執(zhí)行的指令。即(MDR)->IR,(IR)=000100 0000000110
5:這條指令的前6個比特位是地址碼,會被送入到控制單元CU中,CU分析后,得知這是一條乘法命令。即OP(IR)->CU
6:接著把指令的地址碼送到MAR當(dāng)中,即(MAR)=6
7+8:接著主存儲器根據(jù)MAR指明的地址,也就是b的地址(6),去存儲體中找出6號地址的數(shù)據(jù),并將其放入MDR當(dāng)中。即M(MAR)->MDR,(MDR)=0000000000000011,也即(MDR)=3
9:由于是乘法,所以控制單元將MDR中的內(nèi)容送入到乘商寄存器MQ中,即(MDR)->MQ,此時(MQ)=0000000000000011=3
10:先把a(bǔ)的值放入通用寄存器X中,即(ACC)->X,(X)=2
11:CU告訴ALU,讓其進(jìn)行乘法運(yùn)算。即(MQ)×(X)->ACC,(ACC)=6。注意如果乘積過大,需要MQ輔助存儲,也就是最上面講到過的(X)×(MQ)->ACC//MQ
接著進(jìn)行下一組操作,具體過程就不詳細(xì)演示了,步驟如下
- 1:PC存儲2號指令的地址,(PC)->MAR,(MAR)=2
- 2+3:M(MAR)->MDR,(MDR)=000011 0000000111
- 4:(MDR)->IR,(IR)=000011 0000000111
- 5:OP(IR)->CU,CU分析操作碼,得知這是加法執(zhí)行
- 6:Ad(IR)->MAR,將指令的地址碼送入MAR,(MAR)=7
- 7+8:M(MAR)->MDR,(MDR)=00000000 00000001=1
- 9:(MDR)->x,(X)= 00000000 00000001=1
- 10:(ACC)+(X)->ACC,(ACC)->7,由ALU實(shí)現(xiàn)加法運(yùn)算
接著進(jìn)行下一組操作
- 1:(PC)->MAR,(MAR)=3
- 2+3:M(MAR)->MDR,MDR=000010 0000001000
- 4:(MDR)->IR,(IR)000010 0000001000
- **5:**OP(IR)->CU,CU分析得知,這是存數(shù)指令
- 6:AD(IR)->MAR,(MAR)=8
- 7+8:(ACC)->MDR,MDR=7
- 9:(MDR)->地址為8的存儲單元,導(dǎo)致y=7
最后再讀取到停機(jī)指令時,計算機(jī)通過中斷機(jī)制就結(jié)束了程序的運(yùn)行
總結(jié)
以上是生活随笔為你收集整理的(计算机组成原理)第一章计算机系统概述-第二节:计算机硬件组成(存储器、运算器和控制器概述及计算机工作过程详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文字处理的标签及属性
- 下一篇: 关于结对和团队组建