KR20210029833A - 읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리 - Google Patents

읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리 Download PDF

Info

Publication number
KR20210029833A
KR20210029833A KR1020217006513A KR20217006513A KR20210029833A KR 20210029833 A KR20210029833 A KR 20210029833A KR 1020217006513 A KR1020217006513 A KR 1020217006513A KR 20217006513 A KR20217006513 A KR 20217006513A KR 20210029833 A KR20210029833 A KR 20210029833A
Authority
KR
South Korea
Prior art keywords
read
write
host system
memory
buffer
Prior art date
Application number
KR1020217006513A
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 KR20210029833A publication Critical patent/KR20210029833A/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/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/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
    • 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/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/0608Saving storage space on 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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)

Abstract

메모리 구성요소 및 처리 장치를 갖는 메모리 시스템으로서: 호스트 시스템으로부터 쓰기 요청을 수신하고; 쓰기 요청이 메모리 시스템에서 보류 중인 제 1 기간 동안 메모리 시스템의 버퍼의 일부에 쓰기 요청의 데이터를 저장하며; 호스트 시스템으로부터 읽기 요청을 수신하고; 읽기 요청이 메모리 시스템에서 보류 중인 제 2 기간 동안 버퍼의 일부에 읽기 요청의 데이터를 저장한다. 쓰기 요청의 데이터를 저장하는 버퍼의 일부는 읽기 요청의 데이터를 저장하는 버퍼의 일부와 적어도 부분적으로 겹쳐진다.

Description

읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리
관련 출원
본 출원은 "Buffer Management in Memory Systems for Read and Write Requests"을 발명의 명칭으로 하여 2018년 8월 8일에 출원된 미국특허출원 제 16/058,102 호의 출원일에 기초한 우선권을 주장하며, 그 내용 전문은 본 발명에 참고자료로 포함된다.
기술 분야
본 명세서에 개시된 적어도 일부 실시예는 일반적으로 메모리 시스템에 관한 것이고, 특히, 읽기 및 쓰기 요청을 위한 메모리 시스템에서의 버퍼 관리에 관한 것이다.
메모리 서브시스템은 SSD(Solid-State Drive)와 같은 스토리지 시스템이거나 NVDIMM(Non-Volatile Dual In-line Memory Module)과 같은 메모리 모듈일 수 있으며, 데이터를 저장하는 하나 이상의 메모리 구성요소를 포함할 수 있다. 메모리 구성요소는 예를 들어 비휘발성 메모리 구성요소 및 휘발성 메모리 구성요소일 수 있다. 일반적으로 호스트 시스템은 메모리 서브시스템을 사용하여 메모리 구성요소에 데이터를 저장하고 메모리 구성요소로부터 데이터를 불러올 수 있다.
표준화된 통신 프로토콜에 따라 호스트 시스템이 메모리 서브시스템과 통신하여 데이터를 저장하고 데이터를 불러올 수 있다.
예를 들어, 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는 본 개시의 일부 실시예에 따른 요청 관리자 및 버퍼 관리자를 포함하는 예시적인 컴퓨팅 시스템을 도시한다.
도 3a 내지 3c는 본 개시의 일부 실시예에 따른 예시적인 버퍼 구성을 도시한다.
도 4 내지 9는 본 개시의 일부 실시예에 따른 읽기 동작 또는 쓰기 동작과 관련하여 버퍼 용량 추적의 예를 예시하는 시퀀스 다이어그램을 도시한다.
도 10은 본 개시의 일부 실시예에 따른 읽기 요청 및 쓰기 요청에 대해 공유되는 버퍼를 관리하는 예시적인 방법의 흐름도이다.
도 11 및 12는 본 개시의 일부 실시예에 따라 메모리 서브시스템에 대한 요청을 관리하는 예시적인 방법의 흐름도이다.
도 13은 본 개시의 실시예가 동작할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 개시의 적어도 일부 양상들은 실행을 위해 호스트 시스템으로부터 메모리 서브시스템으로 전송되는 읽기 및 쓰기 요청을 버퍼링할 때 통신 병목 현상을 감소시킬 수 있는 개선된 버퍼 관리 기술에 관한 것이다. 메모리 서브시스템은 이하 "메모리 디바이스"라고도한다. 메모리 서브시스템의 예로는 DIMM(Dual In-line Memory Module), SO-DIMM(Small Outline DIMM), NVDIMM(비휘발성 듀얼 인라인 메모리 모듈) 등과 같은 메모리 버스를 통해 CPU(중앙 처리 장치)에 연결된 메모리 모듈이 있다. 메모리 서브시스템의 또 다른 예는 SSD(Solid-State Drive)와 같은 스토리지 시스템이다. 일부 실시예에서, 메모리 서브시스템은 메모리 기능 및 저장 기능 모두를 제공하는 하이브리드 메모리/저장 서브시스템이다. 일반적으로 호스트 시스템은 하나 이상의 메모리 구성요소를 포함하는 메모리 서브시스템을 사용할 수 있다. 호스트 시스템은 메모리 서브시스템에 저장할 데이터를 제공할 수 있으며 메모리 서브시스템에서 불러올 데이터를 요청할 수 있다.
NVDIMM-P 버스를 사용하여 연결된 호스트 시스템 및 메모리 서브시스템과 같은 일부 컴퓨터 시스템에서, 서브시스템은 미리 결정되지 않은 소정 기간 실행을 위해 호스트 시스템으로부터의 읽기 명령 및 쓰기 명령을 버퍼링할 수 있다. 메모리 서브시스템은 명령이 메모리 서브시스템에서 수신되는 순서대로 읽기 명령과 쓰기 명령을 실행할 필요가 없다. 그러나 읽기 버퍼가 메모리 서브시스템에서 가득 차면 호스트 시스템은, 읽기 버퍼의 일부 읽기 명령이 완료되어 읽기 버퍼로부터 제거될 때까지, 메모리 서브시스템에 추가의 읽기 명령을 보낼 수 없다. 그리고 쓰기 버퍼가 메모리 서브시스템에서 가득 차면, 호스트 시스템은, 쓰기 버퍼의 쓰기 명령 중 일부가 완료되고 쓰기 버퍼에서 제거될 때까지, 메모리 서브시스템에 추가의 쓰기 명령을 보낼 수 없다. .
본 개시의 적어도 일부 양상들은 메모리 서브시스템의 버퍼의 적어도 일부가 필요에 따라 읽기 명령 및 쓰기 명령을 버퍼링하는 데 사용될 수 있도록함으로써 상기 및 다른 결함을 해결한다. 호스트 시스템이 더 많은 쓰기 명령을 보내야하는 경우 읽기와 쓰기간에 공유되는 이 부분을 메모리 서브시스템으로 쓰기 명령을 전송하는 데 사용할 수 있다. 호스트 시스템이 더 많은 읽기 명령을 보내야하는 경우 읽기와 쓰기 간에 공유되는 이 부분을 메모리 서브시스템에 읽기 명령을 전송하는 데 사용할 수 있다. 호스트 시스템은 읽기 명령에 사용 가능한 버퍼 용량 식별, 쓰기 명령에 사용 가능한 버퍼 용량 식별, 쓰기 명령에 대한 가용 버퍼 용량 식별, 및/또는 읽기 및 쓰기 명령에 사용 가능한 총 버퍼 용량 식별을 사용하여 읽기 명령 및 쓰기 명령에 사용 가능한 버퍼 용량을 추적할 수 있다.
도 1은 본 개시의 일부 실시예에 따른 메모리 서브시스템(110)을 갖는 예시적인 컴퓨팅 시스템(100)을 도시한다. 메모리 서브시스템(110)은 메모리 구성요소(109A 내지 109N)와 같은 매체를 포함할 수 있다. 메모리 구성요소(109A 내지 109N)는 휘발성 메모리 구성요소, 비휘발성 메모리 구성요소, 또는 이들의 조합일 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 메모리 모듈이다. 메모리 모듈의 예로는 DIMM, NVDIMM 및 NVDIMM-P가 있다. 일부 실시예에서, 메모리 서브시스템은 스토리지 시스템이다. 스토리지 시스템의 예는 SSD이다. 일부 실시예에서, 메모리 서브시스템(110)은 하이브리드 메모리/스토리지 서브시스템이다. 일반적으로, 컴퓨팅 환경은 메모리 서브시스템(110)을 사용하는 호스트 시스템(120)을 포함할 수 있다. 예를 들어, 호스트 시스템(120)은 메모리 서브시스템(110)에 데이터를 기록하고 메모리 서브시스템(110)으로부터 데이터를 읽을 수 있다.
호스트 시스템(120)은 데스크탑 컴퓨터, 랩톱 컴퓨터, 네트워크 서버, 모바일 장치, 또는 메모리 및 처리 장치를 포함하는 그러한 컴퓨팅 장치와 같은 컴퓨팅 장치일 수 있다. 호스트 시스템(120)은 호스트 시스템(120)이 메모리 서브시스템(110)에서 데이터를 읽거나 데이터를 기록할 수 있도록 메모리 서브시스템(110)을 포함하거나 이에 연결될 수 있다. 호스트 시스템(120)은 물리적 호스트 인터페이스를 통해 메모리 서브시스템(110)에 연결될 수 있다. 본 명세서에서 사용되는 바와 같이, "결합된"은 일반적으로 전기, 광학, 자기와 같은 연결을 포함하여 유선이든 무선이든 간접 통신 연결 또는 직접 통신 연결(예를 들어, 중간 구성요소 없음)일 수 있는 구성요소 간의 연결을 의미한다. 물리적 호스트 인터페이스의 예로는 SATA(Serial Advanced Technology Attached) 인터페이스, PCIe(Peripheral Component Interconnect Express) 인터페이스, USB(Universal Serial Bus) 인터페이스, Fibre Channel, Serial Attached SCSI(SAS), DDR(double data rate) 메모리 버스 등이 있으나 이에 제한되지 않는다. 물리적 호스트 인터페이스는 호스트 시스템(120)과 메모리 서브시스템(110) 사이에서 데이터를 전송하는 데 사용될 수 있다. 호스트 시스템(120)은 메모리 서브시스템(110)이 PCIe 인터페이스에 의해 호스트 시스템(120)과 결합될 때 메모리 구성요소(109A 내지 109N)에 액세스하기 위해 NVM Express(NVMe) 인터페이스를 또한 이용할 수 있다. 물리적 호스트 인터페이스는 메모리 서브시스템(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)는 마이크로 제어기, 특수 목적 논리 회로(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등) 또는 다른 적절한 프로세서일 수 있다.
메모리 구성요소(109A 내지 109N)는 상이한 유형의 비휘발성 메모리 구성요소 및/또는 휘발성 메모리 구성요소의 임의의 조합을 포함할 수 있다. 비휘발성 메모리 구성요소의 예로는 NAND(네거티브-앤드) 유형 플래시 메모리가 있다. 메모리 구성요소(109A 내지 109N) 각각은 단일 레벨 셀(SLC) 또는 다중 레벨 셀(MLC)(예: 트리플 레벨 셀(TLC) 또는 쿼드 레벨 셀(QLC))과 같은 하나 이상의 메모리 셀 어레이를 포함할 수 있다. 일부 실시예에서, 특정 메모리 구성요소는 메모리 셀의 SLC 부분 및 MLC 부분 모두를 포함할 수 있다. 메모리 셀 각각은 호스트 시스템(120)에 의해 사용되는 하나 이상의 데이터 비트(예를 들어, 데이터 블록)를 저장할 수 있다. NAND 유형 플래시 메모리와 같은 비휘발성 메모리 구성요소가 설명되지만, 메모리 구성요소(109A 내지 109N)는 휘발성 메모리와 같은, 다른 유형의 메모리에 기초할 수 있다. 일부 실시예들에서, 메모리 구성요소들(109A 내지 109N)은 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 동기식 동적 랜덤 액세스 메모리(SDRAM), 상 변화 메모리(PCM), 자기 랜덤 액세스 메모리(MRAM), 스핀 전송 토크(STT)-MRAM, 강유전성 랜덤 액세스 메모리(FeTRAM), 강유전성 RAM(FeRAM), 전도성 브리징 RAM(CBRAM), 저항성 랜덤 액세스 메모리(RRAM), 산화물 기반 RRAM(OxRAM), 네거티브-오아(NOR) 플래시 메모리, EEPROM(전기적으로 지울 수 있는 프로그래밍 가능 읽기 전용 메모리), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술이 통합된 메모리 및 비휘발성 메모리 셀의 교차점 어레이일 수 있지만 이에 제한되지는 않는다. 비휘발성 메모리의 교차점 배열은 스택형 교차 그리드 데이터 액세스 배열과 연계된, 벌크 저항의 변화를 기반으로 비트 저장을 수행할 수 있다. 또한, 많은 플래시 기반 메모리와 달리 교차점 비휘발성 메모리는 제자리에 쓰기(write in-place) 작업을 수행할 수 있으며, 여기서 비휘발성 메모리 셀은 비휘발성 메모리 셀을 미리 삭제하지 않고도 프로그래밍할 수 있다. 또한, 메모리 구성요소(109A 내지 109N)의 메모리 셀은 데이터를 저장하는 데 사용되는 메모리 구성요소의 단위를 참조할 수 있는 메모리 페이지 또는 데이터 블록으로 그룹화될 수 있다.
메모리 서브시스템(110)의 제어기(115)는 메모리 구성요소(109A 내지 109N)와 통신하여(예를 들어, 제어기(116)에 의해 명령 버스에 스케줄링된 명령에 응답하여), 메모리 구성요소(109A 내지 109N)에서 데이터 읽기, 데이터 쓰기 또는 데이터 지우기와 같은 동작 및 기타 이러한 동작을 수행할 수 있다. 제어기(115)는 하나 이상의 집적 회로 및/또는 개별 구성요소, 버퍼 메모리 또는 이들의 조합과 같은 하드웨어를 포함할 수 있다. 제어기(115)는 마이크로 제어기, 특수 목적 논리 회로(예를 들어, FPGA(field programmable gate array), ASIC(application specific integrated circuit) 등), 또는 다른 적절한 프로세서일 수 있다. 제어기(115)는 로컬 메모리(119)에 저장된 명령어를 실행하도록 구성된 처리 장치(117)(프로세서)를 포함할 수 있다. 예시된 예에서, 제어기(115)의 로컬 메모리(119)는 메모리 서브시스템(110)과 호스트 시스템(120) 간의 통신 처리를 포함한, 메모리 서브시스템(110)의 동작을 제어하는 다양한 프로세스, 동작, 로직 흐름, 및 루틴을 수행하기 위한 명령어를 저장하도록 구성된 내장 메모리를 포함한다. 일부 실시예에서, 로컬 메모리(119)는 메모리 포인터, 페치된 데이터, 등을 저장하는 메모리 레지스터를 포함할 수 있다. 로컬 메모리(119)는 또한 마이크로 코드를 저장하기 위한 읽기 전용 메모리(ROM)를 포함할 수 있다. 도 1의 예시적인 메모리 서브시스템(110)이 제어기(115)를 포함하는 것으로 예시되었지만, 본 개시의 다른 실시예에서, 메모리 서브시스템(110)은 제어기(115)를 포함하지 않을 수 있고, 대신에(예를 들어, 외부 호스트에 의해 제공되거나 메모리 서브시스템과 분리된 프로세서 또는 제어기에 의해 제공되는) 외부 제어에 의존할 수 있다.
일반적으로, 제어기(115)는 호스트 시스템(120)으로부터 명령 또는 동작을 수신할 수 있고, 명령 또는 동작을 명령어 또는 적절한 명령으로 변환하여 메모리 구성요소(109A 내지 109N)에 대한 원하는 액세스를 달성할 수 있다. 제어기(115)는웨어 레벨링 작업(wear level 뿐만operations), 가비지 수집 작업, 오류 감지 및 오류 정정 코드(ECC) 작업, 암호화 작업, 캐싱 작업, 및 메모리 구성요소(109A 내지 109N)와 연관된, 논리적 블록 어드레스와 물리적 블록 어드레스 간의 어드레스 변환과 같은, 다른 작업들을 담당할 수 있다. 제어기(115)는 물리적 호스트 인터페이스를 통해 호스트 시스템(120)과 통신하기 위한 호스트 인터페이스 회로를 더 포함할 수 있다. 호스트 인터페이스 회로는 호스트 시스템으로부터 수신된 명령을 메모리 구성요소(109A 내지 109N)에 액세스하기 위한 명령어로 변환할 수 있을 뿐만 아니라 메모리 구성요소(109A 내지 109N)와 관련된 응답을 호스트 시스템(120)에 대한 정보로 변환할 수 있다.
메모리 서브시스템(110)은 또한 도시되지 않은 추가 회로 또는 구성요소를 포함할 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 제어기(115)로부터 어드레스를 수신하고 메모리 구성요소(109A 내지 109N)에 액세스하기 위해 어드레스를 디코딩할 수 있는 캐시 또는 버퍼(예를 들어, DRAM) 및 어드레스 회로(예를 들어, 행 디코더 및 열 디코더)를 포함할 수 있다.
메모리 서브시스템(110)은 읽기 요청 및 쓰기 요청 모두를 위해 요청 버퍼의 일부를 사용할 수 있는 버퍼 관리자(113)를 포함한다. 일부 실시예에서, 메모리 서브시스템(110)의 제어기(115)는 버퍼 관리자(113)의 적어도 일부를 포함한다. 예를 들어, 제어기(115)는 버퍼 관리자(113)를 구현하는 논리 회로를 포함할 수 있다. 예를 들어, 제어기(115)의 처리 장치(117)(프로세서)는 여기에 설명된 버퍼 관리자(113)의 동작을 수행하기 위해 로컬 메모리에 저장된 명령어를 실행하도록 구성될 수 있다. 일부 실시예에서, 버퍼 관리자(113)는 호스트 시스템(120)의 운영 체제, 장치 드라이버 또는 애플리케이션의 일부이다.
호스트 시스템(120)은 메모리 서브시스템(110)에서 읽기 요청 및 쓰기 요청을 전송하기 위해 메모리 서브시스템(110)에서 이용 가능한 버퍼 용량을 추적할 수 있는 요청 관리자(112)를 포함한다. 일부 실시예에서, 호스트 시스템(120)의 제어기(116)는 요청 관리자(112)의 적어도 일부를 포함한다. 예를 들어, 제어기(116)는 요청 관리자(112)를 구현하는 논리 회로를 포함할 수 있다. 예를 들어, 호스트 시스템(120)의 처리 장치(118)(프로세서)는 여기에 설명된 요청 관리자(112)의 동작을 수행하기 위해 로컬 메모리에 저장된 명령어를 실행하도록 구성될 수 있다. 일부 실시예에서, 요청 관리자(112)는 호스트 시스템(120)의 운영 체제, 장치 드라이버 또는 애플리케이션의 일부이다.
메모리 서브시스템(110)의 버퍼 관리자(113)는 읽기 요청 및 쓰기 요청 모두를 버퍼링하기 위해 공유 버퍼를 사용할 수 있다. 버퍼는 읽기 요청과 쓰기 요청을 위해 공유된다. 선택적으로, 버퍼 관리자(113)는 쓰기 요청이 아닌 읽기 요청을 버퍼링하기 위한 읽기 전용 버퍼를 더 사용할 수 있다. 유사하게, 버퍼 관리자(113)는 쓰기 요청을 버퍼링하기 위한 것이지만 읽기 요청을 위한 것이 아닌 쓰기 전용 버퍼를 선택적으로 더 사용할 수 있다. 일부 경우에, 버퍼 관리자(113)는 버퍼를 공유 버퍼 영역, 읽기 전용 버퍼 영역 및 쓰기 전용 버퍼 영역으로 동적으로 분할할 수 있다. 하나 이상의 버퍼링된 쓰기 요청의 실행이 완료된 후, 실행된 쓰기 요청에 의해 사용되는 버퍼 용량은 호스트 시스템(120)으로부터 새로운 쓰기 요청을 수락하는 데 사용할 수 있게된다. 버퍼 관리자(113)는 새로운 쓰기 요청의 수락에 사용할 수 있게되는 재청된 버퍼 용량을 추적할 수 있다. 메모리 서브시스템(110)이 추가 쓰기 요청을 위해 이용 가능한 버퍼 용량의 양을 호스트 시스템(120)에 전송할 때, 이용 가능한 버퍼의 양은 호스트 시스템(120)이 버퍼 오버플로우를 일으키지 않고 전송할 수 있는 요청을 쓰도록 허용된다. 버퍼 관리자(113)는 버퍼 관리자(113)에서 추적된 남은 가용 버퍼 용량을 얻기 위해 그 양을 공제한다.
호스트 시스템(120)의 요청 관리자(112)는 추가 읽기 요청을 수락하기 위한 메모리 서브시스템(110)의 사용 가능한 읽기 버퍼 용량, 추가 쓰기 요청을 수락하기 위한 메모리 서브시스템(110)의 사용 가능한 쓰기 버퍼 용량, 및/또는 추가 읽기 및 쓰기 요청을 수락하기 위한 메모리 서브시스템(110)의 총 이용 가능한 버퍼 용량을 추적할 수 있다. 호스트 시스템(120)이 메모리 서브시스템(110)에 쓰기 요청을 전송할 때, 요청 관리자(112)는 쓰기 요청에 사용된 버퍼 용량의 양만큼 사용 가능한 쓰기 버퍼 용량 및 총 사용 가능한 버퍼 용량을 감소시킨다. 호스트 시스템(120)이 메모리 서브시스템(110)에 읽기 요청을 전송할 때, 요청 관리자(112)는 읽기 요청에 사용된 버퍼 용량만큼 가용 읽기 버퍼 용량과 총 가용 버퍼 용량을 감소시킨다. 메모리 서브시스템(110)이 읽기 요청에 의해 요청된 데이터를 호스트 시스템(120)으로 전송할 때, 요청 관리자(112)는 읽기 요청에 사용된 버퍼 용량만큼 가용 읽기 버퍼 용량과 전체 가용 버퍼 용량을 증가시킨다. 메모리 서브시스템(110)이 추가 쓰기 요청을 위해 사용 가능한 버퍼 용량의 양을 호스트 시스템(120)에 통신할 때, 요청 관리자(112)는 사용 가능한 쓰기 버퍼 용량 및 총 사용 가능한 버퍼 용량을 메모리 서브시스템(110)에 의해 지정된 양만큼 증가시킨다. 따라서, 쓰기 요청에 필요한 버퍼 공간의 양보다 가용 쓰기 버퍼 용량이 작을 경우, 요청 관리자(112)는 가용 쓰기 버퍼 용량이 TM기 요청에 필요한 버퍼 공간의 양보다 커질 때까지 쓰기 요청의 전송을 연기한다. 유사하게, 가용 읽기 버퍼 용량이 읽기 요청에 필요한 버퍼 공간의 양보다 작은 경우, 요청 관리자(112)는 가용 읽기 버퍼 용량이 쓰기 요청에 필요한 버퍼 공간의 양보다 클 때까지 읽기 요청의 전송을 연기한다.
버퍼 관리자(113) 및 요청 관리자(112)의 동작에 대한 더 자세한 사항은 후술한다.
도 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에는 시스템 상태를 반환하지만 매체에 직접 액세스하지 않는 정보 요청(status_read)임을 나타내는 미리 결정된 읽기 ID가 제공될 수 있다.
읽기 명령에 응답하여, 메모리 서브시스템(110)은 읽기 명령에 의해 요청된 데이터를 준비한다. 예를 들어, 매체 제어기(115)는 매체(예를 들어, 109A,…, 또는 109N)로부터 데이터를 불러오고 검색 데이터를 로컬 메모리(119) 또는 다른 메모리에 버퍼링하여, 전송 요청시 데이터가 미리 결정된 시간 구간 내에 메모리 제어기(116)로 성공적으로 전송될 수 있게 한다.
요청된 데이터가 전송될 준비가 되면, 메모리 서브시스템(110)은 트랜잭션 버스(125)에 응답 신호를 제공할 수 있다. 메모리 제어기(116)가 특정 데이터를 전송하기 위한 메모리 서브시스템(110)의 준비 상태를 통지받을 때 메모리 제어기(116)는 전송 명령으로부터 미리 결정된 시간 구간 내에 데이터 버스(123)상에서 데이터 전송을 시작하도록 메모리 서브시스템(110)에 요청하는 전송 명령을 제공할 수 있다. 전송 명령에 응답할 때, 메모리 서브시스템(115)은 또한 대응하는 읽기 명령을 식별하는 읽기 ID, 아래에서 추가로 논의되는 쓰기 크레딧 정보, 트랜잭션에 대응하는 메타 데이터 및/또는 오류 정정 코드(ECC)와 같은 트랜잭션 상태 정보를 전송할 수 있다.. 이러한 전송 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별되는 SEND이다.
메모리 서브시스템(110)은 로컬 메모리(119) 또는 다른 메모리에 명령 버스(121)로부터 수신된 읽기 명령 및 쓰기 명령을 버퍼링할 수 있다. 매체 제어기(115)는 명령이 수신되는 순서와 다른 순서로 버퍼링된 명령을 실행할 수 있다.
메모리 서브시스템(110)은 보류중인 읽기 명령 및 쓰기 명령 및 그와 관련된 데이터를 버퍼링하기 위한 일정량의 용량을 갖는다. 메모리 제어기(116)와 매체 제어기(115)는 메모리 서브시스템(110)에서 버퍼 오버플로우를 방지하기 위해 서로 통신할 수 있다.
예를 들어, 쓰기 크레딧은 쓰기 명령 및 미리 결정된 크기의 관련 데이터를 버퍼링하는 데 사용할 수 있는 버퍼 용량의 단위를 나타내는 데 사용될 수 있다. 일부 사례에서 쓰기 명령은 미리 결정된 크기보다 큰 데이터를 가질 수 있다. 이러한 쓰기 명령은 메모리 서브시스템(110)에서 명령 및 그 데이터를 버퍼링하기 위한 다중 쓰기 크레딧을 필요로한다.
메모리 제어기(116)는 명령 버스(121)상의 쓰기 명령을 메모리 서브시스템(110)으로 전송하기 위해 사용할 수 있는 쓰기 크레딧의 카운트를 유지할 수 있다. 쓰기 명령이 명령 버스(121)를 통해 전송될 때, 메모리 제어기(116)는 쓰기 명령에 사용된 쓰기 크레딧을 차감한다. 버퍼 오버플로우를 피하기 위해, 메모리 제어기(116)는 메모리 제어기(11)가 메모리 서브시스템(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이다.
메모리 서브시스템(110)은 호스트 시스템(120)으로부터 수신된 보류중인 읽기 및 쓰기 명령/요청을 저장하기 위한 공유 버퍼를 포함할 수 있다. 공유 버퍼는 로컬 메모리(119) 또는 메모리 서브시스템(110)의 다른 메모리에서 구현될 수 있다.
메모리 서브시스템(110)은 호스트 시스템(120)으로부터 수신된 보류중인 읽기 명령/요청을 저장하기 위한 읽기 버퍼를 포함할 수 있다. 읽기 버퍼는 로컬 메모리(119) 또는 메모리 서브시스템(110)의 다른 메모리에서 구현될 수 있다. 쓰기 명령/요청 및 해당 데이터는 읽기 버퍼에 저장되지 않는다.
메모리 서브시스템(110)은 호스트 시스템(120)으로부터 수신된 보류중인 쓰기 명령/요청을 저장하기 위한 쓰기 버퍼를 포함할 수 있다. 쓰기 버퍼는 로컬 메모리(119) 또는 메모리 서브시스템(110)의 다른 메모리에서 구현될 수 있다. 읽기 명령/요청 및 해당 데이터는 쓰기 버퍼에 저장되지 않는다.
버퍼 관리자(113)는 공유 버퍼, 읽기 버퍼 및/또는 쓰기 버퍼의 사용을 관리할 수 있다. 버퍼 관리자(113)는 완료된 쓰기 요청으로부터 해제된 버퍼 용량을 나타내는 재생된 쓰기 크레딧을 추적한다. 버퍼 관리자(113)는 호스트 시스템(120)에 쓰기 크레딧 증분으로 재생된 쓰기 크레딧을 반환할 수 있다. 요청 관리자(112)는 호스트 시스템(120)에 의해 사용 가능한 읽기 버퍼 및/또는 공유 버퍼에서 읽기 버퍼 용량을 나타내는 읽기 크레딧을 추적할 수 있어서, 메모리 서브시스템(110)에 읽기 요청을 전송하여 호스트 시스템(120)에 의해 지정된 어드레스에서 데이터를 불러올 수 있다. 요청 관리자(112)는 호스트 시스템(120)에 의해 사용가능한, 쓰기 버퍼 및/또는 공유 버퍼의, 쓰기 버퍼 용량을 나타내는 쓰기 크레딧을 추적할 수 있어서, 호스트 시스템(120)에 의해 지정된 어드레스에 데이터를 저장하기 위해 메모리 서브시스템(110)에 쓰기 요청을 전송할 수 있다. 요청 관리자(112)는 읽기 및/또는 쓰기 요청을 전송하기 위해 호스트 시스템(120)에 의해 사용 가능한, 읽기 버퍼, 쓰기 버퍼 및/또는 공유 버퍼에서 총 버퍼 용량을 나타내는 총 크레딧을 추적할 수 있다.
도 3a 내지 3c는 본 개시의 일부 실시예에 따른 예시적인 버퍼 구성을 도시한다.
도 3a 및 도 3b의 전용 읽기 버퍼(201)에는 많은 읽기 크레딧이 있다. 각 읽기 크레딧은 읽기 요청 및 읽기 요청의 어드레스로부터 불러들인 데이터를 버퍼링하기 위한 미리 결정된 양의 읽기 버퍼 용량을 나타낸다. 쓰기 요청 및 그 데이터는 읽기 버퍼(201)에 저장될 수 없다.
도 3a 및 도 3b의 전용 쓰기 버퍼(203)에는 많은 쓰기 크레딧이 있다. 각각의 쓰기 크레딧은 쓰기 명령 및 쓰기 요청의 어드레스에 저장될 데이터를 버퍼링하기 위한 미리 정해진 양의 쓰기 버퍼 용량을 나타낸다. 읽기 요청 및 그 데이터는 쓰기 버퍼(203)에 저장될 수 없다.
도 3b 및 3c의 공유 버퍼(205)에는 많은 공유 크레딧이 있다. 공유 버퍼(205)는 쓰기 요청 및 그들의 데이터, 읽기 요청 및 그들의 데이터, 또는 읽기 요청 및 쓰기 요청 및 그들의 데이터의 조합을 저장하는데 사용될 수 있다. 미리 결정된 양의 쓰기 버퍼 용량을 나타내는 각각의 공유 크레딧은 읽기 크레딧 또는 쓰기 크레딧으로 사용될 수 있다.
도 3a는 메모리 서브시스템(110)이 전용 읽기 버퍼(201) 및 전용 쓰기 버퍼(203)를 포함하는 버퍼 구성을 도시한다. 총 크레딧 T는 W 쓰기 크레딧과 R 읽기 크레딧의 합과 같다.
도 3b는 메모리 서브시스템(110)이 전용 읽기 버퍼(201), 전용 쓰기 버퍼(203) 및 공유 버퍼(205)를 포함하는 버퍼 구성을 예시한다. 읽기 크레딧의 수 R은 전용 읽기 버퍼(201)와 공유 버퍼(205)의 결합된 용량과 같고, 쓰기 크레딧의 수 W는 전용 쓰기 버퍼(203)와 공유 버퍼(205)의 결합된 용량과 같다. 총 크레딧 T는 전용 읽기 버퍼(201), 전용 쓰기 버퍼(203) 및 공유 버퍼(205)의 결합된 용량이다. 총 크레딧 T는 W 쓰기 크레딧과 R 읽기 크레딧의 합에서, 겹치는 S 공유 크레딧을 뺀 것과 같다.
공유 버퍼(205)의 용량 S가 알려져 있음에 기초하여, 추가 읽기 요청을 전송하기 위한 이용 가능한 읽기 크레딧 r은 이용 가능한 총 크레딧 t 및 이용 가능한 쓰기 크레딧 w로부터 계산될 수 있다. 예를 들어, r = t - min(w, S).
공유 버퍼(205)의 용량 S가 알려져 있음에 기초하여, 추가 쓰기 요청을 전송하기 위한 가용 쓰기 크레딧 w는 가용 총 크레딧 t 및 가용 읽기 크레딧 r로부터 계산될 수 있다. 예를 들어, w = t - min(r, S).
공유 버퍼(205)의 용량 S에 기초하여, 추가 쓰기/읽기 요청을 전송하기 위한 가용 총 크레딧 t는 가용 쓰기 크레딧 w 및 가용 읽기 크레딧 r로부터 계산될 수 있다. 예를 들어, t = w + r - min(r, w, S).
도 3c는 메모리 서브시스템(110)이 공유 버퍼(205)를 포함하지만 전용 읽기 버퍼 또는 쓰기 버퍼는 포함하지 않는 버퍼 구성을 예시한다. 도 3c의 예에서, 읽기 크레딧 수 R, 쓰기 크레딧 수 W 및 총 크레딧 수 T는 공유 버퍼(205)의 용량 S와 동일하다. 추가 쓰기/읽기 요청을 전송하기 위해 사용 가능한 총 크레딧 t, 사용 가능한 쓰기 크레딧 w, 사용 가능한 읽기 크레딧 r은 서로 동일하다.
메모리 서브시스템(110)이 호스트 시스템(120)으로부터 읽기 요청을 수신하면, 버퍼 관리자(113)는 가능한 경우 읽기 요청을 읽기 버퍼(201)에 저장할 수 있고, 읽기 버퍼(201)의 용량이 가용하지 않은 경우 공유 버퍼(205)에 읽기 요청을 저장할 수 있다. 매체 제어기(115)가 읽기 요청에 의해 요청된 데이터를 불러오고 불러온 데이터를 버퍼링한 후, 매체 제어기(115)는 응답 신호를 전송하여, 메모리 제어기(116)가 매체 제어기(115)로부터 데이터를 수신하게할 수 있다. 불러온 데이터가 메모리 서브시스템(110)으로부터 호스트 시스템(120)으로 전송된 후, 읽기 요청 및 그 데이터는 읽기 버퍼(201) 또는 공유 버퍼(205)로부터 클리어될 수 있다.
메모리 서브시스템(110)이 호스트 시스템(120)으로부터 쓰기 요청을 수신하면, 버퍼 관리자(113)는 가능한 경우 쓰기 요청 및 그 데이터를 쓰기 버퍼(203)에 저장할 수 있고, 쓰기 버퍼(203)의 용량이 가용하지 않을 경우, 쓰기 요청을 공유 버퍼(205)에 저장할 수 있다. 매체 제어기(115)가 메모리 구성요소(109A 내지 109N)에 쓰기 요청의 데이터를 저장을 완료한 후, 쓰기 요청 및 그 데이터는 쓰기 읽기 버퍼(203) 또는 공유 버퍼(205)로부터 클리어될 수 있다.
일부 실시예에서, 공유 버퍼(205)가 생략될 수 있다(예를 들어, 도 3a에 예시된 바와 같이). 다른 실시예에서, 전용 읽기 버퍼(201) 및/또는 전용 쓰기 버퍼(203)가 생략될 수 있다(예를 들어, 도 3b 및 3c에 도시된 바와 같이). 전용 읽기 버퍼(201) 및/또는 전용 쓰기 버퍼(203)는 서로 다른 용량을 가질 수 있다. 버퍼 관리자(113)는 버퍼 메모리를 읽기 버퍼(201), 쓰기 버퍼(203) 및/또는 공유 버퍼(205)로 동적으로 분할할 수 있다.
버퍼 관리자(113)는 메모리 서브시스템(110)에서 완료된 쓰기 요청으로부터 재청된 쓰기 크레딧을 카운트하고, 쓰기 크레딧 증분이 메모리 서브시스템(110)에서 호스트 시스템(120)으로 전송됨에 따라 재청된 쓰기 크레딧을 할당할 수 있다. 예를 들어, 쓰기 크레딧 증분은 JEDEC NVDIMM-P 버스 프로토콜에 따라 호스트 시스템(120)으로부터의 전송 명령에 응답하여 메타 데이터 버스(127)를 사용하여 전송될 수 있다.
요청 관리자(116)는 추가 읽기 요청을 전송하기 위한 사용 가능한 읽기 크레딧, 추가 쓰기 요청을 전송하기 위한 사용 가능한 쓰기 크레딧, 및/또는 추가 읽기/쓰기 요청을 전송하기 위한 사용 가능한 총 크레딧을 추적할 수 있다.
요청 관리자(116)는 읽기 요청이 메모리 서브시스템(110)에 전송될 때 사용 가능한 읽기 크레딧 및/또는 사용 가능한 총 크레딧을 감분시킬 수 있다. 읽기 요청에서 요청된 데이터가 메모리 서브시스템(110)으로부터 수신될 때 요청 관리자(116)는 사용 가능한 읽기 크레딧 및/또는 사용 가능한 총 크레딧을 증분시킬 수 있다.
요청 관리자(116)는 쓰기 요청이 메모리 서브시스템(110)으로 전송될 때 사용 가능한 쓰기 크레딧 및/또는 사용 가능한 총 크레딧을 감분시킬 수 있다. 요청 관리자(116)는 메모리 서브시스템(110)으로부터 호스트 시스템(120)으로 전송된 쓰기 크레딧 증분에 따라, 사용 가능한 쓰기 크레딧 및/또는 사용 가능한 총 크레딧을 증분시킬 수 있다.
또한, 이용 가능한 읽기 크레딧이 공유 버퍼(205)의 총 용량 S로 감소될 때, 읽기 요청에 대한 추가 감소는 이용 가능한 쓰기 크레딧에서 동일한 감소를 야기한다. 그러한 상황에서, 읽기 요청을 위한 공유 버퍼(205)의 사용은 또한 쓰기 요청을 수신하기 위한 공유 버퍼(205)의 가용 용량을 감소시킨다.
유사하게, 가용 쓰기 크레딧이 공유 버퍼(205)의 총 용량 S로 감소될 때, 쓰기 요청에 대한 추가 감소는 가용 읽기 크레딧에서 동일한 감소를 야기한다. 이러한 상황에서, 쓰기 요청을 위한 공유 버퍼(205)의 사용은 또한 쓰기 요청을 수신하기 위한 공유 버퍼(205)의 가용 용량을 감소시킨다.
대안으로, 요청 관리자(116)는 공유 버퍼(205)에서 읽기 요청에 의해 사용되는 쓰기 크레딧을 감소시키지 않고 공유 버퍼(205)에서 쓰기 요청에 의해 사용되는 읽기 크레딧을 감소시키지 않는다. 요청 관리자(116)는 사용 가능한 읽기 크레딧, 사용 가능한 쓰기 크레딧 및 사용 가능한 총 크레딧을 추적한다. 버퍼 오버플로우를 방지하기 위해, 요청 관리자(116)는 읽기 요청의 크기가 사용 가능한 읽기 크레딧 또는 사용 가능한 총 크레딧을 초과할 때 읽기 요청을 전송하지 않는다. 유사하게, 요청 관리자(116)는 쓰기 요청의 크기가 사용 가능한 쓰기 크레딧 또는 사용 가능한 총 크레딧을 초과할 때 쓰기 요청을 전송하지 않는다.
예를 들어, 요청 관리자(116)는 쓰기 요청에 의해 사용되는 공유 버퍼(205)를 고려하지 않고 이용 가능한 읽기 크레딧 r을 추적할 수 있다; 요청 관리자(116)는 읽기 요청에 의해 사용되는 공유 버퍼(205)를 고려하지 않고 이용 가능한 쓰기 크레딧 w를 추적할 수 있다. 따라서, 쓰기 요청에 의해 사용되는 공유 버퍼(205)는 min(S - w, 0)으로 계산될 수 있다. 읽기 요청에 의해 사용되는 공유 버퍼(205)는 min(S - r, 0)으로 계산될 수 있다. 따라서 사용 가능한 읽기 크레딧의 실제 양은 r - min(S - w, 0)이다. 사용 가능한 쓰기 크레딧의 실제 양은 w - min(S - r, 0)이다.
요청 관리자(116)는 버퍼 구성에 따라 특정 유형의 크레딧을 추적하고 계산하도록 구성될 수 있다. 예를 들어, 메모리 서브시스템(110)이 전용 읽기 버퍼(201) 및 전용 쓰기 버퍼(203)를 포함하지만, 도 3a에서와 같이 공유 버퍼는 포함하지 않는 경우, 요청 관리자(116)는 이용 가능한 총 크레딧을 추적하지 않고 이용 가능한 읽기 크레딧 및 이용 가능한 쓰기 크레딧을 추적할 수 있다. 대안으로, 요청 관리자(116)는 이용 가능한 총 크레딧 및 이용 가능한 쓰기 크레딧을 추적하고 이용 가능한 총 크레딧과 이용 가능한 쓰기 크레딧 간의 차이로부터 이용 가능한 읽기 크레딧을 계산할 수 있다.
다른 예에서, 메모리 서브시스템(110)이 공유 버퍼(205)를 포함하지만, 전용 읽기 버퍼 또는 전용 쓰기 버퍼가 없는 경우(또는 읽기 버퍼(201) 및 쓰기 버퍼(203)가 가득 찬 경우), 도 3c에 도시된 바와 같이, 요청 관리자(116)는 서로 동일하기 때문에 이용 가능한 읽기 크레딧, 이용 가능한 쓰기 크레딧 또는 이용 가능한 총 크레딧 중 하나를 추적할 수 있다.
도 4 내지 9는 본 개시의 일부 실시예에 따른 읽기 동작 또는 쓰기 동작과 관련하여 버퍼 용량 추적의 예를 예시하는 시퀀스 다이어그램을 도시한다. 버퍼 관리자(113) 및 요청 관리자(112)는 도 4-9에 도시된 시퀀스의 조합을 사용할 수 있다.
도 4 내지 도 9는 도 3a-3c에 도시된 버퍼 구성과 연계하여 도 1 및 도 2에 도시된 호스트 시스템(120)과 메모리 서브시스템(110) 사이의 통신 및 그에 의한 동작을 참조하여 설명된다. 호스트 시스템(120)의 동작의 일부 또는 전부는 일반적으로 메모리 제어기(116)에 의해 수행될 수 있고, 특히 요청 관리자(112)에 의해 적어도 부분적으로 수행될 수 있다. 메모리 서브시스템(110)의 동작의 일부 또는 전부는 일반적으로 매체 제어기(115)에 의해 수행될 수 있고, 특히 버퍼 관리자(113)에 의해 적어도 부분적으로 수행될 수 있다.
도 4는 사용 가능한 읽기 크레딧의 추적을 보여준다.
단계 410에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로부터 읽기 요청을 수락하기 위해 메모리 서브시스템(110)에서 이용 가능한 읽기 크레딧의 초기 수량에 대한 표시를 전송하고, 호스트 시스템(120)이 이를 수신한다. 대안으로, 호스트 시스템(120)은 호스트 시스템(120)에 저장되고 실행되는 장치 드라이버, 메모리 서브시스템(110)을 위한 구성 파라미터를 저장하는 메모리 위치, 등과 같은, 메모리 서브시스템(110) 이외의 소스로부터 읽기 크레딧의 초기 수량 표시를 수신할 수 있다.
단계 412에서, 호스트 시스템(120)은 단계 410에서 수신한 초기 수량과 동일하게 가용 읽기 크레딧의 수량을 설정한다. 그 결과, 호스트 시스템(120)(예: 그 요청 관리자(112))은 메모리 서브시스템(110)이 읽기 요청 및 그 데이터를 버퍼링할 때 갖는 버퍼 용량의 총 양을 알 수 있다.
단계 414에서, 호스트 시스템(120)은 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 저장된 특정 데이터에 대한 읽기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다. 읽기 요청의 한 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SREAD 또는 XREAD 명령 및 관련 XADR 명령이다. 읽기 요청은 요청된 데이터가 호스트 시스템(120)으로 전송되기 전에 메모리 서브시스템(110)에서 요구될 수 있는 요청된 데이터의 크기의 표시를 포함할 수 있다.
호스트 시스템(120)은 호스트 시스템(120)에서 추적된 현재 이용 가능한 읽기 크레딧이 요청된 데이터의 크기보다 작지 않은 경우 읽기 요청을 전송한다. 호스트 시스템(120)에서 추적된 현재 이용 가능한 읽기 크레딧이 요청된 데이터의 크기보다 작으면 호스트 시스템(120)이 단계 414에서 읽기 요청을 전송하는 것을 방지할 수 있다.
단계 416에서 호스트 시스템(120)은 단계 414에서 읽기 요청을 전송함에 따라 가용 읽기 크레딧의 양을 감분시킨다. 감분되는 양은 요청된 데이터의 크기에 따라 결정된다.
단계 418에서, 메모리 서브시스템(110)은 (예를 들어, 읽기 버퍼(201) 및/또는 공유 버퍼(205)에서) 읽기 요청을 버퍼링한다.
단계 420에서, 메모리 서브시스템(110)은 메모리 서브시스템(110)의 매체로부터 요청된 데이터를 불러들인다.
단계 422에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로의 전송을 위해 요청된 데이터를 버퍼링한다(예를 들어, 읽기 버퍼(201) 및/또는 공유 버퍼(205)에).
단계 424에서, 메모리 서브시스템(110)은 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 RSPx_n 신호와 같은 응답 신호를 전송하고 호스트 시스템(120)은 수신한다.
단계 426에서, 호스트 시스템(120)은 응답 신호에 의해 전송 준비됨을 표시하는 데이터를 전송하도록 메모리 서브시스템(110)에 요청하는 전송 명령을 전송하고, 메모리 서브시스템(110)은 수신한다. 전송 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SEND 명령이다.
단계 428에서, 메모리 서브시스템(110)은 단계 414의 읽기 요청에서 요청된 데이터를 전송하고, 호스트 시스템(120)은 수신한다. 요청된 데이터의 전송의 일부분으로, 또는 그 이후, 메모리 서브시스템(110)은 읽기 요청 및 읽기 요청에서 요청된 데이터를 버퍼(예를 들어, 201 및/또는 205)로부터 지울 수 있다.
단계 432에서, 호스트 시스템(120)은 단계 426에서 요청된 데이터를 수신함에 따라 가용 읽기 크레딧의 양을 증분시킨다. 요청된 데이터를 수신하면, 호스트 시스템(120)에 읽기 요청에 사용된 버퍼 용량이 비워졌고 추가의 읽기 요청을 위해 가용함/이용가능함이 호스트 시스템(120)에 표시된다.
일반적으로, 호스트 시스템(120)과 메모리 서브시스템(110)은 단계 414의 읽기 요청을 전송하기 전, 단계 414의 읽기 요청과 단계 420의 요청된 데이터의 불러오기 사이, 단계 420의 요청된 데이터의 불러오기와 단계 424의 응답 신호 사이, 그리고 단계 424의 응답 신호와 단계 426의 송신 명령 사이, 등에 다른 통신을 가질 수 있다. 이러한 통신은 다른 읽기 요청, 쓰기 요청, 상태 질의, 등을 포함할 수 있다.
도 4에 도시된 특정 단계들이 각각의 읽기 요청에 대해 반복될 수 있어서, 읽기 요청이 전송 및 서비스될 때 호스트 시스템(120)이 이용 가능한 읽기 크레딧을 지속적으로 추적할 수 있게 된다. 예를 들어, 단계 414 내지 432는 각각의 읽기 요청에 대해 수행될 수 있고, 전술한 바와 같이, 호스트 시스템(120)은 읽기 요청에 대해 충분한 읽기 크레딧이 이용 가능한 경우에만 읽기 요청을 전송할 수 있다.
도 4에서, 호스트 시스템(120)은 읽기 크레딧을 명시적으로 추적한다. 그 결과, 호스트 시스템(120)은 읽기 요청에 대해 충분한 읽기 크레딧이 이용 가능한 경우에만 읽기 요청을 전송할 수 있다. 추가적으로, 메모리 서브시스템(110)은 읽기 크레딧을 명시적으로 추적할 필요가 없다. 다른 실시예에서, 메모리 서브시스템(110)은 선택적으로 읽기 크레딧을 추적할 수 있고 이용 가능한 읽기 크레딧의 양에 대한 정보를 호스트 시스템(120)에 제공할 수 있다. 또한, 실시예에서, 메모리 서브시스템(110)은 현재 읽기 요청에 사용할 수 있는 읽기 버퍼 용량이 부족한 경우 읽기 요청을 거부하고, 읽기 요청에 충분한 읽기 버퍼 용량이 가용할 경우 읽기 요청을 수락하도록 구성될 수 있다.
도 5는 사용 가능한 쓰기 크레딧의 추적을 예시한다.
단계 510에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로부터 쓰기 요청을 수락하기 위해 메모리 서브시스템(110)에서 이용 가능한 쓰기 크레딧의 초기 수량의 표시를 전송하고 호스트 시스템(120)이 수신한다. 대안으로, 호스트 시스템(120)은 호스트 시스템(120)에 저장되고 실행되는 장치 드라이버, 메모리 서브시스템(110)의 구성 파라미터를 저장하는 메모리 위치, 등으로부터와 같이, 메모리 서브시스템(110) 이외의 소스로부터 쓰기 크레딧의 초기 수량에 대한 표시를 수신할 수 있다.
단계 512에서, 호스트 시스템(120)은 단계 510에서 수신한 초기 수량과 동일하게 가용 쓰기 크레딧의 수량을 설정한다. 그 결과, 호스트 시스템(120)(예: 요청 관리자(112))은 메모리 서브시스템(110)이 쓰기 요청 및 그 데이터를 버퍼링할 때 갖는 버퍼 용량의 총 양을 알 수 있다.
단계 514에서, 호스트 시스템(120)은 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 특정 데이터를 저장하기 위한 쓰기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다. 쓰기 요청의 한 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 WRITE, XWRITE, PWRITE 명령 및 관련 XADR 명령이다. 쓰기 요청에 의해 저장될 데이터는 쓰기 요청의 크기를 결정한다.
호스트 시스템(120)은 호스트 시스템(120)에서 추적된 현재 이용 가능한 쓰기 크레딧이 쓰기 요청의 크기보다 작지 않은 경우 쓰기 요청을 전송한다. 호스트 시스템(120)에서 추적된 현재 이용 가능한 쓰기 크레딧이 쓰기 요청의 크기보다 작으면, 호스트 시스템(120)이 단계 514에서 쓰기 요청을 전송하는 것을 방지할 수 있다.
단계 516에서 호스트 시스템(120)은 단계 514에서 쓰기 요청 전송에 따라 쓰기 가능 크레딧의 양을 감소시킨다. 감소되는 양은 쓰기 요청의 크기에 따라 결정된다.
단계 518에서, 메모리 서브시스템(110)은 쓰기 요청을 버퍼링한다(예를 들어, 읽기 버퍼(201) 및/또는 공유 버퍼(205)에).
단계 520에서, 메모리 서브시스템(110)은 메모리 서브시스템(110)의 매체에 데이터를 기록한다.
단계 522에서, 메모리 서브시스템(110)은 버퍼(예를 들어, 읽기 버퍼(201) 및/또는 공유 버퍼(205)에서)로부터 쓰기 요청 및 쓰기 데이터를 클리어(clear)한다.
단계 524에서, 메모리 서브시스템(110)은 단계 514에서 수신된 쓰기 요청을 완료한 것에 응답하여 가용 쓰기 크레딧의 양을 증분시킨다. 증분되는 양은 완료된 쓰기 요청의 크기에 따라 결정된다.
단계 526에서, 호스트 시스템(120)은 쓰기 크레딧을 포함한, 정보를 제공하기 위해 메모리 서브시스템(110)에 요청하는 읽기 명령을 전송하고, 메모리 서브시스템(110)은 수신한다. 읽기 명령의 예로는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SREAD 및 XREAD(및 status_read)가 있다.
단계 424에서 메모리 서브시스템(110)은 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 RSPx_n 신호와 같은 응답 신호를 전송하고 호스트 시스템(120)은 수신한다.
단계 426에서 호스트 시스템(120)은 응답 신호에 의해 전송 준비됨을 표시하는 데이터를 전송하도록 메모리 서브시스템(110)에 요청하는 전송 명령을 전송하고, 메모리 서브시스템(110)은 수신한다. 전송 명령의 예는 JEDEC NVDIMM-P 버스 프로토콜에서 식별된 SEND 명령이다.
단계 528에서, 메모리 서브시스템(110)은 쓰기 크레딧을 전송하고, 호스트 시스템(120)은 수신한다. 응답 신호가 메모리 서브시스템(110)이 메모리 서브시스템(110)의 매체로부터 데이터를 불러오게 하는 읽기 요청에 대한 것일 때, 메모리 서브시스템(110) 역시, 도 4에 도시된 단계 428에서와 같이, 단계 414의 읽기 요청에서 요청된 데이터를 전송하고, 호스트 시스템(120)은 이를 수신한다. 단계 528에서 메모리 서브시스템(110)으로부터 호스트 시스템으로 전송된 쓰기 크레딧은 단계 514의 쓰기 요청 및/또는 다른 쓰기 요청을 완료한 결과로서 쓰기 크레딧 증분을 포함할 수 있다.
단계 530에서, 메모리 서브시스템(110)은 단계 528에서 호스트 시스템(120)으로 전송된 쓰기 크레딧에 따라 가용 쓰기 크레딧의 양을 감분시킨다.
단계 532에서 호스트 시스템(120)은 단계 528에서 호스트 시스템(120)으로 전송된 쓰기 크레딧에 따라 가용 쓰기 크레딧의 양을 증분시킨다.
일반적으로, 호스트 시스템(120)과 메모리 서브시스템(110)은 단계 514의 쓰기 요청을 전송하기 전, 단계 514의 쓰기 요청과 단계 520에서의 데이터 쓰기 사이, 단계 520의 데이터 쓰기와 단계 424의 응답 신호 사이, 그리고 단계 424의 응답 신호와 단계 426의 송신 명령 사이, 등에 다른 통신을 가질 수 있다. 이러한 통신은 다른 쓰기 요청, 읽기 요청, 상태 질의, 등을 포함할 수 있다.
도 5에 예시된 특정 단계들은 각각의 읽기 요청에 대해 반복될 수 있어서, 쓰기 요청이 전송되고 서비스됨에 따라 그리고 쓰기 크레딧이 호스트 시스템으로 다시 전송됨에 따라 호스트 시스템(120)이 이용 가능한 쓰기 크레딧을 연속적으로 추적할 수 있게 된다. 예를 들어, 단계 514 내지 532는 각각의 쓰기 요청에 대해 수행될 수 있고, 전술한 바와 같이, 호스트 시스템(120)은 쓰기 요청에 대해 충분한 쓰기 크레딧이 이용 가능한 경우에만 쓰기 요청을 전송할 수 있다.
도 5에서, 메모리 서브시스템(110)은 완료된 쓰기 요청으로부터 생성된 쓰기 크레딧 증분을 명시적으로 추적하고, 호스트 시스템(120)으로부터의 전송 명령에 응답하여 업데이트된 쓰기 크레딧 증분을 호스트 시스템(120)에 전송한다. 메모리 서브시스템(110)은 쓰기 요청에 사용할 수 있는 쓰기 크레딧이 부족한 경우 쓰기 요청을 거부할 수 있다. 일부 실시예에서, 메모리 서브시스템(110)은 호스트 시스템(120)이 완료된 쓰기 요청에 대한 쓰기 크레딧을 증분시킬 수 있도록 호스트 시스템(120)에 완료된 쓰기 요청을 식별할 수 있다.
도 6은 읽기 요청과 관련하여 사용 가능한 총 크레딧의 추적을 예시한다.
단계 610에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로부터 읽기/쓰기 요청을 수락하기 위해 메모리 서브시스템(110)에서 사용 가능한 총 크레딧의 초기 수량 표시를 전송하고, 호스트 시스템(120)은 수신한다. 대안으로, 호스트 시스템(120)은 호스트 시스템(120)에 저장되고 실행되는 장치 드라이버, 메모리 서브시스템(110)의 구성 파라미터를 저장하는 메모리 위치, 등으로부터와 같이 메모리 서브시스템(110) 이외의 소스로부터 총 크레딧의 초기 수량의 표시를 수신할 수 있다.
단계 612에서 호스트 시스템(120)은 단계 610에서 수신한 초기 수량과 동일하게 가용 총 크레딧 수량을 설정한다. 그 결과, 호스트 시스템(120)(예를 들어, 요청 관리자(112))은 메모리 서브시스템(110)이 읽기/쓰기 요청 및 그 데이터를 버퍼링할 때 갖는 버퍼 용량의 총 양을 알 수 있다.
단계 414에서, 호스트 시스템(120)은 도 4에서와 같이, 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 저장된 특정 데이터에 대한 읽기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다.
단계 616에서, 호스트 시스템(120)은 단계 414에서 읽기 요청을 전송함에 따라 가용 총 크레딧 수량을 감분시킨다. 감분되는 수량은 요청된 데이터의 크기에 따라 결정된다.
단계 620에서, 메모리 서브시스템(110)은 읽기 요청을 위한 공유 버퍼 공간을 선택적으로 할당한다(예를 들어, 읽기 버퍼(201)가 가득 차거나 메모리 서브시스템(110)에 구성되지 않은 경우).
단계 418 내지 428에서, 메모리 서브시스템(110)은 도 4에서와 같이 읽기 요청을 완료하고 요청된 데이터를 호스트 시스템(120)에 제공한다.
단계 632에서, 호스트 시스템(120)은 단계 426에서 요청된 데이터를 수신함에 따라 가용 읽기 크레딧의 양을 증분시킨다. 요청된 데이터를 수신하면, 읽기 요청에 사용된 버퍼 용량이 비워져 있고 추가 읽기/쓰기 요청에 가용/사용가능함이 호스트 시스템(120)에 표시된다.
일반적으로, 호스트 시스템(120)과 메모리 서브시스템(110)은 단계 414의 읽기 요청 이전, 단계 414의 읽기 요청과 단계 420의 요청된 데이터의 불러오기 사이, 단계 420의 요청된 데이터와 단계 424의 응답 신호 사이, 단계 424의 응답 신호와 단계 426의 송신 명령 사이 등에 다른 통신을 가질 수 있다. 이러한 통신에는 다른 읽기 요청, 쓰기 요청, 상태 질의 등이 포함될 수 있다. .
일부 예에서, 총 크레딧의 적어도 일부는 읽기 요청 또는 쓰기 요청에 사용될 수 있다. 예를 들어, 총 크레딧의 그러한 부분은 공유 버퍼(205)로부터의 것일 수 있다. 예를 들어, 읽기 버퍼(201)와 쓰기 버퍼(203) 중 어느 것도 가득 차지 않은 경우, 총 크레딧의 그러한 부분은 읽기 버퍼(201)로부터의 것 또는 쓰기 버퍼(203)로부터의 것일 수 있다. 이러한 경우에, 호스트 시스템(120)은 총 크레딧의 양이 읽기 요청의 크기보다 작지 않은 경우 단계 414에서 읽기 요청을 전송할 수 있다. 호스트 시스템(120)에서 추적되는 총 크레딧의 양이 읽기 요청의 크기보다 적을 때, 호스트 시스템(120)은 읽기 요청을 전송하지 않는다.
도 7은 쓰기 요청과 관련하여 이용 가능한 총 크레딧의 추적을 예시한다.
단계 610 및 단계 612에서 호스트 시스템(120)은 도 6에서와 같이 가용 총 크레딧의 초기 수량을 설정한다.
단계 514에서, 호스트 시스템(120)은 도 5에서와 같이 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 지정된 데이터를 저장하기 위한 쓰기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다.
단계 716에서 호스트 시스템(120)은 단계 514에서 쓰기 요청을 전송함에 따라 가용 총 크레딧의 양을 감분시킨다. 감분되는 수량은 쓰기 요청의 크기에 따라 결정된다.
단계 720에서, 메모리 서브시스템(110)은 쓰기 요청을 위한 공유 버퍼 공간을 선택적으로 할당한다(예를 들어, 읽기 버퍼(201)가 가득 차거나 메모리 서브시스템(110)에 구성되지 않은 경우).
단계 518 내지 530에서, 메모리 서브시스템(110)은 도 5에서와 같이 쓰기 요청을 처리하고 쓰기 크레딧을 호스트 시스템(120)으로 다시 전송한다.
단계 732에서, 호스트 시스템(120)은 단계 528에서 쓰기 크레딧 수신에 응답하여 가용 읽기 크레딧의 양을 증분시킨다.
일반적으로, 호스트 시스템(120)과 메모리 서브시스템(110)은 단계 514의 쓰기 요청 이전, 단계 514의 쓰기 요청과 단계 520에서의 데이터 쓰기 사이, 단계 520의 데이터 쓰기와 단계 424의 응답 신호 사이, 그리고 단계 424의 응답 신호와 단계 426의 송신 명령 사이 등에 다른 통신을 가질 수 있다. 이러한 통신에는 다른 쓰기 요청, 읽기 요청, 상태 질의 등이 포함될 수 있다.
일부 예에서, 총 크레딧의 적어도 일부는 읽기 요청 또는 쓰기 요청에 사용될 수 있다. 예를 들어, 총 크레딧의 그러한 부분은 공유 버퍼(205)로부터의 것일 수 있다. 예를 들어, 읽기 버퍼(201)와 쓰기 버퍼(203) 중 어느 것도 가득 차 있지 않은 경우, 총 크레딧의 그러한 부분은 읽기 버퍼(201)로부터의 것 또는 쓰기 버퍼(203)로부터의 것일 수 있다. 이러한 경우, 호스트 시스템(120)은 총 크레딧의 양이 쓰기 요청의 크기보다 작지 않은 경우 단계 514에서 쓰기 요청을 전송할 수 있다. 호스트 시스템(120)에서 추적되는 총 크레딧의 양이 쓰기 요청의 크기보다 적을 때, 호스트 시스템(120)은 쓰기 요청을 전송하지 않는다.
일부 예에서, 도 4에서 추적된 바와 같이 이용 가능한 읽기 크레딧, 또는 도 6 및 7에서 추적된 바와 같이 이용 가능한 총 크레딧이, 호스트 시스템(120)이 읽기 요청을 전송할 수 있는지 여부를 결정하기에 충분하지 않을 수 있다. 호스트 시스템(120)은 아래에서 더 논의되는 바와 같이 이용 가능한 읽기 크레딧 및 이용 가능한 총 크레딧 모두를 추적할 수 있다.
도 8은 읽기 요청과 관련하여 사용 가능한 총 크레딧 및 사용 가능한 읽기 크레딧의 추적을 예시한다.
단계 810에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로부터 읽기/쓰기 요청을 수락하기 위해 메모리 서브시스템(110)에서 사용 가능한 총 크레딧의 초기 수량 표시를, 그리고, 호스트 시스템(120)으로부터의 읽기 요청을 수락하기 위해 메모리 서브시스템(110)에서 이용 가능한 읽기 크레딧의 초기 수량의 표시를, 전송하고 호스트 시스템(120)은 수신한다. 대안으로, 호스트 시스템(120)은 호스트 시스템(120) 상에 저장 및 실행되는 장치 드라이버, 메모리 서브시스템(110)의 구성 파라미터를 저장하는 메모리 위치, 등으로부터와 같은, 메모리 서브시스템(110) 이외의 소스로부터 총 크레딧 및 읽기 크레딧의 초기 양 표시를 수신할 수 있다.
단계 412 및 612에서, 호스트 시스템(120)은 단계 810에서 수신한 초기 수량과 동일하게 가용 읽기 크레딧의 수량을 설정하고, 단계 810에서 수신한 초기 수량과 동일하게 가용 총 크레딧 수량을 설정한다.
단계 414에서, 호스트 시스템(120)은 도 4에서와과 같이 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 저장된 특정 데이터에 대한 읽기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다.
단계 416 및 616에서, 호스트 시스템(120)은 도 4 및 도 6에서와 같이 읽기 크레딧 및 총 크레딧을 감분시킨다.
단계 812에서, 메모리 서브시스템(110)은 읽기 버퍼(201)가 읽기 요청을 위한 충분한 용량을 가지고 있는지를 결정한다; 그렇지 않다면, 단계 820에서, 메모리 서브시스템(110)은 읽기 요청을 위한 공유 버퍼 용량을 할당한다.
단계 418 내지 428에서, 도 4 및 6에서와 같이, 메모리 서브시스템(110)은 읽기 요청을 완료하고, 요청된 데이터를 호스트 시스템(120)에 제공한다.
단계 432 및 632에서, 호스트 시스템(120)은 도 4 및 도 6에서와 같이 단계 426에서 요청된 데이터를 수신한 것에 응답하여 가용 읽기 크레딧의 양과 가용 총 크레딧의 양을 증분시킨다.
도 8에서, 호스트 시스템(120)은 자신의 가용 총 크레딧의 양과 가용 읽기 크레딧의 양이 모두 읽기 요청의 크기 이상인 경우, 단계 414에서 읽기 요청을 전송할 수 있다. 호스트 시스템(120)에서 추적된 총 크레딧의 양이 읽기 요청의 크기보다 작거나 호스트 시스템(120)에서 추적된 읽기 크레딧의 양이 읽기 요청의 크기보다 작은 경우, 호스트 시스템(120)은 읽기 요청을 전송하지 않는다.
도 9는 쓰기 요청과 관련하여 이용 가능한 총 크레딧 및 이용 가능한 읽기 크레딧의 추적을 예시한다.
단계 910에서, 메모리 서브시스템(110)은 호스트 시스템(120)으로부터 읽기/쓰기 요청을 수락하기 위해 메모리 서브시스템(110)에서 사용 가능한 총 크레딧의 초기 수량 표시를, 그리고, 호스트 시스템(120)으로부터의 쓰기 요청을 수용하기 위해 메모리 서브시스템(110)에서 이용 가능한 쓰기 크레딧의 초기 수량의 표시를 전송하고, 호스트 시스템(120)은 수신한다. 대안으로, 호스트 시스템(120)은 호스트 시스템(120) 상에 저장 및 실행되는 장치 드라이버, 메모리 서브시스템(110)의 구성 파라미터를 저장하는 메모리 위치, 등으로부터와 같이, 메모리 서브시스템(110) 이외의 소스로부터 총 크레딧 및 읽기 크레딧의 초기 양의 표시를 수신할 수 있다.
단계 512 및 612에서 호스트 시스템(120)은 단계 910에서 수신한 초기 수량과 동일하게 가용 쓰기 크레딧의 수량을 설정하고, 단계 910에서 수신한 초기 수량과 동일하게 가용 총 크레딧의 수량을 설정한다.
단계 514에서, 호스트 시스템(120)은 도 5에서와 같이 메모리 서브시스템(110)의 매체 또는 메모리 구성요소(109A 내지 109N)에 지정된 데이터를 저장하기 위한 쓰기 요청을 전송하고, 메모리 서브시스템(110)은 수신한다.
단계 516 및 716에서, 호스트 시스템(120)은 도 5 및 도 7에서와 같이, 읽기 크레딧 및 총 크레딧을 감분시킨다.
단계 912에서, 메모리 서브시스템(110)은 쓰기 버퍼(203)가 쓰기 요청을 위한 충분한 용량을 가지고 있는지를 결정한다; 그렇지 않다면, 단계 920에서, 메모리 서브시스템(110)은 쓰기 요청을 위한 공유 버퍼 용량을 할당한다.
단계 518 내지 530에서, 메모리 서브시스템(110)은 도 5 및 도 7에서와 같이, 쓰기 요청을 처리하고 쓰기 크레딧을 호스트 시스템(120)으로 다시 전송한다.
단계 532 및 732에서, 호스트 시스템(120)은 단계 528에서 쓰기 크레딧을 수신한 것에 응답하여 사용 가능한 쓰기 크레딧 및 사용 가능한 총 크레딧의 양을 증분시킨다.
도 9에서, 호스트 시스템(120)은 자신의 가용 총 크레딧의 양과 가용 쓰기 크레딧의 양이 모두 쓰기 요청의 크기 이상인 경우 단계 514에서 읽기 요청을 전송할 수 있다. 호스트 시스템(120)에서 추적된 총 크레딧의 양이 쓰기 요청의 크기보다 작거나 호스트 시스템(120)에서 추적된 쓰기 크레딧의 양이 쓰기 요청의 크기보다 작은 경우, 호스트 시스템(120)은 쓰기 요청을 전송하지 않는다.
일부 경우에, 호스트 시스템(120)이 총 크레딧 T, 읽기 크레딧 R 및 쓰기 크레딧 W의 초기 수량의 표시를 가질 때, 호스트 시스템(120)은 S = W + R - T에 따라 공유 버퍼(205)의 용량 S를 계산할 수 있다. 대안으로, 공유 버퍼(205)의 용량 S는 컴퓨터 시스템에 저장된 구성 파라미터로부터 결정될 수 있다.
이후, 호스트 시스템(120)의 요청 관리자(112)는 사용 가능한 읽기 크레딧 r과 공유 버퍼(205)의 용량 S를 비교함에 기초하여 읽기 버퍼(201)가 가득 찼는지 여부를 결정할 수 있다. r < S 인 경우 읽기 버퍼(201)는 풀 상태이고; 읽기 요청에 사용되는 추가 용량은 공유 버퍼(205)로부터의 것이며, 이는 이용 가능한 쓰기 크레딧을 감소시킨다. 읽기 요청에 의해 공유 버퍼(205)의 사용을 위해 사용 가능한 쓰기 크레딧의 양이 감소할 때, 사용 가능한 쓰기 크레딧의 양은, 추가 쓰기 요청의 전송에 사용 가능한 실제 쓰기 버퍼 용량을 반영하며, 도 9에서와 같이 총 크레딧을 별도로 추적할 필요가 없다.
유사하게, 호스트 시스템(120)의 요청 관리자(112)는 사용 가능한 쓰기 크레딧 w를 공유 버퍼(205)의 용량 S와 비교함에 기초하여 쓰기 버퍼(203)가 가득 찼는 지 여부를 결정할 수 있다. w < S 인 경우, 쓰기 버퍼(203)는 풀 상태이고, 쓰기 요청에 사용되는 추가 용량은 공유 버퍼(205)로부터의 것이며, 이는 이용 가능한 읽기 크레딧을 감소시킨다. 쓰기 요청에 의해 공유 버퍼(205)를 사용하기 위해 사용 가능한 읽기 크레딧의 양이 감소할 때, 사용 가능한 읽기 크레딧의 양은 추가 읽기 요청의 전송에 사용 가능한 실제 읽기 버퍼 용량을 반영한다. 그리고 도 8에서와 같이 총 크레딧을 별도로 추적할 필요가 없다.
호스트 시스템(120)이 읽기 크레딧 증분을 갖는 경우(예를 들어, 읽기 요청에 의해 요청된 데이터를 수신하는 것에 응답하여), 호스트 시스템(120)의 요청 관리자(112)는 증가된 용량이 공유 버퍼(205)에 있는지 여부를 결정할 수 있다. 현재 읽기 크레딧의 양이 S보다 작을 때, S까지의 가용 읽기 크레딧의 증가는 공유 버퍼(205)에 있다. 공유 버퍼(205)에서 증가된 읽기 크레딧은 또한 가용 쓰기 크레딧을 증가시킨다.
유사하게, 호스트 시스템(120)이 쓰기 크레딧 증분을 가질 때(예를 들어, 메모리 서브시스템(110)으로부터 쓰기 크레딧을 수신하는 것에 응답하여), 호스트 시스템(120)의 요청 관리자(112)는 증가된 용량이 공유 버퍼(205)에 있는지 여부를 결정할 수 있다. 현재 쓰기 크레딧의 양이 S보다 작을 때, S까지의 가용 쓰기 크레딧의 증가는 공유 버퍼(205)에 있다. 공유 버퍼(205)의 증가된 쓰기 크레딧은 또한 가용 읽기 크레딧을 증가시킨다.
도 10은 본 개시의 일부 실시예에 따른 읽기 요청 및 쓰기 요청에 대해 공유되는 버퍼를 관리하는 예시적인 방법의 흐름도이다. 도 10의 방법은 하드웨어(예: 처리 장치, 회로, 전용 로직, 프로그래밍 가능 로직, 마이크로 코드, 장치의 하드웨어, 집적 회로, 등), 소프트웨어(예: 처리 장치에서 수행 또는 실행되는 명령어), 또는 이들의 조합을 포함할 수 있다. 일부 실시예에서, 도 10의 방법은 도 1 또는 도 2의 버퍼 관리자(113)에 의해 적어도 부분적으로 수행된다. 특정 순서 또는 차례로 표시되지만, 달리 명시되지 않는 한, 프로세스의 순서를 수정할 수 있다. 따라서, 예시된 실시예는 단지 예시로서 이해되어야하며, 예시된 프로세스는 상이한 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스는 다양한 실시예에서 생략될 수 있다. 따라서 모든 실시예에서 모든 프로세스가 필요한 것은 아니다. 다른 프로세스 흐름도 가능한다.
블록 310에서, 메모리 서브시스템(110)의 매체 제어기(115)는 호스트 시스템(120)으로부터 쓰기 요청을 수신한다.
블록 312에서, 버퍼 관리자(113)는 쓰기 요청의 보류 동안 버퍼의 일부(예를 들어, 203 및 205)에 쓰기 요청의 데이터를 저장한다.
블록 314에서, 메모리 서브시스템(110)의 매체 제어기(115)는 호스트 시스템(120)으로부터 읽기 요청을 수신한다.
블록 316에서, 버퍼 관리자(113)는 쓰기 요청이 보류되는 동안 쓰기 요청의 데이터를 저장하는 버퍼의 일부(예를 들어, 203 및 205)와 적어도 부분적으로 겹치는 버퍼의 일부(예를 들어, 201 및 205)에 읽기 요청의 데이터를 저장한다.
따라서, 버퍼의 적어도 동일한 부분(예를 들어, 205)이 버퍼 관리자(113)에 의해 사용되어, 버퍼(예를 들어, 205)의 다른 동작 기간에서 읽기 요청 및 쓰기 요청을 버퍼링할 수 있다.
도 11 및 12는 본 개시의 일부 실시예에 따라 메모리 서브시스템에 대한 요청을 관리하는 예시적인 방법의 흐름도이다. 도 11 및 12의 방법들은 하드웨어(예: 처리 장치, 회로, 전용 로직, 프로그램 가능 로직, 마이크로 코드, 장치의 하드웨어, 집적 회로 등), 소프트웨어(예: 처리 장치에서 실행 또는 수행되는 명령어) 또는 이들의 조합을 포함할 수 있다. 일부 실시예에서, 도 11 또는 12는 도 1 또는 도 2의 요청 관리자(112)에 의해 적어도 부분적으로 수행된다. 특정 순서 또는 차례로 표시되지만 달리 지정하지 않는 한, 프로세스의 순서를 수정할 수 있다. 따라서, 예시된 실시예는 단지 예시로서 이해되어야하며, 예시된 프로세스는 상이한 순서로 수행될 수 있고, 일부 프로세스는 병렬로 수행될 수 있다. 추가로, 하나 이상의 프로세스는 다양한 실시예에서 생략될 수 있다. 따라서 모든 실시예에서 모든 프로세스가 필요한 것은 아니다. 다른 프로세스 흐름도 가능한다.
블록 330에서, 요청 관리자(112)는 메모리 서브시스템(110)에 읽기 요청 및 쓰기 요청을 전송하기 위한 메모리 서브시스템(110)의 사용 가능한 버퍼 용량의 총량을 저장한다.
블록 332에서, 메모리 제어기(116)는 메모리 서브시스템(110)에 읽기 요청을 전송한다.
블록 334에서, 요청 관리자(112)는 읽기 요청에 기초하여 총량을 감소시킨다.
블록 336에서, 메모리 제어기(116)는 메모리 서브시스템(110)에 쓰기 요청을 전송한다.
블록 338에서, 요청 관리자(112)는 쓰기 요청에 기초하여 총량을 감소시킨다.
요청 관리자(112)는 읽기 요청에 의해 요청된 데이터를 수신함에 따라 가용 버퍼 용량의 총량을 증가시킬 수 있고, 메모리 서브시스템(110)으로부터 전달되는 쓰기 크레딧 증분에 따라 총량을 증가시킬 수 있다. 요청 관리자(112)는 현재 총량이 읽기 요청 또는 쓰기 요청의 크기보다 작지 않은지에 기초하여 읽기 요청 또는 쓰기 요청을 전송할지 여부를 결정할 수 있다.
블록 360에서, 요청 관리자(112)는 메모리 서브시스템(110)에 읽기 요청을 전송하기 위한 메모리 서브시스템(110)의 읽기 버퍼 용량의 양을 저장한다.
블록 362에서, 메모리 제어기(116)는 메모리 서브시스템(110)에 읽기 요청을 전송한다.
블록 364에서, 요청 관리자(112)는 읽기 요청에 기초하여 양을 감소시킨다.
블록 366에서, 메모리 제어기(116)는 읽기 요청에 의해 요청된 데이터를 메모리 서브시스템(110)으로부터 수신한다.
블록 368에서, 요청 관리자(112)는 읽기 요청에 의해 요청된 데이터를 수신하는 것에 기초하여 양을 증가시킨다.
요청 관리자(112)는 현재 가용한 읽기 버퍼 용량이 읽기 요청의 크기 이상인지 여부에 따라 읽기 요청을 전송할지 여부를 결정할 수 있다.
도 13은 본 명세서에서 논의된 방법론들 중 임의의 하나 이상을 머신으로 하여금 수행하게 하는 명령어 세트를 실행할 수 있는 컴퓨터 시스템(200)의 예시적인 머신을 도시한다. 일부 실시예에서, 컴퓨터 시스템(200)은 메모리 서브시스템(예를 들어, 도 1의 메모리 서브시스템(110))을 포함하거나 이에 결합되거나 이를 이용하는 호스트 시스템(예를 들어, 도 1의 호스트 시스템(120))에 대응할 수 있고, 또는, (가령, 도 1-12를을 참조하여 기술된 요청 관리자(112) 및/또는 버퍼 관리자(113)에 대응하는 동작을 수행하기 위한 명령을 실행하기 위해) 요청/버퍼 관리자(213)의 동작을 수행하는데 사용될 수 있다. 대안적인 실시예에서, 머신은 LAN, 인트라넷, 엑스트라 넷 및/또는 인터넷으로 다른 머신에 연결(예를 들어, 네트워크화)될 수 있다. 머신은 클라이언트-서버 네트워크 환경의 서버 또는 클라이언트 머신의 범주에서, 피어-투-피어(또는 분산) 네트워크 환경의 피어 머신으로, 또는 클라우드 컴퓨팅 인프러스트럭처 또는 환경의 서버 또는 클라이언트 머신으로, 작동할 수 있다.
머신은 개인용 컴퓨터(PC), 태블릿 PC, 셋톱 박스(STB), PDA(Personal Digital Assistant), 휴대 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신이 취할 조치를 지정하는 일련의 명령(순차적 또는 기타)을 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신"이라는 용어는 본 명세서에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 한 세트(또는 다중 세트)의 명령어를 개별적으로 또는 공동으로 실행하는 임의의 머신 집합을 포함하는 것으로 간주되어야한다.
예시적인 컴퓨터 시스템(200)은 처리 장치(202), 메인 메모리(204)(예를 들어, 읽기 전용 메모리(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(DRAM), 가령, 동기식 DRAM(SDRAM) 또는 Rambus DRAM(RDRAM), 또는 정적 랜덤 액세스 메모리(SRAM) 등))와, (복수의 버스를 포함할 수 있는) 버스(230)를 통해 서로 통신하는 데이터 저장 시스템(218)을 포함한다.
처리 장치(202)는 마이크로 프로세서, 중앙 처리 장치(CPU), 등과 같은 하나 이상의 범용 처리 장치를 나타낸다. 보다 구체적으로, 처리 장치는 복잡한 명령 세트 컴퓨팅(CISC) 마이크로 프로세서, 감소된 명령 세트 컴퓨팅(RISC) 마이크로 프로세서, 매우 긴 명령어(VLIW) 마이크로 프로세서, 또는 다른 명령 세트를 구현하는 프로세서 또는 명령어 세트의 조합을 구현하는 프로세서일 수 있다. 처리 장치(202)는 또한 주문형 집적 회로(ASIC), 필드 프로그램 가능 게이트 어레이(FPGA), 디지털 신호 프로세서(DSP), 그래픽 처리 장치(GPU), 네트워크 프로세서, 등과 같은 하나 이상의 특수 목적 처리 장치일 수 있다. 처리 장치(202)는 본 명세서에서 논의된 동작 및 단계를 수행하기 위한 명령어(226)를 실행하도록 구성된다. 컴퓨터 시스템(200)은 네트워크(220)를 통해 통신하기 위한 네트워크 인터페이스 장치(208)를 더 포함할 수 있다.
데이터 저장 시스템(218)은 여기서 기술되는 방법론 또는 기능들 중 임의의 하나 이상을 구현하는 소프트웨어 또는 하나 이상의 명령어 세트(226)를 저장하는 기계 판독가능 저장 매체(224)(컴퓨터 판독 가능 매체라고도 함)를 포함할 수 있다. 명령어(226)는 또한 컴퓨터 시스템(200), 메인 메모리(204) 및 처리 장치(202)에 의해 실행되는 동안 메인 메모리(204) 내에 및/또는 처리 장치(202) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 또한 머신 판독 가능 저장 매체를 구성한다. 머신 판독 가능 저장 매체(224), 데이터 저장 시스템(218) 및/또는 메인 메모리(204)는 도 1의 메모리 서브시스템(110)에 대응할 수 있다.
일 실시예에서, 명령어(226)는 요청/버퍼 관리자(213)(예를 들어, 도 1-12를 참조하여 설명된 요청 관리자(112) 및/또는 버퍼 관리자(113))에 대응하는 기능을 구현하기 위한 명령어를 포함한다. 기계 판독 가능 저장 매체(224)가 예시적인 실시예에서 단일 매체인 것으로 도시되어 있지만, "머신 판독 가능 저장 매체"라는 용어는 하나 이상의 명령어 세트를 저장하는 단일 매체 또는 다중 매체를 포함하는 것으로 간주되어야한다. "머신 판독 가능 저장 매체"라는 용어는 본 개시의 방법론 중 임의의 하나 이상을 기계로 하여금 수행하게 하는, 기계에 의한 실행을 위한 명령어 세트를 저장 또는 인코딩할 수 있는, 임의의 매체를 포함하는 것으로 또한 취급되어야 한다. 따라서, "머신 판독 가능 저장 매체"라는 용어는 솔리드 스테이트 메모리, 광학 매체 및 자기 매체를 포함하지만 이에 제한되지는 않는 것으로 취급되어야 한다.
전술한 상세한 설명의 일부 부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 상징적 표현 및 알고리즘의 관점에서 제시되었다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술의 숙련자가 자신의 작업의 본질을 당업자에게 가장 효과적으로 전달하기 위해 사용하는 방법이다. 알고리즘은 여기에서 일반적으로, 원하는 결과로 이어지는 일관된 작업 시퀀스로 간주된다. 작업은 물리량의 물리적 조작이 필요한 작업이다. 반드시 그런 것은 아니지만 일반적으로, 이러한 양은 저장, 결합, 비교 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용의 이유로, 이러한 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 지칭하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어 모두는 적절한 물리량과 연관되어야하며 이러한 수량에 적용되는 편리한 라벨 일 뿐이라는 것을 명심해야한다. 본 개시 내용은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리량(전자적 양)으로 표현되는 데이터를 조작하여, 컴퓨터 시스템 메모리 또는 다른 이러한 정보 저장 시스템 내의 물리량으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사 전자 컴퓨팅 장치의 과정 및 프로세스를 나타낼 수 있다.
본 개시는 또한 여기에서의 동작을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적을 위해 특별히 구성될 수 있거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성된 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 임의의 유형의 디스크, 가령, 플로피 디스크, 광학 디스크, CD-ROM 및 자기 광학 디스크, 읽기 전용 메모리(ROM), RAM(Random Access Memory), EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령을 저장하는 데 적합한 임의의 유형의 매체를 포함하는, 그러나 이에 제한되지 않는, 컴퓨터 판독가능 저장 매체에 저장될 수 있고, 그 각각은 컴퓨터 시스템 버스에 결합된다.
여기에 제시된 알고리즘 및 디스플레이는 본질적으로 특정 컴퓨터 또는 기타 장치와 관련이 없다. 다양한 범용 시스템이 본 명세서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 방법을 수행하기 위해 보다 전문화된 장치를 구성하는 것이 편리함을 입증할 수 있다. 이러한 다양한 시스템의 구조는 아래 설명에 설명 된대로 나타난다. 또한, 본 개시는 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에 설명된 바와 같은 개시 내용의 교시를 구현하기 위해 사용될 수 있다는 것이 이해될 것이다.
본 개시 내용은 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있으며, 이는 컴퓨터 시스템(또는 다른 전자 장치)이 프로세스를 수행하도록 프로그래밍하는 데 사용될 수 있는 명령어가 저장된 머신 판독 가능 매체를 포함할 수 있다. 본 개시에 따라. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 일부 실시예에서, 머신 판독 가능(예를 들어, 컴퓨터 판독 가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 구성요소 등과 같은 머신(예를 들어, 컴퓨터) 판독 가능 저장 매체를 포함한다.
전술한 명세서에서, 본 개시의 실시예들은 그 특정 예시적인 실시예들을 참조하여 설명되었다. 다음의 청구 범위에 설명된 바와 같이 본 개시 내용의 보다 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미로 간주되어야한다.

Claims (20)

  1. 메모리 시스템에 있어서,
    복수의 메모리 구성요소; 및
    상기 복수의 메모리 구성요소와 동작 가능하게 결합된 처리 장치를 포함하되, 상기 처리 장치는:
    호스트 시스템으로부터 쓰기 요청을 수신하고,
    쓰기 요청이 메모리 시스템에서 보류중인 제 1 기간 동안 메모리 시스템의 버퍼의 일부에 쓰기 요청의 데이터를 저장하며,
    호스트 시스템으로부터 읽기 요청을 수신하고, 그리고,
    읽기 요청이 메모리 시스템에서 계류중인 제 2 기간 동안 버퍼의 일부에 읽기 요청의 데이터를 저장하며,
    상기 쓰기 요청의 데이터를 저장하는 버퍼의 일부가 상기 읽기 요청의 데이터를 저장하는 버퍼의 일부와 적어도 부분적으로 중첩되는, 메모리 시스템.
  2. 제 1 항에 있어서, 상기 처리 장치는 또한:
    버퍼의 제 1 부분을 예약하고, 상기 제 1 부분은 읽기 요청 및 쓰기 요청을 위해 공유되며,
    버퍼의 제 1 부분에 쓰기 요청 및 읽기 요청을 버퍼링하는, 메모리 시스템.
  3. 제 2 항에 있어서, 상기 처리 장치는 또한:
    버퍼의 제 2 부분을 예약하고, 그리고,
    상기 제 2 부분에 읽기 요청을 버퍼링하고 쓰기 요청은 버퍼링하지 않는, 메모리 시스템.
  4. 제 3 항에 있어서, 상기 처리 장치는 또한:
    버퍼의 제 3 부분을 예약하고, 그리고,
    상기 제 3 부분에 쓰기 요청을 버퍼링하고 읽기 요청은 버퍼링하지 않는, 메모리 시스템.
  5. 제 4 항에 있어서, 상기 메모리 구성요소는 비휘발성 메모리를 포함하고; 상기 처리 장치는 비휘발성 듀얼 인라인 메모리 모듈에 대한 통신 프로토콜에 따라 호스트 시스템으로부터 쓰기 요청 및 읽기 요청을 수신하는, 메모리 시스템.
  6. 제 1 항에 있어서, 상기 제 1 기간은 상기 제 2 기간과 중첩되지 않는, 메모리 시스템.
  7. 호스트 시스템으로부터 복수의 메모리 구성요소를 갖는 메모리 시스템까지 읽기 요청 및 쓰기 요청을 전송하기 위한 메모리 시스템의 가용 버퍼 용량을 식별하는 양을 호스트 시스템에 저장하는 단계;
    메모리 구성요소로부터 데이터를 불러오기 위한 읽기 요청을 호스트 시스템에 의해 메모리 시스템으로 전송하는 단계;
    상기 읽기 요청에 기초하여 상기 양을 호스트 시스템에 의해 감소시키는 단계;
    메모리 구성요소에 데이터를 저장하기 위한 쓰기 요청을 호스트 시스템에 의해 메모리 시스템에 전송하는 단계; 및
    쓰기 요청에 기초하여 상기 양을 호스트 시스템에 의해 감소시키는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    호스트 시스템으로부터 메모리 시스템으로 읽기 요청을 전송하기 위한 메모리 시스템의 사용 가능한 읽기 버퍼 용량의 양을 호스트 시스템에 저장하는 단계; 및
    상기 읽기 요청에 기초하여 사용 가능한 읽기 버퍼 용량의 양을 호스트 시스템에 의해 감소시키는 단계를 더 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 읽기 요청에 의해 요청된 데이터를 메모리 시스템으로부터 호스트 시스템에서 수신하는 단계; 및
    읽기 요청에 의해 요청된 데이터의 수신에 기초하여, 호스트 시스템으로부터 메모리 시스템으로 읽기 요청 및 쓰기 요청을 전송하기 위한 메모리 시스템의 사용 가능한 버퍼 용량을 식별하는 양을, 호스트 시스템에 의해, 증가시키는 단계를 더 포함하는, 방법.
  10. 제 7 항에 있어서,
    호스트 시스템으로부터 메모리 시스템으로 쓰기 요청을 전송하기 위한 메모리 시스템의 사용 가능한 쓰기 버퍼 용량의 양을 호스트 시스템에 저장하는 단계; 및
    호스트 시스템에서 쓰기 요청에 기초하여 쓰기 버퍼 용량의 양을 호스트 시스템에 의해 감소시키는 단계를 더 포함하는, 방법.
  11. 제 7 항에 있어서,
    하나 이상의 쓰기 요청의 완료 후에 이용 가능하게되는 메모리 시스템의 버퍼 용량의 양을 식별하는 데이터를 메모리 시스템으로부터 호스트 시스템에서 수신하는 단계; 및
    하나 이상의 쓰기 요청 완료 후 이용 가능하게되는 메모리 시스템의 버퍼 용량을 식별하는 데이터에 따라, 호스트 시스템으로부터 메모리 시스템으로 읽기 요청 및 쓰기 요청을 전송하기 위한 메모리 시스템의 사용 가능한 버퍼 용량을 식별하는 양을, 호스트 시스템에 의해 증가시키는 단계를 더 포함하는, 방법.
  12. 명령어를 저장하는 비-일시적 컴퓨터 판독 가능 저장 매체에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때, 상기 처리 장치로 하여금
    복수의 메모리 구성요소를 가진 메모리 시스템의 읽기 버퍼 용량의 양을 처리 장치로 하여금 호스트 시스템에 저장하게 하고, .
    메모리 구성요소로부터 데이터를 불러들이기 위한 읽기 요청을 호스트 시스템에 의해 메모리 시스템에 전송하게 하며,
    호스트 시스템에 의해 읽기 요청에 기초하여 읽기 버퍼 용량의 양을 호스트 시스템에 의해 감소시키게 하고,
    읽기 요청에 의해 요청된 데이터를 메모리 시스템으로부터 호스트 시스템에서 수신하게 하며, 그리고,
    읽기 요청에 의해 요청된 데이터의 수신에 기초하여 읽기 버퍼 용량의 양을 호스트 시스템에 의해 증가하게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  13. 제 12 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때, 상기 처리 장치로 하여금.
    메모리 시스템의 총 버퍼 용량의 양을 호스트 시스템에 저장하게 하고; 그리고,
    읽기 요청에 기초하여 총 버퍼 용량의 양을 호스트 시스템에 의해 감소시키게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  14. 제 13 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    메모리 구성요소에 데이터를 저장하기 위한 쓰기 요청을 호스트 시스템에 의해 메모리 시스템에 전송하게 하고, 그리고
    쓰기 요청에 기초하여 총 버퍼 용량의 양을 호스트 시스템에 의해 감소시키게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  15. 제 14 항에 있어서, 상기 명려어는 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    메모리 시스템의 쓰기 버퍼 용량의 양을 호스트 시스템에 저장하게 하고; 그리고,
    읽기 요청에 기초하여 쓰기 버퍼 용량의 양을 호스트 시스템에 의해 감소시키게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  16. 제 15 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    하나 이상의 쓰기 요청이 완료된 후 이용 가능해진 버퍼 용량의 양을 식별하는 데이터를 메모리 시스템으로부터 호스트 시스템에서 수신하게 하고; 그리고,
    메모리 시스템에서 하나 이상의 쓰기 요청이 완료된 후 사용 가능해진 버퍼 용량의 양을 식별하는 데이터에 기초하여 쓰기 버퍼 용량의 양을 호스트 시스템에 의해 증가시키게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  17. 제 16 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    하나 이상의 쓰기 요청이 완료된 후 사용 가능해진 버퍼 용량의 양을 식별하는 데이터에 기초하여, 총 버퍼 용량의 양을 호스트 시스템에 의해 증가시키게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  18. 제 12 항에 있어서, 상기 명령어는, 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    읽기 요청 및 쓰기 요청을 버퍼링하기 위한 메모리 시스템의 버퍼 용량의 공유 부분을 식별하는 데이터를 호스트 시스템에 저장하게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  19. 제 18 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때 상기 처리 장치로 하여금,
    읽기 요청 및 쓰기 요청을 버퍼링하기 위한 버퍼 용량의 공유 부분을 식별하는 데이터를 기반으로 읽기 요청 및 쓰기 요청을 전송하는 데 사용할 수 있는 총 버퍼 용량의 양을 계산하게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
  20. 제 18 항에 있어서, 상기 명령어는 처리 장치에 의해 실행될 때, 상기 처리 장치로 하여금,
    읽기 요청 및 쓰기 요청을 버퍼링하기 위한 버퍼 용량의 공유 부분을 식별하는 데이터에 기초하여 읽기 요청을 전송하는 데 사용할 수 있는 읽기 버퍼 용량을 계산하게 하는, 비-일시적 컴퓨터 판독 가능 저장 매체.
KR1020217006513A 2018-08-08 2019-07-24 읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리 KR20210029833A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/058,102 US11409436B2 (en) 2018-08-08 2018-08-08 Buffer management in memory systems for read and write requests
US16/058,102 2018-08-08
PCT/US2019/043300 WO2020033149A1 (en) 2018-08-08 2019-07-24 Buffer management in memory systems for read and write requests

Publications (1)

Publication Number Publication Date
KR20210029833A true KR20210029833A (ko) 2021-03-16

Family

ID=69407205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217006513A KR20210029833A (ko) 2018-08-08 2019-07-24 읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리

Country Status (5)

Country Link
US (2) US11409436B2 (ko)
EP (1) EP3834071A4 (ko)
KR (1) KR20210029833A (ko)
CN (1) CN112424743A (ko)
WO (1) WO2020033149A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10901657B2 (en) * 2018-11-29 2021-01-26 International Business Machines Corporation Dynamic write credit buffer management of non-volatile dual inline memory module
US10901903B2 (en) * 2018-12-21 2021-01-26 Micron Technology, Inc. Flash memory persistent cache techniques
US10802750B2 (en) * 2019-02-28 2020-10-13 Silicon Motion Inc. Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module
US11199998B2 (en) * 2019-08-02 2021-12-14 Samsung Electronics Co., Ltd. Non-volatile dual in-line memory module (NVDIMM) device assisted operations management
US11269524B2 (en) * 2019-10-07 2022-03-08 Samsung Electronics Co., Ltd. Methods and systems for managing data transfer between a UFS host and a UFS target
US11003580B1 (en) * 2020-04-30 2021-05-11 Seagate Technology Llc Managing overlapping reads and writes in a data cache
FR3111439B1 (fr) * 2020-06-12 2023-06-30 St Microelectronics Rousset Procédé de gestion des requêtes d’accès à une mémoire vive et système correspondant
US11704058B2 (en) * 2020-07-28 2023-07-18 Samsung Electronics Co., Ltd. Systems and methods for resource-based scheduling of commands
DE102022100592A1 (de) * 2021-02-05 2022-08-11 Samsung Electronics Co., Ltd. Betriebsverfahren eines Universal-Flash-Storage-Hosts und Betriebsverfahren eines Universal-Flash-Storage-Systems
US11620159B2 (en) 2021-04-23 2023-04-04 Samsung Electronics Co., Ltd. Systems and methods for I/O command scheduling based on multiple resource parameters
US11995008B2 (en) * 2021-06-22 2024-05-28 Advanced Micro Devices, Inc. Memory controller with hybrid DRAM/persistent memory channel arbitration
CN113535437B (zh) * 2021-08-03 2023-04-07 节卡机器人股份有限公司 一种机器人的模块数据交互方法、电子设备及存储介质
US20230236726A1 (en) * 2022-01-27 2023-07-27 Micron Technology, Inc. Optimized control of the commands running in a cache

Family Cites Families (37)

* 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
US6253288B1 (en) * 1998-04-30 2001-06-26 Hewlett-Packard Company Hybrid cache/SIRO buffer system
US6499085B2 (en) * 2000-12-29 2002-12-24 Intel Corporation Method and system for servicing cache line in response to partial cache line request
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
CN100470585C (zh) 2004-03-31 2009-03-18 松下电器产业株式会社 存储卡和存储卡系统
KR100858756B1 (ko) 2004-07-12 2008-09-16 가부시끼가이샤 도시바 저장 디바이스 및 호스트 장치
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
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
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
JP5349515B2 (ja) 2011-03-14 2013-11-20 株式会社東芝 バッファ管理装置、バッファ管理方法及び記憶装置
JP5817193B2 (ja) 2011-04-15 2015-11-18 セイコーエプソン株式会社 記録装置、記録装置の制御方法、及び、プログラム
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 指令執行方法、記憶體控制器與記憶體儲存裝置
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US9817761B2 (en) * 2012-01-06 2017-11-14 Sandisk Technologies Llc Methods, systems, and computer readable media for optimization of host sequential reads or writes based on volume of data transfer
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
JP6139010B2 (ja) 2013-03-15 2017-05-31 インテル・コーポレーション デバイス
US9075557B2 (en) * 2013-05-15 2015-07-07 SanDisk Technologies, Inc. Virtual channel for data transfers between devices
US9552323B1 (en) 2013-07-05 2017-01-24 Altera Corporation High-speed peripheral component interconnect (PCIe) input-output devices with receive buffer management circuitry
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 삼성전자주식회사 디코더의 동작 방법, 및 상기 디코더를 포함하는 어플리케이션 프로세서의 동작 방법
US10585623B2 (en) * 2015-12-11 2020-03-10 Vivante Corporation Software defined FIFO buffer for multithreaded access
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
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
CN109478168B (zh) * 2017-06-23 2020-12-04 华为技术有限公司 内存访问技术及计算机系统
US11048645B2 (en) * 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US11409436B2 (en) 2018-08-08 2022-08-09 Micron Technology, Inc. Buffer management in memory systems for read and write requests
US10782916B2 (en) 2018-08-08 2020-09-22 Micron Technology, Inc. Proactive return of write credits in a memory system

Also Published As

Publication number Publication date
EP3834071A1 (en) 2021-06-16
EP3834071A4 (en) 2022-04-20
US20200050366A1 (en) 2020-02-13
WO2020033149A1 (en) 2020-02-13
US20220326850A1 (en) 2022-10-13
CN112424743A (zh) 2021-02-26
US11573700B2 (en) 2023-02-07
US11409436B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
KR20210029833A (ko) 읽기 및 쓰기 요청을 위한 메모리 시스템의 버퍼 관리
US11650755B2 (en) Proactive return of write credits in a memory system
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
KR20210019576A (ko) 메모리 액세스 가속화를 위한 예측 페이징
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
WO2020227293A1 (en) Dynamic data placement for collision avoidance among concurrent write streams
CN112534391A (zh) 限制来自存储器系统的响应信号
CN112534392A (zh) 用于存储器系统中的读取操作的服务质量控制
CN115905057A (zh) 存储器装置中用于媒体管理命令的高效缓冲器管理
KR20220070034A (ko) 로드 명령을 위한 타임 투 리브
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
CN112534393B (zh) 存储器系统中的写入积分的主动返回
US11816035B2 (en) Latency reduction using stream cache
US11789663B2 (en) Execution of commands addressed to a logical block

Legal Events

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