KR101472797B1 - 데이터를 읽거나 쓰기 위한 방법 및 장치 - Google Patents

데이터를 읽거나 쓰기 위한 방법 및 장치 Download PDF

Info

Publication number
KR101472797B1
KR101472797B1 KR1020070071370A KR20070071370A KR101472797B1 KR 101472797 B1 KR101472797 B1 KR 101472797B1 KR 1020070071370 A KR1020070071370 A KR 1020070071370A KR 20070071370 A KR20070071370 A KR 20070071370A KR 101472797 B1 KR101472797 B1 KR 101472797B1
Authority
KR
South Korea
Prior art keywords
data
storage medium
block
sub
address
Prior art date
Application number
KR1020070071370A
Other languages
English (en)
Other versions
KR20090008065A (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 KR1020070071370A priority Critical patent/KR101472797B1/ko
Priority to US12/010,199 priority patent/US20090024787A1/en
Publication of KR20090008065A publication Critical patent/KR20090008065A/ko
Application granted granted Critical
Publication of KR101472797B1 publication Critical patent/KR101472797B1/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터 쓰기 방법 및 장치에 관한 것으로, 데이터 쓰기 방법은 제1 저장 매체에 쓰기 위한 데이터와 제1 저장 매체의 주소를 입력 받고, 제1 저장 매체의 입력된 주소에 저장된 데이터를 독출하고, 입력된 데이터와 독출된 데이터를 비교한 후, 비교 결과에 따라 입력된 데이터를 제1 저장 매체 또는 제1 저장 매체가 아닌 다른 제2 저장 매체에 저장함으로써 데이터의 쓰기 시간을 단축시키고, 저장 장치의 수명을 연장할 수 있다.

Description

데이터를 읽거나 쓰기 위한 방법 및 장치{Method and apparatus for reading or writing data}
본 발명은 데이터를 읽거나 쓰기 위한 방법 및 장치에 관한 것으로, 특히 플래시 메모리의 읽기 또는 쓰기 성능을 개선하기 위한 데이터를 읽거나 쓰기 위한 방법 및 장치에 관한 것이다.
플래시 메모리를 이용한 데이터 저장 장치는 임베디드 시스템(Embedded system)이나 모바일 시스템(Mobile system)에서 널리 사용된다. 그런데, 플래시 메모리를 이용한 저장 장치는 EEPROM의 일종으로 읽기 및 쓰기 연산 외에 쓰기 연산에 선행하여 삭제 연산을 수행해야 한다. 그리고, 플래시 메모리를 이용한 저장 장치는 읽기 연산의 속도는 빠른 반면, 쓰기 연산이나 삭제 연산의 속도는 느린 문제점이 있다.
구체적으로, 플래시 메모리를 이용한 저장 장치에서 입출력 연산의 단위는 페이지(NOR형 플래시 메모리의 경우, 2Byte 또는 4Byte이고, NAND형 플래시 메모리의 경우, 512Byte 또는 2Kbyte의 크기)이고, 삭제 연산의 단위는 블록(NOR형 플래시 메모리 소자의 경우, 128KB이고, NAND형 플래시 메모리의 경우, 16KB 또는 64KB의 크기를 가짐)이다. 그리고, NOR형 플래시 메모리의 경우는 2Byte를 쓰는데 약 400㎲가 소요되고, NAND형 플래시 메모리의 경우 2Kbyte를 쓰는데 약 300㎲가 소요 되며, 삭제 연산에는 블록당 2ms 정도의 시간이 소요된다.
또한, 플래시 메모리와 같은 저장 장치는 그 물리적인 특성으로 인해 쓰기 전 삭제(erase- bofore-erase)연산을 수행해야 한다. 이것은 임의의 페이지에 대해 쓰기 연산을 수행해야 할 경우, 그 페이지가 속한 블록에 있는 기존 데이터를 삭제 연산을 통해 지운 후에 쓰기 연산을 수행하는 것을 말한다. 그리고 이때, 한 블록에 대한 삭제 연산이 가능한 총 회수가 보통 10만 회 정도로 제한되어 있어, 플래시 메모리의 수명이 제한된다.
이와 같이 플래시 메모리와 같은 쓰기 연산의 총 회수에 제한을 갖는 저장 장치는 쓰기 데이터의 양이 많거나 쓰기 연산이 빈번한 경우에 저장 장치의 수명이 크게 짧아질 수 있다. 특히, 고 집적 저장 장치일수록 연산 회수의 제한이 더욱 커진다. 따라서 쓰기 연산의 횟수를 줄임으로써 저장 장치의 수명을 연장할 필요가 있다.
종래에는 쓰기 연산을 저장 장치 내부에 위치한 모든 주소 공간에 대하여 균등하게 실시하여 모든 주소 공간에서 삭제 연산 또는 쓰기 연산의 한계치에 비슷한 시점에 도달하도록 하는 Wear-Leveling 기법이 사용되었다. 이러한 Wear-Leveling 기법은 Eran Gal and Sivan Toledo, "Algorithms and data structures for flash memories, "ACM Computing Surveys, Vol. 37, Issue 2, June 2005 에 소개되어 있다. 이러한 Wear-Leveling 기법은 각 블록의 삭제 회수를 기록하여 빈 블록을 할당하는 과정에서 삭제 횟수가 적은 블록을 할당하는 방법을 사용함으로써 삭제 회수를 평준화하고 있다.
하지만 이러한 기법은 저장 장치에 대하여 총 삭제 또는 총 쓰기의 회수를 줄이는 것이 아니므로, 저장 장치의 수명을 연장하는데 한계가 있을 뿐만 아니라 저장 장치의 데이터 쓰기 속도를 개선하지 못하는 문제점이 있다.
본 발명이 이루고자 하는 기술적 과제는 저장 매체의 수명을 연장하고 데이터의 쓰기 시간을 감소시키는 데이터를 읽거나 쓰기 위한 방법 및 장치를 제공하는 데 있다.
또한, 상기된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
삭제
상기 기술적 과제를 이루기 위한 본 발명에 따른 데이터 쓰기 방법은 제1 저장 매체에 쓰기 위한 데이터 및 상기 제1 저장 매체의 주소를 입력 받는 단계; 상기 제1 저장 매체의 입력된 주소에 저장된 데이터를 독출하는 단계; 상기 입력된 데이터와 상기 독출된 데이터를 비교하는 단계; 및 상기 비교 결과에 따라 상기 입력된 데이터를 상기 제1 저장 매체 또는 상기 제1 저장 매체가 아닌 다른 제2 저장 매체에 저장하는 단계를 포함한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명은 상기된 데이터 쓰기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기 또 다른 기술적 과제를 이루기 위한 본 발명에 따른 데이터 읽기 방법은 호스트로부터 임의의 주소에 대하여 데이터 읽기가 요구되면, 제1 저장 매체에서 상기 주소를 포함하는 블록에 저장되어 있는 데이터를 독출하는 단계; 제2 저장 매체에 상기 주소를 포함하는 블록의 서브 블록이 존재하는지 여부를 판단하는 단 계; 상기 판단 결과에 따라, 상기 제2 저장 매체의 상기 서브 블록에 저장되어 있는 데이터를 독출하는 단계; 및 상기 제1 저장 매체로부터 독출된 데이터 및 상기 제2 저장 매체로부터 독출된 데이터를 합성하여 상기 호스트에 제공하는 단계를 포함한다.
상기 다른 기술적 과제를 해결하기 위하여, 본 발명은 상기된 데이터 읽기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
상기 기술적 과제를 이루기 위한 본 발명에 따른 데이터 쓰기 장치는 제1 저장 매체에 쓰기 위한 데이터 및 상기 제1 저장 매체의 주소를 입력 받는 입력부; 상기 제1 저장 매체의 입력된 주소에 저장된 데이터를 독출하는 데이터 독출부; 상기 입력된 데이터와 상기 독출된 데이터를 비교하는 비교부; 및 상기 비교 결과에 따라 상기 입력된 데이터를 상기 제1 저장 매체 또는 상기 제1 저장 매체가 아닌 다른 제2 저장 매체에 저장하는 데이터 쓰기부를 포함한다.
상기 다른 기술적 과제를 이루기 위한 본 발명에 따른 데이터 읽기 장치는 호스트로부터 임의의 주소에 대하여 데이터 읽기가 요구되면, 제1 저장 매체에서 상기 주소를 포함하는 블록에 저장되어 있는 데이터를 독출하는 제1 데이터 독출부; 제2 저장 매체에 상기 주소를 포함하는 블록의 서브 블록이 존재하는지 여부를 판단하는 판단부; 상기 판단 결과에 따라, 상기 제2 저장 매체의 상기 서브 블록에 저장되어 있는 데이터를 독출하는 제2 데이터 독출부; 및 상기 제1 저장 매체로부터 독출된 데이터 및 상기 제2 저장 매체로부터 독출된 데이터를 합성하여 상기 호스트에 제공하는 데이터 합성부를 포함한다.
본 발명에 따른 데이터 쓰기 방법은 입력된 데이터가 기록될 주소에 기존에 저장되어 있는 데이터를 제1 저장 매체에서 독출하고, 입력된 쓰기 데이터 중 독출된 데이터와 차이가 있는 데이터만을 제2 저장 매체에 기록함으로써 데이터의 쓰기 시간을 단축시키고, 저장 장치의 수명을 연장하는 효과가 있다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 일 실시예를 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 데이터 쓰기 장치의 구성도이다.
도 1을 참조하면, 본 실시예에 따른 데이터 쓰기 장치는 제어부(100), 제1 저장 매체(110) 및 제2 저장 매체(120)로 구성되고, 본 실시예에 따른 제1 저장 매체(110)로는 플래시 메모리가 사용된다. 특히, 이러한 데이터 쓰기 장치가 CE(Consumer Electronics)내에서 사용되는 경우, 제1 저장 매체(110)로 MLC 낸드 플래시 메모리가 사용되고 2 저장 매체(120)는 SLC 낸드 플래시 메모리가 사용될 수 있다.
데이터 쓰기 장치가 호스트로부터 쓰기 신호, 쓰기 주소 및 쓰기 데이터를 입력받는다고 가정하자.
호스트로부터 쓰기 신호와 쓰기 주소를 입력받으면, 제어부(100)는 이 입력된 쓰기 신호에 따라 제1 저장 매체(110)의 쓰기 주소에 기존에 저장되어 있는 데 이터를 독출한다. 그리고 이때, 제어부(100)는 이 쓰기 주소를 포함하는 블록인 제1 블록에 저장되어 있는 데이터를 모두 독출한다. 이 경우 제1 저장 매체(110)로 NAND형 플래시 메모리가 사용된다면 제1 블록의 크기는 16KB 또는 64KB가 된다.
그리고, 제어부(100)는 제1 블록에 있는 데이터가 독출되면, 독출된 데이터와 호스트로부터 입력된 쓰기 데이터를 비교하여 차이가 있는 데이터를 확인한다. 이를 위해, 제1 블록을 N 개의 서브 블록들로 분할하고, 각 서브 블록 별로 독출된 데이터와 호스트로부터 입력된 데이터를 비교함으로써 데이터의 동일 여부를 판정하고, 판정 결과 데이터의 차이가 있는 서브 블록을 검출한다. 이때, 서블 블록 단위로 데이터의 동일 여부를 판정하는 방법은 다음의 3가지 방법 중 어느 하나의 방법을 사용한다.
첫 번째 방법은 단순 비교 방법이다. 이는 서브 블록에 속한 모든 데이터를 비교함으로써 서브 블록 단위로 데이터의 동일 여부를 판정하는 방법이다.
두 번째 방법은 선택 비교 방법이다. 이는 서브 블록에 속한 데이터를 비교하는 도중에 데이터의 차이가 발견되면, 해당 서브 블록은 데이터가 동일하지 않다고 판정하고 스킵(skip)하고 다음 서브 블록을 비교하는 방법이다.
세 번째 방법은 ECC (Error Checking and Correcting)나 CRC (Cyclic Redundancy Code)를 활용하여 비교하는 방법이다. 이는 서브 블록에 속한 데이터의 체크섬(checksum)을 생성하고, 생성된 체크섬을 비교함으로써 서브 블록 단위로 데이터의 동일 여부를 판정하는 방법이다. 이러한 체크섬은 일종의 데이터 지문(finger printer)과 같으며, 데이터의 동일 여부를 판정하는데 이용된다. 이러한 체크섬을 생성하기 위해, 서브 블록의 데이터에 대해 MD5(Message Digest 5)를 이용할 수 있다. MD5는 임의의 입력된 데이터를 128 비트의 메시지로 축약하는 알고리즘으로, 그 알고리즘의 규격은 IERE RFC 1321에 명시되어 있다.
그리고, 제어부(100)는 검출된 서브 블록들이 부분 쓰기를 실행할 조건을 만족하는지 여부를 판단한다. 이때, 부분 쓰기를 실행할 조건은 다음 중 어느 하나를 의미한다.
첫째는, 검출된 서브 블록의 개수가 임계치 이하일 것이다. 이 경우 임계치는 부분 쓰기가 실행될 수 있는 서브 블록 개수의 최대치를 의미한다. 이러한 임계치는 낮을수록 부분 쓰기가 실행될 가능성이 증가하게 되어 쓰는 동작을 빠르게 수행할 수 있으며, 부분 쓰기는 전부 쓰기와 달리 삭제 연산을 수반하지 않으므로 제1 저장 매체(110)의 수명을 연장할 수 있다. 반면에, 임계치가 낮으면, 제2 저장 매체(120)에 저장되는 데이터량이 증가하므로, 제2 저장 매체(120)는 고용량의 메모리이어야 한다.
둘째는, 검출된 서브 블록의 개수가 제1 임계치 이하 또는 검출된 서브 블록이 연속된 개수가 제2 임계치 이하일 것이다. 이는 검출된 서브 블록의 개수가 제1 임계치를 초과한 경우에도 그 연속된 개수가 일정한 값인 제2 임계치를 초과한 경우에만 전부 쓰기를 하기 위한 방법이다.
상기 검출 결과, 제1 블록 내에 데이터의 차이가 있는 서브 블록이 일정한 조건을 만족하지 않으면, 제어부(100)는 제1 블록에 대해 전부 쓰기를 실행한다. 전부 쓰기의 일 예는, 입력된 쓰기 데이터를 제1 저장 매체(110)의 비어 있는 임의 의 블록에 기록하고, 논리 블록 번호(LBN:Logical Block Number)와 물리 블록 번호(Physical Block Number)간의 사상 테이블(mapping table)을 변경함을 통해 전부 쓰기를 실행한다. 만일, 입력된 쓰기 데이터의 논리 블록 번호가 9에 해당하고, 논리 블록 번호 9에 따른 사상 테이블 상의 물리 블록 번호가 7이라고 가정하자. 그러면, 이 7 블록에 쓰기 데이터를 기록해야 하는데, 이 7 블록에 이미 데이터가 기록되어 있으므로, 비어 있는 블록인 12 블록에 쓰기 데이터를 기록한 후, 논리 블록 번호 9에 따른 사상 테이블 상의 물리 블록 번호를 12로 변경시킨다.
상기 검출 결과, 제1 블록 내에 데이터의 차이가 있는 서브 블록이 일정한 조건을 만족하면, 제어부(100)는 부분 쓰기를 실행한다. 부분 쓰기는 검출된 서브 블록의 데이터를 제2 저장 매체(120)에 기록하는 것을 말한다. 이때, 서브 블록의 데이터와 함께 서브 블록의 마스크(mask) 등의 메타 데이터를 제2 저장 매체(120)에 기록할 수도 있다. 마스크는 본 실시예의 데이터 쓰기 방법에 따라 데이터가 저장된 저장 매체들로부터 데이터 읽기를 실행할 때 사용되는 파라미터로서, 제2 저장 매체(120)에 저장된 서브 블록의 블록 내의 위치를 표시한다. 즉, 제1 블록이 서브 블록 4 개로 구성된다면 마스크는 4 비트를 가지며, 제2 저장 매체(120)에 저장된 서브 블록이 제1 블록에서 3번째 서브 블록이라면 마스크는 '0010' 의 비트를 가진다.
그리고, 제2 저장 매체(120)는 서브 블록보다 적은 단위로 데이터를 쓸 수 있는 저장 매체이어야 한다. 일 예로, 제2 저장 매체(120)는 바이트(byte) 단위나 워드(word) 단위로 데이터를 쓰거나 읽을 수 있어야 한다. 또한, 제2 저장 매 체(120)는 비휘발성 저장 매체이어야 한다.
다음으로 데이터 쓰기 장치가 호스트로부터 읽기 신호 및 읽기 주소를 입력받는다고 가정하자.
호스트로부터 읽기 신호와 읽기 주소를 입력받으면, 제어부(100)는 먼저 입력된 읽기 신호에 따라 제1 저장 매체(110)의 읽기 주소에 저장되어 있는 데이터를 독출한다. 그리고 이때, 제어부(100)는 이 읽기 주소를 포함하는 블록인 제2 블록에 저장되어 있는 데이터를 모두 독출한다. 제1 저장 매체(110)로 NAND형 플래시 메모리가 사용되는 경우, 제2 블록의 크기는 16KB 또는 64KB가 된다.
그리고, 제어부(100)는 제2 저장 매체(120)에 제1 블록에 포함되는 서브 블록이 존재하는지 여부를 판단하고, 상기 판단 결과 서브 블록이 존재하고 있지 않으면 제1 저장 매체(110)에서 독출된 데이터를 호스트에 제공한다. 반면에 상기 판단 결과 서브 블록이 존재하고 있으면, 제어부(100)는 이 서브 블록에 저장되어 있는 데이터를 제2 저장 매체(120)에서 독출한 후, 제1 저장 매체(110)에서 독출된 데이터와 제2 저장 매체(120)에서 독출된 데이터를 통합하여 호스트에 제공한다.
데이터를 통합하는 방법의 일 예는 제1 저장 매체(110)에서 독출된 데이터에 대하여, 제2 저장 매체(120)에서 독출된 데이터를 덮어쓰는 방법을 사용할 수 있다.
또한, 데이터를 통합하는 방법의 다른 일 예는 마스크를 사용하는 것이다. 도 3은 제2 블록이 4개의 서브 블록들로 구성된 경우 마스크를 사용하여 데이터를 통합하는 방법의 일 예를 도시한 것이다.
도 3을 참조하면, 호스트로부터 입력된 읽기 주소 및 오프셋((offset)에 따라 제1 저장 매체(110)에서 데이터(310)를 독출하고, 제2 저장 매체(120)로부터 데이터(320) 및 마스크(330)를 독출한다. 이때, 오프셋은 제2 블록에서 서브 블록들이 차지하도록 정해진 위치를 의미한다. 먹스(Mux:340)는 이 제1 저장 매체(110)에서 독출된 데이터(310), 제2 저장 매체(120)에서 독출된 데이터(320)에 대해, 마스크(330)의 비트가 '0'이면 제1 저장 매체(110)에서 독출된 서브 블록 내의 데이터를 출력하고, 마스크(330)의 비트가 '1'이면 제2 저장 매체(120)에서 독출된 데이터를 출력한 후, 출력된 데이터를 통합하여 통합된 데이터(350)를 생성하여 호스트에 제공한다.
도 2는 본 발명의 다른 일 실시예에 따른 데이터 쓰기 장치를 채용한 컴퓨터 시스템의 구성도이다.
도 2를 참조하면, 본 실시예에 따른 컴퓨터 시스템은 CPU(200), 제1 저장 매체(210), 제2 저장 매체(220), 코드 메모리(230) 및 입출력 장치(240)로 구성되고, 본 실시예에 따른 제1 저장 매체(210)로는 플래시 메모리가 사용된다. 특히, 본 실시예에 의하면, 제1 저장 매체(210)로 MLC 또는 SLC 낸드 플래시 메모리가 사용되고, 제2 저장 매체(220)는 FRAM, MRAM 또는 PRAM이 사용될 수 있다.
그리고 CPU(200), 제1 저장 매체(210) 및 제2 저장 매체(220)는 각각 도 1의 제어부(100), 제1 저장 매체(110) 및 제2 저장 매체(120)에 대응되며, 제1 저장 매체(210)는 사우스 브리지( S: Sorth bridge) 를 통해 CPU(200)와 연결되고, 제2 저장 매체(220)는 노스 브리지( N : Nouth bridge)를 통해 CPU(200)와 연결된다.
코드 메모리(230)는 일반적으로 컴퓨터 시스템에서 사용되는 메인 메모리를 말하고, 입출력 장치(240)는 하드 디스크와 연결되는 IDE(Integrated Drive Electronics)와 키보드, 마우스 등과 연결되는 직병렬 포트 등을 말한다.
먼저, CPU(200)는 제1 저장 매체(210)에 기록할 쓰기 데이터의 쓰기 주소에 따라 제1 저장 매체(210) 저장되어 있는 데이터를 독출한다. 상세하게는, CPU(200)는 제1 저장 매체(210)에 기록할 쓰기 데이터의 쓰기 주소인 제1 주소에 기존에 저장되어 있는 데이터를 제1 저장 매체(210)로부터 독출한다. 그리고 이때, CPU(200)는 이 제1 주소를 포함하는 블록인 제1 블록에 저장되어 있는 데이터를 모두 독출한다.
그리고, CPU(200)는 독출된 제1 블록의 데이터와 기록할 쓰기 데이터를 비교하여 차이가 있는 데이터를 확인한다. 이를 위해, 제1 블록을 N 개의 서브 블록들로 분할하고, 각 서브 블록 별로 독출된 데이터와 기록할 쓰기 데이터를 비교함으로써 데이터의 동일 여부를 판정하고, 데이터의 차이가 있는 서브 블록을 검출한다. 이때, 데이터의 동일 여부를 판정하는 방법은 도 1에 도시된 데이터 쓰기 장치에서 동일 여부를 판정하는 방법과 동일하다.
CPU(200)는 검출된 서브 블록들이 일정한 조건을 만족하는지 여부를 판단한다. 이때, 일정한 조건은 부분 쓰기를 수행할 조건을 말하는 것으로서, 도 1에 도시된 데이터 쓰기 장치에서 판단하는 방법과 동일하다.
검출된 서브 블록들이 일정한 조건을 만족하지 않으면, CPU(200)는 제1 블록에 대해 전부 쓰기를 실행한다. 반면에 검출된 서브 블록들이 일정한 조건을 만족 하면, CPU(200)는 부분 쓰기를 실행한다.
도 4는 본 발명의 일 실시예에 따른 데이터 쓰기 방법을 흐름도로 도시한 것이다.
도 4를 참조하면, 본 실시예에 따른 데이터 쓰기 방법은 도 1에 도시된 데이터 쓰기 장치에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하 생략된 내용이라 하더라도 도 1에 도시된 데이터 쓰기 장치에서 기술된 내용은 본 실시예에 따른 데이터 쓰기 방법에도 적용된다.
410 단계에서 제어부는 호스트로부터 쓰기 신호, 쓰기 주소 및 쓰기 데이터를 입력받는다.
415 단계에서 제어부는 410 단계에서 입력된 쓰기 신호에 따라 제1 저장 매체의 쓰기 주소에 기존에 저장되어 있는 데이터를 독출한다. 그리고 이때, 제어부는 이 쓰기 주소를 포함하는 블록인 제1 블록에 저장되어 있는 데이터를 모두 독출한다.
420 단계에서 제어부는 이 제1 블록에 있는 데이터가 독출되면, 독출된 데이터와 호스트로부터 입력된 쓰기 데이터를 비교하여 차이가 있는 데이터를 확인한다. 이를 위해, 제1 블록을 N 개의 서브 블록들로 분할하고, 각 서브 블록 별로 415 단계에서 독출된 데이터와 410 단계에서 입력된 데이터를 비교함으로써 데이터의 동일 여부를 판정하고, 데이터의 차이가 있는 서브 블록을 검출한다.
425 단계에서 제어부는 420 단계에서의 검출 결과가 일정한 조건을 만족하는지 여부를 판단한다. 이때, 일정한 조건은 부분 쓰기를 실행할 조건을 말하는 것으 로서, 다음 중 어느 하나를 의미한다. 첫째는, 검출된 서브 블록의 개수가 임계치 이하일 것이다. 둘째는, 검출된 서브 블록의 개수가 제1 임계치 이하 또는 검출된 서브 블록이 연속된 개수가 제2 임계치 이하일 것이다.
430 단계에서 제어부는 425 단계에서의 판단 결과 일정한 조건을 만족하지 않으면, 전부 쓰기를 실행한다.
435 단계에서 제어부는 425 단계에서의 판단 결과 일정한 조건을 만족하면, 부분 쓰기를 실행한다. 부분 쓰기는 검출된 서브 블록의 데이터를 제2 저장 매체에 기록하는 것을 말한다. 이때, 서브 블록의 데이터와 함께 서브 블록의 마스크(mask) 등의 메타 데이터를 제2 저장 매체에 기록할 수도 있다.
이 경우, 제어부가 현재 쓰기 데이터에 대해 420 단계 및 425 단계를 수행하는 동안에, DMA(Direct Memory Access)를 사용함으로써 이전 쓰기 데이터에 대해 430 단계 및 435 단계를 수행하고, 다음 쓰기 데이터에 대해 410 단계 및 415 단계를 수행함으로써 데이터 쓰기를 아주 빠르게 수행하도록 할 수 있다.
도 5는 본 발명의 또 다른 일 실시예에 따른 데이터 쓰기 장치의 구성도이다. 본 실시예에 따른 데이터 쓰기 장치는 버퍼부를 더 추가함으로써 수정될 확률이 높은 데이터를 버퍼부에 임시로 저장함으로써 쓰기 성능을 높일 수 있는 데이터 쓰기 장치이다.
도 5를 참조하면, 본 실시예에 따른 데이터 쓰기 장치는 제어부(500), 제1 저장 매체(510), 제2 저장 매체(520) 및 버퍼부(530)로 구성된다. 이때, 버퍼부(530)로는 비휘발성 메모리 소자인 MRAM, FRAM, PRAM 또는 불휘발성 폴리머 메모 리 등일 수 있다.
호스트로부터 쓰기 신호, 쓰기 주소 및 쓰기 데이터를 입력받으면, 제어부(500)는 입력된 쓰기 데이터의 쓰기 주소와 동일한 주소를 갖는 데이터가 버퍼부(530)에 존재하는지 여부를 판단한다.
그리고, 제어부(500)는 버퍼부(530)에 동일한 주소를 갖는 데이터가 존재하지 않으면, 버퍼부(530)를 사용하여 버퍼링할 것인지 여부를 판단한다. 이때에는 입력된 쓰기 주소에 나타나는 시간적인 근접성을 활용하여 앞으로 수정될 확률을 예측하고 이를 바탕으로 수정될 확률이 높은 주소에 대해서는 버퍼부(530)를 사용하여 버퍼링을 수행하고, 반면에 수정될 확률이 낮은 주소에 대해서는 버퍼부(530)를 사용하지 않기로 판단한다.
상기 판단 결과, 버퍼부(530)를 사용하여 버퍼링하기로 판단되었다면, 제어부(500)는 버퍼부(530)에 기록할 공간이 있는지 여부를 판단하고, 판단 결과 공간이 있으면 입력된 쓰기 데이터를 버퍼부(530)에 기록한다. 반면에, 판단 결과 공간이 없으면, 버퍼부(530)에 저장된 데이터들 중 가장 사용 빈도가 낮은 데이터들을 본 발명의 일 실시예에 따는 데이터 쓰기 방법에 따라 기록한다. 즉, 제어부(500)는 기록할 데이터가 제1 저장 매체(510)에 저장되어 있는 데이터와 동일한 데이터인지에 따라 제1 저장 매체(510)에 전부 쓰기를 하거나, 제2 저장 매체(520)에 부분 쓰기를 실행한다.
도 6은 본 발명의 또 다른 일 실시예에 따른 데이터 쓰기 방법을 흐름도로 도시한 것이다. 본 실시예에 따른 데이터 쓰기 방법은 도 5에 도시된 데이터 쓰기 장치에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하 생략된 내용이라 하더라도 도 5에 도시된 데이터 쓰기 장치에서 기술된 내용은 본 실시예에 따른 데이터 쓰기 방법에도 적용된다.
도 6을 참조하면, 610 단계에서 제어부는 호스트로부터 쓰기 신호, 쓰기 주소 및 쓰기 데이터를 입력받는다.
620 단계에서 제어부는 610 단계에서 입력된 쓰기 주소와 동일한 주소를 갖는 데이터가 버퍼에 존재하는지 여부를 판단한다.
630 단계에서 제어부는 620 단계에서 판단 결과 버퍼에 이미 동일한 주소를 갖는 데이터가 존재하면, 이 버퍼에 저장된 데이터를 610 단계에서 입력받은 쓰기 데이터로 갱신한다.
640 단계에서 제어부는 620 단계에서 판단 결과 버퍼에 동일한 주소를 갖는 데이터가 존재하지 않으면, 버퍼를 이용하여 버퍼링할 것인지 여부를 판단한다. 이때에는 610 단계에서 입력된 쓰기 주소에 나타나는 시간적인 근접성을 활용하여 앞으로 수정될 확률을 예측하고 이를 바탕으로 수정될 확률이 높은 주소에 대해서는 버퍼를 사용하여 버퍼링을 수행하고, 반면에 수정될 확률이 낮은 주소에 대해서는 버퍼를 사용하지 않기로 결정한다.
650 단계에서 제어부는 640 단계에서 판단 결과 버퍼를 사용하지 않기로 판단되었다면, 610 단계에서 입력된 쓰기 데이터를 도 4에 도시된 바와 같은 데이터 쓰기 방법에 따라 쓰기 데이터를 기록한다. 즉, 제어부는 기록할 데이터가 제1 저장 매체에 저장되어 있는 데이터와 동일한 데이터인지에 따라 제1 저장 매체에 전 부 쓰기를 하거나, 제2 저장 매체에 부분 쓰기를 실행한다.
660 단계에서 제어부는 640 단계에서 판단 결과 버퍼를 사용하여 버퍼링하기로 판단되었다면, 버퍼에 기록할 공간이 있는지 여부를 판단한다.
670 단계에서 제어부는 660 단계에서 판단 결과 공간이 있으면, 610 단계에서 입력된 쓰기 데이터를 버퍼에 기록한다.
680 단계에서 제어부는 660 단계에서 판단 결과 공간이 없으면, 버퍼에 저장된 데이터들 중 가장 사용 빈도가 낮은 데이터들을 도 4에 도시된 바와 같은 데이터 쓰기 방법에 따라 쓰기 데이터를 기록한다. 즉, 제어부는 기록할 데이터가 제1 저장 매체에 저장되어 있는 데이터와 동일한 데이터인지에 따라 제1 저장 매체에 전부 쓰기를 하거나, 제2 저장 매체에 부분 쓰기를 실행한다.
도 7은 본 발명의 일 실시예에 따른 데이터 읽기 방법을 흐름도로 도시한 것이다.
도 7을 참조하면, 본 실시예에 따른 데이터 읽기 방법은 도 1에 도시된 제어부에서 시계열적으로 처리되는 단계들로 구성된다.
710 단계에서 제어부는 호스트로부터 읽기 신호 및 읽기 주소를 입력받는다.
715 단계에서 제어부는 710 단계에서 읽기 신호와 읽기 주소를 입력받으면, 입력된 읽기 신호에 따라 제1 저장 매체의 읽기 주소에 저장되어 있는 데이터를 독출한다. 그리고 이때, 제어부(100)는 이 읽기 주소를 포함하는 블록인 제2 블록에 저장되어 있는 데이터를 모두 독출한다.
720 단계에서 제어부는 제2 저장 매체에 제2 블록에 포함되는 서브 블록이 존재하는지 여부를 판단한다.
725 단계에서 제어부는 720 단계에서 판단 결과 서브 블록이 존재하지 않으면 제1 저장 매체로부터 독출된 데이터를 호스트에 제공한다.
730 단계에서 제어부는 720 단계에서 판단 결과 서브 블록이 존재하면 이 서브 블록에 저장되어 있는 데이터를 제2 저장 매체에서 독출한다.
735 단계에서 제어부는 730 단계에서 독출된 데이터와 715 단계에서 독출된 데이터를 도 3에 도시된 바와 같이 통합한다.
740 단계에서 제어부는 735 단계에서 통합된 데이터를 호스트에 제공한다.
본 발명의 실시예에 따른 데이터 쓰기 방법에서 데이터 쓰기 연산에 걸리는 시간과 종래의 방법에 따른 데이터 쓰기 방법에서 데이터 쓰기 연산에 걸리는 시간과 비교하면 다음과 같다.
먼저, 플래시 메모리의 데이터 쓰기 연산에 걸리는 시간은 300㎲이므로, 종래의 방법에 의하면, 하나의 블록에 데이터를 쓰는데 걸리는 시간은 300us이다.
이것은 다음과 같은 가정하에서 계산된 것이다.
제어부로 100㎒의 CPU를 사용하면, 1 cycle당 10㎱가 소요된다. 그리고 블록의 크기를 2K Byte(500 word)로 하고, 서브 블록의 크기를 블록 크기의 ¼인 500 Byte(125 word)로 하고, 제1 저장 매체로 플래시 메모리를 사용하고 제2 저장 매체로 FRAM을 사용한다고 가정한다. 그러면 플래시 메모리의 데이터 읽기 연산에 걸리는 시간은 25㎲이고, 데이터에 차이가 있는 서브 블록을 체크하여 부분 쓰기를 할 것인지를 결정하는데 걸리는 시간은 2000Byte × 10㎱ = 2000 × 10^(-8) = 20㎲ 이다. 또, 부분 쓰기에 걸리는 시간은 FRAM의 경우 1워드(word)를 쓰는데 70㎱가 소요되므로, 하나의 서브블록을 쓰는데 걸리는 시간은 70ns × 125 word = 7 × 10^(-8) × 125 = 8.75㎲ (대략 9㎲)이다. 따라서 본 실시예에 따라 하나의 블록에 데이터를 쓰는데 걸리는 시간은 25㎲ + 20㎲ + 9㎲ = 54㎲ 이다.
도 8은 본 발명의 실시예에 따른 데이터 쓰기 방법에 의한 데이터 쓰기 연산에 걸리는 시간을 종래의 방법에 따른 데이터 쓰기 방법에 의한 데이터 쓰기 연산에 걸리는 시간과 비교하여 도시한 것이다.
도 8에 도시된 바와 같이, 연속된 4회 쓰기 연산을 실행하는 경우에는, 종래의 방법을 사용하면 300㎲ × 4 = 1200㎲가 걸린다. 반면에 본 실시예에 따르면 데이터를 읽거나 데이터를 부분 쓰기하는 과정은 DMA(Direct Memory Access)를 사용하므로 데이터에 읽기 연산을 하거나 부분 쓰기 연산을 할 때, 제어부가 차이가 있는 서브 블록을 체크하여 부분 쓰기할 서브 블록을 결정하는 동안에도 읽기 연산이나 부분 쓰기 연산을 수행하는 것이 가능하다. 따라서, 이 경우에는 연속된 4회 쓰기 연산을 실행하는 경우 25㎲ × 4 + 29㎲ = 129㎲가 걸린다. 즉, 거의 10배 정도로 빠르게 쓰기 연산을 실행할 수 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 쓰기 장치의 구성도이다.
도 2는 본 발명의 다른 일 실시예에 따른 데이터 쓰기 장치를 채용한 컴퓨터 시스템의 구성도이다.
도 3은 제2 블록이 4개의 서브 블록들로 구성된 경우, 데이터를 통합하는 방법의 일 예를 도시한 것이다.
도 4는 본 발명의 일 실시예에 따른 데이터 쓰기 방법을 흐름도로 도시한 것이다.
도 5는 본 발명의 또 다른 일 실시예에 따른 데이터 쓰기 장치의 구성도이다.
도 6은 본 발명의 또 다른 일 실시예에 따른 데이터 쓰기 방법을 흐름도로 도시한 것이다.
도 7은 본 발명의 일 실시예에 따른 데이터 읽기 방법을 흐름도로 도시한 것이다.
도 8은 본 발명의 실시예에 따른 데이터 쓰기 방법에 의한 데이터 쓰기 연산에 걸리는 시간을 종래의 방법에 따른 데이터 쓰기 방법에 의한 데이터 쓰기 연산에 걸리는 시간과 비교하여 도시한 것이다.

Claims (19)

  1. 제1 저장 매체에 쓰기 위한 데이터 및 상기 제1 저장 매체의 주소를 입력받는 단계;
    상기 제1 저장 매체의 입력된 주소에 저장된 데이터를 독출하는 단계;
    상기 입력된 데이터와 상기 독출된 데이터가 동일한지 여부를 판단하기 위해 비교하는 단계; 및
    상기 비교 결과에 따라 상기 입력된 데이터를 상기 제1 저장 매체 또는 제2 저장 매체에 저장하는 단계를 포함하고,
    상기 비교하는 단계는
    상기 입력된 데이터와 상기 독출된 데이터를 각각 서브 블록으로 분할하는 단계; 및
    상기 분할된 서브 블록 내의 데이터를 비교하여, 데이터에 차이가 있는 서브 블록을 검출하는 단계를 포함하고,
    상기 저장하는 단계는
    데이터에 차이가 있는 서브 블록이 소정 조건을 만족하는지 여부를 판단하는 단계; 및
    상기 판단 결과에 따라, 상기 데이터에 차이가 있는 서브 블록 데이터를 상기 제2 저장 매체에 저장하고, 상기 제2 저장 매체에 저장된 서브 블록의 블록 내의 위치를 표시하는 마스크를 상기 제2 저장 매체에 저장하는 단계를 포함하는 것을 특징으로 하는 데이터 쓰기 방법.
  2. 제1 항에 있어서, 상기 비교하는 단계를 수행하는 동안에
    상기 입력된 데이터와는 다른 제1 데이터 및 상기 입력된 주소와는 다른 주소인 제1 주소를 입력받고, 상기 제1 저장 매체의 입력된 제1 주소에 저장된 데이터를 독출하는 것을 특징으로 하는 데이터 쓰기 방법.
  3. 삭제
  4. 삭제
  5. 제1 항에 있어서, 상기 소정 조건은
    상기 검출된 소정 블록의 개수가 임계치 이하인 것을 특징으로 하는 데이터 쓰기 방법.
  6. 제1 항에 있어서, 상기 소정 조건은
    상기 검출된 서브 블록의 개수가 제1 임계치 이하인 경우 또는 상기 검출된 서브 블록의 연속된 개수가 제2 임계치 이하인 것을 특징으로 하는 데이터 쓰기 방법.
  7. 제1 항에 있어서, 상기 서브 블록을 검출하는 단계는
    상기 서브 블록에 속한 모든 데이터를 각각 비교함으로써 차이가 나는 서브 블록을 검출하는 것을 특징으로 하는 데이터 쓰기 방법.
  8. 제1 항에 있어서, 상기 서브 블록을 검출하는 단계는
    상기 서브 블록에 속한 데이터를 비교하는 도중에 데이터의 차이가 발견되면, 상기 차이가 발견된 데이터의 서브 블록을 검출하고 나머지 데이터를 스킵(skip)하는 것을 특징으로 하는 데이터 쓰기 방법.
  9. 제1 항에 있어서, 상기 서브 블록을 검출하는 단계는
    상기 서브 블록에 속한 데이터의 체크섬(checksum)을 계산하고, 상기 계산된 체크섬을 비교함으로써, 상기 데이터에 차이가 나는 서브 블록을 검출하는 것을 특징으로 하는 데이터 쓰기 방법.
  10. 제1 항, 제 2항, 제 5항 내지 제 9항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  11. 호스트로부터 임의의 주소에 대하여 데이터 읽기가 요구되면, 제1 저장 매체에서 상기 주소를 포함하는 블록에 저장되어 있는 데이터를 독출하는 단계;
    제2 저장 매체에 상기 주소를 포함하는 블록의 서브 블록이 존재하는지 여부를 판단하는 단계;
    상기 판단 결과에 따라, 상기 제2 저장 매체의 상기 서브 블록에 저장되어 있는 데이터를 독출하는 단계; 및
    상기 제 2 저장 매체에 저장된 상기 서브 블록의, 상기 블록 내의 위치를 표시한 마스크(mask)를 사용하여, 상기 제1 저장 매체로부터 독출된 데이터 및 상기 제2 저장 매체로부터 독출된 데이터를 합성하여 상기 호스트에 제공하는 단계를 포함하고,
    상기 제공하는 단계는,
    상기 제 1저장매체에서 독출된 데이터와 상기 제 2 저장 매체에서 독출된 데이터에 대해, 상기 마스크의 비트가 0이면 상기 제 1 저장매체에서 독출된 상기 서브 블록 내의 데이터를 출력하고, 상기 마스크의 비트가 1이면 상기 제 2 저장매체에서 독출된 데이터를 출력한 후, 상기 출력된 데이터를 통합하여 통합된 데이터를 생성하여 호스트에 제공함을 특징으로 하는 데이터 읽기 방법.
  12. 삭제
  13. 제11 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
  14. 제1 저장 매체에 쓰기 위한 데이터 및 상기 제1 저장 매체의 주소를 입력받는 입력부;
    상기 제1 저장 매체의 입력된 주소에 저장된 데이터를 독출하는 데이터 독출부;
    상기 입력된 데이터와 상기 독출된 데이터가 동일한지 여부를 판단하기 위해 비교하는 비교부; 및
    상기 비교 결과에 따라 상기 입력된 데이터를 상기 제1 저장 매체 또는 제2 저장 매체에 저장하는 데이터 쓰기부를 포함하고,
    상기 비교부는
    상기 입력된 데이터와 상기 독출된 데이터를 각각 서브 블록으로 분할하는 서브 블록 분할부; 및
    상기 분할된 서브 블록 내의 데이터를 비교하여, 데이터에 차이가 있는 서브 블록을 검출하는 서브 블록 검출부를 포함하고,
    상기 데이터 기록부는
    데이터에 차이가 있는 서브 블록이 소정 조건을 만족하는지 여부를 판단하고, 상기 판단 결과에 따라 상기 데이터에 차이가 있는 서브 블록 데이터를 상기 제2 저장 매체에 저장하고, 상기 제2 저장 매체에 저장된 서브 블록의 블록 내의 위치를 표시하는 마스크를 상기 제2 저장 매체에 저장하는 것을 특징으로 하는 데이터 쓰기 장치.
  15. 삭제
  16. 삭제
  17. 제14 항에 있어서, 상기 소정 조건은
    상기 검출된 소정 블록의 개수가 임계치 이하인 것을 특징으로 하는 데이터 쓰기 장치.
  18. 제14 항에 있어서, 상기 소정 조건은
    상기 검출된 서브 블록의 개수가 제1 임계치 이하인 경우 또는 상기 검출된 서브 블록의 연속된 계수가 제2 임계치 이하인 것을 특징으로 하는 데이터 쓰기 장치.
  19. 호스트로부터 임의의 주소에 대하여 데이터 읽기가 요구되면, 제1 저장 매체에서 상기 주소를 포함하는 블록에 저장되어 있는 데이터를 독출하는 제1 데이터 독출부;
    제2 저장 매체에 상기 주소를 포함하는 블록의 서브 블록이 존재하는지 여부를 판단하는 판단부;
    상기 판단 결과에 따라, 상기 제 2 저장 매체에 저장된 상기 서브 블록의, 상기 블록 내의 위치를 표시한 마스크(mask)를 사용하여, 상기 제2 저장 매체의 상기 서브 블록에 저장되어 있는 데이터를 독출하는 제2 데이터 독출부; 및
    상기 제 1저장매체에서 독출된 데이터와 상기 제 2 저장 매체에서 독출된 데이터에 대해, 상기 마스크의 비트가 0이면 상기 제 1 저장매체에서 독출된 상기 서브 블록 내의 데이터를 출력하고, 상기 마스크의 비트가 1이면 상기 제 2 저장매체에서 독출된 데이터를 출력한 후, 상기 출력된 데이터를 통합하여 통합된 데이터를 생성하여 호스트에 제공하는 데이터 합성부를 포함하는 것을 특징으로 하는 데이터 읽기 장치.
KR1020070071370A 2007-07-16 2007-07-16 데이터를 읽거나 쓰기 위한 방법 및 장치 KR101472797B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070071370A KR101472797B1 (ko) 2007-07-16 2007-07-16 데이터를 읽거나 쓰기 위한 방법 및 장치
US12/010,199 US20090024787A1 (en) 2007-07-16 2008-01-22 Data writing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070071370A KR101472797B1 (ko) 2007-07-16 2007-07-16 데이터를 읽거나 쓰기 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20090008065A KR20090008065A (ko) 2009-01-21
KR101472797B1 true KR101472797B1 (ko) 2014-12-15

Family

ID=40265777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070071370A KR101472797B1 (ko) 2007-07-16 2007-07-16 데이터를 읽거나 쓰기 위한 방법 및 장치

Country Status (2)

Country Link
US (1) US20090024787A1 (ko)
KR (1) KR101472797B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769188B2 (en) * 2009-11-18 2014-07-01 Mediatek Inc. Nonvolatile memory controller and method for writing data to nonvolatile memory
JP5971547B2 (ja) 2012-02-15 2016-08-17 国立大学法人 東京大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
KR101949671B1 (ko) 2012-06-28 2019-04-25 삼성전자 주식회사 라이프 싸이클을 증가시킬 수 있는 저장 장치 및 그 동작 방법
JP5995071B2 (ja) * 2012-09-19 2016-09-21 学校法人 中央大学 メモリコントローラ,データ記憶装置およびメモリの制御方法
US9311181B2 (en) * 2012-11-15 2016-04-12 Samsung Electronics Co., Ltd. Memory controller changing partial data in memory device and method for changing partial data thereof
KR20150003560A (ko) 2013-07-01 2015-01-09 삼성전자주식회사 사용자의 모션 정보에 기초하여 사용자 인터페이스(ui)를 변경시키는 방법 및 장치
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
FR3065303B1 (fr) * 2017-04-12 2019-06-07 Stmicroelectronics (Rousset) Sas Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
US10672098B1 (en) * 2018-04-05 2020-06-02 Xilinx, Inc. Synchronizing access to buffered data in a shared buffer
KR20200070686A (ko) * 2018-12-10 2020-06-18 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN113467724B (zh) * 2021-07-28 2024-06-04 浙江大华技术股份有限公司 一种crc校验码存储方法、装置、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
KR20040032199A (ko) * 2002-10-01 2004-04-17 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606532A (en) * 1995-03-17 1997-02-25 Atmel Corporation EEPROM array with flash-like core
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
US5787484A (en) * 1996-08-08 1998-07-28 Micron Technology, Inc. System and method which compares data preread from memory cells to data to be written to the cells
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6766389B2 (en) * 2001-05-18 2004-07-20 Broadcom Corporation System on a chip for networking
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
EP1331643B1 (en) * 2002-01-29 2009-12-16 Agere Systems Inc. Differential flash memory programming technique
US7089549B2 (en) * 2002-04-01 2006-08-08 International Business Machines Corp. Updating flash memory
US7047128B2 (en) * 2002-12-12 2006-05-16 Rtk Technologies Limited Chipped engine control unit system having copy protected and selectable multiple control programs
US7243206B2 (en) * 2003-04-14 2007-07-10 Arm Limited Method and apparatus for using a RAM memory block to remap ROM access requests
US7263018B2 (en) * 2003-07-22 2007-08-28 Nxp B.V. Compensating a long read time of a memory device in data comparison and write operations
US20050251617A1 (en) * 2004-05-07 2005-11-10 Sinclair Alan W Hybrid non-volatile memory system
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
JP4910360B2 (ja) * 2005-10-20 2012-04-04 ソニー株式会社 記憶装置、コンピュータシステム、およびデータ書き込み方法
US7953954B2 (en) * 2007-01-26 2011-05-31 Micron Technology, Inc. Flash storage partial page caching
US8332575B2 (en) * 2007-06-20 2012-12-11 Samsung Electronics Co., Ltd. Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
KR20040032199A (ko) * 2002-10-01 2004-04-17 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치

Also Published As

Publication number Publication date
US20090024787A1 (en) 2009-01-22
KR20090008065A (ko) 2009-01-21

Similar Documents

Publication Publication Date Title
KR101472797B1 (ko) 데이터를 읽거나 쓰기 위한 방법 및 장치
US9645750B2 (en) System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
CN110471788B (zh) 异步功率损耗影响的数据结构
TWI506431B (zh) 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統
US7979626B2 (en) Flash recovery employing transaction log
US9213645B2 (en) Command aware partial page programming
US8806108B2 (en) Semiconductor storage apparatus and method of controlling semiconductor storage apparatus
US8412879B2 (en) Hybrid implementation for error correction codes within a non-volatile memory system
US20170242788A1 (en) Regrouping data during relocation to facilitate write amplification reduction
JP6134857B2 (ja) 記憶デバイス、記憶デバイスを有する装置、及び記憶制御方法
US20140380119A1 (en) Memory controller
TW201415468A (zh) 在一非揮發性記憶體中測量平均抹除之記憶體胞損壞
US9740609B1 (en) Garbage collection techniques for a data storage system
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
US9390003B2 (en) Retirement of physical memory based on dwell time
TWI545432B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US20170115900A1 (en) Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell
CN113961140A (zh) 数据处理方法及对应的数据储存装置
CN115938458A (zh) 存储装置、控制器以及存储装置的操作方法
US10459630B2 (en) Memory management method, memory storage device and memory controlling circuit unit
CN110532195B (zh) 存储器系统的工作负荷分簇及执行其的方法
TWI616807B (zh) 資料寫入方法以及儲存控制器
TWI501244B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
TWI766764B (zh) 記憶體緩衝區管理方法、記憶體控制電路單元與記憶體儲存裝置
CN113885779A (zh) 数据处理方法及对应的数据储存装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee