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