TW202009716A - 記憶體系統及刪除重複記憶體系統 - Google Patents
記憶體系統及刪除重複記憶體系統 Download PDFInfo
- Publication number
- TW202009716A TW202009716A TW108123547A TW108123547A TW202009716A TW 202009716 A TW202009716 A TW 202009716A TW 108123547 A TW108123547 A TW 108123547A TW 108123547 A TW108123547 A TW 108123547A TW 202009716 A TW202009716 A TW 202009716A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- write
- memory
- bits
- manager
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0608—Saving storage space on storage systems
-
- 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
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- 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/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0662—Virtualisation aspects
-
- 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/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- 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
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
- G06F2212/1044—Space efficiency improvement
Abstract
一種記憶體系統針對在主機系統的虛擬記憶體空間中重複的使用者資料對系統的物理記憶體空間中的使用者資料提供刪除重複。事務管理器使用事務表來為虛擬記憶體空間維護資料相干性及資料併發性。寫入資料引擎管理器使用未完成桶編號及命令佇列來為物理記憶體空間維護資料相干性及資料併發性。寫入資料引擎管理器從事務管理器接收資料寫入請求,並將對應的寫入命令發送到所選命令佇列。寫入資料引擎通過以下來對命令佇列中的寫入命令作出回應:如果資料未在虛擬記憶體空間中重複,則將資料儲存在溢出記憶體區中;或者如果資料在虛擬記憶體空間中重複,則使資料的參考計數器遞增。
Description
本文所揭露的主題涉及記憶體系統。更具體來說,本文所揭露的主題涉及一種針對在主機系統的虛擬記憶體空間中重複的使用者資料對系統的物理記憶體空間中的使用者資料提供刪除重複的記憶體系統。
人工智慧(Artificial Intelligence,AI)、大資料及記憶體內處理使用越來越大的記憶體容量。為滿足此種需求,已開發出記憶體內刪除重複系統(刪除重複動態隨機存取記憶體(dedupe-DRAM))。遺憾地,典型的刪除重複系統具有一些缺點。舉例來說,刪除重複轉換表可隨著虛擬記憶體的大小增長而非線性地增長。另外,刪除重複操作通常導致對讀取及寫入等待時間的某種放大,也就是說,單次邏輯讀取或寫入可需要多次物理讀取或寫入,從而降低性能。
示例性實施例提供一種記憶體系統,其可包括至少一個系統磁碟分割(system partition),所述至少一個系統磁碟分割可包括物理記憶體、至少一個事務管理器(transaction manager,TM)、至少一個寫入資料引擎管理器(write data engine manager,WDEM)及寫入資料引擎(write data engine,WDE)。所述物理記憶體可具有為第一預定大小的物理記憶體空間。所述至少一個TM可從主機系統接收資料寫入請求及對應的資料,且所述至少一個TM使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性。所述至少一個WDEM可包括至少一個命令佇列,且所述WDEM可使用未完成桶編號(outstanding bucket number,OBN)及命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性。所述WDEM可從所述TM接收所述資料寫入請求並將與每一資料寫入請求對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列。所述WDE可對應於每一命令佇列。所述WDE可通過以下來對儲存在與所述WDE對應的所述命令佇列中的寫入命令作出回應:如果與資料寫入請求對應的所述資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢出記憶體區中;或者如果與資料寫入請求對應的所述資料在所述虛擬記憶體空間中重複,則使所述資料的參考計數器遞增。在一個實施例中,所述虛擬記憶體空間可包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小,且所述記憶體系統可進一步包括轉換表,所述轉換表可包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,其中所述第二預定數目個位元及所述第三預定數目個位元可為所述第一預定數目個位元的子集。
示例性實施例提供一種記憶體系統,其可包括多個系統磁碟分割,其中至少一個系統磁碟分割可包括物理記憶體、至少一個事務管理器(TM)、至少一個寫入資料引擎管理器(WDEM)、寫入資料引擎(WDE)及記憶體區管理器(memory regional manager,MRM)。所述物理記憶體可具有為第一預定大小的物理記憶體空間且可包括多個記憶體區。所述至少一個TM可從主機系統接收資料寫入請求及對應的資料,且所述至少一個TM可使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性。所述虛擬記憶體空間可包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小。所述至少一個TM可使用轉換表來將所述主機系統的所述虛擬記憶體空間轉換成所述至少一個系統磁碟分割的所述物理記憶體空間。所述至少一個WDEM可包括至少一個命令佇列,且所述WDEM可使用未完成桶編號(OBN)及命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性。所述WDEM可從所述TM接收所述資料寫入請求並將與每一資料寫入請求對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列。所述WDE可對應於每一命令佇列,且所述WDE可通過以下來對儲存在與所WDE對應的所述命令佇列中的寫入命令作出回應:如果與所述寫入請求對應的所述資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢位區域中;或者如果與資料寫入請求對應的所述資料在所述虛擬記憶體空間中重複,則使所述資料的參考計數器遞增。MRM可對應於所述物理記憶體的每一記憶體區,且MRM可包括儲存在所述記憶體區中的資料的參考計數器儲存空間且可控制對與所述MRM對應的所述記憶體區的WDE存取。在一個實施例中,所述轉換表可包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,其中所述第二預定數目個位元及所述第三預定數目個位元可為所述第一預定數目個位元的子集。
示例性實施例提供一種刪除重複記憶體系統,其可包括多個系統磁碟分割,其中至少一個系統磁碟分割可包括物理記憶體、至少一個事務管理器(TM)、至少一個寫入資料引擎管理器(WDEM)及寫入資料引擎(WDE)。所述物理記憶體可具有為第一預定大小的物理記憶體空間。所述至少一個TM可從主機系統接收資料寫入請求及對應的資料,且所述至少一個TM可使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性。所述虛擬記憶體空間可包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小。所述至少一個TM可使用轉換表來將所述主機系統的所述虛擬記憶體空間轉換成所述至少一個系統磁碟分割的所述物理記憶體空間,其中所述事務表可包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,且其中所述第二預定數目個位元及所述第三預定數目個位元可為所述第一預定數目個位元的子集。所述至少一個WDEM可包括至少一個命令佇列,且所述WDEM可使用未完成桶編號(OBN)及命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性。所述WDEM可從所述TM接收所述資料寫入請求且可將與每一資料寫入請求對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列。所述WDE可對應於每一命令佇列。所述WDE可通過以下來對儲存在與所述WDE對應的所述命令佇列中的寫入命令作出回應:如果與所述寫入請求對應的所述資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢位區域中;或者如果與資料寫入請求對應的所述資料在所述虛擬記憶體空間中重複,則使參考計數器遞增。
在以下詳細說明中,闡述許多具體細節來提供對揭露內容的透徹理解。然而,所屬領域中的技術人員應理解,無需這些具體細節也可實踐所揭露的各個方面。在其他情形中,未詳細闡述眾所周知的方法、程式、元件及電路,以免使本文所揭露的主題模糊不清。另外,可實作所述的各個方面以在任何成像裝置或系統(包括但不限於智慧型電話、使用者設備(User Equipment,UE)及/或膝上型電腦)中執行低功率三維(3D)深度測量。
本說明書通篇中所提及的“一個實施例(one embodiment)”或“實施例(an embodiment)”意指結合所述實施例所闡述的特定特徵、結構或特性可包括在本文所揭露的至少一個實施例中。因此,在本說明書通篇中各處出現的短語“在一個實施例中(in one embodiment)”或“在實施例中(in an embodiment)”或者“根據一個實施例(according to one embodiment)”(或具有相似含義的其他短語)可能未必均指同一實施例。此外,在一個或多個實施例中,特定特徵、結構或特性可採用任何適合的方式進行組合。就此而言,本文所用的詞“示例性(exemplary)”意指“用作實例、例子或例示”。本文被闡述為“示例性”的任何實施例不應被視為與其他實施例相比必定是優選的或有利的。另外,在一個或多個實施例中,特定特徵、結構或特性可採用任何適合的方式進行組合。此外,根據本文中的論述的上下文而定,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。相似地,帶連字號的用語(例如,“二維(two-dimensional )”、“預定(pre-determined)”、“圖元專有(pixel-specific)”等)偶爾可與對應的未帶連字號的版本(例如,“二維(three dimensional)”、“預定(predetermined)”、“圖元專有(pixel specific)”等)可互換地使用,且大寫詞條(例如,“計數器時鐘(Counter Clock)”、“行選擇(Row Select)”、“PIXOUT”等)可與對應的非大寫版本(例如,“計數器時鐘(counter clock)”、“行選擇(row select)”、“pixout”等)可互換地使用。此種偶爾的可互換使用不應被視為彼此不一致。
此外,根據本文中的論述的上下文而定,單數用語可包括對應的複數形式且複數用語可包括對應的單數形式。還應注意,本文中所示及所論述的各個圖(包括元件圖)僅是出於例示目的,而並非按比例繪製。相似地,示出各種波形及時序圖僅是用於例示目的。舉例來說,為清晰起見,可相對於其他元件誇大元件中的一些元件的尺寸。此外,在適當情況下,在各個圖中重複使用參考編號來指示對應的元件和/或類似元件。
本文所用術語僅是用於闡述一些示例性實施例的目的,而非旨在限制所主張的主題。除非上下文另外清楚地指明,否則本文所用單數形式“一(a、an)”及“所述(the)”旨在也包括複數形式。還應理解,當在本說明書中使用用語“包括(comprises和/或comprising)”時,是指明所陳述特徵、整數、步驟、操作、元件和/或元件的存在,但不排除一個或多個其他特徵、整數、步驟、操作、元件、元件和/或其群組的存在或添加。本文所用用語“第一(first)”、“第二(second)”等被用作位於所述用語後面的名詞的標籤,且除非明確定義,否則所述用語並不暗示任何類型的次序(例如,空間、時間、邏輯等)。此外,在兩個或更多個圖中可使用相同的參考編號來指代具有相同或相似的功能的部件、元件、塊、電路、單元或模組。然而,這種用法僅是為了使例示簡潔且易於論述起見;所述用法並不暗示這種元件或單元的構造細節或架構細節在所有實施例中是相同的或者這些通常提及的部件/模組是實作本文所揭露示例性實施例中的一些的教示內容的唯一方式。
應理解,當將元件或層稱為位於另一元件或層上、“連接到”或“耦合到”另一元件或層時,所述元件或層可直接位於所述另一元件或層上、直接連接或耦合到所述另一元件或層,或者可存在中間元件或層。對比之下,當將元件稱為“直接位於”另一元件或層上、“直接連接到”或“直接耦合到”另一元件或層時,不存在中間元件或層。在通篇中,相同的編號指代相同的元件。本文所用的用語“及/或”包括相關聯列舉項中的一者或多者的任意及所有組合。
除非另外定義,否則本文所用所有用語(包括技術及科學用語)的含義均與本主題所屬領域中的一般技術人員所通常理解的含義相同。還應理解,用語(例如在常用詞典中所定義的用語)應被解釋為具有與其在相關技術的上下文中的含義一致的含義,且除非在本文中明確定義,否則不應將其解釋為具有理想化或過於正式的意義。
本文所用用語“模組”是指被配置成結合模組提供本文所述功能的軟體、韌體及/或硬體的任何組合。軟體可被實施為軟體封裝、代碼及/或指令集或指令,且在本文所述任何實施方案中所用的用語“硬體”可例如以單獨形式或以任何組合的形式包括硬佈線電路系統、可程式化電路系統、狀態機電路系統及/或儲存由可程式化電路系統執行的指令的韌體。各模組可共同地或單獨地實施為形成較大系統(例如但不限於積體電路(integrated circuit,IC)、系統晶片(system on-chip,SoC)等等)一部分的電路系統。本文所揭露的各種元件及/或功能塊可被實施為可包括軟體、韌體及/或硬體的模組,所述軟體、韌體及/或硬體結合所述各種元件及/或功能塊來提供本文所述的功能。
本文所揭露的主題提供一種具有轉換表的大型刪除重複記憶體系統架構,所述轉換表的大小不隨著系統的虛擬記憶體大小增大而非線性地增大。在一個實施例中,本文所揭露的記憶體系統架構包括多個系統磁碟分割,其中每一系統磁碟分割內的功能可被並行化以提供高輸送量(throughput)及低等待時間。
在一個實施例中,系統磁碟分割可包括一個或多個事務管理器,所述一個或多個事務管理器可被配置成管理記憶體系統的虛擬記憶體空間且這樣一來為虛擬記憶體空間提供併發性(concurrency)及相干性。另外,每一事務管理器可支援多個未完成事務,且還可支援多個執行緒,其中每一執行緒可包括多個未完成事務。
系統磁碟分割還可包括一個或多個資料引擎管理器,所述一個或多個資料引擎管理器可被配置成管理系統磁碟分割的物理記憶體空間。資料引擎管理器還可被配置成管理多個並行資料引擎。所述多個資料引擎可對系統磁碟分割的多個正交記憶體區執行記憶體位址交錯,以提供高輸送量。本文關於所述多個記憶體區所用的用語“正交”意指任何資料引擎可存取系統磁碟分割的任何記憶體區。對於寫入存取,在資料到達寫入資料引擎(WDE)之前,由寫入資料引擎管理器(WDEM)來管理記憶體寫入衝突。在資料到達WDE之後,記憶體存取衝突已被去除。對於讀取存取,讀取資料引擎(Read Data Engine,RDE)不具有記憶體存取衝突且可在無限制的情況下存取任何記憶體區。記憶體區管理器管理與應用相關聯的記憶體區,例如不同的刪除重複記憶體區。因此,物理記憶體衝突已由WDEM“正交地”去除。
本文所揭露的記憶體系統架構還提供參考計數器(RC),所述參考計數器(RC)可嵌入儲存在系統的物理記憶體中的使用者資料中且可減少由記憶體系統使用的記憶體量。在一個實施例中,所述參考計數器提供其中嵌入有參考計數器的資料在系統的虛擬記憶體空間中重複的次數的指示。在一個實施例中,對於為64個位元組的使用者資料粒度,將參考計數器嵌入使用者資料中可將系統記憶體要求減少約6%。在另一實施例中,對於為32個位元組的使用者資料粒度,將參考計數器嵌入使用者資料中可將系統記憶體要求減少約12%。
在其中使用者資料可在系統的虛擬記憶體空間中重複的次數等於或大於預定次數的其他實施例中,可將用於參考計數器的欄位替換成提供針對擴充參考計數器表或針對特殊資料圖案表的索引的欄位。在又一實施例中,如果使用者資料在系統的虛擬記憶體空間中重複的次數等於或大於預定次數,則由系統使用的轉換表可包括具有針對特殊資料圖案表的指標或索引的條目,從而減少等待時間且增大輸送量。通過將指標或索引放置在轉換表中,當存取轉換表時,可自動地檢測到在虛擬記憶體空間中高度重複的使用者資料。另外,通過由轉換表的此種配置提供的自動檢測,可較容易地分析此種高度重複的使用者資料。
圖1繪示根據本文所揭露主題的可擴縮刪除重複記憶體系統架構100的示例性實施例的框圖。系統架構100可包括一個或多個主機裝置或系統101、主機介面102、前端調度器103及多個系統磁碟分割200A至200K。主機系統101可以通訊方式耦合到主機介面102,且主機介面102可以通訊方式耦合到前端調度器103。主機介面102可包括一個或多個直接記憶體存取(direct memory access,DMA)裝置DMA 0至DMA H-1。前端調度器103可以通訊方式耦合到所述多個系統磁碟分割200A至200K中的每一者。主機系統101、主機介面102及前端調度器103以眾所周知的方式運行。
系統磁碟分割200可包括寫入資料路徑201及讀取資料路徑202。寫入資料路徑201可包括事務管理器(TM)203、寫入資料引擎WDE管理器(WDEM)204、一個或多個記憶體區管理器(MRM)207及一個或多個記憶體區(memory region,MR)209。在一個實施例中,寫入資料路徑201可包括TM 203。在一個實施例中,每分割存在一個TM 203及一個WDEM 204。MR 209在圖1中被繪示為包括記憶體控制器(memory controller,MEM CNTRLR)及雙列直插記憶體模組(dual in-line memory module,DIMM)。其他實施例可包括MR 209的等效組件。MR 209的記憶體可為但不限於動態隨機存取記憶體(dynamic random access memory,DRAM)、靜態隨機存取記憶體(static random access memory,SRAM)、揮發性記憶體及/或非揮發性記憶體。
與寫入資料路徑201相比,讀取資料路徑202可為相對簡單的,這是因為不存在與讀取資料路徑相關聯的資料相干性或資料併發性問題。如圖1及圖2中所示,讀取資料路徑202可包括所述一個或多個MR 209、所述一個或多個MRM 207(圖1)、讀取資料引擎(RDE)管理器(RDE manager,RDEM)212、及一個或多個RDE 213。從主機系統101接收的資料讀取請求可涉及轉換表(圖4)及對適當記憶體區的存取,以回應於資料讀取存取而通過讀取資料路徑202提供所請求讀取資料。
圖2繪示根據本文所揭露主題的圖1所示系統磁碟分割200的示例性實施例的更詳細框圖。系統磁碟分割200的架構可為可並行化的,以便可以提供高輸送量的方式處理多個事務及多個執行緒(以及其多個事務)。
分割200的寫入資料路徑201可包括TM 203、WDEM 204、一個或多個WDE 205(WDE 0至WDE N-1)、記憶體區仲裁器206、MRM 207(MRM 0至MRM P-1)、互連件208及所述一個或多個MR 209(MR 0至MR P-1)。分割200的讀取資料路徑202可包括MR 209、互連件208、記憶體區仲裁器206、RDEM 212及一個或多個讀取資料引擎(RDE)213。系統磁碟分割還可包括轉換表(translation table,TT)管理器(TT manager,TT MGR)210及TT記憶體(TT memory,TT MEM)211。系統磁碟分割200A至200K(圖1)中的每一者可被相似地配置。
例如記憶體區仲裁器206及互連件208等元件以眾所周知的方式運行且本文將不再予以詳述。另外,在圖2中,記憶體區仲裁器206已通過虛線被繪示成位於寫入資料路徑201及讀取資料路徑202中,然而,應理解,每一相應的路徑可實際上包括單獨的記憶體區仲裁器,所述單獨的記憶體區仲裁器與另一記憶體區仲裁器進行通訊及協調。應注意,讀取資料路徑202如圖1中所示“經過”MRM 207,但如圖2中所示並不“經過”MRM 207,因為RDEM 212僅需要讀取轉換表來獲得物理記憶體位置的物理行標識(physical line identification,PLID)且接著RDE 213讀取由PLID標引的記憶體位置。另外,圖1及圖2中所示的組件可實施為可包括軟體、韌體及/或硬體的模組,所述軟體、韌體及/或硬體結合各種元件及/或功能塊來提供本文所述的功能。
圖3繪示根據本文所揭露主題的系統磁碟分割200的寫入資料路徑201的元件中的數者的示例性實施例的另一框圖。更具體來說,圖3所示系統磁碟分割200的組件可包括TM 203、WDEM 204、WDE 205、互連件208及MR 209。另外,寫入資料路徑可包括寫入資料緩衝器控制器214。
參照圖1至圖3,TM 203可包括TM控制器215及一個或多個事務表216。事務表216可用於保持跟蹤在主機系統101與記憶體209之間發生的未完成寫入事務。WDEM 204可包括未完成桶編號(OBN)表217、命令(command,CMD)調派器218、溢出記憶體失效(overflow memory invalidate,OVMI)管理器219、及一個或多個命令佇列(command queue,CQ)220(CQ 0至CQ N-1)。WDE 205可包括一個或多個WDE(WDE 0至WDE N-1)。寫入資料緩衝器控制器214可包括一個或多個寫入資料緩衝器221。
TM 203可被配置成管理主機系統的虛擬記憶體空間的資料相干性及資料併發性。在一個實施例中,TM 203可被配置成支援多個未完成寫入事務及多個執行緒,以提供高資料輸送量。在一個實施例中,事務表216可包含未完成寫入事務的清單。在另一實施例中,事務表216可包含多個執行緒的列表,所述多個執行緒各自具有多個未完成寫入事務。當從主機系統101接收到資料寫入請求時,TM 203對寫入資料請求指派事務標識編號(identification number,ID),且事務ID及其他中繼資料被輸入到所選事務表216中。與寫入資料請求相關聯的資料可儲存在寫入資料緩衝器221中。與寫入資料緩衝器221中的資料相關的事務ID及資訊可被向下游發送以由寫入資料路徑201進一步處理。TM 203還可使用TM表216中的一者或多者來在主機系統/虛擬記憶體空間中保持使已發佈記憶體寫入是以循序次序完成。
圖4繪示根據本文所揭露主題的關於轉換表400的示例性實施例的一些細節,轉換表400可由TM 203及RDEM 212用於保持跟蹤系統磁碟分割200的物理記憶體空間中的資料位置。轉換表211及400的特定示例性實施例是針對為1 TB(即,240
個位元組)的虛擬記憶體空間且由VA_WIDTH指示。刪除重複粒度(資料粒度)是64個位元(即,26
個位元)。轉換表400的物理記憶體空間是256 GB(即,238
個位元組)且由PHY SPACE指示。所示的系統轉換表索引TT_IDX具有34個位元。由系統磁碟分割200提供的分割使得轉換表211的索引保持在32個位元之內,這不會隨著MR 209中所儲存的使用者資料的大小增大而顯著增大轉換表的大小。在替代實施例中,虛擬記憶體大小、物理記憶體大小及刪除重複(資料)粒度可不同於圖4所示者。
圖5繪示根據本文所揭露主題的示例性轉換表500的轉換表條目與示例性散列表501的散列表條目之間的關係。參照圖2及圖5,在一個實施例中,轉換表500可儲存在TT MEM 211中,且散清單501可儲存在MR 209中的散列表/參考計數器記憶體(hash table/reference counter memory,HTRC MEM)中。從主機系統101接收的邏輯位址502包括轉換表索引(圖4,TT_IDX)及粒度。轉換表索引提供針對轉換表500中的物理行標識(PLID)條目的索引。PLID條目的格式503包括針對散列表501的行(即,散列桶)索引(R_INDX)及列索引(COL_INDX)。散列表501的特定行及特定列處所包含的內容是可為粒度為2 g
的特定使用者資料的物理行(physical line,PL)。舉例來說,如果g
等於6,則PL的粒度將為64個位元組。
在一個實施例中,可通過對使用者資料執行的散列函數h
來產生散清單索引(即,行索引及列索引兩者)。由於散清單條目是通過對使用者資料C
執行的散列函數h
而產生,因此僅需將使用者資料的一部分C''
儲存在PL中。換句話說,如果C
表示粒度為2 g
的使用者資料且C''
表示使用者資料C
的需要儲存在散清單中的一部分,則C'
表示使用者資料C
的可使用散列函數h
由C''
重構的一部分。也就是說,(1)
PL中與C'
對應的空間或欄位可用於其他目的,例如儲存與使用者資料C
在主機系統101的虛擬記憶體中重複的次數有關的參考計數器(reference counter,RC)資訊。PL中與C'
對應的空間或欄位可被稱為重構欄位。
圖6繪示根據本文所揭露主題由事務管理器TM 203提供的示例性控制過程600的流程圖。在601處,TM 203可處於等待從主機系統101接收資料寫入命令或從WEDM 204接收回應的閒置迴圈。在602處,如果從主機系統101接收到資料寫入命令,則流程繼續到603,在603處,對事務表216進行搜索。在604處,為資料寫入命令指派事務ID並將資料寫入命令插入到適當的事務表216中。在605處,將寫入資料登錄到寫入資料緩衝器219中。在606處,讀取轉換表211以得到舊物理行標識(PLID)資訊,且流程返回到601。
如果在602處未接收到資料寫入命令,則流程繼續到607,在607處,判斷是否已接收到來自WEDM 204的回應。如果未接收到,則流程返回到601。如果接收到,則流程繼續到608,在608處,更新事務表216。在609處,更新轉換表211。接著,流程返回到601。
WDEM 204可被配置成通過管理WDE 205來管理分割200內的物理記憶體空間的資料相干性及資料併發性。在一個實施例中,WDEM 204可使用命令調派器218及命令佇列220(即,CQ 0至CQ N-1)來為不同的WDE 205維護多個未完成寫入事務/執行緒、及內部讀取/寫入事務/執行緒。WDEM 204運行以通過將針對同一散列桶的寫入事務發送到同一命令佇列CQ來確保針對同一散列桶的寫入事務是依序執行。WDEM 204還可將部分快取記憶體行寫入合併,且對MR 209中的溢出記憶體(overflow memory,OV MEM)區執行記憶體管理。
WDEM 204可包括未完成桶編號(OBN)表219,未完成桶編號(OBN)表219可用於跟蹤未完成寫入命令的散清單桶編號及狀態。命令調派器218可通過將寫入命令儲存在所選CQ 220中來將命令指派給不同的WDE 205。WDEM 204還可包括溢出記憶體(OVM)失效表(圖中未示出)。
圖7繪示根據本文所揭露主題由WEDM 204提供的示例性控制過程700的流程圖。控制過程在701處開始。在702處,判斷是否已從事務管理器TM 203接收到具有寫入資料緩衝器ID及舊PLID資訊的寫入資料命令。如果接收到,則流程繼續到703,在703處,讀取寫入資料表。在704處,如果從寫入資料緩衝器221讀取的寫入資料被標記為特殊資料圖案,則流程繼續到706以向事務管理器發送回應。如果在704處,寫入資料並非是特殊資料,則流程繼續到705,在705處,更新未完成命令緩衝器OCB表。在707處,將操作碼(opcode)添加到適當命令佇列CQ 220,且在708處,過程結束。如果在709處從WDE 205接收到回應,則流程繼續到710,在710處,更新未完成命令緩衝器(outstanding command buffer,OCB)表。在711處,將經更新狀態發送到事務管理器TM 203,且在708處,過程結束。
每一WDE 205從WEDM 204中對應的CQ 220接收命令(操作碼)。WDE 205被配置成執行刪除重複確定及其他相關計算。各WDE 205可並行運行,以改善系統磁碟分割200的整體輸送量。每一WDE 205與每一記憶體區中的MRM 207進行協調,以使記憶體存取交錯。
圖8繪示根據本文所揭露主題由WDE 205提供的示例性控制過程800的流程圖。在801處,WDE 205可處於等待從WDEM 204接收命令的閒置迴圈。在802處,判斷命令是否為將使用者資料的簽名與散列桶中的其他使用者資料簽名進行比較或者命令是否為使RC計數器遞減。如果命令(即,操作碼)是使RC計數器遞減,則流程繼續到803,在803處,使使用者資料的RC遞減。接著,流程繼續到804,在804處,將請求的狀態返回到WDEM 204,且接著,流程返回到801。
如果在802處,從WDEM 204接收的請求是寫入使用者資料(即,物理行),則流程繼續到805,在805處,將使用者資料的簽名與其他使用者資料簽名進行比較,且進一步將已儲存在散清單中的使用者資料進行比較。在806處,如果存在匹配,則流程繼續到807,在807處,使使用者資料的RC遞增。流程繼續到804,在804處,將請求的狀態報告回到WDEM 204。如果在806處不存在匹配,則流程繼續到808,在808處,如果未發現先前使用者資料,則調用HTRC管理器以將使用者資料保存在散清單中,其中RC計數器等於“1”;或者如果散列桶為滿的或者如果發生散列碰撞,則調用OVM管理器以將使用者資料儲存在溢位區域中。流程繼續到804,以將請求的狀態報告給WDEM 204。
MRM 207管理WDE 205對MR 207的記憶體存取。MRM 207包括散列表/參考計數器管理器(hash table/reference counter manager,HTRC MGR)222、溢出記憶體管理器(overflow memory manager,OVM MGR)223及簽名管理器(signature manager,SIG MGR)224。每一MRM 207從WDE 205中的每一者接收HTRC MGR 222的控制資訊及資料資訊(HR R/W)、OVM MGR 223的控制資訊及資料資訊(OVM R/W)及SIG MGR 224的控制資訊及資料資訊(SIG R/W)。
圖9A繪示根據本文所揭露主題包含具有嵌入式參考計數器(RC)的重構欄位901的PL 900的示例性實施例。在一個實施例中,重構欄位包括嵌入式RC,由於使用者資料可在虛擬記憶體空間中重複的次數可為小的,因此所述嵌入式RC具有相對小的大小。對於此種系統情形,嵌入式RC可被配置成大小為r-1個位元的基本RC。
在其中使用者資料可在主機系統的虛擬記憶體空間中重複的次數可超過PL的重構欄位中的嵌入式RC的大小的另一實施例中,所述重構欄位可包括針對擴充RC表條目的索引。在又一實施例中,可使用指示旗標(例如PL的所選位元)來指示虛擬記憶體空間中的使用者資料的重複次數是否超過嵌入式RC的大小。
圖9B繪示根據本文所揭露主題包括指示旗標911的PL 910的示例性實施例。如圖9B中所示,指示旗標911被設定成指示使用者資料的重複次數等於或小於重構欄位912中的嵌入式RC的大小。因此,重構欄位912的內容將指示主機系統101的虛擬記憶體空間中使用者資料的重複次數。圖9C繪示其中指示旗標911被設定成指示使用者資料的重複次數超過重構欄位912中的嵌入式RC的大小的情形,在所述情形中,重構欄位的內容可包含針對擴充RC表913的索引,擴充RC表913包含有重複使用者資料的擴充計數。作為另一選擇,重構欄位912可包含針對特殊資料圖案表914的索引或指標,特殊資料圖案表914可例如包含高度重複的資料。在一個實施例中,轉換表還可包括PLID,如圖8中所示,所述PLID是針對高度重複的使用者資料的特殊資料圖案表914的索引或指標,以減少原本與此種使用者資料相關聯的等待時間。也就是說,通過在轉換表中放置指標或索引,當存取轉換表時,可自動檢測到虛擬記憶體空間中高度重複的使用者資料。
MR 209各自包括中繼資料記憶體區及多個資料記憶體區。如果系統磁碟分割200被配置為刪除重複記憶體,則中繼資料區包括轉換表211。資料記憶體區209包括散列表/參考計數器(HTRC)記憶體(HTRC MEM)、簽名記憶體(signature memory,SG MEM)及溢出記憶體(overflow memory,OV MEM)。
從不同的虛擬位址對MR 209中同一物理記憶體區的寫入由MRM 207管理。HTRC管理器222及SG管理器執行刪除重複功能且依據散列表行(即,桶)及列位置來計算記憶體位置。從不同的虛擬位址對同一HTRC桶的寫入可以與來自主機的原始次序不同的次序到達HTRC桶。一致性由WDEM 204管理。如果寫入資料(例如寫入資料A及寫入資料B)到達同一PLID(A==B),則可簡單地使RC計數器遞增。如果來自不同虛擬位址的寫入資料不相等、具有相同的桶編號但不同的列(即,路)編號,則所述寫入資料可儲存到同一桶中但不同地儲存在不同的路中。如果桶僅剩餘一個條目,則A或B將被儲存到最後一個條目中,且另一者可被儲存到溢位區域中。如果寫入資料A與寫入資料B為不同的但具有相同的散列桶編號及行編號,則第二者將儲存在溢位區域中。
如所屬領域中的技術人員將認識到,可在廣大範圍的應用中對本文所述創新概念進行修改及變化。因此,所主張主題的範圍不應僅限於以上所論述的任何具體示例性教示內容,而是由以上權利要求書來界定。
100‧‧‧可擴縮刪除重複記憶體系統架構/系統架構
101‧‧‧主機裝置或系統
102‧‧‧主機介面
103‧‧‧前端調度器
200、200A~200K‧‧‧系統磁碟分割/分割
201‧‧‧寫入資料路徑
202‧‧‧讀取資料路徑
203‧‧‧事務管理器(TM)
204‧‧‧寫入資料引擎管理器(WDEM)
205‧‧‧寫入資料引擎(WDE)
206‧‧‧記憶體區仲裁器
207‧‧‧記憶體區管理器(MRM)
208‧‧‧互連件
209‧‧‧記憶體區(MR)/記憶體
210‧‧‧轉換表管理器(TT MGR)
211‧‧‧轉換表記憶體(TT MEM)
212‧‧‧讀取資料引擎管理器(RDEM)
213‧‧‧讀取資料引擎(RDE)
214‧‧‧寫入資料緩衝器控制器
215‧‧‧TM控制器
216‧‧‧事務表/TM表
217‧‧‧未完成桶編號(OBN)表
218‧‧‧命令(CMD)調派器
219‧‧‧溢流記憶體失效(OVMI)管理器
220‧‧‧命令佇列(CQ)
221‧‧‧寫入資料緩衝器
222‧‧‧散列表/參考計數器管理器(HTRC MGR)
223‧‧‧溢流記憶體管理器(OVM MGR)
224‧‧‧簽名管理器(SIG MGR)
400、500‧‧‧轉換表
501‧‧‧散列表
502‧‧‧邏輯位址
503‧‧‧物理行標識(PLID)條目的格式
600、700、800‧‧‧控制過程
601、602、603、604、605、606、607、608、609、701、702、703、704、705、706、707、708、709、710、711、801、802、803、804、805、806、807、808‧‧‧操作
900、910‧‧‧物理行(PL)
901、912‧‧‧重構欄位
911‧‧‧指示旗標
913‧‧‧擴充參考計數器(RC)表
914‧‧‧特殊資料圖案表
HR R/W、OVM_W、SIG R/W‧‧‧控制資訊及資料資訊
VA_WIDTH‧‧‧虛擬記憶體空間
PHY SPACE‧‧‧物理記憶體空間
TT_IDX‧‧‧系統轉換表索引
在以下部分中,將參照各圖中所示的示例性實施例來闡述本文所揭露的主題的各個方面,在各圖中:
圖1繪示根據本文所揭露主題的可擴縮刪除重複記憶體系統架構的示例性實施例的框圖。
圖2繪示根據本文所揭露主題的圖1所示系統磁碟分割的示例性實施例的更詳細框圖。
圖3繪示根據本文所揭露主題的系統磁碟分割的寫入資料路徑的元件中的數者的示例性實施例的另一框圖。
圖4繪示根據本文所揭露主題的關於圖1所示刪除重複記憶體系統的虛擬記憶體空間與物理記憶體空間的關係的示例性實施例的一些細節,其中所述關係可由轉換表用於將主機系統的虛擬記憶體空間轉換成系統磁碟分割的物理記憶體空間。
圖5繪示根據本文所揭露主題的示例性轉換表的轉換表條目與示例性散列表的散列表條目之間的關係。
圖6繪示根據本文所揭露主題由事務管理器提供的示例性控制過程的流程圖。
圖7繪示根據本文所揭露主題由寫入資料引擎管理器提供的示例性控制過程的流程圖。
圖8繪示根據本文所揭露主題由寫入資料引擎提供的示例性控制過程的流程圖。
圖9A繪示根據本文所揭露主題包含具有嵌入式參考計數器的重構欄位的物理行的示例性實施例。
圖9B繪示根據本文所揭露主題包括指示旗標的物理行的示例性實施例。
圖9C繪示其中指示旗標被設定成指示使用者資料的重複次數超過重構欄位中嵌入式參考計數器的大小的情形,在所述情形中,重構欄位的內容可包含針對擴充參考計數器表的索引,所述擴充參考計數器表包含有重複使用者資料的擴充計數。
100‧‧‧可擴縮刪除重複記憶體系統架構/系統架構
101‧‧‧主機裝置或系統
102‧‧‧主機介面
103‧‧‧前端調度器
200、200A~200K‧‧‧系統磁碟分割/分割
201‧‧‧寫入資料路徑
202‧‧‧讀取資料路徑
203‧‧‧事務管理器(TM)
204‧‧‧寫入資料引擎管理器(WDEM)
207‧‧‧記憶體區管理器(MRM)
209‧‧‧記憶體區(MR)/記憶體
212‧‧‧讀取資料引擎管理器(RDEM)
Claims (20)
- 一種記憶體系統,包括: 至少一個系統磁碟分割,包括: 物理記憶體,具有為第一預定大小的物理記憶體空間; 至少一個事務管理器,從主機系統接收資料寫入請求及對應的資料,所述至少一個事務管理器使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性; 至少一個寫入資料引擎管理器,包括至少一個命令佇列,所述寫入資料引擎管理器使用未完成桶編號及所述至少一個命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性,所述寫入資料引擎管理器從所述事務管理器接收所述資料寫入請求並將與所述資料寫入請求中的每一者對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列;以及 寫入資料引擎,對應於所述至少一個命令佇列中的每一者,所述寫入資料引擎通過以下來對儲存在與所述寫入資料引擎對應的命令佇列中的寫入命令作出回應:如果與資料寫入請求對應的所述資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢出記憶體區中;或者如果與資料寫入請求對應的所述資料在所述虛擬記憶體空間中重複,則使所述資料的參考計數器遞增。
- 如申請專利範圍第1項所述的記憶體系統,其中所述虛擬記憶體空間包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小,且 其中所述記憶體系統還包括轉換表,所述轉換表包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,所述第二預定數目個位元及所述第三預定數目個位元為所述第一預定數目個位元的子集。
- 如申請專利範圍第2項所述的記憶體系統,其中所述第一預定數目個位元包括40個位元,所述第二預定數目個位元包括32個位元,且所述資料粒度的所述第三預定數目個位元包括6個位元。
- 如申請專利範圍第2項所述的記憶體系統,其中所述事務管理器回應於接收到資料寫入請求而存取所述轉換表,以確定與所述資料寫入請求的虛擬位址對應的物理位址。
- 如申請專利範圍第1項所述的記憶體系統,其中所述事務管理器為所述主機系統的所述虛擬記憶體空間維護寫後寫資料相干性及一致性。
- 如申請專利範圍第1項所述的記憶體系統,其中所述事務管理器使用所述事務表來跟蹤從所述主機系統接收的多個資料寫入請求。
- 如申請專利範圍第6項所述的記憶體系統,其中所述事務管理器對所接收的所述資料寫入請求指派事務標識,且 其中所述事務管理器將寫入完成消息以與所接收的所述資料寫入請求的所述事務標識對應的次序發送到所述主機系統。
- 如申請專利範圍第6項所述的記憶體系統,其中所述事務管理器還使用所述事務表來跟蹤所述寫入資料請求的多個執行緒。
- 一種記憶體系統,包括: 多個系統磁碟分割,至少一個系統磁碟分割包括: 物理記憶體,具有為第一預定大小的物理記憶體空間,所述物理記憶體包括多個記憶體區; 至少一個事務管理器,從主機系統接收資料寫入請求及對應的資料,所述至少一個事務管理器使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性,所述虛擬記憶體空間包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小,且所述至少一個事務管理器使用轉換表來將所述主機系統的所述虛擬記憶體空間轉換成所述至少一個系統磁碟分割的所述物理記憶體空間; 至少一個寫入資料引擎管理器,包括至少一個命令佇列,所述寫入資料引擎管理器使用未完成桶編號及所述至少一個命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性,所述寫入資料引擎管理器從所述事務管理器接收所述資料寫入請求並將與所述資料寫入請求中的每一者對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列; 寫入資料引擎,對應於所述至少一個命令佇列中的每一者,所述寫入資料引擎通過以下來對儲存在與所述寫入資料引擎對應的命令佇列中的寫入命令作出回應:如果與所述資料寫入請求對應的資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢位區域中;或者如果所述資料在所述虛擬記憶體空間中重複,則使所述資料的參考計數器遞增;以及 記憶體區管理器,對應於所述物理記憶體的每一記憶體區,所述記憶體區管理器包括儲存在所述每一記憶體區中的資料的參考計數器儲存空間,所述記憶體區管理器控制對與所述記憶體區管理器對應的所述每一記憶體區的寫入資料引擎存取。
- 如申請專利範圍第9項所述的記憶體系統,其中所述轉換表包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,所述第二預定數目個位元及所述第三預定數目個位元為所述第一預定數目個位元的子集。
- 如申請專利範圍第10項所述的記憶體系統,其中所述第一預定數目個位元包括40個位元,所述第二預定數目個位元包括32個位元,且所述資料粒度的所述第三預定數目個位元包括6個位元。
- 如申請專利範圍第9項所述的記憶體系統,其中所述事務管理器為所述主機系統的所述虛擬記憶體空間維護寫後寫資料相干性及一致性。
- 如申請專利範圍第9項所述的記憶體系統,其中所述事務管理器回應於接收到資料寫入請求而存取所述轉換表,以確定與所述資料寫入請求的虛擬位址對應的物理位址。
- 如申請專利範圍第9項所述的記憶體系統,其中所述事務管理器使用所述事務表來跟蹤從所述主機系統接收的多個資料寫入請求。
- 如申請專利範圍第14項所述的記憶體系統,其中所述事務管理器對所接收的資料寫入請求指派事務標識,且 其中所述事務管理器將寫入完成消息以與所接收的所述資料寫入請求的所述事務標識對應的次序寫入到所述主機系統。
- 如申請專利範圍第14項所述的記憶體系統,其中所述事務管理器使用所述事務表來跟蹤所述寫入資料請求的多個執行緒。
- 一種刪除重複記憶體系統,包括: 多個系統磁碟分割,至少一個系統磁碟分割包括: 物理記憶體,具有為第一預定大小的物理記憶體空間; 至少一個事務管理器,從主機系統接收資料寫入請求及對應的資料,所述至少一個事務管理器使用事務表來為所述主機系統的虛擬記憶體空間維護資料相干性及資料一致性,所述虛擬記憶體空間包括第二預定大小,所述第二預定大小大於或等於所述物理記憶體空間的所述第一預定大小,所述至少一個事務管理器使用轉換表來將所述主機系統的所述虛擬記憶體空間轉換成所述至少一個系統磁碟分割的所述物理記憶體空間,所述事務表包括與所述虛擬記憶體空間的所述第二預定大小對應的第一預定數目個位元、與所述物理記憶體的所述第一預定大小對應的第二預定數目個位元及資料粒度的第三預定數目個位元,所述第二預定數目個位元及所述第三預定數目個位元為所述第一預定數目個位元的子集; 至少一個寫入資料引擎管理器,包括至少一個命令佇列,所述寫入資料引擎管理器使用未完成桶編號及所述至少一個命令佇列來為所述物理記憶體空間維護資料相干性及資料一致性,所述寫入資料引擎管理器從所述事務管理器接收所述資料寫入請求並將與所述資料寫入請求中的每一者對應的寫入命令發送到所述至少一個命令佇列中的所選命令佇列;以及 寫入資料引擎,對應於每一命令佇列,所述寫入資料引擎通過以下來對儲存在與所述寫入資料引擎對應的命令佇列中的寫入命令作出回應:如果與所述寫入請求對應的所述資料未在所述虛擬記憶體空間中重複,則將所述資料儲存在溢位區域中;或者如果與所述資料寫入請求對應的所述資料在所述虛擬記憶體空間中重複,則使參考計數器遞增。
- 如申請專利範圍第17項所述的刪除重複記憶體系統,其中所述物理記憶體包括多個記憶體區, 所述刪除重複記憶體系統還包括與所述物理記憶體的每一記憶體區對應的記憶體區管理器,所述記憶體區管理器包括儲存在所述記憶體區中的資料的參考計數器儲存空間,所述記憶體區管理器控制對與所述記憶體區管理器對應的所述記憶體區的寫入資料引擎存取。
- 如申請專利範圍第18項所述的刪除重複記憶體系統,其中所述第一預定數目個位元包括40個位元,所述第二預定數目個位元包括32個位元,且所述資料粒度的所述第三預定數目個位元包括6個位元。
- 如申請專利範圍第19項所述的刪除重複記憶體系統,其中所述事務管理器使用所述事務表來跟蹤所述寫入資料請求的多個執行緒。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862720909P | 2018-08-21 | 2018-08-21 | |
US62/720,909 | 2018-08-21 | ||
US16/180,003 | 2018-11-04 | ||
US16/180,003 US10628072B2 (en) | 2018-08-21 | 2018-11-04 | Scalable architecture enabling large memory system for in-memory computations |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202009716A true TW202009716A (zh) | 2020-03-01 |
TWI812748B TWI812748B (zh) | 2023-08-21 |
Family
ID=69583520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108123547A TWI812748B (zh) | 2018-08-21 | 2019-07-04 | 記憶體系統及刪除重複記憶體系統 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10628072B2 (zh) |
JP (1) | JP2020030822A (zh) |
KR (1) | KR20200021878A (zh) |
CN (1) | CN110851076A (zh) |
TW (1) | TWI812748B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567683B2 (en) * | 2019-03-28 | 2023-01-31 | Intel Corporation | Technologies for providing edge deduplication |
WO2020217306A1 (ja) * | 2019-04-23 | 2020-10-29 | ヤマハ発動機株式会社 | リニアコンベアシステム、リニアコンベアシステムの制御方法、リニアコンベアシステムの制御プログラムおよび記録媒体 |
US20230056665A1 (en) * | 2021-08-18 | 2023-02-23 | Micron Technology, Inc. | Mechanism to provide reliable receipt of event messages |
US11550642B1 (en) | 2021-08-18 | 2023-01-10 | Micron Technology, Inc. | Mechanism to trigger early termination of cooperating processes |
Family Cites Families (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4774659A (en) * | 1986-04-16 | 1988-09-27 | Astronautics Corporation Of America | Computer system employing virtual memory |
US5649157A (en) * | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
US6209003B1 (en) * | 1998-04-15 | 2001-03-27 | Inktomi Corporation | Garbage collection in an object cache |
US6141707A (en) * | 1998-05-28 | 2000-10-31 | Emc Corporation | Input/output request allocation by establishing master command queue among plurality of command queues to receive and store commands, determine logical volume, and forwarding command to determined logical volume |
US6286092B1 (en) * | 1999-05-12 | 2001-09-04 | Ati International Srl | Paged based memory address translation table update method and apparatus |
US7159073B2 (en) * | 2003-03-27 | 2007-01-02 | Stmicroelectronics, Inc. | Data storage and caching architecture |
US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
US7849259B1 (en) * | 2007-02-14 | 2010-12-07 | Marvell International Ltd. | Disk controller response handler for write commands |
US7873809B2 (en) * | 2007-03-29 | 2011-01-18 | Hitachi, Ltd. | Method and apparatus for de-duplication after mirror operation |
US8768895B2 (en) * | 2007-04-11 | 2014-07-01 | Emc Corporation | Subsegmenting for efficient storage, resemblance determination, and transmission |
US20090319772A1 (en) * | 2008-04-25 | 2009-12-24 | Netapp, Inc. | In-line content based security for data at rest in a network storage system |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US8271564B2 (en) * | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8126905B2 (en) * | 2008-09-23 | 2012-02-28 | Teradata Us, Inc. | System, method, and computer-readable medium for optimizing the performance of outer joins |
CN101493756A (zh) * | 2009-03-11 | 2009-07-29 | 威盛电子股份有限公司 | 数据写入方法与装置 |
US20100332401A1 (en) * | 2009-06-30 | 2010-12-30 | Anand Prahlad | Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8204862B1 (en) * | 2009-10-02 | 2012-06-19 | Symantec Corporation | Systems and methods for restoring deduplicated data |
US9401967B2 (en) * | 2010-06-09 | 2016-07-26 | Brocade Communications Systems, Inc. | Inline wire speed deduplication system |
US9355109B2 (en) | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US8352447B2 (en) * | 2011-03-01 | 2013-01-08 | Hitachi, Ltd. | Method and apparatus to align and deduplicate objects |
US20180107591A1 (en) * | 2011-04-06 | 2018-04-19 | P4tents1, LLC | System, method and computer program product for fetching data between an execution of a plurality of threads |
US8462781B2 (en) * | 2011-04-06 | 2013-06-11 | Anue Systems, Inc. | Systems and methods for in-line removal of duplicate network packets |
US9529871B2 (en) * | 2012-03-30 | 2016-12-27 | Commvault Systems, Inc. | Information management of mobile device data |
US9135192B2 (en) * | 2012-03-30 | 2015-09-15 | Sandisk Technologies Inc. | Memory system with command queue reordering |
US8904068B2 (en) * | 2012-05-09 | 2014-12-02 | Nvidia Corporation | Virtual memory structure for coprocessors having memory allocation limitations |
US9678863B2 (en) * | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US10031856B2 (en) * | 2013-03-14 | 2018-07-24 | Nvidia Corporation | Common pointers in unified virtual memory system |
US20140304464A1 (en) * | 2013-04-03 | 2014-10-09 | Lsi Corporation | Methods and systems for performing deduplication in a data storage system |
US20150006475A1 (en) * | 2013-06-26 | 2015-01-01 | Katherine H. Guo | Data deduplication in a file system |
US9176676B2 (en) * | 2013-07-30 | 2015-11-03 | Gerald Simon | Efficiency of virtual machines that use de-duplication as primary data storage |
US10055422B1 (en) * | 2013-12-17 | 2018-08-21 | Emc Corporation | De-duplicating results of queries of multiple data repositories |
US9529546B2 (en) * | 2014-01-08 | 2016-12-27 | Netapp, Inc. | Global in-line extent-based deduplication |
US10635316B2 (en) * | 2014-03-08 | 2020-04-28 | Diamanti, Inc. | Methods and systems for data storage using solid state drives |
US9442941B1 (en) * | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9799017B1 (en) | 2014-09-19 | 2017-10-24 | Amazon Technologies, Inc. | Cross-data-store operations in log-coordinated storage systems |
US9122694B1 (en) * | 2014-09-24 | 2015-09-01 | Logzilla Corporation | Systems and methods for highly scalable system log analysis, deduplication and management |
US9740631B2 (en) * | 2014-10-07 | 2017-08-22 | Google Inc. | Hardware-assisted memory compression management using page filter and system MMU |
US10007619B2 (en) * | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
US10248656B2 (en) | 2015-06-18 | 2019-04-02 | International Business Machines Corporation | Removal of reference information for storage blocks in a deduplication system |
US9697079B2 (en) * | 2015-07-13 | 2017-07-04 | International Business Machines Corporation | Protecting data integrity in de-duplicated storage environments in combination with software defined native raid |
US20170017571A1 (en) * | 2015-07-17 | 2017-01-19 | Samsung Electronics Co., Ltd. | Method and apparatus fori n-line deduplication in storage devices |
US10025531B2 (en) * | 2015-09-10 | 2018-07-17 | HoneycombData Inc. | Reducing read command latency in storage devices |
US9983821B2 (en) * | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US9966152B2 (en) * | 2016-03-31 | 2018-05-08 | Samsung Electronics Co., Ltd. | Dedupe DRAM system algorithm architecture |
CN107402889B (zh) * | 2016-05-20 | 2023-07-11 | 三星电子株式会社 | 检索数据方法、存储数据方法和重复数据删除模块 |
US10282124B2 (en) * | 2016-06-23 | 2019-05-07 | International Business Machines Corporation | Opportunistic handling of freed data in data de-duplication |
US10572484B2 (en) * | 2016-09-16 | 2020-02-25 | Oracle International Corporation | Duplicate reduction or elimination with hash join operations |
KR102509913B1 (ko) * | 2017-01-25 | 2023-03-14 | 삼성전자주식회사 | 최대화된 중복 제거 메모리를 위한 방법 및 장치 |
US10678778B1 (en) * | 2017-10-19 | 2020-06-09 | EMC IP Holding Company LLC | Date deduplication acceleration |
US10366011B1 (en) * | 2018-05-03 | 2019-07-30 | EMC IP Holding Company LLC | Content-based deduplicated storage having multilevel data cache |
US11308036B2 (en) * | 2019-04-11 | 2022-04-19 | EMC IP Holding Company LLC | Selection of digest hash function for different data sets |
-
2018
- 2018-11-04 US US16/180,003 patent/US10628072B2/en active Active
-
2019
- 2019-07-04 TW TW108123547A patent/TWI812748B/zh active
- 2019-07-10 KR KR1020190083463A patent/KR20200021878A/ko not_active Application Discontinuation
- 2019-08-14 JP JP2019148950A patent/JP2020030822A/ja active Pending
- 2019-08-19 CN CN201910764183.7A patent/CN110851076A/zh active Pending
-
2020
- 2020-03-24 US US16/828,930 patent/US20200225862A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2020030822A (ja) | 2020-02-27 |
US20200225862A1 (en) | 2020-07-16 |
KR20200021878A (ko) | 2020-03-02 |
CN110851076A (zh) | 2020-02-28 |
US20200065017A1 (en) | 2020-02-27 |
TWI812748B (zh) | 2023-08-21 |
US10628072B2 (en) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318434B2 (en) | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application | |
CN109085997B (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
US11055230B2 (en) | Logical to physical mapping | |
TW202009716A (zh) | 記憶體系統及刪除重複記憶體系統 | |
US7882304B2 (en) | System and method for efficient updates of sequential block storage | |
US10521131B2 (en) | Storage apparatus and storage control apparatus | |
CN105917319B (zh) | 存储器单元和方法 | |
TWI804466B (zh) | 擷取記憶體中儲存的資料的方法與去重複模組 | |
KR20170098187A (ko) | 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법 | |
WO2016046911A1 (ja) | ストレージシステム及びストレージシステムの管理方法 | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US10496543B2 (en) | Virtual bucket multiple hash tables for efficient memory in-line deduplication application | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
CN110851074B (zh) | 嵌入式参考计数器和特殊数据模式自动检测 | |
US20170286313A1 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US10528284B2 (en) | Method and apparatus for enabling larger memory capacity than physical memory size | |
US10180901B2 (en) | Apparatus, system and method for managing space in a storage device | |
KR102589609B1 (ko) | 분할된 저장장치에서의 스냅샷 관리 | |
US9104325B2 (en) | Managing read operations, write operations and extent change operations | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
CN113254363A (zh) | 具有部分逻辑到物理地址转换表的非易失性存储控制器 | |
US11327664B1 (en) | Fast small write forwarding with non-temporal cache memory |