JP2020038649A - 不揮発性pinnedメモリを用いるブロックデバイスインターフェース - Google Patents
不揮発性pinnedメモリを用いるブロックデバイスインターフェース Download PDFInfo
- Publication number
- JP2020038649A JP2020038649A JP2019156878A JP2019156878A JP2020038649A JP 2020038649 A JP2020038649 A JP 2020038649A JP 2019156878 A JP2019156878 A JP 2019156878A JP 2019156878 A JP2019156878 A JP 2019156878A JP 2020038649 A JP2020038649 A JP 2020038649A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- pinned
- storage devices
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 154
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000009466 transformation Effects 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 12
- 230000002441 reversible effect Effects 0.000 claims description 11
- 238000000844 transformation Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 3
- 238000007906 compression Methods 0.000 claims description 2
- 230000006835 compression Effects 0.000 claims description 2
- 230000006837 decompression Effects 0.000 claims description 2
- 239000012634 fragment Substances 0.000 description 13
- 230000008569 process Effects 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000013459 approach Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/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
- 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
- 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/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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (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
【課題】データが永続的なストレージデバイスに書き込まれること及び読み出されることを可能にするインターフェースを提供する。【解決手段】データを書き込む際にpinnedメモリを用いるための例示的な手法は、ブロックデバイスインターフェースでデータのメモリロケーションを含むデータ書き込み命令を受信することと、データをpinnedメモリにコピーすることと、ベクトルプロセッサによりデータに1つ以上の可逆変換を行うことと、pinnedメモリからのデータを1つ以上のストレージデバイスに非同期的に書き込むこととを含む。データのpinnedメモリは、pinnedメモリでのロケーションに対応し、ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能である。【選択図】図1
Description
本発明は、不揮発性pinnedメモリを用いるブロックデバイスインターフェースに関する。
データは、永続的なストレージデバイスに記憶される場合がある。ドライバは、データが永続的なストレージデバイスに書き込まれる及び読み出されることを可能にするためのインターフェースを提供することができる。
第1の例示的な実施形態において、ブロックデバイスインターフェースでデータのメモリロケーションを含むデータ書き込み命令を受信することと、データをpinnedメモリにコピーすることと、ベクトルプロセッサによりデータに1つ以上の可逆変換を行うことと、pinnedメモリからのデータを1つ以上のストレージデバイスに非同期的に書き込むこととを含み、データのpinnedメモリがpinnedメモリでのロケーションに対応し、pinnedメモリがベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能である、方法が提供される。
第2の例示的な実施形態において、ブロックデバイスインターフェースで1つ以上のストレージデバイスからのデータ読み出し命令を受信することと、1つ以上のストレージデバイスからのデータをメモリロケーションに書き込むことと、ベクトルプロセッサによりメモリロケーションにあるデータに1つ以上の可逆変換を行うこととを含み、データのメモリロケーションがpinnedメモリでのロケーションに対応し、pinnedメモリがベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能である、方法が提供される。
単なる例として特定の実施形態を示す図面を参照しながら説明がなされる。しかしながら、これらは単に例示するために提供される。
いくつかの実施形態では、データ書き込み命令が、最初にブロックデバイスインターフェースで受信される。命令は、記憶されることとなるデータのメモリロケーションを含む。このメモリロケーションは、ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能なメモリであるpinnedメモリにあり得る。ベクトルプロセッサは、次いで、データに1つ以上の可逆変換を行うことができる。データは、次いで、pinnedメモリでのメモリロケーションから1つ以上のストレージデバイスに非同期的に書き込まれる。
このケースでは、「非同期的に」とは、データがメモリに書き込まれることとデータが1つ以上のストレージデバイスに書き込まれることが必ずしもすぐに連続しているものではないことを指す。すなわち、データがメモリに書き込まれると、該データが1つ以上のストレージデバイスに書き込まれるまでに或る量の時間が経過し得る。或る場合には、これは直ちになされ得るが、必ずしもそうである必要はない。これはデータがメモリに書き込まれるときに該データが1つ以上のストレージデバイスに同時に(又は直後に)書き込まれる同期書き込みとは対照的である。
pinnedメモリ
pinnedメモリは、複数のタイプのプロセッサによりダイレクトメモリアクセスでアクセス可能なメモリの一部である。或るケースでは、pinnedメモリは、メインメモリに物理的に存在するユニファイドメモリであり得る。pinnedメモリは、ベクトルプロセッサ(GPUなど)及び1つ以上の他のプロセッサ(CPUなど)によりバスで直接アクセス可能であり得る。このようにして、両方のプロセッサは、メモリをコピーする必要なくメモリの同じデータで動作し得る。これは「ゼロコピー」と呼ばれ得る。
pinnedメモリは、複数のタイプのプロセッサによりダイレクトメモリアクセスでアクセス可能なメモリの一部である。或るケースでは、pinnedメモリは、メインメモリに物理的に存在するユニファイドメモリであり得る。pinnedメモリは、ベクトルプロセッサ(GPUなど)及び1つ以上の他のプロセッサ(CPUなど)によりバスで直接アクセス可能であり得る。このようにして、両方のプロセッサは、メモリをコピーする必要なくメモリの同じデータで動作し得る。これは「ゼロコピー」と呼ばれ得る。
これは、各プロセッサ又はプロセッサタイプに関連するメモリにデータをコピーする必要がある非pinnedメモリとは対照的であり得る。例えば、データがCPUに関連するメモリに記憶された場合、GPUがデータを処理することができる前にGPUに関連するメモリにデータをコピーする必要がある。
したがって、pinnedメモリの使用は、プロセッサ又はプロセッサタイプを切り替えるときのオーバーヘッドを減少させることができる。
いくつかの実施形態では、pinnedメモリは、1つ以上の不揮発性メモリチップを備える不揮発性メモリの物理的一部である。これに関して、「不揮発性」とは、メモリが電力なしでも記憶したデータを維持することを意味すると考えてよい。これは、データを保持するために電力が絶えず維持されなければならない揮発性メモリとは対照的である。
pinnedメモリは、ライトバックキャッシュとして構成され得る。これは、データが新しいデータで上書きされることになるまで(又は少なくとも或る相当な期間にわたって)データを保つキャッシュと考えられてよい。すなわち、データは、キャッシュからストレージデバイスへできるだけ遅く書き込まれてよい。
メモリは、通常は、基礎をなすストレージデバイスよりもはるかにより速い書き込み速度を提供する。したがって、ストレージデバイスへの書き込みを遅らせることにより、ストレージデバイスの速度がより遅くても書き込み速度は遅くならない。さらに、既にメモリにあるデータの繰返しの書き込みは、ストレージデバイスからデータを検索する必要がないので速いものとなる。
キャッシュは不揮発性であるため、電源異常があってもデータは失われない。キャッシュは、必要に応じてリカバリーのために別個のシステムへ移動されてもよい。これは、データをメモリに相当な期間にわたって維持するリスクを低減することができる。
したがって、これらの手法は、最小限のデータ損失リスクで顕著に向上した書き込み速度を提供する。
インターフェース
使用中に、プログラム又はシステムによる使用のためのインターフェースが提供され得る。インターフェースは、ブロックデバイスドライバであり得る。ブロックデバイスドライバは、固定サイズのブロックで動作する基礎デバイスとの相互作用を可能にするように構成されたドライバである。例えば、ストレージデバイスは、通常は、512バイト又は4096バイトのブロックで動作する。システムは、次いで、ブロックデバイスドライバを用いてストレージデバイスと(例えば、デバイスにデータを書き込むこと又はデバイスからデータを読み出すことにより)相互作用することができる。
使用中に、プログラム又はシステムによる使用のためのインターフェースが提供され得る。インターフェースは、ブロックデバイスドライバであり得る。ブロックデバイスドライバは、固定サイズのブロックで動作する基礎デバイスとの相互作用を可能にするように構成されたドライバである。例えば、ストレージデバイスは、通常は、512バイト又は4096バイトのブロックで動作する。システムは、次いで、ブロックデバイスドライバを用いてストレージデバイスと(例えば、デバイスにデータを書き込むこと又はデバイスからデータを読み出すことにより)相互作用することができる。
或るケースでは、単一の基礎デバイスは存在しなくてもよい。代わりに、インターフェースがメタデバイスに基づいて動作してよい。メタデバイスは、インターフェースを用いるプログラムの観点からデバイスであるかのように存在することができる。
しかしながら、メタデバイスは、プログラムから隠れている1つ以上のストレージデバイスにマップされてよい。例えば、ドライバは、データを単一のメタデバイス上に記憶する要求を、データをすべてのデバイスにわたるストライプに記憶することへ変換してよい。このようにして、ドライバは、ハードウェアの詳細を隠すことができる。
インターフェースは、1つ以上のCPU上で実行するドライバとして提供されてよい。加えて又は代替的に、インターフェースは、GPUなどのベクトルプロセッサ上で長く実行するカーネルとして実行してよい。これにより、ベクトルプロセッサ上で実行するカーネルがCPUの介在なしにインターフェースと直接インターフェースすることが可能となる。
書き込み
図1は、データを書き込む際にpinnedメモリを用いるための例示的な手法を示す。
図1は、データを書き込む際にpinnedメモリを用いるための例示的な手法を示す。
ステップ101で、ブロックデバイスインターフェースがデータ書き込み命令を受信する。データ書き込み命令は、インターフェースの関数呼び出しとして受信されてよい。データは、メモリロケーションを参照する命令で指定されてよい。データ書き込み命令はまた、データの書き込み先を含んでいてよい。これは、ストレージデバイスのうちの1つ以上でのロケーションへの参照であってよい。
データのメモリロケーションは、pinnedメモリでのロケーションに対応し得る。すなわち、データは、ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能なメモリロケーションに記憶される。このように、ドライバは、ベクトルプロセッサ又は別のプロセッサ(CPUなど)上で実行することができる。
しかしながら、或るケースでは、メモリロケーションは、メインメモリ(すなわち、ベクトルプロセッサによりアクセス可能ではないメモリ)にあってもよい。
ステップ102で、データがpinnedメモリにコピーされる。
コピープロセス中に、データに1つ以上の変換が行われてよい。例えば、1つの変換は、データの暗号化又はエンコーディングを含むことができる。これは、メインメモリでのデータが暗号化又はエンコードされていなくても、pinnedメモリでのデータが暗号化又はエンコードされることを可能にし得る。このような変換は、書き込みプロセスを著しく遅くしないように比較的速いものであり得る。
ステップ102は、命令でのメモリロケーションがpinnedメモリに無い場合にのみ生じ得る。すなわち、ステップ102は、要求で示されるデータが既にpinnedメモリに有る場合には省略されてよい。
ステップ103で、データのチェックサムが計算される。チェックサムの目的は、書き込まれたデータがその後検索されるデータであるかを検証することである。これは、ビットロットのリスク或いはデータが不意に変化するリスクを回避することができる。チェックサムは、データの変化が気付かれない確率が極めて低くなるように、暗号ハッシュであってよい。計算されると、チェックサムは、キャッシュに、例えばデータと同じロケーションに記憶することができる。
チェックサムの計算は、書き込みプロセスを著しく遅くしないように比較的速いものであり得る。
或るケースでは、ステップ103は省略されてよい。例えば、或る実装では、チェックサムは不要と考えられる場合があり、又はチェックサムに関連するオーバーヘッドは望ましくないとみなされる場合がある。
ステップ104で、データが書き込まれていることが確認される。これは、例えば、成功値を命令の送信元に戻すことを含み得る。或るケースでは、これは、命令で指定された宛先ロケーションにデータが書き込まれていることを確認することを含み得る。このようにして、キャッシュの使用は、ユーザにトランスペアレントである。ユーザの視点からは、データは、指定のストレージデバイスに記憶されている。これは、互換性を提供し、他の方法ではキャッシュの使用に関連する場合がある複雑さを要約する。
ステップ104は、pinnedメモリが不揮発性メモリに対応する場合に特に有益であり得る。不揮発性メモリは電力損失に耐えるので、データが不揮発性メモリに書き込まれると、データ損失の機会の存在は無視でき得る。したがって、データが永続的なストレージデバイスに実際に書き込まれる前に該データが書き込まれていることを確認することにより、潜在的なデータ損失のリスクなしに非常に速いデータスループットを提供することができる。
ステップ105で、ベクトルプロセッサがデータに1つ以上の変換を行う。これらの変換は、逆関数を行うことにより元の内容に戻すことができるように、可逆変換とすることができる。例えば、暗号化、エンコーディング、圧縮、重複排除、及びさらなる情報の追加は、逆関数によりオリジナルの情報を得ることができるので、普通は可逆関数である。変換は、所定の順序で行われてよい。例えば、暗号化は、エンコーディングの前に行われてよい。
これらの変換は、ステップ104でデータが書き込まれていることが確認された後で行われるため、ユーザの視点からは、書き込みプロセスに遅れを生じさせない。これは、知覚される書き込み速度の低下をもたらさずに、比較的頑健な計算集約型の変換が行われることを可能にし得る。
1つの変換は、データを暗号化することであり得る。これは、RSA、AES、又は任意の他の適切な暗号化アルゴリズムを用いて行うことができる。これは、基礎をなすストレージデバイスに障害が起きた場合にデータが読み出されることを回避し得る。
別の変換は、データをデータフラグメントへ分割する前に誤り訂正符号の使用を通じてデータにパリティ情報を付加することによりデータをエンコードすることであり得る。これは、いくつかのフラグメントが誤っている場合であっても、フラグメントに基づいてオリジナルデータが再作成されることを可能にする。この誤り訂正符号は、フラグメントのうちのいくつかが完全に失われる場合であってもオリジナルデータの再作成を可能にする、消失訂正符号であり得る。
リード・ソロモン符号が、消失訂正符号の例である。ブロックなどの、1つのデータが、いくつかの符号語を形成するべくリード・ソロモンアルゴリズムを用いてエンコードされる。各符号語はn個の記号を備え、これらのうちのk個は、オリジナルデータからの情報を伝え、残りは、計算され、オリジナルデータを復元するのに用いることができる。各符号語は、データフラグメントを形成するべく分解することができる。パリティn−kは、データのタイプ、システムのデフォルト、ユーザの好み、又は任意の他の適切な手法に基づいて選択され得る。リード・ソロモン符号がどのように機能するかにより、n−k個までのフラグメントが失われる場合であっても、オリジナルデータを依然として得ることができる。
例えば、2:1パリティを用いるリード・ソロモン符号に関して、2ユニットのオリジナルデータにつき1ユニットのパリティ情報が付加されている。これは、1つのフラグメントが失われる場合であっても、任意の2つの他のフラグメントからオリジナルデータを再生成できることを意味する。15:5パリティは、15ユニットのオリジナルデータにつき5ユニットのパリティが付加されていることを指す。5個のフラグメントが失われる場合、残りの20個のフラグメントのうち15個からオリジナルデータを再生成することができる。
したがって、ベクトルプロセッサは、データをエンコードすることによりn個のデータフラグメントを形成してよく、ゆえに、データフラグメントのうちの任意のk個(kはn以下)を、データを再生成するのに用いることができる。
より高いパリティは、通常は、データが回復不能となるまでにより多数のデータフラグメントを失うことができることを意味する。加えて、パリティデータと実際のデータのより高い比は、所与のレジリエンスのために記憶されるデータの総量を減少し得る。しかしながら、より高いパリティは、通常は、エンコーディングに必要とされる計算レベルを指数関数的に増加させる傾向がある。
加えて、これは、データに基づいて暗号ハッシュ又は非暗号ハッシュを計算し、これをデータの一部としてエンコーディングすることを含んでよい。
さらなる変換は、ストレージイベントをイベント・ログに記録することであり得る。これは、データのタイムスタンプ及び暗号ハッシュを含み得る。ロギングは記憶されるデータに影響しないが、変換の順序上、データの変換として取り扱うことができる。
或るケースでは、PCT公開番号WO2019/040418により説明されるディクショナリベースのデータ圧縮方法が用いられ得る。
変換を行うのにベクトルプロセッサを用いることにより、CPUを用いることに比べてより効率よく比較的高品質の変換を行うことができる。例えば、エンコーディングの場合には、高レベルのパリティが用いられ得る。加えて、これは、変換がストレージプロセスを著しく遅くしないように(例えば、ストレージに数ミリ秒未満の時間を追加することにより)実質的にリアルタイムで行うことができる。
或るケースでは、pinnedメモリは、ライトバックキャッシュとして動作するように構成される。
データを書き込む際に、ドライバが、データが書き込まれるべきキャッシュでのロケーションを決定することになる。キャッシュに未使用の領域が存在する場合、データはそこに書き込まれてよい。未使用の領域が存在しない場合、ドライバが、既存のデータのうちのいくつかを、キャッシュから1つ以上のストレージデバイスに移動してよい。
キャッシュでのロケーションが決定されると、キャッシュのこのロケーションにデータが書き込まれる。
ドライバ(又はキャッシュ内)にあるメタデータが、これを反映するべく更新されてよい。例えば、マッピングは、命令で宛先ロケーションに記憶されることを意図されたデータがキャッシュでのそれぞれのロケーションに記憶されることを示すべく更新されてよい。加えて、キャッシュでのロケーションは、そこに記憶されたデータを1つ以上のストレージデバイスに最初に移動しないと上書きできないことを示すべくダーティとしてマークされてよい。
ステップ106で、ドライバが、pinnedメモリからのデータを1つ以上のストレージデバイスに非同期的に書き込む。
これは、データがキャッシュからストレージデバイスに移動されなければならないとドライバが判断することに応答して行われ得る。ドライバは、これに関して1つ以上のヒューリスティックスに依存し得る。例えば、ドライバは、データの古さ、データが最近いつ使用されたか、及びデータが使用される可能性のうちの1つ以上に基づいてmとなるデータを選択してよい。
これは非同期であり、ゆえに、ステップ105とステップ106との間に実質的な時間が存在し得る。ステップ106は、新しいデータがキャッシュに書き込まれる必要があるときにのみ行われ得る。このようにして、キャッシュは、「遅延書き込み」パラダイムで動作する。代替的に、或るケースでは、データは、例えば書き込まれるデータが移動するのに最良のデータであるとヒューリスティックに判断される場合に、キャッシュから直ちに移動され得る。
ドライバが、データをストレージデバイスのうちの1つ以上に書き込む。1つ以上のストレージデバイスは、ステップ101で受信されメタデータに記録された最初の命令で指定されたストレージデバイスであり得る。
ステップ106がその後ステップ103と非同期的に行われるので、通常のストレージデバイスに関連する遅延は、普通の使用ではユーザには分からない。すなわち、ドライバは、データがより低いストレージデバイス速度ではなくはるかにより高いキャッシュ速度で記憶される様相を呈する。
しかし、特にキャッシュが不揮発性の場合、これは必ずしもデータ損失の大きなリスクをもたらさない。加えて、不揮発性メモリの使用は、「ライトホール」現象を軽減する又はなくすことができる。すなわち、揮発性メモリの場合に、メモリからストレージデバイスへのデータの転送中に電力損失が存在すると、ディスク上のデータがメモリから適正に転送されたかどうかを判断するのは不可能なことがある。しかしながら、不揮発性メモリでは、電力が回復したときにデータ損失なしに転送プロセスを再開することができる。
したがって、ユーザは、どのような実質的な欠点もなしに、より高性能の書き込みを享受し得る。
クリーニング
ステップ106で述べたように、新しいデータが書き込まれる必要があるときに、ドライバが、データをキャッシュから1つ以上のストレージデバイスへ選択的に移動する。
ステップ106で述べたように、新しいデータが書き込まれる必要があるときに、ドライバが、データをキャッシュから1つ以上のストレージデバイスへ選択的に移動する。
キャッシュのブロックがクリーンと判断されると、データは、1つ以上のストレージデバイスに移動される。
図2は、ライトバックキャッシュからのデータを1つ以上のストレージデバイスに書き込むための例示的な手法を示す。これは、ステップ105を実施するのに用いられ得る。
ステップ201で、ドライバが、1つ以上のストレージデバイスに移動されるべきキャッシュの1つ以上のブロックにあるデータを選択する。キャッシュでの移動されるべきデータの選択は、いくつかの変数を用いるヒューリスティックスに従ってなされ得る。例えば、これは、データの経過時間、データの直近の使用、データの期待される使用の可能性、又はブロックにあるデータ間の関係性に基づいていてよい。
ステップ202で、ドライバが、データを1つ以上のストレージデバイスに書き込む。これは、ドライバが1つ以上のストレージデバイスのストレージコントローラと相互作用することによる従来の様態で行われ得る。
1つ以上のストレージデバイスの選択は、移動されるべきデータに関する以前に記憶されたメタデータに基づいていてよい。すなわち、データが最初にキャッシュに記憶されたときに、データのキャッシュロケーションとデータの最後のストレージデバイスロケーションとをマップするべくメタデータが更新され得る。このようなケースでは、このストレージデバイスロケーションが、1つ以上のストレージデバイスを選択するのに用いられ得る。
ステップ203で、データが1つ以上のストレージデバイスに書き込まれた後で、ドライバが、キャッシュの対応するブロックをクリーンとしてマークする。これは、キャッシュの一部が再使用されることを可能にする。ドライバはまた、例えばキャッシュでのロケーションとデータとのマッピングを除去することにより、データがもはやキャッシュに記憶されないことを示すべくメタデータを更新してよい。
このようにして、データは、必要なときにキャッシュから1つ以上のストレージデバイスに移動される。
或るケースでは、キャッシュは、或るレベルのクリーン容量を保つように構成されてよい。すなわち、キャッシュがデータを移動せずに所定量のデータを記憶できるようにデータがキャッシュから移動されてよい。例えば、キャッシュの総容量の50%がクリーンとして保たれるべきであり得る。これは、既にキャッシュにあるデータに関する向上した読み出し及び修正パフォーマンスを依然として可能にしながら、書き込みの向上したバーストパフォーマンスを可能にする。
パーティショニング
上で述べたように、不揮発性ライトバックキャッシュは、すべてのユーザが利用可能な共通のリソースとして取り扱われてよい。しかしながら、或るケースでは、1人のユーザが一度に大量のデータを書き込んでキャッシュを独占する場合がある。キャッシュが一杯になると、他のユーザはその恩恵が受けられない場合がある。
上で述べたように、不揮発性ライトバックキャッシュは、すべてのユーザが利用可能な共通のリソースとして取り扱われてよい。しかしながら、或るケースでは、1人のユーザが一度に大量のデータを書き込んでキャッシュを独占する場合がある。キャッシュが一杯になると、他のユーザはその恩恵が受けられない場合がある。
このリスクを軽減するために、不揮発性ライトバックキャッシュは、ソース(ユーザ又はユーザのグループなど)によりパーティション化されてよい。各パーティションは、キャッシング及び容量のために独立して動作することができる。
図3は、パーティション化されたキャッシュの使用例を示す。
ステップ301で、ドライバが、データ書き込み命令を受信する。これは、ステップ101と同じであり得る。しかしながら、このケースでは、命令は、命令のソース(ユーザ又はユーザグループなど)を指定する。
ステップ302で、ドライバがデータをライトバックキャッシュのパーティションに書き込み、パーティションはソースと関連付けられる。これは、データが該パーティションにのみ書き込まれること以外は、ステップ102と同じであり得る。パーティションが不十分なクリーン領域を有する場合、データは、(キャッシュにおけるすべての他のパーティションが未使用の場合であっても)該パーティションから1つ以上のストレージデバイスに移動されることになる。
ステップ303で、ドライバが、データのチェックサムを計算する。チェックサムは、次いで、キャッシュのパーティションに記憶することができる。これは、チェックサムが該パーティションにのみ書き込まれ得ること以外は、ステップ103と同じであり得る。
ステップ304で、ドライバが、データが書き込まれていることを確認する。これは、ステップ104と同じであり得る。
ステップ305で、ベクトルプロセッサが、データに1つ以上の可逆変換を行う。これは、ステップ105と同じであり得る。
ステップ306で、ドライバが、pinnedメモリからのデータを1つ以上のストレージデバイスに非同期的に書き込む。これは、ステップ106と同じであり得る。
このように、キャッシュに対する単一のソース(1人のユーザ又はユーザのグループなど)の影響がそれらのパーティションに実質的に限定される。これは、複数のユーザのための高レベルのサービスの質を保ち、且つ、バーストを受けての全体的なパフォーマンスの低下を回避することができる。
読み出し
図4は、データを読み出す際にpinnedメモリをどのように用いることができるかに関する例示的な手法を示す。これは図1に示した手法の補足である。
図4は、データを読み出す際にpinnedメモリをどのように用いることができるかに関する例示的な手法を示す。これは図1に示した手法の補足である。
ステップ401で、ブロックデバイスインターフェースが、1つ以上のストレージデバイスからのデータ読み出し命令を受信する。データ読み出し命令は、インターフェースの関数呼び出しとして受信され得る。命令は、1つ以上のストレージデバイス上のロケーションを参照する又はメタデバイスを参照するデータを指定し得る。
ステップ402で、データが1つ以上のストレージデバイスからメモリロケーションに検索される。ブロックデバイスインターフェースがメタデバイスに対応する場合、これは、基礎となる物理ストレージデバイスからデータを検索することを含み得る。
データのメモリロケーションは、pinnedメモリでのロケーションに対応する。すなわち、データは、ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能なメモリロケーションに記憶される。このように、ドライバは、ベクトルプロセッサ又は別のプロセッサ(CPUなど)上で実行し得る。
ステップ403で、データのチェックサムが計算される。これは、以前に計算されたデータのチェックサムと比較することができる。これは、ストレージデバイスから検索されたデータがストレージデバイスに記憶されたデータと同じであることを検証する。或るケースでは、ステップ403は省略されてよい。例えば、或る実装では、チェックサムの検証は、不要と考えられる場合があり、又はチェックサムの検証に関連するオーバーヘッドは望ましくないとみなされる場合がある。
ステップ404で、ベクトルプロセッサがデータに1つ以上の変換を行う。これらの変換は、オリジナルデータを回復するべくステップ102で行われた変換の逆であってよい。例えば、ステップ102で行われた変換を逆にするべく、復号、デコーディング、解凍、非重複排除、及びさらなる情報の除去が行われてよい。変換は、所定の順序で行われてよい。例えば、デコーディングは、復号の前に行われてよい。
ステップ405で、データがメインメモリにコピーされる。
これは、pinnedメモリがむやみに占領されることを回避する。しかしながら、或るケースでは、ステップ405は省略されてよい。
ステップ406で、データが読み出されていることが確認される。これは、例えば、メモリロケーションを命令の送信元に戻すことを含み得る。
このようにして、図1の手法を用いて記憶されたデータが検索され得る。
システム
図5は、上記の方法を実施するのに用いられ得る例示的なシステムを示す。
図5は、上記の方法を実施するのに用いられ得る例示的なシステムを示す。
システム1000は、CPU(中央処理装置)1010、メインメモリ1020、1つ以上の周辺機器1030、及びGPU(グラフィックス処理装置)1050を備える。CPU1010、メインメモリ1020、周辺機器1030、及びGPU1050は、バス1040で接続される。PCIe(PCI Express)トポロジーの場合には、バス1040は、ルートコンプレックスを含み、周辺機器1030及びGPU1050のそれぞれは、PCIeエンドポイントである。GPU1050は、バス1040で周辺機器1030と直接通信することができる。或るケースでは、1つよりも多いCPU1010及び/又は1つよりも多いGPU1050が設けられる。
メインメモリ1020は、不揮発性ライトバックキャッシュとして動作するように構成された不揮発性メモリチップを備える。これは、フラッシュメモリ単独の使用又は従来の揮発性メモリと組み合わせた使用を含み得る。不揮発性メモリチップは、不揮発性デュアルインラインメモリモジュール(NVDIMM)として構成されてよい。メインメモリ1020は、不揮発性ライトバックキャッシュとして用いられない従来の揮発性メモリをさらに備えてよい。
或るケースでは、メインメモリ1020は、一対のNVDIMMなどの不揮発性メモリモジュールの1つ以上のペアを備える。使用中に、不揮発性メモリモジュールのうちの一方に書き込まれたデータが、他方にミラーリングされる。これは、データ損失の場合に或る程度のレジリエンスを提供することができ、各不揮発性メモリモジュールは、キャッシュでのデータの完全なセットを格納する。
ペアのうちの一方が交換されるとき、データが、新しいモジュールに自動的にミラーリングされ得る。これは、キャッシュを拡張するための単純なプロセスを可能にする。ペアのうちの第1のモジュールが新しいより大きいものと交換されることがある。自動ミラーリングが完了すると、ペアのうちの第2のモジュールを新しいより大きいものと交換することができる。これにより、データ又は機能を失わずにキャッシュが(新しいより大きいサイズに)拡張される。
或るケースでは、不揮発性メモリモジュールのうちの1つ以上は、ブロックがそれらの間で交互に配置されるようにスパンニングされてよい。スパンニングとミラーリングは組み合わされてよい。例えば、4つの不揮発性メモリモジュールのうちの第1及び第2のモジュールがスパンニングされてよく、第1及び第2のモジュールは第3及び第4のモジュールにミラーリングされてよい。
周辺機器1030は、永続的なストレージデバイス(ハードディスクドライブ、ソリッドステートドライブなど)、ストレージコントローラ(RAIDコントローラなど)、ネットワークコントローラ(ネットワークインターフェースカードなど)、スイッチ(さらなる周辺機器を接続するように構成されたPCIeスイッチなど)、又は様々なデバイスのいずれかを含み得る。
メインメモリ1020及び任意のストレージデバイスの典型的特徴は、メインメモリがランダムライトに関してはるかにより速い傾向があることである。したがって、メインメモリへのデータユニットの書き込みは、通常は、ストレージデバイスへのデータユニットの書き込みよりもはるかにより速く解決することができる。しかしながら、ストレージデバイスは、より安価且つより大型となる傾向があり、したがって、一般的な長期のストレージの目的にはより良い。
周辺機器1030及びGPU1050は、バス1040を介するメインメモリ1020へのアクセスを有し得る。これは、周辺機器1030又はGPU1050が、DMA(ダイレクトメモリアクセス)を通じてメインメモリからデータを読み出す及びデータを書き込むことを可能にし得る。これは、メインメモリ1020からのデータを周辺機器1030又はGPU1050のローカルメモリにコピーすることを含み得る。
或るケースでは、CPU1010及びGPU1050のメモリ領域は、ユニファイド仮想メモリを介して共有することができる。これにより、メインメモリ1020とローカルメモリとの間でデータをコピーする必要なくCPUとGPUとの間で単一のメモリアドレスへのポインタを受け渡すことが可能となる。
コンピュータシステム500が、上記の方法を実施するのに用いられ得る。例えば、CPU1010又はGPU1050は、ストレージデバイス周辺機器1030のうちの1つ以上へのドライバとして動作するプログラムを実行し得る。
ベクトルプロセッサ
ベクトルプロセッサは、命令がデータのアレイで実行されるプロセッサである。これは、スカラーであり、命令を単一のデータアイテムで実行する、従来のCPUとは対照的であり得る。これは、ベクトルプロセッサが従来のスカラーCPUよりもはるかにより速く大量のデータを処理することを可能にし得る。
ベクトルプロセッサは、命令がデータのアレイで実行されるプロセッサである。これは、スカラーであり、命令を単一のデータアイテムで実行する、従来のCPUとは対照的であり得る。これは、ベクトルプロセッサが従来のスカラーCPUよりもはるかにより速く大量のデータを処理することを可能にし得る。
ベクトルプロセッサの一例はGPUである。しかしながら、ベクトルプロセッサは、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの他の形態で実装されてもよい。
ベクトルプロセッサとして動作する例示的なGPU950が図6に示される。このようなGPU950は、上記の手法のいずれかにおいてベクトルプロセッサとして用いられ得る。
GPU950は、通常は1から30までの間のいくつかのSM(ストリーミングマルチプロセッサ)951を備える。各SM951は、共有メモリ952及び命令ユニット953を有する。
各SM951は、いくつかの、例えば8個の、SP(ストリーミングプロセッサ)954を備える。各SP954は、共有メモリ952へのアクセスを有し、且つ、一組のレジスタ955を有する。各SP954は、GPUのグローバルメモリ956へのアクセスも有し得る。このグローバルメモリ956は、コンピュータシステムのメインメモリ920にマッピングされ得る。
SM951内のSP954は、同じ命令ユニット953からの命令を受信する。このようにして、SM内の各SP954は、通常は、同じ命令を同時に処理する。
GPU950は、プログラム又は関数であり得るカーネルを実行するように構成することができる。カーネルは、CUDAプラットフォームを利用し得る。カーネルは、プリセット閾値を超えて実行する場合にウォッチドッグタイマがカーネルを機能しないようにし得るので、一般に、比較的短寿命(すなわち、秒のオーダー)である。しかしながら、或るケースでは、カーネルは、実行が終わるまで無期限に実行することができるという点で長時間実行し得る。カーネルは、GPU上で実行するが、通常は、ローカル又はリモートCPUにより開始される。
カーネルは、カーネルに対応するグリッドを実行するGPU950により実行される。グリッドは、いくつかのブロックからなる。通常は、グリッドのブロック間に同期は存在しない。
各SM951は、グリッドのブロックを実行することができる。通常、SM951は、複数のブロックを同時に実行することができる。SM951上のブロックの数は、共有メモリ952の容量により制限され得る。通常、ブロックは、カーネルの実行中に1つのSM951から別のSM951へ移動しない。
各SP954は、ブロックのスレッドを実行することができる。或るケースでは、1つのSP954は、複数のスレッドを同時に処理することができる。スレッドは、通常、いくつかの命令を含む計算である。各命令の実行には、いくつかの、例えば4サイクルかかる場合がある。この待ち時間により、SP954は、一度に複数のスレッドを実行することができる。すなわち、1つのスレッドが実行されている間に、別のスレッドを開始することができる。スレッドは、SM951の共有メモリ952を介して互いに通信し得る。
GPU950は、SIMD(シングルインストラクション、マルチプルデータ)アーキテクチャを有し得る。これは、GPU950がワープに基づいて動作し得ることを意味する。各ワープは、ロックステップで、しかし随意的に異なるデータで、同じ命令を実行するブロック内のいくつかのスレッドを備える。例えば、ワープの各スレッドは、異なるメモリアドレスに記憶された数値に加算命令を実行し得る。加えて、ワープ内の各スレッドは、データをメモリから同時にフェッチするように構成されてよい。
ワープはSM951上に常駐し、ゆえに、ワープの各スレッドは、SM951内の異なるSP954により実行され得る。ワープサイズ(すなわち、ロックステップで実行することができるワープ内のスレッドの数)は、32などの所定の値であり得る。SM951は、複数の常駐ワープを有し得る。
このようにして、単一のカーネルが、GPU上で利用可能な多数のプロセッサの容量を使用することができる。これにより、カーネルが他の処理ユニットと比較して顕著により速く実行され得る。
解釈
いくつかの方法が上記で説明されている。これらの方法のいずれかは、コンピュータプログラムを形成し得る一連の命令により具体化され得ることが理解されるであろう。これらの命令又はこのコンピュータプログラムは、一時的でないものであり得るコンピュータ可読媒体上に記憶され得る。実行されるときに、これらの命令又はこのプログラムは、CPU又はGPUなどのプロセッサに、説明した方法を行わせてよい。
いくつかの方法が上記で説明されている。これらの方法のいずれかは、コンピュータプログラムを形成し得る一連の命令により具体化され得ることが理解されるであろう。これらの命令又はこのコンピュータプログラムは、一時的でないものであり得るコンピュータ可読媒体上に記憶され得る。実行されるときに、これらの命令又はこのプログラムは、CPU又はGPUなどのプロセッサに、説明した方法を行わせてよい。
手法がプロセッサにより実装されるものとして説明されているが、これは、複数のプロセッサを含み得る。すなわち、少なくともプロセッサの場合には、単数形は、複数形を含むと解釈されるべきである。方法が複数のステップを含む場合、異なるステップ又はステップの異なる部分が異なるプロセッサにより行われてよい。或るケースでは、1つのステップは、第1のタイプのプロセッサにより行われてよく(例えば、大きいデータセットの処理は、GPUにより行われてよい)、別のステップは、第2のタイプのプロセッサにより行われてよい(CPUにより行われるメタデータルックアップなど)。
方法の中のステップの順序は、1つのステップが、行われている別のステップに依存する、又は文脈が他を必要とする場合を除き、ステップが順序を変えて又は並行して行われるように変更されてよい。
「備える、含む(comprises)」という用語及び他の文法上の形態は、他の方法で言及されない限り包括的な意味を有することを意図している。すなわち、それらは、列挙したコンポーネントの包含、及びもしかすると他の指定されていないコンポーネント又は要素の包含を意味すると受け取られるべきである。
本発明が特定の実施形態の説明により図面を参照して解説されているが、本発明は、このような詳細に制約されることを意図していない。さらなる利点及び修正が当業者にはすぐに分かるであろう。したがって、本発明のそのより広い態様は、具体的な詳細、代表的な装置及び方法、並びに示され説明された具体例に限定されない。したがって、一般的発明概念の精神又は範囲から逸脱することなくこのような詳細からの逸脱がなされてよい。
Claims (21)
- 方法であって、
ブロックデバイスインターフェースでデータのメモリロケーションを含むデータ書き込み命令を受信することと、
前記データをpinnedメモリにコピーすることと、
ベクトルプロセッサにより前記データに1つ以上の可逆変換を行うことと、
前記pinnedメモリからの前記データを1つ以上のストレージデバイスに非同期的に書き込むことと、
を含み、前記データの前記pinnedメモリがpinnedメモリでのロケーションに対応し、前記pinnedメモリが前記ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能である、
方法。 - 前記データに1つ以上の可逆変換を行う前に、前記データが書き込まれていることを確認することをさらに含む、請求項1に記載の方法。
- 前記pinnedメモリがライトバックキャッシュとして構成される、請求項1又は請求項2に記載の方法。
- 前記pinnedメモリからの前記データを1つ以上のストレージデバイスに非同期的に書き込むことが、
前記データに関連する前記ライトバックキャッシュの一部がダーティであると判断することと、
前記データを1つ以上のストレージデバイスに書き込むことと、
前記ライトバックキャッシュの前記一部をクリーンとしてマークすることと、
を含む、請求項3に記載の方法。 - 前記ライトバックキャッシュが複数のパーティションを備え、各パーティションがソースと関連付けられる、請求項3又は請求項4に記載の方法。
- 前記pinnedメモリが不揮発性メモリに対応する、請求項1〜請求項5のいずれか1項に記載の方法。
- 前記不揮発性メモリが複数の不揮発性メモリユニットを備え、
前記pinnedメモリでの前記データが、前記複数の不揮発性メモリユニットのそれぞれにある、請求項6に記載の方法。 - 前記複数の不揮発性メモリユニットが、NV−DIMMの1つ以上のペアを備える、請求項7に記載の方法。
- 前記複数の不揮発性メモリユニットのうちの第1のメモリユニットが交換されていると判断することと、
前記複数の不揮発性メモリユニットのうちの別のメモリユニットからのデータを前記複数の不揮発性メモリユニットのうちの第1のメモリユニットにミラーリングすることと、
をさらに含む、請求項7又は請求項8に記載の方法。 - 前記ブロックデバイスインターフェースが、メタデバイスのためのブロックデバイスインターフェースを含み、前記メタデバイスが前記1つ以上のストレージデバイスに対応する、請求項1〜請求項9のいずれか1項に記載の方法。
- 前記データ書き込み命令を受信することが、
前記1つ以上のストレージデバイス上に記憶されたデータの修正命令を受信することと、
前記1つ以上のストレージデバイス上に記憶されたデータを不揮発性ライトバックキャッシュに読み出すことと、
を含み、前記データを不揮発性ライトバックキャッシュに書き込むことが、
前記命令に基づいて前記不揮発性ライトバックキャッシュでの前記データを修正することを含む、請求項1〜請求項10のいずれか1項に記載の方法。 - 前記ブロックデバイスインターフェースを提供することをさらに含む、請求項1〜請求項11のいずれかに記載の方法。
- ベクトルプロセッサにより前記データに1つ以上の可逆変換を行うことが、暗号化、エンコーディング、圧縮、重複排除、又はロギングのうちの1つ以上を含む、請求項1〜請求項12のいずれか1項に記載の方法。
- 方法であって、
ブロックデバイスインターフェースで1つ以上のストレージデバイスからのデータ読み出し命令を受信することと、
前記1つ以上のストレージデバイスからの前記データをメモリロケーションに書き込むことと、
ベクトルプロセッサにより前記メモリロケーションにある前記データに1つ以上の可逆変換を行うことと、
を含み、前記データの前記メモリロケーションがpinnedメモリでのロケーションに対応し、前記pinnedメモリが前記ベクトルプロセッサ及び1つ以上の他のプロセッサによりアクセス可能である、方法。 - 前記pinnedメモリが不揮発性メモリに対応する、請求項14に記載の方法。
- 前記ブロックデバイスインターフェースが、メタデバイスのためのブロックデバイスインターフェースを含み、前記メタデバイスが前記1つ以上のストレージデバイスに対応する、請求項14又は請求項15に記載の方法。
- 前記ブロックデバイスインターフェースを提供することをさらに含む、請求項14〜請求項16のいずれか1項に記載の方法。
- ベクトルプロセッサにより前記データに1つ以上の可逆変換を行うことが、復号、デコーディング、解凍、非重複排除、又はロギングのうちの1つ以上を含む、請求項14〜請求項17のいずれか1項に記載の方法。
- システムであって、
1つ以上のベクトルプロセッサと、
1つ以上のCPUと、
pinnedメモリを備えるメモリと、
を備え、前記メモリが、前記1つ以上のベクトルプロセッサ及び/又は前記1つ以上のCPUにより実行されるときに、前記1つ以上のベクトルプロセッサ及び/又は前記1つ以上のCPUを、請求項1〜請求項18のいずれか1項に記載の方法を行うように構成する命令を備える、システム。 - 1つ以上のプロセッサにより実行されるときに、前記1つ以上のプロセッサに請求項1〜請求項18のいずれか1項に記載の方法を行わせる命令を備える、1つ以上の一時的でないコンピュータ可読媒体。
- 1つ以上のベクトルプロセッサ及び/又は前記1つ以上のCPUにより実行されるときに、1つ以上のベクトルプロセッサ及び/又は前記1つ以上のCPUに請求項1〜請求項18のいずれか1項に記載の方法を行わせる、コンピュータプログラム。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862725691P | 2018-08-31 | 2018-08-31 | |
US201862725703P | 2018-08-31 | 2018-08-31 | |
US62/725,691 | 2018-08-31 | ||
US62/725,703 | 2018-08-31 | ||
US201862746981P | 2018-10-17 | 2018-10-17 | |
US62/746,981 | 2018-10-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020038649A true JP2020038649A (ja) | 2020-03-12 |
Family
ID=67734509
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019156155A Pending JP2020042805A (ja) | 2018-08-31 | 2019-08-28 | 永続記憶装置の管理 |
JP2019156878A Pending JP2020038649A (ja) | 2018-08-31 | 2019-08-29 | 不揮発性pinnedメモリを用いるブロックデバイスインターフェース |
JP2019157181A Pending JP2020038650A (ja) | 2018-08-31 | 2019-08-29 | ベクトルプロセッサ格納 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019156155A Pending JP2020042805A (ja) | 2018-08-31 | 2019-08-28 | 永続記憶装置の管理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019157181A Pending JP2020038650A (ja) | 2018-08-31 | 2019-08-29 | ベクトルプロセッサ格納 |
Country Status (5)
Country | Link |
---|---|
US (7) | US11347653B2 (ja) |
EP (3) | EP3617868A1 (ja) |
JP (3) | JP2020042805A (ja) |
CN (3) | CN110874451A (ja) |
TW (3) | TW202011202A (ja) |
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 |
EP4202630A1 (en) * | 2021-12-21 | 2023-06-28 | Nyriad, Inc. | Methods of arranging data on persistent storage device |
EP4202629A1 (en) * | 2021-12-21 | 2023-06-28 | Nyriad Inc. | Methods of administering metadata for persistent storage device |
Family Cites Families (70)
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 |
US20100094971A1 (en) * | 2008-10-15 | 2010-04-15 | Patentvc Ltd. | Termination of fragment delivery services from data centers participating in distributed streaming operations |
CN101419573A (zh) * | 2008-12-01 | 2009-04-29 | 成都市华为赛门铁克科技有限公司 | 一种存储管理的方法、系统和存储设备 |
WO2012052800A1 (en) | 2010-10-21 | 2012-04-26 | Oracle International Corp. | 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 |
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 |
KR101522848B1 (ko) * | 2011-10-05 | 2015-05-26 | 엘에스아이 코포레이션 | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 |
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 | Закрытое акционерное общество "Лаборатория Касперского" | Способ передачи управления между областями памяти |
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 |
US9940257B2 (en) | 2015-11-09 | 2018-04-10 | International Business Machines Corporation | Implementing hardware accelerator for storage write cache management for managing cache line updates for purges from 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 |
US10353814B2 (en) * | 2016-02-08 | 2019-07-16 | Wipro Limited | Method and system for optimized garbage collection in a storage device |
CN107102957A (zh) | 2016-02-22 | 2017-08-29 | 深圳市知穹科技有限公司 | 一种基于gpu与nic之间的内存高速直接交换的方法及系统 |
MX2018011241A (es) | 2016-03-15 | 2018-11-22 | Datomia Res Labs Ou | Administracion y seguridad de datos del sistema de almacenamiento distribuido. |
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 |
CN114546293A (zh) * | 2017-09-22 | 2022-05-27 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
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 | 合肥兆芯电子有限公司 | 映射表更新方法、存储器控制电路单元与存储器存储装置 |
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 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 TW TW108131168A patent/TW202014908A/zh unknown
- 2019-08-30 US US16/556,711 patent/US11263145B2/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 TW108131172A patent/TW202014884A/zh unknown
- 2019-08-30 EP EP19194744.9A patent/EP3617892B1/en active Active
- 2019-08-30 CN CN201910816269.XA patent/CN110874451A/zh active Pending
- 2019-08-30 CN CN201910815672.0A patent/CN110874193A/zh active Pending
- 2019-08-30 CN CN201910817188.1A patent/CN110874194A/zh active Pending
-
2022
- 2022-01-19 US US17/579,264 patent/US20220138111A1/en active Pending
- 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 |
---|---|
EP3617868A1 (en) | 2020-03-04 |
EP3617892A1 (en) | 2020-03-04 |
EP3627325A2 (en) | 2020-03-25 |
US11347653B2 (en) | 2022-05-31 |
US11782844B2 (en) | 2023-10-10 |
US20220253385A1 (en) | 2022-08-11 |
TW202014884A (zh) | 2020-04-16 |
JP2020042805A (ja) | 2020-03-19 |
US20220156200A1 (en) | 2022-05-19 |
JP2020038650A (ja) | 2020-03-12 |
US11263144B2 (en) | 2022-03-01 |
US20220138111A1 (en) | 2022-05-05 |
CN110874451A (zh) | 2020-03-10 |
US20200073824A1 (en) | 2020-03-05 |
TW202011202A (zh) | 2020-03-16 |
EP3627325A3 (en) | 2020-07-29 |
US11263145B2 (en) | 2022-03-01 |
US20200073818A1 (en) | 2020-03-05 |
CN110874193A (zh) | 2020-03-10 |
TW202014908A (zh) | 2020-04-16 |
US20200073663A1 (en) | 2020-03-05 |
EP3617892B1 (en) | 2022-05-11 |
CN110874194A (zh) | 2020-03-10 |
US20230418761A1 (en) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020038649A (ja) | 不揮発性pinnedメモリを用いるブロックデバイスインターフェース | |
CN111081308B (zh) | 用于混合非易失性存储系统的系统和方法 | |
US10114578B2 (en) | Solid state disk and data moving method | |
US10140136B2 (en) | Distributed virtual array data storage system and method | |
TWI703499B (zh) | 資料儲存裝置及其共享控制器中記憶體的方法 | |
US9836223B2 (en) | Changing storage volume ownership using cache memory | |
US20190089383A1 (en) | Memory system | |
JP2003131817A (ja) | Raid論理ドライブ・マイグレーションにおいてデータをマイグレーションするための方法及びシステム | |
US10817372B2 (en) | Systems and methods for ultra fast ECC with parity | |
CN111712804A (zh) | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 | |
US11481132B2 (en) | Removing stale hints from a deduplication data store of a storage system | |
US8145839B2 (en) | Raid—5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices | |
US10664412B2 (en) | Performance booster with resolution of picket-fence I/O flushing in a storage system with heterogeneous I/O workloads | |
JP6052288B2 (ja) | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム | |
US20170097887A1 (en) | Storage Controller Cache Having Reserved Parity Area | |
US9830094B2 (en) | Dynamic transitioning of protection information in array systems | |
US11907068B2 (en) | Read request response for reconstructed data in a degraded drive | |
US20240103756A1 (en) | Non-volatile storage device offloading of host tasks | |
US20240103731A1 (en) | Non-volatile storage device offloading of host tasks | |
CN116414612A (zh) | 存储节点及其操作方法 | |
JP2007058777A (ja) | ディスクアレイ装置、及びコンピュータシステム | |
US20140297942A1 (en) | Data cache for a storage array |