KR102045712B1 - 메모리 시스템에서의 링크 에러 정정 - Google Patents

메모리 시스템에서의 링크 에러 정정 Download PDF

Info

Publication number
KR102045712B1
KR102045712B1 KR1020197005234A KR20197005234A KR102045712B1 KR 102045712 B1 KR102045712 B1 KR 102045712B1 KR 1020197005234 A KR1020197005234 A KR 1020197005234A KR 20197005234 A KR20197005234 A KR 20197005234A KR 102045712 B1 KR102045712 B1 KR 102045712B1
Authority
KR
South Korea
Prior art keywords
read
data
write
memory
protection code
Prior art date
Application number
KR1020197005234A
Other languages
English (en)
Other versions
KR20190043540A (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 KR20190043540A publication Critical patent/KR20190043540A/ko
Application granted granted Critical
Publication of KR102045712B1 publication Critical patent/KR102045712B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/31Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining coding for error detection or correction and efficient use of the spectrum

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Memory System (AREA)

Abstract

종래의 메모리 서브시스템들에서의 링크 에러 정정 기법들은 I/O 폭을 넓히는 것 또는 버스트 길이를 증가시키는 것 중 어느 일방을 포함한다. 하지만, 이 양자의 기법들은 결점들을 갖는다. 하나 이상의 양태들에서, 종래의 기법들과 연관된 결점들을 해결하기 위해 호스트 및 메모리 디바이스들 양자에서 링크 에러 정정을 통합하는 것이 제안된다. 제안된 메모리 서브시스템은, 종래의 메모리 시스템들의 인터페이스 아키텍처가 유지될 수 있다는 이점이 있다. 또한, I/O 폭을 증가시키지 않고 그리고 버스트 길이를 증가시키지 않고서 제안된 메모리 서브시스템에 링크 에러 정정 능력이 제공된다.

Description

메모리 시스템에서의 링크 에러 정정
관련 출원들에 대한 상호 참조
본 특허 출원은 2016년 8월 26일 출원된 "LINK ERROR CORRECTION IN MEMORY SYSTEM" 이라는 제목의 미국 가 출원 제 62/380,104 호의 이익을 주장하고, 그것은 본원의 양수인에게 양도되었고, 그것의 전체가 참조에 의해 본원에 명시적으로 통합된다.
개시의 분야
본 개시의 하나 이상의 양태들은 일반적으로 메모리 시스템들에 관한 것이고, 특히, 메모리 시스템들에서의 링크 에러 정정에 관한 것이다.
배경
호스트와 메모리 디바이스 사이의 데이터 전송들에서 에러들이 존재할 수 있다. 이들 링크 에러들은 데이터 전송들에서 에러 정정 코드들 (error correction codes; ECC) 을 통합함으로써 검출되고 종종 정정될 수도 있다. ECC 를 구현하기 위해 종래에 2 가지 기법들이 사용되었다. 제 1 의 종래 기법에서, 입력/출력 (I/O) 폭이 데이터 및 ECC 양자를 수용하기 위해 증가된다. 제 2 의 종래 기법에서, ECC 비트들은 데이터 버스트 길이를 연장함으로써 호스트와 메모리 디바이스 사이에서 전송된다.
제 1 의 종래 기법에서, 종래의 서버 및 컴퓨팅 시스템들은 통상적으로, 메모리 링크 및 메모리 셀 어레이의 신뢰성을 향상시키기 위해서 72-비트 I/O 폭 메모리 모듈 (64-비트 데이터 및 대응하는 8-비트 ECC) 을 이용한다. 도 1 은 메모리 어레이 (140) 를 갖는 호스트 시스템-온-칩 (SOC) (110) 을 포함하는 종래의 메모리 서브시스템 (100) 의 단순화된 도를 나타낸다. 호스트 SOC (110) 는 ECC 인코더/디코더 (125) 및 PHY 블록 (130) 을 갖는 메모리 제어기 (120) 를 포함한다. 메모리 어레이 (140) 는 9 개의 8-비트 메모리 디바이스들 (150) 을 포함한다. 8-비트 ECC 는 호스트 SOC (110) 및 메모리 셀 어레이 (140) 양자에서 임의의 비트 에러를 보호하기 위해 각 64-비트 데이터에 할당될 수 있다. 데이터는 처음 8 개의 메모리 디바이스들 (150) 에 기입될 수 있고, ECC 는 9 번째 메모리 디바이스 (150) 에 기입될 수 있다.
알 수 있는 바와 같이, 종래의 메모리 구성은 추가적인 메모리 디바이스들 비용을 유발한다. 그것은 또한, 추가적인 9 번째 메모리 디바이스 (150) 로 인해 보다 넓은 메모리 채널 라우팅 및 증가된 메모리 대기 및 활동 전력 비용을 필요로 함으로써 증가된 인쇄 회로 기판 (PCB) 면적 비용을 초래한다. 추가적인 메모리 구성은 성능에 직접적으로 영향을 미친다. 메모리 대역폭은 주어진 양의 시간 당 얼마나 많은 유효한 비트들이 전송되는지와 대응한다. 하지만, 추가적인 ECC 비트들은, 신뢰성을 향상시키지만, 그 자신들이 데이터로서 값들을 갖지 않는다. 따라서, 제 1 의 종래 기법은 전체 I/O 폭이 유용한 데이터를 전송하기 위해 이용되지 않는다는 점에서 메모리 서브시스템의 성능에 직접적으로 영향을 미친다.
도 2 는 종래의 메모리 서브시스템 (100) 의 단순화된 도를 나타내지만, 이번은 단순함을 위해 오직 하나의 데이터 (DQ) 바이트만을 나타낸다. 메모리 디바이스 (150) 는 I/O 블록 (260) 및 복수의 메모리 뱅크들 (270) 을 포함한다. 보이는 바와 같이, 링크 (290) 로서 총칭되는 신호 라인들은 호스트 SOC (110) 와 메모리 디바이스 (150) 사이에 데이터를 교환하기 위해 사용된다. 링크 (290) 는:
Figure 112019018604283-pct00001
DQ[0:7] 라인들: 메모리들과 SOC 사이의 데이터의 전송을 위한 DQ 바이트 양방향 버스;
Figure 112019018604283-pct00002
DM 라인: 기입 데이터에 대한 데이터 마스크;
Figure 112019018604283-pct00003
데이터 CK 라인: 기입 데이터를 스트로브하기 위한 클럭 입력;
Figure 112019018604283-pct00004
판독 스트로브 CK 라인: 판독 데이터 타이밍 (SOC 에 대한 클럭 입력) 과 정렬될 클럭 출력;
Figure 112019018604283-pct00005
CA[0:n] 라인들: 커맨드 및 어드레스;
Figure 112019018604283-pct00006
CA CK 라인: CA 를 페치하기 위한 커맨드 및 어드레스 클럭 입력.
DM 라인은 데이터 마스크 반전 (Data Mask Inversion; DMI) 핀 기능 - 데이터 반전 또는 데이터 마스크 중 어느 일방 - 일 수도 있음에 유의하여야 한다. DMI 핀 기능은 모드 레지스터 셋팅에 의존한다. 하지만, 도 2 에서, 단순함을 위해 그것은 DM 라인으로서 도시된다.
도 3a 는 종래의 마스크 기입 동작의 타이밍도를 나타낸다. 메모리 제어기 (120) 는 메모리 디바이스 (150) 에 기입 커맨드를 발행한다. 약간의 지연 후에, 호스트 SOC (110) 로부터 메모리 디바이스 (150) 로 바이트 (8-비트) 의 데이터가 16 개의 버스트 사이클들의 각각에 걸쳐서 전송된다. 달리 말하면, 128-비트 기입 데이터 (8-비트 DQ x 버스트 길이 16) 가 전송된다. 도 3a 에서, D0 - DF 의 각각은 8-비트 (일 바이트) 의 기입 데이터 DQ[0:7] 가 하나의 버스트 사이클에서 전송되고 있음을 나타낸다. 기입 데이터는 몇몇 데이터 마스크 (data mask; DM) 활동들로 전송된다. 이 예에서, 각 DQ 바이트를 마스킹하기 위해 16-비트 DM 이 사용된다. 종래에, 판독 스트로브 클럭 라인은, 이것이 기입 동작이기 때문에, 유휴상태이다.
도 3b 는 종래의 판독 동작의 타이밍도를 나타낸다. 메모리 제어기 (120) 는 메모리 디바이스 (150) 에 판독 커맨드를 발행한다. 약간의 지연 후에, 메모리 디바이스 (150) 는 호스트 SOC (110) 에 128-비트 판독 데이터 (8-비트 DQ x 버스트 길이 16) 를 전송함으로써 응답한다. 다시, D0 - DF 의 각각은 일 바이트의 판독 데이터 DQ[0:7] 가 하나의 버스트 사이클에서 전송되고 있음을 나타낸다. 메모리 디바이스 (150) 로부터의 판독 스트로브 클럭은 호스트 SOC (110) 에 대한 입력 클럭으로서 판독 데이터와 토글링한다. DM 라인은, 이것이 판독 동작이기 때문에, 유휴상태이다.
제 2 의 종래 기법에서, 버스트 길이들은 ECC 코드들을 송신하기 위해서 연장된다. 예를 들어, 버스트 길이는 16 으로부터 18 로 (BL16→BL18) 연장될 수 있고, ECC 비트들은 DQ 비트들을 전송하기 위해 사용되지 않는 버스트 사이클들에서 호스트 SOC (110) 와 메모리 디바이스 (150) 사이에서 전송될 수 있다. 이 종래의 연장된 데이터 버스트 길이 기법은 또한, 매 사이클이 모두 유용한 데이터를 전송하기 위해 사용되는 것은 아니라는 점에서 성능에 직접적으로 영향을 미친다.
요약
이 요약은 몇몇 예시적인 양태들의 특징들을 식별하고, 개시된 주제의 배타적 또는 망라적 설명이 아니다. 특징들 또는 양태들이 이 요약에 포함되는지 또는 이 요약으로부터 생략되는지 여부는 그러한 특징들의 상대적인 중요성을 나타내는 것으로서 의도되지 아니한다. 추가적인 특징들 및 양태들이 기술되고, 이하의 상세한 설명을 읽고 그것의 부분을 형성하는 도면들을 보면 당해 기술분야에서 통상의 지식을 가진 자 (이하, '통상의 기술자' 라 함) 에게 명백하게 될 것이다.
일 예시적인 메모리 디바이스가 개시된다. 메모리 디바이스는, 메모리 뱅크 (memory bank), 메모리 측 인터페이스 (memory side interface), 메모리 측 인코더, 및 메모리 측 디코더를 포함할 수도 있다. 메모리 측 인터페이스는 링크를 통해 호스트로부터 기입 커맨드 (WRITE command) 를 수신하고, 링크를 통해 호스트로부터 기입 데이터 (Write Data) 및 기입 보호 코드 (write protection code) 를 수신하며, 그 기입 커맨드에 응답하여 메모리 뱅크에 기입 데이터를 저장하도록 구성될 수도 있다. 메모리 측 인터페이스는 또한, 링크를 통해 호스트로부터 판독 커맨드 (READ command) 를 수신하고, 그 판독 커맨드에 응답하여 메모리 뱅크로부터 판독 데이터 (Read Data) 를 취출 (retrieve) 하며, 그리고, 링크를 통해 호스트에 판독 데이터 및 판독 보호 코드 (read protection code) 를 전송하도록 구성될 수도 있다. 메모리 측 디코더는, 기입 보호 코드에 기초하여 기입 데이터가 에러를 갖는지 여부를 검출하도록 구성될 수도 있고, 메모리 측 인코더는, 메모리 뱅크로부터 취출된 판독 데이터에 기초하여 판독 보호 코드를 생성하도록 구성될 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인 (Read Strobe clock line) 을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용될 수도 있다. 메모리 측 인터페이스는, 복수의 데이터 라인들을 통해 기입 데이터를 수신하고 판독 데이터를 전송하고, 판독 스트로브 클럭 라인을 통해 기입 보호 코드를 수신하며, 그리고, 데이터 마스크 라인을 통해 판독 보호 코드를 전송하도록 더 구성될 수도 있다.
일 예시적인 호스트가 개시된다. 그 호스트는 메모리 제어기, 호스트 측 인터페이스, 호스트 측 인코더, 및 호스트 측 디코더를 포함할 수도 있다. 메모리 제어기는, 판독 및 기입 커맨드들을 발행하도록 구성될 수도 있다. 호스트 측 인터페이스는, 링크를 통해 메모리 제어기로부터 메모리 디바이스로 기입 커맨드를 전송하고, 링크를 통해 메모리 디바이스에 기입 데이터 및 기입 보호 코드를 전송하도록 구성될 수도 있다. 호스트 측 인터페이스는 또한, 링크를 통해 메모리 제어기로부터 메모리 디바이스로 판독 커맨드를 전송하고, 판독 커맨드가 전송되는 것에 후속하여, 링크를 통해 메모리 디바이스로부터 판독 데이터 및 판독 보호 코드를 수신하며, 그리고, 판독 데이터를 메모리 제어기에 제공하도록 구성될 수도 있다. 호스트 측 인코더는, 기입 데이터에 기초하여 기입 보호 코드를 생성하도록 구성될 수도 있고, 호스트 측 디코더는, 판독 보호 코드에 기초하여 판독 데이터가 에러를 갖는지 여부를 검출하도록 구성될 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용될 수도 있다. 호스트 측 인터페이스는, 복수의 데이터 라인들을 통해 기입 데이터를 전송하고 판독 데이터를 수신하고, 판독 스트로브 클럭 라인을 통해 기입 보호 코드를 전송하며, 그리고, 데이터 마스크 라인을 통해 판독 보호 코드를 수신하도록 더 구성될 수도 있다.
일 예시적인 방법이 개시된다. 이 방법은, 호스트가 링크를 통해 메모리 디바이스에 기입 커맨드를 전송하는 것, 호스트가 기입 데이터에 기초하여 기입 보호 코드를 생성하는 것, 호스트가 링크를 통해 메모리 디바이스에 기입 데이터 및 기입 보호 코드를 전송하는 것을 포함할 수도 있다. 이 방법은 또한, 메모리 디바이스가 기입 보호 코드에 기초하여 기입 데이터가 에러를 갖는지 여부를 검출하는 것, 및 메모리 디바이스가 기입 커맨드에 응답하여 메모리 디바이스의 메모리 뱅크에 기입 데이터를 저장하는 것을 포함할 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은, 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용되기 위한 것이다. 호스트는 복수의 데이터 라인들을 통해 메모리 디바이스에 기입 데이터를 전송할 수도 있고, 판독 스트로브 클럭 라인을 통해 메모리 디바이스에 기입 보호 코드를 전송할 수도 있다.
다른 예시적인 방법이 개시된다. 그 방법은, 호스트가 링크를 통해 메모리 디바이스에 판독 커맨드를 전송하는 것, 메모리 디바이스가 판독 커맨드에 응답하여 메모리 디바이스의 메모리 뱅크로부터 판독 데이터를 취출하는 것, 메모리 디바이스가 판독 데이터에 기초하여 판독 보호 코드를 생성하는 것, 메모리 디바이스가 링크를 통해 호스트에 판독 데이터 및 판독 보호 코드를 전송하는 것을 포함할 수도 있다. 그 방법은 또한, 호스트가 판독 보호 코드에 기초하여 판독 데이터가 에러를 갖는지 여부를 검출하는 것을 포함할 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은, 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용된다. 메모리 디바이스는, 복수의 데이터 라인들을 통해 호스트에 판독 데이터를 전송할 수도 있고, 데이터 마스크 라인을 통해 호스트에 판독 보호 코드를 전송할 수도 있다.
일 예시적인 장치가 개시된다. 이 장치는, 링크를 통해 서로 통신하도록 구성된 호스트 및 메모리 디바이스를 포함할 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용된다. 메모리 디바이스는, 링크를 통해 호스트로부터 판독 커맨드를 수신하고, 판독 커맨드에 응답하여 메모리 디바이스의 메모리 뱅크로부터 판독 데이터를 취출하며, 판독 데이터에 기초하여 판독 보호 코드를 생성하고, 복수의 데이터 라인들을 통해 호스트에 판독 데이터를 전송하고, 그리고, 데이터 마스크 라인을 통해 호스트에 판독 보호 코드를 전송하도록 구성될 수도 있다. 판독 보호 코드는 판독 데이터의 보호를 위한 패리티 코드 (parity code) 일 수도 있다. 호스트는, 링크를 통해 메모리 디바이스에 판독 커맨드를 전송하고, 복수의 데이터 라인들을 통해 메모리 디바이스로부터 판독 데이터를 수신하며, 데이터 마스크 라인을 통해 메모리 디바이스로부터 판독 보호 코드를 수신하고, 그리고, 판독 보호 코드에 기초하여 판독 데이터가 에러를 갖는지 여부를 검출하도록 구성될 수도 있다.
일 예시적인 장치가 개시된다. 그 장치는, 링크를 통해 서로 통신하도록 구성된 호스트 및 메모리 디바이스를 포함할 수도 있다. 링크는 복수의 데이터 라인들, 데이터 마스크 라인, 및 판독 스트로브 클럭 라인을 포함할 수도 있다. 데이터 마스크 라인은 마스크 기입 동작들에서 사용될 수도 있고, 판독 스트로브 클럭 라인은 판독 동작들에서 타이밍을 제공하기 위해 메모리 디바이스에 의해 사용된다. 호스트는, 링크를 통해 메모리 디바이스에 기입 커맨드를 전송하고, 기입 데이터에 기초하여 기입 보호 코드를 생성하며, 복수의 데이터 라인들을 통해 메모리 디바이스에 기입 데이터를 전송하고, 그리고, 판독 스트로브 클럭 라인을 통해 메모리 디바이스에 기입 보호 코드를 전송하도록 구성될 수도 있다. 기입 보호 코드는 기입 데이터의 보호를 위한 패리티 코드일 수도 있다. 메모리 디바이스는, 링크를 통해 호스트로부터 기입 커맨드를 수신하고, 복수의 데이터 라인들을 통해 호스트로부터 기입 데이터를 수신하며, 판독 스트로브 클럭 라인을 통해 호스트로부터 기입 보호 코드를 수신하고, 그리고, 기입 보호 코드에 기초하여 기입 데이터가 에러를 갖는지 여부를 검출하도록 구성될 수도 있다.
첨부 도면들은 개시된 주제의 하나 이상의 양태들의 예들의 설명에 있어서 도움을 주기 위해 제시된 것이고, 오직 예들의 도시를 위해서만 제공되고 제한하는 것이 아니다.
도 1 은 에러 정정 코드들 핸들링을 위해 추가적인 메모리 디바이스를 갖는 종래의 메모리 서브시스템의 도를 나타낸다.
도 2 는 신호들이 호스트와 메모리 디바이스 사이에서 교환되는 종래의 메모리 서브시스템의 도를 나타낸다.
도 3a 는 종래의 메모리 서브시스템에서의 기입 동작의 타이밍도를 나타낸다.
도 3b 는 종래의 메모리 서브시스템에서의 판독 동작의 타이밍도를 나타낸다.
도 4 는 호스트와 메모리 디바이스 사이에서 신호들이 교환되는 일 예시적인 메모리 서브시스템의 도를 나타낸다.
도 5a 는 일 예시적인 메모리 서브시스템에서의 기입 동작의 타이밍도를 나타낸다.
도 5b 는 일 예시적인 메모리 서브시스템에서의 판독 동작의 타이밍도를 나타낸다.
도 6a 및 도 6b 는 데이터 및 대응하는 보호 코드들의 예들을 나타낸다.
도 7 은 기입 동작을 수행하기 위한 예시적인 방법의 플로우 차트를 나타낸다.
도 8 은 판독 동작을 수행하기 위한 예시적인 방법의 플로우 차트를 나타낸다.
도 9 는 메모리 서브시스템이 그 안에 통합된 디바이스들의 예들을 나타낸다.
상세한 설명
주제의 양태들은 개시된 주제의 특정 예들에 관한 이하의 상세한 설명 및 관련된 도면들에서 제공된다. 대안들이 개시된 주제의 범위로부터 벗어남이 없이 고안될 수도 있다. 추가적으로, 잘 알려진 엘리먼트들은 관련 상세들을 모호하게 하지 않게 하기 위해 자세히 설명되지 않거나 생략될 것이다.
단어 "예시적인" 은 본 명세서에서 "일 예, 예증, 또는 예시로서 작용하는" 을 의미하도록 사용된다. "예시적" 으로서 본 명세서에 기술된 임의의 실시형태가 다른 실시형태들보다 선호되거나 이로운 것으로 반드시 해석되는 것은 아니다. 마찬가지로, 용어 "실시형태들" 은 개시된 주제의 모든 실시형태들이 동작의 논의된 특징, 이점 또는 모드를 포함하는 것을 요구하지 않는다.
본 명세서에서 사용된 전문용어는 오직 특정 예들을 기술하기 위한 목적이고, 제한하는 것으로 의도되지 않는다. 본 명세서에서 사용된 바와 같이, 단수 형태들 "a", "an", 및 "the" 는, 문맥상 달리 명확히 나타내지 않는 한 복수 형태들도 포함하도록 의도된다. 용어들 "포함하다", "포함하는", "포함시키다", 및/또는 "포함시키는" 은, 본 명세서에서 사용되는 경우, 언급된 특성들, 정수들, 프로세스들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 특성들, 정수들, 프로세스들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 그 그룹들의 존재 또는 추가를 배제하지는 않는다는 것이 또한 이해될 것이다.
또한, 많은 예들이 예를 들어 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 액션들의 시퀀스들의 면에서 기술된다. 본 명세서에 기술된 다양한 액션들은 특정 회로들 (예를 들어, 애플리케이션 특정적 집적 회로 (ASIC) 들) 에 의해, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이들의 조합에 의해 수행될 수 있다는 것이 인식될 것이다. 추가적으로, 본 명세서에 기술된 액션들의 이들 시퀀스는 실행 시에 연관된 프로세서로 하여금 본 명세서에 기술된 기능을 수행하게 할 대응하는 컴퓨터 명령들의 셋트가 저장된 임의의 형태의 컴퓨터 판독가능 저장 매체 내에서 완전히 구현되는 것으로 여겨질 수 있다. 따라서, 다양한 양태들은 다수의 상이한 형태들로 구현될 수도 있으며, 다수의 상이한 형태들 모두는 청구된 청구물의 범위 내에 있는 것으로 고려된다. 또한, 본 명세서에 기술된 예들의 각각에 있어서, 임의의 이러한 예들의 대응 형태는, 예를 들어 설명된 액션을 수행하도록 "구성된 로직" 으로서 본 명세서에 기술될 수도 있다.
본 개시의 하나 이상의 양태들은 에러 검출 및/또는 정정 코드들로 고속 메모리 링크들 (인터페이스들) 을 보호하기 위해 모바일 또는 컴퓨팅 시스템들에서 저 전력 메모리 서브시스템에 적용될 수도 있다. 예를 들어, 하나 이상의 양태들은 모바일 또는 컴퓨팅 칩셋들에서 차세대 저 전력 DDR SPEC 및 DDR PHY 와 관련될 수도 있다.
하나 이상의 양태들에서, 호스트 및 메모리 디바이스들 양자에서 인코딩 및 디코딩 능력들 (예컨대, ECC 능력들) 을 통합하도록 제안된다. 이러한 능력들을 메모리 디바이스들 내로 및 호스트 내로 통합함으로써, 종래 기법들과 연관된 일부 또는 모든 문제점들이 해결될 수도 있다. 첫째로, 제안된 기법은 추가적인 메모리 디바이스를 필요로 하지 않는다. 이것은 추가적인 디바이스들의 비용이 회피되고, 이는 다시 보다 적은 다이 면적이 소비되고 보다 적은 전력이 요구되는 것으로 이끈다. 따라서, 동일한 다이 면적에서 유용한 데이터를 저장하기 위해 보다 많은 메모리가 바쳐질 수 있다. 둘째로, 버스트 길이가 길어질 필요가 없다, 즉, 각 버스트 사이클이 데이터를 전송하기 위해 사용될 수도 있다. 이것은, ECC 의 전송에 일부 버스트 사이클들이 바쳐지는 성능 페널티 (performance penalty) 가 또한 회피됨을 의미한다. 셋째로, 호스트와 메모리 디바이스 사이의 링크에 대해 아무런 변경들도 필요하지 않다.
도 4 는 호스트 (410) 와 메모리 디바이스 (450) 를 포함하는 제안된 메모리 서브시스템 (400) 의 일 예를 나타낸다. 이것은 하나의 데이터 (DQ) 바이트에 대해 단일 메모리 디바이스 (450) 가 도시된 단순화된 도시이다. 하지만, 단일 호스트 (410) 는 다수의 메모리 디바이스들 (450) 과 통신할 수도 있다. 호스트 (410) (예컨대, 시스템-온-칩 (SOC)) 는 메모리 제어기 (420), 호스트 측 인터페이스 (430) (예컨대, 메모리 PHY 블록), 호스트 측 인코더 (432), 및 호스트 측 디코더 (434) 를 포함할 수도 있다.
메모리 제어기 (420) 는 호스트 측 인터페이스 (430) 를 통해 메모리 디바이스 (450) 에 판독 및 기입 커맨드들을 발행할 수도 있다. 기입 커맨드가 발행될 때, 메모리 제어기 (420) 는 또한 호스트 측 인터페이스 (430) 에 기입 데이터를 제공할 수도 있다. 판독 커맨드가 발행될 때, 메모리 제어기 (420) 는 호스트 측 인터페이스 (430) 로부터 판독 데이터를 수신할 수도 있다.
기입 동작 동안, 호스트 측 인터페이스 (430) 는 링크 (490) 를 통해 메모리 디바이스 (450) 에 기입 커맨드 및 기입 데이터를 전송할 수도 있다. 호스트 측 인코더 (432) (예컨대, ECC 인코더) 는 기입 데이터에 기초하여 기입 보호 코드를 생성할 수도 있고, 호스트 측 인터페이스 (430) 는 또한, 링크 (490) 를 통해 메모리 디바이스 (450) 에 기입 보호 코드를 전송할 수도 있다. 기입 보호 코드는 기입 데이터를 보호하기 위한 ECC 및/또는 다른 타입들의 패리티 코드일 수도 있다. 즉, 기입 보호 코드는 메모리 디바이스 (450) 가 기입 데이터에서 존재할 수도 있는 에러들을 검출하고 심지어 정정하도록 허용할 수도 있다. 예를 들어, 에러는 호스트 (410) 로부터 메모리 디바이스 (450) 로의 송신에서 발생할 수도 있다.
다른 양태에서, 호스트 측 인코더 (432) 는 기입 데이터 및 데이터 마스크 (DM) 데이터에 기초하여 기입 보호 코드를 생성할 수도 있다. 이러한 방식으로, 기입 보호 코드는 기입 데이터를 보호하는 것에 추가하여 데이터 마스크 (DM) 비트들을 보호할 수도 있다. 이 양태에서, 기입 동작이 마스킹 (masking) 을 수반하지 않는 경우에는, 기입 보호 코드는 DM 비트들이 모두 제로아웃 (zeroed out) 된 채로 생성될 수도 있다.
판독 동작 동안, 호스트 측 인터페이스 (430) 는 링크 (490) 를 통해 메모리 디바이스 (450) 에 판독 커맨드를 전송할 수도 있다. 그 후에, 호스트 측 인터페이스 (430) 는 링크 (490) 를 통해 메모리 디바이스 (450) 로부터 판독 데이터를 수신하고, 수신된 판독 데이터를 메모리 제어기 (420) 에 제공할 수도 있다.
호스트 측 인터페이스 (430) 는 또한, 판독 데이터와 함께 링크 (490) 를 통해 메모리 디바이스 (450) 로부터 판독 보호 코드를 수신할 수도 있다. 판독 보호 코드는 판독 데이터를 보호하기 위한 ECC 및/또는 다른 타입들의 패리티 코드일 수도 있다. 호스트 측 디코더 (434) 는 판독 보호 코드에 기초하여 수신된 판독 데이터가 유효한지 여부를 결정할 수도 있다. 달리 말하면, 호스트 측 디코더 (434) 는 판독 데이터가 에러를 갖는지 여부를 검출할 수도 있다. 추가적으로, 호스트 측 디코더 (434) 는, 에러가 검출될 때, 판독 데이터를 정정할 수도 있고, 호스트 측 인터페이스 (430) 는 정정된 판독 데이터를 메모리 제어기 (420) 에 제공할 수도 있다.
도 4 에서, 호스트 측 인코더 (432) 및 호스트 측 디코더 (434) 는 호스트 측 인터페이스 (430) 에 통합되는 것으로서 예시된다. 이것은 단지 일 예이고, 제한하는 것으로서 받아들여져서는 아니된다. 호스트 측 인코더 (432) 및/또는 호스트 측 디코더 (434) 는 그들 자신들 상에 있을 수도 있거나 메모리 제어기 (420) 와 같은 호스트 (410) 내의 다른 컴포넌트들 내로 통합될 수도 있음이 고려된다. 또한, 호스트 측 인코더 (432) 및 호스트 측 디코더 (434) 는 개별적으로 도시되지만, 두 개는 단일 디바이스에서 구현될 수도 있다. 호스트 측 인코더 (432) 및/또는 호스트 측 디코더 (434) 는 다수의 디바이스들에서 구현될 수도 있음이 또한 고려된다. 사실, 일부 양태(들)에서, 호스트 측 인코더 (432) 및/또는 호스트 측 디코더 (434) 는 다수의 컴포넌트들 사이에서 분포될 수도 있다.
메모리 디바이스 (450) 는 메모리 측 인터페이스 (460) (예컨대, 입력/출력 (I/O) 블록), 메모리 뱅크들 (470), 메모리 측 인코더 (462), 및 메모리 측 디코더 (464) 를 포함할 수도 있다. 기입 동작 동안, 메모리 측 인터페이스 (460) 는 링크 (490) 를 통해 호스트 (410) 로부터 기입 커맨드를 수신할 수도 있다. 메모리 측 인터페이스 (460) 는 링크 (490) 를 통해 호스트 (410) 로부터 기입 데이터를 수신할 수도 있고, 기입 커맨드에 응답하여 메모리 뱅크들 (470) 에 기입 데이터를 저장할 수도 있다.
메모리 측 인터페이스 (460) 는 또한, 기입 데이터와 함께 링크 (490) 를 통해 호스트 (410) 로부터 기입 보호 코드를 수신할 수도 있다. 언급된 바와 같이, 기입 보호 코드는 ECC 및/또는 다른 타입들의 패리티 코드일 수도 있다. 메모리 측 디코더 (464) 는 기입 보호 코드에 기초하여, 수신된 기입 데이터가 유효한지 여부를 결정할 수도 있다. 즉, 메모리 측 디코더 (464) 는 기입 데이터에 에러들이 존재하는지 여부를 검출할 수도 있다. 추가적으로, 메모리 측 디코더 (464) 는, 에러가 검출될 때, 기입 데이터를 정정할 수도 있고, 메모리 측 인터페이스 (460) 는 정정된 기입 데이터를 메모리 뱅크들 (470) 에 저장할 수 있다.
제안된 기법에서, 아무런 추가적인 메모리 디바이스도 필요하지 않음을 상기하자. ECC 를 저장하기 위해 9 번째 메모리 디바이스 (150) 를 갖는 도 1 에서 예시된 종래의 메모리 시스템과는 달리, 그것은, 제안된 기법에서 메모리 디바이스들 (450) 의 임의의 것에서 기입 보호 코드를 저장할 필요가 없다. 대신에, 메모리 디바이스들 (450) 의 전부는 일 양태에서 유용한 데이터를 저장할 수도 있다.
판독 동작 동안, 메모리 측 인터페이스 (460) 는 링크 (490) 를 통해 호스트 (410) 로부터 판독 커맨드를 수신할 수도 있다. 판독 커맨드에 응답하여, 메모리 측 인터페이스 (460) 는 메모리 뱅크들 (470) 로부터 판독 데이터를 취출하고, 취출된 판독 데이터를 링크 (490) 를 통해 호스트 (410) 에 전송할 수도 있다.
메모리 측 인코더 (462) 는 메모리 뱅크들 (470) 로부터 취출된 판독 데이터에 기초하여 판독 보호 코드를 생성할 수도 있다. 대안적으로, 메모리 측 인코더 (462) 는 판독 데이터에 기초하여 그리고 제로아웃될 수도 있는 DM 데이터에 기초하여 판독 보호 코드를 생성할 수도 있다. 언급된 바와 같이, 판독 보호 코드는 ECC 및/또는 다른 타입들의 패리티 코드일 수도 있다. 메모리 측 인터페이스 (460) 는 링크를 통해 호스트 (410) 에 판독 데이터와 함께 판독 보호 코드를 제공할 수도 있다.
도 4 에서, 메모리 측 인코더 (462) 및 메모리 측 디코더 (464) 는 메모리 측 인터페이스 (460) 내로 통합되는 것으로서 예시된다. 이것은 단지 일 예이고, 제한하는 것으로서 받아들여져서는 아니된다. 메모리 측 인코더 (462) 및/또는 메모리 측 디코더 (464) 는 그들 자신들 상에 있을 수도 있거나 메모리 디바이스 (450) 내의 다른 컴포넌트들 내로 통합될 수도 있음이 고려된다. 또한, 메모리 측 인코더 (462) 및 메모리 측 디코더 (464) 는 개별적으로 도시되지만, 그 두 개는 단일 디바이스에서 구현될 수도 있다. 메모리 측 인코더 (462) 및/또는 메모리 측 디코더 (464) 는 다수의 디바이스들에서 구현될 수도 있음이 또한 고려된다. 사실, 일부 양태(들)에서, 메모리 측 인코더 (462) 및/또는 메모리 측 디코더 (464) 는 다수의 컴포넌트들 사이에서 분포될 수도 있다.
일 양태에서, 호스트 측 인코더 (432) 및 메모리 측 인코더 (462) 는 동일한 데이터가 제공될 때 동일한 기입 보호 코드 및 판독 보호 코드 (예컨대, 동일한 ECC) 를 생성하도록 동작할 수도 있다. 다른 양태에서, 기입 보호 코드는 판독 보호 코드와 상이할 수 있음도 또한 가능하다. 하지만, 메모리 및 호스트 측 디코더들 (464, 434) 이 각각 호스트 및 메모리 측 인코더들 (432, 462) 에 대해 상보적으로 동작하는 한, 적절한 데이터 교환이 발생할 수 있다.
도 4 의 제안된 메모리 서브시스템 (400) 및 도 2 의 종래의 메모리 서브시스템 (100) 이 비교될 때, 링크들 (490 및 290) 은 동일할 수 있다, 즉, 호스트 (410) 와 메모리 디바이스 (450) 사이에 링크 (490) 의 구성에서 어떠한 변화가 존재할 필요가 없다. 즉, 호스트 (410) 와 메모리 디바이스 (450) 사이에 정보를 교환하기 위해 동일한 신호 라인들 DQ[0:7], DM, 데이터 CK, 판독 스트로브 CK, CA[0:n] 및 CA CK 가 사용될 수도 있다. 동일한 신호 라인들이 사용될 수 있기 때문에, 링크들 (490) 에 대한 아무런 구조적 변경들도 필요하지 않다.
링크 구조를 변경함이 없이, I/O 폭을 증가시킴이 없이, 그리고 버스트 길이를 증가시킴이 없이, 호스트 (410) 와 메모리 디바이스 (450) 사이에 기입 및 판독 보호 코드들이 여전히 통신되는 것이 요망된다. 종래의 메모리 시스템에서, 판독 스트로브 클럭 라인은 기입 동작 동안 유휴상태인 채로 유지되고 (도 3a 참조) DM 라인은 판독 동작 동안 유휴상태인 채로 유지됨을 (도 3b 참조) 상기하자. 따라서, 일 양태에서, 기입 동작 동안 기입 보호 코드를 전송하기 위해 판독 스트로브 클럭 라인을 이용하고, 판독 동작 동안 판독 보호 코드를 전송하기 위해 DM 라인을 이용하도록 제안된다. 판독 스트로브 클럭 라인 및 DM 라인을 이용함으로써, 호스트 (410) 와 메모리 디바이스 (450) 사이에 기입 및 판독 보호 코드들을 전송하기 위해 아무런 추가적인 신호 라인들도 필요하지 않다. 판독 데이터 및 기입 데이터는 여전히 데이터 (DQ) 라인들을 통해 전송될 수도 있다.
도 5a 는 마스크 기입 동작의 일 예의 타이밍도를 예시한다. 이 예시적인 도에서, 128-비트 기입 데이터 (8-비트 DQ x 버스트 길이 16) 가 호스트 (410) 로부터 메모리 디바이스 (450) 로 DQ 라인들을 통해 전송되는 것으로 가정될 수도 있다. D0 - DF 의 각각은 8-비트 (일 바이트) 의 기입 데이터 DQ[0:7] 가 하나의 버스트 사이클에서 전송되고 있음을 나타낼 수도 있다. 이 예에서, 기입 데이터는 몇몇 데이터 마스크 (DM) 활동들로 전송되는 것으로 가정된다. 예를 들어, 기입 데이터의 DQ 바이트들을 마스킹하기 위해 16-비트 DM 이 사용될 수도 있다. 예를 들어, 4 번째 및 9 번째 DM 비트들 (M3 및 M8) 은 4 번째 및 9 번째 DQ 바이트들 (D3 및 D8) 을 마스킹하기 위해 설정될 수도 있다. 마스킹 없이 보통의 기입 동작에 대해, 모든 DM 비트들이 언셋 (unset), 즉 제로아웃될 것임에 유의한다.
호스트 측 인코더 (432) 는 기입 보호 코드 (예컨대, 8-비트 ECC) 를 생성할 수도 있고, 이 기입 보호 코드는 그 다음에 호스트 측 인터페이스 (430) 에 의해 판독 스트로브 클럭 라인 상에서 전송될 수도 있다. 호스트 측 인코더 (432) 는 메모리 제어기 (420) 로부터 수신된 기입 데이터에 기초하여 기입 보호 코드를 생성할 수도 있다. 예를 들어, 128-비트 기입 데이터를 보호하기 위해 8-비트 기입 보호 코드가 생성될 수도 있다. 다른 양태에서, 호스트 측 인코더 (432) 는 기입 데이터에 추가하여 DM 비트들에 기초하여 기입 보호 코드를 생성할 수도 있다. 예를 들어, 총 144 비트 (128-비트 기입 데이터 및 16-비트 DM) 를 보호하기 위해 8-비트 ECC 가 생성될 수도 있다.
따라서, 보통의 기입 동작 (마스킹 없음) 에서, 기입 보호 코드는 128-비트 기입 데이터에만 기초할 수도 있다. 대안적으로, 보통의 기입 동작에서, 기입 보호 코드는 128-비트 기입 데이터 및 제로아웃된 DM 비트들에 기초할 수도 있다. 마스크 기입 동작에서, DM 데이터의 보호가 관심사가 아닌 경우에는, 기입 보호 코드는 오직 기입 데이터에만 기초할 수도 있다. 그렇지 않으면 마스크 기입 동작에서, 기입 보호 코드는 기입 데이터 및 DM 데이터에 기초할 수도 있다.
도 5a 에서 보이는 바와 같이, 8-비트 E[0:7] 기입 보호 코드가 버스트 사이클들 8 내지 15 와 일치하도록 송신될 수도 있다. 보다 일반적으로, 기입 보호 코드는, 버스트 사이클들의 종단부 (예컨대, 버스트 사이클 15) 가 기입 보호 코드의 마지막 비트 (예컨대, E7) 의 송신과 일치하도록 버스트 사이클들의 나중의 부분 동안 송신될 수도 있다. 이는, 기입 보호 코드가 발생하기 위해 약간의 시간을 취할 수도 있기 때문이다. 판독 데이터 전송의 종료가 판독 보호 코드 전송의 종료와 일치하도록 버스트 사이클들의 나중의 부분 동안 기입 보호 코드를 전송함으로써, 버스트 길이를 연장시킬 필요 없이 기입 보호 코드를 생성하기 위해 최대 양의 시간이 제공될 수 있다.
물론, 기입 보호 코드의 전송은 개별 기입 보호 코드 비트들이 이용가능하자마자 시작될 수 있다. 따라서, 기입 보호 코드의 전송은 버스트 사이클들의 종료 전에 끝날 수 있다. 하지만 상관 없이, 기입 보호 코드의 전송은 버스트 길이의 연장을 회피하기 위해 버스트 사이클들의 종료보다 더 늦지 않게 끝나는 것이 일반적으로 선호된다.
도 5b 는 판독 동작의 일 예의 타이밍도를 나타낸다. 메모리 제어기 (420) 가 메모리 디바이스 (450) 에 판독 커맨드를 발행함에 따라, 메모리 디바이스 (450) 는 호스트 (410) 에 판독 데이터를 전송함으로써 응답할 수도 있다. 이 예시적인 도에서, 128-비트 판독 데이터 (8-비트 DQ x 버스트 길이 16) 가 DQ 라인들을 통해서 메모리 디바이스 (450) 로부터 호스트 (410) 로 전송되는 것으로 가정될 수도 있다. D0 - DF 의 각각은 8-비트 (일 바이트) 의 판독 데이터 DQ[0:7] 가 하나의 버스트 사이클에서 전송되고 있음을 나타낼 수도 있다.
메모리 측 인코더 (462) 는 판독 보호 코드 (예컨대, 8-비트 ECC) 를 생성할 수도 있고, 이 판독 보호 코드는 그 다음에 메모리 측 인터페이스 (460) 에 의해 DM 라인을 통해 전송될 수도 있다. 메모리 측 인코더 (462) 는 메모리 뱅크들 (470) 로부터 취출된 판독 데이터에 기초하여 판독 보호 코드를 생성할 수도 있다. 예를 들어, 128-비트 판독 데이터를 보호하기 위해 8-비트 판독 보호 코드가 생성될 수도 있다. 다른 양태에서, 판독 보호 코드는 총 144 비트 (128-비트 기입 데이터 및 16-비트 제로아웃된 DM) 를 보호하기 위해 생성될 수도 있다.
8-bit E[0:7] 판독 보호 코드는 버스트 사이클 8 내지 15 와 일치하도록 전송될 수도 있다. 보다 일반적으로, 판독 보호 코드는, 버스트 사이클들의 종단부 (예컨대, 버스트 사이클 15) 가 판독 보호 코드의 마지막 비트 (예컨대, E7) 와 일치하도록 버스트 사이클들의 나중의 부분 동안 전송될 수도 있다. 판독 데이터 전송의 종료가 판독 보호 코드 전송의 종료와 일치하도록 버스트 사이클들의 나중의 부분 동안 판독 보호 코드를 전송함으로써, 버스트 길이를 연장시킬 필요 없이 판독 보호 코드를 생성하기 위해 최대 양의 시간이 제공될 수 있다.
판독 보호 코드의 전송은 개별 판독 보호 코드 비트들이 생성되자마자 시작될 수 있다. 따라서, 판독 보호 코드의 전송은 버스트 사이클들의 종료 전에 끝날 수 있다. 하지만 상관 없이, 판독 보호 코드의 전송은 버스트 길이의 연장을 회피하기 위해 버스트 사이클들의 종료보다 더 늦지 않게 끝나는 것이 일반적으로 선호된다.
도 6a 는 데이터 (예컨대, 판독/기입 데이터) 및 대응하는 보호 코드 (예컨대, 판독/기입 보호 코드) 의 일 예를 나타낸다. 이 예에서, 144-비트 데이터 (128-비트 판독/기입 데이터 (d0 - d7F) + 16-비트 DM 데이터 (M0 - MF)) 를 보호하기 위해 8-비트 보호 코드 (E0 - E7) (예컨대, ECC 비트들) 가 사용된다고 가정될 수도 있다. 언급된 바와 같이, DM 비트들은 보통의 판독/기입 동작들에 대해 모두 제로로 될 수도 있다. 이것은 단지 일 예이다. 임의의 수의 데이터 비트들 (예컨대, 판독/기입 데이터 비트들 및 마스킹 비트들의 임의의 조합) 이 보호 코드로 보호될 수도 있다.
보호 코드를 위한 비트들의 수는 또한, 요망되는 보호의 레벨 (예컨대, 에러 검출 및 정정) 에 따라 변화될 수 있다. 도 6b 는 데이터, DM 데이터, 및 대응하는 보호 코드의 다른 예를 나타낸다. 이 예에서, 9 ECC 비트들이 128-비트 데이터 (예컨대, 판독/기입 데이터) 를 보호하기 위한 것일 수도 있고, 6 ECC 비트들은 16-비트 DM 데이터를 보호하기 위한 것일 수도 있다. 따라서, 이 예에서, 15-비트 ECC (E0-EE) 코드가 전송될 수도 있다.
도 7 은 기입 동작을 수행하기 위한 일 예시적인 방법 (700) 의 플로우 차트를 나타낸다. 방법 (700) 은 마스크 기입들에 및/또는 보통의 기입들에 적용될 수도 있다. 이 도면에서, 호스트 (410) 는 블록들 (710-730) 을 수행할 수도 있고, 메모리 디바이스 (450) 는 블록들 (740-780) 을 수행할 수도 있다. 호스트 측에서, 블록 (710) 에서, 메모리 제어기 (420) 는 호스트 측 인터페이스 (430) 를 통해 메모리 측에 기입 커맨드를 발행할 수도 있다. 블록 (720) 에서, 호스트 측 인코더 (432) 는 메모리 제어기 (420) 에 의해 제공된 기입 데이터에 기초하여 기입 보호 코드를 생성할 수도 있다. 대안적으로, 호스트 측 인코더 (432) 는 기입 데이터 및 DM 데이터를 보호하기 위해 기입 보호 코드를 생성할 수도 있다. 블록 (730) 에서, 호스트 측 인터페이스 (430) 는 메모리 측에 기입 데이터 및 기입 보호 코드 (예컨대, ECC) 를 전송할 수도 있다. 기입 데이터는 DQ 라인들을 통해 전송될 수도 있고, 기입 보호 코드는 판독 스트로브 클럭 라인을 통해 전송될 수도 있다.
메모리 측에서, 블록 (740) 에서, 메모리 측 인터페이스 (460) 는 호스트 측으로부터 기입 커맨드를 수신할 수도 있다. 그 후에, 블록 (750) 에서, 메모리 측 인터페이스 (460) 는 호스트 측으로부터 (예컨대, DQ 라인들을 통해) 기입 데이터를 그리고 (예컨대, 판독 스트로브 클럭 라인을 통해) 기입 보호 코드를 수신할 수도 있다. 블록 (760) 에서, 메모리 측 디코더 (464) 는 기입 보호 코드에 기초하여 기입 데이터에 에러가 존재하는지 여부를 검출할 수도 있다. 대안적으로, 메모리 측 디코더 (464) 는 기입 보호 코드에 기초하여 기입 데이터 및/또는 DM 데이터에 에러가 존재하는지 여부를 검출할 수도 있다. 블록 (770) 에서, 메모리 측 디코더 (464) 는, 예컨대 임의의 비트 에러(들)가 검출될 때, 필요에 따라 기입 데이터를 정정할 수도 있다. 블록 (780) 에서, 메모리 측 인터페이스 (460) 는 메모리 뱅크들 (470) 에 기입 데이터를 저장할 수도 있다. 메모리 측 디코더 (464) 가 기입 데이터를 정정하는 경우에, 정정된 기입 데이터는 메모리 뱅크들 (470) 에 저장될 수도 있다.
도 8 은 판독 동작을 수행하기 위한 일 예시적인 방법 (800) 의 플로우 차트를 나타낸다. 이 도면에서, 호스트 (410) 는 블록들 (810-850) 을 수행할 수도 있고, 메모리 디바이스 (450) 는 블록들 (850-890) 을 수행할 수도 있다. 메모리 측에서, 블록 (860) 에서, 메모리 측 인터페이스 (460) 는 호스트 측으로부터 판독 커맨드를 수신할 수도 있다. 블록 (870) 에서, 메모리 측 인터페이스 (460) 는 메모리 뱅크들 (470) 로부터 판독 데이터를 취출할 수도 있다. 블록 (880) 에서, 메모리 측 인코더 (462) 는 취출된 판독 데이터에 기초하여 판독 보호 코드를 생성할 수도 있다. 대안적으로, 메모리 측 인코더 (462) 는 판독 데이터 및 DM 데이터를 보호하기 위해 판독 보호 코드를 생성할 수도 있고, DM 데이터는 제로아웃될 수도 있다. 블록 (890) 에서, 메모리 측 인터페이스 (460) 는 판독 데이터 및 판독 보호 코드 (예컨대, ECC) 를 호스트 측에 전송할 수도 있다. 판독 데이터는 DQ 라인들을 통해 전송될 수도 있고, 판독 보호 코드는 DM 라인을 통해 전송될 수도 있다.
호스트 측에서, 블록 (810) 에서, 메모리 제어기 (420) 는 호스트 측 인터페이스 (430) 를 통해 메모리 측에 판독 커맨드를 발행할 수도 있다. 그 후에, 블록 (820) 에서, 호스트 측 인터페이스 (430) 는 메모리 측으로부터 (예컨대, DQ 라인들을 통해) 판독 데이터를 그리고 (예컨대, DM 라인을 통해) 판독 보호 코드를 수신할 수도 있다. 블록 (830) 에서,호스트 측 인터페이스 (430) 는 판독 보호 코드에 기초하여 판독 데이터에 에러가 존재하는지 여부를 검출할 수도 있다. 대안적으로, 호스트 측 디코더 (434) 는 판독 보호 코드에 기초하여 판독 데이터 및/또는 DM 데이터에 에러가 존재하는지 여부를 검출할 수도 있다. 블록 (840) 에서, 호스트 측 디코더 (434) 는, 예컨대 임의의 비트 에러(들)가 검출될 때, 필요에 따라 판독 데이터를 정정할 수도 있다. 블록 (850) 에서, 호스트 측 인터페이스 (430) 는 판독 데이터를 메모리 제어기 (420) 에 제공할 수도 있다. 호스트 측 디코더 (434) 가 판독 데이터를 정정하는 경우에, 정정된 판독 데이터가 메모리 제어기 (420) 에 제공될 수도 있다.
구체적으로 도시되지 않았지만, 호스트 (410) 는 다수의 메모리 디바이스들 (450) 과 통신할 수도 있다. 방법 (700) 또는 방법 (800) 의 모든 블록들이 수행될 필요가 있는 것은 아님에 유의하여야 한다. 또한, 방법 (700) 의 블록들 및/또는 방법 (800) 의 블록들은 임의의 특정 순서로 수행될 필요는 없다.
도 9 는 전술된 메모리 서브시스템 (400) 과 통합될 수도 있는 다양한 전자 디바이스들을 예시한다. 예를 들어, 작은 폼 팩터, 극히 낮은 프로파일을 필요로 하는 모바일 폰 디바이스 (902), 랩톱 컴퓨터 디바이스 (904), 및 웨어러블 디바이스들, 포터블 시스템들은 본원에 기술된 메모리 서브시스템 (400) 을 통합하는 디바이스/패키지 (900) 를 포함할 수도 있다. 디바이스/패키지 (900) 는, 예를 들어, 집적 회로들, 다이들, 집적된 디바이스들, 집적된 디바이스 패키지들, 집적 회로 디바이스들, 디바이스 패키지들, 집적 회로 (IC) 패키지들, 패키지-온-패키지 디바이스들, 시스템 인 패키지 디바이스들 중 어느 것일 수도 있다. 도 9 에서 예시된 디바이스들 (902, 904, 906) 은 단지 예시적인 것이다. 다른 전자 디바이스들이 또한, 모바일 디바이스들, 핸드-헬드 퍼스널 통신 시스템 (PCS) 유닛들, 퍼스널 디지털 어시스턴트들과 같은 포터블 데이터 유닛들, 글로벌 포지셔닝 시스템 (GPS) 인에이블드 디바이스들, 내비게이션 디바이스들, 셋 톱 박스들, 뮤직 플레이어들, 비디오 플레이어들, 엔터테인먼트 유닛들, 미터 리딩 장비와 같은 고정 위치 데이터 유닛들, 통신 디바이스들, 스마트폰들, 태블릿 컴퓨터들, 컴퓨터들, 웨어러블 디바이스들, 서버들, 라우터들, 자동차 (예컨대, 자율주행 자동차) 에서 구현되는 전자 디바이스들, 또는 데이터 또는 컴퓨터 명령들을 저장 또는 취출하는 임의의 다른 디바이스, 또는 이들의 임의의 조합을 포함하는 디바이스들 (예컨대, 전자 디바이스들) 의 그룹을 비제한적으로 포함하는 디바이스/패키지 (900) 를 특징지을 수도 있다.
제안된 메모리 서브시스템의 하나 이상의 양태들의 이익들의 비망라적인 리스트는 다음과 같다:
Figure 112019018604283-pct00007
메모리 대역폭 손실 및 비용 영향 없이 고속 메모리 링크에 데이터 보호 (예컨대, ECC) 를 적용하는 것의 신뢰성 향상;
Figure 112019018604283-pct00008
아무런 추가적인 메모리 디바이스도 필요하지 않다;
Figure 112019018604283-pct00009
저 전력 메모리 핀 카운트 및 패키지 호환성 유지.
통상의 기술자는, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 이용하여 표현될 수도 있음을 이해할 것이다. 예를 들어, 상기 설명 전체에 걸쳐 참조될 수도 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 조합에 의해 표현될 수도 있다.
또한, 본원에 개시된 예들과 연계하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들, 및 알고리즘들이 전자적 하드웨어, 컴퓨터 소프트웨어, 또는 양자의 조합들로서 구현될 수도 있음을 통상의 기술자는 이해할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환성을 명확하게 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 방법들이 그들의 기능성의 면에서 일반적으로 전술되었다. 그러한 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 부과되는 설계 제약들에 의존한다. 통상의 기술자는 기술된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식으로 구현할 수도 있지만, 이러한 구현 결정들은 본 개시의 범위로부터의 일탈을 야기하는 것으로서 해석되지 않아야 한다.
본원에 개시된 예들과 연계하여 설명된 방법들, 시퀀스들, 및/또는 알고리즘들은 직접 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합에서 구현될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 당해 기술분야에서 알려진 임의의 다른 형태의 저장 매체 내에 상주할 수도 있다. 예시적인 저장 매체는 프로세서와 커플링되어, 프로세가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기입할 수 있도록 한다. 대안에서, 저장 매체는 프로세서에 통합될 수도 있다.
따라서, 일 양태는 상술된 디바이스들의 임의의 것을 구현하는 컴퓨터 판독가능 매체들을 포함할 수 있다. 따라서, 개시된 주제의 범위는 나타낸 예들에 한정되지 않고, 본원에 기술된 기능성을 수행하기 위한 임의의 수단들이 포함된다.
전술한 개시물은 예시적인 예들을 나타내지만, 첨부된 청구항들에 의해 정의된 바와 같은 개시된 주제의 범위로부터 벗어나지 않으면서 다양한 변화들 및 수정들이 본원 내에서 이루어질 수 있음에 유의하여아 한다. 본원에 기술된 예들에 따른 방법 청구항들의 기능들, 프로세스들 및/또는 액션들은 임의의 특정 순서로 수행될 필요는 없다. 또한, 개시된 주제의 엘리먼트들은 단수로 기재되거나 청구될 수도 있지만, 단수에 대한 제한이 명시적으로 언급되지 않는 한 복수가 고려된다.

Claims (30)

  1. 메모리 디바이스로서,
    메모리 뱅크;
    링크를 통해 호스트로부터 기입 커맨드를 수신하고,
    상기 링크를 통해 상기 호스트로부터 기입 데이터 및 기입 보호 코드를 수신하며,
    상기 기입 커맨드에 응답하여 상기 메모리 뱅크에 상기 기입 데이터를 저장하고,
    상기 링크를 통해 상기 호스트로부터 판독 커맨드를 수신하고,
    상기 판독 커맨드에 응답하여 상기 메모리 뱅크로부터 판독 데이터를 취출하며, 그리고
    상기 링크를 통해 상기 호스트에 상기 판독 데이터 및 판독 보호 코드를 전송도록
    구성된 메모리 측 인터페이스;
    상기 기입 보호 코드에 기초하여 상기 기입 데이터가 에러를 갖는지 여부를 검출하도록 구성된 메모리 측 디코더; 및
    상기 메모리 뱅크로부터 취출된 상기 판독 데이터에 기초하여 상기 판독 보호 코드를 생성하도록 구성된 메모리 측 인코더를 포함하고,
    상기 링크는 복수의 데이터 (DQ) 라인들, 마스크 기입 동작들에서 사용하기 위한 데이터 마스크 (DM) 라인, 및 판독 동작들에서 타이밍을 제공하기 위해 상기 메모리 디바이스에 의해 사용하기 위한 판독 스트로브 클럭 라인을 포함하고, 그리고
    상기 메모리 측 인터페이스는,
    상기 복수의 DQ 라인들을 통해 상기 기입 데이터를 수신하고 상기 판독 데이터를 전송하고,
    상기 판독 스트로브 클럭 라인을 통해 상기 기입 보호 코드를 수신하며, 그리고
    상기 DM 라인을 통해 상기 판독 보호 코드를 전송하도록 구성되는, 메모리 디바이스.
  2. 제 1 항에 있어서,
    상기 기입 보호 코드, 또는 상기 판독 보호 코드, 또는 상기 기입 보호 코드 및 상기 판독 보호 코드는 패리티 코드를 포함하는, 메모리 디바이스.
  3. 제 1 항에 있어서,
    상기 메모리 측 디코더는, 상기 메모리 측 인터페이스가 정정된 상기 기입 데이터를 상기 메모리 뱅크에 저장하도록, 상기 기입 데이터에서 상기 에러가 검출될 때 상기 기입 데이터를 정정하도록 구성되는, 메모리 디바이스.
  4. 제 1 항에 있어서,
    상기 메모리 측 인터페이스는 상기 DM 라인을 통해 상기 호스트로부터 DM 데이터를 수신하도록 구성되고, 그리고
    상기 메모리 측 디코더는, 상기 기입 보호 코드에 기초하여 상기 기입 데이터, 또는 상기 DM 데이터, 또는 상기 기입 데이터 및 상기 DM 데이터가 상기 에러를 갖는지 여부를 검출하도록 구성되는, 메모리 디바이스.
  5. 제 1 항에 있어서,
    상기 메모리 측 인코더는, 상기 판독 데이터에 추가하여 제로아웃된 DM 마스크에 기초하여 상기 판독 보호 코드를 생성하도록 구성되는, 메모리 디바이스.
  6. 제 1 항에 있어서,
    상기 메모리 측 인터페이스는, 상기 판독 데이터의 전송의 종료가 상기 판독 보호 코드의 전송의 종료와 일치하도록, 상기 판독 데이터 및 상기 판독 보호 코드를 전송하도록 구성되는, 메모리 디바이스.
  7. 제 1 항에 있어서,
    상기 기입 보호 코드 및 상기 판독 보호 코드의 일방 또는 양방은 에러 정정 코드들 (ECC) 인, 메모리 디바이스.
  8. 제 1 항에 있어서,
    상기 기입 보호 코드는 상기 메모리 디바이스에서 저장되지 않는, 메모리 디바이스.
  9. 제 1 항에 있어서,
    상기 메모리 디바이스는 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 모바일 디바이스, 모바일 폰, 스마트폰, 퍼스널 디지털 어시스턴트, 고정 위치 단말기, 태블릿 컴퓨터, 컴퓨터, 웨어러블 디바이스, 랩톱 컴퓨터, 서버, 및 자동차에서의 디바이스로 이루어지는 그룹으로부터 선택된 디바이스 내로 통합되는, 메모리 디바이스.
  10. 호스트로서,
    판독 및 기입 커맨드들을 발행하도록 구성된 메모리 제어기;
    링크를 통해 상기 메모리 제어기로부터 메모리 디바이스에 상기 기입 커맨드를 전송하고,
    상기 링크를 통해 상기 메모리 디바이스에 기입 데이터 및 기입 보호 코드를 전송하며,
    상기 링크를 통해 상기 메모리 제어기로부터 상기 메모리 디바이스에 판독 커맨드를 전송하고,
    상기 판독 커맨드가 전송되는 것에 후속하여, 상기 링크를 통해 상기 메모리 디바이스로부터 판독 데이터 및 판독 보호 코드를 수신하고, 그리고
    상기 판독 데이터를 상기 메모리 제어기에 제공하도록
    구성된 호스트 측 인터페이스;
    상기 기입 데이터에 기초하여 상기 기입 보호 코드를 생성하도록 구성된 호스트 측 인코더; 및
    상기 판독 보호 코드에 기초하여 상기 판독 데이터가 에러를 갖는지 여부를 검출하도록 구성된 호스트 측 디코더를 포함하고,
    상기 링크는 복수의 데이터 (DQ) 라인들, 마스크 기입 동작들에서 사용하기 위한 데이터 마스크 (DM) 라인, 및 판독 동작들에서 타이밍을 제공하기 위해 상기 메모리 디바이스에 의해 사용하기 위한 판독 스트로브 클럭 라인을 포함하고, 그리고
    상기 호스트 측 인터페이스는,
    상기 복수의 DQ 라인들을 통해 상기 기입 데이터를 전송하고 상기 판독 데이터를 수신하고,
    상기 판독 스트로브 클럭 라인을 통해 상기 기입 보호 코드를 전송하며, 그리고
    상기 DM 라인을 통해 상기 판독 보호 코드를 수신하도록 구성되는, 호스트.
  11. 제 10 항에 있어서,
    상기 기입 보호 코드, 또는 상기 판독 보호 코드, 또는 상기 기입 보호 코드 및 상기 판독 보호 코드는 패리티 코드를 포함하는, 호스트.
  12. 제 10 항에 있어서,
    상기 호스트 측 디코더는, 상기 호스트 측 인터페이스가 정정된 상기 판독 데이터를 상기 메모리 제어기에 제공하도록, 상기 판독 데이터에서 상기 에러가 검출될 때 상기 판독 데이터를 정정하도록 구성되는, 호스트.
  13. 제 10 항에 있어서,
    상기 호스트 측 인터페이스는 상기 DM 라인을 통해 DM 데이터를 상기 메모리 디바이스에 전송하도록 구성되고, 그리고
    상기 호스트 측 인코더는 상기 기입 데이터 및 상기 DM 데이터에 기초하여 상기 기입 보호 코드를 생성하도록 구성되는, 호스트.
  14. 제 10 항에 있어서,
    상기 DM 라인을 통해 수신된 상기 판독 보호 코드는 상기 판독 데이터 및 제로아웃된 DM 마스크에 기초하여 생성된 코드인, 호스트.
  15. 제 10 항에 있어서,
    상기 호스트 측 인터페이스는, 상기 기입 데이터의 전송의 종료가 상기 기입 보호 코드의 전송의 종료와 일치하도록, 상기 기입 데이터 및 상기 기입 보호 코드를 전송하도록 구성되는, 호스트.
  16. 제 10 항에 있어서,
    상기 기입 보호 코드 및 상기 판독 보호 코드의 일방 또는 양방은 에러 정정 코드들 (ECC) 인, 호스트.
  17. 제 10 항에 있어서,
    상기 호스트는 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 모바일 디바이스, 모바일 폰, 스마트폰, 퍼스널 디지털 어시스턴트, 고정 위치 단말기, 태블릿 컴퓨터, 컴퓨터, 웨어러블 디바이스, 랩톱 컴퓨터, 서버, 및 자동차에서의 디바이스로 이루어지는 그룹으로부터 선택된 디바이스 내로 통합되는, 호스트.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
KR1020197005234A 2016-08-26 2017-07-07 메모리 시스템에서의 링크 에러 정정 KR102045712B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662380104P 2016-08-26 2016-08-26
US62/380,104 2016-08-26
US15/643,455 US10331517B2 (en) 2016-08-26 2017-07-06 Link error correction in memory system
US15/643,455 2017-07-06
PCT/US2017/041129 WO2018038813A1 (en) 2016-08-26 2017-07-07 Link error correction in memory system

Publications (2)

Publication Number Publication Date
KR20190043540A KR20190043540A (ko) 2019-04-26
KR102045712B1 true KR102045712B1 (ko) 2019-11-15

Family

ID=61242685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197005234A KR102045712B1 (ko) 2016-08-26 2017-07-07 메모리 시스템에서의 링크 에러 정정

Country Status (20)

Country Link
US (1) US10331517B2 (ko)
EP (1) EP3479241B1 (ko)
JP (1) JP6630869B2 (ko)
KR (1) KR102045712B1 (ko)
CN (1) CN109643257B (ko)
AU (2) AU2017315303B2 (ko)
BR (1) BR112019003473A2 (ko)
CA (1) CA3032278C (ko)
CO (1) CO2019001630A2 (ko)
ES (1) ES2829331T3 (ko)
IL (1) IL264303B (ko)
MX (1) MX2019002194A (ko)
MY (1) MY201067A (ko)
PH (1) PH12019500160A1 (ko)
RU (1) RU2710977C1 (ko)
SA (1) SA519401035B1 (ko)
SG (1) SG11201900375YA (ko)
TW (1) TWI684102B (ko)
WO (1) WO2018038813A1 (ko)
ZA (1) ZA201901194B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579966B1 (en) 2021-08-05 2023-02-14 SK Hynix Inc. Semiconductor system related to performing a training operation

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107039086A (zh) * 2017-05-17 2017-08-11 西安紫光国芯半导体有限公司 具有兼容不同数据长度的纠错功能的存储器和纠错方法
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US10725912B2 (en) * 2018-12-19 2020-07-28 Micron Technology, Inc. Power loss protection in memory sub-systems
US11537464B2 (en) * 2019-06-14 2022-12-27 Micron Technology, Inc. Host-based error correction
US11372717B2 (en) * 2019-08-30 2022-06-28 Qualcomm Incorporated Memory with system ECC
CN110750406B (zh) * 2019-10-29 2023-10-31 湖南国科微电子股份有限公司 一种检测方法、装置和soc芯片
US11493949B2 (en) * 2020-03-27 2022-11-08 Qualcomm Incorporated Clocking scheme to receive data
US11728003B2 (en) 2020-05-12 2023-08-15 Qualcomm Incorporated System and memory with configurable error-correction code (ECC) data protection and related methods
US11157359B2 (en) * 2020-09-24 2021-10-26 Intel Corporation Techniques to implement a hybrid error correction code scheme
US11687273B2 (en) * 2021-09-29 2023-06-27 Micron Technology, Inc. Memory controller for managing data and error information
CN114006819A (zh) * 2021-11-03 2022-02-01 北京天融信网络安全技术有限公司 一种检测策略生成及装置、数据传输方法及装置
US20230170037A1 (en) * 2021-11-30 2023-06-01 Qualcomm Incorporated Hybrid memory system with increased bandwidth
US20240126438A1 (en) * 2022-10-18 2024-04-18 Qualcomm Incorporated Metadata registers for a memory device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006313616A (ja) 2005-05-03 2006-11-16 Samsung Electronics Co Ltd 半導体メモリ装置及びその装置のデータストローブ信号発生方法
JP2011507140A (ja) 2007-12-21 2011-03-03 モーセッド・テクノロジーズ・インコーポレイテッド 電力削減機能を有する不揮発性半導体メモリデバイス

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996031952A1 (en) * 1995-04-03 1996-10-10 Matsushita Electric Industrial Co., Ltd. Data transmission system, data recording and reproducing apparatus and recording medium each having data structure of error correcting code
US7032056B2 (en) * 2003-05-08 2006-04-18 International Business Machines Corporation Encoding of message onto strobe signals
KR100978268B1 (ko) * 2004-07-15 2010-08-26 엘에스산전 주식회사 분산 제어 시스템의 고속 이중화 데이터 복사 보드
CN101060015A (zh) * 2007-05-23 2007-10-24 北京芯技佳易微电子科技有限公司 一种多比特闪存及其错误检测和纠正的方法
US8255783B2 (en) 2008-04-23 2012-08-28 International Business Machines Corporation Apparatus, system and method for providing error protection for data-masking bits
US8341498B2 (en) * 2010-10-01 2012-12-25 Sandisk Technologies Inc. System and method of data encoding
US8707133B2 (en) * 2011-12-05 2014-04-22 Lsi Corporation Method and apparatus to reduce a quantity of error detection/correction bits in memory coupled to a data-protected processor port
CN102546755A (zh) * 2011-12-12 2012-07-04 华中科技大学 云存储系统的数据存储方法
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
US9064606B2 (en) 2012-12-20 2015-06-23 Advanced Micro Devices, Inc. Memory interface supporting both ECC and per-byte data masking
US9164834B2 (en) * 2013-05-06 2015-10-20 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems including the same and method of writing data in the same
CN105468292B (zh) * 2014-09-05 2019-04-23 群联电子股份有限公司 数据存取方法、存储器储存装置及存储器控制电路单元
US9558066B2 (en) * 2014-09-26 2017-01-31 Intel Corporation Exchanging ECC metadata between memory and host system
KR102438552B1 (ko) * 2015-02-04 2022-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
US9965352B2 (en) * 2015-11-20 2018-05-08 Qualcomm Incorporated Separate link and array error correction in a memory system
US20180059976A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Storage System with Integrated Components and Method for Use Therewith

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006313616A (ja) 2005-05-03 2006-11-16 Samsung Electronics Co Ltd 半導体メモリ装置及びその装置のデータストローブ信号発生方法
JP2011507140A (ja) 2007-12-21 2011-03-03 モーセッド・テクノロジーズ・インコーポレイテッド 電力削減機能を有する不揮発性半導体メモリデバイス

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11579966B1 (en) 2021-08-05 2023-02-14 SK Hynix Inc. Semiconductor system related to performing a training operation

Also Published As

Publication number Publication date
ES2829331T3 (es) 2021-05-31
AU2019222960A1 (en) 2019-09-26
US20180060171A1 (en) 2018-03-01
CN109643257B (zh) 2020-07-03
MX2019002194A (es) 2019-06-24
JP6630869B2 (ja) 2020-01-15
NZ750205A (en) 2020-10-30
AU2017315303A1 (en) 2019-02-07
ZA201901194B (en) 2020-12-23
MY201067A (en) 2024-02-01
JP2019525356A (ja) 2019-09-05
IL264303A (en) 2019-02-28
IL264303B (en) 2019-08-29
PH12019500160A1 (en) 2019-11-11
CA3032278A1 (en) 2018-03-01
CN109643257A (zh) 2019-04-16
BR112019003473A2 (pt) 2019-05-21
CO2019001630A2 (es) 2019-05-10
TWI684102B (zh) 2020-02-01
AU2017315303B2 (en) 2020-06-18
EP3479241A1 (en) 2019-05-08
WO2018038813A1 (en) 2018-03-01
TW201810056A (zh) 2018-03-16
KR20190043540A (ko) 2019-04-26
CA3032278C (en) 2021-01-12
SG11201900375YA (en) 2019-03-28
SA519401035B1 (ar) 2021-11-06
AU2019222960B2 (en) 2020-10-15
RU2710977C1 (ru) 2020-01-14
US10331517B2 (en) 2019-06-25
EP3479241B1 (en) 2020-08-19

Similar Documents

Publication Publication Date Title
KR102045712B1 (ko) 메모리 시스템에서의 링크 에러 정정
EP3377974B1 (en) Separate link and array error correction in a memory system
US20240126439A1 (en) Non-deterministic memory protocol
CN108351820B (zh) 在跨存储器链路传送纠正数据时保护ecc位置
US8135935B2 (en) ECC implementation in non-ECC components
US9015553B2 (en) Data integrity in memory controllers and methods
US8042023B2 (en) Memory system with cyclic redundancy check
US10061645B2 (en) Memory array and link error correction in a low power memory sub-system
US10121532B2 (en) Apparatus, method and system for performing successive writes to a bank of a dynamic random access memory
KR20120049436A (ko) 에러 검출 코드를 이용한 데이터 처리 장치, 데이터 처리 방법, 데이터 스큐 보상 방법 및 데이터 처리 장치를 포함하는 반도체 장치
CN112867993A (zh) 用于嵌入式ecc保护的方法及系统
CN114048151A (zh) 主机内存访问方法、装置及电子设备
NZ750205B2 (en) Link error correction in memory system
KR20140028914A (ko) 압축병렬테스트방법을 제공하는 반도체메모리장치

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