KR100526879B1 - 플래쉬 파일 시스템 - Google Patents

플래쉬 파일 시스템 Download PDF

Info

Publication number
KR100526879B1
KR100526879B1 KR10-2003-0041393A KR20030041393A KR100526879B1 KR 100526879 B1 KR100526879 B1 KR 100526879B1 KR 20030041393 A KR20030041393 A KR 20030041393A KR 100526879 B1 KR100526879 B1 KR 100526879B1
Authority
KR
South Korea
Prior art keywords
data
flash memory
physical address
logical address
flash
Prior art date
Application number
KR10-2003-0041393A
Other languages
English (en)
Other versions
KR20040082921A (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 삼성전자주식회사
Publication of KR20040082921A publication Critical patent/KR20040082921A/ko
Application granted granted Critical
Publication of KR100526879B1 publication Critical patent/KR100526879B1/ko

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

플래쉬 파일 시스템은 플래쉬 메모리와 호스트 시스템 간을 인터페이스 하는 플래쉬 메모리와 서브시스템을 포함한다. 서브시스템은 호스트 시스템 인터페이스, 캐쉬 메모리 시스템, 플래쉬 변환 계층 유닛 및 플래쉬 메모리 인터페이스의 계층적 구성을 포함한다. 호스트 시스템 인터페이스는 호스트 시스템과 인터페이스 된다. 캐쉬 메모리 시스템은 일정 수의 데이터 유닛의 기억용량을 가지며 호스트 시스템 인터페이스를 통해 호스트 시스템으로 및 부터 전송하기 위해 데이터를 저장한다. 플래쉬 변환 계층 유닛은 호스트 시스템 인터페이스와 캐쉬 메모리를 통하여 호스트 시스템으로부터 수신된 논리 어드레스를 플래쉬 메모리의 물리적 어드레스 내로 맵핑한다. 플래쉬 메모리 인터페이스는 플래쉬 변환 계층 유닛으로부터 수신된 물리적 어드레스에 근거하여 캐쉬 메모리 시스템으로부터 플레쉬 메모리를 데이터를 전송하고 플래쉬 메모리로부터 수신된 물리적 어드레스에 근거하여 플래쉬 메모리로부터 캐쉬 메모리 시스템으로 데이터를 전송하기 위해 플래쉬 메모리와 인터페이스 된다.

Description

플래쉬 파일 시스템{flash file system}
본 발명은 전자 스토리지 분야에 관한 것이다. 더욱 상세하게는 본 발명은 플래쉬 메모리와 그것에 의한 파일 시스템에 관한 것이다. 플래쉬 메모리는 전원이 플래쉬 메모리에 더 이상 공급되지 않더라도 플래쉬 메모리에 저장된 정보가 유지되기 때문에 점점 넓게 사용되고 있다. 또한, 플래쉬 메모리는 고체 디바이스이고 휴대용 컴퓨터, 디지털 스틸 카메라 같은 휴대용 디바이스에 매우 유용하다. 플래쉬 메모리는 전원을 훨씬 덜 소모하고 하드 디스크 같은 여러 형태의 마그네틱 스토리지 미디어로서 쇼크에 민감하지 않다.
플래쉬 메모리는 NAND 타입과 NOR 타입의 두 타입이 있다. NOR 타입의 플래쉬 메모리는 랜덤 엑세스를 제공하지만 제작 비용이 비싸다. 이와 반대로 NAND 타입 플래쉬 메모리는 상대적으로 비싸진 않지만 비능률적인 라이트 동작을 하게 된다.
플래쉬 메모리의 일부분이 데이터로 미리 프로그램 되었을 때(즉, 라이트(write)), 플래쉬 메모리의 그 부분을 데이터로 리프로그래밍(reprogramming)(즉, 오버-라이트(over-writing))하기 위해서는 데이터가 라이트되기 이전에 소거동작의 실행이 요구된다. 비능률적인 것 이외에, 라이트 이전의 이 소거, 또는 EBW(erase before write) 프로세스는 플래쉬 메모리가 제한된 라이프타임(lifetime)을 가진다는 것을 의미한다.
플래쉬 메모리는 핫 일렉트론( hot electron), 소오스 주입(source injection) 또는 터널링(tunneling)을 통하여 프로그램 가능하고 파울러-노드헴(Fowler-Nordheim) 터널링 메카니즘을 통하여 소거 가능한 트랜지스터 메모리 셀이다. 이와 같은 메모리 셀의 프로그래밍이나 소거는 플로팅 게이트를 둘러싸고 있는 유전체를 통하여 패스하기 위한 전류를 요구한다. 이 때문에, 이와 같은 타입의 메모리는 제한된 수의 소거-라이트 사이클을 가지므로 유전체는 결국 열화된다.
EBW 문제를 완화시키기 위한 몇 가지 기술이 제안되어 왔다. 하나의 방법은 논리 또는 가상 어드레싱 방식(virtual addressing scheme)을 사용하는 것 인데, 예를 들면, 호스트 시스템은 리드(read) 또는 라이트(write) 동작에 대해 논리 어드레스를 플래쉬 메모리에 공급하여 플래쉬 메모리의 물리적 주소(physical address) 내로 맵핑된다. 이 프로세스 동안에, 소거 동작이 실행되는 것이 필요 없도록 데이터는 플래쉬 메모리의 프리(free) 물리적 공간 내로 라이트 된다. 이 기술은 논리 어드레스를 물리적 어드레스로 맵핑하는 테이블을 유지하는 것을 포함한다. 통상적으로, 이 맵핑 동작은 변환과 맵핑 동작 모두를 요구한다. 예를 들면, 호스트 디바이스는 클러스터(cluster)라고 불리우는 4KB 유닛의 데이터에 근거하여 논리 어드레스를 공급할 것이다. 달리 언급하면, 컴퓨터 같은 호스트 디바이스의 파일 시스템은 클러스터 사이즈 포맷을 가진다. 그러나 플래쉬 메모리의 물리적 어드레스는 한번에 소거될 수 있는, 일반적으로 16KB 또는 그 이상의 유닛에 근거하여 정해지며, 종래 플래쉬 메모리 시스템에서 플래쉬 메모리의 경우 컨트롤러에 의해 사용된 파일 시스템은 플래쉬 메모리의 물리적 구성에 근거한다. 그 결과, 논리 어드레스를 물리적 어드레스로 맴핑하기 위해 호스트 디바이스 파일 시스템을 플래쉬 메모리의 파일 시스템으로 변환하는 작업이 요구된다.
플래쉬 메모리에 대한 맵핑 정보는 전원이 플래쉬 메모리와 연관되는 디바이스에 더 이상 공급되지 않을 때에도 유지되어야만 한다. 플래쉬 메모리 자체에 이 정보를 저장하는 것은 플래쉬 메모리의 저장 용량을 감소시키고, 플래쉬 메모리의 구성이 어려워지는 결과를 초래한다.
또한, 이러한 종래의 시스템에서 플래쉬 메모리에 대한 컨트롤러는 호스트 인터페이스 기능과 플래쉬 메모리 인터페이스 기능이 서로 깊이 연관된 일체형 구조를 가지므로, 플래쉬 메모리 인터페이스 기능은 플래쉬 메모리의 변경, 호스트 인터페이스의 변경, 또는 인터페이스 구조의 일부분에서의 변경으로 인해 플래쉬 메모리 시스템의 완전한 재설계가 요구된다.
본 발명에 따른 플래쉬 파일 시스템은 플래쉬 파일 시스템을 완전히 재설계하지 않고 호스트 시스템, 플래쉬 메모리 또는 플래쉬 파일 시스템의 일부분을 재설계하는 계층 구성을 가진다. 따라서, 본 발명의 플래쉬 파일 시스템은 특정 응용에 극히 융통성 있고 쉽게 적용 가능하다.
예시적인 일실시예에서, 플래쉬 파일 시스템은 플래쉬 메모리와 플래쉬 메모리 서브시스템을 포함한다. 플래쉬 메모리 서브시스템은 호스트 시스템 인터페이스, 캐쉬 메모리 시스템, 플래쉬 변환 계층(FTL)부와 플래쉬 메모리 인터페이스를 포함한다. 호스트 시스템 인터페이스는 호스트 시스템과 인터페이스 된다. 캐쉬 메모리 시스템은 일정 수의 데이터 유닛의 저장 용량(storage capacity)을 가지며 호스트 시스템 인터페이스를 통하여 호스트 시스템으로 전송하기 위해 데이터를 저장한다. 플래쉬 변환 계층 유닛은 호스트 시스템 인터페이스와 캐쉬 메모리 시스템을 통하여 호스트 시스템으로부터 수신된 논리 어드레스를 플래쉬 메모리의 물리적 어드레스로 맵핑한다. 플래쉬 메모리 인터페이스는 플래쉬 변환 계층 유닛으로부터 수신된 물리적 어드레스를 토대로 하여 캐쉬 메모리 시스템으로부터 플래쉬 메모리로 데이터를 전송하거나, 플래쉬 메모리로부터 캐쉬 메모리 시스템으로 데이터를 전송하도록 플래쉬 메모리와 인터페이스 한다.
예시적인 일실시예에서, 캐쉬 메모리 시스템은 호스트 시스템에 의해 사용된 논리 어드레스에 따라 플래쉬 메모리로 전송하기 위해 데이터를 저장하여 호스트 시스템에 의해 요구된 데이터가 캐쉬 메모리 시스템에 상주할 때 플래쉬 메모리를 엑세스하지 않고 호스트 시스템으로 전송하기 위해 데이터를 출력한다. 또 다른 예시적인 실시 예에서, 캐쉬 메모리 시스템은 호스트 시스템과 동일한 파일 시스템을 사용한다. 결과적으로, 캐쉬 메모리 시스템에서 호스트 시스템으로부터 수신된 논리 어드레스의 변환이 요구되지 않는다.
또 다른 예시적인 실시 예에서, 플래쉬 변환 계층 유닛은 호스트 시스템과 동일한 파일 시스템을 사용한다. 결과적으로, 호스트 시스템에 의해 수신된 논리 어드레스를 플래쉬 메모리의 물리적 어드레스 내로 맵핑하는데 있어서, 플래쉬 변환 계층 유닛은(FTL) 하나의 맵핑 포맷이나 파일 시스템으로부터 다른 맵핑 포맷 내로 호스트 시스템의 논리 어드레스를 변환할 필요가 없다. 특히, 플래쉬 메모리 서브시스템의 파일 시스템 및 맵핑 포맷은 호스트 시스템의 파일 시스템과 맵핑 포맷으로 같은 데이터 유닛 사이즈에 근거를 둔다. 따라서, 맵핑 포맷은 플래쉬 메모리의 물리적 구성과 독립적이다. 하나의 예시적인 실시예에서, 파일 시스템과 맵핑 포맷은 4KB 클러스터에 근거를 둔다.
다른 예시적인 실시예에서, 플래쉬 변환 계층 유닛은 물리적 어드레스 테이블과 논리 어드레스 테이블을 포함한다. 물리적 어드레스 테이블은 논리 어드레스에 의해 인덱스되고, 각 논리 어드레스와 연관된 물리적 어드레스를 나타내고, 논리 어드레스와 물리적 어드레스 연관이 유효한지를 나타낸다. 논리 어드레스 테이블은 물리적 어드레스에 의해 인덱스되며, 각 물리적 어드레스와 연관된 논리 어드레스를 나타내고, 물리적 어드레스와 논리 어드레스 연관이 유효한지를 나타내고, 각 물리적 어드레스에 대해 플래쉬 메모리의 이 부분이 소거되었는지를 나타낸다. 논리 어드레스 테이블은 에러 보정 코드(ECC) 데이터 등과 같은 데이터를 저장하는 기타 필드를 추가로 포함한다.
본 발명은 도면을 참조하여 이하에서 주어진 상세 설명에 의해 완전하게 이해될 것이며, 여러 도면에서 대응하는 부분에는 같은 참조번호를 부여하였다.
도 1은 본 발명의 예시적인 일실시예에 따른 플래쉬 파일 시스템(4)에 연결된 호스트 시스템(2)을 나타낸 것이다. 도시한 바와 같이, 플래쉬 파일 시스템(4)은 플래쉬 메모리 서브시스템(14)과 연결된 플래쉬 메모리(6)를 포함한다. 플래쉬 메모리(6)는 NAND 타입 플래쉬 메모리이다. 플래쉬 메모리 서브시스템(14)은 호스트 시스템(2)과 플래쉬 메모리(6) 간에 데이터를 전송할 수 있도록 인터페이스 한다.
도 2는 플래쉬 메모리 서브시스템(14)의 상세도를 나타낸 것이다. 도시한 바와 같이, 플래쉬 메모리 서브시스템(14)은 계층적 구성을 가진다. 그 결과, 플래쉬 메모리(6) 또는 호스트 시스템(2)의 재설계로 인해 플래쉬 메모리 서브시스템(14)까지 재설계할 필요가 없어진다. 즉, 도시한 바와 같이, 플래쉬 메모리 서브시스템(14)은 호스트 시스템(2)과 인터페이스 하는 호스트 시스템 인터페이스(22)를 포함한다. 캐쉬처럼 동작하는 의사(pseudo) RAM (24)은 호스트 시스템 인터페이스(22)에 연결되며, 플래쉬 메모리(6)로부터 내부로 라이트되고 리드되어지는 데이터를 일시적으로 저장한다. 상기 의사 RAM(24)은 캐쉬처럼 동작하므로 캐쉬 메모리 시스템으로 정의할 수 있다. 플래쉬 변환 계층 유닛(FTL)(26)은 호스트 시스템(2)으로부터 수신된 논리 어드레스를 플래쉬 메모리(6)의 물리적 어드레스 내로 맵핑한다. 플래쉬 메모리 인터페이스(28)는 의사 RAM(24)으로부터 수신된 데이터를 FTL(26)에 의해 공급된 어드레스에서 플래쉬 메모리(6)내로 라이트하고, FTL(26)에 의해 공급된 어드레스에서 플래쉬 메모리(6)로부터 데이터를 리드함으로써 플래쉬 메모리와 인터페이스한다.
플래쉬 메모리 서브시스템(14)의 각 계층은 이제 상세히 설명될 것이다.
호스트 시스템 인터페이스
호스트 시스템 인터페이스(22)는 인터페이스 프로토콜에 따라서 호스트 시스템(2)과 인터페이스 된다. 널리 알려진 프로토콜이 많이 있다. 본 발명은 콤팩트 플래쉬 같은 병렬 프로토콜이나 멀티미디어 카드(MMC), 에스디(secure digital: SD), 메모리 스틱등과 같은 직렬 프로토콜 모두에 적용가능 하다.
도 3은 본 발명에 따른 호스트 시스템 인터페이스(22)의 예시적인 실시예를 나타낸 것이다. 도시한바와 같이, 호스트 링크(32)는 호스트 시스템(2)과 연결된다. 호스트 링크(32)는 특정 호스트 인터페이스 타이밍 프로토콜을 포함한다. 본 발명에 따르면 호스트 링크(32)를 재설계만으로 호스트 시스템 인터페이스(22)를 사용하는 다양한 인터페이스 프로토콜이 지원되도록 구현할 수 있다. 잘 알려진 바와 같이, 레지스터 파일(34)은 호스트 시스템 인터페이스(22)의 상태와 동작 파라메타를 저장한다. 호스트 시스템(2) 으로 및 부터 전송되는 데이터는, 호스트 링크(32)와 직접 메모리 액세스(DMA)(38)에 연결된 데이터 버퍼(36)에 의해 호스트 시스템 인터페이스(22)에 일시적으로 저장된다. DMA는 또한 레지스터 파일 (34)에 연결되어, 호스트 시스템(2)으로부터 플래쉬 메모리 서브시스템(14)의 하위 계층(lower layer)로 입력/출력 요구(request)를 전달한다. 특히, DMA(38)는 라이트 요구 및 데이터 버퍼(36)에 저장된 관련 데이터를 의사 RAM(24)으로 전달하거나 리드 요구에 따라 의사 RAM(24)으로부터 데이터를 읽고 그 데이터를 데이터 버퍼 (36)에 저장한다.
하나의 예시적인 실시예에 따르면, DMA(38)는 통상적인 마그네틱 디스크 저장 시스템으로부터 유래된 호스트 인터페이스 방식을 지원하기 위해 512비트 * ns (여기서, ns =1,2,4,8,16) 의 데이터를 전송한다. DMA(38)와 호스트 링크(32)간 데이터 전송 효율을 높이기 위해, 데이터 버퍼(36)는 n * 버스_폭 구성을 가지며, 여기서 n은 데이터 버퍼(36)의 FIFO 깊이이고 2,4,8,16...과 같으며 버스폭은 8,16,32,64...와 같다.
의사 RAM(24)
의사 RAM(24)은 호스트 시스템 인터페이스(22)가 통상의 RAM과 유사한 형태로 하위 계층을 엑세스하도록 하기 위한 계층이다. 도 4에 도시한 바와 같이, 의사 RAM(24)은 플래쉬 메모리(6)로부터 리드되거나 라이트되는 가장 최근의 데이터를 저장하는 버퍼 램(44)을 포함한다. 버퍼 램(44)과 연관된 룩업 테이블(LUT)(42)은 버퍼 램(44)에 저장된 데이터의 디렉토리를 유지한다. 데이터가 플래쉬 메모리(6)로 라이트되거나 플래쉬 메모리(6)로부터 리드될때, 데이터 필/플러쉬(fill/flush) 컨트롤러(48)는 버퍼 램(44)과 플래쉬 메모리 서브시스템의 하위 계층간 인터페이스로서 제공된다. 의사 램 매니저(46)는 호스트 시스템 인터페이스(22)로부터 수신된 리드 및 라이트 요구에 근거하여 LUT(42), 버퍼 램(44) 및 데이터 필/플러쉬 컨트롤러(48)의 동작을 컨트롤한다.
도 5는 LUT(42)에 저장된 디렉토리 엔트리의 필드구성을 나타낸 것이다. LUT(42)는 버퍼 램(44)에 저장된 데이터 각 유닛에 대하여 엔트리(52)를 포함한다. 본 발명의 예시적인 일실시예에서, 버퍼 램(44)에 저장된 데이터의 유닛은 호스트 시스템(2)에서 파일 시스템의 기본이 되는 데이터의 유닛과 동일하다. 예를 들면, 본 발명의 예시적인 일실시예에서, 호스트 시스템(2)은 4KB의 클러스터라고 불리는 데이터 유닛을 기본으로 하는 파일 시스템을 갖는다. 따라서, 버퍼 램(44)은 클러스터 유닛 단위의 데이터를 저장하고, LUT(42)는 각 클러스터에 대해 엔트리(52)를 포함한다. 아래에서 좀 더 상세히 논의되는 바와 같이, 버퍼 램(44)의 파일 시스템은 호스트 시스템(2)에 의해 사용된 파일 시스템과 매치되기 때문에, 호스트 시스템(2) 의해 플래쉬 메모리 서브시스템(14)으로 공급된 논리 어드레스는 변환없이 버퍼 램(44)으로부터 또는 으로 직접 데이터를 리드하고 라이트 하기 위해 사용될 수 있다. 달리 언급하면, 플래쉬 메모리 서브시스템(14)의 맵핑 포맷은 호스트 시스템(2)의 그것과 동일하다. 따라서, 플래쉬 메모리 서브시스템(14)의 맵핑 포맷과 파일 시스템은 플래쉬 메모리(6)의 물리적 구성과 독립적이다.
도 5로 다시 돌아가면, LUT(42)에서 엔트리(52)는 버퍼 램(44)에서 대응하는 데이터 유닛의 논리 어드레스, 유효 필드(V), 업데이트 필드(U) 및 라이트 필드(W)를 포함한다. 유효 필드(V)는 엔트리(52)의 논리 어드레스에 대응하는 데이터가 유효한지를 나타낸다. 업데이트 필드(U)는 버퍼 램(44)에서 데이터가 호스트 시스템(2)에 의해 업데이트 되었는지를 나타낸다. 예시적인 실시예에서, 업데이트 필드는 k 서브필드(U0-Uk-1)로 구성되며, 여기서 k는 데이터의 서브-유닛을 나타낸다. 예를 들면, 플래쉬 메모리(6)는 전형적으로 각각 512바이트의 페이지 또는 섹터로 구성된다. 페이지 사이즈에 의해 버퍼 램(44)에 저장된 데이터 유닛의 사이즈를 나누면 k개의 서브 유닛 데이터가 얻어진다. 버퍼 램(44)에 저장된 데이터 유닛을 4KB의 클러스터로 하는 예로서 각각 512 바이트의 페이지로 구성된 플래쉬 메모리(6)를 가정하면, 업데이트 필드(U)는 8(즉, k=8) 서브필드(U0-U7)로 구성될 것이다. 각각의 업데이트 서브필드(U0-U7)는 버퍼 램(44)에 저장된 서브-유닛의 데이터가 업데이트 되었는지를 나타낼 것이다.
라이트 필드(W)는 버퍼 램(44)에 저장된 유닛 데이터 내에서 모든 서브-유닛이 업데이트 되었는지를 나타낸다. 상기 주어진 예를 가정하면, U0-Uk-1이 모두 1로 정해지면, 라이트 필드(W) 역시 1로 정해진다. 이하에서 좀 더 상세히 의논되는바와 같이, 의사 램 매니저(46)는 언제 버퍼 램(44)으로부터 플래쉬 메모리(6) 내로 데이터가 라이트될 지를 결정하도록 라이트 필드(W)를 모니터링 한다.
도 6은 리드 요구가 호스트 시스템 인터페이스(22)로부터 수신될때 의사 RAM(24)의 동작을 나타낸 것이다. 도시한 바와 같이, S902 단계에서 의사 램 매니저(46)는 호스트 시스템 인터페이스(22)로부터 리드 요구를 수신한다. 호스트 시스템(2)에서 발생된 리드 요구에는 논리 어드레스가 포함된다. S904 단계에서, 의사 램 매니저(46)는 LUT(42)를 억세스해서, LUT(42)가 (i) 수신된 논리 어드레스와 동일한 논리 어드레스를 갖는 엔트리(52)를 포함하는지와 (ii) 그 논리 어드레스에 대해 유효 필드(V) 가 유효한지를 나타내는지를 판단한다.
의사 램 매니저(46)가 버퍼 램(44)에 저장된 데이터가 유효하다고 판단하면, S906 단계에서 의사 램 매니저(46)는 버퍼 램(44)으로부터 유효 데이터를 리드해서 호스트 시스템 인터페이스(22)를 통해서 이 데이터를 호스트 시스템(2)으로 직접 보낸다. 따라서, 이 방법에서 의사 RAM(24)는 플래쉬 메모리(6)에 대해서 캐쉬형태로 동작하므로 훨씬 효율적인 리드 동작이 일어날 수 있다.
S904 단계에서 의사 램 매니저(46)가 수신된 논리 어드레스에 대해 유효 엔트리(52)를 찾는데 성공하지 못하면, S908 단계에서 의사 램 매니저(46)는 FTL(26)을 통하여 리드 요구가 발생하도록 데이터 필/플러쉬 컨트롤러(48)를 컨트롤한다. 리드 요구는 호스트 시스템 인터페이스(22)로부터 수신된 논리 어드레스를 포함할 것이다. 이하에서 상세히 설명되는 바와 같이, FTL(26)은 논리 어드레스를 플래쉬 메모리(6)의 물리적 어드레스 내로 맵핑하여 리드 요구와 이 물리적 어드레스를 플래쉬 메모리 인터페이스(28)로 공급한다. 플래쉬 메모리 인터페이스(28)는 수신된 물리적 어드레스와 리드 요구에 근거하여 플래쉬 메모리(6)로부터 데이터를 리드하여 리드 데이터를 데이터 필/플러쉬 컨트롤러(48)로 리턴한다. 따라서, S910 단계에서, 데이터 필/플러쉬 컨트롤러(48)는 리드 요구에 응답하여 플래쉬 메모리 인터페이스(28) 로부터 데이터를 수신한다. 그다음 수신된 데이터는 버퍼 램(44)에 저장되어 S912단계에서 호스트 시스템 인터페이스(22)를 통하여 호스트 시스템(2)으로 보내진다.
수신된 데이터를 버퍼 램(44)에 저장하는데 있어서, 의사 램 매니저(46) 새롭게 저장된 데이터에 대해 엔트리(52)를 포함하도록 S914 단계에서 LUT(42)를 업데이트한다. 엔트리(52)는 리드 요구와 함께 수신된 논리 어드레스를 포함할 것이며, 유효성(V)은 유효 데이터(예를 들면, V=1)를 나타내도록 정해질 것이며, 업데이트 필드(U)와 라이트 필드(W)는 업데이트 데이터가 없음(예를 들면,U0-Uk-1=0 및 W=0)을 나타내도록 정해질 것이다.
그다음, 라이트 요구가 호스트 시스템 인터페이스(22)로부터 수신되었을 때 의사 RAM(24)의 동작은 도 7을 참조하여 설명될 것이다. S1002 단계에서 도시한바와 같이, 의사 램 매니저(46)는 호스트 시스템 인터페이스(22)를 통하여 호스트 시스템(2)으로부터 라이트 요구와 데이터를 수신한다. 라이트 요구에 포함된 것은 수신된 데이터를 라이트 하기위한 논리 어드레스이다. S1004 단계에서, 의사 램 매니저(46)는 LUT(42)를 엑세스하여 수신된 논리 어드레스가 LUT(42)에 있는 엔트리와 같은지, 그리고 그 논리 어드레스에 대해 유효 필드(V)가 유효 데이터를 나타내는지를 판단한다. 의사 램 매니저(46)가 수신된 논리 어드레스에 매칭하는 유효한 논리 어드레스를 찾으면, S1006 단계에서 의사 램 매니저(46)는 수신된 데이터를 버퍼 램(44) 내로 라이트하여, S1008 단계에서 엔트리(52)의 대응하는 업데이트 서브필드를 업데이트한다.
S1004 단계에서, 수신된 논리 어드레스에 매칭하는 유효한 논리 어드레스를 찾지 못하면, S1010 단계에서 의사 램 매니저(46)는 버퍼 램(44)에서 새로운 엔트리를 생성하여 S1012 단계에서 버퍼 램(44)에 수신된 데이터를 라이트한다. 버퍼 램(44)에 생성되는 새로운 엔트리는 LUT(2)에 위치하는 유효하지 못한 엔트리(52)를 포함한다. 플래쉬 메모리 서브시스템(14)이 초기적으로 동작을 시작할 때, LUT(42)에 각각의 엔트리(52)는 유효하지 못한 것으로 초기화 된다. 그러나, 일정 시간이 지난 후에 LUT(42)는 모든 유효한 엔트리를 포함할 수 있다. 이것이 발생하고 새로운 엔트리(52)가 생성되는 것이 필요할 때 LUT(42)는 업데이트 되지 않은 서브필드 세트를 가지는 엔트리의 위치를 정하며, 이 엔트리(52)에 대응하는 버퍼 램(44) 내로 데이터를 라이트한다. (i) 유효하지 않은 엔트리가 존재하고, (ii) 유효하지 않고 업데이트 되지 않은 엔트리가 존재한다면, 버퍼 RAM 매니저(46)는 버퍼 램(44)의 일부나 모두를 플러쉬(flush)하도록 데이터 필/플러쉬 컨트롤러(48)에 명령한다. 이것은 버퍼 램(44)의 내용을 플래쉬 메모리(6)로 플러쉬하기 위해 라이트함을 의미한다. 플러쉬된 데이터에 대응하는 엔트리(52)는 라이트 동작이 실행될 수 있는 것과 같은 유효하지 않은 엔트리로 세트된다. S1014 단계에서, 의사 램 매니저(46)는 새롭게 라이트된 데이터에 대해 새 엔트리(52)를 반영하도록 LUT(42)를 업데이트 한다. 새 엔트리(52)는 라이트 요구에 따라 수신된 논리 어드레스를 포함하고, 유효 비트는 유효한 데이터를 나타내도록 세트되고, 업데이트 필드는 업데이트된 데이터를 나타내도록 세트될 것이다. 예를 들면, 클러스터 전체가 라이트되어 진다면, 라이트 필드(W)는 완전히 업데이트 된 엔트리(52)(예를 들면, W=1)를 나타내도록 세트될 것이며; 그렇지 않다면 라이트 필드는 엔트리(52)가 완전히 업데이트 되지 않음(예를 들면, W=0)을 나타내도록 세트된다.
위에서 시사된 바와 같이, 의사 램 매니저(46)는 LUT(42)의 엔트리(52)를 모니터링 한다. 엔트리가 버퍼 램(44)에 완전히 업데이트된 데이터 유닛을 나타내는 라이트 필드(W)를 가질 때, 의사 램 매니저(46)는 데이터 필/플러쉬 컨트롤러(48)로 하여금, 플래쉬 메모리(6)로 데이터가 쓰여지도록 명령어를 보낸다. 특히, 이 명령에 응답하여 데이터 필/플러쉬 컨트롤러(48)는 라이트 요구와 그에 대응하는 논리 어드레스를 FTL(26)로 보내고, 연관된 데이터를 플러쉬 메모리 인터페이스(28)로 보낸다. 아래에서 상세히 논의되는바와 같이, FTL(26)은 수신된 논리 어드레스를 물리적 어드레스 내로 맵핑하여 라이트 요구에 따라 물리적 어드레스를 플래쉬 메모리 인터페이스(28)로 공급한다. 그다음, 플래쉬 메모리 인터페이스(28)는 수신된 물리적 어드레스를 사용하여 수신된 데이터를 플래쉬 메모리(6) 내로 라이트한다.
플래쉬 변환 계층 유닛(FTL)(26)
FTL(26)은 리드 및 라이트 동작을 위해 수신된 논리 어드레스를 물리적 어드레스 내로 맵핑한다. 라이트 동작에 관하여, 맵핑 동작은 플래쉬 메모리(6) 같은 NAND 타입 플래쉬 메모리로 라이트 동작 전에 소거해야 하는 비효율성을 완화시키기 위해 실행된다. 또한, FTL(26)은 파일 시스템 변환 없이 호스트 시스템(2)에 의해 사용된 것과 동일한 파일 시스템을 사용하여 호스트 시스템(2)에 수신된 논리 어드레스를 물리적 어드레스로 직접 맵핑할 수 있다. 예를 들면, 호스트 시스템이 데이터 유닛으로서 클러스터에 근거하여 파일 시스템을 사용한다면 FTL(26)의 논리 어드레스 또한 클러스터를 기본으로 한다. 따라서, FTL(26)은 플래쉬 메모리(6)의 물리적 구성에과 독립적으로 디자인된다.
도 8은 본 발명에 따른 FTL(26)의 예시적인 일실시예를 나타낸 것이다. 도시한 바와 같이, FTL(26)은 맵핑 테이블 메모리(62)를 포함하는바, 이는 NOR 타입 플래쉬 메모리 같은 비휘발성 메모리이다. 맵핑 테이블 메모리(62)는 물리적 어드레스 테이블과 도 9에 관하여 아래에서 상세하게 논의될 논리 어드레스 테이블을 포함한다. 물리적 어드레스 테이블은 논리 어드레스를 물리적 어드레스로 맵핑하기 위한 것이고, 논리적 어드레스 테이블은 물리적 어드레스를 논리적 어드레스로 맵핑하기 위한 것이다.
도 8에서 또한 도시한바와 같이, FTL(26)은 맵핑 테이블 메모리(62)에 관하여 캐쉬로서 동작하는 맵핑 테이블 메모리(62)를 포함하므로, 논리 및 물리적 어드레스를 맵핑하는데 더 큰 효율성을 제공할 수 있다. 맵핑 테이블 메모리(62)와 맵핑 테이블 캐쉬(64)는 맵핑 컨트롤러(66)에 의해 컨트롤되며, 의사 RAM(24)으로부터 리드 및 라이트 요구를 수신한다.
도 9는 맵핑 테이블 메모리(62)와 맵핑 테이블 캐쉬(64)를 좀 더 상세하게 도시한 것이다. 도시한 바와 같이, 맵핑 테이블 메모리(62)는 물리적 어드레스 테이블(72)과 논리 어드레스 테이블(74)을 포함한다. 물리적 어드레스 테이블(72)은 가능한 논리 어드레스에 의해 나타내어진다. 달리 말하면, 물리적 어드레스 테이블의 각각의 엔트리는 가능한 논리 어드레스에 각각 대응한다. 논리 어드레스와 연관된 각각의 어드레스는 할당 필드(A)와 물리적 어드레스 필드를 포함한다. 할당 필드(A)는 논리 및 물리적 어드레스 간의 연관이 유효한지를 나타내고, 물리적 어드레스 필드는 연관되는 물리적 어드레스를 나타낸다.
논리 어드레스 테이블(74)은 가능한 물리적 어드레스에 의해 나타내어진다. 즉, 논리 어드레스 테이블(74)의 각각의 엔트리는 플래쉬 메모리(6)의 가능한 물리적 어드레스에 각각 대응한다. 논리 어드레스 테이블(74)의 각각의 엔트리는 할당 필드(A),소거 필드(E), 논리 어드레스 필드와 기타 필드를 포함한다. 할당 필드(A)는 논리 어드레스가 물리적 어드레스와 연관되어 있는지를 나타낸다. 소거 필드(E)는 연관된 물리적 어드레스가 현재 소거되었는지를 나타낸다. 논리 어드레스 필드는 물리적 어드레스에 대응하는 논리 어드레스를 포함하며, 기타 필드는 에러 보정 코드(ECC) 데이터 등과 같은 데이터를 저장한다.
도 9에서 또한 도시한 바와 같이, 맵핑 테이블 캐쉬(64)의 캐쉬 테이블(76)은 다수개의 엔트리를 포함한다. 각각의 엔트리는 논리 어드레스 필드, 할당 필드(A),소거 필드(E), 물리적 어드레스 필드를 포함한다. 논리 어드레스 필드는 물리적 어드레스 필드의 물리적 어드레스와 연관된 논리 어드레스의 엑세스 태그를 포함한다. 할당 필드(A)는 논리 및 물리적 어드레스간의 연관이 유효한지를 나타내고, 소거 필드는 물리적 어드레스 필드의 물리적 어드레스가 현재 소거되었는지를 나타낸다.
도 10은 리드 요구가 의사 RAM(24)으로부터 수신되었을 때 FTL(26)의 동작을 나타낸 것이다. S1202 단계에 나타낸바와 같이, 맵핑 컨트롤러(66)는 의사 RAM(24)으로부터 리드 요구와 논리 어드레스를 수신한다. 이 리드요구에 응답하여, 맵핑 컨트롤러(66)는 맵핑 테이블 캐쉬(64)를 엑세스하여 캐쉬 테이블(76)이 수신된 논리 어드레스를 포함하는지와 수신된 논리 어드레스와 물리적 어드레스 간의 대응이 유효한지 판단한다. 수신된 논리 어드레스와 물리적 어드레스 간에 유효한 연관이 캐쉬 테이블(76)에 존재한다면, S1206 단계에서, 맵핑 컨트롤러(66)는 맵핑 테이블 캐쉬(64)로부터 리드 요구에 대응하는 연관된 물리적 어드레스를 플래쉬 메모리 인터페이스(28)로 출력시킨다.
캐쉬 테이블(76)에 수신된 논리 어드레스와 연관된 물리적 어드레스가 존재하지 않는다면, S1208 단계에서, 맵핑 테이블 캐쉬(64)는 물리적 어드레스 테이블(72)로부터 수신된 논리 어드레스와 연관된 물리적 어드레스를 엑세스한다. 즉, 인덱스로서 수신된 논리 어드레스를 사용하여, 맵핑 테이블 캐쉬(64)는 연관된 물리적 어드레스 테이블(72)을 얻는다. 만약 할당 필드를 통해 수신된 논리 어드레스와 연관된 유효 어드레스가 없다는 것이 나타난다면(A=0), 에러 상태가 맵핑 컨트롤러(66)에 의해 의사 RAM(24)으로 리턴되어 이 에러는 호스트 시스템 인터페이스(22)를 통하여 호스트 시스템(2)에 전달된다.
또한 맵핑 테이블 캐쉬(64)는 물리적 어드레스를 플래쉬 메모리 인터페이스(28)로 출력할 뿐만 아니라 수신된 논리 어드레스를 포함하도록 캐쉬 테이블(76)을 업데이트한다. 그렇게 함에 있어서, 맵핑 테이블 캐쉬(64)는 또한 연관된 물리적 어드레스에 대해 소거 필드(E)의 상태를 얻기 위하여 논리 어드레스 테이블(74)을 엑세스한다.
그 다음, 도 11을 참조하여 의사 RAM(24)로부터 수신된 라이트 요구에 대한 FTL(26)의 동작을 설명하고자 한다. 도시한 바와 같이, S1302 단계에서, 맵핑 컨트롤러(66)는 의사 RAM(24)으로부터 라이트 요구, 논리 어드레스 및 관련 데이터를 수신한다. 맵핑 컨트롤러(66)는 수신된 논리 어드레스와 연관된 물리적 어드레스를 얻기 위해 맵핑 테이블 캐쉬(64)를 통하여 맵핑 테이블 메모리(62)를 엑세스한다. 즉, 맵핑 컨트롤러(66)는 수신된 논리 어드레스를 인덱스로서 사용하여 수신된 논리 어드레스와 연관된 엔트리에서 A=1인지를 판단한다. 그러하다면, 맵핑 컨트롤러(66)는 물리적 어드레스 테이블(72)로부터 연관된 물리적 어드레스를 엑세스하여, S1306 단계에서 검색된 물리적 어드레스에 해당하는 연관된 플래쉬 메모리(6)의 영역이 소거되었는지를 판단한다. 특히, 검색된 물리적 어드레스를 인덱스로서 사용하여 맵핑 컨트롤러(66)는 논리 어드레스 테이블(74)에서 물리적 어드레스와 연관된 소거 필드(E)가 1인지를 판단한다. 그러하다면, 상기 프로세스는 논리 어드레스와 물리적 어드레스간의 연관이 유효하고 물리적 어드레스가 라이트 동작이 실행될 수 있는 소거 상태임을 나타낸다. 결과적으로, S1308 단계에서, 맵핑 컨트롤러(66)는 맵핑 테이블 캐쉬(64)로 하여금 검색된 물리적 어드레스와 라이트 요구를 플래쉬 메모리 인터페이스(28)로 출력하도록 명령한다. 맵핑 테이블 캐쉬(64)가 검색된 물리적 어드레스를 갖지 않는다면, 맵핑 컨트롤러(66)는 물리적 어드레스 테이블(72)로 하여금 검색된 물리적 어드레스를 출력하도록 명령한다. 또한 맵핑 컨트롤러(66)는 S1314 단계에서 맵핑 테이블 메모리(62)를, S1316 단계에서 맵핑 테이블 캐쉬를 업데이트한다. 특히, 논리 어드레스 테이블(74)에서, 할당 필드(W)는 세트되고(예를 들면, A=1), 출력 물리적 어드레스와 그에 대응하는 소거 필드(E)는 물리적 어드레스가 현재 소거되지 않았음을 나타내도록 바뀌고, 수신된 논리 어드레스는 논리 어드레스 필드에 기입된다. 물리적 어드레스 테이블(72)에서, 수신된 논리 어드레스의 할당 필드는 세트되고 출력 물리적 어드레스는 물리적 어드레스 필드에 기입된다. 캐쉬 테이블(76)에 물리적 어드레스와 연관된 수신된 논리 어드레스에 대해 엔트리가 존재한다면 위와 같은 동작이 발생한다. 캐쉬 테이블(76)에 이와 같은 엔트리가 존재하지 않는다면, 엔트리가 생성된다.
S1306 단계에서, 검색된 물리적 어드레스의 경우 E 가 1이 아니라면, 플래쉬 메모리에 검색된 물리적 어드레스에 대응하는 메모리 위치가 소거되지 않았다는 것을 의미한다. 따라서, 라이트 동작이 실행되기 전에 소거되지 않는 한 데이터는 이 메모리 위치 내로 라이트 될 수 없다. 결과적으로, S1310 단계에서, 맵핑 컨트롤러(66)는 검색된 물리적 어드레스를 소거 리스트 상에 올린다. 소거 리스트는 소거될 물리적 어드레스의 리스트이다. 이 소거는 정기적으로 일어나거나, 프로세싱 자원과 플래쉬 메모리(6)가 리드/라이트 효율에 영향을 미치지 않는 한 발생될 수 있다.
그다음, S1312 단계에서, 맵핑 컨트롤러(66)는 소거된 상태에 있는 물리적 어드레스를 찾기 위해 논리 어드레스 테이블(74)을 엑세스한다. 이 물리적 어드레스는 라이트 요구와 함께 플래쉬 메모리 인터페이스(28)로 출력된다. S1314 와 S1316 단계에서, 맵핑 컨트롤러(66)는 맵핑 테이블 메모리(62)와 맵핑 테이블 캐쉬(64)를 업데이트한다. 맵핑 테이블 메모리(62)를 업데이트하는데 있어서, 물리적 어드레스 테이블(72)은 다음과 같이 바뀐다: 수신된 논리 어드레스에 대해 할당 필드(A)가, 이미 세트되어 있지 않다면, 논리 어드레스의 할당을 나타내도록 세트되고; 출력 물리적 어드레스가 수신된 논리 어드레스에 대해 물리적 어드레스 필드에 기입된다. 논리 어드레스 테이블(74)에서 수신된 논리 어드레스와 이전에 연관된 물리적 어드레스에 대한 할당 필드(A)는 논리 어드레스와 물리적 어드레스가 연관되지 않음을 나타내기 위해 세트(A=0)된다. 또한, 논리 어드레스 테이블(74)에서, 출력 물리적 어드레스에 대한 엔트리는 다음과 같이 변한다: 할당 필드는 할당을 나태내기 위해 세트(A=1)되고, 소거 필드는 비소거 상태를 나타내기 위해 세트(E=0)되며, 수신된 논리 어드레스는 논리 어드레스 필드에 기입된다. 맵핑 테이블 캐쉬(64)를 업데이트 하는데 있어서, 엔트리는 수신된 논리 어드레스 및 출력 물리적 어드레스에 대해 생성되거나, 논리 또는 물리적 어드레스를 포함하는 특정 엔트리는 오버라이트 된다(또는 더 이상 유효하지 않음을 나타내기 위해 업데이트된 엔트리).
S1304 단계로 되돌아가서, A가 수신된 논리 어드레스에 대한 물리적 어드레스 테이블(72)에서 1이 아니라면, 논리 어드레스에 할당된 물리적 어드레스가 없음을 나타낸다. 그 결과, 프로세싱은 S1312에서 스톱되도록 실행되고, 상기에서 상세히 설명된 것과 같이 실행된다.
도 12는 FTL(26)이 라이트 요구를 처리하기 전후의 물리적 어드레스 테이블(72)과 논리 어드레스 테이블(74)의 일부분을 도시한 것이다. 특히, 도 12에서 테이블 1102와 1104는 라이트 요구를 받아들이기 전의 물리적 어드레스 테이블(72)과 논리적 어드레스 테이블(74)을 각각 나타낸 것이고, 테이블 1106과 1108은 라이트 요구를 실행한 후의 물리적 어드레스 테이블(72)과 논리적 어드레스 테이블(74)을 각각 나타낸 것이다. 도 12에 나타낸 예에서, 라이트 요구는 새로운 데이터를 논리적 어드레스 #0 내로 라이트 하는 것이다. 도 11에 관하여 상기에서 설명한 프로세스에 따르면, S1304 단계에서, 맵핑 컨트롤러(66)는 논리 어드레스 #0에 대해 A=1인지를 판단을 한다 (테이블 1102 참조). S1306 단계에서, 맵핑 어드레스는 논리 어드레스 #0과 연관된 물리적 어드레스에 대해 소거되었는지를 판단한다. 테이블 1102에 나타낸바와 같이, 논리 어드레스 #0 와 연관되는 물리적 어드레스는 물리적 어드레스 #31이다. 테이블 1104에 도시한 바와 같이, 물리적 어드레스 #31에 대한 소거상태는 물리적 어드레스가 현재 소거되지 않음을 나타내는 0 이다. 그러므로, S1308 단계에서, 맵핑 컨트롤러(66)는 소거된 상태에 있는 새로운 물리적 어드레스를 찾는다. 도 12를 다시 참조하면, 맵핑 컨트롤러(66)는 테이블 1104에 나타낸 바와 같이 소거된 상태에 있는 물리적 어드레스 #32의 위치를 파악한다.
그러므로, S1308 단계에서, 맵핑 테이블 캐쉬(64) 또는 물리적 어드레스 테이블(72)로부터 물리적 어드레스 출력은 물리적 어드레스 #32이다.
S1314 단계에서, 맵핑 컨트롤러(66)는 맵핑 테이블 메모리(62)를 업데이트한다. 도 12에 나타낸바와 같이, 테이블 1106에 의해 표시된 물리적 어드레스 테이블(72)은 물리적 어드레스 #32가 논리 어드레스 #0과 현재 연관됨을 나타내기 위해 업데이트된다. 테이블 1108에 의해 표시된 논리 어드레스 테이블(74)에 대해, 물리적 어드레스 #31에 대한 할당 필드A 는 할당이 없음을 나타내도록 바뀌고, 물리적 어드레스 #32에 대한 할당 필드 A는 물리적 어드레스가 할당되는 것을 나타내도록 바뀌고, 물리적 어드레스 #32의 소거상태는 물리적 어드레스 #32가 소거된 상태가 아님을 나타내도록 바뀐다.
플래쉬 메모리 인터페이스
도 13은 플래쉬 메모리 인터페이스(28)의 상세 블록도이다. 특히, 플래쉬 메모리 인터페이스(28)는 플래쉬 메모리(6)로/부터 데이터를 직접 라이트하고 리드하는 기능을 실행한다.
도 13에 도시한바와 같이, 플래쉬 메모리 인터페이스(28)는 플래쉬 메모리 서브시스템(14)의 상위 계층과 인터페이스로 제공되는 플래쉬 엑세스 컨트롤러(82)와 플래쉬 메모리(6)와 직접 인터페이스로 제공되는 플래쉬 메모리 컨트롤러(86)를 포함한다. 플래쉬 엑세스 컨트롤러(82)와 플래쉬 메모리 컨트롤러(86)간에 배치된 것은 플래쉬 엑세스 컨트롤러(82)와 플래쉬 메모리 컨트롤러(86)간에 전송되는 데이터를 저장하는 데이터 FIFO(84)이다. 인터페이스로서, 플래쉬 엑세스 컨트롤러(82)는 데이터 및 명령 핸드쉐이크(handshake)신호를 처리하며, 예를 들면, ECC 결과, 이전에 라이트된 ECC 값 등을 저장하는 레지스터를 포함한다. 플래쉬 엑세스 컨트롤러 (82)에 의해 수신된 라이트 또는 리드 요구는 플래쉬 메모리 컨트롤러(86)로 직접 전송되는 반면에, 라이트 동작 동안에 수신된 데이터는 FIFO(84)를 통해서 플래쉬 메모리 컨트롤러(86)에 공급된다. 또한, 플래쉬 엑세스 컨트롤러(82)는 논리 어드레스를 리드 및 라이트 요구와 관련하여 플래쉬 메모리 컨트롤러(86)로 직접 공급한다. 플래쉬 메모리 컨트롤러(86)는 리드, 프로그램(라이트) 및 소거 동작을 실행하도록 플래쉬 메모리 컨트롤 신호를 발생한다. 본 발명의 예시적인 실시예에서, 플래쉬 메모리 컨트롤러(86)는 플래쉬 메모리 서브시스템(14)이 연결되어 있는 플래쉬 메모리(6)에 의존하는 가장 효율적인 방법으로 동작하도록 설계된다. 또한, 효율을 증대시키기 위해 FIFO(84)는 n x bs 비트의 사이즈를 갖도록 구성된다(여기서, n은 FIFO의 깊이이며 bs는 버스사이즈이다).
플래쉬 메모리 인터페이스(28)의 구성 및 동작은 매우 잘 알려져 있기 때문에 이 디바이스의 구성과 동작에 대한 부가적인 상세한 설명은 간결함을 위해 제공하지 않는다.
위에서 설명한 바와 같이, 본 발명에 따른 플래쉬 파일 시스템은 플래쉬 파일 시스템을 완전히 재설계 하지 않고 호스트 시스템, 플래쉬 메모리 또는 플래쉬 파일 시스템의 일부분만을 재설계하는 것이 가능하도록 계층적 구성을 갖는다. 따라서, 본 발명의 플래쉬 파일 시스템은 특별한 응용에도 극히 융통적이고 쉽게 적용가능하다.
캐쉬 메모리 시스템이 호스트 시스템으로 동일한 파일 시스템을 사용하기 때문에, 캐쉬 메모리 시스템에서 호스트 시스템으로부터 수신된 논리 어드레스의 변환이 요구되지 않는다.
또한, FTL은 호스트 시스템으로 동일한 파일 시스템을 사용한다. 결과적으로, 호스트 시스템에 의해 수신된 논리 어드레스를 플래쉬 메모리의 물리적 어드레스 내로 맵핑하는데 있어서, FTL은 하나의 맵핑 포맷이나 파일 시스템으로부터 다른 것의 내로 호스트 시스템의 논리 어드레스를 변환할 필요가 없다. 특히, 플래쉬 메모리 서브시스템(14)의 파일 시스템 및 맵핑 포맷이 호스트 시스템의 파일 시스템 및 맵핑 포맷과 동일한 데이터 유닛 사이즈를 기본으로 한다. 따라서, 맵핑 포맷은 플래쉬 메모리(6)의 물리적 구성과 독립적이다.
이상에서 본 발명을 설명하였지만, 다양한 방법으로 동일하게 변형될 수 있음이 분명하다. 이와 같은 변형은 본 발명의 정신과 범위로부터 이탈되는 것으로 간주되지 않으며, 모든 이와 같은 변형은 아래 클레임의 영역 내에서 포함될 수 있음을 본 발명이 속하는 분야의 당업자에게는 분명할 것이다.
도 1은 본 발명의 예시적인 실시예에 따른 플래쉬 파일 시스템에 연결된 호스트 시스템의 블록도;
도 2는 도 1의 플래쉬 메모리 서브시스템의 상세 블록도;
도 3은 도 2의 호스트 시스템 인터페이스의 상세 블록도;
도 4는 도 2의 의사(pseudo) RAM의 상세 블록도;
도 5는 도 4에서 룩업(look up) 테이블(LUT)에 저장된 디렉토리 엔트리의 필드 구성도;
도 6은 도 4의 의사 RAM 에 의해 실행된 리드(read) 프로세스의 플로우챠트;
도 7은 도 4의 의사 RAM 에 의해 실행된 라이트(write) 프로세스의 플로우챠트;
도 8은 도 2의 플래쉬 변환 계층 유닛(FTL) 의 상세 블록도;
도 9는 도 8의 맵핑 테이블 메모리와 맵핑 테이불 캐시의 상세 블록도;
도 10은 도 8의 FTL에 의해 실행된 리드(read) 프로세스의 플로우챠트;
도 11은 도 9의 FTL에 의해 실행된 라이트(write) 프로세스의 플로우챠트;
도 12는 일예의 라이트 동작 전후의 맵핑 테이블 메모리 부분을 나타낸 블록도; 및
도 13은 도 2의 플래쉬 메모리 인터페이스의 상세 블록도이다.

Claims (35)

  1. (정정) 플래쉬 메모리; 및
    호스트 시스템과 인터페이스 하는 호스트 시스템 인터페이스; 미리 설정된 수의 데이터 유닛 기억용량을 가지며 상기 호스트 시스템 인터페이스를 통하여 상기 호스트 시스템으로 또는 부터 전송을 위한 데이터를 저장하는 캐쉬 메모리 시스템; 상기 호스트 시스템 인터페이스와 상기 캐쉬 메모리 시스템을 통하여 상기 호스트 시스템으로부터 수신된 논리 어드레스를 상기 플래쉬 메모리의 물리적 어드레스 내로 맵핑하는 플래쉬 변환 계층 유닛; 및 상기 플래쉬 변환 계층 유닛으로부터 수신된 물리적 어드레스에 근거하여 데이터를 상기 캐쉬 메모리 시스템으로부터 상기 플래쉬 메모리로 전송하고, 상기 플래쉬 변환 계층 유닛으로부터 수신된 물리적 어드레스에 근거하여 데이터를 상기 플래쉬 메모리로부터 상기 캐쉬 메모리 시스템으로 전송하기 위해 상기 플래쉬 메모리와 인터페이스하는 상기 플래쉬 메모리 인터페이스를 포함하는 상기 플래쉬 메모리와 상기 호스트 시스템 간을 인터페이스 하는 플래쉬 메모리 서브시스템으로 구성된 플래쉬 파일 시스템.
  2. (정정) 제1항에 있어서, 상기 플래쉬 메모리 서브시스템은 상기 플래쉬 메모리의 물리적 구성과 독립적인 맵핑 포맷을 가지는 플래쉬 파일 시스템.
  3. (정정) 제2항에 있어서, 상기 맵핑 포맷은 호스트 시스템의 데이터 전송 유닛과 동일한 사이즈인 플래쉬 파일 시스템.
  4. 제3항에 있어서, 상기 맵핑 포맷은 호스트 시스템의 클러스터 사이즈를 가지는 플래쉬 파일 시스템.
  5. 제4항에 있어서, 상기 맵핑 포맷은 4KB 의 사이즈를 가지는 플래쉬 파일 시스템.
  6. 제1항에 있어서, 상기 캐쉬 메모리 시스템은 상기 호스트 시스템에 의해 요구된 데이터가 캐쉬 메모리 시스템에 상주할 때 플래쉬 메모리를 엑세스하지 않고 호스트 시스템으로 전송하기 위한 데이터를 출력하는 플래쉬 파일 시스템.
  7. (정정) 제6항에 있어서, 상기 캐쉬 메모리 시스템은 상기 호스트 시스템에 의해 사용된 논리 어드레스에 따라 데이터를 저장하는 플래쉬 파일 시스템.
  8. 제6항에 있어서, 상기 캐쉬 메모리 시스템은 일정 수의 데이터 전송 유닛의 저장용량을 가지는 버퍼 메모리; 및
    상기 버퍼 메모리에 각각의 데이터 유닛과 연관되고, 각각은 연관된 데이터 유닛의 논리 어드레스 및 데이터 유닛에서 데이터가 유효한지를 나타내는 엔트리를 가지는 룩업 (look up) 테이블 메모리로 구성된 플래쉬 파일 시스템.
  9. 제8항에 있어서, 상기 각각의 엔트리는 데이터 유닛에서 데이터의 부분이 호스트 시스템에 의해 바뀐 데이터를 포함하는 것을 추가로 나타내는 플래쉬 파일 시스템.
  10. 제8항에 있어서, 상기 각각의 엔트리는 전체 데이터 유닛이 호스트 시스템에 의해 바뀐 데이터를 포함하는지를 추가로 나타내는 플래쉬 파일 시스템.
  11. 제1항에 있어서, 상기 플래쉬 변환 계층 유닛은 논리 어드레스에 의해 인덱스되고 각각의 논리 어드레스에 대해 연관된 물리적 어드레스를 나타내며 논리 어드레스와 물리적 어드레스 연관이 유효한 지를 나타내는 물리적 어드레스 테이블; 및 물리적 어드레스에 의해 인덱스되고 각각의 물리적 어드레스에 대해 연관된 논리적 어드레스를 나타내며 물리적 어드레스와 논리 어드레스 연관이 유효한 지를 나타내고 각각의 물리적 어드레스에 대한 플래쉬 메모리의 이 부분이 소거되었는지를 나타내는 논리 어드레스 테이블을 저장하는 플래쉬 파일 시스템.
  12. 제11항에 있어서, 상기 논리 어드레스 테이블은 적어도 에러 보정 코드 데이터를 포함하는 각각의 물리적 어드레스 인덱스에 대응하는 기타 필드를 추가로 포함하는 플래쉬 파일 시스템.
  13. 제11항에 있어서, 상기 플래쉬 변환 계층 유닛은 맵핑 테이블 캐쉬, 데이터의 데이터 유닛에 대한 논리 어드레스를 포함하는 맵핑 테이블 캐쉬에서 각각의 엔트리, 데이터의 데이터 유닛과 연관된 물리적 어드레스, 논리 어드레스와 물리적 어드레스의 연관이 유효한지를 나타내는 유효성 필드, 및 물리적 어드레스와 연관된 플래쉬 메모리의 일부분이 소거되었는지를 나타내는 소거 필드를 추가로 저장하는 플래쉬 파일 시스템.
  14. (정정) 플래쉬 메모리; 및
    상기 플래쉬 메모리와 호스트 시스템 간을 인터페이스하고, 상기 호스트 시스템에 의해 사용된 논리 어드레스에 따라서 상기 플래쉬 메모리로 전송하기 위해 데이터를 캐쉬 메모리 시스템에 저장하고, 상기 호스트 시스템에 의해 요구된 데이터가 상기 캐쉬 메모리 시스템에 상주할 때 상기 데이터를 상기 플래쉬 메모리에서 엑세스하지 않고, 상기 호스트 시스템으로 전송하기 위해 출력하는 상기 캐쉬 메모리 시스템을 포함하는 플래쉬 메모리 서브시스템으로 구성된 플래쉬 파일 시스템.
  15. (정정) 제14항에 있어서, 상기 캐쉬 메모리 시스템은,
    설정된 수의 데이터 유닛의 기억 용량을 갖는 버퍼 메모리;
    상기 버퍼 메모리에 각각의 데이터 유닛과 연관되고, 각각은 데이터 유닛과 연관된 데이터 유닛의 논리 어드레스 및 데이터 유닛에서 데이터가 유효한지를 나타내는 엔트리를 가지는 룩업 (look up) 테이블 메모리;
    데이터가 플래쉬 메모리로 라이트되거나 리드될 때 상기 버퍼 메모리와 상기 플래쉬 메모리 서브시스템의 하위 계층간 인터페이스를 제공하는 데이터 필/플러쉬 컨트롤러; 및
    상기 호스트 시스템 인터페이스로부터 수신된 리드 및 라이트 요구에 근거하여 상기 룩업테이블 메모리 및 상기 버퍼 메모리와 데이터 필/플러쉬 컨트롤러의 동작을 제어하는 캐쉬 메모리 컨트롤러로 구성된 플래쉬 파일 시스템.
  16. 제15항에 있어서, 상기 각각의 엔트리는 상기 데이터 유닛에서 데이터의 부분이 상기 호스트 시스템에 의해 바뀐 데이터를 포함하는 것을 추가로 나타내는 플래쉬 파일 시스템.
  17. 제15항에 있어서, 상기 각각의 엔트리는 전체 데이터 유닛이 상기 호스트 시스템에 의해 바뀐 데이터를 포함하는지를 추가로 나타내는 플래쉬 파일 시스템.
  18. (정정) 플래쉬 메모리; 및
    상기 플래쉬 메모리와 상기 호스트 시스템 간에 데이터를 전송할 수 있도록 인터페이스 하는 플래쉬 메모리 서브시스템을 구비하고,
    상기 플래쉬 메모리 서브시스템은, 상기 호스트 시스템에 의해 수신된 논리 어드레스를 상기 플래쉬 메모리의 물리적 어드레스 내로 맵핑하고, 상기 논리 어드레스에 의해 인덱스되고 각각의 논리 어드레스에 대해 연관된 물리적 어드레스를 나타내며 논리 어드레스와 물리적 어드레스 연관이 유효한 지를 나타내는 물리적 어드레스 테이블; 및 상기 물리적 어드레스에 의해 인덱스되고 각각의 물리적 어드레스에 대해 연관된 논리 어드레스를 나타내며 상기 물리적 어드레스와 상기 논리 어드레스 연관이 유효한 지를 나타내고 상기 플래쉬 메모리에서 상기 논리 어드레스와 연관된 각각의 물리적 어드레스가 소거되었는지를 나타내는 논리 어드레스 테이블을 갖는 플래쉬 변환 계층 유닛을 포함함을 특징으로 하는 플래쉬 파일 시스템.
  19. 제18항에 있어서, 상기 논리 어드레스 테이블은 적어도 에러 보정 코드 데이터를 포함하는 각각의 물리적 어드레스 인덱스에 대응하는 기타 필드를 추가로 포함하는 플래쉬 파일 시스템.
  20. 제18항에 있어서, 상기 플래쉬 변환 계층 유닛은 맵핑 테이블 캐쉬, 데이터의 데이터 유닛에 대한 논리 어드레스를 포함하는 맵핑 테이블 캐쉬의 각각의 엔트리, 데이터의 데이터 전송 유닛과 연관된 물리적 어드레스, 논리 어드레스와 물리적 어드레스 연관이 유효한지를 나타내는 유효성 필드, 및 물리적 어드레스와 연관된 플래쉬 메모리의 일부분이 소거되었는지를 나타내는 소거 필드를 추가로 저장하는 플래쉬 파일 시스템.
  21. (정정) 플래쉬 메모리 ; 및
    상기 플래쉬 메모리와 호스트 시스템 간에 데이터를 전송할 수 있도록 인터페이스하는 플래쉬 메모리 서브시스템을 구비하고,
    상기 플래쉬 메모리 서브시스템이 상기 호스트 시스템의 데이터 유닛과 동일한 사이즈의 맵핑 포맷을 가지는 것을 특징으로 하는 플래쉬 파일 시스템.
  22. 제21항에 있어서, 상기 맵핑 포맷은 플래쉬 메모리의 물리적 구성과 독립적인 플래쉬 파일 시스템.
  23. 제21항에 있어서, 상기 맵핑 포맷은 호스트 시스템의 클러스터 사이즈를 갖는 플래쉬 파일 시스템.
  24. 제23항에 있어서, 상기 맵핑 포맷은 4KB의 사이즈를 갖는 플래쉬 파일 시스템.
  25. (정정) 일정수의 데이터 유닛 기억용량을 가지는 캐쉬 메모리 시스템에 데이터를 호스트 시스템으로 또는 부터 전송하기 위해 저장하는 단계;
    상기 호스트 시스템으로부터 수신된 논리 어드레스를 플래쉬 메모리의 물리적 어드레스 내로 맵핑하는 단계;
    데이터를 라이트 모드에서 맵핑 단계로부터 수신된 물리적 어드레스에 근거를 둔 상기 캐쉬 메모리 시스템으로부터 플래쉬 메모리로 전송하고 데이터를 리드 모드에서 맵핑 단계로부터 수신된 물리적 어드레스에 근거를 둔 상기 플래쉬 메모리로부터 상기 캐쉬 메모리 시스템으로 전송하기 위해 상기 플래쉬 메모리와 인터페이스 하는 단계로 구성된 플래쉬 메모리에 대한 플래쉬 파일링 방법.
  26. 제25항에 있어서, 상기 맵핑 단계에서 사용된 맵핑 포맷은 플래쉬 메모리의 물리적 구성과 독립적인 플래쉬 파일링 방법.
  27. 제25항에 있어서, 상기 맵핑 단계에서 사용된 멥핑 포맷은 상기 호스트 시스템의 데이터 전송 유닛과 동일한 사이즈인 플래쉬 파일링 방법.
  28. 제27항에 있어서, 상기 맵핑 포맷은 상기 호스트 시스템의 클러스터 사이즈를 갖는 플래쉬 파일링 방법.
  29. 제25항에 있어서, 상기 호스트 시스템에 의해 요구된 데이터가 상기 캐쉬 메모리 시스템에 상주할 때 상기 플래쉬 메모리를 엑세스하지 않고 데이터를 호스트 시스템으로 전송하기 위해 출력하는 단계를 추가로 포함하는 플래쉬 파일링 방법.
  30. 제25항에 있어서, 논리 어드레스에 의해 인덱스되고 각각의 논리 어드레스에 대해 연관된 물리적 어드레스를 나타내며 논리 어드레스와 물리적 어드레스 연관이 유효한 지를 나타내는 물리적 어드레스 테이블을 저장하는 단계; 및 물리적 어드레스에 의해 인덱스되고 각각의 물리적 어드레스에 대해 연관된 논리적 어드레스를 나타내며 물리적 어드레스와 논리 어드레스 연관이 유효한 지를 나타내고 각각의 물리적 어드레스에 대한 플래쉬 메모리의 이 부분이 소거되었는지를 나타내는 논리 어드레스 테이블을 저장하는 단계에; 물리적 및 논리 어드레스 테이블에 근거를 둔 맵핑 동작을 실행하는 맵핑 단계를 추가로 구성하는 플래쉬 파일링 방법.
  31. 제30항에 있어서, 맵핑 테이블 캐쉬, 데이터의 데이터 유닛에 대한 논리 어드레스를 포함하는 맵핑 테이블 캐쉬에서 각각의 엔트리, 데이터의 데이터 유닛과 연관된 물리적 어드레스, 논리 어드레스와 물리적 어드레스 연관이 유효한지를 나타내는 유효성 필드, 및 물리적 어드레스와 연관된 플래쉬 메모리의 일부분이 소거되었는지를 나타내는 소거 필드를 추가로 저장하는 단계; 물리적 어드레스 테이블, 논리 어드레스 테이블 및 맵핑 테이블 캐쉬에 근거를 둔 맵핑 동작을 실행하는 맵핑 단계를 추가로 구성하는 플래쉬 파일링 방법.
  32. (정정) 호스트 시스템에 의해 사용된 논리 어드레스에 따라서 캐쉬 메모리 시스템에서 데이터를 플래쉬 메모리로 전송하기위해 저장하는 단계; 및
    상기 호스트 시스템에 의해 요구된 데이터가 상기 캐쉬 메모리 시스템에 상주할 때 플래쉬 메모리를 엑세스하지 않고 데이터를 상기 호스트 시스템으로 전송하기 위해 출력하는 단계를 추가로 포함하는 플래쉬 파일링 방법.
  33. (정정) 제32항에 있어서, 상기 저장 단계는 상기 캐쉬 메모리 시스템의 설정된 수의 데이터 유닛의 기억용량을 가지는 버퍼 메모리에서 데이터를 플래쉬 메모리로 전송하기 위해 저장하고; 및
    상기 출력 단계는 상기 버퍼 메모리로부터 데이터를 상기 호스트 시스템으로 전송하기 위하여 출력하도록 버퍼 메모리에 각각의 데이터 유닛과 연관되고 연관된 데이터 유닛의 논리 어드레스와 데이터 유닛에서 데이터가 유효한지를 나타내는 엔트리를 가지는 룩 업 데이블 메모리를 엑세스하는 플래쉬 파일링 방법.
  34. (정정) 플레쉬 메모리에 대한 플레쉬 파일링방법에 있어서,
    상기 물리적 어드레스 테이블이 논리 어드레스에 의해 인덱스되며, 각각의 논리 어드레스에 대해 연관된 물리적 어드레스를 나타내고, 논리 어드레스와 물리적 어드레스 연관이 유효한 지를 나타내는 물리적 어드레스 테이블을 저장하는 단계;
    상기 논리적 어드레스 테이블이 물리적 어드레스에 의해 인덱스되고, 각각의 물리적 어드레스에 대해 연관된 논리적 어드레스를 나타내며, 상기 물리적 어드레스와 논리 어드레스 연관이 유효한 지를 나타내고, 각각의 물리적 어드레스에 대한 플래쉬 메모리의 이 부분이 소거되었는지를 나타내는 논리 어드레스 테이블을 저장하는 단계;
    호스트 시스템으로부터 수신된 논리 어드레스를 물리 및 논리 어드레스 테이블에 근거를 둔 플래쉬 메모리의 물리적 어드레스 내로 맵핑하는 단계를 포함함을 특징으로 하는 플래쉬 파일링방법.
  35. (정정) 제34항에 있어서, 맵핑 테이블 캐쉬, 데이터의 데이터 유닛에 대한 논리 어드레스를 포함하는 맵핑 테이블 캐쉬에서 각각의 엔트리, 데이터의 데이터 유닛과 연관된 물리적 어드레스, 논리 어드레스와 물리적 어드레스 연관이 유효한지를 나타내는 유효성 필드, 및 물리적 어드레스와 연관된 플래쉬 메모리의 일부분이 소거되었는지를 나타내는 소거 필드를 추가로 저장하는 단계; 물리적 어드레스 테이블, 논리 어드레스 테이블 및 맵핑 테이블 캐쉬에 근거를 둔 맵핑 동작을 실행하는 맵핑 단계를 추가로 구성하는 플래쉬 파일링방법.
KR10-2003-0041393A 2003-03-19 2003-06-25 플래쉬 파일 시스템 KR100526879B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/390,667 2003-03-19
US10/390,667 US8041878B2 (en) 2003-03-19 2003-03-19 Flash file system

Publications (2)

Publication Number Publication Date
KR20040082921A KR20040082921A (ko) 2004-09-30
KR100526879B1 true KR100526879B1 (ko) 2005-11-09

Family

ID=32987572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0041393A KR100526879B1 (ko) 2003-03-19 2003-06-25 플래쉬 파일 시스템

Country Status (4)

Country Link
US (1) US8041878B2 (ko)
JP (1) JP5013654B2 (ko)
KR (1) KR100526879B1 (ko)
TW (1) TWI265411B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190051259A (ko) * 2017-11-06 2019-05-15 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법

Families Citing this family (185)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
TWI262385B (en) * 2004-06-18 2006-09-21 Mediatek Inc Method for updating file data
US7386700B2 (en) * 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
KR100684942B1 (ko) * 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
KR100707308B1 (ko) * 2005-06-13 2007-04-12 삼성전자주식회사 엠엠씨 인터페이스를 갖는 플래시 메모리 장치 및 그것을포함한 메모리 시스템
US7748031B2 (en) * 2005-07-08 2010-06-29 Sandisk Corporation Mass storage device with automated credentials loading
KR101257848B1 (ko) * 2005-07-13 2013-04-24 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
KR100739722B1 (ko) * 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
EP1934879B1 (en) * 2005-09-14 2015-05-13 SanDisk Technologies Inc. Secure yet flexible system architecture for secure devices with flash mass storage memory
JP5002944B2 (ja) * 2005-11-15 2012-08-15 ソニー株式会社 情報処理装置、撮像装置、および情報処理方法、並びにコンピュータ・プログラム
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
KR100781520B1 (ko) * 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
WO2007097002A1 (ja) * 2006-02-24 2007-08-30 Fujitsu Limited データ読み書き制御装置
JP4842719B2 (ja) * 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US20080059519A1 (en) * 2006-09-02 2008-03-06 Tony Grifftih System, method, and apparatus for providing storage operations on an online computer system
KR100809320B1 (ko) * 2006-09-27 2008-03-05 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑정보 관리 장치 및 방법
KR100851849B1 (ko) * 2006-10-12 2008-08-13 삼성전자주식회사 휴대용 단말기 및 그것의 데이터 기입 및 독출 방법
US8745315B2 (en) * 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8706968B2 (en) 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US8443134B2 (en) 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
WO2008070803A1 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8161353B2 (en) * 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US7739444B2 (en) * 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
KR100810666B1 (ko) * 2006-12-26 2008-03-07 (재)대구경북과학기술연구원 플래시 메모리를 저장장치로 사용하는 기기를 위한 데이터색인 방법
TWM317043U (en) * 2006-12-27 2007-08-11 Genesys Logic Inc Cache device of the flash memory address transformation layer
KR100823171B1 (ko) 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
KR100817087B1 (ko) * 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
CN101256536B (zh) * 2007-03-01 2010-05-26 创惟科技股份有限公司 闪存地址转换层***
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
KR101473344B1 (ko) * 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
JP4315461B2 (ja) * 2007-10-30 2009-08-19 株式会社ハギワラシスコム ソリッドステートドライブ及びデータ書き込み方法
US8209465B2 (en) * 2007-10-30 2012-06-26 Hagiwara Sys-Com Co., Ltd. Data writing method
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
WO2009079014A1 (en) * 2007-12-18 2009-06-25 President And Fellows Of Harvard College Nand implementation for high bandwidth applications
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
US20090198952A1 (en) 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
JP2009211233A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
KR20090102192A (ko) * 2008-03-25 2009-09-30 삼성전자주식회사 메모리 시스템 및 그것의 데이터 저장 방법
US8966155B1 (en) * 2008-04-01 2015-02-24 Daniel P. Mulligan System and method for implementing a high performance data storage system
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TWI473100B (zh) * 2008-09-05 2015-02-11 A Data Technology Co Ltd Flash memory system and its operation method
US8762661B2 (en) * 2008-09-18 2014-06-24 Seagate Technology Llc System and method of managing metadata
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
KR101416879B1 (ko) * 2008-10-06 2014-08-07 삼성전자주식회사 비휘발성 메모리의 동작 방법
CN101552032B (zh) * 2008-12-12 2012-01-18 深圳市晶凯电子技术有限公司 用较大容量dram参与闪存介质管理构建高速固态存储盘的方法及装置
US9208108B2 (en) * 2008-12-19 2015-12-08 Nvidia Corporation Method and system for improved flash controller commands selection
US8732350B2 (en) * 2008-12-19 2014-05-20 Nvidia Corporation Method and system for improving direct memory access offload
US8694750B2 (en) * 2008-12-19 2014-04-08 Nvidia Corporation Method and system for data structure management
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8250333B2 (en) * 2009-01-05 2012-08-21 Sandisk Technologies Inc. Mapping address table maintenance in a memory device
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
TWI405209B (zh) * 2009-04-01 2013-08-11 Phison Electronics Corp 資料管理方法及使用此方法的快閃儲存系統與控制器
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
KR101631162B1 (ko) * 2009-06-11 2016-06-17 삼성전자주식회사 플래시 메모리를 구비하는 저장 장치 및 이의 데이터 저장 방법
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US9535849B2 (en) * 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
WO2011031796A2 (en) 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8429436B2 (en) 2009-09-09 2013-04-23 Fusion-Io, Inc. Apparatus, system, and method for power reduction in a storage device
CN102598019B (zh) 2009-09-09 2015-08-19 才智知识产权控股公司(2) 用于分配存储的设备、***和方法
CN104461942B (zh) * 2009-09-15 2018-06-08 威盛电子股份有限公司 串流上下文的高速缓存***
CN101667159B (zh) * 2009-09-15 2012-06-27 威盛电子股份有限公司 传送请求区块的高速缓存***及方法
US8683293B2 (en) * 2009-12-16 2014-03-25 Nvidia Corporation Method and system for fast two bit error correction
US20110161553A1 (en) * 2009-12-30 2011-06-30 Nvidia Corporation Memory device wear-leveling techniques
US9594675B2 (en) * 2009-12-31 2017-03-14 Nvidia Corporation Virtualization of chip enables
WO2011143628A2 (en) 2010-05-13 2011-11-17 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8381018B2 (en) * 2010-05-21 2013-02-19 Mediatek Inc. Method for data recovery for flash devices
CN103026346B (zh) * 2010-07-27 2016-01-20 国际商业机器公司 用于从固态存储器设备读取及写入数据的方法及存储***
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
EP2598996B1 (en) 2010-07-28 2019-07-10 SanDisk Technologies LLC Apparatus, system, and method for conditional and atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
JP5010723B2 (ja) * 2010-09-22 2012-08-29 株式会社東芝 半導体記憶制御装置
US9465728B2 (en) 2010-11-03 2016-10-11 Nvidia Corporation Memory controller adaptable to multiple memory devices
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
EP2652623B1 (en) 2010-12-13 2018-08-01 SanDisk Technologies LLC Apparatus, system, and method for auto-commit memory
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8417914B2 (en) * 2011-01-06 2013-04-09 Micron Technology, Inc. Memory address translation
WO2012100087A2 (en) 2011-01-19 2012-07-26 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
WO2012106362A2 (en) 2011-01-31 2012-08-09 Fusion-Io, Inc. Apparatus, system, and method for managing eviction of data
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
CN102779548A (zh) * 2011-05-09 2012-11-14 深圳市晶凯电子技术有限公司 用闪存介质作为存储体进行分级管理的固态存储装置及其构建方法
US8819586B2 (en) * 2011-05-27 2014-08-26 Microsoft Corporation File access with different file hosts
US9164676B2 (en) 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
JP5907739B2 (ja) * 2012-01-26 2016-04-26 株式会社日立製作所 不揮発性記憶装置
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US8874850B1 (en) * 2012-05-10 2014-10-28 Netapp, Inc. Hierarchically tagged cache
US9128820B1 (en) 2012-06-18 2015-09-08 Western Digital Technologies, Inc. File management among different zones of storage media
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
CN102880553B (zh) * 2012-09-18 2015-09-16 武汉虹信通信技术有限责任公司 一种基于mcu的片外flash文件***的读写方法
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9575884B2 (en) * 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
JP6008325B2 (ja) * 2013-05-17 2016-10-19 学校法人 中央大学 データ記憶システムおよびその制御方法
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9612973B2 (en) 2013-11-09 2017-04-04 Microsoft Technology Licensing, Llc Using shared virtual memory resources for performing memory-mapping
US9798631B2 (en) 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US9666244B2 (en) 2014-03-01 2017-05-30 Fusion-Io, Inc. Dividing a storage procedure
CN105279108A (zh) * 2014-07-25 2016-01-27 广明光电股份有限公司 固态硬盘写入数据的方法
US10474569B2 (en) 2014-12-29 2019-11-12 Toshiba Memory Corporation Information processing device including nonvolatile cache memory and processor
US9933950B2 (en) 2015-01-16 2018-04-03 Sandisk Technologies Llc Storage operation interrupt
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9996302B2 (en) 2015-04-03 2018-06-12 Toshiba Memory Corporation Storage device writing data on the basis of stream
US10261725B2 (en) 2015-04-10 2019-04-16 Toshiba Memory Corporation Storage system capable of invalidating data stored in a storage device thereof
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
US10229049B2 (en) 2015-12-17 2019-03-12 Toshiba Memory Corporation Storage system that performs host-initiated garbage collection
US20170220252A1 (en) * 2016-01-29 2017-08-03 Faraday&Future Inc. Flash emulated eeprom wrapper
US9946596B2 (en) 2016-01-29 2018-04-17 Toshiba Memory Corporation Global error recovery system
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
US10380100B2 (en) 2016-04-27 2019-08-13 Western Digital Technologies, Inc. Generalized verification scheme for safe metadata modification
US9858003B2 (en) 2016-05-02 2018-01-02 Toshiba Memory Corporation Storage system that reliably stores lower page data
US10380069B2 (en) * 2016-05-04 2019-08-13 Western Digital Technologies, Inc. Generalized write operations verification method
US10503635B2 (en) 2016-09-22 2019-12-10 Dell Products, Lp System and method for adaptive optimization for performance in solid state drives based on segment access frequency
KR20180051706A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
TW201818248A (zh) * 2016-11-15 2018-05-16 慧榮科技股份有限公司 可應用於資料儲存裝置之記憶體管理方法
US10191854B1 (en) 2016-12-06 2019-01-29 Levyx, Inc. Embedded resilient distributed dataset systems and methods
US10459786B2 (en) * 2017-06-27 2019-10-29 Western Digital Technologies, Inc. Scaling large drives using enhanced DRAM ECC
US10678446B2 (en) * 2017-07-11 2020-06-09 Western Digital Technologies, Inc. Bitmap processing for log-structured data store
TWI661303B (zh) * 2017-11-13 2019-06-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
US20190163642A1 (en) 2017-11-27 2019-05-30 Intel Corporation Management of the untranslated to translated code steering logic in a dynamic binary translation based processor
KR102566635B1 (ko) 2017-12-18 2023-08-14 삼성전자주식회사 비휘발성 메모리 시스템 및 그 동작 방법
TWI647566B (zh) * 2018-01-19 2019-01-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US10997066B2 (en) 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same
KR20200088635A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10853263B1 (en) 2019-07-23 2020-12-01 Ati Technologies Ulc Unified kernel virtual address space for heterogeneous computing
KR20210015086A (ko) * 2019-07-31 2021-02-10 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11036625B1 (en) 2020-04-24 2021-06-15 Micron Technology, Inc. Host-resident translation layer write command associated with logical block to physical address of a memory device
CN112597071B (zh) * 2020-12-09 2024-03-26 北京地平线机器人技术研发有限公司 数据存储方法、获取方法、装置、电子设备以及介质
CN113342697B (zh) 2021-07-19 2022-08-26 英韧科技(上海)有限公司 闪存转换层仿真测试***及方法
CN116048428B (zh) * 2023-03-30 2023-08-29 北京特纳飞电子技术有限公司 数据请求处理方法、装置、存储设备和可读存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01288940A (ja) * 1988-05-16 1989-11-21 Nec Corp 論理アドレスキャッシュ制御方式
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5778418A (en) * 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
JPH06215589A (ja) * 1993-01-18 1994-08-05 Hitachi Ltd 半導体メモリ
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
JP2003015928A (ja) * 2001-07-04 2003-01-17 Nec System Technologies Ltd フラッシュメモリのデータ格納装置及びそれに用いるデータ格納方法
JP4059473B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190051259A (ko) * 2017-11-06 2019-05-15 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
KR102410296B1 (ko) 2017-11-06 2022-06-20 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법

Also Published As

Publication number Publication date
TW200419345A (en) 2004-10-01
US20040186946A1 (en) 2004-09-23
JP5013654B2 (ja) 2012-08-29
TWI265411B (en) 2006-11-01
US8041878B2 (en) 2011-10-18
JP2004288150A (ja) 2004-10-14
KR20040082921A (ko) 2004-09-30

Similar Documents

Publication Publication Date Title
KR100526879B1 (ko) 플래쉬 파일 시스템
US11640353B2 (en) Memory system, data storage device, user device and data management method thereof
KR100980309B1 (ko) 호스트 디바이스 및 메모리 시스템
JP4533956B2 (ja) フラッシュメモリシステムのデータ記憶容量の解放
KR100630980B1 (ko) 메모리 카드 및 반도체 장치
US7174440B2 (en) Method and apparatus for performing block caching in a non-volatile memory system
US8051258B2 (en) Apparatus and methods using invalidity indicators for buffered memory
US7487303B2 (en) Flash memory device and associated data merge method
US6678785B2 (en) Flash management system using only sequential write
CN100454273C (zh) 用于块内页面分组的方法及设备
US8307172B2 (en) Memory system including memory controller and separately formatted nonvolatile memory to avoid “copy-involving write” during updating file data in the memory
US20060149902A1 (en) Apparatus and method for storing data in nonvolatile cache memory considering update ratio
TW200417856A (en) Method and apparatus for splitting a logical block
US20050132127A1 (en) Flash memory and mapping control apparatus and method for flash memory
JP2009503743A (ja) データファイルを直接記憶するメモリブロックの管理
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け
CN113836047A (zh) 存储装置及其操作方法
JP2009265839A (ja) 記憶装置
KR100627872B1 (ko) 낸드 플래시 메모리의 데이터 기입 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 15