KR102288723B1 - 매체 지속성 및 진단을 위한 향상된 부호워드 - Google Patents

매체 지속성 및 진단을 위한 향상된 부호워드 Download PDF

Info

Publication number
KR102288723B1
KR102288723B1 KR1020217003469A KR20217003469A KR102288723B1 KR 102288723 B1 KR102288723 B1 KR 102288723B1 KR 1020217003469 A KR1020217003469 A KR 1020217003469A KR 20217003469 A KR20217003469 A KR 20217003469A KR 102288723 B1 KR102288723 B1 KR 102288723B1
Authority
KR
South Korea
Prior art keywords
memory
data
die
codeword
memory controller
Prior art date
Application number
KR1020217003469A
Other languages
English (en)
Other versions
KR20210018518A (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 KR20210018518A publication Critical patent/KR20210018518A/ko
Application granted granted Critical
Publication of KR102288723B1 publication Critical patent/KR102288723B1/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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 디바이스에서 오류 복구를 위한 방법, 장치, 및 시스템이 설명된다. 특정한 다이와 연관된 패리티 데이터가 저장될 수 있는 다이 레벨 중복 방식이 이용될 수 있다. 일 예시적인 장치는 인쇄 회로 기판 및 메모리 디바이스(26)를 포함할 수 있다. 각각의 메모리 디바이스(26)는 각각 인쇄 회로 기판의 평면 표면에 배치될 수 있고, 각각 2개 이상의 메모리 다이(58)를 포함할 수 있다. 장치는 또한, 2개 이상의 메모리 다이(58) 및 메모리 제어기(30)에 통신 가능하게 결합된 다수의 채널을 포함할 수 있다. 메모리 제어기(30)는 다수의 채널에 통신 가능하게 결합될 수 있고 다수의 채널을 통한 데이터 송신을 통해 중복 방식을 결정적으로 유지할 수 있다. 메모리 제어기(30)는 또한, 메모리 동작 요청에 응답하여 향상된 부호워드(120)에 추가된 메모리 동작 정보를 업데이트할 수 있다.

Description

매체 지속성 및 진단을 위한 향상된 부호워드
이 섹션은 독자를 하기에 설명되고/되거나 청구되는, 본 기술의 다양한 양태와 관련될 수 있는 본 분야의 다양한 양태에 접하게 하도록 의도된다. 이 논의는 본 발명의 다양한 양태의 더 양호한 이해를 용이하게 하기 위해 판독자에게 배경 정보를 제공하는데 도움이 되는 것으로 여겨진다. 그에 따라, 이 진술이 종래 기술의 승인으로서가 아니라 이러한 관점에서 판독되어야 함을 이해해야 한다.
일반적으로, 컴퓨팅 시스템은 하나 이상의 프로세서 또는 다른 적합한 구성요소와 같은 프로세싱 회로, 및 칩 또는 집적 회로와 같은 메모리 디바이스를 포함한다. 하나 이상의 메모리 디바이스는 프로세싱 회로에 액세스 가능한 데이터를 저장하기 위해, 듀얼 인라인 메모리 모듈(DIMM)과 같은 메모리 모듈에 구현될 수 있다. 예를 들면, 컴퓨팅 시스템에 대한 사용자 입력에 기초하여, 프로세싱 회로는 메모리 모듈이 메모리 디바이스로부터 사용자 입력에 대응하는 데이터를 검색할 것을 요청할 수 있다. 일부 사례에서, 검색된 데이터는 동작을 수행하기 위해 프로세싱 회로에 의해 실행가능한 명령어를 포함할 수 있고/있거나 동작을 위한 입력으로서 사용될 데이터를 포함할 수 있다. 게다가, 일부 경우에, 동작으로부터 출력된 데이터는 예를 들면, 후속 검색을 가능하게 하기 위해 메모리에 저장될 수 있다.
또한, 메모리 디바이스에 저장된 데이터는 데이터 손실 또는 메모리 디바이스 오작동의 경우에 보존, 유지, 또는 재생성되는 것을 원하는 특정한 데이터를 포함할 수 있다. 이러한 데이터를 저장하는데 지정된 리소스는 다른 용도를 위해 이용 가능하지 않을 수 있고 따라서, 디바이스 동작가능성을 제한할 수 있다.
본 발명의 다양한 양태는 다음의 상세한 설명을 읽을 때 그리고 도면을 참조할 때 더 양호하게 이해될 수 있고, 여기서:
도 1은 일 실시형태에 따른, 클라이언트 디바이스 및 하나 이상의 원격 컴퓨팅 디바이스를 포함하는 컴퓨팅 시스템의 블록도;
도 2는 일 실시형태에 따른, 도 1의 원격 컴퓨팅 디바이스에 구현될 수 있는 메모리 모듈의 블록도;
도 3은 일 실시형태에 따른, 독립 3D XPoint™ 메모리(RAIX)의 중복 어레이를 제공하기 위해 비휘발성 메모리 장치에 배열된 도 2의 메모리 모듈의 블록도;
도 4는 일 실시형태에 따른, 도 3의 메모리 모듈의 성능을 모니터링하는데 사용된 메모리 동작 정보의 차트;
도 5는 일 실시형태에 따른, 도 4의 차트의 데이터를 저장하기 위해 향상된 부호워드를 구현하는 도 3의 메모리 모듈의 개략적인 표현을 도시한 도면;
도 6은 일 실시형태에 따른, 다이 레벨 중복 동작을 수행하기 위해 도 3의 메모리 모듈을 동작시키기 위한 프로세스의 흐름도; 및
도 7은 일 실시형태에 따른, 스크럽 요청(scrub request)에 응답하여 도 5의 향상된 부호워드를 업데이트하기 위해 도 3의 메모리 모듈을 동작시키기 위한 프로세스의 흐름도.
메모리가 판독되거나 기록됨에 따라 메모리의 재료 속성은 시간이 지남에 따라 성능 저하되고/되거나 노화된다. 따라서, 이 메모리 동작에 관한 정보는 메모리 상태를 모니터링하고 메모리 시스템에 대한 예측 진단을 수행하기 위해 유용할 수 있다. 그러나, 많은 경우에, 메모리 동작 정보를 추적하는 것은 간단하지 않으며 정보 송신을 지원하기 위해 부가적인 채널을 사용한다. 게다가, 메모리 동작 정보를 보존하는 것은 비동기 전력 손실 이벤트의 경우에 데이터 백업을 지원하는 보호 커패시터와 같은, 데이터 손실에 대해 보호하기 위해 증가된 양의 백업 회로를 사용할 수 있다.
일반적으로, 컴퓨팅 시스템의 하드웨어는 예를 들면, 하나 이상의 프로세서 및/또는 하나 이상의 메모리 디바이스(예컨대, 칩 또는 집적 회로)를 사용하여 구현된 프로세싱 회로 및 메모리를 포함한다. 컴퓨팅 시스템의 동작 동안, 프로세싱 회로는 예를 들면, 입력 데이터에 대한 동작을 수행함으로써 출력 데이터를 결정하기 위해 사용자 입력에 기초하여 대응하는 명령어를 실행함으로써 다양한 동작(예컨대, 작업)을 수행할 수 있다. 컴퓨팅 시스템의 동작을 용이하게 하기 위해, 프로세싱 회로에 액세스 가능한 데이터는 메모리 디바이스가 입력 데이터, 출력 데이터, 실행가능한 명령어를 나타내는 데이터, 또는 이들의 임의의 조합을 저장하도록, 메모리 디바이스에 저장될 수 있다.
일부 사례에서, 다수의 메모리 디바이스는 메모리 모듈에 구현될 수 있으며, 그에 의해 메모리 디바이스가 프로세싱 회로에 유닛으로서 통신 가능하게 결합되는 것을 가능하게 한다. 예를 들면, 듀얼 인라인 메모리 모듈(DIMM)은 인쇄 회로 기판(PCB) 및 다수의 메모리 디바이스를 포함할 수 있다. 메모리 모듈은 통신 네트워크를 통해 클라이언트 디바이스 또는 호스트 디바이스에 통신 가능하게 결합된 메모리 제어기로부터의 명령어에 응답한다. 또는 일부 경우에, 메모리 제어기는 메모리 호스트 인터페이스의 호스트 측에 구현될 수 있고; 예를 들면, 프로세서, 마이크로제어기, 또는 ASIC는 메모리 제어기를 포함할 수 있다. 이 통신 네트워크는 메모리 제어기와의 통신을 통해 액세스 가능한 하드웨어 리소스를 활용하기 위해 클라이언트 디바이스와 메모리 모듈 사이의 데이터 통신을 가능하게 할 수 있다. 클라이언트 디바이스에 대한 사용자 입력에 적어도 부분적으로 기초하여, 메모리 제어기의 프로세싱 회로는 클라이언트 디바이스와 메모리 디바이스 사이의 데이터의 검색 또는 송신을 용이하게 하기 위해 하나 이상의 메모리 동작을 수행할 수 있다. 클라이언트 디바이스와 메모리 디바이스 사이에 전달된 데이터는 클라이언트 디바이스에서 그래픽 사용자 인터페이스(GUI)를 통한 사용자로의 시각화의 제공, 프로세싱 동작, 산출, 등을 포함하지만, 이로 제한되지 않는 다양한 목적을 위해 사용될 수 있다.
부가적으로, 일부 사례에서, 메모리 디바이스는 상이한 메모리 유형을 사용하여 구현될 수 있다. 예를 들면, 메모리 디바이스는 동적 랜덤 액세스 메모리(DRAM) 또는 정적 랜덤 액세스 메모리(SRAM)와 같은 휘발성 메모리로서 구현될 수 있다. 대안적으로, 메모리 디바이스는 플래시(예컨대, NAND) 메모리, 상 변화 메모리(예컨대, 3D XPoint™) 메모리, 또는 강유전성 랜덤 액세스 메모리(FeRAM)와 같은 비휘발성 메모리로서 구현될 수 있다. 임의의 경우에, 메모리 디바이스는 일반적으로, 채널(예컨대, 데이터 채널, 통신 결합)을 통해 메모리 디바이스로 송신된 데이터 비트(예컨대, "0" 비트 또는 "1" 비트)를 저장하기 위해 적어도 하나의 메모리 다이(즉, 반도체 웨이퍼의 일부 또는 "다이"에 구성된 메모리 셀의 어레이)를 포함하고 심지어 상이한 메모리 유형을 사용하여 구현될 때 프로세싱 회로의 관점에서 기능적으로 유사할 수 있다.
메모리 동작을 통해, 메모리 모듈은 동일한 메모리 모듈 내의 다른 메모리 디바이스보다 자주, 또는 높은 레이트로 상이한 메모리 디바이스를 사용하거나 이에 액세스할 수 있다. 이것은 메모리 디바이스의 불균일한 노화 및/또는 성능 저하로 이어질 수 있다. 일부 상황에서, 이 상이한 액세스 시도가 추적될 수 있으며 액세스 시도의 횟수에 관한 정보는 메모리 디바이스의 수명 또는 상태를 모니터링하기 위해 활용될 수 있다. 예를 들면, 액세스 카운트, 마지막 액세스 시간, 메모리 디바이스가 프리(free)하거나 결함이 있는지의 여부(예컨대, 데드(dead), 불량임), 논리 주소로부터 물리 주소로의 변환에 관한 정보, 등에 관한 메모리 동작 정보는 메모리 디바이스의 상태를 모니터링하는데 용이하게 하고 메모리 동작의 수행을 용이하게 하기 위해 각각의 메모리 디바이스에 대해 저장되고 추적될 수 있다.
이 메모리 동작 정보는 데이터 테이블 또는 그렇지 않으면, 메모리 모듈의 메모리 제어기에 의해 유지된 데이터의 적합한 저장장치에 저장될 수 있다. 메모리 제어기는 메모리 디바이스가 액세스될 때마다 저장된 메모리 동작 정보를 업데이트할 수 있다. 따라서, 저장된 메모리 동작 정보에 액세스하기 위해, 부가적인 채널은 또 다른 분석 또는 사용을 위해 메모리 동작 정보의 일부 또는 전부를 호스트 디바이스로 송신하기 위해 사용될 수 있다. 이 부가적인 채널은 메모리 동작 동안 메모리 디바이스에 액세스하기 위해 사용된 채널에 더하여 포함될 수 있다.
메모리 동작 정보는 데이터 손실, 메모리 오작동, 전력 손실, 등의 경우에 유지할 정보를 포함할 수 있다. 예를 들면, 메모리 동작 정보는 논리 대 물리 데이터(예컨대, 논리 주소 대 물리 주소 변환을 나타내는 데이터), 또는 다양한 메모리에 대응하는 물리 주소를 정의하는 데이터를 포함할 수 있다. 데이터 손실 이벤트 동안 논리 대 물리 데이터가 손실되면, 메모리 제어기가 호스트 디바이스로부터의 메모리 액세스 요청을 변환하는 그의 능력을 잃을 수 있기 때문에 메모리 모듈이 쓸모 없게 될 수 있다(예컨대, 메모리 제어기는 데이터가 실제로 저장되는 위치를 알 수 없음). 따라서, 다양한 메모리 디바이스에 저장된 데이터를 백업하기 위해 사용된 데이터 중복 방식에 더하여, 메모리 시스템은 예를 들면, 비동기 전력 손실 이벤트에 의해 야기된 데이터 손실에 대해 보호하기 위해 메모리 동작 정보에 백업 또는 중복을 제공할 수 있다.
공통적으로, 중복 방식은 메모리 디바이스의 메모리 다이에 저장된 전체 부호워드(예컨대, 데이터 청크, 데이터의 세그먼트)를 보호하기 위해 동작한다. 부호워드는 메모리 다이에 저장될 수 있지만, 메모리 다이는 부호워드를 저장하기에 충분한 크기가 되는 한 임의의 크기인 메모리일 수 있다. 이 메모리 시스템에서, 부호워드는 백업될 각각의 메모리 다이에 기초하는 패리티 데이터를 생성하기 위해 XOR 연산에서 사용될 수 있다. 데이터 손실의 경우에, 이 패리티 데이터는 데이터 손실 이벤트에서 손상되거나 파괴된 메모리 다이의 부호워드를 복구하기 위해 사용될 수 있으며, 따라서 백업된 메모리 다이의 각각의 부호워드 내에 저장된 값의 표시를 포함한다고 할 수 있다. 메모리 모듈이 부호워드의 일부로서 송신된 데이터를 백업하는 중복 방식을 구현할 수 있기 때문에, 부호워드를 갖는 메모리 동작 정보를 추가하고 부호워드가 메모리 다이에 기록될 때마다 부호워드 내의 메모리 다이에 저장된 메모리 동작 정보를 업데이트하는데 특정한 장점이 존재할 수 있다. 이 방식으로, 메모리 동작 정보는 메모리 모듈이 메모리 다이에 저장된 부호워드를 백업하도록 동작할 때마다 백업될 수 있다.
메모리 동작 정보의 저장 및 송신의 개선을 용이하게 하기 위해, 본 발명은 메모리 동작 정보를 부호워드의 일부로서 포함하도록 메모리 모듈을 구현하고 동작시키기 위한 기술을 제공한다. 메모리 동작 정보를 각각의 메모리 다이에 저장된 부호워드에 통합함으로써, 메모리 동작 정보는 중복 방식을 통해 부호워드가 백업될 때마다 용이하게 백업된다. 예를 들면, 독립 3D XPoint™ 메모리(RAIX) 중복 방식의 다이 레벨 중복 어레이를 구현하는 메모리 모듈은 각각의 기록 이벤트(예컨대, 새로운 데이터를 메모리 다이에 기록하는 것으로부터의 기록 이벤트, 메모리 다이에서 데이터를 리프레시(refresh)하기 위한 메모리 스크러빙 동작(memory scrubbing operation)의 일부로서의 기록 이벤트) 후에와 같은, 메모리 다이에 저장된 데이터가 변경되는 메모리 동작 동안 각각의 지점에서 부호워드를 백업할 수 있다. 논의의 용이함을 위해, 본 발명은 메모리 동작 정보에 더하여 데이터 페이로드를 포함하도록 다이 레벨 RAIX 방식을 구현하는 메모리 모듈에서 사용된 부호워드를 향상시키는데 초점을 맞추지만, 다양한 애플리케이션 및 실시형태가 메모리 모듈의 모니터링 및 관리를 용이하게 하기 위해 메모리 동작 정보로 향상된 부호워드를 사용할 수 있음을 이해해야 한다.
게다가, 특정 컴퓨팅 프로세스는 컴퓨팅 시스템의 운영 효율성을 개선하기 위해 서로 분리될 수 있다. 예를 들면, 단순히 데이터 액세스를 제어하는 것(예컨대, 저장 및/또는 검색)을 넘어, 메모리 프로세싱 회로는 예를 들면, 호스트 프로세싱 회로에 의해 달리 수행될 데이터 프로세싱 동작을 수행하도록 구현될 수 있다. 설명의 용이함을 위해, 다이 레벨 RAIX는 이 원격 컴퓨팅 디바이스를 사용하는 컴퓨팅 시스템에서 구현되는 것으로서 하기에 설명되지만, 다양한 유효한 실시형태가 다이 레벨 RAIX 방식을 구현할 수 있음을 이해해야 한다. 예를 들면, 원격 컴퓨팅 디바이스를 사용하지 않고 대신에 클라이언트 디바이스의 구성요소를 메모리 모듈 및 원격 컴퓨팅 디바이스의 프로세싱 회로와 조합하는 컴퓨팅 시스템이 이용될 수 있다.
예시하는 것을 돕기 위해, 도 1은 하나 이상의 원격 컴퓨팅 디바이스(11)를 포함하는 컴퓨팅 시스템(10)의 일례를 묘사한다. 묘사된 실시형태에서와 같이, 원격 컴퓨팅 디바이스(11)는 통신 네트워크(14)를 통해 하나 이상의 클라이언트 디바이스(12)에 통신 가능하게 결합될 수 있다. 묘사된 실시형태가 단지 예시적이고 제한적인 것이 아닌 것으로 의도됨을 인식해야 한다. 예를 들면, 다른 실시형태에서, 원격 컴퓨팅 디바이스(11)는 단일 클라이언트 디바이스(12) 또는 2개보다 많은 클라이언트 디바이스(12)에 통신 가능하게 결합될 수 있다.
임의의 경우에, 통신 네트워크(14)는 클라이언트 디바이스(12)와 원격 컴퓨팅 디바이스(11) 사이의 데이터 통신을 가능하게 할 수 있다. 일부 실시형태에서, 클라이언트 디바이스(12)는 예를 들면, 원격 컴퓨팅 디바이스(11)가 집중화된 데이터 센터에 위치되도록 원격 컴퓨팅 디바이스(11)로부터 물리적으로 멀리 떨어질(예컨대, 별개일) 수 있다. 따라서, 일부 실시형태에서, 통신 네트워크(14)는 인터넷과 같은, 광역 통신망(WAN)일 수 있다. 통신 네트워크(14)를 통한 통신을 용이하게 하기 위해, 원격 컴퓨팅 디바이스(11) 및 클라이언트 디바이스(12)는 각각, 네트워크 인터페이스(16)를 포함할 수 있다.
네트워크 인터페이스(16)에 더하여, 클라이언트 디바이스(12)는 사용자가 클라이언트 디바이스(12)와 상호작용하는 것을 가능하게 하는 입력 디바이스(18) 및/또는 전자 디스플레이(20)를 포함할 수 있다. 예를 들면, 입력 디바이스(18)는 사용자 입력을 수신할 수 있고, 따라서, 버튼, 키보드, 마우스, 트랙패드, 등을 포함할 수 있다. 부가적으로 또는 대안적으로, 전자 디스플레이(20)는 스크린(예컨대, 전자 디스플레이(20)의 표면)을 터치하는 객체의 발생 및/또는 위치를 검출함으로써 사용자 입력을 수신하는 터치 감지 구성요소를 포함할 수 있다. 사용자 입력을 가능하게 하는 것에 더하여, 전자 디스플레이(20)는 운영 체제의 그래픽 사용자 인터페이스(GUI), 애플리케이션 인터페이스, 텍스트, 정지 이미지, 비디오 콘텐트, 등을 디스플레이함으로써 정보의 시각적 표현의 제공을 용이하게 할 수 있다.
상기 설명된 바와 같이, 통신 네트워크(14)는 원격 컴퓨팅 디바이스(11)와 하나 이상의 클라이언트 디바이스(12) 사이의 데이터 통신을 가능하게 할 수 있다. 즉, 통신 네트워크(14)는 사용자 입력이 클라이언트 디바이스(12)로부터 원격 컴퓨팅 디바이스(11)에 전달되는 것을 가능하게 할 수 있다. 부가적으로 또는 대안적으로, 통신 네트워크(14)는 사용자 입력에 기초하여 원격 컴퓨팅 디바이스(11)에 의해 수행된 동작의 결과가 예를 들면, 전자 디스플레이(20)에 디스플레이될 이미지 데이터로서 클라이언트 디바이스(12)에 다시 전달되는 것을 가능하게 할 수 있다.
실제로, 일부 실시형태에서, 통신 네트워크(14)에 의해 제공된 데이터 통신은 클라이언트 디바이스(12)에서의 하드웨어가 감소될 수 있도록, 다수의 사용자에 이용 가능한 하드웨어를 집중화하는 것을 가능하게 하기 위해 활용될 수 있다. 예를 들면, 원격 컴퓨팅 디바이스(11)는 다수의 상이한 클라이언트 디바이스(12)에 데이터 저장을 제공할 수 있고, 그에 의해 클라이언트 디바이스(12)에서 국소적으로 제공된 데이터 저장(예컨대, 메모리)이 감소되는 것을 가능하게 한다. 부가적으로 또는 대안적으로, 원격 컴퓨팅 디바이스(11)는 다수의 상이한 클라이언트 디바이스(12)에 대한 프로세싱을 제공할 수 있고, 그에 의해 클라이언트 디바이스(12)에서 국소적으로 제공된 프로세싱 전력이 감소되는 것을 가능하게 한다.
따라서, 네트워크 인터페이스(16)에 더하여, 원격 컴퓨팅 디바이스(11)는 데이터 버스(25)를 통해 통신 가능하게 결합된 하나 이상의 메모리 모듈(24)(예컨대, 서브 시스템) 및 프로세싱 회로(22)를 포함할 수 있다. 일부 실시형태에서, 프로세싱 회로(22) 및/또는 메모리 모듈(24)은 예를 들면, 제1 원격 컴퓨팅 디바이스(11)가 제1 메모리 모듈(24A) 및 프로세싱 회로(22)의 일부를 포함하는 반면, M번째 원격 컴퓨팅 디바이스(11)가 M번째 메모리 모듈(24M) 및 프로세싱 회로(22)의 또 다른 부분을 포함하도록 다수의 원격 컴퓨팅 디바이스(11)에 걸쳐 구현될 수 있다. 부가적으로 또는 대안적으로, 프로세싱 회로(22) 및 메모리 모듈(24)은 단일 원격 컴퓨팅 디바이스(11)에 구현될 수 있다.
임의의 경우에, 프로세싱 회로(22)는 일반적으로 예를 들면, 클라이언트 디바이스(12)로부터 수신된 사용자 입력에 의해 표시된 동작을 수행하기 위한 명령어를 실행할 수 있다. 따라서, 프로세싱 회로(22)는 하나 이상의 중앙 처리 장치(CPU), 하나 이상의 그래픽 처리 장치(GPU), 하나 이상의 프로세서 코어, 또는 이들의 임의의 조합을 포함할 수 있다. 일부 실시형태에서, 프로세싱 회로(22)는 프로세싱 회로(22)에 형성된(예컨대, 프로그래밍된) 회로 연결에 기초하여 동작을 부가적으로 수행할 수 있다. 따라서, 이러한 실시형태에서, 프로세싱 회로(22)는 하나 이상의 주문형 반도체(application specific integrated circuit: ASIC), 하나 이상의 필드 프로그래밍가능한 로직 어레이(FPGA), 또는 둘 모두를 부가적으로 포함할 수 있다.
부가적으로, 메모리 모듈(24)은 프로세싱 회로(22)에 액세스 가능한 데이터 저장을 제공할 수 있다. 예를 들면, 메모리 모듈(24)은 클라이언트 디바이스(12)로부터 수신된 데이터, 프로세싱 회로(22)에 의해 수행된 동작으로부터 발생한 데이터, 프로세싱 회로(22)에 의해 수행된 동작에 입력될 데이터, 동작을 수행하기 위해 프로세싱 회로(22)에 의해 실행가능한 명령어, 또는 이들의 임의의 조합을 저장할 수 있다. 데이터 저장의 제공을 용이하게 하기 위해, 메모리 모듈(24)은 하나 이상의 메모리 디바이스(26)(예컨대, 칩 또는 집적 회로)를 포함할 수 있다. 즉, 메모리 디바이스(26)는 각각, 프로세싱 회로(22)에 액세스 가능한 데이터를 저장하는 유형의 비일시적 컴퓨터 판독가능한 매체일 수 있다.
원격 컴퓨팅 디바이스(11)의 하드웨어가 다수의 클라이언트 디바이스(12)에 의해 활용될 수 있기 때문에, 적어도 일부 사례에서, 메모리 모듈(24)은 상이한 클라이언트 디바이스(12)와 부합하는 데이터를 저장할 수 있다. 적합한 데이터의 식별을 용이하게 하기 위해, 일부 실시형태에서, 데이터는 데이터 블록(28)으로서 그룹화되고 저장될 수 있다. 실제로, 일부 실시형태에서, 각각의 클라이언트 디바이스(12)와 부합하는 데이터는 별개의 데이터 블록(28)으로서 저장될 수 있다. 예를 들면, 제1 메모리 모듈(24A)에서의 메모리 디바이스(26)는 제1 클라이언트 디바이스(12A)와 부합하는 제1 데이터 블록(28A) 및 제N 클라이언트 디바이스(12N)와 부합하는 제N 데이터 블록(28N)을 저장할 수 있다. 하나 이상의 데이터 블록(28)은 메모리 디바이스(26)의 메모리 다이 내에 저장될 수 있다.
부가적으로, 일부 실시형태에서, 데이터 블록(28)은 클라이언트 디바이스(12)에 제공된 가상 기계(VM)에 대응할 수 있다. 즉, 일 예시적인 예로서, 원격 컴퓨팅 디바이스(11)는 제1 데이터 블록(28A)을 통해 제1 클라이언트 디바이스(12A)에 제1 가상 기계를 제공하고 제N 데이터 블록(28N)을 통해 제N 클라이언트 디바이스(12N)에 제N 가상 기계를 제공할 수 있다. 따라서, 제1 클라이언트 디바이스(12A)가 제1 가상 기계를 위해 의도된 사용자 입력을 수신하는 경우, 제1 클라이언트 디바이스(12A)는 통신 네트워크(14)를 통해 사용자 입력을 원격 컴퓨팅 디바이스(11)에 전달할 수 있다. 사용자 입력에 적어도 부분적으로 기초하여, 원격 컴퓨팅 디바이스(11)는 제1 데이터 블록(28A)을 검색하고, 대응하는 동작을 수행하기 위한 명령어를 실행하며, 통신 네트워크(14)를 통해 동작의 결과를 제1 클라이언트 디바이스(12A)에 다시 전달할 수 있다.
유사하게, 제N 클라이언트 디바이스(12N)가 제N 가상 기계를 위해 의도된 사용자 입력을 수신하는 경우, 제N 클라이언트 디바이스(12N)는 통신 네트워크(14)를 통해 사용자 입력을 원격 컴퓨팅 디바이스(11)에 전달할 수 있다. 사용자 입력에 적어도 부분적으로 기초하여, 원격 컴퓨팅 디바이스(11)는 제N 데이터 블록(28N)을 검색하고, 대응하는 동작을 수행하기 위한 명령어를 실행하며, 통신 네트워크(14)를 통해 동작의 결과를 제N 클라이언트 디바이스(12N)에 다시 전달할 수 있다. 따라서, 원격 컴퓨팅 디바이스(11)는 메모리 모듈(24)에 저장된 다양한 데이터 블록(28)에 액세스(예컨대, 판독하고/하거나 기록)할 수 있다.
저장된 데이터 블록(28)에 대한 액세스의 개선을 용이하게 하기 위해, 메모리 모듈(24)은 메모리 디바이스(26)에서의 데이터의 저장을 제어하는 메모리 제어기(30)를 포함할 수 있다. 일부 실시형태에서, 메모리 제어기(30)는 메모리 제어기(30)에 형성된(예컨대, 프로그래밍된) 회로 연결에 기초하여 동작할 수 있다. 따라서, 이러한 실시형태에서, 메모리 제어기(30)는 하나 이상의 주문형 반도체(ASICs), 하나 이상의 필드 프로그래밍가능한 로직 게이트 어레이(FPGAs), 또는 둘 모두를 포함할 수 있다. 임의의 경우에, 상기 설명된 바와 같이, 메모리 모듈(24)은 예를 들면, 데이터 액세스 속도와 데이터 저장 밀도 사이에 다양한 트레이드오프(tradeoffs)를 제공하는 상이한 메모리 유형을 구현하는 메모리 디바이스(26)를 포함할 수 있다. 따라서, 이러한 실시형태에서, 메모리 제어기(30)는 예를 들면, 메모리 모듈(24)이 빠른 데이터 액세스 속도뿐만 아니라, 높은 데이터 저장 용량을 제공하도록 다양한 트레이드오프의 활용을 용이하게 하기 위해 다수의 메모리 디바이스(26)에 걸쳐 데이터 저장을 제어할 수 있다.
예시하는 것을 돕기 위해, 도 2는 상이한 유형의 메모리 디바이스(26)를 포함하는, 메모리 모듈(24)의 일례를 묘사한다. 특히, 메모리 모듈(24)은 하나 이상의 비휘발성 메모리 디바이스(32) 및 하나 이상의 휘발성 메모리 디바이스(34)를 포함한다. 일부 실시형태에서, 휘발성 메모리 디바이스(34)는 동적 랜덤 액세스 메모리(DRAM) 및/또는 정적 랜덤 액세스 메모리(SRAM)로서 구현될 수 있다. 즉, 이러한 실시형태에서, 메모리 모듈(24)은 하나 이상의 DRAM 디바이스(예컨대, 칩 또는 집적 회로), 하나 이상의 SRAM 디바이스(예컨대, 칩 또는 집적 회로), 또는 둘 모두를 포함할 수 있다.
부가적으로, 일부 실시형태에서, 비휘발성 메모리 디바이스(32)는 플래시(예컨대, NAND) 메모리, 상 변화(예컨대, 3D XPoint™) 메모리, 및/또는 강유전성 랜덤 액세스 메모리(FeRAM)로서 구현될 수 있다. 즉, 이러한 실시형태에서, 메모리 모듈(24)은 하나 이상의 NAND 메모리 디바이스, 하나 이상의 3D XPoint™ 메모리 디바이스, 또는 둘 모두를 포함할 수 있다. 실제로, 일부 실시형태에서, 비휘발성 메모리 디바이스(32)는 적어도 일부 사례에서, 예를 들면, 컴퓨팅 시스템(10)에서 다른 비휘발성 데이터 저장 디바이스를 제거함으로써 구현 연관 비용의 감소를 용이하게 할 수 있는 스토리지 클래스 메모리(storage class memory; SCM)를 제공할 수 있다.
임의의 경우에, 일부 실시형태에서, 메모리 모듈(24)은 비휘발성 메모리 디바이스(32) 및 휘발성 메모리 디바이스(34)의 각각을 인쇄 회로 기판(PCB)의 평평한(예컨대, 앞 및/또는 뒤, 평면) 표면에 배치함으로써 구현될 수 있다. 데이터 버스(25)를 통한 데이터 통신을 용이하게 하기 위해, 메모리 모듈(24)은 버스 인터페이스(36)를 포함할 수 있다. 예를 들면, 버스 인터페이스(36)는 인쇄 회로 기판의(예컨대, 하단) 에지를 따라 형성된 데이터 핀(예컨대, 접촉부)을 포함할 수 있다. 따라서, 일부 실시형태에서, 메모리 모듈(24)은 단일 인라인 메모리 모듈(SIMM), 듀얼 인라인 메모리 모듈(DIMM), 등일 수 있다.
부가적으로, 일부 실시형태에서, 버스 인터페이스(36)는 메모리 모듈(24)이 데이터 버스(25)에 구현된 통신 프로토콜을 통해 통신하는 것을 가능하게 하는 로직을 포함할 수 있다. 예를 들면, 버스 인터페이스(36)는 통신 프로토콜에 따라 메모리 모듈(24)로부터 데이터 버스(25)로 출력된 데이터의 타이밍을 제어하고/하거나 데이터 버스(25)로부터 메모리 모듈(24)에 입력된 데이터를 해석할 수 있다. 따라서, 일부 실시형태에서, 버스 인터페이스(36)는 DDR4(double data rate fourth-generation) 인터페이스, DDR5(double data rate fifth-generation) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, 비휘발성 듀얼 인라인 메모리 모듈(예컨대, NVDIMM-P) 인터페이스, 등일 수 있다.
임의의 경우에, 상기 설명된 바와 같이, 메모리 제어기(30)는 예를 들면, 메모리 모듈(24)에 구현된 메모리 유형에 의해 제공된 다양한 트레이드오프를 활용함으로써 데이터 액세스 속도 및/또는 데이터 저장 효율의 개선을 용이하게 하기 위해 메모리 모듈(24) 내의 데이터 저장을 제어할 수 있다. 따라서, 묘사된 예에서와 같이, 메모리 제어기(30)는 예를 들면, 인쇄 회로 기판에 형성된 전도성 트레이스를 통해 구현된 하나 이상의 내부 버스(37)(예컨대, 채널)를 통해 버스 인터페이스(36)와 메모리 디바이스(26) 사이에 결합될 수 있다. 예를 들면, 메모리 제어기(30)는 데이터 블록(28)이 비휘발성 메모리 디바이스(32)에 또는 휘발성 메모리 디바이스(34)에 저장되는지의 여부를 제어할 수 있다. 즉, 메모리 제어기(30)는 데이터 블록(28)을 비휘발성 메모리 디바이스(32)로부터 휘발성 메모리 디바이스(34)로 전송할 수 있거나 그 반대도 마찬가지이다.
데이터 전송을 용이하게 하기 위해, 메모리 제어기(30)는 예를 들면, 임시 데이터 저장을 제공하기 위해 버퍼 메모리(38)를 포함할 수 있다. 일부 실시형태에서, 버퍼 메모리(38)는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있고, 따라서 휘발성 메모리 디바이스(34) 및 비휘발성 메모리 디바이스(32)와 비교하여 더 빠른 데이터 액세스 속도를 제공할 수 있다. 버퍼 메모리(38)는 일부 경우에 DRAM 또는 FeRAM일 수 있다. 부가적으로, 저장된 데이터 블록(28)에 대한 액세스를 용이하게 하기 위해, 메모리 모듈(24)은 예를 들면, 버퍼 메모리(38), 비휘발성 메모리 디바이스(32), 휘발성 메모리 디바이스(34), 전용 주소 맵 메모리 디바이스(26), 또는 이들의 임의의 조합에 저장된 주소 맵을 포함할 수 있다.
게다가, 원격 컴퓨팅 디바이스(11)는 프로세싱 회로(22) 및/또는 데이터 버스(25)에 포함되거나 이로부터 분리된 서비스 프로세서 및/또는 서비스 버스와 통신할 수 있다. 서비스 프로세서, 프로세싱 회로(22), 및/또는 메모리 제어기(30)는 오류 검출 동작 및/또는 오류 정정 연산(ECC)을 수행할 수 있고, 원격 컴퓨팅 디바이스(11)의 전력이 손실되는 경우 오류 검출 및 오류 정정 연산이 계속될 수 있도록 원격 컴퓨팅 디바이스(11)로부터 외부에 배치될 수 있다. 설명의 단순성을 위해, 서비스 프로세서의 기능은 메모리 제어기(30)에 포함되어 이에 의해 수행되는 것으로서 설명되지만, 일부 실시형태에서 오류 정정 연산 또는 데이터 복구 동작이 서비스 프로세서, 프로세싱 회로(22), 또는 원격 컴퓨팅 디바이스(11) 또는 클라이언트 디바이스(12)의 내부 또는 외부에 위치된 부가적인 프로세싱 회로에 의해 수행된 기능으로서 구현될 수 있음에 유의해야 한다.
메모리 모듈(24)은 다양한 구성요소 또는 서브모듈을 포함하는 단일 디바이스로서 도 2에서 묘사된다. 일부 예에서, 그러나, 원격 컴퓨팅 디바이스는 메모리 모듈(24)을 구성하는 다양한 디바이스, 모듈, 및 구성요소와 동등한 하나 또는 몇몇 별개의 구성요소를 포함할 수 있다. 예를 들면, 원격 컴퓨팅 디바이스는 하나 또는 몇몇 상이한 칩 또는 기판에 배치되는 비휘발성 메모리, 휘발성 메모리, 및 제어기를 포함할 수 있다. 즉, 메모리 모듈(24)의 특징 및 기능은 본 명세서에서 설명된 이득을 성취하기 위해 단일 모듈에 구현될 필요는 없다.
도 3은 다이 레벨 RAIX 방식을 제공하기 위해 사용되는 메모리 모듈(24)의 일례의 블록도를 묘사한다. 메모리 모듈(24)은 각각이 패키지(52)에 특정한 양의 데이터를 저장하는 것으로서 표현된 Z개의 비휘발성 메모리 디바이스(32)를 포함하며, 여기서 패키지(52)는 다수의 메모리 다이(58)로 분리된다. 묘사된 예가 단지 예시적이고 제한하지 않는 것으로 의도됨을 인식해야 한다. 사실, 일부 실시형태에서, 다이 레벨 RAIX 방식은 비휘발성 메모리 디바이스(32) 당 임의의 수의 메모리 다이(58)를 사용하여 구현될 수 있다.
묘사된 다이 레벨 RAIX 방식에서, 패키지(52)는 일반적으로, 별개의 메모리 다이(58)로 분할된다. 예를 들면, 메모리 다이(58A1, 58B1, ... , 58X1)는 동일한 비휘발성 메모리 디바이스(32A) 및 동일한 패키지(52A)에 저장된다. 동작 동안, 메모리 제어기(30) 및/또는 프로세싱 회로(22)는 묘사된 비대칭 다이 레벨 RAIX 방식을 통해 메모리 모듈(24) 데이터를 보호하도록 동작할 수 있다. 다이 레벨 RAIX 방식에서, 각각의 메모리 다이(58)는 각각, 패리티 데이터를 생성하기 위해 XOR 논리 연산을 겪는 전체 패키지(52)와 반대로 XOR 논리 연산을 겪는다. 결과적인 패리티 데이터는 비휘발성 메모리 디바이스(32Z)의 메모리 다이(58XZ)에 저장된다. 패리티 데이터가 마지막 메모리 다이(58XZ)로서 묘사된 것에 저장되지만, 패리티 데이터가 저장되어야 하는 메모리 다이(58)에 대한 제한이 없음에 유의해야 한다. 즉, 예를 들면, 패리티 데이터는 메모리 다이(58AZ)에 또는 메모리 다이(58A1)에 저장될 수 있다. 비휘발성 메모리 디바이스(32Z)의 나머지 메모리 다이(58)는 여분의 메모리로서 할당될 수 있으며, 여기서 여분의 메모리 다이(58AZ, 58BZ, ... , 58WZ)는 연산 오버플로, 부가적인 데이터 저장, 논리 주소를 물리 주소로 변환하기 위해 메모리 제어기(30) 및/또는 프로세싱 회로(22)에 의해 사용된 정보, 등을 위해 사용될 수 있다.
일반적으로, 컴퓨팅 동작 동안, 클라이언트 디바이스(12)는 사용자, 소프트웨어, 또는 다른 구성요소로부터 입력을 수신하고, 입력에 응답하여 메모리 동작을 수행하는 것을 용이하게 하기 위해 메모리 모듈(24C)의 메모리 제어기(30)를 요청한다. 클라이언트 디바이스(12)는 이 요청을 명령어로서 발행할 수 있고 대응하는 데이터를 검색하거나 저장할 위치로부터 논리 주소를 나타낼 수 있다. 클라이언트 디바이스(12)는 그러나, 때때로 데이터가 분할되어 하나의 논리 주소를 통해 참조된 다수의 위치에 저장되기 때문에 대응하는 데이터가 저장되는 위치의 실제 물리 주소를 인식하지 못한다. 메모리 제어기(30)는 저장된 데이터에 적절하게 액세스하기 위해 이 명령어를 수신하고 논리 주소를 물리 주소로 변환할 수 있다. 변환을 수행하기 위해, 메모리 제어기(30)는 각각의 메모리 다이(58)에 저장된 부호워드에 저장된 메모리 동작 정보를 사용할 수 있다.
대응하는 데이터에 대한 물리 주소의 결정 시에, 메모리 제어기(30)는 각각의 메모리 다이(58)에 저장된 부호워드를 판독하도록 동작할 수 있거나 각각의 메모리 다이(58)에 부호워드를 기록하도록 동작할 수 있다. 메모리 제어기(30)는 또한, 클라이언트 디바이스(12)로부터의 요청된 동작을 완료하기 위한 이 판독/기록 동작의 일부로서 각각의 메모리 다이(58)에 저장된 데이터를 파싱(parsing)하거나 해석할 수 있다. 이 동작은 비휘발성 메모리 디바이스(32)를 메모리 제어기(30)에 통신 가능하게 결합하는 채널을 통해 수행된다. 이 동작은 비휘발성 메모리 디바이스(32)를 메모리 제어기(30)에 통신 가능하게 결합하는 채널을 통해 부호워드를 송신함으로써 수행된다.
메모리 제어기(30), 또는 다른 적합한 프로세싱 회로는 메모리 다이(58)에 저장된 패리티 데이터의 업데이팅을 용이하게 할 수 있다. 이것을 행하기 위해, 각각의 메모리 다이(58)에 대한 부호워드는 각각의 메모리 다이(58)에 대응하는 각각의 부호워드가 패리티 데이터에 반영될 때까지 후속 메모리 다이(58)의 데이터와 XOR된다. 메모리 제어기(30), 또는 다른 적합한 프로세싱 회로는 또한, 메모리 다이(58)에 저장된 데이터의 품질을 검증하는 것을 용이하게 할 수 있다. 일부 실시형태에서, 메모리 제어기(30)는 결과적인 패리티 데이터가 동일함을 검증하기 위해 부호워드의 XOR을 수행할 수 있다. 오류가 검출된 경우(예컨대, 패리티 데이터가 동일하지 않고 따라서, 결함이 있거나 불량 데이터에 기초하여 결정됨), 이것은 메모리 다이(58)가 물리적으로 오작동하고 있으며, 데이터 판독 또는 기록 오류가 오류 정정 부호(ECC) 기술이 수정될 수 있는 것 이상으로 발생했음, 등을 의미할 수 있다. 메모리 제어기(30)는 이벤트 또는 제어 신호에 응답하여, 판독, 기록, 또는 스크러빙 동작을 수행하는 것에 응답하여, 정의된 양의 시간 경과(예컨대, 패리티 데이터를 포함하는, 메모리 다이(58)의 데이터가 주기적으로 리프레시됨)에 응답하여, 또는 임의의 다른 적합한 표시 또는 이벤트에 응답하여 이 중복 동작을 수행할 수 있다.
상기 설명된 바와 같이, 컴퓨팅 시스템(10)의 묘사된 구성요소는 메모리 동작을 수행하기 위해 사용될 수 있다. 일부 실시형태에서, 다이 레벨 RAIX 방식은 메모리 동작 제어 흐름에 통합된다. 다른 실시형태에서, 다이 레벨 RAIX 방식은 특정한 표시, 신호, 이벤트, 등에 응답하여 주기적이거나 정의된 시간 간격으로 수행된다. 그러나, 특정 실시형태에서, 다이 레벨 RAIX 방식은 메모리 동작 동안 및 제어 신호에 응답하여 특정 시간에 둘 모두 수행된다. 따라서, 다이 레벨 RAIX 방식이 다양한 방식으로 메모리 동작에 통합될 수 있음을 이해해야 한다.
부호워드의 향상을 설명하는 것을 돕기 위해, 도 4는 메모리 제어기(30)에 의해 유지된 데이터 테이블(100)을 묘사한다. 데이터 테이블(100)은 각각의 부호워드에 대한 별개의 행(102)을 포함한다. 묘사된 바와 같이, 메모리 제어기(30)는 16개의 부호워드와 연관된 메모리 동작 정보를 유지하지만, 메모리 제어기(30)가 임의의 수의 부호워드에 대한 메모리 동작 정보를 유지할 수 있음을 이해해야 한다. 메모리 제어기(30)는 부호워드가 마지막으로 액세스된 때에 대응하는 타임스탬프의 표시(104), 부호워드가 저장으로서 사용하기 위해 프리한지 또는 프리하지 않은지의 여부의 표시(106)(예컨대, 1은 프리한 것에 대응하고 0은 프리하지 않음에 대응함), 부호워드가 저장을 위해 이용 가능하지 않은지 또는 데드인지의 여부의 표시(108)(예컨대, 1은 데드인 것에 대응하고 0은 데드가 아닌 것에 대응함), 및 특정한 부호워드와 연관된 액세스 카운트의 표시(110)를 유지하도록 동작한다. 묘사된 바와 같이, 행(102P)에 대응하는 부호워드는 행(102A)에 대응하는 부호워드보다 많은 횟수로 액세스되었다.
메모리 제어기(30)는 각각의 기록 이벤트, 판독 이벤트, 및 스크럽 이벤트 후에 데이터 테이블(100)의 메모리 동작 정보를 업데이트하도록 동작할 수 있다. 예를 들면, 각각의 기록 이벤트 후에, 액세스 카운트 표시(110)가 변경되고, 프리 표시(106)가 변경되며, 타임스탬프 표시(104)가 판독 이벤트와 연관된 특정한 부호워드에 대해 변경된다. 스크럽 이벤트로, 타임스탬프 표시(104)가 변경되는 것에 더하여, 각각의 액세스 카운트 표시(110)는 스크럽 이벤트 동안 각각의 부호워드가 개별적으로 판독 및 기록될 수 있기 때문에 동일한 증분(예컨대, 2의 카운트만큼 증가)만큼 증가할 수 있다. 메모리 제어기(30)는 프로세스(140) 내의 다양한 지점에서 데이터 테이블(100)의 다양한 표시를 유지할 수 있다. 예를 들면, 데이터 검증 후에(예컨대, 프로세스 블록(154)에서), 메모리 제어기(30)는 메모리 다이(58)의 부호워드가 동작가능하지 않거나 데드라고 결정하는 것에 응답하여 데드 표시(108)를 업데이트하도록 동작할 수 있다.
향상된 부호워드를 생성하기 위해, 메모리 제어기(30)는 메모리 다이(58)에 저장될 부호워드로서 송신된 데이터와 함께 행(102)의 데이터의 일부 또는 전부를 추가하거나 포함하도록 동작할 수 있다. 예를 들면, 제1 부호워드는 메모리 다이(58A1)(도 3)에 저장되도록 호스트에 의해 명령된 데이터 페이로드 또는 데이터 및 데이터 테이블(100)의 행(102E)으로부터의 데이터를 포함할 수 있다. 이 방식으로, 데이터 테이블(100)의 일부의 저장 및 유지는 비집중화되어 각각의 연관된 부호워드에 걸쳐 분산된다.
예시하는 것을 돕기 위해, 도 5는 각각의 메모리 다이(58)에 저장된 향상된 부호워드(120)를 포함하는 도 3의 메모리 모듈(24)의 일부의 개략적인 표현을 묘사한다. 각각의 향상된 부호워드(120)는 페이로드 데이터(122), 오류 정정 부호(ECC) 데이터(124), 메모리 동작 데이터(128), 및 논리 대 물리 데이터(130)를 포함한다. 페이로드 데이터(122)는 논리 주소를 통해 구체적으로 참조될 수 있는 메모리 다이(58)에 저장되도록 의도된 데이터를 표현한다. ECC 데이터(124)는 때때로 페이로드 데이터(122)에 대해 수행된 인코딩으로부터 발생하는 체크섬(checksum)과 같은, 송신 후의 페이로드 데이터(122)의 데이터 무결성을 검증하기 위한 중복 비트를 포함할 수 있다. 페이로드 데이터(122) 및 ECC 데이터(124)는 향상되지 않은 부호워드 및 향상된 부호워드(120)에 포함되는 데이터를 표현할 수 있다. 그러나, 메모리 동작 데이터(128) 및 논리 대 물리 데이터(130)는 향상되지 않은 부호워드에 포함된 데이터를 표현할 수 있어서 향상된 부호워드(120)를 야기한다.
상기 설명된 바와 같이, 향상된 부호워드(120)에서, 데이터 테이블(100)로부터의 메모리 동작 정보는 부호워드 메모리 동작 데이터(128)로서 각각의 향상된 부호워드(120)에 포함된다. 향상된 부호워드(120)와 함께 부호워드 메모리 동작 데이터(128)를 포함함으로써, 메모리 제어기(30)는 메모리 모듈(24)과 관련된 정보를 보존할 수 있으며, 이는 손실된 경우 메모리 모듈(24)을 전체적으로 또는 부분적으로 동작가능하게 만들 수 있다. 이 방식으로, 향상된 부호워드(120)가 메모리 다이(58)에 기록될 때마다, 메모리 동작 정보는 패리티 데이터를 통해 업데이트되고 백업된다.
향상된 부호워드(120D)를 데이터 테이블(100) 행(102D)과 비교하면, 데이터 테이블(100)로부터의 데이터가 향상된 부호워드(120D)에 포함된다는 것이 명백하다. 이 방식으로, 메모리 동작 동안 데이터를 저장하기 위해 사용된 각각의 메모리 다이(58)는 향상된 부호워드(120) 구조를 구현할 수 있다. 도시된 바와 같이, 메모리 다이(58B1)는 또한, 데이터 테이블(100)로부터의 데이터를 가지는 향상된 부호워드(120B)를 포함한다.
향상된 부호워드(120)를 포함하는 것은 부가적인 데이터가 메모리 동작 정보를 백업하기 위해 사용된 보호 커패시터의 양을 감소시키는 것을 용이하게 할 수 있기 때문에 메모리 기술을 개선할 수 있다. 각각의 부호워드에 일부 메모리 동작 정보를 저장함으로써, 더 적은 정보(예컨대, 데이터)가 데이터 손실 이벤트에 응답하여 백업되어야 하는 데이터 테이블(100)과 같은, 공통 데이터 테이블에서 메모리 제어기(30)에 의해 중앙에 유지되고 따라서, 메모리 지속성을 용이하게 하기 위해 더 적은 보호 커패시터가 사용될 수 있다. 이것은 비동기식 전력 손실 이벤트의 경우에 중요한 데이터를 비휘발성 메모리로 송신하는 것을 허가하기 위해 보호 커패시터가 적합한 시간 기간 동안 일시적으로 충분한 전력을 제공하기 때문에 발생한다. 따라서, 비동기식 전력 손실 이벤트의 경우에 비휘발성 메모리로 이동할 더 적은 데이터를 갖는 것은 보호 커패시터의 양의 감소 및 중요한 데이터를 보호하기 위해 사용된 커패시터 방전 시간의 전체 길이의 감소를 야기시킬 수 있다.
예시하는 것을 돕기 위해, 도 6은 메모리 모듈(24)의 메모리 동작 및 다이 레벨 RAIX 백업 방식을 제어하기 위한 프로세스(140)의 일례를 묘사한다. 일반적으로, 프로세스(140)는 호스트(예컨대, 프로세싱 회로(22) 및/또는 클라이언트 디바이스(12))로부터 메모리 동작 요청을 대기하고(프로세스 블록(142)), 호스트로부터 메모리 동작 요청을 수신하며(프로세스 블록(144)), 메모리 동작 요청이 스크럽 이벤트에 대응하는지를 결정하는(결정 블록(146)) 메모리 제어기(30)를 포함한다. 스크럽 이벤트에 대응하는 메모리 동작 요청에 응답하여, 메모리 제어기(30)는 스크럽 동작을 계속 수행하지만(프로세스 블록(148)), 스크럽 이벤트에 대응하지 않는 메모리 동작 요청에 응답하여, 메모리 제어기(30)는 메모리 동작 요청이 데이터 판독 이벤트에 대응하는지를 결정한다(결정 블록(150)). 데이터 판독 이벤트에 대응하지 않는 메모리 동작 요청에 응답하여, 메모리 제어기(30)는 패리티 데이터를 업데이트하고, 패리티 데이터를 기록을 위해 데이터의 세그먼트에 추가하고, 데이터의 세그먼트를 기록할 수 있으며(프로세스 블록(152)), 여기서 기록의 완료 후에, 메모리 제어기(30)는 호스트로부터 부가적인 메모리 동작 요청을 대기할 수 있다(프로세스 블록(142)). 그러나, 데이터 판독 이벤트에 대응하는 메모리 동작 요청에 응답하여, 메모리 제어기(30)는 대응하는 메모리 주소로부터 데이터의 세그먼트를 판독하고(프로세스 블록(154)) 데이터 오류가 발생했는지를 결정할 수 있다(결정 블록(156)). 데이터 오류가 발생하지 않았다고 결정하는 것에 응답하여, 메모리 제어기(30)는 호스트로부터 부가적인 메모리 동작 요청을 대기할 수 있지만(프로세스 블록(142)), 데이터 오류가 발생했다고 결정하는 것에 응답하여, 메모리 제어기(30)는 오류 정정 부호(ECC) 기술을 사용하여 오류를 해결하려고 시도하고(프로세스 블록(158)), 데이터 오류가 제거되는지의 여부를 결정할 수 있다(결정 블록(160)). 데이터 오류가 제거된다고 결정하는 것에 응답하여, 메모리 제어기(30)는 판독된 데이터를 호스트로 전송하고(프로세스 블록(162)), 호스트로부터 부가적인 메모리 동작 요청을 대기하기 위해 진행할 수 있다(프로세스 블록(142)). 그러나, 해결된 오류가 제로가 아니라고 결정하는 것에 응답하여, 메모리 제어기(30)는 불량 메모리 다이(58)를 결정하고(프로세스 블록(164)), 불량 메모리 다이(58)에 기초하여 XOR 논리 연산을 사용하여 손실된 데이터를 복구하고(프로세스 블록(166)), 복구된 데이터를 호스트로 전송하고(프로세스 블록(162)), 호스트로부터 부가적인 메모리 동작 요청을 대기하기 위해 진행할 수 있다(프로세스 블록(142)).
임의의 경우에, 상기 설명된 바와 같이, 메모리 제어기(30)는 자신의 호스트 디바이스로부터의 메모리 동작 요청을 대기할 수 있다(프로세스 블록(142)). 이 방식으로, 메모리 제어기(30)는 유휴 상태일 수 있고, 호스트 디바이스에 의해 개시된 판독 또는 기록 액세스 이벤트 사이에서 메모리 동작(예컨대, 판독, 기록)을 수행하지 않을 수 있다.
메모리 제어기(30)는 호스트로부터 메모리 동작 요청을 수신할 수 있고(프로세스 블록(144)) 수신된 메모리 동작 요청(예컨대, 데이터 판독 이벤트, 데이터 기록 이벤트, 데이터 스크럽 이벤트)에 응답하여 메모리 동작을 수행할 수 있다. 일부 실시형태에서, 메모리 동작 요청은 대응하는 논리 주소에 의해 요청된 데이터 블록(28) 또는 데이터의 세그먼트를 식별할 수 있다. 상기 설명된 바와 같이, 논리 주소에 의해 식별될 때, 메모리 제어기(30)는 논리 주소를 물리 주소로 변환할 수 있다. 이 물리 주소는 데이터가 실제로 메모리 모듈(24)에 저장되는 위치를 나타낸다. 예를 들면, 메모리 제어기(30)는 주소 맵, 룩업 테이블, 방정식 변환, 또는 논리 주소를 물리 주소로 변환하기 위한 임의의 적합한 방법을 사용할 수 있다. 프로세싱 회로(22)는 클라이언트 디바이스(12)와의 통신을 통해 다양한 메모리 동작 요청을 수신하지만, 일부 실시형태에서, 프로세싱 회로(22)는 클라이언트 디바이스(12)와 독립적으로 다양한 메모리 동작 요청을 개시할 수 있다. 이 메모리 동작 요청은 비휘발성 메모리 디바이스(32) 중 하나 이상으로부터 데이터를 검색, 또는 판독하기 위한 요청 또는 비휘발성 메모리 디바이스(32) 중 하나 이상으로 데이터를 저장, 또는 기록하기 위한 요청을 포함할 수 있다. 이 방식으로, 메모리 동작 동안, 메모리 제어기(30)는 호스트로부터 논리 주소를 수신할 수 있고, 논리 주소를 대응하는 데이터가 저장되어야 하는(예컨대, 기록 동작) 또는 저장되는(예컨대, 판독 동작) 위치를 나타내는 물리 주소로 변환할 수 있으며, 대응하는 물리 주소에 기초하여 대응하는 데이터를 판독하거나 기록하도록 동작할 수 있다.
메모리 동작 요청에 응답하여, 메모리 제어기(30)는 메모리 스크러빙 동작을 개시하기 위해 메모리 동작 요청이 데이터 스크럽 이벤트에 대응하는지를 결정할 수 있다(결정 블록(146)). 상기 설명된 바와 같이, 특정 유형의 메모리는 메모리 다이에 저장된 데이터 비트를 부호워드로서 나타내는 전기 신호를 리프레시하기 위해 주기적으로 판독되고 재기록될 수 있다. 예를 들면, 상 변화 메모리 또는 3D XPoint™ 메모리는 데이터 비트로서 저장된 전기 신호를 보존하는 것을 돕기 위해 주기적으로 스크러빙(예컨대, 판독 및 재기록)될 수 있다. 이 유형의 메모리는 시간 경과에 따라 전기 신호를 방전하고, 이는 주기적으로 리프레시되거나 스크러빙되지 않으면 데이터 무결성을 감소시킬 수 있다. 따라서, 메모리 제어기(30)는 프로세싱 회로(22)로부터 또는 스크럽 이벤트 사이의 주기적 간격을 관리하는 타이머로부터와 같은 다른 적합한 회로로부터 메모리 스크럽 요청을 수신하는 것에 응답하여 특정 유형의 메모리 다이(58)를 스크러빙하도록 동작할 수 있다. 메모리 제어기(30)가 메모리 동작 요청이 데이터 스크럽 이벤트에 대응한다고 결정하면, 메모리 제어기(30)는 메모리 스크러빙 동작을 수행할 수 있고(프로세스 블록(148)), 메모리 스크러빙 동작의 종료 시에, 계속해서 호스트로부터의 부가적인 메모리 동작 요청을 대기할 수 있다(프로세스 블록(142)).
그러나, 메모리 동작 요청이 데이터 스크럽 이벤트에 대응하지 않는다고 결정하는 것에 응답하여, 메모리 제어기(30)는 메모리 동작 요청이 데이터 판독 이벤트에 대응하는지를 결정할 수 있다(결정 블록(150)). 메모리 제어기(30)는 비휘발성 메모리 디바이스(32)에 저장된 데이터에 대한 변경을 확인할 수 있고/있거나 각각의 데이터 기록 후에 비휘발성 메모리 디바이스(32)에 저장된 데이터가 변경되는 것으로 가정함으로써 동작할 수 있다. 따라서, 메모리 제어기(30)는 일반적으로, 데이터 기록 이벤트가 발생했는지의 여부를 결정하고, 여기서 데이터 기록 이벤트는 메모리 다이(58) 중 임의의 하나에 저장된 부호워드의 데이터를 변경한다. 이 결정은 메모리 다이(58)에 저장된 패리티 데이터를 관련 있고/있거나 정확하게 유지하는 것을 용이하게 하기 위해 수행된다.
메모리 동작 요청이 데이터 기록 이벤트에 대응하는 경우(예컨대, 데이터 판독 이벤트가 아님), 메모리 제어기(30)는 업데이트된 메모리 동작 정보 및 패리티 비트를 기록될 부호워드에 추가할 수 있고 데이터의 세그먼트를 메모리에 기록할 수 있다(프로세스 블록(152)). 이 패리티 비트는 사소한 송신 오류를 해결하기 위해 미래의 오류 정정 부호 동작에서 사용될 수 있다(예컨대, 프로세스 블록(158)에서). 메모리 제어기(30)는 또한, 향상된 부호워드(120) 내에 저장된 메모리 동작 정보를 업데이트할 수 있다. 프로세스 블록(156)과 유사하게, 메모리 제어기(30)는 데이터 테이블(100) 내에 저장된 메모리 동작 정보를 업데이트하고 업데이트된 데이터를 향상된 부호워드(120)에 추가할 수 있거나, 저장을 위해 향상된 부호워드(120) 내에 이미 존재하는 메모리 동작 정보를 직접적으로 업데이트할 수 있다. 향상된 부호워드(120D)를 일례로서 사용하여, 기록 이벤트에 응답하여, 메모리 제어기(30)는 액세스 시간(예컨대, 기록 시간)을 반영하기 위해 미리 결정된 값(예컨대, 1)만큼 값을 증가시킴으로써 액세스 카운트 표시(110D)를 업데이트할 수 있고 타임스탬프 표시(104D)를 업데이트할 수 있다. 일부 실시형태에서, 타임스탬프 표시(104D)는 향상된 부호워드(120)를 메모리 다이(58)에 실제로 저장하기 위해 메모리 제어기(30)에 의해 걸린 시간에 대응하는 미래의 미리 결정된 양의 시간(예컨대, 기록의 예측된 시간)을 반영하도록 업데이트된다.
게다가, 메모리 제어기(30)는 변경된 부호워드를 반영하기 위해 패리티 데이터를 업데이트할 수 있다. 메모리 모듈(24)의 메모리 제어기(30)는 메모리 다이(58)의 각각에 대해 XOR 논리 연산을 수행할 수 있고 XOR 결과를 업데이트된 패리티 데이터로서 패리티 데이터 메모리 다이(58)(예컨대, 메모리 다이(58XZ))에 저장할 수 있다. 일부 실시형태에서, 메모리 제어기(30)는 XOR 결과가 각각의 메모리 다이(58)의 XOR 및 여분의 메모리에 저장된 데이터를 표현하도록, XOR 논리 연산으로 여분의 메모리에 저장된 데이터를 포함할 수 있다. 일부 실시형태에서, 메모리 제어기(30)가 패리티 데이터의 업데이트를 요청하기 위해 타이머가 최소 패리티 데이터 업데이트 간격을 추적하는 것 또는 클라이언트 디바이스(12)로부터 송신된 표시에 응답하여 생성된 표시를 수신하는 것에 응답하여 패리티 데이터를 업데이트함에 유의해야 한다. 이 실시형태에서, 메모리 제어기(30)가 데이터 기록 동작에 단지 응답하는 것보다 자주 패리티 데이터를 업데이트하는 것이 바람직할 수 있으며, 따라서 메모리 제어기(30)가 메모리 동작 요청이 데이터 판독 이벤트에 대응하는지를 결정함으로써, 메모리 제어기(30)는 예를 들면, 추적된 시간 간격에 기초한 요청을 포함하는 데이터 판독 이벤트에 대응하는 것을 제외하고 각각의 메모리 동작 요청에 응답하여 패리티 데이터를 업데이트할 수 있다. 부호워드를 메모리에 추가하고 기록할 때, 메모리 제어기(30)는 호스트로부터 부가적인 메모리 동작 요청을 수신하기 위해 대기할 수 있다(프로세스 블록(142)).
그러나, 메모리 동작 요청이 데이터 판독 이벤트에 대응한다고 결정하는 것에 응답하여, 메모리 제어기(30)는 대응하는 메모리 주소에서 데이터의 세그먼트를 판독하고 메모리 동작 정보를 업데이트할 수 있다(결정 블록(154)). 메모리 동작 요청은 메모리의 원하는 세그먼트가 저장되는 논리 주소를 포함한다. 메모리 제어기(30)는 메모리 동작 요청에 응답하여 표시된 논리 주소에서 메모리의 원하는 세그먼트를 검색할 수 있다(예컨대, 변환된 물리 주소를 참조하고 대응하는 메모리 다이(58)로부터 데이터의 세그먼트를 검색하도록 동작시키는 것을 통해). 메모리 제어기(30)는 메모리 동작 정보로서 저장된 데이터를 직접적으로 증가, 변경, 또는 감소시키는 것을 포함하는 다양한 방식으로 메모리 동작 정보를 업데이트하도록 동작할 수 있다. 향상된 부호워드(120B)를 일례로서 사용하여, 메모리 제어기(30)는 미리 결정된 양(예컨대, 1)만큼 액세스 표시(110B)를 증가시킬 수 있고 액세스 시간(예컨대, 판독 시간)을 반영하기 위해 타임스탬프 표시(104B)를 업데이트할 수 있다.
데이터의 세그먼트를 판독한 후에, 메모리 제어기(30)는 데이터가 정확한지(예컨대, 결함이 없는지)를 결정할 수 있다(결정 블록(156)). 메모리 제어기(30)는 판독된 향상된 부호워드(120)가 메모리 다이(58)에 저장된 패리티 데이터로 처음에 표현된 것과 동일한 방식인지를 검증함으로써 데이터가 정확한지를 확인하기 위해 다양한 데이터 검증 기술을 수행할 수 있다. 이 데이터 검증 기술은 메모리 모듈(24)과 연관된 물리 및 디지털 결함 둘 모두의 검출을 용이하게 할 수 있다. 이 결함은 데이터 기록 오류, 물리 메모리 다이(58)와 연관된 기계적 결함, 비휘발성 메모리 디바이스(32)와 연관된 기계적 결함, 등과 같은 문제를 포함할 수 있다. 데이터를 검증하기 위해, 예를 들면, 메모리 제어기(30)는 데이터 판독 이벤트에 응답하여 판독된 향상된 부호워드(120)가 손상되지 않고 정확한지를 결정하도록 XOR 검증을 사용하기 위해 진행할 수 있다. 이것을 행하기 위해, 메모리 모듈(24)의 메모리 제어기(30)는 부가적인 XOR 결과를 결정하기 위해, 각각의 메모리 다이(58)의 향상된 부호워드(120), 및 일부 실시형태에서 각각의 메모리 다이(58) 및 여분의 메모리의 데이터를 XOR할 수 있다. 부가적인 XOR 결과의 산출 시에, 메모리 제어기(30)는 XOR 결과가 동일한지를 결정할 수 있다. 메모리 모듈(24)의 메모리 제어기(30)는 XOR 결과가 동일하거나 실질적으로 유사한지를 결정하기 위해(예컨대, 결과가 동일한 것으로 간주되도록 유사성의 임계치 내에서) 메모리 다이(58)에 저장된 패리티 데이터와 부가적인 XOR 결과를 비교할 수 있다.
XOR 결과가 동일하고 따라서 판독된 데이터가 정확한지를(예컨대, 어떠한 데이터 오류도 발견되지 않음) 결정하는 것에 응답하여, 메모리 제어기(30)는 호스트로부터 부가적인 메모리 동작 요청을 대기하기 위해 진행할 수 있다(프로세스 블록(142)). 그러나, XOR 결과가 동일하지 않고 따라서, 판독된 데이터가 부정확하다고 결정하는 것에 응답하여(예컨대, 데이터 오류가 발견됨), 메모리 제어기(30)는 오류 정정 부호(ECC) 기술을 사용하여 데이터 오류를 해결하려고 시도할 수 있다(프로세스 블록(158)). 오류 정정 부호 기술은 판독한 후에, 사소한 데이터 손상이 발생하더라도 데이터의 원래 세그먼트가 여전히 복구될 수 있도록 데이터의 세그먼트에 중복 패리티 데이터를 부가하는 것을 포함할 수 있다. 데이터 오류가 컨볼루션 부호 및 블록 부호 방법과 같은 사소한 송신 문제에 의해 야기되지 않음을 검증하기 위해 이 예비 품질 제어 단계를 수행하는 광범위한 유효 방식이 존재한다.
오류 정정 부호 기술로 데이터 오류를 해결하려고 시도한 후에, 메모리 제어기(30)는 데이터 오류가 정정으로부터 제거되었는지를 결정할 수 있다(결정 블록(160)). 메모리 제어기(30)가 오류 정정 부호 기술을 구현한 후에 오류가 제로와 같다고 결정하면, 메모리 제어기(30)는 또 다른 프로세싱 및/또는 컴퓨팅 활동에서 사용하기 위해 판독 데이터를 호스트 디바이스로 전송할 수 있다. 판독 데이터의 송신 후에, 메모리 제어기(30)는 호스트로부터 부가적인 메모리 동작 요청을 대기한다(프로세스 블록(144)).
그러나, 메모리 제어기(30)가 데이터 오류가 제거되지 않는다고 결정하면(예컨대, 오류가 제로와 같지 않음), 메모리 제어기(30)는 메모리 다이(58) 중 어느 것이 결함이 있거나 불량인지를 결정하기 위해 진행할 수 있다(프로세스 블록(164)). 메모리 제어기(30)는 기록 또는 판독 동작을 테스트하기 위한 메모리 다이(58) 응답의 체계적인 테스팅과 같은, 어느 메모리 다이(58)가 불량인지를 결정하기 위해 다양한 결정 활동을 수행할 수 있다. 또한, 일부 실시형태에서, 메모리 제어기(30)는 클라이언트 디바이스(12)에 데이터 오류를 전달하고 클라이언트 디바이스(12)의 사용자로부터 발생하는 표시와 같은 표시를 호스트로부터 수신할 수 있어서, 어느 메모리 다이(58)가 결함이 있거나 불량인지를 전달한다.
메모리 제어기(30)가 어느 메모리 다이(58)가 불량인지를 결정하는 경우, 메모리 제어기(30)는 불량 메모리 다이(58)에 응답하여 패리티 데이터를 사용하여 손실된 데이터를 복구할 수 있다(프로세스 블록(166)). 메모리 제어기(30)는 XOR 논리 연산의 역을 수행함으로써 손실된 데이터를 복구할 수 있다. 즉, 메모리 제어기(30)는 불량 메모리 다이(58) 데이터를 XOR하지 않고 패리티 데이터를 포함하여 메모리 다이(58)의 각각을 XOR할 수 있다. 예를 들면, 메모리 다이(58A2)가 불량이라고 가정하면 - 메모리 제어기(30)는 메모리 다이(58A2)의 손실된 데이터를 재생성하기 위해 메모리 다이(58A2)의 데이터를 패리티 데이터로 대체 및 불량 메모리 다이(58A2)의 데이터를 XOR하지 않고 메모리 다이(58C)의 손실된 데이터를 결정하기 위해 메모리 다이(58)의 전부를 XOR한다(예컨대, 메모리 다이(58A2)의 손실된 데이터를 결정하기 위해 메모리 다이(58)의 패리티 데이터와 XOR된 메모리 다이(58B2)의 데이터와 XOR된 메모리 다이(58A1)의 데이터). 또한, 일부 실시형태에서, 메모리 제어기(30)는 프로세싱 회로(22), 또는 다른 적합한 프로세싱 회로로부터 진행 표시를 수신하는 것에 응답하여 이 복구 동작을 수행한다. 이 방식으로, 이 실시형태에서, 메모리 제어기(30)는 물리적 수리가 수행될 때까지 손실된 데이터를 복구하기 위해 대기할 수 있다.
손실된 데이터의 복구 시에, 메모리 제어기(30)는 복구된 데이터를 호스트로 송신하고(프로세스 블록(162)) 부가적인 메모리 동작 요청을 대기하기 위해 진행할 수 있다(프로세스 블록(142)). 메모리 제어기(30)는 패리티 데이터를 최신 상태로 유지하고, 비휘발성 메모리 디바이스(32) 내에 저장된 데이터 품질을 모니터링하고/하거나, 데이터 손실의 경우에 복구 동작을 수행하기 위해 프로세스(140)를 계속할 수 있다.
프로세스 블록(148)과 관련하여 상기 설명된 바와 같이, 메모리 제어기(30)는 상이한 유형의 메모리 다이(58) 내에 저장된 데이터 예를 들면, 메모리 스크러빙 동작을 유지하거나, 이에 액세스하거나, 이와 일반적으로 상호작용하기 위해 상이한 메모리 동작을 사용할 수 있다. 도 7은 메모리 제어기(30)가 데이터 스크럽 이벤트에 대응하는 메모리 동작 요청을 수신하는 것에 응답하여 향상된 부호워드(120)를 업데이트하기 위한 프로세스(170)의 일례를 묘사한다. 프로세스(170) 다음에 스크럽 동작을 수행하기 위해 프로세스(140)의 프로세스 블록(148)에서 메모리 제어기(30)가 이어질 수 있다. 일반적으로, 프로세스(170)는 메모리 제어기(30)가 제1 향상된 부호워드(120)를 판독하는 것(프로세스 블록(174)), 판독 및 기록 동작 둘 모두를 위해 제1 향상된 부호워드(120)의 메모리 동작 정보를 업데이트하는 것(프로세스 블록(176)), 제1 향상된 부호워드(120)를 메모리 다이(58)에 저장하는 것(프로세스 블록(178)), 스크러빙할 부가적인 부호워드가 존재하는지의 여부를 결정하는 것(결정 블록(180)), 및 부가적인 부호워드가 존재하는 경우, 다음 향상된 부호워드(120)를 판독함으로써 프로세스(170)를 계속하는 것(프로세스 블록(182)) 또는 부가적인 부호워드가 존재하지 않는 경우, 프로세스(140)의 프로세스 블록(144)으로부터의 메모리 동작으로 계속하는 것을 포함한다.
상기 설명된 바와 같이, 메모리 제어기(30)는 프로세스(140)를 수행하면서, 메모리 스크러빙 동작을 개시하기 위해 프로세싱 회로(22)로부터 데이터 스크럽 이벤트에 대응하는 메모리 동작 요청을 수신할 수 있다(프로세스 블록(144) 및 프로세스 블록(146)). 프로세싱 회로(22)는 메모리 스크러빙 동작을 시작하도록 메모리 제어기(30)에 통신하기 위해 데이터 스크럽 이벤트를 사용할 수 있다. 특정 유형의 메모리는 메모리에 저장된 데이터 비트를 나타내는 전기 신호를 리프레시하기 위해 주기적으로 판독되고 재기록될 수 있다. 예를 들면, 상 변화 메모리 또는 3D XPoint™ 메모리는 데이터 비트로서 저장된 전기 신호를 보존하는 것을 돕기 위해 주기적으로 스크러빙(예컨대, 판독 및 재기록)될 수 있다. 이 유형의 메모리는 시간 경과에 따라 전기 신호를 방전할 수 있고, 이는 주기적으로 리프레시되거나 스크러빙되지 않으면, 데이터 무결성을 감소시킬 수 있다. 따라서, 메모리 제어기(30)는 프로세싱 회로(22)로부터 또는 스크럽 이벤트 사이의 주기적 간격을 관리하는 타이머로부터와 같은 다른 적합한 회로로부터 메모리 스크럽 요청을 수신하는 것에 응답하여 특정 유형의 메모리 다이(58)를 스크러빙하도록 동작할 수 있다.
데이터 스크럽 이벤트를 수신한 후에, 메모리 제어기(30)는 메모리 다이(58)로부터 제1 향상된 부호워드(120)를 판독할 수 있다(프로세스 블록(174)). 메모리 제어기(30)는 판독 동작의 일부로서 프로세싱 회로(22)로의 송신을 위해 물리 전기 신호를 논리 비트로 변환할 수 있다. 판독하기 위해, 메모리 제어기(30)는 프로세싱 회로(22)로의 송신을 위해 메모리 다이(58)로부터 전체 향상된 부호워드(120)를 검색할 수 있다. 일부 실시형태에서, 판독된 향상된 부호워드(120)는 프로세스(170)가 계속되는 동안 예를 들면, 메모리 제어기(30)와 연관된 휘발성 메모리에 일시적으로 저장될 수 있다.
제1 향상된 부호워드(120)를 판독한 후에, 메모리 제어기(30)는 스크럽 이벤트 동안 수행된 판독 및 기록 동작 둘 모두를 위해 제1 향상된 부호워드(120)의 메모리 동작 정보를 업데이트할 수 있다(프로세스 블록(176)). 메모리 제어기(30)는 프로세스 블록(174)의 판독 동작에 응답하고 프로세스 블록(178)의 기록 동작을 예상하여 액세스 카운트 표시(110)에 대한 값을 증가시킬 수 있다. 따라서, 액세스 카운트 표시(110)는 판독 또는 기록 동안 액세스 카운트 표시(110) 값이 증가함에 따라 스크럽 이벤트 동안 2배만큼 증가할 수 있다. 타임스탬프 표시(104)는 액세스 시간(예컨대, 판독 또는 기록 시간) 또는 예측된 기록 시간을 반영하도록 업데이트될 수 있다.
제1 향상된 부호워드(120)의 메모리 동작 정보를 업데이트한 후에, 메모리 제어기(30)는 제1 향상된 부호워드(120)를 다시 메모리 다이(58)에 저장할 수 있다(프로세스 블록(178)). 각각의 향상된 부호워드(120)는 판독된 향상된 부호워드(120)가 동일한 메모리 다이(58) 또는 상이한 메모리 다이(58)에 기록되도록 메모리 다이(58)에 대응할 수 있다. 메모리 제어기(30)는 메모리 다이(58)에 대응하는 채널을 통해 제1 향상된 부호워드(120)를 송신할 수 있다. 일례로서, 향상된 부호워드(120B)는 메모리 다이(58B1)에 저장되고 메모리 제어기(30)는 메모리 동작 동안 향상된 부호워드(120B)를 메모리 다이(58B2)에 저장하지 않을 수 있다. 메모리 제어기(30)는 스크럽 이벤트 동안 원래 페이로드에 대응하는 데이터 및 향상된 부호워드(120)의 업데이트된 메모리 동작 정보를 저장한다.
향상된 부호워드(120)를 메모리 다이(58)에 저장 시에, 메모리 제어기(30)는 부가적인 향상된 부호워드(120)가 스크러빙되어야 하는지를 결정할 수 있다(결정 블록(180)). 메모리 제어기(30)는 예를 들면, 스크러빙할 향상된 부호워드(120)의 예상된 수의 표시 및 카운터를 유지하는 다양한 방식으로 이 결정을 수행할 수 있다. 이 확인은 메모리 제어기(30)가 메모리 스크러빙 동작이 완료되었는지(예컨대, 각각의 메모리 다이(58)가 리프레시되었는지)를 결정하는 것을 가능하게 한다.
메모리 제어기(30)가 스크러빙될 부가적인 향상된 부호워드(120)가 존재한다고 결정하면, 메모리 제어기(30)는 부가적인 향상된 부호워드(120)(예컨대, 다음 향상된 부호워드(120))를 판독할 수 있다. 메모리 제어기(30)는 프로세스 블록(174)에서 판독된 제1 향상된 부호워드(120)에서와 유사한 방식으로 부가적인 향상된 부호워드(120)를 판독할 수 있다. 부가적인 향상된 부호워드(120)를 판독한 후에, 메모리 제어기(30)는 부가적인 향상된 부호워드(120)의 메모리 동작 정보를 업데이트하기 위해 프로세스 블록(176)에서 프로세스(170)를 계속한다.
메모리 제어기(30)가 스크러빙될 부가적인 향상된 부호워드(120)가 존재하지 않는다고 결정하면, 메모리 제어기(30)는 데이터 기록 또는 데이터 변경 이벤트가 발생했는지의 여부를 결정하기 위해 프로세스(170)를 계속할 수 있다(프로세스 블록(144)). 데이터 기록 이벤트가 프로세스 블록(178)에서 발생했기 때문에, 메모리 제어기(30)는 대응하는 메모리 다이(58)에 저장된 새로운 데이터를 향상된 부호워드(120)로 백업하도록 동작한다.
메모리 스크러빙 동작 동안, 메모리 다이(58)로부터 판독되었지만 아직 메모리 다이(58)에 다시 기록되지 않은(예컨대, 프로세스 블록(174 및 178) 사이) 향상된 부호워드(120)는 이동 중인 데이터(inflight data)로 간주된다. 데이터가 이동 중인 동안 비동기 전력 손실 이벤트가 발생하면, 메모리 제어기(30)는 메모리 스크러빙 동작을 양보(예컨대, 중단)하지 않고 데이터를 보존하기 위해 이동 중인 향상된 부호워드(120)를 여분의 메모리 다이(58)로 다시 보낼 수 있다. 또한, 일부 실시형태에서, 메모리 제어기(30)는 데이터 테이블(100)과 유사한 데이터 테이블과 같은, 휘발성 메모리로부터의 공통 데이터를 여분의 메모리 다이(58)에 저장할 수 있다. 비동기 전력 손실 이벤트에 응답하여 발생하는 이 동작은 하나 이상의 보호 커패시터가 방전되는 동안 발생할 수 있고 - 따라서, 비동기식 전력 손실 이벤트에 응답하여 저장할 더 적은 데이터를 갖고, 따라서 이 예상치 못한 전력 손실 상황에서 더 빠른 백업 동작을 허가하는 것은 메모리 및 메모리 중복 기술을 개선할 수 있다.
일부 실시형태에서, 메모리 스크럽 요청은 디바이스 동작 조건에 응답하여 프로세싱 회로(22) 또는 다른 적합한 회로에 의해 생성될 수 있다. 이 디바이스 동작 조건은 동작 온도, 측정된 온도(예컨대, 관심있는 구성요소 예를 들면, 온도 변화에 특히 민감한 구성요소의), 이용량, 동작 주기의 양, 등을 포함할 수 있다.
또한, 일부 실시형태에서, 프로세싱 회로(22) 및/또는 클라이언트 디바이스(12)는 향상된 부호워드(120)와 연관된 메모리 동작 데이터(128)를 해석하고/하거나 프로세싱할 수 있다. 상기 설명된 바와 같이, 액세스 카운트 표시(110)와 같은, 메모리 동작 데이터(128)와 연관된 정보는 메모리 모듈(24), 비휘발성 메모리 디바이스(32), 패키지(52), 또는 메모리 다이(58) 상태를 결정하기 위해 상관되거나 그렇지 않으면 분석될 수 있다. 프로세싱 회로(22) 및/또는 클라이언트 디바이스(12)는 수명, 기능의 지속기간, 또는 열거된 메모리 구성요소의 각각과 연관된 임의의 다른 적합한 데이터 분석 프로세스를 예측하기 위해 메모리 동작 데이터(128)를 또한 참조할 수 있다.
게다가, 일부 실시형태에서, 메모리 제어기(30)는 특정 메모리 다이(58)에 저장된 부호워드가 메모리 동작 동안 변경되었다고 결정하는 것에 응답하는 것과 같은 메모리 변경 이벤트에 응답하여 다양한 백업 동작을 수행할 수 있다. 이 방식으로, 메모리 동작 요청은 메모리 다이(58)에 저장된 부호워드(120)에 대한 변경을 야기할 수 있고, 변경을 식별하는 것에 응답하여, 메모리 제어기(30)는 동작을 개시하거나 수행할 수 있다. 따라서, 메모리 제어기(30)는 패리티 데이터가 업데이트되어야 하는지를 결정하기 위해 메모리 동작 요청을 해석하는 대신에(또는 이에 더하여) 패리티 데이터를 업데이트하는 것을 시작하도록 부호워드(120)가 변경되었다고 결정할 수 있다.
따라서, 본 발명의 기술적 효과는 메모리 동작 정보의 데이터 손실에 대해 보호하기 위해 개선된 중복 동작을 용이하게 하는 것을 포함한다. 이 기술은 메모리 동작 정보를 포함하도록 메모리 다이에 저장된 부호워드를 향상시키고, 페이로드 데이터에 더하여 메모리 동작 정보를 백업하는 패리티 데이터를 생성하며, 다이 레벨에서 모두, 데이터 손실의 경우에 메모리 동작 정보를 포함하는 데이터를 복구하기 위한 시스템 및 방법을 설명한다. 본 발명은 또한, 예를 들면, 메모리 다이와 연관된 액세스 카운트가 메모리 다이에 대한 전체 수명 예측기에 대응할 수 있고 메모리 다이의 상태와 상관될 수 있기 때문에, 호스트 디바이스가 메모리 모듈의 상태 및/또는 성능을 모니터링하는데 메모리 동작 정보를 사용할 수 있음을 설명한다.
상기 설명된 특정 실시형태는 예로서 도시되었으며, 이 실시형태가 다양한 수정 및 대안적인 형태에 영향을 받기 쉬울 수 있음을 이해해야 한다. 청구항이 개시된 특정한 형태로 제한되는 것이 아니라, 오히려 본 발명의 사상 및 범위 내에 있는 모든 수정, 등가물, 및 대안을 포함하도록 의도됨을 더 이해해야 한다.
본 명세서에서 제공되고 청구된 기술은 본 기술 분야를 명백히 개선하고, 이와 같이 추상적이거나 무형적이거나 순전히 이론적이지 않은 실질적인 본질의 물질적 객체 및 구체적인 예에 참조되고 적용된다. 게다가, 본 명세서의 끝에 추가된 임의의 청구항이 "...[기능]을 [수행]하기 위한 수단" 또는 "...[기능]을 [수행]하기 위한 단계"로서 지정된 하나 이상의 요소를 포함하는 경우, 이러한 요소가 35 U.S.C. 112(f) 하에서 해석되어야 함이 의도된다. 그러나, 임의의 다른 방식으로 지정된 요소를 포함하는 임의의 청구항에 대해, 이러한 요소가 35 U.S.C. 112(f) 하에서 해석되지 않아야 함이 의도된다.

Claims (20)

  1. 장치로서,
    인쇄 회로 기판;
    상기 인쇄 회로 기판의 평면 표면에 각각의 배치된 복수의 메모리 디바이스로서, 상기 복수의 메모리 디바이스의 각각의 메모리 디바이스는 2개 이상의 메모리 다이를 포함하는, 상기 복수의 메모리 디바이스;
    각각의 메모리 디바이스에 통신 가능하게 결합된 복수의 채널로서, 상기 복수의 채널의 각각의 채널은 각각의 메모리 디바이스의 상기 2개 이상의 메모리 다이 중 하나와 연관되는, 상기 복수의 채널; 및
    상기 복수의 채널에 통신 가능하게 결합된 메모리 제어기를 포함하되, 상기 메모리 제어기는 상기 복수의 채널을 통한 데이터 송신을 통해 중복 방식을 유지하도록 구성되고, 상기 메모리 제어기는 각각의 2개 이상의 메모리 다이의 제1 메모리 다이에 패리티 데이터를 기록하도록 구성되고, 상기 메모리 제어기는 각각의 메모리 디바이스의 각각의 메모리 다이와 연관된 각각의 부호워드에 적어도 부분적으로 기초하여 상기 패리티 데이터를 생성하도록 구성되며, 상기 메모리 제어기는 각각의 메모리 동작 요청에 응답하여 메모리 동작 정보를 업데이트하고 각각의 부호워드에 추가하도록 구성되는, 장치.
  2. 제1항에 있어서, 각각의 부호워드는,
    페이로드 데이터; 및
    상기 패리티 데이터를 수반한 메모리 동작을 나타내는 데이터
    를 포함하는, 장치.
  3. 제1항에 있어서, 상기 패리티 데이터는 상기 2개 이상의 메모리 다이의 각각 내에 저장된 값의 표시를 포함하는, 장치.
  4. 제1항에 있어서, 상기 메모리 동작 요청은 메모리 기록 동작, 메모리 스크러빙 동작(memory scrubbing operation), 또는 시간 주기 경과에 응답하여 생성된 표시, 또는 이들의 임의의 조합 중 적어도 하나를 포함하는, 장치.
  5. 제1항에 있어서, 상기 메모리 제어기는 상기 2개 이상의 메모리 다이 중 하나와 연관된 상기 채널 중 하나로 송신된 메모리 동작 데이터에 적어도 부분적으로 기초하여 상기 패리티 데이터를 생성하도록 구성되는, 장치.
  6. 제1항에 있어서, 상기 메모리 제어기는 상기 2개 이상의 메모리 다이 중 하나에 상기 패리티 데이터를 기록하도록 구성되는, 장치.
  7. 제1항에 있어서, 상기 2개 이상의 메모리 다이의 각각의 메모리 다이는 플래시 메모리, NAND 메모리, 상 변화 메모리, 3D XPoint™ 메모리, 또는 강유전성 랜덤 액세스 메모리, 또는 이들의 임의의 조합 중 적어도 하나를 포함하는, 장치.
  8. 제1항에 있어서, 상기 메모리 제어기는 상기 복수의 메모리 디바이스의 각각의 메모리 디바이스에 저장된 데이터를 표현하는 상기 패리티 데이터를 생성하기 위해 다이 레벨 배타적 논리합(XOR) 논리 연산을 사용하도록 구성되는, 장치.
  9. 제8항에 있어서, 상기 메모리 제어기는,
    상기 2개 이상의 메모리 다이의 제1 메모리 다이가 데이터 손실 이벤트와 연관된 결함이 있는 데이터를 포함한다고 결정하고;
    상기 제1 메모리 다이를 제외하는 상기 2개 이상의 메모리 다이의 서브세트로 상기 패리티 데이터를 XOR하여 XOR 결과를 생성하고; 그리고
    상기 XOR 결과를 상기 제1 메모리 다이에 대응하는 재생성된 데이터로서 송신하도록 구성되되, 상기 재생성된 데이터는 상기 데이터 손실 이벤트 전에 상기 제1 메모리 다이에 저장된 데이터와 같은, 장치.
  10. 방법으로서,
    복수의 다중 다이 패키징된 메모리 디바이스를 포함하는 모듈의 메모리 디바이스의 제1 메모리 다이에 저장된 부호워드에 대한 변경을 식별하는 단계로서, 상기 부호워드는 상기 제1 메모리 다이와 연관된 최신의 액세스 데이터 및 액세스 카운트 데이터를 포함하는, 상기 식별하는 단계;
    상기 부호워드에 대한 상기 식별된 변경에 응답하여, 상기 부호워드에 대한 XOR 논리 연산을 사용하여 배타적 논리합(XOR) 결과를 생성하는 단계;
    상기 XOR 결과를 패리티 데이터로서 상기 메모리 디바이스의 제2 메모리 다이에 기록하는 단계;
    상기 메모리 디바이스의 제1 메모리 다이가 데이터 오류를 경험했다고 결정하는 단계; 및
    상기 메모리 디바이스의 제2 메모리 다이로부터의 상기 패리티 데이터에 대한 상기 XOR 논리 연산의 역을 사용하여 상기 부호워드를 복원하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    데이터 판독 이벤트, 데이터 기록 이벤트, 또는 데이터 스크럽 이벤트(data scrub event) 중 적어도 하나를 식별하는 단계를 포함하고, 상기 부호워드에 대한 상기 변경은 상기 데이터 판독 이벤트, 상기 데이터 기록 이벤트, 상기 데이터 스크럽 이벤트, 또는 이들의 임의의 조합에 적어도 부분적으로 기초하는, 방법.
  12. 제10항에 있어서, 상기 XOR 논리 연산을 수행하는 단계는 하나 이상의 부가적인 부호워드의 각각이 상기 XOR 결과를 생성하기 위해 한 번 XOR하는 것을 겪도록 상기 복수의 다중 다이 패키징된 메모리 디바이스와 연관된 상기 부가적인 부호워드 및 상기 부호워드를 서로 XOR하는 단계를 포함하는, 방법.
  13. 제10항에 있어서, 상기 제1 메모리 다이는 상 변화 메모리, 3D XPoint™ 메모리, 또는 이들의 임의의 조합을 포함하는, 방법.
  14. 제10항에 있어서, 상기 부호워드는,
    페이로드 데이터; 및
    논리 대 물리 주소 변환을 나타내는 데이터
    를 포함하는, 방법.
  15. 제10항에 있어서, 상기 XOR 논리 연산은 상기 복수의 다중 다이 패키징된 메모리 디바이스의 상이한 메모리 디바이스와 연관된 제3 메모리 다이에 저장된 부가적인 부호워드로 상기 제1 메모리 다이의 부호워드를 XOR하는 단계를 포함하는, 방법.
  16. 메모리 모듈로서,
    메모리 다이의 제1 서브세트 및 메모리 다이의 제2 서브세트를 포함하는 복수의 메모리 디바이스로서, 상기 메모리 다이의 제1 서브세트의 각각의 메모리 다이는 복수의 향상된 부호워드의 각각의 부호워드를 저장하도록 구성되는, 상기 복수의 메모리 디바이스;
    상기 복수의 메모리 디바이스의 각각의 메모리 디바이스에 통신 가능하게 결합된 복수의 채널로서, 상기 복수의 채널의 각각의 채널은 상기 메모리 다이의 제1 및 제2 서브세트의 각각의 메모리 다이와 연관되는, 상기 복수의 채널; 및
    상기 복수의 채널의 각각에 통신 가능하게 결합된 메모리 제어기를 포함하되, 상기 메모리 제어기는,
    상기 메모리 다이의 제1 서브세트의 각각의 메모리 다이에 저장될 상기 각각의 부호워드의 메모리 동작 정보를 업데이트하고;
    상기 각각의 부호워드의 업데이트된 메모리 동작 정보에 적어도 부분적으로 기초하여 그리고 상기 각각의 부호워드의 데이터에 기초하여 패리티 데이터를 결정하고;
    상기 메모리 다이의 제2 서브세트에 상기 패리티 데이터를 저장하고;
    데이터 손실 이벤트가 발생했다고 결정하고; 그리고
    상기 데이터 손실 이벤트가 발생했다는 결정에 적어도 부분적으로 기초하여 상기 메모리 다이의 제1 서브세트에 저장된 데이터 및 상기 패리티 데이터를 사용하여 상기 데이터 손실 이벤트로부터 손실된 메모리 동작 정보를 재생성하도록 구성되는, 메모리 모듈.
  17. 제16항에 있어서, 상기 메모리 제어기는 상기 패리티 데이터로 상기 메모리 다이의 제1 서브세트에 저장된 상기 데이터를 배타적 논리합(XOR)하기 위해 논리 연산을 통해 상기 메모리 다이의 제1 서브세트의 각각의 다이와 연관된 손실된 데이터를 재생성하도록 구성되는, 메모리 모듈.
  18. 제16항에 있어서, 상기 복수의 향상된 부호워드는 각각,
    각각의 메모리 다이에 특정한 페이로드 데이터; 및
    타임스탬프, 액세스 카운트, 상기 각각의 메모리 다이가 데드(dead)인지의 여부, 또는 상기 각각의 메모리 다이가 프리(free)한지의 여부, 또는 이들의 임의의 조합을
    상기 각각의 메모리 다이에 대응하는 최신의 액세스 데이터 및 액세스 카운트 데이터를 나타내도록 구성된 메모리 동작 데이터를 포함하는, 메모리 모듈.
  19. 제16항에 있어서, 상기 메모리 다이의 제1 서브세트의 및 상기 메모리 다이의 제2 서브세트의 각각의 메모리 다이는 3D XPoint™ 메모리를 포함하는, 메모리 모듈.
  20. 제16항에 있어서, 상기 메모리 제어기는,
    호스트로부터 메모리 동작 요청을 수신하고;
    데이터 스크럽 이벤트를 포함하는 상기 메모리 동작 요청에 적어도 부분적으로 기초하여 메모리 스크러빙 동작을 수행하고; 그리고
    데이터 판독 이벤트와 연관된 액세스 카운트 및 데이터 기록 이벤트와 연관된 액세스 카운트의 합과 같은 미리 결정된 양만큼 상기 각각의 부호워드의 메모리 동작 정보를 조정하도록 구성되는, 메모리 모듈.
KR1020217003469A 2018-08-08 2019-07-09 매체 지속성 및 진단을 위한 향상된 부호워드 KR102288723B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/058,813 2018-08-08
US16/058,813 US10824502B2 (en) 2018-08-08 2018-08-08 Enhanced codeword for media persistence and diagnostics
PCT/US2019/040934 WO2020033091A1 (en) 2018-08-08 2019-07-09 Enhanced codeword for media persistence and diagnostics

Publications (2)

Publication Number Publication Date
KR20210018518A KR20210018518A (ko) 2021-02-17
KR102288723B1 true KR102288723B1 (ko) 2021-08-12

Family

ID=69406095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217003469A KR102288723B1 (ko) 2018-08-08 2019-07-09 매체 지속성 및 진단을 위한 향상된 부호워드

Country Status (5)

Country Link
US (1) US10824502B2 (ko)
EP (1) EP3834070A4 (ko)
KR (1) KR102288723B1 (ko)
CN (1) CN112543909B (ko)
WO (1) WO2020033091A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102624620B1 (ko) * 2018-11-02 2024-01-15 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
US11170870B1 (en) 2020-05-28 2021-11-09 Western Digital Technologies, Inc. On-chip-copy for integrated memory assembly
US11237906B1 (en) * 2020-07-28 2022-02-01 Micron Technology, Inc. Generating a balanced codeword protected by an error correction code
US11494264B2 (en) * 2020-07-28 2022-11-08 Micron Technology, Inc. Generating a protected and balanced codeword
US11567831B2 (en) 2020-07-28 2023-01-31 Micron Technology, Inc. Generating a protected and balanced codeword
US11775381B2 (en) * 2021-09-17 2023-10-03 Micron Technology, Inc. Redundancy metadata schemes for RAIN protection of large codewords
EP4181125A3 (en) * 2021-11-10 2023-07-12 Samsung Electronics Co., Ltd. Storage device and operating method thereof

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160042809A1 (en) 2014-08-11 2016-02-11 Young-Il Kim Semiconductor memory devices and memory systems including the same
US20160371144A1 (en) 2006-12-06 2016-12-22 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive error-correction coding
US20180287636A1 (en) 2017-03-31 2018-10-04 Sandisk Technologies Llc Determining codebooks for different memory areas of a storage device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US287636A (en) * 1883-10-30 Apparatus for coating lamp-shades with silver
US7234099B2 (en) * 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US7340665B2 (en) * 2005-06-28 2008-03-04 Seagate Technology Llc Shared redundancy in error correcting code
US8468432B2 (en) * 2009-07-01 2013-06-18 Silicon Motion, Inc. Coder-decoder and method for encoding and decoding an error correction code
JP5382220B2 (ja) 2010-06-30 2014-01-08 富士通株式会社 データ復元プログラム、データ復元装置およびデータ復元方法
US8706701B1 (en) 2010-11-18 2014-04-22 Emc Corporation Scalable cloud file system with efficient integrity checks
US9053809B2 (en) 2011-11-09 2015-06-09 Apple Inc. Data protection from write failures in nonvolatile memory
US9075741B2 (en) * 2011-12-16 2015-07-07 Intel Corporation Dynamic error handling using parity and redundant rows
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US9043681B2 (en) * 2012-03-28 2015-05-26 Intel Corporation Reconstructing codewords using a side channel
US9088303B2 (en) * 2013-02-28 2015-07-21 Micron Technology, Inc. Codewords that span pages of memory
US9727413B2 (en) * 2013-06-28 2017-08-08 International Business Machines Corporation Flash memory scrub management
US9442662B2 (en) * 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9448745B2 (en) 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
US10089177B2 (en) * 2014-06-30 2018-10-02 Sandisk Technologies Llc Multi-stage decoder
US9652321B2 (en) * 2014-09-23 2017-05-16 Intel Corporation Recovery algorithm in non-volatile memory
US9798622B2 (en) * 2014-12-01 2017-10-24 Intel Corporation Apparatus and method for increasing resilience to raw bit error rate
WO2016154079A1 (en) * 2015-03-20 2016-09-29 Burlywood, LLC Configurable multi-level error correction in a storage controller
US9720612B2 (en) * 2015-04-30 2017-08-01 Sandisk Technologies Llc Biasing schemes for storage of bits in unreliable storage locations
US9766976B2 (en) * 2015-06-08 2017-09-19 Sandisk Technologies Llc Data storage device and method for storing multiple codewords and redundancy information at a word line
US9734009B2 (en) * 2015-10-08 2017-08-15 Sandisk Technologies Llc Data encoding techniques for a device
US10019174B2 (en) * 2015-10-27 2018-07-10 Sandisk Technologies Llc Read operation delay
US10432232B2 (en) 2016-03-04 2019-10-01 Sandisk Technologies Llc Multi-type parity bit generation for encoding and decoding
EP3453022B1 (en) * 2016-05-02 2022-07-06 INTEL Corporation Internal error checking and correction (ecc) with extra system bits
KR102673873B1 (ko) * 2016-06-30 2024-06-10 삼성전자주식회사 데이터 복구 방법 및 이를 적용하는 메모리 시스템 및 레이드 스토리지 시스템
US10169126B2 (en) * 2016-10-12 2019-01-01 Samsung Electronics Co., Ltd. Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation
US10002086B1 (en) * 2016-12-20 2018-06-19 Sandisk Technologies Llc Multi-channel memory operations based on bit error rates
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
US10719394B2 (en) * 2017-10-25 2020-07-21 Innogrit Technologies Co., Ltd. Systems and methods for fast access of non-volatile storage devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160371144A1 (en) 2006-12-06 2016-12-22 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive error-correction coding
US20160042809A1 (en) 2014-08-11 2016-02-11 Young-Il Kim Semiconductor memory devices and memory systems including the same
US20180287636A1 (en) 2017-03-31 2018-10-04 Sandisk Technologies Llc Determining codebooks for different memory areas of a storage device

Also Published As

Publication number Publication date
CN112543909A (zh) 2021-03-23
US10824502B2 (en) 2020-11-03
KR20210018518A (ko) 2021-02-17
WO2020033091A1 (en) 2020-02-13
EP3834070A4 (en) 2021-12-22
EP3834070A1 (en) 2021-06-16
US20200050512A1 (en) 2020-02-13
CN112543909B (zh) 2022-09-13

Similar Documents

Publication Publication Date Title
KR102288723B1 (ko) 매체 지속성 및 진단을 위한 향상된 부호워드
US10847244B2 (en) Storage device including repairable volatile memory and method of operating the same
CN108376120B (zh) 用于管理在非易失性存储器系统中写入块的系统和方法
US8516343B2 (en) Apparatus, system, and method for retiring storage regions
US10877900B1 (en) Enabling faster and regulated device initialization times
US8266501B2 (en) Stripe based memory operation
US8099570B2 (en) Methods, systems, and computer program products for dynamic selective memory mirroring
US10127103B2 (en) System and method for detecting and correcting mapping table errors in a non-volatile memory system
US20070174718A1 (en) Generation and use of system level defect tables for main memory
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
EP3462318B1 (en) Memory controller error checking process using internal memory device codes
CN112306737A (zh) 控制易失性存储器装置的修复的方法和存储装置
US7870471B2 (en) Methods and apparatus for employing redundant arrays to configure non-volatile memory
US20220027058A1 (en) Predictive memory management
US10735030B2 (en) Re-encoding data associated with failed memory devices
CN114446379A (zh) 基于各种定时容限参数设定的性能度量来对存储器装置进行评级
CN110737539B (zh) 裸片级错误恢复方案
US12079078B2 (en) Command address fault detection
US12009835B2 (en) Command address fault detection
US20240232008A9 (en) Command address fault detection using a parity pin
CN116340049A (zh) 存储器系统及操作存储器系统的方法
JPWO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム

Legal Events

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