TWI317906B - System and method wherein conditional instructions unconditionally provide output - Google Patents

System and method wherein conditional instructions unconditionally provide output Download PDF

Info

Publication number
TWI317906B
TWI317906B TW095113507A TW95113507A TWI317906B TW I317906 B TWI317906 B TW I317906B TW 095113507 A TW095113507 A TW 095113507A TW 95113507 A TW95113507 A TW 95113507A TW I317906 B TWI317906 B TW I317906B
Authority
TW
Taiwan
Prior art keywords
instruction
register
condition
value
target
Prior art date
Application number
TW095113507A
Other languages
English (en)
Other versions
TW200705266A (en
Inventor
Thomas Andrew Sartorius
James Norris Dieffenderfer
Jeffrey Todd Bridges
Kenneth Alan Dockser
Michael Scott Mcilvaine
Rodney Wayne Smith
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW200705266A publication Critical patent/TW200705266A/zh
Application granted granted Critical
Publication of TWI317906B publication Critical patent/TWI317906B/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

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)

Description

1317906 九、發明說明: 【發明所屬之技術領域】 本發明概言之侧於處理器領域,且特定而言係關於一 執行經架構以在未滿足—條件之狀況下不提供輸出之條件 指令之系統及方法。 【先前技術】 ,處理器執行多種多樣應用内之計算任務。微處理器設 十中同、目心係改良之效能,以藉由軟體發展達成更快 之運异及/或增加之功能。缺之也由 刀把4多現代處理器皆應用一管線架 構,其中連續指令(其每一個均具有多個執行步驟)在執行過 疊。對於較高之指令通過量,該等指令應連續流經 心線。引起指令停止於管線中之任何情形皆不利地影響 才曰令通過量並因此不利地影響處王里器效能。 指令依據自記憶體獲得之f料運作並將其結果寫入至記 憶體。現代處理器利用在頂部位階包括數個快速、昂貴之 讀'體元件(例如暫存器)之階層式記憶體結構。該記憶體階 層隨後分別在各較低位階包括 \ ‘ ㈣,例如快取記憶體(SRAM)、固態主記憶體(dram)、 及磁碟(磁性或光學媒朴對^諸如可攜式電 應用,DRAM通常係記憶體階層之最低位階。 種 諸多處理器指令集架構(TSA)皆包括一組通用暫 (音⑽),其係用於在各指令之間傳遞資料及將資料傳遞至;己 憶體及自記憶體傳遞f料之架構化暫存器執: 輯及算術運算之指令自特™取其運算 1 J 、令 ο I10425.doc 1317906 果寫入特定之GPR。同樣,記憶體存取指令自GPR讀取欲寫 入至記憶體之資料’及將自記憶體讀取之資料寫入至GPR 中。一編譯器給每—指令指配一源Gpr識別符及目標gpr 識別符’並排序該等指令,以便計算出正確結果。換言之, 以程式次序"排列各指令,該”程式次序”藉由指揮較早之指 令在特定GPR中儲存結果及指揮較晚之指令讀取彼等GPr 以獲得用於進一步處理之運算元來確保正確之結果。 諸多處理器無序地(即以指令外之程式次序)執行 出現無序執行情況之一實例係在超純量設計中,其 中可在不同之執行管線令並行執行兩個或更多個指令。若 j v彳τ止在一個管線中,則隨後之指令可被調度至一空 閒官線以立即執行。無序執行並不限於超純量設計,並可 出現在早個問題設計(single_issue —㈣中。於任一情況 下,無序執行存在某些問題。 :與原始程式次序無關地執行獨立指令。然而,諸 令表現出對立他沪a + 4 夕才 八0 7之相依性,此稱作"危障"。當指令之 重新排序(例如由I床s …、序扣々問題引起)將改變該相依性Φ所 關涉運算元左 文/々日m f生中所 -人序時,發生資料危障。相 可分類為三。4 _ I才目關貝枓危障 裡㈣0考!兩個指令⑷,其中 1在j之前發生。 在私式:人序中 i寫入一係j: 危::寫後讀(RaW)危障。此危障發生在 至該暫存標暫存器時。若㈣入 J Υ Λ 5貝取忒暫存器時 值。當兩個指令1及丨皆^ s 』會錯玦地擷取—舊 ^寫入至同—目標暫存器且若在i寫入 110425.doc 1317906 至其目‘暫存器之前j嘗試寫入該暫存器,則發生寫後寫 (WaW)危障。於該情況下,以錯誤次序執行寫入,從而將$ 寫入之值而非j寫入之值留在該暫存器中。當在丨讀取其運算 凡之目暫存器之前j寫入該目標暫存器(其係i之運算元目 暫存器)時,發生讀後寫(WaR)危障。此導致i錯誤地操取 由j寫入之新值’而非由先前指令寫入之正確值。注意,讀 後讀(RaR)情以係-資料危障,可峰何次序執行讀取。 舉例而言’考量如下代表性碼段: AND r2, rio, rl2邏輯AND rl〇之内容至rl2之内容,將 結果放入r2中 ST ^ 5 mem 將r2之内容儲存至記憶體位置mem ADD r2 ’ r5 ’ r6加上r5及r6之内容,將和放入r2中 該st對該AND具有RaW相依性。資料危障要求以程式次 ^執行該等指令。此外,ADD表現出對該ST之WaR相依性。 義上在成其對r2之讀取之前,ADD不能將其結 果寫入r2。否則,當ST應寫入and之結果時,其會將add 之、果寫入至s己憶體。…❿與WaW資料危障係名稱相依, 而非真實之f料相依’此乃因無資料自-指令傳遞至另一 指令(唯一相依係—指令不破壞另一指令將讀取或已寫入 之暫存器之内容)。名稱相依可藉由-稱作暫存器重命名之 技術來解決。 於一暫存益重命名系統中,藉由動態地將邏輯暫存器編 就(LRN)指配至實體暫存器來管理—大組實體暫存器(每― 個均具有一實體暫#器編號(PRN))。LRN可包括(舉例而 110425.doc 1317906 邏輯〇抑識別符〇*0”1”2、...)。較佳地,實體暫存器之 數量大於LRN或架構化GPR之數量。一重命名表格(RT)保持 LRN與PRN之間的動態映射。 在管線初期(例如在解碼階段中或之後)’檢查一指令之 暫存器存取特性,並經由RT將與該指令相關聯之lrn(例如 GPR識別符)轉變成PRN。對於寫入一暫存器之指令,在該 RT中輸入一新LRN至PRN之映射,將該LRN映射至一未使 用之PRN,以將該寫人引導至—相關聯之實體暫存器(即, 該LRN被"重命名")。讀取一暫存器之指令藉由一訂查詢將 其㈣轉變成娜該PRN在其通過該管線之整個伯有期保 持與該暫存器-讀取指令相關聯。 暫存器_寫入指令不”破壞,,已寫入至該相同LRN之先前 值’該寫入被引導至-新的未使用之pRN(由於該咖被重 命名為-新削)。在程式次序中跟隨在該寫人指令後之指 令將被引導至相同之PRN ’以獲得該寫入值。在該程式欠 序中位於寫人指令之前的指令藉由灯被映射至—不同 體暫存☆'(在重命名作業之前)’並繼續存取彼實體、。 因此’可在自一 LRN(WaR)讀取-先前值之指令或將一先前 結果寫入⑽(卿)之前執行寫人—既定咖之 方式,避免WaR及WaW之名稱危障。 為允許處理器自例外、錯誤預士八 、 恢復,對寫人資料之實體暫存器 或諸如此類情形中 名)加以限制。舉例而言,可將匕 W用於進—步重命 、重命名為PRN],並將第 一才日令之結果寫入至該LRN,並因合 將第 立因此寫入至PRNl。—第二 110425.doc 1317906 指令亦可將資料寫入至該LRN(其被重命名為pRN2),且因 此PRN2f_存該第二指令之結果。於此情況下,在提交該第 二指令(意味著第二指令及其之前的所有指令均已被完全 例外檢查並確保完成執行)之前,PRNi 至其的⑽係非空閒。此外,第一指令與第二 所有參考該LRN之指令(即所有讀取pRNi之指令)必須已完 成對PRNl之―讀取,或以其他方式確保最終接收彼值。僅 在彼時方可釋放PRN],及使其可用於將另-LRN重命名至 其0 返回上述實例碼段,當解碼該AND指令且偵測其至LRN r2之寫入時,LRN r2在該RT中被指配至—實體暫存器,例 RN X因此0亥and之結果被寫入至實體暫存器X。當解 碼该ST指令時,偵測其自LRN r2之讀取,並存取該RT。由 於LRN r2被映射iPRN x,因而該ST指令將讀取實體暫存 器(因此獲得由該AND寫入之結果)。當解碼該ADD指令且 • 偵測其至匕1^ r2之寫入時’ LRN r2被重新指配(或重命名) 至一不同之實體暫存器,例如PRN y。隨後之讀取LRN r2 之指令將由該RT引導至實體暫存器y。注意,該add可在該 ST之前執行;該ST將自pRN χ擷取正確結果,因此消除 •危障。 暫存器重命名系統存在之一問題係由條件指令之執行引 起。條件指令係經構造只要滿足一條件即執行一算術或邏 輯運异並寫入該結果之指令。在評估該條件(其通常發生在 官線深處)之前,不能確定一條件指令是否將寫入一暫存 110425.doc -10- 1317906 益。若未滿足該條件,則該條件指-非運作指令,其不改變任何GPR。因心是J :寫入-暫存器之不確定性,在評估該條件之前不 隨後之指令是否存在&量如下碼段:件m咖。舉例而言,考 CMP rl,rl2 比較r^rl2之内容(設定碼或旗標 以反映該比較結果) 邏輯ANDrlO之内容至^2之内容, 將該結果置入r2中 若先前之比較係相等,則自r7中減 去r8之内容,並將結果置入『2中, 否則,r2不變 將Γ2之内容儲存至記憶體位置mem 加上r5及r6之内容,將和置入。中 於該實例中,在評估該叫條件之前,該ST不能確定其是 否具有-關於SUBEQ之資料危障。換言之,該取能確定 是否Γ2將由AND或SU_指令寫入。語義上且實際上,在 -始终按程式次序發出指令之處理器巾,總是執行漏與 SUBEQ兩者’且SUBEQ可更新或不可更新^暫存器之值, 該ST不’’關心”r2之内容而將簡單地儲存口之内容。,然而,於 無序設計中,處理器必須確定該ST是否相依於該趟或該 SUBEQ。 特疋而5,於暫存器重命名系統中,處理器必須在暫 存器重命名階段及早地停止該管線,直至評估該EQ條件且 AND r2,r 1 〇,r 12 SUBEQ r2,r7,r8
ST ADD r2 r2 mem r5,r6 110425.doc 11 - 1317906 可確定δ亥SUBEQ疋否將實際寫入r2。由於係在管線深處評 估該條件,因而此招致不合意之管線停止。另一選擇係, 對於該SUBEQ指令,該RT可臆測地將r2重命名至一新 . PRN。於此情況下,該RT必須具有一機構以取消該重命名, 即若未滿足該EQ條件,則恢復將該LRN r2至先前命名之 PRN之映射。此係必需’乃因若未滿足該條件,則 並不實際寫入新PRN,且將聽r2映射至一含有 # 纟定義資料之實體暫存器,因而。此額外電路增加了灯中 之複雜性及功率消耗。 ”w ^队π —俅1千評估之指 令類型係-條件選擇指令。條件選擇指令 定義以始終(即無條件地)寫入 “集木構 τ W馬八結果。僅該寫入值(而非是 否寫入-輸出)相依於條件評估 ADD指令(ADDSEQm ⑽。條件選擇 r5)可添加r4&r5之内裳, 且若滿足EQ條件,可將該結 件,則該指令將如之内容置入中。右未滿足該叫條 語義上具有用於替代結果之_^。注意該指令在結構及 讀取)。_輸出依據該條件之 結果之間選擇。 運·Π·結果或该替代 條件指令有別於條麵擇。 係-經構造若滿足—條件則將 中所用,”條件指令” 若未滿足該條件則不寫入該目 ^吉果寫入一目標且 件失效,則該條件指令實際上轉換言之,若該條 何暫存器或在一運算_ 奐至— ΝΟΡ,且不寫入任 兀妾裱境中不轉接任何結果。精確 ^0425.doc -12- 1317906 地,正是該條件指令是否將提供一 :該處理器在暫存器重命名階段停止該管:二:: 中)’直至評估該條件(其通常後期發生在該管 *下述指令之資料相依性。該類型之=7’方可解 器ISA中係常見。 之條件心令在現代處理 【發明内容】 執行-如下條件指令以無條件地向_目標提卜 忒指令經構造以接收一個或多個運算元作,、’^ 滿足一條件,則將對該等 剧入以便右 该目標,且若未滿足該條件, 】出至 ^ ^ ^ « 4» . 輪出。該條件指 4付该目標之先前值(即,由更新彼目標之條件 近之指令產生之值)0評估該條件。 ^ 月 該等運算元執行運算^计出至7 條件,則將對 升<、,Ό果輸出至該目標。 件’則將該先前值輸出至哕 滿足4條 之前可依賴於,目Μ 指令在條件評估 或轉接至該指令(一寫入至-暫存器 -實施例係關於—種在 之方法,該條件指令經構造以接收—個件;;令 U便右滿足-條件,則將對 巧 之結果輪出至一目栌 寻連异兀執行一運算 果輸出S目才示,且若未滿足該條件 出。接收一個或多個運算元值及該目標=-輸 產生-結果值,並將該執行一運算以 果輸出至§亥目標。若未滿足該條 110425.doc • 13· 13179〇6 ,則將先前目標值輪出至該目標。 實施例係關於1在一 :也映射邏輯暫存器至實體暫存器之暫存上應用-動態 執行一條件指令之方法, 重叩名系統)中 條件,則將—運算之結果;:、々經構造以:若滿足該 未滿足該條件,則;^ i 邏輯目標暫存器,且若 ,器相關聯之第—實體暫存器讀取::該邏輯目 輯目標暫存器重命名至-第二實體暫存器:值。將該邏 若滿足該條件,則執行—運算以產生―,果;估—條件。 果值寫入至該第二實體暫存考…、、、’°果值’並將該結 第—值寫人該第二實體暫存器。$足該條件,則將該 另-實施例係關於-種執行—條件指 ^令經構造以:若滿足以該條件 輯目標暫存器,且若未滿足該條件’則异、=寫入一邏 該方法包括自-與該邏輯目寫w何暫存器。 存器讀取-先前值。 暫“相關聯之第-實體暫 另一實施例係關於一種執行— 指令一若滿足一條件,:: = =條件 =標暫存器,且若未滿足該條件,則不暫邏 括無條件地將-值寫入至該邏輯目標暫:暫器存^ -實施例係關於一處理器,其包括複數個 =運作以動態地使邏輯暫存器識別符與 :: :聯::命名表。該處理器亦包括-運作以不按程= 曰々之指令執行管線。該管線進一步運作以在評估該 110425.doc 1317906 憶體22及/或〇_快取記憶體26中之遺漏導致對 憶體32之一存取。 乃外己 :理器1〇可包括一輸入/輸出_介面34,以控制對各種 週邊裝置36之存取。彼等熟習此項技術者應知,處理= 之各種變化形式皆可能。舉例而言,處理器⑺可包括 二:快”憶體以用於,快取及D快取之任一個或兩 二:外’可自—特定實施例中省卻處理器ι〇中所搶示之 功月b塊之一個或多個。 根據一或多個實施例’-條件指令是否將寫入一暫存, ^不〜性(在評估該條件之前無法解決該料定性)不會 二之停h由於條件指令始終(即無條件地)寫入 除 。寫™暫 之先前值(Λ 。該條件指令讀取其自身目標 「由更新彼目標之條件指令前最近之指令產生 估後即刻向該目標中寫入彼先前值(若未 χ “〆運算之結果(若滿足該條件)〇以此方式, 確保了條件指令徭夕4t & θ^ 灸7有其運算元源(該條件指令之 "4待該條件評估。特定而言,—暫存器 統可依賴在該條件評估之後含有該正確值之酬 單 指令或記憶體存取之結果)將-條件指= 目“RN重命名至_pRN。 在圖2中以彡* m 實施例。該條=:T 一執行一條件指令之方法之 括-取俨心”輪入」標之先前值(方塊40)。此可包 枯口貝取才曰配給該社 曰7之目標LRN(例如GPR識別符),若應用 110425.doc -16- 1317906 暫存器重命名,則此等同於讀取在解碼該條件指令時該rt 將該LRN映射至其之PRN。另一選擇係,於—運^元二接 作業中,輸入該目標之先前值可包括直接獲得先前指令之 輸出。於任一情況下,該先前值皆係一先前指令或^體 存取作業之結果。該條件指令由於執行該指令之本發明方 法而讀取先前值,其並非係該條件指令之架構化運算元。 雖然讀取該目標之先前值在圖2之方法中被繪示為一第一 步驟,但未必需要如此。若該先前值被轉接至該條件指令 (例如自記憶體存取作業或類似作業),則可在重命名該目产 t邏輯識別符之前或甚至在重命名後之料時間讀取該: 標之先前值。 評估與該條件指令相關之條件(方塊42)。此可發生在势 線深處’例如在一執行階段。寥於該原因,先前I術之: 件指令導致管線在暫存器重命名階段停止,此乃因在條件 汗估之前不能確^該指令是否將產生任何輸H選擇 係’假若一暫存器因預期哕各 H亥條件指令將寫入至其一值而被 重叩名,則若未滿足該條件 該重命名作業。 4入未發生’則必須取消 若滿足該條件,輸入—袖斗、夕 “、 % A自或多個運算元至該條件指令(方 塊44)。此可包括對gpr之—β ^ 碩取或一運算元轉接作業。她 4熟習此項技術者應注咅. _ ”皮 ^ , 心、·運异兀輸入步驟可先於條件绊 估;若未滿足該條件,則 狄_ — ^ 寺連异兀被間早地拋棄。對該 運异兀貫施一异術或邏輯 幵連斤(方塊46)以產生一結果,並 出該結果(方塊48)。該輪 並輪 J出了係秸由寫入至一;LRN(即藉由 110425.doc •17· 1317906 Γ與該咖相關聯之PRN)或將該結果直接轉接至另-指 捍方塊42) ’則該條件指令輪出該自其目 才:輸之先别值(方塊50)(同樣,或藉由寫入 藉由暫存轉接),從^未滿足條件 f或 先前值。在圖2所緣示之實施例中,若==定地提供 嘈取續# 曾„ 未滿足該條件,則不 ,取㈣運异%,亦不執行該運算。於其 在條件評估之前讀取該等算 '5 思异70見甚至執行運 未滿足該條件,則僅丢棄該等運算元及結 、 意:無論條件評估如何,該條件 提 。庄 ^ 先前技術方法形成對比,先 2技術執行架構化之指令:亦即,僅當滿足—條件時才提 輸出’且若未滿足該條件,則不提供 寫入或運算元轉接)。 询皙存益 在圖3中使用上述代表性碼段尤其係subeq心以 才曰令不思性地繪示根攄—^ > Γ 蘇貫施例之輸出選擇。在RT 21映射 之後自PRN X中讀取lrN 之先前值。當該值少兮 ^識別符)行進通過該管料,該條件指令保持該值二 暫存器重命名系統可在該條件評估之前更新触以,以將 ^RNr2重命名至一新實體暫存器刚丫。自及 等運算元,並在-ALU18中執行—減法運算。評估該條^ 且該評估結果決定是將先前值還是該運算結果寫入該條件 指令之目標LRNr2(被重命名至pRNy)。彼等熟習此^ 者應知圖3僅係代表性;於另-實施財,僅當W該條件 H0425.doc -18. 1317906 乃可執行對1·7及rS之讀取及減法運算。 據-個或多個實施例之條件指令之執行無條件地 條”:ΓΓί之結果或其目標之先前值’此取決於該 件;:估二,因而在諸多情況下,該管線無需停止以等待條 二ΓΓ言,RT21可該條件指令之目標lrn重命名 =一可用實體暫存器而不等待條件評估。確伴 ::彼urn之後繼指令自該條件指令寫入之實體暫存器中、 獲:”正確結果。該實體暫存器將獲得一運算 足該條件)或來自在該暫存器重命名 右/ 胳·V ·ηη 之則先别與該LRN相 關聯之刪之值(若未滿;i該條件因此,該m需 於該暫存器重命名階段以等待該條件評估。 了 於-實施例中’在評估該條件之前,當—條件指 接提供彼等運算元之一個或多個時, ^ 直 器14確定一指令之運算元之#决 g 官線控制 , 原來簡化運算元轉接。如此項 技術中所習知,運算元轉接係-無需第-指令之暫存;; 入及第二指令之暫存器讀取即可萨 盗寫 轉接至另一指令之技術。於先前技術中,:二=2接 之指令不能確定其運算元將由該件 u指令後 或-先前指令(若未滿足該條件且該條件) 轉接,且因此必須等待該條件評估以確生輪出) 無條件地提供-輸出,該實施例之條件指::-。藉由 除該不確定性’並允許在該條件 订之方法消 4估之則做出 元源之決h特定而言,f線控制器14可亥運算 前可靠地將該條件指令指配作為 ’遠條件之 才曰令之-運算元源, 110425.doc -19- 指令快取記憶體(I-快取記憶體) 指令側轉換後備緩衝器(ITLB) 資料快取記憶體(D-快取記憶體) 主要變換後備缓衝器(TLB) 記憶體介面 主(晶片外)記憶體 輸入/輸出(I/O)介面 週邊裝置 -21 -

Claims (1)

  1. 1317#ft6ii35〇7號專利申請案 中文申清專利範圍替換本(98年8月) ' 十、申請專利範圍: 一種經由一管線處理器執行一條件指令之方法,該方法 包括: 不喝條件之一評估的一結果如何,經由該條件指八 接收待經由該條件指令寫入的一目標之一先前值,該先 别值經由有別於該條件指令的一指令所產生; 經由該條件指令接收一個或多個運算元值; 評估該條件; 當滿足該條件, 算以產生一結果值 至該目標;及 則對該一個或多個運算元值執行—運 ’並經由該條件指令將該結果值輪出 則經由該條件指 令將該先前值輪 ‘未滿足該條件 至該目標。 2.如請求項r之方法,其中經由該條件指令接收待寫入之兮 目:之該先前值包括自一第一暫存器讀取該先前值〇 X 月长項2之方法’其中經由該條件指令輸出該結果值或 之該先前值包括無條件地將該結果值或該目標之 6亥先則值轉送至—第二指令。 4·二=項3之方法,其中該第—暫存器係—暫存器重命名 二-實體暫存器’且其中在該條件之該評 ==暫存器無條件地自該第—暫存器重命名至㈣ 5. 如請求項4之方法,其中在該條件 件指令後之一指令無條件地經由 之評估之前,將繼該條 —管線控制器引導至該 110425-980817.doc 13179〇6 6. 9. 條件指令以作為—運算元源。 七八之^ ’其中該目標之該先前值係^先前執行 輪出,該先前執行指令經轉送至該條件指令而不 輪出。 存态項取该先前執行指令之該 如請求们之方法,其中經 胃目標之該先前值係妹M 係,.工由官線控制器執行。 如4衣項7之方法,1 選擇該條騰料無條件地 一種經由;*用_& θ 運异元之源。 邏輯暫存器至若 ’、、’、動恕地映射若干個 侔件於八Μ 體暫存器之-管線處理哭執行 卞件扎令之方法,該方法包括: 執仃一 不論-條件之一評估的—結果如何 ί 自與一邏輯目垆& 士 、'、工由该條件指今 產生; -第-值==關聯之—第-實體暫存器二 由有別於該條件指令之-指令所 將該邏輯目標暫存器重命名至 a 經由該條件指令接收該一個或多個::體暫存器; 在評估該條杜 飞夕個運鼻元值; 行 運笪 件之前,對該-個或多個運[ 運异’以產生'结果值; 们〜值執 當滿足該條#,㈣ 器,·及 寫入至該苐二實體暫存 當未滿足該條件,則 器。 值寫入該苐二實體暫存 U0425-9808I7.doc 1317906 之前, 一指令 1〇.如請求項9之方法,其進一步包括在該條件之評估 將該第二實體暫存器指配作為繼該條件指令後 之運算元源。 11, 自一邏輯目 於該條件指 種執行一條件指令之方法,該方法包含: 不論該條件指令之一條件之一評估如何, 榣暫存器讀取一先前值,該先前值經由有別 令之—指令所產生;
    經由該條件指令接收該一個或多個運算元值; 對於產生一結果之該一個或多個運算元值執行
    汁怙該條件; 2足該料,縣該運算之該結果寫人該邏輯 曰存态;以及 器當未滿足該條件,則將該先前值寫入該邏輯目標暫存 且d'll之方法’其進—步包括在讀取該先前值之後 2估。亥條件之前將該邏輯目標暫存器自一第一實體 曰存态重命名至—第二實體暫存器。 13. 一種處理器,其包括·· 複數個實體暫存器; 相關=:::使邏輯暫存器識別符與該實體暫存器 一指令執行營綠 該指令執行管線運作按程式次序執行指令, 作以執行一條件指令,其運作以造成 II0425-980817.doc 1317906 該指令執行警線以: 不时 條件之一評估石/ 邏輯目襟智存”別符: 由該條件指令自與- 取-先前值,:先!:相關聯之-第1體暫㈣ 遇,该先刖值經由古卽认斗 《廿-口貝 令所產生; 有;该條件指令之一指 接收該一個+々, 個或多個運算元值. 對於產生—处里_ , ,〜果之该一個或 , 夕汨磚异兀值執行—運 算 評估該條件;及 當滿足該條件,則提供該結果,、. 則提供該先前值。 且當未滿足該條件, 14. 15. 如請求項13之處理器,其中在 估該條件> 1 ^ 3取e亥先前值之後且在評 栎件之别,该重命名表 牡。f 別符自該第-實體暫存器重命::以將該邏輯暫存器識 如請求項13之處理器,其中,二1二實體暫存器。 之前。 Λ异係執行於評估該條件 110425-980817.doc
TW095113507A 2005-04-14 2006-04-14 System and method wherein conditional instructions unconditionally provide output TWI317906B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/106,803 US7624256B2 (en) 2005-04-14 2005-04-14 System and method wherein conditional instructions unconditionally provide output

Publications (2)

Publication Number Publication Date
TW200705266A TW200705266A (en) 2007-02-01
TWI317906B true TWI317906B (en) 2009-12-01

Family

ID=37016156

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095113507A TWI317906B (en) 2005-04-14 2006-04-14 System and method wherein conditional instructions unconditionally provide output

Country Status (9)

Country Link
US (1) US7624256B2 (zh)
EP (1) EP1869547B1 (zh)
JP (3) JP2008537231A (zh)
KR (1) KR100953856B1 (zh)
CN (1) CN101194225B (zh)
BR (1) BRPI0610222A2 (zh)
IL (1) IL186632A (zh)
TW (1) TWI317906B (zh)
WO (1) WO2006113420A2 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
JP5072889B2 (ja) * 2009-03-16 2012-11-14 株式会社東芝 事前条件生成装置および事後条件生成装置、ならびにこれらの方法
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN111209039B (zh) * 2018-11-21 2022-08-02 展讯通信(上海)有限公司 指令处理方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US20050066151A1 (en) 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output

Also Published As

Publication number Publication date
BRPI0610222A2 (pt) 2010-06-08
KR20070121842A (ko) 2007-12-27
EP1869547A2 (en) 2007-12-26
JP6009608B2 (ja) 2016-10-19
US7624256B2 (en) 2009-11-24
IL186632A (en) 2012-04-30
TW200705266A (en) 2007-02-01
JP2008537231A (ja) 2008-09-11
JP2012212433A (ja) 2012-11-01
KR100953856B1 (ko) 2010-04-20
WO2006113420A2 (en) 2006-10-26
CN101194225A (zh) 2008-06-04
WO2006113420A3 (en) 2006-12-21
IL186632A0 (en) 2008-01-20
CN101194225B (zh) 2013-10-23
EP1869547B1 (en) 2016-09-21
US20060236078A1 (en) 2006-10-19
JP2015164048A (ja) 2015-09-10

Similar Documents

Publication Publication Date Title
TWI317906B (en) System and method wherein conditional instructions unconditionally provide output
JP5853303B2 (ja) レジスタ初期化動作の最適化
US9329868B2 (en) Reducing register read ports for register pairs
US10592251B2 (en) Register restoration using transactional memory register snapshots
US10732981B2 (en) Management of store queue based on restoration operation
US10838733B2 (en) Register context restoration based on rename register recovery
US10552164B2 (en) Sharing snapshots between restoration and recovery
TW479198B (en) Method and apparatus for implementing execution predicates in a computer processing system
US10564977B2 (en) Selective register allocation
TWI299465B (en) Simultaneous multithread processor and method therefor
US11010192B2 (en) Register restoration using recovery buffers
US10649785B2 (en) Tracking changes to memory via check and recovery
US10963261B2 (en) Sharing snapshots across save requests
US9501284B2 (en) Mechanism for allowing speculative execution of loads beyond a wait for event instruction
US20180300142A1 (en) Coalescing store instructions for restoration
US20180300368A1 (en) Register restoration invalidation based on a context switch
US20180300156A1 (en) Selecting register restoration or register reloading
JP2003523573A (ja) プロセッサにおける書き込みトラヒックを減少するシステム及び方法
US9323532B2 (en) Predicting register pairs
US11175916B2 (en) System and method for a lightweight fencing operation
US10592422B2 (en) Data-less history buffer with banked restore ports in a register mapper
US9298459B2 (en) Managing register pairing
Shah et al. SPSIM: SuperScalar Processor SIMulater CS305 Project Report
Yang et al. Design of SPARC V8 superscalar pipeline applied Tomasulo's algorithm