一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

計(jì)算機(jī)工作原理核心—CPU是如何執(zhí)行一個(gè)完整的運(yùn)行周期的?

 老胡說(shuō)科學(xué) 2024-11-19 發(fā)布于江蘇

今天我們將討論處理器。這可能是本系列中最復(fù)雜的內(nèi)容了。所以,一旦你理解了這些,你就完全掌握了。我們之前已經(jīng)制作了一個(gè)算術(shù)和邏輯單元(ALU),它接收二進(jìn)制數(shù)字并進(jìn)行計(jì)算。我們還制作了兩種類型的計(jì)算機(jī)存儲(chǔ)器:

  • 寄存器——小型線性存儲(chǔ)塊,用于存儲(chǔ)單個(gè)值;

  • 以及擴(kuò)展版的內(nèi)存模塊——RAM,一個(gè)可以在不同地址存儲(chǔ)大量數(shù)據(jù)的內(nèi)存。

現(xiàn)在是時(shí)候把這些組件整合起來(lái),構(gòu)建計(jì)算機(jī)的核心部分了,這就是中央處理單元(器)(Central Processing Unit),通常稱為CPU。

CPU的工作是執(zhí)行程序。像Microsoft Office、Safari或《半條命2》這樣的程序由一系列獨(dú)立的操作組成,被稱為指令,因?yàn)樗鼈儭爸甘尽庇?jì)算機(jī)該做什么。如果這些是數(shù)學(xué)指令,比如加法或減法,CPU會(huì)配置其ALU來(lái)執(zhí)行數(shù)學(xué)操作?;蛘咚赡苁谴鎯?chǔ)指令,在這種情況下,CPU會(huì)與內(nèi)存通信以讀取和寫入值。

CPU內(nèi)部有許多部件,我們將逐步構(gòu)建它的每個(gè)部分,重點(diǎn)放在功能模塊上,而不是每一根具體的導(dǎo)線。當(dāng)我們用一條線連接兩個(gè)組件時(shí),這只是所有必要導(dǎo)線的抽象表達(dá)。這種高級(jí)視圖被稱為微架構(gòu)。

首先,需要一些內(nèi)存。我們放入之前創(chuàng)建的RAM模塊。為了簡(jiǎn)化,我們假設(shè)它只有16個(gè)存儲(chǔ)位置,每個(gè)位置包含8位數(shù)據(jù)。

接著,為處理器提供四個(gè)8位寄存器,分別標(biāo)記為A、B、C和D,用于臨時(shí)存儲(chǔ)和處理數(shù)據(jù)。

我們已經(jīng)知道數(shù)據(jù)可以以二進(jìn)制值的形式存儲(chǔ)在內(nèi)存中,程序也可以存儲(chǔ)在內(nèi)存中。我們可以為每個(gè)CPU支持的指令分配一個(gè)ID。在這個(gè)示例中,前4位用于存儲(chǔ)操作代碼(opcode),后4位指定操作數(shù)據(jù)的位置——這可以是寄存器或內(nèi)存地址。

還需要兩個(gè)寄存器來(lái)完成CPU的構(gòu)建:

  1. 指令地址寄存器:用于跟蹤程序的當(dāng)前位置,存儲(chǔ)當(dāng)前指令的內(nèi)存地址。

  2. 指令寄存器:用于存儲(chǔ)當(dāng)前指令。

當(dāng)計(jì)算機(jī)首次啟動(dòng)時(shí),所有寄存器都初始化為0。

舉個(gè)例子,我們已經(jīng)在RAM中初始化了一個(gè)簡(jiǎn)單的計(jì)算機(jī)程序,我們將逐步講解它。

CPU的第一階段是取指令(Fetch Phase)

首先,我們將指令地址寄存器連接到RAM模塊。寄存器的值為0,因此RAM返回存儲(chǔ)在地址0的值——例如0010 1110。然后,這個(gè)值被復(fù)制到指令寄存器中。

接下來(lái)是指令解碼階段(Decode Phase),即確定指令的含義并準(zhǔn)備執(zhí)行。在此示例中,操作碼為0010,對(duì)應(yīng)于“LOAD A”指令,即將RAM中的值加載到寄存器A中。RAM地址是指令的最后四位1110(十進(jìn)制為14)。

指令由一個(gè)控制單元(Control Unit)解碼和解釋。像我們之前構(gòu)建的組件一樣,控制單元也是由邏輯門組成的。例如,要識(shí)別一條LOAD A指令,我們需要一個(gè)電路來(lái)檢查操作碼是否為0010,這可以用一些邏輯門來(lái)實(shí)現(xiàn)。

執(zhí)行階段(Execute Phase)
在得知當(dāng)前指令是LOAD A之后,我們可以執(zhí)行它。通過(guò)LOAD_A檢查電路的輸出,可以打開(kāi)RAM的讀取使能線,并將地址14發(fā)送到RAM模塊。RAM在該地址處檢索到的值是00000011(十進(jìn)制為3)。

因?yàn)檫@是LOAD A指令,我們需要確保該值僅保存到寄存器A中,而不會(huì)寫入其他寄存器。為此,我們將RAM的數(shù)據(jù)線連接到所有四個(gè)寄存器的數(shù)據(jù)輸入端,同時(shí)使用LOAD_A檢查電路只使能寄存器A的寫入功能。這樣,我們成功地將RAM地址14中的值加載到了寄存器A中。

完成這條指令后,可以關(guān)閉所有連接線路,準(zhǔn)備從內(nèi)存中獲取下一條指令。為此,我們將指令地址寄存器的值加1,完成執(zhí)行階段。

其他指令

LOAD_A只是CPU可以執(zhí)行的眾多指令之一。不同的指令由不同的解碼電路處理,這些電路配置CPU的各個(gè)組件以執(zhí)行相應(yīng)的操作。

為了簡(jiǎn)化,我們將所有解碼電路封裝為一個(gè)單一的控制單元(Control Unit),這是一個(gè)新的抽象層次??刂茊卧愃朴跇?lè)團(tuán)的指揮,協(xié)調(diào)CPU的各個(gè)部分協(xié)同工作。

完成一次完整的取指-解碼-執(zhí)行循環(huán)后,就可以從取指階段重新開(kāi)始。例如,此時(shí)指令地址寄存器的值變?yōu)?,因此RAM返回地址1處的值——0001 1111。

在解碼階段,操作碼0001對(duì)應(yīng)于LOAD B指令,即將RAM中的值加載到寄存器B中。這次的內(nèi)存地址是1111(十進(jìn)制為15)。執(zhí)行階段中,控制單元配置RAM讀取地址15,并將寄存器B設(shè)置為接收數(shù)據(jù)。最終,我們將值00001110(十進(jìn)制為14)成功存儲(chǔ)到了寄存器B中。完成此循環(huán)后,再次將指令地址寄存器的值加1。

加法指令(ADD)

下一條指令有所不同。假設(shè)取回的指令是1000 01 00。操作碼1000表示加法指令(ADD)。與之前的指令不同,這條指令使用兩組2位數(shù)據(jù),而不是4位的RAM地址。2位可以編碼4種值,因此足以選擇4個(gè)寄存器中的任意一個(gè)。第一組2位是01,對(duì)應(yīng)于寄存器B;第二組2位是00,對(duì)應(yīng)于寄存器A。因此,這條指令的含義是將寄存器B中的值加到寄存器A中。

執(zhí)行這條指令需要將ALU集成到CPU中。控制單元負(fù)責(zé)選擇正確的寄存器作為輸入,并配置ALU執(zhí)行正確的操作。對(duì)于這條加法指令,控制單元使能寄存器B,并將其值傳遞給ALU的第一個(gè)輸入;同時(shí)使能寄存器A,并將其值傳遞給ALU的第二個(gè)輸入。ALU可以執(zhí)行多種操作,因此控制單元必須通過(guò)傳遞加法操作碼來(lái)配置ALU執(zhí)行加法操作。

計(jì)算結(jié)果不能直接寫回寄存器A,因?yàn)檫@樣會(huì)導(dǎo)致新值再次被輸入ALU,形成自加循環(huán)。為避免這種情況,控制單元使用一個(gè)內(nèi)部寄存器臨時(shí)保存ALU的輸出,關(guān)閉ALU后,再將值寫入目標(biāo)寄存器。在這個(gè)例子中,輸入值是3和14,因此結(jié)果是17(二進(jìn)制為00010001),現(xiàn)在已存儲(chǔ)在寄存器A中。最后,將指令地址寄存器的值加1,完成本次循環(huán)。

存儲(chǔ)指令(STORE_A)

下一條指令是0100 1101。解碼后發(fā)現(xiàn),操作碼0100表示STORE_A指令,目標(biāo)地址是RAM中的13。執(zhí)行時(shí),將地址發(fā)送到RAM模塊,并啟用RAM的寫入功能。同時(shí),啟用寄存器A的讀取功能,利用數(shù)據(jù)線將寄存器A中的值傳遞到RAM中指定的地址。這樣,就完成了第一段程序的運(yùn)行!

這段程序的功能是從內(nèi)存加載兩個(gè)值,將它們相加,然后將結(jié)果存儲(chǔ)回內(nèi)存。

通過(guò)逐步講解每一步,我手動(dòng)讓CPU完成了取指、解碼和執(zhí)行的各個(gè)階段。但每臺(tái)計(jì)算機(jī)內(nèi)部并沒(méi)有一個(gè)微型的“我”在手動(dòng)操作這些步驟。保持CPU按節(jié)奏運(yùn)行的責(zé)任交給了一個(gè)叫**時(shí)鐘(Clock)**的組件。

時(shí)鐘的作用

顧名思義,時(shí)鐘以精確且固定的時(shí)間間隔觸發(fā)電信號(hào)??刂茊卧褂眠@一信號(hào)推進(jìn)CPU的內(nèi)部操作,使所有部件保持同步——就像一艘羅馬戰(zhàn)船上的鼓手有節(jié)奏地?fù)艄?,確保每個(gè)劃槳手動(dòng)作一致,或者像節(jié)拍器一樣。

當(dāng)然,時(shí)鐘的速度不能太快,因?yàn)榧词故请娦盘?hào)也需要時(shí)間在電線上傳輸并穩(wěn)定下來(lái)。CPU執(zhí)行取指-解碼-執(zhí)行周期每一步的速度被稱為時(shí)鐘頻率(Clock Speed),用赫茲(Hertz)作為單位。一赫茲表示每秒完成一個(gè)周期。

早期CPU的發(fā)展

第一款單芯片CPU是1971年發(fā)布的Intel 4004,這是一款4位CPU。它的微架構(gòu)實(shí)際上和我們今天討論的例子非常相似。盡管它是第一款此類處理器,其時(shí)鐘頻率高達(dá)740千赫茲——也就是每秒740,000個(gè)周期。你可能覺(jué)得這已經(jīng)很快了,但和我們今天使用的處理器相比,它微不足道。1兆赫茲等于每秒1百萬(wàn)個(gè)時(shí)鐘周期,而你的電腦或手機(jī),其處理器的頻率無(wú)疑達(dá)到了幾千兆赫茲,也就是每秒數(shù)十億個(gè)時(shí)鐘周期。

超頻和降頻

你可能聽(tīng)說(shuō)過(guò)有人“超頻(overclocking)”他們的計(jì)算機(jī)。這是指通過(guò)修改時(shí)鐘信號(hào)來(lái)加快CPU的運(yùn)行速度,就像鼓手在戰(zhàn)船需要撞擊另一艘船時(shí)加快節(jié)奏一樣。芯片制造商通常設(shè)計(jì)CPU時(shí)會(huì)預(yù)留一些容差,以允許一定程度的超頻。但如果超頻過(guò)度,可能導(dǎo)致CPU過(guò)熱,或者信號(hào)跟不上時(shí)鐘節(jié)奏,從而出現(xiàn)錯(cuò)誤的結(jié)果。

雖然很少聽(tīng)到“降頻(underclocking)”,但它實(shí)際上非常實(shí)用。當(dāng)不需要CPU以全速運(yùn)行時(shí),比如用戶離開(kāi)計(jì)算機(jī)或者運(yùn)行的是一個(gè)負(fù)載較輕的程序,通過(guò)降低CPU速度可以節(jié)省大量電能。這對(duì)于依賴電池供電的設(shè)備(如筆記本電腦和智能手機(jī))尤為重要。

動(dòng)態(tài)頻率調(diào)整(Dynamic Frequency Scaling)

為了滿足不同需求,許多現(xiàn)代處理器可以根據(jù)負(fù)載情況增加或減少其時(shí)鐘頻率,這被稱為動(dòng)態(tài)頻率調(diào)整。這種技術(shù)在確保性能的同時(shí),顯著提高了能源效率。

總結(jié):完成CPU的構(gòu)建

隨著時(shí)鐘的加入,CPU構(gòu)建完成了?,F(xiàn)在,我們可以將其封裝成一個(gè)獨(dú)立的組件。這是又一個(gè)新的抽象層次!CPU和RAM通過(guò)地址線、數(shù)據(jù)線和使能線進(jìn)行通信。盡管我們?cè)O(shè)計(jì)的CPU是一個(gè)簡(jiǎn)化的例子,但其中討論的許多基本機(jī)制仍然可以在現(xiàn)代處理器中找到。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    天堂网中文字幕在线视频| 国产色一区二区三区精品视频| 日韩人妻精品免费一区二区三区 | 成人精品国产亚洲av久久| 国产水滴盗摄一区二区| 91欧美亚洲视频在线| 国产不卡最新在线视频| 日韩欧美综合中文字幕| 久久99青青精品免费| 日韩国产亚洲欧美激情| 肥白女人日韩中文视频| 欧美人妻少妇精品久久性色| 国内欲色一区二区三区| 日韩人妻少妇一区二区| 激情综合五月开心久久| 大伊香蕉一区二区三区| 久久女同精品一区二区| 欧洲偷拍视频中文字幕| 国产精品美女午夜视频| 欧美成人免费视频午夜色| 在线欧美精品二区三区| 成人精品一区二区三区在线| 亚洲淫片一区二区三区| 日本办公室三级在线观看| 绝望的校花花间淫事2| 欧美不卡一区二区在线视频| 亚洲高清一区二区高清| 99久久国产精品亚洲| 午夜精品麻豆视频91| 国产又粗又爽又猛又黄的| 在线视频免费看你懂的| 中文字幕禁断介一区二区| 国产精品午夜一区二区三区 | 国产女优视频一区二区| 麻豆tv传媒在线观看| 亚洲国产精品无遮挡羞羞| 亚洲一区二区三区四区| 黑人粗大一区二区三区| 日本加勒比不卡二三四区| 日本婷婷色大香蕉视频在线观看 | 国产精品一区二区传媒蜜臀|