TWI220223B - Apparatus and method for allocation and initialization of a cache line - Google Patents
Apparatus and method for allocation and initialization of a cache line Download PDFInfo
- Publication number
- TWI220223B TWI220223B TW092116036A TW92116036A TWI220223B TW I220223 B TWI220223 B TW I220223B TW 092116036 A TW092116036 A TW 092116036A TW 92116036 A TW92116036 A TW 92116036A TW I220223 B TWI220223 B TW I220223B
- Authority
- TW
- Taiwan
- Prior art keywords
- prefetch
- cache line
- instruction
- microprocessor
- patent application
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 58
- 238000013519 translation Methods 0.000 claims abstract description 23
- 230000004044 response Effects 0.000 claims description 24
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 3
- 229910052797 bismuth Inorganic materials 0.000 claims description 2
- JCXGWMGPZLAOME-UHFFFAOYSA-N bismuth atom Chemical compound [Bi] JCXGWMGPZLAOME-UHFFFAOYSA-N 0.000 claims description 2
- 238000012545 processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 101150037847 MES1 gene Proteins 0.000 description 1
- 241000283973 Oryctolagus cuniculus Species 0.000 description 1
- 101150081243 STA1 gene Proteins 0.000 description 1
- 101100097991 Schizosaccharomyces pombe (strain 972 / ATCC 24843) rar1 gene Proteins 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011423 initialization method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 244000144985 peep Species 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000011257 shell material Substances 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000000725 suspension Substances 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
1220223
五、發明說明(l) 與相關申請案之對照 [0 0 0 1 ]本申請案與下列同在申請中之中華民國專利申 請案有關,其申請日與本案相同,且具有相同的申請人與 發明人。 台灣申諸 申請曰 DOCKETNUMBER iJLAM 案號 92 1 1 60 3 5 92/ 6/ 1 3 CNTR. 2157 意圖進行儲存 < 預取機制 92116037 92/6/13 CNTR.2182 區段記憶體之意 圖進行儲存的預 取機制 92116034 92/6/13 CNTR.2183 快取記憶體資料 區段的配置與初 始化機制 【發明技術領域】 [0 0 0 2 ]本發明係有關微電子學 及方法使程式員得以命令微處理器 的領域,尤指一種裝置 在其内部快取記憶體
1220223 五、發明說明(2) ---- (cache)上執行配置與初始化一個區段(bi〇ck)快取線 (cache line)的預取運算(prefetch 〇perati〇n)。 【先前技術】 [〇〇03]在今日的微處理器,其内部邏輯區段(logic block)間的資料傳輸速度遠超過於其與外部記憶體的存取 速度。在一個x86桌上型電腦組態中,其匯流排(bus)與系 統記憶體之間的界面運作速率是以百萬赫(megahertz)的 百倍计,但疋其内部微處理器時脈速率卻已接近數十倍的 十兆赫(gigahertz)。因此,近年來已發展出一個快取記 體=構的層級體系,此體系使得高效能微處理器不必在 每次頃取(read)或寫入(wri te)資料時,必須在一個緩慢 的s己憶體匯流排(m e m 〇 r y b u s )上執行作業 (transaction),而更能發揮其效能。 [〇〇〇4] 一個機載(on —board),或區域(i〇cai),快取 ^憶體在一個官線化(p丨pe丨i ne)微處理器中是一個獨立的 單位,在本質上,其運作方式對於在管線化微處理器中流 動的指令而言是透明(transparent)的,此方式確保一個 應用程式(appl 1 cat ion program)中之指令所需要的資料 已經常駐在其快取記憶體内,而可以用管線速率存取,而 不是以記憶體匯流排速率。不同的技術使用不同的快取記 憶體架構,有些係由多層(mu u丨p丨e i e ve丨s )快取記憶體 所組成·第一層快取記憶體係非常接近處理器的執行邏輯 (execution logic),第二層快取記憶體可以是晶片上
1220223 五、發明說明(3) ' (on-ch i p )或非晶片上’係用來儲存較不常存取的資料, 苐二層快取5己j思體則可此疋在§己憶卡(e m r y c a r d)上, 以此類推。不論應用那一種架構,熟習此領域技術者將發 現使用快取記憶體的目的在於排除當匯流排作業係經由_ 個緩慢的記憶體匯流排所發出時的微處理器管線中指令的 停滯(stal led),此匯流排作業係為了取得一待決的 (pending)讀取或寫入運算所需之資料。當此狀況發生, 程式的執行將產生令人難以忍受的暫停(halt),直到得到 所需資料為止。 [0 0 0 5 ]今日電腦系統元件(dev i ce )間共用記憶體區域 的現象使付情況更為複雜。舉例而言,主微處理器 (primary microprocessor)與通訊微處理器 (communications miCroprocessor)之間的通訊是經由在 一指定記憶體區域上的讀取及寫入資料。視訊元件(vide〇 device)上顯示資料予操作員(〇perat〇〇之視訊卡(vide〇 的微處理器與主微處理器共用一些被稱之為視訊緩 衝态(video buffers)的記憶體區域,也是很常見的情 形0 [ 0 0 0 6 ]在共用記憶體系統中,可能發生來自一個乒用 區域(region)的資料存在於兩個不同微處理器的區域 、1:1)快取記憶體中’或是存在於連結到同—個記憶體 匯^排之不同兀件±。若所有元件只是單純的讀取資料, 則允許它們將資料常駐於其區域快取記憶體結冑,並不合 造成任何傷害。但是當它們均被允許改動(modify)存在於
第8頁 1220223 五、發明說明(4) 其區域快取記憶體的資料時,即會造成不可預期的後果。 [0 0 0 7 ]為防止此情況發生,系統設計者開發了快取記憶體 一致性協定以標示快取記憶體中資料之狀態。MESI是最普 遍使用的協定。依照MES I來維護區域快取記憶體可以確保 同一資料的兩個副本不會在同一時間被改動。MES I共用狀 態告知區域快取記憶體一特定區段的資料是否為共用 (s h a r e d)。如是共用,則區域處理器在經由一較慢的記憶 體匯流排上執行作業以取得排他許可(exclusive permission)之前,不得改動資料。若欲改動資料,處理 器需先取得資料的排他所有權。 [ 0 0 0 8 ]本發明在此強調的問題是有關於欲將資料寫入 記憶體時所招致的發生在程式内的延遲。熟習此領域技術 者將發現快取記憶體並無合理的方法以得知何時一特定記 憶體區域會最先被需要,因此當該特定記憶體區域第一次 被載入到區域快取記憶體時,總是會引起記憶體匯流排延 遲。認知此項事實,設計者開發了一可在微處理器上執行 的預取指令。但是預取指令並不能在程式流程的運算元上 運作。確,的說,預取指令命令區域快取記憶體從記憶體 上載入運算元到該快取記憶體以備未來之用。而且因為快 取ό己憶體單元與记憶體間的運作方式,對一微處理器管線 内之指令流程而言,是透明^,因此審慎的方式是在需用 資料之前先發出預取指+,使得快取記憶體可以在需用資 料之刖,從圮憶體提取資料—與在主程式流程㈧^㈣口 program flow)中其他指令的執行平行處理。然後當隨後
1220223 五、發明說明(5) 的指令(subsequence instruction)出現,並且需要存取 已預取之資料時,此資料已經在快取記憶體中立即可存取 (readily accessible),所以程式的執行不會因為等待從 記憶體提取資料而停滯。已預取之資料在快取記憶體中立 即可存取係僅指其將要被讀取而已。如果此預取之資料會 被隨後的指令所改動,則程式的執行將必須延遲以等待快 取記憶體單元到匯流排去請求共用資料的排他所有權,而 後區域處理器始可改動此資料。 [ 0 0 0 9 ]如前所示,共用記憶體區域被廣泛的應用在今 曰電腦系統,以提供各元件間之資訊通訊之用。以元件間 之一連接到匯流排的通訊緩衝器(communieati(^ 為例,在資料區域之一些資料的存在或不存在換言之,该 指定區域被設定成同一邏輯數值,或全為一,或二 ^ 零),對一元件而言,可表示另一元件已 \ 料^對的’在-視訊缓衝n的㈣巾,W 缓衝态項目設為同一數值,微處理器兔 ° 員”繪製"背景顏色。為了在元件間轉移資:始=作 子皆須在資料區域内之資料實體上儲存特次’L兩個例 事態皆不須在轉移窨1夕疗&泡兮吹αι 疋貝枓。而這些 此,在共用記怜髀畤曾备始为夕_钟士 t Α的貪料。因 記憶體區域時,甘叙^ 士也而巧也祕 ^ ^貝料到一共用 ^ 並無經由快取記憶體以前谁$,丨h h ^ 排的有效律方法〜g卩你,山益& W Μ 運到圮fe體匯流 ^ ^ 即使經由預取運算,該Jt田^ α 早已事先截入A ^ ^ /、用冗憶體區域 亍U肀兀戰入到快取記憶體—因為該快 ^ 可能不是排他的擁有。 °己^體内之資料
第10頁 l22〇223 五、 發明說明(6) [0010] 因 此 我 等 需 要 一 種 裝 置 及 方 法 使 得 程 式 員 得 以 命 令微處 理 器 執 行 預 取 資 料 5 此 資 料 係 處 於 不 需 求 助 於 匯 流 排作業 以 取 得 資 料 的 排 他 所 有 權 5 而 可 被 隨 後 的 運 算 所 改 動的狀 態 〇 [0011] 除 此 之 外 , 我 等 亦 需 要 一 種 裝 置 及 方 法 使得 程 式 員 得以命 令 微 處 理 器 將 被 已 排 他 的 預 取 之 資 料 初 始 化 (i n i t i a 1 i z e) 〇 [ 發 明内容 ] [0012] 本發 明 如 同 前 述 其 他 中 請 案 係 針 對 上 述 及 其 他 習 知技術 之 問 題 與 缺 點 加 以 克 服 〇 本 發 明 提 供 —— 種 更 好 的 技 術以預 取 一 快 取 記 憶 體 資 料 其 狀 態 係 為 使 得 障 含 的 儲 存 運算可 立 刻 被 公 告 以 便 該 資 料 被 初 始 化 成 ,— 指 定 數 值 〇 在一具 體 實 施 例 中 5 提 供 一 種 組 態 為 配 置 與 初 始 化 記 憶 體 中一快 取 線 的 微 處 理 器 裝 置 0 該 裝 置 包 括 轉 譯 邏 輯 與 執 行 邏輯。 轉 譯 邏 輯 將 -— 區 段 配 置 及 初 始 化 指 令 轉 譯 成 微 指 令序列 此 微 指 令 序 列 係 用 以 命 令 微 處 理 器 預 取 處 於 排 他 狀態的 一 快 取 線 並 且 將 此 快 取 線 初 始 化 成 指 定 數 值 〇 執行邏 輯 係 耦 接 至 轉 譯 邏 輯 〇 該 執 行 邏 輯 接 收 前 述 微 指 令 序列, 然 後 經 由 記 憶 體 匯 流 排 發 出 作 業 要 求 該 處 於 排 他 狀態之 快 取 線 並 且 將 該 快 取 線 初 始 化 成 一 一 指 定 數 值 0 [0013] 本發 明 的 一 個 目 的 係 提 供 一 種 微 處 理 器 裝 置 以 執行 配置與 初 始 化 運 算 〇 此 裝 置 包 含 配 置 與 初 始 化 指 令
1220223 五、發明說明(7) 及一轉譯器 於排他狀態 值。轉譯器 始化指令轉 處理器内的 業,此匯流 取線初始化 [0014] 化一快取線 與初始化巨 指令序列, 於排他狀態 數值;而且 匯流排作業 取線初始化 化指令命令微處理器預取一處 將此快取線初始化成一指定數 初始化指令’並將此配置與初 關的微指令,此相關的微指令命令在微 輯經由一記憶體匯流排發出匯流排作 排作業係要求此快取線的排他所有權及將此快 成一指定數值。 。該配 之快取 則是接 譯成相 執行邏 置與初始 線,並且 收配置與 本發明 的方法 集指令 此微指 的之快 ,回應 以讀取 成該指 的另一目 。此方法 ;轉譯該 令序列係 取線,並 此微指令 該處於排 定數值。 的,在於提供一種配置與初始 包括提取(retrieving) —配置 配置與初始化巨集指令成一微 用以命令一微處理器預取一處 且將此快取線初始化成一指定 序列,經由記憶體匯流排發出 他狀態之快取線,並且將該快 【實施方式】 [0 0 34 ]以下的說明,係在一特定實施例及其必要條件 ::脈:下而提供’ f使一般熟習此項技術者能夠利用本發 ^而,各種對该較佳實施例所作的修改,對熟習此項 =術:而言乃係顯而易見,並且,在此所討論的一般原 Ϊ展Π應用至其他!施例。因I本發明並不限於此處 理盘& i、敘述之特定貫施例,而是具有與此處所揭露之原 理與新穎特徵相符之最大範圍。
1220223 1220223
五、發明說明(8) [ 0 0 3 5 ]前文已針對今日之管線化微處理器如何執行預 取運算,作了背景的討論,有鑑於此,在圖一至三,將呈 現一強調今日預取技術之限制的例子。緊接著,^圖四至 十八,將呈現本發明之討論。本發明使得程式員得以命令 微處理器預取處於排他MES I狀態的資料至其快取記情體, 並且將資料初始化為所規定數值,因此,得以避免^為隨 後的儲存運算執行資料的初始化所造成的任何程式延遲。 [ 0 0 3 6 ]請參閱圖一,其係一方塊圖,用以說明在今日 管線化微處理器1 0 0内的重要管線階段1 〇 1 - ;1 〇 5。此微^理 器有一個提取階段1 0 1,一個轉譯階段1 02,一個暫存階段 1 0 3,一個定址階段1 0 4,及一個執行階段1 〇 5。 [ 0 0 3 7 ]於運作時,該提取階段1〇1從系統記憶體之一 指令範圍120中提取(retrieve)巨集指令12卜123以供微處 理器1 0 0執行。該巨集指令1 2 1 - 1 2 3接著被送至轉譯階段 102。該轉譯階段1〇2將巨集指令12 1-1 23轉譯成對應的微 指令(或稱原生指令)序列(未顯示),此微指令序列係命令 微處理器100執行巨集指令12 1-1 23指定之運算。非常類: 於工廉產品在裝配線上流經連續的工作站之方式,該微指 々亦同步於管線時脈訊號(未顯示)的流經在管線中隨後 的段1 0 3 - 1 〇 5。根據刖述方式,微指令被送至暫存階段 1 0 3。如果有一特定微指令指定一運算元被儲存於暫存階 段1 0 3之暫存器内,則邏輯在那一點上可存取該暫存器以 提取該運算元,並且將之隨同該特定微指令一起送至定址 階段104。定址階段丨〇4包含用以產生位址以存取儲存在資
第13頁 1220223 五、發明說明(9) 該 料記憶體1 08内之運算元的邏輯。相似於 定址階段m亦將所產生之位址,隨著相段1。3, 送至執行階段1 〇 5。 ^的U指令,< 在 [〇〇38]執行階段105執行該微指令所 當今的微處理器100 ’運算的型式是由指:疋加的運异。 (instruction set architecture)所決二木日構 ,將發現這些運算不會超出一般的範•旦二員 :料=二’及由記:J存取運算(換言 <,資料讀取與 貝枓寫入運^)。由執行指定之運算所產生的社 是儲存於儲存於暫存階段103之暫存器内’ ^ = 資料記憶體1 0 8内的記憶位置。 … [ 0039 ]熟習此項技術者將發現今日的管線化微處理 益100也許會有比圖一之iOhi 05更多的階段,因為,經由 分解管線中的主函數以增加管線中階段的數目是種經證實 可增^管線(pipe line)中指令m —丨23之產出量的技術。Λ 為了簡明起見,如圖一所示之當今微處理器丨〇 〇的管線化 階段1(Π-105已經足以說明先前技術之缺點,而不需以不 相關的細節增加讀者的負擔。 [0 0 4 0 ]值得注意的是在當今微處理器丨〇 〇中,其執行 階段1 0 5除了有一資料快取記憶體丨〇 7之外,還有執行邏輯 1 0 6。該資料快取記憶體1 〇 7的運作是與在管線化階段1 〇 1 一 1 〇 5中指令之執行平行,此運作方式確保那些有高度可能 性被一應用程式之指令1 2卜1 2 3所存取的資料已經存在於 快取記憶體1 0 7,因此當資料存取微指令(換言之,載入記 第14頁 1220223 五、發明說明(10) ' — 憶體或儲存記憶體微指令)進行到執行階段1()5時,該執行 邏輯106能夠在一或兩個管線時脈週期之内 存取,而不是造成可能數以百計之時脈週期的程式延遲, 只因為等待經由記憶體匯流排110到資料記憶體1〇8以執行 該貪料的存取。在一有效率的快取記憶體系統組態中,資 料的載入與儲存絕大部份發生在經由快取記憶體匯流排 1 0 9之執行邏輯1 〇 6與資料快取記憶體丨〇 7之間,並且資料 快取記憶體1 0 7的運作方式是相對的透明於流經管線化階 段1 0 2 _ 1 0 5的微指令流程’此運作方式確保資料實體的快 取副本與系統記憶體1 〇 8是同步且一致的。 [ 0 04 1 ]MESI(修改,排他,共用,無效)(m〇dified, exclusive,shared,invalid)是個普遍使用的協定,此 協定係用以在一系統組態之記憶體1 〇 8的共用區域内確保 其快取記憶體項目的一致性。雖然並未在圖一中描述,但 是為了使用同一資料運算之目的,在一電腦系統組態中之 其他元件(未顯示)是可以共用記憶體1 〇 8的一些區域。舉 例而言,視訊卡可以與微處理器1 〇 〇共用記憶體1 〇 8的一個 區域,以便於存取微處理器1 0 0所產生的監視器顯示資 料。另一例則是在系統匯流排11 〇上的多重元件可以經由 從資料記憶體1 〇 8中之共用區域的資料讀取及資料寫入來 彼此連絡。架構性研究之詳細敘述以提供使用MES I協定的 動機並不在本發明的應用領域;此處只需了解MES I在確定 系統記憶體1 08與區域快取記憶體結構1 07之間資料的一致 性之普遍應用。
第15頁 1220223 五、發明說明(π) [0 0 4 2 ]因為經由記憶體匯流排1 1 〇的作業需要數以百 計之時脈週期才能完成’所以資料被以包含數個位元組的 區段形態在資料快取記憶體1 〇 7中移進及移出。這些區段 稱之為快取線。雖然快取線行寬(換言之’快取線之位元 組大小)會因不同的架構而改變’在今曰的系統架構非常 常見的有32 -位元組行寬’或位元組行寬’或甚至128 -位元組行寬。 [0 0 4 3 ]即使是最有效率的快取記憶體結構1 0 7在起動 從記憶體1 0 8,經由記憶體匯流排1 1 0 ’到快取記憶體1 0 7 的進行資料轉移,不可避免的會有所延遲。但是在提供一 快取線予快取記憶體1 0 7之後,其隨後的對該快取線内之 資料實體的存取即不會發生重大的延遲,因為快取記憶體 1 0 7及其快取記憶體匯流排1 〇 9的速度是與微處理器1 〇 〇内 其他邏輯的速度(例如執行邏輯1 〇 6 )相近的。 [ 0 044 ]依照MESI協定,隹跑域頁科快取記憶體1〇7内 的快取線可處於下述任一四種狀態中:修改,排他,共 用’及無效。一修改狀態之快取線係指在該快取線上執行 一區域儲存運算後,但是尚未與主記憶體1 0 8同步化之快 取線 1測來自其他元件(亦稱為匯流排元件)之經由其兮己 憶體匯流排11 〇的記憶體作業是區域快取記憶體1 〇 7的責 任,因此如果匯流排元件從一修改狀態之快取線要求資 料則區域快取記憶體丨0 7會將該修改過的資料送至該貝 求貧料之匯流排元件。此種對匯流排丨丨〇 = I槟式(bus snooping)。一排他狀態之快取線係指其
第16頁 1220223 五、發明說明(12) 快取記憶體1〇7可以在該快取線上執行儲存運算之快 線的;fl ί㈣g暗不其區域㈣記憶體107擁有對該快取 排他所有權;微處理器100因此被許可修改其内容。 ,狀態之快取線係指存在於兩個或數個在匯流排!】。 =件的區域快取記憶體1〇7内之快取線。因此,任一元 m:的快取線讀取資料’但均不被許可去修改其 存運曾)Λ Λ的快^線上修改資料(換言之,執行儲 产排lTn盘贫多? 内谷之丽,兀件1 〇0需先經由記憶體匯 :所有權:換G件當的作業以取得該快取線的排 取記憶體m)。—旦取得該快取線的排他所有;卜 儲存運算’並且將該快取線狀態 :他;=P〇Stlng)儲存運算之前,先行要求快取線的 :::有:可:保證資料的一致…為在任一時間點, ^ K體7^ ^可以修改其快取線的内容。當區域快 至其快取錄的、宜貝至1 (經由窺視模式)經由記憶體匯流排1 1 0 排ll 0袼、、、;入作業,或是當另一元件經由記憶體匯流 ^ U, g. \匯級排作業以取得該快取線的排他所有權時, ΠΪΪ狀ί即變更為無效狀態。將-快取線標示為無效 ^ ^ "之貝料與記憶體1 0 8不一致而無法被讀取或寫 管線[中τη 取記憶體107的運作是與在微處理器 資料的存取,在程式流程12°中,設計者需在 /之如’先提供預取巨集指令1 2 2以載入 1220223 五、發明說明(13) 該資料到一快取記憶體1 0 7 ’因此得以克服資料必須起始 的從記憶體1 08提取至快取記憶體1 07所導致之延遲的缺 點。在程式流程1 2 0中通常有一預取指令1 2 2以命令其區域 快取記憶體1 0 7從記憶體1 0 8載入一快取線’而此預取指令 1 2 2與隨後指令的執行是平行的,因此當程式流程1 2 0的指 令1 2 3要從該快取線存取資料的時候,該快取線已經存於 其快取記憶體107中。在圖一的例子中’一預取指令122, PREFETCHTO [EAX],命令由暫存器EAX的内容所定位之快 取線被載入到快取記憶體1 〇 7,使得其内容可被隨後的資
料存取指令123,MOV EBX,[EAX],在資料流程12〇中被執 行時所使用,此資料存取指令1 2 3命令微處理器1 〇 〇從由暫 存器E A X指定之位址讀取資料,並且將之移至暫存器£ β X。 因為X 8 6指令已被廣泛的認知’為了簡明起見,傳統上前 述資料流程120内的預取指令122及資料存取指令丨23之描 述係根據χ86的指令集架構。但是熟習此項技術者將發
現,在許多其他的指令集架構亦提供預取指令122以命令 U處理器1 〇 〇從記憶體1 〇 8讀取一快取線至一區域快取記 f 1 0 7,使得隨後的指令1 2 3從該快取線執行一指定的資 讀取運算不會發生延遲。如果預取指令是很明知二 =程12〇内,則可以有效率的克服因為在快取曰記請〔 =起始存取資料所造成之延€,而因此顯著的改進程式 行速度。當完成預取運算之一經由 ^ 作業後,其所需求的快取線不是以:他己以匯流排110的 快取記情俨1 η 7撼右兮也你細 狀悲(若是該區域 取ζ隱體ΠΠ擁有该快取線的唯一快取副本時),即是
第18頁 1220223 五、發明說明(14) 共存狀態(若是其他元件亦擁有該需求快取線的快取副本 時)存在於快取記憶體1 〇 7内。不論其在那一狀態,在該快 取線内的資料實體是可被立即讀取(read)存取的。但是如 前述所指明,為將資料寫入到一快取線(換言之,執行一 儲存運算),需要擁有該快取線之排他所有權。因此,如 果該預取運算導致快取處於排他狀態之快取線,則一待決 之儲存即可立刻對此快取線公告。但是若該來自匯流排 11 0之快取線是於共用狀態,則一待決之儲存必須被停滯 (s t a 1 1 e d ),以等待該快取記憶體單元1 〇 7經由匯流排11 〇 發出作業以取得該快取線之排他所有權。在該快取線在排 他狀態下被送至快取記憶體1 0 7之後,則該待決之儲存即 可被公告。 [0 0 4 6 ]現請參閱圖二,其係為一方塊圖2 〇 〇,用以描 述在圖一之微處理器内執行預取運算之一界面至記憶體的 快取記憶體單元。該方塊圖2 0 0顯示在微處理器2 0 1内被應 用為執行預取運算的邏輯。該微處理器2 0 1内有一轉譯器 2 1 0以接受一巨集指令流程2 0 2並將之轉譯成對應的微指令 2 1 1。用以命令對記憶體2 4 2作資料載入及儲存運算的微指 令2 11隨後即被送到一快取記憶體單元220。該快取記憶體 單元220包括記錄邏輯221及一資料快取記憶體222。該記 錄邏輯221係耦接至一匯流排單元2 3 0。該匯流排單元230 係界面到一系統記憶體匯流排2 4 0,該系統記憶體匯流排 並且與系統記憶體242及其他匯流排元件241耦接。 [0 0 4 7 ]巨集指令之示範流程2 〇 2說明如何指定一預取
1220223 五、發明說明(15) -- ,算及如何可在此預取之資料上執行隨後的讀取與儲存運 异。一有關於此運算序列在桌上型電腦上的常見範例是記 憶體内計數器的讀取及增加。一序列的預取,讀取,及儲 存運算需要既可以在快取線内讀取資料,也可以 内修改資料。@此,示範流程的第一個巨取線 PREFETCH [EAX],命令微處理器201去預取一 9位"址對應於 暫存器EAX内容的快取線。第二個巨集指令2〇2,Μ〇ν ΕΒχ, [E A X ]’命令彳放處理器2 0 1去頃取一位址為暫存器ε a χ所指 定之記憶體位置的内容,並將該内容寫入暫存器Εβχ。第 二個巨集指令2 0 2 ’ I N C Ε Β X,命令微處理器2 〇 1增加暫存 器ΕΒΧ的内容。第四個巨集指令2 0 2,MOV ΕΑΧ,[ΕΒΧ],命 令微處理器2 0 1在對應於暫存器EAX内容的記憶體位置上儲 存該暫存器EBX的内容。上述詳細的預取,讀取,及儲存 運算僅僅是增加一個數值到位址由暫存器EAX所指定之記 憶體。值得注意的是為了要有效率的利用該預取指令 2 02,必須在第二個巨集指令202,M0V EBX,[EAX],之前 提供充分的該預取指令202,使得因為載入由EAX之内容所 指定之快取線的所造成的延遲,可以被中介的巨集指令 2 0 2的平行執行所吸收。但是,為了簡明起見,該中介的 巨集指令202並未在方塊圖200中敘述。 [ 0 048 ]轉譯器210將該預取巨集指令2 0 2轉譯成一對應 的預取微指令211,PREFETCH [EAX],然後送到快取記憶體 單元2 2 0。記錄邏輯221詢問資料快取記憶體2 22以決定所 要求的快取線是否已存在並且有效(換言之,即非處於無
1220223 五、發明說明(16) *- 效狀態)於資料快取記憶體222内。若答案為否,則該記錄 邏輯221命令其匯流排單元2 3 0,經由其系統記憶體=流排 240,發出作業以從記憶體242取得所要求的快取線。=其 他的匯流排元件2 4 1均無該所要求之快取線的副本時,則 該記錄邏輯2 2 1即將所要求的快取線以排他狀態送到資料 快取記憶體2 2 2。若一或數個匯流排元件2 4 1擁有該要 '求的 快取線之區域副本時,則該記錄邏輯2 2 1即將該快取線以 共用狀態寫入到資料快取記憶體2 2 2。在前述任一狀態, 該所要求的快取線均存在於快取記憶體222内以備隨後的 存取運算使用。 [ 0 049 ]轉譯器210將第二個巨集指令2〇2轉譯成一載入 微指令211,LD EBX,[EAX],命令微處理器載入位址為暫 存器EAX所指定的記憶體之内容到暫存器ΕΒχ。如前圖一所 討論的,微處理器内之執行邏輯(未顯示)從快取記憶體單 凡2 2 0要求該記憶體位址之内容。因為該快取線所有之内 谷,由於預取運算的結果已經存在於該資料快取記憶體 2 2 2中,所以是立即可用並且載入微指令2丨】的執行不會有 任何延遲。 曰 [ 0 0 5 0 ]第三個巨集指令20 2被轉譯成一對應的增加微 指令211,INC EBX,此指令命令執行邏輯將暫存器Εβχ之 内容增加。因為不需要新的資料,所以該載入微指令2 i 1 不會被送到快取記憶體單元2 2 0。 [0 0 5 1 ]最後,在流程中的第四個巨集指令2 〇 2被轉譯 成一儲存微指令211,ST [EAX],EBX,此指令命令執行°邏
1220223 五、發明說明(17) 輯去執行一資料儲存運算, f _ , Λ只子货存為EBX的内交宮入f丨| 位址由暫存器EAX内容所指定 : a ? π你而以炷冰从妙十、史 < °己L、體位置。該儲存微指 ^220 ^ ^ € H22H, „ itJ ,χ # 標的快取線存在於該資料快取記憶體m γ 處於排他狀態,則此待決的儲在可U丨1 ^/陳取深疋 ^ ^ ^^ ^ ^ 7储存可立刻被公告並將該快取 .^ g)f .. ^ , 另方面,右該快取線是處於 共用狀悲,則该快取記情辦蒂一 〇 〇 π + 鉍/ » w i 早兀22〇確定一停滯訊號223以 暫停该:政U211在微處理器2〇1的管線階段中的進行,同 時該執行邏輯221則命令其Μ流排單元23(),經由其記惊體 匯流排240,執行作業以取得該快取線的排他所有權。一 旦取得排他所有權,則可許可待決的儲存對該快取線公告 其為料,並且終止停滯訊號,從而繼續程式的執行。 [ 0 0 52 ]現在考慮一種運算型式只是單純的寫入資料到 吕己fe體中而不需先讀取資料,或是一種運算型式是會先讀 取資料丄但是此型式確定預期有一儲存運算會隨後被公、 告。在這些案例中’只有對那些須先讀取資料的案例執行 預先的預取指令是確定可以將程式延遲減到最小。並且在 這種案例中’若預取的結果使所要求的快取線處於排他狀 態,則可排除因儲存運算所導致的程式延遲。但是若預取 的結果使所要求的快取線處於共用狀態,則因儲存運算所 導致的程式延遲將不可避免。這是個問題,因為今日的指 令集架構並未提供一方法以命令微處理器2 〇1去排他的預 取一快取線到資料快取記憶體2 2 2。雖然回應一預取運算
第22頁 1220223 五、發明說明(18) 的快取線可以是排他的,但是此狀態並不能保證。這是因 為預取巨集指令架構化的推定其預取的資料是會被讀取, 並且其結果之經由系統匯流排的作業要求該快取線被提 取’不論其是否處於共用狀態。舉例來說,在6架構 中,一x86預取指令的執行結果之經由匯流排24〇發出的作 業是一資料讀取運算。該資料讀取運算要求一快取線的副 本,並不管其是處於何種狀態。 [0 0 5 3 ]現請參閱圖三,其顯示一時脈圖,用以描述由 圖一及圖二所示之微處理器2 〇 1所發出之兩個可能的匯流 排作業集3 0 1,3 0 2,此匯流排作業係經由記憶體匯流排 2 4 0發出以執行一預取與隨後的儲存運算。此二作業集 3 01,3 0 2包括在微處理器2 0 1内的從匯流排單元2 3 〇到記憶 體匯流排2 4 0的請求作業3 0 3,與同樣在微處理器2 〇 1内從 吕己憶體匯流排2 4 0回到匯流排單元2 3 0的回應作業3 0 4。作 業集301描述那些當回應一預取運算的快取線是排他狀態 時所執行的作業303-304。作業集3 0 2描述那些當回應一預 取運算的快取線是共用狀態時所執行的作業3〇3_3〇4。如、 同圖二所述,當執行一預取指令時,記錄邏輯2 2 j命令其 匯流排單元23 0對其記憶體匯流排2 4〇發出一資料讀取請求 30 3,DATA READ [EAX],要求被暫存器EAX所指定的快取 線被送到其區域快取記憶體222。該資料讀取請求30 3在作 業集301是於時間點a發出,在作業集3〇2則是於時間點D發 出。该記憶體匯流排2 4 0於是回應發出一包括該所要求的 快取線的資料回應請求3〇4回到匯流排單元23 0。若該快取
1220223
線是在排他狀態,則在作業集301的資料回應請求3〇4, DATA RESP [EAX].E,在時間點B被送回到匯流排單元 2 3 0。若該快取線是在共用狀態,則在作業集3 2的資料回 應請求304,MTA RESP [EAX1.S,在時間點£被送回到匯 流排單元230。在這時,資料可從快取記憶體222讀取而不 會導致匯流排作業延遲。 [0 0 5 4 ]當一隨後的儲存運算面對該上述作業提供之快 取線日寸,作業集3 0 2的劇本說明為了能公告該儲存運算所 必然發生之作業3 0 3,3 04。在作業集3〇1中,因為快取線 起始即疋排他狀悲,欲公告該儲存運算只須在時間點c發 出一資料寫入作業3 0 3,DATA WRITE [EAX],經由匯流排 2 4 0將負料寫入到§己憶體2 4 2。但是如作業集3 〇 2所示,在 時間點Η之資料寫入作業3 0 3可以被發出之前,必須先執行 ,間點F及G的作業30 3及304,以便能將快取線的所有權狀 悲由共用提升到排他。在時間點F,匯流排單元2 3 〇發出一 資料讀取與無效請求303 ’DATA READ/INV [ΕΑΧ],用以要 求该共用狀態快取線的排他所有權。在數百時脈之後的時 間點G,從匯流排240接收到一回應請求3〇4,DATA RESP [E A X ]· E ’以將該快取線的狀態升級到排他狀態。在時間 點G接收到回應請求3〇4之後,然後在時間點H該資料寫入 作業3 0 3始可對匯流排2 4 0公告。 [0 0 5 5 ]值得注意的是圖三中的作業集3 〇 1,3 〇 2係以一 般性的方式表示,因為不同的微處理器架構應用不同的語 義來說明匯流排作業3 〇 3,3 0 4。除此之外,值得注意為了
第24頁 1220223 五、發明說明(20) - --- 簡明起見,在圖二之時脈圖中已經省略了先取得對資料匯 流排240存取(例如BUS REQUEST,BUS GRANT等等)之所 的作業。 [ 0 0 5 6 ]本案的發明者觀察到當今的資料預取指令受 限於其並不支援確定預期的儲存運算,因此無法因為明確 意圖進行對該快取線執行一儲存運算而有利的預取一快取 線到快取記憶體222 - —意圖進行儲存運算的預取—不論該 快取線内容的讀取是否先於對該快取線公告一儲存運算。 若細查作業集3 0 2中之作業3 0 3,3 0 4 ,很明顯的預取一#處 於共用狀態的快取線’只有在該快取線的讀取會早於對其 公告一儲存運异的情況下才有幫助。若是一儲存運算將對 该共用的快取線公告’則程式的執行必須被延遲以便將該 快取線的狀態從共用提升到排他。 [0 0 5 7 ]程式員雖然了解今日預取指令的限制,然而仍 應用它們為作意圖進行儲存情況下的預取,因為此預取指 令可能(有時而非時常)於回應一資料讀取請求時,可取得 一快取線的排他所有權,僅只因為無其他匯流排元件擁有 該要求之快取線的副本。但是,更理想的情況則是避免預 取一處於共用狀態的快取線,而是命令一微處理器2 Q 1去 預取一處於排他狀態的快取線。本發明係指向一種裝置與 方法,用以預取一處於排他MES I狀態的一單一快取線與〆 多重快取線,並且隨意的初始化該預取的快取線成一指定 數值。本發明現將參照圖四至圖十八進行討論。 [0 0 5 8 ]請參閱圖四,其係為依據本發明以顯示一延伸
第25頁 ^U223
預取指令4 Ο 0之方始闰 去、, 鬼圖。該延伸預取指令包括一選用的多 重W置碼實體4 η 1 ^ 、 ’ /、後為一預取運算碼40 2,其後則為_ 位址扣=兀403。在一具體實施例中,每一個前置碼 …^伸位址具體401,403都是8位元大小,而預取運算螞 貫體402則為-或二個位元組大小,除非本文中另行修 5丁,所有的實體40卜403均與χ86之指令集架構一致。 [0 0 5 9 ]在運作上,該預取運算碼4〇 2係為一指定運算 ,數值,用以命令一相符的微處理器執行一預取運算。在 —x86的具體實施例中,其運算碼實體4〇1的指定數值為 0^1 8H ° —個或數個選用的前置碼實體4〇1可用來命令—相 付的U處理為執行某些類型的附加運算,例如由一計數器 界定次數的重複運算(例如在以6架構中的REp前置碼),迫 使執行一原子運算(例如在χ86架構中的lock前置碼)等 ,。延伸位址指定元4 〇 3是用以指定該特定類型之預取運 异的執行。在一x86的具體實施例中,所熟知的延伸位址 指定元403是ModR/M位元組403。 [0 0 6 0 ]依據本發明,當微處理器偵測到一預取巨集指 令40 0時,依照由延伸位址指定元4 〇3内容所指定的指示^ 值’該微處理器被命令去執行從記憶體預取資料到快取記 憶體’其範例將在圖五中進行討論。 ' [0061]圖五係一表格500,其為圖四之延伸預取指令 内的延伸位址指定元欄位40 3之一具體實施例,解說依據 本發明該延伸位址指定元欄位403如何編碼以命令微處理 器執行預取一處於排他Μ E S I狀態的快取線。為了說明本發
第26頁 1220223
五、發明說明(22) 明起見,此處使用符合x86架構的ModR/M位元攔位,作 疋’可以預期的是本發明包含任何提供將一預取—排他才t 示編碼到指令4 0 〇的工具之架構。雖然圖五的例子指向^ 預取-排他(或是意圖進行儲存之預取)指示編碼到二延伸 位址指定元4 0 3,熟習此項技術者將發現該預取指示也可 以被編碼成一在運算碼欄位4 〇 1内之一指定運算碼數值。 [0062 ]在此編碼範例中,一6 ModR/M位元組使用該 ModR/M位元組的5 : 3位元編碼一由預取運算碼4〇 1所指定 型式的預取運算。今日,該x86預取指令使用數值〇〇〇9,< 〇 0 1,0 1 0,及0 1 1以規定意圖進行讀取運算之預取指示。 所有這四個數值0 〇 〇 — 〇 11為命令一 χ 8 6微處理器,在不同程 度的接近度下,預取資料到其快取記憶體。舉例來說,一 個TO指示(換言之,數值001),命令微處理器預取」快取 線到快取記憶體層級體系的所有層級,而一nta指示命令 微處理器預取一快取線到一非暫時性快取記憶體結構/並 ,進入一接近處理器的位置,同時將快取記憶體污染減至 最低程度。但是x86預取指示〇〇〇 —011編碼的普遍特徵是一 經由匯流排發出的資料讀取請求以要求一快取線的副本, 並不會在乎該快取線是處於何種MESI狀態。本發明之一具 體實施例將一額外的指示編碼進延伸位址指定元中,用以 命令微處理器依據本發明利用一排他(· s)指示去預取一指 定的快取線。圖五顯示一用x86 M〇dR/M位元組的5 : 3位元 編碼成數值100的預取—排他指示。當該prefetchs指示依 據本發明編碼到-預取指令時,貝卜相符的微處理器
第27頁 1220223 五、發明說明(23) 會被偵測到經由一記憶體匯流排發出作業以預取處於排他 MESI狀態的資料。在一χ86的具體實施例中,如前述圖三B 所示’其回應於預取指令400之prefetch.s指示而發出的 特定作業是一資料讀取與無效作業。在圖三B的例子中, 該資料讀取與無效作業是用以將快取線從共用狀態提升至 排他狀態。 [ 0 0 63 ]在χ86指令集架構中,數值1〇〇的5 : 3位元編碼 在此之前是被宣告為非法的,同表格50〇中數值丨〇卜1丨1的 5 : 3位元編碼所示。一非法的ModR/M位元組編碼造成一異 ,常。但是依據本發明,在一 x 8 6的具體實施例中,該改善 一預取-排他指示的額外編碼是合法的,並且將導致前述 的匯流排作業預取一處於排他狀態的快取線。 [0 0 6 4 ]眾人皆知因為快取記憶體結構與記憶體間的互 動是不存在於微處理器管線之指令流程中,所以預取指令 4 0 0只能要求的預取係依據所提供之指示來執行。若一快 取線現在並不被記憶體存取所佔用時,則可執行預取運 异。但若一快取線正被佔用,則預取運算須被延遲。 [0 0 6 5 ]現請參閱圖六,其係一方塊圖,詳述依據本發 明之執行一意圖進行儲存運算之預取的微處理器6 〇 〇。該 微處理器6 0 0有三個值得注意的階段範疇:提取,轉譯, 及執行。在提取階段的提取邏輯6 〇 1係用以從一指令記憶 體6 0 3中提取巨集指令到一指令快取記憶體6 〇 2。該被提取 的巨集指令然後經由一指令佇列6 〇 4被送到轉譯階段。該 轉澤階段的轉譯邏輯6 〇 6係耦接至一微指令佇列6 〇 8。該轉
第28頁 1220223 五、發明說明(24) ------- =邏輯6 0 6包括延伸轉譯邏輯6〇7。執行階段的執行邏輯 ^ =伸快取記憶體單元6 1 〇。該延伸快取記憶體單 ^ 貝料快取記憶體611,此資料快取記憶體611係 麵接至延伸記錄邏輯6 i 2。該延伸記錄邏輯6】2係轉接至一 匯流排單元613。該匯流排單元613係麵接至—資料記憶體 614 ° [ 0 0 6 6 ]在運作上,提取邏輯6〇1依據本發明從指令記 憶體6 0 3中提取格式化的指令到指令快取記憶體6〇2 ,然後 將此巨集指令依執行順序送到指令佇列6 〇 4。該巨集指令 被從指令佇列604提取後,被送到轉譯邏輯6〇6。該轉譯邏 輯6 0 6將每一送到此處的巨集指令轉譯成對應的微指令序 列,該微指令序列係用以命令微處理器6 0 〇執行由該巨集 指令所指定的運算。延伸轉譯邏輯6 0 7則依據本發明去偵 測延伸預取巨集指令,並且為將其轉譯成對應的延伸前置 碼及位址指定元實體作準備。在一X86的具體實施例中, 該延伸轉譯邏輯6 0 7被組態成偵測一χ86預取指令,並且依 據圖四及圖五所述之常規將該x86預取指令的ModR/M位元 組轉譯成一預取微指令序列,該序列係用以命令微處理器 6 0 0去排他的預取一快取線到資料快取記憶體6 11。 [0 0 6 7 ]該微指令然後從微指令佇列6 0 8傳送到其執行 邏輯60 9,在該執行邏輯中之延伸快取記憶體單元610則依 據本發明被組態為執行一排他的預取運算。當該執行邏輯 6 0 9執行一預取微指令序列時,其延伸記錄邏輯6 1 2命令匯 流排單元613,經由記憶體匯流排6 0 5,發出作業到記憶體
第29頁 1220223 五、發明說明(25) 6 1 4要求在排他的MES丨狀熊 快取記憶㈣μ。 ^的快取線到資料 謂ί106θ8]㉟f此項技術者將發現圖六所描述的微處理 Ξ ^ 7 一個依Ϊ本發明所簡化之後的一管線化微處理 二代表/事貫上,如前所述,今曰的管線化微處理 :=3 ό斗多管線階段。纟是這些階段均可被概括的歸納成 如圖六之方塊圖所示的三個階段群組,因此圖六之方塊圖 可視為實現上述本發明之具體化所需的必要成分之說明。 為了簡明起見,凡微處理器60 0中無闕於本發明的成分均 不在此描述。 [ 0 0 6 9 ]請參閱圖七,其係為一方塊圖7〇〇,用以描述 在圖六之微處理器内執行一預取與儲存運算之一界面至記 憶體的快取記憶體單元。該方塊圖7〇〇顯示在微處理器6〇〇 内被應用為執行預取運算的邏輯。微處理器7 〇 1的延伸轉 譯器710接收巨集指令流702,並將該巨集指令流程7〇2轉 。筆成對應的微指令7 1 1。微指令7 1 1在命令對記憶體7 4 2做 資料載入與儲存運算之後,隨後即被送到一延伸快取記憶 體單元7 2 0。該延伸快取記憶體單元7 2 0包括延伸記錄邏輯 7 2 1及一資料快取記憶體7 2 2。該延伸記錄邏輯7 2 1係轉接 至一匯流排單元730。該匯流排單元730係界面至一系統記 憶體匯流排7 4 0,此系統記憶體匯流排7 4 0又與資料記憶體 742及其他匯流排元件741耦接。 [0 0 7 0 ]巨集指令之示範流程7 0 2說明如何指定一預取 指令及如何可在此預取之資料上執行隨後的讀取與儲存運
1220223 五、發明說明(26) 算。如同圖二之敘述,一有關於此運算序列之桌上型電腦 的常見範例是記憶體内計數器的讀取及增加。但是與圖一 及圖二之微處理器20 1不同的是,當依據本發明之一微處 理器7 0 1被命令去排他的預取一快取線時,不論此預取的 資料是否會被中介的指令讀取,均可有效率的消除會關連 到隨後的儲存運算的匯流排作業延遲。在圖七的巨集指令 之示範流7 0 2中預期一資料讀取運算發生早於在預取之資 料上執行一儲存運算,但是熟習此項技術者將發現,沒有 此一中介的資料讀取運算,資料也可以被排他的預取且隨 後的被寫入。 [0 0 7 1 ]因此,示範流程的一延伸預取指令7 〇 2, PREFETCH.S [EAX],命令微處理器701去排他的預取其位 址對應於暫存器E A X内容的快取線。第二個巨集指令7 〇 2, MOV EBX,[EAX] ’命令微處理|§701去讀取' —位址為暫存哭 EAX所指定之記憶體位置的内容,並將該内容寫入暫存器 EBX。第三個巨集指令,I NC EBX,命令微處理器7〇 1增加 暫存器EBX的内容。第四個巨集指令,Μ〇ν ΕΑχ,[ΕΒχ],命 令微處理器7 0 1在對應於暫存器ΕΑΧ内容的記憶體位置上儲 存暫存器ΕΒΧ的内容。值得注意的是為了要有效率的利用 排他預取指令70 2,PREFETCH. S [ΕΑΧ],必須在第二個巨 集指令702 ’MOV EBX,[EAX],之前充分執行排他預取指令 7 0 2,使得因為載入由EAX之内容所指定的快取線所造成的 延遲,可以被中介的巨集指令702的平行執行所吸收。但 疋’為了簡明起見’該中介的巨集指令2 0 2的執行並未在
第31頁 1220223 五、發明說明(27) 方塊圖7 0 0中敘述。 [ 0 0 72 ]轉譯器71〇將該延伸預取巨集指令7〇2轉譯成對 應的排他預取微指令711,PREFETCH.S [EAX],然將此微 指令送到延伸快取記憶體單元72〇。該延伸記錄邏輯721詢 問資料快取記憶體722以決定所要求的快取線是否已存在 並且有效(換言之,即非處於無效狀態)於其資料快取記憶 體7 2 2内。若答案為否,則該延伸記錄邏輯7 2 1命令匯流排 單元7 3 0,經由系統記憶體匯流排7 4 0,發出作業以從記憶 體7 4 2取得該所要求的快取線。若其他的匯流排元件7 41均 無該所要求的快取線之副本,則延伸記錄邏輯7 2 1即將所 要求的快取線以排他狀態送到其資料快取記憶體7 2 2。若 有一匯流排元件7 4 1擁有該要求的處於排他狀態的快取線 之區域副本時,則依照所應用之特定匯流排作業協定,此 協定窺視在匯流排7 4 0上之作業以請求該快取線並將其區 域副本變更成無效。若該區域副本已被修改,則其匯流排 元件將修改的資料寫入到其匯流排7 4 0,使得微處理器7 q 1 可以取得該快取線的排他所有權。若有數個匯流排元件共 用此快取線,則這些匯流排元件均將其區域副本變更成無 效’使得該快取線可以在排他狀怨下被送到微處理器 70 1。在上述任一情況,該所要求的快取線均可在在排他 狀態下被送到快取記憶體7 2 2 ’並且可被隨後的儲存運算 所使用。 [0073]轉譯器將第二個巨集指令702轉譯成一載入 微指令711,LD EBX,[EAX],此微指令係命令微處理器載
第32頁 1220223
=暫存器EAX所指定的記憶體之内容 f為思圖進行儲存運算之預取的結果,該快A二 谷已經存在於該資料快取記憶體72 2中,所以哕有之内 即可用’並且使得該載入微指令7 :何::立 [m4]第三個巨集指令702被 一m遲。 指令2 7 ],Τ Μ Γ ΪΓ D V 平取對應的增加微 之内容辦力口 S兔’此指令係命令執行邏輯將暫存器ΕΒΧ 7Π :合:需要新的資料’所以該載入微指令 不“被送到其延伸快取記憶體單元7 2 〇。 = 075 ]最後,在流程中的第四個巨集指令讪 存微指:711’ST[EAX],ΕΒχ,此指令命令執= 輯去執仃一貧料儲存運算,以將暫存器ΕΒχ的内容寫入、 ί二由暫存器ΕΑΧ内容所指定之記憶體位置。該儲存微指 了 ^11仉而以待決的儲存運算型式被送到其快取記憶體 = 720。於是,記錄邏輯721偵測到以待決的儲存運算為 標的快取線存在於其資料快取記憶體722,並且由於排他 的預取之結果,該快取線是處於排他狀態。因此該儲存 ^被延遲的立刻被公告。與圖二之微處理器2 〇】不同的 是,依據本發明的延伸快取記憶體單元72〇不需確立一停 滞訊號723以公告該待決的儲存,因為該目標快取線已^ 排他的預取。 、[0 0 7 6 ]現請參閱圖八’其顯示一時脈圖8 〇 〇,用以描 述依據本發明由圖六及圖七所示之微處理器所發出之匯流 排作業集801,80 2,此匯流排作業係經由記憶體匯流排後 74〇以執行意圖進行預取的儲存運算。此二作業集8〇ι,
第33頁 1220223 五、發明說明(29) 802包括在微處理器7〇1内的從匯流排單元73〇到記憶體匯 流排740的請求作業801,與同樣在在微處理器701内的從 記憶體匯流排7 4 0回到匯流排單元7 3 0的回應作業8 〇 2。時 脈圖8 0 0係描述當一被要求且處於排他狀態的快取線,係 為依據本發明的預取—排他巨集指令所指定的意圖進行儲 存運算之預取的回應時,所執行的作業集8 0 1,8 0 2。根據 上面的敘述,當執行一預取-排他指令時,延伸記錄邏輯 7 2 1命令其匯流排單元7 3 〇對其記憶體匯流排7 4 〇發出一資 料讀取與無效請求801,DATA READ/INV [EAX],要求將被 暫存器EAX所指定的快取線以排他的MES〗狀態送到其區域 快取冗憶體7 2 2。該資料讀取與無效請求8 〇 1是於時間點a 發出。若所要求的快取線是處於排他的MES丨狀態,則在時 間點B,該記憶體匯流排740回應發出資料回應請求8〇2, DATA RESP [EAX]· E,回到匯流排單元230。在這時,一儲 存運算的資料可從該快取記憶體22 2讀取或寫入到該快取 吕己憶體2 2 2 ’而不會導致匯流排作業延遲。 [0077]同圖三所示,圖八中的作業集8〇1,802係以一 般性的方式表示,因為不同的微處理器架構應用不同的語 義來說明匯流排作業8 0 1,8 0 2。圖八中描述的作業集 8 0 1 ’ 8 0 2大體上依照X 8 6的慣例,但此描述只是意圖進行 說明本發明。此慣例並不會限定本發明只適用於此特定指 令集架構。除此之外,值得注意的是,為了簡明起見,在 時脈圖80 0中已經省略了為先取得對資料匯流排74〇的存取 (例如BUS REQUEST,BUS GRANT等等)之所有的作業。
第34頁 1220223 五、發明說明(30) [0 0 7 8 ]本發明不只是考慮排他的預取一單一快取線, 同時也包含需修改一個區段之資料的情況。因此,圖九至 圖Η--將具體指向排他的預取一個區段的資料的討論。 [0 0 7 9 ]請參閱圖九,其為依據本發明用以顯示一延伸 區段預取指令9 0 0之方塊圖。該延伸區段預取指令9 0 〇包括 一選用的多重前置碼實體901,其一為一重複前置碼901。 該前置碼實體9 0 1之後為一預取運算碼9 〇 2,其後則為一延 伸位址指定元9 0 3。在一具體實施例中,每一個前置碼及 延伸位址實體9 0 1,9 0 3都是8位元大小,而預取運算碼實 體9 0 2則為一或二個位元組大小,除非本文中另行修訂, 所有的實體901-903均與χ86之指令集架構一致。在此具體 實施例中,該χ86的重複前置碼(REP) 901被用來標示一區 段預取運算。 [0 0 8 0 ]在運作上,該預取運算碼9 〇 2為一特定運算碼 數值,此特定運算碼數值係用以命令一相符的微處理器執 行一預取運算。在一x86的具體實施例中,運算碼實體9〇1 的特定數值為0 F 1 8 Η。延伸位址指定元9 0 3是用以指定執行 該特定類型的預取運算的執行。在一 χ 8 6的具體實施例 中,該延伸位址指定元90 3是ModR/M位元組9 0 3。 [0 〇 8 1 ]同圖四所示,依據本發明,當微處理器偵測 到一預取巨集指令9〇〇時,該微處理器被命令依據由延伸 位址指定元403内容所指定的指示數值,去執行從記憶體 預取資料到快取記憶體。圖五之編碼範例也適用於描〜述在 區段延伸位址指定元9 〇 3的前置碼指示之編碼。但是若微
1220223 五、發明說明(31) ίΐ器ί該延伸預取指令内偵測到一重複前置碼9〇1,則 i ::會:式ΐ預取一指定數量在排他狀態下的快取線到 ”品$伙取記憶體内,而此快取線的數量是由微處理器内 架構暫。在—具體實施例中,快取線的數量 是由x86相容之微處理器内之暫存器Ε(:χ所指定。 [ 0 082 ]請參閱圖十,其係為一方塊圖1〇〇〇,用以描述 在圖六之微處理器60 0内執行區段預取與儲存運算之一界 面至記憶體的快取記憶體單元。圖十之微處理器1〇〇1内之 元件的認證與運算類似於圖七之微處理器7〇 1内之相似元 件,只要將圖七的百位數圖號7用丨〇來取代即可。為依據 本發明以改進此區段預取運算,本發明使用一延伸轉譯器 1 01 0將有一重複前置碼丨0 0 2的延伸預取運算轉譯成微指; 序列1 0 11,用以命令執行一排他區段預取運算。除此之 外,亦使用一影子計數暫存器丨0丨3以載入自架構暫存器内 之1 0 1 2被預取之快取線的數量計數。並且使用延伸區段記 錄邏輯(extended block fill l〇gic)1021 以命令其匯流 排單元1 〇 3 0要求排他的預取該指定區段的快取線,並將之 送到其資料快取記憶體1 〇 2 2。 [0 0 8 3 ]為初始一排他的區段預取運算,第一個巨集指 令1 0 0 2,MOV ECX,COUNT,係用以將架構暫存器ECX内被排 他的預取之區段内之快取線的數量計數初始化。延伸轉譯 器1 0 1 0將該第一個巨集指令轉譯成載入微指令1 〇 11,LD ECX,C0UNT,此微指令命令微處理器將計數(count)載入 ECX。當該計數被載入到ECX後,此計數亦被透明的複製到
Μ
第36頁 1220223 五、發明說明(32) 影子計數暫存器1013,SHECX。同時,其他的指令1 0 0 2則 可在不干擾到預取運算的計數之情況下,修改其架構暫存 器 1012。 [0 0 8 4 ]在計數被初始化之後,該延伸轉譯器1 0 1 0轉譯 一延伸區段預取指令1 0 0 2,REP.PREF.S [EAX],此指令命 令微處理器1 0 〇 1預取被ECX所指定數量之排他狀態的快取 線到其區域快取記憶體,而該被預取的第一快取線的位址 是由暫存器EAX所指定。以回應一命令該排他預取運算的 微指令序列1 0 1 1,該延伸區段記錄邏輯1 〇 2 1命令其匯流排 單元1 0 3 0經由其記憶體匯流排1 〇 4 〇發出匯流排以要求該位 址是由暫存器EAX所指定之處於排他狀態的快取線。該記 錄邏輯1 0 2 1在接收到這些快取線後,即將之配置到其資料 快取記憶體1 0 2 2。一但以排他狀態進入到該快取記憶體, 任一或是全部的被預取之快取線均可被修改而不會造成額 外的延遲。 [0085]現請參閱圖十一,其顯示一時脈圖1100,用 以描述依據本發明由圖六及圖十所示之微處理器丨〇 〇丨所發 出之匯流排作業集1 1 〇 1,1 1 〇 2,此匯流排作業係經由記憶 體匯流排1 0 4 0以執行區段預取與儲存運算。為解說方便起 見,圖十一範例的系統組態使用3 2位元組快取線。但是, 熟習此領域技術者將從下述之例證中發現本發明的應用包 括所有可預期之系統組態的快取線行寬。此二作業集 11 0 1 ’ 11 0 2包括在微處理器丨〇 〇丨内的從匯流排單元丨〇 3 〇到 記憶體匯流排1 0 4 0的請求作業丨丨〇丨,與同樣在在微處理器
122U223 五、發明說明(33) ' --- 内^從記憶體匯流排1 040回到匯流排單元1〇3〇的回應 Μ ^脈圖1 〇 〇 〇係描述當一被要求且處於排他狀態的〆 οσ又、、取線’係為依據本發明的包括一重複前置碼的預 取排他巨集扣令所指定的意圖進行儲存運算之一區段預 取的=應時,所執行的作業集1001,1 0 0 2。根據上面的敘 述,當執行一區段預取-排他指令時,該延伸記錄邏輯 I 0 21印々其匯流排單元1 〇 3 〇發出一多重的資料讀取與無效 清求11 0 1 ’此請求並且對應於架構暫存器内所指定數量的 快取線。該多重的請求包括該快取線區段内之所有快取線 的位址’其位址係為架構暫存器ΕΑχ的内容所起始指定。 雖然遠匯流排請求1丨〇丨使用遞增的位址次序,值得注意的 是考慮到傳統上不同的記憶體匯流排協定,本發明亦包括 遞減的排序,隨機的排序,及參差的排序。第一個資料讀 取與無效請求1101是在時間點Α發出,第二個請求1101是 在時間點B發出,以此類推,直到最後的請求在時間點D發 出。在許多種架構中,匯流排請求11 〇 2是被標記的,以致 於該請求開始於時間點C早於其最後的請求的完成。在時 間點C ’至少有在該區段内之一快取線是可被一待決的儲 存所使用。但是,為確保將延遲減到最小,最好是將該區 段之快取線的儲存運算推延至時間點E,此時所有的回應 II 0 2均已到達且處於排他狀態。 [0 0 8 6 ]若所要求的快取線是處於排他的MES I狀態,則 在時間點B,該記憶體匯流排7 4 0回應發出一資料回應請求 802,DATA RESP [EAX].E,回到其匯流排單元230。在這
第38頁 1220223
時,一儲存運算的資料可從其快取記憶體222讀取或寫入 到其快取記憶體2 2 2,而不會導致匯流排作業延遲。 [0 0 8 7 ]現凊參閱圖十一 ’其為描述依據本發明執行一 意圖進行儲存運算之預取方法的流程圖1 2 〇 〇。 [〇〇88]流程開始於方塊1 202,在此處,依據本發明, 一連串的巨集指令被送到一指令佇列。流程接著進彳^到方 塊1 2 04。 [ 0 089 ]於方塊1 2 04中,一個隨後的巨集指令被從該指 令佇列中提取,並將之送到一延伸轉譯器。流程接著進行 到判斷方塊1 20 6。 [0 0 9 0 ]於判斷方塊1 2 0 6中,將進行一項檢查用以判斷 該隨後的巨集指令是否為一延伸預取指令。若答案為是, 則流程進行到方塊1 20 8。若答案為否,則流程進行到方塊
1210 。 A
[0 0 9 1 ]於方塊1 2 0 8中,一被偵測到的延伸預取指令被 轉譯成一意圖進行儲存運算之預取的微指令序列,此彳^指 令序列係用以命令微處理器去預取處於排他狀態之—^定 的快取線。流程接著進行到方塊1 2 1 2。 S
[ 0 0 92 ]於方塊1210中,該巨集指令被轉譯成一對廣的 微指令序列,此微指令序列係用以命令微處理器去執行— 指定的運算。流程接著進行到方塊1 2 1 2。 [ 0 0 9 3 ]於方塊1212中,一個隨後的微指令序列被送到 微處理器内之執行邏輯。流程接著進行到判斷方塊1 21 4 [ 0 0 94 ]於判斷方塊1214中,將進行一項檢查用以判斷 1220223 五、發明說明(35) 隨後的微指令序列是否為一意圖進行儲存運算之預取的微 指令序列。若答案為是,則流程進行到方塊丨2丨6。若答案 為否’則流程進行到方塊1 2 1 8。 [0095]於方塊1216中,回應意圖進行儲存運算之預取 的微指令序列,匯流排作業請求被發出到一記憶體匯流排 以要求一指定快取線之排他所有權。隨後該快取線以排他 MES I狀態被送到微處理器,因此可為儲存運算所使用而不 會發生因為提升該快取線至可被修改之狀態所導致的延 遲。流程接著進行到方塊1 2 2 0。 [0 0 9 6 ]於方塊1 2 1 8中,執行該隨後的微指令序列。流 程接著進行到方塊1 2 2 0。 [0097]於方塊1220中,本方法完成。 [0 0 9 8 ]現請參閱圖十三,其為描述依據本發明執行一 意圖進行儲存運算之區段預取方法的流程圖1 3 0 0。 [0 0 9 9 ]流程開始於方塊1 3 0 2,在此處,依據本發 明,一連串的巨集指令被送到一指令佇列。流程接著進行 到方塊1 3 04。 [0 0 1 0 0 ]於方塊1 3 0 4中,一個隨後的巨集指令被從該 指令佇列中提取,並將之送到一延伸轉譯器。流程接著進 行到判斷方塊1 3 0 6。 [0 0 1 0 1 ]於判斷方塊1 3 0 6中,將進行一項檢查用以判 斷該隨後的巨集指令是否為一延伸區段預取指令。若答案 為是,則流程進行到方塊1 3 1 0。若答案為否,則流程進行 到方塊1 3 0 8。
第40頁 Ϊ220223 五、發明說明(36) [0 0 1 0 2 ]於方塊1 3 1 0中’ 一被偵測到的延伸區段預取 指令被轉譯成一意圖進行儲存運算之區段預取的微指令序 列,此微指令序列係用以命令微處理器去預取處於排他狀 態一指定數量之快取線。流程接著進行到方塊丨3丨2。 [00103]於方塊1308中,巨集指令被轉譯成一對應的 微指令序列’此微指令序列係用以命令微處理器去執行一 指定的運算。流程接著進行到方塊1 3 1 2。 [0 0 1 0 4 ]於方塊1 3 1 2中,一個隨後的微指令序列被送 到微處理器内之執行邏輯。流程接著進行到判斷方塊 1314。 [0 0 1 0 5 ]於判斷方塊1 3 1 4中,將進行一項檢查用以判 斷隨後的微指令序列是否為一意圖進行儲存運算之預取的 微指令序列。若答案為是,則流程進行到方塊丨3丨8。若答 案為否,則流程進行到方塊1 3 1 6。 [ 0 0 1 0 6 ]於方塊1316中,執行該隨後的微指令序列。 流程接著進行到方塊1 3 2 8。 [00107]於方塊1318中’回應意圖進行儲存運算之該 區段預取的微指令序列,初始一暫時的計數器為數值〇以 監控將被發出之匯流排作業的數量,此匯流排作業係要求 一區段的快取線之排他所有權。流程接著進行到方塊 1 32 0。 [0 0 1 0 8 ]於方塊1 3 2 0中,第一快取線位址被指定給第 一個資料讀取與無效匯流排作業。該第一快取線位址來自 於由該延伸區段預取指令所指定的位址,然後再加上一乘
第41頁 1220223 五、發明說明(37) 以方塊1 3 1 8之計數的快取線行寬。由於該計數初始為零, 所以該第一快取線位址等同於該延伸區段預取指令所指定 的位址。流程接著進行到方塊1 3 2 2。 [0 0 1 0 9 ]於方塊1 3 2 2中,發出一經由記憶體匯流排之 資料讀取與無效作業以預取該處於排他Μ E S I狀態的該第一 快取線。流程接著進行到方塊1 3 2 4。 [0 0 11 0 ]於方塊1 3 2 4中,將該計數增加後,流程接著 進行到方塊1 3 2 6。 [00111] 於判斷方塊1 326中,將進行一項檢查用以判 斷該增加的計數是否等同於被預取之快取線的數量,該快 取線線的數量係儲存於一影子暫存器(shadow register) 中。若答案為否,則流程進行到方塊1 3 20,於其中執行另 一個重複(i t e r a t i ο η)以提取一下一快取線。若計數等同 於該影子暫存器的内容,則發出所有匯流排作業,同時流 程進行到方塊1 3 2 8。 & [00112] 於方塊1328中,本方法完成。 [00113] 現請參閱圖十四,圖十四係為一表格5QQ,其 為解說依據本發明的另一可選用之延伸位址指定元實體白勺 編碼方式,此編碼係用以在一區域資料快取記憶體内配置 與初始化一快取線。請參閱圖五中所討論之一類似編石馬方 式的具體實施例’為了說明本發明起見,此處使用符又 χ86架構的ModR/Μ位元欄位,但是,可以預期的是本於曰 包含任何支援將一預取與初始化指示編碼到一延伸預取匕 令4 0 0的機制之架構。雖然圖十四的例子指向將該預取
122〇223
仞始化(亦稱為配置與初始化)指示編碼到一延 匕 =4〇3 ’ m項技術者將發現該預取指示址^ ^ 成-在運算碼欄位4〇1内之任何未使用指 :以 碼數值。 、特疋運算 、[001 η]圖十四中依據本發明的之另一可 式的具體實施例擴展了微處理器6 〇 〇的能力,使其彳曰以 t的指定一排他預取的快取線,並且在其上執行儲于存運悬 舁。在此處所討論的配置與初始化的例子對於改善應用程 式的執行速度是非常有用的,因為用以初始化一二ς線= 儲存運算可被完全的從程式流程中排除掉。因此,'圖十四 顯示三種不同型式的預取與初始化指示,該三種指示使用 x86的ModR/M之5 :3位元的數值loo-11〇。當任一上述三種 預取與初始化指示依據本發明被編碼到一預取指令4 Q Q 時’一相付的微處理器將被命令發出經由一記憶體匯流排 之作業,此作業係用以預取處於排他狀態之資料,並且在 取得該資料後,即將之初始化成一指定數值。對數值1 〇 〇 的編碼而言,微處理器被命令將該排他預取的資料初始化 成一被架構暫存器所指定的數值,例如一x86處理器的暫 存器EAX。對數值1 0 1的編碼而言,微處理器被命令去清除 該預取的資料,也就是說,對該預取的資料執行儲存運算 以將之設定為邏輯數值零。對數值11 0的編碼而言,微處 理器被命令設定該預取的資料,也就是說,對該預取的資 料執行儲存運算以將之設定為邏輯數值一。如同圖五中討 論的具體實施例所示,在一依據本發明之X86具體實施例
第43頁 1220223 五、發明說明(39) 中’這些編碼方式是合法的,並且將會導致該資料讀取與 無效匯流排作業去預取一處於排他狀態之快取線。
[0 0 11 5 ]請參閱圖十五,其係為一方塊圖丨5 〇 〇,用以 描述在圖六之微處理器内執行預取與初始化運算之一界面 至圮憶體的快取記憶體單元。在此一具體實施例中,一依 據圖十四所編碼的預取與初始化指令的回應係為對一排他 預取之快取線執行的儲存運算。方塊圖丨5 〇 〇顯示在微處理 器1 5 0 0内被應用為執行預取與初始化運算的邏輯。微處理 器1 5 0 1的延伸轉譯器1 5 1 0接收巨集指令流程1 5 0 2,並將該 巨集指令流程1 5 0 2轉譯成對應的微指令1 5 1 1。微指令1 5 1 1 在命令對記憶體1 542做資料載入與儲存運算之後,即被送 到一延伸快取記憶體單元1 520。該延伸快取記憶體單元 1 5 2 0包括延伸記錄邏輯1 5 2 1及一資料快取記憶體1 5 2 2。該 延伸記錄邏輯1521係耦接至一匯流排單元丨53 0。該匯流排 單元1 5 3 0係界面至一系統記憶體匯流排1 5 4 0,此系統記憶 體匯流排1 5 4 0又與資料記憶體1 5 4 2及其他匯流排元件1 5 4 1 耦接。
[0 0 11 6 ]巨集指令之不範流程1 5 0 2說明如何依照圖五 之預取與初始化編碼1 0 0來指定一預取與初始化運算,及 如何對預取的資料執行隱含的儲存運算以將之初始化。 [00117]因此,轉譯器1510將一MOV EAX,#INIT巨集指 令1 502轉譯成一LD EAX,,#INIT微指令,此微指令用以命 令微處理器1501將數值INIT載入到架構暫存器EAX 1 5 0 5。 該L D E A X,,# I N I T被送到執行邏輯(未顯示),此執行邏輯
第44頁 1220223 五、發明說明(40) 將INIT載入到EAX 1 5 0 5。緊接著,該轉譯器1510將一在此 示範流程内之延伸預取與初始化指令15〇2,PREF. I [EBX],轉譯成預取與初始化微指令151丨,PREF.;[ [EBX ],此微指令係命令微處理器丨5 〇丨去排他的預取其位 址對應於暫存器EBX之内容的快取線,並且將該快取線的 數值設定成儲存在EAX 1 50 5内之數值。該預取與初始化微 指令1 5 11然後被送到其延伸快取記憶體單元1 5 2 0。在此延 伸快取記憶體單元1 5 2 0中,延伸記錄邏輯1 5 2 1詢問其資料 快取記憶體1 5 2 2以決定該要求的快取線是否已存在於該資 料快取記憶體722内,並且處於排他狀態。若答案為是, 則延伸記錄邏輯1 52 1將該快取線初始化成EAX 1 50 5内之數 值。若答案為否,則該延伸記錄邏輯1 5 2 1命令匯流排單元 1 5 3 0發出經由系統記憶體匯流排1 5 4 0之作業,以從記憶體 1 542取得該要求的處於MESI排他狀態的快取線。若其他的 匯流排元件1 5 4 1均無該要求的快取線之副本,則該延伸記 錄邏輯1 5 2 1即將該要求的快取線以排他狀態送到資料快取 記憶體1 5 2 2。若有一匯流排元件1 5 4 1擁有該要求的處於排 他狀態的快取線之區域副本時,則依照所應用之特定匯流 排作業協定,此協定窺視在匯流排1 5 4 0上之作業以請求該 快取線並將其區域副本變更成無效。若該區域副本已被修 改,則其匯流排元件1 5 4 1將該修改的資料寫入到其匯流排 1 540,使得微處理器1 50 1可以取得該快取線的排他所有 權。若有數個匯流排元件1 5 41共用該快取線,則這些匯流 排元件均將其區域副本變更成無效,使得該快取線可以在
第45頁 1220223 五、發明說明(41) 排他狀態下被送到微處理器1 5 0 1。在上述任一情況,該要 求的快取線均可在在排他狀態下被送到快取記憶體丨5 2 2, 並且可立即被初始化成在EAX1505内之數值。 [0 0 11 8 ]請參閱圖十六’其為描述依據本發明對一快 取線執行配置與初始化運算方法的流程圖1 6 〇 〇。 [0 0 11 9 ]流程開始於方塊1 6 0 2,在此處,依據本發 明’一連串的巨集指令被送到一指令佇列。流程接著X進行 到方塊1 6 0 4。 [ 0 0 1 2 0 ]於方塊1 6 04中,一個隨後的巨集指令被從該 指令佇列中提取,並將之送到一延伸轉譯器。流程接著進 行到判斷方塊1 6 0 6。 [00121]於判斷方塊丨60 6中,將進行一項檢查用以判 斷該隨後的巨集指令是否為一延伸預取指令,且此延伸預 取指令係編碼成對一快取線執行配置與初始化運算。若答 案為是,則流程進行到方塊16〇8。若答案為否,則流程& 行到方塊1 6 1 0。 [0 0 1 2 2 ]於方塊1 6 〇 8中,該偵測到的延伸預取指令被 轉譯成一預取與初始化指令序列,此指令序列用以命令微 處理器去預取一處於排他狀態的指定快取線。在接收到兮 指定快取線後,即將其内容修改為一指定數值。該指定g 值係由該預取與初始化微指令序列内之編碼所指定。該編 碼方式之一具體實施例包括清除該被配置快取線的内容 〔換言之,將其内容修改為邏輯數值零)。另一該編碼方 的具體貫施例包括確定丨^^^匕^該快取線的内容^換言
第46頁 1220223
[ 0 0 1 24 ]於方塊1612中,一個隨後的微指令序列被送 到微處理器内之執行邏輯。流程接著進行到判斷方 ^ 1614。 [0 0 1 2 5 ]於判斷方塊1 6 1 4中,將進行一項檢查用以判 斷隨後的微指令序列是否為一預取與初始化運算的序列。 若答案為是,則流程進行到方塊1 6 1 6。若答案為否,則流 程進行到方塊1 6 1 8。 ^ [00126]於方塊1616中,回應該預取與初始化運算的 序列,匯流排作業請求被發出到一記憶體匯流排以要求— 指定快取線之排他所有權。隨後回應此作業,該快取線即 以排他MES I狀態被送到微處理器。流程接著進行到方塊 1 62 0。 [0 0 1 2 7 ]於方塊1 6 2 0中,延伸記錄邏輯依據本發明將 在區域快取記憶體之排他預取的快取線初始化成所指定的 數值。流程接著進行到方塊1 6 2 2。 [ 0 0 1 28 ]於方塊1618中,執行該隨後的微指令序列。 流程接著進行到方塊1 6 2 2。 [00129]於方塊1622中,本方法完成。
第47頁 1220223 五、發明說明(43) [0 0 1 3 0 ]圖十七係為一方塊圖i 7 〇 〇,用以描述在圖六 之微處理器1 7 0 1内執行區段預取與初始化運算之一界面至 吕己憶體的快取記憶體單元。圖十七之微處理器1 7 〇 1内之元 件的遇證與運异類似於圖十五之微處理器1 5 0 1内之相似元 件,只要將圖十五的百位數圖號5用7來取代即可。依據本 發明以改進此區段預取與初始化運算,本發明使用一延伸 轉# β 1 7 1 0將一如圖九所述之有重複前置碼1 7 〇 2的延伸配 置與初始化指令轉譯成微指令序列丨7 i丨,此微指令序列 1 7 1 1係用以命令執行區段預取與初始化運算。除此之外, 亦使用一影子計數暫存器1 7 1 3,用以載入從架構暫存器 1 7 1 2預取與初始化之快取線的數量計數。並且使用延伸區 段記錄邏輯1721命令其匯流排單元1 730要求排他的預取一 才曰疋區段的快取線’並將之送到其資料快取記憶體1 γ 2 2, 此外並將這些快取線初始化成依照配置與初始化指令1 7 〇 2 所指定的一指定數值。
[00131]為初始一區段配置與初始化運算,第一個巨 集指令1 0 0 2,MOV ECX,#COUNT,係用以將架構暫存器ECX 内被排他的預取之區段内之快取線的數量計數初始化。延 伸轉譯器1 7 1 0將該第一個巨集指令轉譯成載入微指令 1 71 1,L D E C X,# C 0 U N T,此微指令命令微處理器將計數載 入ECX 1712。當該計數被載入到ECX 1712後,此計數亦被 透明的複製到影子計數暫存器1713,SHECX。同時,其他 的指令1 7 0 2則可在不干擾到預取與初始化運算的計數之情 況下,修改其架構暫存器1712的内容。
1220223 五、發明說明(44) [0 0 1 3 2 ]在計數被初始化之後,第二個巨集指令 1 70 2,MOV EAX,#INIT被送到轉譯器1710,此巨集指令 1 702係用以命令微處理器1701將一指定數值,iNIT,載入 到架構暫存器E A X 1 7 0 5。依據本發明之一具體實施例,其 包含在EAX1 70 5内容的指定數值將會使得在被預取之快取 線區段中的所有快取線均被初始化。此一配置與初始化指 令的特定編碼方式之具體實施例已於圖十四中討論過。其 他的具體實施例有清除或設定該區段的快取線,回應這些 具體實施例的配置與初始化指令之編碼的命令,其延伸快 取記憶體單元1 72 0内之延伸記錄邏輯1721則據以清除或設 定該快取線區段。轉譯器1 7 1 〇將第二個巨集指令1 7 0 2轉譯 成一載入微指令,LD EAX,,#INIT微指令,此微指令用以 命令微處理器1 7 0 1將數值I N I T載入到EAX1 7 0 5。 [ 0 0 1 33 ]在將數值INIT載入到EAX1 70 5之後,緊接著, 該延伸轉譯器1 7 1 0轉譯一區段配置與初始化指令丨7 〇 2, REP.PREF.S [EBX],此指令命令微處理器1701預取被ECX 所4日疋數里之處於排他狀悲的快取線到區域快取記憶體, 而該第一被預取的快取線其位址是由暫存器ΕΒχ (未顯示) 所指定,並且將該快取線的内容初始化成儲存在ΕΑχΐ7〇 5 的數值。以回應命令該排他配置與初始化運算的微指令序 列1 7 11,該延伸區段記錄邏輯1 7 2 1命令其匯流排單元1 7 3 〇 經由其§己fe體匯流排1 7 4 0要求排他的預取一指定區段的快 取線,此區段第一快取線位址係由暫存器ΕΒχ所指定。記 錄邏輯1 7 2 1在接收到這些快取線後,即將之配置到資料快
Ϊ220223
五、發明說明(45) 取記憶體1 722,並將之初始化成由暫存器EAX 1 70 5的内容 所指定的數值。 [0 0 1 3 4 ]現請參閱圖十八,其為描述依據本發明執行 一快取記憶體資料區段配置與初始化運算方法的流程圖 1 80 0 〇 [0 0 1 3 5 ]流程開始於方塊1 8 0 2,在此處,依據本發 明,一連串的巨集指令被送到一指令佇列。流程接著進行 到方塊1 8 0 4。 [0 0 1 3 6 ]於方塊1 8 0 4中,一個隨後的巨集指令被從該 指令佇列中提取,並將之送到一延伸轉譯器。流程接著進 行到判斷方塊1 8 0 6。 [0 0 1 3 7 ]於判斷方塊1 8 0 6中,將進行一項檢查用以判 斷該隨後的巨集指令是否為一區段配置與初始化指人。^ 答案為是,則流程進行到方塊1810。若答案為否^ ^流= 進行到方塊1 8 0 8。 ' ^壬 [ 0 0 1 38 ]於方塊1810中,一被偵測到的區段配置與初 始化指令被轉譯成一區段配置與初始化微指令序列,此 指令序列係用以命令微處理器去預取一指定數量之#於从 他狀態的快取線,並且將該被預取快取線的内容修改成排 指定數值。不同的區段配置與初始化運算的具體實施伤口 類同於如圖十六所述的單一快取線的配置與初始二;二Z 施例,只須稍作如圖九所述的重複前置碼的修改。ς =只 著進行到方塊1 81 2。 W壬接 [ 00 1 39 ]於方塊1 8 08中,該巨集指令被轉譯成—對應
第50頁 1220223 五、發明說明(46) 的微指令序列,此微指令序列用以命令微處理器去執行_ 指定的運算。流程接著進行到方塊1 8 1 2。 [〇 〇 1 4 0 ]於方塊1 8 1 2中,一個隨後的微指令序列被送 到微處理器内之執行邏輯。流程接著進行到判斷方塊 1814。 [0 0 1 4 1 ]於判斷方塊1 8 1 4中,將進行一項檢查用以判 斷該隨後的微指令序列是否為一意圖進行區段配置與初始 化微指令序列。若答案為是,則流程進行到方塊丨8丨8。若 答案為否,則流程進行到方塊1 8 1 6。 [ 0 0 1 42 ]於方塊18 16中,執行該隨後的微指令序列。 流程接著進行到方塊1 830。 [0 0 1 4 3 ]於方塊1 81 8中,為回應該意圖進行儲存運算 之區段預取的微指令序列,將一暫時的計數器初始化成數 值零以監測所發出的匯流排作業請求的數量,該匯流排作 業請求係要求一區段之快取線的排他所有權並將其初始 化。流程接著進行到方塊1 8 2 0。 [00 1 44 ]於方塊1 820中,第一快取線位址被指定給第 一個資料讀取與無效匯流排作業。該第一快取線位址來自 於由該區段配置與初始化指令所指定的位址,然後再加上 一乘以方塊1 8 1 8之計數的快取線行寬。由於該計數初始為 零,所以該第一快取線位址等同於該區段配置與初始化指 令所指定的位址。流程接著進行到方塊1 8 2 2 ° [0 0 1 4 5 ]於方塊1 8 2 2中,經由記憶體匯流排發出一資 料讀取與無效作業,用以預取該之處於排他的MES1狀態的
第51頁 1220223 五、發明說明(47) 第一快取線。流程接著進行到方塊1 8 2 4。 [0 0 1 4 6 ]於方塊1 8 2 4中’將在區域快取記憶體中被預 取之快取線初始化成該指定數值。流程接著進行到方塊 1 82 6。 [ 0 0 1 47 ]於方塊1 826中,將該計數增加後,流程接著 進行到方塊1 8 2 8。 [ 00 1 48 ]於判斷方塊1 828中,將進行一項檢查用以判 斷該增加後的計數是否等同於被預取與初始化的快取線的 數量,該快取線線的數量係儲存於影子暫存器中。若答案 為否,則流程進行到方塊1 820,於此處再進行另一個^複 〔i t e r a t i ο η )以提取並初始化一下一快取線。若計數等同 於該影子暫存器的内容,則發出所有匯流排作鞏,
程進行到方塊1 83 0。 ” J ^ >;,L
[00149]於方塊1830中,本方法完成。 [ 0 0 1 5 0 ]雖然本發明及其目的、特徵與優點已詳細 述,其他具體實施例仍涵蓋在本發明之範圍内。例如 此描述了依照MES I協定時,本發明對於待決的儲管f 消除的(61丨111丨1^1:丨1^)儲存運算所具有的優點。選1’ 作為本發明的例子是因為其在本技術領域中的廣泛康 但是,值得注意的是本本發明提供預取的資料到’一 ^用。 取記憶體,其型式或狀態使得該資料可立即被修=°σ°域快 需發出作業到記憶體匯流排。該型式或狀態是^ 並不重要。 [00151]如前所述’不同的架構使用不同的快取線行
1220223 五、發明說明(48) -- 寬。在桌上型電腦系統中,今日普遍使用3 2 _位元組的快 取線。但是在本發明中使用的敘述並不限制本發明不能應 用於3 2-,64-,128-,或甚至於25 6_位元組的快取線。相 反的,本發明預期可應用在任何限制其區域快取線之修改 且不提供直接預取這些快取線的系統架構,以至於該快取 線可立即被修改而不必需依靠匯流排作業以取得修改許 〇 [0 0 1 5 2 ]此外,本發明使用相符於χ 8 β架構的具體實施 例作為例證。無疑的,x86-相容的微處理器可以從應用本 發明得到好處’但值得注意的是本發明的應用範疇並不只 限於x86-相容的環境,因為仍有許多不同的架構所應用的 預取指令亦不能保證其結果為排他的資料。 [〇 0 1 5 3 ]最後,值得注意的是,雖然在此處應用一位 址指定元以指定被預取之快取線的位址,此種指定方式並 不需是顯示的(explicit)。一個依據本發明之預取指令的 ,體實施例可以隱含的(;11111)14;^17)指定一包含該位址的 架構暫存器,此處係由一先前執行的指令將該位址載入到 該架構暫存器。 [0 0 1 5 4 ]總之,以上所述者,僅為本發明之較佳實施 例而已,當不能以之限定本發明所實施之範圍。大凡依本 發明申請專利範圍所作之均等變化與修飾,皆應仍屬於本 發明專利涵蓋之範圍内,謹請貴審查委員明鑑,並祈惠 准,是所至禱。
1220223 圖式簡單說明 【發明圖示說明】 [0015] 本發明之前述與其他目的、特徵及優點,在配 合下列說明及所附圖示後,將可獲得更好的理解: [0016] 圖一係為一解說當今微處理器的有效管線化階 段的方塊圖; [0 0 1 7 ]圖二係為一方塊圖,其描述在如圖一所述之微 處理器内執行一預取運算之一界面至記憶體的快取記憶體 單元; [0 0 1 8 ]圖三係為一時脈圖,其說明由如圖一及圖二所 述之微處理器所發出,經由記憶體匯流排以執行之預取運 算的兩種可能作業集; [0 0 1 9 ]圖四係為本發明之延伸預取指令的方塊圖, [0 0 2 0 ]圖五係為一表格,其說明如何將如圖四所示之 延伸預取指令的延伸位址定位元欄位編碼,用以命令微處 理器執行預取一處於排他MES I狀態的快取線; [0 0 2 1 ]圖六係為一方塊圖,其詳述本發明執行意圖進 行儲存運算之預取的一種微處理器; [ 0 0 2 2 ]圖七係為一方塊圖,其描述在如圖六所述之1 處理器内執行一意圖進行儲存運算之預取之一界面至义 體的快取記憶體單元,; 〆久 [ 0 0 23 ]圖八係為一時脈圖,為說明本發明由如圖=音 圖七所述之微處理器所發出,經由記憶體匯流排以執^于~ 圖進行儲存運算之預取的匯流排作業; [0 0 2 4 ]圖九係為本發明之延伸區段預取指令的
第54頁 1220223
圖式簡單說明 ® ; [0 0 2 5 ]圖十係為一方塊圖,其描述在如圖六所述之私 處理器内執行一區段預取及儲存運算之一界面至纪憶體的 快取記憶體單元; [0 0 2 6 ]圖十一係為一時脈圖,為說明本發明由如圖/ 及圖十所述之微處理器所發出,經由記憶體匯流排以執行 一區段預取及儲存運算之匯流排作業; [0 0 2 7 ]圖十二係為解說本發明用以執行意圖進行儲存 運算之預取方法的流程圖; 〜 [0 0 2 8 ]圖十二係為解說本發明用以執行意圖進行擁存 運算之區段預取方法的流程圖; “ [0 0 2 9 ]圖十四係為一表格,其說明如何將如圖四所系 之延伸預取指令的延伸位址定位元攔位編碼,用以命令微 處理器執行一快取線的預取及初始化; [ 0 0 3 0 ]圖十五係為一方塊圖,其描述在如圖六所述之 微處理器内配置及初始化一快取線之一界面至記憶體的快 取記憶體單元;
[〇 0 3 1 ]圖十六係為解說本發明用配置及初始化〆快取 線之方法的流程圖; 7 [ 〇 〇 3 2 ]圖十七係為一方塊圖,其描述在如圖六所述之 斂處理器内配置及初始化一個區段的快取線之—界面炱纪 憶體的快取記憶體單元; [ 0 0 3 3 ]圖十八係為解說本發明配置及初始化一快取言己 憶體資料區段之方法的流程圖。
第55頁
1220223 圖式簡單說明 圖號 說明= 100 管 線 化 微 處 理 器 101 提 取 程 序 102 轉 譯 階 段 103 暫 存 階 段 104 定 址 階 段 105 執 行 階 段 106 執 行 邏 輯 107 資 料 快 取 記 憶 體 108 記 憶 體 109 快 取 記 憶 體 匯 流排 110 1己 憶 體 匯 流 排 120 程 式 流 程 120〜 123 巨 集 指 令 200 快 取 記 憶 體 單 元界面 201 微 處 理 器 202 巨 集 指 令 210 轉 譯 器 211 微 指 令 220 快 取 記 憶 體 單 元 221 記 錄 邏 輯 222 資 料 快 取 記 憶 體 223 停 滯 訊 號 230 匯 流 排 單 元 240 系 統 記 憶 體 匯 流排 241 匯 流 排 元 件 242 : f料 記 憶 體 301〜 302 作 業 指 令 集 303〜 304 匯 流 排 作 業 400 延 伸 預 取 指 令 401 前 置 碼 402 預 取 運 算 碼 403 延 伸 位 址 指 定 元 600 微 處 理 器 601 提 取 邏 輯 602 指 令 快 取 記 憶 體 603 指 令 記 憶 體 604 指 令 佇 列 606 轉 譯 邏 輯 607 延 伸 轉 譯 邏 輯 608 微 指 令 仔 列
第56頁
1220223
圖式簡單說明 6 0 9 執行邏輯 611 資料快取記憶體 613 匯流排單元 615 記憶體匯流排 70 0 方塊圖 70 2 巨集指令 711 微指令 721 延伸記錄邏輯 723 停滯訊號 740 匯流排 743資料記憶體 8 0 0 時脈圖 9 0 0 延伸區段預取指令 9 02 重複前置碼 9 0 4延伸位址指定元 1 0 0 0 方塊圖 1 0 0 2 巨集指令 1 0 1 1 微指令序列 1 0 1 3影子計數暫存器 1 0 2 1延伸區段記錄邏輯 1 0 2 3停滯訊號 1 0 4 0記憶體匯流排 I 0 4 2資料記憶體 II 0 0時脈圖 610 延伸快取記憶體單元 612 延伸記錄邏輯 614 資料記憶體 701 微處理器 710 延伸轉譯器 7 2 0 延伸快取記憶體單元 7 2 2 資料快取記憶體 7 3 0 匯流排單元 741 匯流排元件 80 1 -80 2 匯流排作業 901 前置碼 9 0 3 預取運算碼 1 0 0 1 微處理器 1 0 1 0延伸轉譯器 1 0 1 2架構暫存器 1 0 2 0延伸快取記憶體單元 1 0 2 2資料快取記憶體 1 0 3 0 匯流排單元 I 0 4 1匯流排元件 II 0 1〜11 0 2匯流排作業
第57頁 1220223 圖式簡單說明 1 20 0 〜 1 2 2 0 意圖進行儲存運算之預取的方法之流程 1 3 0 0 〜 1 3 2 8 意圖進行儲存運算之區段預取的方法之流程 1500 方塊圖 1501 微處理器 1502 巨集指令 1510 延伸轉譯器 1505 架構暫存器 1511 微指令 1520 延伸快取記憶體單元 1521 延伸§己錄邏輯 1522 資料快取記憶體 1523 停滯訊號 1530 匯流排單元 1540 系統記憶體匯流排 1541 匯流排元件 1542 資料記憶體 1 6 0 0 〜 1 6 2 2 外取線配置與初始化的方法之流程 1700 方塊圖 1701 微處理器 1702 巨集指令 1710 延伸轉譯器 1705 架構暫存器 1711 微指令 1712 架構暫存器 1713 影子計數暫存器 1720 延伸快取記憶體單元 1721 延伸區段記錄邏輯 1722 資料快取記憶體 1723 停滯訊號 1730 匯流排單元 1 7 4 0 s己憶體匯流排 1741 匯流排元件 1742 資料記憶體 1 80 0 〜 1830 快取記憶體資料區段配置與初始化的方法 流程
Claims (1)
1220223
六、申請專利範圍 1 一種微處理器裝置’用以執行一來自記憶體的快取線的 •配置與初始化運算,此裝置包含: 一轉譯邏輯’組態成將配置及初始化指令轉譯成一 微指令序列,用以命令微處理器預取一處於排他狀態的 十弁取線,旅且將該快取線初始化成一指定數值;以及 一執行邏輯’係耦接至該轉譯邏輯,組態成接收該 微指令序列,發出作業至要求處於該排他狀態快取線的 一纪恨、體匯流排,並將該快取線初始化成該指定值。
2如申請專利範圍第1項所述之微處理器裝置,其中該快 •取線的配置及初始化與在一應用程式内一程式流程之其 他指令的執行平行。 3如申請專利範圍第2項所述之微處理器裝置’其中該快 取線的配置及初始化消除對應於執行隨後的儲存運算之 程式延遲,原本即會要求在該程式流程中將該快取線初 始化成該指定數值。 4.如申請專利範圍第1項所述之微處理器裝置,其中該配 置與初始化指令包含對在一現存指令集内之一現存預取 指令的修改,並且其中該現存預取指令原本不提供該快
取線之配置與初始化。 5 ·如申請專利範圍第4項所述之微處理器裝置,其中該現 存指令集包含x86指令集’並且其中該現存預取指令包 含此x86的預取指令。 6 ·如申請專利範圍第4項所述之微處理器裝置,其中該配 置與初始化指令包含在/延伸位址指定元實體之一預取
1 第59頁 1220223 六、申請專利範圍 運算碼欄位,其中該預取運算碼欄位之一指定數值命令 該微處理器預取處於該排他狀態的該快取線,並且將該 快取線初始化成該指定數值,並且其中該預取運算碼欄 位之其他數值命令該微處理器依照該現存指令集執行其 他類型之預取運算。 7 ·如申請專利範圍第6項所述之微處理器裝置,其中該預 取運算碼攔位包含在一x86預取指令之ModR/M位元組内 的5 : 3位元。 回 8.如申請專利範圍第1項所述之微處理15裝置’其中 應於該微指令序列,該執行邏輯命令一匯流排單元經由 該記憶體匯流排發出該些作業。 此些作業係要求該快
9·如申請專利範圍第8項所述之微處理裔置/其_中,該些 作業包含一資料讀取與無效作業 取線之排他所有權。 I ◦ ·如申請專利範圍第9項所述之微處理為裝置’其中該記 憶體匯流排與χ86的架構相符° II ·如申請專利範圍第丨項所述之微處理^ ^置’其中該指 定數值係隱含的由該配置及初始化$之編碼方式所 指定。 1 2 ·如申請專利範圍第11項所 指定數值包含邏輯數值零 1 3.如申請專利範圍第11項所 述之微處理器裝置,其中該 〇 述之微處理器裝置,其中該
指定數值包含邏輯數值〃 ° 如申請專利範圍第1項所述之微 處理器裝置,其中該 指 14.
第6〇頁 1220223 六、 申請專利範圍 定 數 值 係 由 該 微 處 理 器 内 之 一一 架 構 暫 存 器 的 内 容 所 提 供 〇 15 •如 中 請 專 利 範 圍 第 1項所述之微處理器裝置: ,其中5 ,緊 接 在 接 收 到 處 於 該 排 他 狀 態 的 該 快 取 線 之 後 該 執 行 邏 輯 命 令 延 伸 記 錄 邏 輯 將 該 快 取 線 初 始 化 成 該 指 定 數 值 〇 16 ♦ - 種 微 處 理 器 裝 置 係 用 以 執 行 一 配 置 與 初 始 化 運 算 此 裝 置 包 含 • 配 置 與 初 始 化 指 令 係 組 態 成 命 令 微 處 理 器 預 取 一 處 於 排 他 狀 態 之 快 取 線 5 並 且 將 該 快 取 線 初 始 化 成 指 定 數 值 以 及 一 轉 譯 器 9 係 組 態 成 接 收 該 配 置 與 初 始 化 指 令 並 將 該 配 置 與 初 始 化 指 令 轉 譯 成 相 關 的 微 指 令 在 其 中 該 相 關 的 微 指 令 命 令 在 微 處 理 器 内 的 執 行 邏 輯 經 由 一 記 憶 體 匯 流 排 發 出 匯 流 排 作 業 用 以 要 求 該 快 取 線 的 排 他 所 有 權 , 並 且 將 該 快 取 線 初 始 化 成 該 指 定 數 值 〇 17 •如 中 請 專 利範 圍 第 16 項 所 述 之 裝 置 其 中 該 快 取 線 的 配 置 及 初 始 化 係 與 在 應 用 程 式 内 程 式 流 程 之 其 他 指 令 的 執 行 平 行 〇 18 •如 中 請 專 利 範 圍 第 17 項 所 述 之 裝 置 其 中 該 配 置 與 初 始 化 指 令 包 含 對 在 一— 現 存 指 令 集 内 之 一 現 存 預 取 指 令 的 修 改 5 並 且 其 中 該 現 存 預 取 指 令 原 本 不 提 供 該 快 取 線 之 配 置 與 初 始 化 〇
第61頁 1220223 六、申請專利範圍 1 9 ·如申請專利範圍第1 8項所述之裝置,其中該現存指令 集包含x86指令集,並I其中該現存預取指令包含X86 的預取指令。 2 0 ·如申請專利範圍第1 8項所述之裝置,其中該配置與初 始化指令包含在一延伸位址指定元實體之一預取運异 碼欄位,並且其中該預取運算碼櫊位之一指定數值命 令微處理器預取處於該排他狀態的該快取線,益將該 快取線初始化成該指定數值,並且其中該預取運算碼 欄位之其他數值命令微處理器依照該現存指令集執行 其他類型之預取運算。 2 1 ·如申請專利範圍第2 0項所述之裝置’其中該預取運算 碼欄位包含在一x86預取指令之ModR/M位元組内的5 : 3 位元。 2 2 ·如申請專利範圍第1 6項所述之裝置’其中,回應於該 相關的微指令,該執行邏輯命令一匯流排單元鉍由该 記憶體匯流排發出該些匯流排作業。 2 3 ·如申請專利範圍第2 2項所述之裝置’其中該呰辑流排 作業包含一資料讀取與無效作業,此些作業係要求該 快取線之排他所有權。 2 4 ·如申請專利範圍第2 3項所述之裝置’其中該記憶體匯 流排與X 8 6的架構相符。 25.如申請專利範圍第1 6項所述之裝置’其中該指定數值 係隱含的由該配置及初始化指令之編碼方式所指定。 2 6 ·如申請專利範圍第2 5項所述之裝置,其中該指定數值
第62頁 1220223 六、 申請專利範圍 包含邏輯 2 7.如申請專 包含邏輯 2 8.如申請專 係由該微 2 9.如申請專 收到處於 令延伸記 3 0. —種配置 提取 將此 其中該微 他狀態的 數值零。 利範圍第2 5項 數值一。 利範圍第1 6項 處理器内之一 利範圍第1 6項 該排他狀態的 錄邏輯將該快 與初始化一快 所述之裝置,其中該指定數值 一配置 配置與 指令序 該快取 與初始 初始化 列係用 線,並 所述之 架構暫 所述之 該快取 取線初 取線的 化之巨 巨集指 以命令 裝置,其中該指定數值 存器的内容所提供。 裝置,其中,緊接在接 線之後,該執行邏輯命 始化成該指定數值。 方法,此方法包含: 集指令; 令轉譯成微指令序列’ 一微處理器預取處於排 桃敗媿初始化成一指定 數值;以及 回應此微指令序列,經由記憶體匯流排發出匯流 排作業以讀取該處於排他狀態之快取線’並且將該快 取線初始化成該指定數值。 31 ·如申請專利範圍第30項所述之方法,其中該發出動作 包含: 許可該微處理器平行的執行該發出與隨後的指 令。 3 2 ·如申請專利範圍第3 〇項所述之方法,其中該提取動作 包含: 提供該配置與初始化指令作為對在一現存指令集
1220223 六、申請專利範圍 内之一現存預取指令的修改,其中該現存預取指令原 本不提供該快取線之配置與初始化。 3 3 ·如申請專利範圍第3 2項所述之方法,其中該提供動作 包含: 修改一 X 8 6預取指令以致能一配置與初始化運算的 規格。 3 4 ·如申請專利範圍第3 2項所述之方法,其中該延伸預取 指令包含在一延伸位址指定元實體内之——預取運算 碼欄位,其中該預取運算碼欄位之一指定數值命令該 微處理器預取處於該排他狀態的該快取線,並將該快 取線初始化成該指定數值,並且其中該預取運算碼欄 位之其他數值命令該微處理器依照現存指令集執行其 他類型之預取運算。 3 5 ·如申請專利範圍第3 4項所述之方法,其中該預取運算 碼攔位包含在— x86預取指令之ModR/M位元組内的5 : 3 位元。 3 6 ·如申請專利範圍第3 〇項所述之方法,其中該發出動作 包含: 提供經由記憶體匯流排之一資料讀取與無效作 業,此作業係要求該快取線的排他所有權。 3 7 ·如申請專利範圍第3 5項所述之方法’其中該提取動作 包含: 在該配置與初始化指令内隱含的指定一指定數 值,該指定數值係用以初始化該快取線。
第64頁 1220223 六、申請專利範圍 3 8.如申請專利範圍第3 7項所述之方法,其中該指定數值 包含邏輯數值零。 3 9.如申請專利範圍第3 7項所述之方法,其中該指定數值 包含邏輯數值一。 4 0.如申請專利範圍第3 0項所述之方法,其中該提取動作 包含: 提供該微處理器之一暫存器内之該指定數值。
第65頁
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/364,920 US7080211B2 (en) | 2002-02-12 | 2003-02-11 | Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI220223B true TWI220223B (en) | 2004-08-11 |
TW200415514A TW200415514A (en) | 2004-08-16 |
Family
ID=32681699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW092116036A TWI220223B (en) | 2003-02-11 | 2003-06-13 | Apparatus and method for allocation and initialization of a cache line |
Country Status (5)
Country | Link |
---|---|
US (1) | US7080211B2 (zh) |
EP (1) | EP1447743B1 (zh) |
CN (1) | CN1225690C (zh) |
DE (1) | DE60324762D1 (zh) |
TW (1) | TWI220223B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089371B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US7111125B2 (en) * | 2002-04-02 | 2006-09-19 | Ip-First, Llc | Apparatus and method for renaming a data block within a cache |
US7188215B2 (en) | 2003-06-19 | 2007-03-06 | Ip-First, Llc | Apparatus and method for renaming a cache line |
US8041896B2 (en) * | 2008-04-30 | 2011-10-18 | Hewlett-Packard Development Company, L.P. | Virtualization platform with dedicated cache access |
US8533437B2 (en) * | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
CN101916181B (zh) * | 2009-08-28 | 2014-04-23 | 威盛电子股份有限公司 | 微处理器及其执行方法 |
US8595471B2 (en) * | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
US8856453B2 (en) | 2012-03-01 | 2014-10-07 | International Business Machines Corporation | Persistent prefetch data stream settings |
US9811467B2 (en) * | 2014-02-03 | 2017-11-07 | Cavium, Inc. | Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor |
US10761925B2 (en) * | 2015-03-24 | 2020-09-01 | Nxp Usa, Inc. | Multi-channel network-on-a-chip |
US11157407B2 (en) | 2016-12-15 | 2021-10-26 | Optimum Semiconductor Technologies Inc. | Implementing atomic primitives using cache line locking |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4959777A (en) | 1987-07-27 | 1990-09-25 | Motorola Computer X | Write-shared cache circuit for multiprocessor system |
CA2051209C (en) | 1990-11-30 | 1996-05-07 | Pradeep S. Sindhu | Consistency protocols for shared memory multiprocessors |
JP2500101B2 (ja) | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
US5903911A (en) | 1993-06-22 | 1999-05-11 | Dell Usa, L.P. | Cache-based computer system employing memory control circuit and method for write allocation and data prefetch |
US5892970A (en) | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | Multiprocessing system configured to perform efficient block copy operations |
EP0825538A1 (en) | 1996-08-16 | 1998-02-25 | Lsi Logic Corporation | Cache memory system |
JP2916421B2 (ja) | 1996-09-09 | 1999-07-05 | 株式会社東芝 | キャッシュフラッシュ装置およびデータ処理方法 |
US5966734A (en) | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US6018763A (en) | 1997-05-28 | 2000-01-25 | 3Com Corporation | High performance shared memory for a bridge router supporting cache coherency |
US5944815A (en) | 1998-01-12 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access |
US6014735A (en) | 1998-03-31 | 2000-01-11 | Intel Corporation | Instruction set extension using prefixes |
US6088789A (en) | 1998-05-13 | 2000-07-11 | Advanced Micro Devices, Inc. | Prefetch instruction specifying destination functional unit and read/write access mode |
US6253306B1 (en) * | 1998-07-29 | 2001-06-26 | Advanced Micro Devices, Inc. | Prefetch instruction mechanism for processor |
US6289420B1 (en) | 1999-05-06 | 2001-09-11 | Sun Microsystems, Inc. | System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6470444B1 (en) | 1999-06-16 | 2002-10-22 | Intel Corporation | Method and apparatus for dividing a store operation into pre-fetch and store micro-operations |
US6557084B2 (en) | 1999-07-13 | 2003-04-29 | International Business Machines Corporation | Apparatus and method to improve performance of reads from and writes to shared memory locations |
US6460132B1 (en) | 1999-08-31 | 2002-10-01 | Advanced Micro Devices, Inc. | Massively parallel instruction predecoding |
JP2001222466A (ja) | 2000-02-10 | 2001-08-17 | Nec Corp | マルチプロセッサ・システムと共有メモリ制御システム及び方法並びに記録媒体 |
US6751710B2 (en) | 2000-06-10 | 2004-06-15 | Hewlett-Packard Development Company, L.P. | Scalable multiprocessor system and cache coherence method |
US6845008B2 (en) | 2001-03-30 | 2005-01-18 | Intel Corporation | Docking station to cool a notebook computer |
US6915415B2 (en) | 2002-01-07 | 2005-07-05 | International Business Machines Corporation | Method and apparatus for mapping software prefetch instructions to hardware prefetch logic |
US7380103B2 (en) | 2002-04-02 | 2008-05-27 | Ip-First, Llc | Apparatus and method for selective control of results write back |
US6832296B2 (en) | 2002-04-09 | 2004-12-14 | Ip-First, Llc | Microprocessor with repeat prefetch instruction |
-
2003
- 2003-02-11 US US10/364,920 patent/US7080211B2/en not_active Expired - Lifetime
- 2003-06-04 DE DE60324762T patent/DE60324762D1/de not_active Expired - Lifetime
- 2003-06-04 EP EP03253502A patent/EP1447743B1/en not_active Expired - Lifetime
- 2003-06-13 TW TW092116036A patent/TWI220223B/zh not_active IP Right Cessation
- 2003-08-05 CN CNB031526632A patent/CN1225690C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US7080211B2 (en) | 2006-07-18 |
EP1447743A2 (en) | 2004-08-18 |
DE60324762D1 (de) | 2009-01-02 |
CN1225690C (zh) | 2005-11-02 |
TW200415514A (en) | 2004-08-16 |
US20040158680A1 (en) | 2004-08-12 |
CN1487410A (zh) | 2004-04-07 |
EP1447743B1 (en) | 2008-11-19 |
EP1447743A3 (en) | 2004-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI222017B (en) | Cache data block allocation and initialization mechanism | |
EP1465077B1 (en) | Apparatus and method for renaming a data block within a cache | |
TWI428820B (zh) | 執行快速重複載入資料串操作的微處理器 | |
TWI235918B (en) | Apparatus and method for renaming a cache line | |
TWI712952B (zh) | 持續確定處理器、方法、系統及指令 | |
US7000081B2 (en) | Write back and invalidate mechanism for multiple cache lines | |
EP1782184B1 (en) | Selectively performing fetches for store operations during speculative execution | |
TWI220223B (en) | Apparatus and method for allocation and initialization of a cache line | |
US10108548B2 (en) | Processors and methods for cache sparing stores | |
JP5255049B2 (ja) | データをキャッシュ・メモリにプリフェッチする方法、コンピュータ・プログラム、及びシステム | |
TW200415466A (en) | Prefetch with intent to store mechanism for block memory | |
TWI220196B (en) | Prefetch with intent to store mechanism | |
EP1465059B1 (en) | Apparatus and method for renaming a cache line |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MK4A | Expiration of patent term of an invention patent |