KR102002826B1 - 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법 - Google Patents

저장 장치, 플래시 메모리 및 저장 장치의 동작 방법 Download PDF

Info

Publication number
KR102002826B1
KR102002826B1 KR1020120139675A KR20120139675A KR102002826B1 KR 102002826 B1 KR102002826 B1 KR 102002826B1 KR 1020120139675 A KR1020120139675 A KR 1020120139675A KR 20120139675 A KR20120139675 A KR 20120139675A KR 102002826 B1 KR102002826 B1 KR 102002826B1
Authority
KR
South Korea
Prior art keywords
bit data
sequence number
transaction
programmed
flash memory
Prior art date
Application number
KR1020120139675A
Other languages
English (en)
Other versions
KR20140071743A (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 KR1020120139675A priority Critical patent/KR102002826B1/ko
Priority to US14/088,654 priority patent/US9123725B2/en
Priority to JP2013249473A priority patent/JP6487142B2/ja
Priority to US14/095,240 priority patent/US9589888B2/en
Priority to EP13195620.3A priority patent/EP2759935B1/en
Priority to CN201310646008.0A priority patent/CN103853503B/zh
Publication of KR20140071743A publication Critical patent/KR20140071743A/ko
Priority to US14/798,474 priority patent/US9449918B2/en
Application granted granted Critical
Publication of KR102002826B1 publication Critical patent/KR102002826B1/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
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L23/00Details of semiconductor or other solid state devices
    • H01L23/52Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames
    • H01L23/522Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames including external interconnections consisting of a multilayer structure of conductive and insulating layers inseparably formed on the semiconductor body
    • H01L23/525Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames including external interconnections consisting of a multilayer structure of conductive and insulating layers inseparably formed on the semiconductor body with adaptable interconnections
    • H01L23/5256Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames including external interconnections consisting of a multilayer structure of conductive and insulating layers inseparably formed on the semiconductor body with adaptable interconnections comprising fuses, i.e. connections having their state changed from conductive to non-conductive
    • 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
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L23/00Details of semiconductor or other solid state devices
    • H01L23/52Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames
    • H01L23/522Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames including external interconnections consisting of a multilayer structure of conductive and insulating layers inseparably formed on the semiconductor body
    • H01L23/532Arrangements for conducting electric current within the device in operation from one component to another, i.e. interconnections, e.g. wires, lead frames including external interconnections consisting of a multilayer structure of conductive and insulating layers inseparably formed on the semiconductor body characterised by the materials
    • H01L23/5329Insulating materials
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B20/00Read-only memory [ROM] devices
    • H10B20/20Programmable ROM [PROM] devices comprising field-effect components
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/0001Technical content checked by a classifier
    • H01L2924/0002Not covered by any one of groups H01L24/00, H01L24/00 and H01L2224/00

Abstract

저장 장치, 플래시 메모리 및 저장 장치의 동작 방법이 제공된다. 상기 저장 장치는 플래시 메모리, 및 상기 플래시 메모리에 제1 비트 데이터와 제2 비트 데이터를 프로그램하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 동일 트랜잭션 내에서 프로그램할 때, 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 다른 트랜잭션 내에서 프로그램할 때, 상기 제1 비트 데이터를 백업하고, 상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정되는 컨트롤러를 포함한다.

Description

저장 장치, 플래시 메모리 및 저장 장치의 동작 방법{Storage device, flash memory and operating method for storage device}
본 발명은 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법에 관한 것이다.
최근 저장 장치는 다양한 형태로 사용되고 있다. 예를 들어, SD(Secure Digital) 카드, MMC(Multi-Media Card), xD(eXtreme Digital) 카드, CF(Compact Flash) 카드, SM(Smart Media) 카드, 메모리 스틱 등과 같은 메모리 카드(memory card) 형태로 사용될 수 있다. 또한, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 형태로 사용될 수도 있다.
한편, 일반적인 플래시 메모리 저장 장치는, MSB 페이지를 플래시 메모리에 프로그램하기 전, 상기 MSB 페이지와 쌍을 이루는 LSB 페이지를 백업하고, 이후 상기 MSB 페이지를 플래시 메모리에 프로그램한다.
본 발명이 해결하려는 과제는, 데이터의 백업을 최소화할 수 있는 저장 장치를 제공하는 것이다.
본 발명이 해결하려는 다른 과제는, 데이터의 백업을 최소화할 수 있는 플래시 메모리를 제공하는 것이다.
본 발명이 해결하려는 또 다른 과제는, 데이터의 백업을 최소화할 수 있는 저장 장치의 동작 방법을 제공하는 것이다.
본 발명이 해결하려는 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 과제를 해결하기 위한 본 발명의 저장 장치의 일 태양은 플래시 메모리, 및 상기 플래시 메모리에 제1 비트 데이터와 제2 비트 데이터를 프로그램하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 동일 트랜잭션 내에서 프로그램할 때, 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 다른 트랜잭션 내에서 프로그램할 때, 상기 제1 비트 데이터를 백업하고, 상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정되는 컨트롤러를 포함한다.
상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 동일 트랜잭션 내에서 프로그램하는 것으로 판단할 수 있다.
또한, 상기 기준 시퀀스 넘버는 이전 트랜잭션(previoous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버일 수 있다.
또한, 상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장할 수 있다.
상기 컨트롤러는 상기 싱크 신호에 따라 상기 플래시 메모리에 다수의 비트 데이터를 프로그램할 수 있다.
또한, 상기 트랜잭션은 적어도 하나의 태스크를 포함하고, 상기 적어도 하나의 태스크는 상기 컨트롤러가 상기 플래시 메모리에 상기 다수의 비트 데이터를 프로그램하는 것을 포함할 수 있다.
상기 컨트롤러는 상기 플래시 메모리의 백업 블록에 상기 제1 비트 데이터를 백업할 수 있다.
또한, 상기 컨트롤러는 상기 플래시 메모리의 사용자 블록에 상기 제1 비트 데이터와 상기 제2 비트 데이터를 프로그램할 수 있다.
상기 과제를 해결하기 위한 본 발명의 저장 장치의 다른 태양은 플래시 메모리, 및 상기 플래시 메모리에 제1 비트 데이터와 제2 비트 데이터를 프로그램하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고, 현재 트랜잭션 내에서 상기 제2 비트 데이터를 프로그램할 때, 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 현재 트랜잭션(current transaction) 내에서 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 크지 않은 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 백업하고, 상기 기준 시퀀스 넘버는 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버인 컨트롤러를 포함할 수 있다.
상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정될 수 있다.
또한, 상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장할 수 있다.
상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터는 동일 트랜잭션(transaction) 내에서 프로그램할 수 있다.
상기 컨트롤러는 상기 플래시 메모리의 백업 블록에 상기 제1 비트 데이터를 백업할 수 있다.
또한, 상기 컨트롤러는 상기 플래시 메모리의 사용자 블록에 상기 제1 비트 데이터와 상기 제2 비트 데이터를 프로그램할 수 있다.
상기 과제를 해결하기 위한 본 발명의 저장 장치의 또 다른 태양은 플래시 메모, 및 적어도 하나의 트랜잭션 내에서 상기 플래시 메모리에 제1 비트 데이터와 제2 비트 데이터를 프로그램하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고, 호스트로부터 전송되는 싱크 신호를 이용하여 상기 적어도 하나의 트랜잭션을 결정하고, 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버를 저장하는 컨트롤러를 포함한다.
상기 컨트롤러는 현재 트랜잭션 내에서 상기 제2 비트 데이터를 프로그램할 때, 상기 제1 비트 데이터의 기준 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 크지 않은 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 백업하고, 상기 기준 시퀀스 넘버는 상기 이전 트랜잭션 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버일 수 있다.
또한, 상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터는 동일 트랜잭션(transaction) 내에서 프로그램할 수 있다.
상기 과제를 해결하기 위한 본 발명의 플래시 메모리 장치의 일 태양은 제1 비트 데이터와 제2 비트 데이터가 프로그램되되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터인 제1 블록, 및 상기 제1 비트 데이터와 상기 제2 비트 데이터가 동일 트랜잭션 내에서 프로그램될 때, 상기 제1 비트 데이터가 비백업되고, 상기 제1 비트 데이터와 상기 제2 비트 데이터가 다른 트랜잭션 내에서 프로그램될 때, 상기 제1 비트 데이터가 백업되는 제2 블록을 포함하되, 상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정된다.
상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터를 상기 제2 블록에 비백업하는 컨트롤러를 더 포함할 수 있다.
또한, 상기 기준 시퀀스 넘버는 이전 트랜잭션(previoous transaction) 내에서 최종 프로그램된 비트 데이터의 시퀀스 넘버일 수 있다.
또한, 상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장할 수 있다.
상기 싱크 신호에 따라 상기 제1 블록에 다수의 비트 데이터가 프로그램될 수 있다.
또한, 상기 트랜잭션은 적어도 하나의 태스크를 포함하고, 상기 적어도 하나의 태스크는 상기 제1 블록에 상기 다수의 비트 데이터가 프로그램되는 것을 포함할 수 있다.
상기 과제를 해결하기 위한 본 발명의 저장 장치의 동작 방법의 일 태양은 제1 비트 데이터를 플래시 메모리에 프로그램하고, 제2 비트 데이터를 상기 플래시 메모리에 프로그램하기 전에, 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰지 판단하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고, 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터를 비백업하는 것을 포함하되, 상기 기준 시퀀스 넘버는 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버이다.
상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 크지 않은 경우, 상기 제1 비트 데이터를 백업하는 것을 더 포함할 수 있다.
또한, 상기 제1 비트 데이터를 플래시 메모리에 프로그램하는 것은 상기 플래시 메모리의 사용자 블록에 상기 제1 비트 데이터를 프로그램하고, 상기 제1 비트 데이터를 백업하는 것은 상기 플래시 메모리의 백업 블록에 상기 제1 비트 데이터를 백업할 수 있다.
상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정될 수 있다.
또한, 현재 트랜잭션(current transaction)이 종료되는 것을 판단하고, 상기 현재 트랜잭션이 종료될 때, 현재 트랜잭션 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버를 상기 기준 시퀀스 넘버로 갱신하여 저장하는 것을 더 포함할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 시스템을 설명하기 위한 블록도이다.
도 2는 도 1에 도시된 호스트의 예시적 구성을 설명하기 위한 블록도이다.
도 3은 도 1에 도시된 컨트롤러의 예시적 구성을 설명하기 위한 블록도이다.
도 4 내지 도 7은 본 발명의 일 실시예에 따른 시스템의 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기 위한 흐름도이다.
도 9 내지 도 12는 도 8의 동작 방법에 따라 프로그램되는 플래시 메모리를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
하나의 소자(elements)가 다른 소자와 "접속된(connected to)" 또는 "커플링된(coupled to)" 이라고 지칭되는 것은, 다른 소자와 직접 연결 또는 커플링된 경우 또는 중간에 다른 소자를 개재한 경우를 모두 포함한다. 반면, 하나의 소자가 다른 소자와 "직접 접속된(directly connected to)" 또는 "직접 커플링된(directly coupled to)"으로 지칭되는 것은 중간에 다른 소자를 개재하지 않은 것을 나타낸다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
예컨대, 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 "전송 또는 출력"하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터 또는 신호를 "전송 또는 출력"할 수 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터 또는 신호를 상기 다른 구성요소로 "전송 또는 출력"할 수 있음을 의미한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또한, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
비록 제1, 제2 등이 다양한 소자, 구성요소 및/또는 섹션들을 서술하기 위해서 사용되나, 이들 소자, 구성요소 및/또는 섹션들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자, 구성요소 또는 섹션들을 다른 소자, 구성요소 또는 섹션들과 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자, 제1 구성요소 또는 제1 섹션은 본 발명의 기술적 사상 내에서 제2 소자, 제2 구성요소 또는 제2 섹션일 수도 있음은 물론이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 시스템을 설명하기 위한 블록도이다. 도 2는 도 1에 도시된 호스트의 예시적 구성을 설명하기 위한 블록도이다. 도 3은 도 1에 컨트롤러된 호스트의 예시적 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 시스템(1)은 호스트(host; 100)와 저장 장치(200)를 포함한다.
저장 장치(200)는 데이터를 저장하는 플래시 메모리(flash memory; 220)와, 플래시 메모리(220)를 제어하는 컨트롤러(controller; 210)를 포함할 수 있다.
컨트롤러(210)는 호스트(100) 및 플래시 메모리(220)에 연결된다. 컨트롤러(210)는 호스트(100)의 커맨드(command)에 응답하여, 플래시 메모리(220)를 억세스하도록 구성된다. 예를 들어, 컨트롤러(210)는 플래시 메모리(220)의 리드(read), 라이트(write), 이레이즈(erase), 또는 백그라운드(background) 동작을 제어하도록 구성된다. 컨트롤러(210)는 플래시 메모리(220) 및 호스트(100) 사이에 인터페이스를 제공하도록 구성된다.
컨트롤러(210)는 플래시 메모리(220)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
플래시 메모리(220)는 적어도 하나의 메모리 셀(미도시)을 포함한다. 플래시 메모리(220)는 하나의 메모리 셀에 다수의 비트 데이터를 저장하는 멀티 레벨 셀(MLC; Multi Level Cell) 플래시 메모리일 수 있다. 플래시 메모리(220)는 예를 들어, 낸드(NAND) 플래시 메모리 또는 노어(NOR) 플래시 메모리를 포함한다.
하나의 메모리 셀에는 제1 비트 데이터와 제2 비트 데이터가 프로그램될 수 있다. 얘를 들어, 제1 비트 데이터는 하위 비트(LSB; Least Significant Bit) 데이터이고, 제2 비트 데이터는 상위 비트(MSB; Most Signiricant Bit) 데이터일 수 있다. 메모리 셀은 문턱 전압 분포에 따라 4개의 상태(11, 01, 10, 11) 중 어느 하나를 갖도록 프로그램된다. 본 발명의 일 실시예에 따른 시스템(1)에서는, 설명의 편의를 위해 하나의 메모리 셀이 2개의 비트 값을 갖는 것으로 설명하였으나, 본 발명이 이에 한정되는 것은 아니고, 3개 이상의 비트 값을 가질 수도 있다.
메모리 셀은 하나의 워드 라인(word line)을 공유하는 하위 비트 페이지(LSB page)와 상위 비트 페이지(MSB page)로 구성될 수 있다. 플래시 메모리(220)는 페이지 단위로 라이트(write), 리드(read) 동작 등을 수행할 수 있다. 플래시 메모리(220)는 메모리 셀에 하위 비트 페이지를 먼저 프로그램하고, 하위 비트 페이지가 프로그램된 메모리 셀에 상위 비트 페이지를 프로그램한다.
도 2를 참조하면, 예시적으로, 호스트(100)는 호스트 프로세서(host processor; 110), 인터페이스 모듈(interface module; 120)을 포함할 수 있다. 또는, 호스트(100)는 도시하지 않은 RAM, ROM, 기타 구성요소 등을 더 포함할 수 있다.
호스트 프로세서(110)는 호스트(100)의 제반 동작을 제어한다. 호스트 프로세서(110)는 어플리케이션(application) 등의 요청에 응답하여, 저장 장치(200)에 라이트(write) 커맨드, 리드(read) 커맨드, 이레이즈(erase) 커맨드 등을 전송할 수 있다. 호스트 프로세서(110)는 저장 장치(200)에 라이트(write) 대상인 데이터와, 이하에서 설명할 싱크 신호를 전송할 수 있다.
인터페이스 모듈(120)은 저장 장치(200)의 호스트 인터페이스(211)와 통신하기 위한 용도로 사용된다. 호스트(100)는 예를 들어, USB(Universal Serial Bus) 프로토콜, MMC(multimedia card) 프로토콜, PCI(peripheral component interconnection) 프로토콜, PCI-E(PCI-express) 프로토콜, ATA(Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI(enhanced small disk interface) 프로토콜, 그리고 IDE(Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(저장 장치)와 통신하도록 구성된다.
도 3을 참조하면, 예시적으로, 컨트롤러(210)는 프로세서(processor; 213), 호스트 인터페이스(host interface; 211), 캐시 버퍼(cache buffer; 212), 메모리 인터페이스(memory interface214)를 포함할 수 있다.
호스트 인터페이스(211)는 호스트(100) 및 컨트롤러(210) 사이의 데이터/커맨드 등의 교환을 수행하기 위한 프로토콜을 포함한다. 컨트롤러(210)는 예를 들어, USB 프로토콜, MMC 프로토콜, PCI 프로토콜, PCI-E 프로토콜, ATA 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI 프로토콜, ESDI 프로토콜, 그리고 IDE 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다.
메모리 인터페이스(214)는 플래시 메모리(220)와 인터페이싱한다. 메모리 인터페이스(214)는 예를 들어, 낸드(NAND) 인터페이스 또는 노어(NOR) 인터페이스를 포함한다.
캐시 버퍼(212)는 프로세서(120)의 동작 메모리, 플래시 메모리(220) 및 호스트(100) 사이의 캐시 메모리, 플래시 메모리(220) 및 호스트(100) 사이의 버퍼 메모리 중 적어도 하나로서 사용될 수 있다. 캐시 버퍼(212)는 플래시 메모리(220)에 라이트(write)할 데이터 또는 플래시 메모리(220)로부터 리드(read)된 데이터를 임시 저장할 수 있다. 캐시 버퍼(212)는 이하에서 설명할 페이지의 시퀀스 넘버(sequence number) 등을 저장할 수도 있다.
프로세서(213)는 컨트롤러(210)의 제반 동작을 제어한다.
한편, 도시하지 않았으나, 컨트롤러(210)는 오류 정정 블록을 추가적으로 포함하도록 구성될 수 있다. 오류 정정 블록은 오류 정정 코드(ECC)를 이용하여 플래시 메모리(220)로부터 읽어진 데이터의 오류를 검출하고, 정정하도록 구성될 수 있다.
이하에서는 도 4 내지 도 7을 참조하여 본 발명의 일 실시예에 따른 시스템의 동작을 설명하기로 한다. 도 4 내지 도 7은 본 발명의 일 실시예에 따른 시스템의 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 호스트(100)는 파일 시스템(file system; 130)을 포함하는 소프트웨어 계층을 가지고, 파일 시스템(130)은 호스트 프로세서(110)에 의해 구동될 수 있다. 컨트롤러(210)는 플래시 변환 계층(FTL/BUFFER; 215)을 포함하는 소프트웨어 계층을 가지고, 플래시 변환 계층(215)은 컨트롤러(210)에 의해 구동될 수 있다.
파일 시스템(130)은 어플리케이션 등으로부터 라이트(write) 요청을 받고, 라이트(write) 대상인 데이터와 섹터 주소를 플래시 변환 계층(215)으로 전송한다. 파일 시스템(130)은 다수의 태스크(task; 10~40)를 플래시 변환 계층(215)으로 전송할 수 있다. 여기서, 태스크는 호스트(100)의 커맨드에 따라, 플래시 메모리(220)를 억세스하는 작업의 단위를 나타낸다. 플래시 메모리(220)에 라이트(write)할 다수의 데이터는 적어도 하나의 태스크로 그루핑(grouping)될 수 있다.
플래시 변환 계층(215)은 파일 시스템(130)으로부터 전송된 다수의 태스크(10~40)를 플래시 메모리(220)에 전송하지 않고, 후술하는 싱크 신호가 전송될 때까지 캐시 버퍼(212) 등에 임시 저장한다.
도 5를 참조하면, 파일 시스템(130)은 플래시 변환 계층(215)에 싱크 신호(sync)를 전송한다. 싱크 신호(sync)는 캐시 버퍼(212) 등에 임시 저장된 다수의 태스크(10~40)를 플래시 메모리(220)에 일시에 프로그램 하도록 하는 기능을 수행한다.
도 6을 참조하면, 플래시 변환 계층(215)은 파일 시스템(130)으로부터 전송된 싱크 신호(Sync)에 따라, 라이트(write) 대상인 데이터와 페이지 주소를 플래시 메모리(220)로 전송한다.
플래시 변환 계층(215)은 파일 시스템(130)으로부터 전송된 논리 주소인 섹터 주소를, 플래시 메모리(220)의 물리 주소인 페이지 주소로 변환하여 전송한다. 섹터 주소와 페이지 주소 간의 매핑 정보는 캐시 버퍼(212) 또는 플래시 메모리(220) 등에 저장될 수 있다.
도 7을 참조하면, 플래시 변환 계층(215)은 다수의 태스크(10~40)의 수행이 완료된 후, 즉, 라이트(write) 대상인 다수의 데이터가 플래시 메모리(220)에 모두 프로그램 된 후, 파일 시스템(130)에 완료 신호(Sync Complete)를 전송한다.
본 발명의 일 실시예에 따른 시스템(1)에서는, 플래시 메모리(220)에 데이터를 라이트(write)하면서, 상술한 바와 같이 하위 비트 페이지를 먼저 프로그램하고, 하위 비트 페이지가 프로그램된 메모리 셀에 상위 비트 페이지를 프로그램한다.
상위 비트 페이지를 프로그램하는 과정에서, 상위 비트 페이지와 쌍을 이루는(paired) 하위 비트 페이지의 상태 변화가 수반되기 때문에, SPO(Sudden Power Off) 등이 발생하는 경우, 이미 프로그램된 하위 비트 페이지가 손상될 수 있다.
이를 해결하기 위해, 일반적인 플래시 메모리 저장 장치는 상위 비트 페이지를 프로그램하기 전에, 상위 비트 페이지와 쌍을 이루는 하위 비트 페이지를 백업하고, 이 후 상위 비트 페이지를 프로그램한다. 이와 같이 모든 하위 비트 페이지를 백업하는 경우 플래시 메모리 저장 장치의 성능이 저하될 수 있다.
본 발명의 일 실시예에 따른 시스템(1)에서는, 컨트롤러(210)가 호스트(100)로부터 전송되는 싱크 신호를 이용하여 트랜잭션(transaction)을 결정한다. 트랜잭션은 다수의 태스크를 일시에 수행할 수 있는 작업의 단위를 나타낸다. 상술한 바와 같이, 호스트(100)로부터 전송되는 싱크 신호에 따라, 다수의 태스크가 일시에 수행될 수 있으므로, 컨트롤러(210)는 호스트(100)로부터 전송되는 싱크 신호를 이용하여 트랜잭션을 결정한다.
컨트롤러(210)는, 동일 트랜잭션 내에서 하위 비트 페이지와 상위 비트 페이지를 프로그램하는 경우에는, 하위 비트 페이지를 백업하지 않는다. 그리고, 컨트롤러(210)는, 다른 트랜잭션 내에서 하위 비트 페이지와 상위 비트 페이지를 프로그램하는 경우에는, 하위 비트 페이지를 백업한다.
트랜잭션의 범위를 판단하기 위해서, 컨트롤러(210)는 하위 비트 페이지의 시퀀스 넘버(sequence number)와 기준 시퀀스 넘버를 비교할 수 있다.
시퀀스 넘버는 플래시 메모리(220)에 프로그램되는 페이지의 메타 데이타(meta data)이다. 후술하는 바와 같이, 시퀀스 넘버는 플래시 메모리(220)에 프로그램되는 페이지에, 제1 채널(Ch 0)의 제1 웨이(way 0), 제2 채널(Ch 1)의 제1 웨이(way 0), 제1 채널(Ch 0)의 제2 웨이(way 1), 제2 채널(Ch 1)의 제2 웨이(way 1)의 순서로 할당된다. 각 페이지의 시퀀스 넘버는 캐시 버퍼(212) 또는 플래시 메모리(220)에 저장될 수 있다.
기준 시퀀스 넘버는 예를 들어, 이전 트랜잭션(previous transaction) 내에서 최종 프로그램된 페이지의 시퀀스 넘버, 즉 라스트 시퀀스 넘버(last sequence number)일 수 있다. 라스트 시퀀스 넘버의 디폴트(default) 값 또는 초기 값은 0으로 저장될 수 있다.
컨트롤러(210)는 현재 트랜잭션 내에서 상위 비트 페이지를 프로그램할 때, 하위 비트 페이지의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 하위 비트 페이지와 상위 비트 페이지를 동일 트랜잭션 내에서 프로그램하는 것으로 판단하고, 현재 트랜잭션 내에서 하위 비트 페이지를 비백업한다. 컨트롤러(210)는, 이와 반대로, 하위 비트 페이지의 시퀀스 넘버가 기준 시퀀스 넘버보다 크지 않은 경우, 하위 비트 페이지와 상위 비트 페이지를 다른 트랜잭션 내에서 프로그램하는 것으로 판단하고, 현재 트랜잭션 내에서 하위 비트 페이지를 백업한다.
본 발명의 일 실시예에 따른 시스템(1)에 의하면, 하위 비트 페이지의 백업을 최소화하고 저장 장치의 성능을 향상시킬 수 있다.
다시, 도 1을 참조하면, 컨트롤러(210) 및 플래시 메모리(220)는 하나의 저장 장치(200)로 집적될 수도 있다. 예시적으로, 컨트롤러(210) 및 플래시 메모리(220)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(210) 및 플래시 메모리(220)는 하나의 반도체 장치로 집적되어 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS), PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱 등과 같은 메모리 카드로 구성될 수 있다.
다른 예로서, 컨트롤러(210) 및 플래시 메모리(220)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성될 수 있다. 솔리드 스테이트 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다.
한편, 시스템(1)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
한편, 예시적으로, 플래시 메모리(220), 저장 장치(200), 또는 시스템(1)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 플래시 메모리(220), 저장 장치(200), 또는 시스템(1)은 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) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
이하에서는 도 8을 참조하여 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설명하기로 한다. 도 8은 본 발명의 일 실시예에 따른 시스템의 동작 방법을 설여하기 위한 흐름도이다.
먼저, 컨트롤러(210)는 플래시 메모리(220)에 프로그램할 데이터가 상위 비트 페이지인지 판단한다(S610).
이어서, 컨트롤러(210)는, 플래시 메모리(220)에 프로그램할 데이터가 상위 비트 페이지인 경우, 상위 비트 페이지와 쌍을 이루는(paired) 하위 비트 페이지의 시퀀스 넘버가 라스트 시퀀스 넘버(last sequence number)보다 큰지 판단한다(S620).
이어서, 컨트롤러(210)는, 하위 비트 페이지의 시퀀스 넘버가 라스트 시퀀스 넘버보다 크지 않은 경우, 하위 비트 페이지를 백업한다(S630). 한편, 컨트롤러(210)는, 하위 비트 페이지의 시퀀스 넘버가 라스트 시퀀스 넘버보다 큰 경우, 하위 비트 페이지를 백업하지 않는다.
이어서, 컨트롤러(210)는 플래시 메모리(220)에 상위 비트 페이지를 프로그램한다(S640). 한편, 컨트롤러(210)는, 플래시 메모리(220)에 프로그램할 데이터가 하위 비트 페이지인 경우, 플래시 메모리(220)에 하위 비트 페이지를 프로그램한다(S650). 상술한 바와 같이, 상위 비트 페이지와 쌍을 이루는(paired) 하위 비트 페이지가 먼저 프로그램되는 것이 일반적이다.
이어서, 컨트롤러(210)는 현재 트랜잭션(current transaction)이 종료되는지 판단한다(S660).
이어서, 컨트롤러(210)는, 현재 트랜잭션이 종료된 경우, 현재 트랜잭션 내에서 최종 프로그램한 페이지의 시퀀스 넘버를 라스트 시퀀스 넘버로 갱신하여 저장한다(S670). 컨트롤러(210)는 현재 트랜잭션이 종료되지 않은 경우, S610 단계부터 반복한다.
이하에서는 도 8의 동작 방법에 따라 프로그램되는 플래시 메모리를 설명하기로 한다. 도 9 내지 도 12는 도 8의 동작 방법에 따라 프로그램되는 플래시 메모리를 설명하기 위한 도면이다.
도 9를 참조하면, 멀티 태스킹(multi-tasking) 환경에서, 호스트(100)가 제1 애플리케이션에 관한 태스크(Task A)와 제2 애플리케이션에 관한 태스크(Task B)를 저장 장치(200)에 요청할 수 있다. 제1 애플리케이션에 관한 태스크(Task A)는 제1 태스크(10), 제3 태스크(30), 제4 태스크(40)를 포함하고, 제2 애플리케이션에 관한 태스크(Task B)는, 제2 태스크(20), 제5 태스크(50), 제6 태스크(60), 제7 태스크(70)를 포함할 수 있다.
여기서, 호스트(100)는 1차적으로 제1 태스크(10), 제2 태스크(20), 제3 태스크(30), 제4 태스크(40)의 데이터를 저장 장치(200)에 전송하고, 제1 태스크(10), 제2 태스크(20), 제3 태스크(30), 제4 태스크(40)가 제1 싱크 신호(Sync 0)에 따라 제1 트랜잭션을 이루어 플래시 메모리(220)에 프로그램될 수 있다.
도 10을 참조하면, 플래시 메모리(220)는 하위 비트 페이지와 상위 비트 페이지가 프로그램되는 제1 블록과, 하위 비트 페이지가 백업되는 제2 블록을 포함한다. 예를 들어, 제1 블록은 사용자 블록(user block)이고, 제2 블록은 백업 블록(backup block)일 수 있다. 플래시 메모리(220)의 각 페이지의 크기는 예를 들어 8KByte일 수 있다.
제1 태스크(10), 제2 태스크(20), 제3 태스크(30), 제4 태스크(40)가 수행됨에 따라, 플래시 메모리(220)의 하위 비트 페이지와 상위 비트 페이지가 프로그램된다. 플래시 메모리(220)에 프로그램된 페이지에는 시퀀스 넘버가 할당되는데, 제1 채널(Ch 0)의 제1 웨이(way 0), 제2 채널(Ch 1)의 제1 웨이(way 0), 제1 채널(Ch 0)의 제2 웨이(way 1), 제2 채널(Ch 1)의 제2 웨이(way 1)의 순서로 할당된다.
호스트(100)에서 1차적으로 데이터가 전송되었으므로, 라스트 시퀀스 넘버(last sequence number)는 디폴트(default) 값 또는 초기 값으로 0일 수 있다.
도 10에서, 컨트롤러(210)는 제1 트랜잭션 내에서 시퀀스 넘버가 9, 10, 11, 12인 상위 비트 페이지를 프로그램하지만, 이와 쌍을 이루는 하위 비트 페이지의 시퀀스 넘버가 1, 2, 3, 4로 라스트 시퀀스 넘버보다 큰 경우이므로, 하위 비트 페이지를 백업 블록(backup block)에 백업하지 않는다. 시퀀스 넘버가 1, 2, 3, 4인 하위 비트 페이지와 시퀀스 넘버가 9, 10, 11, 12인 상위 비트 페이지는 동일한 제1 트랜잭션 내에서 프로그램하기 때문이다.
도 11을 참조하면, 호스트(100)는 2차적으로 제5 태스크(50), 제6 태스크(60), 제7 태스크(70)의 데이터를 저장 장치(200)에 전송하고, 제5 태스크(50), 제6 태스크(60), 제7 태스크(70)가 제2 싱크 신호(Sync 1)에 따라 제2 트랜잭션을 이루어 플래시 메모리(220)에 프로그램될 수 있다.
도 12를 참조하면, 라스트 시퀀스 넘버는 이전 트랜잭션, 즉 제1 트랜잭션에서 최종 프로그램한 하위 비트 페이지의 시퀀스 넘버인 13으로 갱신된다.
도 12에서, 컨트롤러(210)는 제2 트랜잭션 내에서 시퀀스 넘버가 17, 18, 19, 20, 25인 상위 비트 페이지를 프로그램하고, 이와 쌍을 이루는 하위 비트 페이지의 시퀀스 넘버가 5, 6, 7, 8, 13으로 라스트 시퀀스 넘버보다 크지 않은 경우이므로, 하위 비트 페이지를 미리 백업 블록에 백업한다. 시퀀스 넘버가 5, 6, 7, 8, 13인 하위 비트 페이지와 시퀀스 넘버가 17, 18, 19, 20, 25인 상위 비트 페이지는 각각 제1 트랜잭션과 제2 트랜잭션 내에서 프로그램하기 때문이다.
한편, 도 10을 참조하여 설명한 바와 마찬가지로, 컨트롤러(210)는 제2 트랜잭션 내에서 시퀀스 넘버가 26, 27, 28인 상위 비트 페이지를 프로그램하지만, 이와 쌍을 이루는 하위 비트 페이지는 백업 블록(backup block)에 백업하지 않는다.
본 발명의 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계는 프로세서에 의해 실행되는 하드웨어, 소프트웨어 모듈, 또는 그 2 개의 결합으로 직접 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈형 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 컴퓨터로 읽을 수 있는 기록 매체에 상주할 수도 있다. 예시적인 기록 매체는 프로세서에 커플링되며, 그 프로세서는 기록 매체로부터 정보를 판독할 수 있고 기록 매체에 정보를 기입할 수 있다. 다른 방법으로, 기록 매체는 프로세서와 일체형일 수도 있다. 프로세서 및 저장 매체는 주문형 집적회로(ASIC) 내에 상주할 수도 있다. ASIC는 사용자 단말기 내에 상주할 수도 있다. 다른 방법으로, 프로세서 및 저장 매체는 사용자 단말기 내에 개별 컴포넌트로서 상주할 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트 110: 호스트 프로세서
120: 인터페이스 모듈 200: 저장 장치
210: 컨트롤러 211: 호스트 인터페이스
212: 캐시 버퍼 213: 프로세서
214: 메모리 인터페이스 220: 플래시 메모리

Claims (20)

  1. 플래시 메모리; 및
    상기 플래시 메모리에 제1 비트 데이터와 상기 제1 비트 데이터보다 상위 비트 데이터인 제2 비트 데이터를 프로그램하고, 상기 제1 비트 데이터의 시퀀스 넘버에 기초하여, 상기 제1 비트 데이터와 상기 제2 비트 데이터가 동일 트랜잭션 내에서 프로그램하는지 여부를 판단하는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    상기 제1 비트 데이터와 상기 제2 비트 데이터를 동일 트랜잭션 내에서 프로그램하는 경우, 상기 제1 비트 데이터를 비백업하고,
    상기 제1 비트 데이터와 상기 제2 비트 데이터를 다른 트랜잭션 내에서 프로그램하는 경우, 상기 제1 비트 데이터를 백업하고,
    상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정되는 저장 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터를 동일 트랜잭션 내에서 프로그램하는 것으로 판단하는 저장 장치.
  3. 제2항에 있어서,
    상기 기준 시퀀스 넘버는 이전 트랜잭션(previoous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버인 저장 장치.
  4. 제3항에 있어서,
    상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장하는 저장 장치.
  5. 제1항에 있어서,
    상기 컨트롤러는 상기 싱크 신호에 따라 상기 플래시 메모리에 다수의 비트 데이터를 프로그램하는 저장 장치.
  6. 제5항에 있어서,
    상기 트랜잭션은 적어도 하나의 태스크를 포함하고, 상기 적어도 하나의 태스크는 상기 컨트롤러가 상기 플래시 메모리에 상기 다수의 비트 데이터를 프로그램하는 것을 포함하는 저장 장치.
  7. 플래시 메모리; 및
    상기 플래시 메모리에 제1 비트 데이터와 상기 제1 비트 데이터보다 상위 비트 데이터인 제2 비트 데이터를 프로그램하는 컨트롤러를 포함하고,
    상기 컨트롤러는 현재 트랜잭션 내에서 상기 제2 비트 데이터를 프로그램할 때, 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 현재 트랜잭션(current transaction) 내에서 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 크지 않은 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 백업하고,
    상기 기준 시퀀스 넘버는 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버인 저장 장치.
  8. 제7항에 있어서,
    상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정되는 저장 장치.
  9. 제8항에 있어서,
    상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장하는 저장 장치.
  10. 제7항에 있어서,
    상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터는 동일 트랜잭션(transaction) 내에서 프로그램하는 저장 장치.
  11. 플래시 메모리; 및
    적어도 하나의 트랜잭션 내에서 상기 플래시 메모리에 제1 비트 데이터와 상기 제1 비트 데이터보다 상위 비트 데이터인 제2 비트 데이터를 프로그램하는 컨트롤러를 포함하되,
    상기 컨트롤러는,
    호스트로부터 전송되는 싱크 신호를 이용하여 상기 적어도 하나의 트랜잭션을 결정하고, 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버를 기준 시퀀스 넘버로 저장하고,
    상기 제1 비트 데이터의 시퀀스 넘버와 상기 기준 시퀀스 넘버에 기초하여, 상기 제1 비트 데이터와 상기 제2 비트 데이터가 동일 트랜잭션 내에서 프로그램하는지 여부를 판단하는 저장 장치.
  12. 제11항에 있어서,
    상기 컨트롤러는 현재 트랜잭션 내에서 상기 제2 비트 데이터를 프로그램할 때, 상기 제1 비트 데이터의 기준 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 비백업하고, 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 크지 않은 경우, 상기 현재 트랜잭션 내에서 상기 제1 비트 데이터를 백업하고,
    상기 기준 시퀀스 넘버는 상기 이전 트랜잭션 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버인 저장 장치.
  13. 제12항에 있어서,
    상기 컨트롤러는 상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터와 상기 제2 비트 데이터는 동일 트랜잭션(transaction) 내에서 프로그램하는 저장 장치.
  14. 제1 비트 데이터와 제2 비트 데이터가 프로그램되되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터인 제1 블록;
    상기 제1 비트 데이터와 상기 제2 비트 데이터가 동일 트랜잭션 내에서 프로그램될 때, 상기 제1 비트 데이터가 비백업되고, 상기 제1 비트 데이터와 상기 제2 비트 데이터가 다른 트랜잭션 내에서 프로그램될 때, 상기 제1 비트 데이터가 백업되는 제2 블록; 및
    상기 제1 비트 데이터의 시퀀스 넘버에 기초하여, 상기 제1 비트 데이터와 상기 제2 비트 데이터가 동일 트랜잭션 내에서 프로그램하는지 여부를 판단하는 컨트롤러를 포함하되,
    상기 트랜잭션은 호스트로부터 전송되는 싱크 신호를 이용하여 결정되는 플래시 메모리 장치.
  15. 제14항에 있어서,
    상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터를 상기 제2 블록에 비백업하는 컨트롤러를 더 포함하는 플래시 메모리 장치.
  16. 제15항에 있어서,
    상기 기준 시퀀스 넘버는 이전 트랜잭션(previoous transaction) 내에서 최종 프로그램된 비트 데이터의 시퀀스 넘버인 플래시 메모리 장치.
  17. 제16항에 있어서,
    상기 컨트롤러는 트랜잭션이 종료될 때, 상기 기준 시퀀스 넘버를 갱신하여 저장하는 플래시 메모리 장치.
  18. 제14항에 있어서,
    상기 싱크 신호에 따라 상기 제1 블록에 다수의 비트 데이터가 프로그램되는 플래시 메모리 장치.
  19. 제18항에 있어서,
    상기 트랜잭션은 적어도 하나의 태스크를 포함하고, 상기 적어도 하나의 태스크는 상기 제1 블록에 상기 다수의 비트 데이터가 프로그램되는 것을 포함하는 플래시 메모리 장치.
  20. 제1 비트 데이터를 플래시 메모리에 프로그램하고,
    제2 비트 데이터를 상기 플래시 메모리에 프로그램하기 전에, 상기 제1 비트 데이터의 시퀀스 넘버가 기준 시퀀스 넘버보다 큰지 판단하되, 상기 제1 비트 데이터가 상기 제2 비트 데이터보다 하위 비트 데이터이고,
    상기 제1 비트 데이터의 시퀀스 넘버가 상기 기준 시퀀스 넘버보다 큰 경우, 상기 제1 비트 데이터를 비백업하는 것을 포함하되,
    상기 기준 시퀀스 넘버는 이전 트랜잭션(previous transaction) 내에서 최종 프로그램한 비트 데이터의 시퀀스 넘버인 저장 장치의 동작 방법.
KR1020120139675A 2012-12-04 2012-12-04 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법 KR102002826B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020120139675A KR102002826B1 (ko) 2012-12-04 2012-12-04 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법
US14/088,654 US9123725B2 (en) 2012-12-04 2013-11-25 Semiconductor device having fuse pattern
JP2013249473A JP6487142B2 (ja) 2012-12-04 2013-12-02 格納装置、フラッシュメモリ及び格納装置の動作方法
US14/095,240 US9589888B2 (en) 2012-12-04 2013-12-03 Storage devices, flash memories, and methods of operating storage devices
EP13195620.3A EP2759935B1 (en) 2012-12-04 2013-12-04 Storage device, flash memory, and operating method
CN201310646008.0A CN103853503B (zh) 2012-12-04 2013-12-04 存储设备、快闪存储器、以及操作所述存储设备的方法
US14/798,474 US9449918B2 (en) 2012-12-04 2015-07-14 Semiconductor device having fuse pattern

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120139675A KR102002826B1 (ko) 2012-12-04 2012-12-04 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법

Publications (2)

Publication Number Publication Date
KR20140071743A KR20140071743A (ko) 2014-06-12
KR102002826B1 true KR102002826B1 (ko) 2019-07-23

Family

ID=50023364

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120139675A KR102002826B1 (ko) 2012-12-04 2012-12-04 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법

Country Status (5)

Country Link
US (3) US9123725B2 (ko)
EP (1) EP2759935B1 (ko)
JP (1) JP6487142B2 (ko)
KR (1) KR102002826B1 (ko)
CN (1) CN103853503B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NZ718812A (en) 2013-10-18 2017-08-25 Deutsches Krebsforsch Labeled inhibitors of prostate specific membrane antigen (psma), their use as imaging agents and pharmaceutical agents for the treatment of prostate cancer
KR20160074237A (ko) * 2014-12-18 2016-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN104503707B (zh) 2014-12-24 2018-03-06 华为技术有限公司 读取数据的方法以及装置
US9933950B2 (en) * 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
KR102413755B1 (ko) * 2015-11-20 2022-06-28 삼성전자주식회사 리텐션 특성에 의한 성능 저하를 복구하는 저장 장치의 동작 방법 및 이를 포함하는 데이터 처리 시스템의 동작 방법
KR102641107B1 (ko) 2016-07-29 2024-02-27 삼성전자주식회사 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
KR102650994B1 (ko) * 2016-10-14 2024-03-26 삼성전자주식회사 메모리 장치
KR102450313B1 (ko) * 2020-09-23 2022-10-04 주식회사 유라코퍼레이션 연성 인쇄 회로 기판 및 그의 제조 방법
KR102513122B1 (ko) * 2020-09-23 2023-03-23 주식회사 유라코퍼레이션 연성 인쇄 회로 기판의 설치 구조

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080074928A1 (en) * 2006-09-22 2008-03-27 Choi Jin-Hyeok Nonvolatile memory system and associated programming methods

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR950002872B1 (ko) 1992-06-30 1995-03-27 주식회사 코오롱 감광성 수지 필름
JPH10256373A (ja) 1997-03-07 1998-09-25 Seiko Epson Corp 半導体装置及び半導体装置の製造方法
JPH1187522A (ja) 1997-07-11 1999-03-30 Sony Corp 半導体装置の製造方法
KR20010059452A (ko) 1999-12-30 2001-07-06 박종섭 퓨즈 박스 형성 방법
KR20020002770A (ko) 2000-06-30 2002-01-10 박종섭 반도체 소자의 제조방법
JP3983996B2 (ja) 2001-04-23 2007-09-26 株式会社ルネサステクノロジ 半導体集積回路装置
JP2003017570A (ja) 2001-07-02 2003-01-17 Fujitsu Ltd 半導体装置及びその製造方法
JP2003060036A (ja) 2001-08-08 2003-02-28 Mitsubishi Electric Corp 半導体装置およびその製造方法
JP4195822B2 (ja) * 2003-03-04 2008-12-17 大日本印刷株式会社 Icカード及びicカードプログラム
KR20050096377A (ko) 2004-03-30 2005-10-06 주식회사 하이닉스반도체 퓨즈와 퓨즈 박스를 갖는 반도체 장치의 제조 방법
KR100721012B1 (ko) * 2005-07-12 2007-05-22 삼성전자주식회사 낸드 플래시 메모리 장치 및 그것의 프로그램 방법
KR20070014818A (ko) 2005-07-29 2007-02-01 삼성전자주식회사 반도체 메모리 소자의 리페어 방법
JP2007172301A (ja) * 2005-12-22 2007-07-05 Dainippon Printing Co Ltd トランザクション実行中のデータを保護する機能を備えたicカード、および、icカードプログラム
KR100764747B1 (ko) * 2006-09-15 2007-10-08 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
KR100845526B1 (ko) 2006-10-19 2008-07-10 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
KR100799688B1 (ko) 2007-01-03 2008-02-01 삼성전자주식회사 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
KR100877610B1 (ko) 2007-01-23 2009-01-09 삼성전자주식회사 페이지 데이터 저장 방법과 저장 장치
KR100850515B1 (ko) 2007-01-24 2008-08-05 삼성전자주식회사 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
WO2008101316A1 (en) 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
KR100889781B1 (ko) 2007-04-30 2009-03-20 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템
US7719890B2 (en) * 2007-09-12 2010-05-18 Sandisk Corporation Data protection for write abort
KR101264112B1 (ko) * 2007-12-07 2013-05-13 삼성전자주식회사 최상위 비트 프로그램 판정방법을 개선한 플래시 메모리장치
TWI362667B (en) 2007-12-31 2012-04-21 Phison Electronics Corp Data writing method for flash memory and controller thereof
JP2009205555A (ja) 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
KR101043832B1 (ko) * 2008-03-11 2011-06-22 주식회사 하이닉스반도체 반도체 소자 및 그 제조 방법
KR101486987B1 (ko) * 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
KR101541736B1 (ko) * 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
KR20100056160A (ko) * 2008-11-19 2010-05-27 삼성전자주식회사 반도체 장치 및 그 제조 방법
KR20110002707A (ko) 2009-07-02 2011-01-10 주식회사 하이닉스반도체 반도체 장치의 퓨즈 및 그 제조방법
KR20110010399A (ko) 2009-07-24 2011-02-01 주식회사 하이닉스반도체 반도체 장치 제조방법
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
KR101062820B1 (ko) 2009-08-27 2011-09-07 주식회사 하이닉스반도체 반도체 장치의 퓨즈 및 그 제조방법
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic Corp 不揮発性記憶装置および不揮発性メモリコントローラ
KR101666516B1 (ko) 2009-11-27 2016-10-17 삼성전자주식회사 구리 식각용 조성물 및 이를 이용한 반도체 장치의 제조방법
KR20110076244A (ko) 2009-12-29 2011-07-06 주식회사 하이닉스반도체 반도체 소자의 퓨즈 및 그 제조 방법
KR20110099570A (ko) 2010-03-02 2011-09-08 삼성전자주식회사 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
KR20120103982A (ko) * 2011-03-11 2012-09-20 에스케이하이닉스 주식회사 퓨즈 패턴 및 그 제조 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080074928A1 (en) * 2006-09-22 2008-03-27 Choi Jin-Hyeok Nonvolatile memory system and associated programming methods

Also Published As

Publication number Publication date
EP2759935A3 (en) 2015-11-18
US20140156917A1 (en) 2014-06-05
US9589888B2 (en) 2017-03-07
JP2014110057A (ja) 2014-06-12
EP2759935A2 (en) 2014-07-30
JP6487142B2 (ja) 2019-03-20
US9449918B2 (en) 2016-09-20
CN103853503B (zh) 2018-08-17
KR20140071743A (ko) 2014-06-12
US9123725B2 (en) 2015-09-01
CN103853503A (zh) 2014-06-11
US20140151845A1 (en) 2014-06-05
US20150325518A1 (en) 2015-11-12
EP2759935B1 (en) 2017-02-08

Similar Documents

Publication Publication Date Title
KR102002826B1 (ko) 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법
US9075763B2 (en) Merging command sequences for memory operations
US10509602B2 (en) Data storage device and operating method thereof
US20200065241A1 (en) Data storage device and operating method thereof
KR102146037B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102020466B1 (ko) 버퍼 메모리 장치를 포함하는 데이터 저장 장치
US20120089767A1 (en) Storage device and related lock mode management method
KR102641107B1 (ko) 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US20150052415A1 (en) Data storage device, operating method thereof and data processing system including the same
KR20120064462A (ko) 메모리 컨트롤러, 이의 오류정정 방법, 및 이를 포함하는 메모리 시스템
US9372741B2 (en) Data storage device and operating method thereof
US20150019796A1 (en) Data storage device and operating method thereof
CN106445749B (zh) 使用独立磁盘冗余阵列的动态自动调谐的最大延迟的减小
KR101702390B1 (ko) 컴퓨터 시스템의 부팅 방법
CN114063893A (zh) 数据储存装置与数据处理方法
KR20150087646A (ko) 불 휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
KR20210039171A (ko) 메모리 시스템을 포함하는 데이터 처리 시스템에서 동작 정보를 송수신하는 방법 및 장치
KR20170001235A (ko) 메모리 시스템 및 그것의 동작 방법
US20150052290A1 (en) Data storage device and operating method thereof
US11537328B2 (en) Method and apparatus for executing host commands
KR20190019543A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11815985B2 (en) Apparatus and method for checking an operation status of a memory device in a memory system
KR102634776B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR101994672B1 (ko) 저장 장치 및 저장 장치의 동작 방법
KR102485694B1 (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