TW201717021A - 基於區塊尺寸對映指令區塊 - Google Patents
基於區塊尺寸對映指令區塊 Download PDFInfo
- Publication number
- TW201717021A TW201717021A TW105119684A TW105119684A TW201717021A TW 201717021 A TW201717021 A TW 201717021A TW 105119684 A TW105119684 A TW 105119684A TW 105119684 A TW105119684 A TW 105119684A TW 201717021 A TW201717021 A TW 201717021A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- block
- instruction block
- window
- size
- Prior art date
Links
- 238000013507 mapping Methods 0.000 title claims abstract description 11
- 238000012856 packing Methods 0.000 claims abstract description 7
- 238000000034 method Methods 0.000 claims description 61
- 239000000872 buffer Substances 0.000 claims description 31
- 238000009826 distribution Methods 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000000605 extraction Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 18
- 230000006870 function Effects 0.000 abstract description 8
- 241000761456 Nops Species 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 15
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 230000003139 buffering effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000763 evoking effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Image Processing (AREA)
- Digital Computer Display Output (AREA)
- Image Analysis (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
在基於指令區塊的微處理器架構中之處理器核心利用具有標頭的指令區塊,該標頭包括索引至尺寸表,該尺寸表可使用記憶體、暫存器、邏輯、或編碼流中之一者表示。在處理器核心中的控制單元決定對於目前指令區塊要提取多少指令以基於從尺寸表所指示的區塊尺寸來對映至指令窗中。由於對於特定程式而言指令區塊尺寸通常是不均勻地分佈,尺寸表的利用使得能夠在將指令區塊匹配至在指令窗中的可利用的槽的尺寸上,相比於指令區塊具有固定尺寸或是具有較低精細(granularity)的配置更靈活。這種靈活性可藉由減少在特定指令區塊中的nops(無操作,例如null函式)的數量而使得能有較密的指令包裝,其增加整體處理效率。
Description
本發明是關於基於區塊尺寸對映指令區塊。
指令集架構(ISAs)與處理器的設計者在功率與效能做權衡。舉例而言,若設計者選擇具有提供較高效能的指令的ISA,則由處理器的功率消耗可能亦較高。或者,若設計者選擇具有消耗較低功率的指令的ISA,則效能可能較低。功率消耗可與在執行時由指令所使用之處理器的硬體資源的數量緊密相關,例如運算邏輯單元(ALUs)、快取線、或暫存器。大量的此硬體資源的使用可在以較高功率消耗的成本提供較高效能。或者,少量的此硬體資源的使用可在較低效能的成本導致較低功率消耗。編譯器可用於將高級代碼編譯成與ISA和處理器架構相容的指令。
在基於指令區塊的微處理器架構中之處理器核心利用具有標頭的指令區塊,該標頭包括索引至尺寸表,該尺寸表可使用記憶體、暫存器、邏輯、或編碼流中之一者表示。在處理器核心中的控制單元決定對於目前指令區塊要提取多少指令以基於從尺寸表所指示的區塊尺寸來對映至指令窗中。由於對於特定程式而言指令區塊尺寸通常是不均勻地分佈,尺寸表的利用使得能夠在將指令區塊匹配至在指令窗中的可利用的槽的尺寸上,相比於指令區塊具有固定尺寸或是具有較低精細(granularity)的配置更靈活。這種靈活性可藉由減少在特定指令區塊中的nops(無操作,例如null函式)的數量而使得能有較密的指令包裝,其增加整體處理效率。
本發明內容係提供以下面實施方式中進一步描述之簡化形式介紹概念之選擇。本發明內容並不意欲識別所主張標的之關鍵特徵或必要特徵,亦非意欲被用於幫助決定所主張標的之範疇。此外,所主張標的並未限制於解決任何或所有在本文任意處所述之缺點的實施。
第1圖示出示例性計算環境100,本發明指令區塊對映可與該計算環境100來利用。環境包括編譯器105,其可被利用以從程式115產生經編碼的機器可執行指令110。指令110可被處理器架構120處理,該處理器架構經配置以處理可變動尺寸容納(variable size containing)的指令的區塊,例如,在4和128間之指令。
處理器架構120一般包括在磚片式配置(tiled configuration)中的多個處理器核心(代表性地由元件符號125標示),其由晶片上網路(未圖示)互連並進一步與一或多個等級2(L2)快取(代表性地由元件符號130標示)交互操作。儘管核心與快取的數量和配置可隨著實施而不同,應注意實體核心可被合併在一起,在稱為「構成(composing)」的程序中於程式115的執行期間,成為一或多個較大的邏輯處理器,該較大的邏輯處理器可使得更多的處理能力可被用於程式執行。或者,當程式執行支援合適的執行緒等級的平行化時,核心125可被分割,在稱為「解構成(decomposing)」的程序中,以獨立的作業並由獨立的執行緒執行指令。
第2圖為示例性處理器核心125的部份的簡化的方塊圖。如圖所示,處理器核心125可包括前端控制單元202、指令快取204、分支預測器206、指令解碼器208、指令窗210、左運算元緩衝器212、右運算元緩衝器214、運算邏輯單元(ALU)216、另一ALU218、暫存器220、及載入/儲存佇列222。在一些情況下,匯流排(由箭頭標示)可攜帶資料及指令,而在其他情況下,匯流排可攜帶資料(例如,運算元)或控制訊號。例如,前端控制單元202可經由僅攜帶控制訊號的匯流排與其他控制網路通訊。儘管第2圖示出以特定佈置來佈置的用於處理器核心125的特定數量的示例性元件,根據特定實施的需要,可有更多或更少的元件不同地佈置。
前端控制單元202可包括配置以控制透過處理器核心的資訊流的電路,及用以協同在其中之活動的電路。前端控制單元202亦可包括用以實施有限狀態機(FSM)的電路,在該有限狀態機中,狀態列舉了處理器核心可採取的各個操作配置。使用運算碼(opcode)(如以下所描述)及/或其他輸入(例如,硬體級訊號),在前端控制單元202中的FSM電路可判定下一個狀態與控制輸出。
相應地,前端控制單元202可從指令快取204提取指令以用於由指令解碼器208處理。前端控制單元202可與處理器核心125的其他部分透過控制網路或匯流排來交換控制資訊。例如,前端控制單元可與後端控制單元224交換控制資訊。前端與後端控制單元在一些實施中可整合入單一控制單元。
前端控制單元202亦可協同與管理處理器架構120(第1圖)的各種核心與其他部分的控制。因此,舉例而言,指令的區塊可同時地執行於多個核心上且前端控制單元202可經由控制網路與其他核心交換控制資訊以確保同步,如其所需要,以用於指令的各種方塊的執行。
前端控制單元202可進一步處理關於自動被執行的指令的區塊的控制資訊與中間資訊。舉例而言,前端控制單元202可處理區塊標頭,該等標頭與指令的區塊相關聯。如在以下更詳盡論述,區塊標頭可包括關於指令的區塊的控制資訊及/或中間資訊。因此,前端控制單元202可包括組合邏輯、狀態機、暫時儲存單元,例如正反器以處理在區塊標頭中的各種欄位(fields)。
前端控制單元202每時鐘週期(clock cycle)可提取並解碼單一指令或多個指令。經解碼的指令可被儲存於指令窗210中,該指令窗被實施於處理核心硬體中作為緩衝器。指令窗210可支援指令排程器230,在一些實施中,其可保持每個經解碼的指令的輸入的就緒狀態(ready state),例如斷言(predications)與運算元。例如,當其所有的輸入(若有)已就緒,給定的指令可由指令排程器230喚起並準備要發出。
在指令被發出前,指令所需要的任何運算元可被儲存於左運算元緩衝器212及/或右運算元緩衝器214,根據所需要。根據指令的運算碼(opcode),操作可使用ALU216及/或ALU218或其他功能單元而實行於運算元上。ALU的輸出可被儲存於運算元緩衝器中或儲存於一或多個暫存器220中。以資料串流順序發出的儲存操作可佇列於載入/儲存佇列222直到指令的區塊提交(commits)。當指令的區塊提交,載入/儲存佇列222可將提交的區塊的儲存寫入至記憶體。分支預測器206可處理關於分支出類型(branch exit types)的區塊標頭資訊並分解該資訊於做出分支預測。
如上所述,處理器架構120一般利用被自動地提取、執行與提交的組織於區塊中的指令。因此,處理器核心可整體地提取屬於單一區塊的指令、將他們對映至在處理器核心內的執行資源、執行該等指令、並將他們的結果以不可分割的方式(atomic fashion)提交。處理器可提交所有指令的結果或是無效掉整個區塊的執行。區塊內的指令可以資料串流順序來執行。此外,處理器可允許在區塊內的指令使用訊息或其他合適形式的通訊來直接地彼此通訊。因此,產生結果的指令可,替代於將結果寫入至暫存器檔案,而將結果傳送至使用該結果的在區塊中的另一指令。作為範例,將儲存於暫存器R1與R2中的值相加的指令可表示為如以下示於表1: 表1
以此方式,源運算元並不以指令來指定且相反地,他們是由針對ADD指令的指令來指定。編譯器105(第1圖)在編譯指令110時可明確地編碼控制與資料相依(dependencies)以從而將處理器核心,從在執行時重新發現這些相依中釋放。這可有利地導致在執行這些指令的期間之減低的處理器負載和能量節約。作為範例,編譯器可使用斷言來將所有控制相依轉換成資料串流指令。使用這些技術,存取耗電的暫存器檔案的數量可以被減少。以下的表2,示出了用於此類指令的一般指令格式的範例: 表2
每個指令可以是一個合適的尺寸,例如32位元、64位元、或是其他的尺寸。在表2中所示的範例中,每個指令可包括操作碼(OPCODE)欄位、PR(predication,斷言)欄位、BID(broadcast ID,廣播ID)欄位、XOP(extended OPCODE,延伸OPCODE)欄位、目標1(TARGET1)欄位、與目標2(TARGET2)欄位。OPCODE欄位可對指令或指令的區塊指定獨一的操作代碼,例如加、讀取、寫入、或乘。PR(斷言)欄位可指定與指令相關聯的任何斷言。舉例而言,兩位元PR欄位可被用於如以下:00 - 未斷言、01 - 保留、10 - 斷言為假(predicated on false)、及11 - 斷言為真(predicated on true)。因此,舉例而言,若指令只有在當比較的結果為真時執行,則該指令可被斷言於實行比較的另一指令的結果之上。BID(廣播ID)欄位可支援發送運算元至區塊中的任意數量的使用的指令。2位元BID欄位可被用以編碼廣播頻道,在該廣播頻道上指令接收其運算元中的一個。XOP(延伸OPCODE)欄位可支援延伸操作碼(opcodes)的類型。TARGET1和TARGET2欄位可允許高達兩個目標指令被編碼。目標欄位可指定生產指令的結果的使用指令,從而允許指引指令間的通訊。
指令的每個區塊可具有與指令的區塊相關聯的特定資訊,例如與區塊相關連的控制資訊及/或中間資訊。此資訊可由編譯器105在將程式編譯成指令110以用於執行於處理器架構120上時而產生。此資訊的一些可被編譯器在編譯指令的區塊時擷取,並接著在執行時檢查指令的性質。
此外,與指令的區塊相關聯的資訊可以是中間資訊。舉例而言,一些資訊可使用特別指令或提供與暫存器或其他記憶體相關聯的目標編碼的指令而提供給處理器核心,該等暫存器或其他記憶體可具有與指令的區塊相關聯的關連資訊。在特別的指令的狀況下,這種指令的操作碼欄位可被用以傳送相關於指令的區塊的資訊。在另一範例中,此資訊可被保持為處理器狀態字(processor status word,PSW)的一部分。舉例而言,此資訊可有利地幫助處理器更有效率地執行指令的區塊。
各種類型的資訊可使用區塊標頭、特別指令、記憶體參照位置、處理器狀態字(PSW)、或各種其中之組合,而被提供給處理器核心。說明性指令區塊標頭300示於第3圖。在此說明性範例中,區塊標頭300是128位元,且自區塊的程式計數器偏移0處開始。亦示出每個欄位的個別開始與結束。欄位於以下第3圖中描述: 表3
儘管在第3圖中所示與在表3中所描述的區塊標頭包括多個欄位,其意欲為說明性的,且其他欄位的配置可被利用於特定的實施。
在說明性範例中,編譯器105(第1圖)可選擇資訊以用於包括於區塊標頭中或用於特別的指令,該等指令可基於指令的特性及/或基於處理需要的特性,例如高效能或低功耗,而提供此資訊給處理器核心。這可有利地允許在效能與功耗之間的權衡的更加平衡。對於特定類型的處理應用程式,例如以大量核心的高效能計算,大量的資訊可能是理想的選項。替代地,對其他類型的處理應用程式,例如用於事物間之網際網路、行動裝置、可穿戴式裝置、頭戴式顯示(HMD)裝置、或其他嵌入式計算類型的應用程式上之嵌入式處理器,較少資訊可能是理想的選項。
使用區塊標頭或特別指令通訊的資訊的延伸可根據在區塊中的指令的本質而定制(tailored)。舉例而言,若指令的區塊包括以遞迴(recurring)方式執行的迴圈,則可能需要更佳延伸的資訊來將與區塊相關聯的控制訊息封裝。附加控制資訊可允許處理器核心更有效率地執行迴圈以從而改善效能。
替代地,若有將很少被執行的指令的區塊,則相對地較少資訊就足夠。舉例而言,若指令的區塊包括幾個經斷言的控制迴圈,則可能需要更多資訊。類似地,若指令的區塊具有延伸數量的指令層級平行化,則需要更多的資訊作為區塊標頭或特別指令的一部分。
在區塊標頭或特別指令中的額外的控制資訊可被使用,舉例而言,用以有效率地利用在指令的區塊中的指令層級平行化。若指令的區塊包括各種分支預測,則可能需要更多資訊。關於分支預測的附加控制資訊將通常因其可能導致較少的管線刷新(pipeline flushes)而以更有效率地增強代碼的執行。
應注意對應於在區塊標頭中的欄位的功能可能被結合或進一步分離。同樣地,特別指令可提供與第3圖及表3中所示的任意一個欄位相關連的資訊,或是其可結合來自這些欄位的資訊。舉例而言,儘管第3圖及表3的示例性區塊標頭包括單獨的ID欄位和SIZE欄位,這兩個欄位可被結合成單一個欄位。
同樣的,單一的特別指令可以,當被解碼時,提供關於指令的區塊的尺寸的資訊和在ID欄位中的資訊。除非特別指明,特別指令可被包括於在指令的區塊中的任意處。舉例而言,一個BLOCK_SIZE #size指令可包括中間(immediate)欄位,該中間欄位包括指令的區塊的尺寸的值。中間欄位可包括提供尺寸資訊的整數值。替代地,中間欄位可包括關於尺寸資訊的精編碼的值,使得尺寸資訊可藉由解碼該經編碼的值而獲得,舉例而言,藉由在可使用邏輯、暫存器、記憶體、或代碼流來表示的尺寸表中查詢該值。在另一範例中,BLOCK_ID #id特別指令可傳遞區塊ID號碼。
單獨的數學函式或基於記憶體的表格可將區塊ID對映至區塊標頭的記憶體位址。被傳遞作為此指令的一部分的block ID可以是對指令的每一個區塊為唯一的。在另一範例中,BLOCK_HDR_ID #ID指令可傳遞區塊標頭ID號碼。單獨的數學函式或基於記憶體的表格可將區塊ID對映至區塊標頭的記憶體位址。傳遞作為此指令的一部份的區塊ID可藉由具有相同標頭結構或欄位的指令的多個區塊而共享。
在另一範例中,BLOCK_INFO #size、#exit types、#store mask、#write mask指令可提供關於指令的列舉的欄位。這些欄位可對應至關於表3於上文所論述的任意一個欄位。根據特定實施的要求,可對區塊標頭結構與格式和特別指令做出改變。舉例而言,額外的欄位可被提供,該額外的欄位包括與指令的區塊的特性相關連之資訊。基於指令的區塊的執行頻率,可包括特定欄位。
包括在區塊標頭結構中的欄位,或是經由特別指令或其他於先前論述的機制而提供的資訊,可以是特定處理器或處理器家族的公開可利用的標準指令集架構(Instruction Set Architecture, ISA)的一部分。欄位的子集合可以是ISA的專有延伸(proprietary extension)。在欄位中的特定位元值可以是用於處理器的標準ISA的一部分,但在欄位中的特定其他位元值可以提供專有(proprietary)功能。此範例欄位可允許ISA設計師增加專有延伸至ISA而無完整地揭露與專有延伸相關聯的性質和功能。因此,在此例中,由ISA設計師發佈的編譯器工具將支援在欄位中的專有位元值、完整地獨立的專有欄位(proprietary field)、或特別指令。此欄位的使用可以是特別地與硬體加速相關,該硬體加速是專有於特定處理器設計。因此,程式可包括區塊標頭欄位或不可被辨識的特別指令;但該程式可進一步包括方案(recipe)以解釋欄位或解碼指令。
編譯器105(第1圖)可處理指令的區塊,該指令的區塊一般配置以由一或多個處理器核心不可分割地(atomically)執行,以為了產生關於指令的區塊資訊,包括中間資訊和控制資訊。一些程式可被針對僅一個ISA編譯,例如,與物聯網、行動裝置、HMD裝置、可穿戴式裝置、或其他嵌入式計算環境的處理器所使用的ISA。編譯器可利用技術,例如靜態編碼分析或編碼效能分析(code profiling)來產生與指令的區塊相關連的資訊。在一些情況下,編譯器可考量如指令的區塊的特性和其執行頻率的因素。指令的區塊的相關特性可包括,舉例而言,但不必然限於(1)指令層級平行性、(2)迴圈數量、(3)預測控制指令的數量、及(4)分支預測的數量。
第4圖為用於管理佈置於處理器核心中之指令窗中的指令區塊之示例性方法400的流程圖。除非特別說明,在第4圖的流程圖中的方法或步驟及在圖式中所示的其他流程圖中與以下所描述的那些並不被受限於特定順序或序列。此外,其中的一些方法或步驟可以同時地發生或被實行,且根據實施的需求,並不是所有的方法或步驟都必須被實行於特定實施中,且一些方法或步驟可選擇性地被利用。同樣地,在一些實施中一些步驟可被消除以降低負載(overhead),但舉例而言,這可能造成增加的易碎性(brittleness)。可實施於任何特定應用程式中的各種功能、成本、負載、效能、與強韌性(robustness)權衡可一般性地被視為設計選擇的事宜。
在步驟405,所擷取的指令區塊的年齡(ages)被明顯地追蹤,舉例而言,使用年齡向量(age vector)。因此,並不是使用在指令窗中的指令區塊順序(例如,位置),其一般被用以隱含地追蹤年齡,而是控制單元維持明確的狀態。指令區塊以年齡排序的清單在步驟410中被維持。指令區塊優先(其中優先在某些情況中可由編譯器決定)亦可被追蹤且指令區塊的以優先排序的清單亦可在一些實施中被維持。
在步驟415,當指令區塊被識別用於處理時,以年齡排序的清單被搜尋以找出匹配的指令區塊。在一些實施中以優先排序的清單亦可針對匹配而被搜尋。若找到匹配的指令區塊,則其可被更新,於步驟420中,而不用將其自指令快取重新擷取,其可增進處理器核心效率。此更新使得能夠在某些情況中重新利用指令區塊,舉例而言,當程式執行於緊湊迴圈(tight loop)中且指令分支回他們自身。當多個處理器核心組成大規模陣列時,此效率的提昇亦可被加成。當更新指令區塊,指令被留在原處,且僅有在運算元緩衝器和載入/儲存佇列中的有效位元被清除。
若未找到對指令區塊的匹配,則以年齡排序的清單(或以優先排序的清單)可再次被利用以找出指令區塊,該指令區塊可被提交以在指令窗中開啟槽以用於新的指令區塊。舉例而言,最老的指令區塊或最低優先指令區塊可被提交(其中高優先區塊可能被希望保持被緩衝,由於有其未來重新使用的可能性)。在步驟425中,新的指令區塊被對映至可用的槽。指令區塊可使用批量(bulk)分配程序而分配,在該批量分配程序中在區塊中的指令和與指令相關聯的所有資源一次被提取(即,一起的(en masse))。
在步驟430,新的指令區塊被執行使得其指令被不可分割地提交。其他的指令區塊可以年齡為排序執行,以類似習知重新排序緩衝器的方式,在步驟435以不可切割地方式提交他們各自的指令。
第5圖為示例性方法500的流程圖,該方法可由基於指令區塊的微架構實行。在步驟505中,在處理器核心中的控制單元使得所提取的指令區塊被以連續替換或非連續替換緩衝。在步驟510,以連續指令區塊替換,緩衝器可類似循環緩衝器操作。在步驟515,以非連續指令區塊替換,指令區塊可被非順序的替換。舉例而言,在步驟520可實施明顯的基於年齡的追蹤,使得指令區塊基於追蹤的年齡而被提交並替換,以上文描述的類似的方式。在步驟525,優先亦可被追蹤且所追蹤的優先可被用以提交及取代指令區塊。
第6圖為示例性方法600的流程圖,該方法可由佈置於處理器核心中的控制單元所實行。在步驟605,緩衝的指令區塊的狀態被追蹤且指令區塊的清單在步驟610使用追蹤狀態被維持。舉例而言,根據特定實施需求,狀態可以包括年齡、優先、或其他資訊或上下文(context)。在步驟615,當指令區塊被識別用於對映時,清單被針對匹配檢查,如步驟620所示。從清單中之匹配指令區塊在步驟625被更新而沒有重新提取。在步驟630,當在清單中沒有找到匹配指令區塊,則指令區塊從指令快取提取並以上文所述類似之方法對映至指令窗中的可利用的槽。
第7圖為用於管理佈置於處理器核心中之指令窗中的指令區塊之示例性方法700的流程圖。在步驟705,指令區塊尺寸的尺寸表在處理器核心中被維持。尺寸表可被以各種方式表示,舉例而言,使用邏輯、暫存器、記憶體、代碼流、或其他合適的建構體中之一者。在步驟710,被編碼於指令區塊的標頭中的索引被讀出。指令區塊包括一或多個經解碼的指令。因此,並不是使用示於第3圖與表3中的尺寸欄位來硬編碼(hard code)指令區塊尺寸,該欄位可被用以編碼或儲存對該尺寸表的索引。亦即,索引可作用為指標指向在尺寸窗中的條目,以使得特定尺寸能夠與指令區塊相關聯。
被包括在尺寸表中的尺寸條目的數量可以隨著實施而不同。尺寸條目的更大的數量可被利用以使得能夠更精細(granularity),其可在與特定程式相關聯的指令區塊尺寸有相對較寬分佈的情況中是有利的,但在一般的實施中有增加負載(overhead)的成本。在一些情況下,包括在表中的尺寸的數量可由編譯器以一種最佳化整體指令包裝密度(packing density)的方式選擇以涵蓋指令區塊的特定分佈並且以最小化無操作(no ops)。舉例而言,包括於尺寸表中的尺寸可被選擇以匹配在程式中常用的區塊指令尺寸。在步驟715,索引被用以從尺寸表查詢指令區塊尺寸。在步驟720中,指令區塊基於其尺寸被對映至在指令窗中可利用的槽。
在一些實施中,如在步驟725中所示,指令窗可被分段成兩個或兩個以上子窗,舉例而言,其使用兩個或兩個以上不同的尺寸。在被分段的子窗中的此變化可使得能夠進一步容納指令區塊尺寸的特定分佈並可進一步增加指令包裝密度。分段亦可在一些情境中動態地實行。
第8圖是示例性方法800的流程圖,該方法可由基於指令區塊的微架構所實行。在步驟805中,尺寸表被實施。如上文所論述,尺寸表可使用邏輯、暫存器、記憶體、代碼流、或其他合適的建構體中之一者實施,且可包括對應至由特定程式利用的指令區塊的分佈中所常利用的尺寸。在步驟810,指令區塊標頭被針對指標檢查,該指標參照至尺寸表中的條目。在步驟815中,由表的條目所識別的尺寸被用以判定在指令窗中的指令區塊的放置。
在步驟820,與指令區塊相關聯的資源是批量(bulk)分配的。在步驟825當將指令區塊對映於指令窗中時,在指令區塊標頭中指定的限制被使用。這些可包括,舉例而言,指令窗的對齊和容量以緩衝指令區塊。在步驟830,在指令窗中的指令區塊的順序由控制單元追蹤且區塊可在某些情況下不照順序被提交。舉例而言,並非使用在其中區塊被基於他們在指令窗中的位置而處理的指令區塊的循環緩衝器,而是區塊可被優先化,使得重度使用或特別重要的指令區塊被不照順序地處理,其可提高處理效率。
在步驟835,指令區塊的年齡可明顯地被追蹤且在某些情況中指令區塊可基於此明顯追蹤的年齡而提交。在步驟840,指令區塊被更新(亦即,被重新使用而不必要從指令快取重新提取指令區塊)。
第9圖為示例性方法900的流程圖,該方法可由佈置於處理器核心中的控制單元所實行。在步驟905,指令窗以上文所述類似之方式配置與具有兩個或兩個以上不同尺寸的多個分段。在步驟910,區塊指令標頭針對被編碼與其中的索引檢查。於步驟915,在使用索引的尺寸表中實行查詢,且在步驟920,基於該尺寸查詢,指令區塊被置放入指令窗分段中,該指令窗分段適合該區塊的特定尺寸。在步驟925,與指令區塊相關聯的資源使用批量分配(bulk allocation)而提取。
第10圖為用於管理佈置於處理器核心中之指令窗中的指令區塊之示例性方法1000的流程圖。在步驟1005,指令區塊被從指令快取對映至指令窗中。指令區塊包括一或多個經解碼的指令。在步驟1010,與在指令區塊中的該等指令的每一者相關聯的資源被分配。資源一般包括控制位元及運算元且該分配可使用批量分配程序(bulk allocation process)而實行,在該批量分配程序中,所有的資源被一起的(en masse)獲得或是提取。
代替於緊密地將資源與指令耦合,指令窗與運算元緩衝器被解耦合使得他們可以獨立地藉由維持在資源與在區塊中之經解碼的指令上的一或多個指標而操作,如步驟1015中所示。在步驟1020,當指令區塊被更新(亦即,被重新使用而不必要從指令快取重新提取指令區塊),則在步驟1025中資源可藉由跟著指標回至原始控制狀態而被重新使用。
此類解耦合可提供增加的處理器核心效率,特別是當指令區塊被更新而沒有如一般發生的重新提取,舉例而言,當程式執行於緊湊迴圈中且指令重複地被利用。藉由透過指標建立控制狀態,資源有效率地預驗證而沒有處理週期和其他成本的額外支出。當多個處理器核心組成大規模陣列時,此效率的提昇亦可被加成。
第11圖是示例性方法1100的流程圖,該方法可由基於指令區塊的微架構所實行。在步驟1105,指令區塊被以新的指令區塊取代經提交的指令區塊的方式而對映至指令窗中。該對映可受到指令區塊的標頭中所指定的各種限制,舉例而言,對於指令窗的對齊與容量的限制以緩衝指令區塊,如在步驟1110中所指示。資源在步驟1115中為了新的指令區塊而分配,其一般使用批量分配程序(bulk allocation process)實施,如上文所述。
在步驟1120,在指令窗中的指令區塊的順序由控制單元追蹤且區塊可在某些情況下不照順序被提交。舉例而言,並非使用在其中區塊被基於他們在指令窗中的位置而處理的指令區塊的循環緩衝器,而是區塊可被優先化,使得重度使用或特別重要的指令區塊被不照順序地處理,其可提高處理效率。
在步驟1125,指令窗從運算元緩衝器解耦合,使得,舉例而言,指令的區塊與運算元的區塊被獨立地管理(即,在指令與運算元間沒有使用嚴格對應)。如上所述,該解耦合藉由使得資源能夠在當指令區塊被更新時預先驗證而增加效率。
第12圖為示例性方法1200的流程圖,該方法可由佈置於處理器核心中的控制單元所實行。在步驟1205,指令窗被維持以用於緩衝一或多個指令區塊。在步驟1210中一或多個運算元緩衝器被維持以用於緩衝與在指令區塊中的指令相關聯的資源。如上所述,資源通常包括控制位元和運算元。在步驟1215中狀態被使用指標在指令與資源上來追蹤。
當指令區塊被更新,在方塊1220中,指標可被追回至被追蹤的狀態。在步驟1225中,當指令區塊提交時,在運算元緩衝器中的控制位元被清除且新的指標被設置。如與上文中所論述之方法,指令窗與運算元緩衝器被解耦合以使得指令的區塊和運算元的區塊被控制單元以基於非對應的維持,於步驟1230。
第13圖為用於管理佈置於處理器核心中之指令窗中的指令區塊之示例性方法1300的流程圖。在步驟1305,指令區塊是使用批量(bulk)分配程序而分配的,在該批量分配程序中在區塊中的指令和與指令相關聯的所有資源一次被提取(即,一起的(en masse))。相比於在其中指令與資源被重複地以較小塊提取的傳統架構,本文之批量分配使得在區塊中的所有指令能夠同時地且一致地管理,其可改善處理器核心操作的效率。此改進可能在特定程式建構(例如,最小化分支的一者)使得編譯器能夠相對地產生大量指令區塊的情況下,更為顯著。舉例而言,在一些實施中,指令區塊可包括高達128個指令。
指令區塊的批量分配亦透過更新功能而增強了處理器核心效率,在該更新功能中,指令區塊被重新使用而沒有如一般會發生的重新提取,舉例而言,在當程式執行於緊湊迴圈中且指令分支回他們自身時。當多個處理器核心組成大規模陣列時,此效率的提昇亦可被加成。當更新指令區塊時,指令被留在原處,且僅有在運算元緩衝器和載入/儲存佇列中的有效位元被清除。這使得提取經更新的指令區塊被完全越過(bypassed)。
當指令與資源組到位時,指令區塊的批量分配亦使得能有額外的處理效率。舉例而言,運算元和明確的訊息可從區塊中的一個指令被發送到另一個。此功能在傳統架構中沒有被啟用,因為一個指令是無法發送任何事物至尚未被分配(allocated)的另一指令。產生常數(constants)的指令亦可將值固定在運算元緩衝器中使得他們在更新之後維持有效,所以他們不需要在每次指令區塊執行時被重新產生。
當指令區塊被對映至指令窗時,在步驟1310,他們受到可由對映政策應用的限制、在區塊標頭所指定的限制、或是兩者的影響,於步驟1315。在一些情況中,政策可由編譯器根據給定程式的特定要求而設置。指定的限制可包括,舉例而言,指令窗的對齊和容量的限制以緩衝指令區塊。
在步驟1320,於一些實施中,指令窗可被分段成相同尺寸或不同尺寸的子窗。由於對給定程式而言,指令區塊尺寸通常隨機地或不均勻地分佈,再經分段的子窗中之此變化可更有效率地容納指令區塊尺寸的特定的分佈,以從而增加在指令窗中的指令包裝密度。分段亦可在一些情境中,根據目前正在被處理器核心處理的區塊尺寸的分佈,而動態地實行。
在一些實施中,指令區塊標頭可編碼索引,或是包括指標指向尺寸表,該尺寸表使用邏輯、暫存器、記憶體、或編碼流中之一者實施。在步驟1325,尺寸表可包括指令區塊尺寸條目,使得指令區塊尺寸可從標中查詢。經編碼的索引和尺寸表的使用可增強在指令區塊中的指令包裝密度,此提升是藉由給予在可利用的區塊尺寸中更加精細(granularity)以減少nops的發生(no operations,無操作),舉例而言,當區塊包括相對小數量的指令時當實施分支時。
第14圖為示例性方法1400的流程圖,該方法可由基於指令區塊的微架構實行。在步驟1405,處理器核心中的控制單元應用政策以處理指令區塊。在步驟1410中,指令區塊是使用前文所述之批量(bulk)分配程序而分配的,該批量分配程序中,指令和所有相關聯資源一次被提取。在步驟1415,指令區塊被對映至指令窗中,在其中該對映可受到各種限制,例如對齊的限制與指令窗的容量的限制以緩衝指令區塊,該等限制被指定於指令區塊的標頭中,如上文所述。
在步驟1420中,政策可被應用,包括由控制單元追蹤在指令窗中的指令區塊的順序。在某些情況中,區塊可不照順序提交,例如,並非使用在其中區塊被基於他們在指令窗中的位置而處理之指令區塊的循環緩衝器。在步驟1425中,政策可被應用,包括基於優先(在一些情況中其可由編譯器指定)處理區塊使得重度使用或特別重要的區塊被不照順序地處理,其可進一步提高處理效率。
在步驟1430,政策可被應用,包括明顯地追蹤指令區塊的年齡且在一些情況中指令區塊可基於此明顯追蹤的年齡而被提交。在步驟1435,政策可被應用,包括根據在指令窗(或窗的分段)中的適合地調整尺寸的槽的可利用性對映指令區塊。在步驟1440,政策可被應用,包括使用循環緩衝器將指令區塊對映至指令窗。
在一些實施中,可利用政策的各種組合以為了增強處理器核心效率。例如,控制單元可在政策上動態地切換(toggle)以應用提供對於特定指令區塊或指令區塊群更佳操作的政策。舉例而言,在一些情況中,使用循環緩衝技術可能更有效率,該循環緩衝技術中,指令區塊以連續的方式依順序處理。在其他情況下,不照順序且基於年齡的處理可提供更佳操作。
第15圖為示例性方法1500的流程圖,該方法可由佈置於處理器核心中的控制單元所實行。在步驟1505,指令窗以上文所述類似之方式配置與具有兩個或兩個以上不同尺寸的多個分段。在步驟1510,指令區塊被提取且所有其相關聯的資源被提取於步驟1515中。
在步驟1520,指令區塊被放置於窗的合適的分段中,其最大化窗中的指令密度。舉例而言,若編譯器產生包括相對大量而具有低指令計數的區塊(例如,以實施程式分支等等)之區塊尺寸的分佈,則指令窗可具有為小指令區塊指定地調整尺寸之分段。類似地,若有相對大量的高指令計數區塊(例如,用於科學或類似的應用),則分段可被特別為此較大指令區塊調整尺寸。因此,指令窗分段尺寸可根據特定尺寸分佈而被調整或是在某些情況下,當分佈改變時,動態地調整。在方塊1525,指令區塊可受制於在指令區塊標頭中所指定的限制,如上文中所述。
基於區塊尺寸本文對映指令區塊的各種範例實施現以說明的方式且並非為所有實施例的窮舉清單來呈現。範例包括一種用於管理佈置在處理器中於指令窗中之指令區塊的方法,該方法包括以下步驟:維持(maintaining)指令區塊尺寸的尺寸表;讀取編碼於指令區塊的標頭中之索引,其中該指令區塊包括一或多個指令;使用該索引從該尺寸表查詢指令區塊尺寸;及基於該尺寸查詢,將該指令區塊對映至指令窗中的可利用的槽中,以為了最大化在該指令窗中的指令包裝(instruction packing)。在進一步的範例中,該方法包括:將該指令窗分段(segmenting)成子窗。在另一範例中,該方法進一步包括:配置經分段的該等子窗以共享通用尺寸或是被以使用兩個或兩個以上不同的尺寸而實施。在另一範例中,經分段的該等子窗根據指令區塊的尺寸的分佈而動態地調整尺寸。在另一範例中,該方法進一步包括:將該尺寸表維持(maintaining)為邏輯尺寸表,該邏輯尺寸表是使用邏輯、暫存器、記憶體、或編碼流中之一者所表示。在另一範例中,該方法進一步包括在該尺寸表中設置該等尺寸以從與程式相關聯的指令區塊尺寸的分佈上匹配通用的尺寸。
進一步的範例包括一種基於指令區塊的微架構,包括:控制單元;一或多個運算元緩衝器;和指令窗,該指令窗經配置以儲存經解碼的指令區塊,該等經解碼的指令區塊與程式相關聯,該程式受該控制單元控制,其中該控制包括以下之操作:使用邏輯、暫存器、記憶體、或編碼流中之一者實施尺寸表,其中該尺寸表包括兩個或兩個以上不同的尺寸,該兩個或兩個以上不同的尺寸對應於使用於該程式中之指令區塊的分佈中之通用的尺寸,檢查指令區塊的標頭中的指標,其中該指標參照至在該尺寸表中識別的指令區塊尺寸,及基於從該尺寸表中識別的該尺寸而決定在該指令窗中指令區塊的放置。在另一範例中,該基於指令區塊的微架構,進一步包括:一配置以對每個指令區塊實行批量分配(bulk allocation)以獲得與在該區塊中的指令相關聯的資源。在另一範例中,該基於指令區塊的微架構,進一步包括:一配置以基於指定於該指令區塊的標頭中之限制來對映該等指令區塊,其中該等指定的限制包括對齊限制或該指令窗的指令區塊容量限制中之一者。在另一範例中,該基於指令區塊的微架構,進一步包括:一設置以追蹤在指令窗中的該等指令區塊的順序,並不照順序地提交(committing)指令區塊。在另一範例中,該基於指令區塊的微架構,進一步包括:一設置以明顯地追蹤目前對映於指令窗中的指令區塊的年齡,並基於明顯地追蹤的年齡來提交指令區塊。 在另一範例中,該基於指令區塊的微架構,進一步包括:一設置以將指令區塊對映至該指令窗,該對映是在當在該指令窗中適於(fits)該指令區塊的槽為可利用時。在另一範例中,該基於指令區塊的微架構,進一步包括:一設置以使用循環緩衝器將指令區塊對映至該指令窗。在另一範例中,該基於指令區塊的微架構,進一步包括:一設置以更新該指令區塊而沒有從指令快取重新提取(re-fetching)該指令區塊。
進一步的範例包括一種佈置於處理器中的控制單元,該控制單元經配置以實行一種用於指令區塊管理的方法,該方法包括以下步驟:配置具有多個分段(segments)的指令窗,其中分段具有兩個或兩個以上不同的尺寸;檢查指令區塊的標頭以針對編碼於其中的索引,其中該指令區塊包括包括一或多個指令;使用該索引從該尺寸表查詢指令區塊尺寸;及基於該尺寸查詢,將該指令區塊放置於該指令窗的分段中。在另一範例中,該控制單元,進一步包括;針對在指令窗中的放置上之指定的限制而檢查該指令區塊的標頭,並根據該等經指定的限制實行該放置,其中該等經指定的限制包括對齊限制或指令區塊容量限制中之一者。在另一範例中,該控制單元,進一步包括:配置經分段的該指令窗為邏輯分段的指令窗,該邏輯分段的指令窗是分散在複數個處理器核心上。 在另一範例中,該控制單元,進一步包括:使用在一晶片中網路(in-chip network)上攜帶之通訊來維持在該邏輯分段的指令窗間之狀態。在另一範例中,該控制單元,進一步包括:實行資源的提取為批量分配(bulk allocation)。 在另一範例中,該控制單元,進一步包括:更新該指令區塊而沒有從指令快取重新提取該指令區塊。
僅以說明方式提供上文所描述之所主張之標的,且該上文所描述之所主張之標的並不被視為限制。在未跟隨經說明及描述之範例實施例及應用之情況下及未悖離本文之真實精神及範疇(闡述於後續之申請專利範圍中)的情況下,可對本文所描述之所主張之標的做各種修改及變化。
100‧‧‧計算環境
105‧‧‧編譯器
110‧‧‧經編碼指令
115‧‧‧程式
120‧‧‧處理器架構
125‧‧‧核心
130‧‧‧L2快取
202‧‧‧前端控制單元
204‧‧‧指令快取
206‧‧‧分支預測器
208‧‧‧指令解碼器
210‧‧‧指令訊窗
212‧‧‧左運算元緩衝器
214‧‧‧右運算元緩衝器
216‧‧‧運算邏輯單元
218‧‧‧運算邏輯單元
220‧‧‧暫存器
222‧‧‧載入/儲存佇列
224‧‧‧後端控制單元
230‧‧‧指令排程器
300‧‧‧區塊標頭
400‧‧‧方法
500‧‧‧方法
600‧‧‧方法
700‧‧‧方法
800‧‧‧方法
1000‧‧‧方法
1100‧‧‧方法
1200‧‧‧方法
1300‧‧‧方法
1400‧‧‧方法
1500‧‧‧方法
405-1525‧‧‧步驟
105‧‧‧編譯器
110‧‧‧經編碼指令
115‧‧‧程式
120‧‧‧處理器架構
125‧‧‧核心
130‧‧‧L2快取
202‧‧‧前端控制單元
204‧‧‧指令快取
206‧‧‧分支預測器
208‧‧‧指令解碼器
210‧‧‧指令訊窗
212‧‧‧左運算元緩衝器
214‧‧‧右運算元緩衝器
216‧‧‧運算邏輯單元
218‧‧‧運算邏輯單元
220‧‧‧暫存器
222‧‧‧載入/儲存佇列
224‧‧‧後端控制單元
230‧‧‧指令排程器
300‧‧‧區塊標頭
400‧‧‧方法
500‧‧‧方法
600‧‧‧方法
700‧‧‧方法
800‧‧‧方法
1000‧‧‧方法
1100‧‧‧方法
1200‧‧‧方法
1300‧‧‧方法
1400‧‧‧方法
1500‧‧‧方法
405-1525‧‧‧步驟
第1圖示出示例性計算環境,在該計算環境中編譯器提供經編碼的指令,該等指令執行在包括多個處理器核心的架構上;
第2圖為用於範例處理器核心的示例性微架構的方塊圖;
第3圖示出用於區塊標頭的示例性配置;及
第4-15圖為示例性方法的流程圖。
類似的元件符號指示圖式中類似的元件。 圖式沒有按比例繪製,除非有另外說明。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
700‧‧‧方法
705-725‧‧‧步驟
Claims (20)
- 一種用於管理佈置在一處理器中於一指令窗中之指令區塊的方法,該方法包括以下步驟: 維持(maintaining)指令區塊尺寸的一尺寸表; 讀取編碼於一指令區塊的一標頭中之一索引,其中該指令區塊包括一或多個指令; 使用該索引從該尺寸表查詢一指令區塊尺寸;及 基於該尺寸查詢,將該指令區塊對映至一指令窗中的一可利用的槽中,以為了最大化在該指令窗中的指令包裝(instruction packing)。
- 如請求項1所述之方法,進一步包括以下步驟:將該指令窗分段(segmenting)成子窗。
- 如請求項2所述之方法,進一步包括以下步驟:配置經分段的該等子窗以共享一通用尺寸或是被以使用兩個或兩個以上不同的尺寸而實施。
- 如請求項3所述之方法,其中經分段的該等子窗根據指令區塊的尺寸的一分佈而動態地調整尺寸。
- 如請求項1所述之方法,進一步包括以下步驟:將該尺寸表維持(maintaining)為一邏輯尺寸表,該邏輯尺寸表是使用邏輯、暫存器、記憶體、或編碼流中之一者所表示。
- 如請求項1所述之方法,進一步包括以下步驟:在該尺寸表中設置該等尺寸以從與一程式相關聯的指令區塊尺寸的一分佈上匹配通用的尺寸。
- 一種基於指令區塊的微架構,包括: 一控制單元; 一或多個運算元緩衝器;和 一指令窗,該指令窗經配置以儲存經解碼的指令區塊,該等經解碼的指令區塊與一程式相關聯,該程式受該控制單元控制,其中該控制包括以下之操作: 使用邏輯、暫存器、記憶體、或編碼流中之一者實施一尺寸表,其中該尺寸表包括兩個或兩個以上不同的尺寸,該兩個或兩個以上不同的尺寸對應於使用於該程式中之指令區塊的一分佈中之通用的尺寸, 檢查一指令區塊的一標頭中的一指標,其中該指標參照至在該尺寸表中識別的一指令區塊尺寸,及 基於從該尺寸表中識別的該尺寸而決定在該指令窗中一指令區塊的一放置。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以對每個指令區塊實行批量分配(bulk allocation)以獲得與在該區塊中的指令相關聯的資源。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以基於指定於該指令區塊的一標頭中之限制來對映該等指令區塊,其中該等指定的限制包括對齊限制或該指令窗的指令區塊容量限制中之一者。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以追蹤在指令窗中的該等指令區塊的一順序,並不照順序地提交(committing)一指令區塊。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以明顯地追蹤目前對映於指令窗中的指令區塊的年齡,並基於一明顯地追蹤的年齡來提交一指令區塊。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以將指令區塊對映至該指令窗,該對映是在當在該指令窗中適於(fits)該指令區塊的一槽為可利用時。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以使用一循環緩衝器將指令區塊對映至該指令窗。
- 如請求項7所述之基於指令區塊的微架構,進一步包括:一配置以更新該指令區塊而沒有從一指令快取重新提取(re-fetching)該指令區塊。
- 一種佈置於一處理器中的控制單元,該控制單元經配置以實行一種用於指令區塊管理的方法,該方法包括以下步驟: 配置具有多個分段(segments)的一指令窗,其中分段具有兩個或兩個以上不同的尺寸; 檢查一指令區塊的一標頭以針對編碼於其中的一索引,其中該指令區塊包括包括一或多個指令; 使用該索引從該尺寸表查詢一指令區塊尺寸;及 基於該尺寸查詢,將該指令區塊放置於該指令窗的一分段中。
- 如請求項15所述之控制單元,進一步包括:針對在一指令窗中的放置上之指定的限制而檢查該指令區塊的一標頭,並根據該等經指定的限制實行該放置,其中該等經指定的限制包括對齊限制或指令區塊容量限制中之一者。
- 如請求項15所述之控制單元,進一步包括:配置經分段的該指令窗為一邏輯分段的指令窗,該邏輯分段的指令窗是分散在複數個處理器核心上。
- 如請求項17所述之控制單元,進一步包括:使用在一晶片中網路(in-chip network)上攜帶之通訊來維持在該邏輯分段的指令窗間之狀態。
- 如請求項15所述之控制單元,進一步包括:實行資源的提取為一批量分配(bulk allocation)。
- 如請求項15所述之控制單元,進一步包括:更新該指令區塊而沒有從一指令快取重新提取該指令區塊。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/752,768 US9952867B2 (en) | 2015-06-26 | 2015-06-26 | Mapping instruction blocks based on block size |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201717021A true TW201717021A (zh) | 2017-05-16 |
Family
ID=56511878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105119684A TW201717021A (zh) | 2015-06-26 | 2016-06-23 | 基於區塊尺寸對映指令區塊 |
Country Status (16)
Country | Link |
---|---|
US (1) | US9952867B2 (zh) |
EP (1) | EP3314405A1 (zh) |
JP (1) | JP2018519597A (zh) |
KR (1) | KR102575938B1 (zh) |
CN (1) | CN107771318B (zh) |
AU (1) | AU2016281598A1 (zh) |
BR (1) | BR112017024335A2 (zh) |
CA (1) | CA2985495A1 (zh) |
CL (1) | CL2017003264A1 (zh) |
CO (1) | CO2017013251A2 (zh) |
HK (1) | HK1246430A1 (zh) |
IL (1) | IL256176A (zh) |
MX (1) | MX2017016202A (zh) |
PH (1) | PH12017550125A1 (zh) |
TW (1) | TW201717021A (zh) |
WO (1) | WO2016210026A1 (zh) |
Families Citing this family (13)
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 |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
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 |
US9952867B2 (en) * | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
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 |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
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 |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US9720693B2 (en) * | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
CN110750856B (zh) * | 2019-09-06 | 2023-06-06 | 东南大学 | 一种基于机器学习的有效指令窗口大小评估方法 |
Family Cites Families (228)
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 |
US5446904A (en) | 1991-05-17 | 1995-08-29 | Zenith Data Systems Corporation | Suspend/resume capability for a protected mode microprocessor |
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 |
EP0636256B1 (en) | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Superscalar risc processor instruction scheduling |
DE69327688T2 (de) | 1992-08-12 | 2000-09-07 | Advanced Micro Devices, Inc. | Befehlsdecoder |
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 |
US5966539A (en) | 1994-03-01 | 1999-10-12 | Digital Equipment Corporation | Link time optimization with translation to intermediate program and following optimization techniques including program analysis code motion live variable set generation order analysis, dead code elimination and load invariant analysis |
AU3412295A (en) | 1994-09-01 | 1996-03-22 | Gary L. Mcalpine | 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 |
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 |
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 |
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 |
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 |
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 | プロセッサコア及びこれを用いたプロセッサ |
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 |
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 |
AU7622400A (en) | 1999-10-01 | 2001-05-10 | Sun Microsystems, Inc. | A method for precise trap handling in case of speculative and out-of-order loads |
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 |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
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 |
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 |
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 | 富士通株式会社 | 命令フェッチ制御装置 |
US6934828B2 (en) | 2002-09-17 | 2005-08-23 | Intel Corporation | Decoupling floating point linear address |
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 |
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 |
US7207038B2 (en) | 2003-08-29 | 2007-04-17 | Nokia Corporation | Constructing control flows graphs of binary executable programs at post-link time |
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 |
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 |
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 |
US7685354B1 (en) | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US7571284B1 (en) | 2004-06-30 | 2009-08-04 | Sun Microsystems, Inc. | Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
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 |
JP4345630B2 (ja) | 2004-09-29 | 2009-10-14 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
JP4982971B2 (ja) | 2004-09-29 | 2012-07-25 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
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 |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
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 |
US7581082B2 (en) | 2005-05-13 | 2009-08-25 | Texas Instruments Incorporated | Software source transfer selects instruction word sizes |
US7673119B2 (en) | 2005-05-13 | 2010-03-02 | Texas Instruments Incorporated | VLIW optional fetch packet header extends instruction set space |
JP4322232B2 (ja) | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
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 |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
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 |
US7624254B2 (en) | 2007-01-24 | 2009-11-24 | Qualcomm Incorporated | Segmented pipeline flushing for mispredicted branches |
WO2008090665A1 (ja) | 2007-01-25 | 2008-07-31 | Nec Corporation | プログラム並列化方法及び装置 |
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 |
US8161476B2 (en) | 2007-07-04 | 2012-04-17 | International Business Machines Corporation | Processor exclusivity in a partitioned system |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
CN101344843B (zh) | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | 一种指令级并行处理方法 |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US8225315B1 (en) | 2007-07-23 | 2012-07-17 | Oracle America, Inc. | Virtual core management |
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 |
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 |
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 |
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 |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
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 |
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 |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
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 |
CN102096579B (zh) | 2009-12-11 | 2013-10-16 | 陈罡 | 一种嵌入式自适应模糊微处理器的组成与结构 |
WO2011079942A1 (en) | 2009-12-28 | 2011-07-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 |
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 |
US8555038B2 (en) | 2010-05-28 | 2013-10-08 | Oracle International Corporation | Processor and method providing instruction support for instructions that utilize multiple register windows |
JP5707011B2 (ja) | 2010-06-18 | 2015-04-22 | ボード・オブ・リージエンツ,ザ・ユニバーシテイ・オブ・テキサス・システム | 統合分岐先・述語予測 |
US20120030451A1 (en) | 2010-07-28 | 2012-02-02 | Broadcom Corporation | Parallel and long adaptive instruction set architecture |
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 |
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 |
KR101966712B1 (ko) | 2011-03-25 | 2019-04-09 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
CN108376097B (zh) | 2011-03-25 | 2022-04-15 | 英特尔公司 | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 |
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 |
US9619301B2 (en) | 2011-04-06 | 2017-04-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core memory model and speculative mode processor management |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
CN102306094B (zh) | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
WO2013081556A1 (en) | 2011-12-01 | 2013-06-06 | National University Of Singapore | Polymorphic heterogeneous multi-core architecture |
US20160041827A1 (en) | 2011-12-23 | 2016-02-11 | Jesus Corbal | Instructions for merging mask patterns |
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 |
WO2013156825A1 (en) | 2012-04-20 | 2013-10-24 | Freescale Semiconductor, Inc. | A 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 |
US8880638B2 (en) | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
KR101964927B1 (ko) | 2012-07-17 | 2019-04-03 | 삼성전자 주식회사 | 캐싱 프록시 방법 및 장치 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9400650B2 (en) | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
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 |
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 |
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 |
WO2014143042A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Path profiling using hardware and software combination |
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 |
US9632825B2 (en) | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9471318B2 (en) | 2013-03-15 | 2016-10-18 | International Business Machines Corporation | System management and instruction counting |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
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 |
US9195606B2 (en) | 2013-03-15 | 2015-11-24 | Intel Corporation | Dead block predictors for cooperative execution in the last level cache |
JP6086230B2 (ja) | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
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 |
US9507404B2 (en) | 2013-08-28 | 2016-11-29 | Via Technologies, Inc. | Single core wakeup multi-core synchronization mechanism |
US20150074355A1 (en) * | 2013-09-12 | 2015-03-12 | Lsi Corporation | Efficient caching of file system journals |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
US9448936B2 (en) | 2014-01-13 | 2016-09-20 | Apple Inc. | Concurrent store and load operations |
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 |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
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 |
US10346168B2 (en) * | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US20160378491A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US9952867B2 (en) * | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
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 |
US9946548B2 (en) * | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
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 |
-
2015
- 2015-06-26 US US14/752,768 patent/US9952867B2/en active Active
-
2016
- 2016-06-23 AU AU2016281598A patent/AU2016281598A1/en not_active Abandoned
- 2016-06-23 MX MX2017016202A patent/MX2017016202A/es unknown
- 2016-06-23 EP EP16742072.8A patent/EP3314405A1/en not_active Withdrawn
- 2016-06-23 CA CA2985495A patent/CA2985495A1/en not_active Abandoned
- 2016-06-23 KR KR1020187002471A patent/KR102575938B1/ko active IP Right Grant
- 2016-06-23 CN CN201680036642.4A patent/CN107771318B/zh active Active
- 2016-06-23 TW TW105119684A patent/TW201717021A/zh unknown
- 2016-06-23 WO PCT/US2016/038849 patent/WO2016210026A1/en active Application Filing
- 2016-06-23 JP JP2017565886A patent/JP2018519597A/ja active Pending
- 2016-06-23 BR BR112017024335A patent/BR112017024335A2/pt not_active Application Discontinuation
-
2017
- 2017-11-08 PH PH12017550125A patent/PH12017550125A1/en unknown
- 2017-12-07 IL IL256176A patent/IL256176A/en unknown
- 2017-12-19 CL CL2017003264A patent/CL2017003264A1/es unknown
- 2017-12-21 CO CONC2017/0013251A patent/CO2017013251A2/es unknown
-
2018
- 2018-05-03 HK HK18105720.6A patent/HK1246430A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
CL2017003264A1 (es) | 2018-06-29 |
JP2018519597A (ja) | 2018-07-19 |
WO2016210026A1 (en) | 2016-12-29 |
US9952867B2 (en) | 2018-04-24 |
BR112017024335A2 (pt) | 2018-07-24 |
KR102575938B1 (ko) | 2023-09-06 |
US20160378484A1 (en) | 2016-12-29 |
MX2017016202A (es) | 2018-03-01 |
AU2016281598A1 (en) | 2017-11-30 |
IL256176A (en) | 2018-02-28 |
CA2985495A1 (en) | 2016-12-29 |
CO2017013251A2 (es) | 2018-01-05 |
CN107771318A (zh) | 2018-03-06 |
EP3314405A1 (en) | 2018-05-02 |
PH12017550125A1 (en) | 2018-02-26 |
HK1246430A1 (zh) | 2018-09-07 |
KR20180021850A (ko) | 2018-03-05 |
CN107771318B (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11048517B2 (en) | Decoupled processor instruction window and operand buffer | |
CN107810481B (zh) | 处理器指令窗口中的指令块的基于年龄的管理 | |
CN107810482B (zh) | 指令块到处理器指令窗口的批量分配 | |
CN107771318B (zh) | 基于块大小将指令块映射到指令窗口 | |
US10409599B2 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
US20210042111A1 (en) | Efficient encoding of high fanout communications |