KR101671334B1 - 메모리 장치와 이의 데이터 제어방법 - Google Patents

메모리 장치와 이의 데이터 제어방법 Download PDF

Info

Publication number
KR101671334B1
KR101671334B1 KR1020100072175A KR20100072175A KR101671334B1 KR 101671334 B1 KR101671334 B1 KR 101671334B1 KR 1020100072175 A KR1020100072175 A KR 1020100072175A KR 20100072175 A KR20100072175 A KR 20100072175A KR 101671334 B1 KR101671334 B1 KR 101671334B1
Authority
KR
South Korea
Prior art keywords
data
memory
buffer
controller
sub
Prior art date
Application number
KR1020100072175A
Other languages
English (en)
Other versions
KR20120011905A (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 KR1020100072175A priority Critical patent/KR101671334B1/ko
Priority to US13/182,518 priority patent/US8719532B2/en
Publication of KR20120011905A publication Critical patent/KR20120011905A/ko
Application granted granted Critical
Publication of KR101671334B1 publication Critical patent/KR101671334B1/ko

Links

Images

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • 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
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Abstract

본 발명은 메모리 모듈의 메인 컨트롤러를 거치지 않고 메모리들 간에 직접 데이터를 송수신할 수 있는 메모리 모듈, 이의 데이터 제어방법 및 이를 포함하는 장치들에 관한 것이다. 상기 메모리 모듈에서의 데이터 제어방법은, 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들과 연결된 버퍼가 메인 컨트롤러로부터 출력된 제어신호에 따라 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 로컬 버스를 통하여 버퍼링하는 단계 및 상기 버퍼가 버퍼링된 상기 데이터를 타겟 메모리에 전송하는 단계를 포함한다.

Description

메모리 장치와 이의 데이터 제어방법{Non volatile memory apparatus and data controlling method thereof}
본 발명의 개념에 따른 실시 예는 메모리 장치에 관한 것으로, 특히 메모리 장치의 메인 컨트롤러를 거치지 않고 메모리들 간에 직접 데이터를 송수신할 수 있는 메모리 장치, 이의 데이터 제어방법 및 이를 포함하는 장치들에 관한 것이다.
비휘발성 메모리 장치의 경우 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 남아있다. 비휘발성 메모리들 중 플래시 메모리는 전기적으로 셀들의 데이터를 일괄적으로 소거(erase)하는 기능을 가지고 있기 때문에 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 노어(NOR) 플래시 메모리와 낸드(NAND) 플래시 메모리로 구분된다. 일반적으로 노어 플래시 메모리는 전류 소모가 크기 때문에 고집적화에 불리하지만 고속화에 용이한 장점이 있다. 낸드 플래시 메모리는 노어 플래시 메모리에 비하여 적은 셀 전류를 소모하여 고집적화에 유리하다.
특히 낸드 플래시 메모리는 집적도면에서 우수한 특성을 가지고 있어, 예컨대 MP3 플레이어, 메모리 카드(Memory Card), SSD(Solid State Drive) 등과 같은 다양한 기기들에서 데이터 저장용 장치로 사용된다.
따라서 본 발명이 이루고자 하는 기술적인 과제는 메모리 장치의 메인 컨트롤러를 거치지 않고 메모리들 간에 직접 데이터를 송수신할 수 있는 메모리 장치, 이의 데이터 제어방법 및 이를 포함하는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 장치에서의 데이터 제어방법은, 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들과 연결된 버퍼가 메인 컨트롤러로부터 출력된 제어신호에 따라 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 로컬 버스를 통하여 버퍼링하는 단계; 및 상기 버퍼가 버퍼링된 상기 데이터를 타겟 메모리에 전송하는 단계를 포함한다.
실시 예에 따라 상기 타겟 메모리는 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들 중 어느 하나이다. 상기 데이터를 타겟 메모리에 전송하는 단계는, 상기 버퍼가 상기 로컬 버스를 통하여 상기 데이터를 상기 타겟 메모리에 전송하는 것이다.
실시 예에 따라 상기 타겟 메모리는 상기 버퍼와 데이터 버스를 공유하는 타 버퍼에 연결된 복수 개의 비휘발성 메모리들 중 어느 하나이다. 상기 데이터를 타겟 메모리에 전송하는 단계는, 상기 버퍼가 상기 데이터 버스를 통하여 상기 데이터를 상기 타 버퍼에 전송하는 단계; 및 상기 데이터를 수신한 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하는 단계를 포함한다.
실시 예에 따라 상기 데이터를 타겟 메모리에 전송하는 단계 이전에, 상기 버퍼와 연결된 에러정정회로가 상기 데이터의 에러를 검출하여 정정하는 단계를 더 포함한다. 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하는 단계 이전에, 상기 타 버퍼와 연결된 에러정정회로가 상기 데이터의 에러를 검출하여 정정하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 메모리 장치는, 로컬 버스; 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들; 상기 로컬 버스를 통하여 상기 복수 개의 비휘발성 메모리들과 연결되며, 상기 복수 개의 비휘발성 메모리들에 저장된 데이터를 버퍼링하는 버퍼; 및 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 버퍼가 버퍼링하여 타겟 메모리로 전송하도록 상기 버퍼를 제어하기 위한 제어신호를 생성하는 메인 컨트롤러를 포함한다.
실시 예에 따라 상기 타겟 메모리는 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들 중 어느 하나이다. 상기 버퍼는 상기 로컬 버스를 통하여 상기 데이터를 상기 타겟 메모리에 전송한다. 상기 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 버퍼가 상기 데이터를 타겟 메모리에 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
실시 예에 따라 상기 타겟 메모리는 상기 버퍼와 데이터 버스를 공유하는 타 버퍼에 연결된 복수 개의 비휘발성 메모리들 중 어느 하나이다. 상기 버퍼는 상기 데이터 버스를 통하여 상기 데이터를 상기 타 버퍼에 전송하고, 상기 데이터를 수신한 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송한다. 상기 타 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
본 발명의 실시 예에 따른 메모리 시스템은, 로컬 버스; 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들, 상기 로컬 버스를 통하여 상기 복수 개의 비휘발성 메모리들과 연결되며, 상기 복수 개의 비휘발성 메모리들에 저장된 데이터를 버퍼링하는 버퍼 및 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 버퍼가 버퍼링하여 타겟 메모리로 전송하도록 상기 버퍼를 제어하기 위한 제어신호를 생성하는 메인 컨트롤러를 포함하는 메모리 장치; 및 상기 메모리 장치을 제어하는 프로세서를 포함한다.
실시 예에 따라 상기 타겟 메모리가 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 로컬 버스를 통하여 상기 데이터를 상기 타겟 메모리에 전송한다. 상기 메모리 장치는 상기 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 버퍼가 상기 데이터를 타겟 메모리에 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
실시 예에 따라 상기 타겟 메모리가 상기 버퍼와 데이터 버스를 공유하는 타 버퍼에 연결된 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 데이터 버스를 통하여 상기 데이터를 상기 타 버퍼에 전송하고, 상기 데이터를 수신한 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송한다. 상기 메모리 장치는, 상기 타 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
본 실시 예에 따른 SSD는 로컬 버스; 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들, 상기 로컬 버스를 통하여 상기 복수 개의 비휘발성 메모리들과 연결되며, 상기 복수 개의 비휘발성 메모리들에 저장된 데이터를 버퍼링하는 버퍼 및 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 버퍼가 버퍼링하여 타겟 메모리로 전송하도록 상기 버퍼를 제어하기 위한 제어신호를 생성하는 메인 컨트롤러를 포함하는 메모리 장치; 및 상기 메모리 장치을 제어하는 프로세서를 포함하는 메모리 시스템을 구현한다.
실시 예에 따라 상기 타겟 메모리가 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 로컬 버스를 통하여 상기 데이터를 상기 타겟 메모리에 전송한다. 상기 메모리 장치는 상기 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 버퍼가 상기 데이터를 타겟 메모리에 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
실시 예에 따라 상기 타겟 메모리가 상기 버퍼와 데이터 버스를 공유하는 타 버퍼에 연결된 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 데이터 버스를 통하여 상기 데이터를 상기 타 버퍼에 전송하고, 상기 데이터를 수신한 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송한다. 상기 메모리 장치는, 상기 타 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
본 발명의 실시 예에 따른 RAID 시스템은, 호스트; 및 상기 호스트로부터 적어도 하나의 명령을 수신하여 실행하는 메모리 시스템을 포함하고, 상기 메모리 시스템은로컬 버스; 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들, 상기 로컬 버스를 통하여 상기 복수 개의 비휘발성 메모리들과 연결되며, 상기 복수 개의 비휘발성 메모리들에 저장된 데이터를 버퍼링하는 버퍼 및 상기 복수 개의 비휘발성 메모리들 중 소스 메모리에 저장된 데이터를 상기 버퍼가 버퍼링하여 타겟 메모리로 전송하도록 상기 버퍼를 제어하기 위한 제어신호를 생성하는 메인 컨트롤러를 포함하는 메모리 장치; 및 상기 메모리 장치을 제어하는 프로세서를 포함한다.
실시 예에 따라 상기 타겟 메모리가 상기 로컬 버스를 공유하는 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 로컬 버스를 통하여 상기 데이터를 상기 타겟 메모리에 전송한다. 상기 메모리 장치는, 상기 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 버퍼가 상기 데이터를 타겟 메모리에 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
실시 예에 따라 상기 타겟 메모리가 상기 버퍼와 데이터 버스를 공유하는 타 버퍼에 연결된 복수 개의 비휘발성 메모리들 중 어느 하나이면, 상기 버퍼는 상기 데이터 버스를 통하여 상기 데이터를 상기 타 버퍼에 전송하고, 상기 데이터를 수신한 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송한다. 상기 메모리 장치는, 상기 타 버퍼와 연결된 에러정정회로를 더 포함하고, 상기 에러정정회로는, 상기 타 버퍼가 상기 타겟 메모리에 상기 데이터를 전송하기 전에 상기 데이터의 에러를 검출하여 정정한다.
본 발명의 실시 예에 따른 메모리 모듈의 메인 컨트롤러를 거치지 않고 메모리들 간에 직접 데이터를 송수신할 수 있는 효과가 있다.
또한 메인 컨트롤러를 거치지 않고 메모리들 간에 직접 데이터를 송수신할 수 있으므로 데이터의 송수신 속도가 빨라지게 된다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템의 개략적인 구성을 나타낸 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 리드하는 방법을 나타낸 것이다.
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 라이트하는 방법을 나타낸 것이다.
도 4는 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 이동하는 방법을 나타낸 것이다.
도 5는 본 발명의 다른 실시 예에 따른 메모리 시스템의 개략적인 구성을 나타낸 블록도이다.
도 6은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 리드하는 방법을 나타낸 것이다.
도 7은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 라이트하는 방법을 나타낸 것이다.
도 8은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 이동하는 방법을 나타낸 것이다.
도 9는 본 발명의 일 실시 예에 따른 메모리 시스템의 제1서브 컨트롤러 또는 제2서브 컨트롤러에 의하여 발생하는 데이터 스트로브 신호를 나타낸 다이어그램이다.
도 10은 도 1의 메모리 모듈을 포함하는 메모리 시스템의 또 다른 실시 예를 나타낸다.
도 11은 본 발명의 실시 예에 따른 메모리 모듈을 포함하는 RAID 시스템을 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템의 개략적인 구성을 나타낸 블록도이다.
메모리 장치(100)는 메인 컨트롤러(10), 메모리 모듈들(20 및 30) 및 데이터 버스(50)를 포함한다. 실시 예에 따라 메모리 장치(100)는 적어도 하나의 메모리를 포함하는 메모리 모듈(20 또는 30)들을 포함할 수 있다. 본 실시 예에서는 설명의 편이를 위하여 제1메모리 모듈(20) 및 제2메모리 모듈(30)만을 포함한 메모리 장치(100)에 대하여 서술하기로 한다.
메인 컨트롤러(10)는 메모리 장치(100)의 전반적인 동작을 제어한다. 메인 컨트롤러(10)는 호스트로부터 각종 명령, 예컨대 데이터의 리드 명령(read command) 또는 라이트 (write)명령 등을 수신하고, 상기 명령들에 따른 동작을 수행하도록 메모리 장치(100)를 제어한다. 또한 메인 컨트롤러(10)는 호스트로부터 제1메모리 모듈(20) 또는 제2메모리 모듈(30)에 포함된 어느 하나의 메모리에 저장된 데이터를 상기 제1메모리 모듈(20) 또는 제2메모리 모듈(30) 중 다른 하나의 메모리로 이동시키기 위한 제어신호를 생성할 수 있다. 메인 컨트롤러(10)는 제1메모리 모듈(20) 또는 제2메모리 모듈(30)로 상기 제어신호를 전송함으로써 제1메모리 모듈(20) 또는 제2메모리 모듈(30)을 제어할 수 있다.
메인 컨트롤러(10)는 메인 버퍼(14) 및 메인 에러정정회로(ECC: Error Correction Circuit)(16)를 포함할 수 있다.
메인 버퍼(14)는 호스트(미도시)로부터 전송되는 각종 명령, 예컨대 데이터의 리드 명령 또는 라이트 명령 등을 저장한다. 메인 버퍼(14)는 호스트로부터 입력되는 각종 데이터를 저장한다. 또한 메인 버퍼(14)는 제1메모리 모듈(20) 또는 제2메모리 모듈(30)으로부터 데이터 버스(50)를 통하여 메인 컨트롤러(10)로 전달되는 모든 데이터를 저장할 수 있다.
메인 ECC(16)는 각종 데이터의 에러를 검출하여 정정한다. 메인 ECC(16)는 호스트로부터 전송된 각종 명령, 또는 데이터의 에러를 검출하여 정정한다. 또한 메인 ECC(16)는 제1메모리 모듈(20) 또는 제2메모리 모듈(30)로부터 전달된 데이터의 에러를 검출하여 정정할 수 있다.
실시 예에 따라 메인 컨트롤러(10)는 펌웨어(firmware)로 구현될 수 있다. 메인 컨트롤러(10)의 메인 버퍼(14)는 상기 펌웨어를 저장할 수 있다. 메인 컨트롤러(10)는 호스트와의 인터페이싱을 위한 호스트 인터페이스(host interface)를 더 포함할 수 있다.
제1메모리 모듈(20)은 복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4), 제1버퍼(24) 및 제1로컬 버스(28)를 포함한다. 실시 예에 따라 제1버퍼(24)는 제1서브 컨트롤러(22)에 포함된 형태로 구현될 수 있다. 제1서브 컨트롤러(22)는 제1메모리 모듈(20)의 전반적인 동작을 제어한다.
복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4)은 메인 컨트롤러(10) 또는 제1서브 컨트롤러(22)의 제어 하에 각종 데이터가 리드되거나 라이트된다. 또한 복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4)에는 각종 데이터가 저장된다.
제1서브 컨트롤러(22)는 메인 컨트롤러(10)로부터 전송되는 각종 제어신호에 따른 동작을 수행하기 위하여 제1메모리 모듈(20)을 제어한다. 상기 제1서브 컨트롤러(22)는 제1버퍼(24)를 포함할 수 있다.
메인 컨트롤러(10)로부터 제1메모리 모듈(20)의 메모리들(20-1, 20-2, 20-3 및 20-4)에 저장된 데이터를 리드하기 위한 제어신호가 전달되면, 제1서브 컨트롤러(22)는 제1로컬 버스(28)를 통하여 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나로부터 상기 제어신호에 대응하는 데이터(이하, '리드 데이터'라 하기로 한다)를 리드한다. 제1서브 컨트롤러(22)는 리드 데이터를 제1버퍼(24)에 저장하였다가 데이터 버스(50)를 통하여 메인 컨트롤러(10)에 상기 리드 데이터를 전송한다.
예컨대, 메인 컨트롤러(10)가 메모리(20-1)에 저장된 데이터를 리드하기 위한 제어신호를 데이터 버스(50)를 통하여 제1서브 컨트롤러(22)에 전송하였다면, 제1서브 컨트롤러(22)는 제1로컬 버스(28)를 통하여 상기 메모리(20-1)에 저장된 데이터, 즉 리드 데이터를 수신하여 제1버퍼(24)에 저장한다. 이후 서브 컨트롤러(22)는 데이터 버스(50)를 통하여 상기 리드 데이터를 메인 컨트롤러(10)에 전송한다. 이때 메인 컨트롤러(10)는 상기 리드 데이터가 저장된 위치, 즉 리드 데이터에 대한 어드레스(address) 정보를 포함하여 상기 제어신호를 생성할 수 있다. 메인 컨트롤러(10)는 리드 데이터의 어드레스 정보가 포함된 제어신호를 제1서브 컨트롤러(22)에 전송함으로써 제1메모리 모듈(20)이 리드 데이터를 메인 컨트롤러(10)에 전송하도록 제어할 수 있다.
메인 컨트롤러(10)로부터 제1메모리 모듈(20)의 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 데이터를 라이트하기 위한 제어신호를 전송하면, 제1서브 컨트롤러(22)는 데이터 버스(50)를 통하여 상기 제어신호를 수신한다. 이때 메인 컨트롤러(10)는 상기 제1메모리 모듈(20)에 라이트되는 데이터(이하, '라이트 데이터'라 한다)를 포함시켜 제어신호를 생성하고, 데이터 버스(50)를 통하여 상기 제어신호를 전송할 수 있다. 데이터 버스를 통하여 상기 라이트 데이터가 전달되면, 제1서브 컨트롤러(22)는 상기 라이트 데이터를 제1버퍼(24)에 저장하였다가 해당 메모리(20-1, 20-2, 20-3 및 20-4)에 제1로컬 버스(28)를 통하여 상기 라이트 데이터를 저장함으로써 라이트 데이터를 라이트할 수 있다.
제1메모리 모듈(20)에 메인 컨트롤러(10)로부터 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 저장된 데이터를 제1메모리 모듈(20)의 다른 하나의 메모리(20-1, 20-2, 20-3 및 20-4)로 이동하기 제어신호가 전달되면, 제1서브 컨트롤러(22)는 상기 제어신호에 대응하는 데이터((이하, '이동 데이터'라 한다)를 리드하여 제1버퍼(24)에 저장한다. 이후, 제1서브 컨트롤러(22)는 제1로컬 버스(28)를 통하여 이동 데이터를 상기 다른 하나의 메모리(20-1, 20-2, 20-3 및 20-4)에 전송한다. 이로써 본 발명에 따른 제1메모리 모듈(20)은 상기 제1메모리 모듈(20)에 포함된 메모리들(20-1, 20-2, 20-3 및 20-4)에 저장된 데이터들의 이동시 메인 컨트롤러(10)를 거치지 않고 직접 상기 이동 데이터를 전송할 수 있다. 이하, 이동 데이터가 원래 저장되어 있는 메모리를 '소스 메모리'라 하고, 상기 이동 데이터가 새로이 저장될 메모리를 '타겟 메모리'라 하기로 한다.
제1메모리 모듈(20)에 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나인 소스 메모리에 저장된 데이터를 타겟 메모리인 제2메모리 모듈(30)의 메모리들(30-1, 30-2, 30-3 및 30-4)로 이동하기 위한 제어신호가 전달되면, 제1서브 컨트롤러(22)는 먼저 제1로컬 버스(28)를 통하여 상기 제어신호에 대응하는 이동 데이터를 소스 메모리로부터 수신한다. 이후 제1서브 컨트롤러(22)는 데이터 버스(50)를 통하여 상기 이동 데이터를 타겟 메모리가 포함된 제2메모리 모듈(30)로 전송한다.
도 1을 참조하면, 제1메모리 모듈(20)의 메모리(20-1)에 데이터 "DATA A"가 저장되어 있다. 메인 컨트롤러(10)로부터 상기 DATA A를 제2메모리 모듈(30)의 메모리(30-3)로 이동시키기 위한 제어신호가 제1메모리 모듈(20)에 전달되면, 제1서브 컨트롤러(22)는 소스 메모리에 해당하는 메모리(20-1)로부터 상기 DATA A를 제1로컬 버스(28)를 통하여 수신하여 제1버퍼(24)에 저장한다. 제1서브 컨트롤러(22)는 데이터 버스(50)를 통하여 DATA A를 타겟 메모리가 포함된 제2데이터 모듈(30)에 전송한다. 제2데이터 모듈(30)의 제2서브 컨트롤러(32)는 상기 DATA A를 제2버퍼(34)에 저장하였다가 제2로컬 버스(38)를 통하여 타겟 메모리인 메모리(30-3)에 저장한다. 이와 같이 본 발명에 따른 제1메모리 모듈(20)은 메인 컨트롤러(10)를 거치지 않고 제2메모리 모듈(30)로 직접 데이터를 전송할 수 있다.
제2메모리 모듈(30)도 제1메모리 모듈(20)과 마찬가지로 복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4), 제2버퍼(34) 및 제2로컬 버스(38)를 포함한다. 실시 예에 따라 제2버퍼(34)는 제2서브 컨트롤러(32)에 포함된 형태로 구현될 수 있으며, 제2서브 컨트롤러(32)는 제2메모리 모듈(30)의 전반적인 동작을 제어할 수 있다.
복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4)은 메인 컨트롤러(10) 또는 제2서브 컨트롤러(32)에 제어 하에 각종 데이터가 리드되거나 라이트된다. 또한 복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4)에는 각종 데이터가 저장되어 유지될 수 있다.
제2서브 컨트롤러(32)는 메인 컨트롤러(10)로부터 전송되는 각종 제어신호에 따른 동작을 수행하기 위하여 제2메모리 모듈(30)을 제어한다. 이를 위하여 제2서브 컨트롤러(32)는 제2버퍼(34)를 포함할 수 있다.
메인 컨트롤러(10)로부터 제2메모리 모듈(30)의 메모리들(30-1, 30-2, 30-3 및 30-4)에 저장된 데이터를 리드하기 위한 제어신호가 전달되면, 제2서브 컨트롤러(32)는 제2로컬 버스(38)를 통하여 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나로부터 상기 제어신호에 대응하는 리드 데이터를 리드한다. 제2서브 컨트롤러(32)는 리드 데이터를 제2버퍼(34)에 저장하였다가 데이터 버스(50)를 통하여 메인 컨트롤러(10)에 상기 리드 데이터를 전송한다.
메인 컨트롤러(10)로부터 제2메모리 모듈(30)의 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나에 데이터를 라이트하기 위한 제어신호를 전송하면, 제2서브 컨트롤러(32)는 데이터 버스(50)를 통하여 상기 제어신호를 수신한다. 데이터 버스(50)를 통하여 상기 라이트 데이터가 전달되면, 제2서브 컨트롤러(32)는 상기 라이트 데이터를 제2버퍼(34)에 저장하였다가 해당 메모리(30-1, 30-2, 30-3 및 30-4)에 제2로컬 버스(38)를 통하여 상기 라이트 데이터를 저장함으로써 라이트 데이터를 라이트한다.
제2메모리 모듈(30)에 메인 컨트롤러(10)로부터 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나에 저장된 데이터를 제2메모리 모듈(30)의 다른 하나의 메모리(30-1, 30-2, 30-3 및 30-4)로 이동하기 제어신호가 전달되면, 제2서브 컨트롤러(32)는 소스 메모리로부터 상기 제어신호에 대응하는 이동 데이터를 리드하여 제2서브 버퍼(34)에 저장한다. 제2서브 컨트롤러(32)는 제2로컬 버스(38)를 통하여 상기 이동 데이터를 타겟 메모리로 전송한다.
제2메모리 모듈(30)에 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나에 저장된 데이터를 제1메모리 모듈(20)의 메모리들(20-1, 20-2, 20-3 및 20-4)로 이동하기 위한 제어신호가 전달되면, 제2서브 컨트롤러(32)는 먼저 제2로컬 버스(38)를 통하여 상기 제어신호에 대응하는 이동 데이터를 메모리들(30-1, 30-2, 30-3 및 30-4) 중 소스 메모리로부터 수신한다. 이후 제2서브 컨트롤러(32)는 데이터 버스(50)를 통하여 상기 이동 데이터를 타겟 메모리가 포함된 제1메모리 모듈(20)로 전송한다.
실시 예에 따라 제1메모리 모듈(20)의 메모리들(20-1, 20-2, 20-3 및 20-4) 및 제2메모리 모듈(30)의 메모리들(30-1, 30-2, 30-3 및 30-4)의 빠른 데이터 입출력 속도를 위하여 메모리들(20-1, 20-2, 20-3, 20-4, 30-1, 30-2, 30-3 및 30-4)은더블 데이터 레이트(Double Data Rate : DDR) 방식을 사용할 수 있도록 구현될 수 있다. DDR 방식은 데이터 스트로브 신호(Data Strobe Signal)의 라이징 엣지(Rising Edge)와 폴링 엣지(Falling Edge)에 동기되어 데이터가 입력 또는 출력되는 기법이다. 이때 데이터 스트로브 신호는 메모리들(20-1, 20-2, 20-3, 20-4, 30-1, 30-2, 30-3 및 30-4)의 리드 또는 라이트 동작 시에 데이터를 입력 또는 출력하기 위한 레퍼런스 클럭(Reference Clock)으로 이용된다.
또한 실시 예에 따라 메인 컨트롤러(10), 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)는 상기 데이터 스트로브 신호를 발생할 수 있다. 메인 컨트롤러(10), 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)는 외부에서 제공된 데이터 스트로브 신호를 수신하거나, 외부로 데이터 스트로브 신호를 전송한다. 또한 메인 컨트롤러(10), 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)는 호스트로부터 리드 명령 또는 라이트 명령이 전달되면, 데이터 스트로브 신호를 오프셋(Offset) 값으로 조정할 수 있다.
예컨대, 호스트로부터 제1서브 컨트롤러(20) 및 제2서브 컨트롤러들(30)에 라이트 명령이 전달되면, 상기 제1서브 컨트롤러(20) 및 제2서브 컨트롤러(30)는 메인 컨트롤러(10)로부터 발생한 로컬 라이트 인에이블(Local Write Enable) 신호 또는 로컬 리드 인에이블(Local Read Enable) 신호를 수신한다. 제1서브 및 제2서브 컨트롤러(20 및 30)는 리드 데이터 스트로브 신호를 발생시켜 미리 설정된 값만큼 지연시킨다. 그에 따라 지연된 리드 데이터 스트로브 신호는 라이트 데이터 스트로브 신호와 동일한 위상이 될 수 있다.
호스트로부터 리드 명령이 전달되면, 메인 컨트롤러(10)는 제1서브 컨트롤러(20) 또는 제2서브 컨트롤러(30)로 로컬 리드 인에이블 신호를 전송한다. 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)는 라이트 데이터 스트로브 신호를 생성하여 미리 저장된 값만큼 지연시켜 리드 데이터 스트로브 신호와 동일한 위상이 되도록 한다.
상기와 같이 리드 데이터 스트로브 신호 또는 라이트 데이터 스트로브 신호가 지연되는 정도를 결정하는 값을 오프셋 값이라 한다. 상기 오프셋 값은 고정된 값일 수 있으며 실시 예에 따라 메인 컨트롤러(10)가 제1메모리 모듈(20) 또는 제2메모리 모듈(30)을 테스트하여 결정되는 값일 수 있다.
도 2는 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 리드하는 방법을 나타낸 것이다. 설명의 편이를 위하여 데이터가 리드되는 메모리 모듈을 제1메모리 모듈(20)로 한정하기로 한다.
도 1 및 도 2를 참조하면, 먼저 메인 컨트롤러(10)는 호스트로부터 리드 명령을 수신한다(S62).
메인 컨트롤러(10)는 상기 리드 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20)에 전송한다(S64). 상기 제어신호를 수신한 제1메모리 모듈(20)의 제1서브 컨트롤러(22)는 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나로부터 상기 제어신호에 대응하는 데이터, 즉 리드 데이터를 리드한다(S66). 상기 제어신호에는 상기 리드 데이터가 저장된 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있으며, 제1서브 컨트롤러(22)는 상기 리드 데이터의 어드레스 정보를 이용하여 상기 리드 데이터를 리드한다.
제1메모리 모듈(20)의 제1서브 컨트롤러(22)는 상기 리드 데이터를 제1버퍼(24)에 저장하였다가(S68) 데이터 버스(50)를 통하여 메인 컨트롤러(10)에 전송한다(S70).
제1메모리 모듈(20)로부터 리드 데이터를 수신한 메인 컨트롤러(10)는 상기 리드 데이터의 에러를 검출하여 정정한다(S72). 리드 데이터의 에러가 정정되면, 메인 컨트롤러(10)는 상기 리드 데이터를 호스트로 출력한다(S74).
도 3은 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 라이트하는 방법을 나타낸 것이다. 설명의 편이를 위하여 데이터가 라이트되는 메모리 모듈을 제1메모리 모듈(20)로 한정하기로 한다.
도 1 및 도 3을 참조하면, 먼저 메인 컨트롤러(10)는 호스트로부터 라이트 명령을 수신한다(S82). 메인 컨트롤러(10)는 상기 라이트 명령에 따라 라이트되는 데이터, 즉 라이트 데이터의 에러를 검출하여 정정한다(S84). 상기 라이트 데이터에 대한 에러 검출 및 정정이 완료되면, 메인 컨트롤러(10)는 상기 라이트 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20)에 전송한다(S86).
상기 제어신호를 수신한 제1메모리 모듈(20)의 제1서브 컨트롤러(22)는 상기 제어신호에 포함된 라이트 데이터를 제1버퍼에 저장한다(S88). 제1서브 컨트롤러(22)는 상기 라이트 데이터를 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 라이트한다(S90). 상기 제어신호에는 상기 라이트 데이터가 라이트될 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있다. 따라서 제1서브 컨트롤러(22)는 상기 라이트 데이터의 어드레스 정보를 이용하여 상기 라이트 데이터를 라이트한다.
도 4는 본 발명의 일 실시 예에 따른 메모리 시스템에서 데이터를 이동하는 방법을 나타낸 것이다. 설명의 편이를 위하여 본 실시 예에서는 제1메모리 모듈(20)의 데이터를 제2메모리 모듈(30)로 이동시키는 것으로 가정한다. 즉, 제1메모리 모듈(20)은 소스 메모리를 포함하고, 제2메모리 모듈(30)은 타겟 메모리를 포함하는 것으로 가정한다.
도 1 및 도 4를 참조하면, 먼저 메인 컨트롤러(10)는 호스트로부터 데이터의 이동 명령을 수신한다(S102). 메인 컨트롤러(10)는 상기 이동 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20) 및 제2메모리 모듈(30)에 전송한다(S104).
실시 예에 따라 메인 컨트롤러(10)는 소스 메모리가 포함된 제2메모리 모듈(30)에 상기 제어신호를 먼저 전송할 수 있다. 상기 제어신호가 제1메모리 모듈(20)보다 제2메모리 모듈(30)에 먼저 전송되는 경우, 제2메모리 모듈(30)은 상기 이동 명령에 따른 데이터, 즉 이동 데이터가 제1메모리 모듈(20)을 통하여 데이터 버스(50)에 공유되는 될 때까지 별도의 동작을 수행하지 않고 대기 상태를 유지할 수 있다. 따라서 제2메모리 모듈(30)의 제2서브 컨트롤러(32)는 데이터 버스(50)에 상기 이동 데이터가 공유되는 즉시 상기 이동 데이터를 수신할 수 있게 된다.
제어신호를 수신한 제1메모리 모듈(20)의 제1서브 컨트롤러(22)는 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나, 즉 소스 메모리로부터 상기 제어신호에 대응하는 이동 데이터를 리드한다(S106). 상기 제어신호에는 상기 이동 데이터가 저장된 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있으며, 제1서브 컨트롤러(22)는 상기 이동 데이터의 어드레스 정보를 이용하여 소스 메모리로부터 상기 이동 데이터를 리드한다.
제1메모리 모듈(20)의 제1서브 컨트롤러(22)는 상기 이동 데이터를 제1버퍼(24)에 저장하였다가(S108) 데이터 버스(50)를 통하여 제2메모리 모듈(30)에 전송한다(S110).
제1메모리 모듈(20)로부터 상기 이동 데이터가 전송되면, 제2메모리 모듈(30)의 제2서브 컨트롤러(32)는 상기 이동 데이터를 제2버퍼(34)에 저장한다(S112). 이후 제2서브 컨트롤러(32)는 상기 이동 데이터를 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나, 즉 타겟 메모리에 라이트한다(S114). 단계 S104에서 제2메모리 모듈(30)로 전송되는 제어신호에는 상기 이동 데이터가 새로이 라이트될 위치에 대한 어드레스 정보도 포함될 수 있으며, 제2서브 컨트롤러(32)는 상기 이동 데이터의 어드레스 정보를 이용하여 상기 이동 데이터를 타겟 메모리에 라이트할 수 있다.
실시 예에 따라 메인 컨트롤러(10)는 이동 데이터가 타겟 메모리에 라이트되는 경우, 소스 메모리에 저장된 이동 데이터를 이레이즈할 수 있다.
도 5는 본 발명의 다른 실시 예에 따른 메모리 시스템의 개략적인 구성을 나타낸 블록도이다.
도 5를 참조하면, 메모리 장치(100')는 메인 컨트롤러(10'), 메모리 모듈들(20' 및 30') 및 데이터 버스(50)를 포함한다. 실시 예에 따라 메모리 장치(100')는 적어도 하나의 메모리를 포함하는 메모리 모듈(20' 또는 30')들을 포함할 수 있다. 본 실시 예에서는 설명의 편이를 위하여 제1메모리 모듈(20') 및 제2메모리 모듈(30')만을 포함한 메모리 장치(100')에 대하여 서술하기로 한다.
메인 컨트롤러(10')는 메모리 장치(100')의 전반적인 동작을 제어한다. 메인 컨트롤러(10')는 호스트로부터 각종 명령, 예컨대 데이터의 리드 명령 또는 라이트 명령 등을 수신하고, 상기 명령들에 따른 동작을 수행하도록 메모리 장치(100')를 제어한다. 또한 메인 컨트롤러(10')는 호스트로부터 제1메모리 모듈(20') 또는 제2메모리 모듈(30')에 포함된 어느 하나의 메모리에 저장된 데이터를 상기 제1메모리 모듈(20') 또는 제2메모리 모듈(30') 중 다른 하나의 메모리로 이동시키기 위한 제어신호를 생성할 수 있다. 메인 컨트롤러(10')는 제1메모리 모듈(20') 또는 제2메모리 모듈(30')로 상기 제어신호를 전송함으로써 제1메모리 모듈(20') 또는 제2메모리 모듈(30')을 제어할 수 있다.
메인 컨트롤러(10')는 메인 버퍼(14)를 포함할 수 있다. 메인 버퍼(14)는 호스트로부터 전송되는 각종 명령, 예컨대 데이터의 리드 명령 또는 라이트 명령 등을 저장한다. 메인 버퍼(14)는 호스트로부터 입력되는 각종 데이터를 저장한다. 또한 메인 버퍼(14)는 제1메모리 모듈(20') 또는 제2메모리 모듈(30')로부터 데이터 버스(50)를 통하여 메인 컨트롤러(10')로 전달되는 모든 데이터를 저장할 수 있다.
실시 예에 따라 메인 컨트롤러(10')는 펌웨어로 구현될 수 있다. 메인 컨트롤러(10')의 메인 버퍼(14)는 상기 펌웨어를 저장할 수 있다. 메인 컨트롤러(10')는 호스트와의 인터페이싱을 위한 호스트 인터페이스를 더 포함할 수 있다.
제1메모리 모듈(20')은 복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4), 제1버퍼(24) 및 제1로컬 버스(28)를 포함한다. 실시 예에 따라 제1버퍼(24)는 제1서브 컨트롤러(22')에 포함된 형태로 구현될 수 있다. 제1서브 컨트롤러(22')는 제1메모리 모듈(20')의 전반적인 동작을 제어할 수 있다.
복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4)은 메인 컨트롤러(10') 또는 제1서브 컨트롤러(22')의 제어 하에 각종 데이터가 리드되거나 라이트된다. 또한 복수 개의 메모리들(20-1, 20-2, 20-3 및 20-4)에는 각종 데이터가 저장된다.
제1서브 컨트롤러(22')는 메인 컨트롤러(10')로부터 전송되는 각종 제어신호에 따른 동작을 수행하기 위하여 제1메모리 모듈(20')을 제어한다. 상기 제1서브 컨트롤러(22')는 제1버퍼(24) 및 제1ECC(26)를 포함할 수 있다.
제1ECC(26)는 제1메모리 모듈(20')에 라이트되거나 또는 제1메모리 모듈(20)로부터 리드되는 각종 데이터의 에러를 검출하여 정정한다.
메인 컨트롤러(10')로부터 제1메모리 모듈(20')의 메모리들(20-1, 20-2, 20-3 및 20-4)에 저장된 데이터를 리드하기 위한 제어신호가 전달되면, 제1서브 컨트롤러(22')는 제1로컬 버스(28)를 통하여 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나로부터 상기 제어신호에 대응하는 리드 데이터를 리드한다. 제1서브 컨트롤러(22')는 리드 데이터를 제1버퍼(24)에 저장하였다가 데이터 버스(50)를 통하여 메인 컨트롤러(10')에 상기 리드 데이터를 전송한다.
예컨대, 메인 컨트롤러(10')가 메모리(20-1)에 저장된 데이터를 리드하기 위한 제어신호를 로컬버스(50)를 통하여 제1서브 컨트롤러(22')에 전송하였다면, 제1서브 컨트롤러(22')는 제1로컬 버스(28)를 통하여 상기 메모리(20-1)에 저장된 데이터, 즉 리드 데이터를 수신하여 제1버퍼(24')에 저장한다. 이후 서브 컨트롤러(22')는 제1ECC(26)를 통하여 상기 리드 데이터의 에러를 검출하고, 검출된 에러를 정정할 수 있다. 리드 데이터에 대한 에러 검출 및 정정이 완료되면, 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 상기 리드 데이터를 메인 컨트롤러(10')에 전송한다.
이때 메인 컨트롤러(10')는 상기 리드 데이터가 저장된 위치, 즉 리드 데이터에 대한 어드레스 정보를 포함하여 상기 제어신호를 생성할 수 있다. 메인 컨트롤러(10')는 리드 데이터의 어드레스 정보가 포함된 제어신호를 제1서브 컨트롤러(22')에 전송함으로써 제1메모리 모듈(20')이 리드 데이터를 메인 컨트롤러(10')에 전송하도록 제어할 수 있다.
메인 컨트롤러(10')로부터 제1메모리 모듈(20')의 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 데이터를 라이트하기 위한 제어신호를 전송하면, 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 상기 제어신호를 수신한다. 이때 메인 컨트롤러(10')는 상기 제1메모리 모듈(20')에 라이트되는 라이트 데이터를 포함시켜 제어신호를 생성하고, 데이터 버스(50)를 통하여 상기 제어신호를 전송할 수 있다. 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 상기 라이트 데이터가 전달되면, 제1서브 컨트롤러(22')는 상기 라이트 데이터를 제1버퍼(24)에 저장하였다가 해당 메모리(20-1, 20-2, 20-3 및 20-4)에 제1로컬 버스(28)를 통하여 상기 라이트 데이터를 저장함으로써 라이트 데이터를 라이트한다.
실시 예에 따라 제1서브 컨트롤러(22')는 라이트 데이터를 메모리들(20-1, 20-2, 20-3 및 20-4)에 라이트하기 전에 제1ECC(26)를 통하여 상기 라이트 데이터의 에러를 검출하고 정정할 수 있다.
제1메모리 모듈(20')에 메인 컨트롤러(10')로부터 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 저장된 데이터를 제1메모리 모듈(20')의 다른 하나의 메모리(20-1, 20-2, 20-3 및 20-4)로 이동하기 위한 제어신호가 전달되면, 제1서브 컨트롤러(22')는 상기 제어신호에 대응하는 이동 데이터를 상기 메모리들(20-1, 20-2, 20-3 및 20-4) 중 소스 메모리로부터 리드하여 제1버퍼(24)에 저장한다. 제1서브 컨트롤러(22')는 제1로컬 버스(28)를 통하여 상기 이동 데이터를 상기 다른 하나의 메모리(20-1, 20-2, 20-3 및 20-4), 즉 타겟 메모리에 전송한다. 이로써 본 발명에 따른 제1메모리 모듈(20')은 상기 제1메모리 모듈(20') 중 소스 메모리에 저장된 데이터들의 이동시 메인 컨트롤러(10')를 거치지 않고 직접 타겟 메모리로 상기 이동 데이터를 전송할 수 있다.
제1메모리 모듈(20')에 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 저장된 데이터를 제2메모리 모듈(30')의 메모리들(30-1, 30-2, 30-3 및 30-4)로 이동하기 위한 제어신호가 전달되면, 제1서브 컨트롤러(22')는 먼저 제1로컬 버스(28)를 통하여 상기 제어신호에 대응하는 이동 데이터를 메모리들(20-1, 20-2, 20-3 및 20-4) 중 소스 메모리로부터 수신한다. 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 상기 이동 데이터를 타겟 메모리가 포함된 제2메모리 모듈(30')로 전송한다.
도 5를 참조하면, 제1메모리 모듈(20')의 메모리(20-1)에 데이터 "DATA B"가 저장되어 있다. 메인 컨트롤러(10')로부터 상기 DATA B를 타겟 메모리인 제2메모리 모듈(30')의 메모리(30-3)로 이동시키기 위한 제어신호가 제1메모리 모듈(20')에 전달되었다고 가정한다. 제1서브 컨트롤러(22')는 상기 DATA B를 제1로컬 버스(28)를 통하여 메모리(20-3)으로부터 수신하여 제1버퍼(24)에 저장한다. 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 DATA B를 타겟 메모리가 포함된 제2데이터 모듈(30')에 전송한다. 제2데이터 모듈(30')의 제2서브 컨트롤러(32')는 상기 DATA B를 제2버퍼(34)에 저장하였다가 제2로컬 버스(38)를 통하여 타겟 메모리인 메모리(30-3)에 저장한다. 이와 같이 본 발명에 따른 제1메모리 모듈(20')은 메인 컨트롤러(10')를 거치지 않고 타겟 메모리가 포함된 제2메모리 모듈(30')로 직접 이동 데이터를 전송할 수 있다.
제2메모리 모듈(30')도 제1메모리 모듈(20')과 마찬가지로 복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4), 제2버퍼(34) 및 제2로컬 버스(38)를 포함한다. 실시 예에 따라 제2버퍼(34)는 제2서브 컨트롤러(32')에 포함된 형태로 구현될 수 있으며, 제2서브 컨트롤러(32')는 제2메모리 모듈(30')의 전반적인 동작을 제어할 수 있다.
복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4)은 메인 컨트롤러(10') 또는 제2서브 컨트롤러(32')에 제어 하에 각종 데이터가 리드되거나 라이트된다. 또한 복수 개의 메모리들(30-1, 30-2, 30-3 및 30-4)에는 각종 데이터가 저장되어 유지될 수 있다.
제2서브 컨트롤러(32')는 메인 컨트롤러(10')로부터 전송되는 각종 제어신호에 따른 동작을 수행하기 위하여 제2메모리 모듈(30')을 제어한다. 제2서브 컨트롤러(32')는 제2버퍼(34) 및 제2ECC(36)를 포함할 수 있다.
제2ECC(36)는 제2메모리 모듈(30')에 라이트되거나 또는 제2메모리 모듈(30')로부터 리드되는 각종 데이터의 에러를 검출하여 정정한다.
메인 컨트롤러(10')로부터 제2메모리 모듈(30')의 메모리들(30-1, 30-2, 30-3 및 30-4)에 저장된 데이터를 리드하기 위한 제어신호가 전달되면, 제2서브 컨트롤러(32')는 제2로컬 버스(38)를 통하여 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나로부터 상기 제어신호에 대응하는 리드 데이터를 리드한다. 제2서브 컨트롤러(32')는 리드 데이터를 제2버퍼(34)에 저장하였다가 데이터 버스(50)를 통하여 메인 컨트롤러(10')에 상기 리드 데이터를 전송한다.
메인 컨트롤러(10')로부터 제2메모리 모듈(30')의 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나에 데이터를 라이트하기 위한 제어신호를 전송하면, 제2서브 컨트롤러(32')는 데이터 버스(50)를 통하여 상기 제어신호를 수신한다. 데이터 버스(50)를 통하여 상기 라이트 데이터가 전달되면, 제2서브 컨트롤러(32')는 상기 라이트 데이터를 제2버퍼(34)에 저장하였다가 해당 메모리(30-1, 30-2, 30-3 및 30-4)에 제2로컬 버스(38)를 통하여 상기 라이트 데이터를 저장함으로써 라이트 데이터를 라이트한다.
제2메모리 모듈(30')에 메인 컨트롤러(10')로부터 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나, 즉 소스 메모리에 저장된 데이터를 제2메모리 모듈(30')의 다른 하나의 메모리(30-1, 30-2, 30-3 및 30-4), 즉 타겟 메모리로 이동하기 위한 제어신호가 전달되면, 제2서브 컨트롤러(32')는 상기 제어신호에 대응하는 이동 데이터를 리드하여 제2버퍼(34)에 저장한다. 이후, 제2서브 컨트롤러(32')는 제2로컬 버스(38)를 통하여 이동 데이터를 상기 타겟 메모리에 전송한다.
제2메모리 모듈(30')에 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나에 저장된 데이터를 제1메모리 모듈(20')의 메모리들(20-1, 20-2, 20-3 및 20-4)로 이동하기 위한 제어신호가 전달되면, 제2서브 컨트롤러(32')는 먼저 제2로컬 버스(38)를 통하여 상기 제어신호에 대응하는 이동 데이터를 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나인 소스 메모리로부터 수신한다. 이후 제2서브 컨트롤러(32')는 데이터 버스(50)를 통하여 상기 이동 데이터를 타겟 메모리가 포함된 제1메모리 모듈(20')로 전송한다.
도 6은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 리드하는 방법을 나타낸 것이다. 설명의 편이를 위하여 데이터가 리드되는 메모리 모듈을 제1메모리 모듈(20')로 한정하기로 한다.
도 5 및 도 6을 참조하면, 먼저 메인 컨트롤러(10')는 호스트로부터 리드 명령을 수신한다(S122).
메인 컨트롤러(10')는 상기 리드 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20')에 전송한다(S124). 상기 제어신호를 수신한 제1메모리 모듈(20')의 제1서브 컨트롤러(22')는 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나로부터 상기 제어신호에 대응하는 데이터, 즉 리드 데이터를 리드한다(S126). 상기 제어신호에는 상기 리드 데이터가 저장된 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있으며, 제1서브 컨트롤러(22')는 상기 리드 데이터의 어드레스 정보를 이용하여 상기 리드 데이터를 리드할 수 있다.
제1메모리 모듈(20')의 제1서브 컨트롤러(22')는 상기 리드 데이터를 제1버퍼(24)에 저장하고(S128), 제1ECC(36)는 상기 제1버퍼(34)에 저장된 리드 데이터의 에러를 검출하여 정정한다(S130). 리드 데이터의 에러 검출 및 정정이 완료되면, 제1서브 컨트롤러(22')는 데이터 버스(50)를 통하여 상기 리드 데이터를 메인 컨트롤러(10')로 전송한다(S132).
도 7은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 라이트하는 방법을 나타낸 것이다. 설명의 편이를 위하여 데이터가 라이트되는 메모리 모듈을 제1메모리 모듈(20)로 한정하기로 한다.
도 5 및 도 7을 참조하면, 먼저 메인 컨트롤러(10')는 호스트로부터 라이트 명령을 수신한다(S142). 메인 컨트롤러(10')는 상기 라이트 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20')에 전송한다(S144).
상기 제어신호를 수신한 제1메모리 모듈(20')의 제1서브 컨트롤러(22')는 상기 제어신호에 포함된 라이트 데이터를 제1버퍼(24)에 저장하고(S146), 라이트 데이터의 에러를 검출하여 정정한다(S148). 라이트 데이터의 에러 검출 및 정정이 완료되면, 제1서브 컨트롤러(22')는 상기 라이트 데이터를 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나에 라이트한다(S150).
상기 제어신호에는 상기 라이트 데이터가 라이트될 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있으며, 제1서브 컨트롤러(22')는 상기 라이트 데이터의 어드레스 정보를 이용하여 상기 라이트 데이터를 라이트한다. 또한 메인 컨트롤러(10')는 호스트로부터 라이트 명령을 수신할 때, 제1메모리 모듈(20')에 저장될 상기 라이트 데이터를 함께 수신할 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 메모리 시스템에서 데이터를 이동하는 방법을 나타낸 것이다. 설명의 편이를 위하여 본 실시 예에서는 제1메모리 모듈(20')의 데이터를 제2메모리 모듈(30')로 이동시키는 것으로 가정한다. 즉, 소스 메모리는 제1메모리 모듈(20')에 포함되고, 타겟 메모리는 제2메모리 모듈(30')에 포함된 것으로 가정한다.
도 5 및 도 8을 참조하면, 먼저 메인 컨트롤러(10')는 호스트로부터 데이터의 이동 명령을 수신한다(S160). 메인 컨트롤러(10')는 상기 이동 명령에 따른 동작을 수행하기 위한 제어신호를 생성하여 제1메모리 모듈(20') 및 제2메모리 모듈(30')에 전송한다(S162). 실시 예에 따라 메인 컨트롤러(10')는 상기 제어신호를 제1메모리 모듈(20')보다 제2메모리 모듈(30')에 먼저 전송할 수 있다. 상기 제어신호가 제1메모리 모듈(20')보다 제2메모리 모듈(30')에 먼저 전송되는 경우, 제2메모리 모듈(30')은 상기 이동 명령에 따른 데이터, 즉 이동 데이터가 제1메모리 모듈(20')을 통하여 데이터 버스(50)에 공유되는 될 때까지 별도의 동작을 수행하지 않고 대기 상태를 유지할 수 있다.
상기 제어신호를 수신한 제1메모리 모듈(20')의 제1서브 컨트롤러(22')는 메모리들(20-1, 20-2, 20-3 및 20-4) 중 어느 하나, 즉 소스 메모리로부터 상기 제어신호에 대응하는 이동 데이터를 리드한다(S164). 상기 제어신호에는 상기 이동 데이터가 저장된 위치에 대한 정보, 즉 어드레스 정보가 포함될 수 있으며, 제1서브 컨트롤러(22')는 상기 이동 데이터의 어드레스 정보를 이용하여 소스 메모리로부터 상기 이동 데이터를 리드한다.
제1메모리 모듈(20')의 제1서브 컨트롤러(22')는 상기 이동 데이터를 제1버퍼(24)에 저장하였다가(S166) 데이터 버스(50)를 통하여 제2메모리 모듈(30')에 전송한다(S168).
제1메모리 모듈(20')로부터 상기 이동 데이터가 전송되면, 제2메모리 모듈(30')의 제2서브 컨트롤러(32')는 상기 이동 데이터를 제2버퍼(34)에 저장한다(S170). 제2서브 컨트롤러(32')는 제2ECC(36)를 통하여 상기 이동 데이터의 에러를 검출하여 정정한다(S172). 이후 제2서브 컨트롤러(32')는 상기 이동 데이터를 메모리들(30-1, 30-2, 30-3 및 30-4) 중 어느 하나, 즉 타겟 메모리에 라이트한다(S174). 단계 S162에서 메인 컨트롤러(10')로부터 제2메모리 모듈(30')로 전송되는 제어신호에는 상기 이동 데이터가 새로이 라이트될 위치에 대한 어드레스 정보도 포함될 수 있다. 따라서 제2서브 컨트롤러(32')는 상기 이동 데이터의 어드레스 정보를 이용하여 상기 이동 데이터를 타겟 메모리에 라이트한다.
본 실시 예에서는 이동 데이터가 저장되는 제2메모리 모듈(30')의 제2ECC(36)가 상기 이동 데이터의 에러를 검출하여 정정하는 것으로 서술하였으나, 실시 예에 따라 이동 데이터가 제2메모리 모듈(30')로 전송되기 전에 제1메모리 모듈(20')의 제1ECC(26)로부터 이동 데이터의 에러가 검출되고, 검출된 상기 에러가 정정될 수도 있다.
도 9는 본 발명의 일 실시 예에 따른 메모리 시스템의 제1서브 컨트롤러 또는 제2서브 컨트롤러에 의하여 발생하는 데이터 스트로브 신호를 나타낸 다이어그램이다.
도 9에는 리드 동작 그리고 라이트 동작을 수행하는 경우 데이터 스트로브 신호에 따른 데이터 신호가 도시되어 있다. 데이터 스트로브 신호가 토글될 때 리드 데이터 또는 라이트 데이터는 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)의 외부로 출력되거나 또는 상기 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)로 입력된다. 예컨대, 데이터 스트로브 신호가 논리 '0'(또는 논리 'low')에서 논리 '1'(또는 논리 'high')로 상태가 변경될 때 리드 데이터 또는 라이트 데이터는 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)의 외부로 출력되거나 상기 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)로 입력된다. 또는 데이터 스트로브 신호가 논리 '1'(또는 논리 'high')에서 논리 '0'(또는 논리 'low')으로 상태가 변경될 때 데이터는 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)의 외부로 출력되거나 상기 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)로 입력된다.
메모리들(20-1 내지 20-4 및 30-1 내지 30-4)에 라이트 동작이 수행되는 경우, 데이터 스트로브 신호는 라이트 데이터에 대응하는 데이터 신호의 엣지(edge)에 정렬되어 데이터 신호와 함께 메모리들(20-1 내지 20-4 및 30-1 내지 30-4)의 외부로 출력된다. 즉, 데이터 스트로브 신호의 라이징 엣지 또는 폴링 엣지와 데이터 신호의 엣지가 일치한다.
메모리들(20-1 내지 20-4 및 30-1 내지 30-4)에 라이트 동작이 수행되는 경우, 데이터 스트로브 신호는 데이터 신호의 중앙(center)에 정렬되어 데이터 신호와 함께 플래시 메모리(230)로 입력된다. 즉, 데이터 스트로브 신호의 라이징 엣지 또는 폴링 엣지와 데이터 신호의 중앙이 일치한다. 따라서 라이트 동작 시의 데이터 스트로브 신호와 리드 동작 시의 데이터 스트로브 신호 사이에는 시간 차이(Δt)가 존재하게 된다.
실시 예에 따라 메모리들(20-1 내지 20-4 및 30-1 내지 30-4) 간에 직접 데이터가 송수신될 때, 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)에 의하여 소스 메모리에는 리드 명령, 리드 데이터 및 리드 데이터 스트로브 신호가 제공된다. 또한 제1서브 컨트롤러(22) 또는 제2서브 컨트롤러(32)에 의하여 타겟 메모리에는 라이트 명령, 데이터 버스(50)에 공유된 라이트 데이터 및 데이터 버스(50)에 공유된 라이트 스트로브 신호가 제공된다. 따라서 타겟 메모리가 포함된 메모리 모듈(20 또는 30)의 서브 컨트롤러(22 또는 32)는 리드 스트로브 신호를 미리 결정된 오프셋 값으로 조정하여 라이트 동작을 실행한다.
도 10은 도 1의 메모리 모듈을 포함하는 메모리 시스템의 또 다른 실시 예를 나타낸다.
도 10을 참조하면, 메모리 시스템(300)은 이동 전화기(cellular phone), 스마트 폰(smart phone), PDA(personal digital assistant), 디지털 카메라, 포터블 게임 콘솔(portable game console), MP3 플레이어, HDTV(High-definition television), GPS(Global Positioning System), 네비게이터(navigator), CE (consumer equipment), 디지털 셋탑 박스(digital settop box) 또는 IT (information technology(IT)) 장치로 구현될 수 있다.
메모리 시스템(300)은 버스(301)를 통하여 서로 접속된 CPU(310)와 메모리 모듈(20, 30 또는 100)를 포함할 수 있다.
CPU(310)는 메모리 모듈(20 또는 30) 또는 메모리 장치(100)의 동작들, 예컨대 프로그램 동작, 라이트 동작, 이레이즈 동작, 베리파이(verify) 동작, 또는 데이터를 호스트로 전송할 수 있는 동작을 제어할 수 있다.
버스(301)에 접속된 메모리 장치(320)는 CPU(310)의 동작 메모리(operation memory)로서 사용될 수 있다. 메모리 장치(320)는 DRAM 또는 SRAM으로 구현될 수 있다. 메모리 장치(320)는 도 1에 도시된 메모리들(20-1 내지 20-4 또는 30-1 내지 30-4)를 포함하는 메모리 모듈, 예컨대 SIMM(single in-line memory module) 또는 DIMM(dual in-line memory module)일 수 있다.
메모리 시스템(300)은 디스플레이 또는 터치 패드와 같은 제1사용자 인터페이스(330)를 더 포함할 수 있다. 또한, 메모리 시스템(300)은 입출력 인터페이스와 같은 제2사용자 인터페이스(340)를 더 포함할 수 있다. 제2사용자 인터페이스(340)는 프린터와 같은 출력 장치이거나 키보드 또는 마우스와 같은 입력 장치일 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 모듈을 포함하는 RAID 시스템을 나타낸다.
도 11을 참조하면, RAID 시스템(500)은 RAID 컨트롤러(510)와 복수의 메모리 모듈들(400-1~400-N; N는 자연수)을 포함할 수 있다.
복수의 메모리 모듈들(400-1~400-N) 각각은 도 1 또는 도 5에 도시된 메모리 장치 또는 메모리 모듈(20, 30 또는 100)일 수 있다. 복수의 메모리 모듈들(400-1~400-N)은 RAID 어레이를 구성할 수 있다. RAID 시스템(500)은 PC(personal computer) 또는 SSD로 구현될 수 있다.
도 11을 참조하면, RAID 시스템(500)은 RAID 어레이를 구성하며, 각각이 복수의 비휘발성 메모리들(20, 30 또는 100)과 복수의 비휘발성 메모리들(20, 30 또는 100)의 동작을 제어하기 위한 메인 컨트롤러(10)를 포함하는 복수의 메모리 모듈들(400-1 내지 400-N)과, 복수의 메모리 모듈들(400-1 내지 400-N)의 동작을 제어하기 위한 RAID 컨트롤러(510)를 포함한다.
라이트 동작시(또는 프로그램 동작시) RAID(redundant array of independent disks) 컨트롤러(510)는, 호스트로부터 출력된 라이트 명령(또는 프로그램 명령)에 응답하여, 상기 호스트로부터 출력된 라이트 데이터(또는 프로그램 데이터)를 RAID 레벨 정보에 따라 복수의 RAID 레벨들 중에서 선택된 어느 하나의 RAID 레벨에 따라 복수의 메모리 모듈들(400-1~400-N) 중에서 어느 하나의 메모리 모듈로 출력할 수 있다.
또한 리드 동작시 RAID 컨트롤러(510)는, 호스트로부터 출력된 읽기 명령에 응답하여 RAID 레벨 정보에 따라 복수의 RAID 레벨들 중에서 선택된 어느 하나의 RAID 레벨에 따라 복수의 메모리 모듈들(400-1~400-N) 중에서 어느 하나의 메모리 모듈로부터 읽혀진 데이터를 상기 호스트로 전송할 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 메인 컨트롤러 14 : 메인 버퍼
16 : 메인 에러정정회로 20 : 제1메모리 모듈
20-1~20-4 : 메모리 22 : 제1서브 컨트롤러
24 : 제1버퍼 28 : 제1로컬 버스
30 : 제2메모리 모듈 30-1~30-4 : 메모리
32 : 제1서브 컨트롤러 34 : 제1버퍼
38 : 제1로컬 버스 50 : 데이터 버스
100 : 메모리 장치

Claims (10)

  1. 제1로컬 버스와 연결된 제1버퍼와 제2로컬 버스와 연결된 제2버퍼가, 메인 컨트롤러로부터 출력되고 상기 제1로컬 버스를 공유하는 복수 개의 제1비휘발성 메모리들 중 소스 메모리의 어드레스와 상기 제2로컬 버스를 공유하는 복수 개의 제2비휘발성 메모리들 중 타겟 메모리의 어드레스를 포함하는 제1제어 신호를 수신하는 단계;
    상기 제1버퍼가 상기 제1제어 신호에 따라 상기 복수 개의 제1비휘발성 메모리들 중 상기 소스 메모리에 저장된 데이터를 상기 제1로컬 버스를 통하여 버퍼링하는 단계; 및
    상기 제1버퍼가, 상기 메인 컨트롤러, 상기 제1버퍼, 및 상기 제2버퍼에 의해 공유되는 데이터 버스를 통해, 버퍼링된 상기 데이터를 상기 타겟 메모리로 전송하는 단계를 포함하고,
    상기 제1로컬 버스는 상기 복수 개의 제1비휘발성 메모리들과 제1메모리 모듈 내의 제1서브 컨트롤러와 연결되고, 상기 제1서브 컨트롤러는 상기 복수 개의 제1비휘발성 메모리들을 제어하고,
    상기 제2로컬 버스는 상기 복수 개의 제2비휘발성 메모리들과 제2메모리 모듈 내의 제2서브 컨트롤러와 연결되고, 상기 제2서브 컨트롤러는 상기 복수 개의 제2비휘발성 메모리들을 제어하는 메모리 장치에서의 데이터 제어방법.
  2. 제1항에 있어서,
    상기 메인 컨트롤러로부터 제2제어 신호를 수신하는 단계를 더 포함하고,
    상기 제2제어 신호는 상기 복수 개의 제1비휘발성 메모리들 중 제2소스 메모리의 어드레스와 상기 복수 개의 제1비휘발성 메모리들 중 제2타겟 메모리의 어드레스를 포함하는 메모리 장치에서의 데이터 제어방법.
  3. 제2항에 있어서,
    상기 제1버퍼가 상기 제1로컬 버스를 통하여 제2데이터를 상기 제2소스 메모리로부터 상기 제2타겟 메모리로 전송하는 단계를 더 포함하는 메모리 장치에서의 데이터 제어방법.
  4. 제1항에 있어서,
    상기 데이터가 상기 타겟 메모리로 전송되기 전에, 상기 제1버퍼와 연결된 에러 정정 회로가 상기 데이터의 에러를 검출하여 정정하는 단계를 더 포함하는 메모리 장치에서의 데이터 제어방법.
  5. 제1항에 있어서, 상기 데이터를 상기 타겟 메모리에 전송하는 단계는,
    상기 제1버퍼가 상기 데이터 버스를 통하여 상기 데이터를 상기 제2버퍼로 전송하는 단계; 및
    상기 데이터를 수신한 상기 제2버퍼가 상기 타겟 메모리로 상기 데이터를 전송하는 단계를 포함하는 메모리 장치에서의 데이터 제어방법.
  6. 제1로컬 버스와 제2로컬 버스;
    상기 제1로컬 버스를 공유하는 복수 개의 제1비휘발성 메모리들;
    상기 제2로컬 버스를 공유하는 복수 개의 제2비휘발성 메모리들;
    상기 제1로컬 버스를 통하여 상기 복수 개의 제1비휘발성 메모리들과 연결되며, 상기 복수 개의 제1비휘발성 메모리들에 저장된 데이터를 버퍼링하는 제1버퍼;
    상기 제2로컬 버스를 통하여 상기 복수 개의 제2비휘발성 메모리들과 연결되며, 상기 복수 개의 제2비휘발성 메모리들에 저장된 데이터를 버퍼링하는 제2버퍼;
    상기 복수 개의 제1비휘발성 메모리들 중 소스 메모리의 어드레스와 상기 복수 개의 제2비휘발성 메모리들 중 타겟 메모리의 어드레스를 포함하는 제1제어 신호를 생성하고, 상기 제1제어 신호를 상기 제1버퍼와 상기 제2버퍼로 전송하는 메인 컨트롤러;
    상기 제1비휘발성 메모리들을 제어하는 제1서브 컨트롤러; 및
    상기 제2비휘발성 메모리들을 제어하는 제2서브 컨트롤러를 포함하고,
    상기 제1버퍼는, 상기 제1제어 신호에 응답하여, 상기 소스 메모리에 저장된 제1데이터를 버퍼링하고, 상기 메인 컨트롤러, 상기 제1버퍼 및 상기 제2버퍼에 의해 공유되는 데이터 버스를 통해 상기 제1데이터를 상기 타겟 메모리로 전송하고,
    상기 제1로컬 버스는 상기 제1비휘발성 메모리들과 상기 제1서브 컨트롤러와 연결되고,
    상기 제2로컬 버스는 상기 제2비휘발성 메모리들과 상기 제1서브 컨트롤러와 연결되는 메모리 장치.
  7. 제6항에 있어서,
    상기 메인 컨트롤러는 상기 복수 개의 제1비휘발성 메모리들 중 제2소스 메모리의 어드레스와 상기 복수 개의 제1비휘발성 메모리들 중 제2타겟 메모리의 어드레스를 포함하는 제2제어 신호를 생성하는 메모리 장치.
  8. 제7항에 있어서, 상기 제1버퍼는 상기 제1로컬 버스를 통하여 제2데이터를 상기 제2소스 메모리로부터 상기 제2타겟 메모리로 전송하는 메모리 장치.
  9. 제6항에 있어서,
    상기 제1버퍼에 연결된 에러 정정 회로를 더 포함하고,
    상기 에러 정정 회로는 상기 제1데이터가 상기 타겟 메모리로 전송되기 전에 상기 제1데이터의 에러를 검출하여 정정하는 메모리 장치.
  10. 제6항에 있어서,
    상기 제1버퍼는 상기 데이터 버스를 통하여 상기 제1데이터를 상기 제2버퍼에 전송하고, 상기 제1데이터를 수신한 상기 제2버퍼는 상기 타겟 메모리로 상기 제1데이터를 전송하는 메모리 장치.
KR1020100072175A 2010-07-27 2010-07-27 메모리 장치와 이의 데이터 제어방법 KR101671334B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100072175A KR101671334B1 (ko) 2010-07-27 2010-07-27 메모리 장치와 이의 데이터 제어방법
US13/182,518 US8719532B2 (en) 2010-07-27 2011-07-14 Transferring data between memories over a local bus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100072175A KR101671334B1 (ko) 2010-07-27 2010-07-27 메모리 장치와 이의 데이터 제어방법

Publications (2)

Publication Number Publication Date
KR20120011905A KR20120011905A (ko) 2012-02-09
KR101671334B1 true KR101671334B1 (ko) 2016-11-02

Family

ID=45527882

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100072175A KR101671334B1 (ko) 2010-07-27 2010-07-27 메모리 장치와 이의 데이터 제어방법

Country Status (2)

Country Link
US (1) US8719532B2 (ko)
KR (1) KR101671334B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102411548B (zh) * 2011-10-27 2014-09-10 忆正存储技术(武汉)有限公司 闪存控制器以及闪存间数据传输方法
US10169257B2 (en) * 2015-03-06 2019-01-01 Rambus Inc. Module based data transfer
KR102417182B1 (ko) 2015-06-22 2022-07-05 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
JP6848060B2 (ja) 2016-11-26 2021-03-24 華為技術有限公司Huawei Technologies Co.,Ltd. データ移行方法、ホスト、およびソリッドステートディスク
US10430333B2 (en) 2017-09-29 2019-10-01 Intel Corporation Storage system with interconnected solid state disks
KR102504293B1 (ko) 2017-11-29 2023-02-27 삼성전자 주식회사 패키지 온 패키지 형태의 반도체 패키지
US11133076B2 (en) * 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US20240029783A1 (en) * 2022-07-21 2024-01-25 Micron Technology, Inc. Semiconductor device having buffer circuit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060193189A1 (en) * 2005-02-16 2006-08-31 Samsung Electronics Co., Ltd. Multi-memory chip and data transfer method capable of directly transferring data between internal memory devices
US20090244949A1 (en) * 2008-03-28 2009-10-01 Roberto Ravasio Memory Device and Method Providing Logic Connections for Data Transfer

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738880B2 (en) 2000-06-12 2004-05-18 Via Technologies, Inc. Buffer for varying data access speed and system applying the same
US6553450B1 (en) 2000-09-18 2003-04-22 Intel Corporation Buffer to multiply memory interface
US6986011B2 (en) * 2002-12-05 2006-01-10 International Business Machines Corporation High speed memory cloner within a data processing system
US7386765B2 (en) * 2003-09-29 2008-06-10 Intel Corporation Memory device having error checking and correction
US7120723B2 (en) * 2004-03-25 2006-10-10 Micron Technology, Inc. System and method for memory hub-based expansion bus
KR100551480B1 (ko) * 2004-10-25 2006-02-13 삼성전자주식회사 프로세서와 비휘발성 메모리 사이에 위치하는 메모리장치, 이를 포함한 시스템 및 상기 시스템 내의 데이터송수신 방법
US7409473B2 (en) * 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
KR100843280B1 (ko) * 2006-12-07 2008-07-04 삼성전자주식회사 메모리 시스템 및 그것의 데이터 전송 방법
JP2009181425A (ja) 2008-01-31 2009-08-13 Nec Corp メモリモジュール
US7958327B2 (en) * 2008-02-01 2011-06-07 International Business Machines Corporation Performing an asynchronous memory move (AMM) via execution of AMM store instruction within the instruction set architecture
TWI437429B (zh) * 2008-06-04 2014-05-11 A Data Technology Co Ltd 多通道混合密度記憶體儲存裝置及其控制方法
US20100161932A1 (en) * 2008-12-18 2010-06-24 Ori Moshe Stern Methods for writing data from a source location to a destination location in a memory device
JP2012505441A (ja) * 2009-03-24 2012-03-01 株式会社日立製作所 ストレージ装置およびそのデータ制御方法
US9208084B2 (en) * 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060193189A1 (en) * 2005-02-16 2006-08-31 Samsung Electronics Co., Ltd. Multi-memory chip and data transfer method capable of directly transferring data between internal memory devices
US20090244949A1 (en) * 2008-03-28 2009-10-01 Roberto Ravasio Memory Device and Method Providing Logic Connections for Data Transfer

Also Published As

Publication number Publication date
US8719532B2 (en) 2014-05-06
US20120030414A1 (en) 2012-02-02
KR20120011905A (ko) 2012-02-09

Similar Documents

Publication Publication Date Title
KR101671334B1 (ko) 메모리 장치와 이의 데이터 제어방법
KR101588293B1 (ko) 비휘발성 메모리 장치의 읽기 방법
US20160180898A1 (en) Memory controller and memory system including the same
US8473811B2 (en) Multi-chip memory system and related data transfer method
US20170040057A1 (en) Nonvolatile memory module having backup function
KR102076231B1 (ko) 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20160019594A (ko) 쓰기 보조 회로를 포함하는 스태틱 랜덤 액세스 메모리 장치
US10770166B2 (en) Memory device and operating method to determine a defective memory block
CN108962304B (zh) 存储装置及其操作方法
US11222698B2 (en) Microcontroller, memory system having the same, and method for operating the same
KR20180104839A (ko) 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치
US11226823B2 (en) Memory module and operating method thereof
KR102172869B1 (ko) 기준 전압 발생기를 포함하는 메모리 장치
US20210208815A1 (en) Storage device and operating method thereof
KR20190023433A (ko) 메모리 시스템 및 그것의 동작 방법
CN111145812A (zh) 存储器装置及其操作方法
US10871915B2 (en) Data processing system and operating method thereof
EP3937172B1 (en) Memory controller, storage device and memory system
KR20160144564A (ko) 불휘발성 메모리 모듈 및 그것의 동작 방법
US10347307B2 (en) Skew control circuit and interface circuit including the same
US11669393B2 (en) Memory device for swapping data and operating method thereof
CN112309444B (zh) 存储器接口电路、存储器存储装置及设定状态检测方法
US11581055B2 (en) Memory system
KR102526256B1 (ko) 데이터 출력 버퍼
KR102532528B1 (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