屏蔽存儲器設(shè)備的制作方法
【專利摘要】一種對存儲器設(shè)備(110)屏蔽高寫入率的方法,包括:在存儲器控制器(105)處接收用于寫入數(shù)據(jù)的指令,該存儲器控制器(105)包括緩存(120),該緩存(120)包括限定存儲的數(shù)據(jù)的多個緩存行;利用該存儲器控制器(105),響應(yīng)于該緩存(120)的寫命中,更新緩存行;以及,利用該存儲器控制器(105),響應(yīng)于該緩存(120)內(nèi)的緩存行的緩存未命中,執(zhí)行該用于寫入數(shù)據(jù)的指令;其中該存儲器控制器(105)將向該緩存(120)寫入排序在向該存儲器設(shè)備(110)寫入之前。
【專利說明】屏蔽存儲器設(shè)備
【背景技術(shù)】
[0001] 計算機存儲器在計算機系統(tǒng)中用于(至少暫時地)存儲可以由處理器為隨后使用 而獲取的信息。計算機存儲器可以具有一些物理材料,在該物理材料上以由〇或1表示的 二進制位的形式存儲信息。一些存儲器設(shè)備中的物理材料被分成稱作存儲器單元的多個部 分。一些單元可以包括二進制位,二進制位有時從一個二進制位切換成另一二進制位,即從 1到0或從0到1。然而,其它單元可能比該存儲器內(nèi)的大多數(shù)單元相對更頻繁地轉(zhuǎn)換,那 些單元的物理結(jié)構(gòu)可以隨時間退化。計算機存儲器的存儲器單元的退化可以引起這些單元 因轉(zhuǎn)換和重寫過程而有缺陷。因此,數(shù)據(jù)可能丟失或不正確地存儲在存儲器內(nèi)有缺陷的單 元上。
【專利附圖】
【附圖說明】
[0002] 附圖圖示本文描述的原理的各示例且是本說明書的一部分。示例不限制權(quán)利要求 的范圍。
[0003] 圖1是根據(jù)本文描述的原理的一個示例的存儲器耐久系統(tǒng)的框圖。
[0004] 圖2是示出根據(jù)本文描述的原理的一個示例的對存儲器設(shè)備屏蔽高寫入率的方 法的流程圖。
[0005] 圖3是示出根據(jù)本文描述的原理的一個示例在收到對存儲器設(shè)備的寫命令之后, 用該存儲設(shè)備內(nèi)的多個存儲器行替代該存儲器設(shè)備中的其它行的方法的流程圖。
[0006] 圖4是圖1中描繪的系統(tǒng)的數(shù)據(jù)流程圖,該數(shù)據(jù)流程圖示出根據(jù)本文描述的原理 的一個示例從該系統(tǒng)讀取數(shù)據(jù)的過程。
[0007] 圖5是圖1中描繪的系統(tǒng)的數(shù)據(jù)流程圖,該數(shù)據(jù)流程圖示出根據(jù)本文描述的原理 的一個示例從該系統(tǒng)讀取數(shù)據(jù)的另一過程。
[0008] 圖6是圖1中描繪的系統(tǒng)的數(shù)據(jù)流程圖,該數(shù)據(jù)流程圖示出根據(jù)本文描述的原理 的一個示例的該系統(tǒng)內(nèi)的寫請求數(shù)據(jù)流程。
[0009] 圖7是圖1中描繪的系統(tǒng)的數(shù)據(jù)流程圖,該數(shù)據(jù)流程圖示出根據(jù)本文描述的原理 的一個示例的該系統(tǒng)內(nèi)的另一寫請求數(shù)據(jù)流程。
[0010] 在各圖中,相同的附圖標記表示相似但不一定相同的元件。
【具體實施方式】
[0011] 各種存儲器設(shè)備可以在計算系統(tǒng)中使用。如上所述的,一個擔憂是計算機存儲器 設(shè)備在被轉(zhuǎn)換的存儲器單元變得有缺陷之前承受從一個二進制位至另一二進制位的轉(zhuǎn)換 的次數(shù)的能力。對被轉(zhuǎn)換的單個存儲器單元的能力設(shè)定的值通常稱為耐久值。此值有時一 些存儲器設(shè)備中可以高達1〇16次轉(zhuǎn)換或更高。
[0012] 例如,由于動態(tài)隨機存取存儲器(DRAM)的速度、密度及其耐久性的原因,動態(tài)隨 機存取存儲器(DRAM)是可以用于主存儲器的一類存儲器設(shè)備。然而,DRAM存儲器設(shè)備具有 物理限制。例如,在相對不遠的未來,由于DRAM的平面排列預(yù)計會終結(jié),所以預(yù)計DRAM制 造商會開始堆疊芯片。然而,消費者將繼續(xù)要求每個封裝增加的存儲器。芯片堆疊是一種 已經(jīng)提出的方法,在該方法中DRAM存儲器的各層可以堅直地一個堆疊在另一個上。然而, 芯片堆疊較貴且可能不是最佳解決方案。
[0013] 自旋力矩轉(zhuǎn)移(STT)以及相變存儲器(PCM)是其它類型的存儲器設(shè)備。然而,STT 和PCM都不能排列超過DRAM密度,因為STT和PCM都要求較大(100X100nm2)的硅存取晶 體管,這排除了使用片內(nèi)交叉堆疊的能力。
[0014] 在計算系統(tǒng)中可以使用的再一種存儲器設(shè)備是憶阻設(shè)備。在標題為 "Multi-terminal Electrically Actuated Switch(多終端電致動開關(guān))"的U.S.專利申 請公開 No. 2008/0079029 中以及標題為 "Electrically Actuated Switch (電致動開關(guān))" 的U. S.專利申請公開No. 2008/009033 (二者都屬于R.斯坦利?威廉姆斯)中描述了憶阻 設(shè)備,這兩個申請的全部內(nèi)容通過引用特此并入。憶阻器是一種無源二端電組件,當電流沿 一個方向流過該設(shè)備時電阻增加,當電流沿相反方向流過時電阻降低。此外,當電流停止 時,該組件保持其具有的最后電阻,并且當電荷流動再次開始時,電路的電阻將是其上一次 活躍時的電阻。憶阻設(shè)備可以利用這些電阻狀態(tài)來存儲數(shù)據(jù)。目前,憶阻器的耐久性還未 達到DRAM或STT的水平,然而,憶阻設(shè)備的密度可以是DRAM設(shè)備的數(shù)量的四倍。
[0015] 本說明書描述了一種對存儲器設(shè)備屏蔽高寫入率的方法,該方法包括:在存儲器 控制器處接收用于寫入數(shù)據(jù)的指令,該存儲器控制器包括緩存,該緩存包括限定存儲的數(shù) 據(jù)的多個緩存行;利用該存儲器控制器,響應(yīng)于該緩存中的寫命中(write hit),更新緩存 行;以及利用該存儲器控制器,響應(yīng)于對該緩存內(nèi)的緩存行的緩存未命中(cache miss),執(zhí) 行該用于寫入數(shù)據(jù)的指令,其中該存儲器控制器將向該緩存寫入排序在向該存儲器設(shè)備寫 入之前。
[0016] 本說明書進一步描述了一種用于對存儲器設(shè)備屏蔽多個寫過程的系統(tǒng),該系統(tǒng)包 括:存儲器控制器;存儲器設(shè)備,通信地耦接至該存儲器控制器;以及寫屏蔽緩存,通信地 耦接至該存儲器控制器以及存儲器設(shè)備,其中該存儲器控制器接收來自處理器的寫入數(shù)據(jù) 請求并響應(yīng)于該寫屏蔽緩存中的寫命中,更新該寫屏蔽緩存中的緩存行;響應(yīng)于該寫屏蔽 緩存內(nèi)的緩存行的緩存未命中,向該寫屏蔽緩存內(nèi)的緩存行寫入數(shù)據(jù);且其中向該寫屏蔽 緩存內(nèi)的緩存行寫入數(shù)據(jù)包括:將被驅(qū)除的緩存行從該寫屏蔽緩存寫至該存儲器設(shè)備。
[0017] 如本說明書及所附權(quán)利要求書中使用的,術(shù)語"存儲器設(shè)備"或"存儲器"可以概 括地被解釋為能夠存儲數(shù)據(jù)的任意類型設(shè)備。存儲器設(shè)備的一些示例可以包括憶阻設(shè)備、 硬盤驅(qū)動器(HDD)、隨機存取存儲器(RAM)設(shè)備、只讀存儲器(ROM)設(shè)備、閃存設(shè)備以及任意 其它易失性或非易失性存儲器設(shè)備。
[0018] 此外,如本說明書及所附權(quán)利要求書中使用的,術(shù)語"耐久值"的意思應(yīng)被概括地 理解為給予存儲器設(shè)備的值,該值描述存儲器設(shè)備(特別地存儲器設(shè)備內(nèi)的存儲器單元) 能夠被寫入多少次。如上面討論的,各種存儲器設(shè)備可以具有可能高達1〇 16或甚至更高的 耐久值范圍。
[0019] 更進一步,在本說明書及所附權(quán)利要求書中,術(shù)語"初始緩存行"、"初始行"或"熱 緩存行(hot cache lines)"的意思應(yīng)被概括地理解為存儲器設(shè)備內(nèi)由計算機系統(tǒng)最先使 用且可能受到比該存儲器設(shè)備中的其它存儲器行不相稱地更多次寫過程的存儲器行。
[0020] 在下面的描述中,為了解釋,描述多個具體細節(jié),以便提供對本系統(tǒng)及方法的深入 理解。然而,對本領(lǐng)域技術(shù)人員將顯而易見的是,本裝置、系統(tǒng)及方法可以在沒有這些具體 細節(jié)的情況下實施。說明書中對"示例"或類似語言的引用表示與該示例結(jié)合描述的特定 特征、結(jié)構(gòu)或特性如所描繪的那樣被包括在內(nèi),但可以不包括在其它示例內(nèi)。
[0021] 圖1是根據(jù)本文描述的原理的一個示例的存儲器耐久系統(tǒng)(100)的框圖。系統(tǒng) (100)可以包括:存儲器控制器(105),通信地耦接至存儲器控制器(105)的存儲器設(shè)備 (110),以及通過系統(tǒng)互連(118)(如系統(tǒng)總線)通信地耦接至存儲器控制器(105)的多個 處理器(115-l、115-2、115-n)。
[0022] 處理器(115-l、115-2、115_n)可以是能夠根據(jù)編程指令處理數(shù)據(jù)以及指引系統(tǒng) (100)內(nèi)的其它硬件設(shè)備從存儲器讀取或向存儲器寫入的任意類型處理器。在一個示例中, 任意多個處理器可以與系統(tǒng)(100) -起使用。在圖1示出的示例中,處理器(115-1、115-2、 115-n)可以經(jīng)由存儲器控制器(105)以及存儲器控制器(105)的單獨硬件設(shè)備與存儲器 (100)連接。
[0023] 存儲器設(shè)備(110)可以是上述任意類型的存儲器。因此,存儲器設(shè)備可以是例如 易失性存儲器設(shè)備,如隨機存取存儲器(RAM)、動態(tài)隨機存取存儲器(DRAM)設(shè)備、靜態(tài)隨機 存取存儲器(SRAM)設(shè)備、晶閘管隨機存取存儲器(T-RAM)設(shè)備、零電容器隨機存取存儲器 (Z-RAM)設(shè)備或雙晶體管隨機存儲器(TTRAM)。存儲器設(shè)備還可以是非易失性存儲器設(shè)備, 如只讀存儲器設(shè)備(掩模ROM、PROM、EPROM、EEPR0M)或非易失性隨機存取存儲器設(shè)備(即 閃存)。在一個示例中,存儲器設(shè)備是憶阻設(shè)備。
[0024] 盡管存儲器設(shè)備(110)可能是多種不同的易失性和非易失性存儲器設(shè)備,但是每 個設(shè)備可以在該設(shè)備內(nèi)的特定位置按序存儲多個位(bit)。在一個示例中,這些位可以形成 該存儲器內(nèi)的多個緩存行。在此示例中,從存儲器設(shè)備(110)讀取或向存儲器設(shè)備(110) 寫入的最小存儲器單元可以是包括所設(shè)定的多個位的緩存行。在一個示例中,位的數(shù)量是 六十四。在另一示例中,位的數(shù)量是512位。在讀或?qū)戇^程期間,存儲器設(shè)備(110)內(nèi)的特 定存儲器行可能比其它行相對更經(jīng)常被利用。這些最初使用的存儲器行可以稱為熱緩存 行,因為它們比存儲器設(shè)備(110)內(nèi)的其它緩存行以更快的速度退化。存儲器控制器(105) 連同寫屏蔽緩存(120)可以用來保護并最小化存儲器設(shè)備內(nèi)的緩存行的退化。
[0025] 存儲器控制器(105)可以包括寫屏蔽緩存(120)、主控制器(125)以及進行中(in flight)存儲器請求表(130)。存儲器控制器(105)上的其它設(shè)備或程序可以包括存儲器 請求隊列(135)、存儲器響應(yīng)隊列(140)和存儲器設(shè)備接口(150)?,F(xiàn)在將更詳細地描述這 些中的每個。
[0026] 存儲器請求隊列(135)存儲為被指定給存儲器設(shè)備(110)的存儲器請求所特有的 信息。存儲器請求隊列內(nèi)的請求是以從多個處理器(115-1、115-2、115-n)接收它們的順序 存儲的。在存儲器請求隊列(135)內(nèi)存儲的信息中的一些可以是地址以及所請求的請求類 型(即,該請求是對存儲器(110)的還是對外圍設(shè)備的,或者是讀請求還是寫請求)。
[0027] 存儲器響應(yīng)隊列(140)接收來自寫屏蔽緩存(120)的讀響應(yīng)信號和寫響應(yīng)信號。 讀響應(yīng)信號可以包括讀數(shù)據(jù)信號以及識別與被讀數(shù)據(jù)對應(yīng)的讀請求的讀狀態(tài)信號。寫響應(yīng) 信號可以包括寫狀態(tài)信號,該寫狀態(tài)信號識別已由存儲器控制器(105)內(nèi)的設(shè)備(更具體 地,寫屏蔽緩存(120))服務(wù)過的寫請求。存儲器響應(yīng)隊列(140)以存儲器響應(yīng)信號被接收 的順序存儲存儲器響應(yīng)信號,以向處理器(115-l、115-2、115-n)中的任一個傳遞。
[0028] 存儲器控制器(105)還包括存儲器設(shè)備接口(150)。存儲器設(shè)備接口(150)可以 與向憶阻設(shè)備這樣的存儲器設(shè)備(110)通信。具體地,存儲器設(shè)備接口(150)可以使能在 存儲器控制器(105)的各設(shè)備和存儲器設(shè)備(110)之間進行數(shù)據(jù)傳遞,允許存儲器控制器 (105)能夠從存儲器設(shè)備(110)讀取和向存儲器設(shè)備(110)寫入。
[0029] 主控制器(125)接收來自存儲器請求隊列(135)的存儲器請求,并通過將這些存 儲器請求轉(zhuǎn)發(fā)到寫屏蔽緩存(120)上來處理這些請求。在一個示例中,主控制器在先進先 出情形下接收來自存儲器請求隊列(135)的存儲器請求。
[0030] 如上面簡要描述的,寫屏蔽緩存(120)可以維護多個緩存行,這些緩存行限定可 能比在其它位置(如存儲器設(shè)備110)中保存的其它緩存行相對更經(jīng)常被訪問的數(shù)據(jù)。寫 屏蔽緩存(120)可以是起處理器(115-1、115-2、115-n)和存儲器設(shè)備(110)之間的緩沖器 作用的具有最近最少使用(LRU)替換策略的完全聯(lián)想式回寫緩存。
[0031] 當寫動作命中寫屏蔽緩存(120)時,寫屏蔽緩存(120)本身被更新,而不是被寫 至存儲器設(shè)備(110)。未命中寫屏蔽緩存(120)的寫動作將被寫至該緩存中未使用的項或 LRU項。寫該寫動作被寫至寫屏蔽緩存(120)中的LRU項時,任何被驅(qū)除的行將被寫至存 儲器設(shè)備(110)。N行寫屏蔽緩存(120)在最大寫入率下向存儲器設(shè)備(110)中的各行提 供N+1倍減少。因此,例如,具有100至1000個緩存項的寫屏蔽緩存(120)可相對更容易 在存儲器控制器(105)內(nèi)實現(xiàn),且可以在最大寫入率下分別對存儲器設(shè)備(110)提供2至 3個數(shù)量級的減少。這在存儲器設(shè)備(110)內(nèi)的一小組熱緩存行在像系統(tǒng)(100)使用信號 量(semaphore)或類bcopy例程這樣的環(huán)境下比其它行相對更常被寫入時,是特別有用的。
[0032] 現(xiàn)在轉(zhuǎn)向圖2,示出根據(jù)本文描述的原理的一個示例的流程圖,該流程圖示出對存 儲器設(shè)備(110)屏蔽高寫入率的方法(200)。該方法可以由在存儲器控制器(105)處主控 制器(125)接收(框205)用于寫入數(shù)據(jù)的指令開始。該指令可以在存儲器請求隊列(135) 處接收,且根據(jù)先入先出的例程被發(fā)送至主控制器(125)。主控制器(125)可以查找寫屏蔽 緩存(120)。當寫動作命中該寫屏蔽緩存(120)時,存儲器控制器(105)響應(yīng)于該寫命中而 更新(框210)寫屏蔽緩存(120)本身。數(shù)據(jù)未被寫至存儲器設(shè)備(110),以防止存儲器設(shè) 備(110)經(jīng)受另一寫過程。
[0033] 響應(yīng)于寫屏蔽緩存(120)內(nèi)的緩存行的緩存未命中,存儲器控制器(105)可以執(zhí) 行(框215)用于向?qū)懫帘尉彺妫?20)寫入數(shù)據(jù)的指令。該數(shù)據(jù)可以在寫屏蔽緩存(120)內(nèi) 未使用的項中被寫至寫屏蔽緩存(120),或被寫至寫屏蔽緩存(120)中最近最少使用(LRU) 的緩存行。如上面所討論的,當LRU緩存行被寫入時,寫屏蔽緩存(120)可以指引將所驅(qū)除 的緩存行寫至存儲器設(shè)備(110)。
[0034] 在這一個示例中,當多個初始行接近最大寫次數(shù)時,系統(tǒng)(100)可以使用存儲器 設(shè)備(110)內(nèi)的多個備用行作為多個初始行的替代。在此示例中,這些備用行可以在備用 行池中被留出且不可由存儲器控制器(105)中的任何設(shè)備訪問,直至已確定至少一個初始 行正接近其最大寫次數(shù)。這些初始行可以稱作熱行,因為它們最常被寫入,因此以比存儲器 設(shè)備(110)內(nèi)的其它緩存行更快的率遭受退化。這在系統(tǒng)(100)使用信號量或類bcopy例 程的情況下是特別真實的。
[0035] 在對存儲器設(shè)備(110)的每個寫過程期間,存儲器控制器(105)可以在緩存行中 設(shè)置64字節(jié)的數(shù)據(jù)。除該64字節(jié)數(shù)據(jù)以外,還可以設(shè)置與第一 64字節(jié)關(guān)聯(lián)且用作計數(shù)器 的另外48位數(shù)據(jù)。計數(shù)器描述已對該數(shù)據(jù)行寫入數(shù)據(jù)的次數(shù)。結(jié)果,每當該行被寫入時, 存儲器控制器(105)首先從該行讀取該計數(shù),然后用新數(shù)據(jù)對該存儲器行寫入。經(jīng)用新數(shù) 據(jù)寫入的計數(shù)器可以指示該行又被寫入了一次。此過程可以通過遞增地向該計數(shù)器增加又 一個寫計數(shù)來繼續(xù),直至達到寫計數(shù)的閾值數(shù)。
[0036] 寫計數(shù)的閾值數(shù)可以是,存儲器設(shè)備(110)內(nèi)的行在該存儲器設(shè)備在該物理位置 處的物理結(jié)構(gòu)已經(jīng)退化至可能不信任其保存數(shù)據(jù)的點以前可以被寫入的最大次數(shù)。例如, 一些數(shù)據(jù)設(shè)備可以在任意一個存儲器行退化之前在結(jié)構(gòu)上能夠承受大約1〇 9次寫過程。隨 著任意一行的寫次數(shù)接近該數(shù)(即,1〇9),寫過程失敗或數(shù)據(jù)丟失的機會可能增加。為了防 止數(shù)據(jù)丟失或數(shù)據(jù)行故障,主控制器(105)確定何時達到此數(shù)并且從那時起改變數(shù)據(jù)被存 儲的位置的物理布局。
[0037] 因此,一旦初始行已經(jīng)達到特定的預(yù)定最大寫次數(shù)閾值,存儲器控制器(105)就 可以指引將引備用行的地址以及重定向標記放到初始行的數(shù)據(jù)字段中。此后,任何此后對 初始行的讀取將檢測該重定向標記,并觸發(fā)對數(shù)據(jù)被存儲至的新行的讀取。
[0038] 因此,在上述示例中,如果在寫屏蔽緩存(120)中存在空閑項,則新寫行將連同其 寫計數(shù)一起從存儲器設(shè)備(110)被寫到緩存中。然而,如果寫屏蔽緩存(120)的所有項當 前都在使用,則將比較所有N個行加上新行的寫計數(shù)。在一個示例中,在N+1個行中具有最 小寫計數(shù)的行將以增長的寫計數(shù)被寫至存儲器設(shè)備(110)。N個其它行將被保留在寫屏蔽 緩存(120)中。在另一示例中,可以實現(xiàn)最近最少使用(LRU)機制以增加和驅(qū)除寫屏蔽緩 存(120)中的緩存行。在此示例中,將驅(qū)除最近最少使用的緩存行,以為要向?qū)懫帘尉彺?(120)增加的新行留出空間。
[0039] 當行的48位寫計數(shù)器接近由所使用的那類存儲器設(shè)備(110)支持的最大寫次數(shù) 閾值時,從備用行池中移除新行。將備用行的地址放到數(shù)據(jù)字段內(nèi),設(shè)置重定向標記(存儲 在數(shù)據(jù)字段旁),并且將二者都寫到初始行中。之后對初始行的讀取將檢測重定向標記,觸 發(fā)新行的讀取。
[0040] 在一個示例中,如果新行用壞以及在新行用壞時,可以從備用池中移除更新的行, 并更新初始行指針以觸發(fā)更新的行的讀取。在另一示例中,當更新的行達到同樣的或類似 的最大寫次數(shù)閾值時,可以使用來自備用行池的另一新行。在此示例中,可以設(shè)置(存儲在 數(shù)據(jù)字段旁)重定向標記,并將二者都寫到前面的新行內(nèi),由此形成退化行的鏈,該鏈指向 備用行池的新行。
[0041] 參照圖3,示出流程圖,該流程圖示出根據(jù)本文描述的原理的一個示例在接收到對 存儲器設(shè)備(110)的寫命令之后用存儲器設(shè)備(110)內(nèi)的多個存儲器行替代該存儲器設(shè)備 (110)中的其它行的方法。在已如圖2中討論的那樣在寫屏蔽緩存(120)中完成寫命令之 后,接收(框305)用于將所驅(qū)除的緩存行寫至存儲器設(shè)備(110)的指令。如上面所討論 的,在一個示例中,按照最近最少使用(LRU)替換策略,此所驅(qū)除的緩存行可以是具有最小 寫計數(shù)的緩存行。
[0042] 該方法可以以存儲器控制器(105)從存儲器設(shè)備(110)內(nèi)的存儲器行中讀?。?310)限定已向該存儲器行寫入數(shù)據(jù)的次數(shù)的數(shù)據(jù)繼續(xù)。然后,存儲器控制器(105)可以確 定(框315)已向該存儲器行寫入數(shù)據(jù)的次數(shù)是否已經(jīng)超過預(yù)定最大閾值。如果還未超過 預(yù)定寫次數(shù)最大閾值(框315,'否'確定),則增長(框320)計數(shù)器值并向該存儲器行寫入 (框325)數(shù)據(jù)。在一個示例中,增長計數(shù)器值可以通過存儲器控制器(105)對當前計數(shù)增 力口 '1'來實現(xiàn)。
[0043] 如果已超過預(yù)定寫次數(shù)最大閾值(框315, '是'確定),則從存儲器行的備用池中 移除(框330)新行。然后,將備用行的地址和重定向標記輸入(框335)到初始行中。這 樣,退化的或至少接近退化的存儲器行將不被用于在存儲器設(shè)備(110)上存儲數(shù)據(jù),而數(shù) 據(jù)仍可以安全地存儲在存儲器設(shè)備(110)的其它位置上。在將備用行的地址和重定向標記 輸入(框335)到初始行中之后,可以將數(shù)據(jù)寫到存儲器設(shè)備(110)中的新行內(nèi)。
[0044] 在一個示例中,圖2和圖3中描述的方法共同可以都在圖1中描述的系統(tǒng)上實現(xiàn)。 在另一示例中,圖2中描述的方法僅可以在圖1中描述的系統(tǒng)上實現(xiàn)。在另一示例中,圖3 中描述的方法僅可以在圖1中描述的系統(tǒng)上實現(xiàn)。
[0045] 圖4-圖7示出四個數(shù)據(jù)流程圖,這四個數(shù)據(jù)流程圖示出可以引導數(shù)據(jù)通過存儲器 控制器(105)的各設(shè)備的各種方式。圖4和圖5各自描繪讀請求數(shù)據(jù)流程,其中系統(tǒng)(100) 的處理器(115-1、115-2、115-n)請求要從寫屏蔽緩存(120)、進行中存儲器請求表(130)以 及存儲器設(shè)備(110)中讀取并由寫屏蔽緩存(120)、進行中存儲器請求表(130)以及存儲器 設(shè)備(110)返回的數(shù)據(jù)。圖6和圖7各自描繪寫請求數(shù)據(jù)流程,其中系統(tǒng)(100)的處理器 (115-1、115-2、115-n)請求要被寫至寫屏蔽緩存(120)和存儲器設(shè)備(110)的特定數(shù)據(jù)。 在這些圖中,可能不討論圖1中描繪的設(shè)備中的一些。然而,在一些示例中,這些設(shè)備(如存 儲器設(shè)備接口(150)、存儲器響應(yīng)隊列(140)、存儲器請求隊列(135)以及系統(tǒng)互連(118)) 仍可以如上面所描述的那樣實現(xiàn)。
[0046] 圖4是圖1中描繪的系統(tǒng)的數(shù)據(jù)流程圖,其示出根據(jù)本文描述的原理的一個示例 從系統(tǒng)讀取數(shù)據(jù)的過程。系統(tǒng)(100)的處理器(115-l、115-2、115-n)中至少一個可以通過 存儲器請求隊列(135)向主控制器(125)發(fā)送讀請求(405)。
[0047] 主控制器(125)可以向?qū)懫帘尉彺妫?20)發(fā)送讀請求(420),以確定寫屏蔽緩 存(120)是否在寫屏蔽緩存(120)內(nèi)的多個緩存行之一中包括由處理器(115-1、115-2、 115-n)請求的數(shù)據(jù)。圖4示出從請求(420)發(fā)生的讀未命中(425)。這可以表示與原始讀 請求(405)相關(guān)的數(shù)據(jù)不在寫屏蔽緩存(120)上。
[0048] 然后,主控制器(125)利用用于向進行中存儲器表(130)添加該請求的指令向 存儲器設(shè)備(110)發(fā)送讀請求(430)。然后,讀請求(435)可以經(jīng)由進行中存儲器請求表 (130)轉(zhuǎn)發(fā)到存儲器設(shè)備(110)上,根據(jù)讀請求(435)可以從存儲器設(shè)備(110)讀取數(shù)據(jù)。 然后,經(jīng)由進行中存儲器請求表(130)將所請求的數(shù)據(jù)(440、445)提供給處理器(115-1、 115-2、115-n),在進行中存儲器請求表(130)中創(chuàng)建記錄,該記錄限定該信息現(xiàn)在可以自 由用于其它隨后的讀。
[0049] 如果由處理器(115-1、115-2、115-n)請求的信息被提供作為寫屏蔽緩存(120)上 的數(shù)據(jù),則圖4中的數(shù)據(jù)流程允許更快地訪問存儲器。圖5描繪了這樣的情形。圖5是圖1 中描繪的系統(tǒng)(100)的數(shù)據(jù)流程圖,其示出根據(jù)本文描述的原理的一個示例從該系統(tǒng)讀取 數(shù)據(jù)的另一過程。
[0050] 這里,系統(tǒng)(100)的處理器(115-1、115-2、115-n)中至少一個可以通過存儲請求 隊列(135)向主控制器(125)發(fā)送讀請求(505)。主控制器(125)可以向?qū)懫帘尉彺妫?20) 發(fā)送讀請求(520),以確定寫屏蔽緩存(120)是否包括正由處理器(115-1、115-2、115-n)請 求的數(shù)據(jù)位于寫屏蔽緩存(120)中的緩存行之一內(nèi)。圖5示出所生成的讀命中(525),讀命 中(525)表示寫屏蔽緩存(120)內(nèi)的至少一個緩存行包含由處理器(115-1、115-2、115-n) 請求的數(shù)據(jù)。在此情況下,可以經(jīng)由系統(tǒng)(100)的存儲器響應(yīng)隊列(140)向處理器(115-1、 115-2、115-n)提供所找到的數(shù)據(jù)(530)。
[0051] 圖6是圖1中描繪的系統(tǒng)(100)的數(shù)據(jù)流程圖,其示出根據(jù)本文描述的一個示例 的系統(tǒng)(100)內(nèi)的寫請求數(shù)據(jù)流程。系統(tǒng)(100)的處理器(115-l、115-2、115-n)中至少一 個利用寫請求(605)請求向系統(tǒng)(100)寫入數(shù)據(jù)。主控制器(125)接收寫請求¢05)。
[0052] 主控制器(125)可以向?qū)懫帘尉彺妫?20)發(fā)送寫請求(620)。如圖6中描繪的,結(jié) 果是寫未命中(625)。這可以表示寫屏蔽緩存(120)內(nèi)沒有緩存行包含將要用在原始寫請 求(605)中限定的數(shù)據(jù)重寫或更新的數(shù)據(jù)。然后,主控制器(125)可以向存儲器設(shè)備(110) 發(fā)送寫請求¢30)。此請求¢30)可以進一步表示正被寫的數(shù)據(jù)正經(jīng)受寫過程且在該過程 期間不可用。
[0053] 讀請求(635)可以首先經(jīng)由進行中存儲器請求表(130)被轉(zhuǎn)發(fā)到存儲器設(shè)備 (110)上。發(fā)送讀請求¢35),以便確定原始寫請求¢05)的數(shù)據(jù)要被寫至的存儲器行的當 前計數(shù)數(shù)據(jù)。此數(shù)據(jù)¢40)被發(fā)送到增長寫計數(shù)器(645)上。如上面討論的,增長計數(shù)器 可以首先確定是否已達到該存儲器行的寫計數(shù)閾值最大數(shù)。在圖6中,增長寫計數(shù)器(645) 已確定還未達到該存儲器行的寫計數(shù)閾值最大數(shù),且已向存儲器設(shè)備(110)發(fā)送寫請求 (650)。按照寫請求¢50),原始寫請求¢05)的數(shù)據(jù)被寫至存儲器設(shè)備(110)。應(yīng)注意,在 一些示例中,增長寫計數(shù)器(645)可以確定已達到該存儲器行的寫計數(shù)閾值最大數(shù),并繼 續(xù)用來自備用行池的新存儲器行替換數(shù)據(jù)正要被寫至的存儲器行。
[0054] 在寫完數(shù)據(jù)之后,系統(tǒng)(100)可以向處理器(115-l、115-2、115-n)返回存儲器已 被寫至存儲器設(shè)備(110)且數(shù)據(jù)再次自由的指示(655)。向處理器(115-l、115-2、115-n) 提供此數(shù)據(jù)(655)。
[0055] 圖7是圖1中描繪的系統(tǒng)(100)的數(shù)據(jù)流程圖,其示出根據(jù)本文描述的一個示例 的系統(tǒng)(100)內(nèi)的另一寫請求數(shù)據(jù)流程。這里,系統(tǒng)(100)的處理器(115-l、115-2、115-n) 中至少一個利用寫請求(705)請求向系統(tǒng)(100)寫入數(shù)據(jù)。主控制器(125)接收寫請求 (705)。
[0056] 主控制器(125)還可以向?qū)懫帘尉彺妫?20)發(fā)送寫請求(720)。如圖7中描繪的, 結(jié)果是寫未命中(725)。這可以表示寫屏蔽緩存(120)內(nèi)沒有緩存行包含將要用在原始 寫請求(705)中限定的數(shù)據(jù)重寫或更新的數(shù)據(jù)。然后,主控制器(125)可以向?qū)懫帘尉彺?(120)發(fā)送寫請求(730)。此請求(730)可以表示寫屏蔽緩存(120)具有系統(tǒng)(100)可以 將該數(shù)據(jù)寫至的空緩存行,或者此請求(730)可以表示寫屏蔽緩存(120)正在實現(xiàn)最近最 少使用(LRU)替換策略。最近最少使用(LRU)替換策略可以驅(qū)除緩存行內(nèi)的數(shù)據(jù),并向存 儲器設(shè)備(110)發(fā)送該數(shù)據(jù),并繼續(xù)在圖6中的630-660處描述的類似過程。
[0057] 在將數(shù)據(jù)寫入寫屏蔽緩存(120)之后,系統(tǒng)(100)向處理器(115-1、115-2、115-n) 發(fā)送該數(shù)據(jù)已被寫入的通知(735)。這樣,寫屏蔽緩存(120)可以用作處理器(115-1、 115-2、115-n)和存儲器設(shè)備(110)之間的緩沖器。因此,寫屏蔽緩存(120)可以防止多個 寫請求到達特定存儲器行可能因相對較高的寫請求次數(shù)而過早退化的存儲器設(shè)備(110)。
[0058] 本說明書進一步公開一種計算機程序產(chǎn)品,該計算機程序產(chǎn)品用于對存儲器設(shè)備 屏蔽高寫入率,該計算機程序產(chǎn)品包括計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)具有 隨其一起包含的計算機可用程序代碼。該計算機可用程序代碼可以包括在由處理器執(zhí)行時 會執(zhí)行以下步驟的計算機可用程序代碼:在存儲器控制器處接收用于寫入數(shù)據(jù)的指令,其 中該存儲器控制器包括緩存,該緩存包括限定存儲的數(shù)據(jù)的多個緩存行。該計算機可用程 序代碼可以進一步包括在由處理器執(zhí)行時會執(zhí)行以下步驟的計算機可用程序代碼:利用存 儲器控制器,響應(yīng)于該緩存中的寫命中,更新緩存行。該計算機可用程序代碼可以進一步包 括在由處理器執(zhí)行時會執(zhí)行以下步驟的計算機可用程序代碼:利用存儲器控制器,響應(yīng)于 該緩存內(nèi)的緩存行的緩存未命中,執(zhí)行該用于寫入數(shù)據(jù)的指令。該計算機可用程序代碼可 以進一步包括在由處理器執(zhí)行時會執(zhí)行以下步驟的計算機可用程序代碼:將向該緩存寫入 排序在向該存儲器設(shè)備寫入之前。
[0059] 該計算機可用程序代碼可以進一步包括在由處理器執(zhí)行時會執(zhí)行以下步驟的計 算機可用程序代碼:接收用于向存儲器設(shè)備中的存儲器行寫入數(shù)據(jù)的指令,讀取限定已向 該存儲器行寫入數(shù)據(jù)的次數(shù)的數(shù)據(jù),以及確定是否已超過預(yù)定寫次數(shù)最大閾值。計算機可 用程序代碼可以進一步包括在由處理器執(zhí)行時會執(zhí)行以下步驟的計算機可用程序代碼:增 長計數(shù)器值,以及在還未超過預(yù)定寫次數(shù)最大閾值時向存儲器設(shè)備(110)的存儲器行寫入 數(shù)據(jù)。該計算機可用程序代碼可以進一步包括在由處理器執(zhí)行時會執(zhí)行以下步驟的計算機 可用程序代碼:在已超過預(yù)定寫次數(shù)最大閾值時,從存儲器設(shè)備中的備用池行中移除新行, 并且將備用行的地址和重定向標記輸入到初始行中。
[0060] 利用具體設(shè)計信息及基于跟蹤仿真器對各種緩解技術(shù)進行分析,基于跟蹤的仿真 器被開發(fā)用于分析緩解技術(shù)對商業(yè)基準工作負荷的有效性。例如,如果每個存儲器控制器 管理至少32GB的主存儲器,提供50GB/S的帶寬,支持最大每秒3億9千萬次緩存行寫,并 且是具有16個核的處理器以及50ns的緩存未命中延遲的一部分,則下表示出本申請中描 述的緩解技術(shù)對具有多個設(shè)備耐受等級的憶阻設(shè)備工作得有多好。
[0061]
【權(quán)利要求】
1. 一種對存儲器設(shè)備(110)屏蔽高寫入率的方法,包括: 在存儲器控制器(105)處接收用于寫入數(shù)據(jù)的指令,所述存儲器控制器(105)包括緩 存(120),所述緩存(120)包括限定存儲的數(shù)據(jù)的多個緩存行; 利用所述存儲器控制器(105),響應(yīng)于所述緩存(120)中的寫命中,更新緩存行;以及 利用所述存儲器控制器(105),響應(yīng)于所述緩存(120)內(nèi)的緩存行的緩存未命中,執(zhí)行 所述用于寫入數(shù)據(jù)的指令; 其中所述存儲器控制器(105)將向所述緩存(120)寫入排序在向所述存儲器設(shè)備 (110)寫入之前。
2. 根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于所述緩存(120)內(nèi)的緩存行的緩存未 命中執(zhí)行所述用于寫入數(shù)據(jù)的指令進一步包括:將被驅(qū)除的緩存行寫至所述存儲器設(shè)備 (110)。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述被驅(qū)除的緩存行是最近最少使用的緩存行。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述存儲器設(shè)備(110)是憶阻設(shè)備。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述緩存(120)實現(xiàn)回寫策略。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述存儲器設(shè)備(110)包括被分成備用行和初始 行的多個數(shù)據(jù)行,并且其中所述方法進一步包括: 接收用于向所述存儲器設(shè)備(110)中的存儲器的初始行寫入數(shù)據(jù)的指令; 讀取限定已向存儲器的所述初始行寫入數(shù)據(jù)的次數(shù)的數(shù)據(jù);以及 確定是否已超過存儲器的所述初始行的預(yù)定寫次數(shù)最大閾值。
7. 根據(jù)權(quán)利要求6所述的方法,其中如果還未超過存儲器的所述初始行的寫次數(shù)最大 閾值,則: 增長地更新與存儲器的所述初始行關(guān)聯(lián)的計數(shù)器值;以及 向存儲器的所述初始行寫入數(shù)據(jù)。
8. 根據(jù)權(quán)利要求6所述的方法,其中如果已超過存儲器的所述初始行的寫次數(shù)最大閾 值,則: 從所述存儲器中的備用池行中移除行;以及 將所述備用池行的地址以及重定向標記輸入到存儲器的行中。
9. 一種保護存儲器設(shè)備(110)不受多個寫過程影響的方法,包括: 在主控制器(125)處,接收用于對與所述主控制器(125)關(guān)聯(lián)的存儲器進行寫的指 令; 響應(yīng)于與所述主控制器(125)關(guān)聯(lián)的寫屏蔽緩存(120)內(nèi)的緩存行的緩存未命中,通 過對通信地耦接至所述主控制器(125)的存儲器設(shè)備(110)進行寫,執(zhí)行所述用于向存儲 器進行寫的指令,所述存儲器設(shè)備(110)包括多個存儲器行; 讀取限定已向所述存儲器設(shè)備(110)中的所述多個存儲器行中的一存儲器行寫入數(shù) 據(jù)的次數(shù)的數(shù)據(jù);以及 確定是否已超過該存儲器行的預(yù)定寫次數(shù)最大閾值。
10. 根據(jù)權(quán)利要求9所述的方法,其中如果還未超過該存儲器行的寫次數(shù)最大閾值, 則: 增長地更新與該存儲器行關(guān)聯(lián)的計數(shù)器值;以及 向該存儲器行寫入數(shù)據(jù)。
11. 根據(jù)權(quán)利要求9所述的方法,其中如果已超過該存儲器行的寫次數(shù)最大閾值,則: 從所述存儲器中的備用池行中移除新行;以及 將所述新行的地址以及重定向標記輸入該存儲器行中。
12. 根據(jù)權(quán)利要求9所述的方法,其中所述存儲器設(shè)備(110)是憶阻設(shè)備。
13. -種用于對存儲器設(shè)備(110)屏蔽多個寫過程的系統(tǒng),包括: 存儲器控制器(105); 存儲器設(shè)備(110),通信地耦接至所述存儲器控制器(105); 寫屏蔽緩存(120),通信地耦接至所述存儲器控制器(105)以及存儲器設(shè)備(110); 其中所述存儲器控制器(105)接收來自處理器(115-l、115-2、115-n)的寫數(shù)據(jù)請求; 其中響應(yīng)于所述寫屏蔽緩存(120)中的寫命中,更新所述寫屏蔽緩存(120)中的緩存 行; 其中響應(yīng)于所述寫屏蔽緩存(120)內(nèi)的緩存行的緩存未命中,向所述寫屏蔽緩存 (120)中的所述緩存行寫入數(shù)據(jù);以及 其中向所述寫屏蔽緩存(120)中的所述緩存行寫入數(shù)據(jù)包括將來自所述寫屏蔽緩存 (120)的被驅(qū)除的緩存行寫至所述存儲器設(shè)備(110)。
14. 根據(jù)權(quán)利要求13所述的系統(tǒng),其中將來自所述寫屏蔽緩存(120)的被驅(qū)除的緩存 行寫至所述存儲器設(shè)備(110)包括: 利用所述存儲器控制器(105),讀取限定向所述存儲器設(shè)備(110)中的存儲器行寫入 數(shù)據(jù)的次數(shù)的數(shù)據(jù);以及 確定是否已超過該存儲器行的預(yù)定寫次數(shù)最大閾值。
15. 根據(jù)權(quán)利要求14所述的系統(tǒng),其中, 如果還未超過該存儲器行的寫次數(shù)最大閾值,則: 增長地更新與該存儲器行關(guān)聯(lián)的計數(shù)器值;以及 向所述存儲器行寫入數(shù)據(jù);并且 如果已超過該存儲器行的寫次數(shù)最大閾值,則: 從所述存儲器設(shè)備(110)中的備用池行中移除新行;以及 將所述新行的地址以及重定向標記輸入該存儲器行中。
【文檔編號】G06F12/08GK104254841SQ201280072701
【公開日】2014年12月31日 申請日期:2012年4月27日 優(yōu)先權(quán)日:2012年4月27日
【發(fā)明者】克雷格·韋爾納, 加里·戈斯廷, 馬修·D·皮克特 申請人:惠普發(fā)展公司,有限責任合伙企業(yè)