面試常見問題——計算機組成原理(一)

面試常見問題——計算機組成原理(一)

目錄:

  1. Cache和寄存器、虛擬存儲器的區別
  2. 計算機組成有哪些
  3. CISC和RISC
  4. 數據尋址方式
  5. 指令流水線
  6. 中斷處理流程
  7. DMA和中斷的區別

1、Cache和寄存器、虛擬存儲器的區別

  • 定義:
    • Cache定義:
      • 利用程序訪問的局部性原理,把程序中正在使用的部分存放在一個高速的、容量較小的臨時存儲器中,可用SRAM實現,使CPU的訪存操作大多針對Cache進行,從而大大提高程序的執行速度。
      • 引入目的:解決CPU和主存之間運算速度的差異。
    • 寄存器定義:
      • 寄存器是中央處理器內的組成部分。寄存器是有限存儲容量的高速存儲部件,它們可用來暫存指令、數據和位址。在控制器中,包含的寄存器有指令寄存器(IR)、程序計數器(PC)、指令譯碼器(ID)等。在運算器中,包含的寄存器主要有累加寄存器(ACC)、暫存寄存器、程序狀態字寄存器(PSW)。 
    • 虛擬存儲器定義:
      • 將主存或輔存的地址空間統一編址,從邏輯上對內存容量加以擴存。
      • 引入目的:解決主存不足的問題。
      • 依據:程序訪問的局部性原理
      • 通常採用相聯存儲器,可按內容、按地址訪問。
      • 實現技術:
        • 請求分頁存儲管理
        • 請求分段存儲管理
        • 請求段頁式存儲管理
  • 存儲器分層體系結構中,存儲器速度由快到慢依次爲寄存器、Cache、主存、輔存。
  • 虛擬存儲器和Cache的對比:
    • 相同點:
      • 都把數據劃分爲塊,並作爲基本的傳輸單位。
      • 都有地址的映射、替換算法、更新策略等問題。
        • Cache替換算法:
          • RAND(隨機算法):隨機地確定替換的Cache塊
          • FIFO(先進先出):選擇最早調入的存儲行進行替換
          • LRU(最近最少使用):選擇最近最久未被訪問的存儲行進行替換
          • LFU(最不經常使用):將一段時間內被訪問次數最少的存儲行進行替換
        • 虛擬存儲器替換算法:
          • OPT(最佳頁面替換算法,OPTimal replacement):選擇以後不再使用的頁面進行替換(目前無法實現)
          • FIFO(先進先出):選擇最早進入內存的頁面進行替換。可能出現Belady異常,即所分配的物理塊數增大而缺頁數也增大
          • LRU(最近最少使用):選擇最近最久未使用的頁面進行替換
          • CLOCK(時鐘置換算法,也稱爲最近未用算法Not Recently Used,NRU):選擇最近未使用的頁面進行替換
          • 改進型CLOCK:除了使用位,增加修改位,置換順序如下:
            • 未訪問,未修改
            • 未訪問,已修改
            • 已訪問,未修改
            • 已訪問,已修改
        • 虛擬存儲器頁面更新策略:
          • 固定分配局部置換
          • 可變分配局部置換
          • 可變分配全局置換
      • 都依據程序訪問的局部性原理,應用快速緩存的思想,將相對活躍的數據放在相對高速的部件中。
    • 不同點:
      • 解決問題不同。Cache主要解決系統速度;虛擬存儲器主要解決主存容量。
      • 實現方式不同。Cache全部由硬件實現;虛擬存儲器由操作系統和硬件共同實現,是邏輯上的存儲器。
      • 不命中時性能影響不同。虛擬存儲器系統不命中時對系統影響性能更大。
      • 能否與CPU直接通信。Cache不命中時,主存能與CPU直接通信,同時將數據調入Cache;虛擬存儲器系統不命中時,只能先由磁盤調入主存,而不能直接和CPU通信。
  • 一些定義:
    • 程序訪問的局部性原理:
      • 時間局部性:程序中某條指令一旦執行,不久後該指令可能再次執行;某數據被訪問過,不久後該數據可能再次被訪問。因爲程序存在循環。
      • 空間局部性:一旦程序訪問了某個存儲單元,不久後,其附近的存儲單元也將被訪問。因爲指令通常是順序存放,順序執行的,數據一般也是以向量,數組,表等形式聚集地存儲在一起的。
    • 虛地址(邏輯地址):用戶編程允許涉及的地址
    • 實地址(物理地址):實際的主存單元
    • 虛擬存儲器工作流程:
      • 由硬件對虛地址和實地址之間進行映射,並判斷這個虛地址對應的存儲單元內容是否已裝入主存。
      • 若已在主存中,則通過地址轉換,CPU可訪問主存指示的實際單元。
      • 若不在主存中,則把包含這個字的一頁或一段調入主存後再由CPU訪問。若主存已滿,則採用替換算法置換主存中的一段或一頁。
    • Cache工作流程:
      • 當Cache發出讀請求時,若訪存地址在Cache中命中,就將此地址轉換成Cache地址,直接對Cache進行讀操作,不訪問主存。
      • 若Cache不命中,則需要訪問主存,並把此字所在的塊一次性地從主存調入Cache。若Cache已滿,則採用替換算法置換Cache塊中原來某塊的信息。

2、計算機組成有哪些

  • 根據馮諾依曼體系中存儲程序的思想:
    • 計算機硬件系統由運算器、存儲器、控制器、輸入設備和輸出設備組成。
    • 指令和數據以二進制代碼表示,存儲在存儲器中,可以按地址訪問。
    • 指令由操作碼、地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存儲器中的位置。
    • 指令在存儲器中按順序存放。
  • 運算器:接收從控制器傳來的命令,對數據進行加工處理,完成算術運算和邏輯運算,核心是算術邏輯單元(ALU)
    • 算術邏輯單元(ALU):算術 / 邏輯運算
    • 累加寄存器(ACC):用於暫時存放ALU運算的結果,可作爲加法運算的一個輸入
    • 暫存寄存器:暫存從主存讀來的數據
    • 乘商寄存器(MQ)
    • 操作數寄存器(X)
    • 變址寄存器(IX)
    • 基址寄存器(BR)
    • 程序狀態字寄存器(PSW):保留由算術邏輯運算指令或測試指令的結果而建立的各種狀態信息。PSW中的位參與並決定微操作的形成
      • 溢出標誌(OF)
      • 符號標誌(SF)
      • 零標誌(ZF)
      • 進位標誌(CF)
    • 移位器:移位計算
    • 通用寄存器組:存放操作數(包括源操作數、目的操作數、中間結果)和各種地址信息等
  • 存儲器:用來存放程序和數據
    • 主存儲器(內存)
      • 存儲器地址寄存器(MAR):用於存放所要訪問的主存單元的地址。
      • 存儲器數據寄存器(MDR):用於存放向主存寫入的信息或從主存讀出的信息。
    • 輔存儲器(外存)
  • 控制器:執行指令,控制各部件自動協調地進行工作
    • 程序計數器(PC):指出下一條指令在主存中的存放地址
    • 指令寄存器(IR):保存當前正在執行的指令
    • 指令譯碼器:對操作碼字段進行譯碼,向控制器提供特殊的操作信號
    • 時序系統:產生各種時序信號,由統一時鐘(CLOCK)分頻得到
    • 微操作信號發生器:根據IR中的指令,PSW的狀態信息及時序信號,產生控制整個計算機各部件要用到的控制信號。
  • 輸入設備:將程序和數據以機器所能識別和接受的信息形式輸入到計算機
  • 輸出設備:將計算機的處理結果以某些形式輸出

3、CISC和RISC

  • CISC:複雜指令系統計算機,指令數目多,字長不固定,尋址方式多,寄存器數量少,一般爲微程序控制。
  • RISC:精簡指令系統計算機,指令數目少,字長固定,尋址方式少,寄存器數量多,一般爲組合邏輯控制。

4、數據尋址方式

  • 數據尋址:格式爲:操作碼 + 尋址特徵 + 形式地址A
  • 常見的數據尋址方式:
    • 隱含尋址:不顯式的給出第二操作數的地址,規定累加器作爲第二操作數地址
    • 立即(數)尋址:地址字段存放操作數本身,數據以補碼形式存放
    • 直接尋址:形式地址A即爲操作數的有效地址EA
    • 間接尋址:形式地址是操作數有效地址所在的存儲單元的地址
    • 寄存器尋址:在指令字中直接給出操作數所在的寄存器編號,操作數在寄存器中
    • 寄存器間接尋址:在指令字中給出操作數所在的寄存器編號,寄存器中給出的是操作數所在主存單元的地址
    • 相對尋址:程序計數器PC的內容加上指令格式中的形式地址而形成操作數的有效地址,廣泛應用於轉移指令
    • 基址尋址:基址寄存器BR的內容加上指令格式中的形式地址而形成操作數的有效地址,利於多道程序設計,可用於編制浮動程序
    • 變址尋址:變址寄存器IX的內容加上指令格式中的形式地址而形成操作數的有效地址,適用於編制循環程序,處理數組問題
      • 基址寄存器的內容由操作系統確定,值不可變,指令字的形式地址可變
      • 變址寄存器的內容由用戶確定,值可變,指令字的形式地址不可變
    • 堆棧尋址:從規定的堆棧中取出操作數

5、指令流水線

  • 定義:將指令的執行過程分爲多個階段,每個階段與其他階段並行執行。
  • 指令的執行階段:
    • 取指(Instruction Fetch,IF):根據PC內容訪問主存,取出一條指令送到IR中。
    • 譯碼(Instruction Decode,ID):指令譯碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法。
    • 執行(Execute,EX):根據操作碼字段,完成指令規定的功能。
    • 訪存(Memory,MEM):根據指令地址碼,得到操作數在主存中的地址,並從主存中讀取該操作數用於運算。
    • 寫回(Writeback,WB):把執行指令階段的運行結果數據寫回到某種存儲形式。
  • 影響流水線的因素:
    • 結構相關(資源衝突):多條指令在同一時刻爭用同一資源而形成的衝突。
      • 解決方法:
        • 後面的指令暫停一個時鐘週期
        • 單獨設置數據存儲器和指令存儲器
    • 數據相關(數據衝突):必須等前一條指令執行完才能執行後一條指令的情況。
      • 解決方法:
        • 數據旁路技術:設置相關專用通路,把前一條指令的ALU的計算結果作爲自己的輸入數據開始計算過程。
        • 指令編譯優化,調整指令順序。
        • 硬件阻塞,軟件插入“NOP”指令。
    • 控制相關(控制衝突):遇到轉移指令和其他改變PC值的指令而造成斷流。
      • 解決方法:
        • 提前預測,和提高預測準確率。
  • 流水線的性能指標:
    • 吞吐率(TP)
    • 加速比(S)
    • 效率(E)

6、中斷處理流程

  • 一些定義:
    • 中斷分類:
      • 按照中斷源的類別:
        • 內中斷:處理器和內存內部產生的中斷,如地址非法、校驗錯、存取訪問控制錯、算術操作溢出、數據格式非法、除數爲零、非法指令、用戶程序執行特權指令、分時系統的時間片中斷、用戶態到核心態的切換等
        • 外中斷:處理器和內存外部產生的中斷,如I/O中斷等
      • 按照軟硬件:
        • 軟件中斷(內中斷):通過某條指令產生的中斷
        • 硬件中斷(外中斷):通過外部的硬件產生的中斷
      • 按照是否可屏蔽:
        • 可屏蔽中斷(外中斷):在關中斷情況下不接受中斷請求
        • 非屏蔽中斷(外中斷):在關中斷情況下可以接受中斷請求
    • 中斷隱指令(硬件直接實現):
      • 關中斷(保護中斷現場,即CPU主要寄存器中的內容不被新的中斷打斷)
      • 保存斷點(即保存程序計數器中的內容)
      • 引出中斷服務程序(取出中斷服務程序的入口地址並傳送給程序計數器PC)
    • 中斷屏蔽技術:在處理中斷時,用中斷屏蔽字屏蔽掉某些中斷源。
  • 處理流程如下:
    • 發送中斷請求:中斷源向CPU發送中斷請求信號。
    • 進行中斷判優:中斷系統在任意一個瞬間只能響應一箇中斷源的請求。
      • 硬件中斷 > 軟件中斷
      • 非屏蔽中斷 > 可屏蔽中斷
      • DMA > I/O設備
      • 高速設備 > 低速設備
      • 輸入設備 > 輸出設備
      • 實時設備 > 普通設備
    • 執行中斷隱指令:
      • 關中斷
      • 保存斷點
      • 引出中斷服務程序
    • 保存現場和屏蔽字:現場信息一般指程序狀態字和中斷屏蔽寄存器等
    • 執行中斷服務程序,進行中斷事件處理
    • 恢復現場和屏蔽字:將現場和屏蔽字狀態恢復到原來的狀態
    • 開中斷:允許其他中斷得到響應
    • 中斷返回:執行中斷返回指令,使其返回到原程序的斷點處,以便繼續執行原程序

7、DMA和中斷的區別

  • I/O方式:
    • 程序查詢方式(軟件):由程序不斷的查詢外設的狀態,直到外設準備就緒
    • 程序中斷方式:在計算機執行現行程序的過程中,出現某些急需處理的異常情況或特殊請求,CPU暫時中止現行程序,而轉去對這些異常情況或特殊請求進行處理,在處理完畢後CPU又自動返回到現行程序的斷點處,繼續執行原程序。
    • DMA:在外設和主存之間開闢一條直接數據通道,信息傳送不再經過CPU,降低CPU在傳送數據時的開銷,不必中斷現行程序,I/O與主機並行工作,程序和傳送並行工作。
    • 通道:輸入/輸出通道是一個獨立於CPU的,專門管理I/O的處理機,它控制設備與主存直接進行數據交換。
  • DMA傳送過程:
    • 預處理:完成寄存器置初始值之類的準備工作。
    • 數據傳送:佔用總線傳輸數據,數據傳送完全由DMA控制。
    • 後處理:CPU執行中斷服務程序做結束DMA處理。
  • DMA和中斷的區別:
    • 中斷是程序的切換,需要保護和恢復現場;DMA除了預處理和後處理,其他時候不佔用CPU的任何資源。
    • 對中斷請求的響應只能發生在指令的執行週期後;對DMA請求的響應可以發生在取指週期、間址週期、執行週期後,只要CPU不佔用總線就可被響應。
    • 中斷傳送過程需要CPU的干預;DMA傳送過程不需要CPU的干預。
    • DMA請求的優先級高於中斷請求。
    • 中斷方式靠程序傳送,DMA方式靠硬件傳送。

參考文獻:

[1]王道論壇. 2020計算機組成原理考研複習指導. [M]北京:電子工業出版社,2019.1;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章