国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在數(shù)據(jù)處理系統(tǒng)中用ecc選擇性地執(zhí)行單周期寫操作的制作方法

      文檔序號:6593897閱讀:382來源:國知局
      專利名稱:在數(shù)據(jù)處理系統(tǒng)中用ecc選擇性地執(zhí)行單周期寫操作的制作方法
      技術(shù)領(lǐng)域
      本公開一般涉及數(shù)字處理系統(tǒng),更具體而言涉及使用ECC的寫操作。
      背景技術(shù)
      一般使用糾錯碼(ECC)和奇偶校驗來提供用于存儲器的檢錯和/或糾錯。通常, ECC與使用奇偶校驗相比以降低的性能支持更高水平的檢錯。此外,特定存儲器的某些用 戶相比于其它用戶而言更加著重于檢錯,并且愿意犧牲某些性能來獲得一定水平的安全驗 證。其它用戶相對于檢錯不那么嚴格,因此不愿意為附加檢錯能力犧牲性能。此外,不同的 檢錯和/或糾錯方案以不同的方式影響處理器指令流水線內(nèi)的執(zhí)行時序。


      本發(fā)明由附圖以示例的方式示出且不受附圖的限制,在附圖中相同的附圖標記指 示類似的元件。附圖中的元素是為了簡單明了而進行圖示且不一定按比例繪制。圖1以方框圖的形式圖示依照本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng)。圖2以方框圖的形式圖示依照本發(fā)明的一個實施例的可在圖1的數(shù)據(jù)處理系統(tǒng)內(nèi) 使用的存儲器31的一部分;圖3以方框圖的形式圖示依照本發(fā)明的一個實施例的可在圖1的數(shù)據(jù)處理系統(tǒng)內(nèi) 使用的存儲器32的一部分;圖4以方框圖的形式圖示依照本發(fā)明的一個實施例的具有后寫入緩沖器且可在 圖1的數(shù)據(jù)處理系統(tǒng)內(nèi)使用的存儲器33的一部分。圖5以方框圖的形式圖示依照本發(fā)明的一個實施例的圖4的后寫入緩沖器;圖6圖示依照本發(fā)明的一個實施例的圖1的數(shù)據(jù)處理系統(tǒng)的流水線階段的表格;圖7 17圖示依照本發(fā)明的各種實施例的流水線和執(zhí)行時序的各種不同示例的 時序圖;以及圖18圖示依照本發(fā)明的一個實施例的圖1的數(shù)據(jù)處理系統(tǒng)的單周期執(zhí)行單元。
      具體實施例方式在一個實施例中,存儲器能夠在或者奇偶校驗或者ECC模式下操作。在一個實施 例中,在ECC模式下,用多個地址來執(zhí)行部分寫入(即向少于存儲器中的所有區(qū)塊(bank) 寫入),包括讀訪問和寫訪問(用于執(zhí)行讀-修改-寫)兩者。并且,依照一個實施例,對 于ECC模式下的部分寫而言,只有未被以所述部分寫入來寫入的那些區(qū)塊被讀取以用于 讀-修改-寫操作的讀訪問部分。雖然在本實施例中,不能保證校驗位的正確性和癥狀位 (syndrome bit)的生成是正確的,但可能存在這可被允許、可管理、乃至期望的情況。然而, 在一個實施例中,可以用一次訪問、即單次訪問來執(zhí)行ECC模式下的全寫入(即向存儲器中 的所有區(qū)塊寫入)。也就是說,能夠在不需要寫訪問之前的讀訪問的情況下用單次寫訪問來 執(zhí)行全寫入(即,在不需要讀-修改-寫操作的情況下)。以這種方式,存儲器當處于ECC模式時可以比先前可獲得的那些更高效地操作。并且,在一個實施例中,由于存儲器在ECC模式下或非ECC模式下操作的能力,當 在ECC模式對比非ECC模式下操作時,還可以以不同的方式來配置處理器流水線。例如,在 ECC模式下,可以將單周期指令的執(zhí)行從處理器流水線的一個執(zhí)行階段移動至處理器流水 線的另一階段,或者可以將用于存儲指令的寫數(shù)據(jù)的發(fā)送從一個執(zhí)行階段移動到另一個。如本文所使用的,使用術(shù)語“總線”來提及多種信號或?qū)Ь€,其可以用來傳輸一個 或多個各種類型的信息,諸如數(shù)據(jù)、地址、控制、或狀態(tài)??梢愿鶕?jù)是單個導(dǎo)線、多個導(dǎo)線、單 向?qū)Ь€、或雙向?qū)Ь€來圖示或描述本文所討論的導(dǎo)線。然而,不同的實施例可以改變導(dǎo)線的 實現(xiàn)。例如,可以使用單獨的單向?qū)Ь€而不是雙向?qū)Ь€,反之亦然。并且,可以用串行地或 以時間復(fù)用方式來傳輸多個信號的單個導(dǎo)線來代替多個導(dǎo)線。類似地,可以將載送多個信 號的單個導(dǎo)線分離成載送這些信號的子集的各種不同導(dǎo)線。因此,存在許多用于傳輸信號 的選擇。當提及信號、狀態(tài)位、或類似裝置分別到其邏輯真或邏輯假狀態(tài)的表現(xiàn)時,在本文 中使用術(shù)語“確證(assert)”或“設(shè)定”和“取消”(或“取消確證(deassert) ””或“清零 (clear)”)。如果邏輯真狀態(tài)是邏輯電平一,則邏輯假狀態(tài)是邏輯電平零。并且,如果邏輯 真狀態(tài)是邏輯電平零,則邏輯假狀態(tài)是邏輯電平一。圖1以方框圖形式圖示依照本發(fā)明的一個實施例的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理 系統(tǒng)10包括處理器12、系統(tǒng)總線14、存儲器16、多個外圍設(shè)備,諸如外圍設(shè)備18、外圍設(shè)備 20、和在某些實施例中的附加外圍設(shè)備,如將外圍設(shè)備18與外圍設(shè)備20分離的圖1中的點 所指示的。存儲器16是通過雙向?qū)Ь€耦合到系統(tǒng)總線14的系統(tǒng)存儲器,所述雙向?qū)Ь€在 一種形式中具有多個導(dǎo)線。在所示的形式中,外圍設(shè)備18和20中的每一個如處理器12 — 樣通過雙向多個導(dǎo)線耦合到系統(tǒng)總線14。處理器12包括經(jīng)由具有多個導(dǎo)線的雙向總線耦 合到系統(tǒng)總線14的總線接口單元22??偩€接口單元22經(jīng)由雙向?qū)Ь€耦合到內(nèi)部總線M。 內(nèi)部總線M是多導(dǎo)線通信總線。經(jīng)由各雙向?qū)Ь€耦合到內(nèi)部總線M的是高速緩沖存儲器 (cache) 26、存儲器觀、和中央處理單元(CPU) 30。CPU 30實現(xiàn)數(shù)據(jù)處理操作。高速緩沖存 儲器26、存儲器^jncPU 30中的每一個經(jīng)由各雙向?qū)Ь€耦合到內(nèi)部總線。請注意,存儲 器觀和存儲器16可以是任何類型的存儲器,并且外圍設(shè)備18和20每個可以是任何類型 的外圍設(shè)備或設(shè)備。在一個實施例中,所有數(shù)據(jù)處理器系統(tǒng)10在單個集成電路上?;蛘?, 可以使用不止一個集成電路來實現(xiàn)數(shù)據(jù)處理系統(tǒng)10。在一個實施例中,至少所有處理器12 在單個集成電路上。在操作中,處理器12運行以通過執(zhí)行多個數(shù)據(jù)處理指令來實現(xiàn)多種數(shù)據(jù)處理功 能。高速緩沖存儲器26是用于CPU 30所需的頻繁使用信息的臨時數(shù)據(jù)倉庫。不在高速緩 沖存儲器26內(nèi)的CPU 30所需的信息被存儲在存儲器觀或存儲器16中。在一個實施例 中,可以將存儲器觀稱為內(nèi)部存儲器(這里,它在處理器12內(nèi)部),同時可以將存儲器16 稱為外部存儲器(這里,它在處理器12外部)??偩€接口單元22僅是處理器12與系統(tǒng)總 線14之間的多個接口單元中的一個??偩€接口單元22運行以協(xié)調(diào)與CPU 30的指令執(zhí)行 有關(guān)的信息流。經(jīng)由總線接口單元22在CPU 30與系統(tǒng)總線14之間交換由指令執(zhí)行得到 的控制信息和數(shù)據(jù)。圖2圖示依照本發(fā)明的一個實施例的可在系統(tǒng)10內(nèi)使用的存儲器31。存儲器31可以表示圖1的存儲器觀、存儲器16、或高速緩沖存儲器沈的一部分。存儲器31包括含 有許多存儲器區(qū)塊和保護儲存器45的存儲器存儲電路40。在所示的實施例中,存儲器存儲電路40包括8個區(qū)塊區(qū)塊042、區(qū)塊143.....區(qū)塊744。替換實施例可以包括任何數(shù)目的區(qū)塊。存儲器31還包括控制邏輯46和選擇邏輯60。選擇邏輯被耦合到存儲器存儲電 路40和控制邏輯46??刂七壿?6被雙向地耦合到存儲器存儲電路40且包括控制寄存器 48、模式邏輯50、共享的異-或邏輯O(OR)樹52、和修正邏輯M??刂萍拇嫫?8被耦合到 模式邏輯50,模式邏輯50基于控制寄存器48內(nèi)的一個或多個控制位的值來向選擇邏輯60 的控制輸入端輸出模式指示符62。在一個實施例中,模式62指示什么檢錯模式存儲器31 正在操作。例如,在所示的實施例中,基于存儲在控制寄存器48中的值,模式62指示存儲 器31是在ECC模式還是奇偶校驗?zāi)J较虏僮?。在一個實施例中,控制寄存器48內(nèi)的單個 位指示存儲器31是在ECC模式下還是奇偶校驗?zāi)J较虏僮鳌;蛘撸梢允褂枚鄠€位來指示 ECC或奇偶校驗?zāi)J?。在ECC模式下,保護儲存器45的每個條目將用于相應(yīng)條目的相應(yīng)校驗位存儲在區(qū) 塊0 7中。例如,保護儲存器45的第一條目存儲與存儲在每個區(qū)塊0 7的第一條目中 的數(shù)據(jù)相對應(yīng)的校驗位。但是,在奇偶校驗?zāi)J较?,保護儲存器45的每個條目存儲與每個 區(qū)塊0 7中的條目相對應(yīng)的奇偶校驗位。例如,在奇偶校驗?zāi)J较?,保護儲存器45的第 一條目將用于第一條目的奇偶校驗位存儲在每個區(qū)塊0 7中。因此,在其中存在8個區(qū) 塊的所示實施例中,保護儲存器45的每個條目存儲8個奇偶校驗位,區(qū)塊0 7中的每個 一個。
      在ECC模式下,共享XOR樹52被耦合以從區(qū)塊0至區(qū)塊7中的每一個和從保護儲 存器45接收信息。在ECC模式下,共享XOR樹52經(jīng)由從總線M或14或從區(qū)塊0 7中 的每一個中的特定條目、或兩者的組合接收到的信息生成被提供給保護儲存器45以便存 儲在相應(yīng)條目中的校驗位56。并且,在ECC模式下,共享XOR樹52基于從區(qū)塊0 7中的 每一個中的特定條目接收到的信息和從保護儲存器45接收到的相應(yīng)校驗位生成被提供給 修正邏輯M的癥狀位58。在ECC模式下,修正邏輯M還從每個區(qū)塊0 7中的特定條目 接收信息并使用相應(yīng)的癥狀位58來修正接收到的信息并將經(jīng)修正的信息從區(qū)塊0 7的 特定條目提供給選擇邏輯60。因此,選擇邏輯60基于模式62的值將修正邏輯M的輸出提 供給總線M或14 (如果在ECC模式下)或?qū)^(qū)塊0 7中的一個或多個的輸出直接提供 給總線M或14 (如果在奇偶校驗?zāi)J较?。請注意,在奇偶校驗?zāi)J较?,還可以將相應(yīng)的奇 偶校驗位從保護儲存器45提供給總線M或14。 因此,對于奇偶校驗?zāi)J较碌淖x操作而言,選擇邏輯60將區(qū)塊0 7中的一個或 多個中的被訪問條目的輸出、以及相應(yīng)的奇偶校驗位提供給總線M或14。對于ECC模式 下的讀操作而言,選擇邏輯60將修正邏輯M的輸出提供給總線M或14。對于奇偶校驗 模式下的寫操作而言,寫數(shù)據(jù)被直接提供給被寫操作訪問地址尋址的區(qū)塊0 7中的一個 或多個中的條目。也就是說,可以向區(qū)塊0 7中的任何數(shù)目的區(qū)塊執(zhí)行寫,并且保護儲存 器45的相應(yīng)條目中的相應(yīng)奇偶校驗位也在共享XOR樹52中的生成之后基于每個位地被更 新。以這種方式,如果只有一個區(qū)塊由于寫操作而被寫入,則保護儲存器45的相應(yīng)條目中 只有一個位被更新??梢杂煽刂七壿?6(未示出)內(nèi)的邏輯以已知方式來執(zhí)行奇偶校驗?zāi)J较碌钠媾夹r炍坏母隆τ贓CC模式下的全寫入操作(其中所有區(qū)塊0 7都被寫入),不需要執(zhí)行 讀-修改-寫(RMW)操作,以這種方式,可以用一次或單次訪問(例如在單處理器周期或單 時鐘周期中)來執(zhí)行全寫操作(向存儲器31的所有區(qū)塊寫入)。在這種情況下,寫數(shù)據(jù)被 提供給被全寫操作訪問地址尋址的區(qū)塊0 7的每個條目。寫數(shù)據(jù)也被提供給共享XOR樹 52,其生成相應(yīng)的校驗位并經(jīng)由校驗位56將它們提供給保護儲存器45以便存儲在相應(yīng)的 條目中。在一個實施例中,共享XOR樹52是組合邏輯,其中,可以在與向區(qū)塊0 7寫入寫 數(shù)據(jù)相同的處理器或時鐘周期中完成校驗位的生成和寫回。對于ECC模式下的部分寫操作而言(其中不是所有的區(qū)塊0 7都被寫入),執(zhí)行 讀-修改-寫(RMW)。因此,執(zhí)行對不是所有區(qū)塊0 7的寫操作要求多次訪問(例如多個 處理器周期或時鐘周期),并且不能如用于全寫操作的情況一樣用單次訪問來執(zhí)行。在一個 實施例中,當在ECC模式下進行部分寫時,則只有來自未被正在訪問(即未被正在寫入)的 區(qū)塊的數(shù)據(jù)被提供給共享XOR樹52。將被寫入被訪問區(qū)塊的寫數(shù)據(jù)也被提供給共享XOR樹 52。因此,共享XOR樹52生成用于新條目(其包括新寫數(shù)據(jù))的相應(yīng)校驗位,并經(jīng)由校驗 位56來提供這些校驗位以便存儲在保護儲存器45的相應(yīng)條目中。請注意,在本實施例中, 不保證被用來形成校驗位的從其它區(qū)塊(未被寫入的那些)讀取的數(shù)據(jù)的正確性。也就是 說,不是在將讀數(shù)據(jù)用于使用新寫數(shù)據(jù)來生成新校驗位之前首先對其進行糾錯和修正。例 如,如果數(shù)據(jù)正在被寫入?yún)^(qū)塊1,則與將被寫入?yún)^(qū)塊1的寫數(shù)據(jù)相組合地使用來自區(qū)塊0和 2 7的讀數(shù)據(jù)以生成將被存儲回到保護儲存器45的相應(yīng)條目的新校驗位。但是,在圖2 的實施例中,不是在生成校驗位之前首先對來自區(qū)塊0和2 7的讀數(shù)據(jù)進行檢錯和修正, 因此不能保證數(shù)據(jù)位的正確性。然而,在某些實施例中,不保證讀數(shù)據(jù)正確可能不重要。例如,當ECC錯誤的計數(shù) (tally)正在被累積以確定留下多少存儲器操作裕度時,情況可能如此。在這種情況下,控 制邏輯46內(nèi)的邏輯或系統(tǒng)10內(nèi)的其它邏輯可能正在執(zhí)行此計數(shù)以確定操作裕度?;蛘?, 在其中區(qū)塊0 7內(nèi)的數(shù)據(jù)由于當前可能存儲在所有或一部分區(qū)塊0 7中的內(nèi)容是無意 義數(shù)據(jù)(即垃圾數(shù)據(jù))或被已知具有錯誤的數(shù)據(jù)而首先被初始化的情況下,正確性可能不 重要。正確性在存儲器31的初始化周期期間也可能不重要。因此,可能存在其中最初不需 要保證正確的許多不同實例,但可以寫入適當?shù)钠媾夹r炐畔⒁员闵院蟮脑L問能夠提供可 修正數(shù)據(jù)。然而,還存在其中應(yīng)在RMW操作的讀周期期間(即在寫操作的讀周期期間)執(zhí)行 讀數(shù)據(jù)的修正以便生成和存儲正確校驗位的許多實例,正確的校驗位隨后被用來生成正確 的癥狀位以進行糾錯。圖3圖示依照本發(fā)明的另一實施例的可在系統(tǒng)10內(nèi)使用的存儲器 32的一部分。存儲器32可以表示圖1的存儲器觀、存儲器16、或高速緩沖存儲器沈的一 部分。請注意,存儲器32與圖2的存儲器31共享許多類似元素,其中,用相同的號碼來參 考相同的元素。對上文提供的存儲器31的許多元素的描述還適用于圖3的存儲器32的相 同元素。因此,將不描述圖3的完整操作和連接性。除控制寄存器48和模式邏輯50之外,控制邏輯66還包括共享XOR樹72、修正邏 輯76、數(shù)據(jù)合并邏輯78、和共享XOR樹80。共享XOR樹72和修正邏輯76與共享XOR樹52 和修正邏輯M類似地進行操作。然而,不是共享XOR樹72生成用于被存儲回到保護儲存器45的校驗位,而是首先通過修正邏輯76來修正用于部分寫的讀數(shù)據(jù)并隨后由數(shù)據(jù)合并 邏輯78將其與新的寫數(shù)據(jù)合并。被共享XOR樹80用來生成正確校驗位82的則是新寫數(shù) 據(jù)與正確讀數(shù)據(jù)(必要時,其被修正邏輯76修正)的此組合。在一個實施例中,隨后,與已 修正讀數(shù)據(jù)合并的寫數(shù)據(jù)連同校驗位82 —起被返回到存儲器存儲電路40以便分別存儲到 區(qū)塊0 7的相應(yīng)條目和保護儲存器45中。請注意,為了生成適當?shù)陌Y狀位74以修正未 被部分寫操作寫入的那些區(qū)塊的讀數(shù)據(jù),必須將來自每個區(qū)塊0 7的數(shù)據(jù)提供給共享M)R 樹72。例如,即使正在執(zhí)行僅到區(qū)塊1的部分寫操作,來自每個區(qū)塊0 7中的被訪問條 目的讀數(shù)據(jù)也被提供給共享XOR樹72以生成正確的癥狀位74以修正來自區(qū)塊0和2 7 的讀數(shù)據(jù)。然后,數(shù)據(jù)合并邏輯78將來自區(qū)塊0和2 7的已修正讀數(shù)據(jù)與將被寫入?yún)^(qū)塊 1的寫數(shù)據(jù)合并并將此合并數(shù)據(jù)提供給區(qū)塊0 7以及共享XOR樹80。在ECC模式下,共 享XOR樹80生成被提供給與寫操作訪問地址相對應(yīng)的保護儲存器45的條目的適當校驗位 82。在一個實施例中,在寫操作期間只有連同校驗位一起正被寫入的字節(jié)被更新,并且其它 區(qū)塊未被訪問,以便節(jié)省功率,即使數(shù)據(jù)合并邏輯提供關(guān)于部分寫的附加數(shù)據(jù)。在一個實施例中,修正邏輯76還將與讀數(shù)據(jù)字節(jié)相對應(yīng)的修正指示符提供給控 制邏輯66,所述讀數(shù)據(jù)字節(jié)在讀-修改-寫(RMW)的讀操作期間要求修正。當執(zhí)行RMW寫 時,這些指示符被用來還更新包含關(guān)于前一次讀取的錯誤數(shù)據(jù)的那些讀數(shù)據(jù)字節(jié),因此允 許在這種情況下修正存儲器陣列中的瞬態(tài)錯誤。通過執(zhí)行此更新,可以使多個錯誤隨著時 間推移的累積最小化,因為到存儲器條目的任何尺寸的任何寫周期將修正任何存儲的錯 誤。由于在某些實施例中,可以假設(shè)錯誤是稀少的,所以與另外更新的區(qū)塊相關(guān)聯(lián)的附加功 率可以是最小的。在奇偶校驗?zāi)J较?,共享M)R樹72生成被提供給與寫操作訪問地址相對應(yīng)的保護 儲存器45的條目的適當奇偶校驗位79。請注意,在奇偶校驗?zāi)J较?,還可以將相應(yīng)的奇偶 校驗位從保護儲存器45提供給總線24或14。存儲器32的其余部分如上文參照存儲器31所述的那樣操作。并且,請注意,對于 其中所有區(qū)塊0 7都被寫入的ECC模式下的全寫而言,并不首先需要在寫操作期間執(zhí)行 讀訪問(即,不需要執(zhí)行RMW)。也就是說,可以在單次訪問中(即,僅用一次寫訪問且沒有 讀訪問)執(zhí)行寫操作。對于全寫而言,從總線M或14向每個區(qū)塊0 7以及向共享XOR 樹80 (經(jīng)由數(shù)據(jù)合并邏輯78)提供寫數(shù)據(jù),以便生成被提供給保護儲存器45的校驗位。因 此,只需要單次訪問(即,不需要讀訪問)來執(zhí)行全寫。在奇偶校驗?zāi)J较?,不?zhí)行讀訪問, 無論寫是部分寫還是全寫。數(shù)據(jù)的每個字節(jié)連同相應(yīng)的字節(jié)奇偶校驗位一起被寫入存儲器 40的相應(yīng)區(qū)塊0 7和與該字節(jié)相對應(yīng)的保護儲存器45內(nèi)的奇偶校驗位。圖4圖示依照本發(fā)明的另一實施例的可在系統(tǒng)10內(nèi)使用的存儲器33的一部分。 存儲器33可以表示圖1的存儲器觀、存儲器16、或高速緩沖存儲器沈的一部分。請注意, 存儲器33與圖2的存儲器31和圖3的存儲器32共享許多類似元素,其中,用相同的號碼 來參考相同的元素。對上文提供的存儲器31和32的許多元素的描述還適用于圖4的存儲 器33的相同元素。因此,將不描述圖4的完整操作和連接性。如圖3的存儲器32的情況一樣,圖4的存儲器33也提供用于部分寫操作的讀數(shù) 據(jù)的修正以便保證正確性。然而,不是將寫數(shù)據(jù)和校驗位直接分別提供回區(qū)塊0 7和保 護儲存器45,如由圖3中的數(shù)據(jù)合并邏輯78和共享XOR樹80所做的那樣,而是將校驗位和寫數(shù)據(jù)寫入后寫入緩沖器102。該校驗位和寫數(shù)據(jù)將在稍后的時間點而不是當前周期中被 從后寫入緩沖器102寫入存儲器存儲電路40。在替換實施例中,請注意,后寫入緩沖器102 可以位于存儲器33內(nèi)或系統(tǒng)12內(nèi)的任何位置處。除控制寄存器48和模式邏輯50之外,控制邏輯86還包括共享XOR樹92、修正邏 輯96、共享XOR樹98、和后寫入緩沖器102。共享XOR樹92和修正邏輯96與共享XOR樹 52和修正邏輯M類似地進行操作。然而,不是共享XOR樹92生成用于被存儲回到保護儲 存器45的校驗位,而是首先通過修正邏輯96來修正用于部分寫的讀數(shù)據(jù)并隨后被連同新 的部分寫數(shù)據(jù)一起提供給后寫入緩沖器102的數(shù)據(jù)字段。因此,后寫入緩沖器102的數(shù)據(jù) 字段存儲新的寫數(shù)據(jù)與被共享XOR樹98用來生成正確校驗位100的正確讀數(shù)據(jù)(其在必 要時被修正邏輯96修正)的組合。校驗位100還被提供給后寫入緩沖器102,以便存儲在 緩沖器的校驗位部分中。請注意,尺寸指示符84也被從總線M或14提供給后寫入緩沖器 102,使得關(guān)于對于部分寫操作而言將被寫入的數(shù)據(jù)尺寸的尺寸信息也可以被存儲到后寫 入緩沖器102中。以這種方式,當后寫入緩沖器102中的數(shù)據(jù)將被存儲到存儲器存儲電路 40中時,到區(qū)塊0 7中的一個或多個區(qū)塊的寫數(shù)據(jù)的適當尺寸是已知的,并且適當?shù)男r?位可以被存儲在保護儲存器45的相應(yīng)條目中。如圖3的存儲器32的情況一樣,請注意,為 了生成適當?shù)陌Y狀位94以修正未被部分寫操作寫入的那些區(qū)塊的讀數(shù)據(jù),必須將來自所 有區(qū)塊0 7中每一個的數(shù)據(jù)提供給共享XOR樹92。在一個實施例中,修正邏輯96還將與 要求修正的讀數(shù)據(jù)字節(jié)相對應(yīng)的修正指示符提供給后寫入緩沖器102。當稍后執(zhí)行寫時,這 些指示符被用來還更新包含關(guān)于前一次讀取的錯誤數(shù)據(jù)的那些讀數(shù)據(jù)字節(jié),因此允許在這 種情況下修正存儲器陣列中的瞬態(tài)錯誤。通過執(zhí)行此更新,可以使多個錯誤隨著時間推移 的累積最小化,因為到存儲器條目的任何尺寸的任何寫周期將修正任何存儲的錯誤。存儲器33的其余部分如上文參照存儲器31或32所述的那樣操作。并且,請注 意,對于其中所有區(qū)塊0 7都被寫入的全寫而言,并不首先需要在寫操作期間執(zhí)行讀訪問 (即,不需要執(zhí)行RMW)。也就是說,可以在單次訪問中(即,僅用一次寫訪問且沒有讀訪問) 執(zhí)行寫操作。對于全寫而言,從總線對或14向后寫入緩沖器102的寫數(shù)據(jù)部分以及共享 XOR樹98提供寫數(shù)據(jù),以便生成也被提供給后寫入緩沖器102的校驗位100。因此,當在稍 后執(zhí)行寫時,只需要單次訪問(即,不需要讀訪問)來執(zhí)行全寫。圖5示出包括地址字段、數(shù)據(jù)字段、校驗位字段、尺寸字段、和有效字段的后寫入 緩沖器102的一個實施例。如上所述,數(shù)據(jù)字段可以存儲接收的寫數(shù)據(jù)或被與來自其它區(qū) 塊的已修正讀數(shù)據(jù)合并的接收的寫數(shù)據(jù)。地址字段可以存儲寫操作的寫訪問地址,并因此 指示區(qū)塊0 7和保護儲存器45中的哪些條目將被寫入。尺寸字段可以存儲寫數(shù)據(jù)的尺 寸信息,并且可以使用有效字段來指示被存儲在后寫入緩沖器102內(nèi)的當前值是否是有效 的。請注意,在一個實施例中,有效字段可以包括與將被寫入存儲器存儲電路40的數(shù)據(jù)字 段的各字節(jié)相對應(yīng)的多個位。在本實施例中,當執(zhí)行寫時,將只訪問與設(shè)定有效位相對應(yīng)的 存儲器存儲電路的那些區(qū)塊,因此節(jié)省功率。然而,在一個實施例中,保護儲存電路45將總 是被更新。請注意,后寫入緩沖器102可以以多種已知方式操作。例如,后寫入緩沖器102 的使用和定時、諸如后寫入緩沖器102的內(nèi)容被寫回到存儲器存儲電路40的時間可以如本 領(lǐng)域中已知的那樣。請注意,在某些實施例中,可以存在其中不需要保證正確性的時間段或應(yīng)用和應(yīng)該這樣的其它時間。因此,在一個實施例中,圖2的控制邏輯和圖3或4的控制邏輯兩者的 能力可以存在于存儲器觀、存儲器16、或高速緩沖存儲器沈內(nèi)。例如,在初始化周期期間 (諸如當存儲在存儲器存儲電路40中的數(shù)據(jù)被已知具有大量錯誤時),控制邏輯46的更簡 單能力可能是足夠的,而在初始化周期之后,可能需要控制邏輯66或86的更完整能力。因 此,附加電路可以存在于存儲器觀、存儲器16、或高速緩沖存儲器沈內(nèi)以允許在需要時呈 現(xiàn)并使用這兩種功能性。此類操作的選擇可以由系統(tǒng)10的用戶以多種方式進行,諸如通過 系統(tǒng)10內(nèi)的配置寄存器(諸如控制寄存器48)的設(shè)定。在一個實施例中,可以由系統(tǒng)10 的用戶所執(zhí)行的軟件來修改控制寄存器48,或者可以以其它方式進行配置。在一個實施例中,處理器12可以以流水線方式進行操作。例如,處理器12可以包 括處理器流水線,其包括用于指令獲取、指令解碼、寄存器讀取、執(zhí)行、和結(jié)果寫回的階段。 某些階段可以涉及執(zhí)行的多個時鐘周期。在一個實施例中,將執(zhí)行處理器流水線的某些或 所有電路位于處理器12的CPU 30內(nèi)。請注意,此電路對于本領(lǐng)域的技術(shù)人員來說是已知 的,并且本文將僅討論對該電路的修改。在一個實施例中,處理器12(例如CPU 30)包括多 個流水線階段、前饋邏輯、和反饋控制電路。在一個實施例中,處理器12還包括如本領(lǐng)域中 已知的指令預(yù)取緩沖器,以允許在解碼階段之前進行指令緩沖。指令可以通過進入指令解 碼寄存器(IR)從此預(yù)取緩沖器前進到指令解碼階段。圖6以表格形式圖示依照本發(fā)明的一個實施例的(例如CPU 30的)處理器12的 流水線階段。這些階段包括來自存儲器的指令獲取,階段0,可以將其縮寫為IFO ;來自存 儲器的指令獲取,階段1,可以將其縮寫為IFl ;指令解碼/寄存器讀取/操作數(shù)轉(zhuǎn)送/存 儲器有效地址生成,可以將其縮寫為DEC/RF READ/EA(或作為這些中的一個,取決于在特定 示例中該階段正在執(zhí)行什么功能);指令執(zhí)行階段0/存儲器訪問階段0,可以將其縮寫為 Ε0/Μ0(或者作為這些中的僅一個,取決于對于特定示例而言正在發(fā)生指令執(zhí)行階段還是正 在發(fā)生存儲器訪問);指令執(zhí)行階段1/存儲器訪問階段1,可以將其縮寫為El/Ml (或作為 這些中的僅一個,取決于對于特定示例而言正在發(fā)生指令執(zhí)行階段還是正在發(fā)生存儲器訪 問);以及向寄存器寫回,可以將其縮寫為WB。因此,請注意,所示的實施例包括6個階段。 或者,處理器流水線可以包括更多或更少的階段。例如,處理器流水線可以僅包括從存儲器 進行單指令獲取階段而不是具有IFO和IFl兩者。并且,請注意可以使用多個縮寫來指示 同一流水線階段。例如,如果正在針對特定指令計算有效地址,則可以將DEC/RF READ/EA 階段簡稱為EA階段或DEC/EA階段。類似地,如果正在執(zhí)行不要求存儲器訪問的指令(例 如,算術(shù)指令),則可以將Ε0/Μ0和E1/M1中的每一個分別稱為EO和El。如果正在執(zhí)行要 求存儲器訪問的指令(例如,加載/存儲指令),則可以將Ε0/Μ0和E1/M1中的每一個分別 稱為階段MO和Ml。仍參考圖6的示例性流水線,階段IFO和IFl從存儲器系統(tǒng)(例如從存儲器觀、高 速緩沖存儲器26、或存儲器16)檢索指令并確定在哪里執(zhí)行下一次指令獲取(例如生成指 令獲取地址)。在一個實施例中,每個周期從存儲器向指令緩沖器發(fā)送多達兩個32位指令 或四個16位指令。請注意,本文所使用的周期可以指的是處理器時鐘周期,因此還可以稱 為時鐘周期或處理器周期。解碼流水線階段(DEC/RFREAD/EA)解碼指令,從寄存器文件讀 取操作數(shù),并執(zhí)行依賴關(guān)系檢查,以及計算用于加載和存儲指令的有效地址。因此,根據(jù)存 在于解碼流水線階段中的指令的類型,可以在解碼流水線階段期間執(zhí)行不同的功能。
      指令執(zhí)行在每個執(zhí)行單元中的執(zhí)行流水線階段中的一個或多個中發(fā)生(在那里, 其可以在多個周期內(nèi)發(fā)生)。例如,使大多數(shù)加載/存儲指令的執(zhí)行形成流水線。在一個實 施例中,加載/存儲單元具有三個流水線階段,包括有效地址計算(DEC/RF READ/EA,或簡 稱為EA)、M0、和Ml。在一個實施例中,如下文將描述的,當執(zhí)行ECC時(S卩,當處于ECC模 式下時)使用Ml。簡單整數(shù)指令正常地完成流水線的EO階段中的執(zhí)行。乘法指令可能要求執(zhí)行階 段EO和El兩者,但是也可以使其形成流水線。大多數(shù)條件設(shè)置指令在EO階段中完成,因 此取決于條件設(shè)置指令的條件轉(zhuǎn)移(branch)可以在此EO階段中解析(resolve)。請注意, 一個指令無論是僅使用一個流水線執(zhí)行階段的簡單指令或要求不止一個流水線執(zhí)行階段 的指令,可以將其描述為促使數(shù)據(jù)處理器(例如,處理器1 在指令的執(zhí)行期間執(zhí)行一組計 算操作。在簡單指令的情況下,可以在EO或El中執(zhí)行該組計算操作(例如,取決于處理器 12在ECC還是奇偶校驗?zāi)J较虏僮鳎缦挛膶⒚枋龅?。在要求不止一個流水線執(zhí)行階段 的指令的情況下,可以使用EO和El兩者來執(zhí)行該組計算操作。在一個實施例中,結(jié)果前饋硬件(如本領(lǐng)域中已知的)將一個指令的結(jié)果轉(zhuǎn)送到 隨后指令的一個或多個源操作數(shù)中,使得數(shù)據(jù)相關(guān)指令的執(zhí)行不必等到WB階段中的結(jié)果 寫回的完成。還可以提供前饋硬件以允許完成的指令從全部三個執(zhí)行階段(DEC、E0、和El) 轉(zhuǎn)繞至第一執(zhí)行階段用于后續(xù)的數(shù)據(jù)相關(guān)指令。當指令最初在流水線中(諸如在EO或MO 階段中)完成時,指令結(jié)果流過流水線的后續(xù)階段,但是不執(zhí)行進一步計算。這些階段被稱 為前饋階段(在流水線流程圖中被示為FF),并且可以將結(jié)果作為輸入提供給流水線中的 后續(xù)指令。在一個實施例中,當奇偶校驗保護被用于數(shù)據(jù)存儲器時(S卩,當存儲器在奇偶校 驗?zāi)J较虏僮鲿r),加載和存儲訪問僅使用流水線的EA和MO階段,并且在MO結(jié)束時可獲得 加載數(shù)據(jù)以供后續(xù)指令使用。如果加載之后的指令使用被所述加載所訪問的加載數(shù)據(jù),則 不存在停頓(stall),除非其被用于EA階段中的緊接著的后續(xù)EA計算。在一個實施例中,當ECC被用于數(shù)據(jù)存儲器時(S卩,當存儲器在ECC模式下操作 時),數(shù)據(jù)存儲器訪問要求兩個存儲器階段。并且,在ECC模式下,簡單整數(shù)指令的執(zhí)行被移 動到El階段。也就是說,不是如上所述在EO中執(zhí)行簡單整數(shù)指令的執(zhí)行,而是可以將它們 在El中執(zhí)行。通過這樣做,通常仍不要求停頓,即使具有ECC的存儲器訪問要求附加周期 以便執(zhí)行檢錯和糾錯。不要求停頓,因為簡單整數(shù)指令是可以在單個執(zhí)行階段中完成的單 周期指令。雖然將整數(shù)執(zhí)行指令轉(zhuǎn)移到El階段延遲DEC階段中的條件轉(zhuǎn)移指令所使用的 比較結(jié)果和條件代碼且這可以使轉(zhuǎn)移判定結(jié)果延遲,但仍可以實現(xiàn)凈性能益處,諸如當采 用轉(zhuǎn)移預(yù)測硬件(如本領(lǐng)域中已知的)時,因為可以在條件代碼設(shè)置之前預(yù)測并獲取轉(zhuǎn)移 目標地址。圖7 17圖示用于不同類型的指令且在不同操作模式下(諸如在奇偶校驗或ECC 模式下)的流水線流程的各種示例。對于每個示例而言,請注意,提供了時間軸,其中,時間 軸上的每個狹槽指的是時隙,其中,此時隙可以例如對應(yīng)于時鐘周期。流水線流程指示相對 于時間而言每個指令(在流程的左側(cè)列出)何時處于流水線的特定階段。例如,如在圖7 中看到的,第一指令在圖7所示的第一時隙中(即在第一時鐘周期期間)進入IF0。在第 二時隙中(即在第二時鐘周期期間),第一指令從IFO階段移動到IFl階段,并且第二指令進入IFO階段。在第三時隙中(即在第三時鐘周期期間),第一指令從IFl階段移動到DEC 階段,第二指令從IFO階段移動到IFl階段,并且第三指令移動到IFO階段中。如何繪制流 水線流程的此描述適用于圖7 17中的每一個。圖7圖示當在奇偶校驗?zāi)J较虏僮鲿r的單循環(huán)指令的流水線流程的示例。在本示 例中,按照程序順序發(fā)布并完成單周期指令序列。大多數(shù)算術(shù)和邏輯指令落入此種類的單 周期指令。本示例示出第一指令被前饋到第二指令的操作數(shù)之一的結(jié)果。如圖7中的從第 一行的EO到第二行的EO的箭頭200所指示的,第一指令(在階段EO中確定)的結(jié)果被前 饋硬件轉(zhuǎn)送到第二指令的EO階段,使得第二指令能夠在其執(zhí)行期間使用第一指令的此結(jié) 果,而不必等待第一指令的結(jié)果在WB階段中被寫回,該寫回將導(dǎo)致許多流水線停頓。請注 意,在本示例中,使用前饋,不需要流水線停頓。并且,請注意,在本示例中,EO階段后跟FF 階段,該FF階段是對這些指令的不使用的El階段。在FF階段中,還可以(諸如從第一指 令向第三指令的EO階段)轉(zhuǎn)送操作數(shù)。圖8圖示當在ECC模式下操作時的單循環(huán)指令的流水線流程的示例。在本示例中, 按照程序順序發(fā)布并完成單周期指令的序列。大多數(shù)算術(shù)和邏輯指令落入此種類的單周期 指令。在本身示例中,EO階段是簡單通過階段(如DEC與El階段之間的圖8中的“_”所指 示的),用來使來自寄存器文件的可用輸入值延遲直至El階段。圖8的示例示出第一指令 的結(jié)果被前饋到第二指令的操作數(shù)之一中(如圖8中的從第一行的El到第二行的El的箭 頭202所指示的)。以這種方式,如在圖7的示例的情況下一樣,第二指令可以使用第一指 令的結(jié)果而不必等待第一指令的結(jié)果在WB階段中被寫回,該寫回將導(dǎo)致許多流水線停頓。 請注意,在本示例中,使用前饋,不需要流水線停頓。圖9圖示在奇偶校驗?zāi)J较虏僮鞯暮蟾鷨沃芷谥噶畹膬蓚€加載指令的流水線流 程的示例。在奇偶校驗?zāi)J较?,針對加載指令,在DEC/EA階段中計算有效地址,并在MO階 段中訪問存儲器(例如,存儲器觀或存儲器16或高速緩沖存儲器沈)??梢栽贛O中執(zhí)行 數(shù)據(jù)選擇和對準,并且在MO階段結(jié)束時可獲得結(jié)果以用于隨后的指令。在本示例中,Ml階 段僅僅是前饋階段,如圖9中的FF所指示的,其用來保持加載數(shù)據(jù)直至其到達WB階段。例 如,針對第一加載指令,加載數(shù)據(jù)被保持在Ml中(在圖9中標記為FF),直至第一加載指令 在下一個時隙中進入流水線的WB階段。如果隨后的指令未將該數(shù)據(jù)用于有效地址計算或 乘法指令,則不發(fā)生停頓。在圖9的所示實施例中,加載指令的序列中的第一加載指令饋送 第三指令的源操作數(shù)之一,并且加載指令的序列中的第二加載指令饋送第三指令的第二源 操作數(shù)。也就是說,如箭頭204所指示的,第一加載指令的加載數(shù)據(jù)被前饋到第三指令的EO 階段,并且如箭頭206所指示的,第二加載指令的加載數(shù)據(jù)也被前饋到第三指令的EO階段。 在本示例中,第三指令是單周期指令,諸如,例如使用兩個源操作數(shù)的算術(shù)或邏輯指令。由 于這些前饋路徑,不導(dǎo)致停頓,因為第三指令不需要等待第一和第二指令進入WB階段。圖10圖示在ECC模式下操作的后跟單周期指令的兩個加載指令的流水線流程的 示例。在ECC模式下,針對加載指令,在DEC/EA階段中計算有效地址,并在MO和Ml階段中 訪問存儲器(例如,存儲器觀或存儲器16或高速緩沖存儲器沈)。例如,在MO階段中訪 問數(shù)據(jù),并在Ml階段中執(zhí)行檢錯、修正、和對準,并且,隨后可在Ml階段結(jié)束時獲得結(jié)果以 用于隨后的指令。如果隨后的指令未將該數(shù)據(jù)用于EA計算或乘法指令,則不發(fā)生停頓。在 圖10的示例中,第二加載指令饋送第三指令的源操作數(shù)中的一個(如圖10中的箭頭210所示)。第三指令的另一源操作數(shù)被從第一加載指令前饋到EO階段,在所示的實施例中, 該EO階段是延遲階段(如圖10中的“_”所指示的),在那里,其隨后在下一個周期上傳播 到El階段。由于提供前饋路徑,所以不導(dǎo)致停頓。在所示的實施例中,第三指令是單周期 指令,諸如,例如使用兩個源操作數(shù)的算術(shù)或邏輯指令。因此,雖然第三指令通過延遲階段 且在El之前不執(zhí)行(而不是在EO中執(zhí)行),但不發(fā)生停頓,因為存在可用的兩個執(zhí)行階段 (E0和El),并且單周期指令僅需要執(zhí)行一個執(zhí)行階段。在一個實施例中,在EO中而不是El 中發(fā)生諸如第三指令的單周期指令的執(zhí)行,例如當不在ECC模式下操作時。在一個實施例 中,當ECC模式未被啟用時,在EO中發(fā)生單周期指令的執(zhí)行,但是當ECC模式被啟用時,單 周期指令的執(zhí)行從EO (其中,EO僅僅變成延遲階段)移動到El。因此,單指令的執(zhí)行可以 基于操作模式(諸如基于ECC模式是否被啟用)在EO和El之間移動。在一個實施例中, 當ECC未被啟用時,奇偶校驗?zāi)J奖粏⒂??;蛘?,當ECC未被啟用時,奇偶校驗?zāi)J娇赡芪?被啟用,這里來,未在執(zhí)行檢錯,或者這里,另一檢錯方案被啟用。還請注意,在一個實施例 中,單指令的執(zhí)行可以基于前一加載是否是要求完成兩次存儲器訪問的不對準加載而在EO 與El之間移動。在本實施例中,即使當ECC未被啟用時,基于檢測到前一加載指令未對準 并要求流水線的MO和Ml兩階段完成執(zhí)行未對準訪問所需的兩次存儲器訪問,單周期指令 的執(zhí)行可以動態(tài)地從EO移動到El。本實施例看起來與圖10相同,例外的是ECC未被啟用。圖11圖示在奇偶校驗?zāi)J较虏僮鲿r后跟單周期指令的兩個存儲指令的流水線流 程的示例。在奇偶校驗?zāi)J较?,針對存儲指令,在DEC/EA階段中計算有效地址,并在MO階 段中寫入存儲器(例如存儲器觀、存儲器16、或高速緩沖存儲器26)。Ml階段僅僅是未使 用的前饋階段(如圖11中的“ (FF) ”所指示的代替Ml階段)。此外,請注意,存儲指令通常 也不使用WB階段,如圖11中的WB階段兩側(cè)的括號所指示的。圖12圖示在ECC模式下操作后跟單周期指令的兩個存儲指令的流水線流程的示 例。在ECC模式下,針對存儲指令,在DEC/EA階段中計算有效地址,并在MO和Ml階段中訪 問存儲器(例如,存儲器觀或存儲器16或高速緩沖存儲器26)。例如,在MO階段中讀取數(shù) 據(jù),并在Ml中執(zhí)行檢錯、糾錯、和數(shù)據(jù)修改(例如,以便存儲回已修正數(shù)據(jù))、以及已更新癥 狀(syndrome)生成。然后,可以在Ml中向緩沖器(諸如后寫入緩沖器102)發(fā)送更新值。 然后,可以在下一存儲指令的Ml中將此存儲的更新值寫入存儲器。也就是說,在當前存儲 指令的Ml階段中,來自前一存儲指令的存儲數(shù)據(jù)被寫入存儲器。在一個實施例中,來自前 一存儲指令的此存儲數(shù)據(jù)被存儲在后寫入緩沖器(諸如后寫入緩沖器10 中,直至其被寫 入存儲器。因此,參考圖12的示例,在第一存儲指令的階段Ml中,來自前一存儲指令(未 示出)的前一存儲數(shù)據(jù)將被寫入存儲器,在那里,此前一存儲數(shù)據(jù)可以被存儲在后寫入緩 沖器(諸如后寫入緩沖器10 中,直至其被寫入存儲器。來自圖12的第一存儲指令的當 前存儲數(shù)據(jù)因此可以在Ml中被發(fā)送到后寫入緩沖器(諸如后寫入緩沖器10 ,以便隨后存 儲到存儲器。類似地,在第二存儲指令的階段Ml中,來自圖12的第一存儲指令的前一存儲 數(shù)據(jù)(其先前被存儲到后寫入緩沖器)被寫入存儲器。來自圖12的第二存儲指令的當前 存儲數(shù)據(jù)可以在Ml中被發(fā)送到后寫入緩沖器(諸如后寫入緩沖器10 ,以便隨后存儲到存 儲器。請注意,在一個實施例中,正常地,可以從存儲指令的MO階段而不是存儲指令的 Ml階段發(fā)送該存儲指令的寫數(shù)據(jù)(例如至后寫入緩沖器10 。然而,在所示的實施例中,寫數(shù)據(jù)被從要被寫的存儲指令的Ml階段(例如向后寫入緩沖器10 發(fā)送到下一存儲指令 的Ml階段中的存儲器。在一個實施例中,當ECC模式未被啟用時,在MO中發(fā)生存儲指令的 寫數(shù)據(jù)的發(fā)送(例如,到后寫入緩沖器102),但是當ECC模式被啟用時,寫數(shù)據(jù)的發(fā)送從MO 移動到M1,因為可以首先通過讀來訪問存儲器以便提供用于適當校驗位生成的數(shù)據(jù)以進行 存儲。因此,存儲指令的寫數(shù)據(jù)的發(fā)送可以基于操作模式在MO和Ml之間移動(諸如,基于 ECC模式是否被啟用)。請注意,在所示的實施例中,由于ECC模式被啟用,所以第三指令的 執(zhí)行(其為單周期指令)從EO移動到E1,如上文例如參照圖10所述。圖13 15圖示流程變化指令流水線操作的示例。圖13圖示轉(zhuǎn)移指令的流水線 流程的操作示例(其導(dǎo)致跳轉(zhuǎn)(taken)的正確預(yù)測情況下的BTB命中),與處于ECC還是奇 偶校驗?zāi)J綗o關(guān)。在一個實施例中,流程指令的簡單變化要求3個周期(如果在奇偶校驗 模式下)或4個周期(如果在ECC模式下)以便用用于跳轉(zhuǎn)轉(zhuǎn)移的目標指令和未得到BTT 命中(即,其導(dǎo)致BTB名中失敗)且已被不正確地預(yù)測的轉(zhuǎn)移和鏈接指令來重新填充流水 線。對于轉(zhuǎn)移指令,在某些情況下,可以通過投機地執(zhí)行目標獲取來減少這3至4個周期, 同時如果可以從BTB獲得轉(zhuǎn)移目標地址(即,如果轉(zhuǎn)移目標地址命中BTB中的有效條目且 被預(yù)測為跳轉(zhuǎn)),則轉(zhuǎn)移指令仍被獲取到指令緩沖器中。當足夠早地發(fā)起目標獲取并正確地 預(yù)測轉(zhuǎn)移時,結(jié)果得到的轉(zhuǎn)移定時可以減少至單個時鐘。如圖13所示,轉(zhuǎn)移指令導(dǎo)致BTB 命中并被正確地預(yù)測,因此在轉(zhuǎn)移指令與其目標指令的執(zhí)行之間不導(dǎo)致停頓,無論是處于 奇偶校驗還是ECC模式。圖14示出在奇偶校驗?zāi)J较碌那闆r的示例,其中,轉(zhuǎn)移被不正確地預(yù)測或者發(fā)生 BTB命中失敗,因此要求3個周期來修正該錯誤預(yù)測結(jié)果。在本示例中,第一指令是比較指 令,并且第二指令是轉(zhuǎn)移指令,其解析是基于比較指令的結(jié)果。并且,請注意,當實際上轉(zhuǎn)移 指令將被解析為跳轉(zhuǎn)時,其被預(yù)測為不跳轉(zhuǎn)。因此,如圖14所示,在EO中可獲得比較指令 的結(jié)果。因此,可以在DEC階段中解析轉(zhuǎn)移指令。因此,該轉(zhuǎn)移將在此DEC階段中被解析為 跳轉(zhuǎn),意味著在該DEC階段之后的時隙中將發(fā)生目標獲取(用于目標指令的IFO階段,縮寫 為TF0)。在這種情況下,奇偶校驗?zāi)J较碌霓D(zhuǎn)移錯誤預(yù)測花費3個周期(例如,請注意,在 進入DEC階段的轉(zhuǎn)移指令與進入DEC階段的目標指令(即用于跳轉(zhuǎn)轉(zhuǎn)移的指令流中的下一 個指令)之間存在3個周期)。圖15示出在ECC模式下的情況的示例,其中,轉(zhuǎn)移被不正確地預(yù)測或者發(fā)生BTB 命中失敗,因此要求4個周期來修正該錯誤預(yù)測結(jié)果。在本示例中,第一指令是比較指令, 并且第二指令是轉(zhuǎn)移指令,其解析是基于比較指令的結(jié)果。并且,請注意,當實際上轉(zhuǎn)移指 令將被解析為跳轉(zhuǎn)時,其被預(yù)測為不跳轉(zhuǎn)。并且,由于本示例采取ECC模式下的操作,所以 比較指令的執(zhí)行(由于其為單周期指令)被從階段EO移動到階段El (如上文例如相對于 圖12所述)。因此,如圖15所示,在El中而不是在EO中可獲得比較指令的結(jié)果。因此,直 到EO階段而不是DEC階段之前不能解析轉(zhuǎn)移指令,意味著在該EO階段之后的時隙中將發(fā) 生目標獲取(用于目標指令的IFO階段,縮寫為TF0)。在這種情況下,ECC模式下的轉(zhuǎn)移錯 誤預(yù)測花費4個周期(例如,請注意,在進入DEC階段的轉(zhuǎn)移指令與進入DEC階段的目標指 令(即用于跳轉(zhuǎn)轉(zhuǎn)移的指令流中的下一個指令)之間存在4個周期)。然而,雖然由于在 ECC模式下操作引起的單周期比較指令的執(zhí)行到El階段的移動與不將該執(zhí)行移動到El相 比或與奇偶校驗?zāi)J较啾葘?dǎo)致附加周期以修正錯誤預(yù)測結(jié)果,但可能這種情況不像其中改變單周期指令的執(zhí)行階段可能有利的情況那樣常常發(fā)生,因為正確的轉(zhuǎn)移預(yù)測允許消除損失。圖16圖示ECC模式下的示例性流水線流程,具有部分寬度存儲指令,后跟加載指 令,后跟單周期指令。如上文所討論的部分寬度存儲指令可以指的是向存儲器內(nèi)的少于所 有區(qū)塊執(zhí)行寫的指令。由于在上文所討論的一個實施例中,需要讀-修改-寫(RMW)以進 行部分存儲,所以不能在沒有停頓的情況下在MO中開始下一個加載指令的執(zhí)行。相反,在 部分存儲之后的加載時,導(dǎo)致單個停頓。在ECC模式下,針對單個存儲指令,在DEC/EA階段 中計算有效地址,并在Ml階段中用前一存儲指令的數(shù)據(jù)寫入存儲器(例如存儲器觀或存 儲器16或高速緩沖存儲器26)(如上文參照圖12所述,其中,此前一存儲指令的數(shù)據(jù)可以 被存儲在諸如后寫入緩沖器102的后寫入緩沖器中,直至其被寫入存儲器)。在MO階段中 讀取數(shù)據(jù),并在Ml階段中執(zhí)行檢錯、數(shù)據(jù)修改、和ECC癥狀生成??梢詫⒏轮蛋l(fā)送到諸如 后寫入緩沖器102的緩沖器以便稍后存儲到存儲器。可以稍后在下一個部分寬度存儲指令 的Ml階段(其為其中針對部分寬度存儲發(fā)生存儲器寫入的階段)中或在下一個全寬存儲 指令的MO階段(其為針對全寬存儲發(fā)生存儲器寫入的階段,因為如上文所討論的,不需要 在寫訪問之前執(zhí)行讀訪問)中將更新值寫入存儲器。因此,如在圖16的示例中看到的,第二加載指令停頓在DEC/EA階段與MO階段之 間,因為在第一指令的Ml階段期間,寫入了前一存儲指令的數(shù)據(jù)。此寫操作要求兩個周期, 因為需要RMW操作,這是隨后的加載指令停頓的原因。類似地,第三單周期指令停頓在DEC 階段與延遲階段(對應(yīng)于EO階段)之間,這里,執(zhí)行發(fā)生在El階段中,因為ECC模式被啟 用?;蛘?,請注意,第三單周期指令可以停頓在IFl階段與DEC階段之間。圖17圖示ECC模式下的示例性流水線流程,具有全寬存儲指令,后跟加載指令,后 跟單周期指令。如上文所討論的全寬存儲指令可以指的是向存儲器內(nèi)的所有區(qū)塊執(zhí)行寫的 指令。由于在上文所討論的一個示例性實施例中不要求RMW,所以下一個加載指令的執(zhí)行 可以在MO階段中開始而不是必須停頓直至前一存儲的Ml階段之后,如在圖16的示例中的 情況那樣。因此,在一個實施例中,對于全寬存儲,隨后的加載指令不需要停頓,與其中隨后 的加載指令被停頓的用于部分寬度存儲的情況不同。在ECC模式下,對于全寬存儲指令, 在DEC/EA階段中計算有效地址,并在MO階段中用來自前一存儲指令的數(shù)據(jù)的存儲數(shù)據(jù)寫 入存儲器(例如存儲器觀或存儲器16或高速緩沖存儲器26)。在MO階段中不讀取數(shù)據(jù)。 相反,可以執(zhí)行ECC癥狀生成,并且在下一部分寬度存儲指令的Ml中(其為對于部分寬度 存儲而言發(fā)生存儲器寫的階段,因為要求RMW)或在下一個全寬指令的MO中(其中不要求 RMW)將更新值寫入存儲器。因此,在一個實施例中,當在ECC模式下操作時,基于寫的寬度 (例如部分寬度存儲對比全寬存儲),加載指令可以在從存儲指令到加載指令的過渡時停 頓。并且,在ECC模式下,根據(jù)當前存儲指令是部分寬度還是全寬訪問,進行將前一存儲指 令的前一存儲數(shù)據(jù)到存儲器的寫入從Ml移動到MO的判定。在一個實施例中,從Ml到MO 的移動僅在當前存儲指令是對準的全寬訪問時發(fā)生。圖18圖示依照本發(fā)明的一個實施例的圖1的數(shù)據(jù)處理系統(tǒng)的單循環(huán)執(zhí)行單元 300。執(zhí)行單元300包括算術(shù)邏輯單元(ALU)312(其中,可以使用本領(lǐng)域中已知的任何ALU)、 鎖存復(fù)用器(MUX) 308和309、復(fù)用器(MUX) 304、305、和306、D型觸發(fā)器301、302、和303。 請注意,可以用多種不同類型的存儲元件來實現(xiàn)觸發(fā)器301 303。并且,請注意,代替鎖存MUX 308和309,可以使用MUX與其輸出端上的存儲元件的組合。觸發(fā)器301 303中的每 一個接收控制El階段的定時的El時鐘信號332。執(zhí)行單元300還接收模式指示符、模式 314。此模式指示符可以是如上所述的模式指示符62,由模式邏輯50提供,或者,替代地, 可以針對處理器流水線復(fù)制用于控制模式(例如控制ECC模式是否被啟用)的電路。在另 一實施例中,控制寄存器48和模式邏輯50可以位于存儲器外面并被存儲器和流水線電路 共享而不是針對流水線電路被復(fù)制。模式314被提供給MUX 304 306中的每一個的控制 輸入以選擇到每個MUX的哪個輸入被作為相應(yīng)輸出提供。MUX 304接收第一源操作數(shù)、第一 數(shù)據(jù)輸入端處的SRC1318和觸發(fā)器301的輸出作為數(shù)據(jù)第二輸入。SRCl 318也被提供給觸 發(fā)器301的數(shù)據(jù)輸入端。MUX 305接收第二源操作數(shù)、第一數(shù)據(jù)輸入端處的SRC2 320和觸 發(fā)器302的輸出作為第二數(shù)據(jù)輸入。SRC2 320也被提供給觸發(fā)器302的數(shù)據(jù)輸入端。MUX 308接收ALU 312的輸出(結(jié)果326)作為第一數(shù)據(jù)輸入、接收觸發(fā)器303的輸出作為第二 數(shù)據(jù)輸入、接收第一前饋輸入alt_ffwd_l 316作為第三數(shù)據(jù)輸入、接收MUX 304的輸出作 為第四數(shù)據(jù)輸入、并接收源控制信號SRC cntl222作為控制輸入。MUX 308在將輸出提供給 ALU 312的第一輸入端之前鎖存其輸出。MUX 309接收MUX 305的輸出作為第一數(shù)據(jù)輸入、 接收第二前饋輸入alt_ffwd_2 3 作為第二數(shù)據(jù)輸入、接收觸發(fā)器303的輸出作為第三數(shù) 據(jù)輸入、接收ALU 312的輸出(結(jié)果326)作為第四數(shù)據(jù)輸入、并接收SRC cntl 222作為控 制輸入。MUX 309在將輸出提供給ALU 312的第二輸入端之前鎖存其輸出。結(jié)果3 被提 供給MUX 306的第一輸入端和觸發(fā)器303的數(shù)據(jù)輸入端。觸發(fā)器303的數(shù)據(jù)輸出被提供給 MUX 306的第二輸入端,并且MUX 306的輸出被作為執(zhí)行單元300的輸出334提供給WB階 段電路。在操作中,執(zhí)行單元300能夠根據(jù)操作模式(例如ECC是否被啟用)操作其在EO 或El中執(zhí)行的定時。因此,基于模式314的值,MUX 304和305將SRCl 318和SRC2 320作 為輸入分別提供給MUX308和309,或者將SRCl 318和SRC2 320的延遲型式作為輸入提供 給MUX 308和309。例如,在一個實施例中,用于模式314的“0”的值指示非ECC模式(例 如“0”的值在一個實施例中可以指示奇偶校驗?zāi)J?且“1”的值指示ECC模式。因此,在 非ECC模式下,SRCl 318和SRC2 320被作為輸入直接提供給MUX 308和309 (其中,用于 模式314的“0”的值選擇MUX 304和305的第一輸入端),因為由執(zhí)行單元300進行的執(zhí)行 將在第一執(zhí)行階段EO中發(fā)生,如上所述。然而,在ECC模式下,單周期指令的執(zhí)行從第一執(zhí) 行階段EO移動到第二執(zhí)行階段El。因此,對于附加時鐘周期,選擇MUX 304和305的第二 輸入端(由于對于ECC模式而言模式314的值是“1”),其分別保持SRCl 318和SRC2 320 的值。當E1_CLK 332被確證時(指示階段El),隨后觸發(fā)器301和302捕捉在階段EO中提 供的SRCl 318和SRC2 320值以隨后提供給MUX 308和309。并且,執(zhí)行單元300可以前饋來自階段EO或階段El的結(jié)果。例如,當結(jié)果3 被 作為輸入反饋到MUX 308和309時,其對應(yīng)于來自階段EO的前饋結(jié)果。類似地,當觸發(fā)器 303的輸出被作為輸入反饋到MUX 308和309時,其對應(yīng)于來自階段El的前饋結(jié)果(其中, 請注意,觸發(fā)器303的輸出端被提供E1_CLK 332,該E1_CLK 332對應(yīng)于在El而不是EO處 捕捉的結(jié)果326)。在ECC模式下,模式314選擇在El結(jié)束時在輸出端334處(對于WB階 段而言)提供結(jié)果326的MUX 306的第一輸入端。然而,在非ECC模式下,模式314選擇 MUX 306的第二輸入端,其由于例如由E1_CLK 332定時的觸發(fā)器301 303的使用而在El結(jié)束時在輸出端334處(對于WB階段)提供結(jié)果326,所述E1_CLK 332通過階段EO至階 段El保持SRC1318、SRC2 320、和結(jié)果326。因此,如上文所討論的,階段EO有效地變成延 遲階段。以這種方式,在ECC模式下,執(zhí)行單元300能夠?qū)沃芷谥噶畹膱?zhí)行從EO移動到 E1。現(xiàn)在,應(yīng)認識到已提供了能夠在奇偶校驗或ECC模式下操作的存儲器。此外,在 ECC模式下,可以用多個訪問來執(zhí)行部分寫入(即向少于存儲器中的所有區(qū)塊寫入),所述 多個訪問包括讀訪問和寫訪問(用于執(zhí)行RMW)。然而,如本文所述,已經(jīng)描述了在ECC模 式下可以用單次訪問、即在一次訪問中執(zhí)行全寫(即向存儲器中的所有區(qū)塊寫入)的存儲 器。也就是說,可以在不需要寫訪問之前的讀訪問的情況下用單次寫訪問來執(zhí)行全寫。以 這種方式,存儲器當處于ECC模式時可以比先前可獲得的那些更高效地操作。并且,依照一 個實施例,已描述了這樣的存儲器對于ECC模式下的部分寫而言針對RMW操作的讀訪問部 分僅允許沒有用部分寫來寫入的那些區(qū)塊被讀取。雖然在本實施例中,檢驗位的正確性和 癥狀位的生成不能保證是正確的,但可能存在這可以被允許、可管理、乃至期望的情況。并 且,依照一個實施例,已描述了這樣的存儲器對于ECC模式下的部分寫而言僅允許用部分 寫來寫入的那些區(qū)塊連同包含用于由存儲器條目存儲的數(shù)據(jù)的全部寬度的校驗位的保護 儲存器一起被更新。此外,依照一個實施例,已描述了這樣的存儲器對于ECC模式下的部 分寫而言另外允許在讀-修改-寫操作的讀部分期間要求修正的那些區(qū)塊、連同要被更新 的對應(yīng)于部分寫的那些區(qū)塊、以及包含用于由存儲器條目存儲的數(shù)據(jù)的全部寬度的校驗位 的保護儲存器用已修正讀取數(shù)據(jù)來寫入。并且,如本文所述,當在ECC模式下對比在非ECC模式下操作時,可以以不同方式 配置處理器流水線。例如,在ECC模式下,可以將單周期指令的執(zhí)行從一個執(zhí)行階段移動至 另一階段,或者可以將寫數(shù)據(jù)的發(fā)送從一個執(zhí)行階段移動到另一個。因此,基于處理器12 或存儲器是在ECC模式下還是非ECC模式下運行,可以以不同方式來配置處理器流水線。并 且,基于非ECC模式下的存儲器對準,可以將單周期指令的執(zhí)行從一個執(zhí)行階段移動到另 一階段。由于實現(xiàn)本發(fā)明的裝置大部分由本領(lǐng)域的技術(shù)人員已知的電子部件和電路組成, 所以將不比認為描述本發(fā)明所需的程度更多地解釋細節(jié),以便理解并認識本發(fā)明的根本構(gòu) 思,并且不混淆或偏離本發(fā)明的講授內(nèi)容。在適當情況下,可以使用多種不同的信息處理系統(tǒng)來實現(xiàn)以上實施例中的某些。 例如,雖然圖1及其討論描述了示例性信息處理架構(gòu),但本示例性架構(gòu)僅僅是為了討論本 發(fā)明的各種方面時的有用參考而提出的。當然,已出于討論的目的簡化了架構(gòu)的描述,并且 其僅僅是可以依照本發(fā)明來使用的許多不同類型的適當架構(gòu)中的一個。本領(lǐng)域的技術(shù)人員 將認識到邏輯塊之間的界限僅僅是說明性的,并且替換實施例可以將邏輯塊或電路元件合 并或?qū)Ω鞣N邏輯塊或電路元件施加功能的交替分解。因此,應(yīng)理解的是本文所描繪的架構(gòu)僅僅是示例性的,并且事實上,可以實現(xiàn)許多 實現(xiàn)相同功能的其它架構(gòu)。在簡要、但仍明確的意義上,實現(xiàn)相同功能的部件的任何布置被 有效地“關(guān)聯(lián)”,使得實現(xiàn)期望的功能。因此,可以將本文中的被組合以實現(xiàn)特定功能的任何 兩個部件視為彼此“相關(guān)聯(lián)”,使得實現(xiàn)期望的功能,無論是架構(gòu)還是中間部件。類似地,可 以將被這樣關(guān)聯(lián)的任何兩個部件視為被相互“可操作地連接”或“可操作地耦合”以實現(xiàn)期望的功能。并且,例如,在一個實施例中,數(shù)據(jù)處理系統(tǒng)10的所示元件是位于單個集成電路 上或同一設(shè)備內(nèi)的電路?;蛘?,數(shù)據(jù)處理系統(tǒng)10可以包括彼此互連的任何數(shù)目的單獨集成 電路或單獨設(shè)備。例如,存儲器16可以位于與處理器12相同的集成電路上或單獨集成電 路上或位于與數(shù)據(jù)處理系統(tǒng)10的其它元件離散地分開的另一外圍設(shè)備或從屬設(shè)備內(nèi)。外 圍設(shè)備18和20還可以位于單獨的集成電路或設(shè)備上。并且,例如,數(shù)據(jù)處理系統(tǒng)10或其 一部分可以是物理電路或可轉(zhuǎn)換成物理電路的邏輯表示的軟表示或代碼表示。同樣地,可 以在任何適當類型的硬件描述語言中體現(xiàn)數(shù)據(jù)處理系統(tǒng)10。此外,本領(lǐng)域的技術(shù)人員應(yīng)認識到上述操作的功能之間的界限僅僅是說明性的。 可以將多個操作的功能組合到單個操作中,和/或可以將單個操作的功能分布在附加操作 中。此外,替換實施例可以包括特定操作的多個實例,并且在各種其它實施例中可以改變操 作順序。本文所述的所有或某些軟件可以是數(shù)據(jù)處理系統(tǒng)10例如從諸如存儲器16的計算 機可讀介質(zhì)或其它計算機系統(tǒng)上的其它介質(zhì)接收到的元素。此類計算機可讀介質(zhì)可以被永 久性地、可去除地或遠程地耦合到諸如數(shù)據(jù)處理系統(tǒng)10的信息處理系統(tǒng)。計算機可讀介質(zhì) 可以包括例如但不限于任何數(shù)目的以下各項包括磁盤和磁帶存儲介質(zhì)的磁存儲介質(zhì);光 學(xué)存儲介質(zhì),諸如致密盤介質(zhì)(例如CD-R0M、CD-R等)和數(shù)字視頻盤存儲介質(zhì);非易失性存 儲介質(zhì),包括基于半導(dǎo)體的存儲器單元,諸如FLASH存儲器、EEPROM、EPROM、ROM ;鐵磁數(shù)字 存儲器;MRAM ;易失性存儲介質(zhì),包括寄存器、緩沖器或高速緩沖存儲器、主存儲器、RAM等; 以及數(shù)據(jù)傳輸介質(zhì),包括計算機網(wǎng)絡(luò)、點到點遠程通信設(shè)備、和載波傳輸介質(zhì),僅舉幾個例 子。在一個實施例中,數(shù)據(jù)處理系統(tǒng)10是諸如個人計算機系統(tǒng)的計算機系統(tǒng)。其它實 施例可以包括不同類型的計算機系統(tǒng)。計算機系統(tǒng)是可以被設(shè)計為向一個或多個用戶提供 獨立計算能力的信息處理系統(tǒng)。計算機系統(tǒng)可以采取許多形式,包括但不限于主機、小型計 算機、服務(wù)器、工作站、個人計算機、筆記本、個人數(shù)字助理、電子游戲、汽車及其它嵌入式系 統(tǒng)、蜂窩電話和各種其它無線設(shè)備。典型的計算機系統(tǒng)包括至少一個處理單元、關(guān)聯(lián)的存儲 器和許多輸入/輸出(I/O)設(shè)備。計算機系統(tǒng)根據(jù)程序來處理信息并經(jīng)由I/O設(shè)備產(chǎn)生結(jié)果輸出信息。程序是諸如 特定應(yīng)用程序和/或操作系統(tǒng)的一系列指令。計算機程序通常被內(nèi)部地存儲在計算機可讀 存儲介質(zhì)上或經(jīng)由計算機可讀傳輸介質(zhì)發(fā)送到計算機系統(tǒng)。計算機進程通常包括執(zhí)行(運 行)程序或程序的一部分、當前程序值和狀態(tài)信息、以及被操作系統(tǒng)用來管理進程的執(zhí)行 的資源。父進程可以產(chǎn)生其它子進程以幫助執(zhí)行父進程的總體功能。由于父進程具體地產(chǎn) 生將執(zhí)行父進程的總體功能的一部分的子進程,所以有時可以將由子進程(和孫進程等) 執(zhí)行的功能描述為由父進程執(zhí)行。雖然在本文中參照特定實施例描述了本發(fā)明,但在不脫離以下權(quán)利要求所闡述的 本發(fā)明的范圍的情況下可以進行各種修改和變更。例如,可以基于系統(tǒng)要求來修改在地址 字段中使用的位數(shù)。因此,應(yīng)將本說明書和附圖視為說明性而不是限制性的,并且所有此類 修改意圖被包括在本發(fā)明的范圍內(nèi)。本文相對于特定實施例所述的任何益處、優(yōu)點、或問題 的解決方案并不意圖被理解為任何或所有權(quán)利要求的關(guān)鍵、必需、或基本特征或元素。
      本文所使用的術(shù)語“耦合”并不意圖局限于直接耦合或機械耦合。此外,本文所使用的術(shù)語“一個(a) ”或“一種(an) ”被定義為一個或多于一個。并 且,不應(yīng)將權(quán)利要求中的諸如“至少一個”和“一個或多個”等介紹性短語的使用理解為暗 示用不定冠詞“一個”或“一種”來引入另一權(quán)利要求元素使包含這樣引入的權(quán)利要求元素 的任何特定權(quán)利要求局限于僅包含一個此類元素的發(fā)明,即使當該權(quán)利要求包括介紹性短 語“一個或多個”或“至少一個”和諸如“一個”或“一種”的不定冠詞時。這也適用于定冠 詞的使用。除非另有說明,諸如“第一”和“第二”的術(shù)語用來任意地區(qū)別此類術(shù)語所描述的 元素。因此,這些術(shù)語不一定意圖指示此類元素的時間或其它優(yōu)先次序排列。附加文本1. 一種電路(例如10),包括具有糾錯的存儲器(例如,40,其可以例如在觀、16、或沈中);電路單元(例如,在30內(nèi)),其發(fā)起到所述存儲器的寫操作,其中,當糾錯被啟用且到所述存儲器的寫操作具有N位的寬度時,在對所述存儲 器的一次訪問中執(zhí)行對所述存儲器的寫操作,以及其中,當糾錯被啟用且到所述存儲器的寫操作具有M位的寬度時,其中,M位小于N 位,在對所述存儲器的多于一次訪問中執(zhí)行到所述存儲器的寫操作。2.如項目1中的電路,其中,對所述存儲器的一次訪問包括對所述存儲器的寫訪 問。3.如項目1中的電路,其中,對所述存儲器的多于一次的訪問包括對所述存儲器 的讀訪問和對所述存儲器的寫訪問。4.如項目1中的電路,其中,所述存儲器具有奇偶校驗。5.如項目4中的電路,其中,所述電路還包括存儲元件(例如,在102內(nèi)),其用于存儲一位,所述存儲元件在糾錯被啟用時存儲 單糾錯碼校驗位,并且所述存儲元件在奇偶校驗被啟用時存儲單奇偶校驗位。6.如項目4中的電路,其中,所述電路還包括邏輯樹(例如98),其用于在糾錯被啟用時生成糾錯碼校驗位,并用于在奇偶校驗 被啟用時生成奇偶校驗位。7.如項目4中的電路,其中,所述電路還包括邏輯樹(例如98),其用于在糾錯被啟用時檢查糾錯碼癥狀信息,并用于在奇偶校 驗被啟用時檢查奇偶校驗信息。8.如項目4中的電路,其中,當奇偶校驗被啟用且到所述存儲器的寫操作具有M位 的數(shù)據(jù)寬度時,在對所述存儲器的一次訪問中執(zhí)行到所述存儲器的寫操作。9.如項目1中的電路,其中,所述存儲器包括多個區(qū)塊,其中,N是所述存儲器的寬 度,M是所述存儲器中的所述多個區(qū)塊中的一個的寬度,并且N和M是整數(shù)。10.如項目1中的電路,其中,所述電路還包括第一寄存器字段(例如,在48中),其用于存儲至少一個奇偶校驗啟用位,其中,所 述至少一個奇偶校驗啟用位確定奇偶校驗被啟用的時間;以及第二寄存器字段(例如,在48中),其用于存儲至少一個糾錯啟用位,其中,所述至少一個糾錯啟用位確定糾錯被啟用的時間。11.如項目1中的電路,其中,所述電路包括高速緩沖存儲器(例如沈),并且其 中,所述高速緩沖存儲器包括所述存儲器(例如40)。12. 一種電路(例如10),包括存儲器(例如40),其具有糾錯且具有奇偶校驗,所述存儲器包括多個存儲器區(qū)塊 (例如42 44);電路單元,其請求到所述存儲器中的第一地址的具有第一數(shù)據(jù)大小的讀操作,其中,當奇偶校驗被啟用時,到所述存儲器中的第一地址的具有第一數(shù)據(jù)尺寸的 讀操作包括僅訪問所述多個存儲器區(qū)塊的第一部分,以及其中,當糾錯被啟用時,到所述存儲器中的第一地址的具有第一數(shù)據(jù)尺寸的讀操 作包括訪問所述多個存儲器區(qū)塊的第一部分和所述多個存儲器區(qū)塊的第二部分。13.如項目12中的電路,其中,所述電路包括高速緩沖存儲器(例如沈),并且其 中,所述高速緩沖存儲器包括所述存儲器(例如40)。14.如項目12中的電路,其中,所述存儲器具有在所述存儲器的單次訪問中可訪 問的N位的最大寬度。15.如項目14中的電路,其中,N位是64位。16.如項目14中的電路,其中,訪問所述多個存儲器區(qū)塊的第一部分導(dǎo)致訪問N位 的最大寬度,并且其中,訪問所述多個存儲器區(qū)塊的第二部分導(dǎo)致訪問N位的最大寬度。17.如項目14中的電路,其中,訪問所述多個存儲器區(qū)塊的第一部分導(dǎo)致訪問小 于N位的最大寬度。18. —種方法,包括提供具有ECC糾錯的存儲器(例如,40);提供用于發(fā)起到所述存儲器的寫操作的電路單元(例如,在30中),其中,所述存儲器包括多個區(qū)塊(例如,42 44),其中,N是所述存儲器的寬度,M 是所述存儲器中的所述多個區(qū)塊中的一個的寬度,并且N和M是整數(shù),其中,當ECC糾錯被啟用且所述寫操作具有小于N位的大小時,所述寫操作包括不 執(zhí)行用于計算校驗位的對所述存儲器的讀周期,以及其中,當ECC糾錯被啟用且所述寫操作具有N位的大小且不在執(zhí)行所述存儲器的 初始化時,所述寫操作包括用于計算校驗位的讀周期。19.如項目18中的方法,其中,當ECC糾錯被啟用且所述寫操作具有N位的大小且 正在執(zhí)行所述存儲器的初始化時,所述寫操作包括不執(zhí)行用于計算校驗位的讀周期。20.如項目18中的方法,其中,所述存儲器是高速緩沖存儲器(例如沈)的一部 分。
      權(quán)利要求
      1.一種電路,包括具有糾錯的存儲器;電路單元,其發(fā)起到所述存儲器的寫操作,其中,當糾錯被啟用且到所述存儲器的寫操作具有N位的寬度時,在對所述存儲器的 一次訪問中執(zhí)行對所述存儲器的寫操作,以及其中,當糾錯被啟用且到所述存儲器的寫操作具有M位的寬度時,其中,M位小于N位, 在對所述存儲器的多于一次的訪問中執(zhí)行到所述存儲器的寫操作。
      2.如權(quán)利要求1所述的電路,其中,對所述存儲器的所述一次訪問包括對所述存儲器 的寫訪問。
      3.如權(quán)利要求1所述的電路,其中,對所述存儲器的所述多于一次的訪問包括對所述 存儲器的讀訪問和對所述存儲器的寫訪問。
      4.如權(quán)利要求1所述的電路,其中,所述存儲器具有奇偶校驗。
      5.如權(quán)利要求4所述的電路,其中,所述電路還包括存儲元件,其用于存儲一位,所述存儲元件在糾錯被啟用時存儲單糾錯碼校驗位,并且 所述存儲元件在奇偶校驗被啟用時存儲單奇偶校驗位。
      6.如權(quán)利要求4所述的電路,其中,所述電路還包括邏輯樹,其用于在糾錯被啟用時生成糾錯碼校驗位,并用于在奇偶校驗被啟用時生成 奇偶校驗位。
      7.如權(quán)利要求4所述的電路,其中,所述電路還包括邏輯樹,其用于在糾錯被啟用時檢查糾錯碼癥狀信息,并用于在奇偶校驗被啟用時檢 查奇偶校驗信息。
      8.如權(quán)利要求4所述的電路,其中,當奇偶校驗被啟用且到所述存儲器的寫操作具有M 位的數(shù)據(jù)寬度時,在對所述存儲器的一次訪問中執(zhí)行到所述存儲器的寫操作。
      9.如權(quán)利要求1所述的電路,其中,所述存儲器包括多個區(qū)塊,其中,N是所述存儲器的 寬度,M是所述存儲器中的所述多個區(qū)塊中的一個的寬度,并且N和M是整數(shù)。
      10.如權(quán)利要求1所述的電路,其中,所述電路還包括第一寄存器字段,其用于存儲至少一個奇偶校驗啟用位,其中,所述至少一個奇偶校驗 啟用位確定奇偶校驗被啟用的時間;以及第二寄存器字段,其用于存儲至少一個糾錯啟用位,其中,所述至少一個糾錯啟用位確 定糾錯被啟用的時間。
      11.如權(quán)利要求1所述的電路,其中,所述電路包括高速緩沖存儲器,并且其中,所述高 速緩沖存儲器包括所述存儲器。
      12.—種電路,包括具有糾錯且具有奇偶校驗的存儲器,所述存儲器包括多個存儲器區(qū)塊;電路單元,其請求到所述存儲器中的第一地址的具有第一數(shù)據(jù)大小的讀操作,其中,當奇偶校驗被啟用時,到所述存儲器中的第一地址的具有第一數(shù)據(jù)尺寸的所述 讀操作包括僅訪問所述多個存儲器區(qū)塊的第一部分,以及其中,當糾錯被啟用時,到所述存儲器中的第一地址的具有第一數(shù)據(jù)尺寸的所述讀操 作包括訪問所述多個存儲器區(qū)塊的第一部分和所述多個存儲器區(qū)塊的第二部分兩者。
      13.如權(quán)利要求12所述的電路,其中,所述電路包括高速緩沖存儲器,并且其中,所述 高速緩沖存儲器包括所述存儲器。
      14.如權(quán)利要求12所述的電路,其中,所述存儲器具有在所述存儲器的單次訪問中可 訪問的N位的最大寬度。
      15.如如權(quán)利要求14所述的電路,其中,N位是64位。
      16.如權(quán)利要求14所述的電路,其中,訪問所述多個存儲器區(qū)塊的第一部分導(dǎo)致訪問N 位的最大寬度,并且其中,訪問所述多個存儲器區(qū)塊的第二部分導(dǎo)致訪問N位的最大寬度。
      17.如權(quán)利要求14所述的電路,其中,訪問所述多個存儲器區(qū)塊的第一部分導(dǎo)致訪問 小于N位的最大寬度。
      18.一種方法,包括提供具有ECC糾錯的存儲器;提供用于發(fā)起到所述存儲器的寫操作的電路單元,其中,所述存儲器包括多個區(qū)塊,其中,N是所述存儲器的寬度,M是所述存儲器中的所 述多個區(qū)塊中的一個的寬度,并且N和M是整數(shù),其中,當ECC糾錯被啟用且所述寫操作具有小于N位的大小時,所述寫操作包括對所述 存儲器不執(zhí)行用于計算校驗位的讀周期,以及其中,當ECC糾錯被啟用且所述寫操作具有N位的大小且不在執(zhí)行所述存儲器的初始 化時,所述寫操作包括用于計算校驗位的讀周期。
      19.如權(quán)利要求18所述的方法,其中,當ECC糾錯被啟用且所述寫操作具有N位的大小 且正在執(zhí)行所述存儲器的初始化時,所述寫操作包括不執(zhí)行用于計算校驗位的讀周期。
      20.如權(quán)利要求18所述的方法,其中,所述存儲器是高速緩沖存儲器的一部分。
      全文摘要
      一種電路(10)包括具有糾錯的存儲器(28、16、或26)、發(fā)起到存儲器的寫操作的電路單元(30)。當糾錯被啟用且到存儲器的寫操作具有N位的寬度時,在對存儲器的一次訪問中執(zhí)行到存儲器的寫操作,并且當糾錯被啟用且到存儲器的寫操作具有M位的寬度時,其中,M位小于N位,在對存儲器的多于一次訪問中執(zhí)行到存儲器的寫操作。在一個實例中,對存儲器的一次訪問包括對存儲器的寫訪問,并且對存儲器的多于一次訪問包括對存儲器的讀訪問和對存儲器的寫訪問。
      文檔編號G06F11/14GK102057442SQ200980121422
      公開日2011年5月11日 申請日期2009年2月23日 優(yōu)先權(quán)日2008年4月30日
      發(fā)明者J·W·斯考特, W·C·莫耶 申請人:飛思卡爾半導(dǎo)體公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1