精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

一手掌握計算機體系結構核心內容

Linux閱碼場 ? 來源:《計算機體系結構基礎 第 ? 作者:《計算機體系結構 ? 2022-03-21 10:23 ? 次閱讀

很多人對計算機體系結構有一定的了解,但要問起什么是計算機體系結構,多半答不上來。

計算機體系結構(Computer Architecture)是描述計算機各組成部分及其相互關系的一組規則和方法,是程序員所看到的計算機屬性。計算機體系結構主要研究內容包括指令系統結構(Instruction Set Architecture,簡稱ISA)和計算機組織結構(Computer Organization)。微體系結構(Micro-architecture)是微處理器的組織結構,并行體系結構是并行計算機的組織結構。馮·諾依曼結構的存儲程序和指令驅動執行原理是現代計算機體系結構的基礎。

計算機體系結構可以有不同層次和形式的表現方式。計算機體系結構通常用指令系統手冊和結構框圖來表示,結構框圖中的方塊表示計算機的功能模塊,線條和箭頭表示指令和數據在功能模塊中的流動,結構框圖可以不斷分解一直到門級或晶體管級。計算機體系結構也可以用高級語言如C語言來表示,形成結構模擬器,用于性能評估和分析。用硬件描述語言(如Verilog)描述的體系結構可以通過電子設計自動化(Electronic Design Automation,簡稱EDA)工具進行功能驗證和性能分析,轉換成門級及晶體管級網表,并通過布局布線最終轉換成版圖,用于芯片制造。

01

馮·諾依曼結構及其基本原理

1945年匈牙利數學家馮·諾依曼結合EDVAC計算機的研制提出了世界上第一個完整的計算機體系結構,被稱為馮·諾依曼結構。馮·諾依曼結構的主要特點是:①計算機由存儲器、運算器、控制器、輸入設備、輸出設備五部分組成,其中運算器和控制器合稱為中央處理器(Central Processing Processor,簡稱CPU)或處理器。②存儲器是按地址訪問的線性編址的一維結構,每個單元的位數固定。指令和數據不加區別混合存儲在同一個存儲器中。③控制器從存儲器中取出指令并根據指令要求發出控制信號控制計算機的操作??刂破髦械某绦蛴嫈灯髦该饕獔绦械闹噶钏诘拇鎯卧刂?。程序計數器一般按順序遞增,但可按指令要求而改變。④以運算器為中心,輸入/輸出(Input/Output,簡稱IO)設備與存儲器之間的數據傳送都經過運算器。

隨著技術的進步,馮·諾依曼結構得到了持續改進,主要包括:①以運算器為中心改進為以存儲器為中心,數據流向更加合理,從而使運算器、存儲器和IO設備能夠并行工作。②由單一的集中控制改進為分散控制。早期的計算機工作速度低,運算器、存儲器、控制器和IO設備可以在同一個時鐘信號的控制下同步工作?,F在運算器、存儲器與IO設備的速度差異很大,需要異步分散控制。③從基于串行算法改進為適應并行算法,出現了流水線處理器、超標量處理器、向量處理器、多核處理器、對稱多處理機(Symmetric Multi-Processor,簡稱SMP)、大規模并行處理機(Massively Parallel Processor,簡稱MPP)和機群系統等。④出現了為適應特殊需要的專用計算機,如圖形處理器(Graphic Processing Unit,簡稱GPU)、數字信號處理器(Digital Signal Processor,簡稱DSP)等。

雖然經過了長期的發展,以存儲程序和指令驅動執行為主要特點的馮·諾依曼結構仍是現代計算機的主流結構。非馮·諾依曼計算機的研究成果包括依靠數據驅動的數據流計算機、圖約計算機等。

02

指令系統結構

計算機系統為軟件編程提供不同層次的功能和邏輯抽象,主要包括應用程序編程接口(Application Programming Interface,簡稱API)、應用程序二進制接口(Application Binary Interface,簡稱ABI)以及ISA三個層次。

API是應用程序的高級語言編程接口,在編寫程序的源代碼時使用。常見的API包括C語言、Fortran語言、Java語言、JavaScript語言接口以及OpenGL圖形編程接口等。使用一種API編寫的應用程序經重新編譯后可以在支持該API的不同計算機上運行。

ABI是應用程序訪問計算機硬件及操作系統服務的接口,由計算機的用戶態指令和操作系統的系統調用組成。為了實現多進程訪問共享資源的安全性,處理器設有“用戶態”與“核心態”。用戶程序在用戶態下執行,操作系統向用戶程序提供具有預定功能的系統調用函數來訪問只有核心態才能訪問的硬件資源。當用戶程序調用系統調用函數時,處理器進入核心態執行諸如訪問IO設備、修改處理器狀態等只有核心態才能執行的指令。處理完系統調用后,處理器返回用戶態執行用戶代碼。相同的應用程序二進制代碼可以在相同ABI的不同計算機上運行。

ISA是計算機硬件的語言系統,也叫機器語言,是計算機軟件和硬件的界面,反映了計算機所擁有的基本功能。計算機硬件設計人員采用各種手段實現指令系統,軟件設計人員使用指令系統編制各種軟件,用這些軟件來填補指令系統與人們習慣的計算機使用方式之間的語義差距。設計指令系統就是要選擇應用程序和操作系統中一些基本操作應由硬件實現還是由軟件通過一串指令實現,然后具體確定指令系統的指令格式、類型、操作以及對操作數的訪問方式。相同的應用程序及操作系統二進制代碼可以在相同ISA的不同計算機上運行。

ISA通常由指令集合、處理器狀態和例外三部分組成。

指令包含操作編碼和操作數編碼,操作編碼指明操作類型,操作數編碼指明操作對象。常見的指令編碼方式包括復雜指令系統(Complex Instruction Set Computer,簡稱CISC)、精簡指令系統(Reduced Instruction Set Computer,簡稱RISC)和超長指令字(Very Long Instruction Word,簡稱VLIW)等。

指令的操作主要包括:運算指令,如加減乘除、邏輯運算、移位等;數據傳送指令,如取數和存數;程序控制指令,如條件和非條件轉移、函數調用和返回等;處理器狀態控制指令,如系統調用指令、調試指令、同步指令等。

指令的操作數包括立即數、寄存器、存儲器、IO設備寄存器等。立即數是指令中直接給出的數據。寄存器用于保存處理器最常用的數據,包括通用寄存器、浮點寄存器、控制寄存器等,處理器訪問寄存器時直接在指令中指明要訪問的寄存器號。存儲器是計算機中保存指令和數據的場所,計算機取指令和存取數據都要先計算指令和數據所處的存儲單元地址并根據地址來讀寫存儲器。IO設備都有專門的設備控制器,設備控制器向處理器提供一組IO設備寄存器,處理器通過讀寫IO設備寄存器來獲知IO設備狀態并控制IO設備,處理器寫入IO設備寄存器的數據,會被設備控制器解釋成控制IO設備的命令。

指令需要明確操作數的數據表示、編址方式、尋址方式和定位方式等。數據表示給出指令系統可直接調用的數據類型,包括整數、實數、布爾值、字符等。編址方式給出編址單位、編址方法和地址空間等,其中:編址單位有字編址、字節編址和位編址,普遍使用的是字節編址;常見的編址方法有大尾端(Big Endian)和小尾端(Little Endian)兩種;地址空間包括寄存器空間、存儲器空間和IO設備空間,有些ISA把存儲器和IO設備統一編址,有些ISA把寄存器、存儲器和IO設備統一編址。尋址方式主要有:立即數尋址、寄存器尋址、直接尋址、間接尋址、變址尋址(包括相對尋址和基址尋址)和堆棧尋址等。定位方式確定指令和數據的物理地址,包括以下幾種:直接定位方式在程序裝入主存儲器之前確定指令和數據的物理地址;靜態定位方式在程序裝入主存儲器的過程中進行地址變換,確定指令和數據的物理地址;動態定位方式在程序執行過程中,當訪問到相應的指令或數據時才進行地址變換,確定指令和數據的物理地址,現代計算機多采用動態定位方式。

通用計算機至少要有兩種工作狀態:核心態和用戶態。兩個狀態下所能使用的指令和存儲空間等硬件資源有差別。一般來說,只有操作系統才能工作在核心態,用戶程序只能工作在用戶態并可以通過例外和系統調用進入核心態。有些處理器有更多工作狀態,如核心態(Kernel)、監督態(Hypervisor)、管理態(Supervisor)、用戶態(User)等。

例外(Exception)系統是現代計算機的重要組成部分,除了管理外部設備之外,還承擔了包括故障處理、實時處理、分時操作系統、程序的跟蹤調試、程序的監測、用戶程序與操作系統的聯系等任務。發生例外時,處理器需要保存例外原因、例外指令的程序計數器內容等信息,把處理器狀態切換為核心態并跳轉到事先指定的操作系統例外處理入口地址;執行完例外處理程序后,處理器狀態切換回發生例外前的狀態并跳轉回發生例外的指令繼續執行。指令系統要指明例外源的分類組織、例外系統的軟硬件功能分配、例外現場的保存和恢復、例外優先級、例外響應方式和屏蔽方式等。

03

計算機組織結構

計算機組織結構指計算機的組成部分及各部分之間的互連實現。典型計算機的基本組成包括CPU、存儲器、IO設備,其中CPU包括運算器和控制器,IO設備包括輸入設備和輸出設備。計算機從輸入設備接收程序和數據,存放在存儲器中;CPU運行程序處理數據;最后將結果數據通過輸出設備輸出。

運算器包括算術和邏輯運算部件、移位部件、寄存器等。復雜運算如乘除法、開方及浮點運算可用程序實現或由運算器實現。寄存器既可用于保存數據,也可用于保存地址。運算器還可設置條件碼寄存器等專用寄存器,條件碼寄存器保存當前運算結果的狀態,如運算結果是正數、負數或零,是否溢出等。

控制器控制指令流和每條指令的執行,內含程序計數器和指令寄存器等。程序計數器存放當前執行指令的地址,指令寄存器存放當前正在執行的指令。指令通過譯碼產生控制信號,用于控制運算器、存儲器、IO設備的工作。這些控制信號可以用硬連線邏輯產生,也可以用微程序產生,也可以兩者結合產生。為了獲得高指令吞吐率,可以采用指令重疊執行的流水線技術,以及同時執行多條指令的超標量技術。當遇到執行時間較長或條件不具備的指令時,把條件具備的后續指令提前執行(稱為亂序執行)可以提高流水線效率??刂破鬟€產生一定頻率的時鐘脈沖,用于計算機各組成部分的同步。

存儲器存儲程序和數據,又稱主存儲器或內存,一般用動態隨機存儲器(Dynamic Random Access Memory,簡稱DRAM)實現。CPU可以直接訪問它,IO設備也頻繁地和它交換數據。存儲器的存取速度往往滿足不了CPU的快速要求,容量也滿足不了應用的需要,為此將存儲系統分為高速緩存(Cache)、主存儲器和輔助存儲器三個層次。Cache存放當前CPU最頻繁訪問的部分主存儲器內容,可以采用比DRAM速度快但容量小的靜態隨機存儲器(Static Random Access Memory,簡稱SRAM)實現。數據和指令在Cache和主存儲器之間的調動由硬件自動完成。為擴大存儲器容量,使用磁盤、磁帶、光盤等能存儲大量數據的存儲器作為輔助存儲器。計算機運行時所需的應用程序、系統軟件和數據等都先存放在輔助存儲器中,在運行過程中分批調入主存儲器。數據和指令在主存儲器和輔助存儲器之間的調動由操作系統完成。CPU訪問存儲器時,面對的是一個高速(接近于Cache的速度)、大容量(接近于輔助存儲器的容量)的存儲器?,F代計算機中還有少量只讀存儲器(Read Only Memory,簡稱ROM)用來存放引導程序和基本輸入輸出系統(Basic Input Output System,簡稱BIOS)等?,F代計算機訪問內存時采用虛擬地址,操作系統負責維護虛擬地址和物理地址轉換的頁表,集成在CPU中的存儲管理部件(Memory Management Unit,簡稱MMU)負責把虛擬地址轉換為物理地址。

IO設備實現計算機和外部世界的信息交換。傳統的IO設備有鍵盤、鼠標、打印機和顯示器等;新型的IO設備能進行語音、圖像、影視的輸入輸出和手寫體文字輸入,并支持計算機之間通過網絡進行通信;磁盤等輔助存儲器在計算機中也當作IO設備來管理。處理器通過讀寫IO設備控制器中的寄存器來訪問及控制IO設備。高速IO設備可以在處理器安排下直接與主存儲器成批交換數據,稱為直接存儲器訪問(Directly Memory Access,簡稱DMA)。處理器可以通過查詢設備控制器狀態與IO設備進行同步,也可以通過中斷與IO設備進行同步。

由若干個CPU、存儲器和IO設備可以構成比單機性能更高的并行處理系統。

現代計算機各部件之間采用總線互連。為了便于不同廠家生產的設備能在一起工作以及設備的擴充,總線的標準化非常重要。常見的總線包括片上總線如AXI總線,系統總線如QPI和HT總線,內存總線如SDRAM總線,IO總線如PCIE、SATA、USB總線等。

04

微體系結構

半導體工藝的發展允許在單個芯片內部集成CPU,稱為微處理器(Microprocessor)。微體系結構(簡稱微結構)是微處理器的組織結構,描述處理器的組成部分及其互連關系,以及這些組成部分及其互連如何實現指令系統的功能。對于同一個指令系統,復雜的微結構性能高,功耗和成本也高;簡單的微結構性能低,功耗和成本也低。隨著半導體工藝的不斷發展,實現相同指令系統的處理器微結構不斷升級并不斷提高性能。

計算機執行指令一般包含以下過程:從存儲器取指令并對取回的指令進行譯碼,從存儲器或寄存器讀取指令執行需要的操作數,執行指令,把執行結果寫回存儲器或寄存器。上述過程稱為一個指令周期。計算機不斷重復指令周期直到完成程序的執行。體系結構研究的一個永恒主題就是不斷加速上述指令執行周期,從而提高計算機運行程序的效率。人們提出了很多提高指令執行效率的技術,包括RISC技術、指令流水線技術、高速緩存技術、轉移預測技術、亂序執行技術、超標量(又稱為多發射)技術等。

RISC技術。自20世紀40年代發明電子計算機以來,處理器結構和指令系統經歷了一個由簡單到復雜,由復雜到簡單,又由簡單到復雜的否定之否定過程。早期的處理器結構及其指令系統由于工藝技術的限制,不可能做得很復雜。隨著工藝技術的發展,20世紀60年代后流水線技術、動態調度技術、向量機技術被廣泛使用,處理器結構和指令系統變得復雜。20世紀80年代提出的RISC技術通過減少指令數目、定長編碼、降低編碼密度等以簡化指令的取指、譯碼、執行的邏輯來提高頻率,通過增加寄存器數目及load-store結構來提高效率。后來隨著深度流水、超標量、亂序執行的實現,RISC結構變得越來越復雜。

RISC指令采用load-store結構,運算指令從寄存器讀取操作數并把結果寫回寄存器,訪存指令則負責在寄存器和存儲器間交換數據,運算指令和訪存指令分別在不同的功能部件執行。在load-store結構中,運算器只需比較指令的寄存器號來判斷指令間的數據相關,訪存部件只需比較訪存指令的地址來判斷指令間的數據相關,從而支持高效的流水線、多發射及亂序執行技術。X86系列從Pentium Ⅲ開始,把CISC指令翻譯成若干RISC微操作以提高指令流水線效率,如Haswell微結構最多允許192個內部微操作亂序執行。

指令流水線技術。指令流水線把一條指令的執行劃分為若干階段(如分為取指、譯碼、執行、訪存、寫回階段)來減少每個時鐘周期的工作量,從而提高主頻;并允許多條指令的不同階段重疊執行實現并行處理(如一條指令處于執行階段時,另一條指令處于譯碼階段)。雖然同一條指令的執行時間沒有變短,但處理器在單位時間內執行的指令數增加了。

指令流水線的執行單元包括算術和邏輯運算部件(Arithmetic Logic Unit,簡稱ALU)、浮點運算部件(Floating Point Unit,簡稱FPU)、向量運算部件、訪存部件、轉移部件等。這些部件在流水線的調度下具體執行指令規定的操作。運算部件的個數和延遲,訪存部件的存儲層次、容量和帶寬,以及轉移部件的轉移猜測算法是決定微結構性能的重要因素。

Cache技術。隨著工藝技術的發展,處理器的運算速度和內存容量按摩爾定律的預測指數增加,但內存速度提高非常緩慢,與處理器速度的提高形成了“剪刀差”。

工藝技術的上述特點使得訪存延遲成為以存儲器為中心的馮·諾依曼結構的主要瓶頸。Cache技術利用程序訪問內存的時間局部性(一個單元如果當前被訪問,則近期很有可能被訪問)和空間局部性(一個單元被訪問后,與之相鄰的單元也很有可能被訪問),使用速度較快、容量較小的Cache臨時保存處理器常用的數據,使得處理器的多數訪存操作可以在Cache上快速進行,只有少量訪問Cache不命中的訪存操作才訪問內存。Cache是內存的映像,其內容是內存內容的子集,處理器訪問Cache和訪問內存使用相同的地址。從20世紀80年代開始,RISC處理器就開始在處理器芯片內集成KB級的小容量Cache?,F代處理器則普遍在片內集成多級Cache,典型的多核處理器每個處理器核的一級指令和數據Cache各幾十KB,二級Cache為幾百KB,而多核共享的三級Cache為幾MB到幾十MB。

Cache技術和指令流水線技術相得益彰。訪問處理器片外內存的長延遲使流水線很難發揮作用,使用片內Cache可以有效降低流水線的訪存時間,提高流水線效率。Cache容量越大,則流水線效率越高,處理器性能越高。

轉移預測技術。馮·諾依曼結構指令驅動執行的特點使轉移指令成為提高流水線效率的瓶頸。典型應用程序平均每5~10條指令中就有一條轉移指令,而轉移指令的后續指令需要等待轉移指令執行結果確定后才能取指,導致轉移指令和后續指令之間不能重疊執行,降低了流水線效率。隨著主頻的提高,現代處理器流水線普遍在10~20級之間,由于轉移指令引起的流水線阻塞成為提高指令流水線效率的重要瓶頸。

轉移預測技術可以消除轉移指令引起的指令流水線阻塞。轉移預測器根據當前轉移指令或其他轉移指令的歷史行為,在轉移指令的取指或譯碼階段預測該轉移指令的跳轉方向和目標地址并進行后續指令的取指。轉移指令執行后,根據已經確定的跳轉方向和目標地址對預測結果進行修正。如果發生轉移預測錯誤,還需要取消指令流水線中的后續指令。為了提高預測精度并降低預測錯誤時的流水線開銷,現代高性能處理器采用了復雜的轉移預測器。

亂序執行技術。如果指令i是條長延遲指令,如除法指令或Cache不命中的訪存指令,那么在順序指令流水線中指令i后面的指令需要在流水線中等待很長時間。亂序執行技術通過指令動態調度允許指令i后面的源操作數準備好的指令越過指令i執行(需要使用指令i的運算結果的指令由于源操作數沒有準備好,不會越過指令i執行),以提高指令流水線效率。為此,在指令譯碼之后的讀寄存器階段,判斷指令需要的操作數是否準備好。如果操作數已經準備好,就進入執行階段;如果操作數沒有準備好,就進入稱為保留站或者發射隊列的隊列中等待,直到操作數準備好后再進入執行階段。為了保證執行結果符合程序規定的要求,亂序執行的指令需要有序結束。為此,執行完的指令均進入一個稱為重排序緩沖(Re-Order Buffer,簡稱ROB)的隊列,并把執行結果臨時寫入重命名寄存器。ROB根據指令進入流水線的次序有序提交指令的執行結果到目標寄存器或存儲器。CDC6600和IBM 360/91分別使用記分板和保留站最早實現了指令的動態調度。

重命名寄存器與指令訪問的結構寄存器相對應。為了避免多條指令訪問同一個結構寄存器而使該寄存器成為串行化瓶頸,指令流水線可以把對該結構寄存器的訪問定向到重命名寄存器。亂序執行流水線把指令執行結果寫入重命名寄存器而不是結構寄存器,以避免破壞結構寄存器的內容,到順序提交階段再把重命名寄存器內容寫入結構寄存器。兩組執行不同運算但使用同一結構寄存器的指令可以使用不同的重命名寄存器,從而實現并行執行。

超標量。工藝技術的發展使得在20世紀80年代后期出現了超標量處理器。超標量結構允許指令流水線的每一階段同時處理多條指令。例如Alpha 21264處理器每拍可以取4條指令、發射6條指令、寫回6條指令、提交11條指令。如果把單發射結構比作單車道馬路,多發射結構就是多車道馬路。

由于超標量結構的指令和數據通路都變寬了,使得寄存器端口、保留站端口、ROB端口、功能部件數都需要增加,例如Alpha 21264的寄存器堆有8個讀端口和6個寫端口,數據Cache的RAM通過倍頻支持一拍兩次訪問?,F代超標量處理器一般包含兩個以上訪存部件、兩個以上定點運算部件以及兩個以上浮點運算部件。超標量結構在指令譯碼或寄存器重命名時不僅要判斷前后拍指令的數據相關,還需要判斷同一拍中多條指令間的數據相關。

05

并行體系結構

并行體系結構是并行計算機系統的組織結構,通過把任務劃分為多個進程或線程,讓不同的處理器并行運行不同的進程或線程來提高性能。此外,隨著處理器訪存延遲的增加,Cache失效導致流水線長時間堵塞,處理器可以在一個線程等待長時間訪存時快速切換到另一個線程執行以提高流水線效率。

多進程并行存在于多個操作系統之間或一個操作系統之內。用于高性能計算的MPI并行程序以及機群數據庫是存在于多個操作系統之間的多進程并行的典型應用;由操作系統調度的多道程序則是操作系統之內多進程并行的典型應用。多線程并行只存在于一個操作系統之內。線程的粒度比進程小,線程的上下文也比進程簡單。傳統的多線程切換由操作系統調度并保留上下文,現代處理器通過硬件實現多份線程上下文來支持單周期的多線程切換。同時多線程(Simultaneous Multi-Threading,簡稱SMT)技術甚至允許超標量指令流水線的同一流水級同時運行來自不同線程的指令?,F代處理器還通過硬件實現多份操作系統上下文來支持多個操作系統的快速切換,從而提高云計算虛擬機的效率。

并行處理結構普遍存在于傳統的大型機、服務器和高端工作站中。包含2~8個CPU芯片的小規模并行服務器和工作站一直是事務處理市場的主流產品;包含16~1024個CPU芯片的大型計算機在大型企業的信息系統中比較普遍;用于科學和工程計算的高性能計算機則往往包含上萬個CPU芯片。隨著集成電路集成度的不斷提高,把多個CPU集成在單個芯片內部的多核CPU逐漸成為主流的CPU芯片產品。多核CPU芯片最早出現在嵌入式領域,把多個比較簡單的CPU集成在一個芯片上。2005年的個人計算機CPU芯片開始集成兩個CPU核?,F在的市場主流個人計算機CPU芯片一般集成2~4個CPU核,服務器CPU芯片則集成8~32個CPU核,專用處理器如GPU則集成幾百到上千個CPU核。

并行處理系統通過互連網絡把多個處理器連接成一個整體。常見的互連網絡包括總線、交叉開關、環狀網絡、樹形網絡、二維或更多維網格等。并行系統的多個處理器之間需要同步機制來協同多處理器工作。常見的同步機制包括鎖(Lock)、柵欄(Barrier)以及事務內存(Transaction Memory)等,計算機指令系統通常要設置專用的同步指令。

在共享存儲的并行處理系統中,同一個內存單元(一般以Cache行為單位)在不同的處理器中有多個備份,需要通過存儲一致性模型(Memory Consistency Model)規定多個處理器訪問共享內存的一致性標準。典型的存儲一致性模型包括順序一致性(Sequential Consistency)、處理器一致性(Processor Consistency)、弱一致性(Weak Consistency)、釋放一致性(Release Consistency)等。高速緩存一致性協議(Cache Coherence Protocol)把一個處理器新寫的值傳播給其他處理器,以達到存儲一致性的目的。在偵聽協議(Snoopy Protocol)中,寫共享單元的處理器把寫信息通過廣播告知其他處理器;在基于目錄的協議(Directory-based Protocol)中,每個存儲單元對應一個目錄項記錄擁有該存儲單元的副本的那些處理器號,寫共享單元的處理器根據目錄項的記錄把寫信息告知其他處理器。

