TWI262438B - Store-induced instruction coherency mechanism - Google Patents
Store-induced instruction coherency mechanism Download PDFInfo
- Publication number
- TWI262438B TWI262438B TW093121986A TW93121986A TWI262438B TW I262438 B TWI262438 B TW I262438B TW 093121986 A TW093121986 A TW 093121986A TW 93121986 A TW93121986 A TW 93121986A TW I262438 B TWI262438 B TW I262438B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory page
- memory
- logic
- page
- instruction
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 259
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000013519 translation Methods 0.000 claims description 25
- 238000000605 extraction Methods 0.000 claims description 24
- 239000000872 buffer Substances 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 8
- 238000012937 correction Methods 0.000 claims description 6
- 210000002784 stomach Anatomy 0.000 claims description 4
- 210000003205 muscle Anatomy 0.000 claims description 3
- 230000001934 delay Effects 0.000 claims description 2
- 238000011156 evaluation Methods 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 claims 1
- 238000001514 detection method Methods 0.000 abstract description 9
- 230000001427 coherent effect Effects 0.000 abstract description 2
- 238000012544 monitoring process Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 239000000463 material Substances 0.000 description 7
- 230000003111 delayed effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000255925 Diptera Species 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 210000000936 intestine Anatomy 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 235000002566 Capsicum Nutrition 0.000 description 1
- 208000001613 Gambling Diseases 0.000 description 1
- 241001547860 Gaya Species 0.000 description 1
- 239000006002 Pepper Substances 0.000 description 1
- 235000016761 Piper aduncum Nutrition 0.000 description 1
- 235000017804 Piper guineense Nutrition 0.000 description 1
- 244000203593 Piper nigrum Species 0.000 description 1
- 235000008184 Piper nigrum Nutrition 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004793 poor memory Effects 0.000 description 1
- 239000011257 shell material Substances 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000009941 weaving Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- 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
- 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
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
1262438 九、發明說明: I發明說明j 19曰提出申 19曰提出申 _】]本發明引用下列案件的優先權:2002年9月 請的美國申請臨時案,案號60/412111 ; 2〇〇3年今月 請的美國正式申請案,序號1〇/665]71。
[發明所屬之技術領域I
[0002] 本發明大致有關於微電子學的領域 =係應用於一管―
[先前技術I
[0003] 早期的微處理器係設計成一次執行 :’早期的微處理器會從程式的記憶體中提二因 執行。在執行該第-指令後,該早期 ^式心々亚 跑/式 于。然後’一第三程式指令合被提 取亚執仃,依此類推。由於在—蚊時間點 =被& 應用程式設計師可設計包含自我修正碼區段的程式η皮執订’ _其賴單_射,自邮 碼。在上述的例子中,芸兮筮一和Α 日我修正的私式 微處理器儲存於――己情體位% ί式々的執行結果係由該早期 式指令所欲提取的位置,則自我修 用自我修正碼的原因如下:節省記憶:子:= 隱藏/用程式中執行的指令以防止侵害著==暗; 技衔騎殊硬_介面麵碰财能。自雜正碼的 常難㈣’财也^麟,_補的程式瑪通 1262438 [0005]儘管有上述的缺點,自我修正碼卻因為上述理由而仍然 在使用γ但是,早期的微處理器卻沒有因為需要支援執行自我修 士碼而受到負面衝擊,現今,微處理器卻因為需要有額外的邏輯 早兀,而受到極大的衝擊,該額外邏輯單元係用於確保在出現自 我^碼區段的程式指令得以被適當地執行。這是因為現今的微 處理為不再-次只執行—個指令,而可同喊行數個指令◦多個 ^令係同時在連續的區段中執行(換言之,在—現今微處理器的 官線階段中執行,Hennessy及Patte麵定義管線(pipdine)為「一 種運算技術,其中多個指令係在運作過程中相互重疊」〜c〇寧如 Architecture. A Quantitative Approach, second edition, by John L Hennessy and David A. Patterson, Morgan Kaufmann Publishers, San ncisco, Calif·,1996· Hennessy 及 Patterson 並且提供一對於管 夕V 母步驟均對汽車的裝配有貢獻,每一步驟均與其 ,雖然其係作用在不同的汽車上。在電腦的管線 母—步驟完成—指令的—部分。如同裝配線一般, 同的4均平行地完成不同指令的不同部分。管線巾之每一牛 (pipe stage) (pipe segment) 〇 ϋί ϊ ί 形成—#線。指令從管線之—端進入,勤 =#又而攸另—端出去,就好像汽車在裝配線上-樣。 〇〇6]因此,在現今賴處理射,指 =經;連串,線階段直到完成執行二二入配 線微處理芯:::=執行不同的料指令時,現今的管 算,而導=取些管線階段完成其運 總虚评Λ^、A 的拖延’會造成管線效率(即, 〜月匕白、降低。但是,在現今的微處理器需要支援許多不 1262438 =式的運算’因此經料致管線的拖延。例如,對 寫入運算是相當慢的運算,而經常需要 ,Γ . ^ 性地改變〔即,你彼延官線。程式流條件 管線拖μ f ΐ件分支縛(toneh GperatiGn))往往導致 器管中出現自我修正碼’則是另一個現今的微處理 吕線申孝王式流茜要被中斷的情況。 庫於軒’該第—議令的執行結果係儲存於對 紅令的記憶體位置。當由該第-程式指令所主導 —前子時’若該第三程式指令已從記憶體中提提取並於 式扑鼻完成’則於該前段管線階段運算的該第三程 式設計師所意圖執行的運算。這是因為當該第 用Μ存取以提取該第三程式指令時,該應 Si 圖執行的指令尚未儲存於該記憶體中。此例子係 ,而導致一管線中指令不同調的情況 :〜U微處理騎必須處理關題。但是,現 衫正在_祕正碼。耻,現今之微處 性檢查錄㈣每個指令的同調 中的^===執行之齡運算執行嫌正在管線 杳其’ ·需要料微處理針的—裝置,該裝置係用以檢 。二、、。"的同调性’該裝裝置係較為簡單且需要較少的邏輯
【發明内容J
[⑻:本發明制於解紅述的_並應付習知技術的其他 埶"im:二限制。本發明提供一種優越的技術,用於由等候 執仃或同時被執儲存運算所導致的狀況中,以確保現今微處 1262438
Ji'i 二:Γ調性。在—實施例中,本發明提供一管線 二;I#π:錄置_於確保條線微處理器的各階 裝置包括指令快取管理邏輯以及同步邏 幸耳二純令快取㈣邏輯接收—對應於下―個指令的位址,並執 了-仏測’該檢測衫在未檢查對應於該下—個指令之記 ^emGrypage)的—部份的指令的同雛之前,該雜_兮 ,ΓΓ:' 記憶體頁的該部分中的指令的_ 不同調,該同步邏輯指令該管線微處理器 她編她轉·處理完其^ 置传在管線微處理器中之裝置’該裝 =執行之~位址,並執:忒== 2同調性之前,該記憶體頁的該部二:份= ==,送出該位址。該同步邏輯接收來料= 理器以清除(flush)該管線微處理器的先曰々該管線微處 [0011]本發财包括—鮮線微處㈣的方法, 個箄ΐϊ 檢測,該檢測係確定在未檢查對鄉 個專候執行之齡齡之錢體頁的—赌触 1262438 前,該記憶體頁的該部分無法自由地被存取;命令一指令快取中 的邏輯檢查該部分之記憶體頁中的指令的同調性;若該指令不同 調,則清除該管線微處理器的先前階段。 【實施方式】 [0023] 以下的說明,係在特定實施例及其必要條件的脈絡下 而提供,可使一般熟習此項技術者能夠利用本發明。然而,各種 對該較佳實施例所作的修改,對熟習此項技術者而言乃係顯而易 見,並且,在此所討論的一般原理,亦可應用至其他實施例。因 此,本發明並不限於此處所展出與敘述之特定實施例,而是具有 與此處所揭露之原理與新穎特徵相符之最大範圍。 [0024] 有鑑於以上背景討論中之使用於現今微處理器的管線 化指令及相關的技術,以確保在出現自我修正碼時管線階段中指 令的同調性,其相關技術範例請參照圖一及圖二。這些範例特別 指出並敘述當應用該習知技術於現今管線微處理器中,以確保儲 存引發指令的同調性時,該習知技術的缺點及限制。接著,來照 第3-10圖討論本發明,指出本發明之樣態、特徵及優點,優於在 現今之管線微處理器中用於確保指令同調性的習知技術。本發明 達到確保指♦同調性所需的功能,但其比運算現存的技 ^ 少的資源及動力。 文权 ,坤,㈣圖-,其係為—方塊圖,描述在—現今 ,漏巾的-範例階段。該微處理器觸有一提取邏輯咖= =-轉譯邏輯1()4。該轉譯邏輯刚係麵接至暫存邏輯咖。今 暫存邏輯1〇6係墟至定址邏輯應。該定址邏輯觸係 = =建輯110。该載入邏輯110係輕接至執行邏輯⑴。該執 2係麵接至儲存邏輯114。該儲存邏輯114係減至寫回邏輯 1262438 =6。細處理器卿具有一指令快取記憶體n8,該指令快取記 k、體118係經由一提取匯流排(fetch㈣124雛至提取邏輯 1〇2。此外,職處理器勤亦具有一資料快取記憶體12〇,該資 料快取記憶體120 <系經由一載入匯流排126輕接至該載入邏輯 110,並經由一儲存匯流排128耦接至該儲存邏輯114。該指令快 取記憶體118以及該資料快取記憶體12〇係分別經由匯流排13〇 及132耦接至一匯流排介面單元122。該匯流排介面單元η)經由 -記憶體匯流排134連接至緖記紐(未顯示於圖示中)。 [0026]在運异中,该提取邏輯1〇2從系統記憶體中提取巨集指 ,供微,理器100執行。該指令快取記憶體118是一種非常快的 晶片記憶體(Gn_ehiP _Giy),且其魏為綱湘卜侧位的 記憶體要做提取指令的存取,並先行將此齡儲藏域以便該提 取邏輯102可以在該指令快取記憶體118中快速地做存取,而無 須經由匯流排介面單元122及記憶體匯流排134做存取。若對應 於下-個指令指標的記憶體攔位在該指令快取記憶體118中常駐 且有效,則稱該下一個指令指標經過一次,,快取命中,,。當記憶體 欄位不常駐於快取記憶體118中,且必須用記憶體匯流排334提 取下一個指令時,會產生,,快取未中”。被提取的巨集指令係提供 給轉譯邏輯104,其將巨集指令轉譯成相關的微指令序列(也被稱 為本機指令native instruction)供微處理器1〇〇的後續階段1〇6、 108、110、112、114、116執行。該相關微指令序列中的每一微指 令係用以命令後續管線階段1〇6、1〇8、11〇、112、114、116内的 邏輯運算執行後續的運算,來達成—制的被提取巨集指令所規 範的架構運算。轉譯後的微指令係提供至暫存邏輯1〇6。用於後續 階段108、110、112、丨丨4、116的次運算的運算碼(operand)係 從暫存邏輯106中的暫存器(未圖示)存取。該定址邏輯ι〇8所 !262438 ,的運异碼係來自暫存邏輯腸或來自由—所提供的微指令所 战體位虛擬位址,·該些特殊次運算中所需的運算 二軍ί5亥暫存邏輯106或該虛擬位址存取。所產生用於資料操取 料俠Γ的t址储供至載人邏輯11G,該載人邏輯iig係經由該資 1加I己饫體120從記憶體擷取運算碼◦如同指令快取記憶體118 4貝料快取記憶體120亦是一種很快速的晶片記憶體,直 力=預測到哪-個攔位的記憶體要做存取,而先行將此搁位儲 ’以便載入邏輯110能快速地經由資料快取記憶體12〇存 傲卢^碼,不須經由匯流齡面單元122及記憶體匯流排134 ^同樣地’若對應於運算碼負載位址的記憶體區在快取12〇 駐且有效,則稱為—資料,,快取命中,,。當記憶體區不常駐 於快取120時稱為資料”快取未中”。 _7]如同先前的管線階段1〇2、1〇4、廳、1〇8、則一船, ,=邏,112使用所提供之運算碼(如果需要)以執行由“ =規範的該些次運算。如果執行邏輯112所執行該些次運算的 =果侧要被寫人到系統記健巾,_該賊果提供至儲存邏 ,1H。_存邏輯114職行縣果儲存至記憶體位置的次運 异。_存邏輯m亦麵接至資料快取記憶體12〇,並理邦地執行 儲存運算至資料餘記憶體12G中的快取記憶體位置,而 結果貢料經由記憶體匯流排134寫入。指定儲存於架構暫存哭 (archltectural register)的執行結果係提供至寫回邏輯ιΐ6。該^ 回邏輯m將結果寫入架構暫存器中。總而言之,將從記情體‘中 提蚊巨錢令轉譯油_微指令,紐該些相關的微指令同 步於官線時脈纖(未®*)的料經過每滅續崎輯運算 ,106、108、11〇、112、114、116,使得指定的次運算可以如同 I配線上的作業一般同時執行。 1262438 時所兩要的必I塊圖係描述微處理器100中應用於說明本發明 100 ^的件’為了清楚域,從圖式中省略了微處理器 :1=辑運算。熟f此項技藝者能瞭解微處理器刚包括 鼻的階段與邏輯單元,為了簡明起見,將其中的某些 ϋ 了德面,該負載邏輯單★ 11G 1以具體化為—快取介面 :f面接者—快取線校準階段(cache Hne alignment stage)。 那此項技藝者能瞭解微處理器、觸中執行 一指令/多資料單元。 早 [〇〇29]為了解微處理器刚之管線階段觀、刚、脳、應、 3主、112、m、116中的指令同調性的必須性,本發明提醒在兩 /况下必須檢查指令的同調性· ^當提取邏輯1〇2到指令快取 記憶體118提取下-個指令時。2) _存邏輯單叫對資料快 取體120旦告―儲存運算時。在第—個情況下,當儲存邏輯 m對貝料快取,己憶體120宣告一微指令,並且該微指令係用以執 仃-儲存運算至與下-個指令細的記憶體位置,但是該資料快 取記憶體120尚未將修正的位·由記㈣匯流排134傳回記憶 體中◦在此情況中,若該提取邏輯1〇2係從指令快取記憶體US 或記憶體經籠流排介面單元⑵擷取下—個指令,則下一個指 令^因資料快取記憶體12G宣告儲存至記憶體的潛時而不正確。 在第二個情況下,指令已被提取並已提供至在儲存階段ιΐ4之前 的任何管線階段102、1〇4、1〇6、108、11〇、112,當於其中之一 儲存微指令命令-贿運算朋彳提取織令的記憶體位置。在此 情況中,若不做同調雛的管理,在管線過財提取的指令會不 正確。 曰 [0030]就第-個情況而言’若微處理II中的邏輯單元债測到一 1262438 ,指令有關’通常會延遲下-已經通過後續===轉 =〇2)直到其他所有的指令 (Pipeline idle) ^ :線是空的且所有未決的儲V爾:經被ί=^ 與-未決的儲存指令里器中的邏輯單元棚 妙/〜“士 4 (也稱為目的位址)相關之指令已 、工—5 π Ν ’通常將來自管線所有階段的指令清除,該、、主 且匕括與目標位置相關之指令的階段 管線為閒置,鈇徭他、?日7之k取直到該 令。U…、後再開始攸與儲存的目標位址相關的位置提取指 邏輯===:n:c:^· 卜张、+、W 彳板'應區域)來_及管理,如 旦成正=的邏輯運算量與存在於微處理器管線中的階段的數 二法則二進:步表示’現今微處理器的指令同調性偵測及 _2]請參閱圖二’其係為一方塊圖細 如圖-所示之指令不同調的技術,該不咖= 或同⑽儲存運算。該方塊圖200中之提取階段邏輯運算 r r 4令指標暫存11216鋪至未決儲存目標偵測邏 i etargetdetectIogic) 208。該未決儲存目標偵測邏
=0曰8數量之儲存目標暫存器细’該儲存目標暫存器B 與微處理器可處理之未決儲存運算的數量相等。例如,依 用的記憶體模式而定,現今的微處理器會處理數個儲存 運异至寫回記憶體(WBbuffers),亦會翻數個儲存運算至複合寫 1262438 入記憶體(WC buffers),以及處理若干_存運算至 憶體(ST隱buffers)。詳細提供不同形式的記憶體模式 於現今微處理β系統所對應之記憶體屬性已超過本發 但是已經足齡示現今微處驾能必簡儲存運^ = ’ 憶體/記憶體之前,暫存一定數量的儲存運算,並且; 中指令之同調性,必須檢查與所有未決儲存運算的 :j 確定下-個欲提取之指令的位址與包含於目標暫存器22加 標位址相同。該方塊圖也描述儲存階段邏輯綱, 】 檢查邏輯2丨0 ’該儲存檢查邏輯加_至一微暫』 以及一 ^位址暫存器⑽。該儲存檢查邏輯單元蝴ΪΙ%匕 令指標暫存器228,指令指標暫存器22 曰 之前的管線階段數量相等。 數里,、儲存从204 [0033]運算上’該未決儲存目標偵測邏輯2 存運算是否存在於記憶體之一目標位址,並,==儲 下一個欲提取的指令的記憶體位置相同。按,下^ 令的虛擬位址係娜自下-指令指標暫存器216,並 儲存目標緩衝器226中的虛擬位址做比較 桿有 之内容顯示所有微處理器中之未決或同時儲存運算 下-指令指標暫存ϋ训_虛擬位㈣儲存 咖有與
=未決儲存目標偵測邏輯208,告一拖延訊號‘ ^同J 輯206。回應於該拖延訊號222的宣[該拖=建 =^='直到管財所有的活動完成(即管線間置 官線間置時,該同步邏輯206容許提取下—瓣入 田口亥 操取陶輯加 目標位置暫存器220的内如存取該健存微指^擬該 1262438 ==:::=令的虛擬位址,該程式 該儲存檢查邏輯210偵測到—指:^财階段所運算。當 標位址暫存器加的内容相的内容與該目 中運算。按,該儲存檢查邏輯2ζ觀畜:正確的指令正在管線 而傳送訊號至同步邏輯2G6 =由清^流排似 224的内容也可於干^ —根據特疋之運算,該清空匯流排 該同步邏輯單元曰^個管線階段中。因此, 再有與该不正確指令相關的階段),並當管線間置時 令指桿緩觀^了維持及求出儲存目標緩衝器226及指 外,孰羽士㈣衝 的内容必須做修正及求值。此 228的數解’需要維持及求值的指令指標暫存器 蓺者更以管線階段的數量成正比·此項技 階段之數量的增加,也許是增 運算在表碰方塊® 中之邏輯 之外並、、々古=$中除了與偵測及管理儲存引發的指令不同調 儲存引發指令不同用於偵測及管理現今微處理器之 制係由本發明所克:習知技射的缺點及限 300 其係為—方塊圖描述一本發明之微處理器 如同圖-I :確保未決或同時儲存運算時管線指令的同調性。 302㈠政處理器1〇0 ’本發明之微處理器300具有提取邏輯 ,“接至轉譯邏輯綱。該轉譯邏輯304係雛至暫存邏輯 16 1262438 306。該暫存邏輯306係麵接至定址邏輯3〇8。該定址邏輯遍係 減至載入賴310。該載人邏輯31〇係雛至執行邏輯3】2。該 執行邏輯3丨2 _接至儲存邏輯别。該儲存麵训 ' =邏輯316。該微處理器具有一指令快取記憶體 乂/央广 提取匯流排324输至提取邏輯搬。此外,該微處理器具有 -貧料快取記憶體320,經由—載入匯流排326搞接至該載入邏輯 310,並經由一儲存匯流排328耦接至該儲存邏輯。該指令快 取記憶體318以及該資料快取記憶體32()係分別經由匯流排33〇 及332耦接至一匯流排介面單元322。該匯流排介面單元Μ]經由鲁 一圯憶體匯流排334連接至系統記憶體(未圖示)。 [0037]此外,該指令快取318⑽一指令轉譯後備緩衝器. (instruction translation lookaside buffer,ITLB ) 336,經由匯流排- 33^轉接至同步賴340。該資料快取32〇具有一資料轉譯後備緩 衝器(data translation lookaside buffer,DTLB) 344,經由匯流排 342轉接至同步邏輯340。該同步邏輯輸出一清除訊號&以^一 拖延訊號341至管線同步邏輯(未圖示),該管線同步邏輯大體上 與圖二之管線同步邏輯206類似。 [0〇38]在運算中,該提取邏輯3〇2從系統記憶體中提取巨集指· 令供微處理器300執行。該指令快取318預測到哪一個搁位的記 憶體要做提取指令的存取,並紐將此攔位儲藏起來以便該提取 邏輯3G2可以在該指令快取318中快速地做存取,而無須經由匯 流排介面單元322及記憶體匯流排334做存取。提取的巨集指令 係提供給轉譯邏輯304,其紅集指令轉譯成相_微指令相供‘ 微處理器300的後續階段306、308、310、312、314、316執行。 該相關微指令序列中的每-微指令係用以命令後續管線 306、308、31〇、312、314、316内的邏輯運算執行後續的運算, 17 1262438 跑 =^_巨餘令賴範㈣顧算。轉譯後的微 各7係至暫存邏輯306。用於後續階段3〇8、3i〇、312、刀4、 =的後續運算的運算碼係從暫存邏輯施中的暫存器(未圖示) ,存取。用於後續階段施、3iG、312、314、316的次運 具碼係從暫存邏輯3〇6中的暫存器(未圖示取羅 二碼係來自暫存邏輯306或來自由一所提供= "斤生義體位置的虛擬位址,因此該雜殊次運算兩 的運算碼可從該暫存邏輯306或該虛擬位址存取 ^ 料擷^次運算的位址係提供至載入邏輯則,該載入邏輯310係二 由違貝料快取記憶體32G從記憶體擷取運算碼。該 ,32〇預測到哪—_位的記憶體要做存取,而先行將此搁位^ 藏起ί ’以便載入邏輯310能快速地經由資料快取記憶體320存 碼’而不須經由匯流排介面單元322 *記憶體匯= 做存取。 [0039]如同先前的管線階段3〇2、綱、3〇6、遍、31〇 ,行,輯312使用所提供之運算碼(如果需要)以執行由微又指 ^規粑的軸次運算。如果執行邏輯312所執行該些次運算的 :係須要被寫入到系統記憶體中,則將該些結果提供至儲存邏 # 4 j儲,邏輯314則執行將結果儲存至記憶體位置的次運 异。該儲存賴3U亦減至:諸錄記髓 ::運算至資料快取記憶體-。中的快取記憶體位置而不= 勃5經i記憶體匯流排334寫人。指定儲存於架構暫存器的 斬二、、、。果係提供至寫回邏輯316。該寫回邏輯316將結果寫入架構 言之’將從記憶體中提取之巨集指令轉譯成相關 ’敵該些相關的微指令同步於管線時脈訊號(未圖示) 的依序經過每個後續的邏輯運算階段鄕、观、31〇、312、314、 18 1262438 316,使得指定的次運算可以如同裝配線上的作業—般同時執行。
[〇〇40]圖二之方塊圖絲示本發明的必要元件,為了清楚起 見’從圖式中省略了微處理器300中的許多邏輯運算。孰習此項 技藝者能瞭解微處判包括許乡狀運算的·與邏輯單 :’為了_起見,將其中的某些集合為—。例如,在本發明之 2體實施例巾,該貞載邏輯單元31()可以具體化為—快取介面 尸皆段’後面接著-快取線校準階段。而且,熟習此項技藝者能瞭 =處=巾執行賴112可包含多卿行執行單元,例如
-整數單7G、-浮點數單元以及—鱗單元與其他特殊用途單元 的組合。
[0041]為了偵測及管理本發明之該微處理器3〇〇之管線階段 3〇2、304、306、3〇8、31〇、312、314、316 中的指令不同調本 發明在,二轉譯後備緩衝器336、344均提供邏輯運算,用於指示 «己U區疋否可自由存取而無須檢查管線中的同調調性。雖然未 在圖一及圖二均未提及,熟習此項技藝者會瞭解現今微處理器3〇〇 運用快取記憶體318、320中的TLBs 336、334來快取實體^址以 及記憶,屬性(例如,唯讀、複合寫入〕對應於常用虛擬位址所 映射的實體位址頁。例如,熟習此項技藝者可發現在171^ 336中 有一入口,該入口係對應於提取邏輯302所提供之下一個指令的 虛擬位址。若此虛擬位址,,命中,,該ITLB 336,則所有位址轉譯查 表(address translation table lookups )(例如頁目錄、頁表等)均無 肩執行,該位址轉譯查表係將虛擬位址轉換成現今微處理器3〇〇 中的實體位址。該記憶體頁的實體位址(下一指令所駐存)已經 連同其記憶屬性快取至ITLB 336中。然而,若該虛擬位址,,未中,, 該ITLB 336,則該位址轉譯查表必須被執行,以產生下一個指定 的實體位址。此實體位址用於在指令快取記體318中作為索引以 19 !262438 ίϊ了—個i旨令是否包含於其中。同樣地,轉譯後的位址及與載 儲存運异相關的記憶屬性快取於344中。 [〇〇42]本發明之-特徵為ITLB 336 &dtlb撕巾之每一入 :中提供額外的攔位’該攔位_以指示出—記縣中對應於每 =口之部分是否可以被自由存取,而無須檢查該記憶頁部分中 令同調性。在-實施例中,該記憶頁的部分為—頁的1/4。對 一 θ供4k位tl的Z憶頁的虛擬位址的微處職而言,本發明之— 貫,例表稍叙-記憶頁的lk位元部分侧不可則 而無須檢查指令的同調性。 取 [0〇43]在A斗麵性致動虛擬位址的微處理器的 =之較佳實施例需要執行TLB查表以確保指令的同調性= 疋虛擬位址已經不作用。 1定 [0044] 為了在該提取邏輯3G2到指令快取記憶體318提取下— =指令時,伽彳在齡提取時未決或_的贿運算,該下 以指標(即’包含下一個欲提取之指令的記憶體位置 址)係經由匯流排324提供至指令快取記憶體318中的mB现 令=到1TLB336内,則對該額外攔位做求值以 决二對fF—她令的記憶頁部分可否自由存取。若該求值表 頁的部分可以自由存取,則提取下—個指令而無須檢查 官線中指令的同調性。若下—個指令指標不見了,或若該搁^ 示該記憶頁部分無法自由存取,則下—個指令的指標經由排 338被提供至該同步邏輯“ο。 现排 [0045] 回應下-鋪令棘陳供,制步 排342命令DTL請檢查由咖咖中一對應的入口二= 該記憶頁部份中指令的同雛。若DTLB入口 = 20 1262438 處理器拖延下-护人的提取t旦口拖延訊號341,因此使微 3ω、312、W "岐直到管線的後續階段3()4、3()6、猶、 π晋曰㈣ 、316已完成執行所有先前的指令(即,直到管崠 間置且所有的儲存作業已經傳送)。 朋卜衷 為了在鍺存邏輯314執行儲存微指令時侧管線中指a ===::包括_定之儲存』
344 ^ 4,"排臭供至資料快取記憶體320中的DTLB 。右该目標虛擬位址指向dtlb 344 額外的攔位會做求值,以決定對 入口的 部分可否自由存取而無須檢杳的記憶頁之 =r該記._部分可-自 至^快取記憶體320中而無須進一步做檢查。若 队亥膝虛擬位址經由匯流排342提供至同步邏 _7]回應下-個指令指標的提供,該同步 匯流排338導命令ITLB 336檢杳由I1LB +早兀40、,、工由 指向之該記憶頁部份中指令的同調口所 份擷取-或多個指令),則朗步頁的部 339,該清除職339命令該微處理器清除先_管=== 下-指令的提取,直脱_置且所有的儲存作業已^八又止奴 。[0048]本發明使没計者利用管線微處理器中現τ: 輯’根據從該記憶頁部分所提取及儲存的指、、 憶頁指令的同調性。W用加入部分 从不料份記 TLB入口,人°可時(位至,存之) 21 1262438 至—記憶頁的一部份時,其對應之所有權欄位設定成表示DTLB,, 擁有”該記憶頁的部分。當指令從一記憶頁的一部分提取時,其對 應之所有權欄位設定成表示ITLB”擁有,,該記憶頁部分。該同步邏 輯340管理在ITLB336及DTLB344中的所有權欄位。在一實施例 中’對一兄憶頁中相同部份之所有權的表示是排他的。即,若對 應於特殊虛擬位址的入口係駐於DTLB 344 &ITLB 336,兩個入
口 有其中之一可表示擁有對應於該虛擬位址的記憶頁部分。在 另貫施例中,兩個入口都允許擁有一記憶頁的部分,但同調性 係基於該記憶頁是否為,,污染,,而定,詳如下述。 人[〇〇49]明參閱圖四’一方塊圖4〇〇描述圖三之微處理器中的 ^快取記憶體318及資料快取記憶體32G的相互關係。該方塊 ^描述一由提取(未圖示)所提供的下-指令指標402。, ^月,该下-指令指標4〇2係提供至指令快取記憶體_。該指 4^^:體4〇4/系經由一 DSN〇〇P匯流排422麵接至同步邏; 取圮==輯=係經由一腿00p匯流排436轉接至資料,1 (ICA^rm 指令快取記憶體404包括指令快取管理邏4 (ICACHE MANAGER) 406,經由匯产挑4川齡八絲…
衝器(ITLB) 40⑽h 、、工由匯机排420對扣令轉譯後備矣 v 毛月之—貫鈀例中,每一 HLB入口 410也且右銘逢 個科記憶頁的所有權攔位412、414、416、418,上::: 位的内容表示盘哕TTR 及等所有榷相 提^ _相關之記憶頁的部分可自由_ 4〇〇中,四個四人之“,^队查讀巾指令的同雛。在該方塊® 表示咖人口 4刀10 —而頁所有權搁位412、414、416,係用於 令之同調性管理。龙仙刀之胃的儲存梯度完成儲存引發指 或增加所有權攔位酬f對每,^ 而了使用早一頁的儲存梯度、半頁的儲存梯 22 1262438 二頁的儲存梯度。轉梯度、16分之一頁的儲存梯度以及32分之 [0()5()]妨塊圖彻亦 2⑽該微指令的相關目標位址攔位二算攔位 輯(未圖示)提供至一资 °亥荨攔位係由儲存邏 撕包括棘管理邏輯⑽=====記憶體 视包括_如场狀μ 4 _ 一 DTLB入口 438 ★且古、4¾ /3之實細例中,母 444、446、448,—_;111部分記憶頁的所有權攔位442、 相關》特百/ 4崔搁位的内容表示與該TLB入口 44〇 線中指令二=提取指令而做存取’無須檢查管 爛錢、4=6===_分之—頁所有權 你用於表不丁1^入口 410,而以四公夕 一頁的儲存梯度完成儲存引發指令 則λ 7之间5周性官理。其他的實施例 J„ 口 10刪除或增加所有權攔位,而可使用 刀之頁的儲存梯度以及幻分之一頁的儲存梯度。 [〇〇51]在運算上,兩對應之所有權位元412、442 ; 414、444 ; 416、446 ; 418、448 在兩對應之 ITLB 及 DTLB 入口 410、440 的 狀態係為排他的。即,若非指令快取記憶體404即是資料快取記 憶體432可擁有-虛擬記憶頁的一部分,但並非兩者可同時擁有。 當提供-下-指令指標暫存器(碰)搬至該指令餘記憶體4〇4 用於提取指令時’該指令快取管理邏輯4〇6對其對應之TLB入口 410及所有權位元412、414、416或418做存取(所存取的特殊的 部分記憶頁所有權位元412、414、416或418為NIP 402之低階位 址的函數’表示下一指令儲存於該記憶頁的那一部分。)若該NIp 23 1262438 ΙΤ=Γ’且若其部分記憶頁所有權位元4i2、414、416 憶體404擁有該記憶頁的部分,貝_ $被抚取=,、,、抓查同調性。若該着搬,,未中,,,或若命中但未 顯示擁有指令快取記情I#所右描gil^ir χττη 、心m、士心u 所有振則该NIP402經由DSN00P匯 k排422被kt、至該同步邏輯424。隨後,該 ISNOOP匯流排436提供^NTP4n9石次上m 田 ηττπ d,4i - 1 …亥贈402至—貝料快取管理邏輯434而在 + β 一,哥邛分圮憶頁的所有權。在資料快取記憶體432 中,料快取管理邏輯物對該則入口 440以及對應於所提 NIP 402 442^444^46 ^ itlb 4〇8所述所存取的特殊的部分記憶頁所有權位元仍、椒、仙 ,418為NIP 402之低階位址的函數,表示下一指令儲存於該記憶 、的那a邛刀。)若该NlP4〇2命中DTLB438内,且若其部分頁 =所有權位it 442、444、446或448表示資料快取432擁有該記 憶頁的部分,則該同步邏輯# 424藉由宣告拖延訊號(stall) 426,使微處理器延遲提取指令,並等到其管線閒置及儲存運算完 成此外’ 4同步邏輯424使資料快取管理賴434、經由匯流排 436釋放部份記憶頁的所有權並藉由改變對應之所有權搁位*似、 444、446或448的值而表示該釋放。同樣地,該同步邏輯424使 ‘令快,官理邏輯4〇6經由匯流排422建立該部分記憶頁的所有 權二並藉由改變對應之所有權攔位412、414、416或418的值而 表不忒建立。在本發明之一實施例中,若一 NIp 4〇2錯失ITLB 4〇8 並〒中DTLB 438,不論DTLB的所有權表示與否,對應於NIP 402 的DTLB入口 440由該同步邏輯424經由監視匯流排436、422複 製到ITLB 408的配對入口 410,避免位址轉譯查表程序(即,記 憶頁表走勢)。 [0052]當對應於一儲存微運算428的目標位址43〇被提供至該 24 1262438 資料快取記憶體432’該資料快取管理邏輯434對與其對應之 入口 440及所有權位元442、444、440或448做存取(所存取 特殊的部分記憶頁所有權位元412、414、416或418為NIP 4〇2 之低階位址的函數,表示該記憶頁的那一部分需被儲存)。若該目 才示位址430命中DTLB 438,且若其所有權位元442、444、446戋 448表示該資料快取記憶體404擁有該記憶頁的部分,則該儲存^ 公告而無須做同調性檢查。若該目標位址43〇錯失,或者是若命 中但資料快取所有權未表示,則該目標位址43〇經由isN〇〇p匯 流排436被提供至同步邏輯424。隨後,該同步邏輯424經由 DSNOOP ®流排422提供該目標位址43〇 1指令快取管理^ 406 ’在ITLB 408中搜尋部分記憶頁的所有權。在該指令快取記 憶體404中,該指令快取管理邏輯4〇6對TLB入口 41〇及對應於 所提供之目標位址430的所有權位元412、414、410或418做存 取。(如ITLB 408所述,所存取㈣殊的部分記憶f所有權位元 =、414、416或418為ITLB 408之低階位址位元的函數,表示 該記憶頁的那-部分的未決儲存要被公告)。若該目標位址43〇命 中ITLB 408内,且若其部分記憶頁的所有權位元化、4i4、416 或418表示該指令快取4〇4擁有該記憶頁的部分,則該同步邏輯 似藉由宣告清除訊號(FLUSH) 425,使該微處理器從先前指令的 管線階段清除該先前的齡,並㈣提取齡賴管線閒置且儲 存運算完成。此外’該同步邏輯424使指令快取管理邏輯概經 由匯流排422釋放部份記憶頁的所有權並藉由改變對應之所有權 攔位412、414、416或418的值而表示該釋放。同樣地,該同步 邏輯424使指令快取管理邏輯4〇6經由匯_ 422建立該部分記 憶頁的所有權’並藉由改變對應之所有權攔位树、物、撕或 448的值而表補建立。在本發明之—實施财,若—目標位址 25 1262438 430錯失DTLB 438並命中ITLB 408,不論rrLB的所有權表示盥 否,對應於目標位址430的ITLB入口 410由該同步邏輯424經由 監視匯流排436、422複製到DTLB 438的配對入口 440,避免位 址轉譯查表程序(即,記憶頁表走勢)。 [0053]請參閱圖五,一方塊圖表示本發明之快取管理邏輯 500。該快取管理邏輯500描述圖四之指令快取管理邏輯4〇6或資 料快取管理邏輯434的配置。該快取管理邏輯單元5〇〇包括TLB 存取邏輯502,該TLB存取邏輯502經由存出匯流排512耗接至 監視邏輯(snoop logic) 504,且經由存入匯流排514耦接至抓取 春 邏輯(snarf logic)506 ◦該監視及抓取邏輯504、5〇6係經由一監視 匯流排516耦接至同步邏輯(未圖示)。一虛擬位址(對應於下一. 才曰令^曰“或儲存目標位址兩者其中之一)係經由匯流排“Ο提供 至丁LB存取邏輯502。為了說明起見,圖五顯示一 32位元的位址 匯流排510,本發明也可包含其他的虛擬位址空間如16位元、64 位元、128位元及256位元的定址法則。該匯流排51〇也經過監視 邏輯504。虛擬位址ADDR 31 : 12的上位元(叩㈣池)係^共 至一轉譯後備緩衝器以經由一資料入口匯流排(ENTRY DATA)取 回一對應之TLB入口。 _ [0054]運算上,當一虛擬位址被提供至快取管理邏輯5〇(),該 TLB存取邏輯502將ADDR 31 ·· 12的上位元送至TLB,以決定 是否一入口存在於該TLB (即,命中)。若然,則該入口及其所有 、 權位元被複製到存取邏輯502的入口緩衝器5〇8。為了說明起見, : 5亥方塊圖顯示傳送一位址位元ADDR31 : 12至TLB,藉以表示一 4KB虛擬頁,然而本發明指出本發明也可應用至其他大小的虛擬 頁,包括l-KB、8-KB、16KB等。使用虛擬位址的低階位元(此 例中為位元11 : 1〇),該TLB存取邏輯5〇2對一對應之所有權攔 26 1262438 P3、QP2、qP1或qP〇做求值,以決定一虛擬記憶頁相關的 部分可否自由存取而無須在配對之TLB中搜尋所有權。若所有權 未表不,或若該虛擬位址全部錯失,則該監視邏輯單元5〇4將虛 擬位址傳送至同步邏輯(未圖示),經由該監視匯流排516監視其 他的TLB若其他tlb入口的狀態表示其入口欲複製至該tlb 存取邏輯,則該入口經由該監視匯流排516通過該抓取邏輯單元 刈6,並經由匯流排ENTRYIN 514提供至該TLB存取邏輯。若從 該快取Ϊ理麵從其配對部分經由監視匯流排啟動監視,則該抓 取邏輯單元506將該所提供之虛擬位址經由該存入匯流排514傳 达至TLB存取邏輯5〇2。在該對應之TLB入口的回復及檢查時, 右表不該TLB入口欲複製到配對的TLB,則該TLB入口係經由 匯流排存出512通過監視邏輯單元5〇4提供至該監視匯流排516。 該TLB存取邏輯單元5〇2由該同步邏輯單元導引改變所有權攔位 QP3_QP0的狀態。 [0055]請參閱圖六,其係為一表格6〇〇用以描述同步動作,該 同步動作係回應於本發明之未決儲存的運算,以確保一管線中指 令的同調性。如前圖三至圖五所示,若提供至DTLb的一目標: 址命中DTLB,且若該DTLB擁有一記憶頁的部分,並且對^記 憶頁的部分之儲存運算為未決,則該儲存可被完成而無須檢查管 線中指令的同調性。若該DTLB命中但並不擁有該部份記憶&的 所有權,則監視該ITLB。若該ITLB命中,並且擁有該部份記憶 頁的所有權,則清該管線除並拖延直到該儲存運算完成且該管線 為閒置。該ITLB中的所有權位元係設定用於表示該ITLB不再擁 有該部分記憶頁,而該DTLB中對應的所有權位元係設定於表示 該DTLB現在擁有該部分記憶頁。若該TILB的監視命中但所有權 未表示,該DTLB表示部分記憶頁的所有權且完成該儲存運算。 27 1262438 若該DTLB錯失,則啟動一 iTLB監視。在一 ITLB監視命中時, 其fLB入口被複製至DTLB。若該ITLB表示該部分記憶頁的^ 有權,則清除該管線並拖延直到其閒置。在ITLB中的所有權位元 係設定於麵該ITLB不再擁_部分記憶胃,且該Dtlb中對^ 的所有權位元設定成表示該DTLB現在擁有該部分記憶頁。若該 ITLB入口不表示所有權’ _ DTLB人口係設定成表示部分記^ 頁的所有權’且該儲存運算係使用實體位址及複製到該itl 性資訊來完成。 的屬 一 [0056]請參閱圖七,其係為一表格7〇〇用以描述同步動作,該 同步動作在本發财提取下—個指令前執行以確保管線中指令= 同調性。若驗下-指令的虛擬位址被提供至—ITLB且命中該 且若該ITLB擁有儲存將用以儲存下一指令的部分記憶頁: =完成指令的提取而錢檢絲線巾齡的同雛。若該 二但未擁有該部分記憶頁的所有權 τ Γ運t中ί擁有ί_記憶頁的所有權,_線拖夂= 兮ΓΓτϋ成且5亥官線閒置。當該管線閒置時,則提取下一指令。 ί憶頁,% Γ财權位元係蚊絲示該dtlb不再擁有該部分 ϋ〜tlb中對應的所有權位元則表示該1tlb擁有該部分 但輪所有權™ 被啟動。在—DTI^ :亥1TLB錯失,一 DTLB的監視 雜DTT h - 印中時,其灿人口被複製到該1TLB。 閒置。部分記憶頁的所有權’則該管線係拖延直到其
閒ϊ:則提取下-個指令。該_中的所有權 中對庫的:不、不仙11^不再擁有該部分記憶頁,而ITLB 财紳奴《。若該 不表不所有榷,則該ITLB入口係設定成表示部分記憶 28 1262438 dtlb 的另_ =上與圖五之快取管理邏輯5。。中的數j:=:狀: 指令二己細頁欄位QP3.的狀態無須僅在 體與貧料快取記憶體之間擇…如 ==料快取記憶體均可表示相對於所提供之虛擬= 的所有權。這使龍快取記憶體的讀取不影塑指 ‘ 财料快取記憶體做讀取,該DTLB存取邏輯單元 快取釋放^^之記憶頁的所有權’但同步邏輯單元不需要該指令 钟 θ冑。因此,若賴應之記憶頁卿分發生指令提取, 提取可70成而無須監視DTLB。既然該指令及資料快取 白謂有-記憶頁之一特殊部分的所有權,本發 ^邏f 8〇2”存取TLB入口攔位謝t的污染旗號位元(dirty 1 ^ 〇3的狀態,在來自指令快取的一 dtlb監視中,若一 =係等純彳该已經傳送至航翻的部分,或者是若僅讀取 =已ί里被傳送至該記憶頁的部分,則繼續進行指令提取而無須 I /貧線。热習此項技藝者瞭解該污染旗號位元⑽3為Mesi Κ取線狀怨私示态其中之一,普遍用來指示快取入口的内容已經 被七改’但尚未傳送至記憶體。雖然污染旗號位元803表示成TLB 入口 801的一部份,熟習此項技藝者知道該污染旗號位元也指定 在,取内儲存的位準,傳統上在快取線辦。第9、10圖根據快 的另—實施例更詳細地討論管線的同步。 [0058]睛參閱圖九,其係為一表格9〇〇用以描述詳細的同步動 29 1262438 算,以確Γ應於根據圖八之另—實施例800的未決儲存運 供至DTTrf令的同調性。根據該另一實施例漏,若一提 曾等待勃/、目標位址命中DTLB,且若該DTLB擁有該儲存運 it Γ憶頁的部分,且若該記憶頁需修改(或與該目 t ==指令同雛。^目標位址命中該肌β,且若該 (或對庫之之該記憶1科_有權,且若該記憶頁 ^^之!·夬取線)無須修改,則該_必須被監視。在一謂 ί 辭線必馳清除且齡的提取被拖延直到該 :置=存運算已經傳送。此外,⑽中的所有 =成表不ΠΧΒ不再擁有該記憶頁。在itlb監視未命 二,存運算被傳送。若該DTLB命中但未擁有該部分記情頁 有Ιτω #ITLB命中並擁有該記憶頁的所 置此Γίί皮/除並誕制雖純算完成且歸線被閒 卜 +之财嫌70設定絲補ITLB不再擁有兮 W«的所有權且DTLB中對應 ;; :擁有該部分頁。細則的監視命中但未表 =TLB表不_分記憶頁的所有權且完成儲存。若該 $ =啟動謂監視。在ITLB監視命中日寺,其灿 : :,腸表示該部分記憶頁的所有權,__ί^ 拖延直到閒置,包括傳运該儲存。此外,ITLB中的所 :、 設定成表示該ITLB不再财該龍㈣的所有權且肌 ^ ,有權位Tt設定成表示DTLB擁有該部分頁。若該则入口 ς 表示所有權,,DTLB人口設定成表示該部分記憶頁= 插,且完成該儲存使用該實體位址及複製到ITLB 有 [0059]第10 ®為-表格,_描朗步輯,在提取根據圖 30 1262438 二之該另—實施例_的下—指令前執行,以確保管線中指令的 5 :周性。若該下—指令的虛擬位址(提供至-ITLB)命中該ITLb, =。亥ITLB擁有下一指令儲存於其中的部分記憶頁,則完成 々的提取而無須檢查管線中指令的同調性。若該腦命中但: 有=部分記憶頁的财權,_ DTLB被監視。絲dtlb㈣ 中且該對應之記憶頁(或快取線,若快取龍存梯度提供於 巧1狀態)需要修改’ _f線被拖延制完成該 管線 。當料閒置時,提取下—指令。若該_的監視^ -…、…的Zfe頁(或快取線)無須修改,則該ITLB表示部分 頁的所有觀提取該齡。若該ITLB錯失,雜動—dtlb監視: 在- DTLB命中時’其txb人口係複製到該ITLB。若對資 取的監視表示該對應之記师的部分(即,記憶頁或快取線的部 /刀)需要修改’ _管線被拖延朗其·。#該管線為閒置, 則提取下-齡。若該資料快取的監視表示該部分記憶頁 取線)無祕正,則下—指令被提取使職實體位 到
OTLB的屬性資訊。 设衣至J —[0060]雖然、本發明及其目的、特徵及優點已詳細地揭露,其他 κ施例也包含於本發明中。例如’本發明為了圖示方便,以分 的指令快取以及資料快取做討論,但是本發明的發明者表示 明也可包括複合的快取結構。TLB人口可共享且嶋响搁位可^ 不一指令路徑或一資料路徑中的所有權。 [0061] 此外,本發明係以—管線的特殊階段(提取、轉 做說明。這些名稱與集合係於此_以清楚地揭示,而非暗示爲 線的結構。本發明可用於具有任意數量的現今的管線結厂包ς 具有紊亂微指令的子集合。 [0062] 熟習此項技藝者可以用所揭露之概念及特定之實施例 1262438 3礎來4或改良其他的結構以實現與本發明相同的目的。而 每中請專利範圍所定義之本發明的精神及範圍,可以 貝%不同的變更、取代及變形。 I發明圖式說明】 範例ΓΓ圖—為習知技術的方塊圖,描述現今管線微處理器之一 測料tLt為—方塊圖’描述—現今的技術,該技術係用於偵 同調处為&、i中由等待執行或正在執行的儲存運算所導致的不 或正圖生= 根據本發明之一用於在等待執行 r00161m ^ ""Μ τ’雜讀齡㈤調性賴處理器。 記憶體以_快取 [:=]圖五為描述本發明之快取管理賴的方塊圖,。 步動[作二_存運算的同 同步[:]:二 施例陶咽人.方細,财本發明之快取管理轉的另-實 =021頂九為-表格,描述本發明運用圖八之快取 另^實Ϊ0儲存運算的同步動作,以確保管財指令的同調性的 32 1262438 一實施例 [0022]圖十為—表格’描述本考 跡^_令之前_步動作’以確保二中 圖號說明: ==1(Ϊ I4^隱 _ 輯;则 ㈤鮮.”。 輯 執行邏輯;114儲存邏輯;116寫 入^ : ·/曰令快取記憶體;120資料快取記憶體;122匯流排 ^4^取_ ; 126 _赌;12_匯流排; 2】0同步邏輯;2〇8未決目標備測邏輯; 220日ίΓ—邏輯;216次指令指標暫存器;218微運算暫存器; TZ t^Tl^ ; 222 ; 226 ; 228 不存态,300微處理器;302提取邏輯;304轉譯邏輯; 古f f存#輯’ 3⑽定址邏輯;310載入邏輯;312執行邏輯;314 1子化輯,316寫回邏輯;318指令快取記憶體;32〇資料快取記 憶體/· 322匯流排介面單元;324提取匯流排;326載入匯流排; 32f儲存匯流排;330、332匯流排;334記憶體匯流排;336指令 轉厚後備緩衝339清除訊號;⑽同步邏輯;糾拖延訊號; 342t=流排;344資料轉譯後備緩衝器;400方塊圖;402下一指 令,404指令快取記憶體;406指令快取管理邏輯;408指令 轉澤後備緩衝器(ITLB) ; 410 TLB 入口; 412、414、416、418 部分兄憶頁的所有權攔位 ;420匯流排;422 DSNOOP匯流排;424 同步邏輯;428微運算攔位;430相關目標位址欄位;432資料快 取兄憶體;434資料快取管理邏輯;436 ISNOOP匯流排;438資 料轉譯後備緩衝器(DTLB); 440TLB 入口; 442、444、446、448 33 1262438 部分記憶頁的所有權欄位;450匯流排;500快取管理邏輯;502 TLB存取邏輯;504監視邏輯;506抓取邏輯單元;510匯流排; 512存出匯流排;514存入匯流排;516監視匯流排;800快取管 理邏輯;801 TLB入口欄位;802 DTLB存取邏輯;803污染旗號 位元(dirty bit)
34
Claims (1)
1262438 十、申請專利範圍: 1· 一種管線微處輝哭& 中齡的同調性括用於確保該歸微處理器之階段 址广、^吕理邏輯’組態成接收對應於一下—指令之一位 由傲ί、顺應於該下—指令之—記憶頁的—部份可否可自 若必二^無須檢查胁1顧料巾齡的_性,且 — 屑松查同調性時,提供該位址;以及 組?献純傾骑闕難㈣位址,並命令 ί貝輯檢查該記憶胃之該部分巾指令的同調 一 °Λ‘々與該記憶頁該部分不同調,則該同步邏輯單 Ϊ;二處理器拖延下一指令的提取’直到該管線微 的之邊卩白&已執行所有先前的指令。 2· ill專利賴第1項所述之裝置,其巾該齡快取管理邏輯 情應於該位址的指令轉譯後備緩衝器(ITLB)的入口求值, 以偵測該記憶頁部分是否無法被自由存取。 3· 士申.月專利範圍第2項所述之裝置,其中上述itlb的入口 應該記憶頁。 4·如申.月專利範圍第3項所述之裝置,其中上述肌b的入口包 括複數個部分記憶頁所有權位元。 5·如申請專利範圍第4項所述之裝置,其中該複數個部分記憶頁 所有權位元其中之一對應於該記憶頁之該部分。 6·如申凊專利範圍第5項所述之裝置,其中其餘該複數個部分記 憶頁所有權位元係對應於該記憶頁的其餘部分。 7·如申請專利範圍第5項所述之裝置,其中該記憶頁之該部分可 被自由存取,若該對應於該記憶頁之該部分之該部分記憶頁所 有權位元已被設定。 35 1262438 8.如申請專利範圍第5項所述之 無法自由存取,若該對應卿^百-中上述記憶頁之該部分 所有權位元未被設定。、…⑷頁之該部分之該部分記憶頁 9·如申请專利範圍第4項 所有權位元包括四個部分記中趙數個部分記憶頁 括該記憶頁的四分之—。,斤有推位元,且其中該部分包 10.如申請專利範圍第丨項 輯對h 置,其中上述資料快取管理邏 : 資料轉譯後備緩衝器(D刺的入口 n 麟指令衫與該記憶頁_部糾調。 u.如申睛專利範圍㈣項_ 對應該記憶頁。 Υ罝其中上述DTLB的入口 12t=:圍第U項所述之裳置,其中上述·Β的入口 包括禝數個部分記憶頁所有權位元。 U·如申請專利範圍第12項所 π述之玫置,其中該複數個部分記憶 頁^振位凡其中之—對應於該記憶頁 Ϊ4·如申請專利範圍第13項 ^刀 ^ 、厅呔之羞置,其中其餘該複數個部分 此胃財她讀、_記憶胃的 U·如申請專利範圍第13項 邰 之今邱八田- 江錢,其中該指令與該記憶頁 右該對應於該記憶頁之該部分之該部分記憶 貝所有榷位70已被設定。 所有分之該部分記憶頁 物勒咖之階段 一資料快取管理邏輯單元,轉成麵對應—未決之儲存指令 36 1262438 之-位址,並偵測對應於該儲存指令的一記憶頁的—部份 否自由做存取’而無須檢查场記憶頁之該部分中指令的同 性,且若必碰查__,提供該位址 ;以及 。 同步邏輯,組恶成從該指令快取管理邏輯接收該位址,並 該指令快取管理_檢查該記憶頁之該部分巾指令的· 性^右该指令與該記憶頁該部分不同調,則該同步邏輯A 々。亥官線微處理态清除該管線微處理器的先前階段。 18.如申请專利範圍第π項所述之裝置,其中上述資料快取管 邏輯對對應於該位址的一指令轉譯後備緩衝器(dtlb)的入 口求值卩偵膝玄冗憶頁的該部分是否無法做自由存取。 19·如申請專利範圍第18項所述之裝置,其中該〇彻的入 應該記憶頁。 中 20. 如申請專利範圍第19項所述之裝置,其中該DTLB的入μ , 括複數個部分記憶頁所有權位元。 匕 21. 如申請專利範圍第2〇項所述之裝置,其中該複數個部分記情 頁所有權位元其中之一對應於該記憶頁之該部分。 μ 22. 如申請專利範圍第21項所述之裝置,其中其餘該複數個部八 記憶頁所有權位元係對應於該記憶頁的其餘部分。 σ ^ 鲁 23·如申請專利範圍第21項所述之裝置,其中該記憶頁之該部八 可被自由存取,若該對應於該記憶頁之該部分之該 所有權位元已被設定。 頁 24·如申請專利範圍第21項所述之裝置,其中上述記憶頁之嗦a ; 分無法自由存取,若該對應於該記憶頁之該部分之該部分二j ; 頁所有權位元未被設定。 〇乃舌己憶 25·如申請專利範圍第20項所述之裝置,其中該複數個部分—立 頁所有權位元包括四個部分記憶頁所有權位元,且其中 37 1262438 包括該記憶頁的四分之一。 26.ΐ1=Γ範㈣17項所述之打,其中該指令快取管理邏 於該位址的-資料轉譯後備緩衝器 二 值由以_該指令是否與該記憶頁的該部分同調。 求 =申請專利範圍第26項所述之裝置,其中 應該記憶頁。 W八口對 n專利範圍第27項所述之裝置,其中上述itlb的入 括禝數個部分記憶頁所有權位元。 G 2^申請專利細第28項所述之裝置,其中該複數 頁所有權位元其巾之-對應於該記<itI之該部分。4 2圍第29項所述之裝置,其中其餘該複數個部分 頁所有榷位兀係對應於該記憶頁的其餘部分。 專利範圍第29項所述之裝置,其中該指令與該記 不關’若賴應_記憶頁之該部分之該部分記慎 頁所有權位元已被設定。 〜 32·=管線微處理器的方法,用於確保該管線微處理器之 才曰々的同調性,該方法包括下列步驟: 甲 資料決取冗憶體中,伯測對應於—未決儲存指令之— 由做存取,而無須檢查該記憶頁該部分中^ 命HiT取記憶體中之邏輯檢查該記憶頁之該部分中指 31 Γί指令不_ ’則清除該管線微處卿的先前階段。 圍第32項所述之方法,其中該_步驟包括: 貝料轉譯後備緩衝II (DTLB) 做求值,該入口係對 %;用於该未決儲存指令之一目標位址。 ” 38 1262438 34. ^申請專利範圍第33項所述之方法,其中該抓b入口對應 该記憶頁。 35. ^申請專利範圍第33項所述之方法,其中上述飢b的入口 匕括複數個部分記憶頁所有權位元。 36·ΐΓί專利範圍第35項所述之方法,其中該複數個部分記憶 頁所有她7L其巾之-對應於該記憶狀該部分。 37·如=專利範圍第36項所述之方法,其中其餘該複數個部分 5己十思頁所有權位元係對應於該記憶頁的其餘部分。 3=申,專利範圍第37項所述之方法,其中該記憶頁之該部分 由存取’右賴應於該記憶頁之該部分之該部分記憶頁 所有柘位元已被設定。 39tlt利範圍第37項所述之方法,其中上述記憶頁之該部 由存取,魏對應於該記憶頁之該部分之該部分記憶 頁所有杻位元未被設定。 401戶=專_第35項所述之转,其中該複數個部分記憶 41 圍第32項所述之方法,其中該命令步驟包括: 對一扎令轉譯後備緩衝器(ITLB) 於用於該未決儲存指令之一目標位ς口做求值,该入口係對應 第41項所述之方法’其中該1則入,於 4H專利範圍第42項所述之方法,其中上述⑽的入口包 括複數個部分記憶頁所有權位元。 匕 專利範圍第43項所述之方法,其中該複數個 頁所有她元其中之-對應於該記_之該部分。 u 39 1262438 45. 如申請專利範圍第44項所述之方法,其中其餘複數個部分記 憶頁所有權位元係對應於該記憶頁的其餘部分。 46. 如申請專利範圍第45項所述之方法,其中該指令與該記憶頁之 該部分不同調,若該對應於該記憶頁之該部分之該部分記憶頁 所有權位元已被設定。
40
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/665,171 US7263585B2 (en) | 2002-09-19 | 2003-09-19 | Store-induced instruction coherency mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200512650A TW200512650A (en) | 2005-04-01 |
TWI262438B true TWI262438B (en) | 2006-09-21 |
Family
ID=34194761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093121986A TWI262438B (en) | 2003-09-19 | 2004-07-23 | Store-induced instruction coherency mechanism |
Country Status (4)
Country | Link |
---|---|
US (1) | US7263585B2 (zh) |
EP (1) | EP1517232B1 (zh) |
CN (1) | CN1560736A (zh) |
TW (1) | TWI262438B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621179B2 (en) * | 2004-06-18 | 2013-12-31 | Intel Corporation | Method and system for partial evaluation of virtual address translations in a simulator |
GB0513375D0 (en) | 2005-06-30 | 2005-08-03 | Retento Ltd | Computer security |
US8817029B2 (en) * | 2005-10-26 | 2014-08-26 | Via Technologies, Inc. | GPU pipeline synchronization and control system and method |
US7360022B2 (en) * | 2005-12-29 | 2008-04-15 | Intel Corporation | Synchronizing an instruction cache and a data cache on demand |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US7447956B2 (en) * | 2006-03-03 | 2008-11-04 | Qualcomm Incorporated | Method and apparatus for testing data steering logic for data storage having independently addressable subunits |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8479174B2 (en) * | 2006-04-05 | 2013-07-02 | Prevx Limited | Method, computer program and computer for analyzing an executable computer file |
US7945761B2 (en) * | 2006-11-21 | 2011-05-17 | Vmware, Inc. | Maintaining validity of cached address mappings |
US7937561B2 (en) * | 2008-04-03 | 2011-05-03 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
US10574630B2 (en) | 2011-02-15 | 2020-02-25 | Webroot Inc. | Methods and apparatus for malware threat research |
US9804969B2 (en) * | 2012-12-20 | 2017-10-31 | Qualcomm Incorporated | Speculative addressing using a virtual address-to-physical address page crossing buffer |
US9747212B2 (en) * | 2013-03-15 | 2017-08-29 | International Business Machines Corporation | Virtual unifed instruction and data caches including storing program instructions and memory address in CAM indicated by store instruction containing bit directly indicating self modifying code |
CN104050092B (zh) * | 2013-03-15 | 2018-05-01 | 上海芯豪微电子有限公司 | 一种数据缓存系统及方法 |
US9898418B2 (en) * | 2015-05-21 | 2018-02-20 | Via Alliance Semiconductor Co., Ltd. | Processor including single invalidate page instruction |
US9824012B2 (en) * | 2015-09-24 | 2017-11-21 | Qualcomm Incorporated | Providing coherent merging of committed store queue entries in unordered store queues of block-based computer processors |
KR102376396B1 (ko) * | 2016-12-07 | 2022-03-21 | 한국전자통신연구원 | 멀티 코어 프로세서 및 그것의 캐시 관리 방법 |
US10740167B2 (en) * | 2016-12-07 | 2020-08-11 | Electronics And Telecommunications Research Institute | Multi-core processor and cache management method thereof |
KR102377729B1 (ko) * | 2016-12-08 | 2022-03-24 | 한국전자통신연구원 | 멀티 코어 프로세서 및 그것의 동작 방법 |
US10706150B2 (en) * | 2017-12-13 | 2020-07-07 | Paypal, Inc. | Detecting malicious software by inspecting table look-aside buffers |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835949A (en) * | 1994-12-27 | 1998-11-10 | National Semiconductor Corporation | Method of identifying and self-modifying code |
US5742791A (en) | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5930821A (en) * | 1997-05-12 | 1999-07-27 | Integrated Device Technology, Inc. | Method and apparatus for shared cache lines in split data/code caches |
US6164840A (en) * | 1997-06-24 | 2000-12-26 | Sun Microsystems, Inc. | Ensuring consistency of an instruction cache with a store cache check and an execution blocking flush instruction in an instruction queue |
US6460119B1 (en) * | 1997-12-29 | 2002-10-01 | Intel Corporation | Snoop blocking for cache coherency |
US6405307B1 (en) * | 1998-06-02 | 2002-06-11 | Intel Corporation | Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline |
US6594734B1 (en) * | 1999-12-20 | 2003-07-15 | Intel Corporation | Method and apparatus for self modifying code detection using a translation lookaside buffer |
US6848032B2 (en) * | 2002-09-27 | 2005-01-25 | Apple Computer, Inc. | Pipelining cache-coherence operations in a shared-memory multiprocessing system |
-
2003
- 2003-09-19 US US10/665,171 patent/US7263585B2/en active Active
-
2004
- 2004-01-15 EP EP04250168.4A patent/EP1517232B1/en not_active Expired - Lifetime
- 2004-07-23 TW TW093121986A patent/TWI262438B/zh active
- 2004-08-16 CN CNA2004100560993A patent/CN1560736A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
TW200512650A (en) | 2005-04-01 |
US20040068618A1 (en) | 2004-04-08 |
EP1517232A2 (en) | 2005-03-23 |
EP1517232B1 (en) | 2016-03-23 |
US7263585B2 (en) | 2007-08-28 |
CN1560736A (zh) | 2005-01-05 |
EP1517232A3 (en) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI262438B (en) | Store-induced instruction coherency mechanism | |
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 | |
CN103620555B (zh) | 抑制不正确的推测性执行路径上的控制转移指令 | |
TW559732B (en) | Method and apparatus for maintaining processor ordering | |
US8166251B2 (en) | Data prefetcher that adjusts prefetch stream length based on confidence | |
US8140769B2 (en) | Data prefetcher | |
TW311192B (zh) | ||
US8627044B2 (en) | Issuing instructions with unresolved data dependencies | |
TW200805151A (en) | Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines | |
TW200949690A (en) | Processor and early execution method of data load thereof | |
US6622237B1 (en) | Store to load forward predictor training using delta tag | |
KR100228940B1 (ko) | 메모리 일관성 유지 방법 | |
EP1244962B1 (en) | Scheduler capable of issuing and reissuing dependency chains | |
US6694424B1 (en) | Store load forward predictor training | |
US20110185125A1 (en) | Resource sharing to reduce implementation costs in a multicore processor | |
TW201030612A (en) | Pipelined microprocessor with fast conditional branch instructions based on static exception state | |
TW200530912A (en) | Transitioning from instruction cache to trace cache on label boundaries | |
CN103635877B (zh) | 乱序处理器中的分支目标存储与检索 | |
US6564315B1 (en) | Scheduler which discovers non-speculative nature of an instruction after issuing and reissues the instruction | |
US20120290821A1 (en) | Low-latency branch target cache | |
US6622235B1 (en) | Scheduler which retries load/store hit situations | |
US20130024647A1 (en) | Cache backed vector registers | |
WO2001050252A1 (en) | Store to load forwarding predictor with untraining | |
TW200821924A (en) | Self prefetching L2 cache mechanism for instruction lines |