KR20220127374A - 메모리 프로토콜 - Google Patents

메모리 프로토콜 Download PDF

Info

Publication number
KR20220127374A
KR20220127374A KR1020227030944A KR20227030944A KR20220127374A KR 20220127374 A KR20220127374 A KR 20220127374A KR 1020227030944 A KR1020227030944 A KR 1020227030944A KR 20227030944 A KR20227030944 A KR 20227030944A KR 20220127374 A KR20220127374 A KR 20220127374A
Authority
KR
South Korea
Prior art keywords
buffer
read
write
entries
buffer portion
Prior art date
Application number
KR1020227030944A
Other languages
English (en)
Inventor
로버트 엠. 워커
제임스 에이. 주니어. 홀
Original Assignee
마이크론 테크놀로지, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크론 테크놀로지, 인크. filed Critical 마이크론 테크놀로지, 인크.
Publication of KR20220127374A publication Critical patent/KR20220127374A/ko

Links

Images

Classifications

    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0656Data buffering arrangements
    • 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/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Communication Control (AREA)

Abstract

본 개시는 메모리 프로토콜과 관련된 장치 및 방법을 포함한다. 예시적인 장치는 블록 구성 레지스터를 사용하여 호스트로부터 수신된 명령들에 기초하여 메모리 디바이스의 다수의 블록 버퍼들 상의 연산들을 수행할 수 있고, 연산들은 다수의 블록 버퍼들로부터 데이터를 판독하고 메모리 디바이스 상의 다수의 블록 버퍼들에 데이터를 기록할 수 있다.

Description

메모리 프로토콜{MEMORY PROTOCOL}
본 개시는 일반적으로 메모리 디바이스에 관한 것으로, 보다 구체적으로 메모리 프로토콜을 위한 장치 및 방법에 관한 것이다.
메모리 디바이스들은 일반적으로 컴퓨터 또는 기타 전자 디바이스들에 내부, 반도체, 집적 회로로 제공된다. 휘발성 메모리와 비-휘발성 메모리를 포함하여 다양한 유형의 메모리가 존재한다. 휘발성 메모리는 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비-휘발성 메모리는 전원이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있으며, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거 가능 프로그램 가능 ROM(EEPROM), 소거 가능 프로그램 가능 ROM(EPROM), 및 위상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM), 및 자기 저항 랜덤 액세스 메모리(MRAM)와 같은 저항 가변 메모리 등을 포함할 수 있다.
메모리는 광범위한 전자 어플리케이션들을 위한 휘발성 및 비-휘발성 데이터 저장소로도 활용된다. 비-휘발성 메모리는, 예를 들어, 개인용 컴퓨터, 휴대용 메모리 스틱, 디지털 카메라, 셀룰러 전화기, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어, 및 다른 전자 디바이스들에 사용될 수 있다. 메모리 셀들은 어레이들로 배열될 수 있으며, 어레이들은 메모리 디바이스에서 사용된다.
메모리는 컴퓨팅 디바이스들에 사용되는 메모리 모듈(예를 들어, DIMM(dual in-line memory module))의 일부일 수 있다. 메모리 모듈은 예를 들어 DRAM과 같은 휘발성 메모리 및/또는 예를 들어 플래시 메모리 또는 RRAM과 같은 비-휘발성 메모리를 포함할 수 있다. DIMM들은 컴퓨팅 시스템들의 메인 메모리를 사용할 수 있다.
도 1은 본 개시의 다수의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태의 장치의 블록도이다.
도 2a 내지 2c는 본 개시의 다수의 실시 예들에 따른 블록 버퍼(block buffer)와 관련된 레지스터들(registers) 및 명령들(commands)을 도시한다.
도 3은 본 개시의 다수의 실시 예들에 따른 판독 증분 정보(read increment information)를 포함하는 판독 명령을 도시한다.
도 4는 본 개시의 다수의 실시 예들에 따른 다수의 판독 명령들 및 배리어 명령(barrier command)을 도시한다.
도 5는 본 개시의 다수의 실시 예들에 따른 버스트 길이 정보(burst length information)를 포함하는 판독 명령 및 기록 명령을 도시한다.
도 6a 내지 도 6d는 본 개시의 다수의 실시 예들에 따른 판독 버퍼 및 기록 버퍼의 크기를 나타내는 레지스터를 도시한다.
본 개시는 메모리 프로토콜(memory protocol)과 관련된 장치들 및 방법들을 포함한다. 예시적인 장치는 블록 구성 레지스터(block configuration register)를 사용하여 호스트로부터 수신된 명령들에 기초하여 메모리 디바이스 상의 다수의 블록 버퍼들 상에서 연산들(operations)을 수행할 수 있고, 연산들은 상기 다수의 블록 버퍼들로부터 데이터를 판독하고 메모리 디바이스 상의 다수의 블록 버퍼들에 데이터를 기록할 수 있다.
본 개시의 하나 이상의 실시 예들에서, 블록 구성 레지스터는 메모리 디바이스 상에 다수의 블록 버퍼들을 정의하는데 사용될 수 있다. 호스트는 블록 버퍼들에 직접 액세스하여 블록 버퍼 상에서 판독 및/또는 기록 명령들을 실행할 수 있다. 블록 구성 레지스터는 관련된 블록 버퍼 레지스터들과 타겟 어드레스 레지스터들의 쌍들을 포함할 수 있으며, 여기서, 블록 버퍼 레지스터들 각각은 각각의 블록 버퍼에 대한 시작 어드레스(start address) 및 종료 어드레스(end address)를 포함하고 타겟 어드레스 레지스터들 각각은 각각의 블록 버퍼와 연관된 메모리 어레이에 타겟 어드레스를 포함한다. 호스트는 블록 버퍼들의 타겟 어드레스, 시작 어드레스 및 종료 어드레스와 연관된 블록 버퍼들로부터 데이터를 판독 및/또는 기록하기 위해 메모리 디바이스에 판독 및/또는 기록 명령을 송신할 수 있다. 블록 구성 레지스터는 또한 판독 및/또는 기록 명령들이 메모리 장치에 의해 수신 및 실행됨에 따라 호스트에 의해 업데이트되는 블록 버퍼들 내의 데이터에 대한 상태 정보를 포함하는 상태 레지스터를 포함할 수 있다.
본 개시의 하나 이상의 실시 예들에서, 메모리 프로토콜은 결정적 및/또는 비-결정적 타이밍으로 연산들을 수행하는데 사용될 수 있다. 메모리 프로토콜은 판독 증분 값(read increment value)을 갖는 판독 명령들을 전송하는 것을 포함할 수 있고, 여기서, 판독 증분 값은 메모리 디바이스 판독 식별 번호를 판독 명령에 할당하는데 사용되는 카운터를 증가시키는 값을 제어기에 지시한다. 메모리는 호스트로부터 배리어 명령을 전송하는 것을 포함할 수 있고, 여기서, 배리어 명령은 메모리 디바이스에 의해 이전에 수신된 명령들이 배리어 명령에 후속하여 메모리 디바이스에 의해 수신된 명령 전에 수행되어야 함을 지시한다.
하나 이상의 실시 예들에서, 메모리 프로토콜은 메모리 디바이스에 대한 버스트 길이(burst length)를 지시하는 버스트 길이 신호를 갖는 명령들을 전송하는 것을 포함할 수 있다. 버스트 길이 신호는 명령에 대한 요청 크기 및/또는 명령이 실행될 유형 메모리 디바이스에 기초할 수 있다. 메모리 프로토콜은 제1 특정 크기의 판독 버퍼 부분 및 제2 특정 크기의 기록 버퍼 부분을 갖는 버퍼를 구성하는 버퍼 레지스터를 설정하기 위한 명령들을 전송하는 것을 포함할 수 있다.
다음의 본 개시의 상세한 설명에서, 본 명세서의 일부를 형성하고 본 개시의 다수의 실시 예들이 어떻게 실행될 수 있는지를 예시적으로 도시한 첨부 도면들을 참조한다. 이러한 실시 예들은 당업자가 본 개시의 실시 예들을 실시할 수 있도록 충분히 상세하게 설명되며, 다른 실시 예들이 이용될 수 있고, 프로세스, 전기적 및/또는 구조적 변경들이 본 개시의 범위를 벗어나지 않고 이루어질 수 있음을 이해해야 한다. 본 명세서에서 사용된 지정자 "N"은 그렇게 지정된 다수의 특정 특징들이 본 개시의 다수의 실시 예들에 포함될 수 있음을 나타낸다.
본 명세서에서 사용되는 "다수의" 무언가는 그러한 것들 중 하나 이상을 지칭할 수 있다. 예를 들어, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스들을 지칭할 있다. 또한, 도면에서 참조 번호들과 관련하여 본 명세서에서 사용되는 "N"과 같은 지정자는 그렇게 지정된 다수의 특정 특징들이 본 개시의 다수의 실시 예들에 포함될 수 있음을 나타낸다.
본 명세서의 도면들은 첫 번째 숫자 또는 숫자들은 도면 번호에 대응되고 나머지 숫자들은 도면에서 요소 또는 구성 요소를 식별하는 번호 부여 규칙을 따른다. 상이한 도면들 사이의 유사한 요소들 또는 구성 요소들은 유사한 숫자들을 사용하여 식별될 수 있다. 인식할 수 있는 바와 같이, 본 명세서의 다양한 실시 예들에 도시된 요소들은 본 개시의 다수의 추가적인 실시 예들을 제공하도록 추가, 교환 및/또는 제거될 수 있다. 또한, 도면들에 제공된 구성 요소들의 비율 및 상대적 스케일은 본 개시의 다양한 실시 예들을 설명하기 위한 것이지 제한적인 의미로 사용되어서는 안 된다.
도 1은 본 개시의 하나 이상의 실시 예들에 따른 다수의 메모리 시스템들(104-1 내지 104-N) 형태의 장치를 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 본 명세서에 사용된 바와 같이, "장치"는, 이에 제한되는 것은 아니지만, 예를 들어, 회로 또는 전기 회로망, 다이 또는 다이스, 모듈 또는 모듈들, 디바이스 또는 디바이스들, 또는 시스템 또는 시스템들과 같은 임의의 다양한 구조들 또는 구조들의 조합을 지칭할 수 있다. 도 1에 도시된 실시 예에서, 메모리 시스템들(104-1 내지 104-N)은 하나 이상의 메모리 디바이스들(110-1, ..., 110-X, 110-Y)을 포함할 수 있다. 하나 이상의 실시 예들에서, 메모리 디바이스들(110-1, ..., 110-X, 110-Y)은 듀얼 인-라인 메모리 모듈(dual in-line memory module, DIMM)들일 수 있다. DIMM들은 예를 들어 각각 NVDIMM 및 DRAM DIMM과 같은 휘발성 메모리 및/또는 비-휘발성 메모리를 포함할 수 있다. 다수의 실시 예들에서, 메모리 시스템들(104-1 내지 104-N)은 멀티-칩 디바이스를 포함할 수 있다. 멀티-칩 디바이스는 다수의 상이한 메모리 유형들 및/또는 메모리 모듈들을 포함할 수 있다. 예를 들어, 메모리 시스템은 임의의 유형의 모듈에 비-휘발성 또는 휘발성 메모리를 포함할 수 있다. 도 1 내지 도 4와 관련하여 하기에서 설명되는 예들은 메모리 모듈로서 DIMM을 사용하지만, 메모리가 결정적 및/또는 비-결정적 명령들을 실행할 수 있는 임의의 메모리 시스템에 본 개시의 프로토콜이 사용될 수 있다. 도 1에서, 메모리 시스템(104-1)은 채널(112-1)을 통해 호스트에 연결되고 메모리 디바이스들(110-1 내지 110-X)을 포함할 수 있고, 메모리 시스템(104-N)은 채널(112-N)을 통해 호스트에 연결되고 메모리 디바이스들(110-1 내지 110-Y)을 포함할 수 있다. 이 예에서, 각각의 메모리 디바이스들(110-1, ..., 110-X, 110-Y)은 제어기(114)를 포함한다. 제어기(114)는 호스트(102)로부터 명령들을 수신하고 메모리 디바이스 상에서 명령들의 실행을 제어할 수 있다. 또한, 다수의 실시 예들에서, 본 개시의 프로토콜은 제어기가 없는 메모리 디바이스(예를 들어, DIMM)에 의해 구현될 수 있고 본 개시의 프로토콜을 사용하는 명령들의 실행은 메모리 디바이스에 내장될 수 있다. 호스트(102)는 메모리 디바이스의 유형에 따라, 본 개시의 프로토콜 및/또는 종래의 프로토콜을 사용하는 메모리 디바이스들(110-1, ..., 110-X, 110-Y)에 명령들을 전송할 수 있다. 예를 들어, 호스트는 NVDIMM과 동일한 채널(예를 들어, 채널(112-1)) 상에서 통신하기 위해 본 개시의 프로토콜을 사용할 수 있고, 모두 동일한 메모리 시스템 상에 있는 DRAM DIMM과 통신하기 위해 종래의 프로토콜을 사용할 수 있다.
도 1에 도시된 바와 같이, 호스트(102)는 메모리 시스템(104-1 내지 104-N)에 연결될 수 있다. 다수의 실시 예들에서, 각 메모리 시스템(104-1 내지 104-N)은 채널을 통해 호스트(102)에 연결될 수 있다. 도 1에서, 메모리 시스템(104-1)은 채널(112-1)을 통해 호스트(102)에 연결되고 메모리 시스템(104-N)은 채널(112-N)을 통해 호스트(102)에 연결된다. 호스트(102)는, 다른 호스트 시스템들 중에서, 랩탑 컴퓨터, 퍼스널 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 디바이스, 이동 전화기, PDA, 메모리 카드 판독기, 인터페이스 허브일 수 있으며, 예를 들어 프로세서와 같은 메모리 액세스 디바이스를 포함할 수 있다. 당업자는 "프로세서"가 병렬 처리 시스템(parallel processing system), 다수의 코프로세서들(coprocessors) 등과 같은 하나 이상의 프로세서들을 의도할 수 있다는 것을 이해할 것이다.
호스트(102)는 메모리 시스템들(104-1 내지 104-N)과 통신하기 위한 호스트 제어기(108)를 포함한다. 호스트 제어기(108)는 채널들(112-1 내지 112-N)을 통해 메모리 디바이스들(110-1, .., 110-X, 110-Y)에 명령들을 전송한다. 호스트 제어기(108)는 메모리 디바이스들(110-1, ??, 110-X, 110-Y) 및/또는 각각의 메모리 디바이스들(110-1, ??, 110-X, 110-Y) 상의 제어기(114)와 통신하여, 다른 연산들 중에서, 데이터를 기록하고, 판독하고, 소거한다. 물리적 호스트 인터페이스는 메모리 시스템들(104-1 내지 104-N)과 물리적 호스트 인터페이스를 위한 호환 가능한 수신기들(receptors)을 갖는 호스트(102) 사이에서 제어, 어드레스, 데이터 및 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 신호는 예를 들어 채널들(112-1 내지 112-N)을 통해 데이터 버스 및/또는 어드레스 버스와 같은 다수의 버스들 상에서 호스트(102)와 메모리 디바이스들(110-1 ,. . 110-X, 110-Y) 사이에서 통신된다.
호스트 제어기(108) 및/또는 메모리 디바이스 상의 제어기(114)는 예를 들어 하드웨어와 같은 제어 회로, 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 하나 이상의 실시 예들에서, 호스트 제어기(108) 및/또는 제어기(114)는 물리적 인터페이스를 포함하는 인쇄 회로 기판에 결합된 주문형 집적 회로(ASIC)일 수 있다. 또한, 각 메모리 디바이스(110-1, ..., 110-X, 110-Y)는 휘발성 및/또는 비-휘발성 메모리의 버퍼(116) 및 레지스터(118)를 포함할 수 있다. 버퍼(116)는 판독 명령들 및/또는 기록 명령들의 실행 중에 사용되는 데이터를 버퍼링하는데 사용될 수 있다. 버퍼(116)는 기록 버퍼, 판독 버퍼 및 다수의 블록 버퍼들로 분할될 수 있다. 기록 버퍼 전용 공간 및 판독 버퍼 전용 공간의 양은 다수의 레지스터들(118)를 프로그래밍하는 호스트 제어기(108)에 의해 제어될 수 있다. 호스트는 특정 메모리 디바이스로 전송되는 명령들의 유형에 기초하여, 기록 버퍼 및 판독 버퍼에 전용된 버퍼(116) 내의 공간의 양을 제어할 수 있다. 다수의 실시 예들에서, 각각의 메모리 디바이스(110-1, ..., 110-X, 110-Y)는 고정된 기록 버퍼 크기 및/또는 고정된 판독 버퍼 크기를 가질 수 있다. 버퍼들(116)은 다수의 블록 버퍼들을 포함할 수 있다. 다수의 블록 버퍼들 각각의 크기는 다수의 레지스터들(118)을 프로그래밍함으로써 호스트에 의해 제어될 수 있다. 레지스터들(118)은 각각의 블록 레지스터의 시작 및 종료 어드레스 및 각 블록 레지스터와 연관된 메모리 어레이의 타겟 어드레스를 설정하도록 프로그래밍될 수 있다. 호스트는 메모리 디바이스들(110-1, ??, 110-X, 110-Y)에 명령들을 전송함으로써 블록 레지스터들에 데이터를 판독 및/또는 기록할 수 있다..
메모리 디바이스들(110-1, ..., 110-X, 110-Y)은 메모리 시스템에 대한 메인 메모리를 제공할 수 있거나 메모리 시스템 전반에 걸쳐 추가 메모리 또는 저장소로서 사용될 수 있다. 각각의 메모리 디바이스(110-1, ..., 110-X, 110-Y)는 메모리 셀들, 예를 들어 비-휘발성 메모리 셀들의 하나 이상의 어레이들을 포함할 수 있다. 어레이들은, 예를 들어 NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 실시 예들은 특정 유형의 메모리 디바이스로 제한되지 않는다. 예를 들어, 메모리 디바이스는 RAM, ROM, DRAM, SDRAM, PCRAM, RRAM 및 플래시 메모리 등을 포함할 수 있다.
도 1의 실시 예는 본 개시의 실시 예들을 모호하게 하지 않기 위해 도시되지 않은 부가의 회로를 포함할 수 있다. 예를 들어, 메모리 시스템들(104-1 내지 104-N)은 I/O 회로를 통해 I/O 연결들 상으로 제공되는 어드레스 신호들을 래칭하기 위해 어드레스 회로를 포함할 수 있다. 어드레스 신호들은 행 디코더 및 열 디코더에 의해 수신되고 디코딩되어 메모리 디바이스들(110-1 내지 110-N)을 액세스할 수 있다. 당업자는 어드레스 입력 연결들의 수가 메모리 디바이스들(110-1, ..., 110-X, 110-Y)의 밀도 및 아키텍처에 의존할 수 있음을 알 것이다.
도 2a 내지 도 2c는 본 개시의 다수의 실시 예에 따른 블록 버퍼와 연관된 레지스터들 및 명령들을 도시한다. 다수의 실시 예들에서, 메모리 디바이스는 호스트에 의해 어드레싱 가능한 다수의 블록 버퍼들을 포함할 수 있고, 여기서 호스트는 블록 버퍼에서 판독 및/또는 기록 명령들을 수행하기 위해 명령을 전송할 수 있다. 블록 버퍼들의 크기는 호스트에 의해 프로그래밍될 수 있는 블록 구성 레지스터들에 의해 지시될 수 있다. 블록 버퍼들의 크기는 메모리 디바이스의 메모리 어레이의 블록의 크기와 매칭되도록 프로그래밍될 수 있다. 도 2a는 블록 구성 레지스터들의 블록 버퍼 어드레스 레지스터들(230-0 내지 232-R)를 도시하고, 도 2b는 블록 구성 레지스터들의 타겟 어드레스 레지스터들(232-0 내지 232-R)를 도시한다. 블록 구성 레지스터들은 관련된 블록 버퍼 어드레스 레지스터들과 타켓 어드레스 레지스터들의 쌍들을 포함한다. 각각의 블록 버퍼 어드레스 레지스터는 메모리 디바이스의 메모리 어레이 내의 타겟 어드레스와 연관된다. 대응하는 블록 버퍼 레지스터들의 정보에 의해 지시되는 블록 버퍼에 기록된 데이터는 데이터가 메모리에 커밋(commit)될 때 메모리 어레이의 연관된 타켓 어드레스에 기록된다. 블록 버퍼로부터 판독되는 데이터는 블록과 연관된 관련 타켓 어드레스에서 찾아져 이동된다. 각 블록 버퍼 어드레스 레지스터는 버퍼 시작 어드레스(235-0 내지 235-R), 버퍼 종료 어드레스(233-0 내지 233-R) 및 상태 정보(231-0 내지 231-R)를 포함할 수 있다. 각 버퍼에 대한 버퍼 시작 어드레스 및 버퍼 종료 어드레스는 버퍼의 크기를 결정하는 데 사용될 수 있다. 상태 정보는 블록 버퍼에 유효한 데이터가 있는지 여부, 명령과 연관된 데이터가 이동되었는지 여부 및/또는 블록 버퍼 데이터에 복구 가능한 오류 및/또는 치명적인 오류가 있는지 여부를 나타내는 정보를 포함할 수 있다. 또한 각 블록 버퍼에 대한 상태 정보를 저장하는 상태 레지스터가 있을 수 있으므로, 특정 블록 버퍼의 상태를 결정하기 위해 상태 레지스터만 판독될 필요가 있다.
도 2c는 블록 버퍼에서 연산을 수행하기 위한 명령(234)을 도시한다. 명령(234)은 명령이 블록 버퍼 상에서 수행될 것을 나타내는 블록 버퍼 윈도우 정보, 명령이 실행될 블록 버퍼를 나타내는 블록 버퍼 선택 정보, 및 명령과 연관된 데이터가 기록 및/또는 판독될 블록 버퍼 상의 어드레스를 나타내는 블록 버퍼 어드레스 정보를 포함한다.
도 3은 본 개시의 다수의 실시 예들에 따른 판독 증분 정보를 포함하는 판독 명령을 도시한다. 도 3에서, 판독 명령(344)은 판독 식별 번호(RID) 및 판독 증분 정보(RID_INC)를 포함할 수 있다. 판독 식별 번호는 명령을 식별하는 데 사용될 수 있다. 예를 들어, 호스트는 특정 판독 식별 번호를 명령에 할당하고 상기 명령을 메모리 디바이스에 전송할 수 있다. 메모리 디바이스는 판독 식별 번호를 명령에 할당할 수 있다. 메모리 디바이스는 명령에 할당할 판독 식별 번호를 추적하기 위한 카운터를 포함할 수 있다. 카운터는 0으로 초기화되고 판독 명령이 메모리 디바이스에 의해 수신될 때마다 1씩 증가된다. 명령들이 비-결정적 타이밍으로 실행되는 메모리 디바이스들에서, 명령들은 메모리 디바이스에 의해 임의의 순서로 실행될 수 있으므로 매번 카운터를 1씩 증가시키면 메모리 디바이스에 의해 특정 명령에 할당된 판독 식별 번호와 상이한, 호스트에 의해 특정 명령에 할당된 판독 식별 번호를 초래할 수 있다. 예를 들어, 호스트 및 메모리 디바이스는 각각 판독 명령들에 할당하기 위해 4 개의 이용 가능한 판독 식별 번호들을 가질 수 있고 임의의 주어진 판독 식별 번호는 임의의 주어진 시간에 오직 한번만 존재할 수 있다. 호스트가 4 개의 명령들 모두를 메모리 디바이스에 할당하여 전송했지만, 메모리 디바이스로부터 제1, 제2 및 제4 명령이 실행되었음을 나타내는 지시만을 수신하면, 호스트는 제3 식별 번호를 갖는 명령이 메모리 디바이스에 의해 실행될 때까지 제3 식별 번호를 다른 명령에 할당할 수 없다. 제1 및 제2 판독 식별 번호들은 호스트에 의해 다시 사용될 수 있지만, 제3 판독 식별 번호는 호스트에 의해 사용되어서는 안 된다. 판독 증분 정보는 판독 명령과 함께 송신되어 판독 식별 번호가 스킵(skip)되어야 한다는 것을 메모리 디바이스에 지시할 수 있다. 상기 예에서, 판독 증분 정보는 1의 판독 증분 양을 포함 할 수 있으며, 이는 제3 식별 번호가 스킵되어야 함을 나타낸다. 메모리 디바이스는 판독 증분 정보에 기초하여 명령에 할당하기 위해 식별 번호를 증가시킬 수 있고, 따라서 호스트에 의해 명령에 할당된 다음 이용 가능한 판독 식별 번호는 메모리 디바이스에 의해 명령에 할당될 것이다. 도 3에서, 메모리 디바이스(304)는 호스트(302)로부터 명령(344)을 수신할 수 있고, 추가 1 및 메모리 디바이스(304)에 의해 명령 할당된 가장 최근의 판독 식별 번호에 대한 판독 증분(RID_INC) 정보와 관련된 값에 기초하는 판독 식별 번호(345)를 할당할 수 있다.
도 4는 본 개시의 다수의 실시 예들에 따른 다수의 판독 명령들 및 배리어 명령을 도시한다. 도 4에서, 호스트(402)는 판독 명령(444-1, 444-2 및 444-3) 및 배리어 명령(446)을 메모리 디바이스(404)에 전송할 수 있다. 배리어 명령(446)은 배리어 명령(446) 이전에 메모리 디바이스(404)에 전송된 명령들(444-1, 444-2 및 444-4)이 배리어 명령(446) 후에 메모리 디바이스(404)에 전송된 명령들(444-4, 444-5 및 444-6) 전에 실행될 수 있음을 지시할 수 있다. 도 4에서, 판독 명령(444-3)이 실행되었음을 지시하는 판독 식별(RID3)(448-3)은 배리어 명령(446)이 메모리 디바이스로 전송되기 전에 호스트로 전송된다. 배리어 명령(446)은 임의의 후속 명령들 전에 판독 명령들(444-1 및 444-2)이 실행되어야 함을 지시한다. 호스트는 판독 명령(444-1 및 444-2) 후에 실행되는 배리어 명령(446) 이후에 판독 명령들(444-4, 444-5 및 444-6)을 메모리 디바이스에 전송한다. 메모리 디바이스는 판독 명령들(444-1 및 444-2)을 실행하고 판독 식별들(448-1 및 448-2)을 전송한다. 배리어 명령이 전에 메모리 디바이스로 전송된 모든 명령들이 일단 실행되면, 배리어 명령 후에 메모리 디바이스로 전송된 명령들이 실행될 수 있다. 따라서, 메모리 디바이스는 판독 명령들(444-4, 444-5, 444-6)을 실행하고 판독 식별들(448-4, 448-5 및 448-6)을 호스트(402)로 전송한다.
다수의 실시 예들에서, 배리어 명령들은 모든 유형의 명령들, 판독 명령들 또는 기록 명령들에만 적용될 수 있다. 예를 들어, 배리어 명령 이전에 전송된 모든 판독 명령이 배리어 명령에 후속하여 전송되는 임의의 판독 명령 전에 실행되도록 지시하기 위해 판독 배리어 명령이 전송될 수 있다. 배리어 명령들은 호스트에 의해 사용되어 메모리가 비-결정적 타이밍을 갖는 명령들을 실행할 때 명령들의 실행 타이밍을 제어할 수 있다.
도 5는 본 개시의 다수의 실시 예들에 따른 버스트 길이 정보(burst length information)를 포함하는 판독 명령 및 기록 명령을 도시한다. 도 5에서, 판독 명령(544)은 버스트 길이 지시를 포함할 수 있고 기록 명령(562)은 버스트 길이 지시를 포함할 수 있다. 버스트 길이는 판독 및/또는 기록 명령들의 지시를 통해 호스트에 의해 동적으로 변경될 수 있다. 버스트 길이 지시 명령은 버스트 길이 지시 명령을 포함하는 임의의 유형의 명령으로 호스트(502)에 의해 메모리 디바이스(504)로 전송될 수 있다. 버스트 길이는 명령과 관련된 데이터의 양, 명령의 유형, 명령이 실행될 메모리 디바이스의 유형, 및 레이턴시 또는 대역폭 최적화가 필요한지 여부에 기초하여 호스트에 의해 변경될 수 있다.
도 6a 내지 도 6d는 본 개시의 다수의 실시 예들에 따른 판독 버퍼 및 기록 버퍼의 크기를 지시하는 레지스터를 도시한다. 도 6a 및 도 6b에서, 레지스터는 다수의 판독 엔트리들(652-1 및 652-2) 및 다수의 기록 엔트리들(654-4 및 654-2)를 지시하도록 프로그래밍될 수 있다. 레지스터는 메모리 디바이스에 위치할 수 있으며 호스트는 레지스터를 프로그래밍할 수 있다. 레지스터에 지시된 판독 엔트리들(652-1 및 652-2)의 수 및 기록 엔트리들(654-4 및 654-2)의 수는 판독 버퍼 및 기록 버퍼의 크기를 제어하는데 사용될 수 있다. 예를 들어, 판독 엔트리 지시(651-1)는 특정 크기를 갖는 판독 버퍼(656-1)에 대응할 수 있고, 기록 엔트리 지시(654-1)는 특정 크기를 갖는 기록 버퍼(658-1)에 대응할 수 있다. 판독 버퍼(656-1)의 크기는 기록 버퍼(658-1)의 크기보다 작을 수 있다. 판독 엔트리 지시(651-2)는 특정 크기를 갖는 판독 버퍼(656-2)에 대응할 수 있고, 기록 엔트리 지시(654-2)는 특정 크기를 갖는 기록 버퍼(658-2)에 대응할 수 있다. 판독 버퍼(656-2)의 크기는 기록 버퍼(658-1) 및 판독 버퍼(656-1)의 크기보다 클 수 있다. 레지스터 내의 판독 엔트리 지시(652) 및 기록 엔트리 지시(654)는 호스트에 의해 발행되는 판독 및 기록 명령들의 상대적인 양에 기초하여 호스트에 의해 업데이트될 수 있다. 판독 엔트리 지시(652) 및 기록 엔트리 지시(654)는 현재 판독 및/또는 기록 버퍼 엔트리들이 업데이트 판독 및/또는 기록 지시에 의해 수용될 수 있을 때마다 업데이트될 수 있다.
다수의 실시 예들에서, 버퍼는 판독 및 기록 엔트리들 모두를 포함할 수 있고, 레지스터는 버퍼에 대한 판독 엔트리들의 임계 수 및 버퍼에 대한 기록 엔트리들의 임계 수를 정의하도록 프로그래밍될 수 있다. 호스트는 버퍼의 주요한 판독 엔트리들 및 기록 엔트리들의 수를 추적하여 버퍼가 레지스터에 의해 정의된 판독 엔트리들의 임계 수 및 기록 엔트리들의 임계 수보다 많은 엔트리들을 포함하지 않도록 할 수 있다. 레지스터는 버퍼에 대한 판독 엔트리들의 임계 수 및 버퍼에 대한 기록 엔트리들의 임계수를 변경하도록 업데이트될 수 있다.
특정 실시 예들이 본 명세서에 도시되고 설명되었지만, 당업자는 동일한 결과를 얻기 위해 계산된 배열이 도시된 특정 실시 예를 대체할 수 있다는 것을 이해할 것이다. 본 개시는 본 개시의 다양한 실시 예들의 적응들 또는 변형들을 포함하도록 의도된다. 상기 설명은 예시적인 방식으로 이루어졌으며 제한적인 것이 아님을 이해해야 한다. 상기 실시 예들의 조합 및 본원에서 구체적으로 기술되지 않은 다른 실시 예들은 상기 설명을 검토하면 당업자에게 명백할 것이다. 본 개시의 다양한 실시 예들의 범위는 상기 구조들 및 방법들이 사용되는 다른 어플리케이션들을 포함한다. 따라서, 본 개시의 다양한 실시 예들의 범위는 첨부된 청구 범위를 참조하여, 그러한 청구 범위가 부여되는 등가물의 전체 범위와 함께 결정되어야 한다.
전술한 상세한 설명에서, 다양한 특징들은 본 발명을 능률화할 목적으로 단일 실시 예에서 함께 그룹화된다. 본 개시의 방법은 본 개시의 개시된 실시 예들이 각 청구항에 명시적으로 언급된 것보다 많은 특징을 이용해야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하의 청구 범위가 반영하는 바와 같이, 발명의 주제는 단일 개시된 실시 예의 모든 특징보다 적다. 따라서, 이하의 청구 범위는 발명의 상세한 설명에 포함되며, 각 청구항은 별개의 실시 예로서 독자적으로 기재된다.

Claims (15)

  1. 장치로서,
    메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기
    를 포함하고,
    상기 제어기는 버퍼 레지스터를 업데이트하는 호스트로부터 수신된 명령들에 기초하여 상기 메모리 디바이스 상에서 연산들을 수행하도록 구성되고, 상기 버퍼 레지스터는 판독 엔트리들의 임계 수 및 기입 엔트리들의 임계 수의 용량을 갖도록 버퍼를 구성하는, 장치.
  2. 제1항에 있어서, 상기 제어기는 상기 버퍼 내의 판독 엔트리들의 수 및 기입 엔트리들의 수가 상기 판독 엔트리들의 임계 수 및 상기 기입 엔트리들의 임계 수 이하인 것을 보장하기 위해 상기 버퍼를 모니터링하는, 장치.
  3. 제1항에 있어서, 상기 버퍼 레지스터는 제1 특정 크기의 판독 버퍼 부분 및 제2 특정 크기의 기입 버퍼 부분을 갖는 버퍼를 구성하고, 상기 버퍼 레지스터는 상기 제1 특정 크기 및 상기 제2 특정 크기를 나타내도록 설정되는, 장치.
  4. 제3항에 있어서, 상기 호스트는 상기 판독 버퍼 부분 또는 상기 기입 버퍼 부분이 가득 차거나 부분적으로 비어 있는지에 기초하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하기 위한 후속 명령들을 전송하는, 장치.
  5. 제3항에 있어서, 상기 호스트는 상기 판독 버퍼 부분이 가득 차고 상기 기입 버퍼 부분이 부분적으로 비어 있는 것에 응답하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하기 위한 후속 명령들을 전송하는, 장치.
  6. 제3항에 있어서, 상기 호스트는 상기 판독 버퍼 부분이 부분적으로 비어 있고 상기 기입 버퍼 부분이 가득 차 있는 것에 응답하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하기 위한 후속 명령들을 전송하는, 장치.
  7. 방법으로서,
    메모리 디바이스에 대한 판독 엔트리들의 임계 수 및 기입 엔트리들의 임계 수의 용량을 나타내도록 버퍼 레지스터를 프로그래밍하는 단계를 포함하고,
    상기 판독 엔트리들의 임계 수는 호스트에 의해 전송되는 판독 명령들의 수 및 상기 호스트에 의해 전송되는 기입 명령들의 수에 기초하는, 방법.
  8. 제7항에 있어서, 상기 버퍼 내의 판독 엔트리들의 수 및 기입 엔트리들의 수가 상기 판독 엔트리들의 임계 수 및 상기 기입 엔트리들의 임계 수 이하인 것을 보장하기 위해 상기 버퍼를 모니터링하는 단계를 더 포함하는, 방법.
  9. 제7항에 있어서, 제1 특정 크기의 판독 버퍼 부분 및 제2 특정 크기의 기입 버퍼 부분을 갖는 버퍼를 구성하는 단계를 더 포함하고, 상기 버퍼 레지스터는 상기 제1 특정 크기 및 상기 제2 특정 크기를 나타내도록 설정되는, 방법.
  10. 제9항에 있어서, 상기 판독 버퍼 부분 또는 상기 기입 버퍼 부분이 가득 차거나 부분적으로 비어 있는지에 기초하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하는 단계를 더 포함하는, 방법.
  11. 제9항에 있어서, 상기 판독 버퍼 부분이 가득 차고 상기 기입 버퍼 부분이 부분적으로 비어 있는 것에 응답하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하는 단계를 더 포함하는, 방법.
  12. 제9항에 있어서, 상기 판독 버퍼 부분이 부분적으로 비어 있고 상기 기입 버퍼 부분이 가득 차 있는 것에 응답하여 상기 판독 버퍼 부분을 제3 특정 크기로 그리고 상기 기입 버퍼 부분을 제4 특정 크기로 구성하는 상기 버퍼 레지스터를 업데이트하는 단계를 더 포함하는, 방법.
  13. 장치로서,
    메모리 디바이스; 및
    상기 메모리 디바이스에 결합된 제어기
    를 포함하고,
    상기 제어기는,
    판독 엔트리들의 임계 수 및 기입 엔트리들의 임계 수의 용량을 갖도록 버퍼를 구성하는 버퍼 레지스터를 프로그래밍하고;
    상기 버퍼 내의 판독 엔트리들의 수 및 기입 엔트리들의 수가 상기 판독 엔트리들의 임계 수 및 상기 기입 엔트리들의 임계 수 이하인 것을 보장하기 위해 상기 버퍼를 모니터링하도록 구성되는, 장치.
  14. 제13항에 있어서, 상기 버퍼 레지스터는 제1 특정 크기의 판독 버퍼 부분 및 제2 특정 크기의 기입 버퍼 부분을 갖는 버퍼를 구성하고, 상기 버퍼 레지스터는 상기 제1 특정 크기 및 상기 제2 특정 크기를 나타내도록 설정되는, 장치.
  15. 제13항에 있어서, 상기 제어기는, 상기 버퍼 내의 미처리된 판독 엔트리들 및 기입 엔트리들의 수가 상기 레지스터에 의해 정의되는 상기 판독 엔트리들의 임계 수 및 상기 기입 엔트리들의 임계 수보다 큰 것에 응답하여, 상기 판독 엔트리들의 임계 수 및 상기 기입 엔트리들의 임계 수를 변경하도록 구성되는, 장치.
KR1020227030944A 2016-06-06 2017-05-25 메모리 프로토콜 KR20220127374A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201662346201P 2016-06-06 2016-06-06
US62/346,201 2016-06-06
US15/182,821 2016-06-15
US15/182,821 US10534540B2 (en) 2016-06-06 2016-06-15 Memory protocol
PCT/US2017/034487 WO2017213876A1 (en) 2016-06-06 2017-05-25 Memory protocol
KR1020217042417A KR102442495B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217042417A Division KR102442495B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜

Publications (1)

Publication Number Publication Date
KR20220127374A true KR20220127374A (ko) 2022-09-19

Family

ID=60483878

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020227030944A KR20220127374A (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020207033373A KR102299721B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020217042417A KR102442495B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020187037846A KR102183016B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020217028132A KR102344768B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜

Family Applications After (4)

Application Number Title Priority Date Filing Date
KR1020207033373A KR102299721B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020217042417A KR102442495B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020187037846A KR102183016B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜
KR1020217028132A KR102344768B1 (ko) 2016-06-06 2017-05-25 메모리 프로토콜

Country Status (6)

Country Link
US (3) US10534540B2 (ko)
EP (1) EP3465449B1 (ko)
KR (5) KR20220127374A (ko)
CN (2) CN115525587A (ko)
TW (2) TWI744632B (ko)
WO (1) WO2017213876A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10585624B2 (en) 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
US11003602B2 (en) 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
KR102340094B1 (ko) * 2017-03-31 2021-12-17 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US10635613B2 (en) 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
JP2018205859A (ja) * 2017-05-31 2018-12-27 キヤノン株式会社 メモリコントローラとその制御方法
US11132145B2 (en) 2018-03-14 2021-09-28 Apple Inc. Techniques for reducing write amplification on solid state storage devices (SSDs)
US11474741B1 (en) * 2020-06-30 2022-10-18 Amazon Technologies, Inc. Storage device write barriers
US20220206946A1 (en) * 2020-12-28 2022-06-30 Advanced Micro Devices, Inc. Method and apparatus for managing a cache directory
US20230376206A1 (en) * 2021-03-19 2023-11-23 Micron Technology, Inc. Write booster buffer flush operation
US11941291B2 (en) * 2021-09-02 2024-03-26 Micron Technology, Inc. Memory sub-system command fencing

Family Cites Families (146)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4467411A (en) * 1981-03-06 1984-08-21 International Business Machines Corporation Scheduling device operations in a buffered peripheral subsystem
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
JPH0561748A (ja) 1991-09-02 1993-03-12 Nippon Telegr & Teleph Corp <Ntt> データベース・アクセスにおける同期確認の自動化方式
US5452311A (en) * 1992-10-30 1995-09-19 Intel Corporation Method and apparatus to improve read reliability in semiconductor memories
DE69300523T2 (de) * 1993-11-26 1996-03-14 Sgs Thomson Microelectronics Prozessorschnittstellenschaltung zum Austausch von seriellen digitalen Daten mit einem Peripheriegerät.
US5574944A (en) 1993-12-15 1996-11-12 Convex Computer Corporation System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context
JP3435267B2 (ja) * 1995-11-07 2003-08-11 株式会社東芝 マイクロプロセッサ及びそのロードアドレス予想方法
US5915265A (en) 1995-12-22 1999-06-22 Intel Corporation Method and apparatus for dynamically allocating and resizing the dedicated memory in a shared memory buffer architecture system
US5774683A (en) * 1996-10-21 1998-06-30 Advanced Micro Devices, Inc. Interconnect bus configured to implement multiple transfer protocols
US5937423A (en) * 1996-12-26 1999-08-10 Intel Corporation Register interface for flash EEPROM memory arrays
US6370619B1 (en) 1998-06-22 2002-04-09 Oracle Corporation Managing partitioned cache
US6349363B2 (en) 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
US6370614B1 (en) 1999-01-26 2002-04-09 Motive Power, Inc. I/O cache with user configurable preload
US7007099B1 (en) * 1999-05-03 2006-02-28 Lucent Technologies Inc. High speed multi-port serial-to-PCI bus interface
US6775790B2 (en) * 2000-06-02 2004-08-10 Hewlett-Packard Development Company, L.P. Distributed fine-grained enhancements for distributed table driven I/O mapping
US6609192B1 (en) * 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
EP1215577B1 (en) 2000-08-21 2012-02-22 Texas Instruments Incorporated Fault management and recovery based on task-ID
FR2821478A1 (fr) * 2001-02-23 2002-08-30 St Microelectronics Sa Procede et dispositif de lecture sequentielle d'une memoire avec saut d'adresse
US6832280B2 (en) 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
US6738831B2 (en) 2001-12-12 2004-05-18 Intel Corporation Command ordering
US6957308B1 (en) 2002-07-11 2005-10-18 Advanced Micro Devices, Inc. DRAM supporting different burst-length accesses without changing the burst length setting in the mode register
US7308524B2 (en) * 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
JP3808837B2 (ja) * 2003-03-11 2006-08-16 株式会社東芝 キャッシュメモリーシステム
US7058764B2 (en) 2003-04-14 2006-06-06 Hewlett-Packard Development Company, L.P. Method of adaptive cache partitioning to increase host I/O performance
US7139878B2 (en) 2003-06-20 2006-11-21 Freescale Semiconductor, Inc. Method and apparatus for dynamic prefetch buffer configuration and replacement
US7480754B2 (en) 2003-06-27 2009-01-20 Seagate Technology, Llc Assignment of queue execution modes using tag values
KR100557215B1 (ko) 2003-08-19 2006-03-10 삼성전자주식회사 유에스비 디바이스의 엔드포인트 제어 장치 및 그 방법
KR100560773B1 (ko) 2003-10-09 2006-03-13 삼성전자주식회사 동작 모드의 재설정없이 버스트 길이를 제어할 수 있는반도체 메모리 장치 및 그것을 포함하는 메모리 시스템
US7826614B1 (en) * 2003-11-05 2010-11-02 Globalfoundries Inc. Methods and apparatus for passing initialization vector information from software to hardware to perform IPsec encryption operation
US7657706B2 (en) * 2003-12-18 2010-02-02 Cisco Technology, Inc. High speed memory and input/output processor subsystem for efficiently allocating and using high-speed memory and slower-speed memory
US7103803B2 (en) 2004-01-08 2006-09-05 International Business Machines Corporation Method for verification of command processing in a computer system design having a multiple priority command queue
US7519788B2 (en) * 2004-06-04 2009-04-14 Micron Technology, Inc. System and method for an asynchronous data buffer having buffer write and read pointers
US8082382B2 (en) 2004-06-04 2011-12-20 Micron Technology, Inc. Memory device with user configurable density/performance
US7536506B2 (en) 2004-06-21 2009-05-19 Dot Hill Systems Corporation RAID controller using capacitor energy source to flush volatile cache data to non-volatile memory during main power outage
US7243200B2 (en) * 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
US7574536B2 (en) 2005-04-22 2009-08-11 Sun Microsystems, Inc. Routing direct memory access requests using doorbell addresses
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
US7516247B2 (en) * 2005-08-12 2009-04-07 Advanced Micro Devices, Inc. Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
CA2625318C (en) * 2006-01-05 2010-09-28 X-Ray Flux Pty Ltd Nickel flux composition
US7574565B2 (en) * 2006-01-13 2009-08-11 Hitachi Global Storage Technologies Netherlands B.V. Transforming flush queue command to memory barrier command in disk drive
US7917676B2 (en) * 2006-03-10 2011-03-29 Qualcomm, Incorporated Efficient execution of memory barrier bus commands with order constrained memory accesses
US7469329B2 (en) 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
JP4895183B2 (ja) 2006-07-21 2012-03-14 キヤノン株式会社 メモリコントローラ
US7711889B2 (en) 2006-07-31 2010-05-04 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
US8074022B2 (en) 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US20090276556A1 (en) 2006-10-04 2009-11-05 Mediatek Inc. Memory controller and method for writing a data packet to or reading a data packet from a memory
US7904644B1 (en) * 2006-11-01 2011-03-08 Marvell International Ltd. Disk channel system with sector request queue
US20080162735A1 (en) 2006-12-29 2008-07-03 Doug Voigt Methods and systems for prioritizing input/outputs to storage devices
US20080189501A1 (en) * 2007-02-05 2008-08-07 Irish John D Methods and Apparatus for Issuing Commands on a Bus
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
KR100904758B1 (ko) * 2007-02-08 2009-06-29 삼성전자주식회사 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법
US7924521B1 (en) * 2007-04-10 2011-04-12 Marvell International Ltd. Data wedge format table synchronization
US7996599B2 (en) 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US7984202B2 (en) * 2007-06-01 2011-07-19 Qualcomm Incorporated Device directed memory barriers
US7899999B2 (en) 2007-06-27 2011-03-01 Microsoft Corporation Handling falsely doomed parents of nested transactions
US8006047B2 (en) 2007-06-27 2011-08-23 Hitachi Global Storage Technologies Netherlands B.V. Storage device with write barrier sensitive write commands and write barrier insensitive commands
US8438356B2 (en) * 2007-10-01 2013-05-07 Marvell World Trade Ltd. Flash memory controller
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US9513959B2 (en) 2007-11-21 2016-12-06 Arm Limited Contention management for a hardware transactional memory
TW200929237A (en) * 2007-12-21 2009-07-01 Winbond Electronics Corp Memory architecture and configuration method thereof
US20090327535A1 (en) 2008-06-30 2009-12-31 Liu Tz-Yi Adjustable read latency for memory device in page-mode access
JP4631948B2 (ja) * 2008-08-13 2011-02-16 日本電気株式会社 情報処理装置及び順序保証方式
US8332608B2 (en) 2008-09-19 2012-12-11 Mediatek Inc. Method of enhancing command executing performance of disc drive
TW201013400A (en) 2008-09-22 2010-04-01 Promise Technology Inc Memory control system, data recovery method and date reading method thereof
KR101525872B1 (ko) 2008-11-06 2015-06-04 삼성전자주식회사 반도체 메모리 시스템의 동작 방법
GB2465611B (en) * 2008-11-25 2011-04-27 British Broadcasting Corp Interleaving or de-interleaving of data of variable rate
KR20110131208A (ko) * 2009-02-09 2011-12-06 램버스 인코포레이티드 동기화된 제어를 갖는 다중 플레인의 비휘발성 메모리
US7983107B2 (en) 2009-02-11 2011-07-19 Stec, Inc. Flash backed DRAM module with a selectable number of flash chips
US8285917B2 (en) * 2009-03-26 2012-10-09 Scaleo Chip Apparatus for enhancing flash memory access
US8352682B2 (en) * 2009-05-26 2013-01-08 Qualcomm Incorporated Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system
CN101908368A (zh) 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
US8250332B2 (en) 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory
US9324175B2 (en) * 2009-09-11 2016-04-26 Nvidia Corporation Memory coherency in graphics command streams and shaders
TWI454906B (zh) 2009-09-24 2014-10-01 Phison Electronics Corp 資料讀取方法、快閃記憶體控制器與儲存系統
WO2011043012A1 (ja) * 2009-10-05 2011-04-14 パナソニック株式会社 不揮発性半導体記憶装置、信号処理システム、及び信号処理システムの制御方法、並びに不揮発性半導体記憶装置の書き換え方法
JP2011234308A (ja) 2010-04-30 2011-11-17 Toshiba Corp 通信装置、この通信装置に搭載されるプログラマブルデバイス及びそのプログラム書き込み制御方法
US9104583B2 (en) 2010-06-24 2015-08-11 International Business Machines Corporation On demand allocation of cache buffer slots
US8499106B2 (en) 2010-06-24 2013-07-30 Arm Limited Buffering of a data stream
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US8949502B2 (en) 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
JP5296041B2 (ja) 2010-12-15 2013-09-25 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
EP2656216B1 (en) 2010-12-20 2018-12-19 Marvell World Trade Ltd. Device with descriptor scheduler and corresponding method and system
US9779020B2 (en) 2011-02-08 2017-10-03 Diablo Technologies Inc. System and method for providing an address cache for memory map learning
JP2012234363A (ja) 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US8560778B2 (en) 2011-07-11 2013-10-15 Memory Technologies Llc Accessing data blocks with pre-fetch information
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US8700834B2 (en) 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US8799557B1 (en) 2011-10-13 2014-08-05 Netapp, Inc. System and method for non-volatile random access memory emulation
WO2013070214A1 (en) * 2011-11-09 2013-05-16 Intel Corporation Method, apparatus, and system to handle transactions received after a configuration change request
US8880819B2 (en) * 2011-12-13 2014-11-04 Micron Technology, Inc. Memory apparatuses, computer systems and methods for ordering memory responses
KR101366960B1 (ko) 2011-12-23 2014-02-25 한양대학교 산학협력단 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법
US9134919B2 (en) 2012-03-29 2015-09-15 Samsung Electronics Co., Ltd. Memory device including priority information and method of operating the same
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9347254B2 (en) * 2012-05-04 2016-05-24 The Chamberlain Group, Inc. Command priority levels for an access controller apparatus
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US8930636B2 (en) * 2012-07-20 2015-01-06 Nvidia Corporation Relaxed coherency between different caches
US9128845B2 (en) 2012-07-30 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamically partition a volatile memory for a cache and a memory partition
JP6053384B2 (ja) 2012-08-08 2016-12-27 キヤノン株式会社 情報処理装置、メモリ制御装置およびその制御方法
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US20140143476A1 (en) * 2012-11-16 2014-05-22 Rotem Sela Usage of cache and write transaction information in a storage device
US9501332B2 (en) * 2012-12-20 2016-11-22 Qualcomm Incorporated System and method to reset a lock indication
US9250814B2 (en) 2013-02-11 2016-02-02 Apple Inc. Command order re-sequencing in non-volatile memory
US8595427B1 (en) 2013-03-08 2013-11-26 Avalanche Technology, Inc. Non-volatile block storage module using magnetic random access memory (MRAM)
US9128634B1 (en) 2013-03-11 2015-09-08 Marvell International Ltd. Systems and methods of packed command management for non-volatile storage devices
US9741442B2 (en) 2013-03-12 2017-08-22 Sandisk Technologies Llc System and method of reading data from memory concurrently with sending write data to the memory
US20150378884A1 (en) 2013-04-08 2015-12-31 Avalanche Technology, Inc. Storage system controlling addressing of solid storage disks (ssd)
US9418010B2 (en) * 2013-04-17 2016-08-16 Apple Inc. Global maintenance command protocol in a cache coherent system
JP6146128B2 (ja) 2013-05-20 2017-06-14 ヤマハ株式会社 データ処理装置
EP3005128B1 (en) 2013-05-30 2018-07-04 Hewlett-Packard Enterprise Development LP Separate memory controllers to access data in memory
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US10108539B2 (en) * 2013-06-13 2018-10-23 International Business Machines Corporation Allocation of distributed data structures
US9423959B2 (en) * 2013-06-29 2016-08-23 Intel Corporation Method and apparatus for store durability and ordering in a persistent memory architecture
TWI493455B (zh) 2013-07-02 2015-07-21 Phison Electronics Corp 命令佇列管理方法、記憶體控制器及記憶體儲存裝置
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
US20150067291A1 (en) 2013-08-30 2015-03-05 Kabushiki Kaisha Toshiba Controller, memory system, and method
CN105940381B (zh) 2013-12-26 2019-11-15 英特尔公司 存储器控制器和由存储器控制器执行的方法
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9323610B2 (en) 2014-01-30 2016-04-26 Sandisk Technologies Inc. Non-blocking commands
US9454310B2 (en) 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
US10191822B2 (en) 2014-02-20 2019-01-29 Rambus Inc. High performance persistent memory
US20150279463A1 (en) 2014-03-31 2015-10-01 Dell Products, L.P. Adjustable non-volatile memory regions of dram-based memory module
KR102126760B1 (ko) 2014-04-07 2020-06-25 삼성전자 주식회사 비휘발성 메모리 장치의 구동 방법
KR102249416B1 (ko) 2014-06-11 2021-05-07 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 구동 방법
US9870318B2 (en) * 2014-07-23 2018-01-16 Advanced Micro Devices, Inc. Technique to improve performance of memory copies and stores
US9489239B2 (en) 2014-08-08 2016-11-08 PernixData, Inc. Systems and methods to manage tiered cache data storage
US9721660B2 (en) 2014-10-24 2017-08-01 Microsoft Technology Licensing, Llc Configurable volatile memory without a dedicated power source for detecting a data save trigger condition
US20160170767A1 (en) * 2014-12-12 2016-06-16 Intel Corporation Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor
US20160232112A1 (en) * 2015-02-06 2016-08-11 Futurewei Technologies, Inc. Unified Memory Bus and Method to Operate the Unified Memory Bus
US20170024297A1 (en) 2015-07-22 2017-01-26 Kabushiki Kaisha Toshiba Storage Device and Data Save Method
US9996262B1 (en) * 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command
US20170160929A1 (en) 2015-12-02 2017-06-08 Hewlett Packard Enterprise Development Lp In-order execution of commands received via a networking fabric
US9792051B2 (en) * 2016-02-24 2017-10-17 Samsung Electronics Co., Ltd. System and method of application aware efficient IO scheduler
US10613763B2 (en) * 2016-04-21 2020-04-07 Adesto Technologies Corporation Memory device having multiple read buffers for read latency reduction
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10359955B2 (en) * 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
US10261907B2 (en) * 2017-03-09 2019-04-16 International Business Machines Corporation Caching data in a redundant array of independent disks (RAID) storage system
US11194524B2 (en) * 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US10691619B1 (en) * 2017-10-18 2020-06-23 Google Llc Combined integrity protection, encryption and authentication
CN110033799A (zh) * 2018-01-12 2019-07-19 三星电子株式会社 基于屏障命令按顺序存储数据的存储设备
US11016890B2 (en) * 2018-02-05 2021-05-25 Micron Technology, Inc. CPU cache flushing to persistent memory
US10613983B2 (en) * 2018-03-20 2020-04-07 Advanced Micro Devices, Inc. Prefetcher based speculative dynamic random-access memory read request technique
US10671486B2 (en) * 2018-07-25 2020-06-02 International Business Machines Corporation Flashcopy tracking for storage optimization

Also Published As

Publication number Publication date
US11340787B2 (en) 2022-05-24
EP3465449B1 (en) 2023-07-05
TW201935246A (zh) 2019-09-01
CN109313620A (zh) 2019-02-05
CN109313620B (zh) 2022-11-01
WO2017213876A1 (en) 2017-12-14
TWI662408B (zh) 2019-06-11
EP3465449A1 (en) 2019-04-10
US20170351433A1 (en) 2017-12-07
KR20210113690A (ko) 2021-09-16
EP3465449A4 (en) 2020-07-22
KR20190003821A (ko) 2019-01-09
TWI744632B (zh) 2021-11-01
KR102299721B1 (ko) 2021-09-10
US11947796B2 (en) 2024-04-02
KR20200133822A (ko) 2020-11-30
KR102442495B1 (ko) 2022-09-14
KR102183016B1 (ko) 2020-11-26
US10534540B2 (en) 2020-01-14
US20200125263A1 (en) 2020-04-23
KR102344768B1 (ko) 2021-12-31
US20220276786A1 (en) 2022-09-01
CN115525587A (zh) 2022-12-27
TW201807575A (zh) 2018-03-01
KR20220000931A (ko) 2022-01-04

Similar Documents

Publication Publication Date Title
KR102442495B1 (ko) 메모리 프로토콜
US20220398200A1 (en) Memory protocol with programmable buffer and cache size
US20200201793A1 (en) Memory controller
US11586566B2 (en) Memory protocol with command priority
US11226770B2 (en) Memory protocol
US11687283B2 (en) Memory module interfaces

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application