KR20170131797A - 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법 - Google Patents

메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법 Download PDF

Info

Publication number
KR20170131797A
KR20170131797A KR1020160062280A KR20160062280A KR20170131797A KR 20170131797 A KR20170131797 A KR 20170131797A KR 1020160062280 A KR1020160062280 A KR 1020160062280A KR 20160062280 A KR20160062280 A KR 20160062280A KR 20170131797 A KR20170131797 A KR 20170131797A
Authority
KR
South Korea
Prior art keywords
tag
cache
memory module
error
unmatch
Prior art date
Application number
KR1020160062280A
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 삼성전자주식회사
Priority to KR1020160062280A priority Critical patent/KR20170131797A/ko
Priority to US15/479,795 priority patent/US10019367B2/en
Priority to CN201710357927.4A priority patent/CN107423230B/zh
Publication of KR20170131797A publication Critical patent/KR20170131797A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • 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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Abstract

본 발명에 따른 컴퓨팅 시스템의 방법은, 상기 프로세서에서 상기 메모리 모듈로 커맨드 및 어드레스를 출력하는 단계, 상기 메모리 모듈로부터 상기 어드레스에 대응하는 태그와 상기 메모리 모듈에 저장된 태그를 비교한 결과들을 지시하는 매치/언매치 비트들을 수신하는 단계, 상기 프로세서에서 다수결을 이용하여 상기 매치/언매치 비트들로부터 캐시 히트/미쓰를 판별하는 단계, 및 상기 프로세서에서 상기 판별된 캐시 히트/미쓰 정보를 상기 메모리 모듈로 출력하는 단계를 포함할 수 있다.

Description

메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법{MEMORY MODULE, COMPUTING SYSTEM HAVING THE SAME, AND METHOD FOR TESTING TAG ERROR THEREOF}
본 발명은 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법에 관한 것이다.
현재 사용되는 컴퓨팅 시스템의 다양한 인터페이스와 호환 가능한 비휘발성 메모리에 대한 연구가 이루어지고 있다. 즉, 플래시 메모리를 메인 메모리(혹은, 워킹 메모리)와 동일한 슬롯이나 채널에 장착하여 데이터 저장 장치나 혹은 워킹 메모리로 사용하려는 시도들이 이루어지고 있다. 이 경우에는 종래에 사용하던 휘발성 램(예를 들면, DRAM)과의 호환성이 고려되어야 한다. 휘발성 램과의 호환성을 유지하면서도 최상의 데이터 신뢰성(data integrity), 저전력 특성을 제공할 수 있는 기술이 필요한 실정이다.
본 발명의 목적은 신규한 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리, 상기 적어도 하나의 비휘발성 메모리의 캐시 기능을 수행하는 메모리 모듈, 및 상기 적어도 하나의 비휘발성 메모리 및 상기 메모리 모듈을 제어하는 프로세서를 갖는 컴퓨팅 시스템의 방법은, 상기 프로세서에서 상기 메모리 모듈로 커맨드 및 어드레스를 출력하는 단계, 상기 메모리 모듈로부터 상기 어드레스에 대응하는 태그와 상기 메모리 모듈에 저장된 태그를 비교한 결과들을 지시하는 매치/언매치 비트들을 수신하는 단계, 상기 프로세서에서 다수결을 이용하여 상기 매치/언매치 비트들로부터 캐시 히트/미쓰를 판별하는 단계, 및 상기 프로세서에서 상기 판별된 캐시 히트/미쓰 정보를 상기 메모리 모듈로 출력하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 커맨드는 읽기 커맨드이고, 상기 캐시 히트/미쓰 정보가 캐시 히트를 지시할 때, 상기 프로세서에서 상기 메모리 모듈로부터 데이터를 수신하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 커맨드는 읽기 커맨드이고, 상기 캐시 히트/미쓰 정보가 캐시 미쓰를 지시할 때, 상기 어드레스에 응답하여 상기 적어도 하나의 비휘발성 메모리로부터 데이터를 읽는 단계, 및 상기 프로세서에서 상기 읽혀진 데이터를 상기 메모리 모듈을 경유하여 수신하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈은 상기 태그 및 상기 태그에 대응하는 데이터를 저장하는 복수의 캐시 디램들을 포함하고, 상기 복수의 캐시 디램들 각각은 상기 어드레스에 대응하는 태그와 저장된 태그를 비교하고, 상기 비교 결과에 따라 매치/언매치 비트를 출력하는 태그 비교기를 포함할 수 있다.
실시 예에 있어서, 상기 매치/언매치 비트들에 관련된 매치 비트 카운트가 0보다 크고 언매치 비트 카운트가 0보다 큰 지를 판별하는 단계, 상기 매치 비트 카운트가 0 이거나 상기 언매치 비트 카운트가 0일 때, 태그 에러가 존재하지 않는다고 판별하는 단계, 및 상기 매치 비트 카운트가 0 보다 크고, 상기 언매치 비트 카운트가 0보다 클 때, 태그 에러가 존재한다고 판별하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 쓰기 동작 혹은 읽기 동작시 태그 에러가 존재하지 않는 캐시 디램의 위치 정보를 이용하여 태그 에러가 존재하는 캐시 디램을 접근하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 태그 에러가 존재하지 않은 캐시 디램의 위치 정보와 패리티를 이용하여 태그 에러가 존재하는 캐시 디램의 태그 에러를 정정하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈에서 쓰기 동작시 태그 에러 검출 및 정정하기 전까지 데이터를 버퍼링하는 단계, 및 상기 태그 에러를 정정한 뒤 상기 버퍼링된 데이터를 쓰는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈은 상기 데이터, 혹은 메타데이터에 대응하는 패리티를 저장하고, 상기 메타데이터는 상기 태그에 대응하는 캐시의 유효성 비트 혹은 더티 비트를 포함하고, 상기 프로세서에서 상기 패리티를 이용하여 상기 데이터 혹은 상기 메타데이터의 에러를 저장하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리는 상기 프로세서에 DDR-T(double data rate transaction) 인터페이스에 의해 연결될 수 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리, 상기 적어도 하나의 비휘발성 메모리의 캐시 기능을 수행하는 메모리 모듈; 및 상기 적어도 하나의 비휘발성 메모리 및 상기 메모리 모듈을 제어하는 프로세서를 갖는 컴퓨팅 시스템의 태그 에러 테스트 방법은, 상기 메모리 모듈의 복수의 캐시 디램들 각각에서 어드레스에 대응하는 태그 및 대응하는 캐시 디램에 저장된 태그를 비교한 결과로써의 매치/언매치 비트를 발생하는 단계, 매치 비트 카운트가 0보다 크고 언매치 비트 카운트가 0보다 큰 지를 판별하는 단계, 및 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 클 때, 다수결을 이용하여 매치/언매치 비트들로부터 캐시 히트/미쓰를 판별하는 단계를 포함할 수 있다.
실시 예에 있어서, 상기 프로세서의 메모리 제어기에서 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 큰 지를 판별할 수 있다.
실시 예에 있어서, 상기 메모리 모듈에서 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트가 카운트가 0보다 큰 지를 판별할 수 있다.
실시 에에 있어서, 상기 매치 비트 카운트가 0이거나 상기 언매치 비트 카운트가 0일 때, 태그 에러가 존재하지 않는다고 판별하는 단계를 더 포함할 수 있다.
실시 예에 있어서, 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 클 때, 태그 에러가 존재한다고 판별하는 단계, 및 상기 태그 에러가 존재할 때, 태그 에러가 존재하지 않는 캐시 디램의 위치 정보를 이용하여 상기 태그 에러가 존재하는 캐시 디램에 저장된 태그의 에러를 정정하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 모듈은, 태그 및 상기 태그에 대응하는 데이터를 저장하는 복수의 캐시 디램들, 및 커맨드 및 어드레스를 입력 받고, 상기 복수의 캐시 디램들을 제어하는 메모리 모듈 제어 장치를 포함하고, 상기 복수의 캐시 디램들 각각은, 상기 저장된 태그와 상기 어드레스에 대응하는 태그를 비교하고, 상기 비교결과에 대응하는 매치/언매치 비트를 출력하는 태그 비교기, 및 캐시 히트/미쓰 정보에 응답하여 상기 커맨드에 대응하는 데이터를 출력하는 버퍼 회로를 포함하고, 상기 캐시 히트/미쓰 정보는 상기 복수의 캐시 디램들로부터 출력된 매치/언매치 비트들에 대한 다수결에 따라 결정된 값이다.
실시 예에 있어서, 상기 복수의 캐시 디램들 각각은, 상기 태그, 상기 데이터, 혹은 메타데이터에 대응하는 패리티를 저장하고, 상기 패리티를 이용하여 상기 태그, 상기 데이터, 혹은 상기 메타데이터를 정정하는 에러 정정 로직을 포함할 수 있다.
실시 예에 있어서, 다수결에 의해 상기 매치/언매치 비트들로부터 태그 에러를 검출하고, 태그 에러 검출된 캐시 디램의 에러 정정 로직은, 에러 정정이 가능할 때, 상기 태그 에러를 정정할 수 있다.
실시 예에 있어서, 다수결에 의해 상기 매치/언매치 비트들로부터 태그 에러를 검출하고, 태그 에러 검출된 캐시 디램의 에러 정정 로직은, 에러 정정이 가능하지 않을 때, 태그 에러 정보를 외부로 출력할 수 있다.
실시 예에 있어서, 상기 캐시 히트/미쓰 정보는 외부로부터 수신하거나, 내부적으로 발생될 수 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 다수결을 이용하여 매치/언매치 비트들로부터 캐시 히트/미쓰 정보를 발생하는 프로세서, 및 제 1 메모리 채널을 통하여 상기 프로세서에 연결된 메모리 모듈을 포함하고, 상기 메모리 모듈은, 태그 및 데이터를 저장하는 복수의 캐시 디램들, 및 커맨드 및 어드레스를 입력 받고, 상기 복수의 캐시 디램들을 제어하는 메모리 모듈 제어 장치를 포함하고, 상기 복수의 캐시 디램들 각각은, 상기 저장된 태그와 상기 어드레스에 대응하는 태그를 비교하고, 상기 비교 결과에 대응하는 매치/언매치 비트를 출력하는 태그 비교기, 및 상기 캐시 히트/미쓰 정보에 응답하여 상기 커맨드에 대응하는 데이터를 출력하는 버퍼 회로를 포함할 수 있다.
실시 예에 있어서, 상기 제 1 메모리 채널을 공유하는 비휘발성 메모리 모듈을 더 포함할 수 있다.
실시 예에 있어서, 상기 제 1 메모리 채널과 다른 제 2 메모리 채널을 통하여 상기 프로세서에 연결된 비휘발성 메모리 모듈을 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈은 제 1 포트 및 제 2 포트를 포함하고, 상기 제 1 포트는 상기 제 1 메모리 채널이 연결되고, 상기 제 2 포트에 연결된 비휘발성 메모리 모듈을 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈을 갖는 비휘발성 메모리 모듈을 포함할 수 있다.
실시 예에 있어서, 상기 프로세서에 DDR-T(double data rate transaction) 인터페이스를 통하여 연결되는 적어도 하나의 비휘발성 메모리를 더 포함할 수 있다.
실시 예에 있어서, 상기 메모리 모듈은 DDR4E 인터페이스를 통하여 상기 프로세서에 연결될 수 있다.
본 발명의 실시 예에 따른 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템은, 메모리 모듈 내에서 태그를 비교하여 매치/언매치 비트들을 출력하는 태그 비교기들을 구비함으로써, 다수결을 이용하여 매치/언매치 비트들로부터 태그 에러 검출 및 정정할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 메모리 모듈을 예시적으로 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 캐시 디램에 대한 실시 예를 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 캐시 히트일 때 읽기 동작을 예시적으로 설명하기 위한 래더 다이어그램이다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 캐시 미쓰일 때 읽기 동작을 예시적으로 설명하기 위한 래더 다이어그램이다.
도 6은 본 발명의 실시 예에 따른 메모리 모듈의 태그 에러를 판별하는 방법을 개념적으로 설명하는 도면이다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 태그 에러 테스트를 예시적으로 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 프로세서에서 쓰기 동작에 대한 실시 예를 예시적으로 보여주는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 메모리 모듈에서 쓰기 동작에 대한 실시 예를 예시적으로 보여주는 흐름도이다.
도 10은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 11은 도 10에 도시된 메모리 제어기에 대한 실시 예를 보여주는 도면이다.
도 12는 도 10에 도시된 메모리 모듈에 대한 실시 예를 보여주는 도면이다.
도 13은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 14a, 도 14b, 도 14c, 및 도 14d는 메모리 채널과의 다양한 연결 관계에 따른 컴퓨팅 시스템들을 보여주는 도면들이다.
도 15는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 16은 본 발명의 다른 실시 예에 따른 데이터 서버 시스템(50)을 예시적으로 보여주는 블록도이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다. 본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 하지만, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 혹은 대체물을 포함한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명은 캐시 메모리 장치(예, 디램)를 이용한 메모리 모듈의 구성 및 태그 에러 검출 및 복구 방안을 개시한다. 여기서 캐시 메모리 장치는 태그 혹은 절대 주소를 이용하여 접근할 수 있다. 실시 예에 있어서, 메모리 모듈을 구성하는 모든 메모리 장치는 캐시 메모리 장치로 구성하거나 일부만 캐시 메모리 장치로 구성할 수 있다. 실시 예에 있어서, 캐시 메모리 장치는 인텔 3D-Xpoint와 NVDIMM-P와 같은 고용량 NVM(nonvolatile memory)의 캐시로 이용될 수 있으며 DDRx 메모리 채널에 장착되어 동작할 수 있다.
실시 예에 있어서, 메모리 모듈이 복수의 캐시 메모리 장치로 구현될 때, 메모리 제어기(MC)로 전송되는 태그 비교 정보(Match/Unmatch Bits)를 이용한 다수결(majority voting)을 수행함으로써, 태그 에러가 발생한 캐시 메모리 장치가 검출될 수 있다. 만약 모듈의 구성하는 캐시 메모리 장치들의 캐시 히트 카운트가 문턱값을 넘을 경우, 캐시 미쓰가 발생한 캐시 메모리 장치는 태그 에러가 발생된 것으로 간주한다. 메모리 제어기(MC)는 태그 에러가 발생된 캐시 메모리 장치에 대하여 절대주소를 이용하여 읽기 혹은 쓰기을 재수행함으로써, 태그 에러를 복구할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 프로세서(CPU, 100), 메모리 모듈(DIMM, 200), 및 비휘발성 메모리 모듈(NVDIMM, 300)을 포함할 수 있다.
실시 예에 있어서, 컴퓨팅 시스템(10)은 컴퓨터, 포터블 컴퓨터, UMPC(ultra mobile PC(personal computer)), 워크스테이션(workstation), 데이터 서버(data server), 넷북, PDA(personal digital assistant), 웹 태블릿, 무선 폰, 모바일 폰, 스마트폰, 전자북, PMP(portable multimedia player), 디지털 카메라, 디지털오디오, 녹음기/재생기, 디지털 사진기/비디오 기록기/재생기, 포터블 게임 머신, 네비게이션 시스템, 블랙 박스, 3D 텔레비전, 무선 환경에서 정보를 수신 및 송신하는 장치, 웨어러블 장치(wearable device), 홈 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, RFID, 혹은 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 어느 하나로 사용될 수 있다.
프로세서(100)는 사용자 시스템(10)의 제반 동작을 제어하도록 구현될 수 있다. 예를 들어, 프로세서(100)는 CPU(central processing unit), 코프로세서(co-processor), APU(arithmethic processing unit), GPU(graphic processing unit), DSP(digital signal processor), MCH(memory controller hub), PCH(platform controller hub) 등 일 수 있다. 프로세서(100)는 사용자 시스템(10)에서 수행되는 다양한 연산들을 수행 및 데이터를 처리할 수 있다.
실시 예에 있어서, 프로세서(100)는 메모리 모듈(200) 및 비휘발성 메모리 모듈(300)을 관리하기 위한 메모리 제어기(memory controller, MC; 120)을 포함할 수 있다.
실시 예에 있어서, 메모리 제어기(120)는 태그 일치를 지시하는 적어도 하나의 매치 비트(match bit) 혹은 태그 불일치를 지시하는 적어도 하나의 언매치 비트(unmatch bit)을 입력 받고, 다수결(majority voting)을 통해 캐시 히트인지, 캐시 미쓰인지를 판별하는 히트/미쓰 판별기(122)를 포함할 수 있다. 여기서, 매치/언매치 비트들(match/unmatch bit)은 메모리 모듈(200)로부터 전송될 수 있다.
실시 예에 있어서, 매치/언매치 비트들에 대응하는 매치 비트 카운트(match bit count)가 언매치 비트들에 대응하는 언매치 비트 카운트(unmatch bit count)보다 클 때, 히트/미쓰 판별기(122)는 캐시 히트(cache hit)라고 판별할 수 있다. 반대로, 매치 비트 카운트가 언매치 비트 카운트 보다 크지 않을 때, 히트/미쓰 판별기(122)는 캐시 미쓰(cache miss)라고 판별할 수 있다.
다른 실시 예에 있어서, 매치 비트 카운트가 사전에 결정된 값 이상일 때, 히트/미쓰 판별기(122)는 캐시 히트라고 판별하거나, 언매치 비트 카운트가 사전에 결정된 값 미만일 때, 히트/미쓰 판별기는 캐시 미쓰라고 판별할 수도 있다.
실시 예에 있어서, 히트/미쓰 판별기(122)는 매치/언매치 비트들로부터 태그(tag)의 에러 유무를 판별할 수 있다. 예를 들어, 매치/언매치 비트들이 동일 비트(예를 들어, "1" 혹은 "0")가 아니라면, 태그 에러가 존재한다고 판별될 수 있다.
실시 예에 있어서, 태그 에러가 존재할 때, 히트/미쓰 판별기(122)는, 태그 에러가 발생된 메모리 모듈(200)의 물리적 위치 정보(예, 캐시 블록 ID)를 알 수 있고, 메모리 모듈(200)로 출력되는 태그 에러 결과(tag error result)에 이러한 내용을 포함할 수 있다.
메모리 모듈(200)은 DDR(double data rate) 인터페이스를 통하여 프로세서(100)에 연결될 수 있다. 실시 예에 있어서, DDR 인터페이스는 JEDEC(joint electron device engineering council)의 메모리 표준 규격일 수 있다. 한편, 도 1에 도시된 메모리 모듈(200)은 DDR 인터페이스에 따라 프로세서(100)에 연결되지만, 본 발명은 여기에 제한되지 않을 것이다. 본 발명의 메모리 모듈(200)은 DDR 인터페이스를 제외한 다양한 종류의 통신 인터페이스를 통하여 프로세서(100)에 연결될 수 있다. 예를 들어, 통신 인터페이스는 NVMe(non-volatile memory express), PCIe(peripheral component interconnect express), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), UAS(USB(universal storage bus) attached SCSI), iSCSI(internet small computer system interface), Fiber Channel, FCoE(fiber channel over ethernet) 등과 같은 것일 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 듀얼 인-라인 메모리 모듈(dual in-line memory module)로 구현될 수 있다. 실시 예에 있어서, 메모리 모듈(200)은 적어도 하나의 DRAM(dynamic random access memory)를 포함할 수 있다. 실시 예에 있어서 메모리 모듈(200)은 비휘발성 메모리 모듈(NVDIMM, 300)의 캐시 메모리로 동작할 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 데이터(data) 및 그것에 대응하는 태그(tag)를 저장하는 복수의 캐시 블록들(201)을 포함할 수 있다. 실시 예에 있어서, 복수의 캐시 블록들(201) 각각은 디램(DRAM, dynamic random access memory)으로 구현될 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 입력된 어드레스(ADDR)에 대응하는 태그가 존재하는 지를 판별하는 적어도 하나의 태그 비교기(202)를 포함할 수 있다. 예를 들어, 태그 비교기(202)는 복수의 캐시 블록들로부터 출력된 태그들을 어드레스(ADDR)에 대응하는 값과 비교하고, 매치/언매치 비트들을 그 결과값들로 출력할 수 있다. 실시 예에 있어서, 복수의 캐시 블록들 각각에 저장된 태그에 에러가 존재하지 않을 때, 복수의 캐시 블록들 각각으로부터 출력되는 태그는 동일할 수 있다. 반면에, 복수의 캐시 블록들 각각에 저장된 태그에 에러가 존재할 때, 복수의 캐시 블록들로부터 출력되는 태그들을 서로 다를 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 프로세서(100)로부터 전송된 캐시 히트/미쓰 정보를 근거로 하여, 데이터 버퍼(미도시)에 저장된 데이터를 프로세서(100)으로 출력할지를 판별할 수 있다. 예를 들어, 메모리 모듈(200)은 캐시 히트일 때 데이터 버퍼에 저장된 데이터를 출력할 수 있다. 반면에 메모리 모듈(200)은 캐시 미쓰일 때 데이터 버퍼에 저장된 데이터를 출력하지 않을 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 캐시 히트/미쓰 정보와 함께 전송된 태그 에러 결과(tag error result)에 근거로 하여, 대응하는 캐시 블록의 태그 에러를 정정할 수 있다. 여기서 태그 에러 결과는 태그 에러가 발생된 캐시 블록의 위치 정보를 포함할 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 태그 에러를 정정할 수 없을 때 관련 정보를 프로세서(100)의 메모리 제어기(220)에 전송할 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 정상 캐시 블록(태그 에러가 없는 캐시 블록)의 위치 정보를 근거로 하여 태그 에러 발생된 캐시 블록을 접근할 수 있다.
비휘발성 메모리 모듈(300)은 DDR 인터페이스를 통하여 프로세서(100)에 연결될 수 있다. 한편, 도 1에 도시된 비휘발성 메모리 모듈(300)은 DDR 인터페이스에 따라 프로세서(100)에 연결되지만, 본 발명은 여기에 제한되지 않을 것이다. 본 발명의 비휘발성 메모리 모듈(300)은 DDR 인터페이스를 제외한 다양한 종류의 통신 인터페이스를 통하여 프로세서(100)에 연결될 수 있다.
비휘발성 메모리 모듈(300)은 듀얼 인-라인 메모리 모듈(dual li-line memory module)로 구현될 수 있다. 비휘발성 메모리 모듈(300)은 프로세서(100)의 동작 메모리로 이용될 수 있다. 비휘발성 메모리 모듈(300)은 적어도 하나의 비휘발성 메모리를 포함할 수 있다.
실시 예에 있어서, 적어도 하나의 비휘발성 메모리는, 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAND), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 비휘발성 메모리는 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명의 실시 예로서, 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 혹은 그 이상의 물리 레벨들에 모놀리식으로(monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 혹은 기판 위에 위치할 수 있다. 모놀리식(monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
본 발명의 개념에 따른 실시 예로서, 3차원 메모리 어레이는 수직의 방향성을 가져, 적어도 하나의 메모리 셀이 다른 하나의 메모리 셀 위에 위치하는 수직 NAND 스트링들을 포함한다. 적어도 하나의 메모리 셀은 전하 트랩 층을 포함한다. 각각의 수직 NAND 스트링은 메모리 셀들 위에 위치하는 적어도 하나의 선택 트랜지스터를 포함할 수 있다. 적어도 하나의 선택 트랜지스터는 메모리 셀들과 동일한 구조를 갖고, 메모리 셀들과 함께 모놀리식으로 형성될 수 있다.
3차원 메모리 어레이가 복수의 레벨들로 구성되고, 레벨들 사이에 공유된 워드 라인들 혹은 비트 라인들을 갖는다. 3차원 메모리 어레이에 적합한 구성은, 삼성전자에서 출원하였으며, 이 출원의 참고문헌으로 결합된 US 7,679,133, US 8,553,466, US 8,654,587, US 8,559,235, 및 US 2011/0233648에 설명될 것이다. 본 발명의 비휘발성 메모리(NVM)는 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다.
본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은, 메모리 모듈(200)에서 태그 비교를 수행하고, 그 결과에 따른 매치/언매치 비트들을 다수결에 따라 캐시 히트/캐시 미쓰를 판별하는 프로세서(100)를 구비함으로써, 태그 에러 발생시 메모리 모듈(200)의 캐시 동작 성능을 크게 향상시킬 수 있다.
또한, 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)은, 태그 에러 발생시 태그 에러 결과를 이용하여 적절한 동작을 취함으로써 태그 에러가 전체 시스템으로 전파되는 것을 사전에 차단 시킬 수 있다. 이에 따른 시스템적인 성능 향상도 크게 기대될 수 있다.
도 2는 본 발명의 실시 예에 따른 메모리 모듈(200)을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 메모리 모듈(200)은 복수의 캐시 디램들(211, 212, 213, 214)을 포함할 수 있다. 복수의 캐시 디램들(211, 212, 213, 214)은 비휘발성 메모리 모듈(300, 도 1 참조)의 캐시로써 동작할 수 있다. 한편, 도 2에 도시된 캐시 디램들(211, 212, 213, 214)의 개수는 4이다. 하지만, 본 발명의 메모리 모듈(200)에 포함된 캐시 디램들의 개수가 여기에 제한되지 않는다고 이해되어야 할 것이다.
실시 예에 있어서, 캐시 디램들(211, 212, 213, 214)은 커맨드(CMD)/어드레스(ADDR)에 따라 입출력 동작(예, 쓰기/읽기 동작)을 수행하도록 구현될 수 있다.
실시 예에 있어서, 캐시 디램들(211, 212, 213, 214) 각각은 듀얼 포트(dual port) 디램으로 구현될 수 있다. 예를 들어, 하나의 포트는 프로세서(100)의 데이터 패스에 연결되고, 다른 하나의 포트는 비휘발성 메모리 모듈(300)의 데이터 패스에 연결될 수 있다.
실시 예에 있어서, 캐시 디램들(211, 212, 213, 214) 각각은 데이터 및 그에 대응하는 태그를 저장하도록 구현될 수 있다. 실시 예에 있어서, 캐시 디램들(211, 212, 213, 214) 각각은 동일한 태그를 저장하고, 캐시 디램들(211, 212, 213, 214) 각각에 태그에 대응하는 서로 다른 데이터를 저장할 수 있다. 즉, 캐시 디램들(211, 212, 213, 214) 각각은 동일한 태그에 대응하는 서로 다른 데이터를 저장할 수 있다.
실시 예에 있어서, 복수의 캐시 디램들(211, 212, 213, 214) 각각은 태그 비교기(TAG CMP)를 포함할 수 있다. 실시 예에 있어서, 태그 비교기(TAG CMP)는 복수의 디램들(211, 212, 213, 214) 각각에 저장된 태그와 프로세서(100)로부터 입력된 어드레스에 대응하는 태그를 비교하고, 비교 결과에 따른 매치/언매치 비트를 출력할 수 있다.
실시 예에 있어서, 메모리 모듈(200)은 데이터 버퍼들(DB, data buffers),혹은 메모리 모듈 제어 장치(RCD, registered connective device)를 더 포함할 수 있다. 실시 예에 있어서, 메모리 모듈(200)은 DDR 시리즈로 구현될 수 있다. 예를 들어, 메모리 모듈(200)은 DDR4E 스펙을 만족하도록 구현될 수 있다.
실시 예에 있어서, 데이터 버퍼들(DB) 각각은 캐시 디램들(211, 212, 213, 214) 각각에 연결되고, 프로세서(100)로부터 입력되는 데이터를 캐시 디램들(211, 212, 213, 214)로 전송하거나, 캐시 디램들(211, 212, 213, 214)로부터 출력되는 데이터를 프로세서(100)로 전송하도록 구현될 수 있다.
실시 예에 있어서, 데이터 버퍼들(DB) 각각은 DDR 인터페이스 규격에 적합하도록 구현될 수 있다. 예를 들어, 데이터 버퍼들(DB) 각각은 8개의 데이터 신호들과 2개의 데이터 스트로보 신호들을 입출력 하도록 구현될 수 있다. 도시되지 않았지만, 데이터 버퍼들(DB) 각각은 버퍼 커맨드에 응답하여 프로세서(100)로부터 입력된 데이터를 대응하는 캐시 디램에 출력할 수 있다. 실시 예에 있어서, 데이터 버퍼들(DB) 각각은 선입선출(FIFO, first-in first-out) 혹은 듀얼 포트 SRAM(static random access memory)로 구현될 수 있다.
실시 예에 있어서, 메모리 모듈 제어 장치(RCD)는 프로세서(100)로부터 커맨드(CMD) 및 어드레스(ADDR)를 입력 받고, 메모리 모듈(200)의 입출력 동작을 제어하도록 구현될 수 있다.
실시 예에 있어서, 메모리 모듈 제어 장치(RCD)는 프로세서(100)로부터 태그 에러 결과를 입력 받고, 이에 따라 태그 에러가 발생된 캐시 디램을 사전에 판별된 정책에 따라 관리/제어할 수 있다. 예를 들어, 메모리 모듈 제어 장치(RCD)는 태그 에러 결과를 입력 받고, 태그 에러가 발생된 캐시 디램의 태그를 정정하도록 대응하는 캐시 디램을 제어할 수 있다.
실시 예에 있어서, 메모리 모듈 제어 장치(RCD)는 태그 에러가 발생된 캐시 디램에 내부적으로 에러 발생된 태그를 정정하도록 지시할 수 있다. 이를 위해 캐시 디램은 내부적으로 에러 정정 회로(error correction circuit)을 구비할 수 있다. 다른 실시 예에 있어서, 메모리 모듈 제어 장치(RCD)는 태그 에러가 발생되지 않는 캐시 블록의 태그 값을 태그 에러가 발생된 캐시 디램에 업데이트 시킬 수 있다.
한편, 본 발명의 실시 예에 따른 휘발성 메모리 모듈(200)은 태그 에러 결과에 따라 메모리 모듈 제어 장치(RCD)에서 캐시 디램을 별도로 관리하였다. 하지만, 이는 본 발명을 제한하지 않는다고 이해되어야 할 것이다. 본 발명의 실시 예에 따른 휘발성 메모리 모듈(200)은 태그 에러 결과를 각각의 캐시 디램에서 직접 받고, 발생된 태그 에러에 따라 캐시 디램을 관리하도록 구현될 수도 있다.
도 3은 본 발명의 실시 예에 따른 캐시 디램에 대한 실시 예를 보여주는 도면이다. 도 3을 참조하면, 캐시 디램(211)은 제 1 메모리 셀 어레이(211-1), 제 2 메모리 셀 어레이(211-2), 로우 디코더(ROWDEC, 211-3), 컬럼 디코더 및 감지 증폭기(COLDEC+SA, 211-4), 태그 비교기(TAG CMP, 211-5), 및 버퍼 회로(211-6)을 포함할 수 있다.
실시 예에 있어서, 제 1 메모리 셀 어레이(211-1)는 캐시의 태그를 저장하는 복수의 제 1 디램 셀들을 포함할 수 있다. 제 1 디램 셀들 각각은 어느 하나의 워드라인(WL)과 어느 하나의 컬럼 선택 라인(CSL_Tag)에 대응할 수 있다. 실시 예에 있어서, 멀티-웨이 방식에서 제 1 메모리 셀 어레이(211-1)는 복수의 캐시들의 태그들을 저장할 수 있다.
실시 예에 있어서, 제 2 메모리 셀 어레이(211-2)는 태그에 대응하는 데이터를 저장하는 복수의 제 2 디램 셀들을 포함할 수 있다. 제 2 디램 셀들 각각은 어느 하나의 워드라인(WL)과 어느 하나의 컬럼 선택 라인(CSL_Data)에 대응할 수 있다.
한편, 도 3에 도시된 제 1 메모리 셀 어레이(211-1)의 제 1 디램 셀들과 제 2 메모리 셀 어레이(211-2)의 제 2 디램 셀들은 어느 하나의 워드라인(WL)에 연결되었다. 하지만, 본 발명의 캐시 디램(211)의 구성이 반드시 여기에 제한될 필요는 없다. 본 발명의 캐시 디램(211)은 제 1 메모리 셀 어레이(211-1)의 제 1 디램 셀들이 연결된 제 1 워드라인과 제 2 메모리 셀 어레이(211-2)의 제 2 디램 셀들이 연결된 제 2 워드라인을 구비할 수 있다. 여기서 제 2 워드라인은 제 1 워드라인과 다를 수 있다.
로우 디코더(211-3)는 입력 어드레스에 응답하여 복수의 워드라인들 중 어느 하나를 선택(활성화)시킬 수 있다.
컬럼 디코더 및 감지 증폭기(211-4)는 워드라인(WL)과 컬럼 선택 라인에 대응하는 디램 셀들로부터 데이터를 읽거나, 디램 셀들에 데이터를 쓸 수 있도록 구현될 수 있다. 컬럼 디코더 및 감지 증폭기(211-4)는 컬럼 어드레스에 응답하여 제 1 메모리 셀 어레이(211-1)에 대응하는 제 1 컬럼 선택 라인(CSL_Tag) 및 제 2 메모리 셀 어레이(211-2)에 대응하는 제 2 컬럼 선택 라인(CSL_Data)를 활성화하도록 구현될 수 있다. 예를 들어, 컬럼 디코더 및 감지 증폭기(211-4)는 컬럼 어드레스에 응답하여 제 1 디램 셀들에 연결된 제 1 컬럼 선택 라인(CSL_Tag)과 제 2 디램셀들에 연결된 제 2 컬럼 선택 라인(CSL_Data)을 활성화시키고, 제 1 디램 셀들로부터 태그를 읽거나, 제 2 디램 셀들로부터 태그에 대응하는 캐시 데이터를 읽을 수 있다.
태그 비교기(211-5)는 입력된 태그 정보(Tag Inform. 입력 어드레스에 연관된 정보, 예를 들어, 인덱스와 옵셋)와 저장된 태그를 비교하도록 구현될 수 있다. 실시 예에 있어서, 태그 비교기(211-5)는 MRS(mode register set) 설정에 따라 활성화 될 수 있다. 도 3에서는 설명의 편의를 위하여 MRS 설정에 대응하는 캐시 모드 정보에 응답하여 태그 비교기(211-6)가 활성화되는 것이 도시된다. 다른 실시 예에 있어서, 태그 비교기(211-6)는 메모리 모듈(200)의 제조시 물리적 방식(예, 퓨즈 컷팅, 이퓨즈 선택)에 따라 활성화될 수 있다.
실시 예에 있어서, 태그 비교기(211-5)의 출력값, 즉, 매치/언매치 비트는 적어도 하나의 핀을 통하여 외부로 출력될 수 있다.
실시 예에 있어서, 버퍼 회로(211-6)는 입출력 동작시 데이터를 버퍼링할 수 있다. 예를 들어, 버퍼 회로(211-6)는 쓰기 동작시 태그 에러에 대한 검출이 완료될 때까지 데이터를 버퍼링할 수 있다. 실시 예에 있어서, 버퍼 회로(211-6)은 태그 에러의 복구 후에 버퍼링된 데이터에 대한 쓰기를 커밋(commit)할 수 있다. 이는, 태그 에러가 메모리 모듈(200) 혹은 비휘발성 메모리 모듈(300, 도 1 참조)에 전파되는 것을 방지할 수 있다.
실시 예에 있어서, 버퍼 회로(211-6)는 읽기 동작시 프로세서(100)로부터 전송된 캐시 히트/미쓰 정보에 근거로 하여 데이터를 출력하도록 구현될 수 있다.
한편, 본 발명의 실시 예에 따른 캐시 디램(211)은 에러 정정 로직(ECC Logic, 211-7)을 더 포함할 수 있다. 실시 예에 있어서, 에러 정정 로직(211-7)은 태그 혹은 데이터의 에러를 내부적으로 검출 및 정정할 수 있다. 실시 예에 있어서, 이러한 에러 정정 동작을 위하여, 제 1 메모리 셀 어레이(211-1)는 태그 혹은 데이터에 대응하는 패리티를 저장할 수 있다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 캐시 히트일 때 읽기 동작을 예시적으로 설명하기 위한 래더 다이어그램이다. 도 4를 참조하면, 읽기 동작은 다음과 같이 진행될 수 있다. 프로세서(100)는 읽기 커맨드(읽기 CMD) 및 어드레스를 메모리 모듈(DIMM, 200)로 전송할 수 있다. 메모리 모듈(200)의 복수의 캐시 디램들(211, 212, 213, 214, 도 2 참조)의 태그 비교기들(TAG CMP)은 어드레스에 대응하는 태그 정보와 저장된 태그를 비교함으로써, 매치/언매치 비트들을 출력하고, 이것들을 프로세서(100)로 전송할 수 있다.
프로세서(100)의 히트/미쓰 판별기(120, 도 1 참조)는 매치/언매치 비트들을 입력 받고, 캐시 히트/미쓰를 판별할 수 있다. 이때 동시에 태그에 에러가 존재하는지에 대한 태그 에러 테스트가 수행될 수 있다. 태그 에러 테스트 결과로써 에러가 존재하는 캐시 디램에 대한 정보가 발생될 수 있다. 매치/언매치 비트들로부터 캐시 히트가 판별되면, 캐시 히트에 대한 정보 및 태그 에러 결과가 메모리 모듈(200)로 전송될 수 있다.
메모리 모듈(200)은 캐시 히트 정보 및 태그 에러 결과를 입력 받고, 데이터를 프로세서(100)로 출력할 수 있다. 실시 예에 있어서, 태그 에러가 존재하지 않으면, 태그에 대응하는 데이터가 프로세서(100)로 출력될 수 있다. 실시 예에 있어서, 태그 에러가 존재한다면, 태그 에러가 존재하는 하는 캐시 디램의 태그에 대응하는 데이터 및 태그 에러가 존재하는 캐시 디램의 태그에 대응하는 데이터가 출력될 수 있다. 이후 태그 에러가 존재하는 캐시 디램의 경우 태그 에러가 정정될 수 있다. 이로써, 읽기 동작이 완료될 수 있다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)에서 캐시 미쓰일 때 읽기 동작을 예시적으로 설명하기 위한 래더 다이어그램이다. 도 5를 참조하면, 읽기 동작은, 프로세서(100)에서 매치/언매치 비트들을 전송 받을 때까지는 도 4에 도시된 그것과 동일하다.
프로세서(100)의 히트/미쓰 판별기(120, 도 1 참조)는 매치/언매치 비트들로부터 다수결에 따라 캐시 미쓰를 판별할 수 있다. 메모리 모듈(200)은 캐시 미쓰 정보를 입력 받고, 비휘발성 메모리 모듈(NVDIMM, 300)에 비휘발성 메모리 읽기 커맨드(읽기_NVM CMD) 및 어드레스를 전송 할 수 있다. 비휘발성 메모리 모듈(300)은 비휘발성 메모리 읽기 커맨드(읽기_NVM CMD) 및 어드레스에 대응하는 데이터를 읽고, 이를 메모리 모듈(200)로 전송할 수 있다. 메모리 모듈(200)은 비휘발성 메모리 모듈(300)로부터 전송된 데이터를 프로세서(100)로 전송할 수 있다. 이때, 메모리 모듈(200)은 어드레스에 대응하는 태그 및 데이터를 저장할 수 있다. 이로써, 읽기 동작이 완료될 수 있다.
도 6은 본 발명의 실시 예에 따른 메모리 모듈(200)의 태그 에러를 판별하는 방법을 개념적으로 설명하는 도면이다. 실시 예에 있어서, 캐시 발생시, 캐시 디램들(211, 212, 213, 214) 각각은 어드레스에 대응하는 동일한 태그를 저장하였다. 하지만 동작 환경의 변화에 따라 어느 하나의 캐시 디램(예, 213)의 태그가 다른 캐시 디램들(211, 212, 214)의 그것들과 달라질 수 있다. 즉, 캐시 디램(213)의 태그가 깨진 것이다. 이 경우, 읽기/쓰기 요청시 태그 비교 결과로써, 캐시 디램(213)은 언매치 비트(unmatch bit)를 출력하고, 나머지 캐시 디램들(211, 212, 214)은 매치 비트들을 출력할 수 있다. 여기서 매치 비트와 언맨치 비트는 서로 상보적인 비트일 수 있다. 예를 들어, 매치 비트는 "1"을 언매치 비트는 "0"일 수 있다. 물론 그 반대로도 구현될 수 있다. 실시 예에 있어서, 다수결에 따라 메모리 모듈(200)의 태그 비교 결과는 캐시 히트이다. 따라서, 더티 비트를 출력하는 캐시 디램(213)의 태그에 에러가 있다는 것을 알 수 있다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템에서 태그 에러 테스트를 예시적으로 보여주는 흐름도이다. 도 1 내지 도 7을 참조하면, 태그 에러 테스트는 다음과 같이 진행될 수 있다. 도 1에 도시된 히트/미쓰 판별기(120)는 매치 비트 카운트가 0보다 큰지 그리고 더티 비트 카운트가 0보다 큰지를 판별할 수 있다(S110).
만일, 매치 비트 카운트가 0 보다 크고 및 언매치 비트 카운트가 0보다 클 때, 매치 비트 카운트가 사전에 결정된 값(PDV)보다 크거나 동일한 지가 판별될 수 있다(S120). 여기서 매치 비트 카운트가 0보다 크고 및 언매치 비트 카운트가 0보다 클 때는, 태그 에러가 존재하는 경우이다. 실시 예에 있어서 사전에 결정된 값(PDV)은 메모리 모듈(200)에 포함된 캐시 블록들의 개수의 절반 이상의 정수일 수 있다.
만일, 매치 비트 카운트가 사전에 결정된 값(PDV)보다 크거나 동일하다면, 태그 에러를 갖는 캐시 히트로 판별될 수 있다(S131). 반면에, 매치 비트 카운트가 사전에 결정된 값(PDV) 보다 작다면, 태그 에러를 갖는 캐시 미쓰로 판별될 수 있다(S132).
또한, 매치 비트 카운트가 0이거나 언매치 비트 카운트가 0 일 때, 태그 에러가 존재하지 않는다고 판별될 수 있다(S133). 따라서 모든 매치/언매치 비트들에 따라 캐시 히트가 판별되거나, 모든 언매치 비트들에 따라 캐시 미쓰가 판별될 수 있다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 프로세서에서 쓰기 동작에 대한 실시 예를 예시적으로 보여주는 흐름도이다. 도 1 내지 도 8을 참조하면, 컴퓨팅 시스템(10)의 프로세서(100)에서 메모리 제어기(MC, 120)의 쓰기 동작은 다음과 같이 진행될 수 있다.
메모리 제어기(120)는 메모리 모듈(DIMM, 200)로 쓰기 동작을 위한 커맨드(CMD), 어드레스 및 데이터를 전송 할 수 있다(S210). 이후 메모리 제어기(120)는 어드레스에 대응하여 메모리 모듈(200)의 캐시 블록들(201)로부터 출력된 매치/언매치 비트들을 수신할 수 있다(S220). 이후, 태그 에러 테스트 결과로써 태그 에러가 존재하는지가 판별될 수 있다(S230).
만일, 태그 에러가 존재하면, 수동으로(manually) 쓰기 동작이 수행될 수 있다. 예를 들어, 메모리 제어기(MC)는 태그 에러가 존재하지 않는 캐시 블록의 정보를 이용하여, 즉 절대 어드레스를 이용하여, 태그 에러가 존재하는 캐시 블록의 접근을 수행할 수 있다. 이로써 태그 에러가 존재하는 캐시 블록에 대응하는 데이터가 쓰여질 수 있다(S240). 실시 예에 있어서, 수동으로 쓰기 동작을 수행할 때, 태그 에러가 발생된 캐시 블록의 태그 비교기는 비활성화 될 수 있다. 반면에, 태그 에러가 존재하지 않는다면, 쓰기가 커밋(commit,혹은 "수행")될 수 있다(S245).
도 9는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 메모리 모듈에서 쓰기 동작에 대한 실시 예를 예시적으로 보여주는 흐름도이다. 도 1 내지 도 9를 참조하면, 컴퓨팅 시스템(10)에서 메모리 모듈(200)의 쓰기 동작은 다음과 같이 진행 될 수 있다.
메모리 모듈(200)은 메모리 제어기(100)로부터 쓰기 커맨드, 어드레스 및 데이터를 수신할 수 있다(S310). 쓰기 데이터는 데이터 버퍼(211-6, 도 3 참조)에 버퍼링 될 수 있다(S320). 어드레스에 대응하는 태그와 저장된 태그를 비교함으로써 발생된 매치/언매치 비트들이 메모리 제어기(MC, 120)로 전송될 수 있다(S330). 이후, 메모리 제어기(120)로부터 태그 에러 존재 유무를 지시하는 태그 에러 결과가 수신될 수 있다(S340).
만일, 태그 에러가 존재한다면, 수동으로 쓰기 동작이 수행될 수 있다(S360). 예를 들어, 입력된 절대 어드레스 혹은 캐시 히트된 태그 에러가 없는 캐시 디램의 정보를 근거로 하여 태그 에러가 발생된 캐시 디램에 쓰기 동작이 수행될 수 있다. 이때 태그 에러 복구 후 버퍼링된 쓰기 데이터에 대한 쓰기 동작이 수행할 될 수 있다. 반면에, 태그 에러가 존재하지 않는다면, 버퍼링된 데이터에 대한 쓰기가 커밋(수행)될 수 있다(S365).
한편, 본 발명의 실시 예에 따른 컴퓨팅 시스템의 메모리 제어기(MC)는 데이터의 에러를 정정하는 에러 정정 로직을 더 구비할 수 있다.
도 10은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(20)을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 컴퓨팅 시스템(20)은, 프로세서(100a), 메모리 모듈(DIMM, 200a), 및 비휘발성 메모리 모듈(NVDIMM, 300)을 포함할 수 있다.
도 10에 도시된 프로세서(100a)는 도 1의 그것과 비교하여 에러 정정 로직(124)을 더 포함할 수 있다. 그 외의 구성들은 도 1의 프로세서(100)와 동일할 수 있다. 에러 정정 로직(124)은 데이터 및 그것에 대응하는 패리티를 근거로 하여 데이터의 에러를 정정하도록 구현될 수 있다.
또한, 도 10에 도시된 메모리 모듈(200a)은 도 1의 그것과 비교하여 에러 정정에 필요한 패리티를 저장하는 패리티 영역(201)을 더 포함할 수 있다. 그 외의 구성들은 도 1의 메모리 모듈(200)과 동일할 수 있다.
도 11은 도 10에 도시된 메모리 제어기(MC, 120a)에 대한 실시 예를 보여주는 도면이다. 도 11을 참조하면, 메모리 제어기(MC)는 인터페이스 회로(PHY, 121), 히트/미쓰 판별기(122), 에러 정정 로직(124), 스케쥴러(126), 및 리퀘스트 큐(128)을 포함할 수 있다.
인터페이스 회로(121)는 채널을 통하여 메모리 모듈(200a)과 통신할 수 있도록 구현될 수 있다. 실시 예에 있어서, 인터페이스 회로(121)는 읽기/쓰기 동작에 대응하는 커맨드(CMD) 및 어드레스(ADDR)를 메모리 모듈(200a)로 출력할 수 있다.
실시 예에 있어서, 인터페이스 회로(121)는 메모리 모듈(200a)로부터 매치/언매치 비트들, 메타 데이터, 블록 식별 정보(Block ID), 등을 수신할 수 있다. 여기서 매치/언매치 비트들은 캐시 블록들 각각의 태그 비교기의 결과값들일 수 있다. 여기서 메타 데이터는 캐시 데이터의 유효성 한지 여부를 지시하는 데이터일 수 있다. 실시 예에 있어서, 인터페이스 회로(121)는 메모리 모듈(200a)와 데이터 및 패리티를 입출력할 수 있다.
히트/미쓰 판별기(122)는 수신된 매치/언매치 비트들을 이용하여 메모리 모듈(200a)의 캐시 히트 혹은 캐시 미쓰를 판별할 수 있다. 동시에 히트/미쓰 판별기(122)는 태그 에러 여부도 판별할 수 있다. 에러 정정 로직(124)은 수신된 데이터 및 패리티를 이용하여 데이터의 에러를 정정할 수 있다. 스케쥴러(126)은 복수의 리퀘스트들을 사전에 결정된 정책에 따라 처리하도록 구현될 수 있다. 예를 들어, 스케줄러(126)의 리퀘스트의 우선순위를 결정할 수 있다. 리퀘스트 큐(128)는 프로세서(100a)으로부터 요청된 읽기 큐 혹은 쓰기 큐를 저장하도록 구현될 수 있다.
도 12는 도 10에 도시된 메모리 모듈(200a)에 대한 실시 예를 보여주는 도면이다. 도 12를 참조하면, 메모리 모듈(200a)은, 도 2에 도시된 메모리 모듈(200)과 비교하여 패리티를 저장하는 캐시 디램(215)을 더 포함할 수 있다. 그 외의 구성들은 도 2에 도시된 그것들과 동일할 수 있다.
실시 예에 있어서, 메모리 모듈(200a)의 데이터 비트의 개수 64개이고, 메모리 모듈(200a)의 패리티 비트의 개수는 8개일 수 있다. 하지만, 본 발명의 데이터 비트의 개수 및 패리티 비트의 개수가 여기에 제한되지 않는다고 이해되어야 할 것이다.
한편, 도 1 내지 도 12에서는 매치/언매치 비트들을 다수결에 따라 캐시 히트/미쓰 판별하는 동작을 메모리 제어기(MC)에서 수행하였다. 하지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다. 예를 들어, 캐시 히트/미쓰 판별하는 동작이 메모리 모듈 내에서 내부적으로 수행될 수도 있다.
도 13은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(30)을 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 컴퓨팅 시스템(30)은, 도 10에 도시된 그것과 비교하여 메모리 모듈(200b) 내부에 캐시 히트/미쓰를 판별하는 히트/미쓰 판별기(204)를 구비한다는 차이점을 갖는다. 실시 예에 있어서 히트/미쓰 판별기(204)는 매치/언매치 비트들에 대한 다수결에 따라 캐시 히트/미쓰를 판별할 수 있다. 실시 예에 있어서, 히트/미쓰 판별기(204)는 도 2에 도시된 메모리 모듈 제어 장치(RCD) 내부에 구현될 수 있다.
한편, 본 발명의 실시 예에 따른 컴퓨팅 시스템은 메모리 채널 관점에서 다양한 구조로 구현 가능하다.
도 14a, 도 14b, 도 14c, 및 도 14d는 메모리 채널과의 다양한 연결에 따른 컴퓨팅 시스템들을 보여주는 도면들이다.
도 14a을 참조하면, 프로세서는 하나의 메모리 채널(CH1)을 통하여 DIMM(캐시 디램)과 NVDIMM에 연결될 수 있다. 즉, 메모리 모듈(DIMM)과 NVDIMM은 메모리 채널을 공유할 수 있다. 실시 예에 있어서, 하나의 메모리 채널(CH1)에 연결되지만, DIMM과 NVDIMM이 삽입되는 슬롯들은 서로 다를 수 있다.
도 14b를 참조하면, DIMM은 제 1 채널(CH1)을 통하여 프로세서에 연결될 수 있고, NVDIMM은 제 1 메모리 채널(CH1)과 다른 제 2 메모리 채널(CH2)을 통하여 프로세서에 연결될 수 있다.
도 14c를 참조하면, DIMM은 메모리 채널(CH1)을 통하여 프로세서에 연결될 수 있다. 실시 예에 있어서, NVDIMM은 메모리 채널(CH1)을 이용하지 않고 DIMM에 직접 연결될 수 있다. 예를 들어, 메모리 모듈(DIMM)이 듀얼 포트로 구성될 수 있다. 하나의 포트는 메모리 채널(CH1)에 연결되고 나머지 포트는 NVDIMM에 연결될 수 있다.
실시 예에 있어서, 옵션적으로 NVDIMM은 메모리 채널(CH1)에 통해 프로세서에 연결될 수 있다.
도 14d를 참조하면, 프로세서는 메모리 채널(CH1)을 통해 NVDIMM에 연결될 수 있다. 여기서 NVDIMM은 상술된 DIMM의 캐시 기능을 수행하는 캐시 디램을 더 포함할 수 있다. 실시 예에 있어서, NVDIMM의 앞부분은 비휘발성 메모리들이 배치되고, NVDIMM의 뒤부분에는 캐시 디램들이 배치될 수 있다. 실시 예에 있어서, NVDIMM은 NVDIMM-P로 구현될 수 있다.
한편, 본 발명의 컴퓨팅 시스템은 DDR-T(transaction) 인터페이스에 따른 비휘발성 메모리를 더 포함할 수 있다.
도 15는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(40)을 예시적으로 보여주는 도면이다. 도 15를 참조하면, 컴퓨팅 시스템(40)은 프로세서(41), 메모리 모듈(DIMM, 42), 및 비휘발성 메모리(NVM, 43)를 포함할 수 있다.
프로세서(41)과 메모리 모듈(42)은, 도 1 내지 도 14에서 설명된 바와 같이, 매치/언매치 비트들에 대한 다수결에 따라 캐시 히트/미쓰를 판별하거나, 태그 에러를 검출 혹은 복구하거나, 태그 에러 결과에 따라 읽기/쓰기 동작을 다르게 할 수 있다.
비휘발성 메모리(43)는 DDR-T 인터페이스에 따라 데이터를 입출력할 수 있다. 이때, 메모리 모듈(42)은 비휘발성 메모리(43)의 캐시 기능을 수행하도록 구현될 수 있다. 실시 예에 있어서, 비휘발성 메모리(NVM)는 3D-Xpoint 메모리(PRAM)일 수 있다.
실시 예에 있어서, DRAM과 3D-Xpoint(PRAM)/NAND로 구성되는 Tiered Latency 구조의 메모리 시스템에서 캐시로 동작하는 Fast Memory Tier(예. DRAM)에 Tag와 Metadata를 저장하고 In-Memory Tag Compare Logic(TAG CMP)을 추가하면, 타이밍 오버헤드 없이 Set-Associative Cache 구성이 가능하다. 이로써, 컴퓨터시스템의 성능을 향상을 기대할 수 있다.
도 16은 본 발명의 다른 실시 예에 따른 데이터 서버 시스템(50)을 예시적으로 보여주는 블록도이다. 도 16을 참조하면, 데이터 서버 시스템(50)은 데이터 베이스 관리 시스템(RDBMS, 510), 캐시 서버(520), 및 어플리케이션 서버(530)를 포함할 수 있다.
캐시 서버(520)는 데이터 베이스 관리 시스템(510)으로부터의 무효화 통지에 대응하여 서로 다른 키(key), 값(value) 쌍을 유지하고, 삭제하는 키값 저장을 포함할 수 있다.
데이터 베이스 관리 시스템(RDBMS, 510), 캐시 서버(520), 및 어플리케이션 서버(530) 중 적어도 하는 도 1 내지 도 15에서 설명된 메모리 모듈(DIMM) 혹은 메모리 제어기(MC)로 구현될 수 있다.
한편, 도 1 내지 도 16에서는 비휘발성 메모리 모듈에 대하여 설명하였다. 하지만, 본 발명의 사상이 비휘발성 메모리 모듈에 제한되지 않을 것이다. 본 발명은 비휘발성 메모리의 캐시로 DRAM을 이용하는 어떠한 종류의 컴퓨팅 시스템에도 적용 가능하다.
한편, 아래에서는 상술 된 본 발명의 컴퓨팅 시스템에 대하여 캐시 태그 복구 관점 위주로 설명하도록 하겠다. 본 발명의 실시 예에 따른 캐시 메모리 장치는 Set-Associative Cache로 동작할 수 있다. 이때 캐시 메모리 장치는 복수의 태그들을 비교하여 캐시 히트가 발생한 캐시 블록의 위치(예, Block ID)를 메모리 제어기(MC)로 전송할 수 있다. 태그 에러 복구를 위해서 캐시 히트가 발생한 캐시 블록의 위치를 알아야 한다. 이를 위해 캐시 히트가 발생시 캐시 메모리 장치는 캐시 히트가 발생한 캐시 블록의 위치(예, 4-way Set Associative 구성 시, 0 ~ 3 중 어느 하나)를 메모리 제어기(MC)에 전송할 수 있다. 메모리 제어기(MC)는 Majority Voting 결과 및 Block 위치를 이용하여 태그 에러가 발생한 캐시 블록에 대한 읽기 혹은 쓰기를 재수행 할 수 있다.
실시 예에 따른 캐시 메모리 장치는 In-Memory Error Correction/Detection Logic(예, In-Memory ECC Logic)을 포함할 수 있고, Reliability Data(예, Parity, CRC, Checksum등)를 저장할 수 있다. 실시 예에 있어서, 캐시 메모리 장치에 저장된 태그, 메타데이터(예. Valid bit, Dirty Bit), 데이터는 Reliability Data와 In-Memory ECC Logic에 의해 보호될 수 있다.
일반적으로 데이터는 패리티와 함께 메모리 제어기(MC)의 ECC 로직에 의해 보호될 수 있다. 하지만, 태그 및 메타데이터는 데이터와 함께 메모리 제어기(MC)d에 전송되지 않으므로, 종래의 메모리 장치들은 태그 및 메타데이터를 보호할 수 없다. 반면에 본 발명의 실시 예에 따른 캐시 메모리 장치는 In-Memory Error Correction/Detection을 통하여, 캐시 메모리 장치 내부의 태그 및 메타데이터를 복구할 수 있다.
본 발명의 실시 예에 따른 메모리 모듈은, 태그와 메타데이터 저장 및 In-Memory Tag Compare를 수행할 수 있는 태그 캐시 메모리 장치와 데이터만 저장하는 데이터 캐시 메모리 장치의 조합으로 구현될 수 있다.
실시 예에 있어서, 메모리 모듈의 메모리 모듈 제어 장치(RCD)는 태그와 CA(Command & Address)를 메모리 제어기(MC)로부터 수신할 수 있다.
실시 예에 있어서, 태그 캐시 메모리 장치는 메모리 모듈 제어 장치(RCD)로부터 입력 받은 CA와 태그를 이용하여 In-Memory Tag Compare를 수행한 후 캐시 히트/미쓰 정보와 캐시 히트시 셋(set)을 구성하는 2개의 캐시 블록들 중 어떤 블록이 캐시 히트인지를 지시하는 정보를, 모든 데이터 캐시 메모리 장치로 전송 할 수 있다. 실시 예에 있어서, 데이터 캐시 메모리 장치는 태그 캐시 메모리 장치의 정보를 이용하여 데이터 읽기 및 쓰기를 수행할 수 있다.
일반적인 컴퓨팅 시스템은 Reliability Data를 메모리 모듈에 저장되지만 Reliability Data의 생성, 이를 활용한 데이터의 에러 검사 및 복구를 메모리 제어기(MC)에서 수행되었다. 하지만, 캐시 메모리 장치에 저장된 태그 및 메타데이터는 는 읽기 동작시 메모리 제어기(MC)로 전송되지 않기 때문에, 일반적인 컴퓨팅 시스템은 태그 및 메타데이터에서 발생하는 에러를 복구를 할 수 없다.
반면에, 본 발명의 실시 예에 따른 컴퓨팅 시스템은 캐시 메모리 장치 내부에 태그와 메타데이터 보호를 위한 In-Memory ECC Logic을 구현하고, Reliability data를 저장할 수 있다. 실시 예에 있어서, 태그 캐시 메모리 장치는 복구 가능한 에러가 발생하면 복구를 수행하고, 불가능한 에러가 발생하면 메모리 제어기(MC)에 에러 발생 정보를 전송할 수 있다.
본 발명의 다른 실시 예에 따른 메모리 모듈은, 태그와 메타데이터 저장 및 In-Memory Tag Compare를 수행할 수 있는 태그 캐시 메모리 장치로 구현될 수 있다. 실시 예에 있어서, 캐시 메모리 장치는 태그, 메타데이터, 및 데이터를 저장할 수 있다. 실시 예에 있어서, 캐시 메모리 장치는 메모리 모듈 제어 장치(RCD)로부터 입력된 CA(command/address)와 태그를 이용하여 자체적으로 In-Memory Tag Compare를 수행함으로써 데이터 읽기 혹은 쓰기를 수행할 수 있다.
실시 예에 있어서, 태그에서 발생한 에러는 각 캐시 메모리 장치의 Cache Hit/Miss에 정보에 대한 Majority Voting을 수행함으로써 검출될 수 있다. 여기서 Majority Voting에 대한 문턱값이 설정될 수 있다. 예를 들어, 17개(16 Data + 1 Parity) 캐시 메모리 장치로 구성되는 메모리 모듈에서, 메모리 제어기(MC)가 8개 이상의 캐시 메모리 장치로부터 캐시 히트 신호를 수신할 경우, Majority Voting 결과는 캐시 히트가 될 수 있다. 이때 캐시 미쓰 신호를 전송한 캐시 메모리 장치가 존재하면, 메모리 제어기(MC)는 절대주소를 이용하여 캐시 미쓰 신호를 전송한 캐시 메모리 장치에 대한 접근을 재수행함으로써, 태그 에러를 복구할 수 있다.
실시 예에 있어서, Majority Voting은 Valid Bit, Dirty Bit과 같은 Metadata Error 검사 및 복구에도 이용될 수 있다.
다른 실시 에에 있어서, Majority Voting은 메모리 모듈 제어 장치(RCD)에서 수행되고, 에러 발생 유무만 메모리 제어기(MC)로 전송될 수 있다.
본 발명의 실시 예에 따른 캐시 메모리 장치는 In-Memory ECC 기능을 구비할 수 있다. 이때, 태그뿐만 아니라 메타데이터에 대한 에러 검출 및 복구가 수행될 수 있다. 만일, 캐시 메모리 장치에 Majority Voting 기능이 없으면, 복구 가능한 에러에 대해서는 에러를 복구할 수 있고, 복구 불가능한 에러 발생시 메모리 제어기(MC)에 ㅇ에러 발생 정보가 전송될 수 있다.
본 발명의 다른 실시 예에 따른 캐시 메모리 장치는, In-Memory ECC 기능 및 Majority Voting 기능을 구비할 수 있다. 이때, In-Memory ECC로 복구할 수 없는 에러에 대해서 Majority Voting을 수행함으로써, 시스템의 신뢰성을 더욱 향상 시킬 수 있다.
한편, 태그 에러에 의해 쓰기 미쓰가 쓰기 히트가 될 때, 데이터가 잘못된 위치에 저장되어, 시스템 오류가 발생될 수 있다. 본 발명의 메모리 모듈의 캐시 메모리 장치들은 쓰기 데이터를 버퍼링하고, 메모리 제어기(MC)로부터 태그 에러가 없다는 신호를 수신할 때 쓰기를 수행(commit)할 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10, 20, 30, 40: 컴퓨팅 시스템
100: 프로세서
120, MC: 메모리 제어기
122: 히트/미쓰 판별기
200, DIMM: 메모리 모듈
300, NVDIMM: 비휘발성 메모리 모듈
RCD: 메모리 모듈 제어 장치
TAG CMP: 태그 비교기

Claims (20)

  1. 적어도 하나의 비휘발성 메모리, 상기 적어도 하나의 비휘발성 메모리의 캐시 기능을 수행하는 메모리 모듈, 및 상기 적어도 하나의 비휘발성 메모리 및 상기 메모리 모듈을 제어하는 프로세서를 갖는 컴퓨팅 시스템의 방법에 있어서:
    상기 프로세서에서 상기 메모리 모듈로 커맨드 및 어드레스를 출력하는 단계;
    상기 메모리 모듈로부터 상기 어드레스에 대응하는 태그와 상기 메모리 모듈에 저장된 태그를 비교한 결과들을 지시하는 매치/언매치 비트들을 수신하는 단계;
    상기 프로세서에서 다수결을 이용하여 상기 매치/언매치 비트들로부터 캐시 히트/미쓰를 판별하는 단계; 및
    상기 프로세서에서 상기 판별된 캐시 히트/미쓰 정보를 상기 메모리 모듈로 출력하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 커맨드는 읽기 커맨드이고,
    상기 캐시 히트/미쓰 정보가 캐시 히트를 지시할 때, 상기 프로세서에서 상기 메모리 모듈로부터 데이터를 수신하는 단계를 더 포함하는 방법.
  3. 제 1 항에 있어서,
    상기 커맨드는 읽기 커맨드이고,
    상기 캐시 히트/미쓰 정보가 캐시 미쓰를 지시할 때, 상기 어드레스에 응답하여 상기 적어도 하나의 비휘발성 메모리로부터 데이터를 읽는 단계; 및
    상기 프로세서에서 상기 읽혀진 데이터를 상기 메모리 모듈을 경유하여 수신하는 단계를 더 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 메모리 모듈은 상기 태그 및 상기 태그에 대응하는 데이터를 저장하는 복수의 캐시 디램들을 포함하고,
    상기 복수의 캐시 디램들 각각은 상기 어드레스에 대응하는 태그와 저장된 태그를 비교하고, 상기 비교 결과에 따라 매치/언매치 비트를 출력하는 태그 비교기를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 매치/언매치 비트들에 관련된 매치 비트 카운트가 0보다 크고 언매치 비트 카운트가 0보다 큰 지를 판별하는 단계;
    상기 매치 비트 카운트가 0 이거나 상기 언매치 비트 카운트가 0일 때, 태그 에러가 존재하지 않는다고 판별하는 단계; 및
    상기 매치 비트 카운트가 0 보다 크고, 상기 언매치 비트 카운트가 0보다 클 때, 태그 에러가 존재한다고 판별하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    쓰기 동작 혹은 읽기 동작시 태그 에러가 존재하지 않는 캐시 디램의 위치 정보를 이용하여 태그 에러가 존재하는 캐시 디램을 접근하는 단계를 더 포함하는 방법.
  7. 제 5 항에 있어서,
    태그 에러가 존재하지 않은 캐시 디램의 위치 정보와 패리티를 이용하여 태그 에러가 존재하는 캐시 디램의 태그 에러를 정정하는 단계를 더 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 메모리 모듈에서 쓰기 동작시 태그 에러 검출 및 정정하기 전까지 데이터를 버퍼링하는 단계; 및
    상기 태그 에러를 정정한 뒤 상기 버퍼링된 데이터를 쓰는 단계를 더 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 메모리 모듈은 상기 데이터, 혹은 메타데이터에 대응하는 패리티를 저장하고,
    상기 메타데이터는 상기 태그에 대응하는 캐시의 유효성 비트 혹은 더티 비트를 포함하고,
    상기 프로세서에서 상기 패리티를 이용하여 상기 데이터 혹은 상기 메타데이터의 에러를 저장하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리는 상기 프로세서에 DDR-T(double data rate transaction) 인터페이스에 의해 연결되는 방법.
  11. 적어도 하나의 비휘발성 메모리, 상기 적어도 하나의 비휘발성 메모리의 캐시 기능을 수행하는 메모리 모듈; 및 상기 적어도 하나의 비휘발성 메모리 및 상기 메모리 모듈을 제어하는 프로세서를 갖는 컴퓨팅 시스템의 태그 에러 테스트 방법에 있어서:
    상기 메모리 모듈의 복수의 캐시 디램들 각각에서 어드레스에 대응하는 태그 및 대응하는 캐시 디램에 저장된 태그를 비교한 결과로써의 매치/언매치 비트를 발생하는 단계;
    매치 비트 카운트가 0보다 크고 언매치 비트 카운트가 0보다 큰 지를 판별하는 단계; 및
    상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 클 때, 다수결을 이용하여 매치/언매치 비트들로부터 캐시 히트/미쓰를 판별하는 단계를 포함하는 태그 에러 테스트 방법.
  12. 제 11 항에 있어서,
    상기 프로세서의 메모리 제어기에서 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 큰 지를 판별하는 태그 에러 테스트 방법.
  13. 제 11 항에 있어서,
    상기 메모리 모듈에서 상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트가 카운트가 0보다 큰 지를 판별하는 태그 에러 테스트 방법.
  14. 제 11 항에 있어서,
    상기 매치 비트 카운트가 0이거나 상기 언매치 비트 카운트가 0일 때, 태그 에러가 존재하지 않는다고 판별하는 단계를 더 포함하는 태그 에러 테스트 방법.
  15. 제 11 항에 있어서,
    상기 매치 비트 카운트가 0보다 크고 상기 언매치 비트 카운트가 0보다 클 때, 태그 에러가 존재한다고 판별하는 단계; 및
    상기 태그 에러가 존재할 때, 태그 에러가 존재하지 않는 캐시 디램의 위치 정보를 이용하여 상기 태그 에러가 존재하는 캐시 디램에 저장된 태그의 에러를 정정하는 단계를 더 포함하는 태그 에러 테스트 방법.
  16. 태그 및 상기 태그에 대응하는 데이터를 저장하는 복수의 캐시 디램들; 및
    커맨드 및 어드레스를 입력 받고, 상기 복수의 캐시 디램들을 제어하는 메모리 모듈 제어 장치를 포함하고,
    상기 복수의 캐시 디램들 각각은,
    상기 저장된 태그와 상기 어드레스에 대응하는 태그를 비교하고, 상기 비교결과에 대응하는 매치/언매치 비트를 출력하는 태그 비교기; 및
    캐시 히트/미쓰 정보에 응답하여 상기 커맨드에 대응하는 데이터를 출력하는 버퍼 회로를 포함하고,
    상기 캐시 히트/미쓰 정보는 상기 복수의 캐시 디램들로부터 출력된 매치/언매치 비트들에 대한 다수결에 따라 결정된 값인 메모리 모듈.
  17. 제 16 항에 있어서,
    상기 복수의 캐시 디램들 각각은,
    상기 태그, 상기 데이터, 혹은 메타데이터에 대응하는 패리티를 저장하고,
    상기 패리티를 이용하여 상기 태그, 상기 데이터, 혹은 상기 메타데이터를 정정하는 에러 정정 로직을 포함하는 메모리 모듈.
  18. 제 17 항에 있어서,
    다수결에 의해 상기 매치/언매치 비트들로부터 태그 에러를 검출하고,
    태그 에러 검출된 캐시 디램의 에러 정정 로직은, 에러 정정이 가능할 때, 상기 태그 에러를 정정하는 메모리 모듈.
  19. 제 17 항에 있어서,
    다수결에 의해 상기 매치/언매치 비트들로부터 태그 에러를 검출하고,
    태그 에러 검출된 캐시 디램의 에러 정정 로직은, 에러 정정이 가능하지 않을 때, 태그 에러 정보를 외부로 출력하는 메모리 모듈.
  20. 제 16 항에 있어서,
    상기 캐시 히트/미쓰 정보는 외부로부터 수신하거나, 내부적으로 발생되는 메모리 모듈.
