KR101460643B1 - 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치 - Google Patents

데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치 Download PDF

Info

Publication number
KR101460643B1
KR101460643B1 KR1020110126900A KR20110126900A KR101460643B1 KR 101460643 B1 KR101460643 B1 KR 101460643B1 KR 1020110126900 A KR1020110126900 A KR 1020110126900A KR 20110126900 A KR20110126900 A KR 20110126900A KR 101460643 B1 KR101460643 B1 KR 101460643B1
Authority
KR
South Korea
Prior art keywords
flash memory
data
control signal
signal output
flash memories
Prior art date
Application number
KR1020110126900A
Other languages
English (en)
Other versions
KR20130060701A (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 KR1020110126900A priority Critical patent/KR101460643B1/ko
Publication of KR20130060701A publication Critical patent/KR20130060701A/ko
Application granted granted Critical
Publication of KR101460643B1 publication Critical patent/KR101460643B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치가 개시된다. 다중-채널 및 다중-웨이 구조로 배열된 복수의 플래시 메모리에 제어신호를 입력하여 플래시 메모리들 간의 데이터 이동을 제어하는 플래시 메모리 제어장치에는 각각의 플래시 메모리에 대하여 데이터의 읽기 연산을 수행하기 위한 읽기 제어신호를 출력하는 읽기 제어신호 출력단자 및 각각의 플래시 메모리에 대하여 데이터의 쓰기 연산을 수행하기 위한 쓰기 제어신호를 출력하는 쓰기 제어신호 출력단자가 구비되며, 읽기 제어신호 출력단자 및 쓰기 제어신호 출력단자는 데이터 입출력 버스를 공유하는 동일 채널 내에 위치하는 플래시 메모리들을 독립적으로 제어하기 위하여 사전에 설정된 개수로 구비된다. 본 발명에 따르면, 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 이동시에 소스로부터의 데이터 출력과 동시에 타겟으로의 데이터 입력이 일어나도록 하여 데이터 이동시간을 단축시킬 수 있으며, 결과적으로 가비지 컬렉션의 성능을 향상시킬 수 있다.

Description

데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치{Flash memory controller for data transfer between flash memory sharing data I/O bus}
본 발명은 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치에 관한 것으로, 보다 상세하게는, 복수의 플래시 메모리로 이루어진 저장장치 또는 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지에서 데이터 입출력 버스를 공유하는 플래시 메모리 사이에서 데이터를 이동시키기 위한 읽기 및 쓰기 연산을 수행하는 장치에 관한 것이다.
낸드(NAND) 플래시 메모리는 읽기(read)와 쓰기(program) 연산이 수 킬로바이트 크기의 페이지(page) 단위로 이루어지며, 소거(erase) 연산은 복수의 페이지로 구성된 블록(block) 단위로 이루어진다. 이와 같이 플래시 메모리는 읽기 및 쓰기 단위와 소거 단위가 다르기 때문에 특정 페이지에 대한 덮어쓰기를 위해서는 블록 전체를 소거한 후 쓰기 연산을 수행하여야 한다.
블록을 소거할 때 블록 내의 유효 데이터를 모아 다른 블록으로 옮기는 병합 및 소거 연산의 집합을 가비지 컬렉션(garbage collection)이라 한다. 플래시 메모리가 수행할 수 있는 연산 중에서 가비지 컬렉션에 사용할 수 있는 연산으로 카피백(copy-back) 연산이 있다. 카피백 연산은 원래 플래시 메모리 내부에서의 데이터 이동이므로 읽은 데이터를 외부로 출력할 필요가 없다. 그러나 에러 발생 가능성이 존재하는 낸드 플래시 메모리의 특성상 데이터의 신뢰성을 보장하기 위해 에러정정이 반드시 필요하며, 카피백 연산을 수행하는 경우에도 외부로 데이터를 출력하여 에러정정 후 다시 쓰기 연산을 수행하여야 한다. 이 과정에서 두 번의 데이터 이동이 발생하게 된다.
일반적으로 낸드 플래시 메모리 기반의 저장장치는 병렬화를 통해 성능을 극대화하기 위해 다중 채널(multi-channel) 및 다중 웨이(multi-way) 구조를 가진다. 채널은 하나 이상의 웨이로 구성된 웨이의 집합을 의미하며, 웨이는 채널 내에서 칩 선택 신호에 의해 동작하는 플래시 메모리를 의미한다. 이때 각 채널에 속하는 모든 플래시 메모리는 데이터 입출력 버스를 공유하고, 칩 선택 신호와 레디(ready)/비지(busy) 신호를 제외한 모든 제어신호를 공유한다.
이러한 경우 플래시 메모리의 내부 데이터 이동을 위한 읽기 및 쓰기 연산은 데이터의 이동 범위에 따라 동일 웨이 내에서의 데이터 이동을 지역 카피백(local copy-back)으로, 서로 다른 웨이 간의 데이터 이동을 전역 카피백(global copy-back)으로 각각 명명하여 구분할 수 있다. 또한 여기서 읽기 동작의 대상이 되는 플래시 메모리를 소스(source), 그리고 쓰기 동작의 대상이 되는 플래시 메모리를 타겟(target)으로 정의할 수 있다. 즉, 지역 카피백은 소스와 타겟이 동일한 웨이에 위치하는 경우이고, 전역 카피백은 소스와 타겟이 서로 다른 웨이에 위치하는 경우이다.
지역 카피백의 경우에는 소스와 타겟이 동일 웨이 내에 위치한다는 특성상 페이지 읽기 및 쓰기 연산이 순차적으로 실행되지만, 전역 카피백의 경우에는 읽기 및 쓰기 연산이 수행되는 동안 데이터 입출력 버스가 사용되지 않기 때문에 인터리빙(interleaving) 기법을 적용하여 복수의 타겟에 대하여 하나의 타겟에 대한 쓰기 연산이 수행되는 동안 다른 타겟에 대한 쓰기 연산이 동시에 이루어질 수 있다. 그에 따라 전체 연산 시간이 단축되는 효과를 얻을 수 있다.
그러나 전역 카피백 역시 데이터 입출력 버스를 통한 두 번의 데이터 이동이 발생하기 때문에 저장장치에서의 플래시 메모리의 집적도가 높아짐에 따라 블록 내의 페이지 수 및 페이지의 크기가 커지게 될 경우 결국 데이터 이동에 소요되는 시간이 증가하고, 가비지 컬렉션의 성능이 저하될 수 있다.
한국등록특허 제0764749호에는 멀티-칩 패키지 플래시 메모리 장치 및 그것의 카피백 방법으로서 소스 영역으로부터 독출된 데이터를 타깃 영역에 프로그램하는 동안 타깃 영역이 속하는 메모리 칩과 상이한 메모리 칩의 소스 영역으로부터 데이터를 독출하는 구성이 개시되어 있다. 그러나 이러한 방법은 앞에서 설명한 인터리빙 기법을 적용한 것으로, 카피백에 소요되는 시간을 단축시키는 데 한계가 있다.
본 발명이 이루고자 하는 기술적 과제는, 플래시 메모리 기반의 저장장치 또는 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지 내에서 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 이동시에 데이터 입출력에 소요되는 시간을 단축하여 가비지 컬렉션의 성능을 향상시킬 수 있는 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치의 제1실시예는, 다중-채널 및 다중-웨이 구조로 배열된 복수의 플래시 메모리에 제어신호를 입력하여 상기 플래시 메모리들 간의 데이터 이동을 제어하며, 상기 각각의 플래시 메모리에 대하여 데이터의 읽기 연산을 수행하기 위한 읽기 제어신호를 출력하는 읽기 제어신호 출력단자; 및 상기 각각의 플래시 메모리에 대하여 상기 데이터의 쓰기 연산을 수행하기 위한 쓰기 제어신호를 출력하는 쓰기 제어신호 출력단자;를 구비하고, 상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자는 데이터 입출력 버스를 공유하는 동일 채널 내에 위치하는 플래시 메모리들을 독립적으로 제어하기 위하여 사전에 설정된 개수로 구비된다.
상기의 기술적 과제를 달성하기 위한, 본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치의 제2실시예는, 데이터 입출력 버스를 공유하는 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지 내에서 상기 플래시 메모리 간의 데이터 이동을 제어하며, 외부의 플래시 메모리 제어기로부터 상기 플래시 메모리들 중 소스 플래시 메모리의 원본 데이터를 타겟 플래시 메모리로 이동시키기 위한 명령을 입력받는 명령 입력부; 및 상기 명령에 따라 읽기 제어신호, 쓰기 제어신호 및 데이터 입출력 신호를 상기 소스 플래시 메모리 및 상기 타겟 플래시 메모리에 각각 전송하되, 상기 소스 플래시 메모리로부터 상기 원본 데이터가 출력되는 것과 동시에 상기 데이터 입출력 버스를 통해 상기 타겟 플래시 메모리로 상기 원본 데이터가 입력되도록 하는 신호 출력부;를 구비한다.
본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치에 의하면, 플래시 메모리 기반의 저장장치에서 동일 채널 내의 서로 다른 웨이에 위치하는 플래시 메모리 간의 데이터 이동시 또는 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지에서 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 이동시에 소스로부터의 데이터 출력과 동시에 타겟으로의 데이터 입력이 일어나도록 하여 데이터 이동시간을 단축시킬 수 있으며, 결과적으로 가비지 컬렉션의 성능을 향상시킬 수 있다.
도 1은 본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치의 제1실시예 및 다중 채널 및 다중 웨이 구조로 배열된 복수의 플래시 메모리를 포함하는 저장장치의 전체 구성을 도시한 도면,
도 2는 다중 채널, 다중 웨이 구조를 가지는 저장장치에서 수행되는 카피백 연산의 시간적 순서를 다이어그램으로 도시한 도면,
도 3은 본 발명에 따른 플래시 메모리 제어장치의 제1실시예의 구성을 도시한 블록도,
도 4는 복수의 웨이를 그룹으로 분류하여 제어신호를 분리하는 일 실시예를 도시한 도면,
도 5는 본 발명에 따른 플래시 메모리 제어장치의 제2실시예의 구성을 도시한 블록도,
도 6은 동일 채널에 속하는 두 개의 웨이에 대한 전역 카피백을 시간의 흐름에 따라 도시한 도면,
도 7은 소스로부터의 데이터 출력과 타겟에 대한 데이터 입력에 있어서 각 제어신호의 상태를 시간의 흐름에 따라 도시한 도면,
도 8은 타겟이 한 개인 단일 플레인 카피백의 실행순서를 도시한 도면,
도 9는 단일 타겟에 대한 다중 플레인 카피백의 실행 순서를 도시한 도면,
도 10은 여러 개의 타겟으로의 단일 플레인 카피백의 실행 순서를 도시한 도면,
도 11은 여러 개의 타겟에 대한 다중 플레인 카피백의 실행순서를 도시한 도면,
도 12는 캐시 쓰기 연산의 실행순서를 도시한 도면,
도 13은 단일 플레인에 대하여 GCB와 OGCB를 적용하였을 때 카피백 되는 페이지 수에 따른 대역폭을 도시한 그래프,
도 14는 다중 플레인에 대하여 GCB와 OGCB를 적용하였을 때 카피백 되는 페이지 수에 따른 대역폭을 도시한 그래프,
도 15는 단일 플레인 카피백의 실행시간을 측정한 결과를 도시한 그래프, 그리고,
도 16은 다중 플레인 카피백의 실행시간을 측정한 결과를 도시한 그래프이다.
이하에서 첨부된 도면들을 참조하여 본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치의 바람직한 실시예에 대해 상세하게 설명한다.
도 1은 본 발명에 따른 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치의 제1실시예 및 다중 채널 및 다중 웨이 구조로 배열된 복수의 플래시 메모리를 포함하는 저장장치의 전체 구성을 도시한 도면이다. 이하, 본 발명에 따른 플래시 메모리 제어장치의 구성 및 동작을 설명하는 데 있어서 '플래시 메모리'는 '플래시 메모리 칩'을 포함하는 의미로 사용될 수 있다.
도 1을 참조하면, 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100)는 호스트와 제어신호 및 데이터를 송수신하고, 다중 채널 및 다중 웨이 구조로 배열된 복수의 플래시 메모리에 대하여 데이터의 쓰기, 읽기 또는 소거 연산을 수행한다. 도 1에 도시된 실시예에서 복수의 플래시 메모리는 4-채널, 4-웨이 구조로 동작한다. 동일 채널에 속하는 웨이는 데이터 입출력 버스는 공유하지만, 각 웨이에 대한 제어 동작은 독립적으로 이루어진다.
본 발명에 따른 플래시 메모리 제어장치(100)의 구성 및 동작에 관하여 설명하기 이전에, 도 1과 같은 구조를 가지는 저장장치에서 수행되는 종래의 카피백 과정에 대하여 설명한다.
도 2는 다중 채널, 다중 웨이 구조를 가지는 저장장치에서 수행되는 카피백 연산의 시간적 순서를 다이어그램으로 도시한 도면이다. 도 2의 (a) 내지 (c) 모두 데이터 입출력 버스를 공유하는 하나의 채널 내에서 이루어지는 데이터 이동을 나타낸 것이며, 소스는 웨이 0(W0)이다. 도 2의 (a)는 데이터 이동의 소스와 타겟이 동일한 웨이에 위치하는 경우, 즉 소스와 타겟이 모두 W0인 경우이고, (b) 및 (c)는 타겟이 동일 채널 내의 다른 웨이에 위치하는 경우이다. 또한 도 2의 (b)는 단일 타겟(W1)인 경우이고, (c)는 다수의 타겟(W1, W2, W3)으로 데이터를 이동하는 경우이다.
앞에서 정의한 바에 따르면, 도 2의 (a)는 소스와 타겟이 동일한 웨이에 위치하므로 지역 카피백 연산을 나타낵 것이며, (b) 및 (c)는 소스와 타겟이 서로 다른 웨이에 위치하므로 전역 카피백 연산을 나타낸 것이라 할 수 있다. 참고로, 본래 의미로서의 카피백 연산인 낸드 플래시 메모리 내부에서의 카피백 연산은 소스와 타겟이 동일 낸드 플래시 메모리 내부의 동일한 플레인으로 제한되므로, 지역 카피백의 일종으로 구분할 수 있다.
낸드 플래시 메모리는 비휘발성인 셀 어레이와 휘발성인 데이터 레지스터로 구분할 수 있는데, 낸드 플래시 메모리에 대한 읽기 연산은 셀 어레이에 저장된 데이터가 데이터 레지스터로 이동하는 과정(읽기 비지(Read Busy))과 데이터 레지스터의 데이터를 제어기의 버퍼로 출력하는 과정(데이터 출력(Data Out))으로 이루어지며, 쓰기 연산은 데이터를 제어기의 버퍼로부터 플래시 메모리의 데이터 레지스터로 입력하는 과정(데이터 입력(Data In))과 데이터 레지스터의 데이터를 셀 어레이로 이동하는 과정(쓰기 비지(Program Busy))으로 이루어진다. 이때 데이터 레지스터와 제어기 버퍼의 크기는 데이터의 읽기 및 쓰기 단위인 페이지 크기와 동일하며, 제어기 버퍼는 일반적으로 웨이마다 한 개 이상 존재하기 때문에 웨이 버퍼라고도 한다.
도 2의 (a) 내지 (c)에는 읽기 연산을 구성하는 읽기 비지와 데이터 출력, 그리고 쓰기 연산을 구성하는 데이터 입력과 쓰기 비지가 다이어그램 내에 표시되어 있다. 도 2의 (a)를 참조하면, 소스와 타겟이 동일한 웨이에 위치하는 지역 카피백의 경우에는 페이지의 읽기 연산과 쓰기 연산이 순차적으로 실행되어야 하므로 앞에서 설명한 인터리빙 기법을 적용할 수 없다.
그러나 도 2의 (b)를 참조하면, 소스와 타겟이 분리된 전역 카피백의 경우에는 페이지 단위의 데이터 이동 과정에서 쓰기 읽기 비지와 쓰기 비지에 해당하는 시간 동안에는 데이터 입출력 버스가 사용되지 않기 때문에 첫 번째 페이지의 쓰기 비지에 해당하는 시간 동안 두 번째 페이지의 읽기 연산을 수행할 수 있다. 도 2의 (b)에서 W1의 쓰기 비지에 해당하는 시간과 W0의 읽기 비지 및 데이터 출력에 해당하는 시간이 중첩되어 도시된 것을 확인할 수 있다. 이와 같은 인터리빙 기법에 의해 첫 번째 페이지의 쓰기 연산 후 두 번째 페이지 이후에 대하여는 읽기 연산 없이 쓰기 연산이 즉시 실행되는 것과 같은 시간 단축 효과를 얻을 수 있다.
또한 도 2의 (c)는 다수의 타겟이 각각 서로 다른 웨이에 위치하는 경우로서, 일반적으로 쓰기 비지에 해당하는 시간은 다른 연산에 비해 길기 때문에 복수의 타겟에 대한 쓰기 연산은 데이터 입력만 순차적으로 수행되고, 쓰기 비지에 해당하는 시간은 서로 중첩된다. 따라서 복수의 타겟에 대한 쓰기 비지에 해당하는 시간 동안 소스에서는 여러 페이지에 대한 읽기 연산이 차례로 수행될 수 있다. 이와 같이 타겟이 여러 개인 경우에 인터리빙에 의한 실행시간 단축의 효과가 향상될 수 있다.
전역 카피백에서 위와 같이 인터리빙 기법을 사용하기 위해서는 낸드 플래시 메모리 기반의 저장장치가 인터리빙이 가능한 채널-웨이 구조를 가져야 하며, 플래시 변환 계층(Flash Translation Layer : FTL)에서 타겟의 물리 페이지 번호(Physical Page Number : PPN)를 할당할 때 채널-웨이 구성에 대한 정보를 기초로 PPN을 결정해야 한다. 일반적으로 FTL은 PPN을 할당할 때 웨이를 고려하지 않으나, 인터리빙과 같은 병렬화 기법의 성능을 최대화하기 위해서는 FTL에서 웨이를 고려하여 PPN을 결정해야 한다. PPN은 낸드 플래시 메모리의 특성과 저장장치의 채널, 웨이 구성에 따라 달라지지만 일정한 규칙을 가지므로, PPN을 통해 어떤 웨이에 속하는 것인지 용이하게 구분할 수 있다.
지역 카피백의 경우, 소스와 타겟이 동일한 웨이에 위치하기 때문에 한 웨이에 대한 실행시간(latency)이 커질 위험이 있으나, 전역 카피백은 트래픽을 여러 웨이로 분산시키기 때문에 한 웨이의 실행시간이 커질 위험이 상대적으로 작다. 또한 카피백이 끝나면 소스의 해당 블록을 소거해야 하는데, 전역 카피백의 경우는 지역 카피백에 비해 실행시간이 짧기 때문에 블록 소거 연산의 시작시간을 앞당겨 결과적으로 가비지 컬렉션의 성능을 향상시킬 수 있다.
이와 같이 전역 카피백에서는 인터리빙을 이용하여 카피백의 속도를 향상시킬 수 있으나, 채널의 데이터 입출력 측면에서는 지역 카피백과 마찬가지로 두 번의 데이터 이동이 발생한다. 최근 낸드 플래시 메모리의 집적도가 높아지면서 다중 다이(die)-다중 플레인(plane) 구조가 일반화되고, 블록 내의 페이지 수 및 페이지의 크기가 점점 증가하고 있는데, 페이지의 크기가 커지면 데이터 이동에 소요되는 시간이 증가하고, 그에 따라 카피백 시간이 증가하여 가비지 컬렉션의 성능이 저하된다. 또한 다중 플레인 구조에서는 데이터 이동 시간이 두 배로 늘어나기 때문에 페이지 크기가 성능에 더 큰 영향을 미치게 된다.
따라서 앞에서 설명한 바와 같이 전역 카피백에 있어서 인터리빙 기법을 적용하여 전체 카피백 시간을 단축시키는 것 외에 페이지의 크기가 커짐에 따라 증가하는 데이터 이동 시간을 단축시킬 필요성이 제기된다.
본 발명에 따른 플래시 메모리 제어장치(100)는 동일 채널 내에서 각 웨이가 데이터 입출력 버스를 공유한다는 점을 이용하여 각 페이지 카피백 시에 발생하는 데이터 이동 시간을 단축하기 위한 구성을 가진다. 구체적으로, 소스에서 출력된 데이터는 동일 채널 내의 다른 웨이의 데이터 입출력 버스에도 동시에 나타나게 된다. 동일 채널에 속하는 웨이들은 데이터 입출력 버스를 공유하기 때문이다. 본 발명에 따른 플래시 메모리 제어장치(100)는 소스로부터 데이터가 출력됨과 동시에 소스와 데이터 입출력 버스를 공유하는 타겟으로 해당 데이터가 입력되도록 하는 방식에 의해 종래에 비해 카피백에 소요되는 시간을 단축시킬 수 있다.
특히 본 발명에 따른 플래시 메모리 제어장치(100)는 소스와 타겟이 채널 내의 서로 다른 웨이에 위치하는 경우인 전역 카피백에 적용되며, 이하에서는 본 발명에 따른 플래시 메모리 제어장치(100)에 의해 수행되는 전역 카피백을 종래의 전역 카피백(Global Copy-back : GCB)과 대비하여 온더플라이 데이터 이동 기반의 전역 카피백(Global Copy-back with on-the-fly data transfer : OGCB)이라 명명한다. OGCB는 저장장치 내의 플래시 메모리들이 다중 채널 및 다중 웨이 구조를 가지는 경우, 즉 하나 이상의 채널 및 각 채널에 복수 개의 웨이가 포함되는 경우와 복수 개의 채널 및 각 채널에 하나 이상의 웨이가 포함되는 경우에 적용될 수 있다.
도 3은 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100)의 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100)는 내부에 버퍼(110)를 구비하며, 이는 앞에서 언급한 제어기 버퍼 내지 웨이 버퍼와 동일한 구성에 해당한다. 도 3에는 동일 채널 내의 서로 다른 웨이에 각각 위치하며 데이터 입출력 버스(120)를 공유하는 두 개의 플래시 메모리(200-1, 200-2, 이하 200)를 대표적으로 도시하였으며, 각각의 플래시 메모리(200)에는 셀 어레이(210-1, 210-2, 이하 210) 및 페이지 레지스터(220-1, 220-2, 이하 220)가 구비된다.
이상의 구성은 종래의 플래시 메모리 제어기와 동일하다. 본래 동일 채널 내의 웨이들(200-1, 200-2)은 데이터 입출력 버스(120) 뿐 아니라 칩 선택 신호와 레디/비지 신호를 제외한 나머지 제어신호를 모두 공유한다. 그러나 본 발명에 따른 플래시 메모리 제어장치(100)는 각각의 웨이(200-1, 200-2)에 대한 제어신호를 출력하는 제어신호 출력단자들 중 앞에서 설명한 바와 같이 데이터가 소스에서 출력됨과 동시에 타겟으로 입력되도록 하기 위해 제어신호들 중 읽기 인에이블(RE) 신호 및 쓰기 인에이블(WE) 신호가 채널 내의 웨이들(200-1, 200-2) 사이에서 별도로 분리되도록 한다. 그에 따라 소스와 타겟이 별도의 제어신호에 의해 독립적으로 동작할 수 있게 된다.
다음의 표 1은 낸드 플래시 메모리의 동작 모드에 따른 각 제어신호의 상태를 나타낸 것이다.
모드 CE# CLE ALE WE# RE# I/O
명령 입력 L H L
Figure 112011095246114-pat00001
H 입력
주소 입력 L L H
Figure 112011095246114-pat00002
H 입력
데이터 입력 L L L
Figure 112011095246114-pat00003
H 입력
데이터 출력 L L L H
Figure 112011095246114-pat00004
출력
표 1의 제어신호들 중 칩 선택 신호(CE#)는 각 웨이 별로 분리되어 있으며, 낸드 플래시 메모리의 동작 모드와 관련되어 추가적으로 분리할 필요성이 있는 제어신호는 커맨드 입력을 위한 래치 인에이블(CLE) 신호, 어드레스 입력을 위한 래치 인에이블(ALE) 신호, 그리고 RE 및 WE 신호이다. 이 중에서 커맨드와 어드레스 입력에 소요되는 시간은 전체 실행시간의 0.1% 미만이므로 각 웨이 별로 분리하지 않더라도 OGCB의 전체 실행시간에 영향을 미치지 않는다. 따라서 OGCB의 실행시간 단축을 위해 반드시 분리되어야 할 제어신호는 RE 및 WE 신호가 된다.
이를 위해서 본 발명에 따른 플래시 메모리 제어장치(100)에는 RE 및 WE 제어신호를 분리할 웨이의 수만큼의 RE 제어신호 출력단자 및 WE 제어신호 출력단자가 추가로 구비될 수 있다. 도 3을 참조하면, 두 개의 웨이(200-1, 200-2)가 데이터 입출력 버스(120)를 공유하고 있으므로, 플래시 메모리 제어장치(100)에는 두 개의 RE 제어신호 출력단자(130-1, 130-2)와 두 개의 WE 제어신호 출력단자(140-1, 140-2)가 구비되어 있다. 설명의 편의를 위해 RE와 WE를 제외한 다른 제어신호의 출력단자는 그 도시를 생략하였다.
RE 및 WE 제어신호를 분리할 웨이의 수는 저장장치의 구성에 따라 설정될 수 있다. 채널 내의 웨이의 수가 많은 경우, 그 개수만큼의 RE 및 WE 제어신호 출력단자를 모두 구비하는 것은 저장장치의 크기 및 제작비용 면에서 효율적이지 않다. 이러한 경우에는 복수의 웨이를 한 개의 그룹으로 분류하여 채널 내의 그룹별로 RE 및 WE 제어신호를 분리할 수 있다.
도 4는 복수의 웨이를 그룹으로 분류하여 제어신호를 분리하는 일 실시예를 도시한 도면이다. 도 4를 참조하면, 네 개의 웨이(200-1, 200-2, 200-3, 200-4)가 데이터 입출력 버스(120)를 공유하고 있다. 이러한 경우 각각의 웨이(200-1, 200-2, 200-3, 200-4)에 대한 RE 및 WE 제어신호를 모두 분리하려면 플래시 메모리 제어기(100)에 네 개씩의 RE 제어신호 출력단자 및 WE 제어신호 출력단자가 구비되어야 한다.
그러나 도 4에 도시된 바와 같이 웨이 0(200-1)과 웨이 1(200-2)을 하나의 그룹으로 묶어 그룹 1(300-1)이라 하고, 웨이 2(200-3)와 웨이 3(200-4)을 하나의 그룹으로 묶어 그룹 2(300-2)라 하면, 두 개의 웨이에 대하여 RE 및 WE 제어신호를 분리하는 것과 동일한 결과를 얻을 수 있다. 즉, 플래시 메모리 제어기(100)에는 그룹 1(300-1)을 위한 RE 제어신호 출력단자(130-1)와 WE 제어신호 출력단자(140-1)가 구비되며, 그룹 2(300-2)를 위한 RE 제어신호 출력단자(130-2)와 WE 제어신호 출력단자(140-2)가 구비된다. 따라서 도 4의 경우에 웨이(200-1~200-4)의 수는 도 3의 두 배이지만, 플래시 메모리 제어기(100)에 구비되는 RE 제어신호 출력단자(130-1, 130-2)와 WE 제어신호 출력단자(140-1, 140-2)의 수는 도 3과 동일하게 된다.
이와 같이 웨이들을 그룹으로 분류하여 각각의 그룹에 대한 RE 제어신호 및 WE 제어신호를 분리하게 되면 플래시 메모리 제어장치(100)에 구비되는 제어신호 출력단자의 수가 지나치게 증가하는 것을 방지할 수 있다. 그러나 소스와 타겟이 동일 그룹에 속할 수는 없으며, 서로 다른 그룹에 속하는 웨이만 소스와 타겟이 될 수 있다.
저장장치에 포함된 채널의 총 수를 NC, 웨이의 수를 NW, 웨이 그룹의 수를 NG라 하면, 제어신호 분리를 위해 추가로 구비되어야 하는 제어신호 출력단자의 수는 다음의 수학식 1과 같이 정의할 수 있다.
Figure 112011095246114-pat00005
수학식 1에서, 숫자 2는 분리될 제어신호가 RE 제어신호와 WE 제어신호의 두 가지임을 의미한다.
이상에서 설명한 바와 같이 동일 채널 내의 웨이들을 독립적으로 제어하기 위한 RE 및 WE 제어신호의 분리는 복수의 낸드 플래시 메모리가 다중-채널, 다중-웨이 구조로 배열된 저장장치에서 기존의 플래시 메모리 제어기의 구조를 변경함으로써 달성된다.
한편, RE 제어신호 출력단자(130-1, 130-2) 및 WE 제어신호 출력단자(140-1, 140-2)는 하나의 제어신호 출력단자의 형태로 구현될 수도 있다. 이러한 경우 본 발명에 따른 플래시 메모리 제어장치(100)는 0 또는 1의 서로 다른 제어값에 의해 하나의 제어신호 출력단자로 RE 제어신호 또는 WE 제어신호를 출력할 수 있다. 따라서 각 웨이를 독립적으로 제어하기 위하여 구비되어야 할 제어신호 출력단자의 개수는 RE 제어신호 출력단자(130-1, 130-2) 및 WE 제어신호 출력단자(140-1, 140-2)가 별개로 구비되는 경우에 비해 절반으로 줄어들게 된다.
이와 같이 데이터를 이동시킬 플래시 메모리들을 독립적으로 제어하는 구성을 플래시 메모리 패키지 내부에 구현함으로써 달성할 수도 있다. 즉, 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지 내부에 OGCB를 수행하기 위한 구성을 가지는 별도의 제어장치를 구현하여 외부의 플래시 메모리 제어기로부터의 명령에 따라 플래시 메모리 간의 데이터 이동을 제어하도록 하는 것이다.
도 5는 본 발명에 따른 플래시 메모리 제어장치의 제2실시예의 구성을 도시한 블록도이다.
도 5를 참조하면, 본 발명에 따른 플래시 메모리 제어장치의 제2실시예(400)는 데이터 입출력 버스(120)를 공유하는 복수의 플래시 메모리(500-1, 500-2, 500-3, 500-4)로 이루어진 플래시 메모리 패키지 내부에 구현되며, 명령 입력부(410) 및 신호 출력부(420)를 비롯하여 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100)에 구비된 버퍼(110) 내지 기존의 제어기 버퍼와 동일한 버퍼(110)를 구비한다.
이 경우 기존의 플래시 메모리 제어기의 구성을 변화시키지 않으며, 낸드 플래시 메모리에 OGCB 연산이 추가됨에 따라 기존의 플래시 메모리 제어기는 OGCB 연산을 지원하기 위해 외부 제어기로서 본 발명에 따른 플래시 메모리 제어장치(400)에 명령을 입력하고, 그 수행 결과를 플래시 메모리 제어장치(400)로부터 수신하게 된다.
명령 입력부(410)는 외부의 플래시 메모리 제어기로부터 플래시 메모리들(500-1, 500-2, 500-3, 500-4) 중 소스 플래시 메모리의 원본 데이터를 타겟 플래시 메모리로 이동시키기 위한 명령을 입력받는다. 신호 출력부(420)는 그에 따라 읽기 제어신호, 쓰기 제어신호 및 데이터 입출력 신호를 각각 출력하여 소스 플래시 메모리의 원본 데이터가 타겟 플래시 메모리로 이동되도록 한다. 신호 출력부(420)에 의해 각각의 플래시 메모리에 대한 제어가 독립적으로 이루어진다.
이때 원본 데이터는 소스 플래시 메모리로부터 출력됨과 동시에 데이터 입출력 버스를 통해 타겟 플래시 메모리에 입력되며, 그와 동시에 플래시 메모리 제어장치(400) 내부의 버퍼(110)로도 입력된다. 이후 버퍼(110)에 의해 에러 정정된 데이터가 원본 데이터에 연속하여 타겟 플래시 메모리로 입력된다.
앞에서 설명한 플래시 메모리 제어장치의 제1실시예(100)에서 데이터 입출력 버스를 공유하는 서로 다른 웨이에 위치하는 플래시 메모리 간의 데이터 이동을 제어하는 것과 마찬가지로, 플래시 메모리 제어장치의 제2실시예(400)에서도 데이터 입출력 버스를 공유하는 서로 다른 플래시 메모리에 위치하는 플래시 메모리 간의 데이터 이동을 제어하게 된다.
즉, 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100) 및 제2실시예(400)는 기존의 플래시 메모리 제어기의 구조를 변형하여 구현되는 것인지 또는 플래시 메모리 패키지 내부에 새롭게 구현되는 것인지의 차이를 가질 뿐 실질적으로 동일한 방법에 의해 플래시 메모리 간의 데이터 이동, 즉 OGCB 연산의 수행을 제어한다. 이하에서는 본 발명에 따른 플래시 메모리 제어장치의 제1실시예(100)에 의한 OGCB의 구체적인 수행 과정을 상세하게 설명하며, 이하의 설명은 본 발명에 따른 플래시 메모리 제어장치의 제2실시예(400)에도 동일하게 적용될 수 있다.
도 6은 동일 채널에 속하는 두 개의 웨이에 대한 전역 카피백을 시간의 흐름에 따라 도시한 도면이다. 도 6의 (a)는 종래의 전역 카피백(GCB), (b)는 본 발명에 의해 수행되는 전역 카피백(OGCB)을 나타낸 것이다. 또한 도 6의 (a) 및 (b)에서 소스는 W0이고, 타겟은 W1이다.
도 6의 (a)를 참조하면, 앞에서 도 2의 (b)를 참조하여 설명한 바와 같이 소스인 W0으로부터 출력된 데이터는 제어기 버퍼(110)로 입력되어 에러 검출 및 정정 과정을 거치게 되고, 이후 타겟인 W1로 에러가 정정된 데이터가 입력되어 쓰기 연산이 수행된다. 이 과정에서 데이터 입출력 버스(120)를 통한 데이터 입력 및 출력의 두 번의 데이터 이동이 발생한다.
한편, 도 6의 (b)를 참조하면, 소스인 W0으로부터 출력된 데이터는 데이터 입출력 버스(120)를 공유하는 타겟인 W1의 데이터 입출력 단자에 동시에 나타나게 된다. 본 발명에 의한 OGCB에서는 W0으로부터 출력된 데이터가 제어기 버퍼(110)와 W1으로 동시에 입력된다. 도 6의 (b)에는 채널 I/O에 데이터 출력과 데이터 입력이 동시에 일어나는 것으로 도시되어 있다.
이와 같이 소스로부터 데이터가 출력됨과 동시에 타겟으로 입력되기 위해서는 소스로부터의 데이터 출력이 발생하기 이전에 타겟 페이지에 대한 커맨드(command) 및 어드레스(address)가 입력되어 타겟에 데이터를 입력할 준비를 완료하여야 한다. 플래시 메모리 제어장치(100)는 제어기 버퍼(110)에 소스로부터 출력된 데이터를 저장하고 에러 검출 및 정정을 수행한다. 만약 데이터에서 에러가 검출되어 정정되었다면 에러가 정정된 부분만 타겟에 다시 입력하고 확인 커맨드를 입력하여 이후 타겟의 셀 어레이에 대한 쓰기 연산이 이루어지도록 한다.
도 7은 소스로부터의 데이터 출력과 타겟에 대한 데이터 입력에 있어서 각 제어신호의 상태를 시간의 흐름에 따라 도시한 도면이다. 도 7에서 RE#와 WE#는 각각 소스에 대한 RE 제어신호 및 타겟에 대한 WE 제어신호를 나타내며, I/O는 소스와 타겟에서 공유되는 데이터 입출력 신호이다. DVW는 소스로부터 읽은 데이터가 유효한 윈도우를 나타내고, DRW는 타겟에서 필요한 데이터 윈도우이다.
DVW는 도 7에 표시된 tRC, tRP, tREH 및 tREA 등의 타이밍 파라미터에 의해 결정되고, DRW는 tDS와 tDH의 최소값의 합과 같거나 크도록 결정된다. OGCB를 구현하기 위해서는 DVW가 DRW보다 작거나 DRW와 같아야 하며, 만약 DVW가 DRW보다 크다면 tRC를 지연시켜 DRW를 크게 할 수 있다. 그러나 tRC를 지연시키면 데이터 출력에 소요되는 시간이 증가하고 OGCB의 성능에 악영향을 줄 수 있으므로, OGCB에서 필요한 DVW를 확보하기 위한 tRC를 tRC'로 정의할 수 있다. tRC'의 최소값은 tRC와 같고, 최대값은 tRC와 tWC의 합의 60%가 되도록 결정할 수 있다.
이때 도 7의 다이어그램 상에서 DRW와 DVW의 크기 및 위치를 고려하여 중첩시키면 tRC'의 크기를 최소화할 수 있으며, 도 7에 도시된 바와 같이 DVW의 시작 시간을 t0라 하면 t0로부터 DRW를 위해 필요한 tDS를 만족시키는 시간인 t1을 정의할 수 있다. 또한 DRW와 DVW를 중첩시키기 위해 필요한 RE#에 대한 WE#의 지연시간을 Δt로 정의할 수 있다.
일반적으로 낸드 플래시 메모리에서 읽기 연산 주기(tRC)와 쓰기 연산 주기(tWC)는 동일하므로, tRC의 크기가 tRC'와 동일하다면 OGCB의 데이터 입출력은 페이지에 대한 데이터 입력 또는 출력 시간보다 Δt 만큼 지연된다. Δt의 최대값은 tREA와 같거나 tREA보다 작아야 하며, 페이지 크기가 8K 바이트일 때 데이터 이동 시간의 0.01%이므로 성능에는 영향을 미치지 않는다.
GCB와 OGCB의 성능을 구체적으로 분석하기 위하여 읽기 및 쓰기 연산을 몇 개의 단계로 구분하고, 각 단계에 대한 소요시간을 정의할 수 있다. 먼저 페이지 읽기 연산은 읽기 비지에 해당하는 시간 tR과 데이터가 플래시 메모리(200)의 데이터 레지스터(220)로부터 제어기 버퍼(110)로 전송되는 데이터 출력 시간 tDO로 구분된다. 또한 페이지 쓰기 연산은 데이터가 제어기 버퍼(110)로부터 데이터 레지스터(220)로 전송되는 데이터 입력 시간 tDI와 쓰기 비지에 해당하는 시간 tPROG로 구분된다. 읽기 연산 및 쓰기 연산 각각에는 커맨드 및 어드레스 입력 단계가 포함되며, 각 연산의 전체 소요시간에서 차지하는 비중은 매우 적으나, 정확한 비교 분석을 위해 커맨드 및 어드레스의 입력시간을 전체 연산의 실행시간에 포함시킨다.
데이터 이동에 소요되는 시간은 페이지 및 스페어 크기와 낸드 플래시 메모리(200)의 연산 주기에 의해 결정된다. 일반적으로 데이터의 입력 및 출력에 소요되는 시간은 다음의 수학식 2 및 3과 같다.
Figure 112011095246114-pat00006
Figure 112011095246114-pat00007
수학식 2 및 수학식 3에서, pageSize는 페이지의 크기, spareSize는 스페어의 크기, tRC는 낸드 플래시 메모리(200)의 읽기 연산 주기, 그리고 tWC는 쓰기 연산 주기이다.
또한 OGCB에서의 데이터 입출력에 소요되는 시간은 다음의 수학식 4와 같이 산출된다.
Figure 112011095246114-pat00008
여기서, tDIO는 OGCB에서의 데이터 입출력 시간, tRC'은 OGCB에서 필요한 DVW를 확보하기 위한 tRC의 값, 그리고 Δt는 RE 제어신호에 대한 WE 제어신호의 지연시간이다.
이와 같이 OGCB에서는 tDO와 tDI가 tDIO로 대체되므로, 카피백 실행시간이 다음의 수학식 5와 같이 단축된다.
Figure 112011095246114-pat00009
여기서, tDIOGAIN은 GCB에 비해 OGCB에서 데이터 입출력 시간이 단축되는 정도를 나타낸다.
한편, 낸드 플래시 메모리(200)에는 커맨드 및 어드레스의 입력과 데이터 입출력 등의 상변화(phase shift)를 위한 대기시간이 존재한다. 예를 들면, 쓰기 연산에서 해당 페이지의 어드레스를 입력한 후 데이터를 입력할 때까지 필요한 대기시간 tADL, 커맨드를 입력한 후 낸드 플래시 메모리(200)가 비지 상태로 될 때까지의 시간인 tWB 등이 있다. 여기서 커맨드와 어드레스의 입력시간과 대기시간을 합한 시간을 읽기 연산에 대하여는 tSRSET, 쓰기 연산에 대하여는 tSPSET과 같이 정의할 수 있다.
그에 따라 단일 플레인에 대한 읽기 및 쓰기 연산의 전체 실행시간은 다음의 수학식 6 및 수학식 7과 같이 정의할 수 있다.
Figure 112011095246114-pat00010
여기서, tSR은 단일 플레인에 대한 읽기 연산의 전체 실행시간, tSRSET은 커맨드 및 어드레스의 입력시간과 대기시간의 합, tR은 읽기 비지에 해당하는 시간, 그리고 tDO는 데이터 레지스터(220)로부터 제어기 버퍼(110)로의 데이터 이동시간이다.
Figure 112011095246114-pat00011
여기서, tSP는 단일 플레인에 대한 쓰기 연산의 전체 실행시간, tSPSET은 커맨드 및 어드레스의 입력시간과 대기시간의 합, tDI는 제어기 버퍼(110)로부터 데이터 레지스터로(220)의 데이터 이동시간, 그리고 tPROG는 쓰기 비지에 해당하는 시간이다.
또한 읽기 및 쓰기 연산에서 데이터 이동시간을 제외한 나머지 실행시간은 다음의 수학식 8 및 수학식 9와 같이 나타낼 수 있다.
Figure 112011095246114-pat00012
Figure 112011095246114-pat00013
수학식 8 및 수학식 9에서, tSREXCD는 읽기 연산에서 전체 실행시간 중 데이터 이동시간을 제외한 실행시간, tSPEXCD는 쓰기 연산에서 전체 실행시간 중 데이터 이동시간을 제외한 실행시간이다.
다중 플레인에 대한 연산에 있어서, tR과 tPROG는 단일 플레인의 경우와 동일하지만 데이터 이동이 플레인마다 발생하므로 데이터 이동시간이 단일 플레인 연산에서의 데이터 이동시간의 2배이다. 따라서 다중 플레인에 대한 데이터 이동시간은 다음의 수학식 10 내지 수학식 12와 같이 나타낼 수 있다.
Figure 112011095246114-pat00014
Figure 112011095246114-pat00015
Figure 112011095246114-pat00016
여기서, tDO 및 tDI는 각각 GCB에서 데이터 출력시간 및 데이터 입력시간이고, tDIO는 OGCB의 데이터 입출력시간이다. 또한 P0 및 P1은 각각 다중 플레인의 플레인 0 및 플레인 1을 나타낸다.
단일 플레인에 대한 읽기 및 쓰기 연산의 전체 실행시간에 대응하여, 다중 플레인에 대한 읽기 및 쓰기 연산의 전체 실행시간은 다음의 수학식 13 및 수학식 14와 같이 나타낼 수 있다.
Figure 112011095246114-pat00017
여기서, tMR은 다중 플레인에 대한 읽기 연산의 전체 실행시간, tMRSET은 다중 플레인에 대한 읽기 연산에서 커맨드 및 어드레스의 입력시간과 대기시간의 합, tR은 읽기 비지에 해당하는 시간, tMRP0 _ CA 및 tMRP1 _ CA는 각각 플레인 0 및 플레인 1에 대한 어드레스의 입력 시간, 그리고 tDOP0 및 tDOP1은 각각 플레인 0 및 플레인 1에 대한 데이터 출력시간이다.
Figure 112011095246114-pat00018
여기서 tMP는 다중 플레인에 대한 쓰기 연산의 전체 실행시간, tMPP0 _ SET 및 tMPP1_SET은 각각 플레인 0 및 플레인 1에 대한 커맨드 및 어드레스의 입력시간과 대기시간의 합, tDIP0 및 tDIP1은 각각 플레인 0과 플레인 1에 대한 데이터 입력시간, tDBSY는 플레인 0과 플레인 1에 대한 데이터 입력 사이의 더미(dummy) 비지 시간, 그리고 tPROG는 쓰기 비지에 해당하는 시간이다.
또한 단일 플레인에 대한 읽기 및 쓰기 연산에서 데이터 이동시간을 제외한 나머지 실행시간에 대응하여 다중 플레인에 대한 읽기 및 쓰기 연산에서 데이터 이동시간을 제외한 나머지 실행시간은 각각 다음의 수학식 15 및 수학식 16과 같이 나타낼 수 있다.
Figure 112011095246114-pat00019
Figure 112011095246114-pat00020
여기서, tMREXCD는 다중 플레인에 대한 읽기 연산에서 전체 실행시간 중 데이터 이동시간을 제외한 실행시간, tMPEXCD는 다중 플레인에 대한 쓰기 연산에서 전체 실행시간 중 데이터 이동시간을 제외한 실행시간이다.
이상에서 살펴본 바와 같이, 다중 플레인에 대한 연산은 데이터 입출력이 플레인 별로 한 번씩 발생한다는 점을 제외하면 단일 플레인에 대한 연산과 비슷한 구조를 가진다.
이하에서는 단일 플레인 및 다중 플레인에 대하여 타겟이 한 개인 경우와 여러 개인 경우의 GCB 및 OGCB의 실행순서를 상세하게 설명한다.
도 8은 타겟이 한 개인 단일 플레인 카피백의 실행순서를 도시한 도면으로, 도 8의 (a)는 GCB, (b)는 OGCB를 각각 나타낸 것이다. 도 8에서 SRC는 소스, TGT는 타겟을 의미하며, 앞에서 설명한 바와 같이 SRC와 TGT는 모두 동일 채널에 속하는 웨이이다. 또한 tITL은 데이터 입출력 버스(120)를 사용할 수 있는 인터리빙 가능시간을 나타내며, tCON은 tITL에 중첩하기 위한 연산의 실행시간이다. 따라서 인터리빙의 효과를 최대화하기 위해서는 tCON이 tITL보다 작거나 tITL과 같아야 하며, tCON이 tITL보다 크면 인터리빙의 효과가 약해지게 된다.
도 8을 참조하면, GCB의 경우 tCON은 tSR과 동일하고, tITL은 tPROG와 동일하다. 일반적으로 tSR은 tPROG보다 작기 때문에 두 번째 이후 페이지에 대한 카피백은 tSR이 tPROG에 중첩되어 전체 실행시간으로부터 제거된 것처럼 보이게 된다.이와 같이 tCON이 tITL보다 작거나 tITL과 같을 때 N개의 페이지에 대한 GCB의 전체 실행시간은 다음의 수학식 17과 같다.
Figure 112011095246114-pat00021
한편, OGCB의 경우, tCON은 tSR_SET과 tR의 합과 동일하며, tITL은 tPROG와 동일하다. tCON이 tITL보다 작을 때 N개의 페이지에 대한 OGCB의 전체 실행시간은 다음의 수학식 18과 같다.
Figure 112011095246114-pat00022
이와 같이 단일 플레인에 대한 단일 타겟으로의 카피백에서 tCON이 tITL보다 작거나 tITL과 같을 때 OGCB는 GCB에 비해 첫 번째 페이지에 대한 카피백에서는 tDIOGAIN만큼 실행시간에 대한 성능의 이득을 기대할 수 있으며, 두 번째 페이지 이후의 카피백에서는 tDIO의 크기에 의해 OGCB의 성능 이득이 결정된다.
만약 tRC'와 tRC의 크기가 같다면 tDIO와 tDI의 크기가 거의 같아지므로, tOGCB와 tGCB는 거의 같은 값을 가지게 된다. tDIO는 tDI에 비해 Δt 만큼 차이가 있지만 전체 실행시간에 미치는 영향은 미미한 수준이다. 반면, tRC'의 크기가 tRC보다 크다면 tGCB보다 tOGCB가 커지게 되고, OGCB의 성능이 GCB에 비해 나빠지게 된다.
한편, tCON이 tITL보다 크다면 tGCB와 tOGCB는 데이터 이동시간에 많은 영향을 받는다. 이때 N개의 페이지에 대한 GCB와 OGCB의 전체 실행시간은 각각 다음의 수학식 19 및 수학식 20과 같다.
Figure 112011095246114-pat00023
Figure 112011095246114-pat00024
GCB의 페이지 읽기 연산의 성능을 최대화하기 위해서는 현재 페이지에 대응하는 데이터가 출력된 후 다음 페이지에 대한 읽기 연산의 커맨드 및 어드레스를 입력하고 현재 페이지에 대한 데이터 입력을 개시하는 것이 바람직하다. 그에 따라 다음 페이지에 대한 tR이 현재 페이지에 대한 tDI와 중첩된다.
tGCB의 tSR에는 tDO가 포함되어 있으므로, tGCB에는 두 번의 데이터 이동이 포함된다. 따라서 tRC'와 tRC의 크기에 무관하게 tOGCB는 tGCB에 비하여 첫 번째 페이지의 카피백에서는 tDIOGAIN 만큼, 이후의 카피백에서는 tDIOGAIN-tR 만큼 성능이 향상된다.
도 9는 단일 타겟에 대한 다중 플레인 카피백의 실행 순서를 도시한 도면이다. 다중 플레인 연산에서는 두 페이지에 대한 데이터 이동이 발생하기 때문에 두 개의 제어기 버퍼(110), 즉 웨이 버퍼를 필요로 한다. 만약 웨이 버퍼가 한 개, 즉 단일버퍼이면 도 9의 (a)에 도시된 바와 같이 타겟에서 플레인 0에 대한 데이터 입력이 끝날 때까지 소스로부터 플레인 1의 데이터를 출력할 수 없다.
따라서 단일 버퍼가 사용되는 GCB의 tCON은 tMRSET, tR, tMRP0 _ CA 및 tDOP0의 합과 같고, tITL은 tPROG와 같다. 그에 따라 tCON이 tITL보다 작게 되어 인터리빙의 효과가 최대가 되더라도 소스에서 플레인 1에 대한 데이터 출력시간이 중첩되지 않고 전체 실행시간에 더해진다. tCON이 tITL보다 작거나 tITL과 같을 때 N개 페이지에 대한 GCB의 전체 실행시간은 다음의 수학식 21과 같다.
Figure 112011095246114-pat00025
만약 웨이 버퍼가 2개, 즉 듀얼버퍼라면, 다중 플레인 GCB에 있어서 플레인 0 및 플레인 1에 대한 데이터 출력 후 두 플레인에 데이터를 입력할 수 있다. 도 9의 (b)에 도시된 다이어그램이 듀얼버퍼의 GCB를 나타낸 것이다. 도 9의 (b)에서 듀얼버퍼 GCB의 tCON은 tMR과 같고, tITL은 tPROG와 같다. tCON이 tITL보다 작거나 tITL과 같을 때 N개의 페이지에 대한 GCB의 전체 실행시간은 다음의 수학식 22와 같다.
Figure 112011095246114-pat00026
한편, 도 9의 (c)를 참조하면, OGCB의 경우는 두 플레인의 데이터를 저장할 필요가 없으므로 단일 플레인 또는 다중 플레인에 무관하게 단일버퍼만을 필요로 한다. 도 9의 (c)에서 tCON은 tMRSET과 tR의 합과 같으며, tITL은 tPROG와 같다. tCON이 tITL보다 작거나 tITL과 같을 때 OGCB의 전체 실행시간은 다음의 수학식 23과 같다.
Figure 112011095246114-pat00027
이와 같이 단일 타겟으로의 다중 플레인의 카피백은 tCON이 tITL과 같거나 tITL보다 작을 때 듀얼버퍼 GCB와 OGCB의 성능은 단일 플레인 카피백과 유사한 형태를 보인다. 또한 OGCB는 듀얼버퍼 GCB에 비해 첫 번째 페이지의 카피백에 있어서 실행시간에 대한 성능 이득을 tDIOGAIN의 두 배 정도로 기대할 수 있다. 두 번째 페이지 이후의 카피백에 있어서 OGCB의 성능 이득은 단일 플레인과 마찬가지로 tDIO의 크기에 의해 결정된다.
단일버퍼 GCB는 tMRP1 _ CA와 tDOP1이 중첩되지 않기 때문에 듀얼버퍼 GCB에 비해 낮은 성능을 보인다. tRC'가 최대값을 가진다 해도 tDIO는 tDI와 tDO의 합보다 작으므로, OGCB가 최악의 성능을 보이는 경우에도 OGCB는 단일버퍼 GCB에 비해 향상된 성능을 보인다.
만약 tCON이 tITL보다 크다면, 단일버퍼 GCB와 듀얼버퍼 GCB의 실행시간은 역전된다. 듀얼버퍼 GCB는 쓰기 연산에 있어서 두 플레인의 데이터를 연속으로 입력하기 때문에 tMP에 플레인 간의 전환을 위한 더미 비지 시간 tDBSY가 포함되어 있다. 그러나 단일버퍼 GCB는 쓰기 연산에서 tDBSY가 두 번째 tMRP1 _ CA 및 tDOP1에 중첩된다. 첫 번째 페이지의 카피백에서 tDBSY는 tGCB1의 0.03% 정도이므로 성능에 미치는 영향이 거의 없다.
tCON이 tITL보다 클 때 N개의 페이지에 대한 단일버퍼 GCB, 듀얼버퍼 GCB 및 OGCB의 전체 실행시간은 다음의 수학식 24 내지 26과 같다.
Figure 112011095246114-pat00028
Figure 112011095246114-pat00029
Figure 112011095246114-pat00030
단일 플레인 카피백과 마찬가지로 tRC' 및 tRC의 크기에 무관하게 tOGCB는 tGCB에 비해 첫 번째 페이지의 카피백에서는 tDIOGAIN만큼, 그리고 두 번째 페이지 이후의 카피백에서는 2×tDIOGAIN-tR 만큼 성능이 향상된다.
다음으로, 도 10은 여러 개의 타겟으로의 단일 플레인 카피백의 실행 순서를 도시한 도면이다. 도 10의 (a)는 GCB를 나타낸 것이고, (b)는 OGCB를 나타낸 것이다. 또한 도 10에서 타겟의 개수는 TGT0, TGT1 및 TGT2의 세 개이다.
타겟이 여러 개일 때 인터리빙의 효과를 최대화하기 위해서는 TGT0의 첫 번째 페이지에 대한 쓰기 연산이 끝나기 전에 TGT0의 두 번째 페이지에 대한 데이터 입력 준비가 완료되어야 한다. 즉, GCB의 인터리빙 효과가 최대가 되기 위해서는 tITL에 해당하는 시간 동안 TGT1에 쓰기 연산을 수행할 데이터를 소스로부터 웨이 버퍼(110)로 출력함과 동시에 에러 검출 및 정정을 수행하고, TGT1에 쓰기 연산을 수행할 데이터를 웨이 버퍼(110)로부터 TGT1의 데이터 레지스터(220)로 입력한 후, TGT2에 대하여도 이상의 과정을 반복하고, TGT0에 쓰기 연산을 수행할 두 번째 페이지의 데이터를 소스로부터 웨이 버퍼(110)로 출력하는 과정이 모두 완료되어야 한다. 이 과정에서 GCB의 경우 5번의 데이터 이동이 발생한다.
한편, OGCB의 인터리빙 효과가 최대가 되기 위해서는 tITL에 해당하는 시간 동안 소스와 TGT1에 대한 데이터 입출력, 소스와 TGT2에 대한 데이터 입출력, 그리고 소스에서 TGT0의 두 번째 페이지에 대한 읽기 비지 과정이 종료되어야 한다. 이 과정에서 OGCB의 경우에는 2번의 데이터 이동과 3번의 tR이 발생한다. 반면, GCB의 tR은 다른 웨이의 tDI에 중첩된다.
tCON이 tITL보다 작거나 tITL과 같을 때 N개의 페이지에 대한 GCB와 OGCB의 전체 실행시간은 두 가지 경우로 구분된다.
카피백 되는 페이지의 수를 N이라 하고 타겟의 수를 NTGT라 할 때, N mod NTGT가 1이면 첫 번째 타겟으로의 카피백을 의미하는 것이다. 예를 들면, 도 10에서 첫 번째 타겟은 TGT0이므로 N mod NTGT가 1이면 TGT0에 대한 카피백을 의미한다.
tCON이 tITL보다 작거나 tITL과 같을 때 TGT0에 대해 두 번째 페이지의 쓰기 연산을 수행하기 위해서는 TGT0에 대한 첫 번째 페이지의 쓰기 연산이 완료되어야 한다. 따라서 N이 1이 아니고 N mod NTGT가 1일 때 다음 수학식 27 및 수학식 28과 같이 tGCBN은 tGCBN mod NTGT보다 tSP만큼 늘어나고, tOGCBN은 tOGCBN mod NTGT보다 tDIO와 tSPEXCD의 합만큼 늘어나게 된다.
Figure 112011095246114-pat00031
Figure 112011095246114-pat00032
또한 tCON이 tITL보다 작거나 tITL과 같을 때 N이 1이거나 N mod NTGT가 1이 아니면 GCB와 OGCB의 실행시간은 각각 수학식 19 및 수학식 20과 같다. 도 10을 참조하면, 연속된 세 개의 페이지의 카피백에 있어서 TGT1은 TGT0의 데이터 이동이 끝난 후, 그리고 TGT2는 TGT1의 데이터 이동이 끝난 후 카피백이 개시된다. 따라서 이들의 실행시간은 데이터 이동시간만큼 지연된다.
한편, 여러 개의 타겟에 대한 단일 플레인 카피백에서 tCON이 tITL보다 크다면 N개의 페이지에 대한 GCB와 OGCB의 실행시간은 수학식 19 및 수학식 20과 같으며, GCB와 OGCB 모두 타겟의 수에 무관하게 각각의 카피백 수행시마다 소스에서 타겟으로의 데이터 이동시간만큼 실행시간이 늘어나게 된다.
도 11은 여러 개의 타겟에 대한 다중 플레인 카피백의 실행순서를 도시한 도면이다. 도 11의 (a)는 단일버퍼를 사용하는 GCB를 나타낸 것이며, (b)는 듀얼버퍼를 사용하는 GCB, 그리고 (c)는 OGCB를 나타낸 것이다.
도 11의 다중 플레인 카피백은 도 10에 도시된 단일 플레인 카피백과 유사한 패턴을 보이며, 타겟의 수가 3개일 때 단일버퍼를 사용하는 GCB의 tCON에는 9번의 데이터 이동이 포함되고, 듀얼버퍼를 사용하는 GCB의 tCON에는 10번의 데이터 이동이 포함된다. 한편, OGCB의 경우에는 tCON에 3번의 데이터 이동과 tR이 포함된다.
tCON이 tITL보다 작거나 iITL과 같고 N이 1이 아니며, N mod NTGT가 1일 때 단일버퍼 GCB, 듀얼버퍼 GCB 및 OGCB의 실행시간은 각각 다음의 수학식 29 내지 수학식 31과 같다.
Figure 112011095246114-pat00033
Figure 112011095246114-pat00034
Figure 112011095246114-pat00035
한편, tCON이 tITL보다 크다면 N개의 페이지에 대한 단일 버퍼 GCB와 듀얼버퍼 GCB 및 OGCB의 실행시간은 수학식 24 내지 수학식 26과 같다. 이러한 경우에는 버퍼의 수 및 타겟의 수에 무관하게 GCB와 OGCB 모두 각 카피백 수행시마다 소스로부터 타겟으로의 데이터 이동시간만큼 카피백 실행시간이 늘어나게 된다.
한편, GCB와 OGCB를 수행할 때 캐시(cache) 쓰기 연산을 사용하여 쓰기 연산의 속도를 향상시킬 수 있다. 도 12는 캐시 쓰기 연산의 실행순서를 도시한 도면이다. 도 12에서 $R과 DR은 각각 플래시 메모리 내부의 캐시 레지스터와 데이터 레지스터를 나타낸다.
캐시 쓰기 연산은 제어기 버퍼로부터 캐시 레지스터로의 데이터 이동, 캐시 레지스터로부터 데이터 레지스터로의 데이터 이동 및 데이터 레지스터로부터 셀 어레이로의 데이터 이동의 세 가지 단계로 구분할 수 있다. 이때 캐시 레지스터로부터 데이터 레지스터로 데이터가 복사되는 시간이 도 12에 tCBSY로 표시되어 있다. 캐시 쓰기 연산에 의해 쓰기 연산의 속도가 향상되는 효과를 얻기 위해서는 캐시 쓰기 연산에서 현재 페이지에 대한 tPROG가 끝나기 전에 다음 페이지의 데이터가 캐시 레지스터로 입력되어야 한다.
본 발명의 성능을 평가하기 위한 실험을 수행하였다.
실제 환경에서 낸드 플래시 메모리의 주기는 딜레이(delay)와 타이밍 마진(timing margin)을 고려하여야 한다. 따라서 실험시 25ns 주기를 가지는 낸드 플래시 메모리를 기반으로 100MHz 클록을 사용하는 제어기 IC의 타이밍 마진을 고려하여 주기를 40ns로 설정하였다. 다음의 표 2는 낸드 플래시 메모리에 대한 타이밍 정보를 나타낸 것이다.
파라미터 기호 시간 단위
페이지 읽기 연산 시간 tR 75 μs
페이지 쓰기 연산 시간 tPROG 1300 μs
캐쉬 비지 tCBSY 35 μs
더미(dummy) 비지 tDBSY 0.5 μs
낸드 플래시 메모리의 주기 tRC 및 tWC가 40ns일 때 DRW를 위해 필요한 tRC'는 40ns이고, 이때 Δt는 20ns이다. 참고로, ONFi(Open Nand Flash Interface) 3.0 기반의 이상적인 낸드 플래시 메모리의 주기인 25ns를 기준으로 tRC'는 25ns이고, 이때 Δt는 20ns이다.
또한 실험에 사용된 낸드 플래시 메모리의 페이지 크기는 8KB이고, 스페어 크기는 448바이트이다. 또한 1080바이트마다 24비트의 ECC가 필요하므로 단일 페이지마다 192비트의 ECC가 필요하다.
성능 측정 대상은 종래의 GCB와 본 발명에서 제안된 OGCB이며, 단일 플레인과 다중 플레인에 대하여 GCB와 OGCB의 성능을 각각 측정하였다. 앞에서 설명한 본 발명의 실시예에서와 같이 채널 내에 4개의 웨이가 포함된 경우를 가정하였으며, 타겟의 수를 1, 2, 3으로 증가시키며 실험을 수행하였다.
먼저 블록 내 페이지 수를 128로 가정하였을 때의 대역폭 측정 결과이다. 도 13은 단일 플레인에 대하여 GCB와 OGCB를 적용하였을 때 카피백 되는 페이지 수에 따른 대역폭을 도시한 그래프이다. 도 13에서 (a) 내지 (c)는 각각 타겟의 수가 1 내지 3인 경우를 나타낸 것이다.
먼저 도 13의 (a)를 참조하면, 첫 번째 페이지의 데이터 이동 시간이 전체 실행시간에 있어서 큰 비중을 차지하기 때문에 카피백 되는 페이지의 수가 적을 때에는 OGCB의 성능이 GCB에 비해 개선된 것으로 나타난다. 그러나 카피백 되는 페이지의 수가 증가할수록 두 연산 간의 성능 차이가 점차 줄어들게 된다. 도 13의 (b) 및 (c)에서는 타겟이 여러 개일 경우 타겟의 수보다 카피백 된 페이지의 수가 적으면 대역폭 측정의 의미가 없으므로 (b)는 2개, 그리고 (c)는 4개의 페이지에 대한 결과부터 측정하였다.
앞에서 설명한 바와 같이 타겟의 수가 증가하여 인터리빙의 효과가 더 잘 나타나게 되므로 GCB와 OGCB의 성능 모두 도 13의 (a)에 비하여 개선된 것을 확인할 수 있다. 또한 단일 타겟인 경우와 마찬가지로 카피백 되는 페이지의 수가 적을 때에는 OGCB의 성능이 우수하지만, 페이지 수가 늘어날수록 두 연산의 성능차가 줄어들게 된다.
그러나 tCON과 tITL을 비교하면, GCB의 경우 도 13의 (a) 및 (b)에서는 tCON이 tITL보다 작지만 (c)에서는 tCON이 tITL보다 커지게 된다. 그러나 OGCB의 경우에는 도 13의 (a) 내지 (c) 모두에서 tCON이 tITL보다 작게 나타난다.
도 14는 다중 플레인에 대하여 GCB와 OGCB를 적용하였을 때 카피백 되는 페이지 수에 따른 대역폭을 도시한 그래프이다. 도 13과 마찬가지로, 도 14의 (a) 내지 (c)는 각각 타겟의 수가 1 내지 3인 경우를 나타낸 것이다. 다만, 도 14에는 GCB에 있어서 웨이 버퍼가 1개일 때(단일버퍼) 2개일 때(듀얼버퍼)의 측정 결과가 도시되어 있다. 본 발명에서 제안된 OGCB는 단일 또는 다중 플레인에 무관하게 한 개의 웨이 버퍼만을 필요로 한다.
도 14의 (a)는 타겟이 1개인 경우의 대역폭 측정 결과를 도시한 그래프로, 듀얼버퍼를 사용하는 GCB의 성능이 단일 버퍼의 GCB에 비해 우수하게 나타났다. 이는 듀얼버퍼를 사용하는 것이 다중 플레인의 데이터를 한 번에 읽어올 수 있어 단일버퍼에 비해 유리하기 때문이다. 또한 듀얼버퍼를 사용하는 GCB와 본 발명에 따른 OGCB의 측정 결과는 도 13의 (a)와 유사한 패턴을 보인다. 즉, 도 14의 (a)에서도 카피백 되는 페이지의 수가 증가할수록 듀얼버퍼 GCB와 OGCB의 성능이 비슷해지지만, 이 경우에는 OGCB의 버퍼 사용량과 채널 입출력 사용량이 듀얼버퍼 GCB의 절반이 된다.
타겟이 여러 개인 GCB의 경우에는 타겟의 수가 2개 이상이 되면 tCON이 tITL보다 커지게 된다. 도 14의 (b) 및 (c)에서는 단일버퍼 GCB와 듀얼버퍼 GCB의 성능이 거의 유사하게 나타나는데, 이는 tCON이 tITL보다 커지면 데이터 이동 시간이 전체 실행시간을 결정하기 때문이다. 그러나 OGCB의 tCON은 GCB의 tCON의 1/3에 가까우며, 따라서 도 14의 (b)에서 OGCB는 버퍼의 개수에 무관하게 GCB에 비해 우수한 성능을 보인다. 또한 도 14의 (c)와 같이 타겟의 수가 세 개가 되는 경우에도 OGCB는 GCB에 비해 절반 정도의 데이터 이동 시간을 보이므로 tCON이 tITL보다 커지더라도 성능 저하가 적게 나타나게 된다.
다음으로 한 블록의 카피백에 대한 성능을 평가하기 위해 한 블록에 대한 GCB와 OGCB의 실행시간을 측정하였다. 앞에서 언급한 바와 같이 일반적인 낸드 플래시 메모리를 기준으로 한 블록의 페이지 수를 128개로 가정하였으며, 단일 플레인에서 한 번에 카피백 되는 페이지의 수를 1, 2, 4, 8, 16, 32, 64, 128개로 나누고 각각에 대한 실행 횟수를 달리하여 GCB와 OGCB의 실행시간을 각각 측정하였다. 또한 멀티 플레인의 경우에는 단일 플레인의 두 배인 256페이지에 대하여 실행시간을 측정하였다. 멀티 플레인의 경우에 한 번에 카피백 되는 페이지의 수는 단일 플레인의 두 배인 2, 4, 8, 16, 32, 64, 128, 256이 된다.
도 15는 단일 플레인 카피백의 실행시간을 측정한 결과를 도시한 그래프이다. 도 15의 그래프에서 가로축은 (한 번에 카피백 되는 페이지 수)×(카피백 실행 횟수)를 나타내며, 도 15의 (a) 내지 (c)는 타겟의 수가 1 내지 3인 경우를 나타낸 것이다.
GCB의 경우, 타겟의 개수가 2개 이하일 때에는 tCON이 tITL보다 작고, 타겟의 개수가 3개이면 tCON이 tITL보다 커진다. 그러나 OGCB의 경우에는 타겟의 개수가 3개가 되더라도 tCON이 tITL보다 작다. 도 15의 (a) 및 (b)를 참조하면, 타겟의 수가 1개일 때와 2개일 때 한 번에 카피백 되는 페이지의 수가 적을수록 첫 페이지의 tDIOGAIN에 의해 OGCB의 실행시간이 단축되었다. 즉, 타겟의 수가 1개일 때에는 최대 16.72%, 타겟의 수가 2개일 때에는 최대 22.33% 정도 단축되었으나, 한 번에 카피백 되는 페이지의 수가 많아질수록 실행시간의 격차가 1% 이내로 줄어들었다. 또한 15의 (c)를 참조하면, OGCB는 GCB에 비해 한 번에 카피백 되는 페이지의 수에 관계없이 20% 정도 실행시간이 단축되었다.
도 16은 다중 플레인 카피백의 실행시간을 측정한 결과를 도시한 그래프이다. 도 15와 마찬가지로, 도 16의 그래프에서 가로축은 (한 번에 카피백 되는 페이지 수)×(카피백 실행 횟수)를 나타내며, 도 16의 (a) 내지 (c)는 타겟의 수가 1 내지 3인 경우를 나타낸 것이다.
단일 버퍼의 GCB와 듀얼 버퍼의 GCB는 모두 타겟의 수가 1개일 때 tCON이 tITL보다 작고, 타겟의 수가 2개 이상일 때 tCON이 tITL보다 커진다. 그러나 OGCB는 타겟의 수가 2개 이하일 때 tCON이 tITL보다 작고, 3개일 때 tCON이 tITL보다 커진다.
만약 가비지 컬렉션이 다른 연산의 지연을 허락하지 않는 실시간 시스템이라면 매우 작은 단위의 페이지 카피백이 여러 번 일어나게 된다. 또한 일반 시스템에서도 가비지 컬렉션은 다른 연산에 영향을 주지 않는 범위 내에서 실행되어야 하기 때문에 작은 단위의 페이지 카피백이 여러 번 실행되어야 한다. 따라서 카피백이 적은 수의 페이지 단위로 실행될 경우 OGCB는 각각의 실행 횟수마다 성능상의 이득을 얻을 수 있다.
또한 OGCB의 I/O 사용량은 GCB에 비해 절반에 가까우며, tCON이 GCB에 비해 작기 때문에 상대적으로 인터리빙에 유리하다. 따라서 소스와 타겟을 제외한 채널 내 다른 웨이가 I/O를 사용할 수 있는 여유를 제공할 수 있다. 이는 저장장치의 실행시간(latency) 측면에서 매우 중요한 요소에 해당한다.
이상에서 본 발명의 바람직한 실시예에 대해 도시하고 설명하였으나, 본 발명은 상술한 특정의 바람직한 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
100 - 플래시 메모리 제어장치의 제1실시예
110 - 제어기 버퍼
120 - 데이터 입출력 버스
130 - RE 제어신호 출력단자
140 - WE 제어신호 출력단자
200 - 낸드 플래시 메모리
210 - 셀 어레이
220 - 데이터 레지스터
300 - 웨이 그룹
400 - 플래시 메모리 제어장치의 제2실시예
410 - 신호 입력부
420 - 신호 분배부

Claims (9)

  1. 다중-채널 및 다중-웨이 구조로 배열된 복수의 플래시 메모리에 제어신호를 입력하여 상기 플래시 메모리들 간의 데이터 이동을 제어하는 플래시 메모리 제어장치에 있어서,
    상기 각각의 플래시 메모리에 대하여 데이터의 읽기 연산을 수행하기 위한 읽기 제어신호를 출력하는 읽기 제어신호 출력단자; 및
    상기 각각의 플래시 메모리에 대하여 상기 데이터의 쓰기 연산을 수행하기 위한 쓰기 제어신호를 출력하는 쓰기 제어신호 출력단자;를 포함하며,
    상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자는 데이터 입출력 버스를 공유하는 동일 채널 내에 위치하는 플래시 메모리들을 독립적으로 제어하기 위하여 사전에 설정된 개수로 구비되고,
    상기 플래시 메모리들이 분류된 각 채널에 대응하는 상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자의 개수는 상기 각 채널에 속하는 웨이의 개수와 동일한 것을 특징으로 하는 플래시 메모리 제어장치.
  2. 제 1항에 있어서,
    상기 플래시 메모리들 중 제1 플래시 메모리의 원본 데이터를 상기 제1 플래시 메모리와 동일 채널 내의 서로 다른 웨이에 위치하는 제2 플래시 메모리로 이동시키되, 상기 제1 플래시 메모리로부터 상기 원본 데이터가 출력되는 것과 동시에 상기 데이터 입출력 버스를 통해 상기 제2 플래시 메모리로 상기 원본 데이터가 입력되도록 데이터 입출력 신호를 출력하는 것을 특징으로 하는 플래시 메모리 제어장치.
  3. 제 2항에 있어서,
    상기 읽기 제어신호에 따라 상기 플래시 메모리로부터 출력된 데이터를 저장하여 에러 검출 및 에러 정정을 수행하는 제어기 버퍼를 더 포함하며,
    상기 제어기 버퍼에 의해 상기 제1 플래시 메모리로부터 출력된 원본 데이터의 에러 정정이 수행된 후 상기 제2 플래시 메모리에 입력된 상기 원본 데이터에 연속하여 에러 정정된 데이터가 입력되도록 상기 데이터 입출력 신호를 출력하는 것을 특징으로 하는 플래시 메모리 제어장치.
  4. 삭제
  5. 다중-채널 및 다중-웨이 구조로 배열된 복수의 플래시 메모리에 제어신호를 입력하여 상기 플래시 메모리들 간의 데이터 이동을 제어하는 플래시 메모리 제어장치에 있어서,
    상기 각각의 플래시 메모리에 대하여 데이터의 읽기 연산을 수행하기 위한 읽기 제어신호를 출력하는 읽기 제어신호 출력단자; 및
    상기 각각의 플래시 메모리에 대하여 상기 데이터의 쓰기 연산을 수행하기 위한 쓰기 제어신호를 출력하는 쓰기 제어신호 출력단자;를 포함하며,
    상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자는 데이터 입출력 버스를 공유하는 동일 채널 내에 위치하는 플래시 메모리들을 독립적으로 제어하기 위하여 사전에 설정된 개수로 구비되고,
    상기 플래시 메모리들이 분류된 각 채널에 대응하는 상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자의 개수는 상기 채널에 속하는 웨이들이 제어신호를 공유하도록 분류된 그룹의 개수와 동일한 것을 특징으로 하는 플래시 메모리 제어장치.
  6. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 읽기 제어신호 출력단자 및 상기 쓰기 제어신호 출력단자는 하나의 제어신호 출력단자로 구현되며, 서로 다른 제어값에 의해 상기 제어신호 출력단자를 통해 상기 읽기 제어신호 및 상기 쓰기 제어신호가 출력되는 것을 특징으로 하는 플래시 메모리 제어장치.
  7. 데이터 입출력 버스를 공유하는 복수의 플래시 메모리로 이루어진 플래시 메모리 패키지 내에서 상기 플래시 메모리 간의 데이터 이동을 제어하는 플래시 메모리 제어장치에 있어서,
    외부의 플래시 메모리 제어기로부터 상기 플래시 메모리들 중 소스 플래시 메모리의 원본 데이터를 타겟 플래시 메모리로 이동시키기 위한 명령을 입력받는 명령 입력부; 및
    상기 명령에 따라 읽기 제어신호, 쓰기 제어신호 및 데이터 입출력 신호를 상기 소스 플래시 메모리 및 상기 타겟 플래시 메모리에 각각 전송하되, 상기 소스 플래시 메모리로부터 상기 원본 데이터가 출력되는 것과 동시에 상기 데이터 입출력 버스를 통해 상기 타겟 플래시 메모리로 상기 원본 데이터가 입력되도록 하는 신호 출력부;를 포함하며,
    상기 타겟 플래시 메모리가 복수 개로 설정되고,
    상기 신호 출력부는 상기 복수의 타겟 플래시 메모리에 대한 쓰기 연산이 동시에 수행되도록 상기 쓰기 제어신호를 출력하는 것을 특징으로 하는 플래시 메모리 제어장치.
  8. 삭제
  9. 제 7항에 있어서,
    상기 소스 플래시 메모리로부터 출력된 원본 데이터를 저장하여 에러 검출 및 에러 정정을 수행하는 제어기 버퍼를 더 포함하며,
    상기 신호 출력부는 상기 제어기 버퍼에 의해 상기 소스 플래시 메모리로부터 출력된 원본 데이터의 에러 정정이 수행된 후 상기 타겟 플래시 메모리에 입력된 상기 원본 데이터에 연속하여 에러 정정된 데이터가 입력되도록 상기 데이터 입출력 신호를 출력하는 것을 특징으로 하는 플래시 메모리 제어장치.
KR1020110126900A 2011-11-30 2011-11-30 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치 KR101460643B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110126900A KR101460643B1 (ko) 2011-11-30 2011-11-30 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110126900A KR101460643B1 (ko) 2011-11-30 2011-11-30 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치

Publications (2)

Publication Number Publication Date
KR20130060701A KR20130060701A (ko) 2013-06-10
KR101460643B1 true KR101460643B1 (ko) 2014-11-13

Family

ID=48859083

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110126900A KR101460643B1 (ko) 2011-11-30 2011-11-30 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치

Country Status (1)

Country Link
KR (1) KR101460643B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9799402B2 (en) 2015-06-08 2017-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100764749B1 (ko) * 2006-10-03 2007-10-08 삼성전자주식회사 멀티-칩 패키지 플래시 메모리 장치 및 그것의 카피 백방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100764749B1 (ko) * 2006-10-03 2007-10-08 삼성전자주식회사 멀티-칩 패키지 플래시 메모리 장치 및 그것의 카피 백방법

Also Published As

Publication number Publication date
KR20130060701A (ko) 2013-06-10

Similar Documents

Publication Publication Date Title
US10275378B2 (en) Data buffer pointer fetching for direct memory access
US8621323B2 (en) Pipelined data relocation and improved chip architectures
US8667368B2 (en) Method and apparatus for reading NAND flash memory
KR101942272B1 (ko) 비휘발성 메모리의 제어방법, 이를 구현한 비휘발성 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US7765359B2 (en) Flash memory system and programming method performed therein
TWI744632B (zh) 半導體設備及在一記憶體裝置上執行操作之方法
US8924627B2 (en) Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
JP5519779B2 (ja) 不揮発性メモリシステムのためのマルチページ準備コマンド
US10095436B2 (en) Cache memory device and data processing method of the device
US20130212318A1 (en) Architecture for address mapping of managed non-volatile memory
US8869004B2 (en) Memory storage device, memory controller thereof, and data transmission method thereof
JP2006294218A (ja) 不揮発性メモリ装置及びそのマルチページコピーバック方法
US20090204748A1 (en) Multi-channel flash memory system and access method
US10365834B2 (en) Memory system controlling interleaving write to memory chips
JP2007310680A (ja) 不揮発性記憶装置およびそのデータ転送方法
KR101460643B1 (ko) 데이터 입출력 버스를 공유하는 플래시 메모리 간의 데이터 전송을 위한 플래시 메모리 제어장치
US20100262763A1 (en) Data access method employed in multi-channel flash memory system and data access apparatus thereof
CN101866676A (zh) 用于多通道快闪存储系统的数据存取方法及其数据存取装置
JP4273106B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
CN113892089A (zh) 非易失性存储器装置中的数据读取的改进的安全性和正确性
US8037231B2 (en) Memory architecture for separation of code and data in a memory device
CN105468535A (zh) 一种NAND Flash的数据处理方法及装置
US20040268021A1 (en) FLASH memory blank check

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181105

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190905

Year of fee payment: 6