TWI406176B - 準備用於具有多個發送埠之處理器的指令群 - Google Patents
準備用於具有多個發送埠之處理器的指令群 Download PDFInfo
- Publication number
- TWI406176B TWI406176B TW095110556A TW95110556A TWI406176B TW I406176 B TWI406176 B TW I406176B TW 095110556 A TW095110556 A TW 095110556A TW 95110556 A TW95110556 A TW 95110556A TW I406176 B TWI406176 B TW I406176B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- instructions
- field
- fields
- target
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 67
- 230000005540 biological transmission Effects 0.000 claims description 42
- 238000013519 translation Methods 0.000 claims description 12
- 230000001419 dependent effect Effects 0.000 claims description 8
- 239000000872 buffer Substances 0.000 claims description 4
- 230000001186 cumulative effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 238000002360 preparation method Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000004566 IR spectroscopy Methods 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
本發明係關於電腦與電腦軟體領域,且尤其係關於程式碼轉換方法與裝置,例如有用於轉換程式碼之程式碼翻譯器、模仿器與加速器。
於嵌入式與非嵌入式中央處理器(CPUs),乃具有主要之指令集結構(ISAs),其中存在軟體之大型主體,可使性能"加速",或可"翻譯"至大量具有較佳成本/性能優勢之處理器,若其可容易地存取相關軟體。此外,主要中央處理器結構乃即時鎖定於其指令集架構中,且無法於性能或市場範圍產生發展。此類中央處理器將受益於軟體導向之處理器共同結構。
關於促進此類加速,翻譯與共同結構能力之程式碼轉換方法與裝置,例如,乃揭示於公開之專利合作條約(PCT)申請案第WO 00/22521等。
相較於在主題處理器上,內在地執行主題程式,執行程式碼轉換無可避免地將於轉換過程中產生額外負擔(overheads)。
許多處理器利用特殊之功能單元以執行特別任務,例如專用浮點結構單元。此產生困難之處,因所有處理器具有有限資源,且對於可於特別功能單元執行之指令類型具有限制。此外,線路式處理器可於單一時鐘週期,同時處理兩個或多個指令。此一處理器可於一週期中派遣多個指令。準備多個指令,以於線路式處理器中以一群組一同執行,將造成困難。
如一特別示例,英特爾(Intel)(RTM)Itanium(RTM)處理器結構利用一組發送埠,經由其,指令乃發送至處理器之功能執行單元。作為本發明之背景,乃參照,例如"英特爾Itanium處理器對於軟體最佳化之參考手冊(Intel Itanium Processor Reference Manual for Software Optimization",文件245473-003,日期為2001年11月,可由www.intel.com
取得,其中第3.0章討論對於Itanium結構之功能單元與發送規則。發送規則之決定可藉由各功能單元類型執行之指令類型,數目,以及階層。Itanium處理器提供至少整數,記憶體,浮點與分支類型(I,M,F或B類型)完整線路之功能單元,使得各功能單元於各時鐘週期可接受一新指令(有一些例外)。
若一指令群含有之指令,多於此類型指令之執行單元,將產生一溢出發送,使得處理器延遲一或多個時鐘週期,直到可取得一適當單元。延遲為無效率的,因一些處理器資源或功能單元可能將因此不必要地處於閒置。相反地,未充分使用功能單元亦為無效率的,亦即,產生未有效率利用處理器潛在資源之指令群。
最近,已可取得英特爾(RTM)Itanium(RTM)2處理器,其具有較多數目之功能單元,並可於各週期傳送更多指令。因此,將更難以達成有效率之指令分配。亦參照"英特爾Itanium 2處理器對於軟體發展與最佳化之參考手冊(Intel Itanium 2 Processor Reference Manual for Software Development and Optimization)",文件251110-003,日期為2004年5月,其中第3.0章說明Itanium 2處理器之功能單元與發送規則。
於程式碼轉換,且尤其於動態二進位翻譯領域,可執行程式碼乃於運行時間自動地產生。未具有人為介入或檢視,以改進所產生程式碼,尤其是改進或調整指令群之機會。
本發明之目的在於改進進行程式碼轉換時之性能。
本發明之一較佳目的在於改進當進行動態二進位翻譯時之性能。
本發明之另一較佳目的在於改進準備含有多個指令之一指令群,以於單一處理器週期分散時之效率。尤其,希望提供一種有效率準備指令,以經由發送埠分散至線路式處理器之功能單元之方法。此外,一較佳目的在於準備可有效使用處理器之功能單元之指令群。
依據本發明,提供於所附申請專利範圍所提出之一種裝置與方法。由所附申請專利範圍與隨後之說明,將可瞭解本發明之較佳特徵。
下列為依據本發明實施例可實現之各種型態與優點之摘要。其提供作為協助熟知此項技藝之人士,更快速理解所產生之詳細設計討論之介紹,且並未及未意圖以任何方式限制所附申請專利範圍之範疇。
於下列說明中之一態樣中,提供一種形成指令群,以經由複數個發送埠分散至處理器之功能單元之方法。提供複數個集用場(pools),各集用場與一或多個發送埠相關聯,並包含至少一第一集用場,以及至少具有一相同發送埠之第二集用場。指令依據指令類型放置於集用場中,其中放置一指令至第一集用場時,亦減量第二集用場之佔有。一指令群接著由放置之指令產生。
於本發明的另一態樣中,此處提供一種準備目標指令之指令群,以由可藉主題處理器執行之主題指令,經由複數個發送埠分散至目標處理器之功能單元之方法。本方法包含由主題指令,產生一目標指令區塊。一組目標指令放置於複數個集用場中,各集用場以重疊之階層結構,與發送埠之子集相關聯,其中相較於從屬之較寬集用場,上層較窄之集用場與較少之指令埠相關聯。回應每次放置其中一目標指令集至階層結構之上層較窄集用場,因而減量從屬較寬集用場之可用性。由放置之目標指令集形成一指令群。
本發明亦擴展至一種計算平台,設計為執行此處所述之任何方法。此外,本發明擴展至一種翻譯裝置,且尤其為一種動態二進位翻譯器,設計為執行此處所述之任何方法。
於一些實施例,本發明提供專用硬體,例如ASIC(特殊應用積體電路)。此外,本發明擴展至一種含有指令之電腦可讀取儲存媒體,當藉由計算平台實施時,執行此處所述之任何方法。儲存媒體適當地為一容易運送之存儲器,例如固態媒體(記憶體晶片),光碟或磁碟。此媒體亦可為任何非攜帶式存儲器,例如於網路存儲器,伺服器或桌上型電腦之硬碟。此媒體進一步可編碼至傳輸信號,例如由網際網路下載。
提供下列說明,以使熟知本技藝之人士製造及使用本發明,並提出實施本發明之最佳模式。然而,熟知此項技藝之人士仍將可容易瞭解各種修改,因本發明之普遍原則於此處具體地定義,以提供一種改進之程式碼轉換方法及裝置。
於以下之用語,主題程式用於在含有主題處理器之主題計算平台執行。含有目標處理器之目標計算平台,經由執行動態程式碼轉換之一翻譯器,用於執行主題程式。翻譯器執行自主題程式碼至目標程式碼之程式碼轉換,使得目標程式碼可於目標計算平台上執行。
第1圖例舉示例目標計算平台,包含具有複數個目標暫存器15之目標處理器13,用以儲存複數個軟體元件17,19,20,21與27之記憶體18。軟體元件包含操作系統20,主題程式碼17,翻譯器程式碼19,以及翻譯之目標程式碼21。
於一實施例,翻譯器程式碼19為一模仿器,以翻譯主題指令集架構(ISA)之主題程式碼,成為另一ISA之翻譯目標程式碼,具有或不具有最佳化。於另一實施例,翻譯器19作為一加速器,以將各相同ISA之主題程式碼,藉由執行程式碼最佳化,翻譯為目標程式碼。
翻譯器19,亦即實施翻譯器之來源程式碼編譯版本,以及翻譯之程式碼21,亦即藉由翻譯器19產生之主題程式碼17之翻譯,連同於目標處理器13執行之操作系統20執行,其典型地為微處理器或其他適當電腦。
將瞭解第1圖所例舉之結構僅為例示性,且例如,依據本發明之軟體,方法與程序,可於位於操作系統內或下方之程式碼實施。主題程式碼17,翻譯器程式碼19,操作系統20,以及記憶體18之儲存機制,可為任何廣泛類型,為本技藝之人士所熟知。
於依據第1圖之裝置,程式碼轉換較佳地於運行時間時動態地執行,當執行目標程式碼21時。翻譯器19與翻譯之程式碼21平行(inline)執行。翻譯器19較佳地利用作為編譯目標結構之應用。主題程式17藉由翻譯器19,於電腦運作時間進行翻譯,以於目標結構14上執行。
經由翻譯器19執行主題程式17,包含以交錯方式執行兩種不同類型程式碼:翻譯器程式碼19;以及目標程式碼21。翻譯器程式碼19,例如於電腦運作時間前,依據翻譯器19之高階來源程式碼實施,藉由編譯器產生。相對地,目標程式碼21於電腦運作時間,依據所翻譯之程式之儲存主題程式碼17,藉由翻譯器程式碼19產生。
主題程式17乃欲於主題處理器(未顯示出)執行。於一實施例,翻譯器19作為一模仿器。亦即,翻譯器19模仿主題處理器,然而實際以目標程式碼21於目標處理器13執行主題程式17。於較佳實施例,提供至少一全域暫存器儲存27(亦稱為主題暫存器庫27或抽象暫存器庫27)。於多處理器環境,依據主題處理器之結構,選擇性地提供多於一個之抽象暫存器庫27。主題處理器狀態之代表,乃藉由翻譯器19與目標程式碼21之元件提供。亦即,翻譯器19於各種明確之程式語言裝置,例如變數及/或物件,儲存主題處理器狀態。用於編譯翻譯器19之編譯器,決定狀態與操作如何於目標程式碼實施。相對地,目標程式碼21於目標暫存器15與記憶體位置18,暗示地提供主題處理器狀態,其藉由目標程式碼21之目標指令所控制。例如,全域暫存器儲存27之低階代表,僅為所分配記憶體之一區域。然而,於翻譯器19之來源程式碼,全域暫存器儲存27為一資料陣列或物件,可於較高階存取與控制。
第2圖為一示意流程圖,例舉依據本發明較佳實施例,用於程式碼轉換之執行控制。
如第2圖所示,控制最初位於翻譯器控制迴路190。於步驟201,控制迴路190呼叫翻譯器19之程式碼產生功能192,其翻譯主題程式碼17之一區塊,成為對應之翻譯程式碼21區塊。接著,於步驟202,翻譯程式碼21之此區塊,乃於目標處理器13執行。於一較佳實施例,翻譯程式碼21之各區塊之末端,含有使控制返回控制迴路201之指令。換言之,翻譯與執行主題程式碼之步驟為交錯的,使得部份主題程式17依序地翻譯並接著執行。
術語"基本區塊"一詞為本技藝之人士所熟知。基本區塊為具有一進入點與一退出點之程式碼片段,其限制區塊程式碼於單一控制路徑。因此緣故,基本區塊為控制流量之有用基本單元。適當地,翻譯器19將主題程式碼17分割為複數個基本區塊,其中各基本區塊為連續指令集,介於唯一進入點之第一指令與唯一退出點之最後指令間(例如跳越,呼叫或分支指令)。翻譯器可挑選這些基本區塊其中之一(區塊模式),或挑選一基本區塊群組(群組區塊模式)。群組區塊適當地包含兩個或多個基本區塊,其一同視為單一單元。此外,翻譯器可形成同區塊(iso-blocks),代表主題程式碼之相同基本區塊,但於不同進入條件(同區塊模式)。
於較佳實施例,中間表示法(IR)之樹狀結構乃依據主題指令序列產生,為由原始主題程式17產生目標程式碼21之一部份過程。IR樹狀結構為主題程式所計算之表示與所執行之操作之抽象代表。隨後,目標程式碼21依據IR樹狀結構產生。IR節點之收集實際為有向非循環圖形(DAGs),但通稱為"樹狀結構(trees)"。
熟知此項技藝之人士將瞭解,於一實施例,翻譯器19使用物件導向程式語言實施,例如C++。例如,一IR節點以C++物件實施,且對於其他節點之參考,乃以C++參照對應於這些其他節點之C++物件實施。因此,IR樹狀結構乃以IR節點物件之收集實施,包含彼此之各種參照。
此外,於隨後討論之實施例,IR產生使用一組抽象暫存器定義,其對應於主題程式17所欲執行之主題結構之特別特徵。例如對於主題結構之各實體暫存器("主題暫存器"),具有唯一抽象暫存器定義。就其本身而論,翻譯器之抽象暫存器定義,可以C++物件實施,其含有對於IR節點物件之參考(亦即,IR樹狀結構)。藉由一組抽象暫存器定義之所有IR樹狀結構聚集,稱為工作IR資料林(稱為"資料林(forest)"乃因其包含多個抽象暫存器根部,各稱為一IR樹狀結構)。這些IR樹狀結構與其他程序適當地形成翻譯器程式碼產生功能192之一部份)。
第3圖為一示意圖式,顯示於主題程式之指令與目標程式之指令間之關係,隨後於本發明較佳實施例進行程式碼轉換。
於此示例,主題指令S1-S3產生功能上相同之目標指令T1-T3。主題指令S1例如藉由死碼刪除最佳化所移除,且於所產生之目標程式碼無對應部份。主題指令S2產生一相同之目標指令T3。相對地,主題指令S3產生兩目標指令T1 & T2。主題與目標程式碼指令間,具有一對無,一對一,一對多或多對一之關係。
亦示於第3圖,另一經常使用之最佳化為執行程式碼重新安排,藉此,目標程式碼中之一指令序列與主題程式碼之原始序列不同。此處,第二主題指令S2重新安排為第三目標指令T3。
第4圖顯示示例線路式處理器之核心線路,例如Itanium(RTM)2處理器。核心線路分隔為前端(FE)與後端(BE),藉由一指令緩衝器(IB)分隔。前端FE每週期最高擷取六個指令。相似地,後端BE每週期最高發送六個指令。因此,Itanium2處理器視為每週期發送六個指令。這六個指令共同稱為一指令群。
第5圖為一示意圖式,顯示示例英特爾(RTM)Itanium(RTM)2處理器內之功能執行單元。具有各種類型之大量功能單元620。此允許每週期發送許多不同指令集合。然而,因每週期僅可發送六個指令,每週期僅使用一部份之處理器功能單元620。
Itanium2處理器提供六個通用計算與邏輯單元(ALUO,1,2,3,4,5)、兩個整數單元(I0,I1)、以及一個轉移單元(Ishift),作為通用轉移與其他特殊轉移指令。
資料快取單元(DCU 0-4)提供四個記憶體埠。兩個記憶體埠一般用於載入操作,且其他兩個通常用於儲存操作。
具有六個多媒體功能單元(PALU0-5)、兩個平行轉移單元(PSMU0,1)、一個平行相乘單元(PMUL)、以及一總數計算單元(POPCNT)。這些單元處理多媒體、平行相乘與特別POPCNT指令類型。
具有四個浮點功能單元,包含兩個FMAC單元(FMAC 0,1),以執行浮點乘加(multiply-adds),以及兩個FMISC單元(FMISC 1,0),以執行其他浮點操作。
具有三個分支單元(B0-2),得以於每週期執行三個分支。
各功能單元620具有線路,且各時鐘週期可接受一新指令。然而,對於一特別週期內可執行之各類型指令數目具有限制。
第6圖顯示一示意圖式,例舉於線路式處理器,例如英特爾(RTM)Itanium(RTM)2處理器內之指令分散。
如第6圖所示,各指令600形成具有三個指令之指令束603之一部份。六個指令600(亦即,兩個指令束)共同形成指令群606。指令600儲存於指令快取609。前端FE於各週期,藉由已知之指令束旋轉過程,由指令快取609擷取零個,一個或兩個指令束603。
各指令600經由一發送埠610,分派至其中一功能單元。發送埠610之數目少於功能單元620之數目。如第6圖所示,於此示例,具有11個發送埠與27個功能單元。埠M0,M1,M2,M3,I0,I1,F0 & F1各用於非分支指令。埠B0,B1,& B2用於分支指令。分散為分配指令600至功能單元620之過程,且依據指令發送埠610之預定映像。
各指令群首先需符合分配至發送埠之發送規則,其便利地以模板代表。亦即,各指令群中(且於各指令束中),指令之數目,類型與位置,需與預定模板組其中之一相符。未與模板相符之任何指令群將被拒絕。通常,記錄例外或錯誤,並終止執行。
假設符合發送規則,且具有一有效模板,指令接著分配至發送埠610。
指令依據指令類型(例如ALU,記憶體,整數等),映像至發送埠之子集。接著,依據指令於指令群內之位置,指令映像至子集內之特別發送埠。如一示例,A-類型指令可於所有M與I埠發送,而I-類型指令僅可發送至I埠。此外,I埠為不對稱的,其中一些I-類型指令僅可於埠I0發送。此外,M埠具有許多不對稱,其中一些M-類型指令僅可於一或兩個記憶體埠發送。
對於各指令束603,Itanium結構使用128-位元編碼,包含三個41-位元指令600與一5-位元模板域。模板位元幫助處理器解碼與安排指令。此外,模板位元指示終止位置,其標示各指令群606之終端。
指令600依據一組分散規則,由發送埠610分散至功能單元620。對於各不同發送埠類型,具有不同規則。當分散指令至功能單元時,處理器每次檢視一或兩個指令束(各具有三個指令)。
當發送指令束中之各指令時,產生指令束旋轉,以將新指令束帶入至目前同時考慮之兩指令束視窗。可旋轉其中一或兩個指令束。若指令束未成功完成,接著處理器將此指令束中未發送之指令延遲至下一週期。以此方式,最後將可取得處理器資源以執行延遲之指令。處理器硬體未重新呼叫指令以避免延遲。
當可能時,希望準備滿足發送規則(模板)與分散規則之指令群。尤其,希望使延遲最小化。此外,希望產生程式碼群,其中指令有效使用處理器之可使用資源。
此外,於程式碼轉換內容,且尤其為此處所述之動態二進位翻譯,乃需一種自動產生指令群之機制,現在將於下更詳細說明。
第7圖顯示準備指令群之一較佳機制。如第7圖所示,提供複數個分配集用場700。各集用場700安排為包含一或多個指令600。便利地,各集用場700包含一或多個指令空間701。
各集用場700與一或多個發送埠610相關聯。於第7圖之示例,集用場M0與發送埠M0相關聯,而集用場F與發送埠F0與發送埠F1相關聯。相似地,集用場M0_3與各埠M0至M3相關聯,而集用場A涵蓋任何M或I埠(M0,M1,M2,M3,I0或I1)。
集用場完全或至少部份地重疊。亦即,至少兩集用場700共用一特別發送埠610。如一示例,第一集用場M0與第二集用場M0_3共用發送埠M0。
集用場700形成一階層結構。於此實施例,此結構分別具有第一至第四階層711,712,713與714。於此階層結構,相關聯之數個發送埠610之寬的集用場(例如集用場M0_3),乃附屬於相關聯較少發送埠之窄的集用場(例如集用場M0)。窄的集用場(M0)與寬的集用場(M0_3)具有至少一共同發送埠(M0)。
如另一示例,集用場I0較集用場I0_1窄且上層,而其依序地較集用場A上層。這些集用場I0,I0_1與A至少共用埠I0。
第8圖為一示意圖式,例舉依據本發明一較佳實施例之指令群準備。
如第8圖所示,主題程式17轉換為目標程式碼21(亦即,藉由第1圖之翻譯器19)。可執行之目標程式碼指令600乃準備至就緒列表820。就緒列表820包含預備執行之目標程式碼指令。理想地,就緒列表820之指令600各彼此獨立,各指令與就緒列表中之任何其他指令獨立執行。
於較佳實施例,一旦分辨任何相依性,目標程式碼指令乃放置於就緒列表中。亦即,檢查目標程式碼指令21對於目標程式碼21中其他指令之相依性。如一示例,指令LOAD R1,0(載入暫存器R1具有常數0)無相依性,而隨後PUSH R1(推送暫存器R1之內容至堆疊)於此情況與LOAD指令相關。適當地,PUSH指令僅於設置LOAD後,才添加至就緒列表。
指令由就緒列表820取出,並放置於階層集用場結構700,如第7圖所示。一平行可執行指令群(例如於兩個指令束中之一組六個指令)接著由放置之指令形成。指令群606預備好添加至指令快取609,以經由發送埠610分散至功能單元620,參照第6圖所述。通常,準備之指令群606首先例如儲存於記憶體18。適當地,儲存之指令群稍後於完整目標程式碼區塊執行。
第9圖為一示意圖式,顯示準備指令群之一較佳方法,乃於本發明較佳實施例之程式碼轉換,且尤其為動態二進位翻譯中使用。
候選指令821之就緒列表820於步驟901提供。第一候選指令821於步驟902,由就緒列表820中挑選。於一實施例,候選指令依據於就緒列表中之年齡而挑選(例如,列表中最舊之指令)。於另一實施例,乃依據潛時挑選指令。指令之執行時間(潛時)範圍為1至24週期。來自記憶體之載入,其跳過快取,以及檢查指令(其用於推測),可使用超過50個週期。因此,於一較佳示例,乃挑選使用最長時間進行執行之指令,而非於較少時鐘週期執行之指令。於另一特別較佳實施例,指令乃依據此指令,以及與此指令相關之任何指令之累積潛時而挑選(例如,一LOAD指令具有一累積潛時,其亦包含相關PUSH指令之潛時)。
於步驟903,嘗試放置挑選之候選指令821至分配集用場階層中適當可使用之集用場700。首先,依據指令類型與此指令之適當發送埠,決定一或多組適當集用場。例如,一"添加"指令可經由任何發送埠M0-3或I0-1發送,並適當地放置於與任何這些發送埠相關聯之任何集用場中。接著,由適當集用場組中挑選所想要集用場。於第7圖之示例結構,用於"添加"指令之所想要集用場,乃由適當集用場組M0,M2,I0,M0_1,M2_3,I0_1,M0_3或A中挑選。相對地,"getF"指令僅可經由埠I0發送,且必須放置於與此埠相關聯之集用場。於此示例,I0集用場為唯一可能之所想要集用場。
於步驟904,決定所想要之集用場700是否可接受指令,例如,具有一空指令空間701。此外,此步驟包含檢查各相關從屬集用場是否未填滿。階層結構決定那一集用場較所想要集用場下層。對於示例之"getF"指令,除所想要之集用場I0外,亦檢查集用場I0_1與A。
若可使用所想要之集用場,以及各從屬集用場,接著此指令於步驟905成功地放置。放置候選指令減量所放置指令之集用場之佔有。此外,放置指令減量從屬於所放置集用場之各下層集用場之佔有。
若無法使用適當之集用場,接著拒絕候選指令。一新候選指令由就緒列表820中挑選,並重複上述步驟。
於步驟906,決定一指令群是否準備好由指令集放置於分配之集用場階層700中。若否,接著於步驟902挑選下一指令。若是,接著於步驟907,放置之指令形成一指令群。接著更新就緒列表(步驟902)以說明所放置之指令,並重複此過程。尤其,新目標指令添加至就緒列表,於此,藉由準備為指令群且可執行之指令,分辨相依性。
一旦放置預定之指令集,亦即,六個指令以形成兩個指令束,則形成一指令群。或者,一旦無進一步指令可放置,亦即,因就緒列表中無候選指令適合空的集用場,或因就緒列表目前為空的,則形成一指令群。適當地,NoOPs("非操作"或非操作指令)用於填充部份完整之指令群。
一旦就緒列表成為完全空的,此過程可終止,且未準備進一步之目標指令。於較佳實施例,目標程式碼指令21代表目標程式碼之一區塊,例如一基本區塊,群區塊或同區塊。因此,一旦於目標程式碼之此區塊之所有指令準備至指令群,則準備過程終止。
現在將參照第10與11圖所示之工作示例,更詳細說明較佳之方法。
參照第10圖,指令600(此處以字母"T"代表)分配至所想要集用場700以佔有可使用之指令空間701。於第10圖之示例,第一指令T1
為記憶體-類型M指令,其放置於集用場M0。此集用場僅可接受一指令,且因此指令T1
填入集用場M0。
如第10圖所示,各相關集用場之佔有(M0_1,M0_3,A)亦減量,亦即,回應放置指令T1
於上層集用場M0,指令空間701標示為填入。亦即,當一指令放置於一可使用之集用場時,於零或較低層之各相關集用場之空缺,因所放置之指令而減量。
現在放置第二指令T2
,此時為I-類型指令,其需填入第二層712中,集用場I0_1之指令空間。於階層714之相關集用場A之對應指令空間亦標示為佔有。
第11圖顯示放置為可形成完整指令群之指令示例。各指令T1
-T6
放置於個別集用場中。
參照第7,10與11圖,於較佳實施例,提供一額外最低群集用場715以代表一指令群。群集用場715適當地具有六個指令空間(指令群之最大值)。無指令直接放置於群集用場715。相反地,群集用場提供一便利之機制,以確定六個指令已正確且有效地放置於上層階層之集用場中。
因彈性緣故,希望指令放置於最低之可應用集用場。亦即,一"添加"指令可發送至任何發送埠M0-3或I0-1,且理想地放置於A集用場。相對地,"getF"指令僅可經由發送埠I0發送,並分配至集用場I0,若可使用的話。
再次參照第7,10與11圖,各集用場700便利地與一計數值702相關聯。計數值702適當地為一整數值,對應於集用場700內可使用之指令空間701數目。
於另一實施例,一或多個集用場給予有限之計數值,小於集用場之最大佔有。亦即,對於至少一複數個集用場,最大佔有限制為小於一絕對最大值,其係由與一集用場相關聯之發送埠來予以決定。或者,絕對最大值佔有係由指令類型來予以決定。於例舉之示例集用場,M0_3集用場具有4個M-類型指令之絕對最大佔有,對應於發送埠M0至M3。然而,集用場M0_3較佳地限制為"2"之總數,使得於任何指令群,僅可放置兩個M-類型指令。限制某些指令類型數目低於系統最大值,允許較有效率之可執行程式碼於一些情況產生。亦即,發送具有許多"M"指令之指令群序列,實際上將較各最多具有兩個"M"指令之發送群組無效率。受限之計數器值得以調整與控制指令群之組成。
每當一指令放置於集用場700時,調整計數器702。此外,每次一指令添加至一較高集用場時,亦調整計數器,如第10與11圖之示例所示。計數器702提供一簡單與便利之機制,以決定一集用場,或相關集用場是否已滿。於一較佳實施例,計數器開始於一預定值(亦即,個別集用場之最大空缺,或一限制數值),且對於各放置之指令減量一。此允許有效之"相等或小於零"類型比較,以決定特別集用場是否已滿(亦即,具有空缺指令計數等於或小於零)。
群集用場715同樣地提供一計數器值702,其開始於六,為單一群組所允許之最大指令數目,並隨各放置之指令而減量。
於較佳實施例,放置之指令集(亦即,最高至T1
-T6
),藉由挑選指令,形成一指令群。較佳之順序開始於最大限制之集用場,其為最上層階層711。當準備群組時,這些指令具有優先權,當分散指令群時,以使這些最大限制之指令存取適當發送埠610。藉由放置指令至最低(最寬的)之應用集用場,乃保留最具彈性之指令,允許較少限制之指令於程式碼序列稍後產生,具有較佳機會放置於一適當發送埠。例如,一旦決定任何較高優先權之指令是否已放置,其例如需發送埠M0或I0,僅挑選集用場A中之一"添加"指令至指令群。
相關聯階層集用場之佔有,防止資源過度使用。各指令群於單一操作正確地準備("第一次")。
第12圖顯示由第11圖放置之指令T1
-T6
挑選之示例指令群606。此群組符合模板"MFI-MFIs
"。模板編碼為於指令群內攜帶之5-位元模板域。於第12圖,"S"顯示第二指令束為群組之終端。
於第7,10與11圖所示之較佳示例配置,分配指令至M,I與F指令位置。此配置尤其適合於逐一區塊之程式碼轉換。亦即,基本區塊依據定義僅包含一分支-類型出口。區塊之主要工作與非分支指令相關聯,其使用第7圖之集用場結構,準備為指令群。因此,對於區塊之主要部份,準備之程式碼形成完整且有效率之指令群序列。區塊之尾端部份可包含具有NOPs之不完整之群組,因其限制之剩餘候選指令。最終指令群包含分支指令。這些分支指令適當地決定程式碼之一隨後區塊,以接著準備與執行。於第2圖所述之示例實施例,分支指令適當地將控制交回至翻譯器執行迴路190,並指示下一基本區塊。
第13圖顯示另一較佳集用場結構。於此實施例,較佳之集用場機制擴展至亦包含與分支發送埠(亦即B0_2)相關聯之集用場。
第14圖顯示準備指令群之進一步較佳方法。此方法適當地使用第13圖所示之集用場結構。
如第14圖所示,此較佳方法包含步驟1401至1407,等同於第9圖之步驟901至907。此外,於此實施例,此方法包含檢查所挑選之指令對照於模板組之步驟1408。
於示例Itanium 2處理器,M,F,與I指令之組合具有相當少之限制,其適當地藉由第9圖之集用場結構所處理。然而,I,F與B指令之組合對於所允許之組合具有相當大之限制。步驟1408包含比較所挑選候選指令821與任何已放置指令之組合,以及預定之模板組。各模板代表一有效指令集合,可藉由目標處理器執行。模板組便利地保留於查詢表,儲存於例如記憶體18中。若提出之組合未符合任何預定模板組,接著拒絕挑選之候選指令,返回至就緒列表,並挑選一新候選指令。步驟1408之模板檢查,允許分支指令包含於使用集用場之指令群準備中。
Itanium 2處理器亦提供一特殊情況"X"-類型指令,其需MLX格式模板。X類型指令需F發送埠與I發送埠。步驟1408之模板檢查可容易地辨識X類型指令。適當地,X類型指令以特殊情況處理,嘗試放置F與I類型指令於分配集用場700。僅當I與F皆成功地放置,X類型指令才可成功地放置。亦即,此為一目標程式碼指令於集用場結構需大於一個指令空間之示例。集用場結構便利地提供這些不平常或不同佔有之指令。
已參照示例Itanium(RTM)2處理器,說明本發明較佳實施例。然而,本發明亦可應用於許多其他處理器與處理器類型。尤其,本發明可應用於每週期發送多個指令之處理器。作為示例,本發明亦可應用於x86結構處理器,以及PowerPC(PPC)結構處理器等。本發明可藉由熟知此項技藝之人士,依據此處所述之原理與特徵進行修改。
概括之,此處所述之本發明較佳實施例,提供準備指令群之一便利自動化機制,可經由複數個發送埠,分散至處理器之功能單元。正確且自動地產生指令群。解碼錯誤與延遲可最小化或甚至完全避免。
雖然已顯示與說明數個較佳實施例,熟知此項技藝之人士將瞭解,於未背離本發明範疇下,如所附申請專利範圍所定義,可進行各種改變與修改。
已注意與此申請案之說明書同時或先前申請,且與此說明書可公開進行公眾檢查之所有資料與文件,且所有此類資料與文件之內容於此處併入參考。
於此說明書所揭示之所有特徵(包含任何所附申請專利範圍,摘要與圖式),及/或所揭示之任何方法或過程之所有步驟,可以任何組合結合,除了至少一些此類特徵及/或步驟彼此不相容之組合以外。
於此說明書所揭示之各特徵(包含任何所附申請專利範圍,摘要與圖式)可以具有相同,相等或相似用途之其他特徵取代,除非以其他方式明確陳述。因此,除非以其他方式明確陳述,所揭示之各特徵僅為相等或相似特徵之通稱序列之一示例。
本發明未限於上述實施例之細節。本發明擴展至於此說明書揭示之特徵之任何新的,或任何新的組合(包含任何所附申請專利範圍,摘要與圖式),或所揭示之方法過程之任何新的,或任何新的組合。
13...目標處理器
14...目標結構
15...目標暫存器
17...主題程式碼
18...記憶體
19...翻譯器程式碼
20...操作系統
21...翻譯之目標程式碼
27...全域暫存器儲存
190...控制迴路
192...程式碼產生功能
201~202...步驟
600...指令
603...指令束
606...指令群
609...指令快取
610...發送埠
620...功能單元
700...分配集用場
701...指令空間
702...計數值
711,712,713,714...階層
715...群集用場
820...就緒列表
821...候選指令
901~907...步驟
1401~1408...步驟
所附圖式,其併入且構成本說明書之一部份,例舉目前較佳實施且如下所述:第1圖係一方塊圖,例舉應用本發明實施例之裝置;第2圖係一示意流程圖,例舉用於本發明較佳實施例之執行控制;第3圖為一示意圖,顯示於本發明較佳實施例中之程式碼轉換;第4圖為一示意圖,例舉示例線路式處理器之核心線路;第5圖為一示意圖,例舉示例處理器內之功能單元;第6圖為一示意圖,例舉示例處理器內之指令分散;第7圖為一示意圖,例舉用於本發明實施例之準備指令之較佳機制;第8圖為一示意圖,例舉依據本發明較佳實施例之指令群準備;第9圖為一示意流程圖,例舉準備指令群之一較佳方法;第10圖顯示具有部份完整示例指令群之較佳機制;第11圖顯示具有完整指令群之較佳機制;第12圖顯示一示例指令群;第13圖顯示用於準備指令群之較佳機制之另一實施例;且第14圖係一示意流程圖,顯示準備指令群之另一較佳方法。
600...指令
610...發送埠
700...分配集用場
701...指令空間
702...計數值
711,712,713,714...階層
715...群集用場
Claims (35)
- 一種形成指令群之方法,用以經由複數個發送埠而分散至處理器之功能單元,包含步驟:提供複數個集用場,各集用場係與該等發送埠的一或多個相關聯,並包含具有至少一共同發送埠之至少一第一集用場與一第二集用場;依據指令類型,而將指令放置入該複數個集用場中,其中,將一指令放置入該第一集用場中亦減少該第二集用場之可用性;以及從該等所放置之指令產生一指令群。
- 如申請專利範圍第1項之方法,其中,該複數個集用場形成一階層結構,其中,該第一集用場較該第二集用場上層。
- 如申請專利範圍第1項之方法,其中,該第一集用場比該第二集用場和較少的該等發送埠相關聯。
- 如申請專利範圍第1項之方法,包含:提供該等複數個集用場,各集用場具有一或多個指令空間,使得各集用場具有零或多個空缺,以接受預定數目的指令;將一指令放置入該第一集用場中;回應將該指令放置入該第一集用場中,減少可用於該第一集用場中之指令空間的數目;以及回應將該指令放置入該第一集用場中,減少可用於該第二集用場中之指令空間的數目。
- 如申請專利範圍第1項之方法,其中,該複數個集用場的每一個具有預定的最大佔有,且其中,放置指令之該步驟包含調整該等集用場之至少兩個集用場的佔有。
- 如申請專利範圍第5項之方法,包含僅當該第一集用場與該第二集用場兩者皆具有可用容量以接受該指令時,才將指令放置入該第一集用場中。
- 如申請專利範圍第5項之方法,包含僅當該第一集用場與該第二集用場兩者皆尚未被佔據到其個別之預定的最大佔有時,才將指令放置入該第一集用場中。
- 如申請專利範圍第1項之方法,包含:提供與該複數個集用場的每一個相關聯之計數器值,其中,該計數器值表示所放置之指令的數目;比較該計數器值的每一個與預定的臨界值,以確定該第一與第二集用場能夠接受指令;以及每當指令被放置入該第一集用場中時,調整該第一集用場之該計數器值,且每當指令被放置入該第一集用場中時,調整該第二集用場之該計數器值。
- 如申請專利範圍第8項之方法,包含初始化該計數器值到指令群中之該集用場的預定最大佔有、針對每一個放置入之指令,減量該計數器值、及比較該計數器值與零之臨界值。
- 如申請專利範圍第8項之方法,包含限制該等複數個集用場的至少一個之最大佔有小於如同藉由與該一集用場相關聯之該等發送埠,及/或藉由與該一集用場相關聯之指令類型所決定之該一集用場的絕對最大值。
- 如申請專利範圍第1項之方法,包含藉由減少該第一與第二集用場中之可用性,且藉由減少未從屬於該第一或第二集用場之第三集用場的可用性來放置特別類型之指令。
- 如申請專利範圍第1項之方法,另包含提供表示指令群之最大數目的指令之群集用場,及每當指令被放置入該複數個集用場的任何其他集用場中時,調整該群集用場之佔有。
- 如申請專利範圍第1項之方法,包含步驟:形成候選指令之就緒列表;從該就緒列表選擇一候選指令;以及將該候選指令放置入該等複數個集用場的其中之一集用場中。
- 如申請專利範圍第13項之方法,其中,在該就緒列表中之該等候選指令係各自可獨立執行的。
- 如申請專利範圍第14項之方法,包含在藉由先前所放置之候選指令來履行任何相依性之後,將一候選指令添加於該就緒列表。
- 如申請專利範圍第15項之方法,包含將一段的主題程式碼轉換成一區塊的目標程式碼指令,及選擇性地將一或多個指令從該區塊的目標程式碼指令添加至該就緒列表。
- 如申請專利範圍第1項之方法,包含依序地從該等集用場挑選該等所放置之指令,以產生該指令群。
- 如申請專利範圍第1項之方法,包含當預定最大數目之指令已被放置入該等集用場中,或者沒有進一步的指令適合被放置入該複數個集用場時,產生該指令群。
- 如申請專利範圍第1項之方法,另包含檢查所放置之指令的組合與一組模板間之步驟。
- 如申請專利範圍第1項之方法,包含形成即將被放置於該複數個集用場之指令,連同已被放置於該複數個集用場中之零或多個指令的候選組合,及檢查該候選組合與一組表示指令組合之模板,而該等指令組合係可有效地執行於該處理器之該等功能單元中。
- 如申請專利範圍第1項之方法,其中,該複數個集用場係與服務至少記憶體、浮點與整數類型指令之發送埠相關聯。
- 如申請專利範圍第20項之方法,其中,該複數個集用場與服務至少記憶體、浮點、整數與分支類型指令之發送埠相關聯。
- 一種準備目標指令之指令群的方法,用以自可由主題處理器執行之主題指令,經由複數個發送埠而分散至目標處理器之功能單元,包含步驟:從該等主題指令產生一區塊的目標指令;將一組該區塊的目標指令放置入複數個集用場中,各集用場係與一重疊階層結構中之該等發送埠的子集相關聯,該重疊階層結構具有與比一或多個從屬較寬的集用場更少之指令埠相關聯的一或多個上層較窄之集用場,並回應將該等目標指令的其中之一放置入至該階層結構中之該等上層較窄集用場的其中之一中,減少該一或多個從屬較寬集用場之至少一集用場的可用性;以及從所放置之該組的目標指令形成一指令群。
- 如申請專利範圍第23項之方法,包含將一目標指令優先放置入一較寬的集用場中而非一較窄的集用場,其中,該目標指令係可應用於該較窄的集用場與該較寬的集用場兩者。
- 如申請專利範圍第23項之方法,另包含對該每一個集用場提供一表示放置於該集用場或任何上層集用場中之指令數目的計數器值,及諮詢該計數器值以決定該集用場或任何從屬集用場是否額滿於放置指令之前。
- 如申請專利範圍第25項之方法,另包含提供一具有表示指令群中之最大指令數目之計數器值的群集中區,及每當指令被放置入該複數個集用場的任何其他集用場中時,改變該群集用場之計數器值。
- 如申請專利範圍第23項之方法,另包含:更新來自該區塊的目標指令之候選指令的就緒列表,其中,每一個候選指令係可彼此獨立執行的;從該就緒列表取出候選指令;針對指令類型,決定適合於該候選指令之所想要的集用場;以及確定該所想要的集用場與該所想要的集用場之任何從屬集用場的每一個具有可用性以接受該候選指令,且如果是如此,則將該候選指令放置入該所想要的集用場中,藉以減少該所想要的集用場與進而該從屬集用場或每一個從屬集用場之可用性,或者對下一個候選指令重複,直到該組的目標指令已經被放置準備好來形成一指令群。
- 如申請專利範圍第27項之方法,包含每當一指令群係形成自被放置入該複數個集用場之該組的目標指令時,更新該就緒列表。
- 如申請專利範圍第27項之方法,包含根據下面的任一或多個而取得該候選指令:於該就緒列表中之年齡;該候選指令之潛時;以及該候選指令之與該區塊中之一或多個相依目標指令之潛時相結合的之累積潛時。
- 如申請專利範圍第27項之方法,包含依據該候選指令之指令類型與一適當的發送埠或諸發送埠,決定該所想要的集用場。
- 如申請專利範圍第27項之方法,包含當已放置預定數目的指令,或者沒有進一步指令可從該就緒列表被放置時,決定放置於該等集用場中之該組的指令之指令群已準備好。
- 如申請專利範圍第31項之方法,包含形成包括一或多個非操作指令之指令群,以填補一部份完整指令群。
- 如申請專利範圍第23項之方法,另包含步驟:將該等主題程式碼指令分割成區塊,並選擇主題程式碼之第一目前區塊;經由動態二進位翻譯,將該目前的主題程式碼區塊轉換成目前的目標程式碼區塊,包含準備於該目標程式碼區塊中之目標指令成為指令群;使用該等指令群來執行該目前的目標程式碼區塊,包含決定下一個目前的主題程式碼區塊;以及對於該下一個目前的主題程式碼區塊,重複該轉換與執行步驟。
- 一種翻譯器設備,係配置來將主題程式碼翻譯成可由目標處理器執行之目標程式碼,該翻譯器設備包含一翻譯器單元,係配置來形成目標程式碼之指令群,以經由複數個發送埠而分散至該目標處理器之功能單元,其中,該翻譯器單元包含:一集用場單元,其提供複數個集用場,各集用場係與該等發送埠的一或多個相關聯,並包含具有至少一共同發送埠之至少一第一集用場與一第二集用場;一指令放置單元,其依據指令類型而將指令放置該複數個集用場中,其中,將一指令放置入該第一集用場亦減少於該第二集用場之可用性;以及一挑選單元,其從該等所放置之指令產生一指令群。
- 一種電腦可讀取媒體,具有可由電腦執行之指令記錄於其上,以實施形成指令群之方法,用以經由複數個發送埠而分散至處理器之功能單元,包含步驟:提供複數個集用場,各集用場係與該等發送埠的一或多個相關聯,且包含具有至少一共同發送埠之至少一第一集用場與一第二集用場;依據指令類型而將指令放置入該複數個集用場中,其中,將一指令放置入該第一集用場中亦減少該第二集用場之可用性;以及從該等所放置之指令產生一指令群。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0506469A GB2424727B (en) | 2005-03-30 | 2005-03-30 | Preparing instruction groups for a processor having a multiple issue ports |
US11/139,232 US7934203B2 (en) | 2005-03-30 | 2005-05-27 | Preparing instruction groups for a processor having multiple issue ports |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200710730A TW200710730A (en) | 2007-03-16 |
TWI406176B true TWI406176B (zh) | 2013-08-21 |
Family
ID=34566706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095110556A TWI406176B (zh) | 2005-03-30 | 2006-03-27 | 準備用於具有多個發送埠之處理器的指令群 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7934203B2 (zh) |
JP (1) | JP5102758B2 (zh) |
CN (1) | CN100585560C (zh) |
GB (1) | GB2424727B (zh) |
TW (1) | TWI406176B (zh) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
CN101627365B (zh) | 2006-11-14 | 2017-03-29 | 索夫特机械公司 | 多线程架构 |
US8116748B2 (en) | 2006-12-14 | 2012-02-14 | At&T Intellectual Property I, Lp | Management of locations of group members via mobile communications devices |
US7646297B2 (en) | 2006-12-15 | 2010-01-12 | At&T Intellectual Property I, L.P. | Context-detected auto-mode switching |
US8566602B2 (en) | 2006-12-15 | 2013-10-22 | At&T Intellectual Property I, L.P. | Device, system and method for recording personal encounter history |
US8160548B2 (en) * | 2006-12-15 | 2012-04-17 | At&T Intellectual Property I, Lp | Distributed access control and authentication |
US8649798B2 (en) * | 2007-01-25 | 2014-02-11 | At&T Intellectual Property I, L.P. | Methods and devices for attracting groups based upon mobile communications device location |
US8787884B2 (en) * | 2007-01-25 | 2014-07-22 | At&T Intellectual Property I, L.P. | Advertisements for mobile communications devices via pre-positioned advertisement components |
US8199003B2 (en) | 2007-01-30 | 2012-06-12 | At&T Intellectual Property I, Lp | Devices and methods for detecting environmental circumstances and responding with designated communication actions |
US8335504B2 (en) | 2007-08-23 | 2012-12-18 | At&T Intellectual Property I, Lp | Methods, devices and computer readable media for providing quality of service indicators |
US7992059B2 (en) | 2007-09-11 | 2011-08-02 | International Business Machines Corporation | System and method for testing a large memory area during processor design verification and validation |
US20090070570A1 (en) * | 2007-09-11 | 2009-03-12 | Shubhodeep Roy Choudhury | System and Method for Efficiently Handling Interrupts |
US8006221B2 (en) | 2007-09-11 | 2011-08-23 | International Business Machines Corporation | System and method for testing multiple processor modes for processor design verification and validation |
US8099559B2 (en) * | 2007-09-11 | 2012-01-17 | International Business Machines Corporation | System and method for generating fast instruction and data interrupts for processor design verification and validation |
US8019566B2 (en) * | 2007-09-11 | 2011-09-13 | International Business Machines Corporation | System and method for efficiently testing cache congruence classes during processor design verification and validation |
US7752499B2 (en) * | 2007-09-11 | 2010-07-06 | International Business Machines Corporation | System and method for using resource pools and instruction pools for processor design verification and validation |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101826121B1 (ko) | 2011-03-25 | 2018-02-06 | 인텔 코포레이션 | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
EP2783280B1 (en) | 2011-11-22 | 2019-09-11 | Intel Corporation | An accelerated code optimizer for a multiengine microprocessor |
US20150039859A1 (en) | 2011-11-22 | 2015-02-05 | Soft Machines, Inc. | Microprocessor accelerated code optimizer |
US8782620B2 (en) | 2012-06-12 | 2014-07-15 | International Business Machines Corporation | Processing reified generics in object-based programming environments |
CN106170761B (zh) | 2012-09-27 | 2019-05-10 | 英特尔公司 | 用于在二进制转换中横跨多个原子区调度存储指令的方法和装置 |
US9304848B2 (en) | 2013-01-15 | 2016-04-05 | International Business Machines Corporation | Dynamic accessing of execution elements through modification of issue rules |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
EP2972836B1 (en) * | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
KR101708591B1 (ko) | 2013-03-15 | 2017-02-20 | 소프트 머신즈, 인크. | 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법 |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9372695B2 (en) | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
US10331446B2 (en) * | 2017-05-23 | 2019-06-25 | International Business Machines Corporation | Generating and verifying hardware instruction traces including memory data contents |
US11210100B2 (en) * | 2019-01-08 | 2021-12-28 | Apple Inc. | Coprocessor operation bundling |
US12039471B2 (en) | 2021-11-29 | 2024-07-16 | T-Mobile Usa, Inc. | Tracking issues and resolution of same in a wireless communication network |
US11962455B2 (en) | 2021-11-29 | 2024-04-16 | T-Mobile Usa, Inc. | Prioritizing multiple issues associated with a wireless telecommunication network |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
US20030200539A1 (en) * | 2002-04-12 | 2003-10-23 | Chen Fu | Function unit based finite state automata data structure, transitions and methods for making the same |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148533A (en) * | 1989-01-05 | 1992-09-15 | Bull Hn Information Systems Inc. | Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units |
CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
US5404557A (en) * | 1991-11-22 | 1995-04-04 | Matsushita Electric Industrial Co., Ltd. | Data processor with plural instruction execution parts for synchronized parallel processing and exception handling |
JP2806359B2 (ja) * | 1996-04-30 | 1998-09-30 | 日本電気株式会社 | 命令処理方法及び命令処理装置 |
ES2340370T3 (es) | 1998-10-10 | 2010-06-02 | International Business Machines Corporation | Conversion de codigo de programa con traduccion reducida. |
US6871298B1 (en) * | 1999-11-12 | 2005-03-22 | Obsidian Software, Inc. | Method and apparatus that simulates the execution of paralled instructions in processor functional verification testing |
US6799262B1 (en) * | 2000-09-28 | 2004-09-28 | International Business Machines Corporation | Apparatus and method for creating instruction groups for explicity parallel architectures |
JP4542722B2 (ja) * | 2001-04-25 | 2010-09-15 | 富士通株式会社 | 命令処理方法 |
US7496494B2 (en) | 2002-09-17 | 2009-02-24 | International Business Machines Corporation | Method and system for multiprocessor emulation on a multiprocessor host system |
US8423976B2 (en) | 2003-03-13 | 2013-04-16 | Northrop Grumman Corporation | Extreme pipeline and optimized reordering technology |
-
2005
- 2005-03-30 GB GB0506469A patent/GB2424727B/en not_active Expired - Fee Related
- 2005-05-27 US US11/139,232 patent/US7934203B2/en active Active
-
2006
- 2006-03-17 JP JP2008503571A patent/JP5102758B2/ja active Active
- 2006-03-17 CN CN200680010649A patent/CN100585560C/zh active Active
- 2006-03-27 TW TW095110556A patent/TWI406176B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237077B1 (en) * | 1997-10-13 | 2001-05-22 | Idea Corporation | Instruction template for efficient processing clustered branch instructions |
US20030200539A1 (en) * | 2002-04-12 | 2003-10-23 | Chen Fu | Function unit based finite state automata data structure, transitions and methods for making the same |
Also Published As
Publication number | Publication date |
---|---|
US7934203B2 (en) | 2011-04-26 |
TW200710730A (en) | 2007-03-16 |
JP2008535074A (ja) | 2008-08-28 |
JP5102758B2 (ja) | 2012-12-19 |
GB2424727B (en) | 2007-08-01 |
GB2424727A (en) | 2006-10-04 |
GB0506469D0 (en) | 2005-05-04 |
CN101151594A (zh) | 2008-03-26 |
CN100585560C (zh) | 2010-01-27 |
US20060224863A1 (en) | 2006-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI406176B (zh) | 準備用於具有多個發送埠之處理器的指令群 | |
Aldinucci et al. | Fastflow: High‐Level and Efficient Streaming on Multicore | |
JP2008535074A5 (zh) | ||
CN103858099B (zh) | 用于执行应用的方法和系统、具有机器指令的电路 | |
US11669443B2 (en) | Data layout optimization on processing in memory architecture for executing neural network model | |
CN109284185A (zh) | 用于区块链交易加速的装置、方法和系统 | |
US20220374695A1 (en) | Performance estimation-based resource allocation for reconfigurable architectures | |
CN111767080A (zh) | 用于可配置空间加速器中的操作的设备、方法和系统 | |
KR20220042424A (ko) | 재구성가능 아키텍처들을 위한 컴파일러 플로우 로직 | |
CN108205448A (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
US20230015688A1 (en) | Method and apparatus for generating metadata by a compiler | |
JP2023048112A (ja) | ツリー構造データ削減のための装置および方法 | |
EP1866759B1 (en) | Preparing instruction groups in a processor having multiple issue ports | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
US7761691B2 (en) | Method for allocating registers using simulated annealing controlled instruction scheduling | |
Katel et al. | High performance gpu code generation for matrix-matrix multiplication using mlir: some early results | |
Johnson et al. | Novel features and GPU performance analysis for EM particle transport in the Celeritas code | |
Khaldi et al. | Extending llvm ir for dpc++ matrix support: A case study with intel® advanced matrix extensions (intel® amx) | |
CN116775519A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
US20230315479A1 (en) | Method and system for supporting throughput-oriented computing | |
Hong et al. | The design of the SACLIB/PACLIB kernels | |
Jiménez et al. | Box-counting algorithm on GPU and multi-core CPU: an OpenCL cross-platform study | |
CN114327635A (zh) | 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置 | |
Brock | Rdma-based distributed data structures for large-scale parallel systems | |
Kaouane et al. | SysCellC: Systemc on cell |