溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

計算機結(jié)構(gòu)

發(fā)布時間:2020-06-15 11:37:17 來源:網(wǎng)絡(luò) 閱讀:959 作者:佳嵌 欄目:系統(tǒng)運維

7.1 馮·諾依曼結(jié)構(gòu)

7.1.1 馮·諾依曼結(jié)構(gòu)的組成部分

1)輸入、輸出設(shè)備

1)輸入設(shè)備:向計算機輸入數(shù)據(jù),比如,

·通過攝像頭、MIC,將圖像/聲音等轉(zhuǎn)成二進制數(shù)據(jù)給計算機

·從網(wǎng)卡輸入數(shù)據(jù)給計算機等

·其它

2)輸出設(shè)備:從計算機輸出數(shù)據(jù),比如,

·通過顯示器、揚聲器,將二進制數(shù)據(jù)翻譯稱為圖片/視頻/聲音等供人能夠識別

·或者通過網(wǎng)卡輸出數(shù)據(jù)給別的計算機

·其它

 

2)存儲器:存儲程序和數(shù)據(jù)

3)運算器:進行算術(shù)運算和邏輯運算

4)控制器:解釋程序指令,將程序指令轉(zhuǎn)為對應(yīng)的一條一條的微指令,這些微指令會控制運算器等部件工作,進行比如,

·數(shù)據(jù)的算術(shù)、邏輯運算

·數(shù)據(jù)的搬移,比如從CPU的寄存器搬移到內(nèi)存,或者從內(nèi)存的某個位置搬移到內(nèi)存的另一個位置。

·等等

 

7.1.2 結(jié)構(gòu)圖計算機結(jié)構(gòu)

 

 

 

 

 

 

 

計算機結(jié)構(gòu) 

 

 

 

 

 

7.2 哈佛結(jié)構(gòu)

與馮諾·依曼結(jié)構(gòu)相對應(yīng)的是哈佛結(jié)構(gòu),我們會在后面詳細講解這兩種結(jié)構(gòu)之間的異同和優(yōu)缺,為了便于講解的方便,這邊還是以經(jīng)典的馮諾·依曼結(jié)構(gòu)為例,進行計算機組成結(jié)構(gòu)的介紹。

 

7.3 詳細結(jié)構(gòu)

7.3.1 詳細結(jié)構(gòu)圖(PC)

計算機結(jié)構(gòu) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.3.2  各部分簡述

計算機的詳細組成總體上可以分為三大部分,CPU,總線與接口、外部設(shè)備,核心部分主要就是cpu/總線,外部設(shè)備總體上分為輸入設(shè)備和輸出設(shè)備,而核心部分與外部設(shè)備通過接口連接。

 

1) cpu

1)運算器

a)作用:根據(jù)指令要求,數(shù)字電信號的二進制數(shù)據(jù),進行算術(shù)運算和邏輯運算,

b)運算器組成

·ALU:Arithmetic Logic Unit,術(shù)運算單元,進行算數(shù)運算和邏輯運算

·(通用)寄存器組:用于存放ALU在進行算術(shù)/邏輯運算時,運算過程中涉及到的一些中間值和計算結(jié)果值。

·乘商寄存器:專門用于存放乘法和除法運算中間值和結(jié)果值。

·CVZS:各種ALU運算需要用到的標志位

C:進位、借位標志,如果有進位或者借位,C=1,否則C=0。

C的應(yīng)用舉例:請寫匯編代碼計算13208 + 34535相加后的值。

答:為了便于編程時好理解,我們先將這兩個二進制的數(shù),轉(zhuǎn)為16進制,即OX3398+0X86E7。

匯編實現(xiàn)這兩個數(shù)的相加的大致步驟如下圖所示。

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

 

 

 

 

 

總結(jié):從這個例子就可以看出,C進位/借位標志位的作用,有關(guān)借位作用同理,就不再贅述。如果你想了解跟多,我們在  后面嵌入式技術(shù)課程中,在講有關(guān)匯編時,還會將這方面的內(nèi)容。當然我們這里在強調(diào)一點,我們學習匯編并不是為了

使用會變來進行開發(fā),而是通過匯編理解計算機的工作原理。

有些同學說,我用C語言的等高級語言寫代碼,這些標志位也會用的上嗎,也會用得上,百年一起在編譯時,C語言會被翻譯為匯編,翻譯為匯編后,進行加法的算術(shù)運算時,同樣會按照同樣的方式使用C進/借位標志位。

 

Z:運算結(jié)果是否為零標志,如果結(jié)果為0,Z=1,否者Z=0。

應(yīng)用舉例:比較兩數(shù)是否相等,比如a=3,b=3,判斷兩數(shù)是否相等,寫成匯編程序的話,實際上就是將兩數(shù)相減(算術(shù)運算),

如果Z=1表示a和b的值相等,否則不相等。

 

V:溢出標志,有溢出,V=1,V=0

1)什么是溢出

比如一個32位的寄存器,只有32位,所能裝的二進制的數(shù)的最大情況就是32個1,即11111111 11111111 11111111 11111111,如果再往里面加一個1的話,就向33為進1了,但是寄存器只有32為,不存在33為,溢出的哪個1不存在了,寄存器中的32個bit,全部是0,即00000000 00000000 00000000 00000000,因此溢出回事數(shù)值發(fā)生巨大突變,在真實的計算機中,溢出會導(dǎo)致數(shù)據(jù)的值發(fā)生錯誤,導(dǎo)致計算結(jié)果產(chǎn)生很大的問題。

 

2)為什么要檢查溢出

從上面的描述中,不難看出,溢出的檢查很有意義,通過基礎(chǔ)標志V的檢查,就可以知道數(shù)據(jù)有無溢出,如果沒有溢出證明數(shù)據(jù)是沒問題的,否者數(shù)據(jù)的值可能存在問題,需要做相應(yīng)的處理。

高級語言,比如C語言實現(xiàn)兩個很大數(shù)計算時,如果數(shù)據(jù)計算機結(jié)果因為太大而溢出,當你使用這個溢出的數(shù)據(jù)時,會有溢出提醒,這個溢出提醒就是通過,C語言程序被編譯后的匯編程序,檢查V這個溢出標志位得到的,我們在后面將C語言時,還會講到有關(guān)溢出事情。

 

S:有時用是N,當兩個有符號數(shù)進行運算時,S=1表示運算的結(jié)果為負數(shù),S=0表示運算的結(jié)果為正數(shù)或零。

應(yīng)用舉例:比較a、b兩數(shù)的大小,寫成程序的話,我們會讓兩個數(shù)進行減法減法運算,如果S=1,表示是一個負數(shù),說明a<b,如果S=0,說明a等于或者大于b,這個時候需要在查詢Z標志位,如果Z標志位為1,表示a等于b,否者說明a小于b。

 

2)cpu的控制器


a)作用:最重要的功能就是對指令進行譯碼,然后將指令轉(zhuǎn)成微指令,再由微指令控制計算機工作,比如    

· 控制ALU,讓ALU進行數(shù)據(jù)的算術(shù)、邏輯運算


· 進行數(shù)據(jù)的移動,比如從CPU的寄存器移到內(nèi)存中,或者從內(nèi)存的某個位置搬移到內(nèi)存的另一個位置。    

· 等等


b)控制器組成

· 程序計數(shù)器(PC):Program Counter,程序最開始運行時,PC里面放的是程序第一條指令在內(nèi)存中所在的地址,每運行一

條指令,PC里面的地址就會加1,指向下一個指令,如果一個指令的存放需要4個字節(jié),pc中的地址加1,實際上加的是4個字節(jié)。

 

· 指令寄存器(IR):Instruction Register,臨時存放從內(nèi)存中取得的,即將要被解釋運行的指令,指令由兩部分組成,


 

- 第一部分:操作碼,指明計算機需要執(zhí)行一個什么樣的動作,比如有些操作碼表示做加運算,有些表示要進行數(shù)據(jù)搬移。

 

- 第二部分:地址碼,

+ 直接是要被操作碼操作的數(shù)

+ 要被操作的數(shù)在內(nèi)存中所在的地址。

 

    MOV

偽指令  101001 1001010101

       操作碼  地址碼



· 指令譯碼器(ID):Instruction Decoder,解釋指令,解釋指令的過程為,

 

- 第一步:檢查指令的格式是否合法,是否夾有非法字符、或者非法詞組,有的話,譯碼將不會通過



- 第二步:如果指令被檢查合格了,會提取出操作碼,將操作碼翻譯為微指令,控制計算機各部分,按照操作碼的要求做事

 


· 控制存儲器:用于存放微指令程序(或稱微程序),每一操作碼都對應(yīng)著一個自己的微指令程序,控制存儲器中存放著所有操作碼

所對應(yīng)的微指令程序。


比如MOV(加運算)操作碼,就有自己的微指令程序,微指令程序是由一條條的微指令構(gòu)成的,在出廠時,這些微指令程序就被

固化在了控制存儲器中。

 


· 微指令寄存器:用于臨時存放微指令

2)總線與io接口

總線與接口的作用就是,將CPU和外部設(shè)備連接在一起。-----

1)三大高速總線


a)作用:高速通信線路,屬于CPU的高速公路

 

· 地址總線:傳輸?shù)刂沸盘?,比如通過傳輸?shù)刂沸盘?,找到要操作的?nèi)存單元等  

· 控制總線:傳輸控制信號

 

通過地址總線傳輸?shù)牡刂沸盘?,找到?nèi)存的某位置了,接下來到底是往里面寫數(shù)據(jù)呢,還是從里面讀數(shù)據(jù)呢,那就

要看具體的“指令”了,如果是寫指令,指令經(jīng)過譯碼器的譯碼后,會被轉(zhuǎn)為微指令,微指令會通過控制總線,向內(nèi)存發(fā)

控制信號,表示說,我希望向該內(nèi)存位置寫數(shù)據(jù)。


· 數(shù)據(jù)總線:傳輸數(shù)據(jù)信號

比如通過地址信號找到內(nèi)存的某個位置了,控制總線也發(fā)出了寫的控制信號,希望對該空間寫數(shù)據(jù),那么寫數(shù)據(jù)時,就需要

通過數(shù)據(jù)總線向該內(nèi)存空間傳輸數(shù)據(jù)信號的,內(nèi)存收到這個數(shù)據(jù)信號后,會將該數(shù)據(jù)信號鎖存到該內(nèi)存空間中,那么這樣就實現(xiàn)了

寫數(shù)據(jù)的過程。


b)三大高速總線是分開的

三大高速總線其實是可以合在一起的,但是合成一個的話會忙不過來的,通信的速率會非常低,分成三條總線就好比將高速公

路分成三個車道,不同車走不同的車道,互不相干,效率自然就高。

c)三大高速總線是并行通信的

使用并行通信的目的也是為了條通信效率。

d)三大高速總線所處位置  -------

三大高速總線位于CPU的內(nèi)部,通過CPU芯片的引腳與外部的IO橋連接在一起。

2)IO接口

a)作用:負責連接各種的輸入、輸出外部設(shè)備

b)每一個設(shè)備都會有屬于自己的IO接口

c)io接口也有地址、數(shù)據(jù)、控制三大線,


· io接口的地址線、數(shù)據(jù)線、控制線,大多數(shù)情況都是串行通信的,而且往往是復(fù)用的

 

比如USB通信,usb使用的就是串行通信的,常見的USB2.0有4根線,其中有兩根線,一個是正極電源線,另一個負極電源線,

其它兩根線被復(fù)用當作地址線、數(shù)據(jù)線、控制線使用。

 

· 不過內(nèi)存是一個特例,為了能夠提高內(nèi)存的訪問速度,內(nèi)存io接口的地址、數(shù)據(jù)、控制線都是獨立的,并且使用的是并行通信。

d)后面的linux驅(qū)動課程,主要涉及的就是IO接口相關(guān)的內(nèi)容

linux驅(qū)動就是講如何通過編寫驅(qū)動程序,去控制這些IO接口,實現(xiàn)與外部設(shè)備的通信,有關(guān)IO接口這一塊的知識,我們會在后面的

linux驅(qū)動技術(shù)課程部分詳細講解,所以,io接口是后面Linux驅(qū)動課程的核心內(nèi)容。

 


e)io接口所處的位置

· 在芯片的外部:比如pc機(個人電腦),所有IO接口基本都是在CPU芯片的外部      

· 集成在芯片內(nèi)部:比如像單片機,雖然有一部分也是在芯片外部,但是有很大部分IO接口是被直接集成于在了芯片的內(nèi)部。

 

 

3)IO橋

a)并不是計算機都需要IO橋

IO橋是PC機特有的,除了PC外的其它類的計算機,有些(單片機)就不使用IO橋。---------------

 


b)為什們會使用IO橋

其實是可以不使用IO橋的,沒有IO橋時,所有的“IO接口”都是直接掛接在三大高速總線上的,但是隨著發(fā)展,掛接的外部

設(shè)備越來越多,直接掛接在總線上,管理是一個麻煩,為了管理的便利,就加了IO橋,IO接口直接掛接在IO橋上,就由IO橋

來管理眾多的IO接口。

 

c)IO橋常常分為南橋和北橋

南橋?qū)?yīng)的就是一個南橋芯片,北橋?qū)?yīng)的就是一個北橋芯片,南北橋之間會有相互連接。 -----------


· 南橋:負責CPU與鼠標、鍵盤、磁盤等,通信速率較低的外部設(shè)備之間的通信。


· 北橋:負責CPU與內(nèi)存、顯示器等,通信速率要求較高的外設(shè)之間的通信。

 


d)io橋所處的位置

io橋指的就是南橋和北橋芯片,位于CPU芯片的外部。

 

 

 

 

 

 

 

 

 

 

 

 

 

4)地址、數(shù)據(jù)、控制線相互配合工作

 

a)例子:將內(nèi)存中地址0101字節(jié)的內(nèi)容讀出,寫到CPU通用寄存器R0(地址為1001)中,假設(shè)寄存器R0只有一個字節(jié)。

計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu)計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

計算機結(jié)構(gòu) 

 

 

 

步驟:

第一大步:從內(nèi)存0101的字節(jié),讀出數(shù)據(jù)

(1)cpu通過地址線發(fā)出0101這個地址信號,內(nèi)存的0101對應(yīng)的字節(jié)會被選中

(2)cpu解釋并執(zhí)行“讀指令”,發(fā)出“讀”的控制信號

計算機結(jié)構(gòu)計算機結(jié)構(gòu)通過控制線發(fā)送“讀”控制信號后,之前被選中的0101字節(jié),就被設(shè)置為了可讀,設(shè)置為可讀后,內(nèi)存0101字節(jié)中的數(shù)據(jù)2.5v 2.5v 0v 0v 2.5v 0v 0v 2.5v11001001)會被讀出,讀的過程,其實就是通過數(shù)據(jù)線將電信號導(dǎo)出,由于內(nèi)存的數(shù)據(jù)、地址、控制線是并行傳輸?shù)?,那么在并行?shù)據(jù)線上,此時擁有2.5v 2.5v 0v 0v 2.5v 0v 0v 2

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI