KR20210030480A - 메모리 시스템 내 기입 크레딧의 사전 예방적 반환 - Google Patents

메모리 시스템 내 기입 크레딧의 사전 예방적 반환 Download PDF

Info

Publication number
KR20210030480A
KR20210030480A KR1020217006487A KR20217006487A KR20210030480A KR 20210030480 A KR20210030480 A KR 20210030480A KR 1020217006487 A KR1020217006487 A KR 1020217006487A KR 20217006487 A KR20217006487 A KR 20217006487A KR 20210030480 A KR20210030480 A KR 20210030480A
Authority
KR
South Korea
Prior art keywords
memory
host system
write command
write
amount
Prior art date
Application number
KR1020217006487A
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 KR20210030480A publication Critical patent/KR20210030480A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports

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)
  • Information Transfer Systems (AREA)
  • Memory System (AREA)

Abstract

메모리 시스템은 메모리 컴포넌트, 및 호스트 시스템으로부터, 기입 명령을 수신하여 데이터를 메모리 컴포넌트에 저장하고, 기입 명령을 버퍼에 저장하고, 기입 명령의 적어도 일부를 실행시키는 처리 디바이스를 갖는다. 예를 들어, 이 기입 버퍼 용량은 호스트 및 서브시스템의 기입 크레딧 값으로 나타날 수 있다. 처리 디바이스는 기입 명령의 적어도 일부의 실행 후 이용 가능하게 되는 버퍼의 가용 용량의 양을 결정하고, 호스트 시스템으로부터 수신된 보류 중인 정보 요청 없이, 가용 용량의 양을 식별하는 정보를 수신하기 위해 신호를 호스트 시스템으로 전송한다.

Description

메모리 시스템 내 기입 크레딧의 사전 예방적 반환
관련 출원
본 출원은 미국 특허 출원 일련번호 제16/058,733호(출원일: 2018년 8월 8일, 발명의 명칭: "Proactive Return of Write Credits in a Memory System")의 이득을 주장하고, 상기 기초출원의 전체 개시내용은 참조에 의해 본 명세서에 원용된다.
기술 분야
본 개시내용의 실시형태는 일반적으로 메모리 시스템에 관한 것이고, 더 구체적으로, 메모리 시스템 내 기입 크레딧의 사전 예방적 반환에 관한 것이다.
메모리 서브시스템은 저장 시스템, 예컨대, 솔리드-스테이트 드라이브(solid-state drive: SSD) 또는 메모리 모듈, 예컨대, 비휘발성 듀얼 인라인 메모리 모듈(non-volatile dual in-line memory module: NVDIMM)일 수 있고, 데이터를 저장하는 하나 이상의 메모리 컴포넌트를 포함할 수 있다. 메모리 컴포넌트는 예를 들어, 비-휘발성 메모리 컴포넌트 및 휘발성 메모리 컴포넌트일 수 있다. 일반적으로, 호스트 시스템이 데이터를 메모리 컴포넌트에 저장하고 데이터를 메모리 컴포넌트로부터 검색하도록 메모리 서브시스템을 활용할 수 있다.
표준화된 통신 프로토콜은 호스트 시스템이 메모리 서브시스템과 통신하여 데이터를 저장하고 데이터를 검색하게 한다.
예를 들어, JEDEC(Joint Electron Device Engineering Council) 솔리드 스테이트 기술 협회는 호스트 시스템과 NVDIMM-P 메모리 모듈 간의 통신을 위해 "DDR5 NVDIMM-P 버스 프로토콜"을 제안하였다. 이 프로토콜은 문헌[JEDEC Committee Letter Ballot, Committee: JC-45.6, Committee Item Number 2261.13D, Subject: "Proposed DDR5 NVDIMM-P Bus Protocol"]에 상세히 설명되어 있고, 이 문헌은 전문이 참조에 의해 본 명세서에 원용된다.
본 개시내용은 아래에 제공되는 상세한 설명으로부터 그리고 본 개시내용의 다양한 실시형태의 첨부 도면으로부터 더 완전히 이해될 것이다.
도 1은 본 개시내용의 일부 실시형태에 따른, 메모리 서브시스템을 가진 예시적인 컴퓨팅 시스템을 예시하는 도면.
도 2는 본 개시내용의 일부 실시형태에 따른, 기입 크레딧 관리자를 포함하는 예시적인 컴퓨팅 시스템을 예시하는 도면.
도 3은 본 개시내용의 일부 실시형태에 따른, 기입 명령을 수용하기 위한 이용 가능한 버퍼 용량에 관한 정보를 전달하기 위한 예시적인 방법의 흐름도.
도 4는 본 개시내용의 일부 실시형태에 따른, 기입 크레딧을 전달하기 위한 상세한 예시적인 방법의 흐름도.
도 5는 본 개시내용의 실시형태가 작동할 수도 있는 예시적인 컴퓨터 시스템의 블록도.
본 개시내용의 적어도 일부 양상은 호스트 시스템이 정보를 요청하는 일 없이 호스트 시스템으로부터 전송된 기입 명령을 버퍼링하는 데 사용 가능한 메모리 서브시스템에서 이용 가능한 버퍼 용량에 관한 정보의 사전 예방적 전송에 관한 것이다. 메모리 서브시스템은 또한 이하에서 "메모리 디바이스"로서 지칭된다. 메모리 서브시스템의 예는 메모리 버스를 통해 중앙 처리 장치(central processing unit: CPU)에 연결되는 메모리 모듈, 예컨대, 듀얼 인라인 메모리 모듈(dual in-line memory module: DIMM), 소형 아웃라인 DIMM(small outline DIMM: SO-DIMM), 비휘발성 듀얼 인라인 메모리 모듈(NVDIMM) 등이다. 메모리 서브시스템의 또 다른 예는 저장 시스템, 예컨대, 솔리드-스테이트 드라이브(SSD)이다. 일부 실시형태에서, 메모리 서브시스템은 메모리 기능과 저장 기능 둘 다를 제공하는 하이브리드 메모리/저장 서브시스템이다. 일반적으로, 호스트 시스템은 하나 이상의 메모리 컴포넌트를 포함하는 메모리 서브시스템을 활용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장될 데이터를 제공할 수 있고 메모리 서브시스템으로부터 검색될 데이터를 요청할 수 있다.
일부 컴퓨터 시스템, 예컨대, NVDIMM-P 버스를 사용하여 연결되는 호스트 시스템 및 메모리 서브시스템에서, 데이터를 메모리 서브시스템에 저장하기 위한 기입 명령은 미리 결정되지 않은 시간 기간에서의 실행을 위해 메모리 서브시스템에서 버퍼링될 수 있다. 호스트 시스템은 새로운 기입 명령과 해당 데이터를 수용하기 위한 메모리 서브시스템의 가용 용량을 나타내는 정보를 포함하여, 메모리 서브시스템으로부터 정보를 요청하는 명령을 발행할 수 있다. 일부 경우에, 메모리 서브시스템은 호스트 시스템이 이용 가능한 기입 버퍼 용량에 대한 정보를 필요로 한다고 결정할 수 있다. 그러나, 호스트 시스템이 이러한 정보를 전송하기 위해 메모리 서브시스템에 요청하는 명령을 발행하도록 요구하면 다른 명령을 위해 사용될 수 있는 통신 자원을 소비할 수 있다.
본 개시내용의 적어도 일부 양상은 메모리 서브시스템이 이용 가능한 기입 버퍼 용량에 대한, 전송 준비가 된, 정보를 가진 호스트 시스템에 사전 예방적으로 시그널링하여 메모리 서브시스템에 의해 상기 결함 및 다른 결함을 해결한다. 호스트 시스템은 정보를 요청하는 명령 및/또는 정보를 준비하고 정보를 호스트 시스템으로 전송할 준비가 되도록 메모리 서브시스템에 요청하는 명령을 발행할 필요 없이 이러한 정보를 검색할 수 있다.
도 1은 본 개시내용의 일부 실시형태에 따른, 메모리 서브시스템(110)을 가진 예시적인 컴퓨팅 시스템(100)을 예시한다. 메모리 서브시스템(110)은 매체, 예컨대, 메모리 컴포넌트(109A 내지 109N)를 포함할 수 있다. 메모리 컴포넌트(109A 내지 109N)는 휘발성 메모리 컴포넌트, 비-휘발성 메모리 컴포넌트 또는 이들의 조합일 수 있다. 일부 실시형태에서, 메모리 서브시스템(110)은 메모리 모듈이다. 메모리 모듈의 예는 DIMM, NVDIMM 및 NVDIMM-P를 포함한다. 일부 실시형태에서, 메모리 서브시스템은 저장 시스템이다. 저장 시스템의 예는 SSD이다. 일부 실시형태에서, 메모리 서브시스템(110)은 하이브리드 메모리/저장 서브시스템이다. 일반적으로, 컴퓨팅 환경은 메모리 서브시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 데이터를 메모리 서브시스템(110)에 기입할 수 있고 메모리 서브시스템(110)으로부터 데이터를 판독할 수 있다.
호스트 시스템(120)은 컴퓨팅 디바이스, 예컨대, 데스크탑 컴퓨터, 랩탑 컴퓨터, 네트워크 서버, 모바일 디바이스, 또는 메모리와 처리 디바이스를 포함하는 이러한 컴퓨팅 디바이스일 수 있다. 호스트 시스템(120)이 메모리 서브시스템(110)을 포함할 수 있거나 또는 메모리 서브시스템에 결합될 수 있어서 호스트 시스템(120)은 메모리 서브시스템(110)으로부터 데이터를 판독할 수 있거나 또는 데이터를 메모리 서브시스템에 기입할 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브시스템(110)에 결합될 수 있다. 본 명세서에서 사용될 때, "~에 결합된"은 전기적, 광학적, 자기적 등과 같은 연결을 포함하여, 유선이든 또는 무선이든, 간접적인 통신 연결 또는 직접적인 통신 연결(예를 들어, 중간 컴포넌트가 없음)일 수 있는, 컴포넌트 간의 연결을 일반적으로 나타낸다. 물리적 호스트 인터페이스의 예는 SATA(serial advanced technology attachment) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, USB(universal serial bus) 인터페이스, 파이버 채널(Fibre Channel), SAS(Serial Attached SCSI), 이중 데이터율(double data rate: DDR) 메모리 버스 등을 포함하지만 이들로 제한되지 않는다. 물리적 호스트 인터페이스는 데이터를 호스트 시스템(120)과 메모리 서브시스템(110) 간에 전송하도록 사용될 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때, 메모리 컴포넌트(109A 내지 109N)에 액세스하기 위해 NVMe(NVM Express) 인터페이스를 더 활용할 수 있다. 물리적 호스트 인터페이스는 제어, 어드레스, 데이터, 및 다른 신호를 메모리 서브시스템(110)과 호스트 시스템(120) 간에서 전달하기 위한 인터페이스를 제공할 수 있다. 도 1은 메모리 서브시스템(110)을 예로서 예시한다. 일반적으로, 호스트 시스템(120)은 동일한 통신 연결, 다수의 별개의 통신 연결 및/또는 통신 연결의 조합을 통해 다수의 메모리 서브시스템에 액세스할 수 있다.
호스트 시스템(120)은 처리 디바이스(118) 및 제어기(116)를 포함한다. 호스트 시스템(120)의 처리 디바이스(118)는 예를 들어, 마이크로프로세서, 중앙 처리 장치(CPU), 프로세서의 프로세싱 코어, 실행 장치 등일 수 있다. 일부 경우에, 제어기(116)는 메모리 제어기, 메모리 관리 장치 및/또는 개시자(initiator)로 지칭될 수 있다. 하나의 실시예에서, 제어기(116)는 호스트 시스템(120)과 메모리 서브시스템(110) 사이에 결합된 버스를 통한 통신을 제어한다.
일반적으로, 제어기(116)는 메모리 컴포넌트(109A 내지 109N)에 대한 원하는 액세스를 위해 명령 또는 요청을 메모리 서브시스템(110)에 전송할 수 있다. 제어기(116)는 메모리 서브시스템(110)과 통신하기 위한 인터페이스 회로망을 더 포함할 수 있다. 인터페이스 회로망은 메모리 서브시스템(110)으로부터 수신된 응답을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
호스트 시스템(120)의 제어기(116)가 메모리 서브시스템(110)의 제어기(115)와 통신할 수 있어서 작동, 예컨대, 데이터의 판독, 데이터의 기입 또는 메모리 컴포넌트(109A 내지 109N)에서 데이터의 소거 및 다른 이러한 작동을 수행한다. 일부 경우에, 제어기(116)는 처리 디바이스(118)의 동일한 패키지 내에 통합된다. 다른 경우에, 제어기(116)는 처리 디바이스(118)의 패키지로부터 분리된다. 제어기(116) 및/또는 처리 디바이스(118)는 하드웨어, 예컨대, 하나 이상의 집적 회로 및/또는 별개의 컴포넌트, 버퍼 메모리, 캐시 메모리 또는 이들의 조합을 포함할 수 있다. 제어기(116) 및/또는 처리 디바이스(118)는 마이크로제어기, 특수 목적 논리 회로망(예를 들어, 필드 프로그래밍 가능한 게이트 어레이(field programmable gate array: FPGA), 응용 주문형 집적 회로(ASIC) 등) 또는 또 다른 적합한 프로세서일 수 있다.
메모리 컴포넌트(109A 내지 109N)는 비-휘발성 메모리 컴포넌트 및/또는 휘발성 메모리 컴포넌트의 상이한 유형의 임의의 조합을 포함할 수 있다. 비-휘발성 메모리 컴포넌트의 예는 NAND(negative-and) 유형의 플래시 메모리를 포함한다. 메모리 컴포넌트(109A 내지 109N)의 각각은 메모리 셀, 예컨대, 단일 레벨 셀(single level cell: SLC) 또는 멀티-레벨 셀(multi-level cell: MLC)(예를 들어, 트리플 레벨 셀(triple level cell: TLC) 또는 쿼드-레벨 셀(quad-level cells: QLC))의 하나 이상의 어레이를 포함할 수 있다. 일부 실시형태에서, 특정한 메모리 컴포넌트는 메모리 셀의 SLC 부분과 MLC 부분 둘 다를 포함할 수 있다. 메모리 셀의 각각은 호스트 시스템(120)에 의해 사용되는 데이터(예를 들어, 데이터 블록)의 하나 이상의 비트를 저장할 수 있다. 비-휘발성 메모리 컴포넌트, 예컨대, NAND 유형의 플래시 메모리가 설명되지만, 메모리 컴포넌트(109A 내지 109N)는 임의의 다른 유형의 메모리, 예컨대, 휘발성 메모리에 기초할 수 있다. 일부 실시형태에서, 메모리 컴포넌트(109A 내지 109N)는 랜덤 액세스 메모리(random access memory: RAM), 판독-전용 메모리(read-only memory: ROM), 동적 랜덤 액세스 메모리(dynamic random access memory: DRAM), 동기식 동적 랜덤 액세스 메모리(synchronous dynamic random access memory: SDRAM), 상변화 메모리(phase change memory: PCM), 자기 랜덤 액세스 메모리(magneto random access memory: MRAM), 스핀 전달 토크(STT)-MRAM, 강유전성 랜덤-액세스 메모리(FeTRAM), 강유전성 RAM(FeRAM), 전도성 가교 RAM(conductive bridging RAM : CBRAM), 저항성 랜덤 액세스 메모리(resistive random access memory: RRAM), 산화물 기반 RRAM(oxide based RRAM: OxRAM), NOR(negative-or) 플래시 메모리, 전기적으로 소거 가능한 프로그래밍 가능한 판독-전용 메모리(electrically erasable programmable read-only memory: EEPROM), 나노와이어 기반 비-휘발성 메모리, 멤리스터 기술을 포함하는 메모리 및 비-휘발성 메모리 셀의 교차점 어레이일 수 있지만 이들로 제한되지 않는다. 비-휘발성 메모리의 교차점 어레이는 적층 가능한 교차-격자형 데이터 액세스 어레이와 함께, 벌크 저항의 변화에 기초하여 비트 저장을 수행할 수 있다. 부가적으로, 많은 플래시 기반 메모리와는 대조적으로, 교차점 비-휘발성 메모리는 제자리 기입(write in-place) 작동을 수행할 수 있고, 비-휘발성 메모리 셀은 비-휘발성 메모리 셀이 이전에 소거되는 일 없이 프로그래밍될 수 있다. 게다가, 메모리 컴포넌트(109A 내지 109N)의 메모리 셀은 데이터를 저장하도록 사용되는 메모리 컴포넌트의 장치를 나타낼 수 있는 메모리 페이지 또는 데이터 블록으로서 분류될 수 있다.
메모리 서브시스템(110)의 제어기(115)가 메모리 컴포넌트(109A 내지 109N)와 통신할 수 있어서 작동, 예컨대, 데이터의 판독, 데이터의 기입 또는 메모리 컴포넌트(109A 내지 109N)에서 데이터의 소거 및 다른 이러한 작동을 (예를 들어, 제어기(116)에 의해 명령 버스에 스케줄링된 명령에 응답하여) 수행한다. 제어기(115)는 하드웨어, 예컨대, 하나 이상의 집적 회로 및/또는 별개의 컴포넌트, 버퍼 메모리 또는 이들의 조합을 포함할 수 있다. 제어기(115)는 마이크로제어기, 특수 목적 논리 회로망(예를 들어, 필드 프로그래밍 가능한 게이트 어레이(FPGA), 응용 주문형 집적 회로(ASIC) 등) 또는 또 다른 적합한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어를 실행시키도록 구성된 처리 디바이스)(117)(프로세서)를 포함할 수 있다. 예시된 실시예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 호스트 시스템(120) 간의 통신의 조작을 포함하여, 메모리 서브시스템(110)의 작동을 제어하는 다양한 프로세스, 작동, 논리 흐름 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 내장 메모리를 포함한다. 일부 실시형태에서, 로컬 메모리(119)는 메모리 포인터, 페치된 데이터 등을 저장하는 메모리 레지스터를 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로-코드를 저장하기 위한 판독-전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)이 제어기(115)를 포함하는 것으로 예시되었지만, 본 개시내용의 또 다른 실시형태에서, 메모리 서브시스템(110)은 제어기(115)를 포함하지 않을 수도 있고 대신에 외부 제어(예를 들어, 외부 호스트에 의해 또는 메모리 서브시스템으로부터 분리된 프로세서 또는 제어기에 의해 제공됨)에 의존적일 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 명령 또는 작동을 수신할 수 있고 명령 또는 작동을 명령어 또는 적절한 명령으로 변환하여 메모리 컴포넌트(109A 내지 109N)에 대한 목적하는 액세스를 달성할 수 있다. 제어기(115)는 다른 작동, 예컨대, 웨어 레벨링(wear leveling) 작동, 가비지 수집 작동, 오류 검출 및 오류 정정 코드(error-correcting code: ECC) 작동, 암호화 작동, 캐싱 작동, 및 메모리 컴포넌트(109A 내지 109N)와 연관되는 논리 블록 어드레스와 물리 블록 어드레스 간의 어드레스 변환을 담당할 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하도록 호스트 인터페이스 회로망을 더 포함할 수 있다. 호스트 인터페이스 회로망이 호스트 시스템으로부터 수신된 명령을 명령 명령어로 변환할 수 있어서 메모리 컴포넌트(109A 내지 109N)에 액세스하고 뿐만 아니라 메모리 컴포넌트(109A 내지 109N)와 연관된 응답을 호스트 시스템(120)을 위한 정보로 변환한다.
메모리 서브시스템(110)은 또한 예시되지 않은 부가적인 회로망 또는 컴포넌트를 포함할 수 있다. 일부 실시형태에서, 메모리 서브시스템(110)은 캐시 또는 버퍼(예를 들어, DRAM) 및 제어기(115)로부터 어드레스를 수신할 수 있고 어드레스를 디코딩하여 메모리 컴포넌트(109A 내지 109N)에 액세스할 수 있는 어드레스 회로망(예를 들어, 행 디코더 및 열 디코더)을 포함할 수 있다.
컴퓨팅 시스템(100)은 사전 예방적 기입 크레딧 전송을 수행하도록 구성되는, 호스트 시스템(120) 내 기입 크레딧 관리자(112) 및 메모리 서브시스템(110) 내 기입 크레딧 관리자(113)를 포함한다. 일부 실시형태에서, 메모리 서브시스템(110) 내 제어기(115)는 기입 크레딧 관리자(113)의 적어도 일부를 포함하고; 호스트 시스템(120) 내 제어기(116)는 기입 크레딧 관리자(112)의 적어도 일부를 포함한다. 예를 들어, 제어기(115 및 116)는 각각 기입 크레딧 관리자(113 및 112)를 구현하는 논리 회로망을 포함할 수 있다. 예를 들어, 제어기(115)는 본 명세서에 설명된 기입 크레딧 관리자(113)의 작동을 수행하기 위해 로컬 메모리(119)에 저장된 명령어를 실행시키도록 구성된 처리 디바이스(117) (프로세서)를 포함할 수 있다. 예를 들어, 호스트 시스템의 처리 디바이스(118)는 본 명세서에 설명된 기입 크레딧 관리자(112)의 작동을 수행하기 위한 명령어를 실행시킬 수 있다. 일부 실시형태에서, 기입 크레딧 관리자(112 및/또는 113)는 호스트 시스템(120)의 운영 체제, 디바이스 드라이버 또는 애플리케이션의 일부이다.
메모리 서브시스템(110)의 기입 크레딧 관리자(113)는 호스트 시스템(120)으로부터 새로운 기입 명령을 수용하기 위해 메모리 서브시스템(110)의 기입 버퍼의 가용 용량을 추적한다. 기입 크레딧 관리자(113)가 호스트 시스템(120)이 가용 용량에 대한 정보를 요청할 가능성이 있다고 결정할 때, 기입 크레딧 관리자(113)는 제어기(115)가 호스트 시스템(120)의 제어기(116)에 사전 예방적으로 신호를 보내 가용 용량에 대한 정보를 검색하게 하고 따라서 호스트 시스템(120)의 제어기(116)가 이러한 정보를 요청하기 위한 명령을 발행할 필요가 없어진다. 이러한 정보를 요청하기 위해 명령을 건너 뛰면 다른 명령의 전송에 통신 자원을 사용할 수 있다. 호스트 시스템(120)의 기입 크레딧 관리자(112)는 가용 용량에 대한 정보를 획득하기 위해 이러한 사전 예방적 요청을 처리하도록 구성된다. 기입 크레딧 관리자(112 및 113)의 작동에 관한 추가의 상세사항이 아래에 설명된다.
도 2는 본 개시내용의 일부 실시형태에 따른, 기입 크레딧 관리자(112 및 113)를 포함하는 예시적인 컴퓨팅 시스템을 예시한다.
단지 도 2를 설명하는 예시의 비제한적인 목적을 위해, 호스트 시스템(120)의 제어기(116)는 때때로 이하에서 메모리 제어기(116)로서 지칭되고, 메모리 서브시스템(110)의 제어기(115)는 때때로 이하에서 매체 제어기(115)로서 지칭된다.
도 2에서, 호스트 시스템(120))과 메모리 서브시스템(110) 사이의 통신 채널은 명령 버스(121), 데이터 버스(123), 트랜잭션 버스(125) 및 메타데이터 버스(127)를 포함한다. 통신 채널을 위한 통신 프로토콜은 호스트 시스템(120)에 의한 데이터 저장 및 검색을 위해 메모리 서브시스템(110)에 대한 비동기 액세스를 허용한다. 예를 들어, 메모리 서브시스템(110)이 NVDIMM일 수 있고; 호스트 시스템(120)이 명령 버스(121), 데이터 버스(123), 트랜잭션 버스(125) 및 메타데이터 버스(127)를 사용하여 JEDEC NVDIMM-P 버스 프로토콜에 따라 메모리 제어기(116)에 액세스할 수 있다.
예를 들어, 메모리 제어기(116)는 기입 명령을 발행하여 메모리 서브시스템(110)에 데이터를 저장할 수 있다. 명령 버스(121)에 대한 기입 명령의 전송으로부터 고정되고 미리 결정된 시간 윈도우 후에, 메모리 제어기(116)는 데이터 버스(123)에서 데이터를 전송하기 시작한다. 메모리 서브시스템(110)은 미리 결정된 시간 기간 내에 기입 명령의 작동을 완료할 필요가 없다. 이러한 기입 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 XWRITE 및 PWRITE를 포함한다.
예를 들어, 메모리 제어기(116)는 판독 명령을 발행하여 메모리 서브시스템(110)으로부터 정보를 요청할 수 있다. 메모리 서브시스템(110)은 판독 명령으로부터 미리 결정된 시간 윈도우 내에 응답을 생성할 필요가 없다. 이러한 판독 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 XREAD 및 SREAD를 포함한다. XREAD에 미리 결정된 판독 ID가 제공되어 시스템 상태를 복귀시키지만 매체에 직접적으로 액세스하지 않는 정보 요청(상태_판독)임을 나타낼 수 있다.
판독 명령에 응답하여, 메모리 서브시스템(110)은 판독 명령에 의해 요청된 데이터를 준비한다. 예를 들어, 매체 제어기(115)가 매체(예를 들어, 109A,..., 또는 109N)로부터 데이터를 검색할 수 있고 검색된 데이터를 로컬 메모리(119) 또는 또 다른 메모리에서 버퍼링할 수 있어서 이러한 전송이 요청될 때 미리 결정된 시간 윈도우 내에 데이터가 메모리 제어기(116)로 성공적으로 전송될 수 있다.
요청된 데이터가 전송 준비가 되면, 메모리 서브시스템(110)은 응답 신호를 트랜잭션 버스(125)에 제공할 수 있다. 메모리 제어기(116)가 메모리 서브시스템(110)이 특정 데이터를 전송할 준비가 되었음을 통지받으면, 메모리 제어기(116)가 전송 명령을 제공하여 메모리 서브시스템(110)이 전송 명령으로부터 미리 결정된 시간 윈도우 내에 데이터 버스(123)에서 데이터 전송을 시작하도록 요청할 수 있다. 전송 명령에 응답할 때, 메모리 서브시스템(115)은 또한 트랜잭션 상태 정보, 예컨대, 대응하는 판독 명령을 식별하는 판독 ID, 아래에서 더 논의되는 바와 같은 기입 크레딧 정보, 트랜잭션에 대응하는 메타데이터 및/또는 오류 정정 코드(ECC)를 전송할 수 있다. 이러한 전송 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 SEND이다.
메모리 서브시스템(110)은 로컬 메모리(119) 또는 또 다른 메모리에서 명령 버스(121)로부터 수신된 판독 명령 및 기입 명령을 버퍼링할 수 있다. 매체 제어기(115)는 명령이 수신되는 순서와는 상이한 순서로 버퍼링된 명령을 실행시킬 수 있다.
메모리 서브시스템(110)은 보류 중인 판독 명령 및 기입 명령 및 이와 연관된 데이터를 버퍼링하기 위한 일정량의 용량을 갖는다. 메모리 제어기(116)와 매체 제어기(115)는 메모리 서브시스템(110)에서 버퍼 오버플로우를 방지하기 위해 서로 통신할 수 있다.
예를 들어, 기입 크레딧은 기입 명령 및 미리 결정된 크기의 연관된 데이터를 버퍼링하는 데 이용 가능한 버퍼 용량 단위를 나타내도록 사용될 수 있다. 일부 경우에, 기입 명령은 미리 결정된 크기보다 큰 데이터를 가질 수 있고; 이러한 기입 명령은 메모리 서브시스템(110)에서 명령 및 해당 데이터를 버퍼링하기 위한 다수의 기입 크레딧을 필요로 한다.
메모리 제어기(116)는 명령 버스(121) 상의 기입 명령을 메모리 서브시스템(110)으로 전송하기 위해 사용할 수 있는 기입 크레딧 카운트를 유지할 수 있다. 기입 명령이 명령 버스(121)를 통해 전송될 때, 메모리 제어기(116)는 기입 명령에 의해 사용된 기입 크레딧을 공제한다. 버퍼 오버플로우를 방지하기 위해, 메모리 제어기(116)는 메모리 제어기(116)가 기입 명령을 메모리 서브시스템(110)으로 전송하기 위한 충분한 기입 크레딧을 갖지 않을 때 기입 명령을 전송하지 않아야 한다.
매체 제어기(115)는 완료된 기입 명령을 위해 메모리 제어기(116)로 반환될 수 있는 기입 크레딧 카운트를 유지할 수 있다. 메모리 서브시스템(110)에서 버퍼링된 기입 명령이 완료된 후, 기입 명령에 의해 사용되는 버퍼 공간은 메모리 제어기(116)로부터 추가의 기입 명령을 수용하도록 해제될 수 있다. 완료된 기입 명령에 의해 사용되는 기입 크레딧은 메모리 제어기(116)로 반환될 수 있는 기입 크레딧 카운트에 추가될 수 있다.
메모리 서브시스템(110)이 메타데이터 버스(127)를 사용하여 메모리 제어기(116)로 반환되는 기입 크레딧의 수를 지정할 수 있다. 예를 들어, 메모리 제어기(116)가 전송 명령을 발행할 수 있도록 트랜잭션 버스(125)상에서 응답 신호를 전송한 후, 매체 제어기(115)는 메타데이터 버스(127)를 사용하여 반환된 기입 크레딧의 수를 전송할 수 있다. 메모리 서브시스템(110)은 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 XREAD 및 SREAD와 같은 판독 명령에 응답하여 이러한 응답 신호를 전송할 수 있다. 응답 신호의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 RSPx_n이다.
메모리 제어기(116)가 어드레스로부터 데이터의 검색을 요청하기 위해 판독 명령을 사용할 때, 메모리 제어기(116)는 어드레스를 지정하기 위해 판독 명령 직후에 어드레스 명령을 배치할 수 있다. 유사하게, 메모리 제어기(116)가 데이터를 어드레스에 저장하기 위해 기입 명령을 사용할 때, 메모리 제어기(116)는 어드레스를 지정하기 위해 기입 명령 직후에 어드레스 명령을 배치할 수 있다. 이러한 어드레스 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 XADR이다.
호스트 시스템(120)의 기입 크레딧 관리자(112)는 호스트 시스템(120)으로부터 전송된 기입 명령을 버퍼링하기 위해 메모리 서브시스템(110)에서 이용 가능한 것으로 알려진 버퍼 공간의 양을 나타내는 기입 크레딧의 카운터를 호스트 시스템(120)에서 갖는다.
호스트 시스템(120)이 기입 명령을 메모리 서브시스템으로 전송할 때, 호스트 시스템(120)의 기입 크레딧 관리자(112)는 기입 명령 및 해당 데이터가 차지하는 버퍼 용량에 대응하는 양만큼 기입 크레딧의 카운터를 호스트 시스템(120)에서 감소시킨다. 호스트 시스템(120)이 기입 명령을 전송하는 데 충분한 기입 크레딧을 갖지 않을 때, 호스트 시스템(120)은 메모리 서브시스템(110)에서 버퍼 오버플로우를 방지하기 위해 명령을 전송하지 않는다.
메모리 서브시스템(110)은 로컬 메모리(119) 또는 메모리 서브시스템(110)의 또 다른 메모리에 위치될 수 있는 기입 버퍼(들)를 모니터링하도록 작동 가능한 기입 크레딧 관리자(113)를 포함한다. 메모리 서브시스템(110)에서의 총 기입 크레딧 카운트는 기입 명령을 호스트 시스템(120)으로부터 메모리 서브시스템(110)으로 전송하기 위해 호스트 시스템(120)에 할당할 수 있는 총 버퍼 용량을 식별한다. 기입 명령이 버퍼링될 때, 버퍼에서 기입 명령이 차지하는 버퍼 공간의 양은 기입 명령이 사용하는 기입 크레딧의 양을 식별한다. 기입 크레딧의 양은 기입 명령과 연관된 데이터의 크기에 기초하여 결정될 수 있다. 메모리 서브시스템(110)에서 총 기입 크레딧 카운트는 메모리 서브시스템(110)으로부터 호스트 시스템(120)으로 전송되는 기입 크레딧만큼 감소될 수 있다. 전송된 기입 크레딧은 새로운 기입 명령을 전송하기 위해 호스트 시스템(120)에 의해 사용되도록 할당되는 버퍼 용량의 양을 나타낸다. 기입 명령이 실행되고/되거나 버퍼로부터 지워진 후, 총 기입 크레딧 카운트는 기입 명령이 사용하는 기입 크레딧의 양만큼 증가될 수 있다.
호스트 시스템(120)은 메모리 서브시스템(110)으로부터 기입 크레딧을 수신할 수 있고; 호스트 시스템(120)의 기입 크레딧은 기입 명령을 전송하기 위해 호스트 시스템(120)에 할당되는 버퍼 용량의 양을 나타낸다. 보통, 기입 크레딧은 호스트 시스템(120)으로부터의 정보 요청에 대한 응답으로서 메모리 서브시스템(110)으로부터 호스트 시스템(120)으로 전송된다.
하나 이상의 실시형태에서, 호스트 시스템(120)은 호스트 시스템(120)이 먼저 정보 요청을 메모리 서브시스템(110)으로 전송할 필요 없이 메모리 서브시스템(110)으로부터 기입 크레딧을 수신할 수 있다. 정보 요청의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 SREAD 및/또는 XREAD(또는 상태_판독)와 같은 판독 명령입니다.
도 3은 본 개시내용의 일부 실시형태에 따른, 기입 명령을 수용하기 위한 이용 가능한 버퍼 용량에 관한 정보를 전달하기 위한 예시적인 방법의 흐름도이다. 도 3의 방법은 하드웨어(예를 들어, 처리 디바이스, 회로망, 전용 로직, 프로그래밍 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 실행되거나 또는 수행되는 명령어) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시형태에서, 도 3의 방법은 도 1 또는 도 2의 기입 크레딧 관리자(113)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 과정의 순서는 변경될 수 있다. 따라서, 예시된 실시형태가 단지 실시예로서 이해되어야 하고, 예시된 과정이 상이한 순서로 수행될 수 있고, 일부 과정이 동시에 수행될 수 있다. 부가적으로, 하나 이상의 과정은 다양한 실시형태에서 생략될 수 있다. 따라서, 모든 과정이 모든 실시형태에서 필요한 것은 아니다. 다른 과정 흐름이 가능하다.
블록(301)에서, 매체 제어기(115)는 호스트 시스템(120)으로부터, 데이터를 메모리 서브시스템(110)의 메모리 컴포넌트(109A 내지 109N)에 저장하기 위한 기입 명령을 수신한다.
블록(303)에서, 매체 제어기(115)는 기입 명령을 메모리 서브시스템(110)의 버퍼에 저장한다. 예를 들어, 버퍼는 로컬 메모리(119) 또는 또 다른 메모리에서 구현될 수 있다.
블록(305)에서, 매체 제어기(115)는 버퍼에서 기입 명령의 적어도 일부를 실행시킨다. 기입 명령 실행이 완료되면, 기입 명령 및 해당 데이터가 버퍼로부터 지워질 수 있고; 따라서, 매체 제어기(115)는 기입 명령에 의해 이전에 사용된 버퍼 용량을 기입 명령을 수신하기 위해 이용 가능하게 만들 수 있다.
블록(307)에서, 기입 크레딧 관리자(113)는 새로운 기입 명령을 버퍼링하기 위해 이용 가능하게 되는 버퍼의 용량의 양을 결정한다. 양은 기입 크레딧의 형태일 수 있고, 각각의 기입 크레딧은 기입 명령 및/또는 해당 데이터를 버퍼링하는 데 사용 가능한 버퍼 용량의 미리 결정된 양을 나타낸다.
블록(309)에서, 기입 크레딧 관리자(113)는 메모리 서브시스템(110)이 호스트 시스템으로부터의 정보에 대한 보류 중인 요청 없이, 가용 용량의 양을 식별하는 정보를 수신하기 위해 호스트 시스템(120)으로 신호를 전송한다. 이러한 보류 중인 요청의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SREAD 또는 XREAD(또는 상태_판독)와 같은 판독 명령이다.
도 4는 본 개시내용의 일부 실시형태에 따른, 기입 크레딧을 전달하기 위한 상세한 예시적인 방법의 흐름도이다. 도 4의 방법은 하드웨어(예를 들어, 처리 디바이스, 회로망, 전용 로직, 프로그래밍 가능한 로직, 마이크로코드, 디바이스의 하드웨어, 집적 회로 등), 소프트웨어(예를 들어, 처리 디바이스에서 실행되거나 또는 수행되는 명령어) 또는 이들의 조합을 포함할 수 있는 프로세싱 로직에 의해 수행될 수 있다. 일부 실시형태에서, 도 4의 방법은 도 1 또는 도 2의 기입 크레딧 관리자(113)에 의해 수행된다. 특정한 시퀀스 또는 순서로 도시되어 있지만, 달리 명시되지 않는 한, 과정의 순서는 변경될 수 있다. 따라서, 예시된 실시형태가 단지 실시예로서 이해되어야 하고, 예시된 과정이 상이한 순서로 수행될 수 있고, 일부 과정이 동시에 수행될 수 있다. 부가적으로, 하나 이상의 과정은 다양한 실시형태에서 생략될 수 있다. 따라서, 모든 과정이 모든 실시형태에서 필요한 것은 아니다. 다른 과정 흐름이 가능하다.
블록(321)에서, 메모리 서브시스템(110)은 메모리 서브시스템(110)에서 처음에 버퍼링되는 기입 명령을 완료한다.
블록(323)에서, 기입 크레딧 관리자(113)는 실행 후 버퍼로부터 기입 명령을 지우는 것으로부터 해제된 기입 크레딧의 양을 계산한다.
블록(325)에서, 기입 크레딧 관리자(113)는 호스트 시스템(120)으로부터 기입 명령을 수용하고 버퍼링하는 데 사용될 수 있는 메모리 서브시스템(110)에서 이용 가능한 기입 크레딧의 총량을 저장하는 기입 크레딧 카운터에 양을 더한다.
블록(327)에서, 기입 크레딧 관리자(113)는 기입 크레딧의 총량이 문턱값을 초과하는지를 결정한다.
블록(329)에서, 기입 크레딧의 총량이 문턱값을 초과하면, 기입 크레딧 관리자(113)는 메모리 서브시스템(110)이 보류 중인 판독 요청에 응답하는 일 없이 응답 신호를 호스트 시스템으로 전송(329)하게 한다.
응답 신호의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 RSPx_n이고, 이것은 메모리 서브시스템(110)이 호스트 시스템(120)으로 반환할 수 있는 기입 크레딧에 대한 정보를 호스트 시스템이 메모리 서브시스템(110)으로부터 검색하게 할 수 있다.
보류 중인 판독 요청의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 상태_판독이다. 일부 경우에, 응답 신호는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SREAD 또는 XREAD(또는 상태_판독)와 같은 임의의 보류 중인 판독 명령 없이 메모리 서브시스템(110)에 의해 전송될 수 있다.
보통, 응답 신호는 호스트 시스템(120)으로부터, 요청된 정보가 전송될 준비가 되었음을 나타내는, 정보를 메모리 서브시스템(110)으로부터 요청하는 판독 명령에 응답하여 전송된다. 그러나, 기입 크레딧의 총량이 문턱값을 초과하면, 보류 중인 판독 요청에 응답하는 일 없이 응답 신호가 전송(329)될 수 있다. 이러한 상황은 기입 크레딧의 총량이 문턱값을 초과하는 경우 메모리 서브시스템(110)이 보류 중인 판독 요청을 갖지 않을 때 발생할 수 있다. 또 다른 실시예에서, 이러한 상황은 기입 크레딧의 총량이 문턱값을 초과하는 경우 메모리 서브시스템(110)이 판독 명령(예를 들어, JEDEC NVDIMM-P 버스 프로토콜에서 SREAD 또는 XREAD)을 수신했을 때 발생할 수 있지만, 판독 명령의 결과는 아직 호스트 시스템(120)으로 전송될 준비가 되어 있지 않다. 따라서, 응답 신호는 판독 명령에 대한 응답이 아니다.
그러나, 응답 신호의 전송시에 보류 중인 판독 요청에 의해 요청된 정보가 전송 준비가 되었다면, 메모리 서브시스템(110)은 판독 요청에 응답하는 것으로 응답 신호를 전송(329)할 수 있다.
블록(331)에서, 기입 크레딧의 총량이 문턱값을 초과하지 않는 경우, 기입 크레딧 관리자(113)는 기입 크레딧의 이전의 전송 이후 미리 결정된 시간 기간이 경과했는지를 결정하고; 그렇다면, 블록(329)에서, 기입 크레딧 관리자(113)는 메모리 서브시스템(110)이 보류 중인 판독 요청 없이 응답 신호를 호스트 시스템으로 전송(329)하게 한다.
블록(335)에서, 메모리 서브시스템(110)의 제어기(115)는 더 많은 기입 크레딧을 해제하기 위해 메모리 서브시스템(110)에 버퍼링된 또 다른 기입 명령을 완료하는 것과 같이, 위에서 논의된 일부 태스크를 반복하기 전에 추가의 태스크를 임의로 처리한다.
메모리 서브시스템(110)으로부터 전송된(329) 응답 신호에 응답하여, 호스트 시스템(120)의 제어기(116)는 메모리 서브시스템(110)으로부터 반환된 기입 크레딧을 식별하는 정보를 검색하는 작동을 수행할 수 있다.
예를 들어, 호스트 시스템(120)의 기입 크레딧 관리자(112)는 메타데이터 버스(127) 상에서 전송된 기입 크레딧 증분을 검색할 수 있고 호스트 시스템(120)에서 총 기입 크레딧에 증분을 추가할 수 있다.
예를 들어, 호스트 시스템(120)의 제어기(116)는 기입 크레딧 증분을 포함하여, 정보 및/또는 데이터를 호스트 시스템(120)으로 전송하도록 메모리 서브시스템(110)의 제어기(115)에 명령하기 위해 명령 버스(121) 상에서 전송 명령을 전송할 수 있다.
일부 구현예에서, 기입 크레딧 증분은 호스트 시스템(120)이 명령 버스(121)에서 전송 명령을 발행하도록 요구하는 일 없이 메타데이터 버스(127)를 사용하여 메모리 서브시스템(110)으로부터 호스트 시스템(120)으로 전송될 수 있다.
일부 구현예에서, 블록(327)에서 사용되는 문턱값은 호스트 시스템(120)으로부터의 통신에 의해 명시될 수 있다.
도 5는 기계가 본 명세서에서 논의된 방법론 중 임의의 하나 이상의 방법론을 수행하게 하기 위한, 명령어의 세트가 실행될 수 있는 컴퓨터 시스템(600)의 예시적인 기계를 예시한다. 일부 실시형태에서, 컴퓨터 시스템(600)은 메모리 서브시스템(예를 들어, 도 1의 메모리 서브시스템(110))을 포함하고, 이것에 결합되거나 또는 이것을 활용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있거나 또는 기입 크레딧 관리자(613)의 작동을 수행하도록(예를 들어, 운영 체제를 실행시켜서 도 1, 도 2, 도 3 및 도 4를 참조하여 설명된 기입 크레딧 관리자(113) 및/또는 기입 크레딧 관리자(112)에 대응하는 작동을 수행하도록) 사용될 수 있다. 대안적인 실시형태에서, 기계는 LAN, 인트라넷, 엑스트라넷 및/또는 인터넷으로 다른 기계들에 연결(예를 들어, 네트워킹)될 수 있다. 기계는 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 기계의 용량으로, 피어-투-피어(또는 분산) 네트워크 환경에서 피어 기계로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서 서버 또는 클라이언트 기계로서 작동할 수 있다.
기계는 개인용 컴퓨터(personal computer: PC), 태블릿 PC, 셋탑박스(set-top box: STB), 개인용 디지털 보조 장치(Personal Digital Assistant: PDA), 휴대폰, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브릿지, 또는 해당 기계에 의해 수행될 조치를 명시하는 명령어 세트를 (순차적으로 또는 다른 방식으로) 실행할 수 있는 임의의 기계일 수 있다. 게다가, 단일 기계가 예시되어 있지만, 용어 "기계"는 또한 본 명세서에서 논의된 방법론 중 임의의 하나 이상의 방법론을 수행하기 위해 명령어 세트(또는 다수의 세트)를 개별적으로 또는 공통으로 실행하는 임의의 기계 컬렉션을 포함하는 것으로 간주해야 한다.
예시적인 컴퓨터 시스템(600)은 버스(630)(다수의 버스를 포함할 수 있음)를 통해 서로 통신하는, 처리 디바이스(602), 메인 메모리(604)(예를 들어, 판독-전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 예컨대, 동기식 DRAM(SDRAM) 또는 램버스 DRAM(Rambus DRAM: RDRAM), 정적 랜덤 액세스 메모리(SRAM) 등), 및 데이터 저장 시스템(618)을 포함한다.
처리 디바이스(602)는 하나 이상의 범용 처리 디바이스, 예컨대, 마이크로프로세서, 중앙 처리 장치(CPU) 등을 나타낸다. 보다 구체적으로, 처리 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서 또는 다른 명령어 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일수 있다. 처리 디바이스(602)는 또한 하나 이상의 특수 목적 처리 디바이스, 예컨대, 응용 주문형 집적 회로(ASIC), 필드 프로그래밍 가능한 게이트 어레이(FPGA), 디지털 신호 프로세서(digital signal processor: DSP), 그래픽 처리 장치(graphics processing unit: GPU), 네트워크 프로세서 등일 수 있다. 처리 디바이스(602)는 본 명세서에서 논의된 작동 및 단계를 수행하기 위한 명령어(626)를 실행시키도록 구성된다. 컴퓨터 시스템(600)은 네트워크(620)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(608)를 더 포함할 수 있다.
데이터 저장 시스템(618)은 본 명세서에서 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 소프트웨어 또는 명령어(626)의 하나 이상의 세트가 저장되는 기계-판독 가능한 저장 매체(624)(컴퓨터-판독 가능한 매체로서 알려짐)를 포함할 수 있다. 명령어(626)는 또한 기계-판독 가능한 저장 매체를 구성하는 컴퓨터 시스템(600), 메인 메모리(604) 및 처리 디바이스(602)에 의한 실행 동안 메인 메모리(604) 내에 그리고/또는 처리 디바이스(602) 내에 완전히 또는 적어도 부분적으로 또한 존재할 수 있다. 기계-판독 가능한 저장 매체(624), 데이터 저장 시스템(618) 및/또는 메인 메모리(604)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
하나의 실시형태에서, 명령어(626)는 기입 크레딧 관리자(613)(예를 들어, 도 1, 도 2, 도 3 및 도 4를 참조하여 설명된 기입 크레딧 관리자(113) 및/또는 기입 크레딧 관리자(112))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 기계-판독 가능한 저장 매체(624)가 예시적인 실시형태에서 단일 매체인 것으로 도시되어 있지만, 용어 "기계-판독 가능한 저장 매체"는 명령어의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체를 포함하는 것으로 간주되어야 한다. 용어 "기계-판독 가능한 저장 매체"는 또한 기계에 의한 실행 동안 명령어의 세트를 저장하거나 또는 인코딩할 수 있고 기계가 본 개시내용의 방법론 중 임의의 하나 이상의 방법론을 수행하게 하는 임의의 매체를 포함하는 것으로 간주되어야 한다. 따라서 용어 "기계-판독 가능한 저장 매체"는 솔리드 스테이트 메모리, 광매체 및 자기 매체를 포함하지만 이들로 제한되지 않는 것으로 간주되어야 한다.
전술한 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 관한 작동의 알고리즘들 및 상징적 표현의 면에서 제시되었다. 이 알고리즘 설명 및 표현은 데이터 처리 분야의 당업자가 그들 작업의 실체를 다른 분야의 당업자에게 가장 효과적으로 전달하기 위해 사용되는 방식이다. 알고리즘은 여기서 그리고 일반적으로 원하는 결과를 도출하는 자기 모순 없는(self-consistent) 작동 시퀀스인 것으로 생각된다. 작동은 물리적 수량의 물리적 조작을 필요로 하는 것이다. 일반적으로, 반드시 그러한 것은 아니지만, 이러한 수량은 저장되고, 결합되고, 비교되고 다른 방식으로 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이러한 신호를 비트, 값, 구성요소, 심볼, 문자, 용어, 숫자 등으로서 나타내는 것이 주로 일반적인 사용의 이유로, 때때로 편리한 것으로 입증되었다.
그러나, 이러한 그리고 유사한 용어 모두는 적절한 물리량과 연관되고 이러한 수량에 적용되는 편리한 라벨일 뿐임을 명심해야 한다. 본 개시내용은 컴퓨터 시스템의 레지스터 및 메모리 내 물리적(전자) 수량으로서 표현된 데이터를 조작하고 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장 시스템 내 물리량으로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 작동 및 프로세스를 나타낼 수 있다.
본 개시내용은 또한 본 명세서의 작동을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나 또는 장치는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 컴퓨터 시스템 버스에 각각 결합되는, 예컨대, 플로피 디스크, 광디스크, CD-ROM, 및 자기-광학 디스크, 판독-전용 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령어를 저장하기에 적합한 임의의 유형의 매체로 제한되지 않는 컴퓨터 판독 가능한 저장 매체에 저장될 수 있다.
본 명세서에 제시된 알고리즘 및 디스플레이는 본질적으로 임의의 특정한 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 범용 시스템은 본 명세서의 교시내용에 따른 프로그램과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 특화된 장치를 구성하는 것이 편리하다는 것을 입증할 수 있다. 다양한 이 시스템의 구조는 아래의 설명에서 제시되는 것으로 나타날 것이다. 또한, 본 개시내용은 임의의 특정한 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같이 본 개시내용의 교시내용을 구현하는 데 사용될 수 있음이 이해될 것이다.
본 개시내용은 본 개시내용에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스)을 프로그래밍하는 데 사용될 수 있는, 명령어가 저장된 기계-판독 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 기계-판독 가능한 매체는 기계(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시형태에서, 기계-판독 가능한(예를 들어, 컴퓨터-판독 가능한) 매체는 기계(예를 들어, 컴퓨터) 판독 가능한 저장 매체, 예컨대, 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 컴포넌트들 등을 포함한다.
전술한 명세서에서, 본 개시내용의 실시형태는 특정한 예시적인 실시형태를 참조하여 설명되었다. 다음의 청구범위에 제시된 바와 같은 본 개시내용의 실시형태의 더 넓은 정신 및 범위를 벗어나는 일 없이 다양한 변형이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 메모리 시스템으로서,
    복수의 메모리 컴포넌트; 및
    상기 복수의 메모리 컴포넌트와 작동 가능하게 결합된 처리 디바이스를 포함하되, 상기 처리 디바이스는,
    호스트 시스템으로부터, 기입 명령을 수신하여 데이터를 상기 메모리 컴포넌트에 저장하고;
    상기 기입 명령을 버퍼에 저장하고;
    상기 기입 명령의 적어도 일부를 실행시키고;
    상기 기입 명령의 상기 적어도 일부의 실행 후 이용 가능하게 되는 상기 버퍼의 가용 용량의 양을 결정하고; 그리고
    상기 호스트 시스템으로 신호를 전송하여 상기 호스트 시스템으로부터 수신된 보류 중인 정보 요청 없이, 상기 가용 용량의 양을 식별하는 정보를 수신하는, 메모리 시스템.
  2. 제1항에 있어서, 상기 메모리 컴포넌트는 비-휘발성 메모리를 포함하고; 상기 메모리 시스템은,
    상기 기입 명령을 전송하는 명령 버스;
    상기 기입 명령에 의해 저장되도록 요청된 상기 데이터를 전송하는 데이터 버스; 및
    상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송하는 트랜잭션 버스를 통해 상기 호스트 시스템에 결합되는, 메모리 시스템.
  3. 제2항에 있어서, 상기 처리 디바이스는 또한,
    상기 호스트 시스템으로부터 정보에 대한 보류 중인 요청 없이 상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송할지 안 할지를 결정하는, 메모리 시스템.
  4. 제3항에 있어서, 상기 호스트 시스템으로부터 정보에 대한 보류 중인 요청 없이 상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송할지 안 할지를 결정하는 것은 상기 가용 용량의 양이 문턱값을 초과하는지에 기초하는, 메모리 시스템.
  5. 제4항에 있어서, 상기 처리 디바이스는 또한,
    상기 호스트 시스템으로부터 상기 문턱값을 수신하는, 메모리 시스템.
  6. 제4항에 있어서, 상기 처리 디바이스는 또한,
    상기 양이 상기 문턱값을 미만이라면, 기입 명령을 버퍼링하기 위한 가용 용량과 관련된 정보의 이전의 전송 이후 미리 결정된 시간 기간이 경과했는지를 결정하는, 메모리 시스템.
  7. 제6항에 있어서, 상기 호스트 시스템은 상기 미리 결정된 시간 기간이 경과했다는 결정에 응답하여 상기 가용 용량의 양을 식별하는 상기 정보를 수신하기 위해 시그널링되는, 메모리 시스템.
  8. 제1항에 있어서, 상기 기입 명령은 비휘발성 듀얼 인라인 메모리 모듈을 위한 통신 프로토콜을 따르는, 메모리 시스템.
  9. 방법으로서,
    메모리 버스를 통해 호스트 시스템에 연결된 메모리 모듈에서, 데이터를 상기 메모리 모듈의 하나 이상의 메모리 컴포넌트에 저장하기 위한 기입 명령을 수신하는 단계;
    상기 메모리 모듈의 버퍼에서, 상기 기입 명령을 큐잉하는 단계;
    상기 메모리 모듈의 제어기에 의해, 상기 버퍼로부터 상기 기입 명령의 적어도 일부를 실행시키는 단계;
    상기 기입 명령의 상기 적어도 일부의 실행의 결과로서 해제되는 상기 버퍼의 가용 용량의 양을 결정하는 단계; 및
    상기 호스트 시스템으로부터 메모리 모델에서 수신된 보류 중인 정보 요청 없이, 상기 가용 용량의 양을 식별하는 정보를 수신하도록 상기 호스트 시스템에 요청하기 위해 상기 메모리 버스를 통해 상기 호스트 시스템으로 신호를 전송하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 하나 이상의 메모리 컴포넌트는 비-휘발성 메모리를 포함하고; 상기 메모리 버스는,
    상기 기입 명령을 전송하는 명령 버스;
    상기 기입 명령에 의해 저장되도록 요청된 상기 데이터를 전송하는 데이터 버스; 및
    상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송하는 트랜잭션 버스를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 호스트 시스템으로부터 정보에 대한 보류 중인 요청 없이 상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송할지 안 할지를 결정하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 결정하는 단계는 상기 가용 용량의 양이 문턱값을 초과하는지에 기초하는, 방법.
  13. 제12항에 있어서,
    상기 호스트 시스템으로부터 상기 문턱값을 수신하는 단계를 더 포함하는, 방법.
  14. 제12항에 있어서,
    상기 양이 상기 문턱값 미만이라면, 기입 명령을 버퍼링하기 위한 가용 용량과 관련된 정보의 이전의 전송 이후 미리 결정된 시간 기간이 경과했는지를 결정하는 단계를 더 포함하는, 방법.
  15. 제14항에 있어서, 상기 신호는 상기 미리 결정된 시간 기간이 경과했다는 결정에 응답하여 전송되는, 방법.
  16. 제9항에 있어서, 상기 기입 명령은 비휘발성 듀얼 인라인 메모리 모듈을 위한 통신 프로토콜을 따르는, 방법.
  17. 명령어를 저장하는 비일시적 컴퓨터-판독 가능한 저장 매체로서, 상기 명령어는, 처리 디바이스에 의해 실행될 때, 상기 처리 디바이스로 하여금,
    메모리 버스를 통해 호스트 시스템에 연결된 메모리 모듈에서, 기입 명령을 수신하여 데이터를 상기 메모리 모듈의 상기 메모리 컴포넌트에 저장하게 하고;
    상기 기입 명령을 상기 메모리 모듈의 버퍼에 저장하게 하고;
    상기 메모리 모듈의 상기 처리 디바이스에 의해, 상기 버퍼로부터 상기 기입 명령의 적어도 일부를 실행시키게 하고;
    상기 기입 명령의 상기 적어도 일부의 실행의 결과로서 해제되는 상기 버퍼의 가용 용량의 양을 결정하게 하고; 그리고
    상기 호스트 시스템으로부터 메모리 모델에서 수신된 보류 중인 정보 요청 없이, 상기 가용 용량의 양을 식별하는 정보를 수신하도록 상기 호스트 시스템에 요청하기 위해 상기 메모리 버스를 통해 상기 호스트 시스템으로 신호를 전송하게 하는, 비일시적 컴퓨터-판독 가능한 저장 매체.
  18. 제17항에 있어서, 상기 하나 이상의 메모리 컴포넌트는 비-휘발성 메모리를 포함하고; 상기 메모리 버스는,
    비휘발성 듀얼 인라인 메모리 모듈을 위한 통신 프로토콜을 따르는 상기 기입 명령을 전송하는 명령 버스;
    상기 기입 명령에 의해 저장되도록 요청된 상기 데이터를 전송하는 데이터 버스; 및
    상기 가용 용량의 양을 식별하는 상기 정보를 수신하도록 상기 호스트 시스템으로 신호를 전송하는 트랜잭션 버스를 포함하는, 비일시적 컴퓨터-판독 가능한 저장 매체.
  19. 제18항에 있어서, 상기 명령어는 상기 처리 디바이스가 또한,
    상기 양이 문턱값 미만이라면, 기입 명령을 버퍼링하기 위한 가용 용량과 관련된 정보의 이전의 전송 이후 미리 결정된 시간 기간이 경과했는지를 결정하게 하고, 상기 신호는 상기 미리 결정된 시간 기간이 경과했다는 결정에 응답하여 전송되는, 비일시적 컴퓨터-판독 가능한 저장 매체.
  20. 제19항에 있어서, 상기 명령어는 상기 처리 디바이스가 또한,
    상기 호스트 시스템이 상기 가용 용량의 양을 식별하는 상기 정보를 수신하는 일 없이 상기 신호가 타임 아웃되었다고 결정하고 이에 응답하여, 지연 기간 후 상기 신호를 재전송하게 하는, 비일시적 컴퓨터-판독 가능한 저장 매체.
KR1020217006487A 2018-08-08 2019-07-24 메모리 시스템 내 기입 크레딧의 사전 예방적 반환 KR20210030480A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/058,733 US10782916B2 (en) 2018-08-08 2018-08-08 Proactive return of write credits in a memory system
US16/058,733 2018-08-08
PCT/US2019/043318 WO2020033154A1 (en) 2018-08-08 2019-07-24 Proactive return of write credits in a memory system

Publications (1)

Publication Number Publication Date
KR20210030480A true KR20210030480A (ko) 2021-03-17

Family

ID=69407181

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006487A KR20210030480A (ko) 2018-08-08 2019-07-24 메모리 시스템 내 기입 크레딧의 사전 예방적 반환

Country Status (5)

Country Link
US (2) US10782916B2 (ko)
EP (1) EP3834068A4 (ko)
KR (1) KR20210030480A (ko)
CN (1) CN112534393A (ko)
WO (1) WO2020033154A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437496B1 (en) * 2017-05-10 2019-10-08 Yellowbrick Data, Inc. System and method for managing buffers in a computer system
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US11199998B2 (en) * 2019-08-02 2021-12-14 Samsung Electronics Co., Ltd. Non-volatile dual in-line memory module (NVDIMM) device assisted operations management
US11231879B2 (en) * 2020-02-28 2022-01-25 Micron Technology, Inc. Dedicated design for testability paths for memory sub-system controller
US20210306997A1 (en) * 2020-03-27 2021-09-30 Qualcomm Incorporated Sidelink feedback format
US11362939B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Flow control for a multiple flow control unit interface
US11588745B2 (en) * 2020-08-31 2023-02-21 Micron Technology, Inc. Early credit return for credit-based flow control
US11356378B2 (en) 2020-08-31 2022-06-07 Micron Technology, Inc. Combined write enable mask and credit return field
US11580044B2 (en) 2020-08-31 2023-02-14 Micron Technology, Inc. Network credit return mechanisms
US11372544B2 (en) * 2020-09-24 2022-06-28 Netapp, Inc. Write type based crediting for block level write throttling to control impact to read input/output operations
US11836096B2 (en) * 2021-12-22 2023-12-05 Micron Technology, Inc. Memory-flow control register

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561823A (en) 1994-03-14 1996-10-01 Conner Peripherals, Inc. Monitor system for determining the available capacity of a READ buffer and a WRITE buffer in a disk drive system
US6122717A (en) * 1996-06-17 2000-09-19 Integrated Device Technology, Inc. Methods and apparatus for a memory that supports a variable number of bytes per logical cell and a variable number of cells
US8051197B2 (en) * 2002-03-29 2011-11-01 Brocade Communications Systems, Inc. Network congestion management systems and methods
WO2005096220A1 (ja) * 2004-03-31 2005-10-13 Matsushita Electric Industrial Co., Ltd. メモリカード及びメモリカードシステム
WO2006006694A1 (en) 2004-07-12 2006-01-19 Kabushiki Kaisha Toshiba Storage device and host apparatus
US7707266B2 (en) 2004-11-23 2010-04-27 Intel Corporation Scalable, high-performance, global interconnect scheme for multi-threaded, multiprocessing system-on-a-chip network processor unit
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US7649788B2 (en) 2006-01-30 2010-01-19 Unity Semiconductor Corporation Buffering systems for accessing multiple layers of memory in integrated circuits
US8239611B2 (en) * 2007-12-28 2012-08-07 Spansion Llc Relocating data in a memory device
US7865658B2 (en) * 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
US8667254B1 (en) 2008-05-15 2014-03-04 Xilinx, Inc. Method and apparatus for processing data in an embedded system
US20120221767A1 (en) * 2011-02-28 2012-08-30 Apple Inc. Efficient buffering for a system having non-volatile memory
JP5817193B2 (ja) * 2011-04-15 2015-11-18 セイコーエプソン株式会社 記録装置、記録装置の制御方法、及び、プログラム
US10031850B2 (en) * 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US8484391B2 (en) * 2011-06-20 2013-07-09 Intel Corporation Configurable buffer allocation for multi-format video processing
TWI467372B (zh) * 2011-07-06 2015-01-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9251108B2 (en) * 2012-11-05 2016-02-02 International Business Machines Corporation Managing access to shared buffer resources
US8938561B2 (en) 2013-01-10 2015-01-20 Skymedi Corporation Time-sharing buffer access system
CN104981872B (zh) * 2013-03-15 2018-11-06 英特尔公司 存储系统
US9552323B1 (en) * 2013-07-05 2017-01-24 Altera Corporation High-speed peripheral component interconnect (PCIe) input-output devices with receive buffer management circuitry
US9170939B1 (en) * 2013-09-26 2015-10-27 Western Digital Technologies, Inc. Early de-allocation of write buffer in an SSD
JP6548483B2 (ja) 2015-06-30 2019-07-24 キヤノン株式会社 複数のデータ処理部でバッファを共有するデータ制御装置、制御方法
US20170123721A1 (en) * 2015-10-28 2017-05-04 Sandisk Technologies Inc. System and method for utilization of a data buffer by command completion in parts
KR102576630B1 (ko) 2015-12-10 2023-09-08 삼성전자주식회사 디코더의 동작 방법, 및 상기 디코더를 포함하는 어플리케이션 프로세서의 동작 방법
US20180059933A1 (en) 2016-08-26 2018-03-01 Sandisk Technologies Llc Electrically-Buffered NV-DIMM and Method for Use Therewith
US10534709B2 (en) * 2016-08-31 2020-01-14 Sandisk Technologies Llc Flush command consolidation
CN107885671B (zh) 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10282097B2 (en) 2017-01-05 2019-05-07 Western Digital Technologies, Inc. Storage system and method for thin provisioning
WO2018232736A1 (zh) 2017-06-23 2018-12-27 华为技术有限公司 内存访问技术及计算机系统
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests

Also Published As

Publication number Publication date
WO2020033154A1 (en) 2020-02-13
US10782916B2 (en) 2020-09-22
US11650755B2 (en) 2023-05-16
US20200409606A1 (en) 2020-12-31
CN112534393A (zh) 2021-03-19
US20200050398A1 (en) 2020-02-13
EP3834068A1 (en) 2021-06-16
EP3834068A4 (en) 2022-05-04

Similar Documents

Publication Publication Date Title
US11650755B2 (en) Proactive return of write credits in a memory system
US11573700B2 (en) Buffer management in memory systems for read and write requests
US11983435B2 (en) Optimize information requests to a memory system
US11740833B2 (en) Throttle response signals from a memory system
US11669451B2 (en) Multi-plane switching of non-volatile memory
US20230161509A1 (en) Dynamic selection of cores for processing responses
KR20210045507A (ko) 데이터 버스 모드에 기초하는 읽기 작업 및 쓰기 작업의 스케줄링
US20220050772A1 (en) Data block switching at a memory sub-system
US11531622B2 (en) Managing data dependencies for out of order processing in a hybrid DIMM
WO2021179163A1 (en) Methods, systems and readable storage mediums for managing queues of amemory sub-system
US11899972B2 (en) Reduce read command latency in partition command scheduling at a memory device
US11763900B2 (en) Resumption of program or erase operations in memory

Legal Events

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