KR101759690B1 - 메모리 액세스 테이블 저장 및 복원 시스템 및 방법 - Google Patents
메모리 액세스 테이블 저장 및 복원 시스템 및 방법 Download PDFInfo
- Publication number
- KR101759690B1 KR101759690B1 KR1020127032837A KR20127032837A KR101759690B1 KR 101759690 B1 KR101759690 B1 KR 101759690B1 KR 1020127032837 A KR1020127032837 A KR 1020127032837A KR 20127032837 A KR20127032837 A KR 20127032837A KR 101759690 B1 KR101759690 B1 KR 101759690B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- metadata
- lut
- segments
- flush
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell
- G11C14/0018—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a DRAM cell whereby the nonvolatile element is an EEPROM element, e.g. a floating gate or metal-nitride-oxide-silicon [MNOS] transistor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/0063—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is an EEPROM element, e.g. a floating gate or MNOS transistor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Library & Information Science (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
시스템은 제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 저장하도록 된 제1 메모리를 포함한다. 제2 메모리는 제2 메타데이터를 갖는 제2 LUT를 저장하도록 되어 있고, 상기 제1 메타데이터는 논리적 어드레스와 물리적 어드레스 사이의 제1 매핑을 포함한다. 제2 메타데이터는 상기 논리적 어드레스와 상기 물리적 어드레스 사이의 제2 매핑을 포함한다. 제어 모듈이 상기 제1 메타데이터를 갱신하도록 되어 있다. 상기 제어 모듈은 각각의 소정 시간들에 상기 제1 메타데이터에 근거하여 상기 제2 메타데이터의 세그먼트들을 갱신하도록 되어 있다. 상기 세그먼트들 각각은 소정 수의 제2 LUT 엔트리들을 나타낸다.
Description
본 발명은 2011년 5월 18일자로 출원된 미국 특허 출원 제13/110,517호 및 2010년 5월 25일자로 출원된 미국 가특허 출원 제61/347,919호의 우선권의 이익을 주장한다. 위의 출원들의 개시는 본 명세서에 그 전체가 참조로 포함된다.
본 발명은 솔리드 스테이트 드라이브(solid-state drive)의 메타데이터를 저장 및 수신하는 것에 관한 것이다.
여기에서 제공되는 배경 기술은 본 발명의 내용을 개괄적으로 제시하기 위한 목적에서 제공되는 것이다. 이 배경 기술 설명란에 기술된 정도의 내용이 본 발명의 발명자들의 발명에 속하는 것이라면 이 기술 내용은 물론, 출원 당시 선행 기술이라고 단서를 달지 않은 발명의 양상들은 명시적으로든 암묵적으로든 본 출원 발명에 대한 선행 기술로서 인정하는 것이 아니다.
데이터 저장 시스템은 다양한 착탈식(removable) 및 비착탈식(non-removable) 저장 디바이스들을 포함할 수 있다. 저장 디바이스들은 하드 디스크 드라이브(HDD), 광학 저장 드라이브, 및 플래시 메모리를 구비한 착탈식 솔리드 스테이트 드라이브(SSD)와 같은, 휘발성 메모리 디바이스들과 비휘발성 메모리 디바이스들 둘 모두를 포함할 수 있다.
저장 디바이스의 플래시 메모리는 메타데이터를 저장할 수 있다. 메타데이터는 호스트로부터의 논리적 어드레스를 플래시 메모리의 물리적 어드레스로 변환하는데 사용되는 논리적-대-물리적 어드레스 엔트리들을 포함할 수 있다. SSD의 제어 모듈은 메타데이터에 따라 결정된 물리적 어드레스에 근거하여 플래시 메모리 내의 위치들에 액세스할 수 있다.
데이터 저장 시스템의 동작 중에, 사용자 데이터가 플래시 메모리로부터 판독되고/판독되거나 플래시 메모리에 기입될 때, 메타데이터가 갱신되어 SSD의 휘발성 메모리에 저장된다. 메타데이터는 데이터 저장 시스템이 전원 차단(power down)될 때 휘발성 메모리로부터 플래시 메모리로 전송된다. 플래시 메모리로 전송된 메타데이터는 데이터 저장 시스템이 다시 전원 인가(power up)될 때 휘발성 메모리에 리로딩(reload)된다. 이는 SSD로 하여금 SSD의 논리적 어드레스와 물리적 어드레스 사이의 갱신된 매핑을 유지할 수 있게 한다.
제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 저장하도록 된 제1 메모리를 포함하는 시스템이 제공된다. 제2 메모리는 제2 메타데이터를 갖는 제2 LUT를 저장하도록 구성되고, 제1 메타데이터는 논리적 어드레스와 물리적 어드레스 사이의 제1 매핑을 포함한다. 제2 메타데이터는 논리적 어드레스와 물리적 어드레스 사이의 제2 매핑을 포함한다. 제어 모듈은 제1 메타데이터를 갱신하도록 구성된다. 제어 모듈은 각각의 소정 시간들(predetermiend times)에 제1 메타데이터에 근거하여 제2 메타데이터의 세그먼트들을 갱신하도록 구성된다. 세그먼트들 각각은 소정 수의 제2 LUT 엔트리들을 나타낸다.
다른 특징으로, 제1 메모리가 휘발성 메모리를 포함한다. 제2 메모리는 비휘발성 메모리를 포함한다. 다른 특징으로, 제2 메모리는 제3 메타데이터를 저장하도록 구성된다. 제3 메타데이터는 제1 메타데이터 또는 제2 메타데이터 중 적어도 하나에 의존한다. 제어 모듈이 각 소정 시간들 각각에 제3 메타데이터를 갱신하도록 구성된다.
다른 특징으로, 제2 메모리가 제3 메타데이터를 저장하도록 구성된다. 제3 메타데이터는 제1 메타데이터 또는 제2 메타데이터 중 적어도 하나에 의존한다. 제어 모듈은 각각의 소정 시간들과는 다른 시간에 제3 메타데이터를 갱신하도록 구성된다.
다른 특징으로, 제어 모듈은 소정의 간격들에서 제3 메타데이터를 갱신하도록 구성된다. 제3 메타데이터는 제1 메타데이터 또는 제2 메타데이터 중 적어도 하나에 의존한다. 제3 메타데이터는 사용자 데이터의 포인터들, 시스템 데이터의 포인터들, 메모리 블록들에 저장된 데이터의 양, 또는 결함 정보 중 적어도 하나를 포함한다. 다른 특징으로, 제3 메타데이터는 제2 LUT의 시간축 정합(time-coherent) 버전에 의존한다.
다른 특징으로, 제어 모듈은 제2 메모리 내의 제1 메타데이터의 다른 부분들을 백업하면서, 제1 메모리 내의 제1 메타데이터의 부분들을 갱신하도록 구성된다. 다른 특징으로, 제어 모듈은 제2 메모리의 제1 LUT의 제2 세그먼트들을 백업하면서, 제2 메모리에 사용자 데이터를 기록하고 제1 메모리 내의 제1 LUT의 제1 세그먼트들을 갱신하도록 구성된다.
다른 특징으로, 전원 ON 이벤트 동안, 제어 모듈은 이벤트 로그의 엔트리들에 근거하여 제1 메모리의 세그먼트들을 갱신하고 그리고 제1 메모리에 제2 메모리의 세그먼트들을 업로드하도록 구성된다. 이벤트 로그의 엔트리들은 시스템의 드라이브의 전력 상실(power loss) 전에 행해진(conducted) 물리적 어드레스들과 논리적 어드레스들 중 선택된 것들 사이의 메타데이터 변화들을 포함한다.
다른 특징으로, 제어 모듈은, 제1 메타데이터의 세그먼트들의 플러시 시간들을 결정하고; 플러시 이벤트들 사이의 플러시 기간을 대기하고; 그리고 제1 메모리로부터 제2 메모리로 제1 메타데이터를 카피함으로써 플러시 시간들의 각 시간들에서 제1 메타데이터의 세그먼트들을 플러시하도록 구성된다.
다른 특징으로, 제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 저장하도록 된 제1 메모리를 포함하는 시스템이 제공된다. 제2 메모리는 제2 메타데이터를 갖는 제2 LUT를 저장하도록 구성된다. 제1 메타데이터는 논리적 어드레스와 물리적 어드레스 사이의 제1 매핑을 포함한다. 제2 메타데이터는 논리적 어드레스와 물리적 어드레스 사이의 제2 매핑을 포함한다. 제어 모듈은, 파워 ON 이벤트 동안, 제2 메모리의 세그먼트들을 제1 메모리로 업로드하고 이벤트 로그의 엔트리들에 근거하여 제1 메모리의 세그먼트들을 갱신하도록 구성된다. 이벤트 로그의 엔트리들은 전원 ON 이벤트 전에 행해진 물리적 어드레스들과 논리적 어드레스들 중 선택된 것들 사이의 메타데이터 갱신을 포함한다.
다른 특징들로, 전원 ON 이벤트 동안에 그리고 LUT 의존 메타데이터가 제2 메모리 내에 저장되지 않을 때, 제어 모듈은 제2 메모리로부터의 세그먼트들의 적어도 하나의 풀 사이클을 제1 메모리에 업로드하도록 구성된다.
다른 특징들로, 전원 ON 이벤트 동안에 그리고 LUT 의존 메타데이터가 제2 메모리 내에 저장될 때, 제어 모듈은 LUT 의존 메타데이터를 제2 메모리로부터 제1 메모리로 업로드하기 전에 세그먼트들의 적어도 하나의 풀 사이클을 제2 메모리로부터 제1 메모리로 업로드하도록 구성된다.
다른 특징들로, 전원 ON 이벤트 동안, 제어 모듈은 시스템에 적절한 전원 차단이 발생했는지 여부를 결정하도록 구성된다. 적절한 전원 차단은, 시스템의 최종 전원 차단 이벤트 전에 제1 LUT가 제2 메모리로 플러시되었을 때 발생한다. 시스템에 적절한 전원 차단이 발생했을 때, 제어 모듈은 제2 메모리로부터 제1 메모리로 제2 메타데이터를 전송하고 그리고 이벤트 로그를 워크하지 않도록(refrain from walking) 구성된다. 시스템의 적절한 전원 차단이 발생하지 않았을 때, 제어 모듈은 제2 메타데이터를 제2 메모리로부터 제1 메모리로 전송하고 이벤트 로드를 워크한다.
다른 특징들로, 제어 모듈은 솔리드-스테이트 드라이브의 파워가 상실된 시간 전에 갱신된 세그먼트들의 적어도 하나의 풀 플러시 사이클을 업로드하도록 구성된다. 세그먼트들의 적어도 하나의 풀 플러시 사이클이 제2 메모리로부터 제1 메모리로 업로드된다. 제1 메타데이터는 세그먼트들의 적어도 하나의 풀 플러시 사이클을 포함한다. 제어 모듈은 또한, 솔리드-스테이트 드라이브의 전력이 상실되었을 때 세그먼트들의 적어도 하나의 풀 플러시 사이클 중 첫번째 것이 이벤트 로그의 시간 슬롯으로 플러시되었을 때부터 제1 메타데이터를 갱신하기 위해 이벤트 로그를 워크하도록 구성된다. 솔리드-스테이트 드라이브의 파워가 상실된 시간 후에 파워 ON 이벤트가 수행된다.
다른 특징들로, 제어 모듈은 세그먼트들을 제2 메모리로부터 제1 메모리로 업로드하도록 구성된다. 제1 메타데이터는 업로드된 세그먼트들을 포함한다. 업로드된 세그먼트들은 솔리드-스테이트 드라이브의 전력이 상실된 때 이벤트 로그의 시간 슬롯 전 그리고 LUT 의존 메타데이터의 플러시 이벤트 전의 세그먼트들의 적어도 풀 플러시 사이클을 포함한다. 제어 모듈은 솔리스-스테이트 드라이브의 전력이 상실된 때 제1 메타데이터를 세그먼트들의 풀 플러시 사이클의 첫번째 것의 시간 슬롯으로부터 이벤트 로그의 시간 슬롯으로 갱신하기 위하여 이벤트 로그를 워크하도록 구성된다. 솔리드-스테이트 드라이브의 전력이 상실된 시간 후에 파워 ON 이벤트가 수행된다.
다른 특징들로, 파워 ON 이벤트 동안, 제어 모듈은, 상기 제2 메모리로부터 상기 제1 메모리로 상기 세그먼트들의 풀 사이클의 제1 세그먼트를 업로드하고; 제1 시간 슬롯으로부터, 상기 이벤트 로그의 엔트리들에 근거하여 상기 제1 메모리 내의 상기 세그먼트들의 풀 사이클을 로딩(loading) 및 갱신하는 것을 포함하는 솔리드-스테이트 드라이브의 전원 차단 사이클과 관련된 시간 슬롯으로, 상기 이벤트 로그를 워크하고; 그리고 상기 제1 시간 슬롯으로부터 상기 세그먼트들의 상기 풀 사이클 중 하나의 시간 슬롯으로 상기 이벤트 로그를 워크하는 동안, 이벤트 로그 엔트리를 스킵하고 상기 스킵된 이벤트 로그 엔트리와 관련된 상기 제1 메모리 내의 엔트리의 갱신을 중단하도록 되어 있다.
삭제
본 발명의 응용의 추가적인 영역은 상세한 설명, 청구항 및 도면으로부터 자명해질 것이다. 상세한 설명 및 구체적인 예들은 단지 설명의 목적으로 의도된 것이며 본 개시의 범주를 제한하여 의도된 것이 아니다.
본 발명은 상세한 설명 및 첨부의 도면으로부터 보다 완전히 이해될 것이다.
도 1은 본 발명에 따른 데이터 저장 시스템의 기능적 블록도이다.
도 2는 본 발명에 따라 할당된 시간 슬롯 구현 당 완전 사이클 플러시를 도시하는 룩업 테이블(LUT) 상태도이다.
도 3은 본 발명에 따른 세그먼트된 플러시 사이클 구현에 근거하여 LUT 상태의 시퀀스를 도시하는 LUT 상태도이다.
도 4는 본 발명에 따른 세그먼트된 플러시 사이클 구현을 위한 시간축 정합 LUT 시간을 도시하는 LUT 상태도이다.
도 5는 본 발명에 따른 세그먼트된 플러시 사이클 구현에 대한 동기화된 비-LUT 의존 및 LUT 의존 메타데이터를 도시하는 LUT 상태도이다.
도 6은 본 발명에 따른 세그먼트된 플러시 사이클 구현을 위한 전용 LUT 의존 메타데이터 플러시 타이밍을 도시하는 LUT 상태도이다.
도 7은 본 발명에 따라 LUT를 갱신 및 백업하는 방법을 도시한다.
도 8은 본 개시에 따라 LUT를 복구하는 방법을 도시한다.
도 1은 본 발명에 따른 데이터 저장 시스템의 기능적 블록도이다.
도 2는 본 발명에 따라 할당된 시간 슬롯 구현 당 완전 사이클 플러시를 도시하는 룩업 테이블(LUT) 상태도이다.
도 3은 본 발명에 따른 세그먼트된 플러시 사이클 구현에 근거하여 LUT 상태의 시퀀스를 도시하는 LUT 상태도이다.
도 4는 본 발명에 따른 세그먼트된 플러시 사이클 구현을 위한 시간축 정합 LUT 시간을 도시하는 LUT 상태도이다.
도 5는 본 발명에 따른 세그먼트된 플러시 사이클 구현에 대한 동기화된 비-LUT 의존 및 LUT 의존 메타데이터를 도시하는 LUT 상태도이다.
도 6은 본 발명에 따른 세그먼트된 플러시 사이클 구현을 위한 전용 LUT 의존 메타데이터 플러시 타이밍을 도시하는 LUT 상태도이다.
도 7은 본 발명에 따라 LUT를 갱신 및 백업하는 방법을 도시한다.
도 8은 본 개시에 따라 LUT를 복구하는 방법을 도시한다.
하기의 설명은 그 특성상 단지 예시적인 것이고 어떠한 식으로든 본 개시, 그 응용 또는 사용을 제한하려 의도된 것이 아니다. 명료성을 위하여, 도면들에서 유사한 요소들을 식별하기 위해 동일한 참조 번호들이 이용될 것이다. 본 명세서에서 사용되는 바와 같이, 표현 "A, B, 및 C 중 적어도 하나"는 비-배타적 논리 OR를 이용한 논리적 (A 또는 B 또는 C)를 의미하는 것으로 해석되어야 한다. 방법에서의 단계들은 본 개시의 원리들을 변경함이 없이 상이한 순서로 실행될 수 있는 것으로 이해되어야 한다.
본 명세서에서 사용되는 것과 같은, 용어 '모듈'은, 주문형 집적 회로(ASIC); 전자 회로; 조합 논리 회로; 필드 프로그램가능 게이트 어레이(FPGA), 코드를 실행하는 프로세서(공유, 전용, 또는 그룹); 기술된 기능을 제공하는 다른 적합한 구성요소들; 또는 시스템-온-칩에서와 같은 상술된 것 전부 또는 일부의 조합을 나타내거나 이들의 부분이거나 또는 이들을 포함할 수 있다. 용어 '모듈'은 프로세서에 의해 실행되는 코드를 저장하는 메모리(공유, 전용, 또는 그룹)를 포함할 수 있다.
용어 '코드'는, 위에서 사용되는 바와 같이, 소프트웨어, 펌웨어, 및/또는 마이크로코드를 포함할 수 있으며, 프로그램, 루틴, 함수, 클래스, 및/또는 오브젝트들을 나타낼 수 있다. 용어 '공유된'은, 위에서 사용되는 바와 같이, 복수의 모듈들로부터의 일부 또는 전체 코드가 단일의 (공유된) 프로세서를 이용하여 실행될 수 있음을 의미한다. 추가적으로, 복수의 모듈들로부터의 일부 또는 전체 코드는 단일의 (공유된) 메모리에 저장될 수 있다. 용어 '그룹'은, 위에서 사용되는 바와 같이, 단일 모듈로부터의 일부 또는 전체 코드가 프로세서들의 그룹을 이용하여 실행될 수 있음을 의미한다. 추가적으로, 단일 모듈로부터의 일부 또는 전체 코드가 메모리들의 그룹을 이용하여 저장될 수 있다.
본 명세서에 기술된 장치 및 방법은 하나 이상의 프로세서들에 의해 실행되는 하나 이상의 컴퓨터 프로그램들에 의해 구현될 수 있다. 컴퓨터 프로그램은 비-일시적(non-transitory)인 유형의(tangible) 컴퓨터 판독가능 매체에 저장되는 프로세서-실행가능 명령들을 포함한다. 컴퓨터 프로그램은 또한 저장된 데이터를 포함할 수 있다. 상기 비-일시적인 유형의 컴퓨터 판독가능 매체의 제한적이지 않은 예는, 비휘발성 메모리, 자기 저장장치, 및 광학 저장장치이다.
솔리드-스테이트 드라이브(SSD)는 데이터의 각각의 논리적 유닛 또는 블록이 메모리 내에 물리적으로 저장되는 곳을 추적(track)하기 위하여 룩업 테이블(LUT)을 이용할 수 있다. LUT는 논리적 어드레스들에 의해 인덱싱되는 물리적 위치들을 갖는 데이터의 어레이 또는 다른 적합한 그룹일 수 있다. LUT는 메모리로부터 판독 및/또는 메모리에 기록할 때 논리적 어드레스를 물리적 어드레스로 변환하는데 사용될 수 있다. 갱신된(새) 데이터를 상기 물리적 위치에 기록하기 전에 메모리의 물리적 위치 내의 오래된(out-dated(old)) 데이터가 무효화(invalidate)될 수 있다. 오래된 데이터가 무효화되고 갱신된 데이터가 상기 오래된 데이터와 동일한 위치에 또는 새로운 물리적 위치에 기록될 때 LUT가 수정된다.
메모리의 각각의 기록 동작 동안, 논리적 어드레스가 물리적 어드레스에 동적으로 매핑될 수 있다. 동적인 매핑은 기록 동작 동안 물리적 어드레스를 논리적 어드레스에 할당하는 것을 나타낸다. 시간 데이터가 메모리에 기록될 때마다, 데이터의 논리적 어드레스와 대응하는 물리적 어드레스가 LUT에 기록된다. 동적 매핑으로 인하여, 데이터의 물리적 위치를 계산하기 위한 결정론적 방법(deterministic method)은 존재하지 않는다. 결과적으로, 이전에 저장된 데이터에 액세스하기 위해, 갱신된, 그리고 정확한 LUT가 필요하다.
SSD의 LUT는 휘발성 메모리 내에 저장되어 SSD에 전원 인가(또는 전원 ON)될 때 비휘발성 메모리로부터 액세스될 수 있다. LUT는 성능 목적(즉, 짧은 액세스 시간)으로 비휘발성 메모리에 저장된다. LUT는 SSD가 전원 차단(또는 전원 OFF)될 때 휘발성 메모리로부터 비휘발성 메모리로 전송될 수 있다. LUT는 SSD가 OFF 상태에 있기 전에 비휘발성 메모리에 저장된다.
SSD의 동작 중에, 휘발성 메모리 내에 저장된 LUT의 갱신된 메타데이터는 전력이 상실될 때 손실될 수 있다. 전력의 상실 전에 LUT의 백업을 갱신 및 유지하는 데이터 저장 시스템이 하기에서 제공된다. 또한, 전력이 상실될 때, 데이터 저장 시스템은 전력 상실이 발생한 시간 전의 상태로 LUT를 복원(restore)한다.
도 1에서, 데이터 저장 시스템(10)은 호스트(12) 및 SSD(14)를 포함한다. 호스트(12)는 컴퓨터, 미디어 플레이어, 모바일 폰, PDA(personal digital assistant), 또는 SSD 인터페이스(15)를 포함하는 다른 디바이스일 수 있다. SSD(14)는 호스트(12)에 연결되거나 호스트(12)로부터 제거될 수 있다. 예를 들어, SSD(14)는 플래시 드라이브일 수 있다. 호스트는 SSD 인터페이스를 통해 SSD(14)의 메모리에 액세스한다.
SSD(14)는, 제어 모듈(17), 판독-전용 메모리(ROM)(18), 휘발성 메모리(20) 및 플래시(또는 비휘발성) 메모리(22)를 갖는 솔리드-스테이트 시스템(16)을 포함한다. 제어 모듈(17)은 SSD(14)의 소프트웨어 및 펌웨어의 명령들을 실행한다. 예를 들어, 제어 모듈(17)은 ROM(18)에 저장된 펌웨어의 명령들을 실행한다. 제어 모듈(17)은 또한 휘발성 메모리(20)에 저장된 명령들을 판독 및 실행할 수 있다. 예를 들어, 휘발성 메모리(20)는 랜덤 액세스 메모리(RAM)를 포함할 수 있다.
데이터 저장 시스템(10)은 또한 입력 디바이스(24), 출력 디바이스(26), 및 하드 디스크 드라이브(HDD)(28)를 포함할 수 있다. 입력 디바이스(24)는 키보드 또는 키패드, 마우스, 터치 스크린, 터치 패드, 마이크로폰, 및/또는 다른 입력 디바이스를 포함할 수 있다. 출력 디바이스(26)는 디스플레이, 스피커, 및/또는 다른 출력 디바이스를 포함할 수 있다.
데이터 저장 시스템(10)은 SSD(14)에 데이터를 저장한다. SSD(14)는 HDD(예컨대, HDD(28))를 에뮬레이션할 수 있다. 예를 들어, HDD(28)에 저장되는 데이터는 SSD(14)(즉, 플래시 메모리(22))에 또한 저장될 수 있다. 데이터는 물리적 할당 주소(PAA)에 대응하는 논리적 할당 주소(LAA)에 따라 플래시 메모리(22)에 저장된다. LAA는 플래시 메모리(22) 내의 메모리 위치를 나타내기 위해 호스트(12)에 의해 사용되는 어드레스이다. PAA는 플래시 메모리(22) 내의 물리적 위치의 어드레스이고 물리적 위치에 액세스하기 위해 제어 모듈(17)에 의해 사용된다.
제어 모듈(17)은 데이터를 판독하고 플래시 메모리(22)에 기록하기 위하여, ROM(18)에 저장된 펌웨어에 따라 명령들을 처리한다. 예를 들어, 호스트(12)가 플래시 메모리(22)의 LAA에 사용자 데이터를 기록할 때, 제어 모듈(17)은 ROM(18)의 펌웨어를 통해 대응하는 PAA를 선택한다. 제어 모듈(17)은 사용자 데이터를 PAA에 의해 식별되는 플래시 메모리(22)의 위치에 저장하고 대응하는 메타데이터를 휘발성 메모리(20) 및/또는 플래시 메모리(22)에 저장한다. 메타데이터는 LAA와 대응하는 PAA 사이의 관계 또는 매핑을 표시한다.
메타데이터는 비-LUT 의존 메타데이터 및 LUT 의존 메타데이터를 포함한다. 비-LUT 의존 메타데이터는 LAA-대-PAA 연관(association)를 갖는 하나 이상의 LUT들을 포함한다. LAA들을 PAA들에 연관시키는 주(primary) LUT(50)가 휘발성 메모리(20)에 저장된다. 주 LUT(50)의 백업 버전(백업 또는 보조(secondary) LUT(52)라 지칭됨)은 플래시 메모리(22)에 저장된다. 주 LUT(50)는 플래시 메모리(22)의 각각의 LAA를 할당된 PAA와 연관시킨다. 특정 LAA가 PAA에 할당되어 있지 않으면, LAA는 인식가능한 무효(recognizable invalid) PAA 값과 연관될 수 있다. SSD(14)의 전원 차단 전에 주 LUT(50)가 휘발성 메모리(20)로부터 플래시 메모리(22)로 플러시된다. 용어 "플러시", "플러시된" 및 "플러싱"은 LUT의 적어도 일부를 휘발성 메모리(20)로부터 플래시 메모리(22)로 다운로드 및 저장(save)하는 것을 지칭한다.
LAA와 PAA 사이의 매핑을 제공하는 메타데이터는 비-LUT 의존 메타데이터라 지칭된다. LUT 의존 메타데이터는 비-LUT 의존 메타데이터에 의존하는 메타데이터를 지칭한다. 각각 도면 부호(56, 58)에 의해 표시된 것과 같이, LUT 의존 메타데이터는 또한 휘발성 메모리(20)와 플래시 메모리(22) 둘 모두에 저장될 수 있다. LUT 의존 메타데이터(56, 58)는, 사용자 데이터 및/또는 시스템 데이터에 대한 포인터들; 데이터 설명(data description); 결함 정보; 얼마나 많은 데이터가 메모리의 블록 내에 있는지(예컨대, 얼마나 많은 데이터가 플래시 메모리(22)의 블록 내에 있는지) 등을 포함할 수 있다. 사용자 데이터는 호스트(12)로부터 제공된 그리고 플래시 메모리(22)에 저장된 데이터를 지칭할 수 있다. 시스템 데이터는 ROM(18)에 저장된 펌웨어를 실행할 때 생성되는 데이터를 지칭할 수 있다. 데이터 설명은, 예를 들어, 데이터가 사용자 데이터인지 또는 시스템 데이터인지에 대한 표시를 포함할 수 있다. 결함 정보는 플래시 메모리(22)의 블록들 내의 결함의 위치를 포함할 수 있다.
액세스 이벤트(판독 이벤트 또는 기록 이벤트) 동안, 호스트(12)는 플래시 메모리(22) 내의 임의의 위치에 액세스하기 위하여 LAA를 제어 모듈(17)에 제공한다. 제어 모듈(17)은 주 LUT(50)에 액세스하여 LAA를 PAA로 변환한다. 예를 들어, 판독 명령이 LAA와 관련된 데이터를 요청할 때, 데이터는 실제로 대응하는 PAA로부터 검색(retrieve)된다. 제어 모듈(17)은 이후 PAA에서 플래시 메모리(22)에 액세스 한다. 제어 모듈(17)은 예컨대, 데이터를 플래시 메모리(22)에 기록할 때 미사용 PAA를 LAA에 할당할 수 있다. LAA-대-PAA 연관을 반영하기 위하여 주 LUT(50)가 갱신된다.
데이터(예를 들어, 사용자 데이터)가 플래시 메모리(22)에 기록됨에 따라 휘발성 메모리(20) 내에 저장된 비-LUT 의존 메타데이터(주 LUT(50))가 갱신된다. 데이터 저장 시스템(10)이 전원 차단되기 전에, 휘발성 메모리(20)에 저장된 메타데이터가 플래시 메모리(22)로 전송(플러시)된다. 플러시되는 메타데이터는 LUT 의존 메타데이터 및 비-LUT 의존 메타데이터를 포함할 수 있다. 메타데이터의 플러시는 주기적으로 및/또는 소정 시간들에, 그리고 데이터 저장 시스템(10) 및/또는 SSD(14)를 전원 차단하기 전에 수행될 수 있다.
백업 LUT(52) 및 이벤트 로그(54)는 전력 상실 후 주 LUT(50)를 업로드 및 복원하는데 사용된다. 이벤트 로그(54)가 플래시 메모리(22)에 저장될 수 있다. 이벤트 로그는 시간에 걸친 LUT에 대한 어드레스 매핑 변화의 기록을 지칭한다. 예를 들어, 주 LUT(50)는 플래시 메모리(22)를 위한 논리적 어드레스 대 물리적 어드레스의 매핑을 포함한다. 플래시 메모리(22)의 셀들 및/또는 블록들이 액세스됨에 따라, 논리적-대-물리적 어드레스 연관이 수정될 수 있다. 이벤트 로그(54)는 시간에 걸친 어드레스 매핑 변화를 추적하기 위해 이용되며 그리고 전력 상실 이벤트(예컨대, 정전)시에 주 LUT(50)의 최종 상태를 복구(recover)하기 위하여 사용될 수 있다. 이벤트 로그(54)의 각각의 엔트리는 특정 시간(또는 시간 슬롯) 동안의 논리적-대-물리적 어드레스 매핑에서의 변화와 관련될 수 있다. 예로서, 이벤트 로그(54)의 엔트리는 논리적 어드레스 및 상기 논리적 어드레스에 할당되는 물리적 어드레스를 포함할 수 있다. 이벤트 로그 엔트리의 예는 도 3 및 4에 도시된다.
메타데이터 플러시의 빈도는 소정의 백업 시간, 이벤트 로그 사이즈, 로드-업 시간, 및/또는 복구(또는 재구축(rebuild)) 시간 요청들에 근거하여 조정될 수 있다. 백업 시간은 휘발성 메모리(20)로부터 플래시 메모리(22)로 메타데이터(비-LUT 의존 메타데이터 및/또는 LUT 의존 메타데이터)를 플러시하기 위한 시간 양을 지칭한다. 메타데이터가 휘발성 메모리(20)로부터 플래시 메모리(22)로 덜 자주 플러시될 수록, 비-LUT 의존 메타데이터를 복구하기 위해 더 긴 이벤트 로그가 필요하다. 주 LUT(50)를 복구하기 위해 더 많은 이벤트 로그 엔트리들이 필요할 수록, 주 LUT(50)의 복구 시간이 더 길어진다.
이벤트 로그(54)의 사이즈는, 예를 들어, 플래시 메모리(22)에 저장된 LAA-대-PAA 매핑 변화 엔트리들의 수 및/또는 LAA-대-PAA 매핑 변화 저장 전용의 하나 이상의 어레이의 길이를 지칭할 수 있다. 플래시 메모리(22)의 일부가 이벤트 로그(54)를 위해 할당될 수 있다. 주 LUT(50)의 복원을 보장하기 위하여 그 부분의 사이즈는 이벤트 로그(54)의 사이즈 또는 이벤트 로그 엔트리들의 소정 수와 동일할 수 있다.
로드-업 시간은 SSD(14)의 전원 인가시 플래시 메모리(22)로부터 휘발성 메모리(20)로 메타데이터(비-LUT 의존 메타데이터 및 LUT 의존 메타데이터)를 전송하는 시간을 지칭할 수 있다. 복구 시간은 로드-업 시간 및 "이벤트 로그를 워크(walk the event log)"하는 시간을 포함할 수 있다. 표현 "이벤트 로그를 워크" 및 "이벤트 로그의 워킹(walking the event log)"은 이벤트 로그(54) 내의 엔트리들에 따라 휘발성 메모리(20) 내의 백업 LUT(52)를 갱신하는 것을 지칭한다. 이는 아래에서 더 자세히 기술된다.
SSD(14)의 전원 인가 과정 동안, 비-의존(non-dependent) 및 의존(dependent) LUT 메타데이터가 플래시 메모리(22)로부터 휘발성 메모리(20)로 전송(업로드)되어 LAA와 PAA 사이의 적절한 갱신된 연관(association)을 확립한다. SSD(14)의 동작 중에, 휘발성 메모리(20)에 저장된 메타데이터의 변화가 이벤트 로그(54)에서 추적된다. 플래시 메모리(22)에 저장된 메타데이터가 휘발성 메모리(20)에 저장된 메타데이터에 대해 동일한 변화를 반영하도록 갱신된다. 플래시 메모리(22) 내의 메타데이터는 소정의 시간들에 그리고 SSD(14)를 전원 OFF하기 전에 세그먼테이션(segmentation)되고 갱신된다. 예를 들어, 플래시 메모리(22)의 메타데이터는 메타데이터 저장 명령(metadata save command)에 응답하여 갱신될 수 있다. 메타데이터 저장 명령은 ROM(18)의 펌웨어에 따라 주기적으로 및/또는 소정의 시간들에 발생될 수 있다.
SSD(14)의 전원 차단 동안, 제어 모듈(17)이 주 LUT(50)를 포함하는 전체 휘발성 메모리(20)를 플래시 메모리(22)로 플러시할 수 있다. SSD(14)의 전원 인가시, 제어 모듈(17)은, 백업 LUT가 최종 변화로 갱신됨을 보장하기 위하여, 백업 LUT(52)를 휘발성 메모리(20)로 업로드하고 백업 LUT(52)의 플러시 이벤트 시간으로부터 이벤트 로그(54)의 최종 엔트리로 이벤트 로그(54)를 워크할 수 있다.
SSD(14)의 동작 중에 예기치않게 전력이 상실될 때, 휘발성 메모리(20)에 저장된 메타데이터에 대해 이루어진 변화들이 상실될 수 있다. 플래시 메모리(22)에 저장된 메타데이터가 SSD(14)가 전원 OFF되기 전에 갱신되지 않으므로, 플래시 메모리(22) 내의 메타데이터는 주 LUT(50)에 대한 최종 변화를 포함하지 않을 수 있다. 이러한 이유로, 플래시 메모리(22) 내의 메타데이터의 적어도 일부는 오래되거나 구식(out-dated)일 수 있다. 전력 상실에 후속한 전원 인가(power up) 중에, 오래된 메터데이터가 플래시 메모리(22)로부터 휘발성 메모리(20)로 전송될 수 있다. 이는 플래시 메모리(22) 내의 사용자 데이터의 부적절한 할당(allocation) 및 검색(retrieval)에 이르게 할 수 있다. 휘발성 메모리(20) 내의 메타데이터를 정정하기 위하여, 제어 모듈(14)이 이벤트 로그(54)를 워크한다. 이벤트 로그(54)를 워크할 때, 제어 모듈은 휘발성 메모리(20)에 저장된 메타데이터를 갱신한다.
SSD(14)는 업로드 타이머(60)를 더 포함할 수 있다. 업로드 타이머(60)는 이벤트 로그(54)를 워크하는데 사용될 수 있다. 업로드 타이머(60)는 이벤트 로그(54)를 워크하는 동안 이벤트 로그(54)의 현재 엔트리를 참조하거나 포인팅할 수 있다. 이는 도 8의 방법과 관련하여 더 설명된다.
이제 도 1 및 2를 참조하면, 룩업 테이블(LUT) 상태도(100)가 할당된 시간 슬롯 마다의 풀 사이클 플러시 구현을 도시한다. "풀 사이클 플러시"는 LUT의 엔트리들 각각을 적어도 한번 플러시하는 것을 지칭한다. LUT 상태도(100)는 시간 슬롯들(1-14)을 포함하는 다양한 시간들에서 주 LUT(50) 및 이벤트 로그(54')의 상태들의 예를 도시한다. 시간은 시간 슬롯 1 부터 시간 슬롯 14로 증가한다. 주 LUT(50)의 상태의 예가 시간 슬롯들(1-14) 각각에 대해 도시된다. 시간 슬롯 10 동안 전력이 상실되지 않는 경우 엔트리들의 예로서 시간 슬롯들(11-14)의 엔트리들이 도시된다. 시간 슬롯 10 동안 전력이 상실되면 시간 슬롯들(11-14)은 존재하지 않을 수 있다.
주 LUT(50)가 임의의 수의 엔트리들을 포함할 수 있지만, 주 LUT(50)는 6개의 엔트리들(104)을 포함하는 것으로서 도시된다. 6개의 엔트리들(104) 각각은 관련된 LAA 및 PAA를 갖는다. LAA들은 번호(1-6)로 표시되고 단일 열 테이블(106)에서 확인된다. PAA들은 시간 슬롯들(1-14) 각각에 대해 주 LUT(50) 내의 엔트리들로서 보여진다. 예를 들어, 시간 슬롯 1에 대해 PAA들은 1, 2, 7, 4, 5, 6로서 보여진다. 유사하게 시간 슬롯(10)에서, PAA들은 10, 14, 15, 16, 5, 13로서 보여진다. PAA가 LAA에 대해 갱신됨에 따라, 주 LUT(50) 내의 대응하는 엔트리는 갱신을 반영하도록 변화된다. 예를 들어, 시간 슬롯 2에서, 제2 LAA에 대한 PAA가 2에서 8로 갱신된다.
주 LUT(50)의 엔트리들은 주기적으로 및/또는 소정 시간들에 플래시 메모리(22)로 플러시될 수 있다. 주 LUT(50)는 각각의 플러시 이벤트 동안에 휘발성 메모리(20)로부터 플래시 메모리(22)로 전부 플러시될 수 있다. 세개의 플러시 이벤트들(A-C)이 도 2에 도시된다.
예로서 전원 인가시, 주 LUT(50)가 PAA들(1-6)로 개시될 수 있다. 시간 슬롯 1에서, LAA 3에 대해 PAA 3이 PAA 7로 대체된다. 다음에, 시간 슬롯 2에서, LAA 2에 대해 PAA 8이 PAA 2로 대체된다. 시간 슬롯들(1-14) 각각에 대해 하나 이상의 엔트리들이 갱신될 수 있다. 제1 플러시(FLUSH A)에서, 주 LUT는 PAA 엔트리들(1, 2, 3, 4, 5, 6)을 가진다. 제2 플러시(FLUSH B)에서, 주 LUT는 PAA 엔트리들(10, 8, 12, 9, 5, 11)을 가진다. 제3 플러시(FLUSH C)에서, 주 LUT는 PAA 엔트리들(18, 14, 15, 17, 5, 13)을 가진다.
예컨대 시간 슬롯(10) 동안 전력이 상실되면(파선(110)으로 지시됨), SSD(14)의 다음 전원 ON시 주 LUT(50)가 복원될 수 있다. 주 LUT의 최종 저장된 버전(last saved version)(10, 8, 12, 9, 5, 11)이 플래시 메모리(22)로부터 휘발성 메모리(20)로 업로드될 수 있다. 제어 모듈(17)은 주 LUT(50)를 재구축하기 위하여 주 LUT(50)가 최종 저장된 때로부터 시간 슬롯(10) 까지 이벤트 로그(54')를 워크할 수 있다. 주 LUT(50)는 이벤트 로그(54') 내의 각 엔트리에 따라 갱신된다. 이벤트 로그(54')를 워크하는 최종 결과는 전력이 상실되었을 때 존재했던 엔트리들(또는 예를 들어, 10, 14, 15, 16, 5, 13)을 갖는 주 LUT이다.
단일 플러시 이벤트 동안 전체 주 LUT를 백업하는 것은 호스트(12)의 동작을 중단시킨다. 호스트(12)에 의한 플래시 메모리(22)에의 기록이 백업 LUT(52)의 갱신 동안에 중단된다. 전체 백업 LUT(52)를 갱신하기 위해 주 LUT(50)가 플러시되고 있는 동안 주 LUT(50)가 수정되는 것을 막기 위하여 호스트(12)가 중단된다. 제어 모듈(17)은 플러시 이벤트 동안 호스트(12)가 중단된 시간의 양을 최소화하기 위하여 세그먼트화된 플러시들을 수행할 수 있다. 세그먼트화된 플러시들의 예는 도 3-8과 관련하여 도시되고 더 설명된다.
이제 도 1 및 3을 참조하면, LUT 상태도(120)는 세그먼트화된 플러시 사이클 구현에 기초한 일련의 LUT 상태들을 도시한다. 세그먼트화된 플러시는 플러시 이벤트 동안에 주 LUT(50)의 일부를 백업 LUT(52)로 플러시하는 것을 지칭한다. 세그먼트는 주 LUT(50)의 하나 이상의 엔트리들을 포함할 수 있다. 주 LUT(50)는 임의의 개수의 세그먼트들로 분할될 수 있고 세그먼트들 각각을 갱신하는 빈도 및 순서가 조정될 수 있다.
LUT 상태도(120)는 시간 슬롯들(1-14)을 포함하는 다양한 시간들에 주 LUT(50)의 상태를 도시한다. 주 LUT(50)는 6개의 엔트리들(104)을 포함하는 것으로 도시된다. 6개 엔트리들 각각은 관련된 LAA 및 PAA를 가진다. LAA들은 숫자 1-6으로 표시되고 단일 열 테이블(106)에서 확인된다. PAA들은 시간 슬롯들(1-14) 각각에 대해 주 LUT(50)에 도시된다.
도 3의 LUT 상태도(120)는, LUT 상태도(120)가 분할된 플러시 이벤트들을 포함하는 것을 제외하고는 도 2의 상태도(100)와 유사하다. 각각의 분할된 플러시 이벤트는, 도시된 바와 같이, 주 LUT(50)의 1/3을 플래시 메모리(22)로 플러시하는 것을 포함한다. 4개의 플러시 이벤트들을 완료한 후의 도 3의 주 LUT(50)는 2개의 플러시 이벤트들을 완료한 후의 도 2의 주 LUT(50)와 동일하다. (즉, 도 2의 FLUSH B에서와 도 3의 FLUSH D에서의 주 LUT 엔트리들은 10, 8, 12, 9, 5, 11이다.)
세그먼트화된 플러시 이벤트들(FLUSH A-G)이 각각의 시간 슬롯들 사이에 보여진다. 도시된 구현예에서, 플러시 이벤트는 두 개의 시간 슬롯들의 각 세트에 대해 수행된다(또는 2개의 시간 슬롯들 마다 1번의 플러시 이벤트)를 수행한다. 각각의 플러시 이벤트 동안에 6개의 주 LUT 엔트리들 중 두 개가 플러시된다. 예를 들어, 플러시 이벤트(FLUSH A)에서, LAA 1, 2 및 PAA 1, 2를 갖는 세그먼트가 플러시된다. 이는 플래시 메모리 내의 플러시된 세그먼트의 갱신된 백업을 제공한다.
주 LUT(50)의 세그먼트화된 플러시는 플러시 이벤트들 동안 순간적인 호스트 성능(instantaneous host performance)의 감소를 최소화한다. 풀 사이클 플러시를 몇개의 더 작은 사이즈의 또는 세그먼트화된 플러시 이벤트들로 분해함으로써, 각각의 플러시 이벤트 동안에 호스트가 중단되는 시간의 양이 감소 또는 제거된다. 또한, 호스트 성능의 저하를 최소화하면서, 더 작은 플러시 세그먼트들을 갖는 평균 호스트 처리량(throughput)이 유지될 수 있다. 도 3의 구현을 사용하여 각각의 세그먼트가 플러시되는 빈도는 도 2의 구현을 이용하여 풀 사이클에서의 빈도 또는 전체 LUT가 플러시되는 빈도보다 클 수 있다.
플러시되고 있는 세그먼트와 관련되지 않은 논리적 및 물리적 어드레스들에 대한 호스트 기록 요청이 플러시 이벤트 동안에 수행될 수 있다. 예를 들어, 메타데이터가 백업 LUT의 다른 부분들의 LAA들 및/또는 PAA들에 기록되고 사용자 데이터가 플래시 메모리(22)에 기록되는 동안에, 백업 LUT(52)의 부분들이 갱신될 수 있다. 다른 말로하면, 데이터는, 플러시 이벤트에 의해 갱신되고 있는 대응하는 백업 LUT 엔트리들을 갖지 않는 플래시 메모리(22)의 LAA들 및/또는 대응하는 PAA들에 기록될 수 있다. 예를 들어, 플래시 메모리(22)의 LAA들 및 PAA들(3-6)이 플러시 이벤트(FLUSH A) 동안에 기록될 수 있다.
플러시되고 있는 세그먼트들과 관련된 논리적 및 물리적 어드레스들에 대한 호스트 기록 요청은 세그먼트가 플러시되는 동안에 중단될 수 있다. 호스트(12)는, 플러시 이벤트들 동안에 백업되고 있는 플래시 메모리(22)의 LAA들 및/또는 PAA들에 기록하는 것이 금지된다. 이는 LAA들 및 PAA들을 위한 매핑 연관이 백업 LUT(52) 내에 백업되는 동안 플래시 메모리(22)의 특정 LAA들 및/또는 PAA들로의 기록을 방지해준다.
예컨대 시간 슬롯(10) 동안 전력이 상실되면(파선(110)으로 지시됨), 주 LUT(50)가 재구축된다. 주 LUT(50)는 다음 파워 ON 이벤트 동안 백업 LUT(52) 및 이벤트 로그(54')에 기초하여 재구축된다. 제어 모듈(17)이, 이벤트 로그(54')를 워크 함이 없이, 저장된 세그먼트들을 플래시 메모리(22)로부터 휘발성 메모리(20)로 업로드했다면, 결과적인 LUT는 서로 다른 시간들에서의 엔트리들(예컨대, FLUSHES C, D, E에 대해 엔트리 10, 8, 12, 9, 5, 6)의 조합일 것이다. 결과적인 LUT는 임의의 시간 슬롯에 대한 정확한 표현이 아닐 것이다(즉, 결과적인 LUT는 시간축 정합이 아니다).
시간축 정합이 아닌 LUT는 LUT 의존 메타데이터의 재구축 프로세스 동안 사용되지 못헐 수 있다. 이 문제를 해결하기 위하여, 주 LUT(50)의 갱신된 엔트리들의 이력 및/또는 플러시된 세그먼트들의 이력이 이벤트 로그(54')를 통해 유지된다. 제어 모듈은 주 LUT(50)를 시간축 정합 상태로 재구축하기 위하여 복원 알고리즘에 근거한 이벤트 로그(54')를 사용한다. 주 LUT(50)는 LUT 의존 메타데이터를 재구축하기 위해 주 LUT(50)를 이용하기 전에 시간축 정합 상태로 갱신된다. 복원 알고리즘이 플래시 메모리(22)에 저장될 수 있고 전원 ON 이벤트 동안 휘발성 메모리(20)에 업로드될 수 있고/있거나 ROM(18)에 저장될 수 있다. 복원 알고리즘은 제어 모듈(17)에 의해 실행된다.
주 LUT(50)의 재구축 동안, 주 LUT(50)를 제공하기 위하여 백업 LUT(52)가 휘발성 메모리(20)로 업로드된다. 백업 LUT(52)의 세그먼트들이 서로 다른 시간 슬롯들에 플러시되므로, 세그먼트들은 서로 다른 시간들에서의 LUT의 서로 다른 부분들의 상태들을 나타낸다. 결과적으로, 초기에 업로드될 때 주 LUT(50)는 시간축 정합 상태에 있지 않다. 주 LUT(50)의 상태를 시간축 정합 상태로 변경하기 위하여, 주 LUT(50)의 엔트리들을 갱신하기 위해 제어 모듈(17)이 이벤트 로그(54')를 워크한다. 이벤트 로그(54')는 플래시 메모리(22)에 저장될 수 있고, 그리고 LAA-대-PAA 연관 변화들을 상기 변화들이 이전에 발생했던 순서로 포함한다. 주 LUT(50)의 엔트리들은 이벤트 로그(54')에 따라, 그리고 따라서 전력 상실 전에 엔트리들이 이전에 갱신되었던 순서로 변화된다. 이벤트 로그(54')의 각각의 엔트리는 특정 LAA에 대해 새로운 PAA를 포함한다. 새로운 PAA는 대응하는 시간 슬롯에 대한 주 LUT의 각각의 갱신된 상태에 도시된다.
도 2 및 3은 주 LUT 엔트리들(또는 비-LUT 의존 메타데이터)의 플러시를 보여준다. 비-LUT 의존 메타데이터에 부가하여, SSD(14)의 동작 동안 LUT 의존 메타데이터(또는 시변(time-varying) 메타데이터)가 또한 플러시될 수 있다. LUT 의존 메타데이터 플러시 이벤트들의 예는 도 5 및 6에 도시된다. LUT 의존 메타데이터는 또한 전력 상실에 후속하여 복원될 수 있고 이벤트 로그(54')의 워크를 포함한다.
휘발성 메모리(20) 내에 시간축 정합 LUT를 확립하는 것에 후속하여 LUT 의존 메타데이터를 복구하기 위해 이벤트 로그(54')가 워크될 수 있다. 이벤트 로그(54')의 워크를 시작하고 적어도 세그먼트들의 풀 사이클을 업로드하기 위한 시작 시간을 결정함으로써 시간축 정합 LUT가 확립된다. 제어 모듈(17)은 LUT 의존 메타데이터를 업로드하기 전에 휘발성 메모리(20) 내에 시간축 정합 LUT를 제공하기 위하여 이벤트 로그를 시작 시간으로부터 워크한다. 시간축 정합 LUT는 적어도 풀 사이클의 세그먼트들에서 이벤트 로그(54')가 워크되었을 때의 시간에 제공된다. 예로서, 시작 시간이 FLUSH C와 연관될 수 있다. 주 LUT(50)는, 이벤트 로그를 FLUSH E와 관련된 시간에 워크한 후 시간축 정합 상태에 있을 수 있다.
이벤트 로그(54')를 워크하는 동안, 제어 모듈(17)은 이벤트 로그(54') 내의 엔트리들에 근거하여 그리고/또는 백업 LUT(52)의 세그먼트들에 근거하여 주 LUT(50) 내의 엔트리들을 갱신한다. 주 LUT(50) 내의 엔트리들은 이벤트 로그(54')에서 엔트리들이 전에 갱신되었던 순서로 갱신된다. 일단 시간축 정합 LUT가 확립되면, LUT 의존 메타데이터는 시간축 정합 LUT가 확립된 때의 시간에 후속하여 이벤트 로그 내의 각 엔트리에 근거하여 갱신될 수 있다. 예를 들어, FLUSH E의 시간에 시간축 정합 LUT가 확립되었음을 가정하면, 제어 모듈(17)은, 주 LUT 엔트리들 및 LUT 의존 메타데이터를 수정하기 위하여 FLUSH E에 후속하여 이벤트 로그(54')의 워크를 계속 할 수 있다.
이제 도 1 및 4를 참조하면, LUT 상태도(150)는 세그먼트화된 플러시 사이클 구현에 대한 시간축 정합 LUT 시간을 예시한다. LUT 상태도(150)는 시간 슬롯들(1-14)을 포함하는 다양한 시간들에 주 LUT(50)의 상태를 예시한다. 주 LUT(50)가 임의의 수의 엔트리들을 포함할 수 있지만, 주 LUT(50)는 6개의 엔트리들(104)을 포함하는 것으로서 도시된다. 6개의 엔트리들(104) 각각은 관련된 LAA와 PAA를 가진다. LAA들은 번호 1-6으로 표시되고 단일 열 테이블(106)에서 확인된다.
세그먼트화된 LUT 플러시들과 협력하여 비-LUT 의존 메타데이터를 플러시하는 몇가지 방법들이 존재한다. 방법들 각각이 주 LUT(50)의 재구축 과정에 서로 다르게 영향을 줄 수 있다. 도 4는 6개의 엔트리들을 갖는 주 LUT에 대해 LUT 의존 메타데이터 복원을 위한 시간축 정합 LUT를 제공하기 위한 저장된 이벤트 로그 엔트리들 및 LUT 세그먼트들의 최대 수를 예시한다.
LUT 의존 메타데이터가 플러시 이벤트들의 두 번의 풀 사이클마다 한번씩 복원된다고 가정하면, 이벤트 로그 엔트리들의 적어도 5 개의 세그먼트화된 플러시 이벤트들(또는 풀 사이클의 세그먼트들의 수의 두 배에서 1을 제한 개수의 세그먼트화된 플러시 이벤트들)이 저장(save)된다. 달리 말하면, FLUSH A-E의 세그먼트들은 FLUSH A와 FLUSH E 사이의 시간 슬롯들 동안에 주 LUT 변화를 포함하여 플래시 메모리(22)에 저장된다. FLUSH A-E에 후속한, 그리고 전력이 상실되었을 때의 시간 슬롯(즉, 시간 슬롯 10) 전의, 주 LUT 변화들이 또한 플래시 메모리(22)에 저장된다. 5개의 세그먼트화된 엔트리들의 저장은 3개의 세그먼트들을 갖는 LUT 테이블에 대한 "최악의 경우"의 예로 고려될 수 있다. 세그먼트화된 엔트리들의 수는 LUT 의존 메타데이터가 최종 플러시될 때에 기초하여 5보다 작을 수 있다.
제어 모듈(17)은 이벤트 로그(54')의 워크를 시작하기 위한 시작점으로서 FLUSH A를 다시 참조하기 위하여 재구축 알고리즘 및/또는 재구축 펌웨어를 사용할 수 있다. 제어 모듈(17)은, 주 LUT(50) 내의 엔트리들을 수정하기 위하여, 플래시 메모리(22)로부터 휘발성 메모리(20)로 FLUSH A를 위한 세그먼트를 업로드하고 이어서 시간 슬롯 1에서 시작하여 이벤트 로그(54')를 워크할 수 있다. FLUSH A의 시간은, 이벤트 로그의 종료시 또는 전력이 상실된 때의 시간으로부터의 두 번의 풀 플러시 사이클들보다 1 세그먼트 적다. 플러시 알고리즘은 SSD(14)의 동작 중에 플래시 메모리(22) 내에 두 번의 풀 사이클들 보다 적어도 일 세그먼트 덜 저장할 수 있다. 플래시 알고리즘은 플래시 메모리(22) 내에 저장될 수 있고 파워 ON 이벤트 동안에 휘발성 메모리(20)에 업로드될 수 있고 그리고/또는 ROM(18)에 저장될 수 있다.
FLUSH A를 위한 세그먼트의 업로딩에 후속하여, 제어 모듈(17)은, 이벤트 로그(54')의 워크 처리를 행해, 시간 슬롯들(1, 2)에, LAA(2, 3) 대 PAA(8, 7)의 어드레스 변화 연관과 같은 다음 변화들을 로드업한다. 시간 슬롯들(4, 3)에서 LAA(1, 4) 대 PAA(10, 9)의 어드레스 변화 연관에 대해 이벤트 로그(54')를 워크한 후 FLUSH B를 위한 세그먼트가 이후 업로드된다. 이벤트 로그(54')에 근거하여 세그먼트들이 업로드되고 주 LUT(50)에 대한 변경이 수행됨에 따라, 주 LUT(50)(또는 RAM) 내의 엔트리들이 재기록(overwrite)된다. 풀 사이클을 완료하기 위하여, FLUSH C에 대한 주 LUT(50)의 세그먼트가 재기록된다. (파선(152)으로 표시된) 이 시점에서, 주 LUT(50)는 시간축 정합이고 10, 8, 7, 9, 5, 6의 엔트리 값을 갖는다.
LUT 의존 메타데이터는 시간축 정합 LUT에 근거하여 복원될 수 있다. LUT 의존 메타데이터는 FLUCH C의 시간 또는 FLUCH C에 인접 및 후속하는 시간 슬롯에서 에 시작하는 이벤트 로그 엔트리들에 근거하여 추가로 갱신될 수 있다. LUT 의존 메타데이터는, 예를 들어 시간 슬롯 5로부터 시간 슬롯 10으로 이벤트 로그(54')를 워크함으로써 갱신될 수 있다.
주 LUT(50)를 갱신하기 위하여 이벤트 로그(54')의 나머지를 워크하는 동안 플러시 D 및 E의 세그먼트들이 업로드되지 않을 수 있다. FLUSH D와 E에 관련된 어드레스들이 FLUSH D와 E 전의 시간 슬롯들에 관련된 이벤트 로그(54')로부터 획득됨(예를 들어, 시간 슬롯들(2, 3, 4, 6)은 FLUSH D 및 E에 반영된 변화를 제공함)에 따라, FLUSH D 및 E의 세그먼트들이 업로드되지 않을 수 있다. 이러한 이유로, FLUSH D 및 E를 업로드하는 작업은 이벤트 로그(54')의 워크에서 중복되는 경우가 있다.
LUT 의존 메타데이터가 존재하지 않는다면, 파워 ON 이벤트 동안 세그먼트들의 단 하나의 풀 플러시 사이클(full flush cycle)이 저장되고 업로드될 수 있다. 예를 들어, 시간 슬롯(10)에서 전력이 상실될 때 파워 ON 동안에 FLUSH C, D, E가 이미 저장 및 업로드되었을 수 있다. 이는 주 LUT를 재구축하기 위한 플러시 세그먼트들의 풀 사이클을 제공한다. LUT 의존 메타데이터가 존재하지 않을 때 FLUSH 세그먼트 C 전의 플러시 세그먼트들(FLUSHES A, B)은 필요하지 않다.
이제 도 1 내지 5를 참조로, LUT 상태도(160)가 세그먼트화된 플러시 사이클 구현에 대해 동기화된 비-LUT 의존 및 LUT 의존 메타데이터 플러시 타이밍을 예시한다. LUT 상태도(160)는 시간 슬롯들(1-14)을 포함하는 다양한 시간들에서 주 LUT(50)의 상태를 예시한다. 주 LUT(50)는 6개의 엔트리들(104)을 포함하는 것으로 도시된다. 6개의 엔트리들(104) 각각은 관련된 LAA 및 PAA를 가진다. LAA들은 번호 1-6으로 표시되고 단일 열 테이블(106)에서 확인된다.
LUT 의존 메타데이터(박스(162)로 표시됨)는 각각의 세그먼트된 플러시 이벤트 동안에 플러시된다. 각각의 플러시 이벤트 동안 LUT 의존 메타데이터를 플러시함으로써, 제어 모듈(17)은 주 LUT(50)의 복구 동안 세그먼트들의 단 하나의 풀 플러시 사이클을 다시 참조하여 시간축 정합 LUT를 제공할 수 있다. LUT 의존 메타데이터는, 예컨대, FLUSH E의 세그먼트의 시간에 사용가능하므로, 시간축 정합 LUT가 확립될 수 있다. 시간축 정합 LUT는 FLUSH C를 통해 FLUSH E의 세그먼트들을 로딩하고 그리고 FLUSH C로부터 이벤트 로그(54')의 끝으로(또는 전력 상실과 관련된 이벤트 로그 엔트리로) 이벤트 로그(54')를 워크함으로써 확립될 수 있다.
이제 도 1 및 6을 참조하면, LUT 상태도(170)가, 세그먼트된 플러시 사이클 구현을 위한 전용의 의존 메타데이터 플러시 타이밍을 예시한다. LUT 상태도(170)는 시간 슬롯들(1-14)을 포함하는 다양한 시간에 주 LUT(50)의 상태를 도시한다. 주 LUT(50)는 6개의 엔트리들(104)을 포함하는 것으로 도시된다. 6개의 엔트리들 각각은 관련된 LAA와 PAA를 가진다. LAA들은 번호 1-6으로 표시되며 단일 열 테이블(106)에서 확인된다.
도 6의 구현은 박스(172)로 표시된 전용 시간에 LUT 의존 메타데이터를 플러시하는 것을 포함한다. 주 LUT(50)(또는 비-LUT 의존 메타데이터)의 특정 LAA-대-PAA 어드레스 연관(예를 들어, 행 3-6에서와 시간 슬롯 6에서의 연관)이 플러시되지 않을 때 및 주 LUT(50)의 다른 LAA-대-PAA 어드레스 연관(예를 들어, 행 1 및 2와 시간 슬롯 6에서의 연관)이 플러시될 때, LUT 의존 메타데이터가 플러시될 수 있다. 대안으로서, 비-LUT 의존 메타데이터 및 LUT 의존 메타데이터는 각각의 플러시 시간을 가질 수 있다. 예로서, 비-LUT 의존 메타데이터가 LUT 의존 메타데이터의 플러시 전 또는 후에 플러시될 수 있다. 비-LUT 의존 메타데이터 및 LUT 의존 메타데이터를 위한 전용 플러시 시간을 제공하는 것은 각각의 플러시를 수행하기 위한 시간의 양을 감소시킨다.
도시된 구현예에서, 재구축 알고리즘을 사용하는 제어 모듈(17)은, FLUSH D에 의해 시간축 정합 LUT를 확립하기 위하여 FLUSH A의 세그먼트로부터 주 LUT(50)를 재구축하기 시작한다. 이는 FLUSH D의 시간에 시작하는 LUT 의존 메타데이터를 재구축한 시간축 정합 LUT를 제공한다. FLUSH D는 전력 상실(또는 전력 사이클)시부터, LUT 의존 메타데이터의 가장 최근의 플러시를 나타낸다.
또 다른 대안적인 구현예에서, LUT 의존 메타데이터가 플래시 메모리(22) 내에 존재할 , FLUSH A-C의 세그먼트들이 동일한 시간 기간 동안에 및/또는 동시에 업로드될 수 있다. 이벤트 로그(54')는 FLUSH A의 시간에 시작하여 그리고 FLUSH A-C의 세그먼트들의 업로드에 후에 워크될 수 있다. 처음에 FLUSH A-C의 세그먼트들이 업로드될 때 주 LUT가 부정확하지만, 이벤트 로그(54')의 워킹 동작은 FLUSH C의 시간에 시작하는 시간축 정합 LUT를 제공하고 그리고 주 LUT(50)의 엔트리들을 정정하여 시간 슬롯(10)에서 복원된 LUT를 제공한다. 위에서 기술된 바와 같이, 이벤트 로그(54')는 특정 시간 동안의 논리적-대-물리적 어드레스 매핑의 변화를 포함한다. 이벤트 로그의 워킹은 주 LUT(50) 내의 엔트리들을 이벤트 로그(54') 내의 엔트리들로 갱신 (또는 대체)하는 것을 포함한다. LUT 의존 메타데이터의 값들은 주 LUT(50) 내의 갱신된 엔트리들에 근거하여 갱신될 수 있다. 갱신된 값들은, 사용자 데이터 및/또는 시스템 데이터에 대한 포인터들; 데이터 설명자(data descriptor)들; 결함 정보; 얼마나 많은 데이터가 메모리 블록 등에 있는지를 포함할 수 있다.
시간 및 자원을 절약하기 위한 또 다른 구현으로서, 주 LUT(50)를 재구축할 때 이벤트 로그의 엔트리들이 스킵될 수 있다. 예를 들어, 도 6에서, FLUSH A의 세그먼트를 업로드한 후, 시간 슬롯 1에서의 변화가 스킵될 수 있다. LAA 3에 대한 3에서 7로의 PAA 변화가 FLUSH B에 대한 세그먼트를 업로드함으로써 재기록되므로, 시간 슬롯 1과 관련된 변화가 스킵될 수 있다. 또 다른 예로서, 아웃라인 영역(180)의 세그먼트들은 FLUSH B 및 FLUSH C에 의해 처리(account for)되므로, 이 세그먼트들이 스킵될 수 있다.
전력 상실 전에 그리고 LUT 의존 메타데이터가 최종 플러시된 때의 시간 후에 갱신되었던 이벤트 로그 엔트리들이 스킵되지 않을 수 있다. 예를 들어, LUT 의존 메타데이터가 시간 슬롯들(7-10) 각각 동안에 주 LUT(50)에 대한 변화에 근거하여 갱신될 수 있으므로, 시간 슬롯(7-10) 동안 갱신된 이벤트 로그 엔트리들이 스킵되지 않을 수 있다. 이 이벤트 로그 엔트리들 중 하나가 스킵될 것이었다면, 결과적인 LUT 의존 메타데이터는 모든 변화를 반영하지 않을 수 있고 결과적으로 부정확할 수 있다.
도 1의 데이터 저장 시스템(10)은 다양한 방법들을 이용하여 동작될 수 있으며, 예시적인 방법들이 도 7 및 8의 방법에 의해 제공된다. 도 7에서, LUT를 갱신하고 백업하는 방법이 도시된다. 하기의 작업들은 주로 도 1 및 5-6의 구현예에 관해 기술되나, 이 작업들은 본 개시의 다른 구현예에 적용하기 위하여 쉽게 수정될 수 있다. 작업들은 반복적으로 수행될 수 있다. 방법은 단계(200)에서 시작한다.
단계(204)에서, 제어 모듈(17)은 LUT 플러시 시간을 결정한다. LUT 플러시 시간은 주 LUT(50)의 세그먼트를 백업 LUT(52)로 플러시하기 위한 다음 시간일 수 있다. 제어 모듈(17)은 주기적인 플러시 구간 또는 플러시 기간에 근거하여 플러시 시간을 결정할 수 있다. 플러시 기간은 세그먼트된 플러시 이벤트들 사이의 시간을 지칭한다. 플러시 시간 및/또는 플러시 기간은 풀 플러시 사이클 내의 LUT 세그먼트들의 수, 기동 복원 시간, 최대 호스트 대기 시간(latency time) 등에 근거하여 결정될 수 있다.
시동 복구 시간은 전력 상실 후 그리고 전원 인가 이벤트 동안에 주 LUT(50)를 복구하기 위한 시간을 지칭한다. 플러시 기간이 더 길수록, 주 LUT(50)를 복구하기 위해 이벤트 로그(54)에 저장(save)되는 엔트리가 더 많아진다. 주 LUT(50)를 복구하기 위해 처리되는 이벤트 로그(54)의 엔트리들이 더 많을수록, 기동 복원 시간이 더 길어진다. 또한, 플러시 기간이 더 길수록, 플러시가 덜 자주 수행된다. 플러시가 덜 자주 수행될수록, 주 LUT(50)를 복구하기 위해 처리되는 단일 플러시 이벤트 동안 플러시되는 주 LUT(50)의 엔트리들이 더 많아지고/많아지거나 주 LUT(50)를 복구하기 위해 처리되는 이벤트 로그(54)의 엔트리들이 더 많아진다. 단일 플러시 이벤트 동안 플러시되는 주 LUT(50)의 엔트리들이 더 많을수록, 플러시 이벤트 동안에 겪게될 수 있는 호스트 대기 시간(또는 호스트가 중단되는 시간)이 더 길어진다.
단계(204)에서, LUT 의존 메타데이터의 플러시 시간 및/또는 플러시 기간이 또한 결정될 수 있다. LUT 의존 메타데이터의 플러시 시간 및/또는 플러시 기간은 비-LUT 의존 메타데이터의 플러시 시간 및/또는 플러시 기간에 근거하여 결정될 수 있다. 예를 들어, LUT 의존 메타데이터의 플러시 시간이 비-LUT 의존 메타데이터의 플러시 시간과 동일하거나 다르게 설정될 수 있다.
단계(206)에서, 제어 모듈(17)은 태스크(208)로 진행하기 전에 비-LUT 의존 메타데이터의 플러시 기간 및/또는 LUT 의존 메타데이터의 플러시 기간을 대기할 수 있다. 단계(208)에서, 제어 모듈(17)은 플러시할 하나 이상의 LUT 세그먼트(들) 및/또는 LUT 의존 메타데이터를 플러시할지 여부를 결정할 수 있다. 제어 모듈(17)은 주 LUT(50)의 세그먼트들을 소정의 순서로 순환(cycle through)할 수 있고 이전에 플러시된 세그먼트들에 근거하여 다음 플러시 세그먼트를 결정할 수 있다.
단계(210)에서, 제어 모듈(17)은 선택된 세그먼트들 및/또는 LUT 의존 메타데이터를 플러시한다. 도 5에 도시된 바와 같이, LUT 의존 메타데이터는 비-LUT 의존 메타데이터가 플러시될 때 플러시될 수 있다. 단계(212)에서, 그리고 도 6의 실시예에 근거하여, 제어 모듈(17)은 주 LUT(50)의 세그먼트들 전부가 플러시되었는지 여부를 결정한다. 세그먼트들 전부가 플러시되었을 때 태스크(214)가 수행되고, 그렇지 않다면, 태스크(220)가 수행된다.
태스크(214)에서, 제어 모듈(17)은 플러시될 LUT 의존 메타데이터가 존재하는지 여부를 결정한다. 플러시될 LUT 의존 메타데이터가 있을 때 태스크(216)가 수행되고, 그렇지 않다면, 태스크(220)가 수행된다. 단계(216)에서, 제어 모듈(17)은 태스크(218)를 수행하기 전에 LUT 의존 메타데이터의 플러시 기간을 대기할 수 있다. 태스크(218)에서, LUT 의존 메타데이터가 플러시된다.
단계(220)에서, 제어 모듈(17)은 전원 차단 요청이 있는지 여부를 결정한다. 전원 차단 요청이 수신될 때 태스크(222)가 수행되며, 그렇지 않다면 제어 모듈(17)은 태스크(204)로 복귀될 수 있다. 단계(222)에서, 전원 차단 이벤트 전에 백업 LUT(52)를 갱신하기 위하여 LUT 세그먼트들 전부가 휘발성 메모리(20)로부터 플래시 메모리(22)로 플러시된다. 단계(224)에서, SSD(14)의 전원이 차단된다. 방법은 단계(226)에서 종료될 수 있다.
도 8에는, LUT를 복구하는 방법이 도시된다. 다음의 태스크들은 도 1 및 5-6의 구현예와 관련하여 주로 기술되지만, 이 태스크들은 본 개시의 다른 구현예들에 적용하기 위하여 쉽게 수정될 수 있다. 태스크들은 반복적으로 수행될 수 있다. 본 방법은 단계(300)에서 시작될 수 있다.
단계(302)에서, SSD(14)가 전원 ON된다. 단계(304)에서, 제어 모듈(17)이 SSD(14)가 적절하게 전원 차단되었는지 여부를 결정한다. SSD(14)는 SSD(14)가 전원 차단되기 전에 전체 주 LUT(50)가 플래시 메모리(52)로 플러시(다운로드)될 때 적절하게 전원 차단되고, 다운로드 후 주 LUT에는 변화가 이루어지지 않는다. 제어 모듈(17)은 백업 LUT(52) 내의 엔트리들에 비해 이벤트 로그(54)의 엔트리들에 근거하여 적절한 전원 차단이 발생했음을 결정할 수 있다. 예를 들어, 이벤트 로그(54) 내의 엔트리들의 최종 소정 수(예를 들어, 플러시된 세그먼트들의 풀 사이클과 관련된 엔트리들의 수)가 백업 LUT(52)에 반영된다면, SSD(14)의 적절한 전원 차단이 발생하였다. SSD(14)가 적절하게 전원 차단되었을 때 태스크(306)가 수행되고, 그렇지 않다면 태스크(310)가 수행된다.
단계(306)에서, 제어 모듈(17)은 비-LUT 의존 메타데이터 및 LUT 의존 메타데이터 전부를 플래시 메모리(22)로부터 휘발성 메모리(20)로 업로드한다. 본 방법은 단계(308)에서 종료될 수 있다.
단계(310)에서, 제어 모듈(17)은 LUT 의존 메타데이터가 있는지 여부를 결정한다. LUT 의존 메타데이터가 없을 때 태스크(312)가 수행되고, 그렇지 않다면 태스크(320)가 수행된다.
단계(312)에서, 제어 모듈(17)은 백업 LUT(52)의 제1 세그먼트를 업로드하고 제1 (업로드된) 세그먼트가 최종 플러시되었을 때의 시간으로부터 이벤트 로그(54)를 워크하기 시작한다. 제1 세그먼트는 이벤트 로그(54)의 종료의 적어도 풀 플러시 사이클 전의 세그먼트이다. 단계(313)에서, 업로드 타이머(60)가 설정되어 이벤트 로그(54)의 현재의 엔트리를 포인트하는데 사용될 수 있다. 업로드 타이머(60)의 초기 업로드 시간은 제1 세그먼트의 시간 및/또는 제1 세그먼트에 인접 및 후속하는 타임 슬롯에 대응할 수 있다.
단계(314)에서, 주 LUT(50) 내의 논리적-물리적 어드레스 연관(들)이 업로드 시간 동안 이벤트 로그(54)에 근거하여 갱신되고 그리고/또는 다음 LUT 세그먼트가 플래시 메모리(22)로부터 휘발성 메모리(20)로 업로드된다. 단계(316)에서, 제어 모듈(17)은 이벤트 로그(54)의 종료에 도달되었는지 여부를 결정한다. 이벤트 로그(54)의 종료가 도달되지 않았다면, 태스크(317)가 수행되고, 그렇지 않다면 방법이 단계(318)에서 종료될 수 있다. 단계(317)에서, 업로드 시간이 다음 시간 슬롯 또는 플러시 세그먼트의 시간을 나타내도록 증분될 수 있다.
태스크(320)에서, 제어 모듈(17)은 전력 상실 전에 LUT 의존 메타데이터가 최종 플러시되었을 때의 시간(또는 시간 슬롯)을 결정한다. 이 시간은 최종 의존 메타데이터 시간 슬롯으로 지칭될 수 있다. 단계(322)에서, 제어 모듈(17)은 최종 의존 메타데이터 시간 슬롯 전에 적어도 풀 플러시 사이클에 있는 시간 슬롯을 결정한다. 이 시간 슬롯은 풀 플러시 사이클 시간 슬롯으로 지칭될 수 있다.
단계(324)에서, 제어 모듈(17)이 풀 플러시 사이클 시간 슬롯 전에 제1 세그먼트를 업로드하고 그리고 풀 플러시 사이클 시간 슬롯에서 이벤트 로그(54)의 워크를 시작할 수 있다. 단계(325)에서, 업로드 타이머(60)가 설정되어 이벤트 로그(54)의 현재 엔트리를 포인트하는데 사용될 수 있다. 업로드 타이머(60)의 초기 업로드 시간은 제1 세그먼트의 시간 및/또는 제1 세그먼트에 인접 및 후속한 시간 슬롯에 대응할 수 있다. 단계(326)에서, 주 LUT(50)에서의 논리적-대-물리적 어드레스 연관(들)이 업로드 시간 동안 이벤트 로그(54)에 근거하여 갱신되고 그리고/또는 다음 LUT 세그먼트가 플래시 메모리(22)로부터 휘발성 메모리(20)로 업로드된다.
단계(328)에서, 제어 모듈(17)은 세그먼트들의 풀 사이클이 업로드되는지 여부를 결정한다. 세그먼트들의 풀 사이클이 업로드되지 않을 때 태스크(327)가 수행되고, 업로드되어 있을 때 태스크(320)가 수행된다. 시간축 정합 LUT는 세그먼트들의 풀 플러시 사이클이 업로드된 때 그리고 제어 모듈(17)이 제1 세그먼트로부터 세그먼트들의 풀 사이클의 최종 세그먼트로 워크했을 때 휘발성 메모리(20) 내에 존재한다. 예를 들어, 도 6에서 제1 세그먼트가 FLUSH A와 관련될 수 있고 최종 세그먼트가 FLUSH C와 관련될 수 있다. FLUSH A의 시간부터 FLUSH C의 시간으로 이벤트 로그(54)를 워크하는 것으로부터 얻어진 주 LUT(50)는 시간축 정합 LUT이다.
단계(330)에서, LUT 의존 메타데이터가 시간축 정합 LUT에 근거하여 업로드된다. 단계(332)에서, 제어 모듈(17)은 이벤트 로그(54)의 끝이 도달되었는지 여부를 결정한다. 이벤트 로그(54)의 끝에 도달되지 않았을 때 태스크(334)가 수행되고, 그렇지 않다면 방법이 단계(336)에서 종료될 수 있다. 단계(334)에서, 제어 모듈(17)은 이벤트 로그(54)에 근거하여 주 LUT(50) 내의 논리-물리 어드레스 연계를 갱신하고 그리고/또는 이벤트 로그(54)에 근거하여 LUT 의존 메타데이터를 갱신한다. 단계(335)에서, 업로드 타이머(60)가 증분된다.
도 7 및 8의 위에 기술된 태스크들은 예시적인 예를 의미한다. 태스크들은 순차적으로, 동기화되어(simultaneously), 동시에(simultaneously), 연속적으로, 중첩 시간 기간 동안 또는 응용에 따라 상이한 순서로 수행될 수 있다.
위에 기술된 구현은 RAM에 저장되는 LUT를 제공한다. 전력이 상실될 때 LUT의 데이터는 소거 및/또는 손실될 수 있다. LUT의 데이터를 복원하기 위하여, 위에 기술된 구현들은 비-휘발성 메모리 내에 백업 LUT 및 이벤트 로그를 유지한다. 백업 LUT는 전력 상실 전에 주기적으로 갱신될 수 있다. LUT는 백업 LUT와 이벤트 로그에 기초하여 RAM에서 복원된다. LUT는 이벤트 로그를 워크함으로써 전력 상실 전에 RAM 내에서 LUT의 최종 상태로 복원된다. 이는 LUT를 백업하는 중에 비휘발성 메모리에 데이터를 기록하는 것과 관련된 호스트 대기 시간을 최소화한다. LUT를 백업하고 복원하는 것에 부가하여, 다른 메타데이터(즉, LUT 의존 메타데이터)가 또한 백업되고 복원된다.
본 개시의 광의의 교지가 다양한 형태로 구현될 수 있다. 그러므로, 본 개시가 구체적인 예들을 포함한다 하더라도, 도면, 명세서, 및 하기의 청구항들에 따라 다른 수정들이 자명할 것이므로 본 개시의 실제 범주가 그리 제한되어서는 안된다.
Claims (20)
- 시스템으로서,
제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 저장하도록 된 제1 메모리 - 상기 제1 메타데이터는 논리적 어드레스들과 물리적 어드레스들 사이의 제1 매핑을 포함하고 - 와;
(i) 제2 메타데이터를 갖는 제2 LUT 및 (ii) 제3 메타데이터를 저장하도록 된 제2 메모리 - 상기 제2 메타데이터는 상기 논리적 어드레스들과 상기 물리적 어드레스들 사이의 제2 매핑을 포함하고, 상기 제3 메타데이터는 상기 제1 메타데이터 또는 상기 제2 메타데이터에 의존하고 - 와; 그리고
제어 모듈을 포함하고,
상기 제어 모듈은,
상기 제1 메타데이터를 갱신하고,
각각의 미리결정된 시간에서 상기 제1 메타데이터에 근거하여 상기 제2 메타데이터의 세그먼트들을 갱신하고, 상기 제2 메타데이터의 세그먼트들 각각은 상기 제2 LUT 내의 미리결정된 수의 엔트리들을 나타내며,
상기 각각의 미리결정된 시간들과는 다른 시간에서 상기 제3 메타데이터를 갱신하고,
상기 제2 메모리에 최종 전원이 적절하게 차단(power down)되었는지를 결정하고,
상기 제2 메모리에 최종 전원이 적절하게 차단되지 않았다면, LUT 의존 메타데이터가 상기 제2 메모리에 저장되는지를 결정하고,
상기 제2 메모리로부터 상기 제1 메모리로 제1 세그먼트를 업로드한 후 업로드 타이머(upload timer)를 설정하고,
상기 업로드 타이머의 시간에 근거하여, 상기 제1 LUT에 논리적-대-물리적 어드레스 연관(logical-to-physical address association)을 갱신하거나 상기 제2 메모리에서 상기 제1 메모리로 다음 세그먼트를 업로드하고,
LUT 의존 메타데이터가 상기 제2 메모리에 저장되면,
세그먼트들의 풀 플러시 사이클(full flush cycle)이 업로드되지 않은 경우, 상기 업로드 타이머를 증분(increment)시키고, 그리고
상기 세그먼트들의 풀 플러시 사이클이 업로드된 경우, 상기 제1 LUT에 근거하여 상기 LUT 의존 메타데이터를 업로드하며,
LUT 의존 메타데이터가 상기 제2 메모리에 저장되지 않으면, 이벤트 로그(event log)가 종료되지 않은 경우 상기 업로드 타이머를 증분시키도록 된 것을 특징으로 하는 시스템. - 제1 항에 있어서,
상기 제1 메모리는 휘발성 메모리를 포함하고; 그리고
상기 제2 메모리는 비휘발성 메모리를 포함하는 것을 특징으로 하는 시스템. - 제1 항에 있어서,
상기 제3 메타데이터는 상기 제1 메타데이터 및 상기 제2 메타데이터에 관련된 정보를 포함하고,
상기 제1 메타데이터 및 상기 제2 메타데이터에 관련된 정보는, 사용자 데이터의 포인터들, 시스템 데이터의 포인터들, 메모리 블록들에 저장된 데이터의 양, 또는 결함 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 시스템. - 제3 항에 있어서,
상기 제3 메타데이터는 상기 제2 LUT의 시간축 정합 버전(time-coherent version)에 의존하는 것을 특징으로 하는 시스템. - 제3 항에 있어서,
상기 제어 모듈은, 상기 제2 메타데이터가 갱신된 때에 근거하여 상기 제3 메타데이터를 갱신하도록 된 것을 특징으로 하는 시스템. - 제1 항에 있어서,
상기 제어 모듈은 상기 제2 메모리 내의 상기 제1 메타데이터의 다른 부분들을 백업하면서, 상기 제1 메모리 내의 상기 제1 메타데이터의 부분들을 갱신하도록 된 것을 특징으로 하는 시스템. - 제1 항에 있어서,
상기 제어 모듈은, 상기 제2 메모리 내의 상기 제1 LUT의 제2 세그먼트들을 백업하면서, (i) 상기 제2 메모리에 사용자 데이터를 기록하고 그리고 (ii) 상기 제1 메모리 내의 상기 제1 LUT의 제1 세그먼트들을 갱신하도록 된 것을 특징으로 하는 시스템. - 제1 항에 있어서,
전원 ON 이벤트 동안, 상기 제어 모듈은:
이벤트 로그의 엔트리들에 근거하여 상기 제1 메모리의 세그먼트들을 갱신하고, 그리고 상기 제2 메모리의 세그먼트들을 상기 제1 메모리에 업로드하도록 되어 있으며,
상기 이벤트 로그의 엔트리들은, (i) 상기 물리적 어드레스들 중 선택된 어드레스들과 (ii) 상기 시스템의 드라이브의 전력 상실 전에 행해진 상기 논리적 어드레스들 사이의 메타데이터 변화를 포함하는 것을 특징으로 하는 시스템. - 제1 항에 있어서,
상기 제어 모듈은,
상기 제1 메타데이터의 세그먼트들의 플러시 시간(flush times)을 결정하고;
플러시 이벤트들 사이의 플러시 기간들을 대기하고; 그리고
상기 제1 메모리로부터의 상기 제1 메타데이터를 상기 제2 메모리로 카피함으로써 상기 플러시 시간들의 각각의 시간들에서 상기 제1 메타데이터의 세그먼트들을 플러시하도록 된 것을 특징으로 하는 시스템. - 시스템으로서,
제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 저장하도록 된 제1 메모리 - 상기 제1 메타데이터는 논리적 어드레스들과 물리적 어드레스들 사이의 제1 매핑을 포함하고 - 와;
제2 메타데이터를 갖는 제2 LUT를 저장하도록 된 제2 메모리 - 상기 제2 메타데이터는 상기 논리적 어드레스들과 상기 물리적 어드레스들 사이의 제2 매핑을 포함하고 - 와; 그리고
전원 ON 이벤트 동안, (i) 상기 제2 메모리의 세그먼트들을 상기 제1 메모리로 업로드하고 그리고 (ii) 이벤트 로그의 엔트리들에 근거하여 상기 제1 메모리의 세그먼트들을 갱신하도록 된 제어 모듈을 포함하며,
상기 이벤트 로그의 엔트리들은 (i) 상기 물리적 어드레스들 중 선택된 어드레스들과 (ii) 상기 전원 ON 이벤트 전에 행해진 상기 논리적 어드레스들 사이의 메타데이터 갱신을 포함하고, 그리고
상기 제어 모듈은,
상기 전원 ON 이벤트 동안에 그리고 LUT 의존 메타데이터가 상기 제2 메모리에 저장된 동안에, 상기 LUT 의존 메타데이터를 상기 제2 메모리로부터 상기 제1 메모리로 업로드하기 전에 상기 제2 메모리로부터의 세그먼트들의 적어도 하나의 풀 사이클을 상기 제1 메모리로 업로드하고,
상기 제2 메모리에 최종 전원이 적절하게 차단되었는지를 결정하고,
상기 제2 메모리에 최종 전원이 적절하게 차단되지 않았다면, LUT 의존 메타데이터가 상기 제2 메모리에 저장되는지를 결정하고,
상기 제2 메모리로부터 상기 제1 메모리로 제1 세그먼트를 업로드한 후 업로드 타이머를 설정하고,
상기 업로드 타이머의 시간에 근거하여, 상기 제1 LUT에 논리적-대-물리적 어드레스 연관을 갱신하거나 상기 제2 메모리에서 상기 제1 메모리로 다음 세그먼트를 업로드하고,
LUT 의존 메타데이터가 상기 제2 메모리에 저장되면,
세그먼트들의 풀 플러시 사이클이 업로드되지 않은 경우, 상기 업로드 타이머를 증분시키고, 그리고
상기 세그먼트들의 풀 플러시 사이클이 업로드된 경우, 상기 제1 LUT에 근거하여 상기 LUT 의존 메타데이터를 업로드하며,
LUT 의존 메타데이터가 상기 제2 메모리에 저장되지 않으면, 이벤트 로그가 종료되지 않은 경우 상기 업로드 타이머를 증분시키도록 된 것을 특징으로 하는 시스템. - 제10 항에 있어서,
상기 전원 ON 이벤트 동안에 그리고 LUT 의존 메타데이터가 상기 제2 메모리에 저장되지 않는 동안, 상기 제어 모듈은 상기 제2 메모리로부터의 세그먼트들의 적어도 하나의 풀 사이클을 상기 제1 메모리로 업로드하도록 된 것을 특징으로 하는 시스템. - 제10 항에 있어서,
상기 전원 ON 이벤트 동안, 상기 제어 모듈은,
상기 시스템의 적절한 전원 차단이 발생했는지 여부를 결정하고, 적절한 전원 차단은 상기 시스템의 최종 전원 차단 이벤트 전에 상기 제1 LUT가 상기 제2 메모리로 플러시되었을 때 발생하고;
상기 시스템의 적절한 전원 차단이 발생한 것에 응답하여, (i) 상기 제2 메모리로부터 상기 제1 메모리로 제2 메타데이터를 전송하고 그리고 (ii) 상기 이벤트 로그를 워크(walk)하지 않고; 그리고
상기 시스템의 적절한 전원 차단이 발생하지 않은 것에 응답하여, (i) 상기 제2 메모리로부터 상기 제1 메모리로 상기 제2 메타데이터를 전송하고 그리고 (ii) 상기 이벤트 로그를 워크하는 것을 특징으로 하는 시스템. - 제10 항에 있어서,
상기 제어 모듈은,
솔리드-스테이트 드라이브의 전력이 상실된 시간 전에 갱신된 세그먼트들의 적어도 하나의 풀 플러시 사이클을 업로드하고, 상기 세그먼트들의 상기 적어도 하나의 풀 플러시 사이클은 상기 제2 메모리로부터 상기 제1 메모리로 업로드되고, 그리고 상기 제1 메타데이터는 상기 세그먼트들의 상기 적어도 하나의 풀 플러시 사이클을 포함하며; 그리고
상기 세그먼트들의 상기 적어도 하나의 풀 플러시 사이클의 제1 세그먼트가 플러시되었을 때의 시간으로부터 상기 솔리드-스테이트 드라이브의 전원이 상실된 때의 상기 이벤트 로그의 시간 슬롯으로 상기 제1 메타데이터를 갱신하기 위하여 상기 이벤트 로그를 워크하도록 되어 있고,
상기 전원 ON 이벤트는 상기 솔리드-스테이트 드라이브의 전력이 상실된 시간에 후에 수행되는 것을 특징으로 하는 시스템. - 제10 항에 있어서,
상기 제어 모듈은,
상기 제2 메모리로부터 상기 제1 메모리로 상기 세그먼트들을 업로드하고, 상기 제1 메타데이터는 상기 업로드된 세그먼트들을 포함하고, 상기 업로드된 세그먼트들은, (i) LUT 의존 메타데이터의 플러시 이벤트 및 (ii) 솔리드-스테이트 드라이브의 전력이 상실된 때의 상기 이벤트 로그의 시간 슬롯 이전의 상기 업로드된 세그먼트들의 적어도 하나의 풀 플러시 사이클을 포함하고; 그리고
상기 솔리드-스테이트 드라이브의 전력이 상실된 때 상기 세그먼트들의 상기 풀 플러시 사이클의 제1 세그먼트의 시간 슬롯으로부터 상기 이벤트 로그의 시간 슬롯으로 상기 제1 메타데이터를 갱신하기 위하여 상기 이벤트 로그를 워크하도록 되어 있고,
상기 전원 ON 이벤트는 상기 솔리드 스테이트 드라이브의 전력이 상실된 시간 후에 수행되는 것을 특징으로 하는 시스템. - 제10 항에 있어서,
상기 전원 ON 이벤트 동안, 상기 제어 모듈은,
상기 제2 메모리로부터 상기 제1 메모리로 상기 세그먼트들의 풀 사이클의 제1 세그먼트를 업로드하고;
제1 시간 슬롯으로부터 솔리드-스테이트 드라이브의 전원 차단 사이클과 관련된 시간 슬롯으로 상기 이벤트 로그를 워크하고, 상기 이벤트 로그를 워크하는 것은 상기 이벤트 로그의 엔트리들에 근거하여 상기 제1 메모리 내의 상기 세그먼트들의 풀 사이클을 로딩(loading) 및 갱신하는 것을 포함하며; 그리고
상기 제1 시간 슬롯으로부터 상기 세그먼트들의 상기 풀 사이클 중 하나의 시간 슬롯으로 상기 이벤트 로그를 워크하는 동안, (i) 이벤트 로그 엔트리를 스킵하고 그리고 (ii) 상기 스킵된 이벤트 로그 엔트리와 관련된 상기 제1 메모리 내의 엔트리를 갱신하지 않도록 된 것을 특징으로 하는 시스템. - 방법으로서,
제1 메타데이터를 갖는 제1 룩업 테이블(LUT)을 제1 메모리에 저장하는 단계- 상기 제1 메타데이터는 논리적 어드레스들과 물리적 어드레스들 사이의 제1 매핑을 포함하고 - 와;
제2 메타데이터를 갖는 제2 LUT를 제2 메모리에 저장하는 단계 - 상기 제2 메타데이터는 상기 논리적 어드레스들과 상기 물리적 어드레스들 사이의 제2 매핑을 포함하고 - 와;
제어 모듈을 통해 상기 제1 메타데이터를 갱신하는 단계 - 상기 갱신하는 단계는, 각각의 미리결정된 시간에서 상기 제1 메타데이터에 근거하여 상기 제2 메타데이터의 세그먼트들을 갱신하는 단계를 포함하고 그리고 상기 세그먼트들 각각은 상기 제2 LUT의 미리결정된 수의 엔트리들을 나타내며 - 와;
상기 세그먼트들을 상기 제2 메모리로부터 상기 제1 메모리로 업로드하는 단계 - 상기 제1 메타데이터는 상기 업로드된 세그먼트들을 포함하고, 그리고 상기 업로드된 세그먼트들은 LUT 의존 메타데이터의 플러시 이벤트 전에 상기 업로드된 세그먼트들의 적어도 하나의 풀 플러시 사이클을 포함하며 - 와;
상기 제2 메모리에 최종 전원이 적절하게 차단되었는지를 결정하는 단계와;
상기 제2 메모리에 최종 전원이 적절하게 차단되지 않았다면, LUT 의존 메타데이터가 상기 제2 메모리에 저장되는지를 결정하는 단계와;
상기 제2 메모리로부터 상기 제1 메모리로 제1 세그먼트를 업로드한 후 업로드 타이머를 설정하는 단계와;
상기 업로드 타이머의 시간에 근거하여, 상기 제1 LUT에 논리적-대-물리적 어드레스 연관을 갱신하거나 상기 제2 메모리에서 상기 제1 메모리로 다음 세그먼트를 업로드하는 단계와;
LUT 의존 메타데이터가 상기 제2 메모리에 저장되면,
세그먼트들의 풀 플러시 사이클(full flush cycle)이 업로드되지 않은 경우, 상기 업로드 타이머를 증분(increment)시키는 단계, 및
상기 세그먼트들의 풀 플러시 사이클이 업로드된 경우, 상기 제1 LUT에 근거하여 상기 LUT 의존 메타데이터를 업로드하는 단계와; 그리고
LUT 의존 메타데이터가 상기 제2 메모리에 저장되지 않으면, 이벤트 로그가 종료되지 않은 경우 상기 업로드 타이머를 증분시키는 단계를 포함하는 것을 특징으로 하는 방법. - 제16 항에 있어서,
상기 제2 메모리 내에 제3 메타데이터를 저장하는 단계 - 상기 제3 메타데이터는 상기 제1 메타데이터 또는 상기 제2 메타데이터 중 적어도 하나에 의존하고 - 와; 그리고
상기 각각의 미리결정된 시간에서 상기 제3 메타데이터를 갱신하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US34791910P | 2010-05-25 | 2010-05-25 | |
US61/347,919 | 2010-05-25 | ||
US13/110,517 | 2011-05-18 | ||
US13/110,517 US8886870B2 (en) | 2010-05-25 | 2011-05-18 | Memory access table saving and restoring system and methods |
PCT/US2011/037164 WO2011149760A1 (en) | 2010-05-25 | 2011-05-19 | Memory access table saving and restoring system and methods |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130111228A KR20130111228A (ko) | 2013-10-10 |
KR101759690B1 true KR101759690B1 (ko) | 2017-07-19 |
Family
ID=44529868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127032837A KR101759690B1 (ko) | 2010-05-25 | 2011-05-19 | 메모리 액세스 테이블 저장 및 복원 시스템 및 방법 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8886870B2 (ko) |
EP (1) | EP2577471A1 (ko) |
JP (1) | JP5850048B2 (ko) |
KR (1) | KR101759690B1 (ko) |
CN (1) | CN102971717B (ko) |
WO (1) | WO2011149760A1 (ko) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9128949B2 (en) | 2012-01-18 | 2015-09-08 | Cloudera, Inc. | Memory allocation buffer for reduction of heap fragmentation |
US9977612B1 (en) * | 2012-05-11 | 2018-05-22 | Western Digital Technologies, Inc. | System data management using garbage collection and logs |
US9037820B2 (en) | 2012-06-29 | 2015-05-19 | Intel Corporation | Optimized context drop for a solid state drive (SSD) |
US9524800B2 (en) | 2012-09-26 | 2016-12-20 | International Business Machines Corporation | Performance evaluation of solid state memory device |
US20140244897A1 (en) * | 2013-02-26 | 2014-08-28 | Seagate Technology Llc | Metadata Update Management In a Multi-Tiered Memory |
US9454474B2 (en) | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
CN104111872B (zh) * | 2013-04-19 | 2016-02-17 | 腾讯科技(深圳)有限公司 | 系统事件的过滤方法、装置及终端 |
CN103399826B (zh) * | 2013-08-15 | 2016-01-06 | 南京新联电子股份有限公司 | 一种基于nor flash的数据存储方法 |
JP2015219839A (ja) * | 2014-05-20 | 2015-12-07 | 株式会社東芝 | 半導体メモリ装置、メモリコントローラの制御方法、及びメモリコントローラ |
WO2016020927A1 (en) * | 2014-08-04 | 2016-02-11 | Hewlett-Packard Development Company, L.P. | Event stream processing |
KR20170073792A (ko) * | 2015-12-18 | 2017-06-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10162561B2 (en) | 2016-03-21 | 2018-12-25 | Apple Inc. | Managing backup of logical-to-physical translation information to control boot-time and write amplification |
KR102641107B1 (ko) | 2016-07-29 | 2024-02-27 | 삼성전자주식회사 | 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법 |
US20180095788A1 (en) * | 2016-10-04 | 2018-04-05 | Pure Storage, Inc. | Scheduling operations for a storage device |
KR20180041898A (ko) * | 2016-10-17 | 2018-04-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10853233B2 (en) * | 2016-10-18 | 2020-12-01 | Toshiba Memory Corporation | Reconstruction of address mapping in a host of a storage system |
TWI591533B (zh) * | 2016-11-25 | 2017-07-11 | 慧榮科技股份有限公司 | 可用於資料儲存裝置之資料儲存方法與資料回復程序、以及採用這些方法的資料儲存裝置 |
US10198354B2 (en) * | 2017-03-21 | 2019-02-05 | Intel Corporation | Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory |
KR20180128588A (ko) * | 2017-05-24 | 2018-12-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
KR102234725B1 (ko) * | 2017-05-30 | 2021-04-02 | 에스케이하이닉스 주식회사 | 컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN107329909B (zh) * | 2017-06-27 | 2020-07-07 | 郑州云海信息技术有限公司 | 一种数据管理方法及装置 |
CN108182154A (zh) * | 2017-12-22 | 2018-06-19 | 深圳大普微电子科技有限公司 | 一种基于固态硬盘的日志文件的读写方法及固态硬盘 |
US10628051B2 (en) * | 2018-07-13 | 2020-04-21 | Seagate Technology Llc | Reducing a data storage device boot time |
CN109213690A (zh) * | 2018-09-21 | 2019-01-15 | 浪潮电子信息产业股份有限公司 | 一种l2p表的重建方法及相关装置 |
KR102605566B1 (ko) * | 2018-11-22 | 2023-11-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11086737B2 (en) * | 2019-01-16 | 2021-08-10 | Western Digital Technologies, Inc. | Non-volatile storage system with rapid recovery from ungraceful shutdown |
KR20210000414A (ko) * | 2019-06-25 | 2021-01-05 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US11474865B2 (en) * | 2019-08-23 | 2022-10-18 | Micron Technology, Inc. | Allocation schema for a scalable memory area |
US11093317B1 (en) * | 2020-01-27 | 2021-08-17 | EMC IP Holding Company LLC | Managing uncorrectable user data |
US11409608B2 (en) * | 2020-12-29 | 2022-08-09 | Advanced Micro Devices, Inc. | Providing host-based error detection capabilities in a remote execution device |
KR20220124905A (ko) | 2021-03-04 | 2022-09-14 | 삼성전자주식회사 | 메모리 저장 장치, 메모리 저장 장치의 구동 방법 및 호스트 장치의 구동 방법 |
US11720490B2 (en) * | 2021-08-31 | 2023-08-08 | Micron Technology, Inc. | Managing host input/output in a memory system executing a table flush |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253645A1 (en) | 2005-05-09 | 2006-11-09 | M-Systems Flash Disk Pioneers Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US20100235565A1 (en) | 2009-03-12 | 2010-09-16 | Ton-That Luan | Apparatus and method to protect metadata against unexpected power down |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5325531A (en) * | 1989-06-30 | 1994-06-28 | Digital Equipment Corporation | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines |
US5802572A (en) * | 1996-03-15 | 1998-09-01 | International Business Machines Corporation | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache |
US6691203B1 (en) * | 2000-08-30 | 2004-02-10 | Mosel Vitelic Corporation | Integrated controller to process both optical reads and optical writes of multiple optical media |
US7533214B2 (en) * | 2002-02-27 | 2009-05-12 | Microsoft Corporation | Open architecture flash driver |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
US7516267B2 (en) | 2005-11-03 | 2009-04-07 | Intel Corporation | Recovering from a non-volatile memory failure |
JP2008009527A (ja) | 2006-06-27 | 2008-01-17 | Toshiba Corp | メモリシステム |
CN101192195B (zh) * | 2006-11-22 | 2011-08-03 | 北京华旗资讯数码科技有限公司 | 电子硬盘的存储空间的分组管理方法 |
CN101558392A (zh) * | 2006-12-11 | 2009-10-14 | 马维尔国际贸易有限公司 | 混合非易失性固态存储器系统 |
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
JP4301301B2 (ja) * | 2007-02-05 | 2009-07-22 | ソニー株式会社 | 不揮発性半導体記憶装置およびその管理方法 |
WO2008106686A1 (en) | 2007-03-01 | 2008-09-04 | Douglas Dumitru | Fast block device and methodology |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US11051711B2 (en) | 2016-04-22 | 2021-07-06 | New York University | Noninvasive determination of electrical properties of tissues and materials using magnetic resonance measurements |
-
2011
- 2011-05-18 US US13/110,517 patent/US8886870B2/en not_active Expired - Fee Related
- 2011-05-19 CN CN201180031597.0A patent/CN102971717B/zh not_active Expired - Fee Related
- 2011-05-19 WO PCT/US2011/037164 patent/WO2011149760A1/en active Application Filing
- 2011-05-19 KR KR1020127032837A patent/KR101759690B1/ko active IP Right Grant
- 2011-05-19 EP EP11726251.9A patent/EP2577471A1/en not_active Withdrawn
- 2011-05-19 JP JP2013512090A patent/JP5850048B2/ja not_active Expired - Fee Related
-
2014
- 2014-11-11 US US14/538,179 patent/US9639423B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253645A1 (en) | 2005-05-09 | 2006-11-09 | M-Systems Flash Disk Pioneers Ltd. | Method and system for facilitating fast wake-up of a flash memory system |
US20100235565A1 (en) | 2009-03-12 | 2010-09-16 | Ton-That Luan | Apparatus and method to protect metadata against unexpected power down |
Also Published As
Publication number | Publication date |
---|---|
US20110296123A1 (en) | 2011-12-01 |
CN102971717A (zh) | 2013-03-13 |
WO2011149760A1 (en) | 2011-12-01 |
EP2577471A1 (en) | 2013-04-10 |
US8886870B2 (en) | 2014-11-11 |
WO2011149760A4 (en) | 2012-01-19 |
US20150143174A1 (en) | 2015-05-21 |
JP2013530455A (ja) | 2013-07-25 |
JP5850048B2 (ja) | 2016-02-03 |
US9639423B2 (en) | 2017-05-02 |
CN102971717B (zh) | 2015-12-16 |
KR20130111228A (ko) | 2013-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101759690B1 (ko) | 메모리 액세스 테이블 저장 및 복원 시스템 및 방법 | |
JP5696118B2 (ja) | 不揮発性メモリシステムのためのウィーブシーケンスカウンタ | |
JP6820248B2 (ja) | 持続性記憶装置を管理する方法およびシステム、ならびに非一時的コンピュータ読み取り可能媒体 | |
US9996268B2 (en) | Memory system and control method of the same | |
TWI448890B (zh) | 記憶體系統、用於判定電子器件中之動態資料的方法及用於在非揮發性記憶體中執行記憶體垃圾收集之方法 | |
KR101965549B1 (ko) | 고체 상태 드라이브에서 자유 공간 어카운트와 함께 재구축되는 2 스테이지 파워 온 맵을 위한 방법들, 디바이스들, 및 시스템들 | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
TWI503664B (zh) | 非揮發記憶體系統中未使用之邏輯位址之掛載時間解映射 | |
US10838629B2 (en) | Solid state device with fast boot after ungraceful shutdown | |
US20100174853A1 (en) | User device including flash and random write cache and method writing data | |
US9501404B2 (en) | Back-up and restoration of data between volatile and flash memory | |
US20090089610A1 (en) | Rapid crash recovery for flash storage | |
JP2019512116A (ja) | フラッシュメモリデバイスをリフレッシュする方法および装置 | |
JP2009187062A (ja) | 情報処理装置、該情報処理装置で行われるデータ記憶を制御する制御部およびデータ記憶の制御方法 | |
TW201337561A (zh) | 資料可得性之掛接時間重新調整 | |
JP2016525240A (ja) | メモリシステムにおける消去管理 | |
CN111159059B (zh) | 一种垃圾回收方法、装置及非易失性的存储设备 | |
JP2007025914A (ja) | 世代別ガベージコレクションプログラム | |
CN111831476A (zh) | 控制raid系统的操作的方法 | |
US20120331208A1 (en) | Adaptive internal table backup for non-volatile memory system | |
JP2013235531A (ja) | 制御装置、記憶装置、記憶制御方法 | |
JP2009205689A (ja) | フラッシュディスク装置 | |
CN111597066A (zh) | Ssd修复方法、装置、计算机设备及存储介质 | |
TWI850721B (zh) | 記憶體內日誌 | |
US20190087441A1 (en) | Data access method of transactional file system and electronic apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |