TW201712533A - 經解耦的處理器指令窗及運算元緩衝區 - Google Patents

經解耦的處理器指令窗及運算元緩衝區 Download PDF

Info

Publication number
TW201712533A
TW201712533A TW105117721A TW105117721A TW201712533A TW 201712533 A TW201712533 A TW 201712533A TW 105117721 A TW105117721 A TW 105117721A TW 105117721 A TW105117721 A TW 105117721A TW 201712533 A TW201712533 A TW 201712533A
Authority
TW
Taiwan
Prior art keywords
instruction
block
instruction block
window
resources
Prior art date
Application number
TW105117721A
Other languages
English (en)
Inventor
道格拉斯C 伯格
亞倫 史密斯
詹 葛瑞
Original Assignee
微軟技術授權有限責任公司
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 微軟技術授權有限責任公司 filed Critical 微軟技術授權有限責任公司
Publication of TW201712533A publication Critical patent/TW201712533A/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, 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order 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, 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
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

一基於指令區塊之微架構中的一處理器核心經配置,以便一指令窗及運算元緩衝區被解耦以供獨立操作,其中該區塊中的指令不依賴於該等運算元緩衝區中所維護的資源(例如控制位元及運算元)。反而,在該區塊中的指令及該等資源之間建立指標,以便可藉由跟隨該等指標針對一經刷新的指令區塊(亦即在不從一指令快取記憶體重新提取指令區塊的情況下被重新使用的該指令區塊)建立控制狀態。如此地從該運算元空間解耦該指令窗可提供更大的處理器效率,特別是在利用刷新的多核心陣列中(例如在執行使用緊密迴圈的程式碼時),因為運算元及控制位元被預先驗證了。

Description

經解耦的處理器指令窗及運算元緩衝區
此發明關於經解耦的處理器指令窗及運算元緩衝區。
指令集架構(ISA)及處理器的設計者在功率及效能之間作取捨。例如,若設計者選擇具有供應較高效能之指令的ISA,則由處理器消耗的功率可能亦較高。或者,若設計者選擇具有消耗較低功率之指令的ISA,則效能可能較低。功率消耗可依賴於在執行期間由指令所使用之處理器的硬體資源量(例如算術邏輯單元(ALU)、快取列或暫存器)。使用大量的此類硬體資源可以較高的功率消耗為代價而供應較高的效能。或者,使用小量的此類硬體資源可以較低的效能為代價而造成較低的功率消耗。編譯器可用以將高階代碼編譯成與ISA及處理器架構相容的指令。
一基於指令區塊之微架構中的一處理器核心經配置,以便一指令窗及運算元緩衝區被解耦以供獨立操作,其中該區塊中的指令不嚴格依賴於該等運算元緩衝區中所維護的資源(例如控制位元及運算元)。反而,在該區塊中的指令及該等資源之間建立指標,以便可藉由跟隨該等指標針對一經刷新的指令區塊(亦即在不從一指令快取記憶體重新提取指令區塊的情況下被重新使用的該指令區塊)建立控制狀態。如此地從該運算元空間解耦該指令窗可提供更大的處理器效率,特別是在利用刷新的多核心陣列中(例如在執行使用緊密迴圈的程式碼時),因為運算元及控制位元被預先驗證了。
提供此發明內容以使用簡化形式來介紹一系列的概念,該等概念係在實施方式中於以下進一步描述。此發明內容係不意欲識別申請之標的之關鍵特徵或必要特徵,亦非意欲用作預測申請之標的之範圍的輔助。此外,所申請的標的係不限於解決在此揭示案之任何部分中所指出之任何或所有缺點之實施方式。
圖1圖示說明性計算環境100,本指令區塊之基於使用年齡(age-based)的管理可用於該計算環境100。該環境包括編譯器105,該編譯器105可用以從程式115產生經編碼的機器可執行指令100。指令110可由處理器架構120處置,該處理器架構120配置為處理例如包含4及128個指令間之可變大小的指令區塊。
處理器架構120一般包括覆瓦狀配置(tiled configuration)下的多個處理器核心(代表性地由參考標號125指示),該等處理器核心由晶片上網路(未圖示)所互連,且更與一或更多個2級(L2)快取記憶體(代表性地由參考標號130所指示)相互操作。雖然核心及快取的數量及配置可隨實施方式而變化,應注意的是,實體核心可在程式115的運行時間期間在稱為「構成」的程序中合併在一起而成為一或更多個較大的邏輯處理器,該邏輯處理器可允許向程式的執行施用更多的處理功率。替代性地,在程式執行支援合適的執行緒級平行化(parallelism)時,核心125可在稱為「解構」的程序中分裂以獨立工作及執行來自獨立執行緒的指令。
圖2為說明性處理器核心125之一部分的簡化方塊圖。如圖所示,處理器核心125可包括前端控制單元202、指令快取記憶體204、分支預測器206、指令解碼器208、指令窗(instruction window)210、左運算元緩衝區212、右運算元緩衝區214、算術邏輯單元(ALU)216、另一ALU 218、暫存器220及加載/儲存佇列222。在某些情況下,匯流排(由箭頭所指示)可承載資料及指令,同時在其他情況下,匯流排可承載資料(例如運算元)或控制訊號。例如,前端控制單元202可透過僅承載控制訊號的匯流排與其他控制網路通訊。雖然圖2針對以特定佈置來佈置的處理器核心125圖示某數量的說明性元件,取決於特定實施方式的需要,可存在不同地佈置的更多或更少的元件。
前端控制單元202可包括電路系統,該電路系統配置為控制通過處理器核心及電路系統的資訊流以協調其內的活動。前端控制單元202亦可包括電路系統以實施有限態機器(FSM),其中狀態列舉處理器核心可能採取之操作配置中的各者。使用運算碼(如下所述)及/或其他輸入(例如硬體級訊號),前端控制單元202中的FSM電路可決定下個狀態及控制輸出。
據此,前端控制單元202可從指令快取記憶體204提取指令以供指令解碼器208處理。前端控制單元202可在控制網路或匯流排上與處理器核心125的其他部分交換控制資訊。例如,前端控制單元可與後端控制單元224交換控制資訊。前端及後端控制單元可在某些實施方式中整合成單一控制單元。
前端控制單元202亦可協調及管理處理器架構120(圖1)之各核心及其他部件的控制。據此,例如,指令區塊可同時執行於多個核心上,且前端控制單元202可與其他核心透過控制網路交換控制資訊以依所需確保同步化,以供執行各種指令區塊。
前端控制單元202可更處理關於被自動執行之指令區塊的控制資訊及元資訊(meta-information)。例如,前端控制單元202可處理與指令區塊相關聯的區塊標題。如以下更詳細討論的,區塊標題可包括關於指令區塊的控制資訊及/或元資訊。據此,前端控制單元202可包括組合邏輯、狀態機及暫時儲存單元(例如正反器),以處理區塊標題中的各欄位。
前端控制單元202可每個時脈週期提取及解碼單一指令或多個指令。經解碼的指令可儲存在指令窗210中,該指令窗210在處理器核心硬體中實施為緩衝區。指令窗210可支援指令排程器230,在某些實施方式中,該指令排程器230可保持各經解碼指令之輸入(例如預測(predication)及運算元)的就緒狀態。例如,在所有其輸入(若有的話)皆就緒時,給定的指令可被指令排程器230喚醒且準備好被發出。
在指令被發出之前,由指令需要的任何運算元可依需要儲存在左運算元緩衝區212及/或右運算元緩衝區214中。取決於指令的運算碼,可使用ALU 216及/或ALU 218或其他功能單元在運算元上執行運算。ALU的輸出可儲存於運算元緩衝區中或儲存在一或更多個暫存器220中。以資料流順序發出的儲存操作可被排入加載/儲存佇列222中,直到指令區塊提交(commit)為止。在指令區塊提交時,加載/儲存佇列222可將經提交區塊的貯存內容寫入記憶體。分支預測器206可處理關於分支出口類型(exit type)的區塊標題資訊且在作出分支預測時考慮該資訊。
如上所述,處理器架構120一般利用在被自動提取、執行及提交之區塊中所組織的指令。因此,處理器核心可以基元(atomic)方式提取集體屬於單一區塊的指令、將它們映射至處理器核心中的執行資源、執行該等指令及提交它們的結果。處理器可提交所有指令的結果或廢棄整個區塊的執行。區塊中的指令可以資料流順序執行。此外,處理器可容許區塊中的指令使用信息或其他合適形式的通訊來彼此直接通訊。因此,與其將結果寫入暫存檔,產生結果的指令可向區塊中消耗該結果的另一指令傳遞該結果。作為一示例,添加儲存於暫存器R1及R2之值的指令可如以下表格1所示地表達: 表格1
以此方式,不以該指令指定來源運算元,反而該等來源運算元由指向ADD指令的指令所指定。編譯器105(圖1)可在編譯指令110期間明確地編碼控制及資料相依性,以藉此使處理器核心免於在運行時間重新發現這些相依性。這可有利地在執行這些指令期間造成減少的處理器負擔及能源的節約。作為一示例,編譯器可使用預測以將所有控制相依性轉換成資料流指令。使用這些技術,可減少高耗電暫存檔的存取次數。以下的表格2圖示用於此類指令之一般指令格式的示例: 表格2
各指令可具有合適的大小,例如32位元、64位元或另一大小。在表格2中所示的示例中,各指令可包括OPCODE欄位、PR(預測)欄位、BID(廣播ID)欄位、XOP(經延伸的OPCODE)欄位、TARGET1欄位及TARGET2欄位。OPCODE欄位可針對指令或指令區塊指定獨一的運算碼,例如加、讀取、寫入或乘。PR(預測)欄位可指定與指令相關聯的任何預測。例如,二位元的PR欄位可如以下使用:00 - 未預測,01 - 被保留,10 - 基於假而預測,及11 - 基於真來預測。因此,例如,若指令僅在比較結果為真時才執行,則該指令可基於執行該比較的另一指令的結果來被預測。BID(廣播ID)欄位可支援向區塊中任何數量的消耗者指令(consumer instruction)發送運算元。2位元BID欄位可用以編碼廣播通道,指令在該廣播通道上接收其運算元中的一者。XOP(經延伸的OPCODE)欄位可支援延伸運算碼的類型。TARGET1及TARGET2欄位可允許編碼高達兩個目標指令。目標欄位可指定生產者指令(producer instruction)之結果的消耗者指令,因此容許在指令之間進行直接通訊。
各指令區塊可具有與指令區塊相關聯的某些資訊,例如關於該區塊的控制資訊及/或元資訊。此資訊可在將程式編譯成指令110以供在處理器架構120上執行的期間由編譯器105所產生。某些的這些資訊可在編譯指令區塊期間被編譯器抽取且接著在運行時間期間檢驗指令的本質。
此外,與指令區塊相關聯的資訊可為元資訊。例如,這樣的資訊可使用特殊指令或提供目標編碼的指令來提供至處理器核心,該目標編碼關於可具有與指令區塊相關聯之相關資訊的暫存器或其他記憶體。在特殊指令的情況下,此類指令的運算碼欄位可用以傳遞關於指令區塊的資訊。在另一示例中,此類資訊可被維持為處理器狀態字(PSW)的部分。例如,此資訊可有利地幫助處理器更有效率地執行指令區塊。
各種類型的資訊可使用區塊標題、特殊指令、參照記憶體的位置、處理器狀態字或其各種組合來提供至處理器核心。說明性的指令區塊標題300圖示於圖3中。在此說明性示例中,區塊標題300為128位元,且從區塊的程式計數器開始於偏移0。亦圖示各欄位的各別的開始及結束。該等欄位於以下描述於表格3中: 表格3
雖然圖3中所示及表格3中所述的區塊標題包括多個欄位,其欲為說明性的,且可針對特定實施方式利用其他欄位佈置。
在一說明性示例中,編譯器105(圖1)可選擇資訊以供包括在區塊標題中或針對特殊指令選擇資訊,該特殊指令可基於指令的本質及/或基於處理需求(例如高效能或低功率)的本質向處理器核心提供此類資訊。這可有利地允許更佳地平衡效能及功率消耗之間的取捨。對於某些類型的處理應用(例如以大量核心進行高效能計算),大量的資訊可為理想的選項。替代性地,對於其他類型的處理應用(例如用於物聯網、行動裝置、可穿戴式裝置、頭戴顯示(HMD)裝置中的嵌入式處理器或其他嵌入式計算類型的應用),較少的資訊可為理想的選項。
使用區塊標題或特殊指令來傳遞之資訊的規模可取決於區塊中之指令的本質而量身定制。例如,若指令區塊包括以再現(recurring)方式執行的迴圈,則可能需要更廣泛的資訊來封裝與該區塊相關聯的控制資訊。額外控制資訊可允許處理器核心更有效率地執行迴圈以藉此改良效能。
替代性地,若存在將極少執行的指令區塊,則相對少的資訊可能就夠了。例如,若指令區塊包括若干經預測的控制迴圈,則可能需要更多資訊。類似地,若指令區塊具有大量的指令等級平行化,則可能需要更多資訊作為區塊標題或特殊指令的部分。
例如,可使用區塊標題或特殊指令中的額外控制資訊,以在指令區塊中有效地利用指令等級平行化。若指令區塊包括若干分支預測,則可能需要更多資訊。關於分支預測的額外控制資訊一般將更有效率地強化代碼的執行,因為其可造成更少的管道平齊(pipeline flush)。
應注意的是,相對應於區塊標題中之欄位的機能可被組合或更一步分離。類似地,特殊指令可提供關於圖3及表格3中所示之欄位中之任一者的資訊,或其可從這樣的欄位組合資訊。例如,雖然圖3及表格3的說明性區塊標題包括單獨的ID欄位及SIZE欄位,這兩個欄位可組合成單一欄位。
同樣地,單一特殊指令在被解碼時可提供關於指令區塊之大小的資訊及ID欄位中的資訊。除非原本指示,否則特殊指令可被包括在指令區塊中的任何一處。例如,BLOCK_SIZE #size指令可包含包括指令區塊之大小值的中間欄位。中間欄位可包含提供大小資訊的整數值。替代性地,中間欄位可包括關於大小資訊的經編碼值,以便可藉由解碼經編碼值(例如藉由在大小表格中尋找可能使用邏輯、暫存器、記憶體或代碼串流中的一者來表達的值)來獲取大小資訊。在另一示例中,BLOCK_ID #id特殊指令可傳達區塊ID號碼。
單獨的數學函數或基於記憶體的表格可將區塊ID映射進區塊標題的記憶體位址。被傳達為此指令的區塊ID相對於各指令區塊可為獨一的。在另一示例中,BLOCK_HDR_ID #id指令可傳達區塊標題ID號碼。單獨的數學函數或基於記憶體的表格可將區塊ID映射進區塊標題的記憶體位址。被傳達為此指令之部分的區塊ID可由具有相同標題結構或欄位的若干指令區塊共享。
在另一示例中,BLOCK_INFO #size、#exit types、#store mask、#write mask指令可提供關於經列舉之指令欄位的資訊。這些欄位可相對應於以上針對表格3所討論之欄位中的任一者。可依據給定實施方式的需求對於區塊標題結構及格式及特殊指令作出其他改變。例如,額外欄位可被提供為包括關於指令區塊特性的資訊。可基於指令區塊的執行頻率來包括特定欄位。
包括在區塊標題結構中的欄位或透過特殊指令或先前所討論之其他機制所提供的資訊可為特定處理器或處理器家族之可公開取得的標準指令集架構(ISA)的部分。欄位的子集合可為ISA的專屬延伸。欄位中的某些位元值可為用於處理器之標準ISA的部分,但欄位中的某些其他位元值可提供專屬機能。此示例性欄位可允許ISA設計者在不完全揭露與專屬延伸相關聯之本質及機能的情況下對ISA添加專屬延伸。因此,在此情況中,由ISA設計者所發佈的編譯器工具會支援欄位中的專屬位元值、完全單獨的專屬欄位或特殊指令。使用這樣的欄位可具體關聯於專屬於某些處理器設計的硬體加速器。因此,程式可包括不可辨識的區塊標題欄位或特殊指令;但該程式可更包括程式庫(recipe)以解密該欄位或解碼該指令。
編譯器105(圖1)可處理指令區塊(該指令區塊一般配置為由一或更多個處理器核心自動執行),以產生關於指令區塊之資訊(包括元資訊及控制資訊)。可僅針對一個ISA(例如同用於物聯網、行動裝置、HMD裝置、可穿戴式裝置或其他嵌入式計算環境的處理器使用的ISA)編譯某些程式。編譯器可採用例如為靜態代碼分析或代碼概況分析的技術,以產生關聯於指令區塊資訊。在某些情況下,編譯器可考慮例如為指令區塊的特性及其執行頻率的因素。指令區塊的相關特性例如可包括(但不一定限於):(1)指令等級平行化、(2)迴圈數量、(3)經預測之控制指令的數量及(4)分支預測的數量。
圖4為用於管理安置於處理器核心中之指令窗中之指令區塊之說明性方法400的流程圖。除非特別聲明,圖4中之方法或步驟及繪圖中所示及以下所述之其他流程圖中的那些方法或步驟係不受限於特定的順序或序列。此外,某些方法或其步驟可同時發生或被執行,且取決於給定實施方式的需求,並非所有的方法或步驟都必須在如此的實施中被執行,且可以可選地利用某些方法或步驟。同樣地,可在某些實施方式中消除某些步驟,以減少管理負擔(overhead),但這例如可能造成脆性(brittleness)增加。可在任何給定的應用中所實施的各種特徵、成本、管理負擔、效能及強固性的取捨一般可視為設計選擇的問題。
在步驟405中,例如使用使用年齡向量來明確地追蹤經提取之指令區塊的使用年齡。因此,與其使用指令窗中的指令區塊順序(亦即位置)(該順序一般用以隱含地追蹤使用年齡),控制單元維持明確的狀態。在步驟410中維護以使用年齡排序的指令區塊清單。亦可追蹤指令區塊優先度(其中在某些情況下可由編譯器決定優先度),且亦可在某些實施方式中維護以優先度排序的指令區塊清單。
在步驟415中,在識別指令區塊以供處置時,搜尋以使用年齡排序的清單以尋找匹配的指令區塊。在某些實施方式中亦可在優先度排序的清單中搜尋匹配。在步驟420中,若找到匹配的指令區塊,則可在不從指令快取記憶體重新提取該指令區塊的情況下,刷新該指令區塊,這可改良處理器核心的效率。這樣的刷新允許例如在程式在緊密迴圈中執行且指令分支而回到它們本身的情況時重新使用指令區塊。亦可在多個處理器核心組合成大型陣列時加劇這樣的效率增加。在刷新指令區塊時,指令被留在原位,且只有運算元緩衝區及加載/儲存佇列中的有效位元被清除。
若未找到對於指令區塊的匹配,則以使用年齡排序的清單(或以優先度排序的清單)可再次用以尋找一指令區塊,該指令區塊可被提交以針對新的指令區塊開啟指令窗中的槽。例如,可提交最舊的指令區塊或最低優先度的指令區塊(其中可能想要高優先度的區塊保持被緩衝,因為存在其日後重新使用的可能性)。在步驟425中,新的指令區塊被映射進可用的槽。可使用批量分配程序來分配指令區塊,其中區塊中的指令及與該等指令相關聯的所有資源被一次(例如集體)提取。
在步驟430中,執行新的指令區塊,以便其指令被自動提交。在步驟435中,可以類似於傳統重新排序緩衝區的方式以使用年齡的順序執行其他指令區塊,以使用基元方式提交它們各別的指令。
圖5為說明性方法500的流程圖,可由基於指令區塊的微架構來執行該方法500。在步驟505中,處理器核心中的控制單元使得經提取的指令區塊以相連的替換(contiguous replacement)或非相連的替換被緩衝。在步驟510中,使用相連的指令區塊替換,緩衝區可像是循環緩衝區一樣地操作。在步驟515中,使用非相連的指令區塊替換,可不按順序替換指令區塊。例如,在步驟520中,以如上所述的類似方式,可執行明確之基於使用年齡的追蹤,以便基於經追蹤的使用年齡來提交及替換指令區塊。亦可追蹤優先度,且經追蹤的優先度可用以在步驟525中提交及替換指令區塊。
圖6為說明性方法600的流程圖,該方法600可由安置於處理器核心中的控制單元執行。在步驟605中,追蹤經緩衝之指令區塊的狀態,且在步驟610中使用經追蹤狀態來維護指令區塊清單。例如,取決於特定實施需求,狀態可包括使用年齡、優先度或其他資訊或上下文。在步驟615中,在識別指令區塊以供映射時,檢查該清單是否有匹配,如步驟620中所示。在步驟625中,在不重新提取的情況下刷新來自清單的匹配指令區塊。以如上所述的類似方式,在步驟630中,在未在清單中找到匹配的指令區塊時,則從指令快取記憶體提取指令區塊,且將指令區塊映射進指令窗中的可用槽。
圖7為用於管理安置於處理器核心中之指令窗中之指令區塊之說明性方法700的流程圖。在步驟705中,在處理器核心中維護指令區塊大小的大小表。可以各種方式表達大小表,例如使用邏輯、暫存器、記憶體、代碼串流或其他合適構造中的一者來表達。在步驟710中,讀取編碼於指令區塊之標題中的索引。指令區塊包括一或更多個經解碼的指令。據此,與其使用圖3及表格3中所示的SIZE欄位來硬編碼指令區塊大小,該欄位可用以編碼或儲存對大小表格的索引。亦即,索引可充當指向大小窗中之表值的指標,以允許特定大小與指令區塊相關聯。
包括在大小表中之大小表值的數量可隨實施方式而變化。較大的大小表值數量可用以允許更多精細度,這在存在與給定程式相關聯之相對廣的指令區塊大小分佈的情況下可為有益的,但是以在一般實施方式中增加管理負擔為代價。在某些情況下,包括在表格中之大小的數量可由編譯器所選擇,以使用一方式來涵蓋指令區塊大小的特定分佈,該方式最佳化整體指令封裝密度且最小化無操作(no ops)。例如,包括在大小表中的大小可選擇為在程式中匹配共同使用的區塊指令大小。在步驟715中,索引用以從大小表尋找指令區塊大小。在步驟720中,指令區塊基於其大小被映射進指令窗中的可用槽。
在某些實施方式中,如步驟725中所示,指令窗可被分段成二或更多個子窗,例如使用二或更多個不同大小的二或更多個子窗。經分段之子窗中的此變化可允許針對給定的指令區塊大小的分佈進一步地調適,且可進一步增加指令封裝密度。亦可在某些情境下動態執行分段。
圖8為說明性方法800的流程圖,可由基於指令區塊的微架構來執行該方法500。在步驟805中,實施大小表。如上所討論的,可使用邏輯、暫存器、記憶體、代碼串流或其他合適構造中的一者來實施大小表,且大小表可包括相對應於由給定程式所利用之指令區塊分佈中通用的那些大小的大小。在步驟810中,針對參照至大小表中之表值的指標檢驗指令區塊標題。在步驟815中,由表值所識別的大小用以決定指令區塊在指令窗內的放置。
在步驟820中,批量分配與指令區塊相關聯的資源。在步驟825中,在映射指令窗中的指令區塊時使用指令區塊標題中所標定的限制條件。這些可例如包括對準上的限制條件及用以緩存指令區塊的指令窗容量。在步驟830中,指令窗中之指令區塊的順序被控制單元追蹤,且在某些情況下可不按順序提交區塊。例如,可優先化方塊,以便不按順序處置重度使用的或特別重要的指令區塊(這可增加處理效率),而不是使用循環的指令區塊緩衝區,在該循環的指令區塊緩衝區中,是基於指令窗中的方塊位置來處置方塊。
在步驟835中,可明確追蹤指令區塊的使用年齡,且在某些情況下可基於如此明確追蹤的使用年齡提交指令區塊。在步驟840中,刷新指令區塊(亦即,在不需要從指令快取記憶體重新提取指令區塊的情況下重新使用指令區塊)。
圖9為說明性方法900的流程圖 ,該方法900可由安置於處理器核心中的控制單元所執行。在步驟905中,指令窗被配置為具有多個區段,該多個區段以類似於上述的方式具有二或更多個不同大小。在步驟910中,檢驗區塊指令標題是否有編碼於區塊指令標題中的索引。在步驟915中,使用索引在大小表中執行尋找,而在步驟920中,基於大小尋找,指令區塊被放進適用於特定區塊大小的指令窗區段。在步驟925中,使用批量分配來提取與指令區塊相關聯的資源。
圖10為用於管理安置於處理器核心中之指令窗中之指令區塊之說明性方法1000的流程圖。在步驟1005中,指令區塊從指令快取記憶體映射進指令窗。指令區塊包括一或更多個經解碼的指令。在步驟1010中,分配與指令區塊中之指令中的各者相關聯的資源。資源一般包括控制位元及運算元,且可使用批量分配程序來執行分配,在批量分配程序中,集體獲取或提取所有資料。
不是緊密地耦合資源及指令,指令窗及運算元緩衝區被解耦,以便可藉由在資源及區塊中的經解碼指令間維持一或更多個指標,來獨立操作指令窗及運算元緩衝區,如步驟1015中所示。在步驟1020中刷新指令區塊(亦即在不需從指令快取記憶體重新提取指令區塊的情況下重新使用指令區塊)時,則在步驟1025中,可藉由跟隨指標回到原始控制狀態來重新使用資源。
這樣的解耦可提供增加的處理器核心效率,特別是在不如通常發生地重新提取的情況下刷新指令區塊時(例如在程式執行於緊密迴圈中且重複利用指令時)。藉由透過指標來建立控制狀態,資源在不額外消耗處理循環及其他成本的情況下被有效地預先驗證。亦可在多個處理器核心組成大型陣列時複合這樣的效率增加。
圖11為說明性方法1100的流程圖,該方法1100可由基於指令區塊的微架構所執行。在步驟1105中,以新的指令區塊替換所提交之指令區塊的方式將指令區塊映射進指令窗。映射可受制於指令區塊標題中所標定的各種限制條件,例如對準上的限制條件及用以緩存指令區塊的指令窗容量,如步驟1110中所指示。在步驟1115中,針對新的指令區塊分配資源,這一般使用批量分配程序來實施,如上所述。
在步驟1120中,指令窗中之指令區塊的順序被控制單元追蹤,且在某些情況下可不按順序提交區塊。例如,可優先化方塊,以便不按順序處置重度使用的或特別重要的指令區塊(這可增加處理效率),而不是使用循環的指令區塊緩衝區,在該循環的指令區塊緩衝區中,是基於指令窗中的方塊位置來處置方塊。
在步驟1125中,指令窗從運算元緩衝區解耦,以便例如指令區塊及運算元區塊被獨立管理(亦即在不使用指令及運算元之間之嚴格對應關係的情況下進行)。如上所述,解耦藉由在刷新指令區塊時允許預先驗證資源而增加效率。
圖12為說明性方法1200的流程圖 ,該方法900可由安置於處理器核心中的控制單元所執行。在步驟1205中,維護指令窗以供緩存一或更多個指令區塊。在步驟1210中,維護一或更多個運算元緩衝區,以供緩存與指令區塊中的指令相關聯的資源。如上所述,資源通常包括控制位元及運算元。在步驟1215中,使用指令及資源之間的指標來追蹤狀態。
在方塊1220中,在刷新指令區塊時,可跟隨指標回到經追蹤的狀態。在步驟1225中,在指令區塊提交時,清除運算元緩衝區中的控制位元且設定新的指標。在步驟1230中,與以上所討論的方法一樣,指令窗及運算元緩衝區被解耦,以便在非相對應的基礎上由控制單元維護指令區塊及運算元區塊。
圖13為用於管理安置於處理器核心中之指令窗中之指令區塊之說明性方法1300的流程圖。在步驟1305中,使用批量分配程序來分配指令區塊,其中區塊中的指令及與該等指令相關聯的所有資源被一次(例如集體)提取。相較於以較小的組集重複提取指令及資源的傳統架構,此處的批量分配允許同時及一貫地管理區塊中的所有指令,這可改良處理器核心操作的效率。此改良在給定的編程構造(例如最小化分支的一個編程構造)允許編譯器產生相對大的指令區塊的情況下可能甚至更顯著。例如,在某些實施方式中,指令區塊可包含高達128個指令。
批量分配指令區塊亦經由以下刷新特徵強化了處理器核心的效率:在不如一般發生地重新提取的情況下重新使用指令區塊(例如在程式在緊密迴圈中執行且指令分支而回到它們本身時)。亦可在多個處理器核心組成大型陣列時合成這樣的效率增加。在刷新指令區塊時,指令被留在原位,且只有運算元緩衝區及加載/儲存佇列中的有效位元被清除。這允許完全繞過經刷新之指令區塊的提取。
批量分配指令區塊亦在指令及資源的群組就位時允許額外的處理效率。例如,可從區塊中的一個指令發送運算元及明確的信息至另一個指令。在傳統架構中不允許這樣的機能,因為一個指令不能向另一指令發送還未要被分配的任何物。產生常數的指令亦可在運算元緩衝區中固定(pin)值,以便該等值在刷新之後維持有效,因此不需在指令區塊每次執行時重新產生該等值。
在步驟1310中,在指令區塊映射進指令窗時,在步驟1315中,該等指令區塊受制於可由映射策略所施用的限制、區塊標題中所標定的限制條件或兩者。在某些情況下,可取決於給定程式的特定需求而由編譯器設定策略。標定的限制條件例如可包括對準上的限制條件以及用以緩存指令區塊之指令窗容量上的限制條件。
在步驟1320中,在某些實施方式中,指令窗可被分段成相同大小或不同大小的子窗。因為指令區塊大小對於給定的程式而言通常是隨機或不均勻地分佈,經分段子窗中的如此變化可更有效率地調適給定的指令區塊大小分佈,以藉此增加指令窗中的指令封裝密度。取決於當前正由處理器核心處置的區塊大小分佈,在某些情境中,亦可動態執行分段。
在某些實施方式中,指令區塊標題可編碼索引或包括指向大小表的指標,該大小表是使用邏輯、暫存器、記憶體或代碼串流中的一者來實施的。在步驟1325中,大小表可包括指令區塊大小表值,以便可從表格尋找指令區塊大小。使用經編碼的索引及大小表可藉由在可用區塊大小中給予更多精細度來強化指令區塊中的指令封裝密度,以在區塊在實施分支時包括相對小數量的指令時減少無操作(no operations, nops)的發生,舉例而言。
圖14為說明性方法1400的流程圖,該方法1100可由基於指令區塊的微架構所執行。在步驟1405中,處理器核心中的控制單元施用用於處置指令區塊的策略。在步驟1410中,使用上述的批量分配程序來分配指令區塊,其中指令及所有相關聯的資源被一次提取。在步驟1415中,指令區塊被映射進指令窗,其中該映射可受制於各種限制條件,例如對準上的限制條件及用以緩存指令區塊之指令窗容量上的限制條件,該等限制條件被標定於指令區塊的標題中,如上所述。
在步驟1420中,可施用包括由控制單元追蹤指令窗中之指令區塊順序的策略。例如,在某些情況下,可不按順序提交區塊,而不是使用循環的指令區塊緩衝區,在該循環的指令區塊緩衝區中,是基於區塊在指令窗中的位置來處置區塊。在步驟1425中,可施用包括基於優先度(其在某些情境中可由編譯器所標定)來處置區塊的策略,以便不按順序處置重度使用或特別重要的區塊,這可進一步增加處理效率。
在步驟1430中,可施用包括明確追蹤指令區塊使用年齡的策略,且在某些情況下可基於如此明確追蹤的使用年齡提交指令區塊。在步驟1435中,可施用包括依據指令窗(或窗的區段)中經適當調整大小之槽的可用性來映射指令區塊的策略。在步驟1440中,可施用包括使用循環緩衝區將指令區塊映射進指令窗的策略。
在某些實施方式中,可利用各種策略組合,以進一步強化處理器核心效率。例如,控制單元可在策略之間動態切換,以施用針對給定指令區塊或指令區塊群組提供更佳之操作的策略。例如,在某些情境中,使用循環緩存技術可為更有效率的,其中以相連的方式按順序處置指令區塊。在其他情境中,不按順序及基於使用年齡的處置可提供更佳的操作。
圖15為說明性方法1500的流程圖 ,該方法900可由安置於處理器核心中的控制單元所執行。在步驟1505中,指令窗被配置為具有多個區段,該多個區段以類似於上述的方式具有二或更多個不同大小。在步驟1510中,提取指令區塊,且在步驟1515中,提取所有其相關聯的資源。
在步驟1520中,指令區塊被放置在窗的合適區段中,該區段最大化窗中的指令密度。例如,若編譯器產生包括具有低指令計數之相對大數量區塊的區塊大小分佈(例如用以實施程式分支等等),則指令窗可具有針對小指令區塊而具體調整大小的區段。類似地,若存在相對大數量的高指令計數區塊(例如用於科學及類似應用),則可針對如此較大的指令區塊具體調整區段的大小。因此,可依據特定大小分佈來調整指令窗區段的大小調整,或在分佈改變時在某些情況下動態調整指令窗區段的大小調整。在方塊1525中,指令區塊可受制於指令區塊標題中所標定的限制條件,如以上所討論的。
現藉由說明的方式且非作為所有實施例的窮舉清單,而呈現本經解耦之處理器指令窗及運算元緩衝區的各種示例性實施例。一示例包括一種用於管理安置於一處理器中之指令窗中之指令區塊的方法,包括以下步驟:從一指令快取記憶體將一指令區塊映射進該指令窗,該指令區塊包括一或更多個經解碼指令;針對該指令區塊分配資源,其中該等資源包括與該指令區塊中之該一或更多個經解碼指令中的各者相關聯的控制位元及運算元;維護該等資源及該區塊中之該一或更多個經解碼指令之間的一或更多個指標;在不從該指令快取記憶體重新提取該指令區塊的情況下刷新該指令區塊;及藉由跟隨該一或更多個指標重新使用該等資源。在另一示例中,該方法更包括以下步驟:針對從該指令快取記憶體所提取的各指令區塊執行批量分配,以獲取與該指令區塊中之該一或更多個指令中的各者相關聯的資源。在另一示例中,該方法更包括以下步驟:在從該指令窗解耦的運算元緩衝區中維護運算元及控制位元,以便在刷新一指令區塊時預先驗證資源。在在另一示例中,該等控制位元包括運算元準備狀態。在另一示例中,該等資源包括運算碼(opcode)。在另一示例中,該方法更包括以下步驟:基於一程式來利用指令區塊,且在使用一經編程迴圈來執行程式的執行時刷新該指令區塊。
一進一步示例包括一基於指令區塊的微架構,包括:一控制單元;一或更多個運算元緩衝區;及一指令窗,配置為儲存要在該控制單元控制之下的經解碼的指令區塊,其中該控制包括以下操作:將指令區塊映射進該指令窗,以便一新的指令區塊替換一經提交的指令區塊,針對該新的指令區塊分配資源,其中該等資源包括控制位元及運算元,及從該一或更多個運算元緩衝區解耦該指令窗,其中指令區塊及運算元區塊被獨立管理,以便在刷新一指令區塊時預先驗證資源。在另一示例中,該基於指令區塊的微架構更包括用以基於該指令區塊之一標題中所標定的限制條件來映射該等指令區塊的一配置。在另一示例中,請求項8之該基於指令區塊的微架構,其中該等經標定的限制條件包括對準限制條件或指令窗之指令區塊容量限制條件中的一者。在另一示例中,該基於指令區塊的微架構更包括一配置,該配置用以追蹤該指令窗中之該等指令區塊之一順序及不按順序提交指令區塊。在另一示例中,該基於指令區塊的微架構更包括一晶片上網路,該晶片上網路允許複數個處理器核心組合或分解。在另一示例中,該基於指令區塊的微架構更包括一配置,該配置用以在該複數個處理器核心組合時維護一邏輯指令窗及一或更多個邏輯運算元緩衝區之間的解耦。在另一示例中,該基於指令區塊的微架構更包括一配置,該配置用以在該複數個處理器核心分解時維護一邏輯指令窗及一或更多個邏輯運算元緩衝區之間的解耦。在另一示例中,該基於指令區塊的微架構更包括一配置,該配置用以在不從一指令快取記憶體重新提取該指令區塊的情況下刷新該指令區塊。
一進一步示例包括一種控制單元,該控制單元安置於一處理器中,該控制單元佈置為執行一種用於指令區塊管理的方法,該方法包括以下步驟:維護一指令窗,以供緩存一或更多個指令區塊;維護一或更多個運算元緩衝區,以供針對該一或更多個指令區塊緩存資源;使用該等指令區塊及該等經緩存的資源之間的指標來追蹤狀態;在刷新一指令區塊時,跟隨該指標以重新使用該經追蹤狀態。在另一示例中,該控制單元更包括以下步驟:在提交一指令區塊時清除控制位元及設定一新的指標。在另一示例中,該控制單元更包括以下步驟:從該一或更多個運算元緩衝區解耦該指令窗,以便在一非相對應的基礎下維護指令區塊及運算元區塊。在另一示例中,該控制單元更包括以下步驟:批量分配該等經緩存的資源,以便針對該指令區塊中的所有指令獲取資源。在另一示例中,該控制單元更包括以下步驟:維護涵蓋複數個處理器核心的一邏輯指令窗。在另一示例中,該控制單元更包括以下步驟:維護涵蓋複數個處理器核心的一邏輯運算元緩衝區,且進一步從該邏輯指令窗解耦該邏輯運算元緩衝區,以允許在不重新提取一指令區塊的情況下刷新該指令區塊時預先驗證狀態。
上述標的僅藉由說明的方式來提供且不應被建構為限制。可在不依照所繪示及描述的示例實施例及應用的情況下,且在不脫離本揭示案的真實精神及範圍(其係闡述於以下請求項中)的情況下,對本文中所述之標的作出各種更改及改變。
100‧‧‧計算環境 105‧‧‧編譯器 110‧‧‧指令 115‧‧‧程式 120‧‧‧處理器架構 125‧‧‧處理器核心 130‧‧‧2級(L2)快取記憶體 202‧‧‧前端控制單元 204‧‧‧指令快取記憶體 206‧‧‧分支預測器 208‧‧‧指令解碼器 210‧‧‧指令窗 212‧‧‧左運算元緩衝區 214‧‧‧右運算元緩衝區 216‧‧‧算術邏輯單元 218‧‧‧算術邏輯單元 220‧‧‧暫存器 222‧‧‧加載/儲存佇列 224‧‧‧後端控制單元 230‧‧‧指令排程器 300‧‧‧區塊標題 400‧‧‧方法 405‧‧‧步驟 410‧‧‧步驟 415‧‧‧步驟 420‧‧‧步驟 425‧‧‧步驟 430‧‧‧步驟 435‧‧‧步驟 500‧‧‧方法 505‧‧‧步驟 510‧‧‧步驟 515‧‧‧步驟 520‧‧‧步驟 525‧‧‧步驟 600‧‧‧方法 605‧‧‧步驟 610‧‧‧步驟 615‧‧‧步驟 620‧‧‧步驟 625‧‧‧步驟 630‧‧‧步驟 700‧‧‧方法 705‧‧‧步驟 710‧‧‧步驟 715‧‧‧步驟 720‧‧‧步驟 725‧‧‧步驟 800‧‧‧方法 805‧‧‧步驟 810‧‧‧步驟 815‧‧‧步驟 820‧‧‧步驟 825‧‧‧步驟 830‧‧‧步驟 835‧‧‧步驟 840‧‧‧步驟 900‧‧‧方法 905‧‧‧步驟 910‧‧‧步驟 915‧‧‧步驟 920‧‧‧步驟 925‧‧‧步驟 1000‧‧‧方法 1005‧‧‧步驟 1010‧‧‧步驟 1015‧‧‧步驟 1020‧‧‧步驟 1025‧‧‧步驟 1100‧‧‧方法 1105‧‧‧步驟 1110‧‧‧步驟 1115‧‧‧步驟 1120‧‧‧步驟 1125‧‧‧步驟 1200‧‧‧方法 1205‧‧‧步驟 1210‧‧‧步驟 1215‧‧‧步驟 1220‧‧‧步驟 1225‧‧‧步驟 1230‧‧‧步驟 1300‧‧‧方法 1305‧‧‧步驟 1310‧‧‧步驟 1315‧‧‧步驟 1320‧‧‧步驟 1325‧‧‧步驟 1400‧‧‧方法 1405‧‧‧步驟 1410‧‧‧步驟 1415‧‧‧步驟 1420‧‧‧步驟 1425‧‧‧步驟 1430‧‧‧步驟 1435‧‧‧步驟 1440‧‧‧步驟 1500‧‧‧方法 1505‧‧‧步驟 1510‧‧‧步驟 1515‧‧‧步驟 1520‧‧‧步驟 1525‧‧‧步驟
圖1圖示一說明性計算環境,其中編譯器提供運行於包括多個處理器核心之架構上的經編碼指令;
圖2為用於示例性處理器核心之說明性微架構的方塊圖;
圖3圖示用於區塊標題的說明性佈置;及
圖4-15為說明性方法的流程圖。
在該等繪圖中,類似的標號指類似的構件。構件並非按比例繪製,除非原本就指明。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
1000‧‧‧方法
1005‧‧‧步驟
1010‧‧‧步驟
1015‧‧‧步驟
1020‧‧‧步驟
1025‧‧‧步驟

Claims (20)

  1. 一種用於管理安置於一處置器中之一指令窗中之指令區塊的方法,包括以下步驟: 從一指令快取記憶體將一指令區塊映射進該指令窗,該指令區塊包括一或更多個經解碼指令; 針對該指令區塊分配資源,其中該等資源包括與該指令區塊中之該一或更多個經解碼指令中的各者相關聯的控制位元及運算元; 維護該等資源及該區塊中之該一或更多個經解碼指令之間的一或更多個指標; 在不從該指令快取記憶體重新提取該指令區塊的情況下刷新該指令區塊;及 藉由跟隨該一或更多個指標重新使用該等資源。
  2. 如請求項1所述之方法,更包括以下步驟:針對從該指令快取記憶體所提取的各指令區塊執行批量分配,以獲取與該指令區塊中之該一或更多個指令中的各者相關聯的資源。
  3. 如請求項1所述之方法,更包括以下步驟:在從該指令窗解耦的運算元緩衝區中維護運算元及控制位元,以便在刷新一指令區塊時預先驗證資源。
  4. 如請求項3所述之方法,其中該等控制位元包括運算元就緒狀態。
  5. 如請求項1所述之方法,其中該等資源包括運算碼(opcode)。
  6. 如請求項5所述之方法,更包括以下步驟:基於一程式來利用指令區塊,且在使用一經編程迴圈來執行程式的執行時刷新該指令區塊。
  7. 一種基於指令區塊的微架構,包括: 一控制單元; 一或更多個運算元緩衝區;及 一指令窗,配置為儲存要在該控制單元控制之下的經解碼的指令區塊,其中該控制包括以下操作: 將指令區塊映射進該指令窗,以便一新的指令區塊替換一經提交的指令區塊, 針對該新的指令區塊分配資源,其中該等資源包括控制位元及運算元,及 從該一或更多個運算元緩衝區解耦該指令窗,其中指令區塊及運算元區塊被獨立管理,以便在刷新一指令區塊時預先驗證資源。
  8. 如請求項7所述之基於指令區塊的微架構,更包括用以基於該指令區塊之一標題中所標定的限制條件來映射該等指令區塊的一配置。
  9. 如請求項8所述之基於指令區塊的微架構,其中該等經標定的限制條件包括對準限制條件或指令窗之指令區塊容量限制條件中的一者。
  10. 如請求項7所述之基於指令區塊的微架構,更包括一配置,該配置用以追蹤該指令窗中之該等指令區塊之一順序及不按順序提交指令區塊。
  11. 如請求項7所述之基於指令區塊的微架構,更包括一晶片上網路,該晶片上網路允許複數個處理器核心組合或分解。
  12. 如請求項11所述之基於指令區塊的微架構,更包括一配置,該配置用以在該複數個處理器核心組合時維護一邏輯指令窗及一或更多個邏輯運算元緩衝區之間的解耦。
  13. 如請求項11所述之基於指令區塊的微架構,更包括一配置,該配置用以在該複數個處理器核心分解時維護一邏輯指令窗及一或更多個邏輯運算元緩衝區之間的解耦。
  14. 如請求項7所述之基於指令區塊的微架構,更包括一配置,該配置用以在不從一指令快取記憶體重新提取該指令區塊的情況下刷新該指令區塊。
  15. 一種控制單元,安置於一處理器中,該控制單元佈置為執行一種用於指令區塊管理的方法,該方法包括以下步驟: 維護一指令窗,以供緩存一或更多個指令區塊; 維護一或更多個運算元緩衝區,以供針對該一或更多個指令區塊緩存資源; 使用該等指令區塊及該等經緩存的資源之間的指標來追蹤狀態; 在刷新一指令區塊時,跟隨該指標以重新使用該經追蹤狀態。
  16. 如請求項15所述之控制單元,更包括以下步驟:在提交一指令區塊時清除控制位元及設定一新的指標。
  17. 如請求項15所述之控制單元,更包括以下步驟:從該一或更多個運算元緩衝區解耦該指令窗,以便在一非相對應的基礎下維護指令區塊及運算元區塊。
  18. 如請求項15所述之控制單元,更包括以下步驟:批量分配該等經緩存的資源,以便針對該指令區塊中的所有指令獲取資源。
  19. 如請求項15所述之控制單元,更包括以下步驟:維護涵蓋複數個處理器核心的一邏輯指令窗。
  20. 如請求項19所述之控制單元,更包括以下步驟:維護涵蓋複數個處理器核心的一邏輯運算元緩衝區,且進一步從該邏輯指令窗解耦該邏輯運算元緩衝區,以允許在不重新提取一指令區塊的情況下刷新該指令區塊時預先驗證狀態。
TW105117721A 2015-06-26 2016-06-04 經解耦的處理器指令窗及運算元緩衝區 TW201712533A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/752,724 US10346168B2 (en) 2015-06-26 2015-06-26 Decoupled processor instruction window and operand buffer

Publications (1)

Publication Number Publication Date
TW201712533A true TW201712533A (zh) 2017-04-01

Family

ID=56369215

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105117721A TW201712533A (zh) 2015-06-26 2016-06-04 經解耦的處理器指令窗及運算元緩衝區

Country Status (16)

Country Link
US (2) US10346168B2 (zh)
EP (1) EP3314399B1 (zh)
JP (1) JP2018518775A (zh)
KR (1) KR102502780B1 (zh)
CN (1) CN107810476B (zh)
AU (1) AU2016281599A1 (zh)
BR (1) BR112017024301A2 (zh)
CA (1) CA2986266A1 (zh)
CL (1) CL2017003310A1 (zh)
CO (1) CO2017013252A2 (zh)
HK (1) HK1246443A1 (zh)
IL (1) IL256168A (zh)
MX (1) MX2017016197A (zh)
PH (1) PH12017550124A1 (zh)
TW (1) TW201712533A (zh)
WO (1) WO2016210027A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10346168B2 (en) * 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9720693B2 (en) * 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9940136B2 (en) * 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US9952867B2 (en) * 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US11531552B2 (en) * 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10824429B2 (en) * 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures
CN112000420B (zh) * 2020-11-02 2021-01-15 武汉中科通达高新技术股份有限公司 一种数据处理方法和装置
US11630668B1 (en) * 2021-11-18 2023-04-18 Nxp B.V. Processor with smart cache in place of register file for providing operands
US20240111654A1 (en) * 2022-09-29 2024-04-04 Intel Corporation Hybrid performance monitoring unit (pmu) enumeration
CN115617402B (zh) * 2022-11-18 2023-04-07 北京数渡信息科技有限公司 一种适用于通用处理器的解耦合分支预测方法及装置

Family Cites Families (307)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5142631A (en) 1989-02-03 1992-08-25 Digital Equipment Corporation System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5333280A (en) 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
US5551033A (en) 1991-05-17 1996-08-27 Zenith Data Systems Corporation Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program
US5363495A (en) 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5333283A (en) 1991-10-29 1994-07-26 International Business Machines Corporation Case block table for predicting the outcome of blocks of conditional branches having a common operand
TW226016B (zh) 1991-12-30 1994-07-01 Sterling Winthrop Inc
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
US5346345A (en) * 1992-07-31 1994-09-13 Ford Motor Company High-force linear motor assembly using tandem axes
EP0583089B1 (en) 1992-08-12 2000-01-26 Advanced Micro Devices, Inc. Instruction decoder
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5999737A (en) 1994-03-01 1999-12-07 Digital Equipment Corporation Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis
WO1996007139A1 (en) 1994-09-01 1996-03-07 Mcalpine Gary L A multi-port memory system including read and write buffer interfaces
US5666506A (en) 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
US5832297A (en) 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5933642A (en) 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
US6112019A (en) 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5790822A (en) 1996-03-21 1998-08-04 Intel Corporation Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor
US5920724A (en) 1996-03-28 1999-07-06 Intel Corporation Software pipelining a hyperblock loop
US5796997A (en) 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5799167A (en) 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5903750A (en) 1996-11-20 1999-05-11 Institute For The Development Of Emerging Architectures, L.L.P. Dynamic branch prediction for branch instructions with multiple targets
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6286135B1 (en) 1997-03-26 2001-09-04 Hewlett-Packard Company Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
US5983337A (en) 1997-06-12 1999-11-09 Advanced Micro Devices, Inc. Apparatus and method for patching an instruction by providing a substitute instruction or instructions from an external memory responsive to detecting an opcode of the instruction
US5845103A (en) 1997-06-13 1998-12-01 Wisconsin Alumni Research Foundation Computer with dynamic instruction reuse
US6044222A (en) 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US5943501A (en) 1997-06-27 1999-08-24 Wisconsin Alumni Research Foundation Multiple processor, distributed memory computer with out-of-order processing
US5930158A (en) 1997-07-02 1999-07-27 Creative Technology, Ltd Processor with instruction set for audio effects
US7272703B2 (en) 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6185675B1 (en) 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6058438A (en) 1998-02-06 2000-05-02 Hewlett-Packard Company Method and apparatus for performing high speed data transfers between a host memory and a geometry accelerator of a graphics machine
US6055623A (en) 1998-04-07 2000-04-25 International Business Machine Corporation Specialized millicode instruction for editing functions
US6164841A (en) 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6988183B1 (en) 1998-06-26 2006-01-17 Derek Chi-Lan Wong Methods for increasing instruction-level parallelism in microprocessors and digital system
US6212622B1 (en) 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Mechanism for load block on store address generation
EP0992894A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Apparatus and method for loop execution
US6275919B1 (en) 1998-10-15 2001-08-14 Creative Technology Ltd. Memory storage and retrieval with multiple hashing functions
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
JP3565314B2 (ja) 1998-12-17 2004-09-15 富士通株式会社 分岐命令実行制御装置
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
GB2348305A (en) 1999-03-24 2000-09-27 Int Computers Ltd Instruction execution mechanism
US6453344B1 (en) 1999-03-31 2002-09-17 Amdahl Corporation Multiprocessor servers with controlled numbered of CPUs
US6438671B1 (en) 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
US6523110B1 (en) 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
US6513109B1 (en) 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
JP2001092662A (ja) 1999-09-22 2001-04-06 Toshiba Corp プロセッサコア及びこれを用いたプロセッサ
US6986137B1 (en) 1999-09-28 2006-01-10 International Business Machines Corporation Method, system and program products for managing logical processors of a computing environment
US7051188B1 (en) 1999-09-28 2006-05-23 International Business Machines Corporation Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment
US6651125B2 (en) 1999-09-28 2003-11-18 International Business Machines Corporation Processing channel subsystem pending I/O work queues based on priorities
JP2003511754A (ja) 1999-10-01 2003-03-25 サン・マイクロシステムズ・インコーポレイテッド 投機的なかつ順不同(out−of−order)のロードの場合に正確なトラップ処理をするための方法
EP1102163A3 (en) 1999-11-15 2005-06-29 Texas Instruments Incorporated Microprocessor with improved instruction set architecture
US6779100B1 (en) 1999-12-17 2004-08-17 Hewlett-Packard Development Company, L.P. Method and device for address translation for compressed instructions
US6732203B2 (en) 2000-01-31 2004-05-04 Intel Corporation Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus
US6725335B2 (en) 2000-02-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for fast unlinking of a linked branch in a caching dynamic translator
US6732260B1 (en) 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US6615340B1 (en) 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
US6918032B1 (en) 2000-07-06 2005-07-12 Intel Corporation Hardware predication for conditional instruction path branching
US6654860B1 (en) 2000-07-27 2003-11-25 Advanced Micro Devices, Inc. Method and apparatus for removing speculative memory accesses from a memory access queue for issuance to memory or discarding
US7069555B1 (en) 2000-09-29 2006-06-27 Microsoft Corporation Super-region instruction scheduling and code generation for merging identical instruction into the ready-to-schedule instruction
US6934254B2 (en) 2001-01-18 2005-08-23 Motorola, Inc. Method and apparatus for dynamically allocating resources in a communication system
US7032217B2 (en) 2001-03-26 2006-04-18 Intel Corporation Method and system for collaborative profiling for continuous detection of profile phase transitions
US6957435B2 (en) 2001-04-19 2005-10-18 International Business Machines Corporation Method and apparatus for allocating processor resources in a logically partitioned computer system
US7453899B1 (en) 2001-05-08 2008-11-18 Lsi Corporation Field programmable network application specific integrated circuit and a method of operation thereof
US6965982B2 (en) 2001-06-29 2005-11-15 International Business Machines Corporation Multithreaded processor efficiency by pre-fetching instructions for a scheduled thread
US7002956B2 (en) 2001-07-05 2006-02-21 International Business Machines Corporation Network addressing method and system for localizing access to network resources in a computer network
US7353287B2 (en) 2001-09-26 2008-04-01 Adobe Systems Incorporated Marked foreign data blocks
WO2003038645A2 (en) 2001-10-31 2003-05-08 University Of Texas A scalable processing architecture
EP1313012A1 (en) 2001-11-15 2003-05-21 Texas Instruments France Java DSP acceleration by byte-code optimization
JP2003162411A (ja) 2001-11-28 2003-06-06 Hitachi Ltd データプロセッサ
US7228402B2 (en) 2002-01-02 2007-06-05 Intel Corporation Predicate register file write by an instruction with a pending instruction having data dependency
US7055021B2 (en) 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7032101B2 (en) 2002-02-26 2006-04-18 International Business Machines Corporation Method and apparatus for prioritized instruction issue queue in a processor
US6877059B2 (en) 2002-03-29 2005-04-05 Emc Corporation Communications architecture for a high throughput storage processor
WO2003088048A1 (en) 2002-04-08 2003-10-23 University Of Texas System Non-uniform cache apparatus, systems, and methods
WO2004001584A2 (en) 2002-06-24 2003-12-31 Ante Vista Gmbh A method for executing structured symbolic machine code on a microprocessor
JP3804941B2 (ja) 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
JP4243463B2 (ja) 2002-08-19 2009-03-25 株式会社半導体理工学研究センター 命令スケジューリングのシミュレーション方法とシミュレーションシステム
US7296259B2 (en) 2002-09-11 2007-11-13 Agere Systems Inc. Processor system with cache-based software breakpoints
US6934828B2 (en) 2002-09-17 2005-08-23 Intel Corporation Decoupling floating point linear address
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7299458B2 (en) 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
US20040123078A1 (en) 2002-12-24 2004-06-24 Hum Herbert H Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US20040139299A1 (en) 2003-01-14 2004-07-15 International Business Machines Corporation Operand forwarding in a superscalar processor
US7210127B1 (en) 2003-04-03 2007-04-24 Sun Microsystems Methods and apparatus for executing instructions in parallel
US7055007B2 (en) * 2003-04-10 2006-05-30 Arm Limited Data processor memory circuit
US6996698B2 (en) 2003-05-12 2006-02-07 International Business Machines Corporation Blocking processing restrictions based on addresses
US7284100B2 (en) 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7349968B2 (en) 2003-07-31 2008-03-25 International Business Machines Corporation Method, system and program product for asynchronously processing requests
CN1842770A (zh) 2003-08-28 2006-10-04 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
US7207038B2 (en) 2003-08-29 2007-04-17 Nokia Corporation Constructing control flows graphs of binary executable programs at post-link time
US7539974B2 (en) 2003-10-24 2009-05-26 Microsoft Corporation Scalable synchronous and asynchronous processing of monitoring rules
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7500087B2 (en) 2004-03-09 2009-03-03 Intel Corporation Synchronization of parallel processes using speculative execution of synchronization instructions
EP1731998A1 (en) 2004-03-29 2006-12-13 Kyoto University Data processing device, data processing program, and recording medium containing the data processing program
US7392524B2 (en) 2004-04-06 2008-06-24 International Business Machines Corporation Method, system, and storage medium for managing computer processing functions
EP1870814B1 (en) 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7334143B2 (en) 2004-04-19 2008-02-19 Hewlett-Packard Development Company, L.P. Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
US20050278505A1 (en) * 2004-05-19 2005-12-15 Lim Seow C Microprocessor architecture including zero impact predictive data pre-fetch mechanism for pipeline data memory
US7873776B2 (en) 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7685354B1 (en) 2004-06-30 2010-03-23 Sun Microsystems, Inc. Multiple-core processor with flexible mapping of processor cores to cache banks
US8607241B2 (en) 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US8230252B2 (en) 2004-07-20 2012-07-24 Hewlett-Packard Development Company, L.P. Time of day response
US8166282B2 (en) 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7606995B2 (en) 2004-07-23 2009-10-20 Hewlett-Packard Development Company, L.P. Allocating resources to partitions in a partitionable computer
US7747992B2 (en) 2004-08-23 2010-06-29 Intel Corporation Methods and apparatus for creating software basic block layouts
US7748001B2 (en) 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
JP4345630B2 (ja) 2004-09-29 2009-10-14 ソニー株式会社 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム
US8015392B2 (en) 2004-09-29 2011-09-06 Intel Corporation Updating instructions to free core in multi-core processor with core sequence table indicating linking of thread sequences for processing queued packets
JP4982971B2 (ja) 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7552318B2 (en) 2004-12-17 2009-06-23 International Business Machines Corporation Branch lookahead prefetch for microprocessors
US8756605B2 (en) 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US8151092B2 (en) 2005-01-12 2012-04-03 International Business Machines Corporation Control signal memoization in a multiple instruction issue microprocessor
US7853777B2 (en) 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7380038B2 (en) 2005-02-04 2008-05-27 Microsoft Corporation Priority registers for biasing access to shared resources
US7805574B2 (en) 2005-02-09 2010-09-28 International Business Machines Corporation Method and cache system with soft I-MRU member protection scheme during make MRU allocation
US7152155B2 (en) 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US7526633B2 (en) 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7447882B2 (en) 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
US7673119B2 (en) 2005-05-13 2010-03-02 Texas Instruments Incorporated VLIW optional fetch packet header extends instruction set space
US7581082B2 (en) 2005-05-13 2009-08-25 Texas Instruments Incorporated Software source transfer selects instruction word sizes
JP4322232B2 (ja) 2005-06-14 2009-08-26 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7779213B2 (en) 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7437518B2 (en) 2005-09-07 2008-10-14 Intel Corporation Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7490224B2 (en) 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
JP4720436B2 (ja) 2005-11-01 2011-07-13 株式会社日立製作所 リコンフィギュラブルプロセッサまたは装置
US7716577B2 (en) 2005-11-14 2010-05-11 Oracle America, Inc. Method and apparatus for hardware XML acceleration
KR100806274B1 (ko) 2005-12-06 2008-02-22 한국전자통신연구원 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법
US7475225B2 (en) 2005-12-30 2009-01-06 Intel Corporation Method and apparatus for microarchitecture partitioning of execution clusters
US7565654B2 (en) 2006-01-10 2009-07-21 National Instruments Corporation Programmatic control of tasks in a programmable logic controller
JP4923240B2 (ja) 2006-01-17 2012-04-25 国立大学法人東京工業大学 プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US7350027B2 (en) 2006-02-10 2008-03-25 International Business Machines Corporation Architectural support for thread level speculative execution
US8266413B2 (en) 2006-03-14 2012-09-11 The Board Of Trustees Of The University Of Illinois Processor architecture for multipass processing of instructions downstream of a stalled instruction
US7802073B1 (en) 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US20070239965A1 (en) 2006-03-31 2007-10-11 Saul Lewites Inter-partition communication
US8010953B2 (en) 2006-04-04 2011-08-30 International Business Machines Corporation Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
JP4849606B2 (ja) 2006-04-28 2012-01-11 株式会社日立製作所 制御フロー誤り検出方法、データ処理装置、及びコンパイラ
US7958396B2 (en) 2006-05-19 2011-06-07 Microsoft Corporation Watchdog processors in multicore systems
US8473724B1 (en) 2006-07-09 2013-06-25 Oracle America, Inc. Controlling operation of a processor according to execution mode of an instruction sequence
US7461241B2 (en) 2006-07-31 2008-12-02 International Business Machines Corporation Concurrent physical processor reassignment method
US8032734B2 (en) 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8028131B2 (en) 2006-11-29 2011-09-27 Intel Corporation System and method for aggregating core-cache clusters in order to produce multi-core processors
US20080148020A1 (en) 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US7624254B2 (en) 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches
JP4957729B2 (ja) 2007-01-25 2012-06-20 日本電気株式会社 プログラム並列化方法、プログラム並列化装置及びプログラム
US8181168B1 (en) 2007-02-07 2012-05-15 Tilera Corporation Memory access assignment for parallel processing architectures
US7719532B2 (en) 2007-02-09 2010-05-18 International Business Machines Corporation Efficient and flexible data organization for acceleration data structure nodes
JP4339371B2 (ja) 2007-03-22 2009-10-07 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および情報処理方法
US20080235493A1 (en) 2007-03-23 2008-09-25 Qualcomm Incorporated Instruction communication techniques for multi-processor system
US20080250227A1 (en) 2007-04-04 2008-10-09 Linderman Michael D General Purpose Multiprocessor Programming Apparatus And Method
US7853950B2 (en) 2007-04-05 2010-12-14 International Business Machines Corporarion Executing multiple threads in a processor
JP4987555B2 (ja) 2007-04-27 2012-07-25 株式会社東芝 情報処理装置、および情報処理システム
JP2008299790A (ja) * 2007-06-04 2008-12-11 Digital Electronics Corp マイクロプロセッサ
JP5084355B2 (ja) 2007-06-07 2012-11-28 キヤノン株式会社 フロー処理実行装置、フロー処理実行方法及びプログラム
US8161476B2 (en) 2007-07-04 2012-04-17 International Business Machines Corporation Processor exclusivity in a partitioned system
US8180997B2 (en) 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US8447911B2 (en) 2007-07-05 2013-05-21 Board Of Regents, University Of Texas System Unordered load/store queue
CN101344843B (zh) 2007-07-10 2012-11-21 北京简约纳电子有限公司 一种指令级并行处理方法
JP2009026106A (ja) 2007-07-20 2009-02-05 Oki Electric Ind Co Ltd 命令コード圧縮方法と命令フェッチ回路
US8281308B1 (en) 2007-07-23 2012-10-02 Oracle America, Inc. Virtual core remapping based on temperature
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8006070B2 (en) 2007-12-05 2011-08-23 International Business Machines Corporation Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
US9529592B2 (en) 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US7877586B2 (en) 2008-02-01 2011-01-25 International Business Machines Corporation Branch target address cache selectively applying a delayed hit
US8146094B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US7921278B2 (en) 2008-03-10 2011-04-05 International Business Machines Corporation Early exit processing of iterative refinement algorithm using register dependency disable
US7885967B2 (en) 2008-05-30 2011-02-08 Red Hat, Inc. Management of large dynamic tables
US8321850B2 (en) 2008-06-06 2012-11-27 Vmware, Inc. Sharing and persisting code caches
US8565065B2 (en) 2008-06-23 2013-10-22 Qualcomm Incorporated Methods and systems for utilizing a multicast/broadcast CID scheduling MAC management message
WO2010026485A1 (en) 2008-09-08 2010-03-11 Bridgeco Ag Very long instruction word architecture with multiple data queues
WO2010043401A2 (en) 2008-10-15 2010-04-22 Martin Vorbach Data processing device
US8612698B2 (en) 2008-10-31 2013-12-17 Intel Corporation Replacement policy for hot code detection
US20100146209A1 (en) 2008-12-05 2010-06-10 Intellectual Ventures Management, Llc Method and apparatus for combining independent data caches
US8127119B2 (en) 2008-12-05 2012-02-28 The Board Of Regents Of The University Of Texas System Control-flow prediction using multiple independent predictors
JP2010198131A (ja) 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
US8380964B2 (en) 2009-04-03 2013-02-19 International Business Machines Corporation Processor including age tracking of issue queue instructions
US9489207B2 (en) 2009-04-14 2016-11-08 International Business Machines Corporation Processor and method for partially flushing a dispatched instruction group including a mispredicted branch
US8438547B2 (en) 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8214831B2 (en) 2009-05-05 2012-07-03 International Business Machines Corporation Runtime dependence-aware scheduling using assist thread
US20100325395A1 (en) 2009-06-19 2010-12-23 Doug Burger Dependence prediction in a memory system
US8533436B2 (en) 2009-06-26 2013-09-10 Intel Corporation Adaptively handling remote atomic execution based upon contention prediction
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
US20110078424A1 (en) 2009-09-30 2011-03-31 International Business Machines Corporation Optimizing program code using branch elimination
US8464002B2 (en) 2009-10-14 2013-06-11 Board Of Regents Of The University Of Texas System Burst-based cache dead block prediction
WO2011067896A1 (en) 2009-12-02 2011-06-09 Mush-A Co., Ltd. Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method
JP5057256B2 (ja) 2009-12-02 2012-10-24 株式会社Mush−A データ処理装置、データ処理システムおよびデータ処理方法
CN102096579B (zh) 2009-12-11 2013-10-16 陈罡 一种嵌入式自适应模糊微处理器的组成与结构
CN102117198B (zh) 2009-12-31 2015-07-15 上海芯豪微电子有限公司 一种分支处理方法
EP2519876A1 (en) 2009-12-28 2012-11-07 Hyperion Core, Inc. Optimisation of loops and data flow sections
GB201001621D0 (en) 2010-02-01 2010-03-17 Univ Catholique Louvain A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms
US8850166B2 (en) 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore
US8434074B2 (en) 2010-02-24 2013-04-30 Intel Corporation Register allocation with SIMD architecture using write masks
US8667260B2 (en) 2010-03-05 2014-03-04 International Business Machines Corporation Building approximate data dependences with a moving window
JP2011209904A (ja) 2010-03-29 2011-10-20 Sony Corp 命令フェッチ装置、および、プロセッサ
KR101664108B1 (ko) 2010-04-13 2016-10-11 삼성전자주식회사 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법
US8290994B2 (en) 2010-05-05 2012-10-16 International Business Machines Corporation Obtaining file system view in block-level data storage systems
US8201024B2 (en) 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US8555038B2 (en) 2010-05-28 2013-10-08 Oracle International Corporation Processor and method providing instruction support for instructions that utilize multiple register windows
KR101731742B1 (ko) 2010-06-18 2017-04-28 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 결합된 분기 타깃 및 프레디킷 예측
US10241799B2 (en) 2010-07-16 2019-03-26 Qualcomm Incorporated Out-of-order command execution with sliding windows to maintain completion statuses
US20120030451A1 (en) 2010-07-28 2012-02-02 Broadcom Corporation Parallel and long adaptive instruction set architecture
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US8904115B2 (en) 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US9836304B2 (en) 2010-11-15 2017-12-05 Advanced Micro Devices, Inc. Cumulative confidence fetch throttling
US9552206B2 (en) 2010-11-18 2017-01-24 Texas Instruments Incorporated Integrated circuit with control node circuitry and processing circuitry
US8589892B2 (en) 2010-11-21 2013-11-19 International Business Machines Corporation Verification of speculative execution
US8612726B2 (en) 2010-12-07 2013-12-17 King Fahd University Of Petroleum And Minerals Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type
US9164772B2 (en) 2011-02-04 2015-10-20 Qualcomm Incorporated Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available
US9176737B2 (en) 2011-02-07 2015-11-03 Arm Limited Controlling the execution of adjacent instructions that are dependent upon a same data condition
US9274793B2 (en) 2011-03-25 2016-03-01 Soft Machines, Inc. Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
US8909941B1 (en) 2011-03-31 2014-12-09 Xilinx, Inc. Programmable integrated circuit and a method of enabling the detection of tampering with data provided to a programmable integrated circuit
WO2012136766A1 (en) 2011-04-06 2012-10-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core processors
CN102221987B (zh) 2011-05-11 2014-10-01 西安电子科技大学 基于嵌入式专用指令集处理器的指令集编码方法
US9652243B2 (en) 2011-06-29 2017-05-16 International Business Machines Corporation Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor
US20130024676A1 (en) 2011-07-19 2013-01-24 Glew Andrew F Control flow integrity
CN102306094B (zh) 2011-08-16 2014-03-26 北京北大众志微系统科技有限责任公司 实现现代处理器间接转移预测的装置及方法
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
CN102364431B (zh) * 2011-10-20 2014-09-10 北京北大众志微系统科技有限责任公司 一种实现读指令执行的方法及装置
SG11201402727WA (en) 2011-12-01 2014-06-27 Univ Singapore Polymorphic heterogeneous multi-core architecture
US8639882B2 (en) 2011-12-14 2014-01-28 Nvidia Corporation Methods and apparatus for source operand collector caching
US9442861B2 (en) 2011-12-20 2016-09-13 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
WO2013095635A1 (en) 2011-12-23 2013-06-27 Intel Corporation Instruction for merging mask patterns
WO2013096894A1 (en) 2011-12-23 2013-06-27 The Arizona Board Of Regents On Behalf Of The University Of Arizona Methods of micro-specialization in database management systems
CN102566974B (zh) 2012-01-14 2014-03-26 哈尔滨工程大学 基于同时多线程的取指控制方法
US9304776B2 (en) 2012-01-31 2016-04-05 Oracle International Corporation System and method for mitigating the impact of branch misprediction when exiting spin loops
US9348775B2 (en) 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
US9513922B2 (en) 2012-04-20 2016-12-06 Freescale Semiconductor, Inc. Computer system and a method for generating an optimized program code
US8930678B2 (en) 2012-04-26 2015-01-06 Intel Corporation Instruction and logic to length decode X86 instructions
EP2862058B1 (en) 2012-06-15 2021-05-19 Intel Corporation A semaphore method and system with out of order loads in a memory consistency model that constitutes loads reading from memory in order
US8880638B2 (en) 2012-06-18 2014-11-04 International Business Machines Corporation Distributed image cache for servicing virtual resource requests in the cloud
US9160815B2 (en) 2012-06-28 2015-10-13 Intel Corporation Method and apparatus for virtual machine interoperability
CN105760138B (zh) 2012-06-29 2018-12-11 英特尔公司 用于测试事务性执行状态的系统
KR101964927B1 (ko) 2012-07-17 2019-04-03 삼성전자 주식회사 캐싱 프록시 방법 및 장치
GB2505884B (en) 2012-09-12 2015-06-03 Imagination Tech Ltd Dynamically resizable circular buffers
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US20140095847A1 (en) 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
US9400650B2 (en) 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US9710276B2 (en) 2012-11-09 2017-07-18 Advanced Micro Devices, Inc. Execution of instruction loops using an instruction buffer
US8930760B2 (en) 2012-12-17 2015-01-06 International Business Machines Corporation Validating cache coherency protocol within a processor
US9619229B2 (en) 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
US9182986B2 (en) 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9361111B2 (en) 2013-01-09 2016-06-07 Arm Limited Tracking speculative execution of instructions for a register renaming data store
US10223124B2 (en) 2013-01-11 2019-03-05 Advanced Micro Devices, Inc. Thread selection at a processor based on branch prediction confidence
GB2514956B (en) 2013-01-21 2015-04-01 Imagination Tech Ltd Allocating resources to threads based on speculation metric
US9354884B2 (en) 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US10241793B2 (en) 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases
US20140281622A1 (en) 2013-03-15 2014-09-18 Mahesh Wagh Method, apparatus, and system for improving resume times for root ports and root port integrated endpoints
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
US9471318B2 (en) 2013-03-15 2016-10-18 International Business Machines Corporation System management and instruction counting
WO2014143053A1 (en) 2013-03-15 2014-09-18 Intel Corporation Dead block predictors for cooperative execution in the last level cache
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US20140281434A1 (en) 2013-03-15 2014-09-18 Carlos Madriles Path profiling using hardware and software combination
JP6086230B2 (ja) 2013-04-01 2017-03-01 日本電気株式会社 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
US9594700B2 (en) 2013-04-17 2017-03-14 Nvidia Corporation Speculative memory controller
WO2014189510A1 (en) 2013-05-23 2014-11-27 Intel Corporation Techniques for detecting return-oriented programming
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
GB2515076B (en) 2013-06-13 2020-07-15 Advanced Risc Mach Ltd A data processing apparatus and method for handling retrieval of instructions from an instruction cache
US10372527B2 (en) 2013-07-15 2019-08-06 Intel Corporation Method of encoding data
GB2510655B (en) 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US9535488B2 (en) 2013-08-28 2017-01-03 Via Technologies, Inc. Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor
US20150074355A1 (en) 2013-09-12 2015-03-12 Lsi Corporation Efficient caching of file system journals
CN103473508B (zh) 2013-09-17 2016-07-27 肖楠 操作系统内核运行时安全验证方法
US9547496B2 (en) 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue
CN104731718A (zh) * 2013-12-24 2015-06-24 上海芯豪微电子有限公司 一种缓存系统和方法
US9448936B2 (en) 2014-01-13 2016-09-20 Apple Inc. Concurrent store and load operations
CN103744644B (zh) 2014-01-13 2017-03-01 上海交通大学 采用四核结构搭建的四核处理器系统及数据交换方法
US9785441B2 (en) 2014-05-29 2017-10-10 Mill Computing, Inc. Computer processor employing instructions with elided nop operations
US9830159B2 (en) 2014-06-02 2017-11-28 International Business Machines Corporation Suspending branch prediction upon entering transactional execution mode
CN104310225A (zh) 2014-08-19 2015-01-28 中国十七冶集团有限公司 建筑起重机械安全控制装置
US20160055004A1 (en) 2014-08-21 2016-02-25 Edward T. Grochowski Method and apparatus for non-speculative fetch and execution of control-dependent blocks
CN104239047B (zh) 2014-10-13 2017-10-24 深圳市神州海纳科技有限公司 一种信息采集的方法及其装置
US9875106B2 (en) 2014-11-12 2018-01-23 Mill Computing, Inc. Computer processor employing instruction block exit prediction
US9569613B2 (en) 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
CN104637288B (zh) 2014-12-31 2019-03-08 小米科技有限责任公司 指令组确定方法和装置
US20160274915A1 (en) 2015-03-20 2016-09-22 Qualcomm Incorporated PROVIDING LOWER-OVERHEAD MANAGEMENT OF DATAFLOW EXECUTION OF LOOP INSTRUCTIONS BY OUT-OF-ORDER PROCESSORS (OOPs), AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA
US20160328237A1 (en) 2015-05-07 2016-11-10 Via Alliance Semiconductor Co., Ltd. System and method to reduce load-store collision penalty in speculative out of order engine
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US20160378491A1 (en) 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Determination of target location for transfer of processor control
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US20160378488A1 (en) 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Access to target address
US20170083343A1 (en) 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Out of order commit
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US9830152B2 (en) 2015-12-22 2017-11-28 Qualcomm Incorporated Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US10223118B2 (en) 2016-03-24 2019-03-05 Qualcomm Incorporated Providing references to previously decoded instructions of recently-provided instructions to be executed by a processor

Also Published As

Publication number Publication date
BR112017024301A2 (pt) 2018-07-24
PH12017550124A1 (en) 2018-02-26
IL256168A (en) 2018-02-28
CN107810476B (zh) 2021-02-23
US10346168B2 (en) 2019-07-09
US11048517B2 (en) 2021-06-29
HK1246443A1 (zh) 2018-09-07
KR20180020985A (ko) 2018-02-28
US20160378479A1 (en) 2016-12-29
KR102502780B1 (ko) 2023-02-22
MX2017016197A (es) 2018-03-01
EP3314399B1 (en) 2022-04-20
WO2016210027A1 (en) 2016-12-29
CN107810476A (zh) 2018-03-16
EP3314399A1 (en) 2018-05-02
CA2986266A1 (en) 2016-12-29
CL2017003310A1 (es) 2018-06-22
AU2016281599A1 (en) 2017-11-30
CO2017013252A2 (es) 2018-01-16
JP2018518775A (ja) 2018-07-12
US20190310852A1 (en) 2019-10-10

Similar Documents

Publication Publication Date Title
US11048517B2 (en) Decoupled processor instruction window and operand buffer
EP3314402B1 (en) Age-based management of instruction blocks in a processor instruction window
CN107810482B (zh) 指令块到处理器指令窗口的批量分配
CN107771318B (zh) 基于块大小将指令块映射到指令窗口
WO2016210020A1 (en) Explicit instruction scheduler state information for a processor
CN107810486B (zh) 锁定用于原子地执行的指令组的操作数的值
US10409599B2 (en) Decoding information about a group of instructions including a size of the group of instructions
CN114174985A (zh) 在基于块的指令集架构中高扇出通信的高效编码