CN110874193A - 使用非易失性锁定存储器的块设备接口 - Google Patents

使用非易失性锁定存储器的块设备接口 Download PDF

Info

Publication number
CN110874193A
CN110874193A CN201910815672.0A CN201910815672A CN110874193A CN 110874193 A CN110874193 A CN 110874193A CN 201910815672 A CN201910815672 A CN 201910815672A CN 110874193 A CN110874193 A CN 110874193A
Authority
CN
China
Prior art keywords
data
memory
storage devices
write
volatile
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
Application number
CN201910815672.0A
Other languages
English (en)
Inventor
斯图尔特·约翰·英格利斯
蒂莫西·凯利·道森
泽维尔·阿尔德伦·西蒙斯
谢里登·约翰·兰贝特
拉斐尔·约翰·帕特里克·舒凯尔
多米尼克·约瑟夫·迈克尔·休斯敦·阿扎里斯
亚历山大·金斯利·St·约翰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Daedaros Cloud LLC
Original Assignee
Neread Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Neread Co Ltd filed Critical Neread Co Ltd
Publication of CN110874193A publication Critical patent/CN110874193A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • G06F2212/286Mirrored cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/301In special purpose processing node, e.g. vector processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem
    • G06F2212/3042In main memory subsystem being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-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

使用非易失性锁定存储器的块设备接口
技术领域
这涉及使用非易失性锁定存储器(non-volatile pinned memory,非易失性固定存储器)的块设备接口。
背景技术
数据可以存储在永久存储设备上。驱动器可以提供允许数据写入永久存储设备和从永久存储设备读取数据的接口。
发明内容
在第一示例实施方式中,提供了一种方法,包括:在块设备接口处接收写入数据的指令,该指令包括数据的存储器位置;将数据复制到锁定存储器;通过向量处理器对数据执行一个或多个可逆变换;以及将数据从锁定存储器异步写入一个或多个存储设备;其中,数据的锁定存储器对应于锁定存储器中的位置,锁定存储器可由向量处理器和一个或多个其他处理器访问。
在第二示例实施方式中,提供了一种方法,包括:在块设备接口处接收从一个或多个存储设备读取数据的指令;将数据从一个或多个存储设备写入存储器位置;及由向量处理器对存储器位置处的数据执行一个或多个可逆变换;其中数据的存储器位置对应于锁定存储器中的位置,锁定存储器可由向量处理器和一个或多个其他处理器访问。
附图说明
参考示出某些实施方式的附图通过示例构成描述。但是,这些仅用于说明。
图1示出在写入数据时使用锁定存储器的示例方法。
图2示出用于将数据从回写缓存写入一个或多个存储设备的示例方法。
图3示出使用分区缓存的示例。
图4示出在读取数据中使用锁定存储器的示例方法。
图5示出示例系统。
图6示出示例GPU。
具体实施方式
在一些实施方式中,首先在块设备接口处接收写入数据的指令。该指令包括要存储的数据的存储器位置。该存储器位置可以在锁定存储器中,其是可由向量处理器和一个或多个其他处理器访问的存储器。然后,向量处理器可以对数据执行一个或多个可逆变换。然后将数据从锁定存储器中的存储器位置异步写入一个或多个存储设备。
在这种情况下,“异步”是指被写入存储器的数据和被写入一个或多个存储设备的数据不一定是立即连续的。也就是说,一旦将数据写入存储器,在将数据写入一个或多个存储设备之前可经过一些时间。在某些情况下,这可以是立即的,但这不一定是必要的。这与同步写入形成对比,在同步写入中,当数据被写入存储器时,数据同时(或之后立即)写入一个或多个存储设备。
锁定存储器
锁定存储器是由多种类型的处理器通过直接存储访问可访问的存储器的一部分。在某些情况下,锁定存储器可以是统一存储器,统一存储器物理上位于主存储器中。锁定存储器可以通过总线由向量处理器(例如GPU)和一个或多个其他处理器(例如CPU)直接访问。以这种方式,两处理器可以在存储器中对相同数据进行操作,而不需要复制存储器。这可称为“零复制”。
这可以与非锁定存储器形成对比,非锁定存储器需要将数据复制到与每个处理器或处理器类型相关联的存储器。例如,如果数据存储在与CPU相关联的存储器中,则在GPU可处理数据之前,需要将数据复制到与GPU相关联的存储器中。
因此,在处理器或处理器类型之间切换时,利用锁定存储器可以减少开销。
在一些实施方式中,锁定存储器在物理上是非易失性存储器的一部分,包括一个或多个非易失性存储器芯片。在这方面,“非易失性”可以被认为意味着即使掉电,存储器也保持存储的数据。这与易失性存储器形成对比,在易失性存储器中必须不断保持电力以保持数据。
锁定存储器可以配置为回写缓存。这可以被认为是以下一种缓存,其中数据被保存在缓存中,直到数据在缓存中即将被新数据(或至少在一段相当长的时间内)覆盖。也就是说,可以尽可能晚地将数据从缓存写入存储设备。
存储器(memory)通常提供比底层存储设备快得多的写入速度。因此,通过推迟写入存储设备,存储设备的较慢速度不会延迟写入速度。此外,由于不需要从存储设备检索数据,因此可以快速重复写入已经存储在存储器中的数据。
由于缓存是非易失性的,因此如果出现电源故障,数据不会丢失。如有必要,甚至可以将缓存移动到单独的系统中进行恢复。这可以降低在相当长的一段时间内将数据保存在存储器中的风险。
因此,这些方法提供了显着改进的写入速度,同时具有最小的数据丢失风险。
接口
在使用中,可以提供接口以供程序或系统使用。该接口可以是块设备驱动器。块设备驱动器是配置为允许与以固定大小块进行操作的底层设备交互的驱动器。例如,存储设备通常以512字节或4096字节的块进行操作。然后,系统可以使用块设备驱动器与存储设备交互(例如,通过将数据写入设备或从设备读取数据)。
在某些情况下,可能没有单一的底层设备(underlying device)。相反,接口可以基于元设备(meta-device)操作。从使用该接口的程序的角度来看,元设备可以被呈现为好像它是一个设备。
然而,元设备可以被映射到对程序隐藏的一个或多个存储设备。例如,驱动器可以将在单个元设备上存储数据的请求翻译成在所有设备上以条带形式存储数据。通过这种方式,驱动器可以隐藏硬件细节。
接口可被设置为在一个或多个CPU上运行的驱动器。附加地或替代地,接口可以作为诸如GPU的向量处理器上的长时间运行的内核运行。这将允许在向量处理器上运行的内核直接与接口进行接口连接,而无需CPU的中介。
写入
图1示出可以在写入数据中使用锁定存储器的示例方法。
在步骤101,块设备接口接收写入数据的指令。写入数据的指令可被接收为接口的函数调用。可以参考存储器位置在指令中指定数据。写入数据的指令还可以包括数据应该写入的目的地。这可以是对一个或多个存储设备上的位置的引用。
数据的存储器位置可以对应于锁定存储器中的位置。也就是说,数据存储在可由向量处理器和一个或多个其他处理器访问的存储器位置中。以这种方式,驱动器可以在向量处理器或另一个处理器(例如CPU)上运行。
然而,在某些情况下,存储器位置可以在主存储器中(即,向量处理器不能访问的存储器)。
在步骤102,将数据复制到锁定存储器。
在复制过程期间,可以对数据执行一个或多个变换。例如,一个变换可以涉及加密或编码数据。即使主存储器中的数据未加密或未编码,也可以允许数据在锁定存储器中被加密或编码。这种变换可相对较快,从而不会实质上延迟写入过程。
步骤102可以仅发生在指令中的存储器位置不在锁定存储器中的情况下。也就是说,请求中指示的数据已经在锁定存储器中的情况下可以省略步骤102。
在步骤103,计算数据的校验和。校验和的目的是验证写入的数据是随后检索的数据。这可以避免比特衰减(bitrot)或其他数据意外改变的风险。校验和可以是加密散列,使得数据的变化不可察觉的概率极低。一旦计算出,校验和就可以存储在缓存中,例如存储在与数据相同的位置。
校验和计算可以相对快速,从而不会实质上延迟写入过程。
在某些情况下,可以省略步骤103。例如,在一些实现中,校验和可被视为不必要,或者与校验和相关联的开销可被视为不期望的。
在步骤104,确认数据已被写入。例如,这可能涉及将成功值返回给指令的发送者。在某些情况下,这可包括确认数据已写入指令中指定的目标位置。以这种方式,缓存的使用对用户是透明的。从用户的角度来看,数据已存储在指定的存储设备中。这提供了兼容性并且封装了可能与使用缓存相关联的复杂性。
在锁定存储器对应于非易失性存储器的情况下,步骤104可能是特别有益的。由于非易失性存储器可以抵抗电力丢失,因此一旦将数据写入非易失性存储器,数据丢失的可能性就会微乎其微。因此,通过在数据实际写入永久存储设备之前确认数据已被写入,这可以提供非常快速的数据吞吐量而没有数据丢失的潜在风险。
在步骤105,向量处理器对数据执行一个或多个变换。这些变换可以是可逆变换,使得可以通过执行逆函数可恢复原始内容。例如,加密、编码、压缩、重复(deduplication)和添加另外的信息通常是可逆函数,因为原始信息可以通过逆函数而获得。可以以预定顺序执行变换。例如,可以在编码之前执行加密。
因为这些变换在步骤104确认数据被写入之后发生,所以从用户的观点来看,这不会导致写入过程的延迟。这可以允许执行相对稳健的计算密集型变换,而不会导致感知的写入速度的降低。
一种变换可以是加密数据。这可以使用RSA、AES或任何其他适当的加密算法来执行。如果底层存储设备受到危害,这可以避免数据被读取。
另一种变换可以是通过在将数据分成数据片段之前通过使用纠错码将奇偶校验信息添加到数据来对数据进行编码。这允许即使某些片段是错误的,基于片段也能重建原始数据。该纠错码可以是擦除码,即使一些片段完全丢失,也允许重新创建原始数据。
里德-所罗门(Reed-Solomon)码是擦除码的示例。使用里德-所罗门算法对诸如块之类的数据进行编码以形成多个码字。每个码字包括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相比,可以更有效地执行相对高质量的变换。例如,在编码的情况下,可以使用高级别的奇偶校验。另外,这可以基本上实时地完成,使得变换不会实质上延迟存储过程(例如,对存储增加少于几毫秒的时间)。
在某些情况下,锁定存储器被配置为操作为回写缓存。
在写入数据时,驱动器将确定缓存中应该写入数据的位置。如果缓存中有未使用的空间,则可以在那里写入数据。如果没有未使用的空间,则驱动器可以将一些现有数据从缓存移动到一个或多个存储设备。
一旦确定了缓存中的位置,就将数据写入缓存的该位置。
可以更新驱动器处(或缓存内)的元数据以反映这一点。例如,可以更新映射以表明旨在存储在指令中的目的地位置的数据被存储在缓存中的相应位置处。另外,缓存中的位置可以被标记为不洁(dirty),以指示存储在那里的数据不首先被移动到一个或多个存储设备的情况下不能被覆盖。
在步骤106,驱动器将数据从锁定存储器异步写入一个或多个存储设备。
这可以响应于驱动器确定必须将数据从缓存移动到存储设备而发生。驱动器可能依赖于一个或多个用于其启发式算法。例如,驱动器可以基于数据的年龄、使用数据的最新时间以及使用数据的可能性中的一个或多个来选择要移动的数据。
这是异步的,因此在步骤105和步骤106之间可能存在相当长的时间段。步骤106可以仅在需要将新数据写入缓存时执行。以这种方式,缓存以“懒惰写入”范例操作。或者,在某些情况下,可以立即从缓存移动数据,例如,在启发式地确定所写数据是要移动的最佳数据的情况下。
驱动器将数据写入一个或多个存储设备。一个或多个存储设备可以是在步骤101接收的并且记录在元数据中的初始指令中指定的那些。
因为步骤106随后于并且与步骤103异步地执行,所以与典型存储设备相关联的延迟对于普通使用的用户来说是不明显的。也就是说,驱动器提供以更高的缓存速度而不是较低的存储设备速度存储数据的外观。
但特别是在缓存是非易失性的情况下,这并不一定会带来任何数据丢失的巨大风险。此外,使用非易失性存储器可以减轻或消除“写入孔”现象。也就是说,在易失性存储器的情况下,如果在从存储器向存储设备传输数据期间存在电力丢失,则可能无法确定盘上的数据是否是从存储器正确传输的。但是,对于非易失性存储器,当恢复供电时,传输过程可以恢复而不会丢失数据。
因此,用户可以在没有任何实质性缺点的情况下接收更高性能的写入。
清空
如步骤106中所述,当需要写入新数据时,驱动器选择性地将数据从缓存移动到一个或多个存储设备。
一旦确定要清空缓存的块,就将数据移动到一个或多个存储设备。
图2示出用于将数据从回写缓存写入一个或多个存储设备的示例方法。这可以用于实现步骤105。
在步骤201,驱动器选择缓存的一个或多个块处的数据以移动到一个或多个存储设备。可以根据使用多个变量的启发法来选择要移动的缓存中的数据。例如,这可以基于数据的年龄、数据的最近使用、数据的预期使用可能性、或者块的数据之间的关系。
在步骤202,驱动器将数据写入一个或多个存储设备。这可以通过驱动器与一个或多个存储设备的存储控制器交互以传统方式发生。
一个或多个存储设备的选择可以基于先前为要移动的数据而存储的元数据。也就是说,当数据最初存储在缓存中时,元数据可已被更新为在数据的缓存位置和数据的最终存储设备位置之间进行映射。在这种情况下,该存储设备位置可用于选择一个或多个存储设备。
在步骤203,在将数据写入一个或多个存储设备之后,驱动器将缓存的相应块标记为清空(clean)。这允许重用该缓存部分。驱动器还可以例如通过移除缓存中的位置与数据之间的映射来更新元数据以表明数据不再存储在缓存中。
以这种方式,在必要时将数据从缓存移动到一个或多个存储设备。
在某些情况下,缓存可以被配置为保持一定水平的清空容量(clean capacity)。也就是说,可以从缓存移动数据,使得缓存可以存储预定数量的数据而不移动数据。例如,可以是将缓存的总容量的50%保留为清空的。这允许改进写入时的突发性能,同时仍允许已经在缓存中的数据的改进的读取和修改性能。
分区
如上所述,非易失性回写缓存可以被视为所有用户可用的公共资源。但是,在某些情况下,单个用户可以通过一次写入大量数据来独占缓存。一旦缓存已满,其他用户可能看不到这些好处。
为了减轻这种风险,可以通过源(诸如用户或用户组)来划分非易失性回写缓存。然后,每个分区可以独立运行以用于缓存和容量目的。
图3示出使用分区缓存的示例。
在步骤301,驱动器接收写入数据的指令。这可以与步骤101相同。但是,在这种情况下,指令指定指令的源(例如用户或用户组)。
在步骤302,驱动器将数据写入回写缓存的分区,其中分区与源相关联。除了将数据仅写入该分区之外,这可以与步骤102相同。如果分区没有足够的清空空间,则数据将从该分区移出到一个或多个存储设备(即使缓存中的所有其他分区都未使用)。
在步骤303,驱动器计算数据的校验和。然后可以将校验和存储在缓存的分区中。除了校验和可以仅被写入该分区外,这可以与步骤103相同。
在步骤304,驱动器确认数据已被写入。这可以与步骤104相同。
在步骤305,向量处理器对数据执行一个或多个可逆变换。这可以与步骤105相同。
在步骤306,驱动器将数据从锁定存储器异步写入一个或多个存储设备。这可以与步骤106相同。
以这种方式,单个源(诸如单个用户或用户组)对缓存的影响基本上限于它们的分区。这可以为多个用户保持高水平的服务质量,并且避免响应于突发的一般性能降级。
读取
图4示出锁定存储器如何用于读取数据的示例方法。这是图1所示方法的补充。
在步骤401,块设备接口接收从一个或多个存储设备读取数据的指令。可以接收读取数据的指令作为接口的函数调用。该指令可以参考一个或多个存储设备上的位置或参考元设备来指定数据。
在步骤402,从一个或多个存储设备检索存储器位置的数据。在块设备接口对应于元设备的情况下,这可以包括从底层物理存储设备检索数据。
数据的存储器位置对应于锁定存储器中的位置。也就是说,数据存储在可由向量处理器和一个或多个其他处理器访问的存储器位置中。以这种方式,驱动器可以在向量处理器或另一个处理器(例如CPU)上运行。
在步骤403,计算数据的校验和。这可以与先前计算的数据校验和进行比较。这验证从存储设备检索的数据与已存储在存储设备中的数据相同。在某些情况下,可以省略步骤403。例如,在一些实现中,验证校验和可被视为不必要的,或者与验证校验和相关联的开销可被视为不期望的。
在步骤404,向量处理器对数据执行一个或多个变换。这些变换可以是在步骤102执行的变换的逆过程,以恢复原始数据。例如,可以执行解密、解码、解压缩、去重复和去除另外的信息以逆变在步骤102执行的变换。可以以预定顺序执行变换。例如,可以在解密之前执行解码。
在步骤405,将数据复制到主存储器。
这避免不必要地占用锁定存储器。然而,在某些情况下,可以省略步骤405。
在步骤406,确认数据已被读取。例如,这可能涉及将存储器位置返回到指令的发送者。
以这种方式,可以检索使用图1的方法存储的数据。
系统
图5示出可用于实现上述方法的示例系统。
系统1000包括CPU(中央处理单元)1010、主存储器1020、一个或多个外围设备1030以及GPU(图形处理单元)1050。CPU 1010、主存储器1020、外围设备1030和GPU 1050通过总线1040连接。在PCIe(PCI Express)拓扑的情况下,总线1040包括根复合体(rootcomplex),并且外围设备1030和GPU 1050中的每一个是PCIe端点。GPU 1050可以直接经由总线1040与外围设备1030通信。在某些情况下,设置多于一个CPU 1010和/或多于一个GPU 1050。
主存储器1020包括被配置为作为非易失性回写缓存操作的非易失性存储器芯片。这可能涉及单独使用或与传统的易失性存储器结合使用闪存。非易失性存储器芯片可以被配置为非易失性双列直插式存储器模块(NVDIMM)。主存储器1020还可以包括传统的易失性存储器,其不用作非易失性回写缓存。
在某些情况下,主存储器1020包括一对或多对非易失性存储器模块,例如一对NVDIMM。在使用中,写入一个非易失性存储器模块的数据在另一个上镜像。这可以在数据丢失的情况下提供一定程度的复原力:每个非易失性存储器模块包含缓存中的完整数据集。
当替换对中一个时,数据然后可以自动镜像到新模块。这允许用于扩展缓存的简单过程。该对的第一个模块可以用新的更大的模块替换。完成自动镜像后,可以用新的较大的模块替换该对中的第二个模块。这导致缓存被扩展(到新的更大尺寸)而没有任何数据或功能的损失。
在某些情况下,可以跨越一个或多个非易失性存储器模块,使得块在它们之间交替。可以组合跨越和镜像。例如,在四个非易失性存储器模块中,可以跨越(横跨)第一和第二模块,第一和第二模块可以镜像到第三和第四模块。
外围设备1030可以包括永久存储设备(诸如硬盘驱动器、固态驱动器等)、存储控制器(诸如RAID控制器)、网络控制器(诸如网络接口卡)、交换机(诸如被配置为连接其他外围设备的PCIe交换机)或任何各种设备。
主存储器1020和任何存储设备的典型特征是主存储器对于随机写入倾向于快得多。因此,将数据单元写入主存储器通常可以比将数据单元写入存储设备更快地解决。然而,存储设备往往更便宜和更大,因此对于一般的长期存储目的更好。
外围设备1030和GPU 1050可以经由总线1040访问主存储器1020。通过DMA(直接存储访问),这可以允许外围设备1030或GPU 1050从主存储器读取数据和将数据写入到主存储器。这可能涉及将数据从主存储器1020复制到外围设备1030或GPU 1050本地的存储器。
在某些情况下,CPU 1010和GPU 1050的存储空间可以通过统一虚拟存储器而共享。这允许指向单个存储器地址的指针在CPU和GPU之间传递,而不需要在主存储器1020和本地存储器之间复制数据。
计算机系统500可用于实现上述方法。例如,CPU 1010或GPU 1050可以运行作为一个或多个存储设备外围设备1030的驱动器而操作的程序。
向量处理器
向量处理器(vector processor)是在数据阵列上执行指令的处理器。这可以与标量的并对单个数据项执行指令的传统CPU形成对比。这可以使向量处理器比传统的标量CPU更快地处理大量数据。
向量处理器的一个示例是GPU。然而,向量处理器可以以其他形式实现,例如现场可编程门阵列(FPGA)。
在图6中示出作为向量处理器操作的示例GPU 950。这样的GPU 950可以用作上述任何方法中的向量处理器。
GPU 950包括多个SM(流多处理器)951,通常介于1个和30个之间。每个SM951具有共享存储器952和指令单元953。
每个SM951包括多个SP(流处理器)954,例如8个。每个SP 954可以访问共享存储器952并且具有一组寄存器955。每个SP 954还可以访问GPU的全局存储器956。该全局存储器956可以映射到计算机系统的主存储器920。
SM 951内的SP 954从相同的指令单元953接收指令。以这种方式,SM内的每个SP954通常同时处理相同的指令。
GPU 950可以被配置为运行内核,该内核可以是程序或函数。内核可以使用CUDA平台。内核通常是相对短暂的(即,大约几秒),因为如果内核超过预设阈值,则监视计时器可能会终止内核。但是,在某些情况下,内核可能会长时间运行,因为它可以无限期地执行,直到执行完成。虽然内核在GPU上运行,但它通常由本地或远程CPU启动。
执行与内核相对应的网格(grid)的GPU 950执行内核。网格由许多块组成。网格中的块之间通常没有同步。
每个SM951可以执行网格的块。通常,SM 951可以同时执行多个块。SM951上的块的数量可以受共享存储器952的容量限制。通常,块在内核的执行期间不从一个SM 951移动到另一个SM 951。
每个SP 954可以执行块的线程。在某些情况下,一个SP 954可以同时处理多个线程。线程通常是包括多个指令的计算。每个指令可能需要执行多个周期,例如4个。由于这种延迟,SP 954可以一次执行多个线程。也就是说,在执行一个线程时,可以启动另一个线程。线程可以通过SM 951的共享存储器952彼此通信。
GPU 950可以具有SIMD(单指令,多数据)架构。这意味着GPU 950可以基于束(warps)而操作。每个束包括块内的以锁步方式执行相同的指令的多个线程,但是可选地在不同的数据上执行。例如,束中的每个线程可以对存储在不同存储器地址的数字执行加法指令。此外,束中的每个线程可以配置为同时从存储器中获取数据。
束驻留在SM 951上,使得束中的每个线程可以由SM 951中的不同SP 954执行。束大小(即,束中可以以锁步方式执行的线程数)可以是预定值,例如32。SM 951可以具有多个驻留束。
以这种方式,单个内核可以利用GPU上可用的众多处理器的容量。与其他处理单元相比,这可以导致内核执行得更快。
解释
上面已经描述了许多方法。应当理解,这些方法中的任何一种都可以通过一系列指令来体现,这些指令可以形成计算机程序。这些指令或该计算机程序可以存储在计算机可读介质上,该计算机可读介质可以是非暂时性的。当执行时,这些指令或该程序可以使处理器(例如CPU或GPU)执行所描述的方法。
在已经描述了由一个处理器实现的方法的情况下,这可以包括多个处理器。也就是说,至少在处理器的情况下,单数应该被解释为包括复数。在方法包括多个步骤的情况下,步骤的不同步骤或不同部分可以由不同的处理器执行。在某些情况下,可以由第一类型的处理器执行一个步骤(例如,可以由GPU执行大的数据集的处理),并且可以由第二类型的处理器执行另一个步骤(诸如元数据查找是由CPU执行)。
可以改变方法内的步骤的顺序,使得步骤无序地或并行地执行,除非一个步骤依赖于已经执行的另一个步骤,或者上下文另外需要。
除非另有说明,否则术语“包括”和其他语法形式旨在具有包含性含义。也就是说,它们应被视为包含所列组件,并且可能包括其他非述及的组件或元素。
虽然已经通过某些实施方式的描述并参考附图解释了本发明,但是本发明并不限于这些细节。本领域技术人员容易想到其他优点和修改。因此,本发明在其更广泛的方面不限于具体细节、代表性装置和方法、以及所示和所述的说明性示例。因此,在不脱离本发明总体构思的精神或范围的情况下,可以偏离这些细节。

Claims (21)

1.一种方法,包括:
在块设备接口处接收写入数据的指令,所述指令包括所述数据的存储器位置;
将所述数据复制到锁定存储器;
由向量处理器对所述数据执行一个或多个可逆变换;以及
将所述数据从所述锁定存储器异步写入一个或多个存储设备;
其中,所述数据的所述锁定存储器对应于锁定存储器中的位置,所述向量处理器和一个或多个其他处理器可访问所述锁定存储器。
2.根据权利要求1所述的方法,还包括:在对所述数据执行一个或多个可逆变换之前:
确认所述数据已被写入。
3.根据权利要求1或2所述的方法,其中,所述锁定存储器被配置为回写缓存。
4.根据权利要求3所述的方法,其中,将所述数据从所述锁定存储器异步写入一个或多个存储设备包括:
确定所述回写缓存的与所述数据相关联的一部分是不洁的;
将所述数据写入一个或多个存储设备;以及
将所述回写缓存的所述一部分标记为清空。
5.根据权利要求3或4所述的方法,其中,所述回写缓存包括多个分区,每个分区与源相关联。
6.根据权利要求1至5中任一项所述的方法,其中,所述锁定存储器对应于非易失性存储器。
7.根据权利要求6所述的方法:
其中,所述非易失性存储器包括:
多个非易失性存储器单元;并且
其中,所述锁定存储器中的所述数据位于所述多个非易失性存储器单元的每一个非易失性存储器单元中。
8.根据权利要求7所述的方法,其中,所述多个非易失性存储器单元包括:
一对或多对NV-DIMM。
9.根据权利要求7或8所述的方法,还包括:
确定所述多个非易失性存储器单元中的第一非易失性存储器单元已被替换;以及
将数据从所述多个非易失性存储器单元中的另一非易失性存储器单元镜像到所述多个非易失性存储器单元中的所述第一非易失性存储器单元。
10.根据权利要求1至9中任一项所述的方法,其中,所述块设备接口包括用于元设备的块设备接口,所述元设备对应于所述一个或多个存储设备。
11.根据权利要求1至10中任一项所述的方法:
其中,接收写入数据的指令包括:
接收修改在所述一个或多个存储设备上存储的数据的指令;以及
将在所述一个或多个存储设备上存储的所述数据读取到非易失性回写缓存;并且
其中,将所述数据写入非易失性回写缓存包括:
基于所述指令修改所述非易失性回写缓存中的所述数据。
12.根据权利要求1至11中任一项所述的方法,还包括:
提供所述块设备接口。
13.根据权利要求1至12中任一项所述的方法,其中,由向量处理器对所述数据执行一个或多个可逆变换包括以下各项中的一项或多项:
加密;
编码;
压缩;
重复;及
日志记录。
14.一种方法,包括:
在块设备接口处接收从一个或多个存储设备读取数据的指令;
将所述数据从一个或多个存储设备写入存储器位置;以及
由向量处理器对所述存储器位置处的所述数据执行一个或多个可逆变换;
其中,所述数据的所述存储器位置对应于锁定存储器中的位置,所述向量处理器和一个或多个其他处理器可访问所述锁定存储器。
15.根据权利要求14所述的方法,其中,所述锁定存储器对应于非易失性存储器。
16.根据权利要求14或15所述的方法,其中,所述块设备接口包括用于元设备的块设备接口,所述元设备对应于所述一个或多个存储设备。
17.根据权利要求14至16中任一项所述的方法,还包括:
提供所述块设备接口。
18.根据权利要求14至17中任一项所述的方法,其中,由向量处理器对所述数据执行一个或多个可逆变换包括以下各项中的一项或多项:
解密;
解码;
解压缩;
去重复;及
日志记录。
19.一种系统,包括:
一个或多个向量处理器;
一个或多个CPU;以及
存储器,包含锁定存储器;
其中,所述存储器包括指令,所述指令在由所述一个或多个向量处理器和/或所述一个或多个CPU执行时,配置所述一个或多个向量处理器和/或所述一个或多个CPU以执行根据权利要求1至18中任一项所述的方法。
20.一种或多种非暂时性计算机可读介质,包括指令,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行根据权利要求1至18中任一项所述的方法。
21.一种计算机程序,所述计算机程序在由一个或多个向量处理器和/或一个或多个CPU执行时,使一个或多个向量处理器和/或所述一个或多个CPU执行根据权利要求1至18中任一项所述的方法。
CN201910815672.0A 2018-08-31 2019-08-30 使用非易失性锁定存储器的块设备接口 Pending CN110874193A (zh)

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,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
CN110874193A true CN110874193A (zh) 2020-03-10

Family

ID=67734509

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201910815672.0A Pending CN110874193A (zh) 2018-08-31 2019-08-30 使用非易失性锁定存储器的块设备接口
CN201910817188.1A Pending CN110874194A (zh) 2018-08-31 2019-08-30 持久存储设备管理
CN201910816269.XA Pending CN110874451A (zh) 2018-08-31 2019-08-30 矢量处理器存储

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201910817188.1A Pending CN110874194A (zh) 2018-08-31 2019-08-30 持久存储设备管理
CN201910816269.XA Pending CN110874451A (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)

* Cited by examiner, † Cited by third party
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
US20230195329A1 (en) * 2021-12-21 2023-06-22 Nyriad, Inc. Methods of Administering Metadata for Persistent Storage Device

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103392207A (zh) * 2011-10-05 2013-11-13 Lsi公司 非易失性存储的自身日志记录和层级一致性
CN103942010A (zh) * 2013-01-22 2014-07-23 Lsi公司 用于写入非易失性存储器的管理及区域选择
US20150089282A1 (en) * 2013-09-25 2015-03-26 Xyratex Technology Limited Method of, and apparatus for, layout rectification of erasure encoded storage systems
US20150169462A1 (en) * 2012-07-05 2015-06-18 Blancco Oy Ltd Apparatus, a system, a method and a computer program for erasing data stored on a storage device
CN105431827A (zh) * 2013-08-07 2016-03-23 高通股份有限公司 针对异构多处理器系统中的共享存储区域的动态地址协商
US20170132151A1 (en) * 2015-11-09 2017-05-11 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for destage operations from storage write cache
US20170147516A1 (en) * 2015-11-19 2017-05-25 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
CN107851154A (zh) * 2015-07-23 2018-03-27 高通股份有限公司 存储器层次结构监测系统和方法

Family Cites Families (66)

* Cited by examiner, † Cited by third party
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
US8874774B2 (en) * 2008-10-15 2014-10-28 Aster Risk Management Llc Fault tolerance in a distributed streaming system
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
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
CN103257831B (zh) * 2012-02-20 2016-12-07 深圳市腾讯计算机系统有限公司 存储器的读写控制方法及对应的存储器
WO2014003599A1 (en) * 2012-06-29 2014-01-03 Ems Corparation Redundant disc encoding via erasure decoding
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
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
US9792220B2 (en) 2013-03-15 2017-10-17 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
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
US10735137B2 (en) 2016-03-15 2020-08-04 ClineHair Commercial Endeavors Distributed storage system data management and security
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
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
JP6113816B1 (ja) * 2015-11-18 2017-04-12 株式会社東芝 情報処理システム、情報処理装置、及びプログラム
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之间的内存高速直接交换的方法及系统
US10248326B2 (en) * 2016-06-29 2019-04-02 EMC IP Holding Company LLC Incremental erasure coding for storage systems
US10152376B2 (en) * 2016-06-29 2018-12-11 EMC IP Holding Company LLC Data object recovery 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
US11279728B2 (en) 2017-08-22 2022-03-22 Albert Einstein College Of Medicine Broad spectrum viral inhibitor
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 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103392207A (zh) * 2011-10-05 2013-11-13 Lsi公司 非易失性存储的自身日志记录和层级一致性
US20150169462A1 (en) * 2012-07-05 2015-06-18 Blancco Oy Ltd Apparatus, a system, a method and a computer program for erasing data stored on a storage device
CN103942010A (zh) * 2013-01-22 2014-07-23 Lsi公司 用于写入非易失性存储器的管理及区域选择
CN105431827A (zh) * 2013-08-07 2016-03-23 高通股份有限公司 针对异构多处理器系统中的共享存储区域的动态地址协商
US20150089282A1 (en) * 2013-09-25 2015-03-26 Xyratex Technology Limited Method of, and apparatus for, layout rectification of erasure encoded storage systems
CN107851154A (zh) * 2015-07-23 2018-03-27 高通股份有限公司 存储器层次结构监测系统和方法
US20170132151A1 (en) * 2015-11-09 2017-05-11 International Business Machines Corporation Implementing hardware accelerator for storage write cache management for destage operations from storage write cache
US20170147516A1 (en) * 2015-11-19 2017-05-25 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit

Also Published As

Publication number Publication date
US20220253385A1 (en) 2022-08-11
EP4404046A2 (en) 2024-07-24
TW202014884A (zh) 2020-04-16
US20220138111A1 (en) 2022-05-05
JP2020038649A (ja) 2020-03-12
US20200073824A1 (en) 2020-03-05
CN110874194A (zh) 2020-03-10
TW202011202A (zh) 2020-03-16
US20230418761A1 (en) 2023-12-28
CN110874451A (zh) 2020-03-10
EP3617868A1 (en) 2020-03-04
EP3627325A2 (en) 2020-03-25
US11263145B2 (en) 2022-03-01
TW202014908A (zh) 2020-04-16
US11347653B2 (en) 2022-05-31
EP3617892A1 (en) 2020-03-04
JP2020042805A (ja) 2020-03-19
US11782844B2 (en) 2023-10-10
US20220156200A1 (en) 2022-05-19
US20200073818A1 (en) 2020-03-05
EP3617892B1 (en) 2022-05-11
JP2020038650A (ja) 2020-03-12
US20200073663A1 (en) 2020-03-05
EP3627325A3 (en) 2020-07-29
US11263144B2 (en) 2022-03-01

Similar Documents

Publication Publication Date Title
CN111081308B (zh) 用于混合非易失性存储系统的系统和方法
US11263144B2 (en) Block device interface using non-volatile pinned memory
US20210342223A1 (en) Systems and methods for adaptive error-correction coding
US10956258B2 (en) Systems and methods for adaptive data storage
US11200004B2 (en) Compression of data for a file system
US10127166B2 (en) Data storage controller with multiple pipelines
EP2598996B1 (en) Apparatus, system, and method for conditional and atomic storage operations
CN110770710A (zh) 用于控制数据加速的装置和方法
CN110597654B (zh) 用于超快的具有奇偶校验的纠错码的系统和方法
US10268538B2 (en) Efficient and enhanced distributed storage clusters
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
US11907068B2 (en) Read request response for reconstructed data in a degraded drive

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40025857

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: New Zealand

Address after: Cambridge, New Zealand

Applicant after: Nereid Co.

Address before: Cambridge, New Zealand

Applicant before: NeRead Co.,Ltd.

Country or region before: New Zealand

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240416

Address after: USA New York

Applicant after: Daedaros Cloud LLC

Country or region after: U.S.A.

Address before: Cambridge, New Zealand

Applicant before: Nereid Co.

Country or region before: New Zealand