KR20170031004A - 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들 - Google Patents

데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들 Download PDF

Info

Publication number
KR20170031004A
KR20170031004A KR1020160003336A KR20160003336A KR20170031004A KR 20170031004 A KR20170031004 A KR 20170031004A KR 1020160003336 A KR1020160003336 A KR 1020160003336A KR 20160003336 A KR20160003336 A KR 20160003336A KR 20170031004 A KR20170031004 A KR 20170031004A
Authority
KR
South Korea
Prior art keywords
data
memory location
address
entry
physical
Prior art date
Application number
KR1020160003336A
Other languages
English (en)
Other versions
KR102437777B1 (ko
Inventor
저스틴 존스
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170031004A publication Critical patent/KR20170031004A/ko
Application granted granted Critical
Publication of KR102437777B1 publication Critical patent/KR102437777B1/ko

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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • EFIXED CONSTRUCTIONS
    • E06DOORS, WINDOWS, SHUTTERS, OR ROLLER BLINDS IN GENERAL; LADDERS
    • E06BFIXED OR MOVABLE CLOSURES FOR OPENINGS IN BUILDINGS, VEHICLES, FENCES OR LIKE ENCLOSURES IN GENERAL, e.g. DOORS, WINDOWS, BLINDS, GATES
    • E06B7/00Special arrangements or measures in connection with doors or windows
    • E06B7/28Other arrangements on doors or windows, e.g. door-plates, windows adapted to carry plants, hooks for window cleaners
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47LDOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
    • A47L1/00Cleaning windows
    • EFIXED CONSTRUCTIONS
    • E06DOORS, WINDOWS, SHUTTERS, OR ROLLER BLINDS IN GENERAL; LADDERS
    • E06BFIXED OR MOVABLE CLOSURES FOR OPENINGS IN BUILDINGS, VEHICLES, FENCES OR LIKE ENCLOSURES IN GENERAL, e.g. DOORS, WINDOWS, BLINDS, GATES
    • E06B3/00Window sashes, door leaves, or like elements for closing wall or like openings; Layout of fixed or moving closures, e.g. windows in wall or like openings; Features of rigidly-mounted outer frames relating to the mounting of wing frames
    • E06B3/32Arrangements of wings characterised by the manner of movement; Arrangements of movable wings in openings; Features of wings or frames relating solely to the manner of movement of the wing
    • E06B3/34Arrangements of wings characterised by the manner of movement; Arrangements of movable wings in openings; Features of wings or frames relating solely to the manner of movement of the wing with only one kind of movement
    • E06B3/42Sliding wings; Details of frames with respect to guiding
    • E06B3/46Horizontally-sliding wings
    • E06B3/4636Horizontally-sliding wings for doors
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1088Scrubbing in RAID systems with parity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 장치는 프로세서 및 프로세서와 연결되고, 프로세서에 의한 실행을 위한 인스트럭션들을 저장하는 메모리를 포함하되, 인스트럭션들이 수행될 때, 인스트럭션들은 프로세서가 제 1 데이터 및 제 1 데이터로부터 얻어진 제 2 데이터를 포함하는 인코딩 데이터를 수신하도록 하고, 인스트럭션들은 제 1 데이터를 제 1 물리 어드레스를 갖는 제 1 메모리 위치에 송신하고, 제 2 데이터를 제 2 물리 어드레스를 갖는 제 2 메모리 위치에 송신하고, 제 1 메모리 위치는 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하는 제 1 엔트리를 이용하여 엑세스 가능하고, 제 2 메모리 위치는 제 2 논리 주소를 제 2 물리 주소에 맵핑하는 제 2 엔트리를 이용하여 엑세스 가능하고, 제 1 메모리 위치로부터 제 1 데이터를 읽기 위한 요청은 제 2 메모리 위치로부터 제 2 데이터가 읽혀지는 것을 유발하고, 제 1 데이터의 정확도는 제 2 데이터를 이용하여 확인 가능하다.

Description

데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들{METHODS AND SYSTEMS TO DETECT SILENT CORRUPTIONOF DATA}
본 발명은 시스템들 및 동작 방법들에 관한 것으로, 더 상세하게는 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들에 관한 것이다.
통상적인 SSD(solid state drive, device 또는 disk), 예를 들어 플래시 메모리 타입의 SSD는 블록들로 데이터를 저장한다. 각각의 블록은 몇 개의 페이지들을 포함한다. SSD는 논리 블록 어드레스들(LBAs)을 이용하여 선형적으로 다뤄진다. 맵핑 테이블은 논리 또는 가상 주소들을 물리 주소들로 맵핑한다. 맵핑 테이블은 데이터 요청으로 특정된 어드레스를 효과적으로 SSD에서 데이터의 정확한 물리 주소로 변환한다.
SSD의 블록에 저장된 데이터의 기존 버전이 업데이트되면, 데이터의 새로운(업데이트된) 버전은 다른 블록에 쓰여지고, 데이터의 이전(기존) 버전은 첫번째 블록에서 변경되지 않는다. 데이터의 새로운 버전이 저장될 때, 데이터의 현재(가장 최근의) 버전의 적절한 위치를 정확하게 확인할 수 있도록 맵핑 테이블이 업데이트된다. 첫번째 블록의 데이터는 삭제되거나 일정 기간 동안 발생되지 않을 수 있는 다른 새로운 데이터로 바꿔지기 전까지는 기존의 데이터를 유지한다.
SSD의 데이터 무결성은 다양한 기술들을 이용하여 유지된다. 오류 정정 코드(ECC, error correction code)는 하드웨어 에러들의 결과로 읽기 에러들을 방지한다. 순환 중복 검사(CRC, cyclic redundancy check)는 데이터가 SSD로부터 읽혀질 때 반환되는 데이터가 SSD에 쓰여진 데이터와 동일함을 보증한다.
다른 기술들은 데이터가 올바른 위치로부터 보유되는지를 확인하려고 하고, 데이터의 현재 버전이 보유되는지를 확인하려고 한다. 즉, 위의 예에서, 첫 번째 블록의 데이터의 이전 버전을 대신하여 두 번째 블록으로부터 데이터의 현재 버전이 보유되는지를 확인하는 것을 돕기 위해서, 기술들이 채용된다. 이러한 기술들은 대부분의 경우에 효과적이지만, “사일런트 커럽션”으로 알려진 데이터 손상의 종류를 감지하지 못할 수 있다. 사일런트 커럽션으로 인해, 데이터 무결성의 손상이 감지되지 않을 수 있고, 따라서, 때로는 데이터가 실제로 무결하지 않는 경우에도 데이터가 유효한 것으로 나타날 수 있다.
더 구체적으로, 소프트 에러들(soft errors) 또는 싱글 이벤트 업셋들(SEU, single event upsets)과 같은 드문 경우가 있을 수 있다. 소프트 에러들(soft errors) 또는 싱글 이벤트 업셋들(SEUs)은 데이터의 새로운 버전이 저장될 때, 맵핑 테이블이 적절하게 업데이트되는 것을 방해하는 것을 의미한다. 예를 들어, 싱글 이벤트 업셋(SEU)은 광범위한 사건의 결과이거나 업데이트 과정을 방해하거나 교란하는 우주선(cosmic-ray)의 결과일 수 있다.
만약 맵핑 테이블이 적절하게 업데이트되지 않는 경우, 맵핑 테이블은 우연히 데이터 세트의 이전 버전을 가리킬 수 있고, 또는 삭제된 위치를 가리키거나 해당 위치에 이전에 저장된 데이터와 관련이 없는 다른 데이터를 포함하는 위치를 가리킬 수 있다. 결과적으로, 특정 데이터 세트에 대한 요청은 잘못된 위치에 매핑될 것이고, 실제로 원하는 데이터를 대신하여 잘못된 위치의 데이터가 읽혀지고 반환될 것이다. 순환 중복 검사(CRC)는 반환된 데이터가 정확하다는 것을 나타낼 수 있지만 반환된 데이터가 실제로 요구된 데이터라는 것을 나타내지는 못하기 때문에, 순환 중복 검사(CRC)와 같은 기술들은 잘못된 데이터가 반환되는 것을 감지할 수 없다. 그러므로, 사용자(예를 들어, 호스트 또는 응용 프로그램)는 반환된 데이터가 자신이 원했던 데이터인지를 모르는 상태로 반환된 데이터를 사용할 것이다. 이것은 사이런트 커럽션(silent corruption)으로 언급되는 데이터 손상의 한 종류이다.
예를 들어, 데이터가 업데이트될 때마다 관심 데이터의 중복 세트들(예를 들어 3 세트까지)을 생성함으로써, 사일런트 커럽션이 감지될 수 있다. 데이터가 사용될 때, 데이터의 두 세트(제 1 세트, 제 2 세트)는 읽혀지고 비교될 수 있다. 만약 그것들이 일치하지 않는 경우, 제 3 세트는 나머지 두 세트가 최근의 데이터인지를 결정하기 위해 사용될 수 있다. 그러나, 이러한 접근은 데이터를 저장하기 위해 요구되는 메모리 자원들을 상당히 증가시킬 수 있다. 그리고, 많은 수의 트랜잭션들과 매우 큰 데이터 세트들(때때로, “빅데이터”라고 함)을 고려하면, 여분의 읽기 및 쓰기 그리고 데이터 세트들의 비교는 프로세싱 자원들 및 대역폭의 부담을 증가시킨다.
본 발명의 목적은 데이터의 사일런트 커럽션을 감지하기 위해 관심 데이터(data of interst) 및 관심 데이터에 대한 다이제스트(digest)를 각각 저장하는 시스템들 및 그것의 동작 방법들을 제공하는데 있다.
본 발명의 실시 예에 따른 동작 방법은, 제 1 데이터 및 제 1 데이터로부터 얻어진 제 2 데이터를 포함하는 인코딩 정보를 수신하는 단계, 제 1 어드레스와 관련된 제 1 메모리 위치의 제 1 데이터를 저장하는 단계, 제 2 어드레스와 관련된 제 2 메모리 위치의 제 2 데이터를 저장하는 단계, 제 1 어드레스를 결정하기 위해 이용되는 제 1 정보를 저장하는 단계 및 제 2 어드레스를 결정하기 위해 이용되는 제 2 정보를 저장하는 단계를 포함하되, 제 2 데이터는 제 1 데이터의 정확도를 결정하기 위한 것이고, 제 1 정보를 이용하여 제 1 데이터를 엑세스하는 것은 제 2 정보를 이용하여 제 2 데이터를 엑세스하는 것을 유발시킨다.
본 발명의 실시 예에 따른 장치는 프로세서 및 프로세서와 연결되고, 프로세서에 의한 실행을 위한 인스트럭션들을 저장하는 메모리를 포함하되, 인스트럭션들이 수행될 때, 인스트럭션들은 프로세서가 제 1 데이터 및 제 1 데이터로부터 얻어진 제 2 데이터를 포함하는 인코딩 데이터를 수신하도록 하고, 인스트럭션들은 제 1 데이터를 제 1 물리 어드레스를 갖는 제 1 메모리 위치에 송신하고, 제 2 데이터를 제 2 물리 어드레스를 갖는 제 2 메모리 위치에 송신하고, 제 1 메모리 위치는 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하는 제 1 엔트리를 이용하여 엑세스 가능하고, 제 2 메모리 위치는 제 2 논리 주소를 제 2 물리 주소에 맵핑하는 제 2 엔트리를 이용하여 엑세스 가능하고, 제 1 메모리 위치로부터 제 1 데이터를 읽기 위한 요청은 제 2 메모리 위치로부터 상기 제 2 데이터가 읽혀지는 것을 유발하고, 제 1 데이터의 정확도는 상기 제 2 데이터를 이용하여 확인 가능하다.
본 발명의 실시 예에 따른 동작 방법은, 제 1 어드레스를 갖는 제 1 메모리 위치로부터 데이터를 읽는 단계, 제 2 어드레스를 갖는 제 2 메모리 위치로부터 다이제스트(digest)를 읽는 단계 및 다이제스트를 이용하여 데이터의 유효성을 판단하는 단계를 포함하되, 제 1 메모리 위치는 제 1 맵핑 테이블 엔트리에 의해 인덱스되고, 제 2 메모리 위치는 제 2 맵핑 테이블 엔트리에 의해 인덱스된다.
본 발명의 실시 예에 따르면, 각 데이터에 대한 분리된 맵 엔트리들(map entries)을 이용하여 관심 데이터(data of interest) 및 관심 데이터에 대한 다이제스트(digest)를 각각 저장함으로써, 여분의 스토리지 장치들을 추가하거나 존재하는 메모리 또는 프로세싱 자원들 또는 대역폭에 상당한 부담을 주지 않으면서도 사일런트 커럽션(silent corruption)을 감지할 수 있는 효율적인 시스템들 및 그것의 동작 방법들을 제공하는데 있다.
도 1은 본 발명에 따른 실시 예들이 구현된 스토리지 장치의 예시적인 블록도를 나타낸다.
도 2는 본 발명에 따른 실시 예의 스토리지 장치에 의해 수신된 인코딩 데이터의 예를 보여준다.
도 3은 본 발명의 실시 예들이 구현된 장치의 블록도를 나타낸다.
도 4는 본 발명의 실시 예들이 구현된 시스템 또는 네트워크의 블록도를 나타낸다.
도 5는 본 발명의 실시 예에 따른 데이터를 저장하는 방식의 예를 나타내는 블록도이다.
도 6은 본 발명의 실시 예에 따른 데이터를 저장하는 또 다른 방식의 예를 나타내는 블록도이다.
도 7a 및 도 7b는 본 발명의 실시 예에 따른 1개의 맵핑 테이블 사용의 예들을 나타낸다.
도 8a 및 도 8b는 본 발명의 실시 예에 따른 2개의 맵핑 테이블 사용의 예들을 나타낸다.
도 9 및 도 10은 본 발명에 따른 실시 예들의 데이터를 저장하고 엑세스하는 컴퓨터 실행 방법들의 예들의 순서도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명에 따른 실시 예들이 구현된 스토리지 장치의 예시적인 블록도를 나타낸다. 실시 예로, 스토리지 장치(100)는 솔리드 스테이트 디바이스, 디스크 또는 드라이브(SSD)이다. 도 1의 실시 예에서, 인코딩 데이터(50)는 호스트 장치(미도시)의 인터페이스로부터 버퍼(110)에 의해 수신된다. 예를 들어, 호스트 인터페이스는 NVMe(non-volatile memory express)일 수 있다. 또는 예를 들어, 호스트 인터페이스는 직렬 또는 병렬 ATA(Advanced Technology Attachment) 인터페이스, PCI(Peripheral Component Interconnect) 익스프레스 인터페이스(PCIe) 또는 직렬 또는 병렬 SCSI(Small Computer System Interface) 인터페이스일 수 있다. 그러나, 본 발명은 이러한 예들에 한정되는 것은 아니다.
도 1의 실시 예에서, 휘발성 메모리(125)는 맵핑 테이블을 저장하기 위해 사용될 수 있다. 이 경우, 맵핑 테이블은 호스트에 의해 사용되는 가상 또는 논리 어드레스들을 스토리지 장치(100)의 물리 어드레스들, 특히 불휘발성 메모리(130)의 물리적인 위치들에 대한 어드레스들과 맵핑시킨다. 실시 예로, 비록 불휘발성 메모리(130)는 노어(Nor) 기반의 플래시 메모리 또는 다른 종류의 불휘발성 매체들을 기반으로 구현될 수 있으나, 불휘발성 메모리(130)는 낸드(Nand) 기반의 플래시 메모리로도 구현될 수 있다. 일반적으로, 불휘발성 메모리(130)는 데이터를 영구적으로 저장한다.
컨트롤러(120)는 컴퓨터로 판독 가능한 인스트럭션들을 수행할 수 있는 임의의 프로세싱 장치를 광범위하게 포함할 수 있다. 예를 들어, 컴퓨터로 판독 가능한 인스트럭션들은 도 9 및 도 10과 관련되어 묘사된 동작들과 관련된 인스트럭션들일 수 있다. 예를 들어, 컨트롤러(120)는 ASIC(application-specific intergrated circuit)로 구현된 감소된 인스트럭션 세트 프로세서일 수 있다. 진단 기능, 캐시 기능 그리고 보안 기능들을 수행하고, 불휘발성 메모리(130)를 어드레스하고, 맵핑 테이블들을 관리하고, 하기에 서술되거나 통용되는 다른 기능들을 수행하기 위하여, 컨트롤러(120)는 코드(예를 들어, 펌웨어)를 실행한다.
도 1의 스토리지 장치(100)는 지금까지 보여지고 서술된 것들 이상의 다른 구성요소들을 포함할 수 있다. 그리고, 막 서술된 구성요소들은 지금까지 서술된 기능들뿐만 아니라 다른 기능들을 수행할 수도 있다.
도 2는 본 발명에 따른 실시 예의 스토리지 장치에 의해 수신된 인코딩 데이터의 예를 보여준다. 도 1 및 도 2를 참고하면, 인코딩 데이터(50)는 제 1 데이터(210)를 포함한다. 실시 예로, 제 1 데이터(210)는 정보의 512 바이트까지 포함한다. 그러나, 본 발명이 이에 한정되는 것은 아니다. 예를 들어, 정보의 4096 바이트 및 8192 바이트로 제한되지 않는, 데이터의 다양한 사이즈가 지원된다.
또한, 인코딩 데이터(50)는 제 2 데이터(220)를 포함한다. 예를 들어, 제 2 데이터(220)는 다이제스트(digest) 또는 보호 정보(protection information)로 언급될 수 있다. 다이제스트(220)는 제 1 데이터(210)로부터 얻어지거나, 제 1 데이터를 이용하고, 그리고, 제 1 데이터(210)의 유효성을 확인하기 위해 사용될 수 있다. 다이제스트(220)는 제 1 데이터(210)와 연관되거나, 제 1 데이터(210)에 첨부될 수 있다. 실시 예로, 다이제스트(220)는 정보의 8 바이트까지 포함한다.
실시 예로, 다이제스트(220)는 2 바이트까지 될 수 있는 보호 값(guard value)을 포함한다. 언급된 바와 같이, 보호 값은 제 1 데이터(210)로부터 얻어지거나, 제 1 데이터(210)를 사용하고, 제 1 데이터(210)의 유효성을 확인하기 위해 사용될 수 있다. 예를 들어, 보호 값은 순환 중복 검사(CRC) 값이거나 검사합(checksum)일 수 있다. 실시 예로, 다이제스트(220)는 데이터 무결성 확장(DIX, data integrity extension)일 수 있다. 예를 들어, 다이제스트(220)는 4 바이트의 참조 값(reference value)과 2 바이트의 어플리케이션 값(application value)을 포함한다.
도 3은 본 발명에 따른 실시 예들이 구현된 장치들 또는 컴퓨터 시스템의 블록도를 나타낸다. 컴퓨터 시스템(300)은 임의의 단일 또는 멀티 프로세서를 갖고, 컴퓨터로 판독 가능한 인스트럭션들을 수행할 수 있는 컴퓨팅 장치 또는 시스템을 포함한다. 예를 들어, 인스트럭션들은 도 8 및 도 9의 동작들과 연관된다. 본 발명의 가장 기본적인 구현으로, 컴퓨터 시스템(300)은 적어도 하나의 프로세싱 유닛(예를 들어, 프로세서(310))과 적어도 하나의 메모리(예를 들어, 메모리(320))를 포함할 수 있다.
도 3의 프로세서(310)는 일반적으로 임의의 종류 또는 형태를 갖는 프로세싱 유닛 또는 데이터를 프로세싱하거나 인스트럭션들을 해석하고 실행하는 회로를 나타낸다. 메모리(320)는 일반적으로 임의의 종류 또는 형태를 갖는 휘발성 또는 불휘발성 스토리지 장치 또는 데이터 및/또는 컴퓨터로 판독 가능한 인스트럭션들을 저장할 수 있는 매체를 나타낸다. 메모리(320)의 예들은 랜덤 엑세스 메모리(RAM), 읽기 전용 메모리(ROM), 플래시 메모리 또는 다른 종류의 적절한 메모리 장치를 포함할 수 있다.
또한, 컴퓨터 시스템(300)은 프로세서(310) 및 시스템 메모리(320)에 추가적인 구성 요소들을 포함할 수 있다. 예를 들어, 컴퓨터 시스템(300)은 입출력(I/O) 장치(미도시) 및 통신 인터페이스(330)을 포함할 수 있다. 통신 인터페이스(330)는 임의의 종류 또는 형태를 갖는 유선 또는 무선 통신 장치를 나타내거나, 컴퓨터 시스템(300)과 하나 또는 그 이상의 장치들 사이에 인터넷과 같은 통신망을 통해 통신을 가능하게 하는 어답터를 광범위하게 나타낸다.
도 3의 실시 예에 있어서, 컴퓨터 시스템(300)은 적어도 2개의 스토리지 장치들(331, 332)을 포함한다. 실시 예로, 스토리지 장치들(331, 332)는 도 1의 스토리지 장치(100)와 같은 SSD들일 수 있다.
도 4는 본 발명에 따른 실시 예들이 구현된 장치들(컴퓨터 시스템들)의 시스템 또는 네트워크의 블록도는 보여준다. 도 4의 실시 예들에 따르면, 네트워크(450)는 컴퓨터 시스템(300) 및 다른 컴퓨터 시스템(400)를 포함한다. 네트워크(450)는 일반적으로 임의의 유선(광섬유 포함) 또는 무선 전기통신 또는 컴퓨터 네트워크를 나타낸다. 예를 들어, 컴퓨터 네트워크는 인트라넷(intranet), 광역 네트워크(WAN, wide area network), 근거리 통신망(LAN, local area network), 개인 영역 네트워크(PAN, personal area network), 스토리지 영역 네트워크(SAN, storage area network), PCIe의 스위치들 및 장치들의 네트워크를 포함할 수 있으며, 또한 이에 한정되는 것이 아니다. 네트워크(450)는 라우터들 및 스위치들과 같은 다른 종류의 장치들뿐만 아니라 추가적인 컴퓨터 시스템들을 포함할 수 있다.
가장 기본적인 구성으로, 컴퓨터 시스템(400)은 적어도 하나의 프로세싱 유닛(예들 들어, 프로세서(410)), 적어도 하나의 메모리(예를 들어, 메모리(420)) 그리고 통신 인터페이스(430)를 포함할 수 있다. 예를 들어, 통신 인터페이스(430)는 위에 언급된 컴퓨터 시스템(300)의 구성 요소와 유사하다. 컴퓨터 시스템(400)은 도 4에 도시되고 설명된 것뿐만 아니라 추가적인 구성요소들을 포함할 수 있다. 도 4의 예로, 컴퓨터 시스템(400)은 적어도 하나의 스토리지 장치(431)를 포함한다. 실시 예로, 스토리지 장치(431)는 도 1의 스토리지 장치(100)와 같은 SSD일 수 있다.
네트워크(450)는 분산 또는 공유 스토리지 시스템(예로, 네트워크 연결 스토리지(NAS) 시스템 또는 클러스터)을 포함하거나 그것의 일부를 포함할 수 있다. 이 경우, 분산 또는 공유 스토리지 시스템은 많은 NAS 장치들(예로, 컴퓨터 시스템들(300, 400) 또는 스토리지 장치들(331, 332, 431))을 포함할 수 있다. 이 경우, NAS 장치들은 네트워크를 통해 파일 기반 데이터 스토리지 서비스들(file-based data storage services)을 다른 장치들(고객들, 예를 들어 어플리케이션 서버들)로 제공할 수 있다. 이러한 스토리지 서비스들은 빅데이터라고 주로 언급되는 매우 큰 데이터 세트들의 저장, 관리, 유지를 포함할 수 있다.
예를 들어, 네트워크(450)는 온라인 거래 프로세싱(OLTP, online transaction processing) 시스템을 포함하거나 그것의 일부를 포함할 수 있다. 일반적으로, 온라인 거래 프로세싱(OLTP) 시스템은 거래 데이터의 데이터 베이스를 저장하고 관리한다. 도 2의 제 1 데이터(210)의 경우, 거래 데이터는 은행, 항공사, 보험 회사, 의료 서비스 및 소매 유통 업체에 의해 사용되는 거래와 연관된 데이터일 수 있다. 예를 들어, 데이터 베이스 관리 시스템(DBMS, database management system) 또는 분산 데이터 베이스 관리 시스템(DDBMS, distributed DBMS)은 컴퓨터 시스템들(예로, 컴퓨터 시스템들(300, 400))의 클러스터간의 데이터 베이스를 분할하거나 OLTP 시스템의 스토리지 장치들(예로, 스토리지 장치들(331, 332, 431))을 분할할 수 있다.
일반적으로, 본 발명에 따른 실시 예에서, 도 2의 제 1 데이터(210)는 제 1 어드레스를 갖는 제 1 메모리 위치에 저장되고, 다이제스트(220)는 제 2 어드레스를 갖는 제 2 메모리 위치에 저장된다. 실시 예로, 제 1 메모리 위치와 제 2 물리 위치는 단일 물리 장치(예, 동일 SSD)에 있다. 다른 실시 예로, 제 1 메모리 위치와 제 2 메모리 위치는 다른 물리 장치들(예, 다른 SSD들)에 있다. 후자의 실시 예에서, 다른 물리 장치들은 동일한 장치들 또는 동일한 컴퓨터 시스템의 구성요소들일 수 있다. 또는 다른 물리 장치들은 다른 장치들 또는 다른 컴퓨터 시스템들의 구성요소들일 수 있다.
도 5는 본 발명에 따른 실시 예들에서 데이터(210) 및 다이제스트(220)를 저장하는 방식의 예를 도시한다. 위의 언급된 바에 따라, 데이터(210)는 보호받고, 유지되어야 하는 데이터이고, 다이제스트(220)는 데이터(210)와 연관된다.
도 5의 실시 예로, 제 1 및 제 2 메모리 위치들은 다른 물리 스토리지 장치들에 있다. 데이터(210)는 제 1 스토리지 장치(501)에 저장되고, 다이제스트(220)는 제 2 스토리지 장치(502)에 저장된다. 제 1 및 제 2 스토리지 장치들(501, 502)은 동일한 장치 또는 컴퓨터 시스템에 있을 수 있거나, 다른 장치 또는 컴퓨터 시스템에 있을 수 있다. 도 5의 예에서, 제 1 스토리지 장치(501)는 도 3의 스토리지 장치(331)일 수 있고, 제 2 스토리지 장치(502)는 도 3의 스토리지 장치(332)일 수 있다. 또는 제 1 스토리지 장치(501)는 도 4의 스토리지 장치(331)일 수 있고, 제 2 스토리지 장치(502)는 도 4의 스토리지 장치(431)일 수 있다.
도 6은 본 발명에 따른 실시 예들에서 데이터(210) 및 다이제스트(220)를 저장하는 방식의 다른 예를 도시한다. 도 6의 실시 예에서, 제 1 메모리 위치 및 제 2 메모리 위치들은 동일한 물리 장치(예 스토리지 장치(331))에 있다. 즉, 도 6의 예에서, 데이터(210) 및 다이제스트(220)들은 동일한 장치에 저장된다. 실시 예로, 데이터(210) 및 다이제스트(220)들은 스토리지 장치의 인접한 위치들에 저장된다.
일반적으로, 본 발명의 실시 예들에 따르면, 제 1 메모리 위치(제 1 메모리 위치의 제 1 어드레스를 결정하기 위한)를 결정하기 위해 유용한 제 1 정보는 생성되고 저장되며, 제 2 메모리 위치(제 2 메모리 위치의 제 2 어드레스를 결정하기 위한)를 결정하기 위해 유용한 제 2 정보는 생성되고 저장된다. 실시 예로, 제 1 정보는 맵핑 테이블에 제 1 엔트리를 포함하고, 제 2 정보는 동일한 맵핑 테이블에서 제 2 엔트리를 포함한다. 다른 실시 예로, 제 1 정보는 제 1 맵핑 테이블의 엔트리를 포함하고, 제 2 정보는 제 2 맵핑 테이블의 엔트리를 포함한다.
제 1 정보 및 제 2 정보(예로, 맵핑 테이블 또는 테이블들의 엔트리들)들은 스토리지 장치 위에 존재하고, 스토리지 장치 자체(예로, 도 1의 스토리지 장치(100))에 의해 관리되거나 또는 스토리지 장치(예로, 도 3 및 도 4의 컴퓨터 시스템(300, 400))를 포함하는 장치에 의해 관리될 수 있다.
도 7A 및 도 7B는 본 발명에 따른 실시 예들로 맵핑 테이블(700)의 사용의 예를 도시한다. 맵핑 테이블(700)은 논리 또는 가상의 어드레스들을 스토리지 장치 또는 스토리지 장치들의 물리 주소들에 맵핑하는 몇 가지(N)의 엔트리들을 포함한다. 도 7A의 예로, 데이터(210) 및 다이제스트(220)들은 동일한 스토리지 장치(예로, 스토리지 장치(331))에 저장된 것을 보여준다. 그러나, 위에 설명된 바와 같이, 데이터(210) 및 다이제스트(220)들은 도 7B와 같이 다른 스토리지 장치들에 저장될 수 있다. 도 7B의 경우, 제 2 스토리지 장치(예로, 스토리지 장치(332))는 도 3의 예로 보여진 스토리지 장치(331)로 동일한 컴퓨터 시스템에 있을 수 있다. 또는 제 2 스토리지 장치(예로, 스토리지 장치(431))는 도 4의 예로 보여진 다른 컴퓨터 시스템에 있을 수 있다.
본 발명에 따른 실시 예들로, 맵핑 테이블(700)은 데이터(210)를 위한 제 1 엔트리(702)와 다이제스트(220)를 위한 제 2 엔트리(704)를 포함한다. (여기서, “제 1” 및 “제 2” 라는 용어는 2 개의 엔트리들 위한 설명으로 사용되고, 엔트리들이 맵핑 테이블에 위치한 실제의 제 1 및 제 2 엔트리들이라는 것을 반드시 가리키는 것은 아니다.) 그러므로, 도 7A 및 도 7B의 실시 예들로, 데이터(210) 및 다이제스트(220)를 위한 엔트리들은 동일한 맵핑 테이블에 있지만, 동일한 맵핑 테이블의 다른 위치들에 있다.
실시 예로, 맵핑 테이블(700)의 제 1 엔트리(702)의 위치와 맵핑 테이블(700)의 제 2 엔트리(704)의 위치 사이에는 고정되고 확립된 관계가 존재한다. 예를 들어, 도 7A의 경우, 제 1 엔트리(702)는 맵핑 테이블(700)의 위쪽 절반의 제 1 실제 엔트리인 경우, 제 2 엔트리(74)는 맵핑 테이블의 아래쪽 절반의 제 1 실제 엔트리일 수 있다. 예를 들어, 도 7B에 보여지는 것과 같이, 다이제스트(220)를 위한 엔트리는 데이터(210)를 위한 엔트리를 따를 수 있다. (인접할 수 있다.) 두 개의 엔트리들 사이의 다른 관계들도 가능하다. 실시 예로, 제 1 엔트리(702)를 이용하여 데이터(210)를 엑세스하는 것은 자동적으로 다이제스트(220)가 제 2 엔트리(704)를 이용하여 엑세스되는 것을 유도한다. 예를 들어, 데이터의 어드레스를 찾기 위해 제 1 엔트리(702)를 이용하고, 제 2 엔트리 및 이를 통한 다이제스트의 어드레스를 찾기 위해 제 1 엔트리와 제 2 엔트리 사이의 고정된 관계를 이용함으로써, 도 1의 컨트롤러(120)(도 3의 프로세서(310) 또는 도 4의 프로세서(410))는 관심 데이터(210) 및 데이터에 대응하는 다이제스트(210)를 가지고 올 수 있다.
도 8A 및 도 8B는 본 발명에 따른 실시 예로 두 개의 맵핑 테이블들(800, 801)의 사용의 예들을 도시한다. 맵핑 테이블들(800, 801) 각각은 논리 또는 가상 주소들을 스토리지 장치 또는 스토리지 장치들의 물리 주소들에 맵핑하는 몇 가지의 엔트리들을 포함한다. 도 8A의 실시 예로, 데이터(210) 및 다이제스트(220)들은 동일한 스토리지 장치(예로, 스토리지 장치(331))에 저장되는 것으로 도시된다. 그러나, 위의 설명에서, 데이터(210) 및 다이제스트(220)는 도 8B에 보여지는 것과 같이 다른 스토리지 장치들에 있을 수 있다. 도 8B의 경우, 제 2 스토리지 장치(예로, 스토리지 장치(332))는 도 3의 예에서 보여지는 것과 같은 스토리지 장치(331)로 동일한 컴퓨터 시스템에 있을 수 있다. 또는, 제 2 스토리지 장치(예로, 스토리지 장치(431))는 도 4의 예에서 보여지는 것과 같은 다른 컴퓨터 시스템에 있을 수 있다.
본 발명에 따른 실시 예들로, 맵핑 테이블(800)은 데이터(210)에 대한 엔트리(802)를 포함하고, 맵핑 테이블(801)은 다이제스트(220)에 대한 엔트리(804)를 포함한다. 즉, 데이터(210)에 대한 엔트리와 다이제스트(220)에 대한 엔트리는 다른 맵핑 테이블들 내에 있다. 실시 예로, 위에서 설명된 바와 같이, 맵핑 테이블(800)의 엔트리(802)의 위치와 맵핑 테이블(801)의 엔트리(804)의 위치 사이의 고정되고 확립된 관계가 있다. 예를 들어, 도8A 및 도 8B에서 보여지는 것과 같이, 엔트리(802)가 맵핑 테이블(800)의 제 1 실제 엔트리인 경우, 엔트리(804)는 맵핑 테이블(801)의 제 1 실제 엔트리일 수 있다. 두 개의 엔트리들 사이의 다른 관계들도 가능하다. 실시 예로, 제 1 엔트리(802)를 이용하여 데이터(210)를 엑세스하는 것은 자동적으로 다이제스트(220)가 제 2 엔트리(804)를 이용하여 엑세스되는 것을 유도한다.
도 7A, 7B, 8A 및 8B의 예들에서, 데이터(210) 및 다이제스트(220)에 대한 맵핑 테이블 엔트리들(702, 704, 802, 804)은 다른 동작들을 이용하여 생성되고(생성되거나), 맵핑 테이블 엔트리들(702, 704, 802, 804)은 싱글 이벤트 업셋들(SEUs) 또는 소프트 에러(soft error)가 엔트리들에 영향을 미치는 가능성을 제거하기 위해 다른 시기에 생성될 수 있다.
도 9 및 도 10은 본 발명에 따른 실시 예들의 데이터를 저장하고 엑세스하는 컴퓨터 실행 방법들의 예들의 순서도이다. 순서도들(900, 1000)은 컴퓨터로 실행 가능한 인스트럭션들로 실행될 수 있다. 이 경우, 인스트럭션들은 비일시적인(non-transitory) 컴퓨터 판독 가능 스토리지 매체의 몇 가지 형태에 존재한다. 그리고, 순서도들(900, 1000)은 장치들 또는 프로세싱 장치 또는 프로세싱 회로를 사용하는 컴퓨터 시스템으로 수행될 수 있다. 이 경우, 프로세싱 장치 또는 프로세싱 회로는 도 1의 컨트롤러(120), 도 3의 프로세서(310) 및 도 4의 프로세서(410)일 수 있다.
도 2 및 도 9를 참조하면, 도 9의 S902 단계에서, 제 1 데이터(210) 및 제 1 데이터(210)를 이용하여 얻어지는 제 2 데이터(220)를 포함하는 인코딩 정보는 수신된다.
도 9의 S904 단계에서, 제 1 데이터는 제 1 어드레스를 갖는 제 1 메모리 위치에 저장된다.
도 9의 S906 단계에서, 제 2 데이터는 제 2 어드레스를 갖는 제 2 메모리 위치에 저장된다.
앞서 언급된 바와 같이, 제 1 메모리 위치와 제 2 메모리 위치는 단일한 물리 장치에 있을 수 있다(도 6, 도 7A 및 도 8A 참고). 또는, 제 1 메모리 위치와 제 2 메모리 위치는 각각 제 1 물리 장치와 제 2 물리 장치에 있을 수 있다(도 5, 도 7B 및 도 8B 참고). 후자의 경우에, 제 1 및 제 2 물리 장치들은 동일한 컴퓨터 시스템의 구성요소들일 수 있다. 또는, 제 1 물리 장치는 제 1 컴퓨터 시스템의 구성 요소이고, 제 2 물리 장치는 제 2 컴퓨터 시스템의 구성 요소일 수 있고, 제 1 및 제 2 컴퓨터 시스템들은 네트워크의 구성 요소들일 수 있다(도 4의 예의 경우와 같음).
도 9의 S908 단계에서, 제 1 어드레스를 결정하기 위해 유용한 제 1 정보는 저장된다.
도 9의 S910 단계에서, 제 2 어드레스를 결정하기 위해 유용한 제 2 정보는 저장된다. 실시 예로, 제 1 정보를 이용하여 제 1 데이터를 엑세스하는 것은 제 2 정보를 이용하여 제 2 데이터를 엑세스하는 것을 유발한다.
위에 나타난 바와 같이, 일 실시 예로, 제 1 정보는 맵핑 테이블의 제 1 엔트리이고(제 1 엔트리를 포함할 수 있고), 제 2 정보는 동일한 맵핑 테이블의 제 2 엔트리이다(제 2 엔트리를 포함할 수 있다). 또는, 제 1 정보는 제 1 맵핑 테이블의 엔트리이고(엔트리를 포함할 수 있고), 제 2 정보는 제 2 맵핑 테이블의 엔트리이다(엔트리를 포함할 수 있다). 그러한 실시 예로, 맵핑 테이블 또는 맵핑 테이블들은 S908 단계 및 S910 단계로부터 제 1 및 제 2 정보(엔트리들)를 포함시키기 위해 업데이트된다.
도 10의 S1002 단계에서, 제 1 데이터(도 2의 데이터(210))는 제 1 메모리 위치로부터 읽혀진다.
도 10의 S1004 단계에서, 제 2 데이터(도 2의 다이제스트(220))는 제 2 메모리 위치로부터 읽혀진다. 앞서 언급된 바와 같이, 일 실시 예로, 제 1 메모리 위치와 제 2 메모리 위치는 하나의 맵핑 테이블의 분리된 엔트리들에 의해 확인되거나, 분리된 맵핑 테이블들의 엔트리들에 의해 확인된다. 그러므로, 그러한 실시 예에서, 제 1 데이터를 읽는 것(제 1 엔트리를 사용하는 것)은 자동적으로 제 2 데이터를 읽는 것(제 2 엔트리를 사용하는 것)을 유발시킨다.
도 10의 S1006 단계에서, 제 1 데이터의 유효성은 제 2 데이터를 이용하여 결정된다. S1006 단계의 유효성 확인은 스토리지 장치에 의해 수행되거나, 스토리지 장치를 관리하는 컴퓨터 시스템에 의해 수행될 수 있다.
요컨대, 본 발명에 따른 실시 예들은, 예를 들어, SSD들(이에 한정되는 것은 아님)과 같은 장치들의 사일런트 커럽션의 문제를 해결하기 위해 사용될 수 있다. 따라서, 데이터 스토리지 장치들 및 시스템들은 더욱 신뢰성 있고, 저장된 데이터의 신뢰성이 향상된다. 각 데이터에 대한 분리된 맵 엔트리들을 이용하여, 관심 데이터 및 데이터에 대한 다이제스트를 각각 저장함으로써, 여분의 스토리지 장치들을 추가하거나 존재하는 메모리 또는 프로세싱 자원들 또는 대역폭에 상당한 부담을 주지 않더라도, 본 발명에 따른 실시 예들은 효율적으로 구현된다. 예를 들어, 본 발명에 따른 실시 예들은 사일런트 커럽션을 감지하기 위해 백업 복사본들을 저장하고, 검색하고, 비교하는 것에 의존하지 않는다.
본 명세서에서 완전히 기능하는 컴퓨팅 시스템들의 배경으로 다양한 실시 예들이 설명 및/또는 예시되어 있으나, 실세로 배포를 실행하는데 사용되는 컴퓨터 판독 가능 매체의 특정 유형에 불구하고 하나 또는 그 이상의 다른 실시 예들은 다양한 형태를 갖는 프로그램 상품으로 배포될 수 있다.
또한, 본 명세서에서 개시된 실시 예들은 특정한 임무를 수행하는 소프트웨어 모듈을 이용하여 구현될 수 있다. 이러한 소프트웨어 모듈들은 스크립트, 배치(batch) 또는 컴퓨터로 판독 가능한 스토리지 매체에 저장될 수 있는 다른 실행 파일을 포함할 수 있다. 이러한 소프트웨어 모듈은 본 명세서에 개시된 예시적인 실시 예 중 하나 이상을 실행하는 컴퓨터 시스템을 구현할 수 있습니다. 본 명세서에서 개시된 하나 또는 그 이상의 소프트웨어 모듈들은 클라우드 컴퓨팅 환경으로 구현될 수 있다. 클라우드 컴퓨팅 환경들은 인터넷을 통해 다양한 서비스들과 어플리케이션들을 제공할 수 있다. 이러한 클라우드 기반 서비스들(예로, 소프트웨어, 플랫폼, 인프라)은 웹브라우저 또는 다른 원격 인터페이스들을 통해 엑세스할 수 있다. 본 명세서에서 설명된 다양한 기능들은 원격 데스크톱(desktop) 환경 또는 다른 클라우드 기반의 컴퓨팅 환경을 통해 제공될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
50: 인코딩 데이터 100: 스토리지 장치
110: 버퍼 120: 휘발성 메모리
130: 불휘발성 메모리 210: 제 1 데이터(데이터)
220: 제 2 데이터(다이제스트) 300: 컴퓨터 시스템
310, 410: 프로세서 320, 420: 메모리
331, 332: 스토리지 장치들 400: 컴퓨터 시스템
410: 프로세서 431: 스토리지 장치
501: 제 1 스토리지 장치 502: 제 2 스토리지 장치

Claims (10)

  1. 제 1 데이터 및 상기 제 1 데이터로부터 얻어진 제 2 데이터를 포함하는 인코딩 정보를 수신하는 단계;
    제 1 어드레스와 관련된 제 1 메모리 위치의 상기 제 1 데이터를 저장하는 단계;
    제 2 어드레스와 관련된 제 2 메모리 위치의 상기 제 2 데이터를 저장하는 단계;
    상기 제 1 어드레스를 결정하기 위해 유용한 제 1 정보를 저장하는 단계; 및
    상기 제 2 어드레스를 결정하기 위해 유용한 제 2 정보를 저장하는 단계를 포함하되,
    상기 제 2 데이터는 상기 제 1 데이터의 정확도를 결정하기 위한 것이고,
    상기 제 1 정보를 이용하여 상기 제 1 데이터를 엑세스하는 것은 상기 제 2 정보를 이용하여 상기 제 2 데이터를 엑세스하도록 하는 방법.
  2. 제 1 항에 있어서,
    상기 제 1 메모리 위치 및 상기 제 2 메모리 위치들은 단일한 물리 장치에 있는 방법.
  3. 제 1 항에 있어서,
    상기 제 1 메모리 위치 및 상기 제 2 메모리 위치들은 각각 제 1 물리 장치 및 제 2 물리 장치에 있는 방법.
  4. 제 3 항에 있어서,
    상기 제 1 물리 장치 및 상기 제 2 물리 장치들은 동일한 컴퓨터 시스템의 구성 요소들인 방법.
  5. 제 3 항에 있어서,
    상기 제 1 물리 장치는 제 1 컴퓨터 시스템의 구성 요소이고, 상기 제 2 물리 장치는 제 2 컴퓨터 시스템의 구성요소이고, 상기 제 1 컴퓨터 시스템 및 상기 제 2 컴퓨터 시스템들은 하나의 네트워크의 구성요소들인 방법.
  6. 제 1 항에 있어서,
    상기 제 1 정보는 논리 어드레스들을 물리 어드레스들에 맵핑하는 맵핑 테이블의 제 1 엔트리를 포함하고, 상기 제 2 정보는 상기 맵핑 테이블의 제 2 엔트리를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 제 1 정보는 논리 어드레스들을 물리 어드레스들에 맵핑하는 제 1 맵핑 테이블의 엔트리를 포함하고, 상기 제 2 정보는 논리 어드레스들을 물리 어드레스들에 맵핑하는 제 2 맵핑 테이블의 엔트리를 포함하는 방법.
  8. 제 1 항에 있어서,
    상기 제 1 데이터 및 상기 제 2 데이터를 엑세스하는 단계; 및
    상기 제 1 데이터의 정확도를 결정하기 위해 상기 제 2 데이터를 이용하는 단계를 더 포함하는 방법.
  9. 프로세서; 및
    상기 프로세서와 연결되고, 상기 프로세서에 의한 실행을 위한 인스트럭션들을 저장하는 메모리를 포함하되,
    상기 인스트럭션들이 수행될 때, 상기 인스트럭션들은 상기 프로세서가 제 1 데이터 및 상기 제 1 데이터로부터 얻어진 제 2 데이터를 포함하는 인코딩 데이터를 수신하도록 하고, 상기 제 1 데이터를 제 1 물리 어드레스를 갖는 제 1 메모리 위치에 송신하도록 하고, 상기 제 2 데이터를 제 2 물리 어드레스를 갖는 제 2 메모리 위치에 송신하도록 하고,
    상기 제 1 메모리 위치는 제 1 논리 어드레스를 제 1 물리 어드레스에 맵핑하는 제 1 엔트리를 이용하여 엑세스할 수 있고,
    상기 제 2 메모리 위치는 제 2 논리 어드레스를 제 2 물리 어드레스에 맵핑하는 제 2 엔트리를 이용하여 엑세스할 수 있고,
    상기 제 1 메모리 위치로부터 상기 제 1 데이터를 읽기 위한 요청은 상기 제 2 메모리 위치로부터 상기 제 2 데이터가 읽혀지도록 하고,
    상기 제 1 데이터의 정확도는 상기 제 2 데이터를 이용하여 확인 가능한 장치.
  10. 제 1 어드레스를 갖는 제 1 메모리 위치로부터 데이터를 읽는 단계;
    제 2 어드레스를 갖는 제 2 메모리 위치로부터 다이제스트(digest)를 읽는 단계; 및
    상기 다이제스트를 이용하여 상기 데이터의 유효성을 판단하는 단계를 포함하되,
    상기 제 1 메모리 위치는 제 1 맵핑 테이블 엔트리에 의해 인덱스되고,
    상기 제 2 메모리 위치는 제 2 맵핑 테이블 엔트리에 의해 인덱스되는 방법.
KR1020160003336A 2015-09-10 2016-01-11 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들 KR102437777B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/850,680 2015-09-10
US14/850,680 US10162537B2 (en) 2015-09-10 2015-09-10 Methods and systems to detect silent corruption of data

Publications (2)

Publication Number Publication Date
KR20170031004A true KR20170031004A (ko) 2017-03-20
KR102437777B1 KR102437777B1 (ko) 2022-08-29

Family

ID=58257535

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160003336A KR102437777B1 (ko) 2015-09-10 2016-01-11 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들

Country Status (3)

Country Link
US (1) US10162537B2 (ko)
KR (1) KR102437777B1 (ko)
CN (1) CN106528322B (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10853307B2 (en) * 2017-07-28 2020-12-01 Dell Products, L.P. System and method for a host application to access and verify contents within non-volatile storage of an information handling system
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same
CN111506451B (zh) * 2020-04-20 2023-01-20 上海航天计算机技术研究所 一种基于星载操作系统的软硬件协同防护单粒子设计方法
KR20220147292A (ko) 2021-04-27 2022-11-03 삼성전자주식회사 메타 데이터 관리를 수행하는 스토리지 장치 및 이의 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014711A1 (en) * 2001-07-12 2003-01-16 Yuan Warm Shaw Implementation of a turbo decoder
US20100241819A1 (en) * 2009-03-17 2010-09-23 Kabushiki Kaisha Toshiba Controller and memory system
US20100318887A1 (en) * 2009-06-10 2010-12-16 International Business Machines Corporation Data verification using checksum sidefile
US20130067270A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Querying and repairing data
KR20140071135A (ko) * 2012-12-03 2014-06-11 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583876A (en) * 1993-10-05 1996-12-10 Hitachi, Ltd. Disk array device and method of updating error correction codes by collectively writing new error correction code at sequentially accessible locations
US5790774A (en) * 1996-05-21 1998-08-04 Storage Computer Corporation Data storage system with dedicated allocation of parity storage and parity reads and writes only on operations requiring parity information
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US8495454B2 (en) 2008-07-14 2013-07-23 Marvell World Trade Ltd. Methods, apparatuses, systems, and architectures for quickly and reliably encoding and/or decoding system data
JP4901987B1 (ja) * 2010-09-14 2012-03-21 株式会社東芝 記憶装置、電子機器及び誤りデータの訂正方法
US8954647B2 (en) 2011-01-28 2015-02-10 Apple Inc. Systems and methods for redundantly storing metadata for non-volatile memory
US8495386B2 (en) * 2011-04-05 2013-07-23 Mcafee, Inc. Encryption of memory device with wear leveling
US10360176B2 (en) 2012-01-17 2019-07-23 Intel Corporation Techniques for command validation for access to a storage device by a remote client
US20140244897A1 (en) 2013-02-26 2014-08-28 Seagate Technology Llc Metadata Update Management In a Multi-Tiered Memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030014711A1 (en) * 2001-07-12 2003-01-16 Yuan Warm Shaw Implementation of a turbo decoder
US20100241819A1 (en) * 2009-03-17 2010-09-23 Kabushiki Kaisha Toshiba Controller and memory system
US20100318887A1 (en) * 2009-06-10 2010-12-16 International Business Machines Corporation Data verification using checksum sidefile
US20130067270A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Querying and repairing data
KR20140071135A (ko) * 2012-12-03 2014-06-11 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법

Also Published As

Publication number Publication date
CN106528322A (zh) 2017-03-22
KR102437777B1 (ko) 2022-08-29
US10162537B2 (en) 2018-12-25
CN106528322B (zh) 2021-07-06
US20170075619A1 (en) 2017-03-16

Similar Documents

Publication Publication Date Title
KR101780340B1 (ko) 가상 데이터베이스를 제공하기 위한 유효성 검증 데이터베이스 스냅샷의 생성 방법, 시스템 및 컴퓨터 판독가능 저장 매체
US9268648B1 (en) System and method for consistency verification of replicated data in a recovery system
US10241896B2 (en) Formation and manipulation of test data in a database system
US8577855B2 (en) Online file system consistency check
US8086896B2 (en) Dynamically tracking virtual logical storage units
US8180811B2 (en) Identifying unreferenced file system components
US9152353B1 (en) Verifying the consistency of slice allocation metadata
US10740184B2 (en) Journal-less recovery for nested crash-consistent storage systems
US8732411B1 (en) Data de-duplication for information storage systems
US20140108753A1 (en) Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation
US10073969B1 (en) File system metadata extension utilizable with object store
US10678755B2 (en) File metadata verification in a distributed file system
KR102437777B1 (ko) 데이터의 사일런트 커럽션을 감지하는 시스템들 및 그것의 동작 방법들
US11625303B2 (en) Automatic incremental repair of granular filesystem objects
US10452644B2 (en) Computer system, method for verifying data, and computer
US11853284B2 (en) In-place updates with concurrent reads in a decomposed state
US8473773B2 (en) Method and system to provide a compliance clock service suitable for cloud deployment
US11226746B2 (en) Automatic data healing by I/O
US11556519B2 (en) Ensuring integrity of records in a not only structured query language database
US10122795B2 (en) Consistency level driven data storage in a dispersed storage network
US11429537B2 (en) Method, device, and computer program product for managing storage system
US9471409B2 (en) Processing of PDSE extended sharing violations among sysplexes with a shared DASD
CN116301574A (zh) 储存装置、具有其的主机系统及其操作方法
JP2017068729A (ja) ファイル記憶装置、情報処理方法、プログラム、ファイル記憶システム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant