TWI582693B - 用於產生抑制的位址軌跡之設備和方法 - Google Patents

用於產生抑制的位址軌跡之設備和方法 Download PDF

Info

Publication number
TWI582693B
TWI582693B TW105116645A TW105116645A TWI582693B TW I582693 B TWI582693 B TW I582693B TW 105116645 A TW105116645 A TW 105116645A TW 105116645 A TW105116645 A TW 105116645A TW I582693 B TWI582693 B TW I582693B
Authority
TW
Taiwan
Prior art keywords
address
instruction
register
track
output
Prior art date
Application number
TW105116645A
Other languages
English (en)
Other versions
TW201642124A (zh
Inventor
托比 歐夫曼
詹姆斯 克洛斯蘭
傑森 布蘭特
比曼 史壯
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201642124A publication Critical patent/TW201642124A/zh
Application granted granted Critical
Publication of TWI582693B publication Critical patent/TWI582693B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3079Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved by reporting only the changes of the monitored data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

用於產生抑制的位址軌跡之設備和方法
本發明之領域一般關於一種電腦處理器軌跡,且更具體來說是關於產生一種抑制的位址軌跡。
處理器、或處理器組執行來自一指令集(例如,指令集架構(ISA))的指令。指令集係與編程相關之電腦架構的部分,且一般包括原始資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和例外處理、及外部輸入和輸出(I/O)。應注意本文中的指令之術語可能係指巨集指令(例如,被提供給處理器用於執行的指令)、或微指令(例如,由處理器之解碼器解碼巨集指令所產生的指令)。
100‧‧‧系統
110‧‧‧處理器
115‧‧‧處理器
120‧‧‧控制器中心
190‧‧‧圖形記憶體控制器中心
150‧‧‧輸入/輸出中心
140‧‧‧記憶體
140A‧‧‧軌跡產生器常式
145‧‧‧協處理器
160‧‧‧輸入/輸出裝置
110A‧‧‧核心
195‧‧‧連線
125‧‧‧軌跡產生器
501-525‧‧‧樣本碼
601‧‧‧引退單元
603‧‧‧軌跡封包產生器
605‧‧‧軌跡封包抑制器
607‧‧‧記憶體
700‧‧‧暫存器架構
710‧‧‧向量暫存器
715‧‧‧寫入遮罩暫存器
725‧‧‧通用暫存器
745‧‧‧純量浮點堆疊暫存器檔案
750‧‧‧MMX填充整數平暫存器檔案
800‧‧‧處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧分配級
810‧‧‧更名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫回/記憶體寫入級
822‧‧‧例外處理級
824‧‧‧提交級
890‧‧‧處理器核心
830‧‧‧前端單元
850‧‧‧執行引擎單元
870‧‧‧記憶體單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令轉譯旁視緩衝器
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧更名/分配器單元
854‧‧‧引退單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧L2快取單元
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧L2快取的區域子集
906‧‧‧L1快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
906A‧‧‧L1資料快取
920‧‧‧攪和單元
922A-B‧‧‧數字轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
1000‧‧‧處理器
1002A-N‧‧‧核心
1010‧‧‧系統代理器
1016‧‧‧匯流排控制器單元
1014‧‧‧整合記憶體控制器單元
1008‧‧‧專用邏輯
1006‧‧‧共享快取單元
1012‧‧‧互連單元
1100‧‧‧多處理器系統
1150‧‧‧點對點互連
1170‧‧‧第一處理器
1180‧‧‧第二處理器
1138‧‧‧協處理器
1172‧‧‧整合記憶體控制器單元
1182‧‧‧整合記憶體控制器單元
1176‧‧‧P-P介面
1178‧‧‧P-P介面
1186‧‧‧P-P介面
1188‧‧‧P-P介面
1132‧‧‧記憶體
1134‧‧‧記憶體
1152‧‧‧P-P介面
1154‧‧‧P-P介面
1190‧‧‧晶片組
1139‧‧‧高效能介面
1196‧‧‧介面
1116‧‧‧第一匯流排
1114‧‧‧I/O裝置
1118‧‧‧匯流排橋接器
1120‧‧‧第二匯流排
1115‧‧‧處理器
1122‧‧‧鍵盤及/或滑鼠
1127‧‧‧通訊裝置
1130‧‧‧資料
1128‧‧‧儲存單元
1124‧‧‧音頻I/O
1214‧‧‧I/O裝置
1300‧‧‧SoC
1302‧‧‧互連單元
1310‧‧‧應用處理器
1320‧‧‧協處理器
1330‧‧‧靜態隨機存取記憶體單元
1332‧‧‧直接記憶體存取單元
1340‧‧‧顯示單元
本發明僅經由在附圖中的舉例,且非限定地說明,在附圖中的相同參考數字表示類似元件,且其中: 第1圖繪示示範電腦架構的方塊圖。
第2圖繪示抑制的位址軌跡之流程圖的實施例。
第3圖繪示抑制的位址軌跡之流程圖的實施例。
第4圖繪示抑制的位址軌跡之流程圖的實施例。
第5(A)-5(B)圖繪示抑制的位址軌跡的示範執行。
第6圖繪示使用軌跡產生器之示範架構的方塊圖。
第7圖係根據本發明之一實施例之暫存器架構700的方塊圖。
第8A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。
第8B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。
第9A圖係根據本發明之實施例之單一處理器核心,與其連結至晶粒上互連網路的連線及其第2級(L2)快取的區域子集之方塊圖。
第9B圖係根據本發明之實施例之第9A圖中的處理器核心之部分之分解圖。
第10圖係根據本發明之實施例之可能具有超 過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器的方塊圖。
第11圖係依照本發明之實施例之第一更具體示範系統的方塊圖。
第12圖係依照本發明之實施例之第二更具體示範系統的方塊圖。
第13圖係依照本發明之實施例之系統晶片的方塊圖。
【發明內容及實施方式】
在下面的說明中,提出了許多具體的細節。然而,了解沒有這些具體的細節仍可實行本發明之實施例。在其他例子中,並未詳細顯示熟知的電路、結構及技術,以免混淆對本說明書的理解。
在本說明書中提到的「一個實施例」、「一實施例」、「一示範實施例」、等等,係表示所述之實施例可能包括一特定特徵、結構、或特性,但每個實施例可能不必包括此特定特徵、結構、或特性。此外,這樣的說法不一定係指相同的實施例。又,當說明與實施例關聯之特定特徵、結構、或特性時,無論是否明確地說明,應認為其在本領域之熟知技藝者的理解內能影響這類與其他實施例關聯之特徵、結構、或特性。
概述
ISA係與微架構有所區分,其係實作ISA之處理器的內部設計。具有不同微架構的處理器能共享共同的指令集。例如,Inter®處理器(例如,Inter®CoreTM處理器)、及美國加州Sunnyvale的超微半導體公司處理器實作幾乎相同版本的x86指令集(具有已加入較新版本的一些擴充),但具有不同的內部設計。例如,ISA的相同暫存器架構可能在使用熟知技術的不同微架構(包括專用實體暫存器、使用暫存器更名機制(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)和引退暫存器檔案)的一或更多動態分配實體暫存器;使用多個映射及暫存器池、等等)中以不同方式來實作。除非另有指明,否則階段暫存器架構、暫存器檔案、和暫存器係指其對軟體及/或編程器係可見的及指令指定暫存器之方式。其中特定性係所期望的,形容詞邏輯、架構、或可見的軟體將用以指示在暫存器架構中的暫存器/檔案,而不同的形容詞將用以指定在給定微架構中的暫存器(例如,實體暫存器、重排序緩衝器、引退暫存器、或暫存器池)。
指令集包括一或更多指令格式。除此之外,給定的指令格式還定義各種欄位(位元數、位元位址)以指定要被進行的運算和要被進行此運算的運算元。給定的指令一般使用給定的指令格式來表示並指定運算和運算元。指令流係特定之指令序列,其中在序列中的每個指令係為指令格式的指令之發生。
科學、金融、自動向量化通用、RMS(辨 識、挖掘、及合成)/視覺和多媒體應用(例如,2D/3D圖形、影像處理、視頻壓縮/解壓縮、語音辨識演算法及音頻處理)通常需要要在大量資料項上進行的相同操作(被稱為「資料平行性」)。單指令多資料(SIMD)係指一種使處理器在多個資料項上進行相同操作的指令類型。SIMD技術特別適用於能將在暫存器中的位元邏輯上分成一些固定尺寸之資料元件的處理器,其中之各者代表一單獨值。例如,在64位元暫存器中的位元可能被指定為要在四個單獨的16位元資料元件上進行的來源運算元,其中之各者代表單獨的16位元值。作為另一實例,在256位元暫存器中的位元可能被指定為要在四個單獨的64位元填充資料元件(四字(Q)尺寸資料元件)、八個單獨的32位元填充資料元件(雙字(D)尺寸資料元件)、十六個單獨的16位元填充資料元件(字(W)尺寸資料元件)、或三十二的單獨的8位元資料元件(位元組(B)尺寸資料元件)上進行的來源運算元。此資料類型被稱為填充資料類型或向量資料類型,且這種資料類型的運算元被稱為填充資料運算元或向量運算元。換言之,填充資料項或向量係指填充資料元件序列;且填充資料運算元或向量運算元係SIMD指令(也稱為填充資料指令或向量指令)的來源或目的運算元。
舉例而言,一種類型的SIMD指令以一垂直方式來指定要在兩個來源向量運算元上進行的單一向量運算以產生具有相同數量之資料元件之相同尺寸的目的向量 運算元(也被稱為結果向量運算元),且依相同資料元件順序。在來源向量運算元中的資料元件也被稱為來源資料元件,而在目的向量運算元中的資料元件也被稱為目的或結果資料元件。這些來源向量運算元具有相同尺寸且包含相同寬度的資料元件,且因此它們包含相同數量的資料元件。在兩個來源向量運算元中之相同位元位置中的來源資料元件形成資料元件對(也被稱為對應之資料元件;亦即,在每個來源運算元對應之資料元件位置0中的資料元件、每個來源運算元對應之資料元件位置1中的資料元件、等等)。分別在這些來源資料元件對之各者上進行由此SIMD指令所指定的運算以產生匹配數量的結果資料元件,且因此每個來源資料元件對具有對應之結果資料元件。由於運算係垂直的且由於結果向量運算元是相同尺寸,具有相同數量的資料元件,且以與來源向量運算元相同的資料元件順序來儲存結果資料元件,因此結果資料元件係在與其在來源向量運算元中的對應之來源資料元件對相同之結果向量運算元的位元位置中。除了此示範類型的SIMD指令之外,還有各種其他類型的SIMD指令(例如,其僅具有一個或具有超過兩個來源向量運算元;其以一水平形式來運算;其產生具有不同尺寸的結果向量運算元,其具有不同尺寸的資料元件、及/或其具有不同的資料元件順序)。應了解目的向量運算元(或目的運算元)之術語被定義為進行由指令所指定之運算的直接結果,包括將此目的運算元儲存在一位置中(使其成為暫存器或儲 存在由此指令所指定的記憶體位址中),使得它可能被另一指令存取作為來源運算元(藉由另一指令來指定此相同位置)。
指令集架構可能包括至少一些SIMD指令,其指定向量運算且其具有欄位以從這些向量暫存器選擇來源暫存器及/或目的暫存器(示範SIMD指令可能指定要在一或更多向量暫存器之內容上進行的向量運算,且此向量運算的結果要被儲存在其中一個向量暫存器中)。本發明之不同實施例可能具有不同尺寸的向量暫存器且支援更多/更少/不同尺寸的資料元件。
由SIMD指令所指定之多位元資料元件的尺寸(例如,位元組、字、雙字、四字)判定在向量暫存器內之「資料元件位置」的位元位置,且向量運算元的尺寸判定資料元件的數量。填充資料元件係指儲存在特定位置中的資料。換言之,依據在目的運算元中的資料元件之尺寸和目的運算元之尺寸(在目的運算中的總位元數量)(或換句話說,依據目的運算元之尺寸和在目的運算元內的資料元件數量),在產生之向量運算元內的多位元資料元件位置之位元位置改變(例如,若用於產生之向量運算元的目的係向量暫存器(在本論述中,向量暫存器和填充資料元件暫存器可互換使用),則在目的向量暫存器內的多位元資料元件位置之位元位置改變)。例如,多位元資料元件之位元位置在於32位元資料元件上運算的向量運算(資料元件位置0佔據位元位置31:0、資料元件位置1 佔據位元位置63:32、等等)與於64位元資料元件上運算的向量運算(資料元件位置0佔據位元位置63:0、資料元件位置1佔據位元位置127:64、等等)之間有所不同。考慮了8位元位元組(B)、16位元字(W)、32位元雙字(D)或單精度浮點數、及64位元四字(Q)或雙精度浮點數的資料元件尺寸,雖然其他寬度也是可能的。
示範電腦架構
處理器(如本文所論述之處理器)一般執行在運算元上運算(例如,加入、移動等)的指令。處理器軌跡允許輸出(例如,用於觀看)處理器之活動。例如,處理器軌跡可能(例如,使用專用硬體設施來)擷取關於在每個硬體執行緒上之軟體執行的資訊,使得在執行完成之後,使用者或軟體能處理擷取之軌跡資料及/或重建精確的程序流程。
可能在資料封包(例如,用於所執行之每個指令的一或更多封包)中收集擷取之處理器軌跡。處理器軌跡(例如,資料集)可能包括控制流程軌跡,其在它們的封包中包括時序和程式流程資訊(例如,分支目標、所採取之分支/未採取之指示)及程式引起的模式相關資訊(例如,狀態轉換)。這些封包可能在被輸出之前在內部(例如,在處理器中)被緩衝。處理器軌跡(例如,輸出之資料集)可能藉由將其寫至檔案(例如,至記憶體、及/或至埠口(如聯合測試工作組除錯埠(JTAG-DP))被 輸出。處理器軌跡可能在被抑制之前在內部被緩衝且接著被發送至檔案(例如,至記憶體、及/或至埠口)。在一實施例中,處理器位址軌跡被輸出至除錯器或效能設定檔。處理器軌跡可能包括資料值(DV)軌跡及/或資料位址軌跡,如資料線性位址(DLA)。處理器軌跡可能包括資料值(DV)軌跡封包及/或資料位址軌跡封包,如資料線性位址(DLA)封包。由程式之記憶體存取(例如,讀取或寫入)所建立的資料值和資料位址軌跡(例如,封包)可能建立不期望之大的處理器軌跡輸出(例如,資料集)。由指令所存取之資料位址可能建立處理器軌跡的不期望之大尺寸的位址軌跡(例如,資料封包)。在一實施例中,處理器軌跡(例如,包括DV和DLA封包的輸出之資料集)超過僅包括控制流程封包的處理器軌跡輸出之尺寸(以位元為單位)的63倍。抑制可能在產生封包之前發生(例如,在封包中完全不包括位址且具有或沒有在內部被緩衝的軌跡〔例如,封包〕)。
第1圖係示範電腦架構100的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及具有處理器的各種其他電子裝置之本領域中所知的其他系統設計和配置也適用於抑制的位址軌跡。一般而言,能夠合併處理器及/或如本文所揭露之其 他執行邏輯之種類繁多的系統或電子裝置通常適用於抑制的位址軌跡。
系統100係依照本揭露之一實施例。系統100包括一或更多處理器110、115,其係耦接至控制器中心120。在一實施例中,控制器中心120包括圖形記憶體控制器中心(GMCH)190和輸入/輸出中心(IOH)150(其可能在獨立晶片上);GMCH 190包括耦接記憶體140和協處理器145的記憶體和圖形控制器;IOH 150將輸入/輸出(I/O)裝置160耦接至GMCH 190。另外,記憶體和圖形控制器之一或兩者係整合在(如本文所述之)處理器內,記憶體140和協處理器145係直接耦接至處理器110、及在具有IOH 150之單晶片中的控制器中心120。
在第1圖中以虛線來表示額外處理器115的非必要性。每個處理器110、115可能包括如本文所述之一或更多處理核心(110A),且可能是一些型式的處理器110。
記憶體140可能是例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或這兩者之組合。針對至少一實施例,控制器中心120經由如前端匯流排(FSB)之多點匯流排、如快速路徑互連(QPI)的點對點介面、或類似連線195來與處理器110、115通訊。
在一實施例中,協處理器145係專用處理器,例如,高產量多重整合核心(MIC)處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處 理器或之類。在一實施例中,控制器中心120可能包括整合圖形加速器。
就規制標準而言,在實體資源110、115之間會有多種差異,包括架構、微型架構、熱、功率消耗特性、等等。
在一實施例中,處理器110執行控制一般類型之資料處理運算的指令。嵌入於指令內的可能是協處理器指令。處理器110辨識這些協處理器指令為應由附接協處理器145執行的類型。藉此,處理器110在協處理器匯流排或其他互連上對協處理器145發出這些協處理器指令(或代表協處理器指令的控制信號)。協處理器145接受和執行接收之協處理器指令。
處理器110包括硬體軌跡產生器125。儘管此軌跡產生器125被繪示為在核心110A外部,但在一些實施例中在核心110A內部。硬體軌跡產生器可能產生處理器軌跡,如本文所論述。在一實施例中,硬體軌跡產生器包括軌跡抑制器,用以輸出執行指令之抑制的位址軌跡。軌跡抑制器可能是(例如,硬體)邏輯,用以抑制處理器(例如,位址)軌跡。如本文所使用,處理器軌跡(例如,位址軌跡)可能係指產生或輸出之軌跡資料之封包或一些封包,例如,DV及/或DLA封包。軌跡抑制器可能是軟體碼,用以抑制處理器軌跡。在一實施例中,軌跡抑制器壓縮處理器軌跡的位址資料(例如,每個運算元的位址)。例如,軌跡抑制可能用以減少傳送軌跡所需的頻寬 及/或儲存軌跡所需的儲存。此外或另外,軌跡抑制器移除在處理器軌跡操作期間所產生的資料(例如,在被輸出至使用者及/或至分析程序之前),使得沒有輸出被產生用於在輸出之資料軌跡中的特定操作及/或指令,如下面參考第5A-5B圖進一步所述。軌跡產生器(例如,軌跡抑制器)可能是硬體、軟體、韌體、或以上之任何組合。例如,軌跡產生器可能包括軟體,如被儲存作為軌跡產生器常式140A,用以產生抑制的軌跡,如本文所論述。在一實施例中,軌跡產生器包括儲存在記憶體中的軌跡抑制器軟體,用以產生抑制的軌跡,如本文所論述。軌跡產生器常式140A可能與由軌跡產生器所軌跡的任何軟體分離。抑制的資料軌跡一般係指來自處理器軌跡的一組資料,其尺寸小於非抑制的資料軌跡,例如,經由移除某些位址資料,如本文所揭露。在某些實施例中,抑制包括沒有輸出(例如,沒有輸出的封包)用於可抑制執行指令。儘管在其他實施例中,抑制包括輸出相較於非抑制的封包較小的封包,例如,抑制的輸出是沒有承載資料或不同的(無標頭)封包的一標頭位元組,其指示此記憶體位址被抑制,但不包括位址本身。
第2圖繪示(例如,在處理器內)之抑制的位址軌跡200之流程圖的實施例。如圖所示,例如藉由硬體指令提取單元來提取指令201。接著例如藉由硬體指令解碼單元來解碼提取之指令202。接著例如藉由硬體執行單元來執行解碼之提取指令203。接著,例如當例如藉由 硬體引退單元來引退返回之結果時,寫回執行指令204。若有任何可抑制的位址(205),例如,若有任何(i)相對位址,如存取參考(例如,有或沒有指定之偏移)位址暫存器(例如,包含位址的暫存器)之位址的指令或存取不變之(例如,不變的,因為先前在處理器軌跡中輸出位址)暫存器的指令或(ii)存取絕對位址(例如,全域變數、區域變數、或常數),則可能抑制此位址或這些位址。抑制(206)可能包括產生不具有任何用於不變之暫存器(例如,從位址軌跡移除包含在暫存器中的位址,使得沒有任何對應輸出)或用於相對位址(例如,從位址軌跡移除相對位址,使得沒有任何對應輸出)的輸出之抑制的位址軌跡及/或輸出暫存器暗示封包。在一實施例中,暫存器暗示封包包括至少一個位元,其中其之低值(例如,0)意味著在此執行指令中存取的暫存器係不變的(例如,不變的,因為先前在處理器軌跡中輸出位址)暫存器。另外,暫存器暗示封包可能包括至少一個位元,其中其之高值(例如,1)意味著在此執行指令中存取的暫存器係不變的(例如,不變的,因為先前在處理器軌跡中輸出位址)暫存器。在某些實施例中,系統或使用者將辨識出設定暫存器暗示位元(例如,設定為0或1,如緊接上面所述)以指示不變之暫存器,且系統或使用者可能確定在來自其先前輸出(例如,來自非抑制的位址軌跡封包或部分)的此不變之暫存器中的位址。
抑制(206)可能包括產生抑制的位址軌跡封 包,(例如,僅)包括由執行指令所存取之虛擬位址和被設定以指示執行指令存取暫存器的旗標(例如,位元或一些位元)。下面包括了此實例。存取相同、不變之暫存器的後續執行指令可能接著僅輸出暫存器暗示封包,如本文所述。抑制(206)可能包括產生抑制的位址軌跡封包,包括由執行指令所存取之虛擬位址和被設定以指示執行指令存取暫存器的旗標(例如,位元或一些位元)。例如,若使用Intel®x86指令集架構的記憶體分段,則抑制的位址軌跡封包可能包括段基底。抑制(206)可能包括產生抑制的位址軌跡封包,包括(例如,僅)由執行指令所存取之線性位址(例如,等於虛擬位址加上段基底)和被設定以指示執行指令存取暫存器的旗標(例如,位元或一些位元)。
在一實施例中,當最初(例如,在一碼段中)存取暫存器時,未抑制在暫存器中的位址,但在利用此暫存器的後續存取中抑制位址。例如,在上述一實施例中,解碼器可能判定來自位址的暫存器值而不是輸出暫存器暗示封包。
在另一實施例中,暫存器暗示封包係儲存在位址暫存器中的位址。在又一實施例中,暫存器暗示封包係壓縮封包(例如,1位元組(8位元)封包而不是16、32、64位元或更大尺寸的位址封包),其被預定為係指此暫存器,例如,輸出(例如,1位元組封包指示)暫存器名稱,如RAX(64位元之儲存)、EAX(32位元之儲 存)、或AX(16位元之儲存)。輸出之暫存器名稱可能是(例如,比包含在暫存器中之位址更少位元的)預定位址,使得系統或使用者將辨識位址為指示指令存取特定暫存器,但不輸出此特定暫存器的內容。亦即,輸出可能是暫存器的名稱且不是暫存器的內容。抑制可能包括抑制的位址軌跡,不具有任何用於絕對位址的輸出(例如,從位址軌跡移除絕對位址,如變數名稱或常數名稱(或其虛擬位址),使得沒有任何對應輸出)。
雖然描繪了在寫回204之後檢查任何位址是否為可抑制的205,但本揭露並不限於此。例如,檢查205可能在執行203之後發生。可能接著輸出資料軌跡207(例如,抑制的位址軌跡)。資料軌跡可能僅包括抑制的位址軌跡且沒有任何資料值軌跡。
第3圖繪示(例如,在處理器內)之抑制的位址軌跡300之流程圖的實施例。如圖所示,例如藉由硬體指令提取單元來提取指令301。接著例如藉由硬體指令解碼單元來解碼提取之指令302。接著例如藉由硬體執行單元來執行解碼之提取指令303。接著,例如當例如藉由硬體引退單元來引退返回之結果時,寫回執行指令304。若有任何絕對位址,如存取絕對記憶體位址的執行指令(例如,全域變數、區域變數、或常數)305,則可能抑制此位址或這些位址。抑制可能包括抑制的位址軌跡,不具有任何用於絕對位址的輸出(例如,從位址軌跡移除絕對位址,如變數名稱或常數名稱,使得沒有任何對應輸 出)。
雖然描繪在寫回304之後發生檢查任何位址是否為絕對的305,但本揭露並不限於此。例如,檢查305可能在執行303之後發生。可能接著輸出資料軌跡307(例如,包括抑制的位址軌跡)。
第4圖繪示(例如,在處理器內)之抑制的位址軌跡400之流程圖的實施例。如圖所示,例如藉由硬體指令提取單元來提取指令401。接著例如藉由硬體指令解碼單元來解碼提取之指令402。接著例如藉由硬體執行單元來執行解碼之提取指令403。接著,例如當例如藉由硬體引退單元來引退返回之結果時,寫回執行指令404。若有任何再用的暫存器,如存取不變之(例如,不變的,因為在處理器軌跡中輸出內容(例如,(位址))暫存器405的執行指令,則可能抑制在暫存器中的此位址或這些位址。抑制可能包括抑制的位址軌跡,不具有任何用於不變之暫存器的輸出(例如,從包含在暫存器中的位址軌跡移除位址,使得沒有任何對應輸出)及/或輸出暫存器暗示封包。抑制可能包括發送資料線性位址(DLA)封包(例如,與非抑制的DLA封包相同的位元數)例如作為暫存器暗示封包,但其將位址(例如,不包括實際DLA)替換成被設定(例如,設為1)以指示基於暫存器再用之抑制的單一(例如,位址抑制的)位元。亦即,抑制可能包括輸出具有單一或複數個被設定以指示抑制且不包括位址的位元之承載資料的DLA封包。可能輸出暫存器暗示 封包而不是輸出在暫存器中的位址及/或輸出參考(例如,讀取)暫存器的相對位址。在一實施例中,暫存器暗示封包係儲存在位址暫存器中的位址(例如,值)。在另一實施例中,暫存器暗示封包係壓縮封包(例如,1位元組封包),其被預定為係指例如輸出位元的此暫存器,其指示存取不變的暫存器(例如,使得系統或使用者可能從其先前輸出(例如,從非抑制的位址軌跡封包或部分)確定在此不變之暫存器中的位址及/或輸出暫存器名稱,如RAX(64位元之儲存)、EAX(32位元之儲存)、或AX(16位元之儲存)。輸出之暫存器名稱可能是預定位址,使得系統或使用者將辨識位址為指示指令存取特定暫存器,但不輸出此特定暫存器的內容。亦即,參考暫存器的名稱且不是暫存器的內容。
雖然描繪了在寫回404之後檢查是否再使用任何暫存器405,但本揭露並不限於此。例如,檢查405可能在執行403之後發生。可能接著輸出資料軌跡407,例如,包括抑制的位址軌跡。
一種設備(例如,處理器)可能包括用以實現本文中揭露之任一者之邏輯。處理器可能利用邏輯以執行本文所論述之方法之任何單一者、組合、或所有者,例如,用以執行在第2、3、及/或4圖中之流程圖的邏輯。
第5(A)-(B)圖繪示用於一組樣本碼(例如,指令流)501-525之抑制的位址軌跡的示範執行。此示範碼段使用暫存器為基存取(例如,存取位址暫存器) 與被編碼成指令的一些全域變數位址之混合物。第5(A)-(B)圖繪示三個獨立的位址軌跡,分別被標記為(1)、(2)和(3):其中(1)係沒有任何位址軌跡之抑制,(2)係在絕對位址之位址軌跡中的抑制,及(3)係為在位址軌跡中的再用暫存器輸出暫存器為基暗示以及在絕對位址之位址軌跡中的抑制。這些軌跡進一步被簡化為僅考慮資料線性位址(DLA)且忽略資料值(DV)軌跡。(請注意,下面假設軌跡通過每個條件跳躍且我們不考慮軌跡指令本身的封包尺寸)。這裡所考慮之非抑制的封包係1位元組標頭封包以及8位元組的全線性位址,這意味著每個封包將是9位元組。在一實施例中,當符合例如在第2、3、及/或4圖中的某些條件時,抑制的位址軌跡包括只(例如,為可抑制位址)輸出標頭封包而不是全線性(例如,虛擬)位址。在一實施例中,標頭封包(例如,只有被輸出至位址軌跡中用於此執行指令的封包)包括所存取之虛擬位址和被設定以指示執行指令存取暫存器(例如,其內容先前未被輸出至位址軌跡中的暫存器)的旗標(例如,位元或一些位元)。在一實施例中,標頭封包(例如,只有被輸出至位址軌跡中用於此執行指令的封包)包括所存取之虛擬位址或被設定為指示執行指令存取暫存器(例如,其內容先前未被輸出至位址軌跡中的暫存器)的旗標(例如,位元或一些位元)。在一實施例中,標頭封包被抑制以不包括前導零(例如,若位址只有4位元組,則僅發送出4位元組的線性位址而不是大於4位元 組的全位址)。在此類的實施例中,輸出之抑制的位址軌跡可能包括非抑制尺寸的線性位址(例如,作為標頭封包的一部分)。
針對這裡的所有指令,請注意參考符元(1)係指不具有任何抑制的位址軌跡,使得所存取之任何位址被完全輸出至位址軌跡中。在此我們可能假設零之段基底,但本揭露並不限於此。轉向在第5(A)-5(B)圖中的樣本23指令軌跡之列501的移動指令(「mov」),首先請注意「qword prt」是四字(即,64位元),其指到(例如,開始於)在藉由將方括號內之RCX加上18h(在此,h意味著18係在十六進位數字系統中)的位址暫存器內容所給定之相對位址所指示的位址。在此,位址暫存器RCX包含(例如,儲存)位址0x7F0000,因此要被移至RDX中的qword係儲存在開始於0x7F0000加上18h之記憶體中的位置,亦即,在記憶體位置0x7F0018。作為另一實例,當此指令存取儲存在開始於0x7F0000的記憶體中之位置的qword時,用於在列502之移動指令之非抑制的位址軌跡(1)在此輸出位址0x7F0000。如本領域之通常技藝者所了解,上述同樣適用於其餘的指令。
在列501,考慮先前未輸出包含在暫存器RCX中的位址(例如,考慮位址軌跡係開始於列/指令501)。針對抑制的位址軌跡(2),即,在絕對位址之位址軌跡中的抑制,在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同 的,即,0x7F0018,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),即,在用於再用暫存器之暫存器為基暗示的位址軌跡(如儲存在位址暫存器中的位址)中輸出以及在絕對位址之位址軌跡中的抑制,包含在暫存器RCX中的位址0x7F0000被輸出作為暫存器暗示封包(例如,作為給使用者及/或碼之在此指令中的相對位址參考(例如,利用)此位址暫存器之暗示),因為位址0x7F0000先前未被輸出至此軌跡中。指令可能有序或亂序地運行,如本文所論述。
移動指令502也存取由儲存在暫存器RCX中之位址所指向的qword,用以將此qword移至暫存器RAX中。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x7F0000,其係在由指令所存取之暫存器RCX中的位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RCX中的位址0x7F0000,因為它先前被輸出至在指令501之(3)中的位址軌跡中,亦即,因為在RCX中的位址0x7F0000先前被輸出至此軌跡中且在暫存器RCX中的值相對於在指令501中的RCX之值未被改變(例如,值在目前指令中與在先前指令501之執行結束時係相同的)。
互斥或(XOR)指令503不存取位址,它僅將暫存器ESI的內容XOR其本身且將結果儲存回至ESI 中,因此未產生任何位址軌跡(1)-(3)。
減法指令504存取由儲存在暫存器RDX中之位址0x7F60000加上21B0h(即,0x7F621B0)所指向的qword,其係由指令所存取之相對位址。從在RAX中的值和被儲存至RAX中的結果減去qword。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x7F621B0,其係來自將21B0h加上在暫存器RDX中之值的相對位址。針對抑制的位址軌跡(3),包含在暫存器RDX中的位址0x7F60000被輸出作為暫存器暗示封包(例如,作為給使用者及/或碼之在此指令中的相對位址參考(例如,利用)此位址暫存器之暗示),因為來自暫存器RDX的位址0x7F60000先前未被輸出至此軌跡中。
移動指令505不存取位址,它僅將暫存器RCX的內容移至RBX,因此未產生任何位址軌跡(1)-(3)。
移動指令506將在暫存器RAX中的值移至開始於在藉由將儲存在RDX中的0x7F60000位址加上0A20h(再次,h意味著在十六進位數字系統中)所給定之相對位址所指示的位址之四字(即,64位元)(即,開始於位址0x7F60A20的qword)中。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即, 0x7F60A20,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RDX中的位址0x7F60000,因為它先前被輸出至在指令504之(3)中的位址軌跡中,亦即,因為在RDX中的位址0x7F60000先前被輸出至此軌跡中且在暫存器RDX中的值相對於在指令504中的RDX之值未被改變(例如,值在目前指令中與在先前指令504之執行結束時係相同的)。
移動指令507移動開始於在藉由將儲存在RCX中的0x7F0000位址加上10h所給定之相對位址所指示的位址之四字(即,64位元),即,開始於位址0x7F0010的qword。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x7F0010,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RCX中的位址0x7F0000,因為它先前被輸出至在指令501之(3)中的位址軌跡中,亦即,因為在RCX中的位址0x7F0000先前被輸出至此軌跡中且在暫存器RCX中的值相對於在指令501中的RCX之值未被改變(例如,值在目前指令中與在先前指令501之執行結束時係相同的)。
比較指令(「cmp」)508存取由儲存在碼中 作為被命名為「GlobalVariableOne」之全域變數之位址所指向的dword(即,32位元之雙字)。它接著從dword減去在暫存器ESI中的值。針對(1),用於「GlobalVariableOne」的位址被輸出至位址軌跡中。針對抑制的位址軌跡(2),在此指令中有絕對位址,因此沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於「GlobalVariableOne」的位址。針對抑制的位址軌跡(3),除了在此指令中有絕對位址之外,也沒有任何在包含在暫存器中的(例如,不變的)位址之存取,因此沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於在抑制的軌跡(2)和(3)下的指令。
若低於或等於指令(「jbe」)509不存取位址,則跳躍,若第一運算元在比較指令508中小於或等於第二運算元,則它僅跳至標記為FirstBranch列的碼,因此未產生任何位址軌跡(1)-(3)。
移動指令510存取由被儲存作為被命名為「GlobalVariableTwo」之全域變數之位址所指向的dword。它接著將此dword移至暫存器EDI中。針對(1),用於「GlobalVariableTwo」的位址被輸出至位址軌跡中。針對抑制的位址軌跡(2),在此指令中有絕對位址,因此沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於「GlobalVariableTwo」的存取。針對抑制的位址軌跡(3),除了在此指令中有 絕對位址之外,也沒有任何在包含在暫存器中的(例如,不變的)位址之存取,因此沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於在抑制的軌跡(2)和(3)下的指令。
移動指令511存取由儲存在暫存器RBX中之位址0x61F000加上18h(即,0x61F018)所指向的qword,其係由指令所存取之相對位址。qword接著被移至暫存器RCX中。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x61F018,其係參考(例如,存取)由此指令所存取之暫存器RBX的相對位址。針對抑制的位址軌跡(3),包含在暫存器RBX中的位址0x61F000被輸出作為暫存器暗示封包(例如,作為給使用者及/或碼之在此指令中的相對位址參考(例如,利用)此位址暫存器之暗示),因為來自暫存器RBX的位址0x61F000先前未被輸出至此軌跡中。
比較指令512存取開始於在藉由將儲存在暫存器RCX中的0x7F0000值加上儲存在暫存器RDI中的100h(再次,h意味著在十六進位數字系統中)值所給定之相對位址所指示的位址之qword(即,64位元之四字),即,開始於位址0x7F0100的qword。接著從qword減去零(即,0)的立即值。針對(1)、(2)、和(3),輸出0x7F0100的相對位址。在本實施例中,針對抑制的軌跡(2),在此指令中沒有任何絕對位址,因此 沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的。針對抑制的軌跡(3),有兩個暫存器用以產生相對位址,使得單一暫存器暗示封包可能不允許確定暫存器暗示封包係指哪個暫存器。藉此,在使用複雜位址(例如,使用超過一個暫存器以判定位址)的這樣實施例中,可能不抑制位址,如這裡在(3)中所示。在一實施例中,位址當它是簡單位址(例如,不存取超過一個暫存器)時被抑制。
指令跳躍當等於(「je」)513時不存取位址,若第一運算元在比較指令512中等於第二運算元,則它僅跳至標記為FirstSkip列的碼,因此未產生任何位址軌跡(1)-(3)。
移動指令514存取開始於在藉由將儲存在暫存器RCX中的0x7F0000值加上儲存在暫存器RDI中的100h(再次,h意味著在十六進位數字系統中)值所給定之相對位址所指示的位址之qword(即,64位元之四字),即,開始於位址0x7F0100的qword。接著將qword移至暫存器RCX。針對(1)、(2)、和(3),輸出0x7F0100的相對位址。在本實施例中,針對抑制的軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的。針對抑制的軌跡(3),有兩個暫存器用以產生相對位址,使得單一暫存器暗示封包可能不允許確定暫存器暗示封包係指哪個暫存器。藉此,在使用複雜位址(例如,使用超過一 個暫存器以判定位址)的這樣實施例中,可能不抑制位址,如這裡在(3)中所示。
移動指令515存取由儲存在暫存器RBX中之位址所指(例如,開始於)的qword,用以將此qword移至暫存器RAX中。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x61F000,其係由指令所存取之在暫存器RBX中的位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RBX中的位址0x61F000,因為它先前被輸出至位址軌跡作為在指令511之(3)中的暫存器暗示封包,亦即,因為在RBX中的位址0x61F000先前被輸出至此軌跡中且在暫存器RBX中的值相對於在指令511中的RBX之值未被改變(例如,值在目前指令中與在先前指令511之執行結束時係相同的)。
比較指令516存取其開始於在藉由將儲存在暫存器RCX中的0x7F0000值加上8立即值所給定之相對位址所指示的位址之qword(即,64位元之四字),即,開始於位址0x7F0008的qword。接著從qword減去在暫存器RAX中的值(即,0x61F000)。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x7F0008,其係由指令所存取之相對位址。針對抑制的位 址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RCX中的位址0x7F0000,因為它先前被輸出至在指令501之(3)中的位址軌跡中,亦即,因為在RCX中的位址0x7F0000先前被輸出至此軌跡中且在暫存器RCX中的值相對於在指令501中的RCX之值未被改變(例如,值在目前指令中與在先前指令501之執行結束時係相同的)。
指令跳躍當不等於(「jne」)517時不存取位址,若第一運算元在比較指令516中不等於第二運算元,則它僅跳至標記為FirstSkip列的碼,因此未產生任何位址軌跡(1)-(3)。
列518係用於碼的FirstBranch標記,例如,識別出若滿足用於jbe 509的條件,則指令509將於何處跳躍,因此未產生任何位址軌跡(1)-(3),因為沒有存取任何位址。
移動指令519將開始於在藉由將儲存在RBX中的0x61F000位址加上18h之立即值所給定之相對位址所指示的位址之四字(即,開始於位址0x61F018的qword)移至暫存器RAX中。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x61F018,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RBX 中的位址0x61F000,因為它先前被輸出至在指令511之(3)中的位址軌跡中,亦即,因為在RBX中的位址0x61F000先前被輸出至此軌跡中且在暫存器RBX中的值相對於在指令511中的RBX之值未被改變(例如,值在目前指令中與在先前指令511之執行結束時係相同的)。
移動指令520將在暫存器ESI中的值移至由儲存在暫存器RAX中之位址0x51500000加上0A28h所指向的dword(即,0x51500A28)中,其係由指令所存取之相對位址。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x51500A28,其係由此指令所存取之參考暫存器RAX的相對位址。針對抑制的位址軌跡(3),包含在暫存器RAX中的位址0x51500000被輸出作為暫存器暗示封包(例如,作為給使用者及/或碼之在此指令中的相對位址參考(例如,利用)此位址暫存器之暗示),因為來自暫存器RAX的位址0x51500000先前未被輸出至此軌跡中。
移動指令521移動開始於在藉由將儲存在暫存器RBX中的0x61F000位址加上20h所給定之相對位址所指示的位址之四字(即,開始於位址0x61F020的qword)。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x61F020,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),沒有任何資 料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RBX中的位址0x61F000,因為它先前被輸出至在指令511之(3)中的位址軌跡中,亦即,因為在RBX中的位址0x61F000先前被輸出至此軌跡中且在暫存器RBX中的值相對於在指令511中的RBX之值未被改變(例如,值在目前指令中與在先前指令511之執行結束時係相同的)。
移動指令522移動開始於在藉由將儲存在RBX中的0x61F000位址加上18h所給定之相對位址所指示的位址之四字(即,開始於位址0x61F018的qword)。針對抑制的位址軌跡(2),在此指令中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x61F018,其係由指令所存取之相對位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RBX中的位址0x61F000,因為它先前被輸出至在指令511之(3)中的位址軌跡中,亦即,因為在RBX中的位址0x61F000先前被輸出至此軌跡中且在暫存器RBX中的值相對於在指令511中的RBX之值未被改變(例如,值在目前指令中與在先前指令511之執行結束時係相同的)。
移動指令523存取由儲存在暫存器RBX中之位址所指(例如,開始於)的qword,用以將此qword移至暫存器RCX中。針對抑制的位址軌跡(2),在此指令 中沒有任何絕對位址,因此沒有任何位址軌跡之抑制,使得軌跡(1)和(2)係相同的,即,0x51500000,其係由指令所存取之在暫存器RAX中的位址。針對抑制的位址軌跡(3),沒有任何資料(例如,沒有任何封包)被輸出至資料軌跡中(即,有抑制)用於包含在暫存器RAX中的位址0x51500000,因為它先前被輸出至在指令520之(3)中的位址軌跡中,亦即,因為在RAX中的位址0x51500000先前被輸出至指令520之(3)中的位址軌跡作為暫存器暗示封包,亦即,因為在RAX中的位址0x51500000先前被輸出至此軌跡中且在暫存器RAX中的值相對於在指令520中的RAX之值未被改變(例如,值在目前指令中與在先前指令520之執行結束時係相同的)。
指令524將在暫存器RDX中的值加上0A20h之立即值,因此未產生任何位址軌跡(1)-(3),因為未存取任何位址(例如,從暫存器或記憶體位址未拉出任何位址)。
列525係用於碼的FirstSkip標記,例如,識別出若滿足用於跳躍的條件,則指令513和517將於何處跳躍,因此未產生任何位址軌跡(1)-(3),因為沒有存取任何位址。
用於上述位址軌跡之統計的總結係在下面的「表格1:位址軌跡」中。尤其是,請注意保留給抑制的軌跡(3)之總資料空間僅產生65%之原始、非抑制的位 址軌跡(1)。較小尺寸的軌跡可能允許更快地輸出軌跡,例如,更快地寫入至檔案(例如,至記憶體、及/或至埠口)。
在一實施例中,軌跡抑制器輸出執行指令之抑制的位址軌跡。抑制的位址軌跡可能包括一輸出封包,包含由第一執行指令所存取之儲存在位址暫存器中的(例如,虛擬)位址。輸出封包可能包括暫存器暗示封包,其包括指示暫存器被存取的暫存器旗標。第二執行指令可能存取與在第一執行指令中相同的位址暫存器,且若儲存在位址暫存器中的位址相對於第一指令係不變的,則抑制的位址軌跡可能不包括任何用於第二執行指令的輸出。此外或另外,第二執行指令可能存取參考與在第一執行指令中相同之位址暫存器的相對位址,且若儲存在位址暫存器中的位址相對於第一指令係不變的,則抑制的位址軌跡之輸出封包可能包括用於第二執行指令的暫存器暗示封包。第一執行指令可能存取位址暫存器,且抑制的位址軌跡可能 包括被輸出用於第一執行指令之輸出封包的暫存器暗示封包。
例如,請注意下面在表格2-4中之執行指令實例的三個區段及對應之抑制的輸出封包。請注意下面使用的虛擬位址(VA)係實例且可能使用任何尺寸或格式的位址(包括具有或沒有段基底)。輸出封包可能是1位元組或複數個位元組。暫存器旗標可能指示指令存取(例如,位址)暫存器。在輸出封包中的暫存器旗標可能包括一位元或一些位元,其對應於存取暫存器的此指令,例如,一些位元中的一位元,其被預定為指示一暫存器存取。在一實施例中,暫存器旗標係輸出封包的第一或最後位元。
下面的表格2繪示一實施例,其中:針對第一指令(移動指令MOV〔EAX〕),抑制的軌跡之輸出封包包括虛擬位址(例如,這裡是1000),因為這在此碼段中係第一次存取暫存器EAX。暫存器旗標(例如,如上所論述)也被設定以指示暫存器係由第一指令所存取。第二指令(MOV EBX)也存取暫存器EAX,其內容相對於其當被輸出用於第一指令時的內容係不變的,使得未輸出虛擬位址和暫存器旗標,反而輸出1位元組暗示封包,其中位元組之至少其中一個位元被設定以指示暫存器的內容相對於其當被輸出用於先前(例如,第一)指令時的內容係不變的。這對系統或使用者指示看著用於此位址的先前(例如,軌跡)輸出,例如,而不產生非抑制的位址軌 跡。指令3(MOV ECX)也存取暫存器EAX,其內容相對於當被輸出用於第一指令時的內容係不變的,使得未輸出虛擬位址和暫存器旗標,反而輸出1位元組暗示封包,其中位元組之至少其中一個位元被設定以指示暫存器的內容相對於其當被輸出用於先前(例如,第一)指令時的內容係不變的。這對系統或使用者指示看著用於位址的先前輸出,例如,而不產生非抑制的位址軌跡。指令4(MOV〔EDX〕)存取新的暫存器(例如,這裡是EDX),使得抑制的軌跡之輸出封包包括虛擬位址(例如,這裡是1000),因為這在此碼段中係第一次存取暫存器EAX。暫存器旗標(例如,如上所論述)也被設定以指示暫存器係由第四指令所存取。在上述實施例中,暫存器暗示封包被輸出用於被抑制之每個指令。
下面的表格3繪示一實施例,其中前四個指令係與在表格2中的指令相同。然而,在表格3中的指令2,沒有任何輸出的封包(例如,未輸出任何暫存器暗示封包),反而檢查後續指令(例如,有序的)以看看是否存取相同的暫存器(或先前被輸出且不變的暫存器值)及 是否設定額外位元(例如,在計數器中)。在此,第一位元被設定為當作暫存器暗示封包,但它未在此指令之後被立即地輸出。指令3也存取暫存器EAX(具有相對於第一指令不變的內容),因此第二位元被設定為當作暫存器暗示封包。指令4不存取相同、不變的暫存器,暫存器暗示封包接著與設定之兩個位元一起被輸出。因此,若超過兩個連續指令存取(相對於緊接先前輸出之值)不變的暫存器,則相同數量的位元當被輸出時可能被設定為當作暫存器暗示封包。例如,參見在指令7中,暫存器暗示封包被輸出作為前三個(例如,包括緊接先前執行的指令MOV EBI),全部都存取不變的暫存器EAX和EDX。在上述實施例中,某些指令可能不包括輸出之輸出封包,且反而暫存器暗示封包可能與被設定用於每個指令的位元一起被輸出,其存取先前輸出之不變的暫存器。上述暫存器暗示封包可能先前被立即地輸出至存取一改變之值(例如,(新的)暫存器)的下一個指令,例如,在表格3中。
下面的表格4繪示一實施例,其中所有八個指令係與在表格3中的指令相同。第一次具有先前未被輸出之目前值的暫存器當在指令1(MOV〔EAX〕)中時被存取,依據在上面表格2和3中的實例而輸出輸出封包。然而,(例如,來自軌跡抑制器的)軌跡包括在執行後續碼段之後被輸出的輸出封包,而不是在指令當在指令2(MOV EBX)中時存取不變之值(例如,先前輸出的)暫存器之後輸出暫存器暗示封包。如這裡所示,暫存器暗示封包包括用於每個對應之執行指令的位元,使得一設定位元(例如,1)對應於一先前輸出,且因為不變之暫存器值和清除之位元(例如,0)對應於用於此暫存器的新值或新暫存器的首次使用,雖然可能使用相反的慣例。
在此繪示了7位元的暫存器暗示封包,然而可能使用任何數量的位元。暫存器暗示封包被繪示為複數 個位元,其中被設定的每個位元表示用於各別指令之抑制的位址,且被清除的每個位元表示用於各別指令之未抑制的位址。上述暗示封包可能被稱為「ASNS」(位址抑制的或未抑制的)封包。雖然抑制的輸出封包被顯示為在碼段中的最後指令(例如,指令8 MOV〔ECX〕)之後被立即地輸出,但輸出可能在任何時間(例如,在一組處理器週期數時或之後或在已執行一組指令數時或之後(例如,在執行8、16、32、64等個指令之後連續地產生輸出)發生。此外,在執行後續碼段之後,可能也輸出輸出封包,例如,在表格4中:輸出了用於(i)對應於MOV〔EDX〕指令的虛擬位址(VA)2000和暫存器旗標及(ii)對應於MOV〔ECX〕指令的VA:3000暫存器旗標之後續輸出封包。可能在後續輸出封包的輸出之前或之後輸出暫存器暗示封包。在上述實施例中,暫存器暗示封包可能在包括暫存器之值及/或新的(例如,尚未輸出的)暫存器之使用中的改變之間隔被輸出。這可能包括用於複數個執行指令之上述暫存器暗示封包和虛擬位址(例如,這裡是2000和3000)之輸出封包的輸出(其可能是1位元組或多個位元組),因為這在此碼段中係第一次存取位址暫存器EDX和ECX。暫存器旗標(例如,如上所論述)可能也被設定以指示暫存器係由此指令所存取,例如,在下面的表格4中所示。
在一實施例中,一種處理器包括一硬體執行單元,用以執行指令、一硬體引退單元,用以引退執行之指令、及一軌跡產生器,具有一軌跡抑制器,用以輸出執行之指令之抑制的位址軌跡。在另一實施例中,一種處理器包括核心和軌跡產生器,具有一軌跡抑制器,用以輸出執行之指令之抑制的位址軌跡。可能在引退要被軌跡的執行之指令之前或之後輸出(例如,抑制的)位址軌跡。第一執行指令可能存取一位址暫存器且抑制的位址軌跡包括儲存在被輸出用於第一執行指令之位址暫存器中的位址。第二執行指令可能存取相同的位址暫存器,儲存在位址暫 存器中的位址相對於第一指令係不變的,且抑制的位址軌跡不包括任何用於第二執行指令的輸出或抑制的輸出。在一實施例中,在由第二指令所存取之暫存器中的值相對於先前在由第一指令所存取之此相同暫存器中的值係不變的。這裡的存取可能包括從暫存器或記憶體位址讀取值。在一實施例中,例如,其中第一執行指令存取一位址暫存器,抑制的位址軌跡可能包括儲存在暫存器中的位址或被存取之位址。在後者情況中,解碼器(例如,硬體及/或軟體)可能判定在暫存器中的值。例如,若〔ECX+018h〕被指令存取且ECX持有0x11000,則抑制的位址軌跡可能包括具有0x11018之值的封包輸出。在上述一實施例中,解碼器可能使用先前的軌跡資訊和分解的二進制碼來判定暫存器值。
第二執行指令可能存取參考位址暫存器的相對位址,儲存在位址暫存器中的位址相對於第一指令係不變的,且抑制的位址軌跡包括被輸出用於第二執行指令的暫存器暗示封包。第二指令能在第一指令之後執行,或指令可能亂序地執行。暫存器暗示封包可能包括儲存在位址暫存器中的位址。
第一執行指令可能存取參考位址暫存器的相對位址,且抑制的位址軌跡包括被輸出用於第一執行指令的暫存器暗示封包。暫存器暗示封包可能包括儲存在位址暫存器中的位址。處理器可能包括軌跡抑制器,其為存取一絕對記憶體位址的任何執行指令選擇性地不輸出資料或 僅輸出在抑制的位址軌跡中的壓縮資料。處理器的引退單元可能包括重排序緩衝器。
記憶體位址可能是主記憶體或快取記憶體。記憶體可能是絕對的。記憶體可能包括具有位址的任何機器可讀儲存媒體,且可能包括,但不限於機器或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
在一實施例中,一種用以產生用於處理器之抑制的位址軌跡的方法包括以處理器的硬體執行單元來執行指令,以處理器的硬體引退單元來引退執行指令,及從處理器之軌跡產生器的軌跡抑制器產生執行指令之抑制的位址軌跡。在另一實施例中,一種用以產生用於處理器之抑制的位址軌跡的方法包括在處理器的核心中處理指令,及從處理器之軌跡產生器的軌跡抑制器產生執行指令之抑制的位址軌跡。可能在引退要被軌跡的執行指令之前或之後輸出(例如,抑制的)位址軌跡。方法可能包括:其中 第一執行指令存取位址暫存器,產生抑制的位址軌跡包含為第一執行指令輸出儲存在位址暫存器中的位址。方法可能包括,其中第二執行指令存取位址暫存器,且儲存在位址暫存器中的位址相對於第一指令係不變的,藉由不輸出任何用於第二執行指令的資料(例如,沒有任何輸出)來產生抑制的位址軌跡。方法可能包括在第二執行指令之前或之後執行第一指令。方法可能包括,其中第二執行指令存取參考位址暫存器的相對位址,且儲存在位址暫存器中的位址相對於第一指令係不變的,產生抑制的位址軌跡包含輸出用於第二執行指令的暫存器暗示封包。可能在抑制的位址軌跡中輸出包括(例如,僅包括)儲存在位址暫存器中之位址的暫存器暗示封包。方法可能包括,其中第一執行指令存取參考位址暫存器的相對位址,藉由輸出用於第一執行指令的暫存器暗示封包來產生抑制的位址軌跡。暫存器暗示封包可能包括(例如,僅包括)儲存在位址暫存器中的位址。方法可能包括,其中至少一個執行指令存取絕對記憶體位址,藉由不輸出任何用於至少一個執行指令的資料(例如,沒有任何輸出)來產生抑制的位址軌跡。產生抑制的位址軌跡可能包括沒有任何軌跡被輸出用於一執行指令,例如如上所述,或減少之軌跡被輸出用於一執行指令,如僅輸出具有抑制的位址的暫存器暗示封包,例如如上所述。
在一實施例中,一種機器可讀儲存媒體包括碼,當這些碼被執行時會使一機器進行上述方法之任何單 一者或組合。
在另一實施例中,一種非暫態機器可讀儲存媒體具有指令,當這些指令被執行時會使機器進行方法,其包括從一處理器之軌跡產生器的軌跡抑制器產生執行指令之抑制的位址軌跡。非暫態機器可讀儲存媒體,其中第一執行指令存取一位址暫存器,其中產生抑制的位址軌跡包括為第一執行指令輸出儲存在位址暫存器中的位址。非暫態機器可讀儲存媒體,其中第二執行指令存取位址暫存器,且儲存在位址暫存器中的位址相對於第一指令係不變的,其中產生抑制的位址軌跡包括不輸出(例如,不產生)任何用於第二執行指令的輸出或抑制的輸出。如申請專利範圍第23項所述之非暫態機器可讀儲存媒體,其中第二執行指令存取參考位址暫存器的相對位址,儲存在位址暫存器中的位址相對於第一指令係不變的,且產生抑制的位址軌跡包含輸出用於第二執行指令的暫存器暗示封包。非暫態機器可讀儲存媒體,其中暫存器暗示封包包括儲存在位址暫存器中的位址。非暫態機器可讀儲存媒體,其中第一執行指令存取參考一位址暫存器的相對位址,其中產生抑制的位址軌跡包括輸出用於第一執行指令的暫存器暗示封包。非暫態機器可讀儲存媒體,其中暫存器暗示封包包含儲存在位址暫存器中的位址。非暫態機器可讀儲存媒體,其中至少一個執行指令存取一絕對記憶體位址,且產生抑制的位址軌跡不包括任何用於至少一個執行指令的輸出或抑制的輸出。
在一實施例中,一種處理器包括用以執行指令之工具、用以引退執行指令之工具、及用以產生執行指令之抑制的位址軌跡之工具。在另一實施例中,一種處理器包括用以執行指令之工具及用以產生執行指令之抑制的位址軌跡之工具。用以產生抑制的位址軌跡之工具可能包括用以選擇性地輸出儲存在由執行指令所存取之位址暫存器中的位址。用以產生抑制的位址軌跡之工具可能包括用以不為儲存在由執行指令所存取之位址暫存器中的位址輸出資料之工具。用以產生抑制的位址軌跡之工具可能包括用以選擇性地輸出由執行指令所存取的絕對記憶體位址之工具。用以產生抑制的位址軌跡之工具可能包括用以不為由執行指令所存取的絕對記憶體位址輸出資料之工具。用以產生抑制的位址軌跡之工具可能包括用以輸出用於存取參考位址暫存器的相對位址之執行指令的暫存器暗示封包之工具。用以產生抑制的位址軌跡之工具包含用以不為存取參考位址暫存器之相對位址的執行指令輸出資料之工具。
第6圖顯示使用軌跡產生器125之示範架構的方塊圖。所示之引退單元601引退執行指令且將關於引退之指令的資訊發送至軌跡產生器125。尤其是,引退之指令的資訊被發送至軌跡產生器125的軌跡封包產生器603,其產生(例如,位址)軌跡和軌跡產生器125的軌跡封包抑制器605以抑制軌跡封包且將執行指令的抑制的(例如,位址)軌跡輸出至記憶體607中。
示範暫存器架構
第7圖係根據本發明之一實施例之暫存器架構700的方塊圖。在所示之實施例中,有32個512位元寬的向量暫存器710;這些暫存器被引用為zmm0至zmm31。最低16zmm暫存器的低序256位元係覆蓋在暫存器ymm0-16上。最低16zmm暫存器的低序128位元(ymm暫存器的低序128位元)係覆蓋在暫存器xmm0-15上。
換言之,向量長度欄位在最大長度與一或更多其他較短長度之間作選擇,其中每個上述較短長度係前面長度的一半;且沒有向量長度欄位的指令模板在最大向量長度上運算。此外,在一實施例中,特定向量合適指令格式的類別B指令模板在填充或純量/雙精度浮點數資料和封包或純量整數資料上運算。純量運算係在zmm/ymm/xmm暫存器中之最低序資料元件位置上進行的運算;高序資料元件位置於左側係依據實施例與其在指令之前相同或被歸零。
寫入遮罩暫存器715-在所示之實施例中,有8個寫入遮罩暫存器(k0至k7),每個大小為64位元。在另一實施例中,寫入遮罩暫存器715的大小為16位元。如之前所述,在本發明之一實施例中,向量遮罩暫存器k0不能作為寫入遮罩;當通常指示出k0係用於寫入遮罩的編碼時,便選擇0xFFFF的固線式寫入遮罩,有效地 去能對此指令的寫入遮罩。
通用暫存器725-在所示之實施例中,有16個64位元的通用暫存器,其與現存之x86定址模式一起使用以定址記憶體運算元。這些暫存器所引用的名稱為RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量浮點堆疊暫存器檔案(x87堆疊)745,於其上堆疊MMX填充整數平暫存器檔案750-在所示之實施例中,x87堆疊係為8元素堆疊,用來使用x87指令集擴充對32/64/80位元浮點數資料執行純量浮點數運算;而MMX暫存器係用來對64位元填充整數資料進行運算,以及對在MMX與XMM暫存器之間進行的一些運算保持運算元。
本發明之其他實施例可能使用較寬或較窄的暫存器。此外,本發明之其他實施例可能使用更多、更少、或不同的暫存器檔案和暫存器。
示範核心架構、處理器、及電腦架構
可能以不同方式、針對不同目的、且在不同處理器中實作處理器核心。例如,上述核心之實作可能包括:1)預期用於通用計算的通用有序核心;2)預期用於通用計算的高效能通用亂序核心;3)預期主要用於圖形及/或科學(產量)計算的專用核心。不同處理器之實作可能包括:1)包括預期用於通用計算的一或更多通用有 序核心及/或預期用於通用計算的一或更多通用亂序核心之CPU;及2)包括預期主要用於圖形及/或科學(產量)的一或更多專用核心之協處理器。上述不同的處理器導致不同的電腦系統架構,其可能包括:1)在與CPU分離之晶片上的協處理器;2)在與CPU之相同封裝中之獨立晶粒上的協處理器;3)在與CPU相同之晶粒上的協處理器(在這種情況下,這類協處理器有時稱為專用邏輯,如整合圖形及/或科學(產量)邏輯、或專用核心);及4)系統晶片,其可能包括在相同晶粒上的所述之CPU(有時稱為應用核心或應用處理器)、上述協處理器、及額外功能。在示範處理器和電腦架構的描述之後,接下來說明示範核心架構。
示範核心架構 有序和亂序核心方塊圖
第8A圖係繪示根據本發明之實施例之示範有序管線與示範暫存器更名、亂序發出/執行管線兩者的方塊圖。第8B圖係繪示根據本發明之實施例之將包括在處理器中的有序架構核心之示範實施例與示範暫存器更名、亂序發出/執行架構核心兩者的方塊圖。第8A-B圖中的實線框繪示有序管線和有序核心,而非必要附加的虛線框繪示暫存器更名、亂序發出/執行管線和核心。假定有序態樣係亂序態樣之子集,將說明亂序態樣。
在第8A圖中,處理器管線800包括提取級 802、長度解碼級804、解碼級806、分配級808、更名級810、排程(也稱為調度或發出)級812、暫存器讀取/記憶體讀取級814、執行級816、寫回/記憶體寫入級818、例外處理級822、及提交級824。
第8B圖顯示處理器核心890,包括前端單元830,耦接至執行引擎單元850,且這兩者都耦接至記憶體單元870。核心890可能是精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或任一核心類型。作為另一種選擇,核心890可能是專用核心,例如,網路或通訊核心、壓縮引擎、協處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或之類。
前端單元830包括分支預測單元832,耦接至指令快取單元834,其係耦接至指令轉譯旁視緩衝器(TLB)836,其係耦接至指令提取單元838,其係耦接至解碼單元840。解碼單元840(或解碼器)可能解碼指令,並產生作為輸出的一或更多微運算、微碼進入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或以其他方式反映原始指令、或從原始指令取得。解碼單元840可能使用各種不同機制來實作。適當機制之實例包括,但不限於查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心890包括微碼ROM或儲存用於某些巨集指令之微碼的其他媒體(例如,在解碼單元840中或以其他方式 在前端單元830內)。解碼單元840係耦接至執行引擎單元850中的更名/分配器單元852。
執行引擎單元850包括更名/分配器單元852,耦接至引退單元854及一組一或更多排程器單元856。排程器單元856代表任何數量的不同排程器,包括保留站、中央指令視窗、等等。排程器單元856係耦接至實體暫存器檔案單元858。每個實體暫存器檔案單元858代表一或更多實體暫存器檔案,其之不同者儲存一或更多不同的資料類型,如純量整數、純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數、狀態(例如,指令指標,其係將被執行之下一個指令的位址)、等等。在一實施例中,實體暫存器檔案單元858包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可能提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。引退單元854重疊實體暫存器檔案單元858以繪示可能實作暫存器更名和亂序執行的各種方式(例如,使用重排序緩衝器和引退暫存器檔案;使用未來檔案、歷史緩衝器、和引退暫存器檔案;使用暫存器映射及暫存器池;等等)。引退單元854和實體暫存器檔案單元858係耦接至執行叢集860。執行叢集860包括一組一或更多執行單元862和一組一或更多記憶體存取單元864。執行單元862可能對各種類型的資料(例如,純量浮點數、填充整數、填充浮點數、向量整數、向量浮點數)進行各種運算(例如,移位、加法、減法、乘法)。儘管一些實施例 可能包括一些專用於特定功能或功能組的執行單元,但其他實施例可能包括只有一個執行單元或全部進行所有功能的多個執行單元。排程器單元856、實體暫存器檔案單元858、和執行叢集860被顯示為可能是複數的,因為某些實施例對某些類型的資料/運算建立獨立管線(例如,純量整數管線、純量浮點數/填充整數/填充浮點數/向量整數/向量浮點數管線、及/或各具有其自己之排程器單元的記憶體存取管線)、實體暫存器檔案單元、及/或執行叢集-且在獨立的記憶體存取管線之情況下,實作了某些實施例是只有此管線的執行叢集具有記憶體存取單元864。也應了解這裡使用了獨立管線,這些管線之一或更多者可能是亂序發出/執行且其餘的是有序的。
這組記憶體存取單元864係耦接至記憶體單元870,其包括耦接至資料快取單元874的資料TLB單元872,資料快取單元874耦接至第2級(L2)快取單元876。在一示範實施例中,記憶體存取單元864可能包括載入單元、儲存位址單元、及儲存資料單元,各耦接至記憶體單元870中的資料TLB單元872。指令快取單元834更耦接至記憶體單元870中的第2級(L2)快取單元876。L2快取單元876係耦接至一或更多其他級的快取且最終耦接至主記憶體。
舉例而言,示範暫存器更名、亂序發出/執行核心架構可能如下實作管線800:1)指令提取838進行提取和長度解碼級802和804;2)解碼單元840進行解 碼級806;3)更名/分配器單元852進行分配級808和更名級810;4)排程器單元856進行排程級812;5)實體暫存器檔案單元858和記憶體單元870進行暫存器讀取/記憶體讀取級814;執行叢集860進行執行級816;6)記憶體單元870和實體暫存器檔案單元858進行寫回/記憶體寫入級818;7)各種單元可能包含在例外處理級822中;及8)引退單元854和實體暫存器檔案單元858進行提交級824。
核心890可能支援包括本文所述之指令的一或更多指令集(例如,x86指令集(具有已加入較新版本的一些擴充);美國加州Sunnyvale的MIPS技術之MIPS指令集;美國加州Sunnyvale的ARM股份公司之ARM指令集(具有如NEON的可選額外的擴充))。在一實施例中,核心890包括支援填充資料指令集擴充(例如,AVX1、AVX2)的邏輯,藉此允許許多多媒體應用所使用之運算能使用填充資料來執行。
應了解核心可能支援多執行緒(執行兩個或更多平行組的操作或執行緒),且可能以各種方式來實行,包括時間切割多執行緒、同步多執行緒(其中單一實體核心提供邏輯核心給實體核心係同步多執行緒的每個執行緒)、或以上之組合(例如,時間切割提取和解碼及之後如Intel®超執行緒技術的同步多執行緒)。
儘管在亂序執行之內文中說明了暫存器更名,但應了解可能在有序架構中使用暫存器更名。儘管處 理器之所示實施例也包括分開的指令和資料快取單元834/874及共享L2快取單元876,但其他實施例可能具有用於指令和資料兩者的單一內部快取,例如,第1級(L1)內部快取、或多級的內部快取。在一些實施例中,系統可能包括內部快取與在核心及/或處理器外部的外部快取之組合。另外,所有快取可能在核心及/或處理器外部。
具體示範有序核心架構
第9A-B圖繪示更具體之示範有序核心架構的方塊圖,其核心會是在晶片中的數個邏輯方塊之其一者(包括相同類型及/或不同類型的其他核心)。邏輯方塊依據應用透過高頻寬互連網路(例如,環形網路)來與一些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
第9A圖係根據本發明之實施例之單一處理器核心,與其連結至晶粒上互連網路902的連線及其第2級(L2)快取的區域子集904之方塊圖。在一實施例中,指令解碼器900支援具有填充資料指令級擴充的x86指令集。L1快取906允許將快取記憶體低延遲地存取至純量和向量單元中。儘管在一實施例中(為了簡化設計),純量單元908和向量單元910使用單獨的暫存器組(分別是純量暫存器912和向量暫存器914),且傳輸於其間的資料被寫入至記憶體而接著從第1級(L1)快取906讀回, 但本發明之其他實施例可能使用不同的方法(例如,使用單一暫存器組或包括允許資料在沒被寫入和讀回的情況下傳輸於這兩個暫存器檔案之間的通訊路徑)。
L2快取的區域子集904係為部分的全域L2快取,其被分成單獨的區域子集,每個處理器核心一個。每個處理器核心具有直接存取路徑連接至自己的L2快取之區域子集904。處理器核心所讀取的資料係儲存在其L2快取子集904中並能與存取其自己區域L2快取子集之其他處理器核心並行地被快速存取。處理器核心所寫入的資料係儲存在自己的L2快取子集904中,且若有需要的話,會從其他子集中清除。環形網路確保共享資料的一致性。環形網路係雙向的以使得如處理器核心、L2快取和其他邏輯方塊的代理器能在晶片內彼此通訊。每個環形資料路徑在每個方向上係為912位元寬。
第9B圖係根據本發明之實施例之第9A圖中的處理器核心之部分之分解圖。第9B圖包括L1快取904之L1資料快取906A部分,及更多關於向量單元910和向量暫存器914的細節。具體來說,向量單元910係為16寬的向量處理單元(VPU)(參見16寬的ALU 928),其執行整數、單精度浮點數、及雙精度浮點數指令之一或更多者。VPU以攪和單元920來支援攪和暫存器輸入、利用數字轉換單元922A-B來支援數字轉換、及利用複製單元924來支援複製記憶體輸入。寫入遮罩暫存器926允許預測產生之向量寫入。
軌跡產生器可能包括在處理器及/或核心(例如,第10-13圖中的處理器及/或核心)中。
具有整合記憶體控制器和圖形的處理器
第10圖係根據本發明之實施例之可能具有超過一個核心,可能具有整合記憶體控制器,且可能具有整合圖形之處理器1000的方塊圖。第10圖中的實線框繪示具有單一核心1002A、系統代理器1010,一組一或更多匯流排控制器單元1016的處理器1000,而非必要添加的虛線框繪示具有多個核心1002A-N、在系統代理器單元1010中的一組一或更多整合記憶體控制器單元1014、及專用邏輯1008的另一處理器1000。
因此,處理器1000之不同實作可能包括:1)具有為整合圖形及/或科學(產量)邏輯(其可能包括一或更多核心)之專用邏輯1008、及為一或更多通用核心(例如,通用有序核心、通用亂序核心、這兩者之組合)之核心1002A-N的CPU;2)具有為預期主要用於圖形及/或科學(產量)之大量專用核心之核心1002A-N的協處理器;及3)具有為大量通用有序核心之核心1002A-N的協處理器。於是,處理器1000可能是通用處理器、協處理器或專用處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高產量多重整合核心(MIC)協處理器(包括30個或更多核心)、嵌入式處理器或之類。處理器可能在一或更多晶片 上實作。處理器1000可能是一或多個基板的一部分及/或可使用如BiCMOS、CMOS、或NMOS的一些處理技術之任一者來實作在一或多個基板上。
記憶體階層包括核心內之一或多級的快取、一組或一或更多共享快取單元1006、及耦接至這組整合記憶體控制器單元1014的外部記憶體(未示出)。這組共享快取單元1006可能包括如第2級(L2)、第3級(L3)、第4級(L4)、或其他級之快取的一或多個中級快取(LLC)、最後一級的快取(LLC)、及/或以上之組合。儘管在一實施例中,環形為基的互連單元1012互連整合圖形邏輯1008、這組共享快取單元1006、及系統代理器單元1010/整合記憶體控制器單元1014,但其他實施例可能使用一些熟知的技術來互連上述單元。在一實施例中,在一或更多快取單元1006與核心1002A-N之間保持一致性。
在一些實施例中,一或更多核心1002A-N能夠執行多執行緒。系統代理器1010包括那些協調和操作核心1002A-N的元件。例如,系統代理器單元1010可能包括電力控制單元(PCU)及顯示單元。PCU可能是或包括調節核心1002A-N及整合圖形邏輯1008之電力狀態所需的邏輯和元件。顯示單元係用於驅動一或更多外部連接的顯示器。
就架構指令集而言,核心1002A-N可能是同型或不同型的;亦即,核心1002A-N之兩個或更多者也 許能夠執行相同的指令集,而其他者也許僅能夠執行指令集的子集或不同的指令集。
示範電腦架構
現在參考第11圖,所顯示的係依照本發明之實施例之第一更具體示範系統1100的方塊圖。如第11圖所示,多處理器系統1100是點對點互連系統,且包括經由點對點互連1150耦接的第一處理器1170和第二處理器1180。處理器1170和1180之各者可能是一些型式的處理器1000。在本發明之一實施例中,處理器1170和1180分別是處理器110和115,而協處理器1138是協處理器145。在另一實施例中,處理器1170和1180分別是處理器110和協處理器145。
顯示處理器1170和1180分別包括整合記憶體控制器(IMC)單元1172和1182。如上所提及,處理器可能包括軌跡產生器。處理器1170也包括作為其匯流排控制器單元點對點(P-P)介面1176和1178的部分;同樣地,第二處理器1180包括P-P介面1186和1188。處理器1170、1180可能使用P-P介面電路1178、1188經由點對點(P-P)介面1150來交換資訊。如第11圖所示,IMC 1172和1182將處理器耦接至各別記憶體(即記憶體1132和記憶體1134),其可能是區域附接於各別處理器之主記憶體的部分。
處理器1170、1180可能各使用點對點介面電 路1176、1194、1186、1198經由個別P-P介面1152、1154來與晶片組1190交換資訊。晶片組1190可能可選地經由高效能介面1139來與協處理器1138交換資訊。在一實施例中,協處理器1138係專用處理器,例如,高產量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或之類。
共享快取(未示出)可能包括在任一處理器中或兩處理器之外,還經由P-P互連與處理器連接,使得若將處理器置於低功率模式中,則任一或兩處理器的區域快取資訊可儲存於共享快取中。
晶片組1190可能經由介面1196來耦接至第一匯流排1116。在一實施例中,第一匯流排1116可能是周邊元件互連(PCI)匯流排、或如PCI快捷匯流排或另一第三代I/O互連匯流排的匯流排,雖然本發明之範圍並不以此為限。
如第11圖所示,各種I/O裝置1114可能與匯流排橋接器1118一起耦接至第一匯流排1116,其中匯流排橋接器1118將第一匯流排1116耦接至第二匯流排1120。在一實施例中,一或更多額外的處理器1115(如協處理器、高產量MIC處理器、GPGPU的加速器(例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其他處理器)係耦接至第一匯流排1116。在一實施例中,第二匯流排1120可能是低接腳數(LPC)匯流排。在一實施例中,各種裝置可能耦接至第 二匯流排1120,包括例如鍵盤及/或滑鼠1122、通訊裝置1127及如磁碟機或可能包括指令/碼和資料1130之其他大容量儲存裝置的儲存單元1128。此外,音頻I/O 1124可能耦接至第二匯流排1120。請注意其他架構係可能的。例如,系統可能實作多點匯流排或其他這類架構,來取代第11圖之點對點架構。
現在參考第12圖,所顯示的係依照本發明之實施例之第二更具體示範系統1200的方塊圖。第11和12圖中的相同元件具有類似參考數字,且已從第12圖省略第11圖之某些態樣以避免模糊第12圖之其他態樣。
第12圖繪示處理器1170、1180可能分別包括整合記憶體和I/O控制邏輯(「CL」)1172和1182。因此,CL 1172、1182包括整合記憶體控制器單元且包括I/O控制邏輯。第12圖不只繪示記憶體1132、1134耦接至CL 1172、1182,而且還繪示I/O裝置1214也耦接至控制邏輯1172、1182。傳統I/O裝置1215係耦接至晶片組1190。
現在參考第13圖,所顯示的係依照本發明之實施例之系統晶片(SoC)1400的方塊圖。第10圖中的相似元件具有相同參考數字。而且,虛線框在更進階的SoC上是非必要的特徵。在第13圖中,互連單元1302係耦接至:包括一組一或更多核心202A-N及共享快取單元1006的應用處理器1310;系統代理器單元1010;匯流排控制器單元1016;整合記憶體控制器單元1014;可能包 括整合圖形邏輯、影像處理器、音頻處理器、和視頻處理器的一組或一或更多協處理器1320;靜態隨機存取記憶體(SRAM)單元1330;直接記憶體存取(DMA)單元1332、及用於耦接至一或更多外部顯示器的顯示單元1340。在一實施例中,協處理器1320包括專用處理器,例如,網路或通訊處理器、壓縮引擎、GPGPU、高產量MIC處理器、嵌入式處理器或之類。
本文所揭露之機制的實施例可能在硬體、軟體、韌體、或上述實作方法之組合中實作。本發明之實施例可實作成執行在包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置的可程式系統上的電腦程式或程式碼。
可施用程式碼(如第11圖所示之碼1130)來輸入指令以進行本文所述之功能並產生輸出資訊。可能以已知的方式來對一或更多輸出裝置施用輸出資訊。為了此應用之目的,處理系統包括任何具有處理器(例如,數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器)之系統。
程式碼可能以高階程序或物件導向編程語言來實作以與處理系統通訊。若需要的話,程式碼也可能以組合或機器語言來實作。事實上,本文所述之機制在範圍上並不受限於任何特定編程語言。在任何情況下,語言可能是經編譯或轉譯語言。
至少一實施例之一或更多態樣可能藉由儲存在機器可讀媒體上的代表指令來實作,其表現在處理器內的各種邏輯,當指令被機器讀取時會使機器製造邏輯來進行本文所述之技術。這樣的表現,稱為「IP核心」,可能儲存在有形的機器可讀媒體上並供應給各種顧客或製造廠來下載至實際產生邏輯的製造機器或處理器中。
這類機器可讀媒體可能包括,但不限於機器或裝置製造或形成之物件的非暫態有形佈置,包括如硬碟、任何型態之磁碟(包括軟碟、光碟、唯讀光碟機(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟機)、如唯讀記憶體(ROM)的半導體裝置、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適用於儲存電子指令之任何其他型態之媒體的儲存媒體。
因此,本發明之實施例也包括非暫態、有形的機器可讀媒體,其包含指令或包含設計資料,如硬體描述語言(HDL),其定義本文所述之結構、電路、設備、處理器及/或系統特徵。上述實施例也可能係指程式產品。
模擬(包括二進制轉譯、碼模仿、等等)
在一些情況中,可能使用指令轉換器來將指令從來源指令集轉換成目標指令集。例如,指令轉換器可能轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、模仿、模擬、或以其他方式將指令轉換成一或更多將由核心處理的其他指令。指令轉換器可能在軟體、硬體、韌體、或以上之組合中實作。指令轉換器可能在處理器上、在處理器之外、或部分在處理器上且部分在處理器外。
100‧‧‧系統
110‧‧‧處理器
110A‧‧‧核心
115‧‧‧處理器
120‧‧‧控制器中心
125‧‧‧軌跡產生器
140‧‧‧記憶體
140A‧‧‧軌跡產生器常式
145‧‧‧協處理器
150‧‧‧輸入/輸出中心
160‧‧‧輸入/輸出裝置
190‧‧‧圖形記憶體控制器中心
195‧‧‧連線

Claims (25)

  1. 一種處理器,包含:一解碼器,其用以解碼指令;一執行單元,其用以執行解碼的該些指令;及具有一軌跡抑制器之軌跡產生器,其用以輸出執行的該些指令之一抑制的位址軌跡。
  2. 如申請專利範圍第1項所述之處理器,其中一第一執行指令存取一位址暫存器且該抑制的位址軌跡包含儲存在被輸出用於該第一執行指令之該位址暫存器中的一位址。
  3. 如申請專利範圍第2項所述之處理器,其中一第二執行指令存取該位址暫存器,儲存在該位址暫存器中的該位址相對於該第一指令係不變的,且該抑制的位址軌跡不包含用於該第二執行指令的輸出。
  4. 如申請專利範圍第2項所述之處理器,其中一第二執行指令存取參考該位址暫存器的一相對位址,儲存在該位址暫存器中的該位址相對於該第一指令係不變的,且該抑制的位址軌跡包含被輸出用於該第二執行指令的一暫存器暗示封包。
  5. 如申請專利範圍第4項所述之處理器,其中該暫存器暗示封包包含儲存在該位址暫存器中的該位址。
  6. 如申請專利範圍第1項所述之處理器,其中一第一執行指令存取參考一位址暫存器的一相對位址,且該抑制的位址軌跡包含被輸出用於該第一執行指令的一暫存器 暗示封包。
  7. 如申請專利範圍第6項所述之處理器,其中該暫存器暗示封包包含儲存在該位址暫存器中的一位址。
  8. 如申請專利範圍第1項所述之處理器,其中至少一執行指令存取一絕對記憶體位址,且該抑制的位址軌跡不包含用於該至少一執行指令的輸出。
  9. 如申請專利範圍第1項所述之處理器,更包含具有一重排序緩衝器的一引退單元。
  10. 一種用以產生用於一處理器之一抑制的位址軌跡的方法,包含:以解碼器解碼指令;以執行單元執行解碼的該些指令;及從該處理器之一軌跡產生器的一軌跡抑制器產生該些執行指令之該抑制的位址軌跡。
  11. 如申請專利範圍第10項所述之方法,其中一第一執行指令存取一位址暫存器,且產生該抑制的位址軌跡包含用於該第一執行指令輸出儲存在該位址暫存器中的一位址。
  12. 如申請專利範圍第11項所述之方法,其中一第二執行指令存取該位址暫存器,儲存在該位址暫存器中的該位址相對於該第一指令係不變的,且產生該抑制的位址軌跡不包含用於該第二執行指令的輸出。
  13. 如申請專利範圍第12項所述之方法,其中在該第二執行指令之前執行該第一執行指令。
  14. 如申請專利範圍第11項所述之方法,其中一第二執行指令存取參考該位址暫存器的一相對位址,儲存在該位址暫存器中的該位址相對於該第一指令係不變的,且產生該抑制的位址軌跡包含輸出用於該第二執行指令的一暫存器暗示封包。
  15. 如申請專利範圍第14項所述之方法,其中在該第二執行指令之前執行該第一執行指令。
  16. 如申請專利範圍第14項所述之方法,其中該暫存器暗示封包包含儲存在該位址暫存器中的該位址。
  17. 如申請專利範圍第10項所述之方法,其中一第一執行指令存取參考一位址暫存器的一相對位址,且產生該抑制的位址軌跡包含輸出用於該第一執行指令的一暫存器暗示封包。
  18. 如申請專利範圍第17項所述之方法,其中該暫存器暗示封包包含儲存在該位址暫存器中的一位址。
  19. 如申請專利範圍第10項所述之方法,其中至少一執行指令存取一絕對記憶體位址,且產生該抑制的位址軌跡不包含用於該至少一執行指令的輸出。
  20. 一種具有指令的非暫態機器可讀儲存媒體,當該些指令被執行時會使一機器執行一方法,包含:以解碼器解碼指令;以執行單元執行解碼的該些指令;及從該機器之一軌跡產生器的一軌跡抑制器產生該些執行指令之抑制的位址軌跡。
  21. 如申請專利範圍第20項所述之非暫態機器可讀儲存媒體,其中一第一執行指令存取一位址暫存器,且產生該抑制的位址軌跡包含用於該第一執行指令輸出儲存在該位址暫存器中的一位址。
  22. 如申請專利範圍第21項所述之非暫態機器可讀儲存媒體,其中一第二執行指令存取該位址暫存器,該位址儲存在相對於該第一執行指令執行的位址中,且產生該抑制的位址軌跡不包含用於該第二執行指令的輸出。
  23. 如申請專利範圍第21項所述之非暫態機器可讀儲存媒體,其中一第二執行指令存取參考該位址暫存器的一相對位址,儲存在該位址暫存器中的該位址相對於該第一指令係不變的,且產生該抑制的位址軌跡包含輸出用於該第二執行指令的一暫存器暗示封包。
  24. 如申請專利範圍第20項所述之非暫態機器可讀儲存媒體,其中一第一執行指令存取參考一位址暫存器的一相對位址,且產生該抑制的位址軌跡包含輸出用於該第一執行指令的一暫存器暗示封包。
  25. 如申請專利範圍第20項所述之非暫態機器可讀儲存媒體,其中至少一執行指令存取一絕對記憶體位址,且產生該抑制的位址軌跡不包含用於該至少一執行指令的輸出。
TW105116645A 2014-07-09 2015-06-03 用於產生抑制的位址軌跡之設備和方法 TWI582693B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/327,375 US9524227B2 (en) 2014-07-09 2014-07-09 Apparatuses and methods for generating a suppressed address trace

Publications (2)

Publication Number Publication Date
TW201642124A TW201642124A (zh) 2016-12-01
TWI582693B true TWI582693B (zh) 2017-05-11

Family

ID=55067627

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105116645A TWI582693B (zh) 2014-07-09 2015-06-03 用於產生抑制的位址軌跡之設備和方法
TW104117958A TWI544412B (zh) 2014-07-09 2015-06-03 用於產生抑制的位址軌跡之設備和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW104117958A TWI544412B (zh) 2014-07-09 2015-06-03 用於產生抑制的位址軌跡之設備和方法

Country Status (4)

Country Link
US (2) US9524227B2 (zh)
KR (2) KR101680065B1 (zh)
CN (1) CN105278916B (zh)
TW (2) TWI582693B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102538258B1 (ko) * 2016-07-25 2023-05-31 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
US10162603B2 (en) * 2016-09-10 2018-12-25 Sap Se Loading data for iterative evaluation through SIMD registers
US11341023B2 (en) * 2019-03-05 2022-05-24 Alibaba Group Holding Limited Apparatus, method, and non-transitory computer-readable medium for analyzing trace information
CN112965724B (zh) * 2021-03-22 2024-06-07 中国信息安全测评中心 一种固件的装载基址范围的确定方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200307867A (en) * 2002-05-29 2003-12-16 Sun Microsystems Inc Method and system for compression of address tags in memory structures
US20040030962A1 (en) * 2002-06-07 2004-02-12 Arm Limited Generation of trace elements within a data processing apparatus
US20090044059A1 (en) * 2007-08-06 2009-02-12 Renesas Technology Corp. Semiconductor integrated circuit and debugging system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US7155570B1 (en) * 2000-09-29 2006-12-26 Intel Corporation FIFO write/LIFO read trace buffer with software and hardware loop compression
US7111148B1 (en) * 2002-06-27 2006-09-19 Intel Corporation Method and apparatus for compressing relative addresses
US7010665B1 (en) * 2002-06-27 2006-03-07 Intel Corporation Method and apparatus for decompressing relative addresses
US7702964B2 (en) * 2004-05-11 2010-04-20 Qualcomm Incorporated Compression of data traces for an integrated circuit with multiple memories
JP2006012064A (ja) * 2004-06-29 2006-01-12 Toshiba Corp トレース装置
JP4533682B2 (ja) * 2004-06-29 2010-09-01 株式会社東芝 トレース解析装置およびトレース解析方法
US20060294343A1 (en) * 2005-06-27 2006-12-28 Broadcom Corporation Realtime compression of microprocessor execution history
GB2453174B (en) * 2007-09-28 2011-12-07 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
US7793001B2 (en) * 2008-05-09 2010-09-07 Microsoft Corporation Packet compression for network packet traffic analysis
GB2483509B (en) * 2010-09-13 2017-08-02 Advanced Risc Mach Ltd Data processing apparatus, trace unit and diagnostic apparatus
KR101738640B1 (ko) 2011-01-18 2017-05-24 삼성전자주식회사 트레이스 데이터 압축 장치 및 방법
US9575816B2 (en) * 2012-03-29 2017-02-21 Via Technologies, Inc. Deadlock/livelock resolution using service processor
US9317297B2 (en) * 2012-09-27 2016-04-19 Intel Corporation Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
US9626279B2 (en) * 2013-07-01 2017-04-18 Nxp Usa, Inc. Debug method and device for providing indexed trace messages

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200307867A (en) * 2002-05-29 2003-12-16 Sun Microsystems Inc Method and system for compression of address tags in memory structures
US20040030962A1 (en) * 2002-06-07 2004-02-12 Arm Limited Generation of trace elements within a data processing apparatus
US7197671B2 (en) * 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
US20090044059A1 (en) * 2007-08-06 2009-02-12 Renesas Technology Corp. Semiconductor integrated circuit and debugging system

Also Published As

Publication number Publication date
US9524227B2 (en) 2016-12-20
KR101680065B1 (ko) 2016-11-29
KR20160136263A (ko) 2016-11-29
TWI544412B (zh) 2016-08-01
US20170102947A1 (en) 2017-04-13
US10346167B2 (en) 2019-07-09
KR20160006590A (ko) 2016-01-19
TW201614483A (en) 2016-04-16
KR101769719B1 (ko) 2017-08-18
TW201642124A (zh) 2016-12-01
CN105278916A (zh) 2016-01-27
CN105278916B (zh) 2019-03-12
US20160011872A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
TWI512616B (zh) 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品
TWI567751B (zh) 多暫存器記憶體存取指令、處理器、方法及系統
TWI630548B (zh) 緊縮旋轉處理器、方法、系統與指令
KR101851439B1 (ko) 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들
TWI511040B (zh) 緊縮資料操作遮罩位移處理器、方法、系統、及指令
TWI489384B (zh) 執行置換運算的處理器與方法及具有該處理器的電腦系統
TWI641993B (zh) 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二)
TWI575451B (zh) 用於遮罩及向量暫存器之間的可變擴充的方法及裝置
TW201640331A (zh) 用於向量索引載入和儲存之方法和設備
TW201344562A (zh) 緊縮資料運算遮罩比較處理器、方法、系統及指令
TWI582693B (zh) 用於產生抑制的位址軌跡之設備和方法
TWI603261B (zh) 用以執行離心操作的指令及邏輯
JP2017534982A (ja) 4d座標から4dのz曲線インデックスを計算するための機械レベル命令
JP2018500629A (ja) 3d座標から3dのz曲線インデックスを計算するための機械レベル命令
TWI628595B (zh) 用以執行反離心操作之處理設備和非暫態機器可讀取媒體
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
JP5753603B2 (ja) データ要素内のビットをゼロ化するためのシステム、装置、および方法