KR20110121897A - 사용자 장치 및 그것의 프로그램 페일 처리 방법 - Google Patents

사용자 장치 및 그것의 프로그램 페일 처리 방법 Download PDF

Info

Publication number
KR20110121897A
KR20110121897A KR1020100041401A KR20100041401A KR20110121897A KR 20110121897 A KR20110121897 A KR 20110121897A KR 1020100041401 A KR1020100041401 A KR 1020100041401A KR 20100041401 A KR20100041401 A KR 20100041401A KR 20110121897 A KR20110121897 A KR 20110121897A
Authority
KR
South Korea
Prior art keywords
program
flash memory
data
cache latch
memory
Prior art date
Application number
KR1020100041401A
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 KR1020100041401A priority Critical patent/KR20110121897A/ko
Priority to US13/074,224 priority patent/US20110271041A1/en
Publication of KR20110121897A publication Critical patent/KR20110121897A/ko

Links

Images

Classifications

    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

Landscapes

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

Abstract

본 발명의 프로그램 페일 처리 방법은, 기록 동작에서 프로그램 페일이 발생되면 플래시 메모리의 예비 영역을 프리 블록으로 할당하는 단계, 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계, 상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계, 그리고 상기 캐시 래치로부터 읽어온 상기 프로그램 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 재기록하는 단계를 포함할 수 있다.

Description

사용자 장치 및 그것의 프로그램 페일 처리 방법{USER DEVICE AND PROGRAM FAIL PROCERSSING METHOD THEREOF}
본 발명은 사용자 장치에 관한 것으로, 좀 더 구체적으로는 불휘발성 메모리를 기반으로 하는 저장 장치를 구비한 사용자 장치 및 그것의 프로그램 페일 처리 방법에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치(Volatile semiconductor memory device)와 불휘발성 반도체 메모리 장치(Non-volatile semiconductor memory device)로 구분될 수 있다. 휘발성 반도체 메모리 장치는 읽고 쓰는 속도가 빠르지만 전원 공급이 끊기면 저장된 내용이 사라져 버리는 단점이 있다. 반면에 불휘발성 반도체 메모리 장치는 전원 공급이 중단되더라도 그 내용을 보존한다. 그러므로, 불휘발성 반도체 메모리 장치는 전원이 공급되었는지의 여부에 관계없이 보존되어야 할 내용을 기억시키는 데 쓰인다.
불휘발성 반도체 메모리 장치로는 마스크 롬(Mask read-only memory, MROM), 프로그램 가능한 롬(Programmable read-only memory, PROM), 소거 및 프로그램 가능한 롬(Erasable programmable read-only memory, EPROM), 전기적으로 소거 및 프로그램 가능한 롬(Electrically erasable programmable read-only memory, EEPROM) 등이 있다.
불휘발성 메모리들 중에서도 플래시 메모리는 컴퓨터, 휴대폰, PDA, 디지털카메라, 캠코더, 보이스 리코더, MP3 플레이어, 개인용 휴대 단말기(PDA), 휴대용 컴퓨터(Handheld PC), 게임기, 팩스, 스캐너, 프린터 등(이하, '호스트'라 함)과 같은 정보기기들의 음성 및 영상 데이터 저장매체로서 널리 사용되고 있다.
또한, 플래시 메모리는 예를 들면 멀티미디어 카드(MMC), 시큐어 디지털 카드(SD card), 스마트미디어 카드(Smartmedia Card)나 컴팩트 플래시카드(Compact Flash Card) 등과 같이 탈착 가능한 카드 형태로 구성될 수 있고, USB 메모리, 솔리드 스테이트 드라이브(SSD) 등과 같은 대용량 저장 장치에 주 저장 장치로서 포함될 수 있다. 플래시 메모리를 포함하는 저장 장치는 사용자의 요구에 따라 사용자 장치(user device)에 삽입되어 이용될 수 있다. 사용자 장치들의 기능이 다양화됨에 따라, 플래시 메모리에 저장되는 데이터, 프로그램, 및 동작 모드들의 종류가 다양해지고 있으며, 프로그램의 정확도에 대한 요구가 증가되고 있다.
본 발명의 목적은 프로그램의 정확도를 높일 수 있는 사용자 장치 및 그것의 프로그램 페일 처리 방법을 제공하는데 있다.
본 발명의 다른 목적은 저용량의 버퍼 메모리를 구비하고도 프로그램 페일 처리를 효과적으로 수행할 수 있는 사용자 장치 및 그것의 프로그램 페일 처리 방법을 제공하는데 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 프로그램 페일 처리 방법은, 기록 동작에서 프로그램 페일이 발생되면 플래시 메모리의 예비 영역을 프리 블록으로 할당하는 단계; 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계; 상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계; 그리고 상기 캐시 래치로부터 읽어온 상기 프로그램 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 재기록하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 기록 동작이 수행되기 이전에 상기 캐시 래치의 리셋을 금지하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는, 상기 읽어온 프로그램 데이터를 상기 플래시 메모리 외부의 데이터 저장 영역에 저장하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는, 상기 읽어온 프로그램 데이터를 상기 플래시 메모리 내부의 데이터 저장 영역에 저장하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 플래시 메모리 내부의 데이터 저장 영역은, 상기 플래시 메모리에 구비된 임시 블록 또는 버퍼일 수 있다
이 실시예에 있어서, 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는, 상기 읽어온 프로그램 데이터를 상기 페이지 버퍼의 프로그램 래치로 카피하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 유효 데이터는 카피백 동작을 통해 상기 프리 블록의 대응되는 영역으로 카피될 수 있다.
이 실시예에 있어서, 상기 카피백 동작 시 상기 유효 데이터의 페이지 어드레스의 블록 어드레스의 맵핑 정보는 변경되고 페이지 어드레스 맵핑 정보는 그대로 유지될 수 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 프로그램 페일 처리 방법은, 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치의 리셋을 금지하는 단계; 상기 캐시 래치에 로딩된 프로그램 데이터를 상기 페이지 버퍼의 프로그램 버퍼로 로딩하여 기록 동작을 수행하는 단계; 상기 기록 동작에서 프로그램 페일이 발생되면 플래시 메모리의 예비 영역을 프리 블록으로 할당하는 단계; 상기 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계; 상기 페이지 버퍼로부터 읽어온 데이터를 버퍼링하는 단계; 상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계; 그리고 버퍼링된 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 재기록하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 캐시 래치의 리셋을 금지하는 단계는 마지막 페이지의 기록 동작에 적용될 수 있다.
이 실시예에 있어서, 상기 페이지 버퍼로부터 읽어온 데이터는 상기 플래시 메모리 외부의 데이터 저장 영역에 버퍼링될 수 있다.
이 실시예에 있어서, 상기 페이지 버퍼로부터 읽어온 데이터는 상기 플래시 메모리 내부의 데이터 저장 영역에 버퍼링될 수 있다.
이 실시예에 있어서, 상기 플래시 메모리 내부의 데이터 저장 영역은, 상기 플래시 메모리에 구비된 임시 블록 또는 버퍼일 수 있다.
이 실시예에 있어서, 상기 유효 데이터는 카피백 동작을 통해 상기 프리 블록의 대응되는 영역으로 카피될 수 있다.
이 실시예에 있어서, 상기 카피백 동작 시 상기 유효 데이터의 페이지 어드레스의 블록 어드레스의 맵핑 정보는 변경되고 페이지 어드레스 맵핑 정보는 그대로 유지될 수 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 프로그램 페일 처리 방법은, 기록 동작에서 프로그램 페일이 발생되면 플래시 메모리의 예비 영역을 프리 블록으로 할당하는 단계; 상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 상기 페이지 버퍼의 프로그램 래치로 카피하는 단계; 상기 프로그램 래치로 카피된 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계; 그리고 상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 기록 동작이 수행되기 이전에 상기 캐시 래치의 리셋을 금지하는 단계를 포함할 수 있다.
이 실시예에 있어서, 상기 캐기 래치의 데이터는 상기 페이지 버퍼 외부로 출력되지 않을 수 있다.
상기의 과제를 이루기 위하여 본 발명에 의한 사용자 장치는, 이전에 기록된 프로그램 데이터의 프로그램 페일 여부가 확인될 때까지 캐시 래치에 저장된 프로그램 데이터가 유지되는 페이지 버퍼를 구비한 플래시 메모리; 그리고 상기 플래시 메모리의 기록 동작을 제어하는 호스트를 포함하며, 상기 호스트는, 상기 프로그램 페일이 검출된 경우 상기 캐시 래치에 저장되어 있는 상기 프로그램 데이터가 새로 할당된 메모리 블록으로 재기록 되도록 제어할 수 있다.
이 실시예에 있어서, 상기 호스트는 상기 프로그램 페일이 검출될 때마다 상기 플래시 메모리의 예비 영역을 프리 블록으로 할당하고, 상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터가 상기 할당된 프리 블록의 대응되는 영역으로 카피되도록 제어할 수 있다.
본 발명에 따르면, 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치를 이용하여 이전의 프로그램 데이터를 백업할 수 있고, 프로그램 페일이 발생하였을 때에는 캐시 래치에 백업되어 있는 프로그램 데이터를 이용하여 재 기록 동작을 수행할 수 있게 된다.
따라서, 호스트 또는 컨트롤러 측에 구비된 백업 버퍼에 프로그램 데이터가 모두 저장되어 있지 않거나, 복수의 플래시 메모리들에 대응되는 이전의 프로그램 데이터를 모두 저장 할 만큼 백업 버퍼의 용량이 충분히 크지 않더라도 프로그램 페일이 발생된 데이터에 대한 재 기록 동작을 수행할 수 있게 된다. 그 결과, 프로그램의 정확도를 높일 수 있고, 프로그램 페일 처리를 효과적으로 수행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장장치 및 이를 구비한 사용자 장치의 구성을 예시적으로 보여주는 도면이다.
도 2는 도 1에 도시된 저장장치 컨트롤러의 일 실시예에 따른 구성을 예시적으로 보여주는 도면이다.
도 3은 본 발명의 다른 실시예에 따른 저장장치 및 이를 구비한 사용자 장치의 구성을 예시적으로 보여주는 도면이다.
도 4는 도 1 및 도 3에 도시된 플래시 메모리 칩/코어의 상세 블록도이다.
도 5는 기록 동작시 도 4에 도시된 페이지 버퍼의 데이터의 상태를 예시적으로 보여주는 도면이다.
도 6은 도 1 및 도 3에 도시된 사용자 장치의 소프트웨어 구조를 보여주는 블록도이다.
도 7은 도 6에 도시된 소프트웨어 구조에 따른 어드레스 맵핑 동작을 설명하기 위한 도면이다.
도 8 및 도 9는 프로그램 페일의 발생시 수행되는 배드 블록의 처리 방법을 설명하기 위한 도면이다.
도 10은 본 발명에 따른 프로그램페일 처리 방법이 적용된 기록 방법을 예시적으로 보여주는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다.
도 13은 본 발명의 또 다른 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다.
도 14는 본 발명의 다른 실시 예에 따른 사용자 장치를 예시적으로 보여주는 블록도이다.
도 15는 본 발명의 또 다른 실시 예에 따른 사용자 장치를 예시적으로 보여주는 블록도이다.
본 발명의 예시적인 실시예들이 참조 도면들에 의거하여 이하 상세히 설명될 수 있다. 아래에서 설명될 본 발명의 저장 장치의 회로 구성 및 동작은 예를 들어 설명한 것으로, 본 발명의 저장 장치는 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능하다. 예를 들면, 본 발명에서는 반도체 메모리 중에서도 플래시 메모리를 주 저장장치로서 채택한 SSD가 저장 장치로서 설명될 것이다. 그러나, 본 발명에 따른 저장 장치 및 그것의 데이터 저장 방법은 SSD 뿐만 아니라 다양한 형태의 저장 장치, 예를 들면, 메모리 카드 등에도 적용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 저장장치(storage device, 1500) 및 이를 구비한 사용자 장치(user device, 1000)의 구성을 예시적으로 보여주는 도면이다.
도 1을 참조하면, 본 발명의 사용자 장치(1000)는 호스트(1100)와 저장 장치(1500)를 포함할 수 있다. 호스트(1100)는 저장 장치(1500)를 제어하도록 구성될 수 있다. 호스트(1100)는, 예를 들면, 개인용/휴대용 컴퓨터, PDA(Personal Digital Assistant), PMP(portable media player), MP3 플레이어 등과 같은 휴대용 전자 장치를 포함할 수 있다. 호스트(1100)와 저장 장치(1500)는 USB, SCSI, ESDI, SATA, SAS, PCI-express, 또는 IDE 인터페이스와 같은 표준 인터페이스(standardized interface)에 의해서 연결될 수 있다. 호스트(1100)와 저장 장치(1500)를 연결하기 위한 인터페이스 방식은 특정 형태에 국한되지 않고, 다양하게 구성될 수 있다.
저장 장치(1500)는 반도체 디스크(Solid State Disk 또는 Solid State Drive, 이하 SSD라 칭함) 장치를 구성할 수 있다. 본 발명에서는 저장 장치(1500)가 SSD로 구성되는 경우가 예시적으로 설명될 것이다. 그러나, 이는 본 발명이 적용되는 일 예에 불과하며, 저장 장치(1500)는 SSD에만 국한되지 않고 다양한 형태로 구성 가능하다. 예를 들면, 저장 장치(1500)는 하나의 반도체 장치로 집적되어, PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMC-micro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등을 구성할 수도 있다.
저장 장치(1500)는 저장장치 컨트롤러(1200)와, 주 저장부인 플래시 메모리(1300)를 포함할 수 있다. 저장장치 컨트롤러(1200)는 호스트(1100)로부터의 요청에 응답하여 플래시 메모리(1300)의 읽기/쓰기/소거 동작을 제어할 수 있다.
플래시 메모리(1300)는 복수의 불 휘발성 메모리 칩들, 예컨대 복수의 플래시 메모리 칩들(1301∼1304)로 구성될 수 있다. 플래시 메모리(1300)는 복수의 채널들이 구비될 수 있으며, 본 발명에서는 1개의 채널을 예로 들어 설명될 것이다. 복수의 플래시 메모리 칩들(1301∼1304)은 채널을 통해 제공된 호스트(1100)로부터의 요청에 응답하여 읽기/쓰기/소거 동작을 수행할 수 있다.
도 2는 도 1에 도시된 저장장치 컨트롤러(1200)의 일 실시예에 따른 구성을 예시적으로 보여주는 도면이다.
도 2를 참조하면, 저장장치 컨트롤러(1200)는 호스트 인터페이스(1220), 플래시 인터페이스(1260), 프로세싱 유닛(1210), 그리고 버퍼 메모리(1230)를 포함할 수 있다. 도 2에 도시된 저장장치 컨트롤러(1200)의 구성은 본 발명이 적용되는 일 예에 관한 것으로, 다양한 형태로 변경 및 변형 가능하다. 예를 들면, 도 2에 도시되어 있지는 않지만 저장장치 컨트롤러(1200)는 플래시 메모리(1300)에 저장된 데이터의 에러를 검출 및 정정을 수행하기 위한 에러 정정 회로 등을 더 포함할 수 있다.
 호스트 인터페이스(1220)는 호스트(1100)와의 인터페이스를 제공하고, 플래시 인터페이스(1260)는 플래시 메모리(1300)와의 인터페이스를 제공할 수 있다. 프로세싱 유닛(1210)은 저장장치 컨트롤러(1200)의 제반 동작을 제어할 수 있다. 예시적인 실시예에 있어서, 프로세싱 유닛(1210)은 상업적으로 이용 가능한 또는 맞춤형 마이크로 프로세서일 수 있다.
