KR20130040486A - 저장 장치 및 그것을 이용하는 사용자 장치 - Google Patents

저장 장치 및 그것을 이용하는 사용자 장치 Download PDF

Info

Publication number
KR20130040486A
KR20130040486A KR1020110105290A KR20110105290A KR20130040486A KR 20130040486 A KR20130040486 A KR 20130040486A KR 1020110105290 A KR1020110105290 A KR 1020110105290A KR 20110105290 A KR20110105290 A KR 20110105290A KR 20130040486 A KR20130040486 A KR 20130040486A
Authority
KR
South Korea
Prior art keywords
host
memory
storage device
response signal
write
Prior art date
Application number
KR1020110105290A
Other languages
English (en)
Inventor
심호준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110105290A priority Critical patent/KR20130040486A/ko
Priority to US13/615,470 priority patent/US20130097366A1/en
Publication of KR20130040486A publication Critical patent/KR20130040486A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은 저장 장치 및 저장 장치에 접속되어 사용되는 사용자 장치에 관한 것이다. 본 발명의 실시 예에 따른 저장 장치는 불휘발성 메모리; 및 상기 불휘발성 메모리를 제어하는 제어 유닛을 포함하며, 상기 제어 유닛은 호스트로부터 쓰기 데이터가 수신된 경우, 상기 쓰기 데이터의 수신 성공 여부에 대한 정보를 포함하는 제 1 응답 신호를 발생하고, 상기 쓰기 데이터가 상기 불휘발성 메모리에 프로그램되는 경우, 상기 쓰기 데이터의 프로그램 성공 여부에 대한 정보를 포함하는 제 2 응답 신호를 발생한다. 본 발명의 실시 예에 따른 저장 장치는 프로그램 백업 메모리가 필요치 않아, 작은 면적에 구현 가능하다.

Description

저장 장치 및 그것을 이용하는 사용자 장치{STORAGE DEVICE AND USER DEVICE USING THE SAME}
본 발명은 저장 장치 및 저장 장치를 이용하는 사용자 장치에 관한 것으로, 좀더 자세하게는 불휘발성 메모리 장치 및 불휘발성 메모리 장치에 접속되어 사용되는 사용자 장치에 관한 것이다.
반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어, 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면, MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다. 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가진다. 따라서, 하드디스크를 대신하여, 플래시 메모리를 구비하는 플래시 저장 장치가 저장 장치로 널리 사용되고 있다.
한편, MP3 플레이어, 디지털 카메라, 휴대전화 등의 사용자 장치에 대한 소형화의 요구가 점점 증가하고 있다. 사용자 장치의 소형화 추세에 따라, 사용자 장치에 접속되어 사용되는 플래시 저장 장치에 대한 소형화 요구 또한 점점 증가하고 있다.
본 발명은 작은 면적으로 구현 가능한 저장 장치를 제공하는데 목적이 있다.
본 발명의 실시 예에 따른 저장 장치는 불휘발성 메모리; 및 상기 불휘발성 메모리를 제어하는 제어 유닛을 포함하며, 상기 제어 유닛은 호스트로부터 쓰기 데이터가 수신된 경우, 상기 쓰기 데이터의 수신 성공 여부에 대한 정보를 포함하는 제 1 응답 신호를 발생하고, 상기 쓰기 데이터가 상기 불휘발성 메모리에 프로그램되는 경우, 상기 쓰기 데이터의 프로그램 성공 여부에 대한 정보를 포함하는 제 2 응답 신호를 발생한다.
실시 예로써, 상기 제 1 응답 신호 및 상기 제 2 응답 신호는 상기 호스트로부터의 하나의 쓰기 명령에 응답하여 발생하며, 상기 제어 유닛은 상기 제 1 응답 신호 및 상기 제 2 응답 신호를 순차적으로 상기 호스트에 전송한다.
실시 예로써, 상기 호스트로부터 수신된 상기 쓰기 데이터를 임시로 저장하는 버퍼 메모리를 더 포함하며, 상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 버퍼 메모리로 수신 완료된 시점에서 발생된다.
실시 예로써, 상기 호스트로부터 수신된 상기 쓰기 데이터를 임시로 저장하는 버퍼 메모리; 및 상기 버퍼 메모리로부터 상기 쓰기 데이터를 수신하고, 상기 쓰기 데이터를 상기 불휘발성 메모리에 프로그램하기 전에 임시로 저장하는 페이지 버퍼를 더 포함하며, 상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 페이지 버퍼로 수신 완료된 시점에서 발생된다.
실시 예로써, 상기 제어 유닛은 상기 호스트로부터 제 1 쓰기 명령 및 제 1 쓰기 데이터를 수신하고, 이 후 상기 호스트로부터 제 2 쓰기 명령 및 제 2 쓰기 데이터를 수신하며, 상기 제 1 쓰기 명령에 응답하여, 상기 제 1 쓰기 데이터의 상기 불휘발성 메모리로의 프로그램 성공 여부에 대한 정보를 포함하는 제 3 응답 신호를 발생하고, 상기 제 2 쓰기 명령에 응답하여, 상기 제 2 쓰기 데이터의 수신 성공 여부에 대한 정보를 포함하는 제 4 응답 신호를 발생하며, 상기 제 3 응답 신호와 상기 제 4 응답 신호는 상기 호스트로 동시에 전송된다.
실시 예로써, 상기 제어 유닛은 상기 호스트로부터 더미 쓰기 명령을 수신하고, 상기 더미 쓰기 명령에 응답하여 더미 응답 신호를 발생하고, 상기 제 2 쓰기 명령에 응답하여, 상기 제 2 쓰기 데이터의 상기 불휘발성 메모리의 프로그램 성공 여부에 대한 정보를 포함하는 제 5 응답 신호를 발생하며, 상기 더미 응답 신호와 상기 제 5 응답 신호는 상기 호스트로 동시에 전송된다.
실시 예로써, 상기 제어 유닛은 프로그램 동작 시에 상기 쓰기 데이터를 백업하기 위한 휘발성 메모리를 포함하지 않는 것을 특징으로 한다.
본 발명의 실시 예에 따른 불휘발성 메모리를 포함하는 저장 장치에 접속되어 사용되는 사용자 장치는 프로세싱 유닛; 및 상기 프로세싱 유닛의 제어에 응답하여, 상기 저장 장치에 프로그램될 쓰기 데이터를 임시로 저장하는 호스트 메모리를 포함하며, 상기 프로세싱 유닛은 상기 저장 장치로부터 전송된 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 상기 저장 장치로 재전송할 지의 여부를 결정하고, 상기 저장 장치로부터 전송된 제 2 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터의 삭제 여부를 결정한다.
실시 예로써, 상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송 완료되었는지에 대한 정보를 포함한다.
실시 예로써, 상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송되는 과정에서 에러가 발생한 경우, 상기 프로세싱 유닛은 상기 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 상기 저장 장치에 재전송한다.
실시 예로써, 상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송 완료된 경우, 상기 프로세싱 유닛은 상기 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 유지한다.
실시 예로써, 상기 제 2 응답 신호는 상기 쓰기 데이터가 상기 불휘발성 메모리로 프로그램 완료되었는 지에 대한 정보를 포함한다.
실시 예로써, 상기 쓰기 데이터가 상기 불휘발성 메모리로 프로그램되는 과정에서 에러가 발생한 경우, 상기 프로세싱 유닛은 상기 제 2 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 상기 저장 장치에 재전송한다.
실시 예로써, 상기 쓰기 데이터가 상기 불휘발성 메모리로 프로그램 완료된 경우, 상기 프로세싱 유닛은 상기 제 2 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 삭제한다.
실시 예로써, 상기 프로세싱 유닛은 제 1 쓰기 데이터 및 제 2 쓰기 데이터를 순차적으로 상기 저장 장치에 전송하고, 상기 제 1 쓰기 데이터가 상기 저장 장치로 전송 완료되었는 지의 여부에 대한 정보를 포함하는 제 3 응답 신호와 상기 제 2 쓰기 데이터가 상기 불휘발성 메모리에 프로그램 완료되었는 지의 여부에 대한 정보를 포함하는 제 4 응답 신호를 상기 저장 장치로부터 동시에 수신한다.
본 발명의 실시 예에 따른 저장 장치는 사용자 장치의 호스트 메모리를 프로그램 백업 메모리로 사용한다. 따라서, 본 발명의 실시 예에 따른 저장 장치는 프로그램 백업 메모리가 필요치 않아, 작은 면적에 구현 가능하다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 2는 호스트로부터 쓰기 요청이 있는 경우에, 도 1의 플래시 메모리 시스템의 동작을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 다른 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 4 내지 도 6은 호스트로부터 쓰기 요청이 있는 경우에, 도 3의 플래시 메모리 시스템의 동작을 예시적으로 보여주는 도면이다.
도 7은 도 3의 플래시 메모리 시스템 중 플래시 저장 장치의 동작을 설명하기 위한 순서도이다.
도 8은 도 3의 플래시 메모리 시스템 중 호스트의 동작을 설명하기 위한 순서도이다.
도 9 및 도 10은 복수의 쓰기 명령이 있는 경우, 도 3의 플래시 메모리 시스템의 동작을 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 12는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 메모리 카드에 적용한 예를 보여준다.
도 15는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 솔리드 스테이트 드라이브(SSD)에 적용한 실시 예를 보여준다.
도 16은 도 15에 도시된 SSD 컨트롤러의 구성을 예시적으로 보여주는 블록도이다.
도 17은 본 발명의 실시 예에 따른 호스트를 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예 또는 적용 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 플래시 메모리 시스템(1000)을 보여주는 블록도이다. 도 1의 플래시 메모리 시스템(1000)은 프로그램 페일 메모리(1222)를 구비하며, 프로그램 동작 시에 에러가 발생한 경우에 프로그램 페일 메모리(1222)에 저장된 데이터를 이용하여 프로그램 동작을 다시 수행한다. 도 1을 참조하면, 플래시 메모리 시스템(1000)은 호스트(1100) 및 플래시 저장 장치(1200)를 포함한다.
호스트(1100)는 프로세싱 유닛(Processing Unit, 1110) 및 구동 유닛(1120)을 포함한다. 호스트(1100)는 예를 들어, MP3 플레이어, 디지털 카메라, 휴대전화, 휴대용 컴퓨터, 태블릿 PC 등으로 구현될 수 있으며, 사용자 장치라 칭해질 수 있다.
프로세싱 유닛(1110)은 호스트(1100)의 전반적인 동작을 제어한다. 프로세싱 유닛(1100)은 예를 들어, 중앙 처리 장치(CPU)로 구현될 수 있다. 구동 유닛(1120)은 프로세싱 유닛(1110)의 제어에 따라 플래시 저장 장치(1200)를 구동한다. 구동 유닛(1120)은 호스트(1100)의 소프트웨어 프로그램들을 구동하기 위한 메인 메모리(main memory)로 구성될 수 있다.
구동 유닛(1120)은 애플리케이션(Application, 1121), 파일 시스템(File System, 1122), 장치 드라이버(Device Driver, 1123), 그리고 호스트 메모리(1124)를 포함한다.
애플리케이션(1121)은 응용프로그램(application program)이라고도 하며, 운영 체제(OS) 상에서 실행되는 소프트웨어이다. 예를 들어, 애플리케이션(1121)은 파일(file)의 생성 및 삭제 동작을 지원하도록 프로그램되어 있다.
파일 시스템(1122)은 호스트(1100)에서 사용되는 파일을 관리한다. 파일 시스템(1122)은 예를 들어, 하드 디스크 관점의 섹터(sector) 단위로 호스트(1100)에서 사용되는 파일을 관리한다.
장치 드라이버(1123)는 플래시 저장 장치(1200)가 호스트(1100)와 통신할 수 있도록 하는 프로그램이다. 플래시 저장 장치(1200)를 사용하기 위해서, 호스트(1100)에 플래시 저장 장치(1200)에 맞는 장치 드라이버(1123)가 설치된다.
호스트 메모리(1124)는 플래시 저장 장치(1200)에 쓰거나 플래시 저장 장치(1200)로부터 읽은 데이터를 임시로 저장한다. 또한, 호스트 메모리(1124)는 애플리케이션(1121), 파일 시스템(1122), 그리고 장치 드라이버(1123)를 구동하기 위한 워킹 메모리(working memory)로 사용될 수 있다.
계속해서 도 1을 참조하면, 플래시 저장 장치(1200)는 플래시 메모리(1210), 휘발성 메모리(1220), 그리고 제어 유닛(1230)을 포함한다.
플래시 메모리(1210)는 제어 유닛(1230)의 제어에 따라, 소거 동작, 읽기 동작 또는 프로그램 동작을 수행한다. 플래시 메모리(1210)는 메모리 셀 어레이(1211) 및 페이지 버퍼(1212)를 포함한다.
메모리 셀 어레이(1211)는 데이터를 저장하는 복수의 메모리 셀들을 포함한다. 메모리 셀 어레이(1211)의 하나의 메모리 셀에는 한 비트 또는 두 비트 이상의 데이터가 저장될 수 있다. 하나의 메모리 셀에 한 비트 데이터를 저장할 수 있는 메모리 셀은 싱글 레벨 셀(SLC; Single Level Cell) 또는 싱글 비트 셀(single bit cell)이라 부른다. 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 메모리 셀은 멀티 레벨 셀(MLC; Multi Level Cell) 또는 멀티 비트 셀(multi bit cell)이라 부른다. 메모리 셀 어레이(1211)는 복수의 메모리 블록으로 구성될 수 있으며, 각각의 메모리 블록은 복수의 페이지(page)로 구성될 수 있다.
페이지 버퍼(1212)는 메모리 셀 어레이(1211)에 프로그램될 데이터, 또는 메모리 셀 어레이(1211)로부터 읽은 데이터를 임시로 저장한다. 예를 들어 프로그램 동작이 수행되는 경우, 페이지 버퍼(1212)는 버퍼 메모리(1220)로부터 프로그램될 데이터를 전달받는다. 페이지 버퍼(1212)에 저장된 데이터는 제어 유닛(1230)의 제어에 따라 메모리 셀 어레이(1211)에 프로그램된다.
워킹 메모리(working memory, 1220)는 버퍼 메모리(1221) 및 프로그램 페일 메모리(1222)를 포함한다. 워킹 메모리(1220)는 DRAM, SRAM 등의 휘발성 메모리로 구현될 수 있다.
버퍼 메모리(1221)는 플래시 메모리(1210)로부터 읽은 데이터 또는 호스트(1100)로부터 전달받은 데이터를 임시로 저장한다. 예를 들어 프로그램 동작이 수행되는 경우, 버퍼 메모리(1221)는 호스트(1100)로부터 쓰기 요청된 데이터를 전달받고, 이를 임시로 저장한다. 버퍼 메모리(1221)에 저장된 데이터는 제어 유닛(1230)의 제어에 따라 페이지 버퍼(1212) 및 프로그램 페일 메모리(1222)에 각각 전달된다.
프로그램 페일 메모리(1222)는 플래시 메모리(1210)의 프로그램 페일에 대비하여, 프로그램 동작이 수행될 데이터를 임시로 저장한다. 따라서, 프로그램 페일 메모리(1222)는 프로그램 백업 메모리(program backup memory)라고도 칭해질 수 있다.
자세히 설명하면, 호스트(1100)로부터 쓰기 요청이 있는 경우, 쓰기 요청된 데이터는 버퍼 메모리(1221)에 임시로 저장된다. 버퍼 메모리(122)에 저장된 데이터는 프로그램 페일 메모리(1222) 및 페이지 버퍼(1212)에 각각 전달된다. 따라서, 프로그램 페일 메모리(1222)에 저장된 데이터는 페이지 버퍼(1212)에 저장된 데이터와 동일하다. 따라서, 페이지 버퍼(1212)에 저장된 데이터가 메모리 셀 어레이(1211)로 프로그램되는 과정에서 에러가 발생한 경우, 플래시 메모리(1210)는 프로그램 페일 메모리(1222)에 저장된 데이터를 이용하여 프로그램 동작을 다시 수행할 수 있다.
계속해서 도 1을 참조하면, 제어 유닛(1230)은 중앙처리장치(CPU, 1231), 플래시 변환 계층(FTL, 1232), 플래시 컨트롤러(1233), 그리고 버퍼 컨트롤러(1234)를 포함한다.
중앙처리장치(1231)는 호스트(1100)로부터 입력된 신호를 분석하고 처리한다. 또한, 중앙처리장치(1231)는 플래시 저장 장치(1200)의 전반적인 동작을 제어한다. 플래시 변환 계층(1232)은 호스트(1100)로부터 제공된 논리 어드레스(LA; Logical Address)를 플래시 메모리(1210) 상의 물리 어드레스(PA; Physical Address)로 변환한다. 즉, 플래시 변환 계층(1232)은 호스트(1100)의 관점에서 플래시 저장 장치(1200)를 하드 디스크와 동일하게 사용하기 위한 미들웨어의 역할을 수행한다. 한편, 플래시 컨트롤러(1233)는 플래시 메모리(1210)의 읽기, 쓰기, 소거 동작을 제어하고, 버퍼 컨트롤러(1234)는 워킹 메모리(1221)의 읽기, 쓰기, 소거 동작을 제어한다.
도 2는 호스트(1100)로부터 쓰기 요청이 있는 경우에, 도 1의 플래시 메모리 시스템(1000)의 동작을 예시적으로 보여주는 도면이다.
간략한 설명을 위하여, 호스트(1100)의 파일을 관리 단위인 섹터 단위와 플래시 저장 장치(1200)의 데이터 관리 단위인 페이지 단위가 일치한다고 가정된다. 또한, 버퍼 메모리(1221)의 크기는 하나의 페이지(또는 하나의 섹터)에 해당하는 데이터만을 저장할 수 있다고 가정된다. 또한, 페이지 버퍼(1212)의 크기는 4 개의 페이지들에 해당하는 데이터를 저장하고, 4 개의 페이지들은 한번에 프로그램된다고 가정된다.
이하에서는, 예를 들어, 호스트 메모리(1124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터가 플래시 메모리(1210)에 프로그램되는 경우가 설명된다. 설명의 편의상, 데이터가 저장된 섹터 또는 페이지는 이하에서 빗금으로 표시된다.
도 2를 참조하면, 호스트 메모리(1124)의 제 1 내지 제 4 섹터(S1~S4)에 데이터가 저장되어 있다. 호스트 메모리(1124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터를 플래시 메모리(1210)에 저장하기 위하여, 호스트(1100)는 쓰기 명령(Wrtie_CMD) 및 쓰기 데이터(Write_DATA)를 플래시 저장 장치(1200)에 전송한다. 여기서, 쓰기 데이터(Write_DATA)는 호스트 메모리(1124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터를 의미한다. 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터는 순차적으로 플래시 저장 장치(1200)에 전송된다.
플래시 저장 장치(1200)는 호스트(1100)의 쓰기 명령(Wrtie_CMD)에 응답하여, 쓰기 데이터(Write_DATA)를 플래시 메모리(1210)에 프로그램하기 위한 동작을 수행한다.
구체적으로, 버퍼 메모리(1221)는 호스트(1100)로부터 쓰기 데이터(Write_DATA)를 전달받는다. 버퍼 메모리(1221)의 크기가 하나의 섹터에 해당하는 데이터만을 임시로 저장할 수 있기 때문에, 버퍼 메모리(1221)는 먼저 호스트 메모리(1124)의 제 1 섹터(S1)의 데이터를 전달받고, 이를 임시로 저장한다. 이 후, 도 2에 도시된 바와 같이, 버퍼 메모리(1221)에 저장된 데이터는 플래시 메모리(1210)의 페이지 버퍼(1212) 및 프로그램 페일 메모리(1222)에 각각 전달된다. 따라서, 페이지 버퍼(1212) 및 프로그램 페일 메모리(1222)에는 호스트 메모리(1124)의 제 1 섹터(S1)의 데이터가 각각 저장된다. 이 후, 버퍼 메모리(1221)에 저장된 데이터는 버퍼 컨트롤러(1234)의 제어에 응답하여 삭제되고, 버퍼 메모리(1221)는 프리 상태(free state)가 된다.
동일한 방식으로, 버퍼 메모리(1221)는 호스트 메모리(1124)의 제 2 내지 제 4 섹터(S2~S4)의 데이터를 전달받고, 페이지 버퍼(1212) 및 프로그램 페일 메모리(1222)에는 호스트(1124)의 제 2 내지 제 4 섹터(S2~S4)의 데이터가 각각 저장된다.
쓰기 데이터(Write_DATA)가 호스트(1100)로부터 플래시 저장 장치(1200)로 모두 전송되면, 플래시 저장 장치(1200)는 도 2에 도시된 바와 같이, 응답 신호(RSP)를 호스트(1100)에 전송한다. 호스트(1124)는 응답 신호(RSP)에 응답하여, 호스트(1124)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터를 삭제한다.
만약, 쓰기 데이터(Write_DATA)가 호스트(1100)로부터 플래시 저장 장치(1200)로 전송되는 과정에서 에러가 발생하면, 플래시 저장 장치(1200)는 전송 에러의 정보를 포함하는 응답 신호(RSP)를 호스트(1100)로 전송한다. 호스트(1100)는 응답 신호(RSP)에 응답하여, 호스트 메모리(1124)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터를 플래시 저장 장치(1200)에 재전송한다.
한편, 페이지 버퍼(1212)에 저장된 데이터는 메모리 셀 어레이(1211)로 프로그램된다. 설명의 편의상, 도 2에 도시된 바와 같이, 메모리 셀 어레이(1211)가 제 1 내지 제 4 메모리 블록(1211_1~1211_4)로 구성되고, 각 메모리 블록은 4 개의 페이지들로 구성된다고 가정된다. 이 경우, 예를 들어 도 2에 도시된 바와 같이, 페이지 버퍼(1212)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터는 제 1 내지 제 4 메모리 블록(1211_1~1211_4)의 제 1 페이지(page 1)로 한번에 프로그램된다.
만약, 페이지 버퍼(1212)에 저장된 데이터가 메모리 셀 어레이(1211)로 프로그램되는 과정에서 에러가 발생하면, 플래시 저장 장치(1200)는 프로그램 페일 메모리(1222)에 저장된 데이터를 이용하여 프로그램 동작을 다시 수행한다. 즉, 프로그램 페일 메모리(1222)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터는 페이지 버퍼(1212)에 전송되고, 페이지 버퍼(1212)에 저장된 데이터는 메모리 셀 어레이(1211)로 다시 프로그램된다.
도 1 및 도 2를 참조하여 설명된 바와 같이, 도 1의 플래시 메모리 시스템(1000)은 프로그램 페일 메모리(1222)를 구비하며, 프로그램 동작 시에 에러가 발생한 경우에 프로그램 페일 메모리(1222)에 저장된 데이터를 이용하여 프로그램 동작을 다시 수행한다. 따라서, 도 1의 플래시 메모리 시스템(1000)은 호스트(1100)로부터 쓰기 요청된 데이터를 플래시 저장 장치(1200)에 안정적으로 프로그램할 수 있다.
한편, 도 1의 플래시 메모리 시스템(1000)은 프로그램 페일 메모리(1222)로 사용하기 위한 큰 용량의 휘발성 메모리를 필요로 한다. 예를 들어, 하나의 페이지의 데이터 저장 용량이 8KB인 경우, 도 2의 플래시 저장 장치(1200)는 적어도 32KB 이상의 휘발성 메모리를 필요로 한다. 만약, 플래시 저장 장치(1200)가 4 개의 플래시 메모리를 구비한다면, 플래시 저장 장치(1200)는 적어도 128KB 이상의 휘발성 메모리를 필요로 한다.
이러한 큰 용량의 휘발성 메모리의 필요는 플래시 저장 장치를 소형화하는데 장애로 작용한다. 이하에서는 프로그램 페일 메모리를 구비하지 않으면서, 동시에 호스트로부터 쓰기 요청된 데이터를 안정적으로 프로그램할 수 있는 본 발명의 다른 실시 예가 설명된다.
도 3은 본 발명의 다른 실시 예에 따른 플래시 메모리 시스템(2000)을 보여주는 블록도이다. 도 3의 플래시 메모리 시스템(2000)의 구성은 도 1의 플래시 메모리 시스템(1000)의 구성과 유사하다. 따라서, 유사한 구성 요소는 유사한 참조번호를 이용하여 설명된다. 이하에서는 도 3의 플래시 메모리 시스템(2000)과 도 1의 플래시 메모리 시스템(1000)의 차이점이 중점적으로 설명된다. 도 3을 참조하면, 플래시 메모리 시스템(2000)은 호스트(2100)와 플래시 저장 장치(2200)를 포함한다.
도 3의 플래시 저장 장치(2200)는 도 1의 플래시 메모리 장치(1200)와 달리 프로그램 페일 메모리(1222, 도 1 참조)를 구비하지 않는다. 즉, 도 3에 도시된 바와 같이, 워킹 메모리(2220)의 소정 영역은 버퍼 메모리(2221)로 할당되지나, 프로그램 페일 메모리로는 할당되지 않는다.
도 3의 플래시 저장 장치(2200)는 프로그램 페일 메모리를 구비하지 않는 대신, 호스트 메모리(2124)를 프로그램 백업 메모리로 이용한다. 즉, 프로그램 동작 중 에러가 발생한 경우, 도 3의 플래시 저장 장치(2200)는 호스트 메모리(2124)에 저장된 데이터를 다시 전송받고, 호스트 메모리(2124)로부터 전송된 데이터를 메모리 셀 어레이(2211)로 다시 프로그램한다.
따라서, 도 3의 플래시 저장 장치(2200)는 호스트로부터 쓰기 요청된 데이터를 안정적으로 메모리 셀 어레이(2211)로 프로그램할 수 있다. 또한, 프로그램 페일 메모리를 별도로 구비하지 않기 때문에, 도 3의 플래시 저장 장치(2200)는 작은 크기로 구현가능하다.
호스트 메모리(2124)를 프로그램 백업 메모리로 이용하기 위하여, 플래시 저장 장치(2200)는 호스트(2100)로부터의 하나의 쓰기 명령에 대하여 두 개의 응답 신호를 호스트(2100)로 전송한다. 이 경우, 하나의 응답 신호는 호스트(2100)로부터 플래시 저장 장치(2200)로 전송된 데이터의 전송 성공 여부에 대한 정보를 포함한다. 다른 하나의 응답 신호는 메모리 셀 어레이(2211)로의 프로그램 동작 성공 여부에 대한 정보를 포함한다. 이는 이하의 도 4 내지 도 6을 참조하여, 좀더 자세히 설명된다.
도 4 내지 도 6은 호스트(2100)로부터 쓰기 요청이 있는 경우에, 도 3의 플래시 메모리 시스템(2000)의 동작을 예시적으로 보여주는 도면이다.
간략한 설명을 위하여, 도 2와 유사하게, 호스트(2100)의 파일을 관리 단위인 섹터 단위와 플래시 저장 장치(2200)의 데이터 관리 단위인 페이지 단위가 일치한다고 가정된다. 또한, 버퍼 메모리(2221)의 크기는 하나의 페이지(또는 하나의 섹터)에 해당하는 데이터만을 저장할 수 있다고 가정된다. 또한, 페이지 버퍼(2212)의 크기는 4 개의 페이지들에 해당하는 데이터를 저장하고, 4 개의 페이지들은 한번에 프로그램된다고 가정된다. 또한, 메모리 셀 어레이(2211)가 제 1 내지 제 4 메모리 블록(2211_1~2211_4)로 구성되고, 각 메모리 블록은 4 개의 페이지들로 구성된다고 가정된다.
이하의 도 4 내지 도 6에서는, 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터가 플래시 메모리(2210)에 프로그램되는 경우가 예시적으로 설명된다. 설명의 편의상, 데이터가 저장된 섹터 또는 페이지는 이하에서 빗금으로 표시된다.
도 4를 참조하면, 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)에 데이터가 저장되어 있다. 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터를 플래시 메모리(2210)에 저장하기 위하여, 호스트(2100)는 쓰기 명령(Wrtie_CMD) 및 쓰기 데이터(Write_DATA)를 플래시 저장 장치(2200)에 전송한다. 여기서, 쓰기 데이터(Write_DATA)는 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터를 의미한다. 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터는 순차적으로 플래시 저장 장치(2200)에 전송된다.
버퍼 메모리(2221)는 호스트(1100)로부터 쓰기 데이터(Write_DATA)를 전달받는다. 버퍼 메모리(2221)의 크기가 하나의 섹터에 해당하는 데이터만을 임시로 저장할 수 있기 때문에, 버퍼 메모리(2221)는 먼저 호스트 메모리(2124)의 제 1 섹터(S1)의 데이터를 전달받고, 이를 임시로 저장한다. 이 후, 버퍼 메모리(2221)에 저장된 데이터는 플래시 메모리(2210)의 페이지 버퍼(2212)에 전달된다. 이 후, 버퍼 메모리(1221)에 저장된 데이터는 버퍼 컨트롤러(1234)의 제어에 응답하여 삭제되고, 버퍼 메모리(1221)는 프리 상태(free state)가 된다.
도 5를 참조하면, 동일한 방식으로, 호스트 메모리(2124)의 제 2 내지 제 4 섹터(S2~S4)의 데이터는 버퍼 메모리(2221)를 통하여 페이지 버퍼(2212)에 순차적으로 저장된다. 제 4 섹터(S4)의 데이터를 페이지 버퍼(2212)에 전송한 후, 버퍼 메모리(2221)에 저장된 데이터는 삭제된다. 즉, 버퍼 메모리(2221)는 프리 상태로 변환된다.
쓰기 데이터(Write_DATA)가 플래시 저장 장치(2200)에 모두 전송되면, 플래시 저장 장치(2200)는 제 1 응답 신호(RSP_1)를 호스트(2100)에 전송한다. 예를 들어, 플래시 저장 장치(2200)는 쓰기 데이터(Write_DATA)가 페이지 버퍼(2212)에 모두 전송된 시점에, 제 1 응답 신호(RSP_1)를 발생할 수 있다. 다른 예로, 플래시 저장 장치(2200)는 쓰기 데이터(Write_DATA)가 버퍼 메모리(2221)에 모두 전송된 시점(즉, 제 4 섹터(S4)의 데이터가 버퍼 메모리(2221)에 전송된 시점)에, 제 1 응답 신호(RSP_1)를 발생할 수 있다.
제 1 응답 신호는 호스트(2100)로부터 플래시 저장 장치(2200)로의 쓰기 데이터의 전송 성공 여부에 대한 정보를 포함한다. 예를 들어, 호스트(2100)로부터 플래시 저장 장치(2200)로 쓰기 데이터(Write_DATA)가 전송되는 과정에서 에러가 발생한 경우, 호스트(2100)는 제 1 응답 신호(RSP_1)에 응답하여, 쓰기 데이터(Write_DATA)를 플래시 저장 장치(2200)로 재전송한다. 이 경우, 쓰기 데이터(Write_DATA)는 버퍼 메모리(2221)를 통하여 페이지 버퍼(2212)에 다시 전송된다.
한편, 호스트(2100)로부터 플래시 저장 장치(2200)로 쓰기 데이터(Write_DATA)가 성공적으로 전송된 경우, 호스트(2100)는 새로운 명령(예를 들어, 쓰기, 읽기, 소거 동작)을 발생할 수 있다. 이는 호스트(2100)로부터 플래시 저장 장치(2200)로 쓰기 데이터(Write_DATA)가 성공적으로 전송되었으며, 플래시 저장 장치(2200)의 버퍼 메모리(2221)가 새로운 데이터를 저장할 수 있는 프리 상태이기 때문이다. 따라서, 이 경우, 호스트(2100)는 제 1 응답 신호(RSP_1)에 응답하여 새로운 명령(예를 들어, 쓰기, 읽기, 소거 명령)을 발생할 수 있는 상태로 변환된다. 단, 이 경우, 호스트 메모리(2124)에 저장된 쓰기 데이터(Write_DATA)는 삭제되지 않고, 유지된다.
도 6을 참조하면, 페이지 버퍼(2212)에 저장된 데이터는 메모리 셀 어레이(2211)로 프로그램된다. 예를 들어 도 6에 도시된 바와 같이, 페이지 버퍼(2212)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터는 제 1 내지 제 4 메모리 블록(2211_1~2211_4)의 제 1 페이지(page 1)로 한번에 프로그램된다.
페이지 버퍼(2212)에 저장된 데이터가 메모리 셀 어레이(2211)로 프로그램 완료되면, 플래시 저장 장치(2200)는 제 2 응답 신호(RSP_2)를 호스트(2100)에 전송한다. 제 2 응답 신호(RSP_2)는 페이지 버퍼(2212)로부터 메모리 셀 어레이(2211)로의 프로그램 성공 여부에 대한 정보를 포함한다.
페이지 버퍼(2212)에 저장된 데이터가 메모리 셀 어레이(2211)에 성공적으로 프로그램된 경우, 호스트(2100)는 제 2 응답 신호(RSP_2)에 응답하여, 호스트 메모리(2124)에 저장된 제 1 내지 제 4 섹터(S1~S4)의 데이터를 삭제한다. 즉, 호스트 메모리(2124)는 프리 상태로 된다.
페이지 버퍼(2212)에 저장된 데이터가 메모리 셀 어레이(2211)로 프로그램되는 과정에서 에러가 발생한 경우, 호스트(2100)는 제 2 응답 신호(RSP_2)에 응답하여, 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)의 데이터를 플래시 저장 장치(2200)로 다시 전송한다. 이 경우, 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)의 데이터는 버퍼 메모리(2221)를 통하여 페이지 버퍼(2212)에 저장된다. 페이지 버퍼(2212)에 저장된 데이터는 메모리 셀 어레이(2211)로 다시 프로그램된다.
도 3 내지 도 6을 참조하여 설명된 바와 같이, 도 3의 플래시 저장 장치(2200)는 프로그램 페일 메모리를 구비하지 않는다. 따라서, 도 3의 플래시 저장 장치(2200)는 도 1의 플래시 저장 장치(1200)에 비하여 작은 크기로 구현될 수 있다. 또한, 도 3의 플래시 저장 장치(2200)는 하나의 쓰기 명령에 응답하여, 제 1 및 제 2 응답 신호를 호스트(2100)에 제공한다. 하나의 쓰기 명령에 응답하여 두 갱의 응답 신호를 호스트(2100)에 제공함으로써, 도 3의 플래시 저장 장치(2200)는 호스트(2100)의 호스트 메모리(2124)를 프로그램 백업 메모리로 이용할 수 있다. 따라서, 도 3의 플래시 저장 장치(2200)는 안정적으로 프로그램 동작을 수행할 수 있다.
도 7은 도 3의 플래시 메모리 시스템(2000) 중 플래시 저장 장치(2200)의 동작을 설명하기 위한 순서도이다. 도 7에서는 쓰기 요청이 있는 경우의 도 3의 플래시 저장 장치(2200)의 동작이 설명된다.
S110 단계에서, 쓰기 명령(Write_CMD) 및 쓰기 데이터(Write_DATA)가 호스트(2100)로부터 플래시 저장 장치(2200)에 전송된다. 즉, 호스트(2100)의 프로세싱 유닛(2110)은 쓰기 명령(Write_CMD)을 플래시 저장 장치(2200)에 전송한다. 이 경우, 호스트(2100)의 호스트 메모리(2124)에 저장된 쓰기 데이터(Write_DATA)가 플래시 저장 장치(2200)로 함께 전송된다.
S120 단계에서, 쓰기 데이터(Write_DATA)가 플래시 저장 장치(2200)의 페이지 버퍼(2212)에 전송된다. 즉, 호스트(2100)로부터 전송된 쓰기 데이터(Write_DATA)가 버퍼 메모리(2221)를 통하여 페이지 버퍼(2212)에 순차적으로 저장된다.
S130 단계에서, 플래시 저장 장치(2200)는 제 1 응답 신호(RSP_1)를 발생한다. 즉, 플래시 저장 장치(2200)는 호스트(2100)로부터 플래시 저장 장치(2200)로의 데이터 전송 성공 여부에 대한 정보를 포함하는 제 1 응답 신호(RSP_1)를 호스트(2100)로 전송한다.
만약, 호스트(2100)로부터 플래시 저장 장치(2200)로 데이터가 전송되는 과정에서 에러가 발생한 경우, 플래시 저장 장치(2200)는 "데이터 전송 에러가 발생했음"의 정보를 포함하는 제 1 응답 신호(RSP_1)를 발생한다. 이 경우, 플래시 저장 장치(2200)는 호스트(2100)로부터 쓰기 데이터(Write_DATA)를 다시 전송받는다.
만약, 호스트(2100)로부터 플래시 저장 장치(2200)에 데이터가 성공적으로 전송된 경우, 플래시 저장 장치(2200)는 "데이터가 성공적으로 전송되었음"의 정보를 포함하는 제 1 응답 신호(RSP_1)를 발생한다.
S140 단계에서, 프로그램 동작이 수행된다. 즉, 쓰기 데이터(Write_DATA)가 페이지 버퍼(2212)에 성공적으로 전송된 경우, 페이지 버퍼(2212)에 저장된 데이터가 메모리 셀 어레이(2211)로 프로그램된다.
S150 단계에서, 플래시 저장 장치(2200)는 제 2 응답 신호(RSP_2)를 발생한다. 즉, 플래시 저장 장치(2200)는 메모리 셀 어레이(2211)로의 프로그램 동작의 성공 여부에 대한 정보를 포함하는 제 2 응답 신호(RSP_2)를 호스트(2100)에 전송한다.
만약, 프로그램 동작이 수행되는 과정에서 에러가 발생한 경우, 플래시 저장 장치(2200)는 "프로그램 과정에서 에러가 발생했음"의 정보를 포함하는 제 2 응답 신호(RSP_2)를 발생한다. 이 경우, 플래시 저장 장치(2200)는 호스트(2100)로부터 쓰기 데이터(Write_DATA)를 다시 전송받고, 프로그램 동작을 다시 수행한다.
만약, 프로그램 동작이 성공적으로 수행된 경우, 플래시 저장 장치(2200)는 "프로그램 동작이 성공적으로 수행되었음"의 정보를 포함하는 제 2 응답 신호(RSP_2)를 발생한다.
도 8은 도 3의 플래시 메모리 시스템(2000) 중 호스트(2100)의 동작을 설명하기 위한 순서도이다. 도 8에서는 쓰기 요청이 있는 경우의 도 3의 호스트(2100)의 동작이 설명된다.
S210 단계에서, 호스트(2100)는 쓰기 명령(Write_CMD) 및 쓰기 데이터(Write_DATA)를 플래시 저장 장치(2200)에 전송한다.
S220 단계에서, 호스트(2100)는 플래시 저장 장치(2200)로부터 제 1 응답 신호(RSP_1)를 전달받는다.
S230 단계에서, 호스트(2100)는 데이터 전송 에러가 발생했는 지의 여부를 판단한다. 즉, 호스트(2100)는 제 1 응답 신호(RSP_1)에 기초하여, 호스트(2100)로부터 플래시 저장 장치(2200)로 데이터가 전송되는 과정에서 에러가 발생했는 지의 여부를 판단한다.
데이터 전송 에러가 발생한 경우, 호스트(2100)는 쓰기 데이터(Write_DATA)를 플래시 저장 장치(2200)에 다시 전송한다(S240 단계). 데이터 전송 에러가 발생하지 않은 경우, 호스트(2100)는 새로운 명령을 발생할 수 있는 상태가 된다(S250 단계). 즉, 데이터 전송 에러가 발생하지 않은 경우, 호스트(2100)는 새로운 작업을 플래시 저장 장치(2200)에 요청할 수 있는 대기 상태(ready state)가 된다.
S250 단계에서, 호스트(2100)는 플래시 저장 장치(2200)로부터 제 2 응답 신호(RSP_2)를 전달받는다.
S260 단계에서, 호스트(2100)는 프로그램 페일이 발생했는 지의 여부를 판단한다. 즉, 호스트(2100)는 제 2 응답 신호(RSP_2)에 기초하여, 쓰기 데이터(Write_DATA)가 메모리 셀 어레이(2210)에 프로그램되는 과정에서 에러가 발생했는 지의 여부를 판단한다.
프로그램 페일이 발생한 경우, 호스트(2100)는 쓰기 데이터(Write_DATA)를 플래시 저장 장치(2200)에 다시 전송한다(S240 단계). 프로그램 페일이 발생하지 않은 경우, 호스트(2100)는 호스트 메모리(2124)에 저장된 데이터를 삭제한다. 즉, 호스트 메모리(2124)는 프리 상태로 된다.
도 7 및 도 8을 참조하여 설명된 바와 같이, 플래시 저장 장치(2200)는 프로그램 페일이 발생한 경우, 호스트(2100)의 호스트 메모리(2124)에 저장된 데이터를 이용하여 프로그램 동작을 다시 수행한다. 이를 위하여, 호스트(2100)의 호스트 메모리(2124)에 저장된 데이터는 플래시 저장 장치(2210)의 프로그램 동작이 완료될 때까지 유지된다. 즉, 플래시 저장 장치(2200)는 호스트(2100)의 호스트 메모리(2124)를 프로그램 백업 메모리로 이용함으로써, 작은 크기로 구현될 수 있을뿐 아니라 안정적으로 프로그램 동작을 수행할 수 있다.
한편, 호스트(2100)로부터 플래시 저장 장치(2200)로 복수의 쓰기 명령이 있는 경우, 플래시 저장 장치(2200)에서 발생되는 제 1 응답 신호(RSP_1)와 제 2 응답 신호(RSP_2)는 동시에 호스트(2100)로 전송될 수 있다. 즉, 이전의 쓰기 명령에 응답하여 발생된 제 2 응답 신호(RSP_2)와 현재의 쓰기 명령에 응답하여 발생된 제 1 응답 신호(RSP_1)는 하나의 패킷으로 호스트(2100)에 전송될 수 있다. 이는 이하의 도 9 및 도 10을 참조하여, 좀더 자세히 설명된다.
도 9 및 도 10은 복수의 쓰기 명령이 있는 경우, 도 3의 플래시 메모리 시스템(2000)의 동작을 예시적으로 보여주는 도면이다. 간략한 설명을 위하여, 도 9 및 도 10에서는 제 1 쓰기 명령(Write_CMD(1)) 및 제 1 쓰기 데이터(Write_DATA(1))가 호스트(2100)로부터 플래시 저장 장치(2200)에 전송된다고 가정된다. 이 후, 제 2 쓰기 명령(Write_CMD(2)) 및 제 2 쓰기 데이터(Write_DATA(2))가 호스트(2100)로부터 플래시 저장 장치(2200)에 전송된다고 가정된다.
도 9를 참조하면, 먼저, 호스트(2100)는 제 1 쓰기 명령(Write_CMD(1)) 및 제 1 쓰기 데이터(Write_DATA(1))를 플래시 저장 장치(2200)로 전송한다. 여기서, 제 1 쓰기 데이터(Write_DATA(1))는 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)에 저장된 데이터를 의미한다고 가정된다. 이 경우, 호스트(2100)는 호스트 메모리(2124)의 제 1 내지 제 4 섹터(S1~S4)의 데이터를 플래시 저장 장치(2200)로 전송한다. 플래시 저장 장치(2200)는 제 1 내지 제 4 섹터(S1~S4)의 데이터를 도 9에 도시된 바와 같이, 메모리 셀 어레이(2211)에 프로그램한다. 프로그램 동작이 완료된 이 후, 페이지 버퍼(2212)에 저장된 데이터는 삭제된다.
이 후, 호스트(2100)는 제 2 쓰기 명령(Write_CMD(2)) 및 제 2 쓰기 데이터(Write_DATA(2))를 플래시 저장 장치(2200)로 전송한다. 여기서, 제 2 쓰기 데이터(Write_DATA(2))는 호스트 메모리(2124)의 제 5 내지 제 8 섹터(S5~S8)에 저장된 데이터를 의미한다고 가정된다. 이 경우, 호스트(2100)는 호스트 메모리(2124)의 제 5 내지 제 8 섹터(S5~S8)의 데이터를 플래시 저장 장치(2200)로 전송한다. 플래시 저장 장치(2200)는 제 5 내지 제 8 섹터(S5~S8)의 데이터를 도 9에 도시된 바와 같이, 페이지 버퍼(2212)에 저장한다.
이 경우, 플래시 저장 장치(2200)는 제 1 쓰기 데이터(Write_DATA(1))의 프로그램 페일 여부에 대한 정보를 포함하는 제 2 응답 신호(RSP_2(1))와 제 2 쓰기 데이터(Write_DATA(2))의 데이터 전송 성공 여부에 대한 정보를 포함하는 제 1 응답 신호(RSP_1(2))를 동시에 호스트(2100)로 전송할 수 있다.
즉, 플래시 저장 장치(2200)는 'n-1 번째 쓰기 명령' 및 'n-1 번째 쓰기 데이터'에 대한 'n-1 번째의 제 2 응답 신호'와 'n 번째 쓰기 명령' 및 'n 번째 쓰기 데이터'에 대한 'n 번째의 제 1 응답 신호'를 하나의 패킷으로 호스트(2100)에 전송할 수 있다. 따라서, 플래시 저장 장치(2200)로부터 호스트(2100)로 응답 신호를 전송하기 위하여 소모되는 오버헤드가 감소될 수 있다.
한편, 제 2 응답 신호와 제 1 응답 하나의 패킷으로 전송하는 경우에 있어서, 'n 번째의 쓰기 명령'이 호스트(2100)로부터 플래시 저장 장치(2200)로 전송되지 않으면, 'n-1 번째의 제 2 응답 신호'가 플래시 저장 장치(2200)로부터 호스트(2100)에 전송되지 않을 수 있다. 이러한 위험을 피하기 위하여, 소정 시간 동안 쓰기 명령이 없는 경우, 호스트(2100)는 더미 쓰기 명령을 플래시 저장 장치(2200)에 전송할 수 있다.
예를 들어, 도 10을 참조하면, 제 2 쓰기 명령(Write_CMD(2))이 호스트(2100)로부터 플래시 저장 장치(2200)로 전송된 이 후에, 소정 시간 동안 새로운 쓰기 요청이 없다고 가정된다. 이 경우, '제 2 쓰기 명령(Write_CMD(2)에 대한 제 2 응답 신호(RSP_2(2))'가 호스트(2100)로 전송되지 않을 수 있다.
이러한 문제를 해결하기 위하여, 호스트(2100)는 더미 쓰기 명령(Write_CMD(d)) 및 더미 쓰기 데이터(Write_DATA(d))를 플래시 저장 장치(2200)에 전송한다. 이 경우, '제 2 쓰기 명령(Write_CMD(2))에 대한 제 2 응답 신호(RSP_2(2))'는 '더미 쓰기 명령(Write_CMD(d))에 대한 제 1 응답 신호(RSP_1(d))'와 함께 플래시 저장 장치(2200)로부터 호스트(2100)로 전송될 수 있다.
한편, 도 3 내지 도 9를 참조하여 설명된 플래시 저장 장치는 하나의 플래시 메모리를 포함한다. 다만, 이는 예시적인 것으로 이해되어야 하며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 본 발명의 실시 예에 따른 플래시 저장 장치는 복수의 플래시 메모리를 포함할 수 있다. 이하의 도 11 및 도 12에서는 복수의 플래시 메모리를 포함하는 플래시 저장 장치가 예시적으로 설명된다.
도 11은 본 발명의 실시 예에 따른 플래시 메모리 시스템(3000)을 보여주는 블록도이다. 도 11의 플래시 메모리 시스템(3000)의 구성은 도 3의 플래시 메모리 시스템(2000)의 구성과 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명된다. 이하에서는 도 11의 플래시 메모리 시스템(3000)과 도 3의 플래시 메모리 시스템(2000)의 차이점이 중점적으로 설명된다.
도 11을 참조하면, 플래시 저장 장치(3200)는 복수의 플래시 메모리를 포함한다. 예시적으로, 도 11에서는, 두 개의 플래시 메모리(3210, 3220)를 포함하는 것으로 가정된다. 제 1 플래시 메모리(3210)는 제 1 채널(CH1)을 통하여 제어 유닛(3230)에 연결되고, 제 2 플래시 메모리(3220)는 제 2 채널(CH2)을 통하여 제어 유닛(3230)에 연결된다.
제 1 플래시 메모리(3210)와 제 2 플래시 메모리(3220)가 제 1 채널(CH1) 및 제 2 채널(CH2)을 통하여 병렬적으로 제어 유닛(3230)에 연결되기 때문에, 제어 유닛(3230)은 제 1 플래시 메모리(3210) 및 제 2 플래시 메모리(3220)를 각각 제어할 수 있다.
즉, 제어 유닛(3230)은 쓰기 데이터를 제 1 플래시 메모리(3210)에 프로그램하도록 플래시 저장 장치(3200)를 제어할 수 있다. 이 경우, 제 1 플래시 메모리(3210)로의 프로그램 동작에 대한 프로그램 백업 메모리로 호스트 메모리(3214)가 이용될 수 있다. 마찬가지로, 재어 유닛(3230)은 쓰기 데이터를 제 2 플래시 메모리(3220)에 프로그램하도록 플래시 저장 장치(3200)를 제어할 수 있다. 이 경우, 제 2 플래시 메모리(3220)로의 프로그램 동작에 대한 백업 메모리로 호스트 메모리(3214)가 이용될 수 있다.
한편, 제어 유닛(3230)은 쓰기 데이터가 제 1 플래시 메모리(3210) 및 제 2 플래시 메모리(3220)에 동시에 프로그램되도록 플래시 저장 장치(3200)를 제어할 수 있다. 이 경우, 제 1 플래시 메모리(3210) 및 제 2 플래시 메모리(3220)로의 프로그램 동작에 대한 백업 메모리로 호스트 메모리(3124)가 이용될 수 있다.
도 12는 본 발명의 실시 예에 따른 플래시 메모리 시스템(4000)을 보여주는 블록도이다. 도 12의 플래시 메모리 시스템(4000)의 구성은 도 3의 플래시 메모리 시스템(2000)의 구성과 유사하다. 따라서 유사한 구성요소는 유사한 참조번호를 사용하여 설명된다. 이하에서는 도 12의 플래시 메모리 시스템(4000)과 도 3의 플래시 메모리 시스템(2000)의 차이점이 중점적으로 설명된다.
도 12를 참조하면, 플래시 저장 장치(4200)는 복수의 플래시 메모리를 포함한다. 예시적으로, 도 12에서는, 4 개의 플래시 메모리(4210, 4220, 4230, 4240)를 포함하는 것으로 가정된다. 제 1 및 제 2 플래시 메모리(4210, 4220)는 제 1 채널(CH1)을 통하여 제어 유닛(4230)에 연결되고, 제 3 및 제 4 플래시 메모리(4230, 4240)는 제 2 채널(CH2)을 통하여 제어 유닛(4230)에 연결된다.
제 1 및 제 2 플래시 메모리(4210, 4220)가 제 1 채널(CH1)을 공유하기 때문에, 제어 유닛(4230)은 쓰기 데이터를 제 1 및 제 2 플래시 메모리(4210, 4220)를 동시에 프로그램한다. 이 경우, 제 1 및 제 2 플래시 메모리(4210, 4220)로의 프로그램 동작에 대한 프로그램 백업 메모리로 호스트 메모리(4124)가 이용될 수 있다.
마찬가지로, 제 3 및 제 4 플래시 메모리(4230, 4240)가 제 2 채널(CH2)을 공유하기 때문에, 제어 유닛(4230)은 쓰기 데이터를 제 3 및 제 4 플래시 메모리(4230, 4240)를 동시에 프로그램한다. 이 경우, 제 3 및 제 4 플래시 메모리(4230, 4240)로의 프로그램 동작에 대한 프로그램 백업 메모리로 호스트 메모리(4124)가 이용될 수 있다.
한편, 제어 유닛(4230)은 쓰기 데이터가 제 1 내지 제 4 플래시 메모리(4210~4240)에 동시에 프로그램되도록 플래시 저장 장치(3200)를 제어할 수 있다. 이 경우, 제 1 내지 제 4 플래시 메모리(4210~4240)로의 프로그램 동작에 대한 백업 메모리로 호스트 메모리(4124)가 이용될 수 있다.
도 11 및 도 12를 참조하여 설명된 바와 같이, 본 발명의 기술적 사상은 복수의 플래시 메모리를 포함하는 플래시 저장 장치에 적용될 수 있다. 따라서, 복수의 플래시 메모리를 포함하는 플래시 저장 장치는 호스트의 호스트 메모리를 프로그램 백업 메모리로 이용함으로써, 작은 크기로 구현될 수 있을 뿐 아니라 안정적으로 프로그램 동작을 수행할 수 있다.
한편, 도 3 내지 도 12에서, 본 발명의 기술적 사상은 플래시 저장 장치에 적용되는 것으로 설명되었다. 그러나, 이는 예시적인 것으로 이해되어야 할 것이며, 본 발명의 실시 예는 이에 한정되지 않는다. 예를 들어, 본 발명의 기술적 사상은 PRAM, MRAM, RRAM 등의 불휘발성 메모리를 포함하는 저장장치에 적용 및 응용될 수 있다. 이는 이하의 도 13에서 좀더 자세히 설명된다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템(5000)을 보여주는 블록도이다. 도 13을 참조하면, 메모리 시스템(5000)은 호스트(5100)와 저장 장치(5200)를 포함한다.
도 13의 저장 장치(5200)는 데이터를 저장하는 기억 장치로 불휘발성 메모리(5230)를 포함한다. 여기서, 불휘발성 메모리(5230)는 플래시 메모리뿐 아니라, PRAM, RRAM, MRAM, FRAM 등으로 구현될 수 있다.
호스트(5100)로부터 쓰기 명령이 있는 경우, 저장 장치(5200)는 쓰기 데이터를 불휘발성 메모리(5230)에 프로그램한다. 이 경우, 저장 장치(5200)는 쓰기 데이터의 백업 메모리로 호스트(5100)의 호스트 메모리(5110)를 이용할 수 있다. 또한, 호스트 메모리(5110)를 백업 메모리로 이용하기 위하여, 저장 장치(5200)는 하나의 쓰기 명령에 응답하여 두 개의 응답 신호(RSP_1, RSP_2)를 호스트(5100)로 전송한다.
도 3 내지 도 12를 참조하여 설명된 플래시 저장 장치와 유사하게, 제 1 응답 신호(RSP_1)는 호스트(5100)로부터 저장 장치(5200)로의 데이터 전송 성공 여부에 대한 정보를 포함하고, 제 2 응답 신호(RSP_2)는 불휘발성 메모리(5230)로의 프로그램 동작 성공 여부에 대한 정보를 포함한다. 저장 장치(5200)는 호스트(5100)의 호스트 메모리(5110)를 프로그램 백업 메모리로 이용함으로써, 작은 크기로 구현될 수 있을 뿐 아니라 안정적으로 프로그램 동작을 수행할 수 있다.
한편, 도 3 내지 도 12를 참조하여 설명된, 본 발명의 실시 예에 따른 플래시 메모리 시스템은 여러 가지 제품에 적용 또는 응용될 수 있다. 호스트는 컴퓨터, 디지털 카메라, 휴대폰, MP3 플레이어, PMP, 게임기 등으로 구성될 수 있다. 플래시 저장 장치(1200)는 플래시 메모리를 기반으로 하는 솔리드 스테이트 드라이브(SSD), 플래시 메모리 카드, 또는 플래시 메모리 모듈 등으로 구성될 수 있다. 호스트와 플래시 저장 장치는 ATA, SATA, PATA, USB, SCSI, ESDI, PCI express 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)를 통해 연결될 수 있다.
도 14는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 메모리 카드에 적용한 예를 보여준다. 메모리 카드 시스템(6000)은 호스트(6100)와 메모리 카드(6200)를 포함한다. 호스트(6100)는 호스트 컨트롤러(6110) 및 호스트 접속 유닛(6120)을 포함한다. 메모리 카드(6200)는 카드 접속 유닛(6210), 카드 컨트롤러(6220), 그리고 플래시 메모리(6230)를 포함한다.
호스트 접속 유닛(6120) 및 카드 접속 유닛(6210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(6200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.
호스트(6100)는 메모리 카드(6200)에 데이터를 쓰거나, 메모리 카드(6200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(6110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(6100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(6120)을 통해 메모리 카드(6200)로 전송한다.
카드 컨트롤러(6220)는 카드 접속 유닛(6210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(6220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(6230)에 저장한다. 메모리(6230)는 호스트(6100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(6100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다.
도 14에서, 호스트(6100)는 호스트 메모리를 포함하며, 호스트 컨트롤러(6110) 및 카드 컨트롤러(6220)는 호스트 메모리가 프로그램 백업 메모리로 사용되도록, 호스트(6100) 및 메모리 카드(6200)를 제어할 수 있다.
도 15는 본 발명의 실시 예에 따른 플래시 메모리 시스템을 솔리드 스테이트 드라이브(SSD)에 적용한 실시 예를 보여준다. 도 15를 참조하면, SSD 시스템(7000)은 호스트(7100)와 SSD(7200)를 포함한다. SSD(7200)는 신호 커넥터(signal connector, 7231)를 통해 호스트(7100)와 신호를 주고 받으며, 전원 커넥터(power connector, 7221)를 통해 전원을 입력받는다. SSD(7200)는 복수의 불휘발성 메모리 장치(7201~720n), SSD 컨트롤러(7210), 그리고 보조 전원 장치(7220)를 포함한다.
복수의 불휘발성 메모리 장치(7201~720n)는 SSD(7200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리 장치(7201~720n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(7200)는 주로 플래시 메모리(Flash memory)를 사용하고 있다.
복수의 불휘발성 메모리 장치(7201~720n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(7210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다. 이때 플래시 조각 모음은 복수의 메모리 블록을 하나로 연결하는 슈퍼 블록 형태로 수행되거나, 복수의 페이지를 하나로 연결하는 슈퍼 페이지 형태로 수행될 수 있다.
SSD 컨트롤러(7210)는 신호 커넥터(7231)를 통해 호스트(7100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(7210)는 호스트(7100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(7210)의 내부 구성은 도 16을 참조하여 상세하게 설명된다.
보조 전원 장치(7220)는 전원 커넥터(7221)를 통해 호스트(7100)와 연결된다. 보조 전원 장치(7220)는 호스트(7100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(7220)는 SSD(7200) 내에 위치할 수도 있고, SSD(7200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(7220)는 메인 보드에 위치하며, SSD(7200)에 보조 전원을 제공할 수도 있다.
도 16은 도 15에 도시된 SSD 컨트롤러(7210)의 구성을 예시적으로 보여주는 블록도이다. 도 16을 참조하면, SSD 컨트롤러(7210)는 NVM 인터페이스(7211), 호스트 인터페이스(7212), ECC(7213), 중앙 처리 장치(CPU, 7214), 그리고 버퍼 메모리(7215)를 포함한다.
NVM 인터페이스(7211)는 버퍼 메모리(7215)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(7211)는 불휘발성 메모리 장치(7201~720n)로부터 읽은 데이터를 버퍼 메모리(7215)로 전달한다. 여기에서, NVM 인터페이스(7211)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(7210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.
호스트 인터페이스(7212)는 호스트(7100)의 프로토콜에 대응하여 SSD(7200)와의 인터페이싱을 제공한다. 호스트 인터페이스(7212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(7100)와 통신할 수 있다. 또한, 호스트 인터페이스(7212)는 호스트(7100)가 SSD(7200)를 하드 디스크(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
중앙 처리 장치(7214)는 호스트(7100, 도 16 참조)로부터 입력된 신호(SGL)를 분석하고 처리한다. 중앙 처리 장치(7214)는 호스트 인터페이스(7212)나 NVM 인터페이스(7211)를 통해 호스트(7100)나 불휘발성 메모리(7201~720n)를 제어한다. 중앙 처리 장치(7214)는 SSD(7200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(7201~720n)의 동작을 제어한다.
버퍼 메모리(7215)는 호스트(7100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 또한, 버퍼 메모리(7215)는 불휘발성 메모리 장치(7201~720n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 버퍼 메모리(7215)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(7201~720n)에 저장된다. 버퍼 메모리(7215)에는 DRAM, SRAM 등이 포함될 수 있다.
도 15 및 도 16에 도시된 솔리드 스테이트 드라이브(7000)는 도 3 내지 도 13에서 설명된 플래시 메모리 시스템 또는 메모리 시스템이 적용될 수 있다.
도 17은 본 발명의 실시 예에 따른 호스트를 플래시 메모리 모듈에 구현한 예를 보여주는 블록도이다. 여기에서, 퍼스널 컴퓨터(PC), 노트북 컴퓨터, 휴대폰, PDA(Personal Digital Assistant), 그리고 카메라 등과 같은 호스트는 플래시 메모리 모듈(8100)에 연결되어 사용될 수 있다.
도 17을 참조하면, 플래시 메모리 모듈(8000)은 메모리 시스템(8100), 전원 장치(8200), 보조 전원 장치(8250), 중앙처리장치(8300), 램(8400), 그리고 사용자 인터페이스(8500)를 포함한다. 도 17에 도시된 플래시 메모리 모듈(8000)은 도 3 내지 도 13에서 설명된 플래시 메모리 시스템이 적용될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1000, 2000, 3000, 4000: 플래시 메모리 시스템
1100, 2100, 3100, 4100: 호스트
1200, 2200, 3200, 4200: 플래시 저장 장치
5000: 메모리 시스템
5100: 호스트
5200: 불휘발성 저장 장치
Write_CMD: 쓰기 명령
Write_DATA: 쓰기 데이터
RSP_1: 제 1 응답 신호
RSP_2: 제 2 응답 신호

Claims (10)

  1. 불휘발성 메모리; 및
    상기 불휘발성 메모리를 제어하는 제어 유닛을 포함하며,
    상기 제어 유닛은
    호스트로부터 쓰기 데이터가 수신된 경우, 상기 쓰기 데이터의 수신 성공 여부에 대한 정보를 포함하는 제 1 응답 신호를 발생하고,
    상기 쓰기 데이터가 상기 불휘발성 메모리에 프로그램되는 경우, 상기 쓰기 데이터의 프로그램 성공 여부에 대한 정보를 포함하는 제 2 응답 신호를 발생하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 제 1 응답 신호 및 상기 제 2 응답 신호는 상기 호스트로부터의 하나의 쓰기 명령에 응답하여 발생하며, 상기 제어 유닛은 상기 제 1 응답 신호 및 상기 제 2 응답 신호를 순차적으로 상기 호스트에 전송하는 저장 장치.
  3. 제 1 항에 있어서,
    상기 호스트로부터 수신된 상기 쓰기 데이터를 임시로 저장하는 버퍼 메모리를 더 포함하며,
    상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 버퍼 메모리로 수신 완료된 시점에서 발생되는 저장 장치.
  4. 제 1 항에 있어서,
    상기 호스트로부터 수신된 상기 쓰기 데이터를 임시로 저장하는 버퍼 메모리; 및
    상기 버퍼 메모리로부터 상기 쓰기 데이터를 수신하고, 상기 쓰기 데이터를 상기 불휘발성 메모리에 프로그램하기 전에 임시로 저장하는 페이지 버퍼를 더 포함하며,
    상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 페이지 버퍼로 수신 완료된 시점에서 발생되는 저장 장치.
  5. 제 1 항에 있어서,
    상기 제어 유닛은
    상기 호스트로부터 제 1 쓰기 명령 및 제 1 쓰기 데이터를 수신하고, 이 후 상기 호스트로부터 제 2 쓰기 명령 및 제 2 쓰기 데이터를 수신하며,
    상기 제 1 쓰기 명령에 응답하여, 상기 제 1 쓰기 데이터의 상기 불휘발성 메모리로의 프로그램 성공 여부에 대한 정보를 포함하는 제 3 응답 신호를 발생하고,
    상기 제 2 쓰기 명령에 응답하여, 상기 제 2 쓰기 데이터의 수신 성공 여부에 대한 정보를 포함하는 제 4 응답 신호를 발생하며,
    상기 제 3 응답 신호와 상기 제 4 응답 신호는 상기 호스트로 동시에 전송되는 저장 장치.
  6. 제 5 항에 있어서,
    상기 제어 유닛은
    상기 호스트로부터 더미 쓰기 명령을 수신하고, 상기 더미 쓰기 명령에 응답하여 더미 응답 신호를 발생하고,
    상기 제 2 쓰기 명령에 응답하여, 상기 제 2 쓰기 데이터의 상기 불휘발성 메모리의 프로그램 성공 여부에 대한 정보를 포함하는 제 5 응답 신호를 발생하며,
    상기 더미 응답 신호와 상기 제 5 응답 신호는 상기 호스트로 동시에 전송되는 저장 장치.
  7. 불휘발성 메모리를 포함하는 저장 장치에 접속되어 사용되는 사용자 장치에 있어서:
    프로세싱 유닛; 및
    상기 프로세싱 유닛의 제어에 응답하여, 상기 저장 장치에 프로그램될 쓰기 데이터를 임시로 저장하는 호스트 메모리를 포함하며,
    상기 프로세싱 유닛은
    상기 저장 장치로부터 전송된 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 상기 저장 장치로 재전송할 지의 여부를 결정하고,
    상기 저장 장치로부터 전송된 제 2 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터의 삭제 여부를 결정하는 사용자 장치.
  8. 제 7 항에 있어서,
    상기 제 1 응답 신호는 상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송 완료되었는지에 대한 정보를 포함하는 사용자 장치.
  9. 제 8 항에 있어서,
    상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송되는 과정에서 에러가 발생한 경우, 상기 프로세싱 유닛은 상기 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 상기 저장 장치에 재전송하는 사용자 장치.
  10. 제 8 항에 있어서,
    상기 쓰기 데이터가 상기 호스트 메모리로부터 상기 저장 장치로 전송 완료된 경우, 상기 프로세싱 유닛은 상기 제 1 응답 신호에 기초하여, 상기 호스트 메모리에 저장된 상기 쓰기 데이터를 유지하는 사용자 장치.

KR1020110105290A 2011-10-14 2011-10-14 저장 장치 및 그것을 이용하는 사용자 장치 KR20130040486A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110105290A KR20130040486A (ko) 2011-10-14 2011-10-14 저장 장치 및 그것을 이용하는 사용자 장치
US13/615,470 US20130097366A1 (en) 2011-10-14 2012-09-13 Storage device and user device using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110105290A KR20130040486A (ko) 2011-10-14 2011-10-14 저장 장치 및 그것을 이용하는 사용자 장치

Publications (1)

Publication Number Publication Date
KR20130040486A true KR20130040486A (ko) 2013-04-24

Family

ID=48086785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110105290A KR20130040486A (ko) 2011-10-14 2011-10-14 저장 장치 및 그것을 이용하는 사용자 장치

Country Status (2)

Country Link
US (1) US20130097366A1 (ko)
KR (1) KR20130040486A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160046148A (ko) * 2014-10-20 2016-04-28 삼성전자주식회사 데이터 처리 시스템 및 이의 동작 방법
KR20180023311A (ko) * 2016-08-25 2018-03-07 에스케이하이닉스 주식회사 데이터 저장 장치
US10496281B2 (en) 2014-11-12 2019-12-03 Samsung Electronics Co., Ltd. Data storage device, data processing system and method of operation

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569320B2 (en) * 2010-12-01 2017-02-14 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US9274866B2 (en) 2013-12-09 2016-03-01 International Business Machines Corporation Programming non-volatile memory using a relaxed dwell time
KR20170076878A (ko) * 2015-12-24 2017-07-05 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102496988B1 (ko) * 2016-02-19 2023-02-09 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
KR20180108939A (ko) * 2017-03-23 2018-10-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20210066631A (ko) * 2019-11-28 2021-06-07 삼성전자주식회사 메모리에 데이터를 기입하기 위한 장치 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7441081B2 (en) * 2004-12-29 2008-10-21 Lsi Corporation Write-back caching for disk drives
US7917719B2 (en) * 2006-12-04 2011-03-29 Sandisk Corporation Portable module interface with timeout prevention by dummy blocks
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160046148A (ko) * 2014-10-20 2016-04-28 삼성전자주식회사 데이터 처리 시스템 및 이의 동작 방법
US10496281B2 (en) 2014-11-12 2019-12-03 Samsung Electronics Co., Ltd. Data storage device, data processing system and method of operation
KR20180023311A (ko) * 2016-08-25 2018-03-07 에스케이하이닉스 주식회사 데이터 저장 장치

Also Published As

Publication number Publication date
US20130097366A1 (en) 2013-04-18

Similar Documents

Publication Publication Date Title
US11593259B2 (en) Directed sanitization of memory
KR20130040486A (ko) 저장 장치 및 그것을 이용하는 사용자 장치
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
US9122611B2 (en) Method for giving read commands and reading data, and controller and storage system using the same
KR101638061B1 (ko) 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
US9223696B2 (en) Data storage device for holding erasure of victim block having valid page copied to merge block and method of operating the same
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
KR20110097438A (ko) 메모리 시스템, 그리고 그것의 동작 방법
KR20150138528A (ko) 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
KR20190102781A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US20220269602A1 (en) Storage device and storage system including the same
KR20150006613A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210144249A (ko) 저장 장치 및 이의 동작 방법
KR20200029085A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20220103340A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102474937B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210068734A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111309246A (zh) 存储装置及其操作方法
KR20170031311A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20200394134A1 (en) Data storage device and operating method thereof
KR20210156010A (ko) 저장 장치 및 그 동작 방법
KR20150059056A (ko) 호스트 ftl을 갖는 사용자 장치 및 그것의 소거 카운트 전송 방법
KR20210056625A (ko) 데이터 저장 장치 및 이를 이용한 스토리지 시스템
KR20140090416A (ko) 데이터 저장 장치의 동작 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid