KR101842621B1 - 지속 메모리에 대한 블록 저장 애퍼처들 - Google Patents

지속 메모리에 대한 블록 저장 애퍼처들 Download PDF

Info

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
Application number
KR1020167002219A
Other languages
English (en)
Other versions
KR20160024995A (ko
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 KR20160024995A publication Critical patent/KR20160024995A/ko
Application granted granted Critical
Publication of KR101842621B1 publication Critical patent/KR101842621B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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
    • 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/0703Error 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/0706Error 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/073Error 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
    • 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/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1441Protection 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
    • 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/1668Details of memory controller
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear 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

지속 메모리에 대한 블록 저장 애퍼처들{BLOCK STORAGE APERTURES TO PERSISTENT MEMORY}
종래의 컴퓨터 시스템에서, 비휘발성 메모리를 포함하는 블록 저장 장치는 결국 시스템 버스에 의해 프로세서에 통신가능하게 결합될 수 있는 블록 저장 장치 제어기에 통신가능하게 결합될 수 있다. 이러한 시스템 버스는 전형적으로 고속 병렬 컴포넌트 상호 연결(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의 메일박스를 사용하여 호스트 프로세서에 의한 명령의 완료의 상태를 모니터하는 예시적인 방법을 도시한 흐름도.
적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하는 컴퓨터 시스템 내의 적어도 하나의 비휘발성 메모리(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)

  1. 적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하는 컴퓨터 시스템에서 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하는 방법으로서,
    상기 메모리 버스를 통해 제어기에서, 상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 복수의 블록 윈도우(block window) 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하는 단계 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 제어기에 포함된 복수의 베이스 레지스터와 관련됨 -;
    상기 메모리 버스를 통해 상기 제어기에서, 상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 수신하는 단계 - 상기 제1 명령은 메모리 로드 명령(memory load command) 및 메모리 저장 명령(memory store command) 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 더 포함하고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함하고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -;
    상기 제어기에 의해, 상기 제1 명령에 포함된 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환(translating)하는 단계 - 상기 변환하는 단계는, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 단계, 및 상기 선택된 베이스 레지스터의 내용(content)에 기초하여 상기 물리 어드레스를 식별하는 단계를 포함함 -;
    상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 제어기는 상기 선택된 블록 윈도우에 관련된 적어도 하나의 명령 레지스터를 더 포함하고, 상기 호스트 프로세서로부터 상기 적어도 하나의 제1 명령을 수신하는 단계는 상기 선택된 블록 윈도우에 관련된 상기 명령 레지스터에서 상기 제1 명령을 수신하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 제1 명령은 상기 메모리 저장 명령을 포함하고, 상기 논리 베이스 어드레스는 논리 블록 기입 베이스 어드레스를 포함하고, 상기 논리 오프셋 어드레스는 상기 논리 블록 기입 베이스 어드레스로부터의 상대 오프셋(relative offset)을 정의하는 논리 블록 기입 오프셋 어드레스를 포함하는 방법.
  4. 제3항에 있어서,
    상기 메모리 버스를 통해 상기 제어기에서, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위 내의 상기 논리 블록 기입 베이스 어드레스로부터의 상기 상대 오프셋에서의 상기 블록 데이터를 수신하는 단계를 더 포함하는 방법.
  5. 제4항에 있어서, 상기 제어기는 어드레스 변환 컴포넌트(address translation component)를 더 포함하고, 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하는 단계는 상기 어드레스 변환 컴포넌트에 의해, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 블록 기입 베이스 어드레스 및 상기 논리 블록 기입 오프셋 어드레스를 상기 NVM 장치 내의 상기 물리 어드레스로 변환하는 단계를 포함하는 방법.
  6. 제5항에 있어서, 상기 제어기는 미디어 관리 변환 테이블을 더 포함하고, 상기 방법은
    상기 미디어 관리 변환 테이블에 의해, 상기 NVM 장치에 대한 하나 이상의 내구 한도(endurance limit)를 시행하도록 하나 이상의 웨어-레벨링 동작(wear-leveling operation)을 수행하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서, 상기 제어기는 암호화 컴포넌트를 더 포함하고, 상기 방법은
    상기 암호화 컴포넌트에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에 기입될 상기 블록 데이터를 암호화하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에 상기 블록 데이터를 기입하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 제어기는 적어도 하나의 상태 레지스터를 더 포함하고, 상기 방법은
    상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스에의 상기 블록 데이터의 기입에 관련된 에러 상태를 표시하기 위해 상기 상태 레지스터 내의 적어도 하나의 에러 플래그를 적어도 수 회 세트(set)하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서, 상기 제1 명령은 상기 메모리 로드 명령을 포함하고, 상기 논리 베이스 어드레스는 논리 블록 판독 베이스 어드레스를 포함하고, 상기 논리 오프셋 어드레스는 상기 논리 블록 판독 베이스 어드레스로부터의 상대 오프셋을 정의하는 논리 블록 판독 오프셋 어드레스를 포함하는 방법.
  11. 제10항에 있어서, 상기 제어기는 어드레스 변환 컴포넌트를 더 포함하고, 상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하는 단계는 상기 어드레스 변환 컴포넌트에 의해, 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 블록 판독 베이스 어드레스 및 상기 논리 블록 판독 오프셋 어드레스를 상기 NVM 장치 내의 상기 물리 어드레스로 변환하는 단계를 포함하는 방법.
  12. 제11항에 있어서, 상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서, 상기 제어기는 복호화 컴포넌트를 더 포함하고, 상기 방법은
    상기 복호화 컴포넌트에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 판독된 상기 블록 데이터를 복호화하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서, 상기 제어기는 적어도 하나의 상태 레지스터를 더 포함하고, 상기 방법은
    상기 제어기에 의해, 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하는 것에 관련된 에러 상태를 표시하도록 상기 상태 레지스터 내의 적어도 하나의 에러 플래그를 적어도 수 회 세트하는 단계를 더 포함하는 방법.
  15. 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하기 위한 제어기로서 - 상기 제어기는 적어도 하나의 메모리 버스를 통해 적어도 하나의 호스트 프로세서에 통신가능하게 결합(communicably coupled)되도록구성됨 -,
    각각 복수의 블록 크기를 갖는 복수의 블록 윈도우;
    상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 상기 메모리 버스를 통해 수신하도록 동작하는 적어도 하나의 명령 레지스터 - 상기 제1 명령은 메모리 로드 명령 및 메모리 저장 명령 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 갖고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함함 -;
    적어도 복수의 베이스 어드레스 레지스터를 포함하는 복수의 제어 레지스터; 및
    상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 상기 복수의 블록 윈도우 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하고 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -; 상기 제1 명령으로부터의 상기 논리 어드레스에 적어도 기초하여 상기 복수의 베이스 어드레스 레지스터 중으로부터 베이스 어드레스 레지스터를 선택하고 - 상기 선택된 베이스 레지스터는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위의 미리 결정된 부분에 대응함 -; 상기 선택된 블록 윈도우의 상기 논리 어드레스 범위의 미리 결정된 부분 내의 상기 논리 베이스 어드레스 및 상기 논리 오프셋 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하고 - 상기 변환하는 것은, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 것, 및 상기 선택된 베이스 레지스터의 내용에 기초하여 상기 물리 어드레스를 식별하는 것을 포함함 -; 상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하기 위해 적어도 하나의 메모리로부터의 적어도 하나의 프로그램을 실행하도록 동작하는 적어도 하나의 내부 프로세서
    를 포함하는 제어기.
  16. 제15항에 있어서, 상기 논리 어드레스 범위의 미리 결정된 부분은 상기 선택된 블록 윈도우 내의 미리 결정된 서브 블록을 커버하는 제어기.
  17. 제16항에 있어서, 상기 제1 명령은 상기 메모리 저장 명령을 포함하고, 상기 적어도 하나의 내부 프로세서는 상기 NVM 장치 내의 상기 물리 어드레스에 상기 블록 데이터를 기입하기 위해 상기 적어도 하나의 메모리로부터의 상기 적어도 하나의 프로그램을 실행하도록 더 동작하는 제어기.
  18. 제17항에 있어서, 상기 제1 명령은 상기 메모리 로드 명령을 포함하고, 상기 적어도 하나의 내부 프로세서는 상기 NVM 장치 내의 상기 물리 어드레스로부터 상기 블록 데이터를 판독하기 위해 상기 적어도 하나의 메모리로부터의 상기 적어도 하나의 프로그램을 실행하도록 더 동작하는 제어기.
  19. 컴퓨터 시스템으로서,
    시스템 버스;
    상기 시스템 버스에 통신가능하게 결합된 디스플레이;
    상기 시스템 버스에 결합된 적어도 하나의 휘발성 메모리; 및
    상기 메모리 버스에 통신가능하게 결합된 제15항의 제어기
    를 포함하는 컴퓨터 시스템.
  20. 컴퓨터 시스템에서 감소된 레이턴시로 비휘발성 메모리(NVM) 장치 내에 저장된 블록 데이터에 액세스하기 위한 실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 시스템은 적어도 하나의 호스트 프로세서 및 적어도 하나의 메모리 버스를 포함하고, 상기 컴퓨터 판독가능 저장 매체는
    상기 메모리 버스를 통해 제어기에서, 상기 NVM 장치 내에 저장된 상기 블록 데이터에 액세스하기 위해 복수의 블록 윈도우 중으로부터 블록 윈도우를 선택하기 위한 어드레스를 수신하고 - 상기 복수의 블록 윈도우는 각각 복수의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 복수의 블록 크기 중으로부터의 각각의 블록 크기를 갖고, 상기 선택된 블록 윈도우는 상기 제어기에 포함된 복수의 베이스 레지스터와 관련됨 -;
    상기 호스트 프로세서로부터 적어도 하나의 제1 명령을 상기 메모리 버스를 통해 수신하고 - 상기 제1 명령은 메모리 로드 명령 및 메모리 저장 명령 중 하나를 포함하고, 상기 제1 명령은 논리 어드레스를 더 포함하고, 상기 논리 어드레스는 논리 베이스 어드레스 및 논리 오프셋 어드레스를 포함하고, 상기 논리 베이스 어드레스 더하기 상기 각각의 블록 크기는 상기 선택된 블록 윈도우의 논리 어드레스 범위를 정의하고, 상기 논리 베이스 어드레스 더하기 상기 논리 오프셋 어드레스는 상기 선택된 블록 윈도우에 의해 정의된 상기 논리 어드레스 범위 내에 있음 -;
    상기 논리 어드레스를 상기 NVM 장치 내의 물리 어드레스로 변환하고 - 상기 변환하는 것은, 상기 논리 어드레스에 기초하여 상기 복수의 베이스 레지스터에서 베이스 레지스터를 선택하는 것, 및 상기 선택된 베이스 레지스터의 내용에 기초하여 상기 물리 어드레스를 식별하는 것을 포함함 -;
    상기 NVM 장치 내의 상기 물리 어드레스에서 상기 블록 데이터에 액세스하도록 하는
    실행가능한 명령어들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020167002219A 2013-09-26 2013-09-26 지속 메모리에 대한 블록 저장 애퍼처들 KR101842621B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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