KR100755700B1 - 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법 - Google Patents

비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법 Download PDF

Info

Publication number
KR100755700B1
KR100755700B1 KR1020050130795A KR20050130795A KR100755700B1 KR 100755700 B1 KR100755700 B1 KR 100755700B1 KR 1020050130795 A KR1020050130795 A KR 1020050130795A KR 20050130795 A KR20050130795 A KR 20050130795A KR 100755700 B1 KR100755700 B1 KR 100755700B1
Authority
KR
South Korea
Prior art keywords
block
list
physical
cache
physical block
Prior art date
Application number
KR1020050130795A
Other languages
English (en)
Other versions
KR20070068796A (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 KR1020050130795A priority Critical patent/KR100755700B1/ko
Priority to US11/601,819 priority patent/US7774541B2/en
Priority to JP2006342259A priority patent/JP2007179545A/ja
Priority to EP06127067A priority patent/EP1804168A1/en
Priority to CNB2006101682319A priority patent/CN100524249C/zh
Publication of KR20070068796A publication Critical patent/KR20070068796A/ko
Application granted granted Critical
Publication of KR100755700B1 publication Critical patent/KR100755700B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/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/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • 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/7211Wear leveling

Landscapes

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

Abstract

본 발명은 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법에 관한 것으로서, 더욱 상세하게는 전원이 차단되어도 데이터가 남아있는 비휘발성 메모리를 캐쉬로 사용한 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법에 관한 것이다.
본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치는, 저장 매체, 상기 주 저장 매체의 캐쉬로 사용되며, 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역을 포함하는 비휘발성 메모리, 및 상기 비휘발성 메모리에 할당되는 물리 블록을 가상 주소를 통해 관리하는 블록 관리부를 포함한다.
비휘발성 메모리, 블록 회수, 캐쉬

Description

비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법{Storage apparatus using non volatile memory and method for managing the same}
도 1은 일반적인 저장 장치가 도시된 도면.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치가 도시된 도면.
도 3은 본 발명의 실시예에 따른 가상 블록 주소 공간이 도시된 도면.
도 4는 본 발명의 실시예에 따른 할당 블록 리스트 및 자유 블록 리스트가 도시된 도면.
도 5는 본 발명의 실시예에 따른 블록 맵핑 테이블이 도시된 도면.
도 6은 본 발명의 실시예에 따른 블록 회수 이전의 할당 블록 리스트, 자유 블록 리스트 및 블록 맵핑 테이블이 도시된 도면.
도 7은 본 발명의 실시예에 따른 블록 회수 이후의 할당 블록 리스트, 자유 블록 리스트 및 블록 맵핑 테이블이 도시된 도면.
도 8은 본 발명의 실시예에 따른 배드 블록 처리 이전의 할당 블록 리스트, 자유 블록 리스트 및 블록 맵핑 테이블이 도시된 도면.
도 9는 본 발명의 실시예에 따른 배드 블록 처리 이후의 할당 블록 리스트, 자유 블록 리스트 및 블록 맵핑 테이블이 도시된 도면.
도 10은 본 발명의 실시예에 따른 블록 할당 방법이 도시되 도면.
도 11은 본 발명의 실시예에 따른 블록 회수 방법이 도시된 도면.
도 12는 본 발명의 실시예에 따른 배드 블록 처리 방법이 도시된 도면.
도 13은 본 발명의 실시예에 따른 정전 복구 방법이 도시된 도면.
<도면의 주요 부분에 관한 부호의 설명>
110: 주 저장 매체 120: 비휘발성 메모리
130: 블록 관리부 131: 블록 할당부
132: 블록 회수부 133: 배드 블록 관리부
134: 정전 복구부 135: 블록 맵핑 테이블 관리부
136: 리스트 저장부 140: 호스트
본 발명은 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법에 관한 것으로서, 더욱 상세하게는 전원이 차단되어도 데이터가 남아있는 비휘발성 메모리를 캐쉬로 사용한 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법에 관한 것이다.
일반적인 저장 장치(10)는 도 1과 같이, 호스트(11), 데이터 버퍼(12) 및 주 저장 매체(13)를 포함할 수 있다. 이때, 호스트(11)는 사용자의 명령에 따라 주 저장 매체(13)와 데이터를 주고 받는 역할을 하게 되며, 데이터 버퍼(12)는 호스트 (11)와 주 저장 매체(13) 사이에 속도의 차이를 완충시키는 역할을 하게 된다.
다시 말해서, 호스트(11)로부터 전송된 데이터는 주 저장 매체(13)에 기록될때까지 데이터 버퍼(12)에 저장되며, 주 저장 매체(13)로부터 전송된 데이터는 호스트(11)로 전송될때까지 데이터 버퍼(12)에 저장되는 것이다. 이러한 저장 장치(10)에서 데이터 버퍼(12)는 일반적으로 휘발성 메모리로 구성되어 있기 때문에 저장 장치(10)로 공급되는 전원이 차단되는 경우 데이터 버퍼(20)에 존재하는 데이터는 모두 사라지게 된다.
한편, 저장 장치(10)는 액세스 효율을 높이기 위해 캐쉬(Cache)를 사용하게 된다. 이러한 캐쉬는 주 저장 매체(13)에 저장될 데이터의 일부가 저장되어 있어 호스트(11)가 캐쉬에 저장된 데이터를 읽어올때는 주 저장 매체(13)를 액세스할 필요가 없기 때문에 액세스 효율이 높아지게 된다.
그러나, 데이터 버퍼(12)는 전원이 차단되는 경우, 데이터가 모두 사라지기 때문에 그 크기를 늘린다하더라도 캐쉬로 사용되기 어렵다. 또한, 주 저장 매체(13)에 항상 전원이 공급되어야 하기 때문에 소비되는 전력을 감소시키는데 한계가 있다는 문제점이 있다.
따라서, 최근에는 저장 장치(10)에 비휘발성 메모리를 캐쉬로 사용하여 호스트(11)가 비휘발성 메모리에 저장된 데이터를 읽고 쓸때는 주 저장 매체(13)의 전원을 차단하여 소비되는 전력이 감소될 수 있도록 하고 있다.
그러나, 비휘발성 메모리를 저장 장치(10)의 캐쉬로 사용하는 경우, 데이터의 고정 여부, 즉 소정 데이터가 비휘발성 메모리에 항상 고정 위치되는 고정 영역 과 빈번하게 변경되는 비고정 영역에 대한 데이터를 효과적으로 관리하고, 갑작스런 전원 차단으로부터 데이터를 안전하게 보호하기 위한 방안이 요구되고 있다. 또한, 주 저장 매체(13)로 전원이 공급되는 시간을 최소화시키기 위한 블록 회수 방안 및 비휘발성 메모리에서 각 물리 블록에 대한 사용 빈도를 고려하여 비휘발성 메모리의 수명을 증가시킬 수 있는 방안 등이 요구되고 있다.
일본 공개 특허 2003-256289는 어드레스 지정 가능한 플래시 메모리 시스템에 있어, 블록으로 편성된 상기 플래시 메모리 지정 위치를 원형 시퀀스(물리섹터 어드레스의 최하위와 최상의 두 곳에서 기록과 삭제가 일어남)에 따라 주기적으로 블록 지정 삭제를 수행함으로써 플래시 메모리의 Wear levels의 일관성을 유지할 수 있는 시스템을 개시하고 있으나, 고정 영역 및 비고정 영역에 대한 데이터를 효과적으로 관리하고, 갑작스런 전원 차단으로 인한 데이터 보호하며, 블록 회수 및 사용 빈도 조절을 통한 수명 연장에 대한 방안은 제안되고 있지 않다.
본 발명은 캐쉬로 사용되는 비휘발성 메모리의 영역을 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역으로 관리하고, 블록 회수를 통해 블록의 사용 빈도를 균등화할 수 있는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은 갑작스런 전원 차단시 복구를 용이하게 수행할 수 있는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치는, 주 저장 매체, 상기 주 저장 매체의 캐쉬로 사용되며, 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역을 포함하는 비휘발성 메모리, 및 상기 비휘발성 메모리에 할당되는 물리 블록을 가상 주소를 통해 관리하는 블록 관리부를 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법은, 주 저장 매체의 캐쉬로 사용되는 비휘발성 메모리의 영역을 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역으로 구분하는 단계, 및 상기 고정 영역 및 상기 비고정 영역에 할당되는 물리 블록을 각 물리 블록에 할당되는 가상 주소를 통해 관리하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범수를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치(100)는, 주 저장 매체(110), 주 저장 매체(110)의 캐쉬로 사용되는 비휘발성 메모리(120) 및 비휘발성 메모리(120)의 물리 블록(Physical Block, 이하 PB라 함)을 가상 주소를 통해 관리하는 블록 관리부(130)를 포함할 수 있다.
본 발명의 실시예에서 주 저장 매체(110)는 하드 디스크 드라이브(Hard Disk Drive) 등의 대용량 저장 매체로 이해될 수 있으며, 비휘발성 메모리(120)는 전원이 차단된 경우에도 데이터가 사라지지 않는 플래시 메모리 등으로 이해될 수 있다. 한편, 본 발명의 실시예에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치(100)는 사용자의 명령에 따라 주 저장 매체(110)와 데이터를 송수신하는 호스트(140)와 연결될 수 있으며, 본 발명의 실시예에서 호스트(140)는 블록 관리부(130) 와 연결될 수 있다.
비휘발성 메모리(120)는 데이터가 고정되는 고정 영역 및 데이터가 빈번하게 변경되는 비고정 영역으로 구분될 수 있다. 고정 영역은 주 저장 매체(110)의 캐쉬로 사용되는 비휘발성 메모리(120)에 항상 상주해야하는 데이터가 저장되는 영역을 의미하고, 비고정 영역은 주 저장 매체(110)와 데이터의 이동이 빈번하게 일어나는 영역을 의미한다.
블록 관리부(130)는 비휘발성 메모리(120)에 PB를 할당하는 블록 할당부(131), 할당된 PB를 회수하는 블록 회수부(132), 배드 블록을 관리하는 배드 블록 관리부(133), 전원 차단시 정전 복구를 위한 정전 복구부(134), 비휘발성 메모리(120)의 물리 블록 번호(Physical Block Number, 이하 PBN이라 함)와 가상 블록 번호(Virtual Block Number, 이하 VBN이라 함)의 맵핑 관계를 관리하는 블록 맵핑 테이블 관리부(135), 할당 블록 리스트 및 자유 블록 리스트를 저장하는 리스트 저장부(136)를 포함할 수 있다.
블록 할당부(131)는 리스트 저장부(136)에 저장된 자유 블록 리스트에 따라 비휘발성 메모리(120)의 고정 영역 및 비고정 영역에 PB를 할당할 수 있다. 이때, 자유 블록 리스트는 데이터가 존재하지 않는 빈 PB를 포함하며, 자유 블록 리스트는 각 PB의 사용 빈도(Wear Level)순에 따른 PBN순으로 정렬될 수 있다. 다시 말해서, 자유 블록 리스트는 가장 적게 사용된 PBN이 가장 앞에 위치하게 되며, 가장 많이 사용된 PBN이 가장 뒤에 위치하게 되는 것이다. 이러한 자유 블록 리스트는 일반적으로 비휘발성 메모리(120)의 스패어(Spare) 영역에 저장되어 있으며, 후술 할 정전 복구부(134)는 갑작스런 전원 차단 후 재부팅시에는 스패어 영역에 저장된 값을 통해 자유 블록 리스트를 재구성할 수 있다.
도 3은 본 발명의 실시예에 따른 가상 블록 주소 공간이 도시된 도면이다.
블록 할당부(131)는 비휘발성 메모리(120)의 고정 영역 및 비고정 영역에 PB를 할당할 경우, 해당 PBN에 도 3과 같은 가상 블록 주소 공간의 VBN을 할당할 수 있다. 이러한 가상 블록 주소 공간의 VBN은 고정 영역 및 비고정 영역을 구분하기 위해 서로 반대 방향으로부터 순차적으로 비휘발성 메모리(120)의 PBN과 맵핑될 수 있다. 또한, 가상 블록 주소 공간에서 각 VBN은 다수의 페이지로 이루어질 수 있으며, 가상 블록 주소 공간은 물리 주소 공간에 비하여 큰 크기를 가질 수 있다.
이후, 블록 할당부(131)는 자유 블록 리스트에서 가장 앞에 위치한 PB를 고정 영역 또는 비고정 영역에 할당하게 되며, 할당된 PB의 PBN과 VBN의 맵핑 관계를 기록한 블록 맵핑 테이블을 전술한 블록 맵핑 테이블 관리부(135)에 저장할 수 있다. 이러한 블록 맵핑 테이블 또한 전술한 가상 블록 주소 공간과 마찬가지로 고정 영역 및 비고정 영역에 따라 서로 반대 방향으로 순차적으로 할당될 수 있다. 이때, 블록 할당부(131)는 자유 블록 리스트에서 소정 PB를 고정 영역 또는 비고정 영역에 할당한 후, 리스트 저장부(136)에 저장된 할당 블록 리스트 및 자유 블록 리스트를 갱신하게 된다. 구체적으로, 블록 할당부(131)는 고정 영역 또는 비고정 영역에 할당된 PB는 자유 블록 리스트에서 제거하게 되며, 할당된 PB는 할당 블록 리스트의 마지막에 추가하게 된다.
도 4는 본 발명의 실시예에 따른 할당 블록 리스트 및 자유 블록 리스트가 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 할당 블록 리스트(210)는 PB(230)의 사용 빈도(231)가 가장 적은 PBN부터 순차적으로 할당된 것을 알 수 있다. 또한, 자유 블록 리스트(220)는 PB(230)에서 할당되지 않은 PBN이 사용 빈도(231)순에 따라 정렬된 것을 알 수 있다.
도 5는 전술한 도 4의 할당 블록 리스트의 물리 블록 번호와 가상 블록 번호를 맵핑한 블록 맵핑 테이블이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 블록 맵핑 테이블(240)은, VBN에 PBN을 맵핑하며, 고정 영역 및 비고정 영역에 따라 서로 반대방향으로부터 순차적으로 맵핑되는 것을 알 수 있다.
한편, 비휘발성 메모리(120)에 데이터가 기록될때에는 데이터와 더불어 스패어 영역에 다양한 메타 데이터가 함께 저장될 수 있다. 본 발명의 실시예에서 메타 데이터는 비휘발성 메모리(120)의 메타 데이터 저장부(121)에 저장될 수 있다. 이때, 메타 데이터 저장부(121)에 저장되는 메타 데이터로는, 논리 블록 주소(Logical Block Address, 이하 LBA라 함), 고정 영역 및 비고정 영역 데이터 지시자, 블록의 사용 빈도, 복구 마크 등을 포함할 수 있다.
이때, LBA는 할당 블록 리스트와 각 PB에 맵핑된 LBA를 통해 갑작스런 전원 차단시 정전 복구를 위해 사용될 수 있으며, 고정 영역 및 비고정 영역 데이터 지시자는 고정 영역 및 비고정 영역을 구분하고 정전 복구를 위해 사용될 수 있고, 사용 빈도는 사용 빈도 순으로 자유 블록 리스트 생성을 위해 사용될 있으며, 복구 마크는 정전 복구를 위한 것으로 할당 블록 리스트와 자유 블록 리스트가 연결되어 함께 비휘발성 메모리(120)에 저장될 경우, 자유 블록 리스트의 처음에 복구 마크를 기록하여 할당 블록 리스트와 자유 블록 리스를 구분하기 위해 사용될 수 있다. 이때, 할당 블록 리스트와 자유 블록 리스트가 연결되어 저장된다는 것은, 실제 할당 블록 리스트와 자유 블록 리스트는 하나의 리스트로 이루어진 것으로 이해될 수 있으며, 복구 마크를 자유 블록 리스트의 처음에 기록하여 할당 블록 리스트와 자유 블록 리스트를 구분하게 된다.
블록 회수부(132)는 할당 블록 리스트내 각 PB에서 유효한 페이지의 수를 산출한다. 이때, 블록 회수부(132)는 유효한 페이지의 수가 가장 적은 PB부터 블록 회수를 수행할 수 있다. 다시 말해서, 블록 회수부(132)는 소정 PB내에 유효한 페이지의 수가 가장 적다라고 하는 것은, 유효한 데이터가 적다는 것으로 판단할 수 있고, 이로 인해 블록 회수부(132)는 유효한 페이지가 가장 적은 PB부터 블록 회수를 수행하게 된다.
블록 회수부(132)는 자유 블록 리스트에서 가장 앞에 위치한 PB을 할당하여 할당 블록 리스트의 마지막에 위치시키고, 블록 회수를 수행하려는 PB내의 유효한 페이지를 자유 블록 리스트를 할당 블록 리스트의 마지막에 위치된 블록으로 이동시키게 된다. 또한, 블록 회수부(132)는 할당 블록 리스트의 마지막에 위치된 PB으로 유효한 페이지를 모두 이동된 후, 블록 회수가 수행된 PB는 사용 빈도순에 따라 다시 자유 블록 리스트에 추가하게 된다.
이때, 블록 할당부(131)는 블록 회수를 위해 할당 블록 리스트에 마지막에 위치된 PB의 PBN에 가상 블록 주소 공간의 VBN를 할당하여 가상 블록 주소 공간을 갱신하게 된다.
도 6은 본 발명의 실시예에 따른 블록 회수 이전의 물리 블록이 도시된 도면이다.
도시된 바와 같이, 할당 블록 리스트(310)는 PBN5, PBN0, PBN7, PBN2를 포함하고, 각 PBN의 유효 페이지 수(311)는 5, 4, 6, 3인 것을 알 수 있다. 또한, 자유 블록 리스트(320)는 PBN3, PBN6, PBN1, PBN4를 포함하고, 블록 맵핑 테이블(330)은 각 VBN에 고정 영역 및 비고정 영역에 따라 서로 반대방향으로부터 할당 블록 리스트(310)의 PBN들이 맵핑된 것을 알 수 있다.
도 7은 본 발명의 실시예에 따라 블록 회수 이후의 물리 블록이 도시된 도면이다. 이때, 도 7은 전술한 도 6에서 PBN0의 유효 페이지는 PBN6으로 이동되고, PBN2 및 PBN5의 유효 페이지는 PBN3으로 이동되어 블록 회수가 수행된 경우를 예를 들어 설명하기로 한다.
도시된 바와 같이, 할당 블록 리스트(310)에서는 전술한 도 6에서 PBN0, PBN2 및 PBN6이 블록 회수가 수행되었기 때문에 PBN0, PBN2 및 PBN6이 제거된 것을 알 수 있으며, 자유 블록 리스트(320)에는 블록 회수가 수행된 PBN0, PBN2 및 PBN6이 사용 빈도에 따라 추가된 것을 알 수 있다.
또한, 블록 맵핑 테이블(330)은 블록 회수가 수행되지 않은 PBN7은 그대로 유지되는 반면, 블록 회수가 수행되어 자유 블록 리스트(320)로부터 할당 블록 리스트(310)에 추가된 PBN3 및 PBN6은 새로운 VBN과 맵핑되었음을 알 수 있다.
배드 블록 관리부(133)는 할당 블록 리스트내의 소정 PB에서 배드 블록이 발생하게 되면, 해당 PB를 할당 블록 리스트에서 제거하게 되며, 제거되는 PB에 기록된 데이터들은 자유 블록 리스트로부터 새로운 PB를 할당받아 이동시키게 된다. 이때, 배드 블록 관리부(133)는 배드 블록에 기록된 데이터를 옮기기 위해 자유 블록 리스트로부터 할당받은 PB를 제거되는 배드 블록의 위치에 삽입하게 된다.
도 8은 본 발명의 실시예에 따라 발생된 배드 블록이 도시된 도면이다.
도시된 바와 같이, 배드 블록 관리부(133)는 할당 블록 리스트(410)의 PBN5에서 배드 블록이 발생한 경우, 자유 블록 리스트(420)으로부터 PB를 새로 할당받게 되며, 새로 할당된 PB로 배드 블록에 기록된 데이터를 이동시키게 된다. 이때, 배드 블록이 제거되기 전에는 블록 맵핑 테이블(430)에는 PBN5가 VBN7과 맵핑되어 있으나, 배드 블록이 제거되면서 새로 할당된 PB에 대한 PBN이 VBN7과 맵핑된다.
도 9는 본 발명의 실시예에 따라 제거된 배드 블록이 도시된 도면이다.
도시된 바와 같이, 배드 블록 관리부(133)는 전술한 도 8에서 할당 블록 리스트(410)에서 배드 블록이 발생한 PBN5에 기록된 데이터를 자유 블록 리스트(420)에서 새로 할당받은 PBN6으로 이동시키고, PBN6을 배드 블록이 발생한 PBN5의 위치에 삽입하게 된다. 이때, 배드 블록이 발생한 PBN5는 자유 블록 리스트(420)에 추가되지 않고 더 이상 할당되지 않게 된다. 또한, 블록 맵핑 테이블(430)에서도 배드 블록인 PBN5와 맵핑된 VBN7을 새로 할당된 PBN6과 다시 맵핑하게 된다.
정전 복구부(134)는 갑작스런 전원 차단시 할당 블록 리스트와 자유 블록 리스트를 통해 정전 복구를 수행할 수 있다. 이러한 정전 복구를 수행하기 위해서는 할당 블록 리스트 및 자유 블록 리스트의 순서를 변경시키는 요인인 블록 회수시와 주 저장 매체(110)로의 데이터 이동시에 변경된 할당 블록 리스트 및 자유 블록 리스트를 비휘발성 메모리(120)의 스패어 영역에 저장하게 된다. 다시 말해서, 할당 블록 리스트와 자유 블록 리스트는 일단 저장되고 나면, 갑작스런 전원 차단시에 그 순서에 동일하게 유지되기 때문에 PB가 할당된 순서를 알 수 있으며, 스패어 영역의 LBA를 바탕으로 가장 최근에 데이터만을 추출하게 된다. 따라서, 블록 회수시 및 주 저장 매체(110)로의 데이터 이동시에만 할당 블록 리스트 및 자유 블록 리스트를 저장하여 용이하게 정전 복구를 수행할 수 있다. 또한, 블록 회수시에 복구 마크를 기록하고, 다시 할당할때는 복구 마크를 지우기 때문에 할당 블록 리스트와 자유 블록 리스트로 구분할 수 있다. 이때, 블록 맵핑 테이블 또한 할당 블록 리스트를 통해 복구할 수 있게 된다.
도 10은 본 발명의 실시예에 따른 블록 할당 방법이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 블록 할당 방법은, 먼저 블록 할당부(131)가 자유 블록 리스트로부터 고정 영역 또는 비고정 영역에 새로 할당할 PB를 선택하게 된다(S110). 이때, 블록 할당부(131)는 자유 블록 리스트에서 가장 앞에 위치한 PB를 새로 할당하게 된다. 이는 자유 블록 리스트가 사용 빈도순에 따라 정렬되어 있기 때문에 자유 블록 리스트에서 가장 앞에 위치한 PB가 사용 빈도가 가장 적기 때문이다.
블록 할당부(131)는 선택된 PBN에 VBN을 할당하게 된다(S120). 이때, VBN은 고정 영역 및 비고정 영역에 따라 가상 블록 주소 공간에서 서로 반대방향으로부터 순차적으로 할당된다.
또한, 블록 할당부(131)는 PBN과 VBN의 맵핑 관계를 나타내는 블록 맵핑 테이블을 갱신한다(S130).
이후, 블록 할당부(131)는 선택된 PBN을 할당 블록 리스트의 마지막에 추가하고(S140), 자유 블록 리스트에서 선택된 PBN을 제거하게 된다(S150). 이때, 새로 할당되는 PBN을 할당 블록 리스트의 마지막에 추가하는 것은 비휘발성 메모리(120)의 경우 데이터 업데이트시 이전에 쓰여진 데이터를 수정하지 않고 새로 PB을 할당받아 추가하는 방식을 사용하게 된다. 따라서, 새로운 PB가 할당될때마다 할당 블록 리스트의 마지막에 해당 PBN을 추가하는 경우 나중에 쓰여진 데이터가 유효한 데이터로 판단될 수 있기 때문이다. 이는 전술한 정전 복구부(134)에 의해 정전 복구가 수행될 경우 적용될 수 있다.
도 11은 본 발명의 실시예에 따른 블록 회수 방법이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 블록 회수 방법은, 먼저 블록 회수부(132)가 할당 블록 리스트내의 각 PB에 포함된 유효 페이지 수를 산출한다(S210). 다시 말해서, 소정 PB에 포함된 유효 페이지 수가 적을수록 해당 PB에는 유효하지 않은 페이지가 많은 것이므로 PB을 회수하여 새로 할당시 사용하게 된다.
블록 회수부(132)는 산출된 유효 페이지 수에 따라 블록 회수를 수행할 PB의 순서를 결정한다(S220). 본 발명의 실시예에서는 블록 회수부(132)가 유효 페이지 수가 가장 적은 PB부터 블록 회수를 수행하는 경우를 예를 들어 설명하기로 한다. 또한, 본 발명의 실시예에서는 블록 회수부(132)가 소정 PB내에 포함된 유효 페이 지의 수가 소정 개수 이하이거나 빈 PB가 소정 개수 이하인 경우에 블록 회수를 수행하는 경우를 예를 들어 설명하기로 한다.
블록 회수부(132)는 결정된 순서에 따라 유효 페이지 수가 가장 적은 PB의 블록 회수를 위해 자유 블록 리스트에서 가장 앞에 위치한 PBN을 할당 블록 리스트의 마지막에 위치시킨다(S230).
블록 회수부(132)는 할당 블록 리스트의 마지막에 위치된 PB로 블록 회수를 수행하는 PB의 유효 페이지를 이동시키고(S240), 유효 페이지가 이동되어 빈 PB를 자유 블록 리스트에 사용 빈도에 따라 추가한다(S250). 또한, 블록 회수부(132)는 할당 블록 리스트에 새로 추가된 PBN에 VBN을 할당하여 블록 맵핑 테이블을 갱신하게 된다(S260).
블록 회수부(132)는 블록 회수 대상이 되는 PB의 블록 회수가 모두 완료되었는지의 여부를 판단하고(S270), 블록 회수 대상이 되는 PB의 블록 회수가 완료되지 않은 경우에는 블록 회수 대상이 되는 PB의 불록 회수가 모두 완료될때까지 그 다음 순서의 PB에 대한 블록 회수를 수행하기 위해 자유 블록 리스트의 가장 앞에 위치한 PB를 할당 블록 리스트의 마지막에 위치시키고(S280), 할당 블록 리스트의 마지막에 위치된 PB로 블록 회수를 수행하는 PB의 유효 페이지를 이동시킨 다음 유효 페이지가 이동되어 빈 PB를 자유 블록 리스트에 사용 빈도에 따라 추가한 후, 할당 블록 리스트에 새로 추가된 PBN에 VBN을 할당하여 블록 맵핑 테이블을 갱신하는 과정(S240 내지 S260)을 반복적으로 수행하게 된다.
도 12는 본 발명의 실시예에 따른 배드 블록 처리 방법이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 배드 블록 처리 방법은, 먼저 배드 블록 관리부(133)가 할당 블록 리스트내에 배드 블록이 발생한 PB가 존재하는지의 여부를 판단한다(S310).
배드 블록 관리부(133)는 블록 할당부(131)를 통해 자유 블록 리스트에서 새로 PB를 할당받게 된다(S320). 이때, 새로 할당되는 PB는 해당 PB의 사용 빈도를 고려하여 자유 블록 리스트의 가장 앞에 위치하는 PB가 된다. 본 발명의 실시예에서는 자유 블록 리스트이 가장 앞에 위치하는 PB를 할당받는 경우를 예를 들어 설명하고 있으나, 전술한 바와 같이 복구 마크가 기록되는 자유 블록 리스트의 가장 앞에 위치하는 PB가 빈번하게 변경되는 것을 방지하기 위해 가장 앞에 위치한 PB의 바로 뒤에 위치한 PB가 할당될수도 있다.
새로 PB가 할당되면, 배드 블록 관리부(133)는 새로 할당받은 PB로 배드 블록이 발생한 PB의 데이터를 이동시킨다(S330).
데이터 이동이 완료되면, 배드 블록 관리부(133)는 데이터가 이동된 PB를 배드 블록이 발생한 PB의 위치에 삽입한다(340).
또한, 배드 블록 관리부(133)는 배드 블록이 발생한 PBN에 할당된 VBN을 배드 블록이 발생한 PB의 위치로 삽입된 PBN으로 변경하게 된다(S350).
도 13은 본 발명의 실시예에 따른 정전 복구 방법이 도시된 도면이다.
도시된 바와 같이, 본 발명의 실시예에 따른 정전 복구 방법은, 먼저 정전 복구부(134)가 갑작스런 전원 차단이 발생한 경우, 비휘발성 메모리(120)의 스패어 영역에 저장된 할당 블록 리스트 및 자유 블록 리스트를 추출한다(S410).
정전 복구부(134)는 추출된 할당 블록 리스트를 통해 각 PB가 할당된 순서를 복구한다(S420). 이때, 정전 복구부(134)는 동일한 LBA를 가지는 PB의 경우에는 가장 나중에 쓰여진 PB가 유효한 것을 판단하게 된다.
또한, 정전 복구부(143)는 할당 블록 리스트를 통해 블록 맵핑 테이블을 복구하게 된다(S430).
상기 '부'는 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 부는 어떤 역할들을 수행한다. 그렇지만 부는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 부는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 부는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 부들에서 제공되는 기능은 더 작은 수의 구성요소들 및 부들로 결합되거나 추가적인 구성요소들과 부들로 더 분리될 수 있다.
이상과 같이 본 발명에 따른 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작 방법을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
상기한 바와 같은 본 발명의 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
비휘발성 메모리의 영역을 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역으로 구분하여 관리하여 효율적인 관리가 가능하다는 장점이 있다.
또한, 비휘발성 메모리에서의 블록 회수를 통해 각 블록의 사용 빈도를 균등화하기 때문에 비휘발성 메모리의 수명을 증가시키고, 주 저장 매체의 사용 빈도를 줄이기 때문에 주 저장 매체의 동작시 소비되는 전원을 감소시킬 수 있는 장점도 있다.
또한, 갑작스런 전원 차단시에도 할당 블록 리스트를 통해 블록 맵핑 테이블을 복구할 수 있기 때문에 안전하게 데이터를 복구할 수 있는 장점도 있다.

Claims (24)

  1. 삭제
  2. 주 저장 매체;
    상기 주 저장 매체의 캐쉬로 사용되며, 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역을 포함하는 비휘발성 메모리;
    상기 비휘발성 메모리에 물리 블록을 할당하는 블록 할당부;
    상기 할당된 물리 블록을 회수하는 블록 회수부;
    전원 차단시 정전 복구를 위한 정전 복구부;
    상기 물리블록 번호화 상기 물리 블록 번호에 핼당된 가장 블록 번호의 맵핑 관계를 나타내는 블록 맵핑 테이블을 관리하는 블록 맵핑 테이블 관리부; 및
    상기 할당된 물리 블록에 대한 할당 블록 리스트 및 빈 물리 블록에 대한 자유 블록 리스트를 저장하는 리스트 저장부를 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  3. 제 2 항에 있어서,
    상기 블록 할당부는, 상기 자유 블록 리스트에서 가장 앞에 위치한 물리 블록을 상기 고정 영역 및 상기 비고정 영역에 할당하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  4. 제 3 항에 있어서,
    상기 자유 블록 리스트는, 각 물리 블록이 사용 빈도가 적은 순으로 정렬되는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  5. 제 3 항에 있어서,
    상기 블록 할당부는, 상기 할당된 물리 블록을 상기 할당 블록 리스트의 마지막에 위치시키는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  6. 제 5 항에 있어서,
    상기 블록 맵핑 테이블 관리부는, 상기 블록 할당부가 상기 할당 블록 리스트 및 상기 자유 블록 리스트에 포함된 물리 블록 번호가 상기 고정 영역 및 상기 비고정 영역 중 어느 영역인지를 구분하기 위하여 서로 반대 방향으로부터 가상 블록 번호를 할당한 블록 맵핑 테이블을 저장하며,
    상기 할당 블록 리스트의 마지막에 위치한 물리 블록 번호에 가상 블록 번호를 할당하여 상기 블록 맵핑 테이블을 갱신하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  7. 제 2 항에 있어서,
    상기 블록 회수부는, 상기 할당 블록 리스트내의 각 물리 블록에서 유효 페이지 수를 산출하고,
    상기 산출 결과 상기 유효 페이지 수가 가장 적은 물리 블록부터 블록 회수를 수행하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  8. 제 7 항에 있어서,
    상기 블록 회수부는, 상기 자유 블록 리스트의 물리 블록을 상기 할당 블록 리스트의 마지막에 위치시키며, 상기 블록 회수를 수행할 물리 블록내의 유효 페이지를 상기 마지막에 위치된 물리 블록으로 이동시키는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  9. 제 8 항에 있어서,
    상기 블록 회수부는, 상기 유효 페이지가 모두 이동되어 빈 물리 블록을 사용 빈도에 따라 상기 자유 블록 리스트에 추가하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  10. 제 2 항에 있어서,
    상기 배드 블록 관리부는, 상기 할당 블록 리스트내에서 배드 블록이 발생한 물리 블록의 데이터를 상기 자유 블록 리스트에서 새로 할당된 물리 블록에 이동시키고, 상기 배드 블록이 발생한 물리 블록은 할당에서 제외시키는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  11. 제 10 항에 있어서,
    상기 배드 블록 관리부는, 상기 배드 블록이 발생된 물리 블록의 위치에 상기 자유 블록 리스트로부터 새로 할당된 물리 블록을 삽입하고,
    상기 블록 맵핑 테이블 관리부는, 상기 배드 블록이 발생한 물리 블록 번호에 할당된 가상 블록 번호를 상기 삽입된 물리 블록 번호에 할당하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  12. 제 2 항에 있어서,
    상기 정전 복구부는, 전원 차단시 상기 할당 블록 리스트를 추출하여 상기 블록 맵핑 테이블을 복구하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치.
  13. 삭제
  14. 주 저장 매체의 캐쉬로 사용되는 비휘발성 메모리의 영역을 데이터의 고정 여부에 따라 고정 영역 및 비고정 영역으로 구분하는 단계;
    상기 비휘발성 메모리에 물리 블록을 할당하는 단계;
    상기 할당된 물리 블록을 회수하는 단계;
    배드 블록을 관리하는 단계;
    전원 차단시 정전 복구를 수행하는 단계;
    상기 물리 블록 번호와 상기 물리 블록 번호에 할당된 가상 블록 번호의 맵핑 관계를 나타내는 블록 맵핑 테이블을 관리하는 단계; 및
    상기 할당된 물리 블록에 대한 할당 블록 리스트 및 빈 물리 블록에 대한 자유 블록 리스트를 저장하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  15. 제 14 항에 있어서,
    상기 블록을 할당하는 단계는, 상기 자유 블록 리스트에서 가장 앞에 위치한 물리 블록을 상기 고정 영역 및 상기 비고정 영역에 할당하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  16. 제 15 항에 있어서,
    상기 자유 블록 리스트는, 각 물리 블록이 사용 빈도가 적은 순으로 정렬되 는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  17. 제 15 항에 있어서,
    상기 블록을 할당하는 단계는, 상기 할당된 물리 블록을 상기 할당 블록 리스트의 마지막에 위치시키는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  18. 제 17 항에 있어서,
    상기 블록 맵핑 테이블을 관리하는 단계는, 상기 할당 블록 리스트 및 상기 자유 블록 리스트에 포함된 물리 블록 번호가 상기 고정 영역 및 상기 비고정 영역 중 어느 영역인지를 구분하기 위하여 서로 반대 방향으로부터 가상 블록 번호가 할당된 블록 맵핑 테이블을 저장하는 단계; 및
    상기 할당 블록 리스트의 마지막에 위치한 물리 블록 번호에 가상 블록 번호를 할당하여 상기 블록 맵핑 테이블을 갱신하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  19. 제 14 항에 있어서,
    상기 블록을 회수하는 단계는, 상기 할당 블록 리스트내의 각 물리 블록에서 유효 페이지 수를 산출하는 단계; 및
    상기 산출 결과 상기 유효 페이지 수가 가장 적은 물리 블록부터 블록 회수를 수행하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관 리 방법.
  20. 제 19 항에 있어서,
    상기 블록을 회수하는 단계는, 상기 자유 블록 리스트의 물리 블록을 상기 할당 블록 리스트의 마지막에 위치시키며, 상기 블록 회수를 수행할 물리 블록내의 유효 페이지를 상기 마지막에 위치된 물리 블록으로 이동시키는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  21. 제 20 항에 있어서,
    상기 블록을 회수하는 단계는, 상기 유효 페이지가 모두 이동되어 빈 물리 블록을 사용 빈도에 따라 상기 자유 블록 리스트에 추가하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  22. 제 14 항에 있어서,
    상기 배드 블록을 관리하는 단계는, 상기 할당 블록 리스트내에서 배드 블록이 발생한 물리 블록의 데이터를 상기 자유 블록 리스트에서 새로 할당된 물리 블록에 이동시키고, 상기 배드 블록이 발생한 물리 블록은 할당에서 제외시키는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  23. 제 22 항에 있어서,
    상기 배드 블록을 관리하는 단계는, 상기 배드 블록이 발생된 물리 블록의 위치에 상기 자유 블록 리스트로부터 새로 할당된 물리 블록을 삽입하는 단계; 및
    상기 배드 블록이 발생한 물리 블록 번호에 할당된 가상 블록 번호를 상기 삽입된 물리 블록 번호에 할당하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
  24. 제 14 항에 있어서,
    상기 정전 복구를 수행하는 단계는, 전원 차단시 상기 할당 블록 리스트를 추출하여 상기 블록 맵핑 테이블을 복구하는 단계를 포함하는 비휘발성 메모리가 캐쉬로 사용되는 저장 장치의 관리 방법.
KR1020050130795A 2005-12-27 2005-12-27 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법 KR100755700B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020050130795A KR100755700B1 (ko) 2005-12-27 2005-12-27 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US11/601,819 US7774541B2 (en) 2005-12-27 2006-11-20 Storage apparatus using non-volatile memory as cache and method of managing the same
JP2006342259A JP2007179545A (ja) 2005-12-27 2006-12-20 不揮発性メモリをキャッシュとして用いる保存装置及びその管理方法
EP06127067A EP1804168A1 (en) 2005-12-27 2006-12-22 Storage apparatus
CNB2006101682319A CN100524249C (zh) 2005-12-27 2006-12-26 使用非易失性存储器作为高速缓存器的存储设备及其方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050130795A KR100755700B1 (ko) 2005-12-27 2005-12-27 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법

Publications (2)

Publication Number Publication Date
KR20070068796A KR20070068796A (ko) 2007-07-02
KR100755700B1 true KR100755700B1 (ko) 2007-09-05

Family

ID=37890869

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050130795A KR100755700B1 (ko) 2005-12-27 2005-12-27 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법

Country Status (5)

Country Link
US (1) US7774541B2 (ko)
EP (1) EP1804168A1 (ko)
JP (1) JP2007179545A (ko)
KR (1) KR100755700B1 (ko)
CN (1) CN100524249C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935460B2 (en) 2011-07-19 2015-01-13 Samsung Electronics Co., Ltd. Memory apparatus
KR101573375B1 (ko) 2013-10-31 2015-12-03 전자부품연구원 스토리지 서버 환경에서 지역성 기반 ssd 캐시 모듈

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
KR100908637B1 (ko) * 2007-10-10 2009-07-21 한양대학교 산학협력단 플래시 메모리의 데이터 관리방법
JP4961319B2 (ja) * 2007-10-11 2012-06-27 株式会社日立製作所 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US8074145B2 (en) * 2007-11-12 2011-12-06 Harris Corporation Memory system and related method using software-defined radio with write-protected, non-volatile memory
US9063874B2 (en) 2008-11-10 2015-06-23 SanDisk Technologies, Inc. Apparatus, system, and method for wear management
US9612954B2 (en) * 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US9076239B2 (en) * 2009-04-30 2015-07-07 Stmicroelectronics S.R.L. Method and systems for thumbnail generation, and corresponding computer program product
KR100950937B1 (ko) * 2009-06-30 2010-04-08 주식회사 셀픽 솔리드 스테이트 디스크의 캐쉬 메모리 및 이를 이용한 캐쉬 관리시스템
JP4930556B2 (ja) * 2009-07-09 2012-05-16 富士通株式会社 退避処理装置、退避処理方法およびストレージシステム
KR101615659B1 (ko) * 2009-07-16 2016-05-12 삼성전자주식회사 스크래치 패드 메모리 관리 장치 및 방법
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
WO2011031796A2 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, system, and method for caching data on a solid-state storage device
US9003159B2 (en) 2009-10-05 2015-04-07 Marvell World Trade Ltd. Data caching in non-volatile memory
US8301838B2 (en) * 2009-11-04 2012-10-30 Nokia Corporation Method and apparatus for providing an application-level cache with a locked region and a floating region
KR101627322B1 (ko) 2009-11-18 2016-06-03 삼성전자주식회사 비-휘발성 버퍼를 이용한 데이터 저장 장치 및 방법
WO2011081232A1 (ko) * 2009-12-29 2011-07-07 주식회사 프롬나이 Nvram과 휘발성 램을 이용하여 선택적으로 프로세스의 영속성을 구현하는 컴퓨팅 시스템 및 방법
US8417878B2 (en) * 2010-09-20 2013-04-09 Seagate Technology Llc Selection of units for garbage collection in flash memory
JP2012203881A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd ストレージ装置及びストレージ制御装置
CN103186471B (zh) * 2011-12-30 2016-10-12 深圳市共进电子股份有限公司 存储设备中坏块的管理方法及系统
US9251019B2 (en) 2012-05-29 2016-02-02 SanDisk Technologies, Inc. Apparatus, system and method for managing solid-state retirement
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
KR101993704B1 (ko) 2012-08-24 2019-06-27 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
JP5990430B2 (ja) * 2012-08-29 2016-09-14 株式会社バッファローメモリ Ssd(ソリッドステートドライブ)装置
US9032244B2 (en) * 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
KR102002921B1 (ko) * 2012-12-05 2019-07-23 삼성전자주식회사 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
JP5714681B2 (ja) * 2013-10-25 2015-05-07 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US9164856B2 (en) 2013-11-11 2015-10-20 International Business Machines Corporation Persistent messaging mechanism
US9342419B2 (en) 2013-11-11 2016-05-17 Globalfoundries Inc. Persistent messaging mechanism
CN104851457B (zh) * 2014-02-18 2019-01-08 华邦电子股份有限公司 半导体存储装置
US9734081B2 (en) * 2014-12-10 2017-08-15 Advanced Micro Devices, Inc. Thin provisioning architecture for high seek-time devices
WO2016122491A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Page cache in a non-volatile memory
CN105404597B (zh) * 2015-10-21 2018-10-12 华为技术有限公司 数据传输的方法、设备及系统
US10289551B2 (en) * 2017-05-11 2019-05-14 Western Digital Technologies, Inc. Preserving data upon a power shutdown
CN107688442B (zh) * 2017-09-04 2020-11-20 苏州浪潮智能科技有限公司 一种用于固态硬盘的虚拟块管理方法
CN110058964B (zh) * 2018-01-18 2023-05-02 伊姆西Ip控股有限责任公司 数据恢复方法、数据恢复系统和计算机可读介质
KR20200126531A (ko) 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 커맨드 수행 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153261A (ja) 1997-08-07 1999-02-26 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
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
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
KR20050065715A (ko) * 2003-12-23 2005-06-30 삼성전자주식회사 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414826A (en) 1990-01-31 1995-05-09 Hewlett-Packard Company System and method for memory management in microcomputer
JPH0511933A (ja) 1991-07-08 1993-01-22 Kawasaki Steel Corp ハードデイスクエミユレータ及びその固定キヤツシユエリア割付方法
EP0541319B1 (en) 1991-11-04 1997-05-02 Sun Microsystems, Inc. Write through virtual cache memory, alias addressing, and cache flushes
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JP3070453B2 (ja) 1995-09-20 2000-07-31 日本電気株式会社 計算機システムのメモリ障害回復方法および回復システム
JPH09128302A (ja) 1995-11-01 1997-05-16 Fujitsu Ltd 不揮発性メモリへのデータアクセス方法
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
JP3868585B2 (ja) 1996-07-30 2007-01-17 シャープ株式会社 メモリ管理装置及びコンピュータ読み取り可能な記録媒体
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US5832493A (en) * 1997-04-24 1998-11-03 Trimble Navigation Limited Flash file management system
KR100319598B1 (ko) * 1998-03-18 2002-04-06 김영환 플래시메모리어레이액세스방법및장치
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US7356641B2 (en) * 2001-08-28 2008-04-08 International Business Machines Corporation Data management in flash memory
US20030163633A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US6948041B2 (en) * 2002-10-24 2005-09-20 Micron Technology, Inc. Permanent memory block protection in a flash memory device
JP4415356B2 (ja) 2002-12-24 2010-02-17 エルジー エレクトロニクス インコーポレイティド 二重ジャーナリングの保存方法及びその記憶媒体
EP1450261A1 (en) * 2003-02-18 2004-08-25 STMicroelectronics S.r.l. Semiconductor memory with access protection scheme
JP2004280752A (ja) * 2003-03-19 2004-10-07 Sony Corp データ記憶装置、およびデータ記憶装置における管理情報更新方法、並びにコンピュータ・プログラム
US7363420B2 (en) * 2003-12-15 2008-04-22 Nortel Networks Limited Method and file structures for managing data on a flash disk
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4688584B2 (ja) * 2005-06-21 2011-05-25 株式会社日立製作所 ストレージ装置
KR100755702B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JPH1153261A (ja) 1997-08-07 1999-02-26 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
KR20050065715A (ko) * 2003-12-23 2005-06-30 삼성전자주식회사 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935460B2 (en) 2011-07-19 2015-01-13 Samsung Electronics Co., Ltd. Memory apparatus
KR101573375B1 (ko) 2013-10-31 2015-12-03 전자부품연구원 스토리지 서버 환경에서 지역성 기반 ssd 캐시 모듈

Also Published As

Publication number Publication date
US20070150654A1 (en) 2007-06-28
JP2007179545A (ja) 2007-07-12
KR20070068796A (ko) 2007-07-02
CN100524249C (zh) 2009-08-05
EP1804168A1 (en) 2007-07-04
CN1991790A (zh) 2007-07-04
US7774541B2 (en) 2010-08-10

Similar Documents

Publication Publication Date Title
KR100755700B1 (ko) 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
KR100755702B1 (ko) 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
CN110678836B (zh) 用于键值存储的持久性存储器
JP6967986B2 (ja) メモリシステム
KR101384435B1 (ko) 인덱스 캐시 트리
JP5066241B2 (ja) メモリシステム
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
US10067881B2 (en) Compression and caching for logical-to-physical storage address mapping tables
US9213627B2 (en) Non-volatile memory with block erasable locations
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
US8688894B2 (en) Page based management of flash storage
US9026764B2 (en) Memory system performing wear leveling based on deletion request
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US8966205B1 (en) System data management using garbage collection and hybrid self mapping
EP2221830A1 (en) Memory device and wear leveling method thereof
JP4666080B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
KR20080085574A (ko) 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
JP2008152909A (ja) 不揮発性データ保存装置の静的データ領域の検出方法、磨耗度平準化方法及びデータユニットの併合方法とその装置
KR20080104815A (ko) 비휘발성 메모리의 데이터 처리 장치 및 방법
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
JP2012248109A (ja) マルチチャネルを有するメモリ装置及び同装置におけるコンパクションのためのリードコマンド群生成方法
JP2010152778A (ja) 半導体記憶装置
JP2009086738A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2010146515A (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20120802

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130731

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140731

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160801

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180731

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 13