日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CPU处理器架构和工作原理浅析

發(fā)布時(shí)間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CPU处理器架构和工作原理浅析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

匯編語(yǔ)言是學(xué)習(xí)計(jì)算機(jī)如何工作的很好的工具,它需要我們具備計(jì)算機(jī)硬件的工作知識(shí)。

?

基本微機(jī)設(shè)計(jì)

下圖給出了假想機(jī)的基本設(shè)計(jì)。中央處理單元(CPU)是進(jìn)行算術(shù)和邏輯操作的部件,包含了有限數(shù)量的存儲(chǔ)位置——寄存器(register),一個(gè)高頻時(shí)鐘、一個(gè)控制單元和一個(gè)算術(shù)邏輯單元。

其中:

  • 時(shí)鐘 (clock) 對(duì) CPU 內(nèi)部操作與系統(tǒng)其他組件進(jìn)行同步。
  • 控制單元 (control unit, CU) 協(xié)調(diào)參與機(jī)器指令執(zhí)行的步驟序列。
  • 算術(shù)邏輯單元 (arithmetic logic unit, ALU) 執(zhí)行算術(shù)運(yùn)算,如加法和減法,以及邏輯運(yùn)算,如 AND(與)、OR(或)和 NOT(非)。

CPU 通過(guò)主板上 CPU 插座的引腳與計(jì)算機(jī)其他部分相連。大部分引腳連接的是數(shù)據(jù)總線(xiàn)、控制總線(xiàn)和地址總線(xiàn)。

內(nèi)存存儲(chǔ)單元 (memory storage unit) 用于在程序運(yùn)行時(shí)保存指令與數(shù)據(jù)。它接受來(lái)自 CPU 的數(shù)據(jù)請(qǐng)求,將數(shù)據(jù)從隨機(jī)存儲(chǔ)器 (RAM) 傳輸?shù)?CPU,并從 CPU 傳輸?shù)絻?nèi)存。

由于所有的數(shù)據(jù)處理都在 CPU 內(nèi)進(jìn)行,因此保存在內(nèi)存中的程序在執(zhí)行前需要被復(fù)制到 CPU 中。程序指令在復(fù)制到 CPU 時(shí),可以一次復(fù)制一條,也可以一次復(fù)制多條。

總線(xiàn) (bus) 是一組并行線(xiàn),用于將數(shù)據(jù)從計(jì)算機(jī)一個(gè)部分傳送到另一個(gè)部分。一個(gè)計(jì)算機(jī)系統(tǒng)通常包含四類(lèi)總線(xiàn):數(shù)據(jù)類(lèi)、I/O 類(lèi)、控制類(lèi)和地址類(lèi)。

數(shù)據(jù)總線(xiàn) (data bus) 在 CPU 和內(nèi)存之間傳輸指令和數(shù)據(jù)。I/O 總線(xiàn)在 CPU 和系統(tǒng)輸入 / 輸出設(shè)備之間傳輸數(shù)據(jù)。控制總線(xiàn) (control bus) 用二進(jìn)制信號(hào)對(duì)所有連接在系統(tǒng)總線(xiàn)上設(shè)備的行為進(jìn)行同步。當(dāng)前執(zhí)行指令在 CPU 和內(nèi)存之間傳輸數(shù)據(jù)時(shí),地址總線(xiàn) (address bus) 用于保持指令和數(shù)據(jù)的地址。

時(shí)鐘與 CPU 和系統(tǒng)總線(xiàn)相關(guān)的每一個(gè)操作都是由一個(gè)恒定速率的內(nèi)部時(shí)鐘脈沖來(lái)進(jìn)行同步。機(jī)器指令的基本時(shí)間單位是機(jī)器周期 (machine cycle) 或時(shí)鐘周期 (clock cycle)。

一個(gè)時(shí)鐘周期的時(shí)長(zhǎng)是一個(gè)完整時(shí)鐘脈沖所需要的時(shí)間。下圖中,一個(gè)時(shí)鐘周期被描繪為兩個(gè)相鄰下降沿之間的時(shí)間:

時(shí)鐘周期持續(xù)時(shí)間用時(shí)鐘速度的倒數(shù)來(lái)計(jì)算,而時(shí)鐘速度則用每秒振蕩數(shù)來(lái)衡量。例如,一個(gè)每秒振蕩 10 億次 (1GHz) 的時(shí)鐘,其時(shí)鐘周期為 10 億分之 1 秒 (1 納秒 )。

執(zhí)行一條機(jī)器指令最少需要 1 個(gè)時(shí)鐘周期,有幾個(gè)需要的時(shí)鐘則超過(guò)了 50 個(gè)(比如 8088 處理器中的乘法指令)。由于在 CPU、系統(tǒng)總線(xiàn)和內(nèi)存電路之間存在速度差異,因此,需要訪問(wèn)內(nèi)存的指令常常需要空時(shí)鐘周期,也被稱(chēng)為等待狀態(tài) (wait states)。

指令執(zhí)行周期

一條機(jī)器指令不會(huì)神奇地一下就執(zhí)行完成。CPU 在執(zhí)行一條機(jī)器指令時(shí),需要經(jīng)過(guò)一系列預(yù)先定義好的步驟,這些步驟被稱(chēng)為指令執(zhí)行周期 (instruction execution cycle)。

假設(shè)現(xiàn)在指令指針寄存器中已經(jīng)有了想要執(zhí)行指令的地址,下面就是執(zhí)行步驟:

1) CPU 從被稱(chēng)為指令隊(duì)列 (instruction queue) 的內(nèi)存區(qū)域取得指令,之后立即增加指令指針的值。

2) CPU 對(duì)指令的二進(jìn)制位模式進(jìn)行譯碼。這種位模式可能會(huì)表示該指令有操作數(shù)(輸入值)。

3) 如果有操作數(shù),CPU 就從寄存器和內(nèi)存中取得操作數(shù)。有時(shí),這步還包括了地址計(jì)算。

4) 使用步驟 3 得到的操作數(shù),CPU 執(zhí)行該指令。同時(shí)更新部分狀態(tài)標(biāo)志位,如零標(biāo)志 (Zero)、進(jìn)位標(biāo)志 (Carry) 和溢出標(biāo)志 (Overflow)。

5) 如果輸出操作數(shù)也是該指令的一部分,則 CPU 還需要存放其執(zhí)行結(jié)果。

通常將上述聽(tīng)起來(lái)很復(fù)雜的過(guò)程簡(jiǎn)化為三個(gè)步驟:取指 (Fetch)、譯碼 (Decode) 和執(zhí)行 (Execute)。操作數(shù) (operand) 是指操作過(guò)程中輸入或輸出的值。例如,表達(dá)式 Z=X+Y 有兩個(gè)輸入操作數(shù) (X 和 Y),—個(gè)輸岀操作數(shù) (Z)。

下圖是一個(gè)典型 CPU 中的數(shù)據(jù)流框圖。該圖表現(xiàn)了在指令執(zhí)行周期中相互交互部件之間的關(guān)系。在從內(nèi)存讀取程序指令之前,將其地址放到地址總線(xiàn)上。然后,內(nèi)存控制器將所需代碼送到數(shù)據(jù)總線(xiàn)上,存入代碼高速緩存 (code cache)。指令指針的值決定下一條將要執(zhí)行的指令。指令由指令譯碼器分析,并產(chǎn)生相應(yīng)的數(shù)值信號(hào)送往控制單元,其協(xié)調(diào) ALU 和浮點(diǎn)單元。雖然圖中沒(méi)有畫(huà)出控制總線(xiàn),但是其上傳輸?shù)男盘?hào)用系統(tǒng)時(shí)鐘協(xié)調(diào)不同 CPU 部件之間的數(shù)據(jù)傳輸。

讀取內(nèi)存

作為一個(gè)常見(jiàn)現(xiàn)象,計(jì)算機(jī)從內(nèi)存讀取數(shù)據(jù)比從內(nèi)部寄存器讀取速度要慢很多。這是因?yàn)閺膬?nèi)存讀取一個(gè)值,需要經(jīng)過(guò)下述步驟:

  • 將想要讀取的值的地址放到地址總線(xiàn)上。
  • 設(shè)置處理器 RD(讀取)引腳(改變 RD 的值)。
  • 等待一個(gè)時(shí)鐘周期給存儲(chǔ)器芯片進(jìn)行響應(yīng)。
  • 將數(shù)據(jù)從數(shù)據(jù)總線(xiàn)復(fù)制到目標(biāo)操作數(shù)。

上述每一步常常只需要一個(gè)時(shí)鐘周期,時(shí)鐘周期是基于處理器內(nèi)固定速率時(shí)鐘節(jié)拍的一種時(shí)間測(cè)量方法。計(jì)算機(jī)的 CPU 通常是用其時(shí)鐘速率來(lái)描述。例如,速率為 1.2GHz 意味著時(shí)鐘節(jié)拍或振蕩為每秒 12 億次。

因此,考慮到每個(gè)時(shí)鐘周期僅為 1/1 200 000 000 秒,4 個(gè)時(shí)鐘周期也是非常快的。但是,與 CPU 寄存器相比,這個(gè)速度還是慢了,因?yàn)樵L問(wèn)寄存器一般只需要 1 個(gè)時(shí)鐘周期。

幸運(yùn)的是,CPU 設(shè)計(jì)者很早之前就已經(jīng)指出,因?yàn)榻^大多數(shù)程序都需要訪問(wèn)變量,計(jì)算機(jī)內(nèi)存成為了速度瓶頸。他們想出了一個(gè)聰明的方法來(lái)減少讀寫(xiě)內(nèi)存的時(shí)間一一將大部分近期使用過(guò)的指令和數(shù)據(jù)存放在高速存儲(chǔ)器 cache 中。

其思想是,程序更可能希望反復(fù)訪問(wèn)相同的內(nèi)存和指令,因此,cache 保存這些值就能使它們能被快速訪問(wèn)到。此外,當(dāng) CPU 開(kāi)始執(zhí)行一個(gè)程序時(shí),它會(huì)預(yù)先將后續(xù)(比如)一千條指令加載到 cache 中,這個(gè)行為是基于這樣一種假設(shè),即這些指令很快就會(huì)被用到。

如果這種情況重復(fù)發(fā)生在一個(gè)代碼塊中,則 cache 中就會(huì)有相同的指令。當(dāng)處理器能夠在 cache 存儲(chǔ)器中發(fā)現(xiàn)想要的數(shù)據(jù),則稱(chēng)為 cache 命中 (cache hit)。反之,如果 CPU 在 cache 中沒(méi)有找到數(shù)據(jù),則稱(chēng)為 cache 未命中 (cache miss)。

x86 系列中的 cache 存儲(chǔ)器有兩種類(lèi)型:一級(jí) cache(或主 cache)位于 CPU 上;二級(jí) cache (或次 cache)速度略慢,通過(guò)高速數(shù)據(jù)總線(xiàn)與 CPU 相連。這兩種 cache 以最佳方式一 起工作。

還有一個(gè)原因使得 cache 存儲(chǔ)器比傳統(tǒng) RAM 速度快,cache 存儲(chǔ)器是由一種被稱(chēng)為靜態(tài) RAM (static RAM) 的特殊存儲(chǔ)器芯片構(gòu)成的。這種芯片比較貴,但是不需要為了保持其內(nèi)容進(jìn)行不斷地刷新。另一方面,傳統(tǒng)存儲(chǔ)器,即動(dòng)態(tài) RAM (dynamic RAM),就需要持續(xù)刷新。它速度慢一些,但是價(jià)格更便宜。

加載并執(zhí)行程序

在程序執(zhí)行之前,需要用一種工具程序?qū)⑵浼虞d到內(nèi)存,這種工具程序稱(chēng)為程序加載器 (program loader)。加載后,操作系統(tǒng)必須將 CPU 向程序的入口,即程序開(kāi)始執(zhí)行的地址。以下步驟是對(duì)這一過(guò)程的詳細(xì)分解。

1) 操作系統(tǒng)(OS)在當(dāng)前磁盤(pán)目錄下搜索程序的文件名。如果找不到,則在預(yù)定目錄列表(稱(chēng)為路徑(path))下搜索文件名。當(dāng) OS 無(wú)法檢索到文件名時(shí),它會(huì)發(fā)出一個(gè)出錯(cuò)信息。

2) 如果程序文件被找到,OS 就訪問(wèn)磁盤(pán)目錄中的程序文件基本信息,包括文件大小,及其在磁盤(pán)驅(qū)動(dòng)器上的物理位置。

3) OS 確定內(nèi)存中下一個(gè)可使用的位置,將程序文件加載到內(nèi)存。為該程序分配內(nèi)存塊,并將程序大小和位置信息加入表中(有時(shí)稱(chēng)為描述符表(descriptor table))。另外,OS 可能調(diào)整程序內(nèi)指針的值,使得它們包括程序數(shù)據(jù)地址。

4) OS 開(kāi)始執(zhí)行程序的第一條機(jī)器指令(程序入口)。當(dāng)程序開(kāi)始執(zhí)行后,就成為一個(gè)進(jìn)程(process)。OS 為這個(gè)進(jìn)程分配一個(gè)標(biāo)識(shí)號(hào)(進(jìn)程 ID),用于在執(zhí)行期間對(duì)其進(jìn)行追蹤。

5) 進(jìn)程自動(dòng)運(yùn)行。OS 的工作是追蹤進(jìn)程的執(zhí)行,并響應(yīng)系統(tǒng)資源的請(qǐng)求。這些資源包括內(nèi)存、磁盤(pán)文件和輸入輸出設(shè)備等。

6) 進(jìn)程結(jié)束后,就會(huì)從內(nèi)存中移除。

不論使用哪個(gè)版本的 Microsoft Windows,按下 Ctrl-Alt-Delete 組合鍵,可以選擇任務(wù)管理器(task manager)選項(xiàng)。在任務(wù)管理器窗口可以查看應(yīng)用程序和進(jìn)程列表。

應(yīng)用程序列表中列出了當(dāng)前正在運(yùn)行的完整程序名稱(chēng),比如,Windows 瀏覽器,或者 Microsoft Visual C++。如果選擇進(jìn)程列表,則會(huì)看見(jiàn)一長(zhǎng)串進(jìn)程名。其中的每個(gè)進(jìn)程都是一個(gè)獨(dú)立于其他進(jìn)程的,并處于運(yùn)行中的小程序。

可以連續(xù)追蹤每個(gè)進(jìn)程使用的 CPU 時(shí)間和內(nèi)存容量。在某些情況下,選定一個(gè)進(jìn)程名稱(chēng)后,按下 Delete 鍵就可以關(guān)閉該進(jìn)程。

下一篇:1.11?字符在計(jì)算機(jī)中是如何表示的
1.12?匯編語(yǔ)言布爾表達(dá)式
處理器架構(gòu)
2.1?CPU處理器架構(gòu)
2.2?32位x86處理器架構(gòu)
2.3?x86-64處理器架構(gòu)
2.4?x86計(jì)算機(jī)組件
匯編語(yǔ)言基礎(chǔ)
3.1?第一個(gè)匯編語(yǔ)言程序
3.2?匯編語(yǔ)言常量
3.3?匯編語(yǔ)言保留字
3.4?匯編語(yǔ)言標(biāo)識(shí)符
3.5?匯編語(yǔ)言偽指令

總結(jié)

以上是生活随笔為你收集整理的CPU处理器架构和工作原理浅析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。