버퍼 메모리(1230)는 본 발명에 따른 저장 장치(1500)를 동작시키기 위한 소프트웨어 및 데이터를 포함하는 하나 또는 그 이상의 범용 메모리 장치일 수 있다. 버퍼 메모리(1230)는 SRAM, 및 DRAM 중 적어도 어느 하나로 구성될 수 있다. 예시적인 실시예에 있어서, 버퍼 메모리(1230)는 사용자 버퍼(user buffer ; 1240)와 백업 버퍼(backup buffer ; 1250)를 포함할 수 있다. 사용자 버퍼(1240)는 플래시 메모리(1300)에 저장될 또는 플래시 메모리(1300)로부터 읽혀진 유저 데이터를 임시 저장하는 데 사용될 수 있다. 백업 버퍼(1250)는, 기록 동작을 위해 사용자 버퍼(1240)로부터 플래시 메모리(1300)로 제공된 프로그램 데이터(예를 들면, 바로 이전에 기록된 프로그램 데이터)를 백업하는데 사용될 수 있다.
예를 들면, 1번 페이지부터 N번 페이지(N은 1 이상의 정수)의 데이터를 플래시 메모리(1300)에 기록하는 경우, 백업 버퍼(1250)는 1번 페이지의 데이터에 대한 패스/페일 여부가 확인될 때까지 사용자 버퍼(1240)로부터 1번 페이지의 데이터를 제공받아 저장할 수 있다. 마찬가지로, 백업 버퍼(1250)는 2번 내지 (N-1)번 페이지의 데이터에 대한 패스/페일 여부가 확인될 때까지 사용자 버퍼(1240)로부터 2번 내지 (N-1)번 페이지의 데이터를 순차적으로 제공받아 저장할 수 있다. 그러나, 마지막 페이지인 N번 페이지가 사용자 버퍼(1240)로부터 플래시 메모리(1300)로 제공될 때, 저장장치 컨트롤러(1200)는 호스트(1100)에게 기록 동작이 종료되었음을 알려주고, 사용자 버퍼(1240) 및 백업 버퍼(1250)를 리셋한다. 따라서, 프로그램 될 데이터의 마지막 페이지인 N번 페이지에 대해서는 해당 데이터에 대한 패스/페일 여부가 확인될 때까지 데이터가 백업 상태를 유지할 수 없다.
이와 같은 문제를 해결하기 위해, 본 발명의 데이터 저장 장치(1500)는, 플래시 메모리(1300)를 구성하는 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치를 이용하여 이전의 프로그램 데이터(특히, 마지막 페이지인 N번 페이지의 데이터)를 백업할 수 있다. 그리고, 이전의 프로그램 데이터에 대해 프로그램 페일이 발생하였을 때에는 캐시 래치에 백업되어 있는 프로그램 데이터를 이용하여 재 기록 동작을 수행할 수 있게 된다.
예를 들면, 프로세싱 유닛(1210)은 호스트(1100)로부터 프로그램 동작이 요청될 때, 선택된 플래시 메모리 칩(1301∼1304)에서 프로그램 동작이 수행되도록 플래시 인터페이스(1260)와 버퍼(1230)를 제어할 수 있다. 플래시 인터페이스(1260)는 프로세싱 유닛(1210)의 제어에 따라서 버퍼(1230)과 선택된 플래시 메모리 칩(1301∼1304) 사이의 인터페이스를 수행할 수 있다.
아래에서 상세히 설명되겠지만, 프로세싱 유닛(1210)은 선택된 플래시 메모리 칩(1301∼1304)의 프로그램 동작 시, 플래시 메모리 칩(1301∼1304)에 구비된 페이지 버퍼(PB)의 캐시 래치(CL)의 데이터가 리셋되지 않고 그대로 유지되도록 제어할 수 있다. 그리고, 프로그램 페일이 발생될 경우, 캐시 래치(CL)에 저장되어 있는 데이터를 재기록(rewrite)하는 동작을 제어할 수 있다. 이 경우, 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터는 프로세싱 유닛(1210)의 제어에 의해서, 새로이 할당된 메모리 블록의 대응되는 영역으로 카피될 수 있다. 유효 데이터에 대한 카피동작은 플래시 메모리의 카피백 동작(copyback operation)을 통하여 수행될 수 있다. 본 발명에 다른 페일 처리 동작에 대해서는 아래에서 상세히 설명될 것이다.
도 3은 본 발명의 다른 실시예에 따른 저장장치(2500) 및 이를 구비한 사용자 장치(2000)의 구성을 예시적으로 보여주는 도면이다.
도 3을 참조하면, 본 발명의 사용자 장치(2000)는 호스트(2100)와 저장 장치(2500)를 포함할 수 있다. 본 발명에 따른 저장 장치(2500)는 플래시 메모리(2300), 내부 로직(2210), 호스트 인터페이스(2220), 내부 버퍼(2230), 및 플래시 인터페이스(2260)를 포함할 수 있으며, 플래시 메모리(2300)에는 복수의 플래시 메모리 코어들(2301∼2304)이 포함될 수 있다. 저장 장치(2500)는 단일 반도체 칩 상에 구성될 수 있다. 저장 장치(2500)는 플래시 메모리 내부에 컨트롤러 기능이 탑재된 원낸드 플래시 메모리 장치(OneNAND flash memory) 또는 매니지드 낸드 플래시 메모리 장치(managed NAND flash memory)를 구성할 수 있다. 일 실시예에 있어서, 원낸드 플래시 메모리 장치 내부에는 에러 정정(ECC) 회로가 구비되지 않는다. 그리고, 매니지드 낸드 플래시 메모리 장치 내부에는 에러 정정(ECC) 회로가 구비된다. 하지만, 본 발명에 따른 저장 장치(2500)가 여기에 개시된 것에 국한되지 않는다는 것 또한 이 분야의 통상적인 지식을 습득한 자들에게 있어 자명하다.
호스트(2100)는 저장 장치(2500)를 제어하도록 구성될 수 있다. 호스트(2100)는 사용자 버퍼(user buffer ; 2240)와 백업 버퍼(backup buffer ; 2250)를 포함할 수 있다. 사용자 버퍼(2240)는 플래시 메모리(2300)에 저장될 또는 플래시 메모리(2300)로부터 읽혀진 유저 데이터를 임시 저장하는 데 사용될 수 있다. 백업 버퍼(2250)는, 기록 동작을 위해 사용자 버퍼(2240)로부터 플래시 메모리(2300)로 제공된 프로그램 데이터(예를 들면, 바로 이전에 기록된 프로그램 데이터)를 백업하는데 사용될 수 있다. 사용자 버퍼(2240)와 백업 버퍼(2250)는 SRAM, 및 DRAM 중 적어도 어느 하나로 구성될 수 있다.
저장 장치(2500)는 호스트 인터페이스(2220)를 통해 호스트(2100)와 인터페이스를 수행할 수 있다. 저장 장치(2500)와 호스트(2100) 사이에서 수행되는 인터페이스 방식은 잘 알려져 있는 노어 인터페이스 방식을 이용할 수 있다. 하지만, 이러한 인터페이스 방식은 일 실시예에 불과하며, 다른 인터페이스 방식(예를 들면, 낸드 인터페이스 방식)이 적용될 수도 있다.
도 4는 도 1 및 도 3에 도시된 플래시 메모리 칩/코어(1301, 2301)의 상세 블록도이다. 도 4에는 플래시 메모리(1300, 2300)를 구성하는 복수의 플래시 메모리 칩들/코어들(1301∼1304/2301∼2304) 중 하나의 구성이 예시적으로 도시되어 있다.
도 4를 참조하면, 플래시 메모리 칩/코어(1301, 2301)는 메모리 셀 어레이(120), 행 디코더(130)(도면에는 X-DEC으로 표시됨), 그리고 페이지 버퍼 블록(140)을 포함할 수 있다. 메모리 셀 어레이(120)는, 워드 라인들과 비트 라인들의 교차 영역들에 배열된 메모리 셀들을 포함할 수 있다. 각 메모리 블록의 메모리 셀들은 스트링 구조를 갖도록 구성될 수 있다.
메모리 셀 어레이(120)의 행(row)들은 행 디코더 회로(130)에 의해서 구동되고, 열(column)들은 페이지 버퍼 블록(140)에 의해서 구동될 수 있다. 페이지 버퍼 블록(140)은 내부 로직(2210)에 의해서 제어되며, 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작한다. 예를 들면, 페이지 버퍼 블록(140)은 읽기 동작 모드에서 감지 증폭기로서 동작할 수 있고, 프로그램 동작 모드에서 기입 드라이버로서 동작할 수 있다.
페이지 버퍼 블록(140)은 각각의 비트 라인 또는 비트 라인 쌍에 대응하는 복수의 페이지 버퍼들(PB)을 포함할 수 있다. 각 페이지 버퍼(PB) 내부에는 복수의 래치들이 구비될 수 있다. 각 페이지 버퍼(PB) 내부에 구비된 복수의 래치들 중 하나는 프로그램 데이터를 임시 저장하는 캐시 래치(cache latch ; CL)로서 이용될 수 있다. 그리고, 각 페이지 버퍼(PB) 내부에 구비된 복수의 래치들 중 다른 하나는 프로그램 동작을 수행하는데 사용되는 프로그램 래치(program latch; PL)로서 이용될 수 있다. 도 4에 도시된 페이지 버퍼의 구조는 특정 형태에 국한되지 않고, 다양한 형태로 변경 및 변화 가능하다.
도 5는 기록 동작시 도 4에 도시된 페이지 버퍼(PB)의 데이터의 상태를 예시적으로 보여주는 도면이다.
도 4 및 도 5를 참조하면, 프로그램 될 데이터는 먼저 캐시 래치(CL)로 로딩될 수 있다. 캐시 래치(CL)에 로딩된 데이터는 프로그램 래치(PL)로 카피될 수 있다. 이 경우, 본 발명의 페이지 버퍼는, 캐시 래치(CL)로부터 프로그램 래치(PL)로 프로그램 데이터가 카피된 이후에도 캐시 래치(CL)의 데이터를 그대로 유지한다. 즉, 본 발명의 캐시 래치(CL)는 컨트롤러(1200) 또는 호스트(1100, 2100)의 제어에 응답해서, 캐시 래치(CL)의 데이터가 프로그램 래치(PL)로 카피된 후에 캐시 래치(CL)에 대한 리셋이 금지되도록 제어될 수 있다. 만일 본 발명과 같은 캐시 래치(CL)에 대한 리셋 금지 동작이 적용되지 않을 경우, 캐시 래치(CL)의 데이터가 프로그램 래치(PL)로 카피된 후 캐시 래치(CL)는 리셋될 것이다.
프로그램 래치(PL)에 저장된 프로그램 데이터는 복수의 프로그램 루프들을 통해 대응되는 메모리 셀에 기록될 수 있다. 각각의 프로그램 루프에서 수행된 프로그램 결과는 검증 읽기 동작을 통해 패스/페일이 검증될 수 있다. 패스/페일 검증 결과, 올바르게 프로그램 된 것으로 판명된 메모리 셀의 프로그램 래치(PL)의 값은, 더 이상 프로그램이 수행되지 않도록 하기 위해 프로그램 금지 상태인 1의 데이터 값으로 변화하게 된다. 이와 같은 구성에 따르면, 프로그램 래치(PL)는 이전의 프로그램 데이터가 어떤 값이었는지를 기억하지 못하게 될 것이다.
하지만, 본 발명에서는 해당 프로그램 데이터에 대한 기록 동작이 모두 종료될 때까지 캐시 래치(CL)에는 바로 이전의 프로그램 데이터를 그대로 유지할 수 있기 때문에, 프로그램 래치(PL)의 값과 상관 없이 이전의 프로그램 데이터를 파악할 수 있게 된다. 캐시 래치(CL)에 유지되어 있는 이전의 프로그램 데이터는 해당 데이터의 프로그램 페일시, 캐시 래치(CL)로부터 읽혀져 해당 데이터의 재 기록 동작에 이용될 수 있다.
이상과 같은 복수의 프로그램 루프의 실행 횟수는 소정의 값(예를 들면 M, M은 2 이상의 정수)으로 정해져 있으며, M 개의 프로그램 루프들을 통해 M회의 프로그램이 수행된 후에도 프로그램이 올바르게 프로그램된 것으로 판명되지 않으면, 해당 메모리 셀에 프로그램 페일이 발생된 것으로 판정될 수 있다. 이와 같은 경우, 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터는 빈 메모리 블록의 대응되는 영역으로 복사될 것이다. 그리고, 프로그램 페일이 발생된 메모리 셀에 대해서는 재 기록 동작이 수행될 것이다. 본 발명에서, 프로그램 페일이 발생된 메모리 셀에 대한 재 기록 동작은, 캐시 래치(CL)에 저장되어 있는 데이터를 이용하여 수행될 수 있다.
이상과 같은 본 발명의 구성에 따르면, 백업 버퍼(1250, 2250)에 프로그램 데이터가 모두 저장되어 있지 않거나, 복수의 플래시 메모리들에 대응되는 이전의 프로그램 데이터를 모두 저장 할 만큼 백업 버퍼(1250, 2250)의 용량이 충분히 크지 않더라도 프로그램 페일이 발생된 데이터에 대한 재 기록 동작을 수행할 수 있게 된다. 그 결과, 프로그램의 정확도를 높일 수 있고, 프로그램 페일 처리를 효과적으로 수행할 수 있게 된다.
다시 도 3을 참조하면, 내부 버퍼(2230)는 내부 로직(2210)에 의해서 제어되며, 호스트(2100)로부터 제공되는 데이터 또는 페이지 버퍼 블록(140)으로부터 제공되는 데이터를 임시 저장할 수 있다. 내부 버퍼(2230)은, 바람직하게, 에스램(SRAM ; Static Random Access Memory)으로 구현될 수 있다. 하지만, 이는 내부 버퍼(2230)의 일 구성 예에 불과하다. 예를 들면, 내부 버퍼(2230)은 디램(DRAM ; Dynamic Random Access Memory)과 같은 메모리로 구현될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
내부 로직(2210)은 저장 장치(2500)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, 호스트(2100)로부터 프로그램 동작이 요청될 때, 내부 로직(2210)은 선택된 플래시 메모리 코어(2301∼2304)에서 프로그램 동작이 수행되도록 플래시 인터페이스(2260)와 내부 버퍼(2230)을 제어할 수 있다. 플래시 인터페이스(2260)는 내부 로직(2210)의 제어에 따라서 내부 버퍼(2230)과 페이지 버퍼 블록(140) 사이의 인터페이스를 수행할 수 있다. 특히, 내부 로직(2210)은 선택된 플래시 메모리 코어(2301∼2304)의 프로그램 동작 시, 플래시 메모리 코어(2301∼2304)에 구비된 페이지 버퍼(PB)의 캐시 래치(CL)의 데이터가 리셋되지 않고 프로그램된 데이터의 프로그램 페일/패스 여부가 확인될 때까지 그대로 유지되도록 제어할 수 있다. 그리고, 프로그램 페일이 발생된 경우, 캐시 래치(CL)에 저장되어 있는 데이터를 재기록(rewrite)하는 동작을 제어할 수 있다.
예시적인 실시예에 있어서, 캐시 래치(CL)의 데이터가 리셋되지 않고 그대로 유지되도록 제어하는 동작과, 프로그램 페일의 발생시 캐시 래치(CL)에 저장되어 있는 데이터를 이용하여 재기록(rewrite)하는 동작은 호스트(1100, 2100) 및/또는 컨트롤러(1200)로부터 발생된 제어신호 또는 커멘드를 통해 제어될 수 있다.
한편, 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터는 내부 로직(2210)의 제어에 의해서, 새로이 할당된 메모리 블록의 대응되는 영역으로 카피될 수 있다. 유효 데이터에 대한 카피동작은 플래시 메모리의 카피백 동작(copyback operation)을 통하여 수행될 수 있다. 본 발명에 다른 페일 처리 동작에 대해서는 아래에서 상세히 설명될 것이다.
앞에서 설명한 바와 같이, 플래시 메모리(1300, 2300)가 복수의 불 휘발성 메모리 칩들(예를 들면, 복수의 플래시 메모리 침들)로 구성되는 경우, 저장 장치(1500, 2500)는 전원이 차단되더라도 저장된 데이터를 유지할 수 있다. 플래시 메모리(1300, 2300)를 구성하는 플래시 메모리 칩들/플래시 메모리 코어 각각은 스트링 구조(string structure)를 갖는 복수의 메모리 셀들(memory cells)로 구성될 수 있다. 이러한 메모리 셀들의 집합을 셀 어레이(cell array)라고 부른다. 플래시 메모리(1300)의 메모리 셀 어레이는 복수의 블록들(blocks)로 구성될 수 있다. 각각의 블록은 복수의 페이지들(pages)로 구성될 수 있다. 각각의 페이지는 하나의 워드라인을 공유하는 복수의 메모리 셀들로 구성될 수 있다. 하나의 워드라인에는 하나 또는 그 이상의 페이지들에 대응되는 메모리 셀들이 대응될 수 있다. 각각의 메모리 셀에는 1-비트 데이터 또는 K-비트 데이터(K는 2 이상의 정수)가 저장될 수 있다.
플래시 메모리(1300)는 블록 단위로 소거 동작이 이루어지며, 페이지 단위로 읽기 및 쓰기 동작이 이루어진다. 다른 실시예에 있어서, 읽기 및 쓰기 동작의 단위는 복수의 페이지 단위로 수행될 수도 있고, 하나의 페이지 보다 작은 서브 페이지 단위로 수행될 수도 있다. 이상에서 설명된 바와 같이, 플래시 메모리로 구성된 플래시 메모리(1300, 2300)는 읽기/쓰기 동작의 단위와 소거 동작의 단위가 다르다. 또한, 플래시 메모리(1300, 2300)는 다른 반도체 메모리 장치와 달리 겹쳐쓰기(over write)가 되지 않는다. 따라서 플래시 메모리(1300, 2300)는 쓰기 동작을 수행하기 이전에 반드시 소거 동작이 수행되어야 한다.
그런데, 기존의 파일 시스템(file system) (통상, 파일 시스템은 호스트 측에 소프트웨어 형태로 저장됨)은 하드디스크 드라이브(HDD)와 같이 겹쳐쓰기가 가능한 저장 장치를 고려 하여 설계되어 있기 때문에, 쓰기 동작 이전에 소거 동작이 선행되어야 하는 플래시 메모리의 동작 특성이 반영되어 있지 않다. 게다가 플래시 메모리에서 쓰여지는 데이터의 단위는, 소거되는 데이터의 단위와 다르기 때문에, 파일 시스템(file system)에서 제공된 어드레스와, 데이터가 쓰여진 플래시 메모리의 어드레스가 불일치(mismatch)될 수 있다.
이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크 드라이브용 파일 시스템을 그대로 활용하는 것을 저해하는 요인이 된다. 따라서, 플래시 메모리의 소거 동작이 파일 시스템 측에 감춰지도록 하기 위해, 파일 시스템과 플래시 메모리 사이에 플래시 변환 계층(flash translation layer, 이하 FTL이라 칭함)이 사용될 수 있다. FTL은 플래시 메모리(1300, 2300)의 일 영역에 저장되어 있다가, 파워 온 동작 시 저장장치 컨트롤러(1200) 또는 호스트(2100)로 로딩되어 구동될 수 있다.
도 6은 도 1 및 도 3에 도시된 사용자 장치(1000, 2000)의 소프트웨어 구조를 보여주는 블록도이다.
도 6을 참조하면, 메모리 시스템은 어플리케이션(210), 파일 시스템(220), FTL(230), 그리고 플래시 메모리(1300,2300) 순으로 소프트웨어 계층 구조를 갖는다.
FTL(230)은 논리 어드레스(LA)-물리 어드레스(PA) 맵핑 정보 관리, 배드 블록 관리, 예상치 못한 전원 차단에 따른 데이터 보존성 관리, 마모도 관리 등을 수행할 수 있다. 예를 들면, FTL(230)은 플래시 메모리(1300, 2300)의 기록 또는 재기록 동작시 파일 시스템(220)이 생성한 논리 주소(LA)를 소거 동작이 수행된 플래시 메모리(1300, 2300)의 물리 주소(PA)로 맵핑시켜 주는 역할을 수행할 수 있다. FTL(230)은 빠른 어드레스 맵핑이 이루어질 수 있도록 어드레스 맵핑 테이블(Address mapping table)을 사용할 수 있다. FTL의 어드레스 맵핑 기능으로 인해, 호스트(1100, 2100)는 플래시 메모리 장치(1300, 2300)를 마치 하드디스크 드라이브(또는, SRAM)로 인식할 수 있고, 하드디스크 드라이브와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다.
FTL(230)의 어드레스 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method)이 있다. 본 발명에 적용될 수 있는 어드레스 맵핑 방법은, 특정 형태에 국한되지 않고 다양한 형태로 구성될 수 있다.
도 7은 도 6에 도시된 소프트웨어 구조에 따른 어드레스 맵핑 동작을 설명하기 위한 도면이다.
도 7을 참조하면, FTL(230)는 기록 동작 시 파일 시스템(220)으로부터 논리 어드레스(LA)를 입력 받고, 맵핑 테이블을 사용하여 물리 어드레스(PA)로 변환할 수 있다.
한편, 플래시 메모리(1300, 2300)는 데이터 영역(data are; 331), 예비 영역(reserved area ; 332), 및 메타 영역(333)을 포함할 수 있다. 데이터 영역(331)은 복수의 데이터 블록으로 구성되어, 사용자 데이터를 저장할 수 있다. 예비 영역(332)은 사용자 측에서는 보이지 않는 히든 영역으로 구성될 수 있다. FTL(230)은 예비 영역(332)의 일 영역을 자유 블록(free block)으로 지정할 수 있다. 프로그램 페일이 발생한 경우, 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터(valid data)는 자유 블록으로 카피될 수 있다. 그리고, 페일이 발생된 데이터는, 자유 블록의 해당 영역으로 재기록 될 수 있다. 기록 동작과, 프로그램 페일이 발생되었을 때 수행되는 재기록 동작과 유효 데이터의 카피 동작에 따른 맵핑 정보의 변경 결과는 FTL(230)의 제어에 의해 메타 영역(333)에 저장될 수 있다.
도 8 및 도 9는 프로그램 페일의 발생시 수행되는 배드 블록의 처리 방법을 설명하기 위한 도면이다.
도 8 및 도 9를 참조하면, 플래시 메모리(1300, 2300)의 데이터 영역(331)에 대한 기록 동작 시 프로그램 페일이 발생하게 되면, FTL(230)은 프로그램 페일의 발생 순서(BAD1, BAD2, BAD3) 에 따라서 예비 영역(332)에 프리 블록(PBN 1993, PBN 1995, PBN 1995)을 순차적으로 할당한다. 프로그램 페일이 발생된 배드 블록(BAD1, BAD2, BAD3)에 저장되어 있는 유효 데이터는, 새롭게 할당된 프리 블록(PBN 1993, PBN 1995, PBN 1995)의 대응되는 영역(예를 들면, 대응되는 페이지)으로 카피될 것이다.
유효 데이터에 대한 카피 동작은 카피백 동작에 의해 수행될 수 있다. 카피백 동작은, 배드 블록(BAD1, BAD2, BAD3)에 저장되어 있는 유효 데이터가 페이지 버퍼를 통해 읽혀진 후, 외부(컨트롤러 또는 호스트)로 출력되지 않고 새롭게 할당된 프리 블록(PBN 1993, PBN 1995, PBN 1995)의 대응되는 영역(예를 들면, 대응되는 페이지)으로 카피되는 것을 의미할 수 있다. 그러므로, 카피백 동작의 경우, 플래시 메모리(1300, 2300)로부터 외부로 출력되는 데이터는 존재하지 않게 될 것이다.
그리고, 배드 블록(BAD1, BAD2, BAD3)에서 프로그램 페일이 발생된 메모리 셀의 데이터는, 외부(컨트롤러 또는 호스트)로부터 재요청 되거나 재공급 되지 않고, 페이지 버퍼의 캐시 래치(CL)에 저장되어 있는 값을 이용하여 프리 블록(PBN 1993, PBN 1995, PBN 1995)의 대응되는 영역(예를 들면, 대응되는 페이지)으로 재기록 될 수 있다.
이 경우, 캐시 래치(CL)에 저장되어 있는 값은 외부(컨트롤러 또는 호스트)로 읽혀진 다음 재기록 될 수도 있고, 내부 버퍼 또는 임시 블록(temporary block)에 저장되었다가 재기록될 수도 있다. 또는, 캐시 래치(CL)에 저장되어 있는 값이 직접 프로그램 래치(PL)로 카피되어, 프리 블록(PBN 1993, PBN 1995, PBN 1995)의 대응되는 영역(예를 들면, 대응되는 페이지)으로 재기록 될 수도 있다. 캐시 래치(CL)에 저장되어 있는 값을 이용한 재기록 동작의 실행 방법은 특정 형태에 국한되지 않고, 다양하게 변경 및 변형 가능하다.
도 10은 본 발명에 따른 프로그램페일 처리 방법이 적용된 기록 방법을 예시적으로 보여주는 흐름도이다.
도 10을 참조하면, S1000 단계에서는 프로그램 데이터가 백업되어 있는지 여부가 판별될 수 있다. S1000 단계의 판별 결과, 프로그램 데이터가 백업되어 있는 경우, S2000 단계에서는 캐시 래치(CL)에 대한 리셋 금지 없이 기록 동작을 수행할 수 있다. 예를 들면, 컨트롤러(1200) 또는 호스트(2100)에 구비된 백업 버퍼(1250, 2250)에 이전에 프로그램된 데이터가 모두 백업되어 있는 경우에는 플래시 메모리(1300, 2300)의 페이지 버퍼(PB)에 구비되어 있는 캐시 래치(CL)에 대한 리셋 금지가 적용되지 않게 된다. 이 경우, 프로그램 페일이 발생하게 되면, 페일이 발생된 프로그램 데이터는 컨트롤러(1200) 또는 호스트(2100)에 구비된 백업 버퍼(1250, 2250)로부터 제공될 수 있을 것이다.
한편, S1000 단계의 판별 결과, 프로그램 데이터가 백업되어 있지 않은 경우, S3000 단계에서는 캐시 래치(CL)에 대한 리셋을 금지한 상태에서 기록 동작을 수행할 수 있다. 예를 들면, 백업 버퍼(1250, 2250)의 용량이 복수의 플래시 메모리칩들/코어들(1301∼1304/2301∼2304)의 이전 프로그램 데이터를 백업할 수 없거나, 현재 실행될 기록 동작이 마지막 페이지의 기록동작일 경우, 본 발명의 컨트롤러(1200) 또는 호스트(1100, 2100)는 플래시 메모리(1300, 2300)의 캐시 래치(CL)가 리셋 금지되도록 제어할 수 있다. 이 경우, 프로그램 페일이 발생하게 되면, 페일이 발생된 프로그램 데이터는 페이지 버퍼 내부의 캐시 래치(CL)로부터 제공될 수 있을 것이다.
도 11은 본 발명의 일 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다. 도 11에 도시된 흐름도는 도 10에 도시된 S3000 단계의 제 1 실시예에 따른 상세 흐름도에 해당된다
도 11을 참조하면, 본 발명의 프로그램 페일 처리 방법은 S3100 단계에서 프로그램 페일이 발생하였는지 여부를 판별하게 된다. S3100 단계에서의 판별 결과 프로그램 페일이 발생하였으면, FTL(230)은 S3150 단계에서 예비 영역(332)의 일 영역을 프리 블록으로 지정한다.
그리고, S3200 단계에서 페이지 버퍼의 캐시 래치(CL)에 저장되어 있는 바로 이전의 프로그램 데이터를 독출한다. 페이지 버퍼의 캐시 래치(CL)로부터 독출된 데이터는 플래시 메모리(1300, 2300)의 외부(예를 들면, 컨트롤러(1200) 또는 호스트(1100, 2100))로 제공될 수 있다.
S3250 단계에서 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터는 S3150 단계에서 할당된 자유 블록으로 카피된다. 이 때, 프로그램 페일이 발생된 메모리 블록은 배드 블록으로 마킹되어, 추가적인 기록 동작이 수행되지 않도록 제어될 것이다. S3250 단계에서 수행되는 유효 데이터에 대한 카피 동작은, 카피백 동작을 통해 플래시 메모리(1300, 2300) 내부에서 수행될 수 있다. 이 경우, 프로그램 페일이 발생된 메모리 블록을 구성하는 페이지의 구성은, 달라지지 않고 그대로 유지되도록 구성될 수 있다. 즉, 블록 어드레스에 대한 맵핑정보는 변경되지만 페이지 어드레스에 대한 맵핑 정보는 변경되지 않도록 구성될 수 있다.
이어서, S3300 단계에서는 컨트롤러(1200) 또는 호스트(1100, 2100)의 제어에 의해서, 플래시 메모리(1300, 2300) 외부로 독출된 이전 프로그램 데이터에 대한 재기록 동작이 수행될 수 있다. 재기록 동작이 수행되고 나면, S3800 단계에서는 유효 데이터에 대한 카피 동작과, 페일이 발생된 이전 프로그램 데이터에 대한 재기록 동작에 의해 변경된 맵핑 데이터를 업데이트하고, 수순은 종료된다.
도 12는 본 발명의 다른 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다. 도 12에 도시된 흐름도는 도 10에 도시된 S3000 단계의 제 2 실시예에 따른 상세 흐름도로서, 도 11에 도시된 흐름도와 동일한 동작에 대해서는 동일한 참조 번호가 부여되었다
도 12를 참조하면, 본 발명의 프로그램 페일 처리 방법은 S3100 단계에서 프로그램 페일이 발생하였는지 여부를 판별하게 된다. S3100 단계에서의 판별 결과 프로그램 페일이 발생하였으면, FTL(230)은 S3150 단계에서 예비 영역(332)의 일 영역을 프리 블록으로 지정한다.
그리고, S3400 단계에서 페이지 버퍼의 캐시 래치(CL)에 저장되어 있는 바로 이전의 프로그램 데이터를 플래시 메모리(1300, 2300) 내부의 임시 블록(temporary block) 또는 내부 버퍼로 카피한다. 이 경우 페이지 버퍼의 캐시 래치(CL)에 저장된 데이터는 플래시 메모리(1300, 2300)의 외부(예를 들면, 컨트롤러(1200) 또는 호스트(1100, 2100))로 제공되지 않고, 플래시 메모리(1300, 2300)의 내부에 저장될 수 있다.
S3450 단계에서 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터는 S3150 단계에서 할당된 자유 블록으로 카피된다. 이 때, 프로그램 페일이 발생된 메모리 블록은 배드 블록으로 마킹되어, 추가적인 기록 동작이 수행되지 않도록 제어될 것이다. S3450 단계에서 수행되는 유효 데이터에 대한 카피 동작은, 카피백 동작을 통해 플래시 메모리(1300, 2300) 내부에서 수행될 수 있다. 이 경우, 프로그램 페일이 발생된 메모리 블록을 구성하는 페이지의 구성은, 달라지지 않고 그대로 유지되도록 구성될 수 있다. 즉, 블록 어드레스에 대한 맵핑정보는 변경되지만 페이지 어드레스에 대한 맵핑 정보는 변경되지 않도록 구성될 수 있다.
이어서, S3500 단계에서는 컨트롤러(1200) 또는 호스트(1100, 2100)의 제어에 의해서, 플래시 메모리(1300, 2300) 내부의 임시 블록 또는 내부 버퍼로 카피된 이전 프로그램 데이터에 대한 재기록 동작이 수행될 수 있다. 재기록 동작이 수행되고 나면, S3800 단계에서는 유효 데이터에 대한 카피 동작과, 페일이 발생된 이전 프로그램 데이터에 대한 재기록 동작에 의해 변경된 맵핑 데이터를 업데이트하고, 수순은 종료된다.
도 13은 본 발명의 또 다른 실시예에 따른 프로그램 페일 처리 방법을 보여주는 흐름도이다. 도 13에 도시된 흐름도는 도 10에 도시된 S3000 단계의 제 3 실시예에 따른 상세 흐름도로서, 도 11 및 도 12에 도시된 흐름도와 동일한 동작에 대해서는 동일한 참조 번호가 부여되었다
도 13을 참조하면, 본 발명의 프로그램 페일 처리 방법은 S3100 단계에서 프로그램 페일이 발생하였는지 여부를 판별하게 된다. S3100 단계에서의 판별 결과 프로그램 페일이 발생하였으면, FTL(230)은 S3150 단계에서 예비 영역(332)의 일 영역을 프리 블록으로 지정한다.
그리고, S3600 단계에서 페이지 버퍼의 캐시 래치(CL)에 저장되어 있는 바로 이전의 프로그램 데이터를 페이지 버퍼의 프로그램 래치(PL)로 카피한다. 그리고 나서, S3650 단계에서는 컨트롤러(1200) 또는 호스트(1100, 2100)의 제어에 의해서, 플래시 메모리(1300, 2300)의 페이지 버퍼의 프로그램 래치(PL)로 카피된 이전 프로그램 데이터에 대한 재기록 동작이 수행될 수 있다. 이 경우 페이지 버퍼의 캐시 래치(CL)에 저장된 데이터는 플래시 메모리(1300, 2300)의 외부(예를 들면, 컨트롤러(1200) 또는 호스트(1100, 2100))는 물론, 플래시 메모리(1300, 2300)의 페이지 버퍼 외부로 제공되지 않고 재기록 될 수 있다.
S3700 단계에서는, 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터가 S3150 단계에서 할당된 자유 블록으로 카피된다. 이 때, 프로그램 페일이 발생된 메모리 블록은 배드 블록으로 마킹되어, 추가적인 기록 동작이 수행되지 않도록 제어될 것이다. S3700 단계에서 수행되는 유효 데이터에 대한 카피 동작은, 카피백 동작을 통해 플래시 메모리(1300, 2300) 내부에서 수행될 수 있다. 이 경우, 프로그램 페일이 발생된 메모리 블록을 구성하는 페이지의 구성은, 달라지지 않고 그대로 유지되도록 구성될 수 있다. 즉, 블록 어드레스에 대한 맵핑정보는 변경되지만 페이지 어드레스에 대한 맵핑 정보는 변경되지 않도록 구성될 수 있다.
유효 데이터에 대한 카피가 수행되고 나면, S3800 단계에서 맵핑 데이터를 업데이트하고, 수순은 종료된다.
이상에서 설명된 바와 같이, 본 발명의 프로그램 페일 처리 방법은 플래시 메모리(1300, 2300)의 페이지 버퍼에 구비되어 있는 캐시 래치(CL)를 이용하여 이전의 프로그램 데이터를 백업할 수 있고, 프로그램 페일이 발생하였을 때에는 캐시 래치에 백업되어 있는 프로그램 데이터를 이용하여 재 기록 동작을 수행할 수 있게 된다.
따라서, 호스트(1100, 2100) 또는 컨트롤러(1200) 측에 구비된 백업 버퍼에 프로그램 데이터가 모두 저장되어 있지 않거나, 복수의 플래시 메모리들에 대응되는 이전의 프로그램 데이터를 모두 저장 할 만큼 백업 버퍼의 용량이 충분히 크지 않더라도 프로그램 페일이 발생된 데이터에 대한 재 기록 동작을 수행할 수 있게 된다. 그 결과, 프로그램의 정확도를 높일 수 있고, 프로그램 페일 처리를 효과적으로 수행할 수 있다.
도 14는 본 발명의 다른 실시 예에 따른 사용자 장치(3000)를 예시적으로 보여주는 블록도이다.
도 14를 참조하면, 본 발명의 사용자 장치(3000)는 플래시 메모리(3300)와 플래시 컨트롤러(3200)를 포함할 수 있다. 본 발명의 사용자 장치(3000)는 메모리 카드 장치, SSD 장치, 멀티미디어 카드 장치, SD 장치, 메모리 스틱 장치, 하드 디스크 드라이브 장치, 하이브리드 드라이브 장치, 또는 범용 직렬 버스 플래시 장치일 수 있다. 예를 들면, 본 발명의 사용자 장치(3000)는 디지털, 카메라, 개인 컴퓨터 등과 같은 전자 장치를 사용하기 위한 산업 표준을 만족하는 카드일 수 있다.
플래시 메모리(3300)의 구성 및 동작은 도 1 및 도 3에 도시된 플래시 메모리(1300, 2300)와 실질적으로 동일하다. 따라서, 중복되는 설명은 이하 생략될 것이다. 예를 들면, 플래시 메모리 컨트롤러(3200)는 사용자 장치(3000) 외부로부터 수신된 제어 신호들에 기초하여 플래시 메모리(3300)를 제어할 수 있다. 그리고, 플래시 메모리(3300)는 페이지 버퍼에 구비되어 있는 캐시 래치를 이용하여 이전의 프로그램 데이터를 백업할 수 있고, 프로그램 페일이 발생하였을 때에는 캐시 래치에 백업되어 있는 프로그램 데이터를 이용하여 재 기록 동작을 수행할 수 있다.
도 15는 본 발명의 또 다른 실시예에 따른 사용자 장치(4000)의 구성을 예시적으로 보여주는 도면이다.
도 15를 참조하면, 본 발명에 따른 저장 장치(4000)는 저장장치 컨트롤러(4200)와 플래시 메모리(4300)를 포함할 수 있다.
도 15에 도시된 플래시 메모리(4300)는 도 1, 도 3, 및 도 14에 도시된 플래시 메모리(1300, 2300, 3300)와 동일하게 구성될 수 있다. 예시적인 실시예에 있어서, 플래시 메모리(4300)는 복수의 플래시 메모리 칩들/코어들로 구성될 수 있다. 그리고, 도 15에 도시된 저장 장치(4000)는, 이상에서 설명된 본 발명의 프로그램 페일 처리 방법을 따를 수 있다. 따라서, 플래시 메모리(4300)는 페이지 버퍼에 구비되어 있는 캐시 래치를 이용하여 이전의 프로그램 데이터를 백업할 수 있고, 프로그램 페일이 발생하였을 때에는 캐시 래치에 백업되어 있는 프로그램 데이터를 이용하여 재 기록 동작을 수행할 수 있다.
저장장치 컨트롤러(4200)는 플래시 메모리(4300)를 제어하도록 구성될 수 있다. 저장장치 컨트롤러(4200)는 도 1 및 도 14에 도시된 컨트롤러(1200)/플래시 메모리 컨트롤러(3200)와 동일하게 구성될 수 있다. 따라서 동일한 구성에 대한 중복된 설명은 이하 생략하기로 한다.
본 발명에 따른 저장 장치(4000)는, 컴퓨터, 휴대용 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나에 적용될 수 있다.
그리고, 저장 장치(4000)는 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나에 적용될 수 있고, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나에 적용될 수 있다. 이 외에도, 저장 장치(4000)는 RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(예를 들면, 반도체 드라이브(SSD), 메모리 카드 등)에 적용될 수 있다. 예를 들면, 플래시 메모리(4300)와 저장장치 컨트롤러(4200)의 결합에 의해 메모리 카드 또는 SSD를 구성할 수 있다. 이 경우, 저장장치 컨트롤러(4200)는 메모리 컨트롤러로서의 기능을 수행하게 된다.
SRAM(430)은 CPU(410)의 워킹 메모리로 사용될 수 있다. 호스트 인터페이스(420)는 저장 장치(4000)과 접속되는 호스트의 데이터 교환 프로토콜을 구비할 수 있다. 저장장치 컨트롤러(4200)에 구비된 에러 정정 회로(440)는 플래시 메모리(4300)로부터 읽어 온 읽기 데이터에 포함되어 있는 에러를 검출 및 정정할 수 있다. 메모리 인터페이스(460)는 본 발명의 플래시 메모리(4300)와 인터페이싱 할 수 있다. CPU(410)는 저장장치 컨트롤러(4200)의 데이터 교환을 위한 제반 제어 동작을 수행할 수 있다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 저장 장치(4000)은 호스트(Host)와의 인터페이싱을 위한 코드 데이터를 저장하는 ROM(미도시됨) 등이 더 제공될 수 있다.
플래시 메모리(4300)는 복수의 플래시 메모리 칩들로 구성되는 멀티-칩 패키지로 제공될 수도 있다. 이상의 본 발명의 저장 장치(4000)은 에러의 발생 확률이 낮은 고신뢰성의 저장 매체를 구성할 수 있다. 특히, 최근 활발히 연구되고 있는 SSD와 같은 메모리 시스템을 구성할 수 있다. 이 경우, 저장장치 컨트롤러(4200)는 USB, MMC, PCI-E, SAS, SATA, PATA, SCSI, ESDI, 그리고 IDE 등과 같은 다양한 인터페이스 프로토콜들 중 하나를 통해 외부(예를 들면, 호스트)와 통신하도록 구성될 수 있다.
또한, 이상에서 설명된 본 발명의 저장 장치(4000)는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 플래시 메모리(4300) 및/또는 저장장치 컨트롤러(4200)는 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), 등과 같은 패키지들을 이용하여 실장 될 수 있다. 이와 같은 패키지 실장 특성은, 도 15에 도시된 사용자 장치(4000)뿐만 아니라, 도 1, 도 3, 및 도 14에 도시된 사용자 장치(1000∼3000)에도 적용될 수 있다.
이상에서와 같이 도면과 명세서에서 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1100, 2100 : 호스트
1500, 2500 : 저장 장치
1200, 4200 : 저장장치 컨트롤러
1300, 2300, 3300, 4300: 플래시 메모리
1240, 2240 : 유저 버퍼
1250, 2250 : 백업 버퍼
1000, 2000, 3000, 4000: 사용자 장치
CL : 캐시 래치
PL : 프로그램 래치
PB : 페이지 버퍼

