TWI423125B - 微處理器以及相關指令執行方法 - Google Patents

微處理器以及相關指令執行方法 Download PDF

Info

Publication number
TWI423125B
TWI423125B TW099127697A TW99127697A TWI423125B TW I423125 B TWI423125 B TW I423125B TW 099127697 A TW099127697 A TW 099127697A TW 99127697 A TW99127697 A TW 99127697A TW I423125 B TWI423125 B TW I423125B
Authority
TW
Taiwan
Prior art keywords
instruction
operation element
instructions
execution unit
scheduler
Prior art date
Application number
TW099127697A
Other languages
English (en)
Other versions
TW201110018A (en
Inventor
G Glenn Henry
Gerard M Col
Timothy A Elliott
Rodney E Hooker
Terry Parks
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW201110018A publication Critical patent/TW201110018A/zh
Application granted granted Critical
Publication of TWI423125B publication Critical patent/TWI423125B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

微處理器以及相關指令執行方法
本發明係有關於微處理器中之浮點數(floating point number)計算領域,特別是有關於具有非正規數(denormal number)之浮點數計算。
在一微處理器中所表示的浮點數本文中,非零有限數值或運算元(operand)係分為兩個類別:正規化數值(normalized number)(或正規數(normal number))以及非正規化數值(denormalized number)(或非正規數(denormal number))。舉例來說,更詳細的相關討論請共同參照由英特爾(Intel)公司所發表的文獻”IA-32 Architecture Software Developer’s Manual,Volume 1: Basic Architecture,2002,Order Number 245470-008”中的段落4.8.2.1以及4.8.3.2中的內容,此處僅摘要列舉其結果。一正規數、或正規化數或以正規化的形式所編碼的數值具有一個有效位數(significand)以及一個指數部分(exponent),其中有效位數係為數字1與2之間的一個實數(亦即,一整數位元接著組成一小數(fraction)的數個位元),指數部分則指定數值中二進小數點的位置。當一個浮點數非常趨近於0時,由於指數的範圍不足夠大來補償將二進小數點往右移以消除前置零,使得前述正規化數值格式無法再使用於表示此數值。當指數(偏差)為0時,較小的數僅可透過令整數位元(以及或許其他前置位元)的有效位數為0來表示。在這個範圍之內的數值便稱為非正規數、或非正規化數或非正規化形式的數值。前置零與非正規化數的使用可允許表示較小的數。然而,這樣的非正規化將造成精度的損失(前置零將減少小數部分的有效位元數)。
一般而言,一微處理器中的浮點數單元係用以執行以正規化形式表示的運算元的計算。因此,當一個指令指定一非正規運算元(denormal operand)時,微處理器將此非正規運算元轉換為一正規運算元,以便執行此指令所指定的計算。這個程序將會浪費一相對大量的時間及/或要求一非固定數量的執行時間來增加指令執行延遲(latency),其將引發討論於下的問題。
本發明實施例提供一種微處理器。微處理器包含複數執行單元,用以接收複數指令以及上述指令中之指令運算元並用以執行上述指令。微處理器也包含一指令排程器,用以發送上述指令至上述執行單元並且選擇上述指令運算元之來源。上述執行單元之其中至少一者係用以:偵測出上述指令之其中一者之上述運算元中之一運算元係為一非正規運算元、相應於偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行;並且相應於偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器。上述指令排程器係用以:相應於上述指示,將上述非正規運算元正規化,並且當上述指令係被重新執行時,提供上述已正規化運算元至上述執行單元。
本發明另一實施例提供一指令處理方法,用以於一微處理器中處理一指定一非正規運算元之一指令,其中上述微處理器包含一執行單元以及一指令排程器。方法包括偵測出上述指令之上述運算元係為一非正規運算元,其中上述偵測步驟係由上述執行單元所執行。方法也包括相應於上述偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行,其中上述產生上述指示之步驟係由上述執行單元所執行。方法也包括相應於上述偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器,其中上述提供上述非正規運算元之步驟係由上述執行單元所執行。方法也包括相應於上述指示,將上述非正規運算元正規化,其中上述將上述非正規運算元正規化之步驟係由上述指令排程器所執行。方法也包括於上述提供上述非正規運算元之後,重新執行上述指令。方法也包括相應於上述重新執行上述指令,提供上述已正規化運算元至上述執行單元。
本發明又一實施例提供一種微處理器。微處理器包括一微碼單元以及複數執行單元。上述執行單元用以接收複數指令以及上述指令中之指令運算元並用以執行上述指令。上述執行單元之其中至少一者係用以:偵測出上述指令之其中一者之上述運算元中之一運算元係為一非正規運算元;以及相應於偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行。上述微處理器係用以相應於上述指示,調用(invoke)上述微碼單元用以將上述非正規運算元正規化。上述微處理器係用以當上述指令係被重新執行時,提供上述已正規化運算元至上述執行單元。
為使本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下。
請參見第1圖,顯示一依據本發明實施例之一微處理器100之方塊圖。
微處理器100包含一個指令快取記憶體(cache)102,其可從系統記憶體中快取程式指令。一指令轉譯器(translator)104從指令快取記憶體102中接收程式指令並且將接收到的指令轉譯為微指令(microinstruction)。一暫存器別名表(register alias table,以下簡稱RAT) 106依照程式順序從指令轉譯器104中接收微指令。RAT 106於一重排序緩衝器(reorder buffer,以下簡稱ROB) 114中為每一個微指令配置一項目(entry) 148、產生這些微指令的相依性資訊並且依照程式順序發送這些微指令及其相依性資訊至保留站108中。ROB 114中每一項目148保持與此指令相關的資訊,包含一旗標138,其表示此指令是否需要被重新執行(replay),因為此指令指定一非正規運算元,其細節將於下討論。
前述微指令係被發送至執行單元112來執行。於一實施例中,每個執行單元112具有其對應的保留站108,用以保持將發送至執行單元112的指令。執行單元112在結果匯流排136上提供其執行結果至ROB 114。當一執行單元112(即一浮點運算單元112)偵測出其已接收到用以執行的一指令具有一或多個非正規運算元並且浮點運算單元112無法在一非正規運算元上執行所需的操作時,浮點運算單元112將輸出一個指定ROB 114中配置給該指令的項目148的標記(tag) 154。其中,標記154係為進入ROB 114的項目148的一個索引。此外,浮點運算單元112也發出一訊號132至ROB 114,以致使ROB 114來設定在與該指令相關的項目148中的旗標138。當一個指令變成微處理器100中最舊的指令且旗標138表示其需要被重新執行時,ROB 114發出一重新執行訊號152至保留站108,以表示此條件,並且提供欲重新執行的指令給保留站108。
多個多工器122提供指令運算元至執行單元112。多工器122接收來自多個來源的運算元,包括:從執行單元112本身所回饋的結果匯流排136;與ROB 114相關的暫時結果暫存器;一結構暫存器集(general pupose registers,GPRs)118;以及一排程器(scheduler)116中的一運算元緩衝器142。排程器116將指令從保留站108發送至執行單元112並選擇指令運算元的來源,以便連同其對應的指令提供給執行單元112。
排程器116包含一標記緩衝器146,其可由浮點運算單元112中接收標記154。排程器116也接收表示浮點運算單元112已偵測出指定有一非正規運算元的一指令的指示132。排程器116也包含可由浮點運算單元112的結果匯流排136上接收非正規運算元的運算元緩衝器142。排程器116也包含一正規器(normalizer)144,其可由運算元緩衝器142中接收非正規運算元並將其轉換為一正規化形式的運算元,同時,將已正規化運算元寫回運算元緩衝器142中。於一實施例中,正規器144係為一移位器(shifter),可於正規化完成之前,將非正規運算元的有效位數左移並且可以利用等同於有效位數被左移的位元位置數目的一個數量來遞減非正規運算元的指數部分。於一實施例中,正規器144於每一時脈週期將有效位數左移一位元、將指數減一並將中間結果寫回運算元緩衝器142中。於一實施例中,由浮點運算單元112所處理的運算元的資料格式係與指令所指定的結構化運算元格式不同。也就是說,浮點運算單元112包含一個轉換器來轉換一結構化資料格式運算元成為非結構化資料格式以由浮點運算單元112加以處理並且包含一個轉換器來轉換前述非結構化資料格式結果回結構化資料格式,以引退至GPR 118。前述非結構化資料格式包含額外的指數位元,以提供非正規數值的正規化。具體來說,當正規器144轉換一非正規運算元成為一正規運算元時,其將非正規運算元從結構化資料格式轉換為非結構化資料格式。
在一實施例中,上述執行單元係設計為不具有用以將非正規數正規化之一電路,其中上述指令排程器係具有用以將上述非正規運算元正規化之一電路。
在一實施例中,複數保留站用以於上述指令等待被上述指令排程器發送至上述執行單元時保持上述指令,其中上述執行單元係設計為不具有用以儲存上述指令運算元之儲存單元。
參見第2圖,顯示依據第1圖之微處理器100的操作流程圖。流程開始於步驟202。
於步驟202,浮點運算單元112偵測出其接收到具有非正規運算元的指令。浮點運算單元112相應地輸出此指令的標記154、發出訊號132以表示此條件至排程器116以及ROB 114,並輸出非正規運算元而非輸出其產生的結果在其結果匯流排136上。接著執行步驟204。
於步驟204,排程器116將非正規運算元從結果匯流排136載入至運算元緩衝器142並且儲存標記154在其標記緩衝器146中並且標記此非正規運算元條件。於一實施例中,排程器116一個時間只可處理一個具有非正規運算元條件的指令。於本實施例中,排程器116可比對新指令的標記154與標記緩衝器146的值,並且若新指令係較舊於排程器116目前正在執行正規化的運算元的指令時,排程器116放棄目前指令、將標記緩衝器146的值更新為新的標記154的值、並且於步驟206開始將新指令的運算元正規化。接著執行步驟206。
於步驟206,排程器116正規化在運算元緩衝器142中的運算元。接著執行步驟208。
於步驟208,前述具有非正規運算元的指令變為微處理器100中最舊的指令並且ROB 114標記旗標138,表示需要一個重新執行。對應地,ROB 114發出重新執行訊號152將指令重新派送其回到保留站來重新執行指令。於一實施例中,ROB 114也同時重新執行所有較舊於此指令的指令;而於另一實施例中,ROB 114則只會重新執行較舊於此指令且相依於此指令的指令。接著執行判斷步驟212。
於判斷步驟212,排程器116偵測出前述指令係將被重新執行,亦即,排程器116偵測到標記緩衝器146中的有效值與保留站108中準備要發出來執行的一指令的標記相符合。若排程器116判斷出運算元緩衝器142中的非正規運算元已完成正規化時,執行步驟216;反之,則執行步驟214。
於步驟214,排程器116維持浮點運算單元112的保留站為關閉,直到排程器116完成非正規運算元的正規化為止。接著執行步驟216。
於步驟216,排程器116將指令從保留站108發送至浮點運算單元112並且控制多工器122提供來自運算元緩衝器142而非運算元的其他正規化來源,例如來自於GPR 118、ROB 114或結果匯流排136的已正規化運算元至浮點運算單元112。浮點運算單元112接著利用已正規化運算元執行指令。注意的是,一個指令可包含一個以上非正規形式的運算元。於一實施例中,當指令係以排程器116所正規化後的運算元重新執行時,若浮點運算單元112偵測出一非正規運算元時(亦即,一第二非正規運算元,因為第一非正規運算元現在已被正規化),其將再一次發出訊號132以及標記154,使得排程器116將正規化第二非正規運算元並且ROB 114將依據第二圖所示的流程圖再一次重新執行指令。流程結束於步驟216。
本案發明人觀察到非正規運算元的發生相對地較少,使得在微處理器100中執行的程式所處理的大量多數的資料集中,假設已正規化運算元所得到的優點超過了與重新執行一包含一非正規運算元的指令所帶來的延遲相關的代價。本發明另外一些優點係來自排程器可於一固定的執行時間基礎上發送指令。也就是說,排程器可以準確地知道一個給定執行單元需要多少時脈來執行一給定類型的指令。本發明其中一優點係降低了排程器的複雜度。本發明另一優點在於排程器可較早於在其等待知道一執行單元已經完成一個可變執行時間指令的執行之前發送指令來提升效能。也就是說,假設指令B具有一相依性在較舊的指令A上。假設排程器發出一指令的時間與指令到達執行單元以執行的時間之間有一些已知的延遲X。藉由一固定的執行時間,因為排程器準確地知道何時執行指令A的執行單元112將提供其結果,排程器可於指令A完成之前的X個時脈發出指令B。這些優點可藉由一相對地較小的成本來實現。
在一實施例中,上述執行單元相應於偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器,而非將上述非正規運算元正規化,上述執行單元執行上述指令於一固定的執行時間中,其使得上述指令排程器於一固定的執行時間基礎上發送指令至上述執行單元。
一種傳統解決方案係將保留站設置在執行單元中,使得其得以在執行單元中內部地重新執行,而非由ROB從外部地重新執行,並設置保留站來保持這些指令的指令運算元。為了保持前述指令運算元,此方案將具有可變的執行時間以及增加的保留站數目缺點。相反地,本發明之解決方案造成一固定的執行時間並允許本發明之保留站變小,因為這些保留站並不需要保持這些運算元;或者,這些運算元係可從各種來源直接(on the fly)應用。另一種傳統解決方案係包含一大的以及耗時間/電力的固定執行時間正規器電路於浮點運算單元(FPU)中,以便保持固定的執行時間統治(regime)。
雖然前述實施例中排程器116係用以轉換非正規運算元至一正規運算元,另一實施例係可考慮相應於浮點運算單元112於偵測到一非正規來源運算元而致使微處理器100產生一內部例外時,利用由微處理器100中的一微碼單元所執行的微碼來轉換非正規運算元至一正規運算元。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。例如,軟體可致能,例如,功能、製造、模型化、模擬、描述及/或測試本發明所述之裝置以及方法。上述可藉由使用一般程式語言(例如:C、C++)、硬體描述語言(HDL)包括Verilog HDL、VHDL等等來實現。此類軟體可以以程式碼的型態置放於任何已知的電腦可用媒體,例如一磁帶、半導體、磁片、軟碟、硬碟或光碟片(例如:CD-ROM、DVD-ROM等等)、一網路、有線連線、無線或其他通訊媒體。其中,當程式碼被機器,如電腦載入且執行時,此機器可成為用以實施本發明之裝置。本發明所述之裝置以及方法可包含於一半導體智財核心,例如一微處理器核心(嵌入於HDL),並轉換成積體電路的硬體產品。此外,本發明實施例所述之裝置以及方法可包含具有硬體以及軟體的組合的實體實施例。因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。特別來說,本發明係可被實作在一微處理器裝置中,而使用於一一般用途處理器中。最後,任何熟悉此項技藝者,可基於本發明所揭露的概念以及特定實施例,在不脫離本發明之精神和範圍內,可做些許更動與潤飾以達到本發明之相同目的。
100...微處理器
102...指令快取記憶體
104...指令轉譯器
106...暫存器別名表
108...保留站
112...執行單元
114...重排序緩衝器
116...排程器
118...結構暫存器集
122...多工器
132...訊號
136...結果匯流排
138...旗標
142...運算元緩衝器
144...正規器
146...標記緩衝器
148...項目
152...訊號
154...標記
202、204、206、208、212、214、216...執行步驟
第1圖顯示一依據本發明實施例之一微處理器之方塊圖。
第2圖顯示第1圖之微處理器的操作流程圖。
100...微處理器
102...指令快取記憶體
104...指令轉譯器
106...暫存器別名表
108...保留站
112...執行單元
114...重排序緩衝器
116...排程器
118...結構暫存器集
122...多工器
132...訊號
136...結果匯流排
138...旗標
142...運算元緩衝器
144...正規器
146...標記緩衝器
148...項目
152...訊號
154...標記

Claims (19)

  1. 一種微處理器,包括:複數執行單元,用以接收複數指令以及上述指令中之指令運算元並用以執行上述指令;以及一指令排程器,用以發送上述指令至上述執行單元並且用以選擇上述指令運算元之來源;其中上述執行單元之其中至少一者係用以:偵測出上述指令之其中一者之上述運算元中之一運算元係為一非正規運算元;相應於偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行;以及相應於偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器;其中上述指令排程器係用以:相應於上述指示,將上述非正規運算元正規化;以及當上述指令係被重新執行時,提供上述已正規化運算元至上述執行單元。
  2. 如申請專利範圍第1項所述之微處理器,其中若於上述指令係重新執行時上述指令排程器尚未完成上述正規化上述非正規運算元,上述指令排程器係用以在上述指令排程器完成上述正規化上述非正規運算元之前,等待發送上述指令至上述執行單元。
  3. 如申請專利範圍第1項所述之微處理器,更包括:一重排序緩衝器,耦接至上述執行單元,上述重排序緩衝器包括複數項目,每一上述項目用以儲存一指令的執 行資訊,每一上述項目具有一旗標,用以表示其儲存之上述指令是否需要被重新執行;其中上述重排序緩衝器係用以相應於上述執行單元所產生關於上述指令需要被重新執行的上述指示,設定上述指令所對應之上述項目的上述旗標。
  4. 如申請專利範圍第3項所述之微處理器,其中上述重排序緩衝器係用以相應於偵測到上述指令的項目中的上述旗標係被設定時,於上述指令變成上述重排序緩衝器中的最舊指令時重新執行上述指令。
  5. 如申請專利範圍第3項所述之微處理器,其中上述執行單元係用以相應於偵測出上述非正規運算元,提供上述重排序緩衝器一標記,上述標記用以識別上述重排序緩衝器中之上述指令的項目,其中上述重排序緩衝器係用以使用上述標記來設定上述旗標,其中上述指令排程器係用以儲存上述標記並接著使用儲存之上述標記來偵測上述指令於何時被重新執行。
  6. 如申請專利範圍第1項所述之微處理器,更包括:一匯流排,耦接至上述執行單元;其中在上述指令之一初始執行期間,該執行單元係用以相應於偵測出上述非正規運算元,在上述匯流排上提供上述非正規運算元至上述指令排程器;其中在上述指令之上述初始執行之後的一執行期間,該執行單元係用以利用上述已正規化運算元,在上述匯流排上提供上述執行單元所產生之上述指令之一結果。
  7. 如申請專利範圍第1項所述之微處理器,其中上述 執行單元係用以:偵測出上述指令之一第二運算元係為一第二非正規運算元;相應於偵測出上述第二非正規運算元,產生一第二指示,表示上述指令需要被重新執行;以及相應於偵測出上述第二非正規運算元,提供上述第二非正規運算元至上述指令排程器;其中上述指令排程器係用以:相應於上述第二指示,將上述第二非正規運算元正規化;以及當上述指令係被重新執行時,提供已正規化之上述第二運算元至上述執行單元。
  8. 如申請專利範圍第1項所述之微處理器,其中若在上述指令之上述重新執行之前,上述指令排程器係儲存有上述指令之上述已正規化運算元且上述執行單元因為一另一指令具有一非正規運算元以及上述另一指令的執行順序係較新於上述指令而產生關於一另一指令需要被重新執行之一指示時,上述指令排程器係用以放棄上述指令之上述已正規化運算元並且開始將上述另一指令之上述非正規運算元正規化。
  9. 一種指令處理方法,用以於一微處理器中處理一指定一非正規運算元之一指令,其中上述微處理器包含一執行單元以及一指令排程器,該方法包括下列步驟:偵測出上述指令之上述運算元係為一非正規運算元,其中上述偵測步驟係由上述執行單元所執行; 相應於上述偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行,其中上述產生上述指示之步驟係由上述執行單元所執行;相應於上述偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器,其中上述提供上述非正規運算元之步驟係由上述執行單元所執行;相應於上述指示,藉由上述指令排程器,對上述非正規運算元執行正規化;於上述提供上述非正規運算元之後,重新執行上述指令;以及相應於上述重新執行上述指令,提供上述已正規化運算元至上述執行單元。
  10. 如申請專利範圍第9項所述之指令處理方法,更包括:相應於上述重新執行上述指令,偵測到上述指令排程器尚未完成上述正規化上述非正規運算元;以及在上述指令排程器完成上述正規化上述非正規運算元之前,等待發送上述指令至上述執行單元。
  11. 如申請專利範圍第9項所述之指令處理方法,其中上述微處理器也包含一重排序緩衝器,上述重排序緩衝器包括複數項目,每一上述項目用以儲存一指令的執行資訊,每一上述項目具有一旗標,用以表示其儲存之上述指令是否需要被重新執行,上述方法更包括:相應於上述產生上述指令需要被重新執行的上述指示,設定上述指令所對應之上述項目的上述旗標。
  12. 如申請專利範圍第11項所述之指令處理方法,更包括:相應於偵測到上述指令的項目中的上述旗標係被設定時,於上述指令變成上述重排序緩衝器中的最舊指令時重新執行上述指令。
  13. 如申請專利範圍第11項所述之指令處理方法,更包括:相應於偵測出上述非正規運算元,提供上述重排序緩衝器一標記,上述標記用以識別上述重排序緩衝器中之上述指令的項目;以及儲存上述標記並接著使用儲存之上述標記來偵測上述指令於何時被重新執行,其中上述儲存以及使用上述標記之步驟係由上述指令排程器所執行。
  14. 如申請專利範圍第9項所述之指令處理方法,其中上述微處理器也包含一匯流排,耦接至上述執行單元,上述方法更包括:在上述指令之一初始執行期間,相應於上述偵測出上述非正規運算元,藉由上述執行單元,執行透過上述匯流排提供上述非正規運算元至上述指令排程器之步驟;以及在上述指令之上述初始執行之後的一執行期間,利用上述已正規化運算元,透過上述匯流排提供上述執行單元所產生之上述指令之一結果,其中上述透過上述匯流排提供上述指令之上述結果之步驟係由上述執行單元所執行。
  15. 如申請專利範圍第9項所述之指令處理方法,更包括: 偵測出上述指令之一第二運算元係為一第二非正規運算元,其中上述偵測出上述指令之上述第二運算元之步驟係由上述執行單元所執行;相應於上述偵測出上述第二非正規運算元,產生一第二指示,表示上述指令需要被重新執行,其中上述產生上述第二指示之步驟係由上述執行單元所執行;相應於上述偵測出上述第二非正規運算元,提供上述第二非正規運算元至上述指令排程器,其中上述提供上述第二非正規運算元之步驟係由上述執行單元所執行;相應於上述第二指示,將上述第二非正規運算元正規化,其中上述將上述第二非正規運算元正規化之步驟係由上述指令排程器所執行;於上述提供上述第二非正規運算元之後,重新執行上述指令;以及相應於上述重新執行上述指令,提供已正規化之上述第二運算元至上述執行單元。
  16. 如申請專利範圍第9項所述之指令處理方法,更包括:偵測到一條件成立,其中:(1)在上述重新執行上述指令之前,上述指令排程器係儲存有上述指令之上述已正規化運算元,(2)上述執行單元因為一另一指令具有一非正規運算元,已產生關於一另一指令需要被重新執行之一指示,以及(3)上述另一指令的執行順序係較新於上述指令;相應於偵測到上述條件成立,放棄上述指令之上述已正規化運算元並且將上述另一指令之上述非正規運算元正 規化,其中上述放棄步驟係由上述指令排程器所執行。
  17. 一種微處理器,包括:複數執行單元,用以接收複數指令以及上述指令中之指令運算元並用以執行上述指令;其中上述執行單元之其中至少一者係用以:偵測出上述指令之其中一者之上述運算元中之一運算元係為一非正規運算元;以及相應於偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行;其中上述微處理器係用以相應於上述指示,調用一微碼單元用以將上述非正規運算元正規化;其中上述微處理器係用以當上述指令係被重新執行時,提供上述已正規化運算元至上述執行單元。
  18. 一種電腦程式產品,包含於至少一非瞬時(non-transitory)的電腦可讀取媒體,可被一電腦裝置所使用,上述電腦程式產品包括:實現於上述至少一非瞬時的電腦可讀取媒體的一非瞬時的電腦可讀取程式碼,其用以定義一微處理器,上述非瞬時的電腦可讀取程式碼包括:一第一程式碼,用以定義複數執行單元,其係用以接收複數指令以及上述指令中之指令運算元並用以執行上述指令;以及一第二程式碼,用以定義一指令排程器,其係用以發送上述指令至上述執行單元並且用以選擇上述指令運算元之來源; 其中上述執行單元之其中至少一者係用以:偵測出上述指令之其中一者之上述運算元中之一運算元係為一非正規運算元;相應於偵測出上述非正規運算元,產生一指示,上述指示表示上述指令需要被重新執行;以及相應於偵測出上述非正規運算元,提供上述非正規運算元至上述指令排程器;其中上述指令排程器係用以:相應於上述指示,將上述非正規運算元正規化;以及當上述指令係被重新執行時,提供上述已正規化運算元至上述執行單元。
  19. 如申請專利範圍第18項所述之電腦程式產品,其中上述至少一非瞬時的電腦可讀取媒體係選自於一磁碟、一磁帶、或其他磁性、光學、或電子儲存媒體以及一網路、有線連線、無線或其他通訊媒體的集合中。
TW099127697A 2009-09-09 2010-08-19 微處理器以及相關指令執行方法 TWI423125B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24069609P 2009-09-09 2009-09-09
US12/793,821 US8495343B2 (en) 2009-09-09 2010-06-04 Apparatus and method for detection and correction of denormal speculative floating point operand

Publications (2)

Publication Number Publication Date
TW201110018A TW201110018A (en) 2011-03-16
TWI423125B true TWI423125B (zh) 2014-01-11

Family

ID=43648579

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099127697A TWI423125B (zh) 2009-09-09 2010-08-19 微處理器以及相關指令執行方法

Country Status (3)

Country Link
US (1) US8495343B2 (zh)
CN (1) CN102023841B (zh)
TW (1) TWI423125B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012138950A2 (en) * 2011-04-07 2012-10-11 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
CN102308274B (zh) * 2011-07-19 2013-04-24 华为技术有限公司 一种访问关机硬盘的方法、网卡和硬盘卡
JP6951622B2 (ja) * 2017-05-18 2021-10-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW412690B (en) * 1998-04-09 2000-11-21 Lockheed Corp Methods and apparatus for performing fast floating point operations
US6487653B1 (en) * 1999-08-25 2002-11-26 Advanced Micro Devices, Inc. Method and apparatus for denormal load handling
EP1390835B1 (en) * 2001-03-08 2005-08-03 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684323B2 (en) * 1998-10-27 2004-01-27 Stmicroelectronics, Inc. Virtual condition codes
US6571265B1 (en) * 1999-10-29 2003-05-27 Intel Corporation Mechanism to detect IEEE underflow exceptions on speculative floating-point operations
US7313790B2 (en) * 2003-06-23 2007-12-25 Intel Corporation Methods and apparatus for preserving precise exceptions in code reordering by using control speculation
US20060179273A1 (en) * 2005-02-09 2006-08-10 Advanced Micro Devices, Inc. Data processor adapted for efficient digital signal processing and method therefor
CN101515310B (zh) * 2009-02-16 2010-10-06 中国科学院计算技术研究所 微处理器浮点单元的随机验证方法及***
US8452831B2 (en) * 2009-03-31 2013-05-28 Oracle America, Inc. Apparatus and method for implementing hardware support for denormalized operands for floating-point divide operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW412690B (en) * 1998-04-09 2000-11-21 Lockheed Corp Methods and apparatus for performing fast floating point operations
US6487653B1 (en) * 1999-08-25 2002-11-26 Advanced Micro Devices, Inc. Method and apparatus for denormal load handling
EP1390835B1 (en) * 2001-03-08 2005-08-03 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management

Also Published As

Publication number Publication date
CN102023841A (zh) 2011-04-20
US20110060943A1 (en) 2011-03-10
CN102023841B (zh) 2013-10-30
US8495343B2 (en) 2013-07-23
TW201110018A (en) 2011-03-16

Similar Documents

Publication Publication Date Title
US8214417B2 (en) Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
US9733858B2 (en) Supporting data compression using match scoring
CN108052348B (zh) 用于处理文本串的指令和逻辑
EP3555742B1 (en) Floating point instruction format with embedded rounding rule
US9411589B2 (en) Branch-free condition evaluation
US7917568B2 (en) X87 fused multiply-add instruction
TW201104569A (en) Microprocessors and methods for executing instruction
US10216516B2 (en) Fused adjacent memory stores
CN107925420B (zh) 用于经优化压缩比的异构压缩架构
EP2109038B1 (en) Apparatus and method for optimizing the performance of X87 floating point addition instructions in a microprocessor
KR102161682B1 (ko) 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법
US20210342150A1 (en) Processor providing intelligent management of values buffered in overlaid architected and non-architected register files
US20140244987A1 (en) Precision Exception Signaling for Multiple Data Architecture
TWI423125B (zh) 微處理器以及相關指令執行方法
US9244653B2 (en) Method and device for handling data values
US9268527B2 (en) Method and device for generating an exception
Kiat et al. A comprehensive analysis on data hazard for RISC32 5-stage pipeline processor
US9959122B2 (en) Single cycle instruction pipeline scheduling
US8849885B2 (en) Saturation detector
US8375078B2 (en) Fast floating point result forwarding using non-architected data format
US10514925B1 (en) Load speculation recovery
US12026515B2 (en) Instruction fusion
US20230359436A1 (en) Floating-point multiplier using zero counters
US20240111535A1 (en) Instruction fusion
US20240220121A1 (en) Methods and apparatus for storing data