KR20210118727A - 행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정 - Google Patents

행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정 Download PDF

Info

Publication number
KR20210118727A
KR20210118727A KR1020200181096A KR20200181096A KR20210118727A KR 20210118727 A KR20210118727 A KR 20210118727A KR 1020200181096 A KR1020200181096 A KR 1020200181096A KR 20200181096 A KR20200181096 A KR 20200181096A KR 20210118727 A KR20210118727 A KR 20210118727A
Authority
KR
South Korea
Prior art keywords
column
row
ecc
memory
cache
Prior art date
Application number
KR1020200181096A
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 KR20210118727A publication Critical patent/KR20210118727A/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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • 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/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • 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/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • 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
    • 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/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
    • 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
    • G11C2029/0411Online error correction
    • 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
    • G11C2029/1204Bit line control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 디바이스에 대한 에러 정정 값은 동일한 메모리 어레이에 대한 행 에러 정정 값과 열 에러 정정 값을 포함한다. 메모리 디바이스는 행 차원과 열 차원의 두 가지 공간 차원에서 주소 지정이 가능한 메모리 어레이를 포함한다. 메모리 어레이는 데이터 행으로서 기입되며, 행 차원에서 행으로서 판독될 수 있거나 열 차원에서 열로서 판독될 수 있다. 데이터 기입은 행 에러 정정 값과 열 에러 정정 값에 대한 업데이트를 트리거한다.

Description

행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정{ERROR CORRECTION FOR DYNAMIC DATA IN A MEMORY THAT IS ROW ADDRESSABLE AND COLUMN ADDRESSABLE}
설명은 일반적으로 메모리 디바이스에 관한 것이며, 보다 구체적인 설명은 행 주소 지정 및 열 주소 지정 메모리 디바이스에 대한 에러 정정에 관한 것이다.
메모리 디바이스는 전통적으로 비트 행(rows of bits)으로서 액세스된다. 메모리 디바이스의 어레이는 행과 열의 비트들을 포함하며, 행 주소 지정이 가능하다. 행의 특정 비트는 열 주소로 액세스 가능하지만, 다수의 행에 걸친 열은 전통적으로는 액세스 가능하지가 않다. 개발중인 메모리 디바이스는 열 주소 지정 기능(column addressability)과 행 주소 지정 기능(row addressability)이 가능할 것이다. 열 주소 지정 기능을 사용하면 다수의 행에 걸쳐 단일 열의 비트를 판독할 수가 있다.
새로운 메모리 디바이스는 내부 또는 온 다이 에러 정정(internal or on-die error correction)을 포함한다. 이러한 온 다이 에러 정정은 온 다이 또는 내부 에러 체킹 및 정정(error checking and correction)(ECC)이라고 지칭될 수 있다. 내부 ECC를 사용하면, 메모리 디바이스는 판독 요청에 응답하여 판독 데이터를 호스트로 돌려보내기 전에 판독 데이터에 대해 ECC를 수행할 수 있다. 데이터가 전통적으로 행으로 기입 및 판독될 경우, ECC 데이터는 행마다 포함될 수 있고, 행 데이터와 함께 기입될 수 있다.
열 주소 지정이 가능한 메모리 디바이스는 ECC를 사용하면 유리하다. 행 주소 지정 가능 및 열 주소 지정 가능 메모리의 경우, 행으로의 변경은 기입된 행에 대한 행 ECC와 잠재적으로 다수의 행에 대한 열 ECC를 모두 변경할 것이라는 것을 이해할 것이다. 다수의 열 ECC 값을 업데이트하면, 각 행 기입마다 다수의 추가 동작을 필요로 하는 기입 증폭이 발생할 수 있다. 이러한 이유로 인해, ECC를 사용한 열 주소 지정 기능은 정적 데이터, 또는 판독 가능하지만 기입 불가능한 데이터로 제한되는 것으로 간주되어 왔다. 동적 데이터, 또는 기입에 의해 변경될 수 있는 데이터는 행 에러 정정으로 제한되며, 이는 열 판독에서 많은 에러를 발생시킬 가능성을 유발한다. 에러의 가능성은 열 판독의 적용을 에러에 견딜 수 있는 애플리케이션으로, 예를 들어, 유사성 검색 또는 협업 필터링과 같은 특정 인공 지능 애플리케이션으로 제한하게 된다. 열 지향 데이터베이스(column-oriented databases)와 같이 에러에 견딜 수 없는 애플리케이션은 열 판독 기능의 사용에서 배제될 것이다.
이하의 설명은 구현예에 의해 제공되는 예시를 갖는 도면에 대한 논의를 포함한다. 도면은 제한이 아닌 예로서 이해되어야 한다. 본원에 사용되는 바와 같이, 하나 이상의 예에 대한 참조는 본 발명의 적어도 하나의 구현예에 포함되는 특정 특징, 구조물, 또는 특성을 설명하는 것으로 이해되어야 한다. 본원에 나타나는 "일 예에서" 또는 "대안적인 예에서"와 같은 문구는 본 발명의 구현예를 제공하지만, 반드시 모두 동일한 구현예를 지칭하는 것은 아니다. 그러나, 이들은 반드시 상호 배타적인 것은 아니다.
도 1은 동적 데이터의 행 판독에 대한 행 에러 정정 및 열 판독에 대한 열 에러 정정을 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다.
도 2a는 열 에러 정정 데이터를 위한 캐시를 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다.
도 2b는 열 에러 정정 데이터를 업데이트하는 데 사용될 수 있는 행 기입을 위한 캐시를 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다.
도 3은 행 에러 정정 및 열 에러 정정을 유지하는 크로스포인트 메모리 셀들을 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다.
도 4는 열 에러 정정 캐시를 사용하여 메모리에 기입하는 프로세스의 일 예의 흐름 다이어그램이다.
도 5는 열 에러 정정 캐시를 사용하여 메모리로부터 판독하는 프로세스의 일 예의 흐름 다이어그램이다.
도 6은 행 캐시 및 행 에러 정정 및 열 에러 정정을 사용하여 메모리에 기입하는 프로세스의 일 예의 흐름 다이어그램이다.
도 7은 행 캐시 및 행 에러 정정 및 열 에러 정정을 사용하여 메모리로부터 판독하는 프로세스의 일 예의 흐름 다이어그램이다.
도 8은 행 에러 정정 및 열 에러 정정을 사용하여 메모리에 기입하는 프로세스의 예의 흐름 다이어그램이다.
도 9는 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 메모리 서브 시스템의 일 예의 블럭 다이어그램이다.
도 10은 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 컴퓨팅 시스템의 일 예의 블럭 다이어그램이다.
도 11은 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 모바일 디바이스의 일 예의 블럭 다이어그램이다.
일부 또는 모든 예 및 다른 잠재적 구현예를 묘사할 수 있는 도면의 비 제한적인 설명을 포함하여 특정 세부 사항 및 구현예에 대한 설명이 이어진다.
본원에 설명되는 바와 같이, 시스템은 행 에러 정정 데이터 및 열 에러 정정 데이터를 포함하여, 메모리 디바이스의 동적 데이터에 대한 에러 정정 데이터를 유지한다. 메모리 디바이스는 행 차원과 열 차원의 두 가지 공간 차원에서 주소 지정이 가능한 메모리 어레이를 포함한다. 따라서, 에러 정정은 2 차원 에러 정정 데이터라고 지칭될 수 있고, 여기서 2 차원은 논리적 차원이 아닌 공간 차원이다.
일반적으로, 에러 정정 데이터 또는 에러 정정 값은 에러 정정 또는 에러 체킹 및 정정(ECC)에 사용될 비트 그룹을 지칭한다. 행 ECC에 대한 ECC 값 또는 에러 정정 값은 행 ECC 또는 행 지향 체크 비트 또는 패리티 비트라고 지칭될 수 있다. ECC 열에 대한 ECC 값 또는 에러 정정 값은 열 ECC 또는 열 지향 체크 비트 또는 패리티 비트라고 지칭될 수 있다. 체킹될 값은, 행 또는 열과 해당 ECC 비트를 디코딩함으로써 판독되고 체킹/정정될 비트 그룹을 나타내는 코드워드(codeword)라고 지칭될 수 있다. 코드워드는 행 판독을 위한 행 지향 코드워드일 수 있다. 코드워드는 열 판독을 위한 열 지향 코드워드일 수 있다.
행 및 열 코드워드를 최신으로 유지하는 한 가지 방법은 행이 기입될 때 모든 열 ECC 비트를 되기입(re-write)하는 것이다. 이러한 접근법은 기입 증폭으로 인해 비실용적이라는 것이 이해될 것이다. 행 주소 지정 및 기입 주소 지정이 가능한 3 차원 크로스포인트(three-dimensional crosspoint)(3DXP) 메모리 디바이스와 같은 비 휘발성 크로스포인트 메모리 디바이스가 일 예로서 고려된다. 구체적인 예로는 인텔 코포레이션(INTEL CORPORATION)에서 제공하는 OPTANE 메모리 또는 마이크론 테크놀러지 인코포레이티드(MICRON TECHNOLOGY, INC)에서 제공하는 QUANTX 메모리가 있다. 메모리 디바이스에는 내부 ECC를 위한 수백 개의 여분의 비트가 있다고 가정한다. 이러한 경우, 행 기입을 통해, 의도된 행 또는 타겟 행에 대한 1 개의 기입, 및 X 개의 행 기입은 열 ECC를 업데이트하게 될 것이다. 따라서, 1 행 기입은 1+X 개의 행 기입이 되고, 여기서 X는 수백 개 중의 값이 될 수 있다. 이러한 접근법은 메모리의 성능, 전력 및 내구성을 100 배 초과로 저하시키며, 이는 메모리를 비실용적이게 만든다.
열 판독 가능성과 함께 알고리즘적인 속도 향상이 가능한 많은 타입의 컴퓨터 동작(예를 들어, 인공 지능(artificial intelligence)(AI) 애플리케이션, 유사성 검색 애플리케이션, 협업 필터링, 열 지향 데이터베이스 동작 등)이 존재한다. 열 ECC를 실제로 적용할 수 있는 능력은 이러한 동작의 속도를 향상시킬 수 있다. 본원에 설명되는 바와 같이, 시스템은 데이터를 덮어 쓰더라도 동시에 행 코드워드와 열 코드워드 모두에 대한 ECC를 유지할 수 있다.
판독을 위해 열 주소 지정 가능하고 판독을 위해 행 주소 지정 가능한 메모리 어레이의 경우, 메모리 어레이의 데이터에 대한 기입 또는 업데이트는 동시에 두 공간 차원을 변경할 것이라는 것이 이해될 것이다. 예를 들어, 행 지향 코드워드가 기입되는 경우, 행 지향 코드워드의 비트 변경은 또한 열 지향 코드워드의 비트도 변경할 것이다. 열이 에러 정정을 통해 판독되면, 열 및 열 ECC의 디코드 동작은 행 기입에 의해 변경된 비트를 에러인 것으로 볼 것이고, 그것을 그의 이전 값으로 "정정"하면서 손상시킬 것이다.
따라서, 시스템은 데이터가 기입될 때 열 ECC 값과 행 ECC 값을 유지한다. 예를 들어, 행 기입은 행을 업데이트하고 잠재적으로 그 행에 대한 에러 정정 데이터로 변경해야 할뿐만 아니라, 비트가 변경되는 임의의 열의 에러 정정 데이터는 또한 동시에 쓸모없게 될 것이다. 따라서, 행 기입은 행 에러 정정 데이터의 계산을 트리거할 뿐만 아니라 계산을 트리거하여 다수의 열에 대한 에러 정정 데이터를 업데이트할 수 있다.
일 예에서, 메모리 디바이스는 "열 ECC 업데이트" 접근법을 사용하여 행 및 열 ECC를 유지한다. 일 예에서, 메모리 디바이스는 "열 ECC 캐시" 접근법을 사용하여 행 및 열 ECC를 유지한다. 일 예에서, 메모리 디바이스는 "열 ECC 업데이트" 접근법을 사용하여 행 및 열 ECC를 유지한다. 각각의 접근법이 차례로 설명될 것이다. 상이한 접근법들은 시스템에 대한 전력, 성능 및 내구성 영향뿐만 아니라 관련 구현 비용도 상이하다.
일 구현예에서, 열 ECC 업데이트 접근법은 행 기입에 의해 변경된 행에서 해당 비트를 갖는 열에 대한 열 ECC 값을 업데이트한다. 행 기입에 의해 변경되지 않은 열의 경우, 열 ECC는 변경되지 않는다. 이러한 접근법은 변경된 열만이 업데이트되더라도 성능에 영향을 주게 된다. 따라서, 이러한 알고리즘은 소량의 비트가 변경된 워크로드에만 실용적일 수 있다. "소량"은 상대적인 용어이지만, 일 예에서 단일 자릿수(a single digit number)의 비트의 변경을 지칭하는 것으로 이해될 수 있음이 이해될 것이다. 변경된 비트 수가 두 자릿수이면, 성능 저하도 또한 두 자릿수가 된다(예컨대, 적어도 10 배가 저하된다).
많은 비트를 변경하는 행 기입이 예상될 수 있는 일반적인 경우, 캐시를 사용하는 두 가지 접근법 중 하나는 열 ECC 업데이트 접근법에 비해 상당히 향상된 성능을 제공할 수 있다. 두 접근법은 모두 보다 많은 하드웨어 리소스를 필요로 한다.
열 ECC 캐시 접근법은 정적 랜덤 액세스 메모리(SRAM)와 같은 캐시 메모리를 사용하여 열 ECC 데이터 또는 열 ECC 값의 사본을 저장하는 것을 지칭한다. 캐시 내의 열 ECC 데이터의 사본을 사용하게 되면, 시스템은 각각의 행 업데이트 또는 행 기입을 사용하는 행 주소 지정 가능 및 열 주소 지정 가능 메모리에 열 ECC 비트를 기입하지는 않는다. 일 예에서, 캐시는 모든 열 ECC 데이터를 보유할 수 있을만큼 충분히 크다. 일 예에서, 캐시는 열 ECC 데이터의 일부만을 보유한다. 그러한 경우, 시스템은 캐시가 가득 차면, 캐시를 행 주소 지정 및 열 주소 지정이 가능한 메모리 매체 또는 메모리 어레이로 플러싱(flush)할 수 있다.
열 ECC 캐시 접근법을 사용하면, 행 기입 및 행 ECC 저장은 정상적으로 발생할 수 있다. 마찬가지로, 행 판독은 메모리 어레이로부터 정상적으로 발생한다. 열 판독은 메모리 어레이로부터 열 데이터를 판독하는 것과 열 ECC 데이터를 위해 열 ECC 캐시를 체킹하는 것을 포함한다. 캐시 내에 저장된 열 ECC 데이터의 경우, 판독된 열에 대한 ECC 적용은 캐싱된 ECC 값으로부터 비롯된다.
행 기입 캐시 접근법(row write cache approach)은 캐시 메모리를 사용하여 가장 최근에 기입된 일부 행을 캐싱하는 것을 지칭한다. 행을 캐싱하게 되면, 시스템은 행 기입을 지연시킬 수 있으며, 이는 또한 행 기입에 의해 변경된 비트에 응답하여 변경된 열 ECC 값을 업데이트해야 할 필요성을 지연시킬 것이다. 캐시가 메모리 어레이로 플러싱될 경우, 시스템은 열 ECC 값도 업데이트할 수 있다. 행 캐싱(caching of the rows)은 대안적으로 행 버퍼(row buffer) 또는 최근 행 기입의 섀도우 사본(shadow copy)이라고도 지칭될 수 있다.
행 캐싱을 사용하면, 행 기입은 해당 행에 대한 행 ECC 데이터를 포함할 수 있는 행 캐시에 버퍼링된다. 행 판독의 경우, 행 및 행 ECC는 캐시 적중(cache hit)에 대한 체크를 트리거할 수 있으며, 캐시 내에 존재하지 않는 행의 경우, 데이터 및 행 ECC는 메모리 어레이로부터 판독될 수 있다. 열 판독의 경우, 열 및 열 ECC는 메모리 어레이로부터 판독될 수 있고, 그 후 행 캐시 내에 저장된 데이터에 기반하여 업데이트될 수 있다.
일 예에서, 행 기입 캐시가 가득 차 있거나 전력 손실이 임박한 경우, 또는 다른 경우에, 시스템은 캐시를 메모리 어레이로 플러싱할 수 있고, 열 ECC를 업데이트할 수 있다. 일 예에서, 시스템은 전력 손실 임박(power loss imminent)(PLI)의 경우 캐시를 플러싱할 수 있다. 캐시 플러싱(cache flush)은 상당한 시간이 소요될 수 있지만, 성능 영향을 감소시킬 수 있는 방식으로 스케줄링될 수 있다. 행 기입 캐시는 열 ECC 캐시에 비해 빠르지 않으며 서비스 품질이 저하된다. 일 예에서, 행 기입 캐시는 열 ECC 캐시보다 캐싱을 덜 필요로 하며, 리소스와 성능 간의 트레이딩 오프에 있어 보다 많은 조정이 가능할 수 있다.
각각의 접근법은 메모리 칩 상에서의 ECC 인코딩 및 디코딩 동작을 사용하는 온 다이 ECC 로직을 참조하여 설명된다. 각각의 접근법은 대안적으로 메모리 디바이스와 연관된 컨트롤러에 적용될 수 있다. 예를 들어, 열 ECC 업데이트 접근법은, 컨트롤러가 행 기입과 함께 전송할 행 ECC를 계산하고 그 후 추가 기입을 발행하여 열 ECC를 업데이트하는 것과 함께 적용될 수 있다. 또 다른 예로서, 열 ECC 캐시 접근법은 컨트롤러에 열 ECC 캐시를 적용하는 것과 함께 적용될 수 있다. 컨트롤러는 그 후 캐시 내의 열 ECC를 관리하고 캐싱된 ECC 값을 적용하여 메모리 어레이로부터 수신된 열을 체크하고 정정할 수 있다. 또 다른 예로서, 행 기입 캐시는 컨트롤러에 적용될 수 있다. 컨트롤러는 기입된 행 정보의 사본을 캐싱할 수 있다. 열 판독 데이터의 수신에 응답하여, 컨트롤러는 컨트롤러에서의 행 기입 캐시에 저장된 정보에 기반하여 수신된 데이터에 대한 업데이트를 적용할 수 있다. 따라서, 임의의 접근법과 관련된 설명은 온 다이 ECC로서 메모리 디바이스 자체에 적용될 수 있거나 또는 컨트롤러에 적용될 수 있음이 이해될 것이다.
도 1은 동적 데이터의 행 판독에 대한 행 에러 정정 및 열 판독에 대한 열 에러 정정을 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다. 시스템(100)은 3 개의 상이한 타입의 메모리를 갖는 시스템을 예시한 것이다. 행 에러 정정 및 열 에러 정정을 사용하는 시스템의 구현예는 한 가지 타입의 메모리만을 가질 수 있거나, 또는 하나 초과의 타입의 메모리를 가질 수 있지만 행 에러 정정 및 열 에러 정정을 갖는 하나의 타입만을 가질 수 있다. 시스템(100)은 예시의 목적으로 세 가지 타입의 모두를 예시한 것이다. 세 가지 타입의 메모리의 임의의 조합은 일 예의 시스템에서 구현될 수 있다.
호스트(110)는 메모리 및 다른 주변 서브 시스템이 접속되는 하드웨어 플랫폼을 나타낸다. 하드웨어 플랫폼은 실행 중에 메모리 액세스 요청을 생성하는 호스트 프로세서를 포함한다. 프로세서는 하나 이상의 프로세서 코어를 갖는 중앙 처리 유닛, 하나 이상의 코어를 갖는 그래픽 처리 유닛, 애플리케이션 특정 프로세서, 또는 프로세서들의 조합을 포함할 수 있다. 코어(112)는 메모리 액세스 요청을 생성하는 호스트 프로세서의 하나 이상의 프로세서 코어를 나타낸다.
코어(112) 또는 호스트(110)의 다른 프로세서는 호스트 운영 체제를 실행한다. 호스트 운영 체제는, 전체 시스템을 제어하고 주변 디바이스들을 접속하여 호스트 시스템에 데이터 및 서비스를 제공하게 하는 소프트웨어를 지칭한다. 호스트 운영 체제는 호스트(110)에 대해 소프트웨어 플랫폼을 제공한다.
일 예에서, 시스템(100)은 휘발성 듀얼 인라인 메모리 모듈(dual inline memory module)(DIMM)(140)을 포함한다. 휘발성 DIMM(140)은 휘발성 메모리를 갖는 모듈을 나타낸다. 휘발성 메모리는 메모리 디바이스에 대한 전력이 차단되면 상태가 불확실하게 되는 메모리를 지칭한다. 일 예에서, 시스템(100)은 행 주소 지정 및 열 주소 지정이 가능한 휘발성 메모리 모듈을 포함할 수 있으며, 메모리 어레이에 대한 행 ECC 및 열 ECC를 유지한다.
휘발성 DIMM(140)은 행 주소 지정 가능하고 열 주소 지정 가능한 휘발성 메모리를 나타내는 휘발성 어레이(144)를 포함한다. 휘발성 메모리 어레이는 열 및 행의 비트 셀들 또는 메모리 셀들의 어레이를 포함한다. 일 예에서, 휘발성 메모리 어레이는 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), 또는 일부 다른 휘발성 메모리일 수 있거나 또는 이를 포함할 수 있다. 휘발성 메모리 어레이는 휘발성 DIMM(140) 내에 포함된 다수의 상이한 집적 회로들 또는 메모리 칩들에 걸쳐 확산될 수 있다. 각각의 셀은 하나 이상의 데이터 비트를 저장하는 주소 지정 가능한 메모리 위치를 나타낸다. 행 ECC(146)는 휘발성 어레이(144)의 행에 대응하는 행 ECC를 나타낸다. 열 ECC(148)는 휘발성 어레이(144)의 열에 대응하는 열 ECC를 나타낸다.
컨트롤러(150)는 휘발성 DIMM(140)을 위한 컨트롤러를 나타낸다. 컨트롤러(150)는 메모리측 컨트롤러를 나타낸다. 메모리측 컨트롤러는 메모리 자체의 동작을 제어하는 메모리 디바이스의 컨트롤러를 지칭한다. 컨트롤러(150)는 메모리에 커맨드를 전송하는 호스트 컨트롤러와는 별개이다. 컨트롤러(150)는 호스트(110)로부터 커맨드를 수신하고, 커맨드를 디코딩하고, 그리고 호스트 요청에 응답하도록 휘발성 DIMM(140)에 대한 내부 동작을 생성한다.
일 예에서, 컨트롤러(150)는 휘발성 어레이(144)에 대한 행 ECC(146) 및 열 ECC(148)를 유지한다. 일 예에서, 컨트롤러(150)는 행 ECC 인코더(152), 행 ECC 디코더(154), 열(COL) ECC 인코더(156) 및 열(COL) ECC 디코더(158)를 포함한다. 일 예에서, 행 ECC 인코더(152)는 행으로부터 행 ECC를 계산하는 로직을 나타낸다. 일 예에서, 행 ECC 디코더(154)는, 행 및 그 행 ECC를 포함하는 행 코드워드를 체크하고 그 행 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다. 일 예에서, 열 ECC 인코더(156)는 열로부터 열 ECC를 계산하는 로직을 나타낸다. 일 예에서, 열 ECC 디코더(158)는, 열 및 그 열 ECC를 포함하는 열 코드워드를 체크하고 그 열 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다.
일 예에서, 휘발성 DIMM(140)은 설명된 임의의 예에 따른 2 차원 ECC의 제어를 위한 캐시 또는 버퍼를 나타내는 캐시(142)를 포함한다. 일 예에서, 캐시(142)는 정적 랜덤 액세스 메모리(SRAM)를 포함한다. 일 예에서, 캐시(142)는 휘발성 어레이(144)에 대한 열 ECC 캐시를 나타낸다. 일 예에서, 캐시(142)는 휘발성 어레이(144)에 대한 행 기입 캐시를 나타낸다.
일 예에서, 시스템(100)은 비 휘발성 DIMM(160)을 포함한다. 비 휘발성 DIMM(160)은 비 휘발성 메모리를 갖는 모듈을 나타낸다. 비 휘발성 메모리는 메모리 디바이스에 대한 전력이 차단되는 경우에도 상태가 확실한 메모리를 지칭한다. 일 예에서, 시스템(100)은 행 주소 지정 및 열 주소 지정이 가능한 비 휘발성 메모리 모듈을 포함할 수 있으며, 메모리 어레이에 대한 행 ECC 및 열 ECC를 유지한다.
비 휘발성 DIMM(160)은 행 주소 지정 가능하고 열 주소 지정 가능한 비 휘발성 메모리를 나타내는 비 휘발성 어레이(164)를 포함한다. 비 휘발성 메모리 어레이는 열 및 행의 비트 셀들 또는 메모리 셀들의 어레이를 포함한다. 일 예에서, 비 휘발성 메모리 어레이는 3 차원 크로스포인트(three dimensional crosspoint)(3DXP) 메모리, OPTANE 메모리, 또는 행 및 열로 주소 지정 가능한 다른 비 휘발성 메모리일 수 있거나 또는 이를 포함할 수 있다. 비 휘발성 어레이(164)는 비 휘발성 DIMM(160) 내에 포함된 다수의 상이한 집적 회로들 또는 메모리 칩들에 걸쳐 확산될 수 있다. 각각의 셀은 하나 이상의 데이터 비트를 저장하는 주소 지정 가능한 메모리 위치를 나타낸다. 행 ECC(166)는 비 휘발성 어레이(164)의 행에 대응하는 행 ECC를 나타낸다. 열 ECC(168)는 비 휘발성 어레이(164)의 열에 대응하는 열 ECC를 나타낸다.
컨트롤러(170)는 비 휘발성 DIMM(160)을 위한 컨트롤러를 나타낸다. 컨트롤러(170)는 메모리측 컨트롤러를 나타낸다. 컨트롤러(170)는 메모리에 커맨드를 전송하는 호스트 컨트롤러와는 별개이다. 컨트롤러(170)는 호스트(110)로부터 커맨드를 수신하고, 커맨드를 디코딩하고, 그리고 호스트 요청에 응답하도록 비 휘발성 DIMM(160)에 대한 내부 동작을 생성한다.
일 예에서, 컨트롤러(170)는 비 휘발성 어레이(164)에 대한 행 ECC(166) 및 열 ECC(168)를 유지한다. 일 예에서, 컨트롤러(170)는 행 ECC 인코더(172), 행 ECC 디코더(174), 열(COL) ECC 인코더(176) 및 열(COL) ECC 디코더(178)를 포함한다. 일 예에서, 행 ECC 인코더(172)는 행으로부터 행 ECC를 계산하는 로직을 나타낸다. 일 예에서, 행 ECC 디코더(174)는, 행 및 그 행 ECC를 포함하는 행 코드워드를 체크하고 그 행 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다. 일 예에서, 열 ECC 인코더(176)는 열로부터 열 ECC를 계산하는 로직을 나타낸다. 일 예에서, 열 ECC 디코더(178)는, 열 및 그 열 ECC를 포함하는 열 코드워드를 체크하고 그 열 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다.
일 예에서, 비 휘발성 DIMM(160)은 설명된 임의의 예에 따른 2 차원 ECC의 제어를 위한 캐시 또는 버퍼를 나타내는 캐시(162)를 포함한다. 일 예에서, 캐시(162)는 비 휘발성 어레이(164)에 대한 열 ECC 캐시를 나타낸다. 일 예에서, 캐시(162)는 비 휘발성 어레이(164)에 대한 행 기입 캐시를 나타낸다.
일 예에서, 시스템(100)은 솔리드 스테이트 드라이브(solid state drive)(SSD)(180)를 포함한다. SSD(180)은 비 휘발성 메모리를 갖는 드라이브 또는 모듈을 나타낸다. SSD(180)는 스토리지 버스(storage bus)(132) 상의 비 휘발성 메모리를 나타내고, 비 휘발성 DIMM(160)은 메모리 버스(122) 상의 비 휘발성 메모리를 나타낸다. 일 예에서, 시스템(100)은 행 주소 지정 및 열 주소 지정이 가능한 비 휘발성 어레이(184)를 갖는 SSD(180)를 포함할 수 있으며, 메모리 어레이에 대한 행 ECC 및 열 ECC를 유지한다.
SSD(180)는 행 주소 지정 가능하고 열 주소 지정 가능한 비 휘발성 메모리를 나타내는 비 휘발성 어레이(184)를 포함한다. 비 휘발성 메모리 어레이는 열 및 행의 비트 셀들 또는 메모리 셀들의 어레이를 포함한다. 일 예에서, 비 휘발성 메모리 어레이는 3 차원 크로스포인트(three dimensional crosspoint)(3DXP) 메모리, OPTANE 메모리, 또는 행 및 열로 주소 지정 가능한 다른 비 휘발성 메모리일 수 있거나 또는 이를 포함할 수 있다. 비 휘발성 어레이(184)는 SSD(180) 내에 포함된 다수의 상이한 집적 회로들 또는 메모리 칩들에 걸쳐 확산될 수 있다. 각각의 셀은 하나 이상의 데이터 비트를 저장하는 주소 지정 가능한 메모리 위치를 나타낸다. 행 ECC(186)는 비 휘발성 어레이(184)의 행에 대응하는 행 ECC를 나타낸다. 열 ECC(188)는 비 휘발성 어레이(184)의 열에 대응하는 열 ECC를 나타낸다.
컨트롤러(190)는 SSD(180)을 위한 컨트롤러를 나타낸다. 컨트롤러(190)는 메모리측 컨트롤러를 나타내며, 보다 구체적으로 매체 컨트롤러로 지칭될 수 있다. 컨트롤러(190)는 메모리에 커맨드를 전송하는 호스트 컨트롤러와는 별개이다. 컨트롤러(190)는 호스트(110)로부터 커맨드를 수신하고, 커맨드를 디코딩하고, 그리고 호스트 요청에 응답하도록 SSD(180)에 대한 내부 동작을 생성한다.
일 예에서, 컨트롤러(190)는 비 휘발성 어레이(184)에 대한 행 ECC(186) 및 열 ECC(188)를 유지한다. 일 예에서, 컨트롤러(190)는 행 ECC 인코더(192), 행 ECC 디코더(194), 열(COL) ECC 인코더(196) 및 열(COL) ECC 디코더(198)를 포함한다. 일 예에서, 행 ECC 인코더(192)는 행으로부터 행 ECC를 계산하는 로직을 나타낸다. 일 예에서, 행 ECC 디코더(194)는, 행 및 그 행 ECC를 포함하는 행 코드워드를 체크하고 그 행 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다. 일 예에서, 열 ECC 인코더(196)는 열로부터 열 ECC를 계산하는 로직을 나타낸다. 일 예에서, 열 ECC 디코더(198)는, 열 및 그 열 ECC를 포함하는 열 코드워드를 체크하고 그 열 코드워드 내의 비트 에러를 정정하는 로직을 나타낸다.
일 예에서, SSD(180)은 설명된 임의의 예에 따른 2 차원 ECC의 제어를 위한 캐시 또는 버퍼를 나타내는 캐시(182)를 포함한다. 일 예에서, 캐시(182)는 비 휘발성 어레이(184)에 대한 열 ECC 캐시를 나타낸다. 일 예에서, 캐시(182)는 비 휘발성 어레이(184)에 대한 행 기입 캐시를 나타낸다.
일 예에서, 2 개의 공간 차원에서 ECC 데이터를 유지하는 데 사용되는 캐시(162) 또는 캐시(182)는 전력 장애 보호 메모리(power-fail-protected memory)일 수 있다. 휘발성 DIMM(140)에 대한 ECC 데이터가 휘발성 메모리에 저장되기 때문에 캐시(142)에 전력 장애 보호를 적용하는 것은 의미가 없을 것이다. 전력 장애 보호 메모리는 배터리 또는 고용량 캐패시터와 같은 에너지 소스 또는 에너지 저장소에 의해 백업되는 메모리 디바이스를 지칭할 수 있다. 캐시(162) 또는 캐시(182) 용으로 사용되는 메모리는 휘발성 메모리일 수 있으며, 이는 전통적으로 사용 가능한 비 휘발성 메모리보다 판독 및 기입하기가 훨씬 더 빠르다.
휘발성임에도 불구하고, 전력 다운 또는 전력 장애, 또는 캐시에 대한 전력을 차단할 수 있을 다른 조건이 검출되면, 백업 에너지 소스는 ECC 캐시의 내용을 대응하는 메모리 어레이로 전송하기에 충분한 시간 동안 캐시에 전력을 공급할 수 있다. 따라서, ECC 데이터는 휘발성 메모리로부터 비 휘발성 메모리로 복사될 수 있다. 에너지 소스는, 예를 들어, 고용량 캐패시터 또는 배터리 소스일 수 있다.
일 예에서, 캐시(162) 또는 캐시(182)는 자기 랜덤 액세스 메모리(magnetic random-access memory)(MRAM), 스핀 전송 토크 랜덤 액세스 메모리(spin transfer torque random-access memory)(STTRAM), 또는 다른 메모리와 같은, 열 ECC 저장에 사용되는 비 휘발성 메모리를 나타낸다. 이러한 구현예에서, 메모리 어레이는 열 ECC(168) 또는 ECC(188)의 저장을 잠재적으로 제거할 수 있고, 열 ECC는 캐시에만 저장될 수 있다.
일 예에서, 컨트롤러(150)는 DIMM 상의 컨트롤러일 수 있다. 일 예에서, 컨트롤러(150)는 메모리 다이 또는 메모리 디바이스 상의 컨트롤러일 수 있다. 일 예에서, 컨트롤러(170)는 DIMM 상의 컨트롤러일 수 있다. 일 예에서, 컨트롤러(170)는 메모리 다이 또는 메모리 디바이스 상의 컨트롤러일 수 있다. 일 예에서, 컨트롤러(190)는 SSD 상의 컨트롤러일 수 있다. 일 예에서, 컨트롤러(190)는 저장 매체 다이 또는 디바이스 상의 컨트롤러일 수 있다. 컨트롤러(150), 컨트롤러(170), 및 컨트롤러(190)는 각각의 메모리 디바이스의 메모리 또는 저장 매체에 대한 액세스를 제어하기 때문에 액세스 컨트롤러를 나타낸다.
일 예에서, 호스트(110)는 메모리 버스(122)를 통해 휘발성 DIMM(140) 및 비 휘발성 DIMM(160)에 연결되는 메모리 컨트롤러(120)를 포함한다. 메모리 버스(122)는 메모리 리소스를 호스트 프로세서와 상호 접속시키기 위한 신호 라인 그룹을 나타낸다. 전형적으로, 메모리 버스(122)는 고속 인터페이스를 나타낸다. 메모리 버스(122)는 데이터를 교환하기 위한 데이터 신호 라인, 및 메모리 컨트롤러(120)가 메모리 디바이스에 커맨드 및 요청을 전송할 수 있도록 하는 제어 신호 라인을 포함한다. 일 예에서, 메모리 컨트롤러(120)는 시스템 온 칩(system on a chip) 상으로 또는 호스트 프로세서를 갖는 다이 상으로 통합된다.
일 예에서, 호스트(110)는 스토리지 버스(132)를 통해 SSD(180)에 연결되는 스토리지 컨트롤러(130)를 포함한다. 스토리지 버스(132)는 메모리 리소스를 호스트 프로세서와 상호 접속시키기 위한 신호 라인 그룹을 나타낸다. 스토리지 버스(132)는 전형적으로 메모리 버스(122)만큼 고속이 아닌 인터페이스이다. 스토리지 버스(132)는 데이터를 교환하기 위한 데이터 신호 라인, 및 스토리지 컨트롤러(130)가 SSD(180)에 커맨드 및 요청을 전송할 수 있도록 하는 제어 신호 라인을 포함한다.
행 ECC 데이터 및 열 ECC 데이터 모두를 사용하여, 행 주소 지정 가능하고 열 주소 지정 가능한 메모리 어레이에 대한 액세스를 관리하는 시스템(100)의 임의의 액세스 컨트롤러(즉, 컨트롤러(150), 컨트롤러(170), 또는 컨트롤러(190))에 대해, 일 예에서, 컨트롤러는 다음 중 하나에 따라 행 ECC 및 열 ECC를 관리하거나 유지한다.
일 예에서, 메모리 리소스는 열 ECC 캐시를 포함하고, 컨트롤러는 ECC 데이터를 2 개의 공간 차원에서 유지하기 위해 열 ECC 캐시 알고리즘을 구현하거나 또는 열 ECC 캐시 접근법을 구현한다. 두 공간 차원은 행 차원 및 열 차원이라고 지칭될 수 있다. 이들은 또한 각각 x 축 및 y 축이라고 지칭될 수 있고, 제각기 행이 x 축을 따라 정렬되는 방향을 선택할 수 있다.
일 예에서, 열 ECC 캐시 접근법은 비트 변경이 있는 각 열마다 열 ECC 캐시 내의 ECC 정보를 업데이트한다. 일 예에서, 컨트롤러는 메모리 어레이에 대한 기입 프로세스로 인한 행 기입으로 변경된 비트가 있는 열을 알고 있다. 예를 들어, 특정 3DXP 메모리는 먼저 행을 판독하고, 변경할 비트를 식별하고, 그 후 기입으로 변경될 비트만을 라이트백(writing back)함으로써 기입을 수행한다. 이러한 기입 동작은 이미 정정 상태에 있는 비트를 되기입하는 것을 방지할 수 있고, 이는 기입을 판독-수정-기입(read-modify-write)으로 효과적으로 전환한다. 일 예에서, 메모리 어레이는 판독-수정-기입(read-modify-write)(RMW) 동작 동안 행 기입에 의해 변경되는 열을 검출하고 업데이트된 열에 대해서만 열 ECC 데이터의 변경을 가능하게 하는 회로부를 포함한다.
일 예에서, 행 기입으로 변경될 각 열마다, 컨트롤러는 ECC 캐시로부터 이전 열 ECC를 판독한다. 일 예에서, 어떤 행이 변경되었는지를 알게 되면, 컨트롤러는 변경된 열 코드워드 내의 비트의 위치를 알게 될 것이고, 열 ECC 인코더를 사용하여 새로운 열 ECC를 계산하여 캐시에 라이트백할 수 있다. 일 예에서, 메모리 디바이스는 선형성을 갖는 코드를 적용하여 변경된 비트의 위치를 아는 것에 기반하여 새로운 열 ECC의 간단한 계산을 가능하게 한다.
일 예에서, 행을 변경하면 다수의 열의 비트가 변경된다. 일 예에서, 메모리 디바이스는 하나 초과의 열에 대해 업데이트된 열 ECC의 병렬적인 계산을 가능하게 하는 열 ECC 인코더 내의 회로부를 포함한다. 일 예에서, 하나 초과의 열 ECC 값에 대한 병렬적인 업데이트는 단일 동작으로 수행될 수 있다.
일 예에서, 메모리 디바이스는 열 ECC 데이터를 전치하여 열 대신 데이터 행에 저장한다. 일 예에서, 다수의 열에 대한 열 ECC는 한 행에 저장될 수 있으며, 메모리 디바이스는 데이터 행을 메모리 어레이에 기입함으로써 다수의 열에 대한 열 ECC를 병렬적으로 업데이트할 수 있다. 열을 기입하지 않는 메모리의 경우, 열 ECC 데이터는 전치되어 행으로서 저장될 수 있다.
일 예에서, 컨트롤러가 열을 판독할 경우, 컨트롤러는 어레이가 아닌 열 ECC 캐시로부터 타겟 열에 대한 열 ECC를 판독한다. 행이 기입된 후, 변경된 열에 대한 어레이 내의 열 ECC 비트는 진부한 상태가 된다. 열 ECC 캐시 내의 열 ECC 비트는 최신 상태이며, 열 ECC 디코더에 의해 열 판독에 대한 에러의 비트를 정정하는 데 사용될 수 있다.
일 예에서, 열 ECC 캐시를 사용하는 컨트롤러는 열 내의 모든 열 ECC 비트에 대한 행을 저장하기에 충분한 행을 갖는 패리티 라이트백 캐시(parity write back cache)를 적용한다. 메모리 디바이스는 수백 개의 ECC 비트를 가질 수 있으며, 이는 모든 열 ECC 비트에 대한 행과 함께 테이블에서 수백 개의 행을 필요로 할 것이다. 전형적으로, 행 기입은 (스크램블링 알고리즘을 사용할 때 비트의 거의 50 %가 될 수 있는) 많은 비트를 변경한다. 따라서, 열의 최대 약 50 %까지가 평균적으로 그들의 열 ECC 값에 대한 업데이트를 필요로 할 수 있다.
일 예에서, 메모리 리소스는 행 기입 캐시를 포함하고, 컨트롤러는 ECC 데이터를 2 개의 공간 차원에서 유지하기 위해 행 기입 캐시 알고리즘을 구현하거나 또는 행 기입 캐시 접근법을 구현한다. 일 예에서, 행 기입 캐시 접근법은 최근에 기입된 행의 라이트백 캐시를 적용하므로, 각각의 행 기입시에 열 ECC를 업데이트할 필요성을 방지한다. 열 ECC는 결국 업데이트를 필요로 할 것이지만, 지연으로 인해 열 ECC 값을 업데이트하는 패널티는 감소될 수 있다. 열 ECC 데이터를 업데이트하는 비용이 많은 행 기입에 분산되어 상각되므로 패널티는 감소된다. 상각은 행 캐시의 사이즈의 함수라는 것이 이해될 것이다.
행 기입 접근법을 위한 캐시의 사용은 열 ECC 캐시 접근법을 위한 캐시의 사용과 마찬가지로 메모리 디바이스에 추가 리소스를 필요로 한다는 것이 이해될 것이다. 열 ECC 캐시 접근법은 동일한 사이즈의 캐시에 대해 행 기입 캐시 접근법보다 나은 성능을 제공한다. 따라서, 열 ECC 캐시 접근법에 비해 행 기입 캐시 접근법의 이점은 행 기입 캐시의 사이즈가 열 ECC 캐시로서 사용되는 비교 대상의 캐시보다 작을 경우에 달성될 가능성이 높다. 따라서, 행 기입 캐시의 사이즈는 열당 열 ECC 비트가 존재하기 때문에 더 적은 행을 보유하도록 제한될 수 있다. 이러한 제한은 NR < NB로 표현될 수 있고, 여기서 NR은 행 기입 캐시의 행 수를 나타내고, NB는 열 ECC의 비트 수를 나타낸다.
일 예에서, 행이 기입될 경우, 컨트롤러는 행의 캐시에 행을 배치하고, 그것을 메모리 어레이에서 즉시 업데이트하지는 않는다. 호스트 행 판독 요청에 응답하여 행이 판독될 경우, 해당 행이 행 기입 캐시에 있다면, 행 판독은 캐시 적중을 발생시킨다. 캐시 적중으로 인해, 컨트롤러는 어레이가 아닌 행 기입 캐시로부터 행을 판독한다.
행이 행 기입 캐시에 존재하지 않으면(즉, 캐시 미스이면), 컨트롤러는 메모리 어레이로부터 행을 판독한다. 일 예에서, 호스트 열 판독 요청에 응답하여 열이 판독될 경우, 컨트롤러는 메모리 어레이로부터 열을 판독하고, 처음에는 열 ECC 디코더를 사용하여 메모리 어레이로부터의 열 ECC 값을 사용함으로써 그 열을 정정한다. 일 예에서, 컨트롤러는 행 캐시 내의 각 행으로부터의 열 내의 해당 비트로 열 데이터를 업데이트한다. 열 데이터를 정정한 후, 컨트롤러는 판독 커맨드에 응답하여 열 데이터를 호스트에 리턴할 수 있다.
일 예에서, 라이트백 캐시가 가득 찰 경우, 컨트롤러는 캐시를 비 휘발성 메모리로 플러싱하기 위해 정상 동작을 일시 중단하거나 연기한다. 동작을 일시 중단하면 서비스 품질은 저하될 것이다. 캐시의 플러싱은 라이트백 동작이라고 지칭될 수 있다. 일 예에서, 라이트백 동작은 행 기입 캐시 내의 데이터에 기반하여 열 ECC를 업데이트하고, 열 ECC 값을 메모리 어레이에 라이트백하는 것을 포함한다. 일 예에서, 라이트백 동작이 완료된 후, 정상 작동이 재개될 수 있다.
일 예에서, 컨트롤러는 메모리 어레이가 행 캐시 라이트백 동작으로 업데이트되고 있음을 나타내는 비 휘발성 플래그를 설정한다. 메모리 어레이에 대한 업데이트를 나타내도록 플래그가 설정되고 전력 장애가 발생하면, 데이터 손실의 위험이 존재한다. 플래그를 비 휘발성으로 만듬으로써, 전력 장애가 발생하더라도, 전력의 복구시, 메모리 디바이스는 라이트백 동작으로 리턴할 수 있다. 일 예에서, 메모리 어레이 내의 각 열마다, 컨트롤러는 메모리 어레이로부터의 열 데이터와 해당 ECC 데이터를 판독한다. 컨트롤러는 열 ECC 디코더와 어레이 내의 열 ECC 비트를 사용하여 열 데이터를 정정할 수 있다.
일 예에서, 컨트롤러는 메모리 어레이로부터 열 데이터를 판독하고, 캐시 내의 각 유효한 행으로부터의 열에 대응하는 비트로 열 데이터를 업데이트한다. 일 예에서, 캐싱된 행 데이터로 열 데이터를 업데이트한 후, 컨트롤러는 열 ECC 인코더를 사용하여 연관된 열 데이터에 대한 새로운 열 ECC 값을 계산한다. 컨트롤러는 업데이트된 열 데이터를 메모리 어레이에 기입하고, 업데이트된 열 ECC 데이터를 메모리 어레이에 기입할 수 있다.
일 예에서, 메모리 디바이스는 열 업데이트를 수행하기 위한 열 기입 능력을 포함할 수 있다. 일 예에서, 메모리 디바이스가 열 기입을 위한 기능을 포함하지 않는다면, 컨트롤러는 열 ECC 정정에서 발견된 스크러빙 에러(scrubbing errors)를 스킵하고, 열 ECC 데이터에 대응하는 행만을 기입할 수 있다. 이러한 접근법은 메모리 디바이스에서 열 ECC 비트 수만큼 많은 행을 저장할 정도로 충분한 캐시 공간을 필요로 할 수 있으며, 이 경우 열 ECC 캐시 접근법은 동일한 양의 리소스에 대해 보다 나은 성능을 제공할 수 있다.
일 예에서, 컨트롤러는 행 기입 캐시로부터의 각 행을 메모리 어레이에 기입한다. 각 행 기입마다, 컨트롤러는 또한 해당 행 ECC 값을 메모리 어레이에 기입한다. 행 ECC가 행 기입 캐시에 저장되지 않은 일 예에서, 각 행 기입마다, 컨트롤러는 행 ECC가 메모리 어레이에 기입되기 전에 행 ECC 인코더를 사용하여 행 ECC 값을 계산한다. 일 예에서, 캐시로부터 메모리 어레이로의 행 기입이 행으로의 변경을 유발하지 않는 경우, 열 ECC 비트는 해당 행에 대해 무효화되지 않을 수 있으며 열 ECC 비트는 업데이트될 필요가 없다.
일 예에서, 컨트롤러는 행 기입 캐시 내의 각 엔트리가 메모리 어레이에 기입된 후 그 엔트리를 비어있는 것으로 표시한다. 만약 캐시가 전력 장애 안전 캐시(power fail safe cache)이고, 행 기입과 행 엔트리를 행 기입 캐시에서 비어있는 것으로 기입하는 것 사이에 전력 장애가 발생하면, 전력의 복구시, 행 기입은 정보의 손실 없이 반복될 수 있음이 이해될 것이다. 일 예에서, 컨트롤러는 어레이가 업데이트되고 있음을 나타내는 비 휘발성 플래그를 재설정한다. 라이트백 동작을 다시 시작함으로써 전력 장애 복구를 달성할 수 있음이 이해될 것이다.
행 기입 캐시가 어레이 내의 행의 10 %를 보유하고 있고 라이트백이 전체 어레이와 캐싱되어 있는 행을 기입하는 예가 고려된다. 어레이 기입의 수에 거의 비례하는 메모리 디바이스의 평균 성능은 열 판독이 없는 경우보다 (1+100 %/10 %)=11 배 더 나빠질 것이다. 전력 및 내구성도 또한 약 11 배 더 나빠질 것이다. 라이트백 동작이 발생하기 전에 행이 되기입되면, 해당 행 기입은 본질적으로 사용되지 않고 성능은 이러한 것이 발생하는 빈도에 비례하여 향상된다. 열 판독 기능을 이용하는 알고리즘이 열 판독 기능이 없는 알고리즘보다 수십 배 더 빠를 수 있다는 점을 감안할 때, 11 배의 패널티가 허용될 수 있거나 허용 가능한 성능으로 간주될 수 있다. 행 기입 캐시 접근법은 또한 현저한 서비스 품질 패널티를 유발할 수 있음이 이해될 것이다.
일 예에서, 메모리 리소스는 ECC 데이터 업데이트용으로 사용할 캐시를 포함하고 있지 않으며, 컨트롤러는 ECC 데이터를 2 개의 공간 차원에서 유지하기 위해 열 ECC 업데이트 알고리즘을 구현하거나 또는 열 ECC 업데이트 접근법을 구현한다. 각 행 기입으로 열 ECC 데이터를 업데이트하면 성능에 미치는 영향이 매우 클 수 있으므로, 현실적으로는, 열 ECC 업데이트 접근법의 적용을 워크로드가 한 번에 하나 또는 몇 개의 비트만을 변경하는 것으로만 알려진 상황으로 제한하는 것이 합리적일 수 있다. 일 예에서, 열 ECC 업데이트 접근법은 행 기입 당 평균 변경 수가 단일 자릿수(즉, 기입 당 10 개 미만의 비트가 변경됨)일 경우 사용된다.
열 ECC 업데이트 접근법은 열 ECC 캐시 접근법 또는 행 기입 캐시 접근법보다 더 간단하며, 리소스를 더 적게 필요로 한다. 그러나, 기입 증폭 인자는 행에서 몇몇 비트를 초과하는 것이 변경되는 경우 열 ECC 업데이트 접근법을 비실용적으로 만들 수 있다.
이러한 접근법에서, 행 기입은 행 데이터 및 행 ECC 비트를 메모리 어레이에 간단히 기입한다. 일 예에서, 회로는 행 내의 어떤 비트가 변경되었는지를 검출하고, 새로운 값을 갖는 비트만을 기입한다. 일 예에서, 회로 출력은 또한 행 비트 변경에 기반하여 어떤 열이 변경되었는지를 결정하는 로직에도 공급된다. 그 후 컨트롤러는 열 ECC 인코더를 사용하여 열 ECC 비트를 재계산할 수 있고, 업데이트된 열 ECC 비트를 메모리 어레이에 기입할 수 있다. 그러나, 행 내의 1 비트라도 변경이 있으면 수백 개의 열 ECC 비트에 대한 업데이트가 유발될 수 있음이 이해될 것이다.
일 예에서, 컨트롤러는 변경된 행 비트에 대응하는 열을 판독하는 것을 포함하여, 그 열 ECC 데이터를 판독한다. 그 후 컨트롤러는 열 ECC 디코더를 사용하여 열 ECC 값을 사용함으로써 열을 정정할 수 있고, 행 데이터로 열을 업데이트할 수 있고, 열 ECC 인코더를 사용하여 업데이트된 열 ECC를 계산할 수 있고, 업데이트된 열과 열 ECC를 메모리 어레이에 라이트백할 수 있다.
열 판독은 하나의 메모리 동작을 사용한다. 행 판독도 하나의 메모리 동작을 사용한다. 일 예에서, 행 기입은 행과 해당 행 ECC 값에 대해 1 회의 기입을 수행하고, 부가적으로 행에서 변경된 각 비트마다 1 회의 판독 동작과 1 회의 기입 동작을 수행하여 각 열 ECC 값을 업데이트한다. 구체적인 예로서, 1 비트가 변경되면, 행 기입은 2 회의 기입과 1 회의 판독이 된다. 따라서, 단일 비트가 변경되면, 성능, 전력, 및 내구성은 열 판독이 허용되지 않은 경우보다 약 3 배 더 나빠진다. 10 비트가 변경되면, 행 기입에 21 개의 동작이 필요하다. 행 기입으로 10 비트만이 변경된 경우, 열 ECC 업데이트 접근법의 성능은 5 % 행 캐시 기능(즉, 메모리 어레이 내의 총 행 수의 5 %에 해당하는 행 수를 포함하는 행 기입 캐시)을 가진 메모리 디바이스에 대한 행 기입 캐시 접근법보다 나쁘다는 것을 알 수 있을 것이다.
도 2a는 열 ECC 값을 위한 캐시를 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다. 시스템(202)은 시스템(100)에 따른 열 ECC 캐시 접근법을 나타낸다. 시스템(202)은 액세스 컨트롤러를 예시하지 않지만, 컨트롤러 또는 제어 로직은 행 ECC 및 열 ECC를 유지하는 것과 관련된 동작을 수행할 것이다.
메모리 셀 어레이(210)는 휘발성 또는 비 휘발성 메모리를 위한 메모리 셀 어레이를 나타낸다. 일 예에서, 메모리 셀 어레이(210)는 3DXP 메모리 셀의 어레이를 나타낸다. 각 원은 메모리 셀 어레이 내의 비트를 나타낸다. 메모리 셀 어레이(210)는 1 차 데이터 비트, 행 ECC 비트 또는 행 ECC 값(예컨대, 어레이 내의 행 당 하나의 값 또는 하나의 체크 비트 그룹)을 나타내는 행 ECC(214), 및 열 ECC 비트 또는 열 ECC 값(예컨대, 어레이 내의 열 당 하나의 값 또는 하나의 체크 비트 그룹)을 나타내는 열 ECC(212)를 포함한다.
비트 쉐이딩(bit shading)의 범례(legend)는 다음과 같다. 음영이 없는 흰색 원은 "0" 비트 또는 논리 0을 나타낸다. 크로스해칭된 원은 "1" 비트 또는 논리 1을 나타낸다. 어두운 음영이 있는 원은 행 기입으로 변경된 비트를 나타낸다. 변경된 행은 파선으로 경계를 이루고 있다. 대각선이 있는 원은 해당 행 또는 열의 변경으로 인해 업데이트될 필요가 있는 ECC 비트를 나타낸다. 행 내의 비트 변경으로 변경된 열은 파선으로 경계를 이루고 있다.
메모리 셀 어레이(210) 이외에도, 시스템(202)은 열 ECC 캐시(220)를 포함한다. 열 ECC 캐시(220)는 열 ECC(212)의 일부 또는 전부의 사본을 나타내는 열 ECC 사본(222)을 포함한다. 일 예에서, 열 ECC 사본(222)은 열 ECC(212)의 비 휘발성 사본의 휘발성 사본이다. 일 예에서, 열 ECC 캐시(220)는 전력 장애 안전 캐시 또는 전력 장애 안전 메모리이다. 일 예에서, 열 ECC 캐시(220)는 열 내의 모든 열 ECC 비트에 대한 행을 저장하기에 충분한 행을 갖는 패리티 라이트백 캐시이며, 이들 행은 최대 수 백개의 행일 수 있다. 일 예에서, 열 ECC 캐시(220)는 버퍼 테이블로서 구현될 수 있다.
일 예에서, 열 ECC 캐시(220)는 열 ECC 사본(222)을 데이터의 열로서 저장하고, 캐시의 각 행은 각 열의 비트를 갖는다. 일 예에서, 열 ECC 캐시(220)는 전치된 열 ECC 데이터를 저장하고, 열 ECC 캐시(220)의 각 행은 하나 이상의 데이터 열을 포함한다. 일 예에서, 열 ECC 캐시(220)는 열 ECC(212)의 열에서와 같이 열 ECC(212)와는 다른 방향으로 열 ECC 사본(222)을 저장하고, 열 ECC 캐시(220) 내의 행으로 전치한다.
일 예에서, 열 ECC 캐시 알고리즘에 따라, 컨트롤러는 열 ECC 캐시(220)에서 비트 변경을 가졌던 각 열에 대한 ECC 정보를 업데이트할 수 있다. 비트가 변경된 열만 업데이트하도록 제한하면 ECC를 업데이트할 열의 수가 모든 열보다 훨씬 적을 수 있음을 알 수 있을 것이다.
예시된 바와 같이, 열 ECC(212)는 열 ECC 사본(222)과 동일한 열 ECC 값을 갖는다. 열 ECC 정보가 열 ECC 캐시(220)에 캐싱되면, 대부분의 경우 열 ECC(212) 내의 ECC 데이터는 열 ECC 사본(222)에 있는 것과 매칭되지 않을 것임이 이해될 것이다. 하나의 관점에서, 여러 행의 기입 후, 대부분의 열 ECC(212)는 업데이트가 필요한 열 ECC 값으로 식별될 수 있는 반면 열 ECC 사본(222)은 현재의 열 ECC 정보를 포함한다.
컨트롤러(미도시)는 선택된 행에 대한 기입에 응답하여 업데이트된 열 ECC 값을 위한 열 ECC 캐시(220) 내에 열 ECC 값을 저장한다. 선택된 행은 파선으로 표시되며, 대안적으로 기입 요청에 대한 타겟 행이라고 지칭될 수 있다. 호스트로부터의 판독 요청에 응답하여, 컨트롤러는 메모리 셀 어레이(210) 대신에 열 ECC 캐시(220)로부터 판독 요청에 의해 선택된 타겟 열 또는 열에 대한 열 ECC 값을 판독할 수 있다.
일 예에서, 데이터 기입에 응답하여, 컨트롤러는 데이터 기입에 의해 변경된 열에 대해 연관된 열 ECC(212)를 포함하여, 메모리 셀 어레이(210)로부터 열 데이터를 판독한다. 컨트롤러는 열 ECC 인코더를 사용하여 데이터 기입에 따라 새로운 열 ECC 값을 계산할 수 있고, 업데이트된 열 ECC를 열 ECC 사본(222)에 기입할 수 있다. 일 예에서, 데이터 기입에 응답하여, 컨트롤러는 메모리 셀 어레이(210)로부터 열 데이터를 판독할 수 있고, 열 ECC 사본(222)으로부터 열 ECC 데이터를 판독할 수 있고, 열 ECC 인코더를 사용하여 열 ECC 값을 업데이트할 수 있고, 그 후 업데이트된 열 ECC를 열 ECC 캐시(220)에 라이트백할 수 있다.
도 2b는 열 ECC 값을 업데이트하는 데 사용될 수 있는 행 기입을 위한 캐시를 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다. 시스템(204)은 시스템(100)에 따른 행 기입 캐시 접근법을 나타낸다. 시스템(204)은 액세스 컨트롤러를 예시하지 않지만, 컨트롤러 또는 제어 로직은 ECC 데이터를 유지하는 것과 관련된 동작을 수행할 것이다.
메모리 셀 어레이(230)는 휘발성 또는 비 휘발성 메모리를 위한 메모리 셀 어레이를 나타낸다. 시스템(202)의 열 ECC 접근법과 시스템(204)의 행 기입 캐시 접근법 사이의 차이를 설명하기 위해, 메모리 셀 어레이(230) 내의 데이터 값은 시스템(202)의 메모리 셀 어레이(210) 내의 데이터 값과 동일하지만, 예외적으로 2 개의 행은 행 캐시(240) 내에 이전에 캐싱된 것으로 식별된다.
일 예에서, 메모리 셀 어레이(230)는 3DXP 메모리 셀의 어레이를 나타낸다. 각 원은 메모리 셀 어레이 내의 비트를 나타낸다. 메모리 셀 어레이(230)는 1 차 데이터 비트, 행 ECC 비트 또는 행 ECC 값(예컨대, 어레이 내의 행 당 하나의 값 또는 하나의 체크 비트 그룹)을 나타내는 행 ECC(234), 및 열 ECC 비트 또는 열 ECC 값(예컨대, 어레이 내의 열 당 하나의 값 또는 하나의 체크 비트 그룹)을 나타내는 열 ECC(232)를 포함한다.
비트 쉐이딩(bit shading)의 범례(legend)는 다음과 같다. 음영이 없는 흰색 원은 "0" 비트 또는 논리 0을 나타낸다. 크로스해칭된 원은 "1" 비트 또는 논리 1을 나타낸다. 어두운 음영이 있는 원은 행 기입으로 변경된 비트를 나타낸다. 변경된 행은 파선으로 경계를 이루고 있다. 대각선이 있는 원은 해당 행 또는 열의 변경으로 인해 업데이트될 필요가 있는 ECC 비트를 나타낸다. 행 내의 비트 변경으로 변경된 열은 파선으로 경계를 이루고 있다.
메모리 셀 어레이(230) 이외에도, 시스템(204)은 설명에서 행 기입 캐시라고 지칭되기도 하는 것의 예를 나타내는 행 캐시(240)를 포함한다. 행 캐시(240)는 메모리 셀 어레이(230) 및 캐시 또는 행 ECC(244)의 일부 행의 버퍼를 나타낸다. 전형적으로, 행 캐시(240)는 메모리 셀 어레이(230)의 비 휘발성 데이터의 휘발성 사본이다. 일 예에서, 행 캐시(240)는 전력 장애 안전 캐시이다. 행 캐시(240)는 최근 기입된 행을 버퍼링하고, 임의의 버퍼 알고리즘(예컨대, 선입 선출(first in, first out)(FIFO), 최근 최소 사용(least recently used)(LRU), 또는 다른 알고리즘)에 따라 관리될 수 있다.
행 캐시(240)는 메모리 셀 어레이(230)로부터 최근에 업데이트된 행을 나타내는 2 개의 행을 구체적으로 예시한다. '1'로 라벨링된 행은 메모리 셀 어레이(230) 내의 대응하는 행에 비해 행 캐시(240)에 차이가 있음을 알 수 있다. 유사하게, '2'로 라벨링된 행은 메모리 셀 어레이(230)의 대응하는 행에 비해 행 캐시(240)에 차이가 있음을 알 수 있다. 메모리 서브 시스템의 기입 알고리즘에 따라, 변경된 비트 수(및 그에 따라 행 캐시(240)와 메모리 셀 어레이(230)의 대응하는 행들 사이에서 상이할 수 있을 비트 수)는 평균적으로 행의 최대 50 %일 수 있음이 이해될 것이다. 단순화를 위해, 단지 몇 비트만이 시스템(204)에서 다른 것으로 보여진다.
일 예에서, 행 캐시(240)는 열 ECC를 업데이트하는 패널티를 감소시킬 수 있는 최근 기입된 행의 라이트백 캐시이다. 메모리 셀 어레이(230)에 직접 기입하는 대신 행 캐시(240)에 행을 기입하게 되면, 시스템은 열 ECC를 많은 행 기입에 분산시킴으로써 열 ECC를 업데이트하는 비용을 상각할 수 있다. 열 ECC는 캐시가 메모리 셀 어레이(230)로 플러싱될 때 업데이트될 수 있다.
일 예에서, 행이 기입될 때, 행은 행 캐시(240)에 배치되고 메모리 셀 어레이(230)에서 업데이트되지는 않는다. 행이 판독될 때, 그 행이 행 캐시(240)에 있다면, 컨트롤러 메모리 셀 어레이(230)가 아닌 행 캐시(240)로부터 그 행을 판독한다. 행이 행 캐시(240)에 없으면, 컨트롤러는 그 행을 메모리 셀 어레이(230)로부터 판독한다. 열이 판독될 때, 컨트롤러는 메모리 셀 어레이(230)로부터 열 데이터를 판독할 수 있고, 메모리 어레이로부터의 열 ECC(232)로 열 데이터를 정정할 수 있다. 일 예에서, 컨트롤러는 그 후 열 데이터를 반환 요청에 응답하도록 리턴하기 전에, 열 데이터 내의 비트를 행 캐시(240) 내의 각 행으로부터의 대응하는 비트로 업데이트한다.
일 예에서, 행 캐시(240)가 더티 행(dirty rows)으로 가득 차 있고, 정의에 따라 행 캐시(240)에 기입된 모든 행이 더티인 경우, 컨트롤러는 라이트백 동작을 수행하기 위해 정상 동작을 일시 중단할 수 있다. 동작을 일시 중단하는 컨트롤러는 전형적으로 행 캐시를 관리하는 컨트롤러가 될 것이다. 따라서, 행 캐시(240)가 메모리 디바이스의 캐시인 경우, 정상 동작의 일시 중단을 제어하는 컨트롤러는 메모리 디바이스 또는 메모리 모듈의 컨트롤러이다. 행 캐시(240)가 호스트 또는 메모리 컨트롤러 또는 스토리지 컨트롤러의 캐시인 경우, 호스트측 컨트롤러는 라이트백을 수행하기 위해 정상 동작의 일시 중단을 관리한다.
도 3은 행 ECC 값 및 열 ECC 값을 유지하는 크로스포인트 메모리 셀들을 갖는 메모리 디바이스를 갖는 시스템의 일 예의 블럭 다이어그램이다. 시스템(300)은 도 1의 시스템(100), 도 2a의 시스템(202), 또는 도 2b의 시스템(204)의 예에 따른 시스템의 일 예를 도시한 것이다.
메모리 디바이스(310)는 어레이(320)에 대한 행 ECC 값 및 열 ECC 값을 유지하는 휘발성 메모리 또는 비 휘발성 메모리 디바이스를 나타낸다. 어레이(320)는 셀(326)과 같은 셀의 어레이를 나타낸다. 각 셀은 메모리 셀 또는 비트 셀이며, 워드라인(WL)(322) 또는 행 도체가 비트라인(BL)(324) 또는 열 도체와 교차하는 위치에 위치된다. 크로스포인트 메모리는 교차하는 행과 열 사이의 재료를 포함할 수 있다. 일 예에서, 재료는 저항성 상태를 변경함으로써 데이터 비트를 저장한다. 일 예에서, 재료는 셀의 필드의 방향에 기반하여 데이터 비트를 저장한다.
어레이(320)는 다수의 WL(322) 및 다수의 BL(324)을 갖는 임의의 사이즈일 수 있다. 전형적으로, BL(324)의 수는 WL(322)의 수보다 많다. 어레이(320)는 비트 행으로 기입되고, 비트 행 또는 비트 열로 판독될 수 있다. 구체적으로 라벨링되지는 않았지만, 어레이(320)의 비트 중 일부는 행 ECC 값을 저장하는 데 사용되고, 어레이(320)의 비트 중 일부는 열 ECC 값을 저장하는 데 사용된다.
일 예에서, 메모리 디바이스(310)는 본원의 임의의 설명에 따라 행 기입 캐시 또는 열 ECC 캐시를 나타낼 수 있는 캐시(340)를 포함한다. 액세스 컨트롤러(330)는 메모리측 컨트롤러를 나타내며, 행 ECC 값 및 열 ECC 값을 관리하고 유지한다. 데이터 기입에 응답하여, 액세스 컨트롤러(330)는 설명된 임의의 접근법에 따라 행 데이터를 업데이트하고 행 ECC 값 및 열 ECC 값을 업데이트한다. 판독 요청에 응답하여, 액세스 컨트롤러(330)는 적절한 데이터(예컨대, 행 데이터 또는 열 데이터)에 액세스할 수 있고, 요청된 데이터를 리턴하기 전에 ECC 데이터에 기반하여 데이터를 업데이트할 수 있다. 일 예에서, 컨트롤러(330)는 행 ECC 인코더(332), 행 ECC 디코더(334), 열 ECC 인코더(336), 및 열 ECC 디코더(338)를 포함한다.
메모리 디바이스(310)는 메모리 디바이스에 대한 입력/출력(I/O) 인터페이스를 나타내는 I/O(312)를 포함한다. I/O(312)는 다수의 신호 라인과 인터페이스하기 위한 하드웨어를 포함한다. 신호 라인은 데이터를 교환하는 데이터 신호 라인과, 제어 신호를 교환하는 제어 신호 라인을 포함한다. 제어 신호 라인은 호스트로부터 메모리 디바이스에 커맨드 또는 요청을 제공하기 위한 커맨드 신호 라인, 커맨드 또는 요청에 대한 타겟 또는 선택된 주소를 식별하기 위한 주소 신호 라인, 및 다른 제어 신호 라인, 예를 들어, 경보 라인 또는 다른 주변 제어 신호를 포함할 수 있다. 전형적으로, 커맨드 및 주소 라인은 호스트로부터 메모리 디바이스로만 전송된다. 다른 신호 라인은 메모리 디바이스로부터 호스트로, 호스트로부터 메모리 디바이스로, 또는 양방향일 수 있다.
호스트(350)는 메모리 디바이스(310)가 접속되는 호스트 플랫폼을 나타낸다. 호스트(350)는 호스트(350)를 메모리 디바이스(310)에 연결하는 신호 라인에 호스트(350)를 접속하기 위한 하드웨어를 나타내는 I/O(352)를 포함한다. 호스트(350)는 메모리 디바이스(310)로부터 데이터에 대한 요청을 생성하는 호스트 프로세서를 나타내는 프로세서(360)를 포함한다. 호스트 컨트롤러(370)는 메모리 디바이스(310)가 메모리 버스에 연결된 경우 메모리 컨트롤러를 나타내거나, 또는 메모리 디바이스(310)가 스토리지 버스에 연결된 경우 스토리지 컨트롤러를 나타낸다.
일 예에서, 호스트(350)는 본원의 임의의 설명에 따라 행 기입 캐시 또는 열 ECC 캐시를 나타낼 수 있는 캐시(380)를 포함한다. 시스템(300)의 상이한 컴포넌트들이 반드시 축척대로 도시되지는 않음이 이해될 것이다. 호스트(350)가 캐시(380)를 포함하면, 호스트 컨트롤러(370)는 호스트(350) 내부에서 행 ECC 값 및 열 ECC 값을 관리하고 유지할 수 있다. 이러한 ECC 값은 구체적으로 예시되지 않지만, 호스트(350)는 행 ECC 값 및 열 ECC 값을 유지하고 관리하기 위해 ECC 값의 어레이를 포함할 수 있다. 일 예에서, 호스트 컨트롤러(370)는 행 ECC 인코더(372), 행 ECC 디코더(374), 열 ECC 인코더(376), 및 열 ECC 디코더(378)를 포함한다.
데이터 기입에 응답하여, 호스트 컨트롤러(370)는 메모리 디바이스(310)에 커맨드를 전송하여 행 데이터를 업데이트할 수 있고, 호스트(350) 내에 설명된 임의의 접근법에 따라 행 ECC 데이터 및 열 ECC 데이터를 업데이트할 수 있다. 판독 요청에 응답하여, 호스트 컨트롤러(370)는 메모리 디바이스(310)에 대한 판독 요청에 의해 적절한 데이터(예컨대, 행 데이터 또는 열 데이터)에 액세스할 수 있고, ECC 데이터에 기반하여 호스트(350) 내의 데이터를 업데이트할 수 있다.
도 4는 열 ECC 캐시를 사용하여 메모리에 기입하는 프로세스의 일 예의 흐름 다이어그램이다. 열 ECC 캐시를 사용하여 시스템 내에 ECC를 기입하고 업데이트하는 프로세스(400)는 열 ECC 캐시를 관리하는 임의의 컨트롤러에 의해 구현될 수 있다.
일 예에서, 호스트는 402에서, 메모리 디바이스에 전송할 행 기입을 생성한다. 행 기입에 응답하여, 메모리 디바이스는 404에서, 행을 메모리 매체에 기입할 수 있다. 행 ECC는 406에서, 행이 어레이에 기일될 때 행 데이터로 업데이트될 수 있다.
일 예에서, 컨트롤러는 408에서, 비트 셀이 변경된 열에 대한 열 ECC를 열 ECC 캐시로부터 판독한다. 일 예에서, 컨트롤러는 410에서, 열 ECC 인코더를 사용하여 기입된 행으로부터의 변경된 비트 셀에 기반하여 열 ECC를 업데이트한다. 컨트롤러는 412에서, 업데이트된 열 ECC를 열 ECC 캐시에 라이트백한다.
ECC가 업데이트된 열이 업데이트할 최종 열이 아닌 경우, 414의 아니오 분기에서, 컨트롤러는 416에서, 업데이트할 다음 열을 식별할 수 있고, 408에서, 동작을 반복하여 열 ECC 값을 업데이트할 수 있다. 업데이트된 열이 업데이트할 최종 열인 경우, 414의 예 분기에서, 컨트롤러는 다음 행 기입까지 열 ECC 캐시 업데이트를 중지할 수 있다. 일 예에서, 컨트롤러는 418에서, 어레이 내의 열 ECC 값을 캐시 내의 열 ECC 값과 주기적으로 동기화할 수 있다. 어레이의 업데이트는 전력 상태가 변경되거나, 유휴 기간 동안에, 또는 컨트롤러에 의해 결정된 일부 다른 시간에만 수행될 수 있다.
도 5는 열 ECC 캐시를 사용하여 메모리로부터 판독하는 프로세스의 일 예의 흐름 다이어그램이다. 열 ECC 캐시를 사용하여 시스템 내의 데이터를 판독하고 비트 에러를 정정하는 프로세스(500)는 열 ECC 캐시를 관리하는 임의의 컨트롤러에 의해 구현될 수 있다.
호스트는, 502에서 판독을 수신할 수 있는 메모리 디바이스에 대한 판독을 생성한다. 판독이 행 판독인 경우, 504의 행 분기에서, 컨트롤러는 506에서, 어레이로부터 행 데이터를 판독할 수 있다. 컨트롤러는 또한 508에서, 어레이로부터 행 ECC를 판독한다. 컨트롤러는 510에서, 행 ECC 디코더를 사용하여 행 데이터 및 행 ECC 값 내의 비트 에러를 정정할 수 있고, 그 후 컨트롤러는 정정된 행 데이터를 호스트에 돌려보낼 수 있다.
판독이 열 판독인 경우, 504의 열 분기에서, 컨트롤러는 512에서, 어레이로부터 열 데이터를 판독할 수 있다. 일 예에서, 컨트롤러는 514에서, 어레이로부터 대신 열 ECC 캐시로부터 열 ECC를 판독한다. 컨트롤러는 열 ECC 디코더를 사용하여 열 데이터 및 열 ECC 값 내의 비트 에러를 정정할 수 있다. 그 후 컨트롤러는 510에서, 정정된 열 데이터를 호스트에 돌려보낸다.
도 6은 행 캐시 및 행 에러 정정 및 열 에러 정정을 사용하여 메모리에 기입하는 프로세스의 일 예의 흐름 다이어그램이다. 행 기입 캐시를 사용하여 시스템 내에 ECC 값을 기입하고 업데이트하는 프로세스(600)는 행 기입 캐시를 관리하는 임의의 컨트롤러에 의해 구현될 수 있다.
일 예에서, 호스트는 602에서 행 기입 요청을 수신할 수 있는 메모리 디바이스에 전송할 행 기입을 생성한다. 행 기입에 응답하여, 메모리 디바이스는 604에서, 행을 행 캐시에 기입할 수 있다. 일 예에서, 행 ECC는 행 ECC 인코더를 사용하여 계산될 수 있다. 일 예에서, 업데이트된 행 ECC는 606에서, 행 데이터와 함께 행 캐시에 기입될 수 있다.
일 예에서, 컨트롤러는 행 캐시를 메모리 어레이로 플러싱해야 하는지를 결정한다. 컨트롤러는 캐시가 가득 차면 캐시를 플러싱할 수 있다. 일 예에서, 컨트롤러는 다른 이벤트에 응답하여 캐시를 플러싱할 수 있다. 캐시가 플러싱되지 않으면, 608의 아니오 분기에서, 프로세스는 종료될 수 있고, 컨트롤러는 행 ECC 값 및 열 ECC 값에 대한 다른 업데이트 전에 다음 기입 요청을 기다릴 것이다.
캐시가 플러싱되는 경우, 608의 예 분기에서, 일 예에서, 컨트롤러는 610에서, 열 ECC를 업데이트하고 캐시를 플러싱하기 위해 메모리 동작을 일시 중단한다. 일 예에서, 컨트롤러는 612에서, 어레이로부터 열 데이터를 판독하고 행 캐시 데이터로부터 열을 업데이트한다. 그 후 컨트롤러는 614에서, 열 ECC 인코더를 사용하여 업데이트된 열 데이터에 기반하여 업데이트된 열 ECC를 계산할 수 있다. 일 예에서, 컨트롤러는 616에서, 업데이트된 열 데이터를 어레이에 라이트백하고, 또한 업데이트된 열 ECC 데이터를 어레이에 라이트백한다.
ECC가 업데이트된 열이 업데이트할 최종 열이 아닌 경우, 618의 아니오 분기에서, 컨트롤러는 620에서, 업데이트할 다음 열을 식별할 수 있고, 612에서, 동작을 반복하여 열 ECC 값을 업데이트할 수 있다. 업데이트된 열이 업데이트할 최종 열인 경우, 618의 예 분기에서, 컨트롤러는 622에서, 열 ECC를 업데이트하는 것을 중지할 수 있고, 캐시 라이트백 동작을 종료할 수 있고, 그리고 메모리 동작을 재개할 수 있다.
도 7은 행 캐시 및 행 에러 정정 및 열 에러 정정을 사용하여 메모리로부터 판독하는 프로세스의 일 예의 흐름 다이어그램이다. 행 기입 캐시를 사용하여 시스템 내의 데이터를 판독하는 프로세스(700)는 행 기입 캐시를 관리하는 임의의 컨트롤러에 의해 구현될 수 있다.
호스트는, 702에서 판독을 수신할 수 있는 메모리 디바이스에 대한 판독을 생성한다. 판독이 행 판독인 경우, 704의 행 분기에서, 컨트롤러는 어레이 또는 캐시로부터 행 데이터를 판독할 수 있다. 일 예에서, 행 판독으로 인해 캐시 적중이 발생하면, 706의 예 분기에서, 컨트롤러는 708에서, 행 데이터 캐시로부터 행 데이터를 판독한다. 컨트롤러는 또한 710에서, 캐시로부터 행 ECC를 판독한다. 컨트롤러는 행 ECC 디코더를 사용하여 행 데이터 및 행 ECC 값 내의 비트 에러를 정정할 수 있다. 그 후 컨트롤러는 712에서, 정정된 행 데이터를 호스트에 돌려보낼 수 있다.
일 예에서, 행 판독이 캐시 적중을 발생시키지 않으면, 706의 아니오 분기에서, 컨트롤러는 714에서, 어레이로부터 행 데이터를 판독한다. 컨트롤러는 716에서, 어레이로부터 행 ECC를 판독한다. 컨트롤러는 행 ECC 디코더를 사용하여 행 데이터 및 행 ECC 값 내의 비트 에러를 정정할 수 있다. 그 후 컨트롤러는 712에서, 정정된 행 데이터를 호스트에 돌려보낼 수 있다.
판독이 열 판독인 경우, 704의 열 분기에서, 컨트롤러는 718에서, 어레이로부터 열 데이터를 판독할 수 있다. 일 예에서, 컨트롤러는 720에서, 어레이로부터 열 ECC를 판독한다. 컨트롤러는 722에서, ECC 디코딩을 수행하는 열 ECC 디코더를 사용하여 열 데이터 및 열 ECC 값 내의 비트 에러를 정정함으로써 정정된 열 데이터를 획득할 수 있다. 일 예에서, 컨트롤러는 724에서, 행 캐시로부터의 데이터로 정정된 열 데이터를 업데이트한다. 일 예에서, 그 후 컨트롤러는 726에서, 열 ECC 인코더를 사용하여 업데이트된 열 데이터에 기반하여 열 ECC를 업데이트할 수 있다. 컨트롤러는 728에서, 정정된 열 데이터를 호스트에 리턴할 수 있다.
도 8은 행 에러 정정 및 열 에러 정정을 사용하여 메모리에 기입하는 프로세스의 예의 흐름 다이어그램이다. 프로세스(800)는 열 ECC와 행 ECC를 사용하지만 ECC 데이터에 대한 캐시가 없는 시스템에서 ECC를 기입하고 업데이트하는 프로세스를 나타낸다.
일 예에서, 호스트는 802에서, 메모리 디바이스에 전송할 행 기입을 생성한다. 행 기입에 응답하여, 메모리 디바이스는 804에서, 행을 메모리 매체에 기입할 수 있다. 업데이트된 행 ECC는 행 데이터로부터 행 ECC 인코더를 사용하여 계산될 수 있다. 업데이트된 행 ECC는 806에서, 행이 어레이에 기일될 때 행 데이터와 함께 기입될 수 있다.
일 예에서, 컨트롤러는 808에서, 행 기입으로 행 비트 셀이 변경된 열에 대한 열 데이터 및 열 ECC를 어레이로부터 판독한다. 일 예에서, 컨트롤러는 810에서, ECC 디코딩을 수행하는 열 ECC 디코더를 사용하여 열 데이터 내의 비트 에러를 정정한다. 컨트롤러는 812에서, 변경된 행 데이터에 기반하여 열 데이터를 업데이트할 수 있다. 컨트롤러는 열 ECC 인코더를 사용하여 업데이트된 열 데이터에 기반하여 업데이트된 열 ECC를 계산할 수 있다. 그 후 컨트롤러는 814에서, 열 ECC를 어레이에 라이트백할 수 있다.
ECC가 업데이트된 열이 업데이트할 최종 열이 아닌 경우, 816의 아니오 분기에서, 컨트롤러는 818에서, 업데이트할 다음 열을 식별할 수 있고, 808에서, 동작을 반복하여 열 ECC 값을 업데이트할 수 있다. 업데이트된 열이 업데이트할 최종 열인 경우, 816의 예 분기에서, 컨트롤러는 다음 행 기입까지 열 ECC 업데이트를 중지할 수 있다.
도 9는 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 메모리 서브 시스템의 일 예의 블럭 다이어그램이다. 시스템(900)은 컴퓨팅 디바이스의 메모리 서브 시스템의 요소 및 프로세서를 포함한다. 시스템(900)은 시스템(100)에 따른 시스템의 일 예를 제공한다.
일 예에서, 메모리 어레이(960)는 행 에러 정정 데이터 및 열 에러 정정 데이터를 포함한다. 일 예에서, 컨트롤러(950)는 컨트롤(980)로 지칭되는 행 및 열 ECC 컨트롤(980)을 포함한다. 컨트롤(980)은 본원에 설명된 임의의 예에 따라 행 에러 정정 데이터 및 열 에러 정정 데이터를 유지할 수 있다. 일 예에서, 메모리 디바이스(940)는 본원의 임의의 설명에 따라 열 ECC 캐시 또는 행 기입 캐시일 수 있는 캐시(구체적으로 도시되지 않음)를 포함한다. 컨트롤(980)은, 예를 들어, 열 ECC 캐시 접근법, 행 기입 캐시 접근법, 또는 열 ECC 업데이트 접근법을 사용하여 2 개의 공간 차원에서 에러 정정을 유지하기 위한 메모리 디바이스(940) 내의 컨트롤을 나타낸다. 일 예에서, 컨트롤(980)은 메모리 디바이스(940) 내에 있는 대신 메모리 컨트롤러(920) 내에 있을 수 있다.
프로세서(910)는 운영 체제(OS) 및 애플리케이션을 실행할 수 있는 컴퓨팅 플랫폼의 처리 유닛을 나타내며, 운영 체제(OS) 및 애플리케이션은 집합적으로 메모리의 호스트 또는 사용자로 지칭될 수 있다. OS와 애플리케이션은 메모리 액세스를 발생시키는 동작을 실행한다. 프로세서(910)는 하나 이상의 개별 프로세서를 포함할 수 있다. 각각의 개별 프로세서는 단일 처리 유닛, 멀티 코어 처리 유닛, 또는 조합을 포함할 수 있다. 처리 유닛은 중앙 처리 유닛(CPU)과 같은 1 차 프로세서, 그래픽 처리 유닛(GPU)과 같은 주변 프로세서, 또는 조합일 수 있다. 메모리 액세스는 또한 네트워크 컨트롤러 또는 하드 디스크 컨트롤러와 같은 디바이스들에 의해 개시될 수 있다. 이러한 디바이스는 일부 시스템의 프로세서와 통합되거나 버스(예컨대, PCI 익스프레스) 또는 조합을 통해 프로세서에 부착될 수 있다. 시스템(900)은 시스템 온 칩(SOC)으로서 구현될 수 있거나, 또는 독립형 컴포넌트들과 함께 구현될 수 있다.
메모리 디바이스에 대한 언급은 상이한 메모리 타입에 적용될 수 있다. 메모리 디바이스는 종종 휘발성 메모리 기술을 지칭하기도 한다. 휘발성 메모리는 디바이스에 대한 전력이 차단되면 상태(및 그에 따른 저장된 데이터)가 불확실한 메모리이다. 비 휘발성 메모리는 디바이스에 대한 전력이 차단되더라도 상태가 확실한 메모리를 지칭한다. 동적 휘발성 메모리는 상태를 유지하기 위해 디바이스에 저장된 데이터를 리프레싱하는 것을 필요로 한다. 동적 휘발성 메모리의 한 가지 예는 동적 랜덤 액세스 메모리(DRAM) 또는 동기식 DRAM (SDRAM)과 같은 일부의 변종을 포함한다. 본원에 설명된 메모리 서브 시스템은 다수의 메모리 기술, 예를 들어, DDR4 (DDR 버전 4, JESD79-4, JEDEC에 의해 2012년 9월에 최초로 공개), LPDDR4 (저전력 DDR 버전 4, JESD209-4, JEDEC에 의해 2014년 8월에 최초로 공개), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, JEDEC에 의해 2014년 8월에 최초로 공개), HBM (고 대역폭 메모리 DRAM, JESD235A, JEDEC에 의해 2015년 11월 최초로 공개), DDR5 (DDR 버전 5, JEDEC에 의해 현재 논의중), LPDDR5 (LPDDR 버전 5, JESD209-5, JEDEC에 의해 2019년 2월에 최초로 공개), HBM2 ((HBM 버전 2), JEDEC에 의해 현재 논의중), 또는 기타 또는 메모리 기술의 조합, 및 이러한 사양의 파생물 또는 확장을 기반으로 하는 기술과 호환될 수 있다.
휘발성 메모리에 추가적으로 또는 대안적으로, 일 예에서, 메모리 디바이스에 대한 언급은 디바이스에 대한 전력이 중단되더라도 상태가 확실한 비 휘발성 메모리 디바이스를 지칭할 수 있다. 일 예에서, 비 휘발성 메모리 디바이스는 NAND 또는 NOR 플래시 기술과 같은 블럭 주소 지정 메모리 디바이스이다. 따라서, 메모리 디바이스는 또한 3 차원 크로스포인트 메모리 디바이스, 다른 바이트 주소 지정 가능 비 휘발성 메모리 디바이스와 같은 미래 세대의 비 휘발성 디바이스를 포함할 수 있다. 메모리 디바이스는 메모리 셀의 저항성 상태 또는 메모리 셀의 위상에 기반하여 데이터를 저장하는 비 휘발성, 바이트 주소 지정 가능 매체를 포함할 수 있다. 일 예에서, 메모리 디바이스는 칼코게나이드 상 변화 재료(예컨대, 칼코게나이드 글래스)를 사용할 수 있다. 일 예에서, 메모리 디바이스는 다중 임계치 레벨 NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 다중 레벨 상 변화 메모리(phase change memor)(PCM) 또는 스위치가 있는 상 변화 메모리(phase change memory with a switch)(PCMS), 저항성 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(ferroelectric transistor random-access memory)(FeTRAM), 멤리스터 기술을 통합한 자기 저항 랜덤 액세스 메모리(magnetoresistive random-access memory)(MRAM) 메모리, 스핀 전사 토크(spin transfer torque)(STT)-MRAM, 또는 이들의 임의의 조합, 또는 다른 메모리일 수 있거나 또는 이를 포함할 수 있다.
메모리 컨트롤러(920)는 시스템(900)을 위한 하나 이상의 메모리 컨트롤러 회로 또는 디바이스를 나타낸다. 메모리 컨트롤러(920)는 프로세서(910)에 의한 동작의 실행에 응답하여 메모리 액세스 커맨드를 생성하는 제어 로직을 나타낸다. 메모리 컨트롤러(920)는 하나 이상의 메모리 디바이스(940)에 액세스한다. 메모리 디바이스(940)는 위에서 언급된 임의의 것에 따른 DRAM 디바이스일 수 있다. 일 예에서, 메모리 디바이스(940)는 서로 다른 채널로 구성되고 관리되며, 여기서 각 채널은 다수의 메모리 디바이스에 병렬로 연결되는 버스 및 신호 라인에 연결된다. 각 채널은 독립적으로 동작 가능하다. 따라서, 각 채널은 독립적으로 액세스 및 제어되며, 타이밍, 데이터 전송, 커맨드 및 주소 교환, 및 다른 동작들은 각 채널에 대해 별개이다. 연결은 전기적 연결, 통신적 연결, 물리적 연결, 또는 이들의 조합을 지칭할 수 있다. 물리적 연결은 직접 접촉을 포함할 수 있다. 전기적 연결은 컴포넌트들 간의 전기적 흐름을 가능하게 하거나 컴포넌트들 간의 시그널링을 가능하게 하거나 또는 둘 모두를 가능하게 하는 인터페이스 또는 인터커넥션(interconnection)을 포함한다. 통신적 연결은 컴포넌트들이 데이터를 교환할 수 있도록 하는 유선 또는 무선을 포함한 커넥션(connections)을 포함한다.
일 예에서, 각 채널에 대한 설정은 별개의 모드 레지스터 또는 다른 레지스터 설정에 의해 제어된다. 일 예에서, 각각의 메모리 컨트롤러(920)는 개별 메모리 채널을 관리하지만, 시스템(900)은 단일 컨트롤러에 의해 관리되는 다수의 채널을 갖거나 단일 채널 상에서 다수의 컨트롤러를 갖도록 구성될 수 있다. 일 예에서, 메모리 컨트롤러(920)는 동일한 다이 상에서 구현되거나 프로세서와 동일한 패키지 공간에서 구현되는 로직과 같은 호스트 프로세서(910)의 일부이다.
메모리 컨트롤러(920)는 위에서 언급된 메모리 채널과 같은 메모리 버스에 연결하기 위한 I/O 인터페이스 로직(922)을 포함한다. I/O 인터페이스 로직(922)(뿐만 아니라 메모리 디바이스(940)의 I/O 인터페이스 로직(942))은 핀, 패드, 커넥터, 신호 라인, 트레이스, 또는 와이어, 또는 디바이스들을 접속하기 위한 다른 하드웨어, 또는 이들의 조합을 포함할 수 있다. I/O 인터페이스 로직(922)은 하드웨어 인터페이스를 포함할 수 있다. 예시된 바와 같이, I/O 인터페이스 로직(922)은 신호 라인을 위한 적어도 드라이버/트랜시버를 포함한다. 통상적으로, 집적 회로 인터페이스 내의 와이어는 패드, 핀, 또는 커넥터와 연결되어, 디바이스들 간에 신호 라인이나 트레이스 또는 다른 와이어를 인터페이싱한다. I/O 인터페이스 로직(922)은 디바이스들 사이의 신호 라인 상에서 신호를 교환하는 드라이버, 수신기, 트랜시버, 또는 종단, 또는 다른 회로부 또는 회로부의 조합을 포함할 수 있다. 신호 교환은 송신 또는 수신 중 적어도 하나를 포함한다. 메모리 컨트롤러(920)로부터 메모리 디바이스(940)의 I/O(942)로 I/O(922)를 연결하는 것으로 도시되었지만, 메모리 디바이스(940)의 그룹이 병렬로 액세스되는 시스템(900)의 구현예에서, 다수의 메모리 디바이스는 메모리 컨트롤러(920)의 동일한 인터페이스로의 I/O 인터페이스를 포함할 수 있음을 이해할 것이다. 하나 이상의 메모리 모듈(970)을 포함하는 시스템(900)의 구현예에서, I/O(942)는 메모리 디바이스 자체 상의 인터페이스 하드웨어 외에도 메모리 모듈의 인터페이스 하드웨어를 포함할 수 있다. 다른 메모리 컨트롤러(920)는 다른 메모리 디바이스(940)에 대한 별도의 인터페이스를 포함할 것이다.
메모리 컨트롤러(920)와 메모리 디바이스(940) 사이의 버스는 메모리 컨트롤러(920)를 메모리 디바이스(940)에 연결하는 다수의 신호 라인으로서 구현될 수 있다. 버스는 전형적으로 적어도 클럭(CLK)(932), 커맨드/주소(CMD)(934), 기입 데이터(DQ) 및 판독 데이터(DQ)(936), 및 0 개 이상의 다른 신호 라인(938)을 포함할 수 있다. 일 예에서, 메모리 컨트롤러(920)와 메모리 사이의 버스 또는 커넥션은 메모리 버스로 지칭될 수 있다. 일 예에서, 메모리 버스는 멀티 드롭 버스이다. CMD 용 신호 라인은 "C/A 버스"(또는 ADD/CMD 버스, 또는 커맨드(C 또는 CMD) 및 주소(A 또는 ADD) 정보의 전송을 나타내는 일부 다른 지정)라고 지칭될 수 있으며, 기입 및 판독 DQ 라인 용 신호 라인은 "데이터 버스"라고 지칭될 수 있다. 일 예에서, 독립 채널들은 서로 다른 클럭 신호, C/A 버스, 데이터 버스, 및 다른 신호 라인을 갖는다. 따라서, 시스템(900)은 독립적인 인터페이스 경로가 별도의 버스로 간주될 수 있다는 점에서 다수의 "버스"를 갖는 것으로 간주될 수 있다. 명시적으로 도시된 라인 이외에도, 버스는 스트로브 시그널링 라인, 경보 라인, 보조 라인, 또는 다른 신호 라인, 또는 조합 중 적어도 하나를 포함할 수 있음을 이해할 것이다. 또한 직렬 버스 기술이 메모리 컨트롤러(920)와 메모리 디바이스(940) 사이의 연결에 사용될 수 있음을 이해할 것이다. 직렬 버스 기술의 예는 8B10B 인코과 각 방향에서 단일 차동 신호 쌍을 통해 내장 클럭으로 고속 데이터를 전송하는 것이다. 일 예에서, CMD 934는 다수의 메모리 디바이스와 병렬로 공유되는 신호 라인을 나타낸다. 일 예에서, 다수의 메모리 디바이스는 CMD 934의 인코딩 커맨드 신호 라인을 공유하고, 각각은 개별 메모리 디바이스를 선택하기 위한 별도의 칩 선택(CS_n) 신호 라인을 갖는다.
시스템(900)의 예에서, 메모리 컨트롤러(920)와 메모리 디바이스(940) 사이의 버스는 보조 커맨드 버스(CMD 934), 및 기입 및 판독 데이터(DQ 936)를 운반하는 보조 버스를 포함한다는 것을 이해할 것이다. 일 예에서, 데이터 버스는 판독 데이터 및 기입/커맨드 데이터를 위한 양방향 라인을 포함할 수 있다. 다른 예에서, 보조 버스(DQ 936)는 호스트로부터 메모리로의 기입 및 데이터 용 단방향 기입 신호 라인을 포함할 수 있고, 메모리로부터 호스트로의 판독 데이터 용 단방향 라인을 포함할 수 있다. 선택된 메모리 기술 및 시스템 디자인에 따라, 다른 신호(938)는 스트로브 라인 DQS와 같은, 버스 또는 서브 버스를 수반할 수 있다. 시스템(900)의 디자인, 또는 구현예에 기반하여, 디자인이 다수의 구현예를 지원하는 경우, 데이터 버스는 메모리 디바이스(940)에 따라 더 많거나 적은 대역폭을 가질 수 있다. 예를 들어, 데이터 버스는 x4 인터페이스, x8 인터페이스, x16 인터페이스, 또는 다른 인터페이스를 갖는 메모리 디바이스를 지원할 수 있다. 표기법 "xW"에서 W는 메모리 디바이스(940)의 인터페이스의 인터페이스 사이즈 또는 폭을 지칭하는 정수이며, 메모리 컨트롤러(920)와 데이터를 교환하기 위한 신호 라인의 수를 나타낸다. 메모리 디바이스의 인터페이스 사이즈는 시스템(900)에서 채널당 동시에 사용될 수 있거나 동일한 신호 라인에 병렬로 연결될 수 있는 메모리 디바이스의 수에 대한 제어 요인이 된다. 일 예에서, 고 대역폭 메모리 디바이스, 광폭 인터페이스 디바이스 또는 적층형 메모리 구성, 또는 조합들은 x128 인터페이스, x256 인터페이스, x512 인터페이스, x1024 인터페이스, 또는 다른 데이터 버스 인터페이스 폭과 같은 보다 광폭의 인터페이스를 가능하게 할 수 있다.
일 예에서, 메모리 디바이스(940) 및 메모리 컨트롤러(920)는 데이터 버스를 통해 데이터를, 버스트로 또는 일련의 연속 데이터 전송으로, 교환한다. 버스트는 버스 주파수와 관련된 다수의 전송 사이클에 대응한다. 일 예에서, 전송 사이클은 동일한 클럭 또는 스트로브 신호 에지(예컨대, 상승 에지에서)에서 발생하는 전송들을 위한 전체 클럭 사이클일 수 있다. 일 예에서, 시스템 클럭의 사이클을 참조하는 모든 클럭 사이클은 다수의 단위 간격(unit intervals)(UIs)으로 분리되며, 각 UI는 전송 사이클이다. 예를 들어, 더블 데이터 레이트 전송(double data rate transfers)은 클럭 신호의 모든 에지(예컨대, 상승 및 하강)에서 트리거된다. 버스트(burst)는 레지스터에 저장되거나 즉시 트리거될 수 있는 구성(configuration)일 수 있는 구성된 개수의 UI 동안 지속될 수 있다. 예를 들어, 8 개의 연속 전송 주기의 시퀀스는 버스트 길이 8 (BL8)로 간주될 수 있으며, 각 메모리 디바이스(940)는 각 UI 상에서 데이터를 전송할 수 있다. 따라서, BL8에서 동작하는 x8 메모리 디바이스는 64 비트의 데이터(8 개의 데이터 신호 라인 x 버스트를 통해 라인 당 전송되는 8 개의 데이터 비트)를 전송할 수 있다. 이 간단한 예는 단지 예시일뿐 제한이 아님을 이해할 것이다.
메모리 디바이스(940)는 시스템(900)에 대한 메모리 리소스를 나타낸다. 일 예에서, 각각의 메모리 디바이스(940)는 별도의 메모리 다이이다. 일 예에서, 각각의 메모리 디바이스(940)는 디바이스 또는 다이에 따라 다수(예컨대, 2)의 채널과 인터페이싱할 수 있다. 각각의 메모리 디바이스(940)는 디바이스의 구현예에 의해 결정되는 대역폭(예컨대, x16 또는 x8 또는 일부 다른 인터페이스 대역폭)을 갖는 I/O 인터페이스 로직(942)을 포함한다. I/O 인터페이스 로직(942)은 메모리 디바이스가 메모리 컨트롤러(920)와 인터페이싱할 수 있게 한다. I/O 인터페이스 로직(942)은 하드웨어 인터페이스를 포함할 수 있고, 메모리 컨트롤러의 I/O(922)에 따를 수 있지만 메모리 디바이스 단에 있을 수 있다. 일 예에서, 다수의 메모리 디바이스(940)는 동일한 커맨드 및 데이터 버스에 병렬로 접속된다. 다른 예에서, 다수의 메모리 디바이스(940)는 동일한 커맨드 버스에 병렬로 접속되고, 상이한 데이터 버스들에 접속된다. 예를 들어, 시스템(900)은 병렬로 연결된 다수의 메모리 디바이스(940)로 구성될 수 있으며, 각각의 메모리 디바이스는 커맨드에 응답하고, 각각의 내부의 메모리 리소스(960)에 액세스한다. 기입 동작의 경우, 개별 메모리 디바이스(940)는 전체 데이터 워드의 일부를 기입할 수 있고, 판독 동작의 경우, 개별 메모리 디바이스(940)는 전체 데이터 워드의 일부를 인출(fetch)할 수 있다. 워드의 나머지 비트는 병렬의 다른 메모리 디바이스들에 의해 제공되거나 수신될 것이다.
일 예에서, 메모리 디바이스(940)는 컴퓨팅 디바이스의 마더보드 또는 호스트 시스템 플랫폼(예컨대, 프로세서(910)가 배치되는 인쇄 회로 보드(PCB))에 직접 배치된다. 일 예에서, 메모리 디바이스(940)는 메모리 모듈(970)로 구성될 수 있다. 일 예에서, 메모리 모듈(970)은 듀얼 인라인 메모리 모듈(dual inline memory modules)(DIMM)을 나타낸다. 일 예에서, 메모리 모듈(970)은 액세스 또는 제어 회로부의 적어도 일부를 공유하는 다른 구성의 다수의 메모리 디바이스를 나타내며, 이러한 회로부는 호스트 시스템 플랫폼으로부터 분리된 회로, 분리된 디바이스, 또는 분리된 보드일 수 있다. 메모리 모듈(970)은 다수의 메모리 디바이스(940)를 포함할 수 있고, 메모리 모듈은 그 자체 상에 배치된 포함된 메모리 디바이스에 대한 다수의 개별 채널들에 대한 지원부를 포함할 수 있다. 다른 예에서, 메모리 디바이스(940)는, 예를 들어, 다중 칩 모듈(multi-chip-module)(MCM), 패키지 온 패키지(package-on-package), 실리콘 관통 비아(through-silicon via)(TSV), 또는 다른 기술 또는 조합들과 같은 기술에 의해, 메모리 컨트롤러(920)와 동일한 패키지 내에 통합될 수 있다. 유사하게, 일 예에서, 다수의 메모리 디바이스(940)는 메모리 모듈(970) 내에 통합될 수 있으며, 이 메모리 모듈 자체는 메모리 컨트롤러(920)와 동일한 패키지 내에 통합될 수 있다. 이들 및 다른 구현예들을 위해, 메모리 컨트롤러(920)는 호스트 프로세서(910)의 일부일 수 있다는 것이 이해될 것이다.
메모리 디바이스(940)는 각각 하나 이상의 메모리 어레이(960)를 포함한다. 메모리 어레이(960)는 데이터를 위한 주소 지정 가능한 메모리 위치 또는 저장 위치를 나타낸다. 전형적으로, 메모리 어레이(960)는 데이터 행으로서 관리되며, 워드라인(행) 및 비트라인(행 내의 개별 비트들) 제어를 통해 액세스된다. 메모리 어레이(960)는 메모리의 개별 채널들, 랭크들, 및 뱅크들로서 구성될 수 있다. 채널들은 메모리 디바이스(940) 내의 저장 위치들에 대한 독립 제어 경로들을 지칭할 수 있다. 랭크들은 병렬의 다수의 메모리 디바이스에 걸친 공통 위치들(예컨대, 다른 디바이스들 내의 동일한 행 주소들)을 지칭할 수 있다. 뱅크들은 메모리 디바이스(940) 내의 메모리 위치들의 서브 어레이들을 지칭할 수 있다. 일 예에서, 메모리 뱅크들은 서브 뱅크들에 대한 공유 회로부의 적어도 일부(예컨대, 드라이버, 신호 라인, 제어 로직)를 갖는 서브 뱅크들로 분할되어 개별 어드레싱 및 액세스를 가능하게 한다. 메모리 위치들의 채널들, 랭크들, 뱅크들, 서브 뱅크들, 뱅크 그룹들, 또는 다른 조직들, 및 이들 조직의 조합들은 물리적 리소스에 대한 그들의 적용에서 겹칠 수 있음을 이해할 것이다. 예를 들어, 동일한 물리적 메모리 위치들은 랭크에 또한 속할 수도 있는 특정 뱅크로서의 특정 채널을 통해 액세스될 수 있다. 따라서, 메모리 리소스들의 조직은 배타적이 아닌 포괄적인 방식으로 이해될 것이다.
일 예에서, 메모리 디바이스(940)는 하나 이상의 레지스터(944)를 포함한다. 레지스터(944)는 메모리 디바이스의 동작을 위한 구성 또는 설정을 제공하는 하나 이상의 저장 디바이스 또는 저장 위치를 나타낸다. 일 예에서, 레지스터(944)는 메모리 디바이스(940)가 제어 또는 관리 동작의 일부로서 메모리 컨트롤러(920)에 의한 액세스를 위한 데이터를 저장하기 위한 저장 위치를 제공할 수 있다. 일 예에서, 레지스터(944)는 하나 이상의 모드 레지스터를 포함한다. 일 예에서, 레지스터(944)는 하나 이상의 다목적 레지스터를 포함한다. 레지스터(944) 내의 위치들의 구성은 상이한 "모드들"에서 동작하도록 메모리 디바이스(940)를 구성할 수 있으며, 여기서 커맨드 정보는 모드에 기반하여 메모리 디바이스(940) 내의 상이한 동작들을 트리거할 수 있다. 추가적으로 또는 대안적으로, 상이한 모드들은 또한 모드에 따라 주소 정보 또는 다른 신호 라인으로부터의 상이한 동작들을 트리거할 수 있다. 레지스터(944)의 설정은 I/O 설정(예컨대, 타이밍, 종단(termination) 또는 온 다이 종단(on-die termination)(ODT)(946), 드라이버 구성, 또는 다른 I/O 설정)에 대한 구성을 나타낼 수 있다.
일 예에서, 메모리 디바이스(940)는 I/O(942)와 연관된 인터페이스 하드웨어의 일부로서의 ODT(946)를 포함한다. ODT(946)는 위에서 언급한 대로 구성될 수 있으며, 지정된 신호 라인에 대한 인터페이스에 적용될 임피던스에 대한 설정을 제공한다. 일 예에서, ODT(946)는 DQ 신호 라인에 적용된다. 일 예에서, ODT(946)는 커맨드 신호 라인에 적용된다. 일 예에서, ODT(946)는 주소 신호 라인에 적용된다. 일 예에서, ODT(946)는 이전의 임의의 조합에 적용될 수 있다. ODT 설정은 메모리 디바이스가 액세스 동작의 선택된 타겟인지 타겟이 아닌 디바이스인지에 따라 변경될 수 있다. ODT(946) 설정은 종단된 라인에 시그널링의 타이밍과 반사의 영향을 미칠 수 있다. ODT(946)를 세심하게 제어하면, 적용된 임피던스 및 부하의 개선된 매칭과 함께 고속 동작이 가능할 수 있다. ODT(946)는 I/O 인터페이스(942, 922)의 특정 신호 라인에 적용될 수 있고(예를 들어, DQ 라인에 대해서는 ODT 또는 CA 라인에 대해서는 ODT), 반드시 모든 신호 라인에 적용되는 것은 아니다.
메모리 디바이스(940)는 메모리 디바이스 내의 내부 동작을 제어하기 위한 메모리 디바이스 내의 제어 로직을 나타내는 컨트롤러(950)를 포함한다. 예를 들어, 컨트롤러(950)는 메모리 컨트롤러(920)에 의해 전송된 커맨드를 디코딩하고, 커맨드를 실행하거나 충족시키는 내부 동작(internal operations)을 생성한다. 컨트롤러(950)는 내부 컨트롤러로 지칭될 수 있으며, 호스트의 메모리 컨트롤러(920)와는 별개이다. 컨트롤러(950)는 레지스터(944)에 기반하여 어떤 모드가 선택되는지를 결정할 수 있고, 선택된 모드에 기반하여 메모리 리소스(960)에 액세스하기 위한 내부 실행 동작 또는 다른 동작을 구성할 수 있다. 컨트롤러(950)는 메모리 디바이스(940) 내의 비트의 라우팅을 제어하는 제어 신호를 생성하여, 선택된 모드에 대한 적절한 인터페이스를 제공하고, 적절한 메모리 위치 또는 주소로 커맨드를 보낸다. 컨트롤러(950)는 커맨드 및 주소 신호 라인 상에서 수신된 커맨드 인코딩을 디코딩할 수 있는 커맨드 로직(952)을 포함한다. 따라서, 커맨드 로직(952)은 커맨드 디코더일 수 있거나 이를 포함할 수 있다. 커맨드 로직(952)을 통해, 메모리 디바이스는 커맨드를 식별할 수 있고, 요청된 커맨드를 실행하는 내부 동작을 생성할 수 있다.
다시 메모리 컨트롤러(920)를 참조하면, 메모리 컨트롤러(920)는 커맨드(CMD) 로직(924)을 포함하는데, 이는 메모리 디바이스(940)로 전송할 커맨드를 생성하기 위한 로직 또는 회로부를 나타낸다. 커맨드의 생성은 스케줄링 이전에 커맨드를 참조하거나 전송될 준비가 된 큐잉된 커맨드(queued commands)의 준비를 참조할 수 있다. 일반적으로, 메모리 서브 시스템에서의 시그널링은 메모리 디바이스가 커맨드를 실행해야 하는 하나 이상의 메모리 위치를 표시하거나 선택하기 위해 커맨드 내부의 또는 커맨드에 수반되는 주소 정보를 포함한다. 메모리 디바이스(940)에 대한 트랜잭션의 스케줄링에 응답하여, 메모리 컨트롤러(920)는 I/O(922)를 통해 커맨드를 발행하여 메모리 디바이스(940)가 커맨드를 실행하게 할 수 있다. 일 예에서, 메모리 디바이스(940)의 컨트롤러(950)는 메모리 컨트롤러(920)로부터 I/O(942)를 통해 수신된 커맨드 및 주소 정보를 수신하고 디코딩한다. 수신된 커맨드 및 주소 정보에 기반하여, 컨트롤러(950)는 메모리 디바이스(940) 내의 로직 및 회로부의 동작의 타이밍을 제어하여 커맨드를 실행할 수 있다. 컨트롤러(950)는 타이밍 및 시그널링 요구 사항과 같은 메모리 디바이스(940) 내의 표준 또는 사양의 준수를 담당한다. 메모리 컨트롤러(920)는 액세스 스케줄링 및 제어에 의해 표준 또는 사양의 준수를 구현할 수 있다.
메모리 컨트롤러(920)는 메모리 디바이스(940)에 전송할 트랜잭션을 생성하고 순서화하기 위한 로직 또는 회로부를 나타내는 스케줄러(930)를 포함한다. 하나의 관점에서, 메모리 컨트롤러(920)의 주요 기능은 메모리 디바이스(940)에 대한 메모리 액세스 및 다른 트랜잭션을 스케줄링하는 것으로 언급될 수 있다. 그러한 스케줄링은 프로세서(910)에 의한 데이터에 대한 요청을 구현하고 (예컨대, 리프레시와 관련된 커맨드로) 데이터의 무결성을 유지하기 위해 트랜잭션 자체를 생성하는 것을 포함할 수 있다. 트랜잭션은 하나 이상의 커맨드를 포함할 수 있으며, 클럭 사이클 또는 단위 간격과 같은 하나 또는 다수의 타이밍 사이클에 걸쳐 커맨드 또는 데이터 또는 둘 모두의 전송을 유발할 수 있다. 트랜잭션은 판독 또는 기입 또는 관련 커맨드 또는 조합과 같은 액세스를 위한 것일 수 있으며, 다른 트랜잭션은 구성, 설정, 데이터 무결성, 또는 다른 커맨드 또는 조합을 위한 메모리 관리 커맨드를 포함할 수 있다.
메모리 컨트롤러(920)는 전형적으로 시스템(900)의 성능을 개선하기 위해 트랜잭션의 선택 및 순서화를 가능하게 하는 스케줄러(930)와 같은 로직을 포함한다. 따라서, 메모리 컨트롤러(920)는 미결 트랜잭션들 중 어느 것이 메모리 디바이스(940)로 전송되어야하는지를 선택할 수 있으며, 그러한 순서는 일반적으로 단순한 선입 선출 알고리즘보다 훨씬 더 복잡한 로직으로 달성된다. 메모리 컨트롤러(920)는 메모리 디바이스(940)로의 트랜잭션의 전송을 관리하고, 트랜잭션과 연관된 타이밍을 관리한다. 일 예에서, 트랜잭션은, 메모리 컨트롤러(920)에 의해 관리될 수 있고 스케줄러(930)로 트랜잭션을 스케줄링하는 방법을 결정하는 데 사용될 수 있는 결정론적 타이밍(deterministic timing)을 갖는다.
일 예에서, 메모리 컨트롤러(920)는 리프레시(refresh)(REF) 로직(926)을 포함한다. 리프레시 로직(926)은, 휘발성이고 결정론적 상태를 유지하기 위해 리프레시되어야 하는 메모리 리소스를 위해 사용될 수 있다. 일 예에서, 리프레시 로직(926)은 수행할 리프레시의 위치 및 리프레시의 타입을 표시한다. 리프레시 로직(926)은 리프레시 커맨드 또는 조합을 전송함으로써 메모리 디바이스(940) 내에서 셀프 리프레시(self-refresh)를 트리거하거나 오토 리프레시 커맨드(auto refresh commands)로 지칭될 수 있는 외부 리프레시를 실행할 수 있다. 일 예에서, 메모리 디바이스(940) 내의 컨트롤러(950)는 메모리 디바이스(940) 내에 리프레시를 적용하기 위한 리프레시 로직(954)을 포함한다. 일 예에서, 리프레시 로직(954)은 메모리 컨트롤러(920)로부터 수신된 외부 리프레시에 따라 리프레시를 수행하기 위한 내부 동작을 생성한다. 리프레시 로직(954)은 메모리 디바이스(940)에 리프레시가 보내지는지 여부를 결정할 수 있고, 커맨드에 응답하여 어떠한 메모리 리소스(960)를 리프레시할 것인지를 결정할 수 있다.
도 10은 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 컴퓨팅 시스템의 일 예의 블럭 다이어그램이다. 시스템(1000)은 본원의 임의의 예에 따른 컴퓨팅 디바이스를 나타내며, 이는 랩탑 컴퓨터, 데스크탑 컴퓨터, 태블릿 컴퓨터, 서버, 게이밍 또는 엔터테인먼트 제어 시스템, 임베디드 컴퓨팅 디바이스, 또는 다른 전자 디바이스일 수 있다. 시스템(1000)은 시스템(100)이 통합될 수 있는 시스템의 일 예를 제공한다.
일 예에서, 메모리(1030)는 행 에러 정정 데이터 및 열 에러 정정 데이터를 갖는 메모리 어레이를 포함한다. 일 예에서, 메모리(1030)는 컨트롤(1092)로 지칭되는 행 및 열 ECC 컨트롤(1092)을 포함한다. 컨트롤(1092)은 본원에 설명된 임의의 예에 따라 행 에러 정정 데이터 및 열 에러 정정 데이터를 유지할 수 있다. 일 예에서, 메모리 디바이스(1030)는 본원의 임의의 설명에 따라 열 ECC 캐시 또는 행 기입 캐시일 수 있는 캐시(구체적으로 도시되지 않음)를 포함한다. 컨트롤(1092)은, 예를 들어, 열 ECC 캐시 접근법, 행 기입 캐시 접근법, 또는 열 ECC 업데이트 접근법을 사용하여 2 개의 공간 차원에서 에러 정정을 유지하기 위한 메모리 디바이스(1030) 내의 컨트롤을 나타낸다. 일 예에서, 컨트롤(1092)은 메모리 디바이스(1030) 내에 있는 대신 메모리 컨트롤러(1022) 내에 있을 수 있다.
일 예에서, 스토리지(1084)는 행 에러 정정 데이터 및 열 에러 정정 데이터를 갖는 메모리 어레이를 포함한다. 일 예에서, 스토리지(1084)는 컨트롤(1094)로 지칭되는 행 및 열 ECC 컨트롤(1094)을 포함한다. 컨트롤(1094)은 본원에 설명된 임의의 예에 따라 행 에러 정정 데이터 및 열 에러 정정 데이터를 유지할 수 있다. 일 예에서, 스토리지(1084)는 본원의 임의의 설명에 따라 열 ECC 캐시 또는 행 기입 캐시일 수 있는 캐시(구체적으로 도시되지 않음)를 포함한다. 컨트롤(1094)은, 예를 들어, 열 ECC 캐시 접근법, 행 기입 캐시 접근법, 또는 열 ECC 업데이트 접근법을 사용하여 2 개의 공간 차원에서 에러 정정을 유지하기 위한 스토리지(1084) 내의 컨트롤을 나타낸다. 일 예에서, 컨트롤(1094)은 스토리지(1084) 내에 있는 대신 메모리 컨트롤러(1022) 내에 있을 수 있다.
시스템(1000)은 프로세서(1010)를 포함하며, 프로세서(1010)는 시스템(1000)에 대한 인스트럭션의 처리 또는 실행을 제공하기 위해, 임의의 타입의 마이크로프로세서, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 처리 코어, 또는 다른 처리 하드웨어, 또는 조합을 포함할 수 있다. 프로세서(1010)는 호스트 프로세서 디바이스일 수 있다. 프로세서(1010)는 시스템(1000)의 전체 동작을 제어하며, 하나 이상의 프로그래머블 범용 또는 특수 목적 마이크로프로세서, 디지털 신호 프로세서(DSPs), 프로그래머블 컨트롤러, 주문형 집적 회로(ASICs), 프로그래머블 로직 디바이스(PLDs), 또는 이들 디바이스의 조합일 수 있거나 이를 포함할 수 있다.
일 예에서, 시스템(1000)은 프로세서(1010)에 연결된 인터페이스(1012)를 포함하며, 이 인터페이스(1012)는 메모리 서브 시스템(1020) 또는 그래픽 인터페이스 컴포넌트(1040)와 같은 보다 높은 대역폭 커넥션을 필요로 하는 시스템 컴포넌트에 대한 고속 인터페이스 또는 높은 처리량 인터페이스를 나타낼 수 있다. 인터페이스(1012)는, 독립형 컴포넌트일 수 있거나 프로세서 다이 상에 통합될 수 있는 인터페이스 회로를 나타낸다. 인터페이스(1012)는 프로세서 다이 상에 회로로서 통합될 수 있거나 또는 시스템 온 칩(system on a chip) 상에 컴포넌트로서 통합될 수 있다. 존재하는 경우, 그래픽 인터페이스(1040)는 시스템(1000)의 사용자에게 시각적 디스플레이를 제공하기 위한 그래픽 컴포넌트에 인터페이싱한다. 그래픽 인터페이스(1040)는 독립형 컴포넌트일 수 있거나 프로세서 다이 또는 시스템 온 칩 상에 통합될 수 있다. 일 예에서, 그래픽 인터페이스(1040)는 사용자에게 출력을 제공하는 고선명(HD) 디스플레이 또는 초 고선명(UHD) 디스플레이를 구동할 수 있다. 일 예에서, 디스플레이는 터치스크린 디스플레이를 포함할 수 있다. 일 예에서, 그래픽 인터페이스(1040)는 메모리(1030)에 저장된 데이터에 기반하거나 프로세서(1010)에 의해 실행되는 동작에 기반하거나 또는 둘 모두에 기반하여 디스플레이를 생성한다.
메모리 서브 시스템(1020)은 시스템(1000)의 메인 메모리를 나타내며, 프로세서(1010)에 의해 실행될 코드 또는 루틴을 실행하는 데 사용될 데이터 값을 위한 스토리지를 제공한다. 메모리 서브 시스템(1020)은 하나 이상의 메모리 디바이스(1030), 예를 들어, 판독 전용 메모리(ROM), 플래시 메모리, 하나 이상의 다양한 랜덤 액세스 메모리(RAM), 예를 들어, DRAM, 3 차원 크로스포인트(3DXP), 또는 다른 메모리 디바이스, 또는 이들 디바이스의 조합을 포함할 수 있다. 메모리(1030)는, 특히, 시스템(1000)에서 인스트럭션의 실행을 위한 소프트웨어 플랫폼을 제공하기 위한 운영 체제(OS)(1032)를 저장하고 호스팅한다. 추가적으로, 애플리케이션(1034)은 메모리(1030)로부터의 OS(1032)의 소프트웨어 플랫폼 상에서 실행될 수 있다. 애플리케이션(1034)은 하나 이상의 기능의 실행을 수행하기 위한 자체 동작 로직을 갖는 프로그램을 나타낸다. 프로세스(1036)는 OS(1032) 또는 하나 이상의 애플리케이션(1034) 또는 조합에 보조 기능을 제공하는 에이전트 또는 루틴을 나타낸다. OS(1032), 애플리케이션(1034), 및 프로세스(1036)는 시스템(1000)에 대한 기능을 제공하는 소프트웨어 로직을 제공한다. 일 예에서, 메모리 서브 시스템(1020)은 메모리 컨트롤러(1022)를 포함하며, 이 메모리 컨트롤러(1022)는 메모리(1030)에 커맨드를 생성하고 발행하기 위한 메모리 컨트롤러이다. 메모리 컨트롤러(1022)는 프로세서(1010)의 물리적 부분 또는 인터페이스(1012)의 물리적 부분일 수 있음을 이해할 것이다. 예를 들어, 메모리 컨트롤러(1022)는 프로세서(1010)를 갖는 회로에 통합되는, 예를 들어, 프로세서 다이 또는 시스템 온 칩 상에 통합되는 통합 메모리 컨트롤러일 수 있다.
구체적으로 도시되지는 않았지만, 시스템(1000)은 디바이스들 사이의 하나 이상의 버스 또는 버스 시스템, 예를 들어, 메모리 버스, 그래픽 버스, 또는 인터페이스 버스 등을 포함할 수 있다는 것을 이해할 것이다. 버스 또는 다른 신호 라인은 컴포넌트들을 함께 통신적으로 또는 전기적으로 연결하거나 컴포넌트들을 통신적으로 및 전기적으로 연결할 수 있다. 버스는 물리적 통신 라인, 포인트 투 포인트 커넥션(point-to-point connections), 브리지, 어댑터, 컨트롤러, 또는 다른 회로부 또는 조합을 포함할 수 있다. 버스는, 예를 들어, 시스템 버스, 주변 컴포넌트 인터커넥트(Peripheral Component Interconnect)(PCI) 버스, 하이퍼트랜스포트(HyperTransport) 또는 산업 표준 아키텍처(industry standard architecture)(ISA) 버스, 소형 컴퓨터 시스템 인터페이스(small computer system interface)(SCSI) 버스, 범용 직렬 버스(USB), 또는 다른 버스, 또는 조합 중 하나 이상을 포함할 수 있다.
일 예에서, 시스템(1000)은 인터페이스(1012)에 연결될 수 있는 인터페이스(1014)를 포함한다. 인터페이스(1014)는 인터페이스(1012)보다 저속 인터페이스일 수 있다. 일 예에서, 인터페이스(1014)는 독립형 컴포넌트 및 통합 회로부를 포함할 수 있는 인터페이스 회로를 나타낸다. 일 예에서, 다수의 사용자 인터페이스 컴포넌트 또는 주변 컴포넌트 또는 둘 모두는 인터페이스(1014)에 연결된다. 네트워크 인터페이스(1050)는 하나 이상의 네트워크를 통해 원격 디바이스(예컨대, 서버 또는 다른 컴퓨팅 디바이스)와 통신하는 능력을 시스템(1000)에 제공한다. 네트워크 인터페이스(1050)는 이더넷 어댑터, 무선 상호 접속 컴포넌트, 셀룰러 네트워크 상호 접속 컴포넌트, USB, 또는 다른 유선 또는 무선 표준 기반 또는 전용 인터페이스를 포함할 수 있다. 네트워크 인터페이스(1050)는 원격 디바이스와 데이터를 교환할 수 있고, 이는 메모리에 저장된 데이터를 전송하거나 메모리에 저장될 데이터를 수신하는 것을 포함할 수 있다.
일 예에서, 시스템(1000)은 하나 이상의 입력/출력(I/O) 인터페이스(들)(1060)를 포함한다. I/O 인터페이스(1060)는 사용자가 시스템(1000)과 상호 작용하는 하나 이상의 인터페이스 컴포넌트(예컨대, 오디오, 영숫자, 촉각/터치, 또는 다른 인터페이싱)를 포함할 수 있다. 주변 인터페이스(1070)는 위에서 구체적으로 언급되지 않은 임의의 하드웨어 인터페이스를 포함할 수 있다. 주변 디바이스는 일반적으로 시스템(1000)에 종속적으로 접속되는 디바이스를 지칭한다. 종속적인 접속은, 시스템(1000)이 동작이 실행되고 사용자가 상호 작용하는 소프트웨어 플랫폼 또는 하드웨어 플랫폼 또는 이들 모두를 제공하는 접속이다.
일 예에서, 시스템(1000)은 비 휘발성 방식으로 데이터를 저장하기 위한 저장 서브 시스템(1080)을 포함한다. 일 예에서, 특정 시스템 구현예에서, 저장 서브 시스템(1080)의 적어도 특정 컴포넌트는 메모리 서브 시스템(1020)의 컴포넌트와 중첩될 수 있다. 저장 서브 시스템(1080)은 하나 이상의 자기, 솔리드 스테이트, 3DXP, 또는 광학 기반 디스크, 또는 조합과 같은, 비 휘발성 방식으로 대량의 데이터를 저장하기 위한 임의의 통상적인 매체이거나 이를 포함할 수 있는 스토리지 디바이스(들)(1084)를 포함한다. 스토리지(1084)는 코드 또는 인스트럭션 및 데이터(1086)를 지속적인 상태로 유지한다(즉, 값은 시스템(1000)에 대한 전력이 중단됨에도 불구하고 유지된다). 스토리지(1084)는 일반적으로 "메모리"로 간주될 수 있지만, 메모리(1030)는 전형적으로 프로세서(1010)에 인스트럭션을 제공하기 위한 실행 또는 동작 메모리이다. 스토리지(1084)는 비 휘발성인 반면, 메모리(1030)는 휘발성 메모리(즉, 데이터의 값 또는 상태는 시스템(1000)에 전력이 중단되는 경우 불확실하게 됨)를 포함할 수 있다. 일 예에서, 저장 서브 시스템(1080)은 스토리지(1084)와 인터페이싱하기 위한 컨트롤러(1082)를 포함한다. 일 예에서, 컨트롤러(1082)는 인터페이스(1014) 또는 프로세서(1010)의 물리적 부분이거나, 프로세서(1010) 및 인터페이스(1014) 모두의 회로 또는 로직을 포함할 수 있다.
전력 소스(1002)는 시스템(1000)의 컴포넌트에 전력을 제공한다. 보다 구체적으로, 전력 소스(1002)는 전형적으로 시스템(1000) 내의 하나 또는 다수의 전력 공급 장치(1004)에 인터페이싱하여 시스템(1000)의 컴포넌트에 전력을 제공한다. 일 예에서, 전원 공급 장치(1004)는 벽 콘센트에 플러그인하기 위한 교류-직류(AC-DC) 어댑터를 포함한다. 이러한 AC 전력은 재생 가능한 에너지(예컨대, 태양 전력) 전력 소스(1002)일 수 있다. 일 예에서, 전력 소스(1002)는 외부 AC-DC 변환기와 같은 DC 전력 소스를 포함한다. 일 예에서, 전력 소스(1002) 또는 전력 공급 장치(1004)는 충전 필드에 대한 근접성을 통해 충전하기 위한 무선 충전 하드웨어를 포함한다. 일 예에서, 전력 소스(1002)는 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
도 11은 동적 데이터에 대해 행 에러 정정 및 열 에러 정정을 사용하는 메모리 디바이스가 구현될 수 있는 모바일 디바이스의 일 예의 블럭 다이어그램이다. 시스템(1100)은 컴퓨팅 태블릿, 모바일폰 또는 스마트폰, 웨어러블 컴퓨팅 디바이스, 또는 다른 모바일 디바이스, 또는 임베디드 컴퓨팅 디바이스와 같은 모바일 컴퓨팅 디바이스를 나타낸다. 시스템(1100) 내에 특정 컴포넌트가 일반적으로 도시되고, 그러한 디바이스의 모든 컴포넌트가 도시되지는 않음을 이해할 것이다. 시스템(1100)은 시스템(100)이 통합될 수 있는 시스템의 일 예를 제공한다.
일 예에서, 메모리(1162)는 비 휘발성 메모리 디바이스이다. 일 예에서, 메모리(1162)는 휘발성 메모리 디바이스이다. 메모리(1162)는 행 에러 정정 데이터 및 열 에러 정정 데이터를 갖는 메모리 어레이를 포함한다. 일 예에서, 메모리(1162)는 컨트롤(1190)로 지칭되는 행 및 열 ECC 컨트롤(1190)을 포함한다. 컨트롤(1190)은 본원에 설명된 임의의 예에 따라 행 에러 정정 데이터 및 열 에러 정정 데이터를 유지할 수 있다. 일 예에서, 메모리(1162)는 본원의 임의의 설명에 따라 열 ECC 캐시 또는 행 기입 캐시일 수 있는 캐시(구체적으로 도시되지 않음)를 포함한다. 컨트롤(1190)은, 예를 들어, 열 ECC 캐시 접근법, 행 기입 캐시 접근법, 또는 열 ECC 업데이트 접근법을 사용하여 2 개의 공간 차원에서 에러 정정을 유지하기 위한 메모리(1162) 내의 컨트롤을 나타낸다. 일 예에서, 컨트롤(1190)은 메모리(1162) 내에 있는 대신 메모리 컨트롤러(1164) 내에 있을 수 있다.
시스템(1100)은 시스템(1100)의 주요 처리 동작을 수행하는 프로세서(1110)를 포함한다. 프로세서(1110)는 호스트 프로세서 디바이스일 수 있다. 프로세서(1110)는 하나 이상의 물리적 디바이스, 예를 들어, 마이크로프로세서, 애플리케이션 프로세서, 마이크로컨트롤러, 프로그래머블 로직 디바이스, 또는 다른 처리 수단을 포함할 수 있다. 프로세서(1110)에 의해 수행되는 처리 동작은 애플리케이션 및 디바이스 기능이 실행되는 운영 플랫폼 또는 운영 체제의 실행을 포함한다. 처리 동작은 인간 사용자 또는 다른 디바이스와의 입력/출력(I/O)에 관련된 동작, 전력 관리에 관련된 동작, 시스템(1100)을 다른 디바이스에 연결하는 것에 관련된 동작, 또는 조합을 포함한다. 처리 동작은 또한 오디오 I/O, 디스플레이 I/O, 또는 다른 인터페이싱에 관련된 동작, 또는 조합을 포함할 수 있다. 프로세서(1110)는 메모리에 저장된 데이터를 실행할 수 있다. 프로세서(1110)는 메모리에 저장된 데이터를 기입하거나 편집할 수 있다.
일 예에서, 시스템(1100)은 하나 이상의 센서(1112)를 포함한다. 센서(1112)는 임베디드 센서, 또는 외부 센서에 대한 인터페이스, 또는 조합을 나타낸다. 센서(1112)는 시스템(1100)이 시스템(1100)이 구현되는 환경 또는 디바이스의 하나 이상의 상황을 모니터링하거나 검출할 수 있게 한다. 센서(1112)는 환경 센서(예를 들어, 온도 센서, 모션 검출기, 광 검출기, 카메라, 화학 센서(예컨대, 일산화탄소, 이산화탄소, 또는 다른 화학 센서)), 압력 센서, 가속도계, 자이로스코프, 의료 또는 생리학 센서(예컨대, 바이오 센서, 심박수 모니터, 또는 생리적 속성을 검출하는 다른 센서), 다른 센서, 또는 조합을 포함할 수 있다. 센서(1112)는 또한 생체 인식 시스템, 예를 들어, 지문 인식 시스템, 안면 검출 또는 인식 시스템, 또는 사용자 특징을 검출 또는 인식하는 다른 시스템 용 센서를 포함할 수 있다. 센서(1112)는 광범위하게 이해되어야 하며, 시스템(1100) 내에 구현될 수 있는 다양한 타입의 센서에 제한되지 않아야 한다. 일 예에서, 하나 이상의 센서(1112)는 프로세서(1110)와 통합된 프런트 엔드 회로를 통해 프로세서(1110)에 연결된다. 일 예에서, 하나 이상의 센서(1112)는 시스템(1100)의 다른 컴포넌트를 통해 프로세서(1110)에 연결된다.
일 예에서, 시스템(1100)은 컴퓨팅 디바이스에 오디오 기능을 제공하는 것과 연관된 하드웨어(예컨대, 오디오 하드웨어 및 오디오 회로) 및 소프트웨어(예컨대, 드라이버, 코덱) 컴포넌트들을 나타내는 오디오 서브 시스템(1120)을 포함한다. 오디오 기능은 스피커 또는 헤드폰 출력과 마이크로폰 입력을 포함할 수 있다. 이러한 기능을 위한 디바이스는 시스템(1100)에 통합될 수 있거나 시스템(1100)에 접속될 수 있다. 일 예에서, 사용자는 프로세서(1110)에 의해 수신되고 처리되는 오디오 커맨드를 제공함으로써 시스템(1100)과 상호 작용한다.
디스플레이 서브 시스템(1130)은 사용자에게 프리젠테이션을 위한 시각적 디스플레이를 제공하는 하드웨어(예컨대, 디스플레이 디바이스) 및 소프트웨어 컴포넌트(예컨대, 드라이버)를 나타낸다. 일 예에서, 디스플레이는 사용자가 컴퓨팅 디바이스와 상호 작용하기 위한 촉각 컴포넌트 또는 터치스크린 요소를 포함한다. 디스플레이 서브 시스템(1130)은 사용자에게 디스플레이를 제공하는 데 사용되는 특정 스크린 또는 하드웨어 디바이스를 포함하는 디스플레이 인터페이스(1132)를 포함한다. 일 예에서, 디스플레이 인터페이스(1132)는 디스플레이와 관련된 적어도 일부의 처리를 수행하기 위해 프로세서(1110)(예를 들어, 그래픽 프로세서)와는 별개인 로직을 포함한다. 일 예에서, 디스플레이 서브 시스템(1130)은 사용자에게 출력 및 입력을 모두 제공하는 터치스크린 디바이스를 포함한다. 일 예에서, 디스플레이 서브 시스템(1130)은 사용자에게 출력을 제공하는 고선명(HD) 또는 초 고선명(UHD) 디스플레이를 포함한다. 일 예에서, 디스플레이 서브 시스템은 터치스크린 디스플레이를 포함하거나 구동한다. 일 예에서, 디스플레이 서브 시스템(1130)은 메모리에 저장된 데이터에 기반하거나 프로세서(1110)에 의해 실행되는 동작에 기반하거나 또는 둘 모두에 기반하여 디스플레이 정보를 생성한다.
I/O 컨트롤러(1140)는 사용자와의 상호 작용과 관련된 하드웨어 디바이스 및 소프트웨어 컴포넌트를 나타낸다. I/O 컨트롤러(1140)는 오디오 서브 시스템(1120), 디스플레이 서브 시스템(1130), 또는 둘 모두의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가적으로, I/O 컨트롤러(1140)는 사용자가 시스템(1100)과 상호 작용할 수도 있는 시스템(1100)에 연결되는 추가 디바이스에 대한 커넥션 포인트를 예시하고 있다. 예를 들어, 시스템(1100)에 부착될 수 있는 디바이스는 카드 판독기 또는 다른 디바이스와 같은 특정 애플리케이션과 함께 사용하기 위한 마이크로폰 디바이스, 스피커 또는 스테레오 시스템, 비디오 시스템 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스, 버튼/스위치, 또는 다른 I/O 디바이스를 포함할 수도 있다.
전술한 바와 같이, I/O 컨트롤러(1140)는 오디오 서브 시스템(1120) 또는 디스플레이 서브 시스템(1130) 또는 둘 모두와 상호 작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 시스템(1100)의 하나 이상의 애플리케이션 또는 기능을 위한 입력 또는 커맨드를 제공할 수 있다. 추가적으로, 디스플레이 출력 대신에 또는 이에 추가적으로 오디오 출력이 제공될 수 있다. 다른 예에서, 디스플레이 서브 시스템이 터치스크린을 포함하는 경우, 디스플레이 디바이스는 또한 I/O 컨트롤러(1140)에 의해 적어도 부분적으로 관리될 수 있는 입력 디바이스로서 역할을 한다. 시스템(1100) 상에는 또한 I/O 컨트롤러(1140)에 의해 관리되는 I/O 기능을 제공하기 위한 추가 버튼 또는 스위치가 있을 수도 있다.
일 예에서, I/O 컨트롤러(1140)는 디바이스들, 예를 들어, 가속도계, 카메라, 광 센서 또는 다른 환경 센서, 자이로스코프, 글로벌 포지셔닝 시스템(global positioning system)(GPS), 또는 시스템(1100)에 포함될 수 있는 다른 하드웨어, 또는 센서(1112)를 관리한다. 입력은 직접적인 사용자 상호 작용의 일부가 될 수 있을 뿐만 아니라 시스템에 환경 입력을 제공하여 그 동작(예컨대, 노이즈 필터링, 밝기 검출을 위한 디스플레이 조정, 카메라에 플래시 적용, 또는 다른 기능)에 영향을 줄 수 있다.
일 예에서, 시스템(1100)은 배터리 전력 사용량, 배터리 충전, 및 절전 동작과 관련된 특징을 관리하는 전력 관리부(1150)를 포함한다. 전력 관리부(1150)는 시스템(1100)의 컴포넌트에 전력을 제공하는 전력 소스(1152)로부터의 전력을 관리한다. 일 예에서, 전력 소스(1152)는 벽 콘센트에 플러그인하기 위한 교류-직류(AC-DC) 어댑터를 포함한다. 이러한 AC 전력은 재생 가능한 에너지(예컨대, 태양 전력, 모션 기반 전력)일 수 있다. 일 예에서, 전력 소스(1152)는 외부 AC-DC 변환기와 같은 DC 전력 소스에 의해 제공될 수 있는 DC 전력만을 포함한다. 일 예에서, 전력 소스(1152)는 충전 필드에 대한 근접성을 통해 충전하기 위한 무선 충전 하드웨어를 포함한다. 일 예에서, 전력 소스(1152)는 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
메모리 서브 시스템(1160)은 시스템(1100)에 정보를 저장하기 위한 메모리 디바이스(들)(1162)를 포함한다. 메모리 서브 시스템(1160)은 비 휘발성(메모리 디바이스로의 전력이 중단되는 경우 상태가 변경되지 않음) 또는 휘발성(메모리 디바이로의 전력이 중단되는 경우 상태가 불확실하게 됨) 메모리 디바이스, 또는 조합을 포함할 수 있다. 메모리(1160)는 애플리케이션 데이터, 사용자 데이터, 음악, 사진, 문서, 또는 다른 데이터뿐만 아니라 시스템(1100)의 애플리케이션 및 기능의 실행과 관련된 시스템 데이터(장기적이든 일시적이든)를 저장할 수 있다. 일 예에서, 메모리 서브 시스템(1160)은 메모리 컨트롤러(1164)(시스템(1100)의 컨트롤의 일부로 간주될 수 있고 잠재적으로 프로세서(1110)의 일부로 간주될 수 있음)를 포함한다. 메모리 컨트롤러(1164)는 메모리 디바이스(1162)에 대한 액세스를 제어하기 위한 커맨드를 생성하고 발행하는 스케줄러를 포함한다.
접속성(1170)은 시스템(1100)이 외부 디바이스와 통신할 수 있도록 하는 하드웨어 디바이스(예컨대, 무선 또는 유선 커넥터 및 통신 하드웨어, 또는 유선 및 무선 하드웨어의 조합) 및 소프트웨어 컴포넌트(예컨대, 드라이버, 프로토콜 스택)를 포함한다. 외부 디바이스는 별도의 디바이스들, 예를 들어, 다른 컴퓨팅 디바이스, 무선 액세스 포인트, 또는 기지국뿐만 아니라, 주변 디바이스들, 예를 들어, 헤드셋, 프린터, 또는 다른 디바이스일 수 있다. 일 예에서, 시스템(1100)은 메모리에 저장하거나 디스플레이 디바이스에 표시하기 위해 외부 디바이스와 데이터를 교환한다. 교환된 데이터는 데이터를 판독하거나, 기입하거나, 또는 편집하기 위해, 메모리에 저장될 데이터, 또는 메모리에 이미 저장된 데이터를 포함할 수 있다.
접속성(1170)은 다양한 타입의 접속성을 포함할 수 있다. 일반화하기 위해, 시스템(1100)은 셀룰러 접속성(1172) 및 무선 접속성(1174)으로 예시된다. 셀룰러 접속성(1172)은, 일반적으로 무선 캐리어에 의해 제공되는, 예를 들어, 글로벌 모바일 통신 시스템(global system for mobile communications)(GSM) 또는 변형 또는 파생물, 코드 분할 다중 액세스(code division multiple access)(CDMA) 또는 변형 또는 파생물, 시분할 다중화(time division multiplexing)(TDM) 또는 변형 또는 파생물, 롱텀에볼루션(long term evolution)(LTE)(이는 또한 "4G"라고 지칭되기도 함), 5G, 또는 다른 셀룰러 서비스 표준을 통해 제공되는 셀룰러 네트워크 접속성을 지칭한다. 무선 접속성(1174)은 셀룰러가 아닌 무선 접속성을 지칭하며, 개인 영역 네트워크(예를 들어, 블루투스(Bluetooth)), 근거리 네트워크(예를 들어, WiFi), 또는 광역 네트워크(예를 들어, WiMax), 또는 다른 무선 통신, 또는 조합을 포함할 수 있다. 무선 통신은 비 솔리드 매체(non-solid medium)를 통해 변조된 전자기 방사선을 사용하여 데이터를 전송하는 것을 지칭한다. 유선 통신은 솔리드 통신 매체(solid communication medium)를 통해 발생한다.
주변 커넥션(1180)은 주변 커넥션을 만들기 위해 하드웨어 인터페이스 및 커넥터와 소프트웨어 컴포넌트(예컨대, 드라이버, 프로토콜 스택)를 포함한다. 시스템(1100)은 다른 컴퓨팅 디바이스에 대한 주변 디바이스("to"1182)일 수 있고, 그에 연결된 주변 디바이스("from"1184)를 가질 수 있다는 것이 이해될 것이다. 시스템(1100)은 일반적으로 시스템(1100) 상의 컨텐츠 관리(예컨대, 다운로딩, 업로딩, 변경, 동기화)와 같은 목적을 위해 다른 컴퓨팅 디바이스에 연결하기 위한 "도킹" 커넥터를 갖는다. 추가적으로, 도킹 커넥터는 시스템(1100)이, 예를 들어, 시청각 또는 다른 시스템으로의 컨텐츠 출력을 제어할 수 있도록 하는 특정 주변 디바이스에 시스템(1100)을 연결하게 할 수 있다.
전용 도킹 커넥터 또는 다른 전용 커넥션 하드웨어 이외에도, 시스템(1100)은 공통 또는 표준 기반 커넥터를 통해 주변 커넥션(1180)을 만들 수 있다. 일반적인 타입에는 범용 직렬 버스(USB) 커넥터(이는 다양한 하드웨어 인터페이스 중 임의의 것을 포함할 수 있음), MiniDisplayPort (MDP)를 포함한 DisplayPort, 고선명 멀티미디어 인터페이스(High Definition Multimedia Interface)(HDMI), 또는 다른 타입이 포함될 수 있다.
일반적으로, 본원의 설명과 관련하여, 일 예에서, 메모리 디바이스는: 행 차원 및 열 차원을 포함하는 2 개의 공간 차원에서 주소 지정 가능한 메모리 어레이 ― 상기 메모리 어레이는 상기 행 차원에서 행으로서 판독될 수 있거나 상기 열 차원에서 열로서 판독될 수 있는 비트 셀을 포함함 ―; 및 상기 메모리 어레이에 대한 에러 체킹 및 정정(error checking and correction)(ECC) 값을 생성 및 저장하는 컨트롤러 ― 상기 ECC 값은 상기 메모리 어레이의 행에 대한 행 ECC 값 및 상기 메모리 어레이의 열에 대한 열 ECC 값을 포함함 ―를 포함하며, 상기 메모리 어레이의 선택된 행에 대한 데이터 기입에 응답하여, 상기 컨트롤러는 상기 선택된 행에 대한 행 ECC 값을 업데이트하고 하나 이상의 열 ECC 값을 업데이트한다.
일 예에서, 상기 메모리 디바이스는 상기 데이터 기입에 응답하여 하나 이상의 업데이트된 ECC 값을 저장하는 캐시를 더 포함한다. 일 예에서, 상기 캐시는 열 ECC 값을 저장하기 위한 열 ECC 캐시를 포함하고, 상기 컨트롤러는 상기 데이터 기입에 응답하여 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 저장한다. 일 예에서, 상기 열 차원에서 선택된 열에 대한 판독 요청에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 대신에 상기 열 ECC 캐시로부터 상기 선택된 열에 대한 열 ECC 값을 판독한다. 일 예에서, 상기 데이터 기입에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 하나 이상의 열 ECC 값을 판독하고, 상기 데이터 기입에 따라 상기 하나 이상의 열 ECC 값을 업데이트하고, 그리고 상기 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 기입한다. 일 예에서, 상기 컨트롤러는 다수의 열 ECC 값을 단일 동작에서 병렬로 업데이트한다. 일 예에서, 상기 캐시는 최근 행 기입을 저장하는 행 캐시를 포함한다. 일 예에서, 상기 행 캐시는 단일 열 ECC 값에서 열 ECC의 비트 수보다 적은 수의 행을 포함한다. 일 예에서, 상기 기입 캐시 내의 선택된 행에 대한 상기 행 차원에서의 판독 요청에 응답하여, 상기 컨트롤러는 상기 행 캐시로부터 상기 선택된 행에 대한 행 ECC 값을 판독한다. 일 예에서, 선택된 열에 대한 상기 열 차원에서의 판독 요청에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 상기 선택된 열을 판독하고, 상기 메모리 어레이로부터의 해당 열 ECC 값으로 상기 선택된 열에 대해 ECC를 수행하고, 그리고 상기 행 캐시에 저장된 행에 기반하여 상기 선택된 열을 업데이트한다. 일 예에서, 상기 캐시는 전력 장애의 검출에 응답하여 상기 메모리 어레이로 플러싱하는 에너지 저장소를 갖는 전력 장애 안전 메모리를 포함한다. 일 예에서, 상기 컨트롤러는 상기 데이터 기입에 응답하여 비트 셀이 변경된 열에 대한 열 ECC 값만을 업데이트한다. 일 예에서, 상기 행에서 단일 자릿수의 비트 셀 수가 변경된 상기 행 차원에서의 데이터 기입을 갖는 워크로드의 경우, 상기 컨트롤러는 상기 행 및 행 ECC 값을 상기 메모리 어레이에 기입하고, 상기 행에서 변경된 비트 셀을 갖는 각 열마다 상기 열 ECC 값을 업데이트한다. 일 예에서, 상기 컨트롤러는 상기 데이터 기입을 수행하기 위해 판독-수정-기입 동작 동안 변경된 열을 식별한다. 일 예에서, 상기 컨트롤러는 열 ECC 값을 열 ECC 값의 행으로서 전치하고 저장한다. 일 예에서, 상기 메모리 어레이는 3 차원 크로스포인트 비트 셀의 어레이를 포함한다.
일반적으로, 본원의 설명과 관련하여, 일 예에서, 시스템은: 호스트 컨트롤러; 및 비 휘발성 메모리 디바이스를 포함하며, 상기 비 휘발성 메모리 디바이스는, 행 차원 및 열 차원을 포함하는 2 개의 공간 차원에서 주소 지정 가능한 3 차원 크로스포인트(three-dimensional crosspoint)(3DXP) 메모리 어레이 ― 상기 메모리 어레이는 상기 행 차원에서 행으로서 판독될 수 있거나 상기 열 차원에서 열로서 판독될 수 있는 비트 셀을 포함함 ―; 및 상기 메모리 어레이에 대한 에러 체킹 및 정정(error checking and correction)(ECC) 값을 생성 및 저장하는 액세스 컨트롤러 ― 상기 ECC 값은 상기 메모리 어레이의 행에 대한 행 ECC 값 및 상기 메모리 어레이의 열에 대한 열 ECC 값을 포함함 ―를 포함하며, 상기 메모리 어레이의 선택된 행에 대한 데이터 기입에 응답하여, 상기 액세스 컨트롤러는 상기 선택된 행에 대한 행 ECC 값을 업데이트하고 하나 이상의 열 ECC 값을 업데이트한다.
일 예에서, 상기 비 휘발성 메모리 디바이스는 열 ECC 값을 저장하기 위한 열 ECC 캐시를 더 포함하고, 상기 액세스 컨트롤러는 상기 데이터 기입에 응답하여 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 저장한다. 일 예에서, 상기 비 휘발성 메모리 디바이스는 최근 행 기입을 저장하기 위한 행 캐시를 더 포함하고; 상기 기입 캐시 내의 선택된 행에 대한 상기 행 차원에서의 판독 요청에 응답하여, 상기 액세스 컨트롤러는 상기 행 캐시로부터 상기 선택된 행에 대한 행 ECC 값을 판독하고; 선택된 열에 대한 상기 열 차원에서의 판독 요청에 응답하여, 상기 액세스 컨트롤러는 상기 메모리 어레이로부터 상기 선택된 열을 판독하고, 상기 메모리 어레이로부터의 해당 열 ECC 값으로 상기 선택된 열에 대해 ECC 정정을 수행하고, 그리고 상기 행 캐시에 저장된 행에 기반하여 상기 선택된 열을 업데이트한다. 일 예에서, 상기 시스템은: 상기 호스트 컨트롤러에 연결된 호스트 프로세서 디바이스; 호스트 프로세서에 통신 가능하게 연결된 디스플레이; 호스트 프로세서에 통신 가능하게 연결된 네트워크 인터페이스; 또는 상기 시스템에 전력을 공급하는 배터리 중 하나 이상을 더 포함한다.
본원에 예시된 흐름 다이어그램은 다양한 프로세스 동작의 시퀀스의 예를 제공한다. 흐름 다이어그램은 물리적 동작뿐만 아니라 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작을 나타낼 수 있다. 흐름 다이어그램은 하드웨어 및/또는 소프트웨어로 구현될 수 있는 유한 상태 머신(finite state machine)(FSM)의 상태의 일 구현예를 예시할 수 있다. 특정 시퀀스 또는 순서로 도시되지만, 달리 지정하지 않는 한, 동작 순서는 수정될 수 있다. 따라서, 예시된 다이어그램은 예시로만 이해되어야 하며, 프로세스는 상이한 순서로 수행될 수 있으며, 일부 동작들은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 동작은 생략될 수 있으며; 따라서 모든 구현예가 모든 동작을 수행하지는 않을 것이다.
다양한 동작 또는 기능이 본원에 설명되는 한, 이들은 소프트웨어 코드, 인스트럭션, 구성, 및/또는 데이터로 기술되거나 정의될 수 있다. 컨텐츠는 직접 실행 가능("객체" 또는 "실행 가능" 형태), 소스 코드, 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 본원에 설명된 것의 소프트웨어 컨텐츠는 컨텐츠가 저장된 제조품을 통해 또는 통신 인터페이스를 통해 데이터를 전송하기 위해 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독 가능 저장 매체는 머신으로 하여금 설명된 기능 또는 동작을 수행하게 할 수 있으며, 머신(예컨대, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 저장하는 임의의 메커니즘, 예를 들어, 레코딩 가능한/레코딩 불가능한 매체(예컨대, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 등)를 포함할 수 있다. 통신 인터페이스는 다른 디바이스와 통신하기 위해 하드와이어, 무선, 광학 등의 임의의 매체에 인터페이싱하는 임의의 메커니즘, 예를 들어,메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 접속, 디스크 컨트롤러 등을 포함한다. 통신 인터페이스는 구성 파라미터를 제공하고 및/또는 소프트웨어 컨텐츠를 기술하는 데이터 신호를 제공하기 위해 통신 인터페이스를 준비하라는 신호를 전송함으로써 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 전송된 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본원에 설명된 다양한 컴포넌트는 설명된 동작 또는 기능을 수행하기 위한 수단일 수 있다. 본원에 설명된 각 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 컴포넌트는 소프트웨어 모듈, 하드웨어 모듈, 특수 목적 하드웨어(예컨대, 애플리케이션 특정 하드웨어, 애플리케이션 특정 집적 회로(ASICs), 디지털 신호 프로세서(digital signal processors)(DSPs) 등), 임베디드 컨트롤러, 하드와이어 회로부 등으로서 구현될 수 있다.
본원에 설명된 것 이외에도, 본 발명의 범위를 벗어나지 않으면서 본 발명의 개시 내용 및 구현예에 대해 다양한 수정이 이루어질 수 있다. 따라서, 본원의 설명 및 예는 제한적인 의미가 아니라 예시적인 의미로 해석되어야 한다. 본 발명의 범위는 다음의 청구 범위를 참조해서만 판단되어야 한다.

Claims (20)

  1. 메모리 디바이스로서,
    행 차원 및 열 차원을 포함하는 2 개의 공간 차원에서 주소 지정 가능한 메모리 어레이 ― 상기 메모리 어레이는 상기 행 차원에서 행으로서 판독될 수 있거나 상기 열 차원에서 열로서 판독될 수 있는 비트 셀을 포함함 ―와,
    상기 메모리 어레이에 대한 에러 체킹 및 정정(error checking and correction)(ECC) 값을 생성 및 저장하는 컨트롤러 ― 상기 ECC 값은 상기 메모리 어레이의 상기 행에 대한 행 ECC 값 및 상기 메모리 어레이의 상기 열에 대한 열 ECC 값을 포함함 ―
    를 포함하되,
    상기 메모리 어레이의 선택된 행에 대한 데이터 기입에 응답하여, 상기 컨트롤러는 상기 선택된 행에 대한 행 ECC 값을 업데이트하고 하나 이상의 열 ECC 값을 업데이트하는
    메모리 디바이스.
  2. 제1항에 있어서,
    상기 메모리 디바이스는 상기 데이터 기입에 응답하여 하나 이상의 업데이트된 ECC 값을 저장하는 캐시를 더 포함하는
    메모리 디바이스.
  3. 제2항에 있어서,
    상기 캐시는 열 ECC 값을 저장하기 위한 열 ECC 캐시를 포함하고, 상기 컨트롤러는 상기 데이터 기입에 응답하여 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 저장하는
    메모리 디바이스.
  4. 제3항에 있어서,
    상기 열 차원에서 선택된 열에 대한 판독 요청에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 대신에 상기 열 ECC 캐시로부터 상기 선택된 열에 대한 열 ECC 값을 판독하는
    메모리 디바이스.
  5. 제3항에 있어서,
    상기 데이터 기입에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 하나 이상의 열 ECC 값을 판독하고, 상기 데이터 기입에 따라 상기 하나 이상의 열 ECC 값을 업데이트하며, 상기 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 기입하는
    메모리 디바이스.
  6. 제3항에 있어서,
    상기 컨트롤러는 다수의 열 ECC 값을 단일 동작에서 병렬로 업데이트하는
    메모리 디바이스.
  7. 제2항에 있어서,
    상기 캐시는 최근 행 기입을 저장하는 행 캐시를 포함하는
    메모리 디바이스.
  8. 제7항에 있어서,
    상기 행 캐시는 단일 열 ECC 값에서 열 ECC의 비트 수보다 적은 수의 행을 포함하는
    메모리 디바이스.
  9. 제7항에 있어서,
    상기 기입 캐시 내의 선택된 행에 대한 상기 행 차원에서의 판독 요청에 응답하여, 상기 컨트롤러는 상기 행 캐시로부터 상기 선택된 행에 대한 행 ECC 값을 판독하는
    메모리 디바이스.
  10. 제7항에 있어서,
    선택된 열에 대한 상기 열 차원에서의 판독 요청에 응답하여, 상기 컨트롤러는 상기 메모리 어레이로부터 상기 선택된 열을 판독하고, 상기 메모리 어레이로부터의 해당 열 ECC 값으로 상기 선택된 열에 대해 ECC를 수행하며, 상기 행 캐시에 저장된 행에 기반하여 상기 선택된 열을 업데이트하는
    메모리 디바이스.
  11. 제2항에 있어서,
    상기 캐시는 전력 장애의 검출에 응답하여 상기 메모리 어레이로 플러싱하는(flush) 에너지 저장소를 갖는 전력 장애 안전 메모리를 포함하는
    메모리 디바이스.
  12. 제1항에 있어서,
    상기 컨트롤러는 상기 데이터 기입에 응답하여 비트 셀이 변경된 열에 대한 열 ECC 값만을 업데이트하는
    메모리 디바이스.
  13. 제12항에 있어서,
    상기 행에서 단일 자릿수(a single digit number)의 비트 셀 수가 변경된 상기 행 차원에서의 데이터 기입을 갖는 워크로드의 경우, 상기 컨트롤러는 상기 행 및 행 ECC 값을 상기 메모리 어레이에 기입하고, 상기 행에서 변경된 비트 셀을 갖는 각 열마다 상기 열 ECC 값을 업데이트하는
    메모리 디바이스.
  14. 제12항에 있어서,
    상기 컨트롤러는 상기 데이터 기입을 수행하기 위해 판독-수정-기입 동작 동안 변경된 열을 식별하는
    메모리 디바이스.
  15. 제1항에 있어서,
    상기 컨트롤러는 열 ECC 값을 열 ECC 값의 행으로서 전치하고 저장하는
    메모리 디바이스.
  16. 제1항에 있어서,
    상기 메모리 어레이는 3 차원 크로스포인트 비트 셀의 어레이를 포함하는
    메모리 디바이스.
  17. 시스템으로서,
    호스트 컨트롤러와,
    비 휘발성 메모리 디바이스
    를 포함하되, 상기 비 휘발성 메모리 디바이스는,
    행 차원 및 열 차원을 포함하는 2 개의 공간 차원에서 주소 지정 가능한 3 차원 크로스포인트(three-dimensional crosspoint)(3DXP) 메모리 어레이 ― 상기 메모리 어레이는 상기 행 차원에서 행으로서 판독될 수 있거나 상기 열 차원에서 열로서 판독될 수 있는 비트 셀을 포함함 ―와,
    상기 메모리 어레이에 대한 에러 체킹 및 정정(error checking and correction)(ECC) 값을 생성 및 저장하는 액세스 컨트롤러 ― 상기 ECC 값은 상기 메모리 어레이의 행에 대한 행 ECC 값 및 상기 메모리 어레이의 열에 대한 열 ECC 값을 포함함 ―를 포함하며,
    상기 메모리 어레이의 선택된 행에 대한 데이터 기입에 응답하여, 상기 액세스 컨트롤러는 상기 선택된 행에 대한 행 ECC 값을 업데이트하고 하나 이상의 열 ECC 값을 업데이트하는
    시스템.
  18. 제17항에 있어서,
    상기 비 휘발성 메모리 디바이스는 열 ECC 값을 저장하기 위한 열 ECC 캐시를 더 포함하고, 상기 액세스 컨트롤러는 상기 데이터 기입에 응답하여 업데이트된 열 ECC 값을 상기 열 ECC 캐시에 저장하는
    시스템.
  19. 제17항에 있어서,
    상기 비 휘발성 메모리 디바이스는 최근 행 기입을 저장하기 위한 행 캐시를 더 포함하며,
    상기 기입 캐시 내의 선택된 행에 대한 상기 행 차원에서의 판독 요청에 응답하여, 상기 액세스 컨트롤러는 상기 행 캐시로부터 상기 선택된 행에 대한 행 ECC 값을 판독하고
    선택된 열에 대한 상기 열 차원에서의 판독 요청에 응답하여, 상기 액세스 컨트롤러는 상기 메모리 어레이로부터 상기 선택된 열을 판독하고, 상기 메모리 어레이로부터의 해당 열 ECC 값으로 상기 선택된 열에 대해 ECC 정정을 수행하며, 상기 행 캐시에 저장된 행에 기반하여 상기 선택된 열을 업데이트하는
    시스템.
  20. 제17항에 있어서,
    상기 호스트 컨트롤러에 연결된 호스트 프로세서 디바이스와,
    호스트 프로세서에 통신 가능하게 연결된 디스플레이와,
    호스트 프로세서에 통신 가능하게 연결된 네트워크 인터페이스와,
    상기 시스템에 전력을 공급하는 배터리
    중 하나 이상을 더 포함하는
    시스템.
KR1020200181096A 2020-03-23 2020-12-22 행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정 KR20210118727A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/827,235 2020-03-23
US16/827,235 US11657889B2 (en) 2020-03-23 2020-03-23 Error correction for dynamic data in a memory that is row addressable and column addressable

Publications (1)

Publication Number Publication Date
KR20210118727A true KR20210118727A (ko) 2021-10-01

Family

ID=71405144

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200181096A KR20210118727A (ko) 2020-03-23 2020-12-22 행 주소 지정 및 열 주소 지정이 가능한 메모리의 동적 데이터에 대한 에러 정정

Country Status (4)

Country Link
US (1) US11657889B2 (ko)
EP (1) EP3885912A3 (ko)
KR (1) KR20210118727A (ko)
CN (1) CN113434330A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11262913B2 (en) * 2019-03-28 2022-03-01 Intel Corporation Technologies for efficient stochastic associative search operations with error-correcting code
US11385961B2 (en) 2020-08-14 2022-07-12 Micron Technology, Inc. Adaptive parity techniques for a memory device
EP4012711A4 (en) * 2020-10-13 2022-11-16 Changxin Memory Technologies, Inc. DATA WRITING METHOD
US11379306B1 (en) * 2021-07-29 2022-07-05 Bae Systems Information And Electronic System Integration Inc. Method for radiation hardening synchronous DRAM
US11803501B2 (en) * 2021-10-19 2023-10-31 Micron Technology, Inc. Routing assignments based on error correction capabilities
CN114863985A (zh) * 2022-04-21 2022-08-05 深圳市金泰克半导体有限公司 一种聚集扩散式芯片检测方法、装置、控制器及介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4675808A (en) * 1983-08-08 1987-06-23 American Telephone And Telegraph Company At&T Bell Laboratories Multiplexed-address interface for addressing memories of various sizes
US20030031072A1 (en) * 2001-08-08 2003-02-13 Eliel Louzoun Memory with row-wise write and column-wise read
US6760247B2 (en) * 2002-09-27 2004-07-06 Texas Instruments Incorporated Methods and apparatus for flexible memory access
CA2447204C (en) * 2002-11-29 2010-03-23 Memory Management Services Ltd. Error correction scheme for memory
US8762805B2 (en) * 2010-12-01 2014-06-24 International Business Machines Corporation Decoding encoded data containing integrated data and header protection
US8681540B2 (en) 2011-08-29 2014-03-25 Intel Corporation Tile-level snapback detection through coupling capacitor in a cross point array
JP5852741B2 (ja) 2011-09-09 2016-02-03 インテル・コーポレーション メモリデバイスにおけるパス分離
WO2016174521A1 (en) 2015-04-30 2016-11-03 Marvell Israel (M-I.S.L.) Ltd. Multiple read and write port memory
US9880900B2 (en) * 2015-12-08 2018-01-30 Nvidia Corporation Method for scrubbing and correcting DRAM memory data with internal error-correcting code (ECC) bits contemporaneously during self-refresh state
WO2018128780A1 (en) * 2017-01-09 2018-07-12 Intel Corporation Generation node-b (gnb), user equipment (ue) and methods for interleaving in multiple-input multiple-output (mimo) arrangements
US10331514B2 (en) * 2017-03-17 2019-06-25 Micron Technology, Inc. Tiered error correction code (ECC) operations in memory
US20180358989A1 (en) 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
US11416170B2 (en) 2019-01-17 2022-08-16 Intel Corporation Technologies for efficiently accessing data columns and rows in a memory
US20190317857A1 (en) * 2019-04-26 2019-10-17 Intel Corporation Technologies for providing error correction for row direction and column direction in a cross point memory
US11057060B1 (en) * 2020-03-23 2021-07-06 Sage Microelectronics Corporation Method and apparatus for matrix flipping error correction
US11500887B2 (en) * 2021-04-09 2022-11-15 Intel Corporation Technologies for tuning performance and/or accuracy of similarity search using stochastic associative memories
US20210407564A1 (en) * 2021-09-07 2021-12-30 Intel Corporation Method and apparatus to perform a read of a column in a memory accessible by row and/or by column

Also Published As

Publication number Publication date
EP3885912A3 (en) 2021-11-10
EP3885912A2 (en) 2021-09-29
US11657889B2 (en) 2023-05-23
US20200219580A1 (en) 2020-07-09
CN113434330A (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
US11989106B2 (en) Inline buffer for in-memory post package repair (PPR)
US11657889B2 (en) Error correction for dynamic data in a memory that is row addressable and column addressable
CN108780423B (zh) 多级存储器管理电路、管理方法和管理设备
CN109661654B (zh) 存储器中的差错校验和纠正码的扩展应用
US11314589B2 (en) Read retry to selectively disable on-die ECC
KR20170070920A (ko) 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 동작 방법
US11704194B2 (en) Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
CN112558744A (zh) 用于减少用于刷新存储器模块上的存储器设备的功耗的方法和装置
US20210141692A1 (en) Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata
US11200113B2 (en) Auto-increment write count for nonvolatile memory
EP3138009A1 (en) Variable width error correction
EP4071583A1 (en) Avoiding processor stall when accessing coherent memory device in low power
US20220012126A1 (en) Translation cache and configurable ecc memory for reducing ecc memory overhead
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features
US20220326860A1 (en) Method and apparatus to perform bank sparing for adaptive double device data correction
US20220108764A1 (en) Address generation for adaptive double device data correction sparing
US20230112776A1 (en) Operation method of memory module, operation method of memory controller, and operation method of memory system