Claims (10)

  1. 기록 동작에서 프로그램 페일이 발생되면 플래시 메모리의 예비 영역을 프리 블록으로 할당하는 단계;
    상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계;
    상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 카피하는 단계; 그리고
    상기 캐시 래치로부터 읽어온 상기 프로그램 데이터를 상기 할당된 프리 블록의 대응되는 영역으로 재기록하는 단계를 포함하는 프로그램 페일 처리 방법.
  2. 제 1 항에 있어서,
    상기 기록 동작이 수행되기 이전에 상기 캐시 래치의 리셋을 금지하는 단계를 포함하는 프로그램 페일 처리 방법.
  3. 제 1 항에 있어서,
    상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는,
    상기 읽어온 프로그램 데이터를 상기 플래시 메모리 외부의 데이터 저장 영역에 저장하는 단계를 포함하는 프로그램 페일 처리 방법.
  4. 제 1 항에 있어서,
    상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는,
    상기 읽어온 프로그램 데이터를 상기 플래시 메모리 내부의 데이터 저장 영역에 저장하는 단계를 포함하는 프로그램 페일 처리 방법.
  5. 제 4 항에 있어서,
    상기 플래시 메모리 내부의 데이터 저장 영역은, 상기 플래시 메모리에 구비된 임시 블록 또는 버퍼인 프로그램 페일 처리 방법.
  6. 제 1 항에 있어서,
    상기 플래시 메모리의 페이지 버퍼에 구비되어 있는 캐시 래치로부터 이전에 기록된 프로그램 데이터를 읽어오는 단계는,
    상기 읽어온 프로그램 데이터를 상기 페이지 버퍼의 프로그램 래치로 카피하는 단계를 포함하는 프로그램 페일 처리 방법.
  7. 제 1 항에 있어서,
    상기 유효 데이터는 카피백 동작을 통해 상기 프리 블록의 대응되는 영역으로 카피되는 프로그램 페일 처리 방법.
  8. 제 1 항에 있어서,
    상기 카피백 동작 시, 상기 유효 데이터의 페이지 어드레스의 블록 어드레스의 맵핑 정보는 변경되고 페이지 어드레스 맵핑 정보는 그대로 유지되는 프로그램 페일 처리 방법.
  9. 이전에 기록된 프로그램 데이터의 프로그램 페일 여부가 확인될 때까지 캐시 래치에 저장된 프로그램 데이터가 유지되는 페이지 버퍼를 구비한 플래시 메모리; 그리고
    상기 플래시 메모리의 기록 동작을 제어하는 호스트를 포함하며,
    상기 호스트는, 상기 프로그램 페일이 검출된 경우 상기 캐시 래치에 저장되어 있는 상기 프로그램 데이터가 새로 할당된 메모리 블록으로 재기록 되도록 제어하는 사용자 장치.
  10. 제 9 항에 있어서,
    상기 호스트는 상기 프로그램 페일이 검출될 때마다 상기 플래시 메모리의 예비 영역을 프리 블록으로 할당하고,
    상기 프로그램 페일이 발생된 메모리 블록에 포함되어 있는 유효 데이터가 상기 할당된 프리 블록의 대응되는 영역으로 카피되도록 제어하는 사용자 장치.
KR1020100041401A 2010-05-03 2010-05-03 사용자 장치 및 그것의 프로그램 페일 처리 방법 KR20110121897A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100041401A KR20110121897A (ko) 2010-05-03 2010-05-03 사용자 장치 및 그것의 프로그램 페일 처리 방법
US13/074,224 US20110271041A1 (en) 2010-05-03 2011-03-29 Electronic device comprising flash memory and related method of handling program failures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100041401A KR20110121897A (ko) 2010-05-03 2010-05-03 사용자 장치 및 그것의 프로그램 페일 처리 방법

Publications (1)

Publication Number Publication Date
KR20110121897A true KR20110121897A (ko) 2011-11-09

Family

ID=44859220

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100041401A KR20110121897A (ko) 2010-05-03 2010-05-03 사용자 장치 및 그것의 프로그램 페일 처리 방법

Country Status (2)

Country Link
US (1) US20110271041A1 (ko)
KR (1) KR20110121897A (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160000956A (ko) * 2014-06-25 2016-01-06 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
KR20160038160A (ko) * 2014-09-29 2016-04-07 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 동작 방법
US9378824B2 (en) 2014-09-17 2016-06-28 SK Hynix Inc. Memory system and operation method thereof
KR20170098024A (ko) * 2016-02-19 2017-08-29 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법
US10073660B2 (en) 2016-06-27 2018-09-11 SK Hynix Inc. Memory system for performing fail bit check operation and operating method of the same
KR20190125859A (ko) * 2018-04-30 2019-11-07 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102316532B1 (ko) * 2021-05-24 2021-10-22 한양대학교 산학협력단 플래시 메모리에서의 런타임 배드 블록 관리 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9798623B2 (en) 2012-05-11 2017-10-24 Seagate Technology Llc Using cache to manage errors in primary storage
KR102072449B1 (ko) 2012-06-01 2020-02-04 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 리페어 방법
US9026718B2 (en) * 2012-06-11 2015-05-05 Samsung Electronics Co., Ltd. Method and apparatus for fault tolerant FOTA update with single backup block write
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
CN102902520A (zh) * 2012-08-23 2013-01-30 浪潮(北京)电子信息产业有限公司 一种有限资源下数据缓冲方法和装置
US9575884B2 (en) 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
US9690571B2 (en) * 2013-12-31 2017-06-27 Nxp Usa, Inc. System and method for low cost patching of high voltage operation memory space
KR102530641B1 (ko) * 2018-03-21 2023-05-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20200110862A (ko) * 2019-03-18 2020-09-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 위한 컨트롤러

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5559957A (en) * 1995-05-31 1996-09-24 Lucent Technologies Inc. File system for a data storage device having a power fail recovery mechanism for write/replace operations
US7690031B2 (en) * 2000-01-06 2010-03-30 Super Talent Electronics, Inc. Managing bad blocks in flash memory for electronic data flash card
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
KR100437461B1 (ko) * 2002-01-12 2004-06-23 삼성전자주식회사 낸드 플래시 메모리 장치 및 그것의 소거, 프로그램,그리고 카피백 프로그램 방법
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
KR100672150B1 (ko) * 2005-02-23 2007-01-19 주식회사 하이닉스반도체 불휘발성 메모리 장치 및 그것의 페이지 버퍼 동작 방법
JP4758666B2 (ja) * 2005-03-17 2011-08-31 株式会社日立製作所 記憶制御システム及び記憶制御方法
KR100648286B1 (ko) * 2005-07-04 2006-11-23 삼성전자주식회사 단일의 페이지 버퍼 구조로 멀티-비트 및 단일-비트프로그램 동작을 수행하는 플래시 메모리 장치
US8132045B2 (en) * 2009-06-16 2012-03-06 SanDisk Technologies, Inc. Program failure handling in nonvolatile memory

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160000956A (ko) * 2014-06-25 2016-01-06 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
US9378824B2 (en) 2014-09-17 2016-06-28 SK Hynix Inc. Memory system and operation method thereof
KR20160038160A (ko) * 2014-09-29 2016-04-07 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 동작 방법
KR20170098024A (ko) * 2016-02-19 2017-08-29 에스케이하이닉스 주식회사 반도체 메모리 장치의 컨트롤러 및 이의 동작 방법
US10108506B2 (en) 2016-02-19 2018-10-23 SK Hynix Inc. Controller of semiconductor memory device and method of operating the same
US10073660B2 (en) 2016-06-27 2018-09-11 SK Hynix Inc. Memory system for performing fail bit check operation and operating method of the same
KR20190125859A (ko) * 2018-04-30 2019-11-07 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR102316532B1 (ko) * 2021-05-24 2021-10-22 한양대학교 산학협력단 플래시 메모리에서의 런타임 배드 블록 관리 방법

Also Published As

Publication number Publication date
US20110271041A1 (en) 2011-11-03

Similar Documents

Publication Publication Date Title
KR20110121897A (ko) 사용자 장치 및 그것의 프로그램 페일 처리 방법
CN109634517B (zh) 进行存取管理的方法、记忆装置、电子装置和其控制器
JP4729062B2 (ja) メモリシステム
KR101888009B1 (ko) 저장 장치
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
CN106598479B (zh) 闪速存储器的故障安全擦除的方法和装置
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
US20130046918A1 (en) Method writing meta data with reduced frequency
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US20150186065A1 (en) Memory system and bad block management method
US10579483B2 (en) Storing a compact flash physical-to-host logical address mapping table on power loss
TWI523030B (zh) 緩衝記憶體管理方法、記憶體控制器與記憶體儲存裝置
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
US11714656B2 (en) Memory system executing loading of software at startup and control method
US11347433B2 (en) Method for performing sudden power off recovery management, associated memory device and controller thereof, and associated electronic device
CN107193485B (zh) 储存装置、其控制单元、及可用于储存装置的数据储存方法
JP2010128697A (ja) メモリシステム
US11094381B2 (en) Rapid restart protection for a non-volatile memory system
US9116794B2 (en) Storage device data protection system
US11809748B2 (en) Control method of flash memory controller and associated flash memory controller and electronic device
US20230161698A1 (en) Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management
US10210939B1 (en) Solid state storage device and data management method
TWI639113B (zh) 儲存裝置及其控制單元、可用於儲存裝置的資料儲存方法
TW202405684A (zh) 借助針對性保護控制來進行記憶體裝置的資料管理的方法、記憶體裝置、電子裝置以及記憶體裝置的記憶體控制器
TW202328922A (zh) 借助緩衝器使用減少控制來進行記憶體裝置之存取管理的方法、記憶體裝置、電子裝置以及記憶體裝置的控制器

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