TW202014884A - 利用非揮發性固定記憶體的區塊元件介面 - Google Patents

利用非揮發性固定記憶體的區塊元件介面 Download PDF

Info

Publication number
TW202014884A
TW202014884A TW108131172A TW108131172A TW202014884A TW 202014884 A TW202014884 A TW 202014884A TW 108131172 A TW108131172 A TW 108131172A TW 108131172 A TW108131172 A TW 108131172A TW 202014884 A TW202014884 A TW 202014884A
Authority
TW
Taiwan
Prior art keywords
data
memory
write
volatile
volatile memory
Prior art date
Application number
TW108131172A
Other languages
English (en)
Inventor
司圖爾特約翰 英格利斯
提摩西凱利 道森
賽維爾奧爾登 席蒙司
謝里登約翰 藍伯特
拉斐爾約翰派翠克 舒凱爾
多明尼克約瑟夫麥可休斯敦 阿札利斯
亞歷山卓金斯里 聖約翰
Original Assignee
紐西蘭商奈瑞爾德有限公司
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 紐西蘭商奈瑞爾德有限公司 filed Critical 紐西蘭商奈瑞爾德有限公司
Publication of TW202014884A publication Critical patent/TW202014884A/zh

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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)
  • 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

一種方法,包含:於一區塊元件介面處,接收要寫入資料的一指令,該指令包含該資料的一記憶體位置;將該資料複製至固定記憶體;由一向量處理器,對該資料進行一或更多個可逆轉換;及將該資料從該固定記憶體非同步地寫入至一或更多個儲存元件;其中該資料的該固定記憶體對應於固定記憶體中的一位置,該固定記憶體可由該向量處理器及一或更多個其他處理器存取。

Description

利用非揮發性固定記憶體的區塊元件介面
本案有關利用非揮發性固定記憶體的區塊元件介面。
資料可被儲存在持久性儲存元件上。驅動器能提供一介面,以允許資料被寫入至持久性儲存元件及從持久性儲存元件讀取。
在第一範例實施例中提供有一種方法,包含下列步驟:於一區塊元件介面處,接收要寫入資料的一指令,該指令包含該資料的一記憶體位置;將該資料複製至固定記憶體;由一向量處理器,對該資料進行一或更多個可逆轉換;及將該資料從該固定記憶體非同步地寫入至一或更多個儲存元件;其中該資料的該固定記憶體對應於固定記憶體中的一位置,該固定記憶體可由該向量處理器及一或更多個其他處理器存取。
在第二範例實施例中提供有一種方法,包含下列步驟:於一區塊元件介面處,接收要從一或更多個儲存元件讀取資料的一指令;將該資料從一或更多個儲存元件寫入至一記憶體位置;及由一向量處理器,於該記憶體位置處對該資料進行一或更多個可逆轉換;其中該資料的該記憶體位置對應於固定記憶體中的一位置,該固定記憶體可由該向量處理器及一或更多個其他處理器存取。
在一些實施例中,要寫入資料的一指令先被接收於一區塊元件介面處。該指令包含將被儲存之該資料的一記憶體位置。此記憶體位置可在固定記憶體中,固定記憶體是可由向量處理器及一或更多其他處理器存取的記憶體。向量處理器能接著對該資料進行一或更多個可逆轉換。該資料接著從固定記憶體中的該記憶體位置被非同步地寫入至一或更多儲存元件。
在此情況中,「非同步」指的是被寫入至記憶體的資料與被寫入該一或更多儲存元件的資料不必然為緊隨其後的。亦即,一旦資料被寫入記憶體,在該資料被寫入至該一或更多儲存元件之前可能經過一些時間。在一些實例中,此可為即刻的,但此不必然會發生。這與同步寫入相反,同步寫入在資料被寫入記憶體時該資料同時地(或在其後立即)被寫入至一或更多儲存元件。固定記憶體
固定記憶體是可由多種類型之處理器經由直接記憶體存取來存取的一記憶體部分。在一些情況中,固定記憶體可為統一記憶體,其實體位在主記憶體中。固定記憶體可由向量處理器(諸如GPU)及一或更多其他處理器(諸如CPU)直接在一匯流排上存取。如此,兩個處理器可對記憶體中的相同資料進行操作,無需複製該記憶體。此可稱為「零複本(zero-copy)」。
此能與非固定記憶體形成對比,該非固定記憶體要求資料被複製至關聯於各處理器或處理器類型的記憶體。例如,若資料被儲存在關聯於CPU的記憶體中,在GPU能處理該資料之前該資料將需要先被複製至關聯於GPU的記憶體。
因此,當在處理器或處理器類型之間切換時,運用固定記憶體能減少額外負擔。
在一些實施例中,固定記憶體實體上是非揮發性記憶體(包含一或更多非揮發性記憶體晶片)之部分。在此方面,可認為「非揮發性」表示該記憶體即使在沒有電力下維持了儲存的資料。此與揮發性記憶體相反,在揮發性記憶體中電力必須恆定維持以使資料被保留。
固定記憶體可經配置成一回寫快取。可把回寫快取想成是一快取,其中的資料維持在該快取中直到該資料將在該快取中被新資料所覆寫為止(或者至少持續一相當長的時段)。換言之,該資料可儘可能晚得從快取被寫入至儲存元件。
記憶體一般提供比底下的儲存元件快速更多的寫入速度。因此,藉由將寫入動作推遲給儲存元件,儲存元件的更慢速度不會拖延寫入速度。更甚者,重複寫入已經在記憶體中的資料能為快速的,因為不需要從儲存元件擷取出該資料。
因為快取是非揮發性的,若有電力失敗不會遺失資料。若需要的話,快取可甚至被移入一分離系統中以供復原。此能減少在記憶體中長時間維持資料的風險。
因而,這些做法提供顯著改善的寫入速度,和最小的資料丟失風險。介面
在使用上,可提供一介面由程式或系統使用。該介面可為一區塊元件驅動器。區塊元件驅動器是經配置以允許與一底下元件互動的驅動器,該底下元件以固定大小之區塊操作。例如,儲存元件常見地以512位元組(bytes)或4096位元組的區塊操作。該系統則能利用一區塊元件驅動器與該儲存元件互動(例如,藉由將資料寫入該元件或從該元件讀取資料)。
在一些情況中,可能沒有單一個底下元件。替代地,該介面可在元元件(meta-device)的基礎上操作。從利用該介面之程式的觀點,元元件的存在可能如同一元件。
然而,元元件可經對映至對該程式而言為隱藏的一或更多儲存元件。例如,驅動器可將要在單一元元件上儲存資料的一請求轉譯成要跨於全部元件以一條帶(stripe)來儲存該資料。以此方式,驅動器能隱藏硬體的細節。
可提供該介面做為在一或更多CPU上運行的驅動器。額外地或替代地,該介面可做為向量處理器(諸如GPU)上的一長期運行的核心(kernel)來運行。此將允許向量處理器上運行的核心在沒有CPU之介入下直接與該介面介接。寫入
第1圖顯示在寫入資料中能利用固定記憶體的一範例作法。
於步驟101,區塊元件介面接收要寫入資料的一指令。要寫入資料的指令可作為該介面之一函數呼叫經接收。在該指令中可藉對一記憶體位置的參照來指明該資料。寫入資料的指令也可包含應寫入資料的一目的地。其可為對儲存元件中一或更多者上的一位置的參照。
資料的記憶體位置可對應於固定記憶體中的一位置。亦即,該資料被儲存在一記憶體位置中,該記憶體位置可由該向量處理器及由一或更多其他處理器存取。以此方式,驅動器可在該向量處理器或另一處理器(諸如CPU)上運行。
然而,在一些情況中,該記憶體位置可在主記憶體中(即,無法由向量處理器存取的記憶體)。
於步驟102,資料被複製至固定記憶體。
在複製程序期間,可對該資料進行一或更多轉換。例如,一轉換可涉及將該資料加密或編碼。此可允許固定記憶體中的資料被加密或編碼,即使主記憶體中的資料未經加密或未經編碼。這類轉換可為相對快速的,以不明顯拖延寫入程序。
步驟102可僅在該指令中的記憶體位置不在固定記憶體中的情況下發生。亦即,當請求中指示出的資料已在固定記憶體中時,可省略步驟102。
於步驟103,計算用於該資料的一檢查總和(checksum)。檢查總和的用途是驗證被寫入的資料就是後續經擷取的資料。此能避免位元衰敗(bitrot)的風險,或資料因其他原因無預期地改變。檢查總和可為一密碼雜湊值,使得在該資料中有不被注意之改變的機率極度低。一旦被計算出,該檢查總和就能被儲存在快取中,例如與該資料相同位置處。
檢查總和的計算可為相對快速的,以不明顯拖延寫入程序。
在一些情況中,可省略步驟103。例如,在一些實施方式中,檢查總和可能被視為不必要的或者關聯於檢查總和的額外負荷可能被認為是非所欲的。
於步驟104,資料被確認為已被寫入。此可涉及回傳一成功值給該指令的發送者(舉例來說)。在一些情況中,其可包含確認已寫入該資料至該指令中指明的目的地位置。以此方式,對使用者而言快取的使用是透明的。從使用者的觀點,該資料已被儲存於指定儲存元件處。此提供了相容性並封裝了在其他情況中使用快取可能相關聯的複雜性。
步驟104在固定記憶體對應於非揮發性記憶體的情況中可能特別有益。因為非揮發性記憶體對電力喪失有抗性,一旦資料已被寫入至非揮發性記憶體,則資料丟失的機會是可忽略不計的。因此藉著在資料確實被寫入持久性儲存元件之前確認資料已被寫入,能提供非常快速的資料產出量而沒有底下的資料丟失風險。
於步驟105,向量處理器對該資料進行一或更多轉換。這些轉換能是可逆的轉換,使得藉由進行一反向函數能復原原始內容。例如,加密、編碼、壓縮、刪除重複者(deduplication)、以及加入進一步資訊通常為可逆函數,因為能藉由一反向函數獲得原始資訊。可以預先決定的順序來進行該些轉換。例如,加密可在編碼之前進行。
因為這些轉換發生在該資料於步驟104被確認已寫入之後,從使用者的觀點此不會致使寫入程序中的延遲。此可允許進行相對強大的計算密集轉換,不會導致在感受到之寫入速度上的降低。
一種轉換可以是加密資料。此能利用RSA、AES、或任何其他適當的加密演算法來進行。此可避免若底下的儲存元件被盜用時資料被讀取。
另一種轉換是在將資料分割成資料片段之前將該資料編碼,其乃藉由透過利用一錯誤校正碼來加入同位資訊至資料。此允許能基於片段來重新產生原始資料,即使某些片段有錯。此錯誤校正碼可為一抹除碼,其允許在即使該些片段之部分完全遺失之時亦可重新產生原始資料。
Reed–Solomon碼是抹除碼的一例。一段資料(諸如一區塊)被利用Reed–Solomon演算法編碼以形成一數目的碼字(codeword)。各碼字包含n個符號:其中k個帶有來自原始資料的資訊,而其餘者經計算且能被用以重建原始資料。各個碼字能被拆開以形成一資料片段。可基於資料類型、系統預設值、使用者偏好或任何其他適當的做法來選擇同位n−k。由於Reed–Solomon碼可用,即使高達n−k個片段遺失,仍能獲得原始資料。
例如,對於利用2:1同位的一Reed–Solomon碼而言,每2個單位的原始資料有加入1個單位的同位資訊。此表示即使遺失1個片段,能從任意2個其他片段重新生成原始資料。15:5同位指的是對於每15個單位的原始資料有加入5個單位的同位。若任意5個片段遺失,能從20個剩餘片段中任意15個片段重新生成原始資料。
因此向量處理器可將資料編碼以形成n個資料片段,使得能利用該等資料片段中任意k個來重新生成該資料,其中k小於或等於n。
較高的同位一般表示在資料無法復原之前能遺失更大數目的資料片段。此外,同位資料對實際資料的比例越高可減少針對一給定彈性(resilience)而言所儲存的整體資料量。然而,較高的同位一般傾向於指數增加對於編碼所必需的運算層級。
此外,此可包括基於該資料運算一密碼雜湊值或無密碼雜湊值,並將其作為該資料的一部份來編碼。
另一種轉換可為將此儲存事件記錄在一事件記錄中。其可包括一時間戳記及該資料的密碼雜湊值。在記錄不會影響被儲存之資料的同時,為了轉換之順序的用途,記錄能被視為對該資料的一轉換。
在一些情況中,可利用由PCT公開文件第WO 2019/050418號所述的基於字典之資料壓縮方法。
藉由利用向量處理器來進行轉換,相較於利用CPU能更有效率地進行相對高品質的轉換。例如,在編碼的情況中,可使用高的同位層級。此外,其能大致即時地完成,使得轉換不嚴重地延遲儲存程序(例如,對儲存增加少於幾毫秒的時間,舉例來說)。
在一些情況中,固定記憶體經配置以作為一回寫(write-back)快取操作。
在寫入資料中,驅動器將決定該資料應被寫入的該快取中的一位置。若該快取中有未經使用的空間,則可在該處寫入該資料。若沒有未經使用的空間,驅動器可從該快取移動已存在之資料中的部分至一或更多儲存元件。
一旦已決定了該快取中的一位置,則該資料於該位置處被寫入該快取。
可更新驅動器處(或該快取內)的元資料來反映此。例如,可更新一對映來顯示原先意圖儲存在指令中之目的地位置處的資料被儲存於快取中的個別位置處。此外,該快取中的該位置可被標記為髒的,以指示出在儲存在該處的資料在沒有先被移動到一或更多儲存元件之前無法被覆寫。
於步驟106,該驅動器將該資料從該固定記憶體非同步地寫入至一或更多儲存元件。
此可回應於該驅動器判定該資料必須從快取移動至儲存元件而發生。對此該驅動器可依靠一或更多啟發分析(heuristics)。例如,驅動器可基於下列之一或更多者來選擇將被移動的資料:資料有多早、資料最近何時被使用、以及資料被使用的可能性多大。
此為非同步的,因此在步驟105及106之間可能有可觀的時間長。步驟106可僅在當需要寫入新資料至快取時進行。以此方式,該快取以一種「慵懶寫入」範式操作。替代地,在一些情況中可立即將該資料從該快取移動,例如該資料被寫入的位置經啟發分析決定是被移動的最佳資料。
該驅動器將該資料寫入至儲存元件中一或更多者。該一或更多儲存元件可為接收於步驟101之初始指令中所指明的並經記錄在元資料中的該些儲存元件。
因為步驟106是後續於步驟103且與步驟103非同步地進行,關聯於一般儲存元件的延遲在正常使用中對使用者來說不明顯。換言之,驅動器提供了資料以高出許多之快取速度(而非較低的儲存元件速度)儲存的外觀。
但尤其在快取為非揮發性的情況,此不必然引發任何資料丟失的大風險。此外,非揮發性記憶體的使用能減緩或消除「寫入漏洞(write hole)」的現象。亦即,在揮發性記憶體的情況中,若在從記憶體到儲存元件移轉資料之期間有電力流失,不可能決定磁碟上的資料是否乃是正確地從記憶體移轉。然而,藉由非揮發性記憶體,當電力回復時能繼續移轉程序而沒有資料丟失。
因此使用者可接收到較高效能的寫入,而沒有任何明顯的缺點。 Cleaning
如步驟106中所述,當需要寫入新資料時,驅動器選擇地從該快取將資料移動至一或更多儲存元件。
一旦該快取的一區塊被決定將被清空,則資料被移動至一或更多儲存元件。
第2圖顯示用於將資料從回寫快取寫入至一或更多儲存元件的一範例做法。此可經用以實施步驟105。
於步驟201,驅動器選擇將被移動至一或更多儲存元件的位於該快取之一或更多區塊處的資料。可按照利用數個變數之啟發式分析來做出對於將被移動的該快取中之資料的選擇。例如,其可為基於資料的年齡、資料的最近使用、使用該資料的預期可能性、或位於該等區塊處之資料的關聯性。
於步驟202,驅動器將該資料寫入至一或更多儲存元件。其可以習知方式發生,藉由與該一或更多儲存元件之一儲存控制器互動的驅動器。
對該一或更多儲存元件的選擇可基於先前針對將被移動之資料所儲存的元資料。換言之,當該資料初始地被儲存在快取中時,可能已經更新元資料以在資料之快取位置與該資料的最終儲存元件位置之間對映。在這樣的情況中,可利用此儲存元件位置來選擇該一或更多儲存元件。
於步驟203,在資料已被寫入該一或更多儲存元件後,驅動器將快取的相應區塊標記為清空的。此允許該快取的該部分被再利用。驅動器也可更新元資料來顯示該資料不再被儲存在快取中,例如藉由移除在快取中之一位置與該資料之間的對映關係。
以此方式,資料在需要的時候從快取被移動至一或更多儲存元件。
在一些情況中,快取可經配置以保留特定程度的清空容量。換言之,可從快取移動資料使得該快取能在不移動資料之下儲存一預先決定量的資料。例如,可能是快取之整體容量的50%應被保留為清空的。此允許在寫入中的改善爆發效能,同時仍允許對於已經在快取中之資料的改良讀取及修改效能。分割
如上述,可將非揮發性回寫快取視為對全部使用者而言可取得的共同資源。然而,在一些情況中,單一使用者可能藉由一次寫入大量資料而獨佔快取。一旦快取滿了,其他使用者無法看見其優點。
為了減緩此風險,可由來源(諸如使用者,或使用者群組)分割非揮發性回寫快取。各分割區則能針對快取及容量之目的來獨立操作。
第3圖顯示利用經分割快取的實例。
於步驟301,驅動器接收要寫入資料的一指令。此可相同於步驟101。然而,此情況中,該指令指定該指令的一來源(諸如使用者,或使用者群組)。
於步驟302,驅動器將資料寫入至回寫快取的一分割區,其中該分割區關聯於該來源。此可相同於步驟102,除了資料僅被寫入至該分割區以外。若該分割區所有的清空空間不足,則資料將被移出該分割區至一或更多儲存元件(即使該快取中的全部其他分割區為未經使用的)。
於步驟303,驅動器計算用於該資料的一檢查總和。該檢查總和能接著被儲存在該快取的該分割區中。此能相同於步驟103,除了該檢查總和可僅被寫入該分割區以外。
於步驟304,驅動器確認該資料已被寫入。此可相同於步驟104。
於步驟305,向量處理器對該資料進行一或更多個可逆轉換。此可相同於步驟105。
於步驟306,驅動器將該資料從固定記憶體非同步地寫入至一或更多儲存元件。此可相同於步驟106。
以此方式,單一來源(諸如單一使用者或使用者群組)在快取上的影響實質上被侷限於其分割區。此能對多個使用者保留高水準的服務品質,並避免回應於叢訊的一般效能降級。讀取
第4圖顯示針對如何在讀取資料中利用固定記憶體的一範例作法。此為第1圖中所示作法的補充。
於步驟401,區塊元件介面接收要從一或更多儲存元件讀取資料的一指令。要讀取資料的指令可作為該介面之一函數呼叫經接收。該指令可參照一或更多儲存元件上的一位置或參照一元元件來指明該資料。
於步驟402,從該一或更多儲存元件擷取該資料至該記憶體位置。在區塊元件介面對應於一元元件的情況中,此可包含從底下的實體儲存元件擷取資料。
資料的記憶體位置對應於固定記憶體中的一位置。換言之,該資料被儲存在一記憶體位置中,該記憶體位置可由向量處理器及由一或更多其他處理器存取。以此方式,驅動器可在該向量處理器上或另一處理器(諸如CPU)上運行。
於步驟403,計算用於該資料的一檢查總和。其能與用於該資料的一先前計算檢查總和做比較。此驗證擷取自儲存元件的資料與儲存於該儲存元件的資料相同。在一些情況中,可省略步驟403。例如,在一些實施方式中,驗證檢查總和可能被視為不必要的或者關聯於驗證檢查總和的額外負荷可能被認為是非所欲的。
於步驟404,向量處理器對該資料進行一或更多轉換。這些轉換可為進行於步驟102之轉換的反向,以復原原始資料。例如,可進行解密、解碼、解壓縮、取消刪除重複者(un-deduplication)、及移除進一步資訊,來逆轉步驟102所進行的該些轉換。可以預先決定的順序來進行該些轉換。例如,解碼可在解密之前進行。
於步驟405,資料被複製至主記憶體。
此避免固定記憶體被不必要地佔據。然而,在一些情況中,可省略步驟405。
於步驟406,該資料經確認為已被讀取。此涉及回傳該記憶體位置至該指令的發送者(舉例來說)。
以此方式,可擷取利用第1圖之作法所儲存的資料。系統
第5圖顯示可用來實施上述方法的一範例系統。
系統1000包含一CPU(中央處理單元)1010、一主記憶體1020、一或更多周邊設備1030、及一GPU(圖形處理單元)1050。CPU 1010、主記憶體1020、周邊設備1030、及GPU 1050由一匯流排1040連接。在PCIe(快速PCI)拓撲的情況中,匯流排1040包括一根複合體,而周邊設備1030及GPU 1050之各者是PCIe端點。GPU 1050能經由匯流排1040直接與周邊設備1030通訊。在一些情況中,提供超過一個CPU 1010及/或超過一個GPU 1050。
主記憶體1020包含經配置以作為非揮發性回寫快取操作的非揮發性記憶體晶片。此可涉及單獨利用快閃記憶體或與習用的揮發性記憶體結合。非揮發性記憶體晶片可經配置成非揮發性雙列記憶體模組(NVDIMM)。主記憶體1020可進一步包含習用的揮發性記憶體,其不被使用為非揮發性回寫快取。
在一些情況中主記憶體1020包含一或更多成對的非揮發性記憶體模組,諸如成對的NVDIMM。在使用中,被寫入該等非揮發性記憶體模組中之一者的資料被鏡像至另一非揮發性記憶體模組。此能在假設資料丟失的情況中提供一種程度的彈性:各非揮發性記憶體模組包含了在快取中之資料的完整集合。
當該成對中之一者被替換時,資料則可經自動地鏡像至新的模組。此允許用於擴充快取的簡單流程。成對中的第一模組能被一新的較大模組替換。一旦完成了自動鏡像,成對中的第二模組能接著被一新的較大模組替換。此造成在沒有任何資料或功能性之損失之下擴充快取(至新的較大尺寸)。
在一些情況中,非揮發性記憶體模組中一或更多者可經橫跨(span),使得區塊在其之間交替。跨越及鏡像可以合併。例如,在四個非揮發性記憶體模組中,第一及第二模組可以橫跨,且第一及第二模組可經鏡像至第三及第四模組。
周邊設備1030可包括持久性儲存元件(諸如硬碟磁碟機、固態磁碟機、或類似者)、儲存控制器(諸如RAID控制器)、網路控制器(諸如網路介面卡)、切換器(諸如PCIe切換器,其經配置以連接其他周邊設備),或各式各樣元件中任意者。
主記憶體1020及任何儲存元件的一般特性是主記憶體傾向於針對隨機寫入快速得多。因此將一單元的資料寫入主記憶體能常見地比將一單元的資料寫入至儲存元件更快速許多地解決。然而儲存元件傾向於更便宜且更大,因此對於一般長期儲存用途而言較佳。
周邊設備1030及GPU 1050可經由匯流排1040存取主記憶體1020。通過DMA(直接記憶體存取),此能允許周邊設備1030或GPU 1050從主記憶體讀取資料及向其寫入資料。此可涉及從主記憶體1020複製資料至對周邊設備1030或GPU 1050而言為區域性(local)的一記憶體。
在一些情況中,用於CPU 1010及GPU 1050的記憶體空間能經由統一的虛擬記憶體來共享。此允許指向單一記憶體位址的一指標在CPU與GPU之間傳遞,而不需要在主記憶體1020及區域性記憶體之間複製資料。
可利用電腦系統1000來實施上述的方法。例如,CPU 1010或GPU 1050可運行一程式,該程式操作為對儲存元件周邊設備1030中一或更多者的驅動器。向量處理器
向量處理器是其中指令在資料陣列上執行的一處理器。其能對比於無向量(scalar)且在單一資料項上執行一指令的習用CPU。如此允許向量處理器在處理大量資料上比起習用、無向量的CPU快速許多。
向量處理器的一例是GPU。然而,向量處理器可以其他形式實施,諸如現場可程式化閘陣列(FPGA)。
在第6圖中顯示操作為一向量處理器的一範例GPU 950。在上述之做法的任意者中此一GPU 950可被使用作為向量處理器。
GPU 950包含一個數的SM(串流多處理器,streaming multiprocessor)951,常見在1與30個之間。各SM 951具有一共享記憶體952及一指令單元953。
各SM 951包含一個數的SP(串流處理器,streaming processor)954,例如8個。各SP 954可存取共享記憶體952並具有一組暫存器955。各SP 954也可存取GPU的一全域記憶體956。此全域記憶體956可對映至電腦系統的主記憶體920。
SM 951內的SP 954從相同的指令單元953接收指令。如此,一SM內的各個SP 954一般同時處理相同指令。
GPU 950能經配置以運行一核心,該核心可為一程式或函數。核心可利用CUDA平台。核心常見為壽命相對較短的(即,在秒的數量級上),因為若核心運行超過一預設臨界值,則看門狗計時器(watchdog timer)可殺掉該核心。然而,在一些情況中核心可長期運行,其中該核心能無限期地執行直到執行完成為止。儘管核心在一GPU上運行,常見地是由一近端CPU或遠端CPU起始該核心。
一核心是由執行對應於該核心之網格(grid)的GPU 950執行。一網格由一數目的區塊構成。在一網格中的區塊之間常見為沒有同步化。
各SM 951能執行網格的一區塊。常見地,SM 951能同時執行多個區塊。一SM 951上的區塊的數目被共享記憶體952的容量所限。常見地,在核心執行期間一區塊不會從一SM 951移動至另一SM 951。
各SP 954能執行該區塊的一執行緒。在一些情況中,一個SP 954能同時處理多個執行緒。執行緒一般是包含數個指令的運算。各指令可花上數個週期(cycle)以執行,例如4個。由於此延遲時間,一SP 954能一次執行多個執行緒。換言之,在一執行緒正被執行的同時,能開始另一執行緒。執行緒可經由SM 951的共享記憶體952互相通訊。
GPU 950可具有一SIMD(單一指令、多重資料)架構。此意義是一GPU 950可在warp的基礎上操作。各warp包含一區塊內的數個執行緒,該些執行緒以鎖步(lockstep)執行相同指令,不過可選地是在不同資料上執行。例如,一個warp中的各執行緒可對儲存於不同記憶體位址處的數字執行一加法指令。此外,一warp內的各執行緒可經配置以同時從記憶體提取資料。
warp駐存在一SM 951上,使得一warp中的各執行緒可由一SM 951內的不同SP 954執行。warp的大小(即一warp內能以鎖步執行的執行緒數目)可為一預先決定的值,諸如32。SM 951可具有多個駐存的warp。
以此方式,單一核心能運用一GPU上可用的數個處理器的容量。此能導致一核心相較於其他處理單元顯著地更快速執行。解釋
以上已說明數種方法。將理解這些方法中任意者可由一連串指令所體現,該些指令可形成一電腦程式。這些指令(或此電腦程式)可被儲存在一電腦可讀取媒體上,該電腦可讀取媒體可為非暫態的。當這些指令或此程式被執行時,可致使一處理器(諸如CPU或GPU)進行上述方法。
當已描述一做法為藉由一處理器實施時,此可包含複數個處理器。亦即,至少在處理器的情況中,單數形應被解釋為包括複數形。當方法包含有多個步驟時,不同步驟或者一個步驟的不同部分可由不同處理器進行。在一些情況中,一個步驟可被第一類型處理器進行(例如,大的資料集合的處理可由GPU進行),而另一步驟可被第二類型處理器進行(諸如CPU所進行的元資料查找)。
可改變方法之內步驟的順序,使得步驟順序進行或是平行地進行,但當一步驟依賴另一個已被進行的步驟,或者前後文有相反要求時則除外。
除非有相反表示,否則用語「包含」及其他文法形式意圖具有包容性意義。亦即,其應被認為代表包含所列出的組成部分,以及可能包含其他未指明的組成部分或元素。
在本發明已藉由特定實施例之說明並參照圖式被作出解釋的同時,本發明不意圖被侷限於此類細節。本領域中之技藝人士將顯而易見額外的優點及修改。因此,在最廣泛態樣中的本發明不限於所圖示及說明的該些特定細節、代表性設備及方法、以及例示性實例。因此,可偏離此類細節而無悖離大致之發明概念的精神或範疇。
101:步驟 102:步驟 103:步驟 104:步驟 105:步驟 106:步驟 201:步驟 202:步驟 203:步驟 301:步驟 302:步驟 303:步驟 304:步驟 305:步驟 306:步驟 401:步驟 402:步驟 403:步驟 404:步驟 405:步驟 406:步驟 950:GPU 951:串流多處理器(SM) 952:共享記憶體 953:指令單元 954:串流處理器(SP) 955:暫存器 956:全域記憶體 1000:電腦系統 1010:CPU 1020:記憶體 1030:周邊設備 1040:匯流排 1050:GPU(圖形處理單元)
本說明書參照顯示特定實施例的圖式作為實例而架構。然而,這些僅提供做為示例。
第1圖顯示在寫入資料中利用固定記憶體的一範例做法。
第2圖顯示用於從回寫快取(write-back cache)將資料寫入至一或更多個儲存元件的一範例做法。
第3圖顯示一經分割快取之使用的實例。
第4圖顯示在讀取資料中利用固定記憶體的一範例做法。
第5圖顯示一範例系統。
第6圖顯示一範例GPU。
101:步驟
102:步驟
103:步驟
104:步驟
105:步驟
106:步驟

Claims (21)

  1. 一種方法,包含下列步驟: 於一區塊元件介面處,接收要寫入資料的一指令,該指令包含該資料的一記憶體位置;將該資料複製至固定記憶體(pinned memory);由一向量處理器,對該資料進行一或更多個可逆轉換;及將該資料從該固定記憶體非同步地寫入至一或更多個儲存元件;其中該資料的該固定記憶體對應於固定記憶體中的一位置,該固定記憶體可由該向量處理器及一或更多個其他處理器存取。
  2. 如請求項1所述之方法,對該資料進行一或更多個可逆轉換之步驟之前進一步包含下列步驟: 確認該資料已被寫入。
  3. 如請求項1所述之方法,其中該固定記憶體經配置成一回寫(write-back)快取。
  4. 如請求項3所述之方法,其中將該資料從該固定記憶體非同步地寫入至一或更多個儲存元件之步驟進一步包含下列步驟: 判定關聯於該資料的該回寫快取的一部分是髒的(dirty);將該資料寫入至一或更多個儲存元件;及將該回寫快取的該部分標記為清空的(clean)。
  5. 如請求項3所述之方法,其中該回寫快取包含複數個分割區,各分割區關聯於一來源。
  6. 如請求項1所述之方法,其中該固定記憶體對應於一非揮發性記憶體。
  7. 如請求項6所述之方法: 其中該非揮發性記憶體包含:複數個非揮發性記憶體單元;及其中在該固定記憶體中的該資料是在該複數個非揮發性記憶體單元之各者中。
  8. 如請求項7所述之方法,其中該複數個非揮發性記憶體單元包含: 一或更多個成對的NV-DIMM。
  9. 如請求項7所述之方法,進一步包含下列步驟: 判定該複數個非揮發性記憶體單元中之一第一非揮發性記憶體單元已被替換;及將該資料從該複數個非揮發性記憶體單元中之另一非揮發性記憶體單元鏡像至該複數個非揮發性記憶體單元中之該第一非揮發性記憶體單元。
  10. 如請求項1所述之方法,其中該區塊元件介面包含用於一元元件(meta-device)的區塊元件介面,該元元件對應於該一或更多個儲存元件。
  11. 如請求項1所述之方法: 其中接收要寫入資料之一指令的步驟包含:接收要修改儲存在該一或更多個儲存元件上之資料的一指令;及將儲存在該一或更多個儲存元件上之該資料讀取至該非揮發性回寫快取;及其中將該資料寫入至一非揮發性回寫快取的步驟包含:基於該指令修改該非揮發性回寫快取中的該資料。
  12. 如請求項1所述之方法,進一步包含下列步驟: 提供該區塊元件介面。
  13. 如請求項1所述之方法,其中由一向量處理器,對該資料進行一或更多個可逆轉換的步驟包含下列之一或更多者: 加密; 編碼;壓縮; 刪除重複者(deduplicating);或 記錄。
  14. 一種方法,包含下列步驟: 於一區塊元件介面處,接收要從一或更多個儲存元件讀取資料的一指令;將該資料從一或更多個儲存元件寫入至一記憶體位置;及由一向量處理器,於該記憶體位置處對該資料進行一或更多個可逆轉換;其中該資料的該記憶體位置對應於一固定記憶體(pinned memory)中的一位置,該固定記憶體可由該向量處理器及一或更多個其他處理器存取。
  15. 如請求項14所述之方法,其中該固定記憶體對應於一非揮發性記憶體。
  16. 如請求項14所述之方法,其中該區塊元件介面包含用於一元元件(meta-device)的區塊元件介面,該元元件對應於該一或更多個儲存元件。
  17. 如請求項14所述之方法,進一步包含下列步驟: 提供該區塊元件介面。
  18. 如請求項14所述之方法,其中由一向量處理器,對該資料進行一或更多個可逆轉換的步驟包含下列之一或更多者: 解密; 解碼; 解壓縮; 取消刪除重複者(un-deduplicating);或 記錄。
  19. 一種系統,包含: 一或更多向量處理器;一或更多CPU;及一記憶體,該記憶體包含固定記憶體(pinned memory);其中該記憶體包含指令,當該等指令由該一或更多向量處理器及/或該一或更多CPU執行時,配置該一或更多向量處理器及/或該一或更多CPU進行如請求項1至18中任一項所述的方法。
  20. 一種包含指令的非暫態電腦可讀取媒體,當該等指令由一或更多處理器執行時致使該一或更多處理器以進行如請求項1至18中任一項所述的方法。
  21. 一種電腦程式,當該電腦程式由一或更多向量處理器及/或一或更多CPU執行時,致使該一或更多向量處理器及/或該一或更多CPU進行如請求項1至18中任一項所述的方法。
TW108131172A 2018-08-31 2019-08-30 利用非揮發性固定記憶體的區塊元件介面 TW202014884A (zh)

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
TW202014884A true TW202014884A (zh) 2020-04-16

Family

ID=67734509

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108129760A TW202011202A (zh) 2018-08-31 2019-08-21 持久性儲存元件管理
TW108131172A TW202014884A (zh) 2018-08-31 2019-08-30 利用非揮發性固定記憶體的區塊元件介面
TW108131168A TW202014908A (zh) 2018-08-31 2019-08-30 向量處理器儲存

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW108129760A TW202011202A (zh) 2018-08-31 2019-08-21 持久性儲存元件管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW108131168A TW202014908A (zh) 2018-08-31 2019-08-30 向量處理器儲存

Country Status (5)

Country Link
US (7) US11347653B2 (zh)
EP (3) EP3617868A1 (zh)
JP (3) JP2020042805A (zh)
CN (3) CN110874451A (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
US20230195319A1 (en) * 2021-12-21 2023-06-22 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)

* 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
US8938549B2 (en) * 2008-10-15 2015-01-20 Aster Risk Management Llc Reduction of peak-to-average traffic ratio in distributed streaming systems
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
US8949517B2 (en) * 2011-10-05 2015-02-03 Lsi Corporation Self-journaling and hierarchical consistency for non-volatile storage
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
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
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
US9658968B1 (en) 2015-11-09 2017-05-23 International Business Machines Corporation Implementing hardware accelerator for storage write cache management
JP6113816B1 (ja) * 2015-11-18 2017-04-12 株式会社東芝 情報処理システム、情報処理装置、及びプログラム
US10216419B2 (en) 2015-11-19 2019-02-26 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
US20170206033A1 (en) * 2016-01-19 2017-07-20 SK Hynix Inc. Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme
EP3203377A1 (en) * 2016-02-08 2017-08-09 Wipro Limited Method and system for optimized garbage collection in a storage device
CN107102957A (zh) 2016-02-22 2017-08-29 深圳市知穹科技有限公司 一种基于gpu与nic之间的内存高速直接交换的方法及系统
ES2899933T3 (es) 2016-03-15 2022-03-15 Datomia Res Labs Ou Gestión y seguridad de datos del sistema de almacenamiento distribuido
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
WO2019040418A1 (en) 2017-08-22 2019-02-28 Albert Einstein College Of Medicine, Inc. VIRAL INHIBITOR WITH BROAD SPECTRUM
CN109542335B (zh) * 2017-09-22 2022-04-01 慧荣科技股份有限公司 快闪存储器的数据内部搬移方法以及使用该方法的装置
US10394706B2 (en) * 2017-11-02 2019-08-27 Western Digital Technologies, Inc. Non-volatile storage with adaptive command prediction
CN107844431B (zh) * 2017-11-03 2022-01-25 合肥兆芯电子有限公司 映射表更新方法、存储器控制电路单元与存储器存储装置
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

Also Published As

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

Similar Documents

Publication Publication Date Title
TW202014884A (zh) 利用非揮發性固定記憶體的區塊元件介面
US20190243558A1 (en) Two-level system main memory
TWI296757B (en) Method and system for managing data organization, article comprising a storage medium, and device for use with a data storage having a plurality of non-volatile storage units
US8583984B2 (en) Method and apparatus for increasing data reliability for raid operations
US20160217040A1 (en) Raid parity stripe reconstruction
US20140351526A1 (en) Data storage controller with multiple pipelines
US10387307B2 (en) Lock-free raid implementation in multi-queue architecture
US10564865B2 (en) Lockless parity management in a distributed data storage system
US9836223B2 (en) Changing storage volume ownership using cache memory
EP4145265A2 (en) Storage system
JP2018142314A (ja) データを暗号化するための分散データ方法
US20220091767A1 (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
CN108604166B (zh) 冷存储系统的数据保护
US11662955B2 (en) Direct memory access data path for RAID storage
US11907068B2 (en) Read request response for reconstructed data in a degraded drive
JP2004348281A (ja) 冗長記憶装置、方法、およびプログラム
CN116414612A (zh) 存储节点及其操作方法