KR101842621B1 - 지속 메모리에 대한 블록 저장 애퍼처들 - Google Patents
지속 메모리에 대한 블록 저장 애퍼처들 Download PDFInfo
- Publication number
- KR101842621B1 KR101842621B1 KR1020167002219A KR20167002219A KR101842621B1 KR 101842621 B1 KR101842621 B1 KR 101842621B1 KR 1020167002219 A KR1020167002219 A KR 1020167002219A KR 20167002219 A KR20167002219 A KR 20167002219A KR 101842621 B1 KR101842621 B1 KR 101842621B1
- Authority
- KR
- South Korea
- Prior art keywords
- address
- logical
- block
- controller
- nvm device
- Prior art date
Links
- 230000002085 persistent effect Effects 0.000 title abstract description 13
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000013519 translation Methods 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하는 컴퓨터 시스템 내의 비휘발성 메모리(NVM) 장치에 액세스하는 장치 및 방법들이 개시된다. NVM 장치는 NVM 장치 제어기를 통해 메모리 버스에 통신가능하게 결합될 수 있음으로써, 호스트 프로세서가 메모리 버스를 통해 NVM 장치 제어기에 하나 이상의 메모리 로드/저장 명령을 발행함으로써 NVM 장치 내에 저장가능한 지속 데이터에 액세스할 수 있게 된다. NVM 장치 제어기는 NVM 장치 내에 저장가능한 지속 데이터에 액세스하기 위한 적어도 하나의 어드레스 범위를 정의하는 적어도 하나의 블록 윈도우 또는 애퍼처를 포함하기 때문에, 컴퓨터 시스템은 호스트 프로세서에 의해 부과된 물리적 어드레싱 제한들에 의해, 또는 호스트 프로세서에 의해 실행된 운영 체제에 의해 부과된 제한들에 의해 과도하게 구속받지 않고 NVM 장치의 전체 용량을 이용할 수 있다.
Description
종래의 컴퓨터 시스템에서, 비휘발성 메모리를 포함하는 블록 저장 장치는 결국 시스템 버스에 의해 프로세서에 통신가능하게 결합될 수 있는 블록 저장 장치 제어기에 통신가능하게 결합될 수 있다. 이러한 시스템 버스는 전형적으로 고속 병렬 컴포넌트 상호 연결(PCIe) 버스로서 구현되어, 프로세서가 PCIe 버스를 통해 블록 저장 장치 제어기에 하나 이상의 입/출력(I/O) 명령을 발행함으로써 블록 저장 장치 내에 저장가능한 블록 데이터에 액세스할 수 있게 된다. PCIe 버스를 통해 프로세서로부터 I/O 명령을 수신하면, 블록 저장 장치 제어기는 블록 저장 장치 내에 저장가능한 블록 데이터에 액세스하기 위해 하나 이상의 직접 메모리 액세스(DMA) 동작을 포함하는 I/O 처리를 수행하고, 궁극적으로 신호를 I/O 처리의 신호 완료까지 PCIe를 통해 신호를 프로세서에 보낼 수 있다. 그러나, PCIe 버스와 함께 블록 저장 장치 제어기에 의해 수행되는 이러한 I/O 처리는 이러한 종래의 컴퓨터 시스템에서 블록 기입/판독 동작들의 처리에서의 레이턴시를 일으킬 수 있다.
본 명세서에 포함되고 그 일부를 이루는 첨부 도면은 여기에 설명된 하나 이상의 실시예를 도시하고, 상세한 설명과 함께 이들 실시예를 설명한다.
도 1은 본 출원에 따라, 컴퓨터 시스템에서, NVM 장치 제어기와 함께, 블록 저장 장치로서 컴퓨터 시스템에 의해 총체적으로 보여질 수 있는 적어도 하나의 비휘발성 메모리(NVM) 장치에 액세스하기 위한 예시적인 장치를 도시한 블록도.
도 2는 도 1의 장치에 포함되는 NVM 장치 제어기를 도시한 블록도.
도 3은 도 2의 NVM 장치 제어기에 포함된 예시적인 블록 윈도우, 복수의 예시적인 제어 레지스터, 예시적인 어드레스 변환 컴포넌트, 및 예시적인 미디어 관리 변환 테이블을 도시한 블록도.
도 4는 도 2의 NVM 장치 제어기를 동작하는 예시적인 방법을 도시한 흐름도.
도 5는 도 2의 NVM 장치 제어기가 이용될 수 있는 예시적인 컴퓨터 시스템의 블록도.
도 6a는 호스트 프로세서에 의해 메모리 버스를 통해 NVM 장치 제어기에 보내지는 메모리 로드/저장 명령들과 같은, 하나 이상의 명령을 발행하고 모니터하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 메일박스를 포함하는, 도 2의 NVM 장치 제어기의 예시적인 대안적 실시예를 도시한 블록도.
도 6b는 각각의 명령과 관련된 예시적인 op-코드 포맷, op-코드 포맷과 관련된 예시적인 기입 보호 비트, 및 도 6a의 메일박스를 사용하여 NVM 장치 제어기에 각각의 명령을 발행하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 입력 페이로드 포맷을 도시한 도면.
도 6c는 각각의 명령과 관련된 예시적인 상태 코드 포맷, 및 도 6a의 메일박스를 사용하여 각각의 명령의 완료를 모니터하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 출력 페이로드 포맷을 도시한 도면.
도 7a-7b는 메모리 버스를 통해 NVM 장치 제어기에 명령을 발행하고, 도 6a의 메일박스를 사용하여 호스트 프로세서에 의한 명령의 완료의 상태를 모니터하는 예시적인 방법을 도시한 흐름도.
도 1은 본 출원에 따라, 컴퓨터 시스템에서, NVM 장치 제어기와 함께, 블록 저장 장치로서 컴퓨터 시스템에 의해 총체적으로 보여질 수 있는 적어도 하나의 비휘발성 메모리(NVM) 장치에 액세스하기 위한 예시적인 장치를 도시한 블록도.
도 2는 도 1의 장치에 포함되는 NVM 장치 제어기를 도시한 블록도.
도 3은 도 2의 NVM 장치 제어기에 포함된 예시적인 블록 윈도우, 복수의 예시적인 제어 레지스터, 예시적인 어드레스 변환 컴포넌트, 및 예시적인 미디어 관리 변환 테이블을 도시한 블록도.
도 4는 도 2의 NVM 장치 제어기를 동작하는 예시적인 방법을 도시한 흐름도.
도 5는 도 2의 NVM 장치 제어기가 이용될 수 있는 예시적인 컴퓨터 시스템의 블록도.
도 6a는 호스트 프로세서에 의해 메모리 버스를 통해 NVM 장치 제어기에 보내지는 메모리 로드/저장 명령들과 같은, 하나 이상의 명령을 발행하고 모니터하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 메일박스를 포함하는, 도 2의 NVM 장치 제어기의 예시적인 대안적 실시예를 도시한 블록도.
도 6b는 각각의 명령과 관련된 예시적인 op-코드 포맷, op-코드 포맷과 관련된 예시적인 기입 보호 비트, 및 도 6a의 메일박스를 사용하여 NVM 장치 제어기에 각각의 명령을 발행하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 입력 페이로드 포맷을 도시한 도면.
도 6c는 각각의 명령과 관련된 예시적인 상태 코드 포맷, 및 도 6a의 메일박스를 사용하여 각각의 명령의 완료를 모니터하는 데 호스트 프로세서에 의해 사용하기 위한 예시적인 출력 페이로드 포맷을 도시한 도면.
도 7a-7b는 메모리 버스를 통해 NVM 장치 제어기에 명령을 발행하고, 도 6a의 메일박스를 사용하여 호스트 프로세서에 의한 명령의 완료의 상태를 모니터하는 예시적인 방법을 도시한 흐름도.
적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하는 컴퓨터 시스템 내의 적어도 하나의 비휘발성 메모리(NVM) 장치에 액세스하는 장치 및 방법들이 개시된다. 개시된 장치 및 방법들에서, NVM 장치는 NVM 장치 제어기를 통해 메모리 버스에 통신가능하게 결합될 수 있음으로써, 호스트 프로세서가 메모리 버스를 통해 NVM 장치 제어기에 하나 이상의 메모리 로드/저장 명령을 발행함으로써 NVM 장치 내에 저장가능한 지속 데이터(persistent data)에 액세스할 수 있게 된다. 호스트 프로세서와 함께 컴퓨터 시스템은 블록 저장 구동기를 구현할 수 있고, NVM 장치 제어기와 함께 NVM 장치는 블록 저장 장치로서 컴퓨터 시스템에 의해 총체적으로 보여질 수 있다. NVM 장치 제어기는 NVM 장치 내에 저장가능한 지속 데이터의 하나 이상의 블록에 액세스하기 위한 적어도 하나의 어드레스 범위를 정의하는 적어도 하나의 블록 윈도우(이러한 블록 윈도우는 여기서 "애퍼처(aperture)"라고도 함)를 포함하기 때문에, 컴퓨터 시스템은 호스트 프로세서에 의해 부과된 물리적 어드레싱 제한들에 의해, 또는 호스트 프로세서에 의해 실행된 운영 체제(OS)에 의해 부과된 제한들에 의해 과도하게 구속받지 않고 감소된 레이턴시로 NVM 장치의 전체 용량을 유리하게 이용할 수 있다.
도 1은 본 출원에 따라, 컴퓨터 시스템 내의 적어도 하나의 NVM 장치에 액세스하기 하기 위한 예시적인 장치(100)의 예시의 실시예를 도시한다. 도 1에 도시한 바와 같이, 장치(100)는 호스트 프로세서(101), 및 하나 이상의 메모리 버스(103.1-103.n)에 의해 각각 호스트 프로세서(101)에 의해 통신가능하게 결합된 하나 이상의 NVM 장치 제어기(102.1-102.n)(여기서 "NVM 제어기"라고도 함)를 포함한다. 도 1에 더 도시한 바와 같이, 하나 이상의 NVM 장치는 NVM 제어기들(102.1-102.n) 각각에 통신가능하게 결합될 수 있다. 예를 들어, 하나 이상의 NVM 장치(104.1-104.m)는 결국 메모리 버스(103.1)를 통해 호스트 프로세서(101)에 통신가능하게 결합된 NVM 제어기(102.1)에 통신가능하게 결합될 수 있다. 마찬가지로, 하나 이상의 NVM 장치(106.1-106.p)는 결국 메모리 버스(103.n)를 통해 호스트 프로세서(101)에 통신가능하게 결합된 NVM 제어기(102.n)에 통신가능하게 결합될 수 있다.
도 1의 예시적인 장치(100)에서, 호스트 프로세서(101)는 하나 이상의 프로세서, 하나 이상의 멀티 코어 프로세서, 및/또는 기타 적합한 프로세서 또는 프로세서들을 사용하여 구현될 수 있다. 또한, NVM 장치들(104.1-104m, 106.1-106.p) 각각은 메모리 셀 당 단일 비트를 사용하는 NAND 또는 NOR 플래시 메모리, 멀티-레벨 셀(MLC) 메모리와 같은 비휘발성 메모리(NVM), 예를 들어, 셀 당 2개의 비트를 갖는 NAND 플래시 메모리, 폴리머 메모리, 위상 변화 메모리(PCM), 나노와이어-기반 전하-탭핑 메모리, 강유전 트랜지스터 랜덤 액세스 메모리(FeTRAM), 3차원 크로스 포인트 메모리, 메모리 레지스터(멤리스터) 기술을 사용하는 비휘발성 메모리, 또는 임의의 다른 적합한 비휘발성 메모리, NVM 장치, 또는 지속 데이터 저장 매체를 포함할 수 있다.
도 2는 도 1의 장치(100)에서 이용될 수 있는 예시적인 NVM 제어기(202)를 도시한다. 도 2에 도시한 바와 같이, NVM 제어기(202)는 적어도 하나의 블록 윈도우(애퍼처)(208), 복수의 제어 레지스터(212), 어드레스 변환 컴포넌트(214), 미디어 관리 변환 테이블(216), 선택적 암호화 컴포넌트(218), 및 선택적 복호화 컴포넌트(220)를 포함한다. 도 2에 더 도시한 바와 같이, NVM 장치(204)는 결국 메모리 버스(203)를 통해 호스트 프로세서(101)(도 1 참조)에 통신가능하게 결합가능한 NVM 제어기(202)에 통신가능하게 결합된다.
도 2의 예시적인 NVM 제어기(202)에서, 애퍼처(208)는 NVM 장치(204) 내에 저장가능한 지속 데이터의 하나 이상의 블록에 액세스하기 위한 어드레스 범위를 정의한다. 복수의 제어 레지스터(212)는 복수의 명령 레지스터 0-q, 복수의 상태 레지스터 0-q, 및 복수의 논리 베이스 어드레스를 각각 포함하는 복수의 메모리 맵핑 베이스 어드레스 레지스터 0-q를 포함할 수 있다. 복수의 메모리 맵핑 베이스 어드레스 레지스터 0, 1, ...q 각각은 애퍼처(208)에 의해 정의된 어드레스 범위의 미리 결정된 부분에 대응한다. 또한, 복수의 상태 레지스터 0-q는 각각 복수의 명령 레지스터 0-q에 관련되고, 상태 레지스터/명령 레지스터 쌍 0,0, 1,1, ..., q,q는 결국 각각 복수의 메모리 맵핑 베이스 어드레스 레지스터 0-q에 관련된다.
어드레스 변환 컴포넌트(214)는 애퍼처(208)에 의해 정의된 어드레스 범위 내의 하나 이상의 논리 어드레스를 호스트 프로세서(101)에 의해 제공된 정보에 적어도 기초하여, NVM 장치(204)에 블록 기입(또는 그로부터 블록 판독)하기 위한 유효 어드레스 범위 내의 실제적 물리 어드레스들로 변환하도록 동작한다. NVM 제어기(202)는 웨어-레벨링(wear-leveling) 동작들을 수행하고/하거나 NVM 장치(204)(예를 들어, 플래시 메모리를 포함하는 NVM 장치)를 위한 내구 한도들(endurance limits)을 시행하기 위해 미디어 관리 변환 테이블(216)을 이용할 수 있다. NVM 제어기(202)는 NVM 장치(204)로부터 판독될 블록 데이터를 복호화하기 위한 복호화 컴포넌트(220)뿐만 아니라, NVM 장치(204)에 기입될 블록 데이터를 암호화하기 위한 암호화 컴포넌트(218)를 더 이용할 수 있다.
예시적인 동작 모드에서, 호스트 프로세서(101)(도 1 참조)는 메모리 버스(203)(도 2 참조)를 통해 NVM 제어기(202)(도 2 참조)에 하나 이상의 메모리 로드/저장 명령을 발행함으로써 NVM 장치(204)(도 2 참조) 내에 저장가능한 지속 데이터에 액세스할 수 있다. 이 예시적인 동작 모드에서, 호스트 프로세서(101)는 그것의 어드레스 공간 내의 명시된 BW 어드레스를 애퍼처(208)(도 2 참조)에 의해 정의된 어드레스 범위 내의 논리 BW 어드레스로 변환함으로써 NVM 장치(204)에의 블록 기입(BW)을 수행하기 위한 NVM 제어기(202)를 구성할 수 있다. 논리 BW 어드레스는 논리 BW 베이스 어드레스 및 논리 BW 오프셋 어드레스의 항으로 표현될 수 있다. 호스트 프로세서(101)는 메모리 버스(203)를 통해 직접 각각의 애퍼처(208)를 어드레싱함으로써 NVM 제어기(202) 내에서 가용한 애퍼처(애퍼처(208) 등)를 선택할 수 있다.
NVM 장치(204)에의 원하는 블록 기입 동작을 수행하기 위해 NVM 제어기(202)를 구성하면, 호스트 프로세서(101)는 NVM 제어기(202)에 메모리 버스(203)를 통해 메모리 저장 명령을 발행할 수 있다. 메모리 저장 명령은 논리 BW 베이스 어드레스 및 논리 BW 베이스 어드레스로부터의 상대 오프셋을 정의하는 논리 BW 오프셋 어드레스를 적어도 제공한다. 호스트 프로세서(101)는 메모리 저장 명령을 통해 제공된 논리 BW 베이스/오프셋 어드레스에 적어도 기초하여, 복수의 명령 레지스터 0-q 중 선택된 하나에 메모리 저장 명령을 기입한다. 호스트 프로세서(101)에 의해 발행된 메모리 저장 명령에 응답하여, NVM 제어기(202)는 선택된 명령 레지스터 0, 1, ..., q를 포함하는 상태 레지스터/명령 레지스터 쌍 0,0, 1,1, ..., q.q과 관련된 메모리 맵핑 베이스 어드레스 레지스터 0, 1, ..., q를 선택한다. 또한, NVM 제어기(202)는 애퍼처(208)의 어드레스 범위 내의 논리 BW 베이스 어드레스로부터의 상대 오프셋에서 NVM 장치(204)에 기입될 블록 데이터를 수신한다.
NVM 제어기(202) 내의 어드레스 변환 컴포넌트(214)(도 2 참조)는 선택된 베이스 어드레스 레지스터 0, 1, ..., q 내에 포함된 논리 베이스 어드레스를 수신하고, 애퍼처(208)의 어드레스 범위 내의 논리 BW 베이스 어드레스로부터의 상대 오프셋에서 수신된 블록 데이터를 수신하고, 논리 베이스 어드레스 및 논리 BW 오프셋 어드레스를 NVM 장치(204) 내의 블록(예를 들어, 블록(204a))의 실제적 물리 어드레스로 변환한다. NVM 제어기(202)는 그것이 NVM 장치(204)에의 블록 기입을 위한 유효 어드레스 범위에 따르는지를 결정하기 위해 변환된 어드레스를 체크할 수 있다. 변환된 어드레스가 NVM 장치(204)에의 블록 기입을 위한 유효 어드레스 범위에 따르지 않는 경우에, NVM 제어기(202)는 선택된 명령 레지스터 0, 1, ..., q에 관련된 상태 레지스터 0, 1, ..., q 내에 에러 플래그를 세트할 수 있다. 변환된 어드레스가 NVM 장치(204)에의 블록 기입을 위한 유효 어드레스 범위에 따르는 경우에, NVM 제어기(202)는 NVM 장치(204)에의 원하는 블록 기입 동작을 수행하기 위해 성공적으로 구성된다.
NVM 제어기(202)는 원하고/하거나 요구되는 대로, 웨어-레벨링 동작들을 수행하고, NVM 장치(204)에 대한 내구 한도들을 시행하기 위해 미디어 관리 변환 테이블(216)을 이용할 수 있다. NVM 제어기(202)는 원하고/하거나 요구대는 대로, NVM 장치(204)의 블록(204a)에 기입될 블록 데이터를 암호화하기 위해 암호화 컴포넌트(218)를 더 이용할 수 있다. NVM 제어기(202)는 다음에 블록 데이터를 블록(204a)의 실제적 물리 어드레스에 기입할 수 있다. NVM 장치(204)에의 블록 기입의 완료시에, 호스트 프로세서(101)는 블록 기입 동작의 에러 상태를 체크하기 위해 선택된 명령 레지스터 0, 1, ..., q에 관련된 상태 레지스터 0, 1, ..., q를 메모리 버스(203)를 통해 판독할 수 있다.
이 예시적인 동작 모드에서, 호스트 프로세서(101)(도 1 참조)는 그것의 어드레스 공간 내의 명시된 BR 어드레스를 애퍼처(208)에 의해 정의된 어드레스 범위 내의 논리 BR 어드레스로 변환함으로써 NVM 장치(204)(도 2 참조)로부터의 블록 판독(BR)을 수행하기 위해 NVM 제어기(202)(도 2 참조)를 더 구성할 수 있다. 논리 BR 어드레스는 논리 BR 베이스 어드레스 및 논리 BR 오프셋 어드레스의 항으로 표현될 수 있다. 블록 기입 동작을 참조하여 여기에 설명된 바와 같이, 호스트 프로세서(101)는 메모리 버스(203)를 통해 직접 각각의 애퍼처(208)를 어드레싱함으로써 NVM 제어기(202) 내에서 가용한 애퍼처(어퍼퍼(208) 등)를 선택할 수 있다.
NVM 장치(204)로부터의 원하는 블록 판독 동작을 수행하기 위해 NVM 제어기(202)를 구성하면, 호스트 프로세서(101)는 NVM 제어기(202)에 메모리 버스(203)를 통해 메모리 로드 명령을 발행할 수 있다. 메모리 로드 명령은 논리 BR 베이스 어드레스 및 논리 BR 베이스 어드레스로부터의 상대 오프셋을 정의하는 논리 BR 오프셋 어드레스를 적어도 제공한다. 호스트 프로세서(101)는 메모리 로드 명령을 통해 제공된 논리 BR 베이스/오프셋 어드레스에 적어도 기초하여, 복수의 명령 레지스터 0-q 중 선택된 하나에 메모리 로드 명령을 기입한다. 호스트 프로세서(101)에 의해 발행된 메모리 로드 명령에 응답하여, NVM 제어기(202)는 선택된 명령 레지스터 0, 1, ..., q를 포함하는 상태 레지스터/명령 레지스터 쌍 0,0, 1,1, ..., q,q에 관련된 메모리 맵핑 베이스 어드레스 레지스터 0, 1, ..., q를 선택한다.
어드레스 변환 컴포넌트(214)는 선택된 베이스 어드레스 레지스터 0, 1, ..., q로부터 논리 베이스 어드레스를 수신하고, 메모리 로드 명령을 통해 제공된 논리 BR 오프셋 어드레스를 수신하고, 논리 베이스 어드레스 및 논리 BR 오프셋 어드레스를 NVM 장치(204) 내의 블록(예를 들어, 블록(204a))의 실제적 물리 어드레스로 변환한다. NVM 제어기(202)는 그것이 NVM 장치(204)로부터의 블록 판독을 위한 유효 어드레스 범위에 따르는지를 결정하기 위해 변환된 어드레스를 체크할 수 있다. 변환된 어드레스가 NVM 장치(204)로부터의 블록 판독을 위한 유효 어드레스 범위에 따르지 않는 경우에, NVM 제어기(202)는 선택된 명령 레지스터 0, 1, ..., q에 관련된 상태 레지스터 0, 1, ..., q 내에 에러 플래그를 세트할 수 있다. 변환된 어드레스가 NVM 장치(204)로부터의 블록 판독을 위한 유효 어드레스 범위에 따르는 경우에, NVM 제어기(202)는 NVM 장치(204)로부터의 원하는 블록 판독 동작을 수행하기 위해 성공적으로 구성된다.
NVM 제어기(202)는 원하고/하거나 요구대는 대로, NVM 장치(204)의 블록(204a)으로부터 판독될 블록 데이터를 복호화하기 위해 복호화 컴포넌트(220)를 이용할 수 있다. NVM 제어기(202)는 다음에 블록 데이터를 블록(204a)의 실제적 물리 어드레스로부터 판독할 수 있다. NVM 장치(204)로부터의 블록 판독의 완료 시에, 호스트 프로세서(101)는 블록 판독 동작의 에러 상태를 체크하기 위해 선택된 명령 레지스터 0, 1, ..., q에 관련된 상태 레지스터 0, 1, ..., q를 메모리 버스(203)를 통해 판독할 수 있다.
NVM 제어기(202)가 NVM 장치(204) 내에 저장가능한 지속 데이터의 하나 이상의 블록에 액세스하기 위한 어드레스 범위를 정의하는 애퍼처(208)를 포함하고, 메모리 버스(203)를 통해 NVM 제어기(202)에 하나 이상의 메모리 로드/저장 명령을 발행하여 호스트 프로세서(101)가 NVM 장치(204) 내에 저장가능한 지속 데이터에 액세스하게 함으로써, 컴퓨터 시스템은 호스트 프로세서(101)의 물리적 어드레싱 제한들에 의해, 또는 호스트 프로세서(101)에 의해 실행된 OS에 의해 부과된 제한들에 의해 과도하게 구속받지 않고 감소된 레이턴시로 NVM 장치(204)의 전체 용량을 유리하게 이용할 수 있다.
애퍼처에 의해 정의된 어드레스 범위 내의 하나 이상의 논리 어드레스를 NVM 장치 내의 하나 이상의 블록의 실제적 물리 어드레스들로 변환하기 위한 NVM 제어기의 동작이 도 3의 다음의 예시 예를 참조하여 더 이해될 것이다. 도 3에 도시한 바와 같이, NVM 제어기(302)는 블록 윈도우(애퍼처)(308), 복수의 명령 레지스터 0-31, 복수의 상태 레지스터 0-31, 및 복수의 논리 베이스 어드레스를 각각 포함하는 복수의 메모리 맵핑 베이스 어드레스 레지스터 0-31를 포함하는 복수의 제어 레지스터(312), 어드레스 변환 컴포넌트(314), 및 미디어 관리 변환 테이블(316)을 포함할 수 있다. 복수의 메모리 맵핑 베이스 어드레스 레지스터 0, 1, ..., 31 각각은 애퍼처(308)에 의해 정의된 어드레스 범위의 미리 결정된 부분에 대응한다. 또한, 복수의 상태 레지스터 0-31는 각각 복수의 명령 레지스터 0-31에 관련되고, 상태 레지스터/명령 레지스터 쌍들 0,0, 1,1, ...., 31,31은 결국 각각 복수의 메모리 맵핑 베이스 어드레스 레지스터 0-31에 관련된다.
이 예시 예에서, 애퍼처(308)는 256킬로바이트(KB)의 블록 크기를 지원하도록 구성된다. 그러나, 애퍼처(308)는 16KB, 64KB, 128KB, 512KB, 1메가바이트(MB), 2MB, 4MB, 또는 임의의 다른 적합한 블록 크기를 지원하도록 대안적으로 구성될 수 있다는 것에 주목한다. 256KB의 블록 크기 내의 각각의 서브 블록은 256KB의 블록 크기의 1/32(즉, 8KB), 또는 기타 적합한 서브 블록 크기로서 여기에 정의된다. 복수의 메모리 맵핑 베이스 어드레스 레지스터 0-31 각각은 그러므로 애퍼처(308)에 의해 정의된 어드레스 범위(즉, 0-256KB)의 8KB에 대응하도록 구성된다. 구체적으로, 베이스 어드레스 레지스터 0는 애퍼처(308)에 의해 정의된 어드레스 범위의 0-8KB를 커버하는 0번째 논리 베이스 어드레스를 포함하도록 구성되고, 베이스 에드레스 레지스터 1는 애퍼처(308)에 의해 정의된 어드레스 범위의 8-16KB를 커버하는 1번째 논리 베이스 어드레스를 포함하도록 구성되고, 베이스 어드레스 레지스터 2는 애퍼처(308)에 의해 정의된 어드레스 범위의 16-24KB를 커버하는 2번째 논리 베이스 어드레스를 포함하도록 구성되고, 등등 애퍼처(308)에 의해 정의된 어드레스 범위의 248-256KB를 커버하는 31번째 논리 베이스 어드레스를 포함하도록 구성된 베이스 어드레스 레지스터 31까지이다.
이 예시 예를 참조하여, 메모리 버스(303)(도 3 참조)를 통해 호스트 프로세서(101)(도 1 참조)에 의해 NVM 제어기(302)(도 3 참조)에 발행된 메모리 로드/저장 명령은 NVM 장치(204)(도 2 참조) 내의 블럭에의 블록 데이터 기입 또는 블록으로부터의 블록 데이터 판독하는 데 사용하기 위한 논리 베이스 어드레스 및 논리 오프셋 어드레스를 제공할 수 있다. 이러한 논리 베이스 어드레스는 논리 베이스 어드레스 "X"에 의해 나타낼 수 있으므로, 애퍼처(308)에 의해 정의된 어드레스 범위는 논리 베이스 어드레스 X 내지 논리 어드레스 X+256KB(도 3 참조)의 범위로서 표현될 수 있다. 또한, 논리 베이스 어드레스 X로부터의 예시적인 상대 오프셋은 "8KB"(있다면, 플러스 캐시 라인 오프셋), 또는 기타 적합한 상대 오프셋으로서 표현될 수 있다. 이러한 캐시 라인은 64바이트(B), 또는 기타 적합한 수의 바이트에 대응할 수 있다.
예를 들어, 호스트 프로세서(101)는 다음의 포맷에 따르는 예시적인 명령을 발행함으로써 NVM 장치(204)에의 블록 기입(BW)을 수행하기 위해 NVM 제어기(302)를 구성할 수 있다:
Store 0x0000 1200 0008 1000 to 0x8804 1000,
"0x0000 1200 0008 1000"은 애퍼처(308)를 통해 액세스될 블록 어드레스에 대응하고, "0x8804 0000"은 레지스터 0-31의 베이스 어드레스에 대응하고, "0x1000"은 베이스 어드레스 레지스터 1에 관련된 명령 레지스터 1에 대응하는 오프셋이다. 호스트 프로세서(101)는 이후 다음에의 하나 이상의 액세스를 명시하는, 하나 이상의 메모리 로드/저장 명령을 발행함으로써 블록 어드레스에 액세스할 수 있다:
0x0000 0000 4800 2000,
"0x0000 0000 4800 0000"은 애퍼처(308)의 논리 베이스 어드레스 "X"에 대응하고, "0x2000'은 베이스 어드레스 레지스터 1 내에 포함된 1번째 논리 베이스 어드레스에 대응한다. 위에 주목된 바와 같이, 이 예시 예에서, 1번째 논리 베이스 어드레스, 즉, 0x2000은 애퍼처(308)에 의해 정의된 어드레스 범위의 8-16KB를 커버한다.
따라서, 메모리 버스(303)를 통해 NVM 제어기(302)에 호스트 프로세서(101)에 의해 발행된 메모리 로드/저장 명령은 애퍼처(308)에 의해 정의된 어드레스 범위, "X" 내지 "X+256KB"에 따르는 "X+8KB"(있다면, 플러스 캐시 라인 오프셋)의 항으로 나타내질 수 있는 논리 베이스/오프셋 어드레스를 제공할 수 있다. 호스트 프로세서(101)는 메모리 로드/저장 명령을 통해 제공된, 논리 베이스/오프셋 어드레스, X+8KB(있다면, 플러스 캐시 라인 오프셋)에 적어도 기초하여, 복수의 명령 레지스터 0-31 중 선택된 하나, 예를 들어, 명령 레지스터 1에 메모리 로드/저장 명령을 기입할 수 있다.
어드레스 변환 컴포넌트(314)는 선택된 베이스 어드레스 레지스터 1로부터 1번째 논리 베이스 어드레스를 수신하고, 애퍼처(308)로부터 있다면, 캐시 라인 오프셋의 표시를 수신하고, 1번째 논리 베이스 및 있다면, 캐시 라인 오프셋을 NVM 장치(204) 내의 블록의 실제적 물리 어드레스로 변환한다. NVM 제어기(302)는 다음에 각각의 블록의 실제적 물리 어드레스에 블록 데이터를 기입하거나, 그로부터 블록 데이터를 판독할 수 있다.
NVM 장치 내의 하나 이상의 블록에 블록 데이터를 기입하거나 그로부터 블록 데이터를 판독하기 위해 NVM 제어기를 동작하는 예시적인 방법이 도 4를 참조하여 아래에 설명된다. 블록 402에 표시된 바와 같이, 메모리 로드/저장 명령은 메모리 버스를 통해 NVM 제어기에서 수신되고, 메모리 로드/저장 명령은 NVM 제어기 내에 포함된 블록 윈도우(애퍼처)에 의해 정의된 어드레스 범위의 적어도 일부에 따르는 논리 어드레스를 포함한다. 블록 404에 표시된 바와 같이, 논리 어드레스의 표현은 NVM 장치 내의 블록의 실제적 물리 어드레스로 변환된다. 블록 406에 표시된 바와 같이, 변환된 어드레스가 NVM 장치 내의 블록에 액세스하기 위한 유효 어드레스 범위에 따르는지에 대한 결정이 내려진다. 변환된 어드레스가 NVM 장치 내의 블록에 액세스하기 위한 유효 어드레스 범위에 따르는 경우에, 블록 데이터는 블록 408에 표시된 바와 같이, NVM 장치 내의 블록의 실제적 물리 어드레스에 기입되거나, 그로부터 판독될 수 있다. 그렇지 않으면, 상태 에러 플래그가 블록 410에 표시된 바와 같이 세트되고, NVM 제어기를 동작하는 예시적인 방법이 종료한다.
도 5는 청구된 발명의 장치 및 방법들을 구현하도록 구성될 수 있는 예시적인 컴퓨터 시스템(500)을 도시한다. 도 5에 도시한 바와 같이, 컴퓨터 시스템(500)은 시스템 버스(514)에 의해 적어도 하나의 메모리(504)에 통신가능하게 결합되고, 메모리 버스(515)에 의해 NVM 장치 제어기(520)에 통신가능하게 결합된 적어도 하나의 호스트 프로세서(502)를 포함할 수 있다. 컴퓨터 시스템(500)은 시스템 버스(514)에 통신가능하게 결합된 키보드(516) 및 디스플레이(518), 및 NVM 장치 제어기(520)에 통신가능하게 결합된 적어도 하나의 NVM 장치(512)를 더 포함할 수 있다. NVM 장치 제어기(520)는 NVM 장치(512) 내의 하나 이상의 블록 내에 저장가능한 지속 데이터에 액세스하기 위해, 메모리(520b) 또는 기타 적합한 저장 매체와 같은, 적어도 하나의 비일시적 저장 매체로부터의 적어도 하나의 프로그램을 실행하도록 동작하는 적어도 하나의 프로세서(520a)를 포함한다. 호스트 프로세서(502)는 NVM 장치 제어기(520)의 동작들을 제어하기 위한 하나 이상의 프로세스를 포함하는, 컴퓨터 시스템(500) 내의 다양한 프로세스를 수행하기 위해, 메모리(504) 또는 임의의 다른 적합한 저장 매체와 같은 적어도 하나의 비일시적 저장 매체 상에 저장된 명령어들을 실행하도록 동작한다. 메모리(504)는 다이내믹 랜덤 액세스 메모리(DRAM) 또는 임의의 다른 적합한 휘발성 메모리로서 구현될 수 있는, 휘발성 메모리(510)와 같은 하나 이상의 메모리 컴포넌트를 포함할 수 있다. 메모리(504)는 호스트 프로세서(502)에 의해 실행가능한 운영 체제(OS)(506)뿐만 아니라, OS(506)에 의해 실행될 수 있는 하나 이상의 애플리케이션(508)을 저장하도록 또한 구성될 수 있다. 애플리케이션들(508) 중 하나에 의해 발생된 요구에 응답하여, 호스트 프로세서(502)는 휘발성 메모리(510) 상의 원하는 데이터 기입/판독 동작들, 및/또는 NVM 장치 제어기(520)를 통한 NVM 장치(512) 상의 원하는 블록 기입/판독 동작들을 수행하기 위해 OS(506)를 실행할 수 있다.
도 5는 컴퓨터 시스템(500)의 예시적인 실시예를 도시하고, 컴퓨터 시스템(500)의 다른 실시예들은 도 5에 도시된 장치 컴포넌트들보다 더 많은 장치 컴포넌트들, 또는 더 적은 장치 컴포넌트들을 포함할 수 있다는 점에 주목한다. 또한, 장치 컴포넌트들은 도 5에 도시된 것과 다르게 배열될 수 있다. 예를 들어, 일부 실시예들에서, NVM 장치(512)는 인터넷 또는 기타 적합한 네트워크를 통해 컴퓨터 시스템(500)에 액세스가능한 원격 위치에 배치될 수 있다. 또한, 컴퓨터 시스템(500)의 다른 실시예들 내에 포함된 다양한 장치 컴포넌트들에 의해 수행되는 기능들은 여기에 설명된 것과 다르게 각각의 컴포넌트들 중에 분포될 수 있다.
개시된 장치 및 방법들의 상기 예시적인 실시예들을 설명하였지만, 다른 대안적 실시예들 또는 변형들이 이루어질 수 있다. 예를 들어, NVM 장치 제어기는 NVM 장치 내의 하나 이상의 블록 내에 저장가능한 지속 데이터에 액세스하기 위한 적어도 하나의 어드레스 범위를 정의하는 적어도 하나의 블록 윈도우(애퍼처)를 포함할 수 있다는 것이 여기에 기술되었다. 대안적 실시예에서, 이러한 애퍼처는 NVM 장치로부터 블록 데이터를 판독하기 위한 블록 윈도우, NVM 장치에 블록 데이터를 기입하기 위한 블록 윈도우, 및/또는 원자 기입 지원으로 NVM 장치에 데이터를 기입하기 위한 기입 조합 버퍼로서 구현될 수 있다.
NVM 장치 제어기는 애퍼처에 의해 정의된 어드레스 범위 내의 논리 블록 기입 어드레스를 NVM 장치 내의 블록의 실제적 물리 어드레스로 변환함으로써 NVM 장치에의 블록 기입 동작을 수행하도록 구성될 수 있다는 것이 또한 기술되었다. 대안적 실시예에서, 이러한 블록 기입 동작은 감소된 레이턴시로 메모리 버스를 통해 NVM 장치에, 다이내믹 랜덤 액세스 메모리(DRAM)와 같은, 휘발성 메모리로부터 데이터를 카피하도록 수행될 수 있다.
호스트 프로세서는 메모리 버스를 통해 NVM 장치 제어기에 하나 이상의 메모리 로드/저장 명령을 발행함으로써 NVM 장치 내에 저장가능한 지속 데이터에 액세스할 수 있었다는 것이 또한 기술되었다. 도 6a에 표시된 바와 같이, 한 실시예에서, 이러한 NVM 장치 제어기(620)는 적어도 하나의 페이로드 데이터 저장소(608)(여기서 "페이로드 메일박스"라고도 함), 메모리 버스(603)를 통해 호스트 프로세서(101)(도 1 참조)와 NVM 장치 제어기(620) 사이에 캐시가능한, 양방향, 메모리 맵핑 액세스 경로를 제공하는 데 총체적으로 이용될 수 있는 적어도 하나의 명령 레지스터(610.1), 및 적어도 하나의 상태 레지스터(610.2)뿐만 아니라, 프로세서(609)를 포함할 수 있다. 예를 들어, NVM 장치 제어기(620)는 DIMM, 이중 데이터 레이트(DDR) DIMM, 및/또는 비휘발성(NV) DIMM 내에 통합될 수 있다. 본 실시예에서, 호스트 프로세서(101)는 명령 레지스터(610.1)(여기서 "메일박스 명령 레지스터"라고도 함), 상태 레지스터(610.2)(여기서 "메일박스 상태 레지스터라고도 함"), 및 페이로드 메일박스(608)에 의해 정의된 적어도 하나의 어드레스 범위(607)(여기서 "메일박스 어드레스 범위"라고도 함)에 의해 NVM 장치 제어기(620)에서 구현되는, 명령 인터페이스를 통해 메모리 버스(603)를 거쳐 명령들을 발행하고 페이로드 데이터 및 상태 정보(예를 들어, 명령 실행의 상태)에 액세스할 수 있다. 호스트 프로세서(101)는 NVM 장치 제어기(620)에 의해 수행되는 슬레이브 동작들을 지원하도록 구성된, 메모리 버스(603)에 의해 구현된 양방향 액세스 경로를 통해 인-밴드(in-band) 발행된 캐시가능한 메모리 로드/저장 명령들을 사용하는 그러한 명령 인터페이스를 통해, 이러한 페이로드 데이터 및 상태 정보에 액세스할 뿐만 아니라 이러한 명령들을 발행할 수 있다.
도 6b는 각각의 메모리 로드/저장 명령에 관련된 예시적인 op-코드 포맷(660), 각각의 메모리 로드/저장 명령에 관련된 예시적인 기입 보호 비트(662), 및 도 6a의 메일박스 명령 레지스터(610.1) 및 메일박스 어드레스 범위(607)를 사용하여, 각각의 메모리 로드/저장 명령을 발행하는 데 호스트 프로세서(101)(도 1 참조)에 의해 사용하기 위한 예시적인 입력 페이로드 포맷(664)를 도시한다. 도 6b에 도시한 바와 같이, op-코드 포맷(660)은 명령 코드(660.1)(예를 들어, 메모리 로드 명령, 메모리 저장 명령), 페이로드 유형(660.2)(예를 들어, 작은 페이로드, 큰 페이로드), 및 인터럽트 유형(660.3)(예를 들어, 낮은 우선순위, 높은 우선순위)을 포함할 수 있다.
도 6c는 각각의 메모리 로드/저장 명령에 관련된 예시적인 상태 코드 포맷(670), 및 도 6a의 메일박스 상태 레지스터(610.2) 및 메일박스 어드레스 범위(607)를 사용하여, 각각의 메모리 로드/저장 명령의 실행의 완료를 모니터하는 데 호스트 프로세서(101)(도 1 참조)에 의해 사용하기 위한 예시적인 출력 페이로드 포맷(672)을 도시한다. 도 6c에 도시한 바와 같이, 상태 코드 포맷(670)은 상태 코드(670.1)(예를 들어, 명령 실패 상태 코드, 명령 성공 결과들, 에러 상태), 명령 진행 상태(670.2)(예를 들어, 명령이 개시하고, 명령이 완료하고, 명령이 어보트되는 것), 및 명령 성공/실패 상태(670.3)(예를 들어, 명령이 성공적이었고, 명령이 실패했고, 에러 플래그)를 포함할 수 있다.
메일박스를 사용하는 호스트 프로세서에 의해, 메모리 로드/저장 명령을 발행하고 메모리 로드/저장 명령의 완료를 모니터하는 예시적인 방법이 도 6a-6c뿐만 아니라, 도 7a-7b를 참조하여 이하 설명된다. 한 실시예에서, 이 예시적인 방법은 시스템 관리 인터럽트(SMI)에 의해 개시될 수 있으므로, OS 독립 메커니즘으로서 시스템 관리 모드(SMM)에서 구현될 수 있다.
블록 702(도 7a 참조)에 표시된 바와 같이, 호스트 프로세서(101)에 의해 발행될 메모리 로드/저장 명령이 NVM 장치 제어기(620)에 보내질 데이터(예를 들어, 블록 데이터)를 요구하는지에 대한 결정이, 호스트 프로세서(101)에 의해 내려진다. 메모리 로드/저장 명령이 NVM 제어기(620)에 보내질 데이터를 요구하는 경우에, 이러한 데이터는 블록 704에 표시된 바와 같이, 페이로드 메일박스(608)에 의해 정의된 메일박스 어드레스 범위(607)의 적어도 일부에, 입력 페이로드 포맷(664)을 사용하는 메모리 버스(603)를 통해 호스트 프로세서(101)에 의해 보내진다. 블록 706에 표시된 바와 같이, 메모리 로드/저장 명령은 메일박스 명령 레지스터(610.1)에 메모리 로드/저장 명령을 기입함으로써, NVM 장치 제어기(620)에, op-코드 포맷(660)을 사용하여 메모리 버스(603)를 통해 호스트 프로세서(101)에 의해 발행된다. 블록 706에 더 표시된 바와 같이, 기입 보호 비트(662)가 미리 결정된 논리 레벨에 따르도록, 호스트 프로세서(101)에 의해 세트된다(예를 들어, 기입 보호 비트(662)가 논리 하이 레벨로 세트될 수 있다). 블록 708에 표시된 바와 같이, 호스트 프로세서(101)에 의해 논리 하이 레벨로 세트된 기입 보호 비트(662)에 응답하여, SMI가 NVM 장치 제어기(620)에 의해 발생되고 후속하여 프로세서(609)의 SMM에 의해 처리된다. 예를 들어, SMM은 프로세서(609)의 하나 이상의 기본 입/출력 시스템(BIOS) 서비스들로서 실시될 수 있다. 기입 보호 비트(662)가 호스트 프로세서(101)에 의해 세트되고 나서, NVM 장치 제어기(620)는 입력 페이로드를 위한 하나 이상의 레지스터가 호스트 프로세서(101)에 의해 더 기입되는 것을 기입 방지한다는 점에 주목한다.
NVM 장치 제어기(620)가 메모리 로드/저장 명령을 실행하는 동안, 입력 페이로드는 NVM 장치 제어기(620)에 의해 그것의 내부 메모리에 카피되고, 메일박스 상태 레지스터(610.2)는 입력 페이로드가 처리되는 것을 표시하기 위해 (예를 들어, 명령 진행 상태(670.2)는 명령이 시작한 것을 표시) 상태 코드 포맷(670)을 사용하여 NVM 장치 제어기(620)에 의해 업데이트되고, 기입 보호 비트(662)는 블록 710에 표시된 바와 같이, NVM 장치 제어기(620)에 의해 클리어된다. 기입 보호 비트(662)가 NVM 장치 제어기(620)에 의해 클리어되고 나서, 입력 페이로드 레지스터(들)는 호스트 프로세서(101)에 의해 기입되는 것이 더 이상 기입 보호되지 않아서, 호스트 프로세서(101)는 현재의 명령의 실행이 완료하기 전에, op-코드 포맷(660)을 사용하여 NVM 장치 제어기(620)에 메모리 버스(603)를 통해 또 하나의 명령을 발행할 수 있게 된다는 점에 주목한다.
블록 712에 표시된 바와 같이, 메모리 로드/저장 명령의 실행의 상태는 상태 코드 포맷(670)을 사용하여, 메일박스 상태 레지스터(610.2)를 판독함으로써 호스트 프로세서(101)에 의해 모니터된다. 메일박스 상태 레지스터(610.2)가 메모리 로드/저장 명령의 실행이 완료한 것을 표시하기 위해 (예를 들어, 명령 진행 상태(670.2)는 명령이 완료한 것을 표시) NVM 장치 제어기(620)에 의해 업테이트된 경우에, 블록 714에 표시된 바와 같이, 메모리 로드/저장 명령이 NVM 장치 제어기(620)를 통해 NVM 장치(204)로부터 액세스될 데이터(예를 들어, 블록 데이터)를 요구하는지에 대한 결정이, 출력 페이로드 포맷(672)을 사용하여 호스트 프로세서(101)에 의해 내려진다. 메모리 로드/저장 명령이 NVM 장치 제어기(620)를 통해 호스트 프로세서(101)에 의해 액세스될 데이터를 요구하는 경우에, 이러한 데이터는 블록 716에 표시된 바와 같이, 페이로드 메일박스(608)에 의해 정의된 메일박스 어드레스 범위(607)의 적어도 일부로부터, 출력 페이로드 포맷(672)을 사용하여 메모리 버스(603)를 통해 호스트 프로세서(101)에 의해 액세스된다. 블록 718에 표시된 바와 같이, 메모리 로드/저장 명령의 실행이 성공적으로 완료하였는지에 대한 (예를 들어, 명령 진행 상태(670.2)는 명령이 성공적이었다는 것을 표시) 결정이 호스트 프로세서(101)에 의해 내려진다. 메모리 로드/저장 명령이 성공적으로 완료한 경우에, 블록 720에 표시된 바와 같이, 출력 페이로드 포맷(672)을 사용하여 액세스된 데이터는 호스트 프로세서(101)에 의해 처리된다. 블록 722에 표시된 바와 같이, 호스트 프로세서(101)에 의한 데이터의 처리의 완료시에, NVM 장치 제어기(620) 내의 프로세서(609)는 SMM을 빠져나간다.
개시된 주제의 다양한 실시예들의 예시 예들이 여기에 설명되었지만, 관련 기술의 통상의 기술자는 개시된 주제를 구현하는 다른 방식들이 대안적으로 사용될 수 있다는 것을 알 것이다. 전술한 설명에서, 개시된 주제의 다양한 양태들이 설명되었다. 설명의 목적을 위해, 특정한 시스템들, 장치, 방법들, 및 구성들이 개시된 주제의 철저한 이해를 제공하기 위해 기술되었다. 그러나, 본 개시의 이점을 갖는 관련 기술의 통상의 기술자에게는 주제가 여기에 설명된 특정한 상세들 없이 실시될 수 있다는 것이 명백할 것이다. 다른 예들에서, 공지된 특징들, 컴포넌트들, 및/또는 모듈들은 개시된 발명 대상을 불명료하게 하지 않기 위해 생략, 단순화, 또는 조합되었다.
여기에 사용된 것과 같이 "하도록 동작"한다는 표현은 대응하는 디바이스, 시스템, 장치 등이 디바이스, 시스템, 또는 장치가 그 전원 온 상태일 때 그것의 원하는 기능을 위해 동작할 수 있고, 또는 동작하도록 적응되는 것을 의미하는 점에 주목한다. 더구나, 개시된 주제의 다양한 실시예들은 하드웨어, 펌웨어, 또는 이들의 어떤 조합에서 구현될 수 있고, 명령어들, 기능들, 절차들, 데이터 구조들, 논리, 애플리케이션 프로그램들, 설계 표현과 같은 프로그램 코드, 및/또는 머신에 의해 액세스될 때 머신이 태스크들을 수행하고, 추상 데이터 유형 또는 로우 레벨 하드웨어 콘텍스트들을 정의하거나, 결과를 생성하게 하는 설계의 시뮬레이션, 에뮬레이션, 및/또는 제조를 위한 포맷을 참조하여 또는 그와 함께 설명될 수 있다.
도면에 도시된 기술들은 범용 컴퓨터들 또는 컴퓨팅 장치들과 같은 하나 이상의 컴퓨팅 장치들 상에서 저장 및/또는 실행되는 코드 및/또는 데이터를 사용하여 구현될 수 있다는 점에 또한 주목한다. 이러한 컴퓨터들 또는 컴퓨팅 장치들은 머신 판독가능한 저장 매체(예를 들어, 자기 디스크, 광학 디스크, 랜덤 액세스 메모리(RAM), 리드 온리 메모리(ROM), 플래시 메모리 장치, 위상 변화 메모리)와 같은 머신 판독가능한 매체 및 머신 판독가능한 통신 매체(예를 들어, 전기, 광학, 음향적, 또는 반송파들, 적외선 신호들, 디지털 신호들 등과 같은 다른 형태의 전파된 신호들)를 사용하여 코드 및/또는 데이터를 (내부적으로 및/또는 네트워크를 통해 다른 컴퓨팅 장치들과 함께) 저장하고 통신한다.
여기에 사용된 요소, 동작, 또는 명령어는 그와 같이 명시적으로 설명되지 않는다면 본 출원에 중요하고 필수적인 것으로서 해석되지는 않는다. 또한, 여기에 사용된 바와 같이, 단수 표현은 하나 이상의 아이템을 포함하는 것을 의도한다. 단지 하나의 아이템이 의도되는 경우에, "하나" 또는 그와 유사한 언어가 사용된다. 또한, "기초하여"라는 표현은 달리 명시적으로 표명하지 않는다면 "적어도 부분적으로 기초하여"라는 것을 의미하고자 한다.
본 발명은 여기에 개시된 특정한 실시예들에 제한되지 않고, 본 발명은 다음의 첨부된 청구범위 내에 드는 임의의 및 모든 특정한 실시예들 및 그 등가물을 포함하고자 한다.
Claims (25)
- 적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하는 컴퓨터 시스템에서 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하는 방법으로서,
상기 메모리 버스를 통해 제어기에서, 상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 복수의 블록 윈도우(block window) 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하는 단계 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 제어기에 포함된 복수의 베이스 레지스터와 관련됨 -;
상기 메모리 버스를 통해 상기 제어기에서, 상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 수신하는 단계 - 상기 제1 명령은 메모리 로드 명령(memory load command) 및 메모리 저장 명령(memory store command) 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 더 포함하고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함하고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -;
상기 제어기에 의해, 상기 제1 명령에 포함된 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환(translating)하는 단계 - 상기 변환하는 단계는, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 단계, 및 상기 선택된 베이스 레지스터의 내용(content)에 기초하여 상기 물리 어드레스를 식별하는 단계를 포함함 -;
상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하는 단계
를 포함하는 방법. - 제1항에 있어서, 상기 제어기는 상기 선택된 블록 윈도우에 관련된 적어도 하나의 명령 레지스터를 더 포함하고, 상기 호스트 프로세서로부터 상기 적어도 하나의 제1 명령을 수신하는 단계는 상기 선택된 블록 윈도우에 관련된 상기 명령 레지스터에서 상기 제1 명령을 수신하는 단계를 포함하는 방법.
- 제2항에 있어서, 상기 제1 명령은 상기 메모리 저장 명령을 포함하고, 상기 논리 베이스 어드레스는 논리 블록 기입 베이스 어드레스를 포함하고, 상기 논리 오프셋 어드레스는 상기 논리 블록 기입 베이스 어드레스로부터의 상대 오프셋(relative offset)을 정의하는 논리 블록 기입 오프셋 어드레스를 포함하는 방법.
- 제3항에 있어서,
상기 메모리 버스를 통해 상기 제어기에서, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위 내의 상기 논리 블록 기입 베이스 어드레스로부터의 상기 상대 오프셋에서의 상기 블록 데이터를 수신하는 단계를 더 포함하는 방법. - 제4항에 있어서, 상기 제어기는 어드레스 변환 컴포넌트(address translation component)를 더 포함하고, 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하는 단계는 상기 어드레스 변환 컴포넌트에 의해, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 블록 기입 베이스 어드레스 및 상기 논리 블록 기입 오프셋 어드레스를 상기 NVM 장치 내의 상기 물리 어드레스로 변환하는 단계를 포함하는 방법.
- 제5항에 있어서, 상기 제어기는 미디어 관리 변환 테이블을 더 포함하고, 상기 방법은
상기 미디어 관리 변환 테이블에 의해, 상기 NVM 장치에 대한 하나 이상의 내구 한도(endurance limit)를 시행하도록 하나 이상의 웨어-레벨링 동작(wear-leveling operation)을 수행하는 단계를 더 포함하는 방법. - 제6항에 있어서, 상기 제어기는 암호화 컴포넌트를 더 포함하고, 상기 방법은
상기 암호화 컴포넌트에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에 기입될 상기 블록 데이터를 암호화하는 단계를 더 포함하는 방법. - 제7항에 있어서,
상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에 상기 블록 데이터를 기입하는 단계를 더 포함하는 방법. - 제8항에 있어서, 상기 제어기는 적어도 하나의 상태 레지스터를 더 포함하고, 상기 방법은
상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에의 상기 블록 데이터의 기입에 관련된 에러 상태를 표시하기 위해 상기 상태 레지스터 내의 적어도 하나의 에러 플래그를 적어도 수 회 세트(set)하는 단계를 더 포함하는 방법. - 제1항에 있어서, 상기 제1 명령은 상기 메모리 로드 명령을 포함하고, 상기 논리 베이스 어드레스는 논리 블록 판독 베이스 어드레스를 포함하고, 상기 논리 오프셋 어드레스는 상기 논리 블록 판독 베이스 어드레스로부터의 상대 오프셋을 정의하는 논리 블록 판독 오프셋 어드레스를 포함하는 방법.
- 제10항에 있어서, 상기 제어기는 어드레스 변환 컴포넌트를 더 포함하고, 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하는 단계는 상기 어드레스 변환 컴포넌트에 의해, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 블록 판독 베이스 어드레스 및 상기 논리 블록 판독 오프셋 어드레스를 상기 NVM 장치 내의 상기 물리 어드레스로 변환하는 단계를 포함하는 방법.
- 제11항에 있어서, 상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하는 단계를 더 포함하는 방법.
- 제12항에 있어서, 상기 제어기는 복호화 컴포넌트를 더 포함하고, 상기 방법은
상기 복호화 컴포넌트에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 판독된 상기 블록 데이터를 복호화하는 단계를 더 포함하는 방법. - 제13항에 있어서, 상기 제어기는 적어도 하나의 상태 레지스터를 더 포함하고, 상기 방법은
상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하는 것에 관련된 에러 상태를 표시하도록 상기 상태 레지스터 내의 적어도 하나의 에러 플래그를 적어도 수 회 세트하는 단계를 더 포함하는 방법. - 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하기 위한 제어기로서 - 상기 제어기는 적어도 하나의 메모리 버스를 통해 적어도 하나의 호스트 프로세서에 통신가능하게 결합(communicably coupled)되도록구성됨 -,
각각 복수의 블록 크기를 갖는 복수의 블록 윈도우;
상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 상기 메모리 버스를 통해 수신하도록 동작하는 적어도 하나의 명령 레지스터 - 상기 제1 명령은 메모리 로드 명령 및 메모리 저장 명령 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 갖고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함함 -;
적어도 복수의 베이스 어드레스 레지스터를 포함하는 복수의 제어 레지스터; 및
상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 상기 복수의 블록 윈도우 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하고 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -; 상기 제1 명령으로부터의 상기 논리 어드레스에 적어도 기초하여 상기 복수의 베이스 어드레스 레지스터 중으로부터 베이스 어드레스 레지스터를 선택하고 - 상기 선택된 베이스 레지스터는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위의 미리 결정된 부분에 대응함 -; 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 베이스 어드레스 및 상기 논리 오프셋 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하고 - 상기 변환하는 것은, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 것, 및 상기 선택된 베이스 레지스터의 내용에 기초하여 상기 물리 어드레스를 식별하는 것을 포함함 -; 상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하기 위해 적어도 하나의 메모리로부터의 적어도 하나의 프로그램을 실행하도록 동작하는 적어도 하나의 내부 프로세서
를 포함하는 제어기. - 제15항에 있어서, 상기 논리 어드레스 범위의 미리 결정된 부분은 상기 선택된 블록 윈도우 내의 미리 결정된 서브 블록을 커버하는 제어기.
- 제16항에 있어서, 상기 제1 명령은 상기 메모리 저장 명령을 포함하고, 상기 적어도 하나의 내부 프로세서는 상기 NVM 장치 내의 상기 물리 어드레스에 상기 블록 데이터를 기입하기 위해 상기 적어도 하나의 메모리로부터의 상기 적어도 하나의 프로그램을 실행하도록 더 동작하는 제어기.
- 제17항에 있어서, 상기 제1 명령은 상기 메모리 로드 명령을 포함하고, 상기 적어도 하나의 내부 프로세서는 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하기 위해 상기 적어도 하나의 메모리로부터의 상기 적어도 하나의 프로그램을 실행하도록 더 동작하는 제어기.
- 컴퓨터 시스템으로서,
시스템 버스;
상기 시스템 버스에 통신가능하게 결합된 디스플레이;
상기 시스템 버스에 결합된 적어도 하나의 휘발성 메모리; 및
상기 메모리 버스에 통신가능하게 결합된 제15항의 제어기
를 포함하는 컴퓨터 시스템. - 컴퓨터 시스템에서 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하기 위한 실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 시스템은 적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하고, 상기 컴퓨터 판독가능 저장 매체는
상기 메모리 버스를 통해 제어기에서, 상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 복수의 블록 윈도우 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하고 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 제어기에 포함된 복수의 베이스 레지스터와 관련됨 -;
상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 상기 메모리 버스를 통해 수신하고 - 상기 제1 명령은 메모리 로드 명령 및 메모리 저장 명령 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 더 포함하고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함하고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -;
상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하고 - 상기 변환하는 것은, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 것, 및 상기 선택된 베이스 레지스터의 내용에 기초하여 상기 물리 어드레스를 식별하는 것을 포함함 -;
상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하도록 하는
실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/061841 WO2015047266A1 (en) | 2013-09-26 | 2013-09-26 | Block storage apertures to persistent memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160024995A KR20160024995A (ko) | 2016-03-07 |
KR101842621B1 true KR101842621B1 (ko) | 2018-03-27 |
Family
ID=52744172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167002219A KR101842621B1 (ko) | 2013-09-26 | 2013-09-26 | 지속 메모리에 대한 블록 저장 애퍼처들 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160232103A1 (ko) |
EP (1) | EP3049944B1 (ko) |
KR (1) | KR101842621B1 (ko) |
CN (1) | CN105706071A (ko) |
WO (1) | WO2015047266A1 (ko) |
Families Citing this family (105)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105446653B (zh) | 2014-08-27 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 一种数据合并方法和设备 |
CN104951412B (zh) * | 2015-06-06 | 2018-01-02 | 华为技术有限公司 | 一种通过内存总线访问的存储装置 |
US10067879B2 (en) * | 2015-12-16 | 2018-09-04 | Intel Corporation | Apparatus and method to support a storage mode over a cache-line memory interface to a non-volatile memory dual in line memory module |
KR102466412B1 (ko) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10140057B2 (en) * | 2016-02-18 | 2018-11-27 | Micron Technology, Inc. | Apparatuses and methods for multiple address registers for a solid state device |
WO2017155551A1 (en) * | 2016-03-11 | 2017-09-14 | Hewlett Packard Enterprise Development Lp | Register store |
WO2017156747A1 (zh) * | 2016-03-17 | 2017-09-21 | 华为技术有限公司 | 一种内存访问方法以及计算机系统 |
US11442760B2 (en) * | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
US11556462B2 (en) * | 2016-08-24 | 2023-01-17 | Futurewei Technologies, Inc. | Wear-leveling method for cross-point memory for multiple data temperature zones |
FR3055715B1 (fr) * | 2016-09-08 | 2018-10-05 | Upmem | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue |
US10613860B2 (en) * | 2016-11-09 | 2020-04-07 | Arm Limited | Computer architecture |
US10521389B2 (en) * | 2016-12-23 | 2019-12-31 | Ati Technologies Ulc | Method and apparatus for accessing non-volatile memory as byte addressable memory |
US10198354B2 (en) * | 2017-03-21 | 2019-02-05 | Intel Corporation | Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory |
US10359954B2 (en) | 2017-05-31 | 2019-07-23 | Alibaba Group Holding Limited | Method and system for implementing byte-alterable write cache |
US11221956B2 (en) * | 2017-05-31 | 2022-01-11 | Seagate Technology Llc | Hybrid storage device with three-level memory mapping |
US10884926B2 (en) | 2017-06-16 | 2021-01-05 | Alibaba Group Holding Limited | Method and system for distributed storage using client-side global persistent cache |
US10229003B2 (en) | 2017-06-16 | 2019-03-12 | Alibaba Group Holding Limited | Method and system for iterative data recovery and error correction in a distributed system |
US10303241B2 (en) | 2017-06-19 | 2019-05-28 | Alibaba Group Holding Limited | System and method for fine-grained power control management in a high capacity computer cluster |
TWI645295B (zh) * | 2017-06-20 | 2018-12-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料儲存方法 |
US10678443B2 (en) | 2017-07-06 | 2020-06-09 | Alibaba Group Holding Limited | Method and system for high-density converged storage via memory bus |
US10564856B2 (en) | 2017-07-06 | 2020-02-18 | Alibaba Group Holding Limited | Method and system for mitigating write amplification in a phase change memory-based storage device |
US10423508B2 (en) | 2017-08-11 | 2019-09-24 | Alibaba Group Holding Limited | Method and system for a high-priority read based on an in-place suspend/resume write |
US10303601B2 (en) | 2017-08-11 | 2019-05-28 | Alibaba Group Holding Limited | Method and system for rearranging a write operation in a shingled magnetic recording device |
US20190073132A1 (en) * | 2017-09-05 | 2019-03-07 | Alibaba Group Holding Limited | Method and system for active persistent storage via a memory bus |
US10642522B2 (en) | 2017-09-15 | 2020-05-05 | Alibaba Group Holding Limited | Method and system for in-line deduplication in a storage drive based on a non-collision hash |
US10496829B2 (en) | 2017-09-15 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for data destruction in a phase change memory-based storage device |
US10503409B2 (en) | 2017-09-27 | 2019-12-10 | Alibaba Group Holding Limited | Low-latency lightweight distributed storage system |
US10789011B2 (en) | 2017-09-27 | 2020-09-29 | Alibaba Group Holding Limited | Performance enhancement of a storage device using an integrated controller-buffer |
US10860334B2 (en) | 2017-10-25 | 2020-12-08 | Alibaba Group Holding Limited | System and method for centralized boot storage in an access switch shared by multiple servers |
US10445190B2 (en) | 2017-11-08 | 2019-10-15 | Alibaba Group Holding Limited | Method and system for enhancing backup efficiency by bypassing encoding and decoding |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10877898B2 (en) | 2017-11-16 | 2020-12-29 | Alibaba Group Holding Limited | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements |
US11289137B2 (en) | 2017-11-16 | 2022-03-29 | Micron Technology, Inc. | Multi-port storage-class memory interface |
MX2020004101A (es) | 2017-11-29 | 2020-07-24 | Kimberly Clark Co | Lamina fibrosa con propiedades mejoradas. |
JP6443572B1 (ja) * | 2018-02-02 | 2018-12-26 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム |
US10891239B2 (en) | 2018-02-07 | 2021-01-12 | Alibaba Group Holding Limited | Method and system for operating NAND flash physical space to extend memory capacity |
US10496548B2 (en) | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
US10831404B2 (en) | 2018-02-08 | 2020-11-10 | Alibaba Group Holding Limited | Method and system for facilitating high-capacity shared memory using DIMM from retired servers |
US10402112B1 (en) | 2018-02-14 | 2019-09-03 | Alibaba Group Holding Limited | Method and system for chunk-wide data organization and placement with real-time calculation |
WO2019222958A1 (en) | 2018-05-24 | 2019-11-28 | Alibaba Group Holding Limited | System and method for flash storage management using multiple open page stripes |
US10921992B2 (en) | 2018-06-25 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency |
US11816043B2 (en) | 2018-06-25 | 2023-11-14 | Alibaba Group Holding Limited | System and method for managing resources of a storage device and quantifying the cost of I/O requests |
US10871921B2 (en) | 2018-07-30 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for facilitating atomicity assurance on metadata and data bundled storage |
US10996886B2 (en) | 2018-08-02 | 2021-05-04 | Alibaba Group Holding Limited | Method and system for facilitating atomicity and latency assurance on variable sized I/O |
US10747673B2 (en) | 2018-08-02 | 2020-08-18 | Alibaba Group Holding Limited | System and method for facilitating cluster-level cache and memory space |
US11061751B2 (en) | 2018-09-06 | 2021-07-13 | Micron Technology, Inc. | Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller |
US11080210B2 (en) | 2018-09-06 | 2021-08-03 | Micron Technology, Inc. | Memory sub-system including an in package sequencer separate from a controller |
WO2020051501A1 (en) * | 2018-09-07 | 2020-03-12 | Iridia, Inc. | Improved systems and methods for writing and reading data stored in a polymer |
US11327929B2 (en) | 2018-09-17 | 2022-05-10 | Alibaba Group Holding Limited | Method and system for reduced data movement compression using in-storage computing and a customized file system |
US10852948B2 (en) | 2018-10-19 | 2020-12-01 | Alibaba Group Holding | System and method for data organization in shingled magnetic recording drive |
US10649688B1 (en) * | 2018-11-01 | 2020-05-12 | Intel Corporation | Precise longitudinal monitoring of memory operations |
US10795586B2 (en) | 2018-11-19 | 2020-10-06 | Alibaba Group Holding Limited | System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash |
US10769018B2 (en) | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
US10884654B2 (en) | 2018-12-31 | 2021-01-05 | Alibaba Group Holding Limited | System and method for quality of service assurance of multi-stream scenarios in a hard disk drive |
US10977122B2 (en) | 2018-12-31 | 2021-04-13 | Alibaba Group Holding Limited | System and method for facilitating differentiated error correction in high-density flash devices |
US11061735B2 (en) | 2019-01-02 | 2021-07-13 | Alibaba Group Holding Limited | System and method for offloading computation to storage nodes in distributed system |
US11132291B2 (en) | 2019-01-04 | 2021-09-28 | Alibaba Group Holding Limited | System and method of FPGA-executed flash translation layer in multiple solid state drives |
US11200337B2 (en) | 2019-02-11 | 2021-12-14 | Alibaba Group Holding Limited | System and method for user data isolation |
US10922234B2 (en) | 2019-04-11 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive |
US10908960B2 (en) | 2019-04-16 | 2021-02-02 | Alibaba Group Holding Limited | Resource allocation based on comprehensive I/O monitoring in a distributed storage system |
CN110321300A (zh) * | 2019-05-20 | 2019-10-11 | 中国船舶重工集团公司第七一五研究所 | 一种信号处理数据高速记录与回放模块的实现方法 |
US11169873B2 (en) | 2019-05-21 | 2021-11-09 | Alibaba Group Holding Limited | Method and system for extending lifespan and enhancing throughput in a high-density solid state drive |
US11036431B2 (en) | 2019-06-26 | 2021-06-15 | International Business Machines Corporation | Accessing persistent memory via load and store |
US10860223B1 (en) | 2019-07-18 | 2020-12-08 | Alibaba Group Holding Limited | Method and system for enhancing a distributed storage system by decoupling computation and network tasks |
US11169928B2 (en) * | 2019-08-22 | 2021-11-09 | Micron Technology, Inc. | Hierarchical memory systems to process data access requests received via an input/output device |
US20210055882A1 (en) * | 2019-08-22 | 2021-02-25 | Micron Technology, Inc. | Hierarchical memory apparatus |
US11106595B2 (en) * | 2019-08-22 | 2021-08-31 | Micron Technology, Inc. | Hierarchical memory systems |
US10789094B1 (en) * | 2019-08-22 | 2020-09-29 | Micron Technology, Inc. | Hierarchical memory apparatus |
US11126561B2 (en) | 2019-10-01 | 2021-09-21 | Alibaba Group Holding Limited | Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive |
US11042307B1 (en) | 2020-01-13 | 2021-06-22 | Alibaba Group Holding Limited | System and method for facilitating improved utilization of NAND flash based on page-wise operation |
US11449455B2 (en) | 2020-01-15 | 2022-09-20 | Alibaba Group Holding Limited | Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility |
US10872622B1 (en) | 2020-02-19 | 2020-12-22 | Alibaba Group Holding Limited | Method and system for deploying mixed storage products on a uniform storage infrastructure |
US10923156B1 (en) | 2020-02-19 | 2021-02-16 | Alibaba Group Holding Limited | Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive |
US11150986B2 (en) | 2020-02-26 | 2021-10-19 | Alibaba Group Holding Limited | Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction |
US11144250B2 (en) | 2020-03-13 | 2021-10-12 | Alibaba Group Holding Limited | Method and system for facilitating a persistent memory-centric system |
US11200114B2 (en) | 2020-03-17 | 2021-12-14 | Alibaba Group Holding Limited | System and method for facilitating elastic error correction code in memory |
US11443074B2 (en) * | 2020-04-09 | 2022-09-13 | Hewlett Packard Enterprise Development Lp | Verification of programmable logic devices |
US11385833B2 (en) | 2020-04-20 | 2022-07-12 | Alibaba Group Holding Limited | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources |
US11281575B2 (en) | 2020-05-11 | 2022-03-22 | Alibaba Group Holding Limited | Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks |
US11461262B2 (en) | 2020-05-13 | 2022-10-04 | Alibaba Group Holding Limited | Method and system for facilitating a converged computation and storage node in a distributed storage system |
US11494115B2 (en) | 2020-05-13 | 2022-11-08 | Alibaba Group Holding Limited | System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC) |
US11218165B2 (en) | 2020-05-15 | 2022-01-04 | Alibaba Group Holding Limited | Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM |
US11507499B2 (en) | 2020-05-19 | 2022-11-22 | Alibaba Group Holding Limited | System and method for facilitating mitigation of read/write amplification in data compression |
US11556277B2 (en) | 2020-05-19 | 2023-01-17 | Alibaba Group Holding Limited | System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification |
US11263132B2 (en) | 2020-06-11 | 2022-03-01 | Alibaba Group Holding Limited | Method and system for facilitating log-structure data organization |
US11422931B2 (en) | 2020-06-17 | 2022-08-23 | Alibaba Group Holding Limited | Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization |
US11354200B2 (en) | 2020-06-17 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating data recovery and version rollback in a storage device |
US11354233B2 (en) | 2020-07-27 | 2022-06-07 | Alibaba Group Holding Limited | Method and system for facilitating fast crash recovery in a storage device |
US11372774B2 (en) | 2020-08-24 | 2022-06-28 | Alibaba Group Holding Limited | Method and system for a solid state drive with on-chip memory integration |
US11487465B2 (en) | 2020-12-11 | 2022-11-01 | Alibaba Group Holding Limited | Method and system for a local storage engine collaborating with a solid state drive controller |
US11734115B2 (en) | 2020-12-28 | 2023-08-22 | Alibaba Group Holding Limited | Method and system for facilitating write latency reduction in a queue depth of one scenario |
US11416365B2 (en) | 2020-12-30 | 2022-08-16 | Alibaba Group Holding Limited | Method and system for open NAND block detection and correction in an open-channel SSD |
US11726699B2 (en) | 2021-03-30 | 2023-08-15 | Alibaba Singapore Holding Private Limited | Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification |
US11461173B1 (en) | 2021-04-21 | 2022-10-04 | Alibaba Singapore Holding Private Limited | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement |
US11476874B1 (en) | 2021-05-14 | 2022-10-18 | Alibaba Singapore Holding Private Limited | Method and system for facilitating a storage server with hybrid memory for journaling and data storage |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120151120A1 (en) * | 2010-12-09 | 2012-06-14 | Apple Inc. | Systems and methods for handling non-volatile memory operating at a substantially full capacity |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037234B2 (en) * | 2003-12-02 | 2011-10-11 | Super Talent Electronics, Inc. | Command queuing smart storage transfer manager for striping data to raw-NAND flash modules |
TW200515147A (en) * | 2003-10-17 | 2005-05-01 | Matsushita Electric Ind Co Ltd | Semiconductor memory device, controller, and read/write control method thereof |
US7386700B2 (en) * | 2004-07-30 | 2008-06-10 | Sandisk Il Ltd | Virtual-to-physical address translation in a flash file system |
US7554855B2 (en) * | 2006-12-20 | 2009-06-30 | Mosaid Technologies Incorporated | Hybrid solid-state memory system having volatile and non-volatile memory |
US8006045B2 (en) * | 2009-02-27 | 2011-08-23 | Atmel Rousset S.A.S. | Dummy write operations |
US8566508B2 (en) * | 2009-04-08 | 2013-10-22 | Google Inc. | RAID configuration in a flash memory data storage device |
KR101869059B1 (ko) * | 2012-02-28 | 2018-06-20 | 삼성전자주식회사 | 저장 장치 및 그것의 메모리 컨트롤러 |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
-
2013
- 2013-09-26 CN CN201380079211.2A patent/CN105706071A/zh active Pending
- 2013-09-26 EP EP13894418.6A patent/EP3049944B1/en active Active
- 2013-09-26 WO PCT/US2013/061841 patent/WO2015047266A1/en active Application Filing
- 2013-09-26 KR KR1020167002219A patent/KR101842621B1/ko active IP Right Grant
- 2013-09-26 US US14/127,553 patent/US20160232103A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120151120A1 (en) * | 2010-12-09 | 2012-06-14 | Apple Inc. | Systems and methods for handling non-volatile memory operating at a substantially full capacity |
Also Published As
Publication number | Publication date |
---|---|
US20160232103A1 (en) | 2016-08-11 |
EP3049944A4 (en) | 2017-06-14 |
KR20160024995A (ko) | 2016-03-07 |
EP3049944A1 (en) | 2016-08-03 |
EP3049944B1 (en) | 2022-01-12 |
CN105706071A (zh) | 2016-06-22 |
WO2015047266A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101842621B1 (ko) | 지속 메모리에 대한 블록 저장 애퍼처들 | |
US10782910B2 (en) | Methods for internal data movements of a flash memory device and apparatuses using the same | |
US9304938B2 (en) | Storage device and data transferring method thereof | |
KR102565895B1 (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US20180307496A1 (en) | Methods for gc (garbage collection) por (power off recovery) and apparatuses using the same | |
US20180275921A1 (en) | Storage device | |
US9396141B2 (en) | Memory system and information processing device by which data is written and read in response to commands from a host | |
US20130290647A1 (en) | Information-processing device | |
JP2013530448A (ja) | キャッシュストレージアダプタアーキテクチャ | |
KR101979735B1 (ko) | 비휘발성 메모리 시스템 및 이와 통신하는 호스트 | |
CN108958642B (zh) | 存储器系统及其操作方法 | |
US20210049101A1 (en) | MEMORY TIERING USING PCIe CONNECTED FAR MEMORY | |
US20180275914A1 (en) | Methods for garbage collection and apparatuses using the same | |
WO2013192633A2 (en) | Virtual memory module | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
US11573743B2 (en) | Pointer dereferencing within memory sub-system | |
KR102596964B1 (ko) | 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치 | |
JP2016167215A (ja) | メモリ装置 | |
US9904622B2 (en) | Control method for non-volatile memory and associated computer system | |
KR102645983B1 (ko) | 오픈 채널 벡터 커맨드 실행 | |
JP2023503026A (ja) | ロードコマンドの存続時間 | |
KR102440665B1 (ko) | 계층적 메모리 장치 | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US10846019B2 (en) | Semiconductor device | |
US20240143508A1 (en) | Ats pri support with implicit cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |