TWI249673B - Microprocessor and apparatus for performing speculative load operation from a stack memory cache - Google Patents
Microprocessor and apparatus for performing speculative load operation from a stack memory cache Download PDFInfo
- Publication number
- TWI249673B TWI249673B TW093123853A TW93123853A TWI249673B TW I249673 B TWI249673 B TW I249673B TW 093123853 A TW093123853 A TW 093123853A TW 93123853 A TW93123853 A TW 93123853A TW I249673 B TWI249673 B TW I249673B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- cache
- data
- memory
- actual
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 413
- 238000013519 translation Methods 0.000 claims abstract description 8
- 238000000034 method Methods 0.000 claims description 83
- 238000003860 storage Methods 0.000 claims description 79
- 230000004044 response Effects 0.000 claims description 22
- 239000000463 material Substances 0.000 claims description 19
- 239000000872 buffer Substances 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 15
- 230000009471 action Effects 0.000 claims description 12
- 230000032683 aging Effects 0.000 claims description 3
- 206010011469 Crying Diseases 0.000 claims description 2
- 238000012937 correction Methods 0.000 claims description 2
- 230000036541 health Effects 0.000 claims description 2
- 238000011084 recovery Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 68
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 26
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000282320 Panthera leo Species 0.000 description 2
- 241000282376 Panthera tigris Species 0.000 description 2
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000008267 milk Substances 0.000 description 2
- 210000004080 milk Anatomy 0.000 description 2
- 235000013336 milk Nutrition 0.000 description 2
- 239000011257 shell material Substances 0.000 description 2
- 210000002784 stomach Anatomy 0.000 description 2
- 244000144730 Amygdalus persica Species 0.000 description 1
- 102000004190 Enzymes Human genes 0.000 description 1
- 108090000790 Enzymes Proteins 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 235000006040 Prunus persica var persica Nutrition 0.000 description 1
- 241000124033 Salix Species 0.000 description 1
- 206010039740 Screaming Diseases 0.000 description 1
- 239000011324 bead Substances 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000036461 convulsion Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000010237 hybrid technique Methods 0.000 description 1
- 238000000338 in vitro Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 210000003734 kidney Anatomy 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 210000004072 lung Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 210000001331 nose Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 235000021251 pulses Nutrition 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 235000015170 shellfish Nutrition 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001755 vocal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/451—Stack data
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)
Description
1249673 九、發明說明: 【優先權資訊】 [0001]本申请案優先權之申請系根據該美國專利申請案,案號·· 10/759,564 ’申请日· 1/16/2004 ’名稱為完全關聯式堆疊快取記憶體 (FULLY ASSOCIATIVE STACK CACHE) 〇 【相關申請案之交互參考】 [0002]本申請案與下列同在申請中之美國專利申請案有關,都具有 相同的申請日、申請人及發明人。 申請案號 申請曰期 名稱 10/759559 2004/01/16 MICROPROCESSOR AND APPARATUS FOR PERFORMING FAST SPECULATIVE POP OPERATION FROM A STACK MEMORY 執行堆疊記憶體的快速推測式彈出運算之微處理器 及裝置 10/759483 2004/01/16 MICROPROCESSOR WITH VARIABLE LATENCY STACK CACHE 具有可變延遲(variable latency)堆疊快取記憶體之微 處理器 10/759489 2004/01/16 MICROPROCESSOR AND APPARATUS FOR PERFORMING FAST POP OPERATION FROM RANDOM ACCESS CACHE MEMORY 執行來自於隨機存取快取記憶體的快速彈出運算之 微處理器及裝置 【發明所屬之技術領域】 [0003]本發明係有關於微處理器中的快取記憶體之領域,且特別是 有關於在堆疊記憶體存取與非堆疊記憶體存取之間進行區別之快取記 憶體。 1249673 【先前技術】 [0001]微處理器為_概行電齡摘指 型的電腦系統包括微處理器,並麵接曰7位裝置。典 自於系統記㈣巾的資料讀人微處職,或 《α為將來 貝针职"所而之時間’而制阻礙。時 個等級的大小之間。因此,”斯㈣於—個與二 . 胃##讀、體桃或寫人時,往往合蔣料 處理ι§設定為不會做任何事情的閒置狀態。 曰、a t〇__ ’ 設計輕切前已了解 的時間,來存取相當小部份的資料,如頻繁地存取程式變2=2 種特徵的程式絲日㈣良好的娜赚^em卿心卿),以及 此鋪徵的習性係稱為參考原理的侷限性。為了利用此原理,現代微 處理器通常包括-個或多個快取記憶體。快取記憶體(cache_町或 cache)為雜地靠近微處理心之相#小的記龍,其賴暫時儲存 正f會儲存於電腦系統之較大,較遠的記憶體(如系統記憶體外之一子 ,資料。練紐會將資料齡於絲記鐘_存元件中,以致於 貝料接下來可由比系統的較遠記憶體更快之快取記㈣來提供。 [0003]當微處理器執行記憶體讀取指令(如載入或彈出⑦叩)指令) 時,微處理器首先會進行檢查,以了解請求的資料是否存在於快取記 憶體中(亦即,記憶體讀取位址是否命中(hit)快取記憶體)。若否(亦即, 若記憶體讀取位址未命中(miss)快取記憶體),則微處理器除了會將資 料載入到微處理器的特定暫存器之外,還會將資料提取到快取記憶 體。現在因為資料係存在於快取記憶體中,所以下次碰到請求相同資 料的記憶體讀取指令時,資料可從快取記憶體提取到暫存器,來進行 1249673 處理□為貝料已存在於快取記憶體中,所以基本上可立即執行記憶 體讀取指令。 [〇〇〇4]快取記憶體會將資料儲存於快取線(eaehe㈣,或快取區塊 (caiheWrk)中。快取線為可在快取記憶體與系統記憶體之間轉移資料 之最小早凡。快取線大小的一例為64位元組的資料。當記憶體讀取指 令產生快取蝴mi咐’會躲及失驗⑽整触取雜取到快取 記憶體,來取代只提取記憶體讀取指令所請求的資料。因此,可從快 取。己隐體來供應貝料,而不必透過存取系統記憶體來供應資料,所以 可快速地執行請求相同快取線中的資料之接下來的記憶體讀取指令。 [0005]此外,當執行記憶體寫入指令(如儲存或推入(push)指令)時, 若記憶體寫入位址命中快取記憶體,則可將資料立即寫入快取記憶體 的快取線’藉此可使資料職統峨_寫人輯。之後,快取記憶 體會將快取線寫入系統記憶體,以讓出地方給較新的快取線。此運算 通吊係私為寫回運算,更進一步地,當記憶體寫入位址未命中快取記 憶體時’某些快取記憶體也會配置快取記憶體中的項目(卿)。亦即, 快取_體會執行快取記憶體的項目中之舊快取線的寫回運算,以及 魏5&紐的寫人位址所包含之新快取剌進先前由舊快取 線所佔據之快取項目。此運算通常稱為寫入配置運算。 [=〇6]如可觀察到的是,有效率地執行快取可大大地改善微處理器 ρΓ 響快取效率的二魅要因素是快取命巾率及快取存取時 二。取記憶體的命中率為快取命情快取命中與失誤的總和之比。 二取日=為從快取記憶體讀取特定資料,或將特定資料寫人快取記憶 體之所需的處理器核心時脈週期之數目。 心 」Γη影響快取命中率的最大因素是快取記憶體的大小(亦即,可儲 ^中所^"健㈣倾位核之數目)。絲記鐘愈大,快取記憶 斤錯存之系統記憶體資料的子集也愈大,因此所包含的快取線將 1249673 更可能會存在於快取記憶體中。由於此原因,會有增加快取記憶體大 小的行動。歷史上來說,快取記憶體的大小通常受限於可專用於快取、 圮憶體的微處理器晶粒上之實際空間的數量。然而,因為電路元件幾 何圖形持續的減小,所以此限制也會降低。 [0008]但是’快取記憶體大小也會影響傳統快取記憶體的存取時 間。不幸的是,較大的快取記憶體通常會比較小的快取記憶體之存取 時間長。這是因為傳統快取記憶體為隨機存取記憶體,其需要相同量 的時間,來存取快取記憶體中的任何快取線。資料可儲存於快取記憔 體内的可行位置之數目愈大,放置由記憶體位址所指定的資料所需之 電路也愈複雜。幸運的是,電路元件幾何圖形的持續降低也會降低快 取存取時間,並且有助於補償增加的快取記憶體大小之負面效應。 」0009]然而,較高的微處理器時脈頻率會有一種不變的要求,其必 然意含時脈週期時間(其意含存取快取記憶體需較大數目的時脈週期) 的降低因此’在微處理器中,會有朝向較小快取記憶體的趨勢,特 另J疋苐&(L1)快取§己憶體。例如,pentium 4的li快取記憶體只有 8KB ’其係從Pentiumln中之i㈣的li資料快取記憶體中降低。迫 使快取記憶體大小降低並不是晶片的實際資產要求。更確切地說,儘 管較小的快取記㈣料致伴隨喊的效餅低,但是迫使快取記憶 體大小降低可縮短處理器核心時脈週期時間。 [0010]因此’ 要一種增加快取記憶體的有效大小,或降低快取存 取時間,或二者之方式。 【發明内容】 、[001 田 1]在-觀點中’本發明係提出一種用以快取推入指令的堆疊資 料之堆Γ峰讀體。鱗疊快取記憶體為後紐a(lifq)記憶體。 因此最新堆豐貝料係儲存於堆疊快取記憶體的頂端項目中。在一觀 1249673 點中,堆疊快取記憶體會儲存快取於其中之快取線的虛擬及實際位 址。當遇到載入指令時,會計算載入指令的虛擬位址。然後,載:虛 擬位址會與頂端堆疊快取記憶體項目中之快取線的虛擬位址進行比 較。若虛擬位址匹配,則堆疊快取記憶體會將請求資料推測式地傳送 到載入指令,而不會先執行實際位址比較,以明確地判斷資料是否存 在於頂端項目中。與虛擬位址比較並行的是,會執行轉譯旁視緩衝器 (translation lookaside buffer)查詢,而將載入虛擬位址轉譯成載入實際位 址。然後,會將載入實際位址與頂端堆疊快取記憶體項目中之快取線 的實際位址進行比較’以確認會產生正確f料。若實際比較顯示未匹 配二則會產生-訊號,以表示產生不正確資料的情況。在—實施例中, 此訊號會使微處理ϋ發生例外的情形。·處理器的微碼會修正堆最 快取記憶體,而會從織體中的實際堆疊,或從微處理器的另一快ς 記憶體中,產生正確資料。 、 陶2]在-觀財,微處理闕包括第二快取記紐,其實質上會 中、非堆疊資料的堆疊快取記憶體並行地存取。當載入位址命 情體,貝憶體時,若虛擬及實際載入位址均未命中堆疊快取記 匕體則-貝料會從非堆疊快取記憶體傳送到載入指令。 自於TLB查詢,即可產生資料,所以來 m 1 式載入運算會較快。特別而言,載入指令 目快取線會包含嘈二:入:立址:中頂端項目’則很有可能頂端項 端二個項目ϋ ,堆疊快取記憶體中之頂 推測式载入之=::虛^ 1249673 【實施方式】 [〇〇33]大體上來說,,本發_程式通常會將系統記憶體分離 ,二個區域:堆疊區及非堆疊區。非堆疊區一般係稱為堆積(bp)。堆 疊與堆積之間的主要差異為堆積係以隨機存取的方式來存取;然而, 堆疊一般是以後進先出(LIFO)的方式來存取。堆疊與堆積之間的另一 種差別為讀取或寫人指令,用來指定讀取或寫人的位置之位址的方 式。讀取或寫入堆積的指令一般會明確地指定記憶體位址。反之,讀 取或寫入堆疊的指令一般會經由微處理器中的特別暫存器(一般稱為 ,疊指標暫存器),而隱含地指定記紐紐。推人指令會藉由推進堆 疊的資料之別、,來更新堆疊指標暫存H,然後會將來自於微處理器 的暫存之讀儲存於更新的堆疊指標暫存器中所齡之記憶體中的 位址。例如,在x86的架構中,推入指令(如推入(puSH)、呼叫(^all)、 或進入(ENTER)指令)會藉由推入的資料之大小(例如,若資料為雙字 組,則為4個位元組),而使堆疊指標暫存器減少,然後會將資料存入 位於更新的堆疊指標暫存器中所指定之位址的堆疊。反之,彈出指令 會=取位於堆疊指標暫存器巾所儲存的位址之資料,將雜載入微處 ^器中的暫存器,然後會藉由彈出堆疊的資料之大小,來更新堆疊指 標暫存器。例如,在x86的架構中,彈出指令(如彈出(p〇p)、返回(re^)曰、 或離開(LEAVE)指令)會藉由彈出堆疊的資料之大小,而使堆疊指標暫 存器增;^口。目此,傳統上而言,根據其UF〇特性,當將資料推進堆疊 =,堆疊會向上增加(亦即,記憶體位址會減少),而同樣地,當將資二 彈出堆豐時’會向下減少(亦即,記憶體位址會增加)。因此,堆疊指標 暫存器中所儲存的值係稱為堆疊的頂端。 [0034]堆豐為配置記憶體空間的便利機制。典型程式中的堆疊之主 要功用是將副常式參數,以及呼叫常式的返回位址推人堆疊。呼 二的副常式储由將返回位址彈出堆疊,而進人微處理器的程式計數 ☆ ’而返回呼叫常式’然後呼叫常式會將參數彈出堆疊,而使堆疊恢 1249673 2預先呼⑽情況。此種概念的極扣雜是可錢巢狀式副常式 _5]在此所述的快速_運算係彻推人與彈出 料-對-的相應關係。亦即,當執行彈出指令時,彈 -般是先前藉由對應的推人指令所推進堆疊之資料。 且的貝料 [0036]在本揭露書巾,彈雌令為—鑛來自於記 微處理器(如移入微處理器之暫存器檔案中之二人了移入 二中SL、3私疋,而不會明確地指定資料的記憶體位置 而δ ’彈出祕的記憶體位置位址係基於微處 广 中所儲存的值而隱含著。Χ86架構的處理器中之彈出】二= ,、返回(RET)、以及離開(LEA,指令’其來 地指定與堆疊指標暫存器值有關,而其目的運Μ 、暫^ 器檔案中的暫存器。 H的智存 [0037] 在本揭露書中’載入指令為一種將來自於記憶體的資料移入 微處理器(如移入微處理器之暫存器檔案中的暫存器)之非彈出指令。亦 L載入指令會明確地指定來源資料軌憶體位址’或至少會明7確地 指定-暫存器或-組暫存器,用以指定來源請的記憶體位址。观 架構的處理器中之載入指令的一例是移動(M0V)指令,其來源運算元 會指定記舰位置,而其目的運算元會指定處理輯存器檔案中的暫 存器。 [0038] 在本揭露書中,推入指令為一種將資料從微處理器(如從微處 理器之暫存器檔案中的暫存器)移到記憶體之指令,並且在此指令中, 會隱含地指定,而不會明確地指定資料的記憶體位置。特別而言,推 入資料的記憶體位置位址係基於微處理器之堆疊指標暫存器中所儲存 的值而fe含著。X86架構處理器之推入指令的例子是推入(push)、呼 叫(CALL)、以及進入(ENTER)指令,其目的運算元係隱含地指定與堆 11 1249673 疊指標暫存器值有關, 暫存器。 而其來源運算元會指定處理时存ϋ槽案中的 [〇〇39]在本揭露書中,儲存指 體(如從微處理器之暫在㈣宏心貝枓韻處理轉到記憶 令。亦即,財Jit 暫存器帅咖)之非推入指 明確地指定=40 = 定㈣咖f雜紐,或至少會 或一組暫存态,用以指定 -xs6 定定處理器暫存㈣案中的暫存器’而其目的運算元會指
方_ ^i ’細報據本發明之錄賴處理器卿的 禮例中,微處理器刚包括指令集實質上符合_架 冓才"集之微處理器。特別而言,指令集尤其是包括χ86的彈出、推 肋、進人、以及輸令。此外,指嫩括從記憶體 中载入貝料,以及將資料儲存於記憶體之指令。如χ86的移動指令。 然而,本發明不受限於χ86架構的處理器,或以6指令集。
[0041]微處理器議包括暫存器檔案112。暫存器檔案112包括複 數個暫存,用以儲存微處理器卿的運算元及狀態資訊。在一實施 例中,暫存案m包括-般崎暫存器、位址區段暫存器、索引 暫存器、狀祕控制暫存器、以及指令指標,姐式計數暫存器。在 -實施例中,暫存器檔案112包括至少一個χ86架構的微處理器之使 用者可見暫存。特別而言,暫存n齡112包括堆疊指標暫存器 152,用以儲存系統記憶體中之堆疊的頂端。在一實施例中,堆叠指標 暫存器152實質上係與χ86的ESP暫存器類似。 [0042]微處理器1〇〇包括指令快取記憶體1〇2,用以快取指令位元 組的快取線。在一實施例中,指令快取記憶體1〇2包括第一階(L1)快 取記憶體。指令快取記憶體102會快取從耦接至微處理器1〇〇的系統 12 1249673 記憶體中所提取之齡,如推人及彈出齡。推人及彈出 堆疊指標暫存器152中所儲存之堆疊位址的頂端,而 記憶體中的堆疊。 乜仔取糸、、光 [〇〇43]微處理器100還包括匯流排介面單元118, 取記憶體102。匯流排介面單元118係輕接至處理器匯流排132 =可 ,微處理ϋ 1GG祕綠統記鐘^匯流排介面單元U8會將微處理 器腦内的各種功能單元介面到處理器匯流排132。例如,匯流排介 面單元118會將來自於彳、統記憶體的指令提取刚旨令快取記憶體 102。此外,11流排介面單元118會從系統記憶體中讀取資料,以及將 資料寫入系統記憶體,如頂端係由堆疊指標暫存器152所指定之系統 記憶體中的堆疊。 、 [0044]微處理器100還包括指令提取器1〇4,其耦接至指令快取記 憶體102。指令提取器1〇4會從指令快取記憶體1〇2巾,提取指令。 指令提取器104會循序地提取由暫存器檔案112中的指令指標暫存器 所才曰疋之下個指令,除非其碰到程式控制改變事件,如分支指令,在 此情況中,指令提取器1〇4會開始提取位於分支指令的目標位址之指
令’或例外’在此情況中,指令提取器104會開始提取用於特定例外 之例外處理者常式的指令。 [〇〇45]微處理器1〇〇還包括微碼記憶體128,其辆接至指令提取器 104。微碼記憶體128會儲存由指令提取器1〇4所提取的指令。特別而 言’微碼記憶體128包括用以處理由微處理器1〇〇所產生的各種例外 情況之例外處理者常式指令。在一實施例中,微處理器1〇〇會回應於 偵測到不正確的推測所產生之彈出或載入資料,而產生例外,來修正 與堆疊存取有關之微處理器100的狀態,如底下所述。 [0046]微處理器ι〇〇還包括指令轉譯器ι〇6,其耦接至指令提取器 104。指令轉譯器1〇6會接收來自於指令提取器1〇4的指令(如推入及 13 1249673 彈出指令)’將指令解碼,以及將指令轉譯成藉由微處理器議管線的 其餘物所執行的微指令。在-實施例中,微處理器1〇〇管線的i餘物 包括職核心,用以執行微指令。在—實施例中,指令轉譯器· 會產生每個指令的指標,以顯示微指令係從其中進行轉譯之指令(稱為 巨集指令)是否為推入、彈出、載入、或儲存。 _7]微處麵還包括齡排程糾he·柳,叫接至指 令轉譯器應。指令排程器觸會接絲自於指令轉譯器ι〇6的轉譯 微指令’並且會將微齡W傳送到執行單元⑴,其用以執行微指 令。 _峨行單元m會魏來自於指令排程器及運算元 來自於暫存器餘m之堆疊指標暫存器⑸的推人指令資料或細 微指令m,並且會執行微指令134。在一實施例中,執行單元⑴ 括整數單元、浮點單元、mmX單元、舰單元、分支單元、載入單元、 元,ΐ元會執行將來自於系統記憶體的資料祕 處=〇〇 4令’包括_令。儲存單騎執行包括推入指令的 才曰以亦ρ ’用以將資料從微處理器議存入系統記憶體之 陶微處理器卿還包括寫回階段116,其減至) m會接《由執行單元114所執行的指令之結果,並且合 將、果(如彈出指令資料)寫回到暫存器槽案112。 曰 _〇爾理H 還包括:賴絲記鐘12
L36 ^ ^ !3S 触攸髓126為L1 _絲記憶體。 貝餘取讀、體126包括堆#快取記憶體124及非堆雜 122。匯流排介面單元m會將來自於系統記憶 ^ 取記憶魏,並且會將資料從資料快取記憶體⑶寫入=== 「匯流排介面單元118會將來自於堆叠快取記憶體⑵及非 1249673 堆疊快取記憶體122的快取線寫回到系統記憶體,並且會讀取來自於 系統s己憶體的快取線,而寫入到堆疊快取記憶體124及非堆疊快取記 憶體122的配置項目。更特別而言’匯流排介面單元118會轉移由系 統記憶體堆疊與堆疊快取記憶體124之間的推入及彈出指令所指定^ 資料。 _ [0051]在-實施例中’非堆疊快取記憶體m實質上包括傳統的^ 資料快取記憶體。亦即’非堆疊絲記紐122包括設制以促進隨 機分饰的祕記舰位址之存取致之傳統的u f料快取記憶 體。在-實施例中,非堆疊快取記憶體122包括4向组合結合式(木胃 setassodate)快取記憶體。然而,儲存單元會在推入與非推入指令資料 之間進灯區別’以決定是否將資料存人堆疊快取記紐124或非堆疊 快取記憶體m。儲存單元會將推入指令存入堆疊快取記憶體124,而 不會存入非堆疊快取記健122,並歸將非推人指令資料(亦即,儲 ^指令資_人非堆独取記舰122。錢方面,料疊快取記憶 〜I,22係與傳職取記健獨^堆疊快取記舰⑶會配合圖2進 行詳細地説明。 I ]在一貝施例中,微處理器100還包括第二階(L2)快取記憶 體’用以協助L1指令快取記憶體1〇2及u資料快取記憶體126。特 別而言,L2快取記憶體係用來當作從資料快取記憶體非堆疊快取 及堆豐快取記憶體12句移出的快取線之犧牲(victim)快取記 mil資料絲記賊126會充滿U快取記‘隨·取線。 取印㈣m彡照圖2 ’所顯示的是繪示根據本_之圖1的堆疊快 “二印情,方塊圖。堆疊快取記憶體124包括配置用來當作堆疊, 二if之複數個儲存元件。堆疊快取記憶體124為堆疊或LIF0 :己憶體,事d不會與,'統記㈣帽包 係由堆豐指標暫存器152中的值所指定。更確切地說,堆疊快取= 15 1249673 體124會快取系統記憶體堆疊的資料。 [〇〇5個2的實施例包括稱為〇到15的十六傭存元件,或項目。 頂端項目係稱為項目G,而底部項目係稱為項目15。然而,本發明不 受限於堆疊快取記舰124巾之狀數目㈣目。每綱目包括用於 -快取線的資料206之儲存空間、快取線挪的位址標籤綱、以及 快取線206的快取狀態202。在-實施例中,快取狀態2〇2包括實質 上會符合熟㈣MES聰改、财、分享、無效)—錄態值之狀 態。在-—實施例中,快取線206包括64個位元組的資料。在一實施例 中,標籤2〇4包括快取線2〇6的實際位址。 [〇〇55]在-實施例中’賊2〇4包括獨特地識別快取線2〇6所需之 决取線206 θ際位址的較南有效位元。在一實施例巾,微處理器議 包括a己憶體分m用以將虛擬記紐位址轉譯成實際記憶體位 址,而標籤204還包括快取線206的虛擬位址。在一實施例中,虛擬 2址包括紙奏(hash)的虛擬位址位元,以降低儲存虛擬位址所需的空間 量。使用標籤綱的虛擬位址部份,來執行來自於堆疊快取記憶體124 的推測式載入會於底下進行詳細地說明。 [0056]堆疊快取5己憶體124會接收經由Sc—Write—MESI訊號212而 存入頂%項目的MESI欄位202之新快取狀態。堆疊快取記憶體124 會接收經由sc—write—tag訊號214而存入頂端項目的標籤欄位2〇4之新 標籤。堆疊快取記憶體124會接收經由sc—write—data訊號216而存入 頂端項目的資料攔位206之新快取線。堆疊快取記憶體124還會接收 來自於圖3的控制邏輯3〇2之push一sc訊號232。當控制邏輯302使 push〜sc訊號232致能為真值時,堆疊快取記憶體124會向下移位一個 項目(亦即,底部項目會移出堆疊快取記憶體12句,並且其他項目中的 们^立即接收位於其上之項目的值’以及會將jy正si 212、sc—write—tag 214、以及化―write—data216的值寫入堆疊快取記憶 16 1249673 體124的頂端項目。在一實施例中,堆疊快取記憶體i24之快取線Ms 的每個雙字組會經由sc—write—data訊號216,而各自地寫入,雙字組 (dword或double-word)包括四個位元組。可包含堆疊快取記憶體124 之快取線206的每個字組(2個位元組),或每個位元組會經由 sc—write—data訊號216,而各自地寫入之其他實施例。 [0057] 堆疊快取記憶體124會產生其十六個項目中的每一個之 MESI狀Ί 202而成為Scjy[gsi[15:0]訊號222。堆疊快取記憶體124 έ產生/、十/、個項目中的母一個之標籤204而成為sc—tag[i5:〇]訊號 224堆宜快取圯憶體124會產生其十六個項目中的每一個之快取線資馨 料206而成為sc—data[15.〇]訊號226。頂端項目的快取線2〇6會產生 SC-data[0],頂端項目之下一個的快取線2〇6會產生此―血也⑴向下以
此類推,底部項目的快取線206會產生sc—data[15]。標籤204及MESI 狀悲202係以類似的方式產生。堆疊快取記憶體124還會接收來自於 圖3的控制邏輯3〇2之pop—sc訊號234。當控制邏輯3〇2使押—π訊 號234致能時,堆疊快取記憶體124會向上移位一個項目(亦即,頂部 項目會移出堆疊快取記憶體124),並且其他項目中的每—個會立即接 收位於其下的項目之值。在一實施例中,當將項目彈出堆疊快取記憶 體124時(亦即,pop—sc訊號234為真時),堆疊快取記憶體丨24之底 部項目的MESI狀態202會更新為無效的值。堆疊快取記憶體124之 所有項目的MESI狀態202會初始化為無效的值。 [0058] 現在參照圖3,所顯示是根據本發明之圖丨的堆疊快取記憶 體124中的額外元件之方塊圖。堆疊快取記憶體124包括控^邏輯兕= [0059] 控制邏輯3〇2會從圖1之執行單元114的儲存單元中,接收 push一instr訊號342。真值的push一instr訊號342係表示儲存單元回應 於從圖1的指令排程器108中所接收到的推入指令,而正請求將資^ 存入圖1的資料快取記憶體126。 17 1249673 _〇]控綱輯3〇2 從執行單元喊入單元中,接收 pop—她訊號344。真值的P〇pJ崎訊號344係表示載 回 從指令排㈣情接__出指令,求載人來自於;料 快取記憶體126的資料。 、 陶]控綱輯3〇2還會從執行單元m喊入單元中,接收 l〇ad_instr訊號346。真值的崎訊號346係表示載入單元回應於 從指令排程器中所接收到的載人指令,而正請求載人來自於資料 快取記憶體126的資料。 、
_2]控制邏輯3〇2還會從執行單元1M的儲存單元中,接收 ⑽―i她訊號348。真值的如叼她訊號34M系表示儲存單元回應 於從指令排㈣1G8巾所接收到_存指令,而正 料快取記憶體126。 [0063] 控制邏輯3〇2還會從執行單元114的整數單元中,接收 add一sp—instr喊352。真值的add_sp_instr訊號352係表示整數單元正 通知資料餘_體126,已從指令難ϋ 巾,魏咖加的堆 豐指標器指令(如χ86相加(AD·令)。在一實施例中,相加巨集指令 (如ADD ESP,imm指令)會將立即值加到堆疊指標暫存器。 [0064] 堆®快取記憶體124還包括位址產生器3〇6。位址產生哭施 會從圖1的暫存器檔案112中,接收運算元(如基礎值、偏移量7以及 記憶體描述符驗),並骑基於接收_值而產生虛擬位址334。虛 擬位址334為用以存取記憶體的指令(如推入、彈出、載入、或儲存指 令)之虛擬記憶體位址。在載入指令的情況中,虛擬位址334為載入資 料的虛擬來源位址。在儲存指令的情況中,虛擬位址334為儲存資料 的虛擬目的位址。在彈出指令的情況中,虛擬位址3从為彈出資料的 虛擬來源位址。絲人指令㈣況巾,虛擬位址334為推人資料的虛 擬目的位址。在-實施例中,位址產生器篇係包含於載入及儲存單 18 1249673 元中的每一個之中。 [0065] 堆璺快取記憶體124還包括轉譯旁視緩衝器(translad〇n lookaside buffer,簡稱 TLB)308,其耦接至位址產生器 3〇6。TLB 3〇8 會快取用來將虛擬位址334轉譯成實際位址336之分頁表資訊。在一 實施例中,只有實際位址336的較高部份會由TLB 3〇8來轉譯,而實 際位址336的較低部份只是對應於虛擬位址334的較低部份。在一實 施例中,最小的分頁大小為4KB ;因此,不會轉譯實際位址336之較 低的12個位址位元。 [0066] 堆疊快取記憶體124還包括二個比較器312,其耦接至位址鲁 產生态306。比較器312中的每一個會接收虛擬位址334。比較器312 中的一個會接收圖2的SCJag[0]訊號224之虛擬位址部份,而另一個 比較器312會接收SCJag[l]訊號224之虛擬位址部份。亦即,二個比 較器312會接收堆疊快取記憶體124之頂端二個項目之圖2的標籤2〇4 之各自的虛擬位址部份,並且會將各自的虛擬SCJag 224與虛擬位址 334進行比較。若虛擬sc—tag[0]224與虛擬位址334匹配,則第一比較 姦312會使VA—match[0]訊號362(其會傳送到控制邏輯3〇2)產生真 值。同樣地,若虛擬sc—tag[l]224與虛擬位址334匹配,則第二比較器 312會使VA一match[l]訊號362(其也會傳送到控制邏輯3〇2)產生真值。 控制邏輯302還會從堆疊快取記憶體124中,接收圖2的scJVffis叩5叫 汛唬222。控制邏輯302會使用VA—match[l:〇]訊號362及scJVIESI[l:〇] 汛唬222,來決定虛擬位址334是否命中堆疊快取記憶體124之頂端 一個項目中任一個,以執行來自於堆疊快取記憶體124的推測式載 入,如底下詳細地說明。亦即,控制邏輯3〇2會使用VA_match⑴〇] 虎362及SC-MESI[l:〇]訊號222,來決定虛擬位址334是否與虛擬 =ag[l:0]224巾的任-個之虛擬位址部份中的有效一個匹配。在虛擬 標籤204為雜湊的虛擬位址位元之實施例中,在送到比較器312之前, 19 1249673 會雜凑虛擬位址334。 [0067] 要注意的是,雖然圖3的實施例係敘述檢查堆疊快取記憶體 124之頂端二個項目,來決定是否可從此執行推測式載入,但是可包 含檢查超過二個頂端項目之其他實施例,以及可包含檢查唯一一個頂 端項目之另一實施例。檢查所包含的資料項目量愈大,偵測執行快速 載入的能力之可能性愈大。因此,快取線大小愈大,需檢查的項目數 目愈小。圖3的實施例可提供128個位元組的檢查。 [0068] 堆疊快取記憶體124還包括十六個比較器314,其耦接至 TLB308。比較器314中的每一個會接收實際位址336。比較器314中 _ 的每一個也會接收sc一tag[15:0]訊號224中的各自一個。亦即,比較器 314會接收各自的sc—tag訊號224上之標籤204之各自的實際位址部 份,並且會將其與實際位址336進行比較。若實際sc—tag[0]224與實際 位址336匹配,則第一比較器314會使PA一match[0]訊號364(其會傳送 到控制邏輯302)產生真值;若實際sc—tag[1]224與實際位址336匹配, 則第二比較器314會使PA一match[l]訊號364(其也會傳送到控制邏輯 302)產生真值;十六個比較器314中的每一個可以此類推。控制邏輯 302 會使用 PA—match[15:0]訊號 364 及 sc—MESI[15:0]訊號 222,來決 _ 定實際位址336是否命中堆疊快取記憶體124之項目中的任一個,以 執行來自於堆疊快取記憶體124的載入,並且用以決定推測式彈出或 載入疋否正確或錯誤推測地送出其資料’如底下詳細地說明。亦即, 控制邏輯302會使用PA—match[15:0]訊號364及sc—MESI[15:0]訊號 222 ’來決定實際位址336是否與sc—tag[15:0]224之實際位址部份中的 有效一個匹配。 [0069] 控制邏輯302還會產生sc—hit訊號389(其會傳送到執行單元 114的載入及儲存單元),以顯示彈出、推入、載入、或儲存指令所意 謂的快取線至少會推測式地存在於堆疊快取記憶體124中。在彈出指 20 1249673 令的情況中,在確認彈出來源位址命中堆疊快取記憶體124之前,控 制邏輯302會回應於真值的pop_instr訊號344,而推測式地產生真值 的sc_hit訊號389,如底下配合圖5的說明。在推入指令的情況中,若 scJVIESI[15:0]222 及 PA_match[15:0]364 係顯示實際位址 336 與堆疊快 取記憶體124中的有效實際位址標籤匹配,或者是若堆疊快取記憶體 124配置由實際位址336所意含的快取線,則控制邏輯302會產生真 值的sc一hit訊號389,如底下配合圖6的說明。在載入指令的情況中, 若sc—MESI[1:0]222及VA—match[l:0]362係顯示虛擬位址334與堆疊 快取記憶體124之頂端項目中的一個中之有效虛擬位址標籤匹配,則 控制邏輯302會推測式地產生真值的sc—hit訊號389,或者是若 scJVESI[15:0]222及PA—match[15:0]364係顯示實際位址336與堆疊快 取圮憶體124中的有效實際位址標籤匹配,則其會非推測式地產生真 值的sc一hit訊號389,如底下配合圖8的說明。在儲存指令的情況中, f sc—MESI[15:0]222 及 PA—mateh[15:〇]364 係顯示實際位址 336 與堆 f快取§己憶體I24中的有效實際位址標籤匹配,則控制邏輯搬會非 推測式地產生真值的sc_hit訊號389,如底下配合圖9的說明。曰 [0070]控制邏輯3〇2細·丨的非堆疊快取記憶體122中,接收 非sc—hit訊號娜。若實際位址336命中非堆疊快取記憶體122,則非 sc—hlt訊號366為真。控制邏輯3()2還會產生圖2的㈣―%訊號说 及pop一sc訊號234,其運作已於其中進行說明。 卿]堆疊快取記憶體m還包括暫存器您,叫接至 控制邏輯302,用以儲存稱為fp_〇ffset之值。暫存器322會輸出 T 396 5 3〇2 〇 fp offset 322 用來執仃來自於堆疊快取記憶體m的快速彈出 =明。如=從底下其餘圖式_是_ 7 _ 讀= 的’Φ—一會指定由最新近推入指令所指定之資料的堆 21 1249673 之頂端項目中所儲存的快取線内之位置。亦即,fp_〇ffset322 ^疋尚未彈出主記倾中的堆疊之推人指令的資料位置。在一實施 ^P〜〇ffSet322包括四個位元的值,用以指定堆疊快取記憶體124 旦^項目中所儲存之快取線2〇6中的十六個雙字組其中之一的偏移 控制邏輯302會監視堆疊指標器指令的彈出、推入、以及相加, 員先考慮堆豐指標暫存器⑸的變化,並且用以使电―識et 322的 值,堆疊指標暫存請的位元[5观持—致。在—實施射,當執
的載人、儲存、或整數單元係表示已各自產生堆疊指標器 二的彈出、推入、或相加時,控制邏輯302會更新fp—offset322。在 、=例巾控制邏輯302不需等待由寫回階段116來更新堆疊指標 ,存器152’就可以更新fp_Gffset322。藉由做此,堆触標㈣推入、 相加之接了來的彈出指令,或其他彈出指令不必延遲等待寫回階段Μ 來更新堆豐指標器I52,就可使用堆疊指標器⑸的預期值,然後可 從堆疊指標暫存器152中,得到寫回位元[5:2]。 ’、 [0072]堆疊快取記憶體124還包括十六個輸入的多工器318,其耦 接至,—offset暫存器您。在一實施例中,多工器318包括十六個輸 入’每個係用以接收sc_data[0]訊號226之十六個雙字組中的各自一 個。當執行快速彈出運算時’多工^ 318會接收當作選擇輸入的 fp一offset訊號3% ’以選擇sc_data[〇]之十六個雙字組中的一個,而輸 出fp_data398訊號,而會傳送到彈出指令。[⑻73]堆疊快取記憶體 還包括算術單元304,其耦接至控制邏輯3〇2。算術單元3〇4會接收 fp_offset 訊號 396。 [0074]算術單το 304還會接收來自於控制邏輯3〇2的減少訊號 384。若控制邏輯302產生真值的減少訊號384,則算術單元3〇4會使 fp_offSet訊號396所接收到的值減少,並且會使輸出372的值減^。 若減少運算導致潛位(underflow),則算術單元3〇4會產生真值的潛位
22 1249673 訊號388,其會傳送到控制邏輯3〇2。 [0二5]开術,兀304還會接收來自於控制邏輯3〇2的增加訊號 386右控制邏輯302產生真值的增加訊號386,則算術單元·會使 Φ—offset訊號396所接收到的值增加,並且會使輸出372的值增加。 運算導致溢位,則算術單元3〇4會產生真值的溢位訊號392, 其會傳送到控制邏輯302。 陣6]算術單元3〇4還會接收來自於控制邏輯搬的相加訊號 2。右控制邏輯302產生真值的相加訊號淑,則算術單元綱會將 P—識et訊號396所接收刺值相加,並且會使輪出372的值產生總 考口^相加導致溢位’則算術單元綱會產生真值的溢位訊號392。 貝蝴巾add—sp_val纖394係由圖!的執行單元114中的整 ==所產生。add—sp—val訊號394所產生的值為藉由將一值與堆疊 才曰才示器152相加的指令所指定之值。 [0077] 堆疊快取記憶體124還包括二個輸入的多工器316,其墟 至p—offset暫存益322。多工器316的輸出係耗接至年―〇胞暫存器 322的輸人。多工器316的一輸入會接收算術單元的輸出奶。多工器 316的另-輸入會接收堆疊指標暫存器152之輸出的位元间。多工器 316會從控制邏輯3〇2 +,接收當作選擇輸入的控制訊號⑽,以選擇 其輸入中的一個,而輸出到年-〇饱过暫存器。 [0078] 堆壹快取圮憶體124還包括十六個輸入的多工器326,其耦 接^控制邏輯搬。多工器326之十六個輸入中的每一個會接收ς於 十八個各自的sc—data[15:0]訊號226上之堆疊快取記憶體124之十六個 快取線206中的各自一個。多工器汹會選擇藉由控制邏輯3〇2所產 生的writeback一mux—sd訊號328所指定之十六個sc_data[15:〇御 中的-個。多工器326的輸出係用來當作寫回線緩衝器324的輸入。 寫回線緩衝器324的輸出係位於圖丨的匯流排136至匯流排介面單元 23 1249673 118上。控制邏輯302還會產生writeback_request訊號338,其也會傳 送到匯流排介面單元118。寫回線缓衝器324及writeback_request訊號 338係用來寫回從堆疊快取記憶體124到系統記憶體的快取線,如底 下所述。 [0079] 控制邏輯302還會產生真值的allocateJfill_buffer訊號397, 以配置用以將快取線提取到系統記憶體,或從微處理器1〇〇的另一個 快取記憶體(如堆疊快取記憶體124或L2快取記憶體)中,提取快取線 之填滿緩衝器,如底下所述。
[0080] 控制邏輯3〇2還會產生真值的例外訊號399,以表示已發生 例外情況,而使微處理器励分支到微碼記憶體128中的例外處理器, 如底下所述。 [0081] 控制邏輯 302 還會產生 Spec—sc—i〇adjnux一sel 訊號 391、 normal—sc—i〇ad—mux—sel訊號393、以及L1—㈤狀―记丨訊號邓5,其全部 特別會配合圖4,而於底下進行說明。 [0082] 現在參照圖4,所顯示的是繪示根據本發明之圖丨的l丨資料 ^取記憶體126巾的多工賴。資料快取記紐126包括四個輸入的
多工器402,其輸出係位於圖丨的匯流排138 ±。特別而言,多工器 402的輸ώ I38會將彈出及載入資料傳送到圖丨的執行單i丨丨 載入單元。 [0083]多工器4〇2的第一輸入會接收來自於圖i的的非堆叠快卑 憶體m之輸ώ資料432,以提供來自於非堆疊快取記憶體122的 入之資料。多工器402的第二輸入會接收十六個輸入的多工琴撕 輸出424 ’以提供來自於堆疊快取記憶體124的推測式載入之資料 多工器402的第三輸入會接收第二個十六個輸入的多工器概之輸 :=提供來自於堆疊快取記憶體124之正常,或非推測式載入之 。多工盗402的第四輸入會接收圖3的电—恤訊號柳,以提供 24 1249673 速彈出運算的資料。 [0084] 多工态404會從二個輸入的多工器412之輪出中,接收快取 線422的十六個雙字組。多工器4〇4會基於圖3的實際位址幻6之位 元[5:2]的選擇輸入,來選擇快取線422的十六個雙字組其中一。 [0085] 多工器406會從十六個輸入的多工器4〇8之輪出中,接收快 取線428的十六個雙字組。多工器406會基於實際位址336之位元[5:2] 的選擇輪入,來選擇快取線428的十六個雙字組其中一。 [0086] 多工态412的二個輸入會經由sc一data[l:〇]訊號226,來接收 堆疊快取記憶體124之頂端二個項目的快取線。多工器412會基於圖 馨 3 的 spec—scjoad mux—sel 訊號 391,來選擇二條快取線 sC—data[1:0]226 其中一,而輸出訊號422,其控制邏輯302係基於badjnstr訊號346、 VA」natoh[l:〇]訊號362、以及SC-MESI[1:0]訊號222之值而產生,如 底下所述。 [0087] 多工器408之十六個輸入中的各自一個會經由 訊號226,來接收堆疊快取記憶體124之十六個項目的快取線。多工 器408會基於圖3的normal—sc一load—mux—sel訊號393,來選擇十六條 快取線sc—data[15:0]226其中一 ’而輸出訊號428,其控制邏輯302係 . 基於 load—instr 訊號 346、PA—match[15:0]訊號 364、以及 sc—MESI[l5:0] 訊號222之值而產生,如底下所述。 [0088] 現在參照圖5 ’所顯示的是繪示根據本發明之來自於圖1的 堆疊快取記憶體124之快速彈出運算的流程圖。流程會從方塊5〇2開 始。 [0089]在方塊502,圖1的指令解譯器1〇6會將彈出指令解碼,以 及圖1的指令排程器108會將彈出指令傳送到圖1之執行單元114中 的載入單元。回應時,載入單元會使圖3的popjnstr訊號344產生真 值。流程會繼續進行方塊504。 25 1249673 [0090]在方塊504 ’多工器31係基於目前儲存於圖3的 暫存器322中之值,來選擇位於φ—data訊號398上,來自於堆最〇 = 記憶體124的頂端項目中之快取線sc—data[0] 226的適當雙字組二:
於真值的pop—instr訊號344,圖3的控制邏輯3〇2田會使H Ll—mux—sel訊號395產生一值,而使圖4的多工器術曰選擇圖3的 fp—data 398 ’其會經由匯流排138而傳送到執行單元114中的載入时 元,而傳送到彈出指令,其寫回階段W接下來會載入到彈出指人: 所指定之圖1的暫存器檔案112中之暫存器其中之—。例如,若料 指令為x86返回(RET)指令,則會將彈出資料載入到暫存器槽案ιΐ2 的指令指標暫存器中。例如,若彈出指令為滿彈出(ρ〇ρ)^,則 會將彈出資料載入到彈出指令中所指定之暫存器槽案m的暫存器 中。如可從圖5中觀察得知,會將資料推測式地傳送到載入單元。因 為此運算尚未球認彈出指令的來源位址(其接下來將在方塊训,在實 際位址336產生)與從堆疊快取記憶體124的頂端項目傳送到載入單元 的彈出資料之位址相同,所以其為推測式。再者,回應於真值的 pop—instr訊號344,控制邏輯3〇2會使圖3的sc—此訊號389(其會傳 送到執行單元114巾的私單元)產生餘。錄會_進行方塊5〇6。 [0091]在方塊5〇6,控制邏輯3〇2會產生真值的增加訊號挪,以 及异術單元304會回應地增加φ—〇ffset抑6,並且會使輸出372的值增 加,其控制邏輯302會導致多工器316經由控制訊號368,來進行選 擇’而載入到圖3的fp—0ffset暫存器322。流程會繼續進行判斷方塊 508 〇
[0092]在判斷方塊508,控制邏輯3〇2會檢查溢位訊號392,以判 斷在方塊506所執行的增加運算是否會造成fp_〇ffset 322的溢位。亦 即,控制邏輯3〇2會判斷彈出運算是否將會造成堆疊指標器⑸覆蓋 下個快取線。若如此,則流程會繼續進行方塊512,·否則,流程會繼 26 1249673 續進行方塊514。 [0093] 在方塊512,控制邏輯302會產生真值的p〇p—sc訊號234, 而使頂端項目彈出堆疊快取記憶體124。因為頂端項目中所儲存的快 取線中所儲存的快取取線中的最後雙字組現在正藉由彈出指令而彈出 糸統5己彳思體堆豐’所以將頂端項目彈出堆疊快取記憶體IN,可使堆 疊快取記憶體124與系統記憶體快取記憶體保持一致。在一實施例 中,方塊512直到已執行方塊518(底下會進行說明),才會執行,:致 於實際位址336會與資料會於方塊5〇4期間,從其中產生之項目的 sc—tagtO] 224值進行比較。在一實施例中,會儲存方塊5〇4所使用的 # sC—tag[0] 224值,其接下來會用於方塊518。雖然已敘述fp_〇ffset奶 係保持為雙字組偏移量,以容納雙字組的推入及彈出指令的一實施 例,但是可包含容納其他的推入及彈出資料大小(如字組、位元組、'或 四字元組)之其他實施例。流程會繼續進行方塊514。 [0094] 在方塊514,位址產生器306會計算彈出指令之圖3的來源 虛擬位址334。流程會繼續進行方塊516。 [0095] 在方塊516,TLB 308會產生彈出指令之圖3的來源實際位 址336。流程會繼續進行方塊518。 _ [0096] 在方塊518,圖3的比較器314其中之一會將方塊516所產 生的實際位址336,與圖2的實際sc_tag[0] 224進行比較,而產生圖3 的PA__match[0]訊號364。流程會繼續進行判斷方塊522。 [0097] 在判斷方塊522 ’控制邏輯302會檢查圖2的sc MESI[0]訊 號222,以及PA—match[0]訊號364,以判斷堆疊快取記憶體124的頂 端項目是否有效,以及彈出指令的來源實際位址336是否與頂端堆疊 快取記憶體124項目的實際標鐵204匹配,亦即,實際位址是否 會命中堆疊快取記憶體124的頂端項目。在一實施例中,實際位址336 的位元[5:2]也會與用來選擇位於fp一data 398上的雙字組之fp 0ffset 27 1249673 396的值進行比較,以確認已產生正確的雙字組 址336命中堆疊快取記憶體124的頂端項目,流^ 式快速彈出運算會產生正確的彈出資料)。否則, -組。若彈出指令來源位 流程會結束(亦即,推測 丨,流程會繼續進行方塊 [0098]在方塊 524,
生不正確的彈出資料之情況。在一實施例中, 用以處理推測式快速彈出運算產 施例中,例外處理器會刷新堆疊 快取記憶體m,並且將堆疊指標暫存器⑸之位元[Μ]的目前值二 到fP—offset暫存器322。例外處理器會將正確資料傳送到彈出指令。瘳 在-實施例中,刷新堆疊快取記憶體124包括寫回到系統記情體了或 堆疊快取記憶體124至系統記憶體之L2快取記憶體的任何有效快取 線。流程會在方塊524結束。 ;、[0099]如可觀察得知,以及如將配合目1〇,而於底下進行更詳細地 說明’配合B 5所述職速彈出運算使傳送到彈出指令轉出資料, 了比使用彈出彳a令與載人指令之間並無區別的傳統快取記憶體快多個 時脈週期。 [0100] 現在參照圖6,所顯示的是繪示根據本發明之圖丨的堆疊快 取記憶體124之推入運算的流程圖。流程會從方塊6〇2開始。 [0101] 在方塊602,圖1的指令解譯器1〇6會將推入指令解碼,以 及圖1的指令排程器108會將推入指令傳送到圖丨之執行單元114中 的儲存單元。回應時,儲存單元會使圖3的push—instr訊號342產生真 值。流程會繼續進行方塊604。 [0102] 在方塊604,控制邏輯302會產生真值的減少訊號384,以 及异術單元304會回應地減少fp—0ffset 396,並且會使輸出372的值減 少’其控制邏輯302會導致多工器316經由控制訊號368,來進行選 擇,而載入到圖3的fp—offset暫存器322。此外,回應於真值的push_instr 28 1249673 訊號342 ’控制邏輯302會產生真值的sc_hit訊號389 ’其會傳送到執 行單元114中的儲存單元。流程會繼續進行方塊606。 [0103] 在方塊606,位址產生器306會計算推入指令之圖3的目的 虛擬位址334。流程會繼續進行方塊608。 [0104] 在方塊608,TLB 308會產生推入指令之圖3的目的實際位 址336。流程會繼續進行方塊612。 [0105] 在方塊612,圖3的比較器314其中之一會將方塊516所產 生的實際位址336,與圖2的實際sc_tag[0] 224進行比較,而產生圖3 的PA_match[0]訊號364。流程會繼續進行判斷方塊614。 [0106] 在判斷方塊614,控制邏輯302會檢查圖2的SCJMESI[0]訊 號322 ’以及PA—match[0]訊號364,以判斷堆疊快取記憶體124的頂 端項目是否有效,以及推入指令的目的實際位址336是否與頂端堆叠 快取記憶體124項目的實際標籤204匹配,亦即,實際位址336是否 會命中堆疊快取記憶體124的頂端項目。若如此,流程會繼續進行方 塊616。否則,流程會繼續進行判斷方塊618。在一實施例中,若實際 位址336命中除了頂端項目之外之堆疊快取記憶體ι24的一項目,則 在將有效項目寫回到系統記憶體之後,會刷新堆疊快取記憶體124, 然後流程會繼續進行方塊616。 [0107] 在方塊616,推入資料係經由sc一write—data訊號216而存入 堆登快取記憶體124的頂端項目,而成為藉由實際位址336的位址位 元[5:2]所表示之快取線2〇6的雙字組偏移量。若需要的話,頂端項目 的MESI狀態202會經由sc—write—MESI訊號212來更新,如更新為修 改的值。推入資料係從由推入指令所指定的暫存器檔案112之暫存^ 中獲,。例如,若推入指令為x86呼叫(CALL)指令,則推入資料為二 暫存讀案112的指令指標暫存器中所計算的下個循序指令指標器。 例如,若推入指令為x86進入(ENTER)指令,則推入資料為暫存器:檔 29 1249673 案112之X86腳暫存器中的值。例如,若推入指令為X86推入(PUSH) 齡,_人資料為推人指令中所指定之暫存器檔案ιΐ2中的暫存 器。流程會在方塊616結束。 在判斷方塊618,因為推入資料的目的位址未命中堆疊快取 記憶體12田4,所以對於由推人目的位址336所意含的快取線而言,必 須配置堆疊快取記憶體124中的新項目(稱為頂端項目)。因為將會使堆 疊快取記㈣124向下移位,以配置新快取線的頂端項目,所以底部 項目需移出堆疊快取記憶體124。因此,控制邏輯搬會檢查 sc—MESI[15] 222 ’以判斷底部堆疊快取記憶體以項目是否有效。若 如此,則流程會繼續進行方塊622 ;否則,流程會繼續進行方塊624。 [0109] 在方塊622,控麵輯302係藉由使writeback—謹― 訊號328產生一值,來安排底部堆疊快取記憶體124項目的寫回,而 使多工器326選擇sc—data[15] 226(亦即,底部堆疊快取記憶體124項 目的快取線),其會傳送到寫回線緩衝器324,然後會產生真值的 wnteback—request訊號338,來請求圖1的匯流排介面單元118,而將 快取線寫回至L2快取記憶體的系統記憶體。流程會繼續進行方塊624。 [0110] 在方塊624,控制邏輯302會使pUSh—sc訊號322致能,而 使堆疊快取記憶體124向下移位一個項目,並且分別會經由 sc—write—data 訊號 216、sc一write—tag 訊號 214、以及 sc_write—MESI 訊 號212而將推入資料、其標籤、以及meSI狀態存入堆疊快取記憶體 124中。流程會繼續進行方塊626。 [0111] 在方塊626,控制邏輯302會配置充滿緩衝器,而產生藉由 推入指令的目的位址336所意含的快取線之堆疊快取記憶體124之所 有權’並且會提取意含的快取線。在一實施例中,方塊626包括窺視 (snooping)非堆疊快取記憶體122及L2快取記憶體,以及若意含的快 取線係存在於其他二個快取記憶體之任一個中,則意含的快取線會從 1249673 非堆疊快取記憶體122或L2快取記憶體_獲得。流程會繼續進行方塊 628。 [0112] 在方塊628,意含的快取線係收入方塊626所配置的充滿緩 衝器中,並且快取線資料會與方塊624,存於其中的推入資料合併, 而成為堆疊快取記憶體124的頂端項目。流程會在方塊628結束。 [0113] 現在參照圖7’所顯不的是繪不回應於根據本發明的堆疊指標哭 指令之相加之圖1的微處理器100之運算的流程圖。如以上所述,快速彈 出運算係利用在大部份的通用程式中,推入指令與彈出指令之間有一 對一的對應關係。亦即,每個推入指令最終會接著對應的彈出指令。 然而,考慮子常式參數的通過時,此規則會有一個顯著的例外,現在 將配合x86指令來進行說明。 會執
ΐυι 14]例如,在C語言中,棚ε翏數會得到系統記憶體堆疊。會, 行一串推入指令(每個參數係對應一個推入指令 I 例如,在呼替綱録元__之前,行 五個推入指令,而將五個參數推人堆疊。雜呼叫函數會執行ς叫指 令’其會將返回位址推人堆疊,並且使控制轉移到子 行的最後齡為返回(RET)齡,其會使返回健彈鱗疊 現在必須要求恢復由參數所佔據的堆疊之空間。—一: 五個彈出指令,以在將參數推人堆疊之前,使堆 ::一 指令’而將參數所佔據輕間大小加轉刚標器。亦即0 行五個彈&齡之外,編譯聽產生較快塊顿單 二了 f 以上的例子中,呼叫常式會將2〇加到堆疊指㈣。〜 σ曰7。在 令未匹_最普遍次序。因此,在—魏例;及彈出指 於將-值相加到堆疊指標關指令解碼, 、,妓置係有助 值。流程會從方塊702開始。 、曰’ fp-offset 322的 31 1249673 [0115] 在方塊702,圖1的指令轉譯器106會將目的為圖}的堆疊 指標暫存器152的相加指令解碼,並且圖丨的指令排程器1〇8會將相 加指令傳送到圖1之執行單元114中的整數單元。回應時,整數單元 會使圖3的add—sp—instr訊號352產生真值。流程會繼續進行方塊7〇4。 [0116] 在方塊704,控制邏輯302會產生真值的相加訊號382,以 及算術單元304會回應地將add—sp—val 394加到fp一0ffset 396,並且會 使輸出372產生總和,其控制邏輯302會導致多工器316經由控制訊 號368,來進行選擇,而載入到圖3的fp一offset暫存器322。流程會繼 續進行判斷方塊706。 [0117] 在判斷方塊706,控制邏輯302會檢查溢位訊號392,以判 斷在方塊704所執行的相加運算是否會造成fp—〇ffset 322的溢位。亦 即,控制邏輯302會判斷相加指令是否將會造成堆疊指標器152覆蓋 另一快取線。在方塊706,溢位情況為相加造成堆疊指標器152不再 參考堆疊快取記憶體124之頂端項目中所儲存的快取線之情況。特別 而言,若相加造成溢位,則堆疊指標器152通常會參考記憶體位址緊 鄰且大於堆疊快取記憶體124之頂端項目中所儲存的快取線之記憶體 位址的快取線。因此,堆疊快取記憶體124必須使存在於頂端項目中 之正確快取線依序彈出。在一實施例中,控制邏輯3〇2可容納溢位超 過一條快取線之堆疊指標器152的相加。在此實施例中,底下之從方 塊708的堆疊快取記憶體丨24彈出之項目的數目N係計算如下,假設 快取線大小為64個位元組: N=(fp_〇ffset+add_sp_val)/64 因此,若N大於1,則溢位已發生。若溢位情況發生,則流程會繼 續進行方塊708 ;否則流程會結束。 [0118] 在方塊708,控制邏輯302會產生真值的p〇p_sc訊號234, 以使頂端項目彈出堆疊快取記憶體124。然而,首先控制邏輯3〇2會 32 1249673 、,斷子於頂^項目中的快取線是否有效,而若如此,會安排將有效快 取f寫回到系、統記憶體或L2快取記憶體,與圖6的方塊622之寫回的 目之方式類似。如以上配合方塊706所討論的,在一實施例中, 二I十异N的值,並且N個項目會從堆疊快取記憶體124彈出,以及會 ,、、、回N個項目中的所有有效快取線。流程會在方塊观結束。 田[〇119]現在參照圖8,所顯示的是繪示根據本發明之來自於圖工 2取3己憶體124之載入運算的流程圖。圖8包括圖8Α、8β、以及叱,
It全體。一般而言,圖8A係繪示來自於圖1的堆疊快取記憶 之下〜測式载入運算;圖8B鱗示來自於堆疊快取記憶體124 夕/載入運异;而圖8C係繪示來自於圖1的非堆疊快取記憶體122 之戟入。流程會從方塊8〇2開始。 祕卜以5型雜式巾,紐記鋪堆疊㈣—種主要使用是配置 數ΐ配置J式ί地變數t1 variable)6^Fa1。子程式係藉由本地變 本地料鮮而使堆疊指標11降低,來配置堆4上的空間。然後, 令來堆疊指標时關的偏移量所計算的錄之载入指 同:?有可能载入資料與最新近推入的資料位於相 Γ很有可能子常式將會執行載入指令,來存取藉由 線二推二:=:可能推入的參數將會跨越二條快取 w ^ ㈢w成覆蓋到下條快取線,如配合圖6 的t塊18到628所述。因此,某些參數將位於堆疊快取雜體124 之,項目的下一個(而不是頂端項目: 個諸如此類)之快取線中。因此 疋^貞目的下一 ^ 124 =料是否存,頂端二個項目中之此事實由 1 項目,可避靡嫩軸^個 [_]此外’在一實施例中,推測式載入可藉由使=入寺= 33 1249673 位址334 ’而不是實際位址336,夾 钟在於頂端二_中,__===== 端二個項目其中之-匹配,則_ ^右虛擬位址與頂 =有可能載入資料― ^中,堆疊快取記憶體124使推測式載入運算 禮 =料之是作職統X作切換 的虛擬位祕配。在-實施财,特暇在朗堆疊位址區段 ,存為(如Χ86架構中的SS暫存器)之微處理器觸中,舉例而言
豐快取記憶體124使推測式載入運算推測式地產生不正確資料之原因 是更新堆疊區段暫存H(其會影響有效位址計算),藉此可能產生錯誤的 虛擬位址匹配。 [0122] 雖然圖8係敘述檢查堆疊快取記憶體124中的頂端二個項目 ,當作執行推測式載人運算的候選者之—實施例,但是推測式載入運 算並不受限於檢查特定數目的頂端堆疊快取記憶體124項目,並且可 包含藉由來自於堆疊快取記憶體124的推測式載入運算來檢查之堆疊 快取^憶體124中之各種數目的項目之各種實施例。
[0123] 在方塊802,圖1的指令轉譯器106會將載入指令解碼,並 且圖1的指令排程器108會將載入指令傳送到圖丨之執行單元114中 的載入單元。回應時,載入單元會使圖3的load—instr訊號346產生真 直。流程會繼續進行方塊804。 [0124] 在方塊804,位址產生器306會計算載入指令之圖3的來源 虛擬位址334。流程會繼續進行方塊806。 [0125] 在方塊806,圖3的二個比較器312會將方塊804所產生的 虛擬位址334與圖2的虛擬sc-tag[l:0]進行比較,而產生圖3的 VA_match[l:0]訊號362。流程會繼續進行判斷方塊808。 [0126] 在判斷方塊808,圖3的控制邏輯302會檢查圖2的 34 1249673 sc—MESI[1:0]訊號222及VA—match[l:0]訊號362,以判斷堆疊快取記 憶體124之頂端二個項目中的任一個是否有效,以及載入指令的來源 虛擬位址334是否與頂端二個堆疊快取記憶體丨24項目之標籤2〇4的 虛擬部份匹配,亦即,虛擬位址334是否命中堆疊快取記憶體124之 頂端二個項目。若如此,流程會繼續進行方塊812。否則,流程會繼 續進行圖8的方塊824。 [0127] 在方塊812’回應於真值的i〇a(j—instr訊號346,控制邏輯302 會使spec—sc—load一mux—sel訊號391產生一值,而使多工器412選擇位 於圖4的訊號422上之堆疊快取記憶體124之二條快取線如―如叩叫 φ 226中的一個,其係在判斷方塊8〇8判斷出具有與載入指令的來源虛 擬位址334匹配之有效虛擬標藏204。此外,多工器404會從藉由位 於圖4的訊號424上之實際位址[5:2]所指定之快取線422中,選擇雙 子組。另外’控制邏輯3〇2會使圖3的LI—mux—sel訊號395產生一值, 而使圖4的多工器402選擇會經由匯流排138而傳送到執行單元114 中的載入單元’而傳送到載入指令之輸入424,其寫回階段116接下 來會載入到載入指令中所指定之圖丨之暫存器檔案112中的暫存器其 中之一。如可從圖8A中觀察得知,傳送到載入單元的資料為推測式。 因為此運异尚未確認載入指令(其接下來將於方塊814的實際位址 產生)的來源貫際位址,與從堆疊快取記憶體124之二個頂端項目中的 一個傳送到載入單元的載入資料之位址相同,所以此運算為推測式。 回應於方塊808之虛擬位址334命中堆疊快取記憶體124中的頂端二 個項目之偵測’控制邏輯3〇2會產生真值的sc—hit訊號389,其會傳送 到執行單元114中的載入單元。流程會繼續進行方塊814。 [0128] 在方塊814,TLB 308會產生載入指令的來源實際位址330。 流程會繼續進行方塊816 〇 [0129] 在方塊816,圖3的比較器314中的二個會將方塊814所產 35 1249673 生的實際位址336,與從其中,載入資料會推測式地於方塊812產生 之實際sc—tag[l:0] 224進行比較,而產生圖3之各自的从—脱化叩叫 訊號364。流程會繼續進行判斷方塊818。 [0130] 在判斷方塊818,控制邏輯3〇2會檢查從其中,載入資料會 推測式地於方塊812產生之對應於堆疊快取記憶體124的此項目之 PA—matoh[l:0]訊號364 ’來判斷載入指令的來源實際位址336是否與 此項目的實際標籤204匹配;亦即,實際位址336是否命中此項目。 若載入指令來源位址336命中堆疊快取記憶體丨24的推測式項目,則 流程會結束,亦即,推測式載入運算會產生正確的彈出資料。否則, 流程會繼續進行方塊822。 [0131] 在方塊822,控制邏輯302會產生真值的例外訊號399,而 使微處理器100分支到用以處理推測式載入運算產生不正確載入資料 的情況之例外處理器。例外處理器會使正確資料傳送到載入指令。在 一實施例中,例外處理器會從非堆疊快取記憶體122或系統記憶體或 L2快取記憶體中’載入正確資料。流程會於方塊822結束。 [0132] 如可觀察得知,以及如將於底下配合圖η之更詳細地討論, 配合圖8Α所述之來自於堆疊快取記憶體124的推測式載入運算使傳送 到載入指令的載入資料能比傳統快取記憶體可能快多個時脈週期。 [0133] 在圖8Β的方塊824,TLB308會產生載入指令的來源實際位 址336。流程會繼續進行方塊826。 [0134] 在方塊826 ’圖3的比較器314會將方塊824所產生的實際 位址336,與十六個堆疊快取記憶體124項目中的每一個之實際 sc_tag[15:0]進行比較,而產生PA—match[15:0]訊號364。流程會繼續進 行判斷方塊828。 [0135] 在判斷方塊828,控制邏輯302會檢查SCJV1ESI[15:0]訊號 222及PA_match[15:0]訊號364,來判斷堆疊快取記憶體以項目中的 36 1249673 任一個是否有效,以及載入指令的來源實際位址336是否與有效堆疊 快取記憶體124項目的實際標籤204匹配,亦即,實際位址336是否 命中堆疊快取記憶體124。若載入指令來源位址336命中堆疊快取記 憶體124,則流程會繼續進行方塊832 ;否則,流程會繼續進行圖8C 的方塊834。 [0136] 在方塊832,回應於真值的load_instr訊號346,以及回應載 入指令的來源虛擬位址334未命中堆疊快取記憶體124的頂端二個項 目,以及回應於載入指令來源位址336命中堆疊快取記憶體124,控 制邏輯302會使normal_sc—load—mux—sel訊號393產生一值,而使多❿ 工器408選擇位於圖4的訊號428上之堆疊快取記憶體124之十六條 快取線sc一data[l5:0]中的一個,其係在判斷方塊828判斷出具有與載入 指令的來源實際位址336匹配之有效實際標籤204。此外,多工器4〇6 會從藉由位於圖4的訊號426上之實際位址[5:2]所指定之快取線428 中’選擇雙子組。另外’控制邏輯302會使L1 一mux一sel訊號395產生 值而使夕工器402選擇會經由匯流排138而傳送到執行單元U4 中的載入單元,而傳送到載入指令之輸入426,其寫回階段116接下 來會載入到載入指令中所指定之圖1之暫存器檔案112中的暫存器其 中之一。回應於方塊828之實際位址336命中堆疊快取記憶體124之 偵測’控制邏輯302會產生真值的sc—hit訊號389,其會傳送到執行單 元114中的載入單元。流程會在方塊結束。 [0137] 如可觀察得知,以及如將於底下配合圖12之更詳細地討論, 配合圖犯所述之來自於堆疊快取記憶體m的正常載入運算使傳送到 載入指令的載人資料能比傳統快取記憶體(如非堆疊快取記憶體 可能至少快一個時脈週期。 [0138] 在圖8C的方塊8对,非堆疊快取記憶體122會接收圖犯 之方塊824所產·實際紐336之索引部份,並且會回應地執行索 37 Ϊ249673 引的列解碼’以選擇非堆疊快取記憶體122十的一列,或一組路_)。 流程會繼續進行方塊836。 [〇139]在方塊836 ’非堆疊快取記憶體m會將方塊幻4所產生的 實際位址336中的上方,或標籤部份,與方塊Μ4所選擇之此組中的 每路之實際位址標籤進行比較。流程會_進行機方塊㈣。 、[〇14〇]在判斷方塊838,非堆疊快取記憶幻22會檢查方塊請與 選擇路的有效位元之味結果,以靖載人實際紐挪是否命中非 堆疊快取記憶體m。若如此,流程會繼續進行方塊842;否則,流程 會繼續進行方塊844。 [〇⑷]在方塊撕’非堆疊快取記憶體122會從實際位址视命中 的非堆疊快取記憶體122之項目中,產生載入資料。流程會在方塊如 _ [0142]在方塊844,回應於觸方塊錢觸載入實際位址336未 "p中非堆疊快取記憶體122,非堆疊快取記憶體122會配置一項目於 其中’用喊人域人齡的實際位址336所意含的失誤快取線。流 程會繼續進行方塊846。 [0143] 在方塊846,非堆疊快取記憶體122會將來自於系統記憶體 或L2快取記憶體的失誤快取雜取到方塊m戶斤配置之非堆疊快取記 憶體122、中的項目。流程會繼續進行方塊848。 [0144] 在方塊848,非堆疊快取記碰122會從方塊846所提取的 快取線中,產生載入資料。流程會在方塊8你結束。 陣]在-實施例中,圖8C的方塊⑽到柳係根據傳統的快取 雜體技術來執行。卿,圖sc係繪示來自於傳統非堆疊快取 m的傳、統載入’其係在載入位址336未命中堆疊快取記憶體以 事件中執行。 [0146]現在參賴9,所顯示的是繪雜據本發明之圖丨㈣快取記 38 1249673 憶體126之儲存運算的流程圖。流程會從方塊9〇2開始。 [0147] 在方塊902,圖1的指令解譯器106會將儲存指令解碼,並 且圖1的指令排程器108會將儲存指令傳送到圖1之執行單元114中 的儲存單元。回應時,儲存單元會使圖3的st〇re—instr訊號348產生真 值。流程會繼續進行方塊904。 ’ [0148] 在方塊904,位址產生器306會計算儲存指令之圖3的目的 虛擬位址334。流程會繼續進行方塊906。 [0149] 在方塊906 ’ TLB 308會產生儲存指令之圖3的目的實際位 址336。流程會繼續進行方塊908。 [0150] 在方塊908 ’圖3的比較器314會將方塊906所產生的實際 位址336,與十六個堆疊快取記憶體124項目中的每一個之實際 SC_tag[15:0]進行比較,而產生PA—match[15:〇]訊號364。流程會繼續進 行判斷方塊912。 ' [0151] 在判斷方塊912,控制邏輯302會檢查sc—MESI[15:0]訊號 222及PA_match[15:0]訊號364,來判斷堆疊快取記憶體124項目中的 任一個是否有效,以及儲存指令的目的實際位址336是否與有效堆疊 快取3己憶體124項目的實際標籤204匹配,亦即,實際位址336是否 命中堆疊快取記憶體124。若儲存指令目的位址336命中堆疊快取記 憶體124,則流程會繼續進行方塊914 ;否則,流程會繼續進行方塊 916 〇 [0152] 在方塊914,儲存資料係經由sc—write—data訊號216而存入 判斷方塊912所決定之堆疊快取記憶體124的有效匹配項目,而成為 藉由貫際位址336的位址位元[5:2]所表示之快取線2〇6的雙字組偏移 里右舄要的活頂、項目的MESI狀態202會經由sc_write—MESI 訊號m來更新’如更新為修改的值。儲存資料係從由儲存指令所指 定的暫存器或記憶體位置中獲得。例如,若儲存指令為用以指定一般 39 1249673 用途暫存器為儲存資料的來源之x86移動(M0V)指令,則儲存資料係 位於如MOV齡漏來源運算元定之暫存器難112中的暫存 器中。回應於實際位址336命中堆疊快取記憶體m之方塊912的偵 測,控制邏輯302會產生真值的sc_hit訊號389,其會傳送到執行單元 114中的儲存單元。流程會在方塊914結束。 [0153] 在方塊916,方塊906所產生的實際位址336之標籤部份會 與藉由實際位址336的索引部份所選擇之非堆疊快取記憶體122之二 組中的每路之實際標籤進行比較。流程會繼續進行判斷方塊918。 [0154] 在判斷方塊918,控制邏輯302會檢查非scJlit訊號366, 以判斷儲存指令的目的實際位址336是否命中非堆疊快取記憶體 122。若如此,流程會繼續進行方塊922 ;否則,流程會繼續進行方塊 924 〇 [0155] 在方塊922,儲存資料會存入判斷方塊918所決定之非堆疊 快取記憶體122之選擇組的有效匹配路中。流程會在方塊922結束。 [0156] 在方塊924,回應於判斷方塊918判斷儲存實際位址幻6未 〒中非堆疊快取記憶體122,非堆疊快取記憶體⑵會配置一項目於 其中,用以儲存由儲存指令的實際位址336所意含的失誤快取線。流 程會繼續進行方塊926。 [0157] 在方塊926,非堆疊快取記憶體122會將來自於系統記憶體 或L2快取記憶體的失誤快取線提取到方塊924所配置之非堆疊快取記 憶體122中的項目。流程會繼續進行方塊928。 [0158] 在方塊928,非堆疊快取記憶體122會將儲存資料存入方塊 926所提取之快取線。流程會在方塊928結束。 [0159] 在一實施例中,圖9的方塊9〇2到9〇6,以及方塊916到 係根據傳統的快取記憶體技術來執行。亦即,方塊9〇2到9〇6,以及 方塊916 $彳928係繪示傳統非堆疊快取記憶豸122的傳統儲存,其係 1249673 在儲存位址336未命中堆疊快取記憶體 陶現在參照圖1G,所顯示的是 事=執行。 叠快取記憶體m之圓5的快速 於根據本發明之圖1的堆 為1到4的四行,苴對瘅於外- 、的時序圖。圖10包括稱 括五列,所桿^的每=⑽的四個時脈週期。圖⑴還包 -之已知列與行的每健形為=處=^括的=動作或結果。圖 t5 ^^502〇 ll7s 114 產生真值,以請求彈出指令的彈出資料。 P—mstr而虎344 _2]在時脈週期2卜根據第二列,圖】的堆疊快取記% ,所f定的頂端項目中之快取線中,將資料傳送到彈 曰:、'而S ’多工器318會從位於來自於頂端堆疊快取記情體 226 ^ Φ-〇^;6 ϋ 並且多工器舰會選擇輸入398。此外, 隹碰取把憶體124會以sc—hit訊號娜,來表示彈出指令命中載 =亦即^疊快取記憶體124會指示載入單元,彈出指令的資料係 子一於堆豐快取記憶體124巾。如配合圖5之以上的討論,因為命中 指示sc—hit湖尚未確認彈出指令的來源位址(其將於時脈週期3產生) 與f會在時脈週期3中’從堆疊快取記憶體124的頂端項目傳送到載 入單70之彈出資料的位址相同’所以其為推測式。在—實施例中,表 不彈出指令命中載入單元的SC—hk訊號389為圖2的有效位元 SC一MESI[〇] 222之閘口(gate),以致於堆疊快取記憶體124不會顯示彈 出指令命中載入單元,除非堆疊快取記憶體124中的頂端項目為有 效。亦即,雖然在表示彈出命中之前,控制邏輯302不會確認位址匹 配’但是會確認堆疊快取記憶體124中的頂端項目為有效。 41 1249673 [0163] 在時脈週期2中,根據第三列,位址產生器3〇6係根據圖$ 的方塊514,來計算圖3的虛擬位址334。 [0164] 在時脈週期3中,根據第四列,TLB 3〇8係根據圖5的方塊 516,而產生彈出指令之圖3的來源實際位址336。 [0165] 在時脈週期4中,根據第五列,控制邏輯3〇2係根據圖5的 方塊518到524,來偵測堆疊快取記憶體124產生不正確彈出資料的 情況。 ^ [0W6]如J藉由比較圖1〇與圖13而得知(其係於底下進行說明" 快速彈出運算有助於使L1資料絲記倾126產生㈣齡的資料可 比傳統快取記憶體(其不會在彈出指令與載入指令之間進行區別)快 個時脈週期。 ' ,刀在-實施例中,實際位址说的位元网係用來選擇雙字 組,而不是fP—offset 396 ’並且在時脈週期3,而不是在時脈週期 會產生資料。 [0168]現在參照圖u’所顯示的精示來自錄據本發明之圖8的 疊快取記憶體124運算之推測式載入的時序之時序圖。u包括稱為^ 到4的四订’其對應於微處理器1〇〇的四個時脈週期。圖U還包括六 列,所標示的每-個係表示微處理器觸的不同動作或結果。圖^ 已知列與行的每個矩形輕白,或者是包括字「載人(丨㈣」,用以表 示當載入指令向下經過微處理器繼管線時,載入指令的位置。、 [〇169]在時脈週期1中,根據圖11的第-列,圖1之執行單元114 中的載入單元係根_ 8的方塊8G2,而使圖3的福—丨她訊號冰 產生真值,以请求載入指令的載入資料。 [0170] 在時脈週期2中,根據第二列,位址產生器獅係根據圖8 的方塊804,來計算圖3的虛擬位址。 [0171] 在時脈週期3中,根據第三列,圖3的比較器312係根據圖 42 1249673 8的方塊806,執行虛擬標籤比較,而產生圖3的VA_match[1:〇]訊號 362。此外’控制邏輯302係根據圖8的方塊812,基於VA_match[l:0] 訊號362及圖2的scJVIESI[l:〇]訊號222,而產生圖3的 spec一sc_load—mux—sel 391。此外’圖1的堆疊快取記憶體124會經由 sc—hit訊號389,來表示載入指令命中載入單元。亦即,堆疊快取記憶 體I24會指示載入單元,載入指令的資料係存在於堆疊快取記憶體124 中。如配合圖8之以上的討論,因為命中指示尚未確認載入指令的實 際來源位址336(其將於時脈週期3產生)與將會在時脈週期4 中,從堆 疊快取記憶體124傳送到載人單元之載人資料的位址相同,所以其為 推測式。 [0172] 在時脈週期3中,根據第⑸列,TLB 3〇8係根據圖8的方塊 814,而產生彈出指令之圖3的來源實際位址336。 [0173] 在時脈週期4中,根據第五列,載入資料係根據圖8的方塊 812而傳送到載入單元。特別而言,圖4的多工器仍會基於 spec一sc—load—mux—sel391,而選擇二條快取線 sc—data[1:〇] 226 其中之 ’圖4的多工器404會基於實際位址[5:2] 336,來選擇適當的雙字組, 而多工器402會選擇輸入424。 、 [〇174]在時脈週期4中,根據第六列,控制邏輯302係根據圖8的 方塊816到822,來偵測堆疊快取記憶體124產生不正確載入資料的 情況。 [0175]如可藉由比較圖u與圖13而得知(其係於底下進行說明), 推測式載人運財祕使L1 f料餘記舰⑶產生載人齡的資料 可比傳統快取記憶體快多個時脈週期。 [0Π6]現在參照目12,所顯示的是緣示來自於根據本發明之圖8的堆 且h犯己隐體124運算之正常(亦即,非推測式)載入的時序之時序圖。圖 12包括稱為1到5的五行,其對應於微處理H 100的五個時脈週期。 43 1249673 圖12還包括五列,所標示的每一個係表示微處理器1〇〇的不同動作或 結果。圖12之已知列與行的每個矩形為空白,或者是包括字「載入 (load)」,用以表示當載入指令向下經過微處理器1〇〇管線時,載入指 令的位置。 [0177] 在時脈週期1中,根據圖12的第一列,圖1之執行單元114 中的載入單元係根據圖8的方塊802,而使圖3的loadjnstr訊號346 產生真值,以請求載入指令的載入資料。 [0178] 在時脈週期2中,根據第二列,位址產生器3〇6係根據圖8 的方塊804 ’來計算圖3的虛擬位址334。 [0179] 在時脈週期3中,根據第三列,TLB 3〇8係根據圖8的方塊 824,而產生彈出指令之圖3的來源實際位址336。 [0180] 在時脈週期4中,根據第四列,圖3的比較器314係根據圖 8的方塊826,執行實際標籤比較,而產生圖3的PA—match[l:0]訊號 364。此外,控制邏輯3〇2係根據圖8的方塊832,基於pA_match[1:〇] 訊號364及圖2的SC-MESI[15:0]訊號222,而產生圖3的 11〇1'11^1一8〇一1〇&(1一1111^一3€1 393。此外’圖1的堆疊快取記憶體124會經 由sc一hit訊號389,來表示載入指令命中載入單元。 [0181] 在時脈週期5中,根據第五列,載入資料係根據圖8的方塊 832而傳送到載入單元。特別而言,圖4的多工器408會基於 normal一SCJ0ad—mux—sd 393,而選擇十六條快取線扣―d制15:〇]娜 其中之一,圖4的多工器406會基於實際位址[5:2] 336,來選擇適當的 雙字組,而多工器402會選擇輸入426。 」〇182]如可藉由比較圖12與圖13而得知(其係於底下進行說明), 正常載入運算有助於使以資料快取記憶體126產生載入指令的資料可 比傳統快取記憶體快。 [0183]現在參照圖13,所顯示的是繪示來自於根據本發明之圖8的非 44 1249673 的二座2乂運鼻之載入的時序之時序圖。圖13包括稱為1到6 二Τ :〜於微處理器励的六個時脈週期。圖13還包括六列, 所才不的母—個係表示微處理器⑽的不同動作或結果。圖υ之已知 每個矩形為空白’或者枝括字「載人(㈣」,用以表示當 載入才"向下經過微處理n 100管線時,載入指令的位置。 [01叫在時脈週期i中,根據圖13的第一列圖1之執行單元叫 的載入單7L係根細8的方塊8〇2,而使圖3的丨⑽d」她訊號祕 產生真值,以晴求載入指令的載入資料。 [0185] 在時脈週期2中,根據第二列,位址產生器纂係根據圖8 的方塊804,來計算圖3的虛擬位址334。 [0186] 在時脈週期3中,根據第三列,tlb 3⑽係根據圖8的方塊 824 ’而產生彈出指令之圖3的來源實際位址336。 [〇鬧在時脈週期4中,根據第四列,非堆疊快取記憶體⑵係基於 實際位址336的索引部份,來執行傳統的列解碼,並且會從列解碼的 結果所指定之此組的每路中,讀取資料。 [0188]在時脈週期5中’根據第五列’非特陳記隨la會執行 實際位址336的標籤部份,與選擇組之每路的標籤之實際標籤比較。基 於標籤比較及每路财餘元,非堆疊餘記㈣⑵會纽路選擇訊 號,來選擇匹配有效路。 [0189] 在時脈週期6中’根據第六列,非堆疊快取記憶體⑵會選擇 由路選擇所指定的快取線,並且會基於實際位址336的較低位元,而選 擇所選擇的快取線之適當雙字組。 [0190] 配合® 10到13的時序圖要注意的是,可包含所述的各種功 能(如位址比較及乡X)會分成不則械職之其他實關,並且快速彈 出推’貝j式載入、正常載入、以及來自於非堆疊快取記憶體m的載入 不受限於所顯示之特定的實施例。 45 1249673 [0191]如可從先前的說财觀察得知,具有不_堆疊快取記 124及非堆独取記讎〗22之優點是此配置比不能在堆_非^属 存取之間進行區別之傳統單-快取記憶體,可有效地增力…資料快^ 記憶體126的大小,而不會增加L1資料快取記憶體126的存取時間。 再者’藉由不污染具有堆疊資料的非堆疊快取記憶體122,非堆最曰 取記憶體m的效率會超過棚於—程式所存取的全部資料之相^大 小的傳統快取記憶體。此外’堆疊快取記憶體124係藉由了解由彬 疊存取的LIFO特性’所以彈出指令所請求的資料因為很有可能是堆展 快取記憶體124之最新近推人’或最新的資料峨有可能位於堆= 取記憶體124的頂端,而有助於使大部份的彈出指令之存取更快:因 此’在判斷彈出位址是否真正命中堆疊快取記憶體124之前,堆属 取記憶體124會推測式地產生彈出資料。再者,堆疊快取記憶體= 係藉由了解由於堆疊存取的LIFO特性,所以載人資料很有可能位 取線中’或接近堆疊快取記憶體124 _端之線,而有助於使大部份 的載入指^之存取更快。因此,堆疊快取記憶體124係基於在執行^ 際位址比較之前的虛擬位址比較’以明確地判斷域人資料存在,而 從頂端堆疊快取記憶體項目的其中之—中,產生載人資料。在 的情況中,這使堆疊快取記倾124比最紐行實際位址比較時,^ 更快產生載人資料,這是_將虛擬位址轉譯成實際健需要額外^ 時間。最後’若載人虛擬位址未命巾綱堆疊快取記憶體124項目, :^人㈣不能細式轉送職人齡,載人實際位址命 隹且f、取s己憶體m時,堆疊快取記憶體m會產生載入資料。若 載入實際位址未命中堆疊快取記憶體m時,非堆疊快取記憶= 會產生載入資料。因此,從堆叠快取記憶體124中,讀取㈣所需的 延遲時間是可變的’而且較多的可預測存取需要很少的時脈週期。延 遲一方面會取決於讀取堆疊快取記憶體124之指令的型式而變化。延 46 1249673 遲另一方面會取決於堆疊快取記憶體124内所請求的資料之位置而變 化。 [〇192]現在參照圖14,所顯示的是繪示根據本發明之管線式微處理 器1400之方塊圖。微處理器14〇〇與圖1的微處理器ι〇〇類似,除了 微處理器1400包括不包含堆疊快取記憶體124之L1資料快取記憶體 1402之外。圖14的L1資料快取記憶體14〇2包括傳統L1資料快取記 憶體’其具有用以執行來自於L1資料快取記憶體1402的快速彈出運 算之裝置,如底下所述。 [0193] 現在參照圖15,所顯示的是繪示根據本發明之圖μ的L1 資料快取記憶體1402之方塊圖。圖15的許多元件及功能係與圖3的 元件類似,並且類似的元件之標號係相對應。特別而言,資料快取記 憶體1402包括位址產生器306,其用以接收運算元332及產生虛擬位 址334,TLB 308 ’其用以接收虛擬位址334及產生實際位址336 ;算 術單元304 ’其用以接收相加訊號382、減少訊號384、以及增加訊號 386,並且會產生潛位訊號388,以及溢位訊號392 ;以及多工器316、 多工器318、fp一offset暫存器322、add一sp val訊號394、堆疊指標暫 存器位元[5:2] 152、輸出訊號372、以及fp—0ffset訊號396,其功能與 配合圖3所述的相似標號元件類似,除了底下所述的差異之外。資料 快取記憶體1402還包括控制邏輯1502,其在某些方面,係與圖3的 控制邏輯302類似。控制邏輯15〇2會接收pUShjnstr訊號342 、P〇P—ins 仕 訊號344、以及add—sp—instr訊號352,與圖3的控制邏輯302類似。 控制邏輯1502會產生多工選擇訊號368,與圖3的控制邏輯3〇2類似。 控制邏輯1502會回應於不正確的快速彈出運算之偵測,而產生例外訊 號399,與圖3之相似標號的訊號類似,除了底下所述的差異之外。 [0194] 資料快取記憶體14〇2還包括儲存元件陣列15〇4,用以儲存 複數條快取線、每條快取線的位址標籤、以及每條快取線的快取狀態 47 1249673 (如MESI狀態)。在圖Μ的實施例中,儲存元件陣列測係配置為呈 有N列’或組(set),以及四行,或路(way)。亦即,資料快取記憶體_ 係配置為四路組相聯式(way set associative)快取記憶體。然而,本發明 不受限於特定數目的狀快取記紐。在_實_巾,齡元件^列 1504中所儲存的快取線之大小包括64個位元組。 [0195] 資料快取記憶體1402 it包括列解碼電路觸。列解碼器 1506會接收列訊號撕,其用以指定儲存元件陣列15〇4之n列其; 之-。列解碼器15〇6會使由列訊號咖所指定之複數個福_ 訊號1542其中之一產生真值。回應時,儲存元件陣列15〇4 撕_-1:〇]訊號1542所指定的列之内容1594。亦即,所選擇二列之每 路的快取線資料、標籤、以及MESI狀態會經由峨1594來輸出。在 圖15的實關中’包括十六個雙字_四條快取線,以及其對應的伊 籤1574,以及MESI狀態的有效位元1576會經由訊號1594。出了 [0196] 資料快取記憶體1402還包括四個輸入的多工器1528,其耦 接至儲存元件陣列15G4H 1528之四個輸人中的每—個會接收 儲存元件陣列1504所輸出之各自的四條快取線I%#盆中之一。夕丁 器1528會基於控制輸入1596,選擇快取線其中之一,而輸出= 1592。所選擇的快取線1592會傳送到多工器318,其會基於 訊號396,而在匯流排138上,產生雙字組。 — [0197]資料快取記憶體1402還包括由控制邏輯15〇2所產生的 fastjop訊號1564。控制邏輯1502會回應真值的p〇p―丨输訊號3料’, 而產生真值的fast_p〇P訊號1564,而使資料快取記憶體14〇$ fast_pop運算。 灯 [0198]資料快取記憶體1402還包括第一堆疊的儲存元件,或項目 (稱為fp—row堆疊1516) ’其耦接至控制邏輯15〇2。阳评堆疊UK 包括複數個儲存元件,每一個係用以儲存用以辨識儲存元件陣列 48 1249673 的列之一值。在一實施例中,fPJOW堆疊1516的每個元件會儲存 &N位元’其中N為儲存元件陣列15〇4之列的數目。fp一row堆疊 1516中的複數個贿猶係配置為堆疊,或1卵,其包括頂端項目 1514、,其係藉由控制邏輯請2,_存位於new—丽罐1554上之 最新近推人的舰。亦即,new—_訊號i 554會減齡元件陣列削 人的列,、肖以儲存包含最新近推入指令的資料之快取線,如底下配 。圖17之詳細地說明。有助益的是,儲存包含最新近推入資料的列使 資料快取記鋪丨術行域谓狀絲彈岐算。φ—贿堆疊 還曰從控制邏輯15〇2巾,接收pUsil—r〇w訊號1562。當控制邏輯 使push一row成號1562致能為真值時,fp—r〇w堆疊big會向下 移位個項目(亦即,底部項目會移出fp一腕^堆疊⑸6且其他項目中 的每-個會立即接收位於其上之項目的值),並且觀—丽1554上的 值二寫入fp一row堆疊1516的頂端項目。fp一r〇w堆疊1516還會從控制 邏輯1502中,接收pop—r〇w訊號1558。當控制邏輯15〇2使卿—贿 喊⑽致能為真值時,fp—酶堆疊1M6會向上移位一個項目(亦 即,頂端項目會移出fp—row堆疊1516且其他項目中的每一個會立即 接收位於其下之項目的值)。 [0199]資料快取記憶體14〇2還包括二個輸入的多工器i5i2,其耦 接至fp—row堆疊1516。在一輸入上,多工器1512會接收电―堆疊 1516之頂端項目1514的值,稱為fp—r〇wl556。在另一輸入上多工 器1S12會從TLB 308巾,接收實際位址336的索引,或列選擇部分 ⑽。在-實施财,索引⑽包括實際位址336的較低位址位元。 若fast」x>P訊號1564為真,則多工器1512會選擇fp—r〇w訊號Η%, 而輸出會傳送到列解碼器1506的列訊號1552;否則,多工器1512會 選擇索引1548,而輸出列訊號1552。 曰 [0200]資料快取記憶體14〇2還包括第二堆疊的儲存元件,或項目 49 1249673 ^為f=ay堆疊1534),其输至㈣邏輯咖。_堆疊咖 匕括複數個儲存元件,每一個係用儲存 中的-政夕#备门 π爾用以辨識儲存το件陣列1504 中的路之一值。在圖15的一實施例中,fp—way堆疊1534的每個元 件會儲存2個位元,用以指定儲存元件陣列15〇4之四路其中之一。 way堆疊1534中的複數個儲存元件係配置為堆疊,或咖,豆包 =頂端項目1532 ’其係藉由控制邏輯15〇2,而儲存位於晴轉訊 唬1582上之最新近推入的路值。亦即,卿—w町訊號⑽會指定由 請—丽訊號1554所指定之儲存元件陣列㈣之列内的路,i用以 儲存包含最新近推人指令的諸之快取線,如底下配合圖17之样細地 說明。有助朗是,贿包含最新聽人:倾的路㈣驗取記憶體 1402能執行如底下所述之快速彈出運算。fp—way堆疊⑸$還會從控 制邏輯1502中,接收push_way訊號1588。當控制邏輯15〇2使岭—卿 訊號1588致能為真值時,fp_way堆疊1534會向下移位一個項目(亦 即’底部項目會移出fp_way堆疊1534且其他項目中的每一個會立即 接收位於其_L之項目祕),並^ new—way 1582上的齡以电―釋 堆疊1534的頂項目1532。φ—way堆疊1534還會從控制邏輯15〇2 中’接收pop—way訊號1586。當控制邏輯丨502使p〇p—way訊號1586 致能為真值時,fp—way堆疊1534會向上移位一個項目(亦即,頂端項 目會移出fp_way堆疊1534且其他項目中的每一個會立即接收位於其 下之項目的值)。 [0201] 在一實施例中,φ—row堆疊1516及fp way堆疊丨5^係包 含於每個會儲存列/路對之儲存元件的單一堆疊中。 [0202] 資料快取記憶體1402還包括二個輸入的多工器1526,其搞 接至fp—way堆疊1534。在一輸入上,多工器1526會接收fp—way堆 疊1534之頂端項目1532的值,稱為fp—way 1584。在另一輸入上,多 工器 1526 會接收 normal一way一select 訊號 1578。若 fast」x>p 訊號 1564 50 1249673 為真,則多工器1526會選擇fp—way訊號1584,而輪出會傳送到列解 碼器1528的多工選擇訊號1596 ;否則,多工器合選擇 normal—way—select訊號1578,而輸出多工選擇訊號1596。 [0203] 在一實施例中,fp一way堆疊1534及fp—row堆疊15ΐδ包括 有效位元,並且faSt_p〇p訊號1564為頂端項目1514及頂端項目1532 的及(AND)邏輯之閘口。亦即,雖然控制邏輯15〇2不會在執行快速彈 出之前,確認彈出來源位址,但是在執行快速彈出運算之前,會確噶 fp—row堆叠1516中的頂端項目1514為有效,以及fp—way堆叠 中的頂端項目1532為有效。在此實施例中,每次彈出φ 及fp一way堆疊1534時,向上移位之後的底部項目會具有設定^偽之 有效位元。 [0204] 資料快取記憶體1402還包括路選擇產生器1524,其輕接至 控制邏輯1502。路選擇產生器1524會從儲存元件陣列15〇4 ^選擇的 列中’接收母一個位址彳示戴1574及有效位元1576。路選擇產生号' 1524 還會從TLB 308中,接收實際位址336的位址標籤部分1546。路選擇 產生器1524包括實際位址標籤1546(如彈出、推入、载入、或儲存指 令),而且每個標籤1574係藉由儲存元件陣列15〇4來輸出。若標籤丨574 其中之-與實際位址標籤1546匹配’並且其對應的有效位元不⑽係礓 表示標籤⑽為姐,則路選擇產生器m t產生會傳送到控制邏 輯1502之真值的cache_hit訊號1572。此外,路選擇產生器1524會經 由normal一way一select訊號1578(其會傳送到控制邏輯15〇2及多二器 1526),而產生有效匹配路(亦即,命中儲存元件陣列15〇4的列)的值。 [0205] 資料快取記憶體1402還包括檢查邏輯15〇8,其耦接至儲存 元件陣列1504。檢查邏輯1508會接收實際位址336、訊號 l564、fp—row 訊號 l556、fp—way 訊號 I%4、標籤 Μ%、有效位元 Μ%、 以及fp—offset訊號396。檢查邏輯1508會進行檢查,以判斷在快速彈 51 1249673 2雜間’推測式地傳送到_令之f料是 ,綱會判斷分別由^ 1556*fp_way 1584所=4^ 中快逮Γ運算的期間,會用來選擇儲存元件陣列1504 !會將快速彈出i算生中^^資料=實=例中,檢查邏輯 屮谨瞀由^ 峨用的fp-row 1556之值,與藉由快速彈 斤、P—鄉1584所指定之路的標籤測進行比較。在一實施 列中,檢查邏輯1508還會將快速彈出運算中所使用的φ _挪值, /夢實際位址336的對應位元進行比較。在一實施例中,檢查邏輯测 還會將快速彈出運算中所使用的fp—视之值與實際位址说 ^對應位元進行比較。檢查邏輯_還會物藉由fpH584所指 疋之路的有效位元im絲稀速彈ώ運算巾所存 ^ °若快取鮮為有效,或未存取正確快取線,則檢查邏輯= 二ί ΪΓ的φ—eheek訊號1544,其會傳送到控制邏輯⑽。否則, 1508會產生真值的nk峨⑽,其會傳送到控制邏 =206]現在參關16,科是_娜本㈣之來自$ 2料快觀舰刚之絲彈_算_糊。輕纽 開始。 陶]在方塊赚,指令解譯器1%會將彈出指令解碼 排程器!08會將彈出指令傳送到圖u之執行單元m中的载 載入單請使PGP>Str訊號344產生真值。流程會繼續進行 [〇]在方塊_4 ’回應於⑽触訊號撕,控制邏輯 1502會產生真值的pop_instr訊號1564。因此多工器⑸2 Φ—騰1556,而經由列訊號1552傳送到鱗碼器i5Q6。 解碼器測會使由fp—丽1556所指定的咖科1:〇 15二上 52 1249673 一產生真值。回應時’儲存元件_測之 :雄,訊號之列。回應於真值 曰輪出真值的 到多工哭_ 1 當作多工選擇訊號1596,其^^ 剠夕工為1528。回應時,多工考〗 -、日得运 中,選擇快取線,而輸出背15二 “ p~way 1584所指定的路 暫存請中⑹Γ 多工器318會基於目前存於Φ offset 腎322中的值,而從位於匯流排⑶上之 取線腹巾,獅料 排=輸出之快 單元114中的H 估 仏由匯机排⑽而傳送到執行 早το U4史的载入早疋,而傳送到彈出指令,拉丁 會載入到彈出指令中所沪宏 卩白#又116接下來 ㈣仏中所才曰疋之圖Μ的暫存器檔案112中之暫
之-。例如’若彈出指令為 子U 入到暫存_ U2的指將彈出資料載 nrTFAVF.,t .咐曰^示暫存器中。例如,若彈出指令為x86離 ,(L_)指令’則會將彈出資料載入到暫存器楷案i = = = 令為·彈出_)指令,則會將彈_載入 暫存_案112的暫存器中。如可從圖 ^知,餘__式鱗送職人單元。_此運算尚未確認彈 出指令的來齡峨接下健在魏⑹6,在實隨址说 從由fp—贿1556及fp_way 1584所指定_存元件_丨綱之項目、 傳送到載人單元的彈出麟德_同,所叫為_式。流程會 續進行方塊1606。 ' [〇"209]在方塊1606,控制賴15〇2會產生真值的增加訊號规, 以及算術私3〇4相應地增加fp_〇ffset396,並且會錄& 372的值 增加,其控制邏輯會導致多工器316經由控制訊號娜,來進行 選擇,而載入到fp—offset暫存器322。流程會繼續進行判斷方塊刪。 [0210]在判斷方塊1608 ’控制邏輯1502會檢查溢位訊號392,以 判斷在方塊1606所執行的增加運算是否會造成fp—〇ffset322的溢位。 亦即,控制邏輯1502會判斷彈出運算是否將會造成堆疊指標器152覆 53 1249673 蓋下個快取線。若如此’則流程會繼續進行方塊1612;否則,流程會 繼續進行方塊1614。 q [0211] 在方塊1612,控制邏輯1502會產生真值的p〇p—r〇w訊號 1558,而使頂端項目彈出fp—r〇w堆疊1516,並且控制邏輯15〇2會產 生真值的pop一way訊號1586,而使頂端項目彈出fp—way堆疊15二。 因為藉由fp一mw堆疊1516的頂端項目1514及fp一way堆疊1534的頂 端項目1532所指定之儲存元件陣列15〇4的項目中所儲存的快取線中 之最後雙字組現在正藉由彈出指令而彈出系統記憶體堆疊,所以會將 頂端項目彈出,以使其與系統記憶體快取記憶體保持一致。在一實施 例中,方塊1612直到已執行方塊1618(底下會進行說明),才會執行。 在一實施例中,會儲存方塊1604所使用的fpjrow 1556及fp_way 1584 值,其接下來會用於方塊1618。流程會繼續進行方塊1614。 [0212] 在方塊1614,位址產生器3〇6會計算彈出指令的來源虛擬位 址334。流程會繼續進行方塊1616。 [0213] 在方塊1616,TLB 308會產生彈出指令的來源實際位址 336。流程會繼續進行方塊1618。 [0214] 在方塊1618,檢查邏輯1508會將方塊1616所產生之實際位 址336的對應部份與由fp_way 1584所選擇的標籤1574進行比較,以 及會將實際位址336的對應部份與fp—row 1556進行比較,以及會將實 際位址336的對應部份與fp_〇ffset 396進行比較,並且會檢查由fp_way 1584所選擇的有效位元1576,而產生fp—check訊號1544,其會傳送 到控制邏輯1502。流程會繼續進行判斷方塊1622。 [0215] 在判斷方塊1622,控制邏輯15〇2會檢查fp—訊號 1544,以判斷彈出指令的來源實際位址336是否會命中由电^〇〜堆疊 1516及fp〜way堆疊1534的頂端項目所指定之儲存元件陣列丨5〇4的 項目。若彈出指令的來源位址336命中由fp一row堆疊1516及fp way 54 1249673 繼續進行方塊1624。 a產生正確的彈出諸)。酬,流程會 而使器方 控制邏輯1502會產生真值_ 產生不正4肺咖外處理11,_處理細賴速彈出運算 sm航。術卜處職纽正_㈣送到彈出 ㈠在實知例中,例外處理器會刷新 =’並且會將堆_暫存器,一‘目前及值= fp一offset暫存器322。流程會在方塊16S4结束。 [〇= 如可觀察得知’以及如將配合圖19,而於底下進行更詳細地 祝明’配5圖。16所述的快速彈出運算使傳送到彈出指令的彈出資料, 可比無快速彈出裝置的傳統快取記紐快多個時脈週期。 _]現在參照圖17,所顯示的是繪示根據本發明之圖15的資料 快取記憶體刚之推人運算的流糊。_會從方塊㈣開始。 [〇219;|在方塊1702 ’指令解譯器1〇6會將推入指令解碼以及指令 排程器⑽會將推入指令傳送到執行單元⑴巾的儲存單元。回應時, 儲存單元會使pUSh_i_訊號342產生真值。流程會繼續進行方塊 1704。 [0220] 在方塊1704,控制邏輯1502 f產生真值的減少訊號撕, 以及算術單元304會回應地減少fp—0ffset396,並且會使輸出37S的值 減少,其控制邏輯1502會導致多工器316經由控制訊號3從,來進行 選擇,而載入到fp_〇ffset暫存器322。流程會繼續進行判斷方塊17〇6。 [0221] 在判斷方塊1706,控制邏輯15〇2會檢查潛位訊號還,以 判斷在方塊1704之fp—offset 396的減少是否會造成fp—〇ffset 322的潛 位。亦即,控制邏輯1502會判斷推入運算是否將會造成堆疊指標器 152覆蓋先前快取線。若如此,則流程會繼續進行方塊1716 ;否則, 55 1249673 流程會繼續進行判斷方塊1708。 [0222] 在判斷方塊1708,控制邏輯1502會檢查cache〜hit訊號 1572,以判斷推入指令的目的實際位址336是否命中儲存元件陣列 1504。若如此,則流程會繼續進行方塊1712 ;否則,流程會繼續進行 方塊1714。 [0223] 在方塊1712,資料快取記憶體1402會處理命中資料快取記 憶體1402之當作正常推入指令的推入指令。亦即,資料快取記憶體 1402會根據資料快取記憶體的技術中所熟知的傳統方法,來處理推入 指令。因為推入不會覆蓋先前快取線,所以不需更新fp—r〇w堆疊1516 及φ一way堆疊1534;因此,接下來的彈出運算很有可能指定由fpjr〇w 堆疊1516的頂端項目1514及fp—way堆疊1534的頂端項目1532所指 疋之快取線中的資料。流程會在方塊1712結束。 [0224] 在方塊1714 ’控制邏輯1502會產生真值的例外訊號399, 而使微處理器1400分支到例外處理器,用以更新fp—r〇w堆疊1516及 fp 一way堆疊1534。在一實施例中,例外處理器會刷新fRJ〇w堆疊1516 及fp一way堆疊1534,並且會將堆疊指標暫存器152之位元[5:2]的目前 值載入到fp—offset暫存器322。流程會繼續進行方塊1726。 [0225] 在判斷方塊1716,控制邏輯15〇2會檢查cacheJlit訊號 1572,以判斷推入指令的目的實際位址336是否命中儲存元件陣列 1504。若如此,則流程會繼續進行方塊1718 ;否則,流程會繼續 方塊1726。 [0226] 在方塊1718,控制邏輯1502會決定命中儲存元件陣列15〇4 的列及路。此列係由索弓I 1548所決定。此路係由n〇rmal—way—sdect 1578所決定。控制邏輯1502會經由new一way訊號1582,將命中的路 傳送到fp一way堆疊1534。此外,控制邏輯1502會經由newjOw訊號 1554,將命中的列傳送到fp一row堆疊1516。流程會繼續進行方塊1722。 56 1249673 [0227] 在方塊1722 ’控制邏輯1502會產生真值的push—row訊號 1562,而將new_row 1554所產生的值推入fp一row堆疊1516。控制邏 輯1502還會產生真值的push—way訊號1588,而將new—way 1582所 產生的值推入fp_way堆疊1534。流程會繼續進行方塊1724。 [0228] 在方塊1724,資料快取記憶體1402會處理命中資料快取記 憶體1402之當作正常推入指令的推入指令。亦即,在方塊1722,更 新fp—row堆疊1516及fp—way堆疊1534之後,資料快取記憶體14〇2 會根據資料快取記憶體的技術中所熟知的傳統方法,來處理推入指 令。流程會在方塊1724結束。 [0229] 在方塊1726 ’控制邏輯1502會決定由索引1548所選擇之儲 存元件陣列1504之列中的路由現在必須提取到資料快取記憶體14〇2 之失誤推入位址336所意含的快取線來取代。在一實施例中,控制邏 輯1502會選擇所選的列之最近最少使用的路。控制邏輯15〇2會經由 new—way訊號1582,將取代路傳送到fp—way堆疊1534。此外,控制 邏輯1502會經由new一row訊號1554,將索引1548所指定的列傳送到 fp一row堆疊1516。流程會繼續進行方塊1728。 [0230] 在方塊1728,控制邏輯1502會產生真值的push—r〇w訊號 1562,而將new一_ 1554所產生的值推入fp一_堆疊1516。控制邏 輯1502還會產生真值的push一way訊號1588,而將_一胃1582所 產生的值推入fp—way堆疊1534。流程會繼續進行方塊1732。 [0231] 在方塊1732,資料快取記憶體1402會處理未命中資料快取 記憶體1402之當作正常推入指令的推入指令。亦即,在方塊1728, 更新fp—_堆疊1516及fp—way堆疊1534之後’資料快取記憶體14〇2 會根據資料快取記憶體的技術中所熟知的傳統方法,來處理 令。流程會在方塊1732結束。 [0232] 現在參照圖18,所顯示的是繪示回應於根據本發明的堆疊指標 57 1249673 器指令之相加之圖14的微處理器1400之運算的流程圖。流程會從圖i8 中的方塊1802開始。 曰 [0233] 在方塊1802,指令轉譯器106會將目的為圖14的堆疊指標 暫存器152的相加指令解碼,並且指令排程器1〇8會將相加指令傳^ 到執行單元114中的整數單元。回應時,整數單元會使add_sp_in蚶 訊號352產生真值。流程會繼續進行方塊18〇4。 [0234] 在方塊1804,控制邏輯1502會產生真值的相加訊號撕, 以及异術單元304會回應地將a(jd一sp—val 394加到fp 0ffset 396,並且 會使輸出372產生總和,其控制邏輯1502會導致多工器316經由控制 訊號368 ’來進行選擇,而載入到fp—〇ffset暫存器322。流程會繼續進 行判斷方塊1806。 ' [0235] 在判斷方塊1806,控制邏輯15〇2會檢查溢位訊號392,以 判斷在方塊1804所執行的相加運算是否會造成fp—〇ffset 322的溢位。 亦即,控制邏輯1502會判斷相加指令是否將會造成堆疊指標器152覆 盍另快取線。在方塊1806,溢位情況為相加造成堆疊指標器Μ〕不 再參考由fp一row堆疊1516的頂端項目1514及fp—way堆疊1534的頂 端項目1532所指定之資料快取記憶體1402的項目中所儲存的快取線 之情況。特別而言,若相加造成溢位,則堆疊指標器152通常會參考 記憶體位址緊鄰且大於由fp一row堆疊1516的頂端項目1514及fp^way 堆疊1534的頂端項目1532所指定之資料快取記憶體14〇2的項目中所 儲存的快取線之§己憶體位址的快取線。因此,fp r〇w堆疊1516及 fp一way堆疊1534必須使由Φ一row堆疊1516的頂端項目1514&fp_way 堆疊1534的頂端項目1532所指定之正確快取線依序彈出。在一實施 例中’控制邏輯1502可容納溢位超過一條快取線之堆疊指標器152的 相加。在此實施例中,底下之從方塊1808的fp_row堆疊1516及fp_way 堆疊1534彈出之項目的數目N係計算如下,假設快取線大小為64個 58 1249673 位元組: N=(fp—offset+add—sp_Val)/64 因此,若N大於1,則溢位已發生。若溢位情況發生,則流程會繼 續進行方塊1808 ;否則流程會結束。 曰 [0236] 在方塊1808,控制邏輯15〇2會產生真值的p〇p—r〇w訊號 1558,以使頂端項目彈出fp一row堆疊ι516,並且控制邏輯15〇2會產 生真值的pop—way訊號1586,以使頂端項目彈出fp一way堆疊1534。 如以上配合方塊1806所討論的,在一實施例中,會計算N的值,並且 N個項目會從fp—row堆疊1516及fp一way堆疊1534彈出。流程會在 方塊1808結束。 曰 [0237] 現在參照圖19,所顯示的是繪示來自於根據本發明之圖15的 資料快取記憶體1402之圖16的快速彈出運算之時序的時序圖。圖19包括 稱為1到4的四行,其對應於微處理器14〇〇的四個時脈週期。圖19 還包括六列,所標示的每一個係表示微處理器14〇〇的不同動作或結 果。圖19之已知列與行的每個矩形為空白,或者是包括字「彈出 (pop)」,用以表示當彈出指令向下經過微處理器14〇〇管線時,彈出指 令的位置。 θ [0238] 在時脈週期i中,根據圖19的第一列,執行單元ιΐ4中的 載入單元係根據圖16的方塊1602,而使pop—instr訊號344產生真值, 以請求彈出指令的彈出資料。 [0239] 在時脈週期2中,根據第二列,列解碼器15〇6會根據圖16 的方塊1604 ’將位於fp—row訊號1556上的列值解碼,而使阳“的丄⑺ 訊號1542射之-產生真值。回應時,儲存元件會根據目16的方塊 1604,而產生由真值的read[N_1:〇]訊號1542所選擇之列的四路中的每 個項目之快取線的標籤及狀態。 [024〇]在時脈養2巾,滅第三列,位址產生^ 3〇6係根據圖^ 59 1249673 的方塊1614 ’來計算虛擬位址334。 [0241] 在時脈週期3中,根據第四列,根據圖16的方塊1604,多 工器1528會產生由fp_way 1584所指定的快取線1592,而多工器318 會選擇由fp—offset 396所指定之選擇的快取線1592之適當雙字組。在 一實施例中’會產生由實際位址336的較低位元[5:2]所指定之選擇的 快取線1592之適當雙字組。 [0242] 在時脈週期3中,根據第五列,TLB 308係根據圖16的方 塊1616 ’而產生彈出指令的來源實際位址336。 [0243] 在時脈週期4中,根據第六列,控制邏輯15〇2係根據圖16 的方塊1618到1624,來檢查fp_check 1544,以判斷是否已執行不正 確推測式地彈出運算。 [0244] 在一實施例中,對應於圖15的資料快取記憶體14〇2之載入 指令的時序係與對應於圖丨的非堆疊快取記憶體122之載入指令的時 序類似;因此,圖13係描述對應於資料快取記憶體14〇2之載入指令 的時序。如可藉由比較圖19與圖13而得知,快速彈出運算有助於使 資料快取記憶體1402產生彈出指令的資料可比傳統快取記憶體(其不 包括圖15的快速彈出裝置,並且不會在彈出指令與載入指令之間進行 區別)快多個時脈週期。 [0245] 在一實施例中,虛擬位址334的位元[5:2]係用來選擇雙字 組’而不是 fp_offset396。 [0246] 雖齡發微其目的、特性及優點已詳細地綱,但是本發明 :包含其他實_。例如,堆疊絲記㈣或LIFO記髓可以各種方式來 實施,而達賴來當作後進先出記㈣之記憶體。—_實施例為 ^當作循環FIFO記憶體的暫存器檔案,其會保持堆疊指標器的頂端盘 底部’以決定下次要推入或彈出那_目,以及堆疊何時已空。再者: 雖然實施例已配合堆疊會朝向減少記憶體位址而成長之χ86架構指令 1249673 來進行制’但是本發明可實祕具树疊會她增減憶體位址而 成長之堆疊存取指令的其他微處理財。此外,軸已揭露特定快取 線大小的實關,但是可使料有各種線大小陳取記憶體。 a [0247]再者,雖然本發明及其目的、特性及優點已詳細地說明,但 疋本發明可包含其他實施例。本發明除了使用硬體來實施之外,本發明 也可實施於制可使_如呵讀取)賴情包含的賴可讀取碼 (例如’電腦可讀摊式碼’資料)巾。賴碼可使在麟揭露的本發 明之功能賴造可行,或者是二者皆可行。例如,這可經由使用一般 程式語言(例如’ C、C++、JAVA、以及類似的程式語言);G腦資料 庫;包括VeribgHDL、VHDL、施raHDL(AHDL)等等的硬體描述語 言(HDL);或此項技術中可用的其他程式化及/或電路(例如,概圖)記錄 工具來達成。電腦碼可置於任何已知的電腦可使用(例如,可讀取)媒體 (匕括半導體心隨、磁碟、光碟(例如,CD初m、以及 類似之物)、以及如電腦可使糊如,可讀取)傳送雜(例如,載波, 括數位、光學、或運用類比的媒體之任意其他的媒體)所包含的電 貝料械巾。就本身而言,電腦碼可在通賴路(包括網際網路及内 糊路)上傳輸。要了解_是,本發明可實施於電腦碼(例如,如智慧 財產權(IP)碼(如微處理器碼)的部份,或如系統階層式設計(如系統單晶 片(System on Chip ’簡稱s〇c)))中,並且會轉換成硬體,當作積體電 路H部份。再者,本發明可實施為硬體及電腦碼的組合。 4 [02=]最後’熟習此項技術者應該了解到的是,在不脫離後附的申 «月專利$1®所疋義之本發明的精神及範圍之下,為了進行與本發明相 同的目的’其可立即使關露的概纽特定的實細,來當作設計或 修改其他的結構之基礎。 61 Ϊ249673 凰式簡單說吸: [0014] 圖1係根據本發明之一管線式微處理器的方塊圖; [0015] 圖2係繪示根據本發明之圖1的堆疊快取記憶體之方塊圖; _6]圖3係繪示根據本發明之圖1的堆錄取記㈣之額外祕的方 塊圖; [00Π]圖4係繪示根據本發明之圖i的L1資料快取記憶體之多工邏輯 的方塊圖; [0018]圖5係繪示來自於娜本發明之圖i的堆疊快取記㈣之快速彈 出運算的流程圖; 。_9]圖6係繪示根據本發明之圖丄的堆叠快取記憶體之推入運算的流 程圖; [〇〇2_ 7係繪示圖1所示之微處理器相對應於加入到堆疊指示器指令 之運作的流程圖; 程圖_圖8係繪示根據本發明之圖i的堆疊快取記憶體之載入運算的流 [0022]圖9係繪示根據本發明之圖1 的流程圖; _的L1貝枓快取記憶體之儲存運算 [0:23]圖10係繪示來自於根據本發明之圖 的快速彈出運算之時序的時序圖; $且氏取嶺體之圖5 [嶋]圖U係繪示來自於根據 推測式載入的時序之時序圖; 月之圖8的堆疊快取記憶體運算之 [〇二25]圖12係繚示來自於根據本發明之| _]圖13鱗示來自於根據=序圖; 之载入的時序之時序圖;、乂 $明之圖8的非堆疊快取記憶體運算 [0027]圖14係根據本發明之一 :線式微處理器的方塊圖; 62 1249673 [0028頂15係繪示根據本發明之圖14的以資料快取記憶體之方塊圖; [〇〇29]圖16鱗示來自於根據本發明之圖15的資料快取記憶體之 彈出運算的流程圖; [0030]圖17係繪示根據本發明之圖 流程圖; 15的資料快取記憶體之推入運算的 本發明的堆疊指標器指令之相加之圖14 [〇〇31]圖I8係繪示回應於根據 的微處理器之運算的流程圖;以及 [0032頂19係緣示來自於根據本發明 圖16的快速彈出運算之時序的時序圖。 之圖15的資料快取記憶體運算之
圖式標示說明: 100,M00 :管線式微處理器 102 :指令快取記憶體 104 :指令提取器 106:指令轉譯器 108 :指令排程器 112 :暫存器檔案 114:執行料 · 116 :寫回階段 118 ·匯流排介面單元 122 :堆疊快取記憶體 124 :非堆疊快取記憶體 126 :資料快取記憶體 128 :微碼記憶體 134 :微指令 136,138 :匯流排 63 1249673 142 :運算元 152 :堆疊指標暫存器 202 :快取狀態 204 :位址標籤 206 : —快取線的資料 212 : sc_write_MESI 訊號 214 : sc_write_tag 訊號 216 : sc_write_data 訊號 222 : sc—MESI[15:0]訊號 224 : sc—tag[15:0]訊號 226 : sc_data[15:0]訊號 232 : push_sc 訊號 234 : pop_sc 訊號 302,1502 :控制邏輯 304 :算術單元 306 :位址產生器 308 ··轉譯旁視緩衝器(TLB) 312、314 :比較器 316、318、326、402、404、406、408、412、1512、1526、1528 :多 工器 322 : fp_offset 暫存器 324 :寫回線缓衝器 334 :虛擬位址 336 ··實際位址 338 : writeback—request 訊號 342 : push_instr 訊號 64 1249673 344 : pop instr 訊號 346 ·· load instr 訊號 348 : store_instr 訊號 352 : add_sp—instr 訊號 364 : PA_match[0]訊號 366 :非 scjhit 訊號 368 ··控制訊號 372 :輸出 382 :相加訊號 384 :減少訊號 386 :增加訊號 388 :潛位訊號 389 : sc_hit 訊號 391 : spec—sc—load_mux—sel 訊號 392 :溢位訊號 393 : normal_sc_load_mux_sel 訊號 394 : add_sp—val 訊號 395 ·· Ll_mux_sel 訊號 396 : fp offset 訊號 397 : allocate_flll_buffer 訊號 398 : fp data 399 :例外訊號 422,428 :快取線 424,426 :輸出 432 :輸出資料 1402 : L1資料快取記憶體 1249673
1504 :儲存元件陣列 1506 :列解碼電路 1508 :檢查邏輯 1514,1532 :頂端項目 1516 : fp row 堆疊 1524 :路選擇產生器 1534 : fp way 堆疊 1542 : read[N-l:0]訊號 1544 : fp_check 訊號 1546 :實際位址標籤 1548 :索引,或列選擇部分 1552 :列訊號 1554 : new_row 訊號 1556 : fp row 訊號 1558 : pop row 訊號 1562 : push_row 訊號 1564 : fast_pop 訊號 1572 : cache_hit 訊號 1574 :標籤 1576 : MESI狀態的有效位元 1578 : normal—way—select 訊號 1582 : new—way 訊號 1584 : fp way 1586 : pop_way 訊號 1588 : push_way 訊號 1592 :訊號 66 1249673 1594 :内容 1596 :控制輸入
67
Claims (1)
1249673 (案號第0931238W號專利案之說明書修正)——一―—一 一. 十、申請專利範圍: L種可執行快速推測式載入運算之快取記憶體,包括·· 複數個儲存元件,配置為一後進先出記憶體,該些儲存元件中之 =端一個,係用以儲存由複數個最新近推入指令所指定之一快取線的 貝料,並且係用以儲存該快取線的一虛擬位址及一實際位址; 一比較器,耦接至該頂端儲存元件,用以將該快取線虛擬位址與 由一載入指令所請求的資料之一來源虛擬位址進行比較;以及 輸出,耦接至該比較器,在判斷由該載入指令所請求的該資料 之一來源實際紐是顯該實際快取線位祕配之前,若該比較器顯 不該來源虛擬仙:與存機頂端齡元件中的該餘線虛擬位址匹 配’則用以表不由鶴人指令所請求的該資料係存在於職取記憶體 中' 2. 如申请專利範圍第i項之快取記賴,其巾該來源實際位址及該實 際快取線位址中的每一個包括一上方部份的轉譯位址位元,以及一 下方部份的未轉譯位址位元。 3. =申請專概圍第2項之快取記鐘,其巾該轉譯位址銳包括一 實際記憶體分頁的-位址’其中該未轉雜址位元包括該實際記憶 體分頁内的一偏移量。 4. 如申請專概圍第2項之快取記·,其巾絲·擬位址包括該 未轉譯下方部份的該來源實際位址。 5. 如申請專·料4項之絲記,其巾該來源虛擬位址更包括 附加於該未轉譯下方部份之—上方部份的未轉雜址位元。 6. 如申請專機_ 5項之快取記舰,其找來源虛擬位址之該上 方部份的未轉譯位址位元包括一虛擬記憶體分頁的一位址。 7. 如申凊專利關第2項之快取記憶體,其巾該來源虛擬位址及該虛 擬快取線位址包括分別是該未轉譯較低部份的該來源實際位址及該 68 1249673 I月曰修(A正替换頁 (案號第093123853號專利案之說明書修正) v一一·《«-——'™一— 貫際快取線位址’其中該麵虛擬位㈣及該虛擬絲線位址都更 包括附加於該未轉譯下方部份之—上转份的_未轉譯位址位 元。 8. 如申請專利翻第丨項之快取記舰,其巾域人指令包括明破地 指定該來源虛擬位址之一指令。 9. 如申請專利第丨項之快取記憶體,其巾該載人指令包括不會暗 示地指定與-堆疊指標暫存器值相關之該來源虛擬位址的一指令。 10. 如申請專利範圍第1項之快取記憶體,其中該些推入指令中的每一 個包括暗示地指定與-堆疊指標暫存器值相關之存於該快取線中 的該資料之一記憶體位址。 11·如申請專利範圍第1項之快取記憶體,更包括: 一第一比較器,耦接至該些儲存元件,用以將該來源實際位址 與該實際快取線位址進行比較。 12·如申請專利範圍第η項之快取記憶體,更包括: 一第二輸出’搞接至該第二比較器,用以顯示該第一輸出不正 確地表示由該載入指令所請求的該資料係存在於該快取記憶體 中’如果在該第-輸出表示由該載入指令所請求的該資料存在於該 快取圮憶體之後,該第二比較器顯示該來源實際位址與該實際快取 線位址未匹配。 13·如申請專利範圍第1項之快取記憶體,更包括: 一第一比較器’耦接至該些儲存元件,用以將該來源虛擬位址 與存於該些儲存元件之一緊鄰頂端一個中的一快取線之一虛擬位 址進行比較,該緊鄰頂端儲存元件會將複數個緊鄰最新近推入指令 所指定之一快取線的資料儲存到該些最新近推入指令。 H·如申料利範圍第I3項之快取記憶體,其巾在判斷該來源實際位 址與存於該緊鄰頂端儲存元件中之該快取線的該實際快取線位址匹 69
1249673 (案號第〇93123853號專利案之說明書修正) 配之前’若該第二比較H係表示該來源虛擬位址與存該緊鄰頂端儲 存讀中的該快取線虛擬位址㈣,_第—輸出會顯示由該載入 指令所請求的該資料係存在於該快取記憶體中。 15·如申請專利範圍第1項之快取記憶體,更包括: 複數個比#χϋ 接至該些儲存元件,狀將該來源實際位址 與存於該些儲存元件巾的複數個實縣取線健進行比較。 16·如申請專利範圍第15項之快取記憶體,更包括: -第二輪出,_至該些比較器,肋顯示由該載人指令所請 求的該資㈣_赋地存在於雜取記舰中,如果該比較哭顯 不該來源虛擬位址與存於該頂端儲存元件中之該快取線虛擬位址未 ,配,並f該些比較n係顯補來源實際錄與存於該些儲存元件 中之該些實際快取線位址其中之一匹配。 1=申^專利範圍第16項之快取記憶體,其中在該輸出係表示由該 =之後的-第二時脈週射,該第二輸出係表示由該J指二 印未的該資料係非推測式地存在於該快取記憶體中。 认如申請專利範圍第!項之快取記憶體,其令位於一傳輸 訊賴包含提供給雜取域體的電腦可讀取程。 咖第1項之編_,提細嫩憶體的電腦 中^雷係為一電腦程式產品所包含之一電腦可使用媒體,其 中該電^程式產品係用於一計算裝置。 0·種可執彳了堆祕取記舰的推_人運算之微處職,包括: :第一快取記憶體,用以快取由推人指令所紋 一快取記舰包括-後進先出料記,随 以儲存對崎聽 一第二快取記顏,_快取由雜人記麵存取指令所指定 70 1249673 j (案藏第093123853號專利案之說明書修正) 的^料’該第—快取記憶體包括_非後出記憶體;以及 控制邏輯’轉接至該第一快取記憶體及該第二快取記憶體,若 由-載入指令所指定的-虛擬位址與存人該頂端項目中的該快取線 的-虛擬位址匹配,則會從該第一快取記憶體中該載入指令所指定 的該頂端項目資料,推測式地提供資料。 21·如申請補顧第2〇項之微處·,其中若該載人指令所指定的 該^擬位址與存於該頂端項目中之該快取線的該虛擬位址未匹配, 但若從該載人指令所指定_虛擬位址中所轉譯的—實際位址與存 於該第-快取記憶體中之複數條快取線其巾之—的_實際位址匹 配,則該控制邏輯會使該第-快取記憶體從該些快取線的該匹配一 個中,非推測式地產生該載入指令所指定的該資料。 22·如申請專利範圍第以項之微處理器,其中若從該載入指令所指定 的該虛擬位址中所轉譯的該實際位址與存於該第一快取記憶體中之 複數條快取線中的任一條之該實際位址未匹配,則當從該載入指令 所指定的該虛擬位址中所轉譯的該實際位址與存於該第二快取記憶 體中之一快取線中的一實際位址匹配時,該控制邏輯會使該第二快 取冗憶體非推測式地產生該載入指令所指定的該資料。 23·如申請專利範圍第20項之微處理器,更包括: 複數個實際位址比較器,耦接至該控制邏輯,用以偵測該控制 邏輯是否位於不正確地使該第一快取記憶體,從該載入指令所指定 的該頂端項目資料中,推測式地提供資料的一狀況。 24. 如申請專利範圍第23項之微處理器,其中係基於從該載入指令所 指定的該虛擬位址中所轉譯的一實際位址是否未命中該第一快取記 憶體之一判斷,來進行彳貞測。 25. 如申請專利範圍第23項之微處理器,更包括: -微碼記憶體’減至該控制邏輯’用以儲存用以從該情況中 71 1249673 (案號第〇93〗23853號專利案之說明書修正) 恢復之微指令。 26.如申請專利範圍第2G項之微處理器’其中在判斷從該載入指令所 指定的該虛擬位址中所轉譯的一實際位址是否與存入該頂端項目中 之該快取_-實際位祕配之前,若_人指令所指定的該虛擬 位址與存入該頂端項目中之該快取線的該虛擬位址匹配,則該控制 邏輯會使該第一快取記憶體從該載入指令所指定的該頂端項目資料 中,推測式地提供資料。 27.-種執行來自於堆疊記憶快取記憶體之推測式载入運算之方法,該 方法包括: X
以後進先㈣方式,將堆疊記紐資料存人—快取記憶體,· 在該儲存之後,觸-载人指令的—虛擬健是否與存入該快 取記憶體之-頂端項目中的資料之一虛擬位址匹配; 判iw載人指令的-實際位址衫與存人該頂端項目中的資 料之一實際位址匹配;以及 在判斷該載入指令的該實際位址是否與存入該頂端項目中的 資料之該實際位址匹配之前,若該載入指令的該虛擬位址與存入該 頂端項目巾的龍之該虛擬位祕配,則會從該顧項
料。 、1 /生土貝 28·如申請專利範圍第27項之方法,更包括: 在斷該載入指令的該實際位址是否與存入該頂端項目中 料之該實際位祕配之前’會親載人齡_趣位轉譯餅 載入指令的該實際位址。 Μ 29tt=_28項之方法,其中將該載人指令的該虛擬位址 轉澤成該載入指令的該實際位址動作,與該判斷該載入指令的該卢 擬位址是否與存人該快取記憶體的該頂端項目中的資料之該虛擬ς 址匹配的動作,二者係實質上並行地執行。 72 1249673 ; - (案戚第093123853號‘^之說明書修阳--------------------------------- 30. 如申明專利範圍第28項之方法,其中將該載入指令的該虛擬位址 轉譯成該載入指令的該實際位址係藉由一轉譯旁視緩衝器來執行。 31. 如申㈤專利縫帛μ奴方法,其中將該載人指令的該虛擬位址 轉譯成該載入指令的該實際位址包括將一虛擬記憶體分頁位址轉譯 成一實際記憶體分頁位址。 32. 如申請專利範圍第π項之方法,更包括: 當該載入指令的該實際位址與存入該頂端項目中的資料之該實 際位址未匹配時’若該載人指令的該虛擬位址與存人該頂端項目中 的貝料之該虛擬位址匹配,則在從該頂端項目產生資料之後,會產 生一例外訊號。 曰 33·如申請專利範圍第32項之方法,其巾該例外訊號係表示從該頂端 項目傳送到該載入指令的資料為不正確資料。 34·如申請專利範圍第32項之方法,更包括: 回應該例外訊號,將正確資料傳送到該載入指令。 35·如申請專利範圍第34項之方法,其中回應於該例外訊號而將正確 資料傳送到該載入指令的動作,包括一微處理器,包含該快取記憶 體,用以執行一微碼常式以產生正確資料。 36·如申請專利範圍第27項之方法,更包括: 基於非堆疊記憶體資料的一位址,而將非堆疊記憶體資料存入 一第一快取記憶體,而進入該第二快取記憶體的位置; —判斷該載人指令的該實際位址是否與存人該第二快取記憶體中 的資料之一實際位址匹配;以及 =該載入指令的該實際位址與存人該第二快取記憶體中的資料 之一實際位址匹配,則會從該第二快取記憶體中,產生資料。 37·如申=專利範圍第36項之方法,其中該判斷該載入指令的該實際 位址是否與存人鮮二快取記紐巾㈣料之該實際位址匹配匹 73 l249(S〇93 擎1"’’日韻黑丨正替換興j 123853號專利案之說明書修正) 配的動作,與該判斷該載入指令的該實際位址是否與存入該後進先 出快取記憶體的該頂端項目中的資料之該實際位址匹配的動作,二 者係貫質上並行地執行。 38· —種可執行堆疊快取記憶體的推測載入運算指令之電腦可讀取媒 體,包括: 電腦可讀取程式碼,用以提供給一快取記憶體,該程式碼包括: 第一程式碼,用以提供給配置成一後進先出記憶體的複數個儲 存元件,係讓該些儲存元件中的一頂端一個,用以儲存由複數個最 新近推入指令所指定之一快取線的資料,並且用以儲存該快取線的 一虛擬位址及一實際位址; 第一程式碼,用以提供給麵接至該頂端儲存元件一比較器,係 用以將該快取線虛擬位址與由一載入指令所請求的資料之一來源虛 擬位址進行比較;以及 第二私式碼,用以提供給耦接至該比較器一輸出,係用以在判 斷由該載入指令所請求的該資料之一來源實際位址是否與該實際快 取線位址匹配之前,若該比較器顯示該來源虛擬位址與存於該頂端 儲存元件中的該快取線虛擬位址匹配,則用以表示由該載入指令所 請求的該資料係存在於該快取記憶體中。 74
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/759,564 US7139877B2 (en) | 2003-01-16 | 2004-01-16 | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200525355A TW200525355A (en) | 2005-08-01 |
TWI249673B true TWI249673B (en) | 2006-02-21 |
Family
ID=34620721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093123853A TWI249673B (en) | 2004-01-16 | 2004-08-10 | Microprocessor and apparatus for performing speculative load operation from a stack memory cache |
Country Status (5)
Country | Link |
---|---|
US (1) | US7139877B2 (zh) |
EP (1) | EP1555616B1 (zh) |
CN (1) | CN1303536C (zh) |
DE (1) | DE602004017113D1 (zh) |
TW (1) | TWI249673B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI557640B (zh) * | 2010-12-12 | 2016-11-11 | 費雪三世羅素漢彌爾頓 | 記憶體快取結構中的中央處理器 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE241170T1 (de) * | 1995-10-06 | 2003-06-15 | Patriot Scient Corp | Architektur für einen risc-mikroprozessor |
US6615300B1 (en) * | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
GB2399899B (en) * | 2003-03-27 | 2005-06-22 | Micron Technology Inc | Active memory command engine and method |
US7073023B2 (en) * | 2003-05-05 | 2006-07-04 | Lsi Logic Corporation | Method for minimizing RAID 0 data transfer rate variability |
CN100377115C (zh) * | 2005-11-11 | 2008-03-26 | 中国科学院计算技术研究所 | 适用于上下文切换的栈高速缓冲存储器及缓冲存储方法 |
CN100428200C (zh) * | 2006-12-28 | 2008-10-22 | 北京时代民芯科技有限公司 | 一种片上指令cache的实现方法 |
US8751747B2 (en) * | 2008-02-26 | 2014-06-10 | International Business Machines Corporation | Management of cache replacement status in cache memory |
US7853827B2 (en) * | 2008-08-29 | 2010-12-14 | International Business Machines Corporation | Isotropic processor |
CN102460400B (zh) * | 2009-06-29 | 2014-09-24 | 惠普开发有限公司 | 基于管理程序的本地和远程虚拟内存页面管理 |
KR101283469B1 (ko) * | 2009-08-31 | 2013-07-12 | 한국전자통신연구원 | 프로세서 명령어의 메모리 액세스 방법 및 장치 |
US8359528B2 (en) * | 2010-07-23 | 2013-01-22 | Taiwan Semiconductor Manufacturing Company, Ltd. | Parity look-ahead scheme for tag cache memory |
US8555026B2 (en) | 2010-09-06 | 2013-10-08 | Lsi Corporation | Methods and systems for storing variable width stack elements in a single memory stack |
US20120079248A1 (en) * | 2010-09-24 | 2012-03-29 | Combs Jonathan D | Aliased Parameter Passing Between Microcode Callers and Microcode Subroutines |
US8838935B2 (en) * | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US9110778B2 (en) | 2012-11-08 | 2015-08-18 | International Business Machines Corporation | Address generation in an active memory device |
CN104699627B (zh) * | 2013-12-06 | 2019-05-07 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
US9418018B2 (en) * | 2013-12-31 | 2016-08-16 | Samsung Electronics Co., Ltd. | Efficient fill-buffer data forwarding supporting high frequencies |
US9940262B2 (en) * | 2014-09-19 | 2018-04-10 | Apple Inc. | Immediate branch recode that handles aliasing |
CN104572499B (zh) * | 2014-12-30 | 2017-07-11 | 杭州中天微系统有限公司 | 一种数据高速缓存的访问装置 |
CN106528450B (zh) * | 2016-10-27 | 2019-09-17 | 上海兆芯集成电路有限公司 | 数据预先提取方法及使用此方法的装置 |
US11194583B2 (en) * | 2019-10-21 | 2021-12-07 | Advanced Micro Devices, Inc. | Speculative execution using a page-level tracked load order queue |
US11733972B2 (en) | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address |
US11797673B2 (en) | 2020-08-27 | 2023-10-24 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by expeditiously initiating flushing of instructions dependent upon a load instruction that causes a need for an architectural exception |
US11907369B2 (en) | 2020-08-27 | 2024-02-20 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception |
US11868469B2 (en) | 2020-08-27 | 2024-01-09 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by preventing all dependent instructions from consuming architectural register result produced by instruction that causes a need for an architectural exception |
US11734426B2 (en) * | 2020-10-06 | 2023-08-22 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location |
US11853424B2 (en) | 2020-10-06 | 2023-12-26 | Ventana Micro Systems Inc. | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location |
US20220358037A1 (en) * | 2021-05-07 | 2022-11-10 | Ventana Micro Systems Inc. | Physical address proxy reuse management |
US11989286B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety |
US11989285B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking |
US11624831B2 (en) * | 2021-06-09 | 2023-04-11 | Suteng Innovation Technology Co., Ltd. | Obstacle detection method and apparatus and storage medium |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3401376A (en) * | 1965-11-26 | 1968-09-10 | Burroughs Corp | Central processor |
US3810117A (en) * | 1972-10-20 | 1974-05-07 | Ibm | Stack mechanism for a data processor |
US5043870A (en) * | 1982-02-24 | 1991-08-27 | At&T Bell Laboratories | Computer with automatic mapping of memory contents into machine registers during program execution |
GB2260429B (en) | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
US5500950A (en) * | 1993-01-29 | 1996-03-19 | Motorola, Inc. | Data processor with speculative data transfer and address-free retry |
US6151661A (en) * | 1994-03-03 | 2000-11-21 | International Business Machines Corporation | Cache memory storage space management system and method |
US5960487A (en) | 1994-03-16 | 1999-10-05 | Hawkins; Robert D. | Dry toilet |
US5751990A (en) * | 1994-04-26 | 1998-05-12 | International Business Machines Corporation | Abridged virtual address cache directory |
KR970029072A (ko) | 1995-11-17 | 1997-06-26 | 김주용 | 이중 디렉토리 가상 캐쉬 및 그 제어 방법 |
JP3634379B2 (ja) * | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
US6038643A (en) * | 1996-01-24 | 2000-03-14 | Sun Microsystems, Inc. | Stack management unit and method for a processor having a stack |
US5930820A (en) * | 1996-03-18 | 1999-07-27 | Advanced Micro Devices, Inc. | Data cache and method using a stack memory for storing stack data separate from cache line storage |
US5835968A (en) * | 1996-04-17 | 1998-11-10 | Advanced Micro Devices, Inc. | Apparatus for providing memory and register operands concurrently to functional units |
US5953741A (en) * | 1996-11-27 | 1999-09-14 | Vlsi Technology, Inc. | Stack cache for stack-based processor and method thereof |
US5956752A (en) * | 1996-12-16 | 1999-09-21 | Intel Corporation | Method and apparatus for accessing a cache using index prediction |
US6009499A (en) * | 1997-03-31 | 1999-12-28 | Sun Microsystems, Inc | Pipelined stack caching circuit |
JPH11212788A (ja) * | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6275903B1 (en) * | 1998-04-22 | 2001-08-14 | Sun Microsystems, Inc. | Stack cache miss handling |
US6496902B1 (en) | 1998-12-31 | 2002-12-17 | Cray Inc. | Vector and scalar data cache for a vector multiprocessor |
US6425055B1 (en) * | 1999-02-24 | 2002-07-23 | Intel Corporation | Way-predicting cache memory |
DE10102202A1 (de) * | 2001-01-18 | 2002-08-08 | Infineon Technologies Ag | Mikroprozessorschaltung für tragbare Datenträger |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
US6622211B2 (en) * | 2001-08-15 | 2003-09-16 | Ip-First, L.L.C. | Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty |
TW556212B (en) | 2002-01-14 | 2003-10-01 | Ip First Llc | L2 cache LRU generation method and apparatus |
US6671196B2 (en) * | 2002-02-28 | 2003-12-30 | Sun Microsystems, Inc. | Register stack in cache memory |
CN100419669C (zh) * | 2002-06-13 | 2008-09-17 | 中颖电子(上海)有限公司 | 精简功能及指令数量的微处理器 |
US7467377B2 (en) | 2002-10-22 | 2008-12-16 | Intel Corporation | Methods and apparatus for compiler managed first cache bypassing |
WO2004075512A1 (en) * | 2003-02-18 | 2004-09-02 | Nortel Networks Limited | Discovery of an application server in an ip network |
US7203798B2 (en) | 2003-03-20 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | Data memory cache unit and data memory cache system |
-
2004
- 2004-01-16 US US10/759,564 patent/US7139877B2/en active Active
- 2004-08-05 EP EP04254723A patent/EP1555616B1/en active Active
- 2004-08-05 DE DE602004017113T patent/DE602004017113D1/de active Active
- 2004-08-10 TW TW093123853A patent/TWI249673B/zh active
- 2004-12-20 CN CNB2004101011781A patent/CN1303536C/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI557640B (zh) * | 2010-12-12 | 2016-11-11 | 費雪三世羅素漢彌爾頓 | 記憶體快取結構中的中央處理器 |
Also Published As
Publication number | Publication date |
---|---|
EP1555616B1 (en) | 2008-10-15 |
US20040148468A1 (en) | 2004-07-29 |
DE602004017113D1 (de) | 2008-11-27 |
TW200525355A (en) | 2005-08-01 |
CN1619511A (zh) | 2005-05-25 |
CN1303536C (zh) | 2007-03-07 |
US7139877B2 (en) | 2006-11-21 |
EP1555616A3 (en) | 2006-01-11 |
EP1555616A2 (en) | 2005-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI249673B (en) | Microprocessor and apparatus for performing speculative load operation from a stack memory cache | |
TW548548B (en) | Store buffer which forwards data based on index and optional way match | |
TW591530B (en) | Hybrid branch prediction device with two levels of branch prediction cache | |
US6622237B1 (en) | Store to load forward predictor training using delta tag | |
US6651161B1 (en) | Store load forward predictor untraining | |
US9448936B2 (en) | Concurrent store and load operations | |
US5983325A (en) | Dataless touch to open a memory page | |
EP1095330B1 (en) | Register renaming in which moves are accomplished by swapping rename tags | |
US7958317B2 (en) | Cache directed sequential prefetch | |
TWI333629B (en) | Data speculation based on addressing patterns identifying dual-purpose register | |
US6694424B1 (en) | Store load forward predictor training | |
TWI294590B (en) | Variable latency stack cache and method for providing data therefrom | |
TWI275938B (en) | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory | |
US7680985B2 (en) | Method and apparatus for accessing a split cache directory | |
CN101646999B (zh) | 以适当的预解码预载来自可变长度指令集的指令的系统、方法和软件 | |
JP2003514299A5 (zh) | ||
TW200530912A (en) | Transitioning from instruction cache to trace cache on label boundaries | |
TW200821924A (en) | Self prefetching L2 cache mechanism for instruction lines | |
KR20020097149A (ko) | 종속성 체인을 발행 또는 재발행할 수 있는 스케줄러 | |
US7937530B2 (en) | Method and apparatus for accessing a cache with an effective address | |
US20070033385A1 (en) | Call return stack way prediction repair | |
US20150149723A1 (en) | High-performance instruction cache system and method | |
US6240503B1 (en) | Cumulative lookahead to eliminate chained dependencies | |
TW200919190A (en) | Method and apparatus for accessing a cache with an effective address | |
US6446189B1 (en) | Computer system including a novel address translation mechanism |