KR20210058982A - 어드레스 오류들을 검출하기 위한 시스템들, 방법들, 및 장치 - Google Patents

어드레스 오류들을 검출하기 위한 시스템들, 방법들, 및 장치 Download PDF

Info

Publication number
KR20210058982A
KR20210058982A KR1020217013421A KR20217013421A KR20210058982A KR 20210058982 A KR20210058982 A KR 20210058982A KR 1020217013421 A KR1020217013421 A KR 1020217013421A KR 20217013421 A KR20217013421 A KR 20217013421A KR 20210058982 A KR20210058982 A KR 20210058982A
Authority
KR
South Korea
Prior art keywords
parity
address information
data
address
memory
Prior art date
Application number
KR1020217013421A
Other languages
English (en)
Inventor
데이비드 피터 폴리
Original Assignee
텍사스 인스트루먼츠 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 텍사스 인스트루먼츠 인코포레이티드 filed Critical 텍사스 인스트루먼츠 인코포레이티드
Publication of KR20210058982A publication Critical patent/KR20210058982A/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0763Error or fault detection not based on redundancy by bit configuration check, e.g. of formats or tags
    • 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
    • G06F11/1016Error in accessing a memory location, i.e. addressing 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/024Detection or location of defective auxiliary circuits, e.g. defective refresh counters in decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

어드레스 오류들을 능동적으로 검출하기 위한 안전 메커니즘들에 대한 방법들, 장치, 시스템들, 및 제조품들이 개시된다. 예시적인 시스템은 제1 패리티 생성기(112), 제2 패리티 생성기(128) 및 패리티 검사기(116)를 포함한다. 제1 패리티 생성기(112)는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하는 것이다. 제1 어드레스 정보는 메모리 스토리지 어레이(124) 내에서 데이터를 저장하기 위한 원하는 위치에 대응한다. 제2 패리티 생성기(128)는 제2 어드레스 정보에 기초하여 제2 패리티를 생성하는 것이다. 제2 어드레스 정보는 메모리 스토리지 어레이(124)에서 데이터가 저장되는 실제 위치에 대응한다. 패리티 검사기(116)는 오류를 검출하기 위해 제1 패리티와 제2 패리티를 비교하는 것이다.

Description

어드레스 오류들을 검출하기 위한 시스템들, 방법들, 및 장치
본 개시내용은 일반적으로 시스템 오류들을 프로세싱하는 것에 관한 것이고, 특히 어드레스 오류들(address faults)을 검출하기 위한 시스템들, 방법들, 및 장치에 관한 것이다.
마이크로컨트롤러들은 마이크로컨트롤러가 원하는 프로세스를 수행하기 위해 실행할 수 있는 코딩된 명령어 세트로 기입될 수 있는 자동화된 프로세스들에 유용하다. 예를 들어, 마이크로컨트롤러들은 차량 엔진 제어 시스템들, 생체 의료 디바이스들, 원격 컨트롤러들, 가전 제품들, 전동 공구들 등에 사용될 수 있다.
마이크로컨트롤러들은 적어도 하나의 중앙 처리 유닛(CPU)은 물론, 메모리 및 프로그래밍가능한 입력/출력 디바이스들을 포함할 수 있다. 메모리는 RAM(random access memory), FRAM(ferroelectric random-access memory), NOR(non-exclusive OR) 플래시, OTP ROM(one-time programmable read only memory) 등일 수 있다. 메모리는 CPU의 외부에 있을 수 있다. 대안적으로, 메모리 및 CPU가 동일한 디바이스 상에 본래 있을 수 있다.
프로세서들과 메모리 사이의 데이터의 통로를 제어함으로써 다양한 프로세스들을 조절하는 능력은 마이크로컨트롤러들을 자동화 시스템들의 일체화된 부분으로 만든다.
본 명세서에 개시된 특정 예들은 어드레스 정보의 초기 생성, 및 그 어드레스 정보를 특정 워드라인 인에이블 값들 및 비트라인 인에이블 값들로 디코딩하는 것 사이에 발생할 수 있는 오류들로부터의 증가된 보호를 제공한다. 예시적인 시스템은 제1 패리티 생성기, 제2 패리티 생성기, 및 패리티 검사기를 포함한다. 제1 패리티 생성기는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하는 것이다. 제1 어드레스 정보는 메모리 스토리지 어레이에 데이터를 저장하기 위한 원하는 위치에 대응한다. 제2 패리티 생성기는 제2 어드레스 정보에 기초하여 제2 패리티를 생성하는 것이다. 제2 어드레스 정보는 메모리 스토리지 어레이에서 데이터가 저장되는 실제 위치에 대응한다. 패리티 검사기는 제1 패리티와 제2 패리티를 비교하여 오류를 검출하는 것이다.
도 1은 예시적인 오류 검출 시스템을 예시하는 블록도이다.
도 2는 예시적인 CPU 패리티 생성기를 예시하는 블록도이다.
도 3은 예시적인 메모리 패리티 생성기를 예시하는 블록도이다.
도 4는 예시적인 패리티 검사기를 예시하는 블록도이다.
도 5는 도 1의 오류 검출 시스템을 구현하기 위해 실행될 수 있는 머신 판독가능한 명령어들을 나타내는 흐름도이다.
도 6은 도 2의 CPU 패리티 생성기를 구현하기 위해 실행될 수 있는 머신 판독가능한 명령어들을 나타내는 흐름도이다.
도 7은 도 3의 메모리 패리티 생성기를 구현하기 위해 실행될 수 있는 머신 판독가능한 명령어들을 나타내는 흐름도이다.
도 8은 도 4의 패리티 검사기를 구현하기 위해 실행될 수 있는 머신 판독가능한 명령어들을 나타내는 흐름도이다.
도 9는 도 5, 도 6, 도 7, 및 도 8의 명령어들을 실행하도록 구조화되는 예시적인 프로세싱 플랫폼의 블록도이다.
도면은 비례에 맞게 그려지지 않는다. 일반적으로, 동일하거나 유사한 부분들을 지칭하기 위해 도면(들) 및 첨부된 기재된 설명 전체에 걸쳐 동일한 참조 번호들이 사용될 것이다. 도면들은 선명한 선들 및 경계들을 갖는 층들 및 영역들을 보여주지만, 이러한 선들 및/또는 경계들의 일부 또는 전부가 이상화된 것일 수 있다. 실제로, 경계들 및/또는 선들은 관찰불가능하고, 혼합되고/되거나 불규칙할 수 있다.
마이크로컨트롤러들은 프로세스 자동화에서 필수적인 역할을 한다. 프로세스들은 애플리케이션의 성공에 매우 중대하거나 불필요할 수 있고; 이와 관계없이 마이크로컨트롤러의 적절한 기능이 가장 중요하다. 마이크로컨트롤러들에서 발생하는 전형적인 오류들은 메모리 스토리지 어레이, 또는 메모리 스토리지 어레이를 지원하는 주변 디바이스들의 전기적 또는 자기적 간섭으로 인해 발생할 수 있다. 이러한 간섭들은 메모리 또는 로직의 하나 이상의 비트가 상태를 변경하게 하고, 그에 의해 오류가 발생하게 할 수 있다. 이러한 오류들에 대한 전형적인 솔루션들은 에러 정정 코드(error correcting code)(ECC)와 패리티 로직 및/또는 소프트웨어이다. 이러한 솔루션들은 데이터가 올바른 어드레스에 기입되었다는 가정 하에 잘 작동하며, 종종 기입 후에, 기입된 데이터의 재판독을 수반한다. 그러나, CPU에 의해 제시되는 어드레스 정보가 ECC 및/또는 패리티 로직 생성 알고리즘에 포함되어 있더라도, 어드레스 경로에 영구적인 오류가 존재하는 경우, 검출 체계가 오류를 감지하고 프로세서에게 상당한 지연 없이 오류 정정 절차들을 사용할 것을 경고할 수 있다는 보장이 없다. ECC 및 패리티 로직 및/또는 소프트웨어는 예를 들어 데이터 패리티, 데이터 및 어드레스 패리티, 데이터 ECC, 또는 데이터 및 어드레스 ECC일 수 있다.
영구적인 어드레스 오류들을 검출하는 전통적인 방법은 어드레스 위치들이 올바른지를 확인하기 위해 기동(startup) 동안 메모리를 테스트하는 것을 수반한다. 그러나, 이 방법은 마지막 기동 절차 이후 발생한 오류들만을 검출할 수 있다. 또한, 기동 절차는 드물게 실행될 수 있고, 따라서 영구적인 오류들은 긴 기간 동안 검출되지 않은 상태로 남아있을 수 있다.
예를 들어, CPU는 소정의 데이터를 제1 어드레스에 기입하려고 의도할 수 있지만, 어드레스 경로 또는 로직에 오류가 존재한다. 이러한 오류는 데이터가 대신 제2 어드레스에 기입되게 할 것이다. 오류가 일시적 오류인 경우, 위에서 언급된 전통적인 기입-후-판독 방법은 제1 어드레스에 저장된 데이터를 판독하고, 제1 어드레스에 저장된 데이터가 기입 프로세스에서 전송된 데이터와 동일하지 않음을 인식할 것이다. 그러나, 오류가 CPU와 ECC 및/또는 패리티 로직 및/또는 소프트웨어 간에 발생하는 영구적인 오류인 경우, 전통적인 방법은 제1 어드레스에 저장된 데이터를 판독하고 있는 것으로 인식하지만, 실제로는 제2 어드레스에 저장된 데이터를 판독하고 있을 것이다. CPU와 ECC 및 패리티 로직 및/또는 소프트웨어 사이에 영구적인 오류가 발생하는 경우, 제2 어드레스의 데이터가 제1 어드레스에 의도된 데이터로 덮어쓰여질 것이다. CPU는 제2 어드레스의 데이터가 덮어쓰여졌음을 결정할 수 없을 것이고, 이는 애플리케이션에서 안전하지 않은 상태들을 야기할 수 있다.
영구적인 오류의 다른 경우는 ECC 및/또는 패리티 로직 및/또는 소프트웨어와 메모리 사이에서 오류가 발생하는 것이다. 이 경우, 전통적인 방법은 제1 어드레스에 대해 의도된 데이터가 제2 어드레스에 저장되어 있더라도, 그것이 제1 어드레스에 저장되었다고 인식할 것이다. 제2 어드레스가 CPU에 의해 판독될 때, CPU는 제2 어드레스에 저장된 데이터가 해당 어드레스에 대한 올바른 데이터가 아니었음을 알아차릴 것이다. 이러한 유형의 영구적인 오류는 전통적인 방법들에 의해 결국에는 포착되지만, 검출은 지연될 것이고 애플리케이션은 안전하지 않은 상태에 개방된 채로 남아있을 것이다.
CPU와 데이터가 저장되는 메모리 셀 사이에서 발생하는 영구적인 오류들을 해결하기 위해, 패리티 생성기는 프로세서는 물론 메모리에 포함되어, 프로세서에서 사용되는 어드레스 정보로부터는 물론, 데이터가 메모리에 저장되는 어드레스 정보로부터 적어도 2개의 패리티를 생성할 수 있다. 다음으로, 프로세서는 패리티 검사기를 사용하여 2개 이상의 패리티 값을 비교하고, 어드레스 정보 생성과 데이터가 메모리에 저장된 어드레스 정보 사이에 영구적인 오류가 발생했는지를 결정할 수 있다. 프로세서에서 생성된 어드레스 정보에 대한 제1 패리티를 생성하고, 그 패리티를 메모리에 데이터를 저장하는 데 사용되는 어드레스 정보로부터 생성된 제2 패리티와 비교하는 제안된 방법은 전통적인 ECC 및 패리티 로직 및/또는 소프트웨어 방법들과 함께 사용될 수 있다.
도 1은 예시적인 메모리 스토리지 어레이(124)의 오류 검출을 수행하기 위해 본 개시내용의 교시에 따라 구현될 수 있는 예시적인 오류 검출 시스템(100)의 블록도이다. 오류 검출 시스템(100)은 예시적인 프로세서(102) 및 예시적인 메모리(104)를 포함할 수 있다. 예시된 예에서, 프로세서(102)는 예시적인 중앙 처리 유닛(CPU)이고 메모리(104)는 예를 들어 RAM이다. 대안적으로, 메모리(104)는 임의의 다른 유형의 휘발성 또는 비휘발성 메모리 또는 로직 레지스터일 수 있다.
도 1의 예시된 예에서, CPU(102)는 예시적인 어드레스 생성 유닛(106)을 포함할 수 있다.
어드레스 생성 유닛(106)은 예시적인 기입 어드레스 버스(108)에 결합된다. 기입 어드레스 버스(108)는 메모리(104)에 데이터를 기입하기 위해, 어드레스 정보로서 알려진 원하는 위치를 식별하는 정보를 전달한다. 데이터는 예시적인 기입 데이터 버스(110)에 의해 메모리(104)에 기입될 것이다. 기입 어드레스 버스(108)는 또한 예시적인 CPU 패리티 생성기(112)에 결합된다. CPU 패리티 생성기(112)는 CPU 패리티 생성기 출력(114)에 의해 예시적인 패리티 검사기(116)에 결합된다. 다음으로, 패리티 검사기(116)는 패리티 검사기(116)의 외부에 있는 CPU(102)의 부분에 결합된다. CPU(102)는 또한 예시적인 ECC 및 패리티 버스(136)에 의해 메모리(104)에 결합되는 ECC 및/또는 패리티 로직 및/또는 소프트웨어(134)를 포함한다. 위에 나열된 상이한 컴포넌트들 간의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
도 1의 예시된 예에서, CPU(102)는 어드레스 생성 유닛(106)을 포함한다. 일부 예들에서, 어드레스 생성 유닛(106)은 CPU 내의 어드레스 데이터 피연산자들에 대해 필요한 계산들을 수행하고 어드레스들을 생성하는 기능을 한다. 어드레스 생성 유닛(106)은 4 세트의 레지스터 트리플렛은 물론, 전체 가산기, 오프셋 가산기, 및 모듈로 가산기를 포함한다. 레지스터 트리플렛들은 각각 어드레스 레지스터, 오프셋 레지스터, 및 수정자 레지스터를 포함한다. 가산기들은 레지스터들과 함께 기능하여, 어드레스 정보를 생성하기 위해 레지스터들 내에 저장된 정보에 대한 연산들을 수행한다. 어드레스 생성 유닛(106)은 해시된 값들, 2진 값들, 16 진수 값들 등을 포함하는 다양한 데이터 유형으로서 정보를 표현할 수 있다.
예시된 예에서, CPU(102)는 특정 입력 데이터 유형으로부터 적어도 하나의 패리티 비트를 결정하는 CPU 패리티 생성기(112)를 포함한다. 아래에 설명되는 바와 같이, 패리티 비트는 그로부터 패리티 비트가 생성되는 데이터 내의 단일-비트 에러를 검사하기 위해 사용된다. CPU(102)는 또한 2개의 상이한 패리티 생성기로부터의 적어도 2개의 패리티 비트를 비교하는 패리티 검사기(116)를 포함한다. 패리티 비트들을 비교한 후, 패리티 검사기(116)는 CPU(102)의 상이한 부분과 통신하고 패리티 검사의 결과를 통신해야 한다.
도 1의 예시된 예에서, 기입 어드레스 버스(108) 및 기입 데이터 버스(110)는 다양한 방식으로 구현될 수 있다. 기입 어드레스 버스(108) 및 기입 데이터 버스(110)는 어드레스 정보 및 데이터를 메모리 스토리지 어레이(124) 내의 원하는 위치에 전송한다. 어드레스 및 데이터 버스들의 예시적인 구현들은 버스 상의 각각의 데이터 또는 어드레스 정보 값에 대해 하나의 와이어를 사용하는 것, 배선 구성의 복잡성을 감소시키는 방법으로서 멀티플렉서들을 사용하는 것 등을 포함할 수 있다.
예시된 예에서, 메모리(104)는 어드레스 디코더(118), 메모리 스토리지 어레이(124), 어드레스 인코더(126), 및 메모리 패리티 생성기(128)를 포함한다. 어드레스 디코더(118)는 기입 어드레스 버스(108)에 결합되고, 워드라인들(120) 및 비트라인들(122)에 의해 메모리 스토리지 어레이(124)에 결합된다. 메모리 스토리지 어레이(124)는 워드라인들(120) 및 비트라인들(122)에 의해 어드레스 인코더(126)에 결합된다. 어드레스 인코더(126)는 또한 메모리 패리티 생성기(128)에 결합된다. 메모리 패리티 생성기(128)는 CPU(102) 내의 패리티 검사기(116)에 결합된다.
어드레스 디코더(118)는 어드레스 정보의 데이터 유형을 메모리 스토리지 어레이(124)에 필요한 입력 데이터 유형으로 변환하기 위한 하드웨어 또는 소프트웨어 요소들을 포함할 수 있다. 이 변환은 물리적 로직 게이트들의 사용을 통해, 또는 소프트웨어의 부울 대수의 사용을 통해 행해질 수 있다. 하드웨어 구현으로서, 어드레스 디코더(118)는 기입 어드레스 버스(108) 상의 신호들을, 다음으로 워드라인들(120) 및 비트라인들(122)에 급전(energize)하는 데 사용되는 더 많은 수의 신호로 변환하는 다수의 디멀티플렉서를 포함할 수 있다.
급전된 워드라인들(120) 및 비트라인들(122)은 기입 데이터 버스(110) 상에 정보를 저장하기 위한 메모리 스토리지 어레이(124) 내의 실제 위치를 지정하는 데 사용되는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트를 생성한다.
도 1의 예시된 예에서, 메모리 스토리지 어레이(124)는 메모리(104)에서 사용되는 프로그래밍가능한 로직 어레이, 필드 프로그래밍가능한 게이트 어레이 등일 수 있다. 메모리(104)는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 하드 드라이브 등으로 구현될 수 있다. 예시된 예에서, 워드라인들(120) 및 비트라인들(122)은 데이터를 저장하기 위한 메모리 스토리지 어레이(124) 내의 특정 어드레스 정보를 선택하는 행-열 쌍들에 대한 지정자들로서 사용된다. 메모리 스토리지 어레이(124)는 DRAM인 예시적인 메모리(104)에서 사용될 수 있다. 예시적인 메모리 스토리지 어레이(124)가 DRAM인 경우, 그것은 수 개의 스위치 및 커패시터를 포함할 수 있다. 스위치들은 금속 산화물 반도체 전계 효과 트랜지스터(MOSFET), 바이폴라 접합 트랜지스터(BJT), 접합 게이트 전계 효과 트랜지스터(JFET), 이종 접합 바이폴라 트랜지스터(HBT) 등과 같은 트랜지스터일 수 있다. 트랜지스터와 커패시터를 함께 사용하면, 단일 비트 데이터에 대응하는 메모리 셀이 형성된다. 워드라인들(120) 및 비트라인들(122)은 데이터를 저장하기 위한 개별 메모리 셀들의 위치를 지정하기 위해 사용된다. 예시적인 메모리 스토리지 어레이(124) 내의 커패시터들은 시간이 지남에 따라 누설을 경험할 수 있으며, 이는 그 안에 저장된 데이터를 손상시킬 것이고, 판독 이벤트 후에 저장된 데이터를 유지하기 위해 재충전을 요구할 수 있다. 이것은 메모리 스토리지 어레이(124) 내의 커패시터들을 재충전하기 위해 워드라인들(120) 및 비트라인들(122)에 급전하는 것에 의해 수행된다. 이러한 반복적인 재급전은 워드라인들(120) 및 비트라인들(122)에 스트레인을 유발할 수 있고, 결국에는 워드라인들(120) 및/또는 비트라인들(122)에서 오류들이 발생하게 한다.
도 1의 예시된 예에서, 메모리(104)는 워드라인들 및 비트라인들(각각 120 및 122) 상의 정보를 인코딩할 어드레스 인코더(126)를 포함한다. 인에이블되는 워드라인들(120) 및 비트라인들(122)의 특정 세트는 워드라인 인에이블 값들 및 비트라인 인에이블 값들이 되고, 이들은 다음으로 어드레스 인코더(126)에 의해 어드레스 정보로 인코딩되어야 한다. 예를 들어, 워드라인들(120) 및 비트라인들(122) 상의 워드라인 인에이블 값들 및 비트라인 인에이블 값들은 어드레스 검사 버스(130) 상에서 메모리 패리티 생성기(128)에 송신되는 어드레스 정보의 크기를 감소시키기 위해, 멀티플렉서 내에 입력된다(예를 들어, 값들이 입력됨). 재-인코딩된 어드레스 정보가 메모리 패리티 생성기(128)에 송신된 후, 메모리 패리티 생성기(128)의 출력은 패리티 검사기(116)에 송신되어야 한다. 메모리 패리티 생성기(128)는 메모리 패리티 생성기(128)로부터의 출력이 CPU(102) 내의 CPU 패리티 생성기(112)로부터 생성된 패리티와 비교될 수 있도록 패리티 검사기(116)에 결합된다. 즉, 오류가 없는 경우, 어드레스 인코더(126)로부터의 출력은 어드레스 생성 유닛(106)으로부터의 출력과 매칭할 것이다. CPU 패리티 생성기(112)에 의한 CPU(102)에서의 패리티 생성, 메모리 패리티 생성기(128)에 의한 메모리(104)에서의 패리티 생성, 및 패리티 검사기(116)에 의한 2개의 패리티의 비교는 CPU(102)와 데이터가 저장되는 위치 사이에서 발생하는 오류들의 적절한 오류 검출을 허용할 것이다.
도 1의 예시된 예에서, 오류 검출 시스템(100)은 어드레스 라인들 상의 오류들을 능동적으로 검출한다. 메모리(104)에 데이터를 저장하기 위한 원하는 어드레스 정보는 처음에 어드레스 생성 유닛(106)에 의해 계산된다. 이 어드레스 정보는 기입 데이터 버스(110)에 데이터를 저장하기 위한 원하는 위치에 대응한다. 다음으로, 어드레스 정보는 기입 어드레스 버스(108)에 송신되고, 메모리(104)는 물론 CPU 패리티 생성기(112)에 송신된다. CPU 패리티 생성기(112)는 기입 어드레스 버스(108) 상의 인코딩된 어드레스 정보로부터 하나 이상의 패리티 비트를 생성한다. 하나 이상의 패리티 비트는 패리티 검사기(116)에 송신된다.
메모리(104)에서, 어드레스 디코더(118)는 기입 어드레스 버스(108)로부터 어드레스 정보를 수신한다. 어드레스 디코더(118)는 하드웨어 또는 소프트웨어의 사용을 통해 어드레스 정보를 디코딩한다. 디코딩된 어드레스 정보는 기입 데이터 버스(110) 상의 데이터가 저장될 실제 어드레스 정보를 결정하는 워드라인들(120) 및 비트라인들(122) 상의 워드라인 인에이블 값들 및 비트라인 인에이블 값들을 생성한다. 다음으로, 워드라인 인에이블 값들 및 비트라인 인에이블 값들은 어드레스 인코더(126)에 의해 하드웨어 또는 소프트웨어의 사용을 통해 인코딩된다. 이 어드레스 정보는 어드레스 검사 버스(130) 상에서 메모리 패리티 생성기(128)에 송신된다. 메모리 패리티 생성기(128)는 수신한 어드레스 정보로부터 하나 이상의 패리티 비트를 생성한다.
하나 이상의 패리티 비트는 메모리 패리티 생성기 출력(132)을 통해 CPU(102) 내의 패리티 검사기(116)에 송신된다. 메모리 패리티 생성기(128)에 의해 생성된 하나 이상의 패리티 비트는 CPU 패리티 생성기(112)에 의해 생성된 하나 이상의 패리티 비트와 비교된다. 다음으로, 결과는 패리티 검사기(116)의 외부에 있는 CPU(102)의 부분에 송신된다. 패리티 검사기(116)에서의 비교 결과는 디지털 하이 값 또는 디지털 로우 값일 수 있다. 예를 들어, 결과가 디지털 하이 값이고 CPU(102)가 디지털 하이 값이 부울 참 값에 대응하도록 설계되면, CPU(102)는 오류가 발생했음을 통지받을 것이다. 대안적으로, CPU(102)가 디지털 하이 값이 부울 거짓 값에 대응하도록 설계되면, CPU(102)는 오류가 발생하지 않았음을 통지받을 것이다. 오류이 발생하지 않은 경우, CPU(102)는 계속해서 오류를 검사할 것이다. 그러나, 오류가 발생한 경우, CPU(102)는 애플리케이션에 대한 에러의 영향을 완화하기 위해 소프트웨어를 규정할 것이다.
도 2는 도 1의 예시적인 CPU 패리티 생성기(112)의 블록도이다. CPU 패리티 생성기(112)는 예시적인 인터페이스(202) 및 예시적인 논리 결정기(204)를 포함한다. 예에서, 인터페이스(202)는 기입 어드레스 버스(108) 및 논리 결정기(204)에 결합된다. 논리 결정기(204)는 CPU 패리티 생성기 출력(114)에 의해 패리티 검사기(116)에 결합될 수 있다. 위에 나열된 상이한 컴포넌트들 사이의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
도 2의 예시된 예에서, 인터페이스(202)는 기입 어드레스 버스(108)와 CPU 패리티 생성기(112) 사이의 연결로서 하드웨어로 구현될 수 있다. 인터페이스(202)는 기입 어드레스 버스(108) 상의 어드레스 정보를 8 비트 정보의 섹션들로 분리할 수 있다. 인터페이스(202)는 대안적으로 동일한 기능을 수행하는 소프트웨어로서 구현될 수 있다. 인터페이스(202)는 2진, 16진, 8진 등을 포함하는 다양한 데이터 유형들에 연결될 수 있다. 인터페이스(202)는 데이터 유형들 중 하나를 논리 결정기(204)가 입력으로 취할 수 있는 임의의 데이터 유형으로 변환할 수 있다.
예시된 예에서, 논리 결정기(204)는 개별 배타적 OR(XOR) 게이트들의 세트로서, 또는 입력 값을 적어도 하나의 패리티 비트로 감소시키는 소프트웨어 부울 방정식으로서, 또는 입력 데이터를 패리티 비트들의 세트로 감소시키는 다른 유형의 소프트웨어로서 구현될 수 있다. XOR 게이트들로 구현될 때, 논리 결정기(204)는 8 비트의 그룹들을 함께 해시하여 각각의 그룹에 대한 단일 패리티 비트를 형성할 수 있다.
도 3은 도 1의 예시적인 메모리 패리티 생성기(128)의 블록도이다. 메모리 패리티 생성기(128)는 예시적인 인터페이스(302) 및 예시적인 논리 결정기(304)를 포함할 수 있다. 인터페이스(302)는 어드레스 검사 버스(130)에 결합될 수 있다. 논리 결정기(304)는 메모리 패리티 생성기 출력(132)에 의해 패리티 검사기(116)에 더 결합된다. 위에 나열된 상이한 컴포넌트들 간의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
도 3의 예시된 예에서, 인터페이스(302)는 기입 어드레스 버스(130)와 메모리 패리티 생성기(128) 사이의 연결로서 하드웨어로 구현될 수 있다. 인터페이스(302)는 기입 어드레스 버스(130) 상의 어드레스 정보를 8 비트 정보의 섹션들로 분리할 수 있다. 인터페이스(302)는 대안적으로 동일한 기능을 수행하는 소프트웨어로 구현될 수 있다. 인터페이스(302)는 2진, 16진, 8진 등을 포함하는 다양한 데이터 유형들에 연결될 수 있다. 인터페이스(302)는 데이터 유형들 중 하나를 논리 결정기(304)가 입력으로 취할 수 있는 임의의 데이터 유형으로 변환할 수 있다.
예시된 예에서, 논리 결정기(304)는 개별 배타적 OR(XOR) 게이트들의 세트로서, 또는 입력 값을 적어도 하나의 패리티 비트로 감소시키는 소프트웨어 부울 방정식으로서, 또는 입력 데이터를 패리티 비트들의 세트로 감소시키는 다른 유형의 소프트웨어로서 구현될 수 있다. XOR 게이트들로 구현될 때, 논리 결정기(304)는 8 비트의 그룹들을 함께 해시하여 각각의 그룹에 대한 단일 패리티 비트를 형성할 수 있다.
도 4는 도 1의 예시적인 패리티 검사기(116)의 블록도이다. 패리티 검사기(116)는 예시적인 인터페이스(402), 예시적인 비교기(404), 및 예시적인 오류 생성기(406)를 포함한다. 인터페이스(402)는 패리티 검사기(116) 외부에 있는 CPU(102)의 부분, CPU 패리티 생성기 출력(114), 메모리 패리티 생성기 출력(132) 등에 결합된다. 위에 나열된 상이한 컴포넌트들 간의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
도 4의 예시된 예에서, 인터페이스(402)는 CPU 패리티 생성기 출력(114), 메모리 패리티 생성기 출력(132), 패리티 검사기(116) 외부에 있는 CPU(102)의 부분, 및 비교기(404)에 결합된다. 인터페이스(402)는 CPU 패리티 생성기 출력(114) 및 메모리 패리티 생성기 출력(132)을 입력으로서 취하고, 2개의 패리티 생성기에 대응하는 패리티 값들을 비교기(404)에 송신한다. 다른 구현들에서, 인터페이스(402)는 CPU 패리티 생성기(112) 및 메모리 패리티 생성기(128)로부터 패리티 비트뿐만 아니라 어드레스 정보를 수신할 수 있다. 앞에서 언급된 구현에서, 인터페이스(402)는 CPU 패리티 생성기(112)로부터 수신된 입력 및 메모리 패리티 생성기(128)로부터 수신된 입력에 대해 어드레스 정보로부터 패리티 비트를 분리할 수 있다. 위에 나열된 상이한 컴포넌트들 간의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
도 4의 예시된 예에서, 비교기(404)는 인터페이스(402) 및 오류 생성기(406)에 결합된다. 비교기(404)는 하드웨어 및/또는 소프트웨어로서 구현될 수 있다. 하드웨어 구현에서, XOR 로직 게이트들은 2개 이상의 패리티 비트를 비교하고, 결과를 생성하고, 그 정보를 오류 생성기(406)에 송신하기 위해 사용될 수 있다. 비교기(404)의 소프트웨어 구현에서, 부울 대수 방정식들의 세트는 적어도 2개의 패리티 비트를 함께 비교한 다음, 그 결과를 오류 생성기(406)에 송신하기 위해 사용될 수 있다. 위에 나열된 상이한 컴포넌트들 사이의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
예시된 예에서, 오류 생성기(406)는 비교기(404) 및 인터페이스(402)에 결합된다. 오류 생성기(406)는 하드웨어 또는 소프트웨어로 구현될 수 있다. 하드웨어 구현으로서, 오류 생성기(406)는 인터페이스(402)에 송신될 하이레벨 또는 로우레벨 신호를 생성하는 로직 게이트들의 세트일 수 있다. 소프트웨어로 구현될 때, 오류 생성기(406)는 비교기(404)의 출력에 종속되는 else/if 문일 수 있다. 오류 생성기(406)로부터의 출력은 인터페이스(402)에 송신되어야 하고, 그에 의해 인터페이스(402)는 패리티 검사기(116) 외부에 있는 CPU(102)의 부분과 통신할 수 있다. 위에 나열된 상이한 컴포넌트들 간의 결합은 애플리케이션에 따라 유선 또는 무선일 수 있다.
CPU 패리티 생성기(112), 메모리 패리티 생성기(128), 및 패리티 검사기(116)는 (예를 들어, 런타임 동안 사용되는) 애플리케이션의 런타임 동안의 오류 검출을 허용하면서 워드라인 및 비트라인 오류들에 대해 가장 큰 커버리지를 제공하는 반면, 이전 솔루션들은 종래의 솔루션들의 부정적인 특성으로 인해 애플리케이션을 기동 또는 셧다운 동안에만 구현될 수 있었음을 알 수 있다. 이전 솔루션들이 전체 테스트를 중단없이 수행하기 위해서는 메모리가 기능적인 사용으로부터 반드시 비활성화되어야 하므로 이전 솔루션은 부정적이다. 이는 시스템 성능에 상당한 영향을 미치는데, 왜냐하면 테스트 중인 메모리는 상당한 시간 동안 이용가능하지 않기 때문이다. 반대로, CPU 패리티 생성기(112), 메모리 패리티 생성기(128), 및 패리티 검사기(116)를 사용할 때, 메모리(104)는 완전하게 기능하는 한편, 오류들 및 시스템 성능에 대한 모니터링은 이전 솔루션들에 의한 것처럼 손상되지 않는다. CPU 패리티 생성기(112), 메모리 패리티 생성기(128), 및 패리티 검사기(116)는 어드레스 정보에 대한 적응형 온-더-플라이 피드백(adaptive, on-the-fly feedback)을 CPU(102)에 제공한다. CPU 패리티 생성기(112), 메모리 패리티 생성기(128), 및 패리티 검사기(116)는 CPU(102) 내에서의 어드레스 정보 생성과 프로세싱 시스템 내의 메모리(104)에서의 어드레스 정보 사용 사이의 루프를 폐쇄함으로써 컴퓨팅 디바이스 사용의 효율성을 향상시킨다. 이는 CPU(102)에서의 어드레스 정보의 초기 생성과, 메모리(104)에서 해당 어드레스 정보를 특정 워드라인 인에이블 값들 및 비트라인 인에이블 값들로 디코딩하는 것 사이에 발생할 수 있는 오류들에 대한 증가된 보호를 허용한다.
도 1의 오류 검출 시스템(100)을 구현하는 예시적인 방식이 도 2, 도 3 및 도 4에 예시되어 있지만, 도 2, 도 3 및 도 4에 예시된 요소들, 프로세스들 및/또는 디바이스들 중 하나 이상은 임의의 다른 방식으로 결합, 분할, 재배열, 생략, 제거 및/또는 구현될 수 있다. 또한, 예시적인 CPU 패리티 생성기(112), 예시적인 메모리 패리티 생성기(128), 예시적인 패리티 검사기(116), 및/또는 보다 일반적으로는 도 1의 예시적인 오류 검출 시스템(100)은 하드웨어, 소프트웨어, 펌웨어, 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 따라서, 예를 들어, 예시적인 CPU 패리티 생성기(112), 예시적인 메모리 패리티 생성기(128), 예시적인 패리티 검사기(116), 및/또는 보다 일반적으로는 예시적인 오류 검출 시스템(100)은 하나 이상의 아날로그 또는 디지털 회로(들), 로직 회로(들), 프로그래밍가능한 프로세서(들), 프로그래밍가능한 컨트롤러(들), GPU(graphics processing unit(s)), DSP(digital signal processor(s)), ASIC(application specific integrated circuit(s)), PLD(programmable logic device(s)), 및/또는 FPLD(field programmable logic device(s))에 의해 구현될 수 있다. 본 특허의 장치 또는 시스템 청구항들 중 임의의 것을 순전히 소프트웨어 및/또는 펌웨어 구현을 포괄하도록 읽을 때, 예시적인 CPU 패리티 생성기(112), 예시적인 메모리 패리티 생성기(128), 예시적인 패리티 검사기(116), 및/또는 예시적인 오류 검출 시스템(100) 중 적어도 하나는 여기에서 소프트웨어 및/또는 펌웨어를 포함한, 메모리, DVD(Digital Versatile Disk), CD(Compact Disk), 블루레이 디스크 등과 같은 비-일시적 컴퓨터 판독가능한 저장 디바이스 또는 저장 디스크를 포함하도록 명시적으로 정의된다. 더 나아가, 도 1의 예시적인 오류 검출 시스템(100)은 도 2, 도 3 및 도 4에 예시된 것들에 더하여, 또는 그를 대신하여 하나 이상의 요소, 프로세스 및/또는 디바이스를 포함할 수 있고/있거나 예시된 요소들, 프로세스들 및 디바이스들 중 전부 또는 임의의 것 중의 하나 초과를 포함할 수 있다. 본 명세서에 사용될 때, "통신하는"이라는 문구는 그것의 변형을 포함하여, 직접 통신 및/또는 하나 이상의 중개 컴포넌트를 통한 간접 통신을 포괄하며, 직접적인 물리적(예를 들어, 유선) 통신 및/또는 지속적인 통신을 요구하는 것이 아니라, 오히려 추가적으로 주기적 간격들, 스케줄링된 간격들, 비-주기적 간격들, 및/또는 일회성 이벤트들에서의 선택적 통신을 포함한다.
도 5에는 도 1의 오류 검출 시스템을 구현하기 위한 예시적인 하드웨어 로직, 머신 판독가능한 명령어들, 하드웨어 구현 상태 머신들, 및/또는 이들의 임의의 조합을 나타내는 흐름도가 도시되어 있다. 머신 판독가능한 명령어들은 도 9와 관련하여 이하에 논의되는 예시적인 프로세서 플랫폼(900)에 도시된 프로세서(912)와 같은 컴퓨터 프로세서에 의한 실행을 위한 실행가능한 프로그램 또는 실행가능한 프로그램의 일부일 수 있다. 프로그램은 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크, 또는 프로세서(912)에 연관된 메모리와 같은 비-일시적 컴퓨터 판독가능한 저장 매체에 저장된 소프트웨어로 구현될 수 있지만, 전체 프로그램 및/또는 그것의 일부는 대안적으로 프로세서(912) 이외의 디바이스에 의해 실행되고/되거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 예시적인 프로그램은 도 5에 예시된 흐름도를 참조하여 설명되지만, 예시적인 오류 검출 시스템(100)을 구현하는 다수의 다른 방법이 대안적으로 사용될 수 있다. 예를 들어, 블록들의 실행 순서가 변경될 수 있고/있거나 설명된 블록들 중 일부가 변경, 제거 또는 결합될 수 있다. 추가적으로 또는 대안적으로, 블록들 중 임의의 것 또는 전부는 소프트웨어 또는 펌웨어를 실행하지 않고도 대응하는 동작을 수행하도록 구조화된 하나 이상의 하드웨어 회로(예를 들어, 이산 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC, 비교기, 연산 증폭기(op-amp), 로직 회로 등)에 의해 구현될 수 있다.
위에서 언급된 바와 같이, 도 1, 도 2, 도 3, 및 도 4의 예시적인 프로세스는 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리, 컴팩트 디스크, 디지털 다용도 디스크, 캐시, 랜덤 액세스 메모리, 및/또는 정보가 임의의 지속시간 동안(예를 들어, 긴 기간 동안, 영구적으로, 짧은 순간 동안, 일시적인 버퍼링을 위해, 및/또는 정보의 캐싱을 위해) 저장되는 임의의 다른 저장 디바이스 또는 저장 디스크와 같은 비-일시적 컴퓨터 및/또는 머신 판독가능한 매체에 저장된 실행가능한 명령어들(예를 들어, 컴퓨터 및/또는 머신 판독가능한 명령어들)을 사용하여 구현될 수 있다. 본 명세서에서 사용될 때, 비-일시적 컴퓨터 판독가능한 매체라는 용어는 임의의 유형의 컴퓨터 판독가능한 저장 디바이스 및/또는 저장 디스크를 포함하고 전파 신호(propagating signals)를 배제하고 전송 매체를 배제하는 것으로 명시적으로 정의된다.
"포함하는(including 및 comprising)"(및 그것의 모든 형태 및 시제)은 여기에서 개방형 종결 용어들로서 사용된다. 따라서, 청구항이 임의의 형태의 "포함한다(include 및 comprise)"(예를 들어, 포함하는(comprises, includes, comprising, including), 갖는(having) 등)를 전제부로서 또는 임의의 종류의 청구항 기재 내에서 사용할 때마다, 대응하는 청구항 또는 기재의 범위를 벗어나지 않고서 추가적인 요소들, 용어들 등이 존재할 수 있음을 이해해야 한다. 본 명세서에 사용될 때, "적어도"라는 문구가 예를 들어 청구항의 전제부에서 전환 용어로서 사용되는 경우, 그것은 "포함하는(comprising 및 including)"이라는 용어가 개방형 종결되는 것과 동일한 방식으로 개방형 종결된다. 본 명세서에 사용될 때, "적어도"라는 문구가 예를 들어 청구항의 전제부에서 전환 용어로서 사용되는 경우, 그것은 "포함하는(comprising 및 including)"이라는 용어가 개방형 종결되는 것과 동일한 방식으로 개방형 종결된다. 예를 들어, A, B 및/또는 C와 같은 형태로 사용될 때의 용어 "및/또는"은 (1) A 단독, (2) B 단독, (3) C 단독, (4) A 및 B, (5) A 및 C, (6) B 및 C, 및 (7) A 및 B 및 C와 같은 A, B, C의 임의의 조합 또는 부분집합을 지칭한다. 여기서 구조들, 컴포넌트들, 항목들, 객체들 및/또는 사물들을 설명하는 맥락에서 사용될 때, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 마찬가지로, 여기서 구조들, 컴포넌트들, 항목들, 객체들 및/또는 사물들을 설명하는 맥락에서 사용될 때, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B, 및 (3) 적어도 하나의 A 및 적어도 하나의 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 여기서 프로세스들, 명령어들, 동작들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 맥락에서 사용될 때, "A 및 B 중 적어도 하나"라는 문구는 (1) 적어도 A, (2) 적어도 B, 및 (3) 적어도 A 및 적어도 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다. 마찬가지로, 여기서 프로세스들, 명령어들, 동작들, 활동들 및/또는 단계들의 수행 또는 실행을 설명하는 맥락에서 사용될 때, "A 또는 B 중 적어도 하나"라는 문구는 (1) 적어도 A, (2) 적어도 B, 및 (3) 적어도 A 및 적어도 B 중 임의의 것을 포함하는 구현들을 지칭하도록 의도된다.
도 5의 프로그램은 도 1의 오류 검출 시스템(100)을 구현하기 위한 프로세스(500)를 도시한다. 프로세스(500)는 프로세스(500)의 시작인 블록(502)을 포함한다. 블록(502)은 프로세서에게 제1 패리티를 생성할 것을 지시할 수 있는 블록이다. 프로세스(500)는 도 2의 예시적인 CPU 패리티 생성기(112)에 대응할 수 있다. 블록(502)에서, CPU 패리티 생성기(112)는 제1 어드레스 정보에 연관된 제1 패리티 비트를 생성한다. 제1 어드레스 정보는 도 1의 CPU(102)의 데이터 피연산자들에 연관된다(예를 들어, 데이터 피연산자들에 기초한다). 제1 어드레스 정보는 기입 어드레스 버스(108)에 의해 메모리(104)에 송신된다. 제1 어드레스 정보는 기입 데이터 버스(110) 상의 데이터가 메모리(104)에 저장될, 원하는 위치일 수 있다.
프로세스(500)는 프로세서에게 제1 어드레스 정보를 워드라인 인에이블 값들 및 비트라인 인에이블 값들로 디코딩할 것을 지시하는 블록인 블록(504)을 포함한다. 이러한 워드라인 인에이블 값들 및 비트라인 인에이블 값들은 도 1의 메모리(104)의 워드라인들(120) 및 비트라인들(122)에 대응한다. 블록(504)은 도 1의 예시적인 하드웨어 구현에 대응할 수 있고, 여기서 블록(504)은 어드레스 디코더(118)로서 하드웨어로 구현될 수 있다.
프로세스(500)는 블록(506)을 포함한다. 블록(506)은 프로세서에게 메모리 스토리지 어레이에 데이터를 저장할 것을 지시하는 블록이다. 메모리 스토리지 어레이는 도 1의 메모리 스토리지 어레이(124)에 대응할 수 있고, 데이터는 도 1의 기입 데이터 버스(110) 상의 데이터에 대응할 수 있다.
프로세스(500)는 블록(508)을 더 포함한다. 블록(508)은 프로세서에게 워드라인 인에이블 값들 및 비트라인 인에이블 값들을 제2 어드레스 정보로 재-인코딩할 것을 지시하는 블록이다. 이 제2 어드레스 정보는 워드라인들(120) 및 비트라인들(122) 상의 워드라인 인에이블 값들 및 비트라인 인에이블 값들에 대응한다. 이 제2 어드레스 정보는 데이터가 메모리 스토리지 어레이에 저장되는 실제 위치이다. 블록(508)은 도 1의 예시적인 하드웨어 구현에 대응할 수 있고, 여기서 블록(508)은 예시적인 어드레스 인코더(126)로서 구현된다. 데이터가 저장되는 메모리 스토리지 어레이는 도 1의 메모리 스토리지 어레이(124)에 대응할 수 있다.
프로세스(500)는 프로세서에게 제2 어드레스 정보에 기초하여 제2 패리티 비트를 생성할 것을 지시하는 블록인 블록(510)을 포함한다. 이 패리티 비트는 워드라인들(120) 및 비트라인들(122) 상의 워드라인 인에이블 값들 및 비트라인 인에이블 값들에 대응한다. 블록(510)은 도 1의 예시적인 메모리(104)의 예시적인 메모리 패리티 생성기(128)에 대응할 수 있다.
프로세스(500)는 또한 프로세서에게 제1 어드레스 정보에 대응하는 제1 패리티 비트와 제2 어드레스 정보에 대응하는 제2 패리티 비트를 비교할 것을 지시하는 블록인 블록(512)을 포함한다. 블록(512)은 도 1의 예시적인 패리티 검사기(116)에 대응할 수 있다.
도 6의 프로세스는 도 5에 보여진 프로세스(500)의 블록(502)을 구현하기 위해 사용될 수 있는 서브-프로세스(600)를 도시한다. 도 1의 예시적인 하드웨어 구현에서, 서브-프로세스(600)는 도 2에 상세하게 보여진 CPU 패리티 생성기(112)에 의해 보여진다. 서브-프로세스(600)는 프로세서에게 CPU(102) 내의 제1 어드레스 정보에 기초하여 패리티 비트를 생성할 것을 지시하는 것이다. 제1 어드레스 정보는 도 1에 도시된 어드레스 생성 유닛(106)에 의해 사용되는 CPU(102) 내의 데이터 피연산자들에 대응한다.
서브-프로세스(600)는 데이터가 메모리 스토리지 어레이에 저장되기 전에 기입 어드레스 버스로부터 제1 어드레스 정보가 수신됨을 지정하는 블록(602)에서 시작한다. 메모리 스토리지 어레이는 도 1의 예시적인 오류 검출 시스템(100) 내의 메모리(104)의 메모리 스토리지 어레이(124)에 대응할 수 있다. 제1 어드레스 정보는 기입 어드레스 버스(108) 상에 있을 수 있다. 블록(602)은 도 2에 도시된 예시적인 CPU 패리티 생성기(112)의 인터페이스(202)에 의해 수행될 수 있다.
서브-프로세스(600) 내의 다음 블록은 예시적인 CPU 패리티 생성기(112)의 인터페이스(202)에게 어드레스 정보를 도 2의 논리 결정기(204)에 송신할 것을 지시하는 블록인 블록(604)이다. 블록(604)은 도 2의 논리 결정기(204)와 인터페이스(202) 간의 결합을 표현할 수 있다.
다음으로, 서브-프로세스(600)에는, 그것에 송신되는 어드레스 정보에 대한 패리티 비트 또는 패리티 비트들을 결정하는 블록인 블록(606)이 있다. 블록(606)은 도 2의 CPU 패리티 생성기(112) 내의 논리 결정(204)으로서의 하드웨어에서 수행될 수 있다. 결정되는 패리티 비트들의 수는 어드레스 정보의 크기에 기초한다. 패리티 비트들은 전형적으로 8 비트 정보의 각각의 세트에 대해 결정된다. 예를 들어, CPU 패리티 생성기(112)에 입력된 데이터는 인터페이스(202)에 의해, 논리 결정기(204)에 의한 사용을 위해 8 비트 세그먼트들로 분리되어야 한다. 32 비트 어드레스 정보에 대해, 논리 결정기(204)는 4 패리티 비트를 결정할 것이다.
다음으로, 서브-프로세스(600)에는, 결정된 패리티 비트들을 패리티 검사기에 송신하는 블록인 블록(608)이 있다. 패리티 검사기는 도 1의 CPU(102)의 패리티 검사기(116)에 대응할 수 있다. 블록(608)은 CPU 패리티 생성기 출력(114)으로서 하드웨어로 표현될 수 있다. 다음으로, 서브-프로세스(600)에는, 서브-프로세스(600)에게 도 5의 프로세스(500)로 복귀할 것을 지시하는 블록인 블록(610)이 있다.
도 7의 프로세스는 도 5에 도시된 프로세스(500)의 블록(510)을 구현하기 위해 사용될 수 있는 서브-프로세스(700)를 도시한다. 도 1의 예시적인 하드웨어 구현에서, 서브-프로세스(700)는 도 3에 상세하게 도시된 메모리 패리티 생성기(128)에 의해 도시된다. 서브-프로세스(700)는 프로세서에게 메모리(104) 내의 제2 어드레스 정보에 기초하여 패리티 비트를 생성할 것을 지시할 수 있다. 제2 어드레스 정보는 도 1에 도시된 메모리(104) 내의 워드라인들(120) 및 비트라인들(122)에 대응하는 워드라인 인에이블 값들 및 비트라인 인에이블 값들에 대응한다.
서브-프로세스(700)는 데이터가 메모리 스토리지 어레이에 저장된 후에 제2 어드레스 정보가 어드레스 검사 버스 상에서 수신됨을 지정하는 블록(702)에서 시작한다. 어드레스 검사 버스는 도 1의 어드레스 검사 버스(130)에 대응할 수 있다. 메모리 스토리지 어레이는 도 1의 메모리(104)의 메모리 스토리지 어레이(124)에 대응할 수 있다. 블록(702)은 도 3에 도시된 예시적인 메모리 패리티 생성기(128)의 인터페이스(302)에 의해 수행될 수 있다.
서브-프로세스(700) 내의 다음 블록은 예시적인 메모리 패리티 생성기(128)의 인터페이스(302)에게 어드레스 정보를 도 3의 논리 결정기(304)에 송신할 것을 지시하는 블록인 블록(704)이다. 블록(704)은 인터페이스(302)와 도 3의 논리 결정기(304) 사이의 결합을 나타낼 수 있다.
다음으로, 서브-프로세스(700)에는, 그것에 송신되는 어드레스 정보에 대한 패리티 비트 또는 패리티 비트들을 결정하는 블록인 블록(706)이 있다. 블록(706)은 도 3의 메모리 패리티 생성기(128) 내의 논리 결정기(304)로서의 하드웨어에서 수행될 수 있다. 결정되는 패리티 비트들의 수는 어드레스 정보의 크기에 기초하여 결정된다. 패리티 비트들은 전형적으로 8 비트 정보의 각각의 세트에 대해 결정된다. 예를 들어, 메모리 패리티 생성기(128)에 입력된 데이터는 인터페이스(302)에 의해, 논리 결정기(304)에 의한 사용을 위해 8 비트 세그먼트들로 분리되어야 한다. 32-비트 어드레스 정보에 대해, 논리 결정기(304)는 4 패리티 비트를 결정할 것이다.
다음으로, 서브-프로세스(700)에는 결정된 패리티 비트들을 패리티 검사기에 송신하는 블록인 블록(708)이 있다. 패리티 검사기는 도 1의 CPU(102)의 패리티 검사기(116)에 대응할 수 있다. 블록(708)은 메모리 패리티 생성기 출력(132)으로서 하드웨어로 표현될 수 있다. 다음으로, 서브-프로세스(700)에는, 서브-프로세스(700)에게 도 5의 프로세스(500)로 복귀할 것을 지시하는 블록인 블록(710)이 있다.
도 8의 프로세스는 도 5에 보여진 프로세스(500)의 블록(512)을 구현하는 데 사용될 수 있는 서브-프로세스(800)를 도시한다. 서브-프로세스(800)는 도 4에 상세히 도시된 패리티 검사기(116)에 의한 도 1의 예시적인 하드웨어 구현으로 도시된다. 서브-프로세스(800)는 프로세서에게 2개 이상의 패리티 비트를 비교할 것을 지시할 수 있다.
서브-프로세스(800)는 프로세서가 제1 패리티 생성기로부터 제1 패리티 비트(들)를 수신할 것을 지정하는 블록(802)에서 시작한다. 제1 패리티 생성기는 도 2에 도시된 CPU 패리티 생성기(112)에 대응할 수 있다. 서브-프로세스(800) 내의 다음 블록은 프로세서가 제2 패리티 생성기로부터 제2 패리티 비트(들)를 수신할 것을 지정하는 블록(804)이다. 제2 패리티 생성기는 도 3에 도시된 메모리 패리티 생성기(128)에 대응할 수 있다. 서브-프로세스(800)의 예시적인 구현이 도 4에 도시되고, 여기서 서브-프로세스(800)의 블록들(802 및 804)은 인터페이스(402)에 의해 수행될 수 있다.
다음으로, 서브-프로세스(800)에는 2개 이상의 패리티 비트를 비교하고 2개 이상의 패리티 비트가 상이한지를 지정하는 블록인 블록(806)이 있다. 서브-프로세스(800)의 블록(806)은 도 4의 예시적인 패리티 검사기(116)에서 비교기(404)로서 구현될 수 있다. 블록(806)이 2개 이상의 패리티 비트를 비교하고 2개 이상의 패리티 비트가 상이하다고 지정하면, 서브-프로세스(800)는 블록(808)으로 이동하고, 그렇지 않은 경우 서브-프로세스(800)는 블록(810)으로 이동한다.
서브-프로세스(800)에서, 블록(808)은 2개 이상의 패리티 비트가 상이함을 지정하는 오류를 생성하는 블록이다. 오류는 제1 어드레스 정보가 제2 어드레스 정보와 상이함을 나타낸다. 제1 어드레스 정보는 어드레스 생성 유닛(106)에 의해 사용되는 CPU(102) 내의 데이터 피연산자들에 대응한다. 제2 어드레스 정보는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트 및 데이터가 저장된 실제 위치에 대응한다. 블록(808)은 도 4의 오류 생성기(406)로서 구현될 수 있다.
다음으로, 서브-프로세스(800)는 블록(808)으로부터 블록(810)으로 진행한다. 블록(810)은 2개 이상의 패리티 비트를 비교한 결과를 패리티 검사기의 외부에 있는 프로세서의 부분에 송신하는 블록이다. 이를 달성하기 위해, 결과는 먼저 인터페이스(402)에 송신될 수 있다. 다음으로, 인터페이스(402)는 패리티 검사기(116)의 외부에 있는 CPU(102)의 부분에 비교 결과를 송신할 수 있다. 이 결과의 값으로부터, CPU(102)는 오류들에 대한 안전 프로토콜들을 규정할지 여부를 결정할 수 있다. 오류들에 대한 안전 프로토콜들은 오류의 영향들을 완화하고 애플리케이션에서 안전하지 않은 조건들을 방지하는 것이다. 서브-프로세스(800) 내의 다음 블록은 서브-프로세스(800)에게 도 5의 프로세스(500)로 복귀할 것을 지시하는 블록인 블록(812)이다.
도 9는 도 1의 시스템을 구현하기 위해 도 5, 도 6, 도 7 및 도 8의 명령어들을 실행하도록 구조화된 예시적인 프로세서 플랫폼(900)의 블록도이다. 프로세서 플랫폼(900)은 예를 들어 서버, 개인용 컴퓨터, 워크스테이션, 셀프-러닝 머신(예를 들어, 신경망), 모바일 디바이스(예를 들어, 휴대 전화, 스마트폰, iPadTM과 같은 태블릿), PDA(personal digital assistant), 인터넷 기기, DVD 플레이어, CD 플레이어, 디지털 비디오 레코더, 블루레이 플레이어, 게임 콘솔, 개인용 비디오 레코더, 셋톱 박스, 헤드셋 또는 다른 웨어러블 디바이스, 또는 임의의 다른 유형의 컴퓨팅 디바이스일 수 있다.
예시된 예의 프로세서 플랫폼(900)은 프로세서(912)를 포함한다. 예시된 예의 프로세서(912)는 하드웨어이다. 예를 들어, 프로세서(912)는 임의의 원하는 제품군 또는 제조업체의 하나 이상의 집적 회로, 로직 회로, 마이크로프로세서, GPU, DSP 또는 컨트롤러에 의해 구현될 수 있다. 하드웨어 프로세서는 반도체 기반(예를 들어, 실리콘 기반) 디바이스일 수 있다. 이 예에서, 프로세서는 CPU 패리티 생성기(112) 및 패리티 검사기(116)를 구현한다.
예시된 예의 프로세서(912)는 로컬 메모리(913)(예를 들어, 캐시)를 포함한다. 예시된 예의 프로세서(912)는 버스(918)를 통해 휘발성 메모리(914) 및 비-휘발성 메모리(916)를 포함하는 메인 메모리와 통신한다. 휘발성 메모리(914)는 SDRAM(Synchronous Dynamic Random Access Memory), DRAM(Dynamic Random Access Memory), RDRAM®(RAMBUS® Dynamic Random Access Memory) 및/또는 임의의 다른 유형의 랜덤 액세스 메모리 디바이스에 의해 구현될 수 있다. 비-휘발성 메모리(916)는 플래시 메모리 및/또는 임의의 다른 원하는 유형의 메모리 디바이스에 의해 구현될 수 있다. 메인 메모리(914, 916)에 대한 액세스는 메모리 컨트롤러에 의해 제어된다. 이 예에서, 휘발성 메모리(914)는 메모리 패리티 생성기(128)를 포함한다.
예시된 예의 프로세서 플랫폼(900)은 또한 인터페이스 회로(920)를 포함한다. 인터페이스 회로(920)는 이더넷 인터페이스, USB(universal serial bus), 블루투스® 인터페이스, NFC(near field communication) 인터페이스, 및/또는 PCI 익스프레스 인터페이스와 같은 임의의 유형의 인터페이스 표준에 의해 구현될 수 있다.
예시된 예에서, 하나 이상의 입력 디바이스(922)가 인터페이스 회로(920)에 연결된다. 입력 디바이스(들)(922)는 사용자가 데이터 및/또는 명령들을 프로세서(912)에 입력하는 것을 허용한다. 입력 디바이스(들)는 예를 들어 오디오 센서, 마이크로폰, 카메라(스틸 또는 비디오), 키보드, 버튼, 마우스, 터치 스크린, 트랙 패드, 트랙볼, 아이소포인트(isopoint) 및/또는 음성 인식 시스템에 의해 구현될 수 있다.
하나 이상의 출력 디바이스(924)는 또한 예시된 예의 인터페이스 회로(920)에 연결된다. 출력 디바이스들(924)은 예를 들어, 디스플레이 디바이스들(예를 들어, LED(light emitting diode), OLED(organic light emitting diode), LCD(liquid crystal display), CRT(cathode ray tube display), IPS(in-place switching) 디스플레이, 터치 스크린 등), 촉각 출력 디바이스, 프린터 및/또는 스피커에 의해 구현될 수 있다. 따라서, 예시된 예의 인터페이스 회로(920)는 전형적으로 그래픽 드라이버 카드, 그래픽 드라이버 칩, 및/또는 그래픽 드라이버 프로세서를 포함한다.
예시된 예의 인터페이스 회로(920)는 또한 송신기, 수신기, 송수신기, 모뎀, 주거용 게이트웨이, 무선 액세스 포인트, 및/또는 네트워크(926)를 통한 외부 머신들(예를 들어, 임의의 종류의 컴퓨팅 디바이스들)과의 데이터 교환을 용이하게 하는 네트워크 인터페이스와 같은 통신 디바이스를 포함한다. 통신은 예를 들어 이더넷 연결, DSL(digital subscriber line) 연결, 전화선 연결, 동축 케이블 시스템, 위성 시스템, 라인-오브-사이트(line-of-site) 무선 시스템, 휴대 전화 시스템 등을 통하는 것일 수 있다.
예시된 예의 프로세서 플랫폼(900)은 또한 소프트웨어 및/또는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스(928)를 포함한다. 이러한 대용량 저장 디바이스(928)의 예들은 플로피 디스크 드라이브들, 하드 드라이브 디스크들, 컴팩트 디스크 드라이브들, 블루레이 디스크 드라이브들, RAID(redundant array of independent disks) 시스템들, 및 DVD(digital versatile disk) 드라이브들을 포함한다.
도 5, 도 6 및 도 8의 머신 실행가능한 명령어들(932)은 대용량 저장 디바이스(928), 휘발성 메모리(914), 비-휘발성 메모리(916), 및/또는 CD 또는 DVD와 같은 이동식 비-일시적 컴퓨터 판독가능한 저장 매체에 저장될 수 있다.
전술한 내용으로부터, (예를 들어, 런타임 동안 사용되는) 애플리케이션의 런타임 동안의 오류 검출을 허용하면서 워드라인 및 비트라인 오류들에 대해 가장 큰 커버리지를 제공하는 예시적인 방법들, 장치, 및 제조품들이 개시되는 반면, 이전 솔루션들은 종래의 솔루션들의 부정적인 특성으로 인해 애플리케이션을 기동 또는 셧다운 동안에만 구현될 수 있었음을 알 수 있다. 이전 솔루션들이 전체 테스트를 중단없이 수행하기 위해서는 메모리가 기능적인 사용으로부터 반드시 비활성화되어야 하므로 이전 솔루션은 부정적이다. 이는 시스템 성능에 상당한 영향을 미치는데, 왜냐하면 테스트 중인 메모리는 상당한 시간 동안 이용가능하지 않기 때문이다. 반대로, 여기에 개시된 예시적인 방법들, 장치 및 제조품들을 사용할 때, 메모리는 완전하게 기능하는 한편, 오류들 및 시스템 성능에 대한 모니터링은 이전 솔루션들에 의한 것처럼 손상되지 않는다. 어드레스 정보에 대한 적응형 온-더-플라이 피드백(adaptive, on-the-fly feedback)을 CPU에 제공하는 예시적인 방법들, 장치 및 제조품들이 개시되었다는 것을 또한 알 수 있다. 개시된 방법들, 장치 및 제조품들은 프로세서 내에서의 어드레스 정보 생성과 프로세싱 시스템 내의 메모리에서의 어드레스 정보 사용 사이의 루프를 폐쇄함으로써 컴퓨팅 디바이스 사용의 효율성을 향상시킨다. 이는 어드레스 정보의 초기 생성과, 해당 어드레스 정보를 특정 워드라인 인에이블 값들 및 비트라인 인에이블 값들로 디코딩하는 것 사이에 발생할 수 있는 오류들에 대한 증가된 보호를 허용한다. 따라서, 개시된 방법들, 장치, 및 제조품들은 컴퓨터의 기능에 있어서의 하나 이상의 개선에 관한 것이다.
본 특허는 이 특허의 청구항들의 범위에 타당하게 속하는 모든 방법, 장치 및 제조품을 포괄한다.

Claims (33)

  1. 시스템으로서,
    메모리 스토리지 어레이에 데이터를 저장하기 위한 원하는 위치에 대응하는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하는 제1 패리티 생성기;
    상기 메모리 스토리지 어레이에서 데이터가 저장되는 실제 위치에 대응하는 제2 어드레스 정보에 기초하여 제2 패리티를 생성하는 제2 패리티 생성기; 및
    오류(fault)를 검출하기 위해 상기 제1 패리티와 상기 제2 패리티를 비교하는 패리티 검사기
    를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 제1 패리티는 상기 제1 어드레스 정보 내의 제1 비트 세트로부터 결정된 제1 패리티 비트를 포함하고, 상기 제2 패리티는 상기 제2 어드레스 정보 내의 제2 비트 세트로부터 결정된 제2 패리티 비트를 포함하는, 시스템.
  3. 제1항에 있어서, 상기 오류는 어드레스 생성 유닛과 상기 메모리 스토리지 어레이 사이에 있는, 시스템.
  4. 제3항에 있어서, 상기 제1 어드레스 정보는 프로세서 내의 데이터 피연산자들에 대응하고, 상기 제2 어드레스 정보는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트에 대응하는, 시스템.
  5. 제4항에 있어서, 상기 프로세서 내의 상기 데이터 피연산자들은 상기 어드레스 생성 유닛에 입력되는, 시스템.
  6. 제4항에 있어서, 상기 워드라인 인에이블 값들의 세트 및 상기 비트라인 인에이블 값들의 세트는 어드레스 디코더에 의해 결정되는, 시스템.
  7. 제4항에 있어서, 어드레스 인코더는 상기 워드라인 인에이블 값들의 세트 및 상기 비트라인 인에이블 값들의 세트를 인코딩하는, 시스템.
  8. 제7항에 있어서, 상기 어드레스 인코더는 상기 제2 패리티 생성기에 대한 입력인, 시스템.
  9. 제1항에 있어서, 상기 패리티 검사기는 상기 제2 어드레스 정보가 상기 제1 어드레스 정보와 매칭하는지를 결정하는, 시스템.
  10. 제1항에 있어서, 상기 시스템은 적어도 데이터 패리티, 데이터 및 어드레스 패리티, 데이터 ECC, 또는 데이터 및 어드레스 ECC와 함께 사용될 수 있는, 시스템.
  11. 제1항에 있어서, 상기 시스템은 애플리케이션의 런타임 동안 사용될 수 있는, 시스템.
  12. 제11항에 있어서, 상기 시스템은 적어도 애플리케이션의 기동 또는 셧다운 동안 상기 오류를 검출할 수 있는, 시스템.
  13. 방법으로서,
    메모리 스토리지 어레이에 데이터를 저장하기 위한 원하는 위치에 대응하는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하는 단계;
    상기 메모리 스토리지 어레이에서 데이터가 저장되는 실제 위치에 대응하는 제2 어드레스 정보에 기초하여 제2 패리티를 생성하는 단계;
    상기 제1 패리티와 상기 제2 패리티를 비교하는 단계; 및
    상기 제1 패리티와 상기 제2 패리티 간의 비교에 기초하여 오류를 검출하는 단계
    를 포함하는, 방법.
  14. 제13항에 있어서, 상기 제1 패리티는 상기 제1 어드레스 정보 내의 제1 비트 세트로부터 결정된 제1 패리티 비트를 포함하고, 상기 제2 패리티는 상기 제2 어드레스 정보 내의 제2 비트 세트로부터 결정된 제2 패리티 비트를 포함하는, 방법.
  15. 제13항에 있어서, 상기 오류는 어드레스 생성 유닛과 상기 메모리 스토리지 어레이 사이에 있는, 방법.
  16. 제13항에 있어서, 상기 제1 어드레스 정보는 프로세서 내의 데이터 피연산자들에 대응하고, 상기 제2 어드레스 정보는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트에 대응하는, 방법.
  17. 제16항에 있어서, 상기 워드라인 인에이블 값들의 세트 및 상기 비트라인 인에이블 값들의 세트는 어드레스 인코더에 입력되는, 방법.
  18. 제13항에 있어서, 상기 방법은 적어도 데이터 패리티, 데이터 및 어드레스 패리티, 데이터 ECC, 또는 데이터 및 어드레스 ECC와 함께 사용될 수 있는, 방법.
  19. 제13항에 있어서, 상기 방법은 애플리케이션의 런타임 동안 사용될 수 있는, 방법.
  20. 제19항에 있어서, 상기 방법은 적어도 하나의 애플리케이션의 기동 또는 셧다운 동안 상기 오류를 검출할 수 있는, 방법.
  21. 유형(tangible)의 컴퓨터 판독가능한 저장 매체로서,
    실행될 때, 프로세서로 하여금 적어도:
    메모리 스토리지 어레이에 데이터를 저장하기 위한 원하는 위치에 대응하는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하고;
    상기 메모리 스토리지 어레이에서 데이터가 저장되는 실제 위치에 대응하는 제2 어드레스 정보에 기초하여 제2 패리티를 생성하고;
    상기 제1 패리티와 상기 제2 패리티를 비교하고;
    상기 제1 패리티와 상기 제2 패리티 간의 비교에 기초하여 오류를 검출하게 하는
    명령어들을 포함하는, 유형의 컴퓨터 판독가능한 저장 매체.
  22. 제21항에 있어서, 상기 제1 패리티는 상기 제1 어드레스 정보 내의 제1 비트 세트로부터 결정된 제1 패리티 비트를 포함하고, 상기 제2 패리티는 상기 제2 어드레스 정보 내의 제2 비트 세트로부터 결정된 제2 패리티 비트를 포함하는, 유형의 컴퓨터 판독가능한 저장 매체.
  23. 제21항에 있어서, 상기 오류는 어드레스 생성 유닛과 상기 메모리 스토리지 어레이 사이에 있는, 유형의 컴퓨터 판독가능한 저장 매체.
  24. 제21항에 있어서, 상기 제1 어드레스 정보는 상기 프로세서 내의 데이터 피연산자들에 대응하고, 상기 제2 어드레스 정보는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트에 대응하는, 유형의 컴퓨터 판독가능한 저장 매체.
  25. 제24항에 있어서, 상기 명령어들은 상기 프로세서로 하여금, 상기 제1 어드레스 정보를 상기 워드라인 인에이블 값들의 세트 및 상기 비트라인 인에이블 값들의 세트로 디코딩하게 하는, 유형의 컴퓨터 판독가능한 저장 매체.
  26. 제24항에 있어서, 상기 명령어들은 상기 프로세서로 하여금, 상기 워드라인 인에이블 값들의 세트 및 상기 비트라인 인에이블 값들의 세트를 어드레스 인코더에 입력하게 하는, 유형의 컴퓨터 판독가능한 저장 매체.
  27. 제24항에 있어서, 상기 명령어들은 상기 프로세서로 하여금, 적어도 애플리케이션의 기동 또는 셧다운 동안 상기 오류를 검출하게 하는, 유형의 컴퓨터 판독가능한 저장 매체.
  28. 제27항에 있어서, 상기 명령어들은 상기 프로세서로 하여금, 상기 애플리케이션의 런타임 동안 상기 오류를 검출하게 하는, 유형의 컴퓨터 판독가능한 저장 매체.
  29. 제21항에 있어서, 상기 명령어들은 상기 프로세서로 하여금, 적어도 데이터 패리티, 데이터 및 어드레스 패리티, 데이터 ECC, 또는 데이터 및 어드레스 ECC와 함께 사용되게 하는, 유형의 컴퓨터 판독가능한 저장 매체.
  30. 장치로서,
    메모리 스토리지 어레이에 데이터를 저장하기 위한 원하는 위치에 대응하는 제1 어드레스 정보에 기초하여 제1 패리티를 생성하는 제1 패리티 생성기; 및
    패리티 검사기
    를 포함하고, 상기 패리티 검사기는:
    상기 제1 패리티 생성기로부터 상기 제1 패리티를 수신하고, 상기 메모리 스토리지 어레이에 데이터가 저장되는 실제 위치에 대응하는 제2 어드레스 정보에 기초하는 제2 패리티를 수신하고;
    상기 제1 패리티와 상기 제2 패리티를 비교하고;
    상기 제1 패리티와 상기 제2 패리티 간의 비교에 기초하여 오류를 검출하는, 장치.
  31. 제30항에 있어서, 상기 제1 어드레스 정보는 프로세서 내의 데이터 피연산자들에 기초하고, 상기 제2 어드레스 정보는 워드라인 인에이블 값들의 세트 및 비트라인 인에이블 값들의 세트에 기초하는, 장치.
  32. 제30항에 있어서, 상기 제1 패리티는 상기 제1 어드레스 정보 내의 제1 비트 세트로부터 결정된 제1 패리티 비트를 포함하고, 상기 제2 패리티는 상기 제2 어드레스 정보 내의 제2 비트 세트로부터 결정된 제2 패리티 비트를 포함하는, 장치.
  33. 제30항에 있어서, 상기 오류는 상기 제1 어드레스 정보의 생성과 상기 메모리 스토리지 어레이 사이에 있는, 장치.
KR1020217013421A 2018-10-05 2019-10-04 어드레스 오류들을 검출하기 위한 시스템들, 방법들, 및 장치 KR20210058982A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/153,546 2018-10-05
US16/153,546 US11055172B2 (en) 2018-10-05 2018-10-05 Systems, methods, and apparatus to detect address faults
PCT/US2019/054784 WO2020072952A1 (en) 2018-10-05 2019-10-04 Systems, methods, and apparatus to detect address faults

Publications (1)

Publication Number Publication Date
KR20210058982A true KR20210058982A (ko) 2021-05-24

Family

ID=70051106

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217013421A KR20210058982A (ko) 2018-10-05 2019-10-04 어드레스 오류들을 검출하기 위한 시스템들, 방법들, 및 장치

Country Status (6)

Country Link
US (1) US11055172B2 (ko)
EP (1) EP3861446A4 (ko)
JP (1) JP7387725B2 (ko)
KR (1) KR20210058982A (ko)
CN (1) CN112867992A (ko)
WO (1) WO2020072952A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2548407A (en) * 2016-03-18 2017-09-20 Memoscale As Coding technique
US20210349781A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery using parity space as recovery space
JP2022043635A (ja) * 2020-09-04 2022-03-16 キオクシア株式会社 メモリシステム
KR102317788B1 (ko) * 2021-05-14 2021-10-26 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 동작 방법
US11769567B2 (en) * 2021-07-19 2023-09-26 Nxp Usa, Inc. Devices and methods for preventing errors and detecting faults within a memory device
US11606099B1 (en) * 2021-09-23 2023-03-14 Texas Instruments Incorporated Fault detection within an analog-to-digital converter
US11853157B2 (en) * 2021-11-17 2023-12-26 Nxp B.V. Address fault detection system
WO2023091172A1 (en) * 2021-11-22 2023-05-25 Silicon Storage Technology, Inc. Address fault detection in a memory system
US11928021B2 (en) * 2022-03-31 2024-03-12 Micron Technology, Inc. Systems and methods for address fault detection

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392302A (en) * 1991-03-13 1995-02-21 Quantum Corp. Address error detection technique for increasing the reliability of a storage subsystem
US5345582A (en) 1991-12-20 1994-09-06 Unisys Corporation Failure detection for instruction processor associative cache memories
US5537425A (en) * 1992-09-29 1996-07-16 International Business Machines Corporation Parity-based error detection in a memory controller
US5453999A (en) * 1994-04-26 1995-09-26 Unisys Corporation Address verification system using parity for transmitting and receiving circuits
GB0322597D0 (en) * 2003-09-26 2003-10-29 Texas Instruments Ltd Soft error correction
DE102010029345A1 (de) * 2010-05-27 2011-12-08 Robert Bosch Gmbh Verfahren zum Erkennen eines Fehlers in einem AD-Wandler durch Paritätsvorhersagen
US8560899B2 (en) * 2010-07-30 2013-10-15 Infineon Technologies Ag Safe memory storage by internal operation verification
JP2013073653A (ja) 2011-09-28 2013-04-22 Elpida Memory Inc 半導体装置
US9075741B2 (en) * 2011-12-16 2015-07-07 Intel Corporation Dynamic error handling using parity and redundant rows
US8806316B2 (en) 2012-01-11 2014-08-12 Micron Technology, Inc. Circuits, integrated circuits, and methods for interleaved parity computation
US10541044B2 (en) * 2016-10-31 2020-01-21 Qualcomm Incorporated Providing efficient handling of memory array failures in processor-based systems
KR20180061870A (ko) * 2016-11-30 2018-06-08 삼성전자주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법

Also Published As

Publication number Publication date
WO2020072952A1 (en) 2020-04-09
EP3861446A1 (en) 2021-08-11
US11055172B2 (en) 2021-07-06
EP3861446A4 (en) 2021-12-15
US20200110659A1 (en) 2020-04-09
CN112867992A (zh) 2021-05-28
JP2022504328A (ja) 2022-01-13
JP7387725B2 (ja) 2023-11-28

Similar Documents

Publication Publication Date Title
US11055172B2 (en) Systems, methods, and apparatus to detect address faults
KR101308047B1 (ko) 메모리 시스템, 이 시스템을 위한 메모리, 및 이 메모리를위한 명령 디코딩 방법
US9250990B2 (en) Use of error correction pointers to handle errors in memory
US20110246853A1 (en) Semiconductor device and decoding method thereof
TW201929441A (zh) 用於針對糾錯碼功能的連線功能測試的系統和方法
JP5010271B2 (ja) エラー訂正コード生成方法、およびメモリ制御装置
US20160292059A1 (en) Run Time ECC Error Injection Scheme for Hardware Validation
US9703622B2 (en) Detection of data corruption in a data processing device
JP2008299855A (ja) エンベデッドメモリを利用したマルチチャンネルエラー訂正コーダを備えたメモリシステム及びその方法
WO2014203031A1 (en) Device and method for executing a program, and method for storing a program
TW201503153A (zh) 快閃記憶體裝置、記憶體控制器及快閃記憶體的控制方法
US7752527B2 (en) Microcontroller and RAM
JP2013137708A (ja) メモリコントローラ、データ記憶装置およびメモリ制御方法
JP2008090442A (ja) メモリ制御装置
KR20160017922A (ko) 반도체 메모리 장치
KR20200058048A (ko) 반도체 메모리 장치 및 이를 구비하는 메모리 시스템
US10956259B2 (en) Error correction code memory device and codeword accessing method thereof
JP7016332B2 (ja) 半導体メモリ装置
US10665297B2 (en) Memory systems for memory devices and methods of operating the memory systems
KR20090102115A (ko) 낸드 플래시 메모리와 컨트롤러 간의 효율적인 프로토콜을사용하는 반도체 메모리 장치
KR20160125745A (ko) 반도체 장치
US9070483B2 (en) Encoding and decoding redundant bits to accommodate memory cells having stuck-at faults
JP2018194948A (ja) 半導体記憶装置、メモリコントローラ及びメモリの監視方法
KR20230073915A (ko) 에러체크 및 스크럽동작방법 및 이를 이용한 반도체시스템
US9275758B2 (en) Error detection circuit and semiconductor integrated circuit using the same