KR20210016598A - 메모리 장치 및 모듈 - Google Patents

메모리 장치 및 모듈 Download PDF

Info

Publication number
KR20210016598A
KR20210016598A KR1020210015698A KR20210015698A KR20210016598A KR 20210016598 A KR20210016598 A KR 20210016598A KR 1020210015698 A KR1020210015698 A KR 1020210015698A KR 20210015698 A KR20210015698 A KR 20210015698A KR 20210016598 A KR20210016598 A KR 20210016598A
Authority
KR
South Korea
Prior art keywords
memory
error
information
module
controller
Prior art date
Application number
KR1020210015698A
Other languages
English (en)
Other versions
KR102378466B1 (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
Priority claimed from US14/594,049 external-priority patent/US20160055058A1/en
Priority claimed from US14/678,977 external-priority patent/US10002044B2/en
Priority claimed from US14/678,968 external-priority patent/US10002043B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210016598A publication Critical patent/KR20210016598A/ko
Application granted granted Critical
Publication of KR102378466B1 publication Critical patent/KR102378466B1/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예는 모듈 에러 인터페이스, 그리고 복수의 메모리 장치들을 포함할 수 있다. 각각의 메모리 장치는 상기 모듈 에러 인터페이스에 연결되고, 데이터 인터페이스 및 장치 에러 인터페이스를 포함하고, 상기 데이터 에러 인터페이스 및 상기 모듈 에러 인터페이스를 통하여 에러 정보를 교환하도록 구성될 수 있다.

Description

메모리 장치 및 모듈{MEMORY DEVICES AND MODULES}
본 발명은 메모리 시스템 아키텍처에 관한 것으로, 좀 더 상세하게는, 에러 정정 기능을 갖춘 메모리 시스템 아키텍처에 관한 것이다.
메모리 컨트롤러들은 에러 정정을 수행하도록 구성될 수 있다. 예를 들어, 메모리 컨트롤러는 메모리 모듈로부터, 64 비트가 데이터이고 8 비트가 패리티(parity)인, 72 비트의 데이터를 읽을 수 있다. 메모리 컨트롤러는 다른 에러 정정 기술들을 수행할 수 있다. 그러한 기술들을 사용하여, 메모리 모듈로부터 읽혀진 데이터에 있는 어떤 에러들은 확인될 수 있고, 정정될 수 있다. 게다가, 메모리 컨트롤러는 에러와 관련된 이용 가능한 정보를 생성할 수 있다. 메모리 컨트롤러를 포함하는 시스템은 메모리 페이지의 회수(retiring a memory page), 시스템 정지, 또는 이와 유사한 것과 같은, 에러 정보에 기초하여 운영 결정(operational decision)을 할 수 있다. 그러한 메모리 컨트롤러는 프로세서와 함께 집적될 수 있다. 예를 들어, 예를 들어, 인텔 제온(Intel Xeon®) 프로세서는 에러 정정을 수행하도록 구성된 집적 메모리 컨트롤러를 포함할 수 있다.
그러나, 만일 데이터가 메모리 컨트롤러에 의해 수신되기 전에 에러 정정이 수행되면, 정정과 관련된 에러 정보는 메모리 컨트롤러에서 이용 가능하지 않을 수 있고, 따라서 시스템 관리 결정(system management decision)을 위해 시스템에 이용 가능하지 않을 수 있다.
본 발명의 기술적 사상은 저비용 및 저전력 특성을 제공하는 메모리 장치 및 모듈을 제공한다.
본 발명의 실시 예에 따른 메모리 모듈은, 모듈 에러 인터페이스, 그리고 복수의 메모리 장치들을 포함하되, 각각의 메모리 장치는 상기 모듈 에러 인터페이스에 연결되고, 데이터 인터페이스 및 장치 에러 인터페이스를 포함하고, 상기 장치 에러 인터페이스 및 상기 모듈 에러 인터페이스를 통하여 에러 정보를 교환하도록 구성될 수 있다.
예를 들어, 상기 모듈 에러 인터페이스 및 상기 메모리 장치들의 장치 에러 인터페이스들 각각에 연결되는 컨트롤러를 더 포함할 수 있다.
예를 들어, 상기 컨트롤러는 리피터를 더 포함할 수 있다.
예를 들어, 상기 컨트롤러는 별도의 버스를 통하여 상기 장치 에러 인터페이스들 각각에 연결될 수 있다.
예를 들어, 상기 컨트롤러는 공용 버스를 통하여 상기 장치 에러 인터페이스들 각각에 연결될 수 있다.
예를 들어, 각각의 메모리 장치는 식별 입력을 더 포함하고, 상기 메모리 장치는 상기 식별 입력을 통하여 상기 공용 버스와 관련된 식별을 수신하도록 구성될 수 있다.
예를 들어, 상기 메모리 장치들은 데이지 체인 회선(daisy-chain link)에 연결될 수 있다.
예를 들어, 각각의 메모리는 상기 데이지 체인 회선을 통하여 수신된 신호에 응답하여 상기 장치 에러 인터페이스를 통하여 수신된 정보가 상기 메모리 장치와 관련되는지 여부를 판단하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러에 연결되고 상기 모듈 에러 인터페이스를 통하여 통신하도록 구성되는 직렬 프레즌스 검출 모듈을 더 포함할 수 있다.
예를 들어, 상기 컨트롤러는 어드레스를 수신하도록 구성되는 어드레스 입력을 더 포함하고, 상기 컨트롤러는 상기 어드레스에 기초하여 상기 모듈 에러 인터페이스를 통하여 수신된 통신에 응답하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 상기 메모리 장치들의 상기 장치 에러 인터페이스들을 통하여 수신된 에러 정보를 수집하도록 구성될 수 있다.
본 발명의 실시 예에 따른 메모리 모듈은, 모듈 에러 인터페이스, 복수의 메모리 장치들로써, 각각의 메모리 장치는 데이터 인터페이스 및 장치 에러 인터페이스를 포함하고, 상기 장치 에러 인터페이스를 통하여 에러 정보를 교환하도록 구성되는 것, 그리고 상기 모듈 에러 인터페이스 및 각각의 메모리 장치의 상기 장치 에러 인터페이스에 연결되는 컨트롤러를 포함할 수 있다.
예를 들어, 모듈 데이터 인터페이스를 더 포함하되, 상기 컨트롤러는 상기 모듈 데이터 인터페이스 및 각각의 메모리 장치의 상기 데이터 인터페이스에 연결될 수 있다.
예를 들어, 상기 컨트롤러에 연결되는 직렬 프레즌스 검출 모듈을 더 포함하되, 상기 직렬 프레즌스 검출 모듈은 상기 모듈 에러 인터페이스를 거쳐 상기 컨트롤러를 통하여 액세스 가능할 수 있다.
예를 들어, 상기 컨트롤러는 상기 직렬 프레즌스 검출 모듈로부터 제어 신호를 수신하도록 구성되고, 그리고 상기 컨트롤러는 상기 모듈 에러 인터페이스를 통하여 상기 제어 신호를 제공하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 상기 메모리 장치들의 상기 장치 에러 인터페이스들과 관련된 어드레스들을 결정하도록 구성될 수 있다.
본 발명의 실시 예에 따른 방법은, 메모리 모듈의 모듈 에러 인터페이스를 통하여 통신을 수신하는 단계, 컨트롤러에 의해, 상기 컨트롤러에 연결된 적어도 하나의 메모리 장치로부터 에러 정보를 읽는 단계, 그리고 상기 에러 정보에 기초하여 상기 모듈 에러 인터페이스를 통하여 상기 통신에 응답하는 단계를 포함할 수 있다.
예를 들어, 상기 방법은 상기 통신을 상기 적어도 하나의 메모리 장치로 포워딩하는 단계를 더 포함할 수 있다.
예를 들어, 상기 컨트롤러에 의해 상기 에러 정보를 읽는 단계는, 대응하는 전용 버스를 통하여 상기 적어도 하나의 메모리 장치 중 적어도 하나를 액세스하는 단계를 포함할 수 있다.
예를 들어, 상기 컨트롤러에 의해 상기 에러 정보를 읽는 단계는, 공용 버스를 통하여 상기 적어도 하나의 메모리 장치 중 적어도 하나를 액세스하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 시스템은, 데이터를 저장하고, 상기 저장된 데이터로부터 읽혀진 데이터의 에러를 정정하고, 상기 저장된 데이터로부터 읽혀진 상기 데이터의 상기 에러를 정정하는 것에 응답하여 에러 정보를 생성하도록 구성되는 메모리, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통하여 상기 메모리에 연결되고, 상기 제 1 통신 경로를 통하여 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통하여 상기 메모리로부터 상기 에러 정보를 수신하도록 구성되는 프로세서를 포함할 수 있다.
예를 들어, 상기 에러는 싱글-비트 에러일 수 있고, 상기 에러 정보는 에러가 정정되었다는 것을 나타낼 수 있다.
예를 들어, 상기 에러 정보는 정정된 에러 정보를 포함할 수 있고, 상기 프로세서는 상기 제 1 통신 경로와는 다른 경로를 통하여 상기 정정된 에러 정보를 수신하도록 구성될 수 있다.
예를 들어, 상기 메모리는 다이내믹 랜덤 액세스 메모리 모듈일 수 있다.
예를 들어, 상기 시스템은 상기 프로세서 및 상기 메모리에 연결되고, 상기 프로세서 및 상기 메모리와 통신하도록 구성되는 컨트롤러를 더 포함할 수 잇다. 상기 컨트롤러는 상기 제 2 통신 경로의 일부일 수 있다.
예를 들어, 상기 컨트롤러는 베이스보드 관리 컨트롤러일 수 있다.
예를 들어, 상기 컨트롤러는 지능형 플랫폼 관리 인터페이스(intelligent platform management interface)에 부합하는 인터페이스에 의해 상기 프로세서에 연결될 수 있다.
예를 들어, 상기 컨트롤러는 SMBus (System Management Bus)에 부합하는 인터페이스에 의해 상기 메모리에 연결될 수 있다.
예를 들어, 상기 컨트롤러는 상기 에러 정보를 저장하고, 상기 프로세서로부터 수신된 요청에 응답하여 상기 프로세서로 상기 에러 정보를 제공하도록 구성될 수 있다.
예를 들어, 상기 프로세서는 상기 메모리에 연결되는 메모리 컨트롤러를 포함할 수 있고, 상기 메모리 컨트롤러는 상기 제 1 통신 경로를 통하여 상기 메모리에 연결될 수 있다.
예를 들어, 상기 프로세서는 상기 메모리에 연결된 메모리 컨트롤러를 포함할 수 있고, 상기 메모리 컨트롤러는 상기 메모리로부터 읽혀진 데이터의 에러를 정정하도록 구성되지 않을 수 있다.
예를 들어, 상기 제 1 통신 경로는 복수의 데이터 라인들 및 적어도 하나의 데이터 스트로브 라인을 포함할 수 있고, 상기 메모리는 상기 적어도 하나의 데이터 스트로브 라인을 통하여 전송된 신호에 의해 정정 불가능한 에러를 교환하도록 구성될 수 있다.
예를 들어, 상기 시스템은 상기 메모리와 상기 프로세서 사이에 연결된 제 3 통신 경로를 더 포함할 수 있다. 상기 메모리는 상기 제 3 통신 경로를 통하여 정정 불가능한 에러를 교환하도록 구성될 수 있다.
예를 들어, 상기 프로세서는 상기 메모리에 의해 생성된 상기 에러 정보를 요청하도록 구성될 수 있다.
예를 들어, 상기 프로세서는 상기 에러 정보를 상기 메모리와 관련된 다른 정보와 결합하도록 구성될 수 있다.
예를 들어, 상기 다른 정보는 상기 제 1 통신 경로를 통하여 수신된 정보에 기초할 수 있다.
예를 들어, 상기 프로세서는 상기 제 2 통신 경로에 연결된 인터페이스를 포함할 수 있고, 상기 프로세서는 상기 인터페이스를 통하여 상기 에러 정보를 수신하고 상기 인터페이스를 통하여 다른 정보를 수신하도록 구성될 수 있다.
예를 들어, 상기 메모리는 적어도 하나의 직렬 프레즌스 검출 시스템 및 레지스터링 클록 드라이버 시스템을 포함할 수 있고, 상기 다른 정보는 상기 적어도 하나의 직렬 프레즌스 검출 시스템 및 상기 레지스터링 클록 드라이버 시스템으로부터 수신될 수 있다.
본 발명의 실시 예에 따른 메모리 모듈은, 데이터를 저장하도록 구성되는 적어도 하나의 메모리 장치, 제 1 인터페이스, 및 제 2 인터페이스를 포함할 수 있다. 상기 제 1 인터페이스는 상기 적어도 하나의 메모리 장치에 저장된 데이터를 전송하도록 구성될 수 있고, 상기 제 2 인터페이스는 상기 적어도 하나의 메모리 장치로부터 읽혀진 데이터의 에러를 정정하는 것에 응답하여 생성된 에러 정보를 전송하도록 구성될 수 있다.
예를 들어, 상기 제 2 인터페이스는 적어도 하나의 직렬 프레즌스 검출 인터페이스 및 레지스터링 클록 드라이버 인터페이스를 포함할 수 있다.
예를 들어, 상기 메모리 모듈은 상기 제 1 인터페이스에 연결되고, 정정 불가능한 에러의 감지에 응답하여 상기 제 1 인터페이스를 통하여 전송된 데이터 스트로브 신호를 변경하도록 구성되는 컨트롤러를 더 포함할 수 있다.
예를 들어, 상기 제 2 인터페이스는 정정 불가능한 에러의 감지에 응답하여 에러 정보를 전송하도록 구성될 수 있다.
본 발명의 실시 예에 따른 방법은, 메모리 모듈에서 에러를 포함하는 데이터를 읽는 단계, 상기 에러를 포함하는 데이터를 읽는 것에 기초하여 에러 정보를 생성하는 단계, 메모리 모듈에서 상기 에러 정보를 읽기 위한 커맨드를 수신하는 단계, 그리고 상기 메모리 모듈로부터, 상기 커맨드에 응답하여 상기 에러 정보를 전송하는 단계를 포함할 수 있다.
예를 들어, 상기 방법은 컨트롤러에서 상기 에러 정보를 수신하는 단계, 그리고 상기 컨트롤러로부터 프로세서로, 상기 에러 정보를 전송하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은, 상기 컨트롤러로부터, 상기 에러 정보를 읽기 위한 상기 커맨드를 전송하는 단계, 그리고 상기 컨트롤러에서 상기 에러 정보를 수신하는 단계를 더 포함할 수 있다.
예를 들어, 에러 정보를 읽기 위한 상기 커맨드는 에러 정보를 읽기 위한 제 1 커맨드로 지칭될 수 있고, 상기 방법은, 컨트롤러의 상기 프로세서로부터, 에러 정보를 읽기 위한 제 2 커맨드를 수신하는 단계, 그리고 상기 컨트롤러로부터, 상기 제 2 커맨드에 응답하여 상기 제 1 커맨드를 전송하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은, 상기 메모리 모듈로부터, 데이터 스트로브 신호를 변형함으로써 정정 불가능한 에러를 교환하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은, 프로세서에서, 상기 메모리 모듈과 관련된 추가 정보를 생성하는 단계, 그리고 상기 프로세서에서, 상기 추가 정보를 상기 에러 정보와 결합시키는 단계를 더 포함할 수 있다.
예를 들어, 상기 메모리 모듈로부터 상기 에러 정보를 전송하는 단계는 통신 회선을 통하여 상기 에러 정보 및 다른 정보를 전송하는 단계를 포함할 수 있다.
예를 들어, 상기 다른 정보는 상기 메모리 모듈과 관련되지 않은 정보일 수 있다.
본 발명의 실시 예에 따른 시스템은, 메모리, 메인 메모리 채널을 통하여 상기 메모리에 연결된 프로세서, 그리고 상기 메인 메모리로부터 분리되고 상기 메모리 및 상기 프로세서에 연결된 통신 회선을 포함하되, 상기 메모리 및 프로세서는 상기 메인 메모리 채널 및 상기 통신 회선을 통하여 서로 통신하도록 구성될 수 있다.
예를 들어, 상기 프로세서는 메모리 컨트롤러를 포함할 수 있고, 상기 메모리 컨트롤러는 메인 메모리 채널의 일부일 수 있다.
예를 들어, 상기 프로세서는 상기 통신 회선을 통하여 시스템 관리 정보를 수신하도록 구성될 수 있다.
예를 들어, 상기 시스템 관리 정보는 열 정보 및 전원 정보 중 적어도 하나를 포함할 수 있다.
예를 들어, 상기 메모리는 상기 통신 회선을 통하여 상기 프로세서로 에러 정보를 교환하도록 구성될 수 있다.
본 발명의 실시 예에 따른 시스템은, 에러 정정 기능이 없는 메모리, 상기 메모리에 연결되고 상기 메모리로부터 읽혀진 데이터의 에러를 정정하고, 상기 에러에 응답하여 에러 정보를 생성하도록 구성되는 에러 정정 회로, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통하여 상기 에러 정정 회로에 연결된 프로세서를 포함할 수 있다. 상기 프로세서는 상기 제 1 통신 경로를 통하여 상기 에러 정정 회로로부터 정정된 데이터를 수신하도록 구성될 수 있고, 상기 프로세서는 상기 제 2 통신 경로를 통하여 상기 에러 정정 회로로부터 상기 에러 정보를 수신하도록 구성될 수 있다.
상기 제 2 통신 경로는 상기 에러 정정 회로로부터 상기 에러 정보를 수신하고 상기 프로세서에 상기 에러 정보를 전송하도록 구성될 수 있다.
본 발명의 실시 예에 따른 방법은, 메모리 장치에서, 데이터 인터페이스를 통하여 수신된 읽기 커맨드에 응답하여 에러를 포함하는 데이터를 읽는 단계, 상기 에러를 포함하는 상기 데이터를 읽는 것에 기초하여 에러 정보를 기록하는 단계, 그리고 상기 메모리 모듈로부터, 상기 에러 인터페이스를 통하여 상기 에러 정보를 전송하는 단계를 포함할 수 있다.
예를 들어, 상기 방법은 상기 에러에 응답하여 메모리로부터 읽혀진 상기 데이터를 다시 읽는 단계, 그리고 상기 데이터를 다시 읽는 것에 응답하여 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 만일 상기 다시 읽혀진 데이터가 정정 불가능한 에러를 나타낸다면, 상기 방법은 정정 불가능으로써 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 만일 다시 읽혀진 데이터가 정정 불가능한 에러이고 상기 에러가 정정 불가능한 에러라는 것을 나타내면, 상기 방법은 리페어 불가능한 것으로서 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 만일 상기 읽혀진 데이터가 에러가 없다는 것을 나타내면, 상기 방법은 소프트-읽기 에러로써 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은 정정 가능한 에러인 상기 에러에 응답하여 상기 메모리에 정정된 데이터를 다시 쓰는 단계를 더 포함할 수 있다.
예를 들어, 만일 상기 다시 쓰기 동안 정정 불가능한 에러가 발생하였다면, 상기 방법은 정정 불가능한 에러로써 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 만일 상기 다시 쓰기 동안 에러가 발생하지 않았다면, 상기 방법은 소프트-읽기 에러로써 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 만일 상기 다시 쓰기 동안 정정 가능한 에러가 발생하였다면, 상기 방법은 상기 메모리를 리페어 하는 것을 시도하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은 상기 메모리를 리페어 하는 시도의 결과에 기초하여 상기 에러를 확인하는 단계를 더 포함할 수 있다.
예를 들어, 상기 방법은, 상기 메모리 모듈로부터, 데이터 스트로브 신호를 변형함으로써 정정 불가능한 에러를 교환하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 모듈은, 데이터 인터페이스, 에러 인터페이스, 그리고 복수의 메모리 장치들을 포함하되, 각각의 메모리 장치는 상기 데이터 인터페이스 및 상기 에러 인터페이스에 연결될 수 있고, 데이터를 저장하도록 구성되는 메모리, 상기 데이터 인터페이스, 상기 에러 인터페이스, 및 상기 메모리에 연결되는 컨트롤러를 포함할 수 있고, 상기 컨트롤러는 상기 데이터 인터페이스를 통하여 상기 메모리에 저장된 데이터를 전송하도록 구성되고, 상기 컨트롤러는 상기 에러 인터페이스를 통하여 메모리로부터 읽혀진 데이터의 에러를 정정하는 것에 응답하여 생성된 에러 정보를 전송하도록 구성될 수 있다.
예를 들어, 상기 에러 인터페이스는 상기 메모리 장치들로부터 에러 정보를 수집하도록 구성될 수 있다.
예를 들어, 각각의 메모리 장치에 대해, 상기 컨트롤러는 정정 불가능한 에러를 감지하는 것에 응답하여 상기 메모리 장치로부터 상기 데이터 인터페이스로 전송된 데이터 스트로브 신호를 변형하도록 구성될 수 있고, 상기 데이터 인터페이스는 상기 메모리 장치들의 하나 또는 그 이상으로부터의 변형된 데이터 스트로브 신호에 응답하여 데이터 스트로브 신호를 전송하도록 구성될 수 있다.
본 발명의 실시 예에 따른 메모리 장치는, 데이터를 저장하도록 구성되는 메모리, 상기 메모리에 연결되고, 상기 메모리에 저장된 데이터를 읽고, 상기 메모리로부터 읽혀진 상기 데이터의 에러를 진단하고, 상기 에러를 진단하는 것에 응답하여 상기 에러의 에러 타입을 확인하도록 구성되는 컨트롤러를 포함할 수 있다.
예를 들어, 상기 컨트롤러는 소프트-읽기 에러, 소프트-쓰기 에러, 하드 에러, 리페어 가능한 에러, 및 리페어 불가능한 에러 중 적어도 하나로서 상기 에러 타입을 확인할 수 있다.
예를 들어, 상기 컨트롤러는 상기 데이터를 다시 읽는 것에 응답하여 상기 에러를 진단하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 상기 데이터를 다시 쓰는 것에 응답하여 상기 에러를 진단하도록 구성될 수 있다.
예를 들어, 상기 컨트롤러는 상기 데이터를 다시 쓰는 것에 응답하여 상기 메모리를 리페어 하는지 여부를 판단하도록 구성될 수 있다.
본 발명의 실시 예에 따르면, 저비용 및 저전력 특성을 제공하는 메모리 장치 및 모듈을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다.
도 2는 본 발명의 실시 예에 따른 컨트롤러를 포함하는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다.
도 3은 본 발명의 실시 예에 따른 베이스보드 관리 컨트롤러(BMC)를 포함하는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다.
도 4는 본 발명의 실시 예에 따른 프로세서-기반의 에러 정정을 수행하지 않는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다.
도 5는 본 발명의 실시 예에 따른 오염된 데이터 스트로브 신호를 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 6은 본 발명의 실시 예에 따른 별도의 정정 불가능한 에러 신호를 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 7은 본 발명의 실시 예에 따른 소프트웨어 모듈을 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 8은 본 발명의 실시 예에 따른 에러 검출 및 정정 모듈을 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 9는 본 발명의 실시 예에 따른 수집 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 10은 본 발명의 일 실시 예에 따른 메모리 컨트롤 아키텍처 모듈로부터 정보를 수집하는 에러 정정 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 11은 본 발명의 실시 예에 따른 인터페이스를 공유하는 복수의 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 12는 본 발명의 실시 예에 따른 인터페이스를 공유하는 정정 가능 에러 모듈 및 직렬 프레즌스 검출/레지스터 클록 드라이버 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 13은 본 발명의 실시 예에 따른 DRAM 내 에러 정정 기술을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도도이다.
도 14a 내지 도 14d는 본 발명의 실시 예들에 따른 모듈 내 에러 정정 기술을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다.
도 15는 본 발명의 실시 예에 따른 메모리 모듈을 보여주는 개략도이다.
도 16은 본 발명의 실시 예에 따른 SPD 또는 RCD 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다.
도 17은 본 발명의 실시 예에 따른 별도의 정정 불가능한 에러 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다.
도 18은 본 발명의 실시 예에 따른 메모리 장치를 보여주는 개략도이다.
도 19는 본 발명의 실시 예에 따른 메모리 장치를 보여주는 개략도이다.
도 20은 본 발명의 실시 예에 따른 메모리 장치들을 포함하는 메모리 모듈을 보여주는 개략도이다.
도 21 내지 도 23은 본 발명의 다양한 실시 예들에 따른 메모리 모듈들을 보여주는 개략도이다.
도 24 내지 도 26은 본 발명의 다양한 실시 예들에 따른 메모리 모듈들의 일부를 보여주는 개략도이다.
도 27은 본 발명의 실시 예에 따른 메모리 모듈을 보여주는 개략도이다.
도 28은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 29는 본 발명의 실시 예에 따른 에러를 다루는 기술을 보여주는 순서도이다.
도 30은 본 발명의 실시 예에 따른 에러를 다루는 기술을 보여주는 순서도이다.
도 31은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 32는 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 33은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 34는 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 35는 본 발명의 실시 예에 따른 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다.
도 36은 본 발명의 실시 예에 따른 서버를 보여주는 개략도이다.
도 37은 본 발명의 일 실시 예에 따른 서버 시스템을 보여주는 개략도이다.
도 38은 본 발명의 실시 예에 따른 데이터 센터를 보여주는 개략도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
본 발명은 메모리 시스템 아키텍처에 관한 것이다. 이하의 설명은 이 분야에서 능숙한 자에 의해서 제작되고 사용될 수 있을 정도로 개시된다. 따라서, 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 예시되는 실시 예들은 특정한 실시를 제공하기 위하여 방법과 시스템들로 설명될 것이다.
그러나 이러한 방법들과 시스템들은 다른 실시 예에서도 효과적으로 동작할 것이다. “예시적인 실시 예”나 “일 실시 예”, 그리고 “다른 실시 예”가 동일 또는 다른 실시 예뿐만 아니라 다양한 실시 예를 참조할 수 있을 것이다. 이 실시 예들은 특정 구성을 포함하는 시스템 그리고/또는 장치들로 표현될 수 있다. 하지만, 본 발명의 실시 예에 따른 시스템 그리고/또는 장치들은 더 적은 구성들을 도시된 구성보다 더 적은 수의 구성을 포함할 수 있고, 배열의 변경이나 구성들의 종류의 변경이 본 발명의 범위를 벗어나지 않는 한도에서 행해질 수 있다. 본 발명의 예시적인 실시 예는 특정 단계를 포함하는 방법으로 설명될 수 있다. 그러나 그러한 방법과 시스템 동작은 본 발명의 실시 예와 모순되지 않는 다른 그리고/또는 다른 순서를 가진 추가적인 스텝을 갖는 방법에서도 효과적으로 동작할 수 있다. 따라서, 본 발명의 개념을 적용한 실시 예는 도시된 예에만 국한되지 않는 것으로 이해되어야 한다.
어떤 요소들을 포함하는 특정 메모리 시스템 아키텍처에 포함되는 것으로 실시 예들이 설명될 것이다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 실시 예들이 다른 추가 구성이나 특징을 포함하는 메모리 시스템 아키텍처에서도 동일하게 동작할 수 있음을 이해할 수 있을 것이다. 하지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 방법과 시스템이 다른 구조에서도 동일하게 동작할 수 있음을 잘 이해할 것이다. 방법들과 시스템들은 문맥에서 단일 요소로 표현될 수도 있다. 하지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 방법들과 시스템들이 복수의 요소들을 갖는 메모리 시스템 아키텍처를 사용하여 동일하게 동작할 수 있음을 잘 이해할 것이다.
이 기술 분야에 정통한 사람은 일반적으로 여기서 사용되는 용어, 특히 첨부되는 청구항에 사용된 용어는 열린 용어이다(즉, '포함하는'이라는 용어는 '포함하되 한정되지 않는'으로, '갖는'이라는 용어는 '적어도 하나를 갖는'으로 해석되어야 한다). 이 기술 분야에 정통한 사람에게 있어서, 청구항에 기술된 특정 숫자는, 청구항 내에서 명시적으로 인용되었다고 해도, 그런 인용이 존재하지 않는 청구항에서는 특정 숫자의 한정이 존재하지 않는 것으로 이해되어서는 안된다. 예를 들면, 이해를 돕기 위해 후속되는 종속 청구항에서 '적어도 하나'와 '하나 또는 그 이상'이라는 구문이 포함될 수 있을 것이다. 하지만, 이와 같은 구문의 사용은 하나의 예시를 위해서 불명확한 '하나'라는 관사에 의해서 기술되는 한정으로 이해되어서는 안된다.
게다가, 'A, B, 또는 C 중에 적어도 하나'와 같은 관례가 사용되는 경우, 이러한 구문은 이 기술 분야에 정통한 사람에게 있어서 잘 이해될 것이다(즉, 'A, B, 또는 C 중에 적어도 하나를 포함하는 시스템'은 A 단독, B 단독, C 단독, A와 B, A와 C, B와 C, 그리고/또는 A와 B와 C 함께의 의미를 포함하지만, 어느 하나의 개념으로 한정되지는 않는다). 이 분야에서 정통한 사람에게 있어서, 상세한 설명이나 청구항 또는 도면에서 둘 또는 그 이상의 분리된 선택 가능한 용어들을 갖는 글자 그리고/또는 구문은 하나, 또는 둘 중 어느 하나, 또는 두 용어 모두를 포함할 가능성이 있는 것으로 고려되어야 한다. 예를 들면, 'A 또는 B'라는 구문은, 'A', 또는 'B' 또는 'A와 B'의 가능성을 포함하는 것으로 이해되어야 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다. 시스템(100)은 프로세서(104)에 연결된 메모리(102)를 포함할 수 있다. 메모리(102)는 데이터를 저장하도록 구성될 수 있다. 데이터가 메모리(102)로부터 읽혀질 때, 메모리(102)는 (가능하면, 데이터에 있는) 에러를 정정하도록 구성될 수 있다. 예를 들어, 메모리(102)는 싱글-비트 에러(single-bit error)를 정정하도록 구성될 수 있다. 메모리(102)는 더블-비트 에러(double-bit error)를 감지하도록 구성될 수 있다. 비록 예시적으로 특정 비트 수의 에러가 정정되는 것으로 설명되었다 하더라도, 메모리(102)는 다양한 비트 수의 에러를 정정하거나 감지하도록 구성될 수 있다. 게다가, 비록 하나 또는 그 이상의 에러 정정 기술들이 싱글-비트 에러 정정 또는 더블-비트 에러 정정 감지를 초래한다 하더라도, 메모리(102)는 적어도 하나의 에러를 정정할 수 있는 어떠한 에러 정정 기술들이라도 수행할 수 있다.
메모리(102)는 데이터를 저장하도록 구성된 장치를 포함할 수 있다. 특정한 예에서, 메모리(102)는 DRAM (dynamic random access memory)일 수 있다. 메모리(102)는 DDR, DDR2, DDR3, DDR4, 또는 이와 유사한 것과 같은 다양한 표준에 따라 DDR SDRAM (double data rate synchronous dynamic random access memory)을 포함할 수 있다. 다른 실시 예에서, 메모리(102)는 SRAM (static random access memory), 불휘발성 메모리, 또는 이와 유사한 것들을 포함할 수 있다.
메모리(102)는 저장된 데이터로부터 읽혀진 데이터에 있는 에러를 정정하거나 또는 에러 정정을 시도하는 것에 응답하여 에러 정보를 생성하도록 구성될 수 있다. 예를 들어, 에러 정보는 정정된 에러, 정정되지 않은 에러, 에러 없음(absence of an error), 에러의 개수, 또는 이와 유사한 것에 관한 정보를 포함할 수 있다. 에러 정보는 실제의 에러, 에러의 주소, 에러가 발생한 횟수, 또는 메모리(102)에 특유한 정보를 포함할 수 있다. 특정한 예에서, 에러 정보는 메모리(102)게 싱글-비트 에러를 정정한 것을 나타내는 싱글-비트 에러에 관한 정보를 포함할 수 있다. 비록 특정한 에러 정보가 설명되었다 하더라도, 에러 정보는 에러에 관한 어떤 정보라도 포함할 수 있다.
프로세서(104)는 메모리에 연결되고 명령들을 실행할 수 있도록 구성될 수 있다. 예를 들어, 프로세서(104)는 범용 프로세서, DSP (digital signal processor), GPU (graphics processing unit), ASIC (application specific integrated circuit), 프로그램 가능한 논리적 장치 (programmable logic device), 또는 이와 유사한 것일 수 있다.
프로세서(104)는 제 1 통신 경로(106) 및 제 2 통신 경로(108)를 통하여 메모리(102)에 연결될 수 있다. 프로세서(104)는 제 1 경로(106)를 통하여 메모리로부터 데이터를 수신하도록 구성될 수 있다. 예를 들어, 제 1 통신 경로(106)는 데이터 신호들, 스트로브 신호들, 클록 신호들, 인에이블 신호들, 또는 이와 유사한 것을 위한 신호 라인들을 갖춘 시스템 메모리 인터페이스일 수 있다. 즉, 통신 경로(106)는 프로세서(104)와 메인 시스템 메모리로서의 메모리(102) 사이의 인터페이스인 메인 메모리 채널의 일부일 수 있다.
프로세서(104)는 다른 통신 경로인, 제 2 통신 경로(108)를 통하여 메모리(102)에 연결될 수 있다. 프로세서(104)는 제 2 통신 경로(108)를 통하여 메모리(102)로부터의 에러 정보를 수신하도록 구성될 수 있다. 따라서, 실시 예에서, 프로세서(104)는 제 1 통신 경로(106)보다는 차라리 제 2 통신 경로(108)를 통하여 에러 정보 및, 특히, 정정된 에러 정보를 수신하도록 구성될 수 있다. 정정된 에러 정보는 정정된 에러에 관한 정보이다. 앞서 설명된 바와 같이, 에러 정보는 에러와 관련된 다양한 타입의 정보를 포함할 수 있다. 따라서, 정정된 에러 정보는 정정된 에러와 관련된 유사한 타입의 정보를 포함할 수 있다.
소프트웨어(110)는 프로세서(104)에 연결되는 것으로 도시되었다. 그러나, 소프트웨어(110)는 프로세서(104)에서 실행될 수 있는 다양한 프로그램들, 드라이버들, 모듈들, 루틴(routine)들, 또는 이와 유사한 것들을 나타낼 수 있다. 예를 들어, 소프트웨어(110)는 드라이버들, 커널 모듈들, 대몬(daemon)들, 애플리케이션들, 또는 이와 유사한 것들을 포함할 수 있다. 어떤 실시 예에서, 소프트웨어(110)는 프로세서(104)를 인에이블 시켜 본 명세서에서 설명되는 특정한 기능들을 수행하도록 구성될 수 있다.
비록 하나의 메모리(102)가 예시적으로 사용되었다 하더라도, 어떤 수의 메모리들(102)이라도 통신 경로들(106 및 108)과 유사한 두 개의 통신 경로들을 통하여 프로세서(104)에 연결될 수 있다. 실시 예에서, 각각의 메모리(102)는 다른 메모리들(102)과 분리하여 전용의 제 1 통신 경로(106)를 통하여 그리고 다른 메모리들(102)과 분리하여 전용의 제 2 통신 경로(108)를 통하여 프로세서(104)에 연결될 수 있다. 그러나, 다른 실시 예에서, 제 1 통신 경로(106)는 하나 이상의 메모리(102)에 의해 공유될 수 있고, 제 2 통신 경로(108)는 하나 이상의 메모리(102)에 의해 공유될 수 있다. 게다가, 비록 단일의 제 1 통신 경로(106)가 설명되었다 하더라도, 하나 또는 그 이상의 메모리들(102) 사이에 복수의 제 1 통신 경로들(106)이 제공될 수 있다. 유사하게, 비록 단일의 제 2 통신 경로들(108)이 설명되었다 하더라도, 하나 또는 그 이상의 메모리들(102) 사이에 복수의 제 2 통신 경로들(108)이 제공될 수 있다.
실시 예에서, 에러 정보는 아웃-오브-밴드(out-of-band) 통신 경로를 통하여 교환될 수 있다. 제 2 통신 경로(108)는 그러한 아웃-오브-밴드 통신 경로일 수 있다. 즉, 프로세서(104)와 메모리(102) 사이의 메인 통신은 제 1 통신 경로(106)를 통하여 수행될 수 있다. 이에 반해, 에러 정보는 아웃-오브-밴드 통신 경로(108)를 통하여 교환될 수 있다.
도 2는 본 발명의 실시 예에 따른 컨트롤러를 포함하는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(200)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106 및 108), 및 소프트웨어(110)와 유사한, 메모리(202), 프로세서(204), 통신 경로들(206 및 208), 및 소프트웨어(210)를 포함할 수 있다. 그러나, 제 2 통신 경로(208)는 컨트롤러(214) 그리고 컨트롤러(214)와 프로세서(204) 사이에 연결된 제 2 버스(216) 연결된 제 1 버스(212)를 포함할 수 있다. 즉, 프로세서(204) 및 메모리(202) 모두에 연결된 컨트롤러(214)는 제 2 통신 경로(208)의 일부일 수 있다.
컨트롤러(214)는 메모리(202) 및 프로세서(204)에 연결되도록 구성된 장치일 수 있다. 예를 들어, 컨트롤러(214)는 범용 프로세서, DSP (digital signal processor), GPU (graphics processing unit), ASIC (application specific integrated circuit), 프로그램 가능한 논리적 장치 (programmable logic device), 또는 이와 유사한 것일 수 있다.
버스들(212 및 216)은 다양한 통신 회선일 수 있다. 예를 들어, 버스들(212 및 216)은 SMBus (system management bus), I2C (inter-integrated circuit) 버스, IPMI (intelligent platform management interface)를 준수하는 버스, 모드버스 (Modbus) 버스, 또는 이와 유사한 것일 수 있다. 특정한 실시 예에서, 통신 경로(208)의 적어도 일부는 통신 경로(206)보다 대체로 느린 전송 속도로 동작할 수 있다. 예를 들어, 메모리(202)와 프로세서(204) 사이의 통신 경로(206)는 10 GB/S의 데이터 전송 속도(data-rate transfer)보다 더 높도록 설계될 수 있다. 그러나, 통신 경로(208)는 10 Mbit/s, 100 kbit/s, 또는 이와 유사한 것보다 더 낮은 데이터 전송 속도를 가질 수 있다. 따라서, 어떤 실시 예에서, 통신 경로(206)와 통신 경로(208)의 데이터 전송 속도 비율은 약 100, 1000, 도는 그 이상일 수 있다.
실시 예에서, 제 2 통신 경로(208)는 전용 통신 경로일 수 있다. 즉, 제 2 통신 경로(208)는 오직 메모리(202)와 프로세서(204) 사이의 정보의 통신을 위해 사용될 수 있다. 그러나, 다른 실시 예에서, 컨트롤러(214)는 다른 장치들을 액세스 가능하도록 할 수 있다. 예를 들어, 불휘발성 메모리 장치(268)는 버스(212)에 의해 컨트롤러(214)로 연결될 수 있다. 다른 실시 예에서, 다른 장치들(266)은 컨트롤러(214)로 연결될 수 있다. 따라서, 메모리(202)로부터의 정보와는 다른 정보는 버스(212 및/또는 216)를 통하여 프로세서(204) 및/또는 메모리(202)로 그리고 프로세서(204) 및/또는 메모리(202)로부터 전송될 수 있다. 특히, 메모리(202)로부터의 에러 정보는, 불휘발성 메모리에 관한 목적을 포함하는 다른 목적을 위해 사용되는, 제 2 통신 경로(208)를 통하여 프로세서(204)와 교환될 수 있다.
실시 예에서, 컨트롤러(214)는 불휘발성 메모리(254)를 포함할 수 있다. 불휘발성 메모리(254)는 메모리(202)로부터의 에러 정보를 저장하도록 구성될 수 있다. 따라서, 에러 정보는 전원이 차단되더라도 컨트롤러(214)에 보존될 수 있다. 프로세서(24)는 컨트롤러(214)로부터의 에러 정보를 요청하도록 구성될 수 있다. 따라서, 컨트롤러(214)는 불휘발성 메모리(254)에 저장된 에러 정보를 제공함으로써 그러한 요청에 응답하도록 구성될 수 있고, 메모리(202)에 액세스하여 프로세서(204) 또는 이와 유사한 것에 응답하여 에러 정보를 검색할 수 있다.
실시 예에서, 컨트롤러(214)는 에러 정보를 위해 메모리(202)를 폴링(polling) 하도록 구성될 수 있다. 다른 실시 예에서, 메모리(202)는 메모리 정보를 컨트롤러(214)로 푸시(push) 하도록 구성될 수 있다. 이와 상관없이, 불휘발성 메모리(254)에 저장된 에러 정보는 대체로 최신의 정보(up-to-date copy)일 수 있다.
도 3은 본 발명의 실시 예에 따른 베이스보드 관리 컨트롤러(baseboard management controller; BMC)를 포함하는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(300)은 도 2의 메모리(202), 프로세서(204), 통신 경로들(206 및 208), 그리고 소프트웨어(210)와 유사한, 메모리(302), 프로세서(304), 통신 경로들(306 및 308), 그리고 소프트웨어(310)를 포함할 수 있다. 그러나, 컨트롤러(314)는 BMC(314)일 수 있다.
BMC(baseboard management controller)(314)는 시스템(300)을 관리하도록 구성될 수 있다. 예를 들어, BMC(314)는 프로세서(304), 메모리(302), 다른 장치들(366), 또는 이와 유사한 것들의 센서들을 포함하는, 시스템(300)의 다양한 센서들에 연결될 수 있다. BMC(314)는 온도, 냉각 상태, 전원 상태, 또는 이와 유사한 것과 같은, 다양한 시스템 파라미터들에 대해 수집하고 보고하도록 구성될 수 있다. BMC(314)는 표준에 따라 시스템을 관리하고 정보로의 액세스를 인에이블 시키도록 구성될 수 있다. 관리 정보는 프로세서(304)에 이용 가능하도록 만들어질 수 있고, 따라서 소프트웨어(310)로 이용 가능해질 수 있다. 또는, BMC(314)는 아웃-오브-밴드 통신 경로와 같은, 다른 통신 경로를 통하여 이용 가능한 정보를 생성할 수 있다. 여기서, 아웃-오브-밴드 통신 경로는 프로세서(304)를 포함하지 않는 어떠한 통신 경로일 수 있다.
도 4는 본 발명의 실시 예에 따른 프로세서-기반의 에러 정정(processor-based error correction)을 수행하지 않는 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(400)은 도 1의 메모리(102), 프로세서(404), 통신 경로들(106 및 108), 및 소프트웨어(110)와 유사한 메모리(402), 프로세서(404), 통신 경로들(406 및 408), 및 소프트웨어(410)를 포함할 수 있다. 그러나, 본 실시 예에서, 프로세서(404)는 메모리 컨트롤러(MC)(450), 및 MCA (machine check architecture) 레지스터(452)를 포함할 수 있다.
메모리 컨트롤러(450)는 프로세서(404)에 집적될 수 있다. 메모리 컨트롤러(450)는 프로세서(404)와 메모리(402) 사이의 메인 인터페이스인 메인 메모리 채널의 일부일 수 있다. 메모리 컨트롤러(450)는 통신 경로(406)를 통하여 메모리(402)에 저장된 데이터로의 액세스를 제어하도록 구성될 수 있다. 어떤 실시 예에서, 메모리 컨트롤러(450)는 에러를 정정하도록 구성될 수 있으나, 에러 정정이 메모리(402)에 의해 수행될 때 그러한 에러를 정정할 기회를 갖지 않을 수 있다. 그러나, 본 실시 예에서, 메모리 컨트롤러(450)는 메모리(402)로부터 읽혀진 데이터에 있는 에러를 정정하도록 구성되지 않을 수 있다. 메모리 컨트롤러(450)는 메모리(402)로부터 읽혀진 데이터에 기초한 어떠한 에러도 보고하도록 구성되지 않을 수 있다.
MCA 레지스터(452)는 그 안에 하드웨어 에러가 보고될 수 있는 레지스터이다. 예를 들어, 캐시 에러, 버스에러, 데이터 에러, 또는 이와 유사한 것은 MCA 레지스터(452)에서 감지되고 보고될 수 있다. 그러나, 메모리 컨트롤러(450)는 메모리(402)로부터 읽혀진 데이터에 있는 에러를 정정하도록 구성되지 않기 때문에, 메모리(402)로부터 읽혀진 데이터에 기초한 어떠한 잠재적 에러 정보(potential error information)라도 MCA 레지스터(452)에 보고되지 않을 수 있다. 이에 상관없이, 앞서 설명된 바와 같이, 에러 정보는 통신 경로(408)를 통하여 프로세서(404)와 교환될 수 있다. 따라서, 메모리 컨트롤러(450) 및 MCA 레지스터(452)를 통하지 않고서라도, 에러 정보는 소프트웨어(410)에 이용 가능할 수 있다.
실시 예에서, 제 2 통신 경로(408)를 통한 에러 정보의 이용 가능성은 저비용의 시스템(400)을 가능하게 할 수 있다. 예를 들어, 어떤 메모리 정정이 없는 메모리 컨트롤러(450)를 갖춘 프로세서(404)가 사용될 수 있고, 에러 정보는 여전히 이용 가능할 수 있다. 특히, 메모리 에러 정정이 바람직함에도, 제 2 통신 경로(408)를 통하여 이용 가능한 에러 정보가 있기 때문에 에러 정정 기능이 없는 프로세서(404)가 사용될 수 있다. 따라서, 에러 정보를 사용하는 어떤 소프트웨어를 포함하는 소프트웨어(410)는, 마치 프로세서가 메모리 에러 정정을 할 수 있는 것처럼, 여전히 동작할 수 있다. 에러 정정이 없는 프로세서(404)는 더 낮은 전력, 더 낮은 비용의 프로세서일 수 있다. 따라서, 시스템(400)의 전체적인 전력 사용 및 비용은 감소할 수 있다.
비록 메모리 컨트롤러(450)가 프로세서(404)에 집적된 것으로 도시되었다 하더라도, 메모리 컨트롤러(450)는 프로세서(404)와 분리될 수 있다. 이와 상관없이, 통신 경로(408)는 메모리 컨트롤러(450) 및 에러 정정 회로를 갖는 프로세서(404)의 다른 부분들을 우회할 수 있다. 그러한 구성요소들의 우회는 제 2 통신 경로(408)를 통한 에러 정보의 교환이 메모리 컨트롤러(450), MCA 레지스터(452), 또는 이와 유사한 것에 대체로 독립되도록 할 수 있다. 즉, 비록 유사한 정보가 메모리 컨트롤러(450) 및/또는 MCA 레지스터(452)를 통하여 이용 가능하지 않다 하더라도, 에러 정보는 여전히 이용 가능할 수 있다.
도 5는 본 발명의 실시 예에 따른 오염된 데이터 스트로브 신호(poisoned data strobe signal)를 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(500)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106 및 108), 및 소프트웨어(110)와 유사한, 메모리(502), 프로세서(504), 통신 경로들(506 및 508), 및 소프트웨어(510)를 포함할 수 있다. 그러나, 본 실시 예에서, 통신 경로(506)는 데이터 라인들(532) 및 데이터 스트로브 라인(들)(533)을 포함할 수 있다. 다른 라인들은 통신 경로(506)의 일부로서 제공되었다. 그러나, 명료함을 위해 라인들은 도시되지 않았다.
실시 예에서, 정정 불가능한 에러와 관련된 에러 정보 및 정정 가능한 에러와 관련된 에러 정보는 다른 경로를 통하여 교환될 수 있다. 앞서 설명된 바와 같이, 정정 가능한 에러 정보는 통신 경로(508)를 통하여 교환될 수 있다. 정정 불가능한 에러 정보는 정정 불가능한 에러에 기초하여 다양한 다른 타입의 정보를 포함할 수 있다. 정정 불가능한 에러 정보는 제 1 통신 경로(506)를 통하여 교환될 수 있다. 예를 들어, 메모리(502)는 데이터 스트로브 라인(들)(533)을 통하여 전송된 (또는 전송되지 않은) 신호에 의해 정정 불가능한 에러를 정정하도록 구성될 수 있다. 즉, 일반적인 데이터 전송 동안, 데이터 스트로브 라인(들)(533)을 통해 전송되는 데이터 스트로브 신호는 데이터가 전송될 때 토글링(toggle)될 수 있다. 그러나, 만일 메모리(502)가 정정 불가능한 에러를 감지했을 때, 메모리 (502)는, 일반적인 데이터 전송 동안의 데이터 스트로브 신호와는 다른, 데이터 스트로브 라인(들)(533)을 통한 전송을 위한 데이터 스트로브 신호를 생성하도록 구성될 수 있다. 특히, 메모리(502)는 데이터 스트로브 라인(들)(533)을 통해 전송된 데이터 스트로브 신호를 토글링하지 않도록 구성될 수 있다. 그러한 조건이 감지될 때, 프로세서(504)는 소프트웨어(510)에 의해 처리될 수 있는, 하드웨어 예외(hardware exception)를 생성하도록 구성될 수 있다.
비록 통신 경로(506) 내의 신호 및/또는 라인들이 정정 불가능한 에러를 교환하기 위한 기술의 예로써 사용되었다 하더라도, 다른 신호들 및/또는 라인들이 프로세서와 정정 불가능한 에러를 교환하기 위해 사용될 수 있다. 어떻게 교환하는지와 상관없이, 시스템(500)을 정지시키거나 다른 액션을 취함으로써, 프로세서(504)는 그러한 정정 불가능한 에러의 교환에 응답하도록 구성될 수 있다.
도 6은 본 발명의 실시 예에 따른 별도의 정정 불가능한 에러 신호를 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(600)은 도 1의 메모리(102), 프로세서(104), 통신 경로(106 및 108), 및 소프트웨어(110)와 유사한 메모리(602), 프로세서(604), 통신 경로(606 및 608), 및 소프트웨어(610)를 포함할 수 있다. 그러나, 본 실시 예에서, 별도의 통신 경로(634)가 메모리(602)와 프로세서(604) 사이에 연결될 수 있다.
도 5의 시스템(500)과 유사하게, 정정 불가능한 에러는 프로세서(604)와 교환될 수 있다. 본 실시 예에서, 메모리(602)는 통신 경로(634)를 통하여 정정 불가능한 에러 정보를 교환하도록 구성될 수 있다. 예를 들어, 제 3 통신 경로(634)는 제 1 통신 경로(606)와는 별도의 전용 라인일 수 있다. 따라서, 정정 불가능한 에러와 관련된 에러 정보는, 제 1 및 제 2 통신 경로(606 및 608)와는 다른 통신 경로를 통하여, 프로세서(604)에 의해 수신될 수 있다.
도 7은 본 발명의 실시 예에 따른 소프트웨어 모듈을 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(700)은 도 1의 메모리(102), 프로세서(104), 통신 경로(106 및 108), 및 소프트웨어(110)와 유사한 메모리(702), 프로세서(704), 통신 경로들(706 및 708), 및 소프트웨어(710)를 포함할 수 있다. 그러나, 본 실시 예에서, 소프트웨어(710)는 모듈(718)을 포함할 수 있다.
모듈(718)은 프로세서를 통하여 에러 정보(722)를 액세스하도록 구성된 소프트웨어(710)의 일부를 나타낼 수 있다. 예를 들어, 모듈(718)은 커널 모듈, 드라이버, 확장, 또는 이와 유사한 것을 포함할 수 있다. 모듈(718)은 통신 경로(708)와 관련된 인터페이스를 위한 드라이버를 포함할 수 있다. 특정한 실시 예에서, 모듈(718)은 IPMI 버스, IPMI2 버스, 또는 이와 유사한 것과 관련된 드라이버를 포함할 수 있다. 다른 정보(720)는 소프트웨어(710)에 이용 가능할 수 있다. 에러 정보(722)는 에러 정보(722)와 관련된 소프트웨어(710)의 일부를 나타내도록 별도로 도시되었다.
본 실시 예에서, 모듈(718)은 프로세서(704)가 메모리(702)로부터의 에러 정보를 요청하게 할 수 있다. 예를 들어, 메모리(702)는 에러 정보를 생성할 수 있다. 이후, 프로세서(704)는 통신 경로(708)를 통하여 에러 정보를 위한 요청을 전송할 수 있다. 메모리(702)는 통신 경로(708)를 통하여 에러 정보와 함께 요청에 응답하도록 구성될 수 있다.
도 8은 본 발명의 실시 예에 따른 에러 검출 및 정정 모듈을 갖는 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(800)은 도 7의 메모리(702), 프로세서(704), 통신 경로(706 및 708), 및 정보(720 및 722)에 응답하여 동작하는 메모리 모듈(718)을 포함하는 소프트웨어(710)와 유사한 메모리(802), 프로세서(804), 통신 경로(806 및 808), 및 정보(820 및 822)에 응답하여 동작하는 메모리 모듈(818)을 포함하는 소프트웨어(810) 포함할 수 있다. 그러나, 본 실시 예에서, 소프트웨어(810)는 에러 검출 및 정정(error detection and correction; EDAC) 모듈(824)을 포함할 수 있다.
실시 예에서, EDAC 모듈(824)은 메모리, 캐시, 입출력 장치, 주변 장치, 버스들, 및/또는 시스템(800)의 다른 부분들로부터 제공되는 에러 정보를 관리할 수 있고, 애플리케이션 레이어와 같은 고기능 레이어에 그러한 정보를 노출시킬 수 있다. 특히, EDAC 모듈(824)은 모듈(818)로부터 에러 정보를 수신하도록 구성될 수 있다. EDAC 모듈(824)은 에러 정보와 다른 정보를 조합하여, 다른 모듈들, 애플리케이션들, 또는 이와 유사한 것들이 에러 정보에 액세스하도록 구성될 수 있다.
도 9는 본 발명의 실시 예에 따른 수집 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(900)은 도 7의 메모리(702), 프로세서(704), 통신 경로들(706 및 708), 및 정보(720 및 722)에 응답하여 동작하는 모듈(718)을 포함하는 소프트웨어(710)와 유사한, 메모리(902), 프로세서(904), 통신 경로들(906 및 908), 및 정보(920 및 922)에 응답하여 동작하는 모듈(818)을 포함하는 소프트웨어(810)를 포함할 수 있다. 그러나, 본 실시 예에서, 소프트웨어(910)는 제 2 모듈(926)을 포함할 수 있다. 제 2 모듈(926)은 정보(920)를 수신하도록 구성될 수 있다. 특히, 이 다른 정보(920)는 메모리(902)에 대한 에러와 관련이 없는 정보를 포함할 수 있다. 다른 정보(920)의 적어도 일부(921)는 제 1 모듈(918)에 의해서 수신될 수 있다. 제 1 모듈(918)은 제 2 모듈(926)로부터의 다른 정보(920)의 일부 또는 전부와 에러 정보(922)를 조합할 수 있다. 제 1 모듈(918)은 단일 인터페이스에 조합된 정보를 제공할 수 있다. 예를 들어, 제 1 모듈(918)은, 도 8의 EDAC 모듈(824)과 같은, EDAC 모듈에 조합된 정보를 제공하도록 구성될 수 있다.
도 10은 본 발명의 일 실시 예에 따른 메모리 컨트롤 아키텍처 모듈로부터 정보를 수집하는 에러 정정 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(1000)은 도 9의 메모리(902), 프로세서(904), 통신 경로들(906 및 908), 및 정보(920 및 922)에 응답하여 동작하는 모듈들(918 및 926)을 포함하는 소프트웨어(910)와 유사한, 메모리(1002), 프로세서(1004), 통신 경로들(1006 및 1008), 및 정보(1020 및 1022)에 응답하여 동작하는 모듈들(1018 및 1026)을 포함하는 소프트웨어(1010)를 포함할 수 있다. 그러나, 본 실시 예에서, 제 1 모듈(1018)은 에러 정정(error correction; EC) 모듈이고, 제 2 모듈(1026)은 MCA 모듈일 수 있다.
MCA 모듈(1026)은 도 4의 MCA 레지스터(452)와 같은 MCA 레지스터로의 액세스를 제어하도록 구성될 수 있다. 정보(1020)는 MCA 레지스터(452)로부터의 정보를 나타낼 수 있다. EC 모듈(1018)은 MCA 모듈(1026)에 액세스하여 정보(1020)를 복구하도록 구성될 수 있다. EC 모듈(1018)은 MCA 모듈(1026)로부터의 정보(1020)를 에러 정보(1022)와 조합하고, 조합된 정보를 단일 인터페이스에 제공할 수 있다.
특히, EC 모듈(1018)은 프로세서(1004)가 에러를 정정하도록 하는 MCA 모듈(1026)과 유사하거나 또는 동일한 방식으로 인터페이스를 제공할 수 있다. 예를 들어, 만일 프로세서(1004)가 메모리(1002)로부터 읽혀진 데이터에 있는 에러를 정정하도록 구성되었다면, 그 정보는 MCA 모듈(1026)을 통하여 이용 가능할 수 있다. 그러나, 만일 프로세서(1004)가 메모리(1002)로부터 읽혀진 데이터에 있는 에러를 정정하도록 구성되지 않고, 메모리(1002)에서 정정되는 에러 때문에 MCA 모듈(1026)에 의해 모니터링 되는 통신 경로에 의해 에러 정보를 수신하지 않는다면, MCA 모듈(1026)은 에러 정보를 제공할 수 없을 것이다. 이와 상관없이, EC 모듈(1018)은 통신 경로(1008)를 통하여 획득된 정보(1022)와 정보(1020)를 조합하고, MCA 모듈(1026)이 제공하여 프로세서(1004)로 하여금 메모리(1002)로부터 읽혀진 데이터에 있는 에러를 정정하도록 했던 정보 또는 MCA 모듈(1026)에 이용 가능한 에러 정보와 유사하거나 동일한 조합된 정보를 제공할 수 있다. 소프트웨어(1010)는 프로세서(1004)가 에러 정정 기능을 제공하는지의 여부와 상관없이 동일하거나 또는 유사한 인터페이스를 사용할 수 있다. 다시 말해서, 에러 정정 기능을 갖는 프로세서(1004)는 충분히 사용되는 에러 정보에 의존하는 소프트웨어에 대해 필수적인 것은 아니다. 결과적으로, 에러 정정 기능이 없는 프로세서(1004)에 의해서 비용 절감이 가능하다.
도 11은 본 발명의 실시 예에 따른 인터페이스를 공유하는 복수의 모듈을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(1100)은 도 7의 메모리(702), 프로세서(704), 통신 경로들(706 및 708), 및 정보(720 및 722)에 응답하여 동작하는 소프트웨어(710)와 유사한, 메모리(1102), 프로세서(1104), 통신 경로들(1106 및 1108), 및 정보(1120 및 1122)에 응답하여 동작하는 소프트웨어(1110)를 포함할 수 있다. 그러나, 본 실시 예에서, 소프트웨어(1110)는 제 1 모듈(1118), 제 2 모듈(1128), 그리고 인터페이스 모듈(1130)을 포함할 수 있다.
제 1 모듈(1118)은 도 7의 모듈(718)과 유사하다. 그러나, 제 1 모듈(1118)은 인터페이스 모듈(1130)을 통하여 메모리(1102)로부터 에러 정보를 수신하도록 구성될 수 있다. 인터페이스 모듈(1130)은 통신 경로(1108)에 인터페이스를 제공하도록 구성될 수 있다. 예를 들어, 인터페이스 모듈(1130)은 IPMI 버스를 통하여 액세스를 허용하도록 구성된 모듈일 수 있다.
제 2 모듈(1128)과 같은 다른 모듈들도 인터페이스 모듈(1130)을 통하여 통신을 수행하도록 구성될 수 있다. 예를 들어, 제 2 모듈(1128)은 IPMI 버스에 접속되는 또 다른 장치들에 액세스하거나, 열 정보 또는 전원 정보와 같은 메모리(1102)의 다른 부분에 액세스하도록 구성될 수 있다. 에러 정보 및 다른 정보 모두는 인터페이스 모듈(1130)에 의해서 전달되는 정보(1122)의 일부분일 수 있다. 즉, 에러 정보는 전체 경로를 통하여 전용의 소프트웨어를 사용하여 전송될 수 있으나, 모듈들, 인터페이스들, 버스들, 또는 이와 유사한 것들과, 관련되거나 관련되지 않은 정보나 소스를 공유할 수 있다.
도 12는 본 발명의 실시 예에 따른 인터페이스를 공유하는 정정 가능 에러 모듈 및 직렬 프레즌스 검출/레지스터 클록 드라이버 모듈(serial presence detect/ registering clock driver module)을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(1200)은 도 11의 메모리(1102), 프로세서(1104), 통신 경로들(1106 및 1108), 및 정보(1120 및 1122)에 응답하여 동작하는 모듈들(1118, 1128 및 1130)을 포함하는 소프트웨어(1110)와 유사한, 메모리(1202), 프로세서(1204), 통신 경로들(1206 및 1208), 및 정보(1220, 1222)에 응답하여 동작하는 모듈들(1218, 1228 및 1230)을 포함하는 소프트웨어(1110)를 포함한다. 그러나, 본 실시 예에서, 제 1 모듈(1218)은 정정된 에러(corrected error; CE) 모듈이고, 제 2 모듈(1228)은 직렬 프레즌스 검출(serial presence detect; SPD)/레지스터 클록 드라이버(registering clock driver; RCD) 모듈(1228)이다.
특히, SPD/RCD 모듈(1228)은 직렬 프레즌스 검출 시스템 및/또는 레지스터 클록 드라이버 시스템에 관련된 정보에 액세스하도록 구성될 수 있다. SPD/RCD 모듈(1228)은 그러한 시스템의 하나 또는 둘 모두에 액세스하도록 구성될 수 있다. 정보는 제 2 통신 경로(1208)를 통하여 액세스 될 수 있다. 따라서, 본 실시 예에서 메모리(1202)로부터 제공되는 에러 정보는 SPD/RCD에 관련된 정보로서 통신 경로(1208)를 통하여 액세스 될 수 있다.
도 13은 본 발명의 실시 예에 따른 DRAM 내 에러 정정 기술을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(1300)은, 도 10의 메모리(1002), 프로세서(1004), 및 정보(1020 및 1022)에 응답하여 동작하는 에러 정정 모듈(1018)과 MCA 모듈(1026)과 유사한, 메모리(1302), 프로세서(1304), 및 정보(1320 및 1322)에 응답하여 동작하는 에러 정정 모듈(1318)과 MCA(machine check architecture) 모듈(1326)을 포함하는 커널(1310)을 포함한다. 그러나, 본 실시 예에서, 메모리들(1302) 각각은 ECC 기능을 갖는 듀얼 라인 메모리 모듈(ECC DIMM)으로 제공될 수 있다.
각각의 ECC DIMM(1302)은 데이터를 저장하고 저장된 데이터에 있는 에러를 정정하도록 구성될 수 있다. 본 실시 예에서, ECC DIMM(1302)은 대응하는 통신 경로들(1364)을 통하여 프로세서(1304)의 메모리 컨트롤러(1350)에 각각 연결될 수 있다. 통신 경로(1364)는 도 5의 통신 경로(506)와 유사하게 데이터 신호들 및 데이터 스트로브 신호들을 전달하기 위한 라인들을 포함할 수 있다. ECC DIMM(1302)은 도 3의 버스(312), BMC(314), 및 버스(316)와 유사한 버스(1312), BMC(1314), 및 버스(1316)를 포함하는 통신 경로(1308)를 통하여 프로세서(1304)에 각각 연결될 수 있다.
실시 예에서, ECC DIMM(1302)은 ECC DIMM(1302)로부터 읽혀진 데이터에 있는 하나 또는 그 이상의 에러를 정정하도록 구성될 수 있다. 에러 정정 기술은 싱글 에러 정정-더블 에러 검출(single error correction - double error detection; SEC-DEC) 기술, 싱글-칩 칩킬(single-chip chipkill) 기술, 더블-칩 칩킬(double-chip chipkill) 기술 등을 포함할 수 있다. 어떠한 에러 정정 기술이라도 사용될 수 있다.
본 실시 예에서, 메모리 컨트롤러(1350)는 에러 정정을 수행하도록 구성되지 않거나, 반대로 ECC DIMM(1302)으로부터 에러 정보를 수신하도록 구성되지 않을 수 있다. ECC DIMM(1302)을 경유하는 데이터는 이미 에러가 정정되었기 때문에, 메모리 컨트롤러(1350)는 정정 가능한 에러를 나타내는 어떠한 정보도 받지 않을 수 있다. 그러나, 에러 정보, 특히, 정정된 에러 정보는 버스(1312 및 1316) 그리고 BMC(1314)와 같은 통신 경로(1308)를 통하여 프로세서(1304)에 전달될 수 있다.
실시 예에서, 프로세서(1304)는 에러 정정을 수행할 수 없는 프로세서일 수 있으나, 버스(1316)로 연결될 수 있는 인터페이스를 갖는 프로세서일 수 있다. 그러나, 일단 프로세서(1304)가 커널(1310), 특히, 에러 정정 모듈(1318)에 의해서 설정되면, 제반 시스템(1300)은 에러 정정 기능이 있는 프로세서를 갖는 시스템과 유사하게 에러 정정을 수행하도록 구성될 수 있다.
실시 예에서, 에러 정정 모듈(1318)은 에러 정정 인터페이스를 갖는 가상 메모리 컨트롤러를 생성할 수 있다. 예를 들어, 앞서 설명한 바와 같이, 에러 정정 모듈(1318)은 MCA 모듈(1326)로부터 정보를 수신하도록 구성될 수 있다. 이때 정보는 에러 정정 인터페이스를 갖는 실제의 메모리 컨트롤러가 일부 또는 전부의 에러 정보 없이 제공하는 정보일 수 있다. 에러 정정 모듈(1318)은 메모리 컨트롤러의 ECC 인터페이스로부터 기대되는 정보의 완성 셋을 생성하기 위한 에러 정보를 보완할 수 있다. 결과적으로, EDAC 모듈(1324), 메모리 ECC 대몬(1358), 다른 애플리케이션(1360) 등은 에러 정정과 함께 프로세서와 사용되는 것들의 변경 없이 사용될 수 있다. 예를 들어, EDAC 모듈(1324)은 메모리 ECC 정보를 위해서 EC 모듈(1318)을 폴링(polling)하도록 구성될 수 있다. 결국, EC 모듈(1318)은 제 2 통신 경로(1308)를 통하여 수신된 에러 정보를 리턴할 수 있다. EDAC 모듈(1324)과 통신하는 메모리 ECC 대몬(1358)은 에러 정보를 위해 EDAC 모듈(1324)을 폴링할 수 있다. 그 후, 메모리 ECC 대몬(1358)은 애플리케이션 레벨에서 에러 정보에 대응하는 액션을 취할 수 있다. 그러한 액션들은 페이지 만료, 시스템(1300)을 동작시키기 위한 다른 에러 관리 동작, 신뢰성 레벨을 유지하기 위한 동작, 폐기 추천 등을 포함할 수 있다.
상술한 바와 같이, 정정 불가능한 에러는 검출될 수 있다. 정정 불가능한 에러 정보는 메모리 컨트롤러(1350), MCA 레지스터(1352), 그리고 MCA 모듈(1326)을 통하여 에러 정정 모듈(1318)로 전달될 수 있다. 예를 들어, 정정 불가능한 에러는 MCA 모듈(1326)을 통하여 마스크 불가 인터럽트(non-maskable interrupt), 예외 등으로 전달될 수 있다. 특정 실시 예에서, 메모리 컨트롤러(1350)에 어떻게 전달되었는지에 관계없이, 메모리 컨트롤러(1350)는 정정 불가능한 에러에 응답하여 하드웨어 예외를 생성할 수 있다. MCA 모듈(1326)은 상술한 예외 정보를 가로채 에러 정정 모듈(1318)로 전달할 수 있다. 그러면 에러 정정 모듈(1318)은 예외 정보를 EDAC 모듈(1324)에 전달할 수 있다. 상술한 바와 같이 정정 불가능한 에러 정보를 전달하는 것에 더하여 또는 전달하는 것 대신에, 정정 불가능한 에러 정보는 통신 경로(1308)를 통하여 전달될 수 있다.
실시 예에서, ECC DIMM(1302)은 정정된 데이터를 프로세서(1304)에 전달하도록 구성될 수 있다. 그러나, 데이터는 ECC DIMM(1302)과 메모리 컨트롤러(1350) 사이에서 오류가 생길 수 있다. 따라서, 어떤 형태의 에러 정정이 ECC DIMM(1302)과 프로세서(1304) 또는 메모리 컨트롤러(1350) 사이에서 수행될 수 있다. 예를 들어, ECC DIMM(1302)으로부터 전달되는 데이터는 통신 링크(1364) 상에서 발생하는 에러들을 검출하도록 의도된 에러 정정 코드로 인코딩될 수 있다. 이와 같은 에러 정정에 의해서, ECC DIMM(1302)의 저장 매체로부터 프로세서(1304)로 전달되는 전체 경로가 에러 정정으로 보호될 수 있다.
도 14a 내지 도 14d는 본 발명의 실시 예들에 따른 모듈 내 에러 정정 기술을 갖춘 메모리 시스템 아키텍처를 포함하는 시스템을 보여주는 개략도이다. 도 14a를 참조하면, 시스템(1400)은 도 13의 시스템과 유사한 구성들을 포함할 수 있다. 그러나, 본 실시 예에서, ECC DIMM(1402)은 버퍼(1462)를 포함한다. 버퍼(1462)는 ECC DIMM(1402)으로부터 읽혀지는 데이터에 포함되는 에러를 정정하도록 구성될 수 있다. 특히, 비정정 데이터는 ECC DIMM(1402)의 DRAM 장치들(미도시)과 같은 내부 메모리 장치로부터 읽혀질 수 있다. 버퍼(1462)는 본 명세서에서 설명된 다른 메모리들과 유사하게 비정정 데이터의 에러를 정정하고, 정정된 에러 정보를 생성하도록 구성될 수 있다. 상술한 에러 정보는 통신 경로(1408)를 통하여 전달되고, 앞서 설명한 방법들에 의해서 사용될 수 있다. 즉, 에러 정보는 에러 정보가 생성된 방식에 관계없이 상술한 다양한 방법에 의해서 사용될 수 있다.
도 14b를 참조하면, 시스템(1400)의 구성들은 도 14a의 그것들과 유사할 수 있다. 그러나, 본 실시 예에서, EDAC 모듈(1424)은 MCA 모듈(1426)과 정보를 교환하도록 구성될 수 있다. 예를 들어, EDAC 모듈(1424)은 하드웨어 관련 정보, 정정 불가능한 에러 정보, 또는 MCA 모듈(1426)을 통하여 이용 가능한 정보를 위해 MCA 모듈(1426)을 폴링하도록 구성될 수 있다. EDAC 모듈(1424)은 MCA 모듈(1426)로부터 제공되는 정보와 에러 정정 모듈(1418)로부터 전달되는 정보를 조합하도록 구성될 수 있다.
도 14c를 참조하면, 시스템(1400)의 구성들은 도 14a의 그것들과 유사할 수 있다. 그러나, 본 실시 예에서, MCELOG 모듈(1425)은 에러 정정 모듈(1418)로부터의 정보를 수신하도록 구성될 수 있다. MCELOG 모듈(1425)은 메모리 에러, 데이터 전송 에러 등과 같은 다양한 시스템 에러와 관련된 머신 체크 이벤트(machine check event; MCE)들을 기록하도록 구성될 수 있다. MCELOG 모듈(1425)은 메모리 ECC 대몬(1458)으로의 인터럽트를 발생시키고, 메모리 ECC 대몬(1458)에 에러 정보를 전달하도록 구성될 수 있다.
도 14d를 참조하면, 시스템(1400)의 구성들은 도 14c의 그것들과 유사할 수 있다. 그러나, 본 실시 예에서, 도 14a와 도 14b의 사이의 차이점과 유사하게, MCELOG 모듈(1425)은 도 14b의 EDAC 모듈(1424)과 유사하게 MCA 모듈(1426)로부터 제공되는 정보를 수신하도록 구성될 수 있다.
비록, 도 14a 내지 도 14d에서 버퍼(1462)를 포함하는 ECC DIMM(1402)에 대해서 설명되었지만, 다른 실시 예에서, ECC DIMM(1302)를 포함하는 도 13의 시스템(1300)의 다양한 구성들이 적용될 수 있다.
도 15는 본 발명의 실시 예에 따른 메모리 모듈을 보여주는 개략도이다. 메모리 모듈(1500)은 하나 또는 그 이상의 메모리 장치들(1501), 데이터 인터페이스(1536), 에러 인터페이스(1538), 그리고 컨트롤러(1541)를 포함할 수 있다. 데이터 인터페이스(1536)는 메모리 장치들(1501)에 저장된 데이터로부터 데이터(1540)를 전송하고 수신하도록 구성될 수 있다. 메모리 모듈(1500)은 하나 또는 그 이상의 메모리 장치들(1501)로부터 읽혀진 데이터에 대해 에러 정보를 생성하도록 구성될 수 있다. 에러 인터페이스(1538)는 하나 또는 그 이상의 메모리 장치(1501)로부터 읽혀진 데이터에 있는 에러를 정정하는 것에 응답하여 생성된 에러 정보를 전송하도록 구성될 수 있다.
데이터 인터페이스(1536)는 메모리 장치들(1501)에 저장된 데이터가 전송되는 인터페이스이고, 메모리 장치들(1501)에 저장될 데이터(1540)가 수신되는 인터페이스이다. 예를 들어, 데이터 인터페이스(1536)는 데이터 라인, 스트로브 라인, 어드레스 라인, 인에이블 라인, 클록 라인 등과 같은 라인들을 위한 버퍼, 드라이버 회로, 종단 회로(termination), 또는 다른 회로들을 포함할 수 있다.
에러 인터페이스(1538)는 SMBus, IPMI, 또는 본 명세서에서 설명된 다른 버스들과 같은 특정 버스를 통하여 통신하도록 구성된 인터페이스일 수 있다. 실시 예에서, 에러 인터페이스(1538)는 메모리 모듈(1500)이 에러 정보와 더불어 다른 정보를 교환하기 위한 기존의 인터페이스일 수 있다. 따라서, 정보(1542)는 에러 정보뿐만 아니라 다른 정보도 포함할 수 있다.
컨트롤러(1541)는 메모리 장치들(1501)과 연결되도록 구성된 어떤 장치일 수 있다. 예를 들어, 컨트롤러(214)는 범용 프로세서, DSP (digital signal processor), ASIC (application specific integrated circuit), 프로그램 가능한 논리 장치(programmable logic device) 등을 포함할 수 있다. 상세하게 후술 되겠지만, 컨트롤러(1541)는 RCD 등과 같은 버퍼를 포함할 수 있다.
컨트롤러(1541)는 메모리 장치들(1501), 데이터 인터페이스(1536), 그리고 에러 인터페이스(1538)와 연결될 수 있다. 컨트롤러(1541)는 에러 정보를 얻도록 구성될 수 있다. 실시 예에서, 컨트롤러(1541)는 메모리 장치들(1501)로부터 에러 정보를 획득할 수 있지만, 다른 실시 예에서는, 컨트롤러(1541)는 메모리 장치들(1501)로부터의 데이터에 있는 에러를 정정하고 에러 정보를 생성하도록 구성될 수 있다.
실시 예에서, 컨트롤러(1541)는 데이터 인터페이스(1536)를 통하여 정정 불가능한 에러를 교환하도록 구성될 수 있다. 예를 들어, 앞서 설명된 바와 같이, 데이터 스트로브 신호는 정정 불가능한 에러를 나타내도록 사용될 수 있다. 컨트롤러(1541)는 정정 불가능한 에러를 검출하는 것에 응답하여 데이터 인터페이스(1536)를 통하여 전송되는 스트로브 신호를 조정하도록 구성될 수 있다.
도 16은 본 발명의 실시 예에 따른 SPD 또는 RCD 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다. 본 실시 예에서, 메모리 모듈(1600)은 도 15에서 설명된 하나 또는 그 이상의 메모리 장치들(1501), 데이터 인터페이스(1536), 에러 인터페이스(1538), 및 컨트롤러(1541)와 유사한, 하나 또는 그 이상의 메모리 장치들(1601), 데이터 인터페이스(1636), 에러 인터페이스(1638), 및 컨트롤러(1641)를 포함할 수 있다. 그러나, 도 15의 에러 인터페이스(1538)는 여기서 SPD/RCD 인터페이스(1638)일 수 있다.
SPD/RCD 인터페이스(1638)는 직렬 프레즌스 검출(SPD) 시스템이나 RCD 시스템(미도시)으로의 액세스를 제공하기 위해 사용될 수 있다. 특정 실시 예에서, 에러 정보는 상술한 SPD 또는 RCD 시스템 내의 특정 레지스터나 메모리 영역을 통하여 이용 가능할 수 있다. 따라서, 에러 정보는 SPD 또는 RCD 정보가 획득될 수 있는 동일한 인터페이스를 통하여 획득될 수 있다.
에러 정보가 기존의 하드웨어 인터페이스를 통하여 이용 가능하기 때문에, 추가적인 하드웨어는 불필요하다. 예를 들어, 에러 정보를 액세스하기 위한 SPD/RCD 인터페이스(1638)를 통하여 수신되는 커맨드는 어드레스, 레지스터 어드레스, 또는 SPD/RCD 시스템에 의해서 비사용되는 다른 필드 등에 있어서 다른 명령어들과 구별된다. 실시 예에서, 에러 정보를 게시하기 위해 SPD/RCD 시스템의 새로운 레지스터가 정의될 수 있다. 다른 실시 예에서, 에러 정보를 교환하기 위해 기존의 레지스터가 재사용될 수도 있을 것이다.
도 17은 본 발명의 실시 예에 따른 별도의 정정 불가능한 에러 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다. 본 실시 예에서, 메모리 모듈(1700)은 도 15에서 설명된 하나 또는 그 이상의 메모리 장치들(1501), 데이터 인터페이스(1536), 에러 인터페이스(1538), 및 컨트롤러(1541)와 유사한, 하나 또는 그 이상의 메모리 장치들(1701), 데이터 인터페이스(1736), 에러 인터페이스(1738), 및 컨트롤러(1741)를 포함할 수 있다. 그러나, 메모리 모듈(1700)은 또한 정정 불가능한 에러 인터페이스(1744)를 포함할 수 있다.
정정 불가능한 에러(uncorrectable error; UE) 인터페이스(1744)는 메모리 모듈(1700)이 정정 불가능한 에러를 교환하도록 구성된 별도의 인터페이스이다. 예를 들어, 정정 불가능한 에러 인터페이스(1744)는 전용 라인이거나, 전용의 버스 등일 수 있다.
도 18은 본 발명의 실시 예에 따른 메모리 장치를 보여주는 개략도이다. 본 실시 예에서, 메모리 장치(1800)는 데이터인터페이스(1836) 및 에러 인터페이스(1838)를 포함할 수 있다. 데이터 인터페이스(1836) 및 에러 인터페이스(1838)는 도 15의 데이터 인터페이스(1536) 및 에러 인터페이스(1538)와 유사할 수 있다. 그러나, 본 실시 예에서, 데이터 인터페이스(1836) 및 에러 인터페이스(1838)는 도 15의 메모리 모듈과 같은 메모리 모듈보다는 메모리 장치(1800)로의 인터페이스일 수 있다.
메모리 장치(1800)는 컨트롤러(1841)를 포함할 수 있다. 컨트롤러(1814)는 메모리(1801) 및 인터페이스들(1836 및 1838)에 연결되도록 구성된 어떤 장치일 수 있다. 예를 들어, 컨트롤러(1841)는 범용 프로세서, DSP (digital signal processor), ASIC (application specific integrated circuit), 프로그램 가능한 논리 장치(programmable logic device) 등을 포함할 수 있다.
메모리(1801)는 데이터를 저장하도록 구성될 수 있다. 예를 들어, 메모리(1801)는 메모리 셀 어레이일 수 있다. 그러나, 다른 실시 예에서, 데이터는 다른 구성들에 저장될 수 있다. 메모리(1801)는 전기적, 자기적, 화학적, 광학적, 또는 다른 타입의 저장 매체를 포함할 수 있다.
컨트롤러(1841)는 데이터 인터페이스(1836)를 통하여 메모리(1801)에 저장된 데이터를 전송하도록 구성될 수 있다. 컨트롤러(1841)는 데이터 인터페이스(1836)를 통하여 메모리(1801)에 저장될 데이터를 수신하도록 구성될 수 있다. 그러한 전송은 데이터(1840)로 표시되었다.
컨트롤러(1841)는 에러 인터페이스(1838)를 통하여 메모리(1801)로부터 읽혀진 데이터에 있는 에러를 정정하는 것에 응답하여 생성된 에러 정보를 전송하도록 구성될 수 있다. 에러 정보는 앞서 설명된 에러 정보의 타입과 유사할 수 있다. 컨트롤러(1841)는 에러 인터페이스(1838)를 통하여 커맨드, 명령, 또는 다른 정보를 수신하도록 구성될 수 있다. 그러한 커맨드, 명령, 또는 다른 정보의 전송은 정보(1842)로 표시되었다.
본 실시 예에서, 데이터(1840) 및 정보(1842) 모두 컨트롤러(1841)를 경유하는 것으로 도시되었다. 그러나, 다른 실시 예에서, 메모리 장치(1800)의 구성 요소들은 컨트롤러(1841)에 의해 제어되어, 데이터(1840) 및 정보(1842)는 컨트롤러(1841)를 경유하지 않을 수 있다. 예를 들어, 어떤 실시 예에서, 데이터 및/또는 에러 정보는 컨트롤러(1841)의 제어 하에 데이터 인터페이스(1836) 및 에러 인터페이스(1838)로 제공될 수 있으나, 컨트롤러(1841)를 경유할 수 있다.
도 19는 본 발명의 실시 예에 따른 메모리 장치를 보여주는 개략도이다. 본 실시 예에서, 메모리 장치(1900)는 메모리 셀 어레이(1901)를 포함할 수 있다. 메모리 셀 어레이(1901)는 데이터가 저장되는 메모리 셀들을 포함할 수 있다. 특히, 메모리 셀 어레이(1901)는 인코딩된 데이터를 저장하도록 구성될 수 있다. 센스 앰프(1902) 및 쓰기 회로(1904)는 데이터가 어드레스(1906)에 의해 특정되는 어드레스로 메모리 셀 어레이(1901)에 기록되고 메모리 셀 어레이(1901)로부터 읽혀지도록 하는 메모리 장치(1900)에 있는 회로의 예이다. 그러나, 다른 실시 예에서, 다른 읽기 및 쓰기 회로는 메모리 셀 어레이(1901)와 관련될 수 있다. 게다가, 비록 센스 앰프(1902) 및 쓰기 회로(1904)가 메모리 셀 어레이(1901)의 일부로 도시되었다 하더라도, 그러한 회로는 메모리 셀 어레이(1901)로부터 분리될 수 있다. 게다가, 비록 싱글 메모리 셀 어레이(1901)가 도시되었다 하더라도, 복수의 메모리 셀 어레이들(1901)이 제공될 수 있다.
메모리 셀 어레이(1901)는 ECC (error correcting code) 엔진(1908)에 연결될 수 있다. ECC 엔진(1908)은 메모리 셀 어레이(1901)에 기록되는 데이터를 인코딩함으로써 그리고 메모리 셀 어레이(1901)로부터 읽혀지는 데이터를 디코딩함으로써 메모리로부터 읽혀진 데이터에 있는 적어도 하나의 에러를 정정하도록 구성될 수 있다. 특히, ECC 엔진(1908)은 쓰기 데이터(1910)를 수신하도록 구성될 수 있다. ECC 엔진(1908)은 쓰기 데이터(1910)를 인코딩하도록 구성되어, 인코딩된 데이터는 어드레스(1906)에 의해 특정된 장소에 쓰기 회로(1904)에 의해 메모리 셀 어레이(1901)로 기록될 수 있다. 유사하게, ECC 엔진(1908)은 메모리 셀 어레이(1901)로부터 인코딩된 데이터를 수신하고, 그 데이터를 디코딩된 출력 데이터(1924)로 디코딩하도록 구성될 수 있다. 그러한 인코딩 및 디코딩은 본 명세서에서 설명된 것과 같은 다양한 ECC 알고리즘에 따라 수행될 수 있다. 예를 들어, SEC-DED (Single Error Correct - Double Error Detect)가 ECC 알고리즘의 예로써 사용될 수 있으나, 다른 알고리즘들도 사용될 수 있다.
비록 어드레스(1906) 및 쓰기 데이터(1910)와 같은 신호들이 메모리 셀 어레이(1901)에 데이터를 기록하는데 사용되는 신호들로써 도시되었으나, 메모리 장치(1900)는 메모리 셀 어레이(1901)에 데이터를 기록하는데 관련된 다른 신호들을 수신하고 처리하도록 구성될 수 있다. 그러나, 그러한 구성 요소들은 명료함을 위해 생략되었다. 게다가, 어드레스(1906)를 변형하거나, 액세스의 방향을 바꿀 수 있는 다른 구성요소들도 명료함을 위해 생략되었다.
특정한 실시 예에서, 쓰기 동작 동안, ECC 엔진(1908)은 메모리 장치(1900)가 저장하는 비트들을 쓰기 데이터(1910)로써 수신하도록 구성될 수 있다. ECC 엔진(1908)은, 인코딩된 데이터로써 원래의 데이터 값들과 마찬가지로, 쓰기 회로(1904)를 사용하여 메모리 셀 어레이(1901)로, 쓰기 데이터(1910)에 대한 ECC 비트 값(들)을 계산하고 ECC 비트(들)을 전송하도록 구성될 수 있다. 그 후, 메모리 셀 어레이(1901)는 인코딩된 데이터를 저장하도록 구성될 수 있다.
읽기 동작 동안, ECC 엔진(1908)은 메모리 셀 어레이(1901)로부터 인코딩된 데이터를 수신하도록 구성될 수 있다. 즉, 센스 앰프(1902) 및 다른 회로는 인코딩된 데이터로써 앞서 저장된 ECC 비트(들) 및 원래의 데이터 값들을 읽어내는데 사용될 수 있다. 그 후, ECC 엔진(1908)은 인코딩된 데이터를 디코딩하고, 출력 데이터(1924)를 생성하고, 에러 정보를 생성할 수 있다.
출력 데이터(1924)는 메모리 장치(1900)로부터 출력될 수 있다. 어떤 실시 예에서, 다른 구성 요소들은 ECC 엔진과 메모리 장치(1900)의 출력 사이에 배치될 수 있다. 어떤 실시 예에서, 버퍼(1932)는 출력 데이터(1924)를 버퍼링하도록 구성될 수 있다. 어떤 실시 예에서, RCD 모듈(1934)은 출력 데이터(1924)를 수신하고, 버퍼링하고, 출력하도록 구성될 수 있다. 여기서, 그러한 옵션적인 구성 요소들은 점선으로 도시되었다.
ECC 엔진(1908)은 에러 플래그를 생성하도록 구성될 수 있다. 예를 들어, ECC 엔진(1908)은 정정 가능한 에러(correctable error; CE) 플래그를 생성하도록 구성될 수 있다. CE 플래그는 ECC 엔진(1908)이 성공적으로 n-비트의 에러를 정정할 때 설정될 수 있으며, n은 ECC 엔진(1908)이 정정하도록 구성된 비트-에러의 수보다 적거나 동일할 수 있다. ECC 엔진(1908)은 정정 불가능한 에러(uncorrectable error; UE) 플래그를 생성하도록 구성될 수 있다. ECC 엔진(1908)이 정정하도록 구성된 비트-에러의 개수보다 크게 발생한 비트-에러의 개수를 ECC 엔진(1908)이 감지할 때, UE 플래그가 설정될 수 있다. 특정한 예에서, SEC-DED와 함께, CE 플래그는 싱글-비트 에러가 정정되었다는 것을 지시하고, UE 플래그는 두-비트 에러가 발생하였다는 것을 지시할 수 있다.
ECC 컨트롤러(1918)는 에러 정정 및 관련된 에러 정보를 관리하도록 구성될 수 있다. ECC 컨트롤러(1918)는 ECC 엔진으로부터 에러 정보(1914)를 수신하도록 구성될 수 있다. 에러 정보(1914)는 에러가 없는지, 정정 가능한 에러인지, 정정 불가능한 에러인지, 에러의 개수 등을 나타내는 정보를 포함할 수 있다. ECC 컨트롤러(1918)는 읽기와 관련된 어드레스(1906)를 수신하도록 구성될 수 있다. 따라서, ECC 컨트롤러(1918)는 ECC 엔진(1908)으로부터의 에러 정보(1914)와 어드레스(1906)를 새로운 에러 정보로 조합할 수 있다. 상세하게 후술 되겠지만, ECC 컨트롤러(1918)는 ECC 엔진(1908)에 의해 인코딩되고 메모리 셀 어레이(1901)에 기록되는 쓰기 데이터(1910)를 생성하도록 구성될 수 있다.
실시 예에서, ECC 컨트롤러(1918)는 에러 정보를 저장하도록 구성될 수 있다. 예를 들어, ECC 컨트롤러(1918)는 에러 정보가 저장되는 복수의 레지스터들을 포함할 수 있다. 다양한 에러 정보들이 ECC 컨트롤러(1918)에 저장될 수 있다. 상세하게 후술 되겠지만, 에러의 기록은 에러에 관한 정보를 포함하여 저장될 수 있다. 예를 들어, 에러 기록은 어드레스 정보, 에러의 타입 메모리 셀 어레이(1901)로부터 읽혀진 데이터, 리페어 또는 다른 액션들이 실행되었는지 여부 등과 같은 정보를 포함할 수 있다.
실시 예에서, ECC 컨트롤러(1918)는 외부 장치들과 통신(1926)을 수행하도록 구성될 수 있다. 예를 들어, 통신(1926)은 에러 정보의 전송을 포함할 수 있다. 정정 가능한 에러 또는 정정 불가능한 에러가 발생할 때, 에러 정보는 ECC 컨트롤러(1918)에 의해 전송될 수 있다. 그러한 전송은, 규칙적인 스케줄, 에러의 발생, 리프레시 사이클 동안 등에 따른 것과 같은, 외부 장치로부터의 요청에 응답한 것이거나 또는 자발적인 것일 수 있다.
실시 예에서, ECC 컨트롤러(1918)는 에러 정보를 교환하기 위해 SMBus와 같은 버스를 통하여 통신하도록 구성될 수 있다. 어떤 실시 예에서, 메모리 장치(1900)는 커맨드 버퍼(1928)를 포함할 수 있다. 커맨드 버퍼(1928)는 ECC 컨트롤러(1918)에 대한 버스를 통하여 수신된 커맨드들을 버퍼링하도록 구성될 수 있다.
실시 예에서, 메모리 컨트롤러(1900)는 SPD 모듈(1930)을 포함할 수 있다. ECC 컨트롤러(1918)는 SPD 모듈(1930)과 통신하도록 구성될 수 있다. SPD 모듈(1930)은 SPD 인터페이스와 관련된 동작들을 수행하도록 구성될 수 있다. 게다가, SPD 모듈(1930)은 ECC 컨트롤러(1918)를 통하여 에러 정보로의 액세스가 이용 가능하도록 구성될 수 있다. 예를 들어, SPD 모듈(1930)을 통하여 수신된 특정한 커맨드들은 적절한 커맨드들 및/또는 신호들로 변환되어 ECC 컨트롤러(1918)에 저장된 에러 정보를 액세스할 수 있다.
DQS 변경기(1920)는 ECC 엔진(1908)으로부터의 에러 정보(1916)에 응답하여 메모리 셀 어레이(1901)로부터의 데이터 스트로브 신호를 변경할 수 있고, 변경된 데이터 스트로브 신호(1922)를 출력할 수 있다. 특정한 실시 예에서, 에러 정보(1916)는 정정 불가능한 에러가 발생하였는지 여부를 나타내는 신호일 수 있다. DQS 변경기(1920)는 데이터 스트로브 신호(1912)를 변경하도록 구성되어, 만일 에러 정보(1916)가 정정 불가능한 에러가 발생하였다는 것을 나타내면 출력 데이터 스트로브 신호(1922)는 토글링 하지 않을 수 있다. 그러나, 만일 정정 불가능한 에러 신호가 발생하지 않았다면 DQS 변경기(1920)는 데이터 스트로브 신호들(1912)을 통과시킬 수 있다. 예를 들어, DQS 변경기(1920)는 OR 게이트, AND 게이트, NAND 게이트, 트랜스미션 게이트 등과 같은 논리 회로를 포함할 수 있다.
실시 예에서, DQS 변경기(1920)는 시간에 민감한(time-sensitive) 정보를 교환하는데 사용될 수 있다. 예를 들어, 정정 불가능한 에러가 발생할 때, 에러는 현재의 읽기 동작과 관련될 수 있다. SMBus에 의한 것과 같이, 정정 불가능한 에러와 관련된 정보가 ECC 컨트롤러(1918)에 의해 외부 장치들과 교환되는 동안, 통신 경로는 데이터(1924)를 위한 통신 경로보다 더 느린 속도로 동작할 수 있다. 따라서, 정정 불가능한 에러의 발생의 통신은 대응하는 읽기 동작에 비해 지연될 수 있다. 반대로, DQS 변경기(1920)에 의해 정정 불가능한 에러가 발생하였다는 것을 통신하는 것은 대응하는 읽기 동작과 대체로 동시에 발생할 수 있다. 즉, 변경된 출력 데이터 스트로브 신호(1922)는 정정 불가능한 에러를 갖는 데이터(1924)의 전송과 관련된 데이터 스트로브 신호이다.
비록 메모리 장치(1900)의 특정한 구성 요소들이 예로써 설명되었다 하더라도, 다른 구성 요소들이 제공될 수 있다. 예를 들어, 메모리 장치(1900)는 다양한 스트로브 신호들, 선택 신호들, 제어 신호들, 인에이블 신호들 등을 수신하거나 전송하도록 구성될 수 있다.
도 20은 본 발명의 실시 예에 따른 메모리 장치들을 포함하는 메모리 모듈을 보여주는 개략도이다. 본 실시 예에서, 메모리 모듈(2000)은 도 15의 데이터 인터페이스(1536) 및 에러 인터페이스(1538)와 유사한, 데이터 인터페이스(2036) 및 에러 인터페이스(2038)를 포함할 수 있다. 그러나, 본 실시 예에서, 메모리 모듈(2000)은 복수의 ECC 메모리 장치들(2001-1 내지 2001-N)을 포함할 수 있다. ECC 메모리 장치들(2001)은, 앞서 설명된 도 18 및 도 19의 메모리 장치들(1800 및 1900)과 같은, 본 명세서에서 설명된 메모리 장치들 중 어느 것일 수 있다.
메모리 장치들(2001)의 예로써 메모리 장치(1800)를 사용하여, 그리고 도 18 및 도 20을 참조하여, 메모리 장치들(1800)의 각각은 데이터 인터페이스(2036) 및 에러 인터페이스(2038)에 연결될 수 있다. 데이터 인터페이스(2036)와 관련하여, 메모리 장치들(1800)의 데이터 인터페이스들(1836)은 적어도 데이터 인터페이스(2036)의 일부를 형성할 수 있다. 예를 들어, 각각의 데이터 인터페이스(1836)의 데이터 입출력들, 스트로브 신호들 등은 데이터 인터페이스(2036)에 수집될 수 있다. 데이터 인터페이스(2036)의 어드레스 입력 및/또는 다른 제어 신호들은 메모리 장치들(1800)의 데이터 인터페이스들(1836)에 분배될 수 있다. 따라서, 데이터는 데이터 인터페이스(2036)를 통하여 메모리 장치들(1800)(결과적으로, 메모리 모듈(2000))로 전송되거나 메모리 장치들(1800) (결과적으로, 메모리 모듈(2000))로부터 수신될 수 있다.
유사하게, 에러 인터페이스들(1838)은 에러 인터페이스(2038)에 연결될 수 있다. 에러 인터페이스들(1838)은 다양한 방법으로 연결될 수 있다. 예를 들어, 에러 인터페이스들(1838) 및 에러 인터페이스(2038)는 메모리 모듈(2000) 내의 공용 버스로 연결될 수 있다. 다른 예에서, 에러 인터페이스(2038)는 메모리 장치들(2001)의 각각의 에러 인터페이스(1838)에 직접 연결될 수 있다. 에러 인터페이스(2038)는 메모리 장치들(1800)로부터 에러 정보를 수집하도록 구성될 수 있다. 따라서, 에러 정보는 에러 인터페이스(2038)를 통하여 메모리 장치들(1800) (결과적으로, 메모리 모듈(2000))로부터 전송되도록 구성될 수 있다.
비록 도 18의 메모리 장치(1800)가 메모리 모듈(2000)의 메모리 장치(2001)의 예로써 사용되었다 하더라도, 다른 실시 예에서, 다른 메모리 장치들이 사용될 수 있다. 예를 들어, 도 19의 메모리 장치(1900)는 메모리 장치들(2001)로서 사용될 수 있다. 도 19를 참조하면, 각각의 메모리 장치(1900)의 어드레스(1906), 쓰기 데이터(1910), 출력 데이터(1924), 데이터 스트로브 신호(1922) 등은 데이터 인터페이스(2036)에 연결될 수 있다. 유사하게, 각각의 메모리 장치(1900)의 ECC 컨트롤러(1918)는 에러 인터페이스(2038)에 연결될 수 있다.
도 21 내지 도 23은 본 발명의 다양한 실시 예들에 따른 메모리 모듈들을 보여주는 개략도이다. 도 21을 참조하면, 본 실시 예에서, 메모리 모듈(2100)은 도 15의 하나 또는 그 이상의 메모리 장치들(1501), 데이터 인터페이스(1536), 및 컨트롤러(1541)와 유사한, 하나 또는 그 이상의 메모리 장치들(2101), 데이터 인터페이스(2136), 및 컨트롤러(2141)를 포함할 수 있다. 모듈 에러 인터페이스(2138)는 에러 인터페이스(1538)와 유사할 수 있고, 정보(1542)와 유사한 정보(2142)를 교환하도록 구성될 수 있으나, 모듈 에러 인터페이스(2138)는 그것과 메모리 장치들(2101)의 장치 에러 인터페이스들(2139)과 구별하기 위해 "모듈"이라는 용어가 사용되었다. 상세하게 후술 되겠지만, 모듈 에러 인터페이스(2138)는 에러 정보를 교환하는 것과는 다른 통신을 위해 사용될 수 있다.
여기서, 메모리 장치들(2101) 각각은 도 18의 데이터 인터페이스(1836) 및 에러 인터페이스(1838)와 유사한, 데이터 인터페이스(2137) 및 장치 에러 인터페이스(2139)를 포함할 수 있다. 메모리 장치들(2101)의 데이터 인터페이스들(2137)은 모듈의 데이터 인터페이스(2136)에 연결될 수 있으나, 그러한 연결은 명료함을 위해 도시되지 않았다. 게다가, 어떤 실시 예에서, 메모리 장치들(2101)의 데이터 인터페이스(2136)와 데이터 인터페이스들(2137)의 연결은 메모리 컨트롤러(2141)를 경유할 필요는 없다. 예를 들어, 어떤 실시 예에서, 메모리 모듈(2100)로부터 그리고 메모리 모듈(2100)로 전송되는 데이터(2140)는 컨트롤러(2141)에서 버퍼링 될 수 있으나, 다른 실시 예에서, 그러한 전송은 컨트롤러(2141)를 우회할 수 있다.
각각의 메모리 장치(2101)는 모듈 에러 인터페이스(2138)에 연결될 수 있고, 장치 에러 인터페이스 및 모듈 에러 인터페이스를 통하여 에러 정보를 교환하도록 구성될 수 있다. 본 실시 예에서, 컨트롤러(2141)는 장치 에러 인터페이스들(2139) 및 모듈 에러 인터페이스(2138)에 연결될 수 있다.
좀 더 상세하게 후술 되겠지만, 컨트롤러(2141)는 에러 정보와 관련된 통신과 같은 메모리 장치들(2101)과 관련된 통신을 관리하도록 구성될 수 있다. 예를 들어, 컨트롤러(2141)는 대응하는 장치 에러 인터페이스들(2139)을 통하여 메모리 장치들(2101)과 관련된 에러 정보를 액세스하고, 메모리 장치들(2101)과의 통신을 포워딩하고, 메모리 장치들(2101)로부터의 에러 정보를 수집하도록 구성될 수 있다.
특정한 실시 예에서, 컨트롤러(2141)는 모듈 에러 인터페이스(2138)를 통하여 액세스 가능한 레지스터들(2149)을 포함할 수 있다. 컨트롤러(2141)는 장치 에러 인터페이스들(2139)을 통하여 메모리 장치들(2101)과 통신함으로써 메모리 장치들(2101)로부터의 에러 정보를 수집하도록 구성될 수 있다. 그러한 에러 정보는 레지스터들(2149)에 저장될 수 있고 메모리 모듈(2100) 외부의 장치들에 액세스 가능할 수 있다. 또는 컨트롤러(2141)는 에러 정보를 조합하거나 에러 정보를 요약하도록 구성될 수 있다. 특히, 실시 예에서, 각각의 메모리 장치(2101)는 다른 메모리 장치들(2101)로부터 고립된 그것 자신의 에러 정보를 생성할 수 있다. 따라서, 컨트롤러(2141)가 메모리 장치들(2101)의 전부를 액세스할 때, 컨트롤러(2141)는 각각의 메모리 장치(2101)가 생성할 수 없는 추가적인 에러 정보를 생성하도록 구성될 수 있다. 비록 레지스터들(2149)이 예로써 사용되었다 하더라도, 에러 정보 및 다른 정보가 다른 방법으로 컨트롤러(2141)에 저장될 수 있다.
실시 예에서, 컨트롤러(2141)는 메모리 장치들(2101)과 관련된 커맨드들을 수신하도록 구성될 수 있다. 본 명세서에서 설명되는 바와 같이, 컨트롤러(2141)는 에러 정보를 읽기 위한 커맨드를 수신하도록 구성될 수 있다. 그러나, 컨트롤러(2141)는 메모리 장치들(2101)과 관련된 다른 타입의 통신들을 수신하도록 구성될 수 있다. 예를 들어, 컨트롤러(2141)는 메모리 장치들(2101)의 유지와 관련된 커맨드들을 수신하도록 구성될 수 있다. 그러한 관리의 예로써, 하나 또는 그 이상의 메모리 장치(2101) 내의 메모리 셀을 리페어 하거나, 데이터를 다시 쓰기 하거나, 리프레시 사이클을 초기화하기 위한 커맨드가 있을 수 있다. 컨트롤러(2141)는 그러한 통신들을 수신하고, 이에 응답하여 메모리 장치들(2101)과 통신하도록 구성될 수 있다.
도 22를 참조하면, 본 실시 예에서, 메모리 모듈(2200)은 메모리 모듈(2100)과 유사할 수 있으나, 메모리 모듈(2200)은 컨트롤러(2141)에 연결된 직렬 프레즌스 검출(serial presence detect; SPD)(2143) 모듈을 포함할 수 있다. SPD(2143)는 컨트롤러(2141)를 통하여 통신하도록 구성될 수 있다. 예를 들어, 컨트롤러(2141)는 SPD(2143)로의 그리고 SPD(2143)로부터의 통신을 포워딩하도록 구성될 수 있다. 다른 실시 예에서, 컨트롤러(2141)는 SPD(2143)로부터의 정보를 획득하도록 구성될 수 있고, 모듈 에러 인터페이스(2138)를 통하여 그러한 정보를 사용하여 SPD(2143)를 위한 프록시로서 동작할 수 있다. 비록 모듈 에러 인터페이스(2138)가 "에러"라는 용어를 사용하였다 하더라도, 에러 정보와는 다른 정보는 모듈 에러 인터페이스(2138)를 통하여 전송되고 수신될 수 있다.
실시 예에서, 컨트롤러(2141)는 SPD(2143)와 관련된 어드레스에 응답하도록 구성될 수 있다. 그러나, 컨트롤러(2141)는 다른 어드레스에 응답하거나 통신에 있어서 추가적인 정보를 사용하도록 구성되어, 통신이 SPD(2143)를 위해 의도되었는지, 에러 정보를 액세스하도록 의도되었는지, 메모리 장치들(2101)을 위해 의도되었는지, 컨트롤러(2141)를 위해 의도되었는지 여부 등을 판단할 수 있다.
도 23을 참조하면, 본 실시 예에서, 메모리 모듈(2300)은 도 21의 메모리 모듈(2100) 또는 도 22의 메모리 모듈(2200)과 유사할 수 있다. 그러나, 레지스터링 클록 드라이버(registering clock driver; RCD) 모듈(2145)은 컨트롤러(2141) 대신에 사용될 수 있다. 여기서, RCD(2145)는 메모리 모듈(2300)로 전송되고 메모리 모듈(2300)로부터 전송된 데이터를 버퍼링하도록 구성될 수 있다. 게다가, RCD(2145)는 컨트롤러(2141)와 관련하여 본 명세서에서 설명된 기능들을 제공하도록 구성될 수 있다.
SPD(2143)는 RCD(2145)에 연결될 수 있다. 따라서, 메모리 모듈(2200)과 유사하게, SPD(2143)는 RCD(2145)를 통하여 액세스 가능할 수 있고, RCD(2145)는, 앞서 설명된 바와 같이 컨트롤러(2141)와 유사하게, SPD(2143)를 위한 프록시로써 동작할 수 있다.
도 24 내지 도 26은 본 발명의 다양한 실시 예들에 따른 메모리 모듈들의 일부를 보여주는 개략도이다. 도 24를 참조하면, 본 실시 예에서, 컨트롤러(2141), 메모리 장치들(2101), 및 SPD(2143)는 도 22의 그것들과 유사할 수 있다. 컨트롤러(2141)는 버스(2452)에 연결될 수 있다. 버스(2542)는 SMBus, 또는 본 명세서에서 설명된 다른 버스들일 수 있다. 버스(2542)는 모듈 에러 인터페이스(2138)의 일부 또는 전부를 형성할 수 있다.
컨트롤러(2141)는 어드레스(2454)를 수신하도록 구성될 수 있다. 어드레스(2454)는 하드웨어에 내장된(hardwired) 입력일 수 있다. 특정한 실시 예에서, 어드레스(2454)는, 특정한 소켓에 삽입되었을 때, 하이 또는 로우 값으로 연결되어 동일한 버스(2542)에 연결된 다른 것들로부터의 메모리 모듈과 구별시키는, 메모리 모듈 상의 일련의 핀들일 수 있다.
실시 예에서, 어드레스(2454)는 메모리 장치들의 SPD 모듈에 연결될 수 있으나, 여기서 어드레스는 SPD(2143)와 같은 SPD 대신에 컨트롤러(2141)와 통신하도록 다른 목적에 맞게 만들어질 수 있다. 따라서, 본 명세서에서 설명된 메모리 모듈은 기존의 메모리 모듈과 핀 호환(pin-compatible)될 수 있다.
본 실시 예에서, SPD(2143) 및 메모리 장치들(2101)은 별도의 버스들(2450)을 통하여 각각 컨트롤러(2141)에 연결될 수 있다. 여기서, 버스들은 메모리 장치들(2101-1 내지 2010-N)에 대응하도록 버스(2450-1 내지 2450-N)으로 표시되었다. 버스(2450-N+1)는 컨트롤러(2141) 및 SPD(2143)에 연결된 추가적인 버스에 대응할 수 있다. 특정한 실시 예에서, 버스들(2450) 각각은 SMBus들 또는 다른 유사한 통신 회선들일 수 있다. 그러나, 다른 실시 예에서, 예를 들어, 단지 두 개의 종말점을 가질 수 있는 통신 회선을 포함하는, 포인트-투-포인트 (point-to-point communication link) 통신 회선이 버스들(2450) 대신에 사용될 수 있다. 즉, 비록 버스라는 용어가 사용되었다 하더라도, 통신 회선은 두 개의 장치들에 연결되도록 구성될 수 있다.
실시 예에서, SPD(2143)는 제어 신호(2147)에 응답하거나 제어 신호(2147)를 생성하도록 구성될 수 있다. 제어 신호(2147)는 버스(2450-N+1)와 관련하여 아웃-오브 밴드(out-of band) 신호를 포함할 수 있다. 예를 들어, 제어 신호(2147)는 인터럽트 신호를 포함할 수 있다. 특히, 실시 예에서, 제어 신호(2147)는 SPD(2143)와 관련된 이벤트 신호일 수 있다. 컨트롤러(2141)는 제어 신호(2451)를 수신하거나 생성하도록 구성될 수 있다. 제어 신호(2451)는 SPD(2143)에 의해 사용되는 신호일 수 있다. 그러나, 컨트롤러(2141)는 SPD(2143)가 가질 수 있는 인터페이스를 사용하도록 구성될 수 있기 때문에, SDP(2143)는 제어 신호(2451)를 직접 수신하도록 구성되지 않을 수 있다. 따라서, 컨트롤러(2141)는 제어 신호(2147)로써 SPD(2143)와 제어 신호(2451)를 교환하도록 구성될 수 있다. 비록 SPD와 관련된 단일의 제어 신호가 예로써 사용되었다 하더라도, 다른 실시 예에서, 복수의 제어 신호들이 SPD(2143), 메모리 장치들(2101), 또는 다른 구성 요소들로(부터) 포워딩 될 수 있다. 명료함을 위해 그러한 제어 신호들은 도시되지 않았으나, 제공될 수도 있다.
게다가, 컨트롤러(2141)는 제어 신호(2147)와 유사한 제어 신호와 관련될 수 있는 SPD(2143)를 넘어 추가적인 기능을 포함할 수 있다. 예를 들어, 제어 신호(2141)는 메모리 장치들(2101)로부터의 에러 정보에 기초하여 인터럽트를 생성하도록 구성될 수 있다. 따라서, 제어 신호(2451)는 SPD(2143)로부터의 신호뿐만 아니라 에러 정보 기반의 인터럽트를 교환하는데 사용될 수 있다. 컨트롤러(2141)는 그러한 제어 신호가 컨트롤러(2141), SPD(2143) 등을 위해 의도되었는지 여부를 판단하도록 구성될 수 있다.
실시 예에서, 많은 추가적인 핀들은 메모리 장치들(2101)을 위해 사용될 수 있다. 특정한 실시 예에서, 메모리 장치(2101)는 두 개의 추가적인 핀들(하나는 클록 신호를 위한 것이고 다른 하나는 데이터 신호를 위한 것)을 포함할 수 있다. 컨트롤러(2141)는 버스들(2452 및 2450-1 내지 2450-N+1)을 위한 2x(N+2)개의 핀들, 어드레스(2454)를 위한 세 개의 핀들, 및 제어 신호들(2451 및 2147)을 위한 두 개의 핀들을 포함할 수 있다.
도 25a를 참조하면, 본 실시 예에서, 컨트롤러(2141), 메모리 장치들(2101), 및 SPD(2143)는 도 24의 그것들과 유사할 수 있다. 그러나, 컨트롤러(2141)는 버스(2450-1)를 통하여 메모리 장치들(2101)에 연결될 수 있고, 버스(2450-2)를 통하여 SPD(2143)에 연결될 수 있다. 본 실시 예에서, 버스들(2450-1 및 2450-2)은 별개의 버스들일 수 있다.
게다가, 버스(2450-1)는 메모리 장치들(2101)을 위한 공용 버스일 수 있다. 버스(2450)는 SMBus 버스들일 수 있다. 복수의 메모리 장치들(2101)은 버스(2450-1)에 연결될 수 있기 때문에, 각각의 메모리 장치(2101)는 대응하는 ID 입력(2456)을 포함할 수 있다. ID(2456)는 어드레스(2454)와 유사할 수 있다. 예를 들어, 각각의 메모리 장치(2101)에 대해, 대응하는 ID(2456)는 메모리 장치들(2101) 중 고유한 어드레스에 하드웨어에 내장(hardwired)될 수 있다. 특정한 예에서, 각각의 ID(2456)는 하이 또는 로우를 유지할 수 있는 네 개의 핀들을 포함할 수 있다. 따라서, 16개의 고유의 어드레스들은 ID(2456)들을 위해 이용 가능할 수 있다. 비록 네 개의 핀들이 예로써 사용되었지만, 어떤 개수의 핀들이라도 어떤 개수의 메모리 장치들(2101)과 구별하기 위해 사용될 수 있다.
메모리 장치들(2101) 각각은 대응하는 ID(2456)를 버스(2450-1)에 사용되는 어드레스 또는 다른 식별자로 전송하도록 구성될 수 있다. 실시 예에서 ID(2456)로부터 생성된 어드레스는 SMBus에 대한 슬레이브 어드레스로서 사용되는 어드레스일 수 있다. 본 실시 예에서, SPD(2143) 및 컨트롤러(2141)는 버스(2450-2) 상의 장치들일 수 있다. 따라서, 어드레스 입력은 SPD(2143)를 위해 사용될 필요는 없다.
실시 예에서, 복수의 추가적인 핀들이 메모리 장치들(2101)을 위해 사용될 수 있다. 특정한 실시 예에서, 메모리 장치(2101)는, 도 24와 유사하게, 두 개의 추가적인 핀들(하나는 클록 신호를 위한 것이고 다른 하나는 데이터 신호를 위한 것)을 포함할 수 있으나, ID(2456)들을 위한 4개의 핀을 포함할 수도 있다. 컨트롤러(2141)는, 도 24와 유사하게, 버스들(2452, 2450-1, 및 2450-2)을 위한 6개의 핀들, 어드레스(2454)를 위한 3 개의 핀들, 및 컨트롤 신호들(2451 및 2147)을 위한 2 개의 핀들을 포함할 수 있다.
도 25b를 참조하면, 본 실시 예에서, 컨트롤러(2141), 메모리 장치들(2101), 및 SPD(2143)는 도 25a의 것들과 유사할 수 있다. 그러나, SPD(2143) 및 메모리 장치들(2101)은 공용 버스(2450)를 통하여 컨트롤러(2141)로 연결될 수 있다. 앞서 설명된 바와 같이, 메모리 장치들(2101)은 ID(2456)를 수신하도록 구성될 수 있다. SPD(2143)는 메모리 장치들(2101)과 같이 동일한 버스(2450) 상에 있기 때문에, SPD(2143)는 SPD(2143) 및 메모리 장치들(2101) 중 고유의 어드레스를 사용하도록 구성될 수 있다. SPD(2143)는 ID(2457)를 수신하도록 구성될 수 있다. SPD(2143)는 ID(2457)를 버스(2450)에서 사용하기 위한 어드레스로 변환시키도록 구성될 수 있다.
실시 예에서, ID(2457)의 형태는 ID(2456)들과는 다를 수 있다. 예를 들어, ID(2457)는 SPD(2143)의 어드레스를 지시하는데 사용되는 3개의 핀을 포함할 수 있는 반면, ID(2456)들은 각각 4개의 핀을 포함할 수 있다. 게다가, ID(2457) 및 ID(2456)들은 동일한 어드레스에 대응될 필요는 없다. 예를 들어, 010b의 ID(2457) 및 0010b의 ID(2456)는 다른 어드레스들에 대응할 수 있다.
실시 예에서, 복수의 추가적인 핀들이 메모리 장치들(2101)을 위해 사용될 수 있다. 특정한 실시 예에 있어서, 메모리 장치(2101)는, 도 24와 유사하게, 두 개의 추가적인 핀들(하나는 클록 신호를 위한 것이고 다른 하나는 데이터 신호를 위한 것)을 포함할 수 있으나, 역시 ID(2456)들을 위한 4개의 핀을 포함할 수도 있다. 컨트롤러(2141)는, 도 24와 유사하게, 버스들(2450 및 2452)을 위한 4개의 핀, 어드레스(2454)를 위한 3개의 핀, 및 제어 신호들(2451 및 2147)을 위한 2개의 핀을 포함할 수 있다.
도 26을 참조하면, 본 실시 예에서, 컨트롤러(2141), 메모리 장치들(2101), 및 SPD(2143)는 도 25b의 것들과 유사할 수 있다. SPD(2143)는 컨트롤러(2141)와 유사하게 어드레스(2454)를 수신하도록 구성될 수 있다. 그러나, 본 실시 예에서, 메모리 장치들(2101)은 ID(2456)들을 수신하도록 구성되지 않을 수 있다. 반대로, 메모리 장치들(2101)은, 버스(2450-1)로부터 분리된 단일의 와이어 또는 망(net)과 같은, 공용 버스(2459)에 각각 연결될 수 있다. 실시 예에서, 공용 버스는 데이지-체인 회선(daisy-chain link)일 수 있다.
실시 예에서, 메모리 장치들(2101)은 버스(2459)에 연결될 수 있다. 메모리 장치들(2101)은, 컨트롤러(2141)를 통하여 수신된 정보가 버스(2459)를 통하여 수신된 신호에 응답하여 메모리 장치(2101)와 관련되는지 여부를 판단하도록 구성될 수 있다. 실시 예에서, 메모리 장치들(2101)은 버스(2459)를 통하여 통신하여, 메모리 장치들(2101)의 어드레스를 버스(2450)에 확립하도록 구성될 수 있다. 예를 들어, 제 1 메모리 장치는 카운터에 응답하여 어드레스를 결정할 수 있고 카운터를 증가시킬 수 있다. 카운터의 값은 제 2 메모리 장치(2101)로 전송될 수 있다. 제 2 메모리 장치(2101)는 카운터에 응답하여 어드레스를 결정하고 카운터를 증가시키도록 구성될 수 있다. 이 과정은 각각의 메모리 장치(2101)가 고유의 어드레스를 가질 때까지 계속될 수 있다.
실시 예에서, 복수의 추가적인 핀들이 메모리 장치들(2101)을 위해 사용될 수 있다. 특정한 예에서, 메모리 장치(2101)는, 도 24와 유사하게, 2개의 추가적인 핀들(하나는 클록 신호를 위한 것이고 다른 하나는 데이터 신호를 위한 것)을 포함할 수 있으나, 버스(2459)를 위한 하나의 추가적인 핀을 포함할 수도 있다. 컨트롤러(2141)는, 도 24와 유사하게, 버스들(2452, 2450-1, 및 2450-2)을 위한 6개의 핀, 어드레스(2454)를 위한 3개의 핀, 및 제어 신호(2451 및 2147)를 위한 2개의 핀을 포함할 수 있다.
실시 예에서, 상술 된 구성의 어떤 구성에서라도, 컨트롤러(2141)는, 만일 동일한 버스에 연결되었다면, 메모리 장치들(2101) 및 SPD(2143)의 어드레스들을 결정하도록 구성될 수 있다. 예를 들어, 컨트롤러(2141)는 SMBus 어드레스 솔루션 프로토콜(address resolution protocol)을 사용하여 어드레스들을 메모리 장치들(2101) 및 SPD(2143)에 동적으로 할당하도록 구성될 수 있다. 비록 한 타입의 버스에서 어드레스들을 결정하는 기술이 예로써 사용되었다 하더라도, 다른 기술들이 특정한 버스(2450)에 적절하게 사용될 수 있다.
도 27은 본 발명의 실시 예에 따른 메모리 모듈을 보여주는 개략도이다. 본 실시 예에서, 메모리 모듈(2700)은 도 21의 메모리 모듈(2100)과 유사할 수 있다. 그러나, 리피터(repeater)(2750)가 컨트롤러(2141)로써 사용되었다. 리피터(2750) 리피터(2750)는, 메모리 장치들(2101) 및 SPD(2143)의 에러 인터페이스들(2139)이 통신 회선에 연결될 수 있도록, 모듈 에러 인터페이스(2138)에 연결된 통신 회선을 확장하도록 구성될 수 있다. 예를 들어, 만일 메모리 장치들(2101)의 로딩 및/또는 네트워크의 속성이 허락한다면, 리피터(2750)는 단지 공유 매체(shared medium)의 와이어와 같은 와이어일 수 있다. 다른 예에서, 리피터(2750)는 더 많은 장치들이 버스에 접속되도록 하거나, 더 긴 버스를 허용하도록 구성된 장치를 포함할 수 있다. 비록 리피터라는 용어가 사용되었다 하더라도, 리피터(2750)는 허브, 확장 장치, 스위치, 브릿지 등을 포함할 수 있다. 그리고 네트워크를 확장시킬 수 있는 장치는 리피터(2750)로서 사용될 수 있다. 메모리 장치들(2101)이 모듈 인터페이스(2138)를 통하여 직접 액세스 가능하기 때문에, 메모리 모듈(2700)의 각각의 메모리 장치(2101)는 BMC와 같은 외부 컨트롤러에 의해 에러 정보에 대해 개별적으로 정보를 얻을 수 있다.
실시 예에서, 메모리 장치들(2101), SPD(2143), 및 리피터(2750)의 구성은 도 25b와 유사할 수 있다. 즉, 도 25b 및 27을 참조하면, 메모리 장치들(2101)은, 리피터(2750)에 연결된, 버스(2450)에 각각 연결될 수 있다. 메모리 장치들(2101) 각각은 ID(2456)를 수신하도록 구성될 수 있다. 그 결과, 메모리 장치들(2101)은 버스(2450)에서의 사용을 위한 각각의 어드레스들을 결정하도록 구성될 수 있다.
실시 예에서, 특정한 어드레스들 또는 ID들은 다양한 타입의 장치들과 관련될 수 있다. 예를 들어, 온도 센서들은 특정한 어드레스 또는 어드레스 범위와 관련될 수 있다. 그러나, 메모리 장치들(2101)은 그러한 어드레스 또는 ID 연관을 갖지 않을 수 있다. 따라서, 어드레스, ID, 그러한 파라미터들의 범위 등은, 본 명세서에서 설명된 메모리 모듈들을 사용할 수 있는 시스템에서 사용되지 않는 장치들과 같은, 다른 타입의 장치들로부터 다른 목적에 맞게 만들어질 수 있다. 예를 들어, I2C 먹스를 위한 ID 또는 어드레스는 메모리 장치들(2101)의 ID 또는 어드레스로서 사용될 수 있다.
도 28은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 2800 단계에서, 메모리로부터 데이터를 읽을 때 에러가 발생할 수 있다. 이에 응답하여, 2802 단계에서, 에러가 진단될 수 있다. 좀 더 상세하게 후술 되겠지만, 에러가 확인될 뿐만 아니라, 에러를 정정하기 위한 다른 정정하는 액션(corrective action)도 취해질 수 있다.
2804 단계에서, 에러 정보가 보고될 수 있다. 앞서 설명된 바와 같이, 메모리 장치, 메모리 모듈의 다른 구성 요소들, 및 프로세서 사이의 통신 회선은 에러 정보를 교환하는데 사용될 수 있다. 에러 정보(2804)를 보고하는 것은 그러한 통신 회선들을 통하여 수행될 수 있다.
도 29는 본 발명의 실시 예에 따른 에러를 다루는 기술을 보여주는 순서도이다. 본 실시 예는, 정정 가능한 에러가 어떻게 다뤄지는지(예를 들어, 정정 가능한 에러가 도 19의 ECC 컨트롤러에 의해 어떻게 다뤄지는지)를 예시적으로 보여준다. 2900 단계에서, 정정 가능한 에러(CE)가 발생한 후, CE 기록이 생성될 수 있다. CE 기록은 앞서 설명된 에러와 관련된 다양한 정보를 포함할 수 있다.
2902 단계에서, 데이터가 다시 읽혀질 수 있다. 본 실시 예에서, 데이터를 다시 읽어내는 것에 응답하여, 에러가 발생하지 않는 경우, 정정 가능한 에러가 발생하는 경우, 정정 불가능한 에러(uncorrectable error; UE)가 발생하는 경우와 같은, 3개의 결과가 발생할 수 있다. 만일 에러가 발생하지 않는다면, 2904 단계에서, 기록은 소프트-읽기 에러로 표시될 수 있다. 만일 정정 가능한 에러가 발생하면, 2908 단계에서, 정정된 데이터가 다시 쓰기 될 수 있다. 만일 정정 불가능한 에러가 발생하면, 2906 단계에서, 에러 기록은 정정 불가능한 에러 기록으로 업데이트 될 수 있다.
2908 단계에서 정정된 데이터를 다시 쓰기하는 것의 일부로써, 에러가 발생할 수 있다. 만일 에러가 발생하지 않는다면, 2910 단계에서, 에러 기록은 소프트-읽기 에러로 표시될 수 있다. 만일 정정 불가능한 에러가 발생하였다면, 2906 단계에서, 에러 기록은 정정 불가능한 에러 기록으로 업데이트 될 수 있다.
2912 단계에서, 만일 정정 가능한 에러가 발생하였다면, 메모리 셀이 리페어 가능한지 여부가 판단될 수 있다. 특정한 실시 예에서, 본 단계에서의 정정 가능한 에러는 에러가 다시 쓰기에 의해 리페어 될 수 없는지 여부를 나타낼 수 있다. 따라서, 에러는 하드웨어 에러에 의해 야기될 수 있다. 2912 단계에서 메모리 셀의 리페어 가능 여부에 대한 판단 결과에 의존하여, 에러 기록은 더 주석이 달릴 수 있고 리페어 될 수 있다. 만일 메모리 셀이 리페어 가능하다면, 2914 단계에서, 메모리 셀은 리페어 되고 에러는 하드 에러로 표시될 수 있다. 만일 메모리 셀이 리페어 불가능하다면, 2916 단계에서, 에러 기록은 리페어 불가능한 하드 에러로 표시될 수 있다. 따라서, 앞서 설명된 진단에 의해, 에러는 더 카테고리화 되거나 리페어 될 수 있다.
비록 2908 단계에서의 다시 쓰기가 정정 불가능한 에러, 정정 가능한 에러, 또는 에러 없음을 지시하는 동작의 예로써 사용되었다 하더라도, 그러한 정보는 다른 동작들의 결과일 수 있다. 예를 들어, 2908 단계에서 데이터를 다시 쓰기 한 후, 읽기 동작이 수행될 수 있고 유사한 에러 정보가 생성될 수 있다.
도 30은 본 발명의 실시 예에 따른 에러를 다루는 기술을 보여주는 순서도이다. 본 실시 예를 정정 불가능한 에러가 어떻게 다뤄지는지(예를 들어, 정정 불가능한 에러가 도 19의 ECC 컨트롤러(1918)에 의해 어떻게 다뤄지는지)에 관한 예이다. 3000 단계에서, 정정 불가능한 에러(UE)가 발생한 후, UE 기록이 생성될 수 있다. 어떤 실시 예에서, UE 기록은 앞서 도 29에서 설명된 2906 단계에서의 UE 기록에 대한 업데이트의 결과일 수 있다.
3002 단계에서, UE 기록과 관련된 데이터가 다시 읽혀질 수 있다. 이에 응답하여, 다른 동작이 수행될 수 있다. 만일 다시 읽기 후 정정 불가능한 에러가 발생하면, 3006 단계에서, 기록은 리페어 불가능한 에러로 표시될 수 있다. 만일 에러가 발생하지 않으면, 3004 단계에서, 기록은 소프트-읽기 에러로 표시될 수 있다. 만일 정정 가능한 에러가 발생하면, 3008 단계에서, 정정된 에러가 다시 기록될 수 있다. 도 29의 2908 단계에서의 다시 쓰기와 유사하게, 동작으로부터 생성된 결과는, 다시 쓰기 후에 데이터를 다시 읽는 것과 같은, 다른 소스들로부터 비롯될 수 있다.
데이터의 다시 쓰기의 결과에 응답하여, 다른 동작들이 수행될 수 있다. 만일 결과가 정정 불가능한 에러라면, 3006 단계에서, 기록은 리페어 불가능한 에러로 표시될 수 있다. 만일 에러가 발생하지 않았다면, 3010 단계에서, 기록은 소프트-읽기 및 소프트-쓰기 에러로 표시될 수 있다.
3012 단계에서, 만일 결과가 정정 가능한 에러라면, 메모리 셀이 리페어 가능한지 여부가 판단될 수 있다. 만일 메모리 셀이 리페어 가능하다면, 3014 단계에서, 리페어 동작이 실행되고, 기록은 소프트-읽기 및 리페어 가능한 하드 에러로 표시될 수 있다. 만일 메모리 셀이 리페어 불가능하다면, 3016 단계에서, 레코드는 소프트-읽기 및 리페어 불가능한 하드 에러로 표시될 수 있다.
비록 에러들의 다양한 카테고리화가 상술 된 바와 같이 설명되었다 하더라도, 어떤 실시 예에서, 그러한 정보의 모든 것들이 메모리 장치의 외부에 이용 가능하지 않을 수 있다. 예를 들어, 도 20의 소프트-읽기 및 소프트-쓰기 에러와 같은 특정한 타입의 에러들은 소프트-에러로써 수집될 수 있다. 어떤 수집, 요약 등이라도 메모리 장치로부터 전송될 에러 정보를 생성하기 위해 수행될 수 있다. 게다가 메모리 장치는 상세한 특정 레벨을 제공하도록 구성하도록 구성될 수 있다.
실시 예에서, 도 29 및 도 30에서 설명된 것과 같은 기술을 사용하여, 메모리 장치는 소프트-읽기 에러 회복(예를 들어, 메모리 정화(memory scrubbing), 하드-에러 리페어 등과 같은 에러 관리 기술들을 수행하도록 구성될 수 있다.
실시 예에서, 앞서 설명된 동작들은 읽기 동작이 일어난 후 수행될 수 있다. 특히, 동작들은 읽기 동작을 막지 않도록 구성될 수 있다. 그러나, 일단 보수 간격, 리프레시 사이클 등과 같은 적절한 구간이 발생하면, 에러 기록들은 처리되고, 업데이트 되고, 메모리 셀들은 리페어 될 수 있다.
비록 에러의 처리에 관한 특정한 시퀀스들이 에러들을 카테고리화 하거나 메모리 셀들을 리페어하기 위한 기준의 예로써 사용되었지만, 다른 실시 예에서, 다른 시퀀스들이 사용될 수 있다. 예를 들어, 도 29를 참조하면, 2910 단계에서 메모리 셀이 리페어 가능한지 여부를 판단하는 것은, 2902 단계에서 다시 읽기 동작 때의 CE 및 2908 단계에서 다시 쓰기 동작 때의 CE를 수반하는, CE가 발생하면 실행될 수 있다. 그러나, 다른 실시 예에서, 2910 단계에서 메모리 셀이 리페어 가능한지 여부를 판단하는 것은, 2902 단계에서의 다시 읽기 동작이 복수의 다시 읽기 동작을 시도한 후 CE를 야기할 경우에만 실행될 수 있다. 즉, 어떤 실시 예에서, 에러들을 카테고리화 하는 특정한 기준은 앞서 설명된 예들과는 다를 수 있다.
나아가, 비록 에러 타입들의 특정한 명칭이 사용되었다 하더라도, 어떤 실시 예에서, 그러한 에러 타입들의 전부는 사용되지 않을 수 있다. 유사하게, 어떤 실시 예에서, 다른 에러 타입들이 사용될 수 있다.
도 31은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 3100 단계에서, 메모리로부터 데이터를 읽을 때 읽기 에러가 발생할 수 있다. 이에 응답하여, 에러 정보가 생성될 수 있다. 예를 들어, 읽기 에러는 정정된 정정 가능한 에러일 수 있다. 에러 정보는 정정 가능한 에러에 관한 정보일 수 있다. 예를 들어, 읽기 에러는 복수의 에러들일 수 있다. 이때, 에러 정보는 이들 에러에 관한 정보일 수 있다.
3102 단계에서, 읽기 에러 커맨드가 수신될 수 있다. 실시 예에서, 읽기 에러 커맨드는 메모리 모듈에 의해 수신될 수 있다. 만일 에러가 발생하면, 3014 단계에서, 메모리는 에러 정보를 전송할 수 있다. 3102 단계에서 읽기 에러 커맨드를 수신하기 전에, 메모리 모듈은 발생한 에러에 관한 에러 정보를 저장할 수 있다. 3104 단계에서, 먼저 발생한 에러에 관한 에러 정보는 읽기 에러 커맨드에 응답하여 전송될 수 있다. 그러나, 만일 에러가 발생하지 않았다면, 3104 단계에서의 에러 정보의 전송은 에러가 발생하지 않았다는 것을 나타내는 정보의 전송일 수 있다.
앞서 설명된 바와 같이, 에러 정보는 버스를 통하여 전송될 수 있다. 특히, 버스는 메모리 모듈의 주 데이터 경로에 관하여 아웃-오브-밴드(out-of-band) 경로일 수 있다. 따라서, 3104 단계에서의 전송은 버스를 통하여 에러 정보를 전송하는 것을 포함할 수 있다.
도 31b는 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 도 31a 및 31b를 참조하면, 본 실시 예에서, 도 31b의 동작은 컨트롤러의 동작일 수 있다. 특히, 3106 단계에서, 읽기 에러 커맨드는 컨트롤러로부터 전송될 수 있다. 3106 단계에서 전송된 읽기 에러 커맨드는 3102 단계에서 수신된 읽기 에러 커맨드일 수 있다. 앞서 설명된 바와 같이, 3104 단계에서, 에러 정보는 전송될 수 있다. 3108 단계에서, 에러 정보가 컨트롤러에서 수신될 수 있다. 예를 들어, 컨트롤러는 메모리 모듈을 폴링 하도록 구성될 수 있다. 따라서, 컨트롤러는 3106 단계에서 읽기 에러 커맨드를 수신할 수 있고, 3108 단계에서 에러 정보를 수신할 수 있다. 앞서 설명된 바와 같이, 컨트롤러는, 메모리 컨트롤러가 에러 정보를 저장할 수 있는 불휘발성 메모리와 같은, 메모리를 포함할 수 있다. 이후, 3110 단계에서, 에러 정보는 프로세서로 전송될 수 있다.
비록 예시적으로 읽기 에러 커맨드를 전송하는 컨트롤러를 사용하는 것이 설명되었다 하더라도, 다른 실시 예에서, 3106 단계에서 프로세서는 읽기 에러 커맨드를 전송할 수 있다. 3102 단계에서, 읽기 에러 커맨드는 메모리 모듈에 의해 수신될 수 있고, 3110 단계에서, 에러 정보는 프로세서로 전송될 수 있다.즉, 에러 정보는 컨트롤러에서 수신되거나 처리될 필요는 없다.
도 32는 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 도 28 및 도 32를 참조하여, 그리고 3200 단계에서 예시적으로 메모리 모듈(2100)을 사용하여, 통신은 모듈 에러 인터페이스(2138)를 통하여 수신될 수 있다. 3202 단계에서, 에러 정보는 적어도 하나의 메모리 장치(2101)로부터 읽혀질 수 있다.
실시 예에서, 3202 단계에서 에러 정보를 읽는 것은 3200 단계에서의 통신에 응답하여 수행될 수 있다. 그러나, 다른 실시 예에서, 에러 정보를 읽는 것은 이시(different time)(예를 들어, 통신을 수신하기 전을 포함)에 수행될 수 있다. 이와 상관없이, 3204 단계에서 메모리 장치들(2101)로부터의 에러 정보는 통신에 응답하기 위해 사용될 수 있다.
3202 단계에서 에러 정보를 읽는 것은 다양한 방법으로 수행될 수 있다. 예를 들어, 메모리 장치들(2101) 각각은, 도 24에 도시된 바와 같은, 대응하는 전용 버스를 통하여 액세스 될 수 있다. 다른 실시 예에서, 메모리 장치들(2101) 각각은 도 25a, 25b, 또는 25c에 도시된 바와 같은, 공용 버스를 통하여 액세스 될 수 있다. 다른 실시 예에서, 통신은 도 27의 리피터(2750)와 같은 하나 또는 그 이상의 메모리 장치들(2101)에 포워딩 될 수 있다.
비록 도 21의 메모리 모듈이 예로써 사용되었다 하더라도, 본 명세서에서 설명된 기술은 다른 메모리 모듈들, 시스템들 등에 의해 사용될 수 있다.
도 33은 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 3300 단계에서, 읽기 에러가 발생할 수 있다. 3312 단계에서, 읽기 에러 커맨드는 컨트롤러로 전송될 수 있다. 예를 들어, 컨트롤러는 프로세서로부터 읽기 에러 커맨드를 수신할 수 있다. 3314 단계에서, 읽기 에러 커맨드는 메모리 모듈로 전송될 수 있다. 예를 들어, 3314 단계에서, 컨트롤러는 프로세서로부터 수신된 읽기 에러 커맨드를 메모리 모듈로 포워딩하거나, 읽기 에러 커맨드를 변형하거나, 메모리 모듈에 대한 다른 읽기 에러 커맨드를 생성하여, 읽기 에러 커맨드를 메모리 모듈로 전송할 수 있다. 3314 단계에서 전송된 읽기 에러 커맨드는 3302 단계에서 수신될 수 있고, 3304 단계에서 에러 정보는 도 31a의 3102 단계 및 3104 단계와 유사하게 전송될 수 있다. 앞서 설명된 바와 같이, 에러 정보는 프로세서로 전송될 수 있다.
앞서 설명된 바와 같이, 컨트롤러는 에러 정보를 위해 메모리 모듈을 폴링할 수 있고 에러 정보를 저장할 수 있다. 따라서, 읽기 에러 커맨드가 프로세서로부터 컨트롤러에 의해 수신될 때, 컨트롤러는 이미 읽기 에러 정보를 가질 수 있다. 컨트롤러는 저장된 에러 정보를 프로세서로 전송할 수 있다. 그러나 컨트롤러는, 컨트롤러가 저장된 에러 정보를 프로세서로 전송하기 전에, 더 많은 에러 정보를 위해 메모리 모듈을 폴링할 필요는 없다.
도 34는 본 발명의 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 3400 단계에서, 프로세서는 읽기 에러 커맨드를 전송할 수 있다. 이에 응답하여, 3402 단계에서, 프로세서는 에러 정보를 수신할 수 있다. 3406 단계에서, 프로세서는 에러 정보를 추가적인 정보와 결합할 수 있다. 앞서 설명된 바와 같이, 추가적인 정보는, 메모리 모듈과 관련되지 않은 정보를 포함하는, 프로세서의 상태, 주변부, 버스들 등과 같은, 다양한 정보일 수 있다. 특정한 실시 예에서, 프로세서는 에러 정보를 MCA 모듈로부터의 정보와 결합시킬 수 있다.
특정한 실시 예에서, 3408 단계에서, 결합된 정보는 EDAC 모듈에 제공될 수 있다. 앞서 설명한 바와 같이, EDAC 모듈은 다양한 시스템들의 에러에 대한 정보를 더 높은 레벨의 애플리케이션에 이용 가능할 수 있도록 한다.
도 35는 본 발명의 실시 예에 따른 메모리 시스템 아키텍처를 갖춘 시스템을 보여주는 개략도이다. 본 실시 예에서, 시스템(3500)은 도 1의 프로세서(104) 및 소프트웨어(110)와 유사한, 프로세서(2104) 및 소프트웨어(2110)를 포함할 수 있다. 그러나, 본 실시 예에서, 시스템(3500)은 메모리(3502) 및 에러 정정 회로(3568)를 포함할 수 있다.
본 실시 예에서, 메모리(3502)는 에러를 정정하도록 구성되지 않을 수 있다. 메모리(3502)는 에러 정정 회로(3568)에 연결되고, 통신 경로(3572)를 통하여 에러 정정 회로(2168)에 데이터를 전송하도록 구성될 수 있다.
에러 정정 회로(3568)는 메모리(3502)로부터 수신된 데이터의 에러를 정정하도록 구성될 수 있다. 에러 정정 회로(3568)는 제 2 통신 경로(3570) 및 제 3 통신 경로(3508)를 통하여 프로세서(2104)에 연결될 수 있다. 제 2 통신 경로(3570)는 프로세서(3504)가 데이터를 수신하도록 구성되는 메인 경로이다. 예를 들어, 제 2 통신 경로(3570)는 프로세서(3504)를 위한 시스템 버스일 수 있다.
반면, 제 3 통신 경로(3508)는 앞서 설명된 통신 경로(108)와 유사하다. 즉, 제 3 통신 경로(3508)는 컨트롤러(3514)를 포함하는 별도의 아웃-오브-밴드 통신 경로이거나, 앞서 설명한 통신 경로들의 다양한 변형일 수 있다.
도 36은 본 발명의 실시 예에 따른 서버를 보여주는 개략도이다. 본 실시 예에서, 서버(3600)는 독립형 서버(stand-alone server), 랙에 탑재된 서버(rack-mounted server), 블레이드 서버(blade server) 등을 포함할 수 있다. 서버(3600)는 메모리(3602), 프로세서(3604), 그리고 BMC(3614)를 포함할 수 있다. 프로세서(3604)는 통신 경로(3606)를 통하여 메모리(3602)와 연결될 수 있다. BMC(3614)는 버스(3616)를 통하혀 프로세서(3604)와 연결되고, 버스(3612)를 통하여 메모리(3602)와 연결될 수 있다. 메모리(3602), 프로세서(3604), BMC(3614), 통신 경로(3606), 그리고 버스들(3612 및 3616) 각각은 앞서 설명된 대응하는 구성들 중 어느 하나일 수 있다.
도 37은 본 발명의 일 실시 예에 따른 서버 시스템을 보여주는 개략도이다. 본 실시 예에서, 서버 시스템(3700)은 복수의 서버들(3702-1 내지 3702-N)을 포함할 수 있다. 서버(3702)들 각각은 매니저(3704)와 연결될 수 있다. 하나 또는 그 이상의 서버들(3702)은 앞서 설명된 서버(3700)와 유사할 수 있다. 게다가, 매니저(3704)는 앞서 설명된 메모리 시스템 아키텍처를 구비한 시스템을 포함할 수 있다.
매니저(3704)는 서버 시스템(3700)의 서버(3702) 및 다른 구성들을 관리하도록 구성될 수 있다. 예를 들어, 매니저(3704)는 서버(3702)의 설정들을 관리하도록 구성될 수 있다. 서버들(3702) 각각은 매니저(3704)와 에러 정보를 교환하도록 구성될 수 있다. 에러 정보는 앞서 설명된 바와 같이 서버들(3702) 중 어느 하나에 있는 프로세서로 전송된 정정 가능한 에러 정보, 또는 정정 가능한 에러 정보에 기초한 다른 에러 정보를 포함할 수 있다. 매니저(3704)는 에러 정보에 기초하여 액션을 취하도록 구성될 수 있다. 예를 들어, 서버(3702-1)는 임계치를 초과하는 정정 가능한 에러를 포함할 수 있다. 매니저(3704)는 관리 및/또는 대체를 위해 서버(3702-1)의 기능을 서버(3702-2)로 넘겨주고, 서버(2302-1)를 셧다운 시키도록 구성될 수 있다. 비록 특정 예들이 제시되었다 하더라도, 매니저(3704)는 에러 정보에 기초하여 또 다른 액션을 취하도록 구성될 수도 있다.
도 38은 본 발명의 실시 예에 따른 데이터 센터를 보여주는 개략도이다. 본 실시 예에서, 데이터 센터(3800)는 복수의 서버 시스템들(3802-1 내지 3802-N)을 포함할 수 있다. 서버 시스템들(3802)은 도 36에서 설명된 서버 시스템(3600)과 유사하다. 서버 시스템들(3802)은 인터넷과 같은 네트워크(3804)에 연결될 수 있다. 따라서, 서버 시스템들(3802)은 다양한 노드들(3806-1 내지 3806-M)과 네트워크(3804)를 통하여 통신할 수 있다. 예를 들어, 노드들(3806)은 클라이언트 컴퓨터, 다른 서버, 원거리 데이터 센터, 스토리지 시스템 등일 수 있다.
비록 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 기술적 사상의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 따라서 본 발명의 범위는 상술 된 실시 예에 국한되어 정해져서는 안되며, 후술하는 특허 청구범위뿐만 아니라 본 발명의 특허 청구범위와 균등한 것들에 의해 정해져야 한다.
100: 시스템 102: 메모리
104: 프로세서 106: 제 1 통신 경로
109: 제 2 통신 경로 110: 소프트웨어
700: 메모리 모듈 702: 메모리
704: 프로세서 706, 708: 통신 경로들
710: 소프트웨어 718: 모듈
1300: 시스템 1302: ECC DIMM
1304: 프로세서 1310: 커널
1312, 1316: 버스 1314: BMC
1318: 에러 정정 모듈 1324: EDAC 모듈
1326: MCA 모듈 1350: 메모리 컨트롤러
1352: MCA 레지스터 1358: 메모리 ECC 대몬
1360: 다른 애플리케이션들 1364: 통신 경로들
1500: 메모리 모듈 1501: 메모리 장치들
1536: 데이터 인터페이스 1538: 에러 인터페이스
1541: 컨트롤러 1900: 메모리 장치
1901: 메모리 셀 어레이 1902: 센스 앰프
1904: 읽기 회로 1906: 어드레스
1908: ECC 엔진 1910: 쓰기 데이터
1912: 데이터 스트로브 신호 1918: ECC 컨트롤러
1920: DQS 변경기 1922: 데이터 스트로브 신호
1924: 출력 데이터 1928: 커맨드 버퍼
1930: 직렬 프레즌스 검출 모듈 1932: 버퍼
1934: 레지스터 클록 드라이버 모듈 2100: 메모리 모듈
2101: 메모리 장치 2136: 데이터 인터페이스
2137: 데이터 인터페이스 2138: 모듈 에러 인터페이스
2139: 장치 에러 인터페이스 2141: 컨트롤러
2143: 직렬 프레즌스 검출 모듈 2145: 레지스터링 클록 드라이버
2149: 레지스터 2750: 리피터

Claims (18)

  1. 데이터를 저장하고, 상기 저장된 데이터로부터 리드된 데이터에서 오류를 정정하고, 상기 저장된 데이터로부터 리드된 상기 데이터에서 상기 오류를 정정하는 것에 응답하여 오류 정보를 생성하는 메모리; 및
    메인 메모리 경로의 일부인 제 1 통신 경로 및 시스템 제어 경로의 일부인 제 2 통신 경로를 통하여 상기 메모리와 연결된 프로세서를 포함하되,
    상기 프로세서는:
    상기 저장된 데이터로부터 상기 리드된 데이터를 수신하고,
    상기 메모리로부터 상기 오류 정보를 수신하고,
    상기 제 2 통신 경로는 상기 제 1 통신 경로와 분리되고, 상기 제 1 통신 경로에 대한 아웃-오브-밴드(out-of-band) 통신 경로를 포함하는 시스템.
  2. 제 1 항에 있어서,
    상기 메모리는 다이내믹 랜덤 액세스 메모리(Dynamic Random Access Memory, DRAM) 모듈인 시스템.
  3. 제 1 항에 있어서,
    상기 제 2 통신 경로는 플랫폼 매니지먼트 버스(platform management bus)를 포함하는 시스템.
  4. 제 3 항에 있어서,
    상기 플랫폼 매니지먼트 버스는 SMBus(System Management Bus), I2C(Inter-Integrated Circuit) 버스, IPMI(Intelligent Platform Management Interface) 버스, 또는 모드버스(Modbus)를 포함하는 시스템.
  5. 제 1 항에 있어서,
    상기 제 2 통신 경로는 상기 제 1 통신 경로보다 대체로 느린 시스템.
  6. 제 1 항에 있어서,
    상기 제 1 통신 경로는 제 1 데이터 속도를 포함하고,
    상기 제 2 통신 경로는 제 2 데이터 속도를 포함하고,
    상기 제 2 데이터 속도는 상기 제 1 데이터 속도의 1/10보다 작거나 같은 시스템.
  7. 제 1 항에 있어서,
    상기 프로세서는 상기 제 2 통신 경로를 통하여 상기 오류 정보에 대한 폴을 수신하는 시스템.
  8. 제 1 항에 있어서,
    상기 메모리는 상기 제 2 통신 경로를 통하여 상기 오류 정보를 푸시(push)하는 시스템.
  9. 제 1 항에 있어서,
    상기 제 2 통신 경로를 통하여 상기 프로세서와 연결된 컨트롤러를 더 포함하는 시스템.
  10. 제 9 항에 있어서,
    상기 컨트롤러는 베이스보드 관리 컨트롤러(Baseboard Management Controller, BMC)인 시스템.
  11. 제 9 항에 있어서,
    상기 컨트롤러는:
    상기 오류 정보를 저장하고,
    상기 프로세서로부터 수신된 요청에 응답하여 상기 프로세서로 상기 오류 정보를 제공하는 시스템.
  12. 메모리 모듈 내에서 ECC(Error Correction Code) 엔진에 의하여, 리드 데이터의 오류와 관련된 오류 정보를 생성하는 단계;
    메인 메모리 채널과 분리된 시스템 제어 채널을 통하여, 상기 메모리 모듈에서 상기 오류 정보를 읽기 위한 명령을 수신하는 단계; 및
    상기 명령에 응답하여 상기 시스템 제어 채널을 통하여, 상기 메모리 모듈로부터 상기 오류 정보를 전송하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    상기 시스템 제어 채널은 상기 메인 메모리 채널에 대한 아웃-오브-밴드(out-of band) 통신 경로를 포함하는 방법.
  14. 제 12 항에 있어서,
    상기 시스템 제어 채널은 플랫폼 매니지먼트 버스(platform management bus)를 포함하는 방법.
  15. 리드된 데이터에서 오류를 정정하고, 상기 리드된 데이터에서 상기 오류를 정정하는 것에 응답하여 오류 정보를 생성하는 메모리;
    메인 메모리 채널을 통하여 상기 메모리에 연결된 프로세서; 및
    상기 메인 메모리 채널과 분리되고, 상기 메모리 및 상기 프로세서와 연결된 시스템 제어 채널을 포함하되,
    상기 메모리 및 상기 프로세서는 상기 메인 메모리 채널 및 상기 시스템 제어 채널을 통하여 통신하고,
    상기 메모리는 상기 시스템 제어 채널을 통하여 상기 프로세서로 상기 오류 정보를 전달하고,
    상기 시스템 제어 채널은 상기 메인 메모리 채널에 대한 아웃-오브-밴드(out-of-band) 통신 경로를 포함하는 시스템.
  16. 제 15 항에 있어서,
    상기 프로세서는 상기 시스템 제어 채널을 통하여 시스템 관리 정보를 수신하는 시스템.
  17. 제 15 항에 있어서,
    상기 시스템 제어 채널은 플랫폼 매니지먼트 버스(platform management bus)를 포함하는 시스템.
  18. 제 17 항에 있어서,
    상기 플랫폼 매니지먼트 버스는 SMBus(System Management Bus), I2C(Inter-Integrated Circuit) 버스, IPMI(Intelligent Platform Management Interface) 버스, 또는 모드버스(Modbus)를 포함하는 시스템.
KR1020210015698A 2014-08-19 2021-02-03 메모리 장치 및 모듈 KR102378466B1 (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201462039396P 2014-08-19 2014-08-19
US62/039,396 2014-08-19
US201462057199P 2014-09-29 2014-09-29
US62/057,199 2014-09-29
US201462075231P 2014-11-04 2014-11-04
US62/075,231 2014-11-04
US14/594,049 US20160055058A1 (en) 2014-08-19 2015-01-09 Memory system architecture
US14/594,049 2015-01-09
US14/678,968 2015-04-04
US14/678,977 US10002044B2 (en) 2014-08-19 2015-04-04 Memory devices and modules
US14/678,968 US10002043B2 (en) 2014-08-19 2015-04-04 Memory devices and modules
US14/678,977 2015-04-04
KR1020150109526A KR102214556B1 (ko) 2014-08-19 2015-08-03 메모리 장치 및 모듈

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020150109526A Division KR102214556B1 (ko) 2014-08-19 2015-08-03 메모리 장치 및 모듈

Publications (2)

Publication Number Publication Date
KR20210016598A true KR20210016598A (ko) 2021-02-16
KR102378466B1 KR102378466B1 (ko) 2022-03-24

Family

ID=55375579

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020150109526A KR102214556B1 (ko) 2014-08-19 2015-08-03 메모리 장치 및 모듈
KR1020210015698A KR102378466B1 (ko) 2014-08-19 2021-02-03 메모리 장치 및 모듈

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020150109526A KR102214556B1 (ko) 2014-08-19 2015-08-03 메모리 장치 및 모듈

Country Status (3)

Country Link
JP (1) JP6713740B2 (ko)
KR (2) KR102214556B1 (ko)
CN (1) CN105373345B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10338838B2 (en) * 2017-03-24 2019-07-02 Samsung Electronics Co., Ltd. Multi-mode NVMe over fabrics device for supporting CAN (controller area network) bus or SMBus interface
US10747437B2 (en) * 2017-05-02 2020-08-18 Quanta Computer Inc. SAS hard disk drive update via management controller
KR102352156B1 (ko) * 2017-10-26 2022-01-17 삼성전자주식회사 Arp를 수행하는 슬레이브 장치 및 이의 동작 방법
KR102589913B1 (ko) * 2018-04-12 2023-10-13 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US11074126B2 (en) 2018-07-12 2021-07-27 Micron Technology, Inc. Methods for error count reporting with scaled error count information, and memory devices employing the same
KR102645140B1 (ko) * 2018-12-06 2024-03-07 삼성전자주식회사 Fpga를 포함하는 메모리 시스템 및 이의 동작 방법
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046802A1 (en) * 2006-08-18 2008-02-21 Fujitsu Limited Memory controller and method of controlling memory
KR100816053B1 (ko) * 2006-11-21 2008-03-21 엠텍비젼 주식회사 셀프 카피 기능을 가지는 메모리 장치, 메모리 시스템 및듀얼 포트 메모리 장치
US20080163032A1 (en) * 2007-01-02 2008-07-03 International Business Machines Corporation Systems and methods for error detection in a memory system
KR20130030099A (ko) * 2011-09-16 2013-03-26 삼성전자주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 독출 방법
KR20130086887A (ko) * 2012-01-26 2013-08-05 삼성전자주식회사 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02206099A (ja) * 1989-02-03 1990-08-15 Nec Corp ダイナミツクram
GB2289779B (en) * 1994-05-24 1999-04-28 Intel Corp Method and apparatus for automatically scrubbing ECC errors in memory via hardware
WO2002086907A1 (en) * 2001-04-25 2002-10-31 Koninklijke Philips Electronics N.V. Integrated circuit with self-test device for an embedded non-volatile memory and related test method
KR100597473B1 (ko) * 2004-06-11 2006-07-05 삼성전자주식회사 메모리 모듈의 테스트 방법 및 이를 수행하기 위한 메모리모듈의 허브
KR101397549B1 (ko) * 2007-08-16 2014-05-26 삼성전자주식회사 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법
US8468417B2 (en) * 2009-02-18 2013-06-18 Micron Technology, Inc. Data integrity in memory controllers and methods
US8239629B2 (en) * 2009-03-31 2012-08-07 Micron Technology, Inc. Hierarchical memory architecture to connect mass storage devices
WO2011116454A1 (en) * 2010-03-22 2011-09-29 Mosaid Technologies Incorporated Composite semiconductor memory device with error correction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080046802A1 (en) * 2006-08-18 2008-02-21 Fujitsu Limited Memory controller and method of controlling memory
KR100816053B1 (ko) * 2006-11-21 2008-03-21 엠텍비젼 주식회사 셀프 카피 기능을 가지는 메모리 장치, 메모리 시스템 및듀얼 포트 메모리 장치
US20080163032A1 (en) * 2007-01-02 2008-07-03 International Business Machines Corporation Systems and methods for error detection in a memory system
KR20130030099A (ko) * 2011-09-16 2013-03-26 삼성전자주식회사 플래시 메모리 시스템 및 플래시 메모리 시스템의 독출 방법
KR20130086887A (ko) * 2012-01-26 2013-08-05 삼성전자주식회사 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법

Also Published As

Publication number Publication date
KR102214556B1 (ko) 2021-02-09
KR102378466B1 (ko) 2022-03-24
JP2016045958A (ja) 2016-04-04
JP6713740B2 (ja) 2020-06-24
CN105373345B (zh) 2020-11-10
KR20160022250A (ko) 2016-02-29
CN105373345A (zh) 2016-03-02

Similar Documents

Publication Publication Date Title
US10824499B2 (en) Memory system architectures using a separate system control path or channel for processing error information
US10002043B2 (en) Memory devices and modules
KR102378466B1 (ko) 메모리 장치 및 모듈
CN105373443B (zh) 具有存储器系统体系结构的数据系统和数据读取方法
KR102262575B1 (ko) 메모리 장치 및 모듈
US10606696B2 (en) Internally-generated data storage in spare memory locations
US9065481B2 (en) Bad wordline/array detection in memory
US11609817B2 (en) Low latency availability in degraded redundant array of independent memory
US11520659B2 (en) Refresh-hiding memory system staggered refresh
US10521113B2 (en) Memory system architecture
KR20190052490A (ko) 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
US20240096439A1 (en) Selective per die dram ppr for cxl type 3 device
JP2021520556A (ja) トランザクションメタデータ
CN114442918A (zh) 存储器模块及其操作方法

Legal Events

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