TWI485621B - 用於選擇性執行確定指令的方法、裝置及系統 - Google Patents

用於選擇性執行確定指令的方法、裝置及系統 Download PDF

Info

Publication number
TWI485621B
TWI485621B TW101146372A TW101146372A TWI485621B TW I485621 B TWI485621 B TW I485621B TW 101146372 A TW101146372 A TW 101146372A TW 101146372 A TW101146372 A TW 101146372A TW I485621 B TWI485621 B TW I485621B
Authority
TW
Taiwan
Prior art keywords
instruction
determining
command
processor
determination
Prior art date
Application number
TW101146372A
Other languages
English (en)
Other versions
TW201337741A (zh
Inventor
Enric Gibert Codina
Josep M Codina
Fernando Latorre
Pedro Marcuello
Pedro Lopez
Crispin Gomez Requena
Antonio Gonzalez
Mirem Meyrem Hyuseinova
Christos E Kotselidis
Marc Lupon
Carlos Madriles Gimeno
Grigorios Magklis
Alejandro Martinez Vicente
Raul Martinez
Daniel Ortega
Demos Pavlou
Kyriakos A Stavrou
Georgios Tournavitis
Polychronis Xekalakis
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
Publication of TW201337741A publication Critical patent/TW201337741A/zh
Application granted granted Critical
Publication of TWI485621B publication Critical patent/TWI485621B/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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Description

用於選擇性執行確定指令的方法、裝置及系統 發明領域
各種實施例通常涉及資料處理器裝置之操作。更具體而言,某些實施例涉及用於判定是否處理器將要執行由確定指令所指示之確定操作的機制。
發明背景
現代的處理器設計實施複雜的檢查點機制,例如暫存器檢查點及記憶體檢查點,以便使得優化邏輯可產生將要推測性執行之程式碼的積極優化版本。在推測性執行結果正確的情況下,推測狀態通過確定操作來提升至確定架構狀態。另一方面,不正確的推測執行導致處理器狀態被轉返至先前一致的狀態。
歸因於資源負載及儲存操作需求,確定指令及其引起的確定操作對於處理器性能造成顯著的額外負擔,尤其在多核環境中。舉例而言,為了保證記憶體相干性,確定點需要在多處理器之快取記憶體系統中全域性觀察所有未決的記憶體操作。因此,確定不能被認為完成,直到由 非核心來觀察所有未決的記憶體錯誤為止。歸因於此等要求,確定操作通常在循序處理器設計中產生約5%-10%停頓週期。
依據本發明之一實施例,係特地提出一種用於處理器之方法,該方法包括:偵測指示確定操作之確定指令;響應於該偵測,判定是否該確定指令涉及偶然執行該確定操作;以及基於該判定,產生信號,該信號指示是否評估一或多個條件以便判定是否執行該確定操作。
L1‧‧‧1級快取記憶體
L2‧‧‧2級快取記憶體
22‧‧‧快取記憶體
100‧‧‧電腦平台
101‧‧‧匯流排
104‧‧‧主記憶體
106‧‧‧唯讀記憶體
107‧‧‧資料儲存裝置
109‧‧‧處理器
121‧‧‧顯示裝置
122‧‧‧輸入裝置
123‧‧‧游標控制裝置
124‧‧‧硬拷貝裝置
125‧‧‧聲音記錄/回放裝置
126‧‧‧數位視訊裝置
130‧‧‧解碼器
140‧‧‧執行單元
150‧‧‧狀態資訊
190‧‧‧網路介面
200‧‧‧處理器
210‧‧‧前端
212‧‧‧指令快取記憶體及擷取邏輯
213‧‧‧解碼器
214‧‧‧指令佇列
215‧‧‧指令集
216‧‧‧分支預測單元
218‧‧‧確定指令類型
220‧‧‧記憶體子系統
222‧‧‧快取記憶體
224‧‧‧資料翻譯旁看緩衝器
226‧‧‧頁面錯誤處置器
228‧‧‧記憶體順序緩衝器
230‧‧‧後端
232、233a‧‧‧暫存器檔案
233b‧‧‧映像暫存器檔案
234‧‧‧執行單元
236‧‧‧保留站
238‧‧‧分配及重命名表
240‧‧‧狀態暫存器
300‧‧‧方法
310~330‧‧‧步驟
400‧‧‧確定指令
410‧‧‧命令欄位
420‧‧‧提示欄位
500‧‧‧電路
510‧‧‧輸入
520‧‧‧邏輯元件
530‧‧‧信號
540‧‧‧指示
550‧‧‧輸出
藉由範例而非限制地于隨附圖式之各圖中說明各種實施例,在圖式中:圖1為例示根據一實施例用於傳達確定指令的電腦平台的某些元件的方塊圖。
圖2為例示根據一實施例用於判定是否執行由確定指令所指示之確定操作的處理器之某些元件的方塊圖。
圖3為例示根據一實施例用於處理確定指令的方法的流程圖。
圖4為例示根據一實施例的確定指令之某些元件的方塊圖。
圖5為例示根據一實施例用於處理條件性確定指令之電路的某些元件之邏輯圖。
詳細說明
確定指令或操作可分類為需要執行確定操作以便實現正確功能(例如,否則系統就不工作)的確定指令以及例如僅僅因為優化邏輯具有有限優化範圍而被執行的確定指令。此後一組確定指令或操作可跳過而不影響正確性,但是可影響性能及功效(無論是好還是壞)。舉例而言,在由若干編譯階段組成之軟體優化系統中,其中第一階段由每次解譯一個指令並且在每一個指令之後確定狀態的解譯器或模擬器組成,需要此等確定以便保證正確性。另一方面,當執行在其他編譯階段經過優化的程式碼版本時,一些添加的確定指令可僅僅歸因於優化邏輯之有限範圍而被添加並且可跳過而不影響正確性。
本文討論的實施例多方面地提供用於判定是否由處理器執行確定操作的技術及機制。如本文使用,「確定操作」係指由處理器執行(或將要由其執行)以便將某種先前僅為推測性之狀態提升至有效處理器狀態水準的一組一或多個操作,該推測性之狀態在確定操作之前已經有在某種轉返操作中予以去除之可能性。
如本文使用,「確定指令」(或「確定訊息」)係指用於向處理器指示將要執行確定操作之可能性的通訊。在一實施例中,確定指令可指示必須執行確定操作-例如此必須性至少體現在確定指令之發送意欲用來命令執行確定操作,不論任何其他處理器狀態為何。為了簡便起見,此命令在本文中稱為絕對命令。或者,確定指令可指示僅偶然執行確定操作-例如此偶然性至少體現在確定指令之發 送意欲用來命令處理器進一步評估處理器狀態之一或多個條件以便作為用於判定是否執行所指示之確定操作的基礎。為了簡便起見,此命令在本文中稱為條件性命令。
處理器可執行確定指令之評估以便判定是否確定指令涉及偶然執行確定操作-例如是否確定指令代表偶然命令,其不同於絕對確定命令。判定確定指令代表絕對確定命令可包括判定所代表的命令並非條件性。同樣地,判定確定指令代表條件性確定命令可包括判定所代表的確定命令並非絕對性。
判定確定命令為絕對的可例如為處理器開始對應確定操作的充分條件。相比之下,判定確定命令為條件性的可例如導致處理器開始評估一或多個額外條件以便判定是否執行對應確定操作。此類評估可加以執行以便例如識別將執行確定操作及/或識別將不執行確定操作。為了簡便起見,用於判定由確定指令所代表之確定命令的絕對性質或判定其條件性性質的一或多個操作在本文中稱為「偶然性測試」。
如本文使用,「提示資訊」係指由偶然性測試測試且/或以其他方式評估的資訊-只要此資訊可充當關於是否確定指令之處理可產生確定操作的提示。作為說明而非限制地,偶然性測試可判定某些提示資訊之一或多個值且/或僅僅測試某些提示資訊之存在(或不存在)。
在一實施例中,提示資訊可提供於確定指令本身之中。作為說明而非限制地,確定指令可包含用於儲存明 示該指令為確定指令類型之資訊的欄位,其在本文中稱為命令欄位。確定指令類型可例如為包含於將要處理確定指令之處理器的指令集之中或以其他方式受該指令集支援的指令類型。
在一實施例中,給定指令之命令欄位中之資訊可表示通用確定指令類型-例如其中可能需要參考命令欄位以外的額外資訊以便分析是否具體命令指令涉及偶然確定命令或絕對確定命令。在替代實施例中,給定指令之命令欄位中之資訊可具體表示多種不同確定指令類型中之一者-例如絕對確定指令類型及偶然確定指令類型中之一者-其中處理器之指令集在不同確定指令類型之間進行區分。
在一實施例中,偶然性測試可另外或替代地基於確定指令中之提示資訊之存在及/或提示資訊之不存在-例如除命令欄位資訊以外的資訊。作為說明而非限制地,確定指令可包括一或多個參數-例如包括在位元、標誌或其他此類欄位中儲存的參數-每一者用於儲存指定或以其他方式指示是否所代表的確定命令為偶然或絕對的相應值。偶然性測試可評估在此欄位中儲存之值或,在一實施例中,僅僅測試此欄位之存在或不存在。
另外或替代地,可與確定指令無關地使提示資訊為處理器所利用-例如其中某種分開的通訊已經將處理器進行組配以便將確定指令識別為代表偶然確定或絕對確定。
作為說明而非限制地,處理器可儲存或以其他方 式取用組配資訊,該資訊指定是否在不存在相反情形之指示的情況下確定指令被假定為偶然或絕對。在一實施例中,可參考此組配資訊以便判定是否執行偶然性測試,或是否必需開始確定操作。
圖1展示根據一實施例用於判定是否執行確定操作之例示性電腦平台100的元件。電腦平台100可例如包括個人電腦之硬體平台,例如桌上型電腦、膝上型電腦、手持電腦-例如平板電腦、掌上電腦、行動電話、媒體播放器及/或類似物-及/或其他此等電腦系統。替代地或另外地,電腦平台100可提供作為伺服器、工作站或其他此類電腦系統之操作。
在一實施例中,電腦平台100包括用於傳達資訊之匯流排101或其他此類硬體及用於處理此類資訊之處理器109-例如中央處理單元。處理器109可包括複雜指令集電腦(CISC)類型架構、簡化指令集電腦(RISC)類型架構及/或各種處理器架構類型中之任一者的功能-例如其中處理器109經由匯流排101與電腦平台100之一或多個其他組件耦接。作為說明而非限制地,電腦平台100可包括用於儲存資訊及/或將要由處理器109執行之指令的隨機存取記憶體(RAM)或其他動態儲存裝置,其由耦接至匯流排101之例示性主記憶體104來表示。主記憶體104亦可用於在處理器109執行指令期間儲存臨時變數或其他中間資訊。電腦平台100可另外或替代地包括用於儲存處理器109之靜態資訊及/或指令的唯讀記憶體(ROM)106及/或其他靜態儲存裝置-例 如其中ROM 106經由匯流排101耦接至處理器109。
在一實施例中,電腦平台100另外或替代地包括例如經由匯流排101耦接至處理器109的資料儲存裝置107(例如,磁碟、光碟及/或其他機器可讀媒體)。資料儲存裝置107可例如包括由處理器109操作且/或以其他方式存取的指令或其他資訊。在一實施例中,處理器109可判定是否執行確定操作,該判定基於自主記憶體104、ROM 106、資料儲存裝置107或任何其他合適資料源接收之確定指令及/或其他資訊。
電腦平台100可另外或替代地包括用於向電腦使用者展示資訊之顯示裝置121。顯示裝置121可例如包括碼框緩衝器、專用圖形顯色裝置、陰極射線管(CRT)、平板顯示器及/或類似裝置。另外或替代地,電腦平台100可包括輸入裝置122,其包括用於接收使用者輸入之文數字及/或其他鍵。另外或替代地,電腦平台100可包括游標控制裝置123,例如滑鼠、軌跡球、筆、觸控螢幕或游標方向鍵,其用於將位置、選擇或其他游標資訊傳達至處理器109,且/或控制例如顯示裝置121上之游標移動。電腦平台100可另外或替代地包括硬拷貝裝置124例如列印機、聲音記錄/回放裝置125例如麥克風或揚聲器、數位視訊裝置126例如靜止或運動攝影機及/或類似裝置。
在一實施例中,電腦平台100包括或耦接至用於將電腦平台100連接至一或多個網路(未展示)的網路介面190-該一或多個網路例如包括專用儲存區網路(SAN)、局域 網路(LAN)、廣域網路(WAN)、虛擬LAN(VLAN)、網際網路及/或類似網路。作為說明而非限制地,網路介面190可包括網路介面卡(NIC)、例如偶極天線之天線或無線收發器中之一或多者,但是本發明的範圍不限於此。
處理器109可支援與各種習知指令集中任一者中之該等指令類似的指令-該等指令集例如與由現有處理器使用之x86指令集相容的指令集。作為說明而非限制地,處理器109可支援與由Intel公司(Santa Clara,Calif)定義之IATM Intel架構(參見「IA-32 Intel® Architecture Software Developers Manual Volume 2:Instruction Set Reference(IA-32 Intel®架構軟體開發者手冊第2卷:指令集參考)」,序號245471,其可在全球資訊網之developer.intel.com處自Intel(Santa Clara,Calif)獲得)中所支援之一些或全部操作對應的操作。因此,除了某些實施例之操作以外,處理器109可支援與例如現有x86操作對應之一或多個操作。
根據一實施例,處理器109可進一步包括用於處理確定指令之電路邏輯。作為說明而非限制地,處理器109可包括用於偵測處理器109已經接收或以其他方式存取之確定指令的解碼器130。確定解碼器130可解碼所偵測之確定指令-例如根據處理器109之指令集(未展示)。處理器109可進一步包括執行單元140以便執行所解碼之確定指令。
在一實施例中,由解碼器130及執行單元140來處理確定指令可包括判定是否確定指令涉及偶然執行確定操作-即是否確定指令代表偶然確定命令。處理器109可進一 步包括或以其他方式存取狀態資訊150,其代表例如將要響應於確定指令涉及偶然執行確定指令的某個判定來評估的一或多個條件。評估狀態資訊150中之一或多個條件可導致確定指令指示之確定操作被執行。或者,評估狀態資訊150之一或多個條件可導致完全避免所指示之確定操作。
電腦平台100之架構例示根據一實施例用於處理確定指令之一個電腦系統。然而,在某些實施例中,電腦平台100之架構-例如耦接以便與處理器109交換通訊之裝置之具體數量及類型及/或此等裝置相對於彼此之相對組配-可不受限制。
圖2例示出根據一實施例用於處理確定指令之處理器200的元件。處理器200可在具有電腦平台100之一些或全部功能部件的電腦平台中操作-例如其中處理器200包括處理器109之一些或全部功能。處理器200可為各種處理器類型中之任一者,例如單一核心處理器或包括多個均質或異質核心的多核心處理器。
在一實施例中,處理器200包括三組一般功能組件,即前端(FE)210、記憶體子系統(MS)220及(BE)後端230。FE210可例如包括支援某些習知指令解碼功能-例如用於支援循序執行或亂序執行的邏輯。另外或替代地,BE 230可包括調節資料執行流程之一些習知功能件-例如保留站、引退緩衝器、執行單元、暫存器檔案及/或其他架構元件。在提供例如Intel架構TM (IA32)處理器之功能的功能的某些實施例中,FE 210及BE 230可進一步由以下事實來區 分:FE 210主要處理巨集操作,該等巨集操作為組合指令,而BE 230處理所解碼之微操作(μops),該等微操作為具有與巨集操作之多對一對映關係的較簡單指令。
因此,如圖2展示,例示性前端210可包括例如自較低快取記憶體級(例如,記憶體子系統220之快取記憶體222)獲得指令資訊之指令快取記憶體及擷取邏輯212-例如用於暫時儲存預期很快將要使用或多次使用之指令。可將用於解碼指令之一或多個解碼器213及用於儲存與指令集215有關之未決指令的指令佇列214耦接至指令快取記憶體212。雖然某些實施例不限於此,但是分支預測單元(BPU)216可另外或替代地存在於FE 210中以便預測在程式執行期間獲取之分支,這樣使得可提早獲得與預測分支相關之指令。
在一實施例中,指令集215定義或以其他方式支援確定指令類型218。解碼器213可包括或以其他方式存取用於解碼涉及確定指令類型218之指令的邏輯。在一實施例中,解碼此確定指令可包括執行一或多個操作以便判定是否確定指令涉及偶然執行確定操作。在替代實施例中,偶然性測試之此執行可為由後端230執行已經解碼之確定指令的一部分。
如展示,前端210可與記憶體子系統220通訊。子系統220可包括一或多個快取記憶體222-例如包括1級(L1)及2級(L2)快取記憶體,其中L1快取記憶體可為資料快取記憶體並且L2快取記憶體為包括資料及指令之統一的快取記 憶體。為了幫助位址翻譯,子系統220可進一步包括一或多個習知機制例如資料翻譯旁看緩衝器(DTLB)224,並且在某些實施例中包括頁面錯誤處置器(PMH)226-例如用於幫助在出現DTLB 224錯誤時自記憶體階層之其他級存取所請求之資訊。更進一步,記憶體子系統可包括記憶體順序緩衝器(MOB)228,其可包括儲存並且加載緩衝器以便儲存與未決的資料傳輸指令相關的項目,例如儲存並且加載指令。然而,某些實施例可不限於用於幫助存取快取記憶體222之記憶體子系統220的具體組件。
進一步耦接至前端210及記憶體子系統220者為後端230,其可用於例如執行由前端210解碼之指令。如圖2展示,例示性後端230可包括暫存器檔案233a、映像暫存器檔案233b及一或多個執行單元234,其可包括一或多個整數單元、浮點單元、向量單元及/或類似單元。更進一步,後端230可包括保留站236,其可用於向執行單元234提供指令及運算元。進而由分配及重命名表238將條目提供至保留站236,該等分配及重命名表可接收來自前端210之引入指令並且將其分配至各種資源,包括執行單元234及暫存器檔案232,並且執行一些有限數量之邏輯暫存器至存在於暫存器檔案233a及/或映像暫存器233b中之較大數量之物理暫存器的任何重命名。
後端230可包括用於執行所解碼之確定指令的一或多個組件-例如包括由處理器200執行確定操作。包含確定操作本身的某些操作可根據用於確定處理器狀態的一或 多種習知技術。確定可導致暫存器檔案233a被複製至映像暫存器檔案233b,並且與快取記憶體222中之一或多個線路對應之推測位元被清除。在一實施例中,確定指令可未引退直到所有此等操作完成為止。
在由執行單元234對程式碼的某個後續推測執行期間,可將描述快取記憶體222之一或多個推測快取記憶體線路狀態的推測狀態資訊寫入暫存器檔案233a及/或記憶體子系統220。在執行轉返操作時,可放棄推測記憶體請求,映像暫存器檔案233b可被複製回至暫存器檔案233a並且具有所設定之推測位元的快取記憶體22中之所有快取記憶體線路可被設定為無效。在一實施例中,轉返指令可未引退直到所有此等操作完成為止。
當確定指令被判定為涉及條件性執行確定操作時,一或多個執行單元234可評估例如由處理器之一組例示性的一或多個狀態暫存器240所代表之狀態資訊。一或多個狀態暫存器240可例如不同地儲存代表當前處理器狀態之資訊,該處理器狀態在處理器200之各種指令執行及/或其他正在進行的操作期間定期更新。作為說明而非限制地,一或多個狀態暫存器240可儲存自從具體事件以來已經執行之許多指令的計數-例如自從最近確定操作、自從最近轉返及/或類似事件以來。替代地或另外地,一或多個狀態暫存器240可儲存當前等待執行之許多指令之計數,仍有待全域性觀察之許多未決的記憶體請求的計數,識別是否任何中斷當前為未決的資訊,或處理器狀態之各種額外或替代 態樣中之任一者。
在一實施例中,處理器200可使用用於評估處理器狀態之其他資訊-例如儲存在狀態暫存器240及/或其他位置中。作為說明而非限制地,處理器200可存取指定一或多個臨界值之資訊-例如自從具體事件以來已經執行之指令的臨界數量、當前等待執行之指令的臨界數量、目前未決中斷之臨界數量及/或類似數量中之一或多者。
當偶然確定命令之某個條件或一些條件的評估識別一或多個條件未得到滿足時,可避免完全(「跳過」)確定指令所指示之確定操作。跳過之確定操作可充當處理器200管線中之NOP指令。因此,代表偶然命令之確定指令在處理器狀態之各種條件下可不執行實施確定操作之任何前述操作。替代地,確定指令可響應於一或多個條件未得到滿足而引退。
圖3例示出根據一實施例用於處理確定指令之方法300的元件。方法300可例如由包括處理器200之一些或全部功能部件的處理器來執行。
在一實施例中,方法300包括在310處偵測指示確定操作之確定指令。舉例而言,在執行某個碼指令序列期間,確定指令可被發送至處理器、由處理器擷取或以其他方式存取。方法300可進一步包括在320處判定-例如響應於偵測確定指令-是否確定指令涉及偶然執行確定操作。此判定可在一實施例中基於命令指令之命令偶然性參數的值-例如提示位元參數中之值。例如在確定指令具有同時為絕 對執行確定操作指令及偶然執行確定操作所通用之確定指令類型時,可能正是此種情況。
替代地或另外地,其他資訊可用作確定指令之偶然性測試的基礎。舉例而言,在310處偵測之確定指令可包括命令欄位,該命令欄位儲存指定確定指令之指令類型的資訊-例如其中指令類型由處理器之指令集定義或以其他方式支援。是否確定指令涉及偶然執行確定操作之判定可基於此命令欄位指示偶然執行確定操作所特有之確定指令類型-例如其不同於絕對執行確定操作。
在處理通用確定指令類型之指令中,處理器可被組配成在該指令不包括指定該指令代表絕對確定命令之偶然性參數資訊的情況下實施如下假定,即確定指令類型之指令被視為代表偶然確定命令。在替代實施例中,處理器可被組配成在該指令不包括指定該指令代表偶然確定命令之偶然性參數資訊的情況下實施如下另一種假定,即確定指令類型之指令替代地被視為代表絕對確定命令。
基於是否確定指令涉及偶然執行確定操作之判定,方法300可包括在330處產生指示是否將要評估一或多個條件以便判定是否執行確定操作的信號。舉例而言,此信號可自處理器之前端的解碼器邏輯交換以便判定處理器之後端的執行單元的操作。在替代實施例中,此信號可在處理器之後端的一或多個執行單元內的功能組件之間交換。
在一實施例中,320處之判定可由處理器之解碼 器來執行。在替代實施例中,判定可在解碼已經完成之後由處理器之執行單元執行。因此,320處之判定及330處之信號產生可由包括解碼器及執行單元之一組處理器電路邏輯來執行,但是解碼器及執行單元對於此等操作之相應貢獻可隨著不同實施例而變化。
根據不同實施例,一或多個額外操作可由對於方法300所展示之操作而得出。舉例而言,當確定指令被判定為涉及偶然執行確定操作時,可執行一或多個條件之評估以便識別是否執行確定操作。在一實施例中,將要評估之一或多個條件包括與處理器所接收之確定指令無關的處理器狀態。
圖4例示出根據一實施例將要處理之確定指令400的元件。確定指令400可由例如具有處理器200之一些或全部功能部件的處理器來處理。在一實施例中,確定指令400之處理可根據方法300。
確定指令400可包括指示確定操作之資訊-例如其中資訊指示此確定操作將要通過執行確定指令來予以執行的可能性。舉例而言,確定指令400可包括指示是否確定指令400涉及條件性執行此確定操作的資訊。
舉例而言,確定指令400可包括儲存指定具體確定指令類型之資訊的命令欄位410。命令欄位410中之資訊可例如識別偶然確定指令及絕對確定指令中之具體一者所特有的指令類型。或者,命令欄位410中之資訊可識別至少在指令類型代表偶然確定指令或絕對確定指令的範圍內具 有通用性的確定指令類型。
確定指令400可另外或替代地包括一或多個參數用於指示是否確定指令400涉及條件性執行確定操作。舉例而言,確定指令400可包括提示欄位420用於儲存位元值、標誌值及/或其他此類資訊,其代表由確定指令所代表之命令的偶然性狀態-例如條件性或絕對性。
在一實施例中,確定指令420可包括一或多個額外參數,或其他資訊,用於幫助評估是否確定指令之執行導致確定操作被執行。作為說明而非限制地,確定指令400可包括識別一或多個條件之資訊(未展示),該一或多個條件將要被評估以便判定是否執行確定操作。替代地或另外地,確定指令400可包括識別一或多個臨界值水準之資訊(未展示),該一或多個臨界值水準用於評估執行確定操作之一或多個條件。
圖5為電路500之功能性表示,該電路被組配成評估一或多個條件以便根據一實施例來判定是否執行確定指令中所指示的確定操作。電路500可例如駐留於包括處理器200之一些或全部功能部件的處理器之電路邏輯中,但是某些實施例不限於此。舉例而言,電路500可包括於執行確定指令之一或多個執行單元234之一者中或可以其他方式為其所利用。
電路500之操作可響應於給定確定指令涉及偶然執行確定操作之判定。此執行可例如至少在其受到由電路500執行之評估之結果影響的範圍內而為偶然的。在圖5展 示之例示性情況中,電路500接收一組一或多個輸入510以便評估用於執行(或替代地不執行)確定指令中所指示之確定操作的一或多個條件。
作為說明而非限制地,處理器可提供一或多個組 配暫存器,其中優化器例如可儲存指定兩個確定點之間及/或轉返與確定之間的執行指令之最大數目的資訊。雖然跳過幾個連續跳過確定指令可能為有利的,但是在某一點,與跳過另一個確定機會相比,執行確定為更有效的。當例如當前處理器狀態意味轉返將需要取消太多的工作,潛在地產生功效及執行問題時,可能尤其如此。在一實施例中,電路500可包括或以其他方式存取計數所執行指令之計數暫存器。此計數器可定期地與某個指定臨界值相比較並且每當執行確定或轉返操作時重調至零。此比較之結果可在執行確定指令時強制確定-例如在確定指令指示可跳過之確定操作,但是處理器自從最後一個確定點以來已經執行足夠指令時。零之臨界值可強制確定所有可跳過之確定指令。在一實施例中,臨界值可由優化器或其他代理修改以便例如使操作期間處理器之行為多方面地適應具體情況。用於判定及/或調節此臨界值之試探法可根據具體應用之實施細節來變化,並且在某些實施例中不具有限制性。
另外或替代地,電路500可接收輸入-例如基於來 自記憶體子系統之信號,該等信號識別仍有待全域性觀察之許多記憶體請求的當前計數。例如,若假定(為了簡單起見)存取L1資料快取記憶體的每個錯過的記憶體請求耗費N 個週期來全域性觀察,則確定、記憶體、確定、記憶體及確定之例示性指令序列可使執行管線停頓2N個週期(第二確定點處之N個週期及第三確定點處之N個週期)。另一方面,確定、記憶體、確定被跳過、記憶體及確定之序列可使管線停頓僅N個週期(在第三確定點處),因為等待全域觀察之兩個記憶體請求重疊。
因此,處理器可包括計數等待全域觀察之記憶體 請求之量的計數暫存器。此計數器可與優化器可藉以指定等待全域觀察之記憶體請求之臨界最小數量的另一個組配暫存器相比較。若與臨界值暫存器指定之該等請求相比,等待全域觀察之未決的記憶體請求較少,則可強制確定。舉例而言,此暫存器之零值可導致可跳過之確定操作被跳過,只要存在等待全域觀察之記憶體請求(並且若所有其他條件不變)。
另外或替代地,處理器可使用未決中斷之量作為 用於判定是否執行或跳過可跳過之確定操作的額外或替代輸入。具體而言,若自從最後一個確定或轉返點以來存在未決的中斷,則可執行可跳過之確定操作。在確定點之間執行程式碼時,中斷通常被阻止,其中兩個確定之間的程式碼執行為推測性的,並且若中斷在中間出現,則可能需要轉返至先前一致狀態。然而,因為使中斷延遲太長久會構成性能風險,所以若每當確定指令指示偶然確定命令時,中斷為未決的,則可強制執行可跳過之確定操作。
根據一實施例之電路500之例示性操作的功能部 件在以下鑒於以上描述之考慮因素來討論。作為說明而非限制地,電路500之一組一或多個輸入510可包括識別自從最近確定操作或轉返操作以來已經執行之許多指令之當前計數的輸入。替代地或另外地,一或多個輸入510可包括識別等待全域觀察之記憶體存取請求之當前數量的輸入及/或識別是否任何中斷當前為未決的輸入。
在一實施例中,一或多個臨界值510可進一步包 括各種臨界值-例如包括已經執行之指令之最大臨界數量及/或等待全域觀察之記憶體請求之最小臨界數量。圖5展示之具體輸入510僅僅例示根據一實施例之一種情況。然而,根據不同實施例,電路500可接收多種一或多個額外或替代輸入中之任一者。
評估偶然確定命令之一或多個條件可包括各自 不同地提供至電路500之更多邏輯元件520中之相應者的一或多個輸入510。作為說明而非限制地,邏輯元件520可包括判定是否自從最近確定操作或轉返操作以來執行之指令之輸入數量已經超過某個最大臨界數量的電路。替代地或另外地,邏輯元件520可判定是否等待全域觀察之記憶體請求之輸入當前數量低於某個最小臨界數量。替代地或另外地,邏輯元件520可判定是否任何中斷當前為未決的。
在電路500之例示性情況中,以上描述之判定的 相應結果可進一步由邏輯元件520來加以操作-例如其中相應結果彼此進行OR運算。然而,邏輯元件520之具體評估操作僅僅例示根據一實施例之一種情況。根據不同實施 例,電路500可執行一或多個額外或替代評估操作之各種組合中之任一者。
基於對於該組一或多個輸入510執行之邏輯操 作,邏輯元件520可產生信號530,該信號指示是否當前處理器狀態滿足偶然執行確定操作之一個更多個條件。信號530可識別或以其他方式提供用於識別將要執行確定操作之基礎。舉例而言,信號530可與確定指令之提示位元被設定成指示偶然確定命令的指示540進行邏輯AND運算。基於信號530及指示540,可產生導致執行確定指令中指示之確定操作的輸出550。
操作處理器之技術及架構在本文中予以描述。在 以上描述中,為了解釋目的,闡明許多具體細節以便提供某些實施例之全面瞭解。然而,熟習此項技術者顯而易知某些實施例可在沒有此等具體細節的情況下來實施。在其他情況下,結構及裝置以方塊圖形式來展示以便避免使描述模糊。
在本說明書中提及「一個實施例」或「一實施例」 意味結合實施例描述之具體功能部件、結構或特徵包括於本發明之至少一實施例中。在本說明書中之不同位置出現之片語「在一實施例中」不一定都涉及同一實施例。
本文詳細說明的一些部分藉由對於電腦記憶體 內的資料位元之操作的演算法及符號表示法來呈現。此等算法描述及表示為熟習計算領域技術者向熟習此項技術者最有效地傳達其工作之實質內容的手段。演算法在本文並 且一般地被理解為產生所需結果的一系列有條理之步驟。該等步驟為需要對物理量進行物理操作的該等步驟。此等量通常但不一定採取能夠被儲存、傳輸、組合、比較並且以其他方式操作的電或磁信號之形式。已經證明有時主要出於慣用法之原因將此等信號稱為位元、值、元件、符號、字元、用詞、數值等為便利的。
然而應當牢記所有此等並且類似的用詞與適當 的物理量相關聯並且僅為適用於此等量之便利的標記。除非在本文之討論中顯然另有具體說明,否則應瞭解在本說明中,使用例如「處理」或「計算」或「判定」或「顯示」等之用詞的討論涉及電腦系統或類似電子計算裝置的操作及過程,該裝置對以電腦系統之暫存器及記憶體內的物理(電子)量形式表示的資料進行操作並且轉化為類似地以電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸或顯示裝置內的物理量形式來表示的其他資料。
某些實施例亦涉及用於執行本文中之操作的裝 置。此裝置可專門地構造以便用於所需之目的,或者其可包括由電腦中儲存的電腦程式選擇性啟動或重新組配的通用電腦。此電腦程式可儲存於電腦可讀儲存媒體中,例如但是不限於任何類型之碟片,包括軟碟、光碟、CD-ROMs及磁光碟、唯讀記憶體(ROMs)、隨機存取記憶體(RAMs)例如動態RAM(DRAM)、EPROMs、EEPROMs、磁性或光學卡,或適合於儲存電子指令,並且耦接至電腦系統匯流排之任何類型之媒體。
本文呈現之演算法及顯示並非固有地與任何具 體電腦或其他裝置相關聯。各種通用系統可與根據本文之教示之程式一起使用,或建構更專門裝置以便執行所需方法步驟可被證明為便利的。根據本文之描述,各種此等系統之所需結構為顯然的。另外,某些實施例未參照任何具體程式設計語言來描述。應認識到各種程式設計語言可用於實施如本文描述之此等實施例的教示。
除了本文描述的以外,可對於所揭示的實施例及其實行方案進行各種修改而不背離其範圍。因此,本文之說明及實施例應理解為例示性的,並且不具有限制性意義。本發明範圍應僅參考以下申請專利範圍來量測。
400‧‧‧確定指令
410‧‧‧命令欄位
420‧‧‧提示欄位

Claims (30)

  1. 一種用於處理器之方法,該方法包含:偵測指示一確定操作之一確定指令;響應於該偵測,判定是否該確定指令係用於偶然執行該確定操作;以及基於該判定,產生信號,該信號指示是否將去評估一或多個條件以便判定是否將去執行該確定操作。
  2. 如申請專利範圍第1項之方法,其中判定是否該確定指令係用於偶然執行該確定操作是基於該命令指令之一命令偶然性參數的值。
  3. 如申請專利範圍第1項之方法,其中判定是否該確定指令係用於偶然執行該確定操作是基於該確定指令之一命令欄位,該欄位指示偶然執行確定操作所特有的一確定指令類型。
  4. 如申請專利範圍第1項之方法,其中該確定指令包括一命令欄位,該欄位包括指示該確定指令之一指令類型的資訊,其中判定是否該確定指令係用於偶然執行該確定操作包括識別是否該確定指令進一步包括一命令偶然性參數。
  5. 如申請專利範圍第1項之方法,其中該確定指令被判定為係用於偶然執行該確定操作,該方法進一步包括:評估該一或多個條件以便識別是否將去執行該確定操作,其中該一或多個條件包括與該處理器所接收的 該確定指令無關的處理器狀態。
  6. 如申請專利範圍第5項之方法,其中評估該一或多個條件係基於自從在偵測該確定指令之前的事件以來所執行的許多指令之計數。
  7. 如申請專利範圍第6項之方法,其中該事件包括一個或確定操作及轉返操作。
  8. 如申請專利範圍第5項之方法,其中評估該一或多個條件係基於該處理器中等待全域觀察之許多記憶體請求的計數。
  9. 如申請專利範圍第5項之方法,其中評估該一或多個條件係基於許多未決的中斷。
  10. 如申請專利範圍第1項之方法,其中該確定指令具有為絕對執行確定操作指令及偶然執行確定操作所通用的確定指令類型。
  11. 如申請專利範圍第10項之方法,其中,根據該處理器之組配資訊,在沒有任何指令之命令偶然性參數指定該指令代表絕對確定命令時,該確定指令類型之該指令被推定為代表偶然確定命令。
  12. 如申請專利範圍第10項之方法,其中,根據該處理器之組配資訊,在沒有任何指令之命令偶然性參數指定該指令代表偶然確定命令時,該確定指令類型之該指令被推定為代表絕對確定命令。
  13. 一種處理器,其包含:一指令集; 一解碼器,其包括電路邏輯,該電路邏輯用於偵測指示確定操作之確定指令並且根據該指令集來解碼該確定指令;及一執行單元,該執行單元用於執行經解碼的該確定指令;其中該解碼器及該執行單元用於判定是否該確定指令係用於偶然執行該確定操作,並且其中該解碼器及該執行單元基於該判定來產生信號,該信號指示是否將去評估一或多個條件以便判定是否將執行該確定操作。
  14. 如申請專利範圍第13項之處理器,其中該解碼器及該執行單元判定是否該確定指令係用於偶然執行該確定操作是基於該命令指令之命令偶然性參數的值。
  15. 如申請專利範圍第13項之處理器,其中該處理器及該執行單元判定是否該確定指令係用於偶然執行該確定操作是基於該確定指令之命令欄位,該欄位指示偶然執行確定操作所特有的一確定指令類型。
  16. 如申請專利範圍第13項之處理器,其中該確定指令包括一命令欄位,該欄位包括指示該確定指令之指令類型的資訊,其中該解碼器及該執行單元判定是否該確定指令是用於偶然執行該確定操作包括識別是否該確定指令進一步包括命令偶然性參數。
  17. 如申請專利範圍第13項之處理器,其中該解碼器及該執行單元進一步評估該一或多個條件以便識別是否將去執行該確定操作,其中該一或多個條件包括與該處理器 所接收的該確定指令無關的處理器狀態。
  18. 如申請專利範圍第17項之方法,其中評估該一或多個條件係基於自從在偵測該確定指令之前的事件以來所執行的許多指令之計數。
  19. 如申請專利範圍第18項之方法,其中該事件包括一個或確定操作及轉返操作。
  20. 如申請專利範圍第17項之方法,其中評估該一或多個條件係基於該處理器中等待全域觀察之許多記憶體請求的計數。
  21. 如申請專利範圍第17項之方法,其中評估該一或多個條件係基於許多未決的中斷。
  22. 如申請專利範圍第13項之處理器,其中該確定指令具有為絕對執行確定操作指令及偶然執行確定操作所通用的確定指令類型。
  23. 如申請專利範圍第22項之處理器,其中,根據該處理器之組配資訊,在沒有任何指令之命令偶然性參數指定該指令代表絕對確定命令時,該確定指令類型之該指令被推定為代表偶然確定命令。
  24. 如申請專利範圍第22項之處理器,其中,根據該處理器之組配資訊,在沒有任何指令之命令偶然性參數指定該指令代表偶然確定命令時,該確定指令類型之該指令被推定為代表絕對確定命令。
  25. 一種電腦平台,其包含:一記憶體; 耦接至該記憶體之一處理器,該處理器包括:一指令集;耦接的一解碼器,其包括電路邏輯,該電路邏輯用於偵測指示確定操作之確定指令並且根據該指令集來解碼該確定指令;及一執行單元,該執行單元用於執行經解碼的該確定指令;其中該解碼器及該執行單元用於判定是否該確定指令係用於偶然執行該確定操作,並且其中該解碼器及該執行單元基於該判定來產生信號,該信號指示是否將去評估一或多個條件以便判定是否將執行該確定操作;以及用於將該電腦平台耦接至網路的一網路介面。
  26. 如申請專利範圍第25項之電腦平台,其中該解碼器及該執行單元判定是否該確定指令係用於偶然執行該確定操作是基於該命令指令之命令偶然性參數的值。
  27. 如申請專利範圍第25項之電腦平台,其中該處理器及該執行單元判定是否該確定指令係用於偶然執行該確定操作是基於該確定指令之命令欄位,該欄位指示偶然執行確定操作所特有的確定指令類型。
  28. 如申請專利範圍第25項之電腦平台,其中該確定指令包括命令欄位,該欄位包括指示該確定指令之指令類型的資訊,其中該解碼器及該執行單元判定是否該確定指令係用於偶然執行該確定操作包括識別是否該確定指令 進一步包括命令偶然性參數。
  29. 如申請專利範圍第25項之電腦平台,其中該解碼器及該執行單元進一步評估該一或多個條件以便識別是否將去執行該確定操作,其中該一或多個條件包括與該處理器所接收的該確定指令無關的處理器狀態。
  30. 如申請專利範圍第29項之方法,其中評估該一或多個條件係基於自從在偵測該確定指令之前的事件以來所執行的許多指令之計數。
TW101146372A 2011-12-22 2012-12-10 用於選擇性執行確定指令的方法、裝置及系統 TWI485621B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067021 WO2013095569A1 (en) 2011-12-22 2011-12-22 Method, apparatus and system for selective execution of a commit instruction

Publications (2)

Publication Number Publication Date
TW201337741A TW201337741A (zh) 2013-09-16
TWI485621B true TWI485621B (zh) 2015-05-21

Family

ID=48669210

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101146372A TWI485621B (zh) 2011-12-22 2012-12-10 用於選擇性執行確定指令的方法、裝置及系統

Country Status (4)

Country Link
US (1) US20140156976A1 (zh)
CN (1) CN104011669B (zh)
TW (1) TWI485621B (zh)
WO (1) WO2013095569A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI822333B (zh) * 2022-05-20 2023-11-11 采鈺科技股份有限公司 影像感測器

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387158B2 (en) * 2014-12-24 2019-08-20 Intel Corporation Systems, apparatuses, and methods for data speculation execution
US20160283247A1 (en) * 2015-03-25 2016-09-29 Intel Corporation Apparatuses and methods to selectively execute a commit instruction
US10235219B2 (en) * 2015-07-27 2019-03-19 Sony Interactive Entertainment America Llc Backward compatibility by algorithm matching, disabling features, or throttling performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761467A (en) * 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
TWI252429B (en) * 2003-09-30 2006-04-01 Mediatek Inc Method for enabling a branch-control system in a microcomputer apparatus
US20100023703A1 (en) * 2008-07-28 2010-01-28 Christie David S Hardware transactional memory support for protected and unprotected shared-memory accesses in a speculative section
TW201042540A (en) * 2009-05-20 2010-12-01 Via Tech Inc Microprocessor and instruction processing method

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3808013B2 (ja) * 2002-07-05 2006-08-09 富士通株式会社 命令実行装置
US8549504B2 (en) * 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761467A (en) * 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
TWI252429B (en) * 2003-09-30 2006-04-01 Mediatek Inc Method for enabling a branch-control system in a microcomputer apparatus
US20100023703A1 (en) * 2008-07-28 2010-01-28 Christie David S Hardware transactional memory support for protected and unprotected shared-memory accesses in a speculative section
TW201042540A (en) * 2009-05-20 2010-12-01 Via Tech Inc Microprocessor and instruction processing method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI822333B (zh) * 2022-05-20 2023-11-11 采鈺科技股份有限公司 影像感測器

Also Published As

Publication number Publication date
US20140156976A1 (en) 2014-06-05
CN104011669B (zh) 2017-12-12
TW201337741A (zh) 2013-09-16
WO2013095569A1 (en) 2013-06-27
CN104011669A (zh) 2014-08-27

Similar Documents

Publication Publication Date Title
US9280448B2 (en) Controlling operation of a run-time instrumentation facility from a lesser-privileged state
JP6058020B2 (ja) トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリングを実現するためのコンピュータ・プログラム・プロダクト、方法、およびシステム(トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリング)
KR101589857B1 (ko) 런-타임 계측 리포팅
US9946549B2 (en) Register renaming in block-based instruction set architecture
JP6153533B2 (ja) ランタイム・インストルメンテーション指向サンプリング
US8489866B2 (en) Branch trace history compression
US10867031B2 (en) Marking valid return targets
TWI485621B (zh) 用於選擇性執行確定指令的方法、裝置及系統
US20130246754A1 (en) Run-time instrumentation indirect sampling by address
US20130047050A1 (en) Correction apparatus, correction method, and computer product
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
US11907724B2 (en) In-memory trace with overlapping processing and logout
US20130246747A1 (en) Run-time-instrumentation controls emit instruction
US20160092232A1 (en) Propagating constant values using a computed constants table, and related apparatuses and methods

Legal Events

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