眾所周知CPU是中央處理器,它是控制處理中心,我們的電腦、手機(jī)等電子產(chǎn)品都離不開(kāi)CPU。
那么,CPU內(nèi)部到底是如何工作的呢?我們一起來(lái)看看。
1
當(dāng)我們用電腦拼命工作的時(shí)候,殊不知電腦也在拼命的工作。
我們打開(kāi)機(jī)箱,就會(huì)看見(jiàn)電腦的主板,也可以看到風(fēng)扇在不停地轉(zhuǎn)動(dòng),風(fēng)扇下面就是CPU,它不停地在和內(nèi)存進(jìn)行數(shù)據(jù)的通訊,就像我們的大腦。
CPU是由很多很多晶體管構(gòu)成的,主要有控制器,運(yùn)算器,寄存器幾個(gè)部分。而寄存器又分為數(shù)字寄存器,指令寄存器,指令地址寄存器。假設(shè)有四個(gè)數(shù)字寄存器,它們可以存放臨時(shí)的數(shù)據(jù)。右邊的是內(nèi)存,還有16個(gè)存儲(chǔ)位置,每個(gè)位置有8位bit。
2
CPU和內(nèi)存之間究竟是如何工作的呢?
當(dāng)我們啟動(dòng)電腦時(shí),所有的寄存器都從零開(kāi)始。假設(shè)內(nèi)存存放了一個(gè)簡(jiǎn)單的計(jì)算機(jī)程序,CPU操作的第一階段為“取指令”,也就是我們獲得第一個(gè)指令的過(guò)程。
首先,指定地址寄存器連到內(nèi)存,寄存器的值為零。內(nèi)存返回地址0中的值00101110。該值復(fù)制到指定寄存器中,然后由CPU開(kāi)始解析該指令,以便執(zhí)行什么樣的操作。這個(gè)步驟稱它為“解碼”。
該指定前四位為操作代碼,后四位為操作代碼來(lái)自哪里?由于前四位為操作代碼0010,對(duì)應(yīng)我們的指令集,0010是讀內(nèi)存放入寄存器A中,后四位是內(nèi)存的地址1110。即十進(jìn)制的數(shù)字14。

接著,用一些邏輯門電路來(lái)檢查該操作碼是否與0010匹配,輸出為1,表示匹配成功。接下來(lái)執(zhí)行該指令,也就是執(zhí)行過(guò)程。
通過(guò)邏輯門電路檢查電路輸出,打開(kāi)內(nèi)存的讀取線,找到內(nèi)存1110的地址14,讀取該地址的值00000011,下一步把該值存儲(chǔ)到寄存器A中,我們通過(guò)數(shù)據(jù)線連接到4個(gè)數(shù)字寄存器,CPU通過(guò)指令開(kāi)啟數(shù)據(jù)寄存器A允許寫入。該數(shù)據(jù)被寫入到寄存器A中,我們已完成了該指令。

現(xiàn)在關(guān)掉所有的線,準(zhǔn)備從內(nèi)存中讀取下一條指令。指令地址增加1,內(nèi)存返回地址1的值00011111,復(fù)制到指令寄存器。再到解碼的過(guò)程,通過(guò)指定集,指定前四位0001,它表示讀內(nèi)存存儲(chǔ)到寄存器B中,這次內(nèi)存地址是1111,對(duì)應(yīng)十進(jìn)制尾數(shù)為15,到執(zhí)行的過(guò)程,開(kāi)啟內(nèi)存讀取線,找到內(nèi)存15地址,讀取該地址的值。并通過(guò)數(shù)據(jù)線把該值00001110存儲(chǔ)到寄存器B中,最后將指定地址寄存器增加1,關(guān)閉所有的線。
現(xiàn)在內(nèi)存返回地址2的值10000100放入指令寄存器CPU從指定集開(kāi)始解碼,操作碼1000是加法指令。添加兩個(gè)寄存器存儲(chǔ)到第二個(gè)存儲(chǔ)器中,該指定有兩種,前兩位01對(duì)應(yīng)的寄存器B,后兩位00對(duì)應(yīng)寄存器A,因此10000100是指寄存器B中的值添加到寄存器A中。

將寄存器A、B連接到運(yùn)算器的輸入端,運(yùn)算器執(zhí)行加法運(yùn)算,關(guān)閉運(yùn)算器輸出的結(jié)果保存在寄存器A中。00010001就是輸入的值是3和14兩個(gè)值的和等于17,接下來(lái)指定地址增加1,完成這個(gè)過(guò)程,找到內(nèi)存地址3的值。
我們打開(kāi)指令集開(kāi)始解碼,0100表示讀A寄存器到內(nèi)存,1101對(duì)應(yīng)內(nèi)存地址是13,然后將寄存器A的值,通過(guò)數(shù)據(jù)線送到內(nèi)存13的地址上。

3
我們剛剛運(yùn)行的計(jì)算機(jī)的程序,它從內(nèi)存中加載兩個(gè)值相加,然后把結(jié)果放入內(nèi)存,也就是CPU的取指令、解碼、執(zhí)行過(guò)程。我們電腦的系統(tǒng)是要很多很多的小程序組成,CPU也就不斷的在循環(huán)這個(gè)過(guò)程。
每個(gè)CPU執(zhí)行這個(gè)過(guò)程的速度不一樣,這個(gè)速度是由CPU主頻即CPU工作頻率決定,它決定著CPU的快慢。
原文標(biāo)題:CPU是如何做到數(shù)據(jù)通信的?
文章出處:【微信公眾號(hào):EDA365】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
cpu
+關(guān)注
關(guān)注
68文章
11277瀏覽量
224956 -
通信
+關(guān)注
關(guān)注
18文章
6391瀏覽量
140038 -
中央處理器
+關(guān)注
關(guān)注
1文章
126瀏覽量
17098
原文標(biāo)題:CPU是如何做到數(shù)據(jù)通信的?
文章出處:【微信號(hào):eda365wx,微信公眾號(hào):EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MOS管到底是什么?和三極管、繼電器有什么本質(zhì)區(qū)別?
那么龍芯CPU性能如何呢?
IGBT到底是什么?-從名稱入手來(lái)帶您了解
請(qǐng)問(wèn)Keil中的map文件到底是什么意思?
單片機(jī)和嵌入式,到底是什么關(guān)系?
單片機(jī)的差分信號(hào)到底是什么?
浮思特 | 紅外激光模組工作原理:科技的神奇之處
晶振的 “負(fù)載電容” 到底是什么
請(qǐng)問(wèn)編譯純r(jià)tos到底是選擇Linux+rtos的sdk編譯only rtos還是直接使用rtos sdk?
智能盒子到底是什么東西?昇騰310深度測(cè)評(píng):為何能成為行業(yè)新寵?
一文給你講透!DA板卡到底是什么?它和主板又有哪些不同?
國(guó)產(chǎn)CPU處理器性能實(shí)測(cè):龍芯/海光/兆芯/華頡VS英特爾和AMD,這份對(duì)比太真實(shí)!
【國(guó)產(chǎn)信創(chuàng)CPU全攻略】分享國(guó)產(chǎn)CPU品牌排行榜!從排名到避坑!
CPU內(nèi)部到底是如何工作的呢?
評(píng)論