首页 | 主题 | 图库 | 问答 | 文摘 | 原创 | 百科

历史 | 地理 | 人物 | 艺术 | 体育 | 科学 | 音乐 | 电影 | 信息技术 | 世界遗产

 开放、中立,源自维基百科

个人工具


中央处理器

维库,知识与思想的自由文库

(重定向自CPU)
跳转到: 导航, 搜索
使用了陶瓷PGA封裝的Intel 80486DX2中央处理器
使用了陶瓷PGA封裝的Intel 80486DX2中央处理器

中央处理器Central Processing UnitCPU),是电子计算机的主要设备之一。其功能主要是解释计算机指令以及处理计算机软件中的数据。所谓的计算机的可编程性主要是指对CPU的编程。CPU、内部存储器输入/输出设备是现代电脑的三大核心部件。由集成电路制造的CPU,20世纪70年代以前,本來是由數個獨立單元構成,後來發展出微处理器把CPU複雜的電路可以作成單一微小功能強大的單元。

“中央处理器”这个名称,笼统地说,是对一系列可以执行复杂的计算机程序的逻辑机器的描述。这个空泛的定义很容易的将在“CPU”这个名称被普遍使用之前的早期的计算机也包括在內。无论如何,至少从20世纪60年代早期开始(Weik 1961),这个名称及其缩写已开始在电子计算机产业中得到广泛应用。尽管与早期相比,“中央处理器”在物理形态、设计制造和具体任务的执行上有了戏剧性的发展,但是其基本的操作原理一直没有改变。

早期的中央处理器通常是为大型及特定應用的计算机而訂製。但是,这种昂贵为特定应用定制CPU的方法很大程度上已经让位于开发便宜、标准化、适用于一个或多个目的的处理器类。这个标准化趋势始于由單個晶体管組成的大型机微机年代,随着集成电路Integrated circuit(IC))的出現而加速。IC使得更为复杂的CPU可以在很小的空间中设计和制造(在微米的量级)。CPU的标准化和小型化都使得這一類数字设备(港譯-電子零件)在现代生活中的出现频率远远超过有限应用专用的计算机。现代微处理器出现在包括从汽车手机到儿童玩具在内的各种物品中。

目录

[编辑] 歷史

EDVAC, 第一臺電子儲存式可編程電腦。
EDVAC, 第一臺電子儲存式可編程电子计算机。

在現今的CPU出現之前,如同埃尼阿克(Electronic Numerical Integrator and Computer)之類的电子计算机在執行不同程式時,必須經過一番線路調整才能啟動。由於它們的線路必須被重設才能執行不同的程式,這些機器通常稱為「固定程式电子计算机」(fixed-program computer)。而由於CPU這個詞指稱為執行軟體(电子计算机程式)的裝置,那些最早與儲存程式型电子计算机(stored-program computer)一同登場的裝置也可以被稱為CPU。

儲存程式型电子计算机的主意早已體現在ENIAC的設計上,但最終還是被省略以期早日完成。在1945年6月30日,ENIAC完成之前,著名數學家馮紐曼發表名為"First Draft of a Report on the EDVAC"的論文。它揭述儲存程式型电子计算机的計劃將在1949年正式完成(馮紐曼 1945)EDVAC的目標是執行一定數量與種類的指令(或操作),這些指令結合產生出可以讓EDVAC(Electronic Discrete Variable Automatic Computer)執行的有用程式。特別的是,為EDVAC而寫的程式是儲存在高速电子计算机記憶體中,而非由實體線路組合而成。這項設計克服了ENIAC的某些侷限—即花費大量時間與精力重設線路以執行新程式。在馮紐曼的設計下,EDVAC可以藉改變記憶體儲存的內容,簡單更換它執行的程式(軟體)。[1]

值得注意的是,儘管馮紐曼由於設計了EDVAC,使得他在發展儲存程式型电子计算机上的貢獻最為顯著,但其他早於他的研究員如Konard Zuse也提出過類似的想法。另外早於EDVAC完成,利用哈佛架構Harvard architecture)製造的馬克一號,也利用打孔紙帶而非電子記憶體實作儲存程式的概念。馮紐曼架構與哈佛架構最主要的不同在於後者將CPU指令與資料分開存放與處置,而前者使用相同的記憶體位置。大多近代的CPU依照馮紐曼架構設計,但哈佛架構一樣常見。

身為數位裝置,所有CPU處理不連續狀態,因此需要一些轉換與區分這些狀態的基礎元件。在市場接受電晶體前,繼電器真空管常用在這些用途上。雖然這些材料速度上遠優於純粹的機械構造,但是它們有許多不可靠的地方。例如以繼電器建造直流時序邏輯迴路需要額外的硬體以應付接觸點跳動問題。而真空管不會有接觸點跳動問題,但它們必須在啟用前預熱,也必須同時停止運作。[2]通常當一根真空管壞了,CPU必須找出損壞元件以置換新管。因此早期的電子真空管式电子计算机快於電子繼電器式电子计算机,但維修不便。類似EDVAC的真空管电子计算机每隔八小時便會損壞一次,而較慢較早期的馬克一號卻不常故障(Weik 1961:238)。但在最後,由於速度優勢,真空管电子计算机支配當時的电子计算机世界,儘管它們需要較多的維護照顧。大多早期的同步CPU,其時鐘頻率clock rate)低於近代的微電子設計(見下列對於時鐘頻率的討論)。那時常見的時鐘頻率為100千赫茲到4百萬赫茲,大大受限於內建切換裝置的的速度。


[编辑] 離散電晶體與IC CPU

CPU, core memory, 及MSI PDP-8/I 外部插槽 界面。
CPU, core memory, 及MSI PDP-8/I 外部插槽 界面。

由於許多科技大廠投入更小更可靠的電子裝置,設計CPU變得越來越複雜。電晶體的面世便是第一個CPU的飛躍進步。1950到60年代的電晶體CPU不再以體積龐大、不可靠與易碎的切換元件(例如繼電器真空管)建造。藉由這項改良,更複雜與可靠的CPU便被建造在一或多個包含離散(獨立)元件的印制电路板上。

在此時期,將許多電晶體放置在擁擠空間中的方法大為普及。集成电路(IC)將大量的電晶體集中在一小塊半導體片,或晶片(chip)上。剛開始只有非常基本、非特定用途的數位迴路小型化到IC上(例如NOR邏輯閘)。以這些預組式IC為基礎的CPU稱為小規模集成电路(SSI)裝置。SSI IC,例如裝置在阿波羅導航电子计算机上的那些,通常包含數十個電晶體。以SSI IC建構整個CPU需要數千個獨立的晶片,但與之前的離散電晶體設計相比,依然省下很多空間與電力。肇因於微電子科技的進步,在IC上的電晶體數量越來越大,因此減少了建構一個完整CPU需要的獨立IC數量。"中規模集成电路"(MSI)與"大規模集成电路"(LSI)將內含的電晶體數量增加到成百上萬。

1964年IBM推出了System/360电子计算机架構,此架構讓一系列速度與效能不同的IBM电子计算机可以跑相同的程式。此誠為一項創舉,因為當時的电子计算机大多互不相容,甚至同一家廠商製造的也是如此。為了實踐此項創舉,IBM提出了微程式microprogram 或 microcode)概念,此概念依然廣泛使用在現代CPU上(Amdahl et al. 1964)。System/360架構由於太過成功,因此支配了大型計算機數十年之久,並留下一系列使用相似架構,名為IBM zSeries的現代主機產品。同一年(1964),迪吉多(DEC)推出另一個深具影響力且瞄準科學與研究市場的电子计算机,明為PDP-8。DEC稍後推出非常有名的PDP-11,此產品原先計劃以SSI IC構組,但在LSI技術成熟後改為LSI IC。與之前SSI和MSI的祖先相比,PDP-11的第一個LSI產品包含了一個只用了4個LSI IC的CPU(Digital Equipment Corporation 1975)

電晶體电子计算机有許多前一代產品沒有的優點。除了可靠度與低耗電量之外,由於電晶體的狀態轉換時間比繼電器和真空管短得多,CPU也就擁有更快的速度。幸虧可靠度的提升與電晶體轉換器的切換時間縮短,CPU的時鐘頻率在此時期達到十幾百萬赫茲。另外,由於離散電晶體與IC CPU的使用量大增,新的高效能設計,例如SIMD(單指令複數資料)、向量處理器vector processor)開始出現。這些早期的實驗性設計,刺激了之後超級电子计算机,(例如克雷公司)的崛起。

[编辑] 微处理器

主条目:微处理器

自從微处理器在1970年代發表之後,便大大影響了CPU的設計與實作。自1970年第一款微处理器(Intel 4004)與第一款廣受使用的Intel 8080在1974年發表以來,這類型的CPU幾乎完全取代了其他CPU的實作方法。當時的大型主機與微計算機業者開發了專利IC的設計程式以改進他們的舊計算機架構,最終推出可以向下相容他們的舊硬件與軟件的指令集。與當時剛發展,並在之後普及大眾的個人电子计算机相結合。"CPU"這個詞現在幾乎等同於微处理器。

前幾世代的CPU實作,是在一或多個電路版上放置幾個分散的原件與數量眾多的小IC(集成电路)。而微处理器則是製作成幾個少量的IC,通常是一個。由於物理因素,例如降低寄生電容parasitic capacitance)的門檻值,此種單晶片的小尺寸CPU設計讓它有更快的反應能力。這使得同步微处理器擁有數十兆赫到數百萬兆赫的執行頻率。另外,由於在一個IC放置小型電晶體的技術持續進步,在單個CPU上的電晶體數量與複雜度都在戲劇性地增加。此廣為人知的現象稱為摩爾定律Moore's law),它成功預言了CPU與其他IC的複雜度與時俱增的性質。

當CPU的複雜度、尺寸、結構與型態在這六十年間劇烈改變,它的基本設計與功能並沒有太大改變。當今所有普通CPU都幾乎可以用馮紐曼機器來解釋。

由於前述的摩爾定律依舊沒有被打破,很自然地讓人想像IC與電晶體工業的極限何在。極端小型化電子閘門導致各種現象如電遷移electromigration)與次臨界漏電subthreshold leakage)效應變得相當明顯。這些新效應使得研究人員試圖研發新的計算方法,例如量子电子计算机quantum computer)以及擴展平行運算parallelism)和其他運用馮紐曼模型的方法。

[编辑] CPU運作原理

CPU的主要運作原理,不論其外觀,都是執行儲存於被稱為程式裡的一系列指令。在此討論的是遵循普遍的馮·諾伊曼架構設計的裝置。程式以一系列數字儲存在电子计算机記憶體中。差不多所有的馮·諾伊曼CPU的運作原理可分為四個階段:提取(fetch)解碼(decode)執行(execute)寫回(writeback)

第一階段,提取,從程式記憶體中檢索指令(為數值或一系列數值)。由程式計數器(PC)指定程式記憶體的位置,程式計數器保存供識別目前程式位置的數值。換言之,程式計數器記錄了CPU在目前程式裡的蹤跡。提取指令之後,PC根據指令式長度增加記憶體單元[iwordlength] 。指令的提取常常必須從相對較慢的記憶體尋找,導致CPU等候指令的送入。這個問題主要被論及在現代處理器的快取和管線化架構(見下)。

CPU根據從記憶體提取到的指令來決定其執行行為。在解碼階段,指令被拆解為有意義的片斷。根據CPU的指令集架構ISA)定義將數值解譯為指令[isa] 。一部分的指令數值為運算碼(opcode),其指示要進行哪些運算。其它的數值通常供給指令必要的資訊,諸如一個加法(addition)運算的運算目標。這樣的運算目標也許提供一個常數值(即立即值),或是一個空間的定址值:暫存器記憶體位址,以定址模式決定。在舊的設計中,CPU裡的指令解碼部分是無法改變的硬體裝置。不過在眾多抽象且複雜的CPU和ISA中,一個微程式時常用來幫助轉換指令為各種形態的訊號。這些微程式在已成品的CPU中往往可以重寫,方便變更解碼指令。

在提取和解碼階段之後,接著進入執行階段。該階段中,連接到各種能夠進行所需運算的CPU部件。例如,要求一個加法運算,算數邏輯單元ALUarithmetic logic unit)將會連接到一組輸入和一組輸出。輸入提供了要相加的數值,而且在輸出將含有總和結果。ALU內含電路系統,以於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裡,運算溢出arithmetic overflow)標誌可能會被設置(參見以下的數值精度探討)。

最終階段,寫回,以一定格式將執行階段的結果簡單的寫回。運算結果極常被寫進CPU內部的暫存器,以供隨後指令快速存取。在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的主記憶體。某些類型的指令會操作程式計數器,而不直接產生結果資料。這些一般稱作「跳轉」(jumps)並在程式中帶來循環行為、條件性執行(透過條件跳轉)和函式[jumps] 。許多指令也會改變標誌暫存器的狀態位元。這些標誌可用來影響程式行為,緣由於它們時常顯出各種運算結果。例如,以一個「比較」指令判斷兩個值的大小,根據比較結果在標誌暫存器上設置一個數值。這個標誌可藉由隨後的跳轉指令來決定程式動向。

在執行指令並寫回結果資料之後,程式計數器的值會遞增,反覆整個過程,下一個指令周期正常的提取下一個順序指令。如果完成的是跳轉指令,程式計數器將會修改成跳轉到的指令位址,且程式繼續正常執行。許多複雜的CPU可以一次提取多個指令、解碼,並且同時執行。這個部分一般涉及「經典RISC管線」,那些實際上是在眾多使用簡單CPU的電子裝置中快速普及(常稱為微控制器microcontrollers))[riscpipeline]

[编辑] 設計與實作

主条目:CPU設計
前提
计算机体系结构
数字电路


[编辑] 整数范围

CPU数字表示方法是一个设计上的选择,这个选择影响了设备的工作方式。一些早期的数字计算机内部使用电气模型来表示通用的十进制(基于10进位)数位系统数字。还有一些罕见的计算机使用三进制表示数字。几乎所有的现代的CPU使用二进制系统来表示数字,这样数字可以用具有两个值的物理量来表示,例如高低[binaryvoltage] 等等。

MOS 6502 微处理器,双列直插式封装格式,一种非常流行的8位芯片。
MOS 6502 微处理器,双列直插式封装格式,一种非常流行的8位芯片。

与数表示相关的是一个CPU可以表示的数的大小和精度,在二进制CPU情形下,一个比特(bit)指的是CPU处理的数中的一个有意义的位,CPU用来表示数的比特数量常常被称作"字长"(Word Size), "位宽"(bit width), "数据通路宽度"(data path width), 或者当严格地涉及到整数(与此相对的是浮点数)时,称作"整数精度"(integer precision),该数量因体系结构而异,且常常在完全相同的CPU的不同部件中也有所不同。例如:一个8比特的CPU可处理在八个二进制数码(每个数码具有两个可能的取值,0或1)表示范围内的数, 也就是说, 28或256个离散的数值。 实际上, 整数精度在CPU可执行的软件所能利用的整数取值范围上设置了硬件限制。[softwareints]


整数精度也可影响到CPU可寻址(定址)的内存单元数量。譬如,如果二进制的CPU使用32比特来表示內存地址,而每一个內存地址代表一个八位元组,CPU可定位的容量便是232個位元組或4GB。以上是简单描述的CPU地址空间(address space),通常实际的CPU设计使用更为复杂的寻址方法,例如为了以同样的整数精度寻址更多的内存而使用分頁paging)技术。

更高的整数精度需要更多线路以支持更多的数字位元,也因此结构更复杂、更巨大、更花费能源,也通常更昂贵。因此尽管市面上有许多更高精准度的CPU(如 16,32,64甚至128比特),但依然可见应用软件执行在4或8比特的微控制器microcontrollers)上。越简单的微控制器通常较便宜,花费較少能源,也因此产生较少热量。這些都是设计电子设备的主要考量。然而,在专业级的应用上,额外的精度给予的效益(大多是给予额外的地址空间)通常显著影响它们的设计。为了同时得到高与低比特宽度的优点,许多CPU依照不同功用将各部分设计成不一样的比特宽度。例如IBM的System/370使用一个原为32比特的CPU,但它使用了128比特精度在其浮点floating point)单元,以得到更佳的精确度与浮点数的表示范围 (Amdahl et al. 1964)。许多后来的CPU设计使用类似的混合位宽,尤其当处理器设计为通用用途,因而需要合理的整数与浮点数运算算能力时。

[编辑] 時鐘頻率

邏輯分析儀(Logic analyzer)显示一个同步的数据系统中的时间与状态.
邏輯分析儀(Logic analyzer)显示一个同步的数据系统中的时间与状态.
主条目:時頻

主频=外频×倍频。

大部分的CPU,甚至大部分的時序邏輯设备,本质上都是同步的。[seqlogic]

也就是说,它们被设计和使用的前提是假设都工作在一个同步信号中。这个信号,就是众所周知的時鐘信號(Clock Signal),通常是由一个周期性的方波(构成)。通过计算电信号在CPU众多电路中不同的分支中循环所需要的最大时间,设计者们可以为時鐘信號选择一个适合的周期

该周期必须比信号在延遲最大的情況下移动或者传播所需的时间更长。In setting the clock period to a value well above the worst-case propagation delay, it is possible to design the entire CPU and the way it moves data around the "edges" of the rising and falling clock signal. 無論是在設計還是元件的維度看來,均對簡化CPU有顯著的優點。同時,其亦有著CPU必須等候回應較慢元素的缺點。此限制已透過多種增加CPU並行運算的方法下被大幅的補償了。(見下文)

無論如何,結構上的改良並無法解決所有同步CPU的弊病。比方說,時鐘信號易受其它的電子信號影響。在漸趨複雜的CPU中,越來越高的時鐘頻率使其更難與整個單元的時鐘信號同步(synchronized)。是故近代的CPU傾向發展多個相同的時鐘信號,以避免單一信號的延遲使得整個CPU失靈(Malfunction)。另一個主要的問題是,時鐘信號的增加亦使得CPU產生的熱能增加。持續變動的時鐘頻率使得許多元件切換(Switch)而不論它們是否處於運作狀態。一般來說,一個處於切換狀態的元件比處於靜止狀態還要耗費更多的能源。因此,時鐘頻率的增加使得CPU需要更有效率的冷卻方案。

其中一個處理切換不必要元件的方法稱為時鐘選通(Clock gating),即關閉對不必要元件的時鐘頻率(有效的禁止元件)。但此法被認為太難實行而不見其低耗能通用性。[:en:clockgating]

另一個對全程時鐘信號的方法是同時移除時鐘信號。當移除全程時鐘信號使得設計的程序更加複雜時,非同步(或無時鐘)設計使其在能源消耗與產生熱能的維度上更有優勢。罕見的是,所有的CPU建造在沒有利用全程時鐘信號的狀況。兩個值得注意的範例是ARM(Advanced RISC Machine)順從AMULET以及MIPS R3000相容MiniMIPS。與其完全移除時鐘信號,部份CPU的設計允許一定比例的裝置不同步,比方說使用不同步算術邏輯單元連接上標流水線以達成一部份的算數效能增進。在不將時鐘信號完全移除的情況下,不同步的設計可使其表現出比同步計數器(Synchronous counterparts)更少的數學運算。因此,結合了不同步設計極佳的能源耗損量及熱能逞生率,使它更適合在嵌入式計算機上運作。 (Garside et al. 1999).

[编辑] 并行

低标量CPU的运算过程示意。注意其需要15個循環以完成三個指令。
低标量CPU的运算过程示意。注意其需要15個循環以完成三個指令。
主条目:并行计算

前面描述的CPU结构只能在同一时间点执行一个指令,这种类型的CPU被称为低标量(subscalar)。

这一类型的CPU有一很大的缺点,既是效率低。由于只能执行一个指令,此類的進程給與低标量CPU固有的低效能。由於每次僅有一個指令能夠被執行,CPU必須等到上個指令完成才能繼續執行。如此便造成低标量CPU延宕(Hung up)在需要兩個以上的時鐘循環才能完成的指令。即便增加第二個執行單元(見下文)也不會大幅提升效能;除了單一通道的延宕以外,雙通道的延宕及未使用的晶體管數量亦增加了。如此的設計使得不論CPU可使用的資源有多少,都僅能一次運行一個指令並可能達到標量(Scalar)的效能(一個指令需一個時鐘循環)。無論如何,大部份的效能均為低标量(一個指令需超過一個時鐘循環)。

為了達成標量目標以及更佳的效能,導致使得CPU傾向並行運算的各種設計越來越多。提到CPU的並行,有兩個字彙常用來區分這些設計的技術。指令平行處理Instruction Level Parallelism, ILP)以增加CPU執行指令的速率(換句話說,增加on-die執行資源的利用),以及執行緒平行處理Thread Level Parallelism, TLP)目的在增加執行緒(有效的個別程式)使得CPU可以同時執行。每種方法均可由其如何嵌入或相對有效(對CPU的效能)來區分。[parallelperformance]


[编辑] Instruction level parallelism,ILP):指令流水線技術與超純量架構

基本的流水線結構示意。假設在最佳情況下,這種流水線可以使CPU維持標量的效能。
基本的流水線結構示意。假設在最佳情況下,這種流水線可以使CPU維持標量的效能。

其中一種達成增加並行計算的方法,便是在主要指令完成執行之前,便進行指令提取及解碼。這種最簡易的技術,我們稱為指令流水線技術,且其被利用在泰半現代的泛用CPU中。透過分解執行通道(Execution pathway)至離散階段,指令流水線技術可以兩個以上的指令同時執行。相較於已被淘汰的匯編管線(Assembly line),指令流水線技術不再使用等候指令完全在流水線中退出才執行下一指令的技術。

指令流水線技術產生了下一作業(Operation)需要前一作業才可完成的可能性。此類狀況又常稱為相依衝突(Dependency conflict)。解決的方法是,對此類的情況增加額外的注意,及在相依衝突發生時延遲一部份的指令流水線。自然地,此種解決方法需要額外的循環,是故指令流水線技術化的處理器比低標量處理器還要複雜。(雖然不是很顯著)一個流水線技術的處理器的效能可能十分接近標量,只需禁止流水線推遲(Pipeline stalls)即可。(在一個階段需要超過一個以上的時鐘循環的指令)

簡單的上標量流水線。藉由同時提取和分派(dispatch)兩個指令,能夠在一個時鐘循環中完成最多兩個指令。
簡單的上標量流水線。藉由同時提取和分派(dispatch)兩個指令,能夠在一個時鐘循環中完成最多兩個指令。

此外,對於指令流水線技術的改進啟發了減少CPU元件閒置時間的技術。稱為上標量(superscalar)的設計包括了一條長指令流水線技術及多個相同的執行單元。上標量流水線的分派器同時讀取及通過數個指令;分派器決定指令是否能夠並行執行(同時執行)並分配到可執行的執行單元。大致上來說,一個上標量的CPU能夠同時分派越多的 指令給閒置的執行單元,就能夠完成越多的指令。

上標量CPU結構的設計中,最困難的部份便是創造一個有效率的分派器。分派器必須能夠快速且正確的決定指令是否能夠並行執行,並且讓閒置的執行單元最小化。其需要指令流水線技術常時的充滿指令流,且提升了在上標量結構中一定數量的CPU緩存。其亦催生了危害迴避的技術,如分枝預測branch prediction)、投機執行speculative execution)與跨序執行out-of-order execution)以維持高層次的效能。藉由嘗試預測特定的指令選擇何分枝(路徑),CPU能夠最小化整個指令流水線等待特定的指令完成的次數。投機執行則是藉著執行部份的指令以得知其是否在整個作業完成後仍被需要而提供適度的效能提升。跨序執行則是重新整理指令執行的命令以降低資料相依。

當不是所有的CPU元件均有上標量效能時,未達上標量的元件效能便會因調度推遲(scheduling stall)而降低。Intel Pentium (P5)的原型有兩個每一時鐘循環可接收一個指令的上標量算術邏輯部件,但其浮點運算處理器(Floating Point Unit, FPU)不能在每一時鐘循環接收一個指令。因此P5的效能只能算是整數上標量而非浮點上標量。英特爾Pentium結構的下一代P6加入了浮點運算處理器的上標量能力,因此在浮點指令上有顯著的效能提升。

此兩種簡單的流水線及上標量設計,均能透過允許單一處理器在一個時鐘循環完成一個指令(Instruction per cycle, IPC) [ipcrate]

 ,提升指令流水線技術的效能。多數的近代CPU設計至少都在上標量以上,且幾乎所有十年內的泛用CPU均達上標量。近年來,一些重視高指令流水線技術的电子计算机將其從CPU的硬體移至軟體(Its software interface, ISA)。超長指令字元Very long instruction word, VLIW)的策略使得一部份的指令流水線技術成為軟體,減少CPU推動指令流水線技術的工作量,並降低了CPU的設計複雜度。

[编辑] TLP:同時執行緒執行或线程级并行处理

另一個常用以增加CPU並行運算效能的策略是讓CPU有同時執行多個執行緒(程式)的能力。大致上說來,高同時執行緒並行執行(TLP)CPU比高指令並行執行來的有用。許多由Cray公司於1970年代及1980年代晚期所首創的同時執行緒並行執行,專於該方法而啟發了龐大的計算效力。(就時間上而言)事实上,TLP多线程运算自从1950年就已经开始被运用了(Smotherman 2005)。在单处理器设计中,两种主要实现TLP的设计方法是chip-level multiprocessing (CMP)芯片层多线程处理和 simultaneous multithreading (SMT). 同级别层多线程处理。在更高级层中,一台计算机中有多个单独的处理器,常常运用symmetric multiprocessing(SMP)和non-uniform memory access(NUMA)非独立内存访问的方式来结织。这些非常不同的方法,全部为了实现同一个目标,就是增加CPU同时处理多个线程的能力。

CMP和SMP这两种方法其实是非常相似的,而且是最直接的方法。这里有一些概念上的东西关于如何实两个或是两个以上完全单独的CPU。在CMP中,多个处理器内核会被放入同一个包中,有时会在非常相近的集成电路中。另一方面SMP包含多个包在其中,NUMA和SMP很相像,但是nUMA使用非单一的内存访问方式。这些对于一台有着多个CPU的电脑来说是非常重要的,因为每个处理器访问内存的时间会很快的被SMP分享的模块消耗掉,因些会造成很严重的延迟,因为CPU要等待可用的内存.这是NUMA是个不错的选择,它可以允许有多个CPU同时存在一台电脑中而且SMP也可以同时实现.SMT有一些不同之处,就是SMT会尽可能的减少CPU处理能力的分布。TLP的实现实际上和超标量体系结构的实现有些相似,其实上它常常被用在超标量体系结构处理器中,如IBM的POWER5。相比于复制整个CPU,SMT会复制需要的部分来提取指令,加密和分配,就像记算机中的一般的寄存器一样。因此这样会使SMT CPU保持处理单位其作的连续性,因些通常会提供给处理单位多个指令而且来自不同的软件线程,这和LTP结构很相似。相比于处理多个指令来自同一个线程,它会同时处理来自不线程的多个指令。

[编辑] 向量處理器與SIMD

主条目: 向量處理器SIMD

上面提及過的處理器都是一些常量儀器[scalarvector] ,而針對向量處理的 CPU 是較不常見的類型,但它的重要性卻越來越高。事實上,在电子计算机計算上,向量處理是很常見的。顧名思義,向量處理器能在一個命令週期(one instruction)處理多項數據,這有別於只能在一個命令週期內處理單一數據的常量處理器。 這兩種不同處理數據的方法,普遍分別稱為『單指令,多資料』(SIMD)及『單指令,單資料』(SISD)。向量處理器最大的優點就是能夠在同一個命令週期中對不同的工作進行優化,例如:求一大堆數據的總和及向量的dot product),更典型的例子就是多媒體應用程式(畫像、影像、及聲音)與及眾多不同總類的科學及工程上的工作。當常量處理器只能針對一組數據於單一命令週期內完全執行提取、解碼、執行和寫回四個階段的同時,向量處理器已能對較大型的數據如相同時間內執行相同動作。當然,這假設了這個應用程式於單一命令週期內對處理器進行多次要求。

大多數早期的向量處理器,例如Cray-1,大多都只會用於和科研及密碼學的應用程式。但是,隨著多媒體向數位媒體轉移,對於能做到『單指令,多資料』的普通用途處理器需求大增。於是,在浮點計算器普及化不久,擁有『單指令,多資料』功能的普通用途處理器便面世了。有些早期的『單指令,多資料』規格,如英特爾的MMX,只能作整數運算。因為大多數要求『單指令,多資料』的應用程式都要處理浮點數字,所以這個規格對軟體開發者無疑是一個主要障礙。幸好,這些早期的設計慢慢地被改進和重新設計為現時普遍的『單指令,多資料』新規格。新規格通常都於一 ISA 關連著。近年,一些值得注意的例子一定要數英特爾的SSE和PowerPC相關的 AltiVec(亦稱為VMX)。[mmxsse]


[编辑] 備註

  1. ^  因为程序计数器记录的是内存地址,而不是指令,所以它的增长取决于指令在内存中所占的单位数。在固定长度指令ISA中,每个指令所占用的内存单位是相同的。例如一个32位的ISA固定长度指令将使用8比特内存单位,而且每次将增加4个PC单位。使用变量长度的ISA指令,如x86,它的PC在内存中的增长量取决于最后一个指令的长度。这里要注意的是在更复杂的CPU中,最后一个指令的运行不一定会导至PC单位的增长,特别的是在大量数据传输和超标量体系结构中。
  2. ^ 因为CPU指令集的结构是基于它的介面和使用方法,所以它经常用来区别CPU的"种类"。例如一个PowerPC CPU会用到许多不的Power ISA 变量。有一些CPU,如英特尔Itanium,可以解译多个ISA指令;不过这项工作大多由软件来完成。多于直接将它在硬件中实现。(參見模拟器
  3. ^ 一些早期的电脑如馬克一號并不支持任何"jump"指令,因些而限制了程序的复杂性。这理由很大程度上导致它们不被认为是严格意义上的CPU,尽管它们和存储程序计算机相似。
  4. ^  这里的描述事实上是一个简单的关于經典RISC管線的介绍。它很大程度上没有考虑到CPU缓存的重要性,因而也少了对数据传输访问的介绍。如果想了解更多信息请查阅相关资料。
  5. ^  物理概念上的電壓是一种模拟值,实际上可能的值可以有无限多种。为了物理上表达二进制数,我们把特定范围的電壓的值定为1或者是0。電壓的范围通常是构建CPU的部件的运作参数,例如晶体管的阀值限制,所决定。
  6. ^  当CPU的整数精确度范围被限制的时候,它可以透过软件和硬件技术相互合作的方法来克服。当我们使用额外的内存时,软件可以处理比CPU限制大几个数量级的整数。有时CPU的ISA也会提供相关的指令,帮助软件更快速地处理大整数。虽然这种处理大整数的方法会比使用拥有高整数精确度的CPU要慢一些,对于处理那些需要大精确度整数的应用,它是一种可取的方法,特别是整数精确度的原生支援成本过高的时候。
  7. ^  事实上所有同步运算CPU都运用了时序逻辑电路组合逻辑电路的结合。(参见布尔逻辑
  8. ^  运用时钟门控技术的一个最近的设计是基于IBM PowerPCXbox 360。它大量利用时钟门控技术来减少在运行视频游戏时所需电量的消耗。(Brown 2005)
  9. ^  我们要注意的是不管是ILPTLP都不可以做为对方的上层控制。它们在增强CPU平行处理能力上有着不同的意义。它们有着各自的优缺点,而且取决于CPU可处理软件种类. High-TLP CPUs 经常被用来处理一些可以很自身分解成许多小程序的软件中.因而称它为 "embarrassingly parallel problems." 因此high TLP 设计方法可以连续快速的处理一些运算问题,比如SMP会使用太多的时间来处理ILP设备(超标量体系结构的CPU),反之亦然。
  10. ^  最佳(或最高)IPC率在超标量体系结构中是很难保持不变的,它可能导致使传输总是失败.因此在高超标量体系CPU中,平均相同IPC的方法的使用,多于最佳(或最高)IPC的使用.
  11. ^  尽管SMP和NUMA都是在系统层中的TLP设计方案,但它们还是需要CPU在设计中的支持.
  12. ^  因TPL的使用比ILP时间更长,所以芯片层多处理技术或多或少的只可以在以后的基于集成电路的微处理器。集成电路多处理技术中看到.导至这种情况的原因是,它不在适和早期的分立元件设备,而且也只被运用了几年(1990-2000),如今注意力都集中在设计高运算能力的CPU,这些CPU都运用了超标量结构的IPC设计方案,如英特尔Pentium 4。尽管如此,以前的技术似乎又被运用到现在CPU设计中来,又换回到稍底层的High -TLP传输中。它表现在增值双核或多核CMP的设计中,如英特尔最新的设计中少了一些超标量体系结构的设计p6,之后的CPU多运用了CMP,包括x86-64OpteronAthlon 64 x2,还有Sparc UltraSparc T1,IBM Power4Power5。还有一些其它的视频游戏机的CPU,如x360中的三核PowerPC设计。
  13. ^  早期scalar被用来比较不同ILP方案的IPC(instructions per cycle)的间隔数量。在这里它表示数学中用来比较向量大小的的一个概念。
  14. ^  虽然在英特尔的主流CPU中,MMX已经被 SSE/SSE2/SSE3 所取代,但在之后的CPU中仍然支持MMX技术,通常使用拥有丰富的SSE指令集的相同的硬件来提供大部分的MMX功能。

[编辑] 參考資料

  • a 
b 
Amdahl, G. M., Blaauw, G. A., & Brooks, F. P. Jr. (1964). "Architecture of the IBM System/360". IBM Research. 
  • a 
Brown·Jeffery (2005) -  Application-customized CPU design IBM developerWorks   - 於2005-12-17访问。
  • a 
Digital Equipment Corporation (November 1975). "LSI-11 Module Descriptions", LSI-11, PDP-11/03 user's manual, 2nd edition, Maynard, Massachusetts: Digital Equipment Corporation, 4-3. 
  • a 
Garside, J. D., Furber, S. B., & Chung, S-H (1999). "AMULET3 Revealed". University of Manchester Computer Science Department. 
  • Hennessy, John A.; Goldberg, David (1996). Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers. ISBN 1-55-860329-8. 
  • a 
MIPS Technologies, Inc. (2005). "MIPS32® Architecture For Programmers Volume II: The MIPS32® Instruction Set". MIPS Technologies, Inc.. 
  • a 
Smotherman·Mark (2005) -  History of Multithreading   - 於2005-12-19访问。
  • a 
 von Neumann, John (1945). "First Draft of a Report on the EDVAC". Moore School of Electrical Engineering, University of Pennsylvania. 
  • a 
b 
Weik, Martin H. (1961). "A Third Survey of Domestic Electronic Digital Computing Systems".  Ballistic Research Laboratories. 

[编辑] 參閱

Intel 80486DX-33中央處理器。
Intel 80486DX-33中央处理器。

[编辑] 外部連結

微处理器生產商
其它语言
AD Links