KR102538679B1 - 메모리 시스템 및 메모리 시스템의 동작 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작 방법 Download PDF

Info

Publication number
KR102538679B1
KR102538679B1 KR1020180040148A KR20180040148A KR102538679B1 KR 102538679 B1 KR102538679 B1 KR 102538679B1 KR 1020180040148 A KR1020180040148 A KR 1020180040148A KR 20180040148 A KR20180040148 A KR 20180040148A KR 102538679 B1 KR102538679 B1 KR 102538679B1
Authority
KR
South Korea
Prior art keywords
memory
core
cores
monarch
controller
Prior art date
Application number
KR1020180040148A
Other languages
English (en)
Other versions
KR20190117077A (ko
Inventor
신원제
고태경
김대정
김성준
김우섭
박찬익
유용준
최인수
변희충
이종영
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180040148A priority Critical patent/KR102538679B1/ko
Priority to US16/164,103 priority patent/US11157342B2/en
Priority to US16/218,720 priority patent/US10990463B2/en
Priority to CN201910193535.8A priority patent/CN110347611B/zh
Publication of KR20190117077A publication Critical patent/KR20190117077A/ko
Application granted granted Critical
Publication of KR102538679B1 publication Critical patent/KR102538679B1/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/0751Error or fault detection not based on redundancy
    • 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
    • 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/0727Error 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 storage system, e.g. in a DASD or network based storage system
    • 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
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/0793Remedial or corrective actions
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

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)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)

Abstract

본 발명은 메모리 시스템에 관한 것이다. 본 발명의 메모리 시스템은 코어들 및 메모리 제어기를 포함하는 프로세서, 그리고 메모리 제어기와 통신하도록 구성되는 제1 반도체 메모리 모듈을 포함한다. 메모리 제어기가 제1 반도체 메모리 모듈로부터 제1 데이터를 읽을 때에 정정 불가능한 제1 에러가 검출되면, 코어들은 제1 예외 처리를 수행하도록 호출된다. 코어들 중 제1 군주 코어는 제1 예외 처리를 수행하고 그리고 코어들 중 나머지 코어들은 이전에 수행하던 나머지 동작들로 복귀한다.

Description

메모리 시스템 및 메모리 시스템의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD OF MEMORY SYSTEM}
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 메모리 시스템 및 메모리 시스템의 동작 방법에 관한 것이다.
반도체 메모리는 반도체 소자들을 이용하여 데이터를 저장하는 데에 사용된다. 반도체 메모리는 동적 랜덤 액세스 메모리 또는 정적 랜덤 액세스 메모리와 같은 휘발성 메모리, 그리고 플래시 메모리, 상 변화 메모리, 강유전체 메모리, 자기 메모리, 저항성 메모리 등과 같은 불휘발성 메모리를 포함한다.
통상적으로, 휘발성 메모리는 고속의 랜덤 액세스를 지원하며, 개인용 컴퓨터, 서버 또는 워크스테이션과 같은 컴퓨팅 시스템의 메인 메모리로 사용된다. 불휘발성 메모리는 큰 저장 용량을 지원하며, 컴퓨팅 시스템의 보조 스토리지로 사용된다.
근래에, 스토리지 클래스 메모리(SCM, Storage Class Memory)에 대한 연구 및 개발이 진행되고 있다. 스토리지 클래스 메모리는 불휘발성의 큰 저장 용량과 고속의 랜덤 액세스 모두를 지원하는 것을 목표로 개발되고 있다. 스토리지 클래스 메모리는 불휘발성 메모리를 이용하여 구현될 수 있다.
스토리지 클래스 메모리는 메인 메모리로 사용되며, 기존에 메인 메모리로 구현되던 휘발성 메모리보다 큰 용량을 제공한다. 그러나 스토리지 클래스 메모리의 특성 중 일부는 기존에 메인 메모리를 제어하는 방식의 성능을 저해할 수 있다. 따라서, 스토리지 클래스 메모리의 특성을 반영하여 메인 메모리를 제어하는 성능을 높이는 새로운 장치 또는 방법에 대한 요구가 제기되고 있다.
본 발명의 목적은 스토리지 클래스의 특성을 반영하여 스토리지 클래스 메모리를 제어하는 성능을 높이는 메모리 시스템 및 메모리 시스템의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 시스템은 코어들 및 메모리 제어기를 포함하는 프로세서, 그리고 메모리 제어기와 통신하도록 구성되는 제1 반도체 메모리 모듈을 포함한다. 메모리 제어기가 제1 반도체 메모리 모듈로부터 제1 데이터를 읽을 때에 정정 불가능한(uncorrectable) 제1 에러가 검출되면, 코어들은 제1 예외 처리를 수행하도록 호출된다. 코어들 중 제1 군주 코어는 제1 예외 처리를 수행하고 그리고 코어들 중 나머지 코어들은 이전에 수행하던 나머지 동작들로 복귀한다.
본 발명의 실시 예에 따른 메모리 시스템은 코어들 및 메모리 제어기를 포함하는 프로세서, 그리고 메모리 제어기와 통신하도록 구성되고, 불휘발성 메모리 및 제1 랜덤 액세스 메모리를 포함하는 제1 반도체 메모리 모듈을 포함한다. 메모리 제어기가 제1 반도체 메모리 모듈로부터 제1 데이터를 읽을 때에 정정 불가능한 제1 에러가 검출되면, 코어들 중 제1 군주 코어는 제1 에러에 대해 제1 기계 검사를 수행하고 그리고 제1 에러의 종류에 관계없이 이전에 수행하던 동작으로 복귀한다.
코어들 및 메모리 제어기를 포함하는 프로세서, 그리고 반도체 메모리 모듈을 포함하는 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은 메모리 제어기가 반도체 메모리 모듈로부터 데이터를 읽을 때에 정정 불가능한 에러를 검출하는 단계, 코어들이 정정 불가능한 에러에 대한 예외 처리를 위해 현재 수행하는 동작들을 중지하는 단계, 코어들 중 군주 코어가 예외 처리를 시작하는 단계, 예외 처리가 완료되기 전에, 코어들 중 군주 코어를 제외한 나머지 코어들은 동작들 중 대응하는 나머지 동작들로 복귀하는 단계, 그리고 예외 처리가 완료되면, 군주 코어가 동작들 중 대응하는 동작으로 복귀하는 단계를 포함한다.
본 발명에 따르면, 스토리지 클래스 메모리의 불휘발성 메모리에 대한 액세스가 발생할 때에, 코어들 중 군주 코어가 예외 처리를 수행하고 다른 코어들은 이전에 수행하던 동작들을 지속한다. 따라서, 스토리지 클래스 메모리의 특성을 반영하여 향상된 성능을 갖는 메모리 시스템 및 메모리 시스템의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 프로세서가 제1 및 제3 메모리 모듈들을 액세스하는 예를 보여준다.
도 3은 본 발명의 제1 예에 따른 메모리 시스템의 동작 방법을 보여주는 순서도이다.
도 4는 제1 메모리 모듈로부터 데이터를 읽는 예를 보여준다.
도 5는 제1 메모리 모듈에 대해 예외 처리가 수행되는 예를 보여준다.
도 6은 본 발명의 제2 예에 따른 동작 방법을 보여주는 순서도이다.
도 7은 군주 코어가 할당되는 예를 보여준다.
도 8은 나머지 코어들이 관리되는 제1 예를 보여준다.
도 9는 본 발명의 실시 예에 따라 예외 처리를 위해 코어들이 관리되는 예를 보여준다.
도 10은 나머지 코어들이 관리되는 제2 예를 보여준다.
도 11은 제1 코어가 예외 처리를 수행하는 동안 다른 예외 처리가 발생하는 예를 보여준다.
도 12는 도 11의 상태에 후속하여 제1 코어가 예외 처리를 완료하는 예를 보여준다.
도 13은 코어들 또는 프로세서가 생성하는 에러 신호의 제1 예를 보여준다.
도 14는 본 발명의 실시 예에 따른 제1 타입 메모리 모듈을 보여주는 블록도이다.
도 15는 본 발명의 실시 예에 따른 제1 타입 메모리 모듈을 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 보여주는 블록도이다. 예를 들어, 메모리 시스템(100)은 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 메모리 시스템(100)은 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.
도 1을 참조하면, 메모리 시스템(100)은 프로세서(110), 제1 내지 제4 메모리 모듈들(120~150), 루트 컴플렉스(160), 그리고 스토리지 장치(170)를 포함한다. 프로세서(110)는 메모리 시스템(100)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(110)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다.
프로세서(110)는 메모리 제어기(111) 및 캐시 메모리(112)를 포함할 수 있다. 메모리 제어기(111)는 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 제1 내지 제4 메모리 모듈들(120~150)을 액세스할 수 있다. 캐시 메모리(112)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.
제1 내지 제4 메모리 모듈들(120~150)은 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 메모리 제어기(111)에 연결될 수 있다. 메인 채널들(MCH)은 메모리 모듈들(120~150)(예를 들어, 반도체 메모리 모듈들)에 데이터를 저장하거나 데이터를 읽기 위해 사용되는 채널들일 수 있다. 메인 채널들(MCH)은 제1 내지 제4 메모리 모듈들(120~150)에 대해 각각 제공되는 채널들을 포함할 수 있다.
보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(120~150)에 데이터를 저장하거나 읽는 것 외에, 제1 내지 제4 메모리 모듈들(120~150)과 연관된 추가적인 기능들을 제공할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(120~150)은 보조 채널들(SCH)을 통해 자신의 고유한 정보들을 메모리 제어기(111)에 제공할 수 있다. 보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(120~150)에 대해 각각 제공되는 채널들을 포함할 수 있다.
제1 내지 제4 메모리 모듈들(120~150)은 메모리 시스템(100)의 메인 메모리로 사용될 수 있다. 제1 내지 제4 메모리 모듈들(120~150)은 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 메모리 모듈의 표준들 중 하나에 따라 메모리 제어기(111)와 통신할 수 있다.
루트 컴플렉스(160)는 프로세서(110)가 다양한 주변 장치들을 액세스하는 채널들을 제공할 수 있다. 예를 들어, 루트 컴플렉스(160)에 스토리지 장치(170)가 연결될 수 있다. 스토리지 장치(170)는 하드 디스크 드라이브, 광학 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.
예시적으로, 루트 컴플렉스(160)에 연결되는 주변 장치들은 스토리지 장치(170)로 한정되지 않는다. 예를 들어, 루트 컴플렉스(160)는 모뎀, 그래픽 프로세싱 유닛(GPU), 뉴로모픽(Neuromorphic) 프로세서 등과 같은 다양한 장치들에 연결될 수 있다.
프로세서(110)는 캐시 메모리(112), 메인 메모리인 제1 내지 제4 메모리 모듈들(120~150), 그리고 스토리지 장치(170)를 계층적으로 관리할 수 있다. 예를 들어, 프로세서(110)는 스토리지 장치(170)에 저장된 데이터 중 필요한 데이터를 제1 내지 제4 메모리 모듈들(120~150)을 포함하는 메인 메모리에 로드할 수 있다. 프로세서(110)는 메인 메모리에 저장된 데이터 중 백업이 필요한 데이터를 스토리지 장치(170)로 플러시(flush)할 수 있다.
제1 내지 제4 메모리 모듈들(120~150)을 포함하는 메인 메모리의 저장 영역 중 일부는 캐시 메모리(112)에 사상될 수 있다. 프로세서(110)는 메인 메모리의 특정한 저장 공간을 액세스할 필요가 있을 때, 특정한 저장 공간이 캐시 메모리(112)에 사상되어 있는지 판단할 수 있다.
특정한 저장 공간이 캐시 메모리(112)에 사상되어 있으면, 프로세서(110)는 캐시 메모리(112)의 특정한 저장 공간을 액세스할 수 있다. 특정한 저장 공간이 캐시 메모리에 사상되어 있지 않으면, 프로세서(110)는 제1 내지 제4 메모리 모듈들(120~150)의 특정한 저장 공간을 캐시 메모리(112)에 사상할(또는 가져올(fetch)) 수 있다.
캐시 메모리(112)의 저장 공간이 부족하면, 프로세서(110)는 기존에 캐시 메모리(112)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 프로세서(110)는 갱신된 데이터를 제1 내지 제4 메모리 모듈들(120~150)로 플러시할 수 있다.
제1 내지 제4 메모리 모듈들(120~150)은 이종의 메모리 모듈들을 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 모듈들(120, 130)은 제1 타입 메모리 모듈들일 수 있다. 제3 및 제4 메모리 모듈들(140, 150)은 제2 타입 메모리 모듈들일 수 있다.
제1 메모리 모듈(120)은 제1 타입 메모리(121), 제2 타입 메모리(122), 매체 제어기(123), 그리고 직렬 프레즌스 검출(SPD)(Serial Presence Detect) 장치(125)를 포함할 수 있다. 제2 메모리 모듈(130)은 제1 타입 메모리(131), 제2 타입 메모리(132), 매체 제어기(133), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(135)를 포함할 수 있다. 이하에서, 제1 메모리 모듈(120)을 참조하여 제1 타입 메모리 모듈들(120, 130)이 설명된다.
제1 타입 메모리(121)는 고속의 휘발성 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 제2 타입 메모리(122)는 제1 타입 메모리(121)보다 느린 속도를 갖고, 제1 타입 메모리(121)보다 큰 저장 용량을 갖는 불휘발성 메모리를 포함할 수 있다. 예를 들어, 제2 타입 메모리(122)는 플래시 메모리, 상 변화 메모리(Phase Change Memory), 강유전체 메모리(Ferroelectric Memory), 자기 메모리(Magnetic Memory), 저항성 메모리(Resistive Memory) 등을 포함할 수 있다.
매체 제어기(123)는 메인 채널들(MCH) 중 대응하는 채널을 통해 전달되는 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)로부터의 액세스 명령을 제1 타입 메모리(121) 또는 제2 타입 메모리(122)에 전달할 수 있다. 액세스 명령에 따라, 매체 제어기(123)는 메인 채널들(MCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)와 데이터를 교환할 수 있다.
매체 제어기(123)는 제2 타입 메모리(122)의 저장 용량 또는 저장 공간을 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공할 수 있다. 매체 제어기(123)는 제1 타입 메모리(121)를 제2 타입 메모리(122)의 캐시 메모리로 사용할 수 있다.
예를 들어, 매체 제어기(123)는 제2 타입 메모리(122)의 저장 공간 중 일부 저장 공간을 제1 타입 메모리(121)에 사상할 수 있다. 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(121)에 사상되어 있으면, 매체 제어기(123)는 액세스 명령을 제1 타입 메모리(121)로 전달할 수 있다.
외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(121)에 사상되어 있지 않으면, 매체 제어기(123)는 해당 저장 공간을 제2 타입 메모리(122)로부터 제1 타입 메모리(121)로 사상(또는 백업)할 수 있다.
제1 타입 메모리(121)의 저장 공간이 부족하면, 매체 제어기(123)는 기존에 제1 타입 메모리(121)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 매체 제어기(123)는 갱신된 데이터를 제2 타입 메모리(122)로 플러시할 수 있다.
SPD 장치(125)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)와 통신할 수 있다. 예를 들어, 제1 메모리 모듈(120)이 초기화될 때에, SPD 장치(125)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공할 수 있다.
예를 들어, SPD 장치(125)는 제1 메모리 모듈(120)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(125)는 제2 타입 메모리(122)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(125)는 제2 타입 메모리(122)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공할 수 있다.
예를 들어, SPD 장치(125)에 저장되는 용량 정보는 제2 타입 메모리(122)의 사용자 용량에 대한 정보를 포함할 수 있다. 제2 타입 메모리(122)의 저장 용량은 사용자 용량, 메타 용량, 그리고 예비 용량을 포함할 수 있다. 사용자 용량은 제2 타입 메모리(122)가 외부의 호스트 장치, 예를 들어 메모리 제어기(111)에 제공하는 저장 용량일 수 있다.
메타 용량은 제2 타입 메모리(122)를 관리하기 위한 다양한 메타 정보가 저장되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(111)에 공개되지 않는 저장 용량일 수 있다. 예비 용량은 제2 타입 메모리(122)를 관리하기 위해 확보되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(111)에 공개되지 않는 저장 용량일 수 있다.
SPD 장치(125)에 저장된 용량 정보는 제2 타입 메모리(122)의 사용자 용량에 대한 정보를 포함할 수 있다. 이하에서, 별도로 명시되지 않으면, 제2 타입 메모리(122)의 용량은 제2 타입 메모리(122)의 사용자 용량을 가리키는 것으로 이해될 수 있다.
제3 메모리 모듈(140)은 제1 타입 메모리(141) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(145)를 포함할 수 있다. 제4 메모리 모듈(150)은 제1 타입 메모리(151) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(155)를 포함할 수 있다. 이하에서, 제3 메모리 모듈(140)을 참조하여 제2 타입 메모리 모듈들(140, 150)이 설명된다.
제1 타입 메모리(141)는 제1 메모리 모듈(120)의 제1 타입 메모리(121)와 마찬가지로 동적 랜덤 액세스 메모리를 포함할 수 있다. SPD 장치(145)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)와 통신할 수 있다. 예를 들어, 제3 메모리 모듈(140)이 초기화될 때에, SPD 장치(145)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공할 수 있다.
예를 들어, SPD 장치(125)는 제3 메모리 모듈(140)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(145)는 제1 타입 메모리(141)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(145)는 제1 타입 메모리(141)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(111) 또는 프로세서(110)에 제공할 수 있다.
메모리 시스템(100)에 전원이 공급되면, 메모리 제어기(111)는 제1 내지 제4 메모리 모듈들(120~150)과 초기화를 수행할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(120~150)의 SPD 장치들(125~155)은 보조 채널들(SCH)을 통해 메모리 제어기(111)에 각각 용량 정보를 제공할 수 있다.
제1 타입 메모리 모듈들(120, 130)의 SPD 장치들(125, 135)은 각각 제2 타입 메모리들(122, 132)의 저장 용량들을 메모리 제어기(111)에 제공할 수 있다. 제2 타입 메모리 모듈들(140, 150)의 SPD 장치들(145, 155)은 각각 제1 타입 메모리들(141, 151)의 저장 용량들을 메모리 제어기(111)에 제공할 수 있다. 예를 들어, 메모리 제어기(111)는 SPD 장치들(125~155)로부터 저장 용량들을 각각 읽을 수 있다.
도 2는 프로세서(110)가 제1 및 제3 메모리 모듈들(120, 140)을 액세스하는 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 프로세서(110), 제1 메모리 모듈(120), 그리고 제3 메모리 모듈(140) 외의 다른 구성 요소들은 생략된다.
도 1 및 도 2를 참조하면, 프로세서(110)는 제1 내지 제n 코어들(CORE1~COREn)을 포함할 수 있다. 즉, 프로세서(110)는 다중 코어 프로세서일 수 있다. 제1 내지 제n 코어들(CORE1~COREn)에 의해 실행되는 개체들은 실행 영역(EA)에 도시된다.
실행 영역(EA)을 참조하면, 프로세서(110)에서 운영체제(OS)가 실행될 수 있다. 또한, 운영체제(OS)의 지원을 바탕으로, 프로세서(110)에서 제1 내지 제3 응용들(APP1~APP3)이 실행될 수 있다.
운영체제(OS)는 기계 검사 예외 처리기(MCEH)(Machine Check Exception Handler)를 포함할 수 있다. 기계 검사 예외 처리기(MCEH)는 메모리 제어기(111)가 제1 내지 제4 메모리 모듈들(120~150)을 액세스할 때에 발생하는 에러를 처리할 수 있다. 기계 검사 예외 처리기(MCEH)의 동작은 도 3을 참조하여 더 상세히 설명된다
메모리 제어기(111)는 제1 내지 제n 코어들(CORE1~COREn)의 요청에 따라 제1 내지 제4 메모리 모듈들(120~150)을 액세스할 수 있다. 예를 들어, 메모리 제어기(111)는 제1 메인 채널(MCH1)을 통해 제1 메모리 모듈(120)을 액세스하고, 제2 메인 채널(MCH2)을 통해 제3 메모리 모듈(140)을 액세스할 수 있다.
도 3은 본 발명의 제1 예에 따른 메모리 시스템(100)의 동작 방법을 보여주는 순서도이다. 도 1 내지 도 3을 참조하면, S110 단계에서, 메모리 제어기(111)는 제1 내지 제4 메모리 모듈들(120~150) 중 하나의 메모리 모듈로부터 데이터를 읽을 수 있다. 예를 들어, 메모리 제어기(111)는 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)의 요청에 따라 데이터를 읽을 수 있다.
S120 단계에서, 메모리 제어기(111)는 정정 불가능한 에러(uncorrectable error)를 검출할 수 있다. 예를 들어, 메모리 제어기(111)는 읽혀진 데이터에 대해 에러 정정 디코딩을 수행할 수 있다. 메모리 제어기(111)는 에러 정정 디코딩의 결과에 따라 에러를 정정하거나 정정 불가능한 에러를 검출할 수 있다.
예를 들어, 읽혀진 데이터가 에러 정정 디코딩에 의해 정정되는 에러 비트들의 수를 초과한 에러 비트들을 포함할 때, 정정 불가능한 에러가 검출될 수 있다. 예를 들어, 메모리 제어기(111)는 특정 횟수만큼 읽기 재시도를 수행할 수 있다. 읽기 재시도를 반복적으로 수행한 때에도 정정 불가능한 에러가 검출되면, 예외 처리(Exception Handling)가 수행될 수 있다.
예를 들어, 프로세서(110)의 제1 내지 제n 코어들(CORE1~COREn) 중 하나의 코어가 기계 검사 예외 처리기(MCEH)에 도달하고 실행함으로써, 예외 처리가 수행될 수 있다. 예외 처리는 S130 단계 내지 S180 단계를 포함할 수 있다.
S130 단계에서, 기계 검사 예외 처리기(MCEH)는 기계 검사를 수행할 수 있다. 예를 들어, 기계 검사는 메모리 제어기(111) 또는 제1 메모리 모듈(120)이 정상적으로 동작하는지 또는 오동작하는지 판단하는 것을 포함할 수 있다. 기계 검사는 검출된 에러가 치명적 에러(fatal error)인지 또는 재해적인 에러인지(catastrophic error) 판단하는 것을 포함할 수 있다.
예를 들어, 중요한 데이터에서 정정 불가능한 에러가 발생하면, 재해적 에러가 판단될 수 있다. 메모리 시스템(100)의 제어 또는 운용에 필요한 데이터는 중요한 데이터일 수 있다. 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 요청하였고 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 사용할 데이터는 중요한 데이터일 수 있다.
예를 들어, 중요하지 않은 데이터에서 정정 불가능한 에러가 발생하면, 치명적 에러가 판단될 수 있다. 메모리 시스템(100)의 제어 또는 운용과 무관한 데이터는 중요하지 않은 데이터일 수 있다. 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 요청하였고 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 사용하지 않는 데이터는 중요하지 않은 데이터일 수 있다.
S140 단계에서, 정정 불가능한 데이터가 중요한 에러이면, 기계 검사 예외 처리기(MCEH)는 S150 단계를 수행한다. S140 단계에서, 기계 검사 예외 처리기(MCEH)는 재해적 에러(catastrophic error)가 발생하였음을 에러 로그에 기록할 수 있다. 이후에, S160 단계에서, 메모리 시스템(100)의 시스템 리부트(system reboot) 또는 커널 패닉(kernel panic)이 발생할 수 있다.
S140 단계에서, 정정 불가능한 데이터가 중요하지 않은 에러이면, 기계 검사 예외 처리기(MCEH)는 S170 단계를 수행한다. S170 단계에서, 기계 검사 예외 처리기(MCEH)는 치명적 에러(fatal error)가 발생하였음을 에러 로그에 기록할 수 있다.
도 4는 제1 메모리 모듈(120)로부터 데이터를 읽는 예를 보여준다. 도 1 및 도 3을 참조하면, S210 단계에서, 예를 들어 제1 응용(APP1)이 제1 메모리 모듈(120)에 대한 읽기 요청을 메모리 제어기(111)로 전송할 수 있다. 읽기 요청은 운영체제(OS) 및 제1 내지 제n 코어들(CORE1~COREn)을 통해 메모리 제어기(111)로 전달될 수 있다.
S220 단계에서, 읽기 요청에 응답하여, 메모리 제어기(111)는 제1 메모리 모듈(120)에 읽기 명령을 전송할 수 있다. S230 단계에서, 읽기 명령은 제2 타입 메모리(122)에 대한 액세스를 유발할 수 있다. 예를 들어, 읽기 명령에 대응하는 데이터가 제1 타입 메모리(121)에 사상되어 있지 않을 때, 매체 제어기(123)는 해당 데이터를 제2 타입 메모리(122)로부터 읽어 제1 타입 메모리(121)에 사상할 수 있다.
메모리 제어기(111)가 제1 메모리 모듈(120)을 액세스하는 절차는 제3 메모리 모듈(140)을 액세스하는 절차와 동일하다. 예를 들어, 메모리 제어기(111)가 제1 메모리 모듈(120)로 읽기 명령을 전송한 후에 데이터를 수신할 때까지의 시간 조건은 제1 타입 메모리(121 또는 141)의 액세스 속도에 맞추어져 있다.
제2 타입 메모리(122)의 액세스 속도는 제1 타입 메모리(121)의 액세스 속도보다 느리다. 따라서, S240 단계에서, 메모리 제어기(111)의 시간 조건에 따른 시간이 경과할 때까지 제2 타입 메모리(122)로부터 데이터가 읽혀지지 않는 타임 아웃이 발생할 수 있다.
예를 들어, 제1 메모리 모듈(120)은 제1 메인 채널(MCH1)로 데이터를 전송하지 않음에도, 메모리 제어기(111)는 제1 메인 채널(MCH1)의 전압들로부터 데이터를 감지할 수 있다. 이때, 메모리 제어기(111)는 정정 불가능한 에러를 갖는 데이터를 수신한 것으로 판단할 수 있다.
다른 예로서, 시간 조건에 따른 시간이 경과함에 따라, 제1 메모리 모듈(120)은 더미 데이터를 제1 메인 채널(MCH1)로 전송할 수 있다. 메모리 제어기(111)는 제1 메인 채널(MCH1)을 통해 더미 데이터를 수신할 수 있다. 메모리 제어기는 더미 데이터가 정정 불가능한 에러를 갖는 것으로 판단할 수 있다. 예를 들어, 더미 데이터는 특정한 패턴을 갖는 데이터 또는 임의 패턴을 갖는 데이터일 수 있다.
도 5는 제1 메모리 모듈(120)에 대해 예외 처리가 수행되는 예를 보여준다. 예시적으로, 도 5는 도 4의 S240 단계에 후속하는 동작들을 보여준다. 도 1 및 도 5를 참조하면, S250 단계에서, 메모리 제어기(111)는 제1 메모리 모듈(120)로부터 정정 불가능한 에러(UE)를 갖는 데이터를 수신한다.
예를 들어, 위에서 언급된 바와 같이, 매체 제어기(123)는 메모리 제어기(111)로 데이터를 전송하지 않거나 또는 메모리 제어기(111)로 더미 데이터를 전송할 수 있다. 메모리 제어기(111)는 읽은 데이터에 대해 에러 정정 디코딩을 수행하고, 읽혀진 데이터가 정정 불가능한 에러를 가짐을 판단할 수 있다.
정정 불가능한 에러가 검출되면, S260 단계에서, 메모리 제어기(111)는 인터럽트 신호(IRQ)를 출력할 수 있다. 인터럽트 신호(IRQ)는 제1 내지 제n 코어들(CORE1~COREn) 중 적어도 하나의 코어로 전달될 수 있다. 인터럽트 신호(IRQ)는 적어도 하나의 코어를 통해 실행 영역(EA)의 제1 응용(APP1) 또는 운영체제(OS)로 전달될 수 있다.
인터럽트 신호(IRQ)에 응답하여, S270 단계에서, 제1 응용(APP1)으로부터 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)로 콘텍스트 스위칭이 발생할 수 있다. 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 제1 내지 제n 코어들(CORE1~COREn)에 예외(exception)가 발생하여 예외 처리(exception handling)가 필요함을 알리는 예외 방송(exception broadcasting)을 수행할 수 있다.
예를 들어, 예외 방송은 제1 내지 제n 코어들(CORE1~COREn)이 기계 검사 예외 처리기(MCEH)를 실행하도록 호출하는 호출일 수 있다. 예외 방송에 따라, 제1 내지 제n 코어들(CORE1~COREn)은 현재 수행하는 동작들을 중지하고, 기계 검사 예외 처리기(MCEH)에 접근할 수 있다.
예를 들어, 현재 수행하는 동작들은 프로세스들, 쓰레드들, 작업들, 연산들, 일련의 코드들 또는 명령들을 포함할 수 있다. 각 동작은 하나 또는 그보다 많은 중지 포인트를 가질 수 있다. 각 중지 포인트에서, 해당 동작을 수행하는 코어는 동작의 수행을 중지 및 재개하도록 허용될 수 있다.
제1 내지 제n 코어들(CORE1~COREn) 중 하나의 코어는 기계 검사 예외 처리기(MCEH)를 실행하여 예외 처리를 수행할 수 있다. 예외 처리를 수행하는 코어는 군주 코어(monarchy core)일 수 있다. 제1 내지 제n 코어들(CORE1~COREn) 중 군주 코어를 제외한 나머지 코어들은 기계 검사 예외 처리기(MCEH)를 실행하지 않을 수 있다.
메모리 제어기(111)는 제1 메모리 모듈(120)의 제1 타입 메모리(121)를 액세스한다. 제1 타입 메모리(121)는 제2 타입 메모리(122)의 캐시 메모리이다. 제1 메모리 모듈(120)로부터 읽혀진 데이터가 정정 불가능한 것은 제1 타입 메모리(121)에 저장된 해당 데이터가 정정 불가능한 에러를 갖거나 또는 해당 데이터가 제1 타입 메모리(121)에 사상되어 있지 않음을 의미한다.
제1 타입 메모리(121)에 저장된 해당 데이터가 정정 불가능한 에러를 가지면, 제2 타입 메모리(122)에 저장된 해당 데이터를 제1 타입 메모리(121)에 재기입 함으로써 에러가 치유될 수 있다. 해당 데이터가 제1 타입 메모리(121)에 사상되어 있지 않으면, 제2 타입 메모리(122)에 저장된 해당 데이터를 제1 타입 메모리(121)에 사상함으로써 에러가 치유될 수 있다.
즉, 제2 타입 메모리(122)에 대한 액세스가 완료되면, 제1 메모리 모듈(120)로부터 정확한 데이터가 읽혀질 수 있다. 그러나 도 3을 참조하여 설명된 방법에 따르면, 제1 메모리 모듈(120)에서 제2 타입 메모리(122)에 대한 액세스가 발생한 때에 메모리 시스템(100, 도 1 참조)은 커널 패닉 또는 시스템 리부트에 진입할 수 있다.
제1 메모리 모듈(120)에서 제2 타입 메모리(122)에 대한 액세스가 발생한 때에 커널 패닉 또는 시스템 리부트가 발생하는 것을 방지하기 위하여, 본 발명의 실시 예에 따른 메모리 시스템(100)은 제1 메모리 모듈(120)에 대한 예외 처리를 제1 예와 다른 제2 예에 따라 수행할 수 있다.
도 6은 본 발명의 제2 예에 따른 동작 방법을 보여주는 순서도이다. 도 1, 도 5 및 도 6을 참조하면, S310 단계 내지 S330 단계는 도 3의 S110 단계 내 S130 단계와 동일하게 수행될 수 있다. 따라서, S310 단계 내지 S330 단계에 대한 중복되는 설명은 생략된다.
S340 단계에서, 기계 검사 예외 처리기(MCEH)는 제1 메모리 모듈(120)과 연관된 에러가 발생하였음을 에러 로그에 기록할 수 있다. 예를 들어, 기계 검사 예외 처리기(MCEH)는 치명적 에러 또는 재해적 에러를 에러 로그에 기록할 수 있다. 예시적으로, S340 단계는 선택적으로 수행될 수 있다. S340 단계는 수행되거나 또는 수행되지 않고 생략될 수 있다. 예시적으로, S330 단계의 기계 검사에서, 검출된 에러가 치명적 에러인지 재해적 에러인지 판단하는 기능은 생략될 수 있다.
예외 처리가 완료되면, 기계 검사 예외 처리기(MCEH)로부터 제1 응용(APP1)으로 콘텍스트 스위칭이 수행된다. 도 4의 S210 단계에서 설명된 바와 같이, 제1 응용(APP1)은 제1 메모리 모듈(120)에 대해 읽기 요청을 다시 전송할 수 있다.
제1 응용(APP1)으로부터 기계 검사 예외 처리기(MCEH)로의 콘텍스트 스위칭(도 5의 S270 단계)에 제1 시간이 소비될 수 있다. 기계 검사(S330 단계)에 제2 시간이 소비될 수 있다. 기계 검사 예외 처리기(MCEH)로부터 제1 응용(APP1)으로의 콘텍스트 스위칭에 제3 시간이 소비될 수 있다.
제1 시간, 제2 시간, 그리고 제3 시간이 흐르는 동안, 매체 제어기(123)는 읽기 명령(도 4의 S220 단계 참조)에 해당하는 데이터를 제2 타입 메모리(122)로부터 제1 타입 메모리(121)로 사상할 수 있다. 따라서, 제1 응용(APP1)이 읽기 요청을 재전송함에 따라 메모리 제어기(111)가 제1 메모리 모듈(120)에 읽기 명령을 재전송하면, 메모리 제어기(111)는 제1 메모리 모듈(120)로부터 정확한 데이터를 읽을 수 있다.
도 6을 참조하여 설명된 바와 같이, 기계 검사 예외 처리기(MCEH)는 제1 메모리 모듈(120)에 대한 예외 처리 시에, 치명적 에러 또는 재해적 에러를 판단하지 않고, 커널 패닉 또는 시스템 리부트로 진입하지 않는다. 따라서, 제1 메모리 모듈(120)에서 제2 타입 메모리(122)에 대한 액세스가 발생하여도, 메모리 시스템(100)은 커널 패닉 또는 시스템 리부트를 경험하지 않고 제1 메모리 모듈(120)로부터 정확한 데이터를 획득할 수 있다.
예시적으로, 제1 타입 메모리 모듈들(120, 130)에 대해 도 6을 참조하여 설명된 제2 예에 따른 예외 처리가 적용될 수 있다. 또한, 제2 타입 메모리 모듈들(140, 150)에 대해 도 3을 참조하여 설명된 제1 예에 따른 예외 처리가 적용될 수 있다.
도 7은 군주 코어가 할당되는 예를 보여준다. 예시적으로, 제1 내지 제4 코어들(CORE1~CORE4) 중 군주 코어가 할당되는 예가 도 7에 도시된다. 도 5 및 도 7을 참조하면, 제1 내지 제4 코어들(CORE1~CORE4)은 예외 방송(S280 단계)에 따라 현재 수행중인 동작들을 중지할 수 있다.
그러나 제1 내지 제4 코어들(CORE1~CORE4)이 수행중인 동작들의 종류에 따라, 제1 내지 제4 코어들(CORE1~CORE4)이 동작들을 중지할 수 있는 타이밍들은 다를 수 있다. 예를 들어, 제1 내지 제4 코어들(CORE1~CORE4)이 수행중인 쓰레드들의 중지 포인트들이 서로 다를 수 있다.
예시적으로, 제1 내지 제4 코어들(CORE1~CORE4) 중 제1 코어(CORE1)가 가장 먼저 수행중인 동작을 중지하고, 호출에 응답할 수 있다. 가장 먼저 호출에 응답하는 제1 코어(CORE1)는 기계 검사 예외 처리기(MCEH)에 가장 먼저 도달한 것으로 여겨질 수 있다.
기계 검사 예외 처리기(MCEH)에 가장 먼저 도달한 제1 코어(CORE1)가 군주 코어(monarchy core)로 지정(또는 할당)될 수 있다. 제1 코어(CORE1)는 기계 검사 예외 처리기(MCEH)를 실행하여, 도 3 또는 도 6을 참조하여 설명된 예외 처리를 수행할 수 있다.
도 8은 나머지 코어들이 관리되는 제1 예를 보여준다. 도 8을 참조하면, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 예시적으로, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)가 예외 처리를 완료할 때까지 대기할 수 있다.
제2 내지 제4 코어들(CORE2~CORE4)은 대기하는 코어들일 수 있다. 제1 코어(CORE1)가 예외 처리를 완료하면, 제1 내지 제4 코어들(CORE1~CORE4)은 이전에 수행하던 동작들로 복귀(return)할 수 있다. 예를 들어, 예외 처리가 커널 패닉 또는 시스템 리부트 없이 완료된 때에, 제1 내지 제4 코어들(CORE1~CORE4)은 이전에 수행하던 동작들로 복귀할 수 있다.
도 6을 참조하여 설명된 예외 처리와 같이, 예외 처리가 커널 패닉 또는 시스템 리부트 없이 완료되면, 제2 내지 제4 코어들(CORE2~CORE4)이 대기하는 것은 자원들의 낭비를 초래한다. 이를 방지하기 위하여, 본 발명의 실시 예에 따른 메모리 시스템(100)은 대기하는 코어들을 제거하는 새로운 알고리즘을 제공한다.
도 9는 본 발명의 실시 예에 따라 예외 처리를 위해 코어들이 관리되는 예를 보여준다. 도 5 및 도 9를 참조하면, S410 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 예외 방송(S280 단계)을 통해 코어들(CORE1~COREn)을 호출할 수 있다.
S420 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 코어의 도착을 검출할 수 있다. 예를 들어, 특정한 코어가 수행중인 동작을 중지하고 호출에 응답할 때, 특정한 코어가 도착한 것으로 여겨질 수 있다. S430 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어가 첫 번째 코어인지 판단할 수 있다.
S430 단계에서, 도착한 코어가 첫 번째 코어이면, S440 단계가 수행된다. S440 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어를 기계 검사 예외 처리에 할당(또는 지정)할 수 있다. 예를 들어, 도착한 코어는 기계 검사 예외 처리기(MCEH)의 코드들을 실행함으로써 예외 처리를 수행할 수 있다. 예를 들어, 도착한 코어는 도 3 또는 도 6을 참조하여 설명된 방법에 따라 예외 처리를 수행할 수 있다.
S430 단계에서, 도착한 코어가 첫 번째 코어가 아니면, S450 단계가 수행된다. S450 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어를 중지된 동작으로 복귀시킬 수 있다. 도착한 코어는 중지된 동작으로 복귀하여 중지된 동작을 재개할 수 있다.
도 10은 나머지 코어들이 관리되는 제2 예를 보여준다. 예시적으로, 도 7에서 제1 코어(CORE1)가 군주 코어가 지정된 후에 나머지 코어들이 관리되는 예가 도 10에 도시된다. 도 1 및 도 10을 참조하면, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다.
예시적으로, 제2 코어(CORE2)가 제1 코어(CORE1) 다음인 두 번째로 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 제1 코어(CORE1)가 이미 군주 코어로 지정되었음을 인식함에 따라, 제2 코어(CORE2)는 중지된 동작으로 복귀하고, 그리고 중지된 동작을 재개할 수 있다(도 9의 S450 단계 참조). 예를 들어, 제2 코어(CORE2)는 중지된 동작의 중지 포인트로부터, 중지된 동작의 코드들을 실행할 수 있다.
마찬가지로, 제3 및 제4 코어들(CORE3, CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 제1 코어(CORE1)가 이미 군주 코어로 지정되었음을 인식함에 따라, 제3 및 제4 코어들(CORE3, CORE4)은 중지된 동작들로 각각 복귀하고, 그리고 중지된 동작들을 각각 재개할 수 있다(도 9의 S450 단계 참조).
도 6을 참조하여 설명된 바와 같이, 제1 메모리 모듈(120)에 대한 예외 처리 시에, 커널 패닉 또는 시스템 리부트는 발생하지 않는다. 제1 메모리 모듈(120)에 대한 예외 처리가 완료되면, 군주 코어는 중지된 동작으로 복귀한다. 제1 메모리 모듈(120)에 대한 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하지 않으므로, 제2 내지 제4 코어들(CORE2~CORE4)이 예외 처리의 완료를 대기할 필요가 없다.
따라서, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)은 중지된 동작들로 복귀할 수 있다. 제2 내지 제4 코어들(CORE2~CORE4)이 중지된 동작들로 더 일찍 복귀함으로써, 제2 내지 제4 코어들(CORE2~CORE4)의 자원들의 낭비가 방지되고, 메모리 시스템(100)의 성능이 향상된다.
예시적으로, 제1 타입 메모리 모듈들(120, 130)은 데이터를 제2 타입 메모리들(122, 132)에 저장(또는 백업)하며, 매체 제어기들(123, 133)은 제2 타입 메모리들(122, 132)에 대한 별도의 에러 정정 수단들을 구비한다. 따라서, 제1 타입 메모리 모듈들(120, 130)은 에러 없는 데이터를 보장할 수 있다.
즉, 도 6을 참조하여 설명된 바와 같이, 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하지 않는 방법이 제1 타입 메모리 모듈들(120, 130)에 적용될 수 있다. 또한, 도 10을 참조하여 설명된 바와 같이, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)이 중지된 동작들로 복귀하는 방법이 제1 타입 메모리 모듈들(120, 130)에 적용될 수 있다.
반면, 제2 타입 메모리 모듈들(140, 150)은 제1 타입 메모리들(141, 151)만을 구비하며, 제1 타입 메모리들(141, 151)에 대한 자체적인 에러 정정 수단을 구비하지 않을 수 있다. 따라서, 제2 타입 메모리들(141, 151)에 저장된 데이터에서 정정 불가능한 에러가 발생할 수 있다.
즉, 도 3을 참조하여 설명된 바와 같이, 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하는 방법이 제2 타입 메모리 모듈들(140, 150)에 적용될 수 있다. 또한, 도 8을 참조하여 설명된 바와 같이, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)은 커널 패닉 또는 시스템 리부트에 대비하여 대기하는 방법이 제1 타입 메모리 모듈들(120, 130)에 적용될 수 있다.
도 11은 제1 코어(CORE1)가 예외 처리를 수행하는 동안 다른 예외 처리가 발생하는 예를 보여준다. 도 1 및 도 11을 참조하면, 제1 메모리 모듈(120)에서 발생한 정정 불가능한 제1 에러(UE1)에 대해 제1 코어(CORE1)가 예외 처리를 수행하는 동안, 제2 내지 제4 메모리 모듈들(130~150) 중 하나의 메모리 모듈에서 정정 불가능한 제2 에러(UE2)가 발생할 수 있다.
도 5를 참조하여 설명된 바와 같이, 정정 불가능한 제2 에러(UE2)에 대해 예외 방송(S280)이 수행되어, 코어들(CORE1~CORE4)이 호출될 수 있다. 예외 처리를 수행하는 제1 코어(CORE1)는 호출에 응답하지 않을 수 있다. 예외 처리를 수행하지 않는 제2 내지 제4 코어들(CORE2~CORE4)은 호출에 응답할 수 있다.
예를 들어, 제4 코어(CORE4)가 호출에 가장 먼저 응답함으로써, 기계 검사 예외 처리기(MCEH)에 가장 먼저 도달할 수 있다. 따라서, 제4 코어(CORE4)가 정정 불가능한 제2 에러(UE2)에 대한 군주 코어로 지정(또는 할당)될 수 있다. 제4 코어(CORE4)는 정정 불가능한 제2 에러(UE2)에 대해 예외 처리를 수행할 수 있다.
도 12는 도 11의 상태에 후속하여 제1 코어(CORE1)가 예외 처리를 완료하는 예를 보여준다. 도 1 및 도 12를 참조하면, 제4 코어(CORE4)가 정정 불가능한 제2 에러(UE2)에 대해 예외 처리를 수행하는 동안, 제1 코어(CORE1)가 예외 처리를 완료할 수 있다. 예외 처리가 완료되면, 제1 코어(CORE1)는 제4 코어(CORE4)가 예외 처리를 수행하는 것과 무관하게 중지된 동작(또는 이전에 수행하던 동작)으로 복귀할 수 있다.
제4 코어(CORE4)의 예외 처리가 완료될 때까지 대기하지 않고 제1 코어(CORE1)가 중지된 동작으로 복귀하면, 메모리 시스템(100)의 자원 낭비가 더 방지되고 그리고 메모리 시스템(100)의 성능이 더 향상될 수 있다.
도 13은 코어들(CORE1~COREn) 또는 프로세서(110)가 생성하는 에러 신호(CAT_ERR_N)의 제1 예를 보여준다. 도 1 및 도 13을 참조하면, 에러 신호(CAT_ERR_N)는 제1 선(C1) 또는 제2 선(C2)의 형태로 제어될 수 있다.
예를 들어, 메모리 제어기(111)가 정정 불가능한 에러를 검출한 때에, 에러 신호(CAT_ERR_N)는 하이 레벨로부터 로우 레벨로 천이할 수 있다. 정정 불가능한 에러가 재해적 에러가 아닌 치명적 에러이면, 에러 신호(CAT_ERR_N)는 제1 선(C1)과 같이 로우 레벨로부터 하이 레벨로 천이할 수 있다.
정정 불가능한 에러가 재해적 에러이면, 제2 선(C2)과 같이 에러 신호(CAT_ERR_N)는 시스템 리부트가 수행될 때까지 로우 레벨로 유지될 수 있다. 정정 불가능한 에러가 제1 타입 메모리 모듈들(120, 130)에서 발생한 것이면, 도 6을 참조하여 설명된 바와 같이 커널 패닉 또는 시스템 리부트가 발생하지 않는다.
예를 들어, 제1 타입 메모리 모듈들(120, 130)에 대한 정정 불가능한 에러는 치명적 에러 또는 에러 없음으로 처리될 수 있다. 따라서, 제1 선(C1)을 참조하여 설명된 바와 같이 에러 신호(CAT_ERR_N)는 로우 레벨로부터 하이 레벨로 천이할 수 있다.
도 14는 코어들(CORE1~COREn) 또는 프로세서(110)가 생성하는 에러 신호(CAT_ERR_N)의 제2 예를 보여준다. 도 1 및 도 14를 참조하면, 에러 신호(CAT_ERR_N)는 제3 선(C3) 또는 제4 선(C4)의 형태로 제어될 수 있다.
예를 들어, 메모리 제어기(111)가 정정 불가능한 에러를 검출하고 그리고 정정 불가능한 에러가 재해적인 에러가 아닌 치명적 에러일 때, 제3 선(C3)과 같이 에러 신호(CAT_ERR_N)는 하이 레벨을 유지할 수 있다.
메모리 제어기(111)가 정정 불가능한 에러를 검출하고 그리고 정정 불가능한 에러가 재해적인 에러일 때, 제4 선(C4)과 같이 에러 신호(CAT_ERR_N)는 하이 레벨로부터 로우 레벨로 천이할 수 있다. 시스템 리부트가 수행되면, 에러 신호(CAT_ERR_N)는 하이 레벨로 복원될 수 있다.
예를 들어, 제1 타입 메모리 모듈들(120, 130)에 대한 정정 불가능한 에러는 치명적 에러 또는 에러 없음으로 처리될 수 있다. 따라서, 제3 선(C3)을 참조하여 설명된 바와 같이 에러 신호(CAT_ERR_N)는 하이 레벨을 유지할 수 있다.
도 15는 본 발명의 실시 예에 따른 제1 타입 메모리 모듈(200)을 보여주는 블록도이다. 예시적으로, 제1 타입 메모리 모듈(200)은 LRDIMM 표준에 기반한 메모리 모듈일 수 있다. 도 1 및 도 15를 참조하면, 제1 타입 메모리 모듈(200)은 휘발성 메모리 장치(210), 불휘발성 메모리 장치(220), 매체 제어기(230), 그리고 제1 내지 제8 데이터 버퍼들(241~248)을 포함한다.
휘발성 메모리 장치(210)는 제1 내지 제4 휘발성 메모리들(211~214)을 포함한다. 제1 내지 제4 휘발성 메모리들(211~214)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 휘발성 메모리들(211~214)은 동적 랜덤 액세스 메모리들을 포함할 수 있다. 휘발성 메모리 장치(210)는 제1 타입 메모리(121 또는 131)일 수 있다.
불휘발성 메모리 장치(220)는 제1 내지 제4 불휘발성 메모리들(221~224)을 포함할 수 있다. 제1 내지 제4 불휘발성 메모리들(221~224)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 불휘발성 메모리들(221~224)은 불휘발성 메모리 장치(220) 내에서 서로 다른 어드레스들에 의해 식별되는 저장 영역들일 수 있다. 불휘발성 메모리 장치(220)는 제2 타입 메모리(122 또는 132)일 수 있다.
불휘발성 메모리 장치(220)는 플래시 메모리 장치(Flash Memory Device), 상 변화 메모리 장치(Phase Change Memory Device), 강유전체 메모리 장치(Ferroelectric Memory Device), 저항성 메모리 장치(Resistive Memory Deice), 자기 메모리 장치(Magnetoregistive Memory Device)와 같은 다양한 불휘발성 메모리 장치들 중 적어도 하나를 포함할 수 있다.
매체 제어기(230)는 메모리 제어기(111)로부터 제1 명령 및 주소(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)를 수신할 수 있다. 매체 제어기(230)는 제1 내지 제8 데이터 버퍼들(241~248)과 제2 데이터 신호들(DQ2)을 통신할 수 있다. 매체 제어기(230)는 제1 명령 및 주소(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)에 따라, 휘발성 메모리 장치(210) 또는 불휘발성 메모리 장치(220)를 액세스할 수 있다.
매체 제어기(230)는 제2 명령 및 주소(CA2), 제2 클럭 신호(CK2), 그리고 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(210)로 전송하고, 휘발성 메모리 장치(210)와 제3 데이터 신호들(DQ3)을 통신할 수 있다. 매체 제어기(230)는 제3 명령 및 주소(CA3), 제3 클럭 신호(CK3), 그리고 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(220)로 전송하고, 불휘발성 메모리 장치(220)와 제4 데이터 신호들(DQ4)을 통신할 수 있다.
예시적으로, 제1 명령 및 주소(CA1), 제2 명령 및 주소(CA2), 그리고 제3 명령 및 주소(CA3)는 서로 다른 포맷들을 가질 수 있다. 다른 예로서, 제1 명령 및 주소(CA1), 제2 명령 및 주소(CA2), 그리고 제3 명령 및 주소(CA3) 중 적어도 두 개는 동일한 포맷들을 가질 수 있다. 예를 들어, 매체 제어기(230)가 휘발성 메모리 장치(210)와 통신하는 포맷과 불휘발성 메모리 장치(220)와 통신하는 포맷은 서로 다를 수 있다.
매체 제어기(230)는 제1 버퍼 명령(CMD_B1)을 전송하여 제1 내지 제4 데이터 버퍼들(241~244)을 제어할 수 있다. 매체 제어기(230)는 제2 버퍼 명령(CMD_B2)을 전송하여 제5 내지 제8 데이터 버퍼들(245~248)을 제어할 수 있다.
제1 내지 제8 데이터 버퍼들(241~248)은 데이터 스트로브 신호들(DQS)과 동기되어 메모리 제어기(111)와 제1 데이터 신호들(DQ1)을 통신할 수 있다. 제1 내지 제8 데이터 버퍼들(241~248)은 메모리 제어기(111)로부터 수신되는 제1 데이터 신호들(DQ1)을 제2 데이터 신호들(DQ2)로서 매체 제어기(230)로 전달할 수 있다.
제1 내지 제8 데이터 버퍼들(241~248)은 매체 제어기(230)로부터 수신되는 제2 데이터 신호들(DQ2)을 제1 데이터 신호들(DQ1)로서 메모리 제어기(111)로 전달할 수 있다. 제1 내지 제8 데이터 버퍼들(241~248)은 서로 분리된 패키지들로 형성될 수 있다.
예시적으로, 휘발성 메모리 장치(210)는 불휘발성 메모리 장치(220)의 캐시 메모리로 사용될 수 있다. 불휘발성 메모리 장치(220)의 저장 공간 중 일부가 휘발성 메모리 장치(210)에 사상될 수 있다.
메모리 제어기(111)로부터 수신되는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있을 때, 즉 캐시 히트가 발생할 때, 매체 제어기(230)는 휘발성 메모리 장치(210)에 제2 명령 및 주소(CA2)를 전달할 수 있다. 휘발성 메모리 장치(210)는 제2 명령 및 주소(CA2)에 따라 쓰기 또는 읽기를 수행할 수 있다.
메모리 제어기(111)로부터 수신되는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있지 않을 때, 즉 캐시 미스가 발생할 때, 매체 제어기(230)는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간을 휘발성 메모리 장치(210)에 사상할 수 있다.
예를 들어, 불휘발성 메모리 장치(220)의 제1 저장 공간과 연관된 제2 저장 공간을 휘발성 메모리 장치(210)에 확보할 수 있다. 휘발성 메모리 장치(210)에 저장 공간이 부족하면, 매체 제어기(230)는 휘발성 메모리 장치(210)에 사상된 다른 저장 공간을 버리거나 또는 다른 저장 공간을 불휘발성 메모리 장치(220)에 반환함으로써, 휘발성 메모리 장치(210)에 저장 공간을 확보할 수 있다.
불휘발성 메모리 장치(220)의 제1 저장 공간에 데이터가 저장되어 있으면, 매체 제어기(230)는 제1 저장 공간의 데이터를 휘발성 메모리 장치(210)의 제2 저장 공간으로 복사할 수 있다. 이후에, 매체 제어기(230)는 제2 명령 및 주소(CA2)를 휘발성 메모리 장치(210)로 전달할 수 있다. 휘발성 메모리 장치(210)는 제2 명령 및 주소(CA2)에 응답하여 제2 저장 공간에 대해 쓰기 또는 읽기를 수행할 수 있다.
휘발성 메모리 장치(210)에서 제2 저장 공간을 해제하고자 할 때, 매체 제어기(230)는 제2 저장 공간이 오염되었는지(dirty) 체크할 수 있다. 예를 들어, 제2 저장 공간에 대해 쓰기가 수행된 때에, 제2 저장 공간은 오염된(dirty) 것으로 판단될 수 있다.
제2 저장 공간이 오염되지 않았으면(not dirty), 매체 제어기(230)는 제2 저장 공간의 데이터를 버림으로써 제2 저장 공간을 해제할 수 있다. 제2 저장 공간이 오염되었으면(dirty), 매체 제어기(230)는 제2 저장 공간의 데이터를 불휘발성 메모리 장치(220)에 기입함으로써 제2 저장 공간을 반환할 수 있다. 제2 저장 공간을 반환한 후에, 매체 제어기(230)는 제2 저장 공간을 버림으로써 제2 저장 공간을 해제할 수 있다.
다른 예로서, 휘발성 메모리 장치(210) 및 불휘발성 메모리 장치(220)는 메모리 제어기(111)에 의해 직접 액세스될 수 있다. 예를 들어, 제1 명령 및 주소(CA1) 또는 제1 제어 신호(CTRL1)가 휘발성 메모리 장치(210)를 가리킬 때, 매체 제어기(230)는 제2 명령 및 주소(CA2), 제2 클럭 신호(CK2) 또는 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(210)에 전달할 수 있다.
제1 명령 및 주소(CA1) 또는 제1 제어 신호(CTRL1)가 불휘발성 메모리 장치(220)를 가리킬 때, 매체 제어기(230)는 제3 명령 및 주소(CA3), 제3 클럭 신호(CK3) 또는 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(220)에 전달할 수 있다.
예시적으로, 휘발성 메모리들, 불휘발성 메모리들, 그리고 데이터 버퍼들의 수는 한정되지 않는다. 휘발성 메모리들 또는 불휘발성 메모리들의 수는 데이터 버퍼들의 수와 동일할 수 있다. 데이터 버퍼들의 수는 9개로 변경될 수 있다.
매체 제어기(230)는 불휘발성 메모리 장치(220)의 메타 저장 영역에 논리 주소들 및 물리 주소들 사이의 사상 정보를 저장할 수 있다. 메모리 제어기(111)로부터 수신되는 제1 명령 및 주소(CA1)는 불휘발성 메모리 장치(220)의 논리 주소들에 기반할 수 있다.
매체 제어기(230)가 제1 명령 및 주소(CA1)에 따라 불휘발성 메모리 장치(220)를 액세스할 때, 매체 제어기(230)는 사상 정보에 따라 논리 주소들을 물리 주소들로 변환할 수 있다. 매체 제어기(230)는 변환된 물리 주소들을 이용하여 불휘발성 메모리 장치(220)를 액세스할 수 있다. 즉, 제3 명령 및 주소(CA3)는 물리 주소들에 기반할 수 있다.
불휘발성 메모리 장치(220)의 휘발성 메모리 장치(210)에 대한 캐시 할당은 논리 주소들 또는 물리 주소들에 따라 수행될 수 있다. 즉, 제2 명령 및 주소(CA2)는 논리 주소들 또는 물리 주소들에 기반할 수 있다. 매체 제어기(230)는 논리 주소들 또는 물리 주소들을 이용하여 캐시 히트 또는 캐시 미스를 판단할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 메모리 시스템
110: 프로세서
111: 메모리 제어기
112: 캐시 메모리
EA: 실행 영역
OS: 운영체제
MCEH: 기계 검사 예외 처리기
120: 제1 메모리 모듈
121: 제1 타입 메모리
122: 제2 타입 메모리
123: 매체 제어기
125: 직렬 프레즌스 검출 장치
130: 제2 메모리 모듈
131: 제1 타입 메모리
132: 제2 타입 메모리
133: 매체 제어기
135: 직렬 프레즌스 검출 장치
140: 제3 메모리 모듈
141: 제1 타입 메모리
145: 직렬 프레즌스 검출 장치
150: 제4 메모리 모듈
151: 제1 타입 메모리
155: 직렬 프레즌스 검출 장치
160: 루트 컴플렉스
170: 스토리지 장치

Claims (20)

  1. 코어들 및 메모리 제어기를 포함하는 프로세서; 그리고
    상기 메모리 제어기와 통신하도록 구성되는 제1 반도체 메모리 모듈을 포함하고,
    상기 제1 반도체 메모리 모듈은 불휘발성 메모리, 랜덤 액세스 메모리, 그리고 매체 제어기를 포함하고, 상기 매체 제어기는 상기 불휘발성 메모리의 저장 공간을 상기 프로세서에 제공하고 그리고 상기 랜덤 액세스 메모리를 상기 제1 반도체 메모리 모듈의 상기 불휘발성 메모리의 캐시 메모리로 사용하도록 구성되고,
    상기 메모리 제어기가 상기 제1 반도체 메모리 모듈로부터 제1 데이터를 읽을 때에 제1 정정 불가능한(uncorrectable) 에러가 검출되면, 상기 코어들은 호출을 수신하여 기계 검사와 연관된 제1 예외 처리를 수행하고, 그리고
    상기 제1 정정 불가능한 에러가 상기 불휘발성 메모리에 저장된 상기 제1 데이터가 상기 랜덤 액세스 메모리에 없는 것과 연관되는 것에 응답하여, 상기 코어들 중 제1 군주 코어는 상기 제1 예외 처리를 수행하고 그리고 상기 코어들 중 나머지 코어들은 이전에 수행하던 나머지 동작들로 복귀하고,
    상기 군주 코어가 상기 제1 예외 처리를 수행하는 동안, 상기 매체 제어기는 상기 랜덤 액세스 메모리를 상기 제1 데이터에 대응하는 상기 불휘발성 메모리의 부분에 사상하도록 구성되는 메모리 시스템.
  2. 제1항에 있어서,
    상기 코어들 중 상기 제1 예외 처리에 대한 상기 호출에 응답하여 상기 예외 처리를 수행하기 위해 수행 중인 동작을 가장 먼저 중지한 코어가 상기 제1 군주 코어로 지정되는 메모리 시스템.
  3. 제2항에 있어서,
    상기 나머지 코어들은 상기 제1 군주 코어가 존재함을 인식함에 따라 상기 이전에 수행하던 나머지 동작들로 복귀하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 메모리 제어기와 통신하도록 구성되는 제2 반도체 메모리 모듈을 더 포함하고,
    상기 제1 군주 코어가 상기 제1 예외 처리를 수행하는 동안, 상기 메모리 제어기가 상기 제2 반도체 메모리 모듈로부터 제2 데이터를 읽을 때에 제2 정정 불가능한 에러가 검출되면, 상기 코어들은 제2 예외 처리를 더 수행하도록 호출되는 메모리 시스템.
  5. 제4항에 있어서,
    상기 나머지 코어들 중 상기 제2 예외 처리에 대한 상기 호출에 응답하여 상기 예외 처리를 수행하기 위해 수행 중인 동작을 가장 먼저 중지한 코어가 상기 제2 예외 처리를 수행하는 제2 군주 코어로 지정되는 메모리 시스템.
  6. 제5항에 있어서,
    상기 나머지 코어들 중 상기 제2 군주 코어를 제외한 다른 나머지 코어들은 상기 제2 군주 코어가 존재함을 인식함에 따라 이전에 수행하던 다른 나머지 동작들로 복귀하는 메모리 시스템.
  7. 제5항에 있어서,
    상기 제2 군주 코어가 상기 제2 예외 처리를 수행하는 동안 상기 제1 군주 코어가 상기 제1 예외 처리를 완료하면, 상기 제1 군주 코어는 이전에 수행하던 동작으로 복귀하는 메모리 시스템.
  8. 제1항에 있어서,
    제2 랜덤 액세스 메모리를 포함하는 제2 반도체 메모리 모듈을 더 포함하고,
    제2 정정 불가능한 에러가 상기 메모리 제어기의 상기 제2 반도체 메모리 모듈에 대한 액세스에 기반하여 생성되는 것에 응답하여, 상기 코어들 중 제2 군주 코어는 상기 제1 예외 처리와 다른 제2 예외 처리를 수행하는 메모리 시스템.
  9. 제1항에 있어서,
    상기 메모리 제어기가 상기 제1 데이터를 읽을 때에 상기 매체 제어기가 상기 불휘발성 메모를 액세스하면, 상기 제1 정정 불가능한 에러가 검출되는 메모리 시스템.
  10. 제9항에 있어서,
    상기 제1 군주 코어가 상기 제1 예외 처리를 수행하는 동안, 상기 매체 제어기가 상기 불휘발성 메모리에 대한 액세스를 완료하는 메모리 시스템.
  11. 코어들 및 메모리 제어기를 포함하는 프로세서; 그리고
    상기 메모리 제어기와 통신하도록 구성되고, 불휘발성 메모리 및 제1 랜덤 액세스 메모리를 포함하는 제1 반도체 메모리 모듈을 포함하고,
    상기 메모리 제어기가 상기 제1 반도체 메모리 모듈로부터 제1 데이터를 읽을 때에 제1 정정 불가능한 에러가 검출되면, 상기 코어들 중 제1 군주 코어는 상기 제1 정정 불가능한 에러에 대해 제1 기계 검사를 수행하고 그리고 상기 제1 정정 불가능한 에러가 시스템 리부트 또는 커널 패닉을 가리키더라도 이전에 수행하던 동작으로 복귀하는 메모리 시스템.
  12. 제11항에 있어서,
    상기 제1 기계 검사가 수행된 후, 상기 메모리 제어기는 상기 제1 반도체 메모리 모듈로부터 상기 제1 데이터를 다시 읽는 메모리 시스템.
  13. 제11항에 있어서,
    제2 랜덤 액세스 메모리를 포함하는 제2 반도체 메모리 모듈을 더 포함하고,
    상기 메모리 제어기가 상기 제2 반도체 메모리 모듈로부터 제2 데이터를 읽을 때에 제2 정정 불가능한 에러가 검출되면, 상기 코어들 중 제2 군주 코어는 상기 제2 정정 불가능한 에러에 대해 상기 제1 기계 검사와 다른 제2 기계 검사를 수행하고, 그리고 상기 메모리 시스템은 커널 패닉 또는 시스템 리부트로 진입하는 메모리 시스템.
  14. 제11항에 있어서,
    상기 제1 반도체 메모리 모듈은 상기 불휘발성 메모리 및 상기 제1 랜덤 액세스 메모리를 제어하는 매체 제어기를 더 포함하고,
    상기 제1 군주 코어가 상기 제1 기계 검사를 수행하는 동안, 상기 매체 제어기는 상기 불휘발성 메모리로부터 상기 제1 데이터를 읽어 상기 제1 랜덤 액세스 메모리에 저장하는 메모리 시스템.
  15. 제11항에 있어서,
    상기 코어들 중 상기 제1 정정 불가능한 에러가 검출되는 것에 가장 먼저 응답한 코어가 상기 제1 군주 코어로 지정되는 메모리 시스템.
  16. 제15항에 있어서,
    상기 코어들 중 상기 제1 군주 코어를 제외한 나머지 코어들은 상기 제1 군주 코어가 존재함을 감지함에 따라 이전에 수행하던 나머지 동작들로 복귀하는 메모리 시스템.
  17. 제11항에 있어서,
    상기 제1 정정 불가능한 에러는 상기 불휘발성 메모리에 저장된 상기 제1 데이터의 캐시 미스와 연관되는 메모리 시스템.
  18. 코어들 및 메모리 제어기를 포함하는 프로세서, 제1 타입의 제1 반도체 메모리 모듈, 그리고 상기 제1 타입과 다른 제2 타입의 제2 반도체 메모리 모듈을 포함하는 메모리 시스템의 동작 방법에 있어서:
    상기 메모리 제어기가 상기 반도체 메모리 모듈로부터 데이터를 읽을 때에 제1 정정 불가능한 에러를 검출하는 단계;
    상기 코어들이 상기 제1 정정 불가능한 에러에 대한 예외 처리를 위해 현재 수행하는 동작들을 중지하는 단계;
    상기 코어들 중 군주 코어가 상기 예외 처리를 시작하는 단계;
    상기 예외 처리가 완료되기 전에, 상기 코어들 중 상기 군주 코어를 제외한 나머지 코어들이 상기 중지된 동작들 중 대응하는 나머지 동작들로 복귀하는 단계;
    상기 제1 정정 불가능한 에러가 상기 제1 반도체 메모리 모듈의 불휘발성 메모리의 액세스에 대응하는 것에 응답하여, 상기 제1 정정 불가능한 에러가 시스템 리부트 또는 커널 패닉에 대응하더라도 상기 예외 처리가 완료되면, 상기 군주 코어가 상기 중지된 동작들 중 대응하는 동작으로 복귀하는 단계;
    제2 정정 불가능한 에러를 검출하는 단계; 그리고
    상기 제2 정정 불가능한 에러가 상기 제2 반도체 메모리 모듈에 대한 액세스에 기반하여 생성된 것에 응답하여, 상기 시스템 리부트 또는 상기 커널 패닉에 진입하는 단계를 포함하고,
    상기 제1 반도체 메모리 모듈은 상기 불휘발성 메모리 및 랜덤 액세스 메모리를 포함하고, 그리고
    상기 랜덤 액세스 메모리는 상기 제1 반도체 메모리 모듈의 상기 불휘발성 메모리의 캐시 메모리로 사용되는 동작 방법.
  19. 제18항에 있어서,
    상기 코어들 중 상기 예외 처리에 가장 먼저 응답하는 코어가 상기 군주 코어로 지정되는 동작 방법.
  20. 제18항에 있어서,
    상기 제1 정정 불가능한 에러가 상기 제1 반도체 메모리 모듈의 상기 불휘발성 메모리의 액세스에 대응하는 것에 응답하여, 상기 군주 코어가 상기 예외 처리를 완료한 후에 상기 메모리 제어기가 상기 제1 반도체 메모리 모듈로부터 상기 데이터를 읽는 것을 재시도하는 단계를 더 포함하는 동작 방법.
KR1020180040148A 2018-03-27 2018-04-06 메모리 시스템 및 메모리 시스템의 동작 방법 KR102538679B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020180040148A KR102538679B1 (ko) 2018-04-06 2018-04-06 메모리 시스템 및 메모리 시스템의 동작 방법
US16/164,103 US11157342B2 (en) 2018-04-06 2018-10-18 Memory systems and operating methods of memory systems
US16/218,720 US10990463B2 (en) 2018-03-27 2018-12-13 Semiconductor memory module and memory system including the same
CN201910193535.8A CN110347611B (zh) 2018-04-06 2019-03-14 存储器系统和存储器系统的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180040148A KR102538679B1 (ko) 2018-04-06 2018-04-06 메모리 시스템 및 메모리 시스템의 동작 방법

Publications (2)

Publication Number Publication Date
KR20190117077A KR20190117077A (ko) 2019-10-16
KR102538679B1 true KR102538679B1 (ko) 2023-06-02

Family

ID=68096502

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180040148A KR102538679B1 (ko) 2018-03-27 2018-04-06 메모리 시스템 및 메모리 시스템의 동작 방법

Country Status (3)

Country Link
US (1) US11157342B2 (ko)
KR (1) KR102538679B1 (ko)
CN (1) CN110347611B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11782602B2 (en) 2021-06-24 2023-10-10 Western Digital Technologies, Inc. Providing priority indicators for NVMe data communication streams
US11960730B2 (en) * 2021-06-28 2024-04-16 Western Digital Technologies, Inc. Distributed exception handling in solid state drives
JP2023135390A (ja) * 2022-03-15 2023-09-28 キオクシア株式会社 情報処理装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779065B2 (en) 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US20140223226A1 (en) 2011-12-22 2014-08-07 Theodros Yigzaw Apparatus and method for detecting and recovering from data fetch errors
US20160357665A1 (en) 2015-06-08 2016-12-08 Samsung Electronics Co., Ltd. Nonvolatile memory module and operation method thereof

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447943B2 (en) 2003-05-28 2008-11-04 Hewlett-Packard Development Company, L.P. Handling memory errors in response to adding new memory to a system
US7337371B2 (en) 2003-12-30 2008-02-26 Intel Corporation Method and apparatus to handle parity errors in flow control channels
US8327076B2 (en) 2009-05-13 2012-12-04 Seagate Technology Llc Systems and methods of tiered caching
KR101152108B1 (ko) 2010-04-19 2012-07-03 (주)다윈텍 하이브리드 하드 디스크 드라이브 장치 및 그 리드/라이트 제어 방법
US20120017116A1 (en) * 2010-07-16 2012-01-19 Kabushiki Kaisha Toshiba Memory control device, memory device, and memory control method
US8365015B1 (en) * 2010-08-09 2013-01-29 Nvidia Corporation Memory-based error recovery
JP2012103826A (ja) * 2010-11-09 2012-05-31 Fujitsu Ltd キャッシュメモリシステム
US9058275B2 (en) * 2011-06-10 2015-06-16 International Business Machines Corporation Data returned responsive to executing a start subchannel instruction
US8793556B1 (en) * 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US9201784B2 (en) * 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US9535782B2 (en) * 2014-04-16 2017-01-03 Intel Corporation Method, apparatus and system for handling data error events with a memory controller
US10002043B2 (en) * 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US20160103613A1 (en) 2014-10-13 2016-04-14 Microsoft Corporation Tagging for storage device regions
US20160188414A1 (en) * 2014-12-24 2016-06-30 Intel Corporation Fault tolerant automatic dual in-line memory module refresh
WO2016114749A1 (en) 2015-01-12 2016-07-21 Hewlett Packard Enterprise Development Lp Handling memory errors in memory modules that include volatile and non-volatile components
KR102290988B1 (ko) * 2015-06-08 2021-08-19 삼성전자주식회사 불휘발성 메모리 모듈 및 그것의 동작 방법
US20170060434A1 (en) 2015-08-27 2017-03-02 Samsung Electronics Co., Ltd. Transaction-based hybrid memory module
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
KR102310117B1 (ko) 2017-07-07 2021-10-08 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US10776267B2 (en) 2017-12-11 2020-09-15 Red Hat, Inc. Mirrored byte addressable storage
US20190294548A1 (en) * 2018-03-21 2019-09-26 Macom Technology Solutions Holdings, Inc. Prefetch module for high throughput memory transfers

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779065B2 (en) 2001-08-31 2004-08-17 Intel Corporation Mechanism for interrupt handling in computer systems that support concurrent execution of multiple threads
US20140223226A1 (en) 2011-12-22 2014-08-07 Theodros Yigzaw Apparatus and method for detecting and recovering from data fetch errors
US20160357665A1 (en) 2015-06-08 2016-12-08 Samsung Electronics Co., Ltd. Nonvolatile memory module and operation method thereof

Also Published As

Publication number Publication date
US20190310905A1 (en) 2019-10-10
US11157342B2 (en) 2021-10-26
KR20190117077A (ko) 2019-10-16
CN110347611B (zh) 2023-07-28
CN110347611A (zh) 2019-10-18

Similar Documents

Publication Publication Date Title
KR102505913B1 (ko) 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템
EP2348413B1 (en) Controlling memory redundancy in a system
CN110109612B (zh) 存储器模块及其操作方法
US10990463B2 (en) Semiconductor memory module and memory system including the same
US6505305B1 (en) Fail-over of multiple memory blocks in multiple memory modules in computer system
US8645811B2 (en) System and method for selective error checking
JP5624583B2 (ja) プログラム、計算処理装置、メモリ管理方法および計算機
EP3007070A1 (en) Memory system, memory access request processing method and computer system
KR102538679B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20230333774A1 (en) Buffer optimization for solid-state drives
US20180039523A1 (en) Information processing system that determines a memory to store program data for a task carried out by a processing core
CN110858187A (zh) 具有分布式信箱结构的多处理器系统及其处理器错误检查方法
US20220245066A1 (en) Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
WO2024078342A1 (zh) 内存交换方法、装置、计算机设备及存储介质
US10776192B2 (en) Memory store error check
KR102538253B1 (ko) 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템
KR102581318B1 (ko) 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템
KR102549584B1 (ko) 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법
KR20190052490A (ko) 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법
US20230376427A1 (en) Memory system and computing system including the same
KR20220138324A (ko) 지속성 지원 방법 및 컴퓨팅 장치
KR0119905B1 (ko) 다중 프로세서 시스템의 메모리에 사용된 다단 입력 큐의 제어 방법
CN117971110A (zh) 基于开放通道固态盘的数据存储方法、装置、设备及介质
JPH05233440A (ja) バッファ機能を備えたデータ転送方式
CN117075795A (zh) 存储器系统以及包括其的计算系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right