KR1020160062280A 2015-12-14 2016-05-20 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법 KR20170131797A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160062280A KR20170131797A (ko) 2016-05-20 2016-05-20 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법
US15/479,795 US10019367B2 (en) 2015-12-14 2017-04-05 Memory module, computing system having the same, and method for testing tag error thereof
CN201710357927.4A CN107423230B (zh) 2016-05-20 2017-05-19 存储器模块、具有其的计算系统及测试其标签错误的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160062280A KR20170131797A (ko) 2016-05-20 2016-05-20 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법

Publications (1)

Publication Number Publication Date
KR20170131797A true KR20170131797A (ko) 2017-11-30

Family

ID=60425614

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160062280A KR20170131797A (ko) 2015-12-14 2016-05-20 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법

Country Status (2)

Country Link
KR (1) KR20170131797A (ko)
CN (1) CN107423230B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109634785A (zh) * 2018-12-29 2019-04-16 西安紫光国芯半导体有限公司 一种兼容nvdimm-p的nvdimm-n装置和方法
US11521690B2 (en) 2018-03-16 2022-12-06 Micron Technology, Inc. NAND data placement schema
US11635894B2 (en) 2018-03-16 2023-04-25 Micron Technology, Inc. Clustered parity for NAND data placement schema

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111448543B (zh) 2017-12-07 2021-10-01 华为技术有限公司 内存访问技术及计算机系统
KR101936951B1 (ko) * 2018-04-11 2019-01-11 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 메모리 시스템
CN112289353B (zh) * 2019-07-25 2024-03-12 上海磁宇信息科技有限公司 一种优化的具有ecc功能的mram系统及其操作方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470438B1 (en) * 2000-02-22 2002-10-22 Hewlett-Packard Company Methods and apparatus for reducing false hits in a non-tagged, n-way cache
US20050027932A1 (en) * 2003-07-31 2005-02-03 Thayer Larry J. Content addressable memory with redundant stored data
WO2013081587A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Instruction and logic to provide vector horizontal majority voting functionality
US8806294B2 (en) * 2012-04-20 2014-08-12 Freescale Semiconductor, Inc. Error detection within a memory
US8984372B2 (en) * 2012-11-21 2015-03-17 Nvidia Corporation Techniques for storing ECC checkbits in a level two cache

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521690B2 (en) 2018-03-16 2022-12-06 Micron Technology, Inc. NAND data placement schema
US11635894B2 (en) 2018-03-16 2023-04-25 Micron Technology, Inc. Clustered parity for NAND data placement schema
US11955189B2 (en) 2018-03-16 2024-04-09 Micron Technology, Inc. NAND data placement schema
CN109634785A (zh) * 2018-12-29 2019-04-16 西安紫光国芯半导体有限公司 一种兼容nvdimm-p的nvdimm-n装置和方法

Also Published As

Publication number Publication date
CN107423230A (zh) 2017-12-01
CN107423230B (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
US9971697B2 (en) Nonvolatile memory module having DRAM used as cache, computing system having the same, and operating method thereof
US10019367B2 (en) Memory module, computing system having the same, and method for testing tag error thereof
KR20170131797A (ko) 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법
US10255989B2 (en) Semiconductor memory devices, memory systems including the same and methods of operating the same
KR102002925B1 (ko) 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
US9432018B2 (en) Storage controllers, methods of operating the same and solid state disks including the same
US11086571B2 (en) Nonvolatile memory capable of outputting data using wraparound scheme, computing system having the same, and read method thereof
US11481149B2 (en) Memory module and memory system relating thereto
US20190102088A1 (en) Method and apparatus for reducing silent data errors in non-volatile memory systems
TW201243856A (en) Methods, devices, and systems for data sensing
US10296405B2 (en) Nonvolatile memory system and error determination method thereof
TWI716630B (zh) 用於以電流積分感測產生機率資訊之裝置及方法
US11682467B2 (en) Nonvolatile memory device, controller for controlling the same, storage device including the same, and reading method of the same
US20240095122A1 (en) Memory device, a controller for controlling the same, a memory system including the same, and an operating method of the same
US20220359033A1 (en) Health scan for content addressable memory
KR102646721B1 (ko) 컴퓨팅 시스템, 비휘발성 메모리 모듈, 및 저장 장치의 동작 방법
US11688453B2 (en) Memory device, memory system and operating method
CN116092547A (zh) 存储器装置、存储器系统及该存储器装置的操作方法
CN114974338A (zh) 非易失性存储器装置、存储器控制器和存储装置的读方法
CN108628766B (zh) 非易失存储器、计算系统、及读取方法
EP4310846A1 (en) Storage controllers, operating methods of storage controllers, and operating methods of storage devices including storage controllers
US11955175B2 (en) Copy redundancy in a key-value data storage system using content addressable memory
US20230152984A1 (en) Storage devices configured to obtain data of external devices for debugging
EP4184332A1 (en) Storage controller and storage device including the same
CN117349076A (zh) 存储控制器、其操作方法和包括其的存储装置的操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal