技術(shù)領(lǐng)域
本發(fā)明總體涉及計(jì)算機(jī)處理器領(lǐng)域。更具體地,本發(fā)明涉及用于反向存儲(chǔ)器備份(sparing)的方法和裝置。
相關(guān)技術(shù)描述
動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)被組織成行與列,并且通過(guò)稱為“選通(strobes)”的電信號(hào)被訪問(wèn),電信號(hào)沿著行被傳送到列。為了訪問(wèn)存儲(chǔ)器,存儲(chǔ)器控制器激活行訪問(wèn)選通線以指示將在其中找到數(shù)據(jù)的行(高位),并且列訪問(wèn)選通指定列(低位)。然后將數(shù)據(jù)提供到輸出線并且在下一時(shí)鐘周期上提供到數(shù)據(jù)的目的地。
DRAM器件具有高失效率。當(dāng)前的存儲(chǔ)器架構(gòu)解決方案使用“備份”技術(shù)以通過(guò)物理地標(biāo)出失效區(qū)來(lái)降低存儲(chǔ)器子系統(tǒng)的年服務(wù)率(ASR)。存儲(chǔ)器以未失效狀態(tài)開(kāi)始。硬件和/或固件標(biāo)識(shí)硬DRAM失效并且調(diào)用備份資源以標(biāo)出失效,將存儲(chǔ)器移到n失效狀態(tài)。后續(xù)的硬失效可以調(diào)用附加的備份,如果可用的話,其將存儲(chǔ)器移到n+1失效狀態(tài)。這在本說(shuō)明書(shū)中被稱為“前向”,或更一般地在工業(yè)中簡(jiǎn)單地被稱為“備份”。在使用所有前向備份資源之后,必須發(fā)起服務(wù)調(diào)用。
附圖說(shuō)明
結(jié)合以下附圖,從以下具體實(shí)施方式中可獲得對(duì)本發(fā)明更好的理解,其中:
圖1A是示出根據(jù)本發(fā)明的實(shí)施例的示例性有序取出、解碼、引退流水線以及示例性寄存器重命名的亂序發(fā)布/執(zhí)行流水線兩者的框圖;
圖1B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序取出、解碼、引退核的示例性實(shí)施例和示例性的寄存器重命名的亂序發(fā)布/執(zhí)行架構(gòu)核的框圖;
圖2是根據(jù)本發(fā)明的實(shí)施例的具有集成的存儲(chǔ)器控制器和圖形器件的單核處理器和多核處理器的框圖。
圖3示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的框圖;
圖4示出根據(jù)本發(fā)明的實(shí)施例的第二系統(tǒng)的框圖;
圖5示出根據(jù)本發(fā)明的實(shí)施例的第三系統(tǒng)的框圖;
圖6示出根據(jù)本發(fā)明的實(shí)施例的芯片上系統(tǒng)(SoC)的框圖;
圖7示出根據(jù)本發(fā)明的實(shí)施例的、對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖;
圖8示出包括具有存儲(chǔ)器備份邏輯的存儲(chǔ)器控制器的處理器架構(gòu)的一個(gè)實(shí)施例;
圖9示出存儲(chǔ)器備份等級(jí)的層次結(jié)構(gòu),每個(gè)等級(jí)具有不同的粒度;
圖10示出存儲(chǔ)器控制器中的將系統(tǒng)地址解碼為物理存儲(chǔ)器地址的示例性地址解碼器;
圖11示出在雙列直插存儲(chǔ)器模塊(DIMM)的前部和后部上的存儲(chǔ)器器件;
圖12A-C示出包括多個(gè)存儲(chǔ)器區(qū)塊的存儲(chǔ)器器件和用于將區(qū)塊物理地映射到總線的不同方法的一個(gè)實(shí)施例;
圖13A示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于寫(xiě)入到備份存儲(chǔ)器器件的存儲(chǔ)器備份邏輯;
圖13B示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于讀取備份存儲(chǔ)器器件的存儲(chǔ)器備份邏輯;
圖14A-C示出一個(gè)實(shí)施例,其中以第一粒度和第二粒度執(zhí)行前向存儲(chǔ)器備份,被反向存儲(chǔ)器備份操作分開(kāi);以及
圖15示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。
具體實(shí)施方式
在下面的描述中,為了進(jìn)行解釋,闡述了眾多具體細(xì)節(jié)以便提供對(duì)以下描述的本發(fā)明的多個(gè)實(shí)施例的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員顯而易見(jiàn)的是,可以在沒(méi)有這些具體細(xì)節(jié)中的一些細(xì)節(jié)的情況下實(shí)施本發(fā)明的各實(shí)施例。在其他實(shí)例中,公知的結(jié)構(gòu)和設(shè)備以框圖形式示出,以避免使本發(fā)明的多個(gè)實(shí)施例的基本原理模糊。
示例性處理器架構(gòu)和數(shù)據(jù)類型
圖1A是示出根據(jù)本發(fā)明的各實(shí)施例的示例性有序取出、解碼、引退流水線和示例性的寄存器重命名的亂序發(fā)布/執(zhí)行流水線的框圖。圖1B是示出根據(jù)本發(fā)明的各實(shí)施例的要包括在處理器中的有序取出、解碼、引退核的示例性實(shí)施例和示例性的寄存器重命名的亂序發(fā)布/執(zhí)行架構(gòu)核的框圖。圖1A-B中的實(shí)線框示出了流水線和核的有序部分,而可選增加的虛線框示出了寄存器重命名的、亂序發(fā)布/執(zhí)行流水線和核。
在圖1A中,處理器流水線100包括取出級(jí)102、長(zhǎng)度解碼級(jí)104、解碼級(jí)106、分配級(jí)108、重命名級(jí)110、調(diào)度(也稱為分派或發(fā)布)級(jí)112、寄存器讀取/存儲(chǔ)器讀取級(jí)114、執(zhí)行級(jí)116、寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)118、異常處理級(jí)122以及提交級(jí)124。
圖1B示出處理器核190,其包括耦合到執(zhí)行引擎單元150的前端單元130,執(zhí)行引擎單元150和前端單元130兩者都耦合到存儲(chǔ)器單元170。核190可以是精簡(jiǎn)指令集計(jì)算(RISC)核、復(fù)雜指令集計(jì)算(CISC)核、超長(zhǎng)指令字(VLIW)核或混合或替代核類型。作為又一選項(xiàng),核190可以是專用核,諸如例如,網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(GPGPU)核、圖形核等等。
前端單元130包括耦合到指令高速緩存單元134的分支預(yù)測(cè)單元132,指令高速緩存單元134耦合到指令轉(zhuǎn)換后備緩沖器(TLB)136,指令轉(zhuǎn)換后備緩沖器136耦合到指令取出單元138,指令取出單元138耦合到解碼單元140。解碼單元140(或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其他方式反映原始指令的、或從原始指令導(dǎo)出的一個(gè)或多個(gè)微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號(hào)作為輸出。解碼單元140可使用各種不同的機(jī)制來(lái)實(shí)現(xiàn)。合適的機(jī)制的示例包括但不僅限于,查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲(chǔ)器(ROM)等等。在一個(gè)實(shí)施例中,核190包括(例如,在解碼單元140中或以其他方式在前端單元130內(nèi)的)用于存儲(chǔ)某些宏指令的微代碼的微代碼ROM或其他介質(zhì)。解碼單元140耦合至執(zhí)行引擎單元150中的重命名/分配器單元152。
執(zhí)行引擎單元150包括耦合到引退單元154的重命名/分配器單元152和一個(gè)或多個(gè)調(diào)度器單元的集合156。調(diào)度器單元156表示任意數(shù)量的不同調(diào)度器,包括預(yù)留站、中心指令窗等。調(diào)度器單元156耦合到物理寄存器組單元158。每個(gè)物理寄存器組單元158表示一個(gè)或多個(gè)物理寄存器組,其中不同的物理寄存器組存儲(chǔ)一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,物理寄存器組單元158包括向量寄存器單元、寫(xiě)掩碼寄存器單元和標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器和通用寄存器。物理寄存器組單元158由隱退單元154重疊以示出可實(shí)現(xiàn)寄存器重命名和亂序執(zhí)行的各種方式(例如,使用重排序緩沖器和引退寄存器組;使用未來(lái)文件(future file)、歷史緩沖器和引退寄存器組;使用寄存器映射和寄存器池,等等)。引退單元154和物理寄存器組單元158耦合到執(zhí)行群集160。執(zhí)行群集160包括一個(gè)或多個(gè)執(zhí)行單元162的集合和一個(gè)或多個(gè)存儲(chǔ)器訪問(wèn)單元164的集合。執(zhí)行單元162可以對(duì)各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行各種操作(例如,移位、加法、減法、乘法)。盡管一些實(shí)施例可以包括專用于特定功能或功能集的數(shù)個(gè)執(zhí)行單元,但是其他實(shí)施例可以僅包括一個(gè)執(zhí)行單元或全部都執(zhí)行所有功能的多個(gè)執(zhí)行單元。調(diào)度器單元156、物理寄存器組單元158和執(zhí)行群集160被示為可能有多個(gè),因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開(kāi)的流水線(例如,各自具有其自身的調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線和/或存儲(chǔ)器訪問(wèn)流水線——以及在分開(kāi)的存儲(chǔ)器訪問(wèn)流水線的情況下,實(shí)現(xiàn)其中僅該流水線的執(zhí)行群集具有存儲(chǔ)器訪問(wèn)單元164的某些實(shí)施例)。還應(yīng)當(dāng)理解,在使用分開(kāi)的流水線的情況下,這些流水線中的一個(gè)或多個(gè)可以是亂序發(fā)布/執(zhí)行的,而其余的是有序的。
存儲(chǔ)器訪問(wèn)單元的集合164耦合到存儲(chǔ)器單元170,該存儲(chǔ)器單元170包括耦合到數(shù)據(jù)高速緩存單元174的數(shù)據(jù)TLB單元172,其中數(shù)據(jù)高速緩存單元174耦合到第2級(jí)(L2)高速緩存單元176。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問(wèn)單元164可包括加載單元、存儲(chǔ)地址單元和存儲(chǔ)數(shù)據(jù)單元,其中的每一個(gè)均耦合至存儲(chǔ)器單元170中的數(shù)據(jù)TLB單元172。指令高速緩存單元134還耦合到存儲(chǔ)器單元170中的第二級(jí)(L2)高速緩存單元176。L2高速緩存單元176耦合到一個(gè)或多個(gè)其他層級(jí)的高速緩存,并最終耦合到主存儲(chǔ)器。
作為示例,示例性寄存器重命名的亂序發(fā)布/執(zhí)行核架構(gòu)可以如下方式實(shí)現(xiàn)流水線100:1)指令取出138執(zhí)行取出和長(zhǎng)度解碼級(jí)102和104;2)解碼單元140執(zhí)行解碼級(jí)106;3)重命名/分配器單元152執(zhí)行分配級(jí)108和重命名級(jí)110;4)調(diào)度器單元156執(zhí)行調(diào)度級(jí)112;5)物理寄存器組單元158和存儲(chǔ)器單元170執(zhí)行寄存器讀取/存儲(chǔ)器讀取級(jí)114;執(zhí)行群集160執(zhí)行執(zhí)行級(jí)116;6)存儲(chǔ)器單元170和物理寄存器組單元158執(zhí)行寫(xiě)回/存儲(chǔ)器寫(xiě)入級(jí)118;7)各單元可牽涉到異常處理級(jí)122;以及8)引退單元154和物理寄存器組單元158執(zhí)行提交級(jí)124。
核190可支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有與較新版本一起添加的一些擴(kuò)展);加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集;加利福尼州桑尼維爾市的ARM控股公司的ARM指令集(具有諸如NEON之類的可選的附加擴(kuò)展)),其中包括本文中所描述的指令。在一個(gè)實(shí)施例中,核190包括用于支持緊縮數(shù)據(jù)指令集擴(kuò)展(例如,AVX1、AVX2和/或下文描述的一些形式的通用向量友好指令格式(U=0和/或U=1))的邏輯,從而使用緊縮數(shù)據(jù)來(lái)執(zhí)行由許多多媒體應(yīng)用使用的操作。
應(yīng)當(dāng)理解,核可支持多線程操作(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程的集合),并且可以按各種方式來(lái)完成該多線程操作,各種方式包括時(shí)分多線程操作、同步多線程操作(其中,單個(gè)物理核為物理核正在同步進(jìn)行多線程操作的多個(gè)線程中的每一個(gè)線程提供邏輯核)或其組合(例如,時(shí)分取出和解碼以及此后諸如利用超線程技術(shù)的同步多線程操作)。
盡管在亂序執(zhí)行的上下文中描述了寄存器重命名,但是,應(yīng)當(dāng)理解,寄存器重命名可以用于有序架構(gòu)中。盡管所示出的處理器的實(shí)施例還包括分開(kāi)的指令和數(shù)據(jù)高速緩存單元134/174以及共享L2高速緩存單元176,但替代實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,諸如例如,第一級(jí)(L1)內(nèi)部高速緩存或多個(gè)層級(jí)的內(nèi)部高速緩存。在一些實(shí)施例中,系統(tǒng)可以包括內(nèi)部高速緩存以及在核和/或處理器外部的外部高速緩存的組合?;蛘撸扛咚倬彺娑伎梢栽诤撕?或處理器的外部。
圖2是根據(jù)本發(fā)明的各實(shí)施例的可具有多于一個(gè)的核、可具有集成存儲(chǔ)器控制器、以及可具有集成圖形器件的處理器200的框圖。圖2中的實(shí)線框示出具有單個(gè)核202A、系統(tǒng)代理210、一個(gè)或多個(gè)總線控制器單元216的集合的處理器200,而虛線框的可選附加示出具有多個(gè)核202A-N、系統(tǒng)代理單元210中的一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元214的集合以及專用邏輯208的替代處理器200。
因此,處理器200的不同實(shí)現(xiàn)可包括:1)CPU,其中,專用邏輯208是集成圖形和/或科學(xué)(吞吐量)邏輯(其可包括一個(gè)或多個(gè)核),并且核202A-N是一個(gè)或多個(gè)通用核(例如,通用有序核、通用亂序核、這兩者的組合);2)協(xié)處理器,其中,核202A-N是旨在主要用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中,核202A-N是大量通用有序核。因此,處理器200可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,專用處理器諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高吞吐量的集成眾核(MIC)協(xié)處理器(包括30個(gè)或更多核)或嵌入式處理器等。處理器可以實(shí)現(xiàn)在一個(gè)或多個(gè)芯片上。處理器200可以是一個(gè)或多個(gè)基板的部分,和/或可以使用數(shù)種工藝技術(shù)中的任何技術(shù)來(lái)將處理器1500實(shí)現(xiàn)在一個(gè)或多個(gè)基板上,數(shù)種工藝技術(shù)諸如,BiCMOS、CMOS或NMOS。
存儲(chǔ)器層次結(jié)構(gòu)包括核內(nèi)的一個(gè)或多個(gè)層級(jí)的高速緩存,一組或一個(gè)或多個(gè)共享高速緩存單元206以及耦合到集成存儲(chǔ)器控制器單元的集合214的外部存儲(chǔ)器(未示出)。共享高速緩存單元的集合206可以包括一個(gè)或多個(gè)中級(jí)高速緩存,諸如,第2級(jí)(L2)、第3級(jí)(L3)、第4級(jí)(L4),或其他層級(jí)的高速緩存,末級(jí)高速緩存(LLC),和/或上述各項(xiàng)的組合。盡管在一個(gè)實(shí)施例中,基于環(huán)的互連單元212將集成圖形邏輯208、共享高速緩存單元的集合206以及系統(tǒng)代理單元210/集成存儲(chǔ)器控制器單元214互連,但替代實(shí)施例可使用任何數(shù)量的公知技術(shù)來(lái)互連此類單元。在一個(gè)實(shí)施例中,可維護(hù)一個(gè)或多個(gè)高速緩存單元206和核202A-N之間的一致性(coherency)。
在一些實(shí)施例中,核202A-N中的一個(gè)或多個(gè)能夠進(jìn)行多線程操作。系統(tǒng)代理210包括協(xié)調(diào)并操作核202A-N的那些組件。系統(tǒng)代理單元210可包括例如功率控制單元(PCU)和顯示單元。PCU可以是或可包括用于調(diào)節(jié)核202A-N和集成圖形邏輯208的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)從外部連接的顯示器。
核202A-N在架構(gòu)指令集方面可以是同構(gòu)或異構(gòu)的;也就是說(shuō),這些核202A-N中的兩個(gè)或更多個(gè)核可能能夠執(zhí)行相同的指令集,而其他核可能僅能夠執(zhí)行該指令集的子集或不同的指令集。在一個(gè)實(shí)施例中,核202A-N是異構(gòu)的并且包括下述“小型”核和“大型”核。
圖3-6是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域中已知的用于膝上型計(jì)算機(jī)、臺(tái)式機(jī)、手持式PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、圖形器件、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般而言,能夠涵蓋本文中所公開(kāi)的處理器和/或其他執(zhí)行邏輯的多種系統(tǒng)和電子設(shè)備通常都是合適的。
現(xiàn)在參考圖3,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)300的框圖。系統(tǒng)300可以包括一個(gè)或多個(gè)處理器310、315,這些處理器耦合到控制器中樞320。在一個(gè)實(shí)施例中,控制器中樞320包括圖形存儲(chǔ)器控制器中樞(GMCH)390和輸入/輸出中樞(IOH)350(其可以在分開(kāi)的芯片上);GMCH 390包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器340和協(xié)處理器345耦合到該存儲(chǔ)器和圖形控制器;IOH 350將輸入/輸出(I/O)設(shè)備360耦合到GMCH 390。或者,存儲(chǔ)器和圖形控制器中的一個(gè)或兩者可以被集成在處理器內(nèi)(如本文中所描述的),存儲(chǔ)器340和協(xié)處理器345直接耦合到處理器310以及控制器中樞320,該控制器中樞與IOH 350處于單個(gè)芯片中。
在圖3中以虛線表示附加的處理器315的任選的性質(zhì)。每一個(gè)處理器310、315可包括本文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器200的某一版本。
存儲(chǔ)器340可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或這兩者的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞320經(jīng)由諸如前端總線(FSB)之類的多分支總線、諸如快速路徑互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口或者類似的連接395與處理器310、315進(jìn)行通信。
在一個(gè)實(shí)施例中,協(xié)處理器345是專用處理器,諸如例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU或嵌入式處理器,等等。在一個(gè)實(shí)施例中,控制器中樞320可以包括集成圖形加速器。
在物理資源310、315之間可以存在包括架構(gòu)、微架構(gòu)、熱、和功耗特征等的一系列品質(zhì)度量方面的各種差異。
在一個(gè)實(shí)施例中,處理器310執(zhí)行控制通用類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可嵌入在這些指令中。處理器310將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附連的協(xié)處理器345執(zhí)行的類型。因此,處理器310在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器345。協(xié)處理器345接受并執(zhí)行所接收的協(xié)處理器指令。
現(xiàn)在參考圖4,所示為根據(jù)本發(fā)明的實(shí)施例的更具體的第一示例性系統(tǒng)400的框圖。如圖4所示,多處理器系統(tǒng)400是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連450耦合的第一處理器470和第二處理器480。處理器470和480中的每一個(gè)都可以是處理器200的某一版本。在本發(fā)明的一個(gè)實(shí)施例中,處理器470和480分別是處理器310和315,而協(xié)處理器438是協(xié)處理器345。在另一實(shí)施例中,處理器470和480分別是處理器310和協(xié)處理器345。
處理器470和480示出為分別包括集成存儲(chǔ)器控制器(IMC)單元472和482。處理器470還包括點(diǎn)對(duì)點(diǎn)(P-P)接口476和478作為其總線控制器單元的部分;類似地,第二處理器480包括P-P接口486和488。處理器470、480可以經(jīng)由使用點(diǎn)對(duì)點(diǎn)(P-P)接口電路478、488的P-P接口450來(lái)交換信息。如圖4所示,IMC 472和482將處理器耦合到相應(yīng)的存儲(chǔ)器,即,存儲(chǔ)器432和存儲(chǔ)器434,它們可以是本地連接到相應(yīng)的處理器的主存儲(chǔ)器的部分。
處理器470、480可各自經(jīng)由使用點(diǎn)對(duì)點(diǎn)接口電路476、494、486、498的各個(gè)P-P接口452、454與芯片組490交換信息。芯片組490可以任選地經(jīng)由高性能接口439與協(xié)處理器438交換信息。在一個(gè)實(shí)施例中,協(xié)處理器438是專用處理器,諸如例如,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU或嵌入式處理器,等等。
共享高速緩存(未示出)可被包括在任一處理器中,或在兩個(gè)處理器的外部但經(jīng)由P-P互連與這些處理器連接,從而如果處理器被置于低功率模式,則任一個(gè)或這兩個(gè)處理器的本地高速緩存信息可被存儲(chǔ)在該共享的高速緩存中。
芯片組490可經(jīng)由接口496耦合至第一總線416。在一個(gè)實(shí)施例中,第一總線416可以是外圍組件互連(PCI)總線,或諸如PCI快速總線或另一第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
如圖4所示,各種I/O設(shè)備414可連同總線橋418被耦合到第一總線416,總線橋418將第一總線416耦合到第二總線420。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的處理器、加速器(例如,圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列或任何其他處理器之類的一個(gè)或多個(gè)附加處理器415耦合到第一總線416。在一個(gè)實(shí)施例中,第二總線420可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二總線420,在一個(gè)實(shí)施例中,各種設(shè)備包括例如,鍵盤和/或鼠標(biāo)422、通信設(shè)備427以及存儲(chǔ)單元428,該存儲(chǔ)單元428諸如可包括指令/代碼和數(shù)據(jù)430的盤驅(qū)動(dòng)器或其他大容量存儲(chǔ)設(shè)備。此外,音頻I/O 424可以耦合至第二總線420。注意,其他架構(gòu)是可能的。例如,系統(tǒng)可實(shí)現(xiàn)多分支總線或者其他此類架構(gòu),而不是圖4中的點(diǎn)對(duì)點(diǎn)架構(gòu)。
現(xiàn)在參考圖5,所示為根據(jù)本發(fā)明的實(shí)施例的更具體的第二示例性系統(tǒng)500的框圖。圖4和圖5中的相同部件用相同附圖標(biāo)記表示,并從圖5中省去了圖4中的某些方面,以避免使圖5的其他方面變得模糊。
圖5示出處理器470、480可分別包括集成存儲(chǔ)器和I/O控制邏輯(“CL”)472和482。因此,CL 472、482包括集成存儲(chǔ)器控制器單元,并包括I/O控制邏輯。圖5示出不僅存儲(chǔ)器432、434耦合到CL 472、482,而且I/O設(shè)備514也耦合到控制邏輯472、482。傳統(tǒng)I/O設(shè)備515耦合至芯片組490。
現(xiàn)在參考圖6,所示出的是根據(jù)本發(fā)明的實(shí)施例的SoC 600的框圖。圖2中的類似的元素具有同樣的參考編號(hào)。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖6中,互連單元602耦合到:應(yīng)用處理器610,其包括一個(gè)或多個(gè)核的集合202A-N以及共享高速緩存單元206;系統(tǒng)代理單元210;總線控制器單元216;集成存儲(chǔ)器控制器單元214;一組或一個(gè)或多個(gè)協(xié)處理器620,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元630;直接存儲(chǔ)器存取(DMA)單元632;以及用于耦合至一個(gè)或多個(gè)外部顯示器的顯示單元640。在一個(gè)實(shí)施例中,協(xié)處理器620包括專用處理器,諸如例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器或嵌入式處理器,等等。
本文公開(kāi)的機(jī)制的各實(shí)施例可以實(shí)現(xiàn)在硬件、軟件、固件或這些實(shí)現(xiàn)方法的組合中。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。
可以將諸如圖4中所示出的代碼430之類的程序代碼應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息??梢园匆阎绞綄⑤敵鲂畔?yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器的任何系統(tǒng),處理器諸如例如,數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器。
程序代碼可以用高級(jí)程序化語(yǔ)言或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn),以便與處理系統(tǒng)通信。在需要時(shí),也可用匯編語(yǔ)言或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)程序代碼。事實(shí)上,本文中描述的機(jī)制在范圍上不限于任何特定的編程語(yǔ)言。在任一情形下,該語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。
至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲(chǔ)在機(jī)器可讀介質(zhì)上的表示性指令來(lái)實(shí)現(xiàn),該機(jī)器可讀介質(zhì)表示處理器中的各種邏輯,當(dāng)由機(jī)器讀取該指令時(shí),該指令使該機(jī)器制作用于執(zhí)行本文所述的技術(shù)的邏輯??蓪⒈环Q為“IP核”的此類表示存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上,并將其提供給各種客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。
此類機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于通過(guò)機(jī)器或設(shè)備制造或形成的制品的非暫態(tài)的有形安排,其包括存儲(chǔ)介質(zhì),諸如,硬盤;任何其他類型的盤,包括軟盤、光盤、緊致盤只讀存儲(chǔ)器(CD-ROM)、緊致盤可重寫(xiě)(CD-RW)以及磁光盤;半導(dǎo)體器件,諸如,只讀存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)之類的隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPROM);相變存儲(chǔ)器(PCM);磁卡或光卡;或適于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
因此,本發(fā)明的各實(shí)施例還包括非暫態(tài)的有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如,硬件描述語(yǔ)言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特征。此類實(shí)施例還可以被稱為程序產(chǎn)品。
在一些情況下,可以使用指令轉(zhuǎn)換器來(lái)將指令從源指令集轉(zhuǎn)換為目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以將指令轉(zhuǎn)換(例如,使用靜態(tài)二進(jìn)制變換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換)、變形、仿真或以其他方式轉(zhuǎn)換為要由核處理的一條或多條其他指令。指令轉(zhuǎn)換器可以在軟件、硬件、固件,或它們的組合中實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上,在處理器外,或者部分在處理器上且部分在處理器外。
圖7是根據(jù)本發(fā)明的各實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但替代地可以在軟件、固件、硬件或它們的各種組合中實(shí)現(xiàn)指令轉(zhuǎn)換器。圖7示出可以使用x86編譯器704來(lái)編譯高級(jí)語(yǔ)言702形式的程序以生成可由具有至少一個(gè)x86指令集核的處理器716原生地執(zhí)行的x86二進(jìn)制代碼706。具有至少一個(gè)x86指令集核的處理器716表示能通過(guò)兼容地執(zhí)行或以其他方式處理以下內(nèi)容來(lái)執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能的任何處理器:1)英特爾x86指令集核的指令集的實(shí)質(zhì)部分,或2)目標(biāo)為在具有至少一個(gè)x86指令集核的英特爾處理器上運(yùn)行以實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果的應(yīng)用或其他軟件的目標(biāo)代碼版本。x86編譯器704表示用于生成x86二進(jìn)制代碼706(例如,目標(biāo)代碼)的編譯器,該x86二進(jìn)制代碼706可利用或不利用附加的鏈路處理而在具有至少一個(gè)x86指令集核的處理器716上執(zhí)行。類似地,圖7示出可以使用替代的指令集編譯器708來(lái)編譯利用高級(jí)語(yǔ)言702的程序以生成可由不具有至少一個(gè)x86指令集核的處理器714(例如,具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集和/或執(zhí)行加利福尼州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生地執(zhí)行的替代的指令集二進(jìn)制代碼710。指令轉(zhuǎn)換器712用于將x86二進(jìn)制代碼706轉(zhuǎn)換成可以由不具有x86指令集核的處理器714原生地執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代的指令集二進(jìn)制代碼710相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成通用操作,并且將由來(lái)自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器712表示軟件、固件、硬件或它們的組合,這些軟件、固件、硬件或它們的組合通過(guò)仿真、模擬或任何其他過(guò)程允許不具有x86指令集處理器或核的處理器或其他電子設(shè)備執(zhí)行x86二進(jìn)制代碼706。
用于反向存儲(chǔ)器備份的方法和裝置
當(dāng)前的存儲(chǔ)器控制器僅能在是“排”粒度的單一粒度備份,并且只在前向方向中備份。相反,以下描述的本發(fā)明的實(shí)施例能夠以多個(gè)粒度進(jìn)行存儲(chǔ)器備份,例如:位、器件、高速緩存行、行、列、區(qū)塊、排和雙列直插存儲(chǔ)器模塊(DIMM)。這提出了在不同粒度之間移動(dòng)失效狀態(tài)的問(wèn)題。在多個(gè)備份粒度可用的情況下,順序硬失效可以揭示先前的備份決定是次優(yōu)決定。
為了解決該問(wèn)題,本發(fā)明的一個(gè)實(shí)施例能夠不進(jìn)行前向備份動(dòng)作,稱為“反向備份”。如本文中所使用的,反向備份是對(duì)失效狀態(tài)后向的移動(dòng),即,從n+1失效狀態(tài)到n失效狀態(tài)。反向備份實(shí)現(xiàn)可靠性、可用性和可服務(wù)性(RAS)狀態(tài)之間的前向和后向遍歷,這樣允許存儲(chǔ)器控制器將存儲(chǔ)器保持為在多個(gè)順序DRAM失效之上的最優(yōu)RAS狀態(tài)。在僅前向備份的設(shè)計(jì)中,存儲(chǔ)器不能被保持在最優(yōu)RAS狀態(tài)中,導(dǎo)致增加的服務(wù)成本。這使得本文中所描述的反向備份技術(shù)成為增加存儲(chǔ)器可靠性并且降低OEM的服務(wù)成本的下一代RAS流的基本構(gòu)建塊。
如本文中所使用的,“前向備份”被定義為物理地移動(dòng)來(lái)自存儲(chǔ)器的失效區(qū)的數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在新的位置中,其中將從新的位置而不是失效位置檢索后續(xù)對(duì)該數(shù)據(jù)的訪問(wèn)?!胺聪騻浞荨笔菍?shù)據(jù)從新的位置物理地移動(dòng)回到原始的失效位置。典型地,將在后續(xù)在更優(yōu)粒度下前向備份的目的下完成反向備份。糾錯(cuò)碼(ECC)技術(shù)糾正將數(shù)據(jù)臨時(shí)移動(dòng)回到失效位置引起的在反向備份和后續(xù)前向備份操作之間的中間錯(cuò)誤。
如圖8所示,本發(fā)明的實(shí)施例可以在其上實(shí)現(xiàn)的處理器架構(gòu)可以包括多個(gè)核801-804,N和具有用于實(shí)現(xiàn)本文中所描述的前向/后向備份技術(shù)的存儲(chǔ)器備份邏輯811的至少一個(gè)存儲(chǔ)器控制器810。具體而言,如以下描述,存儲(chǔ)器備份邏輯811包括用于執(zhí)行前向存儲(chǔ)器備份操作的前向存儲(chǔ)器備份組件811a和用于執(zhí)行反向存儲(chǔ)器備份操作的反向存儲(chǔ)器備份組件811b。存儲(chǔ)器控制器810通過(guò)第一存儲(chǔ)器通道815通信地耦合到第一組DIMM 820,并且通過(guò)第二存儲(chǔ)器通道816通信地耦合到第二組DIMM 821。
盡管本文中所描述的DIMM、排(rank)、區(qū)塊(bank)、器件、行(row)和列(column)的結(jié)構(gòu)具體指代電子器件工程聯(lián)合委員會(huì)維持的DDR(雙數(shù)據(jù)率)存儲(chǔ)器規(guī)范,其最新一代為DDR4,本發(fā)明的實(shí)施例可以并且將被應(yīng)用到任何和所有存儲(chǔ)器技術(shù),包括但不限于可以駐留在處理器或處理器封裝的內(nèi)部和/或外部的DRAM、SRAM、相變存儲(chǔ)器和閃存,僅列舉數(shù)例。
每個(gè)存儲(chǔ)器失效可被視為1)對(duì)特定區(qū)域有影響和2)對(duì)寬度(位的數(shù)量)有影響。DDR4的示例性區(qū)域尺寸層次結(jié)構(gòu)在圖9中示出,并且包括高速緩存行901、列902、行903、區(qū)塊904、子排905、排906、DIMM 907和通道908,從最小到最大。因此,在該實(shí)施例中,可實(shí)現(xiàn)的最小單元是高速緩存行,具有單個(gè)存儲(chǔ)器請(qǐng)求的尺寸,被單個(gè)系統(tǒng)地址尋址。
如圖10所示,請(qǐng)求者1001(例如,核801-N中的一個(gè)核)生成的系統(tǒng)地址穿過(guò)存儲(chǔ)器控制器810中的地址解碼器1002,地址解碼器1002將系統(tǒng)地址轉(zhuǎn)換為物理地址以尋址數(shù)據(jù)駐留的存儲(chǔ)器820-821中的物理位置。因此,可以將存儲(chǔ)器中的任何特定區(qū)域定義為系統(tǒng)地址空間的特定子集和/或物理地址空間的特定子集以實(shí)現(xiàn)本文中所描述的備份技術(shù)。支持的備份區(qū)域的尺寸可以適應(yīng)基礎(chǔ)存儲(chǔ)器技術(shù)的基本結(jié)構(gòu)。
如圖11所示,每個(gè)DIMM通常包括在其前側(cè)1120上的第一存儲(chǔ)器器件集合1101(例如,各個(gè)存儲(chǔ)器芯片)和在其后側(cè)1121上的第二存儲(chǔ)器器件集合1121。在圖11示出的示例中,DIMM的前側(cè)和后側(cè)上分別有8個(gè)存儲(chǔ)器器件1101-1102(每個(gè)DIMM有總共16個(gè)存儲(chǔ)器器件)??梢詫⒋鎯?chǔ)器器件分配到“排”,在其中每個(gè)排共享與其他排相同的地址和數(shù)據(jù)總線。例如,在一些DIMM上,將在DIMM的前側(cè)上的存儲(chǔ)器器件的集合1101分配到排0,并且將在DIMM的后側(cè)上的存儲(chǔ)器器件的集合1102分配到排1??梢詫⑺写鎯?chǔ)器器件分配到在其他DIMM上的單一的排(例如,排0)。由于所有排共享相同的總線,在任何給定的時(shí)間只可以訪問(wèn)一個(gè)排,通常通過(guò)激活對(duì)應(yīng)的排的芯片選擇(CS)信號(hào)來(lái)指定。通過(guò)停用所有其他排的對(duì)應(yīng)的CS信號(hào)來(lái)在操作期間停用所有其他排。DIMM通常被制造成每個(gè)模塊具有至多四個(gè)排。
“排(rank)”中包括的芯片的數(shù)量基于圖11示出的存儲(chǔ)器器件1101-1102的每一個(gè)的位寬和DDR總線的尺寸。例如,如果總的DDR總線寬度為64位,并且每個(gè)芯片是4位寬(使用“X4”指定來(lái)指示)然后沒(méi)有ECC,則X4無(wú)ECC的DIMM在排中需要16個(gè)存儲(chǔ)器器件(16*4=64)。如果圖11示出的DIMM是這種類型的DIMM,則在前側(cè)1120和后側(cè)1121上的所有16個(gè)芯片將被包括在同一排中。相反,在無(wú)ECC雙排X8的DIMM中,芯片寬度是8位,則因此將在排中需要8個(gè)存儲(chǔ)器器件(8x8=64)。因此,圖11中的在DIMM 1120的前側(cè)上的8個(gè)存儲(chǔ)器器件1101將表示一個(gè)排(例如,排0),而在DIMM 1121的后側(cè)上的8個(gè)存儲(chǔ)器器件1102將表示另一個(gè)排(例如,排1)。對(duì)于ECC,為72位DDR總線增加附加8位。因此,X8 ECC DIMM將在排中需要9個(gè)器件(9*8=72),而X4 ECC DIMM將在排中需要18個(gè)器件(18*4=72)。
從排向下的粒度的下一等級(jí)包括單獨(dú)的存儲(chǔ)器器件(例如,8個(gè)存儲(chǔ)器器件1101或1102中的一個(gè)),并且每個(gè)存儲(chǔ)器器件包括存儲(chǔ)器“區(qū)塊(bank)”的集合。圖12A示出一個(gè)特定示例,其中每個(gè)存儲(chǔ)器器件1201包括8個(gè)存儲(chǔ)器區(qū)塊的集合1210。最后,可以使用“行”和“列”尋址每個(gè)單獨(dú)區(qū)塊1210的部分。在操作中,存儲(chǔ)器控制器811生成的物理存儲(chǔ)器地址的不同部分可以標(biāo)識(shí)特定的通道DIMM、排、器件、區(qū)塊、行和列。
如上所述,在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)器備份邏輯811配置為在前向和反向方向中執(zhí)行存儲(chǔ)器備份操作。例如,存儲(chǔ)器備份邏輯811最初可以響應(yīng)于檢測(cè)到的在第一等級(jí)粒度(例如區(qū)塊等級(jí))的存儲(chǔ)器失效而執(zhí)行前向備份操作,將失效狀態(tài)從n移動(dòng)到n+1。其然后可以檢測(cè)在更高等級(jí)粒度的失效狀態(tài),例如在存儲(chǔ)器器件或排等級(jí)。作為響應(yīng),存儲(chǔ)器備份邏輯811的一個(gè)實(shí)施例執(zhí)行反向備份操作,將失效等級(jí)從n+1移動(dòng)回到n,并且然后以更高等級(jí)粒度(器件等級(jí)或排等級(jí))執(zhí)行前向備份,從而以更高等級(jí)粒度從n移動(dòng)到新的n+1狀態(tài)。
類似地,存儲(chǔ)器備份邏輯811可以檢測(cè)失效并且最初以相對(duì)更高等級(jí)粒度(例如排等級(jí))執(zhí)行前向備份,然后執(zhí)行反向備份操作,隨后以更低粒度執(zhí)行前向備份操作。例如,之后可以標(biāo)識(shí)導(dǎo)致失效的特定器件或區(qū)塊,并且作為響應(yīng),存儲(chǔ)器備份邏輯811可以執(zhí)行反向備份以將失效狀態(tài)從n+1(排)移動(dòng)回到n。其然后可以執(zhí)行前向備份以更精確等級(jí)粒度(例如,器件或區(qū)塊)將失效狀態(tài)從n移動(dòng)到新的n+1。存儲(chǔ)器備份邏輯811可以配置為執(zhí)行以上前向/反向備份操作以在任意兩個(gè)等級(jí)粒度之間轉(zhuǎn)換(例如,從器件等級(jí)移動(dòng)到排等級(jí),從排等級(jí)移動(dòng)到DIMM等級(jí),等等)。
失效的寬度是在存儲(chǔ)器總線上特定數(shù)量的位,典型地為1、4或8位。典型的失效將是通道失效,其中單個(gè)位在總線上已經(jīng)失效,或?qū)⑹瞧骷?,其?個(gè)器件的整個(gè)寬度已經(jīng)失效(對(duì)于X4器件是4個(gè)連續(xù)的位,而對(duì)于X8器件是8個(gè)連續(xù)的位)。圖12B示出對(duì)于X8ECC排將器件映射到總線,圖12C示出對(duì)于X4ECC排將器件映射到總線。在一個(gè)實(shí)施例中,每個(gè)備份操作(前向或反向)將在被定義為x,y的粒度上操作,其中x=區(qū)域大小,而y=寬度。
在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)寫(xiě)入和讀取高速緩存行時(shí),存儲(chǔ)器備份邏輯811使用備份器件分別實(shí)現(xiàn)圖13A所示的寫(xiě)入路徑和圖13B所示的讀取路徑。具體而言,在該示例中,跨36x4DRAM器件存儲(chǔ)高速緩存行,并且將36個(gè)器件之一反向?yàn)閭浞萜骷谠撌纠袨槠骷?5。當(dāng)器件失效發(fā)生時(shí),例如在該示例中在器件34內(nèi),存儲(chǔ)器備份邏輯811為排上每條高速緩存行發(fā)起存儲(chǔ)器備份事務(wù),其讀取存儲(chǔ)器器件、將數(shù)據(jù)從失效的器件移動(dòng)到備份器件、并且寫(xiě)入存儲(chǔ)器。如下所述,反向備份操作暫時(shí)將數(shù)據(jù)從備份器件35移動(dòng)回到失效器件34。
因此,在圖13A中,在一個(gè)實(shí)施例中,響應(yīng)于寫(xiě)入操作使得高速緩存行被寫(xiě)入存儲(chǔ)器,將失效器件1311的身份提供給被實(shí)現(xiàn)為復(fù)用器的邏輯1312,其物理地將通常本應(yīng)被寫(xiě)入失效器件34的高速緩存的部分寫(xiě)入備份器件35。在該實(shí)施例中,存儲(chǔ)器備份邏輯811跟蹤每個(gè)器件的當(dāng)前狀態(tài)以及對(duì)于哪個(gè)器件34或器件34的哪些部分已經(jīng)失效的指示(例如,器件34內(nèi)的哪個(gè)特定區(qū)塊已經(jīng)失效)。響應(yīng)于寫(xiě)入操作,存儲(chǔ)器備份邏輯811然后將寫(xiě)入操作映射到合適的備份器件35,或其部分(例如,器件35中的特定區(qū)塊,其代替了器件34中的失效區(qū)塊)。
如圖13B所示,響應(yīng)于從存儲(chǔ)器讀取高速緩存行的讀取操作,解碼器1300解碼失效器件34的ID以確定本應(yīng)存儲(chǔ)在失效器件34中的高速緩存行的部分實(shí)際上存儲(chǔ)在備份器件35中。由此,當(dāng)將讀取操作的結(jié)果返回到處理器時(shí),必須將來(lái)自備份器件35的數(shù)據(jù)移動(dòng)到正確的位置中(即,如同其實(shí)際上已經(jīng)被從器件34讀取)。這在圖13B中通過(guò)控制一組復(fù)用器1301-1312的解碼器1300完成,每個(gè)復(fù)用器將備份器件作為一個(gè)可能的輸入,并且將非備份器件0-34中的每一個(gè)作為其他可能的輸入。假設(shè)器件34或器件34內(nèi)的特定區(qū)塊已經(jīng)失效,該信息將經(jīng)由失效器件信號(hào)1311被指定到解碼器1300,并且作為響應(yīng),解碼器1300將輸出信號(hào)到復(fù)用器1301以從器件35而不是器件34選擇輸出。復(fù)用器1301的輸出是在器件34的位置中,從而確保提供自器件35的高速緩存行的部分被輸出到正確位置中的處理器。
如上所述,在一個(gè)實(shí)施例中,失效器件信號(hào)1311可以指定失效的不同等級(jí)粒度。例如,其可以指定整個(gè)器件34已經(jīng)失效,從而使得失效器件的整個(gè)內(nèi)容被傳送到備份器件35以被使用。替代地,其可以指定只有器件34內(nèi)的某些區(qū)塊已經(jīng)失效,從而僅將這些特定區(qū)塊傳送到備份器件35。在其他實(shí)施例中,失效器件信號(hào)1311可以在甚至更低等級(jí)粒度操作(例如,標(biāo)識(shí)特定特定區(qū)塊中的已經(jīng)失效的行)。
圖14A-C示出根據(jù)本發(fā)明的一個(gè)實(shí)施例可以如何采用前向和反向備份。在圖14A中,器件0的區(qū)塊0已經(jīng)失效。作為響應(yīng),存儲(chǔ)器備份邏輯811已經(jīng)利用器件35的區(qū)塊0作為器件0的區(qū)塊0的備份。隨后,已經(jīng)確定器件0內(nèi)的失效擴(kuò)展到超過(guò)區(qū)塊0,并且由此,需要備份整個(gè)器件0。因此,在一個(gè)實(shí)施例中,存儲(chǔ)器備份邏輯811執(zhí)行反向備份操作,暫時(shí)將器件35區(qū)塊0的內(nèi)容移動(dòng)回到區(qū)塊0或器件0,如圖14B所示。當(dāng)反向備份操作完成時(shí),存儲(chǔ)器備份邏輯811將器件0的整個(gè)內(nèi)容(即,區(qū)塊0-7)移動(dòng)到備份器件35,如圖12C所示。
因此,圖14A-C示出使用反向備份作為中間步驟(圖14B),在3個(gè)步驟中將區(qū)塊失效轉(zhuǎn)換為排失效。在一個(gè)實(shí)施例中,使用具有36x4DRAM器件(0-35)的邏輯雙器件數(shù)據(jù)糾正(DDDC)排執(zhí)行該操作,DDDC排是步調(diào)一致地運(yùn)行的2個(gè)物理排(每個(gè)有18個(gè)器件)。其在每個(gè)排具有8個(gè)區(qū)塊的DDR3技術(shù)中示出。
現(xiàn)有系統(tǒng)不包括以此方式反向備份的機(jī)制。由此,當(dāng)將單獨(dú)的區(qū)塊備份時(shí),如圖14A所示,這些系統(tǒng)缺少隨后將整個(gè)器件備份的能力,如圖14C所示。通過(guò)給予存儲(chǔ)器控制器在RAS狀態(tài)之間前向和向后轉(zhuǎn)換的能力,反向備份成為增加存儲(chǔ)器可靠性并且降低OEM的服務(wù)成本的高級(jí)RAS流的基本構(gòu)建塊。
在圖15中示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的方法。該方法可在上述存儲(chǔ)器架構(gòu)的情境內(nèi)實(shí)現(xiàn),但并不限于任何特定存儲(chǔ)器架構(gòu)。
在1501,在存儲(chǔ)器中在第一粒度(例如,在區(qū)塊等級(jí))檢測(cè)到失效。作為響應(yīng),在1502執(zhí)行前向備份,如上所述,將失效狀態(tài)從n移動(dòng)到n+1(例如,將失效區(qū)塊移動(dòng)到備份器件的備份區(qū)塊)。在1503,在存儲(chǔ)器中檢測(cè)到額外的失效,和/或標(biāo)識(shí)改善的(例如,更優(yōu)的)備份狀態(tài)。例如,可以確定器件內(nèi)的額外的區(qū)塊已經(jīng)失效(例如,如上參照?qǐng)D12A-C所述)。替代地,可以確定執(zhí)行了備份的初始等級(jí)粒度太激進(jìn),在比所要求的粒度更高的粒度備份。例如,最初可以將整個(gè)存儲(chǔ)器器件備份,但是在監(jiān)視存儲(chǔ)器之后,可以確定只有存儲(chǔ)器器件中的單個(gè)區(qū)塊導(dǎo)致了失效。在任一情況下,在1504,執(zhí)行反向備份以暫時(shí)將失效狀態(tài)從n+1移動(dòng)到n(即,如圖12B所示,在前向備份操作之前,存儲(chǔ)器駐留的狀態(tài))。當(dāng)反向備份操作完成時(shí),在1505,根據(jù)來(lái)自1503的確定,以第二粒度執(zhí)行第二前向備份操作,將失效狀態(tài)從n移動(dòng)到新的n+1狀態(tài)(例如,從單一區(qū)塊移動(dòng)到整個(gè)器件,反之亦然,取決于1503處的分析)。
以下提供反向備份的三個(gè)示例性使用情況。在每個(gè)使用情況中,突出了反向備份的益處。
使用情況1:在該示例中,在RAS流中為基于IntelTM的服務(wù)器(例如,具有Haswell處理器和支持芯片組的服務(wù)器)上的“區(qū)塊DDDC”使用反向器件備份。在圖13A-B中描繪了DDDC器件備份的一個(gè)示例。當(dāng)DDDC以排粒度標(biāo)出DRAM失效時(shí),區(qū)塊DDDC允許以更小的區(qū)塊粒度標(biāo)出失效。特定地,一個(gè)實(shí)施例支持標(biāo)出在每個(gè)排的2個(gè)區(qū)塊上的器件,或標(biāo)出在整個(gè)排上的器件。當(dāng)僅影響單個(gè)區(qū)塊的DRAM器件失效發(fā)生時(shí),將對(duì)該區(qū)塊前向備份以標(biāo)出壞器件。如果相同的器件失效之后劣化到影響整個(gè)排,則需要將整個(gè)排備份。然后使用反向備份以通過(guò)首先將原始區(qū)塊反向備份、然后將整個(gè)排前向備份來(lái)將區(qū)塊失效轉(zhuǎn)換為排失效。這描繪在在圖14A-C中。
該配置的益處是,在附加區(qū)塊粒度的備份的情況下,發(fā)明了反向備份以轉(zhuǎn)換失效區(qū)域的粒度。當(dāng)區(qū)塊失效隨后變成排失效(或相同器件內(nèi)的第二區(qū)塊失效)時(shí)可以使用反向備份。在經(jīng)由反向備份從區(qū)塊到排的轉(zhuǎn)換之后,在要求服務(wù)調(diào)用之前排可以通過(guò)實(shí)現(xiàn)SDDC(奇偶替換)來(lái)承受住附加的器件失效。如果不支持反向備份,則從區(qū)塊到排的備份轉(zhuǎn)換將是不可能的。唯一的選擇是在余下的區(qū)塊上實(shí)現(xiàn)SDDC,并且將立即要求服務(wù)調(diào)用。在該情況下,在要求服務(wù)調(diào)用之前,反向備份允許排承受住更多硬失效。
使用情況2:后硅驗(yàn)證不得不覆蓋所有粒度的失效的所有組合。RAS流正變得更先進(jìn),并且反向備份實(shí)現(xiàn)在RAS狀態(tài)之間來(lái)回的快速和連續(xù)轉(zhuǎn)換。在沒(méi)有反向備份的情況下,測(cè)試情況之間的重啟是必要的以將存儲(chǔ)器重置回到初始狀態(tài),這極大地增加了測(cè)試時(shí)間/成本。
因此通過(guò)減少的測(cè)試時(shí)間和增加的測(cè)試覆蓋改善了后硅存儲(chǔ)器RAS驗(yàn)證。這可以導(dǎo)致更快市場(chǎng)化和較少RAS缺陷,遺漏這些RAS缺陷將需要附加的CPU步進(jìn)或勘誤。
在上述說(shuō)明書(shū)中,已經(jīng)參考特定示例性實(shí)施例描述了本發(fā)明。然而,顯然可對(duì)這些實(shí)施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精神和范圍。因此,說(shuō)明書(shū)和附圖應(yīng)被認(rèn)為是說(shuō)明性而非限制性意義。
本發(fā)明的多個(gè)實(shí)施例可包括上述各個(gè)步驟。可在可用于使通用或?qū)S锰幚砥鲌?zhí)行這些步驟的機(jī)器可執(zhí)行指令中具體化這些步驟?;蛘?,可由包含用于執(zhí)行這些步驟的硬連線邏輯的專用硬件組件,或可由被編程的計(jì)算機(jī)組件和自定義硬件組件的任何組合來(lái)執(zhí)行這些步驟。
如本文中所述,指令可以指硬件的具體配置,例如,配置成用于執(zhí)行某些操作或具有預(yù)定功能的專用集成電路(ASIC),或者被存儲(chǔ)在被具體化在非暫態(tài)計(jì)算機(jī)可讀介質(zhì)中的存儲(chǔ)器中的軟件指令。因而,附圖中示出的技術(shù)可以使用存儲(chǔ)在一個(gè)或多個(gè)電子設(shè)備(例如,終端站、網(wǎng)絡(luò)元件等等)并在其上執(zhí)行的代碼和數(shù)據(jù)來(lái)實(shí)現(xiàn)。此類電子設(shè)備使用諸如非瞬態(tài)計(jì)算機(jī)機(jī)器可讀存儲(chǔ)介質(zhì)(例如,磁盤;光盤;隨機(jī)存取存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)之類的計(jì)算機(jī)機(jī)器可讀介質(zhì)和瞬態(tài)計(jì)算機(jī)機(jī)器可讀通信介質(zhì)(例如,電、光、聲或其他形式的傳播信號(hào)——諸如載波、紅外信號(hào)、數(shù)字信號(hào)等)來(lái)(內(nèi)部地和/或在網(wǎng)絡(luò)上與其他電子設(shè)備之間進(jìn)行)存儲(chǔ)和傳遞代碼和數(shù)據(jù)。
另外,此類電子設(shè)備一般包括耦合至一個(gè)或多個(gè)其他組件的一個(gè)或多個(gè)處理器的集合,所述一個(gè)或多個(gè)其他組件例如是一個(gè)或多個(gè)存儲(chǔ)設(shè)備(非暫態(tài)機(jī)器可讀存儲(chǔ)介質(zhì))、用戶輸入/輸出設(shè)備(例如,鍵盤、觸摸屏和/或顯示器)以及網(wǎng)絡(luò)連接。該組處理器和其他組件的耦合一般是通過(guò)一個(gè)或多個(gè)總線和橋(也稱為總線控制器)實(shí)現(xiàn)的。存儲(chǔ)設(shè)備和攜帶網(wǎng)絡(luò)話務(wù)的信號(hào)分別表示一個(gè)或多個(gè)機(jī)器可讀存儲(chǔ)介質(zhì)和機(jī)器可讀通信介質(zhì)。因此,給定電子設(shè)備的存儲(chǔ)設(shè)備通常存儲(chǔ)用于在該電子設(shè)備的一個(gè)或多個(gè)處理器的集合上執(zhí)行的代碼和/或數(shù)據(jù)。當(dāng)然,本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分可使用軟件、固件和/或硬件的不同組合來(lái)實(shí)現(xiàn)。貫穿此具體實(shí)施方式,為了進(jìn)行解釋,陳述了眾多具體細(xì)節(jié)以提供對(duì)本發(fā)明的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員顯而易見(jiàn)的是,沒(méi)有這些具體細(xì)節(jié)中的一些細(xì)節(jié)也可實(shí)施本發(fā)明。在某些實(shí)例中,并不詳細(xì)描述公知的結(jié)構(gòu)和功能,以免使本發(fā)明的主題模糊。因此,本發(fā)明的范圍和精神應(yīng)根據(jù)所附權(quán)利要求書(shū)來(lái)確定。