亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPU和程序的執(zhí)行

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

PC:program counter,表示程序計數器,它保存了將要取出的下一條指令的內存地址,指令取出后,就會更新該寄存器指向下一條指令。

堆棧指針:指向內存當前棧的頂端,包含了每個函數執(zhí)行過程的棧幀,該棧幀中保存了該函數相關的輸入參數、局部變量、以及一些沒有保存在寄存器中的臨時變量。

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

6、在CPU進行進程切換的時候,需要將寄存器中和當前進程有關的狀態(tài)數據寫入內存對應的位置(內核中該進程的棧空間)保存起來,當切換回該進程時,需要從內存中拷貝回寄存器中。即上下文切換時,需要保護現(xiàn)場和恢復現(xiàn)場。

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

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

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

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

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

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

12、用戶態(tài)CPU想要執(zhí)行特權操作,需要發(fā)起系統(tǒng)調用來請求內核幫忙完成對應的操作。其實是在發(fā)起系統(tǒng)調用后,CPU會執(zhí)行trap指令陷入(trap)到內核。當特權操作完成后,需要執(zhí)行一個指令讓CPU返回到用戶態(tài)。

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

關于CPU的基本組成

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

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

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

MAR: memory address register,保存將要被訪問數據在內存中哪個地址處,保存的是地址值

MDR: memory data register,保存從內存讀取進來的數據或將要寫入內存的數據,保存的是數據值

AC: Accumulator,保存算術運算和邏輯運算的中間結果,保存的是數據值

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

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

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

5、CPU中還有一個控制器(CU, Control Unit),負責將存儲器中的數據送到ALU中去做運算,并將運算后的結果存回到存儲器中。

控制器還包含了一些控制信號。

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

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

關于CPU的多核和多線程

1、CPU的物理個數由主板上的插槽數量決定,每個CPU可以有多核心,每核心可能會有多線程。

2、多核CPU的每核(每核都是一個小芯片),在OS看來都是一個獨立的CPU。

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

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

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

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

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

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

所以,超線程技術的主要目的是為了增加流水線(參見前文對流水線的解釋)上更多個獨立的指令,這樣線程1和線程2在流水線上就盡量不會爭搶該核CPU資源。所以,超線程技術利用了superscalar(超標量)架構的優(yōu)點。

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

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

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

關于CPU上的高速緩存

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

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

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

2、寄存器之下,是CPU的高速緩存。分為L1緩存、L2緩存、L3緩存,每層速度按數量級遞減、容量也越來越大。

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

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

4、L2緩存用來存放近期使用過的內存數據。更嚴格地說,存放的是很可能將來會被CPU使用的數據。

5、多數多核CPU的各核都各自擁有一個L2緩存,但也有多核共享L2緩存的設計。無論如何,L1是各核私有的(但對某核內的多線程是共享的)。

審核編輯 :李倩

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

    關注

    31

    文章

    5517

    瀏覽量

    128503
  • 嵌入式系統(tǒng)

    關注

    41

    文章

    3704

    瀏覽量

    132910
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11198

    瀏覽量

    222082

原文標題:關于CPU的一些基本知識總結

文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    CPU 到 GPU,渲染技術如何重塑游戲、影視與設計?

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

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

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

    如果在FMC執(zhí)行程序”或“擦除”時發(fā)生中斷事件,是否會處理中斷事件?

    如果在FMC執(zhí)行程序”或“擦除”時發(fā)生中斷事件,是否會處理中斷事件?
    發(fā)表于 08-27 08:01

    探索CPU架構的奧秘,揭秘高性能計算的隱形引擎

    的深海,揭開那些隱藏在高性能計算背后的神秘面紗。1.取指令(Fetch)程序計數器(PC):CPU通過程序計數器獲取下一條指令的內存地址。指令讀?。簭拇鎯ζ骰蚓彺嬷凶x
    的頭像 發(fā)表于 08-13 11:58 ?423次閱讀
    探索<b class='flag-5'>CPU</b>架構的奧秘,揭秘高性能計算的隱形引擎

    單核CPU網關和雙核CPU網關有什么區(qū)別

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

    信創(chuàng)國產CPU推薦

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

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

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

    RISC-V五級流水線CPU設計

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

    S32K344 Flexio模擬SPI程序不能正常執(zhí)行怎么解決?

    不同的是SPI傳輸我采用的是異步DMA方式。測試發(fā)現(xiàn)在SPI傳輸完畢之后,標志位正常置位,但是main函數中程序執(zhí)行異常。 如下圖所示,flag已經置1了,但是不能執(zhí)行到92行,因此不能正常退出最內層while循環(huán),導致
    發(fā)表于 03-21 06:43

    CPU到GPU:渲染技術的演進和趨勢

    和優(yōu)缺點CPU(CentralProcessingUnit)是計算機的中央處理器,它負責執(zhí)行各種程序和指令。CPU渲染是指使用CPU
    的頭像 發(fā)表于 02-21 11:11 ?1187次閱讀
    從<b class='flag-5'>CPU</b>到GPU:渲染技術的演進和趨勢

    CPU(中央處理器)的概念、結構特點和在系統(tǒng)中的地位

    ? CPU 在整個計算機系統(tǒng)中扮演“大腦”與“指揮官”的角色。它負責從存儲器中取出指令,解析并執(zhí)行各種邏輯、算術、控制和數據處理任務 ? CPU的核心角色????? 系統(tǒng)“大腦”與“指揮官”
    的頭像 發(fā)表于 01-14 13:57 ?3791次閱讀

    TMS320C55x DSP CPU程序員參考補充

    電子發(fā)燒友網站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發(fā)表于 12-21 11:36 ?3次下載
    TMS320C55x DSP <b class='flag-5'>CPU</b><b class='flag-5'>程序</b>員參考補充

    Linux之CPU調度策略和CPU親和性

    一、調度策略 調度進程 單個 CPU一次只能執(zhí)行一個進程,雖然 Linux 系統(tǒng)通過使用多任務同時處理多個進程,但當多個進程同時運行在一個CPU 上時,它通過交錯執(zhí)行這些進程。 內核使
    的頭像 發(fā)表于 12-05 16:38 ?1572次閱讀
    Linux之<b class='flag-5'>CPU</b>調度策略和<b class='flag-5'>CPU</b>親和性