KR102307229B1 - 명령 우선 순위를 이용하는 메모리 프로토콜 - Google Patents

명령 우선 순위를 이용하는 메모리 프로토콜 Download PDF

Info

Publication number
KR102307229B1
KR102307229B1 KR1020197024511A KR20197024511A KR102307229B1 KR 102307229 B1 KR102307229 B1 KR 102307229B1 KR 1020197024511 A KR1020197024511 A KR 1020197024511A KR 20197024511 A KR20197024511 A KR 20197024511A KR 102307229 B1 KR102307229 B1 KR 102307229B1
Authority
KR
South Korea
Prior art keywords
rid
priority
command
registers
numbers
Prior art date
Application number
KR1020197024511A
Other languages
English (en)
Other versions
KR20190101494A (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 KR20190101494A publication Critical patent/KR20190101494A/ko
Application granted granted Critical
Publication of KR102307229B1 publication Critical patent/KR102307229B1/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
    • 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/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0629Configuration or reconfiguration of storage systems
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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

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)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)
  • Dram (AREA)

Abstract

본 발명은 명령 우선 순위를 이용하는 메모리 프로토콜에 관한 장치들 및 방법들을 포함한다. 예시적인 장치는 레지스터의 판독 식별(read identification, RID) 번호에 부여되는 우선 순위에 기초하여 RID 번호를 포함하는 명령을 실행할 수 있다. 상기 장치는 비휘발성 듀얼 인라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM) 소자일 수 있다.

Description

명령 우선 순위를 이용하는 메모리 프로토콜
본 발명은 일반적으로 메모리 소자들, 더 상세하게는 명령 우선 순위를 이용하는 메모리 프로토콜에 대한 장치들 및 방법들에 관한 것이다.
메모리 소자들은 통상적으로 컴퓨터들 또는 그 외 다른 전자 기기들에 내부, 반도체, 집적 회로들로서 제공된다. 휘발성 및 비-휘발성 메모리를 비롯한 많은 상이한 유형의 메모리가 있다. 휘발성 메모리는 그것의 데이터를 유지하는데 전력을 필요로 할 수 있고 다른 것들 중에서도, 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM) 및 동기식 동적 랜덤 액세스 메모리(SRDAM)를 포함한다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지함으로써 영구 데이터를 제공할 수 있고 다른 것들 중에서도, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거 가능 프로그램 가능 ROM(EEPROM), 소거 가능 프로그램 가능 ROM(EPROM) 및 가변 저항 메모리 이를테면 상 변화 랜덤 액세스 메모리(PCRAM), 저항 랜덤 액세스 메모리(RRAM) 및 자기 저항 랜덤 액세스 메모리(MRAM)를 포함할 수 있다.
또한 메모리는 광범위한 전자 분야의 휘발성 및 비휘발성 데이터 저장소로도 이용된다. 비휘발성 메모리는 예를 들어, 개인용 컴퓨터들, 휴대용 메모리 스틱들, 디지털 카메라들, 휴대 전화들, 휴대용 음악 플레이어들 이를테면 MP3 플레이어들, 영화 플레이어들 및 그 외 다른 전자 기기들에 사용될 수 있다. 메모리 셀들은 어레이들로 배열될 수 있으며, 어레이들이 메모리 소자들에 사용된다.
메모리는 컴퓨팅 기기들에 사용되는 메모리 모듈(예를 들어, 듀얼 인라인 메모리 모듈(DIMM))의 부분일 수 있다. 메모리 모듈들은 예를 들어, DRAM과 같은 휘발성 및/또는 예를 들어, 플래시 메모리 또는 RRAM과 같은 비휘발성 메모리를 포함할 수 있다. DIMM들은 컴퓨팅 시스템들의 주 메모리를 사용하는 것일 수 있다.
도 1a는 본 발명의 다수의 실시예에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템 형태의 장치의 블록도이다.
도 1b는 본 발명의 다수의 실시예에 따른 듀얼 인라인 메모리 모듈들(DIMM) 형태의 장치의 블록도이다.
도 2a 및 도 2b는 본 발명의 다수의 실시예에 따른 다수의 동작의 도해들이다.
도 3a 내지 도 3d는 본 발명의 다수의 실시예에 따른 다수의 레지스터의 도해들이다.
본 발명은 명령 우선 순위를 이용하는 메모리 프로토콜에 관한 장치들 및 방법들을 포함한다. 예시적인 장치는 레지스터의 판독 식별(read identification, RID) 번호에 부여되는 우선 순위에 기초하여 RID 번호를 포함하는 명령을 실행할 수 있다.
다수의 실시예에서, 호스트가 장치에 다수의 명령을 전송할 수 있다. 다수의 명령의 각각에 다수의 명령와 연관된 우선 순위를 결정하는데 사용될 수 있는 판독 식별(RID) 번호들이 부여될 수 있다. 장치는 레지스터 또는 다수의 레지스터에서 다수의 명령에 대한 우선 순위의 위치를 찾을 수 있다. 레지스터(들)는 RID 범위에 부여된 우선 순위들을 가질 수 있다. 장치는 레지스터(들)의 우선 순위 정보에 기초하여 가장 높은 우선 순위에서 가장 낮은 우선 순위로 명령들을 실행할 수 있다. 레지스터(들)는 RID 범위들에 부여된 우선 순위 정보를 변경하도록 호스트에 의해 업데이트될 수 있다. 레지스터들은 또한 우선 순위 정보가 부여된 RID 범위들을 변경하도록 호스트에 의해 업데이트될 수도 있다. 레지스터(들)는 장치에 전송된 명령들이 레지스터(들)의 우선 순위 정보에 기초하여 실행되도록, 명령들이 장치에 전송되기 전 호스트에 의해 업데이트될 수 있다. 레지스터(들)는 장치에 전송된 명령들의 우선 순위가 변경되고 레지스터(들)의 업데이트된 우선 순위 정보에 기초하여 실행되도록, 명령들이 장치에 전송된 후 호스트에 의해 업데이트될 수 있다.
이하의 발명을 실시하기 위한 구체적인 내용에서, 본 발명의 부분을 형성하고, 본 발명의 하나 이상의 실시 예가 어떻게 실시될 수 있는지가 예로서 도시되는 첨부 도면들이 참조된다. 이러한 실시예들은 해당 기술분야의 통상의 기술자들이 본 발명의 실시 예들을 실시할 수 있게 하기에 충분히 상세하게 설명되고, 그 외 다른 실시 예들이 이용될 수 있고, 프로세스, 전기적 그리고/또는 구조적 변경들이 본 발명의 범위에서 벗어나지 않고 이루어질 수 있는 것으로 이해되어야 한다. 본 명세서에서 사용될 때, 지정자 "N"은 그렇게 지정된 다수의 특정 피처가 본 발명의 다수의 실시예에 포함될 수 있음을 나타낸다.
본 명세서에서 사용될 때, "다수의" 어떤 것은 하나 이상의 그러한 것을 지칭할 수 있다. 예를 들어, 다수의 메모리 소자는 하나 이상의 메모리 소자를 지칭할 수 있다. 또한, 특히 도면들에서의 참조 부호들에 대한 "N"과 같은 지정자들은 본 명세서에서 사용될 때, 그렇게 지정된 다수의 특정 피처가 본 발명의 다수의 실시예에 포함될 수 있음을 나타낸다.
본 명세서에에서의 도면들은 첫 번째 숫자 또는 숫자들이 도면 번호에 상응하고 나머지 숫자들이 도면에서의 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 상이한 도면들 간 유사한 요소들 또는 구성요소들은 유사한 숫자들을 사용함으로써 식별될 수 있다. 이해될 바와 같이, 본 명세서에서의 다양한 실시예에 도시된 요소들은 본 발명의 다수의 추가 실시예를 제공하기 위해 추가, 교환 및/또는 제거될 수 있다. 또한, 도면들에 제공된 요소들의 비율 및 상대적인 축척은 본 발명의 다양한 실시 예를 예시하려는 것이고 제한적인 의미로 사용되어서는 안 된다.
도 1a는 본 발명의 다수의 실시예에 따른 다수의 메모리 시스템(104-1...104-N) 형태의 장치를 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 본 명세서에서 사용될 때, "장치"는 예를 들어, 회로 또는 회로들, 다이 또는 다이들, 모듈 또는 모듈들, 기기 또는 기기들, 또는 시스템 또는 시스템들과 같은 다양한 구조체 또는 구조체들의 조합 중 임의의 구조체를 지칭할 수 있으나, 이에 제한되지는 않는다. 도 1a에 도시된 실시 예에서, 메모리 시스템들(104-1...104-N)은 예를 들어, 듀얼 인라인 메모리 모듈들(DIMM)(110-1,...,110-X, 110-Y)과 같은 하나 이상의 메모리 모듈을 포함할 수 있다. 메모리 시스템들(104-1...104-N)은 메모리를 갖는 DIMM들과 같은 임의의 유형의 메모리 소자를 포함할 수 있으며, 이는 도 1a 및 도 1b와 연관되어 설명될 것이다. DIMM들(110-1,...,110-X, 110-Y)은 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 다수의 실시 예에서, 메모리 시스템들(104-1,..., 104-N)은 멀티-칩 소자를 포함할 수 있다. 멀티-칩 소자는 다수의 상이한 메모리 유형 및/또는 메모리 모듈을 포함할 수 있다. 예를 들어, 메모리 시스템은 임의의 유형의 모듈 상에 비휘발성 또는 휘발성 메모리를 포함할 수 있다. 도 1a 내지 도 5와 연관되어 후술될 예들은 DIMM을 메모리 모듈로서 사용하지만, 본 발명의 프로토콜은 메모리가 비결정적 명령들을 실행할 수 있는 임의의 메모리 시스템 상에서도 사용될 수 있다. 도 1a에서 채널(112-1)을 통해 호스트에 접속되는 메모리 시스템(104-1)은 DIMM들(110-1, . . ., 110-X)을 포함할 수 있으며, 이때 DIMM(110-1)은 NVDIMM이고 110-X는 DRAM DIMM이다. 이러한 예에서, 각각의 DIMM(110-1,...,110-X, 110-Y)은 제어기(114)를 포함한다. 제어기(114)는 호스트(102)로부터 명령들을 수신하고 DIMM 상 명령들의 실행을 제어할 수 있다. 또한, 다수의 실시 예에서, 본 발명의 프로토콜은 제어기 없이 메모리 소자(예를 들어, DIMM)에 의해 구현될 수 있고 본 발명의 프로토콜을 사용하는 명령들의 실행은 메모리 소자에 적용될 수 있다. 호스트(102)는 DIMM의 메모리의 유형에 따라, 본 발명의 프로토콜 및/또는 이전 프로토콜을 사용하여 DIMM들(110-1, . . ., 110-X, 110-Y)에 명령들을 전송할 수 있다. 예를 들어, 호스트는 본 발명의 프로토콜을 사용하여 동일한 채널(예를 들어, 채널(112-1)) 상에서 NVDIMM과 통신하고 이전 프로토콜을 사용하여 양자가 동일한 메모리 시스템 상에 있는 DRAM DIMM과 통신할 수 있다. 호스트 및 NVDIMM은 본 발명의 프로토콜에 따라 판독 준비(R_RDY) 신호들, 판독 전송(R_SEND) 신호들, 기록 크레딧 증가(WC_INC) 신호들 및 판독 식별(RID) 신호들을 통해 통신할 수 있다. 판독 준비(R_RDY) 신호들, 판독 전송(R_SEND) 신호들, 기록 크레딧 증가(WC_INC) 신호들 및 판독 식별(RID) 신호들은 이전 프로토콜(예를 들어, DDR4)에서 사용되지 않은 핀들 또는 본 발명의 프로토콜이 이전 프로토콜(예를 들어, DDR4)과 호환 가능하도록 용도 변경되는(예를 들어, 상이하게 사용되는) 이전 프로토콜로부터의 핀들을 통해 전송될 수 있다. 또한, 핀들은 개발되고 있는 프로토콜들(예를 들어, DDR5)로 판독 준비(R_RDY) 신호들, 판독 전송(R_SEND) 신호들, 기록 크레딧 증가(WC_INC) 신호들 및 판독 식별(RID) 신호들에 부여될 수 있다.
도 1a에 도시된 바와 같이, 호스트(102)는 메모리 시스템들(104-1 ... 104-N)에 접속될 수 있다. 다수의 실시 예에서, 각각의 메모리 시스템(104-1 ... 104-N)은 채널을 통해 호스트(102)에 접속될 수 있다. 도 1a에서, 메모리 시스템(104-1)은 채널(112-1)을 통해 호스트(102)에 접속되고 메모리 시스템(104-N)은 채널(112-N)을 통해 호스트(102)에 접속된다. 호스트(102)는 그 외 다른 다른 호스트 시스템들 중에서도, 랩탑 컴퓨터, 개인용 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 기기, 이동 전화, PDA, 메모리 카드 판독기, 인터페이스 허브일 수 있고, 메모리 액세스 기기, 예를 들어, 프로세서를 포함할 수 있다. 해당 기술분야의 통상의 기술자는 "프로세서"가 하나 이상의 프로세서, 이를테면 병렬 처리 시스템, 다수의 코프로세서 등을 의미할 수 있음을 이해할 것이다.
호스트(102)는 메모리 시스템들(104-1 ... 104-N)과 통신하는 호스트 제어기(108)를 포함한다. 호스트 제어기(108)는 채널들(112-1 ... 112-N)을 통해 DIMM들(110-1, . . ., 110-X, 110-Y)에 명령들을 전송할 수 있다. 호스트 제어기(108)는 그 외 다른 동작들 중에서도, 데이터를 판독, 기록 및 소거하기 위해 DIMM들(110-1, . . ., 110-X, 110-Y) 및/또는 각각의 DIMM들(110-1, . . ., 110-X, 110-Y) 상의 제어기(114)와 통신할 수 있다. 물리적 호스트 인터페이스가 물리적 호스트 인터페이스에 호환 가능한 수용기들을 갖는 호스트(102)와 메모리 시스템들(104-1 ... 104-N) 사이에서 제어, 어드레스, 데이터 및 그 외 다른 신호들을 전달하기 위한 인터페이스를 제공할 수 있다. 신호들은 예를 들어, 채널들(112-1, . . ., 112-N)을 통해, 데이터 버스 및/또는 어드레스 버스와 같은 다수의 버스 상의 102와 DIMM들(110-1, . . ., 110-X, 110-Y) 사이에서 전달될 수 있다.
호스트 제어기(108) 및/또는 DIMM 상의 제어기(114)는 제어 회로들, 예를 들어, 하드웨어, 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 하나 이상의 실시 예에서, 호스트 제어기(108) 및/또는 제어기(114)는 물리적 인터페이스를 포함하여 인쇄 회로 기판에 접속되는 주문형 반도체(ASIC)일 수 있다. 또한, 각각의 DIMM(110-1,...,110-X, 110-Y)은 휘발성 및/또는 비휘발성 메모리의 버퍼들(116) 및 레지스터들(118)을 포함할 수 있다. 버퍼(116)는 판독 명령들 및/또는 기록 명령들의 실행 동안 사용되는 데이터를 버퍼링하는데 사용될 수 있다. 버퍼(116)는 기록 버퍼 및 판독 버퍼로 나뉠 수 있다. 기록 버퍼에 전용되는 공간의 양 및 판독 버퍼에 전용되는 공간의 양은 호스트 제어기(108)에 의해 제어될 수 있다. 호스트는 특정 DIMM에 전송되고 있는 명령들의 유형에 기초하여 기록 버퍼 및 판독 버퍼에 전용되는 버퍼(116) 내 공간의 양을 제어할 수 있다. 다수의 실시 예에서, DIMM은 고정된 기록 버퍼 크기 및/또는 고정된 판독 버퍼 크기를 가질 수 있다. 레지스터들(118)은 명령들을 실행하기 위한 우선 순위를 결정하기 위한 우선 순위 정보를 갖게 프로그래밍될 수 있다.
DIMM들(110-1, . . ., 110-X, 110-Y)은 메모리 시스템을 위한 주 메모리를 제공할 수 있거나 메모리 시스템 전반에 걸친 추가 메모리 또는 저장소로서 사용될 수 있다. 각각의 DIMM(110-1,...,110-X, 110-Y)은 메모리 셀들, 예를 들어, 비휘발성 메모리 셀들의 하나 이상의 어레이를 포함할 수 있다. 어레이들은 예를 들어, NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. 실시 예들은 메모리 소자의 특정 유형으로 제한되지 않는다. 예를 들어, 메모리 소자는 다른 것들 중에서도, RAM, ROM, DRAM, SDRAM, PCRAM, RRAM 및 플래시 메모리를 포함할 수 있다.
도 1a의 실시 예는 본 발명의 실시예들을 모호하지 않게 하기 위해 도시되지 않은 추가의 회로들도 포함할 수 있다. 예를 들어, 메모리 시스템들(104-1 ... 104-N)은 I/O 회로들을 통해 I/O 연결들을 거쳐 제공되는 어드레스 신호들을 래칭하기 위한 어드레스 회로들을 포함할 수 있다. DIMM들(110-1, . . ., 110-X, 110-Y)에 액세스하기 위해서는 어드레스 신호들이 수신되고 로우 디코더 및 컬럼 디코더에 의해 디코딩될 수 있다. 해당 기술분야의 통상의 기술자들이라면 어드레스 입력 연결들의 수는 DIMM들(110-1, . . ., 110-X, 110-Y)의 밀도 및 아키텍처에 따를 수 있음을 이해할 것이다.
도 1b는 본 발명의 다수의 실시예에 따른 듀얼 인라인 메모리 모듈들(DIMM)(110) 형태의 장치의 블록도이다. 도 1b에서, DIMM(110)은 제어기(114)를 포함할 수 있다. 제어기(114)는 버퍼(116) 및/또는 다수의 레지스터(118)일 수 있는 SRAM 메모리와 같은 메모리를 포함할 수 있다. DIMM(110)은 제어기에 접속되는 다수의 메모리 소자(113-1, ..., 113-Z)를 포함할 수 있다. 메모리 소자들(113-1, ..., 113-Z)은 비휘발성 메모리 어레이들 및/또는 휘발성 메모리 어레이들을 포함할 수 있다. 메모리 소자들(113-1, ..., 113-Z)은 메모리 소자들(113-1, ..., 113-Z)에 관한 명령들을 실행하는데 사용될 수 있는 제어 회로들(117)(예를 들어, 하드웨어, 펌웨어 및/또는 소프트웨어)을 포함할 수 있다. 제어 회로들(117)은 제어기(114)로부터 명령들을 수신할 수 있다. 제어 회로들(117)은 메모리 소자들(113-1, ..., 113-Z)의 데이터를 판독 및/또는 기록하기 위한 명령들을 실행하도록 구성될 수 있다.
도 2a 및 도 2b는 본 발명의 다수의 실시예에 따른 다수의 동작의 도해들이다. 도 2a는 세 개의 판독 동작을 수행하는 일례를 도시한다. 명령 신호(222)는 호스트로부터 NVDIMM으로 전송될 수 있다. 명령 신호(222)는 활성화 명령들 및 판독 명령들을 포함할 수 있다. 도 2a에서, 제1 활성화 명령(242-100), 제1 판독 명령(244-100), 제2 활성화 명령(242-200), 제2 판독 명령(244-200), 제3 활성화 명령(242-300) 및 제3 판독 명령(244-300)이 호스트로부터 NVDIMM으로 전송된다. 호스트는 판독 명령에 호스트 판독 식별(RID) 번호를 부여할 수 있다. 호스트 RID 번호는 판독 명령에 포함되어 판독 명령을 호스트로부터 NVDIMM으로 전송할 때 NVDIMM으로 전송될 수 있다. 도 2a에서, 제1 판독 명령(244-100)에는 100의 호스트 RID가 부여될 수 있고, 제2 판독 명령(244-200)에는 200의 호스트 RID가 부여될 수 있으며, 제3 판독 명령(244-300)에는 300의 호스트 RID가 부여될 수 있다. 호스트는 다수의 레지스터의 우선 순위 정보에 기초하여 호스트 RID 번호들을 부여할 수 있다. 예를 들어, 호스트가 명령을 그 외 다른 명령들 이전에 실행되기 원할 경우, 호스트는 그 명령에 레지스터(들)에서 높은 우선 순위가 부여된 RID 범위 내에 있는 RID를 부여할 수 있다.
본 발명의 프로토콜에서, 판독 명령들은 타이밍 파라미터들에 상관없이 차례로 전송될 수도 있다. 이는 명령들이 클록 타이밍 파라미터들에 기인하여 명령들 사이에 간격을 둔 것보다 더 빨리 전송될 수 있게 함에 따라, NVDIMM은 그 명령들을 더 빨리 처리하기 시작할 수 있어 그 명령들에 대한 레이턴시를 줄일 수 있다.
도 2a에서, NVDIMM이 판독 명령들(244-100, 244-200 및 244-300)을 수신했으면, NVDIMM은 그 명령들과 연관된 우선 순위를 결정할 수 있다. NVDIMM은 레지스터 또는 레지스터들을 살펴 명령들(244-100, 244-200 및 244-300)의 RID들과 연관된 우선 순위의 위치를 찾을 수 있다. 레지스터는 명령들이 호스트로부터 NVDIMM으로 전송되기 전 그리고/또는 후 프로그래밍될 수 있다. 도 2a에 설명된 예에서, 레지스터들은 명령들이 NVDIMM으로 전송되기 전 프로그래밍된다. 예를 들어, 레지스터는 RID들(100 : 199)을 갖는 명령들에 높은 우선 순위를, RID들(200 : 299)을 갖는 명령들에 중간 우선 순위를 그리고 RID들(300 : 399)을 갖는 명령들에 낮은 우선 순위를 부여할 수 있다. 명령(244-100)은 높은 우선 순위를 가질 것이어서 먼저 실행될 수 있고, 명령(244-200)은 중간 우선 순위를 가질 것이어서 높은 우선 순위를 갖는 명령 전부가 실행되면 실행될 수 있으며, 명령(244-300)은 낮은 우선 순위를 가질 것이어서 높은 우선 순위 및 중간 우선 순위를 갖는 명령 전부가 실행되면 실행될 수 있다.
높은 우선 순위를 갖는 것에 응답하여 명령(244-100)이 먼저 실행될 수 있기 때문에, NVDIMM은 NVDIMM의 버퍼 및/또는 캐시를 살펴 NVDIMM의 비휘발성 메모리에서 판독 명령들(244-100)과 연관된 데이터의 위치를 찾을 수 있다. 제어기가 데이터의 위치를 찾고 데이터가 호스트로 다시 전송될 준비가 되었으면, NVDIMM 제어기는 판독 준비 명령을 호스트에 전송할 수 있다. NVDIMM이 다수의 판독 명령을 수신할 때, NVDIMM 제어기는 레지스터 또는 레지스터들의 우선 순위 정보에 기초하여 판독 명령들과 연관된 데이터를 리턴한다. 예를 들어, 판독 명령은 RID를 포함하고 NVDIMM 제어기는 명령의 RID에 기초하여 판독 명령에 우선 순위를 부여하는 레지스터에서 RID의 위치를 찾는다.
도 2a에서, 판독 명령(244-100)은 명령(244-100)이 높은 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령(244-100)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 명령(244-100)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 명령(244-100)과 연관된 데이터(246-100)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-100)가 호스트에 전송될 때 판독 식별(RID) 신호(248-100)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-100)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-100)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-100)에는 100의 메모리 소자 RID 번호가 부여된다. NVDIMM 명령이 판독 명령들이 수신되는 순서와 상이한 순서로 판독 명령들에 응답할 수 있기 때문에, 호스트는 RID 신호 없이 어느 판독 명령이 특정 데이터 전송과 연관되는지 알 수 없을 것이다. RID 신호는 n-비트를 포함할 수 있으며, 이때 n은 1 이상의 비트이다. 예를 들어, RID 신호는 2 비트 RID 버스 상에 전송될 수 있다. 호스트가 발행할 수 있는 미처리 판독들의 수는 RID 신호의 비트들의 수, 데이터 패킷의 비트들의 수 및 NVDIMM 제어기가 지원할 수 있는 판독들의 수에 따를 수 있다. 예를 들어, 데이터 버스트가 8 비트이고 RID 신호가 2 비트일 경우, 호스트가 발행할 수 있는 미처리 판독들의 수는 22*8 = 65,536이다. 또한, NVDIMM은 호스트가 발행할 수 있는 미처리 판독 명령들의 수를 더 제한하기 위해 호스트에 의해 판독될 수 있는 레지스터를 가질 수 있고 호스트는 호스트가 발행한 미처리 판독들의 수를 추적할 수 있다.
도 2a에서, 판독 명령(244-200)은 명령(244-200)이 중간 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령(244-100)이 실행되었고 높은 우선 순위로 실행할 그 외 다른 명령이 없기 때문에, 명령(244-200)이 실행될 수 있다. 판독 명령(244-200)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 판독 명령(244-200)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 판독 명령(244-200)과 연관된 데이터(246-200)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-200)가 호스트에 전송될 때 판독 식별(RID) 신호(248-200)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-200)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-200)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-200)에는 200의 메모리 소자 RID 번호가 부여된다.
도 2a에서, 판독 명령(244-300)은 명령(244-300)이 낮은 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령들(244-100 및 244-200)이 실행되었고 높은 또는 중간 우선 순위로 실행할 그 외 다른 명령이 없기 때문에, 명령(244-300)이 실행될 수 있다. 판독 명령(244-300)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 판독 명령(244-300)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 판독 명령(244-300)과 연관된 데이터(246-300)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-300)가 호스트에 전송될 때 판독 식별(RID) 신호(248-300)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-300)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-300)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-300)에는 300의 메모리 소자 RID 번호가 부여된다.
다수의 실시 예에서, 호스트가 데이터를 수신할 준비가 됨을 나타내기 위해 판독 전송 신호가 로우에서 하이로 펄싱될 수 있거나 전송 명령이 사용될 수 있다. 펄싱된 판독 전송 신호는 공통 채널 상에서 DIMM들로 전송되는 그 외 다른 신호들과 조정하도록 호스트에 의해 타이밍이 맞춰질 수 있으며, 이는 통상적으로 클록 에지로 잡아지며, 이때 DIMM들의 일부는 본 발명의 프로토콜을 사용할 수도 아닐 수도 있다.
도 2b는 세 개의 판독 동작을 수행하는 일례를 도시한다. 도 2b의 예에서는, 명령들에 대한 우선 순위가 명령이 NVDIMM으로 전송된 후 변경될 수 있다. 도 2b에서, 제1 활성화 명령(242-100), 제1 판독 명령(244-100), 제2 활성화 명령(242-200), 제2 판독 명령(244-200), 제3 활성화 명령(242-300) 및 제3 판독 명령(244-300)이 호스트로부터 NVDIMM으로 전송된다. 호스트는 판독 명령에 호스트 판독 식별(RID) 번호를 부여할 수 있다. 호스트 RID 번호는 판독 명령에 포함되어 판독 명령을 호스트로부터 NVDIMM으로 전송할 때 NVDIMM으로 전송될 수 있다. 도 2a에서, 제1 판독 명령(244-100)에는 100의 호스트 RID가 부여될 수 있고, 제2 판독 명령(244-200)에는 200의 호스트 RID가 부여될 수 있으며, 제3 판독 명령(244-300)에는 300의 호스트 RID가 부여될 수 있다.
본 발명의 프로토콜에서, 판독 명령들은 타이밍 파라미터들에 상관없이 차례로 전송될 수도 있다. 이는 명령들이 클록 타이밍 파라미터들에 기인하여 명령들 사이에 간격을 둔 것보다 더 빨리 전송될 수 있게 함에 따라, NVDIMM은 그 명령들을 더 빨리 처리하기 시작할 수 있어 그 명령들에 대한 레이턴시를 줄일 수 있다.
도 2b에서, NVDIMM이 판독 명령들(244-100, 244-200 및 244-300)을 수신했으면, NVDIMM은 그 명령들과 연관된 우선 순위를 결정할 수 있다. NVDIMM은 레지스터 또는 레지스터들을 살펴 명령들(244-100, 244-200 및 244-300)의 RID들과 연관된 우선 순위의 위치를 찾을 수 있다. 레지스터는 명령들이 호스트로부터 NVDIMM으로 전송되기 전 그리고/또는 후 프로그래밍될 수 있다. 도 2b에 설명된 예에서, 레지스터들은 명령들이 NVDIMM으로 전송되기 전 프로그래밍된 다음 명령들이 NVDIMM으로 전송된 후 업데이트된다. 예를 들어, 레지스터는 처음에는 RID들(100 : 199)을 갖는 명령들에 높은 우선 순위가, RID들(200 : 299)을 갖는 명령들에 중간 우선 순위가 그리고 RID들(300 : 399)을 갖는 명령들에 낮은 우선 순위가 부여되도록 프로그래밍된다. 명령들이 NVDIMM으로 전송되면, 레지스터는 RID들(100 : 199 및 300 : 399)을 갖는 명령들에 높은 우선 순위가 그리고 RID들(200 : 299)을 갖는 명령들에 중간 우선 순위가 부여되도록 업데이트된다. 호스트는 명령들에 대한 우선 순위를 변경하도록 레지스터를 업데이트할 수 있다. 호스트는 예를 들어, 명령이 일정 시간 임계치 동안 큐에 있는 것에 응답하여 우선 순위를 업데이트할 수 있다. 또한, 호스트는 예를 들어, 호스트가 명령과 연관된 데이터에 대한 긴급 요구를 받는 것에 응답하여 우선 순위를 업데이트할 수 있다. 명령들(244-100 및 244-300)은 높은 우선 순위를 가질 것이어서 중간 및/또는 낮은 우선 순위를 갖는 명령들 이전에 실행될 수 있고 명령(244-200)은 중간 우선 순위를 가질 것이어서 높은 우선 순위를 갖는 명령 전부가 실행되면 실행될 수 있다.
높은 우선 순위를 갖는 것에 응답하여 명령(244-100)이 먼저 실행될 수 있기 때문에, NVDIMM은 NVDIMM의 버퍼 및/또는 캐시를 살펴 NVDIMM의 비휘발성 메모리에서 판독 명령들(244-100)과 연관된 데이터의 위치를 찾을 수 있다. 제어기가 데이터의 위치를 찾고 데이터가 호스트로 다시 전송될 준비가 되었으면, NVDIMM 제어기는 판독 준비 명령을 호스트에 전송할 수 있다. NVDIMM이 다수의 판독 명령을 수신할 때, NVDIMM 제어기는 레지스터 또는 레지스터들의 우선 순위 정보에 기초하여 판독 명령들과 연관된 데이터를 리턴한다. 예를 들어, 판독 명령은 RID를 포함하고 NVDIMM 제어기는 명령의 RID에 기초하여 판독 명령에 우선 순위를 부여하는 레지스터에서 RID의 위치를 찾는다.
도 2b에서, 판독 명령(244-100)은 명령(244-100)이 높은 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령(244-100)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 명령(244-100)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 명령(244-100)과 연관된 데이터(246-100)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-100)가 호스트에 전송될 때 판독 식별(RID) 신호(248-100)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-100)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-100)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-100)에는 100의 메모리 소자 RID 번호가 부여된다.
도 2b에서, 판독 명령(244-300)은 명령(244-300)이 중간 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령(244-100)은 실행되었고 명령(244-300)이 높은 우선 순위를 갖는 나머지 명령이기 때문에, 다음으로 명령(244-300)이 실행될 수 있다. 판독 명령(244-300)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 판독 명령(244-300)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 판독 명령(244-300)과 연관된 데이터(246-200)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-300)가 호스트에 전송될 때 판독 식별(RID) 신호(248-300)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-300)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-300)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-300)에는 300의 메모리 소자 RID 번호가 부여된다.
도 2b에서, 판독 명령(244-200)은 명령(244-300)이 중간 우선 순위로 리턴되어야 함을 나타내는 RID를 포함할 수 있다. 명령들(244-100 및 244-300)이 실행되었고 높은 우선 순위로 실행할 그 외 다른 명령이 없기 때문에, 명령(244-200)이 실행될 수 있다. 판독 명령(244-200)과 연관된 데이터가 호스트에 전송될 준비가 됨을 나타내기 위한 판독 준비 표시자가 판독 준비 신호를 로우에서 하이로 또는 하이에서 로우로 토글링(예를 들어, 전이)함으로써 호스트에 전송될 수 있다. 호스트는 판독 준비 신호의 전이를 검출함으로써 판독 준비 표시자를 검출할 수 있다. 판독 준비 표시자를 수신하는 것에 응답하여, 호스트는 호스트가 판독 명령(244-200)과 연관된 데이터를 수신할 준비가 됨을 나타내기 위한 판독 전송 표시자를 NVDIMM 제어기에 전송할 수 있다. 판독 전송 표시자는 언제라도 그리고 타이밍 파라미터들에 상관없이 호스트에 의해 NVDIMM 제어기에 전송될 수 있다. 호스트는 판독 전송 명령들이 NVDIMM 제어기에 전송될 타이밍을 맞춤으로써 데이터 버스 상의 트래픽을 제어할 수 있다. 판독 전송 표시자는 판독 전송 신호를 로우에서 하이로 토글링하는 것을 포함할 수 있으며, 이는 NVDIMM 제어기에 의해 검출된다. NVDIMM 제어기는 판독 전송 표시자를 수신하는 것에 응답하여, 판독 명령(244-200)과 연관된 데이터(246-200)를 DQ+ECC 핀들(224) 상에 전송할 수 있다. 또한, 데이터(246-200)가 호스트에 전송될 때 판독 식별(RID) 신호(248-200)가 RID 핀들(226) 상에 호스트에 전송된다. RID 신호(248-200)는 NVDIMM에 의해 데이터 청크에 부여된 메모리 소자 RID 번호를 포함하고 호스트에 전송되는 데이터(246-200)와 연관된 판독 명령을 식별하는데 사용된다. 데이터(246-200)에는 200의 메모리 소자 RID 번호가 부여된다.
도 3a 내지 도 3d는 본 발명의 다수의 실시예에 따른 다수의 레지스터의 도해들이다. 도 3a는 우선 순위 정보에 판독 식별(RID) 번호들의 범위들을 부여하는 레지스터(318)를 포함한다. 도 3a에서, 레지스터(318)는 RID 범위(350-1)(RID 0:99)에 낮은 우선 순위(352-1)를, RID 범위(350-2)(RID 100:199)에 높은 우선 순위(352-3)를, RID 범위(350-3)(RID 200:299)에 중간 우선 순위(352-2)를, RID 범위(350-4)(RID 300:399)에 낮은 우선 순위(352-1)를 그리고 RID 범위(350-M)(RID MaxRID-99:MaxRID)에 낮은 우선 순위(352-1)를 부여한다. 다수의 실시 예에서, 임의의 크기의 임의의 수의 레지스터가 RID들에 우선 순위를 부여하기 위해 사용될 수 있다.
도 3b는 우선 순위 정보에 판독 식별(RID) 번호들의 범위들을 부여하는 레지스터들(318-1, ..., 318-M)을 포함한다. 도 3b에서는, 레지스터(318-1)가 RID 범위(350-1)(RID 0:99)에 낮은 우선 순위(352-1)를 부여하고, 레지스터(318-2)가 RID 범위(350-2)(RID 100:199)에 높은 우선 순위(352-3)를 부여하고, 레지스터(318-3)가 RID 범위(350-3)(RID 200:299)에 중간 우선 순위(352-2)를 부여하고, 레지스터(318-4)가 RID 범위(350-4)(RID 300:399)에 낮은 우선 순위(352-1)를 부여하며, 레지스터(318-M)가 RID 범위(350-M)(RID MaxRID-99:MaxRID)에 낮은 우선 순위(352-1)를 부여한다. 레지스터들(318-1, ..., 318-M)은 그것들과 연관된 RID 범위를 변경하도록 업데이트될 수 있다. 또한, 레지스터들(318-1, ..., 318-M)은 그것들과 연관된 우선 순위 정보를 변경하도록 업데이트될 수 있다.
도 3c에서, 레지스터들(318-1, ..., 318-M)에는 모두 예를 들어, 높은 우선 순위(352-3)와 같은 동일한 우선 순위 정보가 부여될 수 있다. 모든 RID 범위에 동일한 우선 순위 정보가 부여될 때, 명령들은 우선 순위에 상관없이 실행된다. 레지스터들(318-1, ..., 318-M)은 호스트가 명령들이 우선 순위로 실행되기 원치 않을 때 호스트에 의해 모두 동일한 우선 순위를 갖도록 업데이트될 수 있다.
도 3d는 RID 범위들에 우선 순위 정보를 부여하는 레지스터들(318-H, 318-M 및 318-L)을 포함한다. 도 3d에서, 레지스터(318-H)는 RID 범위들에 높은 우선 순위를 부여하고, 레지스터(318-M)는 RID 범위들에 중간 우선 순위를 부여하며, 레지스터(318-L)는 RID 범위들에 낮은 우선 순위를 부여한다. 레지스터들(318-H, 318-M 및 318-L)은 RID 범위들 내 RID들을 갖는 명령들과 연관된 우선 순위가 업데이트되도록 RID 범위들을 변경하도록 업데이트될 수 있다. 도 3d에서, 레지스터(318-H)는 100의 하한 RID(360) 및 199의 상한 RID(362), 400의 하한 RID(360) 및 499의 상한 RID(362) 그리고 x의 하한 RID(360) 및 x+99의 상한 RID(362)를 갖는 RID 범위들에 높은 우선 순위를 부여한다. 레지스터(318-M)는 200의 하한 RID(360) 및 299의 상한 RID(362), y의 하한 RID(360) 및 y+99의 상한 RID(362) 그리고 z의 하한 RID(360) 및 z+99의 상한 RID(362)를 갖는 RID 범위들에 중간 우선 순위를 부여한다. 레지스터(318-L)는 0의 하한 RID(360) 및 99의 상한 RID(362), 300의 하한 RID(360) 및 399의 상한 RID(362) 그리고 MaxRID-99의 하한 RID(360) 및 MaxRID의 상한 RID(362)를 갖는 RID 범위들에 낮은 우선 순위를 부여한다. 레지스터들(318-H, 318-M 및 318-L)과 연관된 RID 범위들은 호스트 및/또는 NVDIMM에 의해 명령들에 부여하기 위해 이용 가능한 임의의 하한 RID(360) 및/또는 상한 RID(362)를 포함할 수 있다.
본 명세서에서 구체적인 실시예들이 예시되고 설명되었지만, 해당 기술분야의 통상의 기술자들은 동일한 결과들을 달성하도록 계산된 배열이 제시된 구체적인 실시예들을 대체할 수 있다는 것을 이해할 것이다. 본 발명은 본 발명의 다양한 실시예의 개조 또는 변형을 커버하도록 의도된다. 상기한 설명은 제한적인 방식이 아니라 예시적인 방식으로 이루어졌다는 것이 이해되어야 한다. 본 명세서에서 구체적으로 설명되지 않은 상기한 실시 예들의 조합 및 그 외 다른 실시 예들이 상기한 설명을 검토할 때 해당 기술분야의 통상의 기술자들에게 분명할 것이다. 본 발명의 다양한 실시 예의 범위는 상기한 구조들 및 방법들이 사용되는 그 외 다른 적용예들을 포함한다. 따라서, 본 발명의 다양한 실시 예의 범위는 첨부된 청구범위를 참조하여, 그러한 청구범위가 권리를 가지는 균등물들의 전체 범위와 함께 결정되어야 한다.
앞에서의 발명을 실시하기 위한 구체적인 내용에서, 다양한 피처는 본 발명을 간소화하기 위한 목적으로 하나의 실시예에서 함께 그룹화된다. 본 발명의 이러한 방법은 본 발명의 개시된 실시 예들이 각 청구항에 명시적으로 나열된 것보다 더 많은 피처를 사용해야 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 그보다, 이하의 청구범위가 나타내는 바에 따라, 본 발명의 주제는 하나의 개시된 실시 예의 모든 피처보다 적은 피처에 있다. 그에 따라, 이하의 청구범위는 이에 의해 발명을 실시하기 위한 구체적인 내용으로 통합되며, 각 청구항은 별개의 실시 예로서 독립된다.

Claims (22)

  1. 장치로서,
    메모리 소자; 및
    상기 메모리 소자에 접속되는 제어기로서,
    판독 식별(read identification, RID) 번호들의 다수의 범위들을 다수의 우선 순위들과 연관시키는 레지스터들의 세트를 프로그래밍하고,
    연관된 RID 번호를 갖는 명령을 수신하고,
    상기 명령을 수신하는 것에 응답하여, RID 번호들의 상기 다수의 범위들을 상기 다수의 우선 순위들과 연관시키는 상기 레지스터들에 기초하여 우선 순위를 상기 명령에 부여하고,
    상기 명령이 실행되기 전에, RID 번호들의 상기 다수의 범위들을 상기 다수의 우선 순위들과 연관시키는 것을 업데이트하기 위해 상기 레지스터들의 세트를 재프로그래밍하고,
    상기 레지스터들의 세트를 재프로그래밍하는 것에 응답하여, 상기 업데이트된 우선 순위를 상기 명령에 부여하고,
    상기 명령에 부여된 상기 업데이트된 우선 순위에 기초하여 상기 명령을 실행하도록 구성된, 상기 제어기를 포함하는, 장치.
  2. 청구항 1에 있어서, 상기 메모리 소자는 비휘발성 듀얼 인라인 메모리 모듈(non-volatile dual in-line memory module, NVDIMM) 소자인, 장치.
  3. 청구항 1에 있어서, 상기 RID 번호에 부여되는 상기 우선 순위는 상기 레지스터를 재프로그래밍함으로써 변경되는, 장치.
  4. 청구항 1에 있어서, 상기 명령은 상기 RID 번호에 부여되는 상기 우선 순위에 기초하여 다른 명령 이전에 실행되고 상기 다른 명령은 상기 명령이 실행을 위한 상기 메모리 소자에 전송되기 전에 실행을 위한 상기 메모리 소자에 전송된, 장치.
  5. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 레지스터는 RID 번호들의 복수의 범위를 포함하고 상기 RID 번호들의 복수의 범위의 각각에 우선 순위 정보가 부여되는, 장치.
  6. 청구항 1 내지 4 중 어느 한 항에 있어서, 상기 제어기는 상기 레지스터의 상기 RID 번호 및 우선 순위 정보에 기초하여 상기 명령을 실행해야 할 때를 결정하는, 장치.
  7. 장치로서,
    메모리 소자; 및
    상기 메모리 소자에 접속되는 제어기로서,
    호스트에 의해 제1 명령에 부여된 제1 판독 식별(RID) 번호를 갖는 상기 제1 명령, 상기 호스트에 의해 제2 명령에 부여된 제2 RID 번호를 갖는 상기 제2 명령 및 상기 호스트에 의해 제3 명령에 부여된 제3 RID 번호를 갖는 상기 제3 명령을 수신하고,
    상기 제1 명령, 상기 제2 명령 및 상기 제3 명령을 수신하는 것에 응답하여, 제1 우선 순위를 상기 제1 명령에 부여하고, 제2 우선 순위를 상기 제2 명령에 부여하고, 제3 우선 순위를 상기 제3 명령에 부여하고 - 각 명령은 RID 번호들의 다수의 범위들을 다수의 우선 순위들과 연관시키는 레지스터들에 기초하여 우선 순위가 부여됨 -,
    상기 제1 명령, 상기 제2 명령 및 상기 제3 명령이 실행되기 전에, RID 번호들의 상기 다수의 범위들을 상기 다수의 우선 순위들과 연관시키는 상기 레지스터들에 대한 업데이트들을 수신하고,
    상기 레지스터들에 대한 업데이트들을 수신하는 것에 응답하여, 업데이트된 제1 우선 순위를 상기 제1 명령에 부여하고, 업데이트된 제2 우선 순위를 상기 제2 명령에 부여하고, 업데이트된 제3 우선 순위를 상기 제3 명령에 부여하고,
    상기 제1 명령의 상기 업데이트된 제1 우선 순위, 상기 제2 명령의 상기 업데이트된 제2 우선 순위 및 상기 제3 명령의 상기 업데이트된 제3 우선 순위에 의해 결정된 순서로 상기 제1 명령, 상기 제2 명령 및 상기 제3 명령을 실행하도록 구성된, 상기 제어기를 포함하는, 장치.
  8. 청구항 7에 있어서, 상기 레지스터는 상기 제1 RID 번호를 포함하는 제1 RID 범위에 대해 높은 우선 순위, 상기 제2 RID 번호를 포함하는 제2 RID 범위에 대해 중간 우선 순위 그리고 상기 제3 RID 번호를 포함하는 제3 RID 범위에 대해 낮은 우선 순위로 프로그래밍되는, 장치.
  9. 청구항 8에 있어서, 상기 제1 명령은 상기 제1 RID 번호에 부여된 상기 높은 우선 순위에 기초하여 첫 번째로 실행되고, 상기 제2 명령은 상기 제2 RID 번호에 부여된 상기 중간 우선 순위에 기초하여 두 번째로 실행되며, 상기 제3 명령은 상기 제3 RID 번호에 부여된 상기 낮은 우선 순위에 기초하여 세 번째로 실행되는, 장치.
  10. 청구항 7에 있어서, 상기 레지스터는 제1 RID 범위, 제2 RID 범위 및 제3 RID 범위가 모두 동일한 우선 순위 레벨을 갖도록 프로그래밍되고 상기 제어기는 상기 레지스터의 우선 순위 정보에 기초하여 명령들에 우선 순위를 매기지 않고 상기 제1 명령, 상기 제2 명령 및 상기 제3 명령을 실행하는, 장치.
  11. 장치로서,
    메모리 소자; 및
    상기 메모리 소자에 접속되는 제어기로서,
    복수의 레지스터를 프로그래밍하고 - 상기 복수의 레지스터의 각각에 복수의 판독 식별(RID) 번호의 범위들 및 우선 순위를 상기 복수의 RID 번호의 상기 범위들의 각각과 연관시키는 우선 순위 정보가 부여됨 -,
    연관된 RID 번호를 갖는 복수의 명령을 수신하고,
    상기 복수의 명령을 수신하는 것에 응답하여, RID 번호들의 범위 및 RID 번호들의 상기 범위들을 복수의 우선 순위와 연관시키는 상기 복수의 레지스터에 기초하여 상기 복수의 우선 순위를 상기 복수의 명령에 부여하고,
    상기 복수의 명령이 실행되기 전에, RID 번호들의 상기 범위들을 상기 복수의 우선 순위와 연관시키는 것을 업데이트하기 위해 상기 복수의 레지스터를 재프로그래밍하고,
    상기 복수의 레지스터를 재프로그래밍하는 것에 응답하여, 상기 업데이트된 우선 순위들을 상기 복수의 명령에 부여하고,
    상기 복수의 레지스터의 상기 우선 순위 정보 및 호스트에 의해 상기 복수의 명령에 부여된 RID 번호들에 기초하여 상기 복수의 명령을 실행하도록 구성된, 상기 제어기를 포함하는, 장치.
  12. 청구항 11에 있어서, 상기 복수의 레지스터는 상기 레지스터들에 부여되는 특정한 상기 우선 순위 정보를 변경하도록 재프로그래밍될 수 있는, 장치.
  13. 청구항 11 또는 12에 있어서, 상기 복수의 레지스터는 상기 레지스터들에 부여되는 상기 RID 번호들의 범위들을 변경하도록 재프로그래밍될 수 있는, 장치.
  14. 방법으로서,
    호스트로부터 메모리 소자에 관한 실행을 위한 복수의 명령을 수신하는 단계 - 상기 호스트에 의해 상기 복수의 명령의 각각에 복수의 판독 식별(RID) 번호가 부여됨 -;
    상기 복수의 명령을 수신하는 것에 응답하여, 상기 복수의 RID 번호를 복수의 우선 순위와 연관시키는 복수의 레지스터에 기초하여 복수의 우선 순위를 상기 복수의 명령에 부여하는 단계;
    상기 복수의 명령이 실행되기 전에, 상기 복수의 RID 번호를 상기 복수의 우선 순위와 연관시키는 것을 업데이트하기 위해 상기 복수의 레지스터를 재프로그래밍하는 단계;
    상기 복수의 레지스터를 재프로그래밍하는 것에 응답하여, 상기 업데이트된 복수의 우선 순위를 상기 복수의 명령에 부여하는 단계; 및
    우선 순위 정보를 RID 번호들과 연관시키는 레지스터의 상기 우선 순위 정보에 기초하여 상기 복수의 명령을 실행하는 단계를 포함하는, 방법.
  15. 청구항 14에 있어서, 상기 복수의 명령을 실행하는 단계는 판독 식별(RID) 번호들의 복수의 범위에 각각 우선 순위 정보가 부여되는 상기 레지스터에서 우선 순위 정보의 위치를 찾는 단계를 포함하는, 방법.
  16. 청구항 14에 있어서, 판독 식별(RID) 번호들의 복수의 범위에 우선 순위 정보를 부여하도록 상기 레지스터를 프로그래밍하는 단계를 더 포함하는, 방법.
  17. 청구항 14에 있어서, 상기 복수의 명령을 실행하는 단계는 그 외 다른 명령들을 실행하기 전에 높은 우선 순위를 갖는 명령들을 실행하는 단계를 포함하는, 방법.
  18. 청구항 14에 있어서, 상기 복수의 명령을 실행하는 단계는 상기 레지스터가 상기 복수의 명령과 연관된 판독 식별(RID) 번호들에 공통 우선 순위 정보를 부여하는 것에 대응하여 우선 순위에 상관없이 명령들을 실행하는 단계를 포함하는, 방법.
  19. 청구항 14에 있어서, 상기 복수의 명령의 일부가 실행된 후 판독 식별(RID) 번호들의 복수의 범위에 우선 순위 정보를 부여하도록 상기 레지스터를 재프로그래밍하는 단계를 더 포함하는, 방법.
  20. 방법으로서,
    복수의 레지스터를 프로그래밍하는 단계 - 상기 복수의 레지스터의 각각은 판독 식별(RID) 번호들의 다수의 범위들과 연관되는 우선 순위 정보를 포함함 -;
    연관된 RID 번호를 갖는 명령을 수신하는 단계;
    메모리 소자가 상기 명령을 수신하는 것에 응답하여, RID 번호들의 범위 및 RID 번호들의 상기 다수의 범위들을 복수의 우선 순위와 연관시키는 상기 복수의 레지스터에 기초하여 우선 순위를 상기 명령에 부여하는 단계;
    상기 명령이 실행되기 전에, RID 번호들의 상기 다수의 범위들을 상기 복수의 우선 순위와 연관시키는 것을 업데이트하기 위해 상기 복수의 레지스터를 재프로그래밍하는 단계;
    상기 복수의 레지스터를 재프로그래밍하는 것에 응답하여, 상기 업데이트된 복수의 우선 순위를 상기 명령에 부여하는 단계; 및
    호스트에 의해 복수의 명령에 부여된 RID 번호들 및 상기 복수의 레지스터의 상기 우선 순위 정보에 기초하여 상기 복수의 명령 중 제1 부분이 먼저 실행될 것을 결정하는 단계를 포함하는, 방법.
  21. 청구항 20에 있어서, 상기 복수의 레지스터의 복수의 명령의 RID 번호들 및 상기 우선 순위 정보에 기초하여 먼저 실행되어야 할 상기 복수의 명령 중 제1 부분을 결정하는 단계를 더 포함하는, 방법.
  22. 청구항 21에 있어서, 상기 복수의 레지스터의 복수의 명령의 RID 번호들 및 상기 우선 순위 정보에 기초하여 상기 제1 부분 이후 실행되어야 할 상기 복수의 명령 중 제2 부분을 결정하는 단계를 포함하는, 방법.
KR1020197024511A 2017-01-24 2018-01-19 명령 우선 순위를 이용하는 메모리 프로토콜 KR102307229B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762449689P 2017-01-24 2017-01-24
US62/449,689 2017-01-24
US15/613,408 US11003602B2 (en) 2017-01-24 2017-06-05 Memory protocol with command priority
US15/613,408 2017-06-05
PCT/US2018/014345 WO2018140301A1 (en) 2017-01-24 2018-01-19 Memory protocol with command priority

Publications (2)

Publication Number Publication Date
KR20190101494A KR20190101494A (ko) 2019-08-30
KR102307229B1 true KR102307229B1 (ko) 2021-10-01

Family

ID=62906270

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197024511A KR102307229B1 (ko) 2017-01-24 2018-01-19 명령 우선 순위를 이용하는 메모리 프로토콜

Country Status (6)

Country Link
US (2) US11003602B2 (ko)
EP (1) EP3574410A4 (ko)
KR (1) KR102307229B1 (ko)
CN (1) CN110214316A (ko)
TW (1) TWI661308B (ko)
WO (1) WO2018140301A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116324743A (zh) * 2020-11-05 2023-06-23 谷歌有限责任公司 存储器请求优先级升级
US11404095B1 (en) * 2021-01-21 2022-08-02 Micron Technology, Inc. Reduced pin status register

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130060981A1 (en) * 2011-09-06 2013-03-07 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems

Family Cites Families (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5452311A (en) 1992-10-30 1995-09-19 Intel Corporation Method and apparatus to improve read reliability in semiconductor memories
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
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
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
US6941428B2 (en) * 2002-09-25 2005-09-06 International Business Machines Corporation Memory controller optimization
US6842821B2 (en) * 2002-12-02 2005-01-11 Lsi Logic Corporation DDR SDRAM memory controller with multiple dependency request architecture and intelligent requestor interface
US7308524B2 (en) 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
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
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
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
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
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
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
US8332608B2 (en) * 2008-09-19 2012-12-11 Mediatek Inc. Method of enhancing command executing performance of disc drive
KR101525872B1 (ko) * 2008-11-06 2015-06-04 삼성전자주식회사 반도체 메모리 시스템의 동작 방법
EP2394221A4 (en) 2009-02-09 2012-11-21 Rambus Inc NON-VOLATILE MEMORY WITH MULTIPLE LEVELS WITH SYNCHRONIZED CONTROL
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
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
JPWO2011043012A1 (ja) 2009-10-05 2013-02-28 パナソニック株式会社 不揮発性半導体記憶装置、信号処理システム、及び信号処理システムの制御方法、並びに不揮発性半導体記憶装置の書き換え方法
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 株式会社東芝 メモリシステムおよびメモリシステムの制御方法
WO2012087971A2 (en) 2010-12-20 2012-06-28 Marvell World Trade Ltd. Descriptor scheduler
JP2012234363A (ja) * 2011-04-28 2012-11-29 Toshiba Corp メモリシステム
US9208109B2 (en) * 2011-06-01 2015-12-08 Altera Corporation Memory controllers with dynamic port priority assignment capabilities
US8799557B1 (en) 2011-10-13 2014-08-05 Netapp, Inc. System and method for non-volatile random access memory emulation
KR101903095B1 (ko) * 2011-11-21 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법
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
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
US9250814B2 (en) 2013-02-11 2016-02-02 Apple Inc. Command order re-sequencing in non-volatile memory
US9563579B2 (en) * 2013-02-28 2017-02-07 Intel Corporation Method, apparatus, system for representing, specifying and using deadlines
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
JP6146128B2 (ja) * 2013-05-20 2017-06-14 ヤマハ株式会社 データ処理装置
WO2014193376A1 (en) 2013-05-30 2014-12-04 Hewlett-Packard Development Company, L.P. Separate memory controllers to access data in memory
US20150067291A1 (en) * 2013-08-30 2015-03-05 Kabushiki Kaisha Toshiba Controller, memory system, and method
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
WO2015126518A2 (en) * 2014-02-20 2015-08-27 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
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
US20160232112A1 (en) 2015-02-06 2016-08-11 Futurewei Technologies, Inc. Unified Memory Bus and Method to Operate the Unified Memory Bus
US20170160929A1 (en) * 2015-12-02 2017-06-08 Hewlett Packard Enterprise Development Lp In-order execution of commands received via a networking fabric
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
US10261907B2 (en) 2017-03-09 2019-04-16 International Business Machines Corporation Caching data in a redundant array of independent disks (RAID) storage system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130060981A1 (en) * 2011-09-06 2013-03-07 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems

Also Published As

Publication number Publication date
EP3574410A4 (en) 2020-08-26
TWI661308B (zh) 2019-06-01
CN110214316A (zh) 2019-09-06
US11586566B2 (en) 2023-02-21
US20210263867A1 (en) 2021-08-26
US20180210847A1 (en) 2018-07-26
KR20190101494A (ko) 2019-08-30
US11003602B2 (en) 2021-05-11
EP3574410A1 (en) 2019-12-04
TW201833786A (zh) 2018-09-16
WO2018140301A1 (en) 2018-08-02

Similar Documents

Publication Publication Date Title
KR102442495B1 (ko) 메모리 프로토콜
KR102360667B1 (ko) 프로그래밍 가능한 버퍼 및 캐시 크기의 메모리 프로토콜
US11704260B2 (en) Memory controller
US11586566B2 (en) Memory protocol with command priority
KR102306585B1 (ko) 거래 식별
CN109997121B (zh) 存储器协议

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