KR20100037874A - 반도체 디스크 장치 및 그것의 데이터 처리 방법 - Google Patents

반도체 디스크 장치 및 그것의 데이터 처리 방법 Download PDF

Info

Publication number
KR20100037874A
KR20100037874A KR1020080097200A KR20080097200A KR20100037874A KR 20100037874 A KR20100037874 A KR 20100037874A KR 1020080097200 A KR1020080097200 A KR 1020080097200A KR 20080097200 A KR20080097200 A KR 20080097200A KR 20100037874 A KR20100037874 A KR 20100037874A
Authority
KR
South Korea
Prior art keywords
data
buffer
streaming
buffer memory
channel
Prior art date
Application number
KR1020080097200A
Other languages
English (en)
Other versions
KR101529290B1 (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 KR1020080097200A priority Critical patent/KR101529290B1/ko
Priority to US12/558,632 priority patent/US9189383B2/en
Publication of KR20100037874A publication Critical patent/KR20100037874A/ko
Application granted granted Critical
Publication of KR101529290B1 publication Critical patent/KR101529290B1/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • 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
    • G11C16/10Programming or data input circuits
    • 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
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Abstract

본 발명에 따른 호스트와 데이터를 교환하는 반도체 디스크 장치는, 불휘발성 메모리 장치; 상기 호스트와 상기 불휘발성 메모리 장치가 교환하는 데이터를 일시 저장하는 버퍼 메모리; 그리고 상기 데이터를 구성하는 단위 데이터가 상기 버퍼 메모리에 입력되자마자 상기 불휘발성 메모리 장치 또는 상기 호스트로 스트리밍 모드에 따라 전송을 시작하도록 상기 버퍼 메모리를 제어하는 버퍼 매니저를 포함한다.

Description

반도체 디스크 장치 및 그것의 데이터 처리 방법{NON-VOLATILE MEMORY SYSTEM AND DATA PROCESSING METHOD THEREOF}
본 발명은 불휘발성 메모리 시스템에 관한 것으로, 더욱 상세하게는 불휘발성 메모리 장치를 기억 매체로 사용하는 반도체 디스크 장치 및 그것의 데이터 관리 방법에 관한 것이다.
일반적으로, 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능이 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장 장치로서 널리 사용되고 있다. 상술한 모바일 기기들은 다양한 기능들(예를 들면, 동영상 재생 기능)을 제공하기 위해서 점차 대용량의 저장 장치들을 필요로 하고 있다. 그러한 요구를 충족하기 위한 다양한 노력들이 행해져 오고 있다. 그러한 노력들 중 하나로서 하나의 메모리 셀에 2-비트 데이터 또는 그보다 많은 비트들을 저장하는 멀티 비트 메모리 장치가 활발히 개발되어 오고 있다. 하나의 메모리 셀에 멀티 비트 데이터가 저장되는 메모리 셀을 이하에서는 "MLC(Multi-Leveled Cell)"라 칭하기로 한다. 그에 반해 메 모리 셀당 1-비트의 데이터가 저장되는 메모리 셀을 "SLC(Single-Leveled Cell)"라 칭하기로 한다. MLC를 채택한 플래시 메모리 장치는 가용 용량의 증가는 가능하지만, 데이터의 기입에 소요되는 시간이 증가한다. 반면에, SLC를 채택한 플래시 메모리 장치는 가용 용량은 상대적으로 작지만, 데이터의 기입에 소요되는 시간이 짧아 MLC에 비하여 고속으로 동작한다. 또한, 기술의 진보에 따라 동일한 메모리 셀을 MLC 또는 SLC로 선택적으로 사용가능한 하이브리드 낸드 플래시 메모리(Hybrid NAND Flash Memory)가 소개되어 있다. 또한, 성능 향상과 비용 절감을 위하여 SLC 메모리 칩과 MLC 메모리 칩을 단일 패키지에 실장하여 속도와 용량의 장점들을 모두 얻는 기술들이 개발되어 오고 있다. 예를 들면, 쓰기 속도가 빠른 고가의 불휘발성 메모리(Ex, SLC)를 쓰기 속도가 느린 저가의 불휘발성 메모리(Ex, MLC)와 혼용하여 제품을 구성할 수 있다. 이러한 제품에서는, 고가의 불휘발성 메모리에 데이터를 어떻게 기록하고 관리하느냐가 전체 데이터 저장 장치의 성능을 좌우하게 된다. 대체로, 쓰기 속도가 빠른 불휘발성 메모리에는 업데이트가 빈번하고 크기가 작은 랜덤 데이터(Hot data)가 주로 기록됨으로써, 상대적으로 쓰기 속도가 느린 불휘발성 메모리의 성능 하락과 소거 횟수(Erase count)의 한계를 보완하고 있다.
플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 삭제 연산을 감추기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(Flash translation layer; 이하, FTL이라 칭함)이 사용된다. FTL은, 플래시 메모리의 기입 동작시, 파일 시스템이 생성한 논리주소를 삭제 연산이 수행된 플래시 메모리의 물리 주소로 맵핑시켜 주는 역할을 수행한다. 현재까지 제안된 FTL 기법들 중에서 대표적인 것으로 로그 블록 사상법(Log block mapping)이 있다. 로그 블록 사상법은 한정된 수의 로그 블록을 쓰기 버퍼(Write buffer)로 이용하는 블록 사상법이다. 상술한 FTL의 어드레스 맵핑 기능으로 인해, 호스트는 플래시 메모리 장치를 하드디스크 드라이버(또는 SRAM)로 인식하고, 하드디스크 드라이버와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다.
최근에는 기술의 진보와 플래시 메모리 장치의 가격 인하에 따라 플래시 메모리를 하드 디스크 저장 매체로 사용하는 대용량 저장 장치가 일반화되고 있다. 이러한 저장 장치를 반도체 디스크 장치 또는 솔리드 스테이트 드라이브(Solid State Drive) 또는 솔리드 스테이트 디스크(Solid State Disk)라고도 한다. 이하에서는 SSD라 칭하기로 한다. SSD로의 액세스 동작에 의하면, 탐색시간 없이 고속으로 데이터를 입출력할 수 있으면서도 기계적 지연이나 실패율이 현저히 적다. 또한, SSD는 외부의 충격에도 데이터가 쉽게 손상되지 않으며, 발열·소음 및 전력소모가 적고, 소형화·경량화할 수 있는 장점이 있다. 따라서, 기계적으로 회전하는 플래터(Platter)를 사용하지 않는 SSD는 대용량화가 가속되는 모바일 트랜드에 따 라 급격히 수요가 늘고 있다. 따라서, 고속 및 고신뢰도를 갖는 SSD에 대한 연구가 활발하게 진행되고 있다.
본 발명의 목적은 고속의 액세스 속도를 제공하기 위한 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 호스트와 데이터를 교환하는 반도체 디스크 장치는, 불휘발성 메모리 장치; 상기 호스트와 상기 불휘발성 메모리 장치가 교환하는 데이터를 일시 저장하는 버퍼 메모리; 그리고 상기 데이터를 구성하는 단위 데이터가 상기 버퍼 메모리에 입력되자마자 상기 불휘발성 메모리 장치 또는 상기 호스트로 스트리밍 모드에 따라 전송을 시작하도록 상기 버퍼 메모리를 제어하는 버퍼 매니저를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 버퍼 메모리, 상기 버퍼 메모리와 복수의 채널들로 데이터를 교환하는 불휘발성 메모리 장치를 갖는 반도체 디스크 장치의 데이터 처리 방법은, 상기 복수의 채널들 각각에 대응하도록 상기 버퍼 메모리에 할당되는 복수의 세그먼트들 각각에 입출력되는 단위 데이터의 수를 카운트하는 단계; 그리고 상기 단위 데이터의 수가 1 이상인 경우에 상기 데이터를 상기 복수의 채널들을 통하여 상기 불휘발성 메모리 장치 또는 외부로의 전송을 시작한다.
이상과 같은 본 발명에 따른 장치 및 방법에 따르면, 읽기와 쓰기 속도를 높일 수 있는 반도체 디스크 장치를 구현할 수 있다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 메모리 시스템으로 반도체 디스크 장치를 한 예로서 사용할 것이다. 또한, 이동되는 데이터 단위를 섹터 단위로 가정하여 본 발명의 특징이 설명되었으나, 데이터 단위가 섹터 단위에만 국한되지 않는다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 또한, 저장 매체로서 낸드 플래시 메모리를 예로 들어 설명되었으나, 또 다른 불휘발성 메모리 장치들로 구성될 수 있다. 예를 들면, 저장 매체로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등이 사용될 수 있으며, 이종의 메모리 장치들이 혼용되는 메모리 시스템에도 적용될 수 있다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 기술적 특징을 간략하게 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 반도체 디스크 장치(100)는 입출력 포트를 통해 외부 호스트(Host)와 데이터를 교환한다. 그리고, 반도체 디스크 장치(100)는 저장 매체에 해당하는 복수의 불휘발성 메모리들(170, 180, 190)을 포함한다. 복수의 불휘발성 메모리들(170, 180, 190)은 복수의 채널들을 통해 플래시 버스 컨트롤러(150)와 전기적으로 연결된다. 여기서, 각 채널에는 동일한 종류의 메모리들이 연결된다. 단일의 채널에 연결되는 불휘발성 메모리들은 싱글-레벨 플래시 메모리, 멀티-레벨 플래시 메모리 또는 OneNAND 플래시 메모리 등으로 구성될 수 있다. 예를 들면, 하나의 채널에는 단일-레벨 셀(SLC) 플래시 메모리들이 연결되고, 다른 채널에는 멀티-레벨 셀(MLC) 플래시 메모리들이 연결되며, 또 다른 채널에는 OneNAND 플래시 메모리들이 연결될 수 있다. 반도체 디스크 장치(100)의 상세한 구성은 다음과 같다.
호스트 인터페이스(110)는 호스트(Host)와 반도체 디스크 장치(100)와의 물리적 연결을 제공한다. 즉, 호스트 인터페이스(110)는 호스트의 버스 포맷(Bus format)에 대응하여 반도체 디스크 장치(100)와의 인터페이싱을 제공한다. 호스트(Host)의 버스 포맷으로 USB(Universal Serial Bus), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA) 등으로 구성될 수 있다. 일반적으로 상술한 호스트의 버스 포맷에 의한 데이터 전송 속도(예를 들면, STAT)는 반도체 디스크 장치(100)의 메모리 채널의 전송 속도보다 월등히 빠르다. 따라서, 이런 속도의 차이를 보상하기 위하여 용량이 큰 버퍼 메모리(120)가 제공된다. 또한, 호스트 인터페이스(110)는 호스트(Host)가 반도체 디스크 장치(100)를 하드 디스크 드라이버(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 지원한다. 예를 들면, 삭제 연산을 숨기기 위한 플래시 변환 계층(Flash Translation Layer:FTL)과 같은 기능을 제공한다.
버퍼 메모리(120)는 호스트(Host)로부터 전송되는 데이터 또는 내부 불휘발성 메모리로부터 읽혀진 데이터를 임시로 저장한다. 앞서 설명된 바와 같이, 호스트의 인터페이스 속도가 월등히 높은 경우, 대용량의 버퍼 메모리(120)를 제공함으로써 속도 차이로 발생하는 퍼포먼스 저하를 막을 수 있다. 버퍼 메모리(120)는 대용량의 보조 기억 장치로 사용되는 반도체 디스크 장치(100)에서 충분한 버퍼링을 제공하기 위해 동기식 DRAM(Synchronous DRAM)으로 제공될 수 있다. 하지만, 버퍼 메모리(120)가 여기의 개시에 국한되지 않음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
버퍼 매니저(130)는 버퍼 메모리(120)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(130)는 호스트 인터페이스(110)를 경유하여 입력되는 쓰기 데이터(Write data)를 버퍼 메모리(120)에 일시 저장한다. 그리고, 버퍼 메모리(120)에 저장된 데이터는 버퍼 매니저(130)의 제어에 따라 소정의 데이터 단위로 불휘발성 메모리에 프로그램된다. 반대로, 불휘발성 메모리들(170, 180, 190) 중에 적어도 어느 하나로부터 읽혀진 독출 데이터(Read data)는 버퍼 매니저(130)의 제 어에 따라 버퍼 메모리(120)에 일시 저장된다. 그리고, 일시 저장된 독출 데이터(Read data)는 호스트(Host) 측으로 전달된다. 본 발명의 버퍼 매니저(130)는 스트리밍 제어부(140)를 포함한다. 스트리밍 제어부(140)는 쓰기 데이터(Write data) 또는 독출 데이터(Read data)를 버퍼 메모리(120)에 일시 저장하되, 스트리밍 방식으로 데이터를 전송한다. SATA 방식의 인터페이싱을 채용하는 반도체 디스크 장치(100)에서는 호스트의 데이터 교환 속도가 반도체 디스크 장치(100)의 내부 데이터 교환 속도보다 훨씬 빠르다. 따라서, 빠른 쓰기 데이터의 저장을 위해서는 버퍼 메모리(120)에 캐시되는 쓰기 데이터(Write data)를 최대한 신속하게 불휘발성 메모리들(170, 180, 190)로 전달해야 한다. 이러한 기능을 스트리밍(Streaming)이라고 한다. 예를 들면, 호스트(Host) 또는 불휘발성 메모리들(170, 180, 190)로부터 하나의 섹터만이라도 버퍼 메모리(120)에 저장되면, 스트리밍 제어부(140)가 자동적으로 인식하여 불휘발성 메모리들(170, 180, 190) 또는 호스트(Host)로 전달한다. 따라서, 버퍼 메모리(120)에 캐시되는 데이터가 적어도 채널당 하나의 페이지가 충족되어야 전송을 시작하는 방식에 비하여, 스트리밍 모드 시에는 전송 속도가 획기적으로 높아질 수 있다.
플래시 버스 컨트롤러(150)는 불휘발성 메모리들(170, 180, 190)과 데이터를 주고받는다. 플래시 버스 컨트롤러(150)는 다양한 불휘발성 메모리들을 지원하도록 구성된다. 플래시 버스 컨트롤러(150)는 버퍼 메모리(120)로부터 전달되는 데이터를 각각의 채널들로 스캐터링(Scattering)한다. 그리고, 각각의 채널을 통하여 제공되는 불휘발성 메모리들(170, 180, 190)로부터 읽혀진 데이터는 플래시 버스 컨 트롤러(150)에 의해서 취합된다. 취합된 읽혀진 데이터는 이후 버퍼 메모리(120)에 저장될 것이다. 플래시 버스 컨트롤러(150)는 프로세싱 유닛(160)의 제어하에 각 채널들의 불휘발성 메모리들로 제공되는 명령어를 전달하는 기능을 포함한다.
프로세싱 유닛(160)은 호스트 및 플래시 버스 컨트롤러(150) 내의 제어 레지스터들(미도시됨)의 값들을 이용하여 임의의 명령을 발생하거나 읽기/쓰기 동작에 필요한 다양한 제어 정보를 제어 레지스터들에 전달한다. 예를 들면, 외부에서 읽기/쓰기 명령이 입력되면, 읽기/쓰기 명령은 호스트 인터페이스(110)의 레지스터(미도시됨)에 저장된다. 호스트 인터페이스(110)는 저장된 명령에 따라 프로세싱 유닛(160)에게 읽기/쓰기 명령이 입력되었음을 알려준다. 이러한 동작은 프로세싱 유닛(160)과 플래시 버스 컨트롤러(150) 사이에서도 발생한다. 프로세싱 유닛(160)은 반도체 디스크 장치(100)을 구동하기 위한 펌웨어에 따라서 각각의 구성들을 제어한다. 그러나, 본 발명의 스트리밍 동작은 펌웨어(Firmware)의 개입 없이 버퍼 매니저(130)에서 하드웨어적으로 직접 발생하기 때문에 프로세싱 유닛(160)의 부담을 증가시키지 않는다.
불휘발성 메모리들(170, 180, 190)은 플래시 버스 컨트롤러(150)와 버퍼 매니저(130)를 통해 버퍼 메모리(120)와 데이터를 교환한다.
본 발명에 따르면, 스트리밍 제어부(140)의 제어에 따라 버퍼 메모리(120)에 저장되는 데이터는 신속하게 타깃 메모리 장치 또는 호스트로 전달된다. 따라서, 버퍼 메모리(120)에 캐시되는 데이터가 페이지 단위를 구성하기 이전에 전송될 수 있어 읽기 또는 쓰기 동작의 퍼포먼스를 높일 수 있다.
도 2는 상술한 도 1의 버퍼 메모리(120)의 메모리 영역들을 간략히 보여주는 메모리 맵이다. 도 2를 참조하면, 버퍼 메모리(120)는 메타 데이터 영역(121)과 쓰기 버퍼 영역(122) 및 읽기 버퍼 영역(123)을 포함한다. 기타 영역(124)은 메타 데이터 영역(121)과 쓰기 버퍼 영역(122) 및 읽기 버퍼 영역(123)을 제외한 모든 영역을 통칭한다.
메타 데이터 영역(121)에는 메모리 시스템의 액세스를 위한 보안 정보, 제어 정보들이 저장된다. 쓰기 버퍼 영역(WBA, 122)은 호스트(Host)로부터 전달되는 쓰기 데이터(Write data)가 일시 저장되는 버퍼 영역이다. 쓰기 버퍼 영역(122)은 각 채널들에 대응하는 복수의 세그먼트들로 분할된다. 각각의 세그먼트들에는 지정된 채널로 저장될 쓰기 데이터들이 저장된다. 예를 들면, 세그먼트 4(Seg_4)에 일시 저장되는 복수의 섹터들은 제 1 채널(Ch.1)에 포함되는 불휘발성 메모리들로 전달된다. 세그먼트 5(Seg_5)에 일시 저장되는 복수의 섹터들은 제 2 채널(Ch.2)에 포함되는 불휘발성 메모리들로 전달된다. 각각의 채널들에 대응하는 복수의 세그먼트들이 비어 있는 경우에는 채널로의 데이터 전송이 발생하지 않는다. 그러나, 어느 하나의 섹터라도 쓰기 버퍼 영역(122)의 세그먼트들에 입력되면, 스트리밍 제어부(140)에 의해서 즉시 불휘발성 메모리들로 전송된다.
읽기 버퍼 영역(RBA, 123)은 불휘발성 메모리들로부터 독출된 읽기 데이터(Read data)가 일시 저장되는 버퍼 영역이다. 읽기 버퍼 영역(123)도 쓰기 버퍼 영역(122)과 마찬가지로 각 채널들에 대응하는 복수의 세그먼트들로 분할된다. 각각의 세그먼트들에는 지정된 채널로부터 입력된 읽기 데이터들이 저장된다. 스트리 밍 제어부(140)의 제어에 따라, 어느 하나의 섹터라도 읽기 버퍼 영역(123)의 세그먼트들에 입력되면, 즉시 호스트 측으로 섹터 데이터를 전송할 수 있다.
도 3은 상술한 도 1에서 설명된 스트리밍 제어부(140)의 구성 요소들을 간략히 보여주는 블록도이다. 도 3을 참조하면, 스트리밍 제어부(140)는 스트리밍 제어 로직(141)과 레지스터 셋(143, Register set)을 포함한다. 그리고, 스트리밍 제어 로직(141)은 버퍼 메모리(120)에 저장된 데이터를 스트리밍 방식으로 처리하기 위한 유효 버퍼 섹터 카운터(VBSC: 142)를 포함한다.
스트리밍 제어 로직(141)은 유효 버퍼 섹터 카운터(142)의 값을 참조하여 쓰기 버퍼 영역(122) 또는 읽기 버퍼 영역(123)에 일시 저장되는 데이터의 스트리밍을 제어한다. 호스트(Host)로부터 불휘발성 메모리로 데이터가 기입되는 경우, 스트리밍 제어 로직(141)은 쓰기 스트리밍(Write streaming)을 수행한다. 쓰기 스트리밍시에, 스트리밍 제어 로직(141)은 각각의 채널들에 할당된 쓰기 버퍼 영역(122, 도 2 참조)의 세그먼트들에 입력되는 섹터 수를 유효 버퍼 섹터 카운트(VBSC) 값으로 카운트한다. 동시에, 스트리밍 제어 로직(141)은 세그먼트들로부터 불휘발성 메모리로 전송된 섹터들의 수는 카운트된 유효 버퍼 섹터 카운트(VBSC) 값으로부터 카운트-다운(Count-down) 한다. 스트리밍 제어 로직(141)은 각각의 세그먼트들에 저장된 섹터들의 수에 해당하는 유효 버퍼 섹터 카운트(VBSC) 값이 비어있는 상태(Empty)면, 데이터의 버퍼링을 활성화한다. 반면에, 스트리밍 제어 로직(141)은 어느 하나의 세그먼트(또는, 채널)에 대응하는 유효 버퍼 섹터 카운트(VBSC) 값이 0보다 큰 것으로 감지되면, 쓰기 버퍼 영역(122)으로부터 불휘 발성 메모리로의 데이터 전송을 실시한다. 따라서, 각 세그먼트들이 비어 있는 상태가 아닌 이상, 세그먼트들 각각에 저장된 섹터는 불휘발성 메모리로 전송된다.
반면에, 호스트로부터 데이터 읽기 명령어가 제공되면, 스트리밍 제어 로직(141)은 불휘발성 메모리로부터 호스트(Host)로 데이터를 전달하기 위한 읽기 스트리밍(Read streaming)을 수행한다. 읽기 스트리밍(Read streaming)에서, 스트리밍 제어 로직(141)은 각각의 채널들에 대응하는 읽기 버퍼 영역(122)의 세그먼트들에 입력되는 섹터들의 수를 유효 버퍼 섹터 카운트(VBSC) 값으로 카운트한다. 동시에, 스트리밍 제어 로직(141)은 세그먼트들로부터 호스트로 전송된 섹터들의 수를 유효 버퍼 섹터 카운트(VBSC)로부터 카운트-다운(Count-down)한다. 스트리밍 제어 로직(141)은 각각의 세그먼트들에 저장된 섹터들의 수에 해당하는 유효 버퍼 섹터 카운트(VBSC) 값이 비어있는 상태(Empty)가 아니면, 호스트로의 데이터 전송을 즉시 활성화한다. 이상에서 스트리밍 제어 로직(141)이 읽기 스트리밍과 쓰기 스트리밍을 수행하는 것으로 설명되었다. 그러나 읽기 스트리밍과 쓰기 스트리밍 각각을 수행하기 위한 별도의 구성으로 스트리밍 제어 로직(141)이 구성될 수 있다.
레지스터 셋(143)은 스트리밍 제어 로직(141)의 동작 파라미터들을 입력받는 레지스터들(144, 145,…, 149)을 포함한다. 시작 채널 레지스터(144)는 스트리밍 동작시 복수의 채널들 중 스트리밍 데이터가 최초로 전달되는 채널을 설정해 준다. 오프셋 레지스터(145)는 스트리밍 동작시에 어드레스(LBA)에 따라서 맵핑되는 물리 블록 어드레스를 지정하는 오프셋(Off set) 값이 저장된다. 스트리밍 활성화시에 스트리밍이 시작되는 채널의 설정에 따라 시작 어드레스에 대응하는 오프셋값이 제 공되어야 한다. 넥스트 채널 레지스터(146)는 스트리밍 동작시에 불휘발성 메모리의 채널들 순서를 설정하기 위한 구성이다. 페이지 버퍼 사이즈 레지스터(147)는 불휘발성 메모리의 채널들 각각의 페이지 크기 값을 저장한다. 루핑 카운트 레지스터(148)는 하나의 채널에 연속적으로 전송되는 섹터 수를 정의한다. 그리고 스트리밍 인에이블 레지스터(149)는 스트리밍 동작의 대상이 되는 채널을 선택한다. 스트리밍 인에이블 레지스터(149)는 스트리밍 동작에 따라 데이터의 쓰기와 읽기를 실시하는 채널들이 선택된다.
레지스터 셋(143)의 값들을 입력하여 스트리밍 동작을 선택적으로 활성화하거나, 또는 다양한 스트리밍 조건들을 설정할 수 있다. 스트리밍 제어 로직(141)은 레지스터 셋(143)에 입력된 레지스터들의 값에 따라 동작하게 되기 때문이다.
도 4는 쓰기 스트리밍 동작시에 유효 버퍼 섹터 카운터(142)의 처리 동작을 보여주는 블록도이다. 도 4를 참조하면, 호스트로부터 입력되는 쓰기 데이터로 32 섹터(32 Sectors)가 연속적으로 입력되는 경우의 유효 버퍼 섹터 카운터(142)의 처리 과정이 도시되어 있다. 단, 유효 버퍼 섹터 카운터(142)의 처리 과정의 설명을 위하여, 버퍼 메모리(120)로부터 불휘발성 메모리로의 데이터 전송은 아직 일어나지 않았다는 가정을 전제로 설명될 것이다. 그러나, 실제의 경우, 버퍼 메모리(120)의 해당 세그먼트에 단 하나의 섹터라도 입력되면, 해당 채널에 대응하는 불휘발성 메모리로 데이터의 전송은 즉시 발생할 것이다. 하나의 세그먼트에 저장되는 섹터들의 크기를 정의하는 버퍼 세그먼트 사이즈(Buffer segment size, 이하 BSS)가 8인 경우를 예로 들어, 좀더 자세히 설명하면 다음과 같다.
호스트(Host)가 연속적으로 32 개의 섹터들을 입력하면, 버퍼 매니저(130)는 버퍼 메모리(120)의 쓰기 버퍼 영역(122)의 할당된 세그먼트들에 입력되는 섹터 데이터를 저장한다. 여기서, 쓰기 버퍼 영역(122)의 세그먼트 할당을 설명하기로 한다. 호스트(Host)로부터 입력되는 섹터들에 대한 세그먼트 할당은 세그먼트 0(Seg_0)로 설정되는 것으로 가정한다. 그리고, 버퍼 메모리로부터 불휘발성 메모리로 전송되는 데이터에 대해서는 제 1 채널(Ch.1)에 할당되는 버퍼 영역을 세그먼트 4(Seg_4)로 할당한다. 그리고, 제 2 채널(Ch.2)에 대응하는 불휘발성 메모리들에 할당되는 버퍼 영역을 세그먼트 5(Seg_5)로 할당한다. 버퍼 메모리로부터 불휘발성 메모리로 전송되는 데이터에 대해서는 제 3 채널(Ch.3)에 대응하는 버퍼 영역을 세그먼트 6(Seg_6)으로 할당한다. 제 4 채널(Ch.4)에 대응하는 버퍼 영역을 세그먼트 7(Seg_7)로 할당한다. 이때, 호스트로부터 연속적으로 32개의 섹터들이 제공되면, 쓰기 버퍼 영역(122)의 세그먼트들 각각의 유효 버퍼 섹터 카운트(VBSC) 값들은 순차적으로 카운트-업된다. 세그먼트 4(Seg_4)에 대응하는 유효 버퍼 섹터 카운트(VBSC4)는 순차적으로 증가하여 버퍼 세그먼트 사이즈(BSS)가 8에 도달하면, 입력되는 섹터들은 세그먼트 5(Seg_5)에 저장된다. 세그먼트 5(Seg_5)에 대응하는 유효 버퍼 섹터 카운트(VBSC5)는 버퍼 세그먼트 사이즈(BSS)에 도달하면, 이후의 섹터들에 대해서는 세그먼트 6(Seg_6)에 저장한다. 세그먼트 6(Seg_6)에 대응하는 유효 버퍼 섹터 카운트(VBSC6)는 버퍼 세그먼트 사이즈(BSS)에 도달하면, 이후의 섹터들에 대해서는 세그먼트 7(Seg_7)에 저장한다. 세그먼트 7(Seg_7)에 대응하는 유효 버퍼 섹터 카운트(VBSC7)는 버퍼 세그먼트 사이즈(BSS)에 도달하면, 32 섹터 들에 대한 버퍼링 및 그에 대응하는 유효 버퍼 섹터 카운트(VBSC) 값의 카운트 동작이 완료된다.
이상의 유효 버퍼 섹터 카운터(142)의 카운트 동작은 버퍼 메모리(120)에서 불휘발성 메모리로의 데이터 전송이 발생하지 않는다는 가정하에서 설명되었다. 그러나, 실제로는 각각의 세그먼트들에 대응하는 유효 버퍼 섹터 카운트(VBSC)의 값이 1이나 그 보다 큰 경우에는 즉시 할당된 채널의 불휘발성 메모리로의 데이터 전송이 발생한다.
도 5a는 본 발명의 스트리밍 동작이 발생하지 않는 경우의 데이터 전송을 간략히 보여주는 타이밍도이다. 도 5a를 참조하면, 호스트로부터 버퍼 메모리(120)에 쓰여지는 시간(t0~t1)과 버퍼 메모리(120)로부터 각각의 불휘발성 메모리들(170, 180, 190)의 채널들로 스캐터링되는 시간(t1 이후)을 예시적으로 보여준다.
스트리밍 동작 없이 각 채널에 할당되는 32개의 섹터들을 불휘발성 메모리에 쓰기 위해, 버퍼 메모리(120)의 쓰기 버퍼 영역(122)에 32개의 섹터들(200, 210, 220, 230)의 기입이 우선적으로 완료되어야 한다. 32개의 섹터들(200, 210, 220, 230)의 쓰기 버퍼 영역(122)으로의 일시 저장 동작이 완료되면, 각각의 채널들에 대응하는 불휘발성 메모리들로 쓰기 명령과 쓰기 데이터가 제공된다. 즉, 세그먼트들(Seg_4, Seg_5, Seg_6, Seg_7) 각각에 저장된 8개의 섹터들 단위로 채널들 각각으로 데이터의 전송이 시작된다. 예를 들면, 제 1 채널(Ch.1)로는 섹터 데이터(200)가, 제 2 채널(Ch.2)로는 섹터 데이터(210)가, 제 3 채널(Ch.3)로는 섹터 데이터(220)가, 그리고 제 4 채널(Ch.4)로는 섹터 데이터(230)가 각각 전송된다. 스트리밍 동작없이 데이터를 쓰기 위해서는, 특정 단위의 데이터(예를 들면, 32 섹터)가 버퍼 메모리(120)의 쓰기 버퍼 영역(122)으로의 기입이 완료되는 시점까지는 각 채널로의 데이터 전송은 발생할 수 없다.
도 5b는 스트리밍 동작에 의한 데이터 쓰기 동작을 간략히 보여주는 타이밍도이다. 도 5b를 참조하면, 호스트로부터 버퍼 메모리(120)에 쓰기 데이터가 입력되자마자 버퍼 메모리(120)로부터 불휘발성 메모리 채널로 데이터 전송이 발생한다. 즉, 호스트로부터 버퍼 메모리(120)의 세그먼트(Seg_4)에 대응하는 영역에 버퍼링되는 섹터 데이터들(250)는 타임(t1)에서 스트리밍 제어 로직(141)에 의해서 감지되고, 유효 버퍼 섹터 카운트(VBSC4)는 카운트-업된다. 8개의 섹터 데이터(250)가 모두 세그먼트(Seg_4)에 대응하는 영역에 버퍼링되면, 유효 버퍼 섹터 카운트(VSBC4)는 8로 설정될 것이다. 이어서, 섹터 데이터들(260), 섹터 데이터들(270) 및 섹터 데이터들(280)이 순차적으로 할당된 세그먼트들(Seg_5, Seg_6, Seg_7)에 대응하는 버퍼 메모리(120)의 영역들에 기록될 것이다. 또한, 각각의 세그먼트들에 대응하는 유효 버퍼 섹터 카운트들(VBSC5, VBSC6, VBSC7)들도 8로 카운트업(Count-up) 될 것이다. 유효 버퍼 섹터 카운트(VBSC) 값이 1 이상의 값을 가지는 즉시, 스트리밍 제어 로직(141)에 의해서 대응하는 채널로의 데이터 전송이 활성화된다. 즉, 유효 버퍼 섹터 카운트(VBSC4)가 최초 1로 카운트-업되는 순간에 스트리밍 제어 로직(141)은 제 1 채널(Ch.1)로의 데이터 전송을 활성화한다. 여기서, 유효 버퍼 섹터 카운트(VBSC4)가 1로 카운트-업되는 시점(t1)부터 섹터 데이터(251)의 전송이 시작되는 시점까지는 어느 정도의 지연이 발생한다. 그리고, 이 미 스트리밍 동작 모드에서는 각각의 채널들로의 쓰기 명령어가 활성화되어 있는 것으로 가정한다. 따라서, 세그먼트(Seg_4)에 할당된 영역에 버퍼링된 섹터 데이터(250)는 제 1 채널(Ch.1)로 시점 (t2) 이후에 전송되기 시작한다. 즉, 각각의 섹터 데이터들(251, 252, 253, 254,…,258)이 제 1 채널(Ch.1)을 경유하여 불휘발성 메모리에 프로그램될 것이다. 세그먼트(Seg_5)에 할당된 영역에 버퍼링된 섹터 데이터(260)는 제 2 채널(Ch.2)로 시점 (t3) 이후에 전송되기 시작한다. 즉, 각각의 섹터 데이터들(261, 262, 263, 264,…,268)이 제 2 채널(Ch.2)을 경유하여 불휘발성 메모리에 프로그램될 것이다. 세그먼트(Seg_6)에 할당된 영역에 버퍼링된 섹터 데이터(270)는 제 3 채널(Ch.3)로 시점 (t4) 이후에 전송되기 시작한다. 즉, 각각의 섹터 데이터들(271, 272, 273, 274,…, 278)이 제 3 채널(Ch.3)을 경유하여 불휘발성 메모리에 프로그램될 것이다. 세그먼트(Seg_7)에 할당된 영역에 버퍼링된 섹터 데이터(280)는 제 4 채널(Ch.4)로 시점 (t5) 이후에 전송되기 시작한다. 즉, 각각의 섹터 데이터들(281, 282, 283, 284,…, 288)이 제 4 채널(Ch.4)을 경유하여 불휘발성 메모리에 프로그램될 것이다.
동일한 루핑 카운트(Looping count = 8) 조건에서 스트리밍 모드를 사용하는 경우, 도 5b에서 설명된 실시예에 따르면 상술한 도 5a에 비하여 불휘발성 메모리로의 쓰기 데이터 전송은 적어도 채널들(Ch.1, Ch.2, Ch.3)에서는 먼저 발생한다. 스트리밍 모드를 사용하지 않을 경우에는 모든 데이터의 전송은 적어도 시점 (t5) 이후에 발생하게 될 것이다. 스트리밍 제어부(140)의 유효 버퍼 섹터 카운트(VBSC)를 이용한 이러한 모니터링을 통해서 펌웨어의 개입 없이 신속한 데이터 전송이 가 능하다.
도 5c는 스트리밍 동작에 의한 본 발명의 또 다른 이점을 보여주는 타이밍도이다. 도 5c를 참조하면, 레지스터 셋(143)의 루핑 카운트(148) 값이 1섹터로 설정된 경우를 예로 본 발명의 쓰기 동작이 개시된다. 호스트로부터 버퍼 메모리(120)에 쓰기 데이터가 입력되자마자 버퍼 메모리(120)로부터 불휘발성 메모리 채널로 데이터 전송이 발생한다. 즉, 호스트로부터 버퍼 메모리(120)의 세그먼트(Seg_4)에 대응하는 영역에 버퍼링되는 섹터 데이터들(250)는 타임(t1)에서 스트리밍 제어 로직(141)에 의해서 감지되고, 유효 버퍼 섹터 카운트(VBSC4)는 카운트-업된다. 그러나, 루핑 카운트(148) 값이 1섹터로 설정되었기 때문에, 섹터 데이터들(250)에서 다음에 입력되는 섹터는 세그먼트(Seg_5)에 대응하는 영역에 버퍼링된다. 순차적으로 각각 입력되는 섹터 데이터들은 세그먼트(Seg_6) 및 세그먼트(Seg_7)에 대응하는 영역에 버퍼링된다. 그리고 각각의 세그먼트들(Seg_5, Seg_6, Seg_7)에 대응하는 유효 버퍼 섹터 카운트들(VBSC5, VBSC6, VBSC7)은 각각 1씩 카운트-업 될 것이다. 결국, 순차적으로 시점들(t1, t2, t3, t4)에서 각 세그먼트들에 버퍼링되는 데이터는 불휘발성 메모리로 기입되기 위하여 각각에 대응하는 채널들로 전송되기 시작할 것이다. 8개의 섹터 데이터들(250)이 각각의 세그먼트당 2개 섹터들로 나누어서 버퍼 메모리에 저장되면, 시점(t5)에서 시점(t7) 동안 불휘발성 메모리로 전송된다. 특히, 하나의 채널에 2개의 섹터들(예를 들면, 251, 255)을 전송하는 채널 전송 루프를 통해서 8섹터 데이터(250)는 각각의 채널들로 스캐터링되어 프로그램될 것이다. 각각의 섹터 데이터들(251, 252, 253, 254,…,258)이 채널 전송 루 프(Ch.1→Ch.2→Ch.3→Ch.4→Ch.1→Ch.2→Ch.3→Ch.4)에 따라 스캐터링된다. 호스트로부터 연속적으로 전송된 8섹터 데이터(260)는 각각의 섹터 데이터들(261, 262, 263, 264,…,268)이 채널 루프(Ch.1→Ch.2→Ch.3→Ch.4→Ch.1→Ch.2→Ch.3→Ch.4)에 따라 스캐터링된다. 8섹터 데이터(270)는 각각의 섹터 데이터들(271, 272, 273, 274,…,278)이 채널 루프(Ch.1→Ch.2→Ch.3→Ch.4→Ch.1→Ch.2→Ch.3→Ch.4)에 따라 스캐터링된다. 8섹터 데이터(280)는 각각의 섹터 데이터들(281, 282, 283, 284,…,288)이 채널 루프(Ch.1→Ch.2→Ch.3→Ch.4→Ch.1→Ch.2→Ch.3→Ch.4)에 따라 스캐터링된다.
이상의 도 5c의 실시예에 따르면, 루핑 카운트(Looping count)를 변경하였을 때 스트리밍 모드 동작의 효율이 더 좋아지게 되는 것을 관찰할 수 있다. 도 5b에서 루핑 카운트의 값을 8로 했을 경우, 데이터 전송이 가장 늦은 채널(Ch.4)의 경우 섹터 데이터들(280)이 버퍼 메모리(120)에 저장된 이후에 채널로의 전송이 시작되었다. 그러나, 루핑 카운트의 값을 1로 설정했을 경우에는 데이터 전송이 가장 늦은 채널(Ch.4)의 데이터 전송의 시작 시점(t4)이 섹터 데이터들(250)의 전송이 완료되기 이전임을 알 수 있다.
도 5c에서 설명된 바에 따르면, 스트리밍 모드를 사용하는 경우에도 레지스터 셋(143)의 적절한 설정을 통해서 데이터 전송의 속도를 더 높일 수 있음을 알 수 있다. 또한, 전송되는 단위 데이터를 섹터(Sector)로 한정하여 설명하였으나, 본 발명은 이에 국한되지 않는다. 즉, 단위 데이터의 크기를 버퍼 메모리(120)의 액세스 단위로 더욱 세분화 할 수 있다면 더 빠른 데이터의 전송이 가능할 것이다.
도 6은 읽기 스트리밍 동작시에 유효 버퍼 섹터 카운터(142)의 처리 동작을 보여주는 블록도이다. 도 6을 참조하면, 호스트로 전송하기 위한 읽기 데이터가 채널들(Ch.1, Ch.2, Ch.3, Ch.4) 각각으로부터 8섹터씩 제공되는 것으로 가정한다. 단, 유효 버퍼 섹터 카운트(142)의 카운트 방법의 설명을 위하여, 버퍼 메모리(120)로부터 호스트로의 데이터 전송은 버퍼 메모리(120)로의 버퍼링이 완료되는 시점 이후라고 가정한다. 그러나 실제의 경우, 버퍼 메모리(120)의 해당 세그먼트에 단 하나의 섹터라도 입력되면, 해당 세그먼트로부터 호스트로의 데이터의 전송은 즉시 활성화될 것이다. 좀더 자세히 설명하면 다음과 같다.
불휘발성 메모리들(170, 180,…, 190)의 각 채널들로부터 8개의 섹터들이 버퍼 메모리(120)에 전송되면, 버퍼 매니저(130)는 버퍼 메모리(120)의 읽기 버퍼 영역(123)의 할당된 세그먼트들에 섹터 데이터를 저장한다. 여기서, 읽기 버퍼 영역(123)의 세그먼트 할당을 설명하기로 한다. 호스트(Host)에 할당되는 세그먼트는 세그먼트 0(Seg_0)로 설정된다. 그리고, 제 1 채널(Ch.1)에 해당하는 불휘발성 메모리로부터 버퍼 메모리(120)로 전송되는 데이터에 할당되는 버퍼 영역을 세그먼트 4(Seg_4)로 할당한다. 그리고, 제 2 채널(Ch.2)에 해당하는 불휘발성 메모리로부터 버퍼 메모리(120)로 전송되는 데이터에 할당되는 버퍼 영역을 세그먼트 5(Seg_5)로 할당한다. 제 3 채널(Ch.3)에 해당하는 불휘발성 메모리로부터 버퍼 메모리(120)로 전송되는 데이터에 할당되는 버퍼 영역을 세그먼트 6(Seg_6)으로 할당한다. 제 4 채널(Ch.4)에 해당하는 불휘발성 메모리로부터 버퍼 메모리(120)로 전송되는 데이터에 할당되는 버퍼 영역을 세그먼트 7(Seg_7)로 할당한다. 이때, 각 채널들로부터 8개의 섹터들이 제공되면, 읽기 버퍼 영역(123)의 세그먼트들 각각에 대응하는 유효 버퍼 섹터 카운트(VBSC)들은 순차적으로 카운트-업된다. 세그먼트 4(Seg_4)에 대응하는 유효 버퍼 섹터 카운트(VBSC4)는 순차적으로 증가하여 버퍼 세그먼트 사이즈(BSS)가 8에 도달하면, 이후 입력되는 8개의 섹터들은 세그먼트 5(Seg_5)에 저장된다. 세그먼트 5(Seg_5)에 대응하는 유효 버퍼 섹터 카운트(VBSC5)는 버퍼 세그먼트 사이즈(BSS)가 8에 도달하면, 이후에 입력되는 8개의 섹터들은 세그먼트 6(Seg_6)에 저장된다. 세그먼트 6(Seg_6)에 대응하는 유효 버퍼 섹터 카운트(VBSC6)는 버퍼 세그먼트 사이즈(BSS)가 8에 도달하면, 이후의 섹터들에 대해서는 세그먼트 7(Seg_7)에 저장된다. 세그먼트 7(Seg_7)에 대응하는 유효 버퍼 섹터 카운트(VBSC7)는 버퍼 세그먼트 사이즈(BSS)가 8에 도달하면, 32 섹터들에 대한 버퍼링 및 그에 대응하는 유효 버퍼 섹터 카운터(142)의 카운트 동작은 완료된다.
이상의 유효 버퍼 섹터 카운트(VBSC)의 카운트 동작은 버퍼 메모리(120)에서 호스트로의 데이터 전송이 발생하지 않는다는 가정하에서 설명되었다. 그러나, 실제로는 각각의 세그먼트들에 대응하는 유효 버퍼 섹터 카운트(VBSC)의 값이 1이나 그 보다 큰 경우에는 즉시 데이터 전송이 발생한다.
도 7a는 본 발명의 스트리밍 동작이 발생하지 않는 경우의 읽기 데이터(Read data)의 호스트 전송을 간략히 보여주는 타이밍도이다. 도 7a를 참조하면, 독출 데이터가 각 불휘발성 메모리 채널들(Ch.1, Ch.2, Ch.3, Ch.4)로부터 버퍼 메모리(120)에 쓰여지는 동작이 시간(T0~T1)에서 도시된다. 그리고 버퍼 메모리(120)로부터 호스트로의 전송되는 데이터(310, 320, 330, 340)에 대해서 도시되었다.
스트리밍 모드없이 불휘발성 메모리 채널들(Ch.1, Ch.2, Ch.3, Ch.4)로부터 제공되는 독출 데이터를 호스트로 전송하기 위해서는, 버퍼 메모리(120)의 읽기 버퍼 영역(123)에 32개의 섹터들(311~318, 321~328, 331~338, 341~348)의 기입이 완료되어야 한다. 32개의 섹터들(311~318, 321~328, 331~338, 341~348)의 불휘발성 메모리 채널들로부터 읽기 버퍼 영역(123)으로의 버퍼링이 시점(T1)에서 완료되면, 할당된 각각의 세그먼트들(Seg_4, Seg_5, Seg_6, Seg_7)에 저장된 섹터들은 호스트로 전송된다. 예를 들면, 세그먼트 4(Seg_4)에 저장된 데이터는 섹터 데이터들(310)를 구성하여 호스트로 전송된다. 세그먼트 5(Seg_5)에 저장된 데이터는 섹터 데이터들(320)으로, 세그먼트 6(Seg_6)에 저장된 데이터는 섹터 데이터들(330)으로, 그리고 세그먼트 7(Seg_7)에 저장된 데이터는 섹터 데이터들(340)으로 호스트에 전송될 것이다.
도시된 바와 같이, 스트리밍 동작없이 데이터를 읽기 위해서는, 특정 단위의 데이터(예를 들면, 32 섹터)가 불휘발성 메모리로부터 버퍼 메모리(120)의 읽기 버퍼 영역(123)에 기입 완료되기까지는 호스트로의 데이터 전송을 발생하지 않는다.
도 7b는 스트리밍 동작에 따른 독출 데이터(Read data)의 호스트로의 전송을 간략히 보여주는 타이밍도이다. 도 7b를 참조하면, 독출 데이터가 각 불휘발성 메모리 채널들(Ch.1, Ch.2, Ch.3, Ch4)로부터 버퍼 메모리(120)에 쓰여지는 동작이 시간(T0~T1)에서 도시된다. 그리고 버퍼 메모리(120)로부터 호스트로의 전송되는 8섹터 데이터들(350, 360, 370, 380)에 대해서 도시되었다. 여기서, 루핑 카운트(Looping count)는 8로 설정된 것으로 가정한다.
스트리밍 동작 모드의 활성화에 응답하여, 각각의 불휘발성 메모리 채널들로부터 제공되는 독출 데이터(351~358, 361~368, 371~378, 381~388)가 버퍼 메모리(120)에 기입된다. 제 1 채널(Ch.1)을 통하여 불휘발성 메모리로부터 독출된 데이터들(351~358)은 세그먼트 4(Seg_4)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 2 채널(Ch.2)을 통하여 불휘발성 메모리로부터 독출된 데이터들(361~368)은 세그먼트 5(Seg_5)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 3 채널(Ch.3)을 통하여 불휘발성 메모리로부터 독출된 데이터들(371~378)은 세그먼트 6(Seg_6)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 4 채널(Ch.4)을 통하여 불휘발성 메모리로부터 독출된 데이터들(381~388)은 세그먼트 7(Seg_7)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 스트리밍 동작이 활성화되어 있기 때문에, 세그먼트4(Seg_4)의 읽기 버퍼 영역(123)에 섹터 데이터들(351~358)이 저장되는 순간부터 유효 버퍼 섹터 카운트(VBSC4)는 1보다 큰 값으로 업데이트될 것이다. 호스트와의 인터페이싱 속도는 불휘발성 메모리의 채널 인터페이싱 속도보다 월등히 빠르다. 따라서, 세그먼트 4(Seg_4)의 읽기 버퍼 영역(123)에 하나의 섹터가 기입되는 즉시 호스트로 전송이 발생할 수 있다. 이 경우, 세그먼트 4(Seg_4)의 읽기 버퍼 영역(123)에 섹터 데이터들(351~358)이 저장되는 시간(T0~T1) 동안, 유효 버퍼 섹터 카운트(VBSC4)는 1과 0을 반복할 것이다. 그러나, 제 2 채널 내지 제 4 채널(Ch.2~Ch.4)에 대응하는 세그먼트들(Seg_5, Seg_6, Seg_7)에 대응하는 유효 버퍼 섹터 카운트들(VBSC5, VBSC6, VBSC7)의 값은 각각 8로 카운트-업 되어 있을 것이다. 따라서, 제 1 채널(Ch.1)로부터 독출된 섹터 데이터들(351~358)의 호스트 전송 은 섹터 데이터(350)과 같이 시점(T′0)에서 시작된다. 즉, 세그먼트 4(Seg_4)에 데이터가 쓰여지는 순간부터 호스트로의 전송이 시작된다. 그리고 제 2 채널 내지 제 4 채널(Ch.2~Ch.4)에 대응하는 세그먼트들(Seg_5, Seg_6, Seg_7)에 저장된 데이터들은 섹터 데이터(350)의 전송이 완료되는 즉시 호스트의 인터페이싱 속도(예를 들면, SATA)로 호스트로 전송된다. 즉, 섹터 데이터들(360, 370, 380)이 고속으로 호스트로 전송된다.
이상의 설명에 따르면, 스트리밍 동작 모드의 활성화에 따라 버퍼 메모리(120)에 독출 데이터가 저장되는 순간부터 독출 데이터의 호스트 전송이 시작된다. 따라서, 스트리밍 동작 모드의 사용을 통하여 고속의 응답속도를 제공하는 반도체 디스크 장치를 구현할 수 있다.
도 7c는 스트리밍 동작에 의한 독출 데이터의 호스트로의 전송의 다른 실시예를 간략히 보여주는 타이밍도이다. 도 7c를 참조하면, 버퍼링 시간 동안(T0~T2) 독출 데이터가 각 불휘발성 메모리 채널들(Ch.1, Ch.2, Ch.3, Ch.4)로부터 버퍼 메모리(120)에 쓰여지는 동작이 개시된다. 그리고 버퍼 메모리(120)로부터 호스트로의 전송되는 섹터 데이터들(351′~388′)이 간략히 도시되었다. 여기서, 루핑 카운트(Looping count)는 1로 설정된 것으로 가정한다.
스트리밍 동작 모드의 활성화에 응답하여, 각각의 불휘발성 메모리 채널들로부터 제공되는 독출 데이터가 버퍼 메모리(120)에 기입된다. 제 1 채널(Ch.1)을 통하여 불휘발성 메모리로부터 독출된 데이터들(351~358)은 세그먼트 4(Seg_4)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 2 채널(Ch.2)을 통하여 불휘발성 메모 리로부터 독출된 데이터들(361~368)은 세그먼트 5(Seg_5)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 3 채널(Ch.3)을 통하여 불휘발성 메모리로부터 독출된 데이터들(371~378)은 세그먼트 6(Seg_6)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 제 4 채널(Ch.4)을 통하여 불휘발성 메모리로부터 독출된 데이터들(381~388)은 세그먼트 7(Seg_7)에 대응하는 읽기 버퍼 영역(123)에 저장된다. 루핑 카운트(Looping count)가 1이기 때문에, 제 1 채널(Ch.1)의 하나의 섹터(351)와 제 2 채널(Ch.2)의 섹터(361), 제 3 채널의 섹터(371) 및 제 4 채널(Ch.4)의 섹터(381)가 세그먼트4(Seg_4)에 우선 쓰여질 것이다. 그러면, 유효 버퍼 섹터 카운트(VBSC4)는 4가 되고, 이는 호스트로의 데이터 전송이 활성화됨을 의미한다. 따라서, 세그먼트 4(Seg_4)에 대응하는 읽기 버퍼 영역(123)에 저장된 섹터들(351′, 361′, 371′ 381′)의 호스트로의 전송이 활성화된다. 버퍼 메모리(120)의 읽기 버퍼 영역(123)에 저장되는 각 채널들의 두 번째 섹터 데이터들(352, 362, 372, 382)에 대해서도 상술한 바와 같은 호스트로의 전송이 동일하게 적용된다. 각 채널의 3번째 내지 8번째 섹터 데이터들(353~358, 363~368, 373~378, 383~388)에 대해서도 이러한 4개 섹터 단위(즉, [353′, 363′, 373′ 383′], [354′, 364′, 374′ 384′],…, [358′, 368′, 378′ 388′])로의 호스트 전송이 동일하게 적용된다. 불휘발성 메모리로부터 버퍼 메모리(120)에 저장되는 시간(T0~T2)에 비하여 4개의 섹터들(358′,368′,378′,388′)이 버퍼 메모리(120)로부터 호스트로 전송되는 시간(T2~T3)만이 추가적으로 소요됨을 알 수 있다.
이상의 설명에 따르면, 스트리밍 모드의 활성화시 루핑 카운트(Looping count)의 변경을 통하여 호스트로의 전송 속도가 높아질 수 있음을 알 수 있다. 따라서, 레지스터 셋(143)의 설정을 통하여 다양한 환경에서 다양한 목적을 위하여 스트리밍의 형태를 제어할 수 있다. 여기서, 전송되는 단위 데이터를 섹터로 설명되었으나, 본 발명은 이에 국한되지 않는다. 즉, 단위 데이터의 크기를 버퍼 메모리(120)의 액세스 단위로 더욱 세분화 할 수 있다면 더 빠른 데이터의 전송이 가능할 것이다.
도 8은 본 발명의 스트리밍 동작 모드를 활성화하기 위한 레지스터 셋(143)의 설정 방법을 간략히 보여주는 순서도이다. 도 8을 참조하면, 스트리밍 동작시 선택되는 환경들이 도시된 절차들에 의해서 입력될 것이다. 이러한 절차들을 이하에서는 도3의 레지스터 셋(143)의 구성을 참조하여 설명하기로 한다.
먼저, 스트리밍 동작 모드에서 최초로 선택되는 채널(Start channel)과, 불휘발성 메모리 장치의 주소 사상(Address mapping)을 위한 오프셋(Offset) 값이 각각 시작 채널 래지스터(144)와 오프셋 값 레지스터(145)에 입력된다(S10). 이어서, 스트리밍 모드 시에 각각의 채널들에 대한 다음 채널(Next channel)들이 다음 채널 레지스터(146)에 입력될 것이다(S20). 그리고 스트리밍 동작 모드 시에 버퍼 메모리(120)로부터 불휘발성 메모리 채널로 스캐터링되는 섹터들의 단위를 정의하는 루핑 카운트(Looping count)가 페이지 버퍼 사이즈(Page buffer size)가 입력된다. 루핑 카운트(Looping count) 및 페이지 버퍼 사이즈(Page buffer size)는 각각 루핑 카운트 레지스터(148) 및 페이지 버퍼 사이즈 레지스터(147)에 입력된다(S30). 이어서, 스트리밍에 사용되는 버퍼 메모리(120)의 세그먼트가 할당될 것이다. 앞서 설명된 실시예에서는 읽기 버퍼 영역에 대해서, 그리고 쓰기 버퍼 영역에 대해서 4개의 세그먼트들(Seg_4, Seg_5, Seg_6, Seg_7)로 할당되고 호스트 측에 대해서는 세그먼트0(Seg_0)가 할당되었다. 그러나, 이것은 설명의 편의를 위하여 선택한 세그먼트 할당의 예시적인 실시예에 불과하다(S40). 그리고, 스트리밍에 사용될 채널들을 선택하여 활성화하기 위하여 스트리밍 채널 레지스터(149)를 설정한다. 즉, 스트리밍 동작 모드에 따라 데이터가 기입되거나 독출되는 불휘발성 메모리 채널들을 선택할 수 있다. 모든 채널들을 다 스트리밍 동작 모드에 사용하지 않고 일부의 채널들에 대해서만 스트리밍 모드로 동작하도록 설정하기 위해 스트리밍 채널 레지스터(149)에 선택된 채널들을 입력한다(S50).
이상의 레지스터 설정 절차를 통하여 본 발명의 스트리밍 동작의 제반 동작 조건들을 설정할 수 있다.
도 9에는 본 발명에 따른 반도체 디스크 장치(SSD)를 장착하는 컴퓨팅 시스템(400)이 개략적으로 도시되어 있다. 본 발명에 따른 컴퓨팅 시스템(400)은 시스템 버스(460)에 전기적으로 연결된 마이크로프로세서(420), 램(430), 사용자 인터페이스(440), 베이스밴드 칩셋(Baseband chipset)과 같은 모뎀(450) 및 반도체 디스크 장치(410)를 포함한다. 반도체 디스크 장치(410)는 SSD 컨트롤러(411), 그리고 불휘발성 메모리 장치(412)를 포함한다. 불휘발성 메모리 장치(412)에는 마이크로프로세서(420)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그보다 큰 정수)가 SSD 컨트롤러(411)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(미도시 됨)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(Application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 본 발명의 반도체 디스크 장치(410)를 통해서 컴퓨팅 시스템(400)은 반도체 디스크 장치(410)로의 고속 액세스가 가능하다. 그리고, 본 발명의 반도체 디스크 장치(410)를 통해서 랜덤 액세스(Random access) 시에도 펌웨어의 개입없이 신속한 데이터 교환이 가능하다.
본 발명의 반도체 디스크 장치(410)는 MMC 카드(Multimedia Card), SD 카드(Secure Digital Card), 마이크로 SD 카드, 메모리 스틱(Memory Stick), ID 카드, PCMCIA 카드, 칩 카드(Chip Card), USB 카드, 스마트 카드(Smart Card), CF 카드(Compact Flash Card) 등으로 더 구성될 수 있다.
불휘발성 메모리 장치(412)는 전력이 차단되어도 저장된 데이터를 유지할 수 있다. 셀룰러 폰, PDA 디지털 카메라, 포터블 게임 콘솔, 그리고 MP3P와 같은 모바일 장치들의 사용 증가에 따라, 불휘발성 메모리 장치(412)는 데이터 스토리지 뿐만 아니라 코드 스토리지로서 널리 사용될 수 있다. 불휘발성 메모리 장치(412) 및 SSD 컨트롤러(411)를 포함하는 반도체 디스크 장치(410)는, 또한, HDTV, DVD, 라우터, 그리고 GPS와 같은 홈 어플리케이션에 사용될 수 있다.
본 발명의 반도체 디스크 장치(410)는 임베디드 시스템에 적용가능하다. 임베디드(Embedded) 시스템은 다른 기기의 일부로 내장된 컴퓨팅 시스템으로써, 일반적인 컴퓨터와 달리 자신을 포함하고 있는 기기에 부과된 특정 목적의 컴퓨팅 작업 만을 수행한다. 이를 위해, 임베디드 시스템은 중앙처리장치를 갖고 운영 체제를 필요로 하며, 운영체제로 애플리케이션을 실행하여 특정 작업을 수행한다. 일반적으로, 임베디드 시스템은 군사용기기, 산업용 기기, 통신 기기, 셋탑 박스, DTV, 디지털 카메라와 같은 가전기기 등을 제어하기 위해 내장된다.
본 발명에 따른 불휘발성 메모리 장치 그리고/또는 SSD 컨트롤러는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1은 본 발명의 반도체 디스크 장치의 구성을 보여주는 블록도;
도 2는 도 1의 버퍼 메모리의 영역 할당을 보여주는 메모리 맵;
도 3은 도 1의 스트리밍 제어부의 구성을 보여주는 블록도;
도 4는 쓰기 버퍼 영역에 대한 유효 버퍼 섹터 카운트값(VSBC)의 업데이트 동작을 보여주는 블록도;
도 5a는 비스트리밍 모드에서의 쓰기 동작을 간략히 보여주는 타이밍도;
도 5b는 스트리밍 모드에서 쓰기 동작의 일 실시예를 보여주는 타이밍도;
도 5c는 스트리밍 모드에서 쓰기 동작의 다른 실시예를 보여주는 타이밍도;
도 6은 읽기 버퍼 영역에 대한 유효 버퍼 섹터 카운트값(VBSC)의 업데이트 동작을 보여주는 블록도;
도 7a는 비스트리밍 모드에서의 읽기 동작을 간략히 보여주는 타이밍도;
도 7b는 스트리밍 모드에서 읽기 동작의 일 실시예를 보여주는 타이밍도;
도 7c는 스트리밍 모드에서 읽기 동작의 다른 실시예를 보여주는 타이밍도;
도 8은 본 발명의 스트리밍 동작 모드를 활성화하기 위한 설정 절차를 보여주는 순서도; 그리고
도 9는 본 발명의 컴퓨팅 시스템을 보여주는 블록도.
*도면의 주요 부분에 대한 부호의 설명*
100 : 반도체 디스크 장치(SSD)
110 : 호스트 인터페이스 120 : 버퍼 메모리
121 : 메타 영역 122 : 쓰기 버퍼 영역
123 : 읽기 버퍼 영역 124 : 기타 영역
130 : 버퍼 매니저 140 : 스트리밍 제어부
141 : 스트리밍 제어 로직 142 : 유효 버퍼 섹터 카운터
143 : 레지스터 셋 144 : 시작 채널 레지스터
145 : 오프셋 레지스터 146 : 다음 채널 레지스터
147 : 페이지 버퍼 사이즈 레지스터
148 : 루핑 카운트 레지스터 149 : 스트리밍 채널 레지스터
150 : 플래시 버스 컨트롤러 160 : 프로세싱 유닛
170, 180, 190 : 불휘발성 메모리
400 : 컴퓨팅 시스템 410 : 반도체 디스크 장치
411 : SSD 컨트롤러 412 : 불휘발성 메모리
420 : 중앙처리장치 430 : 램
440 : 유저 인터페이스 450 : 모뎀
460 : 시스템 버스

Claims (17)

  1. 호스트와 데이터를 교환하는 반도체 디스크 장치에 있어서:
    불휘발성 메모리 장치;
    상기 호스트와 상기 불휘발성 메모리 장치가 교환하는 데이터를 일시 저장하는 버퍼 메모리; 그리고
    상기 데이터를 구성하는 단위 데이터가 상기 버퍼 메모리에 입력되자마자 상기 불휘발성 메모리 장치 또는 상기 호스트로 스트리밍 모드에 따라 전송을 시작하도록 상기 버퍼 메모리를 제어하는 버퍼 매니저를 포함하는 반도체 디스크 장치.
  2. 제 1 항에 있어서,
    상기 버퍼 매니저는 상기 스트리밍 모드를 활성화하고 제어하기 위한 스트리밍 제어부를 포함하는 반도체 디스크 장치.
  3. 제 2 항에 있어서,
    상기 스트리밍 제어부는:
    상기 스트리밍 동작의 설정 정보를 저장하는 레지스터 셋; 그리고
    상기 설정 정보를 참조하여 상기 스트리밍 모드를 실행하는 스트리밍 제어 로직을 포함하는 반도체 디스크 장치.
  4. 제 3 항에 있어서,
    상기 스트리밍 제어 로직은 입출력되는 상기 단위 데이터의 수를 카운트하는 유효 버퍼 섹터 카운터(VBSC)를 포함하는 반도체 디스크 장치.
  5. 제 4 항에 있어서,
    상기 유효 버퍼 섹터 카운터(VBSC)는 상기 단위 데이터가 상기 버퍼 메모리에 입력되면 상기 단위 데이터의 수를 카운터-업하고, 상기 단위 데이터가 상기 버퍼 메모리로부터 출력되면 상기 단위 데이터의 수를 카운트-다운하는 반도체 디스크 장치.
  6. 제 4 항에 있어서,
    상기 버퍼 메모리는 상기 불휘발성 메모리 장치와 복수의 채널을 통해 상기 데이터를 교환하며, 상기 버퍼 메모리는 상기 복수의 채널들 각각에 대응하는 복수의 세그먼트들을 할당받는 반도체 디스크 장치.
  7. 제 6 항에 있어서,
    상기 유효 버퍼 섹터 카운터는 상기 단위 데이터들의 수를 상기 복수의 세그먼트들 각각에 대하여 카운트하는 것을 특징으로 하는 반도체 디스크 장치.
  8. 제 7 항에 있어서,
    상기 스트리밍 제어 로직은 상기 복수의 세그먼트들 각각에 입출력되는 상기 단위 데이터의 수가 1 이상이 되는 시점에 대응하는 채널 또는 호스트로의 데이터의 전송을 시작하도록 상기 버퍼 메모리와 상기 불휘발성 메모리 장치를 제어하는 반도체 디스크 장치.
  9. 제 6 항에 있어서,
    상기 레지스터 셋은:
    상기 스트리밍 모드시 최초로 상기 단위 데이터가 전송/수신되는 채널을 지시하는 시작 채널 레지스터;
    상기 복수의 채널들 각각에 대한 시퀀스를 지시하는 다음 채널 레지스터;
    상기 복수의 채널들로 연속하여 전송/수신되는 상기 단위 데이터의 수를 지시하는 루핑 카운트 레지스터; 그리고
    상기 복수의 채널들 중 상기 스트리밍 모드에 따라 구동되는 채널을 선택하기 위한 스트리밍 채널 레지스터를 포함하는 반도체 디스크 장치.
  10. 제 9 항에 있어서,
    상기 시작 채널 레지스터에 설정된 시작 채널의 지정에 따라 어드레스의 오프셋 값을 제공하기 위한 오프셋 레지스터를 더 포함하는 반도체 디스크 장치.
  11. 제 1 항에 있어서,
    상기 단위 데이터는 섹터 단위의 데이터인 것을 특징으로 하는 반도체 디스크 장치.
  12. 제 1 항에 있어서,
    상기 단위 데이터는 상기 버퍼 메모리의 최소 액세스 단위에 대응하는 것을 특징으로 하는 반도체 디스크 장치.
  13. 버퍼 메모리, 상기 버퍼 메모리와 복수의 채널들로 데이터를 교환하는 불휘발성 메모리 장치를 갖는 반도체 디스크 장치의 데이터 처리 방법에 있어서;
    상기 복수의 채널들 각각에 대응하도록 상기 버퍼 메모리에 할당되는 복수의 세그먼트들 각각에 입출력되는 단위 데이터의 수를 카운트하는 단계; 그리고
    상기 단위 데이터의 수가 1 이상인 경우에 상기 데이터를 상기 복수의 채널들을 통하여 상기 불휘발성 메모리 장치 또는 외부로의 전송을 시작하는 데이터 처리 방법.
  14. 제 13 항에 있어서,
    상기 카운트하는 단계에서,
    상기 단위 데이터의 수는 상기 버퍼 메모리에 입력되는 수는 카운트-업, 상기 버퍼 메모리로부터 출력되는 수는 카운트-다운하는 데이터 처리 방법.
  15. 제 14 항에 있어서,
    상기 카운트된 단위 데이터의 수가 0인 경우에는 상기 버퍼 메모리로부터의 출력은 디스에이블되는 데이터 처리 방법.
  16. 제 13 항에 있어서,
    상기 단위 데이터는 섹터 단위 또는 상기 버퍼 메모리의 최소 액세스 단위에 대응하는 것을 특징으로 하는 데이터 처리 방법.
  17. 데이터 스토리지 장치; 그리고
    상기 데이터 스토리지 장치와 데이터를 교환하는 호스트 시스템을 포함하되, 상기 데이터 스토리지 장치는 청구항 1에 기재된 반도체 디스크 장치인 것을 특징으로 하는 정보 처리 시스템.
KR1020080097200A 2008-10-02 2008-10-02 반도체 디스크 장치 및 그것의 데이터 처리 방법 KR101529290B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080097200A KR101529290B1 (ko) 2008-10-02 2008-10-02 반도체 디스크 장치 및 그것의 데이터 처리 방법
US12/558,632 US9189383B2 (en) 2008-10-02 2009-09-14 Nonvolatile memory system and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080097200A KR101529290B1 (ko) 2008-10-02 2008-10-02 반도체 디스크 장치 및 그것의 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20100037874A true KR20100037874A (ko) 2010-04-12
KR101529290B1 KR101529290B1 (ko) 2015-06-17

Family

ID=42076705

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080097200A KR101529290B1 (ko) 2008-10-02 2008-10-02 반도체 디스크 장치 및 그것의 데이터 처리 방법

Country Status (2)

Country Link
US (1) US9189383B2 (ko)
KR (1) KR101529290B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130098642A (ko) * 2012-02-28 2013-09-05 삼성전자주식회사 저장 장치
US10082961B2 (en) 2014-11-03 2018-09-25 SK Hynix Inc. Memory system having multiple host channel and performing a cache operation and method of operating the same

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2418584A1 (en) 2010-08-13 2012-02-15 Thomson Licensing Method and apparatus for storing at least two data streams into an array of memories, or for reading at least two data streams from an array of memories
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9002509B2 (en) 2010-12-28 2015-04-07 Digital Storage Solutions, Inc. System for writing and dispensing solid-state storage devices
JP2014137721A (ja) * 2013-01-17 2014-07-28 Toshiba Corp 記憶制御装置、データ記憶装置及び記憶制御方法
KR102047495B1 (ko) 2013-02-22 2019-11-21 삼성전자주식회사 클라이언트에서 캐시를 이용하여 서버의 멀티 미디어 컨텐트를 스트리밍 재생하는 방법 및 이를 위한 장치
KR102181441B1 (ko) * 2014-04-15 2020-11-24 에스케이하이닉스 주식회사 복수의 기능 블록들을 포함하는 반도체 장치
US10223006B2 (en) * 2014-10-03 2019-03-05 Drive Thru Technology Inc. Data management system
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
TWI553477B (zh) * 2015-06-12 2016-10-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
KR102473209B1 (ko) 2015-12-14 2022-12-02 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20180055297A (ko) 2016-11-16 2018-05-25 삼성전자주식회사 언맵 리드를 수행하는 메모리 장치 및 메모리 시스템

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4131940A (en) * 1977-07-25 1978-12-26 International Business Machines Corporation Channel data buffer apparatus for a digital data processing system
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5742789A (en) * 1995-12-28 1998-04-21 Emc Corporation Dynamically adaptive data retrieval for a disk drive storage system
US6442647B1 (en) * 1998-08-21 2002-08-27 International Business Machines Corporation Method and apparatus for utilization of plural commands to improve read response times of data from a disk track
WO2002087235A1 (en) * 2001-04-19 2002-10-31 Vividon, Inc. System for applying metric to multimedia files over network
US6754765B1 (en) * 2001-05-14 2004-06-22 Integrated Memory Logic, Inc. Flash memory controller with updateable microcode
US20040162926A1 (en) * 2003-02-14 2004-08-19 Itzhak Levy Serial advanced technology attachment interface
KR100621631B1 (ko) 2005-01-11 2006-09-13 삼성전자주식회사 반도체 디스크 제어 장치
JP2007317047A (ja) 2006-05-29 2007-12-06 Kwok-Yan Leung マルチチャンネルのフラッシュメモリにおけるデータアクセス方法
JP4182993B2 (ja) * 2006-06-30 2008-11-19 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130098642A (ko) * 2012-02-28 2013-09-05 삼성전자주식회사 저장 장치
US8898352B2 (en) 2012-02-28 2014-11-25 Samsung Electronics Co. Ltd. Storage device
US9075531B2 (en) 2012-02-28 2015-07-07 Samsung Electronics Co., Ltd. Storage device
US10082961B2 (en) 2014-11-03 2018-09-25 SK Hynix Inc. Memory system having multiple host channel and performing a cache operation and method of operating the same

Also Published As

Publication number Publication date
US9189383B2 (en) 2015-11-17
KR101529290B1 (ko) 2015-06-17
US20100088463A1 (en) 2010-04-08

Similar Documents

Publication Publication Date Title
KR101529290B1 (ko) 반도체 디스크 장치 및 그것의 데이터 처리 방법
KR101989018B1 (ko) 데이터 저장 장치의 동작 방법
US8417875B2 (en) Non-volatile memory controller processing new request before completing current operation, system including same, and method
US8392662B2 (en) Methods of data management in non-volatile memory devices and related non-volatile memory systems
KR102002921B1 (ko) 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
US8904095B2 (en) Data storage device and operating method thereof
US8555000B2 (en) Data storage device and data storing method thereof
US20130151761A1 (en) Data storage device storing partitioned file between different storage mediums and data management method
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US20140115239A1 (en) Method of managing data in nonvolatile memory device
US8458394B2 (en) Storage device and method of managing a buffer memory of the storage device
US20150242310A1 (en) Data Accessing Method And Data Accessing Apparatus
US10747462B2 (en) Data processing system and operating method thereof
KR20140042458A (ko) 스토리지 시스템의 파일 관리 장치, 파일 관리 방법
US20110271037A1 (en) Storage device performing data invalidation operation and data invalidation method thereof
US20130054882A1 (en) Hybrid hdd storage system and control method
KR20170108334A (ko) 메모리 시스템 및 그 동작 방법
US20150205540A1 (en) Memory system including nonvolatile memory devices and operating method
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
US11550502B2 (en) Apparatus and method for controlling multi-stream program operations performed in a memory block included in a memory system
US9652172B2 (en) Data storage device performing merging process on groups of memory blocks and operation method thereof
KR101581858B1 (ko) 저장 장치 및 그것을 포함하는 정보 처리 시스템
KR20140090416A (ko) 데이터 저장 장치의 동작 방법
KR20200015185A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102583244B1 (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
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 5