CPU的內部結構
ALU(算術邏輯單元)、控制單元、寄存器、Cache(緩存)
存儲器
易失性存儲器:
一般用作計算機內部存儲所以被稱為內存
特點:1,支持隨機訪問;2,掉電數據會丟失
非易失性存儲器:
磁盤、flash等
一般用作計算機外部存儲所以被稱為外存
特點:1,不支持隨機訪問;2,掉電數據不丟失;3,讀寫速度不如內存。
計算機系統一般會采用內存+外存的存儲結構:程序指令保存外存,當程序運行時,相應的程序會首先加載到內存,然后CPU從內存一條一條取指令、翻譯指令和運行指令。
計算機架構
馮.諾伊曼架構
指令和數據存放到同一個存儲器的不同的物理地址上。結構簡單,工程容易實現。
典型:x86、ARM7、MIPS等
哈弗架構
指令和數據被分開獨立存儲,它們分別被存放到程序存儲器和數據存儲器。每個存儲器都獨立編址,獨立訪問,而且指令和數據可以在一個時鐘周期內并行訪問。使用哈弗架構的處理器運行效率更高,但缺點是CPU實現會更加復雜。
典型:8051系列的單片機
混合架構
CPU工作頻率越來越高RAM跟不上CPU運行速度,為提高計算機的整體效率引入Cache機制:指令Cache和數據Cache。
RAM一次將向Cache傳送一批數據,CPU到Cache中取指令和數據,如果cpu發現Cache中沒有在去RAM中讀取。
CPU寫數據時會先寫入Cache中,等待時機將Cache中數據刷新到RAM中。
CPU性能提升:Cache
Cache本質是SRAM。Cache運行速度介于CPU和DRAM之間,插入在CPU和內存之間,用于解決兩者速度不匹配問題。
Cahce存儲的內存地址,一般經過地址映射轉化為已存儲和檢索的形式。
CPU為進一步提高性能大多數采取多級Cache:一級Cache、二級Cache、甚至三級Cache。
為何有些處理器沒有Cache?
C51、Corttex-M0等MCU的處理器沒有Cache。
原因:
1,處理器是低功耗、低成本。增加cache會增加功耗和成本。
2,處理器自身的工作頻率不高。
3,Cache無法保證實時性。嵌入式實時控制場景無法接受。
CPU性能提升:流水線
一條指令執行分為三個步驟:取指令、翻譯指令、執行指令
CPU內部三個單元:取指單元、譯碼單元、執行單元
流水線:
第一個時鐘周期取指單元工作,取指令1,其余空閑狀態。
第二個時鐘周期取指單元工作取指令2,譯碼單元也開始工作,開始翻譯指令1。
第三個時鐘周期取值單元工作取指令3,譯碼單元開始工作,翻譯指令2,執行單元開始執行指令1.
超流水線技術
五級以上的流水線被稱為超流水線。高性能處理器一般采用這種流水線。
Intel的i7處理器采用16級流水線,AMD的速龍64采用20級流水線,Intel的第三代奔騰四處理器有31級,被稱為史上最長的流水線。
執行的程序指令如果是順序結構的,沒有中斷或跳轉,流水線確實可以提高執行效率。但是當程序指令中存在跳轉、分支結構時,下面預取的指令可能就要全部丟掉了,需要到跳轉的地方重新取指令執行。
流水線冒險
流水線越深,一旦預取指令失敗,浪費和損失就會越嚴重,因為流水線中預取的幾十條指令可能都要丟棄掉,此時流水線就發生了停頓,無法按照預期繼續執行,這種情況我們一般稱為流水線冒險(hazard)。
結構冒險:所需要的硬件正在為前面的指令工作。
數據冒險:當前指令需要前面指令的運算數據才能執行。
控制冒險:需根據之前指令的執行結果決定下一步的行為。
多核CPU
單核的瓶頸:
在相同的半導體工藝制程下,芯片的面積越大,芯片的良品率就越低,芯片的成本就會越高,功耗也會越大。CPU性能提升受限。
單核處理器主頻每升1GHz,平均就要增加25W的功率。通過增加處理器核數,將大量繁重的計算任務分配到更多的Core上,可以提高處理器的整體性能。而根據阿姆達爾定律,程序中并行代碼的比例又決定了增加處理器核數所能帶來的性能提升上限,CPU的核數不一定越多越好,任務分配不當就可能造成“一核有難,八核圍觀”的尷尬場面
異構計算機
異構計算機:在SoC芯片內部集成不同的架構Core,如DSP、GPU、NPU、TPU等不同的架構處理單元。
GPU(Graphic Process Unit,圖形處理單元)主要用來處理圖像數據。
GPU在浮點運算、大數據處理、密碼破解、人工智能等領域都是一把好手,比CPU更適合做大規模并行的數據運算
DSP(Digital Signal Processing,數字信號處理器),主要用在音頻信號處理和通信領域。如手機的基帶信號處理
FPGA(Field Programmable Gate Array,現場可編程門陣列)在專用集成電路(Application Specific Integrated Circuit,ASIC)領域中是以一種半定制電路的形式出現的。FPGA與DSP相比,開發更具有靈活性,但成本也隨之上升,上手也比較難,因此主要用在一些軍事設備、高端電子設備、高速信號采集和圖像處理領域。
TPU(Tensor Processing Unit,張量處理器)是Google公司為提高深層網絡的運算能力而專門研發的一款ASIC芯片。
NPU(Neural Network Processing Unit,神經網絡處理器)是面向人工智能領域,基于神經網絡算法,進行硬件加速的處理器統稱。NPU使用電路來模擬人類的神經元和突觸結構,用自己指令集中的專有指令直接處理大規模的神經元和突觸。
地址與總線
地址的本質其實就是由CPU管腳發出的一組地址控制信號。因為這些信號是由CPU管腳直接發出的,因此也被稱為物理地址。地址信號線的位數決定了尋址空間的大小,32位計算機尋址空間是4G。
總線
總線是各種數字信號的集合,包括地址信號、數據信號、控制信號等。CPU通過總線與內存RAM、外部設備相連。
總線編址方式
計算機如何給設備分配地址的?
兩種編址方式:
統一編址:內存RAM和外部設備共享CPU的尋址空間。ARM、MIPS架構采用這種方式編址。
獨立編址:內存RAM和外部設備分別占用不同的地址空間。例如,X86架構CPU。
指令集與微架構
圖靈原型機基本思想:任何復雜的運算都可以分解為有限個基本指令的組合來完成。
不同架構的處理器支持的指令類型不同,CPU支持的有限個指令的集合我們稱之為指令集。
指令集作為CPU和編譯器的設計規范和參考標準,主要用來定義指令的格式、操作數的類型、寄存器的分配、地址的格式等,指令集主要由以下內容組成。
指令的分發、預取、解碼、執行、寫回。
操作數的類型、存儲、存取、旁路轉移。
Load/Store架構。
寄存器。
地址的格式、大端模式、小端模式。
字節對齊、邊界對齊等。
微架構
微架構,對應的英文是Microarchitecture,也就是處理器架構。集成電路工程師在設計處理器時,會按照指令集規定的指令,設計具體的譯碼和運算電路來支持這些指令的運行;指令集在CPU處理器內部的具體硬件電路的實現,我們就稱為微架構。
評論
查看更多