TWI528291B - 用於在移動消除操作中旗標追蹤之系統與方法 - Google Patents
用於在移動消除操作中旗標追蹤之系統與方法 Download PDFInfo
- Publication number
- TWI528291B TWI528291B TW103112305A TW103112305A TWI528291B TW I528291 B TWI528291 B TW I528291B TW 103112305 A TW103112305 A TW 103112305A TW 103112305 A TW103112305 A TW 103112305A TW I528291 B TWI528291 B TW I528291B
- Authority
- TW
- Taiwan
- Prior art keywords
- data structure
- register
- data
- flag
- bit
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 42
- 230000008030 elimination Effects 0.000 title claims description 24
- 238000003379 elimination reaction Methods 0.000 title claims description 24
- 230000033001 locomotion Effects 0.000 claims description 90
- 230000015654 memory Effects 0.000 claims description 86
- 238000003860 storage Methods 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 25
- 239000000872 buffer Substances 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 10
- 239000000463 material Substances 0.000 claims description 7
- 238000012795 verification Methods 0.000 claims description 5
- 238000007667 floating Methods 0.000 description 37
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000003455 independent Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30098—Register arrangements
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Storage Device Security (AREA)
Description
本揭露內容揭一般係有關於電腦系統,並且係明確地有關於改善藉由電腦系統執行資料調處操作之效能。
資料調處操作表示由一處理器所實行之操作的一有效部分。因此,最佳化其等之執行可增加該處理器的整體性能。
依據本發明之一實施例,係特地提出一種處理系統,其包含:一第一資料結構,其包括複數個實體暫存器值;一第二資料結構,其包括參照該第一資料結構之元素的複數個指標;一第三資料結構,其包括複數個移動消除集合,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元,該第三資料結構更包含與每一移動消除集合相關聯的至少一個位元,該至少一個位元表示一或多個邏輯旗標暫存器;一第四資料結構,其包括與一
旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符;以及一移動移除邏輯,其被組態以藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作,該移動消除邏輯更被組態以使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構之元素的可用性。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧內部快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形加速器
114‧‧‧加速圖形埠互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體介面
120‧‧‧記憶體
122‧‧‧系統I/O
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
136‧‧‧音頻控制器
138‧‧‧串列擴充埠
140‧‧‧I/O控制器
150‧‧‧PRF追蹤邏輯
200‧‧‧處理器
201‧‧‧循序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧低速/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧暫存器檔案
210‧‧‧暫存器檔案
211‧‧‧執行方塊
212‧‧‧位址產生執行單元
214‧‧‧AGU執行單元
216‧‧‧快速AGU執行單元
218‧‧‧快速ALU執行單元
220‧‧‧低速ALU執行單元
222‧‧‧浮點ALU執行單元
224‧‧‧浮點移動執行單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧uop佇列
400‧‧‧處理器管線
402‧‧‧提取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧分配階段
410‧‧‧重取名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧回寫/記憶體寫入階段
421‧‧‧暫存器別名表
422‧‧‧異常處置階段
423‧‧‧實體暫存器檔案
424‧‧‧提交階段
425‧‧‧移動消除表
427‧‧‧旗標追蹤器
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉譯後備緩衝區
438‧‧‧指令提取單元
440‧‧‧解碼單元
446‧‧‧排程單元
450‧‧‧執行引擎單元
452‧‧‧重取名/分配器單元
454‧‧‧汰除單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧2階快取單元
490‧‧‧處理器核心
800‧‧‧方法
810~860‧‧‧方塊
700‧‧‧多處理器系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤/滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧資料
732、734‧‧‧記憶體
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
752、754‧‧‧點對點介面
770‧‧‧第一處理器
772‧‧‧整合記憶體控制器單元
776、778‧‧‧點對點介面
780‧‧‧第二處理器
782‧‧‧整合記憶體控制器單元
786、788‧‧‧點對點介面
790‧‧‧晶片組
794、798‧‧‧點對點介面電路
796‧‧‧介面
本揭露內容係以範例的方式而非以限制的方式來例示說明,並且當結合該等圖式一起考慮時,參照下述詳細說明可更完整地理解本揭露內容,其中:圖1描述依照本揭露內容的一或多個方面的一範例電腦系統的高階組件圖;圖2描述依照本揭露內容的一或多個方面的一處理器的方塊圖;圖3a-3b概要地例示說明依照本揭露內容的一或多個方面的一處理器微型架構的元件;圖4概要地例示說明依照本揭露內容的一或多個方面之圖1的該範例電腦系統100的數個方面的一範例處理器及其他組件;圖5概要地例示說明依照本揭露內容的一或多個方面之藉由暫存器別名化(aliasing)執行移動操作的一範例;圖6a-6b概要地例示說明依照本揭露內容的一或多個方面的一旗標追蹤器資料結構的範例;圖7a-7c概要地例示說明依照本揭露內容的一或多個方
面之使用一多重實例表(MIT)於實體暫存器檔案(PRF)登錄追蹤的數個範例;圖8a-8c概要地例示說明依照本揭露內容的一或多個方面之利用旗標追蹤器資料結構於MIT登錄追蹤的一個範例;圖9a-9d與10a-10d概要地例示說明依照本揭露內容的一或多個方面之移動消除操作中的旗標追蹤邏輯的範例;圖11描述依照本揭露內容的一或多個方面之用於在移動消除操作中旗標追蹤的一範例方法的流程圖;以及圖12描述依照本揭露內容的一或多個方面之一範例電腦系統的方塊圖。
於此所敘述的為用於在牽涉移動消除之資料調處操作中旗標追蹤的電腦系統及相關技術。”移動消除”於此應參照至在未利用該執行單元的情況下,執行一暫存器複製操作以為了改善執行效能。
於某些實施中,移動消除可藉由暫存器別名化來實施:參照為實體暫存器檔案(PRF)的一第一資料結構可被利用於儲存實體暫存器值,以及參照為暫存器別名表(RAT)的一第二資料結構可被利用於儲存將邏輯暫存器識別符映射至PRF登錄的指標。暫存器別名化允許藉由更改該RAT中的一或多個指標來執行某些指令,而沒有將此等指令發送至該執行單元。此類指令的範例包括暫存器歸零指令(例
如,舉例來說,XOR AX、AX)、以及暫存器複製指令(例如MOV指令)。由於一暫存器複製指令不會產生一新的值,該來源暫存器指標可被複製至該RAT中的該目的地暫存器指標之中,如此該指令將不需要利用該執行單元以及另一PRF登錄。因該移動指令從被發送至該執行單元的串流中消除,此程序係參照為”移動消除”。
一整數指令不僅可更改一目的地暫存器值,亦可更改處理器狀態旗標中的一或多者。為儲存旗標值,每一PRF登錄可包括用於該等旗標值的一或多個欄位、以及用於該資料暫存器值的一欄位。
為了判定一PRF登錄何時被釋放給一新的指令使用,由實體暫存器及旗標之PRF表登錄的使用需要被追蹤。於此下文中所敘述的為用於在移動消除操作中有效率的旗標追蹤之系統與方法。上文所提及的方法與系統的各種不同方面係以範例的方式而非以限制的方式於此下文中詳細地敘述。
於下述敘述中,為了提供本發明徹底的理解,係提出許多特定細節,例如處理器與系統組態的特定類型、特定硬體結構、特定架構與微型架構細節、特定暫存器組態、特定指令類型、特定系統組件、特定測量/高度、特定處理器管線階段、以及操作等等之範例。然而,對於熟此技藝者顯而易見的是,此等特定細節並非必需被利用於實踐本發明。於其他範例中,為了避免不必要地混淆本發明,熟知的組件或方法,例如特定的或替代的處理器架構、用
於敘述演算法的特定邏輯電路/碼、特定韌體碼、特定互連操作、特定邏輯組態、特定製造技術與材料、特定編譯器實施、演算法以碼的特定表達、特定電源切斷及閘控技術/邏輯、以及電腦系統的其他特定操作細節並未詳細敘述。
儘管下列實施例係參照一處理器來敘述,其他實施例可應用至其他類型的積體電路及邏輯裝置。本發明的實施例的相似技術與教示可被應用於其他類型的電路或半導體裝置,其等可得益於較高的管線通量以及改善的性能。本發明的實施例的該等教示可應用於實行資料調處的任何處理器或機器。然而,本發明並非限制於執行512位元、256位元、128位元、64位元、32位元、或16位元資料操作的處理器或機器,且能夠應用於資料調處或管理於其中執行的任何處理器或機器。此外,為了例示說明之目的,下列敘述提供範例且所附圖式顯示各種不同的範例。然而,此等範例不應以限制的觀念來解釋,因其等僅意欲提供本發明的實施例的範例,而非提供本發明的實施例的所有可能實施的一窮舉列表。
儘管下文範例敘述執行單元與邏輯電路的上下文中的指令處置及分配,藉由一資料或儲存於機器可讀取有形媒體上的指令之方式能夠達到本發明的其他實施例,當儲存於機器可讀取有形媒體上的該等指令由一機器執行時,將致使該機器執行與本發明的至少一個實施例一致的功能。於一個實施例中,與本發明的實施例相關聯的功能係實施為機器可執行指令。該等指令可被使用於致使以該
等指令程控的一通用或專用處理器實行本發明的該等步驟。本發明的實施例可被提供如包括一機器或電腦可讀取媒體的一電腦程式產品或軟體,該包括機器或電腦可讀取媒體具有儲存於其上之被使用於程控一電腦(或其他電子裝置)以根據本發明的實施例來執行一或多個操作的指令。替代地,本發明的實施例的操作可由包含用於執行該等操作的固定功能邏輯之特定硬體組件來執行,或由程控電腦組件與固定功能硬體組件的任何組合來執行。
使用於程式邏輯以執行本發明的實施例之指令可被儲存於該系統中的一記憶體之中,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,該等指令可透過一網路或藉由其他電腦可讀取媒體之方式來分配。因此,一機器可讀取媒體可包括任何用於以機器(例如,電腦)可讀取的形式來儲存或傳送資訊的機制,但並非限於軟式磁片、光碟、光碟唯讀記憶體(CD-ROMs)、及磁光碟、唯讀記憶體(ROMs)、隨機存取記憶體(RAM)、可抹除可程式唯讀記憶體(EPROM)、電子可抹除可程式唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或者使用於在網際網路上透過電性、光學、聲學或其他形式的傳播信號(例如,載波、紅外線信號、數位信號、等等)之資訊傳送的實體機器可讀取儲存器。於是,該電腦可讀取媒體包括任何類型之適合用於以機器(例如,電腦)可讀取之形式來儲存或傳送電子指令或資訊的實體機器可讀取媒體。
“處理器”於此應參照至能夠執行將算術、邏輯或
I/O操作編碼之指令的一裝置。於一個例示說明的範例中,一處理器可按照范紐曼(Von Neumann)架構模型,並且可包括一算術邏輯單元(ALU)、一控制單元、以及複數個暫存器。於進一步方面,一處理器可包括一或多個處理器核心,且因此可為典型地能夠處理一單一指令管線的單一核心處理器、或者可同時處理多個指令管線的多核心處理器。於另一方面,一處理器可被實施為一單一積體電路、二或更多個積體電路,或者為一多晶片模組的一組件(例如,其中個別的微處理器晶粒係包括於一單一積體電路封裝,且因此共享一單一插座)。
圖1描述依照本揭露內容的一或多個方面之一電腦系統的一個範例的一高階組件圖。依照於此所述之實施例,一電腦系統100可包括利用包括邏輯的執行單元來執行演算法以處理資料的一處理器102。儘管其他系統(包括具有其他微處理器的PCs、工程工作站、機上盒、等等)亦可被使用,系統100為基於可從加州聖塔克拉拉的英特爾公司得到的PENTIUM IIITM、PENTIUM 4TM、XeonTM、Itanium、XScaleTM、及/或StrongARMTM微處理器的處理系統的表示。儘管其他作業系統(例如,UNIX及Linux)、內建軟體、及/或圖形使用者介面亦可被使用,於一個實施例中,範例系統100執行可從華盛頓州雷德蒙德的微軟公司得到的WINDOWSTM作業系統的一版本。因此,本發明的實施例並非限制於硬體電路及軟體的任何特定組合。
實施例並非限制於電腦系統。本發明的替代實施
例可被使用於其他裝置,例如手持裝置與內建應用程式。手持裝置的一些範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDAs)、以及手持PCs。內建應用程式可包括一微控制器、一數位信號處理器(DSP)、單晶片系統、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機、或能夠執行依照至少一個實施例的一或多個指令的任何其他系統。
於此例示說明的實施例中,處理器102包括用以實施一演算法的一或多個執行單元108,該演算法用以執行至少一個指令。一個實施例可用一單一處理器桌上型或伺服器系統的上下文來敘述,但替代實施例可包括於一多處理器系統中。系統100為一”集線器(hub)”系統架構的一範例。該電腦系統100包括用以處理資料信號的一處理器102。如一個例示說明的範例,該處理器102包括一複雜指令集電腦(CISC)微處理器、一精簡指令集計算(RISC)微處理器、一極長指令(VLIW)微處理器、實施指令集的一組合的一處理器、或任何其他處理器,舉例來說,例如一數位信號處理器。該處理器102係耦接至在該處理器102與該系統100中的其他組件之間傳送資料信號的一處理器匯流排110。系統100的該等元件(例如,圖形加速器112、記憶體控制器集線器116、記憶體120、I/O控制器集線器124、無線收發器126、快閃BIOS 128、網路控制器134、音頻控制器136、串列擴充埠138、I/O控制器140、等等)實行熟此技藝者所熟知的其等傳統的功能。
於一個實施例中,該處理器102包括一1階(L1)內部快取記憶體104。取決於該架構,該處理器102可具有一單一內部快取記憶體或多階內部快取記憶體。取決於特定實施及需求,其他實施例包括內部與外部快取記憶體兩者之組合。暫存器檔案106用以儲存不同類型的資料於各種不同的暫存器中,包括整數暫存器、浮點暫存器、向量暫存器、備份暫存器(banked register)、影子暫存器、核對點暫存器、狀態暫存器、以及指令指標暫存器。
包括用以執行整數與浮點運算之邏輯的執行單元108亦歸屬於該處理器102。於一個實施例中,該處理器102包括用以儲存微碼的一微碼(ucode)ROM,該微碼被執行時係實行用於某些巨集指令的演算法或處置複雜情境。此處,微碼為潛在地可更新的,以處置關於處理器102的邏輯錯誤/更改。對於一個實施例,執行單元108包括用以處置一緊縮指令集109的邏輯。藉由包括該緊縮指令集109於該通用處理器102的指令集之中,與用以執行該等指令的關聯電路,由許多多媒體應用程式所使用的該等操作可使用一通用處理器102之中的緊縮資料而被實行。因此,藉由使用一處理器的資料匯流排的全寬來實行緊縮資料上的操作,許多多媒體應用程式係被加速並執行得更有效率。此潛在地消除傳送較小單位的資料穿過該處理器的資料匯流排來實行一或多個操作之需求,一次一個資料元素。
一執行單元108的替代實施例亦可被使用於微控制器、嵌入式處理器、圖形裝置、DSPs、及其他類型的邏
輯電路之中。系統100包括一記憶體120。記憶體120包括動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體120儲存藉由資料信號所表示的指令及/或資料,該等資料信號將由該處理器102來執行。
一系統邏輯晶片116係耦接至該處理器匯流排110及記憶體120。該系統邏輯晶片116在所例示說明的實施例中為一記憶體控制器集線器(MCH)。該處理器102可透過一處理器匯流排110而通訊至該MCH 116。該MCH 116提供一高頻寬記憶體路徑118給用於指令與資料儲存以及用於圖形命令、資料與紋理之儲存的記憶體120。該MCH116係用於在該處理器102、記憶體120、及該系統100中的其他組件之間導引資料信號,並且用於在處理器匯流排110、記憶體120、及系統I/O 122之間橋接該等資料信號。於一些實施例中,該系統邏輯晶片116可提供用於耦接至圖形加速器112的一圖形埠。該MCH 116係透過一記憶體介面118而耦接至記憶體120。該圖形卡112係透過一加速圖形埠(AGP)互連114而耦接至該MCH 116。
系統100使用一專屬集線器介面匯流排122來將該MCH 116耦接至該I/O控制器集線器(ICH)130。該ICH 130透過一局部I/O匯流排來提供至一些I/O裝置的導引連接。該局部I/O匯流排為用於連接週邊設備至該記憶體120、晶片組及處理器102的一高速I/O匯流排。一些範例為音訊控制器、韌體集線器(快閃BIOS)128、無限收發器126、資料儲
存器124、包括使用者輸入及鍵盤介面的舊有I/O控制器、例如通用串列匯流排(USB)的串列擴充埠、以及網路控制器134。該資料儲存裝置124可包含一硬磁碟驅動機、一軟磁碟驅動機、一CD-ROM裝置、一快閃記憶體裝置、或其他大量儲存裝置。
對於一系統的另一實施例,依照一個實施例的一指令可與一系統晶片一起被使用。一系統晶片的實施例包含一處理器及一記憶體。用於一個此類系統的該記憶體為一快閃記憶體。該快閃記憶體可被設置於與該處理器及其他系統組件相同的晶粒上。此外,例如記憶體控制器或圖形控制器的其他邏輯方塊亦可設置於一系統晶片上。
圖2為關於一處理器200的該微架構的一方塊圖,該處理器200包括用於執行依照本發明的一個實施例之指令的邏輯電路。於一些實施例中,依照一個實施例的一指令可被實施以操作於資料元素上,具有位元組、字組、雙字、四倍字、等等之大小,以及例如單倍及雙倍精度整數與浮點資料類型的資料類型。於一個實施例中,該循序前端201為該處理器200的該部分,其提取將被執行之指令並將該等指令備妥以用於之後的處理器管線。該前端201可包括數個單元。於一個實施例中,該指令預提取器226從記憶體提取指令並且將該等指令饋至一指令解碼器228,其接著對該等指令解碼或解譯。舉例來說,於一個實施例中,該解碼器將一接收到的指令解碼成為一或多個機器可執行之被稱為”微指令”或”微操作”(亦參照為uops)的操作。於其他
實施例中,該解碼器將該指令剖析成微操作碼及對應資料與控制欄,其等由該微架構所使用以實行依照一個實施例之操作。於一個實施例中,該追蹤快取230取得解碼的uops並將其等組合成為在uop佇列234中用於執行的程式有序序列或追蹤。當該追蹤快取230遭遇一複雜指令時,該微碼ROM 232提供完成該操作所需要的該等uops。
一些指令係轉換成為一單一微操作(micro-op),而其他則需要數個微操作來完成全部的操作。於一個實施例中,若需要超過四個微操作來完成一指令,該解碼器228存取該微碼ROM 232來進行該指令。對於一個實施例,一指令可被解碼成為用於處理於該指令解碼器228之少量的微操作。於另一實施例中,一指令可被儲存於該微碼ROM 232之中,應該需要一些微操作來完成該操作。該追蹤快取230參照一入口點可程式邏輯陣列(PLA)以判定一正確的微指令指標,用於讀取該等微碼序列來完成依照一個實施例之來自該微碼ROM 232的一或多個指令。在該微碼ROM 232對於一指令完成定序微操作之後,該機器的該前端201重新開始自該追蹤快取230提取微操作。
該亂序執行引擎203為該等指令被準備用於執行的地方。該亂序執行邏輯具有一些緩衝器,用以使指令流平滑並且重排序以於其等落至管線並得到用於執行的排程時最佳化效能。該分配器邏輯分配該等機器緩衝器以及每一uop為了執行所需要的資源。該暫存器別名化邏輯將邏輯暫存器映射至一暫存器檔案中的項目(entry)。該分配器亦
針對一個用於記憶體操作以及一個用於非記憶體操作的兩個uop佇列中之一者之中的每一uop分配一項目,於該等指令排程器前方:記憶體排程器、快速排程器202、低速/一般浮點排程器204、以及簡單浮點排程器206。該等uop排程器202、204、206基於其等相依輸入暫存器運算源的就緒以及該等uops需要用於完成其等操作的該等執行資源的可用性,來判定一uop何時準備好用於執行。一個實施例的該快速排程器202可在該主要時鐘週期的每半個來排程,而該等其他排程器可在每一主要處理器時鐘週期排程一次。該等排程器仲裁配送埠,以排程用於執行的uops。
實體暫存器檔案208、210位於該等排程器202、204、206以及該執行方塊211中的該等執行單元212、214、216、218、220、222、224之間。針對整數及浮點運算分別有一個別的暫存器檔案208、210。一個實施例的每一暫存器檔案208、210亦包括一旁路網路(bypass network),其可將尚未被寫入該暫存器檔案中的剛好完成的結果略過或轉送至新的相依uops。該整數暫存器檔案208及該浮點暫存器檔案210亦能夠與其他傳遞資料。對於一個實施例,該整數暫存器檔案208係劃分為兩個個別的暫存器檔案,一個暫存器檔案用於低階32位元的資料,且一第二暫存器檔案用於高階32位元的資料。由於浮點指令典型地具有寬度從64至128位元的運算元,一個實施例的該浮點暫存器檔案210具有128位元寬的項目。
該執行方塊211含有該等指令實際上被執行之處
的該等執行單元212、214、216、218、220、222、224。此區段包括該等暫存器檔案208、210,其等儲存該等微指令需要用於執行的該等整數與浮點資料運算元值。一個實施例的該處理器200係由一些執行單元所組成:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、低速ALU 220、浮點ALU 222、浮點移動單元224。對於一個實施例,該等浮點執行方塊222、224執行浮點運算、MMX運算、SIMD運算、及SSE運算、與其他運算。一個實施例的該浮點ALU 222包括一64位元乘64位元的浮點除法器,用以執行除法、平方根、及餘數微操作。對於本發明的實施例,牽涉一浮點值的指令可用該浮點硬體來處置。於一個實施例中,該等ALU操作去到該等高速ALU執行單元216、218。該等快速ALUs 216、218可用一半時鐘週期的一有效潛時來執行快速運算。對於一個實施例,複雜的整數運算去到該低速ALU 220,該低速ALU 220包括用於長潛時類型的運算的整數執行硬體,長潛時類型的運算例如乘數、移位、旗標邏輯、以及分支處理。記憶體載入/儲存操作係由該等AGUs 212、214所執行。對於一個實施例,該等整數ALUs 216、218、220係敘述於在64位元的資料運算元上實行整數運算之上下文中。於替代的實施例中,該等ALUs 216、218、220可被實施用以支援各種資料位元,包括16、32、128、256、等等。同樣地,該等浮點單元222、224可被實施用以支援具有各種位元寬度的運算元。對於一個實施例,該等浮點單元222、224可與SIMD及多媒體指令結合而操作
於128位元寬的緊縮資料運算元之上。
於一個實施例中,該等uops排程器202、204、206於母負載(parent load)已經完成執行之前配送相依的操作。當uops被臆測地排程並執行於處理器200之中時,該處理器200亦包括用以處置記憶體缺失(miss)的邏輯。若於該資料快取之中一資料負載缺失,可以有在管線中飛行之因暫時錯誤資料而已經離開該排程的相依操作。一重播機制追蹤並且重新執行使用錯誤資料的指令。該等相依操作應該被重播,而該等獨立者被允許完成。一處理器的一個實施例的該等排程器及重播機制亦被設計來補集用於文字串比較操作的指令序列。
該用語”暫存器”可參照至使用作為指令部分來識別運算元的機載處理器儲存位置。換言之,暫存器可以是可從該處理器的外部(從一程式設計師的觀點)使用的那些位置。然而,一實施例的該等暫存器在意義上不應被限制於一特定類型的電路。反而,一實施例的一暫存器能夠儲存並提供資料,並且實行於此所述之該等功能。於此所述之該等暫存器可使用一些不同技術藉由一處理器中的電路系統來實施,不同技術例如專屬實體暫存器、使用暫存器別名化的動態分配實體暫存器、專屬及動態分配實體暫存器之組合、等等。於一個實施例中,整數暫存器儲存三十二位元整數資料。一個實施例的一暫存器檔案亦含有八個用於緊縮資料的多媒體SIMD暫存器。對於以下的討論,該等暫存器被理解為設計用來保存緊縮資料的資料暫存器,
例如微處理器中的64位元寬MMX暫存器(在某些情況下亦參照為’mm’暫存器),其等被賦予來自加州聖克拉拉的英特爾公司的MMXTM技術。以整數及浮點形式皆可用的此等MMX暫存器可與伴隨SIMD及SSE指令的緊縮資料元素一起操作。同樣地,有關於SSE2、SSE3、SSE4、或再往後的SSE(一般參照為”SSEx”)的128位元寬MMX暫存器亦可被使用於保存此類緊縮資料運算元。於一個實施例中,在儲存緊縮資料與整數資料,該等暫存器並不需要區分該等兩種資料類型。於一個實施例中,整數及浮點係包含於相同的暫存器檔案中,或者於不同的暫存器檔案中。再者,於一個實施例中,浮點及整數資料可被儲存於不同的暫存器或相同的暫存器之中。
圖3a-3b概要地例示說明依照本揭露內容的一或多個觀點之一處理器微架構的元件。於圖3a中,一處理器管線400包括一提取階段402、一長度解碼階段404、一解碼階段406、一分配階段408、一重取名階段410、一排程(亦稱為調度或發出)階段412、一暫存器讀取/記憶體讀取階段414、一執行階段416、一回寫/記憶體寫入階段418、一異常處置階段422、以及一提交(commit)階段424。
於圖3b中,箭頭表示兩個或更多個單元之間的耦接,且箭頭的方向指示此等單元之間的資料流的方向。圖3b顯示處理器核心490,其包括耦接至一執行引擎單元450的一前端單元430,且兩者皆耦接至一記憶體單元470。
該核心490可為一精簡指令計算(RISC)核心、一
複雜指令計算(CISC)核心、一極長指令(VLIW)核心、或一併合(hybrid)或一替代核心類型。作為又另一選擇,該核心490可為一特別用途核心,例如舉例來說,網路或通訊核心、壓縮引擎、圖形核心、或相似的核心。
該前端單元430包括耦接至一指令快取單元434的一分支預測單元432,該指令快取單元434耦接至一指令轉譯後備緩衝區(TLB)436,該指令轉譯後備緩衝區436耦接至一指令提取單元438,該指令提取單元438耦接至一解碼單元440。該解碼單元或解碼器可解碼指令,並且產生作為輸出的一或多個微操作、微碼入口點、微指令、其他指令、或其他控制信號,其等係解碼自該等原始指令、或以其他方式反映該等原始指令、或自該等原始指令導出。該解碼器可使用各種不同的機制來實施。適當的機制的範例包括,但不限於,查找表、硬體實施、可程式邏輯陣列(PLAs)、微編碼唯讀記憶體(ROMs)、等等。該指令快取單元434更耦接至該記憶體單元470中的一2階(L2)快取單元476。該解碼單元440耦接至該執行引擎單元450中的一重取名/分配器單元452。
該執行引擎單元450包括該重取名/分配器單元452,其耦接至一汰除(retirement)單元454以及一組一或多個排程器單元456。該(等)排程器單元456表示任何數量的不同排程器,包括保留站、中央指令視窗、等等。該(等)排程器單元456係耦接至該(等)實體暫存器檔案單元458。該等實體暫存器檔案單元458的每一者表示一或多個實體暫存器
檔案,其等之中的不同者儲存一或多個不同的資料類型(例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等)、狀態(例如,為將被執行的下一個指令之位址的一指令指標)、等等。該(等)實體暫存器檔案單元458被該汰除單元454重疊,以例示說明別名化且亂序執行的暫存器可於其中實施(例如,使用重排序緩衝器及汰除暫存器檔案,使用未來檔案、歷史暫存器、及汰除暫存器檔案;使用暫存器映射及一暫存器池;等等)的不同通路。通常,該等架構暫存器從該處理器的外部或者從一程式設計師的觀點為可見的。該等暫存器並非限於任何已知的特定類型的電路。各種不同類型的暫存器為適合的,只要其等能夠儲存並提供於此所述的資料。適合的暫存器的範例包括,但不限於,專屬實體暫存器、使用暫存器別名化的動態分配實體暫存器、專屬及動態分配實體暫存器之組合、等等。該汰除單元454及該(等)實體暫存器檔案單元458耦接至該(等)執行叢集460。該(等)執行叢集460包括一組一或多個執行單元162、及一組一或多個記憶體存取單元464。該等執行單元462可實行各種運算(例如,移位、加法、減法、乘法)並且於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。儘管一些實施例可包括專屬於特定功能或功能集的若干執行單元,其他實施例可包括全部執行所有功能的一個執行單元或多個執行單元。該(等)排程器單元456、實體暫存器檔案單元458、以及執行叢集460係顯示為可能為複數個,因為某些實施例針對某些
類型的資料/運算會建立分隔的管線(例如,一純量整數管線、一純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或一記憶體存取管線,其等各自具有其等自身的排程器單元、實體暫存器檔案單元、及/或執行叢集,且在一分隔的記憶體存取管線的例子中,某些實施例可被實施為其中此管線的該執行叢集具有該(等)記憶體存取單元464)。亦可理解的是,在使用分隔的管線之處,此等管線中的一或多個可為亂序發出/執行,其餘的為依序。
該組記憶體存取單元464耦接至該記憶體單元470,該記憶體單元470包括耦接至一資料快取單元474的一資料TLB單元472,該資料快取單元474耦接至一2階(L2)快取單元476。於一個範例的實施例中,該等記憶體存取單元464可包括一載入單元、一儲存位址單元、以及一儲存資料單元,其等各自耦接至該記憶體單元470中的該資料TLB單元472。該L2快取單元476耦接至一或多個其他階的快取,並且最終至一主記憶體。
藉由舉例的方式,該等範例的暫存器別名化、亂序發出/執行核心、架構可實施該管線400如下:該指令提取438執行該等提取及長度解碼階段402與404;該解碼單元440執行該解碼階段406;該重取名/分配器單元452執行該等分配階段408與重取名階段410;該(等)排程器單元456執行該排程階段412:該(等)實體暫存器檔案單元458及該記憶體單元470執行該暫存器讀取/記憶體讀取階段414;該執行叢集460執行該執行煎斷416;該記憶體單元470及該(等)實
體暫存器檔案單元458執行該回寫/記憶體寫入階段418;各種單元可被牽涉於該異常處置階段422中;以及該汰除單元454及該(等)實體暫存器檔案單元458執行該提交階段424。
該核心490可支援一或多個指令集(例如,該x86指令集(具有已加入更新版本的一些延伸);加州森尼韋爾的美普思(MIPS)科技的該MIPS指令集;加州森尼韋爾的ARM Holdings的該ARM指令集(具有例如NEON的附加延伸))。
於某些實施中,該核心可支援多執行緒(執行兩個或更多個平行的運算或執行緒集合),並且可用各種不同的方式如此做,包括時間分割(time sliced)多執行緒、同時多執行緒(單一實體核心對於實體核心正同時多執行緒的該等執行緒之每一者提供一邏輯核心)、或其等之組合(例如,時間分割提取與解碼,並在之後例如以英特爾®超執行緒技術來同時多執行緒)。
儘管暫存器別名化係敘述於亂序執行的上下文之中,應可瞭解的是,暫存器別名化可被使用於一循序架構之中。儘管該處理器的例示說明實施例亦包括一個別的指令及資料快取單元434/474以及一共享L2快取單元476,替代的實施例可具有用於指令與資料兩者的單一內部快取,例如,舉例來說,1階(L1)內部快取或多階內部快取。於一些實施例中,該系統可包括一內部快取與該核心及/或該處理器外部的一外部快取之組合。替代地,所有快取可為該核心及/或該處理器外部的。
圖4例示說明依照本揭露內容的一或多個觀點的
一範例處理器102以及該電腦系統100的其他組件的一方塊圖。參考圖4,該處理器核心490可包括一提取單元202,用以提取用於藉由該核心490之執行的指令。該等指令可從例如該記憶體115的一或多個儲存裝置提取。該處理器核心490可進一步包括一解碼單元440,用以將一被提取的指令解碼為一或多個微操作(uops)。該處理器核心490可進一步包括一排程單元446,用以儲存來自該解碼單元440之一經解碼的指令,直到該指令已準備好被發出,例如直到對於該經解碼的指令的運算元值變成可得的。該排程單元446可排程及/或發出經解碼的指令至一執行單元450。
該執行單元450可包括一或多個算術邏輯單元(ALUs)、一或多個整數執行單元、一或多個浮點執行單元、及/或其他執行單元。於某些實施例中,該執行單元450可亂序(out-of-order,OOO)執行指令。該處理器核心490可進一步包括一汰除單元454,用以在被執行的指令被提交之後汰除該等被執行的指令。
該處理器核心490可進一步包括一暫存器別名表(RAT)421、一實體暫存器檔案(PRF)423、一移動消除表(MIT)425、一旗標追蹤器427、以及一PRF追蹤邏輯150。即便圖4中該邏輯150係顯示為位於一核心490內部,該邏輯150可被提供於該電腦系統100中的別處。再者,該邏輯150及/或其組件中的某些可被共享於複數個處理器核心之間。
如同此文中上述提及的,可藉由將該暫存器指標
複製到該RAT中的該目的地暫存器指標來消除一移動指令。圖5概要地例示說明藉由暫存器別名化來執行MOV DX,AX指令:對於AX(其為PRF中的項目X的一指標)的RAT項目的內容被複製到對於DX的RAT項目。如同圖5所例示說明的,於某些實施中,該PRF可由實體暫存器值的一陣列來提供,且該RAT可由對PRF項目的指標的一陣列來提供。
一整數指令不僅可更改一目的地暫存器值,還可更改處理器狀態旗標中的一或多者,包括例如進位旗標(C)、符號旗標(S)、同位旗標(P)、調整旗標(A)、零旗標(Z)、及/或溢位旗標(O)。為了儲存旗標值,除了用於該資料暫存器值的一欄位以外,每一PRF項目還可包括用於該等旗標值的一或多個欄位。於某些實施中,處理器狀態旗標可被儲存於兩個PRF欄位之中:用於儲存該值該進位旗標的一C位元欄位、以及用於儲存該等S、P、A、Z、及O旗標的值的一SPAZO 5-位元欄位。若該欄位中的一或多個位元將以一新的值來更新,該等其餘的位元也將以那些位元的先前版本來更新。換言之,對於該程式執行中一已知的點,單一PRF項目包含在該欄位中用於該程式點的那些旗標的最新值。對於C及SPAZO分組,單一PRF項目或兩個實體暫存器的組合被需要用於表示在該程式中位於一已知的點的正確旗標狀態。因此,一整數微操作的結果可包括一目的資料暫存器值以及旗標值,其等可被寫入至包含三個上文提及的欄位的一個PRF項目中。其他實施可將所有該等旗標位元分組為一個欄位,僅需要一個PRF項目來表示位於一程式點的該
旗標狀態;其他實施可管理每一旗標位元當作一各別欄位,對於具有如先前敘述的CSPAZO旗標狀態的一處理器,需要多達六個PRF項目來表示位於一程式點的該旗標狀態。
該RAT可包括映射旗標值至該等PRF項目的一或多個指標。於某些實施中,該RAT可包括映射該C旗標值至一PRF項目的一項目、以及映射SPAZO旗標值至一PRF項目的一項目。故,處理器狀態旗標在該RAT中可具有其等本身的邏輯項目(亦參照為”旗標邏輯暫存器”),但雨資料暫存器共享PRF項目:作為結構上更新資料與狀態旗標之操作的結果,數個RAT項目可被更新以映射至相同的PRF項目。
被多個RAT項目所參照的一PRF項目,在包括資料與旗標指標的該等多個RAT項目已被一或多個指令重寫之後,可變為可由後續指令得以使用。故,需要一追蹤機制用於追蹤參照一PRF項目的多個RAT指標。
於某些實施中,參照為旗標追蹤器的一資料結構可被使用於追蹤由資料與旗標邏輯暫存器對PRF項目的共享使用。該旗標追蹤器可包含表示一或多個狀態旗標的一或多組欄位。如同圖6a所概要顯示的,於一個範例中,該旗標追蹤器可由具有分別表示C及SPAZO狀態旗標的兩行的一二維陣列所提供。LDstV位元可被設定用於指示由LDst欄位識別的該邏輯資料暫存器與該對應的(例如,C或SPAZO)旗標暫存器共享一PRF項目。於分配時間,當一邏輯暫存器已被重寫且該等旗標亦已被重寫(假定沒有移動消除)時,在該重寫指令汰除之後,相關聯的實體暫存器可
被收回(reclaimed)。當目前與該等旗標共享該實體暫存器的一邏輯暫存器已被重寫時,但該等旗標的全部或一些尚未被重寫,對應此等旗標欄位的該等LDstV欄位被清除。僅於此等特定旗標群組亦已被重寫時,該實體暫存器可被收回。
於某些實施中,參照為多重實例表(MIT)的一資料結構可被使用於追蹤PRF項目的參考。於某些實施中,該MIT可儲存多組位元,其中一組位元可表示一移動消除操作,且在一組之中的一位元可表示一邏輯資料暫存器。該MIT可被實施為一二維陣列(例如,一位元矩陣),其具有表示邏輯暫存器的複數列(row)、以及表示移動消除集合的複數行(column),其中一組位元指示該對應的資料暫存器參與該移動消除集合。
當僅僅一個暫存器映射餘留在一移動消除集合之中時,如此該對應的PRF項目具有僅僅一個餘留的參考,由一MIT行所提供的該移動消除集合對於分配至另一個移動指令仍為不可用的。如此的集合可參照為”孤兒”集合,因為其具有僅僅一個暫存器映射。在沒有一些動作以清除一孤兒集合的情況下,其會仍保持為不可用的直到該最後的邏輯暫存器被重寫,因此減少可能的移動消除之數量。
圖7a-7c概要地例示說明依照本揭露內容的一或多個方面之使用一多重實例表(MIT)於實體暫存器檔案(PRF)登錄追蹤的數個範例。當一移動操作被消除時,對應該等來源及目的地邏輯暫存器的該等位元可被設定,指示
此等邏輯暫存器為該移動消除集合的部分,如圖7a所概要例示說明。若該移動指令的來源是已經參與於一移動消除集合中的一邏輯暫存器,則該目的地邏輯暫存器被加入至該集合中,如圖7b所概要例示說明。當參與於一移動消除集合中的一暫存器被另一指令重寫時,該對應的MIT位元(先前已被設定)可被清除,因此使該邏輯暫存器從該移動消除集合分離,如圖7c所概要例示說明。並非為任何移動消除集合的一部份或者為一移動消除集合的唯一成員之該對應的實體暫存器,一旦該實體暫存器的所有參考已被一或多個指令重寫並且接著被汰除,則可被一新的指令再使用。
圖7a-7c所例示說明的該範例並未顧及由資料與旗標邏輯暫存器對PRF項目的可能共享。於某些實施中,該旗標追蹤器可進一步包括一共享旗標位元,其指示C與SPAZO旗標是否共享相同的PRF項目。當C或SPAZO旗標中的一者被一指令重寫的情況時,其他旗標邏輯暫存器可繼續指向該相同的PRF項目,直到第二個旗標亦變成被另一指令重寫為止。
如圖6b所概要地例示說明,於一個範例中,該旗標追蹤器可被提升為包括移動消除有效(MEV)與移動消除行(MECol)欄位。該MEV位元可被設定用於指示該MECol欄位儲存一MIT行的一有效識別符,表示於其中該旗標暫存器與邏輯暫存器共享一PRF項目的一移動消除集合。於某些實施中,LDst與MECol欄位可由一共享欄位來表示,因
為在任何給定時間該等兩者中只有一者為有效的。
圖8a-8c例示說明利用該旗標追蹤器用於追蹤由資料及旗標邏輯暫存器共享的PRF項目之共享使用的一範例。圖8a顯示該C旗標追蹤器的初始狀態:在EAX暫存器及C旗標已由一被執行的指令更新之後,LDstV位元被設定為用以指示C旗標與LDst欄位所識別的該邏輯暫存器共享一PRF項目。圖8b例示說明將EAX複製到EBX之操作的結果:RAT中的該EAX指標被複製到EBX(未顯示);一移動消除集合被產生(未顯示),包括與其相關聯的EAX、EBX、及C旗標;於該旗標追蹤器中,LDstV位元被清除以指示LDst的值不再相關,MEV位元被設定,且該移動消除集合識別符(對應的MIT行的數量)被寫入至MECol。圖8c例示說明在沒有更新C旗標的情況下,EAX暫存器以新的值來重寫的結果:LDst欄位被更新以指示該C旗標僅與一個暫存器(EBX)共享一PRF項目,LDstV位元被設定以指示C旗標與LDst欄位(EBX)所識別的該邏輯暫存器共享一PRF項目,且MEV位元被清除以指示MECol並未參照一有效的移動消除集合。
於某些實施中,該MIT可被提升以使得表示一或多個邏輯旗標暫存器的一或多個位元與每一移動消除集合結合。該結合可藉由將表示一或多個邏輯旗標暫存器的一或多個位元增加至每一MIT行來實行。因此,一MIT行可包括一移動消除集合(包含複數個表示邏輯資料暫存器的位元)、以及表示一或多個邏輯旗標暫存器的一或多個位元。於某些實施中,一單一位元可表示二或更多個邏輯旗標暫
存器。於一個範例中,表示C旗標的一第一位元及/或表示SPAZO旗標的一第二位元可被增加至每一MIT行。
在一移動消除集合變成孤兒之後(圖8c的範例所例示說明的情況),將邏輯旗標暫存器增加至MIT行會消除於旗標追蹤器中設定LDst及LDstV欄位的必要性,因此簡化系統設計並改善執行效率,如參考圖9-10的範例所更詳細敘述於此後。當僅一個邏輯資料暫存器餘留在該對應的移動消除集合之中時,在一MIT行中設定一旗標位元的目的是為了避免該孤兒恢復邏輯收回該對應的移動消除集合。
為了進一步改善執行效率,該邏輯150可保留地假定,任何移動消除操作可包括與C和SPAZO狀態旗標共享一PRF項目的一邏輯暫存器。因此,回應於產生或增加一暫存器至一移動消除集合,該追蹤邏輯可臆測地在該MIT中設定該等旗標位元(例如,C和SPAZO旗標位元)。當一旗標被重寫時,該對應的MIT位元可從該MIT中的所有行中清除,以指示該旗標並非與該等移動消除集合相關聯。如同於此上文中所提及的,於某些實施中,只有邏輯與算術操作可寫入旗標位元,因此此等操作的結果總是被寫至僅能夠在一後續的移動操作之後被共享的一新的實體暫存器。
由於在一些實施中,MIF旗標位元可被臆測地設定,一MIT旗標位元並非必要地指示該對應的旗標與該移動消除集合的其他成員共享一PRF項目。為了容易旗標追蹤,該邏輯150可產生數個反映MIT更新的信號,包括參照為MITOvrWrCol的一信號以及參照為LDstIsME的一信號,該
MITOvrWrCol信號識別一邏輯暫存器因一分配的微操作而將被從中移除的一移動消除集合(例如,藉由該對應的MIT行的一數字),該LDstIsME信號指示用於該微操作的該目的地暫存器是否與另一邏輯暫存器共享。當用於一旗標的MEV位元被設定(指示該旗標暫存器係與一移動消除集合相關聯),MITOvrWrCol信號與MECol相配(指示被執行的該操作正將一邏輯暫存器從與該旗標邏輯暫存器共享一PRF項目的該移動消除集合中釋放),且LDstIsME信號為假(指示被該操作的LDst重寫的該邏輯暫存器為該移動消除集合中最後餘留的暫存器),則該旗標暫存器不再與一資料暫存器共享一PRF項目。因此,MEV位元可被清除,且下一個旗標寫入操作可收回該PRF項目。
該旗標追蹤邏輯係參考圖9a-9d及10a-10d所概要例示說明的該等範例來進一步描述。為了敘述的清晰,僅顯示一個MIT行、一個狀態旗標、以及兩個暫存器,但應可理解的是,一實施可包含複數個MIT行、複數個狀態旗標欄位、以及複數個邏輯暫存器。
於一個範例中,圖9a顯示MIT行0及C旗標追蹤器的初始狀態:在EAX暫存器及C旗標已經被一執行的指令更新之後,LDstV位元被設定以指示C旗標與LDst欄位所識別的該邏輯暫存器共享一PRF項目。圖9b例示說明將EAX複製到EBX之操作的結果:於RAT中的該EAX指標被複製到EBX(未顯示);包括EAX、EBX、及C旗標的一移動消除集合被產生;於該旗標追蹤器中,LDstV位元被清除以指示Ldst
的值不再相關,MEV位元被設定,且該移動消除集合識別符(該對應的MIT行的數字)被寫入至MECol之中。圖9c例示說明EAX暫存器被用一新的值重寫的結果:該MIT項目反映出藉由清除表示EAX的該位元而從該移動消除集合之EAX的移除;旗標追蹤器保持不變;由於該旗標位元仍被設定指示該等旗標可能與EBX共享一PRF項目,孤兒收回被失效。圖9d例示說明於該移動消除集合中最後剩下的暫存器之EBX暫存器,被用一新的值重寫但該等狀態旗標並未被重寫的結果:該MIT項目反映出藉由清除該對應的位元而從該移動消除集合之EBX的移除;於該旗標追蹤器中,MEV位元被清除,而因此下一個至C旗標的撰寫器將收回該PRF項目。如此,MIT行0為自由地可被使用於另一移動消除;該C旗標並未被任何其他邏輯暫存器共享,且因此在該等結構任一者中皆沒有共享需要被追蹤。若C旗標隨著EBX更新而被更新,該PRF項目將被標記用於此循環中的收回。
於另一範例中,圖10a顯示數個資料結構的初始狀態:在EAX暫存器及C旗標已經藉由一被執行的指令而被更新之後,LDstV位元被設定以指示C旗標與由LDst欄位瑣識別的該邏輯暫存器共享一PRF項目。圖10b例示說明一移動消除操作MOV EBX、EAX的結果:該RAT中的該EAX指標被複製到EBX(未顯示);一移動消除集合被產生,包括與其相關聯的EAX、EBX、及C旗標;於該旗標追蹤器中,LDstV位元被清除,MEV位元被設定,且該移動消除集合
識別符(該對應的MIT行的數量)被寫入至MECol。圖10c例示說明EAX暫存器與C旗標兩者皆以該等新的值來重寫的結果:該MIT項目反映出藉由清除該等對應的位元而從該移動消除集合之EAX與C旗標的移除;該旗標追蹤器被更新以反映C旗標與EAX暫存器的相關性:LDstV位元被設定,且MEV位元被清除。因此,EBX為餘留在該移動消除集合中的最後的暫存器,且於下一個循環中,該孤兒恢復機制將會收回對應的移動消除行,如圖10d所概要地例示說明的。假定EBX並未變為一新的移動消除為集合的成員,由EBX使用的該PRF項目將會被標記用於在下次被重寫時的收回。
圖11描述依照本揭露內容的一或多個觀點之用於移動消除操作中旗標追蹤的一範例方法的流程圖。該方法800可由一電腦系統來執行,該電腦系統可包含硬體(例如,電路、專屬邏輯、及/或可程式邏輯)、軟體(例如,可於一電腦系統上執行以實行硬體模擬的指令)、或其等之組合。該方法800及/或其功能、常式、次常式、或操作中的每一者可由執行該方法的該電腦系統的一或多個實體處理器來實行。方法800的兩個或更多個功能、常式、次常式、或操作可平行實行,或者以不同於上文所述之順序的一順序來實行。於一個範例中,如圖11所例示說明的,該方法800可由圖1的該電腦系統100來實行。
參考圖11,於方塊810,一計算系統可用參照為PRF的一第一資料結構來儲存複數個實體暫存器值。
於方塊820,該計算系統可用參照為RAT的一第二資料結構來儲存複數個指標,該等指標參照該第一資料結構的元素。
於方塊830,該計算系統可用參照為MIT的一第三資料結構來儲存複數個位元,該等位元表示複數個邏輯暫存器。
於方塊840,該計算系統可用參照為旗標追蹤器的一第四資料結構來儲存一資料暫存器的一識別符,該資料暫存與一旗標暫存器共享該第一資料結構的一元素。
於方塊850,該計算系統可藉由導致該第二資料結構的一元素參照至該第一資料結構的一元素來實行一移動消除操作。
於方塊860,該計算系統可使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構的元素的可用性。在完成方塊850所參照的該等操作後,該方法隨即結束。
圖12描述依照本揭露內容的一或多個觀點之一範例電腦系統的方塊圖。如圖12中所示,多處理器系統700為一點對點互連系統,並且包括透過一點對點互連750而耦接的一第一處理器770及一第二處理器780。處理器770與780的每一者可為該處理器102的某些版本,能夠執行交換式記憶體存取操作及/或非交換式記憶體存取操作,如更詳細敘述於此後。
儘管僅以兩個處理器770、780來顯示,要理解的
是,本發明的範圍並非如此限制。於其他實施例中,一或多個額外的處理器可存在於一已知的處理器中。
處理器770及780係顯示為各別包括整合記憶體控制器單元772及782。處理器770亦包括作為其匯流排控制器單元的點對點(P-P)介面776及778;同樣地,第二處理器780包括P-P介面786及788。處理器770、780可透過點對點(P-P)介面750使用P-P介面電路778、788來交換資訊。如圖12中所示,IMCs 772及782將該等處理器耦接至各別的記憶體(亦即一記憶體732及一記憶體734),其為本地附接至該等各別處理器的主要記憶體的部分。
處理器770、780可各自透過個別地P-P介面752、754使用點對點介面電路776、794、786、798與一晶片組790交換資訊。晶片組790亦可透過一高效能圖形介面739與一高效能圖形電路738交換資訊。
一共享快取(未顯示)可包括於處理器中,抑或於兩處理器的外部而透過P-P互連與該等處理器連接,如此,若一處理器被置於低功率模式之中,其中一個或兩個處理器的本地快取資訊可儲存於該共享快取之中。
晶片組790可透過一介面796而耦接至一第一匯流排716。於一個實施例中,第一匯流排716可為週邊組件互連(PCI)匯流排、或者例如快速PCI匯流排或另一個第三代I/O互連匯流排的一匯流排,儘管本發明的範圍並非如此限制。
如圖12中所示,除了耦接第一匯流排716至一第
二匯流排720的一匯流排橋接器718之外,各種不同的I/O裝置714可耦接至第一匯流排716。於一個實施例中,第二匯流排720可為一低接腳計數(LPC)匯流排。各種不同裝置可耦接至第二匯流排720,舉例來說,於一個實施例中包括一鍵盤及/或滑鼠722、通訊裝置727、以及可包括指令/碼及資料730之例如磁碟驅動器或其他大量儲存裝置的儲存單元728。再者,一音訊I/O 724可耦接至第二匯流排720。注意,其他架構也是可能的。舉例來說,取代圖12的點對點架構,一系統可實施多點匯流排或其他此類架構。
下述範例例示說明依照本揭露內容的一或多個觀點的各種不同實施。
範例1為一處理系統,包含:一第一資料結構,其包括複數個實體暫存器值;一第二資料結構,其包括參照該第一資料結構的元素的複數個指標;一第三資料結構,其包括複數個移動消除集合,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元,該第三資料結構更包含與每一移動消除集合相關聯的至少一個位元,該至少一個位元表示一或多個邏輯旗標暫存器;一第四資料結構,其包括與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符;以及一移動移除邏輯,其被組態以藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作,該移動消除邏輯更被組態以使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構的元素的可用性。
於範例2中,範例1的該處理系統的該移動消除邏輯可被組態以回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一旗標暫存器。
於範例3中,範例1的該處理系統的該移動消除邏輯可被組態以檢測並收回具有僅僅一個非零位元的一移動消除集合。
於範例4中,範例1的該處理系統的該移動消除邏輯可被組態以回應於判定與該移動消除集合相關並且表示一邏輯旗標暫存器的至少一個位元具有一非零的值,而取消收回具有至少一個非零位元的一移動消除集合。
於範例5中,範例1的該處理系統的該第四資料結構可包含:指示該移動消除集合之驗證的一位元,指示一邏輯旗標暫存器與該資料暫存器共享該第一資料結構之一項目的一位元,識別與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一第一識別符,以及識別一移動消除集合的一第二識別符。
於範例6中,範例5的該處理系統的該第一識別符與該第二識別符可由一公用資料欄位來表示。
於範例7中,範例1的該處理系統的該移動消除邏輯可進一步被組態以產生一第一信號及一第二信號,該第一信號識別具有被一分配的微操作重寫的一或多個邏輯暫存器的一移動消除集合,該第二信號指示用於該微操作的
一目的地暫存器的共享使用。
於範例8中,範例7的該處理系統的該移動消除邏輯可進一步被組態以回應於判定對應該旗標暫存器的一邏輯旗標暫存器係與一第一移動消除集合相關、該第一信號與該第一移動消除集合的識別符相配、以及該第二信號為假,而更新該第四資料結構以指示一旗標暫存器不再與一資料暫存器共享該第一資料結構的一元素。
範例9為執行資料調處操作的一方法,其包含:由一計算系統將複數個實體暫存器值儲存於一第一資料結構中;將參照該第一資料結構的元素的複數個指標儲存於一第二資料結構中;將複數個移動消除集合以及與每一移動消除集合相關的至少一個位元儲存於一第三資料結構中,該至少一個位元表示一或多個邏輯旗標暫存器,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元;將與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符儲存於一第四資料結構中;藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作;以及使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構的元素的可用性。
於範例10中,範例9的該方法進一步包含回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一
旗標暫存器。
於範例11中,範例9的該方法進一步包含檢測並收回具有僅僅一個非零位元的一移動消除集合。
於範例12中,範例11的該方法進一步包含回應於判定與該移動消除集合相關並且表示一邏輯旗標暫存器的至少一個位元具有一非零的值,而取消具有至少一個非零位元的一移動消除集合之收回。
於範例13中,範例9的該方法的該第四資料結構可包含:指示該移動消除集合之驗證的一位元,指示一邏輯旗標暫存器與該資料暫存器共享該第一資料結構之一項目的一位元,識別與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一第一識別符,以及識別一移動消除集合的一第二識別符。
於範例14中,範例13的該方法的該第一識別符與該第二識別符可由一公用資料欄位來表示。
於範例15中,範例9的該方法進一步包含產生一第一信號及一第二信號,該第一信號識別具有被一分配的微操作重寫的一或多個邏輯暫存器的一移動消除集合,該第二信號指示用於該微操作的一目的地暫存器的共享使用。
於範例16中,範例15的該方法進一步包含回應於判定對應該旗標暫存器的一邏輯旗標暫存器係與一第一移動消除集合相關、該第一信號與該第一移動消除集合的識別符相配、以及該第二信號為假,而更新該第四資料結構
以指示一旗標暫存器不再與一資料暫存器共享該第一資料結構的一元素。
範例17為一種設備,其包含一記憶體、以及耦接至該記憶體的一處理系統,其中該處理系統被組態以執行範例9-16中任一者的該方法。
範例18為一種電腦可讀非暫時性儲存媒體,其包含可執行指令,當該等指令被一計算系統執行時,會導致該計算系統實行下列操作,包含:由一計算系統將複數個實體暫存器值儲存於一第一資料結構中;將參照該第一資料結構的元素的複數個指標儲存於一第二資料結構中;將複數個移動消除集合以及與每一移動消除集合相關的至少一個位元儲存於一第三資料結構中,該至少一個位元表示一或多個邏輯旗標暫存器,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元;將與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符儲存於一第四資料結構中;藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作;以及使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構的元素的可用性。
於範例19中,範例18的該電腦可讀非暫時性儲存媒體可進一步包含可執行指令,導致該計算系統回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一旗
標暫存器。
於範例20中,範例18的該電腦可讀非暫時性儲存媒體可進一步包含可執行指令,導致該計算系統檢測並收回具有僅僅一個非零位元的一移動消除集合。
於範例21中,範例20的該電腦可讀非暫時性儲存媒體可進一步包含可執行指令,導致該計算系統回應於判定與該移動消除集合相關並且表示一邏輯旗標暫存器的至少一個位元具有一非零的值,而取消具有至少一個非零位元的一移動消除集合之收回。
於範例22中,範例18的該電腦可讀非暫時性儲存媒體的該第四資料結構可包含:指示該移動消除集合之驗證的一位元,指示一邏輯旗標暫存器與該資料暫存器共享該第一資料結構之一項目的一位元,識別與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一第一識別符,以及識別一移動消除集合的一第二識別符。
於範例23中,範例22的該第一識別符與該第二識別符可由一公用資料欄位來表示。
於範例24中,範例18的該電腦可讀非暫時性儲存媒體可進一步包含可執行指令,導致該計算系統產生一第一信號及一第二信號,該第一信號識別具有被一分配的微操作重寫的一或多個邏輯暫存器的一移動消除集合,該第二信號指示用於該微操作的一目的地暫存器的共享使用。
於範例25中,範例18的該電腦可讀非暫時性儲存媒體可進一步包含可執行指令,導致該計算系統回應於判
定對應該旗標暫存器的一邏輯旗標暫存器係與一第一移動消除集合相關、該第一信號與該第一移動消除集合的識別符相配、以及該第二信號為假,而更新該第四資料結構以指示一旗標暫存器不再與一資料暫存器共享該第一資料結構的一元素。
詳細說明的一些部分係就一電腦記憶體中的資料位元上的操作的演算法及符號表示法而言來敘述。此等算法敘述及表示法為熟悉資料處理之技藝者所使用之方式,用以最有效地傳達他們工作的主旨給其他熟此技藝者。一演算法於此且一般被設想為導致一所欲結果之操作的自相容序列。該等操作為那些需要物理量的實體調處的操作。通常,儘管並非必然地,此等量採取能夠被儲存、傳送、合併、比對、以及以其他方式調處之電信號或磁信號。主要為了通用的原因,已證實將此等信號參照為位元、值、元素、符號、字元、詞、數字或其他相似有時是方便的。
然而,應該牢記於心的是,此等用語及相似用語全部是與適當的物理量相關,且僅為應用於此等量之方便的標號。除非特別陳述,否則如同從上文討論為明顯可察知的是,在整個敘述中,利用例如”加密”、”解密”、”儲存”、”提供”、”導出”、”得到”、”接收”、”鑑別”、”刪除”、”執行”、”請求”、”通信”、或相似用語之用語的討論,係參照至一計算系統或相似的電子計算裝置的動作及處理,該計算系統將在該計算系統的暫存器及記憶體之中被表示為物理(例如,電子)量的資料,調處並變換成為在該計算系統記憶體
或暫存器或其他此類資訊儲存器、傳輸或顯示裝置之中同樣被表示為物理量的其他資料。
該等文字”範例”或”範例的”於此係使用於表示作為一範例、實例、或例示說明的意思。於此敘述為”範例”或”範例的”的任何觀點或設計在其他觀點或設計方面並非必然被解釋為較佳的或有益的。反而,該等文字”範例”或”範例的”的使用係意欲以具體的方式來呈現概念。如使用於此申請案中,該用語”或”係意欲表示包括的”或”的意思,而非互斥的”或”。亦即,除非以其他方式具體說明,或者從上下文是清楚的,否則”X包括A或B”係意欲表示任何的自然包括性排列(natural inclusive permutations)的意思。亦即,若X包括A;X包括B;或X包括A及B兩者,那麼”X包括A或B”在任何上述例子的情況下為滿足的。此外,此申請案以及所附申請專利範圍中所使用的該等冠詞”一”及”壹”一般應被解釋為表示”一或多個”的意思,除非以其他方式具體說明或者從上下文清楚指出單數形式。再者,該用語”一實施例”或”一個實施例”或”一實施”或”一個實施”整篇的使用並非意欲表示相同的實施例或實施的意思,除非如此敘述。同樣地,於此使用的該等用語”第一”、”第二”、”第三”、”第四”、等等被表示為用以不同元件之間的區別的標號的意思,且根據其等數字的指定並非必定具有順序的意思。
於此所敘述的實施例亦可有關於用於實行該等操作的一設備。此設備可特別地建構用於該等所需要的目
的或者其可包含一通用電腦,通用電腦可選擇性地被儲存於該電腦中的一電腦程式啟動或重組態。此類電腦程式可儲存於一非暫時性電腦可讀取儲存媒體之中,例如,但不限於,包括軟磁碟、光碟、CD-ROMs以及磁光碟之任何類型的磁碟,唯讀記憶體(ROMs),隨機存取記憶體(RAMs),EPROMs,EEPROMs,磁卡或光學卡,快閃記憶體,或任何類型之適合用於儲存電子指令的媒體。該用語”電腦可讀取儲存媒體”應被理解為包括儲存一或多個指令集的一單一媒體或多個媒體(例如,集中式或分散式資料庫、及/或結合快取和伺服器)。該用語”電腦可讀取媒體”同樣應被理解為包括任何媒體,其能夠儲存、編碼、或攜載用於由該機械執行的一指令集,且其導致該機械實行本實施例的該等方法論中的任一者或多者。該用語”電腦可讀取儲存媒體”於是應被理解為包括,但不限於,固態記憶體、光學媒體、磁性媒體、能夠儲存儲存用於由該機械執行的一組媒體且導致該機械實行本實施例的該等方法論中的任一者或多者之任何媒體。
於此呈現的該等演算法以及顯示並非固然有關於任何特定的電腦或其他設備。各種通用系統可與依照此處教示的程式一起使用,或者其可證明便於建構一用以實行所需要的方法操作之更加專門的設備。對於此等系統的一變化所需要的結構將出現在下面的敘述中。此外,本實施例並非參照任何特定的程式語言來敘述。將可察知的是,程式語言的變化可被使用於實施於此所述之該等實施例的
教示。
為了提供數個實施例有很好的理解,上文敘述闡述了許多具體細節,例如具體系統、組件、方法、等等的範例。然而,對於熟此技藝者為顯而易見的是,至少一些實施例可在沒有此等具體細節的情況下被實施。於其他例子中,已知的組件或方法並未詳細敘述,或者以簡單的方塊圖的形式來呈現,以為了避免不必要地混淆本實施例。因此,上文闡述的該等具體細節僅為範例的。特定實施可能會與此等範例的細節不同,且仍被預期落在本實施例的範圍之中。
將可理解的是,上文敘述係意欲為例示說明的,而非限制的。閱讀並了解上文敘述後,許多其他實施例對於熟此技藝者將是顯而易見的。因而,本實施例的範圍應參照所附申請專利範圍和此類申請專利範圍所享有的等效的全部範圍一起來判定。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧內部快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形加速器
114‧‧‧加速圖形埠互連
116‧‧‧記憶體控制器集線器
118‧‧‧記憶體介面
120‧‧‧記憶體
122‧‧‧系統I/O
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧快閃BIOS
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
136‧‧‧音頻控制器
138‧‧‧串列擴充埠
140‧‧‧I/O控制器
142‧‧‧使用者輸入界面
Claims (20)
- 一種處理系統,其包含:一第一資料結構,其包括複數個實體暫存器值;一第二資料結構,其包括參照該第一資料結構之元素的複數個指標;一第三資料結構,其包括複數個移動消除集合,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元,該第三資料結構更包含與每一移動消除集合相關聯的至少一個位元,該至少一個位元表示一或多個邏輯旗標暫存器;一第四資料結構,其包括與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符;以及一移動移除邏輯,其被組態以藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作,該移動消除邏輯更被組態以使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構之元素的可用性。
- 如請求項1之處理系統,其中該移動消除邏輯可被組態以回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一旗標暫存器。
- 如請求項1之處理系統,其中該移動消除邏輯進一步被組態以檢測並收回具有僅僅一個非零位元的一移動 消除集合。
- 如請求項3之處理系統,其中該移動消除邏輯可被組態以回應於判定與該移動消除集合相關並且表示一邏輯旗標暫存器的至少一個位元具有一非零的值,而取消收回具有至少一個非零位元的一移動消除集合。
- 如請求項1之處理系統,其中該第四資料結構可包含:指示該移動消除集合之驗證的一位元,指示一邏輯旗標暫存器與該資料暫存器共享該第一資料結構之一項目的一位元,識別與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一第一識別符,以及識別一移動消除集合的一第二識別符。
- 如請求項5之處理系統,其中該第一識別符與該第二識別符係由一公用資料欄位來表示。
- 如請求項1之處理系統,其中該移動消除邏輯係進一步被組態以產生一第一信號及一第二信號,該第一信號識別具有被一分配的微操作重寫的一或多個邏輯暫存器的一移動消除集合,該第二信號指示用於該微操作的一目的地暫存器的共享使用。
- 如請求項7之處理系統,其中該移動消除邏輯係進一步被組態以回應於判定對應該旗標暫存器的一邏輯旗標暫存器係與一第一移動消除集合相關、該第一信號與該第一移動消除集合的識別符相配、以及該第二信號為假,而更新該第四資料結構,以指示一旗標暫存器不再與一資料暫存器共享該第一資料結構的一元素。
- 一種方法,其包含以下步驟:由一計算系統將複數個實體暫存器值儲存於一第一資料結構中;將參照該第一資料結構之元素的複數個指標儲存於一第二資料結構中;將複數個移動消除集合以及與每一移動消除集合相關的至少一個位元儲存於一第三資料結構中,該至少一個位元表示一或多個邏輯旗標暫存器,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元;將與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符儲存於一第四資料結構中;藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作;以及使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構之元素的可用性。
- 如請求項9之方法,其進一步包含回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一旗標暫存器。
- 如請求項9之方法,其進一步包含檢測並收回具有僅僅一個非零位元的一移動消除集合。
- 如請求項11之方法,其進一步包含回應於判定與該移動消除集合相關並且表示一邏輯旗標暫存器的至少 一個位元具有一非零的值,而取消具有至少一個非零位元的一移動消除集合之收回。
- 如請求項9之方法,其中該第四資料結構可包含:指示該移動消除集合之驗證的一位元,指示一邏輯旗標暫存器與該資料暫存器共享該第一資料結構之一項目的一位元,識別與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一第一識別符,以及識別一移動消除集合的一第二識別符。
- 如請求項13之方法,其中該第一識別符與該第二識別符可由一公用資料欄位來表示。
- 如請求項9之方法,其進一步包含產生一第一信號及一第二信號,該第一信號識別具有被一分配的微操作重寫的一或多個邏輯暫存器的一移動消除集合,該第二信號指示用於該微操作的一目的地暫存器的共享使用。
- 如請求項15之方法,其進一步包含回應於判定對應該旗標暫存器的一邏輯旗標暫存器係與一第一移動消除集合相關、該第一信號與該第一移動消除集合的識別符相配、以及該第二信號為假,而更新該第四資料結構,以指示一旗標暫存器不再與一資料暫存器共享該第一資料結構的一元素。
- 一種電腦可讀非暫時性儲存媒體,其包含可執行指令,當該等複數個可執行指令被一計算系統執行時,會導致該計算系統實行下列操作,包含:由一計算系統將複數個實體暫存器值儲存於一第一資 料結構中;將參照該第一資料結構之元素的複數個指標儲存於一第二資料結構中;將複數個移動消除集合以及與每一移動消除集合相關的至少一個位元儲存於一第三資料結構中,該至少一個位元表示一或多個邏輯旗標暫存器,每一移動消除集合包含表示二或更多個邏輯資料暫存器的二或更多個位元;將與一旗標暫存器共享該第一資料結構之一元素的一資料暫存器的一識別符儲存於一第四資料結構中;藉由導致該第二資料結構的一元素參照該第一資料結構的一元素來執行一移動消除操作;以及使用該第三資料結構與該第四資料結構中的至少一者來追蹤該第一資料結構之元素的可用性。
- 如請求項17之電腦可讀非暫時性儲存媒體,其進一步包含可執行指令,導致該計算系統回應於下列中的至少一者而改變該第三資料結構中的一旗標位元的值:建立一新的移動消除集合,將一暫存器增加至一移動消除集合,或者將新的資料寫至該第一資料結構中的一旗標暫存器。
- 如請求項17之電腦可讀非暫時性儲存媒體,其進一步包含可執行指令,導致該計算系統檢測並收回具有僅僅一個非零位元的一移動消除集合。
- 如請求項19之電腦可讀非暫時性儲存媒體,其進一步包含可執行指令,導致該計算系統回應於判定與該 移動消除集合相關並且表示一邏輯旗標暫存器的至少一個位元具有一非零的值,而取消具有至少一個非零位元的一移動消除集合之收回。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/861,009 US9292288B2 (en) | 2013-04-11 | 2013-04-11 | Systems and methods for flag tracking in move elimination operations |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201506797A TW201506797A (zh) | 2015-02-16 |
TWI528291B true TWI528291B (zh) | 2016-04-01 |
Family
ID=51687620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103112305A TWI528291B (zh) | 2013-04-11 | 2014-04-02 | 用於在移動消除操作中旗標追蹤之系統與方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9292288B2 (zh) |
EP (1) | EP2984557B1 (zh) |
KR (1) | KR101655713B1 (zh) |
CN (1) | CN105190538B (zh) |
BR (1) | BR112015022683B1 (zh) |
RU (1) | RU2628156C2 (zh) |
TW (1) | TWI528291B (zh) |
WO (1) | WO2014169032A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823925B2 (en) * | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
US11221853B2 (en) | 2015-08-26 | 2022-01-11 | Huawei Technologies Co., Ltd. | Method of dispatching instruction data when a number of available resource credits meets a resource requirement |
US10853077B2 (en) * | 2015-08-26 | 2020-12-01 | Huawei Technologies Co., Ltd. | Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability |
US10198264B2 (en) * | 2015-12-15 | 2019-02-05 | Intel Corporation | Sorting data and merging sorted data in an instruction set architecture |
US20170177336A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Hardware cancellation monitor for floating point operations |
US10261790B2 (en) * | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
US10114768B2 (en) * | 2016-08-29 | 2018-10-30 | Intel Corporation | Enhance memory access permission based on per-page current privilege level |
US10713177B2 (en) | 2016-09-09 | 2020-07-14 | Intel Corporation | Defining virtualized page attributes based on guest page attributes |
US11093414B2 (en) * | 2016-09-28 | 2021-08-17 | Intel Corporation | Measuring per-node bandwidth within non-uniform memory access (NUMA) systems |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
US10949205B2 (en) | 2018-12-20 | 2021-03-16 | International Business Machines Corporation | Implementation of execution compression of instructions in slice target register file mapper |
CN112286577B (zh) * | 2020-10-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法 |
CN117555600B (zh) * | 2023-10-20 | 2024-08-23 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499352A (en) | 1993-09-30 | 1996-03-12 | Intel Corporation | Floating point register alias table FXCH and retirement floating point register array |
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
US5838941A (en) | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
US6341370B1 (en) * | 1998-04-24 | 2002-01-22 | Sun Microsystems, Inc. | Integration of data prefetching and modulo scheduling using postpass prefetch insertion |
US6122656A (en) * | 1998-07-31 | 2000-09-19 | Advanced Micro Devices, Inc. | Processor configured to map logical register numbers to physical register numbers using virtual register numbers |
US6253310B1 (en) * | 1998-12-31 | 2001-06-26 | Intel Corporation | Delayed deallocation of an arithmetic flags register |
US6594754B1 (en) * | 1999-07-07 | 2003-07-15 | Intel Corporation | Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters |
US6625723B1 (en) * | 1999-07-07 | 2003-09-23 | Intel Corporation | Unified renaming scheme for load and store instructions |
US6505293B1 (en) | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6591332B1 (en) | 2000-04-28 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Apparatus and method for tracking flushes of cache entries in a data processing system |
US7155599B2 (en) * | 2000-12-29 | 2006-12-26 | Intel Corporation | Method and apparatus for a register renaming structure |
US6772317B2 (en) * | 2001-05-17 | 2004-08-03 | Intel Corporation | Method and apparatus for optimizing load memory accesses |
US6889344B2 (en) | 2001-08-09 | 2005-05-03 | International Business Machines Corporation | System and method for exposing hidden events on system buses |
US6910121B2 (en) | 2002-01-02 | 2005-06-21 | Intel Corporation | System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions |
US20030217249A1 (en) * | 2002-05-20 | 2003-11-20 | The Regents Of The University Of Michigan | Method and apparatus for virtual register renaming to implement an out-of-order processor |
US20050050310A1 (en) | 2003-07-15 | 2005-03-03 | Bailey Daniel W. | Method, system, and apparatus for improving multi-core processor performance |
US7711898B2 (en) * | 2003-12-18 | 2010-05-04 | Intel Corporation | Register alias table cache to map a logical register to a physical register |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
WO2009076324A2 (en) | 2007-12-10 | 2009-06-18 | Strandera Corporation | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
US8799882B2 (en) * | 2005-12-07 | 2014-08-05 | Microsoft Corporation | Compiler support for optimizing decomposed software transactional memory operations |
US7721119B2 (en) | 2006-08-24 | 2010-05-18 | International Business Machines Corporation | System and method to optimize multi-core microprocessor performance using voltage offsets |
TWI342498B (en) | 2007-01-12 | 2011-05-21 | Asustek Comp Inc | Multi-processor system and performance enhancement method thereof |
US20090327661A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US8914617B2 (en) | 2009-12-26 | 2014-12-16 | Intel Corporation | Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register |
US20120005459A1 (en) | 2010-12-28 | 2012-01-05 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via move elimination |
US8661230B2 (en) * | 2011-04-15 | 2014-02-25 | International Business Machines Corporation | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
US9298460B2 (en) * | 2011-11-29 | 2016-03-29 | International Business Machines Corporation | Register management in an extended processor architecture |
US9454371B2 (en) * | 2011-12-30 | 2016-09-27 | Intel Corporation | Micro-architecture for eliminating MOV operations |
US9733939B2 (en) * | 2012-09-28 | 2017-08-15 | Intel Corporation | Physical reference list for tracking physical register sharing |
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
US9182986B2 (en) * | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
US9256433B2 (en) * | 2013-03-15 | 2016-02-09 | Intel Corporation | Systems and methods for move elimination with bypass multiple instantiation table |
US9823925B2 (en) * | 2014-03-28 | 2017-11-21 | Intel Corporation | Instruction and logic for a logical move in an out-of-order processor |
-
2013
- 2013-04-11 US US13/861,009 patent/US9292288B2/en active Active
-
2014
- 2014-04-02 TW TW103112305A patent/TWI528291B/zh not_active IP Right Cessation
- 2014-04-09 CN CN201480014563.4A patent/CN105190538B/zh active Active
- 2014-04-09 WO PCT/US2014/033486 patent/WO2014169032A1/en active Application Filing
- 2014-04-09 KR KR1020157024506A patent/KR101655713B1/ko active IP Right Grant
- 2014-04-09 RU RU2015138900A patent/RU2628156C2/ru not_active IP Right Cessation
- 2014-04-09 EP EP14782269.6A patent/EP2984557B1/en active Active
- 2014-04-09 BR BR112015022683-3A patent/BR112015022683B1/pt not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
WO2014169032A1 (en) | 2014-10-16 |
BR112015022683A2 (pt) | 2018-07-31 |
CN105190538B (zh) | 2018-11-09 |
US20140310504A1 (en) | 2014-10-16 |
KR101655713B1 (ko) | 2016-09-07 |
BR112015022683B1 (pt) | 2021-12-21 |
EP2984557A4 (en) | 2017-12-20 |
US9292288B2 (en) | 2016-03-22 |
RU2628156C2 (ru) | 2017-08-15 |
CN105190538A (zh) | 2015-12-23 |
TW201506797A (zh) | 2015-02-16 |
EP2984557B1 (en) | 2020-03-04 |
RU2015138900A (ru) | 2017-03-16 |
KR20150119038A (ko) | 2015-10-23 |
EP2984557A1 (en) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI528291B (zh) | 用於在移動消除操作中旗標追蹤之系統與方法 | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
US9495159B2 (en) | Two level re-order buffer | |
CN108351830B (zh) | 用于存储器损坏检测的硬件装置和方法 | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
US9823925B2 (en) | Instruction and logic for a logical move in an out-of-order processor | |
US20150278097A1 (en) | Instruction and Logic for Reducing Data Cache Evictions in an Out-Of-Order Processor | |
US10514927B2 (en) | Instruction and logic for sorting and retiring stores | |
US20140281236A1 (en) | Systems and methods for implementing transactional memory | |
US10540178B2 (en) | Eliminating redundant stores using a protection designator and a clear designator | |
CN105760139A (zh) | 用于测试事务性执行状态的指令和逻辑 | |
US9652236B2 (en) | Instruction and logic for non-blocking register reclamation | |
US20160306742A1 (en) | Instruction and logic for memory access in a clustered wide-execution machine | |
US20180004526A1 (en) | System and Method for Tracing Data Addresses | |
JP2024527169A (ja) | マルチストランドアウトオブオーダプロセッサにおいてリタイア可能な複数の命令を特定する命令及びロジック | |
US20180004512A1 (en) | System and Method for Out-of-Order Clustered Decoding | |
US10133620B2 (en) | Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit | |
CN107408035B (zh) | 用于缕程间通信的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |