KR20160022242A - 메모리 시스템 아키텍처 - Google Patents

메모리 시스템 아키텍처 Download PDF

Info

Publication number
KR20160022242A
KR20160022242A KR1020150100409A KR20150100409A KR20160022242A KR 20160022242 A KR20160022242 A KR 20160022242A KR 1020150100409 A KR1020150100409 A KR 1020150100409A KR 20150100409 A KR20150100409 A KR 20150100409A KR 20160022242 A KR20160022242 A KR 20160022242A
Authority
KR
South Korea
Prior art keywords
memory
processor
error
information
error information
Prior art date
Application number
KR1020150100409A
Other languages
English (en)
Inventor
홍종 정
차오홍 후
수하스
로버트 브레넌
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160022242A publication Critical patent/KR20160022242A/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/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/0766Error or fault reporting or storing
    • 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
    • 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
    • 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

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)
  • Human Computer Interaction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

본 발명의 실시 예에 따른 시스템은, 데이터를 저장하고, 상기 저장된 데이터의 에러를 정정하고, 상기 저장된 데이터의 에러 정정 결과에 응답하여 에러 정보를 생성하는 메모리, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 메모리에 연결되며, 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신하는 프로세서를 포함한다.

Description

메모리 시스템 아키텍처{MEMORY SYSTEM ARCHITECTURE}
본 발명은 메모리 시스템 아키텍처에 관한 것으로, 좀 더 상세하게는 에러 정정을 수행하는 메모리 시스템 아키텍처에 관한 것이다.
메모리 컨트롤러는 에러 정정을 수행할 수 있다. 예를 들면, 메모리 컨트롤러는 64-비트의 데이터와 8-비트의 패리티로 구성된 72-비트의 데이터를 메모리 모듈로부터 읽을 수 있다. 메모리 컨트롤러는 다른 에러 정정 기술들을 수행할 수 있다. 이러한 에러 정정 기술을 사용하여, 메모리 모듈로부터 읽혀지는 데이터에 포함되는 에러가 식별되거나 정정될 수 있다. 게다가, 메모리 컨트롤러는 에러에 관련된 정보를 생성할 수 있다. 메모리 컨트롤러를 포함하는 시스템은 상술한 에러 정보에 기초하여 동작 결정, 예를 들면, 메모리 페이지의 사용 종료, 시스템 중지, 또는 이와 같은 동작을 수행할 수 있다. 이러한 메모리 컨트롤러는 프로세서에 집적될 수 있다. 예를 들면, 인텔의 제온(Xeon) 프로세서는 에러 정정을 수행할 수 있는 메모리 컨트롤러를 내장하고 있다.
하지만, 에러 정정은 메모리 컨트롤러에 의해서 수신되기 전에 수행되면, 에러 정정과 관련된 에러 정보는 메모리 컨트롤러에서 사용 불가능하게 되고, 따라서 시스템은 시스템 관리를 위한 결정을 수행할 수 없게 될 것이다.
본 발명은 상술한 기술적 문제점을 해결하기 위해 제안된 것으로, 본 발명의 목적은 저비용 및 저전력 특성을 제공하는 메모리 시스템을 제공하는데 있다.
본 발명의 실시 예에 따른 시스템은, 데이터를 저장하고, 상기 저장된 데이터의 에러를 정정하고, 상기 저장된 데이터의 에러 정정 결과에 응답하여 에러 정보를 생성하는 메모리, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 메모리에 연결되며, 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신하는 프로세서를 포함한다.
본 발명의 다른 실시 예에 따르면, 메모리 모듈은, 데이터를 저장하는 적어도 하나의 메모리 장치와 제 1 인터페이스, 제 2 인터페이스를 포함한다. 제 1 인터페이스는 데이터를 송수신하고, 제 2 인터페이스는 상기 적어도 하나의 메모리 장치로부터 읽혀지는 데이터의 에러 정정에 응답하여 에러 정보를 전송한다.
또 다른 실시 예에 따른 방법은, 메모리 모듈에서 에러를 포함하는 데이터를 읽는 단계, 상기 에러를 포함하는 데이터의 읽기 결과에 근거하여 에러 정보를 생성하는 단계, 메모리 모듈에서 상기 레어 정보를 읽기 위한 명령어를 수신하는 단계, 그리고 상기 명령어에 응답하여 상기 에러 정보를 상기 메모리 모듈로부터 전송하는 단계를 포함한다.
또 다른 실시 예에 따른 시스템은, 메모리, 메인 메모리 채널을 통해서 상기 메모리와 연결되는 프로세서, 그리고 상기 메모리와 상기 프로세서에 연결되며, 상기 메인 메모리 채널과는 분리된 통신 링크를 포함하되, 상기 메모리와 상기 프로세서는 상기 메인 메모리 채널과 상기 통신 링크를 통해서 통신하며, 상기 메모리는 상기 통신 링크를 통해서 에러 정보를 상기 프로세서와 교환한다.
또 다른 실시 예에 따른 시스템은, 에러 정정을 수행하지 않는 메모리, 상기 메모리와 연결되어 상기 메모리로부터 읽혀진 데이터의 에러를 정정하고, 에러 정정 결과에 따라 에러 정보를 생성하는 에러 정정 회로, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 에러 정정 회로와 연결되는 프로세서를 포함한다. 상기 프로세서는 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신한다.
어떤 실시 예들은 상술한 구성들이나 단계들을 대체하는 단계 또는 구성들을 가질 수 있다. 하지만, 이러한 구성이나 단계들은 후술하는 도면들과 상세한 설명을 참조하여 당업자에게는 자명한 것들이다.
본 발명의 실시 예에 따르면, 구현에 소요되는 비용이 저렴하고, 소모 전력도 줄일 수 있는 메모리 시스템을 구성할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템 아키텍처를 가지는 시스템을 보여주는 개략도이다.
도 2는 본 발명의 일 실시 예에 따른 컨트롤러를 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 3은 본 발명의 일 실시 예에 따른 베이스보드 관리 컨트롤러를 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 4는 본 발명의 일 실시 예에 따른 프로세서 기반의 에러 정정을 수행하지 않는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 5는 본 발명의 일 실시 예에 따른 오염된 데이터 스트로브 신호를 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 6은 본 발명의 일 실시 예에 따른 분리된 정정 불가 에러 신호를 갖는 메모리 시스템 아키텍처를 가지는 시스템을 보여주는 개략도이다.
도 7은 본 발명의 일 실시 예에 따른 소프트웨어 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 8은 본 발명의 일 실시 예에 따른 에러 검출 및 정정 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 9는 본 발명의 일 실시 예에 따른 집계 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 10은 본 발명의 일 실시 예에 따른 메모리 컨트롤 아키텍처 모듈로부터 제공되는 정보를 집계하는 에러 정정 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 11은 본 발명의 일 실시 예에 따른 하나의 인터페이스를 공유하는 복수의 모듈을 갖는 메모리 시스템 아키텍처를 가지는 시스템을 보여주는 개략도이다.
도 12는 본 발명의 일 실시 예에 따른 인터페이스를 공유하는 정정 가능 에러 모듈 및 직렬 인식 소자(PSD)/레지스터 클록 드라이버 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 13은 본 발명의 일 실시 예에 따른 디램내 에러 정정 기술을 사용하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 14A~14D는 본 발명의 실시 예들에 따른 모듈내 에러 정정 기술을 사용하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 15는 본 발명의 일 실시 예에 따른 메모리 모듈을 보여주는 개략도이다.
도 16은 본 발명의 일 실시 예에 따른 SPD 또는 RCD 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다.
도 17은 본 발명의 일 실시 예에 따른 분리된 정정 불가 에러 인터페이스를 갖는 메모리 모듈을 보여주는 개략도이다.
도 18은 본 발명의 일 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 19는 본 발명의 다른 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 20은 본 발명의 또 다른 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
도 21은 본 발명의 일 실시 예에 따른 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다.
도 22는 본 발명의 일 실시 예에 따른 서버를 보여주는 개략도이다.
도 23은 본 발명의 일 실시 예에 따른 서버 시스템을 보여주는 개략도이다.
도 24는 본 발명의 일 실시 예에 따른 데이터 센터를 보여주는 개략도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
본 발명은 메모리 시스템 아키텍처에 관한 것이다. 이하의 설명은 이 분야에서 능숙한 자에 의해서 제작되고 사용될 수 있을 정도로 개시된다. 따라서, 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 예시되는 실시 예들은 특정한 실시를 제공하기 위하여 방법과 시스템들로 설명될 것이다.
그러나 이러한 방법들과 시스템들은 다른 실시 예에서도 효과적으로 동작할 것이다. “예시적인 실시 예”나 “일 실시 예”, 그리고 “다른 실시 예”가 동일 또는 다른 실시 예뿐 아니라 다양한 실시 예를 참조할 수 있을 것이다. 이 실시 예들은 특정 구성을 포함하는 시스템 그리고/또는 장치들로 표현될 수 있다. 하지만, 본 발명의 실시 예에 따른 시스템 그리고/또는 장치들은 더 적은 구성들을 도시된 구성보다 더 적은 수의 구성을 포함할 수 있고, 배열의 변경이나 구성들의 종류의 변경이 본 발명의 범위를 벗어나지 않는 한도에서 행해질 수 있다. 본 발명의 예시적인 실시 예는 특정 단계를 포함하는 방법으로 설명될 수 있다. 그러나 그러한 방법과 시스템 동작은 본 발명의 실시 예와 모순되지 않는 다른 그리고/또는 다른 순서를 가진 추가적인 스텝을 갖는 방법에서도 효과적으로 동작할 수 있다. 따라서, 본 발명의 개념을 적용한 실시 예는 도시된 예에만 국한되지 않는 것으로 이해되어야 한다.
어떤 요소들을 포함하는 특정 메모리 시스템 아키텍처에 포함되는 것으로 실시 예들이 설명될 것이다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 실시 예들이 다른 추가 구성이나 특징을 포함하는 메모리 시스템 아키텍처에서도 동일하게 동작할 수 있음을 이해할 수 있을 것이다. 하지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 방법과 시스템이 다른 구조에서도 동일하게 동작할 수 있음을 잘 이해할 것이다. 방법들과 시스템들은 문맥에서 단일 요소로 표현될 수도 있다. 하지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 방법들과 시스템들이 복수의 요소들을 갖는 메모리 시스템 아키텍처를 사용하여 동일하게 동작할 수 있음을 잘 이해할 것이다.
이 기술 분야에 정통한 사람은 일반적으로 여기서 사용되는 용어, 특히 첨부되는 청구항에 사용된 용어는 열린 용어이다(즉, ‘포함하는’이라는 용어는 ‘포함하되 한정되지 않는’으로, ‘가지는’이라는 용어는 ‘적어도 하나를 가지는’으로 해석되어야 한다). 이 기술 분야에 정통한 사람에게 있어서, 청구항에 기술된 특정 숫자는, 청구항 내에서 명시적으로 인용되었다고 해도, 그런 인용이 존재하지 않는 청구항에서는 특정 숫자의 한정이 존재하지 않는 것으로 이해되어서는 안된다. 예를 들면, 이해를 돕기 위해 후속되는 종속 청구항에서 ‘적어도 하나’와 ‘하나 또는 그 이상’이라는 구문이 포함될 수 있을 것이다. 하지만, 이와 같은 구문의 사용은 하나의 예시를 위해서 불명확한 ‘하나’라는 관사에 의해서 기술되는 한정으로 이해되어서는 안된다.
게다가, ‘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은 본 발명의 일 실시 예에 따른 메모리 시스템 아키텍처를 갖는 시스템을 보여주는 개략도이다. 도 1을 참조하면, 시스템(100)은 프로세서(104)에 연결되는 메모리(102)를 포함한다. 메모리(102)는 데이터를 저장한다. 메모리(102)로부터 데이터가 읽혀지면, 메모리(102)는 데이터에 에러가 존재하는 경우 에러를 정정한다. 예를 들면, 메모리(102)는 1-비트 에러를 정정할 수 있다. 메모리(102)는 2-비트 에러를 검출할 수 있다. 비록 예시를 위해서 특정 비트-수의 에러가 정정되는 것으로 설명되었으나, 메모리(102)는 특정 비트 수의 에러를 정정하거나 검출할 수 있다. 게다가, 비록 한 비트 이상의 에러 정정 기술에서 1-비트 에러 정정 그리고/또는 2-비트 에러 검출로 나타나더라도, 메모리(102)는 적어도 하나의 에러를 정정할 수 있는 임의의 에러 정정 기술을 수행할 것이다.
메모리(102)는 데이터를 저장하기 위한 장치를 포함할 수 있다. 특정 예에 있어서, 메모리(102)는 디램(DRAM) 모듈일 수 있다. 메모리(102)는 DDR,DDR2, DDR3, DDR4, 또는 그와 같은 다양한 표준에 따른 이중 데이터율 동기식 DRAM(DDR SDRAM)일 수 있다. 다른 실시 예에서, 메모리(102)는 SRAM, 불휘발성 메모리, 또는 이러한 것들과 유사한 것을 포함할 수 있다.
메모리(102)는 저장 데이터의 에러를 정정하거나, 정정 시도에 응답하여 에러 정보를 생성할 수 있다. 예를 들면, 에러 정보는 정정된 에러, 정정되지 않은 에러, 에러의 부재, 또는 그러한 에러의 수에 대한 정보를 포함할 수 있다. 에러 정보는 실질적 에러, 에러의 주소, 에러가 발생한 횟수, 또는 메모리(102)에 관련된 다른 특정 정보를 포함할 수 있다. 특정 예에서, 에러 정보는 메모리(102)가 정정한 1-비트 에러를 포함할 수 있다. 비록, 에러 정보가 특정 예에 대해서만 설명되었지만, 에러 정보는 에러와 관련된 어떠한 정보라도 더 포함할 수 있을 것이다.
프로세서(104)는 메모리(102)에 연결되는 장치로 제공되고, 명령어를 실행할 수 있다. 예를 들면, 프로세서(104)는 범용 프로세서, 디지털 신호 프로세서(DSP), 그래픽 프로세싱 유닛(GPU), 주문형 집적회로(ASIC), 프로그램 로직(PLA) 등일 수 있다.
프로세서(104)는 제 1 통신 경로(106)와 제 2 통신 경로(108)를 통해서 메모리(102)와 연결된다. 프로세서(104)는 제 1 통신 경로(106)를 통해서 메모리(102)로부터 데이터를 수신한다. 예를 들면, 제 1 통신 경로(106)는 데이터 신호들, 스트로브 신호들, 클록 신호들, 인에이블 신호들 등과 같은 신호를 전달하기 위한 신호 라인들을 갖는 시스템 메모리 인터페이스일 수 있다. 이와 같이, 제 1 통신 경로(106)는 프로세서(104)와 메모리(102) 사이에서 인터페이싱을 수행하는 메인 메모리 채널의 일부일 수 있다.
프로세서(104)는 메모리(102)와 다른 통신 경로, 즉, 제 2 통신 경로(108)를 통해서도 연결된다. 프로세서(104)는 제 2 통신 경로(108)를 통해서 메모리(102)로부터 에러 정보를 제공받을 수 있다. 일 실시 예에서, 프로세서(104)는 제 1 통신 경로(106)가 아닌 다른 통신 경로를 통해서 정정된 에러 정보를 제공받을 수 있다. 정정된 에러 정보는 정정된 에러와 관련된 정보이다. 앞서 설명된 바와 같이, 에러 정보는 다양한 형태의 에러와 관련된 정보를 포함할 수 있다. 정정된 에러 정보는 정정된 에러와 관련된 정보 형태와 유사하게 제공될 수 있다.
소프트웨어(110)는 프로세서(104)에 연결되는 것으로 설명되었으나, 소프트웨어(110)는 프로세서(104)에서 실행되는 다양한 프로그램들, 드라이버들, 모듈들, 루틴들을 나타낼 수 있다. 예를 들면, 소프트웨어(110)는 드라이버들, 커널 모듈들, 데몬들, 응용 프로그램들 등을 포함할 수 있다. 어떤 실시 예에서는, 소프트웨어(110)는 이하에서 설명되는 특정 기능을 수행하도록 프로세서(104)를 활성화할 수 있다.
비록 하나의 메모리(102)가 예시적으로 설명되었으나, 통신 경로들(106, 108)과 유사하게 두개의 통신 경로를 통해서 임의의 숫자의 메모리들(102)이 프로세서(104)와 연결될 수 있다. 일 실시 예에서, 각각의 메모리(102)는 다른 메모리(102)와는 분리된 전용의 제 1 통신 경로(106)와 전용의 제 2 통신 경로(108)를 통해서 프로세서(104)와 연결될 수 있다. 하지만, 다른 실시 예에서, 제 1 통신 경로(106)는 하나 이상의 메모리(102)와 공유될 수 있으며, 제 2 통신 경로(108)도 하나 이상의 메모리(102)와 공유될 수 있다. 게다가, 비록 하나의 제 1 통신 경로(106)가 설명되었지만, 하나 또는 그 이상의 메모리들(102) 사이에 복수의 제 1 통신 경로(106)가 존재할 수 있다. 마찬가지로, 비록 하나의 제 2 통신 경로(108)가 설명되었지만, 하나 또는 그 이상의 메모리들(102) 사이에 복수의 제 2 통신 경로(108)가 존재할 수 있음은 잘 이해될 것이다.
일 실시 예에서, 에러 정보의 통신이 대역외 통신 경로를 통해서 수행될 수 있다. 제 2 통신 경로(108)는 대역외 통신 경로일 수 있다. 즉, 프로세서(104)와 메모리(102) 사이의 메인 통신은 제 1 통신 경로(106)를 통해서 수행되고, 에러 정보의 교환은 대역외의 제 2 통신 경로(108)를 통해서 수행될 수 있다.
도 2는 본 발명의 실시 예에 따른 컨트롤러를 포함하는 메모리 시스템 아키텍처의 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(200)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106, 108), 그리고 소프트웨어(110)와 유사한 메모리(202), 프로세서(204), 통신 경로들(206, 208), 그리고 소프트웨어(210)를 포함한다. 하지만, 제 2 통신 경로(208)는 컨트롤러(214)와 연결되는 제 1 버스(212)와, 컨트롤러(214)와 프로세서(204) 사이를 연결하는 제 2 버스(216)를 포함한다. 다시 말해서, 프로세서(204)와 메모리(202)를 연결하는 컨트롤러(214)는 제 2 통신 경로(208)의 일부로 제공될 것이다.
컨트롤러(214)는 메모리(202)와 프로세서(204)를 연결하는 임의의 장치일 수 있다. 예를 들면, 컨트롤러(214)는 범용 프로세서, DSP(Digital signal processor), ASIC(Application specific integrated circuit), PLD(Programmable logic device) 등을 포함할 수 있다.
버스들(212, 216)은 다양한 통신 링크의 변형일 수 있다. 예를 들면, 버스들(212, 216)은 시스템 관리 버스(SMBus), I2C 버스(inter-integrated circuit), IPMI 버스(intelligent platform management interface), 모두스 버스(Modbus) 등을 포함할 수 있다. 특정 실시 예에서, 통신 경로(208)의 일부는 통신 경로(206)보다 실질적으로 저속으로 동작할 수 있다. 예를 들면, 메모리(202)와 프로세서(204) 사이의 통신 경로(206)의 데이터 율은 10GB/s 이상의 전송속도를 갖도록 설계되지만, 통신 경로(208)는 10Mbit/s, 100kbit/s와 같은 낮은 전송 속도를 갖게될 것이다. 따라서, 일부 실시 예에서, 통신 경로(208)에 대한 통신 경로(206)의 전송 속도 비율은 약 100이나 1000 또는 그 이상이 될 수 있다.
일 실시 예에서, 제 2 통신 경로(208)는 통신 전용으로 사용될 수 있다. 즉, 제 2 통신 경로(208)는 메모리(202)와 프로세서(204) 사이에서 정보의 통신 용도로만 사용될 수 있다. 하지만, 다른 실시 예에서는 컨트롤러(214)는 다른 장치들이 접근하는 것을 허용할 수 있다. 예를 들면, 비메모리 장치(268)이 버스(212)에 의해서 컨트롤러(214)에 연결될 수 있다. 또 다른 실시 예에서, 다른 장치들(266)이 컨트롤러(214)에 연결될 수 있다. 따라서, 메모리(202)로부터 제공되지 않는 정보는 프로세서(204) 그리고/또는 메모리(202)에 버스(212) 그리고/또는 버스(216)에 의해서 전달될 것이다. 특히, 메모리(202)로부터 제공되는 에러 정보는 비메모리 용도를 포함하는 다른 목적으로 사용되는 제 2 통신 경로(208)를 통해서 프로세서(204)에 전달된다.
일 실시 예에서, 컨트롤러(214)는 불휘발성 메모리(254)를 포함할 수 있다. 불휘발성 메모리(254)는 메모리(202)로부터 제공되는 에러 정보를 저장할 수 있다. 따라서, 에러 정보는 전원이 차단되더라도 컨트롤러(214)에 보존될 수 있다. 프로세서(204)는 컨트롤러(214)에 에러 정보를 요청할 수 있다. 따라서, 컨트롤러(214)는 비휘발성 메모리(254)에 저장된 에러 정보를 제공함으로써 그와 같은 요청에 응답할 수 있고, 프로세서(204)의 요청에 따라 에러 정보를 복구하기 위해 메모리(202)에 접근할 수 있다.
일 실시 예에서, 컨트롤러(214)는 에러 정보를 획득하기 위해 메모리(202)에 대한 폴링을 수행할 수 있다. 다른 실시 예에서, 메모리(202)는 컨트롤러(214)에 에러 정보를 푸쉬할 수도 있다. 불휘발성 메모리(254)에 저장된 에러 정보는 실질적으로 최신의 정보로 업데이트될 수 있다.
도 3은 본 발명의 일 실시 예에 따른 베이스보드 관리 컨트롤러를 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(300)은 도 2의 메모리(202), 프로세서(204), 통신 경로들(206, 208), 그리고 소프트웨어(210)와 유사하게 메모리(302), 프로세서(304), 통신 경로들(306, 308), 그리고 소프트웨어(310)를 포함할 수 있다. 하지만, 컨트롤러(314)는 베이스보드 관리 컨트롤러(Baseboard Management Controller: 이하, BMC)로 제공된다.
베이스보드 관리 컨트롤러(314)는 시스템(300)을 관리한다. 예를 들면, 베이스보드 관리 컨트롤러(314)는 프로세서(304), 메모리(302), 다른 장치들(366) 등의 센서들을 포함하는 시스템(300)의 다양한 센서들과 연결될 수 있다. 베이스보드 관리 컨트롤러(314)는 온도, 쿨링 상태, 전력 상태 등의 다양한 시스템 파라미터를 수집하고 보고한다. 베이스보드 관리 컨트롤러(314)는 시스템(300)을 관리하고, 표준에 따라 정보로의 접근을 활성화한다. 관리 정보는 프로세서(304)나 소프트웨어(310)에 의해서 생성될 수 있다. 또는, 베이스보드 관리 컨트롤러(314)는 대역외 통신 경로와 같은 또 다른 통신 경로를 통해서 정보의 접근을 가능하게 할 수 있다. 여기서, 대역외 통신 경로는 프로세서(304)를 포함하지 않는 임의의 통신 경로를 포함할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 프로세서 기반의 에러 정정을 수행하지 않는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(400)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106, 108), 그리고 소프트웨어(110)와 유사한 메모리(402), 프로세서(404), 통신 경로들(406, 408), 그리고 소프트웨어(410)를 포함한다. 하지만, 이 실시 예에서, 프로세서(404)는 메모리 컨트롤러(450)와 MCA 레지스터(452, machine check architecture)를 포함한다.
메모리 컨트롤러(450)는 프로세서(404)에 집적된다. 메모리 컨트롤러(450)는 프로세서(404)와 메모리(402) 사이의 메인 인터페이스에 해당하는 메인 메모리 채널의 일부일 수 있다. 메모리 컨트롤러(450)는 통신 경로(406)를 통한 메모리(402)로의 접근을 제어한다. 어떤 실시 예들에서는, 메모리 컨트롤러(450)는 메모리(402)에서 수행되는 에러 정정 연산에 의해서 정정될 기회를 갖지 못한 에러를 정정할 수 있다. 하지만, 이 실시 예에서 메모리 컨트롤러(450)는 메모리(402)로부터 읽혀진 데이터에 대한 에러 정정은 수행하지 않는다. 메모리 컨트롤러(450)는 메모리(402)로부터 읽혀진 데이터에 근거한 어떠한 에러 정보도 보고하지 않을 것이다.
MCA 레지스터(452)는 하드웨어 에러가 보고되는 레지스터이다. 예를 들면, 캐시 에러, 버스 에러, 데이터 에러 등과 같은 에러가 검출되고 MCA 레지스터(452)에 보고된다. 하지만, 메모리 컨트롤러(450)가 메모리(402)로부터 읽혀진 데이터의 에러를 정정하지 않기 때문에, 메모리(402)로부터 읽혀진 데이터에 기반한 잠재적인 에러 정보는 MCA 레지스터(452)에 기록되지 않을 것이다. 상술한 바에도 불구하고, 에러 정보는 통신 경로(408)를 통해서 프로세서(404)에 전달될 수 있다. 이렇게 해서, 에러 정보는 메모리 컨트롤러(450)와 MCA 레지스터(452)가 정정하지 않더라도 소프트웨어(410)에 의해서 접근가능하다.
일 실시 예에서, 저비용의 시스템(400) 설계를 위해서 에러 정보의 전송은 제 2 통신 경로(408)를 통해서 수행될 수 있다. 예를 들면, 에러 정정이 사용되지 않는 메모리 컨트롤러(450)가 프로세서(404)에 포함되고, 에러 정보는 접근 가능하게 설계될 수 있다. 특히, 메모리의 에러 정정이 요구되더라도, 제 2 통신 채널(408)을 통해서 접근 가능한 에러 정보가 있기 때문에 메모리 에러 정정 기능이 없는 프로세서(404)가 사용될 수 있다. 따라서, 에러 정보를 사용하는 임의의 소프트웨어를 포함하는 소프트웨어(410)는, 프로세서(404)가 메모리 에러 정정을 수행하는 것처럼 동작할 수 있다. 에러 정정 기능이 없는 프로세서(404)는 저비용, 저전력으로 구현가능할 것이다. 따라서, 시스템(400)에 소요되는 제반 소모 전력과 비용은 감소할 수 있다.
비록 메모리 컨트롤러(450)가 프로세서(404)에 집적되는 것으로 설명되었으나, 메모리 컨트롤러(450)는 프로세서(404)와 분리될 수 있다. 통신 경로(408)가 메모리 컨트롤러(450) 및 프로세서(404)의 다른 부분을 바이패스할 수 있지만, 다른 에러 정정 회로를 가질 것이다. 이러한 제 2 통신 경로(408)를 통한 에러 정보의 바이패스 방식은 메모리 컨트롤러(450), MCA 레지스터(452) 등의 특성에 독립적인 에러 정보의 통신이 가능하게 한다. 즉, 유사한 정보가 메모리 컨트롤러(450) 그리고/또는 MCA 레지스터(452)에는 접근 불가함에도 에러 정보는 접근 가능할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 오염된 데이터 스트로브 신호를 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(500)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106, 108), 그리고 소프트웨어(110)와 유사한 메모리(502), 프로세서(504), 통신 경로들(506, 508), 그리고 소프트웨어(510)를 포함한다. 하지만, 이 실시 예에서는 통신 경로(208)는 데이터 라인(532)와 데이터 스트로브 라인(533)을 포함한다. 다른 라인들도 통신 경로(506)의 일부로 포함될 수 있으나, 간략한 설명을 위해서 이들 라인은 생략하기로 한다.
일 실시 예에서, 정정 불가 에러에 대한 에러 정보와 정정 가능한 에러에 대한 에러 정보는 서로 다른 경로를 통해서 전달될 수 있다. 앞서 설명한 바와 같이, 정정 가능 에러 정보는 통신 경로(508)를 통해서 전달될 것이다. 반면, 정정 불가 에러 정보는 정정 불가한 에러에 근거한 다양한 서로 다른 형태의 정보를 포함할 수 있다. 정정 불가 에러 정보는 제 1 통신 경로(506)를 통해서 전달될 것이다. 예를 들면, 메모리(502)는 데이터 스트로브 라인(533)을 통해서 전달되는 신호에 의해서 정정 불가 에러 정보를 전달할 수 있다.
즉, 정상적인 데이터 전송시 데이터가 전송됨에 따라 데이터 스트로브 라인으로 전달되는 데이터 스트로브 신호가 토글링될 수 있다. 하지만, 메모리(502)가 정정 불가 에러를 검출하는 경우, 메모리(502)는 정상적인 데이터 전송시의 데이터 스트로브 신호와는 다른 데이터 스트로브 신호를 생성하여 데이터 스트로브 라인(533)으로 전송할 것이다. 특정 실시 예에서, 메모리(502)는 데이터 스트로브 라인(533)으로 전달되는 데이터 스트로브 신호를 토글링하지 않을 수도 있다. 이러한 조건이 검출되면, 프로세서(504)는 소프트웨어(510)에 의해서 관리되는 하드웨어 예외 조건을 생성할 것이다.
비록 정정 불가 에러를 전달하기 위한 기술의 예로서 통신 경로(506)의 내부에 신호 및 라인들이 사용되었지만, 다른 신호나 라인들이 프로세서(504)에 정정 불가 에러를 전달하기 위해 사용될 수 있음은 잘 이해될 것이다. 전달되는 방식에 관계없이, 프로세서(504)는 정정 불가 에러의 전달에 시스템(500) 중지나 다른 액션을 수행하는 등의 방식으로 응답할 것이다.
도 6은 본 발명의 일 실시 예에 따른 분리된 정정 불가 에러 신호를 갖는 메모리 시스템 아키텍처를 가지는 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(600)은 도 1의 메모리(102), 프로세서(104), 통신 경로들(106, 108), 그리고 소프트웨어(110)와 유사하게, 메모리(602), 프로세서(604), 통신 경로들(606, 608), 그리고 소프트웨어(610)를 포함한다. 하지만, 이 실시 예에서, 분리된 통신 경로(634)가 메모리(602)와 프로세서(604) 사이에 연결될 것이다.
도 5의 시스템(500)과 유사하게, 정정 불가 에러 정보가 프로세서(604)에 전달된다. 이 실시 예에서, 메모리(602)는 제 3 통신 경로(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)은 프로세서(704)를 통해서 에러 정보에 접근하는 소프트웨어(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)는 에러 검출 및 정정 모듈(824, EDAC module)을 포함할 수 있다.
일 실시 예에서, 에러 검출 및 정정 모듈(824)은 메모리, 캐시, 입출력 장치, 주변 장치, 버스들, 그리고/또는 시스템(800)의 다른 부분들로부터 제공되는 에러 정보를 관리할 수 있고, 응용 계층과 같은 고기능 계층에 그러한 정보를 노출시킬 수 있다. 특히, 에러 검출 및 정정 모듈(824)은 모듈(818)로부터 에러 정보를 받을 수 잇다. 에러 검출 및 정정 모듈(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)와 관련이 없는 정보를 포함할 수 있다. 정보(620)의 일부(921)는 제 1 모듈(918)에 의해서 수신될 수 있다. 제 1 모듈(918)은 제 2 모듈(926)으로부터 제공되는 다른 정보들(920)의 일부나 전부와 에러 정보(922)를 조합할 수 있다. 제 1 모듈(918)은 단일 인터페이스에 조합된 정보를 제공할 수 있다. 예를 들면, 제 1 모듈(918)은 도 8의 에러 검출 및 정정 모듈(824)과 같은 에러 검출 및 정정 모듈에 조합된 정보를 제공할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 메모리 컨트롤 아키텍처 모듈로부터 제공되는 정보를 집계하는 에러 정정 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(1000)은 도 9의 메모리(902), 프로세서(904), 통신 경로들(906, 908), 그리고 정보(920, 922)에 응답하여 동작하는 모듈들(918, 926)을 포함하는 소프트웨어(910)와 유사한 구성들인 메모리(1002), 프로세서(1004), 통신 경로들(1006, 1008), 그리고 정보(1020, 1022)에 응답하여 동작하는 모듈들(1018, 1026)을 포함하는 소프트웨어(1010)를 포함한다. 하지만, 이 실시 예에서, 제 1 모듈(1018)은 에러 정정 모듈이고, 제 2 모듈(1026)은 MCA 모듈이다.
MCA 모듈(1026)은 도 4의 MCA 레지스터(452)와 같은 MCA 레지스터의 접근을 제어한다. 정보(1020)는 MCA 레지스터(452)로부터 제공되는 정보를 나타낸다. 에러 정정 모듈(1018)은 정보(1020)를 복구하기 위해 MCA 모듈(1026)에 접근한다. 에러 정정 모듈(1018)은 MCA 모듈(1026)로부터 제공되는 정보(1020)를 조합하고, 조합된 정보를 단일 인터페이스에 제공한다.
특히, 에러 정정 모듈(1018)은 프로세서(1004)가 에러를 정정하도록 하는 MCA 모듈(1026)가 유사하거나 같은 방식으로 인터페이스를 제공한다. 예를 들면, 프로세서(1004)가 메모리(1002)로부터 읽혀지는 데이터의 에러를 정정하고, 그러한 정보가 접근 가능한 경우, MCA 모듈(1026)에 의해서도 그 정보는 접근 가능하게 된다. 하지만, 프로세서(1004)가 메모리(1002)로부터 읽혀지는 데이터의 에러를 정정하지 않도록 구성되거나, 프로세서(1004)가 에러는 정정하지만, 메모리(1002)에서 에러가 정정됨에 따라 MCA 모듈(1026)에 의해서 모니터링되는 통신 경로를 통해서 에러 정보를 수신하지 않는 경우, MCA 모듈(1026)은 에러 정보를 제공할 수 없다.
에러 정정 모듈(1018)이 통신 경로(1008)를 통해서 획득된 정보(1020)와 정보(1022)를 조합하고, 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는 본 발명의 일 실시 예에 따른 인터페이스를 공유하는 정정 가능 에러 모듈 및 직렬 인식 소자(PSD)/레지스터 클록 드라이버 모듈을 포함하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(1200)은 도 11의 메모리(1102), 프로세서(1104), 통신 경로들(1106, 1108), 그리고 정보(1120, 1122)에 응답하여 동작하는 모듈들(1118, 1128, 1130)을 포함하는 소프트웨어(1110)와 유사한 구성들인 메모리(1202), 프로세서(1204), 통신 경로들(1206, 1208), 그리고 정보(1220, 1222)에 응답하여 동작하는 모듈들(1218, 1228, 1230)을 포함하는 소프트웨어(1110)를 포함한다. 하지만, 이 실시 예에서, 제 1 모듈(1218)은 정정된 에러 모듈이고, 제 2 모듈(1228)은 직렬 인식 검출 소자(SPD)/레지스터 클록 드라이버(RCE) 모듈(1228)이다.
특히, SPD/RCD 모듈(1228)은 직렬 인식 검출 시스템 그리고/또는 레지스터 클록 드라이버 시스템에 관련된 정보에 접근한다. SPD/RCD 모듈(1228)은 하나 또는 둘 모두의 시스템에 접근하도록 구성된다. 이 정보는 제 2 통신 경로(1208)를 통해서 접근될 수 있다. 따라서, 일 실시 예에서 메모리(1202)로부터 제공되는 에러 정보는 SPD/RCD에 관련된 정보로서 통신 경로(1208)를 통해서 접근될 수 있다.
도 13은 본 발명의 일 실시 예에 따른 디램내 에러 정정 기술을 사용하는 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(1300)은, 도 10의 메모리(1002), 프로세서(1004), 그리고 정보(1020, 1022)에 응답하여 동작하는 에러 정정 모듈(1018)과 MCA 모듈(1026)과 유사한 구성들인 메모리(1302), 프로세서(1304), 그리고 정보(1320, 1322)에 응답하여 동작하는 에러 정정 모듈(1318)과 MCA 모듈(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)로부터 읽혀지는 데이터로부터 하나 또는 그 이상의 에러를 정정한다. 에러 정정 기술은 싱글 에러 정정-더블 에러 검출(SEC-DEC) 기술, 싱글칩 칩킬 기술, 더블칩 칩킬 기술 등일 수 있다. 어떠한 에러 정정 기술이라도 사용될 수 있다.
이 실시 예에서, 메모리 컨트롤러(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)을 폴링하도록 구성될 수 있다. 결국, EC 모듈(1318)은 제 2 통신 경로(1308)를 통해서 수신되는 에러 정보를 되돌려줄 수 있다. EDAC 모듈(1324)과 통신하는 메모리 ECC 데몬(1358)은 에러 정보를 획득하기 위해서 EDAC 모듈(1324)를 폴링한다. 그 후에, 메모리 ECC 데몬(1358)은 응용 레벨에서 에러 정보에 대응하는 액션을 취할 것이다. 상술한 액션에는 페이지 만료, 시스템(1300)을 동작시키기 위한 다른 에러 관리 동작, 신뢰성 레벨을 유지하기 위한 동작, 폐기 추천 등을 포함한다.
상술한 바와 같이, 정정 불가 에러는 검출될 수 있다. 정정 불가 에러 정보는 메모리 컨트롤러(1350), MCA 레지스터(1352), 그리고 MCA 모듈(1326)을 통해서 에러 정정 모듈(1318)에 전달될 수 있다. 예를 들면, 정정 불가 에러는 MCA 모듈(1326)을 통해서 마스크 불가 인터럽트, 예외 등으로 전달될 수 있다. 특정 실시 예에서, 메모리 컨트롤러(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)은 메모리 에러, 데이터 전송 에러 등과 같은 다양한 시스템 에러와 관련된 머신 체크 이벤트(MCEs)를 기록한다. 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)로부터 읽혀진 데이터로부터 에러 정보를 생성한다. 에러 인터페이스(1542)는 하나 또는 그 이상의 메모리 장치(1501)로부터 읽혀진 데이터의 에러 정정에 응답하여 생성된 에러 정보를 전송한다.
데이터 인터페이스(1536)는 메모리 장치(1501)에 저장된 데이터가 전송되는 경로를 제공하고, 메모리 장치(1501)에 저장될 데이터(1540)의 수신 경로를 제공한다. 예를 들면, 데이터 인터페이스(1536)는 버퍼, 드라이버 회로, 종단 회로, 또는 데이터 라인, 스트로브 라인, 어드레스 라인, 인에이블 라인 등의 전송 라인을 위한 다른 회로들을 포함할 수 있다.
에러 인터페이스(1538)는 SMBus, IPMI, 또는 여기서 소개한 다른 버스들과 같은 특정 버스를 통해서 통신하는 인터페이스이다. 일 실시 예에서, 에러 인터페이스(1538)는 메모리 모듈(1500)이 다른 정보들과 더불어 에러 정보를 교환하기 위한 기존의 인터페이스일 수 있다. 따라서, 정보(1542)는 에러 정보뿐만 아니라 다른 정보도 포함할 수 있다.
컨트롤러(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)를 포함한다.
정정 불가 에러 인터페이스(1744)는 정정 불가 에러를 교환하기 위한 메모리 모듈(1700)이 별도로 구비한 분리된 인터페이스이다. 예를 들면, 정정 불가 에러 인터페이스(1744)는 전용의 라인이거나, 전용의 버스로 제공될 수 있다.
도 18은 본 발명의 일 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다.
1800 단계에서, 메모리로부터 데이터를 읽을 때 에러가 발생한다. 읽기 에러에 응답하여 에러 정보가 생성된다. 예를 들면, 에러가 정정된 경우, 읽기 에러는 정정 가능 에러이다. 에러 정보는 정정 가능한 에러에 대한 정보이다. 다른 예에서, 읽기 에러는 복수의 에러가 될 수 있다. 일기 에러는 이러한 에러들에 대한 정보이다.
1802 단계에서, 에러 읽기 명령어가 메모리 모듈에 의해서 수신될 것이다.
1804 단계에서, 만약 에러가 발생하면, 메모리는 에러 정보를 전송한다. 1802 단계의 에러 읽기 명령을 수신하기 이전에는, 발생한 에러에 대한 에러 정보를 메모리 모듈이 저장하고 있는다. 그리고 에러 읽기 명령어에 응답하여 이전에 발생한 에러에 대응하는 에러 정보가 1804 단계에서 전송될 것이다. 하지만, 만약 에러가 발생하지 않았을 경우, 1804 단계에서 전송되는 에러 정보는 에러가 발생하지 않았음을 나타내는 정보일 것이다.
상술한 바와 같이, 에러 정보는 버스를 통해서 전송된다. 특히, 버스는 메모리 모듈의 메인 데이터 경로에 대해 상대적인 대역외 경로에 대응한다. 따라서, 1804 단계에서의 전송은 버스를 경유한 에러 정보의 전송을 포함할 것이다.
일 실시 예에서, 에러 읽기 명령어는 1806 단계에서 컨트롤러로부터 전달될 수 있다. 예를 들면, 컨트롤러는 메모리 모듈을 폴링할 것이다. 따라서, 컨트롤러는 1806 단계에서 에러 읽기 명령을 전송하고, 1808 단계에서 에러 정보를 수신할 수 있다. 앞서 설명된 바와 같이, 컨트롤러는 내부에 에러 정보를 저장하기 위한 비휘발성 메모리와 같은 메모리를 포함할 수 있다. 이후, 1810 단계에서 에러 정보는 프로세서에 전달될 수 있다.
비록, 1806 단계의 일 실시 예에서 에러 읽기 명령을 전송하기 위하여 컨트롤러가 예시되었으나, 프로세서가 에러 읽기 명령을 전송할 수도 있다. 그 에러 읽기 명령어는 1802 단계에서 메모리 모듈이 수신하고, 1810 단계에서 에러 정보가 프로세서로 전송될 것이다.
도 19는 본 발명의 다른 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 이 실시 예에서, 도 18의 동작 단계들 1800, 1802, 1804와 유사하게 읽기 에러는 1900 단계에서 발생하고, 읽기 에러 명령어는 1902 단계에서 수신되며, 에러 정보는 1904 단계에서 전송된다. 하지만, 이 실시 예에서, 읽기 에러 명령어는 1912 단계에서 컨트롤러에 전송된다. 예를 들면, 컨트롤러는 읽기 에러 명령어를 프로세서로부터 전달받는다. 1914 단계에서, 읽기 에러 명령어는 메모리 모듈에 전송된다. 예를 들면, 1914 단계에서, 컨트롤러는 프로세서로부터 전달받은 읽기 에러 명령어를 메모리 모듈에 전달하고, 읽기 에러 명령어를 조정하고, 메모리 모듈에 전달할 다른 읽기 에러 명령어를 생성하고, 또는 메모리 모듈에 읽기 에러 명령어를 전송한다. 에러 정보는 앞서 설명한 바와같이 프로세서로 전파된다.
앞서 설명한 바와 같이, 컨트롤러는 에러 정보를 전달 및 저장하기 위해서 메모리 모듈에 대한 폴링을 수행한다. 따라서, 프로세서로부터 컨트롤러로 읽기 에러 명령어가 수신되면, 컨트롤러는 이미 에러 정보를 읽은 상황이 된다. 컨트롤러는 저장된 에러 정보를 프로세서에 전송한다. 컨트롤러는 그러나 저장된 에러 정보를 프로세서로 전송하기 전에는 메모리 모듈을 폴링할 필요가 없다.
도 20은 본 발명의 또 다른 실시 예에 따른 에러 정보를 교환하는 방법을 보여주는 순서도이다. 이 실시 예에서, 2000 단계에서 프로세서는 읽기 에러 명령어를 전송할 수 있다. 2002 단계에서, 프로세서는 에러 정보를 수신할 수 있다. 2006 단계에서, 프로세서는 에러 정보와 추가적인 정보를 조합할 수 있다. 상술한 바와 같이, 추가적인 정보는 프로세서, 주변 회로, 버스들 등의 상태 정보와 같이 메모리 모듈과 관련없는 정보를 포함할 수 있다. 특정 실시 예에서, 프로세서는 MCA 모듈로부터 제공된 정보와 에러 정보를 조합할 수 있다.
특정 실시 예의 2008 단계에서, 조합된 정보는 EDAC 모듈에 제공될 수 있다. 앞서 설명한 바와 같이, EDAC 모듈은 다양한 시스템들의 에러에 대한 정보를 고레벨 응용 프로그램이 사용할 수 있도록 한다.
도 21은 본 발명의 일 실시 예에 따른 메모리 시스템 아키텍처를 구비한 시스템을 보여주는 개략도이다. 이 실시 예에서, 시스템(2100)은 도 1의 프로세서(104)와 소프트웨어(110)와 유사하게 프로세서(2104), 소프트웨어(2110)를 포함한다. 하지만, 이 실시 예에서, 시스템(2100)은 메모리(2102)와 에러 정정 회로(2168)를 포함한다.
이 실시 예에서, 메모리(2102)는 에러를 정정하지 않도록 설정된다. 메모리(2102)는 에러 정정 회로(2168)에 연결되고, 통신 경로(2172)를 통해서 에러 정정 회로(2168)에 데이터를 전송한다.
에러 정정 회로(2168)는 메모리(2102)로부터 수신된 데이터의 에러를 정정한다. 에러 정정 회로(2168)는 제 2 통신 경로(2170)와 제 3 통신 경로(2108)를 통해서 프로세서(2104)에 연결된다. 제 2 통신 경로(2170)는 프로세서(2104)가 데이터를 수신하기 위한 메인 경로에 해당한다. 예를 들면, 제 2 통신 경로(2170)는 프로세서(2104)의 시스템 버스일 수 있다.
반면, 제 3 통신 경로(2108)는 통신 경로(108)와 유사하다. 즉, 제 3 통신 경로(2108)는 컨트롤러(2114)를 포함하는 분리된 대역외 통신 경로이거나, 앞서 설명한 통신 경로들의 다양한 변경일 수 있다.
도 22는 본 발명의 실시 예에 따른 서버를 보여주는 개략도이다. 이 실시 예에서, 서버(2200)는 독립형 서버, 렉에 탑재된 서버, 블레이드 서버 등을 포함할 수 있다. 서버(2200)는 메모리(2202), 프로세서(2204), 그리고 BMC(2214)를 포함한다. 프로세서(2204)는 통신 경로(2206)를 통해서 메모리(2202)와 연결된다. BMC(2214)는 버스(2216)을 통해서 프로세서(2204)와 연결되고, 버스(2212)를 통해서 메모리(2202)와 연결된다. 메모리(2202), 프로세서(2204), BMC(2214), 통신 경로(2206), 그리고 버스들(2212, 2216) 각각은 앞서 설명한 대응하는 구성들 중 어느 하나일 수 있다.
도 23은 본 발명의 일 실시 예에 따른 서버 시스템을 보여주는 개략도이다. 이 실시 예에서, 서버 시스템(2300)은 복수의 서버들(2302-1 내지 2302-N)을 포함할 수 있다. 서버(2302)들 각각은 매니저(2304)와 연결된다. 하나 또는 그 이상의 서버들(2302)은 앞서 설명한 서버(2100)와 유사할 것이다. 게다가, 매니저(2304)는 앞서 설명한 메모리 시스템 아키텍처를 구비한 시스템을 포함할 수 있다.
매니저(2304)는 서버 시스템(2300)의 서버(2302)와 다른 구성들을 관리하도록 설정된다. 예를 들면, 매니저(2304)는 서버(2302)의 설정들을 관리하도록 구성될 수 있다. 서버들(2302)들 각각은 매니저(2304)와 에러 정보를 교환할 수 있다. 에러 정보는 앞서 설명한 바와 같이 서버들(2302) 중 어느 하나의 프로세서에 전송되는 정정 가능한 에러 정보나, 정정 가능한 에러 정보에 근거한 다른 에러 정보를 포함할 수 있다. 매니저(2304)는 에러 정보에 근거하여 액션을 취할 수 있다. 예를 들면, 서버(2302-1)가 임계치를 초과하는 정정 가능한 에러를 포함할 수 있다. 매니저(2304)는 관리 그리고/또는 대체를 위해 서버(2302-1)의 기능을 서버(2302-2)로 넘겨주고, 서버(2302-1)를 셧다운시킬 수 있다. 비록 특정 예들이 제시되었지만, 매니저(2304)는 에러 정보에 근거해서 또 다른 액션을 취할 수도 있음은 잘 이해될 것이다.
도 24는 본 발명의 일 실시 예에 따른 데이터 센터를 보여주는 개략도이다. 이 실시 예에서, 데이터 센터(2400)는 복수의 서버 시스템들(2402-1 내지 2402-N)을 포함할 수 있다. 서버 시스템(2402)는 도 22에서 설명된 서버 시스템(2200)과 유사하다. 서버 시스템(2402)은 인터넷과 같은 네트워크(2404)에 연결될 수 있다. 따라서, 서버 시스템(2402)은 다양한 노드들(2406-1 내지 2406-M)과 네트워크(2404)를 통해서 통신할 수 있다. 예를 들면, 노드들(2406)은 클라이언트 컴퓨터나 다른 서버, 원거리 데이터 센터, 스토리지 시스템 등일 수 있다.
본 발명의 실시 예에 따른 시스템은, 데이터를 저장하고, 상기 저장된 데이터의 에러를 정정하고, 상기 저장된 데이터의 에러 정정 결과에 응답하여 에러 정보를 생성하는 메모리; 그리고 제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 메모리에 연결되며, 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신하는 프로세서를 포함한다.
일 실시 예에서, 상기 에러는 싱글-비트 에러이고, 에러 정보는 에러가 정정된 것을 지시하는 정보이다.
일 실시 예에서, 상기 에러 정보는 정정된 에러 정보를 포함하고, 상기 프로세서는 상기 제 1 통신 경로 이외의 경로를 통해서 상기 정정된 에러 정보를 수신한다.
일 실시 예에서, 상기 메모리는 동기식 랜덤 액세스 메모리 모듈이다.
일 실시 예에서, 상기 프로세서와 상기 메모리에 연결되며, 상기 프로세서와 상기 메모리와 통신하는 컨트롤러를 더 포함한다. 상기 컨트롤러는 상기 제 2 통신 경로의 일부이다.
일 실시 예에서, 상기 컨트롤러는 베이스보드 관리 컨트롤러이다.
일 실시 예에서, 상기 컨트롤러는 IPMI 인터페이스에 상응하는 인터페이스에 의해서 상기 프로세서와 연결된다.
일 실시 예에서, 상기 컨트롤러는 시스템 관리 버스(SMBus)에 대응하는 인터페이스에 의해서 메모리에 연결된다.
일 실시 예에서, 상기 컨트롤러는 상기 에러 정보를 저장하고, 상기 에러 정보를 상기 프로세서로부터 제공되는 요청에 응답하여 상기 프로세서에 제공한다.
일 실시 예에서, 상기 프로세서는 상기 메모리에 연결되는 메모리 컨트롤러를 포함하고, 메모리 컨트롤러는 상기 제 1 통신 경로를 통해서 상기 메모리에 연결된다.
일 실시 예에서, 상기 프로세서는 상기 메모리와 연결된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 메모리로부터 읽혀진 데이터의 에러를 정정하지 않는다.
일 실시 예에서, 상기 제 1 통신 경로는 복수의 데이터 라인과 적어도 하나의 스트로브 라인을 포함하고, 상기 메모리는 상기 적어도 하나의 스트로브 라인을 통해서 전달되는 신호에 의해서 정정 불가 에러를 교환한다.
일 실시예에서, 상기 시스템은 상기 메모리와 상기 프로세서를 연결하는 제 3 통신 경로를 더 포함하고, 상기 메모리는 상기 제 3 통신 경로를 통해서 정정 불가 에러를 교환한다.
일 실시 예에서, 상기 프로세서는 상기 메모리에 의해서 생성되는 에러 정보를 요청한다.
일 실시 예에서, 상기 프로세서는 상기 에러 정보와 상기 메모리에 관련된 다른 정보들을 조합한다.
일 실시 예에서, 상기 다른 정보는 상기 제 1 통신 경로를 통해서 수신되는 정보에 근거한다.
일 실시 예에서, 상기 프로세서는 상기 제 2 통신 경로와 연결되는 인터페이스를 포함하고, 상기 프로세서는 상기 인터페이스를 통해서 에러 정보를 수신하고, 상기 인터페이스를 통해서 다른 정보를 수신한다.
일 실시 예에서, 상기 메모리는 직렬 인식 시스템(SPD)과 레지스터 클록 구동 시스템 중 적어도 하나를 포함하고, 상기 다른 정보는 직렬 인식 시스템(SPD)과 레지스터 클록 구동 시스템 중 적어도 어느 하나로부터 수신된다.
본 발명의 실시 예에 따른 메모리 모듈은, 데이터를 저장하는 적어도 하나의 메모리 장치와 제 1 인터페이스, 제 2 인터페이스를 포함한다. 제 1 인터페이스는 데이터를 송수신하고, 제 2 인터페이스는 상기 적어도 하나의 메모리 장치로부터 읽혀지는 데이터의 에러 정정에 응답하여 에러 정보를 전송한다.
일 실시 예에서, 상기 제 2 인터페이스는 적어도 하나의 직렬 인식 시스템(SPD)과 레지스터 클록 구동 시스템 중 적어도 하나를 포함한다.
일 실시 예에서, 상기 메모리 모듈은 상기 제 1 인터페이스와 연결되는 컨트롤러를 포함하고, 정정 불가 에러의 검출에 응답하여 상기 제 1 인터페이스를 통해서 전달되는 데이터 스트로브 신호를 조정한다.
일 실시 예에서, 상기 제 2 인터페이스는 정정 불가 에러의 검출에 응답하여 에러 정보를 전송한다.
본 발명의 실시 예에 따른 방법은, 메모리 모듈에서 에러를 포함하는 데이터를 읽는 단계, 상기 에러를 포함하는 데이터의 읽기 결과에 근거하여 에러 정보를 생성하는 단계, 메모리 모듈에서 상기 레어 정보를 읽기 위한 명령어를 수신하는 단계, 그리고 상기 명령어에 응답하여 상기 에러 정보를 상기 메모리 모듈로부터 전송하는 단계를 포함한다.
일 실시 예에 따르면, 상기 컨트롤러에서 상기 에러 정보를 수신하는 단계를 더 포함한다.
일 실시 예에 따르면, 상기 에러 정보를 상기 컨트롤러에서 프로세서로 전송하는 단계를 더 포함한다.
일 실시 예에 따르면, 상기 에러 정보를 읽기 위한 상기 명령어는 제 1 명령어로 제공되고, 상기 컨트롤러의 프로세서로부터 상기 에러 정보를 읽기 위한 제 2 명령어를 수신하는 단계, 그리고 컨트롤러로부터 상기 제 2 명령어에 응답하여 상기 제 1 명령어를 전송하는 단계를 더 포함한다.
일 실시 예에 따르면, 상기 메모리로부터 적어도 하나의 스트로브 신호를 조정하여 정정 불가 에러를 교환하는 단계를 더 포함한다.
일 실시 예에 따르면, 상기 프로세서에서 상기 메모리 모듈과 관련된 추가 정보를 생성하는 단계, 그리고 상기 프로세서에서 상기 추가 정보와 에러 정보를 조합하는 단계를 더 포함한다.
일 실시 예에 있어서, 통신 링크를 통해서 상기 에러 정보와 다른 정보를 전송하는 단계를 포함한다.
일 실시 예에 있어서, 상기 다른 정보는 상기 메모리와 무관하다.
본 발명의 실시 예에 따른 시스템은, 메모리, 메인 메모리 채널을 통해서 상기 메모리와 연결되는 프로세서, 그리고 상기 메모리와 상기 프로세서에 연결되며, 상기 메인 메모리 채널과는 분리된 통신 링크를 포함하되, 상기 메모리와 상기 프로세서는 상기 메인 메모리 채널과 상기 통신 링크를 통해서 통신하며, 상기 메모리는 상기 통신 링크를 통해서 에러 정보를 상기 프로세서와 교환한다.
일 실시 예에 있어서, 상기 프로세서는 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 메인 메모리 채널의 일부로 제공된다.
일 실시 예에 있어서, 상기 프로세서는 상기 통신 링크를 통해서 시스템 관리 정보를 수신한다.
일 실시 예에 있어서, 상기 시스템 관리 정보는 온도 정보 또는 전력 정보 중 적어도 하나를 포함한다.
일 실시 예에 있어서, 메모리는 상기 통신 링크를 통해서 상기 프로세서와 에러 정보를 교환한다.
다른 실시 예에 따른 시스템은, 에러 정정을 수행하지 않는 메모리, 상기 메모리와 연결되어 상기 메모리로부터 읽혀진 데이터의 에러를 정정하고, 에러 정정 결과에 따라 에러 정보를 생성하는 에러 정정 회로, 그리고 제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 에러 정정 회로와 연결되는 프로세서를 포함한다. 상기 프로세서는 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신한다.
일 실시 예에 있어서, 상기 제 2 통신 경로는, 상기 에러 정정 회로로부터 에러 정보를 수신하고, 수신된 에러 정보를 프로세서에 전달하는 컨트롤러를 포함한다.
미리 생산되고, 교화적이고, 경제적인 제조, 적용, 활용을 위해서 다양한 알려진 구성들을 적용함에 따라 본 발명의 방법, 프로세스, 수단, 장치, 상품, 그리고/또는 시스템은 간략하고, 비용 효율적이고, 복잡하지 않고, 높은 다목적성, 정확하고, 민감하고, 효과적으로 구현될 수 있다. 여기서 설명되는 본 발명의 다른 특징에 따르면, 비용 감소, 시스템의 간소화, 그리고 성능 향상의 정통적인 트렌드를 지원할 수 있고, 서비스할 수 있다.
한편, 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 데이터를 저장하고, 상기 저장된 데이터의 에러를 정정하고, 상기 저장된 데이터의 에러 정정 결과에 응답하여 에러 정보를 생성하는 메모리; 그리고
    제 1 통신 경로 및 제 2 통신 경로를 통해서 상기 메모리에 연결되며, 상기 제 1 통신 경로를 통해서 상기 메모리로부터 데이터를 수신하고, 상기 제 2 통신 경로를 통해서 상기 메모리로부터 상기 에러 정보를 수신하는 프로세서를 포함하는 시스템.
  2. 제 1 항에 있어서,
    상기 에러 정보는 정정된 에러 정보를 포함하고, 상기 프로세서는 상기 제 1 통신 경로 이외의 경로를 통해서 상기 정정된 에러 정보를 수신하는 시스템.
  3. 제 1 항에 있어서,
    상기 메모리는 동기식 랜덤 액세스 메모리(DRAM) 모듈인 시스템.
  4. 제 1 항에 있어서,
    상기 프로세서와 상기 메모리에 연결되며, 상기 프로세서와 상기 메모리와 통신하는 컨트롤러를 더 포함하되,
    상기 컨트롤러는 상기 제 2 통신 경로의 일부로 제공되는 시스템.
  5. 제 4 항에 있어서,
    상기 컨트롤러는 베이스보드 관리 컨트롤러인 것을 특징으로 하는 시스템.
  6. 제 4 항에 있어서,
    상기 상기 컨트롤러는 상기 에러 정보를 저장하고, 상기 에러 정보를 상기 프로세서로부터 제공되는 요청에 응답하여 상기 프로세서에 제공하는 시스템.
  7. 제 1 항에 있어서,
    상기 프로세서는 상기 메모리와 연결된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는 상기 메모리로부터 읽혀진 데이터의 에러를 정정하지 않는 시스템.
  8. 제 1 항에 있어서,
    상기 제 1 통신 경로는 복수의 데이터 라인과 적어도 하나의 스트로브 라인을 포함하고,
    상기 메모리는 상기 적어도 하나의 스트로브 라인을 통해서 전달되는 신호에 의해서 정정 불가 에러를 교환하는 시스템.
  9. 제 1 항에 있어서,
    상기 메모리와 상기 프로세서를 연결하는 제 3 통신 경로를 더 포함하고,
    상기 메모리는 상기 제 3 통신 경로를 통해서 정정 불가 에러를 교환하는 시스템.
  10. 제 1 항에 있어서,
    상기 프로세서는 상기 에러 정보와 상기 메모리에 관련된 다른 정보들을 조합하는 시스템.
  11. 제 1 항에 있어서,
    상기 프로세서는 상기 제 2 통신 경로와 연결된 인터페이스를 포함하고,
    상기 프로세서는 상기 인터페이스를 통해서 상기 에러 정보를 수신하고, 상기 인터페이스를 통해서 다른 정보도 수신하며,
    상기 메모리는 직렬 인식 시스템(SPD)과 레지스터 클록 구동 시스템 중 적어도 하나를 포함하고,
    상기 다른 정보는 직렬 인식 시스템(SPD)과 레지스터 클록 구동 시스템 중 적어도 어느 하나로부터 수신되는 시스템.
  12. 메모리 모듈에서 에러를 포함하는 데이터를 읽는 단계;
    상기 에러를 포함하는 데이터의 읽기 결과에 근거하여 에러 정보를 생성하는 단계;
    메모리 모듈에서 상기 레어 정보를 읽기 위한 명령어를 수신하는 단계; 그리고
    상기 명령어에 응답하여 상기 에러 정보를 상기 메모리 모듈로부터 전송하는 단계를 포함하는 방법.
  13. 제 12 항에 있어서,
    컨트롤러에서 상기 에러 정보를 수신하는 단계; 그리고
    상기 에러 정보를 상기 컨트롤러에서 프로세서로 전송하는 단계를 더 포함하는 방법.
  14. 제 12 항에 있어서,
    컨트롤러로부터 상기 에러 정보를 읽기 위한 명령어를 전송하는 단계; 그리고
    상기 컨트롤러에서 상기 에러 정보를 수신하는 단계를 더 포함하는 방법.
  15. 제 12 항에 있어서,
    상기 에러 정보를 읽기 위한 상기 명령어는 제 1 명령어로 제공되고,
    컨트롤러의 프로세서로부터 상기 에러 정보를 읽기 위한 제 2 명령어를 수신하는 단계; 그리고
    컨트롤러로부터 상기 제 2 명령어에 응답하여 상기 제 1 명령어를 전송하는 단계를 더 포함하는 방법.
  16. 제 12 항에 있어서,
    프로세서에서 상기 메모리 모듈과 관련된 추가 정보를 생성하는 단계; 그리고
    상기 프로세서에서 상기 추가 정보와 에러 정보를 조합하는 단계를 더 포함하는 방법.
  17. 제 12 항에 있어서,
    상기 메모리 모듈로부터 상기 에러 정보를 전송하는 단계는:
    통신 링크를 통해서 상기 에러 정보와 다른 정보를 전송하는 단계를 포함하되,
    상기 다른 정보는 상기 메모리와 무관한 것을 특징으로 하는 방법.
  18. 메모리;
    메인 메모리 채널을 통해서 상기 메모리와 연결되는 프로세서; 그리고
    상기 메모리와 상기 프로세서에 연결되며, 상기 메인 메모리 채널과는 분리된 통신 링크를 포함하되,
    상기 메모리와 상기 프로세서는 상기 메인 메모리 채널과 상기 통신 링크를 통해서 통신하며,
    상기 메모리는 상기 통신 링크를 통해서 에러 정보를 상기 프로세서와 교환하는 시스템.
  19. 제 18 항에 있어서,
    상기 프로세서는 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는 상기 메인 메모리 채널의 일부로 제공되는 시스템.
  20. 제 18 항에 있어서,
    상기 프로세서는 상기 통신 링크를 통해서 시스템 관리 정보를 수신하는 시스템.
KR1020150100409A 2014-08-19 2015-07-15 메모리 시스템 아키텍처 KR20160022242A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462039396P 2014-08-19 2014-08-19
US62/039,396 2014-08-19
US14/594,049 US20160055058A1 (en) 2014-08-19 2015-01-09 Memory system architecture
US14/594,049 2015-01-09

Publications (1)

Publication Number Publication Date
KR20160022242A true KR20160022242A (ko) 2016-02-29

Family

ID=55348413

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150100409A KR20160022242A (ko) 2014-08-19 2015-07-15 메모리 시스템 아키텍처

Country Status (4)

Country Link
US (1) US20160055058A1 (ko)
JP (1) JP6815723B2 (ko)
KR (1) KR20160022242A (ko)
CN (1) CN105373443B (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10928871B2 (en) 2017-10-31 2021-02-23 SK Hynix Inc. Computing device and operation method thereof
US11016666B2 (en) 2017-11-08 2021-05-25 SK Hynix Inc. Memory system and operating method thereof
US11048573B2 (en) 2018-01-12 2021-06-29 SK Hynix Inc. Data processing system and operating method thereof
US11221931B2 (en) 2019-01-15 2022-01-11 SK Hynix Inc. Memory system and data processing system
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6673021B2 (ja) * 2016-05-31 2020-03-25 富士通株式会社 メモリおよび情報処理装置
US10854242B2 (en) * 2018-08-03 2020-12-01 Dell Products L.P. Intelligent dual inline memory module thermal controls for maximum uptime
US11093393B2 (en) * 2018-12-27 2021-08-17 Samsung Electronics Co., Ltd. System and method for early DRAM page-activation
JP7338354B2 (ja) * 2019-09-20 2023-09-05 富士通株式会社 情報処理装置,情報処理システム及び通信管理プログラム
US11232049B2 (en) 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11630723B2 (en) * 2021-01-12 2023-04-18 Qualcomm Incorporated Protected data streaming between memories
US11593191B2 (en) * 2021-07-13 2023-02-28 Dell Products L.P. Systems and methods for self-healing and/or failure analysis of information handling system storage
JP7299374B1 (ja) * 2022-04-18 2023-06-27 華邦電子股▲ふん▼有限公司 半導体記憶装置及び半導体記憶装置の制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54111725A (en) * 1978-02-22 1979-09-01 Hitachi Ltd Error processing system in memory unit
US7523381B2 (en) * 2005-09-01 2009-04-21 Micron Technology, Inc. Non-volatile memory with error detection
US8352805B2 (en) * 2006-05-18 2013-01-08 Rambus Inc. Memory error detection
US7487428B2 (en) * 2006-07-24 2009-02-03 Kingston Technology Corp. Fully-buffered memory-module with error-correction code (ECC) controller in serializing advanced-memory buffer (AMB) that is transparent to motherboard memory controller
JP4918824B2 (ja) * 2006-08-18 2012-04-18 富士通株式会社 メモリコントローラおよびメモリ制御方法
US7949931B2 (en) * 2007-01-02 2011-05-24 International Business Machines Corporation Systems and methods for error detection in a memory system
KR101042197B1 (ko) * 2008-12-30 2011-06-20 (주)인디링스 메모리 컨트롤러 및 메모리 관리 방법
JP5691943B2 (ja) * 2011-08-31 2015-04-01 日本電気株式会社 メモリ電圧制御装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10928871B2 (en) 2017-10-31 2021-02-23 SK Hynix Inc. Computing device and operation method thereof
US11636014B2 (en) 2017-10-31 2023-04-25 SK Hynix Inc. Memory system and data processing system including the same
US11016666B2 (en) 2017-11-08 2021-05-25 SK Hynix Inc. Memory system and operating method thereof
US11048573B2 (en) 2018-01-12 2021-06-29 SK Hynix Inc. Data processing system and operating method thereof
US11221931B2 (en) 2019-01-15 2022-01-11 SK Hynix Inc. Memory system and data processing system

Also Published As

Publication number Publication date
JP2016045957A (ja) 2016-04-04
US20160055058A1 (en) 2016-02-25
CN105373443B (zh) 2020-04-07
JP6815723B2 (ja) 2021-01-20
CN105373443A (zh) 2016-03-02

Similar Documents

Publication Publication Date Title
KR20160022242A (ko) 메모리 시스템 아키텍처
KR102184581B1 (ko) 메모리 장치 및 모듈
US10824499B2 (en) Memory system architectures using a separate system control path or channel for processing error information
KR102378466B1 (ko) 메모리 장치 및 모듈
TWI566088B (zh) 標頭同位錯誤處置技術
KR101730306B1 (ko) 메모리에서의 오류 정정
US9904591B2 (en) Device, system and method to restrict access to data error information
US8607121B2 (en) Selective error detection and error correction for a memory interface
US7984357B2 (en) Implementing minimized latency and maximized reliability when data traverses multiple buses
KR102262575B1 (ko) 메모리 장치 및 모듈
US8566672B2 (en) Selective checkbit modification for error correction
US20180113621A1 (en) Memory system architecture
US20190227885A1 (en) System and Method to Dynamically Increase Memory Channel Robustness at High Transfer Rates
US11429481B1 (en) Restoring memory data integrity
US20190042364A1 (en) Technologies for maintaining data integrity during data transmissions
CN117640132A (zh) 经由标准互连件的端到端事务完整性

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application