TW202011202A - 持久性儲存元件管理 - Google Patents
持久性儲存元件管理 Download PDFInfo
- Publication number
- TW202011202A TW202011202A TW108129760A TW108129760A TW202011202A TW 202011202 A TW202011202 A TW 202011202A TW 108129760 A TW108129760 A TW 108129760A TW 108129760 A TW108129760 A TW 108129760A TW 202011202 A TW202011202 A TW 202011202A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- persistent storage
- block
- physical location
- location
- Prior art date
Links
- 230000002085 persistent effect Effects 0.000 title claims abstract description 88
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000013507 mapping Methods 0.000 claims abstract description 16
- 238000004590 computer program Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 claims description 2
- 230000004044 response Effects 0.000 claims description 2
- 238000013459 approach Methods 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1032—Simple parity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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
- 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/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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/065—Replication 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a 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/28—Using a specific disk cache architecture
- G06F2212/285—Redundant cache memory
- G06F2212/286—Mirrored cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/301—In special purpose processing node, e.g. vector processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed 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/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Complex Calculations (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
一種方法,包含下列步驟:接收於一虛擬位置寫入資料的一請求;將該資料寫入至一持久性儲存元件的一實體位置;及記錄從該虛擬位置到該實體位置的一對映關係;其中該實體位置對應於該持久性儲存元件上的一區塊序列中的下一可用區塊。
Description
本案有關持久性儲存元件管理。
資料可被儲存在持久性儲存元件(諸如硬碟機)上,其有數個區塊。欲向該磁碟機寫入資料的請求可指明持久性儲存元件的一實體位置(諸如區塊),資料將寫入於該位置。欲從該磁碟機讀取資料的請求可指明持久性儲存元件的一實體位置(諸如區塊),資料將從該位置讀取。
在第一範例實施例中,提供有一種方法,包含:接收於一虛擬位置寫入資料的一請求;將該資料寫入至一持久性儲存元件上的一實體位置;及記錄從該虛擬位置到該實體位置的一對映;其中該實體位置對應於該持久性儲存元件上的一區塊序列中的一下一可用(free)區塊。
一些實施例中,提供有一種用於一驅動器的方法,以接收於一虛擬位置寫入資料的請求,於依序的下一可用實體位置處寫入資料,以及記錄在虛擬與實體位置之間的對映關係。藉由永遠在磁碟上的下一可用區塊上儲存資料,能利用此來避免磁碟完成讀取-修改-寫入的循環。此能改善產量及寫入速度。
此情況中,「下一」可指區塊序列中的下一個。該序列可基於該特定持久性儲存元件的配置方式來決定。例如,「下一」可為至少部分地基於具有離目前區塊最短的預期尋找時間的區塊。
此方法可經由驅動器來實施。驅動器可提供用以寫入資料、讀取資料、及更新資料的功能。如此,該驅動器提供了對於一區塊元件(諸如持久性儲存元件)的全部必要功能性。特定而言,該驅動器可為一使用者空間應用程式,其接收來自核心模組的系統呼叫並轉而對底層的持久性元件寫入資料。寫入
第1圖顯示用於驅動器處理對一持久性儲存元件(諸如硬碟機)之寫入請求的範例做法。此可在一系統上運行之一驅動器中實施。
於步驟101,接收於該持久性儲存元件之第一位置寫入資料的一請求。該請求可被驅動器的一函數呼叫所接收。該請求可包含該資料或者可包含指向可擷取該資料之處的一指標(例如一記憶體位址)。
該第一位置是一虛擬位置,因為其可不對應至持久性元件上的實體位置。然而,該第一位置經建構成彷若它是實體位置,因為該驅動器的重導向對該驅動器之使用者而言是隱藏的。該請求可因而包含該第一位置的識別符,諸如一區塊索引及磁碟識別符。欲從該虛擬位置讀取該資料的一後續請求因而應當回傳該同一資料,無論該資料的實體位置為何。
在一些情況中,該資料可為一資料串流之部分。因而針對該串流中的各區塊會接收(或視為正在接收)欲寫入資料的一請求。
於步驟102,該資料被寫入一第二位置。該第二位置是實體位置,該實體位置對應於該持久性儲存元件上之一區塊。然而,其可不同於該虛擬位置指示的任何區塊。該虛擬位置不一定相關於該實體位置。
特定而言,該實體位置可為該持久性儲存元件的頭部(head),也就是該持久性儲存元件的下一可用區塊或是該持久性儲存元件的下一可用區塊序列。此能藉由一頭部計數器(head counter)記錄於該持久性儲存元件,該頭部計數器記錄該持久性儲存元件之下一可用區塊的索引。可用區塊是其中沒有儲存資料的一區塊,或者若其有儲存資料,該資料無需為可擷取的一區塊。以此方式,該區塊被附接至已被寫入的區塊序列。
藉由寫入至下一可用區塊(其定義為可用的),不需要判定是否於所指示區塊處的資料已經改變。此避免一開始從該區塊讀取的需要,而因此能產生改善的效能。
更甚者,由於實體位置不必然相關於虛擬位置,請求者(諸如程式)不需要為此判定下一可用區塊在哪。以位置作為標籤來擷取資料的功能,從以位置作為機制以供管理持久性儲存元件的功能解除耦接。這些功能分別由虛擬位置及實體位置進行。
於步驟103,計算用於該實體位置所指示之區塊處的資料的一檢查總和。該檢查總和可為一密碼雜湊值。其能經用以驗證從該區塊後續地擷取的資料與儲存於該區塊的資料相同。在一些情況中,該檢查總和可包含同位(parity)資訊,其能校正區塊中的一些錯誤。
於步驟104,更新用於該持久性儲存元件的元資料。
該元資料包含從該虛擬位置到該實體位置的對映。此將該虛擬位置(請求者或另一程序能利用其來指示出意圖擷取的資料)鏈結至該實體位置(真正資料儲存之處)。該元資料進一步包含用於各區塊的檢查總和。
元資料可被儲存在持久性儲存元件上。例如,其可為該持久性儲存元件的一預先決定部件。額外地或替代地,元資料儲存在可針對作為快取之用途經最佳化的一分離持久性儲存元件上。
在一些情況中,更新用於該區塊之元資料的步驟包含決定是否用於該第一位置所指示之區塊的元資料已經存在。若其存在,可更新原始的元資料,而插入替代元資料(或者在原始元資料上覆寫新的元資料)。如此能防止元資料具有用於相同資料的多筆輸入項。可將對應於前一位置的實體位置標記為髒的(dirty),表示其可自由被覆寫。
於步驟105,更新該頭部計數器以反映下一可用區塊。
此可包含遞增該頭部計數器至持久性儲存元件之區塊序列中的下一區塊(或者一旦已到達最終的區塊,則環繞至第一個區塊)。然而,在一些情況中,可跳過某些區塊(例如,若該些區塊對應於該持久性儲存元件的故障部分、或者若該持久性儲存元件遺失)。
此可涉及計算尾部(tail)。尾部可對應於在區塊序列中已有資料寫入之頭部之前最早的區塊。最早的區塊不一定有最低的索引。若經遞增的頭部計數器等於尾部,此表示該頭部計數器指示出的標稱下一可用區塊其實並非可用的:它已有寫入資料。此情況中,可發出通知、警告、或錯誤,及/或可進行垃圾回收程序。參照第8圖,顯示了一範例垃圾回收程序。直到完成垃圾回收程序為止,驅動器可拒絕處理要寫入資料的任何更多請求。
替代地,尾部可為可以被接續地寫入資料的位置。在一些情況中,此可對應至一已垃圾回收區域。
在一些情況中,尾部可被記錄成一尾部計數器,該尾部計數器乃基於垃圾回收過程所更新。
此做法提供一種寫入資料到持久性儲存元件的高效能做法,因為可避免一些習用的寫入做法的讀取–修改–寫入循環。此外,因為資料被連續地寫入,其往往產生較快的寫入速度。
另一優點是利用目前做法可延長持久性儲存元件的壽命。習用做法中,當單一區塊故障或達到其最大寫入次數時,往往替換整個元件。例如,在硬碟的情況中,單一熱點(對應於一個實體位址)能致使一持久性儲存元件達到其壽命終點,即使該持久性儲存元件之大部分從未被寫入。然而,在目前做法中,讀寫頭在整個持久性儲存元件移動。由於資料永遠被寫入至頭部,如此將自然地導致在整個該持久性儲存元件相等程度的寫入動作。換言之,在任何區塊被寫入第二次之前,各區塊將概略地被寫入一次,無論正在寫入之資料的虛擬位址為何。此做法因而可避免持久性儲存元件過早磨耗。寫入實例
第2圖顯示如何利用第1圖所示做法來寫入一資料串流至一持久性儲存元件的操作實例。第2圖中,驅動器將資料寫入至單一持久性儲存元件(諸如硬碟機)。
於200,該系統經顯示在其初始狀態中。頭部計數器將位置0指示為將被寫入的下一可用區塊。對映是空的。
於201,該驅動器接收要寫入資料a
至虛擬位置6的一請求。由於頭部計數器將實體位置0指示為下一可用區塊,資料a
被寫入於實體位置0,連同檢查總和h(a)
。該對映經更新以顯示從虛擬位置6到實體位置0的對映。頭部計數器經遞增至實體位置1。尾部經計算為位於實體位置0處,不同於頭部計數器。
於202,驅動器接收要寫入資料b
至虛擬位置3的一請求。由於頭部計數器將實體位置1指示為下一可用區塊,資料b
被寫入於實體位置1,連同檢查總和h(b)
。該對映經更新以顯示從虛擬位置3到實體位置1的對映。頭部計數器經遞增至實體位置2。尾部經計算為位於實體位置0處,不同於頭部計數器。
於203,驅動器接收要寫入資料c
至虛擬位置2的一請求。由於頭部計數器將實體位置2指示為下一可用區塊,資料c
被寫入於實體位置2,連同檢查總和h(c)
。該對映經更新以顯示從虛擬位置2到實體位置2的對映。頭部計數器經遞增至實體位置3。尾部經計算為位於實體位置0處,不同於頭部計數器。
於204,驅動器接收要寫入資料b'
至虛擬位置3的一請求。由於頭部計數器將實體位置3指示為下一可用區塊,資料d
被寫入於實體位置3,連同檢查總和h(b')
。該對映經更新以顯示從虛擬位置3到實體位置3的對映。此取代了先前從虛擬位置3到實體位置1的對映。實體位置1因而被標記為髒的,而在垃圾回收程序中能經釋放。然而,位於實體位置1的資料維持於實體位置1處,直到發生此垃圾回收程序為止。
頭部計數器經遞增至實體位置4。尾部經計算為位於實體位置0,不同於頭部計數器。
此實例示範了在目前做法下寫入動作的連續性質。在驅動器接收欲在不同虛擬位置處寫入資料的請求的同時,驅動器實際上依序地寫入。此避免了在寫入操作期間驅動器要從持久性儲存元件讀取的需要,並因而可提供針對寫入隨機資料的更高效能。寫入至陣列
可利用一類似做法以將資料當作在整個持久性儲存元件陣列的一條帶(stripe)來寫入。以此方式,元件中的一子集合能被用於該資料,其餘元件能被用於同位(parity)。
在配置設定期間,驅動器可經配置以具有一特定彈性(resilience)。換言之,在n
個持久性儲存元件的陣列之中,資料被儲存在整個該資料的條帶中。各條帶包含n個區塊,其中之一區塊在各持久性儲存元件上。在各條帶內,該些區塊中k
個區塊包括資料,而該些區塊中m
個區塊為同位,使得n = k + m
。因此,若可取得一條帶內之區塊中任意k
個區塊(無論該些區塊是資料或同位),能恢復該資料。此可被描述為k + m
同位。一種常見配置是 8 + 2 同位,其中在一條帶內有8個區塊的資料和2個區塊的同位,然而針對k
及m
可使用任意值。
在此方案中一種產生同位資料的做法是利用抹除編碼(erasure encoding)。以下將更詳細說明抹除編碼。
各條帶的區塊在全部的持久性儲存元件上被儲存在相同索引之實體位置中。例如,條帶0由每個元件上位置0處的區塊組成。驅動器能因而維持被全部元件所共用的單一頭部計數器。
在為了簡化而描述單一頭部計數器的同時,實作上各持久性儲存元件可維護一個不同的頭部計數器。此能允許在一元件上發生垃圾回收的同時在另一元件上正發生寫入動作。
對於接續的條帶針對同位利用不同磁碟機而言可能是有用的。要管控此的一種方式是任命用於各條帶的一開始磁碟機:條帶0開始於磁碟機0,條帶1開始於磁碟機1,以此類推。如此將自然地致使同位區塊(在資料區塊之後被寫入)位於不同磁碟機上。
第3圖顯示用於處理一寫入請求的範例做法,其中資料將被儲存在如此的條帶中。此可在一系統上運行的驅動器中實施。
於步驟301,接收到寫入k
個資料區塊的一請求。該請求對應於步驟101所接收的請求。
於步驟302,在已接收k
個資料區塊之後,該驅動器基於經寫入資料來計算同位資料。此產生m
個同位資料區塊。
於步驟303,k
個區塊的資料與m
個區塊的同位資料中每一者被寫入至對應持久性儲存元件由頭部計數器所指示之實體位置處。此導致條帶的完成。此外,k+m
個檢查總和被寫入至元資料,各對應於一個區塊。
於步驟304,以類似於步驟105的方式,更新頭部計數器以反映各元件處下一可用區塊的實體位置。一旦已於頭部計數器所指示之實體位置處寫入一區塊至各持久性儲存元件,可依序遞增該頭部計數器至下一可用位置。
此做法提供一種高效能做法來寫入資料至持久性儲存元件的陣列,因為可避免一些習用寫入做法的讀取–修改–寫入循環。
此也避免了在習用做法中伴隨較高同位而來的懲罰。在能修改資料之處,必須在每次修改後更新同位。因此,若一條帶中有兩個同位區塊,修改一段資料需要用於該資料本身的一次讀取–修改–寫入循環,加上另外兩次讀取–修改–寫入循環用於各同位區塊。此種擴大在習用系統內實際的同位層級上造成效能限制。實作上,習用系統中因此將同位限制為2。
相反地,第3圖中所示做法不涉及任何讀取–修改–寫入循環。增加同位因而以遠低於習用做法的速度增加負擔。因此,同位幾乎可為不受限制的,而實作上可使用2、4、或12同位。
類似地,第3圖中所示做法不限於任何特定大小的陣列,且陣列中可有數以百計的持久性儲存元件。實作上,可使用具有約10個持久性儲存元件的陣列。
更甚者,由於各元件處的操作次數相較為低,甚至更慢的持久性儲存元件可提供高水平的效能。
在一些情況中,陣列中的一個元件可能故障或其他方式無法取得。當此發生時,本來將被寫入該元件的一區塊可能簡單地被寫入該陣列中的下一個元件。以此方式,故障元件並不實質上阻礙寫入動作。
這類情況中,系統仍可被稱為利用k + m
同位。然而,對各條帶而言,最終在一條帶中可能寫入少於k
個資料區塊(因為故障的元件所致),以維持m
個同位區塊。寫入至陣列的實例
第4A及4B圖顯示一範例程序,第3圖中所示做法能利用該範例程序以將一資料串流寫入至一持久性儲存元件陣列。第4A及4B圖中,驅動器將資料寫入至有五個持久性元件的一陣列中。該驅動器經配置以使用3+2同位(即,每3個資料區塊有2個同位區塊)。
於400,該系統經顯示在初始狀態中。頭部計數器將位置0指示為將被寫入的下一可用區塊。對映是空的。磁碟機0、1、2、3、及4之各者是空的。
於401,驅動器接收要寫入資料a
至虛擬位置6的一請求。由於頭部計數器將實體位置0指示為下一可用區塊,資料a
被寫入於磁碟機0上的實體位置0,連同檢查總和h(a)
。該對映經更新以顯示從虛擬位置6到磁碟機0上的實體位置0的對映。由於該條帶尚未完成,不遞增該頭部計數器。
於402,該驅動器接收要寫入資料b
至虛擬位置3的一請求。由於頭部計數器將實體位置0指示為下一可用區塊,資料b
被寫入於磁碟機1上的實體位置0,連同檢查總和h(b)
。該對映經更新以顯示從虛擬位置3到磁碟機1之實體位置0的對映。由於該條帶尚未完成,不遞增該頭部計數器。
於403,該驅動器接收要寫入資料c
至虛擬位置2的一請求。由於頭部計數器將實體位置0指示為下一可用區塊,資料c
被寫入於磁碟機2上的實體位置0,連同檢查總和h(c)
。該對映經更新以顯示從虛擬位置2到磁碟機1之實體位置0的對映。由於該條帶尚未完成,不遞增該頭部計數器。
現在已寫入3個資料區塊,藉由對2個其餘元件加上同位區塊就完成該條帶。同位資料的計算乃基於已經被寫入至該等元件的資料。此可自該等元件讀取,或者可被儲存在記憶體中。此產生同位資料d
及同位資料e
。
於404,由於頭部計數器將實體位置0指示為下一可用區塊,同位資料d
被連同檢查總和h(d)
寫入於磁碟機3上的實體位置0,而同位資料e
被連同檢查總和h(e)
寫入於磁碟機4上的實體位置0。此外,現在該條帶已完成,頭部計數器經遞增至該序列中的下一可用位置,而現在為1。
以此方式,驅動器無需在寫入操作期間從持久性儲存元件讀取就可寫入一條帶,且因而可針對藉任何同位層級的寫入隨機資料提供更高的效能。讀取
第5圖顯示用於處理一讀取請求的範例做法。此可以相同於第1圖之做法的方式來實施。
於步驟501,接收到要從一虛擬位置讀取資料的一請求。該請求可與於步驟101之請求相同的方式被接收。例如,此可被驅動器的一函數呼叫所接收。該請求可包含指向一旦該資料經擷取後應儲存該資料之處的一指標(例如一記憶體位址)。
於步驟502,從元資料取得用於該資料的實體位置,該實體位置對應於第一位置。可藉由在元資料的對映中尋找該虛擬位置以及尋找先前於步驟104所儲存之相應實體位置,來獲得該實體位置。
若元資料不包含對該虛擬位置的參照,讀取請求可能失敗,並可發出錯誤。
於步驟503,藉由從位於適當持久性儲存元件處的該實體位置讀取來擷取該資料。該資料可接著被儲存在該請求中所指示的一記憶體位置中或在另一位置中。
於步驟504,驗證該經擷取資料以確保經擷取資料就是原先儲存的資料。此可涉及計算用於經擷取資料的檢查總和,並將其與連同該資料儲存的檢查總和做比較。若該等檢查總和相符,則非常可能該資料已經成功地擷取。
若該等檢查總和不相符,但該資料能被恢復,則可進行恢復資料。此可利用同位資訊,該同位資訊與該資料儲存在相同條帶中。若無法校正錯誤,則可發出一通知、警告、或錯誤。
經擷取資料能接著被回傳給發出讀取請求的該程序。此可包含提供一成功值(諸如0)作為給一函數呼叫的回傳值。
在一些情況中,可省略步驟504。例如,在期望將產量最大化的讀取動作上,可選擇性地跳過步驟504。
從其他請求者的觀點,該資料過去儲存在該虛擬位置處,並且從該虛擬位置擷取。因而,該持久性儲存元件的管理及配置是試圖讀取該資料的程序所不清楚的。區塊重建
偶爾,無法擷取位於特定實體位置處的資料,或者實體位置太慢。此可能發生在如因為一區塊或元件的硬體故障而使步驟503失敗,或者在如果經擷取、但未得到驗證的資料致使步驟504失敗。當此發生時,可採取一區塊重建程序。
第6圖顯示用於處理對一缺失區塊之區塊重建的範例做法。此實例中,資料經儲存於持久性儲存元件的一陣列處,該持久性儲存元件陣列經配置以使用k + m
同位。
於步驟601,驅動器從與缺失區塊相同之條帶中的至少k
個區塊讀取資料。由於該條帶中的各區塊來自一不同持久性儲存元件,在實作上一條帶內的多個區塊同時無法取用是極不可能的。
於步驟602,驅動器利用可取得的資料來重建來自該缺失區塊的資料。此是可行的,因為對於k + m
同位而言,能利用一條帶的任意k
個區塊來重建該條帶內的全部區塊。若已經利用抹除編碼將一條帶中的區塊編碼以產生同位,則能藉由抹除解碼(如下說明)來推導出任何缺失區塊。
於步驟603,經重建資料被寫入於頭部(也就是下一可用區塊,如頭部計數器所指示)。可以相同於步驟102及103的方式來實施此。
於步驟604,更新元資料以使得對應於該缺失區塊的虛擬位置現在被對映至重建資料被寫入的區塊。該缺失區塊能接著被標記為髒的(若沒有硬體問題)或者被記錄為不可使用的(若有硬體問題)。
以此方式,在一次失敗讀取動作後能馬上恢復資料。區塊重建程序發生快速,因為僅有失敗的區塊需要被重新寫入。此允許最小的速度損失:儘管在第一次讀取後的重建資料中稍微有延遲,但任何後續的讀取動作將回復為原始的速度,即使硬體問題還未得到解決。
當由於一個故障持久性儲存元件而致使必需區塊重建時,全部的區塊可被重建且重新寫入至非故障的元件。一旦此程序發生,陣列的速度從降級狀況中恢復,不需要再寫入其他非故障持久性儲存元件的任何資料。複製
在一些情況中,可能期望有單一個虛擬位址對應於多個實體位址。相同的資料經複製於各實體位址處。
以此方式,一讀取請求可從對應於該虛擬位置之實體位址中任意者讀取。若該等實體位址中之一者處的區塊失敗,讀取請求可從其他實體位址中任意者解決。可利用上述的區塊重建技術來重建失敗的區塊。此能避免重建的延遲,同時仍提供發生重建的可能。
替代地,在一些情況中複製本可被儲存於緊隨在後之實體位址中一或更多者處。若第一個實體位址無法取得,則資料能自該資料被複製之下一實體位址處擷取。
因此,從使用者的觀點,陣列看起來從未減慢,即使在陣列內的一個持久性儲存元件有故障。更新
第7圖顯示用於處理一更新請求的範例做法。此可以相同於第1圖之做法的方式來實施。
於步驟701,接收到要更新來自一虛擬位置之資料的一請求。該請求可與步驟101之請求以相同方式所接收。例如,此可藉由該驅動器的一函數呼叫接收。
於步驟702,從元資料移除對該虛擬位置的參照,且對應的實體位置被標記為髒的。此表示該實體位置可自由用於將來的使用。
一旦更新了元資料,不需要有進一步持久性儲存元件操作。若該虛擬位置不在元資料中,則該實體位置處的相對應資料不能被擷取。該實體位置最終將在發生了垃圾回收程序後被再使用。髒 的區塊
已就經選擇區塊被標記成髒的這方面說明了更新資料。各個條帶可藉維護一個對該條帶內未使用區塊之個數的計數器來實施此操作。當一個區塊被標記為髒的或是不可存取時(例如,由於相應元件故障),則用於該條帶的空隙(gap)數可被遞增。當各個資料區塊被再寫入至頭部時(例如垃圾回收期間),用於該條帶的空隙數也可被遞增。一旦計數器到達一預先決定極限(其可為一條帶內儲存的非同位區塊數),該條帶可垃圾回收( Garbage Collection )
當一虛擬位置所指示的資料被更新時,對應的實體位置可被標記為髒的,表示該實體位置能被再使用。因此,儘管資料可能初始地為接續地寫入一持久性儲存元件上,隨時間過去在資料的序列中可能出現空隙。
一種減輕此情況的方式是定期地進行垃圾回收。此目標在將資料從尾部(也就是在經寫入區塊之序列中最早的非髒的區塊)移至頭部,直到序列中沒有空隙為止。
可回應於符合一或更多垃圾回收條件來進行垃圾回收。
第一個垃圾回收條件可為該持久性儲存元件上的空隙數超過一預定臨界值。例如,當空隙數超過持久性儲存元件之容量的1%時,可符合此垃圾回收條件。
第二個垃圾回收條件可為該持久性儲存元件的活動程度低於一臨界值。例如,若該持久性儲存元件已有數分鐘未被使用,可開始垃圾回收程序。
第三個垃圾回收條件可為該持久性儲存元件的可用容量落於一臨界值之下。例如,當頭部計數器到達接近尾部,則嘗試恢復一些可用空間可能是有用的。
第四個垃圾回收條件可為已經過一特定時段。亦即,定期地開始垃圾回收程序可能是有用的。
額外地或替代地,驅動器未在處理請求且存在有一或更多髒的區塊時,可隨時發生垃圾回收。
第8圖顯示一範例垃圾回收程序。
於步驟801,計算尾部。尾部是在經寫入區塊之序列中最早的非髒的區塊(亦即,正儲存資料的區塊)。換言之,其為最早的經寫入非髒的區塊。
於步驟802,儲存於尾部的資料被寫入至頭部計數器所指示的區塊。
於步驟803,更新用於該持久性儲存元件的元資料。一個將用於該新寫入區塊之虛擬位址對映至頭部計數器的新的輸入項取代了先前用於該區塊的輸入項。
於步驟804,以相同於步驟105的方式,更新頭部計數器以反映下一可用區塊。
此程序被重複直到不再符合該些垃圾回收條件中之一者,或者直到沒有剩下的髒的區塊為止。藉由迭代地將區塊從尾部移到頭部,最終將不再有剩餘的空隙。此避免任何
更甚者,能隨時停止此程序。一旦步驟804結束,驅動器已準備好處理進一步請求(包括寫入新的區塊)。以此方式,能開始及停止垃圾回收而不導致顯著的停機時間(downtime)。
以此方式,當更新資料時能恢復整體的儲存容量,而不限制其他請求的效能。垃圾回收實例
第9圖顯示用於進行垃圾回收的一可用範例做法。其可(例如)藉由與進行第1圖之方法相同的驅動器來進行。
第9圖中,該驅動器經配置以使用2+1同位(也就是對每2個資料區塊有1個同位區塊)。實作上,可對任何同位層級應用相同的做法。第9圖略去了頭部計數器及對映。
於900,該系統經顯示具有先前已被寫入的資料。磁碟機0於實體位置0及2處有被標記為髒的區塊。磁碟機1於實體位置1處有一區塊被標記為髒的。磁碟機2於實體位置1處有一區塊被標記為髒的。全部磁碟機中位於位置6及7處的區塊為空的。全部磁碟機中的全部其他區塊具有非髒的資料。頭部計數器位於實體位置6,因為其代表下一可用區塊。尾部位於0,因為磁碟機1上位置0處的區塊是最早的非同位非髒的區塊。
於901,於尾部(位置0)處之全部非髒的、非同位區塊中的資料已被移動至頭部。位於磁碟機0上之位置0處的資料(a
)未被移動,因為其已被標記為髒的。位於磁碟機2上之位置0處的資料(ab
)未被移動,因為其為同位資料。只有磁碟機1上之位置0處的資料(b
)被移動至頭部。其已被移動至磁碟機0上的位置6。位置6是從頭部計數器推導出(頭部計數器指示出位置6為下一可用區塊)。磁碟機0是藉由循環通過各條帶的開始磁碟機:由於位置5處的條帶從磁碟機2開始,則位置6處的條帶從磁碟機0開始。
移動之後,對映經更新使得先前對映至磁碟機1上之位置0的虛擬位置現在對映至磁碟機0上的位置6。磁碟機1上之位置0被標記為髒的,因為不再需要該資料而該區塊能被再使用。頭部計數器維持於6。尾部移至2,因為下一個最早的非髒的、非同位資料位於磁碟機2上的位置2。全部磁碟機上的所有位置1是髒的或是同位(或換言之,條帶1中的空隙數是2)。
於902,位於尾部(位置2)之全部非髒的、非同位區塊中的資料已被移動至頭部。磁碟機1上之位置1處的資料(c
)、磁碟機2上之位置1處的資料(d
)、及磁碟機0上之位置2處的資料(f
)未被移動,因為其已被標記為髒的。磁碟機0上之位置1處的資料(cd
)及磁碟機1上之位置2處的資料(ef
)未被移動,因為是同位資料。只有磁碟機2上之位置2處的資料(e
)被移動至頭部。其已被移動至磁碟機1上的位置6。位置6是從頭部計數器推導出(頭部計數器指示出位置6為下一可用區塊)。磁碟機1是從該條帶中前一被寫入區塊所導出:由於先前寫入磁碟機0,則序列中的下一個磁碟機是磁碟機1。
移動之後,更新對映使得先前被對映至磁碟機2上之位置2的虛擬位置現在對映至磁碟機1上的位置6。磁碟機2上之位置2被標記為髒的,因為不再需要該資料,而該區塊能經再使用。
由於條帶6中的資料現在已完成,計算同位資料(be
)並將其寫入至條帶6中的其餘區塊(也就是磁碟機1上的位置6處)。頭部計數器移至7,因為下一可用區塊是在位置7。尾部移至3,因為下一最早的非髒、非同位資料位於磁碟機0及1上的位置3處。
遵循此垃圾回收程序,全部磁碟機上的全部位置0、1、及2現在可供使用。一旦完成條帶7,則頭部計數器將循環至條帶0。因而,垃圾回收允許一持久性儲存元件或持久性儲存元件的陣列更能被完全運用。抹除編碼
如上所述,抹除編碼是其中一資料片段經編碼以形成n
個資料片段的一種做法。從任意k
個資料片段 (k
≤n
)中可恢復原始資料。各資料片段是一個w
位元(w
-bit)的字組(word),其中w
能為任意正整數。例如,1位元及8位元為常見的。一般,用於n
及w
的值越高,抹除編碼及解碼程序就越運算密集。
首先,原始資料經分段成為w
×k
位元之資料區段。
其次,藉由將各資料區段分離成為k
個w
位元大小的資料字組來形成k
個資料片段d1
…dk
。這些為資料字組。
資料片段能被儲存在持久性儲存元件陣列上的一條帶中,使得該等資料片段分配在該等持久性儲存元件上。在一些情況中,不同持久性儲存元件能持有不同個數的資料片段。可選地,也儲存基於該等資料區段的一檢查總和。一旦儲存了全部的資料區段,也能儲存基於原始資料的一進一步檢查總和。
有多個方式可用以選擇該些係數。一個做法是利用Cauchy Reed–Solomon代碼。此之發生乃藉由在GF
(2 w
)中選擇n
個數並將其分割成為兩個不同集合,及,,使得:
其中此算數是定義在加洛亞場GF
(2 w
)上。
一旦儲存了資料,能利用任意k個資料片段來擷取該資料。例如,若取得了資料字組d1
…dk
,則利用其被分段之方式的反向能組合這些資料字組。若使用一編碼字組ci
,則能解開基於上述之方程式的方程式系統以取得缺失資料的片段。
在一些情況中,能利用一或更多GPU來有效率地進行抹除編碼,同時請求本身是由一或更多CPU來處理。此能產生改善的整體效能。
抹除編碼提供一種做法,其允許高度彈性及可撓性。能跨於多個獨立的系統儲存資料片段。若遺失了m
個或更少個片段,相應的資料區段得以恢復,而因此能計算原始資料。此外,能利用任意k
個資料片段來恢復原始資料,此允許儲存系統中任意者回應。系統
第10圖顯示一範例電腦系統1000的區塊圖。
系統1000包含一CPU(中央處理單元)1010、一主記憶體1020、一或更多周邊設備1030、及一GPU(圖形處理單元)1050。CPU 1010、主記憶體1020、周邊設備1030、及GPU 1050由一匯流排1040連接。在PCIe(快速PCI)拓撲的情況中,匯流排1040包括一根複合體,而周邊設備1030及GPU 1050之各者是PCIe端點。GPU 1050能經由匯流排1040直接與周邊設備1030通訊。在一些情況中,提供超過一個CPU 1010及/或超過一個GPU 1050。
周邊設備1030可包括持久性儲存元件(諸如硬碟磁碟機、固態磁碟機、或類似者)、儲存控制器(諸如RAID控制器)、網路控制器(諸如網路介面卡)、切換器(諸如PCIe切換器,其經配置以連接其他周邊設備),或各式各樣元件中任意者。
周邊設備1030及GPU 1050可經由匯流排1040存取主記憶體1020。通過DMA(直接記憶體存取),此能允許周邊設備1030或GPU 1050從主記憶體讀取資料及向其寫入資料。此可涉及從主記憶體1020複製資料至對周邊設備1030或GPU 1050而言為區域性(local)的一記憶體。
在一些情況中,用於CPU 1010及GPU 1050的記憶體空間能經由統一的虛擬記憶體來共享。此允許指向單一記憶體位址的一指標在CPU與GPU之間傳遞,而不需要在主記憶體1020及區域性記憶體之間複製資料。
可利用電腦系統500來實施上述的方法。例如,CPU 1010或GPU 1050可運行一程式,該程式操作為對儲存元件周邊設備1030中一或更多者的驅動器。
儲存元件周邊設備1030可具不同類型。相較快速的儲存元件周邊設備1030可被用以儲存元資料(諸如虛擬與實體位置之間的對映)而相較慢之儲存元件周邊設備1030的陣列可被用以儲存底層的資料。在一些情況中,被用以儲存底層之資料的儲存元件周邊設備1030中的一些能具有混合類型,包括一或更多硬碟機、固態磁碟機、RAM元件、或非揮發性RAM元件。解釋
以上已說明數種方法。將理解這些方法中任意者可由一連串指令所體現,該些指令可形成一電腦程式。這些指令(或此電腦程式)可被儲存在一電腦可讀取媒體上,該電腦可讀取媒體可為非暫態的。當這些指令或此程式被執行時,可致使一處理器(諸如CPU或GPU)進行上述方法。
當已描述一做法為藉由一處理器實施時,此可包含複數個處理器。亦即,至少在處理器的情況中,單數形應被解釋為包括複數形。當方法包含有多個步驟時,不同步驟或者一個步驟的不同部分可由不同處理器進行。在一些情況中,一個步驟可被第一類型處理器進行(例如,大的資料集合的處理可由GPU進行),而另一步驟可被第二類型處理器進行(諸如CPU所進行的元資料查找)。
可改變方法之內步驟的順序,使得步驟順序進行或是平行地進行,但當一步驟依賴另一個已被進行的步驟,或者前後文有相反要求時則除外。
除非有相反表示,否則用語「包含」及其他文法形式意圖具有包容性意義。亦即,其應被認為代表包含所列出的組成部分,以及可能包含其他未指明的組成部分或元素。
在本發明已藉由特定實施例之說明並參照圖式被作出解釋的同時,本發明不意圖被侷限於此類細節。本領域中之技藝人士將顯而易見額外的優點及修改。因此,在最廣泛態樣中的本發明不限於所圖示及說明的該些特定細節、代表性設備及方法、以及例示性實例。因此,可偏離此類細節而無悖離大致之發明概念的精神或範疇。
101:步驟
102:步驟
103:步驟
104:步驟
105:步驟
301:步驟
302:步驟
303:步驟
304:步驟
501:步驟
502:步驟
503:步驟
504:步驟
601:步驟
602:步驟
603:步驟
604:步驟
701:步驟
702:步驟
801:步驟
802:步驟
803:步驟
804:步驟
1000:電腦系統
1010:CPU
1020:記憶體
1030:周邊設備
1040:匯流排
1050:GPU
本說明書參照顯示特定實施例的圖式作為實例而架構。然而,這些僅提供做為示例。
第1圖顯示用於處理一寫入請求的範例做法。
第2圖顯示第1圖之做法的一操作實例。
第3圖顯示用於處理一寫入請求的範例做法,其中資料將被儲存在條帶中。
第4A及4B圖顯示第3圖之做法的一操作實例。
第5圖顯示用於處理一讀取請求的範例做法。
第6圖顯示用於處理一缺失(missing)區塊之區塊重建的範例做法。
第7圖顯示用於處理一更新請求的範例做法。
第8圖顯示用於垃圾回收的範例做法。
第9圖顯示第8圖之做法的操作實例。
第10圖顯示範例電腦系統900的區塊圖。
101:步驟
102:步驟
103:步驟
104:步驟
105:步驟
Claims (21)
- 一種方法,包含下列步驟: 接收於一虛擬位置寫入資料的一請求;將該資料寫入至一持久性儲存元件的一實體位置;及記錄從該虛擬位置到該實體位置的一對映;其中該實體位置對應於該持久性儲存元件上的一區塊序列中的一下一可用(free)區塊。
- 如請求項1所述之方法,其中該虛擬位置及該實體位置無關。
- 如請求項1所述之方法,其中該實體位置由一頭部計數器決定。
- 如請求項3所述之方法,進一步包含: 在將該資料寫入至該實體位置之後,更新該頭部計數器。
- 如請求項1所述之方法,進一步包含: 接收將進一步資料寫入至對應虛擬位置的一或更多請求;其中該資料及該進一步資料形成一資料串流。
- 如請求項1所述之方法,其中在沒有從該持久性儲存元件進行一讀取的情況下發生將該資料寫入至一第二位置的步驟。
- 如請求項1所述之方法,進一步包含: 計算用於該資料的一檢查總和;及將該檢查總和記錄在關聯於該持久性儲存元件的元資料中。
- 如請求項1所述之方法,進一步包含: 決定符合一垃圾回收條件。
- 如請求項8所述之方法,其中該垃圾回收條件包含下列之一或更多者: 在該持久性儲存元件上的一空隙數超過一預定臨界值;該持久性儲存元件的一活動程度落於一臨界值之下;該持久性儲存元件的一可用容量落於一臨界值之下;或已經過了一時段。
- 如請求項8所述之方法,進一步包含,回應於決定符合一垃圾回收條件: 決定於該區塊序列的該尾端的一區塊;將該區塊處的該資料寫入該區塊序列的該頭部;及基於該寫入步驟更新該對映。
- 如請求項1所述之方法,其中將該資料寫入至一持久性儲存元件的一實體位置的步驟包含: 將該資料寫入至一持久性儲存元件的一實體位置,該實體位置對應於包含對應複數個區塊的一條帶(stripe)內的一區塊,該複數個區塊中之各區塊為複數個持久性儲存元件之各持久性儲存元件上的一實體位置。
- 如請求項11所述之方法,進一步包含: 判定在該條帶內之一預先決定個數的區塊已被寫入;計算對應於被寫入該條帶內之該預先決定個數的區塊內之資料的同位(parity);及將該同位資料寫入該條帶內的一或更多區塊中。
- 如請求項12所述之方法,進一步包含: 擷取用於該經擷取資料的一檢查總和;計算用於該經擷取資料的一檢查總和;及比較經計算的該檢查總和以及經擷取的該檢查總和。
- 如請求項11所述之方法,進一步包含: 判定一條帶內的一區塊缺失;自該條帶內一或更多其他區塊重建該缺失區塊處的該資料;將該資料寫入該區塊序列之該頭部;及基於該寫入步驟更新該對映。
- 如請求項11所述之方法,進一步包含: 判定該複數個持久性儲存元件之中的一持久性儲存元件無法取用;及其中將該資料寫入至一持久性儲存元件的一實體位置的步驟包含:將該資料寫入該等持久性儲存元件中的一不同持久性儲存元件上的一實體位置。
- 如請求項1所述之方法,其中記錄從該虛擬位置到該實體位置的一對映的步驟包含: 識別從該虛擬位置到一前一實體位置的一對映;及更新該對映以記錄從該虛擬位置到該實體位置的一對映。
- 如請求項16所述之方法,進一步包含: 將對應於該前一實體位置的該區塊記錄成髒的(dirty)。
- 如請求項1所述之方法,進一步包含: 將該資料的一複本寫入至一接續實體位置。
- 一種系統,包含: 一或更多處理器;及一記憶體;其中該記憶體包含指令,當該等指令由該一或更多處理器執行時配置該一或更多處理器以進行如請求項1至18中任一項所述的方法。
- 一種包含指令的非暫態電腦可讀取媒體,當該等指令由一或更多處理器執行時致使該一或更多處理器以進行如請求項1至18中任一項所述的方法。
- 一種電腦程式,當該電腦程式由一或更多處理器執行時致使該一或更多處理器以進行如請求項1至18中任一項所述的方法。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862725703P | 2018-08-31 | 2018-08-31 | |
US201862725691P | 2018-08-31 | 2018-08-31 | |
US62/725,703 | 2018-08-31 | ||
US62/725,691 | 2018-08-31 | ||
US201862746981P | 2018-10-17 | 2018-10-17 | |
US62/746,981 | 2018-10-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202011202A true TW202011202A (zh) | 2020-03-16 |
Family
ID=67734509
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108129760A TW202011202A (zh) | 2018-08-31 | 2019-08-21 | 持久性儲存元件管理 |
TW108131172A TW202014884A (zh) | 2018-08-31 | 2019-08-30 | 利用非揮發性固定記憶體的區塊元件介面 |
TW108131168A TW202014908A (zh) | 2018-08-31 | 2019-08-30 | 向量處理器儲存 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108131172A TW202014884A (zh) | 2018-08-31 | 2019-08-30 | 利用非揮發性固定記憶體的區塊元件介面 |
TW108131168A TW202014908A (zh) | 2018-08-31 | 2019-08-30 | 向量處理器儲存 |
Country Status (5)
Country | Link |
---|---|
US (7) | US11347653B2 (zh) |
EP (4) | EP4404046A2 (zh) |
JP (3) | JP2020042805A (zh) |
CN (3) | CN110874193A (zh) |
TW (3) | TW202011202A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11347653B2 (en) | 2018-08-31 | 2022-05-31 | Nyriad, Inc. | Persistent storage device management |
CN111104047B (zh) * | 2018-10-25 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理冗余磁盘阵列的方法、设备和计算机可读存储介质 |
US11907068B2 (en) * | 2021-02-16 | 2024-02-20 | Nyriad, Inc. | Read request response for reconstructed data in a degraded drive |
US12056363B2 (en) | 2021-12-21 | 2024-08-06 | Daedalus Cloud Llc | Systems and methods for relocating data in a persistent storage device |
US20230195329A1 (en) * | 2021-12-21 | 2023-06-22 | Nyriad, Inc. | Methods of Administering Metadata for Persistent Storage Device |
Family Cites Families (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5282274A (en) | 1990-05-24 | 1994-01-25 | International Business Machines Corporation | Translation of multiple virtual pages upon a TLB miss |
US5502836A (en) * | 1991-11-21 | 1996-03-26 | Ast Research, Inc. | Method for disk restriping during system operation |
US5459857A (en) * | 1992-05-15 | 1995-10-17 | Storage Technology Corporation | Fault tolerant disk array data storage subsystem |
JP3905992B2 (ja) * | 1999-03-23 | 2007-04-18 | 株式会社東芝 | デジタルデータ記録装置 |
US20040123032A1 (en) | 2002-12-24 | 2004-06-24 | Talagala Nisha D. | Method for storing integrity metadata in redundant data layouts |
US7111118B2 (en) | 2003-10-08 | 2006-09-19 | Lsi Logic Corporation | High performance raid mapping |
US7418649B2 (en) * | 2005-03-15 | 2008-08-26 | Microsoft Corporation | Efficient implementation of reed-solomon erasure resilient codes in high-rate applications |
US7594087B2 (en) * | 2006-01-19 | 2009-09-22 | Sigmatel, Inc. | System and method for writing data to and erasing data from non-volatile memory |
US7734890B2 (en) * | 2006-10-06 | 2010-06-08 | Okralabs Llc | Method and system for using a distributable virtual address space |
US9632870B2 (en) | 2007-03-29 | 2017-04-25 | Violin Memory, Inc. | Memory system with multiple striping of raid groups and method for performing the same |
US20090203430A1 (en) | 2008-02-07 | 2009-08-13 | Igt | Hybrid memory system and spin-buffer journaling in a gaming machine |
KR101449524B1 (ko) | 2008-03-12 | 2014-10-14 | 삼성전자주식회사 | 스토리지 장치 및 컴퓨팅 시스템 |
US9395929B2 (en) | 2008-04-25 | 2016-07-19 | Netapp, Inc. | Network storage server with integrated encryption, compression and deduplication capability |
US20100037056A1 (en) * | 2008-08-07 | 2010-02-11 | Follis Benjamin D | Method to support privacy preserving secure data management in archival systems |
US8832292B2 (en) * | 2008-10-15 | 2014-09-09 | Aster Risk Management Llc | Source-selection based internet backbone traffic shaping |
CN101419573A (zh) * | 2008-12-01 | 2009-04-29 | 成都市华为赛门铁克科技有限公司 | 一种存储管理的方法、系统和存储设备 |
EP2630571B1 (en) | 2010-10-21 | 2020-10-14 | Oracle International Corporation | Two stage checksummed raid storage model |
US9767098B2 (en) * | 2012-08-08 | 2017-09-19 | Amazon Technologies, Inc. | Archival data storage system |
US9058223B2 (en) | 2011-04-22 | 2015-06-16 | Microsoft Technology Licensing Llc | Parallel entropy encoding on GPU |
KR20120134919A (ko) * | 2011-06-03 | 2012-12-12 | 삼성전자주식회사 | 메모리 장치 |
US9183667B2 (en) | 2011-07-15 | 2015-11-10 | Kirill Garanzha | Out-of-core ray tracing with memory-efficient page generation |
US9229809B2 (en) * | 2011-09-11 | 2016-01-05 | Microsoft Technology Licensing Llc | Nonvolatile media journaling of verified data sets |
EP2764516A4 (en) * | 2011-10-05 | 2015-07-08 | Lsi Corp | SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES |
CN103257831B (zh) * | 2012-02-20 | 2016-12-07 | 深圳市腾讯计算机系统有限公司 | 存储器的读写控制方法及对应的存储器 |
WO2014003599A1 (en) | 2012-06-29 | 2014-01-03 | Ems Corparation | Redundant disc encoding via erasure decoding |
FI125308B (en) * | 2012-07-05 | 2015-08-31 | Blancco Oy Ltd | Device, arrangement, method, and computer program for erasing data stored in mass storage |
US9779035B1 (en) * | 2012-08-08 | 2017-10-03 | Amazon Technologies, Inc. | Log-based data storage on sequentially written media |
US9164702B1 (en) * | 2012-09-07 | 2015-10-20 | Google Inc. | Single-sided distributed cache system |
US9152552B2 (en) | 2012-09-11 | 2015-10-06 | International Business Machines Corporation | Securing sensitive information in a network cloud |
US9639457B1 (en) | 2012-12-20 | 2017-05-02 | Datadirect Networks, Inc. | Data storage system and method for data migration between high-performance computing architectures and data storage devices using storage controller with distributed XOR capability |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US9395924B2 (en) * | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US9092152B1 (en) | 2013-03-14 | 2015-07-28 | Datadirect Networks, Inc. | Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same |
US10409730B2 (en) | 2013-03-15 | 2019-09-10 | Nvidia Corporation | Microcontroller for memory management unit |
US9213633B2 (en) * | 2013-04-30 | 2015-12-15 | Seagate Technology Llc | Flash translation layer with lower write amplification |
US9158927B1 (en) | 2013-06-24 | 2015-10-13 | Amazon Technologies, Inc. | Cross-region recovery of encrypted, erasure-encoded data |
US9311011B2 (en) * | 2013-08-07 | 2016-04-12 | Qualcomm Incorporated | Dynamic address negotiation for shared memory regions in heterogenous multiprocessor systems |
US9405623B2 (en) * | 2013-09-25 | 2016-08-02 | Xyratex Technology Limited | Method of, and apparatus for, layout rectification of erasure encoded storage systems |
US9571125B2 (en) * | 2013-10-03 | 2017-02-14 | Futurewei Technologies, Inc. | Systems and methods of vector-DMA cache-XOR for MPCC erasure coding |
US9268640B1 (en) | 2013-12-20 | 2016-02-23 | Emc Corporation | Limiting data loss on parity RAID groups |
US9483349B2 (en) | 2014-01-17 | 2016-11-01 | Netapp, Inc. | Clustered raid data organization |
US9075773B1 (en) * | 2014-05-07 | 2015-07-07 | Igneous Systems, Inc. | Prioritized repair of data storage failures |
CN104063186B (zh) * | 2014-06-30 | 2016-04-06 | 成都万维图新信息技术有限公司 | 一种电子设备的数据访问方法 |
CN104410725A (zh) | 2014-09-17 | 2015-03-11 | 广州杰赛科技股份有限公司 | Gpu的处理方法、系统以及基于gpu的dns解析方法和系统 |
RU2580016C1 (ru) | 2014-10-17 | 2016-04-10 | Закрытое акционерное общество "Лаборатория Касперского" | Способ передачи управления между областями памяти |
US9811275B2 (en) * | 2015-02-27 | 2017-11-07 | Toshiba Memory Corporation | Memory system and data control method |
US9823843B2 (en) * | 2015-07-23 | 2017-11-21 | Qualcomm Incorporated | Memory hierarchy monitoring systems and methods |
US9823968B1 (en) | 2015-08-21 | 2017-11-21 | Datadirect Networks, Inc. | Data storage system employing a variable redundancy distributed RAID controller with embedded RAID logic and method for data migration between high-performance computing architectures and data storage devices using the same |
US10445850B2 (en) | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US9940250B2 (en) | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for writes to storage write cache |
JP6113816B1 (ja) * | 2015-11-18 | 2017-04-12 | 株式会社東芝 | 情報処理システム、情報処理装置、及びプログラム |
US10216419B2 (en) | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
US20170206033A1 (en) | 2016-01-19 | 2017-07-20 | SK Hynix Inc. | Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme |
EP3203377A1 (en) * | 2016-02-08 | 2017-08-09 | Wipro Limited | Method and system for optimized garbage collection in a storage device |
CN107102957A (zh) | 2016-02-22 | 2017-08-29 | 深圳市知穹科技有限公司 | 一种基于gpu与nic之间的内存高速直接交换的方法及系统 |
WO2017161050A2 (en) | 2016-03-15 | 2017-09-21 | Cloud Crowding Corp. | Distributed storage system data management and security |
US10152376B2 (en) * | 2016-06-29 | 2018-12-11 | EMC IP Holding Company LLC | Data object recovery for storage systems |
US10248326B2 (en) * | 2016-06-29 | 2019-04-02 | EMC IP Holding Company LLC | Incremental erasure coding for storage systems |
TWI592799B (zh) * | 2016-07-01 | 2017-07-21 | 群聯電子股份有限公司 | 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置 |
US10739996B1 (en) * | 2016-07-18 | 2020-08-11 | Seagate Technology Llc | Enhanced garbage collection |
CN106383666B (zh) * | 2016-09-07 | 2020-05-01 | 东信和平科技股份有限公司 | 一种数据存储方法及装置 |
US9996411B1 (en) | 2016-11-29 | 2018-06-12 | International Business Machines Corporation | In-channel memory mirroring |
US10296224B2 (en) | 2016-12-21 | 2019-05-21 | Intel Corporation | Apparatus, system and method for increasing the capacity of a storage device available to store user data |
US20180181324A1 (en) | 2016-12-26 | 2018-06-28 | EMC IP Holding Company LLC | Data protection with erasure coding and xor |
WO2019040418A1 (en) | 2017-08-22 | 2019-02-28 | Albert Einstein College Of Medicine, Inc. | VIRAL INHIBITOR WITH BROAD SPECTRUM |
WO2019050418A1 (en) | 2017-09-11 | 2019-03-14 | Nyriad Limited | COMPRESSION OF DATA BASED ON A DICTIONARY |
CN109542335B (zh) * | 2017-09-22 | 2022-04-01 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
US10394706B2 (en) * | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
CN107844431B (zh) * | 2017-11-03 | 2022-01-25 | 合肥兆芯电子有限公司 | 映射表更新方法、存储器控制电路单元与存储器存储装置 |
US10949303B2 (en) * | 2017-12-11 | 2021-03-16 | Fungible, Inc. | Durable block storage in data center access nodes with inline erasure coding |
US10509698B2 (en) * | 2018-02-27 | 2019-12-17 | Goke Us Research Laboratory | Method and apparatus for data encoding and decoding using a standardized data storage and retrieval protocol |
CN115509961A (zh) * | 2018-06-25 | 2022-12-23 | 慧荣科技股份有限公司 | 实体存储对照表产生装置及方法 |
US10783022B2 (en) * | 2018-08-03 | 2020-09-22 | EMC IP Holding Company LLC | Immediate replication for dedicated data blocks |
US11347653B2 (en) | 2018-08-31 | 2022-05-31 | Nyriad, Inc. | Persistent storage device management |
US11115057B2 (en) * | 2020-02-07 | 2021-09-07 | EMC IP Holding Company LLC | Efficient erasure coding of mid-size data objects |
-
2019
- 2019-08-19 US US16/544,605 patent/US11347653B2/en active Active
- 2019-08-21 TW TW108129760A patent/TW202011202A/zh unknown
- 2019-08-22 EP EP24165253.6A patent/EP4404046A2/en active Pending
- 2019-08-22 EP EP19193027.0A patent/EP3617868A1/en not_active Ceased
- 2019-08-28 JP JP2019156155A patent/JP2020042805A/ja active Pending
- 2019-08-29 JP JP2019156878A patent/JP2020038649A/ja active Pending
- 2019-08-29 JP JP2019157181A patent/JP2020038650A/ja active Pending
- 2019-08-30 CN CN201910815672.0A patent/CN110874193A/zh active Pending
- 2019-08-30 TW TW108131172A patent/TW202014884A/zh unknown
- 2019-08-30 CN CN201910817188.1A patent/CN110874194A/zh active Pending
- 2019-08-30 EP EP19194744.9A patent/EP3617892B1/en active Active
- 2019-08-30 US US16/556,575 patent/US11263144B2/en active Active
- 2019-08-30 EP EP19194748.0A patent/EP3627325A3/en active Pending
- 2019-08-30 TW TW108131168A patent/TW202014908A/zh unknown
- 2019-08-30 CN CN201910816269.XA patent/CN110874451A/zh active Pending
- 2019-08-30 US US16/556,711 patent/US11263145B2/en active Active
-
2022
- 2022-01-19 US US17/579,264 patent/US12086070B2/en active Active
- 2022-02-01 US US17/590,721 patent/US11782844B2/en active Active
- 2022-04-27 US US17/731,038 patent/US20220253385A1/en active Pending
-
2023
- 2023-09-07 US US18/463,256 patent/US20230418761A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2020042805A (ja) | 2020-03-19 |
US20220138111A1 (en) | 2022-05-05 |
JP2020038649A (ja) | 2020-03-12 |
EP3617892B1 (en) | 2022-05-11 |
US20200073663A1 (en) | 2020-03-05 |
TW202014908A (zh) | 2020-04-16 |
US12086070B2 (en) | 2024-09-10 |
CN110874194A (zh) | 2020-03-10 |
CN110874451A (zh) | 2020-03-10 |
US11263145B2 (en) | 2022-03-01 |
US20200073818A1 (en) | 2020-03-05 |
US11347653B2 (en) | 2022-05-31 |
US11263144B2 (en) | 2022-03-01 |
JP2020038650A (ja) | 2020-03-12 |
US20220156200A1 (en) | 2022-05-19 |
EP4404046A2 (en) | 2024-07-24 |
TW202014884A (zh) | 2020-04-16 |
EP3627325A3 (en) | 2020-07-29 |
US20220253385A1 (en) | 2022-08-11 |
EP3617892A1 (en) | 2020-03-04 |
US20200073824A1 (en) | 2020-03-05 |
CN110874193A (zh) | 2020-03-10 |
US20230418761A1 (en) | 2023-12-28 |
US11782844B2 (en) | 2023-10-10 |
EP3627325A2 (en) | 2020-03-25 |
EP3617868A1 (en) | 2020-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW202011202A (zh) | 持久性儲存元件管理 | |
US7069382B2 (en) | Method of RAID 5 write hole prevention | |
US7386758B2 (en) | Method and apparatus for reconstructing data in object-based storage arrays | |
US7437508B2 (en) | Method and system for storing data in an array of storage devices with additional and autonomic protection | |
US9817715B2 (en) | Resiliency fragment tiering | |
US9377960B2 (en) | System and method of using stripes for recovering data in a flash storage system | |
US20160062833A1 (en) | Rebuilding a data object using portions of the data object | |
US9990263B1 (en) | Efficient use of spare device(s) associated with a group of devices | |
US11698728B2 (en) | Data updating technology | |
US20090204846A1 (en) | Automated Full Stripe Operations in a Redundant Array of Disk Drives | |
US10108359B2 (en) | Method and system for efficient cache buffering in a system having parity arms to enable hardware acceleration | |
CN101982816B (zh) | 用于保护高速缓存数据完整性的方法和装置 | |
CN104809032A (zh) | 用于存储系统中服务感知的奇偶校验放置的方法和系统 | |
JP2004213647A (ja) | データ記憶装置およびシステム用のログ構造の書込みキャッシュ | |
EP2250563A1 (en) | Storage redundant array of independent drives | |
US20230068214A1 (en) | Storage system | |
US11537330B2 (en) | Selectively improving raid operations latency | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
US20090083319A1 (en) | Method of executing a background task and an array controller | |
US11907068B2 (en) | Read request response for reconstructed data in a degraded drive | |
CN117055807A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
EP0831484A1 (en) | Data reconstruction method and data storage system | |
JP2004348281A (ja) | 冗長記憶装置、方法、およびプログラム |