KR20170007583A - 컴퓨팅 시스템 및 그것의 쓰기 방법 - Google Patents

컴퓨팅 시스템 및 그것의 쓰기 방법 Download PDF

Info

Publication number
KR20170007583A
KR20170007583A KR1020150097296A KR20150097296A KR20170007583A KR 20170007583 A KR20170007583 A KR 20170007583A KR 1020150097296 A KR1020150097296 A KR 1020150097296A KR 20150097296 A KR20150097296 A KR 20150097296A KR 20170007583 A KR20170007583 A KR 20170007583A
Authority
KR
South Korea
Prior art keywords
memory module
volatile memory
data
flush
host
Prior art date
Application number
KR1020150097296A
Other languages
English (en)
Other versions
KR102473206B1 (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 KR1020150097296A priority Critical patent/KR102473206B1/ko
Priority to US15/196,726 priority patent/US10078448B2/en
Publication of KR20170007583A publication Critical patent/KR20170007583A/ko
Application granted granted Critical
Publication of KR102473206B1 publication Critical patent/KR102473206B1/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명에 따른 호스트, 비휘발성 메모리 모듈 및 메모리 모듈을 포함하는 컴퓨팅 시스템의 쓰기 방법은, 플러시 인스트럭션 및 플러시 데이터를 상기 비휘발성 메모리 모듈로 출력하는 단계, 상기 플러시 인스트럭션 및 상기 플러시 데이터를 상기 메모리 모듈로 출력하는 단계, 및 커밋 인스트럭션을 상기 비휘발성 메모리 모듈과 상기 메모리 모듈로 출력하는 단계를 포함한다.

Description

컴퓨팅 시스템 및 그것의 쓰기 방법{COMPUTING SYSTEM AND WRITING METHOD THERFOF}
본 발명은 컴퓨팅 시스템 및 그것의 쓰기 방법에 관한 것이다.
현재 사용되는 컴퓨팅 시스템의 다양한 인터페이스와 호환 가능한 비휘발성 메모리에 대한 연구가 이루어지고 있다. 즉, 플래시 메모리를 메인 메모리(또는, 워킹 메모리)와 동일한 슬롯이나 채널에 장착하여 데이터 저장 장치나 메모리로 사용하려는 시도들이 이루어지고 있다. 이 경우에는 종래에 사용하던 휘발성 램(예를 들면, DRAM)과의 호환성이 고려되어야 한다. 휘발성 램과의 호환성을 유지하면서도 최상의 데이터 신뢰성(data integrity), 저전력 특성을 제공할 수 있는 기술이 필요한 실정이다.
본 발명의 목적은 신규한 컴퓨팅 시스템 및 그것의 쓰기 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 호스트, 비휘발성 메모리 모듈 및 메모리 모듈을 포함하는 컴퓨팅 시스템의 쓰기 방법은, 플러시 인스트럭션 및 플러시 데이터를 상기 비휘발성 메모리 모듈로 출력하는 단계, 상기 플러시 인스트럭션 및 상기 플러시 데이터를 상기 메모리 모듈로 출력하는 단계, 및 커밋 인스트럭션을 상기 비휘발성 메모리 모듈과 상기 메모리 모듈로 출력하는 단계를 포함한다.
실시 예에 있어서, 어플리케이션으로부터 플러시 쓰기 요청을 입력 받는 단계를 더 포함한다.
실시 예에 있어서, 상기 플러시 인스트럭션에 응답하여 상기 플러시 데이터를 상기 비휘발성 메모리 모듈의 램으로 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 호스트는 커널 스페이스와 유저 스페이스를 포함하고, 상기 유저 스페이스는 상기 비휘발성 메모리 모듈의 상기 램을 억세스하기 위한 적어도 하나의 인스트럭션을 포함하는 비휘발성 메모리 라이브러리를 포함한다.
실시 예에 있어서, 상기 커널 스페이스는 상기 비휘발성 메모리 모듈의 상기 램의 어드레스를 관리하는 메모리 관리 유닛 맵핑 테이블을 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리 모듈로 출력하는 단계 이후에 상기 메모리 모듈로 출력하는 단계가 진행된다.
실시 예에 있어서, 상기 메모리 모듈로 출력하는 단계 이후에 상기 비휘발성 메모리 모듈로 출력하는 단계가 진행된다.
실시 예에 있어서, 상기 비휘발성 메모리 모듈의 상기 램에 저장된 플러시 데이터를 상기 플러시 인스트럭션에 응답하여 상기 비휘발성 메모리 모듈의 내부의 비휘발성 메모리로 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 플러시 인스트럭션에 응답하여 상기 플러시 데이터를 상기 메모리 모듈의 메모리 할당 영역에 저장하는 단계; 및 상기 메모리 모듈의 상기 램에 저장된 플러시 데이터를 상기 플러시 인스트럭션에 응답하여 상기 메모리 모듈의 내부의 디램(dynamic random access memory, DRAM)으로 저장하는 단계를 더 포함한다.
실시 예에 있어서, 커널 스페이스의 영구 메모리 인식 파일 시스템을 이용하여 상기 비휘발성 메모리 모듈에 데이터를 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리 모듈의 모드를 설정하는 단계를 더 포함하고, 상기 비휘발성 메모리 모듈의 모드는, 저장 모드와 백업 데이터 저장 모드 중 어느 하나이다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 호스트, 상기 호스트와 DDR(double data rate) 인터페이스를 통하여 통신하는 적어도 하나의 메모리 모듈; 및 상기 호스트와 상기 DDR 인터페이스를 통하여 통신하는 적어도 하나의 비휘발성 메모리 모듈을 포함하고, 상기 호스트는, 읽기 요청시 상기 적어도 하나의 메모리 모듈의 메모리 할당 영역으로부터 데이터를 읽고, 쓰기 요청시, 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈 각각에 쓰기 데이터를 전송한다.
실시 예에 있어서, 상기 쓰기 요청은 플러싱 라이트(flushing write) 요청이고, 상기 호스트는, 상기 플러싱 라이트 요청에 응답하여 플러시 인스트럭션 및 플러시 데이터를 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하고, 이후에 상기 커밋 인스트럭션을 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈로 전송한다.
실시 예에 있어서, 상기 호스트는 커널 스페이스와 유저 스페이스를 포함하고, 상기 유저 스페이스의 어플리케이션은 상기 커널 스페이스의 비휘발성 메모리 라이브러리를 이용하여 상기 적어도 하나의 비휘발성 메모리 모듈의 램을 억세스하고, 상기 적어도 하나의 비휘발성 메모리 모듈의 상기 램의 억세스 동작시 상기 커널 스페이스의 메모리 관리 유닛 맵핑 테이블이 이용된다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈은, 적어도 하나의 비휘발성 메모리와 적어도 하나의 디램(DRAM, dynamic random access memory)을 포함한다.
상술한 바와 같이 본 발명에 따른 컴퓨팅 시스템 및 그것의 쓰기 방법은, 라이브러리를 통하여 비휘발성 메모리 모듈의 램을 직접 액세스함으로써, 전체적인 성능 향상을 꾀할 수 있다.
도 1은 본 발명의 실시 예에 따른 호스트를 포함한 컴퓨팅 시스템을 개략적으로 설명하는 도면이다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 읽기 방법을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법을 예시적으로 보여주는 도면이다.
도 4는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 비휘발성 메모리 모듈(NVDIMM)의 소프트웨어 구조(architecture)를 예시적으로 보여주는 블록도이다.
도 6은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법을 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 9는 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 1 실시 예를 예시적으로 보여주는 블록도이다.
도 10은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 2 실시 예를 예시적으로 보여주는 블록도이다.
도 11은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 3 실시 예를 예시적으로 보여주는 블록도이다.
도 12는 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 4 실시 예를 예시적으로 보여주는 블록도이다.
도 13은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 5 실시 예를 예시적으로 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 비휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 혹은 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 실시 예에 따른 호스트(100)를 개략적으로 설명하는 도면이다. 도 1을 참조하면, 호스트(100)는 유저 스페이스(120) 및 커널 스페이스(140)를 포함할 수 있다.
도 1에 도시된 각 구성 요소(120, 140)는 소프트웨어(software) 또는, FPGA(field-programmable gate array)나 ASIC(application-specific integrated circuit)과 같은 하드웨어(hardware)를 의미할 수 있다. 하지만 구성 요소들은 소프트웨어 또는 하드웨어에 제한되지 않으며, 어드레싱(addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 적어도 하나의 프로세서를 실행시키도록 구성될 수도 있다. 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성요소에 의하여 구현될 수 있으며, 복수의 구성요소들을 합하여 특정한 기능을 수행하는 하나의 구성요소로 구현할 수도 있다.
유저 스페이스(120)는 어플리케이션(application, 122)이 실행되는 영역이고, 커널 스페이스(140)는 커널(kernel) 실행을 위해서 제한적으로 보장된(restrictively reserved) 영역이다. 유저 스페이스(120)에서 커널 스페이스(140)를 접근하기 위해서, 시스템 콜(system call)이 이용될 수 있다.
커널 스페이스(140)는 영구 메모리 인식 파일 시스템(PM-Aware FS, 142) 및 메모리 관리 유닛 맵핑 테이블(MMU Mapping, 114)를 포함할 수 있다.
어플리케이션(122)은 영구 메모리 인식 파일 시스템(142)을 이용하여 비휘발성 메모리 모듈(NVDIMM, 200)의 데이터를 억세스(로드, 저장, 읽기, 등) 할 수 있다. 여기서 어플리케이션(122)은 API(application processor interface)를 통하여 영구 메모리 인식 파일 시스템(142)과 통신할 수 있다.
또한, 어플리케이션(122)은 유저 스페이스(120)의 비휘발성 메모리 라이브러리(NVM Library, 124) 및 커널 스페이스(140)의 메모리 관리 유닛 맵핑 테이블(144)을 이용하여 비휘발성 메모리 모듈(200)의 램(RAM, random access memory, 220)를 억세스 할 수 있다. 실시 예에 있어서, 램(220)은 듀얼 포트 SRAM(static RAM)일 수 있다. 비휘발성 메모리 라이브러리(124)는 비휘발성 메모리 모듈(200)의 램(220)을 효율적으로 관리하기 위한 적어도 하나의 인스트럭션을 포함할 수 있다. 예를 들어, 적어도 하나의 인스트럭션은, 플러싱 라이트(flushing write)와 관련된 CLFLUSH(cache line flush), CLFLUSHOPT(optimized cache line flush), CLWB(cache line write back), PCOMMIT(persistent commit) 등을 포함할 수 있다.
본 발명의 비휘발성 메모리 모듈(NVDIMM, 200)은 적어도 하나의 비휘발성 메모리를 포함할 수 있다. 본 발명의 비휘발성 메모리는 낸드 플래시 메모리(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)에도 모두 적용 가능하다.
본 발명의 실시 예에 따른 호스트(100)는 비휘발성 메모리 모듈(200)의 램(220)를 억세스하기 위한 비휘발성 메모리 라이브러리(124)를 구비함으로써, 보다 효율적으로 비휘발성 메모리 모듈(200)을 관리할 수 있다.
도 2는 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 읽기 방법을 예시적으로 보여주는 도면이다. 도 2를 참조하면, 컴퓨팅 시스템(10)은, 호스트(MCH/CPU, 100), 비휘발성 메모리 모듈(NVDIMM, 200), 및 휘발성 메모리 모듈(DIMM, 300)을 포함할 수 있다.
호스트(100)는 CPU(central processing unit), 코프로세서(co-processor), APU(arithmetic processing unit), GPU(graphic processing unit), DSP(digital signal processor), MCH(memory controller hub) 등 일 수 있다. 도시되지 않았지만, 호스트(100)는 비휘발성 메모리 모듈(200) 및 휘발성 메모리 모듈(300)을 관리하기 위한 메모리 관리 유닛(MMU, memory management unit)을 더 포함할 수 있다.
비휘발성 메모리 모듈(200)은 DDR 인터페이스를 통하여 프로세서(100)와 데이터를 송수신할 수 있다. 비휘발성 메모리 모듈(200)은, 도시되지 않았지만, 적어도 하나의 NVM(non volatile memory)를 포함할 수 있다. 실시 예에 있어서, 비휘발성 메모리 모듈(200)은 듀얼 인-라인 메모리 모듈로 구현될 수 있다. 실시 예에 있어서, 비휘발성 메모리 모듈(200)은 NVDIMM-N 타입 혹은 NVDIMM-F 타입으로 구현될 수 있다. 여기서 NVDIMM-N은, DRAM와 DRAM의 백업용으로 이용하는 플래시 메모리를 포함한다. NVDIMM-F는 블록 지향 대용량 저장 장치로 억세스 가능한 플래시 메모리를 포함한다. 또한, 비휘발성 메모리 모듈(200)은 호스트(100)의 어플리케이션에서 억세스 가능한 램(200)을 포함하고, 비휘발성 메모리 모듈(200)을 관리하기 위한 맵 테이블(240)을 저장할 수 있다.
메모리 모듈(300)은 DDR(double data rate) 인터페이스를 통하여 프로세서(100)와 데이터를 송수신할 수 있다. 메모리 모듈(300)은, 도시되지 않았지만, 적어도 하나의 DRAM(dynamic random access memory)을 포함할 수 있다. 실시 예에 있어서, 메모리 모듈(300)은 듀얼 인-라인 메모리 모듈(dual ln-line memory module)로 구현될 수 있다. 메모리 모듈(300)은 메모리 할당 영역(320)을 포함할 수 있다. 여기서 메모리 할당 영역(320)은 호스트(100)의 어플리케이션에서 억세스 가능한 영역이다.
컴퓨팅 시스템(10)의 읽기 동작시, 호스트(100)는 메모리 모듈(300)의 메모리 할당 영역(320)에 억세스할 수 있다. 즉, 메모리 모듈(300)의 메모리 할당 영역(320)에 저장된 데이터를 읽어올 수 있다.
또한, 도시되지 않았지만, 비휘발성 메모리 모듈(200)과 메모리 모듈(300) 각각은 동일한 통신 인터페이스 규격의 물리적인 슬롯에 의하여 호스트(100)에 연결될 수 있다. 예를 들어, 통신 인터페이스는 DDR 시리즈(DDR2, DDR3, DDR4, DDR5, DDRx, 여기서 x는 세대를 의미함) 규격에 적합할 수 있다.
도 2에 도시된 바와 같이, 호스트(100)에서 관리하는 메인 메모리는 비휘발성 메모리 모듈(200)과 메모리 모듈(300)을 포함할 수 있다. 호스트(100)는 메모리 관리 유닛에 의하여 메인 메모리를 할당 및/혹 해제 등 관리할 수 있다.
도 3은 본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 쓰기 방법을 예시적으로 보여주는 도면이다. 도 3을 참조하면, 쓰기 방법은 플러싱 라이트(flushing write)에 관련된 것일 수 있다.
호스트(100)는 플러시 인스트럭션(CLFLUSH) 및 플러시 데이터를 비휘발성 메모리 모듈(NVDIMM, 200)에 전송할 수 있다. 즉, 플러시 인스트럭션(CLFLUSH)에 응답하여 호스트(100) 내의 캐시 데이터가 비휘발성 메모리 모듈(200)의 램(220)으로 전송될 수 있다(①). 이후, 호스트(100)는 플러시 인스트럭션(CLFLUSH) 및 플러시 데이터를 메모리 모듈(DIMM, 300)에 전송할 수 있다. 즉, 플러시 인스트럭션(CLFLUSH)에 응답하여 호스트(100) 내의 캐시 데이터는 메모리 모듈(300)의 메모리 할당 영역(320)의 데이터로 전송될 수 있다(②).
이후, 호스트(100)는 비휘발성 메모리 모듈(200) 및 메모리 모듈(300)에 커밋 인스트럭션(PCOMMIT)을 전송할 수 있다. 커밋 인스트럭션(PCOMMIT)에 응답하여 비휘발성 메모리 모듈(200)은 메모리 제어기로 전송된 데이터를 비휘발성 메모리 모듈(200) 내부의 비휘발성 메모리에 전송할 수 있다. 즉, 커밋 인스트럭션(PCOMMIT)에 응답하여 램(220)의 데이터가 비휘발성 메모리 모듈(200)의 비휘발성 메모리에 라이트 백(write back)될 수 있다. 동시에, 커밋 인스트럭션(PCOMMIT)에 응답하여 메모리 모듈(300)은 메모리 제어기로 전송된 데이터를 메모리 모듈(300) 내부의 디램(DRAM, dynamic random access memory)에 전송할 수 있다. 이로써, 호스트(100) 내부의 캐시 데이터 업데이트가 확정될 수 있다(③).
본 발명의 컴퓨팅 시스템(10)의 쓰기 동작은, 크게 i) 플러시 인스트럭션(CLFLUSH)에 응답하는 과정과 ii) 커밋 인스트럭션(PCOMMIT)에 응답하는 과정을 포함할 수 있다.
한편, 도 3에서는 플러시 인스트럭션(CLFLUSH)를 비휘발성 메모리 모듈(NVDIMM)에 먼저 전송한 뒤, 메모리 모듈(DIMMM)에 전송하였다. 하지만, 본 발명이 여기에 제한될 필요는 없다. 본 발명의 쓰기 동작은, 플러시 인스트럭션(CLFLUSH)를 메모리 모듈(DIMM)에 전송한 뒤, 비휘발성 메모리 모듈(NVDIMM)에 전송할 수도 있다.
도 4는 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 컴퓨팅 시스템(20)은, 도 3에 도시된 그것과 비교하여, 플러싱 라이트 동작시, 플러시 인스트럭션(CLFLUSH)와 플러시 데이터를 우선적으로 메모리 모듈(300)에 전송한 뒤, 뒤따라 비휘발성 메모리 모듈(200)에 전송하는 차이점을 갖는다.
도 5는 본 발명의 실시 예에 따른 비휘발성 메모리 모듈(NVDIMM)의 소프트웨어 구조(architecture)를 예시적으로 보여주는 블록도이다. 도 5를 참조하면, 어플리케이션은 비휘발성 메모리 라이브러리를 이용한 억세스 가능한 로드(load)/스토어(store) 인터페이스를 통하여 비휘발성 메모리 모듈(NVDIMM)의 램을 억세스할 수 있다. 또한, 비휘발성 메모리 모듈 드라이버는, 영구 메모리 인식 파일 시스템 혹은 파일 시스템을 이용하여 비휘발성 메모리 모듈(NVDIMM)을 억세스할 수 있다. 여기서 비휘발성 메모리 모듈 드라이버는 API를 통하여 어플리케이션과 통신할 수 있다. 또한, 어플리케이션은 파일 시스템을 경유하지 않고 로우 디바이스(raw device) 억세스 인터페이스를 이용하여 비휘발성 메모리 모듈을 직접 억세스할 수 있다. 여기서 로우 디바이스는 파일 시스템이 설정하지 않은 영역이다.
한편, 관리 유저 인터페이스(management UI)는 관리 라이브러리(management library)를 이용하여 비휘발성 메모리 모듈 드라이버를 제어할 수 있다. 관리 라이브러리는 메모리 모듈(DIMM) 및/혹 비휘발성 메모리 모듈(NVDIMM)를 구성하는 메인 메모리(혹, 시스템 메모리)에서 메모리 할당, 해제 등 관리하기 위한 인스트럭션들을 포함할 수 있다.
한편, 본 발명의 호스트는 비휘발성 메모리 모듈(NVDIMM)의 모드를 자유롭게 할당할 수 있다.
도 6은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(20)을 예시적으로 보여주는 도면이다. 도 6을 참조하면, 컴퓨팅 시스템(20)은 호스트(100b), 제 1 비휘발성 메모리 모듈(NVDIMM, 200-1) 및 제 2 비휘발성 메모리 모듈(200-2)을 포함할 수 있다.
호스트(100b)는 초기화 동작시 제 1 및 제 2 비휘발성 메모리 모듈들(200-1, 200-2)의 SPD(serial presence detect, 210-1, 210-2)로부터 모듈 정보를 읽어 올 수 있다. 호스트(100b)는 제 1 및 제 2 비휘발성 메모리 모듈들(200-1, 200-2)의 모드를 설정할 수 있다. 만일, 제 1 비휘발성 메모리 모듈(200-1)은 NVDIMM-N 모드(혹, 데이터 백업 저장 모드)로 설정하고, 제 2 비휘발성 메모리 모듈(200-2)은 NVDIMM-F 모드(혹, 저장 장치 모드)로 설정하고자 할 때, 호스트(100b)는 대응하는 모듈 정보를 발생하여 제 1 및 제 2 비휘발성 메모리 모듈들(200-1, 200-2) 각각의 SPD(serial presence detect, 210-1, 210-2) 전송할 수 있다. 여기서 제 1 및 제 2 비휘발성 메모리 모듈(200-1, 200-2) 각각은 NVDIMM-F 모드로 사용되거나 NVDIMM-N 모드로 사용될 수 있다.
도 7은 본 발명의 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 7을 참조하면, 컴퓨팅 시스템의 쓰기 방법은 다음과 같다.
어플리케이션으로부터 플러싱 라이트(flushing write) 요청이 입력된다(S110). 호스트(100)는 메모리 모듈(DIMM)과 비휘발성 메모리 모듈(NVDIMM) 각각에 플러시 인스트럭션(CLFLUSH) 및 대응하는 플러시 데이터를 출력할 수 있다(S120). 소정의 시간이 지난 후에, 호스트(100)는 메모리 모듈(DIMM) 및 비휘발성 메모리 모듈(NVDIMM)에 동시에 커밋 인스트럭션(PCOMMIT)을 출력할 수 있다. 커밋 인스트럭션(PCOMMIT)에 응답하여 메모리 모듈(DIMM)의 할당 영역에 저장된 플러시 데이터는 내부의 디램에 저장되고, 비휘발성 메모리 모듈(NVDIMM)의 램에 저장된 플러시 데이터는 내부의 비휘발성 메모리(NVM)에 저장될 수 있다(S130).
본 발명의 실시 예에 따른 컴퓨팅 시스템의 쓰기 방법은, 플러시 인스트럭션(CLFLUSH) 및 커밋 인스트럭션(PCOMMIT) 이용하여 메모리 모듈(DIMM)과 비휘발성 메모리 모듈(NVDIMM)에 플러싱 라이트 동작을 수행할 수 있다.
도 8은 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 8을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 메모리 모듈들(DIMM, 1200, 1250), 비휘발성 메모리 모듈들(NVDIMM, 1300, 1305), 칩셋(1400), GPU(1500), 입출력 장치(1600), 그리고 스토리지 장치(1700)를 포함한다.
프로세서(1100)는 컴퓨팅 시스템(1000)의 제반 동작을 제어할 수 있다. 프로세서(1100)는 컴퓨팅 시스템(1000)에서 수행되는 다양한 연산을 수행할 수 있다. 프로세서(1100)는, 도 1 내지 도 7에 설명된 호스트(100, 100a, 100b)로 구현될 수 있다.
메모리 모듈들(1200, 1250), 비휘발성 메모리 모듈들(1300, 1305)은 프로세서(1100)와 직접적으로 연결될 수 있다. 예를 들어, 메모리 모듈들(1200, 1250), 비휘발성 메모리 모듈들(1300, 1305) 각각은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module) 형태를 가질 수 있다. 또는, 메모리 모듈들(1200, 1250), 비휘발성 메모리 모듈들(1300, 1305) 각각은 프로세서(1100)와 직접적으로 연결된 DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
비휘발성 메모리 모듈들(1300, 1305) 각각은 도 1 내지 도 7을 참조하여 설명된 비휘발성 메모리 모듈(200, 200-1, 200-2)일 수 있다.
메모리 모듈들(1200, 1250), 비휘발성 메모리 모듈들(1300, 1305)은 동일한 인터페이스(1150)를 통해 프로세서(1100)와 통신할 수 있다. 예를 들어, 비휘발성 메모리 모듈들(1300, 1305) 및 메모리 모듈들(1200, 1250)은 DDR(Double Data Rate) 방식의 인터페이스(1150)를 통해 통신할 수 있다. 예시적으로, 프로세서(1100)는 메모리 모듈들(1200, 1250)을 컴퓨팅 시스템(1000)의 동작 메모리, 버퍼 메모리, 또는 캐시 메모리로서 사용할 수 있다.
칩셋(1400)은 프로세서(1100)와 전기적으로 연결되고, 프로세서(1100)의 제어에 따라 컴퓨팅 시스템(1000)의 하드웨어를 제어할 수 있다. 예를 들어, 칩셋(1400)은 주요 버스들을 통해 GPU(1500), 입출력 장치(1600), 및 스토리지 장치(1700) 각각과 연결되고, 주요 버스들에 대한 브릿지 역할을 수행할 수 있다.
GPU(1500)는 컴퓨팅 시스템(1000)의 영상 데이터를 출력하기 위한 일련의 연산 동작을 수행할 수 있다. 예시적으로 GPU(1500)는 시스템-온-칩 형태로 프로세서(1100) 내에 실장 될 수 있다.
입출력 장치(1600)는 컴퓨팅 시스템(1000)으로 데이터 또는 인스트럭션을 입력하거나 또는 외부로 데이터를 출력하는 다양한 장치들을 포함한다. 예를 들어, 입출력 장치(1600)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 장치들 및 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 장치들을 포함할 수 있다.
스토리지 장치(1700)는 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. 스토리지 장치(1600)는 하드 디스크 드라이브, SSD, 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.
예시적으로, 비휘발성 메모리 모듈들(1300, 1305)은 프로세서(1100)에 의해 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. 비휘발성 메모리 모듈들(1300, 1305) 및 프로세서(1100) 사이의 인터페이스(1150)는 스토리지 장치(1700) 및 프로세서(1100) 사이의 인터페이스보다 고속 인터페이스일 수 있다. 즉, 프로세서(1100)가 비휘발성 메모리 모듈들(1300, 1305)을 저장 매체로서 사용함으로써 컴퓨팅 시스템의 성능이 향상된다.
도 9는 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 1 실시 예를 예시적으로 보여주는 블록도이다. 예시적으로, 도 9는 LRDIMM(Load Reduced DIMM) 형태를 갖는 비휘발성 메모리 모듈(1300)을 보여준다. 예시적으로, 도 9에 도시된 비휘발성 메모리 모듈(1300)은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
도 9를 참조하면, 비휘발성 메모리 모듈(1300)은 비휘발성 메모리 모듈 제어기(1310), 버퍼 메모리(1320), 비휘발성 메모리 장치(1330), 및 직렬 프레즌스 검출 칩(1340)(SPD; Serial Presence Detect chip)를 포함한다. 비휘발성 메모리 모듈 제어기(1310)는 램(1311)을 포함할 수 있다. 예시적으로, 비휘발성 메모리 장치(1330)는 복수의 비휘발성 메모리들(NVM)을 포함할 수 있다. 비휘발성 메모리 장치(1330)에 포함된 복수의 비휘발성 메모리들 각각은 별도의 칩, 별도의 패키지, 별도의 장치, 또는 별도의 모듈로 각각 구현될 수 있다. 또는 비휘발성 메모리 장치(1330)는 하나의 칩 또는 하나의 패키지로 구현될 수 있다.
예시적으로, 비휘발성 메모리 모듈 제어기(1310)는 프로세서(1100)와 복수의 데이터 신호들(DQ) 및 복수의 데이터 스트로브 신호들(DQS)을 송수신할 수 있고, 별도의 신호 라인들을 통해 램 인스트럭션(CMD_R), 램 어드레스(ADDR_R), 및 클록(CK)을 수신할 수 있다.
SPD(1340)는 프로그램 가능 읽기 전용 기억 장치(EEPROM)일 수 있다. SPD(1340)는 비휘발성 메모리 모듈(1300)의 초기 정보 또는 장치 정보를 포함할 수 있다. 예시적으로, SPD(1340)는 비휘발성 메모리 모듈(1300)의 모듈 형태, 모듈 구성, 저장 용량, 모듈 종류, 실행 환경 등과 같은 초기 정보 또는 장치 정보를 포함할 수 있다. 비휘발성 메모리 모듈(1300)이 포함된 컴퓨팅 시스템이 부팅 될 때, 컴퓨팅 시스템의 프로세서(1100)는 SPD(1340)를 읽고, 이를 기반으로 비휘발성 메모리 모듈(1300)을 인식할 수 있다. 프로세서(1100)는 SPD(1340)를 기반으로 비휘발성 메모리 모듈(1300)을 저장 매체로서 사용할 수 있다.
예시적으로, SPD(1340)는 부가 통신 채널(Side-Band Communication Channel)을 통해 프로세서(1100)와 통신할 수 있다. 프로세서(1100)는 부가 통신 채널을 통해 SPD(1340)와 부가 신호(SBS; Side-Band Signal)을 주고받을 수 있다. 예시적으로, SPD(1340)는 부가 통신 채널을 통해 비휘발성 메모리 모듈 제어기(1310)와 통신할 수 있다. 예시적으로, 부가 통신 채널은 I2C 통신에 기반된 채널일 수 있다. 예시적으로, SPD(1340), 비휘발성 메모리 모듈 제어기(1310), 및 프로세서(1100)는 I2C 통신을 기반으로 서로 통신하거나 또는 정보를 주고받을 수 있다.
도 10은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 2 실시 예를 예시적으로 보여주는 블록도이다. 예시적으로, 도 10은 RDIMM(Registered DIMM) 형태를 갖는 비휘발성 메모리 모듈(2300)의 블록도이다. 예시적으로, 도 9에 도시된 비휘발성 메모리 모듈(2300)은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
도 10을 참조하면, 비휘발성 메모리 모듈(2300)은 비휘발성 메모리 모듈 제어기(2310), 버퍼 메모리(2320), 비휘발성 메모리 장치(2330), 직렬 프레즌스 검출 칩(2340)(SPD; Serial Presence Detect chip), 및 데이터 버퍼 회로(2350)를 포함한다. 비휘발성 메모리 모듈 제어기(2310)는 램(2311)을 포함한다.
데이터 버퍼 회로(2350)는 프로세서(1100, 도 8 참조)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 비휘발성 메모리 모듈 제어기(2350)로 전달할 수 있다. 또는 데이터 버퍼 회로(2350)는 비휘발성 메모리 모듈 제어기(2310)로부터 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 프로세서(1100)로 전달할 수 있다.
예시적으로, 데이터 버퍼 회로(2350)는 복수의 데이터 버퍼들(Data Buffer)을 포함할 수 있다. 복수의 데이터 버퍼들(Data Buffer) 각각은 프로세서(1100)와 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 주고받을 수 있다. 또는 복수의 데이터 버퍼들 각각은 비휘발성 메모리 모듈 제어기(2310)와 신호를 주고받을 수 있다. 예시적으로, 복수의 데이터 버퍼들 각각은 비휘발성 메모리 모듈 제어기(2310)의 제어에 따라 동작할 수 있다.
도 11은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 3 실시 예를 예시적으로 보여주는 블록도이다. 도 11을 참조하면, 비휘발성 메모리 모듈(3200)은 제어 회로(3210), 비휘발성 메모리 장치(3220), 및 램 장치(3230)를 포함할 수 있다. 예시적으로, 비휘발성 메모리 장치(3220)는 복수의 비휘발성 메모리들을 포함할 수 있고, 램 장치(3230)는 복수의 DRAM들을 포함할 수 있다. 예시적으로, 복수의 비휘발성 메모리들은 프로세서(1100)에 의해 컴퓨팅 시스템(3000)의 스토리지로 사용될 수 있다. 예시적으로, 복수의 비휘발성 메모리들(NVM) 각각은 EEPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 비휘발성 메모리 소자들을 포함할 수 있다.
복수의 DRAM들은 프로세서(1100)에 의해 컴퓨팅 시스템(3000)의 메인 메모리로서 사용될 수 있다. 예시적으로, 램 장치(3230)는 DRAM, SRAM, SDRAM, PRAM, ReRAM, FRAM, MRAM 등과 같은 랜덤 억세스 메모리 소자들을 포함할 수 있다.
제어 회로(3210)는 비휘발성 메모리 모듈 제어기(3211) 및 SPD(3212)를 포함한다. 비휘발성 메모리 모듈 제어기(3211)는 프로세서(1100)로부터 인스트럭션(CMD), 어드레스(ADDR), 및 클록(CK)을 수신할 수 있다. 비휘발성 메모리 모듈 제어기(3211)는 프로세서(1100)로부터 수신된 신호들에 응답하여, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신된 데이터를 비휘발성 메모리 장치(3220) 또는 램 장치(3230)에 선택적으로 저장할 수 있다. 또는 비휘발성 메모리 모듈 제어기(3211)는 프로세서(1100)로부터 수신된 신호들에 응답하여, 비휘발성 메모리 장치(3220) 또는 램 장치(3230)에 저장된 데이터를 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 프로세서(1100)로 선택적으로 전송할 수 있다.
예시적으로, 프로세서(1100)는 인스트럭션(CMD), 어드레스(ADDR), 또는 별도의 신호 또는 별도의 정보를 통해 비휘발성 메모리 장치(3220) 또는 램 장치(3230)를 선택적으로 억세스할 수 있다. 즉, 프로세서(1100)는 비휘발성 메모리 모듈(3200)에 포함된 비휘발성 메모리 장치(3220) 또는 램 장치(3230)를 선택적으로 억세스할 수 있다.
도 12는 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 4 실시 예를 예시적으로 보여주는 블록도이다. 도 12을 참조하면, 비휘발성 메모리 모듈(4200)은 제어 회로(4100), 비휘발성 메모리 장치(4220), 및 램 장치(4230)를 포함한다. 제어 회로(4210)는 비휘발성 메모리 모듈 제어기(4211), SPD(4212), 및 데이터 버퍼 회로(4213)를 포함한다.
비휘발성 메모리 모듈 제어기(4211)는 프로세서(1100)로부터 인스트럭션(CMD), 어드레스(ADDR), 및 클록(CK)을 수신한다. 비휘발성 메모리 모듈 제어기(4211)는 수신된 신호들에 응답하여 비휘발성 메모리 장치(4220) 또는 램 장치(4230)를 제어할 수 있다. 예를 들어, 프로세서(1100)는 비휘발성 메모리 장치(4220) 또는 램 장치(4230) 각각을 선택적으로 억세스할 수 있다. 비휘발성 메모리 모듈 제어기(4231)는 프로세서(4100)의 제어에 따라 비휘발성 메모리 장치(4220) 또는 램 장치(4230)를 제어할 수 있다.
데이터 버퍼 회로(4213)는 프로세서(1100)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 수신하고, 수신된 신호들을 비휘발성 메모리 모듈 제어기(4211) 및 램 장치(4230)로 제공할 수 있다. 또는 데이터 버퍼 회로(4213)는 비휘발성 메모리 모듈 제어기(4211) 또는 램 장치(4230)로부터 수신된 데이터를, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(1100)로 제공할 수 있다.
예시적으로, 프로세서(1100)가 비휘발성 메모리 장치(4220)에 데이터를 저장하는 경우, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신되는 데이터는 비휘발성 메모리 모듈 제어기(4211)로 제공되고, 비휘발성 메모리 모듈 제어기(4211)는 수신된 데이터를 가공하여 비휘발성 메모리 장치(4220)로 제공할 수 있다. 또는 프로세서(1100)가 비휘발성 메모리 장치(4220)에 저장된 데이터를 읽는 경우, 데이터 버퍼 회로(4213)는 비휘발성 메모리 모듈 제어기(4211)로부터 제공되는 데이터를, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(1100)로 제공할 수 있다. 또는 프로세서(1100)가 램 장치(4230)에 데이터를 저장하는 경우, 데이터 버퍼 회로(4213)로 수신된 데이터는 램 장치(4230)로 제공되고, 비휘발성 메모리 모듈 제어기(4231)는 수신된 인스트럭션(CMD), 어드레스(ADDR), 및 클록(CK)을 램 장치(4230)로 전달할 수 있다. 또는 프로세서(1100)가 램 장치(4230)에 저장된 데이터를 읽는 경우, 비휘발성 메모리 모듈 제어기(4231)는 수신된 인스트럭션(CMD), 어드레스(ADDR), 및 클록(CK)을 램 장치(4230)로 전달하고, 램 장치(4230)는 전달된 신호들에 응답하여, 데이터를 데이터 버퍼 회로(4213)로 제공하고, 데이터 버퍼 회로(4213)는, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 데이터를 프로세서(1100)로 제공할 수 있다.
도 13은 도 8의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 5 실시 예를 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 비휘발성 메모리 모듈(5200)은 제어 회로(5210), 비휘발성 메모리 장치(5220), 및 램 장치(5230)를 포함한다. 제어 회로(5210)는 비휘발성 메모리 모듈 제어기(5211) 및 SPD(5212)를 포함한다. 비휘발성 메모리 모듈(5200)은 도 12의 비휘발성 메모리 모듈(4200)과 유사하게 동작할 수 있다. 하지만, 비휘발성 메모리 모듈(5200)은 도 12의 비휘발성 메모리 모듈(4200)과 달리 데이터 버퍼 회로(4213)를 포함하지 않는다. 즉, 도 13의 비휘발성 메모리 모듈(5200)은 프로세서(1100)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신된 데이터를 비휘발성 메모리 모듈 제어기(5211) 또는 램 장치(5230)로 직접 제공할 수 있다. 또는, 도 16의 비휘발성 메모리 모듈(5200)의 비휘발성 메모리 모듈 제어기(5211)로부터의 데이터 또는 램 장치(5230)로부터의 데이터는, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(1100)로 직접 제공할 수 있다.
예시적으로, 도 12의 비휘발성 메모리 모듈(4200)은 LRDIMM(Load Reduced DIMM) 형태의 메모리 모듈이고, 도 13의 비휘발성 메모리 모듈(5200)은 RDIMM(Registered DIMM) 형태의 메모리 모듈일 수 있다.
도 14는 본 발명의 실시 예에 따른 비휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다. 도 14를 참조하면, 서버 시스템(6000)은 복수의 서버 랙들(6100)을 포함할 수 있다. 복수의 서버 랙들(6100) 각각은 복수의 비휘발성 메모리 모듈들(6200)을 포함할 수 있다. 복수의 비휘발성 메모리 모듈들(6200)은 복수의 서버 랙들(6100) 각각에 포함된 프로세서들과 직접적으로 연결될 수 있다. 예를 들어, 복수의 비휘발성 메모리 모듈들(6200)은 듀얼 인-라인 메모리 모듈의 형태를 갖고, 프로세서와 전기적으로 연결된 DIMM 소켓에 장착되어 프로세서와 서로 통신할 수 있다. 예시적으로, 복수의 비휘발성 메모리 모듈들(6200)은 서버 시스템(6000)의 스토리지로서 사용될 수 있다.
본 발명에 따른 비휘발성 메모리 그리고/또는 비휘발성 메모리 모듈 제어기 등은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 비휘발성 메모리 그리고/또는 비휘발성 메모리 모듈 제어기는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장 될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10, 20: 컴퓨팅 시스템
100, 100a: 호스트
300: 메모리 모듈
200, 200-1, 200-2: 비휘발성 메모리 모듈
220: 램
124: 비휘발성 메모리 라이브러리

Claims (10)

  1. 호스트, 비휘발성 메모리 모듈 및 메모리 모듈을 포함하는 컴퓨팅 시스템의 쓰기 방법에 있어서:
    플러시 인스트럭션 및 플러시 데이터를 상기 비휘발성 메모리 모듈로 출력하는 단계;
    상기 플러시 인스트럭션 및 상기 플러시 데이터를 상기 메모리 모듈로 출력하는 단계; 및
    커밋 인스트럭션을 상기 비휘발성 메모리 모듈과 상기 메모리 모듈로 출력하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 플러시 인스트럭션에 응답하여 상기 플러시 데이터를 상기 비휘발성 메모리 모듈의 램으로 저장하는 단계를 더 포함하는 방법.
  3. 제 2 항에 있어서,
    상기 호스트는 커널 스페이스와 유저 스페이스를 포함하고,
    상기 유저 스페이스는 상기 비휘발성 메모리 모듈의 상기 램을 억세스하기 위한 적어도 하나의 인스트럭션을 포함하는 비휘발성 메모리 라이브러리를 포함하는 방법.
  4. 제 2 항에 있어서,
    상기 비휘발성 메모리 모듈로 출력하는 단계 이후에 상기 메모리 모듈로 출력하는 단계가 진행되는 방법.
  5. 제 2 항에 있어서,
    상기 비휘발성 메모리 모듈의 상기 램에 저장된 플러시 데이터를 상기 플러시 인스트럭션에 응답하여 상기 비휘발성 메모리 모듈의 내부의 비휘발성 메모리로 저장하는 단계를 더 포함하는 방법.
  6. 제 2 항에 있어서,
    상기 플러시 인스트럭션에 응답하여 상기 플러시 데이터를 상기 메모리 모듈의 메모리 할당 영역에 저장하는 단계; 및
    상기 메모리 모듈의 상기 램에 저장된 플러시 데이터를 상기 플러시 인스트럭션에 응답하여 상기 메모리 모듈의 내부의 디램(dynamic random access memory, DRAM)으로 저장하는 단계를 더 포함하는 방법.
  7. 제 1 항에 있어서,
    커널 스페이스의 영구 메모리 인식 파일 시스템을 이용하여 상기 비휘발성 메모리 모듈에 데이터를 저장하는 단계를 더 포함하는 방법.
  8. 호스트;
    상기 호스트와 DDR(double data rate) 인터페이스를 통하여 통신하는 적어도 하나의 메모리 모듈; 및
    상기 호스트와 상기 DDR 인터페이스를 통하여 통신하는 적어도 하나의 비휘발성 메모리 모듈을 포함하고,
    상기 호스트는,
    읽기 요청시 상기 적어도 하나의 메모리 모듈의 메모리 할당 영역으로부터 데이터를 읽고,
    쓰기 요청시, 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈 각각에 쓰기 데이터를 전송하는 컴퓨팅 시스템.
  9. 제 8 항에 있어서,
    상기 쓰기 요청은 플러싱 라이트(flushing write) 요청이고,
    상기 호스트는, 상기 플러싱 라이트 요청에 응답하여 플러시 인스트럭션 및 플러시 데이터를 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하고, 이후에 커밋 인스트럭션을 상기 적어도 하나의 메모리 모듈과 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하는 컴퓨팅 시스템.
  10. 제 8 항에 있어서,
    상기 호스트는 커널 스페이스와 유저 스페이스를 포함하고,
    상기 유저 스페이스의 어플리케이션은 상기 커널 스페이스의 비휘발성 메모리 라이브러리를 이용하여 상기 적어도 하나의 비휘발성 메모리 모듈의 램을 억세스하고,
    상기 적어도 하나의 비휘발성 메모리 모듈의 상기 램의 억세스 동작시 상기 커널 스페이스의 메모리 관리 유닛 맵핑 테이블이 이용되는 컴퓨팅 시스템.
KR1020150097296A 2015-07-08 2015-07-08 컴퓨팅 시스템 및 그것의 쓰기 방법 KR102473206B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150097296A KR102473206B1 (ko) 2015-07-08 2015-07-08 컴퓨팅 시스템 및 그것의 쓰기 방법
US15/196,726 US10078448B2 (en) 2015-07-08 2016-06-29 Electronic devices and memory management methods thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150097296A KR102473206B1 (ko) 2015-07-08 2015-07-08 컴퓨팅 시스템 및 그것의 쓰기 방법

Publications (2)

Publication Number Publication Date
KR20170007583A true KR20170007583A (ko) 2017-01-19
KR102473206B1 KR102473206B1 (ko) 2022-12-02

Family

ID=57990904

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150097296A KR102473206B1 (ko) 2015-07-08 2015-07-08 컴퓨팅 시스템 및 그것의 쓰기 방법

Country Status (1)

Country Link
KR (1) KR102473206B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100626392B1 (ko) * 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
JP2009282752A (ja) * 2008-05-22 2009-12-03 Hitachi Systems & Services Ltd ストレージデバイス及びファイルシステムの記録方法
KR20120108339A (ko) * 2011-03-23 2012-10-05 삼성전자주식회사 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
US20140181364A1 (en) * 2012-12-21 2014-06-26 Dell Products L.P. Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100626392B1 (ko) * 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
JP2009282752A (ja) * 2008-05-22 2009-12-03 Hitachi Systems & Services Ltd ストレージデバイス及びファイルシステムの記録方法
KR20120108339A (ko) * 2011-03-23 2012-10-05 삼성전자주식회사 비휘발성 램과 휘발성 램을 버퍼 메모리로 사용하는 저장 장치
US20140181364A1 (en) * 2012-12-21 2014-06-26 Dell Products L.P. Systems And Methods For Support Of Non-Volatile Memory On A DDR Memory Channel

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Joy Arulraj et al., "Let's Talk About Storage & Recovery Methods for Non-Volatile Memory Database Systems", SIGMOD ´15, 2015.05.31. *
배상희 외 2명, "소형 블록 DBMS의 데이터/인덱스 페이지 구조 소형화를 통한 NVRAM 성능 개선", 한국디지털콘텐츠학회 논문지, vol. 14, no. 1, pp. 15-23, 2013.03.01. *

Also Published As

Publication number Publication date
KR102473206B1 (ko) 2022-12-02

Similar Documents

Publication Publication Date Title
US10078448B2 (en) Electronic devices and memory management methods thereof
US11614866B2 (en) Nonvolatile memory device and operation method thereof
KR102593379B1 (ko) 메모리 패키지, 그것을 포함하는 메모리 모듈, 및 그것의 동작 방법
US9971697B2 (en) Nonvolatile memory module having DRAM used as cache, computing system having the same, and operating method thereof
US9767903B2 (en) Nonvolatile memory module having dual-port DRAM
US10152413B2 (en) Nonvolatile memory module and operation method thereof
US10203909B2 (en) Nonvolatile memory modules comprising volatile memory devices and nonvolatile memory devices
US10929064B2 (en) Methods of operating mixed device type memory modules, and processors and systems configured for operating the same
US20140173234A1 (en) Semiconductor memory device and memory system
US10095411B2 (en) Controllers including separate input-output circuits for mapping table and buffer memory, solid state drives including the controllers, and computing systems including the solid state drives
US9905285B2 (en) Dynamic random access memory device and operating method with improved reliability and reduced cost
KR102427262B1 (ko) 랜덤 액세스 메모리 장치들 및 불휘발성 메모리 장치들을 포함하는 저장 장치
KR102374637B1 (ko) 컴퓨팅 시스템 및 그것의 메모리 관리 방법
KR20160144577A (ko) 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치
KR20220062843A (ko) 저장 장치 및 그 동작 방법
KR102646721B1 (ko) 컴퓨팅 시스템, 비휘발성 메모리 모듈, 및 저장 장치의 동작 방법
KR102473206B1 (ko) 컴퓨팅 시스템 및 그것의 쓰기 방법
KR102461460B1 (ko) 비휘발성 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템 및 그것의 pvt 보상 방법
KR102548574B1 (ko) 불휘발성 메모리 모듈
KR20160144562A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20170007580A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
KR20160144576A (ko) 불휘발성 메모리 모듈 및 그것의 포함하는 사용자 장치

Legal Events

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