KR101500635B1 - 비-ecc 컴포넌트에서의 ecc 구현 - Google Patents

비-ecc 컴포넌트에서의 ecc 구현 Download PDF

Info

Publication number
KR101500635B1
KR101500635B1 KR1020097021820A KR20097021820A KR101500635B1 KR 101500635 B1 KR101500635 B1 KR 101500635B1 KR 1020097021820 A KR1020097021820 A KR 1020097021820A KR 20097021820 A KR20097021820 A KR 20097021820A KR 101500635 B1 KR101500635 B1 KR 101500635B1
Authority
KR
South Korea
Prior art keywords
memory
data
address
ecc
physical
Prior art date
Application number
KR1020097021820A
Other languages
English (en)
Other versions
KR20100015704A (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 KR20100015704A publication Critical patent/KR20100015704A/ko
Application granted granted Critical
Publication of KR101500635B1 publication Critical patent/KR101500635B1/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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • 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
    • 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

Abstract

비-ECC 호환 컴포넌트들에서 에러 정정 코드(ECC) 검사를 실시하기 위한 방법 및 장치가 개시된다. 상기 방법은 논리 주소를 수신하는 단계를 포함하며, 상기 논리 주소는 메모리의 제1 및 제2 논리 주소들에 매핑된다. 상기 메모리의 제1 및 제2 물리 주소들은 각각 데이터 및 대응 ECC를 저장하는 메모리 위치들에 대응된다. 상기 방법은 상기 논리 주소를 제1 및 제2 물리 주소들로 변환하는 단계와, 데이터 경로를 통해 데이터를 억세스하는 단계와, 동일한 데이터 경로를 통해 ECC를 별도로 억세스하는 단계와, 그리고 상기 ECC를 사용하여 데이터의 무결성을 검사하는 단계를 포함한다.

Description

비-ECC 컴포넌트에서의 ECC 구현{ECC IMPLANTATION IN NON-ECC COMPONENTS}
본 발명은 컴퓨터 시스템에 관한 것이며, 보다 구체적으로는 메모리 서브시스템(subsystem)에서의 에러 검사 및 정정에 관한 것이다.
많은 하이엔드 컴퓨터 시스템들은 그 메모리 서브시스템 내에 'ECC'라고 알려진 피처를 포함한다. ECC(에러 정정 코드, 또는 대안적으로는, 에러 검사 및 정정)는 메모리 내에서 손상된 데이터(corrupted data)를 검출하고, 가능하다면, 그 손상된 데이터를 정정하기 위하여 사용된다. 메모리 내의 데이터는 자연 방사선, 전자 노이즈, 고장난 컴포넌트 등의 다양한 원인에 의해 손상될 수 있다.
ECC 서브시스템들은 대상 메모리 컨텐츠를 에러 정정 코드들을 형성하기 위한 추가의 비트들을 계산하기 위한 기초로서 사용함으로써 동작한다. ECC를 이루는 데이터 및 비트들은 모두 메모리 내에 저장된다. 일부 ECC 호환(ECC-compliant) 시스템들(예를 들어, 일부 RAID 시스템들)에서는, ECC를 구성하는 비트들이 상기 시스템들이 보호하는 데이터와는 별개로 저장될 수 있다. 다른 ECC 호환 컴퓨터 시스템들에서는, ECC를 구성하는 비트들과 데이터를 저장하기 위해 특별한 메모리 디바이스들이 사용된다. 이 메모리 디바이스들은 보호되는 데이터와 함께 ECC들을 저장 하기 위하여 추가적인 저장 공간(일 유형에서 12.5%)을 필요로한다. 상기 추가적인 저장 공간은, 메모리 제어기와 메모리 사이에서 추가적인 비트들을 운반하기 위하여, 추가적인 상호접속부들(예를 들어, 커넥터들 및 회로 트레이스들)을 필요로 한다. ECC 메모리 컴포넌트들은 하이엔드 컴퓨터 시스템들에서 주로 사용되므로, 상기 컴포넌트들의 사용이 규모의 경제를 이룰정도로 충분히 널리 보급되지는 않았다. 그러므로, 메모리 서브시스템에서 ECC의 실시는 상당한 추가 비용을 요구할 수 있다.
비용 요소에 부가하여, 일부 컴퓨터 시스템들에서 ECC 메모리의 실시는 실현불가능한 것일 수 있다. 예를 들어, 랩탑 컴퓨터 시스템들에서는 추가적인 상호접속부들 및 저장 공간을 구현하기 위한 물리적 공간이 (적어도 사용가능한 경우라면) 현저하게 제한된다. 공간은 일부 데스크탑 컴퓨터 시스템들에서도 제한될 수 있다. 그러므로, 다른 경우에는 ECC 호환 컴포넌트들을 사용하는 것이 바람직하다 하더라도, 그러한 시스템들에서는 ECC 호환 컴포넌트들을 사용하는 것이 가능하지 않을 수 있다.
비-ECC 호환 컴포넌트(non-ECC-compliant component)들에서 에러 정정 코드(ECC) 검사를 실시하기 위한 방법 및 장치가 개시된다. 일 실시예에서, 상기 방법은 메모리의 제1 및 제2의 물리 주소에 매핑되는 논리 주소를 수신하는 단계를 포함한다. 메모리의 제1 및 제2의 물리 주소들은 각각 데이터 및 대응 ECC를 저장하는 메모리 위치들에 대응된다. 상기 방법은 논리 주소를 제1 및 제2의 물리 주소들로 변환(translation)하는 단계와, 데이터 경로(data path)를 통해 상기 데이터를 억세스하는 단계와, 동일한 데이터 경로를 통해 상기 ECC에 별도로 억세스하는 단계와, 그리고 상기 ECC를 사용하여 상기 데이터의 무결성(integrity)을 검사하는 단계를 더 포함한다.
일 실시예에서, 메모리 시스템은 메모리, 데이터 경로, 그리고 상기 데이터 경로에 의해 상기 메모리에 연결된 메모리 제어기를 포함한다. 상기 메모리 제어기는 논리 주소를 수신하기 위하여 연결되며, 상기 논리 주소를 제1 및 제2의 물리 주소들로 변환하도록 되어있다. 상기 제1 물리 주소는 데이터가 저장되는 메모리 위치에 대응되며, 상기 제2 물리 주소는 상기 데이터와 관련된 ECC가 저장되는 메모리 위치에 대응된다. 상기 메모리 제어기는 또한 상기 데이터 경로를 통해 상기 데이터에 억세스하고, 별도로 상기 데이터 경로를 통해 상기 ECC에 억세스하고, 그리고 상기 ECC를 사용하여 상기 데이터의 무결성을 검사하도록 되어있다.
다양한 실시예들에서, 데이터 일부의 저장 및 그것에 관련된 ECC는 그것이 메모리의 동일 페이지 또는 행(row)에 존재하도록 배열될 수 있다. 이러한 방식으로, 데이터 및 그것의 대응 ECC 모두에 억세스하기 위해서는 단지 단일 행 주소(두개의 별개인 열(column) 주소들을 따라 있는)만이 제공될 필요가 있다. 단지 하나의 행 주소만이 필요하기 때문에, 억세스 페널티(access penalty)(별개의 행이 프리차지(precharge)되어야만 하는 억세스 페널티)가 회피될 수 있다. 일반적으로, 주어진 메모리 디바이스 내의 데이터 및 ECC들의 배열은, 데이터의 비트들 및 그것의 대응 ECC들의 비트들이 물리적으로 인접한 위치들 내에 저장될 수 있게끔 배열된다.
본 발명의 다른 양상들은 다음의 상세한 설명 및 첨부의 도면들을 참조로 명백해질 것이다.
도 1은 컴퓨터 시스템의 일 실시예의 도면이다.
도 2는 메모리 서브시스템의 일 실시예의 도면이다.
도 3은 메모리 내부의 부분들이 에러 정정 코드들(ECC)을 저장하기 위하여 예비된(reserved), 메모리의 일 실시예의 어드레싱을 도시하는 도면이다.
도 4는 데이터 및 그것에 관련된 ECC들이 메모리의 동일 페이지 내에 저장되게 하기 위하여 주소 비트들을 치환(permutation)하는 방법의 일 실시예를 도시하는 도면이다.
도 5는 메모리 모듈의 일 실시예를 도시하는 도면이다. 그리고
도 6은 ECC 서브시스템을 비-ECC 호환 메모리 디바이스들과 함께 사용하여 데이터의 무결성을 검증하는 일 실시예의 흐름도이다.
본 발명은 다양한 변형 및 대안적인 형태들로 되는 것이 가능하지만, 그것의 구체적인 실시예들은 도면에 예로서 도시되며, 본 명세서에서 상세하게 설명될 것이다. 그러나, 그것의 도면 및 설명은 본 발명을 개시된 특정 형태로 제한하려 의도된 것이 아니며, 반면에, 본 발명은 첨부된 청구항들에 의해 정의되는 것과 같이, 본 발명의 사상 및 범주내에 있는 모든 수정, 등가, 그리고 대체물들을 포함한다는 것을 이해해야 한다.
이제 도 1을 참조하면, 컴퓨터 시스템(300)의 일 실시예가 도시된다. 도 1의 실시예에서, 컴퓨터 시스템(300)은 몇개의 프로세싱 노드들(312A, 312B, 312C, 312D)을 포함한다. 각각의 프로세싱 노드는 각각의 프로세싱 노드(312A-312D) 내에 포함된 메모리 제어기(316A-316D)를 통해 각각의 메모리(314A-314D)에 연결된다. 추가적으로, 프로세싱 노드들(312A-312D)은 프로세싱 노드들(312A-312D) 사이에서 서로 통신하기 위해 사용되는 인터페이스 로직을 포함한다. 예를 들어, 프로세싱 노드(312A)는 프로세싱 노드(312B)와 통신하기 위한 인터페이스 로직(318A)과, 프로세싱 노드(312C)와 통신하기 위한 인터페이스 로직(318B)과, 또 다른 프로세싱 노드(도시되지 않음)와 통신하기 위한 제3 인터페이스 로직(318C)을 포함한다. 유사하게, 프로세싱 노드(312B)는 인터페이스 로직(318D, 318E, 318F)를 포함한하고, 프로세싱 노드(312C)는 인터페이스 로직(318G, 318H, 318I)을 포함하며, 프로세싱 노드(312D)는 인터페이스 로직(318J, 318K, 318L)을 포함한다. 프로세싱 노드(312D)는 인터페이스 로직(318L)을 통해 복수의 입력/출력 디바이스들과 통신하도록 연결된다. 다른 프로세싱 노드들은 동일한 방식으로 다른 I/O 디바이스들과 통신할 수 있다.
프로세싱 노드들(312A-312D)은 프로세싱 노드 간의 통신(inter-processing node communication)을 위해 패킷 기반의 링크를 사용한다. 이 실시예에서, 상기 링크는 단방향 라인들(예를 들어, 라인들(324A)은 프로세싱 노드(312A)로부터 프로세싱 노드(312B)로 패킷들을 전송하기 위하여 사용되며, 라인들(324B)은 프로세싱 노드(312B)로부터 프로세싱 노드(312A)로 패킷들을 전송하기 위해 사용된다.)의 세트들로서 구현된다. 라인들(324C-324H)의 다른 세트들은 도 4에 도시된 바와 같이 다른 프로세싱 노드들 간에 패킷들을 전송하기 위하여 사용된다. 일반적으로, 라인들(324)의 각각의 세트는 하나 이상의 데이터 라인들과, 상기 데이터 라인들에 대응하는 하나 이상의 클럭 라인들과, 운반되고 있는 패킷의 종류를 나타내는 하나 이상의 제어 라인들을 포함할 수 있다. 상기 링크는 프로세싱 노드들 간의 통신을 위하여 캐시 코히어런트(cache coherent) 방식으로 동작하거나 프로세싱 노드와 I/O 디바이스(또는 PCI 버스 또는 ISA 버스와 같은 종래 구조의 I/O 버스들로의 버스 브리지(bus bridge) 간의 통신을 위하여 논-코히어런트 방식으로 동작한다. 또한, 링크는 도시된 것과 같은 I/O 디바이스들 사이의 데이지-체인 구조(daisy-chain structure)를 사용하여 논-코히어런트(non-coherent) 방식으로 동작할 수 있다. 한 프로세싱 노드에서 또 다른 프로세싱 노드로 전송될 패킷은 하나 이상의 중간 노드들을 통과할 수 있다는 것이 알려져 있다. 예를 들어, 프로세싱 노드(312A)에서 프로세싱 노드(312D)로 전송되는 패킷은 도 4에 도시된 것과 같이 프로세싱 노드(312B) 또는 프로세싱 노드(312C)를 통과할 수 있다. 임의의 적절한 라우팅 알고리즘이 사용될 수 있다. 컴퓨터 시스템(300)의 다른 실시예들은 도 4에 도시된 실시예 보다 더 많은 또는 더 적은 프로세싱 노드들을 포함할 수 있다.
일반적으로, 패킷들은 노드들 사이의 라인들(324) 상에서 하나 이상의 비트 타임들로서 전송될 수 있다. 비트 타임은 대응하는 클럭 라인들 상의 클럭 신호의 상승 또는 하강 에지일 수 있다. 상기 패킷들은 트랜잭션을 개시하기 위한 명령 패 킷들과, 캐시 코히어런시를 유지하기 위한 프로브 패킷(probe packet)들과, 그리고 프로브와 명령들에 응답하기 위한 응답 패킷들을 포함할 수 있다.
프로세싱 노드들(312A-312D)은, 메모리 제어기 및 인터페이스 로직에 부가하여, 하나 이상의 프로세서들을 포함할 수 있다. 일반적으로, 프로세싱 노드는 적어도 하나의 프로세서를 포함하며, 필요에 따라 메모리 및 다른 로직과 통신하기 위한 메모리 제어기를 선택적으로 포함할 수 있다. 보다 구체적으로, 각각의 프로세싱 노드(312A-312D)는 (예를 들어, 도 2-3에 도시된 다양한 구조적 세부사항들 및 동작적 세부사항들을 포함하는) 도 1에 도시된 것과 같은 하나 이상의 프로세서(10) 복제물(copies)를 포함할 수 있다. 하나 이상의 프로세서들은 프로세싱 노드를 형성하거나 프로세서싱 노드 내에 칩 멀티프로세싱(CMP) 또는 칩 멀티쓰레드(CMT) 집적 회로를 포함할 수 있으며, 또는 상기 프로세싱 노드는 임의의 다른 요구되는 내부 구조를 가질 수 있다.
메모리들(314A-314D)은 임의의 적절한 메모리 디바이스들을 포함할 수 있다. 예를 들어, 메모리 (314A-314D)는 하나 이상의 RAMBUS DRAM(RDRAM들), 동기화 DRAM(SDRAM들), DDR SDRAM, 정적 RAM 등을 포함할 수 있다. 컴퓨터 시스템(300)의 주소 공간은 메모리들(314A-314D) 사이에서 분할된다. 각각의 프로세싱 노드(312A-312D)는 어떤 주소들이 어떤 메모리들(314A-314D)에 매핑되는지를 결정하여, 특정 주소에 대한 메모리 요청이 어떤 프로세싱 노드(312A-312D)로 라우팅되어야만 하는지를 결정하기 위하여 사용되는 메모리 맵을 포함할 수 있다. 일 실시예에서, 컴퓨터 시스템(300) 내의 주소에 대한 코히어런시 포인트는 상기 주소에 대응하는 메모 리 저장 바이트들에 연결된 메모리 제어기(316A-316D)이다. 즉, 메모리 제어기(316A-316D)는 대응하는 메모리(314A-314D)에 대한 각각의 메모리 억세스가 캐시 코히어런트 방식으로 발생하게 해준다. 메모리 제어기(316A-316D)는 메모리들(314A-314D)에 인터페이싱하기 위한 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기들(316A-316D)은 메모리 요청들을 대기행렬에 넣기 위한 요청 큐(request queue)들을 포함한다.
일반적으로, 인터페이스 로직(318A-318L)은 링크로부터 패킷들을 수신하기 위한, 그리고 상기 링크 위로 전송될 패킷들을 버퍼링하기 위한 다양한 버퍼들을 포함할 수 있다. 컴퓨터 시스템(300)은 패킷들을 전송하기 위한 임의의 적합한 흐름 제어 메커니즘을 사용할 수 있다. 예를 들어, 일 실시예에서, 각각의 인터페이스 로직(318)은 그 인터페이스 로직이 연결되는 링크의 다른 단부에 있는 수신기 내의 각각의 버퍼 유형 개수의 카운트를 저장한다. 상기 인터페이스 로직은, 수신 인터페이스 로직이 상기 패킷을 저장하기 위한 빈 버퍼(free buffer)를 가지지 않는다면, 패킷을 전송하지 않는다. 수신 버퍼는 전방향(onward)으로 패킷을 라우팅함으로써 비워지므로(freed), 수신 인터페이스 로직은 송신 인터페이스 로직으로 버퍼가 비워졌음을 나타내기 위한 메시지를 전송한다. 이러한 메커니즘은 "쿠폰-기반(coupon-based)" 시스템이라고 지칭된다.
I/O 디바이스들(320A-320B)은 임의의 적합한 I/O 디바이스들일 수 있다. 예를 들어, I/O 디바이스들(320A-320B)은 상기 디바이스들이 연결될 수 있는 또 다른 컴퓨터 시스템과 통신하기 위한 디바이스들(예를 들어, 네트워크 인터페이스 카드 들 또는 모뎀들)을 포함할 수 있다. 또한, I/O 디바이스들(320A-320B)은 비디오 가속기, 오디오 카드, 하드 또는 프롤피 디스크 드라이브들 또는 드라이브 제어기들, SCSI(Small Computer System Interface) 어댑터들 및 전화 카드들, 사운드 카드들, 그리고 GPIB 또는 필드 버스 인터페이스 카드들과 같은 다양한 데이터 취득 카드들을 포함할 수 있다. 또한, 카드로서 구현되는 임의의 I/O 디바이스는 시스템(300)의 주 회로 보드상의 회로 및/또는 프로세싱 노드상에서 실행되는 소프트웨어로서 구현될 수 있다. 용어 "I/O 디바이스" 및 용어 "주변 디바이스"는 본 명세서에서 동의어로 사용되었음에 유의하여야 한다.
또한, 하나 이상의 프로세서들(10)은, 하나 이상의 I/O 배선들 및/또는 메모리에 대한 브릿지에 대한 하나 이상의 프로세서 인터페이스들을 포함한다.
이제 도 2를 참조하면, 메모리 서브시스템의 일 실시예의 도면이 도시된다. 도시된 실시예에서, 메모리 서브시스템은 복수의 메모리 모듈들(314)을 가지는 메모리를 포함한다. 각각의 메모리 모듈(314)은 복수의 메모리 디바이스들(360)을 포함한다. 각각의 모듈 상의 메모리 모듈들(314) 및 메모리 디바이스들(360)의 구체적인 수는 메모리의 사이즈(그리고 최대 가능한 사이즈), 커넥터의 수, 캐시 라인 사이즈, 및 다른 일반적인 요소들과 같은 파라미터들에 따른 상이한 실시예들에 따라 변할 수 있다.
메모리 모듈들(314)은 메모리 버스(350)를 통해 메모리 제어기(316)에 연결된다. 메모리 버스(350)는 메모리 모듈들(314) 및 메모리 제어기(316) 사이에서 데이터를 데이터를 운반하고 신호들을 어드레스하도록 되어 있을 수 있다. 데이터 신 호들은 메모리 버스(350)의 일부인 데이터 경로를 통해 메모리 모듈들(314)로(또는 메모리 모듈들(314)로부터) 운반된다. 주소 신호들은 메모리 제어기(316)로부터 메모리 모듈들(314)로 운반될 수 있으며, 개별 시간들에 전송될 수 있는 개별적인 행 주소 신호들(메모리의 행을 선택하기 위한 것임)과 열 주소 신호들(한 행 내의 특정 주소를 선택하기 위한 것임)을 포함할 수 있다. 데이터 및 에러 정정 코드들(ECC들)은 다양한 메모리 디바이스들(360)을 통해 메모리 모듈들 내에 저장될 수 있다. 예를 들어, 메모리 모듈(314)이 8개의 메모리 디바이스들(360)을 포함한다면, 메모리 디바이스들 각각에 바이트의 1 비트를 저장함으로써 1 바이트의 데이터가 저장될 수 있다.
메모리 제어기(316)는, 메모리로부터 데이터 판독의 무결성을 검증하기 위해 사용될 수 있으며, 일부 경우들에 있어서는, 존재할 수 있는 임의의 에러들을 정정하기 위하여 사용될 수 있는 ECC 서브시스템(340)을 포함한다. ECC 서브시스템(340)은 보호된 데이터에 대하여 ECC를 생성하는 몇개의 서로 다른 잘 알려진 방법들 중 하나를 사용할 수 있다.
일 실시예에서, 메모리 모듈들(314)은 (본 기술 분야에서 이해되는 것와 같은) ECC-호환 메모리 모듈들이 아니다. 그러나, ECC를 저장하기 위하여 메모리 모듈들(314) 내에서 메모리 공간이 예비(reserve)될 수 있다. 예를 들어, 일 실시예에서, 메모리 모듈의 사용가능한 주소 공간 중 1/8이 ECC용으로 예비될 수 있으며, 나머지 7/8은 데이터 저장용으로 예비될 수 있다. ECC용으로 예비된 메모리 부분은 어플리케이션들에서는 보이지 않을 수 있으며, 따라서 메모리 제어기(316) 내에서 ECC 서브시스템(340)에 의해서만 사용된다. 데이터 저장용으로 예비된 주소들 및 ECC 저장용으로 예비된 주소들로 메모리 주소 공간을 분할하는 것은 이제 도 3과 관련하여 보다 자세하게 논의될 것이다.
도 3은 메모리 내부의 부분들이 ECC 저장용으로 예비된 메모리의 일 실시예의 어드레싱을 도시한다. 도시된 실시예에서, 메모리(414)는 논리 주소 공간 및 물리 주소 공간 모두로 보여진다. 논리 주소 공간에서, 메모리의 작은 부분이 ECC 저장용으로 예비되며, 주소 공간의 대부분은 데이터 저장용으로 예비된다. 저장된 ECC 각각은 그것들을 위해 예비된 주소 공간 내에 저장된 데이터 블럭들에 대응한다. 데이터 저장을 위해 예비된 주소 공간은 데이터 저장 및 검색(retrieval)을 위해 요구되는 소프트웨어 애플리케이션들에 의해 액세스될 수 있다. 반면, ECC 저장용으로 예비된 주소 공간은 소프트웨어 애플리케이션들에 의해 액세스되지 않을 수 있으며, 그것들에게는 보이지 않을(invisible) 수 있다. ECC 저장을 위한 부분은 도 2에 도시된 것과 같은 ECC 서브시스템들에게는 보일(visible) 수 있다.
물리 주소 공간에서, 데이터 및 대응 ECC는 페이지들, 또는 메모리의 행들에 따라 배열된다. 이러한 특정 실시예에서, 데이터의 특정 블록에 대응하는 ECC는 페이지 경계(page boundary) 부근에 위치하며, 데이터 블록은 동일 페이지 내에 존재한다. 이는, 액세스될 데이터 및 그것의 대응 ECC 모두에 대해 단일 행 주소가 전송될 수 있으므로, 보다 효율적인 액세스가 될 수 있게 한다. 즉, 데이터의 유닛과 그 대응하는 ECC는 동일한 열, 그러나 서로 다른 행들 내에 저장될 수 있다. ECC 및 대응 데이터 모두를 억세스하기 위하여 단지 단일 행 주소만이 송신될 필요가 있게끔, ECC 및 대응 데이터를 배열함으로써, 행을 프리차지하는 것과 관련한 억세스 패널티가 회피될 수 있다. 따라서, ECC는 그것들이 보호하는 데이터 부근의 주소 위치들에 저장된다. 일반적으로, 이러한 배열은 ECC를 저장하기 위해 1/n(예를 들어, n=8일때 1/8) 주소들을, ECC에 의해 보호될 데이터를 저장하기 위해 나머지 (n-1)/n(예를 들어, 7/8) 주소들을 예비한 결과이다.
데이터 및 대응 ECC의 다른 배열들이 가능하며, 고려된다. 예를 들어, 일 실시예에서, 대응 ECC를 저장하기 위하여 사용될 메모리 내의 실제 장소를 계산하기 위하여, 모든 사용자가 요청한 저장 장소의 수치적 주소가 곱해질 수 있다. 이것은 ECC가 저장될 수 있는 데이터 블록들 사이에 1/n(예를 들어, 1/8) 갭이 생기게 할 것이다.
도 4는 데이터 및 그것의 관련된 ECC들이 메모리의 동일 페이지 내에 저장되게 하기 위하여 주소 비트들을 치환하는 방법의 일 실시예를 도시하는 도면이다. 도시된 실시예에서, 논리 주소 공간의 특정 부분(여기에서 A8 A7 A6 A5 A4 A3 A2 A1 A0)은 ECC 저장용으로 예비된다. 보다 구체적으로는, 이 예에서 데이터 저장을 위해 사용가능한 가장 높은 논리 주소는 110_111_111이다. 따라서, 이 예에서 모든 논리 주소들 111_xxx_xxx은 ECC 저장을 위해 예비되며, 나머지 논리 주소들은 데이터 저장을 위해 예비된다.
데이터 범위에 대응되는 ECC를 저장하기 위한 물리 주소 공간을 예비하기 위하여, 주소 비트들이 치환될 수 있다. 그러므로, 도면에서 도시된 바와 같이, 물리 주소들의 일 특정 범위에 대해, 일정 주소 비트들을 치환(즉, 스와핑(swapping))함 으로써 대응하는 ECC의 물리 주소를 얻을 수 있다. 이 예에서, 주소 비트 A8, A7, A6이 대응 ECC를 저장하기 위한 물리 주소를 얻기 위하여 주소 비트 A5, A4, A3과 스와핑된다. 메모리에 제공되는 결과 주소는 A5 A4 A3 A8 A7 A6 A2 A1 A0 이다. 따라서, 물리 주소들 A5 A4 A3 A8 x x x 의 범위에 저장된 데이터에 대해, 대응 ECC는 물리 주소 A5 A4 A3 1 1 1 A2 A1 A0 에 저장될 수 있다.
이러한 방식으로 주소 비트들을 치환하는 것은 데이터 및 대응 ECC들을 보다 효율적으로 액세스할 수 있게 해줄 수 있다. 주소 비트들은 ECC들이 대응하는 데이터 블럭들과 동일한 페이지 내에 저장되게끔 하는 방식으로(위의 예에서와 같이) 치환될 수 있으며, 또한 도 3에 도시된 것과 같이 페이지 경계부에 저장될 수 있다. 따라서, 단일 행 주소에 대응하는 메모리 페이지에 대해, 데이터 및 그 대응 ECC는 모두 동일한 행(그러나 서로 다른 열)에 저장될 것이다. 그러므로, 단일 행 주소는 ECC 및 데이터 모두를 억세스하기 위해 송신될 수 있으며, 그것들의 대응 열 주소들이 개별적으로 송신된다. 이러한 방식으로, 데이터 블럭 및 대응 ECC 모두를 억세스하는 것은, 이러한 방식이 아니었다면 두개의 서로 다른 행 주소들로부터 정보를 억세스하기 위해 필요했을 두개의 프리차지 사이클 대신, 하나의 프리차지 사이클을 필요로 하며, 따라서 억세스의 레이턴시(latency)를 최소화할 것이다.
도 5는 메모리 모듈의 일 실시예를 도시하는 도면이다. 도시된 실시예에서, 메모리 모듈(314)은 기술분야에서 현재 이해되는 것과 같은 ECC-호환 메모리 모듈이 아니다. 최신의 ECC-호환 메모리 모듈들에서는, 일반적으로 ECC들만을 위한 추가적인 저장장치가 제공된다. 이 추가적인 저장장치는 메모리 모듈의 PCB(인쇄 회 로 기판) 상에 장착된 추가적인 메모리 디바이스들에 의해 제공될 수 있다. 부가적으로, ECC-호환 메모리 모듈들(그리고 일반적인 ECC-호환 메모리) 사이의 데이터 경로는 ECC들이 대응하는 보호 데이터와 동시에 운반될 수 있게 하기 위해 더 넓게 되어 있다.
반면에, 도 5에 도시된 메모리 모듈(314)은 ECC 호환에 대한 어떤 특별한 고려없이 데이터 저장용으로 설계된다. 그럼에도 불구하고, 본 명세서에서 개시된 기법들을 사용하여, ECC들의 사용이 이러한 유형의 메모리 모듈들에서 실시될 수 있을 것이다.
이러한 특정 실시예에서, 메모리 모듈(314)은 8개의 메모리 디바이스들을 포함한다. 메모리 디바이스들(360) 각각은 데이터 블럭의 일부 및 ECC의 일부를 저장할 수 있다. 예를 들어, 1 바이트(8 비트)는, 상기 바이트 중 1비트를 8개의 메모리 디바이스들 각각에 저장함으로써 상기 메모리 모듈(314) 내에 저장될 수 있다. 따라서, 데이터 및 ECC들의 저장은 메모리 모듈(314)의 복수의 메모리 디바이스들에 걸쳐 확산(spread)될 수 있다. 그럼에도 불구하고, 그러한 배열은 저장된 데이터 및 ECC들을, 도 3과 관련하여 앞서서 논의된 물리 주소 공간의 맴을 따라 배열하는데에 적합할 수 있다.
메모리 모듈(314)은 또한 커넥터(370)를 포함하며, 상기 커넥터는 메모리 모듈이 메모리 버스에 연결될 수 있게 해준다. 커넥터(370)는 카드-에지(card-edge) 또는 임의의 다른 적합한 커넥터일 수 있다. 연결부의 데이터 부분의 너비(비트 개수의 측면에서)는 시스템 내에서 사용될 시스템의 캐시 라인에 따라 달라질 수 있 다. 시스템이 ECC-호환 시스템이 아니라면, 캐시 라인은 데이터의 전송을 수용할 정도로는 충분히 넓을 것이나, ECC의 동시 전송을 수용할정도로 충분히 넓지는 않을 것이다. 하기에서 보다 자세히 논의될 바와 같이, 그러한 실시예에서 ECC는 데이터의 전송과는 별개의 전송에서 상기 데이터 버스를 거쳐 운반될 수 있다.
도 6은 ECC 서브시스템을 비-ECC 호환 메모리 디바이스들함께 사용하여 데이터의 무결성을 검증하는 일 실시예의 흐름도이다. 도시된 실시예에서, 방법(600)은 논리 주소(605)의 제공으로 시작된다. 논리 주소는 컴퓨터 시스템 상에서 실행되는 소프트웨어에 의해 메모리 제어기로 제공될 수 있다. 논리 주소를 수신한 후, 메모리 제어기는 상기 논리 주소를 제1 및 제2 물리 주소들(610)로 변환한다. 이 물리 주소들 중 제1 주소는 메모리 내에 저장된 데이터 블럭에 대응하며, 제2 물리 주소는 상기 데이터 블럭의 무결성을 검사하기 위해 사용되는 ECC에 대응한다. 일 실시예에서, 논리 주소는 단일 행 주소 및 두개의 별개인 열 주소들로 변환(translation)된다. 제1 열 주소(행 주소를 따라서 있는)는 데이터 블럭이 저장된 장소에 대응하며, 제2 열 주소(동일한 행 주소를 따라서 있는)는 상기 데이터 블럭과 관련된 ECC에 대응한다.
논리 주소를 제1 및 제2 물리 주소들로 변환함에 따라, 제1 사이클(615) 동안 데이터 경로를 통해 제1 물리 주소로부터 데이터가 억세스될 수 있다. 메모리 시스템이 명백하게 ECC-호환인 표준 폼 팩터(standard form factor)에 대해서 설계되지는 않기 때문에, 데이터에 대응하는 ECC는 분리된 제2 사이클(620) 내에 동일한 데이터 경로를 통해 억세스된다. 따라서, ECC들에 대한 주소 공간을 예비하는 것 및 데이터가 억세스되는 사이클과 별개의 사이클들에서 그것들을 억세스하는 것은 개시된 ECC를 디바이스들에 실시할 수 있게 해주며, 그렇지 않았다면, ECC-호환이 되도록 명백히 설계되지는 않았을 것이다. 데이터 및 그것의 대응 ECC 모두를 억세스 한 후, ECC 하부시스템은 ECC 프로토콜(625)에 따라 데이터의 무결성을 검사할 수 있다. 이 과정은 또한 에러의 검출에 따라 가능하다면 데이터를 정정하는 것을 수반할 것이다.
메모리 내에 기입될 데이터에 대해, ECC들을 생성하고 저장하기 위한 방법이 또한 고려된다. 상기 방법은 데이터가 저장될 장소에 대응하는 논리 주소를 수신하는 것을 고려한다. 데이터 저장을 위한 제1 물리 주소는 논리 주소를 변환하는 것으로부터 유도된다. 대응 ECC를 저장하기 위한 제2 물리 주소는 상기 논리 주소를 사용하여 유도되며, 여기서 상기 논리 주소는 ECC 저장용으로 예비된 주소 공간의 일부에 매핑된다. 데이터가 수신될 때, 그것은 특정한 ECC 프로토콜에 따라 대응하는 ECC를 생성하기 위하여 사용될 수 있다. 상기 데이터는 제1 사이클에서 제1 물리 주소에 있는 메모리에 기입될 수 있다. 제2 사이클에서, 상기 ECC는 제2 물리 주소에 기입될 수 있다. 본 명세서에서 논의된 다른 실시예들에서와 같이, 제1 및 제2 물리 주소들 모두는 공통의 행 주소(그러나, 서로 다른 열 주소들)을 공유할 수 있다.
본 발명이 특정 실시예들를 참조로 설명되었지만, 상기 실시예들은 예시적인 것이며, 본 발명의 범주가 그 실시예들로 제한되는 것은 아니라는 것이 이해될 것이다. 임의의 변형, 수정, 부가, 그리고 개시된 실시예들의 개선이 가능한다. 이러 한 변형, 수정, 부가, 그리고 개선은 다음의 청구항들에서 상세화되는 것에 따라 본 발명의 범주 내에 포함될 수 있다.

Claims (10)

  1. 메모리 서브시스템의 에러 검사 및 정정을 위한 방법으로서,
    상기 메모리 서브시스템의 메모리 제어기에서, 논리 주소를 수신하는 단계와, 상기 논리 주소는 메모리의 제1 물리 주소와 상기 메모리의 제2 물리주소에 매핑되며, 여기서, 상기 제1 물리 주소는 데이터를 저장하도록 되어 있고, 상기 제2 물리 주소는 상기 제1 물리 주소에 저장된 상기 데이터에 대응하는 에러 정정 코드(ECC)를 저장하도록 되어있으며;
    상기 메모리 제어기에서, 상기 논리 주소를 상기 제1 물리 주소 및 제2 물리 주소로 변환(translation)하는 단계와, 상기 논리 주소를 상기 제1 물리 주소 및 제2 물리 주소로 변환하는 단계는 ECC들에 의해 보호되는 데이터가 저장되는 메모리 내의 물리적 위치들에 인접한 물리적 메모리 위치들에 상기 ECC들이 저장되도록 상기 논리 주소의 비트들을 치환하는 것을 포함하며, 상기 치환은 페이지 경계부(page boundary)를 바탕으로 행해지며, 데이터 블록 및 상기 데이터 블록의 대응 ECC에 액세스하기 위해 단일 행(row) 주소 및 2개의 열(column) 주소들이 제공되도록 상기 ECC들은 상기 페이지 경계부 부근에 저장되며;
    상기 메모리 제어기에서, 데이터 경로를 통해 상기 제1 물리 주소로부터 상기 데이터를 억세스하는 단계와;
    상기 메모리 제어기에서, 상기 데이터 경로를 통해 상기 ECC를 별도로 억세스하는 단계와; 그리고
    상기 메모리 제어기에서, 상기 ECC를 사용하여 상기 데이터의 무결성(integrity)을 검사하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1 항에 있어서,
    상기 제1 물리 주소가 임의의 메모리 페이지 내에 위치하며, 상기 제2 물리 주소가 동일한 메모리 페이지 내에 위치하는 것을 특징으로 하는 방법.
  3. 제2 항에 있어서,
    주어진 메모리 페이지에 대해, 데이터 저장을 위하여 물리 주소들의 제1 서 브세트가 예비(reserve)되고, ECC들의 저장을 위하여 물리 주소들의 제2 서브세트가 예비되며, 상기 ECC 각각은 상기 제1 서브세트의 물리 주소에 저장된 데이터와 관련된 것을 특징으로 하는 방법.
  4. 제1 항에 있어서,
    상기 논리 주소를 제1 물리 주소 및 제2 물리 주소로 변환하는 단계는,
    상기 ECC들이 상기 ECC들에 의해 보호되는 데이터가 저장되는 메모리 내의 물리적 위치들에 인접한 물리적 메모리 위치들에 저장되게끔, 상기 논리 주소의 비트들을 치환(permutation)하는 것을 포함하는 것을 특징으로 하는 방법.
  5. 제1 항에 있어서,
    상기 ECC들에 의해 보호되는 데이터에 인접한 주소 위치들 내의 데이터 블럭들 사이의 블럭들에 상기 ECC들을 저장하는 단계를 더 포함하며, 여기서 상기 주소들의 1/n은 ECC들의 저장을 위하여 예비되고, 상기 주소들의 (n-1)/n은 데이터 저장을 위하여 예비되는 것을 특징으로 하는 방법.
  6. 메모리 서브시스템으로서,
    메모리와,
    데이터 경로와, 그리고
    상기 데이터 경로에 의해 상기 메모리에 연결된 메모리 제어기를 포함하며, 여기서 상기 메모리 제어기는 논리 주소를 수신하도록 연결되며, 그리고
    상기 메모리 제어기는,
    상기 논리 주소를 메모리의 제1 물리 주소 및 상기 메모리의 제2 물리 주소로 변환하고, 상기 제1 물리 주소는 데이터를 저장하도록 되어 있고, 상기 제2 물리 주소는 상기 제1 물리 주소에 저장된 상기 데이터에 대응하는 에러 정정 코드(ECC)를 저장하도록 되어 있으며, 상기 메모리 제어기는 ECC들에 의해 보호되는 데이터가 저장되는 메모리 내의 물리적 위치들에 인접한 물리적 메모리 위치들에 상기 ECC들이 저장되도록 상기 논리 주소의 비트들을 치환함으로써, 상기 논리 주소를 상기 제1 물리 주소 및 제2 물리 주소로 변환하고, 상기 치환은 페이지 경계부를 바탕으로 행해지며, 데이터 블록 및 상기 데이터 블록의 대응 ECC에 액세스하기 위해 단일 행(row) 주소 및 2개의 열(column) 주소들이 제공되도록 상기 ECC들은 상기 페이지 경계부 부근에 저장되며;
    상기 데이터 경로를 통해 상기 메모리 내의 상기 제1 물리 주소로부터 데이터를 억세스하고,
    상기 데이터 경로를 통해 상기 제2 물리 주소로부터 상기 ECC를 별도로 억세스하고,
    상기 ECC를 사용하여 상기 데이터의 무결성을 검사하도록 되어 있는 것을 특징으로 하는 메모리 서브시스템.
  7. 제6 항에 있어서,
    상기 제1 물리 주소가 임의의 메모리 페이지 내에 위치하며, 상기 제2 물리 주소가 동일한 메모리 페이지 내에 위치하는 것을 특징으로 하는 메모리 서브시스템.
  8. 제7 항에 있어서,
    주어진 메모리 페이지에 대해, 물리 주소들의 제1 서브세트가 데이터 저장을 위하여 예비되고, 주소들의 제2 서브세트가 ECC들의 저장을 위하여 예비되며, 여기서 각각의 ECC는 상기 제1 서브세트의 물리 주소 내에 저장된 데이터와 관련되는 것을 특징으로 하는 메모리 서브시스템.
  9. 제6 항에 있어서,
    상기 메모리 제어기는, 상기 ECC들에 의해 보호되는 데이터가 저장된 메모리 내의 물리적 위치들에 인접한 물리적 메모리 위치들 내에 상기 ECC들이 저장되도록, 상기 논리 주소의 비트들을 치환하여 상기 논리 주소를 제1 및 제2 물리 주소들로 치환하도록 되어 있으며, 여기서 상기 치환은 페이지 경계부(page boundary)를 바탕으로 행해지는 것을 특징으로 하는 메모리 서브시스템.
  10. 제6 항에 있어서,
    상기 ECC들은 데이터 블럭들 사이의 블럭들 내에 저장되며, 여기서 상기 주소들의 1/n은 ECC들의 저장을 위하여 예비되고, 상기 주소들의 (n-1)/n은 데이터 저장을 위하여 예비되는 것을 특징으로 하는 메모리 서브시스템.
KR1020097021820A 2007-03-20 2008-03-14 비-ecc 컴포넌트에서의 ecc 구현 KR101500635B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/725,922 2007-03-20
US11/725,922 US8135935B2 (en) 2007-03-20 2007-03-20 ECC implementation in non-ECC components
PCT/US2008/003365 WO2008115400A1 (en) 2007-03-20 2008-03-14 Ecc implementation in non-ecc components

Publications (2)

Publication Number Publication Date
KR20100015704A KR20100015704A (ko) 2010-02-12
KR101500635B1 true KR101500635B1 (ko) 2015-03-09

Family

ID=39563549

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097021820A KR101500635B1 (ko) 2007-03-20 2008-03-14 비-ecc 컴포넌트에서의 ecc 구현

Country Status (8)

Country Link
US (1) US8135935B2 (ko)
JP (1) JP5303477B2 (ko)
KR (1) KR101500635B1 (ko)
CN (1) CN101711385B (ko)
DE (1) DE112008000736T5 (ko)
GB (1) GB2461428A (ko)
TW (1) TWI498913B (ko)
WO (1) WO2008115400A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5605238B2 (ja) * 2011-01-25 2014-10-15 ソニー株式会社 メモリシステムおよびその動作方法
US8949686B1 (en) 2011-02-13 2015-02-03 Apple Inc. Protection against word line failure in memory devices
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US9612901B2 (en) 2012-03-30 2017-04-04 Intel Corporation Memories utilizing hybrid error correcting code techniques
US9391637B2 (en) 2012-03-30 2016-07-12 Intel Corporation Error correcting code scheme utilizing reserved space
US20140157043A1 (en) * 2012-03-30 2014-06-05 Joshua D. Ruggiero Memories utilizing hybrid error correcting code techniques
US9323608B2 (en) 2012-06-07 2016-04-26 Micron Technology, Inc. Integrity of a data bus
US9009570B2 (en) 2012-06-07 2015-04-14 Micron Technology, Inc. Integrity of an address bus
US8924832B1 (en) 2012-06-26 2014-12-30 Western Digital Technologies, Inc. Efficient error handling mechanisms in data storage systems
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9652487B1 (en) * 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US8984368B2 (en) * 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
FR2996937B1 (fr) * 2012-10-16 2015-12-11 Bull Sas Procede et dispositif pour ameliorer la fiabilite de memorisation de donnees dans un disque dur comprenant plusieurs plateaux
US10558581B1 (en) 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
KR20160034913A (ko) * 2013-07-25 2016-03-30 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 미―준수 메모리 기술을 포함하거나 이와 인터페이스하는 메모리 모듈에 대한 응답 제어
JP6164003B2 (ja) 2013-09-25 2017-07-19 富士通株式会社 メモリ制御装置、情報処理装置、及び情報処理装置の制御方法
US10402324B2 (en) 2013-10-31 2019-09-03 Hewlett Packard Enterprise Development Lp Memory access for busy memory by receiving data from cache during said busy period and verifying said data utilizing cache hit bit or cache miss bit
KR101500877B1 (ko) 2013-11-28 2015-03-09 엘에스산전 주식회사 전력선 통신의 중계장치 및 중계방법
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US9665423B2 (en) * 2015-06-15 2017-05-30 Nxp Usa, Inc. End-to-end error detection and correction
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
JP6258399B2 (ja) * 2016-05-16 2018-01-10 ウィンボンド エレクトロニクス コーポレーション 半導体装置
US10291258B2 (en) 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
KR102362229B1 (ko) * 2017-08-10 2022-02-11 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
US11119909B2 (en) * 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
FR3100346B1 (fr) 2019-09-04 2022-07-15 St Microelectronics Rousset Détection d'erreurs
FR3100347B1 (fr) * 2019-09-04 2022-07-22 St Microelectronics Rousset Détection d'erreurs
US11468962B2 (en) 2021-03-03 2022-10-11 Micron Technology, Inc. Performing memory testing using error correction code values

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675863A (ja) * 1992-08-26 1994-03-18 Kofu Nippon Denki Kk 誤り検出修正機能付メモリファイル
US6438726B1 (en) * 1999-05-18 2002-08-20 Advanced Micro Devices, Inc. Method of dual use of non-volatile memory for error correction
WO2003102965A1 (en) * 2002-05-31 2003-12-11 Nvidia Corporation Transparent ecc memory system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4727474A (en) * 1983-02-18 1988-02-23 Loral Corporation Staging memory for massively parallel processor
US5263032A (en) * 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5390308A (en) * 1992-04-15 1995-02-14 Rambus, Inc. Method and apparatus for address mapping of dynamic random access memory
WO2000070459A1 (en) * 1999-05-18 2000-11-23 Advanced Micro Devices, Inc. Error correction circuit and method for a memory device
US6675344B1 (en) * 2000-05-01 2004-01-06 Hewlett-Packard Development Company, L.P. Multiple ECC schemes to improve bandwidth
GB0031436D0 (en) * 2000-12-22 2001-02-07 Koninkl Philips Electronics Nv Method and apparatus for data reproduction
US6915479B2 (en) * 2001-05-17 2005-07-05 Matsushita Electric Industrial Co., Ltd. Apparatus and method for error correction
US7308621B2 (en) * 2002-04-30 2007-12-11 International Business Machines Corporation Testing of ECC memories
JP2005173860A (ja) * 2003-12-10 2005-06-30 Sony Corp データ記憶装置、および記憶データ処理方法、並びにコンピュータ・プログラム
US6965537B1 (en) * 2004-08-31 2005-11-15 Micron Technology, Inc. Memory system and method using ECC to achieve low power refresh
TWI277869B (en) * 2005-08-23 2007-04-01 Via Tech Inc Architecture and method for storing data
JP2008108297A (ja) * 2006-10-23 2008-05-08 Toshiba Corp 不揮発性半導体記憶装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675863A (ja) * 1992-08-26 1994-03-18 Kofu Nippon Denki Kk 誤り検出修正機能付メモリファイル
US6438726B1 (en) * 1999-05-18 2002-08-20 Advanced Micro Devices, Inc. Method of dual use of non-volatile memory for error correction
WO2003102965A1 (en) * 2002-05-31 2003-12-11 Nvidia Corporation Transparent ecc memory system
JP2005528712A (ja) * 2002-05-31 2005-09-22 エヌヴィディア コーポレイション トランスペアレントeccメモリシステム

Also Published As

Publication number Publication date
DE112008000736T5 (de) 2010-01-21
WO2008115400A1 (en) 2008-09-25
GB2461428A (en) 2010-01-06
KR20100015704A (ko) 2010-02-12
CN101711385B (zh) 2013-06-12
US20080235485A1 (en) 2008-09-25
TW200845022A (en) 2008-11-16
GB0916720D0 (en) 2009-11-04
US8135935B2 (en) 2012-03-13
JP5303477B2 (ja) 2013-10-02
CN101711385A (zh) 2010-05-19
TWI498913B (zh) 2015-09-01
JP2010522374A (ja) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101500635B1 (ko) 비-ecc 컴포넌트에서의 ecc 구현
KR102426619B1 (ko) 영구 메모리 시스템 등을 위한 데이터 무결성
US8245109B2 (en) Error checking and correction (ECC) system and method
CN102568606B (zh) 用于使用相同存储器类型来支持纠错模式和非纠错模式的系统、方法和器件
US7650557B2 (en) Memory scrubbing of expanded memory
US8738995B2 (en) Memory subsystem having a first portion to store data with error correction code information and a second portion to store data without error correction code information
US20070271495A1 (en) System to detect and identify errors in control information, read data and/or write data
US20050071542A1 (en) Prefetch mechanism for use in a system including a host connected to a plurality of memory modules via a serial memory interconnect
TW201227296A (en) Data transmission device, memory control device, and memory system
US20100185811A1 (en) Data processing system and method
CN112867993A (zh) 用于嵌入式ecc保护的方法及系统
US7376886B2 (en) Method and related apparatus for data error checking
CN108665939B (zh) 为存储器提供ecc的方法与装置
CN110310693B (zh) 具有缓存的In-Line ECC模块
CN111221746B (zh) 数据储存系统与其相关方法
US10911181B2 (en) Method for checking address and control signal integrity in functional safety applications, related products
CN111913668A (zh) 一种ip复用下检纠查存储器数据准确性的方法
JP2003345669A (ja) メモリアクセスエラーを防止するシステム及び方法
US6795938B2 (en) Memory access controller with response faking
JP4773343B2 (ja) キャッシュメモリのためのエラーを認識する方法と装置,およびキャッシュメモリ
CN113454611B (zh) 校验地址和控制信号完整性的方法、相关产品
CN114546709A (zh) 内存校验单元、方法及芯片
JPS5936359B2 (ja) デ−タバツフア装置
JPH04233052A (ja) 二重化メモリ装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 6