TW202307662A - 電腦系統、儲存器裝置以及操作電腦系統的方法 - Google Patents
電腦系統、儲存器裝置以及操作電腦系統的方法 Download PDFInfo
- Publication number
- TW202307662A TW202307662A TW111126409A TW111126409A TW202307662A TW 202307662 A TW202307662 A TW 202307662A TW 111126409 A TW111126409 A TW 111126409A TW 111126409 A TW111126409 A TW 111126409A TW 202307662 A TW202307662 A TW 202307662A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- storage device
- load balancing
- page
- count
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0617—Improving the reliability of storage systems in relation to availability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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/1041—Resource optimization
-
- 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/1056—Simplification
-
- 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/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- 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/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Networks & Wireless Communication (AREA)
Abstract
揭露一種系統。所述系統可包括處理器以及連接至處理器的記憶體。第一儲存器裝置可連接至處理器。第一儲存器裝置可包括第一儲存器部分,所述第一儲存器部分可包括記憶體頁。第一儲存器部分可對記憶體進行擴展。第二儲存器裝置亦可連接至處理器。第二儲存器裝置亦可包括第二儲存器部分。第二儲存器部分亦可對記憶體進行擴展。負載平衡常駐程式可至少部分地基於第一儲存器裝置的第一更新計數及第二儲存器裝置的第二更新計數將記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
Description
本揭露大體而言是有關於電腦系統,且具體而言是有關於使用儲存器裝置來對系統記憶體進行擴展的電腦系統。
[相關申請案資料]
本申請案主張在2021年7月15日提出申請的序列號為63/222,406的美國臨時專利申請案的權益,所述美國臨時專利申請案出於全部目的併入本案供參考。
包括多個儲存器裝置的電腦系統可具有不同的工作負載(workload)。一個儲存器裝置相較於另一儲存器裝置可能會花費更多的時間來寫入資料。對於例如固態驅動機(Solid State Drive,SSD)等儲存器裝置而言,寫入資料可能會相較於讀取資料花費更長的時間,此種工作負載不平衡可能會導致電腦系統的整體效能降低。
仍需要對跨儲存器裝置的負載平衡進行處理。
本揭露的實施例包括一種負載平衡常駐程式。所述負載平衡常駐程式可對自其中遷移頁的儲存器裝置以及儲存器裝置上欲進行遷移的頁進行辨識。所述負載平衡常駐程式亦可對頁可被遷移至的另一儲存器裝置進行辨識。然後負載平衡常駐程式可對頁自第一儲存器裝置至第二儲存器裝置的遷移進行管理。
現在將詳細參照本揭露的實施例,所述實施例的實例示出於附圖中。在以下詳細說明中,陳述諸多具體細節以使得能夠透徹地理解本揭露。然而,應理解,此項技術中具有通常知識者無需該些具體細節即可實踐本揭露。在其他情形中,未對眾所習知的方法、過程、組件、電路及網路予以詳細闡述,以避免不必要地使實施例的態樣模糊不清。
應理解,儘管本文中可能使用用語「第一」、「第二」等來闡述各種元件,然而該些元件不應受該些用語限制。該些用語僅用於區分各個元件。舉例而言,在不背離本揭露的範圍的條件下,第一模組可被稱為第二模組,且相似地,第二模組可被稱為第一模組。
本文中在本揭露的說明中所使用的術語僅用於闡述具體實施例,而並非旨在限制本揭露。除非上下文另外清楚地指示,否則在本揭露的說明及隨附申請專利範圍中所使用的單數形式「一(a/an)」及「所述(the)」旨在亦包括複數形式。亦應理解,本文中所使用的用語「及/或(and/or)」是指且囊括相關聯所列項中一或多個項的任意及所有可能組合。更應理解,當在本說明書中使用用語「包括(comprises及/或comprising)」時,是指明所陳述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式所示組件及特徵未必按比例繪製。
電腦系統可包括不同形式的資料儲存器。電腦系統通常包括主機記憶體(其可為揮發性儲存器,此意指若電源中斷可能會丟失儲存於其中的資訊)及儲存器裝置(其可為非揮發性儲存器,此意指即使電源中斷仍可保留儲存於其中的資訊)。
該些不同形式的儲存器可具有不同的優點及缺點。舉例而言,除了在中斷電源時資料丟失的風險之外,大量購買主機記憶體可更昂貴,但可具有相對快的響應時間(用於讀取資料及/或寫入資料)。另一方面,非揮發性儲存器在電源中斷時可不丟失資料且可大量購買而不昂貴,但可能會具有較慢的響應時間。
一些電腦系統試圖將所有儲存器(系統記憶體及儲存器裝置)呈現為一個經擴展儲存器。應用可在不知曉資料所儲存的確切位置的情況下自此經擴展儲存器視圖中的位址進行讀取或向所述位址進行寫入:電腦系統可對該些細節進行管理。
但對於寫入資料的響應時間慢於讀取資料的響應時間的儲存器裝置(具體而言是固態驅動機(SSD))而言,花費大量時間寫入資料的儲存器裝置可能會導致發送至所述儲存器裝置的讀取請求減慢。若存在其他可用的儲存器裝置且該些其他儲存器裝置具有較小的負載,則系統的整體效能可能會由於一個儲存器裝置對大量寫入請求進行處置而降低。
本揭露的實施例藉由基於對資料在儲存器裝置內所儲存的位置進行更新來對最繁忙的裝置及最空閒的裝置進行辨識來解決該些問題。若最繁忙裝置與最空閒裝置之間的工作負載差超過臨限值,則熱頁(hot page)可自最繁忙裝置遷移至最空閒裝置,以試圖對最繁忙裝置與最空閒裝置的相對負載進行平衡且改善整體系統效能。
圖1示出根據本揭露實施例的包括儲存器裝置的系統,所述儲存器裝置可用於在異質記憶體系統中進行負載平衡。在圖1中,機器105(其亦可被稱為主機、主機機器或主機電腦)可包括處理器110(其亦可被稱為主機處理器)、記憶體115(其亦可被稱為主機記憶體)及儲存器裝置120。處理器110可為任何種類的處理器。(為易於例示,處理器110以及以下論述的其他組件被示出為位於機器之外:本揭露的實施例可包括位於機器內的該些組件。)儘管圖1示出單個處理器110,然而機器105可包括任意數目的處理器,所述處理器中的每一者可為單核處理器或多核處理器,所述單核處理器或多核處理器中的每一者可實施精簡指令集電腦(Reduced Instruction Set Computer,RISC)架構或複雜指令集電腦(Complex Instruction Set Computer,CISC)架構(以及其他可能性),且可以任何所期望組合進行混合。
處理器110可耦合至記憶體115。記憶體115可為任何種類的記憶體,例如快閃記憶體、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、靜態隨機存取記憶體(Static Random Access Memory,SRAM)、持久隨機存取記憶體、鐵電隨機存取記憶體(Ferroelectric Random Access Memory,FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory,NVRAM),例如磁阻式隨機存取記憶體(Magnetoresistive Random Access Memory,MRAM)等。記憶體115亦可為不同記憶體類型的任何所期望組合且可由記憶體控制器125進行管理。記憶體115可用於儲存可被稱為「短期(short-term)」的資料:即,預期不會被儲存達延長時間段的資料。短期資料的實例可包括臨時檔案、由應用在本地使用的資料(其可自其他儲存位置複製)及類似資料。
處理器110及記憶體115亦可支援作業系統,各種應用可在所述作業系統下運行。該些應用可發出請求(其亦可被稱為命令),以自記憶體115或儲存器裝置120-1及/或120-2(其可被統稱為儲存器裝置120)讀取資料或者向記憶體115或儲存器裝置120-1及/或120-2寫入資料。可使用裝置驅動器130來對儲存器裝置120進行存取。儘管圖1使用通用用語「儲存器裝置」,然而本揭露的實施例可包括可受益於使用負載平衡的任何儲存器裝置格式,所述儲存器裝置的實例可包括硬碟驅動機及固態驅動機(SSD)。以下對「SSD」或任何其他特定形式的儲存器裝置的任何引用應被理解為包括本揭露的此類其他實施例。另外,儘管圖1示出兩個儲存器裝置120,然而本揭露的實施例可包括任意數目(一或多個)的儲存器裝置。此外,儘管圖1示出兩個儲存器裝置120二者皆使用單個裝置驅動器130來存取,然而本揭露的實施例可包括使用不同的裝置驅動器130來存取的不同儲存器裝置120。
在本揭露的一些實施例中,儲存器裝置120可與記憶體115組合使用,以作為異質記憶體系統進行操作。在異質記憶體系統中,應用可使用與應用相關聯的虛擬位址發出加載請求及/或儲存請求。然後系統可使用頁表135來確定資料實際上儲存於何處:記憶體115、儲存器裝置120-1還是儲存器裝置120-2。然後系統可在應用不知曉資料所儲存的實際位置的情況下根據請求加載資料或儲存資料。頁表135可儲存於記憶體115中(如圖所示),即使儲存器裝置120-1及120-2可用於對記憶體115進行擴展以使用例如快取同調互連協定(例如快速計算鏈路(Compute Express Link®,CXL)協定)實施異質記憶體系統,以向應用呈現組合的記憶體(快速計算鏈路是快速計算鏈路聯盟公司(Compute Express Link Consortium, Inc.)的注冊商標)。
如以下參照圖3及圖7所論述,在本揭露的一些實施例中,儲存資料的實體裝置(記憶體115、儲存器裝置120-1或儲存器裝置120-2)可由虛擬位址所映射至的位址來暗示,且因此頁表135可僅儲存位址而不對儲存資料的特定裝置進行辨識。在本揭露的其他實施例中,頁表135可包括指向在異質記憶體系統中使用的各種裝置的鏈路,例如鏈路140-1及140-2。該些鏈路140-1及140-2可被綁定至頁表135中的特定表項,以指示哪些表項對儲存於特定裝置上的資料進行辨識。
在理想情況下,資料將以等同的頻率被讀取及/或寫入。但自實踐的角度而言,並非所有的資料皆被等同地處置,即使是由單個應用進行處置。一些資料可被寫入一次並被讀取多次;其他資料可被重複寫入。舉例而言,應用可儲存臨時資料,例如中間計算結果(interim calculation result)。隨著中間結果被更新,應用可儲存經更新結果。此過程可繼續進行,直至確定出最終結果,此時可儲存最終結果。
由於不同的應用可以不同的方式使用資料(且單個應用可以不同的方式使用多種資料),因此不同的記憶體位址可能會經受不同層階(及類型)的活動。舉例而言,在例如圖1中所示的異質記憶體系統中,儲存器裝置120-1可變得繁忙,而儲存器裝置120-2可空閒。由於寫入操作(尤其是對於SSD而言)可相較於讀取操作花費更多的時間,因此若期望儲存器裝置120-1對寫入請求及讀取請求二者進行處理,則該些讀取請求可被延遲,而若資料被改為寫入至儲存器裝置120-2,則讀取請求可被更快地處置。
負載平衡常駐程式145可對儲存器裝置120進行管理,進而以試圖對儲存器裝置120上的負載進行平衡的方式分發資料。(由於記憶體115及儲存器裝置120可用於呈現異質記憶體系統,因此負載平衡常駐程式145亦可對記憶體115上的負載進行管理。)
圖2示出根據本揭露實施例的圖1所示機器105的細節。在圖2中,機器105通常包括一或多個處理器110,所述一或多個處理器110可包括記憶體控制器125及可用於對機器的組件的操作進行協調的時鐘205。處理器110亦可耦合至記憶體115,作為實例,記憶體115可包括隨機存取記憶體(random access memory,RAM)、唯讀記憶體(read-only memory,ROM)或其他狀態保持媒體。處理器110亦可耦合至儲存器裝置120且耦合至網路連接件210,網路連接件210可為例如乙太網路連接件或無線連接件。處理器110亦可連接至匯流排215,使用者介面220及可使用輸入/輸出(Input/Output,I/O)引擎225及其他組件來管理的I/O介面埠可附接至匯流排215。
圖3示出根據本揭露實施例的支援負載平衡的固態驅動機(SSD)。在圖3中,SSD 120可包括介面305。介面305可為用於將SSD 120連接至圖1所示機器105的介面。SSD 120可包括多於一個的介面305:例如,一個介面可用於加載並儲存請求(當SSD 120的一部分或全部用於對圖1所示記憶體115進行擴展時發出所述請求),另一介面可用於基於區塊的讀取請求及寫入請求,且第三介面可用於鍵值讀取請求及寫入請求。儘管圖3表明介面305是圖1所示SSD 120與機器105之間的實體連接,然而介面305亦可表示可跨越共用實體介面使用的協定差異。舉例而言,SSD 120可使用U.2或M.2連接件連接至機器105,但可支援加載/儲存請求、基於區塊的請求及鍵值請求:處置不同類型的請求可由不同的介面305來實行。
SSD 120亦可包括可對介面305進行管理的主機介面層310。若SSD 120包括多於一個的介面305,則單個主機介面層310可對所有介面進行管理,SSD 120可包括用於每一介面的主機介面層,或者可使用其一些組合。
SSD 120亦可包括SSD控制器315、各種通道320-1、320-2、320-3及320-4,各種快閃記憶體晶片325-1、325-2、325-3、325-4、325-5、325-6、325-7及325-8可沿著該些通道以陣列方式排列。SSD控制器315可對沿著通道320-1至320-4向快閃記憶體晶片325-1至325-8發送讀取請求及寫入請求進行管理。儘管圖3示出四個通道及八個快閃記憶體晶片,然而本揭露的實施例可包括包含任意數目(一或多個,無限制)的快閃記憶體晶片的任意數目(一或多個,無限制)的通道。
在每一快閃記憶體晶片內,空間可被組織成區塊,所述區塊可被進一步細分成頁且可被分組成超區塊。頁大小可根據需要變化:例如,頁可為4千位元組的資料。若欲寫入少於整個頁,則多餘的空間「未被使用(unused)」。區塊可包含任意數目的頁:例如128或256。並且超區塊可包含任意數目的區塊。快閃記憶體晶片可能不會將資料組織成超區塊,而僅組織成區塊及頁。
儘管可寫入及讀取頁,然而SSD通常不容許重寫資料:即,現有資料可能不會被新資料「就地(in place)」替換。相反,當欲更新資料時,新資料被寫入至SSD上的新頁,且原始頁被無效化(標記為準備抹除)。因此,SSD頁通常具有三種狀態中的一者:閒置(準備寫入)、有效(包含有效資料)及無效(不再包含有效資料,但在抹除之前不可用)(該些狀態的確切名稱可能有所變化)。
但是,儘管頁可被各別地寫入及讀取,然而區塊是可進行抹除的基本資料單位。亦即,頁不被各別地抹除:區塊中的所有頁通常是被同時抹除。舉例而言,若區塊包含256個頁,則區塊中的所有256個頁被同時抹除。此種佈置可能導致關於SSD的一些管理問題:若選擇抹除仍包含一些有效資料的區塊,則在可抹除所述區塊之前,可能需要將所述有效資料複製至SSD上其他位置的閒置頁。(在本揭露的一些實施例中,抹除單位可不同於區塊:例如,其可為超區塊,以下論述的超區塊可為多個區塊的集合。)
由於寫入資料的單位與抹除資料的單位不同(頁與區塊不同),因此若SSD進行等待直至區塊僅包含無效資料時才抹除所述區塊,則SSD可能會耗盡可用的儲存器空間,即使有效資料量可能少於SSD宣傳的容量。為避免此種情況,SSD控制器315可包括垃圾收集控制器(未在圖3中示出)。垃圾收集的功能可為對包含所有或幾乎所有無效頁的區塊進行辨識並使該些區塊閒置,使得有效資料可再次被寫入至該些區塊中。但是,若被選擇進行垃圾收集的區塊包括有效資料,則所述有效資料將被垃圾收集邏輯抹除(由於抹除的單位是區塊而非頁)。為避免此類資料丟失,垃圾收集邏輯可將此類區塊中的有效資料程式化至其他區塊中。一旦資料已被程式化至新的區塊中(且將邏輯區塊位址(logical block address,LBA)映射至實體區塊位址(physical block address,PBA)的表被更新以反映資料的新位置),則所述區塊可被抹除,進而使所述區塊中的頁的狀態返回至閒置狀態。
在胞元可能不被信任以正確地保留資料之前,SSD亦具有每一胞元可被寫入的有限次數。此次數通常被量測為胞元經歷的程式化/抹除循環的數目的計數。胞元可支援的程式化/抹除循環的數目通常意指SSD將保持可靠的功能達合理的時間段:對於個人使用者而言,使用者可更有可能因儲存器容量不足而非由於已超過程式化/抹除循環的數目而更換SSD。但是,在資料可被更頻繁地寫入及抹除的企業環境中,胞元超過其程式化/抹除循環計數的風險可能更顯著。
為幫助抵消此種風險,SSD控制器315可採用磨耗均衡控制器(未在圖3中示出)。磨耗均衡可涉及基於區塊的程式化/抹除循環計數來選擇資料區塊以對資料進行程式化。藉由選擇具有較低程式化/抹除循環計數的區塊來對新資料進行程式化,SSD可能夠避免一些區塊的程式化/抹除循環計數增大超過其可靠操作點。藉由保持每一區塊的磨耗水準盡可能接近,SSD可保持可靠達更長的時間段。
SSD控制器315可包括主機管理裝置記憶體(host-managed device memory,HDM)330及快閃轉譯層(flash translation layer,FTL)335(對於不使用快閃儲存器的儲存器裝置而言,其可更一般地被稱為轉譯層)。當在異質記憶體系統中使用時,SSD 120可使用HDM 330向圖1所示處理器110呈現記憶體位址範圍。以此種方式,圖1所示處理器110可在不考量資料實際儲存於何處的情況下發出加載請求及/或儲存請求。舉例而言,對包括8吉位元組(gigabyte,GB)的圖1所示記憶體115及SSD 120上的16吉位元組的儲存器的系統(例如圖1所示機器105)進行考量。在此種系統中,圖1所示處理器110可能夠在介於自0×0 0000 0000至0×5 FFFF FFFF的範圍內的位址中加載及/或儲存資料,其中位址0×0 0000 0000至0×1 FFFF FFFF是圖1所示記憶體115內的位址,且位址0×2 0000 0000至0×5 FFFF FFFF是SSD 120內的位址。在給出特定記憶體位址的情況下,SSD 120可確定儲存資料的適當區塊,且可基於所提供的記憶體位址而按照圖1所示處理器110的請求讀取及/或寫入資料。
在本揭露的一些實施例中,SSD 120中的所有可用儲存器可被暴露於圖1所示處理器110,以對圖1所示記憶體115進行擴展。換言之,若SSD 120供應共16吉位元組的儲存器,則HDM 330可對針對所定義記憶體位址範圍中的任何位址的加載請求及/或儲存請求進行管理。在本揭露的其他實施例中,由SSD 120供應的儲存器的一部分可用於對圖1所示記憶體115進行擴展,其中由SSD 120供應的儲存器的另一部分可由向SSD 120發出讀取請求及/或寫入請求的應用直接存取(而非加載請求及/或儲存請求,其可首先由圖1所示記憶體控制器125進行處置)。在本揭露的此類實施例中,可使用HDM 330暴露的位址範圍可小於SSD 120的可用儲存器。
HDM 330可被認為在FTL 335的「上方」進行操作。亦即,HDM 330可使用由圖1所示處理器110(或在處理器110上運行的應用)確定且使用圖1所示頁表135進行處理的位址,而非使用資料在SSD 120上實際儲存的實體位址(由FTL 335確定)。
在本揭露的一些實施例中,HDM 330可能夠直接對針對任何所支援記憶體位址的存取進行處理。但是,在本揭露的其他實施例中(例如,在可使用區塊尋址而非位元組尋址的例如SSD 120等儲存器裝置中),HDM 330可包括緩衝器(未在圖3中示出)。此緩衝器可為例如SSD 120內的DRAM儲存器。當加載請求或儲存請求被發送至SSD 120時,HDM 330可試圖自緩衝器存取資料。若資料當前不處於緩衝器中,則SSD 120可向快閃記憶體晶片325-1至325-8提交任何未完成的儲存請求,且然後可將來自快閃記憶體晶片325-1至325-8的新資料區段加載至緩衝器中。
緩衝器的大小可為SSD 120所供應的儲存器的任何期望部分。舉例而言,緩衝器可為被用作異質記憶體的SSD 120所供應的儲存器的1/10:若SSD 120支援異質記憶體的共16吉位元組的儲存器,則緩衝器的大小可為1.6吉位元組。若DRAM用於緩衝器,本揭露的此類實施例可在支援位元組尋址與用作緩衝器的DRAM的成本之間提供平衡。緩衝器亦可為任何種類的揮發性記憶體或非揮發性記憶體。以下參照圖6進一步論述HDM 330。
FTL 335可對LBA或其他邏輯ID(由圖1所示處理器110使用)與PBA或其他實體位址的轉譯進行操作,其中資料儲存於快閃晶片325-1至325-8中。FTL 335亦可負責將資料自一個PBA重新定位至另一PBA,此可在實行垃圾收集及/或磨耗均衡時進行。以下參照圖4至圖6進一步論述FTL 335。
SSD控制器315亦可包括處理器340。處理器340可為SSD 120的本地處理器,其可自SSD 120內供應一些計算能力。處理器340是可選的,如虛線邊框所示。
若包括處理器340,則處理器340可包括快取345。快取345可以與傳統快取相似的方式進行操作,進而提供更接近處理器340(且潛在地快於處理器340)的儲存器。但若快取345用於儲存亦儲存於快閃記憶體晶片325-1至325-8中的資訊,則此會產生潛在問題。若快取345中的資料被更新但未被立即再新,則可能會出現如下情況:經由HDM 330存取的快閃記憶體晶片325-1至325-8(當前被進行快取)中的資料相對於快取345中儲存的值可能是陳舊的。由於圖1所示負載平衡常駐程式145可對快閃記憶體晶片325-1至325-8進行存取但不對快取345進行存取,因此圖1所示負載平衡常駐程式145可在其計算中使用陳舊資料。此問題的解決方案可為使經由HDM 330存取的資料不可快取(即,經由HDM 330存取的資料可不儲存於快取345中)或者確保對快取345中的資料的任何更新被自動再新至快閃記憶體晶片325-1至325-8。
最後,SSD控制器315亦可包括中斷邏輯350。在本揭露的一些實施例中,圖1所示負載平衡常駐程式145可不對HDM 330進行存取,且因此可向SSD 120查詢(或輪詢)其當前資訊而非試圖經由HDM 330存取所述資訊。然後中斷邏輯350可藉由例如使圖1所示負載平衡常駐程式145中斷來向圖1所示負載平衡常駐程式145提供所請求的資訊。中斷邏輯350可被實施為硬體電路或軟體(例如,在處理器340上運行)。中斷邏輯350是可選的,如虛線邊框所示。應注意,中斷邏輯350可使用相同的中斷或不同的中斷來向圖3所示負載平衡常駐程式145通知各種資訊,如以下參照圖6所論述。
圖4示出根據本揭露實施例的應用、圖1所示記憶體115及圖1所示儲存器裝置120之間的交互的高階視圖。在圖4中,應用405可向記憶體115發出加載請求或儲存請求及/或向儲存器裝置120發出讀取請求或寫入請求。加載請求或儲存請求可使用虛擬記憶體410中的虛擬記憶體位址。記憶體管理單元415(其可包括未在圖4中示出的轉譯緩衝器)可使用圖1所示頁表135(未在圖4中示出)來確定主機系統記憶體420中與應用405所使用的虛擬位址相關聯的實體位址。
可看出,主機系統記憶體420可被劃分成多個區段。在圖4中,主機系統記憶體420可包括主機記憶體位址425(其可為記憶體115內的位址)以及HDM位址430(其可為HDM 330內的位址)。(在包括多於一個用於對記憶體115進行擴展的儲存器裝置120的本揭露的實施例中,可存在與每一儲存器裝置相關聯的HDM位址範圍。出於理解的目的,圖4僅示出一個儲存器裝置120且僅示出一個HDM位址範圍430。)
對於主機記憶體位址425中的實體位址,記憶體管理單元415可藉由記憶體匯流排向記憶體115發出加載請求或儲存請求。對於HDM位址430中的實體位址,記憶體管理單元415可使用例如快取同調互連協定(例如CXL.mem協定)發出加載請求或儲存請求。儲存器裝置120可在記憶體介面435處接收此種加載儲存請求。然後可使用HDM 330自圖3所示快閃記憶體晶片325-1至325-8存取資料。應注意,HDM 330可對LBA 440中的一些或全部LBA 440(作為由記憶體管理單元415確定的實體位址)進行存取。然後該些LBA 440可由快閃轉譯層335映射至PBA 445。
在圖4中,應用405亦被示出為經由裝置驅動器130向儲存器裝置120發出讀取請求或寫入請求。可藉由連接至儲存器裝置120的適當匯流排(例如快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)匯流排)將該些讀取請求或寫入請求自裝置驅動器130發送至儲存器裝置120。該些讀取請求或寫入請求可由主機介面450接收,主機介面450可為例如快速非揮發性記憶體(Non-Volatile Memory Express,NVMe)介面。然後儲存器裝置120可確定在讀取請求或寫入請求中正在被存取的LBA 440中的LBA。然後該些LBA可由快閃轉譯層335映射至PBA 445。應注意,若儲存器裝置120支援經由記憶體介面435及主機介面450二者的存取,則儲存器裝置120可啟用多種模式來對相同的資料進行存取。在本揭露的一些實施例中,此可被阻止:即,可經由記憶體介面435而使用加載請求或儲存請求來存取特定LBA或者經由主機介面450而使用讀取請求或寫入請求來存取特定LBA,但不同時藉由所述兩種方法來存取特定LBA。
圖5示出根據本揭露實施例的圖3所示FTL 335中的邏輯至實體位址表的更新。在圖5中,圖3所示SSD 120可接收儲存請求505。儲存請求505可包括欲寫入的記憶體頁的位址(就圖1所示處理器110進行考量來召用(recall)記憶體頁,儲存請求正在存取圖1所示記憶體115:只是圖1所示儲存器裝置120正被用於對圖1所示記憶體115進行擴展)以及資料本身。為避免混淆「頁」是指記憶體的頁還是圖3所示快閃記憶體325中的區塊中的頁,對「頁」(不具有修飾語)的引用一般可被理解為是指圖3所示快閃記憶體325中的區塊中的頁,且對「記憶體頁」的引用一般可被理解為是指記憶體中的頁(無論是在圖1所示記憶體115內還是在經擴展記憶體內)。
如以上所論述,例如圖3所示SSD 120等SSD通常不容許資料被就地重寫。相反,可使舊資料無效化且將新資料寫入至圖3所示SSD 120中的新的實體區塊位址(PBA)。由於LBA(就圖3所示SSD 120進行考量)僅是對資料進行辨識的邏輯位址,因此儲存請求505中的記憶體頁的位址可被用作LBA。圖3所示FTL 335可包括LBA至PBA表510,LBA至PBA表510可對圖3所示SSD 120上實際儲存資料的實體區塊進行辨識。以此種方式,應用可根據需要常常將資料寫入至指定LBA:圖3所示SSD 120可簡單地對資料在LBA至PBA表510中所儲存的位置進行更新,且應用可不必對資料的實際實體位址進行處理。
在圖5的左側,可看到LBA至PBA表510。LBA至PBA表510可包括對應用所使用的LBA及實際儲存資料的PBA進行指定的各種對。舉例而言,LBA 515可被映射至PBA 520,進而指示由應用使用LBA 2辨識的資料可被儲存於PBA 3中。
一旦接收到儲存請求505,圖3所示FTL 335便可對LBA至PBA表510進行更新,如圖5的右側所示。可使用對儲存資料的新的PBA進行辨識的PBA 525替換PBA 520。
儘管圖5將LBA至PBA表510示出為包括三個表項(將三個LBA映射至三個PBA),然而本揭露的實施例可在LBA至PBA表510中包括任意數目(零或更多個)的表項。
圖6示出根據本揭露實施例的圖3所示HDM 330的一部分的細節。在圖6中,除了支援對圖3所示快閃記憶體晶片325-1至325-8中的資料的存取之外,HDM 330亦可儲存資訊,例如邏輯至實體更新計數605(其可被稱為更新計數605)及每頁寫入計數610-1至610-6(其可被統稱為寫入計數610)。更新計數605可對圖3所示SSD 120中任何資料已被更新的次數(或者至少自上次更新計數605被重設以來的次數)進行計數;寫入計數610可對每一相關聯的頁已被更新的次數(或者至少自上次寫入計數610被重設以來的次數)進行計數。應注意,更新計數605及寫入計數610可對與由圖1所示機器105發送的記憶體頁位址相關聯的資訊進行追蹤,而非由圖3所示SSD 120所使用的PBA進行追蹤(當資料在圖3所示SSD 120周圍移動時,PBA可發生改變,但由機器105所使用的記憶體頁位址可保持相同)。因此,在「每頁寫入計數」中對「頁」的引用可被理解為是指圖3所示SSD 120上的區塊中的記憶體頁而非實體頁。但是,在本揭露的一些實施例中,寫入計數610可與實際儲存資料的PBA相關聯而非與正在被存取的記憶體頁的位址相關聯。
每當接收到新的儲存請求(例如圖5所示儲存請求505)時,遞增邏輯615可對更新計數605及與正在被更新的記憶體頁相關聯的寫入計數610進行遞增。每一寫入計數610可與特定的記憶體頁相關聯(此種關聯未在圖6中示出):例如,每一寫入計數可與用作LBA的記憶體頁相關聯,所述LBA的次序與圖5所示LBA至PBA表510中所示的次序相同。因此,例如,當圖3所示SSD 120接收到圖5所示儲存請求505時,可為圖3所示FTL 335的一部分的遞增邏輯615可對更新計數605及寫入計數610-2(與記憶體頁2相關聯的寫入計數)進行遞增。應注意,圖5所示LBA至PBA表510可儲存於HDM 330中及/或與寫入計數610進行組合,而非與包括兩個單獨的表的圖3所示SSD 120進行組合。
如以上所論述,由於SSD抹除區塊而非頁,有時可能會發生在被選擇進行垃圾收集的區塊中存在有效資料的情況,且此種資料可能會被程式化至SSD上的新區塊中。另外,如以上所論述,為保持快閃記憶體的胞元在每一胞元已經歷多少程式化/抹除循環方面相對平衡,有時可能會出現由於磨耗均衡而將資料移動至另一區塊的情況。在本揭露的一些實施例中,圖3所示FTL 335可對資料被寫入儲存請求(例如圖5所示儲存請求505)的次數進行計數,但可因垃圾收集及/或磨耗均衡而排除程式化操作。在本揭露的其他實施例中,圖3所示FTL 335亦可在更新計數605及寫入計數610中包括資料因垃圾收集及/或磨耗均衡而已被程式化的次數。如以上所論述,更新計數605及寫入計數610可與記憶體頁而非PBA相關聯,而垃圾收集及/或磨耗均衡可與PBA相關聯。但由於記憶體頁位址可被圖3所示SSD 120用作LBA且由於圖3所示FTL 335可被用於確定基於LBA的PBA及基於PBA的LBA二者,因此在本揭露的一些實施例中,更新計數605及寫入計數610可基於垃圾收集及/或磨耗均衡來對資料程式化進行追蹤。
若圖1所示儲存器裝置120既用於對圖1所示記憶體115進行擴展且亦容許圖4所示應用405進行直接存取,則圖1所示儲存器裝置120可接收儲存請求(例如儲存請求505)及寫入請求二者。所述兩種類型的請求之間的不同之處可在於,儲存請求可使用圖1所示儲存器裝置120作為圖1所示記憶體115的擴展(使用記憶體頁位址引用資料),而寫入請求可使用儲存器裝置120作為儲存器裝置(使用LBA引用資料)。在可使用儲存請求及寫入請求二者來存取特定的LBA的本揭露的實施例中,寫入請求是否被認為是對LBA處的資料的更新(所述更新可觸發更新計數605及寫入計數610的遞增)可取決於實施方案。在本揭露的一些實施例中,更新計數605及寫入計數610可僅因應於儲存請求而被更新(經由寫入請求的更新可被視為不對「記憶體」中的資料進行更新,即使LBA與「記憶體」中的資料的LBA相同)。在本揭露的其他實施例中,更新計數605及寫入計數610可因應於儲存請求及寫入請求二者而被更新(將在所述LBA處對資料的更新視為對記憶體中的資料進行更新,而不論請求所採用的路徑如何)。
由於圖3所示SSD 120可包括圖3所示快閃記憶體及FTL 335來對資料在圖3所示SSD 120上所儲存的實體位置進行追蹤且由於快閃記憶體可以不同的粒度水準被程式化及抹除,因此圖3所示SSD 120可進行對更新計數605及寫入計數610進行追蹤所需的大部分操作:所需的全部操作是為該些計數添加儲存器。由於例如資料可被就地更新,因此其他儲存器裝置(例如硬碟驅動機)可未必對此種資訊進行追蹤。但是,在本揭露的一些實施例中,此種其他儲存器裝置類型亦可對更新計數605及寫入計數610進行追蹤。
儘管圖6將HDM 330示出為包括六個寫入計數610-1至610-6,然而本揭露的實施例可在HDM 330中包括任意數目(零或更多個)的寫入計數610,其中對於被寫入至圖1所示儲存器裝置120的每一記憶體頁位址而言存在一個寫入計數610。
當更新計數605及寫入計數610儲存於HDM 330中時,圖1所示負載平衡常駐程式145可使用標準加載請求來存取更新計數605及寫入計數610。應注意,HDM 330的一部分(即,圖1所示儲存器裝置120的儲存器的一部分)可被預留來儲存更新計數605及寫入計數610。但是,如以上參照圖3所論述,在本揭露的一些實施例中,圖1所示儲存器裝置120可使用圖3所示中斷邏輯350來向圖1所示負載平衡常駐程式145提供各種資訊。舉例而言,圖1所示負載平衡常駐程式145可查詢寫入計數610的更新計數605。在使用中斷的本揭露的實施例中,圖1所示儲存器裝置120可使用圖3所示中斷邏輯350來向圖1所示負載平衡常駐程式145提供此種資訊。此種資訊可在同一時間提供或者可在單獨的時間提供。舉例而言,圖1所示儲存器裝置120可在同一時間提供更新計數605與寫入計數610二者或者可在不同的時間提供此種資訊(由於圖1所示負載平衡常駐程式145可僅對可自其遷移資料的繁忙儲存器裝置的寫入計數610感興趣)。若使用多個中斷來提供此種資訊,則中斷邏輯350可使用相同的中斷訊號或不同的中斷訊號來提供所述各種資訊。
圖7示出根據本揭露實施例的圖1所示頁表135的細節。如以上所論述,異質記憶體系統可在應用不知曉資料實際儲存於何處的情況下將資料儲存於圖1所示記憶體115或圖1所示儲存器裝置120中。應用可使用邏輯位址(被稱為「虛擬位址」),然後頁表135可將邏輯位址映射至儲存資料的「實體位址」。用語「實體位址」可被理解為是指當儲存資料時在異質記憶體系統中使用的記憶體位址。若資料儲存於圖1所示記憶體115中,則「實體位址」可為記憶體115中的實際(實體)位址。但在資料實際儲存於圖3所示SSD 120上的情況下,記憶體頁位址可被圖3所示SSD 120解釋為LBA。因此,「實體位址」亦應被理解為是指當資料儲存於圖3所示SSD 120或其他儲存器裝置上時的邏輯位址,所述其他儲存器裝置可在內部將邏輯位址映射至儲存器裝置中儲存資料的實體位置。因此,在頁表135的上下文中,依據儲存資料的裝置而定,用語「實體位址」可指實體位址或邏輯位址。
由於圖1所示處理器110可自異質記憶體系統中的任何位置存取資料且由於圖1所示處理器110可看到異質記憶體系統的整體,就如同圖1所示處理器110是圖1所示全部記憶體115一般,因此儲存於頁表中的實體位址可唯一地對儲存資料的裝置進行辨識。舉例而言,繼續進行以上參照圖3闡述的情況,頁表135可將圖2所示應用405所使用的虛擬位址映射至位址範圍0×0 0000 0000至0×5 FFFF FFFF中的任何實體位址。在使用對儲存於圖1所示記憶體115中的資料進行辨識的位址0×0 0000 0000至0×1 FFFF FFFF以及對儲存於圖3所示SSD 120上的資料進行辨識的位址0×2 0000 0000至0×5 FFFF FFFF的情況下,任何特定位址可與特定裝置相關聯(無論是圖1所示記憶體115還是圖1所示儲存器裝置120),且因此可對儲存資料的特定裝置進行辨識。以此種方式,特定的加載請求或儲存請求可被引導至適當的裝置(例如,藉由圖1所示記憶體控制器125)。但是,在本揭露的一些實施例中,頁表135亦可儲存對儲存資料的特定裝置進行辨識的資訊(由於可不需要對實體位址進行查驗來確定資料儲存於何處,因此此可加快資料存取)。
在圖7中,頁表135被示出為將三個虛擬位址映射至三個實體位址。虛擬位址705-1可映射至實體位址710-1,虛擬位址705-2可映射至實體位址710-2,且虛擬位址705-3可映射至實體位址710-3。虛擬位址705-1至705-3可被統稱為虛擬位址705,且實體位址710-1至710-3可被統稱為實體位址710。儘管圖7將頁表135示出為包括三個虛擬位址至實體位址的映射,然而本揭露的實施例可在頁表135中包括任意數目(零或更多個)的此種映射。
在本揭露的一些實施例中,由不同應用使用的虛擬位址可重疊。舉例而言,兩個不同的應用二者可皆使用虛擬位址0×1000。為避免混淆且避免多個應用對共用異質記憶體系統位址進行存取的風險,每一應用可具有其自身的頁表135,進而將由所述應用使用的虛擬位址映射至由圖1所示機器105使用的實體位址。以此種方式,兩個應用可各自使用虛擬位址0×1000,但一個應用的虛擬位址0×1000可映射至例如實體位址0×0 0000 0000,且另一應用的虛擬位址0×1000可映射至例如實體位址0×3 0000 0000。
當然,在本揭露的一些實施例中,應用可共享對特定實體位址的存取,以使得達成資料共享及/或應用間通訊。在此種情況下,每一應用的頁表135可將虛擬位址映射至共用實體位址:此種映射可來自相同的虛擬位址或不同的虛擬位址。但是,此種情況反映出有意的資料共享而非偶然的資料共享。
圖8示出根據本揭露實施例的圖1所示頁表135的實例性實施方案。在圖8中,示出四階頁表135。對於虛擬位址705而言,一些位元可用於確定各種表中的偏置:可藉由使用所有各種表及偏置來確定特定的實體位址。舉例而言,位元39至47可用作表805-1中的偏置,位元30至38可用作表805-2中的偏置,位元21至29可用作表805-3中的偏置,位元12至20可用作表805-4中的偏置,且位元0至11可用作表805-5中的偏置。可使用圖1所示處理器110中的暫存器810(其可被稱為CR3暫存器)或者藉由使用圖1所示處理器110中的暫存器810內的一些位元來對表805-1的基址(base address)進行存取。表805-1至805-4中的每一表項可對下一表的基址進行辨識,且表805-5中的表項可為將由頁表135返送的實際實體位址。以此種方式,頁表135可容許跨大幅度的圖1所示記憶體115(使用圖1所示儲存器裝置120進行擴展)對虛擬位址進行存取,而不必儲存來自每個可能的虛擬位址的映射(此可能需要大量的圖1所示記憶體115)。
儘管圖8示出使用具有使用九個位元偏置進行存取的52個位元表項的四階頁表的實施方案,然而本揭露的實施例可支援任何期望的頁表實施方案,可包括任意數目(包括一個)的層階(亦被稱為階級),其中表項包括任意數目(一或多個)的位元且使用任意數目(一或多個)的位元來確定表中的偏置。
圖9示出根據本揭露實施例的在異質記憶體系統中實行負載平衡的圖1所示負載平衡常駐程式145。在圖9中,負載平衡常駐程式145可對儲存器裝置120上的負載進行考量。舉例而言,假設針對儲存器裝置120-1的圖6所示更新計數605是13,且針對儲存器裝置120-2的圖6所示更新計數605是二。負載平衡常駐程式145可藉由自儲存器裝置120對圖3所示HDM 330進行存取或者藉由向儲存器裝置120輪詢此資訊來確定針對儲存器裝置120的圖6所示更新計數605。該些值將意指自對針對儲存器裝置120的圖6所示上次的更新計數605進行重設以來,應用已將更新寫入至儲存器裝置120-1上的資料13次,但應用僅將更新寫入至儲存器裝置120-2上的資料兩次。負載平衡常駐程式145可對圖6所示更新計數605進行存取且可根據圖6所示更新計數605來確定儲存器裝置120上的相對負載。
然後負載平衡常駐程式145可選擇兩個儲存器裝置,其中一個儲存器裝置可被辨識為「繁忙」儲存器裝置,且另一儲存器裝置可被辨識為「空閒」儲存器裝置。在本揭露的一些實施例中,尤其是在圖1所示系統105包括多於兩個儲存器裝置120的情況下,負載平衡常駐程式可選擇作為「最繁忙」儲存器裝置的一個儲存器裝置120(即,具有最高的圖6所示更新計數605的儲存器裝置)及作為「最空閒」儲存器裝置的另一儲存器裝置120(即,具有最低的圖6所示更新計數605的儲存器裝置);在本揭露的其他實施例中,負載平衡常駐程式145可選擇兩個儲存器裝置,而不必選擇「最繁忙」儲存器裝置或「最空閒」儲存器裝置,或者所述兩個儲存器裝置亦不必相對「繁忙」或「空閒」。
儘管儲存器裝置120可相對「繁忙」或「空閒」,然而這一事實並不單獨意指負載平衡常駐程式145需要自動在儲存器裝置之間遷移資料。舉例而言,假設儲存器裝置120-1具有為二的圖6所示相關聯更新計數605,且儲存器裝置120-2具有為一的圖6所示相關聯更新計數605。將頁自儲存器裝置120-1移動至儲存器裝置120-2將使哪一儲存器裝置是「繁忙」的發生變更,但可能不會改善圖1所示系統105的整體效能。因此,負載平衡常駐程式145可使用圖6所示更新計數605來判斷相對負載是否證明在儲存器裝置120之間遷移資料是合理的。負載平衡常駐程式145可使用任何期望的方法來判斷相對負載是否證明遷移是合理的。舉例而言,在選擇「繁忙」儲存器裝置及「空閒」儲存器裝置之後,負載平衡常駐程式145可確定針對儲存器裝置的圖6所示更新計數605之間的差且將所述差與臨限值進行比較。若圖6所示更新計數605之間的差超過某一臨限值,則負載平衡常駐程式145可開始進行在儲存器裝置120之間遷移一些資料的過程;否則,負載平衡常駐程式145可使儲存器裝置120保持原樣。此臨限值可為絕對臨限值(例如,在針對所選擇裝置的圖6所示更新計數605之間的差大於10時)或者是相對臨限值(例如,針對儲存器裝置120-1的圖6所示更新計數605較針對儲存器裝置120-2的圖6所示更新計數605大10%)。
一旦負載平衡常駐程式145已確定出儲存器裝置120-1相較於儲存器裝置120-2具有足夠大的負載以證明對資料進行遷移是合理的,然後負載平衡常駐程式145便可確定儲存器裝置120-1上的哪一(哪些)記憶體頁欲遷移至儲存器裝置120-2。負載平衡常駐程式145可使用任何期望的演算法來選擇記憶體頁。舉例而言,負載平衡常駐程式145可試圖對儲存器裝置120-1上的記憶體頁的集合進行辨識,若自儲存器裝置120-1移動至儲存器裝置120-2,則儲存器裝置120-1的圖6所示寫入計數610將使得儲存器裝置120-1與儲存器裝置120-2的更新計數605大致相等或接近相等。負載平衡常駐程式145可藉由自儲存器裝置120存取圖3所示HDM 330或者藉由向儲存器裝置120輪詢此資訊來確定針對儲存器裝置120的圖6所示寫入計數610。負載平衡常駐程式145可選擇例如記憶體頁的集合,所述記憶體頁的集合的圖6所示寫入計數610是用於進行遷移的儲存器裝置120-1與儲存器裝置120-2的圖6所示更新計數605之間的差的近似½。(由於遷移涉及自與儲存器裝置120-1相關聯的圖6所示更新計數605減去圖6所示那些寫入計數610以及將圖6所示那些寫入計數610加至與儲存器裝置120-2相關聯的圖6所示更新計數605二者,因此針對欲遷移的記憶體頁的圖6所示總寫入計數610可為圖6所示更新計數605之間的差的½。)
儘管本揭露的實施例可包括選擇用於在儲存器裝置120之間遷移的任何記憶體頁的集合,然而對記憶體頁進行遷移會花費一些時間,此可能會影響對儲存器裝置120-2的其他請求(尤其是其他寫入請求)。因此,在本揭露的一些實施例中,記憶體頁的最小集合可在儲存器裝置120之間遷移。為保持被選擇用於進行遷移的記憶體頁的數目盡可能小,可選擇具有最大的圖6所示寫入計數610的記憶體頁。舉例而言,圖5所示記憶體頁515可與圖6所示寫入計數610-2相關聯,圖6所示寫入計數610-2可為儲存於儲存器裝置120-1上的記憶體頁的最大寫入計數:僅遷移一個記憶體頁可相較於遷移具有圖6所示寫入計數610-3、610-4及610-6的記憶體頁花費更少的時間,寫入計數610-3、610-4及610-6總體上具有較圖6所示寫入計數610-2低的寫入計數。因此,如圖9中所示,負載平衡常駐程式145可指示將記憶體頁905自儲存器裝置120-1遷移至儲存器裝置120-2,此可在對儲存器裝置120上的負載進行平衡與使欲在儲存器裝置120之間遷移的記憶體頁的數目最小化之間取得平衡。
但是,若資料自儲存器裝置120-1遷移至儲存器裝置120-2且若頁表135將應用所使用的虛擬位址映射至資料的「實體位址」,則在記憶體頁905自儲存器裝置120-1遷移至儲存器裝置120-2之後,頁表135中的資訊可能是過時的。舉例而言,對如下情況進行考量:其中記憶體位址0×0 0000 0000至0×1 FFFF FFFF對儲存於圖1所示記憶體115中的資料進行辨識,位址0×2 0000 0000至0×3 FFFF FFFF對儲存於儲存器裝置120-1上的資料進行辨識,且位址0×4 0000 0000至0×5 FFFF FFFF對儲存於儲存器裝置120-2上的資料進行辨識。若在不對頁表135中的實體位址進行更新的情況下將記憶體頁905自儲存器裝置120-1遷移至儲存器裝置120-2,則記憶體位址與裝置之間的關係可能會被破壞。存在用於解決此問題的至少兩種解決方案:可對記憶體頁位址進行更新以反映異質記憶體系統中儲存資料的新位置或者頁表135可將圖7所示虛擬位址705映射至圖7所示實體位址710以及實際儲存資料的裝置(圖1所示記憶體115、儲存器裝置120-1或儲存器裝置120-2)的辨識符。
由於資料正在異質記憶體系統內自一個記憶體頁遷移至另一記憶體頁,因此對頁表135中虛擬位址被映射至的實體位址進行更新是合理的。因此,為對能夠存取其資料的應用進行支援,負載平衡常駐程式145可對頁表135中的頁表表項910進行更新以反映儲存資料的新位置。舉例而言,儘管圖7所示實體位址710-2指示與圖7所示虛擬位址705-2相關聯的資料先前與記憶體頁位址五相關聯,然而在遷移之後,可對頁表910進行更新以反映記憶體頁位址現在是15。但是,在異質記憶體系統中的任何裝置(圖1所示記憶體115、儲存器裝置120-1或儲存器裝置120-2)可儲存具有任何記憶體頁位址的資料的本揭露的實施例中,頁表135不僅可反映記憶體頁位址,而且亦可對儲存資料的裝置(在圖1中象徵性地示出為鏈路140)進行辨識。
在以上的論述中,負載平衡常駐程式145被闡述為在儲存器裝置120之間遷移資料。由於負載平衡常駐程式120可著重於對儲存器裝置120的負載進行平衡,因此此為合理的。但是,本揭露的實施例亦可考量圖1所示記憶體115上的負載,且負載平衡常駐程式145亦可對圖1所示記憶體115與儲存器裝置120之間的資料遷移進行佈置(在任一方向上:將資料移動至圖1所示記憶體115或者自圖1所示記憶體115移動資料)。負載平衡常駐程式145可使用其他臨限值來判斷資料是否足夠熱(即,足夠頻繁地被存取)以證明將資料自儲存器裝置120移動至圖1所示記憶體115是合理的,或者判斷資料是否足夠冷(即,足夠不頻繁地被存取)以證明將資料自圖1所示記憶體115移動至儲存器裝置120是合理的。負載平衡常駐程式145亦可基於所考量的裝置使用不同的臨限值。舉例而言,用於判斷是否將資料自SSD遷移至硬碟驅動機(或記憶體)的臨限值可不同於用於將資料自硬碟驅動機(或記憶體)遷移至SSD的臨限值。或者,臨限值可部分地基於裝置的特性。舉例而言,較高的臨限值可與可相較於其他裝置更快地處理請求的裝置相關聯,且較低的臨限值可與可相較於其他裝置更慢地處理請求的裝置相關聯。
以上論述亦將負載平衡常駐程式145闡述為著重於向儲存器裝置120發出的寫入請求。對於例如SSD等儲存器裝置而言,在寫入請求可相較於讀取請求花費更長時間的情況下,對寫入請求負載進行平衡可為合理的。但是,在本揭露的一些實施例中,負載平衡常駐程式145亦可考慮由讀取請求施加的負載(或者可僅著重於由讀取請求施加的負載)。舉例而言,在資料相對靜態的系統中,讀取請求可占主導地位。負載平衡常駐程式145可試圖以達成大致相等數目的讀取操作的方式跨儲存器裝置120分佈資料,此可改善整體效能。
最後,以上論述假設儲存器裝置120具有大致等效的效能。亦即,儲存器裝置120-1寫入資料所需的時間量可預期與儲存器裝置120-2寫入資料所需的時間量大致相同,且讀取資料是相似的。若儲存器裝置120的效能可發生變化,則負載平衡常駐程式145可考慮儲存器裝置120施行儲存器裝置120的操作所需的時間。舉例而言,假設儲存器裝置120-1平均花費100微秒(microsecond,μs)來對寫入請求作出響應,且儲存器裝置120-2平均花費200微秒來對寫入請求作出響應。若儲存器裝置120-1已處理了13個寫入請求(基於圖6所示更新計數605),則儲存器裝置120-1已花費近似1300微秒(1.3毫秒(millisecond,ms))來對寫入請求進行處理。若儲存器裝置120-2在相同的間隔內僅必須對兩個寫入請求進行處置,則儲存器裝置120-2已花費近似400微秒來對寫入請求進行處理,且將一些資料自儲存器裝置120-1遷移至儲存器裝置120-2可為有利的,即使儲存器裝置120-2可具有較慢的寫入請求響應時間。但是,若儲存器裝置120-2在所述間隔內必須對七個寫入請求進行處置,則儲存器裝置120-2已花費近似1400微秒(1.4毫秒)來對寫入請求進行處理:相較於儲存器裝置120-1已花費更多的時間量來對寫入請求進行處理,即使儲存器裝置120-1已相較於儲存器裝置120-2對更多的寫入請求進行處理。在此種情況下,將資料自儲存器裝置120-1遷移至儲存器裝置120-2實際上可能會使效能劣化,而非增強效能。因此,為了在使用不同效能水準的儲存器裝置的系統中進行操作,對儲存器裝置120已花費於對寫入請求進行處理的時間量進行估測可提供相較於圖6所示更新計數605而言更佳的分析。以相似的方式,讀取效能可發生變化,此亦可由負載平衡常駐程式145來進行考量。
負載平衡常駐程式145可在圖3所示HDM 330中週期性地對針對儲存器裝置120的圖6所示更新計數605及/或圖6所示寫入計數610進行重設。舉例而言,在負載平衡常駐程式145已對圖1所示系統105中的資料進行遷移之後,負載平衡常駐程式145可在圖3所示HDM 330中對針對儲存器裝置120的圖6所示更新計數605及/或圖6所示寫入計數610進行重設,使得負載平衡常駐程式145下一次判斷是否在儲存器裝置120之間遷移資料時,基於對先前資料遷移之後的圖6所示更新計數605及圖6所示寫入計數610的分析來進行所述判斷。若負載平衡常駐程式145可對圖3所示HDM 330進行存取,則負載平衡常駐程式145可對圖6所示更新計數605及/或圖6所示寫入計數610進行重設;否則,負載平衡常駐程式145可請求儲存器裝置120在圖3所示HDM 330中對圖6所示更新計數605及/或圖6所示寫入計數610進行重設。
亦應注意,有時應用可不再使用特定資料且可自記憶體釋放特定資料。由於所述資料在將來不會被使用,因此與所述位址相關聯的寫入計數可被立即重設。另外,由於由圖6所示更新計數605表示的負載可考慮對已自記憶體釋放的資料的寫入,因此對於已自記憶體釋放的相關聯記憶體頁而言,可使圖6所示更新計數605減少圖6所示寫入計數610的值。以此種方式,異質記憶體系統可避免儲存器裝置120上的可能不反映未來負載的負載視圖。
儘管圖9示出負載平衡常駐程式145將一個記憶體頁905自儲存器裝置120-1遷移至儲存器裝置120-2,然而本揭露的實施例可支援將任意數目(一或多個)的頁自儲存器裝置120-1遷移至儲存器裝置120-2。另外,若儲存器裝置120-1的負載與儲存器裝置120-2的負載足夠接近(在臨限值內),則負載平衡常駐程式145可確定當前不需要進行資料遷移。
圖10示出根據本揭露實施例的圖1所示儲存器裝置120的一些部分。在圖10中,儲存器裝置120可包括頁1005-1至1005-8。如以上所論述,頁1005-1至1005-8可被組織成區塊,所述區塊轉而可被組織成超區塊。
但是,除了此種組織之外,儲存器裝置120的不同部分可被指配至不同的用途。舉例而言,頁1005-1至1005-8可被組織成兩個部分1005及1010。部分1005可與如上所述的異質記憶體系統一起使用。部分1010可由應用按照正常的儲存器存取來進行存取。亦即,應用可發出讀取請求或寫入請求來對儲存於部分1010中的資料進行存取,而非發出似乎可能被引導至圖1所示記憶體115的加載請求或儲存請求。儘管圖10將部分1005與部分1010示出為不具有重疊,然而在本揭露的一些實施例中,部分1005與部分1010可重疊,使得應用能夠使用加載/儲存請求及讀取/寫入請求二者來對該些重疊頁中的資料進行存取。亦即,應用可使用圖4所示主機介面450在該些重疊頁中寫入資料且可使用圖4所示記憶體介面435及HDM 330讀取所述資料,或反之亦然。
儘管以上說明著重於以頁為單位的頁1005-1至1005-8,然而本揭露的實施例可將其他單位(例如區塊或超區塊)組織成部分1005及1010。另外,儲存器裝置120可包括任意數目(一或多個)的部分,其中所述部分可不重疊、所述部分中的一些部分或全部部分可不同程度地重疊。
圖11示出根據本揭露實施例的圖1所示負載平衡常駐程式145的細節。負載平衡常駐程式145可包括存取邏輯1105、遷移邏輯1110、頁表更新邏輯1115及重設邏輯1120。存取邏輯1105可用於自圖1所示儲存器裝置120的圖3所示HDM 330讀取資料。遷移邏輯1110可指示圖1所示儲存器裝置120按照負載平衡常駐程式145的引導對圖9所示記憶體頁905進行遷移。當例如圖9所示記憶體頁905等資料自圖1所示儲存器裝置120-1遷移至圖1所示儲存器裝置120-2時,頁表更新邏輯1115可對圖1所示頁表135進行更新。重設邏輯1120可用於對圖1所示儲存器裝置120的圖3所示HDM 330中的資料進行重設。
如以上參照圖9所論述,在本揭露的一些實施例中,負載平衡常駐程式145可向圖1所示儲存器裝置120輪詢圖3所示HDM 330中的資訊而非直接存取此種資料。在本揭露的此類實施例中,負載平衡常駐程式145可包括輪詢器1125,輪詢器1125可向儲存器裝置120輪詢資訊。
圖12示出根據本揭露實施例的在圖1所示系統中實行負載平衡的過程的流程圖。在圖12中,在方塊1205處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-1進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示更新計數605進行存取,以對圖1所示儲存器裝置120-1進行辨識。在方塊1210處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-2進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示更新計數605進行存取,以對圖1所示儲存器裝置120-2進行辨識。在方塊1215處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-1上的圖9所示記憶體頁905進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示寫入計數610進行存取,以對圖9所示記憶體頁905進行辨識。最後,在方塊1220處,圖1所示負載平衡常駐程式145可發起圖9所示記憶體頁905自圖1所示儲存器裝置120-1至圖2所示儲存器裝置120-2的遷移。圖3所示負載平衡常駐程式145可使用圖11所示遷移邏輯1110來實行此遷移。
圖13A至圖13B示出根據本揭露實施例的在圖1所示系統中實行負載平衡的實例性過程的替代流程圖。圖13A至圖13B相似於圖12,但更具一般性。在圖13A中,在方塊1305處,圖1所示儲存器裝置120可接收對圖9所示記憶體頁905的圖5所示儲存請求505。在方塊1310處,作為施行圖5所示儲存請求505的一部分,圖6所示遞增邏輯615可對圖6所示更新計數605進行遞增,且在方塊1315處,圖6所示遞增邏輯615可針對正在被更新的記憶體頁對圖6所示寫入計數610進行遞增。
在方塊1205處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-1進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示更新計數605進行存取,以對圖1所示儲存器裝置120-1進行辨識。在方塊1210處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-2進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示更新計數605進行存取,以對圖1所示儲存器裝置120-2進行辨識。在方塊1215處,圖1所示負載平衡常駐程式145可對圖1所示儲存器裝置120-1上的圖9所示記憶體頁905進行辨識。圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來對圖6所示寫入計數610進行存取,以對圖9所示記憶體頁905進行辨識。
在方塊1220(圖13B)處,圖1所示負載平衡常駐程式145可發起圖9所示記憶體頁905自圖1所示儲存器裝置120-1至圖2所示儲存器裝置120-2的遷移。圖3所示負載平衡常駐程式145可使用圖11所示遷移邏輯1110來實行此遷移。在方塊1320處,圖1所示負載平衡常駐程式145可對圖1所示頁表135進行更新,以反映圖9所示記憶體頁905自圖1所示儲存器裝置120-1至圖1所示儲存器裝置120-2的遷移。圖1所示負載平衡常駐程式145可使用圖11所示頁表更新邏輯1115來實行圖1所示頁表135的更新。
在方塊1325處,圖1所示負載平衡常駐程式145可在圖3所示HDM 330中針對儲存器裝置120-1對圖6所示更新計數605進行重設。在方塊1330處,圖1所示負載平衡常駐程式145可在圖3所示HDM 330中針對儲存器裝置120-2對圖6所示更新計數605進行重設。最後,在方塊1335處,圖1所示負載平衡常駐程式145可針對圖1所示儲存器裝置120-1中的圖9所示記憶體頁905對圖6所示寫入計數610進行重設。更一般而言,在方塊1335處,圖1所示負載平衡常駐程式145可在圖3所示HDM 330中針對圖1所示儲存器裝置120-1中的所有記憶體頁對圖6所示寫入計數610進行重設且在圖3所示HDM 330中針對圖1所示儲存器裝置120-2中的所有記憶體頁對圖6所示所有寫入計數610進行重設。負載平衡常駐程式145可使用重設邏輯1120來實行方塊1325、1330及1335中闡述的重設。
圖14示出根據本揭露實施例的圖1所示負載平衡常駐程式145在圖1所示系統中對頁可在其之間遷移的圖1所示儲存器裝置120進行辨識的實例性過程的流程圖。在圖14中,在方塊1405處,圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來自圖3所示HDM 330存取圖1所示儲存器裝置120的圖6所示更新計數605。對於圖1所示每一儲存器裝置120,在方塊1410處,圖1所示負載平衡常駐程式145可對圖6所示相關聯更新計數605進行考量。若圖1所示儲存器裝置120的圖6所示更新計數605是最大值(即,跨圖1所示儲存器裝置120的最高更新計數(更一般而言,若儲存器裝置120的圖6所示更新計數605高於圖1所示某一其他儲存器裝置120的圖6所示更新計數605)),則在方塊1415處,負載平衡常駐程式145可選擇圖1所示儲存器裝置120作為資料遷移的源儲存器裝置。若圖1所示儲存器裝置120的圖6所示更新計數605是最小值(即,跨圖1所示儲存器裝置120的最低更新計數(更一般而言,若儲存器裝置120的圖6所示更新計數605低於圖1所示某一其他儲存器裝置120的圖6所示更新計數605)),則在方塊1415處,負載平衡常駐程式145可選擇圖1所示儲存器裝置120作為資料遷移的目的地儲存器裝置。對於其圖6所示相關聯更新計數605不夠高或不夠低以無法被認為是資料遷移的源儲存器裝置或目的地儲存器裝置的圖1所示儲存器裝置120,圖1所示儲存器裝置120可被圖1所示負載平衡常駐程式145通過。
圖15示出根據本揭露實施例的圖1所示負載平衡常駐程式145在圖1所示系統105中選擇欲進行遷移的圖9所示記憶體頁905的實例性過程的流程圖。在圖15中,在方塊1505處,圖1所示負載平衡常駐程式145可使用圖11所示存取邏輯1105來自圖3所示HDM 330存取源儲存器裝置的圖6所示寫入計數610。在方塊1510處,圖1所示負載平衡常駐程式145可判斷特定記憶體頁的圖6所示寫入計數610是否具有最大值(即,圖1所示儲存器裝置120上的頁的最高寫入計數(更一般而言,圖1所示負載平衡常駐程式145可判斷特定記憶體頁的圖6所示寫入計數610是否高於圖1所示儲存器裝置120上的其他記憶體頁的圖6所示寫入計數610)),然後在方塊1515處,圖1所示負載平衡常駐程式145可選擇圖9所示相關聯的記憶體頁905來自圖1所示儲存器裝置120-1遷移至圖1所示儲存器裝置120-2。
圖16示出根據本揭露實施例的圖1所示負載平衡常駐程式145在圖1所示系統105中對用於進行遷移的圖1所示儲存器裝置120或圖9所示記憶體頁905進行辨識的替代過程的流程圖。在圖16中,在方塊1605處,圖1所示負載平衡常駐程式145可向圖1所示儲存器裝置120輪詢圖1所示儲存器裝置120的圖6所示更新計數605及/或圖1所示儲存器裝置120的圖6所示寫入計數610。在方塊1610處,圖1所示負載平衡常駐程式145可接收源自圖1所示儲存器裝置120的中斷,所述中斷具有針對圖1所示儲存器裝置120的圖6所示更新計數605及/或圖6所示寫入計數610。
圖17示出根據本揭露實施例的在圖1所示系統105中進行的圖9所示記憶體頁905的遷移的過程的流程圖。在圖17中,在方塊1705處,圖1所示負載平衡常駐程式145可請求自圖1所示儲存器裝置120-1讀取圖9所示記憶體頁905。在方塊1710處,圖1所示負載平衡常駐程式145可請求將圖9所示記憶體頁905寫入至圖1所示儲存器裝置120-2。最後,在方塊1715處,圖1所示負載平衡常駐程式145可請求自圖1所示儲存器裝置120抹除圖9所示記憶體頁905。應注意,方塊1715在技術上不是必需的,此乃因經擴展記憶體內的頁的遷移暗示所述頁的原始記憶體位址可被釋放,此將意指圖1所示儲存器裝置120上的頁可被抹除。
在圖12至圖17中,示出本揭露的一些實施例。但熟習此項技術者將認識到,藉由改變方塊的次序、藉由省略方塊或者藉由包括圖式中未示出的鏈路,本揭露的其他實施例亦是可能的。無論是否明確闡述,流程圖的所有此種變型皆被視為本揭露的實施例。
本揭露的實施例引入一種新的機制,所述機制使用圖1所示固態驅動機(SSD)120中的間接機制來對熱頁進行偵測且當SSD用於經擴展記憶體時,基於頁的熱度來實行裝置發起的資料遷移。本揭露的實施例可緩解當使用具有記憶體的SSD時的耐久性問題,其中精細粒度資料更新可能會加速媒體磨耗。
如實施例中所揭露的,在圖1所示異質記憶體系統105中,熱頁可自一種系統記憶體遷移至另一系統記憶體,以使負載平衡且達成更佳的效能。在本文中的實施例中,非揮發性記憶體可被暴露為使用快取同調互連協定的系統記憶體。此種非揮發性記憶體裝置的快閃轉譯層(FTL)可對邏輯頁更新及內部邏輯區塊位址(LBA)至實體區塊位址(PBA)映射更新的數目進行監視。
本揭露的實施例可藉由對圖1所示SSD 120中的LBA至PBA映射改變進行追蹤來對更新的次數進行計數。本揭露的一些實施例可將更新計數儲存於主機管理裝置記憶體(HDM)中,主機及裝置二者可對所述HDM進行存取。本揭露的一些實施例可預留HDM來記錄每一頁的寫入計數。本揭露的一些實施例的特徵可在於圖1所示負載平衡常駐程式145藉由對HDM中的更新計數進行檢查來週期性地檢查每一裝置的負載。在本揭露的一些實施例中,負載平衡常駐程式可在主機側實行自最繁忙裝置至最空閒裝置的頁遷移(例如,使用CXL.mem)。
本揭露的實施例的優點可包括增加非揮發性記憶體(例如SSD、相變記憶體(Phase-Change Memory,PCM)及具有有限寫入耐久性的其他非揮發性隨機存取記憶體(NVRAM))的壽命。此外,本揭露的實施例可藉由減少垃圾收集運行的次數來改善SSD的整體效能。
本揭露的實施例可包括用於負載平衡的頁遷移。在本揭露的一些實施例中,此種頁遷移可將頁自非揮發性記憶體遷移至另一非揮發性記憶體以進行負載平衡。在本揭露的一些實施例中,為找出最繁忙裝置及最空閒裝置,圖3所示FTL 335可在特定時間段內對總寫入次數進行計數。
本揭露的實施例可包括用於CXL SSD的負載平衡的圖1所示系統105,CXL SSD經由CXL.mem向主機系統暴露空間。
本揭露的實施例可包括圖3所示FTL 335,圖3所示FTL 335能夠對LBA至PBA映射更新的數目進行監視以找出熱頁。
本揭露的實施例可包括將映射更新計數儲存於圖3所示HDM 330中,圖3所示HDM 330可自主機及裝置二者存取。
本揭露的實施例可包括用於負載平衡的頁遷移且可更包括在特定時間段內對總寫入次數進行更新的圖3所示FTL 335。本揭露的一些實施例亦可包括週期性地對總寫入計數進行檢查及重設的圖3所示負載平衡常駐程式145。此外,本揭露的一些實施例可包括自最繁忙裝置遷移至最空閒裝置的熱頁。
本揭露的實施例容許負載平衡常駐程式確定關於對異質記憶體系統中的儲存器裝置的寫入的資訊。基於此資訊(所述資訊可包括指示對儲存器裝置的總寫入次數的更新計數),負載平衡常駐程式可基於每一儲存器裝置的相對寫入次數來選擇繁忙儲存器裝置及空閒儲存器裝置。負載平衡常駐程式亦可使用其他資訊(例如繁忙儲存器裝置中每一頁的總寫入次數)來選擇一或多個頁以遷移至空閒儲存器裝置。負載平衡常駐程式可將頁自繁忙儲存器裝置遷移至空閒儲存器。然後負載平衡常駐程式可對主機系統中的資訊進行更新,以反映頁自繁忙儲存器裝置至空閒儲存器裝置的遷移。
以下論述旨在提供對可在其中實施本揭露的某些態樣的一或多個適合的機器的簡短總體說明。所述一或多個機器可至少部分地藉由以下來控制:來自例如鍵盤、滑鼠等傳統輸入裝置的輸入;以及自另一機器接收到的指令(directive)、與虛擬實境(virtual reality,VR)環境、生物統計回饋(biometric feedback)或其他輸入訊號的交互作用。本文中所使用的用語「機器」旨在廣泛地囊括單一機器、虛擬機器或由以通訊方式耦合的一起進行操作的機器、虛擬機器或裝置構成的系統。實例性機器包括:計算裝置,例如個人電腦、工作站、伺服器、可攜式電腦、手持式裝置、電話、平板電腦等;以及運輸裝置,例如私人或公共運輸(例如汽車、火車、計程車等)。
所述一或多個機器可包括嵌入式控制器,例如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、嵌入式電腦、智慧卡及類似裝置。所述一或多個機器可利用例如藉由網路介面、數據機或其他通訊性耦合達成的與一或多個遠程機器的一或多個連接。機器可以例如內部網路(Intranet)、網際網路、局域網路、廣域網路等實體及/或邏輯網路的方式進行互連。熟習此項技術者應理解,網路通訊可利用各種有線及/或無線短程或長程載波及協定,所述載波及協定包括射頻(radio frequency,RF)、衛星、微波、電氣及電子工程師學會(Institute of Electrical and Electronics Engineers,IEEE)802.11、藍芽®、光學的、紅外線的、纜線、雷射等。
可藉由參照或結合相關聯資料來闡述本揭露的實施例,所述相關聯資料包括當由機器存取時使得所述機器實行任務或對抽象資料類型或低階硬體上下文進行定義的功能、過程、資料結構、應用程式等。相關聯資料可儲存於例如揮發性記憶體及/或非揮發性記憶體(例如,RAM、ROM等)中,或儲存於包括硬驅動機、軟磁碟(floppy-disk)、光學儲存器、磁帶(tape)、快閃記憶體、記憶條(memory stick)、數位視訊碟、生物儲存器等的其他儲存器裝置及其相關聯儲存媒體中。相關聯資料可以封包、串列資料、並列資料、傳播訊號等形式經由包括實體網路及/或邏輯網路在內的傳輸環境而進行遞送,且可以壓縮或加密格式使用。相關聯資料可用於分佈式環境中,且可在本地及/或遠程儲存以供機器存取。
本揭露的實施例可包括有形非暫時性機器可讀取媒體,所述有形非暫時性機器可讀取媒體包括可由一或多個處理器執行的指令,所述指令包括用於實行如在本文中所述的本揭露的要素的指令。
上述方法的各種操作可藉由能夠實行所述操作的任何適合的手段(例如各種硬體及/或軟體組件、電路及/或模組)來實行。所述軟體可包括用於實施邏輯函數的可執行指令的有序列表,且可實施於任何「處理器可讀取媒體」中,以供由指令執行系統、設備或裝置(例如單核處理器或多核處理器或包含處理器的系統)使用或者與指令執行系統、設備或裝置結合使用。
結合本文中所揭露的實施例闡述的方法或演算法及功能的方塊或步驟可直接以硬體、以由處理器執行的軟體模組或以所述二者的組合來實施。若以軟體實施,則功能可作為一或多個指令或碼儲存於有形非暫時性電腦可讀取媒體上或者在有形非暫時性電腦可讀取媒體之上傳輸。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電性可程式化ROM(Electrically Programmable ROM,EPROM)、電性可抹除可程式化ROM(Electrically Erasable Programmable ROM,EEPROM)、暫存器、硬碟、可抽換式磁碟(removable disk)、光碟唯讀記憶體(Compact Disc Read Only Memory,CD ROM)或此項技術中已知的任何其他形式的儲存媒體中。
由於已參照所示實施例闡述及例示了本揭露的原理,因此將認識到,在不背離此種原理的條件下,所示實施例可在佈置及細節上作出潤飾,且可以任何所期望方式進行組合。並且,儘管前述論述著重於特定實施例,然而亦可預期存在其他配置。具體而言,即使在本文中使用例如「根據本揭露的實施例」或類似表述等表述,然而該些片語意在一般指代實施例可能性,且不旨在將本揭露限制於特定實施例配置。本文中所使用的該些用語可指組合至其他實施例中的相同或不同的實施例。
前述例示性實施例不應被視為限制其揭露內容。儘管已闡述幾個實施例,然而熟習此項技術者應易於理解,在不實質上背離本揭露的新穎教示內容及優點的條件下,可對該些實施例作出諸多潤飾。因此,所有此種潤飾皆旨在包含於如在申請專利範圍中所界定的本揭露的範圍內。
本揭露的實施例可擴展至以下聲明,但不限於此:
聲明1. 本揭露的實施例包括一種系統,所述系統包括:
處理器;
記憶體,連接至處理器;
第一儲存器裝置,連接至處理器,所述第一儲存器裝置包括第一儲存器部分,所述第一儲存器部分包括記憶體頁,所述第一儲存器部分用於對記憶體進行擴展;
第二儲存器裝置,連接至處理器,所述第二儲存器裝置包括第二儲存器部分,所述第二儲存器部分用於對記憶體進行擴展;以及
負載平衡常駐程式,至少部分地基於第一儲存器裝置的第一更新計數及第二儲存器裝置的第二更新計數將所述記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
聲明2. 本揭露的實施例包括根據聲明1的系統,其中負載平衡常駐程式包括遷移邏輯,所述遷移邏輯用於將記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
聲明3. 本揭露的實施例包括根據聲明1的系統,其中第一儲存器部分及第二儲存器部分經由快取同調互連協定對記憶體進行擴展。
聲明4. 本揭露的實施例包括根據聲明3的系統,其中快取同調互連協定包括快速計算鏈路(CXL)協定。
聲明5. 本揭露的實施例包括根據聲明3的系統,其中所述記憶體是自包括快閃記憶體、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、持久隨機存取記憶體、鐵電隨機存取記憶體(FRAM)或非揮發性隨機存取記憶體(NVRAM)的集合中提取。
聲明6. 本揭露的實施例包括根據聲明3的系統,其中:
第一儲存器裝置包括第一固態驅動機(SSD);且
第二儲存器裝置包括第二SSD。
聲明7. 本揭露的實施例包括根據聲明3的系統,其中負載平衡常駐程式包括可由處理器執行的軟體。
聲明8. 本揭露的實施例包括根據聲明3的系統,其中:
第一儲存器裝置包括用於儲存第一更新計數的第一主機管理裝置記憶體(HDM);且
第二儲存器裝置包括用於儲存第二更新計數的第二HDM。
聲明9. 本揭露的實施例包括根據聲明8的系統,其中第一更新計數是不可快取的。
聲明10. 本揭露的實施例包括根據聲明8的系統,其中第一儲存器裝置包括第二處理器,所述第二處理器包括用於對第一更新計數進行快取的快取,所述第二處理器使用快取同調互連協定來維持快取中的第一更新計數與第一HDM中的第一更新計數之間的同調。
聲明11. 本揭露的實施例包括根據聲明8的系統,其中負載平衡常駐程式包括存取邏輯,所述存取邏輯用於自第一HDM存取第一更新計數且自第二HDM存取第二更新計數。
聲明12. 本揭露的實施例包括根據聲明8的系統,其中負載平衡常駐程式包括重設邏輯,所述重設邏輯用於對第一HDM中的第一更新計數進行重設且對第二HDM中的第二更新計數進行重設。
聲明13. 本揭露的實施例包括根據聲明8的系統,其中第一HDM進一步儲存記憶體頁的寫入計數。
聲明14. 本揭露的實施例包括根據聲明13的系統,其中負載平衡常駐程式包括用於自第一HDM存取寫入計數的存取邏輯。
聲明15. 本揭露的實施例包括根據聲明3的系統,其中負載平衡常駐程式包括輪詢器,所述輪詢器用於向第一儲存器裝置輪詢第一更新計數且向第二儲存器裝置輪詢第二更新計數。
聲明16. 本揭露的實施例包括根據聲明3的系統,其中:
第一儲存器裝置包括用於使負載平衡常駐程式中斷以提供第一更新計數的第一中斷邏輯;且
第二儲存器裝置包括用於使負載平衡常駐程式中斷以提供第二更新計數的第二中斷邏輯。
聲明17. 本揭露的實施例包括根據聲明3的系統,其中負載平衡常駐程式被配置成至少部分地基於第一更新計數超過第二更新計數而將記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
聲明18. 本揭露的實施例包括根據聲明17的系統,其中負載平衡常駐程式被配置成至少部分地基於第一更新計數與第二更新計數之間的差超過臨限值而將記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
聲明19. 本揭露的實施例包括根據聲明18的系統,其中:
所述記憶體頁與寫入計數相關聯;
所述第一儲存器部分進一步儲存第二記憶體頁,所述第二記憶體頁與第二寫入計數相關聯;且
所述負載平衡常駐程式被配置成至少部分地基於第一更新計數與第二更新計數之間的差超過臨限值且寫入計數高於第二寫入計數而將記憶體頁自第一儲存器裝置的第一儲存器部分遷移至第二儲存器裝置的第二儲存器部分。
聲明20. 本揭露的實施例包括根據聲明3的系統,其中儲存器裝置包括遞增邏輯,所述遞增邏輯用於至少部分地基於正在被寫入至第一儲存器裝置的新資料來對第一更新計數進行遞增。
聲明21. 本揭露的實施例包括根據聲明20的系統,其中所述遞增邏輯被配置成至少部分地基於正在被寫入至所述記憶體頁的新資料來對與所述記憶體頁相關聯的寫入計數進行遞增。
聲明22. 本揭露的實施例包括根據聲明3的系統,其中:
第一儲存器部分包括第二記憶體頁;且
負載平衡常駐程式被配置成至少部分地基於第一儲存器裝置的第一更新計數及與第二記憶體頁相關聯的第二寫入計數超過臨限值而將第二記憶體頁自第一儲存器裝置的第一儲存器部分遷移至記憶體。
聲明23. 本揭露的實施例包括根據聲明3的系統,其中記憶體儲存第二記憶體頁及第二記憶體頁的第二寫入計數。
聲明24. 本揭露的實施例包括根據聲明23的系統,其中負載平衡常駐程式被配置成至少部分地基於第二寫入計數小於臨限值而將第二記憶體頁自記憶體遷移至第二儲存器裝置的第二儲存器部分。
聲明25. 本揭露的實施例包括根據聲明3的系統,其中:
第一儲存器裝置更包括第三儲存器部分,所述第三儲存器部分可由運行於處理器上的應用進行存取;且
第二儲存器裝置更包括第四儲存器部分,所述第四儲存器部分可由運行於處理器上的應用進行存取。
聲明26. 本揭露的實施例包括一種儲存器裝置,所述儲存器裝置包括:
儲存器,包括第一儲存器部分,所述第一儲存器部分包括記憶體頁;
控制器,用於對發送至儲存器裝置的加載請求或儲存請求中的至少一者進行處理;以及
遞增邏輯,用於對更新計數及寫入計數進行管理,所述更新計數對資料已被寫入至儲存器的第一次數進行辨識,所述寫入計數對資料已被寫入至記憶體頁的第二次數進行辨識,
其中所述儲存器對記憶體進行擴展。
聲明27. 本揭露的實施例包括根據聲明26的儲存器裝置,其中所述儲存器裝置支援快取同調互連協定。
聲明28. 本揭露的實施例包括根據聲明27的儲存器裝置,其中快取同調互連協定包括快速計算鏈路(CXL)協定。
聲明29. 本揭露的實施例包括根據聲明26的儲存器裝置,其中所述儲存器裝置包括固態驅動機(SSD)。
聲明30. 本揭露的實施例包括根據聲明29的儲存器裝置,其中SSD包括包含遞增邏輯的快閃轉譯層(FTL)。
聲明31. 本揭露的實施例包括根據聲明30的儲存器裝置,其中所述遞增邏輯被配置成忽視所述記憶體頁的垃圾收集。
聲明32. 本揭露的實施例包括根據聲明30的儲存器裝置,其中所述遞增邏輯被配置成忽視所述記憶體頁的磨耗均衡。
聲明33. 本揭露的實施例包括根據聲明26的儲存器裝置,所述儲存器裝置更包括用於儲存更新計數及寫入計數的HDM。
聲明34. 本揭露的實施例包括根據聲明33的儲存器裝置,其中更新計數及寫入計數是不可快取的。
聲明35. 本揭露的實施例包括根據聲明33的儲存器裝置,其中第一儲存器裝置包括處理器,所述處理器包括用於對更新計數進行快取的快取,所述處理器使用快取同調互連協定來維持快取中的更新計數與HDM中的更新計數之間的同調。
聲明36. 本揭露的實施例包括根據聲明26的儲存器裝置,其中所述儲存器裝置更包括可由運行於處理器上的應用進行存取的第二儲存器部分。
聲明37. 本揭露的實施例包括根據聲明26的儲存器裝置,所述儲存器裝置更包括用於使負載平衡常駐程式中斷以提供更新計數的中斷邏輯。
聲明38. 本揭露的實施例包括一種方法,所述方法包括:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識;
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識;
由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識;以及
將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置,
其中第一儲存器裝置及第二儲存器裝置對記憶體進行擴展。
聲明39. 本揭露的實施例包括根據聲明38的方法,其中第一儲存器裝置及第二儲存器裝置經由快取同調互連協定對記憶體進行擴展。
聲明40. 本揭露的實施例包括根據聲明39的方法,其中快取同調互連協定包括快速計算鏈路(CXL)協定。
聲明41. 本揭露的實施例包括根據聲明39的方法,其中:
第一儲存器裝置包括第一固態驅動機(SSD);且
第二儲存器裝置包括第二SSD。
聲明42. 本揭露的實施例包括根據聲明39的方法,其中:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識包括確定第一儲存器裝置的第一更新計數;且
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識包括確定第二儲存器裝置的第二更新計數。
聲明43. 本揭露的實施例包括根據聲明42的方法,其中:
確定第一儲存器裝置的第一更新計數包括自第一儲存器裝置的第一HDM存取第一更新計數;且
確定第二儲存器裝置的第二更新計數包括自第二儲存器裝置的第二HDM存取第二更新計數。
聲明44. 本揭露的實施例包括根據聲明42的方法,其中:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識更包括確定出第一更新計數大於第二更新計數;且
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識包括確定出第二更新計數小於第一更新計數。
聲明45. 本揭露的實施例包括根據聲明42的方法,其中:
確定第一儲存器裝置的第一更新計數包括:
向第一儲存器裝置輪詢第一更新計數;以及
自第一儲存器裝置接收第一更新計數;且
確定第二儲存器裝置的第二更新計數包括:
向第二儲存器裝置輪詢第二更新計數;以及
自第二儲存器裝置接收第二更新計數。
聲明46. 本揭露的實施例包括根據聲明42的方法,所述方法更包括:
在第一儲存器裝置處接收儲存請求;以及
至少部分地基於接收到所述儲存請求來對第一更新計數進行更新。
聲明47. 本揭露的實施例包括根據聲明46的方法,其中
在第一儲存器裝置處接收儲存請求包括在第一儲存器裝置處接收對記憶體頁進行更新的儲存請求;且
所述方法更包括對與第一儲存器裝置上的記憶體頁相關聯的寫入計數進行更新。
聲明48. 本揭露的實施例包括根據聲明42的方法,所述方法更包括:
由負載平衡常駐程式對第一儲存器裝置的第一更新計數進行重設;以及
由負載平衡常駐程式對第二儲存器裝置的第二更新計數進行重設。
聲明49. 本揭露的實施例包括根據聲明42的方法,所述方法更包括由負載平衡常駐程式對與第一儲存器裝置上的記憶體頁相關聯的寫入計數進行重設。
聲明50. 本揭露的實施例包括根據聲明39的方法,其中由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識包括由運行於處理器上的負載平衡常駐程式至少部分地基於記憶體頁的寫入計數來對儲存於第一儲存器裝置上的記憶體頁進行辨識。
聲明51. 本揭露的實施例包括根據聲明50的方法,其中由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識更包括:
確定記憶體頁的寫入計數;
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數;以及
至少部分地基於寫入計數大於第二寫入計數而對記憶體頁進行辨識。
聲明52. 本揭露的實施例包括根據聲明51的方法,其中:
確定記憶體頁的寫入計數包括自儲存器裝置的HDM存取寫入計數;且
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數包括自儲存器裝置的HDM存取第二寫入計數。
聲明53. 本揭露的實施例包括根據聲明51的方法,其中:
確定記憶體頁的寫入計數包括:
向第一儲存器裝置輪詢寫入計數;以及
自第一儲存器裝置接收寫入計數;且
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數包括:
向第一儲存器裝置輪詢第二寫入計數;以及
自第一儲存器裝置接收第二寫入計數。
聲明54. 本揭露的實施例包括根據聲明53的方法,其中:
自第一儲存器裝置接收寫入計數包括自第一儲存器裝置接收第一中斷,所述第一中斷包括寫入計數;且
自第一儲存器裝置接收第二寫入計數包括自第一儲存器裝置接收第二中斷,所述第二中斷包括第二寫入計數。
聲明55. 本揭露的實施例包括根據聲明39的方法,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括將所述記憶體頁自第一儲存器裝置遷移至記憶體。
聲明56. 本揭露的實施例包括根據聲明39的方法,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括將所述記憶體頁自記憶體遷移至第二儲存器裝置。
聲明57. 本揭露的實施例包括根據聲明39的方法,其中將記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括:
自第一儲存器裝置讀取記憶體頁;以及
將所述記憶體頁寫入至第二儲存器裝置。
聲明58. 本揭露的實施例包括根據聲明57的方法,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置更包括自第一儲存器裝置抹除所述記憶體頁。
聲明59. 本揭露的實施例包括根據聲明39的方法,其中將記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括至少部分地基於所述頁向第二儲存器裝置的遷移來對頁表進行更新。
聲明60. 本揭露的實施例包括根據聲明39的方法,其中第一儲存器裝置包括包含記憶體頁的第一儲存器部分。
聲明61. 本揭露的實施例包括根據聲明60的方法,其中第一儲存器裝置更包括第二儲存器部分,所述第二儲存器部分可由運行於處理器上的應用進行存取。
聲明62. 本揭露的實施例包括一種方法,所述方法包括:
在儲存器裝置處接收儲存請求;以及
至少部分地基於接收到儲存請求來對儲存器裝置的更新計數進行更新。
聲明63. 本揭露的實施例包括根據聲明62的方法,其中
在儲存器裝置處接收儲存請求包括在儲存器裝置處接收對記憶體頁進行更新的儲存請求;且
所述方法更包括對與儲存器裝置上的記憶體頁相關聯的寫入計數進行更新。
聲明64. 本揭露的實施例包括根據聲明62的方法,所述方法更包括:
在儲存器裝置處自負載平衡常駐程式接收對更新計數的輪詢;以及
將更新計數自儲存器裝置發送至負載平衡常駐程式。
聲明65. 本揭露的實施例包括根據聲明64的方法,其中將更新計數自儲存器裝置發送至負載平衡常駐程式包括自儲存器裝置向負載平衡常駐程式發送中斷,所述中斷包括更新計數。
聲明66. 本揭露的實施例包括根據聲明62的方法,所述方法更包括:
在儲存器裝置處自負載平衡常駐程式接收對寫入計數的輪詢;以及
將寫入計數自儲存器裝置發送至負載平衡常駐程式。
聲明67. 本揭露的實施例包括根據聲明66的方法,其中將寫入計數自儲存器裝置發送至負載平衡常駐程式包括自儲存器裝置向負載平衡常駐程式發送中斷,所述中斷包括寫入計數。
聲明68. 本揭露的實施例包括根據聲明62的方法,所述方法更包括:
在儲存器裝置處接收對更新計數進行重設的請求;以及
對儲存器裝置的更新計數進行重設。
聲明69. 本揭露的實施例包括根據聲明62的方法,所述方法更包括:
在儲存器裝置處接收對寫入計數進行重設的請求;以及
對儲存器裝置的寫入計數進行重設。
聲明70. 本揭露的實施例包括根據聲明62的方法,其中第一儲存器裝置包括包含記憶體頁的第一儲存器部分。
聲明71. 本揭露的實施例包括根據聲明70的方法,其中第一儲存器裝置更包括第二儲存器部分,所述第二儲存器部分可由運行於處理器上的應用進行存取。
聲明72. 本揭露的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的指令,所述指令在由機器執行時使得:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識;
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識;
由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識;以及
將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置。
聲明73. 本揭露的實施例包括根據聲明72的物品,其中第一儲存器裝置及第二儲存器裝置經由快取同調互連協定對記憶體進行擴展。
聲明74. 本揭露的實施例包括根據聲明73的物品,其中快取同調互連協定包括快速計算鏈路(CXL)協定。
聲明75. 本揭露的實施例包括根據聲明73的物品,其中:
第一儲存器裝置包括第一固態驅動機(SSD);且
第二儲存器裝置包括第二SSD。
聲明76. 本揭露的實施例包括根據聲明73的物品,其中:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識包括確定第一儲存器裝置的第一更新計數;且
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識包括確定第二儲存器裝置的第二更新計數。
聲明77. 本揭露的實施例包括根據聲明76的物品,其中:
確定第一儲存器裝置的第一更新計數包括自第一儲存器裝置的第一HDM存取第一更新計數;且
確定第二儲存器裝置的第二更新計數包括自第二儲存器裝置的第二HDM存取第二更新計數。
聲明78. 本揭露的實施例包括根據聲明76的物品,其中:
由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識更包括確定出第一更新計數大於第二更新計數;且
由運行於處理器上的負載平衡常駐程式對第二儲存器裝置進行辨識包括確定出第二更新計數小於第一更新計數。
聲明79. 本揭露的實施例包括根據聲明76的物品,其中:
確定第一儲存器裝置的第一更新計數包括:
向第一儲存器裝置輪詢第一更新計數;以及
自第一儲存器裝置接收第一更新計數;且
確定第二儲存器裝置的第二更新計數包括:
向第二儲存器裝置輪詢第二更新計數;以及
自第二儲存器裝置接收第二更新計數。
聲明80. 本揭露的實施例包括根據聲明76的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
在第一儲存器裝置處接收儲存請求;以及
至少部分地基於接收到所述儲存請求來對第一更新計數進行更新。
聲明81. 本揭露的實施例包括根據聲明80的物品,其中
在第一儲存器裝置處接收儲存請求包括在第一儲存器裝置處接收對記憶體頁進行更新的儲存請求;且
所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得對與第一儲存器裝置上的記憶體頁相關聯的寫入計數進行更新。
聲明82. 本揭露的實施例包括根據聲明76的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
由負載平衡常駐程式對第一儲存器裝置的第一更新計數進行重設;以及
由負載平衡常駐程式對第二儲存器裝置的第二更新計數進行重設。
聲明83. 本揭露的實施例包括根據聲明76的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得由負載平衡常駐程式對與第一儲存器裝置上的記憶體頁相關聯的寫入計數進行重設。
聲明84. 本揭露的實施例包括根據聲明73的物品,其中由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識包括由運行於處理器上的負載平衡常駐程式至少部分地基於記憶體頁的寫入計數來對儲存於第一儲存器裝置上的記憶體頁進行辨識。
聲明85. 本揭露的實施例包括根據聲明84的物品,其中由運行於處理器上的負載平衡常駐程式對儲存於第一儲存器裝置上的記憶體頁進行辨識更包括:
確定記憶體頁的寫入計數;
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數;以及
至少部分地基於寫入計數大於第二寫入計數而對記憶體頁進行辨識。
聲明86. 本揭露的實施例包括根據聲明85的物品,其中:
確定記憶體頁的寫入計數包括自儲存器裝置的HDM存取寫入計數;且
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數包括自儲存器裝置的HDM存取第二寫入計數。
聲明87. 本揭露的實施例包括根據聲明85的物品,其中:
確定記憶體頁的寫入計數包括:
向第一儲存器裝置輪詢寫入計數;以及
自第一儲存器裝置接收寫入計數;且
確定儲存於第一儲存器裝置上的第二記憶體頁的第二寫入計數包括:
向第一儲存器裝置輪詢第二寫入計數;以及
自第一儲存器裝置接收第二寫入計數。
聲明88. 本揭露的實施例包括根據聲明87的物品,其中:
自第一儲存器裝置接收寫入計數包括自第一儲存器裝置接收第一中斷,所述第一中斷包括寫入計數;且
自第一儲存器裝置接收第二寫入計數包括自第一儲存器裝置接收第二中斷,所述第二中斷包括第二寫入計數。
聲明89. 本揭露的實施例包括根據聲明73的物品,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括將所述記憶體頁自第一儲存器裝置遷移至記憶體。
聲明90. 本揭露的實施例包括根據聲明73的物品,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括將所述記憶體頁自記憶體遷移至第二儲存器裝置。
聲明91. 本揭露的實施例包括根據聲明73的物品,其中將記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括:
自第一儲存器裝置讀取記憶體頁;以及
將所述記憶體頁寫入至第二儲存器裝置。
聲明92. 本揭露的實施例包括根據聲明91的物品,其中將所述記憶體頁自第一儲存器裝置遷移至第二儲存器裝置更包括自第一儲存器裝置抹除所述記憶體頁。
聲明93. 本揭露的實施例包括根據聲明73的物品,其中將記憶體頁自第一儲存器裝置遷移至第二儲存器裝置包括至少部分地基於所述頁向第二儲存器裝置的遷移來對頁表進行更新。
聲明94. 本揭露的實施例包括根據聲明73的物品,其中第一儲存器裝置包括包含記憶體頁的第一儲存器部分。
聲明95. 本揭露的實施例包括根據聲明94的物品,其中第一儲存器裝置更包括第二儲存器部分,所述第二儲存器部分可由運行於處理器上的應用進行存取。
聲明96. 本揭露的實施例包括一種物品,所述物品包括非暫時性儲存媒體,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的指令,所述指令在由機器執行時使得:
在儲存器裝置處接收儲存請求;以及
至少部分地基於接收到儲存請求來對儲存器裝置的更新計數進行更新。
聲明97. 本揭露的實施例包括根據聲明96的物品,其中
在儲存器裝置處接收儲存請求包括在儲存器裝置處接收對記憶體頁進行更新的儲存請求;且
所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得對與儲存器裝置上的記憶體頁相關聯的寫入計數進行更新。
聲明98. 本揭露的實施例包括根據聲明96的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
在儲存器裝置處自負載平衡常駐程式接收對更新計數的輪詢;以及
將更新計數自儲存器裝置發送至負載平衡常駐程式。
聲明99. 本揭露的實施例包括根據聲明98的物品,其中將更新計數自儲存器裝置發送至負載平衡常駐程式包括自儲存器裝置向負載平衡常駐程式發送中斷,所述中斷包括更新計數。
聲明100. 本揭露的實施例包括根據聲明96的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
在儲存器裝置處自負載平衡常駐程式接收對寫入計數的輪詢;以及
將寫入計數自儲存器裝置發送至負載平衡常駐程式。
聲明101. 本揭露的實施例包括根據聲明100的物品,其中將寫入計數自儲存器裝置發送至負載平衡常駐程式包括自儲存器裝置向負載平衡常駐程式發送中斷,所述中斷包括寫入計數。
聲明102. 本揭露的實施例包括根據聲明96的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
在儲存器裝置處接收對更新計數進行重設的請求;以及
對儲存器裝置的更新計數進行重設。
聲明103. 本揭露的實施例包括根據聲明96的物品,所述非暫時性儲存媒體具有儲存於所述非暫時性儲存媒體上的另外的指令,所述指令在由機器執行時使得:
在儲存器裝置處接收對寫入計數進行重設的請求;以及
對儲存器裝置的寫入計數進行重設。
聲明104. 本揭露的實施例包括根據聲明96的物品,其中第一儲存器裝置包括包含記憶體頁的第一儲存器部分。
聲明105. 本揭露的實施例包括根據聲明104的物品,其中第一儲存器裝置更包括第二儲存器部分,所述第二儲存器部分可由運行於處理器上的應用進行存取。
因此,慮及本文中所述的實施例的各種各樣的排列,此詳細說明及隨附材料僅旨在為例示性的,且不應被視為限制本揭露的範圍。因此,所主張保護的揭露內容是所有可落入以下申請專利範圍及其等效內容的範圍及精神內的此種潤飾。
0~11、12~20、21~29、30~38、39~47、48、51、52、63:位元
105:機器/系統
110、340:處理器
115:記憶體
120:儲存器裝置/固態驅動機(SSD)
120-1、120-2:儲存器裝置
125:記憶體控制器
130:裝置驅動器
135:頁表
140-1、140-2:鏈路
145:負載平衡常駐程式
205:時鐘
210:網路連接件
215:匯流排
220:使用者介面
225:輸入/輸出(I/O)引擎
305:介面
310:主機介面層
315:SSD控制器
320-1、320-2、320-3、320-4:通道
325-1、325-2、325-3、325-4、325-5、325-6、325-7、325-8:快閃記憶體晶片/快閃晶片
330:主機管理裝置記憶體(HDM)
335:快閃轉譯層(FTL)
345:快取
350:中斷邏輯
405:應用
410:虛擬記憶體
415:記憶體管理單元
420:主機系統記憶體
425:主機記憶體位址
430:HDM位址/HDM位址範圍
435:記憶體介面
440、515:邏輯區塊位址(LBA)
445、520、525:實體區塊位址(PBA)
450:主機介面
505:儲存請求
510:LBA至PBA表
605:邏輯至實體更新計數/更新計數
610-1、610-2、610-3、610-4、610-5、610-6:寫入計數
615:遞增邏輯
705:虛擬位址
705-1、705-2、705-3:虛擬位址
710-1、710-2、710-3:實體位址
805-1、805-2、805-3、805-4、805-5:表
810:暫存器
905:記憶體頁
910:頁表表項
1005、1010:部分
1005-1、1005-2、1005-3、1005-4、1005-5、1005-6、1005-7、1005-8:頁
1105:存取邏輯
1110:遷移邏輯
1115:頁表更新邏輯
1120:重設邏輯
1125:輪詢器
1205、1210、1215、1220、1305、1310、1315、1320、1325、1330、1335、1405、1410、1415、1420、1505、1510、1515、1605、1610、1705、1710、1715:方塊
以下闡述的圖式是關於可如何實施本揭露的實施例的實例,且不旨在限制本揭露的實施例。本揭露的各別實施例可包括未在特定圖中示出的元件及/或可省略特定圖中示出的元件。所述圖式旨在提供例示且可能不按比例繪製。
圖1示出根據本揭露實施例的包括儲存器裝置的系統,所述儲存器裝置可用於在異質記憶體系統中進行負載平衡。
圖2示出根據本揭露實施例的圖1所示機器的細節。
圖3示出根據本揭露實施例的支援負載平衡的固態驅動機(SSD)。
圖4示出根據本揭露實施例的應用、圖1所示記憶體及圖1所示儲存器裝置之間的交互的高階視圖。
圖5示出根據本揭露實施例的圖3所示快閃轉譯層(FTL)中的邏輯至實體位址表的更新。
圖6示出根據本揭露實施例的圖3所示主機管理裝置記憶體(HDM)的細節。
圖7示出根據本揭露實施例的圖1所示頁表的細節。
圖8示出根據本揭露實施例的圖1所示頁表的實例性實施方案。
圖9示出根據本揭露實施例的在異質記憶體系統中實行負載平衡的圖1所示負載平衡常駐程式。
圖10示出根據本揭露實施例的圖1所示儲存器裝置的一些部分。
圖11示出根據本揭露實施例的圖1所示負載平衡常駐程式的細節。
圖12示出根據本揭露實施例的在圖1所示系統中實行負載平衡的過程的流程圖。
圖13A示出根據本揭露實施例的在圖1所示系統中實行負載平衡的實例性過程的替代流程圖。
圖13B繼續示出根據本揭露實施例的在圖1所示系統中實行負載平衡的實例性過程的替代流程圖。
圖14示出根據本揭露實施例的圖1所示負載平衡常駐程式在圖1所示系統中對記憶體頁可在其之間遷移的儲存器裝置進行辨識的實例性過程的流程圖。
圖15示出根據本揭露實施例的圖1所示負載平衡常駐程式在圖1所示系統中選擇欲進行遷移的記憶體頁的實例性過程的流程圖。
圖16示出根據本揭露實施例的圖1所示負載平衡常駐程式在圖1所示系統中對用於進行遷移的儲存器裝置或記憶體頁進行辨識的替代過程的流程圖。
圖17示出根據本揭露實施例的在圖1所示系統中進行的記憶體頁遷移的過程的流程圖。
105:機器/系統
110:處理器
115:記憶體
120-1、120-2:儲存器裝置
125:記憶體控制器
130:裝置驅動器
135:頁表
140-1、140-2:鏈路
145:負載平衡常駐程式
Claims (20)
- 一種電腦系統,包括: 處理器; 記憶體,連接至所述處理器; 第一儲存器裝置,連接至所述處理器,所述第一儲存器裝置包括第一儲存器部分,所述第一儲存器部分包括記憶體頁,所述第一儲存器部分用於對所述記憶體進行擴展; 第二儲存器裝置,連接至所述處理器,所述第二儲存器裝置包括第二儲存器部分,所述第二儲存器部分用於對所述記憶體進行擴展;以及 負載平衡常駐程式,至少部分地基於所述第一儲存器裝置的第一更新計數及所述第二儲存器裝置的第二更新計數將所述記憶體頁自所述第一儲存器裝置的所述第一儲存器部分遷移至所述第二儲存器裝置的所述第二儲存器部分。
- 如請求項1所述的電腦系統,其中所述第一儲存器部分及所述第二儲存器部分經由快取同調互連協定對所述記憶體進行擴展。
- 如請求項2所述的電腦系統,其中所述快取同調互連協定包括快速計算鏈路(CXL)協定。
- 如請求項2所述的電腦系統,其中: 所述第一儲存器裝置包括用於儲存所述第一更新計數的第一主機管理裝置記憶體(HDM);且 所述第二儲存器裝置包括用於儲存所述第二更新計數的第二主機管理裝置記憶體。
- 如請求項4所述的電腦系統,其中所述負載平衡常駐程式包括存取邏輯,所述存取邏輯用於自所述第一主機管理裝置記憶體存取所述第一更新計數且自所述第二主機管理裝置記憶體存取所述第二更新計數。
- 如請求項4所述的電腦系統,其中所述負載平衡常駐程式包括重設邏輯,所述重設邏輯用於對所述第一主機管理裝置記憶體中的所述第一更新計數進行重設且對所述第二主機管理裝置記憶體中的所述第二更新計數進行重設。
- 如請求項4所述的電腦系統,其中所述第一主機管理裝置記憶體進一步儲存所述記憶體頁的寫入計數。
- 一種儲存器裝置,包括: 儲存器,包括第一儲存器部分,所述第一儲存器部分用於儲存記憶體頁; 控制器,用於對發送至所述儲存器裝置的加載請求或儲存請求中的至少一者進行處理;以及 遞增邏輯,用於對更新計數及寫入計數進行管理,所述更新計數對資料已被寫入至所述儲存器的第一次數進行辨識,所述寫入計數對資料已被寫入至所述記憶體頁的第二次數進行辨識, 其中所述儲存器對記憶體進行擴展。
- 如請求項8所述的儲存器裝置,其中所述儲存器裝置支援快取同調互連協定。
- 如請求項9所述的儲存器裝置,其中所述快取同調互連協定包括快速計算鏈路(CXL)協定。
- 如請求項8所述的儲存器裝置,更包括用於儲存所述更新計數及所述寫入計數的主機管理裝置記憶體(HDM)。
- 一種操作電腦系統的方法,包括: 由運行於處理器上的負載平衡常駐程式對第一儲存器裝置進行辨識; 由運行於所述處理器上的所述負載平衡常駐程式對第二儲存器裝置進行辨識; 由運行於所述處理器上的所述負載平衡常駐程式對儲存於所述第一儲存器裝置上的記憶體頁進行辨識;以及 將所述記憶體頁自所述第一儲存器裝置遷移至所述第二儲存器裝置, 其中所述第一儲存器裝置及所述第二儲存器裝置對記憶體進行擴展。
- 如請求項12所述的方法,其中所述第一儲存器裝置及所述第二儲存器裝置經由快取同調互連協定對所述記憶體進行擴展。
- 如請求項13所述的方法,其中所述快取同調互連協定包括快速計算鏈路(CXL)協定。
- 如請求項13所述的方法,其中: 由運行於所述處理器上的所述負載平衡常駐程式對所述第一儲存器裝置進行辨識包括確定所述第一儲存器裝置的第一更新計數;且 由運行於所述處理器上的所述負載平衡常駐程式對所述第二儲存器裝置進行辨識包括確定所述第二儲存器裝置的第二更新計數。
- 如請求項15所述的方法,其中: 確定所述第一儲存器裝置的所述第一更新計數包括自所述第一儲存器裝置的第一主機管理裝置記憶體(HDM)存取所述第一更新計數;且 確定所述第二儲存器裝置的所述第二更新計數包括自所述第二儲存器裝置的第二主機管理裝置記憶體存取所述第二更新計數。
- 如請求項15所述的方法,更包括: 由所述負載平衡常駐程式對所述第一儲存器裝置的所述第一更新計數進行重設;以及 由所述負載平衡常駐程式對所述第二儲存器裝置的所述第二更新計數進行重設。
- 如請求項15所述的方法,更包括由所述負載平衡常駐程式對與所述第一儲存器裝置上的所述記憶體頁相關聯的寫入計數進行重設。
- 如請求項13所述的方法,其中由運行於所述處理器上的所述負載平衡常駐程式對儲存於所述第一儲存器裝置上的所述記憶體頁進行辨識包括由運行於所述處理器上的所述負載平衡常駐程式至少部分地基於所述記憶體頁的寫入計數來對儲存於所述第一儲存器裝置上的所述記憶體頁進行辨識。
- 如請求項13所述的方法,其中將所述記憶體頁自所述第一儲存器裝置遷移至所述第二儲存器裝置包括至少部分地基於所述頁向所述第二儲存器裝置的遷移來對頁表進行更新。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163222406P | 2021-07-15 | 2021-07-15 | |
US63/222,406 | 2021-07-15 | ||
US17/511,540 US20230017824A1 (en) | 2021-07-15 | 2021-10-26 | Systems and methods for load balancing in a heterogeneous memory system |
US17/511,540 | 2021-10-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202307662A true TW202307662A (zh) | 2023-02-16 |
Family
ID=82594575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111126409A TW202307662A (zh) | 2021-07-15 | 2022-07-14 | 電腦系統、儲存器裝置以及操作電腦系統的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230017824A1 (zh) |
EP (1) | EP4120089A1 (zh) |
KR (1) | KR20230012440A (zh) |
CN (1) | CN115617503A (zh) |
TW (1) | TW202307662A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230023696A1 (en) * | 2021-07-20 | 2023-01-26 | Vmware, Inc. | Migrating virtual machines in cluster memory systems |
US11922034B2 (en) | 2021-09-02 | 2024-03-05 | Samsung Electronics Co., Ltd. | Dual mode storage device |
US12026387B2 (en) * | 2022-03-24 | 2024-07-02 | Advanced Micro Devices, Inc. | Page swapping to protect memory devices |
CN116466879B (zh) * | 2023-03-17 | 2023-12-29 | 北京超弦存储器研究院 | 一种cxl内存模组、内存数据的置换方法及计算机系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008055272A2 (en) * | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Integrating data from symmetric and asymmetric memory |
US8239612B2 (en) * | 2007-09-27 | 2012-08-07 | Tdk Corporation | Memory controller, flash memory system with memory controller, and control method of flash memory |
US9513843B2 (en) * | 2010-04-13 | 2016-12-06 | Dot Hill Systems Corporation | Method and apparatus for choosing storage components within a tier |
KR20120128978A (ko) * | 2011-05-18 | 2012-11-28 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 관리 방법 |
US8886781B2 (en) * | 2011-12-13 | 2014-11-11 | Microsoft Corporation | Load balancing in cluster storage systems |
US8554963B1 (en) * | 2012-03-23 | 2013-10-08 | DSSD, Inc. | Storage system with multicast DMA and unified address space |
WO2014170936A1 (ja) * | 2013-04-15 | 2014-10-23 | 株式会社日立製作所 | ストレージ装置及びストレージ装置の制御方法 |
CN111736773A (zh) * | 2015-04-09 | 2020-10-02 | 株式会社日立制作所 | 存储系统和数据控制方法 |
US11074208B1 (en) * | 2019-07-24 | 2021-07-27 | Xilinx, Inc. | Routing network using global address map with adaptive main memory expansion for a plurality of home agents |
KR20210089853A (ko) * | 2020-01-09 | 2021-07-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US12050938B2 (en) * | 2020-11-30 | 2024-07-30 | Netapp, Inc. | Balance workloads on nodes based on estimated optimal performance capacity |
CN114860150A (zh) * | 2021-02-04 | 2022-08-05 | 戴尔产品有限公司 | 在存储群集的存储系统之间执行损耗均衡 |
-
2021
- 2021-10-26 US US17/511,540 patent/US20230017824A1/en active Pending
-
2022
- 2022-07-13 EP EP22184665.2A patent/EP4120089A1/en active Pending
- 2022-07-14 CN CN202210832184.2A patent/CN115617503A/zh active Pending
- 2022-07-14 TW TW111126409A patent/TW202307662A/zh unknown
- 2022-07-15 KR KR1020220087382A patent/KR20230012440A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN115617503A (zh) | 2023-01-17 |
KR20230012440A (ko) | 2023-01-26 |
US20230017824A1 (en) | 2023-01-19 |
EP4120089A1 (en) | 2023-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10761777B2 (en) | Tiered storage using storage class memory | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
TW202307662A (zh) | 電腦系統、儲存器裝置以及操作電腦系統的方法 | |
JP5907739B2 (ja) | 不揮発性記憶装置 | |
TWI578156B (zh) | 非依電性隨機存取記憶磁碟 | |
US9244619B2 (en) | Method of managing data storage device and data storage device | |
US20110145474A1 (en) | Efficient Use Of Flash Memory In Flash Drives | |
JP2013530448A (ja) | キャッシュストレージアダプタアーキテクチャ | |
KR20150055882A (ko) | 불휘발성 메모리 시스템 및 그것의 동작 방법 | |
TW201344433A (zh) | 資訊處理裝置 | |
KR20130112210A (ko) | 메모리 시스템 및 그것의 페이지 교체 방법 | |
KR20150052039A (ko) | 정보 처리 장치 | |
US10126987B2 (en) | Storage devices and methods for controlling a storage device | |
JP2020502606A (ja) | 記憶動作待ち行列 | |
JP2020191055A (ja) | 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体 | |
KR20170110810A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
US20240053917A1 (en) | Storage device, operation method of storage device, and storage system using the same | |
KR20150041873A (ko) | 데이터 처리 시스템 | |
TWI726381B (zh) | 資料儲存裝置以及非揮發式記憶體控制方法 | |
US9996456B2 (en) | Solid-state disk, and user system comprising same | |
US11768628B2 (en) | Information processing apparatus | |
US20240311318A1 (en) | Systems and methods for a cache-coherent interconnect protocol storage device | |
TWI760884B (zh) | 主機效能加速模式的資料讀取方法及裝置 | |
KR20230034194A (ko) | 듀얼 모드 스토리지 장치 | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same |