KR20200051624A - 비-휘발성 메모리에 대한 영구 기입들 - Google Patents

비-휘발성 메모리에 대한 영구 기입들 Download PDF

Info

Publication number
KR20200051624A
KR20200051624A KR1020207006858A KR20207006858A KR20200051624A KR 20200051624 A KR20200051624 A KR 20200051624A KR 1020207006858 A KR1020207006858 A KR 1020207006858A KR 20207006858 A KR20207006858 A KR 20207006858A KR 20200051624 A KR20200051624 A KR 20200051624A
Authority
KR
South Korea
Prior art keywords
permanent
memory system
host
write
permanent write
Prior art date
Application number
KR1020207006858A
Other languages
English (en)
Other versions
KR102425287B1 (ko
Inventor
라즈 라마누잔
쿨지트 싱어 베인스
리용 왕
웨슬리 퀸
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20200051624A publication Critical patent/KR20200051624A/ko
Application granted granted Critical
Publication of KR102425287B1 publication Critical patent/KR102425287B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • 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/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
    • 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

Abstract

영구 동작들을 위한 시스템들 및 방법들은 호스트 및 메모리 시스템을 포함한다. 메모리 시스템은, 호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신할 시에, 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행한다. 메모리 시스템은 또한, 호스트로부터 영구 기입 커맨드와 연관된 기입 식별(WID)을 수신하고, 영구 기입의 성공적인 완료 시에, 연관된 WID와 함께 영구 기입 완료 표시를 호스트에 제공할 수 있다.

Description

비-휘발성 메모리에 대한 영구 기입들
[0001] 개시된 양상들은 메모리 시스템들에 관한 것이다. 더 구체적으로, 예시적인 양상들은 비-휘발성 메모리에 대한 영구 기입(Persistent Write) 동작들 및 그들의 프로토콜들에 관한 것이다.
[0002] SCM(storage class memory)은 일반적으로, 고성능을 또한 가질 수 있는 고용량 메모리를 지칭한다. SCM은 서버들 또는 다른 프로세싱 시스템들과 같은 애플리케이션들에서 사용될 수 있으며, 여기서 프로세서 또는 중앙 프로세싱 유닛에 대한 데이터의 동작 세트는 SCM에 저장될 수 있는 반면, 완성 데이터 세트는 백킹 메모리(backing memory) 또는 하드 디스크 드라이브(HDD)에 저장될 수 있다. SCM의 중요한 기대는 기입들의 영구성이며, 이는, 즉 서버가 고장나거나 전력이 끊기더라도 SCM에 기입되는 정보가 손실되지 않는다는 것을 의미한다. 그러나, 영구성에 관한 그러한 기대들을 충족시킬 수 있는 종래의 비-휘발성 메모리는 SCM에 요구될 수 있는 용량 및 성능 메트릭들을 충족시킬 수 없을 수 있다. 따라서, PCM(Phase Change Memory), STT MRAM(Spin-Transfer Torque Magnetic Random Access Memory), ReRAM(Resistive RAM) 등과 같은 기술들이 SCM의 구현들에서 점점 대중화되고 있다.
[0003] SCM을 사용할 경우, 애플리케이션은 대응하는 영구 메모리를 업데이트하기 위해 메모리 기입 동작들을 사용할 수 있다. SCM으로의 기입이 영구적일 경우, 기입 동작을 요청하는 애플리케이션은, 기입 동작이 영구 메모리에 도달했다는 명시적인 확인을 기대할 수 있다. 반대로, 비-영구 메모리(이를테면, 동적 랜덤 액세스 메모리(DRAM) 또는 다른 휘발성 메모리)로의 기입 동작들은 종래에, 일단 기입 동작 및 연관된 데이터가 메모리에 전달되면 애플리케이션의 관점으로부터 완료 또는 포스팅(post)된 것으로 고려되고, 데이터가 기입되었다는 어떠한 명시적인 확인도 요구되지 않는다. 따라서, 영구성의 기대로 SCM을 사용하는 애플리케이션들의 경우, 영구 메모리로의 기입 동작들의 명시적인 확인을 제공하는 고성능 기법들이 바람직하며, 여기서 고성능 기법들은 또한 효율을 최대화시키기 위해 상이한 데이터 사이즈들과 호환가능하다.
[0004] 영구 메모리 동작들에 대한 2개의 타입들의 종래의 방식들이 존재한다. 제1 방식은, 전체 메모리 시스템(예컨대, 당업계에 알려진 바와 같이 일련의 DRAM 집적 회로들을 포함하는 듀얼 인라인 메모리 모듈(DIMM))이 에너지-지원(energy-back)된다고 가정한다. 이러한 경우, DIMM의 수신 단부 상의 중간 버퍼로의 기입 동작은 영구성의 기대들을 만족시키기에 충분할 수 있다. 일 구현에서, 일단 기입 동작을 요청하는 애플리케이션과 DIMM 사이의 채널 인터페이스를 통한 기입 동작이 성공적으로 완료되면, 기입 동작은 영구적인 것으로 고려될 수 있다. 그러나, 그러한 방식들을 구현하는 것은, 정전(power-failure)이 검출될 경우 DIMM 상의 중간 버퍼들을 플러싱(flush)하기 위한 전력/충전을 제공하는 슈퍼-커패시터들 또는 배터리들과 같은 에너지 저장 디바이스들의 사용을 수반할 수 있다. 그러나, 그러한 에너지 저장 디바이스들은 모든 DIMM들 상에서 이용가능하지 않을 수 있으며, 추가로, 이용가능하더라도 그들은 비용이 많이 든다.
[0005] 제2 방식에서, 모든 이전의 기입 동작들은, 애플리케이션이 DIMM으로부터의 완료 상태를 대기하는 동안 영구 메모리로 플러싱될 수 있다. 그러나, 이러한 방식은 상당한 성능 비용을 발생시킬 수 있다. 예컨대, 애플리케이션이 DIMM으로의 정밀한 입도의 영구 기입들을 요청하고 있을 수 있지만 DIMM으로 스트리밍되는 다른 동시적이지만 독립적인 기입 동작들이 존재할 수 있는 경우들에서, 완료 상태를 보류한 영구 메모리로의 모든 이전의 기입 동작들을 플러싱하는 것은 영구 기입 요청들 뿐만 아니라 동시적인 기입 동작들을 느리게 할 수 있다.
[0006] 따라서, 종래의 접근법들의 전술된 단점들을 피하면서, 영구 기입들의 상이한 입도들 또는 사이즈들을 지원하는 고성능 및 고효율 영구 기입 동작들에 대한 필요성이 당업계에 존재한다.
[0007] 본 발명의 예시적인 양상들은 영구 동작들을 위한 시스템들 및 방법들을 포함한다. 메모리 시스템은, 호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신할 시에, 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행한다. 메모리 시스템은 또한, 호스트로부터 영구 기입 커맨드와 연관된 기입 식별(WID)을 수신하고, 영구 기입의 성공적인 완료 시에, 연관된 WID와 함께 영구 기입 완료 표시를 호스트에 제공할 수 있다.
[0008] 예컨대, 예시적인 양상은 영구 동작들을 수행하는 방법에 관한 것이며, 방법은 호스트로부터 메모리 시스템에서 영구 기입 커맨드 및 연관된 기입 데이터를 수신하는 단계, 및 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하는 단계를 포함한다.
[0009] 다른 예시적인 양상은 영구 동작들을 수행하는 방법에 관한 것이며, 방법은 호스트로부터 메모리 시스템으로 영구 기입 커맨드 및 연관된 기입 데이터를 제공하는 단계를 포함하고, 여기서 영구 기입 커맨드는 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 메모리 시스템에게 표시한다.
[0010] 다른 예시적인 양상은, 호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신하고, 그리고 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 구성된 메모리 시스템을 포함하는 장치에 관한 것이다.
[0011] 다른 예시적인 양상은, 메모리 시스템으로 영구 기입 커맨드 및 연관된 기입 데이터를 제공하도록 구성된 호스트를 포함하는 장치에 관한 것이며, 여기서 영구 기입 커맨드는 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 메모리 시스템에게 표시한다.
[0012] 다른 예시적인 양상은 데이터를 저장하기 위한 수단을 포함하는 장치에 관한 것이며, 저장하기 위한 수단은, 호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신하기 위한 수단, 및 영구 기입 커맨드에 기반하여, 저장하기 위한 수단 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하기 위한 수단을 포함한다.
[0013] 다른 예시적인 양상은 프로세싱하기 위한 수단을 포함하는 장치에 관한 것이며, 프로세싱하기 위한 수단은, 메모리 시스템으로 영구 기입 커맨드 및 연관된 기입 데이터를 제공하기 위한 수단을 포함하고, 여기서 영구 기입 커맨드는 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 메모리 시스템에게 표시한다.
[0014] 다른 예시적인 양상은, 프로세서에 의해 실행될 경우 프로세서로 하여금 영구 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독가능 저장 매체에 관한 것이며, 비-일시적인 컴퓨터-판독가능 저장 매체는, 호스트로부터 메모리 시스템에서 영구 기입 커맨드 및 연관된 기입 데이터를 수신하기 위한 코드, 및 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하기 위한 코드를 포함한다.
[0015] 다른 예시적인 양상은, 프로세서에 의해 실행될 경우 프로세서로 하여금 영구 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독가능 저장 매체에 관한 것이며, 비-일시적인 컴퓨터-판독가능 저장 매체는, 호스트로부터 메모리 시스템으로 영구 기입 커맨드 및 연관된 기입 데이터를 제공하기 위한 코드를 포함하고, 여기서 영구 기입 커맨드는 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 메모리 시스템에게 표시한다.
[0016] 첨부한 도면들은, 본 발명의 양상들의 설명을 보조하도록 제시되며, 양상들의 제한이 아니라 그들의 예시를 위해서만 제공된다.
[0017] 도 1은 본 개시내용의 양상들에 따른 프로세싱 시스템을 예시한다.
[0018] 도 2a 내지 도 2c는 본 개시내용의 다양한 양상들에 따른, 영구 기입들을 핸들링하기 위한 트랜잭션들을 예시한다.
[0019] 도 3은 본 개시내용에 따른, 영구 기입 커맨드에 대한 예시적인 인코딩을 예시한다.
[0020] 도 4a 및 도 4b는 본 개시내용의 양상들에 따른, 영구 기입들을 수행하는 예시적인 방법들에 관련된 이벤트들의 시퀀스들을 예시한다.
[0021] 도 5는 본 개시내용의 일 양상이 유리하게 이용될 수 있는 예시적인 컴퓨팅 디바이스를 묘사한다.
[0022] 본 발명의 양상들은 본 발명의 특정한 양상들에 관련된 다음의 설명 및 관련 도면들에서 개시된다. 본 발명의 범위를 벗어나지 않으면서 대안적인 양상들이 고안될 수 있다. 부가적으로, 본 발명의 잘-알려진 엘리먼트들은 상세히 설명되지 않을 것이거나, 또는 본 발명의 더 관련있는 세부사항들을 불명료하게 하지 않기 위해 생략될 것이다.
[0023] 단어 "예시적인"은 "예, 예시, 또는 예증으로서 기능하는 것"을 의미하도록 본 명세서에서 사용된다. "예시적인" 것으로서 본 명세서에 설명된 임의의 양상은 다른 양상들에 비해 바람직하거나 유리한 것으로서 반드시 해석되는 것은 아니다. 유사하게, 용어 "본 발명의 양상들"은, 본 발명의 모든 양상들이 설명된 특성, 이점 또는 동작 모드를 포함한다는 것을 요구하지는 않는다.
[0024] 본 명세서에서 사용된 용어는 특정한 양상들만을 설명하려는 목적을 위한 것이며, 본 발명의 양상들을 제한하도록 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, 단수형들은, 문맥상 명확하게 달리 표시되지 않으면, 복수형들을 또한 포함하도록 의도된다. 본 명세서에서 사용되는 경우 용어들 "구비", "구비하는", "포함" 및/또는 "포함하는"이 언급된 특성들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특성들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 그들의 그룹들의 존재 또는 부가를 배제하지는 않는다는 것이 추가로 이해될 것이다.
[0025] 추가로, 예컨대, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 액션들의 시퀀스들의 관점들에서 많은 양상들이 설명된다. 본 명세서에 설명된 다양한 액션들은 특정 회로들(예컨대, 주문형 집적 회로(ASIC)들)에 의해, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 그 둘 모두의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 부가적으로, 본 명세서에 설명된 액션들의 이들 시퀀스는, 실행 시에, 연관된 프로세서로 하여금 본 명세서에 설명된 기능을 수행하게 할 컴퓨터 명령들의 대응하는 세트가 저장된 임의의 형태의 컴퓨터-판독가능 저장 매체 내에 완전히 구현되는 것으로 고려될 수 있다. 따라서, 본 발명의 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있으며, 그 형태들 모두는 청구된 요지의 범위 내에 있는 것으로 간주된다. 부가적으로, 본 명세서에 설명된 양상들 각각에 대해, 임의의 그러한 양상들의 대응하는 형태는, 예컨대, 설명된 액션을 수행"하도록 구성된 로직"으로서 본 명세서에서 설명될 수 있다.
[0026] 본 개시내용의 예시적인 양상들은 비-휘발성 DIMM(또는 NVDIMM)과 같은 비-휘발성 메모리에 대한 효율적인 고성능 영구 기입 동작들에 관한 것이다. 대응적으로, 영구 NVDIMM 또는 NVDIMM-P는 예시적인 양상들에 따른 영구 기입 동작들을 지원하는 하나의 예시적인 메모리 시스템으로서 개시된다. 다음의 섹션들에서 더 상세히 논의되는 바와 같이, 호스트 디바이스는, 예컨대 영구 동작들에 대한 예시적인 요청들/커맨드들 및 대응하는 데이터를 예시적인 메모리 시스템에 제공하도록 구성될 수 있고, 메모리 시스템은 요청된 영구 기입 동작들을 수행하고 대응하는 시그널링을 호스트 디바이스에 제공하도록 구성될 수 있다.
[0027] 이제 도 1을 참조하면, 호스트(120) 및 메모리 시스템(130)을 포함하는 예시적인 프로세싱 시스템(100)이 도시된다. 호스트(120)는 하나 이상의 프로세싱 엘리먼트들, 이를테면 중앙 프로세싱 유닛(CPU), 디지털 신호 프로세서(DSP), 멀티미디어 프로세서, 시스템 프로세서, 그래픽 프로세싱 유닛(GPU), 변조기-복조기(모뎀), 애플리케이션 프로세서 등을, 그들이 명시적으로 예시되지 않더라도 포함할 수 있다. 이들 프로세싱 엘리먼트들은 메모리 시스템(130)에 액세스하기 위한 요청들을 행할 수 있다. 메모리 제어기(도시되지 않음)는 이들 액세스 요청들을 제어하기 위해 호스트(120)에 존재할 수 있다.
[0028] 메모리 시스템(130)은 영구 메모리, 예컨대 본 개시내용에 따른 NVDIMM-P일 수 있다. 메모리 시스템(130)은 입력/출력(I/O) 블록(132) 및 메모리 뱅크(bank)(134)를 포함하는 것으로 도시된다. 메모리 뱅크(134)는 플래시 메모리, DRAM 등을 포함할 수 있다.
[0029] 데이터 버스(DQ)(112), 커맨드 및 어드레스 버스(CA)(114), 및 응답(116)이 별개로 식별되어 있는 상호연결부(110)가 호스트(120)와 메모리 시스템(130) 사이에 도시된다. 호스트(120)는 CA(114)를 통해 메모리 액세스 요청들에 대한 커맨드들 및 관련 어드레스들을 제공하고 DQ(112)를 통해 데이터를 전송/수신할 수 있을 수 있다(양방향 버스로 도시됨). 일부 경우들에서, 응답(116)은 별개로 도시되어 있더라도, CA(114)의 일부로서 구성될 수 있고 양방향 버스로서 구현될 수 있다. 일부 예시적인 양상들에서, 응답(116)은 영구 기입들의 상태와 같은 정보를 제공하는 데 사용될 수 있다. 다양한 다른 버스들/와이어들이 상호연결부(110)에 또한 존재할 수 있지만, 이들은 별개로 식별되지 않는다. 일부 예시들에서, 메모리 시스템(130)은 결정론적 및 비-결정론적 응답들에 대해 별개의 버스들을 사용할 수 있으며, 이는 아래에서 추가로 설명될 것이다.
[0030] 적어도 일부 동작들에 대한 영구 NVDIMM(NVDIMM-P) 구성에 대한 추가적인 지원과 함께 메모리 시스템(130)이 NVDIMM으로 구성될 수 있는 일 구현에서, 호스트(120)는, 예컨대 CA(114) 상에서 다음의 예시적인 커맨드들 중 하나 이상을 메모리 시스템(130)에 제공할 수 있을 수 있다:
- 판독 식별(RID)과 함께 READ 커맨드(예컨대, 64B의 배수들의 길이 인코딩을 가짐);
- WRITE 커맨드(예컨대, 종래의 기입 커맨드);
- P-WRITE 커맨드(예컨대, 주어진 기입 식별(WID)을 갖는 기입들이 메모리 시스템(130)으로부터의 (예컨대, 응답(116) 상에서 제공될) 영구 기입 완료(W_PER) 신호를 필요로 할 때를 표시하는 persist 비트와 함께, 영구 기입들에 대한 WID와 함께 영구 기입 커맨드);
- ADRx 커맨드: 연장된 어드레싱;
- SEND 커맨드(예컨대, 메모리 시스템(130)이 판독 데이터 요청의 상태를 제공하기 위한 커맨드);
- SEND_Status 커맨드(예컨대, 메모리 시스템(130)이 메모리 시스템(130)으로부터의 영구 동작들에 관련된 에러 판독, WID들 등을 제공하기 위한 커맨드);
- (영구 메모리로 푸시될 이전의 기입들을 플러싱하기 위한) FLUSH 커맨드;
- NOP(동작-없음);
- 추론적인 판독 커맨드(예컨대, 캐싱된 메모리를 판독하기 위해 사용됨); 및
- 구현 특정적일 수 있는 다른 캐싱 커맨드들.
[0031] 이전에 언급된 바와 같이, 메모리 시스템(130)으로부터 호스트(120)로의 결정론적 및 비-결정론적 응답들에 대해 별개의 버스들이 상호연결부(110)에서 제공될 수 있다. 결정론적 응답들은 메타데이터, 에러/패리티 정보, 이를테면 DQ(112) 상에서 호스트(120)로 전송된 판독 데이터에 관련된 에러 제어 코딩(ECC) 등을 포함하며, 이들은 I/O(132)에 커플링된 핀들, 이를테면 체크 비트 핀들로부터 나와서 버스들 상에서 멀티플렉싱될 수 있다.
[0032] ECC 비트들 중에서, (예컨대, NVDIMM으로서의) 메모리 시스템(130)의 구현들에 특정적인 매체 ECC 및 DQ(112) 상의 채널 특정 ECC 비트들이 존재할 수 있으며, 이들은 예컨대, 다양한 구현들에 걸쳐 교차-호환성을 가능하게 하도록 표준화될 수 있다.
[0033] 메타데이터 비트들은 프로그램 순서를 벗어나서 전송된 판독 요청들에 대한 지연된 RID들을 포함할 수 있다(여기서, 순차형 동작들의 경우, RID는 "돈 케어(don't-care)" 상태로 세팅될 수 있음). 메타데이터 비트들은 또한, 특정한 호스트들 또는 호스트(120)의 프로세싱 엘리먼트들에 할당된 기입 동작들에 대한 미사용 한도(quota)를 지칭하는 기입 크레딧(write credit)(WC)을 포함할 수 있다. 메타데이터 비트들은 당업계에 알려진 바와 같은 사용자 장비로부터의 데이터에 대한 데이터 포이즈닝 비트(data poisoning bit)들, 및 다른 사용자-정의된 비트들을 더 포함할 수 있다.
[0034] 본 개시내용에 따른 비-결정론적 응답들은 영구 동작들에 관한 것일 수 있으며, 메모리 시스템(130)으로부터 호스트(120)로 응답(116)과 같은 전용 시그널링을 통해 전송될 수 있고, 다음을 표시할 수 있다:
- R_RDY: 판독 데이터가 이용가능하다는 것을 표시하기 위한, 메모리 시스템(130)으로부터 호스트(120)로의 신호;
- Wr_Per: 영구 기입이 완료되었다는 것을 표시하기 위한, 메모리 시스템(130)으로부터 호스트(120)로의 신호; 및
- ERROR: 에러 조건들, 이를테면 CRC 체크, 크레딧 위반, 매체 타임아웃 등을 표시하기 위한, 메모리 시스템(130)으로부터 호스트(120)로의 신호.
[0035] 예컨대, NVDIMM-P로서의 메모리 시스템(130)의 구현의 경우, 다음의 프로토콜 핀들이 I/O(132)에서 정의될 수 있다. 펄스 폭 변조를 사용하여, 다음의 핀 및 응답 신호 구성들이 구현될 수 있다. 예컨대, NVDIMM-P의 더블-데이터 레이트 5(DDR5) 구현에서, RSP_n(서브-채널마다 하나가 전용됨)으로서 라벨링된 단일 와이어는 다음의 시그널링, 즉 R_RDY에 대한 2클록 펄스 로우(low), W_PER에 대한 4 클록 펄스 로우, 및 메시지에 대한 6 클록 펄스 로우를 제공하는 데 사용될 수 있다. 각각의 로우 펄스에는 적어도 2개의 클록 하이 펄스들이 후속할 수 있다. 별개의 에러 신호가 필요하면, 그 신호는 8 클록 로우 펄스로서 정의될 수 있다.
[0036] DDR4 구현의 경우, 2개의 핀들(ODT1 및 CKE1)이 단일 핀에 관한 성능 문제들을 해결하는 데 사용될 수 있으며, 여기서 ODT1은 R_RDY에 대한 2 클록 로우 펄스 폭 및 메시지에 대한 4 클록 로우를 표현하고, CKE1은 W_PER에 대한 2 클록 로우 펄스를 표현한다. 각각의 로우 펄스에는 적어도 2개의 클록 하이 펄스들이 후속할 수 있으며, 별개의 에러 신호들이 필요하면, 그 신호는 ODT1 상의 6 클록 로우 펄스로서 정의될 수 있다.
[0037] 영구 기입들의 예시적인 구현들에서, 하드웨어, 소프트웨어, 펌웨어 등(예컨대, 애플리케이션들, 드라이버들 등)의 적합한 조합들은, 호스트(120)로부터 메모리 시스템(130)으로의 하나 이상의 기입 요청들이 영구성을 달성할 경우 통지들이 메모리 시스템(130)으로부터 호스트(120)로 제공될 수 있게 하도록 구성될 수 있다. 이들 통지들은 아래에서 설명되는 바와 같이 구현 특정적일 수 있다.
[0038] 기입 동작을 위해 기입될 데이터가 매체 제어기 상의 정전 보호 버퍼(예컨대, 메모리 시스템(130)의 정전 보호 메모리)에 도달할 경우, 기입 동작은 정상 동작들 동안 영구적인 것으로 고려될 수 있다. 그러나, 특정한 빈번하지 않은 경우들에 대해 또는 매체 제어기 버퍼들이 정전 보호되지 않는 경우, 소프트웨어는 기입들이 NVM 매체들로 계속 푸시되는 것을 보장할 것이다.
[0039] NVDIMM-P로서의 메모리 시스템(130)의 구현의 경우, 에너지-지원된 DIMM들은, 전술된 버퍼들이 정전 보호되는 구성들을 수반하며, 이는, 영구성이 정상 경우들에 대해 요구되는 경우에도 NVDIMM-P 기입 커맨드가 사용될 수 있다는 것을 의미한다. 부가적으로, NVDIMM-P 플러시 커맨드는 본 명세서에서 정의된 바와 같이, 매체 제어기 버퍼들 내의 모든 기입들을 비-휘발성 메모리로 플러싱하는 데 사용될 수 있다. 플러시 커맨드의 경우, 플러시 이전에 발생했던 기입들만이 비-휘발성 메모리에 영구적이게 되도록 보장된다. 소프트웨어-구현된 커맨드들, 이를테면 적절한 장벽 동작들은, (예컨대, 호스트(120)가 프로그램 순서를 벗어나 영구 기입 요청들을 전송하도록 구성될 수 있는 경우) 기입들의 정확한 순서가 유지되는 것을 보장하기 위해, 마지막 기입 이후 그리고 플러시 커맨드가 발행되기 전에 사용될 수 있다.
[0040] 비-에너지-지원된 DIMM들이 위에서 논의된 에너지-지원된 DIMM들보다 덜 일반적으로 사용될 수 있지만, NVDIMM-P 영구 기입 커맨드는 영구성이 비-에너지-지원된 DIMM들에 대해 또한 요구될 경우 사용될 수 있다. 이전에 언급된 바와 같이, 호스트(120)의 메모리 제어기는 영구 기입 커맨드를 발행할 때를 결정하도록 구성될 수 있다. 이러한 경우, 메모리 시스템(130)은 도 2a를 참조하여 논의될 바와 같이, 영구 기입이 완료될 경우 명시적인 통지를 제공할 것으로 기대된다. 추가로, NVDIMM-P 플러시 커맨드는 또한, 모든 기입들을 (심지어 비-영구 기입들도) 비-휘발성 메모리로 플러싱하기 위해 이전과 같이 사용될 수 있다.
[0041] 이제 도 2a를 참조하면, 영구 기입 커맨드의 양상들을 예시하기 위해 호스트(120)와 메모리 시스템(130) 사이의 트랜잭션들의 예시적인 세트가 도시된다. 호스트(120)로부터의 위에서-설명된 판독 커맨드에 일반적일 수 있는 예시적인 영구 기입(Wr_Per) 커맨드(또는, 간단히 "영구 기입")의 일부 특징들이 존재한다. 이들은 특정 기입 명령들을 식별하기 위한 멀티-비트 식별자일 수 있는 일반적인 기입 식별(WID)을 포함한다. WID들(210)의 예시적인 세트가 도시되며, 그 세트는 각각 최대 16비트 폭일 수 있고, 하나의 유효한 비트 "Vld"를 포함한다(그에 따라, 예컨대, 최대 31개의 WID들이 CA(114) 상에서 전송된 64바이트 커맨드 패킷에 존재할 수 있음). 영구 기입 커맨드는 또한, 플러시 커맨드 상태 리턴들을 위해 WID 인코딩에서 예비 필드를 가질 수 있으며, 이는 다음의 경로들에서 추가로 설명될 것이다.
[0042] 일 양상에서, 호스트(120)는, 호스트(120)가 이용가능한 연관된 영구 기입 크레딧들을 갖는 경우에만 영구 기입을 발행하도록 구성될 수 있다. (당업계에 알려진 판독 크레딧들과 유사한) 영구 기입 크레딧들은 구성 동안 결정되고 호스트(120)에 의해 관리될 수 있으며, 호스트(120)가 발행하도록 허용되는 다수의 미해결(outstanding) 영구 기입들을 반영할 수 있다.
[0043] 일단 발행되면, 호스트(120)는 미해결 영구 기입들을, 그들 개개의 WID들(210)에 기반하여 추적하도록 구성될 수 있다. (도 1을 함께 참조하여) 도 2a에서, 예컨대 개개의 데이터, 즉 DQ(112) 상의 기입 데이터(202b) 및 기입 데이터(204b)와 함께 CA(114) 상에서 호스트(120)로부터 메모리 시스템(130)으로 발행되는, 202a 및 204a로 라벨링된 2개의 영구 기입들(제1 어드레스 및 WID를 갖는 P-Write 1 및 제2 어드레스 및 WID를 갖는 P-Write 2)이 도시된다.
[0044] 메모리 시스템(130)은, 일단 특정한 영구 기입에 대한 모든 데이터가 메모리 시스템(130) 내의 비-휘발성 메모리에 기입되었다면, 그 영구 기입에 대한 응답 "Wr_Per"을 응답(116) 상에서 발행하도록 구성된다. Wr_Per(202c) 및 Wr_Per(204c)이 개개의 영구 기입들(202a 및 204a)에 대해 도시된다. 그러나, Wr_Per(202c) 및 Wr_Per(204c)은, 응답들이 프로그램 순서로 또는 영구 기입 요청들이 호스트(120)로부터 수신되는 순서로 이루어질 필요가 없다는 것을 예시하기 위해, 영구 기입들(202a 및 204a)이 메모리 시스템(130)에 의해 수신되었던 것과 상이한 순서로 전송되는 것으로 도시된다. 일 양상에서, 메모리 시스템(130)은 Wr_Per 응답들에 대한 메시지 "Write_Rdy"에 대한 적절한 인코딩과 함께 응답(116) 상의 신호 "Req"를 어써팅(assert)할 수 있다.
[0045] 추가로, 호스트(120)는 또한, 그의 미해결 영구 기입들의 상태를 결정하기 위해, 임의의 시간에, 참조 번호(206a)로 지정된 "Send-Status for WID" 커맨드를 발행하도록 구성될 수 있다. 응답으로, 메모리 시스템(130)은, 예컨대 DQ(112)를 통한 8의 버스트 길이 또는 "BL8" 전달로, 완료된 영구 기입들의 WID들과 함께 상태 패킷을 발행하도록 구성될 수 있다.
[0046] 이전에 언급된 바와 같이, 최대 31개의 WID들(210)은 각각의 64B 상태 패킷에 패킹될 수 있으며, 각각의 WID(210)에 대해, 15비트 WID 및 유효 비트에 대해 할당된 결합된 16비트들이 존재할 수 있다. 추가로, 메모리 시스템(130)은 또한 다른 기입들에 대한 상태를 리턴하기 위해, 이전에 언급된 메타데이터 필드를 사용할 수 있다. 호스트(120)는, 예컨대 미해결 영구 기입들의 추적을 종료하기 위해 WID 상태 패킷(206b)에서, 리턴된 WID들(210)을 사용할 수 있다.
[0047] 일부 양상들에서, 2개 이상의 영구 기입들이 그룹화될 수 있다. 예컨대, 64B 영구 기입들의 세트는, 예컨대 비-에너지 지원된 DIMM들의 경우에서 커미트(commit)하기 위해(또는 비-휘발성 메모리에 기입하기 위해) 그룹화될 수 있다. 예시적인 구현은 호스트(120)로부터 메모리 시스템(130)으로 발행될 영구 기입들의 블록을 수반할 수 있으며, 여기서 메모리 시스템(130)은 버퍼에서 영구 기입들의 블록까지 수집하고 영구 기입들의 블록들 모두를 한번에 커미트하도록 구성될 수 있으며, 이는 개선된 효율을 유발할 수 있다. 그러나, 영구 기입들을 그룹화하고 블록에서 그들을 커미트하는 것은 버퍼들이 정전 보호되는 에너지-지원된 DIMM들에 대해 요구되지 않는다는 것이 이해될 것이다.
[0048] 다음의 수정들이 위에서 논의된 그룹 커미트들을 구현하기 위한 영구 기입 커맨드에 대해 이루어질 수 있다. 호스트(120)는 2개 이상의 기입들의 세트에 대해 (예컨대, WID들(210)로부터) 단일 WID를 선정할 수 있다. 예컨대, "Persist"로 지칭되는 부가적인 비트가 CA(114) 상에서 전송될 경우 영구 기입 커맨드에 부가될 수 있다. Persist 비트는, 영구 기입들의 전체 그룹이 메모리 시스템(130)으로 전송되었을 때를 결정하는 데 사용될 수 있다.
[0049] 예컨대, 예시적인 예에서, 3개의 64B 영구 기입들은 WID=5를 사용하여 다음과 같이 함께 그룹화될 수 있다. 제1 영구 기입(WID=5, Persist=0), 제2 영구 기입(WID=5, Persist=0), 및 제3 영구 기입(WID=5, Persist=1)이 CA(114) 상에서 전송될 수 있다. 메모리 시스템(130)은, Persist 비트가 0인 동안 버퍼에서 WID=5를 갖는 영구 기입들을 수집하며, 마지막 영구 기입이 1로 세팅된 Persist 비트와 함께 도달할 경우, 영구 커미트의 프로세스들을 개시하도록 구성될 수 있다.
[0050] 일 구현에서, 1로 세팅된 Persist 비트를 갖는 영구 기입만(예컨대, 위의 예에서는 제3 영구 기입만)이 영구 기입들의 그룹에 대해 메모리 시스템(130)으로부터 Wr_Per 응답을 얻도록 구성될 수 있다. 이것은 응답(116) 상에서 트래픽을 감소시킬 수 있다.
[0051] 일부 양상들에서, 상이한 WID들을 갖는 영구 기입들은, 예컨대 CA(114) 상에서 인터리빙될 수 있다. 따라서, 영구 커미트를 위한 영구 기입들의 그룹화는 동일한 WID를 갖는 그룹 내의 영구 기입들이 호스트(120)로부터 연속적으로 전송된다는 것을 암시하지는 않는다.
[0052] 일부 양상들에서, 영구 기입들에 대한 Wr_Per 응답들에서 발생할 수 있는 경쟁(race) 조건들을 해결하기 위해, 기입 그룹 ID(WGID) 상태 방법은 아래의 도 2b를 참조하여 설명될 바와 같이, 상이한 비트맵들, 이를테면 WGID-completed 비트맵 및 WGID-pending 비트맵을 사용하여 하나 이상의 영구 기입들의 상태들을 그룹화하는 데 사용될 수 있다. 개개의 WID들을 갖는 영구 기입들을 고려하면, 메모리 시스템(130)은 Persist=1을 갖는 각각의 영구 기입에 대해 그리고 각각의 플러시 완료에 대해 개개의 Wr_Per(이러한 경우, "W_PER"로 지칭됨)을 어써팅할 수 있다. 호스트(120)는 하나 이상의 W_PER들을 수신한 이후 다른 커맨드 Send-W_PER-Status를 사용할 수 있다(여기서, 호스트(120)는 또한, W_PER-Count로 지칭되는 W_PER들의 카운트를 유지할 수 있음). 메모리 시스템(130)은, 이미 어써팅된 W_PER들에만 기반하여, 완료된 비트들을 이용하여 WGID-완료 상태를 리턴할 수 있다. 차례로, 호스트(120)는 WGID에 대한 리스트, 즉 "WGID 리스트"를 업데이트하고, 완료들의 수에 기반하여 W_PER-Count를 감분시킬 수 있다.
[0053] 일부 경우들에서, 정정불가능한 에러(UE)가 트랜잭션들에서 발생할 수 있으며, 이는 도 2c를 참조하여 논의될 것이다. Send-W_PER-Status에 UE가 존재할 경우, 호스트(120)는 새로운 영구 기입들/플러시들 및 Send-W_PER-Status를 발행하는 것을 중지할 수 있다. 호스트(120)는 Xread-Status로 지칭되는 상태 판독 커맨드를 메모리 시스템(130)에 전송할 수 있다. 차례로, 메모리 시스템(130)은, WGID-보류 상태를 호스트(120)로 리턴하기 위해 Xread-Status를 수신하기 전에 모든 영구 기입들을 수집하고(상태 패킷들은 RD_RDY가 수신되기 전에 W_PER 어써션을 커버함), 메모리 시스템(130)은 상태 판독들 동안 W_PER을 계속 발행할 수 있다. 호스트(120)는 호스트(120)에 의해 유지되는 WGID 리스트를 업데이트하고, 보류중인 기입들에 기반하여 W_PER-Count를 감분시킬 수 있다. 이어서, 호스트(120)는 영구 기입들/플러시들을 재발행하기 시작할 수 있다.
[0054] 메모리 시스템(130)의 에너지-지원된 DIMM 구현들의 경우, 정상 프로토콜에서, 호스트(120)는 (Persist=0/1을 갖는) 커맨드 영구 기입들 및 플러시를 발행할 수 있지만, 메모리 시스템(130)은 Persist=1을 갖는 각각의 영구 기입에 대해 W_PER을 어써팅하지 않을 것이지만, 메모리 시스템(130)은 플러시가 완료될 경우 플러시 커맨드에 대해 W_PER을 어써팅할 것이다. WGID 구현들의 경우, 메모리 시스템(130)에 의한 W_PER 핸들링은 단지 플러시들에 대해서만 정상 프로토콜과 동일하게 유지된다. 메모리 시스템(130)에 의해 제공되는 WGID 완료 상태 비트맵은, 플러시 WGID 비트들이 완료될 경우 그들이 세팅되게 할 것이다. Send-W_PER-Status에 UE가 존재할 경우, WGID 보류 상태가 플러시들에 대해서만 적용가능하다는 것을 제외하고, 동작은 정규 경우와 동일하게 유지된다.
[0055] WGID 구현들에 대한 크레딧들은 다음과 같이 핸들링될 수 있다. 별개의 크레딧들은 상태 기입들 또는 Xwrites에 대해 그리고 영구 기입들에 대해 유지될 수 있으며, 여기서 호스트(120)는 크레딧들의 풀(pool)이 메모리 시스템(130)에 의해 어떻게 할당될 수 있는지를 결정할 수 있다. 증분적인 크레딧 리턴이 판독 메타데이터에 의해 제공될 수 있으며, 여기서 Xwrite 또는 영구 기입 크레딧들을 리턴하기 위한 인코딩 방식이 사용될 수 있다. X-Read-Status 리턴들은 크레딧 할당에 기반하여 Xwrite 및 영구 기입 버퍼 슬롯들에 대해 이용가능할 수 있다.
[0056] 예컨대, 도 2b 및 도 2c를 참조하여 설명될 일 구현에서, 메모리 시스템(130)은 영구 기입들(본 명세서에서 PWRITE들로 지칭됨) 및 플러시들을 임의의 순서로 완료할 수 있다. 매체들로의 특정 PWRITE를 지속하기 위해, 임의의 플러시 타입들 이전에, 호스트(120)는 Persist=1을 갖는 주어진 WGID에 대해 PWRITE를 발행하거나 또는 Persist=0를 갖는 PWRITE를 발행할 수 있다. 메모리 시스템(130)은, 커맨드에서 Persist=1을 갖는 각각의 완료된 PWRITE 뿐만 아니라 모든 각각의 완료된 플러시에 대해 W_PER을 발행할 수 있다. 그룹을 종료하는 마지막 PWRITE에서만 Persist=1을 갖는 단일 WGID로 다수의 PWRITE들이 그룹화되면, 메모리 시스템(130)은, PWRITE들의 전체 그룹이 완료될 경우에만 W_PER을 발행할 수 있다.
[0057] 이제 도 2b를 참조하면, W_PER 핸들링이 정상 경우에 대해 설명될 것이다. 시스템(250)은 호스트(120) 및 메모리 시스템(130)을 갖는 것으로 도시된다. Write-Credits 및 해제된(free) WGID 둘 모두가 이용가능하면, 호스트(120)는 252a, 254a로 도시된 하나 이상의 PWRITE 또는 FLUSH 커맨드들을 발행할 수 있다. 호스트(120)는 Host-WGID-Pending 리스트(도시되지 않지만, 호스트(120) 내에서 유지될 수 있음)에서, 발행된 PWRITE 또는 FLUSH 커맨드들(252a, 254a)을 추적할 수 있다.
[0058] 대응적으로, 메모리 시스템(130)은 DIMM-WGID-Pending 리스트(도시되지 않음)에서 보류중인 PWRITE 또는 FLUSH 커맨드들(252a, 254a)을 수용 및 추적할 수 있다. 메모리 시스템(130)은 보류중인 PWRITE 또는 FLUSH 커맨드들(252a, 254a)을 실행하고, 각각의 수신된 커맨드의 개개의 완료 이후 대응하는 W_PER들(254b 및 252b)(유의, 수신된 PWRITE 또는 FLUSH 커맨드들(252a, 254a)의 반대 순서로 도시됨)을 호스트(120)에 어써팅할 수 있다.
[0059] 메모리 시스템(130)은 WGID-Completed 비트맵(260)에서, 완료된 수신된 커맨드들 PWRITE 또는 FLUSH(252a, 254a)를 수집할 수 있으며, 그 비트맵에 대한 다양한 업데이트들(260a, 260b, 260c 등)이 도시되어 있다. 메모리 시스템(130)은 또한, DIMM-WGID-Pending 리스트로부터 완료된 PWRITE 또는 FLUSH 커맨드들(252a, 254a)을 제거할 수 있다.
[0060] 호스트(120)는, 예컨대 W_PER들(254b, 252b)을 수신하기 위해, 수신된 W_PER 이벤트들의 카운트(W_PER-Count로 지칭됨)를 유지할 수 있다. 동시에, 호스트(120)는 다음과 같이, 수신된 W_PER 이벤트들을 핸들링할 수 있다: W_PER-Count>0이면, 호스트(120)는 Send-W_PER Status(256a)로 도시된 상태 요청을 발행할 수 있다. Tsend 시간으로 지칭된 미리 정의된 시간 이후, 메모리 시스템(130)은 WGID_Status(256b)로 도시된 응답에서 그 시간 인스턴스에 WGID-Completed 비트맵(260)(이러한 경우, 260b)의 스냅샷(snapshot)을 호스트(120)에 전송할 수 있다. 스냅샷은 호스트(120)로의 WGID_Status(256b) 전달의 시작까지 발행된 W_PER들에 대한 완료들을 포함할 수 있다.
[0061] 일부 양상들에서, 최소 1번의 완료가 스냅샷에 로그인(log in)된다. 메모리 시스템(130)은, 비트 포지션들의 리셋 또는 클리어(clear) 이후 WGID-Completed 비트맵(260c)으로의 WGID-Completed 비트맵(260b)의 전환에 의해 도시된, WGID_Status(256b)에서 전송된 완료들에 기반하여 WGID-Completed 비트맵(260) 내의 비트 포지션들을 클리어한다.
[0062] 호스트(120)는 WGID-Status(256b)를 수신하고, 완료된 WGID들에 관한 정보를 추출할 수 있다. 대응적으로, 호스트(120)는 Host-WGID-Pending 리스트로부터 완료된 WGID들을 지우며, WGID-Completed 비트맵(260)에서 수신된 완료들의 수만큼 W_PER-Count를 감분(예컨대, WGID-Completed 비트맵(260b)에 의해 표시된 바와 같이 수신된 2개의 W_PER들에 기반하여 2의 카운트를 감분)시킬 수 있다. 호스트(120)는, W_PER-Count를 모니터링하는 것으로 시작하여, W_PER-Count>0이면, 다른 상태 요청 Send-W_PER Status(256a)를 메모리 시스템(130)에 발행하여 위의 프로세스를 반복할 수 있다.
[0063] 예시적인 구현들에서, 호스트(120) 및 메모리 시스템(130)은 W_PER 이벤트 프로세싱이 진행중인 동안 새로운 PWRITE들을 계속 발행 및 실행할 수 있다. W_PER-Count 및 보류중인 리스트들, 이를테면 HOST-WGID-Pending 리스트, DIMM-WGID-Pending 리스트 등이 예시적인 구현에 대해 논의되었지만, 위에서-설명된 기능을 달성하기 위한 대안적인 구조들이 본 개시내용의 범위를 벗어나지 않으면서 사용될 수 있다.
[0064] 이제 도 2c를 참조하면, 호스트(120)로부터의 SEND-W_PER-Status에 후속하는 채널의 정정불가능한 에러(UE)를 핸들링하기 위한 시스템(270)이 도시되며, 그 에러는 메모리 시스템(130)으로부터 WGID_Status(256b)(위의 도 2b에서 설명됨)에서 전송된 완료들의 손실을 초래한다. 추가로, 메모리 시스템(130)이 도 2b의 WGID-Completed 비트맵(260)으로부터 이전의 완료들을 클리어했을 수 있다는 것을 유의한다.
[0065] 따라서, 시스템(270)에서 그러한 에러들로부터 복원하기 위한 프로토콜에서, 호스트(120)는, 메모리 시스템(130)이 완료된 판독들 또는 PWRITE 또는 FLUSH 커맨드들에 대한 RD_RDY 및/또는 W_PER 이벤트들(예컨대, W_PER(254b)은 발행되는 것으로 도시되지만, 252b는 에러 복원 이후까지 발행되지 않음)을 계속 발행할 수 있는 동안, 새로운 PWRITE 또는 FLUSH 커맨드들의 발행을 중지함으로써(예를 들어, PWRITE-3 또는 FLUSH-3(272a)이 발행되었을 타임라인에 에러가 발생되지 않았다는 것을 표시하기 위해 파선들로 도시된 것처럼, PWRITE-3 또는 FLUSH-3(272a)가 발행되지 않음) 복원 프로세스를 개시할 수 있다. 호스트(120)는 또한, 계속해서 SEND을 발행하고 W_PER-Count를 업데이트할 수 있다.
[0066] 마지막 PWRITE에 후속하여 기입 인에이블 신호에 대한 미리-특정된 최소 시간 지연(TWE_Delay로 지칭됨) 이후, 호스트(120)는 XREAD-STATUS(274a)를 메모리 시스템(130)에 발행하고, 메모리 시스템(130)은, 위에서 논의된 WGID-Completed 비트맵(260)에 부가하여 제공된 다른 비트맵인 WGID-Pending 비트맵(280)의 스냅샷을 이용하여 완료 상태 패킷을 준비할 수 있으며, 여기서 WGID-Pending 비트맵(280)은 모든 보류중인 PWRITE들/FLUSH들의 상태를 포함한다. 메모리 시스템(130)은 RD_RDY(276b)를 어써팅할 수 있고, 호스트(120)는 응답으로 SEND(278a)를 발행할 수 있다.
[0067] 이어서, 메모리 시스템(130)은 준비된 상태 패킷(278b)을 리턴할 수 있으며, 그로부터 호스트(120)는 상태 패킷(278b)에서 수신된 WGID-Pending 비트맵(280)을 추출 및 프로세싱할 수 있다. 호스트(120)는 그의 Host-WGID-Pending 추적 리스트로부터 적절한 WGID들을 해제하며, 해제된 WGID들의 수만큼 W_PER-Count를 감분시킬 수 있다. 이어서, 호스트(120)는 새로운 PWRITE/FLUSH 커맨드들을 발행하는 것으로 시작하여 프로세스들을 반복하고, 이전의 페이지에 따라 이 시간에, 보류중인 W_PER들을 프로세싱할 수 있다.
[0068] 일부 양상들에서, 상태 패킷(278b)은 그것이 WGID-Completed 비트맵(260)을 갖는지 또는 WGID-Pending 비트맵(280)을 갖는지를 표시하도록 구성된다. W_PER 응답 상태 패킷들은 WGID-Completed 비트맵(260)을 포함하는 반면, 다른 모든 상태 패킷들은 WGID-Pending 비트맵(280)을 포함한다. TWE_Delay 시간은 메모리 시스템(130)으로부터, 호스트(120)로부터 발행된 마지막 PWRITE에 대한 에러 통지를 얻기 위한 시간을 고려하도록 구성되며, XREAD-STATUS(274a)가 호스트(120)로부터 발행되기 전에 UE 검출로부터의 대기 시간은, 마지막 PWRITE가 발행되었던 때에 의존하여 변할 수 있다.
[0069] 도 3을 참조하면, 예컨대 메모리 시스템(130)의 DDR5 구현에 대한 영구 기입들에 대한 예시적인 인코딩이 도시된다. CA1 필드는 통상적으로, DDR5 기술의 1UI 및 2UI 커맨드들 사이를 구별하는 데 사용되며, NVDIMM-P 구현들을 위해 유지될 수 있다. 일부 구현들에서, 예컨대 도 3에 도시된 바와 같이, CA(114)는 7개의 핀들만을 이용한 DDR5에 대한 DDR 속도들로 구성될 수 있으며, 그러한 경우들에서, 별개의 커맨드 인코딩이 영구 기입들에 대해 사용될 수 있다.
[0070] 도 3에서, Persist 비트=1이면, 이것은 메모리 시스템(130)이 개개의 WID와 연관된 모든 영구 기입들을 비-휘발성 메모리로 푸시할 것이라는 것을 표시한다. 그룹에 단일의 64B 영구 기입이 존재하면, Persist 비트는 1로 세팅될 수 있다. 64B보다 큰 영구 기입들의 경우, 모든 영구 기입들은 동일한 WID를 가질 수 있으며, 마지막 영구 기입은 그의 Persist 비트를 1로 세팅되게 하는 반면, 나머지 영구 기입들은 그들의 Persist 비트들을 0으로 세팅되게 한다.
[0071] 위의 트랜잭션들에 부가하여, 이전의 섹션들에서 도입된 바와 같이, FLUSH 커맨드로 지칭되는 다른 커맨드가 또한 영구 기입들과 연관되어 사용될 수 있다. FLUSH 커맨드는, FLUSH 커맨드를 사용할 경우 미래의 기입들이 유사하게 영향을 받지 않거나 영구 메모리로 푸시되지 않을 수 있다는 것을 유념하여, (예컨대, 비-영구적인 또는 휘발성 메모리에) 버퍼링된 모든 이전의 기입들이 영구 메모리로 푸시될 것이라는 것을 메모리 시스템(130)에게 표시하도록 구성된다.
[0072] FLUSH의 실행이 완료될 경우, 메모리 시스템(130)은 위에서 논의된 영구 기입들의 경우와 유사하게, 예컨대 응답(116) 상에서 Wr_Per을 호스트(120)에 또 다시 어써팅할 수 있다.
[0073] 추가로, 호스트(120)는 또한, FLUSH 커맨드의 경우에서 커맨드, 즉 (영구 기입들과 유사한) Send-Status for WID를 메모리 시스템(130)에 제공할 수 있으며, 메모리 시스템(130)은 FLUSH 실행의 완료를 표시하기 위해 고유한 예비된 WID를 갖는 WID 상태 패킷으로 그에 응답할 수 있다(예컨대, 1로 세팅된 모든 비트들을 갖는 WID는 FLUSH 실행의 완료를 표시하는 데 사용되는 그러한 예비된 WID일 수 있음).
[0074] 일 구현에서, 호스트(120)로부터의 하나의 미해결 FLUSH 커맨드만이 허용될 수 있다. 따라서, 이러한 구현에서, 호스트(120)는 다른 FLUSH 커맨드를 전송하기 전에 메모리 시스템(130)으로부터 FLUSH 완료 응답을 대기해야 할 수 있다. 대안적인 구현들에서, FLUSH 커맨드들은 (예컨대, 예비된 WID 필드들로부터 선택되는) 대응하는 FLUSH ID들을 동반할 수 있으며, Send-Status에 대한 대응하는 응답은 메모리 시스템(130)으로 하여금 FLUSH 실행이 완료되었던 FLUSH ID들을 리턴하게 할 수 있다.
[0075] 양상들이 본 명세서에 개시된 프로세스들, 기능들 및/또는 알고리즘들을 수행하기 위한 다양한 방법들을 포함한다는 것이 인식될 것이다. 예컨대, 도 4a는 영구 동작들을 수행하는 예시적인 방법(400)을 예시한다.
[0076] 블록(402)은, 호스트(예컨대, 호스트(120))로부터 메모리 시스템(예컨대, 메모리 시스템(130))에서, 영구 기입 커맨드(예컨대, 영구 기입(202a)) 및 연관된 기입 데이터(예컨대, 데이터(202b))를 수신하는 것을 포함한다.
[0077] 블록(404)은, 영구 기입 커맨드에 기반하여 메모리 시스템 내의 비-휘발성 메모리로의(예컨대, 메모리 시스템(130) 내의 비-휘발성 메모리로의) 기입 데이터의 영구 기입을 수행하는 것을 포함한다. 영구 기입 커맨드와 연관된 기입 식별(WID)은 호스트로부터 수신될 수 있고, 영구 기입의 성공적인 완료 시에, 영구 기입 완료 표시(Wr_Per)는 연관된 WID(예컨대, Wr_Per(202c))와 함께 호스트에 제공될 수 있다.
[0078] 유사하게, 도 4b는 영구 동작들을 수행하는 다른 예시적인 방법(450)을 예시한다.
[0079] 블록(452)은, 호스트(예컨대, 호스트(120))로부터 메모리 시스템(예컨대, 메모리 시스템(130))으로 영구 기입 커맨드(예컨대, 영구 기입(202a)) 및 연관된 기입 데이터(예컨대, 데이터(202b))를 제공하는 것을 포함하며, 여기서 영구 기입 커맨드는 비-휘발성 메모리로의 기입 데이터의 영구 기입을 수행하도록 메모리 시스템에게 표시한다.
[0080] 블록(454)은, 호스트로부터 메모리 시스템으로 영구 기입 커맨드와 연관된 기입 식별(WID)(예컨대, WID(210))을 제공하는 것을 포함한다.
[0081] 본 개시내용의 양상들이 이용될 수 있는 예시적인 장치가 이제 도 5와 관련하여 논의될 것이다. 도 5는 컴퓨팅 디바이스(500)의 블록 다이어그램을 도시한다. 컴퓨팅 디바이스(500)는 도 1의 프로세싱 시스템(100)의 예시적인 구현에 대응할 수 있으며, 여기서 프로세서(120')는 호스트(120)의 프로세싱 엘리먼트들 중 하나일 수 있다. 프로세서(120')는 상호연결부(110)를 통해 메모리 시스템(130)에 커플링된 것으로 예시적으로 도시되며, 상호연결부(110)의 추가적인 세부사항들은 명확화를 위해 이러한 도면으로부터 생략된다. 프로세서(120'), 상호연결부(110), 및 메모리 시스템(130)은 위에서 논의된 바와 같은 방법들(400 및 450)을 수행하도록 구성될 수 있다. 도시되지는 않았지만, 캐시들의 하나 이상의 레벨들을 수반하는 것과 같이 당업계에 알려진 다른 메모리 구성들이 컴퓨팅 디바이스(500)에 존재할 수 있다는 것이 이해될 것이다.
[0082] 도 5는 또한, 프로세서(120') 및 디스플레이(528)에 커플링된 디스플레이 제어기(526)를 도시한다. 일부 경우들에서, 컴퓨팅 디바이스(500)는 무선 통신을 위해 사용될 수 있으며, 도 5는 또한, 선택적인 블록들, 이를테면 프로세서(120')에 커플링된 코더/디코더(코덱)(534)(예컨대, 오디오 및/또는 음성 코덱) 및 코덱(534)에 커플링될 수 있는 스피커(536) 및 마이크로폰(538); 및 프로세서(120')에 커플링되는 무선 제어기(540)에 커플링된 무선 안테나(542)를 파선들로 도시한다. 이들 선택적인 블록들 중 하나 이상이 존재할 경우, 특정한 양상에서, 프로세서(120'), 디스플레이 제어기(526), 메모리 시스템(130), 및 무선 제어기(540)는 시스템-인-패키지(system-in-package) 또는 시스템-온-칩(system-on-chip) 디바이스(522)에 포함된다.
[0083] 따라서, 특정한 양상에서, 입력 디바이스(530) 및 전력 공급부(544)는 시스템-온-칩 디바이스(522)에 커플링된다. 게다가, 특정한 양상에서, 도 5에 예시된 바와 같이, 하나 이상의 선택적인 블록들이 존재할 경우, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 무선 안테나(542), 및 전력 공급부(544)는 시스템-온-칩 디바이스(522) 외부에 있다. 그러나, 디스플레이(528), 입력 디바이스(530), 스피커(536), 마이크로폰(538), 무선 안테나(542), 및 전력 공급부(544) 각각은 시스템-온-칩 디바이스(522)의 컴포넌트, 이를테면 인터페이스 또는 제어기에 커플링될 수 있다.
[0084] 도 5가 일반적으로 컴퓨팅 디바이스를 묘사하지만, 프로세서(120') 및 메모리 시스템(130)이 또한, 셋탑 박스, 서버, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 개인 휴대 정보 단말(PDA), 고정 위치 데이터 유닛, 컴퓨터, 랩톱, 태블릿, 통신 디바이스, 모바일 폰, 또는 다른 유사한 디바이스들에 통합될 수 있다는 것을 유의해야 한다.
[0085] 당업자들은, 정보 및 신호들이 다양한 상이한 기법들 및 기술들 중 임의의 기법 및 기술을 사용하여 표현될 수 있음을 인식할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0086] 추가로, 당업자들은, 본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합들로서 구현될 수 있음을 인식할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능 관점들에서 일반적으로 위에서 설명되었다. 그러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션, 및 전체 시스템에 부과된 설계 제약들에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로서 해석되지는 않아야 한다.
[0087] 본 명세서에 개시된 양상들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 착탈형 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0088] 따라서, 본 발명의 일 양상은 영구 기입들을 수행하는 방법을 수록한 컴퓨터-판독가능 매체들을 포함할 수 있다. 따라서, 본 발명은 예시된 예들로 제한되지 않으며, 본 명세서에 설명된 기능을 수행하기 위한 임의의 수단은 본 발명의 양상들에 포함된다.
[0089] 전술한 개시내용이 본 발명의 예시적인 양상들을 나타내지만, 다양한 변화들 및 변형들이 첨부된 청구항들에 의해 정의된 바와 같은 본 발명의 범위를 벗어나지 않으면서 본 명세서에서 행해질 수 있다는 것을 유의해야 한다. 본 명세서에 설명된 본 발명의 양상들에 따른 방법 청구항들의 기능들, 단계들 및/또는 액션들은 임의의 특정한 순서로 수행될 필요가 없다. 더욱이, 본 발명의 엘리먼트들이 단수로 설명 또는 청구될 수 있지만, 단수로의 제한이 명시적으로 나타나지 않으면, 복수가 고려된다.

Claims (52)

  1. 영구 동작들을 수행하는 방법으로서,
    호스트로부터 메모리 시스템에서, 영구 기입 커맨드 및 연관된 기입 데이터를 수신하는 단계; 및
    상기 영구 기입 커맨드에 기반하여 상기 메모리 시스템 내의 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하는 단계를 포함하는, 영구 동작들을 수행하는 방법.
  2. 제1항에 있어서,
    상기 호스트로부터, 상기 영구 기입 커맨드와 연관된 기입 식별(WID)을 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  3. 제2항에 있어서,
    상기 영구 기입의 성공적인 완료 시에, 상기 메모리 시스템으로부터, 상기 연관된 WID와 함께 영구 기입 완료 표시를 상기 호스트에 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  4. 제3항에 있어서,
    2개 이상의 영구 기입 완료 표시들을, 대응하는 2개 이상의 영구 기입 커맨드들이 상기 호스트로부터 수신되었던 순서와 상이한 순서로 상기 호스트에 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  5. 제3항에 있어서,
    상기 호스트로부터, 연관된 WID들과 함께 하나 이상의 영구 기입들에 대한 상태를 전송하기 위한 요청을 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  6. 제5항에 있어서,
    상태 패킷을 상기 호스트에 제공하는 단계를 더 포함하며,
    상기 상태 패킷은, 실행이 완료되었던 영구 기입 커맨드들에 대한 WID들을 포함하는, 영구 동작들을 수행하는 방법.
  7. 제2항에 있어서,
    상기 WID는 영구 기입의 멀티-비트 식별 및 유효 비트를 포함하는, 영구 동작들을 수행하는 방법.
  8. 제2항에 있어서,
    공통 WID를 갖는 2개 이상의 영구 기입 커맨드들의 그룹을 수신하는 단계 - 상기 그룹의 마지막 영구 기입 커맨드는 1로 세팅된 Persist 비트를 갖고, 나머지 영구 기입 커맨드들은 0으로 세팅된 개개의 Persist 비트들을 가짐 -, 및
    상기 마지막 영구 기입 커맨드에 대한 영구 기입 완료 표시를 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  9. 제1항에 있어서,
    상기 호스트로부터 FLUSH 커맨드를 수신하는 단계를 더 포함하며,
    상기 FLUSH 커맨드는, 휘발성 매체들에 버퍼링된 모든 이전의 기입들이 비-휘발성 또는 영구 메모리로 푸시(push)될 것이라는 것을 표시하는, 영구 동작들을 수행하는 방법.
  10. 제9항에 있어서,
    상기 FLUSH 커맨드의 실행의 완료 시에, FLUSH 완료 표시를 상기 호스트에 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  11. 제1항에 있어서,
    하나 이상의 영구 기입 커맨드들을 수신하는 단계,
    완료 비트맵에 완료된 하나 이상의 영구 기입 커맨드들의 상태들을 유지하고, 보류 비트맵에 보류중인 하나 이상의 영구 기입 커맨드들의 상태들을 유지하는 단계, 및
    상기 호스트로부터의 상태에 대한 요청 시에, 어떠한 정정불가능한 에러도 존재하지 않으면 상기 완료 비트맵을, 또는 정정불가능한 에러가 존재하면 상기 보류 비트맵을 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  12. 제1항에 있어서,
    상기 메모리 시스템은 영구 기입들을 지원하도록 구성된 비-휘발성 듀얼 인라인 메모리 모듈(NVDIMM-P)인, 영구 동작들을 수행하는 방법.
  13. 영구 동작들을 수행하는 방법으로서,
    호스트로부터 메모리 시스템으로, 영구 기입 커맨드 및 연관된 기입 데이터를 제공하는 단계를 포함하며,
    상기 영구 기입 커맨드는 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하도록 상기 메모리 시스템에게 표시하는, 영구 동작들을 수행하는 방법.
  14. 제13항에 있어서,
    상기 호스트로부터 상기 메모리 시스템으로, 상기 영구 기입 커맨드와 연관된 기입 식별(WID)을 제공하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  15. 제14항에 있어서,
    상기 메모리 시스템으로부터 상기 호스트에서, 상기 영구 기입의 성공적인 완료 시에, 상기 연관된 WID와 함께 영구 기입 완료 표시를 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  16. 제15항에 있어서,
    상기 메모리 시스템으로부터, 2개 이상의 영구 기입 완료 표시들을, 대응하는 2개 이상의 영구 기입 커맨드들이 상기 호스트로부터 상기 메모리 시스템으로 전송되었던 순서와 상이한 순서로 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  17. 제14항에 있어서,
    상기 호스트로부터 상기 메모리 시스템으로, 연관된 WID들과 함께 하나 이상의 영구 기입들에 대한 상태를 전송하기 위한 요청을 전송하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  18. 제17항에 있어서,
    상기 메모리 시스템으로부터, 상기 호스트에 의해 상태 패킷을 수신하는 단계를 더 포함하며,
    상기 상태 패킷은, 실행이 완료되었던 영구 기입 커맨드들에 대한 WID들을 포함하는, 영구 동작들을 수행하는 방법.
  19. 제14항에 있어서,
    상기 WID는 영구 기입의 멀티-비트 식별 및 유효 비트를 포함하는, 영구 동작들을 수행하는 방법.
  20. 제14항에 있어서,
    상기 호스트로부터 상기 메모리 시스템으로, 공통 WID를 갖는 2개 이상의 영구 기입 커맨드들의 그룹을 전송하는 단계 - 상기 그룹의 마지막 영구 기입 커맨드는 1로 세팅된 Persist 비트를 갖고, 나머지 영구 기입 커맨드들은 0으로 세팅된 개개의 Persist 비트들을 가짐 -, 및
    상기 메모리 시스템으로부터, 상기 마지막 영구 기입 커맨드에 대한 영구 기입 완료 표시를 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  21. 제13항에 있어서,
    상기 호스트로부터 상기 메모리 시스템으로, FLUSH 커맨드를 전송하는 단계를 더 포함하며,
    상기 FLUSH 커맨드는, 휘발성 매체들에 버퍼링된 모든 이전의 기입들이 상기 메모리 시스템에 의해 비-휘발성 또는 영구 메모리로 푸시될 것이라는 것을 표시하는, 영구 동작들을 수행하는 방법.
  22. 제21항에 있어서,
    상기 호스트에서, 상기 메모리 시스템에 의한 상기 FLUSH 커맨드의 실행의 완료 시에, FLUSH 완료 표시를 수신하는 단계를 더 포함하는, 영구 동작들을 수행하는 방법.
  23. 제13항에 있어서,
    상기 메모리 시스템은 영구 기입들을 지원하도록 구성된 비-휘발성 듀얼 인라인 메모리 모듈(NVDIMM-P)인, 영구 동작들을 수행하는 방법.
  24. 메모리 시스템을 포함하며,
    상기 메모리 시스템은,
    호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신하고; 그리고
    상기 영구 기입 커맨드에 기반하여 상기 메모리 시스템 내의 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하도록
    구성되는, 장치.
  25. 제24항에 있어서,
    상기 메모리 시스템은, 상기 호스트로부터 상기 영구 기입 커맨드와 연관된 기입 식별(WID)을 수신하도록 추가로 구성되는, 장치.
  26. 제25항에 있어서,
    상기 메모리 시스템은, 상기 영구 기입의 성공적인 완료 시에, 상기 연관된 WID와 함께 영구 기입 완료 표시를 상기 호스트에 제공하도록 추가로 구성되는, 장치.
  27. 제26항에 있어서,
    상기 메모리 시스템은, 2개 이상의 영구 기입 완료 표시들을, 대응하는 2개 이상의 영구 기입 커맨드들이 상기 호스트로부터 수신되었던 순서와 상이한 순서로 상기 호스트에 제공하도록 추가로 구성되는, 장치.
  28. 제26항에 있어서,
    상기 메모리 시스템은, 상기 호스트로부터, 연관된 WID들과 함께 하나 이상의 영구 기입들에 대한 상태를 전송하기 위한 요청을 수신하도록 추가로 구성되는, 장치.
  29. 제27항에 있어서,
    상기 메모리 시스템은, 상태 패킷을 상기 호스트에 제공하도록 추가로 구성되며,
    상기 상태 패킷은, 실행이 완료되었던 영구 기입 커맨드들에 대한 WID들을 포함하는, 장치.
  30. 제25항에 있어서,
    상기 WID는 영구 기입의 멀티-비트 식별 및 유효 비트를 포함하는, 장치.
  31. 제25항에 있어서,
    상기 메모리 시스템은,
    공통 WID를 갖는 2개 이상의 영구 기입 커맨드들의 그룹을 수신하고 - 상기 그룹의 마지막 영구 기입 커맨드는 1로 세팅된 Persist 비트를 갖고, 나머지 영구 기입 커맨드들은 0으로 세팅된 개개의 Persist 비트들을 가짐 -, 그리고
    상기 마지막 영구 기입 커맨드에 대한 영구 기입 완료 표시를 제공하도록
    추가로 구성되는, 장치.
  32. 제24항에 있어서,
    상기 메모리 시스템은, 상기 호스트로부터 FLUSH 커맨드를 수신하도록 추가로 구성되며,
    상기 FLUSH 커맨드는, 휘발성 매체들에 버퍼링된 모든 이전의 기입들이 비-휘발성 또는 영구 메모리로 푸시될 것이라는 것을 표시하는, 장치.
  33. 제32항에 있어서,
    상기 메모리 시스템은, 상기 FLUSH 커맨드의 실행의 완료 시에 FLUSH 완료 표시를 상기 호스트에 제공하도록 추가로 구성되는, 장치.
  34. 제24항에 있어서,
    상기 메모리 시스템은,
    하나 이상의 영구 기입 커맨드들을 수신하고;
    완료 비트맵에 완료된 하나 이상의 영구 기입 커맨드들의 상태들을 유지하고, 보류 비트맵에 보류중인 하나 이상의 영구 기입 커맨드들의 상태들을 유지하며; 그리고
    상기 호스트로부터의 상태에 대한 요청 시에, 어떠한 정정불가능한 에러도 존재하지 않으면 상기 완료 비트맵을, 또는 정정불가능한 에러가 존재하면 상기 보류 비트맵을 제공하도록
    추가로 구성되는, 장치.
  35. 제24항에 있어서,
    상기 메모리 시스템은 영구 기입들을 지원하도록 구성된 비-휘발성 듀얼 인라인 메모리 모듈(NVDIMM-P)인, 장치.
  36. 제24항에 있어서,
    셋탑 박스, 서버, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 개인 휴대 정보 단말(PDA), 고정 위치 데이터 유닛, 컴퓨터, 랩톱, 태블릿, 통신 디바이스, 및 모바일 폰으로 이루어진 그룹으로부터 선택되는 디바이스에 통합되는, 장치.
  37. 영구 기입 커맨드 및 연관된 기입 데이터를 메모리 시스템에 제공하도록 구성된 호스트를 포함하며,
    상기 영구 기입 커맨드는 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하도록 상기 메모리 시스템에게 표시하는, 장치.
  38. 제37항에 있어서,
    상기 호스트는, 상기 영구 기입 커맨드와 연관된 기입 식별(WID)을 상기 메모리 시스템에 제공하도록 추가로 구성되는, 장치.
  39. 제38항에 있어서,
    상기 호스트는, 상기 메모리 시스템으로부터, 상기 영구 기입의 성공적인 완료 시에, 상기 연관된 WID와 함께 영구 기입 완료 표시를 수신하도록 추가로 구성되는, 장치.
  40. 제39항에 있어서,
    상기 호스트는, 상기 메모리 시스템으로부터, 2개 이상의 영구 기입 완료 표시들을, 대응하는 2개 이상의 영구 기입 커맨드들이 상기 메모리 시스템으로 전송되었던 순서와 상이한 순서로 수신하도록 추가로 구성되는, 장치.
  41. 제38항에 있어서,
    상기 호스트는, 연관된 WID들과 함께 하나 이상의 영구 기입들에 대한 상태를 전송하기 위한 요청을 상기 메모리 시스템에 전송하도록 추가로 구성되는, 장치.
  42. 제41항에 있어서,
    상기 호스트는, 상기 메모리 시스템으로부터 상태 패킷을 수신하도록 추가로 구성되며,
    상기 상태 패킷은, 실행이 완료되었던 영구 기입 커맨드들에 대한 WID들을 포함하는, 장치.
  43. 제42항에 있어서,
    상기 WID는 영구 기입의 멀티-비트 식별 및 유효 비트를 포함하는, 장치.
  44. 제38항에 있어서,
    상기 호스트는,
    공통 WID를 갖는 2개 이상의 영구 기입 커맨드들의 그룹을 상기 메모리 시스템에 전송하고 - 상기 그룹의 마지막 영구 기입 커맨드는 1로 세팅된 Persist 비트를 갖고, 나머지 영구 기입 커맨드들은 0으로 세팅된 개개의 Persist 비트들을 가짐 -, 그리고
    상기 메모리 시스템으로부터, 상기 마지막 영구 기입 커맨드에 대한 영구 기입 완료 표시를 수신하도록
    추가로 구성되는, 장치.
  45. 제37항에 있어서,
    상기 호스트는, FLUSH 커맨드를 상기 메모리 시스템에 전송하도록 추가로 구성되며,
    상기 FLUSH 커맨드는, 휘발성 매체들에 버퍼링된 모든 이전의 기입들이 상기 메모리 시스템에 의해 비-휘발성 또는 영구 메모리로 푸시될 것이라는 것을 표시하는, 장치.
  46. 제45항에 있어서,
    상기 호스트는, 상기 메모리 시스템에 의한 상기 FLUSH 커맨드의 실행의 완료 시에, FLUSH 완료 표시를 수신하도록 추가로 구성되는, 장치.
  47. 제37항에 있어서,
    상기 메모리 시스템은 영구 기입들을 지원하도록 구성된 비-휘발성 듀얼 인라인 메모리 모듈(NVDIMM-P)인, 장치.
  48. 제37항에 있어서,
    셋탑 박스, 서버, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 개인 휴대 정보 단말(PDA), 고정 위치 데이터 유닛, 컴퓨터, 랩톱, 태블릿, 통신 디바이스, 및 모바일 폰으로 이루어진 그룹으로부터 선택되는 디바이스에 통합되는, 장치.
  49. 데이터를 저장하기 위한 수단을 포함하며,
    상기 데이터를 저장하기 위한 수단은,
    호스트로부터 영구 기입 커맨드 및 연관된 기입 데이터를 수신하기 위한 수단; 및
    상기 영구 기입 커맨드에 기반하여 상기 저장하기 위한 수단 내의 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하기 위한 수단을 포함하는, 장치.
  50. 프로세싱하기 위한 수단을 포함하며,
    상기 프로세싱하기 위한 수단은, 영구 기입 커맨드 및 연관된 기입 데이터를 메모리 시스템에 제공하기 위한 수단을 포함하고,
    상기 영구 기입 커맨드는 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하도록 상기 메모리 시스템에게 표시하는, 장치.
  51. 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금 영구 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 비-일시적인 컴퓨터-판독가능 저장 매체는,
    호스트로부터 메모리 시스템에서, 영구 기입 커맨드 및 연관된 기입 데이터를 수신하기 위한 코드; 및
    상기 영구 기입 커맨드에 기반하여 상기 메모리 시스템 내의 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하기 위한 코드를 포함하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
  52. 프로세서에 의해 실행될 경우, 상기 프로세서로 하여금 영구 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독가능 저장 매체로서,
    상기 비-일시적인 컴퓨터-판독가능 저장 매체는, 호스트로부터 메모리 시스템으로, 영구 기입 커맨드 및 연관된 기입 데이터를 제공하기 위한 코드를 포함하며,
    상기 영구 기입 커맨드는 비-휘발성 메모리로의 상기 기입 데이터의 영구 기입을 수행하도록 상기 메모리 시스템에게 표시하는, 비-일시적인 컴퓨터-판독가능 저장 매체.
KR1020207006858A 2017-09-15 2018-08-14 비-휘발성 메모리에 대한 영구 기입들 KR102425287B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/706,530 2017-09-15
US15/706,530 US11194524B2 (en) 2017-09-15 2017-09-15 Apparatus and method for performing persistent write operations using a persistent write command
PCT/US2018/046590 WO2019055164A1 (en) 2017-09-15 2018-08-14 PERSISTENT SCRIPTURES FOR NON-VOLATILE MEMORY

Publications (2)

Publication Number Publication Date
KR20200051624A true KR20200051624A (ko) 2020-05-13
KR102425287B1 KR102425287B1 (ko) 2022-07-25

Family

ID=63449690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006858A KR102425287B1 (ko) 2017-09-15 2018-08-14 비-휘발성 메모리에 대한 영구 기입들

Country Status (22)

Country Link
US (2) US11194524B2 (ko)
EP (1) EP3682331B1 (ko)
JP (1) JP7123129B2 (ko)
KR (1) KR102425287B1 (ko)
CN (1) CN111095224B (ko)
AU (1) AU2018334452B2 (ko)
BR (1) BR112020004936A2 (ko)
CA (1) CA3073686C (ko)
CL (1) CL2020000647A1 (ko)
CO (1) CO2020002863A2 (ko)
DK (1) DK3682331T3 (ko)
FI (1) FI3682331T3 (ko)
IL (1) IL272795B (ko)
MX (1) MX2020002897A (ko)
NZ (1) NZ761924A (ko)
PH (1) PH12020500384A1 (ko)
PT (1) PT3682331T (ko)
SA (1) SA520411521B1 (ko)
SG (1) SG11202001491YA (ko)
SI (1) SI3682331T1 (ko)
TW (1) TWI779082B (ko)
WO (1) WO2019055164A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US11194524B2 (en) 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US10996888B2 (en) * 2017-10-31 2021-05-04 Qualcomm Incorporated Write credits management for non-volatile memory
KR102426107B1 (ko) * 2017-12-20 2022-07-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20190088790A (ko) * 2018-01-19 2019-07-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11048645B2 (en) * 2018-02-01 2021-06-29 Samsung Electronics Co., Ltd. Memory module, operation method therof, and operation method of host
US11709774B2 (en) * 2019-08-07 2023-07-25 Intel Corporation Data consistency and durability over distributed persistent memory systems
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US11886744B2 (en) * 2021-12-15 2024-01-30 Nvidia Corporation Systems, methods, and apparatuses for making writes to persistent memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136786A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Asynchronous persistent stores for transactions
US20140297595A1 (en) * 2013-03-28 2014-10-02 Microsoft Corporation Transaction processing for database in persistent system
US20170147207A1 (en) * 2015-11-20 2017-05-25 Arm Ltd. Non-volatile buffer for memory operations
US20180329651A1 (en) * 2017-05-09 2018-11-15 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000020957A1 (en) 1998-10-02 2000-04-13 Worldspace Management Corporation System for providing a user with active and passive access to cached content
US7139885B2 (en) 2001-12-27 2006-11-21 Hitachi, Ltd. Method and apparatus for managing storage based replication
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8250329B2 (en) * 2007-10-24 2012-08-21 International Business Machines Corporation Preemptive write-inhibition for thin provisioning storage subsystem
US7930361B2 (en) 2008-09-15 2011-04-19 Dell Products L.P. System and method for management of remotely shared data
US8725951B2 (en) * 2010-04-12 2014-05-13 Sandisk Enterprise Ip Llc Efficient flash memory-based object store
WO2012020544A1 (ja) * 2010-08-11 2012-02-16 日本電気株式会社 データ処理システム、データ処理方法、およびプログラム
US10817421B2 (en) * 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US8656130B2 (en) * 2011-12-23 2014-02-18 International Business Machines Corporation Low latency and persistent data storage
US10102170B2 (en) * 2012-05-18 2018-10-16 Dell Products, Lp System and method for providing input/output functionality by an I/O complex switch
US9501398B2 (en) * 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
EP2972891B1 (en) 2013-03-14 2020-05-06 Hewlett-Packard Enterprise Development LP Multiversioned nonvolatile memory hierarchy for persistent memory
RU2623801C1 (ru) 2013-07-26 2017-06-29 Интел Корпорейшн Интерфейс энергонезависимой памяти
US9389976B2 (en) 2014-04-09 2016-07-12 Intel Corporation Distributed persistent memory using asynchronous streaming of log records
US10061719B2 (en) * 2014-12-25 2018-08-28 Intel Corporation Packed write completions
US9886194B2 (en) * 2015-07-13 2018-02-06 Samsung Electronics Co., Ltd. NVDIMM adaptive access mode and smart partition mechanism
US9946492B2 (en) * 2015-10-30 2018-04-17 Arm Limited Controlling persistent writes to non-volatile memory based on persist buffer data and a persist barrier within a sequence of program instructions
US10691553B2 (en) 2015-12-16 2020-06-23 Netapp, Inc. Persistent memory based distributed-journal file system
US10970175B2 (en) * 2016-06-15 2021-04-06 Sap Se Flexible per-request data durability in databases and other data stores
US10127074B2 (en) * 2017-01-27 2018-11-13 Futurewei Technologies, Inc. Transaction identification synchronization
CN109729730B (zh) * 2017-08-31 2020-09-04 华为技术有限公司 写入信息的方法和装置
US11194524B2 (en) 2017-09-15 2021-12-07 Qualcomm Incorporated Apparatus and method for performing persistent write operations using a persistent write command
US11016669B2 (en) * 2018-05-01 2021-05-25 Qualcomm Incorporated Persistent write data for energy-backed memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140136786A1 (en) * 2012-11-13 2014-05-15 International Business Machines Corporation Asynchronous persistent stores for transactions
US20140297595A1 (en) * 2013-03-28 2014-10-02 Microsoft Corporation Transaction processing for database in persistent system
US20170147207A1 (en) * 2015-11-20 2017-05-25 Arm Ltd. Non-volatile buffer for memory operations
US20180329651A1 (en) * 2017-05-09 2018-11-15 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Wendy Elsasser, "Emerging NVM Interface", Flash Memory Summit 2017 Proceedings, 2017.08.07. *

Also Published As

Publication number Publication date
TWI779082B (zh) 2022-10-01
CA3073686A1 (en) 2019-03-21
PH12020500384A1 (en) 2020-12-07
JP7123129B2 (ja) 2022-08-22
EP3682331B1 (en) 2023-12-27
BR112020004936A2 (pt) 2020-09-15
AU2018334452A1 (en) 2020-03-19
SI3682331T1 (sl) 2024-03-29
TW201933106A (zh) 2019-08-16
CL2020000647A1 (es) 2020-08-28
CO2020002863A2 (es) 2020-04-13
AU2018334452B2 (en) 2023-03-16
MX2020002897A (es) 2020-07-22
RU2020110130A3 (ko) 2022-03-29
WO2019055164A1 (en) 2019-03-21
NZ761924A (en) 2022-05-27
RU2020110130A (ru) 2021-10-15
DK3682331T3 (da) 2024-01-29
US20190087096A1 (en) 2019-03-21
KR102425287B1 (ko) 2022-07-25
EP3682331A1 (en) 2020-07-22
SG11202001491YA (en) 2020-03-30
US11194524B2 (en) 2021-12-07
PT3682331T (pt) 2024-01-26
US20220050600A1 (en) 2022-02-17
IL272795B (en) 2022-08-01
FI3682331T3 (fi) 2024-01-25
CN111095224A (zh) 2020-05-01
SA520411521B1 (ar) 2022-08-02
JP2020534598A (ja) 2020-11-26
IL272795A (en) 2020-04-30
CA3073686C (en) 2023-10-03
CN111095224B (zh) 2023-11-14
US11650765B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
KR102425287B1 (ko) 비-휘발성 메모리에 대한 영구 기입들
KR102384907B1 (ko) 비-휘발성 메모리에 대한 기록 크레딧 관리
CN106445724B (zh) 与受保护数据分开存储奇偶校验数据
TWI603256B (zh) 用於對三維記憶體存取操作之階層模式
US9389953B2 (en) Semiconductor memory device and system conducting parity check and operating method of semiconductor memory device
KR20180023804A (ko) 전기적으로 버퍼링된 nv-dimm 및 그에 사용하는 방법
KR20180011642A (ko) 반도체장치
US20190042413A1 (en) Method and apparatus to provide predictable read latency for a storage device
CN112384899A (zh) 用于能量支持存储器的持久写入数据
CN110720126B (zh) 传输数据掩码的方法、内存控制器、内存芯片和计算机系统
RU2780441C2 (ru) Постоянные записи для энергонезависимой памяти
WO2023033878A1 (en) Endurance groups ecc allocation
CN114730247A (zh) 具有数据的最小写入大小的存储设备
KR102355436B1 (ko) 데이터 저장 장치
US11397699B2 (en) Interrupt coalescing protection logic
EP4155894A1 (en) Technologies for memory mirroring across an interconnect

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant