0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPU內(nèi)部到底是如何工作的呢?

h1654155971.8456 ? 來源:巢影字幕組 ? 作者:巢影字幕組 ? 2021-04-04 14:36 ? 次閱讀

眾所周知CPU是中央處理器,它是控制處理中心,我們的電腦、手機(jī)電子產(chǎn)品都離不開CPU。

那么,CPU內(nèi)部到底是如何工作的呢?我們一起來看看。

1

當(dāng)我們用電腦拼命工作的時候,殊不知電腦也在拼命的工作。

我們打開機(jī)箱,就會看見電腦的主板,也可以看到風(fēng)扇在不停地轉(zhuǎn)動,風(fēng)扇下面就是CPU,它不停地在和內(nèi)存進(jìn)行數(shù)據(jù)的通訊,就像我們的大腦。

CPU是由很多很多晶體管構(gòu)成的,主要有控制器,運(yùn)算器,寄存器幾個部分。而寄存器又分為數(shù)字寄存器,指令寄存器,指令地址寄存器。假設(shè)有四個數(shù)字寄存器,它們可以存放臨時的數(shù)據(jù)。右邊的是內(nèi)存,還有16個存儲位置,每個位置有8位bit。

2

CPU和內(nèi)存之間究竟是如何工作的呢?

當(dāng)我們啟動電腦時,所有的寄存器都從零開始。假設(shè)內(nèi)存存放了一個簡單的計(jì)算機(jī)程序,CPU操作的第一階段為“取指令”,也就是我們獲得第一個指令的過程。

首先,指定地址寄存器連到內(nèi)存,寄存器的值為零。內(nèi)存返回地址0中的值00101110。該值復(fù)制到指定寄存器中,然后由CPU開始解析該指令,以便執(zhí)行什么樣的操作。這個步驟稱它為“解碼”。

該指定前四位為操作代碼,后四位為操作代碼來自哪里?由于前四位為操作代碼0010,對應(yīng)我們的指令集,0010是讀內(nèi)存放入寄存器A中,后四位是內(nèi)存的地址1110。即十進(jìn)制的數(shù)字14。

3fb4a33e-8cec-11eb-8b86-12bb97331649.gif

接著,用一些邏輯門電路來檢查該操作碼是否與0010匹配,輸出為1,表示匹配成功。接下來執(zhí)行該指令,也就是執(zhí)行過程。

通過邏輯門電路檢查電路輸出,打開內(nèi)存的讀取線,找到內(nèi)存1110的地址14,讀取該地址的值00000011,下一步把該值存儲到寄存器A中,我們通過數(shù)據(jù)線連接到4個數(shù)字寄存器,CPU通過指令開啟數(shù)據(jù)寄存器A允許寫入。該數(shù)據(jù)被寫入到寄存器A中,我們已完成了該指令。

408617a2-8cec-11eb-8b86-12bb97331649.gif

現(xiàn)在關(guān)掉所有的線,準(zhǔn)備從內(nèi)存中讀取下一條指令。指令地址增加1,內(nèi)存返回地址1的值00011111,復(fù)制到指令寄存器。再到解碼的過程,通過指定集,指定前四位0001,它表示讀內(nèi)存存儲到寄存器B中,這次內(nèi)存地址是1111,對應(yīng)十進(jìn)制尾數(shù)為15,到執(zhí)行的過程,開啟內(nèi)存讀取線,找到內(nèi)存15地址,讀取該地址的值。并通過數(shù)據(jù)線把該值00001110存儲到寄存器B中,最后將指定地址寄存器增加1,關(guān)閉所有的線。

現(xiàn)在內(nèi)存返回地址2的值10000100放入指令寄存器CPU從指定集開始解碼,操作碼1000是加法指令。添加兩個寄存器存儲到第二個存儲器中,該指定有兩種,前兩位01對應(yīng)的寄存器B,后兩位00對應(yīng)寄存器A,因此10000100是指寄存器B中的值添加到寄存器A中。

40f97de6-8cec-11eb-8b86-12bb97331649.gif

將寄存器A、B連接到運(yùn)算器的輸入端,運(yùn)算器執(zhí)行加法運(yùn)算,關(guān)閉運(yùn)算器輸出的結(jié)果保存在寄存器A中。00010001就是輸入的值是3和14兩個值的和等于17,接下來指定地址增加1,完成這個過程,找到內(nèi)存地址3的值。

我們打開指令集開始解碼,0100表示讀A寄存器到內(nèi)存,1101對應(yīng)內(nèi)存地址是13,然后將寄存器A的值,通過數(shù)據(jù)線送到內(nèi)存13的地址上。

413fd3fe-8cec-11eb-8b86-12bb97331649.gif

3

我們剛剛運(yùn)行的計(jì)算機(jī)的程序,它從內(nèi)存中加載兩個值相加,然后把結(jié)果放入內(nèi)存,也就是CPU的取指令、解碼、執(zhí)行過程。我們電腦的系統(tǒng)是要很多很多的小程序組成,CPU也就不斷的在循環(huán)這個過程。

每個CPU執(zhí)行這個過程的速度不一樣,這個速度是由CPU主頻即CPU工作頻率決定,它決定著CPU的快慢。

原文標(biāo)題:CPU是如何做到數(shù)據(jù)通信的?

文章出處:【微信公眾號:EDA365】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209362
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5880

    瀏覽量

    135314
  • 中央處理器
    +關(guān)注

    關(guān)注

    1

    文章

    123

    瀏覽量

    16442

原文標(biāo)題:CPU是如何做到數(shù)據(jù)通信的?

文章出處:【微信號:eda365wx,微信公眾號:EDA365電子論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    功放和運(yùn)放到底是什么區(qū)別?

    想請問一下功放和運(yùn)放到底是什么區(qū)別,感覺只要接一個小負(fù)載,運(yùn)放的輸出電流也可以很大啊?到底有什么區(qū)別啊
    發(fā)表于 09-10 07:00

    運(yùn)放的輸入電容到底是什么?

    我想請問一下運(yùn)放的輸入電容到底是什么?
    發(fā)表于 09-04 06:52

    運(yùn)放旁路電容必須靠近芯片引腳的原因到底是什么

    運(yùn)放旁路電容必須靠近芯片引腳的原因到底是什么?有的說是怕走線的電感與旁路電容形成諧振,旁路電容靠近運(yùn)放的時候走線的電感不應(yīng)該更大了嗎(走線越長,走線的寄生電感也就越大)
    發(fā)表于 08-01 06:56

    共享單車到底是什么通信原理

    我們經(jīng)常騎的共享單車到底是什么通信原理,有人了解過嗎? 一、智能車鎖 共享單車最核心的硬件是智能車鎖,主要用于實(shí)現(xiàn)控制和定位功能。
    發(fā)表于 04-09 10:33 ?630次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理

    共享單車到底是什么通信原理?

    我們經(jīng)常騎的共享單車到底是什么通信原理,有人了解過嗎?下面寶藍(lán)小編就帶大家了解下。
    的頭像 發(fā)表于 02-25 10:32 ?1133次閱讀
    共享單車<b class='flag-5'>到底是</b>什么通信原理?

    到底是什么決定了二極管的最高工作頻率?

    相信各位硬件工程師,應(yīng)該都用過二極管吧,這里也許有一個誤區(qū),大多數(shù)人可能并不知道,或者說是理解有問題,下面就來細(xì)細(xì)說一下。 先拋出一個問題: 到底是什么決定了二極管的最高工作頻率? 估計(jì)有不少人會
    的頭像 發(fā)表于 12-02 07:40 ?2004次閱讀
    <b class='flag-5'>到底是</b>什么決定了二極管的最高<b class='flag-5'>工作</b>頻率?

    AD8606到底是單電源供電還是雙電源供電?

    為什么AD8606 的datasheet 上寫的是單電源供地 (2.7V~5.5V),但是 ADI 的 應(yīng)用筆記(CN0272)上AD8605的供地確實(shí)±5V?? 到底是單電源供地還是雙電源供電???雙電源供電不會壞掉嗎??
    發(fā)表于 11-24 06:47

    請問AD8603的電源供電范圍到底是多少

    ADI官網(wǎng)上的數(shù)據(jù)手冊給出的電源電壓為1.8V-5V 但在ADI參考電路合集1中的AD8603采用15V電源供電 請問AD8603的電源供電范圍到底是多少?
    發(fā)表于 11-15 08:15

    呼吸燈到底是如何影響人的視覺的?

    呼吸燈到底是通過使燈快速亮滅還是改變平均電壓來影響人的視覺的
    發(fā)表于 11-08 06:04

    請問單片機(jī)的中斷系統(tǒng)到底是什么?

    中斷系統(tǒng)到底是什么?還搞不定
    發(fā)表于 11-07 07:40

    上拉電阻到底是咋完成上拉的???

    上拉電阻到底是咋完成上拉的啊
    發(fā)表于 10-31 06:52

    什么是虛擬線程?虛擬線程到底是做什么用的?

    虛擬線程是在Java并發(fā)領(lǐng)域添加的一個新概念,那么虛擬線程到底是做什么用的?
    的頭像 發(fā)表于 10-29 10:23 ?2922次閱讀
    什么是虛擬線程?虛擬線程<b class='flag-5'>到底是</b>做什么用的<b class='flag-5'>呢</b>?

    PGO到底是什么?PGO如何提高應(yīng)用程序性能?

    PGO到底是什么?PGO如何提高應(yīng)用程序性能? PGO,全稱為Profile Guided Optimization,譯為“基于特征優(yōu)化”的技術(shù),是一種通過利用應(yīng)用程序的運(yùn)行特征數(shù)據(jù)來優(yōu)化
    的頭像 發(fā)表于 10-26 17:37 ?1872次閱讀

    單片機(jī)的“性能”到底是什么?

    單片機(jī)的“性能”到底是什么?
    的頭像 發(fā)表于 10-24 16:58 ?453次閱讀
    單片機(jī)的“性能”<b class='flag-5'>到底是</b>什么?

    AT指令,AT固件,這個AT到底是什么意思?

    我們常說AT指令,AT固件,這個AT到底是什么意思?
    發(fā)表于 09-26 07:25