6.體系結構的設計目標和方法

體系結構設計的主要指標包括性能、價格和功耗,其他指標包括安全性、可靠性、使用壽命等。體系結構設計的主要目標經歷了大型機時代一味追求性能(Performance per Second),到個人計算機時代追求性能價格比(Performance per Dollar),再到移動互聯時代追求性能功耗比(Performance per Watt)的轉變。性能是計算機體系結構的首要設計目標。

性能的最本質定義是“完成一個或多個任務所需要的時間”。完成一個任務所需要的時間由完成該任務需要的指令數、完成每條指令需要的拍數以及每拍需要的時間三個量相乘得到。完成任務需要的指令數與算法、編譯器和指令的功能有關;每條指令執行拍數(Cycles Per Instruction,簡稱CPI)或每拍執行指令數(Instructions Per Cycle,簡稱IPC)與編譯、指令功能、微結構設計相關;每拍需要的時間,也就是時鐘周期,與微結構、電路設計、工藝等因素有關。

為了滿足應用需求并不斷提高性能,計算機體系結構在發展過程中遵循一些基本原則和方法,包括平衡性、局部性、并行性和虛擬化。

結構設計的第一個方法就是平衡設計。計算機是個復雜系統,影響性能的因素很多。結構設計要統籌兼顧,使各種影響性能的因素達到均衡。通用CPU設計有一個關于計算性能和訪存帶寬平衡的經驗法則,即峰值浮點運算速度(MFLOPS)和峰值訪存帶寬(MB/s)為1∶1左右。計算機體系結構中有一個著名的阿姆達爾(Amdahl)定律。該定律指出通過使用某種較快的執行方式所獲得的性能提高,受限于不可使用這種方式提高性能的執行時間所占總執行時間的百分比,例如一個程序的并行加速比,最終受限于不能被并行化的串行部分。

結構設計的第二個方法是利用局部性。當結構設計基本平衡以后,性能優化要抓主要矛盾,重點改進最頻繁發生事件的執行效率。結構設計經常利用局部性加快經常性事件的速度。RISC指令系統利用指令的事件局部性對頻繁發生的指令進行重點優化。硬件轉移預測利用轉移指令跳轉方向的局部性,即同一條轉移指令在執行時經常往同一個方向跳轉。Cache和預取利用訪存的時間和空間局部性優化性能。

結構設計的第三個方法是開發并行性。計算機中可以開發三種層次的并行性。第一個層次的并行性是指令級并行,包括時間并行即指令流水線,以及空間并行即超標量技術。20世紀80年代RISC出現后,指令級并行開發達到了一個頂峰,2010年后進一步挖掘指令級并行的空間已經不大。第二個層次的并行性是數據級并行,主要指單指令流多數據流(Single Instruction Multiple Data,簡稱SIMD)的向量結構。20世紀七八十年代以Cray為代表的向量機十分流行;現代通用CPU普遍支持短向量運算,如X86的AVX指令支持256位短向量運算。第三個層次的并行性是任務級并行,包括進程級和線程級并行。上述三種并行性在現代計算機中都存在,多核CPU運行線程級或進程級并行的程序,每個核采用超標量流水線結構,并支持SIMD向量指令。

結構設計的第四個方法是虛擬化。所謂虛擬化,就是“用起來是這樣的,實際上是那樣的”,或者“邏輯上是這樣的,物理上是那樣的”。結構設計者寧愿自己多費事,也要盡量為用戶提供一個友好的使用界面。如虛擬存儲為每個進程提供獨立的存儲空間,虛實地址轉換和物理內存分配都由CPU和操作系統自動完成,大大解放了程序員的生產力。多線程和虛擬機技術通過硬件支持多個線程上下文或操作系統上下文的快速切換,在一個CPU上“同時”運行多個線程或操作系統,把單個CPU虛擬成多個CPU。此外,流水線和多發射技術在維持串行編程模型的情況下提高了速度;Cache技術使程序員看到一個像Cache那么快,像內存那么大的存儲空間;Cache一致性協議在分布式存儲的情況下給程序員提供一個統一的存儲空間。這些都是虛擬化方法的體現。

審核編輯 :李倩

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

    關注

    19

    文章

    7430

    瀏覽量

    87733
  • 微處理器
    +關注

    關注

    11

    文章

    2247

    瀏覽量

    82331
  • 模擬器
    +關注

    關注

    2

    文章

    870

    瀏覽量

    43168

原文標題:一文帶你掌握計算機體系結構核心內容

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    多核時代計算機體系結構面臨重新設計

    為了有效使用多核處理器,IT業需要徹底反思它已使用了50多年的基本計算機體系結構。
    發表于 02-28 09:30 ?651次閱讀

    計算機體系結構是由哪些部分組成的?可劃分哪幾個層次?

    RISC-V的含義是什么?計算機體系結構是由哪些部分組成的?可劃分哪幾個層次?
    發表于 06-18 08:38

    視頻教程-《計算機體系結構 硬件篇2》之 計算機通信-嵌入式 精選資料分享

    計算機體系結構 硬件篇2》之 計算機通信 2008年畢業于沈陽航空航天大學...
    發表于 07-20 06:16

    計算機體系結構的硬件存儲器簡單介紹

    計算機體系結構 硬件篇2》之存儲器 2008年畢業于沈陽航空航天大學電...
    發表于 12-23 06:32

    馮·諾依曼計算機體系結構缺陷有哪些?

    馮·諾依曼結構的特點是什么?馮·諾依曼計算機體系結構缺陷有哪些?哈佛結構具有哪些特點應用場景?
    發表于 12-24 07:36

    計算機體系結構的相關資料推薦

    部分 IO基礎知識計算機系統軟件體系結構采用種層的結構,有人說過句名言:“Any pro
    發表于 01-07 06:42

    馮諾依曼計算機體系結構是怎樣組成的

    馮諾依曼計算機體系結構是怎樣組成的?微型系統地結構是怎樣組成的?
    發表于 02-10 06:15

    計算機體系結構的發展及技術問題探討

    回顧了計算機體系的發展歷程,并分析了計算機體系的發展和技術研究的關鍵: Cell和多核等新型處理結構和可重構計算技術。提出了新的計算機體系結構
    發表于 08-02 10:10 ?17次下載

    有關計算機體系結構的思考匯總

    有關計算機體系結構的思考匯總的內容:幾類網格計算機、Farming 計算模型與應用、指導計算機設計的ASC模型、DSAG 的理論模型、程序模
    發表于 11-03 22:13 ?22次下載

    計算機體系結構_量化研究方法(中文第三版)

    電子發燒友網站提供《計算機體系結構_量化研究方法(中文第三版).txt》資料免費下載
    發表于 03-19 15:09 ?0次下載

    計算機體系結構

    計算機體系結構介紹資料
    發表于 06-21 16:27 ?0次下載

    計算機體系結構-量化研究方法(第5版)

    計算機體系結構-量化研究方法(第5版)
    發表于 10-11 09:09 ?0次下載

    本源量子受邀參加2022中國計算機大會量子計算機體系結構論壇

    中國計算機大會CNCC2022將于12月8日至10日在貴州省貴陽市國際生態會議中心舉辦,本源量子受邀參加;本次論壇【量子計算機體系結構論壇】邀請到國際體系結構研究線的杰出青年學者,以
    的頭像 發表于 11-09 16:52 ?1340次閱讀
    本源量子受邀參加2022中國<b class='flag-5'>計算機</b>大會量子<b class='flag-5'>計算機體系結構</b>論壇

    《RVfpga:理解計算機體系結構》3.0 版本更新上線

    計算機體系結構課程,該課程針對本科教學設計,包含整套豐富的教學資料和實踐練習,可幫助學生了解處理器架構中的關鍵要素,包括多個IP內核,修改RISC-V內核的方法,
    的頭像 發表于 01-18 08:27 ?731次閱讀
    《RVfpga:理解<b class='flag-5'>計算機體系結構</b>》3.0 版本更新上線

    智能化的計算機體系結構設計方案

    未來計算機體系結構將趨向于智能化和自適應性。智能化的計算機體系結構可以根據不同的任務和場景進行智能調整,提高計算機的性能和效率。
    發表于 01-22 11:05 ?433次閱讀
    智能化的<b class='flag-5'>計算機體系結構</b>設計方案