KR102501147B1 - 메모리에서 에러 체킹 및 정정 코드의 확장된 적용 - Google Patents

메모리에서 에러 체킹 및 정정 코드의 확장된 적용 Download PDF

Info

Publication number
KR102501147B1
KR102501147B1 KR1020197005804A KR20197005804A KR102501147B1 KR 102501147 B1 KR102501147 B1 KR 102501147B1 KR 1020197005804 A KR1020197005804 A KR 1020197005804A KR 20197005804 A KR20197005804 A KR 20197005804A KR 102501147 B1 KR102501147 B1 KR 102501147B1
Authority
KR
South Korea
Prior art keywords
memory
data
specific
connector
subarray
Prior art date
Application number
KR1020197005804A
Other languages
English (en)
Other versions
KR20190049710A (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 KR20190049710A publication Critical patent/KR20190049710A/ko
Application granted granted Critical
Publication of KR102501147B1 publication Critical patent/KR102501147B1/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
    • 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 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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 
    • G11C11/4096Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches 
    • 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 
    • G11C11/4097Bit-line organisation, e.g. bit-line layout, folded bit lines

Landscapes

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

Abstract

ECC(에러 체킹 및 정정)는 ECC 코드가 메모리 서브어레이 에러들을 정정하는 것을 허용하도록 확장될 수 있다. 메모리 디바이스는 컨트롤러와 같은 외부 디바이스와 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터들을 포함한다. 메모리 디바이스는 임의로 라우팅되는 대신에 I/O 커넥터들에 특정하게 매핑되는 다수의 어레이들 또는 서브어레이들을 포함한다. 따라서, 메모리 서브어레이들의 데이터 경로들은 특정 I/O 커넥터로 배타적으로 라우팅될 수 있다. I/O 커넥터는 단일 메모리 서브어레이와 고유하게 연관될 수 있거나, 다수의 메모리 서브어레이가 특정 I/O 커넥터에 매핑될 수 있다. 매핑은 코드 행렬에 따르며, 특정 I/O 커넥터에 대응하는 ECC 코드 행렬의 코드는 연관된 하나 또는 다수의 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크하고 정정하기 위한 것이다.

Description

메모리에서 에러 체킹 및 정정 코드의 확장된 적용
우선권 주장
본 출원은 2016년 9월 30일자로 출원되고, 발명의 명칭이 "메모리에서 에러 체킹 및 정정 코드의 확장된 적용(EXTENDED APPLICATION OF ERROR CHECKING AND CORRECTION CODE IN MEMORY)"인 미국 출원 제15/282,793호에 대해 35 U.S.C. §365(c)의 규정에 따라 우선권을 주장하며, 이로써 그 전체 내용이 인용에 의해 포함된다.
기술분야
본 설명들은 일반적으로 컴퓨팅 시스템들에서의 메모리에 관련되고, 더 특정한 설명들은 메모리에서의 에러 체킹 및 정정과 관련된다.
저작권 공고/승인
본 특허 문서의 개시내용의 부분들은 저작권 보호를 받은 자료를 포함할 수 있다. 저작권 소유자는 누구든지 이 특허 문서 또는 특허 개시내용을 특허 상표국 특허 파일 또는 기록에 나타나 있는 대로 복사하는 것에는 이의가 없지만, 다른 경우라면 모든 저작권 권리 일체를 보유한다. 저작권 공고는 아래에 설명되는 바와 같은 모든 데이터에 그리고 본 명세서의 첨부 도면들뿐만 아니라 아래에 설명되는 임의의 소프트웨어에 적용된다: 저작권 ⓒ 2016, 인텔 코포레이션, 모든 권리 보유
메모리 디바이스들이 더 작은 프로세싱 기하 구조들 및 증가된 밀도들로 계속 스케일링됨에 따라, 에러율은 증가하는 경향이 있다. 메모리 디바이스들에 저장된 데이터에 에러 체킹 및 정정(ECC)을 수행하고, 더 높은 밀도의 메모리 디바이스들의 신뢰성, 액세스 가능성, 및 서비스 가능성(RAS)을 개선하기 위해 적용되는 다수의 메커니즘이 존재한다. 하나의 기법은 스토리지 디바이스들의 RAID(redundant array of independent drives) 구현들에서의 데이터 스트라이핑과 유사하게, 다수의 메모리 디바이스들에 걸친 데이터의 스트라이핑을 수반한다. 이 기법들은 전체 메모리 디바이스가 고장나는 경우에도 데이터의 복구를 가능하게 한다. 전체 메모리 디바이스가 고장나는 경우의 데이터의 복구는 IBM(International Business Machines)에 의한 Chipkill, 선 마이크로시스템즈에 의한 Extended ECC, 인텔 코포레이션에 의한 DDDC(double device data correction) 등에 의해 구현될 수 있다. 모든 상표들은 그들 각자의 소유자들의 재산이다. 전체 메모리 디바이스 고장으로부터의 복구를 가능하게 하는 특징들은 일반적으로 서버 디바이스들에서 구현되며, 그러한 구현들의 증가된 비용은 그러한 특징들이 제공하는 개선된 RAS를 정당화하는 것으로 보인다.
그러한 특징들의 구현은 전형적으로 추가적인 하드웨어를 요구한다는 것이 이해될 것이다. 구체적으로, 더 강건한 ECC 구현들은 ECC를 제공하기 위해 사용되는 정보의 중복성을 달성하기 위해 더 많은 메모리 디바이스들을 포함한다. 주어진 데이터 액세스에 대해, 시스템은 많은 수의 디바이스들에 걸쳐 데이터를 분배하고, 그 후 디바이스들 중 어느 하나의 완전한 고장을 정정할 수 있는 ECC 코드를 구현할 수 있다. 강건한 ECC 구현들을 달성하기 위해 18 또는 36개의 별개의 DRAM(동적 랜덤 액세스 메모리) 디바이스들을 사용하는 것이 일반적이다. 그러나, 전통적으로 완전한 디바이스 고장으로부터의 복구를 위해 필요한 많은 수의 디바이스들은 일부 컨텍스트들에 대해 실용적이지 않을 수 있다.
이하의 설명은 본 발명의 실시예들의 구현들의 예로서 주어지는 예시들을 갖는 도면들의 논의를 포함한다. 이 도면들은 제한으로서가 아니라 예로서 이해되어야 한다. 본 명세서에서 사용되는 바와 같이, 하나 이상의 "실시예들"에 대한 언급들은 본 발명의 적어도 하나의 구현에 포함되는 특정 특징, 구조, 및/또는 특성을 설명하는 것으로서 이해되어야 한다. 따라서, 본 명세서에 나타나는 "일 실시예에서" 또는 "대안의 실시예에서"와 같은 구문들은 본 발명의 다양한 실시예들 및 구현들을 설명하며, 반드시 모두가 동일한 실시예를 언급하는 것은 아니다. 그러나, 그것들이 또한 반드시 상호 배타적인 것은 아니다.
도 1은 메모리 디바이스가 메모리 어레이들을 특정 I/O(입력/출력) 커넥터들에 매핑하는 데이터 경로들을 포함하여 해당 데이터에 대한 데이터 경로에 대한 내부 데이터 에러들 및 I/O 에러들 둘 다에 ECC 코드들을 적용하는 시스템의 실시예의 블록 다이어그램이다.
도 2는 데이터 에러들 및 I/O 에러들 둘 다에 대한 ECC 코드들의 사용을 가능하게 하기 위해 특정 메모리 어레이 대 I/O 매핑들을 갖는 인-패키지 메모리를 갖는 시스템 온 칩의 실시예의 블록 다이어그램이다.
도 3은 특정 I/O 커넥터들에 매핑되는 메모리 디바이스의 메모리 요소들의 실시예의 블록 다이어그램이다.
도 4는 서브어레이로부터의 데이터가 특정 I/O 핀에 배타적으로 매핑하는 것을 보장하는 I/O 라우팅을 갖는 I/O 핀들에 대한 서브어레이들의 매핑의 실시예의 블록 다이어그램이다.
도 5a는 서브어레이의 다수의 데이터 비트들을 단일 I/O 커넥터에 매핑하기 위한 I/O 라우팅의 실시예의 블록 다이어그램이다.
도 5b는 다수의 서브어레이들의 다수의 데이터 비트들을 단일 I/O 커넥터에 매핑하기 위한 I/O 라우팅의 실시예의 블록 다이어그램이다.
도 6은 ECC 코드들이 데이터 에러들 및 I/O 에러들 둘 다를 커버하는 것을 가능하게 하기 위해 I/O 라우팅을 갖는 메모리 디바이스의 실시예의 블록 다이어그램이다.
도 7은 I/O 에러들을 체크하고 정정하기 위해 ECC 코드들을 적용할 수 있는 데이터 경로 매핑의 실시예의 블록 다이어그램이다.
도 8은 특정 I/O에 매핑된 데이터 경로들을 갖는 메모리 디바이스를 제조하기 위한 프로세스의 실시예의 플로 다이어그램이다.
도 9는 특정 I/O에 매핑된 데이터 경로들을 갖는 메모리 디바이스에 대한 데이터 액세스를 위한 프로세스의 실시예의 플로 다이어그램이다.
도 10은 ECC의 적용을 위해 I/O에 대한 어레이들의 매핑을 갖는 메모리 디바이스가 구현될 수 있는 컴퓨팅 시스템의 실시예의 블록 다이어그램이다.
도 11은 ECC의 적용을 위해 I/O로의 어레이들의 매핑을 갖는 메모리 디바이스가 구현될 수 있는 모바일 디바이스의 실시예의 블록 다이어그램이다.
본 명세서에 제시되는 발명 개념들의 다른 잠재적 실시예들 또는 구현들을 논의할 뿐만 아니라, 아래 설명되는 실시예들의 일부 또는 전부를 묘사할 수 있는 도면들의 설명을 포함하여, 특정 상세사항들 및 구현들의 설명이 뒤따른다.
본 명세서에 설명된 바와 같이, ECC(에러 체킹 및 정정)는 ECC 코드가 메모리 서브어레이 에러들을 정정하는 것을 허용하도록 확장될 수 있다. 데이터 경로들의 물리적 라우팅은 ECC 코드에 의해 커버될 데이터 비트들에 대한 ECC 코드의 매핑에 따라 매핑될 수 있다. 따라서, ECC 코드는 메모리 서브어레이에 저장된 데이터에 대한 데이터 손상 에러들뿐만 아니라 I/O(입력/출력) 경로 에러들을 커버할 것이다. 메모리 디바이스는 컨트롤러와 같은 외부 디바이스와 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터들을 포함한다. 메모리 디바이스는 임의로 라우팅되는 대신에 I/O 커넥터들에 특정하게 매핑되는 다수의 어레이들 또는 서브어레이들을 포함한다. 매핑은 에러 체킹 및 정정(ECC) 코드 행렬에 따르며, 특정 I/O 커넥터에 대응하는 ECC 코드 행렬의 코드는 연관된 하나 또는 다수의 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크하고 정정하기 위한 것이다. 따라서, 메모리 서브어레이들의 데이터 경로들은 특정 I/O 커넥터로 배타적으로 라우팅될 수 있다. I/O 커넥터는 단일 메모리 서브어레이와 고유하게 연관될 수 있거나, 다수의 메모리 서브어레이가 특정 I/O 커넥터에 매핑될 수 있다.
ECC의 적용은 I/O 커넥터들에서 어떤 데이터가 나타나는지에 기초하여 수행된다. 따라서, 특정 I/O 핀들에 대한 특정 메모리 리소스들의 매핑은 데이터에 대한 ECC의 적용이 데이터가 나온 특정 메모리 리소스들에 간접적으로 적용된다는 것을 의미한다. ECC가 메모리 리소스들에 적용되는 것은 메모리 리소스들이 특정 I/O 커넥터들에 매핑되기 때문이다. 따라서, ECC의 적용은 전체 디바이스의 고장으로부터의 복구를 가능하게 하는 메모리 디바이스들에 기초한 중복성을 갖는 시스템들에 대한 ECC의 적용과 유사하다. 디바이스의 내부 에러, 또는 물리적 상호접속에 관련된 에러를 포함할 수 있는, 메모리 디바이스의 불량 서브어레이로부터 복구하기 위해 유사한 기법들이 적용될 수 있다. 일 실시예에서, 특정 매핑은 서브어레이로부터의 모든 비트들이 동일한 I/O 커넥터에 매핑될 때, 동일한 I/O 커넥터가 메모리 디바이스의 서브어레이로부터의 모든 데이터 비트들을 보는 것을 보장할 수 있고, ECC 코드는 전체 서브어레이가 결함이 있는 경우에도 서브어레이로부터의 모든 비트들을 정정할 수 있다. 예를 들어, 각각의 서브어레이로부터 액세스된 16개 비트가 18개의 I/O 커넥터들 중 하나에 매핑되는, 메모리 어레이로부터의 288개 비트의 액세스를 고려해보자(18*16=288). 모든 16개 비트가 단일 I/O 커넥터에 매핑될 때, I/O 커넥터와 연관된 ECC 코드는 서브어레이로부터의 모든 16개 비트의 고장을 정정할 수 있다.
도 1은 메모리 디바이스가 메모리 어레이들을 특정 I/O(입력/출력) 커넥터들에 매핑하는 데이터 경로들을 포함하여 해당 데이터에 대한 데이터 경로에 대한 내부 데이터 에러들 및 I/O 에러들 둘 다에 ECC 코드들을 적용하는 시스템의 실시예의 블록 다이어그램이다. 시스템(100)은 컴퓨팅 디바이스 내의 메모리 서브시스템의 요소들 및 프로세서를 포함한다. 프로세서(110)는, 집합적으로 호스트 또는 메모리의 사용자로 언급될 수 있는, 운영 체제(OS) 및 애플리케이션들을 실행할 수 있는 컴퓨팅 플랫폼의 프로세싱 유닛을 나타낸다. OS 및 애플리케이션들은 메모리 액세스들을 초래하는 동작들을 실행한다. 프로세서(110)는 하나 이상의 별개의 프로세서를 포함할 수 있다. 각각의 별개의 프로세서는 단일 프로세싱 유닛, 멀티코어 프로세싱 유닛, 또는 조합을 포함할 수 있다. 프로세싱 유닛은 CPU(중앙 프로세싱 유닛)와 같은 주 프로세서, GPU(그래픽 프로세싱 유닛)와 같은 주변 장치 프로세서, 또는 조합일 수 있다. 메모리 액세스들은 또한 네트워크 컨트롤러 또는 하드 디스크 컨트롤러와 같은 디바이스들에 의해 개시될 수 있다. 그러한 디바이스들은 일부 시스템들에서 프로세서와 통합되거나 버스(예를 들어, PCI 익스프레스)를 통해 프로세서에 부착되거나, 조합일 수 있다. 시스템(100)은 SOC(시스템 온 칩)로서 구현되거나, 독립형 컴포넌트들로 구현될 수 있다.
일 실시예에서, 시스템(100)은 SOC의 컴포넌트들을 인-패키지 메모리 디바이스들(140)로 표현한다. 그러한 구현에서, 시스템(100)의 컴포넌트들은 기판 상에 함께 통합되고, 공통 반도체 패키징 내에 패키징될 것이다.
메모리 디바이스들에 대한 언급은 상이한 메모리 타입들에 적용될 수 있다. 메모리 디바이스들은 종종 휘발성 메모리 기술들을 언급한다. 휘발성 메모리는 디바이스에 대해 전력이 중단되면 그것의 상태(및 따라서 그것에 저장된 데이터)가 불확정적인 메모리이다. 비휘발성 메모리는 디바이스에 대해 전력이 중단되는 경우에도 그것의 상태가 확정적인 메모리를 언급한다. 동적 휘발성 메모리는 상태를 유지하기 위해 디바이스에 저장된 데이터를 리프레시할 것을 요구한다. 동적 휘발성 메모리의 일 예는 DRAM(동적 랜덤 액세스 메모리), 또는 SDRAM(synchronous DRAM)과 같은 일부 변형을 포함한다. 본 명세서에 설명된 바와 같은 메모리 서브시스템은, DDR3(double data rate version 3, original release by JEDEC(Joint Electronic Device Engineering Council) on June 27, 2007, currently on release 21), DDR4(DDR version 4, initial specification published in September 2012 by JEDEC), DDR4E(DDR version 4, extended, currently in discussion by JEDEC), LPDDR3(low power DDR version 3, JESD209-3B, Aug 2013 by JEDEC), LPDDR4(LOW POWER DOUBLE DATA RATE (LPDDR) version 4, JESD209-4, originally published by JEDEC in August 2014), WIO2(Wide I/O 2 (WideIO2), JESD229-2, originally published by JEDEC in August 2014), HBM(HIGH BANDWIDTH MEMORY DRAM, JESD235, originally published by JEDEC in October 2013), DDR5(DDR version 5, currently in discussion by JEDEC), LPDDR5(currently in discussion by JEDEC), HBM2(HBM version 2), currently in discussion by JEDEC), 또는 다른 것들과 같은 다수의 메모리 기술들 또는 메모리 기술들의 조합들, 및 그러한 사양들의 파생물들 또는 확장물에 기초하는 기술들과 호환가능할 수 있다.
휘발성 메모리에 추가적으로 또는 대안적으로, 일 실시예에서, 메모리 디바이스들에 대한 언급은 디바이스에 대해 전력이 중단되는 경우에도 그것의 상태가 확정적인 비휘발성 메모리 디바이스를 언급할 수 있다. 일 실시예에서, 비휘발성 메모리 디바이스는 NAND 또는 NOR 기술들과 같은 블록 어드레싱 가능 메모리 디바이스이다. 따라서, 메모리 디바이스는 3차원 크로스포인트 메모리 디바이스, 다른 바이트 어드레싱 가능 비휘발성 메모리 디바이스들, 또는 칼코게나이드 상 변화 재료(예를 들어, 칼코게나이드 글래스)를 사용하는 메모리 디바이스들과 같은 향후 세대의 비휘발성 디바이스들을 또한 포함할 수 있다. 일 실시예에서, 메모리 디바이스는 멀티-임계 레벨 NAND 플래시 메모리, NOR 플래시 메모리, 단일 또는 멀티-레벨 상 변화 메모리(PCM) 또는 스위치를 갖는 상 변화 메모리(PCMS), 저항성 메모리, 나노와이어 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM), 멤리스터 기술을 포함하는 자기저항 랜덤 액세스 메모리(MRAM) 메모리, 또는 스핀 전달 토크(STT)-MRAM, 또는 위 항목들 중 임의의 것의 조합, 또는 다른 메모리일 수 있거나, 이들을 포함할 수 있다.
"RAM" 또는 "RAM 디바이스"를 참조하는 본 명세서에서의 설명들은 휘발성이든 비휘발성이든, 랜덤 액세스를 허용하는 임의의 메모리 디바이스에 적용될 수 있다. "DRAM" 또는 "DRAM 디바이스"를 참조하는 설명은 휘발성 랜덤 액세스 메모리 디바이스를 언급할 수 있다. 메모리 디바이스 또는 DRAM은 다이 자체, 하나 이상의 다이를 포함하는 패키징된 메모리 제품, 또는 둘 다를 언급할 수 있다. 일 실시예에서, 리프레시될 필요가 있는 휘발성 메모리를 갖는 시스템은 비휘발성 메모리를 또한 포함할 수 있다.
메모리 컨트롤러(120)는 시스템(100)을 위한 하나 이상의 메모리 컨트롤러 회로 또는 디바이스를 나타낸다. 메모리 컨트롤러(120)는 프로세서(110)에 의한 동작들의 실행에 응답하여 메모리 액세스 커맨드들을 생성하는 제어 로직을 나타낸다. 메모리 컨트롤러(120)는 하나 이상의 메모리 디바이스(140)에 액세스한다. 메모리 디바이스들(140)은 위에 언급된 임의의 것에 따른 DRAM 디바이스들일 수 있다. 일 실시예에서, 메모리 디바이스들(140)은 상이한 채널들로서 조직되고 관리되며, 각각의 채널은 다수의 메모리 디바이스들에 병렬로 결합되는 버스들 및 신호 라인들에 결합된다. 각각의 채널은 독립적으로 동작가능하다. 따라서, 각각의 채널은 독립적으로 액세스되고 제어되고, 타이밍, 데이터 전송, 커맨드 및 어드레스 교환들, 및 다른 동작들이 각각의 채널에 대해 개별적이다. 본 명세서에서 사용되는 바와 같이, 결합은 전기적 결합, 통신적 결합, 물리적 결합, 또는 이들의 조합을 언급할 수 있다. 물리적 결합은 직접 접촉을 포함할 수 있다. 전기적 결합은 컴포넌트들 사이의 전기적 흐름을 허용하거나 컴포넌트들 사이의 시그널링을 허용하거나 또는 둘 다를 허용하는 인터페이스 또는 상호접속을 포함한다. 통신적 결합은 컴포넌트들이 데이터를 교환하는 것을 가능하게 하는 유선 또는 무선을 포함하는 연결들을 포함한다.
일 실시예에서, 각각의 채널에 대한 설정들은 별개의 모드 레지스터들 또는 다른 레지스터 설정들에 의해 제어된다. 일 실시예에서, 비록 시스템(100)은 단일 컨트롤러에 의해 관리되는 다수의 채널을 갖거나, 단일의 채널 상에 다수의 컨트롤러를 갖도록 구성될 수 있지만, 각각의 메모리 컨트롤러(120)는 별개의 메모리 채널을 관리한다. 일 실시예에서, 메모리 컨트롤러(120)는 동일한 다이 상에 구현되거나 프로세서와 동일한 패키지 공간에서 구현되는 로직과 같은, 호스트 프로세서(110)의 일부이다.
메모리 컨트롤러(120)는 위에서 언급된 메모리 채널과 같은, 메모리 버스에 결합하기 위한 I/O 인터페이스 로직(122)을 포함한다. I/O 인터페이스 로직(122)(뿐만 아니라 메모리 디바이스(140)의 I/O 인터페이스 로직(142))은 핀들, 패드들, 커넥터들, 신호 라인들, 트레이스들, 또는 와이어들, 또는 디바이스들을 연결하기 위한 다른 하드웨어, 또는 이들의 조합을 포함할 수 있다. I/O 인터페이스 로직(122)은 하드웨어 인터페이스를 포함할 수 있다. 예시된 바와 같이, I/O 인터페이스 로직(122)은 신호 라인들에 대한 적어도 드라이버들/송수신기들을 포함한다. 일반적으로, 집적 회로 인터페이스 내의 와이어들은 디바이스들 사이의 신호 라인들 또는 트레이스들 또는 다른 와이어들에 인터페이스하기 위해 패드, 핀, 또는 커넥터와 결합된다. I/O 인터페이스 로직(122)은 디바이스들 사이의 신호 라인들 상에서 신호들을 교환하기 위한 드라이버들, 수신기들, 송수신기들, 또는 종단 또는 다른 회로 또는 회로의 조합들을 포함할 수 있다. 신호들의 교환은 송신 또는 수신 중 적어도 하나를 포함한다. 메모리 컨트롤러(120)로부터의 I/O(122)를 메모리 디바이스(140)의 I/O(142)로 결합하는 것으로 도시되어 있지만, 메모리 디바이스(140)의 그룹들이 병렬로 액세스되는 시스템(100)의 구현에서, 다수의 메모리 디바이스들은 메모리 컨트롤러(120)의 동일한 인터페이스에 대한 I/O 인터페이스들을 포함할 수 있다는 것이 이해될 것이다. 하나 이상의 메모리 모듈(170)을 포함하는 시스템(100)의 구현에서, I/O(142)는 메모리 디바이스 자체 상의 인터페이스 하드웨어에 더하여 메모리 모듈의 인터페이스 하드웨어를 포함할 수 있다. 다른 메모리 컨트롤러들(120)은 다른 메모리 디바이스들(140)에 대한 별개의 인터페이스들을 포함할 것이다.
메모리 컨트롤러(120)와 메모리 디바이스들(140) 사이의 버스는 메모리 디바이스들(140)에 메모리 컨트롤러(120)를 결합하는 다수의 신호 라인들로서 구현될 수 있다. 버스는 전형적으로 적어도 클록(CLK)(132), 커맨드/어드레스(CMD)(134), 및 기입 데이터(DQ) 및 판독 DQ(136), 및 0개 이상의 다른 신호 라인(138)을 포함할 수 있다. 일 실시예에서, 메모리 컨트롤러(120)와 메모리 사이의 버스 또는 연결은 메모리 버스로 언급될 수 있다. CMD를 위한 신호 라인들은 "C/A 버스"(또는 ADD/CMD 버스, 또는 커맨드들(C 또는 CMD) 및 어드레스(A 또는 ADD) 정보의 전송을 나타내는 일부 다른 지정)로 언급될 수 있고 기입 및 판독 DQ를 위한 신호 라인들은 "데이터 버스"로 언급될 수 있다. 일 실시예에서, 독립 채널들은 상이한 클록 신호들, C/A 버스들, 데이터 버스들, 및 다른 신호 라인들을 갖는다. 따라서, 독립적인 인터페이스 경로가 별개의 버스로 간주될 수 있다는 의미에서, 시스템(100)은 다수의 "버스들"을 갖는 것으로 간주될 수 있다. 명시적으로 도시된 라인들에 더하여, 버스는 스트로브 시그널링 라인들, 경보 라인들, 보조 라인들, 또는 다른 신호 라인들 중 적어도 하나, 또는 조합을 포함할 수 있다는 것이 이해될 것이다. 직렬 버스 기술들이 메모리 컨트롤러(120)와 메모리 디바이스들(140) 사이의 연결을 위해 사용될 수 있다는 것이 또한 이해될 것이다. 직렬 버스 기술의 예는 각각의 방향으로 신호들의 단일 차동 쌍에 걸쳐 내장된 클록을 갖는 고속 데이터의 8B10B 인코딩 및 전송이다.
시스템(100)의 예에서, 메모리 컨트롤러(120)와 메모리 디바이스들(140) 사이의 버스는 보조 커맨드 버스 CMD(134) 및 기입 및 판독 데이터를 운반하기 위한 보조 버스 DQ(136)를 포함한다는 것이 이해될 것이다. 일 실시예에서, 데이터 버스는 판독 데이터 및 기입/커맨드 데이터에 대한 양방향 라인들을 포함할 수 있다. 다른 실시예에서, 보조 버스 DQ(136)는 호스트로부터 메모리로의 기입 및 데이터에 대한 단방향 기입 신호 라인들을 포함할 수 있고, 메모리로부터 호스트로의 판독 데이터에 대한 단방향 라인들을 포함할 수 있다. 선택된 메모리 기술 및 시스템 설계에 따라, 다른 신호들(138)은 스트로브 라인들 DQS와 같은 버스 또는 서브 버스를 수반할 수 있다. 시스템(100)의 설계, 또는 구현에 기초하여, 설계가 다수의 구현을 지원하는 경우에, 데이터 버스는 메모리 디바이스(140)당 더 많은 또는 더 적은 대역폭을 가질 수 있다. 예를 들어, 데이터 버스는 x32 인터페이스, x16 인터페이스, x8 인터페이스, 또는 다른 인터페이스를 갖는 메모리 디바이스들을 지원할 수 있다. 관례 "xW", 여기서, W는 메모리 컨트롤러(120)와 데이터를 교환하기 위한 신호 라인의 수를 나타내는, 메모리 디바이스(140)의 인터페이스의 인터페이스 크기 또는 폭을 언급하는 정수이다. 메모리 디바이스들의 인터페이스 크기는 얼마나 많은 메모리 디바이스들이 시스템(100) 내의 채널마다 동시에 사용되거나 동일한 신호 라인들에 병렬로 결합될 수 있는지에 대한 제어 인자이다. 일 실시예에서, 고 대역폭 메모리 디바이스들, 와이드 인터페이스 디바이스들, 또는 스택형 메모리 구성들, 또는 조합들은 x128 인터페이스, x256 인터페이스, x512 인터페이스, x1024 인터페이스, 또는 다른 데이터 버스 인터페이스 폭과 같은, 더 넓은 인터페이스들을 가능하게 할 수 있다.
메모리 디바이스들(140)은 시스템(100)에 대한 메모리 리소스들을 나타낸다. 일 실시예에서, 각각의 메모리 디바이스(140)는 별개의 메모리 다이이다. 일 실시예에서, 각각의 메모리 디바이스(140)는 디바이스 또는 다이당 다수의(예를 들어, 2개) 채널들과 인터페이스할 수 있다. 각각의 메모리 디바이스(140)는 디바이스의 구현에 의해 결정되는 대역폭(예를 들어, x16 또는 x8 또는 어떤 다른 인터페이스 대역폭)을 갖는 I/O 인터페이스 로직(142)을 포함한다. I/O 인터페이스 로직(142)은 메모리 디바이스들이 메모리 컨트롤러(120)와 인터페이스하는 것을 가능하게 한다. I/O 인터페이스 로직(142)은 하드웨어 인터페이스를 포함할 수 있고, 메모리 컨트롤러의 I/O(122)에 따르지만, 메모리 디바이스 단부에 있을 수 있다. 일 실시예에서, 다수의 메모리 디바이스들(140)은 동일한 커맨드 및 데이터 버스들에 병렬로 연결된다. 다른 실시예에서, 다수의 메모리 디바이스들(140)은 동일한 커맨드 버스에 병렬로 연결되고, 상이한 데이터 버스들에 연결된다. 예를 들어, 시스템(100)은 병렬로 결합된 다수의 메모리 디바이스들(140)로 구성될 수 있고, 각각의 메모리 디바이스는 커맨드에 응답하고, 각각의 내부에 있는 메모리 리소스들(160)에 액세스한다. 기입 동작을 위해, 개별 메모리 디바이스(140)는 전체 데이터 워드의 일부를 기입할 수 있고, 판독 동작을 위해, 개별 메모리 디바이스(140)는 전체 데이터 워드의 일부를 페치할 수 있다. 비제한적인 예들로서, 특정 메모리 디바이스는, 각각, 판독 또는 기입 트랜잭션에 대한 128-비트 데이터 워드의 8개 비트, 또는 256-비트 데이터 워드의 8개 비트 또는 16개 비트(x8 또는 x16 디바이스에 의존함)를 제공 또는 수신할 수 있다. 워드의 나머지 비트들은 다른 메모리 디바이스들에 의해 병렬로 제공되거나 수신될 것이다.
일 실시예에서, 메모리 디바이스들(140)은 컴퓨팅 디바이스의 마더보드 또는 호스트 시스템 플랫폼(예를 들어, 프로세서(110)가 배치되는 PCB(인쇄 회로 보드)) 상에 직접 배치된다. 일 실시예에서, 메모리 디바이스들(140)은 메모리 모듈들(170)로 조직될 수 있다. 일 실시예에서, 메모리 모듈들(170)은 듀얼 인라인 메모리 모듈(DIMM)들을 나타낸다. 일 실시예에서, 메모리 모듈들(170)은 호스트 시스템 플랫폼과 별개의 회로, 별개의 디바이스, 또는 별개의 보드일 수 있는, 액세스 또는 제어 회로의 적어도 일부를 공유하기 위한 다수의 메모리 디바이스들의 다른 조직을 나타낸다. 메모리 모듈들(170)은 다수의 메모리 디바이스들(140)을 포함할 수 있고, 메모리 모듈들은 그들 상에 배치된 포함된 메모리 디바이스들에 대한 다수의 별개의 채널들에 대한 지원을 포함할 수 있다. 다른 실시예에서, 메모리 디바이스들(140)은 예컨대 멀티-칩 모듈(MCM), 패키지-온-패키지, 실리콘 관통 비아(TSV)와 같은 기법들, 또는 다른 기법들 또는 조합들에 의해, 메모리 컨트롤러(120)와 동일한 패키지 내에 통합될 수 있다. 유사하게, 일 실시예에서, 다수의 메모리 디바이스들(140)이 메모리 모듈들(170)에 통합될 수 있고, 이 메모리 모듈들 자체가 메모리 컨트롤러(120)와 동일한 패키지 내에 통합될 수 있다. 이들 및 다른 실시예들에 대해, 메모리 컨트롤러(120)는 호스트 프로세서(110)의 일부일 수 있다는 것이 인정될 것이다.
메모리 디바이스들(140)은 각각 메모리 리소스들(160)을 포함한다. 메모리 리소스들(160)은 데이터에 대한 메모리 위치들 또는 스토리지 위치들의 개별 어레이들을 나타낸다. 전형적으로 메모리 리소스들(160)은 워드라인(행들) 및 비트라인(행 내의 개별 비트들) 제어를 통해 액세스되는 데이터의 행들로서 관리된다. 메모리 리소스들(160)은 메모리의 별개의 채널들, 랭크들, 및 뱅크들로서 조직될 수 있다. 채널들은 메모리 디바이스들(140) 내의 스토리지 위치들에 대한 독립적인 제어 경로들을 언급할 수 있고, 단일 메모리 디바이스(140)의 모든 메모리 리소스들(160)은 단일 채널의 일부일 수 있거나, 메모리 리소스들(160)은 별개의 채널들의 일부일 수 있다(상이한 채널들에 대한 별개의 I/O(142)를 가짐). 랭크들은 다수의 메모리 디바이스들에 걸친 공통 위치들(예를 들어, 상이한 디바이스들 내의 동일한 행 어드레스들)을 언급할 수 있다. 전형적으로 단일 메모리 디바이스는 단일 랭크에 속하고, 메모리 시스템은 각각 다수의 메모리 디바이스들을 갖는 다수의 랭크들을 포함할 수 있다. 뱅크들은 메모리 디바이스(140) 내의 메모리 위치들의 어레이들을 언급할 수 있다. 일 실시예에서, 메모리 뱅크들은 서브-뱅크들에 대한 공유 회로(예를 들어, 드라이버들, 신호 라인들, 제어 로직)의 적어도 일부를 갖는 서브-뱅크들로 분할된다. 채널들, 랭크들, 뱅크들, 서브-뱅크들, 뱅크 그룹들, 또는 메모리 위치들의 다른 조직들, 및 조직들의 조합들은 물리 리소스들에 대한 그들의 적용에서 중첩할 수 있다는 것이 이해될 것이다. 예를 들어, 동일한 물리적 메모리 위치들은 랭크에 또한 속할 수 있는 특정 뱅크로서 특정 채널을 통해 액세스될 수 있다. 따라서, 메모리 리소스들의 조직은 배타적이기보다는 포괄적인 방식으로 이해될 것이다.
일 실시예에서, 메모리 디바이스들(140)은 하나 이상의 레지스터(144)를 포함한다. 레지스터(144)는 메모리 디바이스의 동작을 위한 구성 또는 설정들을 제공하는 하나 이상의 스토리지 디바이스 또는 스토리지 위치를 나타낸다. 일 실시예에서, 레지스터(144)는 메모리 디바이스(140)가 제어 또는 관리 동작의 일부로서 메모리 컨트롤러(120)에 의한 액세스를 위한 데이터를 저장하기 위한 스토리지 위치를 제공할 수 있다. 일 실시예에서, 레지스터(144)는 하나 이상의 모드 레지스터를 포함한다. 일 실시예에서, 레지스터(144)는 하나 이상의 다목적 레지스터를 포함한다. 레지스터(144) 내의 위치들의 구성은 상이한 "모드" 에서 동작하도록 메모리 디바이스(140)를 구성할 수 있고, 여기서 커맨드 정보는 모드에 기초하여 메모리 디바이스(140) 내에서 상이한 동작들을 트리거할 수 있다. 추가적으로 또는 대안적으로, 상이한 모드들은 또한 모드에 따라 어드레스 정보 또는 다른 신호 라인들로부터 상이한 동작을 트리거할 수 있다. 레지스터(144)의 설정들은 I/O 설정들(예를 들어, 타이밍, 종단 또는 ODT(온-다이 종단)(146), 드라이버 구성, 또는 다른 I/O 설정들)에 대한 구성을 나타낼 수 있다.
일 실시예에서, 메모리 디바이스(140)는 I/O(142)와 연관된 인터페이스 하드웨어의 일부로서 ODT(146)를 포함한다. ODT(146)는 위에 언급된 바와 같이 구성될 수 있고, 특정 신호 라인들에 대한 인터페이스에 적용될 임피던스에 대한 설정들을 제공할 수 있다. 일 실시예에서, ODT(146)는 DQ 신호 라인들에 적용된다. 일 실시예에서, ODT(146)는 커맨드 신호 라인들에 적용된다. 일 실시예에서, ODT(146)는 어드레스 신호 라인들에 적용된다. 일 실시예에서, ODT(146)는 전술한 것의 임의의 조합에 적용될 수 있다. ODT 설정들은 메모리 디바이스가 액세스 동작의 선택된 타겟인지 아니면 비-타겟 디바이스인지에 기초하여 변경될 수 있다. ODT(146) 설정들은 종단된 라인들 상의 시그널링의 타이밍 및 반사들에 영향을 미칠 수 있다. ODT(146)에 대한 신중한 제어는 적용된 임피던스 및 로딩의 개선된 매칭을 이용하여 더 고속의 동작을 가능하게 할 수 있다. ODT(146)는 I/O 인터페이스(142, 122)의 특정 신호 라인들에 적용될 수 있고, 반드시 모든 신호 라인들에 적용되는 것은 아니다.
메모리 디바이스(140)는 컨트롤러(150)를 포함하고, 이 컨트롤러는 메모리 디바이스 내의 내부 동작들을 제어하기 위한 메모리 디바이스 내의 제어 로직을 나타낸다. 예를 들어, 컨트롤러(150)는 메모리 컨트롤러(120)에 의해 전송된 커맨드들을 디코딩하고, 커맨드들을 실행하거나 충족시키는 내부 동작들을 생성한다. 컨트롤러(150)는 내부 컨트롤러로 언급될 수 있고, 호스트의 메모리 컨트롤러(120)로부터 분리된다. 컨트롤러(150)는 레지스터(144)에 기초하여 어떤 모드가 선택되는지를 결정할 수 있고, 선택된 모드에 기초하여 메모리 리소스들(160)에의 액세스를 위한 동작들 또는 다른 동작들의 내부 실행을 구성할 수 있다. 컨트롤러(150)는 선택된 모드에 대한 적절한 인터페이스를 제공하고 커맨드를 적절한 메모리 위치들 또는 어드레스들로 지향시키기 위해 메모리 디바이스(140) 내의 비트들의 라우팅을 제어하기 위한 제어 신호들을 생성한다.
다시 메모리 컨트롤러(120)를 참조하면, 메모리 컨트롤러(120)는 메모리 디바이스(140)에 전송할 트랜잭션들을 생성 및 순서화하기 위한 로직 또는 회로를 나타내는 스케줄러(130)를 포함한다. 하나의 관점에서, 메모리 컨트롤러(120)의 주 기능은 메모리 디바이스(140)에 대한 메모리 액세스 및 다른 트랜잭션들을 스케줄링하는 것이라고 말할 수 있다. 그러한 스케줄링은, 프로세서(110)에 의한 데이터에 대한 요청들을 구현하고 데이터의 무결성을 유지하기 위해(예를 들어, 리프레시에 관련된 커맨드들과 같이) 트랜잭션 자체를 생성하는 것을 포함할 수 있다. 트랜잭션들은 하나 이상의 커맨드를 포함할 수 있고, 클록 사이클들 또는 단위 간격들과 같은 하나 또는 다수의 타이밍 사이클에 걸쳐 커맨드들 또는 데이터 또는 둘 다의 전송을 초래할 수 있다. 트랜잭션들은 판독 또는 기입 또는 관련 커맨드들 또는 조합과 같은 액세스를 위한 것일 수 있고, 다른 트랜잭션들은 구성, 설정들, 데이터 무결성, 또는 다른 커맨드들 또는 조합에 대한 메모리 관리 커맨드들을 포함할 수 있다.
메모리 컨트롤러(120)는 전형적으로 시스템(100)의 성능을 개선하기 위해 트랜잭션들의 선택 및 순서화를 허용하는 로직을 포함한다. 따라서, 메모리 컨트롤러(120)는 미처리 트랜잭션들 중 어느 것이 어느 순서로 메모리 디바이스(140)에 전송되어야 하는지를 선택할 수 있고, 이는 전형적으로 단순한 선입선출(first-in first-out) 알고리즘보다 훨씬 더 복잡한 로직으로 달성한다. 메모리 컨트롤러(120)는 메모리 디바이스(140)에 대한 트랜잭션들의 전송을 관리하고, 트랜잭션과 연관된 타이밍을 관리한다. 일 실시예에서, 트랜잭션들은 결정론적 타이밍을 가지며, 이는 메모리 컨트롤러(120)에 의해 관리될 수 있고 트랜잭션들을 어떻게 스케줄링할지를 결정하는 데 사용될 수 있다.
메모리 컨트롤러(120)를 다시 참조하면, 메모리 컨트롤러(120)는 메모리 디바이스들(140)에 전송할 커맨드들을 생성하는 로직 또는 회로를 나타내는 커맨드(CMD) 로직(124)을 포함한다. 커맨드들의 생성은 스케줄링 전의 커맨드, 또는 전송될 준비가 된 큐잉된 커맨드들의 준비를 언급할 수 있다. 일반적으로, 메모리 서브시스템들 내의 시그널링은 메모리 디바이스들이 커맨드를 실행해야 하는 하나 이상의 메모리 위치를 표시하거나 선택하기 위해 커맨드 내에 또는 그와 동반하는 어드레스 정보를 포함한다. 메모리 디바이스(140)에 대한 트랜잭션들의 스케줄링에 응답하여, 메모리 컨트롤러(120)는 I/O(122)를 통해 커맨드들을 발행하여 메모리 디바이스(140)가 커맨드들을 실행하게 할 수 있다. 일 실시예에서, 메모리 디바이스(140)의 컨트롤러(150)는 메모리 컨트롤러(120)로부터 I/O(142)를 통해 수신된 커맨드 및 어드레스 정보를 수신하고 디코딩한다. 수신된 커맨드 및 어드레스 정보에 기초하여, 컨트롤러(150)는 커맨드들을 실행하기 위해 메모리 디바이스(140) 내의 로직 및 회로의 동작들의 타이밍을 제어할 수 있다. 컨트롤러(150)는 타이밍 및 시그널링 요건들과 같은, 메모리 디바이스(140) 내의 표준들 또는 사양들을 준수할 책임이 있다. 메모리 컨트롤러(120)는 액세스 스케줄링 및 제어에 의해 표준들 또는 사양들의 준수를 구현할 수 있다.
일 실시예에서, 메모리 디바이스들(140)은 반도체 패키징을 공유하는 프로세서(110) 및 메모리 컨트롤러(120)와 공통 기판 상에 장착된 메모리, 또는 인-패키지 DRAM 다이들을 포함한다. 그러한 구성에서, 메모리 디바이스들(140)은 2LM(2 레벨 메모리) 또는 다른 멀티레벨 메모리 시스템에 대한 온-칩 캐시 리소스들로서 기능할 수 있다. 메모리 디바이스들(140)은 프로세서(110)와 공유되는 기판 상에 메모리 디바이스들의 하나 이상의 스택을 포함할 수 있는, HBM 메모리 디바이스들을 포함할 수 있다. 일 실시예에서, 메모리 컨트롤러(120)는 프로세서 다이 상에 통합되고, 다수의 메모리 다이들이 기판 상에 장착되어 프로세서 다이의 I/O 커넥터들에 상호접속되고, 따라서 메모리 컨트롤러 디바이스 또는 회로에 상호접속된다.
I/O(142)는 프로세서(110) 및 메모리 컨트롤러(120)와 인터페이스하기 위한 메모리 디바이스(140)의 I/O 커넥터들을 나타낼 수 있다. 일 실시예에서, 메모리 디바이스들(140)의 메모리 리소스들(160)은 서브어레이들로 분할된 뱅크들을 포함한다. 서브어레이들은 대안적으로 단순히 어레이들로 언급될 수 있다. 서브어레이들은 메모리 셀들의 행들의 그룹과 같은 메모리의 섹션들을 언급한다. 데이터 경로들(148)은 서브어레이들과 I/O(142) 사이에 데이터 신호들을 전송하기 위한 와이어들 및 연결 디바이스들의 라우팅을 나타낸다. 최단 물리적 경로 또는 다른 레이아웃에 따라 레이아웃되거나, 임의로 레이아웃되는 대신에, 데이터 경로들(148)은 특정 I/O 커넥터들에 매핑되어 추가적인 에러 정정 정보를 제공한다. 일반적으로 특정 라우팅은 데이터 경로들(148)이 서브어레이로부터의 모든 데이터 신호들을 단일 I/O 커넥터(예를 들어, DQ(136)의 하나의 신호 라인)에 매핑하여 데이터뿐만 아니라 서브어레이들을 커버하기 위한 ECC 코드들의 적용을 가능하게 하는 것을 제공한다.
일 실시예에서, 각각의 개별 메모리 디바이스(140)에 대한 I/O(142)는 x18, x36 인터페이스, x72 인터페이스 등과 같은 ECC 구현에 필적하는 수의 신호 라인들을 갖는 데이터 인터페이스를 포함한다. 따라서, 예를 들어, DQ(136)는 18, 36, 또는 72 또는 다른 수의 신호 라인들을 포함할 수 있다. 그러한 인터페이스들은 ECC에 사용되는 비트 스킴들을 모방한다. 예를 들어, ECC 구현들은 일반적으로 메모리 모듈 상에서 18 또는 36개의 DRAM 디바이스를 사용한다. 따라서, DRAM 디바이스들의 수에 기초한 시스템 레벨들에서 사용되는 동일한 ECC 기법들은, 내부 에러들을 정정하기 위해 동작하는 ECC 코드 행렬의 ECC 코드들이 동일한 비트들에 대한 I/O 고장들을 또한 정정할 수 있음을 보장하기 위해 유사한 비트 카운트들 및 매핑 데이터 경로들(148)을 가짐으로써 서브어레이들의 레벨에서 적용될 수 있다. DQ(136)는 (기입 동작 또는 기입 트랜잭션을 위한) 기입 데이터를 I/O(142)로부터 서브어레이들로 라우팅하고, (판독 동작 또는 판독 트랜잭션을 위한) 판독 데이터를 서브어레이들로부터 I/O(142)로 라우팅한다는 것이 이해될 것이다.
도 2는 데이터 에러들 및 I/O 에러들 둘 다에 대한 ECC 코드들의 사용을 가능하게 하기 위해 특정 메모리 어레이 대 I/O 매핑들을 갖는 인-패키지 메모리를 갖는 시스템 온 칩의 실시예의 블록 다이어그램이다. 시스템(200)은 SOC의 일 예를 제공하고, 시스템(100)의 구현의 일 예를 제공한다. 패키지(202)는 SOC 패키징을 나타내고, 프로세서 다이(210) 및 메모리 다이들(230)이 장착되는 기판을 포함한다. 패키지(202)에 포함되는 메모리 다이들(230)의 특정 수는 존재하지 않는다. 그러나, 데이터 경로 라우팅의 사용에 의해, 메모리 다이들(230)의 수는 단일 디바이스 고장 보호를 구현하기 위해 전통적으로 사용될 수 있는 수(예를 들어, 18 또는 36 등)보다 작을 수 있으면서도, 여전히 동등한 레벨의 보호를 제공할 수 있다.
프로세서 다이(210)는 프로세서에서 동작들의 실행을 수행하기 위한 로직 회로들을 나타내는 하나 이상의 코어(212)를 포함한다. 일 실시예에서, 프로세서 다이(210)는 메모리 다이들(230)에 액세스하기 위한 메모리 컨트롤러를 나타낼 수 있는 컨트롤러(222)를 포함한다. 용어의 관점에서, 메모리 컨트롤러는 전통적으로, 운영 데이터 및 코드를 저장하는 휘발성 메모리 리소스들을 언급하는, 메인 시스템 메모리와 인터페이스한다는 것이 이해될 것이다. 전통적으로, 그 리소스들은 프로세서로부터 오프-칩 및 오프-패키지이다. 시스템(200)에 있어서, 컨트롤러(222)는 액세스 휘발성 메모리 다이들(230)의 관점에서 메모리 컨트롤러로 언급될 수 있다. 컨트롤러(222)는 대안적으로 온-칩 또는 온-패키지 메모리 리소스들에 액세스하기 위한 캐시 컨트롤러로 언급될 수 있다. 그러한 경우에, 패키지(202) 외부에 있는 메모리 리소스들에 액세스하기 위해 추가적인 컨트롤러가 또한 포함될 수 있다.
프로세서 다이(210)는 메모리 다이들(230)에 패키지(202) 상에서 인터페이스하는 I/O 하드웨어를 나타내는 I/O(224)를 포함한다. I/O(224)는, 다수의 신호 라인을 나타내고 다수의 버스를 나타낼 수 있는, 인터커넥트(204)를 통해 메모리 다이들(230)의 I/O(232)와 인터페이스할 수 있다. 인터커넥트(204)는 적어도 데이터 버스를 포함한다. 각각의 메모리 다이(230) 내에서, 메모리 어레이들은 I/O(232)의 특정 I/O 커넥터들로 라우팅된다. 프로세서 다이(210)의 ECC 엔진(226)은 메모리 다이들(230)과 교환되는(예를 들어, 판독 또는 기입) 데이터에 대해 ECC를 수행하는 로직을 나타낸다. ECC 엔진(226)은 데이터에서의 에러들을 체크하고 어쩌면 정정하기 위해 ECC 계산들을 계산하기 위한, 공지된 ECC 알고리즘들과 같은 ECC 로직을 포함한다. 따라서, 컨트롤러(222) 및 메모리 다이들(230)은 데이터 및 체크 비트들을 교환할 것이다. 기입을 위해, ECC 엔진(226)은 ECC 체크 비트들을 계산하고 비트들을 기입 데이터와 함께 전송한다. 판독을 위해, 메모리 다이들(230)은 데이터 및 저장된 체크 비트들을 검색하거나 페치하고 이들을 컨트롤러(222)로 전송한다. 컨트롤러(222)는 그 후 체크 비트들에 기초하여 수신된 데이터에 대한 ECC를 계산할 수 있다. 일 실시예에서, 메모리 다이들(230)은 내부 ECC를 또한 포함한다. 따라서, 시스템(200)은 개별 메모리 디바이스들 상의 내부 ECC, 및 컨트롤러(222) 또는 프로세서에 의해 실행되는 시스템-와이드 ECC를 포함할 수 있으며, 이는 ECC 계산들을 수행하기 위해 다수의 메모리 다이들(230)로부터 수신된 데이터에 대한 계산들을 수행할 수 있다.
일 실시예에서, 시스템(200)은 CPU를 갖는 패키지 내의 DRAM 디바이스들을 갖는 클라이언트 또는 서버 제품을 제공할 수 있다. 일 실시예에서, 메모리 다이들(230)은 HPC(고성능 컴퓨팅) 메인 메모리를 제공한다. 일 실시예에서, 메모리 다이들(230)은 그래픽 메모리를 제공한다. 일 실시예에서, 메모리 다이들(230)은 멀티레벨 메모리(MLM) 시스템의 제1 레벨 메모리를 제공한다. 일 실시예에서, 메모리 다이들(230)은 체크 포인팅을 위한 메모리를 제공한다. 일 실시예에서, 메모리 다이들(230)은 이들의 조합을 제공한다. 따라서, 이러한 컨텍스트들 중 임의의 것 또는 모두에 대해 개선된 에러 커버리지가 제공될 수 있다.
본 명세서에 설명된 것에 따르면, 메모리 다이들(230)은 메모리의 특정 영역들 사이에 일관되게 동일한 I/O 핀들 또는 커넥터들에 비트들을 전송하는 회로 매핑들을 포함한다. ECC 코딩 구현에 대한 지식을 데이터 경로 회로 레이아웃에 적용하면, 시스템(200)은 전통적으로 제공될 수 있는 것에 비해 추가적인 레벨의 정정을 포함한다. 따라서, 일 실시예에서, 인-패키지-메모리 디바이스들은 공통 I/O 핀에 데이터 경로들 및 메모리 어레이의 서브세트를 매핑할 수 있다. 그러한 접근법은 개별 서브어레이로부터의 데이터가 다수의 I/O 핀에 걸쳐 확산되는 결과를 초래할 수 있는 전통적인 매핑들과 대비된다.
도 3은 특정 I/O 커넥터들에 매핑되는 메모리 디바이스의 메모리 요소들의 실시예의 블록 다이어그램이다. 메모리(300)는 본 명세서에 설명된 임의의 실시예에 따른, 메모리 어레이의 부분들에 대한 I/O의 특정 매핑을 갖는 메모리 디바이스의 컴포넌트들을 예시한다. 예를 들어, 메모리(300)는 시스템(200)의 메모리 다이(230) 또는 시스템(100)의 메모리 디바이스(140)의 실시예를 나타낼 수 있다.
메모리(300)는 메모리 셀들(302)의 다수의 행을 포함하는 뱅크(310)를 포함한다. 다이어그램의 수직 직사각형들은 행들을 나타낸다. 일 실시예에서, 뱅크(310)는 다수의 서브어레이(312)로서 조직된다. 서브어레이(312) 또는 어레이는 행들(302)의 그룹을 언급할 수 있다. 액세스 커맨드(판독 커맨드 또는 기입 커맨드 중 어느 하나)는 동작에 대한 행 또는 행들을 선택하기 위해 행 디코드 로직(320)에 의해 해석되는 커맨드 신호 라인들을 트리거한다. 일 실시예에서, 행 디코드 로직(320)은 뱅크(310)의 특정 서브어레이(312)를 선택하는 서브어레이 또는 어레이 디코드 로직(322)을 포함한다. 메모리(300)는 데이터의 열을 선택하기 위한 열 디코드 로직(330)을 포함하고, 여기서 특정 서브어레이들로부터의 신호 라인들은 감지 증폭기들로 출력될 수 있고 로컬 I/O(340) 내지 글로벌 I/O(350)로 라우팅될 수 있다. 로컬 I/O(340)는 특정 서브어레이들(312)의 데이터를 전송하기 위한 라우팅 회로를 언급한다. 글로벌 I/O(350)는 메모리(300)의 외부 I/O 커넥터들에 로컬 I/O를 결합하는 라우팅 회로를 언급한다. 일 실시예에서, 로컬 I/O(340)는 특정한 신호 라인들을 서브어레이들(312)로부터 특정 글로벌 I/O 커넥터들에 연결되는 특정 I/O 경로들 또는 데이터 경로들로 매핑하는 로직을 포함한다.
메모리(300)에서, 서브어레이들(312)로부터 로컬 I/O(340) 또는 글로벌 I/O(350) 또는 둘 다로의 데이터 경로들은 ECC 코드가 검출 및 정정할 수 있을 결함들의 수를 최대화하도록 조직된다. 기계적 I/O 핀 고장들이 인-패키지 메모리에 대한 공통 고장 메커니즘이라고 가정하면, 데이터에 대한 ECC 코드들의 적용에 따라 서브어레이들로부터 외부 I/O 커넥터들로 데이터 경로들을 매핑하는 것은 ECC 코드에 의해 I/O 고장이 정정되는 것을 가능하게 할 수 있다는 것이 이해될 것이다. 메모리 디바이스 내의 일부 고장들이 전체 메모리 어레이의 서브세트로 제한된다는 것이 또한 이해될 것이다. 메모리 어레이들의 서브세트들 및 이들 서브세트들로의 그리고 그로부터의 데이터 경로들이 단일 I/O 커넥터에 매핑된다면, ECC 코드는 또한 이러한 메모리 서브세트들 및 데이터 경로들의 고장들을 정정할 수 있을 것이다. 데이터 경로는 서브어레이들과 I/O 사이에 데이터를 전송하기 위한 와이어들, 트레이스들, 로직 게이트들, 및 다른 회로를 언급한다.
도 4는 서브어레이로부터의 데이터가 특정 I/O 핀에 배타적으로 매핑하는 것을 보장하는 I/O 라우팅을 갖는 I/O 핀들에 대한 서브어레이들의 매핑의 실시예의 블록 다이어그램이다. 메모리(400)는 도 3의 메모리(300)에 따른 메모리 디바이스의 일 예를 제공한다. 예시된 바와 같이, 메모리(400)는 M개의 서브어레이(410[0:(M-1)])를 포함한다. 일 실시예에서, 서브어레이들의 수는 데이터 버스의 신호 라인들의 수의 배수이다. 예를 들어, x18 메모리 다이는 18, 36, 54, 또는 다른 수의 서브어레이들(410)을 포함할 수 있다.
와이어들(412)은 서브어레이들로부터 I/O 라우팅 로직(420)으로의 연결들을 나타낸다. I/O 라우팅 로직(420)은 멀티플렉서들, 드라이버들, 버퍼들, 또는 다른 컴포넌트들, 또는 조합을 포함할 수 있다. 와이어들(422)은 라우팅 로직(420)으로부터 I/O 핀들(430)로의 연결들을 나타낸다. I/O 핀들(430)은 컨트롤러와 데이터를 교환하기 위한 메모리(400)의 I/O 커넥터들을 나타낸다. 데이터가 I/O 핀들(430) 상에 나타날 때 그에 대해 컨트롤러에 의해 ECC가 수행된다. 일 실시예에서, 데이터 경로들(440)은 서브어레이들(410)과 I/O 핀들(430) 사이의 데이터 신호 전송을 위한 전기적 경로를 언급한다.
서브어레이들과 I/O 라우팅 로직(420) 사이에 신호들을 운반하는 적어도 M개의 와이어(412)가 있을 것이라는 점이 이해될 것이다. 전형적으로 I/O 라우팅 로직(420)과 I/O 핀들(430) 사이에 신호들을 운반하는 더 적은 수의 와이어들(422)이 있을 것이다. 일 실시예에서, 데이터는 클록 기간들 또는 UI들과 같은 다수의 전송 사이클들(예를 들어, 버스트)을 통해 전송된다. 따라서, 다수의 신호가 와이어들(422) 상에서 시간 멀티플렉싱될 수 있다. 데이터 경로들(440)은 서브어레이(410)가 단일 I/O 핀(430)에 매핑되는 것을 보장하기 위한 특정 라우팅을 포함한다. 동일한 I/O 핀에 매핑되는 다수의 서브어레이(410)가 존재할 수 있지만, 특정 서브어레이(410)는 특정 I/O 핀에만 매핑될 수 있다. 서브어레이(410)로부터 I/O 라우팅 로직(420)으로 다수의 와이어들(412)이 존재하는 경우, 모든 핀들이 동일한 I/O 핀에 매핑되고, 와이어들(422) 상에서 시간이 지남에 따라 멀티플렉싱될 것이다.
도 5a는 서브어레이의 다수의 데이터 비트들을 단일 I/O 커넥터에 매핑하기 위한 I/O 라우팅의 실시예의 블록 다이어그램이다. 회로(502)는 도 4의 데이터 경로들(440)에 따른 데이터 경로의 일 예를 예시한다. 서브어레이(510)는 메모리 디바이스의 뱅크의 행들의 서브세트를 나타낸다. 일 실시예에서, 다수의 데이터 신호들(512)은 서브어레이(510)로 그리고 그로부터 데이터를 운반한다. 서브어레이(510)와 I/O 핀(530) 사이의 데이터 경로는 데이터 신호들(512)을 운반하기 위한 하나 이상의 신호 라인, 신호 선택 로직(520)(예컨대 멀티플렉서/디멀티플렉서 회로), 및 신호 라인(522)을 포함할 수 있다. 일 실시예에서, 다수의 신호 라인이 서브어레이(510)와 신호 선택(520) 사이에 데이터 신호들(512)을 운반한다. 일 실시예에서, 다수의 데이터 신호가 시간이 지남에 따라 전송되고 신호 선택(520)을 통해 버퍼링된다. 전형적으로 신호 선택(520)과 I/O 핀(530) 사이에 하나의 신호 라인(522)이 있을 것이다. 따라서, 데이터 경로는 서브어레이(510)를 특정 I/O 핀(530)에 매핑한다.
도 5b는 다수의 서브어레이들의 다수의 데이터 비트들을 단일 I/O 커넥터에 매핑하기 위한 I/O 라우팅의 실시예의 블록 다이어그램이다. 회로(504)는 도 4의 데이터 경로들(440)에 따른 데이터 경로의 일 예를 예시한다. 회로(504)는 도 5a의 회로(502)에 대한 대안일 수 있다. 서브어레이들(540[0:(N-1])은 메모리 디바이스의 뱅크의 행들의 다수의 서브세트들을 나타낸다. 일 실시예에서, 다수의 데이터 신호들(542)은 각각의 서브어레이(540)로 그리고 그로부터 데이터를 운반하고, 여기서 "서브어레이(540)"는 집합적으로 N개의 어레이를 언급한다. 각각의 서브어레이(540)와 I/O 핀(560) 사이의 데이터 경로는 데이터 신호들(542)을 운반하기 위한 하나 이상의 신호 라인, 신호 선택 로직(550)(예컨대 멀티플렉서/디멀티플렉서 회로), 및 신호 라인(552)을 포함할 수 있다. 일 실시예에서, 다수의 신호 라인이 각각의 서브어레이(540)와 신호 선택(550) 사이에 데이터 신호들(542)을 운반한다. 일 실시예에서, 다수의 데이터 신호가 시간이 지남에 따라 송신되고 신호 선택(550)을 통해 버퍼링된다. 전형적으로 신호 선택(550)과 I/O 핀(560) 사이에 하나의 신호 라인(552)이 있을 것이다. 따라서, 데이터 경로는 다수의 서브어레이들(540)을 특정 I/O 핀(560)에 매핑한다.
예시하는 바와 같이, 일 실시예에서, 데이터 경로는 메모리 서브어레이를 특정 I/O 커넥터에 배타적으로 매핑한다. 일 실시예에서, 하나의 I/O 커넥터가 단일 메모리 서브어레이에 매핑된다. 일 실시예에서, 다수의 메모리 서브어레이가 공통 I/O 커넥터에 매핑된다. 따라서, 각각의 메모리 서브어레이가 단일 I/O 커넥터에 매핑되지만, I/O 커넥터는 다수의 메모리 서브어레이에 매핑될 수 있다. 따라서, 데이터 경로는 메모리 서브어레이와 I/O 커넥터 사이의 1:1 관계, 또는 메모리 서브어레이와 커넥터 사이의 M:1 관계를 제공할 수 있다.
도 6은 ECC 코드들이 데이터 에러들 및 I/O 에러들 둘 다를 커버하는 것을 가능하게 하기 위해 I/O 라우팅을 갖는 메모리 디바이스의 실시예의 블록 다이어그램이다. 메모리 디바이스(600)는 시스템(100)의 메모리 디바이스들(140), 시스템(200)의 메모리 다이(230), 또는 메모리 디바이스(300)에 따른 메모리 디바이스의 일 예를 나타낸다. 일 실시예에서, 메모리 디바이스(600)는 인-패키지 메모리로서 CPU에 연결하기 위해 기판에 장착된 DRAM 디바이스이다.
제어 로직(610)은 클록(CLK), 클록 인에이블(CKE), 및 커맨드 신호들(CMD)을 수신하고, 그 신호들에 관련하여 메모리 디바이스(600)의 동작을 제어한다. 어드레스 레지스터(620)는 특정 커맨드에 의해 영향을 받을 메모리의 부분을 식별하기 위해 행 어드레스 및 뱅크 어드레스 신호들을 수신한다. 어드레스, 클록, 클록 인에이블, 및 커맨드 신호들은 메모리 디바이스(600)에 대한 커맨드 및 어드레스에 대한 I/O 커넥터들을 나타낸다. 일 실시예에서, 어드레스 레지스터(620)는 어드레스 정보를 행 어드레스 멀티플렉서(622), 뱅크 제어 로직(624), 및 열 어드레스 카운터(626)에 분배한다. 행 어드레스 멀티플렉스(622)는 행 어드레스 정보 및 리프레시 카운터(REF(628))를 입력으로서 취하고, 메모리 디바이스의 각각의 뱅크에 대한 행 어드레스 래치(RAL) 및 디코더(행 디코더(632))를 제어한다. 뱅크 제어 로직(624)은 수신된 (예를 들어, 커맨드에 기초하여) 메모리 액세스 동작을 위해 어느 뱅크가 선택될 것인지를 선택한다. 열 어드레스 카운터(626)는 동작을 위한 열을 선택하기 위한 신호를 생성한다.
행 디코더(632)는 메모리 어레이(630)의 행을 포함할 수 있는 뱅크 내의 어드레스를 선택한다. 일 실시예에서, 메모리 어레이들(630)은 서브어레이들이거나 이를 포함할 수 있다. 뱅크 제어 로직(624) 및 열 어드레스 카운터(626)로부터의 신호들이 원하는 메모리 어레이(630)에 대한 적절한 감지 증폭기들(SA)(642)를 활성화하도록 열 디코더(col dec)(634)를 트리거할 수 있다. 열 디코더(634)는 메모리 어레이들(630)로 그리고 그로부터 데이터를 라우팅하는 로직뿐만 아니라 신호 라인들 또는 와이어들을 포함하는 하드웨어를 나타내는 I/O 게이팅(640)을 트리거할 수 있다. I/O 게이팅(640)은 기입 동작을 위해 감지 증폭기들(642) 내에 데이터를 배치할 수 있고, 판독 동작을 위해 데이터 출력을 판독할 수 있다. 열 디코더(634)는 뱅크 제어 로직 선택 및 열 어드레스 카운터 선택에 기초하여 I/O 게이팅(640)을 위한 열 선택을 행한다.
일 실시예에서, 판독 래치(650)는 판독 동작을 위해 I/O 게이팅(640)으로부터 데이터 비트들을 수신하도록 결합된다. 판독 래치(650)는 데이터를 멀티플렉서(652)로 공급하고, 멀티플렉서는 디바이스 데이터 인터페이스에 대응하는 수의 비트(메모리 디바이스(600)에 예시된 N개의 DQ 비트)를 선택할 수 있다. 멀티플렉서(652)는 데이터를 드라이버(654)에 전송할 수 있고, 드라이버는 I/O 커넥터들 DQ[0:(N-1)] 상에서 데이터를 구동할 것이다. 구체적으로 예시되지는 않았지만, 드라이버(654)는 타이밍에 기초하여 하나 이상의 데이터 스트로브 라인을 구동할 수 있다는 것이 이해될 것이다. 기입 동작을 위해, 컨트롤러는 DQ[0:(N-1)] 상에 데이터를 제공할 것이다. 일 실시예에서, 수신기(660)는 데이터 버스로부터 기입 데이터를 수신하고, 그것을 입력 레지스터 또는 입력 버퍼(662)에 입력한다. 일 실시예에서, 수신기(660)는 메모리 디바이스가 판독 동작을 수행해야 할 때를 나타낼 수 있는 데이터 마스크 신호(DM)를 수신한다. 입력 레지스터(662)는 데이터 스트로브 라인에 따라 데이터를 샘플링하고, 데이터를 I/O 게이팅(640)에 제공하는 기입 드라이버(664)에 데이터를 래치할 수 있다.
일 실시예에서, 메모리 디바이스(600)는 I/O 게이팅(640)과 판독 및 기입 경로들 사이에 데이터를 전송하기 위한 I/O 경로들(670)을 포함한다. 따라서, 일 실시예에서, 데이터 경로는 판독 경로 및 기입 경로를 포함한다. I/O 경로들(670)은 하나 이상의 메모리 어레이들(630)을 DQ[0:(N-1)]를 언급하는 특정 I/O 커넥터들에 매핑하도록 특정하게 라우팅될 수 있다. 특정 매핑은 데이터뿐만 아니라 데이터 경로들을 커버하기 위한 ECC의 확장을 가능하게 한다.
도 7은 I/O 에러들을 체크하고 정정하기 위해 ECC 코드들을 적용할 수 있는 데이터 경로 매핑의 실시예의 블록 다이어그램이다. 다이어그램(700)은 데이터 I/O 대 메모리 서브어레이들의 매핑의 예시를 제공한다. 더 구체적으로, 행렬(710)은 ECC 코드 행렬을 나타낸다. 행렬(710)은 코드들의 Y개의 열(C[0:(Y-1)])을 포함하고, 각각의 코드는 X 코드 비트들 또는 체크 비트들(CB[0:(X-1)])을 포함한다. 일 실시예에서, 행렬(710)의 Y개의 코드들은 D[0:(Y-1)]인 데이터 비트들(720)에 대응한다. 코드 워드로부터의 코드들(예를 들어, 데이터 비트들 중 선택된 것들)의 계산은 에러들의 체킹 및 정정을 허용할 수 있다. 코드들 중 임의의 것에서의 0이 아닌 신드롬(예를 들어, 데이터 비트들 및 ECC 비트들로부터의 대응하는 계산들과 행렬의 코드들의 XOR)은 에러를 나타낼 수 있다.
일 실시예에서, 데이터 비트들(720)은 매핑(730)으로 I/O 핀들에 매핑된다. 그러한 매핑은 표준화된 출력, 또는 특정 디바이스에 대한 구성된 구현에 기초할 수 있으며, 여기서 특정 핀들은 특정 I/O로서 지정되고 해석된다. 매핑(730)은 데이터 비트들(720)을 I/O 핀들(740)에 매핑할 수 있다. 특정 I/O 핀들(740)의 매핑에 의해, 행렬(710)의 ECC 코드들과 I/O 핀들 사이에 상관이 존재한다. 예시된 바와 같이, 시스템(700)은 Z개의 I/O 핀들(740)(즉, I/O[0:(Z-1)])을 포함한다. 전형적인 시스템에서, 데이터는 다수의 사이클에 걸쳐 버스트되고, 따라서 전형적으로 Z=Y/BL에 의해 관련되는 총 수의 I/O 핀들이 시스템에 존재하고(총 수는 모든 메모리 디바이스들 상의 핀들을 포함함), 여기서 BL은 시스템에서 전송되는 데이터의 사이클의 수 또는 버스트 길이이다. 개별 메모리 디바이스에 대해, 디바이스당 I/O 핀의 수는 전형적으로 Z/(디바이스의 수)이거나, 핀의 총 수를 디바이스의 수로 나눈 값일 것이다. 특정 구현에 관계없이, 특정 메모리 디바이스의 I/O 핀들과 행렬(710)의 코드들 사이에 상관이 존재한다. 그러한 상관 관계는 많은 ECC 컨텍스트들에서 구현될 수 있다.
본 명세서에 설명된 바와 같이, 시스템(700)은 I/O 대 서브어레이 매핑(750)을 포함한다. 매핑(750)은 서브어레이들(760)에 의해 표현되는 그의 메모리 어레이 리소스들이 시스템(700) 내의 유일한 I/O 핀들 또는 시스템(700) 내의 데이터에 대한 전체 I/O 핀들의 일부일 수 있는 개별 메모리 디바이스에 대한 특정 I/O 핀들(740)에 매핑되는 각각의 개별 메모리 디바이스에 대한 매핑을 나타낸다. M개의 서브어레이(760)가 예시되어 있고, 여기서 M은 메모리 디바이스의 구현에 기초하여 달라질 수 있다. 일 실시예에서, M은, 예를 들어, 단일 메모리 디바이스에 대한 I/O 핀의 수와 관련되고, 여기서 M은 Z/(디바이스의 수)의 배수일 수 있다. 매핑(750)은 I/O 핀들(740)로의 서브어레이들(760)의 라우팅이 시스템(700)에 대한 ECC 패턴에 따르는 것을 가능하게 한다. 일 실시예에서, ECC 코드들 및 I/O 핀들에 대한 서브어레이들의 매핑은 행렬(710)의 코드가 특정 I/O 핀(740)에 대응하는 것을 가능하게 하고, 이는 연관된 서브어레이(760)에 대한 I/O 에러들 및 데이터 손상 에러들을 체크하고 정정할 수 있다. 매핑(750)은 단일 I/O 핀에 대한 서브어레이(760)의 배타적 매핑을 가능하게 한다. 매핑(750)은 단일 I/O 핀에 배타적으로 다수의 서브어레이의 매핑을 가능하게 한다.
도 8은 특정 I/O에 매핑된 데이터 경로들을 갖는 메모리 디바이스를 제조하기 위한 프로세스의 실시예의 플로 다이어그램이다. 플로(800)는 RAS에 대한 특정 I/O에 매핑된 데이터 경로들을 갖는 디바이스를 제조하기 위한 플로를 나타낸다. 메모리 디바이스를 제조하기 위해, 제조자가 어레이/서브어레이 구성을 결정한다(802). 어레이 구성은 메모리 리소스들의 아키텍처를 언급한다. 따라서, 메모리 셀들은 행들 및 뱅크들로 조직되고, 뱅크들은 서브어레이들 또는 서브-뱅크들로서 조직된다.
일 실시예에서, 제조자는 특정 메모리 서브어레이들이 특정 I/O에 매핑되도록, 메모리 어레이 구조의 데이터 경로들을 메모리 디바이스에 대한 특정 I/O로 라우팅한다(804). 제조자가 ECC 구현에 사용될 특정 ECC 코드를 식별할 필요가 없다는 것이 이해될 것이다. 단순히 서브어레이들을 특정 I/O에 매핑함으로써, 서브어레이들로부터의 모든 데이터가 특정 I/O 커넥터에 매핑되는 것(이는 결국 행렬 내의 특정 ECC 코드와 연관될 것임)에 의해 서브어레이들에 ECC의 적용을 가능하게 할 수 있다. 따라서, 서브어레이를 I/O 커넥터에 상호접속하는 신호 라인들 및 회로 로직은 서브어레이와 I/O 커넥터 사이의 모든 데이터를 라우팅하여 I/O 커넥터에 대한 ECC가 데이터 경로들에 또한 적용되는 것을 보장할 수 있다.
제조자는 데이터 신호들을 라우팅하는 회로를 생성하는 것을 포함하여, 라우팅에 따라 디바이스를 제조한다(806). 일 실시예에서, 메모리 디바이스는 프로세서를 갖는 SOC에 통합된다(810). SOC 플랫폼 상으로의 메모리 다이의 통합은 동일한 제조자 또는 상이한 제조자에 의해 수행될 수 있다. 전형적으로 오늘날, SOC 내로의 통합은 메모리 칩들을 제조하는 것과는 상이한 엔티티에 의해 발생할 것이다.
도 9는 특정 I/O에 매핑된 데이터 경로들을 갖는 메모리 디바이스에 대한 데이터 액세스를 위한 프로세스의 실시예의 플로 다이어그램이다. 프로세스(900)는 특정 I/O 커넥터들에 매핑된 I/O를 갖는 메모리 디바이스들에 대한 액세스를 수행하는 일 실시예를 예시한다. 메모리를 통합하는 시스템의 프로세서는 메모리 디바이스들로부터의 데이터 액세스에 대한 요청들을 초래하는 동작들을 실행한다(902). 일 실시예에서, 메모리 디바이스들에 대한 액세스를 제어하는 메모리 컨트롤러는 프로세서에 의해 실행되는 동작들에 따라 데이터를 판독하거나 기입하기 위한 액세스 커맨드들을 생성한다(904).
기입 동작(906 기입 분기)의 경우, 메모리 컨트롤러는 메모리에 기입될 데이터에 대한 ECC를 계산할 수 있다(908). 그 후 컨트롤러는 데이터 및 ECC 비트들과 함께 기입 커맨드를 전송한다(910). 일 실시예에서, 시스템은 온-패키지 또는 온-칩 메모리로서 메모리를 포함한다. 따라서, 컨트롤러는 데이터 워드를 온-칩 메모리 I/O로 라우팅할 수 있다(912). 일 실시예에서, 온-칩 메모리 디바이스들은 I/O에서 데이터를 수신하고, 데이터를 특정 I/O 커넥터들에 매핑된 서브어레이들로 내부적으로 라우팅한다(914). I/O는 본 명세서에 설명된 임의의 실시예에 따라 매핑되고, 여기서 I/O는 내부 어레이에 매핑되어 데이터에 대한 ECC 코드가 내부 데이터 비트 에러들을 체크할 뿐만 아니라 특정 매핑으로 인한 서브어레이들에 대한 I/O 데이터 경로를 체크하는 것을 가능하게 한다. 메모리 디바이스들은 데이터 경로 매핑에 따라 그들의 내부 메모리 서브어레이들에 데이터를 저장한다(916).
판독 동작(906 판독 분기)의 경우, 메모리 컨트롤러는 판독 커맨드를 메모리에 전송할 수 있다(918). 판독 커맨드에 응답하여, 메모리 디바이스들은 데이터 및 데이터에 대한 연관된 ECC 비트들을 페치한다(920). 일 실시예에서, 메모리 디바이스들은 그들의 내부 서브어레이들로부터의 데이터를 특정 I/O 커넥터들로 라우팅한다(922). I/O는 본 명세서에 설명된 임의의 실시예에 따라 매핑되고, 여기서 I/O는 내부 어레이에 매핑되어 데이터에 대한 ECC 코드가 내부 데이터 비트 에러들을 체크할 뿐만 아니라 특정 매핑으로 인한 서브어레이들에 대한 I/O 데이터 경로를 체크하는 것을 가능하게 한다. 메모리 디바이스들은 데이터를 컨트롤러에 전송하고, 컨트롤러는 데이터 및 ECC 비트들을 수신할 수 있다(924). 일 실시예에서, 컨트롤러는 ECC를 계산하여 에러들을 체크하고 어쩌면 정정하고, 이는 데이터 및 I/O 경로 둘 다에 적용될 것이다(926).
도 10은 ECC의 적용을 위해 I/O에 대한 어레이들의 매핑을 갖는 메모리 디바이스가 구현될 수 있는 컴퓨팅 시스템의 실시예의 블록 다이어그램이다. 시스템(1000)은 본 명세서에 설명된 임의의 실시예에 따른 컴퓨팅 디바이스를 나타내고, 랩톱 컴퓨터, 데스크톱 컴퓨터, 태블릿 컴퓨터, 서버, 게이밍 또는 엔터테인먼트 제어 시스템, 스캐너, 복사기, 프린터, 라우팅 또는 스위칭 디바이스, 내장된 컴퓨팅 디바이스, 스마트폰, 웨어러블 디바이스, 사물 인터넷 디바이스 또는 다른 전자 디바이스일 수 있다.
시스템(1000)은 시스템(1000)에 대한 프로세싱, 동작 관리, 및 명령어들의 실행을 제공하는 프로세서(1010)를 포함한다. 프로세서(1010)는 임의의 타입의 마이크로프로세서, 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 프로세싱 코어, 또는 시스템(1000)에 대한 프로세싱을 제공하는 다른 프로세싱 하드웨어, 또는 프로세서들의 조합을 포함할 수 있다. 프로세서(1010)는 시스템(1000)의 전체 동작을 제어하고, 하나 이상의 프로그램 가능 범용 또는 특수 목적 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, 프로그램 가능 컨트롤러들, 특정 용도 집적 회로(ASIC)들, 프로그램 가능 로직 디바이스(PLD)들, 또는 다른 유사한 것, 또는 그러한 디바이스들의 조합일 수 있거나 이들을 포함할 수 있다.
일 실시예에서, 시스템(1000)은 프로세서(1010)에 결합된 인터페이스(1012)를 포함하며, 이는 메모리 서브시스템(1020) 또는 그래픽 인터페이스 컴포넌트들(1040)과 같은 더 높은 대역폭 연결들을 필요로 하는 시스템 컴포넌트들에 대한 더 고속의 인터페이스 또는 높은 스루풋 인터페이스를 나타낼 수 있다. 인터페이스(1012)는 독립형 컴포넌트이거나 프로세서 다이 상에 통합될 수 있는 "노스 브리지" 회로를 나타낼 수 있다. 존재하는 경우, 그래픽 인터페이스(1040)는 시스템(1000)의 사용자에게 시각적 디스플레이를 제공하기 위한 그래픽 컴포넌트들에 인터페이스한다. 일 실시예에서, 그래픽 인터페이스(1040)는 메모리(1030)에 저장된 데이터에 기초하여 또는 프로세서(1010)에 의해 실행되는 동작들 또는 둘 다에 기초하여 디스플레이를 생성한다.
메모리 서브시스템(1020)은 시스템(1000)의 메인 메모리를 나타내고, 프로세서(1010)에 의해 실행되는 코드, 또는 루틴을 실행할 때 사용되는 데이터 값들을 위한 스토리지를 제공한다. 메모리 서브시스템(1020)은 판독 전용 메모리(ROM), 플래시 메모리, DRAM과 같은 하나 이상의 다양한 랜덤 액세스 메모리(RAM)와 같은 하나 이상의 메모리 디바이스(1030), 또는 다른 메모리 디바이스들, 또는 그러한 디바이스들의 조합을 포함할 수 있다. 메모리(1030)는 다른 것들 중에서도, 시스템(1000)에서의 명령어들의 실행을 위한 소프트웨어 플랫폼을 제공하기 위한 운영 체제(OS)(1032)를 저장하고 호스팅한다. 추가적으로, 애플리케이션들(1034)은 메모리(1030)로부터의 OS(1032)의 소프트웨어 플랫폼 상에서 실행될 수 있다. 애플리케이션들(1034)은 하나 이상의 기능의 실행을 수행하는 그들 자신의 연산 로직을 갖는 프로그램을 나타낸다. 프로세스들(1036)은 OS(1032) 또는 하나 이상의 애플리케이션(1034) 또는 조합에 보조 기능을 제공하는 에이전트들 또는 루틴들을 나타낸다. OS(1032), 애플리케이션들(1034), 및 프로세스들(1036)는 시스템(1000)에 대한 기능들을 제공하기 위한 소프트웨어 로직을 제공한다. 일 실시예에서, 메모리 서브시스템(1020)은 메모리 컨트롤러(1022)를 포함하며, 이는 커맨드들을 생성하여 메모리 디바이스(1030)에 발행하는 메모리 컨트롤러이다. 메모리 컨트롤러(1022)는 프로세서(1010)의 물리적 부분 또는 인터페이스(1012)의 물리적 부분일 수 있다는 것이 이해될 것이다. 예를 들어, 메모리 컨트롤러(1022)는 프로세서(1010)를 갖는 회로 상에 통합된, 통합 메모리 컨트롤러일 수 있다.
구체적으로 예시되지는 않았지만, 시스템(1000)은 메모리 버스, 그래픽 버스, 인터페이스 버스 등과 같은 디바이스들 사이의 하나 이상의 버스 또는 버스 시스템을 포함할 수 있다는 것이 이해될 것이다. 버스들 또는 다른 신호 라인들은 컴포넌트들을 함께 통신적으로 또는 전기적으로 결합하거나, 또는 컴포넌트들을 통신적으로 그리고 전기적으로 결합할 수 있다. 버스들은 물리 통신 라인들, 포인트-투-포인트 연결들, 브리지들, 어댑터들, 컨트롤러들, 또는 다른 회로 또는 조합을 포함할 수 있다. 버스들은, 예를 들어 시스템 버스, PCI(Peripheral Component Interconnect) 버스, 하이퍼트랜스포트(HyperTransport) 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, 범용 직렬 버스(USB), 또는 IEEE(Institute of Electrical and Electronics Engineers) 표준 1394 버스(일반적으로 "파이어와이어"로 언급됨) 중 하나 이상을 포함할 수 있다.
일 실시예에서, 시스템(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)은 스토리지 디바이스(들)(1084)를 포함하며, 이는 하나 이상의 자기, 솔리드 스테이트, 또는 광학 기반 디스크들, 또는 조합과 같은 비휘발성 방식으로 많은 양의 데이터를 저장하기 위한 임의의 종래의 매체일 수 있거나 이들을 포함할 수 있다. 스토리지(1084)는 코드 또는 명령어들 및 데이터(1086)를 지속적인 상태로 보유한다(즉, 값은 시스템(1000)에 대한 전력의 중단에도 불구하고 보유됨). 비록 메모리(1030)는 전형적으로 프로세서(1010)에 명령어들을 제공하는 실행 또는 운영 메모리이기는 하지만, 스토리지(1084)는 일반적으로 "메모리"인 것으로 간주될 수 있다. 스토리지(1084)는 비휘발성인 반면, 메모리(1030)는 휘발성 메모리를 포함할 수 있다(즉, 데이터의 값 또는 상태는 시스템(1000)에 대해 전력이 중단되면 불확정적임). 일 실시예에서, 스토리지 서브시스템(1080)은 스토리지(1084)와 인터페이스하는 컨트롤러(1082)를 포함한다. 일 실시예에서, 컨트롤러(1082)는 인터페이스(1014) 또는 프로세서(1010)의 물리적 부분이거나, 또는 프로세서(1010)와 인터페이스(1014) 둘 다에서의 회로들 또는 로직을 포함할 수 있다.
전원(1002)은 시스템(1000)의 컴포넌트들에 전력을 제공한다. 더 구체적으로, 전원(1002)은 시스템(1000)의 컴포넌트들에 전력을 제공하기 위해 시스템(1002) 내의 하나 또는 다수의 전력 공급 장치들(1004)에 전형적으로 인터페이스한다. 일 실시예에서, 전력 공급 장치(1004)는 벽 콘센트에 플러그하기 위한 AC-DC(교류-직류) 어댑터를 포함한다. 그러한 AC 전력은 재생가능 에너지(예를 들어, 태양 전력) 전원(1002)일 수 있다. 일 실시예에서, 전원(1002)은 외부 AC-DC 컨버터와 같은 DC 전원을 포함한다. 일 실시예에서, 전원(1002) 또는 전력 공급 장치(1004)는 충전 필드에의 근접을 통해 충전하기 위한 무선 충전 하드웨어를 포함한다. 일 실시예에서, 전원(1002)은 내부 배터리 또는 연료 전지 소스를 포함할 수 있다.
일 실시예에서, 시스템(1000)의 메모리 서브시스템(1020)은 메모리(1030)에 저장된 데이터에 대해 ECC를 수행하는 로직을 나타내는 ECC 엔진(1092)을 포함한다. 일 실시예에서, 메모리(1030)는, 본 명세서에 설명된 임의의 실시예에 따른, 특정 I/O 커넥터들로의 메모리의 어레이들의 매핑을 나타내는 I/O 매핑(1090)을 포함한다. I/O는 본 명세서에 설명된 임의의 실시예에 따라 매핑되고, 여기서 I/O는 내부 서브어레이들에 매핑되어 데이터에 대한 ECC 코드가 내부 데이터 비트 에러들을 체크할 뿐만 아니라, 특정 매핑으로 인한 서브어레이들에 대한 I/O 데이터 경로를 체크하는 것을 가능하게 한다. 따라서, ECC 엔진(1092)이 ECC 계산을 수행할 때, ECC는 I/O 데이터 경로들의 특정 매핑으로 인해 데이터 및 I/O 경로들 둘 다를 커버한다.
도 11은 ECC의 적용을 위해 I/O로의 어레이들의 매핑을 갖는 메모리 디바이스가 구현될 수 있는 모바일 디바이스의 실시예의 블록 다이어그램이다. 디바이스(1100)는 컴퓨팅 태블릿, 모바일 폰 또는 스마트폰, 무선-사용가능 이-리더(wireless-enabled e-reader), 웨어러블 컴퓨팅 디바이스, 사물 인터넷 디바이스, 또는 다른 모바일 디바이스와 같은 모바일 컴퓨팅 디바이스, 또는 내장된 컴퓨팅 디바이스를 나타낸다. 컴포넌트들 중 특정한 것들이 일반적으로 도시되어 있고, 그러한 디바이스의 모든 컴포넌트들이 디바이스(1100)에 도시되어 있는 것은 아니라는 점이 이해될 것이다.
디바이스(1100)는 디바이스(1100)의 주 프로세싱 동작을 수행하는 프로세서(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 디스플레이를 포함한다. 고해상도는 약 100 PPI(pixels per inch) 이상의 픽셀 밀도를 갖는 디스플레이를 언급할 수 있고, 풀 HD(예를 들어, 1080p), 레티나 디스플레이, 4K(초고해상도 또는 UHD) 등과 같은 포맷들을 포함할 수 있다. 일 실시예에서, 디스플레이 서브시스템(1130)은 프로세서(1110)에 의해 실행되는 연산들 및 메모리에 저장된 데이터에 기초하여 디스플레이 정보를 생성한다.
I/O 컨트롤러(1140)는 사용자와의 상호작용에 관련된 하드웨어 디바이스들 및 소프트웨어 컴포넌트들을 나타낸다. I/O 컨트롤러(1140)는 오디오 서브시스템(1120), 또는 디스플레이 서브시스템(1130) 또는 둘 다의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가적으로, I/O 컨트롤러(1140)는 그를 통해 사용자가 시스템과 상호작용할 수 있는 디바이스(1100)에 연결되는 추가적인 디바이스들에 대한 연결 포인트를 예시한다. 예를 들어, 디바이스(1100)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스들, 스피커 또는 스테레오 시스템들, 비디오 시스템들 또는 다른 디스플레이 디바이스, 키보드 또는 키패드 디바이스들, 또는 카드 판독기들 또는 다른 디바이스들과 같이 특정 애플리케이션들과 함께 사용하기 위한 다른 I/O 디바이스들을 포함할 수 있다.
위에 언급된 바와 같이, I/O 컨트롤러(1140)는 오디오 서브시스템(1120) 또는 디스플레이 서브시스템(1130) 또는 둘 다와 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 디바이스(1100)의 하나 이상의 애플리케이션 또는 기능에 대한 입력 또는 커맨드들을 제공할 수 있다. 추가적으로, 오디오 출력이 디스플레이 출력 대신에 또는 그에 더하여 제공될 수 있다. 다른 예에서, 디스플레이 서브시스템이 터치스크린을 포함하는 경우, 디스플레이 디바이스는 또한, I/O 컨트롤러(1140)에 의해 적어도 부분적으로 관리될 수 있는 입력 디바이스로서 역할을 한다. I/O 컨트롤러(1140)에 의해 관리되는 I/O 기능들을 제공하기 위한 추가적인 버튼들 또는 스위치들이 디바이스(1100) 상에 또한 존재할 수 있다.
일 실시예에서, I/O 컨트롤러(1140)는 가속도계, 카메라, 광 센서 또는 다른 환경 센서, 자이로스코프, 글로벌 포지셔닝 시스템(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)은, GSM(글로벌 이동 통신 시스템) 또는 변형물들 또는 파생물들, CDMA(코드 분할 다중 액세스) 또는 변형물들 또는 파생물들, TDM(시분할 다중화) 또는 변형물들 또는 파생물들, LTE(롱 텀 에볼루션 - "4G"로도 언급됨), 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 것과 같이, 무선 캐리어들에 의해 제공되는 셀룰러 네트워크 연결성을 일반적으로 언급한다. 무선 연결성(1174)은 셀룰러가 아닌 무선 연결성을 언급하고, 개인 영역 네트워크들(예컨대 블루투스), 로컬 영역 네트워크(예컨대 WiFi), 및/또는 광역 네트워크들(예컨대 WiMax), 또는 다른 무선 통신, 또는 조합을 포함할 수 있다. 무선 통신은 비-고체 매체를 통해 변조된 전자기 방사의 사용을 통한 데이터의 전송을 언급한다. 유선 통신은 고체 통신 매체를 통해 발생한다.
주변 장치 연결들(1180)은 주변 장치 연결들을 이루기 위해 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)뿐만 아니라, 하드웨어 인터페이스들 및 커넥터들을 포함한다. 디바이스(1100)는 다른 컴퓨팅 디바이스들로의 주변 디바이스("~로" 1182)일 뿐만 아니라, 그것에 연결된 주변 디바이스들("~로부터" 1184) 둘 다일 수 있다는 것이 이해될 것이다. 디바이스(1100)는 일반적으로 디바이스(1100) 상의 콘텐츠를 관리하는 것(예를 들어, 다운로딩, 업로딩, 변경, 동기화)과 같은 목적들을 위해 다른 컴퓨팅 디바이스들에 연결하는 "도킹" 커넥터를 갖는다. 추가적으로, 도킹 커넥터는 디바이스(1100)가 콘텐츠 출력을 제어할 수 있게 하는 특정 주변 장치들에, 예를 들어 시청각 또는 다른 시스템들에 디바이스(1100)가 연결될 수 있게 할 수 있다.
전용 도킹 커넥터 또는 다른 전용 연결 하드웨어에 더하여, 디바이스(1100)는 공통 또는 표준 기반 커넥터들을 통해 주변 장치 연결들(1180)을 이룰 수 있다. 공통 타입들은 범용 직렬 버스(USB) 커넥터(다수의 상이한 하드웨어 인터페이스들 중 임의의 것을 포함할 수 있음), MDP(MiniDisplayPort)를 포함하는 DisplayPort, 고해상도 멀티미디어 인터페이스(HDMI), 파이어와이어, 또는 다른 타입을 포함할 수 있다.
일 실시예에서, 시스템(1100)의 메모리 서브시스템(1160)은, 메모리(1162)에 저장된 데이터에 대해 ECC를 수행하는 로직을 나타내는 ECC 엔진(1192)을 포함한다. 일 실시예에서, 메모리(1162)는, 본 명세서에 설명된 임의의 실시예에 따른, 특정 I/O 커넥터들로의 메모리의 어레이들의 매핑을 나타내는 I/O 매핑(1190)을 포함한다. I/O는 본 명세서에 설명된 임의의 실시예에 따라 매핑되고, 여기서 I/O는 내부 서브어레이들에 매핑되어 데이터에 대한 ECC 코드가 내부 데이터 비트 에러들을 체크할 뿐만 아니라, 특정 매핑으로 인한 서브어레이들에 대한 I/O 데이터 경로를 체크하는 것을 가능하게 한다. 따라서, ECC 엔진(1192)이 ECC 계산을 수행할 때, ECC는 I/O 데이터 경로들의 특정 매핑으로 인해 데이터 및 I/O 경로들 둘 다를 커버한다.
일 양태에서, 메모리 디바이스는: 상기 메모리 디바이스를 외부 디바이스에 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터; 메모리 셀들의 다수의 행을 각각 포함하는 다수의 서브어레이를 포함하는, 메모리 어레이; 및 상기 메모리 어레이를 상기 I/O 커넥터들에 결합하기 위한 하나 이상의 신호 라인을 포함하는 데이터 경로를 포함하고, 상기 데이터 경로는 에러 체킹 및 정정(ECC) 코드 행렬에 따라 메모리 서브어레이와 특정 I/O 커넥터 사이에 모든 데이터를 라우팅하기 위한 것이고, 상기 특정 I/O 커넥터에 대응하는 상기 ECC 코드 행렬의 코드는 상기 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크 및 정정하기 위한 것이다.
일 실시예에서, 상기 메모리 디바이스는 프로세서 다이를 포함하는 시스템 온 칩의 인-패키지 메모리 디바이스를 포함한다. 일 실시예에서, 상기 메모리 디바이스는 동적 랜덤 액세스 메모리(DRAM) 다이를 포함한다. 일 실시예에서, 상기 다수의 I/O 커넥터는 18-비트 데이터 인터페이스를 포함한다. 일 실시예에서, 상기 다수의 I/O 커넥터는 36-비트 데이터 인터페이스를 포함한다. 일 실시예에서, 상기 메모리 서브어레이는 상기 메모리 디바이스의 뱅크의 서브어레이를 포함한다. 일 실시예에서, 상기 데이터 경로는 단일 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 다수의 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 메모리 서브어레이와 상기 특정 I/O 커넥터 사이에 다수의 데이터 신호 라인을 멀티플렉싱하는 멀티플렉서를 추가로 포함한다. 일 실시예에서, 상기 메모리 서브어레이의 모든 데이터 신호 라인들은 단일 멀티플렉서로 라우팅된다. 일 실시예에서, 상기 데이터 경로는 다수의 전송 사이클에 걸쳐 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터 비트들의 버스트를 라우팅하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 기입 동작을 위해 상기 특정 I/O 커넥터로부터 상기 메모리 서브어레이로 데이터를 라우팅하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 판독 동작을 위해 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터를 라우팅하기 위한 것이다.
일 양태에서, 시스템 온 칩은: 기판 상의 프로세서 다이; 및 상기 기판을 통해 상기 프로세서 다이에 결합된 인-패키지 동적 랜덤 액세스 메모리(DRAM) 디바이스 - 상기 DRAM 디바이스는 상기 DRAM 디바이스를 상기 프로세서 다이에 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터를 포함함 -; 메모리 셀들의 다수의 행을 갖는 다수의 서브어레이를 포함하는 메모리 뱅크; 및 상기 서브어레이들을 상기 I/O 커넥터들에 결합하기 위한 하나 이상의 신호 라인을 포함하는 다수의 데이터 경로를 포함하고, 상기 데이터 경로는 에러 체킹 및 정정(ECC) 코드 행렬에 따라 특정 서브어레이와 특정 I/O 커넥터 사이에 모든 데이터를 라우팅하기 위한 것이고, 상기 특정 I/O 커넥터에 대응하는 상기 ECC 코드 행렬의 코드는 상기 특정 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크 및 정정하기 위한 것이다.
일 실시예에서, 상기 다수의 I/O 커넥터는 18-비트 또는 36-비트 데이터 인터페이스를 포함한다. 일 실시예에서, 상기 데이터 경로는 단일 서브어레이를 배타적으로 상기 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 다수의 서브어레이를 배타적으로 상기 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 DRAM 디바이스는 상기 메모리 서브어레이와 상기 특정 I/O 커넥터 사이에 다수의 데이터 신호 라인을 멀티플렉싱하기 위한 멀티플렉서를 추가로 포함한다. 일 실시예에서, 상기 메모리 서브어레이의 모든 데이터 신호 라인들은 단일 멀티플렉서로 라우팅된다. 일 실시예에서, 상기 데이터 경로들은 다수의 전송 사이클에 걸쳐 상기 특정 서브어레이로부터 상기 특정 I/O 커넥터로 데이터 비트들의 버스트를 라우팅하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 기입 동작을 위해 상기 특정 I/O 커넥터로부터 상기 메모리 서브어레이로 데이터를 라우팅하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 판독 동작을 위해 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터를 라우팅하기 위한 것이다. 일 실시예에서, 상기 프로세서 다이 상의 메모리 컨트롤러; 상기 프로세서 다이에 통신적으로 결합된 디스플레이; 상기 시스템에 전력을 공급하기 위한 배터리; 또는 상기 프로세서 다이에 통신적으로 결합된 네트워크 인터페이스 중 하나 이상을 추가로 포함한다.
일 양태에서, 메모리 디바이스와의 입력/출력(I/O)을 위한 방법은: 상기 메모리 디바이스의 메모리 서브어레이를 상기 메모리 디바이스의 다수의 I/O 커넥터 중 특정 I/O 커넥터와 연관시키는 단계 - 상기 특정 I/O 커넥터에 대응하는 ECC 코드의 비트는 상기 연관된 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크하고 정정하기 위한 것임 -; 및 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 모든 I/O 데이터 신호 라인들을 라우팅하는 단계를 포함한다.
일 실시예에서, 상기 메모리 디바이스는 프로세서 다이를 포함하는 시스템 온 칩의 인-패키지 메모리 디바이스를 포함한다. 일 실시예에서, 상기 메모리 서브어레이는 동적 랜덤 액세스 메모리(DRAM) 다이의 뱅크의 서브어레이를 포함한다. 일 실시예에서, 상기 다수의 I/O 커넥터는 18-비트 데이터 인터페이스를 포함한다. 일 실시예에서, 상기 다수의 I/O 커넥터는 36-비트 데이터 인터페이스를 포함한다. 일 실시예에서, 상기 메모리 서브어레이는 상기 메모리 디바이스의 뱅크의 서브어레이를 포함한다. 일 실시예에서, 상기 데이터 경로는 단일 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 데이터 경로는 다수의 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것이다. 일 실시예에서, 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 모든 I/O 데이터 신호 라인들을 상기 특정 I/O 커넥터에 매핑하기 위해 멀티플렉서를 통해 상기 I/O 데이터 신호 라인들을 라우팅하는 단계를 포함한다. 일 실시예에서, 상기 멀티플렉서를 통해 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 다수의 메모리 서브어레이의 상기 I/O 데이터 신호 라인들을 상기 멀티플렉서를 통해 상기 특정 I/O 커넥터로 라우팅하는 단계를 포함한다. 일 실시예에서, 상기 멀티플렉서를 통해 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 상기 서브어레이의 모든 데이터 신호 라인들을 단일 멀티플렉서로 라우팅하는 단계를 포함한다. 일 실시예에서, 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 다수의 전송 사이클에 걸쳐 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터 비트들의 버스트로 상기 I/O 데이터를 라우팅하는 단계를 포함한다. 일 실시예에서, 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 기입 동작을 위해 상기 특정 I/O 커넥터로부터 상기 메모리 서브어레이로 데이터를 라우팅하는 단계를 포함한다. 일 실시예에서, 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 판독 동작을 위해 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터를 라우팅하는 단계를 포함한다.
일 양태에서, 장치는 전술한 방법의 임의의 실시예에 따라 메모리 디바이스와의 입력/출력(I/O)을 위한 방법을 실행하기 위한 동작들을 수행하기 위한 수단을 포함한다. 일 양태에서, 제조 물품은 액세스될 때 머신으로 하여금 전술한 방법의 임의의 실시예에 따라 메모리 디바이스와의 입력/출력(I/O)을 위한 방법을 실행하는 동작들을 수행하게 하는 콘텐츠가 그 위에 저장된 컴퓨터 판독가능 스토리지 매체를 포함한다.
본 명세서에 예시된 바와 같은 플로 다이어그램들은 다양한 프로세스 액션들의 시퀀스들의 예들을 제공한다. 이 플로 다이어그램들은 소프트웨어 또는 펌웨어 루틴에 의해 실행될 동작들뿐만 아니라 물리적 동작들을 나타낼 수 있다. 일 실시예에서, 플로 다이어그램은 하드웨어, 소프트웨어, 또는 조합으로 구현될 수 있는 유한 상태 머신(FSM)의 상태를 예시할 수 있다. 비록 특정 시퀀스 또는 순서로 도시되어 있지만, 달리 특정되지 않는 한, 액션들의 순서는 수정될 수 있다. 따라서, 예시된 실시예들은 예로서만 이해되어야 하며, 프로세스는 상이한 순서로 수행될 수 있고, 일부 액션들은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 액션이 다양한 실시예들에서 생략될 수 있고; 따라서, 모든 액션들이 모든 실시예에서 요구되는 것은 아니다. 다른 프로세스 플로들이 가능하다.
다양한 동작들 또는 기능들이 본 명세서에 설명되는 정도까지, 이들은 소프트웨어 코드, 명령어들, 구성, 데이터, 또는 조합으로서 설명되거나 정의될 수 있다. 콘텐츠는 직접 실행가능할 수 있거나("오브젝트" 또는 "실행파일(executable)" 형태), 소스 코드, 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 본 명세서에 설명된 실시예들의 소프트웨어 콘텐츠는 그 위에 콘텐츠가 저장된 제조 물품을 통해, 또는 통신 인터페이스를 통해 데이터를 전송하도록 통신 인터페이스를 동작시키는 방법을 통해 제공될 수 있다. 머신 판독가능 스토리지 매체는 머신으로 하여금 설명된 기능들 또는 동작들을 수행하게 할 수 있고, 기록가능/비-기록가능 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 스토리지 매체, 광학 스토리지 매체, 플래시 메모리 디바이스들 등)와 같이, 머신(예를 들어, 컴퓨팅 디바이스, 전자 시스템 등)에 의해 액세스 가능한 형태로 정보를 저장하는 임의의 메커니즘을 포함한다. 통신 인터페이스는, 메모리 버스 인터페이스, 프로세서 버스 인터페이스, 인터넷 연결, 디스크 컨트롤러 등과 같은, 다른 디바이스에 통신하는 하드와이어드, 무선, 광학 등의 매체 중 임의의 것에 인터페이스하는 임의의 메커니즘을 포함한다. 통신 인터페이스는 소프트웨어 콘텐츠를 기술하는 데이터 신호를 제공하기 위해 통신 인터페이스를 준비하기 위해 구성 파라미터들을 제공하는 것 또는 신호들을 전송하는 것, 또는 둘 다에 의해 구성될 수 있다. 통신 인터페이스는 통신 인터페이스에 전송되는 하나 이상의 커맨드 또는 신호를 통해 액세스될 수 있다.
본 명세서에 설명된 다양한 컴포넌트들은 설명된 동작들 또는 기능들을 수행하는 수단들일 수 있다. 본 명세서에 설명된 각각의 컴포넌트는 소프트웨어, 하드웨어, 또는 이들의 조합을 포함한다. 이 컴포넌트들은 소프트웨어 모듈들, 하드웨어 모듈들, 특수-목적 하드웨어(예를 들어, 특정 용도 하드웨어, 특정 용도 집적 회로(ASIC)들, 디지털 신호 프로세서(DSP)들 등), 내장된 컨트롤러들, 하드와이어드 회로 등으로서 구현될 수 있다.
본 명세서에 설명된 것 외에도, 본 발명의 개시된 실시예들 및 구현들에 대해 다양한 수정들이 그들의 범위를 벗어나지 않으면서 이루어질 수 있다. 따라서, 본 명세서에서의 예시들 및 예들은 제한적인 것이 아니라 예시적인 의미로 해석되어야 한다. 본 발명의 범위는 후속하는 청구항들의 참조에 의해서만 측정되어야 한다.

Claims (25)

  1. 메모리 디바이스로서,
    상기 메모리 디바이스를 외부 디바이스에 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터;
    메모리 셀들의 다수의 행을 각각 포함하는 다수의 서브어레이를 포함하는 메모리 어레이; 및
    상기 메모리 어레이를 상기 I/O 커넥터들에 결합하기 위한 하나 이상의 신호 라인을 포함하는 데이터 경로를 포함하고, 상기 데이터 경로는 에러 체킹 및 정정(ECC) 코드 행렬에 따라 메모리 서브어레이와 특정 I/O 커넥터 사이에 모든 데이터를 라우팅하기 위한 것이고, 상기 특정 I/O 커넥터에 대응하는 상기 ECC 코드 행렬의 코드는 상기 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크 및 정정하기 위한 것인, 메모리 디바이스.
  2. 제1항에 있어서, 상기 메모리 디바이스는 프로세서 다이를 포함하는 시스템 온 칩의 인-패키지 메모리 디바이스를 포함하는, 메모리 디바이스.
  3. 제2항에 있어서, 상기 메모리 디바이스는 동적 랜덤 액세스 메모리(DRAM) 다이를 포함하는, 메모리 디바이스.
  4. 제1항에 있어서, 상기 다수의 I/O 커넥터는 18-비트 데이터 인터페이스를 포함하는, 메모리 디바이스.
  5. 제1항에 있어서, 상기 다수의 I/O 커넥터는 36-비트 데이터 인터페이스를 포함하는, 메모리 디바이스.
  6. 제1항에 있어서, 상기 메모리 서브어레이는 상기 메모리 디바이스의 뱅크의 서브어레이를 포함하는, 메모리 디바이스.
  7. 제1항에 있어서, 상기 데이터 경로는 단일 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것인, 메모리 디바이스.
  8. 제1항에 있어서, 상기 데이터 경로는 다수의 메모리 서브어레이를 특정 I/O 커넥터에 매핑하기 위한 것인, 메모리 디바이스.
  9. 제1항에 있어서,
    상기 메모리 서브어레이와 상기 특정 I/O 커넥터 사이에 다수의 데이터 신호 라인을 멀티플렉싱하는 멀티플렉서를 추가로 포함하는, 메모리 디바이스.
  10. 제9항에 있어서, 상기 메모리 서브어레이의 모든 데이터 신호 라인들은 단일 멀티플렉서로 라우팅되는, 메모리 디바이스.
  11. 제1항에 있어서, 상기 데이터 경로는 다수의 전송 사이클에 걸쳐 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터 비트들의 버스트를 라우팅하기 위한 것인, 메모리 디바이스.
  12. 제1항에 있어서, 상기 데이터 경로는 기입 동작을 위해 상기 특정 I/O 커넥터로부터 상기 메모리 서브어레이로 데이터를 라우팅하기 위한 것인, 메모리 디바이스.
  13. 제1항에 있어서, 상기 데이터 경로는 판독 동작을 위해 상기 메모리 서브어레이로부터 상기 특정 I/O 커넥터로 데이터를 라우팅하기 위한 것인, 메모리 디바이스.
  14. 시스템 온 칩으로서,
    기판 상의 프로세서 다이; 및
    상기 기판을 통해 상기 프로세서 다이에 결합된 인-패키지 동적 랜덤 액세스 메모리(DRAM) 디바이스를 포함하고, 상기 DRAM 디바이스는
    상기 DRAM 디바이스를 상기 프로세서 다이에 인터페이스하기 위한 다수의 입력/출력(I/O) 커넥터;
    메모리 셀들의 다수의 행을 갖는 다수의 서브어레이를 포함하는 메모리 뱅크; 및
    상기 서브어레이들을 상기 I/O 커넥터들에 결합하기 위한 하나 이상의 신호 라인을 포함하는 다수의 데이터 경로를 포함하고, 데이터 경로는 에러 체킹 및 정정(ECC) 코드 행렬에 따라 특정 서브어레이와 특정 I/O 커넥터 사이에 모든 데이터를 라우팅하기 위한 것이고, 상기 특정 I/O 커넥터에 대응하는 상기 ECC 코드 행렬의 코드는 상기 특정 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크 및 정정하기 위한 것인, 시스템 온 칩.
  15. 제14항에 있어서, 상기 다수의 I/O 커넥터는 18 비트 또는 36 비트 데이터 인터페이스를 포함하는, 시스템 온 칩.
  16. 제14항에 있어서, 상기 데이터 경로는 단일 서브어레이를 상기 특정 I/O 커넥터에만 매핑하기 위한 것인, 시스템 온 칩.
  17. 제14항에 있어서, 상기 데이터 경로는 다수의 서브어레이를 상기 특정 I/O 커넥터에만 매핑하기 위한 것인, 시스템 온 칩.
  18. 제14항에 있어서, 상기 데이터 경로는 기입 동작을 위해 상기 특정 I/O 커넥터로부터 상기 특정 서브어레이로 데이터를 라우팅하고, 판독 동작을 위해 상기 특정 서브어레이로부터 상기 특정 I/O 커넥터로 데이터를 라우팅하기 위한 것인, 시스템 온 칩.
  19. 제14항에 있어서,
    상기 프로세서 다이 상의 메모리 컨트롤러;
    상기 프로세서 다이에 통신적으로 결합된 디스플레이;
    상기 시스템에 전력을 공급하기 위한 배터리; 또는
    상기 프로세서 다이에 통신적으로 결합된 네트워크 인터페이스 중 하나 이상을 추가로 포함하는, 시스템 온 칩.
  20. 메모리 디바이스와의 입력/출력(I/O)을 위한 방법으로서,
    상기 메모리 디바이스의 메모리 서브어레이를 상기 메모리 디바이스의 다수의 I/O 커넥터 중 특정 I/O 커넥터와 연관시키는 단계 - 상기 특정 I/O 커넥터에 대응하는 ECC 코드의 비트는 상기 연관된 메모리 서브어레이에 대한 I/O 에러들 및 데이터 손상 에러들을 체크하고 정정하기 위한 것임 -; 및
    상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 모든 I/O 데이터 신호 라인들을 라우팅하는 단계를 포함하는, 방법.
  21. 제20항에 있어서, 상기 메모리 서브어레이는 동적 랜덤 액세스 메모리(DRAM) 다이의 뱅크의 서브어레이를 포함하는, 방법.
  22. 제20항에 있어서, 상기 특정 I/O 커넥터와 상기 메모리 서브어레이 사이에 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 모든 I/O 데이터 신호 라인들을 상기 특정 I/O 커넥터에 매핑하기 위해 멀티플렉서를 통해 상기 I/O 데이터 신호 라인들을 라우팅하는 단계를 포함하는, 방법.
  23. 제22항에 있어서, 상기 멀티플렉서를 통해 상기 I/O 데이터 신호 라인들을 라우팅하는 단계는 상기 멀티플렉서를 통해 다수의 메모리 서브어레이의 상기 I/O 데이터 신호 라인을 상기 특정 I/O 커넥터에 라우팅하는 단계를 포함하는, 방법.
  24. 삭제
  25. 삭제
KR1020197005804A 2016-09-30 2017-08-30 메모리에서 에러 체킹 및 정정 코드의 확장된 적용 KR102501147B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/282,793 US10120749B2 (en) 2016-09-30 2016-09-30 Extended application of error checking and correction code in memory
US15/282,793 2016-09-30
PCT/US2017/049318 WO2018063698A1 (en) 2016-09-30 2017-08-30 Extended application of error checking and correction code in memory

Publications (2)

Publication Number Publication Date
KR20190049710A KR20190049710A (ko) 2019-05-09
KR102501147B1 true KR102501147B1 (ko) 2023-02-20

Family

ID=61758224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197005804A KR102501147B1 (ko) 2016-09-30 2017-08-30 메모리에서 에러 체킹 및 정정 코드의 확장된 적용

Country Status (5)

Country Link
US (1) US10120749B2 (ko)
KR (1) KR102501147B1 (ko)
CN (1) CN109661654B (ko)
DE (1) DE112017004966T5 (ko)
WO (1) WO2018063698A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3370152B1 (en) 2017-03-02 2019-12-25 INTEL Corporation Integrated error checking and correction (ecc) in memory devices with fixed bandwidth interfaces
WO2019123216A1 (en) * 2017-12-21 2019-06-27 King Abdullah University Of Science And Technology Silicon nanotube, field effect transistor-based memory cell, memory array and method of production
US11474897B2 (en) * 2019-03-15 2022-10-18 Nvidia Corporation Techniques for storing data to enhance recovery and detection of data corruption errors
US11989106B2 (en) 2019-12-11 2024-05-21 Intel Corporation Inline buffer for in-memory post package repair (PPR)
US11366772B2 (en) 2020-03-16 2022-06-21 Micron Technology, Inc. Separate inter-die connectors for data and error correction information and related systems, methods, and apparatuses
US20220300370A1 (en) * 2021-03-17 2022-09-22 Micron Technology, Inc. Configurable Error Correction Code (ECC) Circuitry and Schemes
US11789649B2 (en) * 2021-04-22 2023-10-17 Nvidia Corporation Combined on-package and off-package memory system
CN113342569B (zh) * 2021-06-17 2022-02-11 哈尔滨工业大学 一种用于闪存胞元不可靠状态消除的等长编解码方法
CN113553293A (zh) * 2021-07-21 2021-10-26 清华大学 存算一体装置及其校准方法
WO2023106434A1 (ko) * 2021-12-06 2023-06-15 주식회사 딥아이 Ddr sdram 인터페이스를 이용한 dram 지원 에러 정정 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040210814A1 (en) 2003-04-17 2004-10-21 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US20070022360A1 (en) 2005-06-30 2007-01-25 Nivruti Rai Method and apparatus to lower operating voltages for memory arrays using error correcting codes
US20080239808A1 (en) 2007-03-28 2008-10-02 Lin Jason T Flash Memory Refresh Techniques Triggered by Controlled Scrub Data Reads
US20100169741A1 (en) 2008-12-31 2010-07-01 Christophe Laurent Error correction code for unidirectional memory
US20120306902A1 (en) 2005-06-30 2012-12-06 Macwilliams Peter Memory controller interface for micro-tiled memory access

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4584681A (en) 1983-09-02 1986-04-22 International Business Machines Corporation Memory correction scheme using spare arrays
US5454093A (en) * 1991-02-25 1995-09-26 International Business Machines Corporation Buffer bypass for quick data access
US5754753A (en) * 1992-06-11 1998-05-19 Digital Equipment Corporation Multiple-bit error correction in computer main memory
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
AU1634600A (en) 1998-12-30 2000-07-24 Intel Corporation Memory array organization
US6701480B1 (en) * 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
JP2002056671A (ja) 2000-08-14 2002-02-22 Hitachi Ltd ダイナミック型ramのデータ保持方法と半導体集積回路装置
US6661730B1 (en) * 2000-12-22 2003-12-09 Matrix Semiconductor, Inc. Partial selection of passive element memory cell sub-arrays for write operation
US7263097B1 (en) 2001-11-26 2007-08-28 Integrated Device Technology, Inc. Programmably sliceable switch-fabric unit and methods of use
US6625066B1 (en) 2002-03-18 2003-09-23 United Memories, Inc. Data path decoding technique for an embedded memory array
US6888731B2 (en) 2002-11-29 2005-05-03 Mosaid Technologies Incorporated Method and apparatus for replacing defective rows in a semiconductor memory array
US7272773B2 (en) * 2003-04-17 2007-09-18 International Business Machines Corporation Cache directory array recovery mechanism to support special ECC stuck bit matrix
US7051166B2 (en) 2003-04-21 2006-05-23 Hewlett-Packard Development Company, L.P. Directory-based cache coherency scheme for reducing memory bandwidth loss
TWI252397B (en) 2004-09-17 2006-04-01 Ind Tech Res Inst Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification
US7779334B2 (en) * 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US7945840B2 (en) * 2007-02-12 2011-05-17 Micron Technology, Inc. Memory array error correction apparatus, systems, and methods
JP5137179B2 (ja) 2007-03-30 2013-02-06 ルネサスエレクトロニクス株式会社 半導体装置
US7450454B1 (en) 2007-05-09 2008-11-11 Freescale Semiconductor, Inc. Low voltage data path in memory array
US7613060B2 (en) * 2007-05-21 2009-11-03 Micron Technology, Inc. Methods, circuits, and systems to select memory regions
US20100169729A1 (en) 2008-12-30 2010-07-01 Datta Shamanna M Enabling an integrated memory controller to transparently work with defective memory devices
US8358548B2 (en) 2009-10-19 2013-01-22 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Methods for efficiently repairing embedded dynamic random-access memory having marginally failing cells
WO2012040649A2 (en) * 2010-09-24 2012-03-29 Texas Memory Systems, Inc. High-speed memory system
TWI439857B (zh) 2010-11-29 2014-06-01 Univ Nat Changhua Education 記憶體位址重新映射裝置與修復方法
US8788922B2 (en) * 2011-02-28 2014-07-22 Apple Inc Error correction codes for incremental redundancy
EP2737483A4 (en) 2011-07-27 2015-05-06 Hewlett Packard Development Co EFFICIENT DATA STORAGE DEVICES CONTAINING MEMORY ELEMENTS AND CHARACTERIZED BY POTENTIALLY LARGE SWITCHING LATENCES
US9195551B2 (en) 2012-03-29 2015-11-24 Intel Corporation Enhanced storage of metadata utilizing improved error detection and correction in computer memory
US9236110B2 (en) * 2012-06-30 2016-01-12 Intel Corporation Row hammer refresh command
US8990670B2 (en) * 2012-09-28 2015-03-24 Intel Corporation Endurance aware error-correcting code (ECC) protection for non-volatile memories
WO2014070160A1 (en) 2012-10-31 2014-05-08 Hewlett-Packard Development Company, L.P. Repairing a memory device
JP6018508B2 (ja) * 2013-01-09 2016-11-02 エスアイアイ・セミコンダクタ株式会社 不揮発性半導体記憶装置及びそのテスト方法
US10198314B2 (en) 2013-05-23 2019-02-05 Rambus Inc. Memory device with in-system repair capability
CN104575584B (zh) 2013-10-23 2018-11-30 钰创科技股份有限公司 具有嵌入式内存的***级封装内存模块
US9454422B2 (en) * 2014-01-30 2016-09-27 International Business Machines Corporation Error feedback and logging with memory on-chip error checking and correcting (ECC)
US20150234726A1 (en) * 2014-02-19 2015-08-20 Brian P. Moran Apparatus, system and method to provide platform support for multiple memory technologies
US20160092383A1 (en) * 2014-09-26 2016-03-31 Kuljit S. Bains Common die implementation for memory devices
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
US9817714B2 (en) * 2015-08-28 2017-11-14 Intel Corporation Memory device on-die error checking and correcting code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040210814A1 (en) 2003-04-17 2004-10-21 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US20070022360A1 (en) 2005-06-30 2007-01-25 Nivruti Rai Method and apparatus to lower operating voltages for memory arrays using error correcting codes
US20120306902A1 (en) 2005-06-30 2012-12-06 Macwilliams Peter Memory controller interface for micro-tiled memory access
US20080239808A1 (en) 2007-03-28 2008-10-02 Lin Jason T Flash Memory Refresh Techniques Triggered by Controlled Scrub Data Reads
US20100169741A1 (en) 2008-12-31 2010-07-01 Christophe Laurent Error correction code for unidirectional memory

Also Published As

Publication number Publication date
CN109661654B (zh) 2023-09-19
DE112017004966T5 (de) 2019-06-19
WO2018063698A1 (en) 2018-04-05
CN109661654A (zh) 2019-04-19
US10120749B2 (en) 2018-11-06
KR20190049710A (ko) 2019-05-09
US20180095821A1 (en) 2018-04-05

Similar Documents

Publication Publication Date Title
KR102501147B1 (ko) 메모리에서 에러 체킹 및 정정 코드의 확장된 적용
US10482947B2 (en) Integrated error checking and correction (ECC) in byte mode memory devices
EP3453022B1 (en) Internal error checking and correction (ecc) with extra system bits
US10755753B2 (en) Memory device with flexible internal data write control circuitry
US20180137005A1 (en) Increased redundancy in multi-device memory package to improve reliability
US10572343B2 (en) Targeted aliasing single error correction (SEC) code
CN107924698B (zh) Dram设备、错误校正管理的方法和存储器控制器
EP3910475B1 (en) Read retry to selectively disable on-die ecc
US10789010B2 (en) Double data rate command bus
US10621121B2 (en) Measurement and optimization of command signal timing margins
US11704194B2 (en) Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
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
US20230333928A1 (en) Storage and access of metadata within selective dynamic random access memory (dram) devices
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant