<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

CPU的內部結構剖析

jf_78858299 ? 來源:前端柒八九 ? 作者:前端柒八九 ? 2023-03-31 16:04 ? 次閱讀

CPU的內部結構

?CPU是中央處理器Central Processing Unit的縮寫,相當于計算機的大腦,它的內部由數百萬至數億個 晶體管 構成。

?

「程序運行流程」 中,CPU所負責的就是 「解釋和運行」 最終轉換成 「機器語言」 的程序內容。

圖片

程序運行流程

CPU和內存是由許多晶體管組成的 電子部件」 ,通常成為集成電路Integrated Circuit。

?從功能方面來看,CPU的內部是由 寄存器 、 控制器 、 「運算器」 、 時鐘 等四個部分組成,各個部分之間由 電流信號 相互連通。

?

圖片

CPU的四個組成部分

  1. 「寄存器」
    • 用來 「緩存」 指令、數據等處理對象,可以將其看作是**「內存的一種」**
    • 根據種類的不同,一個CPU內部戶有20~100個寄存器
  2. 「控制器」
    • 負責把 「內存」 上的指令、數據等讀入**「寄存器」**
    • 并根據指令的執行結果來 「控制」 整個計算機
  3. 「運算器」
    • 負責運算**「從內存讀入寄存器的數據」**
  4. 「時鐘」
    • 負責發出CPU開始計時的**「時鐘信號」**

內存

?通常所說的 「內存」 指的是計算機的主要存儲器Main Memory,簡稱 「主存」 。

?

主存通過 控制芯片 等與CPU相連,主要負責 「存儲指令和數據」 。主存由 「可讀寫」 的元素構成,每個字節(1字節=8位)都帶有一個 「地址編號」 。CPU可以通過該地址 「讀取」 主存中的指令和數據,當然也可以 「寫入」 數據。

程序運行機制

程序啟動后,根據 「時鐘信號」 , 「控制器」 會從 「內存」 中讀取指令和數據。通過對這些指令加以解釋和運行, 「運算器」 就會對數據進行運算, 「控制器」 根據該運算結果來控制計算機。


CPU是寄存器的集合體

CPU的四個構成部分中,我們只需要了解寄存器即可。這是因為, 「程序是把寄存器作為對象來描述的」 。

假設,我們存在如下用匯編語言編寫的代碼。

? 「匯編語言」 采用助記符Memonic來編寫程序,每一個原本是 電氣信號」「機器語言指令」 都有有一個與其 「相對應的助記符」 。

助記符通常為指令功能的英語單詞的縮寫。

?

圖片

匯編代碼

例如,movadd分別是數據的存儲和相加的簡寫。

?「匯編語言和機器語言基本上是一一對應的」

?

  • 通常我們將 「匯編語言」 編寫的程序轉化成 「機器語言」 的過程稱為**「匯編」**
  • 反之, 「機器語言」 程序轉化成 「匯編語言」 的程序的過程稱為**「反匯編」**

從上述的 「匯編代碼」 中,我們可以看出, 「機器語言級別的程序是通過寄存器來處理的」 ,也就是說, 「CPU是寄存器的集合體」 。eaxebp表示的都是寄存器。并且,內存的存儲場所 「通過地址編號來區分」 ,而寄存器的種類 「通過名字來區分」 。

CPU處理程序的大致過程如下:

?使用 「高級語言」 編寫的程序會在 「編譯」 后轉化成 「機器語言」 ,然后再通過CPU內部的寄存器來處理。

?

寄存器的種類

?不同類型的CPU,其內部寄存器的數量、種類以及寄存器存儲的數值范圍都是不同的。

?

不過,根據功能的不同,我們可以將寄存器大致分為 「8類」 。

圖片

寄存器的主要種類和功能

可以看出,寄存器中存儲的內容既 「可以是指令也可以是數據」 。其中,數據分為 「用于運算的數據」 和**「表示內存地址的數據」**

圖片

CPU是寄存器的集合體


決定程序流程的程序計數器

只有1行的有用程序是很少見的,機器語言的程序也是如此。接下來,我們看一下程序是如何按照流程運行的。

下圖是程序啟動后的內存內容的模型。

?用戶發出啟動程序的指示后, 操作系統 會把 「硬盤」 中保存的程序 「復制」「內存」 中。

?

實例中的程序實現的是將123456兩個數值相加,并將結果輸出到顯示器上。圖片

前面我們已經介紹過,存儲指令和數據的內存,是通過地址來劃分的。由于使用機器語言難以清晰地表明各地址存儲的內容,因此我們對各地址的存儲內容添加注釋。實際上, 「一個命令和數據通常被存儲在多個地址上」 ,但是為了便于說明,上面的圖例中,把指令、數據分配到一個地址中。

大致流程如下:

  1. 地址0100是程序運行的開始位置。
  2. 操作系統把程序從 「硬盤」 復制到 「內存」 后,會將 「程序計數器」CPU寄存器的一種)設定為0100,然后程序便開始運行。
  3. CPU每執行一個指令,程序計數器的值就會自動加1」
  4. 然后,CPU「控制器」 就會參照程序計數器的數值,從內存中讀取命令并執行。

?程序計數器決定著程序的流程

?


條件分支和循環機制

程序的流程分為 「順序執行」 、 「條件分支」「循環」 三種。

  1. 「順序執行」 是指按照地址內容的順序執行指令
  2. 「條件分支」 是指根據條件執行任意地址的指令
  3. 「循環」 是指重復執行同一地址的指令

「順序執行」 的情況比較簡單,每執行一個指令 「程序計數器」 的值就 「自動加1」 .但若程序中存在 「條件分支」「循環」 ,機器語言的指令就可以將 「程序計數器」 的值設定為 「任意地址」 (不是加1)。這樣一來,程序便可以返回到上一個地址來重復執行同一個指令,或者跳轉到任意地址。

條件分支運行流程

圖片上圖表示把內存中存儲的數值(示例中是123)的絕對值輸出到顯示器的程序的內存狀態。

大致流程如下:

  1. 程序運行的開始位置是0100地址
  2. 隨著 「程序計數器」 數值的增加
  3. 當到達0102地址時,如果 「累加寄存器」 的值是 「正數」 ,則執行 「跳轉指令」jump指令)跳轉到0104地址
  4. 此時,由于 「累加寄存器」 的值是123,為 「正數」 ,因此0103地址的指令被跳過,程序的流程 「直接」 跳轉到了0104地址

? 「條件分支」「循環」 中使用的 「跳轉指令」 ,會參照當前執行的 「運算結果」 來判斷是否跳轉。

?

前面我們提到過 「標志寄存器」 。無論當前 「累加寄存器」 的運算結果是負數、零還是正數, 「標志寄存器」 都會將其保存。

CPU在進行運算時, 「標志寄存器」 的數值會根據運算結果 「自動設定」 。至于是否執行 「跳轉指令」 ,則由CPU在參考 「標志寄存器」 的數值后進行判斷。運算結果的正、零、負 「三個狀態」「標志寄存器」 的三個位表示。

圖片

32位CPU(寄存器的長度是32位)的標志寄存器的示例

「標志寄存器」 的第一個字節位、第二個字節位和第三個字節位的值為1時,表示的運算結果分別為正數、零和負數。

CPU比較機制

假設要比較 「累加寄存器」 中存儲的XXX值和 「通用寄存器」 中存儲的YYY值,執行比較的指令后,CPU的運算裝置就會在內部進行XXX-YYY「減法運行」 。

無論減法運算的結果是正數、零還是負數,都會被保存到 「標志寄存器」 中。

  • 結果為 「正」 表示XXXYYY
  • 結果為 「零」 表示XXXYYY相等
  • 結果為 「負」 表示XXXYYY

?程序中的比較指令,就是在CPU內部做減法運算

?


函數的調用機制

?函數調用處理也是通過把 「程序計數器」 的值設定成函數的存儲地址來實現的

?

「條件分支」 、 「循環」 的機制不同,因為單純的跳轉指令無法實現函數的調用。

?函數的調用需要在完成函數內部的處理后,處理流程再返回到函數調用點( 「函數調用指令的下一個地址」 )

?

圖片

上圖的示例為 變量ab分別代入123456后,將其賦值給參數來調用MyFunc函數的C語言程序。圖中的地址是將C語言編譯成機器語言后運行時的地址。由于1行C語言程序在編譯后通常會變成多行的機器語言,所以圖中的地址是 「離散」 的。

此外,通過 「跳轉指令」「程序計數器」 的值設定為0260也可以實現調用MyFunc函數。函數的 「調用原點」0132地址)和 「被調用函數」 (0260地址)之間的數據傳遞,可以通過內存或寄存器來實現。

當函數處理進行到最后的0354地址時,我們應該將 「程序計數器」 的值設定成函數調用后要執行的0154地址。我們通過機器語言的call指令和return指令能實現該功能。

call 指令和return 指令

?函數調用使用的是call指令,而不是跳轉指令。

?

在將函數的入口地址設定到 「程序計數器」 之前, 「call指令」 會把調用函數后要執行的指令地址存儲在名為 「?!?/strong> 的內存內。 「return 指令」 的功能是把保存在棧中的地址設定到 「程序計數器」 中。

圖片

通過地址和索引實現數組

?通過 「基址寄存器」「變址寄存器」 可以對 「主內存」 上特定的內存區域進行劃分,從而實現類似于數組的操作

?

圖片

  1. 「十六進制數」 將計算機內存上00000000~FFFFFFFF的地址劃分出來
    • 凡是該范圍的內存區域,只要有一個32位的寄存器,即可查看全部的內存地址
  2. 如果想要像數組那樣分割特定的內存區域以達到連續查看的目的,使用兩個寄存器會更方便

圖片

?CPU會把 「基址寄存器」 + 「變址寄存器」 的值解釋為實際查看的內存地址。

?

「變址寄存器」 的值相當于高級程序語言程序中數組的**「索引功能」**

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

    關注

    68

    文章

    10509

    瀏覽量

    207136
  • 計算機
    +關注

    關注

    19

    文章

    6709

    瀏覽量

    85169
  • 晶體管
    +關注

    關注

    77

    文章

    9138

    瀏覽量

    135656
收藏 人收藏

    評論

    相關推薦

    芯片封裝內部結構

    `芯片封裝內部結構經典封裝知識,內部結構完美呈現,分析芯片封裝的每一個知識點。[hide][/hide]`
    發表于 06-11 16:10

    [轉帖]光耦內部結構原理

    光耦內部結構原理光耦內部結構:  光耦合器是以光形式傳遞信號的,內部電路是由光敏三極管和發光二極管組合成一個電子元件被封裝在個塑料殼內,接入電路后,輸入端的電信號
    發表于 06-19 10:45

    8051內部結構

    8051內部結構供大家參考。
    發表于 12-17 08:59

    51單片機的內部結構簡介

    51單片機的內部結構簡介內部結構簡介51單片機是指集成在一個芯片上的一個微型計算機,它的各種功能,包括CPU、存儲器、基本輸出/輸入接口、定時器、中斷系統 等。8051單片機是MC—51系列單片機中
    發表于 07-22 09:19

    51單片機CPU內部結構及工作原理是什么

    51單片機CPU內部結構及工作原理1.51單片機CPU內部結構2.工作原理1.51單片機CPU內部
    發表于 11-18 08:22

    cpu內部結構

    cpu內部結構 1.算術邏輯單元ALU(Arithmetic Logic Unit) ALU是運算器的核心。它是以全加器為基礎,輔之以移位寄存器及相應控制邏輯組合而成的電路
    發表于 01-15 10:32 ?2.2w次閱讀

    MAX782內部結構框圖

    MAX782內部結構框圖 內部框圖
    發表于 11-14 16:24 ?911次閱讀
    MAX782<b class='flag-5'>內部結構</b>框圖

    RH5RC內部結構框圖.

    RH5RC內部結構框圖. RH5RC內部結構框圖如圖所示,它由基
    發表于 11-14 16:43 ?877次閱讀
    RH5RC<b class='flag-5'>內部結構</b>框圖.

    動鐵耳機的內部結構

    動鐵耳機的內部結構  
    發表于 05-17 18:28 ?9213次閱讀

    元件的內部結構

    元件的內部結構
    發表于 03-04 17:48 ?6次下載

    8086cpu由哪兩部分組成_8086CPU內部結構圖分享

    本文開始接介紹了8086的概念和性能特點,其次詳細介紹了8086cpu的組成與內部結構圖,最后介紹了8086的工作原理與兩種工作模式。
    發表于 04-16 12:29 ?7w次閱讀

    mcs-51單片機CPU內部結構及工作原理

    51單片機CPU內部結構及工作原理1.51單片機CPU內部結構2.工作原理1.51單片機CPU內部
    發表于 11-11 14:21 ?28次下載
    mcs-51單片機<b class='flag-5'>CPU</b>的<b class='flag-5'>內部結構</b>及工作原理

    交叉導軌的內部結構

    交叉導軌的內部結構
    的頭像 發表于 08-16 17:52 ?704次閱讀
    交叉導軌的<b class='flag-5'>內部結構</b>

    MOSFET和IGBT內部結構與應用

    MOSFET和IGBT內部結構不同,決定了其應用領域的不同。
    的頭像 發表于 11-03 14:53 ?655次閱讀
    MOSFET和IGBT<b class='flag-5'>內部結構</b>與應用

    深度剖析汽車內部結構和原理

    很多人都想了解更多的汽車知識,以加深對汽車的了解,只是無奈汽車結構之復雜,機械知識之乏味,都一一放棄了。下面給大家準備了一組圖解汽車文章,結合圖片剖析汽車內部結構,讓復雜的原理變得通俗易懂。
    的頭像 發表于 12-28 10:31 ?530次閱讀
    深度<b class='flag-5'>剖析</b>汽車<b class='flag-5'>內部結構</b>和原理
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>