線程優(yōu)化的多處理器架構(gòu)的制作方法
【專利說明】
[0001] 本申請為題為"線程優(yōu)化的多處理器架構(gòu)"的中國專利申請的分案申請,該中國專 利申請的申請?zhí)枮?00880014972. 9,申請日為2008年6月27日。
技術(shù)領域
[0002] 本申請涉及線程優(yōu)化的多處理器架構(gòu),更具體地涉及通過半導體制造工藝制備的 線程優(yōu)化多處理器。
【背景技術(shù)】
[0003] 可使用兩種一般的方法來加快計算機速度:加快指令執(zhí)行速度或以并行的方式執(zhí) 行更多的指令。由于指令執(zhí)行速度已接近硅電子迀移率的極限,因而并行操作成為加快計 算機速度的最佳可選方式。
[0004] 并行操作的早期嘗試包括:
[0005] 1.將取下一條指令與執(zhí)行當前指令進行重疊。
[0006] 2.指令流水線操作。指令流水線將每一條指令拆分為盡可能多的片段,然后嘗試 將連續(xù)的指令映射到并行的執(zhí)行單元內(nèi)。由于多步指令的無效性,很多軟件程序不能提供 足夠的連續(xù)指令以使并行執(zhí)行單元保持填滿,并且在遇到分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)或判斷結(jié)構(gòu) 時,要花費大量時間來重新填充執(zhí)行單元,因而很難獲得理論上的最高限度的改進。
[0007] 3.單指令多數(shù)據(jù)或SIMD。該類技術(shù)是在因特爾SSE指令集中發(fā)現(xiàn)的,如在因特爾 奔騰3或其它處理器中實現(xiàn)。在該技術(shù)中,在多個數(shù)據(jù)集上執(zhí)行單一的指令。該技術(shù)只對 例如視頻圖像繪制的特殊應用有幫助。
[0008] 4.超立方體結(jié)構(gòu)。該技術(shù)使用處理器的大的二維陣列(有時使用三維陣列)和本 地存儲器。支持處理器陣列所需的通信和互連固有地將它們限制在特殊應用中。
[0009] 流水線是由連續(xù)地完成指令片段的執(zhí)行的多個連續(xù)的階段組成的指令執(zhí)行單元, 所述執(zhí)行例如取指令、譯碼、執(zhí)行、存儲等。多個流水線可并行地放置,以將程序指令連續(xù)地 供給每條流水線,直到所有的流水線都在執(zhí)行指令。然后從最初的流水線開始重復進行指 令填充。當N條流水線都填充了指令并且都在執(zhí)行時,其性能效果在理論上是單執(zhí)行單元 的執(zhí)行速度的N倍。
[0010] 成功的流水線取決于如下方面:
[0011] 1.指令的執(zhí)行必須能夠定義為幾個連續(xù)的狀態(tài)。
[0012] 2.每條指令必須具有相同數(shù)目的狀態(tài)。
[0013] 3.每條指令的狀態(tài)數(shù)目確定并行執(zhí)行單元的最大數(shù)目。
[0014]由于基于并行流水線的數(shù)目,流水線操作能夠獲得性能提高,且由于并行流水線 的數(shù)目由每條指令的狀態(tài)數(shù)目所確定,因此流水線鼓勵復雜的多狀態(tài)指令。
[0015] 過度流水線化的計算機很難獲得接近并行執(zhí)行單元期望的理論性能改進。
[0016] 該流水線損失的一些原因包括:
[0017] 1.軟件程序并不只由連續(xù)的指令構(gòu)成。各種研宄表明每8-10條指令就會發(fā)生執(zhí) 行流的變化。改變程序流的任何分支都將會擾亂流水線。將流水線的擾亂降低到最小的嘗 試是很復雜的且是不完全的。
[0018] 2.強迫所有的指令包含相同數(shù)目的狀態(tài)常常導致執(zhí)行滿足最小公分母(即,最 慢和最復雜)指令的需求的流水線。由于該流水線的原因,使得不管是否需要,所有的指 令都被迫具有相同數(shù)目的狀態(tài)。例如,邏輯操作(例如為AND(與)或OR(或))的執(zhí)行比 ADD(加)的執(zhí)行要快一個數(shù)量級,但是常常為兩者分配了相同數(shù)量的執(zhí)行時間。
[0019] 3.流水線鼓勵多狀態(tài)復雜指令??赡苄枰獌蓚€狀態(tài)的指令通常被延長以填充20 個狀態(tài),就因為該流水線的深度是20。(因特爾奔騰4使用20個狀態(tài)的流水線。)
[0020] 4.除了特殊狀態(tài)的設計余量或冗余以外,每個流水線狀態(tài)所需的時間還必須考慮 到通過邏輯電路和相關晶體管的傳播延遲。
[0021] 5.由于仲裁邏輯內(nèi)的晶體管的傳播延遲,常常會降低流水線寄存器和其它資源存 取的仲裁性能。
[0022] 6.在附加的狀態(tài)實際上會減慢執(zhí)行速度而不是加快速度之前,指令可被拆分為的 狀態(tài)的數(shù)目具有上限。一些研宄表明,Digital Equipment Corporation(數(shù)字裝備公司) 的a處理器的最后一代的流水線架構(gòu)超出了該上限,而實際上比先前的較短流水線的處 理器版本執(zhí)行得更慢。
[0023] 柝分流水線
[0024] 重新分解CPU設計的觀點之一是考慮將流水線執(zhí)行單元拆分為多個(N個)簡化 的處理器。(在這樣的設計中,寄存器和一些其它邏輯可需要復制。)相對于上述流水線架 構(gòu),N個簡化的處理器中的每個處理器都將具有如下的優(yōu)點:
[0025] 1.不會發(fā)生流水線停止。無分支預測的必要性。
[0026] 2.指令能按所需時間執(zhí)行,而不是全部都被分配給與最慢指令相同的執(zhí)行時間。
[0027] 3.可通過減少必要的執(zhí)行狀態(tài)來簡化指令,從而減少流水線損失。
[0028] 4.從流水線中去除的每個狀態(tài)都能消除傳播延遲,并能去除該狀態(tài)所需的設計余 量。
[0029] 5.能消除寄存器仲裁。
[0030] 而且,相對于流水線化的CPU,具有N個簡化處理器的系統(tǒng)還具有如下優(yōu)點:
[0031] 1.消除最大流水線并行操作的限制。
[0032] 2.不同于流水線化的處理器,可選擇性地關閉多個單獨處理器的電源,以在不使 用這些處理器時降低功耗。
[0033] 當前并行橾作方法的其災問題
[0034] 并行操作的很多實現(xiàn)屈服于阿姆達爾定律(Amdahl'sLaw)的限制。
[0035] 由于該問題的不可串行化部分,并行操作的加速會受到系統(tǒng)開銷的限制。基本上, 當并行操作的數(shù)量增加時,支持這種數(shù)量增加所需的通信會超過并行操作帶來的益處。
[0036] 紅線上的停止信號(StoplightSittingatRedline)
[0037] 當前處理器的另一低效率是不能將計算功率調(diào)整到滿足即時計算的需求。大多數(shù) 計算機將其大部分時間花費在等待某些事發(fā)生。其等待1/0、等待下一條指令、等待存儲器 存取、或有時等待人機接口。這種等待是計算功率的低效浪費。而且,花費在等待上的計算 機時間常常導致功耗的增加和熱量的產(chǎn)生。
[0038] 等待規(guī)則的例外是諸如引擎控制器、信號處理器和防火墻路由器等應用軟件。由 于問題集和解決方法集的預定性質(zhì),因此這些應用軟件是用于并行操作加速的卓越候選 者。使用N個乘法器可更快地解決需要N次獨立乘法的乘積的問題。
[0039] 通用計算機的感知性能實際上已達到其峰點。通用計算機變得越來越忙,這是由 于運行快速屏幕刷新的視頻游戲、編譯大的源文件或搜索數(shù)據(jù)庫。在理想世界中,視頻繪制 將被分解為特殊用途、陰影、變換、繪制硬件。將程序分解為特殊用途硬件的一種方法是使 用"線程"。
[0040] 線程是自含式的、很少與其它線程進行數(shù)據(jù)通信的獨立程序。線程通常用于從低 速實時活動收集數(shù)據(jù),并提供收集結(jié)果。線程也可用于在顯示器上繪制變化。線程在需要 進一步與另一線程交互之前,可變換數(shù)千或數(shù)百萬個狀態(tài)。獨立線程通過并行操作為提高 性能提供了機會。
[0041] 許多軟件編譯器都支持線程的產(chǎn)生和管理,用于對軟件設計過程進行分解。通過 優(yōu)選實施方式中的線程優(yōu)化微處理器(TOMI)中實現(xiàn)的線程級并行操作技術(shù),相同的分解 將支持多CPU并行處理。
[0042] 線稈級并行橾作
[0043] 線程是用于在單CPU上分解軟件程序的非常容易理解的技術(shù)。通過使用TOMI處 理器,線程級并行操作能獲得程序加速。
[0044] 與其它并行方法相比,TOMI處理器的一個重要優(yōu)點是,TOMI處理器只需對當前軟 件編程技術(shù)做最小的改變,而不需要開發(fā)新算法。許多現(xiàn)存的程序需要重新編譯,但是基本 上不用重寫。
[0045] 有效的TOMI計算機架構(gòu)應該構(gòu)建在大量簡化處理器的周圍。不同的架構(gòu)可用于 不同類型的計算問題。
[0046] 基本計筧機橾作
[0047] 對于通用計算機,最通用的操作按照頻率減小的順序排列是:加載和存儲;排序; 以及數(shù)學和邏輯。
[0048] 加裁和存儲
[0049] 加載(LOAD)和存儲(STORE)的參數(shù)是源和目的地。加載和存儲的能力是源和目 的地的范圍(例如,4G字節(jié)比256字節(jié)具有更有力的范圍)。相對于當前源和目的地的位 置對許多數(shù)據(jù)集來說是很重要的。加1、減1是最有用的。
[0050] 增加從當前源和目的地的偏移量越來越不重要了。
[0051] 加載和存儲也可受存儲器分級體系所影響。從存儲器加載可能是CPU可執(zhí)行的最 慢操作。
[0052] 跡莊
[0053] 分支和循環(huán)是基本的排序指令。根據(jù)測試改變指令順序是計算機做出判定的方 法。
[0054] 數(shù)學和邏輯
[0055] 數(shù)學和邏輯操作是三種操作中最少使用的。邏輯操作是CPU可執(zhí)行的最快操作, 并可僅僅需要單邏輯門延遲。由于高比特位依賴于低比特位操作的結(jié)果,因而數(shù)學操作更 復雜。即使提前進位,32位相加(ADD)也可需要至少32個門延遲。使用移位相加技術(shù)的相 乘(MULTIPLY)可等價于需要32個相加。
[0056] 指令大小的折衷
[0057] 完美指令集可由大到足以選擇無限可能的源、目的地、操作和下一條指令的操作 碼組成。不幸地,該完美指令集的操作碼將會無限寬,因而指令帶寬將會是零。
[0058] 高指令帶寬的計算機設計包括創(chuàng)建這樣的具有操作碼的指令集,其能夠利用最少 的操作碼位有效地定義最通用的源、目的地、操作和下一條指令。
[0059] 寬的操作碼導致高的指令總線帶寬需求,且該得到的架構(gòu)將會很快受限于馮?諾 伊曼瓶頸,其中,計算機性能受到從存儲器取指令的速度的限制。
[006