TWI805878B - 儲存系統的快取系統及其資料快取方法 - Google Patents
儲存系統的快取系統及其資料快取方法 Download PDFInfo
- Publication number
- TWI805878B TWI805878B TW108144696A TW108144696A TWI805878B TW I805878 B TWI805878 B TW I805878B TW 108144696 A TW108144696 A TW 108144696A TW 108144696 A TW108144696 A TW 108144696A TW I805878 B TWI805878 B TW I805878B
- Authority
- TW
- Taiwan
- Prior art keywords
- dirty
- cache
- data
- nodes
- node
- 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
- G06F12/124—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
-
- 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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
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
本申請提供一種儲存系統的快取系統及其資料快取方法。一種快取系統,包括:具有多個塊的快取記憶體;髒線列表,其儲存在該等塊中的髒線之中的預定數量的髒線的狀態資訊;以及快取控制器,其控制該快取記憶體的資料快取操作,並且根據該資料快取操作而向該髒線列表提供髒線的狀態和狀態變化。快取控制器執行控制操作,以始終將最近最少使用的(LRU)髒線的狀態資訊儲存到髒線列表的預定儲存位置中。
Description
本申請要求於2019年5月3日提交的申請號為10-2019-0052599的韓國專利申請的優先權,其全部內容透過引用合併於此。
所公開技術的各種實施例總體而言涉及儲存系統,更具體地,涉及儲存系統的快取系統以及在快取系統中快取資料的方法。
在儲存系統中,與諸如中央處理單元(CPU)的主機相比,記憶體通常以相對較低的速度運行。因此,包括快取記憶體的快取系統已被廣泛應用於大多數儲存系統中,以解決由於主機與記憶體之間的速度差異而引起的問題。在儲存系統中包括的快取系統可以設置在主機與記憶體之間,也可以設置在主機控制器中,或者也可以設置在記憶體控制器中。
根據一個實施方式,一種快取系統包括:快取記憶體,其被配置為具有多個塊;髒線列表,其被配置為儲存在該等塊中的髒線之中的預定數量的髒線的狀態資訊;以及快取控制器,其被配置為控制該快取記憶體的資料快取操作,並且被配置為根據該資料快取操作而向該髒線列表提供該髒線的狀
態和狀態變化。快取控制器執行控制操作,以始終將最近最少使用的(LRU)髒線的狀態資訊儲存到髒線列表的預定儲存位置中。
根據另一個實施方式,提供了一種快取系統的資料快取方法。該快取系統包括:具有多個塊的快取記憶體;具有多個節點的髒線列表,該等節點儲存在該等塊中的髒線之中的預定數量的髒線的狀態資訊;以及快取控制器,其控制快取記憶體的資料快取操作以及髒線列表的節點的狀態資訊的儲存狀態。該方法包括:將關於快取記憶體中的髒線之中的最近最少使用的(LRU)髒線的資訊儲存到髒線列表的節點之中的最低次序節點中,並在由於資料快取操作之後的髒線數量而發生溢出時,將具有儲存在該髒線列表的節點之中的最低次序節點中的狀態資訊的髒線強制逐出,其中,該溢出涉及髒線的增加後的數量超過髒線列表中的節點的數量。
100:快取系統
110:快取記憶體
115:區塊
120:快取控制器
130:髒線列表
131-1、131-2、131-3:節點
131-62、131-63、131-64:節點
155:區域
156:區域
210~280:步驟
310~390:步驟
參照附圖透過各種實施方式說明所公開技術的某些特徵,其中:圖1是示出根據本發明的一個實施方式的儲存系統的快取系統的示例的框圖;圖2是示出根據本發明的一個實施方式的在儲存系統中包括的快取系統的快取記憶體的配置的示意圖;圖3是示出根據本發明的一個實施方式的在儲存系統中包括的快取系統的髒線列表的配置的示意圖;圖4是示出根據本發明的一個實施方式的、當在儲存系統中包括的快取系統存在“寫入命中”時的資料快取操作的示意圖;
圖5是示出根據本發明的一個實施方式的、當在儲存系統中包括的快取系統存在“寫入未命中”時的資料快取操作的示意圖;圖6是示出根據本發明的一個實施方式的在儲存系統中包括的快取系統的資料快取操作的流程圖;圖7是示出根據本發明的一個實施方式的在快取系統中的髒線列表的操作的流程圖;圖8至圖10示出根據本發明的一個實施方式的、在快取系統中存在“寫入命中”,髒線的數量增加並且沒有發生溢出時,對髒線列表進行控制的處理;圖11至圖13示出根據本發明的一個實施方式的、在快取系統中存在“寫入命中”,髒線的數量增加並且發生溢出時,對髒線列表進行控制的處理;圖14至圖16示出根據本發明的一個實施方式的、在快取系統中存在“寫入未命中”,髒線的數量增加並且沒有發生溢出時,對髒線列表進行控制的處理;圖17至圖19示出根據本發明的一個實施方式的、在快取系統中存在“寫入未命中”,髒線的數量增加並且發生溢出時,對髒線列表進行控制的處理;圖20至圖22示出根據本發明的一個實施方式的、在快取系統中存在“寫入命中”,髒線的數量沒有增加並且沒有發生溢出時,對髒線列表進行控制的處理;圖23至圖25示出根據本發明的一個實施方式的、在快取系統中存在“寫入命中”,髒線的數量沒有增加並且發生溢出時,對髒線列表進行控制的處理;
圖26至圖28示出根據本發明的一個實施方式的、在快取系統中存在“寫入未命中”,髒線的數量沒有增加並且沒有發生溢出時,對髒線列表進行控制的處理;圖29至圖31示出根據本發明的一個實施方式的、在快取系統中存在“寫入未命中”,髒線的數量沒有增加並且發生溢出時,對髒線列表進行控制的處理。
在以下的實施方式的描述中,可以理解,術語“第一”和“第二”旨在標識元件,而不是用於僅定義元件本身或表示特定順序。另外,當元件被稱為位於另一元件“上”、“之上”、“上方”、“下”或“下方”時,其旨在指相對位置關係,而不是用來限定某些情形,如該元件直接接觸另一元件,或者在它們之間存在至少一個中間元件。因此,本文中所使用的術語諸如“在…上”、“在…之上”、“在…上方”、“在…下”、“在…下方”、“在…之下”等僅出於描述特定實施方式的目的,而非意在限制本發明的範圍。而且,當一個元件被稱為與另一個元件“連接”或“耦接”時,該元件可以與另一個元件直接電氣或機械地連接或直接耦接,或者也可以透過取代它們之間的另一個元件而形成連接關係或耦接關係。
在將資料寫到快取系統的快取記憶體中的各種方法中,回寫方法可以透過如下實現,即,當從主機輸出寫入請求時僅將新資料儲存到快取記憶體中,稍後再將新資料儲存到主記憶體(以下稱為“記憶體”)中。因此,在這種情況下,儲存在快取記憶體中的資料可能與儲存在記憶體的區域(與快取記憶體相對應的)中的資料不一致。快取記憶體的具有與儲存在記憶體中的資料不同的資料的區域可以被定義為髒線。當在快取記憶體中存在髒線的情況
下快取記憶體的電源突然中斷時,可能會發生如下的事件,即,儲存在快取記憶體中的所有資料未全部寫入記憶體。通常,如果在快取記憶體中發生突然斷電(SPO)事件,則在快取記憶體中的與記憶體的資料不一致的的資料可以基於可充電元件(諸如電容器)而在有限的時間內被寫入記憶體中。因此,當SPO事件發生時,在快取記憶體中的髒線的數量必須等於或小於能夠在可充電元件提供的有限時間內寫入記憶體的髒線的數量。所公開技術的各種實施方式可以提供透過使用髒線列表來控制髒線的數量的快取系統以及快取系統的資料快取方法。根據各種實施方式,在選擇快取記憶體的逐出資料(eviction data)以維持預定數量的髒線時,立即找出關於最近最少使用的(LRU)髒線的資訊是可能的。
圖1是示出根據本發明的一個實施方式的儲存系統的快取系統100的框圖。圖2是示出在圖1的快取系統100中包括的快取記憶體110的配置的示意圖,並且圖3是示出在圖1的快取系統100中包括的髒線列表130的配置的示意圖。參考圖1,快取系統100可以耦接在主機與記憶體之間,以回應於來自主機的資料寫入請求來執行資料快取操作。在一個實施方式中,主機可以是處理器,諸如中央處理單元(CPU)。在一個實施方式中,記憶體可以是揮發性記憶體,諸如動態隨機存取記憶體(DRAM),或者是非揮發性記憶體,諸如相變隨機存取記憶體(PCRAM)。在一個實施方式中,快取系統100可以被配置為包括快取記憶體110、快取控制器120和髒線列表130。快取記憶體110可以具有儲存區域,從主機向記憶體傳送的資料被暫時儲存在這些儲存區域中。在一個實施方式中,快取記憶體110可以包括靜態隨機存取記憶體(SRAM)或DRAM。可以透過快取控制器120的控制操作將儲存在快取記憶體110中的資料傳送到記憶體。
如圖2所示,快取記憶體110可以包括四個路(way)(即,第一路至第四路WAY-0、WAY-1、WAY-2和WAY-3)。儘管圖2示出了快取記憶體110包括四個路的示例,但是所公開技術不限於此。也就是說,在一些其他實施方式中,在快取記憶體110中包括的路的數量可以小於四個或大於四個。在該特定實施方式中,路WAY-0、WAY-1、WAY-2和WAY-3可以具有相同數量的塊。例如,路WAY-0、WAY-1、WAY-2和WAY-3中的每個路都可以具有256個塊。構成路WAY-0、WAY-1、WAY-2和WAY-3中的每個路的塊可以透過它們自己的組索引(set index)而彼此區分開,每個組索引都包括二進位流。例如,路WAY-0、WAY-1、WAY-2和WAY-3中的每個路的第一個塊都可以具有組索引“00000000”,而路WAY-0、WAY-1、WAY-2和WAY-3中的每個路的最後一個塊都可以具有組索引“11111111”。組索引可以對應於指定記憶體中的資料儲存區域的位址的一部分。可以在每個塊中儲存有效位元元、標籤(tag)和一組資料。有效位元元可以指示資料的有效性,且可以具有值“0”或“1”。標籤可以與該標籤的組索引的二進位流一起構成指定記憶體中的資料儲存區域的位址。例如,具有組索引“00000000”和標籤“11”的塊可以對應於在記憶體的多個位址之中的位址“1100000000”。
參考圖1和圖2,快取控制器120可以從主機接收與寫入相關的資訊,例如,組索引、標籤和寫入資料,以針對快取記憶體110的資料快取操作執行一系列控制操作。快取控制器120可以從快取記憶體110接收用於資料快取操作的快取資訊,且可以將組索引、標籤、寫入資料和寫入控制信號傳送到快取記憶體110。另外,快取控制器120可以向髒線列表130傳送控制命令CONTROL_COMMAND,以執行髒線列表130的控制操作。
具體地說,如果將標籤、組索引和寫入資料從主機傳送到快取控制器120,則快取控制器120可以從快取記憶體110接收快取資訊。快取資訊
可以包括關於從主機輸出的標籤、組索引和寫入資料是否存在於快取記憶體110中的資訊。快取控制器120可以根據快取資訊而判斷寫入資料是對應於“寫入命中”的資料還是對應於“寫入未命中”的資料,以及可以根據判斷的結果而執行快取寫入操作。可以透過將寫入控制信號與從主機輸出的標籤、組索引和寫入資料一起傳送到快取記憶體110來執行快取寫入操作。如果透過快取寫入操作改變了快取記憶體110中的髒線分佈,則快取控制器120可以將控制命令CONTROL_COMMAND傳送到髒線列表130以反應髒線分佈的變化。
如圖3所示,髒線列表130可以由暫存器疊層組成,該暫存器疊層包括多個節點,例如,第一節點至第六十四節點131-1、131-2、…、131-63和131-64。雖然圖3示出了其中節點的數量為“64”的示例,但所公開技術不限於此。即,節點的數量可以被定義為,在發生SPO事件時能夠由快取系統100中的可充電元件寫入到記憶體中的快取記憶體110的塊的數量。在本實施方式中,可以假設在發生SPO事件時,將儲存在快取記憶體110的64條髒線中的資料寫入記憶體。多個節點131-1、131-2、…、131-63和131-64中的每個節點可以儲存在快取記憶體110中的任何一條髒線的狀態資訊。在一個實施方式中,每條髒線的狀態資訊可以包括關於快取記憶體110中的對應髒線的路和組索引的資訊。例如,儲存路“1”和組索引“set_index_00”的第一節點131-1可以表示在快取記憶體110中的由路“1”和組索引“set_index_00”指定的塊是髒線。在不同的實施方式中,當快取記憶體110被配置為僅具有一個路時,多個節點131-1、131-2、…、131-63和131-64可能不具有任何“路”資訊。在一個實施方式中,多個節點131-1、131-2、…、131-63和131-64可以分別具有從二進位數字“0000000”到二進位數字“1111111”的節點位址。構成髒線列表130的節點131-1、131-2、…、131-63和131-64的位置可以分別由其節點位址指定。
當透過快取系統100的資料快取操作產生第一髒線時,關於第一髒線的組索引和路的資訊可以被儲存到第一節點131-1中,第一節點131-1對應於具有位址“0000000”的最低次序儲存區域。此後,每當產生髒線時,可以將關於所產生的髒線的組索引和路的一組資訊按照節點位址的順序依次儲存到節點131-1、131-2、…、131-63和131-64中。這樣一直持續到在快取系統100中執行逐出操作以改變髒線為止。根據本實施方式,在髒線列表130中,LRU髒線的狀態資訊始終儲存在最低次序的節點中,即,具有最低次序節點位址“0000000”的第一節點131-1中。此外,如果節點位址的值增加,則可以將髒線的具有較少LRU時間的狀態資訊儲存到第一節點131-1中。因此,可以將MRU髒線的狀態資訊儲存到在儲存髒線的狀態資訊的節點之中具有最高次序節點位址的節點。
如果髒線的狀態資訊被儲存到髒線列表130的所有節點131-1、131-2、…、131-63和131-64中,則髒線列表130可以被視為具有溢出狀態。相反,如果髒線列表130的節點131-1、131-2、…、131-63和131-64中的至少一個節點是空的,則髒線列表130可以被視為具有非溢出狀態。
如果在快取記憶體110中發生強制逐出,則快取控制器120可以分配與儲存在第一節點131-1(其在髒線列表130中具有最低次序節點位址,例如,節點位址“0000000”)中的狀態資訊相對應的髒線作為強制逐出的目標。因此,當在快取記憶體110中發生強制逐出時,LRU髒線的逐出操作被自動執行而無需任何尋找LRU髒線的搜索操作。在強制逐出終止之後,可以刪除儲存在第一節點131-1中的(關於髒線的)狀態資訊。
當在快取記憶體110中運行正常逐出時,快取控制器120可以執行以下控制操作,即,該控制操作將儲存在髒線列表130的節點131-1、131-2、…、131-63和131-64的一個節點中的狀態資訊移動到另一個節點。具體地,
當必須運行與儲存在具有節點位址“0000001”的第二節點131-2中的狀態資訊對應的髒線的正常逐出操作時,可以將儲存在第二節點131-2中的狀態資訊移動到在儲存髒線的狀態資訊的節點131-1、131-2、…、131-63和131-64之中具有最高次序節點位址的節點。另外,儲存在節點131-3、…和131-64中的先前的狀態資訊可以分別被轉移到節點131-2、…和131-63。例如,當必須運行與具有節點位址“0000001”的第二節點131-2相對應的髒線的正常逐出操作時,可以將儲存在第二節點131-2中的狀態資訊移動到最高次序節點131-64,並且儲存在最高次序節點131-64(即,第六十四節點)中的狀態資訊(路“0”和組索引“set_index_63”)可以被轉移到具有節點位址“1111110”的第二最高次序節點131-63(即,第六十三節點)。另外,可以將儲存在第二最高次序節點131-63(即,第六十三個節點)中的狀態資訊(路“3”和組索引“set_index_62”)轉移到具有節點位址“1111101”的第三最高次序節點131-62(即,第六十二個節點)。以相同的方式,可以將儲存在第三最低次序節點131-3(即,第三節點)中的狀態資訊(路“0”和組索引“set_index_02”)轉移到第二最低次序節點131-2(即,第二節點),該第二最低次序節點131-2由於正常逐出而變成空的。
快取系統100的資料快取操作可以包括:根據“寫入命中”的資料快取操作和根據“寫入未命中”的資料快取操作。在本實施方式中,可以將“寫入命中”定義為如下的情形,在快取記憶體110的具有寫入資料要被寫入其中的組索引的塊中,存在相同標籤的寫入資料。因此,當存在“寫入命中”時,在記憶體中的具有要被寫入的位址的區域中的資料被儲存到快取記憶體110的執行快取寫入操作的塊中的情況下,可以執行資料快取操作。在這種情況下,如果儲存在快取記憶體110中的資料與儲存在記憶體的區域中的資料(其與儲存在快取記憶體110中的資料具有相同的位址)一致,也就是說,在
快取記憶體110中沒有產生髒線,則髒線的總數可能由於快取寫入操作而增加。相反,如果儲存在快取記憶體110中的資料與儲存在記憶體中的資料(其與儲存在快取記憶體110中的資料具有相同的位址)不一致,也就是說,在快取記憶體110中產生了髒線,則可能由於快取寫入操作而增加了一個髒線,但是由於先前的髒線被去除,因此髒線的總數可能不會被改變。
可以將“寫入未命中”定義為如下的情形,在快取記憶體110的具有寫入資料要被寫入的組索引的塊中,不存在相同標籤的寫入資料。因此,當存在“寫入未命中”時,在記憶體中的具有不同於要寫入的第一位址的第二位址的區域中的資料被儲存到快取記憶體110的執行快取寫入操作的塊中的情況下,可以執行資料快取操作。在這種情況下,如果儲存在快取記憶體110中的資料與儲存在記憶體的區域中的資料(其具有與儲存在快取記憶體110中的資料的位址相同的第二位址)一致,也就是說,在快取記憶體110中沒有產生髒線,則髒線的總數可能由於快取寫入操作而增加。相反,如果儲存在快取記憶體110中的資料與儲存在記憶體的區域中的資料(其具有與儲存在快取記憶體110中的資料的位址相同的第二位址)不一致,也就是說,在快取記憶體110中產生了髒線,則可以在將儲存在快取記憶體110中的資料寫入具有第二位址的記憶體的區域中的逐出操作之後,執行快取寫入操作。因此,在這種情況下,由於寫入資料的快取寫入操作而可能會增加一個髒線,但是由於先前的髒線被去除,因此髒線的總數可能不會被改變。然而,如果儲存在快取記憶體110中的資料與儲存在記憶體的區域中的資料(其具有與儲存在快取記憶體110中的資料的位址相同的第二位址)一致,也就是說,在快取記憶體110中沒有產生髒線,則可以在沒有任何逐出操作的情況下執行快取寫入操作。因此,在這種情況下,由於增加了由寫入資料的快取寫入操作產生的髒線,因此髒線的總數可能增加。
圖4是示出當存在快取系統100的“寫入命中”時的資料快取操作的示意圖。參考圖4,將基於以下場景來描述本實施方式,即,發生了將第一資料DATA_A寫入到記憶體中的具有儲存位址“1000000011”的區域155中的請求。另外,將基於以下場景來描述本實施方式,即,標籤“10”和第二資料DATA_B被儲存在快取記憶體110中的具有組索引“00000011”的塊115中。因為第一資料DATA_A必須寫入的區域的儲存位址是二進位數字“1000000011”,所以可以使用塊115作為快取記憶體110中的目標塊來執行快取寫入操作,並且可以將二進位數字“10”儲存為標籤。具體地,快取控制器120可以回應於主機的請求而訪問快取記憶體110中的快取資訊,以檢索儲存在塊115中的標籤資訊。在本實施方式中,因為標籤“10”被儲存在塊115中,所以快取控制器120可以根據“寫入命中”而執行快取寫入操作。在這種情況下,塊115可以是髒線,或者也可以不是髒線。
在第二資料DATA_B被儲存在塊115中且第二資料DATA_B甚至被儲存在區域155中的情況下,塊115可能不對應於髒線。塊115中的第二資料DATA_B可以透過快取寫入操作而被第一資料DATA_A覆蓋。塊115可以透過快取寫入操作被視為髒線,且髒線的總數可以增加一個。相反,當第二資料DATA_B被儲存在塊115中,且與第二資料DATA_B不同的第三資料DATA_C被儲存在區域155中時,塊115可以對應於髒線。塊115中的第二資料DATA_B可以透過快取寫入操作而被第一資料DATA_A覆蓋。塊115可以透過快取寫入操作而被視為髒線。但是,因為在快取寫入操作之前儲存在塊115中的先前的髒線(包括第二資料DATA_B)透過快取寫入操作而被去除,所以髒線的總數可能不會被改變。
圖5是示出當存在快取系統100的“寫入未命中”時的資料快取操作的示意圖。參考圖5,將基於以下場景來描述本實施方式,即,發生了將
第一資料DATA_A寫入到記憶體中的具有儲存位址“1000000011”的區域155中的請求。另外,將基於以下場景來描述本實施方式,即,標籤“11”和第四資料DATA_D被儲存在快取記憶體110中的具有組索引“00000011”的塊115中。因為第一資料DATA_A必須寫入的區域的儲存位址是二進位數字“1000000011”,所以可以使用塊115作為快取記憶體110中的目標塊來執行快取寫入操作,並且可以將二進位數字“10”儲存為標籤。具體地,快取控制器120可以回應於主機的請求而訪問快取記憶體110中的快取資訊,以檢索儲存在具有組索引“00000011”的塊115中的標籤資訊。在本實施方式中,因為標籤“11”被儲存在塊115中,所以快取控制器120可以根據“寫入未命中”而執行快取寫入操作。在這種情況下,塊115可以是髒線,或者也可以不是髒線。
在第四資料DATA_D被儲存在塊115中且第四資料DATA_D甚至被儲存在區域156中的情況下,塊115可能不對應於髒線。塊115中的第四資料DATA_D可以透過快取寫入操作而被第一資料DATA_A覆蓋,且塊115中的標籤號“11”可以被改變為“10”。塊115可以透過快取寫入操作而被視為髒線,且髒線的總數可以增加一個。相反,當第四資料DATA_D被儲存在塊115中,且與第四資料DATA_D不同的第五資料DATA_E被儲存在區域156中時,塊115可以對應於髒線。在這種情況下,在執行快取寫入操作之前,可以執行逐出操作以移動儲存在塊115(髒線)中的第四資料DATA_D。可以執行逐出操作,使得儲存在塊115(髒線)中的第四資料DATA_D被寫入具有儲存位址“1100000011”的儲存區域156中。如果逐出操作終止,則可以執行快取寫入操作以將第一資料DATA_A儲存到塊115中。因此,可以透過快取寫入操作將塊115中的標籤“11”改變為“10”。在這種情況下,透過快取寫入操作會產生新的髒線,但是髒線的總數可能不會被改變,因為之前的髒線(包括第四資料DATA_D)已被在快取寫入操作之前執行的逐出操作去除了。
圖6是示出根據本發明的一個實施方式的快取系統100的資料快取操作的流程圖。參考圖6,如果在步驟210中從主機輸出寫入請求,則步驟220涉及判斷由主機提供的寫入資料是對應於“寫入命中”的情形還是對應於“寫入未命中”的情形。如果在步驟220中寫入資料對應於“寫入命中”的情形,則可以執行步驟280。可選地,如果在步驟220中由主機提供的寫入資料對應於“寫入未命中”的情形,則可以執行步驟230。首先,在“寫入未命中”的情形下,步驟230涉及判斷是否發生衝突。步驟230可以取決於寫入資料必須寫入其中的快取記憶體110的塊是否為髒線。如果快取記憶體110的塊是髒線,則步驟230可以確定存在衝突。相反,如果快取記憶體110的塊不是髒線,則步驟230可以確定不存在衝突。
當在步驟230中發生衝突時,可以在步驟240中執行對寫入資料必須寫入其中的快取記憶體110的塊(即,髒線)的正常逐出操作。在本實施方式中,正常逐出操作可以定義為對現有髒線的逐出,以用寫入資料替換儲存在快取記憶體110的塊中的資料。儲存在該塊中的資料可以透過正常逐出操作而被寫入記憶體。在正常逐出操作之後,可以在步驟270中執行快取寫入操作以將寫入資料寫到快取記憶體110中。因此,可以在正常逐出操作被清空之後,透過快取寫入操作將寫入資料寫到塊中,而且更新後的塊的標籤可能會被改變。
在步驟230中沒有發生衝突時,步驟250可以判斷是否存在快取記憶體110的溢出。可以透過在資料快取操作之後判斷髒線的數量是否超過預定數量來執行步驟250中的判斷。在本實施方式中,髒線的預定數量可以被定義為:在發生SPO事件時,能夠將資料傳送和寫入記憶體中的、快取記憶體110中的塊的數量。在本實施方式中,髒線的預定數量可以等於髒線列表130中的儲存區域的數量。如果在步驟250中,在資料快取操作之後髒線的數量超過髒
線的預定數量,則存在溢出。另一方面,如果在步驟250中,在資料快取操作之後髒線的數量沒有超過髒線的預定數量,則不存在溢出。
如在本文中關於參數所使用的詞“預定”(諸如預定數量)是指參數被用在處理或演算法中之前確定的參數值。對於一些實施方式,在處理或演算法開始之前確定的參數值。在其他實施方式中,在處理或演算法期間但在處理或演算法中使用參數之前確定的參數值。
當在步驟250中發生快取記憶體110的溢出時,可以在步驟260中執行髒線的強制逐出操作。在本實施方式中,強制逐出操作可以定義為:當在快取記憶體110中的髒線總數超過髒線的預定數量時執行的逐出。可以對當前髒線之中的LRU髒線執行強制逐出操作。因此,可以透過強制逐出操作將儲存在LRU髒線中的資料寫入記憶體。在強制逐出操作之後,可以在步驟270中執行快取寫入操作以將寫入資料寫到快取記憶體110中。當存在“寫入未命中”時,標籤也可以被改變。當在步驟250中不存在快取記憶體110的溢出時,也就是說,即使根據“寫入未命中”而透過資料快取操作填加了髒線,髒線的總數也沒有超過髒線的預定數量時,在步驟270中,可以執行快取寫入操作以將寫入資料寫到快取記憶體110中。
接下來,當存在“寫入命中”時,步驟280可以判斷在資料快取操作之後髒線的總數是否增加。如參考圖4所示,當存在“寫入命中”時,如果寫入資料必須寫入其中的快取記憶體110的塊是髒線,則髒線的總數可能不會被改變。相反,當存在“寫入命中”時,如果該塊不是髒線,則髒線總數可能增加一個。如果在步驟280中即使在資料快取操作之後,髒線的總數也沒有增加,則可以在步驟270中執行快取寫入操作,以將寫入資料寫入快取記憶體110中。但是,如果在步驟280中在資料快取操作之後髒線的總數增加,則步驟280可以判斷快取記憶體110是否存在溢出。當在步驟250中存在快取記憶體110
的溢出時,可以在步驟260中執行髒線的強制逐出操作。因此,可以透過強制逐出操作將儲存在LRU髒線中的資料寫入記憶體中。在強制逐出操作之後,可以在步驟270中執行快取寫入操作以將寫入資料寫入快取記憶體110中。當在步驟250中不存在快取記憶體110的溢出時,也就是說,即使根據“寫入未命中”而透過資料快取操作增加了髒線,髒線的總數也沒有超過髒線的預定數量時,在步驟270中可以執行快取寫入操作,以將寫入資料寫入快取記憶體110中。
圖7是示出根據本發明的一個實施方式的快取系統100中的髒線列表130的操作的流程圖。參考圖7,步驟310可以判斷髒線的數量是否增加。在步驟310中髒線的數量增加可以對應於如下的情形,即,應用快取寫入操作的快取記憶體110的目標塊不是髒線。如果在步驟310中髒線的數量增加,則可以在步驟320中判斷是否發生溢出。也就是說,如果在步驟310中由於產生髒線而導致髒線的數量增加,則髒線的總數可能會超過髒線列表130中的節點數量以引起溢出。可以基於從髒線列表130傳送到快取控制器120的髒線列表資訊資料(圖1的“髒線列表資訊資料”)來執行在步驟320中是否發生溢出的判斷。如果發生溢出,則必須執行強制逐出操作以從快取記憶體110逐出LRU髒線。如果在步驟320發生溢出,則可以刪除儲存在髒線列表130中的被強制逐出的髒線的狀態資訊(參見步驟330)。此後,可以將儲存在髒線列表130的各節點中的狀態資訊轉移到低次序節點(參見步驟340)。可以將所產生的髒線的狀態資訊儲存到在髒線列表130中的節點之中具有最高次序節點位址的節點中(參見步驟350)。如果在步驟320中沒有發生溢出,則可以將所產生的髒線的狀態資訊儲存到在髒線列表130中的空節點之中具有最低次序節點位址的節點中(參見步驟360)。
如果在步驟310中髒線的數量沒有增加,則這可能意味著已經儲存在快取記憶體110的目標塊中的髒線不是髒線。另外,因為髒線的數量沒有
增加,所以不會發生溢出。在這種情況下,可以確定寫入資料是對應於“寫入命中”的情形還是對應於“寫入未命中”的情形(參見步驟370)。當在步驟370中存在“寫入命中”時,可能不必對儲存在快取記憶體110的目標塊中的髒線執行正常逐出。此時,可以所產生的髒線的狀態資訊移動到在儲存髒線的狀態資訊的節點之中具有最高次序節點位址的節點中(參見步驟380)。透過狀態資訊的這種移動,從所產生的髒線的狀態資訊被移動並儲存於其中的節點到具有要被移動和刪除的狀態資訊的節點,儲存在各節點中的髒線的狀態資訊可以被順序地轉移到它們的緊鄰的較低次序(immediately lower-order)節點中。當在步驟370中存在“寫入未命中”時,必須對儲存在快取記憶體110的目標塊中的髒線執行正常逐出。在這種情況下,可以將被正常逐出的髒線的狀態資訊移動到在儲存髒線的狀態資訊的節點之中具有最高次序節點位址的節點中(參見步驟390)。即使在這種情況下,從被正常逐出的髒線的狀態資訊被移動並儲存於其中的節點到具有要被移動和刪除的狀態資訊的節點,儲存在各節點中的髒線的狀態資訊也可以被順序地轉移到它們的緊鄰的較低次序節點中。
在下文中,結合各種示例更全面地描述圖7所示的髒線列表130的操作。在以下的各示例中,沒有示出在快取記憶體110中的有效位元的值和在髒線列表130中的路的值。
圖8至圖10示出了根據本發明實施方式的、基於快取系統100中的“寫入命中”,在髒線的數量增加且沒有發生溢出時,對髒線列表130進行控制的處理。首先,如圖8所示,標籤“11”和資料DATA_B可以被儲存在快取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊不是髒線。也就是說,可以假設資料DATA_B被儲存在記憶體的具有儲存位址“1100000010”的區域中。另外,可以
假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的各節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有節點位址“1111101”的節點131-62。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。具有節點位址“1111110”的節點131-63(即,第二最高次序的節點)和具有節點位址“1111111”的最高次序節點131-64可以是空的,以避免溢出。在這種狀態下,如果發生了將資料DATA_A寫入記憶體中的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量增加,並且在圖7的步驟320中沒有發生溢出。因此,可以將所產生的髒線的狀態資訊儲存到空節點之中的具有最低次序節點位址的節點中(參見圖7的步驟360)。具體地,如圖9所示,可以將標籤“11”和資料DATA_A儲存在具有組索引“00000010”的塊中,並且可以將所產生的髒線的組索引“00000010”儲存在髒線列表130的空節點之中的具有最低次序節點位址(即,節點位址“1111110”)的節點131-63中。因此,如圖10所示,雖然具有組索引“00000010”的塊在快取寫入操作之前不是髒線,但是在快取記憶體110中的具有組索引“00000010”並且透過快取寫入操作儲存標籤“11”和資料DATA_A的塊也可能變為髒線。具體地,在快取記憶體110中的具有組索引“00000010”的塊可以變成MRU髒線。
圖11至圖13示出了根據本發明實施方式的、基於快取系統100中的“寫入命中”,在髒線的數量增加且發生溢出時,對髒線列表130進行控制的處理。首先,如圖11所示,可以將標籤“11”和資料DATA_B儲存在快取記憶
體110中的具有組索引“00000010”的塊中,並且可以將標籤“11”和資料DATA_C儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊不是髒線。也就是說,可以假設資料DATA_B被儲存在記憶體的具有儲存位址“1100000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的所有節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有最高次序節點位址“1111111”的最高次序節點131-64。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中的具有最低次序節點位址“0000000”的節點131-1中。MRU髒線的組索引“00010101”可以被儲存在髒線列表130中的具有最高次序節點位址“11111111”的節點131-64中。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量增加,並且在圖7的步驟320中發生溢出。因此,可以執行圖7的步驟330至350。具體地,如圖12所示,具有組索引“11111101”的LRU髒線可以被強制逐出。因此,資料DATA_C可以被儲存到記憶體的具有儲存位址“1111111101”的區域中。可以刪除儲存在具有節點位址“0000000”的節點131-1中的LRU髒線的狀態資訊,即,節點131-1中的組索引“11111101”。隨後,如圖12的節點之間的箭頭所示,在各節點中的狀態資訊可以被轉移到它們的緊鄰的較低次序節點中。此後,透過寫入資料DATA_A而新產生的髒線的狀態資訊(即,組索引“00000010”)可以被儲存在在髒線列表130中具有最高次序節點位址“11111111”的節點131-64中。因此,如圖13所
示,標籤“11”和資料DATA_A可以被儲存在具有組索引“00000010”的快取記憶體110的塊中,並且在快取記憶體110中的儲存資料DATA_A的塊可以變成MRU髒線。在快取記憶體110中的具有組索引“11111101”的塊可以不被視為髒線。儲存在具有節點位址“0000001”的節點131-2中的組索引“10011101”可以被轉移並儲存到具有最低次序節點位址“0000000”的節點131-1中。因此,在快取記憶體110中的具有組索引“10011101”並儲存資料DATA_D的塊可以變成LRU髒線。
圖14至圖16示出了根據本發明實施方式的、基於快取系統100中的“寫入未命中”,在髒線的數量增加且沒有發生溢出時,對髒線列表130進行控制的處理。首先,如圖14所示,標籤“00”和資料DATA_B可以被儲存在快取記憶體110中的具有組索引“00000010”的塊中。此外,標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊不是髒線。也就是說,可以假設資料DATA_B被儲存在記憶體的具有儲存位址“0000000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的各節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有節點位址“1111101”的節點131-62。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。具有節點位址“1111110”的節點131-63(即,第二最高次序的節點)和具有節點位址“1111111”的最高次序節點131-64可以是空的,以避免溢出。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量增加,並且在圖7的步驟320中沒有發生溢出。因此,所產生的髒線的狀態資訊可以被儲存到空節點之中的具有最低次序節點位址的節點中(參見圖7的步驟360)。具體地,如圖15和圖16所示,標籤“11”和資料DATA_A可以被儲存在具有組索引“00000010”的塊中,並且新產生的髒線的組索引“00000010”可以被儲存在髒線列表130的空節點之中具有最低次序節點位址(即,節點位址“1111110”)的節點131-63中。因此,雖然具有組索引“00000010”的塊在快取寫入操作之前不是髒線,但是快取記憶體110中的具有組索引“00000010”並且透過快取寫入操作儲存標籤“11”和資料DATA_A的塊可以變成髒線。具體地,快取記憶體110中的具有組索引“00000010”的塊可以變成MRU髒線。
圖17至圖19示出了根據本發明實施方式的、基於快取系統100中的“寫入未命中”,在髒線的數量增加且發生溢出時,對髒線列表130進行控制的處理。首先,如圖17所示,標籤“00”和資料DATA_B可以被儲存在快取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊不是髒線。也就是說,可以假設資料DATA_B被儲存在記憶體的具有儲存位址“0000000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的所有節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有最高次序節點位址“1111111”的最高次序節點131-64。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。MRU髒線的組索引“00010101”可以被儲存在髒線列表130中具有最高次序節點位址“11111111”的
節點131-64中。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量增加,並且在圖7的步驟320中發生溢出。因此,可以執行圖7的步驟330至350。具體地,如圖18所示,具有組索引“11111101”的LRU髒線可以被強制逐出。因此,資料DATA_C可以被儲存到記憶體的具有儲存位址“1111111101”的區域中。可以刪除儲存在具有節點位址“0000000”的節點131-1中的LRU髒線的狀態資訊,即,節點131-1中的組索引“11111101”。隨後,如圖18的節點之間的箭頭所示,在各節點中的狀態資訊可以被轉移到它們的緊鄰的較低次序節點中。此後,透過寫入資料DATA_A而新產生的髒線的狀態資訊(即,組索引“00000010”)可以被儲存在髒線列表130中具有最高次序節點位址“11111111”的節點131-64中。因此,如圖19所示,標籤“11”和資料DATA_A可以被儲存在快取記憶體110的具有組索引“00000010”的塊中,並且快取記憶體110中的儲存資料DATA_A的塊可以變成MRU髒線。在快取記憶體110中的具有組索引“11111101”的塊可以不被視為髒線。儲存在具有節點位址“0000001”的節點131-2中的組索引“10011101”可以被轉移並儲存到具有最低次序節點位址“0000000”的節點131-1中。因此,快取記憶體110中的具有組索引“10011101”並儲存資料DATA_D的塊可以變成LRU髒線。
圖20至圖22示出根據本發明實施方式的、基於快取系統100中的“寫入命中”,在髒線的數量沒有增加且沒有發生溢出時,對髒線列表130進行控制的處理。首先,如圖20所示,標籤“11”和資料DATA_B可以被儲存在快
取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊是髒線。也就是說,可以假設資料DATA_B還未被寫到記憶體的具有儲存位址“1100000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的各節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有節點位址“1111101”的節點131-62。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。具有節點位址“1111110”的節點131-63(即,第二最高次序的節點)和具有節點位址“1111111”的最高次序節點131-64可以是空的,以避免溢出。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量沒有增加,且在圖7的步驟370中資料DATA_A被視為“寫入命中”。因此,可以將新產生的髒線的狀態資訊移動到在儲存髒線的狀態資訊的各節點之中具有最高次序節點位址的節點中(參見圖7的步驟380)。具體地,如圖21所示,儲存在具有節點位址“0000001”的節點131-2中的新產生的髒線的組索引“00000010”,可以被移動到在具有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點(即,節點131-62)中。由於儲存在節點131-2中的組索引“00000010”被移動到具有節點位址“1111101”的節點131-62中,因此最初儲存在具有節點位址“1111101”的節點131-62中的組索引“11110101”可以被轉移到其緊鄰的較低次序節點中。組索引的這種轉
移可以順序地執行,直到由於新產生的髒線的組索引“00000010”的移動而變為空的節點131-2被最初儲存在節點131-3中的組索引“00111100”填充為止,如圖21中的節點之間的箭頭所示。因為快取記憶體110中的具有組索引“00000010”的塊在快取寫入操作之前是第二LRU髒線,所以該塊的狀態資訊(即,組索引“00000010”)被最初儲存在髒線列表130的節點131-2中。但是,如圖22所示,快取記憶體110中的具有組索引“00000010”的塊在快取寫入操作之後可以變成MRU髒線,而且該塊的狀態資訊(即,組索引“00000010”)可以被儲存到在填充有髒線狀態資訊的各節點之中具有最高次序節點位址的節點131-62中。
圖23至圖25示出根據本發明實施方式的、基於快取系統100中的“寫入命中”,在髒線的數量沒有增加且發生溢出時,對髒線列表130進行控制的處理。首先,如圖23所示,標籤“11”和資料DATA_B可以被儲存在快取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊是髒線。也就是說,可以假設資料DATA_B還未被寫入記憶體的具有儲存位址“1100000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的所有節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有最高次序節點位址“1111111”的最高次序節點131-64。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。MRU髒線的組索引“00010101”可以被儲存在髒線列表130中具有最高次序節點位址“1111111”的節點131-64中。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將
標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量沒有增加,且在圖7的步驟370中資料DATA_A被視為“寫入命中”。因此,可以將新產生的髒線的狀態資訊移動到在儲存髒線的狀態資訊的各節點之中具有最高次序節點位址的節點中(參見圖7的步驟380)。具體地,如圖24所示,儲存在具有節點位址“0000001”的節點131-2中的新產生的髒線的組索引“00000010”可以被移動到在具有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點(即,節點131-64)中。由於儲存在節點131-2中的組索引“00000010”被移動到具有最高次序節點位址“1111111”的節點131-64中,因此最初儲存在具有最高次序節點位址“1111111”的節點131-64中的組索引“00010101”可以被轉移到其緊鄰的較低次序節點131-63中。組索引的這種轉移可以順序地執行,直到由於新產生的髒線的組索引“00000010”的移動而變為空的節點131-2被最初儲存在節點131-3中的組索引“00111100”填充為止,如圖24中的節點之間的箭頭所示。因為快取記憶體110中的具有組索引“00000010”的塊在快取寫入操作之前是第二LRU髒線,所以該塊的狀態資訊(即,組索引“00000010”)被最初儲存在髒線列表130的節點131-2中。但是,如圖25所示,快取記憶體110中的具有組索引“00000010”的塊可以在快取寫入操作之後變成MRU髒線,而且該塊的狀態資訊(即,組索引“00000010”)可以被儲存到在髒線列表130的各節點之中具有最高次序節點位址“1111111”的節點131-64中。
圖26至圖28示出根據本發明實施方式的、基於快取系統100中的“寫入未命中”,在髒線的數量沒有增加且沒有發生溢出時,對髒線列表130進行控制的處理。首先,如圖26所示,標籤“00”和資料DATA_B可以被儲存在
快取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊是髒線。也就是說,可以假設資料DATA_B還未被寫入記憶體的具有儲存位址“0000000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。而且,組索引可以分別被儲存在如下設置的髒線列表130的各節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有節點位址“1111101”的節點131-62。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。具有節點位址“1111110”的節點131-63(即,第二最高次序的節點)和具有節點位址“1111111”的最高次序節點131-64可以是空的,以避免溢出。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量沒有增加,且在圖7的步驟370中資料DATA_A被視為“寫入未命中”。因此,被正常逐出的髒線的狀態資訊可以被移動到在儲存髒線的狀態資訊的各節點之中具有最高次序節點位址的節點中(參見圖7的步驟390)。具體地,如圖27所示,儲存在具有節點位址“0000001”的節點131-2中的被正常逐出的髒線的組索引“00000010”可以被移動到在具有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點(即,節點131-62)中。由於儲存在節點131-2中的組索引“00000010”被移動到具有節點位址“1111101”的節點131-62中,因此最初儲存在具有節點位址“1111101”的節點131-62中的組索引“11110101”可以被轉移到其緊鄰的較低次
序節點中。組索引的這種轉移可以順序地執行,直到由於新產生的髒線的組索引“00000010”的移動而變為空的節點131-2被最初儲存在節點131-3中的組索引“00111100”填充為止,如圖27中的節點之間的箭頭所示。因為快取記憶體110中的具有組索引“00000010”的塊在快取寫入操作之前是第二LRU髒線,所以該塊的狀態資訊(即,組索引“00000010”)被最初儲存在髒線列表130的節點131-2中。但是,如圖28所示,快取記憶體110中的具有組索引“00000010”的塊可以在快取寫入操作之後變成MRU髒線,而且該塊的狀態資訊(即,組索引“00000010”)可以被儲存到在填充有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點131-62中。
圖29至圖31示出根據本發明實施方式的、基於快取系統100中的“寫入未命中”,在髒線的數量沒有增加且發生溢出時,對髒線列表130進行控制的處理。首先,如圖29所示,標籤“00”和資料DATA_B可以被儲存在快取記憶體110中的具有組索引“00000010”的塊中,並且標籤“11”和資料DATA_C可以被儲存在快取記憶體110中的具有組索引“11111101”的塊中。在本實施方式中,可以假設儲存資料DATA_B的塊是髒線。也就是說,可以假設資料DATA_B還未被寫入記憶體的具有儲存位址“0000000010”的區域中。另外,可以假設儲存資料DATA_C的塊是髒線,特別地,是LRU髒線。此外,組索引可以分別被儲存在如下設置的髒線列表130的所有節點中,即,從具有最低次序位址“0000000”的最低次序節點131-1到具有最高次序節點位址“1111111”的最高次序節點131-64。LRU髒線的組索引“11111101”可以被儲存在髒線列表130中具有最低次序節點位址“0000000”的節點131-1中。MRU髒線的組索引“00010101”可以被儲存在髒線列表130中具有最高次序節點位址“1111111”的節點131-64中。在這種狀態下,如果發生了將資料DATA_A寫入記憶體的具有儲存位址“1100000010”的區域的寫入請求,則可以執行快取寫入操作以將標
籤“11”和資料DATA_A儲存到快取記憶體110的具有組索引“00000010”的塊中。
上面的示例可以對應於如下的情形,即,如參照圖7的流程圖所述的,在圖7的步驟310中髒線的數量沒有增加,且在圖7的步驟370中資料DATA_A被視為“寫入未命中”。因此,被正常逐出的髒線的狀態資訊可以被移動到在儲存髒線的狀態資訊的各節點之中具有最高次序節點位址的節點中(參見圖7的步驟390)。具體地,如圖30所示,儲存在具有節點位址“0000001”的節點131-2中的被正常逐出的髒線的組索引“00000010”可以被移動到在具有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點(即,節點131-64)中。由於儲存在節點131-2中的組索引“00000010”被移動到具有最高次序節點位址“1111111”的節點131-64中,因此最初儲存在具有最高次序節點位址“1111111”的節點131-64中的組索引“00010101”可以被轉移到其緊鄰的較低次序節點131-63中。組索引的這種轉移可以順序地執行,直到由於新產生的髒線的組索引“00000010”的移動而變為空的節點131-2被最初儲存在節點131-3中的組索引“00111100”填充為止,如圖30中的節點之間的箭頭所示。因為快取記憶體110中的具有組索引“00000010”的塊在快取寫入操作之前是第二LRU髒線,所以該塊的狀態資訊(即,組索引“00000010”)被最初儲存在髒線列表130的節點131-2中。但是,如圖31所示,快取記憶體110中的具有組索引“00000010”的塊可以在快取寫入操作之後變成MRU髒線,而且該塊的狀態資訊(即,組索引“00000010”)可以被儲存到在髒線列表130的各節點之中具有最高次序節點位址“1111111”的節點131-64中。
上面已經出於說明的目的,公開了所公開技術的實施方式。本發明所屬技術領域中具有通常知識者會理解,可以進行各種修改、添加和替換。儘管該專利文件包含許多細節,但是這些細節不應被解釋為對任何發明的
範圍或所要求保護的範圍的限制,而應被解釋為針對特定實施方式的特定特徵的描述。在該專利文件中在分離的不同實施方式的上下文中描述的某些特徵也可以在單個實施方式中組合實現。相反,在單個實施方式的上下文中描述的各種特徵也可以分別在多個實施方式中或以任何合適的子組合來實現。此外,儘管上面可以將特徵描述為以某些組合起作用甚至以最初要求保護的方式起作用,但是在某些情況下,可以從要求保護的組合中去除該組合中的一個或多個特徵,而且可以將所要求保護的組合用於子組合或子組合的變體。
100:快取系統
110:快取記憶體
120:快取控制器
130:髒線列表
Claims (16)
- 一種快取系統,包括:一快取記憶體,其被配置為具有多個塊;一髒線列表,其被配置為儲存在該等塊中的髒線之中的預定數量的髒線的狀態資訊;以及一快取控制器,其被配置為控制該快取記憶體的一資料快取操作,並且被配置為根據該資料快取操作而向該髒線列表提供該髒線的狀態和狀態變化,其中,該快取控制器執行一控制操作以始終將最近最少使用的LRU髒線的狀態資訊儲存到該髒線列表的預定儲存位置中;其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及其中,該快取控制器被配置為:從透過該快取記憶體的該資料快取操作而產生的髒線的狀態資訊被移動並儲存於其中的節點到由於透過該資料快取操作產生的髒線的狀態資訊的移動而變為空的節點為止,將該等髒線的狀態資訊轉移到它們的緊鄰的較低次序節點中。
- 如請求項1所述之快取系統,其中,該快取記憶體包括至少一個路,該路具有該等塊。
- 如請求項1所述之快取系統,其中,該快取記憶體的該等塊中的每個塊透過其自身的一組索引而彼此區分開,該等組索引的每個都包括一二進位流。
- 如請求項3所述之快取系統,其中,該快取記憶體的該等塊中的每個塊都包括一有效位元、一標籤和一資料。
- 如請求項3所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該髒線的狀態資訊。
- 如請求項5所述之快取系統,其中,在該髒線列表中包括的該等節點的數量被定義為用於儲存資料的該等塊的數量,當發生突然斷電SPO事件時,該等塊的數量能夠基於一可充電元件而被寫入一主記憶體。
- 如請求項1所述之快取系統,其中,該快取記憶體的該等塊中的每個塊透過其自身的一組索引而彼此區分開,該組索引中的每個都包括一二進位流;以及其中,該髒線中的每條的該狀態資訊都包括該快取記憶體的該組索引中的一個。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該髒線的狀態資訊;以及其中,該等節點的位置由該等節點的節點位址來確定。
- 如請求項8所述之快取系統,其中,該LRU髒線的一狀態資訊始終被儲存到該等節點之中的具有最低次序節點位址的最低次序節點中。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該髒線的狀態資訊;以及其中,該快取控制器控制該髒線列表,使得如果指定該等節點中的每個節點的節點位址的值增加,則將髒線的具有較少LRU時間的狀態資訊儲存到具有被增加的節點位址的值的節點中。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及 其中,在由於該快取記憶體的該資料快取操作導致該等髒線的數量增加而造成溢出時,該快取控制器將具有儲存在該髒線列表的最低次序節點中的狀態資訊的髒線視為該LRU髒線,並且強制逐出該LRU髒線;其中,所述溢出涉及該等髒線的增加後的數量超過該髒線列表中的節點的數量。
- 如請求項11所述之快取系統,其中,該快取控制器被配置為從該髒線列表的最低次序節點中刪除被強制逐出的該髒線的狀態資訊,被配置為將儲存在該等節點中的狀態資訊轉移到它們的緊鄰的較低次序節點,以及被配置為將透過該資料快取操作而新產生的髒線的狀態資訊儲存到該髒線列表中的最高次序節點中。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及其中,如果由於該快取記憶體的資料快取操作而導致該等髒線的數量增加,並且即使該等髒線的數量增加也沒有發生溢出,則該快取控制器將透過該資料快取操作而新產生的髒線的狀態資訊儲存到該髒線列表中無任何狀態資訊的空節點之中的具有最低次序節點位址的節點中。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及其中,當即使在該快取記憶體的該資料快取操作之後該髒線的數量也不增加的情況下存在“寫入命中”時,該快取控制器將透過該資料快取操作產生的髒線的狀態資訊轉移到在該髒線列表中填充有髒線的狀態資訊的各節點之中具有最高次序節點位址的節點。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及其中,當即使在該快取記憶體的該資料快取操作之後該等髒線的數量也不增加的情況下存在“寫入未命中”時,該快取控制器被配置為將儲存在該快取記憶體的透過後續快取寫入操作寫入資料的塊中的髒線正常逐出,且被配置為將被正常逐出的髒線的狀態資訊移動到在該髒線列表中儲存該等髒線的狀態資訊的各節點之中具有最高次序節點位址的節點中。
- 如請求項1所述之快取系統,其中,該髒線列表包括多個節點,在該等節點中儲存該等髒線的狀態資訊;以及其中,該快取控制器被配置為:從透過該資料快取操作而被正常逐出的髒線的狀態資訊被移動並儲存於其中的節點到由於被正常逐出的髒線的狀態資訊的移動而變為空的節點為止,將該等髒線的狀態資訊轉移到它們的緊鄰的較低次序節點中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190052599A KR20200127793A (ko) | 2019-05-03 | 2019-05-03 | 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법 |
KR10-2019-0052599 | 2019-05-03 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202042070A TW202042070A (zh) | 2020-11-16 |
TWI805878B true TWI805878B (zh) | 2023-06-21 |
Family
ID=73015913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144696A TWI805878B (zh) | 2019-05-03 | 2019-12-06 | 儲存系統的快取系統及其資料快取方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11269785B2 (zh) |
KR (1) | KR20200127793A (zh) |
TW (1) | TWI805878B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200527207A (en) * | 2003-08-19 | 2005-08-16 | Sun Microsystems Inc | Cache bank interface unit |
TW200530817A (en) * | 2003-11-18 | 2005-09-16 | Matsushita Electric Ind Co Ltd | Cache memory and control method thereof |
TW200809496A (en) * | 2005-11-15 | 2008-02-16 | Montalvo Systems Inc | Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state |
US9218292B2 (en) * | 2013-06-18 | 2015-12-22 | International Business Machines Corporation | Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler |
US20170075601A1 (en) * | 2015-09-16 | 2017-03-16 | Kabushi Kaisha Toshiba | Memory system |
US9710383B1 (en) * | 2015-09-29 | 2017-07-18 | EMC IP Holding Company LLC | Caching techniques |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
GB2385174B (en) * | 1999-01-19 | 2003-11-26 | Advanced Risc Mach Ltd | Memory control within data processing systems |
US8180968B2 (en) | 2007-03-28 | 2012-05-15 | Oracle America, Inc. | Reduction of cache flush time using a dirty line limiter |
EP3049937A4 (en) | 2013-09-27 | 2017-05-17 | Intel Corporation | Cache operations for memory management |
US11016669B2 (en) * | 2018-05-01 | 2021-05-25 | Qualcomm Incorporated | Persistent write data for energy-backed memory |
US10740187B1 (en) * | 2019-01-31 | 2020-08-11 | EMC IP Holding Company LLC | Systems and methods of managing and creating snapshots in a cache-based storage system |
-
2019
- 2019-05-03 KR KR1020190052599A patent/KR20200127793A/ko active Search and Examination
- 2019-12-06 TW TW108144696A patent/TWI805878B/zh active
- 2019-12-12 US US16/712,478 patent/US11269785B2/en active Active
-
2022
- 2022-01-26 US US17/585,305 patent/US11593276B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200527207A (en) * | 2003-08-19 | 2005-08-16 | Sun Microsystems Inc | Cache bank interface unit |
TW200530817A (en) * | 2003-11-18 | 2005-09-16 | Matsushita Electric Ind Co Ltd | Cache memory and control method thereof |
TW200809496A (en) * | 2005-11-15 | 2008-02-16 | Montalvo Systems Inc | Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state |
US9218292B2 (en) * | 2013-06-18 | 2015-12-22 | International Business Machines Corporation | Least-recently-used (LRU) to first-dirty-member distance-maintaining cache cleaning scheduler |
US20170075601A1 (en) * | 2015-09-16 | 2017-03-16 | Kabushi Kaisha Toshiba | Memory system |
US9710383B1 (en) * | 2015-09-29 | 2017-07-18 | EMC IP Holding Company LLC | Caching techniques |
Also Published As
Publication number | Publication date |
---|---|
US11269785B2 (en) | 2022-03-08 |
US20220147464A1 (en) | 2022-05-12 |
CN111881069A (zh) | 2020-11-03 |
TW202042070A (zh) | 2020-11-16 |
US20200349089A1 (en) | 2020-11-05 |
KR20200127793A (ko) | 2020-11-11 |
US11593276B2 (en) | 2023-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8606997B2 (en) | Cache hierarchy with bounds on levels accessed | |
US20200264980A1 (en) | Apparatus and method of handling caching of persistent data | |
US7552286B2 (en) | Performance of a cache by detecting cache lines that have been reused | |
US8745334B2 (en) | Sectored cache replacement algorithm for reducing memory writebacks | |
JP5535128B2 (ja) | メモリシステム | |
CN109983536B (zh) | 响应标签匹配命令的存储电路 | |
JP2015232879A (ja) | データ処理装置における動的なキャッシュ・アロケーション・ポリシーの適応 | |
JP7010809B2 (ja) | デデュープ可能なメモリキャッシュ及びそのための動作方法 | |
KR102453192B1 (ko) | 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체 | |
US20200250098A1 (en) | Cache access detection and prediction | |
WO2016049169A1 (en) | Smart flash cache logger | |
US10157148B2 (en) | Semiconductor device configured to control a wear leveling operation and operating method thereof | |
US20080301372A1 (en) | Memory access control apparatus and memory access control method | |
US20120036311A1 (en) | Cache and disk management method, and a controller using the method | |
JP6538741B2 (ja) | 管理装置、情報処理装置および管理方法 | |
JP2019164508A (ja) | 管理装置、情報処理装置およびメモリ制御方法 | |
TWI797354B (zh) | 快取記憶體、儲存系統和快取記憶體的逐出方法 | |
TWI805878B (zh) | 儲存系統的快取系統及其資料快取方法 | |
JP6674085B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
CN111881069B (zh) | 存储系统的高速缓存系统及其数据高速缓存方法 | |
KR101502998B1 (ko) | 메모리 시스템 및 그 관리 방법 | |
KR102176304B1 (ko) | 하위 레벨 캐시에서 캐시 라인의 연령을 제어함으로써 메모리에 대한 후기입 감소 | |
US20080263281A1 (en) | Cache memory system using temporal locality information and a data storage method | |
KR102521746B1 (ko) | 메모리 장치의 주소 맵핑을 관리하는 반도체 장치 및 이를 포함하는 데이터 저장 장치 | |
JP6784033B2 (ja) | 方法、キャッシュシステム及びデータ監視部 |