KR20180095468A - 메모리의 메모리 셀들 내의 데이터의 처리 - Google Patents

메모리의 메모리 셀들 내의 데이터의 처리 Download PDF

Info

Publication number
KR20180095468A
KR20180095468A KR1020180018601A KR20180018601A KR20180095468A KR 20180095468 A KR20180095468 A KR 20180095468A KR 1020180018601 A KR1020180018601 A KR 1020180018601A KR 20180018601 A KR20180018601 A KR 20180018601A KR 20180095468 A KR20180095468 A KR 20180095468A
Authority
KR
South Korea
Prior art keywords
values
value
memory cells
memory cell
memory
Prior art date
Application number
KR1020180018601A
Other languages
English (en)
Other versions
KR102079196B1 (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 KR20180095468A publication Critical patent/KR20180095468A/ko
Application granted granted Critical
Publication of KR102079196B1 publication Critical patent/KR102079196B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • 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/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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1673Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/22Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using ferroelectric elements
    • G11C11/225Auxiliary circuits
    • G11C11/2273Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5657Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using ferroelectric storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/06Sense amplifiers; Associated circuits, e.g. timing or triggering circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5685Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0009RRAM elements whose operation depends upon chemical change
    • G11C13/0011RRAM elements whose operation depends upon chemical change comprising conductive bridging RAM [CBRAM] or programming metallization cells [PMCs]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • G11C2013/0054Read is performed on a reference element, e.g. cell, and the reference sensed value is used to compare the sensed value of the selected cell
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/563Multilevel memory reading aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

메모리로부터 메모리 셀들을 판독하기 위한 방법이 기술되어 있는데, 특히, n개의 메모리 셀로부터 물리적 값들이 결정되고 - n은 적어도 3임 -, 물리적 값들은 서로 적어도 부분적으로 비교되고, 비교된 물리적 값들에 기초하여 n개의 메모리 셀에 K개의 상이한 디지털 메모리 셀 값이 할당되고, 이러한 방식으로 획득된 디지털 메모리 셀 값들에 n1-,...,nK-out-of-n 코드의 코드워드가 할당된다. 특히, 이 경우에 다음의 것이 적용된다: n ≥ 3, n1 ≥ 1 내지 nK ≥ 1, K ≥ 2 및 m ≥ 1.

Description

메모리의 메모리 셀들 내의 데이터의 처리{PROCESSING DATA IN MEMORY CELLS OF A MEMORY}
데이터(예를 들어, 2진 데이터(binary data))를 메모리의 메모리 셀들에 저장하고 추가 처리를 위해 메모리의 메모리 셀들로부터 데이터를 판독하기 위한 다양한 접근법들이 공지되어 있다.
본 발명의 목적은 메모리의 핸들링을 개선시키는 데 있고, 상세하게는 저장 및/또는 판독을 보다 효율적이도록 하는 데 있다.
이 목적은 독립 청구항들의 특징들에 따라 달성된다. 바람직한 실시예들은, 상세하게는, 종속 청구항들로부터 수집될 수 있다.
본 목적을 달성하기 위해,
- n개의 메모리 셀로부터 물리적 값들이 결정되고 - n은 3 이상임 -,
- 물리적 값들이 서로 적어도 부분적으로 비교되며,
- 비교된 물리적 값들에 기초하여 K개의 상이한 디지털 메모리 셀 값이 n개의 메모리 셀에 할당되고,
- 이 방식으로 획득된 디지털 메모리 셀 값들에 n1-,...,nK-out-of-n 코드의 코드워드(code word)가 할당되는,
메모리의 메모리 셀들을 판독하는 방법이 언급된다.
이 경우에, 상세하게는 n ≥ 3, n1 ≥ 1 ... nK ≥ 1, K ≥ 2 및 m ≥ 1이 적용된다.
메모리 셀 값들의 개수는 n이고, 여기서 K개의 상이한 디지털 값만이 발생한다.
n1+...+nK = n이 또한 적용된다.
물리적 값들의 비교는 아날로그 값들의 비교를 포함할 수 있다.
비교는 물리적 값들 자체에 대해 수행될 수 있거나 물리적 값들에 기초할 수 있다. 상세하게는, 물리적 값들로부터 도출된 값들이 비교될 수 있다. 이 점에 있어서, 물리적 값들로부터 도출될 수 있는 값들에 관련된 비교들이 또한 여기에 언급된 물리적 값들의 비교에 의해 커버된다.
디지털 값들을 물리적 값들에 할당하는 것이 서로 비교되는 n개의 메모리 셀로부터 결정된 물리적 값들에 기초한다는 사실의 결과로서, 디지털 값들의 잘못된 할당이 아주 드물게 발생한다. 비교될 물리적 값들이, 그들의 값들의 빈도 분포(frequency distribution)들이 오버랩(overlap)되고 그들의 시퀀스가 비교 동안 변화하는 영역에, 있을 때에만, 디지털 값들의 이러한 잘못된 할당이 발생할 수 있다.
발전된 점은
- 물리적 값들이 서로 적어도 부분적으로 비교되며, 그 결과 물리적 값들 중 적어도 일부의 시퀀스가 결정되고,
- 시퀀스에 기초하여 K개의 상이한 디지털 메모리 셀 값이 n개의 메모리 셀에 할당된다는 것이다.
이 경우에, 시퀀스에서 n1개의 제1 메모리 셀에 대한 제1 디지털 메모리 셀 값이 결정되고, 시퀀스에서 nK개의 마지막 메모리 셀에 대한 제K 디지털 메모리 셀 값이 결정된다.
상세하게는, 시퀀스에서의 물리적 값들의 위치에 기초하여 디지털 메모리 셀 값이 할당될 수 있다.
시퀀스에서 n1개의 제1 메모리 셀에 대한 제1 디지털 메모리 셀 값이 결정되고 n1 ≥ 2이면, n1개의 제1 메모리 셀의 시퀀스를 결정하는 것이 필요하지 않을 수 있다. 이 경우에, 메모리 셀이 배치되는 n1개의 제1 메모리 셀의 시퀀스에서의 위치를 결정할 필요 없이, 메모리 셀이 n1개의 제1 메모리 셀에 속한다고 결정하는 것으로 충분할 수 있다. 동일한 디지털 값 1이, 예를 들어, n1개의 제1 메모리 셀 전부에 할당될 수 있다.
대응하는 언급들이 nK개의 제K 메모리 셀까지의 추가 메모리 셀들에 적용된다. 메모리 셀 값들의 서브세트에 대한 시퀀스 또는 부분적으로 결정된 시퀀스를 결정하는 것으로 충분할 수 있다.
발전된 점은 물리적 값들이 n개의 메모리 셀을 판독하는 것에 의해 결정된다는 것이다.
발전된 점은 모든 물리적 값들이 서로 비교된다는 것이다.
발전된 점은 K = 2이고, 그 결과 n1-,...,nK-out-of-n 코드가 n1-,n2-out-of-n 코드이며, 여기서 n1개의 제1 메모리 셀 값이 서로 동일한 제1 값을 갖고, n2개의 제2 메모리 셀 값이 서로 동일한 제2 값을 가지며, 여기서 제1 값은 제2 값과 상이하다는 것이다.
n1-,n2-out-of-n 코드는 n1-out-of-n 코드라고도 지칭될 수 있다. 이 경우에, n2 = n - n1이다.
발전된 점은 K = 3이고, 그 결과 n1-,...,nK-out-of-n 코드가 n1-,n2-,n3-out-of-n 코드이며, 여기서 n1개의 제1 메모리 셀 값이 서로 동일한 제1 값을 갖고, n2개의 제2 메모리 셀 값이 서로 동일한 제2 값을 가지며, n3개의 제3 메모리 셀 값이 서로 동일한 제3 값을 갖고, 여기서 제1 값, 제2 값 및 제3 값 각각이 서로 상이하다는 것이다.
발전된 점은 K > 3이라는 것이다.
이 예에서, 각각의 메모리 셀에 대해 3개 초과의 값, 즉 3개 초과의 디지털 메모리 셀 값이 결정될 수 있다.
발전된 점은 메모리 셀들로부터 결정된 메모리 셀 값들이 일의적 가역 변환(uniquely reversible transformation)에 의해 결정된다는 것이다.
이 경우에, 메모리 셀 값들의 개수(n)는 바람직하게는 메모리 셀들에 저장된 비트들의 개수의 2배 미만이다.
발전된 점은 물리적 값들이 시각들이라는 것이다.
발전된 점은 시각이 시간의 경과에 따라 메모리 셀의 물리적 값을 적분하는 것에 의해 각각 결정된다는 것이다.
발전된 점은 물리적 값이 메모리 셀의 판독 전류라는 것이다.
발전된 점은, 획득된 디지털 메모리 셀 값들이 n1-,...,nK-out-of-n 코드의 코드워드이면, m개의 비트들이 역방향 변환(back-transformation)에 의해 코드워드로부터 결정된다는 것이다.
발전된 점은 m개의 비트들의 에러 검출 및/또는 에러 정정이 에러 코드에 의해 수행된다는 것이다.
발전된 점은 에러 검출 및/또는 에러 정정이 체크 비트들에 기초하여 수행되고, 여기서 체크 비트들이 에러 코드에 따라 데이터 비트들로부터 결정된다는 것이다.
발전된 점은 에러 검출 및/또는 에러 정정이 체크 비트들에 기초하여 수행되고, 여기서 체크 비트들이 에러 코드에 따라 메모리 셀 값들로부터 결정된다는 것이다.
발전된 점은 에러 코드가 바이트 에러 정정 및/또는 바이트 에러 검출 코드라는 것이다.
발전된 점은 데이터 비트들의 에러 정정이 수행되면 바이트가 m개의 비트들을 포함하고 메모리 셀들의 에러 정정이 수행되면 바이트가 n개의 비트들을 포함한다는 것이다.
발전된 점은 에러 코드가 비트 에러 정정 및/또는 비트 에러 검출 코드라는 것이다.
발전된 점은 디지털 메모리 셀 값들을 결정하기 위해 적어도 하나의 기준 값이 사용된다는 것이다.
발전된 점은 메모리가 다음과 같은 메모리 유형들:
- 캐시 메모리,
- 레지스터 또는 레지스터 어레이,
- 플래시 메모리,
- MRAM,
- SRAM,
- RE-RAM,
- PC-RAM,
- FE-RAM,
- CB-RAM,
- 다중 비트 메모리(multi-bit memory),
- 다중 레벨 메모리(multi-level memory) 중 적어도 하나를 포함한다는 것이다.
게다가, 메모리의 메모리 셀들을 처리하기 위한 장치가 제안되고, 이 장치는 처리 유닛을 가지며, 이 처리 유닛은
- n개의 메모리 셀로부터 물리적 값들을 결정하고 - n은 3 이상임 -,
- 물리적 값들을 서로 적어도 부분적으로 비교하며,
- 비교된 물리적 값들에 기초하여 K개의 상이한 디지털 메모리 셀 값을 n개의 메모리 셀에 할당하고,
- 이 방식으로 획득된 디지털 메모리 셀 값들에 n1-,...,nK-out-of-n 코드의 코드워드를 할당하도록 셋업(set up)된다.
여기에 언급된 처리 유닛은, 상세하게는, 예를 들어, 본원에 기술되는 방법이 수행될 수 있는 방식으로 셋업되는 프로세서 유닛 및/또는 적어도 부분적으로 하드 와이어링된 또는 논리적 회로 구성의 형태로 되어 있을 수 있다. 상기 처리 유닛은 그에 따라 요구된 주변기기들(메모리, 입출력 인터페이스들, 입출력 디바이스들 등)을 갖는 임의의 유형의 프로세서 또는 컴퓨터일 수 있거나 이를 포함할 수 있다.
방법에 관련된 이상의 설명들은 그에 따라 장치에 적용된다. 장치는 하나의 컴포넌트에 설계될 수 있거나 복수의 컴포넌트들에 분산될 수 있다.
앞서 언급된 목적은 또한 본원에 기술되는 장치들 중 적어도 하나의 장치를 포함하는 시스템에 의해 달성된다.
발전된 점은 처리 유닛이
- 물리적 값들을 서로 적어도 부분적으로 비교하고 따라서 물리적 값들의 시퀀스를 결정하며,
- 물리적 값들의 시퀀스에 기초하여 K개의 상이한 디지털 메모리 셀 값을 n개의 메모리 셀에 할당하도록
추가로 셋업된다는 것이다.
디지털 컴퓨터의 메모리에 직접 로딩될 수 있는 컴퓨터 프로그램 제품이 또한 제안되며, 컴퓨터 프로그램 제품은 본원에 기술되는 방법의 단계들을 수행하기에 적합한 프로그램 코드 부분들을 포함한다.
컴퓨터 판독가능 저장 매체가 언급되고, 컴퓨터 판독가능 저장 매체는 컴퓨터에 의해 실행될 수 있고 컴퓨터가 본원에 기술되는 방법의 단계들을 수행하기에 적합한 명령어들을 포함한다.
본 발명의 앞서 기술된 특성들, 특징들 및 장점들 그리고 이들이 달성되는 방식은 도면들과 관련하여 보다 상세히 설명되는 예시적인 실시예들의 개략적 설명과 관련하여 이하에서 기술된다. 이 경우에, 동일한 또는 동일하게 기능하는 요소들은 명확함을 위해 동일한 참조 부호들을 부여받을 수 있다.
도 1a는 판독된 물리적 값들에 대한 빈도 분포를 도시한 도면이며, 여기서 빈도 분포들 사이에 기준 값이 예시되어 있음;
도 1b는 판독된 물리적 값들에 대한 빈도 분포를 도시한 도면이며, 여기서, 도 1a와 달리, 빈도 분포들이 오버랩함;
도 2a는 메모리 셀들로부터 판독된 복수의 물리적 값들을 포함하는 다이어그램을 도시한 도면;
도 2b는 복수의 시각들을 갖는 다이어그램을 도시한 것이며, 여기서 하나의 시각은 도 2a에 예시된 물리적 값들 중 하나에 대응함;
도 3은 메모리 셀의 물리적 값들(WG)의 빈도 분포들을 예시하는 그래프를 도시한 도면;
도 4는 메모리로부터 판독된 값들의 빈도 분포들을 예시하는 그래프를 도시한 도면;
도 5는 메모리로부터 판독된 값들 0, 1, 2 및 3의 4개의 빈도 분포를 예시하는 그래프를 도시한 도면이며, 여기서 4개의 빈도 분포에 대한 3개의 오버랩 영역이 있음;
도 6은 4개의 메모리 셀을 갖는 메모리를 도시한 도면이며, 여기서 물리적 값들이 메모리 셀들로부터 판독되고 복수의 비교기들을 사용하여 둘씩 짝을 이루어 비교됨;
도 7은 복수의 논리 게이트들에 의해 도 6에 따른 회로의 비교기들로부터의 값들로부터 메모리 셀들에 대한 대응하는 할당들을 결정하기 위해 사용되는 회로 구성을 도시한 도면;
도 8은 데이터 비트들이 변환되고, 메모리의 메모리 셀들에 저장되며, 메모리 셀들이 판독되어 역변환에 의해 데이터 비트들로 역방향 변환되는 개략 다이어그램을 도시한 도면;
도 9는 데이터 비트들의 복수의 그룹들이 변환되고, 저장되며, 판독 이후에 데이터 비트들로 역방향 변환되는 개략 다이어그램을 도시한 도면;
도 10은 에러 검출 또는 에러 정정과 결합된 에러 검출을 가능하게 하는 예시적인 회로 구성을 도시한 도면이며, 여기서 데이터 비트들은, 변환 회로에 의해, 메모리의 메모리 셀들에 저장되는 메모리 비트들로 변환됨;
도 11은 에러 정정 또는 어쩌면 에러 정정을 갖는 에러 검출을 가능하게 하는 대안의 회로 구성을 도시한 도면;
도 12는 어쩌면 정정된 데이터 비트들의 역방향 변환 및 결정을 갖는 도 11에 나타낸 회로 구성의 변형의 다른 예를 도시한 도면;
도 13은 복수의 래치(latch)들에 대한 홀드 신호(hold signal)를 결정하기 위한 복수의 논리 게이트들을 포함하는 예시적인 회로 구성을 도시한 도면;
도 14는 6개의 메모리 셀을 판독할 때 처음 3개의 가장 빠른 0을 결정하기 위한 예시적인 회로 구성을 도시한 도면이며, 여기서 도 13의 회로 구성에 의해 생성된 홀드 신호는 복수의 래치들을 제어하는 데 사용됨;
도 15는 데이터 비트들이 어떻게 변환 회로에 의해 변환되고 메모리의 메모리 셀들에 메모리 셀 값들로서 저장되는지를 예시하기 위한 개략적인 구성을 도시한 도면;
도 16은 도 15의 구성의 개략적인 구현을 도시한 도면이고, 여기서 도 16에서는, 예를 들어, n = k = 6이고, K = 3이며 n1 = n2 = n3 = 2임;
도 17은 4개의 데이터 비트(x1, x2, x3, x4)를 4개의 메모리 셀 값(z1, z2, z3, z4)으로 변환하기 위한 개략적인 구성을 도시한 도면.
메모리 셀은 상이한 디지털 값들에 대응하는 상이한 물리적 값들 또는 상태들을 취할 수 있다.
WG는 메모리 셀(S)의 물리적 변수(G)의 값을 나타내는 데 사용되고, WD는 메모리 셀(S)의 디지털 값을 나타내는 데 사용된다.
디지털 값(WD)은 2진(binary)일 수 있고 따라서 0과 1로 나타내어질 수 있는 2개의 값 중 하나를 취할 수 있다. 디지털 값은, 상세하게는, 유한한 개수의 값 중 하나의 값이다.
디지털 값(WD)이 2개 초과의 상이한 값을 취하는 것이 또한 가능하다. 예를 들어, 디지털 값이 3개의 상이한 값을 취할 수 있고; 이 경우에, 이 상이한 디지털 값들은 0, 1, 2로 나타내어질 수 있다. 디지털 값은 일반적으로 K개의 상이한 값(K ≥ 2)을 취할 수 있다. 이 K개의 상이한 값은 0, 1, ..., K-1로 나타내어질 수 있다. 2개 초과의 디지털 메모리 셀 값을 저장할 수 있는 메모리 셀들을 갖는 메모리는 여기서 다진 메모리(polyvalent memory) 또는 다중 레벨 메모리라고도 지칭된다. 연관된 메모리 셀들은 다진 또는 다중 레벨 메모리 셀들이라고 지칭될 수 있다.
그에 따라, 2개의 디지털 값을 저장하는 메모리 셀들을 갖는 메모리는 2진 메모리라고 지칭될 수 있고, 대응하는 메모리 셀들은 2진 메모리 셀들이라고 지칭될 수 있다.
메모리 셀(S)로부터 판독된 물리적 값은 WA로 나타내어져 있다.
예를 들어, 메모리 셀의 물리적 값 또는 상태는 전기 저항 값일 수 있다. 그에 따라, 2개의 저항 값을 2진으로(in binary) 구별하는 것이 가능하고; 예를 들어, 보다 큰 저항 값은 디지털 값 0에 대응할 수 있고, 보다 작은 저항 값은 디지털 값 1에 대응할 수 있다. 다른 예에서, 보다 큰 저항 값은 디지털 값 1에 대응할 수 있고 보다 작은 저항 값은 디지털 값 0에 대응할 수 있다.
2개 초과의 디지털 값이 메모리 셀에 저장되면, 그에 따라 (보다 큰 또는 보다 작은 저항 값들의 방향으로) 스태거링(staggering)이 수행될 수 있다: 예를 들어, 가장 큰 저항 값이 디지털 값 0에 할당될 수 있고, 두 번째로 큰 저항 값이 디지털 값 1에 할당될 수 있으며, 세 번째로 큰 저항 값이 디지털 값 2에 할당될 수 있고, ... 마지막으로, 가장 작은 저항 값이 디지털 값 K-1에 할당될 수 있다(이 경우에, K개의 디지털 값이 또다시 메모리 셀(S)에 저장될 수 있다).
메모리 셀(S)을 판독할 때, 아날로그 물리적 값(WA)이 결정되고, 이 값은 디지털 값(WD)을 기입 또는 저장할 때 생성된 물리적 값(WG)에 의존한다.
에러가 없는 경우에, 대응하는 디지털 값(WD)은 판독된 물리적 값(WA)으로부터 결정될 수 있다.
예를 들어, MRAM에서와 같이, 상이한 전기 저항 값들이 메모리 셀(S)의 상이한 상태들에 대응하는 경우, 저장된 물리적 값(WG)은 저항 값이고 판독된 물리적 값(WA)은 전류 또는 전압일 수 있다.
예를 들어, 메모리 셀들을 판독할 때, 판독된 모든 또는 복수의 메모리 셀들에 대해 동일한 적어도 하나의 기준 값(R)을 사용하는 것이 가능하다. 임의로, (적어도 하나의) 기준 값이 (또한 또는 부분적으로) 외부에서 제공될 수 있다. 메모리 셀로부터 판독된 값(WA)이 기준 값(R)과 비교될 수 있다.
이하의 본문은, 상세하게는, 예를 들어, 2개의 상이한 디지털 값 0과 1을 저장할 수 있는 2진 메모리 셀들에 중점을 둔다. 그렇지만, 그에 따라, 각각이 2개 초과의 디지털 값을 저장할 수 있는 메모리 셀들을 제공하는 것이 또한 가능하다.
보다 큰 저항 값이 2진 값 0에 대응하고 보다 작은 저항 값이 2진 값 1에 대응하면, 판독된 전류의 보다 작은 값(WA)은 디지털 값 0에 대응하고 판독된 전류의 보다 큰 값(WA)은 디지털 값 1에 대응한다.
그에 따라, 메모리 셀을 판독할 때 판독된 값(WA)으로서 전압이 결정되는 것이 한 옵션이고, 이 전압의 레벨은 이전에 메모리에 2진 값 0 또는 2진 값 1이 기입되었는지에 의존한다.
판독된 값(WA)을 단일의 대응하는 기준 값(R)과 비교하는 것에 의해 디지털 값(WD)이 결정되는 경우, 디지털 값(WD)에 대해
Figure pat00001
이 적용될 수 있다.
디지털 값 0이 복수의 메모리 셀들에 기입되는 경우, 기입된 메모리 셀들은, 예를 들어, 통계적 변동들(예를 들어, 제조 동안의 프로세스 변동들)로 인해, 상이한 물리적 값들(WG) - 그 모두는 에러가 없는 경우에 디지털 값 WD = 0에 대응하고 빈도 분포에 의해 기술될 수 있음 - 을 취한다. 그에 따라, 판독된 값들(WA)이 또한 빈도 분포에 따라 상이한 값들을 취한다.
이 언급은 디지털 값 1 또는 상이한 값이 기입되는 메모리 셀들에 유사하게 적용된다: 디지털 값 1이 복수의 메모리 셀들에 기입되는 경우, 기입된 메모리 셀들은, 예를 들어, 통계적 변동들(예를 들어, 제조 동안의 프로세스 변동들)로 인해, 상이한 물리적 값들(WG) - 그 모두는 에러가 없는 경우에 디지털 값 WD = 1에 대응하고 빈도 분포에 의해 기술될 수 있음 - 을 취한다. 그에 따라, 판독된 값들(WA)이 또한 빈도 분포에 따라 상이한 값들을 취한다.
메모리 셀에 하나 초과의 비트를 저장하는 것이 가능한 경우, 이 언급들은 그에 따라 메모리 셀들 각각에 저장될 수 있는 모든 디지털 값들에 적용된다.
도 1a는, 예로서, 디지털 값 1에 대응하는 판독된 값들(WA(1))에 대한 빈도 분포(101) 및 디지털 값 0에 대응하는 판독된 값들(WA(0))에 대한 빈도 분포(102)를 도시하고 있다. 판독된 상이한 값들(WA)은 x 축에 예시되고, 판독된 값들(WA)의 빈도(frequency)들은 y 축에 예시되어 있다. 빈도 분포(101)와 빈도 분포(102) 사이에 기준 값(R)이 또한 예시되어 있다.
도 1a에 예시된 예에서, 빈도 분포(101)와 빈도 분포(102) 사이에 오버랩이 없다. 따라서, 2진 값 0 및 2진 값 1의 잘못된 할당이 없다. 환언하면, 판독 에러가 발생하지 않는 경우 판독된 값(WA)을 기준 값(R)에 기초하여 각자의 2진 값 0 또는 1에 일의적으로 에러 없이 할당하는 것이 가능하다.
이 예에서, 간략화된 방식으로 방사 또는 가열의 영향의 결과로서 잘못된 할당들이 발생하지 않는다고 가정된다.
도 1b는, 예로서, 디지털 값 1에 대응하는 판독된 값들(WA(1))에 대한 빈도 분포(103) 및 디지털 값 0에 대응하는 판독된 값들(WA(0))에 대한 빈도 분포(104)를 도시하고 있다. 빈도 분포(103)와 빈도 분포(104) 사이에 기준 값(R)이 또다시 예시되어 있다.
도 1a에 예시된 빈도 분포들(101 및 102)과 달리, 빈도 분포(103)와 빈도 분포(104)는 오버랩한다. 이러한 오버랩은, 예를 들어, MRAM 메모리 셀들에서 발생할 수 있다. 도 1b는 오버랩 영역(105)을 도시하고 있으며; 이것은 또한 [0, 1]A로 나타내어진다.
WA < R이면 2진 값 0이 판독된 값(WA)에 할당되고, WA ≥ R이면 2진 값 1이 그 값(WA)에 할당되는 경우, 판독된 값(WA)이 오버랩 영역(105)에 있으면 이 할당은 잘못된 것일 수 있다.
방사 또는 열의 영향 또는 메모리 셀들의 영구적 에러들에 기초한 에러들이 또한 발생할 수 있다.
따라서, 기준 값(R)을 사용하는 오버랩 영역(105)으로 인해 관련 확률로 잘못된 할당이 수행될 수 있다: 2진 값 0에 대응하는 판독된 값(WA)이 오버랩 영역(105)에 있으면, 대략 절반의 경우에 WA > R이 적용될 수 있으며, 이는 잘못된 할당을 초래한다. 그에 따라: 2진 값 1에 대응하는 판독된 값(WA)이 오버랩 영역(105)에 있으면, 대략 절반의 경우에 WA < R이 적용될 수 있으며, 이는 마찬가지로 잘못된 할당을 초래한다.
따라서, 판독된 값들(WA)이 오버랩 영역(105)에 있으면 판독된 값들(WA)에 대한 연관된 디지털 값이 잘못 할당될 수 있다 . 영역(106)은, 판독된 값들(WA)이 2진 값 0이더라도, 판독된 값들(WA)이 2진 값 1에 잘못 할당되는 부분을 나타낸다. 따라서, 잘못된 디지털 값이 할당되는 빈도는 판독된 값(WA)이 오버랩 영역(105)에 있는 빈도에 의해 실질적으로 결정된다. 이것은 불리하며, 예를 들어, 현대 기술들에서 발생할 수 있는 큰 오버랩 영역들에 대해 특히 그렇다.
값 0 및 값 1을 취할 수 있는 디지털 2진 값(x)이 2개의 메모리 셀(S1 및 S2)을 사용하여 저장될 수 있다. 예를 들어, x = 0에 대해, 값 0은 메모리 셀(S1)에 기입(저장)될 수 있고 값 1은 메모리 셀(S2)에 기입(저장)될 수 있으며, x = 1에 대해, 값 1은 메모리 셀(S1)에 기입(저장)될 수 있고 값 0은 메모리 셀(S2)에 기입(저장)될 수 있다. 반대로, x = 0에 대해, 값 1은 그에 따라 메모리 셀(S1)에 기입될 수 있고 값 0은 메모리 셀(S2)에 기입될 수 있으며, x = 1에 대해, 값 0은 메모리 셀(S1)에 기입될 수 있고 값 1은 메모리 셀(S2)에 기입될 수 있다.
에러가 없는 경우에, 값 0 또는 값 1이 저장되었는지를 결정하기 위해, 2개의 메모리 셀(S1 및 S2)로부터 판독된 (물리적) 값들이, 예를 들어, 비교기에 의해, 서로 비교될 수 있다.
예를 들어, 물리적 값
Figure pat00002
은 메모리 셀(S1)로부터 판독되고, 물리적 값
Figure pat00003
는 메모리 셀(S2)로부터 판독된다.
Figure pat00004
이면,
이는 2진 값 x = 0이 2개의 메모리 셀(S1 및 S2)에 저장되어 있다는 것을 의미할 수 있다.
Figure pat00005
이면,
이는 2진 값 x = 1이 2개의 메모리 셀(S1 및 S2)에 저장되어 있다는 것을 의미할 수 있다.
이 예에서, 메모리 셀들(S1 및 S2)에 저장되어 있는 판독된 값들
Figure pat00006
Figure pat00007
가 기준 값과 비교되지 않고 서로 비교된다. 이것은, 판독된 값들이 서로 비교되는 결과로서, 에러가 발생할 확률을 상당히 감소시키는 것을 가능하게 한다.
판독된 셀(S1)의 값
Figure pat00008
및 판독된 셀(S2)의 값
Figure pat00009
둘 다가 분포 WA(0)와 분포 WA(1)의 오버랩 영역에 있는 경우에만 에러가 발생할 수 있다. 이것은 판독된 2개의 값 중 하나만이 오버랩 영역에 있는 것보다 상당히 더 드문 경우일 것이다.
이와 달리, 메모리 셀로부터 판독된 값이 기준 값과 비교되는 경우, 판독된 이 하나의 값이 대응하는 분포들의 오버랩 영역에 있을 때 에러가 이미 발생할 수 있다.
이 경우에, 각각의 비트가 저장되기 위해 2개의 메모리 셀이 필요하다는 것, 즉 n개의 비트를 저장하기 위해 2·n개의 메모리 셀이 필요한 것은 불리하다.
여기에 제시된 예들의 하나의 장점은 가능한 한 적은 메모리 셀들을 사용하여 높은 정도의 신뢰성으로 디지털 값들을 저장하는 것이 가능하다는 것이다. 다른 장점은 저장 동안 에러 코드가 추가로 사용될 수 있고, 그 결과 판독 에러들이 적어도 부분적으로 검출 및/또는 정정될 수 있다는 것이다.
데이터 비트들의 메모리 셀 값들로의 변환
예를 들어, k개의 비트의 2k개의 가능한 할당이 n개의 메모리 셀 값으로 변환된다. 메모리 셀 값들은 n개의 메모리 셀에, 예를 들어, 어드레싱가능 메모리의 메모리 셀들에 저장된다.
n개의 메모리 셀에 저장된 n개의 메모리 셀 값이 n개의 메모리 셀로부터 판독될 수 있고, 판독된 n개의 메모리 셀 값이, 에러가 존재하지 않는다면, k개의 데이터 비트로 역방향 변환될 수 있다.
메모리 셀 값들은 2진 값들(예를 들어, 값 0 및 값 1)일 수 있다. 이 경우에, 2진 값들은 메모리의 메모리 셀들에 저장된다. 이 메모리 셀들은 그러면 2진 메모리 셀들이라고 지칭될 수 있다.
메모리 셀 값들 각각이 K개의 상이한 값을 취하는 것이 또한 가능하다. 2진 메모리 셀 값들과 달리, 각각의 메모리 셀 값이 여기서 2개 초과의 값을 취할 수 있다. 따라서 K > 2가 적용되고, 여기서 K개의 메모리 셀 값은 0, 1, ..., K - 1이다. 예를 들어, 3진 메모리 셀(trivalent memory cell)들이 제공되고 그에 따라 3진 메모리 셀 값들을 저장할 수 있다면, 값들 0, 1 또는 2 중 하나가 각각의 메모리 셀 값에 할당될 수 있다.
i개의 메모리 셀이 상이한 Ki진 값(Ki-valent value)들(2진 또는 다진(polyvalent), 즉 Ki ≥ 2)을 저장하는 것이 또한 가능하다. 예를 들어, 적어도 2개의 메모리 셀이 제공될 수 있고, 그 중 하나의 메모리 셀은 K1진 값(K1-valent value)들을 저장하고, 그 중 다른 메모리 셀은 K2진 값(K2-valent value)들을 저장하며, 여기서 K1 ≠ K2이다.
2진 메모리 셀 값들
메모리 셀 값들이 2진인 경우가 먼저 고려된다.
k개의 데이터 비트(x1, ..., xk)가 n개의 메모리 셀 값(z1, ..., zn)으로 변환되어 n개의 메모리 셀에 저장되도록 의도되어 있다.
k개의 데이터 비트(x1, ..., xk)의 가능한 2k개의 할당이, 예를 들어, 조합 회로(변환 회로라고도 지칭됨)에 의해, 메모리 셀 값들로 변환된다. 이를 위해, 변환 회로는 k개의 데이터 비트의 2k개의 할당을 n개의 메모리 셀 값에 매핑하는 변환을 제공한다.
변환은 데이터 비트들이 변환되는 메모리 셀 값들이 n1-out-of-n 코드의 코드워드들인 방식으로 구현된다. n1-out-of-n 코드의 코드워드는 n1개의 제1 2진 값 및 n2 = n - n1개의 제2 2진 값을 갖는다. 제1 2진 값들이 값 1을 갖고 제2 2진 값들이 값 0을 갖는 경우, n1-out-of-n 코드의 코드워드는 n1개의 1 및 n2 = n - n1개의 0을 갖는다.
그에 따라, 제1 2진 값들이 값 0을 갖고 제2 2진 값들이 값 1을 갖는 것이 가능하다.
예를 들어, 메모리 셀들에 저장되는 n1-out-of-n 코드의 코드워드들을 판독할 때, 코딩 없이 저장되는 데이터 비트들의 경우보다 더 높은 정도의 신뢰성이 달성될 수 있기 때문에, 데이터 비트들을 n1-out-of-n 코드의 코드워드들로서 저장하는 것이 유리하다.
n1-out-of-n 코드는 n1-,n2-out-of-n 코드라고도 지칭될 수 있고, 여기서 n1은 제1 2진 값들의 개수를 나타내고 n2는 제2 2진 값들의 개수를 나타낸다. 이 경우에, n2 = n - n1이다. 이 명칭(designation)으로부터 각각의 코드워드에 2개의 상이한(여기서 2진) 값 0 및 1이 존재한다는 것이 명확하다.
이하가 적용된다:
n1 < n
n2 = n - n1 < n
n1 + n2 = n
n1 ≥ 1
n2 ≥ 1.
예를 들어, 메모리 셀 값들의 개수(n)는 3 이상일 수 있다.
메모리 셀 값들의 개수가 2(즉, n = 2)인 경우, 대응하는 1-out-of-2 코드의 코드워드들은 10 및 01이다. 예를 들어, 2진 값 0은 10으로서 코딩될 수 있고 2진 값 1은 01로서 코딩될 수 있다. 이 경우에, 개개의 비트로부터의 정보를 저장하기 위해 n = 2개의 메모리 셀이 필요한 것은 불리하다.
앞서 설명된 바와 같이, k개의 데이터 비트의 2k개의 상이한 할당이 있다. 그에 부가하여, n1-out-of-n 코드의
Figure pat00010
개의 상이한 코드워드가 있다.
k개의 데이터 비트의 2k개의 할당이 일의적 가역 방식으로 n1-out-of-n 코드의
Figure pat00011
개의 코드워드로 변환될 수 있고, 그 결과 데이터 비트들의 할당이 코드워드들 중 하나에 할당되는 경우 데이터 비트들의 대응하는 할당이 또한 코드워드들 중 하나에 기초하여 일의적으로 추론될 수 있다.
데이터 비트들의 할당들과 적어도 동수의 상이한 코드워드들이 존재하며, 즉 조건
Figure pat00012
이 충족되면, k개의 데이터 비트의 모든 할당들의 n1-out-of-n 코드의 코드워드들로의 일의적 가역 변환이 가능하다.
적용분야에 따라, k개의 데이터 비트의 2k개의 가능한 할당 모두가 다 발생하지는 않는 일이 또한 가능하다. 이러한 경우 그리고 값 Anz < 2k가 실제로 발생하는 할당들의 개수를 나타내는 경우, 코드워드들을 실제로 발생하는 할당들에 일의적 가역 방식으로 할당하기 위해, 조건
Figure pat00013
이 충족되기만 하면 된다.
따라서, 2 · k개 미만의 메모리 셀이 유리하게도 k개의 데이터 비트를 저장하는 데 사용될 수 있다.
2진 메모리 셀 값들: 예들
예를 들어, k = 4개의 데이터 비트가 가정되며, 이 경우 2k = 24 = 16개의 상이한 할당이 있다. 예를 들어, n = 6개의 메모리 셀(n은 메모리 셀 값들의 개수이고, 여기서 각각의 메모리 셀 값은 하나의 메모리 셀에 저장하도록 의도되어 있음)이 제공되고 n1 = 3이면, 3-out-of-6 코드의
Figure pat00014
개의 상이한 코드워드가 있고, 여기서 코드워드들 각각은 3개의 1 및 3개의 0을 갖는다. 따라서, 4개의 데이터 비트의 상이한 16개의 할당을 3-out-of-6 코드의 (총 20개의 코드워드 중) 16개의 선택된 코드워드로 변환하여 메모리의 6개의 메모리 셀에 저장하는 것이 가능하다.
n = 6개의 메모리 셀 값 및 n1 = 2에 대해, 2-out-of-6 코드의
Figure pat00015
개의 상이한 코드워드가 얻어질 것이고, 여기서 각각의 코드워드는 정확히 2개의 1 및 4개의 0을 갖는다. 4개의 데이터 비트의 24 = 16개의 할당의 2-out-of-6 코드의 코드워드들로의 일의적 가역 변환은 따라서 가능하지 않다.
실제로 발생한 할당들의 값 Anz가, 예를 들어, 15 이하이면, 이 2-out-of-6 코드가 또한 사용될 수 있다.
2진 메모리 셀 값들: 데이터 비트들의 그룹화
N개의 데이터 비트가 메모리 셀 값들로 변환되는 것이 이하에서 설명되고, 여기서 N = M · k이고 M은 1 초과이다. 따라서, k개의 데이터 비트의 M개의 그룹 각각이 형성될 수 있고, 여기서 k개의 데이터 비트의 각각의 그룹의 2k개의 할당은 일의적 가역 방식으로
Figure pat00016
코드의 2k개의 코드워드로 각각 변환된다.
k개의 데이터 비트의 M개의 그룹의 할당들 각각이, 각각의 경우에, 동일한 n1-out-of-n 코드의 코드워드들로 변환되는 경우, M · n개의 메모리 셀 값이 얻어지고 그에 따라 M · n개의 메모리 셀에 저장될 수 있다.
예를 들어, M개의 그룹 각각이 k개의 데이터 비트를 포함하는 경우가 여기서 기술된다. 대안적으로, 데이터 비트들의 제1 그룹이 k1개의 데이터 비트를 갖는 것, 데이터 비트들의 제2 그룹이 k2개의 데이터 비트를 갖는 것 ... 제M 그룹이 km개의 데이터 비트를 갖는 것이 가능하다. 그룹당 데이터 비트들의 개수 k1, k2, ..., km은 적어도 부분적으로 상이할 수 있다. 따라서
N = k1 + k2 +...+ kM이고,
여기서
- k1개의 제1 데이터 비트는 제1
Figure pat00017
-out-of-n1 코드의 코드워드들로 변환될 수 있고,
- k2개의 제2 데이터 비트는 제2
Figure pat00018
-out-of-n2 코드의 코드워드들로 변환될 수 있으며,
...
- kM개의 제M 데이터 비트는 제M
Figure pat00019
-out-of-nM 코드의 코드워드들로 변환될 수 있다.
이 경우에, 개개의 코드들은 서로 적어도 부분적으로 상이할 수 있다. 임의로, 그룹당 데이터 비트들의 개수가 동일할 때 상이한 코드들이 또한 사용될 수 있다.
예를 들어, 데이터 비트들의 개수가 k = 3이면, 3개의 데이터 비트의 2k = 8개의 가능한 할당이 얻어진다. n = 5개의 메모리 셀 값에 대해, 2-out-of-5 코드 및 3-out-of-5 코드 둘 다가 사용될 수 있는데, 그 이유는 이 2개의 코드 각각이 10개의 코드워드를 제공하고 따라서 가능한 할당들보다 더 많은 코드워드들을 제공하기 때문이다. 예를 들어, 2-out-of-5 코드는 따라서 3개의 데이터 비트의 제1 그룹에 대해 사용될 수 있고, 3-out-of-5 코드는 3개의 데이터 비트의 제2 그룹에 대해 사용될 수 있다.
언급된 바와 같이, 데이터 비트들의 그룹들 모두가 다 동일한 k개의 데이터 비트를 갖는 것은 아닌 것이 한 옵션이다. 예를 들어, 23개의 데이터 비트가 메모리 셀 값들로 변환되도록 의도되어 있다: 23개의 데이터 비트로부터 각각이 4개의 데이터 비트를 갖는 5개의 그룹 및 3개의 데이터 비트를 갖는 하나의 그룹이 형성될 수 있다. 4개의 데이터 비트를 갖는 각자의 그룹의 24 = 16개의 가능한 할당이, 예를 들어, 20개의 상이한 코드워드를 갖는 3-out-of-6 코드의 코드워드들로 변환될 수 있다. 3개의 데이터 비트를 갖는 나머지 그룹은 23 = 8개의 가능한 할당을 갖는다. 이 3개의 데이터 비트는, 예를 들어, 10개의 코드워드를 갖는 3-out-of-5 코드의 코드워드들로 변환될 수 있다. 그 결과, 3개의 데이터 비트의 23 = 8개의 가능한 할당이 또한 3-out-of-6 코드의 코드워드들로 변환된 경우보다 하나의 메모리 셀이 덜 요구된다. 예를 들어, 3개의 데이터 비트의 그룹을 상수 비트, 예를 들어, 값 0을 갖는 비트로 보충함으로써 4개의 데이터 비트가 얻어지는 것이 또한 가능하고, 그 결과 모든 그룹들이 동일한 개수의 데이터 비트들을 갖고 따라서 동일한 변환이 사용될 수 있다. 이것은 회로를 설계할 때 비용을 줄이는 것을 가능하게 한다.
다진 메모리 셀 값들
메모리 셀 값들이 2개 초과의 상이한 값을 취할 수 있고 메모리 셀들이 그에 따라 다진 메모리 셀 값들을 저장할 수 있는 경우가 이제 고려될 것이다.
메모리 셀은 K개의 상이한 메모리 셀 값을 저장할 수 있도록 의도되어 있으며, 여기서 K> 2이다(K = 2는 2진 메모리 셀 값들의 특별한 경우일 것이다). 각각의 메모리 셀에 대한 상이한 메모리 셀 값들은 0, 1, ..., K - 1로 나타내어질 수 있다.
k개의 데이터 비트가 또다시 저장되도록 의도되어 있다. k개의 데이터 비트의 2k개의 상이한 할당이 일의적 가역 방식으로 n개의 메모리 셀 값으로 변환될 수 있다. 이 n개의 메모리 셀 값은
- n1개의 제1 값,
- n2개의 제2 값,
...
- nK개의 제K 값을 갖는다.
예를 들어,
- 제1 값들은 0으로 나타내어질 수 있고,
- 제2 값들은 1로 나타내어질 수 있으며,
...
- 제K 값들은 K-1로 나타내어질 수 있다.
n개의 메모리 셀 값은 메모리 셀 값들의 n-튜플(n-tuple)이라고도 지칭될 수 있다. n1개의 제1 값, n2개의 제2 값, ..., nK개의 제K 값을 갖는, n개의 다진(여기서 K진) 메모리 셀 값의 n-튜플은
n1-,n2-,...,nK-out-of-n 코드의 코드워드라고 지칭될 수 있다.
n1-,n2-,...,nK-out-of-n 코드는 하기의 개수의 코드워드를 갖는다:
Figure pat00020
k개의 데이터 비트의 2k개의 할당은 이제 일의적 가역 방식으로 n1-,n2-,...,nK-out-of-n 코드의 이 코드워드들 중 2k개의 코드워드로 변환되도록 의도되어 있다. 이것은, 조건
Figure pat00021
인 경우
또는 2진 메모리 셀 값들과 관련하여 앞서 기술된 바와 같이, 값 Anz(Anz < 2k임)가 실제로 발생하는 k개의 비트의 할당들의 개수이기만 하다면 조건
Figure pat00022
다진 메모리 셀 값들: 예들
의도는 k = 6개의 데이터 비트를 저장하는 것이다. 따라서, 6개의 데이터 비트의 2k = 26 = 64개의 가능한 할당이 있다. 기술된 바와 같이, 데이터 비트들은 2진 값들이고 다진 메모리 셀들에 저장하기 위해 미리 변환되어 있다.
예를 들어, 3진 메모리 셀 값들(K = 3)이 고려된다. 각각의 메모리 셀은 따라서 3개의 상이한 값을 저장할 수 있다. 전반적으로 말하면, n = 6개의 메모리 셀 값(그리고 따라서 6개의 메모리 셀)이 있고 n1 = n2 = n3 = 2가 가정된다. 따라서 2-,2-,2-out-of-6 코드의
Figure pat00023
개의 상이한 코드워드가 여기서 예로서 사용된다. 6개의 데이터 비트의 26 = 64개의 가능한 할당을 매핑하는 데 이 90개의 코드워드로 충분하다.
다진 메모리 셀들은 2진 메모리 셀들과 비교하여 보다 효율적인 사용을 가능하게 하는데, 그 이유는 각각의 메모리 셀에 대해 2개 초과의 값이 저장될 수 있기 때문이다. 따라서, 적은 양의 물리적 메모리 셀들로 충분하다: 본 예에서, 2-,2-,2-out-of-6 코드의 90개의 코드워드가 단지 6개의 3진 메모리 셀을 사용하여 형성될 수 있는 반면, 3-out-of-6 코드의 단지 20개의 코드워드가 6개의 2진 메모리 셀을 사용하여 형성될 수 있다.
여기서 예로서 가정된 2-,2-,2-out-of-6 코드의 각각의 코드워드에서 값들 0, 1 및 2 중 하나가 두 번 나온다. 코드 워드들의 예들은 다음과 같다: 001122, 101220, 021210.
다른 예에서, 3진 메모리 셀 값들(K = 3)에 대해 1-,1-,1-out-of-3 코드가 사용된다. n = 3개의 메모리 셀에 대해, 이 코드는
Figure pat00024
개의 코드워드 012, 021, 102, 120, 201 및 210을 갖는다. 의도가 k = 2개의 데이터 비트를 저장하는 것이면, 22 = 4개의 상이한 할당이 1-,1-,1-out-of-3 코드의 코드워드들로서 3개의 메모리 셀에 저장될 수 있다.
추가의 예에서, 4진 메모리 셀 값(tetravalent memory cell value)들(K = 4)이 고려된다. 각각의 메모리 셀은, 예를 들어, 값들 0, 1, 2 또는 3 중 하나를 저장할 수 있다. 전반적으로 말하면, 이 예에서 n = 6개의 메모리 셀이 있고 n1 = n2 = 2 및 n3 = n4 = 1이 가정된다. 따라서 2-,2-,1-,1-out-of-6 코드의
Figure pat00025
개의 상이한 코드워드가 있다. 27 = 128개의 가능한 할당을 갖는 7개의 데이터 비트를 6개의 4진 메모리 셀에 저장하기 위해 이 180개의 코드워드가 사용될 수 있다.
여기서 사용되는 2-,2-,1-,1-out-of-6 코드의 코드워드들의 예들은 다음과 같다: 001123, 101320, 031210. 코드워드들 각각은, 각각, 2개의 0, 2개의 1, 하나의 2 및 하나의 3을 갖는다.
다진 메모리 셀 값들: 데이터 비트들의 그룹화
N개의 데이터 비트가 메모리 셀 값들로 변환되는 경우가 또다시 고려되고, 여기서 N = M · k이고 M은 1 초과이다. 따라서, k개의 데이터 비트의 M개의 그룹 각각이 형성될 수 있고, 여기서 k개의 데이터 비트의 각각의 그룹의 2k개의 할당 각각은 일의적 가역 방식으로 n1-,n2-,...,nK-out-of-n 코드의 2k개의 코드워드로 변환된다.
k개의 데이터 비트의 M개의 그룹의 할당들 각각이 n1-,n2-,...,nK-out-of-n 코드의 코드워드들로 변환되는 경우, M · n개의 K진 메모리 셀 값이 얻어지고 그에 따라 M · n개의 K진 메모리 셀에 저장된다.
동일한 변환을 사용하여 k개의 데이터 비트의 모든 그룹들의 할당들을 메모리 셀 값들로 변환하는 것이 유리할 수 있다. 그러면, 예를 들어, 변환 회로가 반복하여 사용될 수 있다. 그렇지만, 상이한 변환들을 사용하여 다양한 그룹들 내의 k개의 데이터 비트를 메모리 셀 값들로 변환하는 것이 또한 가능하다.
데이터 비트들의 기입 및 판독
저장될 k개의 비트들은 데이터 비트들이라고도 지칭된다. 이 데이터 비트들은, 예를 들어, 분리가능 에러 검출 및/또는 에러 정정 코드의 정보 비트들 및 체크 비트들을 가질 수 있다. 이 경우에, 정보 비트들이 분리가능 코드(separable code) 내의 체크 비트들로 보충될 수 있다. 데이터 비트들이, 코드워드의 비트들이 정보 비트들 및 체크 비트들로 세분되지 않는, 분리불가능 코드(inseparable code)의 비트들인 것이 또한 가능하다. 데이터 비트들이 정보 비트들 및 주소 비트들 및/또는 주소 비트들로부터 도출된 비트들 및/또는 패스워드의 비트들을 포함하는 것이 또한 한 옵션이다.
"데이터 비트들"이라는 명칭은, 예를 들어, 메모리에 저장될 비트들을 지칭하는 데 사용된다. 이들은, 메모리 셀 값들로 변환되어 메모리 셀들에 저장되는, 프로그램 코드, 이미지 데이터, 측정 데이터 또는 다른 유용한 데이터(페이로드)일 수 있다. 이 경우에, 메모리 셀 값들은 다진 또는 2진일 수 있다.
메모리 셀들을 판독할 때, 메모리 셀들에 저장된 디지털 메모리 셀 값들은 n개의 메모리 셀로부터 출력되는 물리적 값들을 비교함으로써 결정된다. 대안적으로, 그들은 또한 출력된 물리적 값들로부터 도출된 값들일 수 있다.
n개의 메모리 셀이 2진인 경우, 저장될 k개의 비트의 시퀀스는 n1개의 제1 2진 값 및 n2개의 제2 2진 값을 갖는 n개의 2진 메모리 셀 값의 시퀀스로 변환된다. 제1 2진 값들이 1로 나타내어지고 제2 2진 값들이 0으로 나타내어지는 경우, 저장될 k개의 비트의 시퀀스는 n1-out-of-n 코드의 코드워드로 변환되고 n2 = n - n1이다.
주어진 n 및 n1에 대해, k는
Figure pat00026
이도록 결정된다.
메모리 셀들이 2진이 아니고 메모리 셀이 K진 디지털 메모리 셀 값들을 저장하는 데 사용되는 경우, k개의 비트의 시퀀스는 n개의 메모리 셀에 저장되는 n개의 K진 메모리 셀 값의 시퀀스로 변환된다. n개의 메모리 셀 값의 시퀀스는 서로 동일한 미리 결정된 제1 개수의(n1개의) 제1 메모리 셀 값, 서로 동일한 미리 결정된 제2 개수의(n2개의) 제2 메모리 셀 값, ..., 서로 동일한 미리 결정된 제K 개수의(nK개의) 제K 메모리 셀 값까지를 갖도록 결정된다.
이 경우에,
1 ≤ n1, 1 ≤ n2, ..., 1 ≤ nK
이고
n1 + n2 +...+ nK = n이다.
게다가, k는
Figure pat00027
이도록 결정된다.
서로 동일한 미리 결정된 제1 개수의(n1개의) 제1 메모리 셀 값, 서로 동일한 미리 결정된 제2 개수의(n2개의) 제2 메모리 셀 값, ..., 서로 동일한 미리 결정된 제K 개수의(nK개의) 제K 메모리 셀 값까지를 갖는 n개의 K진 메모리 셀 값의 시퀀스는 (n1-,n2-,...,nK-out-of-n) 코드의 코드워드라고 지칭될 수 있다.
서로 동일한 제K 메모리 셀 값들의 개수(nK)는
nK = n - n1 - n2 -...- nK-1로서 결정된다.
메모리 셀들을 판독할 때, n개의 메모리 셀의 그룹의 메모리 셀들에 저장된 디지털 데이터는 그룹의 메모리 셀들로부터 판독된 물리적 값들을 비교함으로써 결정된다. 대안적으로, n개의 메모리 셀의 그룹의 메모리 셀들에 저장된 디지털 데이터는 판독된 물리적 값들 또는 도출된 특성들을 사용하는 비교에 의해 결정된다.
상이한 메모리 셀들로부터 판독된 물리적 값들의 시간적 거동(temporal behavior)이 또한 특성으로서 간주될 수 있고 비교를 위해 (동시에) 고려될 수 있다.
시각 τ에서, 메모리 셀(Si)로부터 판독된 값은 아날로그 값
Figure pat00028
를 취한다. 예를 들어, 메모리 셀(Si)에 저장된 값
Figure pat00029
는 전기 저항 값이고 시각 τ에서 메모리 셀(Si)로부터 획득된 물리적 값
Figure pat00030
는 판독 전류(전류 강도)이다.
메모리 셀(Si)의 저항
Figure pat00031
가 다른 메모리 셀(Sj)의 저항 값
Figure pat00032
보다 작은 경우, 양쪽 메모리 셀들을 판독하기 위해 미리 정의된 (동일한) 판독 전압이 사용되기만 한다면, 판독 전류
Figure pat00033
는 다른 메모리 셀(Sj)의 판독 전류
Figure pat00034
보다 더 크다.
메모리 셀(Si)의 판독 전류
Figure pat00035
가 커패시턴스(C)를 사용하여 시간에 걸쳐 적분되는 경우, 시각 ti에서 미리 정의된 문턱 값(Sw)에 도달한다. 메모리 셀(Si)로부터 획득된 물리적 값은, 예를 들어, 여기서 판독 전류
Figure pat00036
이다. 판독된 물리적 값으로부터 결정되는 도출된 값은, 예를 들어, 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각(ti)이다.
메모리 셀(Sj)의 판독 전류
Figure pat00037
가 커패시턴스(C)를 사용하여 시간에 걸쳐 적분되는 경우, 시각 tj에서 미리 정의된 문턱 값(Sw)에 도달한다.
메모리 셀들(Si 및 Sj)의 판독 전류들에 대해
Figure pat00038
이 적용되기 때문에,
ti < tj가 또한 적용되고 메모리 셀(Sj)에 대해서보다 메모리 셀(Si)에 대해 더 일찍 문턱 값(Sw)에 도달한다.
따라서, 메모리 셀들(Si 및 Sj)에 대해, 메모리 셀(Si)의 판독 전류의 적분이 메모리 셀(Sj)의 판독 전류의 적분보다 더 일찍 문턱 값(Sw)에 도달하는지를 비교하는 것이 가능하다. (동일한 전압에서) 저항 값
Figure pat00039
가 저항 값
Figure pat00040
보다 더 작을 때 이러하다.
따라서, 메모리 셀들(Si 및 Sj)의 순서(또는 "시퀀스")를 메모리 셀들에 저장된 물리적 값들
Figure pat00041
Figure pat00042
또는 메모리 셀들의 상태들에 기초하여 결정하는 것이 한 옵션이다. 문턱 값(Sw)에 도달하는 시각들(ti 및 tj)에 의해, 메모리 셀들이 메모리 셀들의 저항들(
Figure pat00043
Figure pat00044
)에 따라 정렬(sort)될 수 있으며, 즉 메모리 셀(Si)이 먼저 있고 메모리 셀(Sj)이 다음에 있다(또는 그 반대임).
이 접근법은 n개의 메모리 셀의 그룹의 모든 메모리 셀들을 정렬하는 데 사용될 수 있다.
예를 들어, 2진 0이 n1개의 제1 메모리 셀에 기입되고 2진 1이 n2개의 제2 메모리 셀에 기입되는 경우, 에러가 없는 경우에 n1개의 제1 메모리 셀의 전기 저항은 제2 n2개의 메모리 셀의 전기 저항보다 더 작고, 그 결과 n1개의 제1 메모리 셀의 판독 전류가 n2개의 제2 메모리 셀의 판독 전류보다 더 크다. 예를 들어, 이 경우에 n1 + n2 = n이 적용된다.
그에 따라, n1개의 제1 메모리 셀에 대해 문턱 값(Sw)에 도달하는 시각들
Figure pat00045
이 n2개의 제2 메모리 셀에 대해 문턱 값(Sw)에 도달하는 시각들
Figure pat00046
보다 이전에 있다.
따라서, 문턱 값(Sw)에 도달하는 시각들에 따라 메모리 셀들이 순서화(order)될 수 있다. 예를 들어, 제1 메모리 셀은 가장 이른(제1) 시각에 할당될 수 있고 제n 메모리 셀은 가장 늦은(마지막) 시각에 할당될 수 있다. 이 예에서, n1개의 제1 메모리 셀은 그러면 정확하게는 2진 값 0이 기입된 그 메모리 셀들일 것이고, n2개의 나머지 메모리 셀은 2진 값 1이 기입된 그 메모리 셀들일 것이다.
예를 들어, 적분
Figure pat00047
은 n개의 메모리 셀(S1 내지 Sn)에 대한 각자의 판독 전류들
Figure pat00048
(단, i = 1, ..., n임)에 기초한 시각 t에서의 전압 vi(t)를 나타낸다.
이 전압 vi(t)가 문턱 값(Sw)과 비교될 수 있다. 따라서, 상기 적분이 문턱 값(Sw)에 도달하는 시각들을 결정하는 것이 가능하다. 획득된 시각들이 서로 비교될 수 있다. 따라서, 메모리 셀의 상태가 2진 값 0 또는 1에 대응하는지를 결정하는 것이 가능하다.
시각 ti
vi(t) < Sw(t < ti인 경우)
vi(t) > Sw(t > ti인 경우)를 적용하는 것에 의해 결정될 수 있고,
여기서 판독 전류는, 예를 들어, 이 경우에 시간에 걸쳐 일정한 것으로 가정된다.
메모리 셀들의 저항 값들 또는 상태들이 판독 전류 또는 판독 전류의 시간 적분을 사용하여 서로 비교될 수 있다. n1개의 제1 셀 내에서의 저항 값들의 변동들은, 이 저항 값들이 n2개의 제2 메모리 셀의 저항 값보다 크지 않는 한, 유리하게도 2진 값 0을 n1개의 제1 메모리 셀에 할당하는 것에 영향을 주지 않는다. 그에 따라, n2개의 제2 셀 내에서의 저항 값들의 변동들은, 그들의 저항 값들이 n1개의 제1 메모리 셀의 저항 값보다 작지 않는 한, 유리하게도 2진 값 1을 n2개의 제2 메모리 셀에 할당하는 것에 영향을 주지 않는다.
메모리 셀들의 서브그룹들
예를 들어, n개의 메모리 셀의 그룹의 동일한 제1 디지털 값들을 갖는 n1개의 메모리 셀의 시퀀스 또는 동일한 제2 디지털 값들을 갖는 n2개의 메모리 셀의 시퀀스를 결정하는 것이 또한 필요하지 않을 수 있다. 제1 디지털 값들을 갖는 n1개의 메모리 셀은 제1 서브그룹을 형성하고, 제2 디지털 값들을 갖는 n2개의 메모리 셀은 제2 서브그룹을 형성한다. 서브그룹들 각각은 n개의 메모리 셀의 그룹의 일부에 대응한다. 이러한 서브그룹들의 일 예가 이하에서 보다 상세히 설명된다.
예를 들어, 2개의 서브그룹이 고려되고, 여기서 서브그룹들 내의 메모리 셀들의 개수 n1 및 n2에 대해
n1 + n2 = n이 적용된다.
제1 디지털 값은 제1 서브그룹 내의 n1개의 메모리 셀에 각각 기입되고, 제1 디지털 값과 상이한, 제2 디지털 값은 제2 서브그룹 내의 n2개의 메모리 셀에 각각 기입된다.
메모리 셀들로부터 물리적 값들을 판독할 때, 제1 서브그룹 내의 n1개의 메모리 셀 사이의 시퀀스를 결정하지 않는 것이 유리할 수 있는데, 그 이유는 동일한 디지털 값이 그들에 기입되기 때문이다.
예를 들어, n = 6개의 메모리 셀(S1, ..., S6)이 고려된다. 메모리 셀들(S1, S2, S3)은 제1 서브그룹 내의 n1 = 3개의 메모리 셀이고, 메모리 셀들(S4, S5, S6)은 제2 서브그룹 내의 n2 = 3개의 메모리 셀이다. 값 0이 제1 서브그룹 내의 메모리 셀들에 기입되고 값 1이 제2 서브그룹 내의 메모리 셀들에 기입된다.
도 2a는 메모리 셀들(S1 내지 S6)로부터 판독된 복수의 물리적 값들
Figure pat00049
Figure pat00050
Figure pat00051
을 포함하는 다이어그램을 도시하고 있다. 물리적 값(WA)은, 예를 들어, 판독 전류이다.
도 2b는 복수의 시각들(t1 내지 t6)을 갖는 다이어그램을 도시한 것이며, 여기서 하나의 시각(tm)은 물리적 값들
Figure pat00052
(단, m = 1, ..., 6임) 중 하나에 대응한다.
대응하는 판독 전류들을 시간에 걸쳐 적분하는 것은 따라서 각자의 판독 전류의 시간 적분이 미리 정의된 문턱 값에 도달하는 시각들(t1, t2, t3, t4, t5 및 t6)을 결정하는 것을 가능하게 한다. 예를 들어, 도 2b에 따라
t5 > t4 > t6 > t2 > t3 > t1이 적용된다.
ti > tj (단 i = 4, 5, 6이고 j = 1, 2, 3임)라는 것을 결정함으로써 메모리 셀들(S1 내지 S6)에 저장된 디지털 값들 0 또는 1이 할당될 수 있다.
상세하게는, 시각들(t4, t5, t6)과 시각들(t1, t2, t3) 사이의 차이를 결정할 필요가 없는 것이 유리하다.
따라서, 판독 전류의 시간 적분이 문턱 값(Sw)에 도달하는, n1개의 제1 메모리 셀에 제1 디지털 값을 할당하고 n2개의 나머지 메모리 셀에 제2 디지털 값을 할당하는 것이 가능하다. 이 경우에, 메모리 셀들 중 하나가 n1개의 제1 메모리 셀에 속하는지 여부를 결정하는 것으로 충분할 수 있다.
메모리 셀들로부터의 아날로그 신호들을 조합하고, 이 조합들에 기초하여, 제1 디지털 값 또는 다른 디지털 값이 메모리 셀들에 할당되는지를 결정하는 것이 또한 가능하다.
n개의 메모리 셀의 그룹 및 n1개의 제1 메모리 셀에 대해, n1개의 0 및 n2 = n - n1개의 1을 n개의 메모리 셀에 기입하는
Figure pat00053
개의 상이한 가능한 방식들이 얻어진다. 따라서, n개의 메모리 셀에서
Figure pat00054
개의 상이한 할당(상태라고도 지칭됨)이 가능하고, 그 결과
Figure pat00055
인 경우 k개의 데이터 비트(k-비트 바이트(k-bit byte)라고도 지칭됨)가 n개의 메모리 셀에 저장될 수 있다.
n이 짝수이면, n1 = n/2에 대해 최대 개수의 가능한 상태들이 얻어진다.
예를 들어, n = 6개의 메모리 셀이 있고 각각이 n1 = n2 = 3개의 제1 및 제2 메모리 셀을 갖는다. n = 6개의 메모리 셀은 3-out-of-6 코드의 코드워드가 저장될 수 있는 메모리 셀들(S1 내지 S6)의 그룹을 형성한다.
에러가 발생하지 않는 경우가 먼저 기술되도록 의도되어 있다. 메모리 셀들을 판독할 때, 판독 전류들(
Figure pat00056
내지
Figure pat00057
)의 적분의 값이 문턱 값(Sw)에 도달하는 시각들(t1 내지 t6)이 비교된다.
예를 들어,
t1 < t3 < t4 < t2 < t5 < t6인 경우,
메모리 셀들의 시퀀스는
S1, S3, S4, S2, S5, S6이다.
3-out-of-6 코드의 코드워드 101100이, 예를 들어, 메모리 셀들(S1 내지 S6)에 저장되고, 이 메모리 셀들로부터 판독된다. 순서화된 메모리 셀들의 처음 3개의 메모리 셀(S1, S3 및 S4)에 대해, 값 1이 판독된 값으로서 결정되고, 순서화된 메모리 셀들의 다음 3개의 메모리 셀(S2, S5 및 S6)에 대해, 값 0이 판독된 값으로서 결정된다.
이와 달리,
t'3 < t'4 < t'1 < t'2 < t'6 < t'5인 경우,
예를 들어, 메모리 셀들의 시퀀스는 이것으로부터 다음과 같다:
S3, S4, S1, S2, S6, S5.
3-out-of-6 코드의 동일한 코드워드 101100이 따라서 메모리 셀들(S1 내지 S6)로부터 판독된다. 2진 값 1을 저장하는 메모리 셀들(S1, S3 및 S4) 내에서의 시퀀스의 전치(transposition) 또는 2진 값 0을 저장하는 메모리 셀들(S2, S5 및 S6) 내에서의 시퀀스의 전치가 3-out-of-6 코드의 판독된 코드워드에 영향을 주지 않는다.
이 특성이 유리한데, 그 이유는 동일한 디지털 값들에 대응하는 판독된 물리적 값들에서의 사소한 변동들이 판독 동안 연관된 디지털 값들에 영향을 미치지 않기 때문이다.
이 예에서, 값 1을 저장하기 위해 메모리 셀들(S1, S3 및 S4)이 제공된다. 각각이 2진 값 1을 표현하도록 의도되어 있는 값들
Figure pat00058
가 이 메모리 셀들에 기입되었다. 이 값들
Figure pat00059
가 서로 차이가 거의 없지만, 특히 랜덤한 영향들의 결과로서, 약간 다를 수 있다.
그에 따라, 값 0을 저장하기 위해 메모리 셀들(S2, S5 및 S6)이 제공된다. 각각이 2진 값 0을 표현하는 값들
Figure pat00060
Figure pat00061
이 이 메모리 셀들에 기입되었다. 이 값들
Figure pat00062
Figure pat00063
이 서로 차이가 거의 없지만, 마찬가지로 랜덤한 영향들로 인해 약간 다를 수 있다.
예를 들어
t1 < t3 < t4 < t2 < t5 < t6 대신에,
시간적 순서
t'1 < t'3 < t'2 < t'4 < t'5 < t'6
이 결정되면, 메모리 셀들은 다음과 같이 순서화되고:
S1, S3, S2, S4, S5, S6
3-out-of-6 코드의 코드워드 111000이 메모리 셀들(S1 내지 S6)로부터 판독되고, 이 코드워드는, 에러가 없는 경우에 메모리 셀들의 시퀀스 내의 값 0을 할당받는, 시간적으로 첫 번째 메모리 셀(S2) 및 에러가 없는 경우에 메모리 셀들의 시퀀스 내의 값 1을 할당받는, 시간적으로 마지막 메모리 셀(S4)이 전치되어 있다는 사실에 의해, 에러 없는 코드워드 101100과 상이하다.
예: 3진 메모리 셀들
이하에서 예로서, 각각의 메모리 셀에 대해 3개의 상이한 디지털 값 0, 1 및 2가 저장될 수 있는 시나리오가 고려된다.
도 3은 메모리 셀의 물리적 값들(WG)의 빈도 분포들을 예시하는 그래프를 도시하고 있다.
도 3은 저장된 값들 0에 대한 빈도 분포(301), 저장된 값들 1에 대한 빈도 분포(302) 및 저장된 값들 2에 대한 빈도 분포(303)를 도시하고 있다. 빈도 분포(301)가 또한 WG(0)으로 나타내어지고, 빈도 분포(302)가 또한 WG(1)로 나타내어지며, 빈도 분포(303)가 또한 WG(2)로 나타내어져 있다.
빈도 분포들(301 및 302)은 오버랩 영역(304)을 가지며, 빈도 분포들(302 및 303)은 오버랩 영역(305)을 갖는다.
하나의 예시적인 실시예에 따르면, 물리적 값은 저항 값일 수 있다.
도 4는, 예로서, 메모리로부터 판독된 값들 2에 대한 빈도 분포(401), 메모리로부터 판독된 값들 1에 대한 빈도 분포(402) 및 메모리로부터 판독된 값들 0에 대한 빈도 분포(403)를 도시하고 있다. 빈도 분포(401)가 또한 WA(2)로 나타내어지고, 빈도 분포(402)가 또한 WA(1)로 나타내어지며, 빈도 분포(403)가 또한 WA(0)으로 나타내어져 있다.
빈도 분포들(401, 402)은 오버랩 영역(404)을 가지며, 빈도 분포들(402, 403)은 오버랩 영역(405)을 갖는다.
하나의 예시적인 실시예에 따르면, 판독된 물리적 값은 전류 강도일 수 있다.
메모리 셀(Si)의 판독 전류의 전류 강도
Figure pat00064
가 시간 t에 걸쳐 적분되는 경우, 시각 ti에서 미리 정의된 문턱 값(Sw)에 도달한다.
메모리 셀(Sj)의 판독 전류의 전류 강도
Figure pat00065
가 시간 t에 걸쳐 적분되는 경우, 시각 tj에서 미리 정의된 문턱 값(Sw)에 도달한다.
디지털 값 2가 메모리 셀(Si)에 기입되는 경우, 메모리 셀(Si)은 비교적 큰 저항 값
Figure pat00066
을 갖고 이 메모리 셀(Si)을 판독할 때 판독 전류
Figure pat00067
가 비교적 낮다. 그에 따라, 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각 ti이 크다.
디지털 값 1이 메모리 셀(Sj)에 기입되는 경우, 메모리 셀(Sj)은 메모리 셀(Si)의 저항 값
Figure pat00068
보다 더 낮은 저항 값
Figure pat00069
를 갖는다. 그에 따라, 메모리 셀(Sj)을 판독할 때의 판독 전류
Figure pat00070
가 메모리 셀(Si)을 판독할 때의 판독 전류
Figure pat00071
보다 더 크다. 따라서, 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각 tj가 시각 ti보다 이전에 있으며, 즉 tj < ti이다.
디지털 값 0이 메모리 셀(Sk)에 기입되는 경우, 메모리 셀(Sk)은 메모리 셀(Si)의 저항 값
Figure pat00072
보다도 더 낮고 메모리 셀(Sj)의 저항 값
Figure pat00073
보다도 더 낮은 저항 값
Figure pat00074
를 갖는다. 그에 따라, 메모리 셀(Sk)의 판독 전류
Figure pat00075
는 메모리 셀(Sj)의 판독 전류
Figure pat00076
또는 메모리 셀(Si)의 판독 전류
Figure pat00077
보다 더 크다. 따라서, 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각 tk가 시각들 ti 및 tj보다 이전에 있으며, 즉 tk < tj < ti이다.
메모리 셀(Sj)에 기입된 것과 동일한 디지털 값이 메모리 셀(Si)에 기입된 경우, 메모리 셀(Si)의 저항 값
Figure pat00078
가 메모리 셀(Sj)의 저항 값
Figure pat00079
보다 크거나 작을 수 있다.
마찬가지로, 메모리 셀(Si)의 판독 전류
Figure pat00080
가 메모리 셀(Sj)의 판독 전류
Figure pat00081
보다 크거나 작을 수 있다.
메모리 셀(Si)의 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각 ti가 메모리 셀(Sj)의 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는 시각 tj보다 이전에 또는 이후에 있는 것이 또한 가능하다.
이 경우에, 따라서 ti < tj인지 ti > tj인지는 미정(undetermined)인 채로 있다. 값 "미정"은 또한 여기서 기호 "-"로 기술된다.
n = 6개의 메모리 셀(S1 내지 S6)의 그룹이 예로서 고려된다. 이 경우에, 각각이 2개의 메모리 셀을 갖는 3개의 서브그룹이 있으며, 즉 n1 = n2 = n3 = 2이고, 여기서
- 디지털 메모리 셀 값 2는 n1 = 2개의 제1 메모리 셀에 저장되고,
- 디지털 메모리 셀 값 1은 n2 = 2개의 제2 메모리 셀에 저장되며,
- 디지털 메모리 셀 값 0은 n3 = 2개의 제3 메모리 셀에 저장된다.
따라서 2개의 2, 2개의 1 및 2개의 0을 6개의 위치로 분산시켜 3개의 디지털(3진) 메모리 셀 값을 갖는 6개의 메모리 셀에 저장하는
Figure pat00082
개의 가능한 방식들이 있다.
이와 달리, n = 6 및 n1 = n2 = 3에 대해, 3개의 1 및 3개의 0을 6개의 위치로 분산시켜 2진 메모리 셀 값들을 갖는 6개의 메모리 셀에 저장하는
Figure pat00083
개의 가능한 방식들만이 있으며, 그 결과 2진 메모리 셀 값들 0 및 1만을 사용하는 것보다 3개의 3진 디지털 값 0, 1 및 2를 사용하는 것에 의해 상당히 더 많은 정보가 n개의 메모리 셀의 그룹에 저장될 수 있다.
메모리 셀들 각각이 값 0, 1 또는 2를 취할 수 있는 이 예에서, (26 = 64개의 가능한 할당을 갖는) k = 6개의 데이터 비트가 따라서 n = 6개의 디지털 메모리 셀 값으로 변환되어 n = 6개의 메모리 셀에 저장될 수 있다. 6개의 메모리 셀 값 각각은
- n1 = 2개의 제1 디지털 값 2,
- n2 = 2개의 제2 디지털 값 1, 및
- n3 = 2개의 제3 디지털 값 0
을 갖는다. 6개의 메모리 셀 값은 각각의 코드워드가 2개의 제1 디지털 값, 2개의 제2 디지털 값 및 2개의 제3 디지털 값을 갖는 2-,2-,2-out-of-6 코드의 코드워드를 형성한다.
이 코드는
Figure pat00084
개의 코드워드를 갖는다.
k = 6개의 비트의 경우, 길이가 6 인 2k = 26 = 64개의 2진 워드가 일의적 가역 방식으로 2-,2-,2-out-of-n 코드의 코드워드들 중 64개의 코드워드로 변환될 수 있다.
도 15는 k개의 데이터 비트(x1 내지 xk)가 어떻게 변환 회로(1501)에 의해 변환되고 메모리(1502)의 n개의 메모리 셀에 n개의 메모리 셀 값으로서 저장되는지를 예시하기 위한 개략적인 구성을 도시하고 있다. 이 경우에, 예로서, k ≥ 2 및 n ≥ 3이 가정된다. k개의 데이터 비트(x1 내지 xk)가 변환 회로(1501)의 입력에 존재한다.
n개의 메모리 셀 값이 변환 회로(1501)에 의해 메모리(1502)의 메모리 셀들의 데이터 입력들에 제공된다. 이 n개의 메모리 셀 값은
n1-,n2-,...,nK-out-of-n 코드의 코드워드를 형성한다.
메모리 셀 값들은, 예를 들어, K진 디지털 값들이다.
도 16은 도 15의 구성의 개략적인 구현을 도시한 것이고, 여기서 도 16에서는, 예를 들어, n = k = 6이고, K = 3이며 n1 = n2 = n3 = 2이다. 도 16에 도시된 예에 따르면, 6개의 데이터 비트(x1 내지 x6)가 변환 회로(1601)에 의해 6개의 3진 메모리 셀 값으로 변환되어 메모리(1602)에 저장된다. 6개의 메모리 셀 값은 2개의 값 2, 2개의 값 1 및 2개의 값 0을 가지며 (에러가 없는 경우에) 2-,2-,2-out-of-6 코드의 코드워드를 형성한다. 이 경우에, 메모리 셀들 각각은 3진(K = 3) 메모리 셀 값들을 저장할 수 있다.
기술된 바와 같이, 판독 동안 메모리 셀들(S1 내지 S6)에 대해 판독 전류의 시간 적분이 미리 정의된 문턱 값(Sw)에 도달하는(또는 그를 초과하는) 시각들(t1 내지 t6)이 결정된다. 예를 들어,
ti1 < ti2 < ti3 < ti4 < ti5 < ti6인 경우,
메모리 셀들(S1 내지 S6)이 시퀀스
Si1, Si2, Si3, Si4, Si5, Si6으로 순서화될 수 있다.
이 경우에, 값들(i1, ..., i6)의 세트는 값들(1, ..., 6)의 세트와 같다. 예를 들어, i1 = 5, i2 = 4, i3 = 2, i4 = 1, i5 = 6 및 i6 = 3인 경우,
t5 < t4 < t2 < t1 < t6 < t3
이 얻어지고 메모리 셀들의 시퀀스는 따라서
S5, S4, S2, S1, S6, S3이다.
디지털 메모리 셀 값 0이 메모리 셀들의 시퀀스에서 처음 2개의 메모리 셀(Si1 및 Si2)에 할당되고, 디지털 메모리 셀 값 1이 시퀀스에서 다음 2개의 메모리 셀(Si3 및 Si4)에 할당되며, 디지털 메모리 셀 값 2가 시퀀스에서 추가의 2개의 메모리 셀(Si5 및 Si6)에 할당되는 것이 규정될 수 있다.
디지털 메모리 셀 값 2가 처음 2개의 메모리 셀(Si1 및 Si2)에 할당되고, 디지털 메모리 셀 값 1이 다음 2개의 메모리 셀(Si3 및 Si4)에 할당되며, 디지털 메모리 셀 값 0이 추가의 2개의 메모리 셀(Si5 및 Si6)에 할당되는 것이 또한 규정될 수 있다. 그에 따라, 추가의 할당 변형들이 또한 가능하다.
- 메모리 셀(Si2)의 판독 전류
Figure pat00085
및 메모리 셀(Si3)의 판독 전류
Figure pat00086
둘 다가, 값 0에 대해서도 그리고 값 1에 대해서도 판독 전류가 발생하는 오버랩 영역에, 있는 경우, 또는
- 메모리 셀(Si4)의 판독 전류
Figure pat00087
및 메모리 셀(Si5)의 판독 전류
Figure pat00088
둘 다가, 값 1에 대해서도 판독 전류가 발생하고 값 2에 대해서도 판독 전류가 발생하는 오버랩 영역에, 있는 경우에만 디지털 값들이 잘못 할당된다.
따라서, 6개의 메모리 셀에 기초하여, 메모리 셀들의 작은 부분에 대해서만 잘못된 할당이 가능하기 때문에 그리고 2개의 메모리 셀의 판독 전류들이 각각의 경우에 이 목적을 위해 동시에 오버랩 영역에 있어야만 하기 때문에, 다진 디지털 메모리들에 대해 높은 정도의 확률로 디지털 값들의 에러 없는 할당이 또한 유리하게도 가능하다.
따라서, 저장된 메모리 셀 값들을 판독할 때 판독 에러들이 아주 드물게 발생하는 것이 유리하다. 판독 동안, 판독된 물리적 값들 또는 판독된 물리적 값들로부터 결정된 상이한 메모리 셀들의 값들이 서로 비교될 수 있고, 이는, 그 결과, 그러면 판독 에러들을 효과적으로 감소시키는 것과 동등할 수 있다. 비교될 2개의 값이 동시에 오버랩 영역에 있을 때에만 잘못된 비교 결과가 발생할 수 있다.
대응하는 n개의 메모리 셀에 저장된 코드워드들이 (n1-,n2-,...,nK-out-of-n) 코드를 형성하는 경우, n개의 메모리 셀에 저장된 값들을 기준 값들을 사용하여 K진 메모리 셀 값들로서 판독하는 것이 또한 가능하다.
예 : 4진 메모리 셀 값들
도 17은 4개의 데이터 비트(x1, x2, x3, x4)를 4개의 메모리 셀 값(z1, z2, z3, z4)으로 변환하기 위한 개략적인 구성을 도시하고 있다.
4개의 데이터 비트(x1, x2, x3, x4)가 변환 회로(1701)의 입력에 존재한다. 이 4개의 데이터 비트는 변환 회로(1701)를 사용하여 4개의 메모리 셀 값(z1, z2, z3, z4)으로 변환되어 메모리(1702)의 메모리 셀들(S1, S2, S3, S4)에 저장된다.
이 예에서, 메모리(1702)는 n = 4개의 메모리 셀(S1, S2, S3, S4)의 그룹을 포함하고, 여기서, 예를 들어, 4개의 상이한 값 0, 1, 2, 3, 및 4가 메모리 셀들 각각에 저장될 수 있다. 따라서, 각각의 서브그룹에 대해 하나의 메모리 셀이 있으며, 즉 n1 = n2 = n3 = n4 = 1이다.
에러가 없는 경우에, 메모리 셀 값들(z1, z2, z3, z4)은 4 · 3 · 2 · 1 = 24개의 가능한 코드워드를 갖는 1-,1-,1-,1-out-of-4 코드의 코드워드를 형성한다. 따라서, n = 4개의 메모리 셀을 갖는 그룹에 24개의 상이한 디지털 값이 저장될 수 있다.
도 5는, 예를 들어, 메모리(1702)로부터 판독된 값들 3에 대한 빈도 분포(501), 메모리(1702)로부터 판독된 값들 2에 대한 빈도 분포(502), 메모리(1702)로부터 판독된 값들 1에 대한 빈도 분포(503) 및 메모리(1702)로부터 판독된 값들 0에 대한 빈도 분포(504)를 도시하고 있다. 빈도 분포(501)가 또한 WA(3)으로 나타내어지고, 빈도 분포(502)가 또한 WA(2)로 나타내어지며, 빈도 분포(503)가 또한 WA(1)로 나타내어지고, 빈도 분포(504)가 또한 WA(0)으로 나타내어져 있다.
값들 0, 1, 2, 3 및 4 각각은 메모리(1702)의 복수의 4진 메모리 셀들 중 하나에 저장될 수 있다.
예를 들어, 메모리(1702)로부터 판독된 값은 전류 강도(판독 전류)일 수 있고, 여기서 이 전류 강도의 레벨에 따라 값들 0, 1, 2, 3 또는 4 중 하나가 얻어진다.
빈도 분포들(501 및 502)은 오버랩 영역(505)을 갖고, 빈도 분포들(502 및 503)은 오버랩 영역(506)을 가지며, 빈도 분포들(503 및 504)은 오버랩 영역(507)을 갖는다.
메모리 셀(Si)의 판독 전류의 전류 강도 WA(τ)i가 시간 t에 걸쳐 적분되는 경우, 특정의 시각 ti에서 미리 정의된 문턱 값(Sw)에 도달한다.
메모리 셀(Sj)의 판독 전류의 전류 강도 WA(τ)j가 시간 t에 걸쳐 적분되는 경우, 특정의 시각 tj에서 미리 정의된 문턱 값(Sw)에 도달한다.
예를 들어, 값 3이 메모리 셀(Si)에 저장되고 디지털 값들 0, 1 또는 2 중 하나가 메모리 셀(Sj)에 저장되는 경우, tj < ti인데, 그 이유는 메모리 셀(Si)의 판독 전류
Figure pat00089
가 메모리 셀(Sj)의 판독 전류
Figure pat00090
보다 더 작기 때문이다.
예를 들어, 값 1이 메모리 셀(Si)에 저장되고 디지털 값들 3 또는 2 중 하나가 메모리 셀(Sj)에 저장되는 경우, tj > ti인데, 그 이유는 메모리 셀(Si)의 판독 전류
Figure pat00091
가 메모리 셀(Sj)의 판독 전류
Figure pat00092
보다 더 크기 때문이다.
예를 들어, t1 < t3 < t2 < t4인 경우, 메모리 셀들의 결과적인 시퀀스는 다음과 같다: S1, S3, S2, S4. 값 0은 메모리 셀(S1)에 할당될 수 있고, 값 1은 메모리 셀(S3)에 할당될 수 있으며, 값 2는 메모리 셀(S2)에 할당될 수 있고, 값 3은 메모리 셀(S4)에 할당될 수 있다.
4개의 데이터 비트(x1, x2, x3, x4)가 변환 회로(1701)의 입력에 존재하고 메모리 셀 값들(z1, z2, z3, z4)이 변환 회로(1701)의 출력에서 출력된다. 변환 회로(1701)에서 수행되는 이 변환은, 예를 들어, 표 1에 따라 결정될 수 있다.
Figure pat00093
4개의 데이터 비트(x1, x2, x3, x4)는 16개의 상이한 2진 값(0000, ..., 1111) - 이들 모두가 상기 표 1에 나타내어져 있음 -을 취할 수 있다. 이 경우에, 각각의 행은 데이터 비트들(xi)의 1-,1-,1-,1-out-of-4 코드의 코드워드(zi)로의 변환에 대응하고, 이 변환은 변환 회로(1701)에 의해 수행될 수 있다.
예를 들어, 표 1에서의 세 번째 행은 코드워드 3120가 데이터 비트들 0010에 할당된다는 것을 나타내고 있다.
이미 언급된 바와 같이, 1-,1-,1-,1-out-of-4 코드의 24개의 상이한 코드워드가 있다. 이 24개의 코드워드는 x1, x2, x3, x4에 대한 16개의 상이한 값과 마주하고 있다. 표 1에 따르면, 24개의 가능한 코드워드 중 16개만이 사용된다.
메모리 셀들(S1, S2, S3, S4)을 판독할 때, 4개의 메모리 셀 값(z1, z2, z3, z4)이 결정되고, 에러가 없는 경우에, 1,1,1,1-out-of-4 코드의 코드워드를 형성하는 경우, 이 메모리 셀 값들은 표 1에 따라 대응하는 데이터 비트들(x1, x2, x3, x4)로 변환된다.
가능한 역방향 변환은 표 2에 나타내어져 있다.
Figure pat00094
표 2에서, 데이터 비트들의 16개의 가능한 할당이 24개의 코드워드에 할당되고, 이 경우에 코드워드들 중 일부(표 2에서의 행 17 내지 행 24)에 대한 데이터 비트들이 없거나 이 코드워드들에 대한 데이터 비트들이 미정이다. 따라서 표 2는 표 1에 대한 역변환을 나타내고 있다.
예를 들어, 표 1에서의 행 5는 코드워드 3012가 데이터 비트들 0100에 할당된다는 것을 나타내고 있다. 그에 따라, 표 2에서의 행 5는 데이터 비트들 0100이 코드워드 3012에 할당된다는 것을 나타내고 있다.
표 2에서의 행 17 내지 행 24에 대해 데이터 비트들은 미정이다. 역변환 회로의 합성 동안, 미정 데이터 비트들이 회로 최적화를 위해 소위 "무정의(don't care)" 값들로서 사용될 수 있다. 미정 데이터 비트들이 또한 임의의 값(arbitrary value), 예를 들어, 0으로 설정될 수 있다.
예: 8개의 메모리 셀 내의 11개의 데이터 비트
예를 들어, k = 11개의 데이터 비트(x1, ..., x11)가 메모리 셀 값들(z1, ..., z8)을 갖는 8개의 메모리 셀로 변환될 수 있다. 메모리 셀 값들은 2-,2-,2-,2-out-of-8 코드의 코드워드들이다. 각각의 메모리 셀 값은 4진(K = 4)이며, 즉 각각의 메모리 셀에 대해 4개의 상이한 값 중 하나가 저장될 수 있다.
211 = 2048개의 상이한 값을 표현하기 위해 11개의 데이터 비트가 사용될 수 있다. 2-,2-,2-,2-out-of-8 코드는
Figure pat00095
개의
코드워드를 갖는다. 2048개의 2진 값 전부를 2,2,2,2-out-of-8 코드의 코드워드들로 변환하는 데 이 2520개의 코드워드로 충분하다.
예: 7개의 메모리 셀 내의 9개의 데이터 비트
k = 9개의 데이터 비트(x1, ..., x9)를 메모리 셀 값들(z1, ..., z7)을 갖는 n = 7개의 메모리 셀로 변환하는 것이 또한 가능하다. 메모리 셀 값들은 2-,2-,2-,1-out-of-7 코드의 코드워드들이다. 각각의 메모리 셀 값은, 예를 들어, 4진(K = 4)이다.
29 = 512개의 상이한 값을 표현하기 위해 9개의 데이터 비트가 사용될 수 있다. 2-,2-,2-,1-out-of-7 코드는
Figure pat00096
개의 코드워드를 갖는다. 512개의 2진 값 전부를 2,2,2,1-out-of-7 코드의 코드워드들로 변환하는 데 이 630개의 코드워드로 충분하다.
예를 들어, n1-,...,nK-out-of-n 코드의 코드워드들을 형성하는 디지털 메모리 셀 값들을 판독 및 결정할 때 기준 값이 요구되지 않은 것이 유리하다.
판독된 디지털 메모리 셀 값들은, 메모리 셀들로부터 판독된 물리적 값들을 상호 비교하는 것 또는 판독된 물리적 값들로부터 도출된 값들을 상호 비교하는 것에 의해, 결정될 수 있고, 그 결과 상이한 메모리 셀 값들에 대한 빈도 분포들이 오버랩 영역들을 가질 때에도 판독 에러들의 확률이 낮다.
비교기들에 의한 메모리의 판독
도 6은 n = 4개의 메모리 셀(S1, S2, S3 및 S4)을 포함하는 메모리(601)를 도시하고 있다. 값들
Figure pat00097
Figure pat00098
가 메모리 셀들의 출력들에서 판독되고
Figure pat00099
개의 비교기(602 내지 607)를 사용하여 둘씩 짝을 이루어 비교된다.
비교기(602)는 메모리 셀들(S1 및 S2)로부터 판독된 값들
Figure pat00100
Figure pat00101
를 비교한다. 비교기(602)는 판독된 값들에 대해
Figure pat00102
이면 그의 출력에서 2진 값 y12 = 1을 출력하고 판독된 값들에 대해
Figure pat00103
이면 2진 값 y12 = 0을 출력하도록 하는 방식으로 구성된다.
비교기(603)는 메모리 셀들(S1 및 S3)로부터 판독된 값들
Figure pat00104
Figure pat00105
을 비교한다. 비교기(603)는 판독된 값들에 대해
Figure pat00106
이면 그의 출력에서 2진 값 y13 = 1을 출력하고 판독된 값들에 대해
Figure pat00107
이면 2진 값 y13 = 0을 출력하도록 하는 방식으로 구성된다.
비교기(604)는 메모리 셀들(S1 및 S4)로부터 판독된 값들
Figure pat00108
Figure pat00109
를 비교한다. 비교기(604)는 판독된 값들에 대해
Figure pat00110
이면 그의 출력에서 2진 값 y14 = 1을 출력하고 판독된 값들에 대해 이면 2진 값 y14 = 0을 출력하도록 하는 방식으로 구성된다.
비교기(605)는 메모리 셀들(S2 및 S3)로부터 판독된 값들
Figure pat00112
Figure pat00113
을 비교한다. 비교기(605)는 판독된 값들에 대해
Figure pat00114
이면 그의 출력에서 2진 값 y23 = 1을 출력하고 판독된 값들에 대해
Figure pat00115
이면 2진 값 y23 = 0을 출력하도록 하는 방식으로 구성된다.
비교기(606)는 메모리 셀들(S2 및 S4)로부터 판독된 값들
Figure pat00116
Figure pat00117
를 비교한다. 비교기(606)는 판독된 값들에 대해
Figure pat00118
이면 그의 출력에서 2진 값 y24 = 1을 출력하고 판독된 값들에 대해
Figure pat00119
이면 2진 값 y24 = 0을 출력하도록 하는 방식으로 구성된다.
비교기(607)는 메모리 셀들(S3 및 S4)로부터 판독된 값들
Figure pat00120
Figure pat00121
를 비교한다. 비교기(607)는 판독된 값들에 대해
Figure pat00122
이면 그의 출력에서 2진 값 y34 = 1을 출력하고 판독된 값들에 대해
Figure pat00123
이면 2진 값 y34 = 0을 출력하도록 하는 방식으로 구성된다.
2개의 서브그룹이 n1 = n2 = 2의 크기를 갖는 경우,
Figure pat00124
개의 할당이 n = 4개의 메모리 셀(S1 내지 S4)을 갖는 그룹에 저장될 수 있다.
이 6개의 할당에 대해, 표 3은 6개의 비교기(602 내지 607)로부터의 출력 값들(y12, y13, y14, y23, y24, y34)을 나타내고 있다.
Figure pat00125
예를 들어, 표 3에서의 첫 번째 행은 2진 값들 1100이 메모리 셀들(S1 내지 S4)에 할당된다는 사실을 나타내고 있다. 비교기들(602 내지 607)은 그러면 2진 값들 y13 = y14 = y23 = y24 = 1을 출력한다. 2진 값 1이 메모리 셀들(S1 및 S2) 둘 다에 할당되기 때문에, 값들
Figure pat00126
Figure pat00127
- 둘 다 저장된 2진 값 1에 할당됨 - 가 비교기(602)에 의해 서로 비교된다. 이 경우에,
Figure pat00128
인지
Figure pat00129
인지를 예측하는 것이 가능하지 않고, 그 결과 비교기(602)로부터의 출력 값(y12)은 미정이다. 메모리 셀들(S3 및 S4)의 값들
Figure pat00130
Figure pat00131
둘 다가 2진 값 0을 갖기 때문에, 비교기(607)로부터의 출력(y34)이 또한 미정이다.
따라서, 비교될 연관된 메모리 셀들의 출력 값들이 동일한 값들을 갖는 경우, 비교기로부터의 출력 값들이 표 3에서 미정이다.
"함수" 열에서, 대응하는 비교기들로부터의 부정된(negated) 또는 비-부정된(non-negated) 출력 값들의 논리곱(conjunction)인 부울 표현식들 각각이 표 3에서의 행들에 할당되고: 출력 값(yij)이 1인 경우, 출력 값이 논리곱에 나타나고; 이와 달리, 출력 값(yij)이 0인 경우, 부정된 출력 값
Figure pat00132
가 논리곱에 나타난다. 출력 값이 미정("-")이면, 이는 논리곱에 나타나지 않는다. 이것은, 특히, 회로부 구현에 대한 비용을 감소시킨다.
메모리 셀들(S1 내지 S4)에 대한 2-out-of-4 코드의 비트들의 6개의 할당 각각에 대해, 6개의 논리곱 중 정확히 하나는 값 1을 취하며: 예를 들어, 표 3에서의 세 번째 행에 따른 메모리 셀들에 대한 할당 1001이 따라서 논리곱
Figure pat00133
에 대응한다.
비교기들(602, 603, 606, 607)은 값들(y12 = 1, y13 = 1, y24 = 0 및 y34 = 0)을 출력한다. 이 경우에, 표 3에 나타내어진 다른 논리곱들 전부는 값 0을 갖는다.
따라서, 논리곱
Figure pat00134
가 값 1을 갖는다는 사실의 결과로서, 할당 1001이 메모리 셀들(S1 내지 S4)로부터 판독되었다고 일의적으로 결정된다.
메모리 셀들에 대한 할당의 결정
도 7은 비교기들(602 내지 607)로부터의 값들(y12, y13, y14, y23, y24 및 y34)로부터 메모리 셀들(S1 내지 S4)에 대한 대응하는 할당들을 결정하는 데 사용되는 회로 구성을 도시하고 있다. 예를 들어, 각각이 4개의 입력을 갖는 6개의 AND 게이트(701 내지 706) 및 각각이 3개의 입력을 갖는 4개의 OR 게이트(708 내지 711)가 이 목적을 위해 사용된다.
값들(y13, y14, y23 및 y24)이 AND 게이트(701)의 입력들에 전달된다. 값들(y12, y14,
Figure pat00135
및 y24)이 AND 게이트(702)의 입력들에 전달된다. 값들(y12, y13,
Figure pat00136
Figure pat00137
)이 AND 게이트(703)의 입력들에 전달된다. 값들(
Figure pat00138
,
Figure pat00139
, y24 및 y34)이 AND 게이트(704)의 입력들에 전달된다. 값들(
Figure pat00140
,
Figure pat00141
, y23
Figure pat00142
)이 AND 게이트(705)의 입력들에 전달된다. 값들(
Figure pat00143
,
Figure pat00144
,
Figure pat00145
Figure pat00146
)이 AND 게이트(706)의 입력들에 전달된다.
게다가, AND 게이트들(701 내지 706)의 출력들은 다음과 같이 OR 게이트들(708 내지 711)의 입력들에 연결된다: AND 게이트(701)의 출력은 OR 게이트들(708 및 709) 각각의 입력들 중 하나에 연결된다. AND 게이트(702)의 출력은 OR 게이트들(708 및 710) 각각의 입력들 중 하나에 연결된다. AND 게이트(703)의 출력은 OR 게이트들(708 및 711) 각각의 입력들 중 하나에 연결된다. AND 게이트(704)의 출력은 OR 게이트들(709 및 710) 각각의 입력들 중 하나에 연결된다. AND 게이트(705)의 출력은 OR 게이트들(709 및 711) 각각의 입력들 중 하나에 연결된다. AND 게이트(706)의 출력은 OR 게이트들(710 및 711) 각각의 입력들 중 하나에 연결된다.
메모리 셀(S1)에 대한 할당은 OR 게이트(708)의 출력에서 제공되고, 메모리 셀(S2)에 대한 할당은 OR 게이트(709)의 출력에서 제공되며, 메모리 셀(S3)에 대한 할당은 OR 게이트(710)의 출력에서 제공되고, 메모리 셀(S4)에 대한 할당은 OR 게이트(711)의 출력에서 제공된다.
도 7에 따른 회로 구성은 따라서 상기 표 3을 다음과 같이 시각화한다: 표 3에서의 함수들은 AND 게이트들(701 내지 706)의 출력들에 표현되고, 여기서 AND 게이트(701)는 표 3의 첫 번째 행에서의 함수에 대응하고 AND 게이트(706)는 표 3의 마지막 행에서의 함수에 대응한다. 도 7에 따른 메모리 셀(Si)에 대한 할당은 다음과 같이 메모리 셀(Si)의 열로부터 얻어진다: 이 열이 값 1을 갖는 표의 그 행에서의 함수(논리곱)를 형성하는 논리 OR 조합이 있다. 예를 들어, 메모리 셀(S1)은 표 3의 처음 3개의 행에서 값 1을 가지며, 즉 표 3의 처음 3개의 행에서의 논리곱들을 표현하는 AND 게이트들(701, 702 및 703)로부터의 출력들을 갖는 OR 조합이 있다. 이것은 그에 따라 다른 메모리 셀들에 적용된다.
예: 3진 메모리 셀들
3진 메모리 셀들을 갖는 일 예 - 즉, 메모리 셀들 각각이 값들 0, 1 또는 2 중 하나를 취할 수 있음 - 가 고려되고, 이 경우에, 예를 들어, 2 > 1 > 0이다.
그룹이 n = 6개의 메모리 셀을 갖고 서브그룹들이 n1 = n2 = n3 = 2개의 메모리 셀을 갖는 경우가 고려된다. 따라서, 6개의 메모리 셀의 각각의 그룹에 대해, 값 2가 두 번 저장될 수 있고, 값 1이 두 번 저장될 수 있으며, 값 0이 두 번 저장될 수 있다. 따라서 2개의 2, 2개의 1 및 2개의 0을 6개의 메모리 셀(S1 내지 S6)의 그룹에 할당하는
Figure pat00147
개의 가능한 방식들이 있다.
메모리 셀들로부터 데이터를 판독할 때 모든 메모리 셀들로부터 판독된 값이 둘씩 짝을 이루어 비교되는 경우, 메모리 셀들(S1 내지 S6)로부터의 모든 물리적 출력 값들을 비교하기 위해 15개의 비교기(VGLij)가 사용되고, 여기서 i, j = 1...6은 각각이 메모리 셀들 중 하나를 나타내는 인덱스들이다. 따라서, 비교기(VGLij)는 메모리 셀(Si)과 메모리 셀(Sj)을 비교한다. 15개의 비교기는 따라서 다음과 같다:
VGL12, VGL13, VGL14, VGL15, VGL16,
VGL23, VGL24, VGL25, VGL26,
VGL34, VGL35, VGL36,
VGL45, VGL46
VGL56.
비교기(VGLij)로부터의 2진 출력 값은 yij로 나타내어지고, 그 결과 그에 따라 다음과 같은 15개의 2진 출력 값이 있다:
y12, y13, y14, y15, y16,
y23, y24, y25, y26,
y34, y35, y36,
y45, y46
y56.
메모리 셀들(S1 내지 S6)에 대한 할당 221100에 대해, 표 4는 이 15개의 비교기로부터의 출력 값들을 나타내고 있다.
Figure pat00148
다음과 같은 논리곱이 얻어진다:
Figure pat00149
이 논리곱은 15개의 비교기로부터의 12개의 값을 갖는다. 이들은 미정이 아닌 그 값들이다.
원칙적으로: 값 1은 각자의 비교기로부터의 비-반전된 또는 비-부정된 값(yij)을 나타내고 값 0은 반전된 또는 부정된 값
Figure pat00150
를 나타낸다.
메모리 셀들(S1 내지 S6)에 대한 할당 212100에 대해, 표 5는 15개의 비교기로부터의 출력 값들을 나타내고 있다.
Figure pat00151
다음과 같은 논리곱이 얻어진다:
Figure pat00152
.
논리곱은 15개의 비교기로부터의 12개의 출력 값을 갖는다.
메모리 셀들(S1 내지 S6)에 대한 할당 001122에 대해, 표 6은 15개의 비교기로부터의 출력 값들을 나타내고 있다.
Figure pat00153
다음과 같은 논리곱이 얻어진다:
Figure pat00154
.
논리곱은 15개의 비교기로부터의 12개의 출력 값을 갖는다.
메모리 셀들 각각에 대한 2개의 2, 2개의 1 및 2개의 0의 나머지 할당들에 대해, 연관된 논리곱들이 그에 따라 얻어진다. 미정이 아닌 15개의 출력 값(반전되거나 그렇지 않음) 중 12개는, 각각, 대응하는 논리곱들을 형성한다. 이 논리곱들은 메모리 셀들(S1 내지 S6)이 그들에 대응하는 할당들을 저장할 때는 정확히 값 1을 취하고, 메모리 셀들로부터 판독된 값들(
Figure pat00155
내지
Figure pat00156
)이 비교기들(VGLij)에서 둘씩 짝을 이루어 비교된다.
예 : 변환 및 역변환
도 8은 m개의 데이터 비트가 메모리(803)의 메모리 셀들(S1 내지 Sn)에 저장되는 예시적인 실시예를 도시하고 있다. n개의 메모리 셀(S1 내지 Sn)의 그룹이 도시되어 있고, 여기서
- n1개의 제1 값이 n1개의 메모리 셀에 저장되고,
- n2개의 제2 값이 n2개의 메모리 셀에 저장되며,
...
- nK개의 제K 값이 nK개의 메모리 셀에 저장된다.
환언하면, K개의 서브그룹이 있다. 특정의 개수의 동일한 값이 각각의 서브그룹에 저장된다. 상이한 값들이 상이한 서브그룹들에 저장된다.
n개의 메모리 셀의 그룹에 저장되는 m개의 데이터 비트는 m-비트 바이트 또는 간단히 바이트라고도 지칭될 수 있다. 문자들 m 및 k가 데이터 비트들의 개수에 대한 변수로서 사용된다.
이 경우에,
2m ≤ N
이고, 여기서
Figure pat00157
이며 m < n이다. 이 경우에, N은 n1개의 제1 값, n2개의 제2 값, ..., nK개의 제K 값까지를 n개의 메모리 셀의 그룹에 할당하는 가능한 방식들의 개수이다.
변환 회로(801)는 워드 폭 m의 2m개의 데이터 비트를 N개의 값(z1, z2, ..., zn) 중 2m개의 값으로 변환하는 변환 TS(m, n)을 수행하고, 여기서
- z1, z2, ..., zn의 값들 중 n1개는 0이고,
- z1, z2, ..., zn의 값들 중 n2개는 1이며,
...
- z1, z2, ..., zn의 값들 중 nK개는 K-1이다.
워드 폭 m의 데이터 비트들 중 2m개 전부가 요구되는 것은 아닌 경우, 요구된 데이터 비트들만을 변환하여 메모리 셀들에 저장하는 것이 가능하다.
변환 회로(801)는, 예를 들어, 워드 폭 m의 비트 값들(x1, ..., xm)의, 메모리 셀들(S1 내지 Sn)에 저장되도록 의도되어 있는, 워드 폭 n의 값들(z1, ..., zn)로의 변환 T(m, n)을 표현하도록 하는 방식으로 구성되고, 여기서
- z1, ..., zn의 값들 중 n1개는 값 0을 갖고,
- z1, ..., zn의 값들 중 n2개는 값 1을 가지며,
- z1, ..., zn의 값들 중 nK개는 값 (K - 1)을 갖는다.
m개의 비트(x1, ..., xm)는, 예를 들어, 데이터 비트들이라고 지칭될 수 있다. 상세하게는, 이러한 데이터 비트들을 메모리의 메모리 셀들에 기입되는 값들과 구별하는 것이 가능하다. 비트들(x1 내지 xm)이, 예를 들어, 에러 검출 또는 에러 정정을 위한 에러 코드의 코드워드의 비트들인 경우, 이 비트들은 또한 에러 코드의 적어도 하나의 체크 비트를 포함할 수 있거나 에러 코드의 체크 비트들만일 수 있다.
메모리 셀들(S1 내지 Sn)이 판독되고 판독된 값들(z'1 내지 z'n)이, 변환 TS -1(n, m)을 제공하는 변환 회로(802)에 의해, 데이터 비트들(x'1 내지 x'm)로 변환되며, 여기서, 에러가 없는 경우에:
x'1, ..., x'm = x1, ..., xm이다.
변환 회로(801) 및 변환 회로(802)는 바람직하게는
T-1(n, m){T(m, n)[x1, ..., xm]} = x1, ..., xm이 변환 T(m, n) 및 역변환 T-1(n, m)에 적용되도록 하는 방식으로 셋업된다.
비트들(x1 내지 xm)이 m-비트 바이트라고 지칭되는 경우, m-비트 바이트가 메모리의 n개의 메모리 셀들에 워드(z1 내지 zn)로서 저장되고, 여기서 미리 결정된 n1개의 제1 메모리 셀은 제1 값을 저장하고, 미리 결정된 n2개의 제2 메모리 셀은 제2 값을 저장하며, ..., 미리 결정된 nK개의 제K 메모리 셀은 제K 값을 저장한다.
예: K = 2인 경우, n1개의 제1 메모리 셀은 제1 값 0을 저장하고 n2개의 제2 메모리 셀은 제2 값 1을 저장한다. n2-out-of-n 코드의 코드워드들이 이어서 메모리 셀들(S1 내지 Sn)에 저장된다.
추가 예: 4개의 값이 메모리 셀들(S1 내지 Sn) 각각에 저장될 수 있는 경우, 제1 값을 n1개의 메모리 셀에 저장하고, 제2 값을 n2개의 메모리 셀에 저장하며, 제3 값을 n3개의 메모리 셀에 저장하고, 제4 값을 n4개의 메모리 셀에 저장하는 것이 가능하다. 이 경우에: n1 + n2 + n3 + n4 = n이다.
기술된 바와 같이, 판독된 상이한 메모리 셀들의 물리적 특성들(예를 들어, 물리적 값들)을 비교하는 것이 가능하다. 이것은 에러 확률들을 적어도 부분적으로 감소시키는 것을 가능하게 한다. 판독 동안 둘씩 짝을 이루어 비교된 값들 둘 다가 동시에 물리적 값들의 빈도 분포들의 오버랩 영역에 있는 경우에만 에러가 발생할 수 있고, 개개의 값만이 이러한 오버랩 영역에 있을 때조차도 에러가 발생할 수 없다.
예: 도 9
도 9는 각각의 경우에 m-비트 바이트들을 n개의 메모리 셀에 저장하는 일 예를 도시하고 있으며, 여기서 m = 4이고, n = 6이며, n1 = n2 = 3이다. 제1 디지털 값 0은 n1 = 3개의 메모리 셀에 저장되고, 제2 디지털 값 1은 n2 = 3개의 제2 메모리 셀에 저장된다. 4-비트 바이트가 3-out-of-6 코드의 6-비트 워드로서 6개의 메모리 셀에 저장된다.
도 9는 각각의 경우에 메모리(901)의 6개의 메모리 셀에 3개의 4-비트 바이트를 저장하는 것을 도시하고 있으며, 여기서 메모리 셀들은, 예를 들어, 디지털 2진 값들을 저장할 수 있다. 4-비트 바이트들(x1, x2, x3, x4)이, 변환 회로(902)에 의해, 메모리(901)의 메모리 셀들(S1 내지 S6)에 저장되는 2진 값들(z1 내지 z6)로 변환된다. 게다가, 4-비트 바이트들(x5, x6, x7, x8)이, 변환 회로(903)에 의해, 메모리(901)의 메모리 셀들(S7 내지 S12)에 저장되는 2진 값들(z7 내지 z12)로 변환된다. 4-비트 바이트들(x9, x10, x11, x12)이 또한, 변환 회로(904)에 의해, 메모리(901)의 메모리 셀들(S13 내지 S18)에 저장되는 2진 값들(z13 내지 z18)로 변환된다.
변환 회로들(902 내지 904) 각각은 변환 T(4, 6)을 수행한다. 3-out-of-6 코드의 상이한 코드워드를 16개의 가능한 4-비트 값 각각에 할당하는 변환 T(4, 6)이 표의 형태로 기술될 수 있다. 일 예가 표 7에 나타내어져 있다.
Figure pat00158
이러한 표는, 예를 들어, 조합 (논리) 회로의 형태로 또는 판독 전용 메모리의 형태로 구현될 수 있다.
메모리 셀들에 저장되는 값들 또는 메모리 셀 값들이 2진 값들인 경우, 이 값들은 메모리 비트들이라고도 지칭될 수 있다.
기술된 예에서, 데이터 비트들의 반전은 메모리 비트들의 반전을 초래한다.
임의로, 상이한 4-비트 바이트들이, 기능적으로 동일한 변환 또는 동일하게 기능하는 변환 회로를 사용하여, 메모리 값들, 상세하게는 메모리 비트들로 변환될 수 있다. 기능적으로 상이한 변환들 또는 변환 회로들을 사용하여 상이한 4-비트 바이트들을 메모리 비트들로 또는 일반적으로 메모리 값들로 변환하는 것이 마찬가지로 가능하다. 예를 들어, 변환 회로들(902 내지 904) 중 적어도 2개는 상이한 변환들을 구현할 수 있다. 변환 회로들(905 내지 907)은 이어서 그에 따라 적절한 역변환들을 제공한다.
예를 들어, 4-비트 바이트(x)의 반전이 디지털 값들(z)의 반전을 가져오는 변환들을 제공하는 것이 가능하다.
메모리(901)로부터 판독하는 동안, 메모리 비트들(z'1, z'2, z'3, z'4, z'5, z'6)이 판독되고 변환 회로(905)에 의해 4-비트 바이트들(x'1, x'2, x'3, x'4)로 변환된다. 그에 따라, 메모리 비트들(z'7, z'8, z'9, z'10, z'11, z'12)이 판독되고 변환 회로(906)에 의해 4-비트 바이트들(x'5, x'6, x'7, x'8)로 변환된다. 메모리 비트들(z'13, z'14, z'15, z'16, z'17, z'18)이 또한 판독되고 변환 회로(907)에 의해 4-비트 바이트들(x'9, x'10, x'11, x'12)로 변환된다.
변환 회로들(905, 906 및 907) 각각은, 표 7에 나타내어진 변환의 역변환인, 변환 TS -1(6, 4)을 구현하고, 이 변환에 따라 이 경우에 n = 6개의 상태 비트 z'(i·n)(i = 1...3이고 n = 1...6임)이, 각각, m = 4개의 데이터 비트 x'(i·m)(i = 1...3이고 m = 1...4임)으로 변환된다.
에러들로 인해, 메모리(901)로부터 판독된 메모리 비트들 z'(i·n)이 원래 저장된 비트들 z(i·n)과 상이할 수 있다. 따라서, 판독된 데이터 비트들(x'i·m)이 또한 기입된 데이터 비트들(xi·m)과 상이할 수 있다.
에러가 발생하지 않은 경우, 처음 4개의 데이터 비트(x1 내지 x4), 처음 6개의 변환된 비트(z1 내지 z6), 역방향 변환될 처음 6개의 비트(z'1 내지 z'6) 및 처음 4개의 결과적인 데이터 비트(x'1 내지 x'4)에
z1, z2, z3, z4, z5, z6 = z'1, z'2, z'3, z'4, z'5, z'6
x1, x2, x3, x4 = x'1, x'2, x'3, x'4이 적용된다.
이것이 그에 따라 두 번째 4개의 데이터 비트 및 세 번째 4개의 데이터 비트에 적용된다.
완전함을 위해, 변환 TS -1(6, 4)을 예시하는 표 8이 나타내어져 있다. 이것은 표 7에 나타내어진 할당들의 역표현(inverse representation)이다.
Figure pat00159
표 8에서 언급되지 않은 메모리 비트들(z'1 내지 z'6)의 값들에 대해, 역변환 회로(905)의 합성을 위해 데이터 비트들(x'1 내지 x'4)의 임의의 원하는 연관된 값들이 미리 정의될 수 있다. 예를 들어, 최적화 동안 합성 도구에 의해 미정 값들로서 규정되는 "무정의" 값들이라고도 지칭되는 그 임의의 값들을 갖는 것이 가능하다. 이 값들을 0으로 설정하는 것이 또한 한 옵션이다.
에러 검출 및/또는 에러 정정
잘못된 데이터 비트들이 역변환 회로(905)에 의해 잘못된 메모리 비트들에 할당되는 경우, 잘못된 4-비트 바이트가 에러 코드에 의해 검출 및/또는 정정될 수 있다. 이것이 이하에서 예로서 설명된다.
도 10은 에러 검출 또는 에러 정정과 결합된 에러 검출을 가능하게 하는 예시적인 회로 구성을 도시하고 있으며, 여기서 데이터 비트들은, 변환 회로에 의해, 메모리의 메모리 셀들에 저장되는 메모리 비트들로 변환된다.
데이터 비트들(x)이 코더(1001)의 입력에 존재하고, 코더의 출력에서 에러 코드(C1)에 따라 코딩된 비트들(y = Cod(x))이 제공된다.
에러 코드(C1)가 바이트 에러 정정 및/또는 에러 검출 코드, 예를 들어, Reed-Solomon 코드인 것이 가능하다. 에러 코드(C1)가 비트 에러 정정 및/또는 에러 검출 코드, 예를 들어, BCH 코드, Hsiao 코드, Hamming 코드, 저밀도 패리티 코드 또는 다른 코드인 것이 또한 가능하다.
코더(1001)의 출력에서 출력된 비트들(또는 바이트들)(y = Cod(x))은, 변환 회로(1002)에 의해, 메모리(1003)의 메모리 셀들에 기입되는 디지털 값들(z(y))로 변환된다. 변환 회로(1002)는 변환(TS)을 제공한다.
n개의 메모리 셀의 그룹에서 각각의 경우에, n1개의 제1 값이 n1개의 제1 메모리 셀에 저장되고, n2개의 제2 값이 n2개의 제2 메모리 셀에 저장되며, ..., 마지막으로 nK개의 제K 값이 nK개의 제K 메모리 셀에 저장된다. 이 경우에: n1 + n2+...+nK = n이다.
다음 단계에서, 값들(z'(y))이 메모리(1003)의 대응하는 메모리 셀들로부터 판독된다. 값들(z'(y))이, 적어도 하나의 에러로 인해, 기입된 값들(z(y))과 상이할 수 있다. 에러가 발생하지 않은 경우, z(y) = z'(y)이다.
메모리(1003)로부터 판독된 값들(z'(y))은 변환(TS -1)을 제공하는 역변환 회로(1004)에 의해 2진 값들(y')로 변환된다.
에러가 발생하지 않은 경우,
y' = y = Cod(x)이다.
에러가 발생한 경우,
y' ≠ y = Cod(x)이다.
에러 코드(C1)에 따라, 정정 값 생성기(1005)는 대응하는 워드 폭의 정정 값(e)을 형성하고, 여기서 정정 값(e)의 컴포넌트들이 XOR 회로(1007)에서 한 컴포넌트씩 값들(y')과 XOR된다. XOR 회로는 입력 신호들을 배타적 OR(exclusively OR)하고 출력에서 이 조합의 결과를 제공하는 회로이다. XOR 회로는 입력들에서의 신호들이 동일할 때 출력에서 논리 값 1을 제공한다. 입력들에서의 신호들이 상이한 경우, XOR 회로는 출력에서 논리 값 0을 제공한다.
XOR 회로(1007)의 출력에서 정정된 값(ycor)이 제공된다. 정정 값 생성기(1005)를 통해 코드(C1)에 의해 정정될 수 있는 에러가 발생한 경우, 정정된 비트들은 코딩된 비트들과 동일하며, 즉
ycor = y = Cod(x)이다.
에러 검출 회로(1006)가 또한 도시되어 있고, 이 회로는, 에러 코드(C1)를 사용하여 검출될 수 있는, 에러 및/또는 특정 유형의 에러가 존재하는지를 결정하기 위해 사용될 수 있다. 값(y')이 에러 검출 회로(1006)에 공급되고, 에러 검출 회로(1006)는 에러 정보(1008)를 출력한다.
에러 코드가, 예를 들어, 1-바이트 에러 정정 코드 및 2-바이트 에러 검출 코드인 경우, 에러 검출 회로(1006)는 에러 없음, 1-바이트 에러 또는 2-바이트 에러가 발생했는지에 따라 상이한 에러 정보들(1008)을 출력할 수 있다. 예를 들어, 에러 정보(1008)는 비트 스트링 00, 01 또는 10(즉, 이 예에서, 2개의 비트를 갖는 비트 스트링)으로서 코딩될 수 있다.
임의로, 에러 검출 회로(1006) 및 정정 값 생성기(1005)는 함께 또는 부분적으로 함께 구현될 수 있다.
에러 코드(C1)가, 데이터 비트들이 코더(1001)에 의한 코딩 동안 변경되지 않는, 분리가능 코드이면, XOR 회로(1006)에 의해 출력된 비트들은, 에러가 발생하지 않은 경우 또는 에러 코드(C1)에 의해 정정될 수 있는 에러가 발생한 경우, 코더(1001)에 입력되고 변환 회로(1002)에 의한 변환 이후에 메모리(1003)에 저장된, 대응하는 데이터 비트들과 동일하다.
도 11은 에러 정정 또는 어쩌면 에러 정정을 갖는 에러 검출을 가능하게 하는 대안의 회로 구성을 도시하고 있다.
데이터 비트들(x)이 변환 회로(1101)의 입력에 존재하고 값들(z(x))로 변환된다. 변환 회로(1101)로부터의 값들(z(x))이 코더(1102)의 입력에 존재하고, 코더(1102)는 에러 코드(C2)를 사용하여 코딩된 데이터(Cod(z(x)))가 그의 출력에서 제공되도록 하는 방식으로 셋업된다.
코더(1102)는 코딩 기능 및 체크 비트 변환 기능을 제공할 수 있다.
예를 들어, 에러 코드(C2)가 분리가능 코드인 것으로 가정될 것이고, 그 결과 코더(1102)의 입력에 존재하는 값들(z(x))이 변경 없이 코더에 의해 결정된 출력 데이터(Cod(z(x)))에 포함되고 에러 코드(C2)에 따라 체크 비트들로 보충된다.
이 예에서, 코더(1102)는 그의 입력에 존재하는 값들(z(x))을 변경 없이 그의 출력에서 출력하고(이 경우에, 입력 및 출력 각각은 복수의 라인들을 가질 수 있고, 여기서 각각의 라인은 하나의 비트에 할당됨) 그에 부가하여 에러 코드(C2)에 따라 비트들(z(x))로부터 체크 비트들을 형성하고 또한 이들이 메모리(1103)에 저장되기 전에 이 체크 비트들을 변환하도록 하는 방식으로 구성된다.
값들(z(x))은, 예를 들어, n1-out-of-n 코드의 코드워드들로 이루어진 n개의 비트의 그룹들을 형성한다. 코더(1102)에 의해 제공되는 변환된 체크 비트들도 마찬가지로 이 경우에 n1-out-of-n 코드워드일 수 있거나 이러한 코드워드들을 포함할 수 있다.
예를 들어, 에러 코드(C2)에 의해 비트들(z(x))로부터 결정된 체크 비트들이 코더(1102)에 의해, 각각의 경우에 2개의 비트가 서로 상보적인, 비트들로서 제공되는 것이 가능하다. 이 경우에, 각각의 체크 비트는 2개의 비트로 변환되어 2개의 메모리 셀에 저장된다. 예를 들어, 체크 비트 1은 비트들 10으로 변환될 수 있고 체크 비트 0은 비트들 01로 변환될 수 있으며 2개의 메모리 셀에 각각 저장될 수 있다.
체크 비트들의 메모리 셀 값들로의 다른 변환들이 또한 가능하다. 예를 들어, 에러-허용(error-tolerant) 방식으로 삼중으로 또는 이중으로 그리고/또는 다른 방식으로 체크 비트들을 메모리(1103)에 저장하는 것이 생각될 수 있다.
메모리(1103)의 n개의 각자의 메모리 셀의 그룹에서, n1개의 제1 값이 제1 개수의(n1개의) 제1 메모리 셀에 저장되고, n2개의 제2 값이 제2 개수의(n2개의) 제2 메모리 셀에 저장되며, ..., 마지막으로 nK개의 제K 값이 미리 결정된 제K 개수의(nK개의) 제K 메모리 셀에 저장된다. 이 경우에: n1 + n2+...+nK = n이다.
도 10에 도시된 회로 구성에서는, 에러들이 데이터 비트들을 사용하여 처리된다. 이와 달리, 도 11에 도시된 회로 구성에서는, 에러들이 변환 회로(1101)에 의해 데이터 비트들로부터 결정된 메모리 셀 값들에 기초하여 처리된다. 메모리 셀 값들은, 예를 들어, 메모리 비트들이다. 이 경우에, 에러 처리는 에러 검출 및/또는 에러 정정을 의미하는 것으로 이해된다.
도 12는 도 11에 도시된 회로 구성의 일 변형의 다른 예를 도시하고 있다.
데이터 비트들(x)이 변환 회로(1201)의 입력에 존재하고 코드워드들([3-out-of-6]1)로 변환되며, 여기서 데이터 비트들 중 4개의 비트는 3-out-of-6 코드워드로 각각 변환된다. 이 3-out-of-6 코드워드들([3-out-of-6]1)이 변환 회로(1201)의 출력에서 제공된다. 3-out-of-6 코드의 코드워드는 변환 회로(1201)에 의해 일의적 가역 방식으로 16개의 4-비트 값 각각에 할당된다.
변환 회로(1201)의 출력은 체크 비트 생성기(1202)의 입력에 연결되고, 체크 비트 생성기(1202)는 에러 코드에 따라 3-out-of-6 코드워드들의 비트들에 대한 체크 비트들(Pr)을 결정하여 그의 출력에서 제공한다.
예를 들어, 체크 비트 생성기(1202)는 BCH 코드의 체크 비트들을 생성한다. 변환 회로(1201)에 의해 출력된 비트들 및 체크 비트 생성기(1202)에 의해 출력된 체크 비트들은 그러면 에러가 없는 경우에 BCH 코드의 코드워드를 형성한다.
BCH 코드 대신에, 다른 에러 코드를 사용하는 것이 그에 따라 또한 가능하다. 복수의 에러 코드들이 또한 조합하여 사용될 수 있다.
변환 회로(1201)의 출력이 메모리(1204)의 입력에 마찬가지로 연결되고, 그 결과 변환 회로(1201)에 의해 데이터 비트들로부터 획득된 (체크 비트들을 갖지도 않는) 3-out-of-6 코드워드들이 메모리(1204)에 저장될 수 있다.
체크 비트 생성기(1202)의 출력이 체크 비트 변환기(1203)의 입력에 연결되고, 체크 비트 변환기(1203)는 제공된 체크 비트들을 3-out-of-6 코드워드들([3-out-of-6]2)로 변환하여 그의 출력에서 제공한다.
체크 비트 변환기(1203)의 출력이 메모리(1204)의 입력에 연결된다. 예를 들어, 메모리의 개별 데이터 입력들이 이 목적을 위해 사용될 수 있다. 체크 비트들(Pr)에 기초하여 체크 비트 변환기(1203)에 의해 생성된 3-out-of-6 코드워드들([3-out-of-6]2)이 따라서 메모리(1204)에 저장될 수 있다.
에러가 없는 경우에, 3-out-of-6 코드워드들인 그 비트들이 메모리(1204)에 저장된다. 이 비트들은 메모리 셀 값들이라고도 지칭된다.
3-out-of-6 코드의 코드워드들([3-out-of-6]1)이 변환 회로(1201)에 의해 데이터 비트들(x)로부터 형성되고 메모리(1204)에 기입된다. 이 코드워드들([3-out-of-6]1)은 메모리(1204)의 메모리 셀들에 대한 메모리 셀 값들을 형성한다.
체크 비트들(Pr)은 사용된 에러 코드에 따라 체크 비트 생성기(1202)에 의해 코드워드들([3-out-of-6]1)의 비트들로부터 결정되고 그의 출력에서 출력된다. 체크 비트 변환기(1203)는 체크 비트들(Pr)을 3-out-of-6 코드의 코드워드들([3-out-of-6]2)로 변환한다. 체크 비트들(Pr)로부터 형성된 이 코드워드들([3-out-of-6]2)은 메모리(1204)의 메모리 셀들에 대한 메모리 셀 값들을 형성한다.
코드워드들([3-out-of-6]1) 및 코드워드들([3-out-of-6]2)이 따라서 메모리(1204)에 저장된다. 저장 또는 판독 동안, 비트 에러들이 발생할 수 있고, 이에 기초하여 코드워드들([3-out-of-6]1) 및 코드워드들([3-out-of-6]2)이 잘못된 비트들로 손상된다.
판독 동안, 데이터 비트들에 할당되는 비트들([3-out-of-6]'1), 및 변환된 데이터 비트들의 체크 비트들에 할당되는 비트들([3-out-of-6]'2)이 메모리(1204)로부터 출력된다. 비트들([3-out-of-6]'1) 및 비트들([3-out-of-6]'2)이 비트 에러들을 포함할 수 있다. 에러가 없는 경우에:
[3-out-of-6]'1 = [3-out-of-6]1이고,
[3-out-of-6]'2 = [3-out-of-6]2이다.
비트들([3-out-of-6]'2)이 출력되는 메모리(1204)의 출력은 체크 비트 역변환기(1205)의 입력에 연결되고, 체크 비트 역변환기(1205)는, 비트들([3-out-of-6]'2)에 기초하여, 어쩌면 잘못된 체크 비트들(Pr')을 결정하여 그의 출력에서 제공한다. 체크 비트 역변환기(1205)는 체크 비트 변환기(1203)에 의해 구현된 변환에 대한 역변환을 구현한다.
에러가 없는 경우에, 체크 비트 역변환기(1205)는 체크 비트 생성기(1202)에 의해 형성된 것과 동일한 체크 비트들(Pr)을 그의 출력에서 출력한다.
어쩌면 잘못된 체크 비트들(Pr')은 데이터 비트들에 대응하는 비트들([3-out-of-6]'1)의 체크 비트들이다. 이 어쩌면 잘못된 체크 비트들(Pr')은 따라서 사용된 3-out-of-6 코드에 따라 비트들([3-out-of-6]'1)의 가능한 비트 에러들을 정정하는 데 사용될 수 있다.
메모리(1204)의 출력 및 체크 비트 역변환기(1205)의 출력 각각은 정정기(corrector)(1206)의 입력에 연결된다. 정정기(1206)는 사용된 에러 코드에 따라 비트들([3-out-of-6]'1)을 정정된 비트들([3-out-of-6]cor 1)로 정정한다.
발생했을 수 있는 에러들이 사용된 에러 코드에 의해 정정될 수 있는 경우,
[3-out-of-6]cor 1 = [3-out-of-6]1이 적용된다.
이 비트들([3-out-of-6]cor 1)은 정정기(1206)의 출력에서 제공된다. 정정기(1206)의 출력은 변환 회로(1201)에 의해 수행된 변환의 역인 변환을 수행하는 역변환 회로(1207)의 입력에 연결된다. 데이터 비트들(xcor)이 역변환 회로(1207)의 출력에서 제공된다. 이들은 어쩌면 정정된 데이터 비트들 또는 - 에러가 발생하지 않은 경우 - 데이터 비트들(x)이다.
에러가 없거나 발생한 에러가 에러 코드(C)에 의해 정정될 수 있는 경우,
xcor = x가 적용된다.
기술된 회로 구성은 메모리 셀 값들의 에러들이 에러 코드에 의해 정정되는 예시적인 실시예이다. 이 예시적인 실시예에서, 2진 메모리 셀 값들은 3-out-of-6 코드의 코드워드들이다. 3-out-of-6 코드는 메모리 셀 값들을 형성하는 데 사용된다. 메모리 셀 값들의 에러들은 에러 코드, 예를 들어, Hamming 코드, Hsiao 코드, BCH 코드 또는 다른 코드를 사용하여 정정될 수 있다.
데이터 비트들이 따라서 메모리 셀 값들로 변환되고, 메모리 셀 값들의 비트들에 대해 에러 코드의 체크 비트들이 결정된다. 이 체크 비트들이 이제 메모리 셀 값들로 마찬가지로 변환된다. 변환된 비트들 및 변환된 체크 비트들의 메모리 셀 값들이 메모리에 저장된다. 메모리로부터 판독하는 동안, 체크 비트들에 대응하는 메모리 셀 값들이 이어서 먼저 체크 비트들로 다시 변환된다. 데이터 비트들에 대응하는 메모리 셀 값들은 다시 변환된 체크 비트들을 사용하여 그리고 에러 코드를 사용하여 종래의 정정기에서 정정된 메모리 셀 값들로 정정된다. 데이터 비트들에 대응하는 정정된 메모리 셀 값들은 이어서 역변환에 의해 정정된 데이터 비트들로 다시 변환될 수 있다.
기술된 메모리 셀 값들 및 기술된 3-out-of-6 코드에 부가하여, 다른 메모리 셀 값들, 예를 들어, 4-out-of-8 코드의 코드워드들을 그에 따라 사용하는 것이 또한 가능하다.
도 12에 기술된 예시적인 실시예와 달리, 도 10에 기술된 예시적인 실시예에서는 데이터 비트들의 에러들이 정정된다. 에러 코드의 체크 비트들이 데이터 비트들로부터 결정된다. 이 방식으로 결정된 데이터 비트들 및 체크 비트들이 함께 메모리 셀 값들로 변환되어 메모리에 저장된다. 메모리로부터 판독하는 동안, 어쩌면 잘못된 메모리 셀 값들이 먼저 어쩌면 잘못된 데이터 비트들 및 어쩌면 잘못된 체크 비트들로 다시 변환되고, 어쩌면 잘못된 데이터 비트들이 사용된 에러 코드를 사용하여 정정된다.
예: 3-out-of-6 코드
n1 = n2 = 3개의 메모리 셀마다 2개의 서브그룹을 갖는 n = 6개의 메모리 셀의 그룹이 이하에서 예로서 가정된다. 따라서, 각각이 2진 값 0을 세 번 그리고 2진 값 1을 세 번 갖는 3-out-of-6 코드워드들이 n = 6개의 메모리 셀에 저장될 수 있다.
3개의 0 및 3개의 1을 포함하는
Figure pat00160
개의 상이한 코드워드가 있으며, 그 결과 6개의 메모리 셀에 3-out-of-6 코드워드들로서 저장될 수 있는 20개의 상이한 값이 있다. 24 = 16 < 20이기 때문에, 4개의 데이터 비트가 6개의 메모리 셀에 저장될 수 있다.
표 9는 3-out-of-6 코드워드들로서 6개의 메모리 셀(S1 내지 S6)에 저장되는 2진 4-비트 값들의 가능한 할당을 나타내고 있다. 표 9에서의 마지막 열은 캡션 "4-비트"를 가지며; 거기서, 4-비트 값들은 0부터 16까지(끝에서 두 번째 열을 참조) 비트 단위로 증가된다. 각각의 4-비트 값에 대해 여기서 예로서 사용된 3-out-of-6 코드의 정확히 하나의 코드워드가 있다. 이 경우에, 3-out-of-6 코드는 값 1(또는 값 0)이 각각의 코드워드에서 정확히 세 번 나온다는 사실에 의해 구별된다. n = 6개의 메모리 셀에 대해, "여분의 것(spare)"인, 즉 연관된 4-비트 값을 갖지 않는, 20 - 16 = 4개의 코드워드가 있다. 표 9의 예에서, 이들은 열 "4-비트"에서 기호 "-"가 네 번 나오는 표에서의 마지막 4개의 행이다.
Figure pat00161
가장 빠른 판독 전류의 검출
도 13은 각각이 3개의 입력을 갖는 4개의 NOR 게이트(1301 내지 1304), 각각이 2개의 입력을 갖는 2개의 NOR 게이트(1305, 1306) 및 다수의 입력들을 갖는 하나의 NAND 게이트(1307)를 포함하는 예시적인 회로 구성을 도시하고 있다.
이 회로 구성은 판독 전류의 시간 적분이 미리 결정된 문턱 값(Sw)에 가장 신속하게 도달하는 그 3개의 메모리 셀을 결정하는 것을 가능하게 한다.
6개의 메모리 셀(S1 내지 S6) 중 3개의 메모리 셀에 3개의 0 및 3개의 1을 할당하는
Figure pat00162
개의 상이한 가능한 방식이 있다.
표 9의 처음 16개 행에서의 0을 할당받은 메모리 셀들의 3개의 출력 각각이 NOR 게이트의 입력들에 연결된다. NOR 게이트의 입력들 전부가 0 일 때에만 그의 출력이 1이다.
표 9의 첫 번째 행에 따라 값 0을 갖는, 메모리 셀들(S4, S5 및 S6)의 3개의 출력이 NOR 게이트(1301)의 3개의 입력에 전달된다. 표 9의 두 번째 행에 따라 값 0을 갖는, 메모리 셀들(S3, S5 및 S6)의 3개의 출력이 NOR 게이트(1302)의 3개의 입력에 전달된다. 표 9의 행 14에 따라 값 0을 갖는, 메모리 셀들(S1, S3 및 S5)의 3개의 출력이 NOR 게이트(1303)의 3개의 입력에 전달된다. 표 9의 행 15에 따라 값 0을 갖는, 메모리 셀들(S1, S2 및 S5)의 3개의 출력이 NOR 게이트(1304)의 3개의 입력에 전달된다.
이 접근법은 그에 따라 행 3 내지 행 13에도 적용되며, 이에 따라 각각의 행에 대해 개별 NOR 게이트가 제공되고, 그의 3개의 입력은 값 0을 갖는 행에서의 그 메모리 셀들에 연결된다.
값 1은 입력들 모두가 값 0을 갖는 그 NOR 게이트(1301 내지 1304)의 출력에만 존재한다. 환언하면, 표 9에 따른 연관된 코드워드와 조합되는 그 NOR 게이트(1301 내지 1304)만이 그의 출력에서 값 1을 제공한다. 메모리 셀들에의 입력들의 연결들의 조합들이 NOR 게이트들(1301 내지 1304) 모두에서 상이하기 때문에(각각의 코드워드는 3개의 0의 상이한 배열을 포함함), 값 1이 NOR 게이트들(1301 내지 1304)의 출력들에 한 번만 존재한다.
NOR 게이트들(1305 및 1306)은, 예로서, 도 13에서의 제2 레벨의 논리 신호 조합을 예시한다: NOR 게이트(1301)의 출력 및 NOR 게이트(1302)의 출력이 NOR 게이트(1305)의 입력들에 연결된다. NOR 게이트(1303)의 출력 및 NOR 게이트(1304)의 출력이 NOR 게이트(1306)의 입력들에 연결된다. 따라서, NOR 게이트들(1301 내지 1304)의 출력들 중 2개 각각이 이 제2 레벨에 있는 NOR 게이트의 입력들에 연결된다.
제2 레벨에 있는 NOR 게이트들(1305 및 1306)의 출력들 각각이 NAND 게이트(1307)의 하나의 입력에 연결된다. 신호(1308)가 NAND 게이트(1307)의 출력에서 제공된다.
NAND 게이트는 그의 입력들 모두가 값 1을 가질 때에만 그의 출력에서 값 0을 제공한다. 입력들 중 하나가 값 0을 갖자마자, 신호(1308)는 값 1을 갖는다. 앞서 기술된 바와 같이, 메모리 셀들에 3개의 0이 나올 때 NOR 게이트들(1301 내지 1304) 중 하나만이 그의 출력에서 값 0으로부터 값 1로 변할 수 있다. 따라서, 영향받은 NOR 게이트(1301 내지 1304)의 출력에 연결된 NOR 게이트(1305 및 1306)가 값 1으로부터 값 0으로 변한다. 이 값 0은 신호(1308)를 값 1로 변화시킨다.
도 13에 도시된 예에서, 3개의 0을 6개의 메모리 셀로 분산시키는 16개의 상이한 가능한 방법이 있다(표 9를 참조). 그에 따라, 16개의 NOR 게이트(1301 내지 1304)가 있다. 이 NOR 게이트들 중 2개의 NOR 게이트의 출력들은 각각의 경우에 제2 레벨에 있는 NOR 게이트들(1305 및 1306) 중 하나의 NOR 게이트의 입력들에 전달된다. 따라서, 제2 레벨에 8개의 NOR 게이트(1305 및 1306)가 있고, NAND 게이트(1307)는 그에 따라 8개의 입력을 갖는다.
NAND 게이트(1307)의 출력에서의 신호(1308)가 시간에 따라 샘플링될 수 있다.
샘플링 동안 처음으로 신호(1308)에 대해 값 1이 결정되는 경우, 신호(1308)는 각자의 메모리 요소들(S1 내지 S6)의 하류에 연결되는 6개의 래치에 대한 "홀드 신호"로서 사용될 수 있다. 이것은 도 14와 관련하여 보다 상세히 설명된다.
도 14는 6개의 신호 증폭기(감지 증폭기라고도 지칭됨)(1401 내지 1406)를 포함하는 예시적인 회로 구성을 도시하고 있다. 앞서 이미 설명된 바와 같이, 물리적 값들
Figure pat00163
(여기서 i = 1...6임)가 메모리의 (여기서, 예를 들어, 6개의) 메모리 셀들로부터 판독된다. 판독된 물리적 값들
Figure pat00164
중 하나가 신호 증폭기들(1401 내지 1406) 중 하나에 공급된다. 물리적 값
Figure pat00165
가 판독 전류일 수 있다.
신호 증폭기(1401)가 물리적 값
Figure pat00166
의 시간 적분을 결정한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1401)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1401)의 출력에 존재한다. 신호 증폭기(1401)의 출력이 래치(1407)의 제1 입력에 연결되고, 래치(1407)의 제2 입력에는 홀드 신호(1413)가 존재한다. 홀드 신호의 값이 0인 경우, 래치(1407)가 의식되지 않도록(transparent) 전환되며, 즉 신호 증폭기(1401)의 출력에서 제공된 2진 값이 논리 회로(1414)의 제1 입력에 존재한다. 홀드 신호의 값이 1인 경우, 래치(1407)가 동결(frozen)되며, 즉 이 때 래치(1407)의 제1 입력에 존재하는 값이 또한, 홀드 신호의 값이 1인 한, 래치(1407)의 출력에 남아 있다.
상태 제어 플립플롭(state-controlled flip-flop)이라고도 지칭되는, 래치의 기능과 관련하여, 예를 들어, "de.wikipedia.org/wiki/Latch"를 참조한다.
논리 회로(1414)는, 래치들(1407 내지 1412)의 출력들에 나타나고 이어서 홀드 신호(1413)를 값 1로 설정하는, 처음 3개의 0, 즉 가장 빠른 3개의 0을 결정한다.
신호 증폭기(1402)가 물리적 값
Figure pat00167
의 시간 적분을 결정한다는 것이 그에 따라 적용된다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1402)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1402)의 출력에 존재한다. 신호 증폭기(1402)의 출력이 래치(1408)의 제1 입력에 연결되고, 래치(1408)의 제2 입력에는 홀드 신호(1413)가 존재한다. 래치(1408)의 출력이 논리 회로(1414)의 제2 입력에 연결된다. 신호 증폭기(1403)가 물리적 값
Figure pat00168
의 시간 적분을 결정한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1403)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1403)의 출력에 존재한다. 신호 증폭기(1403)의 출력이 래치(1409)의 제1 입력에 연결되고, 래치(1409)의 제2 입력에는 홀드 신호(1413)가 존재한다. 래치(1409)의 출력이 논리 회로(1414)의 제3 입력에 연결된다. 신호 증폭기(1404)가 물리적 값
Figure pat00169
의 시간 적분을 결정한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1404)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1404)의 출력에 존재한다. 신호 증폭기(1404)의 출력이 래치(1410)의 제1 입력에 연결되고, 래치(1410)의 제2 입력에는 홀드 신호(1413)가 존재한다. 래치(1410)의 출력이 논리 회로(1414)의 제4 입력에 연결된다. 신호 증폭기(1405)가 물리적 값
Figure pat00170
의 시간 적분을 결정한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1405)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1405)의 출력에 존재한다. 신호 증폭기(1405)의 출력이 래치(1411)의 제1 입력에 연결되고, 래치(1411)의 제2 입력에는 홀드 신호(1413)가 존재한다. 래치(1411)의 출력이 논리 회로(1414)의 제5 입력에 연결된다. 신호 증폭기(1406)가 물리적 값
Figure pat00171
의 시간 적분을 결정한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 작으면, 시각 t에서 디지털 값 1이 신호 증폭기(1406)의 출력에 존재한다. 시각 t에서 시간 적분이 문턱 값(Sw)보다 크면, 디지털 값 0이 신호 증폭기(1406)의 출력에 존재한다. 신호 증폭기(1406)의 출력이 래치(1412)의 제1 입력에 연결되고, 래치(1412)의 제2 입력에는 홀드 신호(1413)가 존재한다. 래치(1412)의 출력이 논리 회로(1414)의 제6 입력에 연결된다.
예를 들어, 그래프(1415)는 신호 증폭기(1401)에 대한 시간에 따른 판독 전류를 나타내고 있다. 이것에 따르면, 신호 증폭기(1401)에서의 판독 전류가 시각 t1에서 문턱 값(Sw)에 도달한다. 그에 따라, 도 14는 또한 신호 증폭기들(1402 내지 1406)에 대한 그래프들(1416 내지 1420)을 도시하고 있으며, 이에 따르면 시각 ti는 제i 신호 증폭기(1401 내지 1406)가 문턱 값(Sw)에 도달할 때를 나타낸다.
시각 ti에 이르기까지 판독 전류의 적분이 문턱 값(Sw)보다 작은 한, 각자의 신호 증폭기는 값 1을 출력하고; 시각 ti 이후에 판독 전류의 적분이 문턱 값(Sw)보다 크면, 각자의 신호 증폭기는 값 0을 출력한다.
도 14에 도시된 예에서, 물리적 값들
Figure pat00172
내지
Figure pat00173
가 시각 t에서 결정되고, 여기서 t는 t1, t3 및 t5보다 크고, 여기서 t는 t2, t4 및 t6보다 작다. 값 0이 따라서 시각 t에서 신호 증폭기들(1401, 1403 및 1405)의 출력들에 각각 존재하는 반면, 값 1은 신호 증폭기들(1402, 1404 및 1406)의 출력들에 여전히 존재한다. 논리 회로(1414)는 이 처음 3개의 0을 검출하고 홀드 신호(1413)를 0으로부터 1로 변경하며, 래치들(1407 내지 1412)이 이어서 "동결"된다.
논리 회로(1414)는, 예를 들어, 도 13에 예시된 회로 구성에 의해 구현될 수 있다.

Claims (22)

  1. 메모리로부터 메모리 셀들을 판독하기 위한 방법으로서,
    n개의 메모리 셀로부터 물리적 값들이 결정되고 - n은 적어도 3임 -,
    상기 물리적 값들은 서로 적어도 부분적으로 비교되고,
    상기 비교된 물리적 값들에 기초하여 K개의 상이한 디지털 메모리 셀 값이 상기 n개의 메모리 셀에 할당되고,
    이러한 방식으로 획득된 상기 디지털 메모리 셀 값들에 n1-,...,nK-out-of-n 코드의 코드워드가 할당되고,
    상기 물리적 값들은 서로 적어도 부분적으로 비교되고, 그 결과 상기 물리적 값들 중 적어도 일부의 시퀀스가 결정되고,
    상기 시퀀스에 기초하여 상기 K개의 상이한 디지털 메모리 셀 값이 상기 n개의 메모리 셀에 할당되는 방법.
  2. 제1항에 있어서,
    상기 물리적 값들은 상기 n개의 메모리 셀을 판독하는 것에 의해 결정되는 방법.
  3. 제1항 또는 제2항에 있어서,
    모든 물리적 값들이 서로 비교되는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    K = 2이고, 그 결과 상기 n1-,...,nK-out-of-n 코드는 n1-,n2-out-of-n 코드이고, n1개의 제1 메모리 셀 값은 서로 동일한 제1 값을 갖고, n2개의 제2 메모리 셀 값은 서로 동일한 제2 값을 갖고, 상기 제1 값은 상기 제2 값과는 상이한 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    K = 3이고, 그 결과 상기 n1-,...,nK-out-of-n 코드는 n1-,n2-,n3-out-of-n 코드이고, n1개의 제1 메모리 셀 값은 서로 동일한 제1 값을 갖고, n2개의 제2 메모리 셀 값은 서로 동일한 제2 값을 갖고, n3개의 제3 메모리 셀 값은 서로 동일한 제3 값을 갖고, 상기 제1 값, 상기 제2 값 및 상기 제3 값 각각은 서로 상이한 방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    K > 3인 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 메모리 셀들로부터 결정된 상기 메모리 셀 값들은 일의적 가역 변환(uniquely reversible transformation)에 의해 결정되는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 물리적 값들은 시각들(times)인 방법.
  9. 제8항에 있어서,
    시각은 시간의 경과에 따라 메모리 셀의 물리적 값을 적분하는 것에 의해 각각 결정되는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    물리적 값은 메모리 셀의 판독 전류인 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    획득된 상기 디지털 메모리 셀 값들이 n1-,...,nK-out-of-n 코드의 코드워드인 경우, 역방향 변환(back-transformation)에 의해 상기 코드워드로부터 m개의 비트들이 결정되는 방법.
  12. 제11항에 있어서,
    상기 m개의 비트들의 에러 검출 및/또는 에러 정정은 에러 코드에 의해 수행되는 방법.
  13. 제11항에 있어서,
    상기 에러 검출 및/또는 에러 정정은 체크 비트들에 기초하여 수행되고, 상기 체크 비트들은 상기 에러 코드에 따라 데이터 비트들로부터 결정되는 방법.
  14. 제11항에 있어서,
    상기 에러 검출 및/또는 에러 정정은 체크 비트들에 기초하여 수행되고, 상기 체크 비트들은 상기 에러 코드에 따라 상기 메모리 셀 값들로부터 결정되는 방법.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    상기 에러 코드는 바이트 에러 정정 및/또는 바이트 에러 검출 코드인 방법.
  16. 제15항에 있어서,
    데이터 비트들의 에러 정정이 수행되는 경우에 바이트는 m개의 비트들을 포함하고, 메모리 셀들의 에러 정정이 수행되는 경우에 바이트는 n개의 비트들을 포함하는 방법.
  17. 제12항 내지 제16항 중 어느 한 항에 있어서,
    상기 에러 코드는 비트 에러 정정 및/또는 비트 에러 검출 코드인 방법.
  18. 제1항 내지 제17항 중 어느 한 항에 있어서,
    상기 디지털 메모리 셀 값들을 결정하기 위해 적어도 하나의 기준 값이 사용되는 방법.
  19. 제1항 내지 제18항 중 어느 한 항에 있어서,
    상기 메모리는 다음의 메모리 유형들:
    캐시 메모리,
    레지스터 또는 레지스터 어레이,
    플래시 메모리,
    MRAM,
    SRAM,
    RE-RAM,
    PC-RAM,
    FE-RAM,
    CB-RAM,
    다중 비트 메모리(multi-bit memory), 및
    다중 레벨 메모리(multi-level memory)
    중 적어도 하나를 포함하는 방법.
  20. 메모리로부터의 메모리 셀들을 처리하기 위한 장치로서 - 상기 장치는 처리 유닛을 가짐 -,
    상기 처리 유닛은,
    n개의 메모리 셀로부터 물리적 값들을 결정하고 - n은 적어도 3임 -,
    상기 물리적 값들을 서로 적어도 부분적으로 비교하고,
    상기 비교된 물리적 값들에 기초하여 K개의 상이한 디지털 메모리 셀 값을 상기 n개의 메모리 셀에 할당하고,
    이러한 방식으로 획득된 상기 디지털 메모리 셀 값들에 n1-,...,nK-out-of-n 코드의 코드워드를 할당하도록
    셋업되고,
    상기 처리 유닛은,
    상기 물리적 값들을 서로 적어도 부분적으로 비교하고, 따라서 상기 물리적 값들의 시퀀스를 결정하고,
    상기 물리적 값들의 시퀀스에 기초하여 상기 K개의 상이한 디지털 메모리 셀 값을 상기 n개의 메모리 셀에 할당하도록
    추가로 셋업되는 장치.
  21. 디지털 컴퓨터의 메모리로 직접 로딩될 수 있는 컴퓨터 프로그램 제품으로서,
    제1항 내지 제19항 중 어느 한 항에 청구된 방법의 단계들을 수행하기에 적합한 프로그램 코드 부분들을 포함하는 컴퓨터 프로그램 제품.
  22. 컴퓨터 판독가능 저장 매체로서,
    컴퓨터에 의해 실행될 수 있으며, 상기 컴퓨터가 제1항 내지 제19항 중 어느 한 항에 청구된 방법의 단계들을 수행하기에 적합한 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.
KR1020180018601A 2017-02-17 2018-02-14 메모리의 메모리 셀들 내의 데이터의 처리 KR102079196B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102017103347.5A DE102017103347B4 (de) 2017-02-17 2017-02-17 Verarbeitung von daten in speicherzellen eines speichers
DE102017103347.5 2017-02-17

Publications (2)

Publication Number Publication Date
KR20180095468A true KR20180095468A (ko) 2018-08-27
KR102079196B1 KR102079196B1 (ko) 2020-02-21

Family

ID=63046077

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180018601A KR102079196B1 (ko) 2017-02-17 2018-02-14 메모리의 메모리 셀들 내의 데이터의 처리

Country Status (4)

Country Link
JP (1) JP6602904B2 (ko)
KR (1) KR102079196B1 (ko)
DE (1) DE102017103347B4 (ko)
TW (1) TWI664639B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020106570A1 (en) * 2018-11-20 2020-05-28 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018124296B4 (de) * 2018-10-02 2024-06-20 Infineon Technologies Ag Kompensation von lesefehlern
CN111352754B (zh) * 2018-12-21 2023-09-15 中国石油天然气集团有限公司 一种数据存储检错纠错方法及数据存储装置
US10884664B2 (en) 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cell
US10884663B2 (en) * 2019-03-14 2021-01-05 Western Digital Technologies, Inc. Executable memory cells
DE102019107139A1 (de) 2019-03-20 2020-09-24 Infineon Technologies Ag Transformation von aus einem speicher gelesenen binären signalen

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100879560B1 (ko) * 2006-12-04 2009-01-22 삼성전자주식회사 에러 검출 코드를 이용한 데이터 트레이닝 방법 및 이에적합한 시스템
KR20140084450A (ko) * 2012-12-26 2014-07-07 성균관대학교산학협력단 반도체 메모리 장치, 검증 독출 방법 및 시스템
KR20140091665A (ko) * 2011-07-05 2014-07-22 칸도우 랩스 에스에이 비휘발성 메모리의 차동 벡터 저장
KR101488459B1 (ko) * 2010-12-07 2015-01-30 실리콘 모션 인코포레이티드 플래시 메모리로부터 판독된 비트 시퀀스의 2진수 분포 특징을 참조함으로써, 플래시 메모리에 저장된 데이터를 판독하기 위한 방법 및 메모리 컨트롤러
US20170046223A1 (en) * 2015-08-12 2017-02-16 Infineon Technologies Ag Memory device and method for correcting a stored bit sequence

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0225118A (ja) * 1988-07-14 1990-01-26 Matsushita Electric Ind Co Ltd コード変換装置と復号装置
JP3213434B2 (ja) * 1993-03-25 2001-10-02 新日本製鐵株式会社 不揮発性半導体記憶装置
JP3866674B2 (ja) * 1993-12-28 2007-01-10 株式会社東芝 記憶システム
JP4099844B2 (ja) * 1998-01-21 2008-06-11 ソニー株式会社 メモリ装置
CN103280239B (zh) * 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
WO2009072103A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
US8578246B2 (en) 2010-05-31 2013-11-05 International Business Machines Corporation Data encoding in solid-state storage devices
US9082480B2 (en) 2011-01-04 2015-07-14 Seagate Technology Llc Detection and decoding in flash memories with error correlations for a plurality of bits within a sliding window
US8732560B2 (en) * 2012-05-08 2014-05-20 Infineon Technologies Ag Method and device for correction of ternary stored binary data
US8996951B2 (en) * 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
GB2518632A (en) 2013-09-26 2015-04-01 Ibm Estimation of level-thresholds for memory cells
US9196320B2 (en) * 2013-12-13 2015-11-24 Infineon Technologies Ag Method, apparatus and device for data processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100879560B1 (ko) * 2006-12-04 2009-01-22 삼성전자주식회사 에러 검출 코드를 이용한 데이터 트레이닝 방법 및 이에적합한 시스템
KR101488459B1 (ko) * 2010-12-07 2015-01-30 실리콘 모션 인코포레이티드 플래시 메모리로부터 판독된 비트 시퀀스의 2진수 분포 특징을 참조함으로써, 플래시 메모리에 저장된 데이터를 판독하기 위한 방법 및 메모리 컨트롤러
KR20140091665A (ko) * 2011-07-05 2014-07-22 칸도우 랩스 에스에이 비휘발성 메모리의 차동 벡터 저장
KR20140084450A (ko) * 2012-12-26 2014-07-07 성균관대학교산학협력단 반도체 메모리 장치, 검증 독출 방법 및 시스템
US20170046223A1 (en) * 2015-08-12 2017-02-16 Infineon Technologies Ag Memory device and method for correcting a stored bit sequence

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020106570A1 (en) * 2018-11-20 2020-05-28 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
US10963185B2 (en) 2018-11-20 2021-03-30 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
CN113039515A (zh) * 2018-11-20 2021-06-25 美光科技公司 用于基于存储器组件耐久性估计执行耗损均衡调整的存储器子系统
US11487479B2 (en) 2018-11-20 2022-11-01 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
US11868663B2 (en) 2018-11-20 2024-01-09 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations

Also Published As

Publication number Publication date
JP6602904B2 (ja) 2019-11-06
TW201832232A (zh) 2018-09-01
DE102017103347B4 (de) 2023-07-20
KR102079196B1 (ko) 2020-02-21
TWI664639B (zh) 2019-07-01
JP2018133087A (ja) 2018-08-23
DE102017103347A1 (de) 2018-08-23

Similar Documents

Publication Publication Date Title
KR20180095468A (ko) 메모리의 메모리 셀들 내의 데이터의 처리
KR101264476B1 (ko) 증가된 용량의 이종의 스토리지 엘리먼트들
US20220245023A1 (en) Detection and correction of data bit errors using error correction codes
JP7464418B2 (ja) メモリから読み取られたバイナリ信号の変換
US20180011757A1 (en) Error correction code management of write-once memory codes
JP2024029084A (ja) グループ誤りを用いる誤り検出
KR102355082B1 (ko) 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처
US10108489B2 (en) Systems and methods for efficient soft data based flash memory data recovery
US10326473B2 (en) Symbol-based coding for NAND flash devices
JP5283989B2 (ja) メモリシステム及びメモリアクセス方法
US20040088497A1 (en) Methods and apparatus for exchanging data using cyclic redundancy check codes
US20150019932A1 (en) Storage device, crc generation device, and crc generation method
JP2020135391A (ja) メモリシステム
US10514852B2 (en) Processing data in memory cells of a memory
CN116048868A (zh) 代码生成方法、装置、设备和存储介质
JP6978249B2 (ja) 異なる信頼性を有するメモリ
US10198316B2 (en) Systems and methods for efficient flash memory access
Lee et al. Implementation of parallel BCH encoder employing tree-type systolic array architecture
TW201931357A (zh) 記憶體之記憶胞元資料處理
US20080104487A1 (en) Error detection apparatus and error detection method
JP2023552994A (ja) プログラム可能な誤り訂正コードの符号化及び復号論理
Engelberg et al. Error-Correcting codes for ternary content addressable memories: a new Perspective
Liu et al. Error-Resilient Data Compression With Tunstall Codes
JP5492329B2 (ja) メモリアクセス装置
Khondl et al. A pipelined processing architecture for delay optimized matching of data encoded with hard systematic ECC

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