KR20150143598A - 내장된 ecc 어드레스 맵핑 - Google Patents

내장된 ecc 어드레스 맵핑 Download PDF

Info

Publication number
KR20150143598A
KR20150143598A KR1020157031961A KR20157031961A KR20150143598A KR 20150143598 A KR20150143598 A KR 20150143598A KR 1020157031961 A KR1020157031961 A KR 1020157031961A KR 20157031961 A KR20157031961 A KR 20157031961A KR 20150143598 A KR20150143598 A KR 20150143598A
Authority
KR
South Korea
Prior art keywords
data
memory
error correction
correction code
cache lines
Prior art date
Application number
KR1020157031961A
Other languages
English (en)
Other versions
KR101732841B1 (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 KR20150143598A publication Critical patent/KR20150143598A/ko
Application granted granted Critical
Publication of KR101732841B1 publication Critical patent/KR101732841B1/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • G06F11/1052Bypassing or disabling error detection or correction
    • 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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

ECC 데이터를 캐시라인 데이터와 메모리 페이지 내에 내장하는 장치, 시스템 및 방법이 설명된다. 일 실시예에서, 전자 디바이스는, 메모리 디바이스에 대해 데이터를 판독 또는 기입하는 요청을 수신하고 - 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - , 오류 정정 코드 정보를 데이터와 내장하기 위해 복수의 캐시 라인의 적어도 일부를 이동시키고, 복수의 캐시 라인의 일부를 다른 메모리 위치로 재맵핑하고, 데이터 및 오류 정정 코드 정보를 메모리 페이지 상에서 검색 또는 저장하는 메모리 제어 로직 및 프로세서를 포함한다. 다른 실시예들이 또한 개시되고 청구된다.

Description

내장된 ECC 어드레스 맵핑{EMBEDDED ECC ADDRESS MAPPING}
본 개시내용은 일반적으로 전자장치 분야에 관련된다. 보다 구체적으로는, 본 발명의 일부 실시예들은 일반적으로 내장된 오류 정정 코드(embedded Error Correction Code(ECC))에 관련된다.
다양한 전자 디바이스들은 메모리 기술을 포함할 수 있다. 일부 전자 디바이스들에서, 예를 들어, 스마트 폰들 및 태블릿들에서의 메모리의 사용은 용량을 크게 만들지만, 이들은 메모리에 ECC(error correction code) 비트들을 추가하는 오버헤드도 수용되지 않는 비용에 민감한 응용제품이다. 고용량의(high volume) 디바이스들은 다른 전자 디바이스들에 대한 시장에서, 예를 들어, 서버 제품 공간에서 유용할 수 있다. 그러나, 그러한 시장은 일관성있게 높은 신뢰성을 메모리 디바이스로부터 요구하며, 이는 메모리 디바이스들 내의 ECC 특징들을 필요하게 만든다.
따라서, 고용량 메모리 디바이스들 내에 ECC를 구현하는 기법에서 유용성을 찾을 수 있다.
상세한 설명은 첨부 도면들을 참조하여 제공된다. 도면들에서, 참조 번호의 최좌측 숫자(들)는 이 참조 번호가 처음 나타나는 도면을 식별한다. 상이한 도면들에서의 동일한 참조 번호들의 이용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 본원에서 논의된 다양한 실시예들에 따른 내장된 ECC 어드레스 맵핑을 구현하기 위한 장치의 컴포넌트들을 예시하는 개략적인 블록도이다.
도 2a는 본원에서 논의된 다양한 실시예들에 따른 내장된 ECC 어드레스 맵핑을 구현하도록 구성될 수 있는 예시적인 메모리의 개략적인 블록도이다.
도 2b는 본원에서 논의된 다양한 실시예들에 따른 메모리 페이지의 개략적 예시이다.
도 2c는 본원에서 논의된 다양한 실시예들에 따른 메모리 맵핑 방식의 개략적 예시이다.
도 3 내지 도 4는 본원에서 논의된 다양한 실시예들에 따른 내장된 ECC 어드레스 맵핑을 구현하기 위한 방법에서의 동작들을 예시하는 흐름도이다.
도 5는 본원에서 개시된 다양한 실시예들에 따른 내장된 ECC 어드레스 맵핑을 위한 메모리 맵핑 방식의 개략적 예시이다.
도 6 내지 도 10은 본원에서 논의된 다양한 실시예들에 따른 ECC 메모리 관리를 구현하도록 구성될 수 있는 전자 디바이스들의 개략적인 블록도 예시이다.
이하의 설명에서, 다양한 실시예들의 철저한 이해를 제공하기 위해서 다수의 특정 상세가 제시된다. 그러나, 본 발명의 다양한 실시예들은 특정 상세들 없이 실시될 수 있다. 다른 경우에, 본 발명의 특정 실시예들을 모호하게 하지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들 및 회로들은 상세하게 설명되지 않았다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램으로 조직된 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 이용하여 수행될 수 있다. 본 개시의 목적을 위해 "로직"이라고 하는 표현은 하드웨어, 소프트웨어, 또는 이들의 일부 조합을 의미한다.
전용 ECC 용량을 포함하지 않는 메모리 디바이스(예를 들어, DRAM(dynamic random access memory) 디바이스)의 일부분 내에 ECC 비트들을 맵핑하는 기법들이 본원에서 설명된다. 다양한 실시예들에서, 임의의 주어진 캐시라인(cacheline)에 대한 ECC 비트들은 캐시라인과 동일한 DRAM 페이지(또는 행(row))에 위치될 수 있다. 이것은 공통적 DRAM 활성화 명령이 캐시라인 데이터 및 ECC 데이터 액세스들 모두에 사용될수 있게 허용함으로써, 전력을 절감하고 레이턴시를 감소시킨다. 페이지 내의 ECC 데이터의 구성은 페이지 히트 레이트(page hit rate)를 증가시키도록 구성될 수 있고, 이는 제1 캐시라인에 대해 판독된 ECC 데이터 비트들의 동일한 블록을 공유할 수 있다. 또한, ECC 데이터 비트를 위한 공간을 만들기 위해 이동되는 캐시라인들은, 이동된 캐시라인을 보호하기 위해 필요한 ECC 데이터 비트들과 함께, 대안의 DRAM 페이지에 재배치된다.
일부 실시예들에서, 캐시라인들의 블록들은 DRAM 물리 공간 내로 맵핑되어, 메모리 제어기와 함께 사용되는 경우, 대기 전력이 감소되도록 할 수 있다. 저전력 모드들을 지원할 필요가 있는 데이터가 DRAM의 작은 부분에 할당될 수 있는 경우, DRAM의 나머지를 PASR(Partial Array Self Refresh) 기법들을 이용하는 상태와 같은 파워 오프(powered off)로 두는 것이 가능하다.
본원에서 논의된 기법들은, DIMM(dual in-line memory module) 내로 공통적으로 조립되는 다수의 DRAM 칩들을 포함하는 메모리 시스템을 포함할 수 있는 다양한 전자 디바이스들(예를 들어, 서버들, 데스크톱들, 노트북들, 스마트 폰들, 태블릿들, 휴대형 게임 콘솔들 등을 포함함)에 제공될 수 있다. 일부 실시예들에서, 로직은 전자 디바이스 내로 통합되는 메모리 제어기 내에 구현될 수 있다. 대안적으로, 로직은 DIMM 내의 다수의 DRAM에 대한 동작들을 제어하기 위해 DIMM 레벨에서 구현될 수 있다.
도 1은 본원에서 논의된 다양한 실시예들에 따른 내장된 ECC 어드레스 맵핑을 구현하도록 구성될 수 있는 전자 디바이스의 컴포넌트들의 개략적인, 블록도 예시이다. 도 1을 참조하면, 일부 실시예들에서, 중앙 처리 유닛(CPU) 패키지(100)는 제어기 허브(120)에 결합된 하나 이상의 CPU(110)를 포함할 수 있다. 제어기 허브(120)는 메모리 제어기(122) 및 메모리 인터페이스(124)를 포함한다. 메모리 제어기(122)는 버스(120)를 통해 로컬 메모리(130)에 결합된다.
메모리 인터페이스(124)는 통신 버스(160)에 의해 하나 이상의 원격 메모리 디바이스들(140)에 결합된다. 메모리 디바이스(140)는 제어기(142) 및 하나 이상의 메모리 뱅크들(150)을 포함할 수 있다. 다양한 실시예들에서, 메모리 뱅크들(150)은, 제어기(142)에 통신 링크를 제공하는 메모리 채널(144)에 결합된 하나 이상의 DIMM(direct in-line memory modules)을 이용하여 구현될 수 있다. 메모리 디바이스(들)(140) 내의 메모리 뱅크(들)(150)의 특정 구성은 결정적이지 않다.
다양한 실시예들에서, 메모리 디바이스(들)(140)은 하나 이상의 DRAM 메모리 모듈을 이용하는 메모리 시스템으로서 구현될 수 있다. 도 2a는 본원에서 논의된 다양한 실시예들에 따른 ECC 메모리 관리를 구현하도록 구성될 수 있는 예시적인 메모리 디바이스(들)(140)의 개략적인, 블록도이다. 도 2a를 참조하면, 일부 실시예들에서, 메모리 디바이스(들)(140)은 메모리 제어기(142)에 통신 링크를 제공하는 메모리 채널(270)에 결합된 하나 이상의 DIMM(direct in-line memory modules)(250)을 포함할 수 있다. 도 2a에 도시된 실시예에서, 각각의 DIMM은 제1 랭크(255) 및 제2 랭크(260)를 포함하고, 이들 각각은 복수의 DRAM 모듈(265)을 포함한다. 본 기술분야의 통상의 기술자는, 메모리 디바이스(들)(140)이 더 많거나 더 적은 DIMM(250), 및 DIMM 마다 더 많거나 더 적은 랭크들을 포함할 수 있다는 것을 인식할 것이다. 또한, 일부 전자 디바이스들(예를 들어, 스마트 폰들, 태블릿 컴퓨터들, 등)은 하나 이상의 DRAM으로 구성된 보다 단순한 메모리 시스템을 포함할 수 있다.
도 2b는 DRAM(265)에 저장될 수 있는 메모리의 페이지에 대한 개략적 예시이다. 일부 실시예들에서, 메모리의 각각의 2048B 페이지는 각각이 64 바이트인 30개의 캐시라인들의 데이터 및 캐시라인당 4B의 ECC 데이터를 보유한다. 따라서, 2048B 중 1920B가 데이터를 위해 사용되고, 나머지는 ECC 데이터 및 메타데이터를 위해 할당된다. 일부 실시예들에서, ECC 데이터는 도 2b에서 예시된 바와 같이, 페이지의 마지막에서 저장된다.
일부 실시예들에서, 64B 캐시라인 및 32B의 ECC 데이터가 동일한 데이터 채널에 걸쳐서 전달될 수 있다. BL8의 버스트 길이가 캐시라인을 판독하기 위해 사용될 수 있는 한편, BL4는 ECC 데이터를 판독하기 위해 사용될 수 있다.
전술한 바와 같이, 일부 실시예들에서, 메모리 디바이스(들)(140) 내의 메모리 제어기(122) 또는 제어기(142) 중 적어도 하나는 내장된 ECC 어드레스 맵핑 동작을 구현하는 로직을 포함한다. 메모리 제어기(122) 및/또는 제어기(142)에 의해 구현된 ECC 어드레스 맵핑 동작들은 도 3 내지 도 5를 참조하여 설명될 것이다. 도 3은 내장된 ECC 어드레스 맵핑을 구현하기 위해 메모리 디바이스(들)(140) 내의 메모리 제어기(122) 또는 제어기(142) 중 적어도 하나에 의해 구현될 수 있는 캐시라인 기입 동작들을 예시한다. 캐시라인 판독, ECC 기입 및 ECC 판독과 같은 다른 동작들은 유사한 흐름을 갖는다. 도 3을 참조하면, 동작(310)에서, 메모리 제어기(122) 또는 제어기(142)는 로컬 메모리(130) 또는 메모리 디바이스(140)의 페이지에 캐시라인 데이터를 기입하라는 요청을 수신한다.
동작(320)에서, 이동된 캐시 라인들은 대안의 메모리 위치에 재맵핑된다(remapped). 도 2c를 참조하면, 일부 실시예들에서, 메모리 디바이스는 복수의 부분 어레이(280)로 파티셔닝되고 이동된 캐시라인들은, 기입 동작이 향하는 부분 어레이의 최상부에 재맵핑된다. 동작(325)에서, 캐시라인 데이터는 메모리의 페이지에 저장된다.
도 2c에 예시된 바와 같이, 결과적인 메모리는 각각의 부분 어레이가 부분 어레이 내의 데이터를 보호하기 위해 필요한 데이터 및 모든 ECC 정보 둘 다를 포함하도록 구조화될 수 있다. 따라서, 각각의 부분 어레이는 PASR(partial array self refresh) 로직을 이용하여 독립적으로 저전력 상태로 놓일 수 있고, 이에 의해 메모리 디바이스(140)에 의한 전력 소비를 감소시킬 수 있다.
메모리 맵핑 동작들의 추가의 양태들이 도 4 내지 도 5를 참조하여 설명된다. 도 4 내지 도 5를 참조하면, 메모리 액세스 요청이 도달하는 경우, 호스트 시스템 어드레스가 선택된 페이지 및 인터리브(interleave) 정책에 기초하여 DRAM 선형 뱅크 어드레스에 맵핑된다.
동작(415)에서, 열(column) 어드레스의 최상위 비트들이 전부 1이 아닌 경우, 표준 어드레스 맵핑이 적용될 것이고 제어는 동작(420)으로 넘어간다. 동작(420)에서, 요청이 캐시라인 액세스에 대한 것이면, 제어는 동작(425)으로 넘어가고 표준 캐시라인 맵핑이 적용된다. 대조적으로, 동작(420)에서, 메모리 요청이 ECC 액세스에 대한 것이면, 제어는 동작(430)으로 넘어가고 표준 ECC 어드레싱이 생성된다.
동작(415)를 다시 참조하면, 선형 뱅크 어드레스의 최상위 비트들이 모두 1인 경우, 대안의 맵핑이 작용될 것이고 제어는 동작(440)으로 넘어간다. 동작(440)에서, 메모리 요청이 캐시라인 액세스에 대한 것이면, 제어는 동작(445)로 넘어가고 대안의 캐시라인 맵핑이 적용된다. 대조적으로, 동작(440)에서, 메모리 요청이 ECC 액세스에 대한 것이면, 제어는 동작(450)으로 넘어가고 대안의 ECC 어드레싱이 생성된다.
도 5는 2048B 페이지 크기 및 8개의 파티션을 갖는 메모리 디바이스에 대한 특정 실시예를 예시한다. 이 예에서, 최상위 4개의 열 어드레스 비트들(most significant 4 column address bits)이 사용되어, 캐시라인 또는 ECC 액세스가 표준 또는 대안의 맵핑을 사용할지를 결정할 수 있다. 이러한 예시는 또한 캐시라인 액세스들 및 ECC 액세스들에 대한 표준 및 대안의 맵핑을 도시한다. 이러한 예시는 ECC와 연관된 8개의 블록의 캐시라인들 중 하나를 8개의 DRAM 파티션들 중 하나에 위치시키기 위해 표준 및 대안적으로 맵핑된 어드레스들이 조작되는 방법을 더 도시한다. 이 예에서, 행(row) 어드레스의 최상위 3개 비트들은 파티션을 선택하기 위해 DRAM에 의해 사용된다.
전술한 바와 같이, 몇몇 실시예들에서 전자 디바이스는 컴퓨터 시스템으로서 실시될 수 있다. 도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템(600)의 블록도를 예시한다. 컴퓨팅 시스템(600)은 상호접속 네트워크(또는 버스)(604)를 경유해 통신하는 하나 이상의 중앙 처리 장치(들)(CPU들)(602) 또는 프로세서들을 포함할 수 있다. 프로세서들(602)은 범용 프로세서, 네트워크 프로세서(컴퓨터 네트워크(603)를 통해 통신되는 데이터를 처리함), 또는 기타 유형의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 게다가, 프로세서들(602)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 가지는 프로세서들(602)은 동일한 집적 회로(IC) 다이상에 서로 다른 유형의 프로세서 코어들을 통합할 수 있다. 또한, 다중 코어 설계를 가지는 프로세서들(602)은 대칭 또는 비대칭 멀티프로세서들로서 구현될 수 있다. 실시예에서, 프로세서들(602) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(602) 중 하나 이상은 도 1-3을 참조하여 논의된 제어 유닛(120)을 포함할 수 있다. 또한, 도 3-5를 참조하여 논의된 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
칩셋(606)은 또한 상호접속 네트워크(604)로 통신할 수 있다. 칩셋(606)은 MCH(memory control hub)(608)를 포함할 수 있다. MCH(608)는 메모리(612)(도 1의 메모리(130)와 동일하거나 유사할 수 있음)와 통신하는 메모리 제어기(610)를 포함할 수 있다. 메모리(412)는 CPU(602), 또는 컴퓨팅 시스템(600)에 포함되는 임의의 다른 디바이스에 의해 실행될 수 있는 명령어들의 시퀀스들을 포함하여 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(612)는 RAM(random access memory), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM)과 같은 하나 이상의 휘발성 저장(또는 메모리) 디바이스들, 또는 기타 유형의 저장 디바이스들을 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리도 활용될 수 있다. 다중 CPU 및/또는 다중 시스템 메모리와 같은 추가 디바이스들이 상호접속 네트워크(604)를 통해 통신할 수 있다.
MCH(608)는 또한 디스플레이 디바이스(616)와 통신하는 그래픽 인터페이스(614)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(614)는 AGP(accelerated graphics port)를 통해 디스플레이 디바이스(616)와 통신할 수 있다. 본 발명의 실시예에서, 예를 들어, 비디오 메모리 또는 시스템 메모리와 같은 저장 디바이스에 저장되는 이미지의 디지털 표현을 디스플레이(616)에 의해 해석되고 디스플레이되는 디지털 신호로 변환하는 신호 변환기를 통해, (평판 디스플레이와 같은) 디스플레이(616)는 그래픽 인터페이스(614)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성되는 디스플레이 신호들은 디스플레이(616)에 의해 해석되고 후속하여 디스플레이상에 디스플레이되기 전에 다양한 제어 디바이스들을 거칠 수 있다.
허브 인터페이스(618)는 MCH(608) 및 ICH(input/output control hub)(620)가 통신할 수 있도록 할 수 있다. ICH(620)는 컴퓨팅 시스템(600)과 통신하는 I/O 디바이스(들)에게 인터페이스를 제공할 수 있다. PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 제어기, 또는 다른 유형들의 주변 장치 브리지들(peripheral bridges) 또는 제어기들과 같은 주변 장치 브리지(또는 제어기)(624)를 통해 ICH(620)는 버스(622)와 통신할 수 있다. 브리지(624)는 CPU(602)와 주변 디바이스들 사이의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들이 이용될 수 있다. 또한, 예를 들어, 다수의 브리지 또는 제어기를 통해, 다수의 버스가 ICH(620)와 통신할 수 있다. 더욱이, ICH(620)와 통신하는 다른 주변 장치들은, 본 발명의 다양한 실시예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(예를 들어, DVI(digital video interface)), 또는 기타 디바이스들을 포함할 수 있다.
버스(622)는 오디오 디바이스(626), 하나 이상의 디스크 드라이브(들)(628), 및 (컴퓨터 네트워크(603)와 통신 상태에 있는) 네트워크 인터페이스 디바이스(630)와 통신할 수 있다. 다른 디바이스들은 버스(622)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(630)와 같은) 다양한 컴포넌트들은 본 발명의 일부 실시예들에서 MCH(608)와 통신할 수 있다. 또한, 프로세서(602) 및 본 명세서에서 논의된 하나 이상의 다른 컴포넌트는 단일 칩을 형성하기 위해 조합될 수 있다(예를 들어, SOC(System on Chip)를 제공하기 위해). 또한, 그래픽 가속기(616)는 본 발명의 다른 실시예들에서 MCH(608) 내에 포함될 수 있다.
또한, 컴퓨팅 시스템(600)은 휘발성 및/또는 비휘발성 메모리(또는 저장소)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중 하나 이상을 포함할 수 있다: ROM(read only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 628), 플로피 디스크, CD-ROM(compact disk ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 전자적 데이터(예를 들어, 명령어들을 포함함)를 저장할 수 있는 기타 유형의 비휘발성 머신 판독가능 매체.
도 7은 본 발명의 실시예에 따른 컴퓨팅 시스템(700)의 블록도를 예시한다. 시스템(700)은 하나 이상의 프로세서들(702-1 내지 702-N)(일반적으로 "프로세서들(702)" 또는 "프로세서(702)"로서 본 명세서에서 지칭됨)을 포함할 수 있다. 프로세서들(702)은 상호접속 네트워크 또는 버스(704)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함하는데, 그 일부는 명확성을 위해 프로세서(702-1)를 참조하여서만 논의된다. 따라서, 나머지 프로세서들(702-2 내지 702-N)의 각각은 프로세서(702-1)를 참조하여 논의되는 것과 동일한 또는 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(702-1)는 하나 이상의 프로세서 코어들(706-1 내지 706-M)("코어들(706)"로서 또는 보다 일반적으로 "코어(706)"로서 본 명세서에서 지칭됨), 공유 캐시(708), 라우터(710), 및/또는 프로세서 제어 로직 또는 유닛(720)을 포함할 수 있다. 프로세서 코어들(706)은 단일 집적 회로(IC) 칩상에 구현될 수 있다. 게다가, 칩은 하나 이상의 공유 및/또는 사유 캐시들(이를테면, 캐시(708)), 버스들 또는 상호접속부들(이를테면, 버스 또는 상호접속 네트워크(712)), 메모리 제어기들, 또는 기타 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(710)는 프로세서(702-1) 및/또는 시스템(700)의 다양한 컴포넌트들 간에서 통신하기 위해 이용될 수 있다. 더욱이, 프로세서(702-1)는 둘 이상의 라우터(710)를 포함할 수 있다. 게다가, 복수의 라우터(710)는 프로세서(702-1) 내부 또는 외부의 다양한 컴포넌트들 간의 데이터 라우팅을 가능하게 하기 위해 통신할 수 있다.
공유 캐시(708)는 코어들(706)과 같은 프로세서(702-1)의 하나 이상의 컴포넌트들에 의해 활용되는 (예를 들어, 명령어들을 포함하는) 데이터를 저장할 수 있다. 예를 들면, 공유 캐시(708)는 프로세서(702)의 컴포넌트들에 의한 보다 빠른 액세스를 위해 메모리(714) 내에 저장되는 데이터를 국지적으로 캐시할 수 있다. 실시예에서, 캐시(708)는 중간 레벨 캐시(예컨대, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 기타 레벨들의 캐시), LLC(last level cache), 및/또는 이들의 조합들을 포함할 수 있다. 더욱이, 프로세서(702-1)의 다양한 컴포넌트들은 버스(예를 들어, 버스(712)), 및/또는 메모리 제어기 또는 허브를 통해 공유 캐시(708)와 직접적으로 통신할 수 있다. 도 7에 도시된 바와 같이, 일부 실시예들에서, 코어들(706) 중 하나 이상은 레벨 1(L1) 캐시(716-1)(일반적으로 "L1 캐시(716)"로서 본 명세서에서 지칭됨)를 포함할 수 있다. 일 실시예에서, 제어 유닛(720)은 도 2에서 메모리 제어기(122)를 참조하여 전술한 동작들을 구현하기 위한 로직을 포함할 수 있다.
도 8은 본 발명의 실시예에 따라, 프로세서 코어(706)의 부분들과 컴퓨팅 시스템의 기타 컴포넌트들의 블록도를 예시한다. 일 실시예에서, 도 8에 도시된 화살표들은 코어(706)를 통한 명령어들의 흐름 방향을 도시한다. 하나 이상의 프로세서 코어들(프로세서 코어(706)와 같은)이 도 7을 참조하여 논의된 것과 같은 단일 집적 회로 칩(또는 다이)상에 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 도 7의 캐시(708)), 상호접속부들(예컨대, 도 7의 상호접속부들(704 및/또는 112)), 제어 유닛들, 메모리 제어기들, 또는 기타 컴포넌트들을 포함할 수 있다.
도 8에 도해된 바와 같이, 프로세서 코어(706)는 코어(706)에 의한 실행을 위한 명령어들(조건부 분기들을 갖는 명령어들을 포함함)을 페치하기 위한 페치 유닛(fetch unit)(802)을 포함할 수 있다. 명령어들은 메모리(714)와 같은 임의의 저장 디바이스들로부터 페치될 수 있다. 코어(706)는 또한 페치된 명령어를 디코드하기 위한 디코드 유닛(804)을 또한 포함할 수 있다. 예를 들어, 디코드 유닛(804)은 페치된 명령어를 복수의 uop(micro-operations)로 디코드할 수 있다.
또한, 코어(706)는 스케줄 유닛(806)을 포함할 수 있다. 스케줄 유닛(806)은 명령어들이 디스패칭(dispatch)될 준비가 될 때까지, 예컨대 디코딩된 명령어의 모든 소스 값들이 이용 가능하게 될 때까지, 디코딩된 명령어들(예컨대, 디코드 유닛(804)으로부터 수신된 것)을 저장하는 것과 연관되는 다양한 동작들을 수행할 수 있다. 일 실시예에서, 스케줄 유닛(806)은 실행을 위해 실행 유닛(808)에게 디코딩된 명령어들을 스케줄링하고 및/또는 발행(또는 디스패치)할 수 있다. 실행 유닛(808)은 디스패칭된 명령어들이 (예컨대, 디코드 유닛(804)에 의해) 디코딩되고 (예컨대, 스케줄 유닛(806)에 의해) 디스패칭된 후에 디스패칭된 명령어들을 실행할 수 있다. 실시예에서, 실행 유닛(808)은 둘 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(808)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 연산들을 실행할 수 있고, 또한 하나 이상의 ALU(arithmetic logic unit)들을 포함할 수 있다. 실시예에서, 보조 프로세서(도시되지 않음)는 실행 유닛(808)과 연계하여 다양한 산술 연산들을 실행할 수 있다.
또한, 실행 유닛(808)은 명령어들을 비순차적(out-of-order)으로 실행할 수 있다. 따라서, 프로세서 코어(706)는 일 실시예에서 비순차적 프로세서 코어일 수 있다. 코어(706)는 또한 리타이어먼트 유닛(retirement unit)(810)을 포함할 수 있다. 리타이어먼트 유닛(810)은 실행된 명령어들이 커밋(commit)된 후에 실행된 명령어들을 리타이어할 수 있다. 실시예에서, 실행된 명령어들의 리타이어먼트는 프로세서 상태가 명령어들의 실행으로부터 커밋되는 것과, 명령어들에 의해 이용되는 물리적 레지스터들이 할당 해제(de-allocate)되는 것과, 기타 등등을 초래할 수 있다.
코어(706)는 또한 하나 이상의 버스들(예컨대, 버스들(804 및/또는 812))을 통해 프로세서 코어(706)의 컴포넌트들과 기타 컴포넌트들(이를테면, 도 8을 참조하여 논의된 컴포넌트들) 간의 통신을 가능하게 하는 버스 유닛(714)을 포함할 수 있다. 코어(706)는 또한 코어(706)의 다양한 컴포넌트들에 의해 액세스되는 데이터(이를테면, 전력 소비 상태 설정들과 관계되는 값들)를 저장하기 위한 하나 이상의 레지스터들(816)을 포함할 수 있다.
게다가, 도 7이 상호접속부(812)를 통해 코어(706)에 결합되는 제어 유닛(720)을 도시하지만, 다양한 실시예들에서, 제어 유닛(720)은 코어(706)의 내측과 같은 다른 곳에 위치될 수 있고, 버스(704)를 통해 코어에 결합될 수 있고, 기타 등등과 같이 될 수 있다.
일부 실시예들에서, 본 명세서에서 논의된 컴포넌트들 중 하나 이상은 SOC(System On Chip) 디바이스로서 구현될 수 있다. 도 9는 실시예에 따른 SOC 패키지의 블록도를 예시한다. 도 9에 예시된 바와 같이, SOC(902)는 하나 이상의 CPU(Central Processing Unit) 코어(920), 하나 이상의 GPU(Graphics Processor Unit) 코어(930), 입력/출력(I/O) 인터페이스(940), 및 메모리 제어기(942)를 포함한다. SOC 패키지(902)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속부 또는 버스에 결합될 수 있다. 또한, SOC 패키지(902)는 다른 도면들을 참조하여 본 명세서에서 논의된 것들과 같은 컴포넌트들보다 더 많은 것을 또는 더 적은 것을 포함할 수 있다. 또한, SOC 패키지(902)의 각각의 컴포넌트는, 예컨대 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같은 하나 이상의 다른 컴포넌트들을 포함할 수 있다. 일 실시예에서, SOC 패키지(902)(및 그 컴포넌트들)는, 예컨대 단일 반도체 디바이스로 패키징되는 하나 이상의 IC(Integrated Circuit) 다이상에 제공된다.
도 9에 도시된 바와 같이, SOC 패키지(902)는 메모리 제어기(942)를 통해 메모리(960)(이는 다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있음)에 결합된다. 실시예에서, 메모리(960)(또는 이것의 일부)는 SOC 패키지(902)상에 통합될 수 있다.
I/O 인터페이스(940)는, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호 접속부 및/또는 버스를 통해 하나 이상의 I/O 디바이스들(970)에 결합될 수 있다. I/O 디바이스(들)(970)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(이를테면, 카메라 또는 캠코더/비디오 레코더), 터치스크린, 스피커, 또는 이와 유사한 것 중 하나 이상을 포함할 수 있다.
도 10은 본 발명의 실시예에 따른 포인트 투 포인트 (point-to-point: PtP) 구성으로 배열되는 컴퓨터 시스템(1000)을 도해한다. 특히, 도 10은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트 투 포인트 인터페이스들에 의해 상호 접속되는 시스템을 도시한다. 도 2를 참조하여 논의되는 동작들은 시스템(1000)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 몇 개의 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 두 개의 프로세서(1002 및 1004)만이 도시되었다. 프로세서들(1002 및 1004)은 각각이 메모리들(1010 및 1012)과의 통신을 가능하게 위한 로컬 MCH(memory controller hub)(1006 및 1008)를 포함할 수 있다. MCH(1006 및 1008)는 몇몇 실시예들에서 도 1의 메모리 제어기(120) 및/또는 로직(125)을 포함할 수 있다.
실시예에서, 프로세서들(1002 및 1004)은 도 7을 참조하여 논의된 프로세서들(702) 중 하나일 수 있다. 프로세서들(1002 및 1004)은 PtP 인터페이스 회로들(1016 및 1018)을 사용하는 포인트-투-포인트(PtP) 인터페이스(1014)를 통해 각각 데이터를 교환할 수 있다. 또한, 프로세서들(1002 및 1004)은 각각이 포인트 투 포인트 인터페이스 회로들(1026, 1028, 1030, 및 1032)을 이용하는 개별 PtP 인터페이스들(1022 및 1024)을 통해 칩셋(1020)과 데이터를 교환할 수 있다. 칩셋(1020)은, 예를 들어, PtP 인터페이스 회로(1037)를 이용하는 고성능 그래픽 인터페이스(1036)를 통해 고성능 그래픽 회로(1034)와 데이터를 추가로 교환할 수 있다.
도 10에 도시된 대로, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(902 및 904) 내에 위치될 수 있다. 하지만, 본 발명의 다른 실시예들은 도 9의 시스템(900) 내의 다른 회로들, 로직 유닛들, 또는 디바이스들에 존재할 수 있다. 게다가, 본 발명의 다른 실시예들은 도 9에 도시된 몇 개의 회로들, 로직 유닛들, 또는 디바이스들의 전체에 걸쳐서 분포될 수 있다.
칩셋(920)은 PtP 인터페이스 회로(941)를 이용하여 버스(940)와 통신할 수 있다. 버스(940)는 버스 브리지(942) 및 I/O 디바이스들(943)과 같이, 자신과 통신하는 하나 이상의 디바이스들을 가질 수 있다. 버스(944)를 통해, 버스 브리지(942)는 키보드/마우스(945), 통신 디바이스들(946)(모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(803)와 통신할 수 있는 기타 통신 디바이스들과 같은 것), 오디오 I/O 디바이스, 및/또는 데이터 저장 디바이스(948)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 저장 디바이스(948)(이것은 하드 디스크 드라이브 또는 NAND 플래시 기반 솔리드 스테이트 드라이브(solid state drive)일 수 있음)는 프로세서들(902 및/또는 904)에 의해 실행될 수 있는 코드(949)를 저장할 수 있다.
다음의 예들은 추가의 실시예들에 관한 것이다.
예 1은 메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 데이터는 복수의 캐시라인을 포함하는 메모리 페이지에 맵핑됨 - , 오류 정정 코드 정보를 데이터와 내장하기 위해 복수의 캐시라인의 적어도 일부를 이동시키고, 복수의 캐시 라인의 일부를 다른 메모리 위치에 재맵핑하고, 메모리 페이지 상의 데이터 및 오류 정정 코드 정보를 액세스하는 메모리 제어 로직 및 프로세서를 포함하는 전자 디바이스이다.
예 2에서, 예 1의 발명은 데이터 버스를 선택적으로 포함할 수 있고, 데이터 및 오류 정정 코드 정보는 데이터 버스 상에서 송신된다.
예 3에서, 예 1 내지 예 2 중 어느 한 예의 발명은 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 선택적으로 포함할 수 있다.
예 4에서, 예 1 내지 예 3 중 어느 한 예의 발명은, 메모리 디바이스가 복수의 부분 어레이로 파티셔닝되고 기입 요청이 선택된 부분 어레이를 향하도록 구성될 수 있고, 복수의 캐시 라인의 일부를 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함한다.
예 5에서, 예 1 내지 예 4 중 어느 한 예의 발명은, 미리결정된 위치가 선택된 부분 어레이의 최상부 섹션에 대응하도록 구성될 수 있다.
예 6에서, 예 1 내지 예 3 중 어느 한 예의 발명은, 선택된 부분 어레이에 대한 전력을 차단하는 로직을 선택적으로 포함할 수 있다.
예 7에서, 예 1 내지 예 6 중 어느 한 예의 발명은 메모리 디바이스 상의 데이터를 액세스하는 요청이 기입 요청이고 데이터 및 오류 정정 코드는 동일한 메모리 페이지 상에 저장되도록 구성될 수 있다.
예 8에서, 예 1 내지 예 6 중 어느 한 예의 발명은, 메모리 디바이스 상의 데이터를 액세스하는 요청이 판독 요청이고 데이터 및 오류 정정 코드가 동일한 메모리 페이지로부터 검색되도록 구성될 수 있다.
예 9는 메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - , 오류 정정 코드 정보를 데이터와 내장하기 위해 복수의 캐시라인의 적어도 일부를 이동시키고, 복수의 캐시 라인의 일부를 다른 메모리 위치로 재맵핑하고 메모리 페이지 상의 오류 정정 코드 정보 및 데이터를 액세스하는 로직을 포함하는 메모리 제어기이다.
예 10에서, 예 9의 발명은 데이터 버스를 선택적으로 포함하고, 데이터 및 오류 정정 코드 정보는 데이터 버스 상에서 송신된다.
예 11에서, 예 9 내지 예 10 중 어느 한 예의 발명은, 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 선택적으로 포함할 수 있다.
예 12에서, 예 9 내지 예 11 중 어느 한 예의 발명은, 메모리 디바이스가 복수의 부분 어레이로 파티셔닝되고 기입 요청이 선택된 부분 어레이를 향하도록 구성될 수 있고, 복수의 캐시 라인의 일부를 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함한다.
예 13에서, 예 9 내지 예 12 중 어느 한 예의 발명은 미리결정된 위치가 선택된 부분 어레이의 최상부 섹션에 대응하도록 구성될 수 있다.
예 14에서, 예 9 내지 예 13 중 어느 한 예의 발명은, 선택된 부분 어레이에 대한 전력을 차단하는 로직을 선택적으로 포함할 수 있다.
예 15에서, 예 9 내지 예 14 중 어느 한 예의 발명은, 메모리 디바이스 상의 데이터를 액세스하는 요청이 기입 요청이고 데이터 및 오류 정정 코드가 동일한 메모리 페이지 상에 저장되도록 구성될 수 있다.
예 16에서, 예 9 내지 예 15 중 어느 한 예의 발명은, 메모리 디바이스 상의 데이터를 액세스하는 요청이 판독 요청이고, 데이터 및 오류 정정 코드가 동일한 메모리 페이지로부터 검색되도록 구성될 수 있다.
예 17은, 메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - , 오류 정정 코드 정보를 데이터와 내장하기 위해 복수의 캐시라인의 적어도 일부를 이동시키고, 복수의 캐시 라인의 일부를 다른 메모리 위치로 재맵핑하고, 메모리 페이지 상의 데이터 및 오류 정정 코드 정보를 액세스하는 메모리 제어 로직, 하나 이상의 메모리 셀을 갖는 메모리 디바이스를 포함하는 장치이다.
예 18에서, 예 17의 발명은, 데이터 버스를 선택적으로 포함할 수 있고, 데이터 및 오류 정정 코드 정보는 데이터 버스 상에서 송신된다.
예 19에서, 예 17 내지 예 18 중 어느 한 예의 발명은, 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 선택적으로 포함할 수 있다.
예 20에서, 예 17 내지 예 19 중 어느 한 예의 발명은, 메모리 디바이스가 복수의 부분 어레이로 파티셔닝되고 기입 요청이 선택된 부분 어레이를 향하도록 구성될 수 있고, 복수의 캐시 라인의 일부를 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함한다.
예 21에서, 예 17 내지 예 20 중 어느 한 예의 발명은 미리결정된 위치가 선택된 부분 어레이의 최상부 섹션에 대응하도록 구성될 수 있다.
예 22에서, 예 17 내지 예 21 중 어느 한 예의 발명은 선택된 부분 어레이에 대한 전력을 차단하는 로직을 선택적으로 포함할 수 있다.
예 23에서, 예 17 내지 예 22 중 어느 한 예의 발명은, 메모리 디바이스 상의 데이터를 액세스하는 요청이 기입 요청이고 데이터 및 오류 정정 코드는 동일한 메모리 페이지 상에 저장되도록 구성될 수 있다.
예 24에서, 예 17 내지 예 23 중 어느 한 예의 발명에서, 메모리 디바이스 상의 데이터를 액세스하는 요청이 판독 요청이고 데이터 및 오류 정정 코드는 동일한 메모리 페이지로부터 검색되도록 구성될 수 있다.
예 25는, 프로세싱 디바이스에서, 메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하는 단계 - 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - , 오류 정정 코드 정보를 데이터와 내장하기 위해 복수의 캐시라인의 적어도 일부를 이동시키는 단계, 복수의 캐시 라인의 일부를 다른 메모리 위치로 재맵핑하는 단계, 및 메모리 페이지 상의 데이터 및 오류 정정 코드 정보를 액세스하는 단계를 포함하는, 메모리 디바이스에 데이터를 맵핑하는 프로세서 기반 방법이다.
예 26에서, 예 25의 데이터 및 오류 정정 코드 정보는 단일의 데이터 버스 상에서 함게 송신된다.
예 27에서, 예 25 내지 예 26 중 어느 한 예의 발명은, 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 것을 선택적으로 포함할 수 있다.
예 28에서, 예 25 내지 예 27 중 어느 한 예의 발명은, 메모리 디바이스가 복수의 부분 어레이로 파티셔닝되고, 기입 요청이 선택된 부분 어레이를 향하는 구성을 선택적으로 포함할 수 있고, 복수의 캐시 라인의 일부를 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 것을 더 포함한다.
예 29에서, 예 25 내지 예 28 중 어느 한 예의 발명은, 미리결정된 위치가 선택된 부분 어레이의 최상부 섹션에 대응하는 구성을 선택적으로 포함할 수 있다.
예 30에서, 예 25 내지 예 27 중 어느 한 예의 발명은, 선택된 부분 어레이에 대한 전력을 차단하는 것을 선택적으로 포함할 수 있다.
본 발명의 다양한 실시예들에서, 예를 들어, 도 1 내지 도 9를 참조하여 본 명세서에 기술된 동작들은, 본 명세서에서 논의된 프로세스를 수행하도록 컴퓨터를 프로그래밍하는 데 사용되는 명령어들(또는 소프트웨어 프로시저들)을 저장한 (예를 들어, 비-일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 예를 들어 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는, 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 또는 이들의 조합들로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다. 머신 판독가능 매체는 본 명세서에서 논의된 바와 같은 저장 디바이스를 포함할 수 있다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 언급은, 이 실시예와 관련하여 설명된 특정 피처, 구조 또는 특성이 적어도 일 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일한 실시예를 언급할 수도 있고 언급하지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "결합된(coupled)" 및 "접속된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 본 발명의 일부 실시예들에서, "접속된"은, 2개 이상의 엘리먼트가 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "결합된"은, 2개 이상의 엘리먼트가 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합된"은, 2개 이상의 엘리먼트가 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들은 구조적 피처들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 피처들 또는 동작들에 제한되지는 않을 수 있다는 것이 이해되어야 한다. 오히려, 특정 피처들 및 동작들은 청구 대상을 구현하는 예시적인 형태들로서 개시되어 있다.

Claims (24)

  1. 전자 디바이스로서,
    프로세서; 및
    메모리 제어 로직
    을 포함하고,
    상기 메모리 제어 로직은,
    메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 상기 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - ,
    오류 정정 코드 정보를 상기 데이터와 내장하기 위해 상기 복수의 캐시라인의 적어도 일부를 이동시키고,
    상기 복수의 캐시 라인의 상기 일부를 다른 메모리 위치로 재맵핑(remap)하고,
    상기 메모리 페이지 상의 상기 데이터 및 상기 오류 정정 코드 정보를 액세스하는 전자 디바이스.
  2. 제1항에 있어서,
    데이터 버스를 더 포함하고, 상기 데이터 및 상기 오류 정정 코드 정보는 상기 데이터 버스 상에서 송신되는 전자 디바이스.
  3. 제1항에 있어서,
    상기 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 더 포함하는 전자 디바이스.
  4. 제1항에 있어서,
    상기 메모리 디바이스는 복수의 부분 어레이로 파티셔닝되고,
    기입 요청은 선택된 부분 어레이를 향하며,
    상기 전자 디바이스는,
    상기 복수의 캐시 라인의 상기 일부를 상기 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함하는 전자 디바이스.
  5. 제4항에 있어서,
    상기 미리결정된 위치는 상기 선택된 부분 어레이의 최상부 섹션에 대응하는 전자 디바이스.
  6. 제4항에 있어서,
    상기 선택된 부분 어레이에 대한 전력을 차단하는 로직을 더 포함하는 전자 디바이스.
  7. 제1항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 기입 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지 상에 저장되는 전자 디바이스.
  8. 제1항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 판독 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지로부터 검색되는 전자 디바이스.
  9. 로직을 포함하는 메모리 제어기로서,
    상기 로직은,
    메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 상기 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - ,
    오류 정정 코드 정보를 상기 데이터와 내장하기 위해 상기 복수의 캐시라인의 적어도 일부를 이동시키고,
    상기 복수의 캐시 라인의 상기 일부를 다른 메모리 위치로 재맵핑하고,
    상기 메모리 페이지 상의 상기 데이터 및 상기 오류 정정 코드 정보를 액세스하는 메모리 제어기.
  10. 제9항에 있어서,
    데이터 버스를 더 포함하고, 상기 데이터 및 상기 오류 정정 코드 정보는 상기 데이터 버스 상에서 송신되는 메모리 제어기.
  11. 제9항에 있어서,
    상기 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 더 포함하는 메모리 제어기.
  12. 제9항에 있어서,
    상기 메모리 디바이스는 복수의 부분 어레이로 파티셔닝되고,
    상기 기입 요청은 선택된 부분 어레이를 향하며,
    상기 메모리 제어기는,
    상기 복수의 캐시 라인의 상기 일부를 상기 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함하는 메모리 제어기.
  13. 제12항에 있어서,
    상기 미리결정된 위치는 상기 선택된 부분 어레이의 최상부 섹션에 대응하는 메모리 제어기.
  14. 제12항에 있어서,
    상기 선택된 부분 어레이에 대한 전력을 차단하는 로직을 더 포함하는 메모리 제어기.
  15. 제9항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 기입 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지 상에 저장되는 메모리 제어기.
  16. 제9항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 판독 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지로부터 검색되는 메모리 제어기.
  17. 장치로서,
    하나 이상의 메모리 셀을 갖는 메모리 디바이스; 및
    메모리 제어 로직
    을 포함하고,
    상기 메모리 제어 로직은,
    메모리 디바이스 상의 데이터를 액세스하는 요청을 수신하고 - 상기 데이터는 복수의 캐시 라인을 포함하는 메모리 페이지로 맵핑됨 - ,
    오류 정정 코드 정보를 상기 데이터와 내장하기 위해 상기 복수의 캐시라인의 적어도 일부를 이동시키고,
    상기 복수의 캐시 라인의 상기 일부를 다른 메모리 위치로 재맵핑하고,
    상기 메모리 페이지 상의 상기 데이터 및 상기 오류 정정 코드 정보를 액세스하는 장치.
  18. 제17항에 있어서,
    데이터 버스를 더 포함하고, 상기 데이터 및 상기 오류 정정 코드 정보는 상기 데이터 버스 상에서 송신되는 장치.
  19. 제17항에 있어서,
    상기 복수의 캐시 라인과 연관된 오류 정정 코드 정보를 다른 메모리 위치로 재맵핑하는 로직을 더 포함하는 장치.
  20. 제17항에 있어서,
    상기 메모리 디바이스는 복수의 부분 어레이로 파티셔닝되고,
    상기 기입 요청은 선택된 부분 어레이를 향하며,
    상기 장치는,
    상기 복수의 캐시 라인의 상기 일부를 상기 선택된 부분 어레이 내의 미리결정된 위치로 재맵핑하는 로직을 더 포함하는 장치.
  21. 제20항에 있어서,
    상기 미리결정된 위치는 상기 선택된 부분 어레이의 최상부 섹션에 대응하는 장치.
  22. 제20항에 있어서,
    상기 선택된 부분 어레이에 대한 전력을 차단하는 로직을 더 포함하는 장치.
  23. 제17항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 기입 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지 상에 저장되는 장치.
  24. 제17항에 있어서,
    상기 메모리 디바이스 상의 데이터를 액세스하는 상기 요청은 판독 요청이고,
    상기 데이터 및 상기 오류 정정 코드는 동일한 메모리 페이지로부터 검색되는 장치.
KR1020157031961A 2013-06-28 2014-06-24 내장된 ecc 어드레스 맵핑 KR101732841B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/930,600 2013-06-28
US13/930,600 US10031802B2 (en) 2013-06-28 2013-06-28 Embedded ECC address mapping
PCT/US2014/043766 WO2014209936A1 (en) 2013-06-28 2014-06-24 Embedded ecc address mapping

Publications (2)

Publication Number Publication Date
KR20150143598A true KR20150143598A (ko) 2015-12-23
KR101732841B1 KR101732841B1 (ko) 2017-05-04

Family

ID=52116923

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157031961A KR101732841B1 (ko) 2013-06-28 2014-06-24 내장된 ecc 어드레스 맵핑

Country Status (8)

Country Link
US (1) US10031802B2 (ko)
EP (1) EP3014227A4 (ko)
JP (1) JP6231194B2 (ko)
KR (1) KR101732841B1 (ko)
CN (1) CN105264342B (ko)
BR (1) BR112015029854A2 (ko)
RU (1) RU2644529C2 (ko)
WO (1) WO2014209936A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031802B2 (en) 2013-06-28 2018-07-24 Intel Corporation Embedded ECC address mapping
US9954557B2 (en) * 2014-04-30 2018-04-24 Microsoft Technology Licensing, Llc Variable width error correction
US10268541B2 (en) * 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
US10853168B2 (en) * 2018-03-28 2020-12-01 Samsung Electronics Co., Ltd. Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
US11307771B2 (en) * 2020-07-10 2022-04-19 Micron Technology, Inc. Configurable link interfaces for a memory device
US11288188B1 (en) * 2021-01-21 2022-03-29 Qualcomm Incorporated Dynamic metadata relocation in memory

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467048B1 (en) * 1999-10-07 2002-10-15 Compaq Information Technologies Group, L.P. Apparatus, method and system for using cache memory as fail-over memory
US6427188B1 (en) * 2000-02-09 2002-07-30 Hewlett-Packard Company Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US6996766B2 (en) 2002-06-28 2006-02-07 Sun Microsystems, Inc. Error detection/correction code which detects and corrects a first failing component and optionally a second failing component
US6961821B2 (en) 2002-10-16 2005-11-01 International Business Machines Corporation Reconfigurable cache controller for nonuniform memory access computer systems
US7234099B2 (en) 2003-04-14 2007-06-19 International Business Machines Corporation High reliability memory module with a fault tolerant address and command bus
US7149945B2 (en) 2003-05-09 2006-12-12 Hewlett-Packard Development Company, L.P. Systems and methods for providing error correction code testing functionality
JP3714558B2 (ja) 2003-10-10 2005-11-09 ソニー株式会社 ファイル管理装置、ファイル管理方法、ファイル管理方法のプログラム及びファイル管理方法のプログラムを記録した記録媒体
US7124254B2 (en) * 2004-05-05 2006-10-17 Sun Microsystems, Inc. Method and structure for monitoring pollution and prefetches due to speculative accesses
US20060218467A1 (en) 2005-03-24 2006-09-28 Sibigtroth James M Memory having a portion that can be switched between use as data and use as error correction code (ECC)
US7650558B2 (en) * 2005-08-16 2010-01-19 Intel Corporation Systems, methods, and apparatuses for using the same memory type for both error check and non-error check memory systems
US7774684B2 (en) 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
US7890836B2 (en) 2006-12-14 2011-02-15 Intel Corporation Method and apparatus of cache assisted error detection and correction in memory
US8464138B2 (en) 2008-08-20 2013-06-11 Qualcomm Incorporated Effective utilization of header space for error correction in aggregate frames
US8291259B2 (en) 2009-04-15 2012-10-16 International Business Machines Corporation Delete of cache line with correctable error
JP5414350B2 (ja) 2009-05-08 2014-02-12 キヤノン株式会社 メモリ制御回路、及び、その制御方法
US8495464B2 (en) * 2010-06-28 2013-07-23 Intel Corporation Reliability support in memory systems without error correcting code support
US8719664B1 (en) * 2011-04-12 2014-05-06 Sk Hynix Memory Solutions Inc. Memory protection cache
US9003247B2 (en) * 2011-04-28 2015-04-07 Hewlett-Packard Development Company, L.P. Remapping data with pointer
US9391637B2 (en) * 2012-03-30 2016-07-12 Intel Corporation Error correcting code scheme utilizing reserved space
CN103019963B (zh) 2012-12-31 2016-07-06 华为技术有限公司 一种高速缓存的映射方法及存储设备
US10031802B2 (en) 2013-06-28 2018-07-24 Intel Corporation Embedded ECC address mapping

Also Published As

Publication number Publication date
RU2015151167A (ru) 2017-06-01
EP3014227A1 (en) 2016-05-04
WO2014209936A1 (en) 2014-12-31
RU2644529C2 (ru) 2018-02-12
EP3014227A4 (en) 2017-02-22
KR101732841B1 (ko) 2017-05-04
JP2016520937A (ja) 2016-07-14
BR112015029854A2 (pt) 2017-07-25
US10031802B2 (en) 2018-07-24
US20150006993A1 (en) 2015-01-01
CN105264342A (zh) 2016-01-20
CN105264342B (zh) 2019-05-14
JP6231194B2 (ja) 2017-11-15

Similar Documents

Publication Publication Date Title
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
US11494078B2 (en) Translation lookaside buffer in memory
EP3014623B1 (en) Hybrid memory device
KR101720676B1 (ko) 대용량 저장소 디바이스들을 관리하기 위한 장치 및 방법
US10572339B2 (en) Memory latency management
US10592445B2 (en) Techniques to access or operate a dual in-line memory module via multiple data channels
KR101895277B1 (ko) 다이나믹 랜덤 액세스 메모리 어레이를 액세스하기 위한 기술들
KR101743409B1 (ko) 메모리 관리
US9064603B1 (en) Semiconductor memory device and memory system including the same
CN114153373A (zh) 用于执行存储器设备内的数据操作的存储器系统及其操作方法
KR20170036766A (ko) 비휘발성 메모리 모듈
KR102518010B1 (ko) 휘발성 메모리에 대한 극성 기반 데이터 트랜스퍼 기능

Legal Events

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