91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CPU和程序的執(zhí)行

Dbwd_Imgtec ? 來(lái)源:駿馬金龍 ? 作者:駿馬金龍 ? 2022-04-24 14:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于CPU和程序的執(zhí)行

1、程序的運(yùn)行過(guò)程,實(shí)際上是程序涉及到的、未涉及到的一大堆的指令的執(zhí)行過(guò)程。

當(dāng)程序要執(zhí)行的部分被裝載到內(nèi)存后,CPU要從內(nèi)存中取出指令,然后指令解碼(以便知道類型和操作數(shù),簡(jiǎn)單的理解為CPU要知道這是什么指令),然后執(zhí)行該指令。再然后取下一個(gè)指令、解碼、執(zhí)行,以此類推直到程序退出。

2、這個(gè)取指、解碼、執(zhí)行三個(gè)過(guò)程構(gòu)成一個(gè)CPU的基本周期。

3、每個(gè)CPU都有一套自己可以執(zhí)行的專門的指令集(注意,這部分指令是CPU提供的,CPU-Z軟件可查看)。 正是因?yàn)椴煌珻PU架構(gòu)的指令集不同,使得x86處理器不能執(zhí)行ARM程序,ARM程序也不能執(zhí)行x86程序。(IntelAMD都使用x86指令集,手機(jī)絕大多數(shù)使用ARM指令集)。 注:指令集的軟硬件層次之分:硬件指令集是硬件層次上由CPU自身提供的可執(zhí)行的指令集合。軟件指令集是指語(yǔ)言程序庫(kù)所提供的指令,只要安裝了該語(yǔ)言的程序庫(kù),指令就可以執(zhí)行。

4、由于CPU訪問(wèn)內(nèi)存以得到指令或數(shù)據(jù)的時(shí)間要比執(zhí)行指令花費(fèi)的時(shí)間長(zhǎng)很多,因此在CPU內(nèi)部提供了一些用來(lái)保存關(guān)鍵變量、臨時(shí)數(shù)據(jù)等信息的通用寄存器。

所以,CPU需要提供 一些特定的指令,使得可以從內(nèi)存中讀取數(shù)據(jù)存入寄存器以及可以將寄存器數(shù)據(jù)存入內(nèi)存。 此外還需要提供加法、減、not/and/or等基本運(yùn)算指令,而乘除法運(yùn)算都是推算出來(lái)的(支持的基本運(yùn)算指令參見(jiàn)ALU Functions),所以乘除法的速度要慢的多。這也是算法里在考慮時(shí)間復(fù)雜度時(shí)常常忽略加減法次數(shù)帶來(lái)的影響,而考慮乘除法的次數(shù)的原因。

5、除了通用寄存器,還有一些特殊的寄存器。典型的如:

PC:program counter,表示程序計(jì)數(shù)器,它保存了將要取出的下一條指令的內(nèi)存地址,指令取出后,就會(huì)更新該寄存器指向下一條指令。

堆棧指針:指向內(nèi)存當(dāng)前棧的頂端,包含了每個(gè)函數(shù)執(zhí)行過(guò)程的棧幀,該棧幀中保存了該函數(shù)相關(guān)的輸入?yún)?shù)、局部變量、以及一些沒(méi)有保存在寄存器中的臨時(shí)變量。

PSW:program status word,表示程序狀態(tài)字,這個(gè)寄存器內(nèi)保存了一些控制位,比如CPU的優(yōu)先級(jí)、CPU的工作模式(用戶態(tài)還是內(nèi)核態(tài)模式)等。

6、在CPU進(jìn)行進(jìn)程切換的時(shí)候,需要將寄存器中和當(dāng)前進(jìn)程有關(guān)的狀態(tài)數(shù)據(jù)寫入內(nèi)存對(duì)應(yīng)的位置(內(nèi)核中該進(jìn)程的??臻g)保存起來(lái),當(dāng)切換回該進(jìn)程時(shí),需要從內(nèi)存中拷貝回寄存器中。即上下文切換時(shí),需要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。

7、為了改善性能,CPU已經(jīng)不是單條取指--》解碼--》執(zhí)行的路線,而是分別為這3個(gè)過(guò)程分別提供獨(dú)立的取值單元,解碼單元以及執(zhí)行單元。這樣就形成了流水線模式。 例如,流水線的最后一個(gè)單元——執(zhí)行單元正在執(zhí)行第n條指令,而前一個(gè)單元可以對(duì)第n+1條指令進(jìn)行解碼,再前一個(gè)單元即取指單元可以去讀取第n+2條指令。這是三階段的流水線,還可能會(huì)有更長(zhǎng)的流水線模式。

8、更優(yōu)化的CPU架構(gòu)是superscalar架構(gòu)(超標(biāo)量架構(gòu))。這種架構(gòu)將取指、解碼、執(zhí)行單元分開(kāi),有大量的執(zhí)行單元,然后每個(gè)取指+解碼的部分都以并行的方式運(yùn)行。比如有2個(gè)取指+解碼的并行工作線路,每個(gè)工作線路都將解碼后的指令放入一個(gè)緩存緩沖區(qū)等待執(zhí)行單元去取出執(zhí)行。

b93c014e-c390-11ec-bce3-dac502259ad0.jpg

9、除了嵌入式系統(tǒng),多數(shù)CPU都有兩種工作模式:內(nèi)核態(tài)和用戶態(tài)。這兩種工作模式是由PSW寄存器上的一個(gè)二進(jìn)制位來(lái)控制的。

10、內(nèi)核態(tài)的CPU,可以執(zhí)行指令集中的所有指令,并使用硬件的所有功能。

11、用戶態(tài)的CPU,只允許執(zhí)行指令集中的部分指令。一般而言,IO相關(guān)和把內(nèi)存保護(hù)相關(guān)的所有執(zhí)行在用戶態(tài)下都是被禁止的,此外其它一些特權(quán)指令也是被禁止的,比如用戶態(tài)下不能將PSW的模式設(shè)置控制位設(shè)置成內(nèi)核態(tài)。

12、用戶態(tài)CPU想要執(zhí)行特權(quán)操作,需要發(fā)起系統(tǒng)調(diào)用來(lái)請(qǐng)求內(nèi)核幫忙完成對(duì)應(yīng)的操作。其實(shí)是在發(fā)起系統(tǒng)調(diào)用后,CPU會(huì)執(zhí)行trap指令陷入(trap)到內(nèi)核。當(dāng)特權(quán)操作完成后,需要執(zhí)行一個(gè)指令讓CPU返回到用戶態(tài)。

13、除了系統(tǒng)調(diào)用會(huì)陷入內(nèi)核,更多的是硬件會(huì)引起trap行為陷入內(nèi)核,使得CPU控制權(quán)可以回到操作系統(tǒng),以便操作系統(tǒng)去決定如何處理硬件異常。

關(guān)于CPU的基本組成

1、CPU是用來(lái)運(yùn)算的(加法運(yùn)算+、乘法運(yùn)算*、邏輯運(yùn)算and not or等),例如c=a+b。

2、運(yùn)算操作涉及到數(shù)據(jù)輸入(input)、處理、數(shù)據(jù)輸出(output),a和b是輸入數(shù)據(jù),加法運(yùn)算是處理,c是輸出數(shù)據(jù)。

3、CPU需要使用一個(gè)叫做存儲(chǔ)器(也就是各種寄存器)的東西保存輸入和輸出數(shù)據(jù)。以下是幾種常見(jiàn)的寄存器(前文也介紹了一些)

MAR: memory address register,保存將要被訪問(wèn)數(shù)據(jù)在內(nèi)存中哪個(gè)地址處,保存的是地址值

MDR: memory data register,保存從內(nèi)存讀取進(jìn)來(lái)的數(shù)據(jù)或?qū)⒁獙懭雰?nèi)存的數(shù)據(jù),保存的是數(shù)據(jù)值

AC: Accumulator,保存算術(shù)運(yùn)算和邏輯運(yùn)算的中間結(jié)果,保存的是數(shù)據(jù)值

PC: Program Counter,保存下一個(gè)將要被執(zhí)行指令的地址,保存的是地址值

CIR: current instruction register,保存當(dāng)前正在執(zhí)行的指令

4、CPU還要將一些常用的基本運(yùn)算工具(如加法器)放進(jìn)CPU,這部分負(fù)責(zé)運(yùn)算,稱為算術(shù)邏輯單元(ALU, Arithmetic Logic Unit)。

5、CPU中還有一個(gè)控制器(CU, Control Unit),負(fù)責(zé)將存儲(chǔ)器中的數(shù)據(jù)送到ALU中去做運(yùn)算,并將運(yùn)算后的結(jié)果存回到存儲(chǔ)器中。

控制器還包含了一些控制信號(hào)。

6、控制器之所以知道數(shù)據(jù)放哪里、做什么運(yùn)算(比如是做加法還是邏輯運(yùn)算?)都是由指令告訴控制器的,每個(gè)指令對(duì)應(yīng)一個(gè)基本操作,比如加法運(yùn)算對(duì)應(yīng)一個(gè)指令。 7、例如,將兩個(gè)MDR寄存器(保存了來(lái)自內(nèi)存的兩個(gè)數(shù)據(jù))中的值拷貝到ALU中,然后根據(jù)指定的操作指令執(zhí)行加法運(yùn)算,將運(yùn)算結(jié)果拷貝會(huì)一個(gè)MDR寄存器中,最后寫入到內(nèi)存。 8、這就是馮諾依曼結(jié)構(gòu)圖,也就是現(xiàn)在計(jì)算機(jī)的結(jié)構(gòu)圖。

b951cbe6-c390-11ec-bce3-dac502259ad0.jpg

關(guān)于CPU的多核和多線程

1、CPU的物理個(gè)數(shù)由主板上的插槽數(shù)量決定,每個(gè)CPU可以有多核心,每核心可能會(huì)有多線程。

2、多核CPU的每核(每核都是一個(gè)小芯片),在OS看來(lái)都是一個(gè)獨(dú)立的CPU。

3、對(duì)于超線程CPU來(lái)說(shuō),每核CPU可以有多個(gè)線程(數(shù)量是兩個(gè),比如1核雙線程,2核4線程,4核8線程),每個(gè)線程都是一個(gè)虛擬的邏輯CPU(比如windows下是以邏輯處理器的名稱稱呼的),而每個(gè)線程在OS看來(lái)也是獨(dú)立的CPU。

這是欺騙操作系統(tǒng)的行為,在物理上仍然只有1核,只不過(guò)在超線程CPU的角度上看,它認(rèn)為它的超線程會(huì)加速程序的運(yùn)行。

b9679d90-c390-11ec-bce3-dac502259ad0.jpg

4、要發(fā)揮超線程優(yōu)勢(shì),需要操作系統(tǒng)對(duì)超線程有專門的優(yōu)化。 5、多線程的CPU在能力上,比非多線程的CPU核心要更強(qiáng),但每個(gè)線程不足以與獨(dú)立的CPU核心能力相比較。

6、每核上的多線程CPU都共享該核的CPU資源。

例如,假設(shè)每核CPU都只有一個(gè)“發(fā)動(dòng)機(jī)”資源,那么線程1這個(gè)虛擬CPU使用了這個(gè)“發(fā)動(dòng)機(jī)”后,線程2就沒(méi)法使用,只能等待。

所以,超線程技術(shù)的主要目的是為了增加流水線(參見(jiàn)前文對(duì)流水線的解釋)上更多個(gè)獨(dú)立的指令,這樣線程1和線程2在流水線上就盡量不會(huì)爭(zhēng)搶該核CPU資源。所以,超線程技術(shù)利用了superscalar(超標(biāo)量)架構(gòu)的優(yōu)點(diǎn)。

7、多線程意味著每核可以有多個(gè)線程的狀態(tài)。比如某核的線程1空閑,線程2運(yùn)行。

8、多線程沒(méi)有提供真正意義上的并行處理,每核CPU在某一時(shí)刻仍然只能運(yùn)行一個(gè)進(jìn)程,因?yàn)榫€程1和線程2是共享某核CPU資源的??梢院?jiǎn)單的認(rèn)為每核CPU在獨(dú)立執(zhí)行進(jìn)程的能力上,有一個(gè)資源是唯一的,線程1獲取了該資源,線程2就沒(méi)法獲取。 但是,線程1和線程2在很多方面上是可以并行執(zhí)行的。比如可以并行取指、并行解碼、并行執(zhí)行指令等。所以雖然單核在同一時(shí)間只能執(zhí)行一個(gè)進(jìn)程,但線程1和線程2可以互相幫助,加速進(jìn)程的執(zhí)行。 并且,如果線程1在某一時(shí)刻獲取了該核執(zhí)行進(jìn)程的能力,假設(shè)此刻該進(jìn)程發(fā)出了IO請(qǐng)求,于是線程1掌握的執(zhí)行進(jìn)程的能力,就可以被線程2獲取,即切換到線程2。這是在執(zhí)行線程間的切換,是非常輕量級(jí)的。(WIKI: if resources for one process are not available, then another process can continue if its resources are available)

9、多線程可能會(huì)出現(xiàn)一種現(xiàn)象:假如2核4線程CPU,有兩個(gè)進(jìn)程要被調(diào)度,那么只有兩個(gè)線程會(huì)處于運(yùn)行狀態(tài),如果這兩個(gè)線程是在同一核上,則另一核完全空轉(zhuǎn),處于浪費(fèi)狀態(tài)。更期望的結(jié)果是每核上都有一個(gè)CPU分別調(diào)度這兩個(gè)進(jìn)程。

關(guān)于CPU上的高速緩存

1、最高速的緩存是CPU的寄存器,它們和CPU的材料相同,最靠近CPU或最接近CPU,訪問(wèn)它們沒(méi)有時(shí)延(《1ns)。但容量很小,小于1kb。

32bit:32*32比特=128字節(jié)

64bit:64*64比特=512字節(jié)

2、寄存器之下,是CPU的高速緩存。分為L(zhǎng)1緩存、L2緩存、L3緩存,每層速度按數(shù)量級(jí)遞減、容量也越來(lái)越大。

b97e5594-c390-11ec-bce3-dac502259ad0.jpg

3、每核心都有一個(gè)自己的L1緩存。L1緩存分兩種:L1指令緩存(L1-icache)和L1數(shù)據(jù)緩存(L1-dcache)。L1指令緩存用來(lái)存放已解碼指令,L1數(shù)據(jù)緩存用來(lái)放訪問(wèn)非常頻繁的數(shù)據(jù)。

4、L2緩存用來(lái)存放近期使用過(guò)的內(nèi)存數(shù)據(jù)。更嚴(yán)格地說(shuō),存放的是很可能將來(lái)會(huì)被CPU使用的數(shù)據(jù)。

5、多數(shù)多核CPU的各核都各自擁有一個(gè)L2緩存,但也有多核共享L2緩存的設(shè)計(jì)。無(wú)論如何,L1是各核私有的(但對(duì)某核內(nèi)的多線程是共享的)。

審核編輯 :李倩

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

    關(guān)注

    31

    文章

    5609

    瀏覽量

    130016
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3748

    瀏覽量

    133667
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11281

    瀏覽量

    225098

原文標(biāo)題:關(guān)于CPU的一些基本知識(shí)總結(jié)

