TWI436272B - 微處理器及其執行之方法 - Google Patents
微處理器及其執行之方法 Download PDFInfo
- Publication number
- TWI436272B TWI436272B TW099117546A TW99117546A TWI436272B TW I436272 B TWI436272 B TW I436272B TW 099117546 A TW099117546 A TW 099117546A TW 99117546 A TW99117546 A TW 99117546A TW I436272 B TWI436272 B TW I436272B
- Authority
- TW
- Taiwan
- Prior art keywords
- prefetch
- instruction
- memory
- cache
- microprocessor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 28
- 238000012546 transfer Methods 0.000 claims description 23
- 239000000872 buffer Substances 0.000 claims description 21
- 238000013519 translation Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 2
- 238000012545 processing Methods 0.000 claims 3
- 230000008569 process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012432 intermediate storage Methods 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 235000009854 Cucurbita moschata Nutrition 0.000 description 1
- 240000001980 Cucurbita pepo Species 0.000 description 1
- 235000009852 Cucurbita pepo Nutrition 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 235000020354 squash Nutrition 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- 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, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
本發明係有關於微處理器之資料預取(data prefetching),特別是有關於微處理器之指令預取。
重複資料串搬移(REP MOVS)巨指令是x86指令集架構中常被頻繁執行的巨指令。此巨指令命令微處理器將資料串由記憶體內的來源位置搬移至記憶體內的目標位置。此指令可以微碼(microcode)來實現。假使被搬移之位元組的數量相對地較大,則微碼可以利用”快速資料串搬移(fast string move)”的微碼常式(routine)來實現該巨指令。此快速資料串搬移微碼常式執行複數載入-儲存(load-store)微操作(micro-op)組(pairs)的序列。快速資料串搬移微碼常式試圖執行大量的載入與儲存微操作(例如16位元組),這是因為載入與儲存微操作之效率較高,換言之,載入與儲存微操作可處理的資料量大於REP MOVS[B/W/D/Q](即位元組/字元組/雙字元組/四字元組)所指定之每一資料單位。
然而,由於載入微操作所指定的系統記憶體快取列讀取具有較長的延遲,因此載入微操作通常會未命中快取記憶體而導致REP MOVS巨指令相對變慢。
本發明提供一種微處理器,包括快取記憶體、指令組以及記憶體子系統。指令組包括第一預取指令與第二預取指令,第一預取指令與第二預取指令中每一者用來命令微處理器自系統記憶體預取資料快取列至快取記憶體。記憶體子系統用來執行第一預取指令與第二預取指令。對於第一預取指令,記憶體子系統根據既定情況組而放棄自系統記憶體預取資料快取列至快取記憶體。對於第二預取指令,記憶體子系統根據既定情況組來完成自系統記憶體預取資料快取列至快取記憶體。
本發明另提供一種微處理器,包括快取記憶體及微碼單元。微碼單元包含一微碼,該微碼用來實現一架構性重複資料串搬移指令。該微碼包括複數保證預取-載入-儲存指令組的序列。微處理器更包括記憶體子系統,用來執行保證預取、載入、及儲存指令,甚至在既定情況組存在且當記憶體子系統將非保證預取指令僅視為暗示時,用來將保證預取指令所指定之快取列的資料預取至快取記憶體。
本發明又提供一種微處理器,包括快取記憶體及微碼單元。微碼單元包含一微碼,該微碼用來實現一架構性重複資料串搬移指令,且微碼包括複數個載入指令與儲存指令,用以將資料串由來源記憶體位置搬移至目標記憶體位置。微碼更包括複數個預取指令,這些預取指令遠遠領先載入指令,以增加快取列在被載入指令存取前出現在該快取記憶體的可能性。微處理器更包括記憶體子系統,用來執行預取、載入、與儲存指令。記憶體子系統用來偵測預取指令之中的一者所指示的記憶體位址於微處理器之轉譯後備緩衝器中未命中的情況,且相應地通知微碼單元該轉譯後備緩衝器的未命中。
本發明也提供一種由微處理器所執行之方法。微處理器包括快取記憶體以及指令組,且指令組具有複數個第一預取指令與第二預取指令。該方法包括當執行第一預取指令時,偵測預設情況組中之中的一者或多個是否存在。第一預取指令命令該微處理器自系統記憶體預取第一資料快取列至快取記憶體。該方法也包括當執行第一預取指令時,偵測到預設情況組中之一者或多個存在時,放棄自系統記憶體預取第一資料快取列至快取記憶體之步驟。該方法也包括當執行第二預取指令時,偵測預設情況組中之中的一者或多個是否存在。第二預取指令命令微處理器自系統記憶體預取第二資料快取列至快取記憶體。該方法更包括當執行第二預取指令時,偵測到預設情況組中之一者或多個存在時,完成自系統記憶體預取第二資料快取列至快取記憶體之步驟。
本發明另提供一種由微處理器所執行之方法。微處理器包括快取記憶體。該方法包括解碼架構性重複資料串搬移指令。該方法也包括相應於對架構性重複資料串搬移指令進行解碼之步驟,執行複數保證預取-載入-儲存指令組的序列。執行該等保證預取-載入-儲存指令組的序列之步驟包括甚至在既定情況組存在時且當記憶體子系統將複數非保證預取指令僅視為暗示時,預取由該等保證預取-載入-儲存指令組的序列所指定之快取記憶體之複數快取列。
本發明更提供一種由微處理器所執行之方法。微處理器包括快取記憶體。該方法包括對架構性重複資料串搬移指令進行解碼。該方法也包括相應於對架構性重複資料串搬移指令進行解碼之步驟,執行複數載入指令與儲存指令,以將資料串由來源記憶體位置搬移至目標記憶體位置。該方法也包括在執行載入指令之前,執行複數預取指令,以增加複數快取列在被載入指令處理前出現在快取記憶體的可能性。該方法更包括偵測預取指令之一者正指示出一記憶體位址於微處理器之轉譯後備緩衝器中未命中的情況,且相應地導致微碼單元被通知轉譯後備緩衝器的未命中。
為使本發明之上述目的、特徵和優點能更明顯易懂,下文特舉一較佳實施例,並配合所附圖式,作詳細說明如下。
發明人認為假使能以某種方式使載入操作命中(hit)第1圖之資料快取記憶體124,則第1圖之微處理器100可更快速地執行資料串搬移。發明人試圖藉由隱藏與載入操作相關的記憶體存取延遲來達到快速資料串搬移。而隱藏的方式是在微碼中加入預取微指令,此預取微指令可在載入操作之前先預取資料串中即將會需要的部分至資料快取記憶體124。然而,發明人注意到記憶體子系統把一般預取操作僅視為暗示(hint)。也就是說,在某些情況下記憶體子系統會放棄預取快取列至資料快取記憶體124。例如,當第1圖之填充佇列(fill queue)122被填滿時(即填充佇列122的所有項目(entries)現在都被配置)、需要執行頁表查找(tablewalk)、遭遇序列(serialize)執行的情況(例如預取操作位於一序列指令之後,例如鎖定操作)、或是預取之位址與儲存操作或監測(snoop)操作的位址發生衝突(address-collision)。當這些情況其中一者發生時,指定的快取列不會被預取至快取記憶體,這通常導致了載入操作開始未命中於快取記憶體,進而使資料串搬移再次變慢。
在瞭解到微處理器100十分需要將資料預取至資料快取記憶體124,發明人將一保證預取(guaranteed prefetch,gprefetch)微指令加入第1圖的快速資料串搬移微碼142所能使用的微指令組。保證預取微指令與一般預取微指令的相異之處在於,只要指令架構允許,在幾乎任何情況下,保證預取微指令都能保證特定快取列會被擷取至至資料快取記憶體124。
第2圖之表單列出在不同情況下執行一保證預取微指令時,記憶體子系統112所執行的動作。
(1)假使保證預取微指令正預取之記憶體頁面(page)的記憶體特性為不可快取(uncacheable),由於指令架構不允許預取不可快取的記憶體頁面,因此記憶體子系統112不會預取快取列,但是相對地會致使保證預取微指令產生例外處理程序(exception),讓微碼單元118可以一般方式來執行資料串搬移,也就是非預取的方式。
(2)假使填充佇列122被填滿時,記憶體子系統112將使保證預取微指令被重新執行(replay),直到填充佇列122之一項目可被成功地配置。
(3)假使保證預取微指令與儲存操作或監測操作發生衝突(例如存取同一位址)時,記憶體子系統112將使保證預取微指令被重新執行,直到不再有衝突發生。
(4)假使記憶體子系統112遭遇一序列執行的情況,其將重新執行保證預取微指令。
(5)假使保證預取微指令的虛擬位址未命中於第1圖之轉譯後備緩衝器(Translation Lookaside Buffer,TLB)144中,記憶體子系統112不會預取快取列,且將使保證預取微指令產生一個例外處理程序。藉由產生由微碼單元118所處理的例外處理程序,記憶體子系統112致使記憶體子系統112執行頁表查找,之後再使快速資料串搬移微碼重新載入執行(re-prime the pump)。否則的話,尤其是如果TLB 144的未命中是發生在之保證預取-載入-儲存微指令組(gprefetch-load-store triplets)的迴圈主體(loop body)時(參閱第3圖與下文討論),與保證預取微指令相關的記憶體存取延遲可能無法被隱藏,使得對應的載入微指令將未命中快取記憶體。然而,此例外處理程序會導致管線中較晚於保證預取微指令的任何微指令被清除(flushed),包括保證預取-載入-儲存微指令組在內。一般來說,在下列情況之下,快速資料搬移微碼不需要重新執行,例如填充佇列122為填滿的、與儲存指令/監測指令發生衝突、或是在序列執行的情況下。因此,在這些情況下記憶體子系統112不會產生例外處理程序,而是重新執行保證預取微指令。在其他實施例中,當保證預取微指令的虛擬位址未命中TLB 144時,記憶體子系統112執行頁表查找並重新執行保證預取微指令。
如第3圖所示,為了在載入微指令執行之前將資料預取至資料快取記憶體124內,快速資料串搬移微碼142經改良加入一保證預取微指令至載入-儲存微指令組,以建立保證預取-載入-儲存微指令組。由於保證預取微指令通常會有相對較長的系統記憶體存取延遲,因此快速資料串搬移微碼142在開始保證預取-載入-儲存微指令組之前,還包含了一些額外的初始保證預取微指令使系統記憶體存取延遲可減少(在第3圖之實施例中為5個保證預取微指令)。快速資料串搬移微碼142的程式設計應試圖把這些初始保證預取微指令放置在時間上充分領先於保證預取-載入-儲存微指令組之迴圈主體的位置,使得初始保證預取微指令所指定的快取列之資料,在載入操作進入記憶體子系統之前就已經預取至資料快取記憶體124,進而使載入操作可命中於資料快取記憶體124。也就是說,快速資料串搬移微碼142的程式設計應試圖在初始保證預取微指令與保證預取-載入-儲存微指令組迴圈主體之間放置足夠的其他指令,使得在載入操作到達時,初始保證預取微指令所預取的快取列已位於資料快取記憶體124內。因此,在迴圈的尾端(end),快速資料串搬移微碼142包括與初始保證預取微指令數量對應的載入-儲存微指令組(不包括保證預取微指令)(例如5組載入-儲存微指令組),以與預先執行之初始保證預取微指令同步(sync up)。在一實施例中,一快取列為64位元組,且每一載入/儲存操作是16位元組。因此,雖然第3圖之範例的微碼序列有5組載入-儲存微指令組,但是實際上共有5組64位元組的載入-儲存微指令組,意即有5組微指令組,且每一組為4個16位元組的載入-儲存微指令組。對於效能來說,保證預取微指令必須位在載入操作之前,並且必須將指定的快取列讀入資料快取記憶體124,使載入操作可命中資料快取記憶體124,這點是很重要的。這就是為什麼保證預取微指令必須保證其完成度,甚至在需要時重新執行,或者至少要引發例外處理程序使快速資料串搬移微碼142有機會重新執行快速資料串搬移(例如在未命中TLB 144的情況下)是如此重要。這也是為什麼一般預取微指令在操作上有所不足,因為一般預取微指令僅被視為暗示。在一實施例中,每一保證預取、載入、與儲存操作都會更新各自的位址,分別是prefetch_address、load_address、及store_address。
現在參閱第1圖,其示意本發明一實施例之微處理器100的方塊圖。微處理器100是一個管線微處理器(pipelined microprocessor),包括指令快取記憶體102。指令快取記憶體102用以快取複數個程式指令,在此處也稱為巨指令(macroinstructions)132。指令快取記憶體102提供巨指令132至指令轉譯器104。指令轉譯器104對每一巨指令132進行解碼,且將大部分的巨指令132轉譯為一或多個微指令134。轉譯後的微指令134可包括一般預取(normal prefetch)微指令等等。此外,在一實施例中,微處理器100的指令組架構包括重複資料串搬移巨指令132,其可包括在使用者程式內,細節將於後文描述。指令轉譯器104用以識別哪些巨指令132會被實現於存放於微處理器100之微碼單元118的微碼142。當指令轉譯器104遇到實現於微碼142的巨指令132時,指令轉譯器104將轉移控制權至微碼單元118之微定序器(microsequencer)(未顯示),其中該微定序器自微碼單元118之微碼記憶體(未顯示)內擷取微碼142的複數個微指令136,並分派(dispatch)這些微指令136以供執行。值得一提的是,微碼142包括用以實現重複資料串搬移巨指令132的程式碼(此處稱為快速資料串搬移微碼142),例如x86架構的REP MOVS巨指令。此重複資料串搬移巨指令132使用到保證預取微指令。微指令136可包括載入、儲存、以及保證預取微指令等等。
一暫存器別名表(register alias table,RAT)106接收來自指令轉譯器104的轉譯後微指令134以及來自微碼單元118的快速資料串搬移微碼142中的微指令136,且RAT 106產生微指令134和136的相依性(dependencies)。在一實施例中,微處理器100是一個非循序(out-of-order)執行的微處理器,且RAT 106是微處理器100管線中按程序順序接收微指令的最後管線部分。RAT 106整合(incorporate)微指令的程序順序,而該程序順序被重排序緩衝器(reorder buffer,ROB)116用以根據程式順序來引退微指令134和136。RAT 106在分派微指令134和136給保留站(reservation station)108之前,會先依照程式順序在ROB 116內配置一項目給每一個微指令134和136。ROB 116耦接至RAT 106、保留站108、複數個執行單元與記憶體子系統112、以及引退單元114。
保留站108接收來自RAT 106之微指令134和136,並根據RAT 106所產生的相依性資訊判斷微指令134和136的來源運算元是否為可用(available),且複數個執行單元112也可用時,保留站108將微指令134和136發佈至複數個執行單元112。微處理器100也包括複數個一般目的暫存器(general purpose register,GPR)138,其被微指令134和136所使用,作為快速資料串搬移微碼142所搬移之資料串的中間儲存位置(intermediate storage locations)。引退單元114按照微指令134和136在ROB 116內的程式順序來引退微指令134和136。值得一提的是,引退單元114會檢查在ROB 116內最舊的指令之項目的複數個旗標,以判斷微指令134和136是否需要被重新執行,或判斷是否需要引發例外處理程序。
記憶體子系統112包括轉譯後備緩衝器(Translation Lookaside Buffer,TLB)144、資料快取記憶體124、填充佇列122、匯流排介面單元(bus interface unit,BIU)126、以及控制邏輯單元128,其中,控制邏輯單元128耦接於TLB 144、資料快取記憶體124、填充佇列122、以及BIU 126。BIU 126將微處理器100介接至一處理器匯流排,該處理器匯流排耦接至微處理器100所在(reside)之電腦系統的系統記憶體(未顯示)。系統記憶體儲存重複資料串搬移巨指令132所要搬移的資料串,此資料串是由一來源位址搬移至重複資料串搬移巨指令132所指定之目標位址。TLB 144提供記憶體頁面之虛擬至實體位址轉換的快取。資料快取記憶體124提供自系統記憶體所讀取之資料的快取,例如重複搬移資料串巨指令132的資料串。填充佇列122具有一定數量之快取列緩衝器,每一快取列緩衝器可由記憶體子系統112來分別配置,以接收BIU 126自系統記憶體讀出的快取列,例如由保證預取微指令所預取之一快取列的資料串,該資料串為重複搬移資料串巨指令132所指定的。由於保證預取微指令不會將資料載入至微處理器100的架構暫存器,因此最好由記憶體子系統112來完成保証預取微指令,並接著釋放出記憶體子系統112的資源。一旦記憶體子系統112確定任何會防止其預取由保證預取微指令所指定的快取列之情況存在時,可配置填充佇列122的一個快取列緩衝器給該快取列。此外,當此保證預取微指令成為微處理器100中最舊的指令時,引退單元114會立刻引退此保證預取微指令,以利有效地釋放先前配置給該保證預取微指令的ROB 116項目。
記憶體子系統112可執行保證預取微指令、一般預取微指令、載入微指令、以及儲存微指令等等。在某些情況下,如第2圖之表單所示,記憶體子系統112可能想要致使微處理器100重新執行某個微指令(例如一保證預取微指令),或者致使微處理器100引發例外處理程序來回應某一微指令。為了完成重新執行,記憶體子系統112對保證預取微指令所對應之ROB 116項目設定一重新執行旗標,以示意此保證預取微指令必須重新執行。接著,當此保證預取微指令準備引退時(例如此保證預取微指令為ROB 116中最舊的指令),ROB 116重新執行保證預取微指令,並且將晚於此微指令的所有微指令返回至保留站108,使得其來源運算元被重新擷取,並重新發佈被返回的微指令至執行單元與記憶體子系統112來執行。為了完成例外處理程序,記憶體子系統112對保證預取微指令所對應之ROB 116項目設定一例外旗標,以示意此保證預取微指令引發例外狀況(exception condition)。接著,當保證預取微指令準備引退時,ROB 116引發一例外處理程序,由微碼單元118中的例外處理管理程序(exception handler)執行,以將例外狀況傳達給快速資料串搬移微碼142。
現在參閱第4圖,其示意第1圖之微處理器100的操作流程之一實施例。流程開始於步驟402。
在步驟402中,記憶體子系統112正執行一預取微指令(可以是保證預取微指令或是一般預取微指令),且遭遇一狀況,例如第2圖之表單所表示的情況,記憶體子系統112無法將指定的快取列擷取到資料快取記憶體124。
流程前進至步驟404
在步驟404中,記憶體子系統112判斷該預取微指令的類型。如果此預取微指令是保證預取微指令,流程前進至判斷步驟408;反之,如果此預取微指令是一般預取微指令,流程則前進至步驟406。
在步驟406中,記憶體子系統112壓制(squash)此一般預取微指令。也就是說,記憶體子系統112不會在處理器匯流排135上產生資料傳輸(transaction)以讀取一般預取微指令所指定的快取列,並允許此一般預取微指令可正常地引退。換句話說,記憶體子系統112將此一般預取微指令視為一暗示,並且在此狀況下把它當作無操作(no-op)微指令來執行。於一實施例中,在一般預取微指令所指定之快取列位置未命中TLB 144的情況下,記憶體子系統112會執行頁表查找,並接著重新執行此一般預取微指令,而不是壓制它。一般預取微指令的流程結束於步驟406。
如果此預取微指令為保證預取微指令,在判斷步驟408中,記憶體子系統112判斷步驟402所遭遇到的情況是否為,保證預取微指令所指定的位址落在具有不可快取特性的記憶體區域內。如果是的話,流程前進至步驟412;反之,流程前進至判斷步驟414。
在步驟412中,記憶體子系統112放棄預取該快取列,並對此保證預取微指令所對應之ROB 116項目設定例外旗標,使得此保證預取微指令接續引發例外處理程序。如此一來會使得快速資料串搬移微碼142藉助於程式碼的非預取版本來實現重複資料串搬移巨指令132。在此應注意,在步驟412與416中藉由對ROB 116的項目設定例外旗標所引發的例外處理程序並非架構性例外處理程序(architectural exception),而是微處理器100之內部微例外處理程序(micro-exception)。也就是說,在內部微例外處理程序的情況下,快速資料串搬移微碼142不會將控制權轉移至系統軟體。例外處理程序的流程結束於步驟412。
在步驟414中,記憶體子系統112判斷在步驟402中所遭遇到的情況是否為保證預取微指令所指定的位址未命中TLB 114。如果是的話,流程前進至步驟416;反之,流程前進至步驟418。
若保證預取微指令所指定的位址未命中TLB 114,在步驟416中,記憶體子系統112放棄預取該快取列,並對此保證預取微指令所對應之ROB 116項目設定例外旗標,使得此保證預取微指令接續引發例外處理程序。此例外處理程序導致微處理器100管線中較晚於此保證預取微指令的任何微指令136被清除,包括第3圖之保證預取-載入-儲存微指令組。接著,快速資料串搬移微碼142執行一微指令以引發頁表查找的執行,藉此獲得記憶體頁面之虛擬至實體位址轉換,此記憶體頁面包含保證預取微指令所指定之快取列位址。此外,第3圖的快速資料串搬移微碼142會回復執行(resume),重新載入微指令並利用保證預取微指令來執行快速資料串搬移。在本發明另一實施例中,當發生未命中TLB時,記憶體子系統112會執行頁表查找,並接著以類似步驟418所敘述之方式來重新執行保證預取微指令,而不是致使記憶體子系統112產生例外處理程序。未命中TLB的流程結束於步驟416。
如果保證預取微指令所指定的位址命中TLB 114,在步驟418中,記憶體子系統112對保證預取微指令所對應之ROB 116項目設定重新執行旗標,使得保證預取微指令可接續被重新執行。在許多情況中,當保證預取微指令被重新執行時,狀況可被排除(即填充佇列122的項目為可用的、位址衝突不再存在、或是序列指令被引退),使得記憶體子系統112可立即重新執行保證預取微指令,當對應之載入微指令到達記憶體子系統112時,快取列之資料已即時放入資料快取記憶體124。命中TLB的流程結束於步驟418。
在一實施例中,可考慮將一保證預取指令加入至微處理器100之指令組架構內,以供使用者程式使用,如同快速資料串搬移微碼142所使用的保證預取微指令。
將保證預取微指令加入微指令組的優點在於,由於當載入微指令執行時,所搬移的資料較可能命中於資料快取記憶體124,因此微碼單元118可較快速地執行REP MOVE指令。
本發明的不同實施例已於本文敘述,但本領域具有通常知識者應能瞭解這些實施例僅作為範例,而非限定於此。本領域具有通常知識者可在不脫離本發明之精神的情況下,對形式與細節上做不同的變化。例如,軟體可致能本發明實施例所述的裝置與方法之功能、組建(fabrication)、塑造(modeling)、模擬、描述(description)、以及/或測試。可透過一般程式語言(C、C++)、硬體描述語言(Hardware Description Languages,HDL)(包括Verilog HDL、VHDL等等)、或其他可利用的程式語言來完成。此軟體可配置在任何已知的電腦可使用媒介,例如半導體、磁碟、或光碟(例如CD-ROM、DVD-ROM等等)。本發明所述之裝置與方法實施例可被包括於半導體智慧財產核心,例如微處理器核心(以HDL來實現),並轉換成積體電路產品的硬體。此外,本發明所述之裝置與方法可實現為硬體與軟體的結合。因此,本發明不應侷限於所揭露之實施例,而是依後附之申請專利範圍與等同實施所界定。特別是,本發明可實施在使用於一般用途電腦中的微處理器裝置內。最後,本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100‧‧‧微處理器
102‧‧‧指令快取記憶體
104‧‧‧指令轉譯器
106‧‧‧RAT
108‧‧‧保留站
114‧‧‧引退單元
112‧‧‧複數執行單元與記憶體子系統
116‧‧‧重排序緩衝器(ROB)
118‧‧‧微碼單元
122‧‧‧填充佇列
124‧‧‧資料快取記憶體
126‧‧‧匯流排介面單元(BIU)
128‧‧‧控制邏輯單元
132‧‧‧重複資料串搬移巨
指令
134、136‧‧‧微指令
135‧‧‧處理器匯流排
138‧‧‧一般目的暫存器(GPR)
142‧‧‧快速資料串搬移微碼
144‧‧‧轉譯後備緩衝器(TLB)
402、404、406、408、412、414、416、418‧‧‧方法步驟
第1圖繪示本發明一實施例之微處理器的方塊圖;第2圖之表單示意第1圖之記憶體子系統在不同情況下執行保證預取微指令時,記憶體子系統所執行之動作;第3圖示意第1圖之微處理器的快速資料串搬移微碼一實施例的部分序列;以及第4圖示意第1圖之微處理器的操作流程圖。
100...微處理器
102...指令快取記憶體
104...指令轉譯器
106...RAT
108...保留站
114...引退單元
112...執行單元與記憶體子系統
116...重排序緩衝器(ROB)
118...微碼單元
122...填充佇列
124...資料快取記憶體
126...匯流排介面單元(BIU)
128...控制邏輯單元
132...重複資料串搬移巨指令
134、136...微指令
135...處理器匯流排
138...一般目的暫存器(GPR)
142...快速資料串搬移微碼
144...轉譯後備緩衝器(TLB)
Claims (16)
- 一種微處理器,包括:一快取記憶體;一指令組,包括一第一預取指令與一第二預取指令,該第一預取指令與該第二預取指令中每一者用來命令該微處理器自一系統記憶體預取一資料快取列至該快取記憶體;以及一記憶體子系統,用來執行該第一預取指令與該第二預取指令,其中,對於該第一預取指令,該記憶體子系統根據一第一既定情況組而放棄自該系統記憶體預取該資料快取列至該快取記憶體;其中,對於該第二預取指令,該記憶體子系統根據該第一既定情況組來完成自該系統記憶體預取該資料快取列至該快取記憶體;其中對於該第一預取指令,該記憶體子系統根據一第二既定情況組而放棄自系統記憶體預取該資料快取列至該快取記憶體,以及對於該第二預取指令,該記憶體子系統根據該第二既定情況組引發一例外處理程序。
- 如申請專利範圍第1項所述之微處理器,其中,該指令組為一微架構指令組。
- 如申請專利範圍第1項所述之微處理器,其中,根據該第一既定情況組,該記憶體子系統藉由重新執行該第二預取指令來完成自系統記憶體預取該資料快取列至該快取記憶體。
- 如申請專利範圍第1項所述之微處理器,其中該第一既定情況組包括以下其中一者:該微處理器之一填充佇列被填滿,該填充佇列具有一既定數量的儲存元件,用以接收來自該系統記憶體之複數個快取列;一位址衝突發生在該第一預取指令與該第二預取指令所指定之該資料快取列之一位址與該微處理器內待處理中較舊的一儲存操作之間;一位址衝突發生在該第一預取指令與該第二預取指令所指定之該資料快取列之一位址與該微處理器內之待處理中的一監測操作之間;該第一預取指令與該第二預取指令晚於一序列指令;以及該第一預取指令與該第二預取指令所指定之該資料快取列之位址未命中該微處理器之一轉譯後備緩衝器。
- 如申請專利範圍第1項所述之微處理器,其中該第二既定情況組包括以下其中一者:該第一預取指令與該第二預取指令所定址之一記憶體頁面的記憶體特性為不可快取;以及該第一預取指令與該第二預取指令所指定之該資料快取列之一位址未命中該微處理器之一轉譯後備緩衝器。
- 如申請專利範圍第5項所述之微處理器,其中該記憶體子系統執行一頁面頁表查找,以獲得該第二預取指令所指定之該資料快取列之該位址的一虛擬至實體位址轉換。
- 如申請專利範圍第1項所述之微處理器,更包括: 一微碼單元,包括一例外處理常式,用來處理該例外處理程序且傳達給該微處理器之一重複資料串搬移微碼;其中,該重複資料串搬移微碼實現該為微處理器之指令組架構的一重複資料串搬移巨指令。
- 一種微處理器,包括:一快取記憶體;一微碼單元,包含一微碼,該微碼用來實現一架構性重複資料串搬移巨指令,其中,該微碼包括複數保證預取-載入-儲存指令組的序列;以及一記憶體子系統,用來執行該等保證預取-載入-儲存指令組,在一既定情況組存在且當該記憶體子系統將複數非保證預取指令僅視為暗示時,用來預取該等保證預取指令所指定之複數個快取列至該快取記憶體。
- 如申請專利範圍第8項所述之微處理器,其中該微碼包括在該等保證預取-載入-儲存指令組的序列之前的一或多個由該記憶體子系統所執行的初始保證預取指令,並在該記憶體子系統遭遇到該等保證預取-載入-儲存指令組的序列中的載入指令之前,使得該一或多個初始保證預取指令讀取指定之快取列被預取至該快取記憶體。
- 一種微處理器,包括:一快取記憶體;一微碼單元,包含一微碼,該微碼用以實現一架構性重複資料串搬移巨指令,該微碼包括複數個載入指令與儲存指令,以將資料串由一來源記憶體位置搬移至一目標記 憶體位置,且該微碼更包括在該等載入指令之前的複數個預取指令,以增加該等載入指令被處理之前,複數個快取列出現在該快取記憶體的可能性;以及一記憶體子系統,用來執行該等預取指令、載入指令、與儲存指令,其中該記憶體子系統用來偵測該等預取指令之一者所指示之一記憶體位址未命中該微處理器之一轉譯後備緩衝器,當該記憶體位置未命中該轉譯後備緩衝器時,該記憶體子系統通知該微碼單元;其中,該記憶體子系統用來偵測該等預取指令之一者正指示具有非可緩存特性之一記憶體區域之一記憶體位址的一情況,且相應地導致該微碼單元被通知該情況,以及該微碼用來相應地搬移資料串之剩餘部分而不需使用該等預取指令。
- 如申請專利範圍第10項所述之微處理器,其中該微處理器根據上述偵測的情況來清除晚於該等預取指令之一者的每一該載入指令與該儲存指令。
- 如申請專利範圍第11項所述之微處理器,其中,在清除後,於剩餘之該等載入指令之前,該微碼單元重新開始執行剩餘之該等預取指令,以增加剩餘之該等快取列在被剩餘之該等載入指令處理前出現在該快取記憶體的可能性。
- 一種由一微處理器所執行之方法,該微處理器包括一快取記憶體以及一指令組,且該指令組具有複數個第一預取指令與第二預取指令,該方法包括:當執行該第一預取指令時,偵測一預設情況組中之一 者或多個的存在,其中,該第一預取指令命令該微處理器自一系統記憶體預取一第一資料快取列至該快取記憶體;相應於當執行該第一預取指令時偵測該預設情況組中之一者或多個的存在之步驟,放棄自該系統記憶體預取該第一資料快取列至該快取記憶體;當執行該第二預取指令時,偵測該預設情況組中之一者或多個的存在,其中,該第二預取指令命令該微處理器自該系統記憶體預取一第二資料快取列至該快取記憶體;以及相應於執行該第二預取指令時偵測該預設情況組中之一者或多個的存在之步驟,完成自該系統記憶體預取該第二資料快取列至該快取記憶體,其中該預設情況組包括該第一預取指令與該第二預取指令所指定之該資料快取列之位址未命中該微處理器之一轉譯後備緩衝器。
- 一種由一微處理器所執行之方法,該微處理器包括一快取記憶體,該方法包括:對一架構性重複資料串搬移指令進行解碼;以及相應於對該架構性重複資料串搬移指令進行解碼之步驟,執行複數保證預取-載入-儲存指令組的序列;其中,執行該等保證預取-載入-儲存指令組的序列之步驟包括甚至在一既定情況組存在時且當該記憶體子系統將複數非保證預取指令僅視為暗示時,預取由該等保證預取-載入-儲存指令組的序列所指定之該快取記憶體之複數個快取列。
- 一種由一微處理器所執行之方法,該微處理器包括一快取記憶體,該方法包括:對一架構性重複資料串搬移指令進行解碼;相應於對該架構性重複資料串搬移指令進行解碼之步驟,執行複數個載入指令與儲存指令,以將資料串由一來源記憶體位置搬移至一目標記憶體位置;在執行該等載入指令之前,執行複數個預取指令,以增加複數個快取列在被該等載入指令處理前出現在該快取記憶體的可能性;以及偵測該等預取指令之一者正指示出一記憶體位址於該微處理器之一轉譯後備緩衝器中未命中的一情況,且相應地導致一微碼單元被通知該轉譯後備緩衝器的未命中;根據上述偵測之步驟,清除晚於該等預取指令之一者的每一該載入指令與該儲存指令;以及在上述清除之步驟後,於剩餘之該等載入指令之前,重新開始執行剩餘之該等預取指令,以增加剩餘之該等快取列在被剩餘之該等載入指令處理前出現在該快取記憶體的可能性。
- 一種微處理器,其包括:一快取記憶體;一指令組,包括一第一預取指令與一第二預取指令,該第一預取指令與該第二預取指令中每一者用來命令該微處理器自一系統記憶體預取一資料快取列至該快取記憶體;以及一記憶體子系統,用來執行該第一預取指令與該第二 預取指令,其中,對於該第一預取指令,該記憶體子系統根據一既定情況組而放棄自該系統記憶體預取該資料快取列至該快取記憶體,其中,對於該第二預取指令,該記憶體子系統根據該既定情況組來完成自該系統記憶體預取該資料快取列至該快取記憶體;其中該既定情況組包括一情況,其中該第一預取指令與該第二預取指令晚於一序列指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18279909P | 2009-06-01 | 2009-06-01 | |
US12/781,337 US8533437B2 (en) | 2009-06-01 | 2010-05-17 | Guaranteed prefetch instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201120744A TW201120744A (en) | 2011-06-16 |
TWI436272B true TWI436272B (zh) | 2014-05-01 |
Family
ID=43221597
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099117546A TWI436272B (zh) | 2009-06-01 | 2010-06-01 | 微處理器及其執行之方法 |
TW103101921A TWI531967B (zh) | 2009-06-01 | 2010-06-01 | 微處理器及其執行之方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103101921A TWI531967B (zh) | 2009-06-01 | 2010-06-01 | 微處理器及其執行之方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8533437B2 (zh) |
CN (2) | CN101984403B (zh) |
TW (2) | TWI436272B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI581098B (zh) * | 2014-07-21 | 2017-05-01 | 上海兆芯集成電路有限公司 | 支援同時無效化共同內容之轉譯後備緩衝器及其操作方法以及包含其之處理器 |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2477109B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
EP2523101B1 (en) | 2006-11-14 | 2014-06-04 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
KR101685247B1 (ko) | 2010-09-17 | 2016-12-09 | 소프트 머신즈, 인크. | 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측 |
US9274793B2 (en) | 2011-03-25 | 2016-03-01 | Soft Machines, Inc. | Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines |
KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
TWI533129B (zh) | 2011-03-25 | 2016-05-11 | 軟體機器公司 | 使用可分割引擎實體化的虛擬核心執行指令序列程式碼區塊 |
KR101639854B1 (ko) | 2011-05-20 | 2016-07-14 | 소프트 머신즈, 인크. | 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조 |
EP2710481B1 (en) | 2011-05-20 | 2021-02-17 | Intel Corporation | Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines |
EP2783281B1 (en) | 2011-11-22 | 2020-05-13 | Intel Corporation | A microprocessor accelerated code optimizer |
KR101842550B1 (ko) | 2011-11-22 | 2018-03-28 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
US9405545B2 (en) * | 2011-12-30 | 2016-08-02 | Intel Corporation | Method and apparatus for cutting senior store latency using store prefetching |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US10146545B2 (en) * | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
WO2014031495A2 (en) | 2012-08-18 | 2014-02-27 | Arteris SAS | System translation look-aside buffer with request-based allocation and prefetching |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US9292453B2 (en) * | 2013-02-01 | 2016-03-22 | International Business Machines Corporation | Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB) |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
US9632825B2 (en) * | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
KR102083390B1 (ko) | 2013-03-15 | 2020-03-02 | 인텔 코포레이션 | 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법 |
US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
US20160011876A1 (en) * | 2014-07-11 | 2016-01-14 | Cavium, Inc. | Managing instruction order in a processor pipeline |
CN106485318B (zh) * | 2015-10-08 | 2019-08-30 | 上海兆芯集成电路有限公司 | 具有混合协处理器/执行单元神经网络单元的处理器 |
US9996298B2 (en) * | 2015-11-05 | 2018-06-12 | International Business Machines Corporation | Memory move instruction sequence enabling software control |
US10067713B2 (en) | 2015-11-05 | 2018-09-04 | International Business Machines Corporation | Efficient enforcement of barriers with respect to memory move sequences |
US10126952B2 (en) | 2015-11-05 | 2018-11-13 | International Business Machines Corporation | Memory move instruction sequence targeting a memory-mapped device |
US10140052B2 (en) | 2015-11-05 | 2018-11-27 | International Business Machines Corporation | Memory access in a data processing system utilizing copy and paste instructions |
US10152322B2 (en) | 2015-11-05 | 2018-12-11 | International Business Machines Corporation | Memory move instruction sequence including a stream of copy-type and paste-type instructions |
US10346164B2 (en) | 2015-11-05 | 2019-07-09 | International Business Machines Corporation | Memory move instruction sequence targeting an accelerator switchboard |
US10042580B2 (en) | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
US10241945B2 (en) | 2015-11-05 | 2019-03-26 | International Business Machines Corporation | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions |
US10175985B2 (en) | 2016-03-28 | 2019-01-08 | International Business Machines Corporation | Mechanism for using a reservation station as a scratch register |
US20170286118A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion |
CN109716315A (zh) * | 2016-10-26 | 2019-05-03 | 腾赛拉网络有限公司 | 使用报头修改的预取高速缓存管理 |
US10120688B2 (en) * | 2016-11-15 | 2018-11-06 | Andes Technology Corporation | Data processing system and method for executing block call and block return instructions |
CN111475203B (zh) * | 2020-04-03 | 2023-03-14 | 小华半导体有限公司 | 一种用于处理器的指令读取方法以及相应的处理器 |
US11481219B2 (en) * | 2020-05-07 | 2022-10-25 | International Business Machines Corporation | Store prefetches for dependent loads in a processor |
CN111679857B (zh) * | 2020-06-15 | 2024-01-23 | 上海兆芯集成电路股份有限公司 | 高效能复杂指令译码的微处理器 |
CN114138341B (zh) * | 2021-12-01 | 2023-06-02 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752644A3 (en) * | 1995-07-07 | 2001-08-22 | Sun Microsystems, Inc. | Memory management unit incorporating prefetch control |
US6128703A (en) * | 1997-09-05 | 2000-10-03 | Integrated Device Technology, Inc. | Method and apparatus for memory prefetch operation of volatile non-coherent data |
US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6470427B1 (en) * | 1999-11-09 | 2002-10-22 | International Business Machines Corporation | Programmable agent and method for managing prefetch queues |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6820173B1 (en) * | 2001-02-23 | 2004-11-16 | Nvidia Corporation | Data prefetcher with predictor capabilities |
US6578130B2 (en) * | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
US6810466B2 (en) * | 2001-10-23 | 2004-10-26 | Ip-First, Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6775747B2 (en) * | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US7080211B2 (en) * | 2002-02-12 | 2006-07-18 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory |
US7089368B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory |
US6832296B2 (en) * | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6981099B2 (en) * | 2002-12-16 | 2005-12-27 | Sun Microsystems, Inc. | Smart-prefetch |
TWI227853B (en) * | 2003-08-29 | 2005-02-11 | Rdc Semiconductor Co Ltd | Data accessing method and system for processing unit |
JP4134179B2 (ja) * | 2005-02-04 | 2008-08-13 | 株式会社ソニー・コンピュータエンタテインメント | ソフトウエアによる動的予測方法および装置 |
US7840761B2 (en) * | 2005-04-01 | 2010-11-23 | Stmicroelectronics, Inc. | Apparatus and method for supporting execution of prefetch threads |
US7707359B2 (en) * | 2005-12-09 | 2010-04-27 | Oracle America, Inc. | Method and apparatus for selectively prefetching based on resource availability |
CN100485608C (zh) * | 2006-11-17 | 2009-05-06 | 上海高性能集成电路设计中心 | 基于访存指令的数据流预取方法 |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
-
2010
- 2010-05-17 US US12/781,337 patent/US8533437B2/en active Active
- 2010-06-01 TW TW099117546A patent/TWI436272B/zh active
- 2010-06-01 CN CN201010194974.XA patent/CN101984403B/zh active Active
- 2010-06-01 TW TW103101921A patent/TWI531967B/zh active
- 2010-06-01 CN CN201310729108.XA patent/CN103699362B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI581098B (zh) * | 2014-07-21 | 2017-05-01 | 上海兆芯集成電路有限公司 | 支援同時無效化共同內容之轉譯後備緩衝器及其操作方法以及包含其之處理器 |
Also Published As
Publication number | Publication date |
---|---|
TWI531967B (zh) | 2016-05-01 |
US8533437B2 (en) | 2013-09-10 |
CN103699362B (zh) | 2016-08-17 |
CN103699362A (zh) | 2014-04-02 |
TW201419143A (zh) | 2014-05-16 |
US20100306503A1 (en) | 2010-12-02 |
CN101984403A (zh) | 2011-03-09 |
TW201120744A (en) | 2011-06-16 |
CN101984403B (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI436272B (zh) | 微處理器及其執行之方法 | |
TWI428820B (zh) | 執行快速重複載入資料串操作的微處理器 | |
US6321326B1 (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US8364902B2 (en) | Microprocessor with repeat prefetch indirect instruction | |
US6581151B2 (en) | Apparatus and method for speculatively forwarding storehit data based on physical page index compare | |
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
US8984264B2 (en) | Precise data return handling in speculative processors | |
TWI417787B (zh) | 微處理器及其執行方法 | |
US7721067B2 (en) | Translation lookaside buffer manipulation | |
US10713172B2 (en) | Processor cache with independent pipeline to expedite prefetch request | |
JP2003514299A (ja) | インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
EP1517232B1 (en) | Method and apparatus to ensure instruction coherency in a pipelined processor | |
CN107992331B (zh) | 处理器及操作处理器的方法 | |
JP2010511251A (ja) | サブルーチン呼び出しを認識(recognize)する方法及び装置 | |
US20080162819A1 (en) | Design structure for self prefetching l2 cache mechanism for data lines | |
JP2001356905A (ja) | スタックに基づいたパイプライン型プロセッサにおけるレジスタ依存性を取扱うシステム及び方法 | |
US11151054B2 (en) | Speculative address translation requests pertaining to instruction cache misses | |
US11663130B1 (en) | Cache replacement mechanisms for speculative execution | |
JP3824657B2 (ja) | 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法 |