KR20170012675A - 컴퓨팅 시스템 및 그것의 데이터 전송 방법 - Google Patents

컴퓨팅 시스템 및 그것의 데이터 전송 방법 Download PDF

Info

Publication number
KR20170012675A
KR20170012675A KR1020150103614A KR20150103614A KR20170012675A KR 20170012675 A KR20170012675 A KR 20170012675A KR 1020150103614 A KR1020150103614 A KR 1020150103614A KR 20150103614 A KR20150103614 A KR 20150103614A KR 20170012675 A KR20170012675 A KR 20170012675A
Authority
KR
South Korea
Prior art keywords
memory module
data
volatile memory
host
packet data
Prior art date
Application number
KR1020150103614A
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 KR1020150103614A priority Critical patent/KR20170012675A/ko
Priority to US15/152,029 priority patent/US20170024162A1/en
Publication of KR20170012675A publication Critical patent/KR20170012675A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Computer Security & Cryptography (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명에 따른 컴퓨팅 시스템, 호스트, 상기 호스트에 제 1 채널을 통하여 연결된 적어도 하나의 메모리 모듈, 및 상기 호스트에 제 2 채널을 통하여 연결된 적어도 하나의 비휘발성 메모리 모듈을 포함하고, 상기 호스트는, 패킷 데이터를 엔코딩하는 엔코더, 및 상기 엔코딩된 패킷 데이터가 디코딩할 필요가 없을 때 상기 엔코딩된 패킷 데이터를 상기 적어도 하나의 메모리 모듈로 전송하고, 상기 엔코딩된 패킷 데이터가 디코딩할 필요가 있을 때 상기 엔코딩된 패킷 데이터를 디코더 테이블을 이용하여 디코딩하고 상기 디코딩된 패킷 데이터를 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하는 메모리 모듈 드라이버를 포함한다.

Description

컴퓨팅 시스템 및 그것의 데이터 전송 방법{COMPUTING SYSTEM AND DATA TRANSFERRING METHOD THEREOF}
본 발명은 컴퓨팅 시스템 및 그것의 데이터 전송 방법에 관한 것이다.
현재 사용되는 컴퓨팅 시스템의 다양한 인터페이스와 호환 가능한 비휘발성 메모리에 대한 연구가 이루어지고 있다. 즉, 플래시 메모리를 메인 메모리(또는, 워킹 메모리)와 동일한 슬롯이나 채널에 장착하여 데이터 저장 장치나 또는 워킹 메모리로 사용하려는 시도들이 이루어지고 있다. 이 경우에는 종래에 사용하던 휘발성 램(예를 들면, DRAM)과의 호환성이 고려되어야 한다. 휘발성 램과의 호환성을 유지하면서도 최상의 데이터 신뢰성(data integrity), 저전력 특성을 제공할 수 있는 기술이 필요한 실정이다.
본 발명의 목적은 신규한 컴퓨팅 시스템 및 그것의 데이터 전송 방법을 제공하는데 있다.
본 발명의 실시 예에 따른 컴퓨팅 시스템, 호스트, 상기 호스트에 제 1 채널을 통하여 연결된 적어도 하나의 메모리 모듈, 및 상기 호스트에 제 2 채널을 통하여 연결된 적어도 하나의 비휘발성 메모리 모듈을 포함하고, 상기 호스트는, 패킷 데이터를 엔코딩하는 엔코더, 및 상기 엔코딩된 패킷 데이터가 디코딩할 필요가 없을 때 상기 엔코딩된 패킷 데이터를 상기 적어도 하나의 메모리 모듈로 전송하고, 상기 엔코딩된 패킷 데이터가 디코딩할 필요가 있을 때 상기 엔코딩된 패킷 데이터를 디코더 테이블을 이용하여 디코딩하고 상기 디코딩된 패킷 데이터를 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하는 메모리 모듈 드라이버를 포함한다.
실시 예에 있어서, 상기 호스트 및 상기 적어도 하나의 메모리 모듈은 DDR(double data rate) 인터페이스를 통하여 데이터를 송수신하거나, 상기 호스트와 상기 적어도 하나의 비휘발성 메모리 모듈은 상기 DDR 인터페이스를 통하여 데이터를 송수신한다.
실시 예에 있어서, 상기 엔코더는 상기 패킷 데이터에 대하여 스크램블링, ECC(error correction code) 엔코딩, 스위즈링(swizzling) 및 랜덤마이징(randomizing) 중 적어도 하나를 수행한다.
실시 예에 있어서, 상기 패킷 데이터는 상기 적어도 하나의 메모리 모듈 및 상기 적어도 하나의 비휘발성 메모리 모듈이 삽입된 슬롯 정보를 포함하고, 상기 메모리 모듈 드라이버는, 상기 슬롯 정보를 근거로 하여 상기 엔코딩된 데이터의 디코딩 여부를 판별한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈의 초기화 동작시, 상기 적어도 하나의 비휘발성 메모리 모듈로부터 전송되는 초기화 데이터를 이용하여 상기 디코더 테이블이 생성된다.
실시 예에 있어서, 상기 초기화 데이터는 MRS(mode register set) 모드 읽기 동작에 의하여 상기 적어도 하나의 비휘발성 메모리 모듈로부터 상기 호스트로 전송된다.
실시 예에 있어서, 상기 디코더 테이블 이용하여 디코더 함수가 생성된다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈에서 사전에 결정된 순서로 데이터를 업데이트하고, 상기 메모리 모듈 드라이버는 상기 업데이트 데이터를 인식함으로써 커맨드 테이블을 생성한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈은, 복수의 비휘발성 메모리들; 구동에 필요한 데이터를 임시로 저장하는 버퍼 메모리; 및 상기 복수의 비휘발성 메모리들 및 상기 버퍼 메모리를 제어하는 비휘발성 메모리 모듈 제어기를 포함하고, 상기 비휘발성 메모리 모듈 제어기는, 상기 호스트와 DDR 인터페이스를 통하여 데이터를 입출력하는 램을 포함한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈은, 복수의 비휘발성 메모리들; 상기 호스트와 데이터를 입출력하는 데이터 버퍼들; 상기 데이터 버퍼들의 데이터를 송수신하는 복수의 디램들(dynamic random access memories); 및 상기 복수의 비휘발성 메모리들과 상기 복수의 디램들을 제어하고, 상기 호스트가 상기 복수의 비휘발성 메모리들에 대한 억세스를 가능케하는 비휘발성 메모리 모듈 제어기를 포함한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 모듈은, 복수의 비휘발성 메모리들; 상기 호스트와 DDR(double data rate) 인터페이스를 통하여 데이터를 송수신하는 복수의 디램들(dynamic random access memories); 및 상기 복수의 비휘발성 메모리 모듈과 상기 복수의 디램들을 제어하고, 상기 호스트가 상기 복수의 비휘발성 메모리들에 대한 억세스를 가능케하는 비휘발성 메모리 모듈 제어기를 포함한다.
본 발명의 실시 예에 따른 호스트, 휘발성 메모리 모듈 및 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 데이터 전송 방법은, 패킷 데이터를 스크램블하는 단계, 상기 스크램블된 패킷 데이터를 디스크램블할 필요가 있는 지를 판별하는 단계, 상기 스크램블된 패킷 데이터를 디스크램블 할 필요가 있을 때, 디코더 테이블을 이용하여 상기 스크램블된 패킷 데이터를 디스크램블 하는 단계, 및 상기 디스크램블된 패킷 데이터를 상기 비휘발성 메모리 모듈로 출력하는 단계를 포함한다.
실시 예에 있어서, 상기 휘발성 메모리 모듈 혹은 상기 비휘발성 메모리 모듈이 삽입되는 슬롯 정보를 근거로 하여 상기 디스크램블 여부가 판별된다.
실시 예에 있어서, 상기 스크램블된 패킷 데이터를 디스크램블 할 필요가 없을 때, 상기 스크램블된 패킷 데이터는 상기 휘발성 메모리 모듈로 출력하는 단계를 더 포함한다.
실시 예에 있어서, 상기 비휘발성 메모리 모듈의 초기화 동작시 상기 호스트와 상기 비휘발성 메모리 모듈 사이의 사전에 결정된 데이터 전송하고, 상기 전송된 데이터를 디코딩하고, 상기 전송된 데이터와 상기 디코딩된 데이터를 비교함으로써, 상기 디코더 테이블이 생성된다.
본 발명의 실시 예에 따른 호스트, 휘발성 메모리 모듈 및 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 데이터 전송 방법은: 어드레스, 커맨드, 데이터, 혹은 SPD(serial presence detect) 커맨드를 디스크램블링하는 단계; 상기 디스크램블링된 어드레스, 커맨드, 데이터 혹은 SPD 커맨드를 스크램블링하는 단계; 및 상기 스크램블링된 디스크램블 어드레스, 커맨드, 데이터 혹은 SPD 커맨드를 상기 휘발성 메모리 모듈 혹은 상기 비휘발성 메모리 모듈에 전송하는 단계를 포함한다.
실시 예에 있어서, 상기 디스크램블링하는 단계는, 상기 호스트와 상기 휘발성 메모리 모듈 사이이거나 상기 호스트와 상기 비휘발성 메모리 모듈 사이에 커맨드를 정의하고자 할 때, 상기 어드레스 및 상기 커맨드를 디스크램블링하는 단계를 포함한다.
실시 예에 있어서, 보조 채널을 통하여 상기 SPD 커맨드가 상기 휘발성 메모리 모듈에 전송되거나 상기 비휘발성 메모리 모듈에 전송된다.
실시 예에 있어서, 상기 어드레스, 상기 커맨드, 상기 데이터, 혹은 상기 SPD(serial presence detect) 커맨드를 테이블화시키는 단계를 더 포함한다.
실시 예에 있어서, 상기 디스크램블링 하는 단계는, 스크램블 방식에 대응하여 디스크램블 방식을 변경하는 단계를 더 포함한다.
상술한 바와 같이 본 발명에 따른 컴퓨팅 시스템 및 그것의 데이터 전송 방법은, 호스트에서 디코딩/디스크램블링을 수행함으로써, 시스템적 성능 향상을 야기할 수 있다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템을 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 디코더 테이블을 생성하는 방법을 예시적으로 보여주는 래더 다이어그램이다.
도 3은 본 발명의 실시 예에 따른 커맨드 테이블 생성 방법을 예시적으로 보여주는 흐름도이다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 데이터 쓰기 방법을 예시적으로 보여주는 흐름도이다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 데이터 읽기 방법을 예시적으로 보여주는 흐름도이다.
도 6은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템을 보여주는 도면이다.
도 7은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템을 보여주는 도면이다.
도 8은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템을 보여주는 도면이다.
도 9는 도 8에 도시된 컴퓨팅 시스템의 데이터 전송 방법을 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 예시적으로 보여주는 블록도이다.
도 11은 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 1 실시 예를 예시적으로 보여주는 블록도이다.
도 12는 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 2 실시 예를 예시적으로 보여주는 블록도이다.
도 13은 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 3 실시 예를 예시적으로 보여주는 블록도이다.
도 14는 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 4 실시 예를 예시적으로 보여주는 블록도이다.
도 15은 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 5 실시 예를 예시적으로 보여주는 블록도이다.
도 16은 본 발명의 실시 예에 따른 비휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 제 1, 제 2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다.
상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 명명될 수 있다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 혹은 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 혹은 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다. 본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
본 출원에서, "포함하다" 혹은 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 혹은 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 혹은 이들을 조합한 것들의 존재 혹은 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 개념을 설명하기 위한 컴퓨팅 시스템(10)을 예시적으로 보여주는 도면이다. 도 1을 참조하면, 컴퓨팅 시스템(10)은 호스트(100), 적어도 하나의 메모리 모듈(200), 및 적어도 하나의 비휘발성 메모리 모듈(300)을 포함할 수 있다.
실시 예에 있어서, 컴퓨팅 시스템(10)은 컴퓨터, 포터블 컴퓨터, UMPC(ultra mobile PC), 워크스테이션(workstation), 데이터 서버(data server), 넷북, PDA, 웹 태블릿, 무선 폰, 모바일 폰, 스마트폰, 전자북, PMP(portable multimedia player), 디지털 카메라, 디지털오디오 녹음기/재생기, 디지털 사진기/비디오 기록기/재생기, 포터블 게임 머신, 네비게이션 시스템, 블록 박스, 3D 텔레비전, 무선 환경에서 정보를 수신 및 송신하는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 어느 하나, RFID, 혹은 컴퓨팅 시스템을 구성하는 다양한 전자 장치들 중 어느 하나로 사용될 수 있다.
호스트(100)는 엔코더(110) 및 메모리 모듈 드라이버(MM DRV, 120)를 포함할 수 있다. 예를 들어, 호스트(100)는 적어도 하나의 프로세서, CPU(central processing unit), GPU(graphic processing unit) 등 일 수 있다.
엔코더(110)는 패킷 데이터(packet data, PD)를 엔코딩할 수 있다. 엔코딩 방법은 scrambling, ECC(error correction code) encoding, swizzling 및 randomizing 중 적어도 하나를 이용할 수 있다.
메모리 모듈 드라이버(120)는 호스트(100)가 메모리 모듈(220) 및 비휘발성 메모리 모듈(300)을 디램-기반의 DDR(double data rate) 인터페이스로 접근할 수 있도록 구현될 수 있다. 메모리 모듈 드라이버(120)는 하드웨어/소프트웨어/펌웨어적으로 구현될 수 있다.
실시 예에 있어서, 메모리 모듈 드라이버(120)는 제 1 채널(CH1)을 통하여 메모리 모듈(200)과 연결될 수 있고, 제 2 채널(CH2)을 통하여 비휘발성 메모리 모듈(300)과 연결될 수 있다. 여기서 제 1 채널(CH1)과 제 2 채널(CH2) 각각은 서로 다른 물리적 슬롯들을 포함할 수 있다.
메모리 모듈 드라이버(120)는, 패킷 데이터(PD)가 메모리 모듈(200)로 전송될 데이터일 때, 엔코더(100)에 의해 엔코딩된 패킷 데이터(EPD)를 제 1 채널(CH1)을 통하여 메모리 모듈(200)로 전송할 수 있다. 실시 예에 있어서, 패킷 데이터(PD)는 메모리 모듈(200) 및 비휘발성 메모리 모듈(300)이 삽입되는 슬롯 정보를 포함할 수 있다.
반면에, 메모리 모듈 드라이버(120)는, 패킷 데이터(PD)가 비휘발성 메모리 모듈(300)으로 전송될 데이터일 때, 엔코더(100)에 의해 엔코딩된 패킷 데이터(EPD)를 다시 디코딩한 데이터, 즉 원래의 패킷 데이터(PD)를 제 2 채널(CH2)을 통하여 비휘발성 메모리 모듈(300)로 전송할 수 있다.
여기서는 설명의 편의를 위하여, 호스트(100)는 물리적 슬롯에 삽입된 장치가 메모리 모듈(200) 인지 혹은 비휘발성 메모리 모듈(300)인지 알고 있다고 가정하겠다. 호스트(100)는 패킷 데이터(PD)를 생성할 때 슬롯에 대응하는 정보를 추가하고, 이러한 슬롯 정보를 근거로 하여 메모리 모듈 드라이버(120)는 엔코딩된 패킷 데이터(EPD)의 디코딩 여부를 결정할 수 있다.
특히, 메모리 모듈 드라이버(120)는 엔코딩된 패킷 데이터를 디코딩하기 위한 디코더 테이블(DEC Table, 122)을 포함할 수 있다. 실시 예에 있어서, 디코더 테이블(122)은, 사전에 저장된 값일 수 있다. 다른 실시 예에 있어서, 디코더 테이블(122)은, 호스트(100)와 비휘발성 메모리 모듈(300) 사이의 정해진 통신을 수행함으로써 결정될 수 있다.
본 발명의 실시 예에 있어서, 컴퓨팅 시스템(10)은, 메모리 모듈(200)에 저장될 데이터의 경우에는 엔코딩을 수행하고, 비휘발성 메모리 모듈(300)에 저장될 데이터의 경우에는 엔코딩을 수행하지 않을 수 있다. 따라서, 본 발명의 비휘발성 메모리 모듈(300)은 엔코딩된 패킷 데이터를 디코딩하기 위한 불필요한 디코더를 구비할 필요가 없다.
도 2는 본 발명의 실시 예에 따른 디코더 테이블(DEC Table)을 생성하는 방법을 예시적으로 보여주는 래더 다이어그램이다. 호스트(100)의 메모리 모듈 드라이버(120)는 비휘발성 메모리 모듈(300)의 초기화 동작시, 디코더 테이블을 생성할 수 있다.
메모리 모듈(300)의 인식 과정에서, 디코더 테이블이 생성될 수 있다. 예를 들어, 슬롯에 비휘발성 메모리 모듈(300)이 삽입될 때, 호스트(100)는 초기화 명령을 비휘발성 메모리 모듈(300)로 전송할 수 있다.
비휘발성 메모리 모듈(300)은 초기화 명령에 응답하여, 사전에 결정된 초기화 패킷 데이터를 호스트(100)로 전송한다. 사전에 결정된 초기화 패킷 데이터는, 초기화 동작시 호스트(100)가 바라보는 어드레스 영역에 저장될 수 있다. 패킷 전송은, 호스트(100) 입장에서, MRS(mode register set) 모드로 읽기 동작이다. 호스트(100)는 읽혀진 패킷 데이터를 디코딩하고, 디코딩된 패킷 데이터를 메모리 모듈(200)로 전송한다. 호스트(100)는 메모리 모듈(200)로부터 디코딩된 패킷 데이터를 읽어온다. 메모리 모듈 드라이버(120)는 비휘발성 메모리 모듈(300)로부터 읽혀진 패킷 데이터(PD)와 메모리 모듈(200)로부터 읽혀진 디코딩된 패킷 데이터를 비교한다. 상술 된 일련의 과정은 패킷 데이터 비교 과정(COMPD)이다.
한편, 호스트(100)의 패킷 데이터 비교 과정(COMPD)에서 비휘발성 메모리 모듈(300)에 대한 읽기 동작은, MRS 모드에 한정되지 않는다고 이해되어야 할 것이다. 패킷 데이터 비교 과정(COMPD)에서 비휘발성 메모리 모듈(300)에 대한 읽기 동작은 엔코딩/디코딩을 적용하지 않는 어떠한 종류의 읽기 동작일 수 있다.
상술 된 패킷 데이터 비교 과정(COMPD)을 여러 번 반복함으로써, 디코더 테이블(DEC Table, 122)이 생성될 수 있다. 이후에 이러한 디코더 테이블(122)을 이용하여 디코더 함수가 생성될 수도 있다.
한편, 도 2에서는, 패킷 데이터 비교 과정(COMPD)에서 디코딩된 패킷 데이터를 메모리 모듈(200)에 저장하였다. 하지만 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다. 디코딩된 패킷 데이터는 메모리 모듈(200)에 저장되지 않고, 호스트(100)의 어느 한 부분에 저장된 후 비교 동작에 이용될 수도 있다.
도 3은 본 발명의 실시 예에 따른 커맨드 테이블 생성 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 3을 참조하면, 커맨드 테이블 생성 방법은 다음과 같다. 특정 커맨드 생성시, 비휘발성 메모리 모듈(300, NVDIMM)은 사전에 결정된 순서로 데이터를 업데이트 한다(S110). 호스트(100)는 업데이트된 데이터를 차례로 인식한다(S120). 인식된 데이터를 이용하여 비휘발성 메모리 모듈(300)에 전송할 특정 커맨드가 생성된다(S130). 이러한 과정을 통하여 커맨드 테이블이 생성된다.
도 4는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 데이터 쓰기 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 4를 참조하면, 데이터 쓰기 방법은 다음과 같다.
패킷 데이터(PD)가 스크램블된다. 일반적으로, 전송 데이터의 신뢰성 증가시키거나 데이터 저장시 전력 감소를 위하여 스크램블링이 수행될 수 있다(S210). 메모리 모듈 드라이버(120)는 스크램블 패킷 데이터를 디스크램블할 지를 판별할 수 있다(S220). 이러한 판별의 기준은, 패킷 데이터(PD)에 포함된 슬롯 정보일 수 있다.
만일, 디스크램블이 필요하다면, 메모리 모듈 드라이버(120)는 디코더 테이블(122)을 이용하여 스크램블된 패킷 데이터를 디스크램블할 수 있다. 이때, 디스크램블 방법은, 디코더 테이블(122)을 분석하여 비휘발성 메모리 모듈(300)에 저장된 패킷 데이터를 생성하거나, 디코더 테이블(122, 혹은 "디코더 함수")을 이용하여 비휘발성 메모리 모듈(300)에 저장될 패킷 데이터를 생성할 수 있다(S230). 메모리 모듈 드라이버(120)는 디스크램블된 패킷 데이터를 비휘발성 메모리 모듈(300)으로 전송한다(S240).
반면에, 디스크램블이 필요하지 않다면, 메모리 모듈 드라이버(120)는 스크램블된 패킷 데이터를 메모리 모듈(200)로 전송한다(S250).
본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 데이터 쓰기 방법은, 메모리 모듈(200)로는 스크램블된 패킷 데이터를 전송하고, 비휘발성 메모리 모듈(300)로는 디스크램블된 패킷 데이터를 전송할 수 있다.
도 5는 본 발명의 실시 예에 따른 컴퓨팅 시스템의 데이터 읽기 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 5를 참조하면, 데이터 읽기 방법은 다음과 같다.
읽기 요청에 응답하여 패킷 데이터(PD)가 읽혀 진다(S310). 메모리 모듈 드라이버(120)는 읽혀진 패킷 데이터를 스크램블할 지를 판별한다. 여기서 이러한 판별 동작은, 읽혀진 패킷 데이터의 슬롯 정보를 근거로 이루어질 수 있다(S320).
만일, 스크램블이 필요하다면, 읽혀진 패킷 데이터는 디코더 테이블(122)을 이용하여 스크램블될 수 있다(S330). 이후, 스크램블된 데이터는 디스크램블될 수 있다(S340). 반면에, 스크램블이 필요하지 않다면, 읽혀진 데이터가 디스크램블 될 수 있다(S345).
본 발명의 실시 예에 따른 컴퓨팅 시스템(10)의 데이터 읽기 방법은, 메모리 모듈(200)에서 읽혀진 데이터는 곧바로 디스크램블시키고, 비휘발성 메모리 모듈(300)로는 읽혀진 데이터는 우선적으로 스크램블시킨 후에, 그 다음에 디스크램블 시킬 수 있다.
한편, 도 1 내지 도 5에서, 호스트 드라이버(120)가 디코더 테이블(120)을 구비하였다. 하지만 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다. 본 발명의 호스트는 도 1에 도시된 디코더 테이블(120)의 기능을 수행하는 하드웨어적인 디코더를 별도로 구비할 수도 있다.
도 6은 본 발명의 다른 실시 예에 따른 컴퓨팅 시스템(20)을 보여주는 도면이다. 도 6을 참조하면, 컴퓨팅 시스템(20)은 호스트(100a), 적어도 하나의 메모리 모듈(200), 및 적어도 하나의 비휘발성 메모리 모듈(300a)을 포함할 수 있다.
호스트(100a)는 엔코더(110a), 디코더(115) 및 메모리 모듈 드라이버(MM DRV, 120a)를 포함할 수 있다. 엔코더(110a)는 패킷 데이터(packet data, PD)를 엔코딩할 수 있다. 엔코딩 방법은 scrambling/ECC encoding/swizzing/randomizing 등을 이용할 수 있다. 디코더(115)는 엔코딩된 패킷 데이터가 비휘발성 메모리 모듈(NVDIMM, 300 a)에 저장될 데이터일 경우 엔코딩된 패킷 데이터를 디코딩한다. 메모리 모듈 드라이버(120a)는 메모리 모듈(DIMM, 200)에 저장될 데이터의 경우 엔코더(110a)으로부터 출력되는 엔코딩된 패킷 데이터(EPD)를 제 1 채널로 전송하고, 비휘발성 메모리 모듈(NVDIMM, 300)에 저장될 데이터의 경우 디코더(115)으로부터 출력되는 디코딩된 패킷 데이터(PD)를 제 2 채널로 전송할 수 있다.
한편, 도 1 내지 도 6은 비휘발성 메모리 모듈(NVDIMM)에 저장된 데이터를 디코딩하였다. 하지만, 본 발명이 여기에 제한되지 않는다고 이해되어야 할 것이다. 본 발명의 컴퓨팅 시스템은 패킷 데이터(PD)의 슬롯 정보를 근거로 하여, 처음부터 엔코딩 여부를 결정하도록 구현될 수도 있다. 예를 들어, 메모리 모듈(DIMM)에 저장될 데이터는 엔코딩이 수행되지만, 비휘발성 메모리 모듈(NVDIMM)에 저장될 데이터는 엔코딩이 바이패스될 수 있다.
도 7은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템(30)을 보여주는 도면이다. 도 7을 참조하면, 컴퓨팅 시스템(30)은 호스트(100b), 적어도 하나의 메모리 모듈(200), 및 적어도 하나의 비휘발성 메모리 모듈(300b)을 포함할 수 있다.
패킷 데이터(PD)는 슬롯 정보를 근거로 하여 엔코더(110b)를 경유하거나, 바이패스 될 수 있다. 예를 들어, 패킷 데이터(PD)가 메모리 모듈(200)에 저장될 때, 패킷 데이터(PD)는 엔코더(110b)에서 엔코딩될 수 있다. 반면에, 패킷 데이터(PD)가 비휘발성 메모리 모듈(300b)에 저장될 때, 패킷 데이터(PD)는 엔코더(110b)를 바이패스하고, 곧바로 메모리 모듈 드라이버(120b)로 전송될 수 있다.
한편, 도 1 내지 도 7에서, DIMM(200)에 엔코딩된 데이터(EPD)가 저장되고, NVDIMM(300/300a/300b)에 엔코딩되지 않는 오리지널 데이터(PD)가 저장되었다. 하지만, 본 발명이 여기에 제한되지 않는다. 본 발명의 DIMM에 엔코딩되지 않은 오리지널 데이터가 저장되거나, NVDIMM에 엔코딩된 데이터가 저장될 수도 있다.
도 8은 본 발명의 또 다른 실시 예에 따른 컴퓨팅 시스템(40)을 보여주는 도면이다. 도 8을 참조하면, 컴퓨팅 시스템(40)은 호스트(400), DIMM(500), NVDIMM(600)을 포함할 수 있다.
호스트(400)는 중앙처리장치(410), 스크램블 회로(420), 및 디스크램블 회로(430)를 포함할 수 있다.
스크램블 회로(420)는 데이터(D)에 대한 스크램블링을 수행하여 스크램블링된 데이터(SD)를 출력할 수 있다. 실시 예에 있어서, 스크램블 회로(420)는 소프트웨어/하드웨어/펌웨어적으로 구현될 수 있다.
디스크램블 회로(425)는 데이터(D')에 대한 디스크램블링을 수행하여 디스크램블링된 데이터(DSD')를 출력할 수 있다. 여기서 디스크램블링은 스크램블 회로(420)의 스크램블링의 반전값일 수 있다. 실시 예에 있어서, 디스크램블 회로(425)는 소프트웨어/하드웨어/펌웨어적으로 구현될 수 있다. 실시 예에 있어서, 디스크램블 회로(425)는 스크램블 회로(420)의 스크램블 방식을 인식하고, 이에 대응하는 적절한 디스크램블링을 수행하도록 구현될 수 있다.
실시 예에 있어서, 디스크램블 회로(425)는, DIMM(500) 혹은 NVDIMM(600)에 스크램블되지 않은 메시지(데이터, 커맨드, 혹은 어드레스)를 전송하거나, DIMM(500) 혹은 NVDIMM(600)로부터 메시지를 수신하고자 할 때, 활성화될 수 있다.
예를 들어, DIMM(500) 혹은 NVDIMM(600)과 커맨드를 정의하기 위하여 스크램블되지 않은 어드레스 혹은 커맨드를 전송하거나, 메인 채널이 아닌 보조 채널(예, I2C 통신 채널)을 통하여 송수신해야 할 SPD(serial presence detect) 커맨드를 전송하고자 할 때, 디스크램블 회로(426)는 활성화 될 수 있다. 이때, 전송되는 어드레스 혹은 데이터, 및 SPD 데이터는 테이블화되고, 테이블화된 데이터가 DIMM(500) 혹은 NVDIMM(600)에 전송될 수 있다.
실시 예에 있어서, 디스크램블 회로(426)는 디스크램블링 기능을 추가하거나, 스크램블 회로(425)의 스크램블링 방식에 따라 변경 가능할 수 있다.
DIMM(500)은 호스트(400)로부터 스크램블된 데이터(SD) 혹은 디스크램블된 데이터(DSD')를 스크램블링시킨 데이터(SDSD')를 입출력할 수 있다.
NVDIMM(600)은 호스트(400)로부터 스크램블된 데이터(SD) 혹은 디스크램블된 데이터(DSD')를 스크램블시킨 데이터(SDSD')를 입출력할 수 있다.
본 발명의 DIMM(500) 및 NVDIMM(600)은 스크램블 방식이 적용될 수도 있고, 적용되지 않을 수도 있다.
본 발명의 실시 에에 따른 컴퓨팅 시스템(40)은, 호스트(400)의 스크램블 방식이 변경되더라도 DIMM(500) 및/혹은 NVDIMM(600)에 추가적인 디스크램블 회로를 필요치 않는다.
한편, 도 8에서는 스크램블 방식에 대하여 기술하였지만, 본 발명이 여기에 제한되지 않을 것이다. 본 발명의 컴퓨팅 시스템은 스크램블/디스크램블 회로를 대신하여 어떠한 종류의 엔코더/디코더 회로(ECC, bit swap, 등)로 구현될 수 있다.
도 9는 도 8에 도시된 컴퓨팅 시스템(40)의 데이터 전송 방법을 예시적으로 보여주는 도면이다. 도 8 및 도 9를 참조하면, 컴퓨팅 시스템(40)의 데이터 전송 방법은 다음과 같다.
스크램블을 원치않는 어드레스/커맨드/데이터/SPD 커맨드는 디스크램블 회로(도 8 참조, 425)에 의해 디스크램블 된다(S410). 디스크램블된 어드레스/커맨드/데이터/SPD 커맨드는 스크램블 회로(도 8 참조, 420)에 의해 스크램블된다(S420). 스크램블된 디스크램블 어드레스/커맨드/데이터/SPD 커맨드가 DIMM(500) 혹은 NVDIMM(600)에 전송된다(S430).
본 발명의 실시 예에 따른 컴퓨팅 시스템(40)의 데이터 전송 방법은, 스크램블되지 않은 어드레스/커맨드/데이터/SPD 커맨드를 전송하고자 할 때, 우선적으로 디스크램블링 수행할 수 있다.
도 10은 본 발명의 실시 예에 따른 컴퓨팅 시스템(1000)을 예시적으로 보여주는 블록도이다. 도 10을 참조하면, 컴퓨팅 시스템(1000)은 프로세서(1100), 하나 이상의 메모리 모듈들(DIMM, 1200, 1250), 하나 이상의 비휘발성 메모리 모듈들(NMM, 1300, 1305), 칩셋(1400), GPU(1500), 입출력 장치(1600), 그리고 스토리지 장치(1700)를 포함할 수 있다.
프로세서(1100)는 컴퓨팅 시스템(1000)의 제반 동작을 제어할 수 있다. 프로세서(1100)는 컴퓨팅 시스템(1000)에서 수행되는 다양한 연산을 수행할 수 있다. 프로세서(1100)는, 도 1 내지 도 7에 설명된 메모리 모듈 드라이버(MM DRV)을 포함하거나, 슬롯 정보에 근거로 하여 선택적으로 활성화되는 디코더(DEC)를 포함하거나, 슬롯 정보에 근거로 하여 선택적으로 바이패스하는 엔코더(ENC)를 포함하거나, 도 8 내지 도 9에서 설명된 스크램블/디스크램블 회로들(220, 225)을 포함할 수 있다.
DIMM(1200, 1250), NVDIMM(1300, 1305)은 프로세서(1100)와 직접적으로 연결될 수 있다. 예를 들어, DIMM(1200, 1250), NVDIMM(1300, 1305) 각각은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module) 형태를 가질 수 있다. 또는, DIMM(1200, 1250), NVDIMM(1300, 1305) 각각은 프로세서(1100)와 직접적으로 연결된 DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
실시 예에 있어서, DIMM(1200, 1250) 각각은 도 1 내지 도 9에 설명된 메모리 모듈(200, 500)로 구현될 수 있다.
실시 예에 있어서, NVDIMM(1300, 1305) 각각은 도 1 내지 도 7에 설명된 비휘발성 메모리 모듈(300, 300a, 300b)이거나 도 8 및 도 9에 설명된 비휘발성 메모리 모듈(600)일 수 있다.
DIMM(1200, 1250), NVDIMM(1300, 1305)은 동일한 인터페이스(1150)를 통해 프로세서(1100)와 통신할 수 있다. 예를 들어, NVDIMM(1300, 1305) 및 DIMM(1200, 1250)은 DDR(double data rate) 방식의 인터페이스(1150)를 통해 통신할 수 있다. 예시적으로, 프로세서(1100)는 DIMM(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(solid state drive), 메모리 카드, 메모리 스틱 등과 같은 대용량 저장 매체들을 포함할 수 있다.
예시적으로, NVDIMM(1300, 1305)은 프로세서(1100)에 의해 컴퓨팅 시스템(1000)의 저장 매체로서 사용될 수 있다. NVDIMM(1300, 1305) 및 프로세서(1100) 사이의 인터페이스(1150)는 스토리지 장치(1700) 및 프로세서(1100) 사이의 인터페이스보다 고속 인터페이스일 수 있다. 즉, 프로세서(1100)가 NVDIMM(1300, 1305)을 저장 매체로서 사용함으로써 컴퓨팅 시스템의 성능이 향상될 수 있다.
도 11은 도 10의 메모리 모듈들 중 어느 하나에 대한 제 1 실시 예를 예시적으로 보여주는 블록도이다. 예시적으로, 도 11은 LRDIMM(Load Reduced DIMM) 형태를 갖는 NVDIMM(1300)을 나타낸다. 예시적으로, 도 11에 도시된 NVDIMM(1300)은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
도 11을 참조하면, NVDIMM(1300)은 비휘발성 메모리 모듈 제어기(1310), 버퍼 메모리(1320), 비휘발성 메모리 장치(1330), 및 SPD(serial presence detect) 칩(1340)을 포함할 수 있다. 비휘발성 메모리 모듈 제어기(1310)는 램(1311)을 포함할 수 있다. 예시적으로, 비휘발성 메모리 장치(1330)는 복수의 비휘발성 메모리들(NVM)을 포함할 수 있다. 비휘발성 메모리 장치(1330)에 포함된 복수의 비휘발성 메모리들 각각은 별도의 칩, 별도의 패키지, 별도의 장치, 또는 별도의 모듈로 각각 구현될 수 있다. 또는 비휘발성 메모리 장치(1330)는 하나의 칩 또는 하나의 패키지로 구현될 수 있다.
예시적으로, 비휘발성 메모리 모듈 제어기(1310)는 프로세서(1100)와 복수의 데이터 신호들(DQ) 및 복수의 데이터 스트로브 신호들(DQS)을 송수신할 수 있고, 별도의 신호 라인들을 통해 램 커맨드(CMD_R), 램 어드레스(ADDR_R), 및 클럭(CK)을 수신할 수 있다.
RAM(1311)은, DDR 인터페이스에 따라 데이터(DQ)와 데이터 스트로브 신호(DQS)를 사용하여 호스트와 데이터를 교환하거나, 메모리 인터페이스에 따라 버퍼 메모리 및/혹 비휘발성 메모리들과 패킷 형태의 데이터를 교환하도록 구현될 수 있다. 실시 예에 있어서, RAM(1311)은 고속의 랜덤 억세스가 가능한 휘발성/비휘발성 메모리 장치로 구현될 수 있다. 예를 들어, RAM(1311)은 듀얼 포트(dual port) SRAM(static random access memory)일 수 있다. 실시 예에 있어서, 메모리 인터페이스(MEM interface)는 AXI(Advanced eXtensible Interface, AXI3, AXI4 등), AMBA(Advanced Microcontroller Bus Architecture), OCP(open core protocol) 등 SoC(system on chip) 전용 인터페이스에 의해 구현될 수 있다.
버퍼 메모리(1320)는 구동에 필요한 데이터를 임시로 저장할 수 있다. 예를 들어 버퍼 메모리(1320)는 비휘발성 메모리 장치(1330)를 관리하기 위한 메타 데이터 및/혹 관리 테이블을 저장/업데이트 할 수 있다. 실시 예에 있어서, 버퍼 메모리(1320)는 DRAM, SRAM, PRAM, MRAM, RRAM, FeRAM 등과 같은 랜덤 액세스 메모리를 포함할 수 있다.
SPD(1340)는 프로그램 가능 읽기 전용 기억 장치(EEPROM)일 수 있다. SPD(1340)는 NVDIMM(1300)의 초기 정보 또는 장치 정보를 포함할 수 있다. 예시적으로, SPD(1340)는 NVDIMM(1300)의 모듈 형태, 모듈 구성, 저장 용량, 모듈 종류, 실행 환경 등과 같은 초기 정보 또는 장치 정보를 포함할 수 있다. NVDIMM(1300)이 포함된 컴퓨팅 시스템이 부팅될 때, 컴퓨팅 시스템의 프로세서(1100)는 SPD(1340)를 읽고, 이를 기반으로 NVDIMM(1300)을 인식할 수 있다. 프로세서(1100)는 SPD(1340)를 기반으로 NVDIMM(1300)을 저장 매체로서 사용할 수 있다.
예시적으로, SPD(1340)는 부가 통신 채널(Side-Band Communication Channel)을 통해 프로세서(1100)와 통신할 수 있다. 프로세서(1100)는 부가 통신 채널을 통해 SPD(1340)와 부가 신호(SBS; Side-Band Signal)을 주고 받을 수 있다. 예시적으로, SPD(1340)는 부가 통신 채널을 통해 비휘발성 메모리 모듈 제어기(1310)와 통신할 수 있다. 예시적으로, 부가 통신 채널은 I2C 통신에 기반된 채널일 수 있다. 예시적으로, SPD(1340), 비휘발성 메모리 모듈 제어기(1310), 및 프로세서(1100)는 I2C 통신을 기반으로 서로 통신하거나 또는 정보를 주고 받을 수 있다.
도 12는 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 2 실시 예를 예시적으로 보여주는 블록도이다. 예시적으로, 도 12는 RDIMM(Registered DIMM) 형태를 갖는 비휘발성 메모리 모듈(2300)의 블록도이다. 예시적으로, 도 12에 도시된 비휘발성 메모리 모듈(2300)은 듀얼 인-라인 메모리 모듈(DIMM; Dual In-line Memory Module)의 형태를 갖고, DIMM 소켓에 장착되어 프로세서(1100)와 통신할 수 있다.
도 12를 참조하면, 비휘발성 메모리 모듈(2300)은 비휘발성 메모리 모듈 제어기(2310), 버퍼 메모리(2320), 비휘발성 메모리 장치(2330), SPD 칩(2340), 및 데이터 버퍼 회로(2350)를 포함할 수 있다. 비휘발성 메모리 모듈 제어기(2310)는 램(2311)을 포함할 수 있다.
데이터 버퍼 회로(2350)는 프로세서(1100, 도 10 참조)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 비휘발성 메모리 모듈 제어기(2350)로 전달할 수 있다. 또는 데이터 버퍼 회로(2350)는 비휘발성 메모리 모듈 제어기(2310)로부터 정보 또는 데이터를 수신하고, 수신된 정보 또는 데이터를 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 프로세서(1100)로 전달할 수 있다.
예시적으로, 데이터 버퍼 회로(2350)는 복수의 데이터 버퍼들(Data Buffer)을 포함할 수 있다. 복수의 데이터 버퍼들(Data Buffer) 각각은 프로세서(1100)와 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 주고 받을 수 있다. 또는 복수의 데이터 버퍼들 각각은 비휘발성 메모리 모듈 제어기(2310)와 신호를 주고 받을 수 있다. 예시적으로, 복수의 데이터 버퍼들 각각은 비휘발성 메모리 모듈 제어기(2310)의 제어에 따라 동작할 수 있다.
도 13은 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 3 실시 예를 예시적으로 보여주는 블록도이다. 도 13을 참조하면, 비휘발성 메모리 모듈(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)를 선택적으로 엑세스할 수 있다.
도 14는 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 4 실시 예를 예시적으로 보여주는 블록도이다. 도 14를 참조하면, 비휘발성 메모리 모듈(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)로 제공할 수 있다.
도 15는 도 10의 비휘발성 메모리 모듈들 중 어느 하나에 대한 제 5 실시 예를 예시적으로 보여주는 블록도이다. 도 15를 참조하면, 비휘발성 메모리 모듈(5200)은 제어 회로(5210), 비휘발성 메모리 장치(5220), 및 램 장치(5230)를 포함한다. 제어 회로(5210)는 비휘발성 메모리 모듈 제어기(5211) 및 SPD(5212)를 포함한다. 비휘발성 메모리 모듈(5200)은 도 14의 비휘발성 메모리 모듈(4200)과 유사하게 동작할 수 있다. 하지만, 비휘발성 메모리 모듈(5200)은 도 14의 비휘발성 메모리 모듈(4200)과 달리 데이터 버퍼 회로(4213)를 포함하지 않는다. 즉, 도 15의 비휘발성 메모리 모듈(5200)은 프로세서(1100)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해 수신된 데이터를 비휘발성 메모리 모듈 제어기(5211) 또는 램 장치(5230)로 직접 제공할 수 있다. 또는, 도 15의 비휘발성 메모리 모듈(5200)의 비휘발성 메모리 모듈 제어기(5211)로부터의 데이터 또는 램 장치(5230)로부터의 데이터는, 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 통해, 프로세서(1100)로 직접 제공할 수 있다.
예시적으로, 도 14의 비휘발성 메모리 모듈(4200)은 LRDIMM(Load Redued DIMM) 형태의 메모리 모듈이고, 도 15의 비휘발성 메모리 모듈(5200)은 RDIMM(Registered DIMM) 형태의 메모리 모듈일 수 있다.
도 16은 본 발명의 실시 예에 따른 비휘발성 메모리 시스템이 적용된 서버 시스템을 예시적으로 보여주는 도면이다. 도 16을 참조하면, 서버 시스템(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, 30,40: 컴퓨팅 시스템
100, 100a, 110b, 400: 호스트
200, 500: 메모리 모듈
300, 300a, 300b, 600: 비휘발성 메모리 모듈
110, 110a, 110b: 엔코더
120, 120a, 120b: 메모리 모듈 드라이버
115: 디코더
122: 디코더 테이블
210: 중앙처리장치
220: 스크램블 회로
225: 디스크램블 회로

Claims (10)

  1. 호스트;
    상기 호스트에 제 1 채널을 통하여 연결된 적어도 하나의 메모리 모듈; 및
    상기 호스트에 제 2 채널을 통하여 연결된 적어도 하나의 비휘발성 메모리 모듈을 포함하고,
    상기 호스트는,
    패킷 데이터를 엔코딩하는 엔코더; 및
    상기 엔코딩된 패킷 데이터가 디코딩할 필요가 없을 때 상기 엔코딩된 패킷 데이터를 상기 적어도 하나의 메모리 모듈로 전송하고, 상기 엔코딩된 패킷 데이터가 디코딩할 필요가 있을 때 상기 엔코딩된 패킷 데이터를 디코더 테이블을 이용하여 디코딩하고 상기 디코딩된 패킷 데이터를 상기 적어도 하나의 비휘발성 메모리 모듈로 전송하는 메모리 모듈 드라이버를 포함하는 컴퓨팅 시스템.
  2. 제 1 항에 있어서,
    상기 호스트 및 상기 적어도 하나의 메모리 모듈은 DDR(double data rate) 인터페이스를 통하여 데이터를 송수신하거나,
    상기 호스트와 상기 적어도 하나의 비휘발성 메모리 모듈은 상기 DDR 인터페이스를 통하여 데이터를 송수신하는 컴퓨팅 시스템.
  3. 제 1 항에 있어서,
    상기 엔코더는 상기 패킷 데이터에 대하여 스크램블링, ECC(error correction code) 엔코딩, 스위즈링(swizzling) 및 랜덤마이징(randomizing) 중 적어도 하나를 수행하는 컴퓨팅 시스템.
  4. 제 1 항에 있어서,
    상기 패킷 데이터는 상기 적어도 하나의 메모리 모듈 및 상기 적어도 하나의 비휘발성 메모리 모듈이 삽입된 슬롯 정보를 포함하고,
    상기 메모리 모듈 드라이버는,
    상기 슬롯 정보를 근거로 하여 상기 엔코딩된 데이터의 디코딩 여부를 판별하는 컴퓨팅 시스템.
  5. 제 1 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 모듈의 초기화 동작시, 상기 적어도 하나의 비휘발성 메모리 모듈로부터 전송되는 초기화 데이터를 이용하여 상기 디코더 테이블이 생성되는 컴퓨팅 시스템.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 모듈에서 사전에 결정된 순서로 데이터를 업데이트하고,
    상기 메모리 모듈 드라이버는 상기 업데이트 데이터를 인식함으로써 커맨드 테이블을 생성하는 컴퓨팅 시스템.
  7. 제 1 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 모듈은,
    복수의 비휘발성 메모리들;
    구동에 필요한 데이터를 임시로 저장하는 버퍼 메모리; 및
    상기 복수의 비휘발성 메모리들 및 상기 버퍼 메모리를 제어하는 비휘발성 메모리 모듈 제어기를 포함하고,
    상기 비휘발성 메모리 모듈 제어기는, 상기 호스트와 DDR 인터페이스를 통하여 데이터를 입출력하는 램을 포함하는 컴퓨팅 시스템.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 모듈은,
    복수의 비휘발성 메모리들;
    상기 호스트와 데이터를 입출력하는 데이터 버퍼들;
    상기 데이터 버퍼들의 데이터를 송수신하는 복수의 디램들(dynamic random access memories); 및
    상기 복수의 비휘발성 메모리들과 상기 복수의 디램들을 제어하고, 상기 호스트가 상기 복수의 비휘발성 메모리들에 대한 억세스를 가능케하는 비휘발성 메모리 모듈 제어기를 포함하는 컴퓨팅 시스템.
  9. 호스트, 휘발성 메모리 모듈 및 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 데이터 전송 방법에 있어서:
    패킷 데이터를 스크램블하는 단계;
    상기 스크램블된 패킷 데이터를 디스크램블할 필요가 있는 지를 판별하는 단계;
    상기 스크램블된 패킷 데이터를 디스크램블 할 필요가 있을 때, 디코더 테이블을 이용하여 상기 스크램블된 패킷 데이터를 디스크램블 하는 단계; 및
    상기 디스크램블된 패킷 데이터를 상기 비휘발성 메모리 모듈로 출력하는 단계를 포함하는 방법.
  10. 호스트, 휘발성 메모리 모듈 및 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템의 데이터 전송 방법에 있어서:
    어드레스, 커맨드, 데이터, 혹은 SPD(serial presence detect) 커맨드를 디스크램블링하는 단계;
    상기 디스크램블링된 어드레스, 커맨드, 데이터 혹은 SPD 커맨드를 스크램블링하는 단계; 및
    상기 스크램블링된 디스크램블 어드레스, 커맨드, 데이터 혹은 SPD 커맨드를 상기 휘발성 메모리 모듈 혹은 상기 비휘발성 메모리 모듈에 전송하는 단계를 포함하는 방법.
KR1020150103614A 2015-07-22 2015-07-22 컴퓨팅 시스템 및 그것의 데이터 전송 방법 KR20170012675A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150103614A KR20170012675A (ko) 2015-07-22 2015-07-22 컴퓨팅 시스템 및 그것의 데이터 전송 방법
US15/152,029 US20170024162A1 (en) 2015-07-22 2016-05-11 Computing system and data transferring method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150103614A KR20170012675A (ko) 2015-07-22 2015-07-22 컴퓨팅 시스템 및 그것의 데이터 전송 방법

Publications (1)

Publication Number Publication Date
KR20170012675A true KR20170012675A (ko) 2017-02-03

Family

ID=57836092

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150103614A KR20170012675A (ko) 2015-07-22 2015-07-22 컴퓨팅 시스템 및 그것의 데이터 전송 방법

Country Status (2)

Country Link
US (1) US20170024162A1 (ko)
KR (1) KR20170012675A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019156883A1 (en) * 2018-02-08 2019-08-15 Micron Technology, Inc. Status management in storage backed memory package

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552643B2 (en) * 2016-12-28 2020-02-04 Intel Corporation Fast boot up memory controller
US10606690B2 (en) * 2017-09-29 2020-03-31 Intel Corporation Memory controller error checking process using internal memory device codes
KR20200015233A (ko) 2018-08-03 2020-02-12 삼성전자주식회사 불휘발성 메모리 장치들을 포함하는 반도체 메모리 모듈
US11474897B2 (en) * 2019-03-15 2022-10-18 Nvidia Corporation Techniques for storing data to enhance recovery and detection of data corruption errors
KR20210014473A (ko) * 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 라이트 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050185541A1 (en) * 2004-02-23 2005-08-25 Darren Neuman Method and system for memory usage in real-time audio systems
JP2009180972A (ja) * 2008-01-31 2009-08-13 Panasonic Corp オーディオレジューム再生装置及びオーディオレジューム再生方法
US8171377B2 (en) * 2008-01-31 2012-05-01 International Business Machines Corporation System to improve memory reliability and associated methods
US9026615B1 (en) * 2011-09-22 2015-05-05 Teradici Corporation Method and apparatus for caching image data transmitted over a lossy network
US9607696B2 (en) * 2013-04-25 2017-03-28 Technion Research And Development Foundation Ltd. Minimal maximum-level programming

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019156883A1 (en) * 2018-02-08 2019-08-15 Micron Technology, Inc. Status management in storage backed memory package
US10838637B2 (en) 2018-02-08 2020-11-17 Micron Technology, Inc. Status management in storage backed memory package
US11442638B2 (en) 2018-02-08 2022-09-13 Micron Technology, Inc. Status management in storage backed memory package
US11934671B2 (en) 2018-02-08 2024-03-19 Micron Technology, Inc. Status management in storage backed memory package

Also Published As

Publication number Publication date
US20170024162A1 (en) 2017-01-26

Similar Documents

Publication Publication Date Title
US11749326B2 (en) Dynamic random access memory (DRAM) device and memory controller therefor
JP6983313B2 (ja) 不揮発性メモリの書込みクレジットの管理
KR20170012675A (ko) 컴퓨팅 시스템 및 그것의 데이터 전송 방법
KR101975534B1 (ko) 연산기능을 갖는 반도체 메모리 장치
US20200042203A1 (en) Channel optimized storage modules
KR101824227B1 (ko) 메모리 시스템 및 그것의 프로그램 방법
US9891856B2 (en) Memory address remapping system, device and method of performing address remapping operation
US9064603B1 (en) Semiconductor memory device and memory system including the same
US20100185811A1 (en) Data processing system and method
US11494118B2 (en) Storage device and operating method thereof
US10922000B2 (en) Controller, operating method thereof, and memory system including the same
KR20200025184A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법
US11360711B2 (en) Storage device temporarily suspending internal operation to provide short read response time for read request from host
US20180293007A1 (en) Data storage device and operating method thereof
US20180239557A1 (en) Nonvolatile memory device, data storage device including the same, and operating method of data storage device
TW201826275A (zh) 電阻式記憶裝置及其選擇性寫入電路和操作方法
JP2021111333A (ja) 不揮発性メモリの自動インクリメント書き込みカウント
US10754768B2 (en) Memory system using descriptor lookup tables to access setting information for a non-volatile memory, and an operating method thereof
KR20210031266A (ko) 인터페이스 회로, 메모리 장치, 저장 장치 및 메모리 장치의 동작 방법
US9971549B2 (en) Method of operating a memory device
KR20160144564A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
US20140331006A1 (en) Semiconductor memory devices
KR20100098968A (ko) 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
KR20190102779A (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US20210064622A1 (en) Address search circuit and method of semiconductor memory apparatus and controller therefor