文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    MangoTree新品劇透:全新PXI形態(tài)+最強(qiáng)CPU #PXI #PXIe #測(cè)控 #CPU

    cpu
    芒果樹數(shù)字
    發(fā)布于 :2026年01月30日 11:36:11

    飛凌嵌入式ElfBoard-系統(tǒng)信息與資源之獲取程序執(zhí)行時(shí)間

    clock用于獲取程序運(yùn)行的 CPU 時(shí)間。它返回自程序啟動(dòng)以來(lái)的 CPU 時(shí)鐘滴答數(shù),通常用于計(jì)算程序
    發(fā)表于 01-22 08:57

    office 版本不同,到處可執(zhí)行程序出錯(cuò)

    本帖最后由 opticalchang 于 2025-12-29 12:41 編輯 編寫程序所用的office 是2016版, 可執(zhí)行程序在安裝了office 2007版本的電腦上運(yùn)行時(shí),就會(huì)出錯(cuò)。在office 版本沒(méi)法更新的情況下,怎么解決?
    發(fā)表于 12-29 10:32

    單片機(jī)程序執(zhí)行

    ,DDRRAM的速度也是很慢,即使是SRAM也是慢了不少,于是再提高工作頻率也提高不了程序執(zhí)行速度,所以現(xiàn)在CPU工作頻率最快是在2003左右,一個(gè)瓶頸出現(xiàn)了。 為了提高CPU的使
    發(fā)表于 12-04 06:20

    從代碼執(zhí)行看單片機(jī)內(nèi)存的分配

    單片機(jī)執(zhí)行指令過(guò)程詳解 單片機(jī)執(zhí)行程序的過(guò)程,實(shí)際上就是執(zhí)行我們所編制程序的過(guò)程。即逐條指令的過(guò)程。計(jì)算機(jī)每執(zhí)行一條指令都可分為三個(gè)階段進(jìn)
    發(fā)表于 12-02 07:58

    Arm Neoverse CPU上大代碼量Java應(yīng)用的性能測(cè)試

    Java 是互聯(lián)網(wǎng)領(lǐng)域廣泛使用的編程語(yǔ)言。Java 應(yīng)用的一些特性使其性能表現(xiàn)與提前編譯的原生應(yīng)用(例如 C 程序)大相徑庭。由于 Java 字節(jié)碼無(wú)法直接在 CPU執(zhí)行,因此通常運(yùn)行時(shí)在
    的頭像 發(fā)表于 11-05 11:25 ?764次閱讀
    Arm Neoverse <b class='flag-5'>CPU</b>上大代碼量Java應(yīng)用的性能測(cè)試

    計(jì)算程序執(zhí)行指令數(shù)的函數(shù)實(shí)現(xiàn)

    (來(lái)源:手把手教你設(shè)計(jì)cpu_RISC-V處理器),他們分別存儲(chǔ)了指令計(jì)數(shù)器的高低32位 至此就大致能理解指令數(shù)計(jì)算函數(shù)的實(shí)現(xiàn)原理,即通過(guò)csrr指令讀minstreth和minstret寄存器得到執(zhí)行操作前后的指令計(jì)數(shù)值,再取其差值即可得到該操作耗費(fèi)的指令數(shù)。周期數(shù)計(jì)
    發(fā)表于 10-28 06:27

    西門子EDA與北京開(kāi)源芯片研究院達(dá)成戰(zhàn)略合作

    近日,西門子EDA與北京開(kāi)源芯片研究院宣布達(dá)成戰(zhàn)略合作:西門子EDA的Tessent Embedded Analytics解決方案現(xiàn)已全面支持以“昆明湖”為代表的香山RISC-V Core,該解決方案將為選擇香山開(kāi)源處理器的用戶提供一種實(shí)時(shí)監(jiān)控CPU程序
    的頭像 發(fā)表于 09-05 17:19 ?4959次閱讀
    西門子EDA與北京開(kāi)源芯片研究院達(dá)成戰(zhàn)略合作

    CPU 到 GPU,渲染技術(shù)如何重塑游戲、影視與設(shè)計(jì)?

    CPU(CentralProcessingUnit)是計(jì)算機(jī)的中央處理器,它負(fù)責(zé)執(zhí)行各種程序和指令。CPU渲染是指使用CPU來(lái)
    的頭像 發(fā)表于 09-01 12:16 ?995次閱讀
    從 <b class='flag-5'>CPU</b> 到 GPU,渲染技術(shù)如何重塑游戲、影視與設(shè)計(jì)?

    從 APROM 切換到 LDROM 執(zhí)行程序更新時(shí)應(yīng)使用什么軟件重置?

    從 APROM 切換到 LDROM 執(zhí)行程序更新時(shí)應(yīng)使用什么軟件重置
    發(fā)表于 08-27 16:34

    探索CPU架構(gòu)的奧秘,揭秘高性能計(jì)算的隱形引擎

    的深海,揭開(kāi)那些隱藏在高性能計(jì)算背后的神秘面紗。1.取指令(Fetch)程序計(jì)數(shù)器(PC):CPU通過(guò)程序計(jì)數(shù)器獲取下一條指令的內(nèi)存地址。指令讀?。簭拇鎯?chǔ)器或緩存中讀
    的頭像 發(fā)表于 08-13 11:58 ?807次閱讀
    探索<b class='flag-5'>CPU</b>架構(gòu)的奧秘,揭秘高性能計(jì)算的隱形引擎

    單核CPU網(wǎng)關(guān)和雙核CPU網(wǎng)關(guān)有什么區(qū)別

    單核CPU網(wǎng)關(guān)與雙核CPU網(wǎng)關(guān)的核心區(qū)別在于處理能力、多任務(wù)效率、性能表現(xiàn)及適用場(chǎng)景,雙核CPU網(wǎng)關(guān)在多任務(wù)處理、復(fù)雜計(jì)算和響應(yīng)速度上具有顯著優(yōu)勢(shì),而單核CPU網(wǎng)關(guān)則更適合輕量級(jí)、低負(fù)
    的頭像 發(fā)表于 07-05 14:37 ?1071次閱讀

    信創(chuàng)國(guó)產(chǎn)CPU推薦

    cpu
    jf_10805031
    發(fā)布于 :2025年04月23日 17:20:43

    CPU的各種指令和執(zhí)行流程

    在集成電路設(shè)計(jì)中,CPU的指令是指計(jì)算機(jī)中央處理單元(CPU)用來(lái)執(zhí)行計(jì)算任務(wù)的基本操作指令集。這些指令是CPU能夠理解并執(zhí)行的二進(jìn)制代碼,
    的頭像 發(fā)表于 04-18 11:24 ?2651次閱讀

    RISC-V五級(jí)流水線CPU設(shè)計(jì)

    本文實(shí)現(xiàn)的CPU是一個(gè)五級(jí)流水線的精簡(jiǎn)版CPU(也叫PCPU,即pipeline),包括IF(取指令)、ID(解碼)、EX(執(zhí)行)、MEM(內(nèi)存操作)、WB(回寫)。
    的頭像 發(fā)表于 04-15 09:46 ?1771次閱讀
    RISC-V五級(jí)流水線<b class='flag-5'>CPU</b>設(shè)計(jì)