KR101543861B1 - Apparatus and method for managing table - Google Patents

Apparatus and method for managing table Download PDF

Info

Publication number
KR101543861B1
KR101543861B1 KR1020130134008A KR20130134008A KR101543861B1 KR 101543861 B1 KR101543861 B1 KR 101543861B1 KR 1020130134008 A KR1020130134008 A KR 1020130134008A KR 20130134008 A KR20130134008 A KR 20130134008A KR 101543861 B1 KR101543861 B1 KR 101543861B1
Authority
KR
South Korea
Prior art keywords
value
position value
data
location
writing
Prior art date
Application number
KR1020130134008A
Other languages
Korean (ko)
Other versions
KR20140142124A (en
Inventor
황태호
원유집
정재민
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Publication of KR20140142124A publication Critical patent/KR20140142124A/en
Application granted granted Critical
Publication of KR101543861B1 publication Critical patent/KR101543861B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error 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 테이블의 데이터의 신뢰성을 확보할 수 있다.A storage device for managing a table and a management method thereof are provided. The storage device of the embodiment provides the first table, and the reliability of the data written in the first table can be secured by using the second table replicating the first table. Further, by using the first table, the second table, and the position table, it is possible to secure the reliability of the data of the first table that is restored upon abnormal termination of the storage device.

Description

테이블을 관리하는 저장 장치 및 그 관리 방법{APPARATUS AND METHOD FOR MANAGING TABLE}[0001] APPARATUS AND METHOD FOR MANAGING TABLE [0002]

아래의 설명은 저장 장치에 관한 것으로, 특히 테이블을 관리하는 저장 장치에 관한 것이다.The following description relates to storage devices, particularly storage devices for managing tables.

비휘발성 메모리를 포함하는 컴퓨터 시스템에 있어서, 중앙 처리 장치(Central Processing Unit; CPU)에 의해 실행된 메모리 기입 명령에 의해 비휘발성 메모리에 데이터가 기입될 수 있다.In a computer system including a nonvolatile memory, data can be written to the nonvolatile memory by a memory write command executed by a central processing unit (CPU).

비휘발성 메모리에 기입되는 데이터는, 1 차적으로 CPU의 캐시에 기입될 수 있다. 이후, 캐시로부터 데이터가 기입된 캐시 라인이 방출될 때, 비로소 데이터는 휘발성 메모리에 기입될 수 있다. 이 때, 다수의 데이터의 연속적인 기입은, 캐시에 대해서는 프로그램에서 지정된 소기의 순서대로 수행될 수 있지만, 비휘발성 메모리에 대해서는 캐시 라인의 방출의 실제 시점에 따라 프로그램에서 지정된 것과는 다른 순서로 수행될 수 있다. Data written to the nonvolatile memory can be primarily written into the cache of the CPU. Thereafter, when the cache line to which data is written from the cache is released, the data can be written to the volatile memory. At this time, consecutive writing of a large number of data can be performed in a predetermined order specified in the program for the cache, but for non-volatile memory in a different order than that specified in the program according to the actual time of the release of the cache line .

따라서, 비휘발성 메모리에 데이터가 완전히 기입되기 전에 컴퓨터 시스템의 동작이 중단되는 경우(예컨대, 컴퓨터 시스템의 셧 다운) 데이터는 비휘발성 메모리에 올바르게 기입되지 않을 수 있다. 말하자면, 프로그램에서 지정된 값이 아닌 임의의 값을 갖는 데이터가 비휘발성 메모리에 기입될 수 있다. 또한, 비휘발성 메모리에 대한 테이터의 기입이 캐시를 경유하여 이루어지기 때문에, 컴퓨터 시스템의 동작의 중단 시, 논리적으로 더 먼저 기입되어야 할 데이터는 비휘발성 메모리에 기입되지 않고, 나중에 기입되어야 할 데이터만이 비휘발성 메모리에 기입되어 있을 수 있다.Thus, if the operation of the computer system is interrupted before the data is completely written to the non-volatile memory (e.g. shut down of the computer system), the data may not be correctly written to the non-volatile memory. That is to say, data having any value other than the specified value in the program can be written to the nonvolatile memory. In addition, since the writing of the data to the nonvolatile memory is made via the cache, when the operation of the computer system is interrupted, data to be written logically earlier is not written to the nonvolatile memory, and only data May be written in the nonvolatile memory.

컴퓨터 시스템이 비정상적인 동작의 중단으로부터 복구된 후, 컴퓨터 시스템이 상술된 비휘발성 메모리에 잘못 기입된 데이터를 그대로 사용하는 경우, 컴퓨터 시스템에서 오류가 발생할 수 있다.If the computer system uses the erroneously written data in the above-mentioned nonvolatile memory after the computer system has recovered from the interruption of the abnormal operation, an error may occur in the computer system.

상술된 문제를 해결하기 위해, 컴퓨터 시스템은 배터리 또는 대용량 커패시터(capacitor)와 같은 하드웨어 장치를 구비할 수 있다. 배터리 또는 커패시터 내에 저장된 여분의 전력을 사용함으로써, 컴퓨터 시스템의 전원의 차단 시 수행 중이던 데이터의 기입이 완료될 수 있고, 캐시에 기입된 데이터가 비휘발성 메모리로 방출될 수 있다.To solve the above-described problems, the computer system may comprise a hardware device such as a battery or a large-capacity capacitor. By using the extra power stored in the battery or the capacitor, the writing of the data which is being performed when the power of the computer system is cut off can be completed, and the data written in the cache can be released to the nonvolatile memory.

그러나, 배터리 또는 커패시터의 충전 및 방전의 횟수는 제한될 수 있다. 또한, 컴퓨터 시스템이 배터리 또는 커패시터를 구비하기 위해서는 추가적인 하드웨어 비용이 요구되고, 배터리 또는 커패시터에 고장이 발생할 가능성도 배제할 수 없다. 또한, 컴퓨터 시스템의 동작의 중단은 전원의 차단뿐만 아니라, 다양한 다른 원인들에 기인할 수 있다.However, the number of times of charging and discharging of the battery or the capacitor may be limited. Further, additional hardware costs are required for a computer system to have a battery or a capacitor, and the possibility of a failure of the battery or the capacitor can not be excluded. Also, the interruption of the operation of the computer system may be due to various other causes as well as the interruption of the power supply.

한국공개특허 제10-2013-0044657호(공개일 2013년 5월 3일)에는 파일 시스템 및 그 제어방법이 개시되어있다. 선행기술은 복수의 블록을 가지는 비휘발성의 제1 메모리부, 제1 메모리부의 복수 블록 중 어느 하나의 블록을 선택하고, 선택된 어느 하나의 블록이 유효 블록인지 판단하고, 어느 하나의 블록이 유효블록이면 어느 하나의 블록에 데이터 기입을 제어하고, 제1 메모리부의 복수 블록을 체크하여 복수 블록을 유효 블록과 불량 블록으로 구분하고, 구분된 유효 블록과 불량 블록에 어드레스를 매핑하여 어드레스 테이블을 생성하고, 생성된 어드레스 테이블의 로딩을 제어하는 제어부 및 제1 메모리부의 복수 블록에 대한 어드레스 테이블을 저장하는 휘발성의 제2 메모리부를 포함하는 파일 시스템을 개시한다.Korean Patent Publication No. 10-2013-0044657 (published on May 3, 2013) discloses a file system and a control method thereof. The prior art includes a non-volatile first memory unit having a plurality of blocks, a first memory unit selecting one of a plurality of blocks in the first memory unit, determining whether any one selected block is a valid block, , A plurality of blocks in the first memory unit are checked to divide the plurality of blocks into valid blocks and defective blocks, and an address table is generated by mapping addresses to the valid blocks and the defective blocks, A control unit for controlling loading of the generated address table, and a volatile second memory unit for storing an address table for a plurality of blocks in the first memory unit.

상기에서 설명된 정보는 단지 이해를 돕기 위한 것이며, 종래 기술의 일부를 형성하지 않는 내용을 포함할 수 있으며, 종래 기술이 통상의 기술자에게 제시할 수 있는 것을 포함하지 않을 수 있다.The information described above is for illustrative purposes only and may include content that does not form part of the prior art and may not include what the prior art has to offer to the ordinary artisan.

일 실시예는 테이블을 관리하는 저장 장치 및 그 관리 방법을 제공할 수 있다.One embodiment may provide a storage device for managing a table and a management method thereof.

일 실시예는 저장 장치의 비정상적인 종료 시 테이블을 복원하는 저장 장치 및 그 관리 방법을 제공할 수 있다.One embodiment may provide a storage device for restoring a table upon abnormal termination of a storage device and a management method thereof.

일 측면에 있어서, 제1 테이블을 관리하는 저장 장치에 있어서, 비휘발성 메모리 및 상기 비휘발성 메모리 내에 상기 제1 테이블, 제2 테이블 및 위치 테이블을 저장하는 제어부를 포함하고, 상기 제어부는, 상기 제1 테이블의 제1 위치에 데이터를 기입하는 단계, 상기 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제1 위치에 대응하는 상기 제2 테이블의 제2 위치에 상기 데이터를 기입하는 단계 및 상기 위치 테이블을 초기화하는 단계를 순차적으로 수행함으로써 상기 제1 테이블에 대한 업데이트를 수행하는, 저장 장치가 제공된다.In one aspect, a storage apparatus for managing a first table includes a nonvolatile memory and a control unit for storing the first table, the second table and the position table in the nonvolatile memory, Writing a first position value indicating the first position in the position table, writing the first position value in the second position in the second table corresponding to the first position, And performing initialization of the location table to sequentially update the first table.

상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다.The first location may represent a first entry that is one of the entries of the first table.

상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타낼 수 있다. The second location may represent a second entry that is one of the entries of the second table.

상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.The first index of the first entry and the second index of the second entry may be the same.

상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화할 수 있다. In the initializing step, the controller may initialize the position table by updating the first position value to a null value.

상기 제어부는 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원할 수 있다.The controller may restore the first table by replicating the contents of the second table to the first table when the second position value stored in the position table is a null value.

상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지할 수 있다.If the second position value is not a null value, the second data stored in a third position of the first table corresponding to the second position value using the second position value, The second table can be maintained as a duplicate table of the first table by writing to the fourth position of the second table.

상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입할 수 있다.In the step of writing the first position value, the control unit may write the first position value in each of three or more different positions of the position table.

상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.In the initializing step, the control unit may initialize the position table by writing a null value to each of the three or more positions.

상기 제어부는 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정할 수 있다.The controller may determine a restored position value by applying a majority rule to the values written to the three or more positions.

상기 제어부는 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원할 수 있다.The controller may restore the first table based on the restored position value.

상기 제어부는 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원할 수 있다.The controller may restore the first table by replicating the contents of the second table to the first table when the restored position value is a null value.

상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지할 수 있다.If the restored position value is not a null value, restoring the second data stored in the third position of the first table corresponding to the restored position value using the restored position value, The second table can be maintained as a duplicate table of the first table by writing to the fourth position of the second table.

다른 일 측면에 있어서, 비휘발성 메모리 및 제어부를 포함하는 저장 장치가 제1 테이블을 관리하는 방법에 있어서, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 테이블의 제1 위치에 제1 데이터를 기입하는 단계, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 위치에 대응하는 제2 테이블의 제2 위치에 상기 제1 데이터를 기입하는 단계 및 상기 제어부가 상기 위치 테이블을 초기화하는 단계를 포함하는, 테이블을 관리하는 방법이 제공된다.In another aspect, there is provided a method of managing a first table in a storage device including a non-volatile memory and a control section, the control section writing first data in a first location of the first table stored in the non-volatile memory Writing the first position value indicating the first position in the position table stored in the nonvolatile memory, and the control unit setting the first position value in the second table corresponding to the first position stored in the nonvolatile memory Writing the first data to a second location, and the control unit initializing the location table.

상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다. The first location may represent a first entry that is one of the entries of the first table.

상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.The second location indicates a second entry that is one of the entries in the second table and the first index of the first entry and the second index of the second entry may be the same.

상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화할 수 있다. In the initializing step, the controller may initialize the position table by updating the first position value to a null value.

상기 테이블을 관리하는 방법은, 상기 제어부가 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다.The method further comprises restoring the first table by replicating the contents of the second table to the first table when the second position value stored in the position table is a null value .

상기 테이블을 관리하는 방법은, 상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계를 더 포함할 수 있다.The method of managing the table may further include storing second data stored in a third position of the first table corresponding to the second position value using the second position value when the second position value is not a null value And holding the second table as a replica table of the first table by writing to a fourth position of the second table corresponding to the second position value.

상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입할 수 있다.In the step of writing the first position value, the control unit may write the first position value in each of three or more different positions of the position table.

상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.In the initializing step, the control unit may initialize the position table by writing a null value to each of the three or more positions.

상기 테이블을 관리하는 방법은, 상기 제어부가 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하는 단계를 더 포함할 수 있다.The method of managing the table may further include the step of the controller determining a restored position value by applying a majority rule to the values written in the three or more positions.

상기 테이블을 관리하는 방법은, 상기 제어부가 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다.The method of managing the table may further include the step of the controller restoring the first table based on the restored position value.

상기 테이블을 관리하는 방법은, 상기 제어부가 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계를 더 포함할 수 있다. The method of managing the table may further include restoring the first table by replicating the contents of the second table to the first table when the restored position value is a null value.

상기 테이블을 관리하는 방법은, 상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계를 더 포함할 수 있다.The method of managing the table may further include storing second data stored in a third position of the first table corresponding to the restored position value using the restored position value if the restored position value is not a null value, And holding the second table as a replica table of the first table by writing the fourth table in the fourth position of the second table corresponding to the restored position value.

데이터가 기입된 테이블의 복제 테이블을 저장함으로써, 테이블의 데이터의 신뢰성을 확보하는 저장 장치 및 그 관리 방법이 제공된다.There is provided a storage apparatus and a management method thereof for securing the reliability of data of a table by storing a replicated table of the table in which data is written.

데이터가 기입된 테이블의 위치의 위치 값을 저장하는 위치 테이블을 사용함으로써 저장 장치의 비정상적인 종료 후 복구되는 테이블의 데이터의 신뢰성을 확보하는 저장 장치 및 그 관리 방법이 제공된다.There is provided a storage apparatus and a management method for securing the reliability of data of a table restored after an abnormal termination of a storage apparatus by using a position table storing a position value of a position of a table in which data is written.

도 1은 일 실시예에 따른 저장 장치를 나타낸다.
도 2는 일 실시예에 따른 저장 장치가 관리하는 테이블들을 나타낸다.
도 3은 일 실시예에 따른 테이블을 관리하는 방법을 나타내는 흐름도이다.
도 4는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 5는 일 예에 따른 저장 장치의 재시작 방법을 나타내는 흐름도이다.
도 6은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 7은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 8은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
도 9은 일 예에 따른 복원된 위치 값을 결정하는 방법을 나타낸다.
1 shows a storage device according to an embodiment.
2 shows tables managed by a storage device according to an embodiment.
3 is a flow chart illustrating a method for managing a table according to one embodiment.
4 is a flowchart illustrating a method of restarting a storage device according to an exemplary embodiment of the present invention.
5 is a flowchart illustrating a method for restarting a storage device according to an exemplary embodiment of the present invention.
FIG. 6 illustrates a method for determining a reconstructed position value according to an example.
FIG. 7 illustrates a method for determining a reconstructed position value according to an example.
FIG. 8 illustrates a method for determining a reconstructed position value according to an example.
FIG. 9 illustrates a method for determining a reconstructed position value according to an example.

이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
In the following, embodiments will be described in detail with reference to the accompanying drawings. Like reference symbols in the drawings denote like elements.

실시예에는 다양한 변경이 가해질 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 실시예를 실시 형태에 대해 한정하려는 것이 아니며, 실시예는 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.Various modifications may be made to the embodiments and may have various embodiments, and specific embodiments are illustrated in the drawings and described in detail in the description. It is to be understood, however, that the intention is not to limit the embodiments to the embodiments, but to include all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

실시예에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 실시예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the examples are used only to illustrate specific embodiments and are not intended to limit the embodiments. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this embodiment belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.

또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
In the following description of the present invention with reference to the accompanying drawings, the same components are denoted by the same reference numerals regardless of the reference numerals, and redundant explanations thereof will be omitted. In the following description of the embodiments, a detailed description of related arts will be omitted if it is determined that the gist of the embodiments may be unnecessarily blurred.

도 1은 일 실시예에 따른 저장 장치를 나타낸다.1 shows a storage device according to an embodiment.

저장 장치(100)는 비휘발성 메모리(110), 제어부(120) 및 캐시(130)를 포함할 수 있다.The storage device 100 may include a non-volatile memory 110, a control unit 120, and a cache 130.

저장 장치(100)는 데이터를 저장하고, 저장된 데이터를 제공하는 장치일 수 있다 The storage device 100 may be a device that stores data and provides stored data

저장 장치(100)는 비휘발성 메모리(110)를 포함하는 메모리 칩일 수 있다. 예컨대, 저장 장치(100)는 범용 직렬 버스(Universal Serial Bus; USB) 메모리일 수 있다. The storage device 100 may be a memory chip including the nonvolatile memory 110. [ For example, the storage device 100 may be a universal serial bus (USB) memory.

또는, 비휘발성 메모리(110)는 플래시(flash) 메모리일 수 있다. Alternatively, the non-volatile memory 110 may be a flash memory.

또는, 비휘발성 메모리(110)는 하드 디스크 또는 SSD 일 수 있다. 저장 장치(100)는 하드 디스크 또는 SSD 등과 같은 저장부를 포함하는 컴퓨터 시스템일 수 있다.Alternatively, the non-volatile memory 110 may be a hard disk or an SSD. The storage device 100 may be a computer system including a storage such as a hard disk or an SSD.

저장 장치(100)는 저장 장치(100)에 저장된 데이터에 블록 단위 또는 바이트 단위로 접근할 수 있다. 여기서, 접근은 데이터의 기입(write) 또는 데이터의 독출(read)을 포함할 수 있다.The storage device 100 can access the data stored in the storage device 100 on a block-by-block or byte-by-byte basis. Here, the access may include a write of data or a read of data.

비휘발성 메모리(110)는 데이터를 저장하기 위한 반도체 장치일 수 있다. 예컨대, 비휘발성 메모리(110)는 플래시 메모리 기반의 저장 장치들일 수 있다.The non-volatile memory 110 may be a semiconductor device for storing data. For example, non-volatile memory 110 may be flash memory based storage devices.

비휘발성 메모리(110)에 저장된 데이터는 블록 단위 또는 바이트 단위로 접근될 수 있다.The data stored in the nonvolatile memory 110 may be accessed in units of blocks or bytes.

비휘발성 메모리(110)는 테이블을 관리할 수 있는 파일 시스템을 저장할 수 있다. 데이터는 비휘발성 메모리(110)에 저장된 테이블에 기입될 수 있다. 여기서, 테이블은 비휘발성 메모리(110)의 파일 시스템에서 제공하는 자료 구조일 수 있다.The non-volatile memory 110 may store a file system capable of managing tables. The data may be written to a table stored in the non-volatile memory 110. Here, the table may be a data structure provided in the file system of the nonvolatile memory 110. [

저장 장치(100)가 비정상적으로 종료하는 경우에도, 비휘발성 메모리(110)에 저장된 데이터는 보존될 수 있다. 말하자면, 저장 장치(100)의 전원이 차단되는 경우에도, 비휘발성 메모리(110)에 저장된 데이터의 영속성이 보장될 수 있다.Even if the storage device 100 abnormally terminates, the data stored in the nonvolatile memory 110 can be preserved. That is, even if the power of the storage device 100 is shut off, the persistence of the data stored in the nonvolatile memory 110 can be assured.

제어부(120)는 비휘발성 메모리(110) 또는 저장 장치(100)를 관리하는 장치일 수 있다.The control unit 120 may be a non-volatile memory 110 or a device that manages the storage device 100. [

제어부(120)는 비휘발성 메모리(110)에 저장된 데이터에 접근할 수 있다.The control unit 120 can access the data stored in the nonvolatile memory 110. [

예컨대, 제어부(120)는 디스크 컨트롤러, SSD 컨트롤러, 중앙 처리 장치, 보조 프로세서 또는 입출력(Input/Output; I/O) 프로세서일 수 있다.For example, the controller 120 may be a disk controller, an SSD controller, a central processing unit, a coprocessor, or an input / output (I / O) processor.

반면, 도 1에 도시된 것과는 달리, 제어부(120)는 비휘발성 메모리(110)의 일부일 수 있다. 예컨대, 제어부(120)는 메모리 칩 내의 메모리 컨트롤러 일 수 있다. 말하자면, 제어부(120)는 비휘발성 메모리(110)의 메모리 컨트롤러일 수 있다.1, the control unit 120 may be part of the non-volatile memory 110. The non- For example, the control unit 120 may be a memory controller in a memory chip. In other words, the control unit 120 may be a memory controller of the nonvolatile memory 110. [

제어부(120)는 비휘발성 메모리(110) 내의 파일 시스템을 관리할 수 있다.The control unit 120 can manage the file system in the nonvolatile memory 110. [

예컨대, 제어부(120)는, 파일 시스템의 데이터로서, 비휘발성 메모리(110)에 하나 이상의 테이블을 저장할 수 있다.For example, the control unit 120 may store one or more tables in the nonvolatile memory 110 as data of the file system.

제어부(120)는 비휘발성 메모리(110)에 저장된 테이블에 데이터를 기입할 수 있고, 비휘발성 메모리(110)에 저장된 테이블의 데이터를 독출할 수 있다.The control unit 120 can write data to the table stored in the nonvolatile memory 110 and can read the data stored in the table stored in the nonvolatile memory 110. [

캐시(130)는 데이터가 임시적으로 저장되는 메모리 장치일 수 있다. 예컨대, 캐시는 버퍼로서 동작하는 메모리 장치일 수 있다. The cache 130 may be a memory device in which data is temporarily stored. For example, the cache may be a memory device operating as a buffer.

예컨대, 캐시(130)는 레벨2(Level2; L2) 캐시일 수 있다. 또는, 캐시(130)는 디스크 캐시일 수 있다.For example, the cache 130 may be a Level 2 (L2) cache. Alternatively, the cache 130 may be a disk cache.

반면, 도시된 것과는 달리, 제어부(120)가 캐시(130)를 포함할 수도 있다. 예컨대, 캐시(130)는 레벨1(Level1; L1) 캐시 일 수 있다.On the other hand, unlike what is shown, the control unit 120 may include a cache 130. For example, the cache 130 may be a Level 1 (L1) cache.

제어부(120)는 캐시(130)에 직접 접근할 수 있다. 제어부(120)가 캐시(130)에 접근할 때의 접근 속도는 제어부(120)가 비휘발성 메모리(110)에 접근할 때의 접근 속도보다 더 빠를 수 있다.The control unit 120 can directly access the cache 130. [ The access speed when the control unit 120 accesses the cache 130 may be faster than the access speed when the control unit 120 accesses the nonvolatile memory 110. [

제어부(120)가 비휘발성 메모리(110)에 기입한 데이터는, 1 차적으로 캐시(130)에 저장될 수 있다. 캐시(130)는 라인 단위로 데이터를 방출함으로써 비휘발성 메모리(110)에 데이터를 기입할 수 있다. 캐시(130)로부터 방출되는 라인 단위의 데이터는 캐시 라인일 수 있다.The data written into the nonvolatile memory 110 by the control unit 120 can be primarily stored in the cache 130. [ The cache 130 can write data to the nonvolatile memory 110 by emitting data on a line-by-line basis. The line-by-line data emitted from the cache 130 may be a cache line.

데이터가 비휘발성 메모리(110)에 저장된 테이블에 실제로 기입되는 순서 또는 시점은 데이터를 포함하는 캐시 라인이 캐시(130)로부터 방출되는 순서 또는 시점에 따라 결정될 수 있다.An order or a point in time at which data is actually written to the table stored in the nonvolatile memory 110 may be determined according to the order or the time at which the cache line containing the data is released from the cache 130. [

데이터가 비휘발성 메모리(110)의 테이블에 기입되는 방법 및 테이블의 관리 방법은 후술될 도 2 및 도 3에서 더 자세하게 설명된다.
The manner in which data is written to the table of the non-volatile memory 110 and the method of managing the table will be described in more detail in FIGS. 2 and 3, which will be described later.

도 2는 일 실시예에 따른, 저장 장치가 관리하는 테이블들을 나타낸다.Figure 2 shows tables managed by a storage device, according to one embodiment.

도 1의 저장 장치(100)는 테이블을 관리할 수 있다.The storage device 100 of FIG. 1 may manage the table.

각 테이블은 하나 이상의 엔트리를 포함할 수 있다. 엔트리는 데이터가 기입될 수 있는 테이블 내의 위치 또는 공간일 수 있다.Each table may contain one or more entries. An entry may be a location or a space in a table where data can be written.

엔트리는 비휘발성 메모리(110) 내의 논리적 위치에 존재할 수 있다. 인접한 엔트리들이 존재하는 비휘발성 메모리(110) 내의 논리적 위치들의 각각은 서로 인접하거나 인접하지 않을 수 있다. 또한, 인접한 엔트리들이 존재하는 비휘발성 메모리(110) 내의 물리적인 위치들의 각각은 서로 인접하거나 인접하지 않을 수 있다.The entry may reside in a logical location within non-volatile memory 110. [ Each of the logical locations in the non-volatile memory 110 where adjacent entries are present may or may not be adjacent to each other. In addition, each of the physical locations in the non-volatile memory 110 in which adjacent entries are present may be contiguous or non-contiguous.

각 엔트리는 인덱스로서 식별될 수 있다. 인덱스는 테이블이 포함하는 엔트리들의 각각의 번호일 수 있다. 말하자면, 동일한 테이블 내의 서로 상이한 엔트리는 서로 상이한 인덱스로서 구분될 수 있다.Each entry can be identified as an index. The index may be the number of each of the entries the table contains. That is to say, different entries in the same table can be distinguished from each other by different indices.

도 1을 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 비휘발성 메모리(110)에 테이블을 저장할 수 있다.As described above with reference to FIG. 1, the controller 120 of FIG. 1 may store the table in the non-volatile memory 110.

제어부(120)는 비휘발성 메모리(110) 내에 제1 테이블(210), 제2 테이블(220) 및 위치 테이블(230)을 저장할 수 있다.The controller 120 may store the first table 210, the second table 220, and the location table 230 in the nonvolatile memory 110.

제1 테이블(210)은 프로그램의 데이터를 저장할 수 있다.The first table 210 may store data of the program.

제1 테이블(210)은 하나 이상의 엔트리들을 포함할 수 있다.The first table 210 may include one or more entries.

제1 테이블(210)이 포함하는 엔트리의 개수는 가변적일 수 있다. 예컨대, 제1 테이블(210)의 엔트리의 개수는 제1 테이블에 기입되는 데이터의 크기에 따라 변할 수 있다.The number of entries included in the first table 210 may be variable. For example, the number of entries in the first table 210 may vary depending on the size of data written in the first table.

제2 테이블(220)은 하나 이상의 엔트리들을 포함할 수 있다.The second table 220 may include one or more entries.

제어부(120)는 제1 테이블(210)의 내용을 제2 테이블(220)로 복제할 수 있다. 제2 테이블(220)은 제1 테이블(210)이 복제된 테이블일 수 있다. 이 때, 제2 테이블(220)이 포함하는 엔트리의 개수 및 제1 테이블(210)이 포함하는 엔트리의 개수는 동일할 수 있다. 말하자면, 동일한 인덱스를 갖는 제1 테이블(210)의 위치 및 제2 테이블(220)의 위치는 서로 대응할 수 있다.The control unit 120 may copy the contents of the first table 210 to the second table 220. [ The second table 220 may be a table in which the first table 210 is duplicated. In this case, the number of entries included in the second table 220 and the number of entries included in the first table 210 may be the same. That is, the positions of the first table 210 and the second table 220 having the same index can correspond to each other.

제1 테이블(210)의 제n 번째 인덱스를 갖는 엔트리에 기입된 데이터가 제2 테이블(220)의 제n 번째 인덱스를 갖는 엔트리에 기입됨으로써, 제2 테이블(220)은 제1 테이블(210)의 복제 테이블로서 유지될 수 있다. 여기서, n 은 1 이상 m 이하의 정수일 수 있다. m 은 엔트리들의 개수일 수 있다.The data written in the entry having the nth index of the first table 210 is written into the entry having the nth index of the second table 220 so that the second table 220 is stored in the first table 210, Lt; / RTI > Here, n may be an integer of 1 or more and m or less. m may be the number of entries.

위치 테이블(230)은 하나 이상의 엔트리들을 포함할 수 있다.The location table 230 may include one or more entries.

위치 테이블(230)의 엔트리는 데이터가 기입되는 제1 테이블(210)의 위치 값(또는, 인덱스)을 저장할 수 있다. 또는, 위치 테이블(230)의 엔트리에 저장되는 위치 값은 상기 인덱스에 대응하는 값일 수 있다.The entry in the location table 230 may store the location value (or index) of the first table 210 in which the data is written. Alternatively, the position value stored in the entry of the position table 230 may be a value corresponding to the index.

데이터가 제1 테이블(210) 및 제2 테이블(220)에 기입되는 방법 및 테이블의 관리 방법은 후술될 상세한 설명에서 더 자세하게 설명된다.The manner in which data is written to the first table 210 and the second table 220 and the method of managing the table are described in further detail in the detailed description to be described later.

앞서 도 1을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to FIG. 1 can be applied as it is, so a detailed description will be omitted below.

도 3은 일 실시예에 따른, 테이블을 관리하는 방법을 나타내는 흐름도이다.3 is a flow diagram illustrating a method for managing a table, according to one embodiment.

도 1 및 도 2를 참조하여 전술된 설명에 따르면, 도 2의 제1 테이블(210)에 기입되는 데이터의 순서는 도 1의 캐시(130)의 캐시 라인이 방출되는 순서에 따라 결정될 수 있다. 말하자면, 캐시(130)에 데이터가 기입되는 순서와 제1 테이블(210)에 데이터가 기입되는 순서는 서로 일치하지 않을 수 있다.According to the above description with reference to FIGS. 1 and 2, the order of the data written in the first table 210 of FIG. 2 may be determined according to the order in which the cache lines of the cache 130 of FIG. 1 are released. In other words, the order in which data is written in the cache 130 and the order in which data is written in the first table 210 may not coincide with each other.

도 1의 저장 장치(100)가 비정상적으로 종료하는 경우, 데이터가 제1 테이블(210)에 실제로 저장된 순서가 소기의 데이터의 기입이 요청된 순서와 상이하기 때문에, 제1 테이블(210)에 남아있는 데이터의 신뢰성이 보장되지 않을 수 있다. 여기서, 데이터의 기입의 요청은 제어부(120)가 데이터를 기입하는 것일 수 있다.If the storage device 100 of FIG. 1 abnormally terminates, the order in which the data actually stored in the first table 210 is different from the order in which the writing of the desired data is requested is left in the first table 210 The reliability of the data may not be ensured. Here, a request to write data may be that the control unit 120 writes data.

단계(310)에서, 제어부(120)는 데이터 기입 순서 보장 조건이 충족되는지 여부를 판단할 수 있다.In step 310, the control unit 120 can determine whether the data write order guarantee condition is satisfied.

데이터 기입 순서 보장 조건은 데이터가 제1 테이블(210)에 기입되는 순서를 소기의 데이터의 기입이 요청된 순서와 일치시키는 조건일 수 있다. 말하자면, 데이터 기입 순서 보장 조건의 충족될 경우, 제어부(120)에 의해 데이터의 기입이 요청된 순서에 따라 비휘발성 메모리(110)에 데이터가 실제로 저장될 수 있다. The data write order guarantee condition may be a condition that the order in which data is written in the first table 210 matches the order in which the write of the desired data is requested. That is to say, when the data write sequence guarantee condition is satisfied, data can be actually stored in the nonvolatile memory 110 according to the order in which data writing is requested by the control unit 120. [

데이터 기입 순서 보장 조건이 충족됨으로써, 제1 테이블(210)에 데이터가 기입되는 순서는 소기의 데이터의 기입이 요청된 순서와 일치될 수 있고, 제1 테이블(210)에 기입된 데이터의 신뢰성이 보장될 수 있다.The order in which the data is written in the first table 210 can be matched with the order in which the writing of the desired data is requested and the reliability of the data written in the first table 210 can be matched Can be guaranteed.

단계(315)에서, 데이터 기입 순서 보장 조건이 충족되지 않는 경우, 제어부(120)는 데이터 기입 순서 보장 조건을 충족시킬 수 있다.In step 315, when the data write sequence guarantee condition is not satisfied, the control unit 120 can satisfy the data write sequence guarantee condition.

예컨대, 제어부(120)는 캐시 정책을 라이트-스루(write-through)로 변경함으로써 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 캐시 정책을 라이트-스루로 변경함으로써, 데이터는 캐시(130) 및 제1 테이블(210)에 동시에 또는 함께 기입될 수 있다.For example, the control unit 120 may satisfy the data write sequence guarantee condition by changing the cache policy to write-through. Data can be written to the cache 130 and the first table 210 simultaneously or together, as the control unit 120 changes the cache policy to write-through.

또는, 제어부(120)는 캐시(130)를 비활성화 함으로써 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 캐시(130)를 비활성화 함으로써, 데이터는 캐시(130)를 경유하지 않고 제1 테이블(210)에 직접적으로 기입될 수 있다.Alternatively, the control unit 120 can satisfy the data write sequence guarantee condition by deactivating the cache 130. [ The control unit 120 deactivates the cache 130 so that the data can be directly written into the first table 210 without passing through the cache 130. [

또는, 제어부(120)는 제1 테이블(210)에 데이터를 기입한 후, 명시적인 캐시 플러시를 수행함으로써, 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 제1 테이블(210)에 데이터를 기입한 후 명시적인 캐시 플러시를 수행함으로써, 데이터는 캐시(130)에 기입된 순서대로 제1 테이블(210)에 기입될 수 있다.Alternatively, the control unit 120 may fill the data in the first table 210 and then perform an explicit cache flush to satisfy the data write order guarantee condition. The control unit 120 writes data to the first table 210 and then performs an explicit cache flush so that the data can be written to the first table 210 in the order written in the cache 130. [

또는, 제어부(120)는 데이터의 기입을 위해 넌-템포럴(non-temporal) 명령어를 사용함으로써, 데이터 기입 순서 보장 조건을 충족시킬 수 있다. 제어부(120)가 넌-템포럴(non-temporal) 명령어를 사용함으로써, 데이터는 캐시(130)를 경유하지 않고 제1 테이블(210)에 기입될 수 있다. 예컨대, 넌-템포럴 명령어는 MOVNTQ 및 MOVNTI 중 어느 하나일 수 있다.Alternatively, the control unit 120 can satisfy the data write sequence guarantee condition by using a non-temporal instruction for writing data. Data can be written to the first table 210 without passing through the cache 130 by using the non-temporal instruction. For example, the non-temporal instruction may be either MOVNTQ and MOVNTI.

또는, 저장 장치(100)는 화이트 버퍼(write buffer) 및/또는 스토어 버퍼(store buffer)를 더 포함할 수 있다. 화이트 버퍼 및/또는 스토어 버퍼를 통해 데이터 기입 순서 보장 조건이 충족될 수 있다. 화이트 버퍼 및/또는 스토어 버퍼는 캐시(130)로부터 제1 테이블(210)로 방출되는 데이터를 저장(hold)할 수 있다.Alternatively, the storage device 100 may further include a write buffer and / or a store buffer. The data write order guarantee condition can be satisfied through the white buffer and / or the store buffer. The white buffer and / or store buffer may hold data that is emitted from the cache 130 to the first table 210.

제어부(120)는 데이터 기입 순서 보장 조건이 충족됨에 따라 후술될 단계(320)를 수행할 수 있다.The control unit 120 may perform the step 320 described below as the data write sequence guarantee condition is satisfied.

단계(320)에서, 제어부(120)는 제1 테이블(210)의 제1 위치에 데이터를 기입할 수 있다. 단계(310)의 데이터 기입 순서 보장 조건이 충족됨에 따라, 단계(320)에서, 데이터는 제어부(120)의 기입에 따라 제1 테이블(210)의 제1 위치에 기입될 수 있다.In step 320, the control unit 120 may write data to the first location of the first table 210. [ The data may be written to the first location of the first table 210 in accordance with the writing of the control unit 120 in step 320 as the data write order guarantee condition of step 310 is satisfied.

단계(320)에서, 데이터는 제1 테이블(210)의 엔트리들 중 어느 하나에 기입될 수 있다. 데이터가 기입되는 제1 위치는 제1 테이블(210)의 엔트리들 중 하나인 제1 엔트리를 나타낼 수 있다.In step 320, the data may be written to any one of the entries in the first table 210. The first location at which data is written may indicate a first entry that is one of the entries in the first table 210.

단계(330)에서, 제어부(120)는 위치 테이블(230)에 제1 위치를 나타내는 제1 위치 값을 기입할 수 있다. 제1 위치 값은 위치 테이블(230)의 엔트리에 기입될 수 있다. In step 330, the control unit 120 may write a first position value in the position table 230 indicating the first position. The first position value may be written to an entry in the position table 230. [

제1 위치 값은 제1 위치가 나타내는 엔트리의 인덱스일 수 있다. 또는, 제1 위치 값은 제1 위치가 나타내는 엔트리의 인덱스에 대응하는 값일 수 있다.The first position value may be an index of the entry indicated by the first position. Alternatively, the first position value may be a value corresponding to the index of the entry indicated by the first position.

단계(330)에서, 제어부(120)는 위치 테이블(230)의 서로 상이한 3 개 이상의 위치들의 각각에 제1 위치 값을 기입할 수 있다. In step 330, the control unit 120 may write a first position value to each of three or more different positions of the position table 230. [

위치 테이블(230)의 서로 상이한 3 개 이상의 위치들은 위치 테이블(230)이 포함하는 서로 상이한 3 개 이상의 엔트리들일 수 있다. 예컨대, 제1 위치 값은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들의 각각에 기입될 수 있다.The three or more different positions of the position table 230 may be three or more different entries that the position table 230 includes. For example, the first position value may be written to each of three or more different entries of the position table 230. [

단계(340)에서, 제어부(120)는 제1 위치에 대응하는 제2 테이블(220)의 제2 위치에 데이터를 기입할 수 있다. 데이터가 기입되는 제2 위치는 제2 테이블(220)의 엔트리들 중 하나인 제2 엔트리를 나타낼 수 있다. In step 340, the controller 120 may write data to the second location of the second table 220 corresponding to the first location. The second location at which the data is written may indicate a second entry that is one of the entries in the second table 220.

서로 대응하는 위치들인 제1 위치 및 제2 위치는 제1 엔트리의 및 제2 엔트리를 각각 나타낼 수 있다. 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일할 수 있다.The first position and the second position, which are positions corresponding to each other, may indicate a first entry and a second entry, respectively. The first index of the first entry and the second index of the second entry may be the same.

단계(350)에서, 제어부(120)는 위치 테이블(230)을 초기화할 수 있다.In step 350, the control unit 120 may initialize the location table 230. [

제어부(120)는 위치 테이블(230)에 저장된 제1 위치 값을 갱신함으로써 위치 테이블(230)의 초기화할 수 있다. 예컨대, 위치 테이블(230)의 엔트리에 기입된 제1 위치 값이 널(NULL) 값으로 갱신됨으로써 위치 테이블(230)은 초기화될 수 있다. The control unit 120 can initialize the position table 230 by updating the first position value stored in the position table 230. [ For example, the position table 230 can be initialized by updating the first position value written in the entry of the position table 230 to a null value.

제어부(120)는 제1 위치 값을 널 값으로 갱신함으로써 위치 테이블(230)을 초기화할 수 있다.The control unit 120 can initialize the position table 230 by updating the first position value to a null value.

단계(350)에서, 제어부(120)는 3 개 이상의 위치들의 각각에 널 값을 기입함으로써 상기 위치 테이블을 초기화할 수 있다.In step 350, the control unit 120 may initialize the location table by writing a null value to each of three or more locations.

예컨대, 위치 테이블(230)의 3 개 이상의 엔트리들에 각각 기입된 제1 위치 값이 널 값으로 갱신됨으로써 위치 테이블(230)은 초기화될 수 있다.For example, the position table 230 can be initialized by updating the first position value written respectively in three or more entries of the position table 230 to null values.

제어부(120)는 전술된 단계들(320 내지 350)을 순차적으로 수행할 수 있다. 예컨대, 단계들(320 내지 350) 중 단계(320)가 최초로 수행되고 단계(350)가 마지막으로 수행될 수 있다.The control unit 120 may sequentially perform the steps 320 to 350 described above. For example, in step 320-350, step 320 may be performed first and step 350 may be performed last.

단계(350)가 완료된 후, 제어부(120)는 다시 단계(320)를 수행할 수 있다. 제어부(120)는 단계(310)의 데이터 기입 순서 보장 조건을 충족하는 데이터 세트가 제1 테이블(210)에 기입될 때마다, 단계들(320 내지 350)을 반복적으로 수행할 수 있다.After step 350 is completed, the controller 120 may perform step 320 again. The control unit 120 can repeatedly perform the steps 320 to 350 every time a data set satisfying the data write order guarantee condition of step 310 is written in the first table 210. [

단계들(320 내지 350)이 수행됨으로써, 제1 테이블(210), 제2 테이블(220) 및 위치 테이블(230)은 업데이트될 수 있다. 말하자면, 단계들(320 내지 350)은 테이블을 업데이트 하는 방법을 구성하는 단계들일 수 있다. By performing steps 320 to 350, the first table 210, the second table 220, and the location table 230 can be updated. That is to say, steps 320 to 350 may be steps constituting a method for updating the table.

저장 장치(100)에 의해 수행되는 테이블을 관리하는 방법은 상기의 테이블을 업데이트하는 방법을 포함할 수 있다. 또한, 저장 장치(100)가 수행하는 테이블을 관리하는 방법은 후술될 도 4 또는 도 5의 저장 장치(100)의 재시작 방법을 더 포함할 수 있다.A method of managing a table performed by the storage device 100 may include a method of updating the table. In addition, the method of managing the table performed by the storage device 100 may further include a method of restarting the storage device 100 of FIG. 4 or FIG. 5 to be described later.

테이블을 관리하는 방법은 결함 감내(fault tolerant)를 제공하는 테이블을 관리하는 방법일 수 있다.A method of managing a table can be a method of managing a table that provides fault tolerance.

앞서 도 1 내지 도 2를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to Figs. 1 and 2 can be applied as they are, so that a more detailed description will be omitted below.

도 4는 일 예에 따른, 저장 장치의 재시작 방법을 나타내는 흐름도이다.4 is a flow chart illustrating a method of restarting a storage device, according to an example.

도 4는 도 1의 저장 장치(100)가 정상적으로 또는 비정상적으로 종료된 경우, 저장 장치(100)를 재시작하는 방법을 나타낼 수 있다. 예컨대, 저장 장치(100)의 재시작 방법은 저장 장치(100)가 비정상적으로 종료된 경우에 제어부(120)가 도 1의 비휘발성 메모리(110)에 저장된 테이블을 복원하는 방법을 포함할 수 있다.FIG. 4 illustrates a method of restarting the storage device 100 when the storage device 100 of FIG. 1 is terminated normally or abnormally. For example, the method of restarting the storage device 100 may include a method by which the controller 120 restores the table stored in the nonvolatile memory 110 of FIG. 1 when the storage device 100 abnormally terminates.

단계(410)에서, 도 1의 제어부(120)는 저장 장치(100)의 종료가 비정상적인지 여부를 판단할 수 있다. 저장 장치(100)의 비정상적인 종료는, 예컨대, 제어부(120)가 도 3의 단계들(320 내지 350) 중 하나의 단계를 수행하는 도중에 저장 장치(100)의 전원이 갑자기 차단된 경우를 의미할 수 있다.In step 410, the controller 120 of FIG. 1 may determine whether the termination of the storage device 100 is abnormal. Abnormal termination of the storage device 100 may mean, for example, that the power of the storage device 100 is suddenly shut down while the controller 120 is performing one of the steps 320 to 350 of FIG. 3 .

저장 장치(100)의 종료가 정상적인 경우, 후술될 단계들(420 내지 450)은 수행되지 않을 수 있다. 말하자면, 후술될 단계들(420 내지 450)은 저장 장치(100)의 종료가 비정상적인 경우 수행될 수 있다. If the termination of storage device 100 is normal, steps 420-450, which will be described later, may not be performed. That is, the steps 420 to 450 to be described later may be performed when the end of the storage device 100 is abnormal.

저장 장치(100)의 종료가 비정상적인 경우, 단계(420)에서, 제어부(120)는 위치 테이블(230)에 저장된 제2 위치 값을 독출할 수 있다. 제2 위치 값은 데이터가 기입된 제1 테이블(210)의 엔트리를 나타내는 위치 값일 수 있다. 예컨대, 제2 위치 값은 도 3의 단계(330)의 제1 위치 값일 수 있다.If the termination of the storage device 100 is abnormal, in step 420, the controller 120 may read the second position value stored in the position table 230. The second position value may be a position value indicating an entry of the first table 210 in which data is written. For example, the second position value may be the first position value in step 330 of FIG.

단계(430)에서, 제어부(120)는 독출된 제2 위치 값이 널 값인지 여부를 판단할 수 있다. 독출된 제2 위치 값에 널 값인지 여부에 따라, 데이터가 저장된 제1 테이블(210) 및 제2 테이블(220) 중 어느 테이블에 저장된 데이터를 신뢰할 것인지가 결정될 수 있다. In step 430, the controller 120 may determine whether the read second position value is a null value. Whether or not the data stored in the first table 210 and the second table 220 in which the data is stored can be determined depending on whether the read second position value is a null value.

독출된 제2 위치 값이 널 값인 경우, 도 3의 단계(350)가 완료된 것으로 간주될 수 있다. 말하자면, 단계(350)가 수행된 후 다시 단계(320)가 수행되는 도중에 저장 장치(100)의 비정상적인 종료가 발생한 것으로 판단될 수 있다. 즉, 독출된 제2 위치 값이 널 값인 경우 제2 테이블(220)에 저장된 데이터는 신뢰할 수 있는 데이터일 수 있다.If the read second position value is a null value, then step 350 of FIG. 3 may be considered complete. That is, it can be determined that the abnormal termination of the storage device 100 occurs during the step 320 after the step 350 is performed. That is, when the read second position value is a null value, the data stored in the second table 220 may be reliable data.

단계(440)에서, 제어부(120)는 위치 테이블(230)에 저장된 제2 위치 값이 널 값일 경우 제2 테이블(220)의 내용을 제1 테이블(210)로 복제함으로써 제1 테이블(210)을 복원할 수 있다.The controller 120 copies the contents of the second table 220 to the first table 210 when the second position value stored in the position table 230 is a null value, Can be restored.

단계(440)에서, 제2 테이블(220)의 내용 전부가 제1 테이블(210)로 복제될 수 있다. 말하자면, 제2 테이블(220)에 기입된 전체 데이터가 상기의 전체 데이터가 기입된 제2 테이블의 위치들에 대응하는 제1 테이블(210)의 위치들에 기입될 수 있다. 또는, 제어부(210)는 제1 테이블(210)의 엔트리들 및 상기의 엔트리들에 대응하는 제2 테이블(220)의 엔트리들을 각각 비교할 수 있다. 서로 대응하는 제1 테이블(210)의 엔트리 및 제2 테이블(220)의 엔트리에 기입된 데이터가 서로 상이한 경우, 데이터를 일치시키기 위해 제어부(120)는 제2 테이블의 엔트리에 기입된 데이터를 대응되는 제1 테이블(210)의 엔트리에 기입할 수 있다.In step 440, all of the contents of the second table 220 may be replicated to the first table 210. That is to say, the entire data written in the second table 220 can be written to the positions of the first table 210 corresponding to the positions of the second table in which the entire data is written. Alternatively, the controller 210 may compare the entries of the first table 210 and the entries of the second table 220 corresponding to the entries, respectively. When the entries of the first table 210 and the second table 220 corresponding to each other are different from each other, the control unit 120 responds to the data written in the entries of the second table 220 to match the data In the entry of the first table 210 which is the first table.

독출된 제2 위치 값이 널 값이 아닌 경우, 도 3의 단계(330)가 완료된 것으로 간주될 수 있다. 말하자면, 단계(330)가 수행된 후 단계(340)가 수행되는 도중에 저장 장치(100)의 비정상적인 종료가 발생한 것으로 판단될 수 있다. 즉, 독출된 제2 위치 값이 널 값이 아닌 경우 제1 테이블(210)에 저장된 데이터는 신뢰할 수 있는 데이터일 수 있다.If the read second position value is not null, step 330 of FIG. 3 may be considered complete. That is, it can be determined that abnormal termination of the storage device 100 occurs during the step 340 after the step 330 is performed. That is, if the read second position value is not a null value, the data stored in the first table 210 may be reliable data.

단계(450)에서, 제어부(120)는 제2 위치 값이 널 값이 아닐 경우 제2 위치 값을 사용하여 제2 위치 값에 대응하는 제1 테이블(210)의 제3 위치에 저장된 제2 데이터를 제2 위치 값에 대응하는 제2 테이블(220)의 제4 위치에 기입함으로써 제2 테이블(220)을 상기 제1 테이블(210)의 복제 테이블로서 유지할 수 있다.If the second position value is not a null value, the controller 120 determines in step 450 whether the second data stored in the third position of the first table 210 corresponding to the second position value using the second position value To the fourth position of the second table 220 corresponding to the second position value, thereby maintaining the second table 220 as a replica table of the first table 210. [

제2 위치 값이 도 3의 단계(330)의 제1 위치 값인 경우, 제3 위치는 도 3의 단계(320)의 제1 위치일 수 있다. 또한, 제4 위치는 도 3의 단계(340)의 제2 위치일 수 있다.If the second position value is the first position value of step 330 of FIG. 3, then the third position may be the first position of step 320 of FIG. Also, the fourth position may be the second position in step 340 of FIG.

제2 테이블(220)이 제1 테이블(210)의 복제 테이블로서 유지됨으로써, 테이블에 저장된 데이터의 신뢰성이 확보될 수 있다.Since the second table 220 is maintained as the replicated table of the first table 210, the reliability of the data stored in the table can be secured.

단계들(420 내지 450)이 수행됨으로써 저장 장치(100)가 비정상적으로 종료된 경우 테이블의 데이터가 복원될 수 있다. 말하자면, 단계들(420 내지 450)은 저장 장치(100)가 비정상적으로 종료된 경우 테이블을 복원하는 방법을 구성하는 단계들일 수 있다.When the storage device 100 is abnormally terminated by performing the steps 420 to 450, the data of the table can be restored. That is, the steps 420 to 450 may be steps constituting a method of restoring a table when the storage device 100 abnormally terminates.

도 3을 참조하여 전술된 것과 같이, 도 3을 참조하여 전술된 테이블을 관리하는 방법은 본 실시예의 테이블을 복원하는 방법을 포함할 수 있다.As described above with reference to FIG. 3, the method of managing the table described above with reference to FIG. 3 may include a method of restoring the table of this embodiment.

앞서 도 1 내지 도 3을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described with reference to Figs. 1 to 3 can be applied as it is, and a detailed description will be omitted below.

도 5는 일 예에 따른, 저장 장치의 재시작 방법을 나타내는 흐름도이다.5 is a flowchart illustrating a method for restarting a storage device, according to an example.

도 4를 참조하여 전술된 설명에 따르면, 단계(410)에서, 도 1의 제어부(120)는 저장 장치(100)의 종료가 비정상적인지 여부를 판단할 수 있다.According to the above description with reference to FIG. 4, at step 410, the control unit 120 of FIG. 1 may determine whether the termination of the storage device 100 is abnormal.

도 3을 참조하여 전술된 설명에 따르면, 도 3의 단계(330)에서, 제1 테이블(210)의 데이터가 저장된 엔트리를 나타내는 위치 값은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들의 각각에 저장될 수 있다.3, in step 330 of FIG. 3, the position value indicating the entry in which the data of the first table 210 is stored is stored in the position table 230, Lt; / RTI >

도 1의 저장 장치(100)의 종료가 비정상적인 경우 단계(520)에서, 제어부(120)는 위치 테이블(230)에 기입된 값들을 독출할 수 있다. 독출되는 위치 테이블(230)에 기입된 값들의 각각은 위치 테이블(230)의 서로 상이한 3 개 이상의 엔트리들에 각각 저장된 위치 값일 수 있다.If the termination of the storage device 100 of FIG. 1 is abnormal, at step 520, the controller 120 may read the values written in the location table 230. Each of the values written in the read position table 230 may be a position value stored in each of three or more different entries of the position table 230, respectively.

단계(530)에서, 제어부(120)는 복원된 위치 값을 결정할 수 있다.In step 530, the control unit 120 may determine the restored position value.

복원된 위치 값은 단계(520)에서 독출된 위치 값들을 사용하여 결정될 수 있다. 단계(530)의 복원된 위치 값을 결정하는 방법은 후술될 도 6 내지 도 9에서 더 자세하게 설명된다.The recovered position value may be determined using the position values read in step 520. [ The method of determining the reconstructed position value of step 530 will be described in more detail in Figs. 6 to 9, which will be described later.

단계(540)에서, 제어부(120)는 복원된 위치 값이 널 값인지 여부를 판단할 수 있다. 독출된 위치 값이 널 값인지 여부에 따라, 데이터가 저장된 제1 테이블(210) 및 제2 테이블(220) 중 어느 테이블에 저장된 데이터를 신뢰할 것인지가 결정될 수 있다.In step 540, the controller 120 may determine whether the restored position value is a null value. Whether the data stored in the first table 210 or the second table 220 in which the data is stored can be determined depending on whether the read position value is a null value or not.

단계(550)에서, 제어부(120)는 복원된 위치 값이 널 값일 경우 제2 테이블(220)의 내용을 제1 테이블(210)로 복제함으로써 제1 테이블(210)을 복원할 수 있다.In step 550, the controller 120 may restore the first table 210 by replicating the contents of the second table 220 to the first table 210 when the restored position value is a null value.

단계(560)에서, 제어부(120)는 복원된 위치 값이 널 값이 아닐 경우 복원된 위치 값을 사용하여 복원된 위치 값에 대응하는 제1 테이블(210)의 제3 위치에 저장된 제2 데이터를 복원된 위치 값에 대응하는 제2 테이블(220)의 제4 위치에 기입함으로써 제2 테이블(210)을 제1 테이블(220)의 복제 테이블로서 유지할 수 있다.In step 560, if the restored position value is not a null value, the control unit 120 determines whether the second data stored in the third position of the first table 210 corresponding to the restored position value using the restored position value To the fourth position of the second table 220 corresponding to the restored position value, thereby maintaining the second table 210 as a duplicate table of the first table 220. [

단계(560)에서, 제2 테이블(220)이 제1 테이블(210)의 복제 테이블로서 유지됨으로써, 테이블에 저장된 데이터의 신뢰성이 확보될 수 있다.In step 560, the second table 220 is maintained as a replica table of the first table 210, so that the reliability of the data stored in the table can be secured.

단계들(520 내지 560)은 저장 장치(100)가 비정상적으로 종료된 경우, 테이블을 복원하는 방법을 구성하는 단계들일 수 있다.The steps 520 to 560 may be steps constituting a method of restoring a table when the storage device 100 abnormally terminates.

도 3을 참조하여 전술된 것과 같이, 도 3을 참조하여 전술된 테이블을 관리하는 방법은 본 실시예의 테이블을 복원하는 방법을 포함할 수 있다.As described above with reference to FIG. 3, the method of managing the table described above with reference to FIG. 3 may include a method of restoring the table of this embodiment.

앞서 도 1 내지 도 4를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to Figs. 1 to 4 can be applied as they are, so that a more detailed description will be omitted below.

도 6은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.6 illustrates a method for determining a reconstructed position value, according to an example.

도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).As described above with reference to FIG. 5, the control unit 120 of FIG. 1 may determine 530 the position value 610 recovered from the values stored in the position table 230 of FIG.

제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값(610)을 결정할 수 있다. 다수결의 원리는, 테이블(230)의 3 개 이상의 위치들에 기입된 값들 중 다수에 해당하는 값을 복원된 위치 값(610)으로 결정하는 것일 수 있다.The control unit 120 can determine the restored position value 610 by applying a majority rule to the values written in three or more positions of the position table 230. [ The majority rule may be to determine a value corresponding to a plurality of values written to three or more positions of the table 230 as the restored position value 610. [

제어부(120)는 복원된 위치 값(610)에 기반하여 제1 테이블(120)을 복원할 수 있다. 말하자면, 제어부(120)는 다수결의 원리를 적용함으로써 결정된 복원된 위치 값(610)에 따라 도 5의 단계(550) 또는 단계(560)를 수행할 수 있다.The control unit 120 may restore the first table 120 based on the restored position value 610. [ That is to say, the control unit 120 may perform the step 550 or the step 560 of FIG. 5 according to the restored position value 610 determined by applying the majority rule.

도 6은 도 1의 저장 장치(100)가 비정상적으로 종료되었을 때의 위치 테이블(230)에 기입된 값들 및 다수결의 원리가 적용됨으로써 복원된 위치 값(610)의 예시일 수 있다. 도 6에서는 3 개의 엔트리들을 포함하는 위치 테이블(230)을 도시한다.FIG. 6 may be an example of the restored position value 610 by applying the values written in the position table 230 when the storage device 100 of FIG. 1 is abnormally terminated and the majority rule. Figure 6 shows a location table 230 that includes three entries.

여기서, I 는 제1 테이블(210)의 엔트리를 나타내는 인덱스 또는 상기 인덱스에 대응하는 값일 수 있다. 예컨대, I 는 0 이상의 정수 값일 수 있다. 또는, I 는 이진값일 수 있다.Here, I may be an index indicating an entry of the first table 210 or a value corresponding to the index. For example, I may be an integer value equal to or greater than zero. Alternatively, I may be a binary value.

또한, NULL 은 널 값을 나타낼 수 있다. Also, NULL can represent a null value.

도 6과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 I 이고, 나머지 하나의 엔트리에 기입된 값은 널 값인 경우, 상술된 위치 테이블(230)에 대해 다수결의 원리가 적용됨으로써 복원된 위치 값(610)은 I 일 수 있다. 복원된 위치 값(610)이 널 값이 아니기 때문에, 제어부(120)는 단계(560)를 수행할 수 있다.As shown in FIG. 6, when the value written in the two entries of the three entries of the position table 230 is I and the value written in the other entry is the null value, The restored position value 610 may be I. Since the restored position value 610 is not a null value, the controller 120 may perform step 560. [

앞서 도 1 내지 도 5를 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to Figs. 1 to 5 may be applied as they are, so that a more detailed description will be omitted below.

도 7은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.7 illustrates a method for determining a reconstructed position value, according to an example.

도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).As described above with reference to FIG. 5, the control unit 120 of FIG. 1 may determine 530 the position value 610 recovered from the values stored in the position table 230 of FIG.

도 6을 참조하여 전술된 것과 마찬가지로, 도 7은 도 1의 저장 장치(100)가 비정상적으로 종료되었을 때의 도 2의 위치 테이블(230)에 기입된 값들 및 다수결의 원리가 적용됨으로써 복원된 위치 값(610)을 도시한다. Similar to what has been described above with reference to FIG. 6, FIG. 7 illustrates the values written in the location table 230 of FIG. 2 when the storage device 100 of FIG. 1 ends abnormally, 610 < / RTI >

도 7과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 널 값이고, 나머지 하나의 엔트리에 기입된 값은 I 인 경우, 상술된 위치 테이블(230)에 대해 다수결의 원리가 적용됨으로써 복원된 위치 값(610)은 널 값일 수 있다. 복원된 위치 값(610)이 널 값이므로, 제어부(120)는 단계(550)를 수행할 수 있다.As shown in FIG. 7, the value written in the two entries of the three entries of the position table 230 is a null value, and when the value written in the other entry is I, By applying the majority rule, the restored position value 610 may be a null value. Since the restored position value 610 is a null value, the controller 120 may perform step 550.

앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to Figs. 1 to 6 can be applied as they are, so that a more detailed description will be omitted below.

도 8은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.Figure 8 illustrates a method for determining a reconstructed position value, according to an example.

도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).As described above with reference to FIG. 5, the control unit 120 of FIG. 1 may determine 530 the position value 610 recovered from the values stored in the position table 230 of FIG.

제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 도 1의 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값을 복원된 위치 값(610)으로서 결정할 수 있다.The control unit 120 restores the values written to the position table 230 most recently after the storage apparatus 100 of FIG. 1 abnormally ends with respect to the values written in three or more positions of the position table 230 Can be determined as the position value 610 that has been set.

예컨대, 3 개의 엔트리들을 포함하는 위치 테이블(230)에 있어서, 3 개의 엔트리들에 대한 데이터의 기입은 위치 테이블(230)의 엔트리들 중 최좌측의 엔트리에서부터 순차적으로 수행됨을 고려할 수 있다.For example, in the position table 230 including three entries, it can be considered that the writing of data for the three entries is performed sequentially from the leftmost entry of the entries of the position table 230. [

제어부(120)가 도 3의 단계(340)를 수행한 경우, 위치 테이블(230)의 3 개의 엔트리의 각 엔트리에 기입된 값은 도 2의 제1 테이블(210)의 제1 위치를 나타내는 위치 값일 수 있다. 제어부(120)가 도 3의 단계(350)를 수행하는 경우, 위치 테이블(230)의 각 엔트리에 기입된 값은 널 값으로 갱신될 수 있다. 위치 테이블(230)의 각 엔트리에 기입된 값의 갱신은 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에서부터 순차적으로 수행될 수 있다. 3, the values written in the respective entries of the three entries of the position table 230 correspond to the positions indicating the first positions of the first table 210 in Fig. 2 Lt; / RTI > When the control unit 120 performs step 350 of FIG. 3, the value written in each entry of the position table 230 may be updated to a null value. Updating of the value written in each entry of the position table 230 may be performed sequentially from the leftmost entry of the entries of the position table 230. [

말하자면, 저장 장치(100)가 비정상적으로 종료된 경우 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에 저장된 값이 널 값이면, 저장 장치(100)의 비정상적인 종료는 제어부(120)가 단계(350)를 수행하는 도중에 발생된 것으로 간주될 수 있다.If the value stored in the leftmost entry of the location table 230 is a null value when the storage device 100 terminates abnormally, the abnormal termination of the storage device 100 may be terminated by the controller 120 in step 350 May be considered to have occurred during the execution of the < / RTI >

다시 말해, 도 8과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 I 이고, 나머지 하나의 엔트리에 기입된 값은 널 값인 경우라도, 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값이 널 값인 경우에는, 복원된 위치 값(610)은 널 값이 될 수 있다. 복원된 위치 값(610)이 널 값이므로 제어부(120)는 단계(550)를 수행할 수 있다.In other words, as shown in FIG. 8, even if the value written in the two entries of the three entries in the position table 230 is I and the value written in the other entry is a null value, If the value most recently written to the position table 230 after the abnormal termination is a null value, the restored position value 610 may be a null value. Since the restored position value 610 is a null value, the controller 120 may perform step 550.

앞서 도 1 내지 도 6을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described above with reference to Figs. 1 to 6 can be applied as they are, so that a more detailed description will be omitted below.

도 9은 일 예에 따른, 복원된 위치 값을 결정하는 방법을 나타낸다.9 illustrates a method for determining a reconstructed position value, according to an example.

도 5를 참조하여 전술된 것과 같이, 도 1의 제어부(120)는 도 2의 위치 테이블(230)에 저장된 값들로부터 복원된 위치 값(610)을 결정할 수 있다(530).As described above with reference to FIG. 5, the control unit 120 of FIG. 1 may determine 530 the position value 610 recovered from the values stored in the position table 230 of FIG.

도 8을 참조하여 상술된 것과 같이, 제어부(120)는 위치 테이블(230)의 3 개 이상의 위치들에 기입된 값들에 대해 도 1의 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값을 복원된 위치 값(610)으로서 결정할 수 있다.As described above with reference to Fig. 8, the control unit 120 determines whether the storage apparatus 100 of Fig. 1 has been most recently located after the storage apparatus 100 abnormally terminated for the values written in three or more positions of the position table 230 The value written in the table 230 can be determined as the restored position value 610. [

제어부(120)가 도 3의 단계(350)를 수행한 경우, 위치 테이블(230)의 3 개의 엔트리의 각 엔트리에 기입된 값은 널 값일 수 있다. 이후 다시 제어부(120)가 도 3의 단계(330)를 수행하는 경우, 위치 테이블(230)의 각 엔트리에 기입된 값은 도 2의 제1 테이블(210)의 제1 위치를 나타내는 위치 값으로 갱신될 수 있다.When the controller 120 performs step 350 of FIG. 3, the value written in each entry of the three entries of the position table 230 may be a null value. 3, the value written in each entry of the position table 230 is a position value indicating the first position of the first table 210 in FIG. 2 Can be updated.

말하자면, 도 1의 저장 장치(100)가 비정상적으로 종료된 경우 위치 테이블(230)의 엔트리들 중 최좌측 엔트리에 저장된 값이 I 라면, 저장 장치(100)의 비정상적인 종료는 제어부(120)가 단계(330)를 수행하는 도중에 발생된 것으로 간주될 수 있다.If the value stored in the leftmost entry of the entry in the location table 230 is I in the case where the storage device 100 of FIG. 1 abnormally terminates, abnormal termination of the storage device 100 may be terminated by the control section 120 May be considered to have occurred during the execution of step 330 of FIG.

다시 말해, 도 8과 같이 위치 테이블(230)의 3 개의 엔트리들 중 2 개의 엔트리들에 기입된 값은 널 값이고, 나머지 하나의 엔트리에 기입된 값은 I 인 경우라도, 저장 장치(100)가 비정상적으로 종료된 후 가장 최근에 위치 테이블(230)에 기입된 값이 I 인 경우에는, 복원된 위치 값(610)은 I 가 될 수 있다. 복원된 위치 값(610)이 널 값이 아니므로 제어부(120)는 단계(560)를 수행할 수 있다.In other words, as shown in FIG. 8, the value written in the two entries of the three entries in the position table 230 is a null value, and even if the value written in the other entry is I, The restored position value 610 may be I if the value most recently written to the position table 230 is I after the abnormal termination of the position value 610. [ Since the restored position value 610 is not a null value, the controller 120 may perform the step 560.

앞서 도 1 내지 도 8을 참조하여 설명된 기술적 내용들이 그대로 적용될 수 있으므로, 보다 상세한 설명은 이하 생략하기로 한다.
The technical contents described with reference to Figs. 1 to 8 can be applied as they are, so that a more detailed description will be omitted below.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

100: 저장 장치
110: 비휘발성 메모리
120: 제어부
130: 캐시
210: 제1 테이블
220: 제2 테이블
230: 위치 테이블
100: Storage device
110: Nonvolatile memory
120:
130: Cache
210: first table
220: second table
230: Position table

Claims (16)

제1 테이블을 관리하는 저장 장치에 있어서,
비휘발성 메모리; 및
상기 비휘발성 메모리 내에 데이터의 크기에 따라 가변적으로 변하는 상기 제1 테이블, 상기 제1 테이블에 저장된 데이터를 포함하는 제2 테이블 및 상기 제1 테이블의 위치 값을 저장하는 위치 테이블을 저장하는 제어부
를 포함하고,
상기 제어부는,
상기 제1 테이블의 제1 위치에 데이터를 기입하는 단계, 상기 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계, 상기 제1 위치에 대응하는 상기 제2 테이블의 제2 위치에 상기 데이터를 기입하는 단계 및 상기 위치 테이블을 초기화하는 단계를 순차적으로 수행함으로써 상기 제1 테이블에 대한 업데이트를 수행하고,
상기 초기화하는 단계를 수행한 이후에, 상기 저장 장치가 비정상적으로 종료되는 경우를 고려하여 상기 위치 테이블에 저장된 제2 위치 값을 독출하고, 상기 독출된 제2 위치 값에 대한 복원된 위치 값이 널 값인지 여부에 따라 제2 테이블의 데이터를 제1 테이블로 복원하거나 또는 제2 테이블을 상기 제1 테이블의 복제 테이블로 유지하는, 저장 장치.
A storage apparatus for managing a first table,
Nonvolatile memory; And
A nonvolatile memory for storing a first table which varies in accordance with the size of data, a second table including data stored in the first table, and a position table for storing a position value of the first table,
Lt; / RTI >
Wherein,
Writing data at a first location in the first table, writing a first location value in the location table indicating the first location, storing data at a second location in the second table corresponding to the first location, Performing the updating on the first table by sequentially performing the steps of writing the data and initializing the position table,
The second position value stored in the position table is read in consideration of the case where the storage device abnormally ends after performing the initializing step, and if the restored position value of the read second position value is not null, And restores the data of the second table to the first table or holds the second table as the replicated table of the first table.
제1항에 있어서,
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타내고, 상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일한, 저장 장치.
The method according to claim 1,
Wherein the first location represents a first entry that is one of the entries in the first table and the second location represents a second entry that is one of the entries in the second table and the first index of the first entry And wherein the second index of the second entry is the same.
제1항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화하는, 저장 장치.
The method according to claim 1,
Wherein the control unit initializes the position table by updating a first position value to a NULL value in the initializing step.
제3항에 있어서,
상기 제어부는 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하고, 상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는, 저장 장치.
The method of claim 3,
The control unit restores the first table by copying the contents of the second table to the first table when the second position value stored in the position table is a null value, and when the second position value is not a null value, By writing the second data stored in the third position of the first table corresponding to the second position value to the fourth position of the second table corresponding to the second position value using the second position value, 2 table as the replica table of the first table.
제1항에 있어서,
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입하는, 저장 장치.
The method according to claim 1,
And in the step of writing the first position value, the control unit writes the first position value into each of three or more different positions of the position table.
제5항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널(null) 값을 기입함으로써 상기 위치 테이블을 초기화하는, 저장 장치.
6. The method of claim 5,
Wherein in the initializing step, the control unit initializes the position table by writing a null value to each of the three or more positions.
제6항에 있어서,
상기 제어부는 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하고,
상기 제어부는 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는, 저장 장치.
The method according to claim 6,
Wherein the controller determines a restored position value by applying a majority rule to the values written in the three or more positions,
Wherein the controller restores the first table based on the restored position value.
제7항에 있어서,
상기 제어부는 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하고, 상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는, 저장 장치.
8. The method of claim 7,
Wherein the controller restores the first table by replicating the contents of the second table to the first table when the restored position value is a null value, and when the restored position value is not a null value, By writing the second data stored in the third position of the first table corresponding to the restored position value to the fourth position of the second table corresponding to the restored position value, As a duplicate table of the first table.
비휘발성 메모리 및 제어부를 포함하는 저장 장치가 제1 테이블을 관리하는 방법에 있어서,
상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 테이블의 제1 위치에 제1 데이터를 기입하는 단계;
상기 제어부가 상기 비휘발성 메모리 내에 저장된 위치 테이블에 상기 제1 위치를 나타내는 제1 위치 값을 기입하는 단계;
상기 제어부가 상기 비휘발성 메모리 내에 저장된 상기 제1 위치에 대응하는 제2 테이블의 제2 위치에 상기 제1 데이터를 기입하는 단계; 및
상기 제어부가 상기 위치 테이블을 초기화하는 단계
를 포함하고,
상기 위치 테이블을 초기화한 이후에, 상기 저장 장치는,
상기 저장 장치가 비정상적으로 종료되는 경우를 고려하여 상기 위치 테이블에 저장된 제2 위치 값을 독출하고, 상기 독출된 제2 위치 값에 대한 복원된 위치 값이 널 값인지 여부에 따라 제2 테이블의 데이터를 제1 테이블로 복원하거나 또는 제2 테이블을 상기 제1 테이블의 복제 테이블로 유지하는, 테이블을 관리하는 방법.
A method of managing a first table of a storage device comprising a non-volatile memory and a control unit,
Writing the first data in a first location of the first table stored in the non-volatile memory;
Writing the first position value indicating the first position in a position table stored in the nonvolatile memory;
Writing the first data to a second location in a second table corresponding to the first location stored in the nonvolatile memory; And
Wherein the control unit initializes the position table
Lt; / RTI >
After initializing the location table,
The second position value stored in the position table is read in consideration of the case where the storage device abnormally terminates, and if the restored position value of the read second position value is a null value, To the first table, or to maintain the second table as the replica table of the first table.
제9항에 있어서,
상기 제1 위치는 상기 제1 테이블의 엔트리들 중 하나인 제1 엔트리를 나타내고, 상기 제2 위치는 상기 제2 테이블의 엔트리들 중 하나인 제2 엔트리를 나타내고, 상기 제1 엔트리의 제1 인덱스 및 상기 제2 엔트리의 제2 인덱스는 동일한, 테이블을 관리하는 방법.
10. The method of claim 9,
Wherein the first location represents a first entry that is one of the entries in the first table and the second location represents a second entry that is one of the entries in the second table and the first index of the first entry And the second index of the second entry is the same.
제9항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 제1 위치 값을 널(NULL) 값으로 갱신함으로써 상기 위치 테이블을 초기화하는, 테이블을 관리하는 방법.
10. The method of claim 9,
Wherein the controller initializes the position table by updating a first position value to a null value in the initializing step.
제11항에 있어서,
상기 제어부가 상기 위치 테이블에 저장된 제2 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계; 및
상기 제2 위치 값이 널 값이 아닐 경우 상기 제2 위치 값을 사용하여 상기 제2 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 제2 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계
를 더 포함하는, 테이블을 관리하는 방법.
12. The method of claim 11,
Restoring the first table by copying the contents of the second table to the first table when the second position value stored in the position table is a null value; And
If the second position value is not a null value, the second data stored in a third position of the first table corresponding to the second position value using the second position value, Retaining the second table as a replica table of the first table by writing to a fourth location of the second table
≪ / RTI >
제9항에 있어서,
상기 제1 위치 값을 기입하는 단계에서 상기 제어부는 상기 위치 테이블의 서로 상이한 3 개 이상의 위치들의 각각에 상기 제1 위치 값을 기입하는, 테이블을 관리하는 방법.
10. The method of claim 9,
Wherein the control unit writes the first position value to each of three or more different positions of the position table in the step of writing the first position value.
제13항에 있어서,
상기 초기화하는 단계에서 상기 제어부는 상기 3 개 이상의 위치들의 각각에 널(null) 값을 기입함으로써 상기 위치 테이블을 초기화하는, 테이블을 관리하는 방법.
14. The method of claim 13,
And in the initializing step, the control unit initializes the position table by writing a null value to each of the three or more positions.
제14항에 있어서,
상기 제어부가 상기 3 개 이상의 위치들에 기입된 값들에 대해 다수결의 원리를 적용함으로써 복원된 위치 값을 결정하는 단계; 및
상기 제어부가 상기 복원된 위치 값에 기반하여 상기 제1 테이블을 복원하는 단계
를 더 포함하는, 테이블을 관리하는 방법.
15. The method of claim 14,
Determining a restored position value by applying a majority rule to the values written to the three or more positions by the control unit; And
Wherein the controller restores the first table based on the restored position value
≪ / RTI >
제15항에 있어서,
상기 제1 테이블을 복원하는 단계는,
상기 제어부가 상기 복원된 위치 값이 널 값일 경우 상기 제2 테이블의 내용을 상기 제1 테이블로 복제함으로써 상기 제1 테이블을 복원하는 단계; 및
상기 복원된 위치 값이 널 값이 아닐 경우 상기 복원된 위치 값을 사용하여 상기 복원된 위치 값에 대응하는 상기 제1 테이블의 제3 위치에 저장된 제2 데이터를 상기 복원된 위치 값에 대응하는 상기 제2 테이블의 제4 위치에 기입함으로써 상기 제2 테이블을 상기 제1 테이블의 복제 테이블로서 유지하는 단계
를 포함하는, 테이블을 관리하는 방법.
16. The method of claim 15,
Wherein the step of restoring the first table comprises:
Restoring the first table by copying contents of the second table to the first table when the restored position value is a null value; And
If the restored position value is not a null value, restoring the second data stored in the third position of the first table corresponding to the restored position value using the restored position value, Retaining the second table as a replica table of the first table by writing to a fourth location of the second table
Gt; a < / RTI > table.
KR1020130134008A 2013-05-30 2013-11-06 Apparatus and method for managing table KR101543861B1 (en)

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 KR20140142124A (en) 2014-12-11
KR101543861B1 true KR101543861B1 (en) 2015-08-11

Family

ID=52459809

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130134008A KR101543861B1 (en) 2013-05-30 2013-11-06 Apparatus and method for managing table

Country Status (1)

Country Link
KR (1) KR101543861B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101669762B1 (en) * 2015-04-14 2016-10-26 한양대학교 산학협력단 Method and apparatus for recovering leakage of nonvolatile memory
WO2016204529A1 (en) * 2015-06-16 2016-12-22 한양대학교 산학협력단 Memory storage device and method for preventing data loss after power loss
KR20210029384A (en) 2019-09-06 2021-03-16 에스케이하이닉스 주식회사 Memory controller and operating method thereof

Also Published As

Publication number Publication date
KR20140142124A (en) 2014-12-11

Similar Documents

Publication Publication Date Title
US8601347B1 (en) Flash memory device and storage control method
US20230016555A1 (en) Data recovery method, apparatus, and solid state drive
US9870165B2 (en) Back-up and restoration of data between volatile and flash memory
US20190324859A1 (en) Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive
US8799745B2 (en) Storage control apparatus and error correction method
US10521148B2 (en) Data storage device backup
US8074113B2 (en) System and method for data protection against power failure during sector remapping
US20130282673A1 (en) Preserving redundancy in data deduplication systems by indicator
CN110058787B (en) Method, apparatus and computer program product for writing data
US20150378858A1 (en) Storage system and memory device fault recovery method
CN111008156A (en) Storage device and method of operating storage device
US20150074336A1 (en) Memory system, controller and method of controlling memory system
US8527733B2 (en) Memory system
US20150339066A1 (en) Non-volatile complement data cache
KR101543861B1 (en) Apparatus and method for managing table
JP4956230B2 (en) Memory controller
US20210318739A1 (en) Systems and methods for managing reduced power failure energy requirements on a solid state drive
KR101548452B1 (en) Method and apparatus for recovering metadata in electronic device based on non-volatile memeory
US20190324868A1 (en) Backup portion of persistent memory
JP2006099802A (en) Storage controller, and control method for cache memory
US20140059291A1 (en) Method for protecting storage device data integrity in an external operating environment
CN117149062A (en) Processing method and computing device for damaged data of magnetic tape
US11487439B1 (en) Utilizing host memory buffers for storage device recoveries
US7536507B1 (en) Methods, systems, and computer program products for preserving atomic writes using leaves and bitmaps
US9594792B2 (en) Multiple processor system

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