TW589576B - System and method to reduce execution of instructions involving unreliable data in a speculative processor - Google Patents

System and method to reduce execution of instructions involving unreliable data in a speculative processor Download PDF

Info

Publication number
TW589576B
TW589576B TW091125042A TW91125042A TW589576B TW 589576 B TW589576 B TW 589576B TW 091125042 A TW091125042 A TW 091125042A TW 91125042 A TW91125042 A TW 91125042A TW 589576 B TW589576 B TW 589576B
Authority
TW
Taiwan
Prior art keywords
processor
instruction
temporary storage
storage area
value
Prior art date
Application number
TW091125042A
Other languages
English (en)
Inventor
Christopher B Wilkerson
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of TW589576B publication Critical patent/TW589576B/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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Communication Control (AREA)

Description

589576 ⑴ 玖、發明說明 ^ ^ κ w 、^A JH.、>
發明領域 本發明與電腦處理器架構有關,尤 期間標示暫存區以區別可用資料與無 、内容、實施方式及圖式簡單說 尤其與用以於推理執行 無用資料之系統及方法 有關。 . 發明背景 ' 就歷史觀之,電腦處理器依指令在處理器中之順序逐一 執行。隨著處理器之演進,向前看、無序處理之排線概念 籲 及推理執行已併入諸多更受歡迎之電腦處理器中,包含個 人電腦中所使用者。這些技術使得電腦處理器得以執行獨 立指令’同時等待其它高潛伏期指令以產生其結果β持續 執行指令與使用執行資源,同時等待高潛伏期指令之能 力’在實現高性能之現今處理器中十分重要。雖然在處理 器設計之進展上已大幅改善典型處理器指令之潛伏期,對 須進入記憶體之指令之潛伏期改善幅度不大。例如在部分 現今處理器中,與處理及,,加入,,時間相較,處理器可能要 _ 花上較其長1000倍的時間執行包含快速儲存緩衝區遺漏之 π载Λ π。此係因快速儲存緩衝區遺漏需要處理器自記憶體 · 檢索所需資料,俾完成執行載入指令。 - 如此一來,當施行上述性能提昇技術時,若發生快速儲 存緩衝區遺漏,則處理器需耗費許多時間在此工作上。部 ,· 分由處理器施行之推理執行所產生的資料並不精確而須將 · /、’肖除视為無用。以此方式為之,處理器即無需執行過多 才曰令。例如使處理器在快速儲存緩衝區遺漏後推理執行指 (2) 令,則廢模式執行可根據分支 钒仃。但在許多秣境 下,該執行會根據在已於快速铸 、 ^ 丄 帝存、·受衝區中遺漏之載入之 目的暫存區中所含無效資料持續為之。
由快速儲存緩衝區遺漏產生之無效資料可經由多層最終 與無效資料相關之指令傳播。如此一纟,無效資料一般會 使這些指令或指令序列之結果無%。爰指令執行因快速儲 存緩衝區遣漏抵損之價值可能對經由推理執行得以達成之 益處造成負面衝擊。與無效資料相關之载入無法提供前揭 盈處並可能導致轉移側視(look aside)緩衝器及/或快速儲存 緩衝區污染。此外,與無效資料相關之分支常被錯誤解讀, 避開由分支預報器指示之分支徑之廢模式執行及/或使結 果無用。 圖式簡述 參閱下列細部描述及圖式,即可明瞭本發明之附加優 點,其中: 圖1A闡釋此處所述系統及方法之施行硬體環境; 圖1B闡釋依此處所述系統及方法之處理器(具SVal標籤)_ 具體實施例之部分内部成分; 圖2A闡釋依此處所述系統及方法並與英特爾(Intel)〗A-32 . 架構對映之處理器(具sVai標籤)之具體實施例; 圖2B闡釋依此處所述系統及方法並與英特爾(Intel)IA-64 架構對映之處理器(具SVal標錢)之具體實施例; ' 圖3闡釋當依此處所述方去之具體貫施例處理指定及其 運算域時,所採取動作之概略流程; (3) 圖4闡釋當依此處所述方 中處理指令時,所採取之動 圖5闡釋依此處所述系统 機0 法之具體實施例於推理處理器 作流程; 及方法之一具體實施例之狀態 σ 細鄯描述 ^供用以區別在電腦處理器之推理執行期間產生之可 卜可非值與操用、不可靠值之系統及方法。此類推理執 行包含例如排繞、而a ! f、、果向則看、無序處理及廢模式執行。在一 。缸貝她例中,處理器得以選擇性撤銷包含快,速儲存緩衝 區遺漏㈣資料之指令與分支1果處理器之電力損耗降 -處理益執仃資源得以保留;及處理器之產率增加。在 八缸€她例中,以處理器將以單一位元型式存在之標籤 加入各資料儲存區巾,包含暫存區、欽述區、旗幟區等, ^ 乂成本即約方式提昇性能並降低電力損耗。 /在部分處理器中,無序(〇〇〇)之執行係藉*在一再定序 緩衝器(R0B)中緩衝推理指+,直到該指令成為非推理為 止亦即,不論來源或目的地,直到可獲取或進入指令中 所含貝料為止。當指令成為非推理時,即可執行與撤回之。 由於萬-指令成為非推理時僅可將其撤回—次,爰在最权 執行入撤回削,可能已在R0B中緩衝數百個時鐘週期。由 於各新指令在執行前均須配置一麵實體,爰可能需要數 百至數仟個RQB實ft,俾使處理器持續進行,同時等待+ 成高潛伏期指令。 ’ 70 廢模式執行(SME)係一推理執行型式,使得處理器無需 589576 (4) 發:明輕觀、 數百個用以致使前進之ROB實體,即可容忍高潛伏期指令 之潛伏期。與現今無序(000)執行處理器類似,SME藉由 持續獨立指令之執行,無需等待高潛伏期指令之正確結 果,即可處理高潛伏期指令。與000執行相左,SME並未 緩衝推理指令。取而代之者,SME執行推理指令並僅保存 該結果直到暫存區為另一指令覆寫為止。由於SME並無為 確保得以撤回推理執行之簿記,故須摒棄所有推理執行指 令並以處理器再執行之。但由於許多高潛伏期指令(例如 載入及分支)具諸如快速緩衝儲存區配置及分支預報器更 新等副作用,故藉由再執行常可顯著降低指令之潛伏期。 综觀此處所述,因快速緩衝儲存區遺漏產生之無效資 料,以及由與無效資料相關之指令與資料產生之所有資料 值均稱之為廢值(SVal)。其它非自SVal推估而得之資料值 則稱之為可靠值(RVal)。概言之,與SVal相關之指令執行 係屬無效並可相對產生。研究顯示在廢模式期間執行之所 有指令的40%與SVal相關並可完全略之。此處所述方法包 含處理SVal相關指令集相異之RVal相關指令。在一具體實 施例中,藉由避免SVal載入進入快速緩衝儲存區並使分支 預報器根據SVal覆寫於分支解析,即可提供顯著性能增 益。 圖1A闡釋此處所述系統及方法之施行硬體環境。在一具 體實施例中,可於計算裝置100上施行此處所述方法。計 算裝置100可為個人電腦、伺服器、個人數位助理(PDA)、 桌上型電腦、設頂(set-top)盒、遊戲操縱台、手機工作站 589576
(5) 或其它計算裝置。計算裝置1⑻包含處理器11〇、記憶體ιΐ2、 儲存裝置114及其它裝置,概均耦合至匯流排118。為簡明 义故,此處僅繪出一匯流排,然於計算裝置1〇〇可能具多 個匯流排,包含例如資料匯流排、指令匯流排、週邊匯流 排(諸如週邊部件連接(PCI)及加速繪圖埠(AGp)等)。 概言之,當處理器執行一軟體程式時,可自儲存裝置i i 4 檢索。當處理器11 0執行一特殊軟體程式且處理器不易自 處理器内之快速緩衝儲存區記憶體取得資料及/或指令 時,處理器可凍結及等待自晶片外(offchip)來源(諸如儲存 裝置及主圮憶體)載入之指令及/或資料。就現今處理器之 速度觀點而言,若處理器等待自儲存裝置或記憶體檢索指 令及/或資料,將極耗時。此耗時係因匯流排潛伏期及自 相當慢速裝置讀取資訊之固有潛伏期。(匯流排速度、記 憶體速度及儲存裝置速度均遠較處理器速度低。)此類潛 伏期可為數仟時鐘週期。 眾所週知各種技術,包含向前看、排線、無序處理、廢 模式執行及推理執行’均可使處理器持續進行同時等待自 記憶體或儲存裝置恢復之資料。在此將上述所有技術統稱 為推理處理。當處理器110推理執行指令同時等待自記憶 體112及儲存裝置Π4載入或檢索資料時,根據不可靠<svai 對各資料施行處理、分支取得及其它勃[ ^ 〃 b執仃。為根據或包含 SVal以減少指令之非必要執行,依此虛祕、办 &恩所迷方法將SVal加 至在處理器(諸如處理器110)内之各暫垚^ 旗幟區、敘述 區及其它資料位置。 (6) (6)589576 气 v «. 身 vs,、 ,, < f ^ >. , <>v. 發曰月說勞續頁5 扣在具把只犯例中,可於處理器中各資料儲存位置擴增 單位元型式之sVal標籤。在此具體實施例中,各暫存區、 * ^區旗幟區等均具添加之附加位元,稱之為SVal標籤、 —兀右將SVal標籤位元設定為一(1),則例如相關資料係、 、 或SVal若將該位元設足為零(0),則標記/相關資 、斗係可非值或RVal。在另一具體實施例中可知,可固定 知:Val‘籤位兀值交替設定為相反值,使得位元值一⑴係 9可:值,位兀值零(〇)係指廢值。在一具體實施例中, 敘述區及旗幟區亦可具類似之相關SVal標籤。在一具體實钃 她例中,當具一廢值運算域之指令寫入敘述區或旗幟區 時’則將旗幟區或敘述區相關之Sval標籤設定為一⑴。當 2用具SVal標蕺之旗幟區或敘述區解析分支時,分支之計 ^〜果即可略之,並可由分支預測單元決定分支方向。此 夕卜,<、 亦可以單一位元型式之SVal標籤(稱之為SVai標籤位元) 擴〜&令。在此具體實施例中,若將SVal標籤位元設定為 一(1) ’則相關指令產生一廢值。若將該位元設定為零(〇), 則相關指令產生一可靠值。在其它具體實施例中,各暫存 _ 區、敎述區、旗幟區、指令等相關SVa丨標籤大小均為二 更高位元。 / · 圖1B鬧釋依此處所述系統及方法之處理器(具SVal標籤)· /、恤@她例之部分内部組成。在一具體實施例中,處理器 U〇可包含各暫存區130,其均具暫存區資料132及暫存區 SVal標籤134。不論何時根據SVal之指令產生寫入暫存區之 '、 句將來存區之SVal標叙設定為例如一(1)。在各具體 -10- 589576 (7) 實施例中,SVal標籤可為單一位元、兩位元或更大實體。 將瞭解配置予SVal之位元數愈小’將造成處理器愈有效 率,因為處理器所需用以支援SVal標籤之死區(die)空間較 少。處理器11〇亦可包含旗織區140’其中複數個旗織區資 料141均為與旗幟區資料141中各旗幟區對應之複數個旗幟 區SVal標籤142擴增。類似地,敘述區144包含敘述區資料145 及對應之SVal標籤146。此外,處理器H0包含已知部件, 諸如敘述區預測單元148、分支敘述區單元(BPU)150、轉移 側看緩衝器(TLB) 152、執行單元1 54、晶片上快速緩衝儲存 區156,及再排序緩衝器158。執行單元152可為加法器、浮 點乘法累計器及其它單獨或多重出現之執行單元。處理器 110可包含其它已知部件及所示部件之多個實例,為避免 妨礙此處之本發明之係不描述,爰未顯示。例如該處理器 可具兩或多個晶片上記憶體快速緩衝儲存區。 為於處理器内具添加SVal標蕺之利,可寫入處理器之内 部執行引擎160,俾施行此處所述方法。該執行引擎可為 嵌於處理器中具硬接線邏輯之硬體部件,或程式化電腦部 件及慣用硬體部件之任意組合。在另一具體實施例中,執 仃引擎可儲存有以機械可讀取型式存在機械可讀取媒介 上’並接著被轉移至處理器110之指令或微碼。機械可讀 取媒介包含唯讀記憶體(ROM)裝置、隨機存取記憶體(RAM) 裝置、可消除程式化唯讀記憶體(EPROM)裝置、電子式可 消除私式化唯讀記憶體(EEPROM)裝置、磁碟儲存媒介如硬 碟驅動器等、光儲存媒介如光碟唯讀記憶體(CD-ROM)、快 589576 (8) 發明說萌績頁 閃記憶體裝置等,均可經由電氣、光學、聲波或其它型式 傳播信號(例如載波、紅外線信號、數位信號等)區域耦合 或遠端存取及取得,以及適於儲存指令、微碼等之任何其 Έ型式之機械可讀取媒介。 圖2A闡釋依此處所述系統及方法並與英特爾(Intel)IA-32 架構對映之處理器(具SVal標籤)之具體實施例。在一具體 實施例中,SVal標籤可於與已知為IA-32之32位元Intel架構 相符之處理器内擴增暫存區、旗幟區及其它相關資料儲存 區。與IA-32架構有關之進一步資訊見於IA-32 Intel Architecture Software Developer’s Manual, Rev.2 (2001 ·2) 〇 在一 具體實施例中,處理器200可包含為對應之通用暫存區SVal 標籤212擴增之通用暫存區210。此外,可由數據段暫存區 SVal標籤216擴增數據段暫存區214。此外,可以E旗幟區SVal 標籤222擴增E旗幟區220。如處理器200中所示,與各暫存 區及各旗幟區對應之各SVal標籤可為單一位元。在其它具 體實施例中,SVal標籤可為兩位元或更高位元。 圖2B闡釋依此處所述系統及方法並與Intel IA-64架構對 映之處理器(具SVal標籤)之具體實施例。在一具體實施例 中,可將SVal標籤加入各相關暫存區中,包含在與已知為 IA-64之64位元Intel架構相符之處理器中之浮點、分支、資 料及通用暫存區、敘述區、旗幟區及其它内部資料儲存處。 與IA-64架構有關之進一步資訊見於Intel IA-64 Architecture Software Developer’s Manual,Rev. 1 · 1 (2000.7),自加州(California) 聖克拉拉(Santa Clara)Intel公司可得之。在此具體實施例中, 589576 (9) 癸明裁與續頁 可以一般暫存區SVal標籤264擴增一般暫存區262 ;可以浮 點SVal標籤268擴增浮點暫存區266 ;可以敘述區SVal標籤272 擴增敘述區270 ;可以分支暫存區SVal標籤276擴增分支暫 存區274 ;及可以應用暫存區SVal標蕺282擴增應用暫存區 280。如處理器260中所示,各SVal標籤均為一位元。在其 它具體實施例中,SVal標籤大小可為兩位元或更高位元。 圖3闡釋當依此處所述方法之具體實施例處理指定及其 運算域時,所採取動作之概略流程。此作用流程可以處理 器實行之,更特別言之,以處理器内之執行引擎為之。如 方塊3 10所示,可獲得目前指令。在一具體實施例中,當 將一新指令送入排線中時,指令之SVal標籤初始設定為零 (〇)。接著對目前的SVal檢視指令之運算域,示如方塊320。 當指令之運算域係屬已知時,依其運算域之SVal標籤值設 定指令之SVal標籤。若指令之運算域之SVal標籤均非設定 為一(1),爰指令之SVal標籤維持於其初始值零(0)。若目前 指令中至少一運算域係一 SVal,則將SVal標籤傳送至目的 地,示如方塊324,俾將目的地之SVal標籤設定為一(1)。 若至少一指令運算域之SVal標籤係一 SVal,亦即設定為一 (1),則與指令有關之SVal標籤設定為一(1),示如方塊330。 若指令之至少一運算域已將一 SVal標籤設定為一,則不執 行指令,示如方塊340。可做一檢查以決定是否略去該指 令,示如方塊350。若尚未略去該指令,則執行指令,示 如方塊360。若已略去該指令之執行,則獲取次一指令, 示如方塊370,並於方塊320繼續動作流程。類似地,在執 589576 (ίο) ¥面5爾買: 行目前指令後,示如方塊360,則獲 又取次一指令,示如方 瑰370,並於方塊32〇繼續動作流程。 、 用執行指令時,將指 令之SVal標籤值複製至目的暫存區。 當指令係一載入且其錯過快速緩 可埼存區時,則將其目 的%存區SVal標籤設定為一(丨”當指 ^ . V ;田知令係一載入且其達到 快速儲存緩衝區但其來源運算域之_ < SVal標籤設定為一 (1)時,則其目的暫存區之SVal標籤設 ^ ^ . 〜又夂為一(1)。具即時可 得運算域之指令之sval標籤設定為零 I> q 7 (U)。在一具體實施例 中,若於推理執行期間利用儲存緩衝區,則可於儲存緩衝 擴增-位元型式之sval標籤。當將—儲存指令窝人储存緩 衝區時,則指令之sval標籤傳送至該儲存緩衝區。當自一 儲存緩衝區讀取載人指令時,複製在儲存緩衝區實體中所 見SVal標籤及自儲存緩衝區檢索之資科。在—具體實施例 同心將儲存指令寫入儲存緩衝區之前,將之分為兩類。 第類儲存指令包含位址產生暫存區運算域係廢值之儲存 才旨〇 々々 , 弟一儲存4曰令包含標記為廢值(位址產生暫存區 運α域非為廢值者)之儲存指令。對第一類而言,由於目 的位址未知,故不傳送SVal標籤β對第二類而言,由於目 的位址已知,故將SVal標籤傳送至儲存緩衝區。載入處理 正常。 圖4闡釋當依此處所述方法之具體實施例於推理處理器 中處理指令時,所採取之動作流程。指令之SVal標籤影響 和 > 在排線中之處理方式’並由推理處理器中之排序器為 之。指令之處理係視sVal標籤是否設定為零(0)或其它值而 -14- 589576 (η) 異。在一具體實施例中,硬體設計師可選擇傳送SVal標籤 與否。在另一具體實施例中,並未傳送SVal標籤,除非其 與不可靠之傳送值極度類似。在一具體實施例中,在獲取 指令後,示如方塊410,做一檢查以決定是否將指令之SVal 標籤設定為一(1)示如方塊412。若指令之SVal標籤並非設 定為一(1),亦即為零(〇)則正常處理該指令,示如方塊414。 否則即根據該類指令持續進行動作流程,示如方塊420。 若該指令係一載入指令,示如方塊430,則撤銷該指令, 並將SVal標籤傳送至目的地,示如方塊432。 若指令係一儲存值,示如方塊440,則檢查目的地位址 以決定是否其為SVal,示如方塊442。若目的地位址係一 SVal,則撤銷該指令(亦即該儲存值)。若該儲存值(亦即資 料)係自SVal推估而得,則將SVal標籤傳送至目的地,示如 方塊446。若該位址及該值均非SVal,則正常執行該儲存值。 在一具體實施例中,若該指令係一演算操作,示如方塊 480,則將其撤銷,並且不將SVal標籤傳送至目的地,示如 方塊482。 若指令係一直接分支,示如方塊460,若該直接分支相 關之旗幟區或暫存區係一 SVal時,側採用該分支標的,但 分支方向係由分支預報器推估而得,示如方塊462。亦即 於分支相關之旗幟區或敘述區中寫入分支預報器推估值。 類似地,於代表分支相關之旗幟區或敘述區之補數之旗幟 區或敘述區中寫入分支預報器推估值之補數。例如:所取 得之”分支若不等"(BNE)敘述區會造成不等旗幟區或情況 •15- (12)589576 之V»又足為真’並將否寫入相等旗幟區或敘述區。當旗職區 或敘述區值係自分支預報器推估而得時,則清除在旗幟區 或敘述區上之SVal標籤,並使未來分支聽從分支預報器。 若指令係一間接分支,示如方塊450,則可自分支預測單 元取得分支標的,示如方塊452。
若指令具附加條件,示如方塊470,則藉由聽從分支預 測單元而解析指令相關之敘述區與旗幟區。但當敘述區或 旗幟區係屬未知時,則具附加條件移動目的地,並將敘述 區指令標記為SVal。亦即做一檢查以決定是否適當之敘述 區及旗幟區係屬已知,示如方塊472。若屬未知,則將目 的地SVal設定為一(1),示如方塊474。若敘述區係屬已知’ 則該等值仍順從敘述區預報器及/或分支預報器,示如方 塊476 »以此方式為之,即可排除根據不一定可靠敘述區 所得之路徑,並可採用根據敘述區預報器及/或分支預報 在一具體實施例中’可以與來 述區及附加條件,如此一來,若 器所得之更可靠路徑選擇
源運算域類似方式處理敕 , >定為一(1)之SVal標籤,則將該SVal 敘述區或附加條件具〆认 標籤傳送至目的地。 冰泮僅採用標記資料及指令如SVa 在一具體實施例中’典 #記。在一具體實施例中,可加入 及RVal,並可採用附加和 、 扣砍(〇)值之SVal為RVal ;具一(0值之 預測值或PVal,使得真令 、 力⑵值之SVal標籤為PVal。以此万 SVal標蕺為SVal ;及異雨 L 淡值之正確資料值之值敘述區或減 式為之,可利用趨近在碓 , ,IL體實施例中’ P V a 1標籤化指令之 損代表取代廢值。在此具膝 -16- 589576 (13) 發明說魚讀頁:: 執行可以預測值芫成之。以此方式為之,處理器可明智選 擇如何根據已知及/或適用之内部演算法、邏輯、計劃及 其它技術持續進行。 圖5闡釋依此處所述系統及方法之一具體實施例之狀態 機。在一具體貫施例中,處理器可依狀態機施行上述指令 標籤化。在分支預報器5 10選擇對次一執行之指令5丨丨後, 即將指令解碼,如方塊5 12所示。暫存區5 16包含指令所需 資料及接下來將讀取之相關SVal標籤518,如方塊514所示。 若暫存區具指不在該相關暫存區中之資料係一廢值或不可 雜值之SVal“籤,則SVal標籤將經由所示路徑η]傳播至目 前指令之任何目的地之SVal標籤。亦可經由上述敘述區、 旗蛾區等傳播SVal標蕺。此外,㈣讀蕺傳播至指令本 身0 若至少一對目前指令之運 連异域係一由SVal標籤指示之 SVal,如所示經由路栌 p 524,則依SVal執μ㈣㈣#目 刖扎令,如万塊530所示。介而4匕人,上 ^ * SVal^ ^ ^ M曰7《執行最常被撤銷。 右由SV·以示之運算域 繼續進行指令之% P 4 4域係RVa卜則 執仃 如万塊532所示。若在六φ 指令執行期間,須取尸 右在万塊532中4 ,、取件一分支且該分 得,則分支無法預料h 夂係自SVal推估而 行一指令,則可將浐人、 态又通‘。一執 曰々《結果經暫存區寫 區516,如方塊54〇所示。 勹口早兀寫回暫存 在前述說明書中, , 本發明。ι然在不蜂離閱本發明之特定具體實施例描述 離本發明於隨附之申請專利範圍所界 589576
(14) 定之更廣義精神及範疇下,可做各式改良及變化。爰可將 本說明書及其圖式視為闡釋之用,非以之限制本發明。 圖式代表符號說明 元件編號 中文 100 計算裝置 110 處理器 112 1己憶體 114 儲存裝置 120 其它裝置 130 暫存區 132 暫存區資料 134 暫存區廢值標籤 140 旗幟區 141 旗幟區資料 142 旗幟區廢值標籤 144 敘述部 145 資料 146 廢值標籤 148 敘述部預報器 150 分支敘述區單元 152 轉移側看緩衝器 154 執行單元 156 快速緩衝儲存區 158 再排序緩衝器
-18- (15) 聲明读满續 執行引擎 處理器 通用暫存區 廢值標籤 數據段暫存區 廢值標籤 E旗幟區 廢值標籤 一般暫存區 一般廢值標籤 洋點暫存區 浮點廢值標籤 敘述部 敘述部廢值標籤 分支暫存區 分支暫存區廢值標籤 應用暫存區 廢值標籤 -19 -

Claims (1)

  1. 589576 第091125042號專利申請案 中文申請專利範圍替換本(93年3月) 拾、申請專利範圍 1. 一種在推理處理器中減少含有不可靠資料指令之執行之 方法,包括: 辨識在處理器推理執行期間產生之廢值;及 設定至少一與處理器之至少一資料區有關之標籤,以 指示該資料區保留一廢值。 2. 如申請專利範圍第1項之方法,其中設定包括當一以一暫 存區為一目的地之指令造成一快速緩衝儲存區遺漏時, 即設定該暫存區之該標籤。 3. 如申請專利範圍第1項之方法,更包括: 不執行在複數個指令中具至少一具一相關標籤(指示 該運算域係一廢值)之運算域之該等指令。 4. 如申請專利範圍第1項之方法,更包括: 不執行具有一如至少一運算域一般之暫存區之運算指 令,該暫存區具有指示該暫存區包含係一廢值之資料之 相關標籤;及 不執行一包含一自該暫存區推估之值之儲存指令該暫 存區具一指示該暫存區包含係一廢值之資料之相關標 籤。 5. 如申請專利範圍第1項之方法,更包括: 利用一分支預報器覆寫於由分支指令產生之計算分支 結果該分支指令係根據具一指示資料係一廢值之標籤之 資料。 589576 m. ί 丨Hi 申請專利範園續買 6. 7. 8. 9. 10. 11. 如申請專利範圍第1項之方法,更包括·· 於一排線中標示各指令,並 户人a人、 ,、甲s排線具一指示是否該 心々包含一廢值之標蕺。 如申請專利範圍第1項之方法,更包括: 若一位址產生暫存區並夫 一廢信孖1"未“737该位址產生暫存區保有 ,划經一儲存緩衝區傳播該標籤。 一種推理處理器,包括: 複數個暫存區,其具複數個 否儲存於該暫存區中之該資料保有—廢 複數個棋職區,其具複數個對應旗幟區標籤以指 否由孩旗幟區反映之該資料係根據—廢值為之;及 複數個敘述區,其具複數個對應敘述區標籤以指 否由该敘述區反映之該資料係根據一廢值為之。 =專利範圍第8項之處理器,其具一包含複數個指令 足扣令集,各指令均為一指令標籤所擴增以指示 指令包含—廢值。 孩 如申請專利範圍第9項之處理器,其中該等暫存區標鐵、 旗幟區標籤、敘述區標籤及指令標籤大小均為一位元。 如申請專利範圍第9項之處理器,其中該等暫存區標籤、 旗幟區標籤、敘述區標籤及指令標籤大小均為至少兩位 元。 “ r 是 一種推理處理器,包括·· 至少兩運算單元; 一轉移側視緩衝器; 12. 589576
    Π 申請專刺範圍續頁 議__霞毅_麵^^ /分支敘述區單元;及 /執行引擎,其具複數個指令,當執行該等指令時, 會導致該處理器施行動作包含: 辨識在一處理器之推理執行期間產生之廢值,及 設定至少一標籤,其與該處理器之至少一資料區有 關以指示該資料區保有一廢值。 .如申請專利範圍第12項之處理器,其中該設定包括當一 以一暫存區為一目的地之指令造成一快速緩衝餘存區遣 漏時,即設定該暫存區之該標籤。 Μ·如申請專利範圍第12項之處理器,其中該執行?丨擎具進 /步指令,其執行時導致該處理器施行進一步動作包括: 不執行在複數個指令中具至少一具一相關標藏(指示 該運算域係一廢值)之運算域之該等指令。 15•如申請專利範圍第12項之處理器,其中該執行引擎具 〆步指令,其執行時導致該處理器施行進—步動作包招 不執行具有一如至少一運算域一般之暫存區之運匕 令該暫存區具有指示該暫存區包含係-廢值之資料之 關標籤;及 、针《 ”“丁 一包含一自該暫存區推估之值之儲存指切 存區具一指示該暫存區包含係一 籤。 廢值之貝枓 < 相關 16.如申請專利範圍第12項之處理器1中該執行引擎且進 ,步指令’其執行時導致該處理器施行進—步動作包括. 利用一分支預報器覆寫於由分支指令產生之計算ι分支 589576 ‘ / 申請專利範圍績頁 結果,該分支指令根據具一指示資料係一廢值之標籤之 資料。 17. 如申請專利範圍第12項之處理器,其中該執行引擎具進 一步指令,其執行時導致該處理器施行進一步動作包括: 於一排線中標示各指令,其中該排線具一指示是否該 指令包含一廢值之標籤。 18. 如申請專利範圍第12項之處理器,其中該執行引擎具進 一步指令,其執行時導致該處理器施行進一步動作包括: 若一位址產生暫存區並未指示該位址產生暫存區保有 一廢值,則經一儲存緩衝區傳播該標籤。 19. 一種在推理處理器中減少含有不可靠資料指令之執行之 系統,包括: 一記憶體、一儲存裝置,及一處理器,均耦合至一匯 流排之; 該處理器包含一執行引擎,其所具指令為該處理器執 行時,導致該處理器施行動作包含: 辨識在一處理器之推理執行期間產生之廢值,及 設定至少一標籤,其與該處理器之至少一資料區有 關,俾指示該資料區保有一廢值。 20. 如申請專利範圍第19項之系統,其中該設定包括當一以 一暫存區為一目的地之指令造成一快速緩衝儲存區遺漏 時,即設定該暫存區之該標籤。 21.如申請專利範圍第19項之系統,其中該執行引擎具進一 步指令,其執行時導致該處理器施行進一步動作包括: 589576
    申請專利範圍績頁 不執行在複數個指令中,具至少一具一相關標籤之運 算域之該等指令,該相關標籤指示該運算域係一廢值。 22. 如申請專利範圍第19項之系統,其中該執行引擎具進一 步指令,其執行時導致該處理器施行進一步動作包括: 不執行具有一如至少一運算域一般之暫存區之運算指 令該暫存區具有指示該暫存區包含係一廢值之資料之相 關標戴,及 不執行一包含一自該暫存區推估之值之儲存指令,該 暫存區具一指示該暫存區包含係一廢值之資料之相關標 籤。 23. 如申請專利範圍第19項之系統,其中該執行引擎具進一 步指令,其執行時導致該處理器施行進一步動作包括: 利用一分支預報器覆寫於由分支指令產生之計算分支 結果,該分支指令根據具一指示資料係一廢值之標籤之 資料。 24. 如申請專利範圍第19項之系統,其中該執行引擎具進一 步指令,其執行時導致該處理器施行進一步動作包括: 於一排線中標示各指令,其中該排線具一指示是否該 指令包含一廢值之標籤。 25. 如申請專利範圍第19項之系統,其中該執行引擎具進一 步指令,其執行時導致該處理器施行進一步動作包括: 若一位址產生暫存區並未指示該位址產生暫存區保有 一廢值,則經一儲存緩衝區傳播該標籤。 26. —種機械可讀取媒介,其内存有指令,當以一處理器執 589576 '-: 申請專利範圍績頁 ^ - , L_-— 行該指令時,導致該處理器施行動作包含: 辨識在一處理器之推理執行期間產生之廢值,及 設定至少一標籤,其與該處理器之至少一資料區有 關,俾指示該資料區保有一廢值。 27. 如申請專利範圍第26項之機械可讀取媒介,其中該設定 包括當一以一暫存區為一目的地之指令造成一快速緩衝 儲存區遺漏時,即設定該暫存區之該標籤。 28. 如申請專利範圍第26項之機械可讀取媒介,其具進一步 指令,執行時導致該處理器施行進一步動作包括: 不執行在複數個指令中,具至少一具一相關標籤之運 算域之該等指令,該相關標籤指示該運算域係一廢值。 29. 如申請專利範圍第26項之機械可讀取媒介,其具進一步 指令,執行時導致該處理器施行進一步動作包括: 不執行具有一如至少一運算域一般之暫存區之運算指 令該暫存區具有指示該暫存區包含係一廢值之資料之相 關標籤;及 不執行一包含一自該暫存區推估之值之儲存指令,該 暫存區具一指示該暫存區包含係一廢值之資料之相關標 籤。 30. 如申請專利範圍第26項之機械可讀取媒介,其具進一步 指令,執行時導致該處理器施行進一步動作包括: 利用一分支預報器覆寫於由分支指令產生之計算分支 結果,該分支指令係根據具一指示資料係一廢值之標籤 之資料。
TW091125042A 2001-11-05 2002-10-25 System and method to reduce execution of instructions involving unreliable data in a speculative processor TW589576B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/992,881 US7114059B2 (en) 2001-11-05 2001-11-05 System and method to bypass execution of instructions involving unreliable data during speculative execution

Publications (1)

Publication Number Publication Date
TW589576B true TW589576B (en) 2004-06-01

Family

ID=25538847

Family Applications (1)

Application Number Title Priority Date Filing Date
TW091125042A TW589576B (en) 2001-11-05 2002-10-25 System and method to reduce execution of instructions involving unreliable data in a speculative processor

Country Status (8)

Country Link
US (1) US7114059B2 (zh)
EP (1) EP1442364B1 (zh)
JP (1) JP3810407B2 (zh)
CN (1) CN100541423C (zh)
AT (1) ATE396450T1 (zh)
DE (1) DE60226763D1 (zh)
TW (1) TW589576B (zh)
WO (1) WO2003040916A1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0215029D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
AU2003301128A1 (en) * 2002-12-24 2004-07-22 Sun Microsystems, Inc. Method and apparatus for generating prefetches
US7496732B2 (en) * 2003-12-17 2009-02-24 Intel Corporation Method and apparatus for results speculation under run-ahead execution
US20050223201A1 (en) * 2004-03-30 2005-10-06 Marc Tremblay Facilitating rapid progress while speculatively executing code in scout mode
US7490229B2 (en) 2004-03-30 2009-02-10 Sun Microsystems, Inc. Storing results of resolvable branches during speculative execution to predict branches during non-speculative execution
US7257700B2 (en) * 2004-06-03 2007-08-14 Sun Microsystems, Inc. Avoiding register RAW hazards when returning from speculative execution
US20060090061A1 (en) * 2004-09-30 2006-04-27 Haitham Akkary Continual flow processor pipeline
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
JP2009230610A (ja) * 2008-03-25 2009-10-08 Kawai Musical Instr Mfg Co Ltd 命令処理装置及び命令処理方法。
US7664942B1 (en) * 2008-08-25 2010-02-16 Sun Microsystems, Inc. Recovering a subordinate strand from a branch misprediction using state information from a primary strand
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8433885B2 (en) * 2009-09-09 2013-04-30 Board Of Regents Of The University Of Texas System Method, system and computer-accessible medium for providing a distributed predicate prediction
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
WO2011159309A1 (en) * 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9223710B2 (en) 2013-03-16 2015-12-29 Intel Corporation Read-write partitioning of cache memory
US10061583B2 (en) * 2014-12-24 2018-08-28 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US9916164B2 (en) * 2015-06-11 2018-03-13 Intel Corporation Methods and apparatus to optimize instructions for execution by a processor
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10261901B2 (en) 2015-09-25 2019-04-16 Intel Corporation Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US10628157B2 (en) * 2017-04-21 2020-04-21 Arm Limited Early predicate look-up
US10929141B1 (en) 2018-03-06 2021-02-23 Advanced Micro Devices, Inc. Selective use of taint protection during speculative execution
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
GB2580426B (en) * 2019-01-11 2021-06-30 Advanced Risc Mach Ltd Controlling use of data determined by a resolve-pending speculative operation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02306341A (ja) 1989-02-03 1990-12-19 Nec Corp マイクロプロセッサ
US5487156A (en) 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5465342A (en) 1992-12-22 1995-11-07 International Business Machines Corporation Dynamically adaptive set associativity for cache memories
US5428807A (en) 1993-06-17 1995-06-27 Digital Equipment Corporation Method and apparatus for propagating exception conditions of a computer system
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
US5748936A (en) 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5966544A (en) 1996-11-13 1999-10-12 Intel Corporation Data speculatable processor having reply architecture
US5987595A (en) * 1997-11-25 1999-11-16 Intel Corporation Method and apparatus for predicting when load instructions can be executed out-of order
US6519694B2 (en) 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US6490653B1 (en) 1999-06-03 2002-12-03 International Business Machines Corporation Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system

Also Published As

Publication number Publication date
JP3810407B2 (ja) 2006-08-16
ATE396450T1 (de) 2008-06-15
CN100541423C (zh) 2009-09-16
DE60226763D1 (de) 2008-07-03
US7114059B2 (en) 2006-09-26
JP2005508546A (ja) 2005-03-31
EP1442364B1 (en) 2008-05-21
EP1442364A1 (en) 2004-08-04
US20030088759A1 (en) 2003-05-08
CN1582429A (zh) 2005-02-16
WO2003040916A1 (en) 2003-05-15

Similar Documents

Publication Publication Date Title
TW589576B (en) System and method to reduce execution of instructions involving unreliable data in a speculative processor
US9535695B2 (en) Completing load and store instructions in a weakly-ordered memory model
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
KR100335745B1 (ko) 고성능의 추론적인 오정렬 로드 연산
US20120089819A1 (en) Issuing instructions with unresolved data dependencies
US20060271769A1 (en) Selectively deferring instructions issued in program order utilizing a checkpoint and instruction deferral scheme
JP2003523573A (ja) プロセッサにおける書き込みトラヒックを減少するシステム及び方法
US20240126552A1 (en) Processor-guided execution of offloaded instructions using fixed function operations
US10942743B2 (en) Splitting load hit store table for out-of-order processor
US6035394A (en) System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel
US9223577B2 (en) Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
CN104216681A (zh) 一种cpu指令处理方法和处理器
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
US6948053B2 (en) Efficiently calculating a branch target address
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
CN109683959B (zh) 处理器的指令执行方法及其处理器
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
US20200019405A1 (en) Multiple Level History Buffer for Transaction Memory Support
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
JP2006139564A (ja) プロセッサのレジスタ制御方法およびプロセッサ

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees