KR20140142124A - 테이블을 관리하는 저장 장치 및 그 관리 방법 - Google Patents
테이블을 관리하는 저장 장치 및 그 관리 방법 Download PDFInfo
- Publication number
- KR20140142124A KR20140142124A KR1020130134008A KR20130134008A KR20140142124A KR 20140142124 A KR20140142124 A KR 20140142124A KR 1020130134008 A KR1020130134008 A KR 1020130134008A KR 20130134008 A KR20130134008 A KR 20130134008A KR 20140142124 A KR20140142124 A KR 20140142124A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- position value
- data
- location
- control unit
- 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/16—Error detection or correction of the data by redundancy in hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
테이블을 관리하는 저장 장치 및 그 관리 방법이 제공된다. 실시예의 저장 장치는 제1 테이블을 제공하며, 제1 테이블을 복제하는 제2 테이블을 사용함으로써 제1 테이블에 기입된 데이터의 신뢰성을 확보할 수 있다. 또한, 제1 테이블, 제2 테이블 및 위치 테이블을 사용함으로써 저장 장치의 비정상적인 종료 시 복구되는 제1 테이블의 데이터의 신뢰성을 확보할 수 있다.
Description
아래의 설명은 저장 장치에 관한 것으로, 특히 테이블을 관리하는 저장 장치에 관한 것이다.
비휘발성 메모리를 포함하는 컴퓨터 시스템에 있어서, 중앙 처리 장치(Central Processing Unit; CPU)에 의해 실행된 메모리 기입 명령에 의해 비휘발성 메모리에 데이터가 기입될 수 있다.
비휘발성 메모리에 기입되는 데이터는, 1 차적으로 CPU의 캐시에 기입될 수 있다. 이후, 캐시로부터 데이터가 기입된 캐시 라인이 방출될 때, 비로소 데이터는 휘발성 메모리에 기입될 수 있다. 이 때, 다수의 데이터의 연속적인 기입은, 캐시에 대해서는 프로그램에서 지정된 소기의 순서대로 수행될 수 있지만, 비휘발성 메모리에 대해서는 캐시 라인의 방출의 실제 시점에 따라 프로그램에서 지정된 것과는 다른 순서로 수행될 수 있다.
따라서, 비휘발성 메모리에 데이터가 완전히 기입되기 전에 컴퓨터 시스템의 동작이 중단되는 경우(예컨대, 컴퓨터 시스템의 셧 다운) 데이터는 비휘발성 메모리에 올바르게 기입되지 않을 수 있다. 말하자면, 프로그램에서 지정된 값이 아닌 임의의 값을 갖는 데이터가 비휘발성 메모리에 기입될 수 있다. 또한, 비휘발성 메모리에 대한 테이터의 기입이 캐시를 경유하여 이루어지기 때문에, 컴퓨터 시스템의 동작의 중단 시, 논리적으로 더 먼저 기입되어야 할 데이터는 비휘발성 메모리에 기입되지 않고, 나중에 기입되어야 할 데이터만이 비휘발성 메모리에 기입되어 있을 수 있다.
컴퓨터 시스템이 비정상적인 동작의 중단으로부터 복구된 후, 컴퓨터 시스템이 상술된 비휘발성 메모리에 잘못 기입된 데이터를 그대로 사용하는 경우, 컴퓨터 시스템에서 오류가 발생할 수 있다.
상술된 문제를 해결하기 위해, 컴퓨터 시스템은 배터리 또는 대용량 커패시터(capacitor)와 같은 하드웨어 장치를 구비할 수 있다. 배터리 또는 커패시터 내에 저장된 여분의 전력을 사용함으로써, 컴퓨터 시스템의 전원의 차단 시 수행 중이던 데이터의 기입이 완료될 수 있고, 캐시에 기입된 데이터가 비휘발성 메모리로 방출될 수 있다.
그러나, 배터리 또는 커패시터의 충전 및 방전의 횟수는 제한될 수 있다. 또한, 컴퓨터 시스템이 배터리 또는 커패시터를 구비하기 위해서는 추가적인 하드웨어 비용이 요구되고, 배터리 또는 커패시터에 고장이 발생할 가능성도 배제할 수 없다. 또한, 컴퓨터 시스템의 동작의 중단은 전원의 차단뿐만 아니라, 다양한 다른 원인들에 기인할 수 있다.
한국공개특허 제10-2013-0044657호(공개일 2013년 5월 3일)에는 파일 시스템 및 그 제어방법이 개시되어있다. 선행기술은 복수의 블록을 가지는 비휘발성의 제1 메모리부, 제1 메모리부의 복수 블록 중 어느 하나의 블록을 선택하고, 선택된 어느 하나의 블록이 유효 블록인지 판단하고, 어느 하나의 블록이 유효블록이면 어느 하나의 블록에 데이터 기입을 제어하고, 제1 메모리부의 복수 블록을 체크하여 복수 블록을 유효 블록과 불량 블록으로 구분하고, 구분된 유효 블록과 불량 블록에 어드레스를 매핑하여 어드레스 테이블을 생성하고, 생성된 어드레스 테이블의 로딩을 제어하는 제어부 및 제1 메모리부의 복수 블록에 대한 어드레스 테이블을 저장하는 휘발성의 제2 메모리부를 포함하는 파일 시스템을 개시한다.
상기에서 설명된 정보는 단지 이해를 돕기 위한 것이며, 종래 기술의 일부를 형성하지 않는 내용을 포함할 수 있으며, 종래 기술이 통상의 기술자에게 제시할 수 있는 것을 포함하지 않을 수 있다.
일 실시예는 테이블을 관리하는 저장 장치 및 그 관리 방법을 제공할 수 있다.
일 실시예는 저장 장치의 비정상적인 종료 시 테이블을 복원하는 저장 장치 및 그 관리 방법을 제공할 수 있다.
일 측면에 있어서, 제1 테이블을 관리하는 저장 장치에 있어서, 비휘발성 메모리 및 상기 비휘발성 메모리 내에 상기 제1 테이블, 제2 테이블 및 위치 테이블을 저장하는 제어부를 포함하고, 상기 제어부는, 상기 제1 테이블의 제1 위치에 데이터를 기입하는 단계, 상기 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제1 위치에 대응하는 상기 제2 테이블의 제2 위치에 상기 데이터를 기입하는 단계 및 상기 위치 테이블을 초기화하는 단계를 순차적으로 수행함으로써 상기 제1 테이블에 대한 업데이트를 수행하는, 저장 장치가 제공된다.
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다.
상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타낼 수 있다.
상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화할 수 있다.
상기 제어부는 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원할 수 있다.
상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지할 수 있다.
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입할 수 있다.
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.
상기 제어부는 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정할 수 있다.
상기 제어부는 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원할 수 있다.
상기 제어부는 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원할 수 있다.
상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지할 수 있다.
다른 일 측면에 있어서, 비휘발성 메모리 및 제어부를 포함하는 저장 장치가 제1 테이블을 관리하는 방법에 있어서, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 테이블의 제1 위치에 제1 데이터를 기입하는 단계, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 위치에 대응하는 제2 테이블의 제2 위치에 상기 제1 데이터를 기입하는 단계 및 상기 제어부가 상기 위치 테이블을 초기화하는 단계를 포함하는, 테이블을 관리하는 방법이 제공된다.
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다.
상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화할 수 있다.
상기 테이블을 관리하는 방법은, 상기 제어부가 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다.
상기 테이블을 관리하는 방법은, 상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계를 더 포함할 수 있다.
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입할 수 있다.
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.
상기 테이블을 관리하는 방법은, 상기 제어부가 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하는 단계를 더 포함할 수 있다.
상기 테이블을 관리하는 방법은, 상기 제어부가 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다.
상기 테이블을 관리하는 방법은, 상기 제어부가 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다.
상기 테이블을 관리하는 방법은, 상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계를 더 포함할 수 있다.
데이터가 기입된 테이블의 복제 테이블을 저장함으로써, 테이블의 데이터의 신뢰성을 확보하는 저장 장치 및 그 관리 방법이 제공된다.
데이터가 기입된 테이블의 위치의 위치 값을 저장하는 위치 테이블을 사용함으로써 저장 장치의 비정상적인 종료 후 복구되는 테이블의 데이터의 신뢰성을 확보하는 저장 장치 및 그 관리 방법이 제공된다.
도 1은 일 실시예에 따른 저장 장치를 나타낸다.
도 2는 일 실시예에 따른 저장 장치가 관리하는 테이블들을 나타낸다.
도 3은 일 실시예에 따른 테이블을 관리하는 방법을 나타내는 흐름도이다.
도 4는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 5는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 6은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 7은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 8은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 9은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 2는 일 실시예에 따른 저장 장치가 관리하는 테이블들을 나타낸다.
도 3은 일 실시예에 따른 테이블을 관리하는 방법을 나타내는 흐름도이다.
도 4는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 5는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 6은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 7은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 8은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 9은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
실시예에는 다양한 변경이 가해질 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 실시예를 실시 형태에 대해 한정하려는 것이 아니며, 실시예는 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 일 실시예에 따른 저장 장치를 나타낸다.
저장 장치(100)는 비휘발성 메모리(110), 제어부(120) 및 캐시(130)를 포함할 수 있다.
저장 장치(100)는 데이터를 저장하고, 저장된 데이터를 제공하는 장치일 수 있다
저장 장치(100)는 비휘발성 메모리(110)를 포함하는 메모리 칩일 수 있다. 예컨대, 저장 장치(100)는 범용 직렬 버스(Universal Serial Bus; USB) 메모리일 수 있다.
또는, 비휘발성 메모리(110)는 플래시(flash) 메모리일 수 있다.
또는, 비휘발성 메모리(110)는 하드 디스크 또는 SSD 일 수 있다. 저장 장치(100)는 하드 디스크 또는 SSD 등과 같은 저장부를 포함하는 컴퓨터 시스템일 수 있다.
저장 장치(100)는 저장 장치(100)에 저장된 데이터에 블록 단위 또는 바이트 단위로 접근할 수 있다. 여기서, 접근은 데이터의 기입(write) 또는 데이터의 독출(read)을 포함할 수 있다.
비휘발성 메모리(110)는 데이터를 저장하기 위한 반도체 장치일 수 있다. 예컨대, 비휘발성 메모리(110)는 플래시 메모리 기반의 저장 장치들일 수 있다.
비휘발성 메모리(110)에 저장된 데이터는 블록 단위 또는 바이트 단위로 접근될 수 있다.
비휘발성 메모리(110)는 테이블을 관리할 수 있는 파일 시스템을 저장할 수 있다. 데이터는 비휘발성 메모리(110)에 저장된 테이블에 기입될 수 있다. 여기서, 테이블은 비휘발성 메모리(110)의 파일 시스템에서 제공하는 자료 구조일 수 있다.
저장 장치(100)가 비정상적으로 종료하는 경우에도, 비휘발성 메모리(110)에 저장된 데이터는 보존될 수 있다. 말하자면, 저장 장치(100)의 전원이 차단되는 경우에도, 비휘발성 메모리(110)에 저장된 데이터의 영속성이 보장될 수 있다.
제어부(120)는 비휘발성 메모리(110) 또는 저장 장치(100)를 관리하는 장치일 수 있다.
제어부(120)는 비휘발성 메모리(110)에 저장된 데이터에 접근할 수 있다.
예컨대, 제어부(120)는 디스크 컨트롤러, SSD 컨트롤러, 중앙 처리 장치, 보조 프로세서 또는 입출력(Input/Output; I/O) 프로세서일 수 있다.
반면, 도 1에 도시된 것과는 달리, 제어부(120)는 비휘발성 메모리(110)의 일부일 수 있다. 예컨대, 제어부(120)는 메모리 칩 내의 메모리 컨트롤러 일 수 있다. 말하자면, 제어부(120)는 비휘발성 메모리(110)의 메모리 컨트롤러일 수 있다.
제어부(120)는 비휘발성 메모리(110) 내의 파일 시스템을 관리할 수 있다.
예컨대, 제어부(120)는, 파일 시스템의 데이터로서, 비휘발성 메모리(110)에 하나 이상의 테이블을 저장할 수 있다.
제어부(120)는 비휘발성 메모리(110)에 저장된 테이블에 데이터를 기입할 수 있고, 비휘발성 메모리(110)에 저장된 테이블의 데이터를 독출할 수 있다.
캐시(130)는 데이터가 임시적으로 저장되는 메모리 장치일 수 있다. 예컨대, 캐시는 버퍼로서 동작하는 메모리 장치일 수 있다.
예컨대, 캐시(130)는 레벨2(Level2; L2) 캐시일 수 있다. 또는, 캐시(130)는 디스크 캐시일 수 있다.
반면, 도시된 것과는 달리, 제어부(120)가 캐시(130)를 포함할 수도 있다. 예컨대, 캐시(130)는 레벨1(Level1; L1) 캐시 일 수 있다.
제어부(120)는 캐시(130)에 직접 접근할 수 있다. 제어부(120)가 캐시(130)에 접근할 때의 접근 속도는 제어부(120)가 비휘발성 메모리(110)에 접근할 때의 접근 속도보다 더 빠를 수 있다.
제어부(120)가 비휘발성 메모리(110)에 기입한 데이터는, 1 차적으로 캐시(130)에 저장될 수 있다. 캐시(130)는 라인 단위로 데이터를 방출함으로써 비휘발성 메모리(110)에 데이터를 기입할 수 있다. 캐시(130)로부터 방출되는 라인 단위의 데이터는 캐시 라인일 수 있다.
데이터가 비휘발성 메모리(110)에 저장된 테이블에 실제로 기입되는 순서 또는 시점은 데이터를 포함하는 캐시 라인이 캐시(130)로부터 방출되는 순서 또는 시점에 따라 결정될 수 있다.
데이터가 비휘발성 메모리(110)의 테이블에 기입되는 방법 및 테이블의 관리 방법은 후술될 도 2 및 도 3에서 더 자세하게 설명된다.
도 2는 일 실시예에 따른, 저장 장치가 관리하는 테이블들을 나타낸다.
도 1의 저장 장치(100)는 테이블을 관리할 수 있다.
각 테이블은 하나 이상의 엔트리를 포함할 수 있다. 엔트리는 데이터가 기입될 수 있는 테이블 내의 위치 또는 공간일 수 있다.
엔트리는 비휘발성 메모리(110) 내의 논리적 위치에 존재할 수 있다. 인접한 엔트리들이 존재하는 비휘발성 메모리(110) 내의 논리적 위치들의 각각은 서로 인접하거나 인접하지 않을 수 있다. 또한, 인접한 엔트리들이 존재하는 비휘발성 메모리(110) 내의 물리적인 위치들의 각각은 서로 인접하거나 인접하지 않을 수 있다.
각 엔트리는 인덱스로서 식별될 수 있다. 인덱스는 테이블이 포함하는 엔트리들의 각각의 번호일 수 있다. 말하자면, 동일한 테이블 내의 서로 상이한 엔트리는 서로 상이한 인덱스로서 구분될 수 있다.
도 1을 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 비휘발성 메모리(110)에 테이블을 저장할 수 있다.
제어부(120)는 비휘발성 메모리(110) 내에 제1 테이블(210), 제2 테이블(220) 및 위치 테이블(230)을 저장할 수 있다.
제1 테이블(210)은 프로그램의 데이터를 저장할 수 있다.
제1 테이블(210)은 하나 이상의 엔트리들을 포함할 수 있다.
제1 테이블(210)이 포함하는 엔트리의 개수는 가변적일 수 있다. 예컨대, 제1 테이블(210)의 엔트리의 개수는 제1 테이블에 기입되는 데이터의 크기에 따라 변할 수 있다.
제2 테이블(220)은 하나 이상의 엔트리들을 포함할 수 있다.
제어부(120)는 제1 테이블(210)의 내용을 제2 테이블(220)로 복제할 수 있다. 제2 테이블(220)은 제1 테이블(210)이 복제된 테이블일 수 있다. 이 때, 제2 테이블(220)이 포함하는 엔트리의 개수 및 제1 테이블(210)이 포함하는 엔트리의 개수는 동일할 수 있다. 말하자면, 동일한 인덱스를 갖는 제1 테이블(210)의 위치 및 제2 테이블(220)의 위치는 서로 대응할 수 있다.
제1 테이블(210)의 제n 번째 인덱스를 갖는 엔트리에 기입된 데이터가 제2 테이블(220)의 제n 번째 인덱스를 갖는 엔트리에 기입됨으로써, 제2 테이블(220)은 제1 테이블(210)의 복제 테이블로서 유지될 수 있다. 여기서, n 은 1 이상 m 이하의 정수일 수 있다. m 은 엔트리들의 개수일 수 있다.
위치 테이블(230)은 하나 이상의 엔트리들을 포함할 수 있다.
위치 테이블(230)의 엔트리는 데이터가 기입되는 제1 테이블(210)의 위치 값(또는, 인덱스)을 저장할 수 있다. 또는, 위치 테이블(230)의 엔트리에 저장되는 위치 값은 상기 인덱스에 대응하는 값일 수 있다.
데이터가 제1 테이블(210) 및 제2 테이블(220)에 기입되는 방법 및 테이블의 관리 방법은 후술될 상세한 설명에서 더 자세하게 설명된다.
앞서 도 1을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 3은 일 실시예에 따른, 테이블을 관리하는 방법을 나타내는 흐름도이다.
도 1 및 도 2를 참조하여 전술된 설명에 따르면, 도 2의 제1 테이블(210)에 기입되는 데이터의 순서는 도 1의 캐시(130)의 캐시 라인이 방출되는 순서에 따라 결정될 수 있다. 말하자면, 캐시(130)에 데이터가 기입되는 순서와 제1 테이블(210)에 데이터가 기입되는 순서는 서로 일치하지 않을 수 있다.
도 1의 저장 장치(100)가 비정상적으로 종료하는 경우, 데이터가 제1 테이블(210)에 실제로 저장된 순서가 소기의 데이터의 기입이 요청된 순서와 상이하기 때문에, 제1 테이블(210)에 남아있는 데이터의 신뢰성이 보장되지 않을 수 있다. 여기서, 데이터의 기입의 요청은 제어부(120)가 데이터를 기입하는 것일 수 있다.
단계(310)에서, 제어부(120)는 데이터 기입 순서 보장 조건이 충족되는지 여부를 판단할 수 있다.
데이터 기입 순서 보장 조건은 데이터가 제1 테이블(210)에 기입되는 순서를 소기의 데이터의 기입이 요청된 순서와 일치시키는 조건일 수 있다. 말하자면, 데이터 기입 순서 보장 조건의 충족될 경우, 제어부(120)에 의해 데이터의 기입이 요청된 순서에 따라 비휘발성 메모리(110)에 데이터가 실제로 저장될 수 있다.
데이터 기입 순서 보장 조건이 충족됨으로써, 제1 테이블(210)에 데이터가 기입되는 순서는 소기의 데이터의 기입이 요청된 순서와 일치될 수 있고, 제1 테이블(210)에 기입된 데이터의 신뢰성이 보장될 수 있다.
단계(315)에서, 데이터 기입 순서 보장 조건이 충족되지 않는 경우, 제어부(120)는 데이터 기입 순서 보장 조건을 충족시킬 수 있다.
예컨대, 제어부(120)는 캐시 정책을 라이트-스루(write-through)로 변경함으로써 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 캐시 정책을 라이트-스루로 변경함으로써, 데이터는 캐시(130) 및 제1 테이블(210)에 동시에 또는 함께 기입될 수 있다.
또는, 제어부(120)는 캐시(130)를 비활성화 함으로써 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 캐시(130)를 비활성화 함으로써, 데이터는 캐시(130)를 경유하지 않고 제1 테이블(210)에 직접적으로 기입될 수 있다.
또는, 제어부(120)는 제1 테이블(210)에 데이터를 기입한 후, 명시적인 캐시 플러시를 수행함으로써, 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 제1 테이블(210)에 데이터를 기입한 후 명시적인 캐시 플러시를 수행함으로써, 데이터는 캐시(130)에 기입된 순서대로 제1 테이블(210)에 기입될 수 있다.
또는, 제어부(120)는 데이터의 기입을 위해 넌-템포럴(non-temporal) 명령어를 사용함으로써, 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 넌-템포럴(non-temporal) 명령어를 사용함으로써, 데이터는 캐시(130)를 경유하지 않고 제1 테이블(210)에 기입될 수 있다. 예컨대, 넌-템포럴 명령어는 MOVNTQ 및 MOVNTI 중 어느 하나일 수 있다.
또는, 저장 장치(100)는 화이트 버퍼(write buffer) 및/또는 스토어 버퍼(store buffer)를 더 포함할 수 있다. 화이트 버퍼 및/또는 스토어 버퍼를 통해 데이터 기입 순서 보장 조건이 충족될 수 있다. 화이트 버퍼 및/또는 스토어 버퍼는 캐시(130)로부터 제1 테이블(210)로 방출되는 데이터를 저장(hold)할 수 있다.
제어부(120)는 데이터 기입 순서 보장 조건이 충족됨에 따라 후술될 단계(320)를 수행할 수 있다.
단계(320)에서, 제어부(120)는 제1 테이블(210)의 제1 위치에 데이터를 기입할 수 있다. 단계(310)의 데이터 기입 순서 보장 조건이 충족됨에 따라, 단계(320)에서, 데이터는 제어부(120)의 기입에 따라 제1 테이블(210)의 제1 위치에 기입될 수 있다.
단계(320)에서, 데이터는 제1 테이블(210)의 엔트리들 중 어느 하나에 기입될 수 있다. 데이터가 기입되는 제1 위치는 제1 테이블(210)의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다.
단계(330)에서, 제어부(120)는 위치 테이블(230)에 제1 위치를 나타내는 제1 위치 값을 기입할 수 있다. 제1 위치 값은 위치 테이블(230)의 엔트리에 기입될 수 있다.
제1 위치 값은 제1 위치가 나타내는 엔트리의 인덱스일 수 있다. 또는, 제1 위치 값은 제1 위치가 나타내는 엔트리의 인덱스에 대응하는 값일 수 있다.
단계(330)에서, 제어부(120)는 위치 테이블(230)의 서로 상이한 3 개 이상의 위치들의 각각에 제1 위치 값을 기입할 수 있다.
위치 테이블(230)의 서로 상이한 3 개 이상의 위치들은 위치 테이블(230)이 포함하는 서로 상이한 3 개 이상의 엔트리들일 수 있다. 예컨대, 제1 위치 값은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들의 각각에 기입될 수 있다.
단계(340)에서, 제어부(120)는 제1 위치에 대응하는 제2 테이블(220)의 제2 위치에 데이터를 기입할 수 있다. 데이터가 기입되는 제2 위치는 제2 테이블(220)의 엔트리들 중 하나인 제2 엔트리를 나타낼 수 있다.
서로 대응하는 위치들인 제1 위치 및 제2 위치는 제1 엔트리의 및 제2 엔트리를 각각 나타낼 수 있다. 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.
단계(350)에서, 제어부(120)는 위치 테이블(230)을 초기화할 수 있다.
제어부(120)는 위치 테이블(230)에 저장된 제1 위치 값을 갱신함으로써 위치 테이블(230)의 초기화할 수 있다. 예컨대, 위치 테이블(230)의 엔트리에 기입된 제1 위치 값이 널(NULL) 값으로 갱신됨으로써 위치 테이블(230)은 초기화될 수 있다.
제어부(120)는 제1 위치 값을 널 값으로 갱신함으로써 위치 테이블(230)을 초기화할 수 있다.
단계(350)에서, 제어부(120)는 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.
예컨대, 위치 테이블(230)의 3 개 이상의 엔트리들에 각각 기입된 제1 위치 값이 널 값으로 갱신됨으로써 위치 테이블(230)은 초기화될 수 있다.
제어부(120)는 전술된 단계들(320 내지 350)을 순차적으로 수행할 수 있다. 예컨대, 단계들(320 내지 350) 중 단계(320)가 최초로 수행되고 단계(350)가 마지막으로 수행될 수 있다.
단계(350)가 완료된 후, 제어부(120)는 다시 단계(320)를 수행할 수 있다. 제어부(120)는 단계(310)의 데이터 기입 순서 보장 조건을 충족하는 데이터 세트가 제1 테이블(210)에 기입될 때마다, 단계들(320 내지 350)을 반복적으로 수행할 수 있다.
단계들(320 내지 350)이 수행됨으로써, 제1 테이블(210), 제2 테이블(220) 및 위치 테이블(230)은 업데이트될 수 있다. 말하자면, 단계들(320 내지 350)은 테이블을 업데이트 하는 방법을 구성하는 단계들일 수 있다.
저장 장치(100)에 의해 수행되는 테이블을 관리하는 방법은 상기의 테이블을 업데이트하는 방법을 포함할 수 있다. 또한, 저장 장치(100)가 수행하는 테이블을 관리하는 방법은 후술될 도 4 또는 도 5의 저장 장치(100)의 재시작 방법을 더 포함할 수 있다.
테이블을 관리하는 방법은 결함 감내(fault tolerant)를 제공하는 테이블을 관리하는 방법일 수 있다.
앞서 도 1 내지 도 2를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 4는 일 예에 따른, 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 4는 도 1의 저장 장치(100)가 정상적으로 또는 비정상적으로 종료된 경우, 저장 장치(100)를 재시작하는 방법을 나타낼 수 있다. 예컨대, 저장 장치(100)의 재시작 방법은 저장 장치(100)가 비정상적으로 종료된 경우에 제어부(120)가 도 1의 비휘발성 메모리(110)에 저장된 테이블을 복원하는 방법을 포함할 수 있다.
단계(410)에서, 도 1의 제어부(120)는 저장 장치(100)의 종료가 비정상적인지 여부를 판단할 수 있다. 저장 장치(100)의 비정상적인 종료는, 예컨대, 제어부(120)가 도 3의 단계들(320 내지 350) 중 하나의 단계를 수행하는 도중에 저장 장치(100)의 전원이 갑자기 차단된 경우를 의미할 수 있다.
저장 장치(100)의 종료가 정상적인 경우, 후술될 단계들(420 내지 450)은 수행되지 않을 수 있다. 말하자면, 후술될 단계들(420 내지 450)은 저장 장치(100)의 종료가 비정상적인 경우 수행될 수 있다.
저장 장치(100)의 종료가 비정상적인 경우, 단계(420)에서, 제어부(120)는 위치 테이블(230)에 저장된 제2 위치 값을 독출할 수 있다. 제2 위치 값은 데이터가 기입된 제1 테이블(210)의 엔트리를 나타내는 위치 값일 수 있다. 예컨대, 제2 위치 값은 도 3의 단계(330)의 제1 위치 값일 수 있다.
단계(430)에서, 제어부(120)는 독출된 제2 위치 값이 널 값인지 여부를 판단할 수 있다. 독출된 제2 위치 값에 널 값인지 여부에 따라, 데이터가 저장된 제1 테이블(210) 및 제2 테이블(220) 중 어느 테이블에 저장된 데이터를 신뢰할 것인지가 결정될 수 있다.
독출된 제2 위치 값이 널 값인 경우, 도 3의 단계(350)가 완료된 것으로 간주될 수 있다. 말하자면, 단계(350)가 수행된 후 다시 단계(320)가 수행되는 도중에 저장 장치(100)의 비정상적인 종료가 발생한 것으로 판단될 수 있다. 즉, 독출된 제2 위치 값이 널 값인 경우 제2 테이블(220)에 저장된 데이터는 신뢰할 수 있는 데이터일 수 있다.
단계(440)에서, 제어부(120)는 위치 테이블(230)에 저장된 제2 위치 값이 널 값일 경우 제2 테이블(220)의 내용을 제1 테이블(210)로 복제함으로써 제1 테이블(210)을 복원할 수 있다.
단계(440)에서, 제2 테이블(220)의 내용 전부가 제1 테이블(210)로 복제될 수 있다. 말하자면, 제2 테이블(220)에 기입된 전체 데이터가 상기의 전체 데이터가 기입된 제2 테이블의 위치들에 대응하는 제1 테이블(210)의 위치들에 기입될 수 있다. 또는, 제어부(210)는 제1 테이블(210)의 엔트리들 및 상기의 엔트리들에 대응하는 제2 테이블(220)의 엔트리들을 각각 비교할 수 있다. 서로 대응하는 제1 테이블(210)의 엔트리 및 제2 테이블(220)의 엔트리에 기입된 데이터가 서로 상이한 경우, 데이터를 일치시키기 위해 제어부(120)는 제2 테이블의 엔트리에 기입된 데이터를 대응되는 제1 테이블(210)의 엔트리에 기입할 수 있다.
독출된 제2 위치 값이 널 값이 아닌 경우, 도 3의 단계(330)가 완료된 것으로 간주될 수 있다. 말하자면, 단계(330)가 수행된 후 단계(340)가 수행되는 도중에 저장 장치(100)의 비정상적인 종료가 발생한 것으로 판단될 수 있다. 즉, 독출된 제2 위치 값이 널 값이 아닌 경우 제1 테이블(210)에 저장된 데이터는 신뢰할 수 있는 데이터일 수 있다.
단계(450)에서, 제어부(120)는 제2 위치 값이 널 값이 아닐 경우 제2 위치 값을 사용하여 제2 위치 값에 대응하는 제1 테이블(210)의 제3 위치에 저장된 제2 데이터를 제2 위치 값에 대응하는 제2 테이블(220)의 제4 위치에 기입함으로써 제2 테이블(220)을 상기 제1 테이블(210)의 복제 테이블로서 유지할 수 있다.
제2 위치 값이 도 3의 단계(330)의 제1 위치 값인 경우, 제3 위치는 도 3의 단계(320)의 제1 위치일 수 있다. 또한, 제4 위치는 도 3의 단계(340)의 제2 위치일 수 있다.
제2 테이블(220)이 제1 테이블(210)의 복제 테이블로서 유지됨으로써, 테이블에 저장된 데이터의 신뢰성이 확보될 수 있다.
단계들(420 내지 450)이 수행됨으로써 저장 장치(100)가 비정상적으로 종료된 경우 테이블의 데이터가 복원될 수 있다. 말하자면, 단계들(420 내지 450)은 저장 장치(100)가 비정상적으로 종료된 경우 테이블을 복원하는 방법을 구성하는 단계들일 수 있다.
도 3을 참조하여 전술된 것과 같이, 도 3을 참조하여 전술된 테이블을 관리하는 방법은 본 실시예의 테이블을 복원하는 방법을 포함할 수 있다.
앞서 도 1 내지 도 3을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 5는 일 예에 따른, 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 4를 참조하여 전술된 설명에 따르면, 단계(410)에서, 도 1의 제어부(120)는 저장 장치(100)의 종료가 비정상적인지 여부를 판단할 수 있다.
도 3을 참조하여 전술된 설명에 따르면, 도 3의 단계(330)에서, 제1 테이블(210)의 데이터가 저장된 엔트리를 나타내는 위치 값은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들의 각각에 저장될 수 있다.
도 1의 저장 장치(100)의 종료가 비정상적인 경우 단계(520)에서, 제어부(120)는 위치 테이블(230)에 기입된 값들을 독출할 수 있다. 독출되는 위치 테이블(230)에 기입된 값들의 각각은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들에 각각 저장된 위치 값일 수 있다.
단계(530)에서, 제어부(120)는 복원된 위치 값을 결정할 수 있다.
복원된 위치 값은 단계(520)에서 독출된 위치 값들을 사용하여 결정될 수 있다. 단계(530)의 복원된 위치 값을 결정하는 방법은 후술될 도 6 내지 도 9에서 더 자세하게 설명된다.
단계(540)에서, 제어부(120)는 복원된 위치 값이 널 값인지 여부를 판단할 수 있다. 독출된 위치 값이 널 값인지 여부에 따라, 데이터가 저장된 제1 테이블(210) 및 제2 테이블(220) 중 어느 테이블에 저장된 데이터를 신뢰할 것인지가 결정될 수 있다.
단계(550)에서, 제어부(120)는 복원된 위치 값이 널 값일 경우 제2 테이블(220)의 내용을 제1 테이블(210)로 복제함으로써 제1 테이블(210)을 복원할 수 있다.
단계(560)에서, 제어부(120)는 복원된 위치 값이 널 값이 아닐 경우 복원된 위치 값을 사용하여 복원된 위치 값에 대응하는 제1 테이블(210)의 제3 위치에 저장된 제2 데이터를 복원된 위치 값에 대응하는 제2 테이블(220)의 제4 위치에 기입함으로써 제2 테이블(210)을 제1 테이블(220)의 복제 테이블로서 유지할 수 있다.
단계(560)에서, 제2 테이블(220)이 제1 테이블(210)의 복제 테이블로서 유지됨으로써, 테이블에 저장된 데이터의 신뢰성이 확보될 수 있다.
단계들(520 내지 560)은 저장 장치(100)가 비정상적으로 종료된 경우, 테이블을 복원하는 방법을 구성하는 단계들일 수 있다.
도 3을 참조하여 전술된 것과 같이, 도 3을 참조하여 전술된 테이블을 관리하는 방법은 본 실시예의 테이블을 복원하는 방법을 포함할 수 있다.
앞서 도 1 내지 도 4를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 6은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.
도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).
제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값(610)을 결정할 수 있다. 다수결의 원리는, 테이블(230)의 3 개 이상의 위치들에 기입된 값들 중 다수에 해당하는 값을 복원된 위치 값(610)으로 결정하는 것일 수 있다.
제어부(120)는 복원된 위치 값(610)에 기반하여 제1 테이블(120)을 복원할 수 있다. 말하자면, 제어부(120)는 다수결의 원리를 적용함으로써 결정된 복원된 위치 값(610)에 따라 도 5의 단계(550) 또는 단계(560)를 수행할 수 있다.
도 6은 도 1의 저장 장치(100)가 비정상적으로 종료되었을 때의 위치 테이블(230)에 기입된 값들 및 다수결의 원리가 적용됨으로써 복원된 위치 값(610)의 예시일 수 있다. 도 6에서는 3 개의 엔트리들을 포함하는 위치 테이블(230)을 도시한다.
여기서, I 는 제1 테이블(210)의 엔트리를 나타내는 인덱스 또는 상기 인덱스에 대응하는 값일 수 있다. 예컨대, I 는 0 이상의 정수 값일 수 있다. 또는, I 는 이진값일 수 있다.
또한, NULL 은 널 값을 나타낼 수 있다.
도 6과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 I 이고, 나머지 하나의 엔트리에 기입된 값은 널 값인 경우, 상술된 위치 테이블(230)에 대해 다수결의 원리가 적용됨으로써 복원된 위치 값(610)은 I 일 수 있다. 복원된 위치 값(610)이 널 값이 아니기 때문에, 제어부(120)는 단계(560)를 수행할 수 있다.
앞서 도 1 내지 도 5를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 7은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.
도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).
도 6을 참조하여 전술된 것과 마찬가지로, 도 7은 도 1의 저장 장치(100)가 비정상적으로 종료되었을 때의 도 2의 위치 테이블(230)에 기입된 값들 및 다수결의 원리가 적용됨으로써 복원된 위치 값(610)을 도시한다.
도 7과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 널 값이고, 나머지 하나의 엔트리에 기입된 값은 I 인 경우, 상술된 위치 테이블(230)에 대해 다수결의 원리가 적용됨으로써 복원된 위치 값(610)은 널 값일 수 있다. 복원된 위치 값(610)이 널 값이므로, 제어부(120)는 단계(550)를 수행할 수 있다.
앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 8은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.
도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).
제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 도 1의 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값을 복원된 위치 값(610)으로서 결정할 수 있다.
예컨대, 3 개의 엔트리들을 포함하는 위치 테이블(230)에 있어서, 3 개의 엔트리들에 대한 데이터의 기입은 위치 테이블(230)의 엔트리들 중 최좌측의 엔트리에서부터 순차적으로 수행됨을 고려할 수 있다.
제어부(120)가 도 3의 단계(340)를 수행한 경우, 위치 테이블(230)의 3 개의 엔트리의 각 엔트리에 기입된 값은 도 2의 제1 테이블(210)의 제1 위치를 나타내는 위치 값일 수 있다. 제어부(120)가 도 3의 단계(350)를 수행하는 경우, 위치 테이블(230)의 각 엔트리에 기입된 값은 널 값으로 갱신될 수 있다. 위치 테이블(230)의 각 엔트리에 기입된 값의 갱신은 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에서부터 순차적으로 수행될 수 있다.
말하자면, 저장 장치(100)가 비정상적으로 종료된 경우 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에 저장된 값이 널 값이면, 저장 장치(100)의 비정상적인 종료는 제어부(120)가 단계(350)를 수행하는 도중에 발생된 것으로 간주될 수 있다.
다시 말해, 도 8과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 I 이고, 나머지 하나의 엔트리에 기입된 값은 널 값인 경우라도, 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값이 널 값인 경우에는, 복원된 위치 값(610)은 널 값이 될 수 있다. 복원된 위치 값(610)이 널 값이므로 제어부(120)는 단계(550)를 수행할 수 있다.
앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
도 9은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.
도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).
도 8을 참조하여 상술된 것과 같이, 제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 도 1의 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값을 복원된 위치 값(610)으로서 결정할 수 있다.
제어부(120)가 도 3의 단계(350)를 수행한 경우, 위치 테이블(230)의 3 개의 엔트리의 각 엔트리에 기입된 값은 널 값일 수 있다. 이후 다시 제어부(120)가 도 3의 단계(330)를 수행하는 경우, 위치 테이블(230)의 각 엔트리에 기입된 값은 도 2의 제1 테이블(210)의 제1 위치를 나타내는 위치 값으로 갱신될 수 있다.
말하자면, 도 1의 저장 장치(100)가 비정상적으로 종료된 경우 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에 저장된 값이 I 라면, 저장 장치(100)의 비정상적인 종료는 제어부(120)가 단계(330)를 수행하는 도중에 발생된 것으로 간주될 수 있다.
다시 말해, 도 8과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 널 값이고, 나머지 하나의 엔트리에 기입된 값은 I 인 경우라도, 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값이 I 인 경우에는, 복원된 위치 값(610)은 I 가 될 수 있다. 복원된 위치 값(610)이 널 값이 아니므로 제어부(120)는 단계(560)를 수행할 수 있다.
앞서 도 1 내지 도 8을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100: 저장 장치
110: 비휘발성 메모리
120: 제어부
130: 캐시
210: 제1 테이블
220: 제2 테이블
230: 위치 테이블
110: 비휘발성 메모리
120: 제어부
130: 캐시
210: 제1 테이블
220: 제2 테이블
230: 위치 테이블
Claims (16)
- 제1 테이블을 관리하는 저장 장치에 있어서,
비휘발성 메모리; 및
상기 비휘발성 메모리 내에 상기 제1 테이블, 제2 테이블 및 위치 테이블을 저장하는 제어부
를 포함하고,
상기 제어부는,
상기 제1 테이블의 제1 위치에 데이터를 기입하는 단계, 상기 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제1 위치에 대응하는 상기 제2 테이블의 제2 위치에 상기 데이터를 기입하는 단계 및 상기 위치 테이블을 초기화하는 단계를 순차적으로 수행함으로써 상기 제1 테이블에 대한 업데이트를 수행하는, 저장 장치. - 제1항에 있어서,
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타내고, 상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일한, 저장 장치. - 제1항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화하는, 저장 장치. - 제3항에 있어서,
상기 제어부는 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하고, 상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는, 저장 장치. - 제1항에 있어서,
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입하는, 저장 장치. - 제5항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널(null) 값을 기입함으로써 상기 위치 테이블을 초기화하는, 저장 장치. - 제6항에 있어서,
상기 제어부는 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하고,
상기 제어부는 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는, 저장 장치. - 제7항에 있어서,
상기 제어부는 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하고, 상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는, 저장 장치. - 비휘발성 메모리 및 제어부를 포함하는 저장 장치가 제1 테이블을 관리하는 방법에 있어서,
상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 테이블의 제1 위치에 제1 데이터를 기입하는 단계;
상기 제어부가 상기 비휘발성 메모리 내에 저장된 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계;
상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 위치에 대응하는 제2 테이블의 제2 위치에 상기 제1 데이터를 기입하는 단계; 및
상기 제어부가 상기 위치 테이블을 초기화하는 단계
를 포함하는, 테이블을 관리하는 방법. - 제9항에 있어서,
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타내고, 상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일한, 테이블을 관리하는 방법. - 제9항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화하는, 테이블을 관리하는 방법. - 제11항에 있어서,
상기 제어부가 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계; 및
상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계
를 더 포함하는, 테이블을 관리하는 방법. - 제9항에 있어서,
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입하는, 테이블을 관리하는 방법. - 제13항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널(null) 값을 기입함으로써 상기 위치 테이블을 초기화하는, 테이블을 관리하는 방법. - 제14항에 있어서,
상기 제어부가 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하는 단계; 및
상기 제어부가 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는 단계
를 더 포함하는, 테이블을 관리하는 방법. - 제15항에 있어서,
상기 제1 테이블을 복원하는 단계는,
상기 제어부가 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계; 및
상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계
를 포함하는, 테이블을 관리하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130061514 | 2013-05-30 | ||
KR1020130061514 | 2013-05-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140142124A true KR20140142124A (ko) | 2014-12-11 |
KR101543861B1 KR101543861B1 (ko) | 2015-08-11 |
Family
ID=52459809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130134008A KR101543861B1 (ko) | 2013-05-30 | 2013-11-06 | 테이블을 관리하는 저장 장치 및 그 관리 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101543861B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160122618A (ko) * | 2015-04-14 | 2016-10-24 | 한양대학교 산학협력단 | 비휘발성 메모리의 메모리 누수 복구 방법 및 장치 |
WO2016204529A1 (ko) * | 2015-06-16 | 2016-12-22 | 한양대학교 산학협력단 | 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법 |
US11249849B2 (en) | 2019-09-06 | 2022-02-15 | SK Hynix Inc. | Memory controller and method of operating the same |
-
2013
- 2013-11-06 KR KR1020130134008A patent/KR101543861B1/ko not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160122618A (ko) * | 2015-04-14 | 2016-10-24 | 한양대학교 산학협력단 | 비휘발성 메모리의 메모리 누수 복구 방법 및 장치 |
WO2016204529A1 (ko) * | 2015-06-16 | 2016-12-22 | 한양대학교 산학협력단 | 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법 |
US11249849B2 (en) | 2019-09-06 | 2022-02-15 | SK Hynix Inc. | Memory controller and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
KR101543861B1 (ko) | 2015-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983955B2 (en) | Data unit cloning in memory-based file systems | |
US12093140B2 (en) | Data recovery method, apparatus, and solid state drive | |
US8601347B1 (en) | Flash memory device and storage control method | |
US9870165B2 (en) | Back-up and restoration of data between volatile and flash memory | |
CN111008156B (zh) | 存储设备和操作存储设备的方法 | |
TW202011195A (zh) | 映射表更新方法 | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
US9798734B2 (en) | Preserving redundancy in data deduplication systems by indicator | |
US20100205363A1 (en) | Memory device and wear leveling method thereof | |
US10942659B2 (en) | Persistent logical to virtual table | |
US20190278482A1 (en) | Data storage device backup | |
CN110058787B (zh) | 用于写入数据的方法、设备和计算机程序产品 | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
US20190324868A1 (en) | Backup portion of persistent memory | |
US8527733B2 (en) | Memory system | |
US20150339066A1 (en) | Non-volatile complement data cache | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
KR101543861B1 (ko) | 테이블을 관리하는 저장 장치 및 그 관리 방법 | |
US20140188823A1 (en) | Reducing fragmentation in compressed journal storage | |
US20190227708A1 (en) | Apparatus and Methods for Fast and Secure Storage of Data | |
US20140059291A1 (en) | Method for protecting storage device data integrity in an external operating environment | |
CN117149062A (zh) | 一种磁带损坏数据的处理方法以及计算装置 | |
US11487439B1 (en) | Utilizing host memory buffers for storage device recoveries | |
KR102145358B1 (ko) | 변경된 운영체제 환경에서 디스크의 데이터 무결성을 보호하는 방법 및 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체 | |
CN108255437B (zh) | 数据贮存装置及方法 |
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 | ||
LAPS | Lapse due to unpaid annual fee |