KR20180096660A - 참조값을 이용한 메모리 디바이스 액션의 유효성 확인 - Google Patents

참조값을 이용한 메모리 디바이스 액션의 유효성 확인 Download PDF

Info

Publication number
KR20180096660A
KR20180096660A KR1020187018746A KR20187018746A KR20180096660A KR 20180096660 A KR20180096660 A KR 20180096660A KR 1020187018746 A KR1020187018746 A KR 1020187018746A KR 20187018746 A KR20187018746 A KR 20187018746A KR 20180096660 A KR20180096660 A KR 20180096660A
Authority
KR
South Korea
Prior art keywords
memory
value
partition
reference value
memory device
Prior art date
Application number
KR1020187018746A
Other languages
English (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 KR20180096660A publication Critical patent/KR20180096660A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors
    • 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/061Improving I/O performance
    • 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
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0653Monitoring storage devices or systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

본 문서는 값을 저장하는 메모리 디바이스 요소와 관련한 액션(예: 호스트 디바이스에 의한 읽기 또는 쓰기 등)을 참조값과 비교하여 유효하게 하는 기술을 설명한다. 참조값은 메모리의 실제 특성과 연관된다. 해당 값을 저장하는 요소는 메타데이터 저장을 위해 구성된 메모리 영역에 저장될 수 있다. 해당 요소는 메모리 디바이스가 제조된 이후 리프로그래밍이 가능하기 때문에 이 요소에 저장된 값은 호스트 디바이스에 의해 변경될 수 있으며, 이로 인해 메모리의 특성을 잘못 또는 부정확하게 반영할 수 있다. 이와 반대로, 참조값은 별도의 메모리 영역에 저장되며, 해당 참조값은 참값이다.

Description

참조값을 이용한 메모리 디바이스 액션의 유효성 확인
관련 출원에 대한 인용참조
본 특허출원은 2015년 12월 21일에 출원된 미국 가특가출원(U.S. Provisional Patent Application) 일련번호 62/270,493호로부터 우선권을 주장하는 2016년 12월 19일에 출원된 미국 특허출원(U.S. Utility patent application) 일련번호 15/383,631호에 대한 우선권을 주장한다. 출원 일련번호 15/383,631 및 62/270,493은 본 특허출원에 참고 문헌으로 인용된다.
배경
Managed NAND 스토리지 모듈과 같은 메모리 디바이스(예: 스토리지 모듈)는 휴대용 전화 장치(예: 스마트폰), 태블릿 장치, 글로벌 위치 시스템 (GPS), 전자책 장치, 미디어 플레이어 장치 등과 같이 다양한 유형의 "호스트" 디바이스와 함께 사용된다. 메모리 디바이스의 예로는 SD 카드(Secure Digital Card), eMMC (embedded MultiMediaCard), UFS(Universal Flash Storage), SSD(반도체 드라이브) 모듈 등이 있다. 메모리 디바이스는 함께 사용될 호스트 디바이스의 데이터를 저장한다. 이 데이터에는 운영 체계 코드, 애플리케이션, 사용자 데이터(예: 사진 데이터, 영상 데이터 등)가 포함된다. 또한, 메모리 디바이스는 메타 데이터와 구성 데이터 등 호스트 디바이스가 사용하거나 메모리 디바이스가 자체적으로 사용하는 다른 유형의 데이터도 저장한다.
호스트 디바이스의 기능이 늘어날수록, 그리고 사용자의 데이터 생성량이 늘어날수록(예: 앱, 이미지, 메시지 등의 다운로드) 메모리 디바이스는 데이터를 더 많이 저장하는 작업을 수행한다. 따라서, 저장소 용량과 기타 메모리 디바이스의 특성을 정확히 반영하는 것은 호스트 디바이스 사용자에게는 물론 메모리 디바이스 자체(예: 기능 최적화)에도 매우 중요한 일이다. 예를 들어, 16기가바이트(GB)를 저장하는 메모리 디바이스(예: 16GB SDHC 카드) 대신 64GB 저장하는 메모리 디바이스(예: (예: 사용자의 이동 전화용 64GB SDXC 카드)를 원하는 사용자가 있을 수 있다.
최근 들어, 메모리 디바이스에 저장된 정보에 액세스하거나 메모리 디바이스에서 정보를 읽을 때 저장 용량이 정확히 반영되지 않도록 위조범들이 메모리 디바이스에 저장된 정보를 조작하는 경우가 발생하고 있다. 더불어 메모리 디바이스에 저장된 기타 정보가 해당 메모리 디바이스의 실제 특성과 일치하지 않아 메모리 디바이스가 최적으로 작동하지 못 하는 경우도 있다. 예를 들어, 16GB 메모리 디바이스의 파티션 정보가 조작되어 호스트 디바이스에는 64GB 메모리 디바이스로 잘못 표시될 수 있다. 결국 이 파티션 정보는 조작으로 인해 부정확하거나 틀린 정보일 수 있는 것이다. 다시 말하면, 해당 메모리 디바이스는 위조범이 조작해 저장 용량(density)이 높은 것으로 표시되지만(예: 64GB SDXC 카드) 실제로는 용량이 낮은(예: 16GB SDHC 카드) 메모리 디바이스일 수 있다. 다른 예를 들면, 파티션의 실제 데이터 영역 시작이 올바른 블록 경계 내에 있지 않을 수 있다.
일부의 경우, 한 고객이 데이터 저장 용량이 높은 것으로 표시된(예: 64GB)메모리 디바이스에 대하여 구매 가격을 지불했으나, 실제로는 그보다 적은 용량(예: 16GB)을 저장하는 메모리 디바이스일 수도 있다. 이 부정확하고 잘못된 정보로 인해 해당 고객은 메모리 디바이스의 성능에 결국 실망하게 될 것이다. 예를 들면, 이 고객은 구매한 메모리 디바이스를 이용해 메모리 디바이스의 실제 용량을 초과하는 어드레스에 데이터를 쓸 수 없다는 사실을 알게 될 수도 있다. 또는 메모리 디바이스의 실제 용량을 초과하는 어드레스에 데이터를 쓸 때, 해당 메모리 디바이스가 손상되었다는 사실을 깨달을 수도 있다.
도 1은 참조값 사용을 통해 값을 저장하는 요소와 관련된 액션(action)이 유효하도록 메모리 디바이스의 환경이 구성된 예를 보여준다. 요소에 의해 저장된 값은 적어도 한 개 이상의 메모리 포션(portion)과 연관된 특성(예: 용량)을 보여줄 수 도 있다.
도 2는 예로 제시한 메모리 디바이스의 추가 세부 정보를 보여준다. 참조값이 메모리의 한 영역에 저장되는 동시에 액션 연관 값이 메모리 디바이스의 제조가 완료된 후 쉽게 리프로그래밍 될 수 있는 다른 영역에 저장된다.
도 3은 (i)액션의 유효 여부 또는 (ii)요소에 저장된 값의 유효 여부를 확인하는 값을 저장하는 요소과 관련된 액션의 발생을 모니터링하는 프로세스의 예를 보여준다. 예로 제시한 프로세스는 메모리 디바이스에 의해 구현될 수 있다.
도 4는 값을 저장하는 요소와 관련된 쓰기 액션이 유효한지 또는 요소에 저장된 값이 유효한지 확인하기 위해 참조값 또는 파생 참조값을 평가하는 프로세스의 예를 보여준다. 예로 제시한 프로세스는 메모리 디바이스에 의해 구현될 수 있다.
도 5는 값을 저장하는 요소와 관련된 읽기 액션이 유효한지 또는 요소에 저장된 값이 유효한지 확인하기 위해 참조값 또는 파생 참조값을 평가하는 프로세스의 예를 보여준다. 예로 제시한 프로세스는 메모리 디바이스에 의해 구현될 수 있다.
도 6은 (i)호스트 디바이스 쓰기 액션의 유효 여부 또는 (ii) 요소에 이미 저장된 현재 값의 유효 여부를 확인하기 위해 호스트 디바이스와 메모리 디바이스 사이에서 구현된 상호 작용의 예를 보여준다.
도 7은 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스(예: SD 카드)의 예를 보여준다. 도 7은 MBR(Master Boot Record) 파티셔닝 및 FAT(File Allocation Table) 파일 시스템을 구현하는 단일 물리 파티션을 보여준다.
도 8은 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스의 예를 보여준다. 도 8은 GPT(GUI 파티션 테이블) 파티셔닝 및 FAT(File Allocation Table) 파일 시스템을 구현하는 단일 물리 파티션을 보여준다.
도 9는 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스(예: eMMC)의 예를 보여준다. 도 9는 개별적으로 MBR 파티셔닝과 FAT(File Allocation Table) 파일 시스템을 구현하는 다수의 물리 파티션과 다수의 프라이머리 파티션을 보여준다.
본 발명의 실시예 및/또는 예시를 묘사한 도면은 오로지 삽화(illustration)의 목적만을 갖는다. 다음은 본 문서에서 제시되는 원리를 지키는 한도 내에서 여기에 설명되는 구조 및 메소드의 대체 구현 및/또는 대체 예시가 가능하다는 것을 당업자에게 설명한다.
다음 설명은 당업자가 다양한 구현을 실행하고 사용할 수 있도록 제시되었다. 특정 디바이스, 기술, 그리고 애플리케이션은 예시로 제공된 것이다. 본 문서에 설명된 예시의 다양한 변형은 당업자가 명백히 이해할 수 있으며, 본 문서에서 정의된 일반 원칙은 다양한 구현의 범위를 벗어나지 않는 선에서 다른 예시에 적용될 수 있다. 따라서, 다양한 구현은 본 문서에서 설명된 예시에 국한되지 않으나 본 문서가 주장하는 내용과 일치하는 범위를 따른다.
본 공개 문서는 값을 저장하는 메모리 디바이스 요소와 관련한 액션(예: 호스트 디바이스에 의한 읽기 또는 쓰기 등)을 참조값(예: 유효 결과의 결과)과 비교하여 유효하게 하는 기술을 설명한다. 참조값은 메모리 디바이스의 실제 특성(예: 메모리 용량의 크기 또는 양, 프라이머리 파티션 용량의 크기 또는 양 등)과 연관된다. 최소 하나 이상의 구현에서, 값을 저장하는 요소가 메타데이터 저장에 사용되는 메모리 영역에 저장된다(예: 파티셔닝 메타데이터, 메모리 디바이스 시스템 구조와 연관된 데이터 등). 해당 요소를 포함하는 이 영역은 호스트 디바이스에 표시되며, 따라서 해당 요소는 메모리 디바이스의 제조가 완료된 후 읽기와 리프로그래밍이 가능하다. 결과적으로, 요소에 저장된 값은 메모리 디바이스의 실제 특성을 잘못 또는 부정확하게 반영하도록 호스트 디바이스에 의한 조작(예: 위조범의 조작)이 가능하다.
반면, 참조값은 메모리 영역(예: 레지스터, 디스크립터, 애트리뷰트, 플래그 등과 관련)에 저장되며 여기에는 읽기는 가능하나 (i) 메모리 디바이스 제조가 완료된 후 리프로그래밍이 불가능(예: 1회만 설정 프로그래밍 가능)하거나 (ii) 호스트 디바이스가 아닌 메모리 디바이스의 제어에 의해 리프로그래밍과 변경이 가능(예: 메모리 디바이스에서 시작 및 제어되는 다이나믹(dynamic, 동적) 용량 조정)하며 (iii) 저장된 참조값을 변경하려면 호스트 디바이스 인증이 요구되는 설정이 포함된다. 참조값을 포함하는 메모리 디바이스의 이 영역은 호스트 디바이스에 표시되거나 표시되지 않을 수 있다. 다양한 예에서 참조값은 제조 단계에서 메모리 디바이스 제조업체에 의해서만 프로그래밍 될 수 있다. 그러므로 참조값은 메모리 디바이스 제조가 완료된 후 호스트 디바이스에 의해 변경될 수 없다. 따라서, 참조값은 메모리 디바이스의 실제 특성을 올바르고 정확하게 반영하는 참값(true value)이라고 할 수 있다.
다양한 예에서 값을 저장하는 요소와 관련된 "쓰기” 액션은, 요소에 쓰일 값(예: 호스트 디바이스에 의해), 요소에 최종적으로 쓰일 값(예: 메모리 컨트롤러에 의해), 또는 요소에 저장된 채 남아있는 값이 참조값에 비해 유효한 경우에 유효하다. 다양한 예에서, 값을 저장하는 요소와 관련된 "읽기” 액션은 요소로부터 읽어올 값이 참조값에 비해 유효하거나 유효값이 참조값에 근거하여 호스트 디바이스로 전송된 경우에 유효하다.
한 가지 구현에서, 참조값은 메모리 디바이스의 메모리 용량과 관련이 있을 수 있다. 예를 들어, CSD 레지스터 한 세트로 구성된 SD 카드(Secure Digital Card)는 SD 카드의 실제 메모리 용량(예: SD 카드의 단일 물리 파티션 내에 있는 MBR(Master Boot Record) 프라이머리 파티션 용량)을 반영하거나 얻어내는 데 사용 가능한 참조값을 저장하는 특정 C_SIZE 레지스터 하나를 포함할 수 있다. 따라서, 해당 SD 카드는 C_SIZE 레지스터에 저장된 참조값을 사용해 호스트 디바이스에 의해 C_SIZE 레지스터가 아닌 SD 카드 영역(예: 본 문서에서 언급한 파티션 메타데이터 영역에 위치할 수 있는 "요소")에 쓰인 용량 값이 유효한지 확인할 수 있다(예: C_SIZE 레지스터에 저장된 참조값과 쓰인 값 비교). SD 카드는 또한 C_SIZE 레지스터에 저장된 참조값을 사용해 파생 참조값을 얻어내고(예: 계산) 호스트 디바이스가 C_SIZE 레지스터가 아닌 SD 카드 영역에서 읽어온 용량 값이 유효한지 확인할 수 있다. 예를 들면, 파생 참조값은 C_SIZE 레지스터(예: SD 카드의 단일 물리 파티션 크기)에 저장된 참조값에서 파티션 메타데이터 영역 크기를 뺀 것일 수 있다. 메모리 용량과 관련한 이 사례에서, 쓰인 값 또는 읽어낸 값이 참조값 또는 파생 참조값보다 적거나 같다면 쓰인 값 또는 읽어낸 값과 관련한 액션은 유효하며, 참조값 또는 파생 참조값을 초과한다면 유효하지 않다.
결과적으로, 본 문서에 논의된 기술은 (i) 메모리 디바이스의 제어로 리프로그래밍 또는 변경이 가능하거나 리프로그래밍 시 인증이 요구되거나, 그렇지 않은 경우에는 리프로그래밍이 불가능한 한 메모리 영역에 저장된 참조값 및 (ii) 리프로그래밍이 가능한 메모리의 다른 영역에 저장되어 있는 참조값(예: 인증 불필요) 사이에 연결 고리가 있음을 보여준다. 해당 기술은 이 연결 고리를 이용해 참조값과 관련된 액션(예: 호스트 디바이스에 의한 읽기 또는 쓰기)의 유효 여부를 확인한다.
도 1은 본 공개 문서가 구현될 수 있는 환경(100)의 예를 보여준다. 예를 들면, 예로 든 환경(100)에서 값을 저장하는 요소와 연관한 액션이 참조값과 비교하여 유효한지 확인하기 위한 목적으로 메모리 디바이스(102)가 설정된다. 이 액션은 호스트 디바이스(104)에 의하여 또는 이에 의거하여 구현될 수 있다. 예를 들면, 해당 액션은 호스트 디바이스(104)에 의한 쓰기 또는 읽기와 연관될 수 있다.
호스트 디바이스(104)는 스마트폰 디바이스, 웨어러블 디바이스(예: 손목시계, 안경, 심박수측정기 등), 노트북, 태블릿 디바이스, 이미지 캡쳐 디바이스(예: 카메라, 동영상 녹화 장치 등), 넷북 디바이스, 게임 콘솔 디바이스, 개인용 컴퓨터 디바이스(예: 데스크탑 컴퓨터 등), 서버 디바이스, 셋탑박스 디바이스, 홈 디바이스(예: 가전 장치, 난방 장치, 차고 문 장치 등), 또는 호스트 디바이스와 함께 사용되거나 호스트 디바이스에 연결된 메모리 디바이스의 스토리지를 요구하는 기타 전자 장치를 포함할 수 있다. 일부의 경우, 호스트 디바이스(104)는 디스플레이(예: 터치 디스플레이), 디스플레이를 프로세서에 연결하는 버스, 그리고/또는 디스플레이에서 그래픽과 텍스트의 디스플레이를 처리하는 그래픽 서브시스템을 포함할 수 있다. 호스트 디바이스(104)는 하나 이상의 다이내믹 랜덤 액세스 메모리(DRAM), 센서(예: 가속도계, 자이로스코프, GPS 등), 입출력 구성요소(I/O)(예 : 스피커, 마이크 또는 키보드) 및 통신 인터페이스(예 : Cellular, USB, Wi-Fi, Bluetooth 또는 기타 유선/무선 인터페이스)를 포함할 수 있다.
다양한 구현에서, 메모리 디바이스(102)는 패키지 내에 포함될 수 있다. 인쇄 회로 기판 위에 마운트가 가능하도록 설계된 BGA(Ball Grid Array) 패키지를 예로 들 수 있다. 예를 들면, 메모리 디바이스(102)는 eMMC(embedded MultiMediaCard), 또는 UFS(Universal Flash Storage) 모듈에 임베드될 수 있다. 또한 호스트 디바이스(104)의 슬롯이나 입체 회로 소자(SSD) 묘듈과 같은 반착탈식(semi-removable) 디바이스, 또는 PC/서버 카드/모듈(예: PCIe(Peripheral Component Interconnect express) 카드)에 장착 가능한 착탈식(removable) 카드(예: SD 카드)에 포함될 수 있다. 더불어 하나의 자립형(self-contained) 장치이거나 상호접속 장치(interconnected devices)의 집합체로서 구현될 수도 있다.
메모리 디바이스(102)에는 컨트롤러(106)(예: 메모리 컨트롤러)가 포함된다. 컨트롤러(106)는 읽기 및/또는 쓰기 요청에 따라 메모리 디바이스(102)(예: 종종 매스 스토리지, 비휘발성 메모리, 또는 메스 메모리로 칭함)의 메모리(예: 스토리지)와 호스트 디바이스(104) 사이의 데이터 통신을 위해 구성된다. 다양한 구현에서, 컨트롤러(106)는 작동을 제어하는 컨트롤 서킷, 메모리 디바이스(102) 내의 작동 정보 저장 및/또는 임시 저장 제공을 위한 RAM(Random Access Memory), 내부 클럭 신호(clocking signal)를 생성하는 클럭 생성 회로(clock generation circuit), 호스트 디바이스(104)(예: 호스트 컨트롤러 또는 호스트 디바이스의 기타 프로세싱 유닛) 데이터 및/또는 명령을 수신하는 리시버 서킷, 및/또는 데이터 및/또는 상태 정보를 호스트 디바이스(104)(예: 호스트 컨트롤러)로 전송하는 트랜스미터 서킷을 포함할 수 있다. 그뿐 아니라, 최소 한 개의 버스를 이용해 컨트롤러(106)를 메모리 디바이스(102) 메모리에 연결할 수 있다. 이를 통해 컨트롤러(106)가 메모리와 통신하여 메모리에서 데이터를 읽어오거나 메모리에 데이터를 쓰게 할 수 있다. 다양한 예시에서, 메모리 서킷과 메모리 셀(예: NAND 셀)을 가진 NAND 플래시 메모리와 같은 비휘발성 메모리를 이용해 스토리지를 구현할 수 있다. 각 셀은 단일 비트(싱글 레벨 셀) 또는 다중 비트(멀티 레벨 셀)의 데이터를 저장할 수 있다. 본 공개 문서에서 벗어나지 않는 한도 내에서 다른 형태의 비휘발성 메모리를 사용할 수 있다. 예를 들어, 비휘발성 메모리는 PCM(phase change memory), MRAM(magneto-resistive random-access memory), RRAM(resistive random-access memory), FRAM(ferroelectric random-access memory) 등을 포함할 수 있다.
메모리 디바이스(102)의 메모리는 호스트 디바이스(104)에 표시되는 어드레스 공간을 포함할 수 있다. 표시되는 어드레스 공간은 물리 어드레스 공간(예: NAND 플래시와 같은 비휘발성 메모리의 물리 어드레스에 액세스할 수 있는 호스트)으로 여겨지거나 논리 어드레스 공간(예: NAND 메모리 디바이스의 플래시 관리 기능이 L2P(Logical-to-Physical) 매핑 테이블을 이용해 호스트로부터 수신한 어드레스를 비휘발성 메모리의 물리 어드레스로 전환)으로 간주될 수 있다. 예를 들어, 어드레스 공간은 하나 이상의 메모리 포션(portion)을 포함할 수 있다. 일부 예시에서, 메모리 포션은 MBR 프라이머리 파티션, GUID 파티션 테이블(GPT) 파티션, 물리 파티션(예: eMMC 표준에 정의된 일반 목적 파티션), 또는 로지컬 유닛(LUs)(예: UFS 표준에 정의된 것과 같음)을 포함할 수 있다. 앞서 언급한 바와 같이, 메모리 디바이스(102)의 메모리(예: 스토리지)는 여러 영역으로 분할할 수 있으며, 각 영역은 (i) 메모리 개별 포션 내의 지정 영역(예: MBR 프라이머리 파티션, GPT 파티션, 물리 파티션, 또는 LU의 일부), (ii) 메모리 포션(예: MBR 프라이머리 파티션, GPT 파티션, 물리 파티션, 또는 LU로 이루어진 영역), 또는 (iii) 하나 이상의 레지스터, 디스크립터, 애트리뷰트, 플래그 등이 될 수 있다. 예를 들면, 도 1과 관련하여 본 문서에서 상세히 설명된 첫 번째 영역과 두 번째 영역 은 메모리의 단일 포션의 일부(예: 첫 번째 영역의 MBR(Master Boot Record)과 두 번째 영역의 MBR 프라이머리 파티션을 포함하는 단일 물리 파티션만을 가지는 SD 카드)가 될 수 있다. 또는, 첫 번째 영역과 두 번째 영역이 각각 분리된 메모리 포션으로 구성될 수도 있다(예: 메타데이터는 첫 번째 파티션에 저장, 사용자 데이터는 두 번째 파티션에 저장).
따라서, 도 1은 메타데이터(110) 저장에 사용된 메모리(108)의 첫 번째 영역을 보여준다. 메타데이터(110)는 호스트 디바이스(104)가 메모리 디바이스(102)에서 데이터를 정렬하는 방식과 관련된 데이터를 포함한다. 따라서, 메타데이터(110)는 메모리 디바이스(102)의 컨트롤러(106)에 의해 내부적으로 사용(예: 평가된(assessed))될 수 있다(예: 호스트 디바이스(104)에 의해 시작된 읽기 또는 쓰기에 따라). 다양한 구현에서, 메타데이터(110)는 MBR(Master Boot Record), GPT(GUI 파티션 테이블), VBR(Volume Boot Record)과 같은 메모리 디바이스(102)에 관한 파티셔닝 정보를 포함할 수 있다. MBR은 메모리 디바이스(102)에서의 MBR 프라이머리 파티션 구성 방식(예: 위치된(located))에 관한 정보를 포함한다. MBR은 또한 호스트 디바이스(104)에 설치된 운영 체계를 위한 로더(loader)로 기능하기 위해 실행 코드를 포함할 수 있다. GPT는 GUID(globally unique identifiers)를 사용하여 파티션 테이블의 레이아웃에 관한 표준을 구성한다. VBR은 메모리 디바이스의 다른 부분(예: 도 1과 관련하여 논의된 메모리의 두 번째 영역)에 저장된 부트스트래핑(bootstrapping) 프로그램(예: 운영 체제)에 관한 코드를 포함한다.
메모리(108)의 첫 번째 영역에 저장된 메타데이터(110)는 하나 이상의 요소(112)를 포함할 수 있다. 이곳에서는 메모리 디바이스(102) 특성(114)의 값 암시(value indicative)를 저장하도록 개별 요소(112)가 지정된다. 특성(114)은 메모리 포션 또는 메모리 영역과 관련될 수 있다. 개별 요소(112)는 읽기 또는 쓰기 요청과 관련하여 호스트 디바이스(104)에 의해 식별될 수 있도록 특정 어드레스에 할당될 수 있다. 한 예시에서, 알려진 어드레스를 통해 호스트 디바이스(104)가 액세스할 수 있는 하나의 필드(예: 4바이트 필드)로 개별 요소(112)를 구성할 수 있으며, 이는 포션 또는 메모리 디바이스에 있는 메모리 영역의 첫 번째 어드레스, 포션 또는 메모리 디바이스에 있는 메모리 영역의 마지막 어드레스, 포션의 크기(또는 길이) 또는 메모리 디바이스에 있는 메모리 영역을 암시한다. 앞서 설명한 바와 같이, 요소(112)에 저장된 특성(114)의 값 암시(value indicative)는 리프로그래밍 될 수 있으며, 따라서 요소(112)는 메모리 디바이스(102)가 잘못되거나 부정확한 특성 및/또는 성능(예: 메모리 용량)을 반영하려는 위조범의 조작에 취약하다. 예를 들어, 특성(114)의 잘못되거나 부정확한 값을 반영하는 것은 읽기 또는 쓰기 요청과 같은 호스트 디바이스의 액션과 관련이 있을 수 있다.
메모리(116)의 두 번째 영역은, 사용자 데이터(118)와 같은 것을 저장할 수 있다. 앞서 설명한 바와 같이, 메모리의 두 번째 영역(116)은 다운로드 받은 앱, 이미지(예: 그림, 사진, 동영상 등), 음악, 센서 데이터 등을 포하한 사용자 데이터(118) 저장을 위해 하나 이상의 메모리 포션(예: 프라이머리 파티션, 물리 파티션, LU 등)으로 구성되거나 그 일부가 될 수 있다. 다양한 구현에서, 메모리의 두 번째 영역(116)은 예컨대 운영 체제와 관련한 호스트 데이터도 저장할 수 있다. 일부 예시에서(예: SD 카드), 메모리의 두 번째 영역(116)은 PBS(Partition Boot Sector) , FAT(File Allocation Table) 및/또는 루트 디렉토리(Root Directory)와 같은 파일 시스템 아키텍처를 저장할 수 있다. 더 자세히 설명되겠지만, 도 1의 점선이 보여주는 바와 같이 특성(114)의 값 암시는 메모리(116)의 두 번째 영역 특성과 일치할 수 있다.
메모리의 세 번째 영역(120)은 설정(122)을 유지하며, 개별 설정(122)이 메모리 디바이스(102)의 실제 특성(124)과 관련된 참조값을 저장한다. 앞서 설명한 바와 같이, 개별 설정(122)에 저장된 참조값은 바르고 정확한(예: 참 또는 최적) 값이다. 그 이유는 메모리의 세 번째 영역(120)이 제조 과정 동안 메모리 디바이스(102)의 제조업체에 의해 프로그래밍 되기 때문이다. 다양한 구현에서, 메모리의 세 번째 영역(120)에 있는 설정(122)은 저장된 참조값이 향후 호스트 디바이스(104)에 의해 리프로그래밍 되는 것이 금지되는 경우에 보호될 수 있다. 따라서, 메모리의 세 번째 영역(120)은 메모리 디바이스(102)가 제조 및 출고된 이후에 호스트 디바이스(104)가 조작할 수 없도록 만드는 값의 저장 설정을 포함할 수 있다. 대안적인 구현에서는,호스트 디바이스(104)가 인증된 경우(예: 호스트 디바이스가 설정(122)에 저장된 참조값을 변경하도록 인증)에 한해 저장된 참조값이 향후 호스트 디바이스(104)에 의해 리프로그래밍 될 수 있는 방식으로 메모리의 세 번째 영역(120)에 있는 설정(122)을 보호할 수 있다. 또 다른 대안적인 구현에서, 메모리 디바이스 (예: 호스트 디바이스와의 상호 핸드셰이크(mutual handshake)를 통해)의 제어 하에 참조값이 리프로그래밍 될 수 있다.
그러므로 메모리의 세 번째 영역(120)은 메모리 디바이스(102)의 성능에 관한 실제 정보를 저장하는 하드웨어 레지스터, 디스크립터, 애트리뷰트, 플래그(예: SD 카드의 CSD 레지스터)로 구성될 수 있다. 참조값이 나타낸 실제 특성(124)은 하나 이상의 메모리 디바이스 총 용량, 메모리 영역 용량(예: 메모리의 두 번째 영역(116)), 메모리의 첫 번째 영역(108)과 메모리의 두 번째 영역(116)을 합한 용량, 메모리 개별 포션의 용량(예: 프라이머리 파티션, 물리 파티션 등), 메모리 개별 포션 또는 개별 영역의 시작 어드레스, 메모리 개별 포션 및/또는 개별 영역의 시작 어드레스의 얼라인먼트(alignment), 메모리 포션의 할당 유닛(allocation unit) 크기, 메모리 디바이스의 최대 및/또는 기본 대기 시간(latencies), 메모리 디바이스의 현재 소비값(consumption values) 등과 관련이 있을 수 있다. 본 문서에 설명된 기술은 실제 특성(124)이 보여주는 해당 정보가 왜곡되지 않도록 하여 메모리 디바이스가 실제 운영의 경계 너머에 있는 거짓 정보를 전달하지 않도록 막는다(예: 메모리 디바이스가 실제와 다르게 표시되게 하는 리프로그래밍 정보가 전달되는 것을 예방). 이 기술은 또한 더 최적화된(예: 더 높은 성능, 더 긴 수명 등) 메모리 디바이스(102)의 운영을 가능하게 한다.
그러므로 본 문서에 설명된 기술은 메모리의 첫 번째 영역(108)의 요소(112)와 메모리의 세 번째 영역(120)의 설정(122) 사이의 연결 고리를 생성한다(예: 요소에 저장된 상대값과 설정에 저장된 참조값 사이의 링크). 126에서 참조되었듯, 메모리 디바이스(102)의 컨트롤러(106)는 메모리의 세 번째 영역(120)의 설정(122)에 저장된 바와 같이 실제 특성(124)과 관련된 참조값을 평가(예: 액세스, 읽기 등)하여 동일 특성(114)의 상대값 암시를 저장하는 요소(112)와 관련된 액션이 유효하거나 요소에 남은 값이 유효하도록 할 수 있다. 메모리 디바이스(102)의 컨트롤러(106)는 또한, 및/또는 대안적으로 파생 참조값을 설정(122)에 저장된 참조값으로부터 얻어낼 수 있다. 128에서 참조되었듯, 해당 액션은 호스트 디바이스(104)에 의해 읽기 또는 쓰기 요청 등으로 시작될 수 있다. 메모리의 첫 번째 영역(108)의 요소(112)로부터 읽어온 값 또는 요소(112)에 쓰인 값이 잘못되거나 정확한 값이 아니면 130에서 참조된 바와 같이 해당 액션이 유효하지 않을 수 있다. 예를 들어, 실제 메모리 용량이 16GB인 SD 카드의 프라이머리 파티션 용량이 (거의) 64GB임을 암시하는 값을 읽거나 쓰는 경우에는 해당 액션이 유효하지 않을 수 있다. 결과적으로, 본 문서에 설명된 기술은 132에서 참조된 바와 같이 참조값 또는 파생 참조값을 평가해 올바르고 정확한 값이 요소(112)로부터 읽히거나 쓰이도록 한다. 이 경우에는 액션이 유효한 것으로 간주된다.
다양한 구현에서, 올바른 값을 확보하고 액션이 유효하도록 하기 위해 요소(112)에서 읽거나 쓴 값이 반드시 참조값이나 파생 참조값과 일치해야 하는 것은 아니다. 예를 들면, 호스트 디바이스(104)는 설정(122)에 저장된 해당 용량보다 적은 용량(예: 프라이머리 파티션 용량, 물리 파티션 용량 등) 값을 요소(112)에 써서 유효 액션을 실행할 수 있다(예: 호스트 디바이스(104)가 값을 프로그래밍하여 12GB의 프라이머리 파티션 용량을 암시할 수 있음. 이때, 참조값 또는 파생 참조값은 16GB 또는 16GB에 근접한 용량을 암시). 하지만, 호스트 디바이스(104)는 설정(122)에 저장된 해당 용량보다 큰 프라이머리 파티션 용량 값을 요소(112)에 씀으로써 유효하지 않은 액션을 실행한다(예: 호스트 디바이스(104)가 값을 프로그래밍하여 64GB(에 근접한) 프라이머리 파티션 용량을 암시함. 이때, 참조값은 16GB(에 근접한) 용량을 암시).
다양한 구현에서, 그리고 설정(122)에 저장된 정보와 요소(112)에 저장된 정보 간의 서로 다른 포맷(format)으로 인해, 컨트롤러(106)는 서로 다른 포맷 간 변환(conversion)을 구현할 수 있다. 예를 들면, 컨트롤러(106)는 첫 번째 포맷부터 두 번째 포맷까지 평가에 따라 참조값 또는 파생 참조값을 변환할 수 있다. 한 예에서, SD 카드의 메모리 용량(Byte)은 다음의 공식으로 계산된다.
(C_SIZE+1) * 512 * 1024.
요소(112)에 저장된 MBR 정보가 프라이머리 파티션의 크기와 시작 어드레스를 포함하는 경우에는 크기가 512바이트(Byte) 섹터의 개수를 암시할 수 있다. 그러므로 올바른 비교를 위해 다음과 같은 변환이 가능하다. 다음의 경우라면 액세스가 유효하다.
(C_SIZE+1) * 512 * 1024 ≥ (MBR 오프셋의 4 byte 값 + 1BEh + 0Ch) * 섹터 크기(예: 512B)
최소 하나 이상의 구현에서, 프라이머리 파티션의 파일 시스템 영역(예: FAT)은 메모리의 첫 번째 영역(108)의 일부가 될 수 있으며, 파일 시스템 영역은 프라이머리 파티션의 실제 데이터 영역의 실제 특성과 관련된 요소(112)를 포함할 수 있다. 이때 실제 데이터 영역은 메모리의 두 번째 영역(116)을 구성하거나 이 영역의 일부이다.
도 2는 참조값이 메모리의 한 영역(예: 메모리의 세 번째 영역(120))에 저장되어 있는 반면, 호스트 디바이스(104)에 표시되는(예: 액세스 되는) 값을 저장하는 요소(112)는 리프로그래밍이 가능한 메모리의 다른 영역에 저장되는(예: 메모리의 첫 번째 영역(108)) 메모리 디바이스(102)의 추가적인 세부 사항을 보여준다. 대안적인 구현에서, 메모리의 세 번째 영역(120)은 메모리 디바이스(102)의 플래시 메모리(예: NAND), 컨트롤러(106)(예: MRAM, 플래시 등)의 임베드된 비휘발성 메모리, 컨트롤러(106)의 ROM, 컨트롤러(106)(예: SRAM 또는 DRAM)에 임베드되거나 연결된 RAM, 또는 앞서 언급한 항목의 조합(예: 플래시 메모리에 영구 저장되었으나 캐시는 RAM에 있는 경우)에 위치할 수 있다.
도 2와 같이, 메모리의 첫 번째 영역(108)과 메모리의 두 번째 영역(116)은 하나 이상의 메모리 포션(202(1)…202(N))(N이 정수(integer number)인 경우)과 관련될 수 있다. 설명한 바와 같이, 메모리 포션(202(1)…202(N))은 프라이머리 파티션, 물리 파티션, 또는 로지컬 유닛(LU)으로 구성될 수 있다. 여러 예에서, 메모리 포션(202(1)…202(N))은 블록으로 분할될 수 있으며, 이 블록은 페이지로 분할될 수 있다. 따라서, 메모리 디바이스(102)의 메모리는 복수의 어드레서블(addressable) 메모리 위치를 포함할 수 있다. 어드레서블 메모리 위치는 메모리 블록, 메모리 페이지, 섹터, 메모리 바이트(byte) 등과 같은 메모리 포션(202(1)…202(N))의 일부를 최소한 포함하거나 식별할 수 있다. 어드레스는 논리 어드레스 또는 물리 어드레스일 수 있다.
도 2는 도 1의 설정(122)에 저장된 참조값에 의해 나타나는 실제 특성(124)의 예를 보여준다. 앞서 설명한 바와 같이, 참조값의 무결성(integrity)을 보호해 참조값이 메모리 디바이스의 작동 파라미터(operational parameter) 및/또는 경계를 바르고 정확하게 반영하도록 하기 위해, 메모리 디바이스 제조업체가 최초로 참조값을 프로그래밍한 이후 리프로그래밍(예: 조작)이 불가능하도록 설정(122)은 1회만 프로그래밍 가능할 수 있다. 대안적으로, 설정(122)의 프로그래밍을 인증과 연관시켜 저장된 참조값의 변경이 적절한 상황에서만 이루어지게 할 수도 있다. 더 나아가, 설정(122)의 프로그래밍을 메모리 디바이스의 제어 하에 구현하되 호스트 디바이스의 제어 하에서는 불가능하게 할 수도 있다(예: 메모리 디바이스와 호스트 디바이스 간의 핸드셰이크와 연관된 메모리 디바이스에 의해 시작되고 제어된 다이내믹 용량 조정). 일부의 경우, 설정(122)을 구성해 메모리 디바이스의 알려진 작동 경계에서 벗어나는 참조값 변경을 금지할 수 있다. 예를 들면, 메모리 용량을 나타내는 참조값을 저장하는 설정은 추가 예약 메모리(reserve memory)를 할당하기 위해 참조값의 감소를 허용할 수 있다. 단, 설정이 참조값의 증가를 금지할 수 있다. 여기에서 메모리 용량의 감소는 여전히 메모리 디바이스 운영 경계(Operational Boundary) 이내에 머물지만, 참조값이 운영 경계를 초과하는 데 메모리 용량의 증가가 원인으로 작용할 가능성이 있다. 그러므로 증가는 허용되지 않는다(위조 행위를 막기 위해).
한 예에서, 실제 특성이 메모리 디바이스(102)의 총 용량(204)을 나타낼 수 있다. 한 가지 구현에서, 총 용량(204)은 메모리의 첫 번째 영역(108)과 두 번째 영역(116)의 조합을 반영할 수 있다. 일부의 경우, 총 용량(204)은 메모리 디바이스의 유효 용량(effective density)을 나타낸다(예: 64GB SD 카드의 유효 용량은 62GB일 수 있으며, 16GB SD 카드의 유효 용량은 15GB일 수 있음). 메모리 디바이스의 유효 용량은 메모리의 전체적인 총량보다 적을 수 있으며, 이는 예약 메모리의 생성 및 관리(예: 불량 블록(failed block)에 대응하기 위해 불러낸 블록 교체), 메모리 컨트롤러 펌웨어의 스토리지, 레지스터 공간의 스토리지 등이 원인일 수 있다. 일부 구현에서, 총 용량(204)은 동적으로(dynamically) 설정을 구성할 수 있으며, 이때 참조값은 호스트 디바이스(104)와 메모리 디바이스(102) 간의 핸드셰이크에 대응해 변경될 수 있다. 따라서, 불량 메모리 또는 오류에 대응하기 위해 이전에 예약된 메모리 블록을 불러낸 경우, 총 용량(204)은 새로운 예약 메모리 블록을 할당하기 위해 감소할 수 있다. eMMC에서, 호스트 디바이스가 메모리 디바이스에 의해 제공된 용량을 동적으로 감소하도록 컨트롤러(106)를 구성해 "동적 용량(Dynamic Capacity)”을 구현할 수 있다(예: 메모리 디바이스가 메모리의 두 번째 영역으로부터 블록을 릴리스 함).
다른 예시에서, 실제 특성은 메모리의 개별 포션(206)(예: 프라이머리 파티션, 물리 파티션) 또는 메모리의 개별 영역(예: 하나 이상의 포션, 포션의 일부 등)의 용량을 나타낼 수 있다. 그러므로 메모리의 각 포션은 하나 이상의 개별 설정 및 대응 값(corresponding value)을 저장하는 하나 이상의 개별 요소와 연관될 수 있다.
다른 예시에서는, 실제 특성이 개별 포션의 시작 어드레스 또는 메모리의 개별 영역(208)을 나타낼 수 있다.
예시를 더 들자면, 실제 특성이 개별 포션의 시작 어드레스 및/또는 메모리의 개별 영역(210)의 얼라인먼트를 나타낼 수 있다. 메모리 페이지 사이즈 및/또는 메모리 블록 사이즈와 얼라이닝(Aligning) 하는 것은 메모리 디바이스의 성능을 개선하고 메모리 디바이스의 수명을 늘린다.
더 나아가 다른 예시를 들자면, 실제 특성은 메모리 개별 포션(212)의 할당 유닛의 크기를 나타낼 수도 있다. 호스트 파일 시스템이 사용하는 클러스터 크기를 메모리 디바이스에 의한 할당 유닛과 얼라이닝하면 메모리 디바이스의 성능이 향상된다.
프로세스 예시는 본 문서의 도 3 ~ 5의 논리적 흐름 그래프(logical flow graph)를 통해 설명된다. 이 그래프는 하드웨어, 소프트웨어, 또는 이들의 조합에서 구현될 수 있는 작업 시퀀스를 나타낸다. 하나 이상의 프로세서에 의해 실행되는 경우, 이 작업은 리사이티드(recited) 작업을 수행하는 실행 가능한 명령을 나타낸다. 실행 가능한 명령은 루틴, 프로그램, 오브젝트, 구성 요소(component), 모듈, 데이터 구조, 그리고 특정 기능을 수행하는 유사한 항목을 포함한다. 도 3 ~ 5에서 설명된 작업의 순서는 제한으로 해석되지 않아야 하며, 설명된 작업의 숫자를 여러 가지 순서로 및/또는 병렬적으로 결합하여 프로세스를 구현할 수 있다. 실행 가능한 명령은 컴퓨터에서 판독 가능한 명령, 데이터 구조, 프로그램 모듈, 또는 기타 데이터와 같은 정보 저장을 목적으로 여러 가지 메소드(method) 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 비착탈식 미디어를 포함한 비일시적(non-transitory) 컴퓨터 스토리지 미디어에 저장될 수 있다. 컴퓨터 스토리지 미디어는 RAM(random-access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리 또는 기타 메모리 기술, 자기 저장 디바이스(magnetic storage device), 또는 호스트 디바이스 또는 메모리 디바이스의 액세스를 위한 정보 저장에 사용될 수 있는 모든 종류의 비송신매체(non-transmission medium)를 포함하며 이에 한정되지 않는다.
도 3은 값을 저장하는 요소과 관련된 액션의 발생을 모니터링하고 액션의 유효 여부를 확인하는 프로세스(300)의 예를 보여준다. 예시로 든 프로세스(300)는 메모리 디바이스(102)(예: 메모리 디바이스(102)의 컨트롤러(106))에 의해 도 1 및/또는 도 2의 맥락에서 구현될 수 있다.
302에서, 메모리 디바이스는 메모리 디바이스, 메모리 디바이스의 메모리, 또는 메모리 디바이스의 오퍼레이션과 연관 있는 특성의 암시 값을 개별적으로 저장하는 요소(단일 또는 다수)와 관련된 액션의 발생을 모니터링한다. 앞서 설명한 바와 같이, 이 액션은 호스트 디바이스로부터의 요청을 읽거나 호스트 디바이스로부터의 요청을 쓸 수 있다. 다양한 구현에서, 해당 값을 저장하는 요소는 메타데이터(110) 저장에 사용되는 하나의 메모리 영역(예: 도 1과 2의 메모리의 첫 번째 영역(108))에 저장된다 (예: 파티셔닝 메타데이터, 메모리 디바이스의 시스템 구조와 관련된 데이터 등). 해당 요소는 호스트 디바이스에 표시되는 알려진 어드레스와 관계가 있을 수 있다. 결과적으로, 현재 요소에 저장된 값은 호스트 디바이스에 의해 변경(예: 위조범이 조작 가능)될 수 있으며, 이로 인해 메모리 디바이스의 실제 특성을 틀리거나 부정확하게 반영할 수 있다.
304에서, 메모리 디바이스는 실제 특성과 관련된 참조값과 비교하여 요소와 관련된 액션이 유효한지 여부를 결정한다. 다양한 구현에서, 참조값은 요소가 위치하는 메모리 영역에서 분리된 메모리 영역(예: 도1과 2의 메모리의 세 번째 영역(120)) 에 위치한 설정에 저장된다. 이 메모리 영역에 위치한 설정은 레지스터, 디스크립터, 애트리뷰트, 플래그 등으로 구성될 수 있다. 이 메모리 영역에서는 참조값을 읽을 수는 있으나, (i) 메모리 디바이스가 제조된 이후에는 참조값을 리프로그래밍 할 수 없으며(예: 1회만 설정 프로그래밍 가능), (ii) 호스트 디바이스가 아닌 메모리 디바이스의 제어에 의해 리프로그래밍과 변경이 가능(예: 메모리 디바이스에서 시작 및 제어되는 다이나믹(dynamic, 동적)용량 조정)하거나, 또는 (iii) 참조값을 변경하려면 호스트 디바이스 인증이 요구된다. 따라서, 참조값은 메모리 디바이스의 실제 특성을 올바르고 정확하게 반영하는 참값(true value)이라고 할 수 있다.
다양한 예에서, 값을 저장하는 요소와 관련된 액션은 요소에 쓰일 값(예: 호스트 디바이스에 의해), 요소에 최종적으로 쓰일 값(예: 메모리 컨트롤러에 의해), 또는 요소에 저장된 채 남아있는 값이 참조값에 비해(예: 참조값 미만) 유효한 경우에 유효하다. 다양한 예에서, 값을 저장하는 요소와 관련된 액션은 요소로부터 읽어올 값이 참조값에 비해 유효하거나 유효값이 참조값에 근거하여 호스트 디바이스로 전송된 경우에 유효하다.
306에서, 요소와 관련된 액션이 유효하지 않은 것으로 판단되는 경우에는 메모리 디바이스가 수정(corrective) 액션을 구현한다. 예를 들면, 수정 액션으로 (i) 현재 요소에 저장된 값을 해당 요소로부터 읽어내거나 (ii) 호스트 디바이스로부터 수신한 업데이트된 값이 유효하지 않은 값일 경우 해당 요소에 값이 쓰이는 것을 방지할 수 있다(예: 업데이트된 값이 참조값이 나타내는 용량을 초과한 용량을 나타내는 경우). 그 외의 경우(요소와 관련된 액션이 유효한 것으로 판단되는 경우)에는 메모리 디바이스가 액션을 완료한다. 예를 들면, 메모리 디바이스가 읽기 요청에 대응하여 요소에 저장된 현재 값을 반환(return)하거나 메모리 디바이가 쓰기 요청에 대응하여 업데이트된 값을 요소에 쓴다(예: 쓰인 업데이트 값이 요소에 저장된 현재 값을 대체).
도 4는 값을 저장하는 요소와 관련된 쓰기 액션이 유효한지 확인하기 위해 참조값 또는 파생 참조값을 평가하는 프로세스(400)의 예를 보여준다. 예시로 든 프로세스(400)는 메모리 디바이스(102)(예: 메모리 디바이스(102)의 컨트롤러(106))에 의해 도 1 및/또는 도 2의 맥락에서 구현될 수 있다.
402에서, 메모리 디바이스는 업데이트된 요소 값을 현재 요소 값을 저장하는 요소에 쓰기 위해 요청의 발생을 결정한다. 예를 들면, 이 요청은 메모리 디바이스 용량을 암시하는 새로운 값을 메모리의 첫 번째 영역(108)의 메타데이터(110)에 쓰려는 호스트 디바이스에 의해 시작될 수 있다.
404에서, 메모리 디바이스는 참조값을 평가한다. 앞서 설명한 바와 같이, 참조값은 요소에 부합하는 설정에 저장된다. 이 설정에는 현재 요소 값이 저장되어 있어 참조값이 현재 요소 값에 연결된다. 해당 설정은 요소가 저장된 위치와 분리된 메모리 영역에 위치한다. 따라서, 메모리 디바이스는 이 분리된 영역에서 참조값에 액세스할 수 있다. 참조값은 메모리 디바이스의 총 용량, 메모리의 개별 포션 용량, 메모리의 포션 또는 영역의 시작 어드레스 등을 반영할 수 있다.
일부 구현에서, 406에서 메모리 디바이스는 파생 참조값을 결정할 수 있다. 예를 들면, 물리 파티션 내에서 프라이머리 파티션 용량을 결정하기 위해, 해당 메모리 디바이스는 물리 파티션 용량(예: 참조값이 나타내는 암시)에서 물리 파티션 내 메타데이터(110)를 저장하는 데 사용된 메모리 양(예: 메모리의 첫 번째 영역(108)크기)을 뺀다. 따라서, 파생 참조값은 메모리의 첫 번째 영역 크기를 메모리 디바이스(예: 물리 파티션)에 있는 메모리 표션 용량 크기에서 제외함으로써 파생(예: 계산)될 수 있다.
다른 예시에서, 물리 파티션 내에서 다중 프라이머리 파티션(예: 최소 두 개)의 특정 프라이머리 파티션 용량을 결정하기 위해 메모리 디바이스는 물리 파티션 용량(예: 참조값이 나타내는 암시)에서 (i) 물리 파티션 내 메타데이터(110)를 저장하는 데 사용된 메모리 양(예: 메모리의 첫 번째 영역(108) 크기)과 (ii) 물리 파티션 내 다른 프라이머리 파티션의 크기를 뺀다. 따라서, 특정 프라이머리 파티션에 대한 파생 참조값은 물리 파티션 내 메모리의 첫 번째 영역 크기와 기타 프라이머리 파티션 크기 모두를 물리 파티션 용량 크기에서 제외함으로써 파생(예: 계산)될 수 있다.
다양한 구현에서, 앞의 두 문단에서 설명한 물리 파티션은 메모리 디바이스의 메모리를 구성하는 다중 물리 파티션 중 하나일 수 있다. 파생 참조값을 얻어낸 후에는, 프로세스가 408로 이동한다.
대안적으로, 비교에 앞서 참조값을 파생할 필요가 없는 경우라면 406과 관련한 작업을 건너뛸(예: 406 주위에 표시된 화살표) 수 있다(예: 설정에 저장된 참조값이 이미 메모리 디바이스의 메모리 포션 용량에서 메모리의 첫 번째 영역 크기를 뺀 결과인 경우).
결정(408) 시, 메모리 디바이스는 요청으로부터의 업데이트된 요소 값이 참조값 또는 파생 참조값을 초과하는지 결정한다(예: 호스트 디바이스가 메모리 디바이스 또는 호스트 디바이스의 운영 경계 밖에 있는 값을 쓰려고 시도하거나 메모리 디바이스의 작업에 최적화되지 않은 값을 쓰려고 시도함을 암시). 예를 들면, 결정은 비교에 근거하여 이루어진다.
결정(408)에서의 대답이 “아니요(No)”인 경우, 호스트로부터 쓰기 요청을 받은 것에 대한 대응으로 메모리 디바이스가 업데이트된 요소 값을 요소에 쓰도록 허용하는 곳인 410으로 프로세스가 이동한다(예: 해당 액션이 유효 및/또는 업데이트되어 쓰일 요소 값이 유효).
첫 번째 예시에서 결정(408)에서의 대답이 “예(Yes)”인 경우, 메모리 디바이스가 업데이트된 요소 값이 요소에 쓰이는 것을 금지하는 곳인 412로 프로세스가 이동한다(즉, 해당 액션은 유효하지 않다. 예를 들면, 호스트 디바이스가 프라이머리 파티션의 용량을 실제 프라이머리 파티션 용량인 ~16GB가 아닌 ~64GB로 하는 위조 값을 메타데이터에 쓰려고 시도하기 때문이다). 일부의 경우, 414에서, 메모리 디바이스는 쓰기 요청과 관련해 호스트 디바이스로부터 수신하여 업데이트된 요소 값을 쓰는 대신 선택적으로 참조값 또는 파생 참조값을 요소에 쓸 수 있다. 일부의 경우, 유효한 값이 이미 요소에 존재할 수 있다. 따라서, 유효한 값은 업데이트될 필요가 전혀 없다.
두 번째 예시에서, 결정(408)의 대답이 “예(Yes)”인 경우, 액션이 유효하지 않은 것으로 결정되었고 그리고/또는 업데이트된 요소 값이 유효하지 않은 경우에도 메모리 디바이스가 업데이트된 요소 값이 요소에 쓰이도록 허용하는 곳인 416으로 프로세스가 이동한다. 하지만 418에서는, 수정 액션이 플래그된 요소에 저장된 현재 값의 읽기와 연관되도록 하기 위해 메모리 디바이스가 내부적으로 요소를 플래그(flag)할 수 있다(예: 호스트 디바이스에 의해 쓰인 업데이트 요소 값에 근거하여 조작된 값이 되는 현재 값). 예를 들면, 플래그된 요소로부터 읽기 시도가 발생한 경우에는 메모리 디바이스가 현재 플래그된 요소에 저장된 위조 값(예: 유효하지 않은 값)을 제공하지 않는다. 대신, 메모리 디바이스가 수정 액션을 구현하여 메모리 디바이스의 무결성을 보호한다(예: 읽기 단계에서 메모리 디바이스가 해당하는 참조값 또는 파생 참조값을 액세스 및 제공).
도 5는 값을 저장하는 요소와 관련된 읽기 액션이 유효한지 확인하기 위해 참조값 또는 파생 참조값을 평가하는 프로세스(500)의 예를 보여준다. 예시로 든 프로세스(500)는 메모리 디바이스(102)(예: 메모리 디바이스(102)의 컨트롤러(106))에 의해 도 1 및/또는 도 2의 맥락에서 구현될 수 있다.
502에서, 메모리 디바이스는 요소에 현재 저장된 요소 값(현재)을 읽으려는 요청의 발생을 결정한다. 예를 들면, 해당 요청은 메모리의 첫 번째 영역(108)의 메타데이터(110)로부터 정보(예: 메모리 디바이스의 프라이머리 파티션 용량) 읽기를 시도하는 호스트 디바이스에 의해 시작될 수 있다.
504에서, 메모리 디바이스는 참조값을 평가한다. 앞서 설명한 바와 같이, 참조값은 요소에 부합하는 설정에 저장된다. 이 설정에는 현재 요소 값이 저장되어 있어 참조값이 현재 요소 값에 연결된다. 해당 설정은 요소가 저장된 위치와 분리된 메모리 영역에 위치한다. 따라서, 메모리 디바이스는 이 분리된 영역에서 참조값에 액세스할 수 있다. 참조값은 메모리 디바이스의 총 용량, 메모리의 개별 포션 용량, 메모리의 포션 또는 영역의 시작 어드레스 등을 반영할 수 있다.
일부 구현에서, 506에서 메모리 디바이스는 파생 참조값을 결정할 수 있다. 예를 들면, 물리 파티션 내에서 프라이머리 파티션 용량을 결정하기 위해, 해당 메모리 디바이스는 물리 파티션 용량(예: 참조값이 나타내는 암시)에서 물리 파티션 내 메타데이터(110)를 저장하는 데 사용된 메모리 양(예: 메모리의 첫 번째 영역(108)크기)을 뺀다. 따라서, 파생 참조값은 메모리의 첫 번째 영역 크기를 메모리 디바이스(예: 물리 파티션)에 있는 메모리 표션 용량 크기에서 제외함으로써 파생(예: 계산)될 수 있다.
다른 예시에서, 물리 파티션 내에서 다중 프라이머리 파티션(예: 최소 두 개)의 특정 프라이머리 파티션 용량을 결정하기 위해 메모리 디바이스는 물리 파티션 용량(예: 참조값이 나타내는 암시)에서 (i) 물리 파티션 내 메타데이터(110)를 저장하는 데 사용된 메모리 양(예: 메모리의 첫 번째 영역(108) 크기)과 (ii) 물리 파티션 내 다른 프라이머리 파티션의 크기를 뺀다. 따라서, 특정 프라이머리 파티션에 대한 파생 참조값은 물리 파티션 내 메모리의 첫 번째 영역 크기와 기타 프라이머리 파티션 크기 모두를 물리 파티션 용량 크기에서 제외함으로써 파생(예: 계산)될 수 있다.
다양한 구현에서, 앞의 두 문단에서 설명한 물리 파티션은 메모리 디바이스의 메모리를 구성하는 다중 물리 파티션 중 하나일 수 있다. 파생 참조값을 얻어낸 후에는, 프로세스가 508로 이동한다.
대안적으로, 비교에 앞서 참조값을 파생할 필요가 없는 경우라면 506과 관련한 작업을 건너뛸(예: 506 주위에 표시된 화살표) 수 있다(예: 설정에 저장된 참조값이 이미 메모리 디바이스의 메모리 포션 용량에서 메모리의 첫 번째 영역 크기를 뺀 결과인 경우).
결정(508) 시, 메모리 디바이스는 이미 요소에 저장된 현재 요소 값이 참조값 또는 파생 참조값을 초과하는지 결정한다(예: 호스트 디바이스가 메모리 디바이스의 운영 경계 밖에 있는 값을 쓰려고 시도함을 암시). 예를 들면, 결정은 비교에 근거하여 이루어진다.
결정(508)에서의 대답이 “아니요(No)”인 경우, 호스트로부터 쓰기 요청을 받은 것에 대한 대응으로 메모리 디바이스가 현재 요소 값을 호스트 디바이스에 제공하는 곳인 510로 프로세스가 이동한다(예: 해당 액션이 유효 및/또는 현재 요소 값이 유효).
결정(508)에서의 대답이 “예(Yes)”인 경우, 메모리 디바이스가 현재 요소 값이 호스트 디바이스에 읽히는 것을 금지하는 곳인 512로 프로세스가 이동한다(예: 해당 액션 및/또는 현재 요소 값은 유효하지 않다. 예를 들면, 호스트 디바이스가 프라이머리 파티션의 용량을 실제 프라이머리 파티션 용량인 ~16GB가 아닌 ~64GB로 하는 위조 값을 메타데이터로부터 읽으려고 시도하기 때문이다).
514에서, 메모리 디바이스는 현재 요소 값 대신 참조값 또는 파생 참조값을 호스트 디바이스에 제공한다.
도 6은 (i)호스트 디바이스 쓰기 액션의 유효 여부 또는 (ii) 요소에 이미 저장된 현재 값의 유효 여부를 확인하기 위해 호스트 디바이스(104)와 메모리 디바이스(102) 사이에서 구현된 상호 작용의 예를 보여준다. 도 6의 상호 작용 예시는 도 1 및/또는 도 2의 맥락에서 구현될 수 있다.
도 6은 메모리의 첫 번째 영역(108)을 보여준다 (도 1에서부터). 메모리의 첫 번째 영역(108)은 값을 저장하는 첫 요소(602)와 값을 저장하는 두 번째 요소(604), 그리고 값을 저장하는 세 번째 요소(606)를 포함한다. 도 6이 세 가지 요소를 보여주는 반면, 메타데이터(110)는 메모리 디바이스 특성의 암시 값을 저장하는 모든 요소의 숫자를 포함할 수 있는 것으로 이해된다.
상호 작용(608)에서, 호스트 디바이스(104)는 업데이트된 요소 값을 요소(604)에 쓰라는 요청을 하고, 메모리 디바이스(102)는 업데이트된 요소 값을 요소(604)에 쓰라는 요청을 받는다.
결정(610) 시, 메모리 디바이스(102)는 요소(604)와 관련된 액션의 유효성(validation)이 사용 가능한지 여부를 결정한다. 예를 들면, 메모리 디바이스(102)는 요소(604)의 사용 가능 여부와 관련한 유효성을 암시하는 메모리의 세 번째 영역(120)에 있는 설정(예: 레지스터, 애트리뷰트 등)에 액세스할 수 있다. 유효성의 사용 가능 여부를 암시하는 설정은 요소(604)와 관련한 액션이 유효한지 여부를 결정하는 데 사용되는 참조값을 저장하는 설정으로부터 분리될 수 있다.
결정(610)에 대한 대답이 "아니요(No)”인 경우(예: 유효성이 사용 불가능), 612에서 메모리 디바이스(102)가 쓰기 요청 및/또는 업데이트된 요소 값의 유효성을 확인하지 않고 호스트 디바이스(104)로부터 받은 업데이트된 요소 값을 요소(604)에 쓴다. 상호 작용(614)에서, 메모리 디바이스(102)는 성공적인 업데이트 승인(acknowledgement)을 호스트 디바이스(104)로 반환한다.
결정(610)에 대한 대답이 “예(Yes)”인 경우(예: 유효성이 사용 가능), 결정(616) 시 메모리 디바이스(102)가 호스트 디바이스(104)로부터 받은 업데이트된 요소 값과 요소(604)에 쓰일 값이 유효한지 여부를 결정한다. 예를 들면, 메모리 디바이스(102)는 도 4의 프로세스(400) 예시에서 408과 관련한 비교를 구현할 수 있다.
결정(616)에 대한 대답이 “예(Yes)”인 경우, 618에서 메모리 디바이스(102)가 유효한 것으로 결정될 호스트 디바이스(104)로부터 수신한 업데이트된 요소 값을 요소(604)에 쓰며, 액션이 유효하기 때문에 상호 작용(620)에서, 메모리 디바이스(102)는 성공적인 업데이트 승인(acknowledgement)을 호스트 디바이스(104)로 반환한다.
결정(616)에 대한 대답이“아니요(No)”인 경우, 결정(622)에서 쓰기/업데이트를 위한 자동 수정이 가능한지 여부를 메모리 디바이스(102)가 결정한다(예: 유효하지 않은 액션 및 유효하지 않은 업데이트된 요소 값을 수정하기 위해). 예를 들면, 메모리 디바이스(102)는 요소(604)의 사용 가능 여부와 관련한 유효하지 않은 액션의 자동 수정 여부를 암시하는 메모리의 세 번째 영역(120)에 있는 다른 설정(예: 레지스터, 애트리뷰트 등)에 액세스할 수 있다. 자동 수정의 사용 가능 여부를 암시하는 설정은 요소(604)와 관련한 액션이 유효한지 여부를 결정하는 데 사용되는 참조값을 저장하는 설정으로부터도 분리될 수 있다.
결정(622)에 대한 대답이 “아니요(No)”인 경우, 상호 작용(624)에서 메모리 디바이스(102)가 성공적이지 않은 업데이트 승인을 호스트 디바이스(104)로 반환하며, 쓰기 액션이 유효하지 않은 것으로 결정되었기 때문에 요소(604)에 저장된 현재 값은 업데이트되지 않는다.
결정(622)에 대한 대답이 “예(Yes)”인 경우, 626에서 메모리 디바이스(102)가 유효한 업데이트 값(예: 앞서 설명한 참조값 또는 파생 참조값)을 결정한다. 이후 628에서는, 메모리 디바이스(102)가 호스트 디바이스(104)로부터 수신한 업데이트된 요소 값 대신 유효한 업데이트 값을 요소(604)에 쓴다. 그리고 상호 작용(630)에서, 메모리 디바이스(102)는 성공적인 업데이트 승인을 호스트 디바이스(104)로 반환한다.
도 7은 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스(예: SD 카드)의 예를 보여준다. 도 7은 MBR(Master Boot Record) 파티셔닝 및 FAT(File Allocation Table) 파일 시스템을 구현하는 단일 물리 파티션(702)(예: “Single Initial Physical Partition”)을 보여준다. 이 예시에서, 단일 물리 파티션은, 예를 들어 F7FF FFFFh의 어드레스 공간 0000 0000h을 통해, 호스트 디바이스 및/또는 호스트 디바이스의 사용자에 표시되는 ~62GB의 메모리 공간(예: SD 카드와 관련된 “사용자 데이터 영역(user data area)”으로 칭하기도 함)을 포함한다. 단일 물리 파티션(702)은 앞서 설명한 메모리 포션으로 구성된다.
도 7은 또한 레지스터를 위한 메모리 영역(704)(예: CSD, CID, SCR, SD Status, C_Size, AU_Size 등)과 리저브드 블록(reserved block), 펌웨어(FW), 디지털 저작권 관리(Digital Rights Management:DRM) 등을 위한 메모리 영역(706)을 보여준다. 도 1 관련한 앞의 설명과 같이, 메모리 영역(704)은 메모리의 세 번째 영역(120)과 관련이 있을 수 있다. 도 7의 예시가 보여주는 SD 카드 는 64GB SD 카드로 구성되며, ~62GB의 단일 물리 파티션(702)은 64GB에서 메모리 영역(704) 및 메모리 영역(706)을 뺀 후 호스트 디바이스에 표시되는 SD 카드의 총 용량이다.
도 7은 단일 물리 파티션(702)을 더욱 상세히 보여준다. 예를 들어, 단일 물리 파티션(702)은 어드레스 XXXX에서 시작하는 MBR 프라이머리 파티션(710) 및 파티션 메타데이터 영역(708)을 포함한다. 파티션 메타데이터 영역(708)은 앞서 도 1과 관련하여 설명한 메모리의 첫 번째 영역(108)과 관련이 있을 수 있다. 더불어, MBR 프라이머리 파티션(710)은 앞서 도 1과 관련하여 설명한 메모리의 두 번째 영역(116)과 관련이 있을 수 있다. 그러므로 MBR 프라이머리 파티션(710)은 연결된 호스트 디바이스의 파일 시스템 레이어에 표시된다.
다양한 예에서, MBR 프라이머리 파티션(710)의 용량을 나타내는 값(예: 크기)을 저장하는 파티션 메타데이터 영역(708)의 요소와 관련된 읽기 또는 쓰기 액션을 호스트 디바이스가 구현할 수 있다(도 7의 YYYY). 이 액션은 파티션 메타데이터 영역(708)의 요소를 타겟으로 위조범에 의해 구현된 액션(예: 거짓 값 쓰기 시도)일 수도 있다. 앞서 설명한 바와 같이, 메모리 영역(704)의 레지스터 설정은 참조값(예: 참값)을 저장한다. 이 참조값은 (i) 초기 물리 파티션(702) 용량 또는 (ii) MBR 프라이머리 파티션(710) 용량을 암시할 수 있다. 이후, 메모리 디바이스는 파티션 메타데이터 영역(708)의 요소로부터 값을 읽어오는 것 또는 요소에 값을 쓰는 것이 메모리 영역(704)의 레지스터 설정에 저장된 참조값과 비교하여 유효한지 확인하기 위해 앞서 설명한 기술을 사용할 수 있다. 예를 들면, 참조값이 MBR 프라이머리 파티션(710) 용량을 암시하는 경우 메모리 디바이스는 읽히거나 쓰일 값을 직접 참조값과 비교할 수 있다. 다른 예시에서, 메모리 디바이스는 단일 물리 파티션 용량(예: 참조값으로 암시)에서 파티션 메타데이터 영역(708) 크기를 뺌으로써 파생 참조값을 얻을 수 있다. 이때, 파생 참조값은 MBR 프라이머리 파티션(710)의 참 용량을 암시한다(도 7의 YYYY). 일부의 경우, MBR 프라이머리 파티션(710)의 참 용량을 얻으려면 메모리 디바이스가 잠재적인 파티션 외(out-of-partition) 공간 크기(예: 정렬 오버헤드(alignment overhead))를 추가적으로 빼야 할 수도 있다. 또한, 물리 파티션 크기를 암시하는 참조값에 쓰일 값을 비교하는 것이 적당한 것으로 간주될 수 있다.
도 7은 파티션 메타데이터 영역(708) 및 MBR 프라이머리 파티션(710)의 상세 정보를 보여준다. 예를 들면, 파티션 메타데이터 영역(708)이 시작 어드레스(예: “XXXX”) 및 MBR 프라이머리 파티션(710) 크기(예: “YYYY”)를 나타내는 정보를 저장하는 MBR(Master Boot Record)(712)(예: 앞서 설명한 하나 이상의 "요소")을 포함할 수 있다. 다른 예시에서는, MBR 프라이머리 파티션(710)이 연결된 호스트 디바이스의 파일 시스템 레이어를 통해 애플리케이션에 액세스할 수 있는 프라이머리 파티션(722)의 실제 데이터 영역과 첫 번째 FAT(File Allocation Table)(716), 두 번째 FAT(718), 루트 디렉토리(Root Directory)(720), 그리고 파티션 부트 섹터(Partition Boot Sector)(714)를 포함할 수 있다.
도 8은 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스의 예를 보여준다. 도 8은 GPT(GUI 파티션 테이블) 파티셔닝 및 FAT 파일 시스템을 구현하는 단일 물리 파티션(802) (예: the “Single Initial Physical Partition”)을 보여준다. 도 7과 유사하게, 이 예시에서는 단일 물리 파티션(802)이 호스트 디바이스 및/또는 호스트 디바이스의 사용자에 표시되는 ~62GB의 메모리 공간(예: NAND 메모리)을 포함할 수 있다. 단일 물리 파티션(802)은 앞서 설명한 메모리 포션으로 구성된다.
도 8은 또한 레지스터를 위한 메모리 영역(804) 및 리저브드 블록(reserved block), 펌웨어(FW) 등을 위한 메모리 영역(806)을 보여준다. 앞서 도 1과 관련하여 설명한 바와 같이, 메모리 영역(804)은 메모리의 세 번째 영역(120)과 관련될 수 있다. 
도 8은 단일 물리 파티션(802)을 더욱 상세히 보여준다. 예를 들면, 단일 물리 파티션(802)은 첫 번째 파티션 메타데이터 영역(808), 두 번째 파티션 메타데이터 영역(810)(백업용), 그리고 어드레스 XX로 시작하고 어드레스 YY로 끝나는(예: XX 및 YY가 논리 블록 어드레스(LBA)인 경우) GUID 파티션(812) 을 포함한다. 첫 번째 파티션 메타데이터 영역(808)과 두 번째 파티션 메타데이터 영역(810)은 앞서 도 1과 관련하여 설명한 메모리의 첫 번째 영역(108)과 개별적으로 관련이 있을 수 있다. 게다가, GUID 파티션(812)은 앞서 도 1과 관련하여 설명한 메모리의 두 번째 영역(116)과 관련이 있을 수 있다. 그러므로 GUID 파티션(812)은 연결된 호스트 디바이스의 파일 시스템 레이어에 표시된다.
다양한 예에서, GUID 파티션(812)의 용량을 나타내는 값(예: 크기)을 저장하는 파티션 메타데이터 영역(808)의 요소와 관련된 읽기 또는 쓰기 액션을 호스트 디바이스가 구현할 수 있다(도 8의 시작 어드레스XX 및 종료 어드레스 YY ). 이 액션은 파티션 메타데이터 영역(808)의 요소를 타겟으로 위조범에 의해 구현된 액션(예: 거짓 값 쓰기 시도)일 수도 있다. 앞서 설명한 바와 같이, 메모리 영역(804)의 레지스터 설정은 참조값(예: 참값)을 저장한다. 이 참조값은 (i) 초기 물리 파티션(802) 용량 또는 (ii) GUID 파티션(812) 용량을 암시할 수 있다. 이후, 메모리 디바이스는 파티션 메타데이터 영역(808)의 요소로부터 값을 읽어오는 것 또는 요소에 값을 쓰는 것이 메모리 영역(804)의 레지스터 설정에 저장된 참조값과 비교하여 유효한지 확인하기 위해 앞서 설명한 기술을 사용할 수 있다. 예를 들면, 참조값이 GUID 파티션(812) 용량을 암시하는 경우 메모리 디바이스는 읽히거나 쓰일 값을 직접 참조값과 비교할 수 있다. 다른 예시에서, 메모리 디바이스는 단일 물리 파티션(802) 용량(예: 참조값으로 암시)에서 파티션 메타데이터 영역(808) 크기 및 파티션 메타데이터 영역(810) 크기를 뺌으로써 파생 참조값을 얻을 수 있다. 이때, 파생 참조값은 GUID 파티션(812)의 참 용량을 암시한다. 일부의 경우, GUID 파티션(812)의 참 용량을 얻으려면 메모리 디바이스가 잠재적인 파티션 외(out-of-partition) 공간 크기(예: 정렬 오버헤드(alignment overhead))를 추가적으로 빼야 할 수도 있다.
도 8은 첫 번째 파티션 메타데이터 영역(808)과 두 번째 파티션 메타데이터 영역(810), 그리고 GUID 파티션(812)의 상세 정보를 보여준다. 예를 들면, 첫 번째 파티션 메타데이터 영역(808)은 보호 MBR(protective Master Boot Record)(814), 프라이머리 GUID 파티션 테이블 헤더(816), GUID 파티션(812)의 시작 어드레스(예: “XX”) 및 마지막 어드레스(예: “YY”)를 나타내는 정보를 저장하는 프라이머리 GUID 파티션 항목(818)(예: 앞서 설명한 하나 이상의 "요소")을 포함할 수 있다. 다른 예시에서, GUID 파티션(812)은 (i) 파티션 부트 섹터, 할당 테이블, 루트 디렉토리 엔트리 등을 포함하는 파일 시스템 영역(820) 및 (ii) 연결된 호스트 디바이스의 파일 시스템 레이어를 통해 애플리케이션에 액세스할 수 있는 프라이머리 GUID 파티션(812)의 실제 데이터 영역(822)을 포함할 수 있다. 다른 예시에서는, 두 번째 파티션 메타데이터 영역(810)이 백업 GUID 파티션 테이블 헤더(824) 및 백업 GUID 파티션 항목(826)을 포함할 수 있다.
도 9는 본 특허출원서에서 설명한 기술이 구현될 수 있는 메모리 디바이스(예: eMMC)의 예를 보여준다. 도 9는 개별적으로 MBR 파티셔닝과 FAT(File Allocation Table) 파일 시스템을 구현하는 다수의 물리 파티션과 다수의 프라이머리 파티션을 보여준다.
예를 들어, 도 9의 eMMC 메모리 디바이스는 리플레이 프로텍티드 메모리 블록(replay protected memory block, RPMB) 파티션(902), 첫 번째 물리 부트 파티션(904), 두 번째 물리 부트 파티션(906), 그리고 초기 물리 파티션(908)을 포함한다. 이 예시에서, 초기 물리 파티션(908)은 호스트 디바이스 및/또는 호스트 디바이스의 사용자에 표시되는 ~60GB의 메모리 공간(예: eMMC와 관련된 “사용자 데이터 영역”으로 칭하기도 함)을 포함한다.
도 9는 또한 레지스터를 위한 메모리 영역(910)(예: CSD, CID, EXT_CSD, SEC_Count 등) 및 리저브드 블록(reserved block), 펌웨어(FW) 등을 위한 메모리 영역(912)을 보여준다. 앞서 도 1과 관련하여 설명한 바와 같이, 메모리 영역(910)은 메모리의 세 번째 영역(120)과 관련될 수 있다.
이 예시에서, 초기 물리 파티션(908)은 여러 개의 범용 파티션(GPP)으로 분할될 수 있다. 예를 들어, 첫 번째 물리 GPP(914), 두 번째 물리 GPP(916), 세 번째 물리 GPP(918), 그리고 네 번째 물리 GPP(920)에 각각 공간을 할당해 초기 물리 파티션(908)과 첫 번째 물리 GPP(914), 두 번째 물리 GPP(916), 세 번째 물리 GPP(918), 네 번째 물리 GPP(920)의 남은 공간 내 사용자 데이터 영역으로 구성된 다섯 개의 물리 파티션을 생성할 수 있다. 물리 GPP의 크기는 구성이 가능하며, 따라서 물리 GPP가 각자 다를 수 있다(예: 첫 번째 물리 GPP(914)의 크기는 2GB, 두 번째 물리 GPP(916)의 크기는 4GB, 세 번째 물리 GPP(918)의 크기는 8GB 등). 이러한 이유로, 도 9에서 참조된 바와 같이 물리 GPP가 구성된 이후에는 60GB의 초기 사용자 데이터 영역을 가지고 있는 eMMC의 사용자 데이터 영역이 ~40GB로 줄어들 수 있다.
설명을 쉽게 이해할 수 있도록, 도 9는 첫 번째 물리 GPP(914)를 매우 상세히 보여준다. 예를 들어, 첫 번째 물리 GPP(914)는 파티션 메타데이터 영역(922), 어드레스 XXX1로 시작하는 첫 번째 MBR 프라이머리 파티션(924), 어드레스 XXX2로 시작하는 두 번째 MBR 프라이머리 파티션(926)을 포함한다. 파티션 메타데이터 영역(922)은 앞서 도 1과 관련하여 설명한 메모리의 첫 번째 영역(108)과 관련이 있을 수 있다. 게다가, 첫 번째 MBR 프라이머리 파티션(924)과 두 번째 MBR 프라이머리 파티션(926)은 앞서 도 1과 관련하여 설명한 메모리의 두 번째 영역(116)과 관련이 있을 수 있다. 그러므로 각각의 첫 번째 MBR 프라이머리 파티션(924)과 두 번째 MBR 프라이머리 파티션(926)은 연결된 호스트 디바이스의 파일 시스템 레이어에 표시된다.
다양한 예에서, 첫 번째 MBR 프라이머리 파티션(924)의 용량을 나타내는 값(예: 크기)을 저장하는 파티션 메타데이터 영역(922)의 요소와 관련된 읽기 또는 쓰기 액션을 호스트 디바이스가 구현할 수도 있다(도 9의 YYY1). 이 액션은 파티션 메타데이터 영역(922)의 요소를 타겟으로 위조범에 의해 구현된 액션(예: 거짓 값 쓰기 시도)일 수도 있다. 앞서 설명한 바와 같이, 메모리 영역(910)의 레지스터 설정은 참조값(예: 참값)을 저장한다. 이 참조값은 (i) 첫 번째 물리 GPP(914) 용량 또는 (ii) 첫 번째 MBR 프라이머리 파티션(924) 용량을 암시할 수 있다. 이후, 메모리 디바이스는 파티션 메타데이터 영역(922)의 요소로부터 값을 읽어오는 것 또는 요소에 값을 쓰는 것이 메모리 영역(910)의 레지스터 설정에 저장된 참조값과 비교하여 유효한지 확인하기 위해 앞서 설명한 기술을 사용할 수 있다. 예를 들면, 첫 번째 MBR 프라이머리 파티션(924)의 용량을 참조값이 암시하는 경우에는 메모리 디바이스가 참조값에 직접 읽히거나 쓰일 값을 비교할 수 있다. 다른 예시에서, 메모리 디바이스는 첫 번째 물리 GPP(914) 용량(예: 참조값이 암시)에서 파티션 메타데이터 영역(922) 크기를 뺀 후 다른 프라이머리 파티션(예: 도 9의 YYY2에 암시된 것과 같은 두 번째 MBR 프라이머리 파티션(926)) 크기를 뺌으로써 파생 참조값을 얻을 수 있다. 따라서 파생 참조값은 첫 번째 MBR 프라이머리 파티션(924)(도 9의 YYY1)의 참 용량을 암시한다. 일부의 경우, 첫 번째 MBR 프라이머리 파티션(924)의 참 용량을 얻으려면 메모리 디바이스가 잠재적인 파티션 외(out-of-partition) 공간 크기(예: 정렬 오버헤드(alignment overhead))를 추가적으로 빼야 할 수도 있다.
도 9는 파티션 메타데이터 영역(922) 및 MBR 프라이머리 파티션(924 및 926)의 상세 정보를 보여준다. 예를 들면, 파티션 메타데이터 영역(922)이 시작 어드레스(예: “XXX1” 및 “XXX2”) 및 MBR 프라이머리 파티션(924 및 926)의 크기(예: “YYY1” 및 “YYY2”)를 나타내는 정보를 저장하는 MBR(예: 앞서 설명한 하나 이상의 "요소")을 포함할 수 있다. 다른 예시에서, 각 MBR 프라이머리 파티션(924 및 926)은 프라이머리 파티션 부트 섹터, 첫 번째 FAT(File Allocation Table), 두 번째 FAT, 루트 디렉토리, 연결된 호스트 디바이스의 파일 시스템 레이어를 통해 애플리케이션에 액세스할 수 있는 실제 데이터 영역을 포함할 수 있다.
또 다른 대안적인 구현에서, 메모리 디바이스는 요소 값(또는 호스트 디바이스가 쓰기 시도를 할 수 있는 업데이트된 요소 값)을 참조값 또는 파생 참조값과 비교할 뿐만 아니라, 다른 요소 값(또는 값)과도 비교할 수 있다. 이는, 메모리 디바이스의 동일한 특성과 다른 방식으로 관련되거나 해당 동일 특성을 정의하는 요소 값이 컨버징 값(converging value)을 저장할 수 있게 한다. 한 가지 예로, MBR에서 프라이머리 파티션의 크기를 두 가지로 나타낼 수 있다. 한 가지는 실린더, 헤드 섹터(CHS) 메소드(method)이며, 다른 한 가지는 논리 블록 어드레스(LBA) 메소드이다. 이 경우, 메모리 디바이스가 메소드 중 하나(하나 이상의 요소)를 보조 참조(secondary reference)로 여기며(세 번째 영역의 참조에 추가하여), 해당 메모리 디바이스는 이 애플리케이션에 설명된 메소드에 따라 수렴된 요소(즉, 다른 메소드)에 값이 계속 저장되거나 표시되도록 할 수 있다.
일부의 경우, 참조값은 단일 값(예: 0Fh, 16d, 0000 1111b), 값 집합(예: 02h, 0Ah, 0Fh), 값 범위(예: 02h - 0Ah), 또는 여기에서 설명된 바와 같이 이 모든 것의 조합일 수 있다. 유효한 것으로 입증될 액션이라함은, 참조값에 대한 비교가 여기에서 설명된 액션들과 같거나(예: 요소에 대한 읽기/쓰기 값이 참조값과 동일), 다르거나, 적거나, 크거나, 범위 안에 있거나, 범위 밖에 있거나, 값 집합에 하나 이상 있거나, 값 집합에 없거나, 여러 개가 있거나, 또는 그것들의 조합일 수 있다는 의미이다.
일부의 경우를 예로 들자면, 파생 참조값은 하나 이상의 참조값의 기능, 하나 이상의 업데이트된 요소 값의 기능, 또는 하나 이상의 현재 요소 값의 기능의 결과일 수 있다. 예를 들어, 파생 참조값은 메모리 용량(예: 메모리 영역의 크기)을 뺀 참조값, 두 번째 값을 더한 참조값, 또는 참조값으로 마스킹될 업데이트 요소 값을 포함할 수 있으며 이에 국한되지 않는다.
일부의 경우, 액션은 요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청으로 구성된다. 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위한 추가 작업은 (메모리) 컨트롤러에 의한 제한, 호스트 디바이스로부터 현재 요소 값 읽기, 호스트 디바이스에 현재 요소 값 대신 참조값(또는 파생 참조값) 제공하기가 포함될 수 있다.
예시 항목
예시 A, 다음의 메모리로 구성되는 메모리 디바이스: 메모리 포션과 관련된 최소 하나 이상의 특성을 암시하는 요소 값을 하나 이상 저장하는 요소를 하나 이상 포함하는 메타데이터를 저장하는 첫 번째 메모리 영역, 적어도 메모리 포션의 일부분에서 메타데이터를 저장하는 두 번째 메모리 영역, 메모리 포션과 관련된 실제 특성과 관련된 참조값과 비교하여 하나 이상의 요소와 관련된 액션의 유효 여부를 확인하도록 구성된 컨트롤러.
예시 B, 메모리 포션이 다음 중 하나 이상으로 구성된 예시 A의 메모리 디바이스: 프라이머리 파티션, 물리 파티션, 프라이머리 파티션의 실제 데이터 영역 또는 로지컬 유닛(LU).
예시 C, 메모리의 개별 영역이 다음 중 하나 이상으로 구성된 예시 A의 메모리 디바이스: 프라이머리 파티션, 프라이머리 파티션의 포션, 물리 파티션의 포션, 프라이머리 파티션의 파일 시스템 메타데이터 영역, 또는 로지컬 유닛(LU)의 포션.
예시 D, 예시 A부터 예시 C 중 메모리 포션과 관련된 실제 특성이 다음 중 하나와 관련된 메모리 디바이스: 메모리 디바이스 총 용량, 메모리의 첫 번째 영역과 메모리의 두 번째 영역 용량을 합한 용량, 메모리 포션 용량, 메모리의 두 번째 영역 용량, 메모리 영역 또는 포션의 시작 어드레스, 메모리 영역 또는 포션의 시작 어드레스 정렬, 또는 메모리 포션의 할당 유닛 크기.
예시 E, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 메모리 디바이스 용량과 관련된 메모리 포션과 관련된 실제 특성, 그리고 다음과 같이 구성된 컨트롤러: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 F, 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 참조값을 요소에 쓰도록 컨트롤러가 구성된 예시 E의 메모리 디바이스.
예시 G, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량과 관련된 실제 특성 물리 파티션, 그리고 다음과 같이 구성된 컨트롤러: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기를 물리 파티션 용량에서 뺌으로써 파생 참조값을 구함, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 H, 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 파생 참조값을 요소에 쓰도록 컨트롤러가 구성된 예시 G의 메모리 디바이스.
예시 I, 예시 G 또는 예시 H의 메모리 디바이스 중 파생 참조값이 물리 파티션 내 단일 프라이머리 파티션 용량을 나타내며, 물리 파티션이 메모리 디바이스의 메모리를 구성하는 하나 이상의 물리 파티션인 메모리 디바이스.
예시 J, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값과 프라이머리 파티션과 연관되는 현재 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량과 관련된 실제 특성 물리 파티션, 그리고 다음과 같이 구성된 컨트롤러: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기와 프라이머리 파티션 크기를 물리 파티션 용량에서 뺌으로써 프라이머리 파티션과 관련된 파생 참조값을 구함, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 K, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 메모리 디바이스 용량과 관련된 메모리 포션과 관련된 실제 특성, 그리고 다음과 같이 구성된 컨트롤러: 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 이미 요소에 저장된 현재 요소 값이 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 L, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량을 구성하는 물리 파티션과 관련된 실제 특성, 물리 파티션, 그리고 다음과 같이 구성된 컨트롤러: 현재 요소 값을 요소로부터 읽어오라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기를 물리 파티션 용량에서 뺌으로써 파생 참조값을 구함, 이미 요소에 저장된 현재 요소 값이 파생 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 M, 파생 참조값이 물리 파티션 내 단일 프라이머리 파티션 용량을 나타내며, 물리 파티션이 메모리 디바이스의 메모리를 구성하는 하나 이상의 물리 파티션인 예시 L의 메모리 디바이스.
예시 N, 예시 A부터 예시 D 중 다음을 포함하는 메모리 디바이스: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량을 구성하는 물리 파티션과 관련된 실제 특성, 그리고 다음과 같이 구성된 컨트롤러: 현재 요소 값을 요소로부터 읽어오라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기와 프라이머리 파티션 크기를 물리 파티션 용량에서 뺌으로써 프라이머리 파티션과 관련된 파생 참조값을 구함, 이미 요소에 저장된 현재 요소 값이 파생 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 O, 예시 A에서 예시 N 중 최소 하나 이상의 레지스터, 디스크립터, 애트리뷰트 또는 플래그로 구성된 메모리의 세 번째 영역을 통해 참조값에 액세스할 수 있도록 컨트롤러가 구성된 메모리 디바이스.
예시 P, 다음과 같이 구성된 예시 A의 메모리 디바이스: 메모리 포션과 관련된 실제 특성이 메모리의 첫 번째 영역과 메모리의 두 번째 영역을 합한 용량과 관련됨, 호스트 디바이스와 메모리 디바이스 사이의 핸드셰이크에 기반하여 동적으로 구성된 참조값.
예시 Q, 예시 A부터 예시 P 중 임베드된 MultiMediaCard (eMMC) 메모리 디바이스, UFS(Universal Flash Storage) 카드, PCIe(Peripheral Component Interconnect express) 카드 또는 SSD(Solid State Drive) 중 하나로 구성된 메모리 디바이스.
예시 R, 예시 A부터 예시 Q 중 메타데이터가 MBR(Master Boot Record), GUID(globally unique identifiers) 파티션 테이블 (GPT), 또는 VBR(Volume Boot Record) 중 하나와 관련된 메모리 디바이스.
예시 S, 예시 A부터 예시 R 중 호스트 디바이스의 제조업체에 의해 한 번만 프로그래밍이 가능한 설정에 참조값이 저장된 메모리 디바이스.
예시 T, 예시 A부터 예시 R 중 참조값을 리프로그래밍 하기 전에 호스트 디바이스의 인증을 요구하는 설정에 참조값이 저장된 메모리 디바이스.
예시 U, 다음과 같이 구성된 메소드: 하나 이상의 요소 중 하나의 요소와 관련된 액션이 메모리 포션과 연관된 실제 특성과 관련된 참조값에 비해 유효한지 확인하는 메모리 디바이스의 컨트롤러, 메모리 포션과 연관된 특성을 적어도 하나 이상 암시하는 요소 값을 하나 이상 저장하는 요소를 하나 이상 포함하는 메타데이터를 저장하는 첫 번째 영역과 메모리 포션에서 적어도 일부의 데이터를 저장하는 두 번째 영역으로 구성된 메모리.
예시 V, 메모리 포션이 다음 중 하나 이상으로 구성된 예시 U의 메소드: 프라이머리 파티션, 물리 파티션, 프라이머리 파티션의 실제 데이터 영역 또는 로지컬 유닛(LU).
예시 W, 메모리의 개별 영역이 다음 중 하나 이상으로 구성된 예시 U의 메소드: 프라이머리 파티션, 프라이머리 파티션의 포션, 물리 파티션의 포션, 프라이머리 파티션의 파일 시스템 메타데이터 영역, 또는 로지컬 유닛(LU)의 포션.
예시 X, 예시 U부터 예시 W 중 메모리 포션과 관련된 실제 특성이 다음 중 하나와 관련된 메소드: 메모리 디바이스 총 용량, 메모리의 첫 번째 영역과 메모리의 두 번째 영역 용량을 합한 용량, 메모리 포션 용량, 메모리의 두 번째 영역 용량, 메모리 영역 또는 포션의 시작 어드레스, 메모리 영역 또는 포션의 시작 어드레스 정렬, 또는 메모리 포션의 할당 유닛 크기.
예시 Y, 예시 U부터 예시 X 중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 메모리 디바이스 용량과 관련된 메모리 포션과 관련된 실제 특성, 그리고 다음과 같이 추가 구성된 메소드: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 Z, 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 참조값을 요소에 쓰도록 구성된 예시 Y의 메소드.
예시 AA, 예시 U부터 예시 X 중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량과 관련된 실제 특성 물리 파티션, 그리고 다음과 같이 추가 구성된 메소드: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기를 물리 파티션 용량에서 뺌으로써 파생 참조값을 구함, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 BB, 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 파생 참조값을 요소에 쓰도록 구성된 예시 AA의 메소드.
예시 CC, 파생 참조값이 물리 파티션 내 단일 프라이머리 파티션 용량을 나타내며, 물리 파티션이 메모리 디바이스의 메모리를 구성하는 하나 이상의 물리 파티션인 예시 AA 또는 예시 BB의 메소드.
예시 DD, 예시 U부터 예시 X 중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값과 프라이머리 파티션과 연관되는 현재 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량과 관련된 실제 특성 물리 파티션, 그리고 다음과 같이 추가 구성된 메소드: 업데이트된 요소 값을 요소에 쓰라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기와 프라이머리 파티션 크기를 물리 파티션 용량에서 뺌으로써 프라이머리 파티션과 관련된 파생 참조값을 구함, 업데이트 요소 값이 참조값을 초과하는지 여부를 결정, 업데이트 값이 요소에 쓰이지 않게 제한.
예시 EE, 예시 U부터 예시 X 중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 메모리 디바이스 용량과 관련된 메모리 포션과 관련된 실제 특성, 그리고 다음과 같이 추가 구성된 메소드: 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 이미 요소에 저장된 현재 요소 값이 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 FF, 예시 U부터 예시 X중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량을 구성하는 물리 파티션과 관련된 실제 특성, 물리 파티션, 그리고 다음과 같이 추가로 구성된 메소드: 현재 요소 값을 요소로부터 읽어오라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기를 물리 파티션 용량에서 뺌으로써 파생 참조값을 구함, 이미 요소에 저장된 현재 요소 값이 파생 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 GG, 파생 참조값이 물리 파티션 내 단일 프라이머리 파티션 용량을 나타내며, 물리 파티션이 메모리 디바이스의 메모리를 구성하는 하나 이상의 물리 파티션인 예시 FF의 메소드.
예시 HH, 예시 U부터 예시 X 중 다음을 포함하는 메소드: 요소에 이미 저장된 현재 요소 값으로 구성된 요소 값, 물리 파티션으로 구성된 메모리 포션, 요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 물리 파티션 용량을 구성하는 물리 파티션과 관련된 실제 특성, 그리고 다음과 같이 추가로 구성된 메소드: 현재 요소 값을 요소로부터 읽어오라는 호스트 디바이스로부터의 요청을 모니터링, 참조값 평가, 첫 번째 메모리 영역 크기와 프라이머리 파티션 크기를 물리 파티션 용량에서 뺌으로써 프라이머리 파티션과 관련된 파생 참조값을 구함, 이미 요소에 저장된 현재 요소 값이 파생 참조값을 초과하는지 여부를 결정, 호스트 디바이스로부터 현재 요소 값 읽기 제한, 수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
예시 II, 예시 U에서 예시 HH 중 최소 하나 이상의 레지스터, 디스크립터, 애트리뷰트 또는 플래그로 구성된 메모리의 세 번째 영역을 통해 참조값에 액세스할 수 있도록 추가로 구성된 메소드.
예시 JJ, 다음과 같이 구성된 예시 U의 메소드: 메모리 포션과 관련된 실제 특성이 메모리의 첫 번째 영역과 메모리의 두 번째 영역을 합한 용량과 관련됨, 호스트 디바이스와 메모리 디바이스 사이의 핸드셰이크에 기반하여 동적으로 구성된 참조값.
예시 KK, 예시 U부터 예시 JJ 중 메모리 디바이스가 SD(Secure Digital) 카드, 임베드된 MultiMediaCard (eMMC) 메모리 디바이스, UFS(Universal Flash Storage) 카드, PCIe(Peripheral Component Interconnect express) 카드 또는 SSD(Solid State Drive) 중 하나로 구성된 메소드.
예시 LL, 예시 U부터 예시 KK 중 메타데이터가 MBR(Master Boot Record), GUID(globally unique identifiers) 파티션 테이블 (GPT), 또는 VBR(Volume Boot Record) 중 하나와 관련된 메소드.
예시 MM, 예시 U부터 예시 LL 중 호스트 디바이스의 제조업체에 의해 한 번만 프로그래밍이 가능한 설정에 참조값이 저장된 메소드.
예시 NN, 예시 U부터 예시 LL 중 참조값을 리프로그래밍 하기 전에 호스트 디바이스의 인증을 요구하는 설정에 참조값이 저장된 메소드.
예시 OO, 실행 시 예시 U부터 예시 NN 중 하나의 메소드를 수행하는 명령을 저장하는 하나 이상의 컴퓨터 판독 가능한 스토리지 미디어.
한 특징이 한 가지 특정 실시예(Embodiment)와 연관지어 설명된 것 처럼 보일 수 있으나, 당업자라면 설명된 실시예의 다양한 특징들이 통합될 수 있음을 인지할 것이다. 또한, 실시예와 연관지어 설명된 측면은 독립적으로도 성립한다.

Claims (20)

  1. 다음으로 구성된 메모리 디바이스:
    다음으로 구성된 메모리:
    다음으로 구성된 최소 하나의 물리적 파티션:
    최소 하나의 물리적 파티션의 메모리 포션과 관련한 특성 하나 이상을 암시하는 요소 값 하나 이상을 저장하는 요소를 하나 이상 포함한 메타데이터를 저장하는 첫 번째 메모리 영역, 및
    적어도 메모리 포션의 일부분에서 메타데이터를 저장하는 두 번째 메모리 영역, 및
    하나 이상 요소의 요소와 관련된 액션이 최소 하나의 물리적 파티션과 관련된 실제 특성과 관련된 참조값과 비교하여 유효한지 확인하기 위해 구성된 컨트롤러.
  2. 메모리 포션이 다음 중 적어도 한 가지로 구성된 청구항 1의 메모리 디바이스: 프라이머리 파티션, 프라이머리 파티션의 실제 데이터 영역 또는 로지컬 유닛(LU).
  3. 메모리의 개별 영역이 다음 중 하나 이상으로 구성된 청구항 1의 메모리 디바이스: 프라이머리 파티션, 프라이머리 파티션의 포션, 물리 파티션의 포션, 프라이머리 파티션의 파일 시스템 메타데이터 영역, 또는 로지컬 유닛(LU)의 포션.
  4. 최소 하나의 물리적 파티션과 관련된 실제 특성이 다음 중 하나와 관련된 청구항 1의 메모리 디바이스:
    메모리 디바이스의 총 용량,
    메모리의 첫 번째 영역 및 메모리의 두 번째 영역의 용량을 합한 용량,
    메모리 포션 용량,
    메모리의 두 번째 영역 용량,
    포션 또는 메모리 영역의 시작 어드레스,
    포션 또는 메모리 영역의 시작 어드레스의 정렬(alignment), 또는
    메모리 포션의 할당 유닛 크기.
  5. 다음을 포함하는 청구항 1의 메모리 디바이스:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션,
    메모리 디바이스 용량과 관련된 메모리의 최소 하나의 물리적 파티션과 관련된 실제 특성, 및
    다음과 같이 구성된 컨트롤러:
    요소에 업데이트된 요소 값을 쓰기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    업데이트된 요소 값이 참조값을 초과하는지 여부를 결정, 및
    요소에 업데이트된 요소 값 쓰기 제한.
  6. 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 참조값을 요소에 쓰도록 컨트롤러가 구성된 청구항 5의 메모리 디바이스.
  7. 다음을 포함하는 청구항 1의 메모리 디바이스:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청으로 구성된 액션,
    메모리 디바이스 용량과 관련된 메모리의 최소 하나의 물리적 파티션과 관련된 실제 특성, 및
    다음과 같이 구성된 컨트롤러:
    요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    이미 요소에 저장된 현재 요소 값이 참조값을 초과하는지 여부를 결정,
    호스트 디바이스로부터 현재 요소 값 읽기 제한, 및
    수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
  8. 최소 하나 이상의 레지스터, 디스크립터, 애트리뷰트 또는 플래그로 구성된 메모리의 세 번째 영역을 통해 참조값에 액세스할 수 있도록 컨트롤러가 구성된 청구항 1의 메모리 디바이스, 및
    메모리의 세 번째 영역이 (i) 호스트 디바이스의 최초 제조업체 또는 메모리 디바이스의 두 번째 제조업체에 의해 1회만 프로그래밍이 가능하거나, 또는 (ii) 세 번째 영역에서 참조값을 리프로그래밍 하기 전에 호스트 디바이스 인증이 요구됨.
  9. SD(Secure Digital) 카드, 임베드된 MultiMediaCard (eMMC) 메모리 디바이스, UFS(Universal Flash Storage) 카드, PCIe(Peripheral Component Interconnect express) 카드 또는 SSD(Solid State Drive)로 구성된 청구항 1의 메모리 디바이스.
  10. MBR(Master Boot Record), GUID(globally unique identifiers) 파티션 테이블 (GPT), 또는 VBR(Volume Boot Record) 중 하나와 관련된 메타데이터를 포함한 청구항 1의 메모리 디바이스.
  11. 다음으로 구성된 메소드:
    하나 이상 요소의 요소와 관련된 액션이 메모리의 최소 하나의 물리적 파티션과 관련된 실제 특성과 관련된 참조값과 비교하여 유효한지 확인하기 위해 구성된 메모리 디바이스의 컨트롤러에 의한 확인,
    하나의 메모리 포션과 관련된 특성을 암시하는 요소 값을 하나 이상 저장하는 요소를 하나 이상 포함하는 메타데이터를 저장하는 첫 번째 영역과 적어도 메모리 포션 일부의 데이터를 저장하는 두 번째 영역으로 구성된 메모리.
  12. 다음과 같이 추가 구성된 청구항 11의 메소드: 프라이머리 파티션, 프라이머리 파티션의 실제 데이터 영역 또는 로지컬 유닛(LU).
  13. 메모리의 개별 영역이 다음 중 하나 이상으로 구성된 청구항 11의 메소드: 프라이머리 파티션, 프라이머리 파티션의 포션, 물리 파티션의 포션, 프라이머리 파티션의 파일 시스템 메타데이터 영역, 또는 로지컬 유닛(LU)의 포션.
  14. 메모리의 최소 하나의 물리적 파티션과 관련된 실제 특성이 다음 중 하나와 관련된 청구항 11의 메소드:
    메모리 디바이스의 총 용량,
    메모리의 첫 번째 영역 및 메모리의 두 번째 영역의 용량을 합한 용량,
    메모리 포션 용량,
    메모리의 두 번째 영역 용량,
    포션 또는 메모리 영역의 시작 어드레스,
    포션 또는 메모리 영역의 시작 어드레스의 정렬(alignment), 또는
    메모리 포션의 할당 유닛 크기.
  15. 다음을 포함한 청구항 11의 메소드:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션,
    메모리 디바이스 용량과 연관하여 메모리의 최소 하나의 물리적 파티션과 관련된 실제 특성, 및
    다음으로 구성된 메소드:
    요소에 업데이트된 요소 값을 쓰기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    업데이트된 요소 값이 참조값을 초과하는지 여부를 결정, 및
    요소에 업데이트된 요소 값 쓰기 제한.
  16. 다음을 포함한 청구항 11의 메소드:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소에서 현재 요소 값을 읽으라는 호스트 디바이스로부터의 요청으로 구성된 액션, 메모리 디바이스 용량과 연관하여 메모리의 최소 하나의 파티션과 관련된 실제 특성, 및
    다음으로 구성된 메소드:
    요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    이미 요소에 저장된 현재 요소 값이 참조값을 초과하는지 여부를 결정,
    호스트 디바이스로부터 현재 요소 값 읽기 제한, 및
    수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 참조값 제공.
  17. 다음으로 구성된 시스템:
    다음을 포함하는 메모리:
    메모리 포션과 관련한 특성 하나 이상을 암시하는 요소 값 하나 이상을 저장하는 요소를 하나 이상 포함한 메타데이터를 저장하는 첫 번째 메모리 영역, 및
    적어도 메모리 포션의 일부분에서 메타데이터를 저장하는 두 번째 메모리 영역, 및
    하나 이상 요소의 요소와 관련된 액션이 메모리의 물리적 파티션과 연관하여 실제 특성과 관련된 참조값과 비교하여 유효한지 확인하기 위해 구성된 컨트롤러.
  18. 다음을 포함한 청구항 17의 시스템:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소에 이미 저장된 현재 요소 값을 대체하는 요소에 업데이트된 요소 값을 쓰라는 호스트 디바이스로부터의 요청으로 구성된 액션,
    물리 파티션 용량으로 구성된 물리 파티션과 관련된 실제 특성 물리 파티션, 및
    다음과 같이 구성된 컨트롤러:
    요소에 업데이트된 요소 값을 쓰기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    파생 참조값을 얻어내기 위해 물리 파티션 용량에서 적어도 하나 이상의 메모리의 첫 번째 영역 크기를 뺌,
    업데이트된 요소 값이 파생 참조값을 초과하는지 여부를 결정, 및
    요소에 업데이트된 요소 값 쓰기 제한.
  19. 업데이트된 요소 값 쓰기 요청 수신에 대응하여 업데이트된 요소 값 대신 파생 참조값을 요소에 쓰도록 컨트롤러가 구성된 청구항 18의 시스템.
  20. 다음을 포함한 청구항 17의 시스템:
    이미 요소에 저장된 현재 요소 값으로 구성된 하나 이상의 요소 값,
    요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청으로 구성된 액션,
    물리 파티션 용량으로 구성된 물리 파티션과 관련된 실제 특성 물리 파티션, 및
    다음과 같이 구성된 컨트롤러:
    요소로부터 현재 요소 값을 읽기 위한 호스트 디바이스로부터의 요청 모니터링,
    참조값 평가,
    파생 참조값을 얻어내기 위해 물리 파티션 용량에서 메모리의 첫 번째 영역 크기를 뺌,
    이미 요소에 저장된 현재 요소 값이 파생 참조값을 초과하는지 여부를 결정,
    호스트 디바이스로부터 현재 요소 값 읽기 제한, 및
    수신한 현재 요소 값 읽기 요청에 대응하여 현재 요소 값 읽기 요청이 유효한지 확인하기 위해 호스트 디바이스에 현재 요소 값 대신 파생 참조값 제공.
KR1020187018746A 2015-12-21 2016-12-20 참조값을 이용한 메모리 디바이스 액션의 유효성 확인 KR20180096660A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562270493P 2015-12-21 2015-12-21
US62/270,493 2015-12-21
US15/383,631 2016-12-19
US15/383,631 US10140055B2 (en) 2015-12-21 2016-12-19 Ensuring that memory device actions are valid using reference values
PCT/US2016/067720 WO2017112649A1 (en) 2015-12-21 2016-12-20 Ensuring that memory device actions are valid using reference values

Publications (1)

Publication Number Publication Date
KR20180096660A true KR20180096660A (ko) 2018-08-29

Family

ID=59064296

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187018746A KR20180096660A (ko) 2015-12-21 2016-12-20 참조값을 이용한 메모리 디바이스 액션의 유효성 확인

Country Status (6)

Country Link
US (1) US10140055B2 (ko)
EP (1) EP3387537A1 (ko)
JP (1) JP6791967B2 (ko)
KR (1) KR20180096660A (ko)
CN (1) CN108701080B (ko)
WO (1) WO2017112649A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101964436B1 (ko) 2016-09-20 2019-04-01 주식회사 엘지화학 접착력 및 자외선 차단 기능이 우수한 광학 필름, 및 이를 포함하는 편광판
KR101886176B1 (ko) * 2016-10-25 2018-08-08 시큐리티플랫폼 주식회사 소유자만 기록 가능한 부트영역을 포함하는 저장장치
CN107247674B (zh) * 2017-06-16 2020-07-31 深圳市万普拉斯科技有限公司 内存块类型处理方法、装置、电子设备及可读存储介质
JP7362349B2 (ja) * 2019-08-23 2023-10-17 キヤノン株式会社 制御装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7058788B2 (en) * 2001-02-23 2006-06-06 Falconstor Software, Inc. Dynamic allocation of computer memory
KR101404083B1 (ko) 2007-11-06 2014-06-09 삼성전자주식회사 반도체 디스크 및 그것의 동작 방법
US20070271609A1 (en) 2006-05-18 2007-11-22 Phison Electronics Corp. Security system of flash memory and method thereof
US7461223B2 (en) * 2006-05-29 2008-12-02 Microsoft Corporation Retaining shadow copy data during replication
KR100869945B1 (ko) * 2006-11-03 2008-11-24 삼성전자주식회사 Drm 권한 개선 방법과 drm 권한 개선 컨텐츠 및 이를이용하는 휴대 단말기
US8412909B2 (en) 2009-04-08 2013-04-02 Samsung Electronics Co., Ltd. Defining and changing spare space and user space in a storage apparatus
US9582222B2 (en) * 2009-04-30 2017-02-28 Western Digital Technologies, Inc. Pre-cache similarity-based delta compression for use in a data storage system
US9176883B2 (en) * 2009-04-30 2015-11-03 HGST Netherlands B.V. Storage of data reference blocks and deltas in different storage devices
TWI420305B (zh) * 2010-10-08 2013-12-21 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
CN102148668B (zh) * 2011-01-04 2013-12-04 华为技术有限公司 处理方法与设备
US8605502B1 (en) * 2012-05-22 2013-12-10 Sandisk Technologies Inc. Systems and methods of updating read voltages
CN104350496A (zh) * 2012-05-30 2015-02-11 汤姆逊许可公司 用于数字媒体的大规模更新的方法和装置
CN103778149A (zh) * 2012-10-23 2014-05-07 腾讯科技(深圳)有限公司 文件系统及其对文件进行存储管理的方法
JP5976608B2 (ja) * 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
KR102098697B1 (ko) 2013-03-15 2020-04-08 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
CN104951405B (zh) * 2014-03-28 2019-09-06 三星电子株式会社 存储系统以及对存储系统执行和验证写保护的方法
CN104658610B (zh) * 2015-01-14 2017-10-27 广东省电子信息产业集团有限公司 一种动态调整的闪存错误检测方法及装置

Also Published As

Publication number Publication date
JP2019507918A (ja) 2019-03-22
JP6791967B2 (ja) 2020-11-25
US10140055B2 (en) 2018-11-27
US20170177274A1 (en) 2017-06-22
CN108701080A (zh) 2018-10-23
CN108701080B (zh) 2023-07-14
EP3387537A1 (en) 2018-10-17
WO2017112649A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
US9842030B2 (en) Data storage device and flash memory control method
US11880313B2 (en) Storage system and method for performing and authenticating write-protection thereof
JP5749237B2 (ja) 不揮発性メモリの正常性情報を取得して使用するためのシステム及び方法
US8010770B2 (en) Caching device for NAND flash translation layer
US7970983B2 (en) Identity-based flash management
US9563551B2 (en) Data storage device and data fetching method for flash memory
US9678760B2 (en) Memory card and storage system having authentication program and method for operating thereof
US8296466B2 (en) System, controller, and method thereof for transmitting data stream
US9715445B2 (en) File differentiation based on data block identification
US9235534B2 (en) Data protecting method, memory controller and memory storage apparatus
CN111459844B (zh) 数据储存装置及用于存取逻辑至物理地址映射表的方法
JP6791967B2 (ja) 参照値を使ってメモリデバイスの有効なアクションを確保する
US10025706B2 (en) Control device, storage device, and storage control method
US9817573B2 (en) Smart card management method, memory storage device and memory control circuit unit
CN111625477B (zh) 访问擦除块的读请求的处理方法与装置
US20210208808A1 (en) Host Supported Partitions in Storage Device
US10719461B2 (en) Solid state device with distributed bit buckets
JP5786702B2 (ja) セキュリティトークン、セキュリティトークンにおける命令の実行方法及びコンピュータプログラム
CN111198651B (zh) 进行存储空间管理的方法以及数据存储装置及其控制器
US8544424B2 (en) System, controller and method thereof for transmitting and distributing data stream
KR20210063814A (ko) 메모리 시스템의 리드 동작 방법 및 장치
US20140259183A1 (en) Portable storage device and data security-control method thereof
JP2015187896A (ja) セキュリティトークン、セキュリティトークンにおける命令の実行方法、及びコンピュータプログラム