今天要介紹的是..................中央處理器.............CPU!
CPU的介紹:
中央處理器(
英語:
Central Processing Unit,
CPU),是
電腦的主要裝置之一。其功能主要是解釋電腦
指令以及處理電腦
軟體中的
資料。所謂電腦的可編程性主要是指對CPU的
編程。CPU、
內部記憶體和
輸入/輸出裝置是現代電腦的三大核心部件。由
積體電路製造的CPU,20世紀70年代以前,本來是由多個獨立單元構成,後來發展出
微處理器CPU複雜的電路可以做成單一微小功能強大的單元。
「中央處理器」這個名稱,籠統地說,是對一系列可以執行複雜的電腦程式的邏輯機器的描述。這個空泛的定義很容易地將在「CPU」這個名稱被普遍使用,之前的早期電腦也包括在內。無論如何,至少從20世紀60年代早期開始
(Weik 1961),這個名稱及其縮寫已開始在電腦產業中得到廣泛應用。儘管與早期相比,「中央處理器」在實體形態、設計製造和具體任務的執行上有了戲劇性的發展,但是其基本的操作原理一直沒有改變。
CPU的歷史:
EDVAC,第一台電子儲存式可編程電腦。
在現今的CPU出現之前,如同
埃尼阿克之類的電腦在執行不同程式時,必須經過一番線路調整才能啟動。由於它們的線路必須被重設才能執行不同的程式,這些機器通常稱為「固定程式電腦」(fixed-program computer)。而由於CPU這個詞指稱為執行軟體(電腦程式)的裝置,那些最早與
儲存程式型電腦一同登場的裝置也可以被稱為CPU。
儲存程式型電腦的主意早已呈現在
ENIAC的設計上,但最終還是被省略以期早日完成。在1945年6月30日,
ENIAC完成之前,著名數學家
馮·紐曼發表名為"
關於EDVAC的報告草案"的論文。它揭述儲存程式型電腦的計劃將在1949年正式完成
(馮·紐曼1945)。EDVAC的標的是執行一定數量與種類的指令(或操作),這些指令結合產生出可以讓
EDVAC執行的有用程式。特別的是,為EDVAC而寫的程式是儲存在高速電腦
記憶體中,而非由實體線路組合而成。這項設計克服了ENIAC的某些局限——即花費大量時間與精力重設線路以執行新程式。在馮·紐曼的設計下,EDVAC可以藉由改變記憶體儲存的內容,簡單更換它執行的程式。
CPU運作原理:
CPU的主要運作原理,不論其外觀,都是執行儲存於被稱為程式裡的一系列指令。在此討論的是遵循普遍的
馮·紐曼架構設計的裝置。程式以一系列數位儲存在電腦
記憶體中。差不多所有的馮·紐曼CPU的運作原理可分為四個階段:
提取、解碼、執行和
寫回。
提取,從程式記憶體中檢索
指令(為數值或一系列數值)。由
程式計數器指定程式記憶體的位元置,程式計數器保存供識別目前程式位元置的數值。換言之,程式計數器記錄了CPU在目前程式裡的蹤跡。提取指令之後,PC根據指令式長度增加記憶體單元。
解碼階段,指令被拆解為有意義的片斷。根據CPU的
指令集架構(
ISA)定義將數值解譯為指令
[isa]。一部分的指令數值為
運算碼,其指示要進行哪些運算。其它的數值通常供給指令必要的資訊,諸如一個
加法運算的運算標的。這樣的運算標的也許提供一個常數值(即立即值),或是一個空間的定址值:
暫存器或
記憶體位址,以
定址模式決定。
執行階段。該階段中,連接到各種能夠進行所需運算的CPU部件。例如,要求一個加法運算,
自變數邏輯單位將會連接到一組輸入和一組輸出。輸入提供了要相加的數值,而且在輸出將含有總和結果。ALU內含電路系統,以於輸出端完成簡單的普通運算和邏輯運算(比如加法和
位元運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裡,
溢位標誌可能會被設置。
寫回,以一定格式將執行階段的結果簡單的寫回。運算結果極常被寫進CPU內部的暫存器,以供隨後指令快速存取。在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的
主記憶體。某些型別的指令會操作程式計數器,而不直接產生結果資料。這些一般稱作「跳轉」並在程式中帶來
循環行為、條件性執行(透過條件跳轉)和
函式[jumps]。許多指令也會改變標誌暫存器的狀態位元。這些標誌可用來影響程式行為,緣由於它們時常顯出各種運算結果。
整數表式法:
CPU數字錶示方法是一個設計上的選擇,這個選擇影響了裝置的運作方式。一些早期的數位電腦內部使用電力模型來表示通用的
十進制(基於10進位元)
數位系統數位。還有一些罕見的電腦使用
三進制表示數位。幾乎所有的現代的CPU使用
二進制系統來表示數位,這樣數位可以用具有兩個值的實體量來表示。
時脈頻率:
大部分的CPU,甚至大部分的
按序邏輯裝置,本質上都是
同步的。
[seqlogic] 也就是說,它們被設計和使用的前提是假設都運作在一個同步訊號中。這個訊號,就是眾所周知的
時脈訊號,通常是由一個周期性的
方波(構成)。透過計算電訊號在CPU眾多電路中不同的分支中迴圈所需要的最大時間,設計者們可以為
時脈訊號選擇一個適合的
周期。
該周期必須比訊號在延遲最大的情況下移動或者傳播所需的時間更長。設計整個CPU在時脈訊號的上升沿和下降沿附近移動資料是可能的。無論是在設計還是元件的維度看來,均對簡化CPU有顯著的優點。同時,它也存在CPU必須等候回應較慢元件的缺點。此限制已透過多種增加CPU
平行運算的方法下被大幅的補償了。
平行:
前面描述的CPU結構只能在同一時間點執行一個
指令,這種型別的CPU被稱為
下標量。
這一型別的CPU有一很大的缺點:效率低。由於只能執行一個指令,此類的處理給與下標量CPU原生的低效能。由於每次僅有一個指令能夠被執行,CPU必須等到上個指令完成才能繼續執行。如此便造成下純量CPU延宕在需要兩個以上的時脈循環才能完成的指令。即便增加第二個執行單元(見下文)也不會大幅提升效能;除了單一通道的延宕以外,雙通道的延宕及未使用的電晶體數量亦增加了。如此的設計使得不論CPU可使用的資源有多少,都僅能一次執行一個指令並可能達到
純量的效能(一個指令需一個時脈循環)。無論如何,大部份的效能均為下純量(一個指令需超過一個時脈循環)。
為了達成純量標的以及更佳的效能,導致使得CPU傾向
平行運算的各種設計越來越多。提到CPU的平行,有兩個字彙常用來區分這些設計的技術。
指令平行處理以增加CPU執行指令的速率,以及
執行緒平行處理目的在增加
執行緒使得CPU可以同時執行。每種方法均可由其如何嵌入或相對有效來區分。
同時執行緒執行或執行緒級平行處理:
另一個常用以增加CPU:平行運算效能的策略是讓CPU有同時執行多個
執行緒(程式)的能力。大致上說來,高同時執行緒平行執行(TLP)CPU比高指令平行執行來的有用。許多由
Cray公司於1970年代及1980年代晚期所首創的同時執行緒平行執行,專於該方法而啟發了龐大的計算效力。(就時間上而言)事實上,TLP多執行緒運算自從1950年就已經開始被運用了
(Smotherman 2005)。在單處理器設計中,兩種主要實作TLP的設計方法是
晶片級多處理(CMP)晶片層多執行緒處理和
simultaneous multithreading(SMT)。同級別層多執行緒處理。在更高階層中,一台電腦中有多個單獨的處理器,常常運用
對稱多處理機(SMP)和
non-uniform memory access(NUMA)非獨立記憶體存取的方式來結織。這些非常不同的方法,全部為了實作同一個標的,就是增加CPU同時處理多個執行緒的能力。
向量處理器與SIMD:
上面提及過的處理器都是一些
常量儀器,而針對向量處理的 CPU 是較不常見的型別,但它的重要性卻越來越高。事實上,在電腦計算上,向量處理是很常見的。顧名思義,向量處理器能在一個命令週期(one instruction)處理多項數據,這有別於只能在一個命令週期內處理單一數據的常量處理器。 這兩種不同處理數據的方法,普遍分別稱為『單指令,多資料』(
SIMD)及『單指令,單資料』(
SISD)。向量處理器最大的優點就是能夠在同一個命令週期中對不同的運作進行最佳化,例如:求一大堆數據的總和及向量的
積dot product,更典型的例子就是
多媒體應用程式(畫像、影像、及聲音)與及眾多不同總類的
科學及工程上的運作。當常量處理器只能針對一組數據於單一命令週期內完全執行提取、解碼、執行和寫回四個階段的同時,向量處理器已能對較大型的數據如相同時間內執行相同動作。當然,這假設了這個應用程式於單一命令週期內對處理器進行多次要求。
﹝資料來源:維基百科﹞