TW583541B - Using type bits to track storage of ECC and predecode bits in a level two cache - Google Patents

Using type bits to track storage of ECC and predecode bits in a level two cache Download PDF

Info

Publication number
TW583541B
TW583541B TW091110329A TW91110329A TW583541B TW 583541 B TW583541 B TW 583541B TW 091110329 A TW091110329 A TW 091110329A TW 91110329 A TW91110329 A TW 91110329A TW 583541 B TW583541 B TW 583541B
Authority
TW
Taiwan
Prior art keywords
instruction
memory
cache
cache memory
bit
Prior art date
Application number
TW091110329A
Other languages
English (en)
Inventor
Gerald D Zuraski Jr
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Application granted granted Critical
Publication of TW583541B publication Critical patent/TW583541B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

583541
五、發明說明(1) [發明背景]
Lim 邡變長 本發明係有關微處理器,尤係有關微處理器内 度指令之解碼。 2.相關技藝說明 為x8 6指令集所撰寫的應用軟體之數目相當多。〃®咬計 此,儘管有較新且較先進的指令集之導入,微處理器 者還是持續設計出可執行x86指令集的微處ί里器。 長
χ86指令集較為複雜’且其特徵為具有複數個< &。如 度指令。χ8 6指令集的一例示一般性格式孫示於第1圖〆 該圖所示,一個x86指令包含一至五個選擇性的前置位元 組(1〇2)、以及後續的一運算碼襴位(1〇4)、一選擇性的定 址模式(M〇d R/M)位元組(1〇6)、選擇性的標度_索引_基底 (optionai Scale-IndeX-Base;簡稱 SIB)位元組 : 選擇性的位移欄位(11 0)、及選摆⑷从A 0 w Μ / ; 汉k擇性的立即運算資料欄位 Q 1 i z) 〇 運算碼欄位(104)界定特定指令之基本運 一 多個前置位元組(1〇2)修改特定運算碼之系統預設運算次 例如’可利用其中-個前置位元組(1{)2)來改變
址?運算……便置換用》記憶體定㈣系,统預^ &奴’或扣不處理Is重複-字串作業若干次。運 (1〇4)接續在選擇性的前置位元組(1〇2)之後,且 ^ 位(1〇4)的長度可以是一或二個位元組。定址模式 R/M)位元組(106)指定所用的暫存器、以及記憶體
583541 五、發明說明(2) 式。標度-索引-基底(S I B )位元組(1 0 8 )只用於採用標度因 子及索引因子之相對基底定址法。SIB位元組(108)内的基 底欄位指定哪一暫存器存放有位址計算之基底值,且S I B 位元組(1 0 8 )内的索引欄位指定哪一暫存器存放有索引 值。SIB位元組(108)内的標度欄位指定該索引值將要乘上 的二之乘冪值,而將上述運算的結果連同任何位移值加到 該基底值。次一指令攔位是一位移欄位(11 0 ),該位移攔 位(1 1 0 )是選擇性的,且其長度可以是一至四個位元組。 位移欄位(1 1 0 )存放有用於位址計算的常數。選擇性的立 即運算資料欄位(11 2)之長度也可以是一至四個位元組, 且立即運算資料欄位(1 1 2 )存放有用來作為指令運算元之 常數。最短的x86指令之長度只有一個位元組,且包含單 一的運算碼位元組。8 0 2 8 6將指令的最大長度設定為1 0個 位元組,而80386及80486容許的指令長度最大可到15個位 元組。 x8 6指令集的複雜性在實施高效能的x8 6相容微處理器 時造成許多困難。更具體而言,x86指令的可變長度使指 令的解碼較困難。指令的解碼通常涉及:決定一指令的邊 界;然後識別該指令内的每一欄位,例如運算碼及運算元 欄位。通常在自指令快取記憶體提取指令時,進行指令解 碼,然後才執行指令。 決定指令邊界的一種方法涉及:當自主記憶體讀取每 一指令並將該指令儲存在指令快取記憶體時,產生並儲存 該指令的一個或多個預先解碼位元。該等預先解碼位元提
92107.ptd 第6頁 583541
濃有關之資汛。例如,所觸發 該j關聯的指令位元組是指令 特定指令位元組的一起始位元 該指令位元組儲存在指令快取 時,係自指令快取記憶體讀 等指令位元組解碼,以便為執 聯的起始位元,以便產生該提 有效罩蓋(valid mask)是一系 應於一特定的指令位元組。與 的最後一個位元組、及在該指 之間的所有位元組相關聯之有 他的有效罩蓋位元並未被觸 之後’即可將該有效罩蓋用來 元組。 五、發明說明(3) 供了與其相關聯的指令位元 的一預先解碼起始位元指示 的第一位元組。一旦計算出 之後,即將該起始位元連同 記憶體中。當執行一'’提取 取若干指令位元組,並將該 行而作準備。掃描任何相關 取的個別指令之有效罩蓋。 列的位元,其中每一位元對 指令的第一位元組、該指令 令的弟一與最後一個位元組 效罩盍位元被觸發。所有其 發。一旦計算出該有效罩蓋 遮蔽其他指令不得使用的位 if在明參閱第2圖,圖中示出一例示之有效罩蓋。圖 不出提取(120)的一部分、及其相關聯的起始位元 (122)。假設要產生指令B(128)的有效罩蓋(126),且觸發 起始位元(122A)與起始位元(122B)間之所有位元,以便產 生罩蓋(126)。〆旦產生了有效罩蓋(126)之後,即可利用 有效罩蓋(126)來遮蔽提取(120)内不是指令B(128)的一 部分之所有位元,组。 如前文所述,預先解碼資訊尤其適用於減少解碼時 間。藉由將預先解碼資訊連同指令位元組儲存在指令快取 記憶體中,則縱使(諸如在一迴圈中)執行了對應的指令若
92107.ptd 第7頁 583541 五、發明說明(4) 干次’也只須要計算該預先解碼資訊一次。然而,不幸的 是:當自指令快取記憶體中取代或捨棄該指令時,即失掉 了任何相關聯的預先解碼資訊。下一次將該指令讀取到指 令快取記憶體時,必須再度產生預先解碼資訊。當因分支 錯誤預測或快取記憶體未命中而將該指令讀取到指令快取 €憶體時,等候預先解碼資訊計算所造成的時間延遲尤其 可能損及效能。與在需要一些指令之前以推測方式預先提 取該等指令不同,筆因於分支錯誤預測或快取記憶體未命 中的指令提取可能在等候接收所要求的指令時,造成微處 1里器的解碼器及功能單元的停頓。在此種情形中,產生預 先解碼資訊所需的時間對該微處理器的效能可能造成嚴重 的影響。 由於上述這些理由及其他的理由,需要一種可縮短預 先解碼時間之方法及裝置。尤其需要一種可縮短用來產生 先前已自一指令快取記憶體捨棄的指令的預先解碼資訊所 需的時間之方法及裝置。 在發明人為Rupaka Mahalingaiah的美國專利 6,092,182 f, Using ECC/Parity Bits to Store Predecode Information”中,提出了這些問題的一個可能 解決方案,亦即將預先解碼資訊儲存在第二階快取記憶體 的ECC/同位位元中。有利的結果是:在某些情形中,可能 避開對被捨棄的指令位元組的預先解碼之延遲。 然而’所提出的解決方案仍然無法使第二階快取記憶 體中儲存的資料避免一個及多個的位元錯誤。由於現有的
92107.ptd 第8頁 583541 五、發明說明(5) -— 微處理器的較高工作頻率 : -s (尤其是//記憶體尹之錯存錯丄r積f/所以錯存錯誤 因此,而要種可減少被拎条' 個潛在的問題。 有至少能偵測出某歧常& ^ 、預先解碼資訊量且° 的能力之系統及方法。 的錯誕(例如單一位元夢组、 [發明概述] 曰=' 本發:所述的一種用 題 解碼 元 訊之系統及方法可至少部分地C令預先解碼資 。在…例令’組心等問、 貧讥之微處理器可包含預先解碼單元及^入扣令預先 。可將該預先解碼單元之組態設定成:接 鍺存單 組,並產生對應的預先解碼資訊。亦可將該預=二位, 之組態設疋成將指令位元組及對應的預先解碼資兀 一指令快取記憶體中。可將該載入/儲存單元之組1子—在 成·接收若干資料位元組,旅將該等資料位元組 疋一 資料快取記憶體中。該指令快取記憶體及資料快取=憶體 可合而形成該處理器的”第一階”快取記憶體。該處理器亦 可包含第一階快取記憶體,且係將該第二階快取記憶^ ^ "Μ 日竣相今、 接收並儲存被捨棄的指令位元鄉久買科位元組。亦可將該 第二階快取記憶體之組態設定成··接收並儲存所儲存的被 組態設定成:分別自該指令快取記憶體及資料快取記憶體 並儲存被捨棄的指令位元組及資料位元紐。亦可將該 階快取播Μ > t # A : 垃丨]/r ^ , 位資訊及預先解碼資訊、以及所儲存 始正碼(Error Corrp〇 + ; — 捨棄指令位元組之同位資訊及預无 …、……久Γη 的被捨棄資料位元組之錯誤校正碼(Error Correct i 〇η ,;饍盤 F r r、h 二
Code ;簡稱ECC)位元
92107.ptd 第9 f 583541 五、發明說明(6) 在一實施例中,該微處理器亦可包含同位位元產生及 檢查邏輯電路,該同位位元產生及檢查邏輯電路之組態被 設定成為第二階快取記憶體中儲存的指令位元組產生同位 位元。亦可將該同位位元產生及檢查邏輯電路之組態設定 成檢查自該第二階快取記憶體讀取的指令位元組之同位位 元。在某些實施例中,亦可將該指令快取記憶體之組態設 定成儲存同位資訊,因而可對指令快取記憶體及第二階快 取記憶體中之指令位元組進行同位檢查。 同樣地,該微處理器亦可包含錯誤檢查及校正邏輯電 路,且該錯誤檢查及校正邏輯電路之組態被設定成為該第 二階快取記憶體中儲存的資料位元組產生錯誤檢查及校正 碼位元。可將該錯誤檢查及校正邏輯電路之組態設定成檢 查自該第二階快取記憶體讀取的資料位元組之ECC位元。 在某些實施例中,可將該錯誤檢查及校正邏輯電路之組態 設定成校正自該資料快取記憶體讀取的(而非自該第二階 快取記憶體讀取的)資料位元組中之至少一個位元錯誤。 在某些實施例中,可將該第二階快取記憶體分成若干 快取線(例如邏輯列及(或)行),其中係將每一快取線之組 態設定成儲存被捨棄的資料或被捨棄的指令位元組。可將 指示位元(也被稱為"資料類型”位元)用於該第二階快取記 憶體的每一快取線,以便指示(a)被捨棄的指令位元組、 預先解碼資訊、及同位資訊、或(b ) ECC資訊及資料位元組 係儲存在該快取線中。在某些實施例中,該第二階快取記 憶體可以是内容獨有式快取記憶體,此時該第二階快取記
92107.ptd 第10頁 583541 五、發明說明(7) :體儲存唯-的被捨棄之指令位元組及資料位元組、以及 其對應:ECC位儿、同位位元、預先解碼位元、及指示位 ί。在其他的實施例中,該第二階快取記憶體可以是内容 鰛含式快取記憶體’此時該第二階快取記 被捨棄的指令位元組及資料位元組之拷貝。 省仔〇禾 本發明亦可考慮到一種用來蚀左$ ^ * 訊之系統。在一實施例I以= 先解碼資 接…位元組及資料位元:含;=設定成 〜竭L理器。可將該處理考之 :且態設2根據該等指令位元組形成的指令而資 =組:乍^。胃系統亦可包含一個快取記憶體,該快取記 ::體m破設定士自該處理器接收並儲存被捨棄的指令 *::技l捨棄的貧料位元組。▼將該快取記憶體之組態 儲存該等被捨棄的指令位元組之同位資訊及 可將該快取記憶體之組態設定成接收並 ϊί^ί的該等被捨棄的資料位元組之ECC位元。可將 之組態設定成:回應要求該等被捨棄的資料 的ECC位接 ,而將該等被捨棄的資料位元组及對應 ST二提/給該處理广同樣地,可將該快取記憶體 理器:而蔣成回應要求該等被捨棄的指令位元組之該處 同:資气及::f的該等被捨棄的指令位元組以及對應的 該處理器可利用來自該指令快取記處為: 訊,以取代為該等指令位元电,體之該預先解碼貧 發生寫入該等指令位元組的情形(例如自行修改
583541 發明說明(8) —_________ 使 新 I,),則可使所儲存的預先次 的'二常數儲存在該預先解碼”上貝§方、、效(例如’以將 的同位資訊。 、Λ上之方式),並可計算 在某些實施例中,可蔣枯⑷ J器共同的-晶粒上形成之;體實施為在與該處 :施例中,可在與該處理器不;H取記憶體。在其他的 〜。在某些實施例中,可 二、曰曰粒上形成該快取記憶 ^成儲存被捨棄的指令位元::及取記憶體分成··組態被設 粗A )苐一部分 '及組態被士w = 貝矾及 枓位元組及對應的ECC資訊之二成儲存被捨棄的資 本發明亦考慮到一種用來刀 ,方法。▲-實施例中,該方棄的預先解碼資訊 令位元组“X及產生該等指含下列步驟:接收指 δί1 °然後可將該等指令位元纟且=二2對應之預先解碼資 ;憶體中。可回應該等指令位資訊儲存在第- ;出到第二記憶體。可產生對應及該預先解碼資訊 以等指令位元組及預先解碼資、—,憶體中錯存的 ,該等同位位元儲存在胃第二=個同位&元,並 含下列步驟^收資料位元μ ;以=2方法亦可包 存在第三記憶體中。可回應該仿δΛ貝料位兀組儲 體中被蓋寫,㈣至少一部分以::組在該第三記憶 第一記憶體。該等資料位元組可具二二位兀組儲存到該 且係將ECC資訊連同該等資料位元、生的ECC資訊, ,、'且儲存在該第二記憶體 583541
五、 發明說明(9) 中 〇 亦 可產 生 該 第 二 記 憶體 中的每一快取線之指示 位 元 並 將 該 等指 示 位 元 儲 存 在該 第二記憶體中,以便指 示 該 第 二 記 憶 體中 儲 存 了 指 令 位元 組以及預先解碼位元與 同 位 資 訊 或 資料 位 元 組 以 及 ECC資訊。 雖 然易 於 對 本 發 明 作出 各種修改及替代形式, 但 是 將 以 圖 式 舉例 之 方 式 示 出 本發 明的一些特定實施例, 且 本 文 將 詳 細 說明 這 些 特 定 實 施例 。然而,我們當了解, 本 發 明 的 該 等 圖式 及 詳 細 說 明 之用 意並非將本發明限於所 揭 示 的 特 定 形 式, 相 反 地 本 發明 將涵蓋在最後申請專利 範 圍 所 界 定 的 本發 明 精 神 及 範 圍内 的所有修改、等效物、 及 替 代 方 式 〇 本文 所 用 的 標 題 只是 為了組織上的目的,並 非 用 來 限 制 說 明或 中 請 專 利 範 圍之 範圍。在本說明書全文 的 用 法 中 ? 措 詞 " 可 能 "(丨丨m a y ")是 一種容許性的用法(亦即, 其 意 義 具 有可 能 性 ), ,而不是- -種強制性的用法(亦即 j 其 意 義 為 必 須)C >同樣地5 ,措詞 ”包括"(n include”、 丨,i nc luding” 、 及 ,f i nc 1 ude s ”)意指包括但不僅限於所包 括 之 事 項。 [實施例之詳細說明] 現 在請 參 閱 第 3圖, 圖中示出微處理器(10)的- •實施 例 之 方 塊圖 〇 微 處 理 器 (10) 包含預先提取/預先解碼單元 (12) 分支 預 測 單 元 (14)、 指令快取記憶體(1 6 )、 指 令 對 準 單 元 (18) 複 數 個 解 碼單 元(20A至20C)、複數個 指 令 保 留 區 (22A 至 22C) 複 數 個功 能單元(24A至24C)、載 入, /儲 存 單 元 (26) 資 料 快 取 記憶 體(28)、暫存器檔(30) 、 重 新 IH 92107,ptd 第13頁
583541 五、發明說明(ίο) " 棑序緩衝區(32)、及MR〇M單元(34)。本文中標示為一特 定代號及一接續的字母之各元件可概括地只標示其代號。 例如,可將各指令保留區(22A至22c)概括地標示為指令保 留區(22)。
乂預先提取/預先解碼單元(12)被耦合而自一主記憶體 子系統(圖中未示出)接收指令,且又係耦合到指令快取記 憶體(16)及分支預測單元(14)。同樣地,分支預測單元 (14)係耦合到指令快取記憶體(16)。分支預測單元(14)亦 係耦合到指令對準單元(18)及功能單元。“至㈧。指令快 取記憶體(16)又係耦合到MR〇M單元(34)及指令對準單元 (18)。指令對準單元(18)又係耦合到載入/儲存單元(26) 及各別的解碼單元(20A至C)。各別的解碼單元。(^至㈠係 耦合到指令保留區(22A至C),而該等指令保留區(2以至〇 又係輕合到各別的功能單元。“至㈠。此外,指令對準單 兀(1 8 )及指令保留區(2 2 )係耦合到暫存器檔(3 〇 )及重新排 序緩衝區(32)。功能單元(24)係耦合到載入/儲存單元 (26)、暫存器檔(30)、及重新排序緩衝區(32)。資料快取 記憶體(28)係耦合到載入/儲存單元(26)及主記憶體子系 統。最後,MROM單元(34 )係耦合到指令對準單元(丨8 )。
預先提取/預先解碼單元(12)自主記憶體預先提取指 令。預先提取/預先解碼單元(12)將該等可變長度指令預 先解碼為固定長度指令,然後將該等固定長度指令儲存在 指令快取記憶體(1 6 )。可使用預先提取架構,而在指令被 實際要求之前,先對這些指令進行預先提取及預先解碼。
583541 五、發明說明 預先提取 在繼續進 更詳細說 的實施例 微處 在有條件 (14),以 快取記憶 之多達兩 解碼時, 標。可能 應的該等 提取的指 式可在形 些分支目 新資訊提 儲存該快 能不會將 預測單元 /預先解碼I ,π、 "早疋(1 2 )可採用各種預先提取架構。 : 此解碼單元(1 2 )及指令快取記憶體(丨6 )的 m 將先說明與該圖所示例示微處理器(1 〇 ) 有關之一般性面向。 理=(1〇)可採用分支預測,以便以推測方式提取 的刀支h令之後的指令。包含分支預測單元 便執行义支預測作業。在一實施例中,儲存指令 體(1 6)中的每一個快取線的每一個1 6位元組部分 個的分支目標位址。當將一個特定的快取線預先 預先提取/預先解碼單元(丨2)決定起始的分支目 因執行快取線内的指令,而發生對與該快取線對 分支目標之後續更新。指令快取記憶體(丨6 )將所 令位址之指示提供給分支預測單元(1 4)。此種方 成分支預測時讓分支預測單元(1 4)決定要選擇哪 標位址。指令對準單元(丨8 )及功能單元(24 )將更 供給分支預測單元(1 4 )。因為分支預測單元(1 4 ) 取線的每一個1 6位元組部分之兩個目標,所以可 對該快取線内的某些分支指令之預測儲存在分支 (1 4 )中。可將指令對準單元(丨8 )之組態設定成偵 測分支預測單元(1 4)並未預測到的各分支指令。功能單元 (2 4)執行該等分支指令,並決定是否錯誤預測了所預測的 分支方向。該分支方向可以是π採取”,此時自該分支指令 的目標位址提取後續的指令。相反地,該分支方向可以是 π不採取π ’此時係自接續該分支指令的各記憶位置提取後
92107.ptd 第15頁 583541 五、發明說明(12) _ 續的指令。當偵測到錯誤 (10)的各單元捨棄該錯誤 =为支指令時,自微處理器 預測單元(1 4 )可採用各種適用沾分支之後的各指令。分支 指令快取記憶體(丨6 )是_插刀支預剛演算法。 先解碼單元(12)接收的指令,用來儲存自預先提取/預 令快取記憶體(16)提取所^广阿速快取記憶體。然後自指 到指令對準單元(18)。在一 指令,並將該等指令傳送 體(1 6)之組態設定成_組聪二=中,可將指令快取記憶 (16)可額外地採用路Uay) 構。指令快取記憶體 間。例如,並不存取用來識別每木_構^^更加速存取時 然後將該等標記與提取位址比較,2 指令之標記, 令快取記憶體(16)可預測所存取 =擇一路;而是指 在存取記憶體陣列之前,以推古 在此種方式下,係 測時,指令快取記憶體(丨6 )的存取^ =該路。使用路預 映式快取記憶體。在讀取了指人:S "類似於一直接對 較,以供驗说。如罢兮% 7 70、、且之後,執行標記比 1 ^供驗姐如果該路預測是錯誤的,則据取tp 令位元組,並捨棄(係進一步沿著處、]栓取正確的才曰 的指人仿分鈿4 1,口者處理管線向下的)不正確 的知7位兀組。清注意,可以完全關聯 直接對映式組態來實施指令快取記憶體(Λ :關聯式、或 M_f元(34)是-組態被設定成儲存"快速路徑指令" j丨之唯讀記憶體。快速路徑指令是解碼器(2〇a至c)及功 二,早兀(24A至C)可解瑪及執行之指令。相反地,"mr〇m指 7、是過於複雜而使解碼器(20A至c)及功能單元^一至。 無法直接解碼或執行之指令。當指令快取記憶體(16)輸出 第16頁 92107.ptd 583541 五、發明說明(13) M R 〇 Μ指令時,M R Ο Μ單元(3 4 )回應時係輸出一序列的快速路 徑指令。更具體而言,MROM單元(34)分析該MROM指令,並 將該MROM指令轉換為子集的已界定之快速路徑指令,以便 完成所需的作業。MROM單元(34)將該子集的快速路徑指令 派發到解碼單元(2 0 A至C )。 7
一旦自指令快取記憶體(1 6)提取了若干指令位元組之 後,即將該等指令位元組傳送到指令對準單元(丨8)。指令 對準單元(18)將該等指令傳送到其中一個解碼單元(2〇H Ο:亦=暫存器運算元資訊,並將該暫存器運算元資訊 傳送到暫存器檔(30)及重新排序緩衝區(32)。此外,如 該等指令需要執行一個或多個記憶體作 元。8)將該等記憶體作業派發到載入 、二對丰早 每-個經過解碼的指令連同該指令早^(26)將 址資:ί位移或立即運算資料派發到指令;二運22异)疋位 微處理器(10)支援非循序執行 ^留£(22)。 衡區(32)來追蹤暫存器讀取及寫入 木用重新排序緩 而實施暫存器更名,以便可進行 始程序順序, 错誤;測之還原,1協助精常H曰:執行、及分支 及一暫存器的更新的指令之解時㊉2況處理。在對一涉 (32)内的一暫時性儲存位 ^智’、留重新排序緩衝區 令的推測式執行而產生之推測,性儲存位置儲存因指 測是錯誤的,貝,】可在重新J :: ”狀態。如果分支預 方式執行的指令之結果以及該妒=區(32)中使該等以推测 才將該等結果及該錯誤預測的心:測:路徑無效’然後 馬入暫存器檔(30)。同 第17頁 92l〇7.Ptd 583541 五、發明說明(14) 樣地’如果特定的指令造成異常狀況,則可捨棄在造成異 常狀況的該指令之後的各指令。在此種方式下,異常狀況 是’’精確的”(亦即,在該異常狀況之前,並不會完成造成 該異常狀況的指令之後的各指令)。請注意,如果在释式 順序係在特定指令前面的各指令之前先執行該特定指令, 則係以推測方式執行該特定指令。在前面的各指令 < 能是 分支指令、或造成異常狀況的指令,在此種情形中,重新 排序緩衝區(3 2 )可捨棄推測式結果。 將4曰令對準早元(18)的輸出端上提供的經過解碼之該 等指令及立即運算資料或位移資料直接傳送到各別的指令 保留區(2 2 )。在一實施例中,每一個指令保留區(2 2 )可存 放多達三個的等候發出到對應的功能單元的待處理指令之 指令資訊(亦即,經過解碼的指令以及運算元值、運算元 標記、及(或)立即運算資料)。請注意,對於該圖所示的 實施例而言,每一個指令保留區(2 2 )係與一個專用的功能 單元(24)相關聯。因此,指令保留區(22)及功能單元(2^) 形成三個專用的"發出位置”。換言之,指令保留區(22A) 及功能單元(24A)形成發出位置0。由功能單元(24A)執^ 對準且派發到指令保留區(2 2 A)之指令。同樣地,指人Ζ 留區(22B)及功能單元(24B)形成發出位置1 ;且指^ ^ : 區(22C)及功能單元(24C)形成發出位置2。 、 在對一個特定指令解碼時,如果所需的運算元是疒 器位置,則將暫存器位址資訊同時傳送到重新排序$ ^ (32)及暫存器檔(3〇)。熟習此項技藝者當可了解,暫品
92107.ptd
583541 五、發明說明(15) 存器檔包括八個32位元的實際暫存器(亦即,通常被稱為 EAX 、 EBX 、 ECX 、 EDX 、 EBP 、 ESI 、 EDI 、及ESP 。在採用
X 8 6微處理Is架構的微處理( 1 〇 )實施例中,暫存哭樓 (30)包含每一個該等32位元實際暫存器的儲存位置。暫存 器檔(30)内可包含額外的儲存位置,以便為〇训單元(34) 所使用。重新排序緩衝區(32)包含用於改變了這些暫存器 的内容的執行結果之若干暫時性儲存位置,因而可容許非 循序執行。將重新排序緩衝區(32)的暫時性儲存位置保留 給在解碼時決定會修改其中一個該等實際暫存器的内容之 每一指令。因此,在執行特定程式的各時點上,重新排序 緩衝區(32)可具有其中存放了特定暫存器的推測式執行内 容之一個或多個位置。 如果在將特定指令解碼之後,決定重新排序緩衝區 (32)具有指定給暫存器且係用來作為該特定指令的運算元 之一個或多個先前位置,則重新排序緩衝區(32 )將下列資 訊傳送到對應的指令保留區:(丨)最近指定的位置中之、 ί : f 12)々該最近指定的位置之一標記,而傳送該標記的 刖撫疋取〜將執行該先前指令的功能單元尚未產生該值。 如果重新排序緩衝區(32)具有一個保留給特定暫存器之位 置γ則自重新排序緩衝區(32)提供該運算元值(或重新排 序緩衝區標記),而不是自暫存器檔(30)提供該運算元值 (或重新排序緩衝區標記)。如果重新排序緩衝區(32)中並 沒有任何保留給所需暫存器之位置,則直接自暫存器檔 (30)取得該值。如果該運算元對應於記憶位置,則將該運
92107.ptd
583541 5:!明說明 鼻元值經 — 定成儲存 文將該組 由一起操 採用的硬 指令時, 分配足以 反地,在 令數目, 的邏輯閘 每一個同 暫存器檔 時被解碼 (16) 由載入 特定實 並以一 態設定 作數個 體。例 本實施 儲存與 傳統的 而分配 ,才能 時被解 (30) 〇 的指令 邏輯電路量。可 記分成兩個攔位 快取線標記識別 令,而該偏移量 指令。請注意, 應的儲存位置被 注意,可在微處 序缓衝區組態。 /儲存單元(26)提供給指令保留區。 施例中,重新排序緩衝區(32 )的組態 單元之方式同時操作被解碼的各指令 稱為 π 線串導向 π 1 i n e r i e n t e d ”。 指令,即可簡化重新排序緩衝區(3 2 ) 如’當指令對準單元(丨8)派發一個或 例中包含的一線串導向重新排序緩衝 二個指令有關的指令資訊之儲存位置 重新排序緩衝區中,係根據實際派發 可變數量的健存位置。可能需要較大 分配該可變數量的儲存位置。當已執 碼的指令時’即將各指令結果同時儲 然後該儲存位置是可自由分配給另一 。此外,因為係將控制邏輯電路分攤 才曰令’所以減少了每一指令所採用的 將用來識別特定指令的重新排序緩衝 .一個快取線標記及一個偏移量標記 包含該特定指令的該組同時被解碼的 標記識別該組内的哪一指令對應於該 將指令結果儲存到暫存器檔(30)並釋 稱為使該指令”退休”("retiring”)。 理器(10)的各種實施例中採用任何重 被設 〇本 藉 内所 多個 區即 。相 的指 數目 行了 存到 組同 到數 控制 區襟 。該 指 特定 出對 又請 新排 如前文所述,指令保留區(22)儲存指令,直到對應的
583541 五、發明說明(π) 功Mb單元(2 4)執行該等指令為止。係在下列的條件下選擇 一指令以供執行:(i )已提供該指令的運算元;以及(丨i ) 尚未提供在相同指令保留區(22A至22C)内且按照程式順序 係在該指令之前的那些指令之運算元。請注意,當其中一 個功能單元(2 4 )執行一指令時,將該指令的結果直接傳送 到正在等候該結果的任何指令保留區(2 2 ),同時傳送該結 果’以便更新重新排序緩衝區(32 )(通常將該技術稱為” 結果傳送f’(” result forwarding"))。在傳送相關聯的結 果之時脈週期中,可選擇一指令以供執行,並將該指令傳 送到一功能單元(2 4 A至2 4C )。在此例中,指令保留區(2 2 ) 將所傳送的結果繞送到功能單元(2 4 )。 ^ 在一實施例中,係將每一功能單元(24A至C)的組態設 ^成執行加法及減法的整數算術運算以及移位、旋轉、邏 輯運算、及分支作業。請注意,亦可採用浮點運算單元 (圖中未示出)來進行浮點運算。該浮點運算單元可以一協 同處理器之方式工作,自單元()接收指令,然後與 f新排序緩衝區(32)交換訊息,以便完成該指令。此外, 可將功能單元(24)的組態設定成執行位址產生,以供載入 /餘存單元(26)所執行的載入及儲存記憶體作業。 f 一個功能單元(24)亦將與有條件分支指令的執行有 關的資訊提供給分支預測單元(丨4)。如果分支預測是不正 確的’則分支預測單元(1 4)清除在該錯誤預測的分支之後 ^已進入指令處理管線之各指令,並自指令快取記憶體 1 6)或主記憶體提取所需的指令。請注意,在此種情形
92l07.ptd 第21頁 583541 五、發明說明(18) —— 中 9 棄了原始程式序列中在該錯誤預測的分支指令之後 ^ ^的指令結果,其中包括已經過推測式執行且暫時儲存 入/儲存單元(26)及重新排序緩衝區(32)的那些指令 結果。 壯專2果正在更新暫存器值,則將功能單元(24)所產生的 :鐵$达到重新排序緩衝區(32),而如果記憶位置的内容 诗,則將該結果傳送到載入/儲存單元(26)。如果要 緩=d儲存在暫存11,則當將該指令解碼時,重新排序 外右二L )將該結果儲存在保留給該暫存器的值之位置。 ;健有存複Λ個f果匯流排(38),…功料元(24)及載入 =果、…來識別所執行的指令之重新排序緩衝區標的 載入/儲存單元(26)提供功能單元 憶體(28)間之一介面。在—實施 )”貝枓快取纪 (26)的組態被設定成且有.、 入/儲存單元 儲存緩衝區具有位;載;=緩衝區,該載入/ 儲存之資料及位址資訊H緩理的載入或 單元(18)必須等候到载入/ 已填滿時,指令對準 的載入或儲存要求資訊之空門子為早;° (I6)有了可供待處理 也執行載入記憶體作業對待=儲儲存單元⑽ 性檢查,以便確保資料的一 —5隐體作業之相依 (1 0 )與主記憶體子系統間之 f、體作業是在處理器 利用記憶體中儲存的運算元的々人寿。記憶體作業可能是 日7之結果,記憶體作業也
五、發明說明 可能是引 存指令之 如區段暫 有關的其 元。 在一 以推測方 存#己憶體 到所預測 在該儲存 該儲存記 可以推測 同快取線 後來因分 存作業, 注意,可 量的推測 資料 暫時性地 間轉移之 路組關聯 量。與指 採用路預 態來實施 (19) 發資料 結果。 存器及 他暫存 實施例 式執行 作業, 的路中 記憶體 憶體作 方式執 在更新 支錯誤 則可將 將載入 式執行 快取記 儲存在 資料。 式結構 令快取 測機制 資料快 ::但並未引發任何其他作業的載入/儲 :χ外’载入/儲存單元(26)可包含用於; @ 理^架構所界定的位址轉換機制 等的特殊暫存器之—特殊暫存器儲存單 :,載入/儲存單元(26)之組態被設定 但:δ己憶體作業。可按照程式順序執行儲 7如::儲存記憶體作業以推測方式儲存 作举S =路是不正確的,則隨即將 業到正確的路。在另-實施例中,: 仃儲存作業。將推測式執行的儲 之前的,貝置入一儲存緩衝區 j 或異常狀況而捨棄該推測式執行 該快取線還原到該緩衝區中儲存的值。j 儲存單元(26)之組態設定成執行任何數月 其中包括沒有任何推測式執行。 =體(2 8 )是一種高速的快取記憶體,用以 载入/儲存單元(2 6 )與主記憶體子系統之 ^ 一實,例中,資料快取記憶體(28)在八 ▲ /、有隶多可儲存64k位元組資料的容 "己憶體(16)類似,資料快取記憶體(28)可 二我們當了解,可以各種特定的記憶體組 "己隐體(2 8 ),這些组態包括組關聯式組
583541 五、發明說明(20) 態及直接對映式組態。 在採用x8 6微處理器架構的微處理器(1 〇 )之特定實施 例中,指令快取記憶體(1 6 )及資料快取記憶體(2 8 )是被線 性定址的。係利用指令所指定的偏移量及X 8 6位址轉換機 制的區段部分所指定的基址而形成該線性位址。或可將線 性位址轉換為實體位址,以便存取主記憶體。X 8 6位址轉 換機制的記憶頁部分指定了該線性位址至實體位址的轉 換。請注意,線性定址的快取記憶體儲存線性位址標記。 可採用一組實體標記(圖中未示出),以便將線性位址對映 到實體位址,並偵測轉換別名。此外,該實體標記區段可 執行線性位址至實體位址的轉換。 元及指令快取記態 如前文所述,可將諸如Intel 8249 1 /82492快取記憶 體SRAM等的被數繼承用來作為微處理器的外部快取記憶 體之^許多纪憶體裝置之組態設定成儲存同位資訊。在一實
一個同位位元。假 則一個0 1 1 0 1 〇 1 12的資料位元組將 ,因而觸發的位元之總數是偶數。 位位元’然後將該同位位元連同資 快取§己憶體。當微處理器自該快取 該微處理器可計算所觸發的資料位 。如果所得到的值不符合所選擇的同 墙誤,且該微處理器可採取適當的行 1己憶體錯誤的訊息通知作業系統。其
第24頁 583541 五、發明說明(21) 他的記憶體裝置可將額外的位元分配給錯誤檢查及校正 (Error Checking and Crrection ;簡稱gee)。 雖然諸如伺服器等的高階系統通常支援同位檢查及 ECC ’但是許多中低階系統的設計者會因為發生資料·錯誤 的機率較低,而選擇不啟動這些特殊功能。在這些系統 中’可將第一階快取§己憶體中的同位位元及e c c位元用來 儲存預先解碼資訊。此種方式可以在不需要系統層級上的 廣泛硬體改變之情形下,有利地提昇效能。 現在請參閱第4圖,圖中示出預先解碼單元(12)及指 令快取記憶體(1 6 )的一實施例之細節。在該實施例中,預 先解碼單元(1 2 )係經由匯流排介面邏輯電路(52 )而耦合到 快取記憶體(50)。快取記憶體(50)包含一低存取時間的寬 頻記憶體,該記憶體係設於與微處理器(丨〇 )相同的石夕晶片 上,或設於耦合到附近(例如,在子卡上、或在接近微處 理器(1 0 )的主機板上)的獨立矽晶片上。快取記憶體(5 〇 ) 可包括靜態機存取記憶體(static Random Aeeess Memory ;簡稱SRAM)、同步動態隨機存取記憶體 (Synchronous Dynamic Random Access Mem〇ry;簡稱 SDRAM)、或其他類型的低存取時間記憶體。快取記憶體 (5 0 )可設於與微處理器(1 〇 )相同的矽晶片、或獨立的矽晶 片上。在某些實施例中,可將快取記憶體(5 〇 )稱為"第二 階快取§己憶體,這疋因為該快取記憶體是第二最接近微 處理器(1 0 )的功能單元之快取記憶體,亦即,在第一階指 令快取記憶體(16)及資料快取記憶體(28)之後。亦可將快
92107.ptd 第25頁 583541 五、發明說明(22) 這是因為該快取記 取記憶體(50)稱為"外部快取記憶體 憶體是在微處理器的外部。 " 器、收 快取記 傳輪之 例中, 不需要 理器 接近, 及快取 形下相 分支預 址經由 匯流排 憶體 將預定 由匯流 而傳送 未被儲 組態被 匯流排介面邏輯電路(52)可包含多工哭 發器、驅動器、或可起動或者改善 ;⑴緩: 憶體(5〇)間之資料信號、位址信號、及控;= 任何其他類型的匯流排介面邏輯電路。在竿的 在微處理器(1〇)與第二階快取記憶體 有任何匯流排介面邏輯電路(52)。例如,如二^ = (10)及第二階快取記憶體(5〇)在實體上是充,微, 且其輸出電晶體的驅動能力夠高,則微處理目 記憶體(50)可在無須匯流排介面邏輯電 w 互耦合。 的情 抑預先解碼單元(12)之組態被設定成:接收 測單元(1 4)預先提取的指令位址,並將該等指令位 匯流排(6 8 )、匯流排介面邏輯電路(5 2 )、及記惊體 (5 6 )而傳送到快取記憶體(5 〇 )。如果第二階快取記 (5 0 )正在儲存對應於所要求位址之指令位元組,則 數目的指令位元組(例如,快取線的3 2個位元組)經 排(5 6 )、匯流排介面邏輯電路(5 2 )、及匯流排(6 8 ) 到預先解碼單元(1 2 )。如果所要求的指令位元組並 存在第二階快取記憶體(5 〇 ),則快取記憶體(5 0 )之 設定成自主記憶體子系統擷取所要求的指令位元組。一旦 自主記憶體子系統傳送了所要求的指令位元組之後,即將 該等指令位元組傳送到指令快取記憶體(1 6)。亦可將該等
921〇7.ptd 第26頁 583541 五、發明說明(23) --- 指令位元組儲存在快取記憶體(5 〇 )中。 當預先解碼單元(12)接收到所要求的指令位元組時, 即位每一指令位元組產生預先解碼資訊。在該圖所示的 施例中,預先解碼單元(12)位每—指令位元組產生—起始 位元。假設預先解碼單元(12)回應—要求位址之輪出而^ 收3 2個位兀組(例如一快取線),則可將預先解碼單元 (1 2 )之組態設定成:為每一指令位元組產生一個起始位 元’因而總共產生32個起始位元。一旦產生了起始位元 之後’即將該等起始位元傳送到指令快取記憶體(丨6 ),且 將該等起始位元連同其相關聯的指令位元組儲存在指令快 取記憶體(1 6 )。可局部地將指令快取記憶體(丨6 )組織成複 數個快取線儲存位置(64)及複數個預先解碼資訊儲存位置 (62)’其中一預先解碼資訊儲存位置對應於每一快取線儲 存位置。亦可將該等指令位元組及預先解碼位元直 到指令對準單元(18)。 傳送 一旦和令快取§己憶體(1 6 )内的所有快取線儲存位置 (64)被填滿之後,可利用若干種不同的演算法來決定在發 生快取記憶體未命中時應取代哪一快取線。例如,為了減 少在最近的未來將需要用到的資訊被捨棄的機會,可使用 記錄了快取記憶體存取順序的最近最少使用(Least、 Recently Used ’·簡稱LRU)取代架構。當選擇將要蓋寫的 快取線時,將對應的預先解碼資訊儲存位置(6 2)中儲存的 相關聯之預先解碼資訊自指令快取記憶體(丨6)經由預先解 碼單元(12)及匯流排介面邏輯電路(52)而輸出到快取記憶
583541 五、發明說明(24) 體(50)。預先解碼單元 取記憶體資訊之位址。 當快取記憶體(5 0 ) 憶體(1 6 )接收到該等預 記憶體(5 0 )之纟且態設定 應的位址相關聯之同位 中’亦可將指令快取記 指令位元組連同該等預 (50) ’以供儲存。該組 器(1 0 )之某些實施例中 憶體(1 6 )可”監視”儲存 寫指令快取記憶體(1 6 ) 此’則可對指令快取記 行該儲存指令,因而修 中,可將預先解碼單元 修改的指令之預先解碼 先解碼位元寫到指令快 (5〇)之組態被設定成延 cache),則當在指令快 被修改的指令位元組之 改的指令位元級寫到快 在將預先解碼資訊 寫到快取記憶體(5 0 )之 先解碼資訊安全地蓋寫 快 (1 2 )亦傳送對應於被蓋寫的指令 t預先解碼單元(12)及指令快取 先解碼位元及斟旛沾办U 士 取5己 U叹對應的位址時,恤 成將該^先*解碼位元儲存在斑對 位元儲存位置(6〇)。纟某些實施^ 憶體(16)中教要被蓋寫的該等實 ,解碼位元輪出到快取記憶體不 態在支援自行修改程式碼的微處理 可能是有利的。例如,指令快取記 位址,以便決定儲存指令是否將蓋 内儲存的指令位元組。如果確係如 憶體(1 6 )及資料快取記憶體(2 8 )執 改所需的指令位元組。在此種組態 (12)之組悲設定成:重新計算已被 資訊,然後將重新計算出的該等預 取記憶體(1 6)。如果快取記憶體 時寫回式快取記憶體(write-back 取記憶體(16)中蓋寫用來儲存該等 快取線儲存位置時,可將該等被修 取記憶體(5 0 )。 (及在有組態設定時的指令位元組) 後,可以新的指令位元組及新的預 指令快取記憶體(1 6 )内的該快取線
92107.ptd 第28頁 583541 五、發明說明(25) 儲存位置及預先解碼資訊 接收到對已輸出到快取記憶 取或提取要求時,預先解碼 到快取記憶體(5〇)。如果快 應的指令位元組及預先解碼 及預先解碼資訊尚未被取代 組態設定成將該等指令位元 解碼單元(12)。預先解碼單 對應的預先解碼資訊傳送到 記憶體(1 6 )。在該實施例中 的指令位元組產生新的預先 述’當發生分支錯誤預測或 元(24A至C)有停頓的危險時 (1 0 )的某些實施例特別有利 另一方面,如果快取記 上的其他指令位元組取代了 將快取記憶體(5 〇 )之組態設 的位元組,並將該等位元組 將快取記憶體(5 〇 )之組態設 送到預先解碼單元(1 2 )時, 示指令快取記憶體(1 6 )並未 之有效預先解碼資訊。 在另一實施例中,控制 (5 0 )’並將一特定使無效序 存位置。當預先解碼單元(1 2 ) 體(5 0 )的指令位元組之預先提 早元(12)將所要求的位址輸出 取記憶體(5 0 )仍然儲存該等對 資訊(亦即,該等指令位元組 ),則可將快取記憶體(5 0 )之 組及預先解碼資訊傳送到預先 元(1 2 )可將該等指令位元組及 指令對準單元(1 8 )及指令快取 ’有利之處為可避開為所要求 解碼負§礼之程序。如前文所 快取記憶體未命中,且功能單 ,此種方式可能對微處理器 〇 憶體(5 0 )已經以位於另一位址 所需的該等指令位元組,則可 定成:自主記憶體解取所要求 傳送到預先解碼單元(丨2 )。可 疋成· ¥將該等指令位元組傳 觸發特定的控制信號,以便指 具有所傳送的該等指令位元= 單元(80)可監視快取記憶體 列的預先解碼位元寫到對應於
92107.ptd 583541 五、發明說明(26) 正在被來自主記憶體的新指令位元組取代的一指令儲存位 置(5 8 )之同位/ECC位元儲存位置(6 〇 )。此種方式有效地π s又疋了 π該等新指令位元組的預先解碼資訊之”起始值π。 在該纟且態中,可將快取記憶體(5 〇 )組態被設定成:當預先 解碼單元(1 2)要求對應的指令位元組時,輸出該使無效序 列的預先解碼位元。有利之處為:該該組態中,快取記憶 體(5 0 )可以是一支援同位/ E C C的標準快取記憶體,且無須 以任何方式修改該標準快取記憶體,即可得知正在輸出的 預先解碼位元是有效的或無效的。相反地,亦可將預先解 碼單元(1 2 )之組態設定成檢查其自快取記憶體(5 〇 )接收的 預先解碼位元。如果該等預先解碼位元與預定的使無效序 列相符,則可將預先解碼單元(12)之組態設定成計算新的 預先解碼資訊。如果該等預先解碼位元並不符合該預定的 使無效序列,則可將預先解碼單元(12)之組態設定成將該 等預先解碼位元自第二階快取記憶體(5 〇)傳送到指令快取 記憶體(16)(且於必要時傳送到指令對準單元(18)/解碼單 元(20Α至 C))。 清注思’匯流排(5 6 )及(6 8 )可以是任何方便的容量, 例如16、32、64、或128位元。可將資料、位址、及控制 匯流排多工化,而減少所用的匯流排信號線之數目。在某 些實施例中,可將預先解碼單元(12)及第二階快取記憶體 (50)之組態設定成為所傳送的及接收的位址產生同位位 元。然而,並不需要儲存這些同位位元,且可於傳送每一 位址之後,捨棄這些同位位元。
921〇7.ptd ^30 1 ----- 583541 五、發明說明(27) 在又一實施例中,預先解碼資訊以及起始位元可被預 先解碼單元(12)產生,且被儲存在指令快取記憶體(丨6) 中。例如,用來識別其相關聯的指令位元組是否為指令的 最後位元組之終止位元、以及用來指示其相關聯的指令位 元組疋否為一運鼻碼位元組之運鼻碼位元亦可被預先解碼 單元(1 2 )產生,並被儲存在指令快取記憶體(丨6 )中。視快 取記憶體(50)内可用的同位及(或)ECC位元(60)的數目而 定’當在快取記憶體(1 6 )中取代指令位元組時,可將這些 預先解碼位元的全部或部分傳送到快取記憶體(5 〇)。 在某些實施例中,可將解碼單元(20A至C)之組態設定 成偵測預先解碼單元(丨2 )所提供的或自指令快取記憶體 (16)讀取的預先解碼資訊是否為不正確的。視用來產生預 先解,賁訊的方法而定,可能由於不同的原因而發生預先 解瑪=訊的不正確。當預先解碼資訊是不正確的時,可將 解碼單元(20A至C)組態被設定成在預先解碼單元(12)重新 產生預先解碼資訊時停頓該等解碼單元。然後可將新的預 先解碼資訊寫到指令快取記憶體(16),以便蓋寫該不正確 的預先解碼資訊。在另一實施例中,可將解碼單元(20A至 C)之組態設定成:只須捨棄不正確的預先解碼資訊,並自 行完成解碼。 、 現在請參閱第5圖,圖中示出指令快取記憶體(1 6 )及 快取記憶體(5 0 )的一眘论々μ , 4 貫施例之更多細卽。如前文所述,可 ΪΓ二=己憶體116)之組態設定成具有若干指令儲存位 解碼資訊儲存位置(64)。每一預先解碼資訊
583541 五、發明說明(28) 儲存位置對應於一 中儲存的預先解碼 指令位元組。在該 對應於位置(82)中 如該圖所示, 體(1 6 )相同的指令 (72)要求指令時, 快取記憶體(5 0 )及 第二階快取記憶體 資料。因此,係將 000 0 0 0 0 0···)儲存 該等指令位元組時 數,並繼續計算程 該預先解碼資訊儲 (80) 〇 當首次要求程 的程序。然而,一 碼區段(78)的該等 寫回到第二階快取 果在指令快取記憶 且在第二階快取記 前’再度要求程式 程式碼區段(78)之 該等指令位元組及 個指令 資訊對 圖所示 儲存的 快取記 位元組 可自主 指令快 (5 0 )將 預定的 在位置 ’預先 式石馬區 存在指 式碼區段(7 8 )中的指令時 旦在指令快取記憶體(1 6 ) 指令位元組之後,該預先 記憶體(50),且被儲存在 體(16)中取代了程式碼區 憶體(5 0 )中取代了程式碼 碼區段(7 8 ),則可自位置 該等指令位元組及預先解 預先解碼資訊儲存在指令 儲存位置。例如,儲存位置(8 〇 ) 應於指令儲存位置(82)中儲存的 之實施例中,儲存位置(8 〇 )儲存 每一指令位元組之起始位元。 憶體(50 )可儲存與指令快取記憶 。例如,當首次向程式碼區段 記憶體將該等指令讀取到第二階 取記憶體(1 6 )。然而,請注意, 沒有程式碼區段(7 2 )之預先解碼 使無政吊數(在此例中為 (90)。當預先解碼單元(12)接收 解碼單元(1 2 )將偵測該使無效常 段(72 )之預先解碼資訊。然後將 令快取記憶體(1 6 )内的儲存位置 ,將進行相同 中取代了程式 解碼貢訊即被 位置(94)。如 段(78)之後, 區段(78)之 (94至96)讀取 碼資訊,並將 快取記憶體
第32頁 583541 五、發明說明 (16)。此 雖然 數,但是 元(12)產 假設最大 組,則預 令位元組 選擇一個 為該使無 先解碼單 效常數時 (29) 種狀態係 可將任何 在某些實 生的一預 的指令長 先解碼單 且不含至 包含3 2個 效常數可 元(1 2 )所 ,可能發 示於該圖。 作為一使無 可能被預先 是有利的。 取線長度是 到具有3 2個 一快取線。 是有利的, 作業之次數 元等於預定 業。如果發 效常 解碼單 例如, 32位元 連續指 因此, 這是因 。當預 的使無 生此種 預定序列的位元用來 施例中,選擇一個不 先解碼位元序列可能 度是1 6位元組且一快 元(1 2 )將不可能接收 少一個起始位元組之 零的使無效常數可能 減少不正確的使無效 計算出的預先解碼位 生一錯誤的使無效作 情形’則將捨棄自快取記憶體(50 )讀取的原始預先解碼位 元’並可計算新的預先解碼位元,而且縱使原始的預先解 碼位元是正確的,是如此執行。 在一實施例中,可單獨在微處理器(1 0)内實施前文所 述的該等特徵。例如,控制單元(8 0 )的功能可被省略,或 被包含在微處理器(1 0 )内。同樣地,在某些實施例中,匯 流排介面邏輯電路(5 2 )亦可被省略,或被包含在微處理器 (10)内。完全在微處理器(10)内實施前文所述的該等功能 時,可有利地降低實施一用來儲存前文揭示的預先解碼資 訊的電腦系統之成本。在其他的實施例中,可將所需的該 等功能分佈到微處理器(1 0)以及一個或多個介面或支援晶 片0 現在請參閱第6圖,圖中示出用來將預先解碼資訊儲
92107.ptd 第33頁 583541 五、發明說明(30) 存在第二階快取記憶體(5 0 )的方法的一實施例之流程圖。 在步驟(1 4 0 )中,首先向指令快取記憶體(1 6 )要求指令位 元組。如果在步驟(1 4 2 )中決定所要求《ν u 彡且货、怖·什在 指令快取記憶體(丨6 )内,則在步驟(1 5 2 )中將該等位元組 連同其對應的預先解碼資訊傳送到指令對準單元(丨8)及解 碼單元(20A至C)。另一方面,如果在步驟(142)中決定所 要求的指令位元組並未被儲存在指令快取記憶體(丨6 )内, 則在步驟(1 44 )中將所要求的位址傳送到第二階快取記憶 體(50)。如果在步驟(146)中決定所要求的指令位元組^ 未被儲存在第二階快取記憶體(5〇 ),則在步驟(丨48)中自 主圯隱體子系統讀取該等指令位元組。當在步驟(Η $)中 自主記憶體子系統接收到所要求的指令位元組時,在步驟 (150)中將該等指令位元組連同使無效常數儲存在 快取記憶體(5 0)。如前立所;十、,# μ & l也 ^ ^ U, ^ J如刖文所述,該使無效常數有效地設定 f rV, 5〇)内㈣先解碼資訊儲存位置之起始 值…將應產生新的預先解碼資訊 == 單元(12)。當預先解满留—μ — 土 成心通知預先解碼 田頂无解碼早t (1 2 )在步驟(i 54 )中接 等指令位元組及預先解碼位元時,即在步驟丨= 該等預先解碼位元,以便決定該等 碼 - 該使無效常數。如果在步驟(156)中解m疋否等於 元等於該使無效常數,_疋該等預先解碼位 在步驟。⑷中產生新:預預先先解解:資早 中,將該等指令位元相爲預4先解馬貝讯。然後在步驟(158) 取記憶體(16)。如果在牛斤的預先解碼資訊儲存在指令快 果在步驟(16〇)中決定儲存該等指令位
發明說明(31) 五 元組及嚭 内先前二ΐ預先解碼資訊必須要取代指令快取記憶體(16) 叢宜从ί存的快取線,則在步驟(166)中將對應於正在被 2的該先前儲存的快取線之預先解碼 儲存到第二階 快取記憶體(5 0)。 涉及 清注意,此處以循序的方式描述該圖中之該等步驟指 示為了解說的目的。其他的實施例是可能的且可被考慮 的。可合併或平行地執行前文所述的若干步驟。例如 平行地執行步驟(1 5 0 )及(1 5 4 )。此外,如前文所述, 使無效常數的使用之該等步驟都是可供選用的。 立及(或 訊 前文所述該等實施例的一個缺點在於:第二階快取記 憶體中儲存的指令及資料位元組無法免除因同:及(或) ECC (錯誤檢查及校正)位元被用來儲存預先解碼資訊而虞 生的單一及多個位元錯誤。然而,在某些實施例、中,吁修 改前文所述的方法及系統,以便對第二階快取記憶體中儲 存的資料位元組及指令位元組提供對單—位元 錯誤的至少某些保護。 5 現在請參閱第7A圖,圖中示出 存在第二階快取記憶體同時也保護所锶无解碼貝*反 X … 曼所健存的資料位元,組及 指令位元組不會有早一及多個位元錯誤的一系個此 種實施例。通常將:取記憶體之组態 二般 俠 的指令位元 體(16)中的每-快取線可儲存對存指令快取記憶 92107.ptd 第35頁 583541 五、發明說明(32) (184A)之一同位位元(180A)及預先解碼資訊(182A)。如參 照前述的實施例而說明的,預先解碼位元(182A)提供與指 令位元組(1 84A)有關的資訊(例如,起始位元組、終止位 元組、及運算碼位元組資訊)。如前文所述,可將預先解 碼位元(1 8 2 A)用來減少將指令位元組(1 8 4 A)解碼所需的時 間。例如,可將指示指令位元組(1 8 4 A)内的起始位元組及 終止位元組的預先解碼位元(1 8 2 A)用來迅速地對準指令位 元組(184A)内的各指令。可根據預先解碼位元(182A)及指 令位元組(1 8 4 A )之總和,而計算同位位元(1 8 0 A ),以便產 生偶數同位或奇數同位。在另一實施例中,可只根據指令 位元組(184A),而計算同位位元(180A)(亦即,提供只偵 測指令位元組(1 84A)内的奇數之位元錯誤的能力)。在該 實施例中,有可能將更多的保護提供給指令位元組 (184A),而預先解碼位元(182A)則未受到保護。此種方式 在預先解碼位元(1 82A)只是預測性的實施例中是可接受 的。例如’可能稍後會決定預先解碼位元(182A)是無效 的。 可將資料快取記憶體(2 8)之組態設定成具有若干快取 線。每一快取線可具有其本身一組的資料位元組(1884)及 對應的ECC位元(186A)。如前文所述,可選擇ECC位元 (186A) ’以便可偵測資料位元組(188A)内的單一及某些多 個位元錯誤。在某些實施例中,亦可根據可偵測並校正單 一位元錯誤的一演算法而選擇ECC位元(186A)。 在本文的用法中,ECC資訊意指錯誤校正碼資訊。在
叫541 五 數S明H(?3) 示資訊。1係七一進位格式(亦即若干-及零)來表 位資訊儲K 位巧自—點傳送到另-點,或將二進 如,可ϊϊί「記憶體% ’必然有發生錯誤的機會。例 個~。二闵:一當作一個•’或者可能將-個零當作-良、老Πϊ體缺陷、電子雜訊、元件故障、連接不 解釋一個你-D *、其其他因素而造成此種錯誤。當錯誤地 是偵剛兮望二B 、,即疋f生了 一個"位元錯誤"。錯誤校正 軟體來热—的程序。可以硬體或 行高資斜:< 校正,但是最好是以特殊用途的硬體來執 常是太悍2輸速率的錯誤校正,這是因為軟體解決方案通 發生嚴二+由於記憶體元件密度及工作頻率增加,所以 校正多個位元錯誤的機率也可能增加。因此,錯誤 統中馬^支援可能變得更為重要。例如,在某些可攜式系 靠錯誤β於可大幅減少記憶體更新的速率,因而現在也要 為.^父正碼來大幅延長系統的電池使用時間。有利之處 的系1 Ϊ ^若干種不同的ECC演算法來實施本發明所揭示 構、'及ί ί ΐ °演算法的特定選擇可能取決於記憶體結 實施例中,=存ECC資訊之位元數。又請注意,在某些 成為ECC寅笪\ CC位元(186A)及資料位元組(USA)合併 n肩异法的一部分。 統中的單2用法+,同位檢查是—種用來偵測記憶體系 通常為每一位疋之基本方:。支援同位檢查的記憶體 仁疋其他的組態也是可行的。該額外的位元是用以可
583541 五、發明說明(34) 進行錯誤偵測之資訊。該系統記憶體中儲存的每一位元組 之資料包含八個位元的實際資料,而每一位元是一個一或 一個零。因此,可以算出一位元組中的零或一之總數。例 如,位元組1 0 1 1 0 0 1 1具有三個零及五個一。位元組 00100100具有六個零及兩個一。因此,某些位元組將有一 偶數的一,且某些位元組將有一奇數的一。當起動同位檢 查時,每當將一位元組寫入記憶體時,被稱為同位產生器 /檢查器的邏輯電路即檢查該位元組,並決定該資料位元 組具有偶數的或奇數的一。如果該資料位元組具有一偶數 的一,則將第九(或同位)位元設定為一個一,否則,將該 第九位元設定為一個零。其結果即是:不論原始八個資料 位元中有多少個一,當一起檢查所有九個位元時,必然是 奇數的一。此種實施例被稱為”奇數同位”。也可具有偶數 同位,此時該同位產生器/檢查器將使總和必然成為偶 數。 當自記憶體讀回資料時,該同位電路此時係用來作為 檢查器。該電路讀回所有的九個位元,並決定是否有一奇 數或偶數的一。如果有一偶數的一,則在一奇數的該等位 元中必然有一錯誤。這就是同位記憶體用來偵測單一位元 錯誤的方式。該同位產生器/檢查器將可決定有一個位元 是錯誤的,但是與前文所述的ECC例子不同,該同位產生 器/檢查器並無法決定哪一位元是錯誤的。有利之處為: 可以與記憶體的讀取及寫入作業平行之方式來執行同位產 生及檢查。因此,同位產生及檢查不會減緩該記憶體系統
92107.ptd 第38頁 583541 五、發明說明(35) 的作業。 在某些實施例中,亦可以平行的方式執行錯誤檢查及 校正碼。在其他的實施例中,可以循序作業之方式來執行 錯誤檢查及校正,因而將稍微減緩系統作業,這是因為需 要有可讓錯誤檢查及校正電路來校正所偵測到的任何錯誤 之時間。然而,此種延遲係取決於記憶體架構實施例,且 可能是較緩慢的(例如,慢了百分之二至三)。 請再參閱第7 A圖,在一實施例中,可將資料快取記憶 體(2 8 )之組態设疋成組關聯之方式。因此,每一組可包含 對應於一行的若干個"路”。ECC位元(186A)可對應於特定 快取線中之資料(亦即,單一行與列或單一路間之交叉)。 亦可以用類似的方式設定指令快取記憶體(丨6 )之組態。因 此’扎令快取記憶體(1 6)中的每一快取線可以有其本身的 一組同位位元及預先解碼位元(18〇A)及(182A)。在某些實 施例中’可在處理器(丨〇 )的晶粒上實施第二階快取記憶體 (5 0 ) °有利之處為··此種方式可讓第二階快取記憶體(5 〇 ) 在與處理器(10)相同的頻率下工作。 — 在一實施例中,可將第二階快取記憶體(5 0 )之組態設 定成一個π内容獨有式”快取記憶體,此種内容獨有式快取 記隐體只存放有將因發生衝突的未命中而要被寫回到記憶 體子系統的被捨棄之或複製回之快取區段。這些術語,,被 捨棄的"(n victimized")或”複製回的”(” c〇py — back”)意指 先前係存放在第一階快取記憶體(亦即指令快取記憶體 (16)及資料快取記憶體(28))但必須被蓋寫(被捨棄的或被
92107.ptd 第39頁 583541 五、發明說明(36) 逐出的)以便騰出空間給較新的資料之快取區段。在一實 施例中,第二階快取記憶體(5 0 )可以是2 5 6 κ位元組,而指 令快取記憶體(1 6 )及資料快取記憶體(2 8 )可以分別是6 4 Κ 位元組’因而將總共384Κ位元組的專用儲存空間提供給處 理器(1 0)。凊注意,這些快取記憶體容量只是舉例,且視 處理器(10)的確切實施例而定,其他的容量也是可行的。 同樣地’可將第二階快取記憶體(50)實施為在處理器(1〇) 之外的晶片上。在其他的實施例中,可將第二階快取記憶 體(5 0 )實施為”内容溫含式”快取記憶體,此種内容藏含 快取記憶體包含指令快取記憶體(丨6 )及資料快取Υ憶^工 (28)中所有資料的一份拷貝。此外,在某些實施例 令快取記憶體(1 6 )及資料快取記憶體(2 8 )可以古丁 曰 董。在某些實施例中,亦可將第二階快取記憶體 2 = 為一組關聯式快取記憶體。 j T施 如該圖所示,一旦指令快取記憶體(丨6 )中的一〜 取線需要儲存新的指令位元組時,則先前預先解^特疋快 位元組(182A)及(184A)即”被捨棄”。因為第二碼的指令 體(5 0 )可儲存:(a )具有預先解碼資訊及同彳立資%快取記憶 位元組、或(b)具有ECC資訊之資料位元組,的指令 指示位元(例如程式碼指示位元(丨9 〇 ,以便_ _可錯存一 型的資訊被儲存在該第二階快取記憶體中。解曰少不何❶種類 (316)可利用指示位元(19〇)來選擇來自同位檢器 (314)或錯誤檢查及校正單元(312)的輸出作為^單 ( 320 )。亦可將解多工器(316)之組態設定 :、1出 •回應自同伋
583541 五、發明說明(37) 檢查單元(314)或錯誤檢查及校正單元(312)接收到一個錯 誤指示,而觸發或輸出一個錯誤中斷信號(3 1 8)。例如, 如果同位檢查單元(314)決定已發生了一同位錯誤,則可 將解多工器(316)之組態設定成觸發中斷信號(318)。同樣 地’可將解多工器(316)之組態設定成:回應來自錯誤檢 查及校正早元(312)的一對應的錯誤信號,而觸發錯誤信 號(318)。如該圖所示,可將錯誤檢查及校正單元(312)之 組態設定成接收ECC位元(186B)及資料位元組(188B)。 可將同位檢查單元(3 14)組態被設定成接收同位位元 (180B) '預先解碼位元(182B)、及指令位元組(184B)。如 前文所述,可決定預先解碼位元(182β)及指令位元組 (18 4Β)中被觸發位元的數目,而產生同位位元(18〇β)。如 該圖所示,指示位元(190)及(192)可指示指令碼或資料位 疋組被儲存在第二階快取記憶體(5 〇)的對應之快取線中。 可將解多工器(31 6)之組態設定成接收指示位元或資料類 型位元(170)(例如位元(190)及(192)),以便選擇來自同 位檢查單元(314)或ECC單元(312)之輸出。 如該圖所示,可針對指令快取記憶體(丨6 )中之每一快 取線而儲存一個同位位元(18〇A)。例如,可將同位位元、 (一 180A)用來指示快取線(3〇〇)之同位。同樣地,可將位 兀(1 8 6 A)用來把錯誤檢查及校正提供給資料快取記 (28)中的快取線(302 )内之資料位元組(188A)。雖秋^圖 取記憶體(50)示為直接對映式快取記憶體 疋亦可將第二階快取記憶體(50)實施為具有多個行或,路^
583541 五、發明說明(38) 的組關聯式或完全關聯式快取記憶體。如該圖所示,可回 應正在寫入指令快取記憶體(1 6 )及資料快取記憶體(2 8 )的 新資料蓋寫了(亦即捨棄了)該資料,而將第一階快取線 ( 30 0 )及( 302 )寫到第二階快取記憶體(5〇)。 雖然該圖中並未示出,但是亦可將同位檢查單元 (3 1 4 )用來檢查自指令快取記憶體(丨6 )讀取(亦即,包括讀 取被傳送到該處理器的指令對準單元、解碼單元、及執行 單元之指令,並包括讀取將被傳送到第二階快取記憶體 (5 0 )的被捨棄之指令)的同位。在另一實施例中,可實施 同位檢查單元(3 1 4 )的另一實例,以便提供該功能。同樣 地,亦可將錯誤檢查及校正單元(312)(或其另一實例)用 來執行自資料快取記憶體(28)讀取的錯誤檢查及校正。 在一實施例中,可以兩個部分來實施第二階快取記憶 體(5 0)’其中每一部分儲存不同類型的資訊。例如,可將 第二=快取記憶體(5 〇)的該第一部分之組態設定成唯一地 儲存指令位元組以及對應的預先解碼位元及同位位元。可 將第一階快取記憶體(5 〇)的該第二部分之組態設定成唯一 地儲存資料位元組及ECC位元。有利之處為:第二階快取 記憶體的該實施例有可能減少儲存資料類型位元(丨7〇 )(例 如,式碼位元(190)及資料位元(192))之需求。然而,當 執打具有不同的指令位元組與資料位元組間之比率的不同 程式時,此種類型的組態有可能會降低第二階快取記憶體 (50)的效率。請注意,可識別該資訊來自第一階快取記憶 體的哪一部分(亦即,來自指令快取記憶體(16)或資料快
第42頁 583541 五、發明說明(39) 憶體(28)),而產生資料類型位元(17 ::快:取記憶體U6)的資訊可自動接收用來指示該資= ;;2二資訊之資料類型位元。同樣地,來自資料快取記憶 )=將要儲存在第三階快取記憶體(5〇)的資訊可自動 元(192))指示該資訊是資料之資料類型位元(例如資料位 ,在請參閱第则,圖中示出用
位疋組及預先解碼資訊的系統之另一 tzZ 中,同位資邙祐去址冲六—此 實施例。在該實施例 ECC資在指令快取記憶體(丨6)中,且 ECC貝讯並未被儲存在資料快取記憶 =也)減:用來實施指令快取記憶體(丄及資二 憶體(28)所需之晶粒空間。相, 叔:决取j 頡出貝料位元組(188A)並將資料位元組(18、8广、—() ::口體(50)時,可將第二階快取記憶體之 ΐΐίίΓ二組,A)之ECC位元。該系統的其餘V分 J /、昂ί A圖所不實施例類似之方式作業。 刀 的方圖,圖中示出用來儲存預先解碼h 二取,在該實施例中,☆步驟(24。)中開: 中,回應該提ί Τ = =組。在步驟(242)。 和“…己憶體是否儲存了所需的指令位元組。讀 邪果相令 92107.ptd
第43頁 583541 五、發明說明(40) 快取記憶體的確儲存了所需的指令位元組,則在步驟 (2 5 2 )中自指令快取記憶體讀取該等指令位元組及對應的 預先解碼資訊。此種情形被稱為指令快取記憶體命中11, 且通常是較佳的,這是因為指令快取記憶體通常具有比記 憶體系統較短的延遲時間。然而’如果指令快取記憶體中 並未儲存所需的指令位元組,則可在步驟(244)中向第二 階快取記憶體要求該等指令位元組。如前文所述,在某些 實施例中,可再予處理器及第一階快取記憶體曰'二 或晶粒上實施該第二階快取記憶體。如 、曰曰 決定該第二階快取記憶體中I未儲存所需^驟(246)中 步驟(248)中自主記憶體讀取該等指令位=資訊,則可在 位資訊。如熟習此項技藝者所了解的,可 <、、且及對應的同 取記憶體以外的額外階層之快取記憶體,=有該第二階快 系統的一部分。在某些實施例中,可將診=為主記憶體子 之組態設定成支援同位資訊或ECC。例如^記憶體子系統 體子系統之組態設定成儲存寫到主記憶體可將該主記憶 取的資料之同位位元及ECC位元。然而‘、、,發及自主記憶體讀 中,該主記憶體子系統可以 其他的實施例 ECC資訊。 支杈同位資訊及(或) ^ 、在某些實施例中,可將該第二階 疋成儲存該第—階快取記憶體中的所有次°己憶體之組態設 貝:在這些實施例中,可將自主記憶體;ί之一複製拷 =組連同一同位位元、一指示位元(例如%次取的該等指令位 以及尚未針對該等指令位元組產生 貝枓類型位元)、 頂先解碼位元之使無
叫541 明說明(41) 等:ί ΐ存到該第二階快取記憶體。如果苹已產生了’箱 寻无解碼位元,或去一 杲已產生了該預 ;;可在步驟(2 5 0 )中將該—等預^解^ 了位H預/解碼/元, ;取記憶體,而蓋寫該使/效先常解數碼位;存到該第二階 在其他的實施例中,# — I、 數。然而,如前文所述, 有式快取記憶體",因口一/%快取記憶體可以是”内容獨 被捨棄的資訊。在這些實施存來自第一階快取記憶體的 可以不將自主記憶體ί “」 程序的此時點上, 第二階快取記憶體:!::取的該等指令位元組儲存到 令位元組之後,可將一:赤夕§己憶體子系統接收到該等指 成在步驟(252)中產生今等W個預先解碼單元之組態設定 在支援對自主記隐體丄位;1組之預先解碼位元。 例中,可將#褚4鈕‘"貝取的貝讯進行同位檢查之實施 在步驟(254) t檢查同位以便確你^早70 )之、、且態設定成 了資料。請注Up 主記憶體正確地接收
產生對應的預先解上工:J該=解碼單J 只扣 果有一錯誤,則可將該預弁解瑪單;々組熊 在步驟(25 6 )中將錯誤信號或中斷出發到處疋理之器, 自主;口二:查並未指不錯誤’則可在步驟(258 )中檢查 I預ΪΪ 取的該等預先解碼位元,以便決定該 等預先解碼位元是否等於該使無效常數 =果該等預先解碼位元等於該使無效常數,則可將該 =碼单元之組態設y在步驟(26 解竭…如果該等預先解碼位元不等於該使無效常數, 92107.ptd 第45頁 583541 五、發明說明(42) ---—______ 則可將該預先解碼輩分+ Λ 等指令位元組及】C定成在步驟(262)中將該 記憶體。請注意,I竿此:預先:碼位70儲存到指令快取 憶體之組態設定成儲存 將該私令快取記 組,並將該等指令:取:己憶體讀出該等指令位元 (亦即,於被捨棄時子到第:階快取記憶體之後 - m νμ 产甘L 產生該等指令位元组之同你你 兀。因此,在某些實施例中, < Π位位 體執行同位檢查。在其他叮二十對苐一 1¾快取記憶 憶體(亦即第一階快取記恢、' 施例可針對指令快取記 位檢查。此外,在某此者…—)及第二階快取記憶體執行同 統執行同位檢查。/、二灵施例中,亦可針對主記憶體子系 如果該等預先解碼位 預先解碼單元之組離 於該使無效常數,則可將該 元組、該等預先解碼位元成在步驟t262 )中將該等指令位 憶體。如果立即需要該資及同位貢訊儲存到指令快取記 供給該等解碼單元,以供^,則亦可將該等指令位元組提 驟( 264)中蓋寫或捨棄指/、入^理。在稍後的時點上,玎在步 令位元組及預先解碼資訊Y對取記二 中,可在步驟(2 6 6 )中將炎ώ應之、為。在此種情形 資訊及指令位元組連同一指令快取記憶體的預先解碼 元儲存到第二階快取記憶體了的同位位元及一資料類漤位 現在請參閱第8Β圖,R 1 一 位元組的方法之一實施㈤、,不出用來處理被捨棄的資料 施例。I先,載人/儲存單元 < 在梦 92107.ptd 第46頁 583541 五、發明說明(43) 中要求或提取資料位元組。作為該 口P刀,可在步驟(372 )中檢查第一 序的一 取記憶體,以便決定該快取記憶體中、3取§己二體或資料快 料位元組。如果資料快取記憶體中儲:了該::的資 組,則可在步驟(3 7 4 )中自杳%I Mr 、料位元 J隹7驟U74)中自貝枓快取記憶體讀取該 位:組以及其對應的ecc資訊。然而,如果資料快u =未儲存該等所需的資料位元組,則可在步驟取(;己: 中向=二階快取記憶體要求該資料。如果在步驟(37 ) 決定弟二階快取記憶體中並未儲存該資料,則可在步中 (3 8 0 )中自主記憶體讀取所需的資料位元組。 一 如岫文所述,與參照第8A圖所述之同位資訊類似, ECC資訊可被下列的方式支援:(〇只在第二階快取記憶體 中支援ECC資訊;(b)在第一階快取記憶體及第二階快取記 憶體中支援E C C資訊;或(b)在第一階快取記憶體、第二階 快取記憶體、及主記憶體子系統中支援ECC資訊。其他的 組合也是可行的(例如,只在主記憶體子系統及第二階快
取記憶體中支援ECC資訊)。對於支援來自主記憶體的ECC 資訊之實施例而言,一旦自主記憶體子系統接收到該等資 料位元組之後,即可在步驟( 382)中檢查對應的ECC資訊。 如果該資訊是錯誤的’則該錯誤檢查及校正單元可嘗試校 |正該錯誤。如果該錯誤是無法校正的,則可在步驟(384) 中通知一錯誤。如果該ECC資訊是正確的(或錯誤被校正 了),則可在步驟(386 )中將該ECC資訊連同該等資料位元 組儲存在第二階快取記憶體中,如前文中參照第8A圖所述
92107.ptd 第47頁 583541 五、發明説明(44) 〜------- 的,該例子係假設内容蘊含式第二階快取記憶體。 實施例中,該第二階快取記憶體可以是内容獨有某些 憶體,且在自主記憶體直接讀取的資料在第一階f 、取圮 體中被捨棄之前,可以不將該資料儲存在第二椒=°己憶 體。 U决取記憶 在稍後的某一時點上,可在步驟(392)中捨棄 用來儲存該等資料位元組及ECC資訊的第一階快取=盖寫 此種情形中,可在步驟(36 6 )中將來自資料快取記愔麟在 該等資料位元組連同對應的E C C位元及一資料類型^二的 存到第二階快取記憶體。可將該資料類型位元用A 70 一儲 儲存的資訊是資料及ECC資訊(而不是指令位元組以9不所 資訊及預先解碼資訊)。 及同位 現在請參閱第9圖,圖中示出組態被設定成儲存被捨 棄的指令位元組的預先解碼資訊且仍然對被捨棄的資料位 元組提供同位及(或)ECC保護的一電腦系統之一實施%列。 在該實施例中,處理器(1 〇)包含第一階指令快取記憶體 (16)及第一階資料快取記憶體(28)。處理器(10)亦包含預 先解碼/預先提取單元(12)及載入/儲存單元(26)。如該圖 所示,預先提取/預先解碼單元(12)及載入/儲存單元(26) 可分別包含一同位產生及檢查單元(402)、以及錯誤檢查 及权正早7〇(404)。 在該實施例中,第二階快取記憶體(5 0 )之組態被設定 成具有乾儲存位置(406),而該等儲存位置(406)之組態被 设疋成儲存第二階快取記憶體(5 0)中儲存的對應的位元組
583541 五、發明說明(45) ^ 之同位資訊及(或)ECC資訊。在該實施例中,該電腦系統 亦包含一記憶體控制器(41 〇 )。記憶體控制器(41 0 )可包含 同位單元(4 1 4 ),而同位單元(4 1 4 )之組態被設定成為來自 主記憶體(4 2 0 )的位元組產生並檢查同位。對於支援同位 的實施例而言,可將主記憶體子系統(4 2 0 )之組態設定成 具有用來儲存同位資訊(430)的額外之儲存位置。 在其他的實施例中,記憶體控制器(4 1 〇 )亦可包含錯 誤檢查及校正單元(416),該錯誤檢查及校正單元(416)之 組態被設定成為主記憶體子系統(4 2 0 )中儲存的資訊產生
並檢查錯誤校正碼。請注意,可針對用來在記憶體 (420)、記憶體控制器(410)、與處理器(1〇)之間傳送資訊 的匯流排而產生額外的錯誤檢查及校正資訊。該資訊可以 是本文所述的ECC資訊及(或)同位資訊以外的資訊。如前 文所述,在某些實施例中,可將記憶體子系統(42 〇 )及記
憶體控制器(4 1 〇 )之組態設定成不支援同位資訊及(或)ECC 資訊。亦如該圖所示,在某些實施例中,可將第二階快取 吕己憶體(5 0 )之組態設定成儲存每一快取線之資料類塑位元 (408)。 '
捨棄快取線,並自記憶體(42 0 )讀取對應的指令位元 組(該等指令位元組本身也受到ECC資訊的保護),即可利 用第一階指令快取記憶體(1 6 )中之同位位元來校正所偵測 到的單一位元錯誤。相反地,可修改第一階資料快取記憶 體(28)中儲存的資料,因而不會將記憶體(42〇)中的資料 之原始拷貝用來校正錯誤。因此,在某些實施例中,在資
583541 予'發明說明(46) 一 ----— 取記憶體(28)中設有ECC資訊尤其是有用的,可提供 ^錯誤的替代性機制,以取代自記憶體(420 )複製資料 位7〇組。 系統 現在凊參閱第10圖,圖中示出採用微處理器(1〇)的 腦系統(5 0 0 )的一實施例之方塊圖。在所示系統中,主記 憶體( 504)係經由記憶體匯流排(5〇6)而耦合到匯流排橋接 器( 502 )(該匯流排橋接器(5〇2)可用來作為記憶體控制 器)’且圖形控制器(508 )係經由AGP匯流排(51〇)而耦合 到匯流排橋接器(5 〇 2 )。最後,複數個pc I裝置(5 1 2 A及 5 1 2 B )係經由PC I匯流排(5 1 4 )而耦合到匯流排橋接器 (5 0 2 )。可進一步設有輔助匯流排橋接器(5丨6 ),以便經由 一 EISA/ISA匯流排( 520 )而將電氣介面提供給一個或多個 EISA或ISA裝置(518)。微處理器(1〇)係經由CPU匯流排 ( 5 24)而耦合到匯流排橋接器(5〇2)。 匯流排橋接器(5 0 2 )提供了微處理器(丨0 )、主記憶體 ( 504)、圖形控制器( 508 )、與連接到pci匯流排(514)的各 裝置間之介面。當自連接到匯流排橋接器(5 〇 2)的一個裝 置接收到作業時,匯流排橋接器(5 〇 2 )識別該作業的目標 (例如,該目標是特定的裝置;或者在PC I匯流排(5 1 4 )的 情形中,該目標是在PC I匯流排(5丨4 )上)。匯流排橋接器 (5 0 2 )將該作業傳送到目標裝置。匯流排橋接器(5 〇 2 )通常 將作業自來源裝置所使用的協定轉換為目標裝置或匯流排 所使用的協定。
92107.ptd 第 50 頁 583541 五、發明說明(47) 除了將I S A / E I S A匯流排介面提供給p c I匯流排(5 1 4 )之 外’輔助匯流排橋接器(5 1 6 )可視需要而進一步設有額外 的功能。例如,在一實施例中,輔助匯流排橋接器(5丨6 ) 包含一主PC I仲裁器(圖中未示出),用以仲裁pc丨匯流排 (514)之主控權。電腦系統(500)内亦可視需要而包含在輔 助匯流棑橋接器(5 1 6 )外部或整合到輔助匯流排橋接器 (516)内的輸入/輸出控制器(圖中未示出),以便對一鍵盤 及滑鼠(5 2 2 )以及各種序列埠及平行埠提供作業上的支 援。在其他的實施例中,可在微處理器(丨〇 )與匯流排橋接 器(5 0 2 )之間將一外部快取記憶體單元(圖中未示出)進一 步耦合到CPU匯流排( 524)。在替代實施例中,可將該外部 快取§己憶體麵合到匯流排橋接器(5 〇 2 ),且可將該外部快 取記憶體的快取記憶體控制邏輯電路整合到匯流排橋接器 (502) 。 。 主記憶體(504)是一種用來儲存應用程式且微處理器 (10)執行時所主要使用的記憶體。適用的主記憶體(504 ) 包括動癌、P現機存取記憶體(Dynamic Random Access Memory ;簡稱DRAM),且最好是複數個記憶組的同步 DRAM(Synchronous DRAM ;簡稱SDRAM)。 PCI裝置(512A及512B)代表諸如網路介面卡、視訊加 速器、音效卡、硬碟機或軟碟機或磁碟控制器、小型電腦 系統介面(Small Computer System Interface;簡稱 SCSI)卡、及電話卡等的各種周邊裝置。同樣地,ISA装 置(518)代表諸如數據機、音效卡、及gpib或現場使用
583541 五、發明說明(48) 匯流排介面卡等各種資料擷取介面卡等的各種周邊裝置。 提供圖形控制器(5 0 8 ),以便控制文字及影像在顯示 器(526)上的成像。圖形控制器(508)可包含此項技藝中習 知的典型圖形加速器,以便使可有效地移進及移出主記憶 體(5 0 4 )的三維資料結構成像。圖形控制器(5 0 8 )因而可以 是AGP匯流排(5 1 0 )的一主控裝置,這是因為圖形控制器 (5 0 8 )可要求並取得匯流棑橋接器(5 0 2 )内的目標介面之使 用權,因而可存取主記憶體(5 0 4)。專用的圖形匯流排可 適應自主記憶體(5 0 4 )迅速地擷取資料。對於某些作業而 言,可將圖形控制器(5 0 8 )的組態進一步設定成在AGP匯流 排(510)上產生PCI協定交易。匯流排橋接器(5 02)的AGP 介面因而可包含用來支援AGP協定交易以及PCI協定目標及 來源裝置交易之功能。顯示器(52 6 )是可顯示影像或文字 的任何電子顯示器。適用的顯示器(5 2 6 )包括陰極射線管 (Cathode Ray Tube ;簡稱CRT)及液晶顯示器(Liquid Crystal Display;簡稱LCD)等。 請注意,雖然在前文的說明中使用了 AGp、pcl、以及 I SA或E I SA匯流排作為例子,但是可視需要而代用任何的 匯流排架構。又請注意,電腦系統(5 〇 〇 )可以是包含額外 的微處理器之一多重處理電腦系統。 又請注意’本發明之說明可能提及各種信號的觸發。 在本文的用法中’如果信號載有用來指示特定狀況的數 值’則該信號π被觸發”asserted”)。相反地,如果信號 載有用來指不缺少特定狀況的數值,則該信號,,被停止觸 583541 五、發明說明(49) 發n(ndeassertedn)。當信號載有邏輯零值時,或相反 地,當信號載有邏輯一值時,可將該信號界定為被觸發。 此外,在前文的說明中,曾經述及捨棄了各種值。可以若 干種方式捨棄一值,但通常涉及修改該值,以便接收該值 的邏輯電路不理會該值。例如,如果如果該值包含一位 元,則可使該值之狀態反相,而捨棄該值。如果該值是η 位元的值,則其中一種該η位元的編碼可指示該值是無效 的。將該值設定為該無效的編碼,即可使該值被捨棄。此 外,一個η位元的值可包含一有效位元,而當設定該有效 位元時,即可指示該η位元的值是有效的。該有效位元的 重定可包含該值的捨棄。也可以使用其他捨棄數值的方 法。 至此已揭示了一種用來儲存預先解碼資訊以及被捨棄 的指令位元組及(或)資料位元組之系統及方法。雖然已相 當詳細地討論了各圖式所述及及所示的實施例,但是其他 的實施例是可能的且可被考慮的。我們當了解,該等圖式 及詳細說明之用意並非在將本發明限制在所揭示的特定形 式,相反地,其用意在涵蓋在最後的申請專利範圍所界定 本發明的精神及範圍内之所有修改、等效物、及替代形 式0
92107.ptd 第53頁 583541 圖式簡單說明 [圖式簡述] 若參照下文中之詳細說明,並配合各附圖,將可易於 了解本發明的其他目的及優點,這些附圖有: 第1圖是一般性χ8 6指令格式之方塊圖。 第2圖是有效罩蓋的一實施例之方塊圖。 第3圖是微處理器的一實施例之方塊圖。 第4圖示出在第3圖所示指令快取記憶體與第二階快取 記憶體間之介面的一實施例之細節。 第5圖示出第4圖所示指令快取記憶體的一實施例與第 4圖所示第二階快取記憶體的一實施例間之關係之細節。 第6圖是一種用來儲存第二階快取記憶體中的預先解 碼資訊的方法之一實施例之流程圖。 第7Α圖及第7Β圖示出用來儲存被捨棄的預先解碼資訊 的系統之不同實施例。 第8Α圖及第8Β圖是用來儲存被捨棄的預先解碼資訊的 方法之不同實施例之流程圖。 第9圖示出用來儲存被捨棄的預先解碼資訊的系統之 另一實施例。 第10圖示出採用第3圖所示微處理器的電腦系統之一 實施例。 [元件符號說明] 10 微處理器 12 預先提取/預先解碼單元 14 分支預測單元 16 指令快取記憶體 18 指令對準單元 20A至20C解碼單元
92107.ptd 第54頁 583541 圖式簡單說明 22A至22C指令保留區 24A至24C功能單元 26 載入/儲存單元 28 資料快取記憶體 30 暫存器檔 32 重新排序緩衝區 34 MROM單元 38 結果匯流排 50 快取記憶體 52 匯流排介面邏輯電路 56 記憶體匯流排 68 匯流排 64 快取線儲存位置 62 預先解碼資訊儲存位置 60 同位位元儲存位置 80 控制單元 58 指令儲存位置 7 2,7 8程式碼區段 80, 9 0, 94, 9 6儲存位置 102 前置位元組 104 運算碼欄位 106 定址模式位元組 108 標度-索引-基底位元組 110 位移攔位 112 立即運算資料欄位 120 提取 122, 122A,122B起始位元 126 有效罩蓋 128 指令B 170 資料類型位元 180A,180B同位位元 182A,182B預先解碼資訊 184A,184B指令位元組 186A, 186B ECC位元 188A,188B資料位元組 190, 1 9 2指示位元 3 0 0,3 0 2快取線 312 錯誤檢查及校正單元 314 同位檢查單元 316 解多工器 318 錯誤中斷信號 320 輸出 402, 414同位單元 404, 416錯誤檢查及校正單i 406 儲存位置 410 記憶體控制器 408 資料類型位元 420, 5 04主記憶體
92107.ptd 第55頁 583541 圖式簡單說明 4 3 0同位資訊 5 0 2匯流排橋接 5 0 8圖形控制器 512A及 512B PCI 5 1 6輔助匯流排 52 0 EISA/ISAE 524 CPU匯流排 500 器 506 510 裝置 514 橋接器 518 流排 522 526 電腦系統 記憶體匯流排 AGP匯流排 PCI匯流排 EISA或ISA裝置 鍵盤及滑鼠 顯示器
92107.ptd 第56頁

Claims (1)

  1. 修正 六、申請專利範圍 1· 一種微處理器,包含:…〜…」 預先解碼單元,二 接收指令位元組,二邊預先解碼單元之組態被設定成 耦合到該預4 ί產生對應的預先解碼資訊; 指令快取記憶體 ,早元之一指令快取記憶體,該 及對應於該^ f人f態被設定成儲存該等指令位元組 載入/儲存''立凡組之預先解碼資訊; 成接收資料位元早^;,該載入/儲存單元之組態被設定 定忐:::取记憶體’該資料快取記憶體之組態被設 疋成自δ亥載入/儲存星、 . 仔早70接收亚儲存該等資料位元組; 以及 、* π ΐ: 1“夬取5己憶體,該第二階快取記憶體之組態 r又疋成自該指令快取記憶體接收並儲存被捨棄的指 7位兀組,並自該資料快取記憶體接收並儲存 的資料位元組,其中該第二階快取記憶體之組態= 定成接收並儲存該等儲存的被捨棄的指令位元组之同 位資訊及預先解碼資訊,其中該第二階快取記憶體^ 組態被設定成接收並儲存該等儲存的被捨棄的資料位 元組之錯誤校正碼位元。 2 ·如申請專利範圍第1項之微處理器,進一步包含同位位 元產生及檢查邏輯電路,該同位位元產生及檢查邏輯 電路之組態被設定成··為傳送到該第二階快取記憶體 的指令位元組產生同位位元,並檢查自該第二階^ 記憶體傳送的指令位元組之同位位元。
    583541 .—-—-— -------------------------------^ __案號 91110329 \ 0[y< ^ _ - -- 一 ι 六、申請專利範圍 :二:3 3.如申請專利範圍第1項之微處理器,進一步包含錯誤檢 查及校正邏輯電路,且該錯誤檢查及校正邏輯電路之 組態被設定成:為傳送到該第二階快取記憶體的資料 位元組產生該等錯誤校正碼位元,並檢查自該第二階 快取記憶體傳送的資料位元組之該等錯誤校正碼位 元。 4 ·如申請專利範圍第3項之微處理器,其中該錯誤檢查及 校正邏輯電路之組態被設定成利用該等錯誤校正碼位 元來校正自該第二階快取記憶體傳送的該等資料位元 組中之至少一個位元錯誤。 5. 如申請專利範圍第1項之微處理器,其中該第二階快取 記憶體被分成若干快取線,其中該等快取線包含第一 儲存區及第二儲存區,其中每一快取線之組態被設定 成儲存一個或多個指示位元,用以指示:(a)各指令位 元組係儲存在該快取線的第一儲存區,且各預先解碼 位元及一同位位元係儲存在該快取線的第二儲存區; 或(b )各資料位元組係儲存在該快取線的第一儲存區, 且各錯誤校正碼位元係儲存在該快取線的第二儲存 區。 6. —種微處理裝置,包含: 處理器,該處理器之組態被設定成接收指令位元 組及資料位元組,其中該處理器之組態被設定成根據 該等指令位元組所形成的指令而對該等資料位元組作 業;以及
    92107(修正版).ptc 第58頁 583541 ; _案號91110329 年【> 月八备曰, 修正_ 六、申請專利範圍 》一 快取記憶體,該快取記憶體之組態被設定成自該 處理器接收並儲存被捨棄的指令位元組及被捨棄的資 料位元組,其中該快取記憶體之組態被設定成接收並 儲存該等儲存的被捨棄的指令位元組之同位資訊及預 先解碼資訊,其中該快取記憶體之組態被設定成接收 並儲存該等儲存的被捨棄的資料位元組之錯誤校正碼 (E C C )位元。 7. 如申請專利範圍第6項之微處理裝置,其中該快取記憶 體之組態被設定成:回應該處理器要求該等被捨棄的 資料位元組,而將該等被捨棄的資料位元組及對應的 所儲存ECC位元提供給該處理器。 8. 如申請專利範圍第6項之微處理裝置,其中該快取記憶 體之組態被設定成:回應該處理器要求該等被捨棄的 指令位元組,而將該等被捨棄的指令位元組以及對應 的所儲存同位資訊及對應的所儲存預先解碼資訊提供 給該處理器。 9 ·如申請專利範圍第8項之微處理裝置,其中該處理器之 組態被設定成:利用所傳送的該預先解碼資訊,而不 必產生新的預先解碼資訊。 1 0 .如申請專利範圍第6項之微處理裝置,其中該快取記憶 體是在與該處理器共同的晶粒上實施之第二階快取記 憶體。 1 1.如申請專利範圍第6項之微處理裝置,其中該快取記憶 體是在與該處理器不同的晶粒上實施之第二階快取記
    92107(修正版).ptc 第59頁 583541 .一 ............— _案號91110329 <?>年(>月1孓日 修正_ 六、申請專利範圍 憶體。 1 2 .如申請專利範圍第6項之微處理裝置,其中該快取記憶 體包含若干快取線,其中每一快取線之組態被設定成 儲存一指示位元,用以指示該邏輯區段儲存了指令位 元組的預先解碼位元、或資料位元組的錯誤檢查及校 正位元。 1 3 .如申請專利範圍第1 2項之微處理裝置,其中每一快取 線包含第一儲存區及第二儲存區,其中每一快取線之 組態被設定成儲存指示位元,用以指示:(a )各指令位 元組係儲存在該快取線的第一儲存區,且各預先解碼 位元及同位位元係儲存在該快取線的第二儲存區;或 (b )各資料位元組係儲存在該快取線的第一儲存區,且 各錯誤校正碼(ECC )位元係儲存在該快取線的第二儲存 區。 1 4.如申請專利範圍第6項之微處理裝置,其中該處理器進 一步包含同位位元產生及檢查邏輯電路,該同位位元 產生及檢查邏輯電路之組態被設定成:為傳送到該快 取記憶體的指令位元組產生該等同位位元,並檢查自 該快取記憶體傳送的指令位元組之該等同位位元。 1 5 .如申請專利範圍第6項之微處理裝置,其中該處理器進 一步包含錯誤檢查及校正邏輯電路,且該錯誤檢查及 校正邏輯電路之組態被設定成:為傳送到該快取記憶 體的資料位元組產生該等ECC位元,並檢查自該快取記 憶體傳送的資料位元組之該等ECC位元。
    92107(修正版).ptc 第60頁 583541 一 + _案號 91110329 修正_ 六、申請專利範圍 1 6 .如申請專利範圍第1 5項之微處理裝置,其中該錯誤檢 查及校正邏輯電路之組態被設定成利用該等ECC位元來 校正自該快取記憶體傳送的該等資料位元組中之至少 一個位元錯誤。 1 7. —種用以儲存預先解碼資訊之方法,包含下列步驟: 接收指令位元組; 產生該等指令位元組之預先解碼資訊; 將該等指令位元組及預先解碼資訊儲存在第一記 憶體中; 回應該等指令位元組在該第一記憶體中被蓋寫, 而將至少一部分的該等指令位元組及該預先解碼資訊 連同同位資訊輸出到第二記憶體; 接收資料位元組; 將該等資料位元組儲存到第三記憶體;以及 回應該等資料位元組在該第三記憶體中被蓋寫, 而將至少一部分的該等資料位元組連同對應的錯誤校 正碼資訊輸出到該第二記憶體。 1 8 .如申請專利範圍第1 7項之用以儲存預先解碼資訊之方 法,其中該第二記憶體被分成若干快取線,其中該方 法進一步包含將一指示位元儲存在該第二記憶體中之 每一快取線,其中該指示位元係用來指示該等預先解 碼位元或該等錯誤校正碼位元被儲存在該快取線中。 1 9 .如申請專利範圍第1 8項之用以儲存預先解碼資訊之方 法,進一步包含下列步驟:
    92]07(修正版).ptc 第61頁
    修正 583541 案號 91110329 六、申請專利範圍 將每一邏輯區段的一指示位元儲存在該第二記 體中,其中該指示位元係用來指示預先解碼位元或 誤檢查及校正位元被儲存在該第二記憶體中。 2 〇 ·如申請專利範圍第1 8項之用以儲存預先解碼資訊之 法,進一步包含下列步驟: 將至少一個所儲存的同位位元以及該等指令位 Μ之對應的儲存部分及該預先解碼資訊傳送回該處 器’其中或處理器之組態被設定成:如果該同位位 是正確的,則使用所傳送的該預先解碼資訊,而不 產生新的預先解碼資訊。 2 1 · 一種電腦系統,包含: 主系統記憶體; 耦合到該主系統記憶體之記憶體控制器; 耦合到該記憶體控制器之微處理器,其中該微 理态之組態被設定成接收指令位元組及資料位元組 其中該微處理器之組態被設定成根據該等指令位元 所形成的指令而對該等資料位元組作業;以及 快取記憶體,該快取記憶體之組態被設定成自 ,處理器接收並儲存被捨棄的指令位元組及被捨棄 j料位兀組’其中該快取記憶體之組態被設定成接 並儲1該等儲存的被捨棄的指令位元組之同位資訊 ^先解碼貢訊’且其中該快取記憶體之組態被設定 妾收並儲存該等儲存的被捨棄的資料位元組之錯誤 正碼位元。 憶 錯 方 元 理 元 必 處 , 組 該 的 收 及 成 校
    583541 案號91110329 丨Q冬羊k少沁:1¾‘ 修正 六、申請專利範圍 ................................一-------------------' 2 2 .如申請專利範圍第1 3項之電腦系統,其中該記憶體控 制器進一步包含同位位元產生及檢查邏輯電路,該同 位位元產生及檢查邏輯電路之組態被設定成為傳送進 出該主系統記憶體的位元組產生及檢查同位位元。 2 3 .如申請專利範圍第1 3項之電腦系統,其中該記憶體控 制器進一步包含錯誤校正碼產生及檢查邏輯電路,該 錯誤校正碼產生及檢查邏輯電路之組態被設定成為傳 送進出該主系統記憶體的位元組產生及檢查錯誤校正 碼位元。
    92]07(修正版).ptc 第63頁
TW091110329A 2001-06-26 2002-05-17 Using type bits to track storage of ECC and predecode bits in a level two cache TW583541B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/892,328 US6804799B2 (en) 2001-06-26 2001-06-26 Using type bits to track storage of ECC and predecode bits in a level two cache

Publications (1)

Publication Number Publication Date
TW583541B true TW583541B (en) 2004-04-11

Family

ID=25399796

Family Applications (1)

Application Number Title Priority Date Filing Date
TW091110329A TW583541B (en) 2001-06-26 2002-05-17 Using type bits to track storage of ECC and predecode bits in a level two cache

Country Status (8)

Country Link
US (1) US6804799B2 (zh)
EP (1) EP1399824B1 (zh)
JP (1) JP4170216B2 (zh)
KR (1) KR100884351B1 (zh)
CN (1) CN1287292C (zh)
DE (1) DE60223023T2 (zh)
TW (1) TW583541B (zh)
WO (1) WO2003003218A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI470417B (zh) * 2011-12-22 2015-01-21 Intel Corp 用於可靠度之內容感知快取
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US9378142B2 (en) 2011-09-30 2016-06-28 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US10268547B2 (en) 2015-10-15 2019-04-23 Industrial Technology Research Institute Memory protection device and method

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6751707B2 (en) * 2002-05-06 2004-06-15 Sony Computer Entertainment Inc. Methods and apparatus for controlling a cache memory
US7437593B2 (en) * 2003-07-14 2008-10-14 International Business Machines Corporation Apparatus, system, and method for managing errors in prefetched data
US7555703B2 (en) * 2004-06-17 2009-06-30 Intel Corporation Method and apparatus for reducing false error detection in a microprocessor
US7386756B2 (en) * 2004-06-17 2008-06-10 Intel Corporation Reducing false error detection in a microprocessor by tracking instructions neutral to errors
JP4673584B2 (ja) * 2004-07-29 2011-04-20 富士通株式会社 キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法
US7415638B2 (en) * 2004-11-22 2008-08-19 Qualcomm Incorporated Pre-decode error handling via branch correction
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US8020047B2 (en) * 2006-01-17 2011-09-13 Xyratex Technology Limited Method and apparatus for managing storage of data
US8065555B2 (en) * 2006-02-28 2011-11-22 Intel Corporation System and method for error correction in cache units
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US7962725B2 (en) 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US8001361B2 (en) * 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US20080256419A1 (en) * 2007-04-13 2008-10-16 Microchip Technology Incorporated Configurable Split Storage of Error Detecting and Correcting Codes
US8055975B2 (en) * 2007-06-05 2011-11-08 Apple Inc. Combined single error correction/device kill detection code
FR2924836B1 (fr) * 2007-12-11 2010-12-24 Commissariat Energie Atomique Dispositif de service de fiabilite, systeme et procede electroniques mettant en oeuvre au moins un tel dispositif et produit de programme informatique permettant de mettre en oeuvre un tel procede.
US20090276587A1 (en) * 2008-04-30 2009-11-05 Moyer William C Selectively performing a single cycle write operation with ecc in a data processing system
US7814300B2 (en) 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
JP5202130B2 (ja) 2008-06-24 2013-06-05 株式会社東芝 キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法
US8356239B2 (en) * 2008-09-05 2013-01-15 Freescale Semiconductor, Inc. Selective cache way mirroring
US8181005B2 (en) * 2008-09-05 2012-05-15 Advanced Micro Devices, Inc. Hybrid branch prediction device with sparse and dense prediction caches
US8145985B2 (en) 2008-09-05 2012-03-27 Freescale Semiconductor, Inc. Error detection schemes for a unified cache in a data processing system
US8291305B2 (en) * 2008-09-05 2012-10-16 Freescale Semiconductor, Inc. Error detection schemes for a cache in a data processing system
US8316186B2 (en) * 2008-09-20 2012-11-20 Freescale Semiconductor, Inc. Method and apparatus for managing cache reliability based on an associated error rate
US8364896B2 (en) * 2008-09-20 2013-01-29 Freescale Semiconductor, Inc. Method and apparatus for configuring a unified cache based on an associated error rate
US8117497B1 (en) * 2008-11-17 2012-02-14 Xilinx, Inc. Method and apparatus for error upset detection and correction
KR101042197B1 (ko) 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
JP4865016B2 (ja) * 2009-08-27 2012-02-01 株式会社東芝 プロセッサ
JP5325159B2 (ja) 2010-05-12 2013-10-23 インターナショナル・ビジネス・マシーンズ・コーポレーション ファイルリストを抽出してクライアントにて表示するファイルサーバ、クライアントにて表示する方法及びファイルサーバで実行することが可能なコンピュータプログラム
CN102346715B (zh) * 2010-07-30 2014-05-28 国际商业机器公司 保护内存中应用程序的方法、内存控制器和处理器
CN102012872B (zh) * 2010-11-24 2012-05-02 烽火通信科技股份有限公司 一种用于嵌入式系统的二级缓存控制方法及装置
US8516225B2 (en) 2011-03-25 2013-08-20 Koichi Kitagishi Central processing unit and microcontroller
KR101178293B1 (ko) 2011-03-25 2012-08-29 마사미 후쿠시마 중앙 처리 장치 및 마이크로컨트롤러
JP4862100B1 (ja) * 2011-03-25 2012-01-25 好一 北岸 中央演算処理装置及びマイクロコンピュータ
KR101788737B1 (ko) 2011-05-12 2017-10-24 에스케이하이닉스 주식회사 반도체 시스템
US8572441B2 (en) * 2011-08-05 2013-10-29 Oracle International Corporation Maximizing encodings of version control bits for memory corruption detection
US9043559B2 (en) 2012-10-23 2015-05-26 Oracle International Corporation Block memory engine with memory corruption detection
CN102968355A (zh) * 2012-11-13 2013-03-13 浪潮电子信息产业股份有限公司 一种基于Intel-Brickland-EX平台的内存纠错方法
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US9021334B2 (en) * 2013-05-01 2015-04-28 Apple Inc. Calculation of analog memory cell readout parameters using code words stored over multiple memory dies
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US9672298B2 (en) 2014-05-01 2017-06-06 Oracle International Corporation Precise excecution of versioned store instructions
US9195593B1 (en) 2014-09-27 2015-11-24 Oracle International Corporation Hardware assisted object memory migration
WO2016068903A1 (en) * 2014-10-29 2016-05-06 Hewlett Packard Enterprise Development Lp Trans-fabric instruction set for a communication fabric
US10795681B2 (en) * 2014-12-23 2020-10-06 Intel Corporation Instruction length decoding
CN105938447B (zh) * 2015-03-06 2018-12-14 华为技术有限公司 数据备份装置及方法
JP6158265B2 (ja) * 2015-09-16 2017-07-05 株式会社東芝 キャッシュメモリシステム
CN106445720A (zh) * 2016-10-11 2017-02-22 郑州云海信息技术有限公司 一种内存错误恢复方法和装置
US10268581B2 (en) * 2017-04-05 2019-04-23 Arm Limited Cache hierarchy management
US10291258B2 (en) 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
KR102490104B1 (ko) 2017-10-30 2023-01-19 삼성전자주식회사 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법
US20190265976A1 (en) * 2018-02-23 2019-08-29 Yuly Goryavskiy Additional Channel for Exchanging Useful Information
US11119909B2 (en) * 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
EP3683679A1 (en) 2019-01-15 2020-07-22 ARM Limited Checksum generation
CN110311772A (zh) * 2019-06-15 2019-10-08 上海来远电子科技有限公司 一种可编程加解密方法及其系统
KR102664239B1 (ko) 2023-10-06 2024-05-08 위더맥스(주) Ecc 가변 적용 장치 및 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747043A (en) 1984-02-10 1988-05-24 Prime Computer, Inc. Multiprocessor cache coherence system
JPS62151971A (ja) 1985-12-25 1987-07-06 Nec Corp マイクロ・プロセツサ装置
US5214769A (en) 1987-12-24 1993-05-25 Fujitsu Limited Multiprocessor control system
US5265004A (en) 1991-10-15 1993-11-23 Allen-Bradley Company, Inc. Sequence controller with combinatorial Boolean logic
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5721854A (en) 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5604753A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for performing error correction on data from an external memory
US6161208A (en) * 1994-05-06 2000-12-12 International Business Machines Corporation Storage subsystem including an error correcting cache and means for performing memory to memory transfers
US5752264A (en) 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5828895A (en) 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5819067A (en) 1996-02-23 1998-10-06 Advanced Micro Devices, Inc. Computer system configured to translate a computer program into a second computer program prior to executing the computer program
US5748978A (en) 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US5951671A (en) 1997-12-18 1999-09-14 Advanced Micro Devices, Inc. Sharing instruction predecode information in a multiprocessor system
US6108753A (en) * 1998-03-31 2000-08-22 International Business Machines Corporation Cache error retry technique
US6092182A (en) 1998-06-24 2000-07-18 Advanced Micro Devices, Inc. Using ECC/parity bits to store predecode information

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102126B2 (en) 2011-09-30 2018-10-16 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US10241912B2 (en) 2011-09-30 2019-03-26 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US9378142B2 (en) 2011-09-30 2016-06-28 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US9619408B2 (en) 2011-09-30 2017-04-11 Intel Corporation Memory channel that supports near memory and far memory access
US9317429B2 (en) 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
US10719443B2 (en) 2011-09-30 2020-07-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US10282323B2 (en) 2011-09-30 2019-05-07 Intel Corporation Memory channel that supports near memory and far memory access
US10691626B2 (en) 2011-09-30 2020-06-23 Intel Corporation Memory channel that supports near memory and far memory access
US10241943B2 (en) 2011-09-30 2019-03-26 Intel Corporation Memory channel that supports near memory and far memory access
US10282322B2 (en) 2011-09-30 2019-05-07 Intel Corporation Memory channel that supports near memory and far memory access
TWI470417B (zh) * 2011-12-22 2015-01-21 Intel Corp 用於可靠度之內容感知快取
US10268547B2 (en) 2015-10-15 2019-04-23 Industrial Technology Research Institute Memory protection device and method

Also Published As

Publication number Publication date
CN1522410A (zh) 2004-08-18
CN1287292C (zh) 2006-11-29
KR20040041550A (ko) 2004-05-17
US6804799B2 (en) 2004-10-12
KR100884351B1 (ko) 2009-02-18
EP1399824B1 (en) 2007-10-17
DE60223023D1 (de) 2007-11-29
WO2003003218A1 (en) 2003-01-09
US20020199151A1 (en) 2002-12-26
JP2004531837A (ja) 2004-10-14
EP1399824A1 (en) 2004-03-24
JP4170216B2 (ja) 2008-10-22
DE60223023T2 (de) 2008-07-31

Similar Documents

Publication Publication Date Title
TW583541B (en) Using type bits to track storage of ECC and predecode bits in a level two cache
EP1090345B1 (en) Using ecc/parity bits to store predecode information
US5249286A (en) Selectively locking memory locations within a microprocessor's on-chip cache
US6115792A (en) Way prediction logic for cache array
JP4195006B2 (ja) ジャンプターゲットのための命令キャッシュウェイ予測
US4995041A (en) Write back buffer with error correcting capabilities
US6594728B1 (en) Cache memory with dual-way arrays and multiplexed parallel output
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
US6157986A (en) Fast linear tag validation unit for use in microprocessor
US5500950A (en) Data processor with speculative data transfer and address-free retry
JPH0345407B2 (zh)
WO1996012231A1 (en) A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein
US6212621B1 (en) Method and system using tagged instructions to allow out-of-program-order instruction decoding
US5909566A (en) Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction
TW200931261A (en) Error detector in a cache memory using configurable way redundancy
EP0459233A2 (en) Selectively locking memory locations within a microprocessor's on-chip cache
US5951671A (en) Sharing instruction predecode information in a multiprocessor system
US6640293B1 (en) Apparatus and method of utilizing Alias Hit signals to detect errors within the real address tag arrays
US20040181626A1 (en) Partial linearly tagged cache memory system
JPH08212779A (ja) メモリアレイ、キャッシュ、およびマイクロプロセッサ
JP3824657B2 (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
US20030079090A1 (en) Instructions for test & set with selectively enabled cache invalidate
JP4796580B2 (ja) フェッチ・バーストを用いて情報をキャッシュ・モジュールに与える装置及び方法
TWI606393B (zh) 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent