組成原理(五)中央處理器CPU


第五章 中央處理器CPU

5.1 CPU的功能和結構

  1. 控制器的功能
    (1)取指令
    (2)分析指令
    (3)執行指令,發出各種操作命令
    (4)控制程序輸入及結果輸出
    (5)總線管理
    (6)處理異常和特殊請求

  2. 運算器的功能
    實現算術運算和邏輯運算

  3. CPU結構框圖
    image_1atgs7k2e1h2j15k1revm9qk961g.png-7.1kB

  4. CPU寄存器
    (1)用戶可見的寄存器
          ( a ) 存放操作數:可做某種尋址方式所需的專用寄存器
          ( b ) 數據寄存器:存放操作數(滿足各種數據類型)。兩個寄存器拼接可存放雙字長的數據
          ( c ) 地址寄存器:存放地址,其位數應滿足最大的地質范圍。
          ( d ) 條件碼寄存器:存放條件碼,作為程序分支的依據。eg:正,負,0,溢出,進位
    (2)控制和狀態寄存器(用戶不可見)
          ( a ) 控制寄存器:
                PC -> MAR -> M -> MDR -> IR
                控制CPU操作,其中除PC用戶可見外,其他寄存器均不可見。
          ( b ) 狀態寄存器:存放條件碼和PSW寄存器
    其中PSW寄存器即為程序狀態寄存器,可以用來區分改程序處於用戶態還是內核態。每個進程都有一個PSW狀態字,1表示自身是內核態

5.2 指令執行過程

一. 三種周期

  1. 指令周期:
    (1)指令從取指,分析指令,到執行完成的全過程所需的全部時間。
    (2)有時指令周期還包括間指周期(間接尋址訪問主存)和中斷周期(響應中斷)
    (3)執行完指令后才能進入中斷周期,響應中斷
  2. 機器周期:
    (1)通常把一個指令周期划分為若干個機器周期,每個機器周期完成一個基本操作
    (2)不同的指令包含不同個數的機器周期
    (3)因為指令的而全部過程有多個步驟,取耗時最長的那個步驟作為機器周期
  3. 時鍾周期
    (1)一個機器周期內,要完成若干個微操作,每個微操作要耗費1個節拍,一個節拍就是一個時鍾周期

二. 指令周期的數據流

  1. 取指周期(分成以下幾個微操作)
    (1)這些微操作都在時鍾控制下進行,每個微操作占用一個節拍

    微操作 解釋
    (pc)-> MAR -> 地址線 PC寄存器中的指令地址打給MAR,MAR打給主存
    1 -> R (讀控制線置1) 控制線置駐村為讀信號,說明對該主存單元進行讀操作
    M(MAR)-> MDR 把主存相應位置的數據打給MDR
    MDR -> IR 把MDR中督導的指令打到IR指令寄存器
    OP(IR) -> CU 把指令中的操作碼字段打給控制單元CU
    (PC)+ 1 -> PC PC寄存器中的值根據編址方式+n,表示下次取指的內存單元號
  2. 執行周期
    (1)非訪存指令

    指令 作用 微操作
    CLA 請A 0 -> ACC
    COM 取反 \(\overline{ACC}\) -> ACC
    SHR 算術右移 L(ACC) -> R(ACC),ACC\(_0\) -> ACC()
    CSL 循環左移 R(ACC) -> L(ACC),ACC\(_0\) -> ACC()
    STAP 停機指令 0 -> G

(2)訪存指令
      ( a ) 加法指令:ADD X

|            指令|解釋|
|:--------|:--------:|
|            i. Ad(IR) -> MAR|指令寄存器的地址碼部分打到MAR|
|            i. 1 -> R|CU控制發出讀信號|
|            iii. M(MAR) -> MDR|把MAR地址上的數據打到MDR|
|            iv. (ACC) + (MDR) -> ACC|把ACC寄存器中的結果加上MDR中的結果,放到ACC寄存器中|

      ( b ) 存數指令:STA X

|            指令|解釋|
|:--------|:--------:|
|            i. Ad(IR) -> MAR|指令的地址碼部分放到MAR|
|            ii. 1 -> W|CU控制器發出寫信號|
|            iii. ACC -> MDR|ACC中的值打給MDR寄存器|
|            iv. MDR -> M(MAR)|MDR寄存器的值打給MAR中的地址|

      ( c ) 取數指令

|            指令|解釋|
|:--------|:--------:|
|            i. Ad(IR) -> MAR|指令的地址碼部分放到MAR|
|            ii. 1 -> R|CU控制器發出讀信號|
|            iii. M(MAR) -> MDR|MAR中的值打給MDR寄存器|
|            iv. MDR -> ACC|MDR寄存器的值打給ACC寄存器|

三. 控制單元CU的外部特性

  1. 輸入信號
    (1)時鍾
            ( a ) CU收全局時鍾控制
            ( b ) 一個是時鍾脈沖,發出一個操作命令或一組需要同時執行的操作命令
    (2)指令寄存器
            ( a ) OP(IR) -> CU 指令的操作碼字段發給CU控制單元
            ( b ) 控制信號與操作碼有關
    (3)標志
            CU 受標志控制,如溢出標志
    (4)外來信號
            eg:INTR 中斷請求 HRQ 總線請求
  2. 輸出信號
    (1)CPU內部的各種控制信號
    image_1atj0gndgk8l12061vacp3k17m8m.png-7kB
    (2)送至總線的信號
            MREQ : 訪存控制信號
            IO/M : 訪IO/存儲器的控制信號
            RD : 讀命令
            WR : 寫命令
            INTA : 中斷響應信號
            HLDA : 總現響應信號

四. 控制信號舉例(2種數據通路)

  1. 不采用CPU內部總線的方式:
    (1)不采用CPU內部總線的方式連接,則CPU內各個組件之間要單獨進行連接(與非門電路)
    (2)通過與非門電路開關的開閉進行通路。一般指令的執行從取指到執行,每個部件的工作順序是一定的,也就是這些開關的開閉順序是一致的,因此,把這些順序記錄下來變成微程序發送給哦控制器,就能控制指令執行
    image_1atjdn9uf5sa1sj11u4k1k5jadr9.png-105.3kB
  2. 采用CPU內部總線的方式
    (1)不采用CPU內部總線進行數據傳輸,使得與非門電路的數量很多,不易於管理。采用總線后,每個部件都把數據打到總線,每個部件的數據來源也來自於總線。只要保證同一時刻只有一份數據在總線上即可
    (2)這種方式,每個部件與CPU總線有門電路連接,只要同時把2個部件的開關打開,就能是數據在兩個部件上傳輸
    (3)這種方式,在執行Add命令時,數據不能經ALU計算后立刻打到總線,也可能總線傳來的數據不能立即放到ALU,因此引入Y寄存器和Z寄存器,來緩存將要計算的數和計算出來的結果

五. 多級時序系統

  1. 機器周期
    (1)機器周期的概念:所有指令執行過程的一個基准時間(取指令執行過程中耗時最長的過程的時間,eg:取址,譯碼,執行)
    (2)確定機器時間的大小需要2個因素:每條指令的執行步驟,每一個步驟所需的時間
    (3)以完成最復雜指令功能的時間為基准
            或以一次訪問存儲器的時間為基准(間址時訪存時間最長)
    (4)若指令字長 = 存儲字長,則取指周期 = 機器周期

  2. 時鍾周期(節拍,狀態)
    (1)每個機器周期完成一個指令階段,這個階段包含若干個微操作(即指令的數據流)
    (2)所以,將一個機器周期划分為若干個時間相等的時間段
    (3)一個時鍾周期可以完成一個或幾個微操作
    【注】:機器周期的時間是指令執行過程中最長階段的時間,因此,會導致有的階段節拍空閑,有的階段街拍滿載

  3. 機器速度與機器主頻的關系
    (1)機器主頻高,使得節拍耗時短,此時相同指令在執行過程中每個階段雖然節拍數一樣,但是每個節拍的耗時變短了
    (2)但是機器速度不只與機器主頻有關,還與指令集有關。指令集每個階段的微操作數越少,機器速度越快

  4. 不同微操作時序的控制方式
    (1)同步控制方式:任一微操作均由統一基准時標的時序信號控制
          以完成最復雜指令功能的時間為基准
          ( a )采用定長的機器周期:以最長的微操作序列和最繁的微操作作為基准
                eg:以下的指令執行步驟中,每個步驟分為4個機器周期
                image_1atldm2ad39mje419vbjd1g8s9.png-74.8kB
          ( b )采用不定長的機器周期:每個機器周期內的節拍數不等
                eg:如下圖所示,圖1取值階段占4個節拍,執行階段占3個節拍.
                image_1atlecomj1b3hjtsengmmuv8318.png-46.9kB
                圖2執行階段含有延長時間,比如在執行乘法指令時,一個乘法指令會分解為多個加法指令,造成執行時間延長
                image_1atledfh11nub111q14ks160i4qg1l.png-48.8kB
          ( c )采用中央控制和局部控制結合的方法:指令在執行過程中,采用中央控制器和局部控制器同時發送時序的方法控制節拍。
    (2)異步控制方式:
          無基准時標信號,無固定的周期節拍和嚴格的時鍾同步方式,而是采用應答方式來確定指令到哪一步
    (3)聯合控制方式:同步和異步相結合的方式
    (4)人工控制

5.3 控制器CU的功能和工作原理

(剖析CU如何發送指令,這是計算機的核心)基本概念:
(1)微命令:控制部件向執行部件發出的各種控制命令。它是構成控制序列的最小單位
                   eg:打開或關閉控制們的電位信號,把某個寄存器的值打入脈沖等
(2)微操作:微命令的操作過程就是微操作
                  微命令和微操作是一一對應的
                  微操作是微命令的操作過程
                  微操作是執行部件中最基本的操作
(3)由於數據通路的結構關系,微操作分為相容和互斥的兩種:
                  互斥的微操作:不能再同一個節拍中執行的微操作。可用編碼表示
                  相容的微操作:能夠同時在同一個節點並行執行的微操作。必須各站一位。eg:不相關的部件的微操作
(4)微指令:(並行微命令的集合)
        把同一個CPU周期內並行執行的微操作放在控制信息里,存儲在控制存儲器里,稱為一條微指令。
        一條微指令分為兩個部分:
                - 操作控制字段:又稱微操作碼字段,用於產生哥哥微操作的控制信號
                - 順序控制字段:又稱微地址碼字段。用於產生下一條要執行的微指令地址。記作\(\mu mar\)\(cmar\)(control)
                - 【注】:微指令沒有操作數,因為控制單元不用取操作數。而普通指令通過PC找到下條指令,而微指令在指令中給出下條指令的地址
(5)微程序
一系列微指令的有序集合就是微程序,一條機器指令對應一個微程序。
控制單元在拿到操作碼后,開始查找內部對應這個操作碼的微程序,按序執行這個微程序的每條微指令,每條微指令都在一個節拍下進行並行的微命令,於是執行了這條指令

控制單元進行控制的設計方法:

  1. 硬布線控制器-組合邏輯設計
    (1)組合邏輯控制單元框圖
           image_1atm06ina10muni14vt1hc5pes9.png-20.4kB
    (2)節拍信號
           節拍信號.PNG-134.6kB
    (3)安排微操作時序的原則
           (a)微操作的先后順不得改變
           (b)一個節拍內盡量完成多的微操作
           (c)占用時間較短的微操作盡量安排在一個節拍內完成,並允許有先后順序。
    (4)取值周期微操作的節拍安排
    (5)組合邏輯的設計步驟
           (a)列出所有操作碼的操作時間表
           (b)寫出未操作命令的最簡表達式
           (c)畫出邏輯圖
    所謂硬布線設計邏輯就是把每個存在的命令通過不同的與非門電路開閉順序控制每個節拍的微操作

  2. 微程序控制器-微程序設計
    (1)組合邏輯實現控制單元的微操作順序,速度很快,但設計上很復雜,而且電路一經成型,就不能在改變
    ,微程序設計改變了這個缺點,指令的思想進行微指令的設計
    (2)一條機器指令對應一個微程序,既然是程序,就滿足存儲邏輯
           eg:add,lad對應不同微程序
    (3)微程序設計方式,在CU內部有一個存儲器,存儲每條指令對應的微程序。這個存儲器和主存結構類似,有地址編號,每個編號對應的一行存儲微命令和下地址(下一個微命令的CU存儲器地址) CMDR結構圖
           image_1atm4p1au1qv45du134a9a7159bl.png-17.6kB
    (4)微程序設計的CU內部結構圖
           image_1atm5di6s10491ji6buuvh365312.png-25.3kB
    (5)工作原理

    取指(微指令)階段:
    1. M -> CMAR                                       # 把CU存儲單元的地址號發送給CMAR
    2. CM(CMAR) -> CMDR                                # 把CMAR存儲塊中的微指令發送給CMDR
    3. 由CMDR發出命令,形成下條微指令地址(M+1)       # 下地址形成部件形成下條微指令的地址
       Ad(CMDR) -> CMAR                                # 微指令的下地址部分送給CMAR
       CM(CMAR) -> CMDR                                # 根據下地址取數據發送到CMDR
       由CMDR發命令,形成下條微指令地址(M+2)         # 繼續形成下地址
    
    執行(微指令)階段:以LDA指令舉例
    1. OP(IR)-> 微地址形成部件 -> CMAR      # 微地址形成部件根據指令的操作碼字段,解析出微指令的地址
    2. CM(CMAR) -> CMDR                    # 把地址上的微指令發送給CMDR
    # 此時,CMDR中的數據是微指令,后面的下地址部分發送給CMAR,便於取值
    3. 由CMDR發出命令,Ad(CMDR) -> CMAR,CM(CMAR) -> CMDR      
    
  3. 微指令的編碼方式
    在通過下地址取出下條微指令后,不能直接執行這個微指令的操作碼部分,因為這些操作內容是經過編碼的
    (1)直接編碼方式:
           (a)微指令的運作內實質就是對與非門電路各個開關的開閉控制,例如CM(CMAR)->CMDR這個微操作,只要把CMAR和CMDR之間的開關打開,數據就能流通到CMDR。所以直接編碼方式,把每一個微操作(每一個開關閉合)用1位表示,使得微命令的操作碼字段對所有開關的開閉用0,1表示.如下圖所示:
           image_1atnp08971d5g82aigf17sk1jcq9.png-4.1kB
           (b)直接編碼導致CU存儲單元很大。因為需要把所有微操作表示出來
    (2)字段直接編碼方式
           (a)字段直接編碼方式是對直接編碼的改進,它把微指令的控制字段分成若干段,你妹斷經過譯碼后確定是那種操作
           (b)eg:可以把操作碼的3位分成一段,這樣經過編碼后,3位能表示7種微操作(保留一個編成空操作)。
           (c)需要注意的是,只有互斥的微操作才可以編到一個段內。
                  因為如果2個微操作相容,則說明可以在同一個時鍾周期內同時執行,而編碼后只能執行一個微操作。
                    image_1atnpkp9110441to4tsvco11g86m.png-5.6kB
    (3)字段間接編碼方式
           字段直接編碼在譯碼過程中,只受本字段數據的影響。而字段間接編碼的方式,本字段的譯碼過程還要受到其它字段的影響。
           image_1atnr2llr18ehgcm1169drdh8f13.png-7kB
    (4)混合方式:直接編碼,字段編碼(字段直接編碼,字段間接編碼)混合使用

  4. 微指令序列地址的形成
    (1)根據指令操作碼字段,由下地址形成部件產生。eg:add指令對應的微指令地址
    (2)根據微指令的下地址字段指出
    (3)增量計數器的值:(CMAR)+ 1 -> CMAR
    (4)分支轉移:
           帶有分支轉移的微指令格式如下:(其中轉移方式也稱判別字段,根據外部條件判別跳轉。eg:加法指令的溢出位)
           image_1atnrqvht1hab13j413d15gv1td91g.png-5kB
    (5)測試網絡
    (6)由硬件產生微程序的入口地址
           整個計算機運行起來的第一條微指令地址由專門的硬件產生。eg:開機時第一條微指令的位置

eg:某程序控制器中,采用水平直接控制編碼的微指令格式,后續微指令的地址由微指令的下地址字段直接給出,已知機器共有28個微指令,6個互斥的可判定外部條件,CU控制器的容量為512×*40位,請設計微指令的格式:
因為采用直接控制的編碼方式,且有28個微指令,所以需要28個bit位來表示這些微操作。6個外部條件互斥,所以用3個bit表示轉移方式,且地址由512行,所以下地址需要占用9位(\(2^9 = 512\)
即:微指令控制信息28bit | 外部轉移條件3bit | 下地址9bit

> **eg:某機器共有52個微操作控制信號,構成5組互斥類的微操作命令組,各組分別有5,8,2,15,22個微命令。已知,可判定的外部條件有2個,微指令字長為28位

(1)按水平型微指令設計微指令格式,要求下地址字段直接給出后續微指令的地址。
(2)求控制存儲器的容量**
解:因為采用分組的微指令編碼形式,每組要保留一個空操作編碼,所以每組需要編碼的指令個數分別為6,9,3,16,23.各占3,4,2,4,5,共18位.題目中沒有說2個外部條件是互斥的,所以要有2位轉移控制位,因此剩下的28-18-2=8位做下地址。存儲器共\(2^8 * 28 位\)

  1. 水平微指令和垂直微指令
    (1)上面講解的所有微指令編碼方式,都是用於水平型微指令。水平的意思是經過編碼使得一條微指令可以發出多個微操作。而垂直型微指令的格式和機器指令類似,每條微指令都包含操作碼,只能表示一種微操作,最多表示2種微操作。

  2. 指令流水線
    六級指令流水。需要6個機器周期


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM