TWI797354B - 快取記憶體、儲存系統和快取記憶體的逐出方法 - Google Patents
快取記憶體、儲存系統和快取記憶體的逐出方法 Download PDFInfo
- Publication number
- TWI797354B TWI797354B TW108124280A TW108124280A TWI797354B TW I797354 B TWI797354 B TW I797354B TW 108124280 A TW108124280 A TW 108124280A TW 108124280 A TW108124280 A TW 108124280A TW I797354 B TWI797354 B TW I797354B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- data
- memory
- groups
- eviction
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提供快取記憶體、包括其的儲存系統和快取記憶體的逐出方法。在用於主機和記憶體之間的通訊的快取記憶體中,快取記憶體可以包括多個快取組,每一個快取組包括:有效位元;N個髒位元;標籤;以及N個資料組,其分別與N個髒位元相對應,並且每一個資料組所包括資料塊尺寸的資料與主機的資料塊尺寸實質相同,其中,記憶體的資料塊尺寸是主機的資料塊尺寸的N倍,N為大於或等於2的整數。
Description
各種實施例關於包括快取記憶體的儲存系統。
近來,對諸如電阻式隨機存取記憶體(RRAM)、相變隨機存取記憶體(PCRAM)、磁性隨機存取記憶體(MRAM)和鐵電隨機存取記憶體(FRAM)此類的下一代記憶體的研究已經在積極進行。然而,下一代記憶體的操作速度比期望的低,它們的不良率比期望的高。下一代記憶體的耐久性也是一個問題。特別是,當下一代記憶體被多次存取時,它們的壽命會迅速縮短。因此,有必要提供一種用於協助下一代記憶體的操作速度並減少存取次數的快取記憶體。
此外,包括下一代記憶體的所有類型的記憶體可以與各種類型的主機一起操作,對於不同類型的主機,主機的塊尺寸(chunk size)可以是不同的。因此,當主機的資料塊尺寸與記憶體的資料塊尺寸不同時,有必要提供一種可用於主機和記憶體之間的通訊的快取記憶體以支持不同的塊尺寸。
本申請要求於2018年7月17日提交的申請號為10-2018-0082829的韓國專利申請的優先權,其全部內容藉由引用合併於此。
各種實施例關於快取記憶體結構,其可用於彼此具有不同的塊尺寸的主機和記憶體之間的通訊。
在一個實施例中,在用於主機和記憶體之間的通訊的快取記憶體中,所述快取記憶體可以包括多個快取組,每一個快取組包括:有效位元;N個髒位元(dirty bits);標籤;以及N個資料組,其分別與所述N個髒位元相對應,並且每一個資料組所包括資料塊尺寸的資料與所述主機的資料塊尺寸實質相同,其中,所述記憶體的資料塊尺寸是所述主機的資料塊尺寸的N倍,N是大於或等於2的整數。
在一個實施例中,在用於主機和記憶體之間的通訊的快取記憶體的逐出方法中,所述逐出方法包括:基於用於逐出多個快取組中的每一個快取組所需的時間來對所述多個快取組中的每一個快取組給出評分;以及逐出基於對所述多個快取組中的每一個給出的評分而從所述多個快取組之中確定的快取組,其中,所述主機的資料塊尺寸與所述記憶體的資料塊尺寸不同。
在一個實施例中,一種儲存系統可以包括:記憶體,其被配置為具有與主機的資料塊尺寸的N倍一樣大的資料塊尺寸,其中N是大於或等於2的整數;快取記憶體,其被配置為用於所述主機和所述記憶體之間的通訊並且包括多個快取組;命中/失效檢查電路,其被配置為檢查所述快取記憶體的命中或失效;逐出電路,其被配置為在需要對所述快取記憶體的逐出操作時在所述多個快取組之中決定要被逐出的快取組並對決
定的快取組逐出;以及操作控制電路,其被配置為控制所述記憶體的讀取操作和寫入操作,其中,所述多個快取組中的每一個包括:有效位元;N個髒位元;標籤;和N個資料組,其分別與所述N個髒位元相對應,並且每一個資料組所包括資料塊的資料與所述主機的資料塊尺寸實質相同。
在一個實施例中,一種儲存系統可以包括:主機,其適於對具有第一塊尺寸的資料進行介面操作(interfacing);記憶體,其適於對具有第二塊尺寸的資料進行介面操作,所述第二塊尺寸是所述第一塊尺寸的N倍,其中N為大於或等於2的整數;以及快取記憶體,其適於對所述主機和所述記憶體之間的資料進行介面操作,所述快取記憶體包括至少一個快取組,其中,所述至少一個快取組包括:用於儲存具有所述第二塊尺寸的資料的多個資料組,每一個資料組用於儲存具有所述第一塊尺寸的資料,以及髒位元的組,所述髒位元分別與所述多個資料組相對應,每一個髒位元的組指示對應的資料組的資料是否與所述記憶體的資料相同。
1:主機
100:儲存系統
110:記憶體控制器
111:快取記憶體
113:命中/失效檢查電路
115:逐出電路
117:控制電路
120:記憶體
401,403,405,407,409,411,413,415,417:步驟
501,503,505,507,509:步驟
610:逐出時間確定電路
620:存取歷史儲存電路
630:逐出決定電路
801,803,805,807:步驟
ADD:位址
ADD_HOST:位址
CACHE SET1,...CACHE SET255:快取組
CASE1,...CASE4:快取組
CMD:命令
D0,...D3:髒位元
DATA:資料
DATA0,...DATA3:資料組
DATA_HOST:資料
LRU:存取歷史
INDEX 0,...INDEX 63:索引
REQ:請求
SCORE:評分
TAG:標籤
V:有效位元
〔圖1〕係為根據一實施例的儲存系統的圖。
〔圖2〕係為示出根據一實施例的快取記憶體的圖。
〔圖3〕係為示出根據一實施例的快取組的圖。
〔圖4〕係為示出根據一實施例的儲存系統的讀取操作的流程圖。
〔圖5〕係為示出根據一實施例的儲存系統的寫入操作的流程圖。
〔圖6〕係為示出根據一實施例的逐出電路的圖。
〔圖7〕係為示出根據一實施例的逐出時間確定電路的操作方法的圖。
〔圖8〕係為示出根據一實施例的逐出電路的逐出操作的流程圖。
以下將參考附圖來更詳細地描述各種實施例。然而,本發明可以以不同的形式來實施,並且不應該被解釋為限於本文闡述的實施例。相反,提供這些實施例是為了使本案透徹和完整並向本領域中具有通常知識者充分地傳達本發明的範圍。本案全文中,在本發明的各附圖和實施例中,相同的元件符號代表相同的部件。此外,在整個說明書中,提及“一實施例”或類似措辭不一定關於僅僅一個實施例,並且對任何這樣的措辭的各種提及不一定關於相同的實施例。
在整個說明書中,當一個元件被稱為“連接到”或“耦接到”另一個元件時,它可以表示前一個元件直接連接或耦接到後一個元件、或者電連接或耦接到後一個元件而其間插入一個或多個其他元件。此外,當描述元件“包括”或“包含”組件時,這種開放式的過渡術語不排除一個或多個其他組件的存在或添加,而是可以還包括或包含這樣的其他組件,除非上下文另有說明。此外,在一些情況下,說明書中描述的單數形式的組件可以被實現為多個組件。
圖1是示出根據一實施例的儲存系統100的配置的圖。
參考圖1,儲存系統100可以包括記憶體控制器110和記憶體120。作為示例,圖1中示出了與儲存系統100一起操作的主機1。
主機1可以將請求REQ發送給記憶體控制器110,並請求對記憶體120的讀取操作和寫入操作。在請求讀取操作和寫入操作時,主機1可以將位
址ADD_HOST傳送至記憶體控制器110,位址ADD_HOST用於指定要在此執行讀取操作和寫入操作的區域。在請求寫入操作時,主機1可以將寫入資料DATA_HOST傳送至記憶體控制器110。此外,在請求讀取操作之後,主機1可以從記憶體控制器110接收讀取資料DATA_HOST。為了辨別在記憶體控制器110和記憶體120之間傳送的位址ADD和資料DATA,使用了HOST。換句話說,位址ADD_HOST和資料DATA_HOST分別指示在主機1和記憶體控制器110之間傳送的位址和資料。在本實施例中,在主機1和記憶體控制器110之間傳送的位址ADD_HOST是20位元。此外,主機1的資料塊尺寸(即在主機1的讀取和寫入請求中每次(at a time)處理的資料DATA_HOST的尺寸)是64位元。然而,本發明不限於這些位元配置。
記憶體120可以在記憶體控制器110的控制下執行讀取操作和寫入操作。記憶體120可以從記憶體控制器110接收命令CMD和位址ADD。此外,記憶體120可以將資料DATA發送至記憶體控制器110,以及從記憶體控制器110接收資料DATA。可以使用命令CMD以便指示要由記憶體120執行的操作。位址ADD可以用於指定記憶體120的要被存取的區域。此外,在寫入操作中,資料DATA可以從記憶體控制器110傳送至記憶體120。在讀取操作中,資料DATA可以從記憶體120傳送至記憶體控制器110。記憶體120的資料塊尺寸可以是主機1的資料塊尺寸的N倍(其中N是大於或等於2的整數)。在本實施例中,N為4,即,在讀取操作和寫入操作中每次處理的資料DATA的尺寸是256位元。由於記憶體120的資料塊尺寸是主機1的資料塊尺寸的四倍,因此要被尋址的區域的數量可以減少到1/4。因此,記憶體120中使用的位址ADD的位元的數量可以比主機1的位址ADD_HOST的位元的數量少2位元。也就是說,記憶體
120中使用的位址ADD的位元的數量可以是18位元。然而,本發明不限於這種配置。
記憶體120可以是諸如動態隨機存取記憶體(DRAM)、NAND閃存、電阻式隨機存取記憶體(RRAM)、相變隨機存取記憶體(PCRAM)、磁性隨機存取記憶體(MRAM)和鐵電隨機存取記憶體(FRAM)此類的各種類型的記憶體中的任何類型。
記憶體控制器110可以根據主機1的請求來控制記憶體120。記憶體控制器110可以包括快取記憶體(cache memory)111、命中和失效(命中/失效)檢查電路113、逐出(eviction)電路115和控制電路117。
快取記憶體111可以用作主機1和記憶體120之間的通訊中的快取(cache)。快取記憶體111可以以比記憶體120的速度快的速度來操作,並且可以具有比記憶體120的儲存容量小的儲存容量。由於主機1的資料塊尺寸(例如,64位元)和記憶體120的資料塊尺寸(例如,256位元)不同,因此快取記憶體111具有用於支持該差異的結構。這將參考圖2和圖3來詳細描述。
當主機1請求讀取操作請求和寫入操作請求時,命中/失效檢查電路113可以檢查快取記憶體111的命中(hit)或失效(miss)。在快取命中的情況下,由於不對記憶體120進行存取而對以高速操作的快取記憶體111進行存取,因此主機1的讀取操作請求和寫入操作請求可以被快速地處理。在快取失效的情況下,由於應當對記憶體120進行存取,因此與快取命中相比,主機1的讀取操作請求和寫入操作請求可能被緩慢地處理。
當快取記憶體111中沒有可用的快取組以及需要快取記憶體111的逐出操作時,逐出電路115可以決定要被逐出的快取組並對這樣的快取組進行逐出。
控制電路117可以控制記憶體120的讀取操作和寫入操作。
圖2是示出根據一實施例的快取記憶體(例如,圖1的快取記憶體111)的示例性配置的圖。
參考圖2,快取記憶體111可以包括多個快取組:CACHE SET0至CACHE SET255。在本實施例中,快取組的數量是256,其可以被劃分到索引0至索引63中。例如,四個快取組CACHE SET4至CACHE SET7可以與索引1(INDEX 1)相對應。
可以藉由位址ADD_HOST的一些位元來對快取組CACHE SET0至CACHE SET255進行尋址。在位址ADD_HOST的20位元中,6位元可以被劃分成索引。可以對具有與被劃分到該索引中的位址相對應的索引值的快取組進行存取。例如,當位址ADD_HOST的索引的值是62時,對應於索引62(INDEX 62)的四個快取組CACHE SET248至CACHE SET251可以被存取。
如上所述,其中共用一個索引值的快取組的數量為4的快取記憶體的結構被稱為4路組關聯結構(4-way set-associative structure)。在這種情況下,當索引被移除時,可以得到全關聯結構(fully-associative structure)。儘管快取記憶體111具有全關聯結構,但是下面將描述的各種實施例可以應用於這樣的結構。
圖3是示出根據一實施例的快取組CACHE SET的示例性配置的圖。圖2所示的快取組CACHE SET0至CACHE SET255中的每一個可以如圖3所示來配置。
參考圖3,快取組CACHE SET可以包括有效位元V、N個髒位元D0至D3、標籤TAG和N個資料組DATA0至DATA3。
有效位元V可以指示資料是否已經被從記憶體120更新到對應的快取組。當有效位元V被啟動(activate)到邏輯高位準(例如,“1”)時,其可以指示資料已經被從記憶體120更新到對應的快取組。當有效位元V被去啟動(deactivate)到邏輯低位準(例如,“0”)時,其可以指示資料尚未被從記憶體120更新到對應的快取組。
N個髒位元D0至D3可以分別指示N個資料組DATA0至DATA3是否是髒的。在本實施例中N為4,髒位元的數量可以為4,資料組的數量可以為4。當髒位元D0為“1”時,其可以指示資料組DATA0是髒的,也就是說,資料組DATA0與儲存在記憶體120中的資料彼此不一致。此外,當髒位元D0為“0”時,其可以指示資料組DATA0與儲存在記憶體120中的資料彼此一致。類似地,髒位元D1至D3可以分別指示資料組DATA1至DATA3是否是髒的。
標籤TAG可以是以下訊息,該訊息對應於藉由從20位元的位址ADD_HOST中除去索引(即,6位元)而得到的14位元中的12位元。當位址ADD_HOST與對應的快取組的標籤TAG和索引一致時,其可以為快取命中,否則,其可以為快取失效。例如,在20位元的位址ADD_HOST的索引值為“1”並且因此對快取組CACHE SET4至CACHE SET7進行存取的情況下,當在快取組
CACHE SET4至CACHE SET7之中存在其中標籤TAG的值與位址ADD_HOST的對應於標籤TAG的12位元一致的快取組時,其可以為快取命中。
N個資料組DATA0至DATA3中的每一個,即四個資料組DATA0至DATA3中的每一個可以包括64位元資料。四個資料組DATA0至DATA3之中要被存取的資料組可以由與位址ADD_HOST的偏移OFFSET相對應的2位元來決定。由於記憶體120的資料塊尺寸是256位元,所以當資料被從記憶體120更新到快取組時,四個資料組DATA0至DATA3的資料可以同時被更新。
下面的表1指示了主機的標籤TAG、索引INDEX、偏移OFFSET和位址ADD_HOST與記憶體120的位址ADD之間的對應關係。表1清楚地示出了它們之間的對應關係。
圖4是示出圖1的儲存系統100的讀取操作的示例的流程圖。
參考圖4,當記憶體控制器110從主機1接收到針對讀取操作的請求REQ和位址ADD_HOST時(步驟401),可以開始讀取操作。
接下來,可以藉由命中/失效檢查電路113來檢查快取記憶體111的命中或失效(步驟403)。命中/失效檢查電路113藉由使用位址ADD_HOST的與索引INDEX相對應的6位元來對快取記憶體111的四個快取組進行存取。此
外,命中/失效檢查電路113檢查在被存取的四個快取組之中是否存在儲存了以下標籤TAG的快取組:該標籤TAG具有與位址ADD_HOST的對應於標籤的12位元實質上相同的值。
在快取命中的情況下(步驟403處為“是”),命中/失效檢查電路113可以檢查在命中的快取組中是否存在主機1所請求的讀取資料(步驟405)。當命中的快取組的有效位元(V)為邏輯高位準“1”時,由於其指示資料已經被從記憶體120讀取到命中的快取組,因此可以確定在命中的快取組中存在主機1所請求的資料。當命中的快取組的有效位元(V)為邏輯低位準“0”時,如果髒位元D0至D3之中的與位址ADD_HOST的偏移OFFSET相對應的髒位元為“1”,則可以確定存在主機1所請求的讀取資料。此外,如果髒位元D0至D3之中的與位址ADD_HOST的偏移OFFSET相對應的髒位元為“0”,則可以確定不存在主機1所請求的讀取資料。
當經確定在命中的快取組中存在主機1所請求的讀取資料時(步驟405處為“是”),命中的快取組的資料組DATA0至DATA3之中的與主機1所請求的讀取資料相對應的資料組的資料可以被直接提供給主機(步驟407)。在這種情況下,由於沒有對記憶體120進行存取而從快取記憶體111直接將讀取資料DATA_HOST提供給主機1,因此主機1所請求的讀取操作可以得到快速地處理。
當經確定在命中的快取組中不存在主機1所請求的讀取資料時(步驟405處為否),控制電路117可以從記憶體120讀取資料DATA並且對命中的快取組進行更新(步驟409)。控制電路117可以將讀取命令CMD和位址ADD傳送至記憶體120並從記憶體120讀取資料DATA。在這種情況下,位址
ADD可以藉由基於以上的表1來對位址ADD_HOST進行轉換而得到。當將資料從記憶體120更新到命中的快取組時,可以將資料更新在髒位元為“0”的資料組中,而不可以將資料更新在髒位元為“1”的資料組中。這是因為髒位元為“1”的資料組的資料比從記憶體120讀取的資料要新。例如,當髒位元D0至D3為(1,1,0,0)時,從記憶體120讀取的256位元資料中只有與資料組DATA2和DATA3相對應的128位元資料可以被更新到資料組DATA2和DATA3。
然後,可以將從記憶體120讀取的256位元資料之中的主機1所請求的64位元資料DATA_HOST傳送至主機1(步驟411)。
在快取失效的情況下(步驟403處為否),可以佔用新的快取組(步驟413)。新佔用的快取組可以是與位址ADD_HOST的索引INDEX相對應的四個快取組中的一個。當在四個快取組中不存在空的快取組(即其中有效位元V和髒位元D0至D3全部為“0”的快取組)時,用於逐出四個快取組中的一個的逐出操作可以被執行,並且藉由逐出操作而變為空的快取組可以被新佔用。
然後,控制電路117可以從記憶體讀取資料並對新佔用的快取組進行更新(步驟415)。控制電路117可以將讀取命令CMD和位址ADD傳送至記憶體120並從記憶體120讀取資料DATA。在這種情況下,位址ADD可以基於上面的表1來對位址ADD_HOST進行轉換而得到。由於新佔用的快取組處於空的狀態,因此從記憶體120讀取的256位元資料可以被更新到資料組DATA0至DATA3。
然後,可以將從記憶體120讀取的256位元資料之中的主機1所請求的64位元資料DATA_HOST傳送至主機1(步驟417)。
圖5是示出圖1的儲存系統100的寫入操作的示例的流程圖。
參考圖5,當記憶體控制器110從主機1接收到針對寫入操作的請求REQ、位址ADD_HOST和資料DATA_HOST時(步驟501),可以開始寫入操作。
接下來,可以藉由命中/失效檢查電路113來檢查快取記憶體111的命中或失效(步驟503)。命中/失效檢查電路113藉由使用位址ADD_HOST的與索引INDEX相對應的6位元來對快取記憶體111的四個快取組進行存取。此外,命中/失效檢查電路113檢查在被存取的四個快取組之中是否存在儲存了以下標籤TAG的快取組:該標籤TAG具有與位址ADD_HOST的對應於標籤的12位元實質上相同的值。
在快取命中的情況下(步驟503處為是),可以將64位元資料DATA_HOST寫入命中的快取組的與位址ADD_HOST的偏移位元相對應的資料組中(步驟505)。因此,在命中的快取組中,與其中已被寫入資料DATA_HOST的偏移相對應的髒位元可以被啟動到邏輯高位準“1”。在這種情況下,從主機1傳送的資料DATA_HOST被寫入命中的快取組並且寫入操作結束,從而主機1所請求的寫入操作可以得到快速地處理。
在快取失效的情況下(步驟503處為否),可以佔用新的快取組(步驟507)。新佔用的快取組可以是與位址ADD_HOST的索引INDEX相對應的四個快取組中的一個。當在四個快取組中不存在空的快取組(即其中有效位元V和髒位元D0至D3全部為“0”的快取組)時,用於逐出四個快取組中的一個的逐出操作可以被執行。進一步,藉由逐出操作而變為空的快取組可以被新佔用。
然後,可以將64位元資料DATA_HOST寫入新佔用的快取組的與位址ADD_HOST的偏移位元相對應的資料組中(步驟509)。因此,在新佔用的快取組中,與其中已被寫入資料DATA_HOST的偏移相對應的髒位元可以被啟動到“1”。
圖6是示出圖1的逐出電路115的示例性配置的圖。
參考圖6,逐出電路115可以包括逐出時間確定電路610、存取歷史儲存電路620和逐出決定電路630。
逐出時間確定電路610可以基於對快取記憶體111的每一個快取組進行逐出所需的時間來給出評分。例如,對需要很多時間來逐出的快取組可以給出低分,對需要較少時間來逐出的快取組可以給出高分。逐出時間確定電路610可以藉由使用每一個快取組的有效位元V和髒位元D0至D3來對每一個快取組給出評分,這將參考圖7來詳細描述。
存取歷史儲存電路620可以儲存快取記憶體111的快取組的存取歷史。即,存取歷史儲存電路620可以以最近被存取的順序來儲存快取記憶體111的快取組。
逐出決定電路630可以考慮或基於由逐出時間確定電路610決定的評分SCORE和儲存在存取歷史儲存電路620中的存取歷史LRU來決定在快取記憶體111的快取組之中要被逐出的快取組。例如,逐出決定電路630可以逐出快取組之中具有最高分的快取組。當存在多個具有最高分的快取組時,逐出決定電路630可以逐出多個快取組之中具有最老的最近被存取時間的快取組。也就是說,在決定要被逐出的快取組時,逐出決定電路630可以主要考慮由逐出
時間確定電路610決定的評分,並且可以在具有實質上相同的評分的快取組之中使用最近最少使用(Least Recently Used,LRU)規則。
在各種實施例中,逐出決定電路630對具有由逐出時間確定電路610決定的較高分的快取組進行逐出。因此,由於降低了逐出操作所需的時間,所以可以防止儲存系統100的性能實質上降低。
在圖6的示例中,逐出決定電路630考慮LRU規則以及由逐出時間確定電路610決定的評分。在其他示例中,可以省略存取歷史儲存電路620,並且逐出決定電路630可以僅考慮由逐出時間確定電路610所決定的評分。
圖7是示出根據一實施例的逐出時間確定電路的操作方法的圖。例如,逐出時間確定電路610對快取組給出評分。
在圖7中,根據有效位元V的值和髒位元D0至D3的值,快取組被劃分為CASE1至CASE4四種情況。
在CASE1中,在對應的快取組中,有效位元V為邏輯高位準“1”並且髒位元D0至D3均為邏輯低位準“0”。在這種情況下,由於其指示儲存在該對應的快取組中的資料組DATA0至DATA3與記憶體120的資料彼此完全一致,因此逐出該對應的快取組不需要讀取操作和寫入操作兩者。然而,可以藉由僅將有效位元V改變為“0”來完成該對應的快取組的逐出操作。逐出時間確定電路610可以對CASE1的快取組給出高分(例如,2分)。
在CASE2中,在對應的快取組中,有效位元V為“1”並且髒位元D0至D3中的一個或多個(但不是全部)為“1”。例如,髒位元D0和D2為“1”,而髒位元D1和D3為“0”。在這種情況下,其可以指示:資料組DATA0和DATA2(其與值為“1”的髒位元D0和D2相對應)的資料與記憶體120的資料不一致,而
資料組DATA1和DATA3(其與值為“0”的髒位元D1和D3相對應)的資料與記憶體120的資料一致。在這種情況下,為了逐出該對應的快取組,需要用於將所有的資料組DATA0至DATA3寫入記憶體120的操作。由於記憶體120的資料塊尺寸是256位元,因此不可以僅將資料組DATA0和DATA2寫入記憶體120,應當將資料組DATA0至DATA3同時寫入記憶體120。逐出時間確定電路610可以對CASE2的快取組給出中間分(例如,1分)。在逐出操作完成之後,該對應的快取組的有效位元V和髒位元D0至D3全部可以被改變為“0”。
在CASE3中,在對應的快取組中,有效位元V為“0”並且髒位元D0至D3全部為“1”。在這種情況下,由於資料組DATA0至DATA3的所有資料都是髒的,所以資料組DATA0至DATA3的所有資料都應當被寫入記憶體120。也就是說,為了逐出該對應的快取組,需要用於將所有的資料組DATA0至DATA3寫入記憶體120的操作。逐出時間確定電路610可以對CASE3的快取組給出中間分(例如,1分)。在逐出操作完成之後,該對應的快取組的有效位元V和髒位元D0至D3全部可以被改變為“0”。
在CASE4中,在對應的快取組中,有效位元V為“0”並且髒位元D0至D3中的一個為“1”。例如,髒位元D2為“1”,而髒位元D0、D1和D3為“0”。在這種情況下,與值為“1”的髒位元D2相對應的資料組DATA2應當被更新到記憶體120。然而,識別該對應的快取組中的資料組DATA0、DATA1和DATA3(其與值為“0”的髒位元D0、D1和D3相對應)的值是不可能的。因此,在這種情況下,必須執行用於從記憶體120讀取資料、識別資料組DATA0、DATA1和DATA3的正確值、然後將資料組DATA0、DATA1、DATA2和DATA3寫入記憶體120的操作。即,將該對應的快取組逐出需要讀取操作和寫
入操作。逐出時間確定電路610可以對CASE4的快取組給出低分(例如,0分)。在逐出操作完成之後,可以將該對應的快取組的有效位元V和髒位元D0至D3全部改變為“0”。
結果,逐出時間確定電路610可以對其中因為逐出不需要讀取操作和寫入操作而幾乎不需要時間的快取組(CASE1)給出高分(例如,2分)。此外,逐出時間確定電路610可以對其中因為逐出需要寫入操作而需要一定量的時間的快取組(CASE2和CASE3)給出中間分(例如,1分)。此外,逐出時間確定電路610可以對其中因為逐出需要讀取操作和寫入操作而需要很多時間的快取組(CASE4)給出低分(例如,0分)。
圖8是示出逐出電路115的逐出操作的示例的流程圖。
當在如圖4所示的在讀取操作中佔用新的快取組的步驟(413)中以及在如圖5所示的在寫入操作中佔用新的快取組的步驟(507)中沒有空的快取組時,可以執行逐出電路115的逐出操作。
參考圖8,逐出電路115的逐出時間確定電路610可以基於快取組的逐出所需的時間來對快取組給出評分(步驟801)。如上所述,逐出時間確定電路610可以對其中逐出不需要讀取操作和寫入操作的快取組給出高分。而且,逐出時間確定電路610可以對其中逐出需要寫入操作的快取組給出中間分。此外,逐出時間確定電路610可以對其中逐出需要讀取操作和寫入操作的快取組給出低分。
接下來,逐出電路115的存取歷史儲存電路620可以儲存快取組的存取歷史(步驟803)。也就是說,存取歷史儲存電路620可以以最近被存取的順序來儲存快取組。
然後,逐出決定電路630可以基於評分SCORE和存取歷史LRU來決定快取組之中要被逐出的快取組(步驟805)。逐出決定電路630可以對具有高分的快取組逐出。當存在多個具有高分的快取組時,逐出決定電路630可以考慮存取歷史。
然後,逐出決定電路630可以逐出被決定為要被逐出的快取組(步驟807)。可以藉由將有效位元V和髒位元D0至D3簡單地改變為“0”(圖7的CASE1)來執行逐出。可以藉由在控制電路117的控制下執行了記憶體120的寫入操作之後將有效位元V和髒位元D0至D3改變為“0”來執行逐出(圖7的CASE2和CASE3)。可以藉由在控制電路117的控制下執行了記憶體120的讀取操作和寫入操作之後將有效位元V和髒位元D0至D3改變為“0”來執行逐出(圖7的CASE4)。
儘管已經說明和描述了各種實施例,但是根據本案對於本領域技術人員來說明顯的是,在不脫離如以下申請專利範圍請求項中界定的本發明的精神和範圍的情況下,可以進行各種改變和修改。
1:主機
100:儲存系統
110:記憶體控制器
111:快取記憶體
113:命中/失效檢查電路
115:逐出電路
117:控制電路
120:記憶體
ADD:位址
ADD_HOST:位址
CMD:命令
DATA:資料
DATA_HOST:資料
REQ:請求
Claims (15)
- 一種快取記憶體,所述快取記憶體用於主機和記憶體之間的通訊,包括:多個快取組,每一個快取組包括:N個資料組,每一個資料組包括資料塊尺寸的資料,該資料的資料塊尺寸與所述主機的資料塊尺寸相同;一個有效位元,其中當資料已被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被啟動;以及當資料未被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被去啟動;N個髒位元,所述N個髒位元分別與所述N個資料組相對應;以及標籤,其中,所述記憶體的資料塊尺寸是所述主機的資料塊尺寸的N倍,N是大於或等於2的整數。
- 如請求項1所述之快取記憶體,其中,所述N個髒位元分別指示所述N個資料組的資料是否與所述記憶體的資料相同。
- 如請求項1所述之快取記憶體,其中,所述多個快取組藉由所述主機的位址的一些位元來被尋址,以及所述標籤對應於所述主機的所述位址的其他位元。
- 一種快取記憶體之逐出方法,所述快取記憶體用於主機和記憶體之間的通訊,所述逐出方法包括: 基於用於逐出多個快取組中的每一個快取組所需的時間來對所述多個快取組中的每一個快取組給出評分;以及逐出基於對所述多個快取組中的每一個快取組給出的評分而從所述多個快取組之中確定的快取組,其中,所述主機的資料塊尺寸與所述記憶體的資料塊尺寸不同,其中,所述多個快取組藉由所述主機的位址的一些位元來被尋址,以及其中,所述多個快取組的每一個包括:N個資料組,每一個資料組包括資料塊尺寸的資料,該資料的資料塊尺寸與所述主機的資料塊尺寸相同;一個有效位元,其中當資料已被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被啟動;以及當資料未被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被去啟動;N個髒位元,所述N個髒位元分別與所述N個資料組相對應;以及標籤,其中,所述記憶體的資料塊尺寸是所述主機的資料塊尺寸的N倍,N是大於或等於2的整數。
- 如請求項4所述之逐出方法,其中,給出所述評分的步驟包括:對所述多個快取組中的被逐出時不需要讀取操作和寫入操作的快取組給出高分, 對所述多個快取組中的被逐出時需要寫入操作而不需要讀取操作的快取組給出中間分,以及對所述多個快取組中的被逐出時需要讀取操作和寫入操作的快取組給出低分。
- 如請求項4所述之逐出方法,其中,逐出快取組的步驟包括:基於對所述多個快取組中的每一個快取組給出的評分和最近最少使用規則來確定要被逐出的快取組。
- 如請求項4所述之逐出方法,其中,逐出快取組的步驟包括:確定其中所述有效位元被啟動並且所述N個髒位元被去啟動的快取組針對逐出操作不需要讀取操作和寫入操作;確定其中所述有效位元被啟動並且所述N個髒位元中存在被啟動的髒位元的快取組針對逐出操作需要寫入操作但不需要讀取操作;確定其中所述有效位元被去啟動並且所述N個髒位元全部被啟動的快取組針對逐出操作需要寫入操作但不需要讀取操作;及確定其中所述有效位元被去啟動並且所述N個髒位元中的一些被啟動的快取組針對逐出操作需要讀取操作和寫入操作。
- 一種儲存系統,包括:記憶體,其被配置為具有與主機的資料塊尺寸的N倍一樣大的資料塊尺寸,其中N是大於或等於2的整數;快取記憶體,其被配置為用於所述主機和所述記憶體之間的通訊並且包括多個快取組;命中/失效檢查電路,其被配置為檢查所述快取記憶體的命中或失效; 逐出電路,其被配置為:在需要對所述快取記憶體的逐出操作時,在所述多個快取組之中決定要被逐出的快取組,並對決定的快取組逐出;以及操作控制電路,其被配置為控制所述記憶體的讀取操作和寫入操作,其中,所述多個快取組中的每一個快取組包括:N個資料組,每一個資料組包括資料塊尺寸的資料,該資料的資料塊尺寸與所述主機的資料塊尺寸相同;一個有效位元,其中當資料已被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被啟動;以及當資料未被從所述記憶體更新到所述N個資料組中的任何一個時,所述有效位元被去啟動;N個髒位元,所述N個髒位元分別與所述N個資料組相對應;以及標籤。
- 如請求項8所述之儲存系統,其中,所述N個髒位元分別指示所述N個資料組的資料是否與所述記憶體的資料相同。
- 如請求項8所述之儲存系統,其中,所述逐出電路包括:逐出時間確定電路,其被配置為基於用於逐出所述多個快取組中的每一個快取組所需的時間來對所述多個快取組中的每一個快取組給出評分;及逐出決定電路,其被配置為基於所述評分來在所述多個快取組之中決定要被逐出的快取組。
- 如請求項10所述之儲存系統,其中,所述逐出電路還包括: 存取歷史儲存電路,其被配置為儲存所述多個快取組的存取歷史,其中,所述逐出決定電路在決定要被逐出的快取組時還考慮所述存取歷史。
- 如請求項10所述之儲存系統,其中,所述逐出時間確定電路對所述多個快取組中的被逐出時不需要讀取操作和寫入操作的快取組給出高分,對所述多個快取組中的被逐出時需要寫入操作但不需要讀取操作的快取組給出中間分,以及對所述多個快取組中的被逐出時需要讀取操作和寫入操作的快取組給出低分。
- 如請求項12所述之儲存系統,其中,所述逐出時間確定電路確定其中所述有效位元被啟動並且所述N個髒位元被去啟動的快取組針對逐出操作不需要讀取操作和寫入操作,確定其中所述有效位元被啟動並且在所述N個髒位元中存在被啟動的髒位元的快取組針對逐出操作需要寫入操作但不需要讀取操作,確定其中所述有效位元被去啟動並且所述N個髒位元全部被啟動的快取組針對逐出操作需要寫入操作但不需要讀取操作,以及確定其中所述有效位元被去啟動並且所述N個髒位元中的一些被啟動的快取組針對逐出操作需要讀取操作和寫入操作。
- 如請求項8所述之儲存系統,其中,所述快取記憶體、所述命中/失效檢查電路、所述逐出電路和所述操作控制電路被包括在所述儲存系統的記憶體控制器中。
- 如請求項8所述之儲存系統,其中,所述多個快取組藉由所述主機的位址的一些位元來被尋址,並且所述標籤對應於所述主機的所述位址的其他位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180082829A KR20200008759A (ko) | 2018-07-17 | 2018-07-17 | 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 |
KR10-2018-0082829 | 2018-07-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202006550A TW202006550A (zh) | 2020-02-01 |
TWI797354B true TWI797354B (zh) | 2023-04-01 |
Family
ID=69161316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108124280A TWI797354B (zh) | 2018-07-17 | 2019-07-10 | 快取記憶體、儲存系統和快取記憶體的逐出方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11221965B2 (zh) |
KR (1) | KR20200008759A (zh) |
CN (1) | CN110727610B (zh) |
TW (1) | TWI797354B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11086791B2 (en) | 2019-08-29 | 2021-08-10 | Micron Technology, Inc. | Methods for supporting mismatched transaction granularities |
KR20220030440A (ko) | 2020-08-31 | 2022-03-11 | 삼성전자주식회사 | 전자 장치, 시스템-온-칩, 및 그것의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200419343A (en) * | 2003-03-18 | 2004-10-01 | Faraday Tech Corp | Cache controller unit architecture and applied method |
US20150052310A1 (en) * | 2013-08-16 | 2015-02-19 | SK Hynix Inc. | Cache device and control method thereof |
US20150169458A1 (en) * | 2013-12-13 | 2015-06-18 | Lsi Corporation | System and methods for caching a small size i/o to improve caching device endurance |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684977A (en) * | 1995-03-31 | 1997-11-04 | Sun Microsystems, Inc. | Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system |
FR2778254B1 (fr) * | 1998-04-29 | 2002-02-15 | Texas Instruments France | Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache |
JP3985889B2 (ja) * | 2001-08-08 | 2007-10-03 | 株式会社ルネサステクノロジ | 半導体装置 |
US6857048B2 (en) * | 2002-01-17 | 2005-02-15 | Intel Corporation | Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter |
US7010649B2 (en) * | 2003-10-14 | 2006-03-07 | International Business Machines Corporation | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache |
CN100429633C (zh) * | 2004-04-27 | 2008-10-29 | 皇家飞利浦电子股份有限公司 | 一种处理来自磁盘的数据的方法以及使用该方法的装置 |
US20080010413A1 (en) * | 2006-07-07 | 2008-01-10 | Krishnan Kunjunny Kailas | Method and apparatus for application-specific dynamic cache placement |
US7536512B2 (en) * | 2006-09-14 | 2009-05-19 | International Business Machines Corporation | Method and apparatus for space efficient identification of candidate objects for eviction from a large cache |
JP2011095852A (ja) * | 2009-10-27 | 2011-05-12 | Toshiba Corp | キャッシュメモリ制御回路 |
US8504774B2 (en) * | 2010-10-13 | 2013-08-06 | Microsoft Corporation | Dynamic cache configuration using separate read and write caches |
KR101791508B1 (ko) | 2011-07-28 | 2017-10-31 | 삼성전자 주식회사 | 비휘발성 메모리 장치 |
CN102662868B (zh) * | 2012-05-02 | 2015-08-19 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US9336156B2 (en) | 2013-03-14 | 2016-05-10 | Intel Corporation | Method and apparatus for cache line state update in sectored cache with line state tracker |
KR20170075359A (ko) * | 2015-12-23 | 2017-07-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 콘트롤러의 동작 방법 |
US10013362B2 (en) * | 2016-05-13 | 2018-07-03 | Verizon Digital Media Services Inc. | Deterministic multifactor cache replacement |
US10467195B2 (en) * | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
US10762000B2 (en) * | 2017-04-10 | 2020-09-01 | Samsung Electronics Co., Ltd. | Techniques to reduce read-modify-write overhead in hybrid DRAM/NAND memory |
-
2018
- 2018-07-17 KR KR1020180082829A patent/KR20200008759A/ko active IP Right Grant
-
2019
- 2019-02-27 US US16/287,778 patent/US11221965B2/en active Active
- 2019-07-03 CN CN201910594058.6A patent/CN110727610B/zh active Active
- 2019-07-10 TW TW108124280A patent/TWI797354B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200419343A (en) * | 2003-03-18 | 2004-10-01 | Faraday Tech Corp | Cache controller unit architecture and applied method |
US20150052310A1 (en) * | 2013-08-16 | 2015-02-19 | SK Hynix Inc. | Cache device and control method thereof |
US20150169458A1 (en) * | 2013-12-13 | 2015-06-18 | Lsi Corporation | System and methods for caching a small size i/o to improve caching device endurance |
Also Published As
Publication number | Publication date |
---|---|
KR20200008759A (ko) | 2020-01-29 |
CN110727610A (zh) | 2020-01-24 |
TW202006550A (zh) | 2020-02-01 |
US11221965B2 (en) | 2022-01-11 |
CN110727610B (zh) | 2023-10-20 |
US20200026664A1 (en) | 2020-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102421311B1 (ko) | 태그 매칭 명령에 응답하는 저장회로 | |
US20170235681A1 (en) | Memory system and control method of the same | |
JP6505132B2 (ja) | メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法 | |
US20110231598A1 (en) | Memory system and controller | |
US20070073974A1 (en) | Eviction algorithm for inclusive lower level cache based upon state of higher level cache | |
US10120750B2 (en) | Cache memory, error correction circuitry, and processor system | |
JP2017516234A (ja) | 次の読取りアドレスプリフェッチングによるメモリ容量圧縮および/またはメモリ帯域幅圧縮を利用するメモリコントローラ、ならびに関連するプロセッサベースシステムおよび方法 | |
KR102453192B1 (ko) | 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체 | |
US20070168617A1 (en) | Patrol snooping for higher level cache eviction candidate identification | |
US20140047175A1 (en) | Implementing efficient cache tag lookup in very large cache systems | |
US11836089B2 (en) | Cache memory, memory system including the same and operating method thereof | |
TWI797354B (zh) | 快取記憶體、儲存系統和快取記憶體的逐出方法 | |
US20200012601A1 (en) | Memory system and operating method thereof | |
US8924652B2 (en) | Simultaneous eviction and cleaning operations in a cache | |
US9846647B2 (en) | Cache device and control method threreof | |
US11593276B2 (en) | Data caching methods of cache systems | |
US20160378671A1 (en) | Cache memory system and processor system | |
JP2023178769A (ja) | 演算処理装置および演算処理方法 | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
US10936493B2 (en) | Volatile memory cache line directory tags | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 |