專利名稱:指令處理方法以及其所適用的超純量管線微處理器的制作方法
技術領域:
本發明主要關于微處理器的技術領域,特別是有關于一種微處理器的微處理器架 構(microarchitecture)0
背景技術:
精簡指令集架構處理器的一個典型是這種處理器會使用一種加載/儲存架構,也 就是說,這種處理器包括了一加載指令,用以將一操作數從存儲器中加載至該處理器的一 寄存器,這種處理器還包括一儲存指令,用以將該處理器的一寄存器中的一操作數儲存到 存儲器里。在一般范例中,上述加載指令與儲存指令是唯一會存取存儲器的指令,而執行算 術/邏輯運算的其它指令則從寄存器中接收各自的操作數并將結果寫入寄存器,意即,非 加載或儲存的指令不被允許指定在存儲器中的操作數,這使得大部分的非加載或儲存的指 令可在單一頻率周期執行完畢,相較之下,一個加載指令則需要占用數個頻率周期以存取 存儲器(即高速緩存或系統存儲器)。因此,一般的指令序列可能包括有一個加載指令,用 以從存儲器中提取(fetch) —操作數至一第一寄存器,該加載指令其后則接著一算術邏輯 (arithmetic/logical)指令,用以在第一寄存器中的操作數上執行一算術邏輯運算(即加 法運算、減法運算、增量運算、乘法運算、移位/回轉(shirt/rotate)運算、布爾和(Boolean AND)運算、布爾或(Boolean OR)運算、布爾反(Boolean NOT)運算等等)并且將結果寫入 一第二寄存器,該算術邏輯指令其后再接著一儲存指令,用以將第二寄存器中的結果寫入 存儲器。上述加載/儲存架構的典型范例的優點是眾所周知的。然而,加載/儲存架構所產生的結果是許多處理器包括了不同的加載/儲存單 元,分離于執行算術邏輯運算的執行單元,也就是說,一加載單元僅執行從存儲器中將數 據加載至一寄存器,一儲存單元僅執行將數據從一寄存器儲存至存儲器,而算術邏輯單元 (Arithmetic/Logical Unit, ALU)則對來自來源寄存器的操作數執行算術邏輯運算并將結 果寫入一目的寄存器。于是,以上述的指令序列范例而言,加載單元會執行加載指令以自存 儲器中提取操作數至第一寄存器,一算術邏輯單元會執行算術邏輯指令以對第一寄存器中 的操作數執行算術邏輯運算(或許使用另一寄存器中的第二操作數來進行)并將結果寫入 第二寄存器,最后,儲存單元會執行將第二寄存器中的結果寫入存儲器的儲存指令。使用不同加載/儲存單元以及算術邏輯單元的優點是架構簡單且速度快,然而, 缺點是將結果通過寄存器在各個單元間所做的轉送動作會耗用許多時間,這個問題的一部 分可藉由轉送總線而獲得解決,轉送總線會把一結果從一執行單元直接轉送至另一執行單 元而不需經由寄存器,但是,這仍然有時間被耗用的問題,意即轉送過程中所發生的延遲 (delay)情形。所被耗用的時間主要是取決于距離與阻容電路(RC circuit)時間常數的一 函數,該距離是指信號在轉送總線上來去不同執行單元之間所需的距離,而阻容電路時間 常數是指關于該信號傳輸線(signal trace)的阻容電路時間常數。關于轉送結果的延遲 時間總計可達一或多個頻率周期,視已知設計中執行單元的布設(layout)與所使用的制 程技術而定。
發明內容
本發明的一實施例提供了一種超純量(superscalar)管線(pipelined)微處 理器。該超純量管線微處理器包括了由該超純量管線微處理器的一指令集架構所界定 (define)的一寄存器集合、一高速緩存、多個執行單元、以及耦接至上述高速緩存的一加載 單元。上述加載單元是不同于該超純量管線微處理器的其它執行單元,且上述加載單元包 括一算術邏輯單元。上述加載單元是用以接收一第一指令,上述第一指令是指定(specify) 一第一來源操作數的一第一存儲器地址、在上述第一來源操作數上執行并產生一結果的一 運算、以及上述寄存器集合中用以儲存上述結果的一第一目的寄存器。上述加載單元亦用 以自上述高速緩存讀取上述第一來源操作數。上述算術邏輯單元是用以在上述第一來源操 作數上執行上述運算以產生上述結果,而非將上述第一來源操作數轉送(forward)至該超 純量管線微處理器的其它執行單元的任一者以在上述第一來源操作數上執行上述運算以 產生上述結果。上述加載單元更用以輸出上述結果以供后續引退(retirement)至上述第 一目的寄存器的用。本發明的另一實施例提供了一種指令處理方法,適用于一超純量管線微處理器, 該超純量管線微處理器具有由該超純量管線微處理器的一指令集架構所界定的一寄存器 集合、一高速緩存、多個執行單元、以及不同于該超純量管線微處理器的其它執行單元的一 加載單元。上述指令處理方法包括由上述加載單元接收一第一指令,上述第一指令是指定 一第一來源操作數的一第一存儲器地址、在上述第一來源操作數上執行并產生一結果的一 運算、以及上述寄存器集合中用以儲存上述結果的一第一目的寄存器;由上述加載單元自 上述高速緩存讀取上述第一來源操作數;由上述算術邏輯單元在上述第一來源操作數上執 行上述運算以產生上述結果,而非將上述第一來源操作數轉送至該超純量管線微處理器的 其它執行單元的任一者以在上述第一來源操作數上執行上述運算以產生上述結果;以及由 上述加載單元輸出上述結果以供后續引退至上述第一目的寄存器之用。
圖1是根據本發明所述的超純量管線微處理器的方塊圖。圖2是根據本發明如圖1所示的加載單元124的方塊圖。圖3是根據本發明如圖1所示的超純量管線微處理器100的運作流程圖。圖4是顯示比對本發明所述的超純量管線微處理器100的傳統微處理器運作流程 圖。圖5是根據本發明一實施例所述的效果的時間圖。圖6是根據本發明另一實施例所示的加載單元的方塊圖。圖7是根據本發明另一實施例所述的加載單元的方塊圖。圖8是根據本發明另一實施例所述的效果的時間圖。圖9是根據本發明如圖1所示的儲存單元126的方塊圖。圖10是根據本發明如圖1所示的超純量管線微處理器100的運作流程圖。圖11是顯示比對本發明所述的超純量管線微處理器100的傳統微處理器運作流 程圖。
圖12是根據本發明另一實施
主要組件符號說明
100 超純量管線微處理器;
102 指令高速緩存;
104 指令轉譯器;
106 寄存器別名表;
108 保留站;
112 通用寄存器集合;
114 重排緩沖器;
116 存儲器子系統;
122 其它執行單元;
124 加載單元;
126 儲存單元;
132 宏指令;
134 微指令;
142、162 算術邏輯單元;
144、146 總線;
148 轉送總線;
152 結果總線;
154、156 算術邏輯單元結果
202 地址產生器;
204 轉譯后備緩沖器;
206 快取卷標矩陣;
208 快取數據矩陣;
212 控制邏輯;
214 多工器;
222 虛擬加載地址;
224 實體地址;
226 狀態;
228 快取線;
232 加載數據;
234 命中/未命中;
652,952 第二操作數;
662 儲存區;
946 儲存數據
具體實施例方式
本發明的發明人發現在一管線流加載單元設計中,最后一個階段中可能會有一部 份的頻率周期不會被使用到,也就是說,加載單元最后一個階段的電路所產生的延遲時間只是頻率周期時間的一小部分而已。因此,本發明有利地在實施例中將一算術邏輯單元整 合到加載單元的最后一個階段中,使加載單元能夠在將從存儲器所提取出的加載數據加載 到目的寄存器之前,先在加載數據上執行算術邏輯運算。通過此一有利的設計,使得將加載 數據轉送至另一算術邏輯執行單元以執行算術邏輯運算時所需耗用的時間能夠節省下來。 本發明的微處理器使用了一加載/儲存的微處理器架構,該微處理器架構所實現的是處理 器的非加載/儲存x86架構(或處理器的宏架構)。指令轉譯器產生特別類型的加載微指 令(此后以Idalu微指令稱之),用以指示加載單元執行從存儲器的加載以及在加載數據上 執行適當的算術邏輯單元運算。這使得該微處理器得以實現復雜的宏指令,該宏指令所需 要的存儲器的讀取以及一算術邏輯單元運算皆位于執行單元中,所以不需要另一執行單元 來執行該算術邏輯單元運算,從而避免結果轉送所造成的時間延遲。圖1是根據本發明所述的超純量管線微處理器的方塊圖。超純量管線微處理器 100包括一指令高速緩存102,用以快取一指令集架構(例如x86指令集架構)的宏指 令。宏指令132所包括的指令需要一存儲器存取與一算術邏輯單元運算功能,舉例來說,一 x86M0VZX reg/mem (零值延伸搬移)指令,用以指示超純量管線微處理器100將存儲器中 的來源操作數的內容復制到目的寄存器并且將該值進行零值延伸。當目的寄存器的尺寸大 小要比存儲器操作數的有效大小來的大時,零值延伸是很重要的一項運作。其它的例子則 包括了 x86指令,該x86指令涉及(involve) —存儲器操作數以及一算術邏輯單元功能,例 如加法(ADD)、減法(SUB)、增量(INC)、減量(DEC)、乘法(MUL)、移位(SAL/SAR/SHL/SHR)、 回轉(RCL/RCR/R0L/R0R)、與(AND)、或(OR)、反(NOT)、異或(XOR)等功能。超純量管線微處理器100包括耦接至指令高速緩存102的一指令轉譯器104,該指 令轉譯器104將宏指令132轉譯為例如Idalu微指令的微指令134,該Idalu微指令指示加 載單元124(將于后續段落作進一步說明)加載存儲器中的數據并且于加載的數據上執行 算術邏輯單元運算。在另一實施例中,指令轉譯器104將宏指令132轉譯為例如stalu微 指令的微指令134,該stalu微指令指示儲存單元126 (將于后續段落作進一步說明)于儲 存數據上執行算術邏輯單元運算并且將該數據儲存于存儲器中。超純量管線微處理器100包括一寄存器別名表(Register Alias Table,RAT) 106, 寄存器別名表106產生微指令相依性并且以程序順序將微指令134發送(dispatch)至保 留站108,保留站108再將微指令134送到(issue)執行單元(即為加載單元124、儲存單元 126、以及其它執行單元122)執行。在一實施例中,保留站108不以程序順序送出微碼指令 134。舉例來說,其它執行單元122可包括整數算術邏輯單元、浮點單元、以及單指令多數據 (Single Instruction Multiple Data, SIMD)執行單元(例如多媒體延伸(MultiMedia extension, MMX)單元或單指令多數據串流延伸(Streaming SIMDExtensions, SSE)單 元)。執行單元122/142/162各自將其結果152/154/156提供至一重排緩沖器(Reorder Buffer, ROB) 114,重排緩沖器114能確保按順序將指令引退(retirement)至架構狀態 (architectural state)。超純量管線微處理器100亦包括耦接至加載單元124與儲存單 元126的一存儲器子系統116,存儲器子系統116包括了高速緩存、加載緩沖器、儲存緩沖 器、以及一總線接口單元。執行單元122/142/162接收來自一通用寄存器集合(General PurposeRegister, GPR) 112的操作數。執行單元122/142/162亦互相接收來自對方的結果152/154/156以當作轉送總線148上的操作數。尤其是加載單元124接收一總線144上的操作數,而儲存單 元126接收一總線146上的操作數。加載單元124包括一算術邏輯單元142,儲存單元126 包括一算術邏輯單元162,其相關的運算將于后續作進一步說明。浦鄉觶元遍■輔力口籠種圖2是根據本發明如圖1所示的加載單元124的方塊圖。加載單元124包括一 地址產生器202,地址產生器202使用如圖1所示的來源操作數144以產生虛擬加載地址 222 (也就是將自該處加載數據的存儲器地址)。加載單元124存取存儲器子系統116的一 轉譯后備緩沖器(Translation LookasideBuffer,TLB) 204,轉譯后備緩沖器204負責查找 虛擬位置222以提供轉譯后的實體地址224。一快取卷標矩陣(cache tag array) 206查找 實體地址224的一卷標部分并且為高速緩存的每一路(way)提供狀態226。實體地址224 的索引(index)部分為一快取數據矩陣208的索引,而快取數據矩陣208則針對高速緩存 的每一路輸出一快取線(cache line) 228。控制邏輯212檢查狀態226以決定實體地址224 是否為高速緩存的一命中/未命中(hit/miss) 234。此外,控制邏輯212控制一多工器214, 而多工器214選擇從數據矩陣208所輸出的適合的快取線228以及加載指令或Idalu微指 令所指定的快取線中的數據,該數據可為根據實施例的不同而為1、2、4、8、16、32、或64位, 且被提供作為加載數據232。在一傳統的加載單元124中,加載數據232將被提供當作一傳統加載指令的結果, 然而,本發明的加載單元124有利地,亦包括了如圖1所示的算術邏輯單元142,算術邏輯單 元142接收加載數據232以及選擇性地在加載數據232上執行一算術邏輯單元運算以產生 一算術邏輯單元結果(alU-reSUlt)154。(如果該指令為一正規加載指令,則算術邏輯單元 142只是讓加載數據232當作算術邏輯單元結果154通過。)算術邏輯單元142是用以根 據不同實施例執行不同的各式運算。在一實施例中,算術邏輯單元142執行一零值延伸(zero-extend)運算,并且包括 多個與門(and gate)以遮除掉(mask off)加載數據232中不被由Idalu微指令指定的存 儲器操作數所包括的較高位。在其它實施例中,算術邏輯單元142是用以額外執行一或多個單一(single)操作 數運算,包括、但不限定于以下運算1.布爾(Boolean)反(NOT)運算算術邏輯單元結果154使加載數據232的每一 位被反向(invert)。2.不等門(NE GATE)運算算術邏輯單元結果154為加載數據232的二補碼負位 (two, s complement negation)。3.增量(increment)運算算術邏輯單元結果154為加載數據232再加1。4.減量(decrement)運算算術邏輯單元結果154為加載數據232再減1。5.符號延伸(sign-extend)運算算術邏輯單元結果154為符號延伸后的加載數 據 232。6.零值偵測運算若加載數據232為零時,算術邏輯單元結果154的值為真 (true);反之,若加載數據232不為零時,算術邏輯單元結果154的值則為假(false)。7.壹值偵測運算若加載數據232的所有位皆為二進制的壹(1)值時,算術邏輯 單元結果154的值為真;反之,若加載數據232的所有位并非全為二進制的壹值時,算術邏輯單元結果154的值則為假。8.數據格式轉換運算算術邏輯單元結果154為格式化成一指定數據格式的加載 數據232,該指定數據格式可為例如一浮點格式、或單指令多數據格式。在圖6所示的另一實施例中,算術邏輯單元142是用以接收一第二操作數652,以 及用以在第二操作數652與加載數據232上執行一雙操作數的算術邏輯單元功能。算術邏 輯單元142可用以另外再執行一或多個雙操作數運算,包括但不限定于以下運算9.布爾邏輯(AND、OR、XOR、NOR)運算算術邏輯單元142在第二操作數652與加 載數據232上執行指定的布爾邏輯運算,以產生算術邏輯單元結果154。10.算術(ADD、SUB、MUL)運算算術邏輯單元142在第二操作數652與加載數據 232上執行指定的算術運算,以產生算術邏輯單元結果154。在圖6所示的另一實施例中,加載單元124包括了儲存區662,儲存區662用以于 加載地址不存在數據高速緩存時儲存第二操作數652,而當加載地址不存在數據高速緩存 時會使得必須從系統存儲器提取加載數據且Idalu微指令必須在加載單元124中重新執 行。圖3是根據本發明如圖1所示的超純量管線微處理器100的運作流程圖。流程從 方塊302開始進行。在方塊302,指令轉譯器104譯碼一宏指令132并將之轉譯為單一 Idalu微指令 134,宏指令132所指定的運算是用以產生自該處提取數據的一存儲器地址。宏指令132也 指定了將于存儲器中提取出的數據上執行的一算術邏輯單元運算以產生一結果。宏指令 132還指定了作為該結果的目的寄存器的一通用寄存器112。Idalu微指令與宏指令132指 定了相同的地址操作數。而且,Idalu微指令還與宏指令132指定了相同的算術邏輯單元 運算。最后,Idalu微指令更與宏指令132針對目的操作數指定了相同的通用寄存器112。 舉例來說,宏指令132可為一 x86M0VZX reg/mem指令或一 PMOVZX reg/mem指令,在此例子 中,指令轉譯器104再將宏指令132轉譯為指定了零值延伸為其算術邏輯單元運算的一單 一 Idalu微指令。流程繼續進行到方塊304。在方塊304,保留站112將Idalu微指令送到加載單元124,流程繼續進行到方塊 306。在方塊306,加載單元124根據由Idalu微指令所指定的來源操作數144而產生虛 擬加載地址222,流程繼續進行到方塊308。在方塊308,加載單元124在轉譯后備緩沖器204中查找虛擬加載地址222以取得 實體加載地址224,流程繼續進行到方塊312。在方塊312,加載單元124以實體加載地址224依序存取快取卷標矩陣206與快取 數據矩陣208以取得狀態226與快取線228,而多工器214選擇了由Idalu微指令所指定的 加載數據232,流程繼續進行到方塊322。 在方塊322,加載單元124在加載數據232上執行由Idalu微指令所指定的算術邏 輯單元運算,以產生算術邏輯單元結果154,流程繼續進行到方塊324。
在方塊324,加載單元124將算術邏輯單元結果154輸出到其結果總線上,事實上, 算術邏輯單元142執行所需的算術邏輯單元運算有利地減輕了將加載數據232轉送至另一 執行單元122以執行算術邏輯單元運算的需求以及轉送運算所伴隨的延遲。流程繼續進行到方塊326。在方塊326,重排緩沖器114從加載單元的結果總線接收并儲存算術邏輯單元結 果154,流程繼續進行到方塊328。在方塊328,重排緩沖器114將其所儲存的算術邏輯單元結果154引退至目的通用 寄存器112,流程結束。圖4是顯示傳統微處理器的運作流程,用以比對本發明所述的超純量管線微處理 器100的運作。雖然圖1所示的超純量管線微處理器100中的組件亦存在于圖4的描述 中,但必須了解的是圖4所述的微處理器中的加載單元并不包括用以在加載數據上執行算 術邏輯單元運算的一算術邏輯單元,且指令轉譯器并不會針對加載數據產生特別的Idalu 微指令。流程從方塊402開始進行。在方塊402,指令轉譯器104譯碼一宏指令132并將之轉譯為二個微指令134,一 為加載指令,一為alu微指令。舉例來說,宏指令132可為一 x86M0VZX reg/mem指令或一 PMOVZX reg/mem指令,在此范例中,指令轉譯器104會將宏指令132轉譯為一加載微指令以 及指定零值延伸為其算術邏輯單元函數的一 alu微指令。接著,寄存器別名表116在加載 微指令上針對alu微指令產生一相依性。流程繼續進行到方塊404。在方塊404,保留站112將加載指令送到加載單元124,流程繼續進行到方塊406。在方塊406,加載單元124根據由加載指令所指定的來源操作數144產生虛擬加載 地址222,流程繼續進行到方塊408。在方塊408,加載單元124在轉譯后備緩沖器中查找虛擬加載地址222以取得實體 加載地址224,流程繼續進行到方塊412。在方塊412,加載單元124以實體加載地址224依序存取快取卷標矩陣206與快取 數據矩陣208以取得狀態226與快取線228,而多工器214選擇了由加載指令所指定的加載 數據232,流程繼續進行到方塊414與方塊416。在方塊414,加載單元124將所提取的加載數據232輸出到其結果總線上,流程繼 續進行到方塊418。在方塊416,既然加載數據222目前已可取用為一來源操作數,則保留站112將 alu微指令送到一執行單元122 (例如一整數單元),流程繼續進行到方塊418。在方塊418,整數單元112從加載單元124的結果總線接收加載數據232作為一來 源操作數,流程繼續進行到方塊422。在方塊422,整數單元112在接收自加載單元124的加載數據232上執行由alu微 指令所指定的算術邏輯單元運算,以產生一算術邏輯單元結果。流程繼續進行到方塊424。在方塊424,整數單元112將算術邏輯單元結果輸出到其結果總線152上,流程繼 續進行到方塊426。在方塊426,重排緩沖器114從整數單元122的結果總線152接收并儲存算術邏輯 單元結果,流程繼續進行到方塊428。在方塊428,重排緩沖器114將其所儲存的算術邏輯單元結果引退至目的通用寄 存器112,流程結束。比較圖3與圖4可發現,指令轉譯器104產生一單一 Idalu微指令、以及加載單元 124包括一算術邏輯單元142以執行由Idalu微指令所指定的算術邏輯單元運算,有利地避免了由傳統微處理器所引起的轉送運作,如圖5所示。圖5是根據本發明一實施例所述的效果的時間圖。圖中展示了六個頻率周期,圖 左側所示為傳統微處理器中由寄存器區隔的管線流階段,圖右側所示為本發明一實施例的 超純量管線微處理器100中由寄存器區隔的管線流階段。在圖5所示的范例中,假設了加 載單元124包括有四個管線流階段,各自被標示為A、B、C、以及D。然而,需要注意的是在其 它實施例中,加載單元124可具有不同數量的管線流階段。而在圖5所示的范例中,假設了 傳統微處理器中的整數算術邏輯單元包括單一階段。在傳統微處理器中,一加載指令接在加載單元124分別對應到頻率周期1、2、3、4 的管線流階段A、B、C、以及D之后進行。然后加載數據被轉送至整數單元,整數單元于頻率 周期5在加載數據上執行一算術邏輯單元運算,最后,于頻率周期6,由整數單元所產生的 算術邏輯單元結果被寫入至重排緩沖器114并且被轉送至其它執行單元122。在如圖1所示的超純量管線微處理器100中,相似于傳統微處理器一般,一 Idalu 指令接在加載單元124分別對應到頻率周期1、2、3、4的管線流階段A、B、C、以及D之后進 行。然而,不同于傳統微處理器,在加載單元124于頻率周期4的管線流階段D中,算術邏 輯單元142在加載數據232上執行了由Idalu微指令所指定的算術邏輯單元運算以產生算 術邏輯單元結果154。在頻率周期5中,由加載單元124所產生的算術邏輯單元結果154被 寫入至重排緩沖器114并且被轉送至其它執行單元122。因此可見,如圖1所示的超純量 管線微處理器100至少在比傳統微處理器更早一頻率周期時,即產生了算術邏輯單元結果 154并且讓其它指令可取得算術邏輯單元結果154。而如上述所言,當信號在轉送總線上來 去不同執行單元之間所需的距離、以及該信號傳輸線的阻容電路時間常數增加時,意即轉 送延遲增加時,那么本發明所能省下的時間也就跟著提升了。圖7是根據本發明另一實施例所述的加載單元的方塊圖。本圖中的加載單元124 類似于圖1所示的加載單元124,然而,圖7的加載單元124在內部將算術邏輯單元結果154 轉送回給自己當作一來源操作數144,以供計算出一后續加載指令(或Idalu微指令)的一 加載地址222。在某些設計中,此內部轉送的路徑可能比傳統微處理器中來自其它執行單元 的外部轉送路徑來的短,該其它執行單元會執行算術邏輯單元運算且結果會被當作一來源 操作數144從該處被轉送至加載單元124。有關內部轉送的路徑的優點將于圖8中繪示。圖8為一相似于圖5所示的時間圖。然而,圖8所示的范例假設了在傳統微處理 器中,一加載指令接在alu微指令之后并且使用alu微指令的算術邏輯單元結果當作一來 源操作數以計算加載地址。同樣地,第八圖中假設了在超純量管線微處理器100中,一加載 指令接在alu微指令之后并且使用alu微指令的算術邏輯單元結果154當作一來源操作 數以計算加載地址。此外,圖8所示的范例假設傳統微處理器(以及超純量管線微處理器 100)分別在頻率周期5與7中,需要一額外的頻率周期以將結果自加載單元124轉送至整 數單元122,以及另一額外的頻率周期將結果自整數單元122轉送至加載單元124。如圖8 所示,本發明的加載單元124在頻率周期4的管線流階段D中執行由Idalu微指令所指定 的算術邏輯單元運算,并且在頻率周期5中將算術邏輯單元結果154內部轉送回給自己使 得加載單元124能夠使用算術邏輯單元結果154,以產生加載地址222,而非使一算術邏輯 單元結果自其它執行單元被轉送至加載單元124。因此,在此范例中,具有如圖7所示的加 載單元124的超純量管線微處理器100可有利地在以少于傳統微處理器三個頻率周期的情況下,即處理完Idalu微指令或加載微指令序列。圖9是根據本發明如圖1所示的儲存單元126的方塊圖。儲存單元126包括了圖 1中的算術邏輯單元162,算術邏輯單元162所接收的儲存數據946是經由總線146來自通 用寄存器集合112的、或經由轉送總線148來自執行單元122/124/126。算術邏輯單元162 在儲存數據946上執行一算術邏輯單元運算以產生一算術邏輯單元結果156,而算術邏輯 單元結果156被提供至存儲器子系統116中的一儲存緩沖器、被提供至重排緩沖器114、以 及經由轉送總線148被提供至執行單元122/124/126。儲存緩沖器最終將算術邏輯單元結 果156寫入至存儲器。該算術邏輯單元運算可為如圖2所述由加載單元124所執行的任一 單來源操作數的算術邏輯單元運算。另外,在一實施例中,算術邏輯單元162可接收一第二 操作數952以致該算術邏輯單元運算可為如圖6所述由加載單元124所執行的任一雙來源 操作數的算術邏輯單元運算。如下于第10 12圖所述,通過將算術邏輯單元162整合至儲存單元126以于將 儲存數據946寫入存儲器前先在儲存數據946上執行算術邏輯單元運算,即可有利地避免 掉傳統微處理器所會發生的轉送延遲。在一實施例中,超純量管線微處理器100將儲存運算拆解為兩個不同的微指 令-儲存地址微指令以及儲存數據微指令。而超純量管線微處理器100包括了兩個單獨的 單元-儲存地址單元以及儲存數據單元,分別用以執行該儲存地址微指令以及儲存數據微 指令。儲存地址單元包括一地址產生器(類似于加載單元124的地址產生器202),用以從 儲存地址微指令所指定的來源操作數產生一虛擬儲存地址。然后儲存地址單元于轉譯后備 緩沖器204中查找虛擬儲存地址以取得一轉譯后的實體儲存地址,該實體儲存地址即為儲 存地址單元寫入至存儲器子系統116的一儲存緩沖器的數據,且該儲存緩沖器是被配置予 此儲存運算。儲存緩沖器中的實體儲存地址最后被寫入到快取卷標矩陣206與快取數據矩 陣208、或被寫入到系統存儲器中。在一傳統微處理器中,儲存單元僅接收儲存數據(不會 有儲存單元之外的其它執行單元在儲存數據上執行一算術邏輯單元運算)、以及將儲存數 據寫入至儲存緩沖器。儲存緩沖器最后將儲存數據從儲存數據單元寫入至由儲存地址單元 所產生的存儲器地址。在一實施例中,儲存地址單元并未被繪示出,而儲存數據單元則為圖 9所示的儲存單元126。圖10是根據本發明如圖1所示的超純量管線微處理器100的運作流程圖。流程 從方塊1002開始進行。在方塊1002,指令轉譯器104譯碼一宏指令132并將其轉譯為單一 stalu微指令 134。宏指令132指定了容納(hold) —操作數的一通用寄存器112,一算術邏輯單元運算即 執行于該操作數上以產生一結果并將結果寫入存儲器中。stalu微指令針對其來源操作數 指定了與宏指令132所指定的相同的通用寄存器112。再者,stalu微指令亦指定了與宏指 令132所指定的相同的算術邏輯單元運算。流程繼續進行到方塊1004。在方塊1004,保留站112將stalu微指令送到儲存單元126,流程繼續進行到方塊 1006。在方塊1006,儲存單元126從由stalu微指令所指定的通用寄存器112 (或者從轉 送總線148)接收儲存數據946。如果stalu微指令指定的是一雙操作數的算術邏輯單元運 算,則儲存單元126再接收來自于一第二通用寄存器112 (或轉送總線148)的第二操作數952。儲存單元126的算術邏輯單元162在儲存數據946上(以及于指定時,亦包括在第二 操作數952上)執行由stalu微指令所指定的算術邏輯單元運算,以產生算術邏輯單元結 果156。流程繼續進行到方塊1008。在方塊1008,儲存單元126將算術邏輯單元結果156寫入存儲器子系統116的一 儲存緩沖器。如上所述,在一實施例中,算術邏輯單元結果156將被寫入到的物理存儲器地 址亦被儲存地址單元寫入至該儲存緩沖器,以因應一儲存地址微指令。流程繼續進行到方 塊 1012。在方塊1012,儲存緩沖器將算術邏輯單元結果156寫入存儲器,流程結束。圖11顯示傳統微處理器的運作流程,用以比對本發明所述的超純量管線微處理 器100的運作。雖然圖1所示的超純量管線微處理器100中的組件亦存在于圖11的描述 中,但必須了解的是傳統微處理器中的儲存單元并不包括用以在儲存數據上執行算術邏輯 單元運算的一算術邏輯單元,且指令轉譯器并不會針對儲存數據產生特別的Stalu微指 令。流程從方塊1102開始進行。在方塊1102,指令轉譯器104譯碼一宏指令132并將的轉譯為二個微指令134,宏 指令132指定了容納一操作數的一通用寄存器112,一算術邏輯單元運算即執行于該操作 數上以產生一結果并將結果寫入存儲器中。第一個轉譯后的微指令為一算術邏輯單元指 令,該算術邏輯單元指令針對其來源操作數指定了與宏指令132所指定的相同的通用寄存 器112,且該算術邏輯單元指令亦指定了與宏指令132所指定的相同的算術邏輯單元運算。 該算術邏輯單元指令針對其目的操作數指定了一臨時寄存器。第二個轉譯后的微指令為一 儲存微指令,該儲存微指令針對其來源操作數(意即針對其儲存數據)指定了上述臨時寄 存器。流程繼續進行到方塊1104。在方塊1104,保留站112將alu微指令送到整數單元122,流程繼續進行到方塊 1106。在方塊1106,整數單元122從alu微指令所指定的通用寄存器112接收來源操作 數,并且在來源操作數上執行由alu微指令所指定的算術邏輯單元運算以產生一結果。流 程繼續進行到方塊1108與方塊1112。在方塊1108,整數單元122將結果輸出到結果總線152上,流程繼續進行到方塊 1114。在方塊1112,保留站108將儲存微指令送到儲存單元126,流程繼續進行到方塊 1114。在方塊1114,儲存單元126通過結果總線152從整數單元112接收結果,流程繼續 進行到方塊1116。在方塊1116,儲存單元126將結果寫入儲存緩沖器,流程繼續進行到方塊1118。在方塊1118,儲存緩沖器將結果寫入存儲器,流程結束。比較圖10與圖11可發現,指令轉譯器104產生一單一 stalu微指令,且儲存單元 126包括一算術邏輯單元162以執行由stalu微指令所指定的算術邏輯單元運算,此有利地 避免了由傳統微處理器所引起的轉送運作,如圖12所示。圖12是根據本發明一實施例所述的效果的時間圖。圖中展示了三個頻率周期,圖 左側所示為傳統微處理器中由寄存器區隔的管線流階段,圖右側所示為本發明一實施例的超純量管線微處理器100中由寄存器區隔的管線流階段。在圖12所示的范例中,假設了儲 存單元126包括單一管線流階段。然而,需要注意的是在其它實施例中,儲存單元126可具 有不同數量的管線流階段。而在圖12所示的范例中,假設了傳統微處理器中的整數算術邏 輯單元包括單一階段。在傳統微處理器中,一 alu微指令接在整數單元122用以執行指定算術邏輯單元 運算的管線流階段之后進行,該指定的算術邏輯單元運算是用以于頻率周期1內產生一結 果。然后該結果通過轉送總線148從整數單元被轉送至儲存單元,而儲存單元于頻率周期 2內接收該結果為儲存數據。最后在頻率周期3,儲存數據被寫入儲存緩沖器。在如圖1所示的超純量管線微處理器100中,一 stalu指令接在儲存單元126于頻 率周期1的管線流階段之后進行。相較于傳統的微處理器,在頻率周期1,儲存單元126中 的算術邏輯單元162在儲存數據946上(以及于指定時,亦包括在第二操作數952上)執 行由stalu微指令所指定的算術邏輯單元運算,以產生算術邏輯單元結果156。在頻率周期 2,由儲存單元126所產生的算術邏輯單元結果156被寫入儲存緩沖器。因此可見,如圖1 所示的超純量管線微處理器100至少在比傳統微處理器更早一頻率周期時,即產生了算術 邏輯單元結果156并且讓儲存緩沖器與其它指令可取得算術邏輯單元結果156。而如上述 所言,當信號在轉送總線上來去不同執行單元之間所需的距離、以及該信號傳輸線的阻容 電路時間常數增加時,意即轉送延遲增加時,那么本發明所能省下的時間也就跟著提升了。需要注意的是,雖然在圖10所述的實施例中,宏指令132指定了用以容納一操作 數的通用寄存器112,且一算術邏輯單元運算在該操作數上執行以產生一結果而該結果將 被寫入存儲器,但指令轉譯器104可產生一 stalu微指令以及其它微指令(包括Idalu微 指令)以實作其它宏指令。舉例來說,某些宏指令132于一存儲器操作數上指定了讀取、修 改、或寫入類型的運算,也就是說,宏指令指定了一算術邏輯單元運算以及一存儲器地址, 且該存儲器地址為該算術邏輯單元運算所執行其上的操作數的地址,而該結果將被寫回該 存儲器地址。針對這樣的宏指令,本發明的指令轉譯器104可產生其后接著一 stalu微指 令的一傳統的加載微指令,或者其后接著一傳統的儲存微指令的一 Idalu微指令。本發明的另一優點是通過將加載微指令與alu (alu與儲存)微指令合并至 單一 Idalu(Stalu)微指令,在超純量管線微處理器100中,一次僅會耗用一個指令槽 (instruction slot)而非兩個指令槽。舉例來說,ldalu(stalu)微指令僅分別占用寄存器 別名表116、保留站108、以及重排緩沖器114中的一個項目(entry)而已,而非如加載微指 令與alu (alu與儲存)微指令會分別占用寄存器別名表116、保留站108、以及重排緩沖器 114中的兩個項目。特別是通過整理出重排緩沖器114中的更多空間給更多微指令使用, Idalu微指令可能創造出用以送出指令到執行單元122/124/126的一較大的微指令集用池 (pool)或窗口,因而可能增加超純量管線微處理器100的前視(Iookahead)能力,使更加充 分利用程序執行時的指令級平行化,并且可提升執行單元122/124/126的使用狀況。再者, 單一 Idalu微指令只會產生兩次對通用寄存器112的存取(讀取來源操作數、以及寫入結 果),而加載與alu微指令序列則產生四次存取。因此,本發明可降低通用寄存器112的擁 塞狀況,并且可使超純量管線微處理器100的設計包括較小、較快、耗用較低功率、以及較 不復雜的通用寄存器112。最后,指令轉譯器104每個頻率周期可產生的微指令數量是有限 的(該數量在一實施例中為3,在另一實施例中則為4)。另根據一實施例,為了降低指令轉譯器104的復雜度,指令轉譯器104必須在同一個頻率周期內產生實作一已知宏指令所需 的所有微指令,這使得部分的有限數量指令槽在某些頻率周期時是空著的,因此,讓指令轉 譯器104能夠少產生一微指令以實作某些宏指令,可使指令轉譯器104充分利用有限數量 指令槽并以較快的速率轉譯宏指令。縱然上述實施例是針對x86架構的微處理器,但本發明并不只限定于x86架構的 微處理器。反之,將一或多個算術邏輯單元并入超純量管線微處理器中的管線加載以及/ 或儲存單元,此一概念亦可運用于其它架構的微處理器中。另外,雖然上述實施例所描述的指令轉譯器產生Idalu微指令(或Stalu微指 令),例如圖3中的方塊302,以因應一復雜的宏指令需要從存儲器進行讀取與一算術邏輯 單元運算(或者需要一算術邏輯單元運算與進行寫入存儲器),但在其它實施例中,指令轉 譯器可辨識一宏指令序列,該宏指令序列中的第一個宏指令將一操作數從存儲器搬移至一 寄存器,其后該宏指令序列中的第二個宏指令在該寄存器中的該操作數上執行一算術邏輯 單元運算并將該操作數寫入一目的寄存器(或者該宏指令序列中的第一個宏指令在寄存 器中的操作數上執行一算術邏輯單元運算并將該操作數寫入一目的寄存器,其后該宏指令 序列中的第二個宏指令再將該操作數從目的寄存器搬移至存儲器)。指令轉譯器將這兩個 宏指令整合至一單一 Idalu微指令,該單一 Idalu微指令指示加載單元在將加載數據寫入 目的寄存器的前,于加載數據上執行算術邏輯單元運算(或者整合至一單一 stalu微指令, 該單一 stalu微指令只是儲存單元在將儲存數據寫入存儲器的前,于儲存數據上執行算術 邏輯單元運算),從而避免掉結果轉送延遲。換言之,Idalu微指令與stalu微指令可運用 在各式情況中并帶來效益,不止是因應轉譯單一宏指令。在另一范例的一實施例中,超純量 管線微處理器100包括一微碼單元與一微序列發生器(microseqUencer),微碼單元所包括 的微碼例程的微碼指令是儲存于一微碼存儲器,而微序列發生器則將微指令定序于超純量 管線微處理器100的管線流中。該微碼可供指令轉譯器104使用以實作復雜的宏指令、或 執行其它功能,例如內建自我測試(Built-in Self-Test, BIST)或超純量管線微處理器 100的其它初始化功能。該微碼可有利地隨時視需求使用Idalu微指令與Stalu微指令以 降低程序于超純量管線微處理器100上的執行時間以及/或程序代碼大小。此外,上述實施例所描述位于加載單元或儲存單元中的算術邏輯單元需要少于一 個頻率周期以執行算術邏輯單元運算(意即算術邏輯單元運算是執行于加載單元或儲存 單元的最后管線流階段所對應的頻率周期的一部份),使得執行所有加載/儲存指令所需 的頻率周期數量都是相同的,不論加載/儲存指令為正規的加載/儲存指令或為算術邏輯 單元整合加載/儲存指令,雖然如此,但在其它實施例中,算術邏輯單元運算所占用的時間 多于加載單元或儲存單元的最后管線流階段的可用時間,因此視運算邏輯單元運算的復雜 度而定,將造成算術邏輯單元整合加載/儲存指令比常規加載/儲存指令占用更多頻率周 期,以及/或造成某些算術邏輯單元整合加載/儲存指令比其它算術邏輯單元整合加載/ 儲存指令占用更多頻率周期。在此實施例中,保留站中的指令排序器(scheduler)則必須 考慮執行一加載/儲存指令所需的頻率周期的可變量量。本發明雖以各種實施例揭露如上,然而其僅為范例參考而非用以限定本發明的 范圍,任何熟習此項技藝者,在不脫離本發明的精神和范圍內,當可做些許的更動與潤飾。 舉例來說,軟件可實現相關于本發明的裝置與方法的功能、制造、模塊化(modeling)、模擬(simulation)、描述(description)、以及/或測試等等。該軟件可使用一般程序設計語言 (如C、C++)、硬件描述語言(如=Verilog HDL、VHDL等等)、或其它可得的程序來實作。且 該軟件可配置于任何公知的計算機可使用媒體中,例如半導體、磁盤、或光盤(如只讀記 憶光盤(Compact Disc Read-Only Memory,CD-ROM)、數字多功能光盤(Digital Versatile Disc Read-Only Memory, DVD-ROM)等等)。本發明所述的裝置與方法的實施例可包括于一 半導體智財核心(semiconductor intellectual property core)中,例如微處理器核心 (如嵌入于硬件描述語言中),再進一步轉換為硬件的集成電路產品。另外,本發明所述的 裝置與方法可以硬件與軟件的一組合方式嵌入。因此,上述實施例并非用以限定本發明的 范圍,本發明的保護范圍當視后附的權利要求所界定者為準。特別是,本發明可實作于一微 處理器裝置,且該微處理器裝置可使用于一般用途的計算機。最后,熟習此項技藝者應當可 理解在不脫離本發明的精神和范圍內,以上述所揭露的實施例與概念設計出與本發明相同 目的的其它架構。
權利要求
一種超純量管線微處理器,包括一寄存器集合,由該超純量管線微處理器的一指令集架構所界定;一高速緩存;多個執行單元;以及一加載單元,耦接至上述高速緩存,上述加載單元是不同于該超純量管線微處理器的其它執行單元,且上述加載單元包括一算術邏輯單元,其中上述加載單元是用以接收一第一指令,上述第一指令是指定一第一來源操作數的一第一存儲器地址、在上述第一來源操作數上執行并產生一結果的一運算、以及上述寄存器集合中用以儲存上述結果的一第一目的寄存器,其中上述加載單元是用以自上述高速緩存讀取上述第一來源操作數,其中上述算術邏輯單元是用以在上述第一來源操作數上執行上述運算以產生上述結果,而非將上述第一來源操作數轉送至該超純量管線微處理器的其它執行單元的任一者以在上述第一來源操作數上執行上述運算以產生上述結果,其中上述加載單元更用以輸出上述結果以供后續引退至上述第一目的寄存器之用。
2.如權利要求1所述的超純量管線微處理器,其中上述加載單元更用以接收一第二指 令,上述第二指令是指定一第二來源操作數的一第二存儲器地址、以及上述寄存器集合中 用以儲存上述第二來源操作數的一第二目的寄存器,而上述第二來源操作數的儲存并不需 要在上述第二來源操作數上執行一第二運算,其中上述加載單元以相同數量的頻率周期執 行上述第一指令與上述第二指令。
3.如權利要求1所述的超純量管線微處理器,其中上述加載單元更包括 一地址產生器;以及一總線,耦接至上述地址產生器,上述總線是用以將上述第一指令的上述結果轉送至 上述地址產生器的一輸入端,其中上述地址產生器是用以使用轉送的上述結果產生一存儲 器位置以使上述加載單元自上述高速緩存中存取一后續加載指令。
4.如權利要求1所述的超純量管線微處理器,其中該超純量管線微處理器的其它執行 單元皆未用以讀取上述高速緩存。
5.如權利要求1所述的超純量管線微處理器,其中該超純量管線微處理器的其它執行 單元的至少一者具有另一算術邏輯單元,上述另一算術邏輯單元是用以執行上述第一指令 所指定的上述運算,而上述加載單元并未將上述第一來源操作數轉送至上述其它執行單元 的至少一者并在上述第一來源操作數上執行上述運算以產生上述結果。
6.如權利要求1所述的超純量管線微處理器,其中上述加載單元是用以執行從上述高 速緩存所讀取的所有指令,而上述其它執行單元并未執行從上述高速緩存所讀取的任何指 令。
7.如權利要求1所述的超純量管線微處理器,其中上述運算是執行于上述第一來源操 作數與上述第二來源操作數上,以產生上述結果,其中上述第二來源操作數是由上述寄存 器集合的一寄存器提供至上述加載單元。
8.如權利要求1所述的超純量管線微處理器,其中上述加載單元僅需對上述寄存器集 合進行兩次存取以執行上述第一指令。
9.如權利要求1所述的超純量管線微處理器,更包括一指令轉譯器,用以將一第一宏指令轉譯為由上述加載單元所執行的上述第一指令, 其中上述第一宏指令是由上述指令集架構所界定。
10.如權利要求9所述的超純量管線微處理器,其中上述指令轉譯器更用以將由上述 指令集架構所界定的一第二宏指令轉譯為一對指令,上述對指令包括上述第一指令與一第 二指令,其中上述第二指令是由上述其它執行單元之一者所執行,且上述其它執行單元之 一者自上述加載單元接收上述第一指令的上述結果并將上述結果寫入上述高速緩存。
11.如權利要求10所述的超純量管線微處理器,其中上述指令轉譯器是用以將由上述 指令集架構所界定的上述第一宏指令與上述第二宏指令轉譯為上述第一指令。
12.如權利要求1所述的超純量管線微處理器,其中上述運算包括以下運算的至少一者一零值延伸運算,上述零值延伸運算將上述第一來源操作數進行零值延伸至上述第一 目的寄存器的一大小;一布爾反運算,上述布爾反運算將上述第一來源操作數的每個位反向; 一不等門運算,上述不等門運算產生上述第一來源操作數的一二補碼負位; 一增量運算,上述增量運算將上述第一來源操作數增量; 一減量運算,上述減量運算將上述第一來源操作數減量; 一符號延伸運算,上述符號延伸運算將上述第一來源操作數進行符號延伸; 一零值偵測運算,上述零值偵測運算于上述第一來源操作數為零時,產生上述結果的 值為真,而于上述第一來源操作數為非零時,產生上述結果的值為假;一壹值偵測運算,上述壹值偵測運算于上述第一來源操作數的所有位皆為二進制的壹 值時,產生上述結果的值為真,反之則產生上述結果的值為假;一數據格式轉換運算,上述數據格式轉換運算將上述第一來源操作數格式化為一數據 格式,且上述數據格式不同于上述第一來源操作數自上述高速緩存被讀出時的數據格式, 其中上述第一指令指定上述數據格式;一布爾邏輯運算,其中上述算術邏輯單元在上述第一來源操作數與一第二來源操作數 上執行上述布爾邏輯運算以產生上述結果;以及一算術運算,其中上述算術邏輯單元在上述第一來源操作數與一第二來源操作數上執 行上述算術運算以產生上述結果。
13.一種指令處理方法,適用于一超純量管線微處理器,該超純量管線微處理器具有由 該超純量管線微處理器的一指令集架構所界定的一寄存器集合、一高速緩存、多個執行單 元、以及不同于該超純量管線微處理器的其它執行單元的一加載單元,上述指令處理方法 包括由上述加載單元接收一第一指令,上述第一指令是指定一第一來源操作數的一第一存 儲器地址、在上述第一來源操作數上執行并產生一結果的一運算、以及上述寄存器集合中 用以儲存上述結果的一第一目的寄存器;由上述加載單元自上述高速緩存讀取上述第一來源操作數;由一算術邏輯單元在上述第一來源操作數上執行上述運算以產生上述結果,而非將上 述第一來源操作數轉送至該超純量管線微處理器的其它執行單元的任一者以在上述第一 來源操作數上執行上述運算以產生上述結果;以及由上述加載單元輸出上述結果以供后續引退至上述第一目的寄存器的用。
14.如權利要求13所述的指令處理方法,更包括由上述加載單元接收一第二指令,上 述第二指令是指定一第二來源操作數的一第二存儲器地址、以及上述寄存器集合中用以儲 存上述第二來源操作數的一第二目的寄存器,而上述第二來源操作數的儲存并不需要在上 述第二來源操作數上執行一第二運算,其中上述第一指令與上述第二指令是由上述加載單元以相同數量的頻率周期數執行。
15.如權利要求第13項所述的指令處理方法,更包括由上述加載單元執行以下步驟 接收上述第一指令后續的一第二指令,其中上述第二指令是指定上述第一目的寄存器為一來源寄存器;將上述第一指令的上述結果轉送至上述加載單元;使用上述轉送的結果產生上述第二指令的一第二存儲器地址;以及使用上述第二存儲器地址讀取上述高速緩存。
16.如權利要求13所述的指令處理方法,更包括將一第一宏指令轉譯為由上述加載單元所執行的上述第一指令,其中上述第一宏指令 是由上述指令集架構所界定。
17.如權利要求16所述的指令處理方法,更包括將由上述指令集架構所界定的一第二宏指令轉譯為上述第一指令與一第二指令,其中 上述第二指令是由上述其它執行單元之一者所執行,且上述其它執行單元之一者自上述加 載單元接收上述第一指令的上述結果并將上述結果寫入上述高速緩存。
18.如權利要求17所述的指令處理方法,更包括將由上述指令集架構所界定的上述第一宏指令與上述第二宏指令轉譯為上述第一指令。
19.如權利要求13所述的指令處理方法,其中上述運算包括以下運算的至少一者一零值延伸運算、一布爾反運算、一不等門運算、一增量運算、一減量運算、一符號延伸 運算、一零值偵測運算、一壹值偵測運算、一數據格式轉換運算、一布爾邏輯運算、一算數運 算;其中上述算術邏輯單元在上述第一來源操作數與一第二來源操作數上執行上述布爾 邏輯運算以產生上述結果;其中上述算術邏輯單元在上述第一來源操作數與一第二來源操作數上執行上述算術 運算以產生上述結果。
全文摘要
一種超純量管線微處理器及指令處理方法,該超純量管線微處理器具有由該超純量管線微處理器的指令集架構所界定的寄存器集合、高速緩存、執行單元、以及耦接至高速緩存的加載單元。加載單元不同于超純量管線微處理器的其它執行單元,且加載單元包括算術邏輯單元。加載單元接收第一指令,第一指令指定了第一來源操作數的第一存儲器地址、在第一來源操作數上執行并產生結果的運算、以及寄存器集合中用以儲存結果的第一目的寄存器。加載單元自高速緩存讀取第一來源操作數。算術邏輯單元在第一來源操作數上執行運算以產生結果,而非將第一來源操作數轉送至其它執行單元的任一者以在第一來源操作數上執行運算以產生結果。加載單元更輸出結果以供后續引退至第一目的寄存器之用。
文檔編號G06F9/30GK101907984SQ20101024321
公開日2010年12月8日 申請日期2010年7月28日 優先權日2009年8月7日
發明者吉拉德·M·卡爾, 柯林·艾迪, 羅德尼·E·虎克 申請人:威盛電子股份有限公司