KR20120036311A - 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스 - Google Patents

데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스 Download PDF

Info

Publication number
KR20120036311A
KR20120036311A KR1020117029907A KR20117029907A KR20120036311A KR 20120036311 A KR20120036311 A KR 20120036311A KR 1020117029907 A KR1020117029907 A KR 1020117029907A KR 20117029907 A KR20117029907 A KR 20117029907A KR 20120036311 A KR20120036311 A KR 20120036311A
Authority
KR
South Korea
Prior art keywords
memory device
host
context
data
encryption
Prior art date
Application number
KR1020117029907A
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 KR20120036311A publication Critical patent/KR20120036311A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer

Abstract

긴 연산들을 구현하고 다수의 스트림들을 지원하기 위한 방법 및 메모리 디바이스가 제공된다. 하나의 실시예에서, 메모리 디바이스는 호스트로부터 명령 및 데이터를 수신하고 데이터에 대한 연산을 실행하며, 여기서 메모리 디바이스가 연산을 완료하는데 요구되는 시간은 메모리 디바이스가 명령에 응답하는 최대 응답 시간을 초과한다. 메모리 디바이스는 데이터에 대한 연산을 실행하기 시작하고, 최대 응답 시간을 초과하기 전에 그리고 연산을 완료하기 전에, 호스트에 연산의 컨텍스트를 송신한다. 그 이후의 시간에, 메모리 디바이스는 호스트로부터: (i) 연산을 실행하는 것을 재개하라는 명령; 및 (ii) 컨텍스트를 수신한다. 그리고나서 메모리 디바이스는 호스트로부터 수신되는 컨텍스트에 기초하여 데이터에 대한 연산을 실행하는 것을 재개한다.

Description

데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스{METHOD AND MEMORY DEVICE FOR PERFORMING AN OPERATION ON DATA}
본 발명은 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스에 관한 것으로서, 특히, 긴 연산들을 구현하고 다수의 스트림들을 지원하기 위한 방법 및 메모리 디바이스에 관한 것이다.
스마트 카드 또는 SD 카드와 같은 메모리 디바이스는 개인용 컴퓨터(PC) 또는 모바일 전화기와 같은 호스트(host)에서 내장형 보안 모듈로 이용되어 호스트로부터의 애플리케이션 스트림(application stream)들을 지원하고 다수의 임무들을 동시에 지원할 수 있다. 보안 모듈로의 액세스는 흔히 비동기식인데 왜냐하면 호스트에서 운영되는 애플리케이션들이 흔히 동기화되지 않고 보안 모듈이 다만 적시의 임의의 순간에만 단일 동작을 수행할 수 있을 수 있기 때문이다. 결과적으로, 호스트 상의 다수의 애플리케이션들은 보안 모듈을 시분할(time-share)할 필요가 있을 수 있다. 도 5에 도시되는 바와 같이, 둘 이상의 상이한 애플리케이션으로부터의 데이터는 다수의 블록(block)들로 분리되고 상기 블록들이 보안 모듈에 의해 프로세싱될 수 있을 때까지 둘 이상의 데이터 버퍼들 내에 저장된다. 보안 프로세싱(예를 들어 디지털 서명 및 암호 생성)과 같은 애플리케이션들에서, 데이터의 블록들은 제공된 블록의 프로세싱이 이전에 프로세싱된 블록들에 좌우되므로, 개별적으로 프로세싱될 수 없다. 그러므로, 두 개의 동시 발생 스트림들을 프로세싱할 때, 현재의 컨텍스트(context)는 보안 모듈에 저장되고 이후에 후속 블록들을 프로세싱하는데 이용된다. 그러나, 보안 모듈에서 컨텍스트를 저장하는 것은 메모리량을 상대적으로 많이 소비하며, 이는 스마트 카드들 및 SD 카드들과 같은 메모리 디바이스들의 경우에 메모리 공간을 제한해 왔던 문제점들일 수 있다. 보안 모듈들로 이용될 때 저장 디바이스들은 특수한 상태 관리 블록(state management block)을 추가로 요구할 수 있는데, 이는 보안 모듈의 가격을 현저하게 증가시킬 수 있다. 또한, 보안 모듈의 성능이 현저하게 감소할 수 있는데 왜냐하면 비휘발성 메모리에 컨텍스트를 반복해서 기록하는 것은 시간이 상대적으로 오래 걸리고 비휘발성 메모리의 수명 주기를 감소시키기 때문이다.
보안 모듈들에서의 보안 프로세싱에 있어서 만나게 되는 다른 어려움은 보안 동작(예를 들어 RSA 키 생성 또는 RSA 서명)을 완료하는데 필요한 시간이 메모리 디바이스가 명령에 응답하기 위한 최대 응답 시간보다 더 길 수 있다는 점이다. 스마트 카드들은 특수한 "비 준비(not ready)" 명령(ISO-7816-3)에서 규정되는 "NULL" 절차 바이트와 같은)을 이용함으로써 이 상황을 처리한다. 그러나, 이 방법에 있어서, 호스트는 동작이 완료될 때까지 상대적으로 오래 시간 대기할 필요가 있을 수 있고 동작을 중단시킬 수 없을 수도 있다. 게다가, 호스트 드라이버가 이 시간 동안 보안 모듈을 휴면 모드(sleep mode)가 되도록 할 위험성이 있고, 이는 보안 모듈의 비휘발성 메모리가 소거되는 결과를 초래할 수 있다. 더욱이, SD 카드들과 같은 보안 모듈들의 경우, 그러한 특수한 "비-준비" 명령들은 물리 프로토콜 레벨에서 규정되지 않기 때문에 구현될 수 없다.
본 발명의 실시예들은 청구항들에 의해 규정되고, 이 섹션 내의 어느 것도 상기 청구항들을 제한하는 것으로 해석되어서는 안 된다.
서론에 의하면, 후술되는 실시예들은 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스에 관한 것이다. 하나의 실시예에서, 메모리 디바이스는 호스트로부터 명령 및 데이터를 수신하여 데이터에 데한 연산을 실행하는데, 여기서 메모리 디바이스가 연산을 완료하는데 요구되는 시간은 메모리 디바이스가 명령에 응답하기 위한 최대 응답 시간을 초과한다. 메모리 디바이스는 데이터에 대한 연산을 실행하기 시작하고, 최대 응답 시간을 초과하기 전에 그리고 연산을 완료하기 전에, 연산의 컨텍스트를 호스트에 송신한다. 이후에, 메모리 디바이스는 호스트로부터: (i) 연산을 실행하는 것을 재개하라는 명령 및 (ii) 컨텍스트를 수신한다. 그리고나서 메모리 디바이스는 호스트로부터 수신되는 컨텍스트에 기초하여 데이터에 대한 연산을 실행하는 것을 재개한다.
다른 실시예들이 가능하고, 실시예들의 각각은 단독으로 또는 서로 결합하여 이용될 수 있다. 따라서, 다양한 실시예들이 현재 첨부 도면들을 참조하여 설명될 것이다.
상술한 바와 같이 본 발명에 의해 긴 연산들을 구현하고 다수의 스트림들을 지원하는데 더욱 효율적인 방법 및 메모리 디바이스가 제공된다.
도 1은 실시예의 예시적인 메모리 디바이스의 블록도.
도 2는 데이터에 대한 연산을 실행하기 위한 실시예의 방법의 흐름도.
도 3은 도 2의 흐름도에서 논의되는 동작들을 도시하는 도면.
도 4는 실시예의 다수의 스트림들을 처리하는 것을 도시하는 도면.
도 5 및 도 6은 데이터에 대한 연산을 실행하기 위한 종래 기술의 방법들을 도시하는 도면.
서론
다음의 실시예들은 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스를 제공한다. 상술한 바와 같이, 호스트가 메모리 디바이스에 실행하라고 요청하는 일부 동작들은 상기 명령에 응답하기 위한 메모리 디바이스에 제공되는 최대 시간보다 더 걸릴 수 있다. 후술되는 실시예들 중 일부는 이전 해법들에서 마주하는 단점들을 방지하는 이의 "긴 연산(long operation)들" 문제에 대한 해법을 제공한다. 후술되는 다른 실시예들은 비용이 증가하지 않으며 안정성도 감소하지 않고 다수의 애플리케이션들을 지원하는데 이용될 수 있다. 후술되는 "긴 연산들" 실시예들 및 "다수의 스트림" 실시예들은 단독 또는 서로 결합하여 이용될 수 있다. 이 실시예들로 전환하기 전에, 다음의 섹션은 이 실시예들 중 어느 하나 또는 둘 모두를 구현하는데 이용될 수 있는 예시적인 메모리 디바이스를 논의한다. 다른 유형들의 메모리 디바이스들이 이용될 수 있음이 주목되어야 한다.
예시적인 메모리 디바이스
도 1은 이 실시예들과 함께 이용될 수 있는 예시적인 메모리 디바이스(100)의 도면이지만, 다른 유형들의 메모리 디바이스들이 이용될 수 있다. 하나의 실시예에서, 메모리 디바이스(100)는 호스트에 분리 가능하게 접속될 수 있는 소형 메모리 카드, 내장형 메모리 카드(예를 들어, 호스트에 내장되는 보안 모듈), 범용 직렬 버스(universal serial bus: USB) 디바이스, 또는 고체 드라이브와 같은 제거 가능 또는 제거 불가능 드라이브의 형태를 취한다. 도 1에 도시되는 바와 같이, 메모리 디바이스(100)는 제어기(110) 및 메모리(120)를 포함한다. 제어기(110)는 메모리(120)와 인터페이스하기 위한 메모리 인터페이스(111) 및 메모리 디바이스를 호스트(50)와 통신하도록 하는 호스트 인터페이스(112)를 포함한다. 본원에서 이용되는 바와 같이, "와 통신"은 본원에 도시되거나 설명될 수 있거나 아니면 도시되거나 설명될 수 없을지라도, 직접적으로 통신하거나 하나 이상의 구성요소들을 통해 간접적으로 통신하는 것을 의미할 수 있다. 예를 들어, 호스트 인터페이스(150)는 메모리 디바이스(100) 및 호스트(50) 사이에서 명령들 및 데이터를 송신하기 위해 물리 및 전기 커넥터들을 포함할 수 있다. 본원에서 또한 이용되는 바와 같이, 호스트는 전용 컨텐츠 재생기, 모바일 전화기, 개인용 컴퓨터, 게임 디바이스, 개인용 휴대정보 단말기(personal digital assistant : PDA), 키오스크(kiosk), 셋탑 박스, 또는 TV 시스템과 같은 임의의 적절한 형태를 취할 수 있으나, 이로 제한되지는 않는다.
제어기(110)는 또한 중앙 처리 장치(CPU)(113), 암호화 및/또는 복호화 연산들을 제공하도록 동작하는 암호-엔진(114)(암호 엔진(114)은 하드웨어 또는 소프트웨어에서 구현될 수 있다), 랜덤 액세스 메모리(random access memory: RAM)(115), 메모리 디바이스(100)의 기본 동작들을 위해 펌웨어에 저장되는 리드 온리 메모리(read only memory: ROM)(116), 및 암호화/복호화 동작들에 이용되는 디바이스-지정 키를 저장하는 비휘발성 메모리(non-voliatile memory: NVM)(117)를 포함한다.
메모리(120)는 임의의 적절한 형태를 취할 수 있다. 하나의 실시예에서, 메모리(120)는 고체(예를 들어, 플래시) 메모리의 형태를 취하고 1회 프로그램 가능하거나, 서너 번 프로그램 가능하거나, 또는 다수회 프로그램 가능할 수 있는 대용량 스토리지 디바이스이다. 그러나, 다른 형태의 메모리가 이용될 수 있다. 이 실시예에서, 메모리(120)는 호스트(50) 상의 파일 시스템에 의해 관리되는 공용 구획(125) 및 제어기(110)에 의해 내부에서 관리되는 은닉 보호 시스템 에어리어(area)(135)를 포함한다. 은닉 보호 시스템 에어리어(135)는 제어기(110)에 의해 이용되어 메모리 디바이스(100)의 동작을 제어하는 펌웨어(FW) 코드(142)뿐만 아니라 컨텐츠 암호화 키(CEK)(146)를 저장하고, 이는 후술될 것이다.
공용 구획(125) 및 은닉 보호 시스템 에어리어(135)는 동일한 메모리 유닛의 일부일 수 있거나 또는 상이한 메모리 유닛들일 수 있다. 은닉 보호 시스템 에어리어(135)는 제어기(110)에 의해 내부에서 관리되므로(그리고 호스트의 제어기에 의해서는 관리되지 않는다) "은닉"되고, 상기 에어리어(135) 내에 저장되는 객체들이 제어기(110)의 비휘발성 메모리(117) 내에 저장되는 고유 키에 의해 암호화되므로 "보호"된다. 따라서, 상기 에어리어(135)에 저장된 객체들에 액세스하기 위해서, 제어기(110)는 암호 엔진(114) 및 비휘발성 메모리(117)에 저장된 키를 이용하여 암호화된 객체들을 복호화할 것이다. 바람직하게도, 메모리 디바이스(100)는 SanDisk Corporation에 의한 TrustedFlashTM 플랫폼으로 제조되는 제품들의 군으로부터의 보안 제품의 형태를 취한다.
이 실시예에서, 보호 컨텐츠 파일들(130A, 130B)은 호스트(50)에 저장되고 암호 알고리즘들에 의해 보호된다. 예를 들어, 컨텐츠(130A, 130B)는 암호화되고 메모리 디바이스(100) 내에(예를 들어, 제어기의 NVM(117) 내에 또는 어떤 다른 장소 내에) 저장되는 키를 이용하여 서명될 수 있다.
메모리 디바이스(100) 및 호스트(50)는 호스트 인터페이스(112)를 통해 서로 통신할 수 있다. 하나의 실시예에서, 데이터의 보안 전송을 포함하는 동작들의 경우, 메모리 디바이스(100) 내의 암호 엔진(114) 및 호스트(50) 내의 암호 엔진은 서로를 상호 인증하여 키 교환을 제공하는데 이용될 수 있다(이것은 선택사양으로 의무적인 것은 아니다). 상호 인증 프로세스는 호스트(50) 및 메모리 디바이스(100)에 유일한 인증 ID들을 교환하라고 요청한다. 호스트(50) 및 메모리 디바이스(100)는 PKI에 기초하여 상호 인증을 실행할 수 있다. 상호 인증이 완료된 후에, 메모리 디바이스(150) 및 호스트(50) 사이의 통신을 위하여 보안 채널을 설정하기 위해 세션 키가 이용되는 것이 바람직하다. 단일 인증이 또한 실행될 수 있음이 주목되어야 한다.
제어기(110)는 임의의 적절한 방식으로 구현될 수 있다. 예를 들어, 제어기(110)는 마이크로프로세서 또는 프로세서 그리고 예를 들어 (마이크로)프로세서, 논리 게이트들, 스위치들, 주문형 반조체(application specific integrated circuit: ASIC), 프로그램 가능 논리 제어기, 및 내장형 마이크로프로세서에 의해 수행 가능한 컴퓨터-판독 가능 프로그램 코드(예를 들어, 소프트웨어 또는 펌웨어)의 형태를 취할 수 있다. 제어기의 예들은 다음의 마이크로프로세서들: ARC 625D, A스디AT91SAM, Microchip PIC8F26K20, 및 Silicon Labs C8051F320을 포함하지만, 이로 제한되지 않는다. 제어기(110)는 또한 메모리(120) 제어 논리의 일부로서 구현될 수 있다.
데이터에 대한 연산을 실행하기 위한 예시 방법들
호스트(50)가 메모리 디바이스(100)에 명령을 송신한 후에, 호스트(50)는 메모리 디바이스(100)가 일정한 시간 기간 내에서 명령에 응답할 것을 기대할 것이다. 애플리케이션에 따라, 최대 응답 시간의 범위는 예를 들어 수백 밀리초들에서 수 초들까지일 수 있다. 메모리 디바이스(100)가 할당된 최대 응답 시간 내에서 명령에 응답하지 않으면, 호스트(50)는 에러가 발생했다고 추정할 수 있다. 그러나 메모리 디바이스(100)에게 최대 응답 시간보다 더 오래 걸리는 연산을 실행하라고 요청하면 문제가 발생한다. 예를 들어, 메모리 디바이스(100)가 RSA 키 생성 연산 또는 RSA 서명 연산과 같은, 보안 연산을 완료하는데 요구되는 시간은 메모리 디바이스(100)가 상기 명령에 응답하기 위한 최대 응답 시간을 초과할 수 있다. 스마트 카드는 특수한 "비 준비" 명령을 이용하여 호스트(50)로 하여금 상기 연산을 완료하는데 스마트 카드에 더 많은 시간을 주도록 강제함으로써 이 상황을 처리한다. 그러나, 특수한 "비 준비" 명령은 프로토콜 규정들 때문에 모든 메모리 디바이스들에 이용 가능할 수 없다. 더욱이, 특수한 "비 준비" 명령이 이용가능한 경우일지라도, 동작이 완료될 때까지 호스트(50)를 강제로 대기시킴으로써 성능을 저하시키고 전력 사이클 또는 리셋 동안 데이터를 손실하는 것과 같은 다른 문제들을 야기할 수 있다.
도 2는 본 발명에 따라 데이터에 대한 연산을 실행하는 방법의 흐름도(200)이고 도 1에서의 메모리 디바이스(100)과 함께 논의될 것이다(그러나 다른 유형들의 메모리 디바이스들이 이용될 수 있다). 도 2에 도시되는 바와 같이, 메모리 디바이스(100)는 호스트(50)로부터 명령들 및 데이터를 수신하여 데이터에 대한 연산을 실행한다(단계 210). 이 예에서, 연산은 "긴 연산"이며, 이것은 메모리 디바이스(100)가 상기 연산을 완료하는데 요구되는 시간이 메모리 디바이스(100)가 상기 명령에 응답하기 위한 최대 응답 시간을 초과하는 것을 의미한다. 이 "긴 연산"은, 상술한 바와 같이, RSA 키 생성 또는 RAS 서명과 같은 보안 연산일 수 있다. 비-보안 판독 및 기록 연산들, 데이터에 대한 계산들을 실행하기 위한 연산들, 및 유선 또는 무선 네트워크를 통하여 데이터를 송신 및/또는 수신하는 연산들과 같은, 다른 유형들의 연산들이 실행될 수 있다. 그 후에 메모리 디바이스(100)는 데이터에 대한 연산을 실행하기 시작한다(단계 220).
메모리 디바이스(100)가 연산을 실행하고 완료해야 한다면, 메모리 디바이스(100)는 명령들에 응답하기 위한 최대 응답 시간을 초과할 것이다. 그러므로, 이 실시예에서, 최대 응답 시간을 초과하기 전에 그리고 연산을 완료하기 전에, 메모리 디바이스(100)는 (i) 데이터에 대한 연산이 완료되지 않는다는 표시, (ii) 연산의 컨텍스트를 송신한다(단계 230). 이 방식에서, 메모리 디바이스(100)는 동작을 중단했던 것으로 간주될 수 있고 이후에 연산을 재개할 필요가 있다. 표시 및 컨텍스트가 이제 논의될 것이다.
데이터에 대한 연산이 완료되지 않는다는 표시는 호스트(50)에게, 상기 호스트가 메모리 디바이스(100)에 다른 명령을 제공하여 연산을 계속할 필요가 있음을 고지한다. 이 표시는 예를 들어, 호스트(50)에 제공되는 정상적인 응답 내의 플래그(flag)와 같은, 임의의 적절한 형태를 취할 수 있다. 이 표시는 상기 배경기술에서 논의되는 특수한 "비 준비" 명령과는 상이하다는 것이 주목되어야만 한다. 특수한 "비 준비" 명령은 호스트로 하여금 메모리 디바이스가 긴 연산을 완료할 때까지 대기하라고 강제하므로 호스트 및 메모리 디바이스에 의해 이용되는 프로토콜에 미리 규정될 필요가 있다. 대조적으로, 이 실시예에서 호스트(50)에 제공되는 표시는 단지 호스트(50)에게, 호스트(50)가 메모리 디바이스(100)에게 상기 동작을 계속하라고 명령하기 위한 추가 명령(예를 들어, 메모리 디바이스(100)에 이전에 발행되었던 것과 유사하거나 동일한 명령으로서, 상기 메모리 디바이스(100)가 상기 명령으로 제 1 국면에서의 동작을 발생시켰다)을 송신할 필요가 있음을 고지하고 원래의 송신/수신(판독/기록) 명령들을 이용하여 제공될 수 있다. (일부 실시예들에서, "비 준비" 명령 및 상기 표시 이 둘 모구가 함께 이용될 수 있다) 더욱이, 이 표시는 메모리 디바이스(100)가 연산을 완료할 때까지 호스트를 강제로 대기시키지 않기 때문에, 이 실시예로 인해 호스트(50)는 메모리 디바이스(100)에 대한 동작들을 실행하는데 대하여 더 많이 제어를 행한다. 즉, 표시를 수신한 후에, 다른 명령들을 메모리 디바이스(100)에 송신하여 메모리 디바이스가 상기 동작을 계속하도록 하는 대신, 호스트(50)가 상이한 동작을 위해 메모리 디바이스(100)에 상이한 명령을 송신할 수 잇다. 이 방식에서, 호스트(50)는 더 자세하게 후술되는 바와 같이, 다른 애플리케이션들로부터의 동작들을 인터리빙(interleaving)할 수 있다(즉, "다수의 스트림들"을 처리할 수 있다).
상술한 바와 같이, 동작-미-완료 표시를 제공하는 것 외에도, 메모리 디바이스(100)는 또한 연산의 현재 컨텍스트를 호스트(50)에 송신한다. 본원에서 이용되는 바와 같이, "컨텍스트"는 연산이 중단 이후에 계속될 수 있도록 하기 위해 저장되는 데이터의 최소 세트를 포함한다. 이 데이터의 최소 세트는 예를 들어, 현재 수행 상태 및/또는 연산의 부분적인 결과일 수 있다. 많은 상이한 유형들의 연산들, 따라서 많은 상이한 유형들의 컨텍스트가 이용될 수 있다. 예를 들어, 연산은 암호화 연산일 수 있고, 메모리 디바이스(100)는 암호화 연산에서 이용하기 위한 비밀 키를 생성할 수 있다. 암호화 연산들의 예들은, AES 연산, DES 연산, RC4 연산, RSA-연산, DH 연산, DSS 연산, ECDH 연산, ECDSS 연산, MQV 연산, SHA1 연산, SHA256 연산, SHA374 연산, SHA512 연산, HMAC 연산, CBC-MAC 연산, 및 CMAC 연산을 포함하지만, 이로 제한되지 않는다. 암호화 연산이 AES 연산, CBC-MAC 연산, CMAC 연산, 또는 DES 연산의 형태를 위하는 경우, 컨텍스트는 현재 초기 벡터의 형태를 취할 수 있다. 마찬가지로, 암호화 연산이 SHA1 연산, SHA256 연산, SHA384 연산, SHA512 연산, 또는 HMAC 연산의 형태를 취하는 경우, 컨텍스트는 현재 다이제스트 값(digest vaule)의 형태를 취할 수 있다. 추가적으로, 암호화 연산이 코드 블록 체이닝(code block chaining: "CBC") 연산의 형태를 취하는 경우, 컨텍스트는 직전의 암호화된 블록의 형태를 취할 수 있다. 상술한 바와 같이, 암호화 연산 외에 또는 대신, 다른 유형들의 연산들이 실행될 수 있다. 예를 들어, 연산은 비-암호화 형태로의 판독 또는 기록 데이터에 대한 연산일 수 있고, 유선 또는 무선 네트워크를 통해 데이터, 또는 송신/수신 데이터에 대한 계산을 실행할 수 있다.
상술한 바와 같이, 컨텍스트에 의해, 메모리 디바이스(100)는 자신이 중단했던 지점으로부터 연산을 재개할 수 있다. 따라서, 이후에, 호스트(50)가 적절하다고 판단하면, 호스트(50)는 메모리 디바이스(100)에 연산의 실행을 재개하라는 명령을, 메모리 디바이스(100)에 의해 호스트(50)에 이전에 제공된 컨텍스트와 함께 송신할 것이고, 메모리 디바이스(100)는 호스트(50)로부터 수신되는 컨텍스트에 기초하여 데이터에 대한 연산의 실행을 재개할 것이다(단계 250). 메모리 디바이스(100)가 명령에 응답하기 위한 최대 응답 시간 내에 연산을 완료할 수 있으면, 동작은 완료될 것이다. 그러나, 메모리 디바이스(100)가 여전히 연산을 완료할 수 없으면, 단계들 230, 240, 및 250은 연산을 완료하는데 필요한 만큼의 빈도수로 반복된다.
이 실시예들에서, 컨텍스트는 호스트(50)에 저장되고, 메모리 디바이스(100)에 저장되지 않음이 주목되어야 한다. (대안으로, 컨텍스트는 또 다른 소위 프록시(proxy)(예를 들어, 다른 호스트/서버/메모리 디바이스) 상에 저장될 수 있다.) 호스트(50) 내에 컨텍스트를 저장하는 것은 상기 배경기술에 논의되었던 문제들을 해결한다. 특히, 컨텍스트를 메모리 디바이스(100) 대신 호스트(50)에 저장함으로써 메모리 디바이스(100) 내에 상대적으로 많은 양의 메모리를 소비하는 것이 방지되고, 이는 제한된 양의 메모리를 가질 수 있는 SD 카드들과 같은 메모리 디바이스들의 경우에 특히 중요할 수 있다. 또한, 컨텍스트를 호스트(50)에 저장함으로써 메모리 디바이스(100) 내의 특수 상태 관리 블록에 대한 필요성(상기 블록에 대한 비용)이 방지된다. 더욱이, 호스트의 자원들(예를 들어, 더 많은 RAM 및 더 강력한 CPU)을 이용함으로써, 이 실시예들은 컨텍스트가 메모리 디바이스(100)에 저장될 때 발생되는 메모리 디바이스의 성능 및 메모리 수명 주기에 대한 부정적인 영향을 방지한다.
이 실시예들과 함게 이용될 수 있는 많은 대안들이 존재한다. 예를 들어, 메모리 디바이스(100)는 컨텍스트를 호스트에 제공하기 전에 컨텍스트를 암호화함으로써 보안의 레벨을 추가할 수 있다. 그와 같은 암호화에 이용되는 키는 상술한 바와 같이 메모리 디바이스(100)에 저장되는 비밀 키일 수 있다. 메모리 디바이스(100)에 저장되어 있는 비밀 키에 기초하는 디지털 서명은 실수로 또는 공격의 결과로 발생할 수 있는 어떠한 변화도 검출하는 것이 가능할 것이므로, 비밀 키는 또한 호스트(50)에 컨텍스트를 제공하기 전에 컨텍스트에 서명하는데 이용될 수 있다. 게다가, 메모리 디바이스(100)는 연산 정보를 컨텍스트와 함께 호스트(50)에 전송할 수 있다. 메모리 디바이스(100)는 이 연산 정보를 컨텍스트와 함께 호트드(50)로부터 역으로 수신할 것이고 상기 연산 정보를 분석하여 컨텍스트의 탬퍼링(tampering) 및 오류(fault)를 검출할 수 있다. 연산 정보는 데이터 길이, 이용되었던 알고리즘의 아이덴티피케이션(identification), 키 크기, 및/또는 세션 번호와 같은 임의의 적절한 형태를 취할 수 있으나, 이로 제한되지 않는다.
또한, 상술한 바와 같이, 메모리 디바이스(100)에 의해 제공되는 동작-미-종료 표시는 호스트(50)가 메모리 디바이스(100)가 상기 동작을 종료하는 것을 강제로 대기하도록 하지 않기 때문에, 이 실시예로 인해 호스트(50)는 메모리 디바이스(100)에 대한 다수의 동작들에 대하여 더욱 제어하게 된다. 이 유연성이 도 3에 도시된다. 여기서, 호스트(50)는 데이터 및 연산을 실행하라는 초기 명령을 메모리 디바이스에 제공한다(만일, 초기 콘텍스트가 있다면, 이와 함께). 메모리 디바이스(100)가 연산의 제 1 부분(즉, 메모리 디바이스(100)가 최대 응답 시간을 초과하기 전에 완료될 수 있는 연산의 일부분)과 함께 행해진 후에, 메모리 디바이스(100)는 저장을 위해 컨텍스트를 호스트(100)로 복귀시킨다. 상술한 바와 같이, 컨텍스트가 호스트(50)에 저장되고 메모리 디바이스(100)에 저장되지 않기 때문에, 메모리 디바이스(100)는 컨텍스트가 메모리 디바이스(100)에 저장되어 있을 때의 성능 및 상술한 다른 문제들을 겪지 않는다.
이 실시예에서, 메모리 디바이스(100)가 컨텍스트를 호스트(50)에 송신하면, 메모리 디바이스(100)는 또한 호스트(50)가 이후에 연산을 재개하라는 추가 명령을 송신할 필요가 있다고 표시하는 표시(예를 들어 플래그)를 송신한다. 이 표시에 응답하여, 호스트는 연산의 실행을 재개하라는 명령을, 이전에 저장된 컨텍스트와 함께 송신하고, 상술한 프로세스가 반복된다. 연산을 재개하라는 명령은 호스트(50)가 표시를 수신한 직후에 올 수 있다. 그러나, 재개하라는 명령이 이후에 오는 경우, 메모리 디바이스(100)는 호스트(50) 상에서 동일하거나 상일한 애플리케이션의 다른 동작에 대한 다른 명령을 실행하도록 해제될 것이다. 이 방식에서, 호스트(50)는 긴 연산을 실행하기 위해 명령들 사이에 다수의 애플리케이션들로부터의 명령들을 인터리빙할 수 있다. 인터리빙은 임의의 적절한 패턴을 취할 수 있음이 주목되엉 한다. 그러므로, 제 1 및 제 2 애플리케이션들로부터의 명령들을 교호하는 대신, 호스트(50)는 다른 애플리케이션으로부터의 명령을 제공하기 전에 하나의 애플리케이션으로부터의 둘 이상의 연속 명령들을 제공할 수 있다.
상기 예에서, 메모리 디바이스(100)는 호스트(50)가 연산을 완료하라는 추가 명령을 송신할 필요가 있다는 표시를 상기 호스트(50)에 제공하는 일을 하였다. 메모리 디바이스(100) 내의 제어기(110)는 최대 응답 시간이 무것인지를 인지할 수 있고, 응답 및 동작-미-완료 표시가 적시에 호스트(50)에 제공되는 것을 보장할 수 있다. 대안으로, 메모리 디바이스(100)의 버퍼가 설계될 수 있으므로, 상기 버퍼는 단지 최대 응답 시간 내에서 프로세싱될 수 있는 충분한 데이터를 저장할 수 있다. 그럼에도 불구하고, 본 실시예에서 메모리 디바이스(100)- 호스트(50)가 아님-가 동작이 계속될 필요가 있는지를 인지하기 때문에, 메모리 디바이스(100)는 여전히 동작-미-완료 표시가 호스트(50)에 제공되어야 하는지를 결정하는 일을 담당할 것이다.
대안의 실시예에서, 호스트(50)에게 동작을 계속하라는 추가 명령을 송신할 필요가 있다고 고지하는 일을 담당하는 메모리 디바이스(100) 대신, 호스트(50)가 이 책임을 담당할 수 있다. 따라서, 이 대안의 실시예에서, 메모리 디바이스(100)는 호스트(50)에 동작-미-완료 표시를 제공하지 않아도 되는데 왜냐하면 호스트(50)는 동작이 완료되면 그리고 동작이 완료될 대 트랙킹(tracking)하기 때문이다. 이 대안은 상이한 애플리케이션들로부터의 명령들 및 동작들을 인터리빙하는데 유사한 이점들을 제공한다. 도 4에 도시되는 바와 같이, 호스트(50)는 데이터 및 연산을 실행하라는 초기 명령들을 메모리 디바이스(100)에 제공(만일 초기 컨텍스트가 있다면, 이와 함께)한다. 이 실시예에서, 호스트(50)는 프로세싱될 데이터를 일련의 블록들로 배열하고, 각각의 블록은 메모리 디바이스(100)의 최대 응답 시간 내에서 프로세싱될 수 있는 만큼의 데이터만을 포함한다. 메모리 디바이스(100)가 이 제 1 애플리케이션으로부터의 제 1 데이터의 블록을 프로세싱하고 난 후, 메모리 디바이스는 저장을 위해 상기 연산의 컨텍스트를 호스트(100)로 복귀시킨다. (상술한 바와 같이, 컨텍스트가 이 실시예에서 호스트(50) 내에 저장되고 메모리 디바이스(100)에 저장되지 않기 때문에, 메모리 디바이스(100)는 컨텍스트가 메모리 디바이스(100)에 저장될 때 성능 및 상술한 다른 문제들을 겪지 않는다.) 호스트(50)가 데이터를 블록들로 조직하기 때문에, 호스트는 프로세싱될 필요가 있는 추가 블록들이 존재하는 경우 연산을 완료하는데 추가 명령이 필요한지를 인지한다. 그러므로, 메모리 디바이스(100)는 상술한 실시예에서처럼, 동작-미-완료 표시를 호스트(50)에 송신할 필요가 없다.
메모리 디바이스(100)가 제 1 애플리케이션으로부터의 제 1 블록을 프로세싱하고 있으면, 호스트(50)는 메모리 디바이스(100)에 다른 명령을 송신할 수 있다. 도 4에 도시된 예에서, 호스트(50)는 제 2 애플리케이션으로부터의 명령을 메모리 디바이스(100)에 송신하여 상기 제 2 애플리케이션으로부터의 제 1 데이터의 블록을 프로세싱한다. 그리고나서 상술한 프로세스가 상기 데이터의 블록에 적용되고, 메모리 디바이스(100)는 다른 동작(여기서, 제 2 데이터의 블록을 프로세싱하라는 제 1 애플리케이션으로부터의 명령)을 실행하기 위해 해제된다. 이 방식에서, 호스트(50)는 다수의 애플리케이션들로부터의 다수의 스트림들을 지원하라는 명령들을 인터리빙할 수 있다. (트랜잭션(transaction)을 다수의 블록들로 분해하는 것 또한 시스템 충돌(system crash)을 방지한다.) 인터리빙이 임의의 적절한 패턴을 취할 수 있음이 주목되어야 한다. 그러므로, 도 4에 도시된 바와 같이 제 1 및 제 2 애플리케이션을 교호하는 대신, 호스트(50)는 다른 애플리케이션으로부터의 명령을 제공하기 전에 하나의 애플리케이션으로부터의 둘 이상의 연속 명령들을 제공할 수 있다. 또한, 제 1 및 제 2 애플리케이션들이 이 예에서 동일한 호스트(50)에 의해 초기화되는 동안, 다른 실시예들에서, 애플리케이션들은 상이한 호스트들에 의해 초기화된다(예를 들어, 양 호스트들이 동일한 암호화 및 서명 키들을 가질 때).
도 4에 도시되는 바와 같이, 연산의 컨텍스트는 호스트(50) 상의 애플리케이션으로 복귀되고, 컨텍스트를 저장하는 프로세스는 애플리케이션에 의해 처리된다. 호스트(50) 상에 컨텍스트를 저장함으로써, 모든 애플리케이션이 자기 자신의 스트림(들)에 대한 컨텍스트를 처리할 것이기 때문에, 메모리 디바이스(100) 내의 내부 비휘발성 메모리 및 추가 RAM 메모리의 필요성이 제거될뿐만 아니라, 메모리 디바이스(100) 내의 관리 펌웨어에 대한 필요성이 제거된다. 단지 컨텍스트를 저장하고 컨텍스트를 다음 명령과 함께 제공하는 것만이 필요하다.
결론
상술한 상세한 설명은 본 발명이 취할 수 있는 선택된 형태들의 예로서 이해되어야 하고 본 발명을 규정하는 것으로 이해되지 않도록 의도된다. 청구되는 발명의 범위를 규정하도록 의도되는 것은 모든 등가물들을 포함하는 다음의 청구항들뿐이다. 최종적으로, 본원에 기술되는 바람직한 실시예들 중 어떠한 실시예의 임의의 양태는 단독으로 또는 서로 결합하여 이용될 수 있음이 주목되어야 한다.
50 : 호스트 100 : 메모리 디바이스
110 : 제어기 150 : 호스트 디바이스

Claims (32)

  1. 메모리 디바이스에 의해 데이터에 대한 연산을 실행하기 위한 방법에 있어서:
    호스트(host)와 통신 상태에 있는 메모리 디바이스에 의해:
    상기 호스트로부터 명령 및 데이터를 수신하여 상기 데이터에 대한 연산을 실행하는 단계로서, 상기 메모리 디바이스가 상기 연산을 완료하는데 요구되는 시간은 상기 메모리 디바이스가 상기 명령들에 응답하기 위한 최대 응답 시간을 초과하는, 연산을 실행하는 단계;
    상기 명령에 응답하여 상기 데이터에 대한 연산을 실행하기 시작하는 단계;
    상기 최대 응답 시간을 초과하기 전에 그리고 상기 연산을 완료하기 전에, 상기 연산의 컨텍스트을 송신하는 단계; 및
    이후에:
    상기 호스트로부터: (i) 상기 연산을 실행하는 것을 재개하라는 명령 및 (ii) 상기 컨텍스트를 수신하는 단계; 및
    상기 호스트로부터 수신되는 컨텍스트에 기초하여 상기 데이터에 대한 연산을 실행하는 것을 재개하는 단계를 실행하는 단계를 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  2. 제1항에 있어서, 상기 컨텍스트를 상기 호스트에 송신한 후에 그러나 상기 호스트로부터 상기 연산을 실행하는 것을 재개하라는 명령을 수신하기 전에 상이한 데이터에 대한 제 2 연산을 실행하기 시작하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  3. 제1항에 있어서, 상기 데이터에 대한 연산이 완료되지 않은 표시를 상기 호스트에 송신하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  4. 제1항에 있어서, 상기 메모리 디바이스는 상기 호스트 내에 내장되는 보안 모듈을 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  5. 제1항에 있어서, 상기 메모리 디바이스는 상기 호스트로부터 제거 가능한, 데이터에 대한 연산을 실행하기 위한 방법.
  6. 제1항에 있어서, 상기 연산은 암호화 연산을 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  7. 제6항에 있어서, 상기 암호화 연산은 다음: AES 연산, DES 연산, RC4 연산, RSA 연산, DH 연산, DSS 연산, ECDH 연산, ECDSS 연산, MQV 연산, SHA1 연산, SHA256 연산, SHA384 연산, SHA512 연산, HMAC 연산, CBC-MAC 연산, 및 CMAC 연산 중 하나를 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  8. 제6항에 있어서, 상기 암호화 연산은 다음: AES 연산, CBC-MAC 연산, CMAC 연산, 및 DES 연산 중 하나를 포함하고, 상기 컨텍스트는 상기 암호화 연산에서 이용되는 현재 초기 벡터를 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  9. 제6항에 있어서, 상기 암호화 연산은 다음: SHA1 연산, SHA256 연산, SHA384 연산, SHA512 연산, 및 HMAC 연산을 포함하고, 상기 컨텍스트는 상기 암호화 연산에서 이용되는 현재 다이제스트(digest) 값을 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  10. 제6항에 있어서, 상기 암호화 연산에 이용하기 위한 비밀 키를 생성하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  11. 제1항에 있어서, 상기 연산은 서명 연산을 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  12. 제1항에 있어서, 상기 컨텍스트를 상기 호스트에 제공하기 전에 상기 컨텍스트를 암호화하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  13. 제12항에 있어서, 상기 컨텍스트를 암호화하는데 이용되는 키는 상기 메모리 디바이스 내에 저장되는 비밀 키인, 데이터에 대한 연산을 실행하기 위한 방법.
  14. 제1항에 있어서, 상기 컨텍스트를 상기 호스트에 제공하기 전에 상기 메모리 디바이스에 저장되는 비밀 키로상기 컨텍스트를 서명하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  15. 제1항에 있어서,
    연산 정보를 상기 컨텍스트와 함께, 상기 호스트로 송신하는 단계; 및
    이후에:
    상기 연산 정보를, 상기 컨텍스트와 함께, 상기 호스트로부터 수신하는 단계; 및
    상기 호스트로부터 수신되는 연산 정보를 분석하여 상기 컨텍스트의 탬퍼링(tampering) 또는 오류(fault)를 검출하는 단계를 추가로 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  16. 제1항에 있어서, 상기 컨텍스트는 상기 연산의 수행 상태 및 상기 연산의 부분적인 결과 중 적어도 하나를 포함하는, 데이터에 대한 연산을 실행하기 위한 방법.
  17. 메모리 디바이스에 있어서:
    상기 메모리 디바이스를 호스트와 통신 상태로 배치하도록 구성되는 호스트 인터페이스; 및
    상기 호스트 인터페이스와 통신하며:
    상기 데이터에 대한 연산을 실행하도록 상기 호스트로부터 명령 및 데이터를 수신하고, 상기 메모리 디바이스가 상기 연산을 완료하는데 요구되는 시간이 상기 메모리 디바이스가 상기 명령들에 응답하기 위한 최대 응답 시간을 초과하고;
    상기 데이터에 대한 연산을 실행하기 시작하고;
    상기 최대 응답 시간을 초과하기 전에 그리고 상기 연산을 완료하기 전에, 상기 연산의 컨텍스트를 상기 호스트에 송신하고;
    이후에:
    상기 호스트로부터: (i) 상기 연산을 실행하는 것을 재개하라는 명령 및 (ii) 상기 컨텍스트를 수신하고;
    상기 호스트로부터 수신되는 컨텍스트에 기초하여 상기 데이터에 대한 연산을 실행하는 것을 재개하도록 구성되는 제어기를 포함하는, 메모리 디바이스.
  18. 청구항 17에 있어서, 상기 제어기는, 상기 컨텍스트를 상기 호스트에 송신한 후에 그러나 상기 호스트로부터 상기 연산을 실행하는 것을 재개하라는 명령을 수신하기 전에 상이한 데이터에 대한 제 2 연산을 실행하기 시작하도록 추가로 구성되는, 메모리 디바이스.
  19. 제17항에 있어서, 상기 제어기는 상기 데이터에 대한 연산이 완료되지 않은 표시를 상기 호스트에 송신하도록 추가로 구성되는, 메모리 디바이스.
  20. 제17항에 있어서, 상기 메모리 디바이스는 상기 호스트 내에 내장되는 보안 모듈을 포함하는, 메모리 디바이스.
  21. 제17항에 있어서, 상기 메모리 디바이스는 상기 호스트로부터 제거 가능한, 메모리 디바이스.
  22. 제17항에 있어서, 상기 연산은 암호화 연산을 포함하는, 메모리 디바이스.
  23. 제22항에 있어서, 상기 암호화 연산은 다음: AES 연산, DES 연산, RC4 연산, RSA 연산, DH 연산, DSS 연산, ECDH 연산, ECDSS 연산, MQV 연산, SHA1 연산, SHA256 연산, SHA384 연산, SHA512 연산, HMAC 연산, CBC-MAC 연산, 및 CMAC 연산 중 하나를 포함하는, 메모리 디바이스.
  24. 제22항에 있어서, 상기 암호화 연산은 다음: AES 연산, CBC-MAC 연산, CMAC 연산, 및 DES 연산 중 하나를 포함하고, 상기 컨텍스트는 상기 암호화 연산에서 이용되는 현재 초기 벡터를 포함하는, 메모리 디바이스.
  25. 제22항에 있어서, 상기 암호화 연산은 다음: SHA1 연산, SHA256 연산, SHA384 연산, SHA512 연산, 및 HMAC 연산을 포함하고, 상기 컨텍스트는 상기 암호화 연산에서 이용되는 현재 다이제스트 값을 포함하는, 메모리 디바이스.
  26. 제22항에 있어서, 상기 제어기는 상기 암호화 연산에 이용하기 위한 비밀 키를 생성하도록 추가로 구성되는, 메모리 디바이스.
  27. 제17항에 있어서, 상기 연산은 서명 연산을 포함하는, 메모리 디바이스.
  28. 제17항에 있어서, 상기 제어기는 상기 컨텍스트를 상기 호스트에 제공하기 전에 상기 컨텍스트를 암호화하도록 추가로 구성되는, 메모리 디바이스.
  29. 제28항에 있어서, 상기 컨텍스트를 암호화하는데 이용되는 키는 상기 메모리 디바이스 내에 저장되는 비밀 키인, 메모리 디바이스.
  30. 제17항에 있어서, 상기 제어기는 상기 컨텍스트를 상기 호스트에 제공하기 전에 상기 메모리 디바이스에 저장되는 비밀 키로상기 컨텍스트를 서명하도록 추가로 구성되는, 메모리 디바이스.
  31. 제17항에 있어서, 상기 제어기는:
    연산 정보를 상기 컨텍스트와 함께, 상기 호스트로 송신하고;
    이후에:
    상기 연산 정보를, 상기 컨텍스트와 함께, 상기 호스트로부터 수신하고;
    상기 호스트로부터 수신되는 연산 정보를 분석하여 상기 컨텍스트의 탬퍼링 또는 오류를 검출하도록 추가로 구성되는, 메모리 디바이스.
  32. 제17항에 있어서, 상기 컨텍스트는 상기 연산의 수행 상태 및 상기 연산의 부분적인 결과 중 적어도 하나를 포함하는, 메모리 디바이스.
KR1020117029907A 2009-06-30 2009-12-04 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스 KR20120036311A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/495,302 US8516232B2 (en) 2009-06-30 2009-06-30 Method and memory device for performing an operation on data
US12/495,302 2009-06-30

Publications (1)

Publication Number Publication Date
KR20120036311A true KR20120036311A (ko) 2012-04-17

Family

ID=41820714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117029907A KR20120036311A (ko) 2009-06-30 2009-12-04 데이터에 대한 연산을 실행하기 위한 방법 및 메모리 디바이스

Country Status (6)

Country Link
US (1) US8516232B2 (ko)
EP (1) EP2449473A1 (ko)
KR (1) KR20120036311A (ko)
CN (1) CN102804160B (ko)
TW (1) TW201101039A (ko)
WO (1) WO2011002435A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550578B2 (en) 2019-11-07 2023-01-10 Sk Hynix Inc Data storage apparatus including swap memory and operating method thereof

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8564555B2 (en) * 2009-04-30 2013-10-22 Synaptics Incorporated Operating a touch screen control system according to a plurality of rule sets
US8782389B2 (en) * 2011-07-19 2014-07-15 Sandisk Technologies Inc. Storage device and method for updating a shadow master boot record
KR20130049542A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 소자 및 이를 포함하는 메모리 시스템
US9207749B2 (en) * 2012-08-28 2015-12-08 Intel Corporation Mechanism for facilitating efficient operations paths for storage devices in computing systems
US10402186B2 (en) 2013-05-22 2019-09-03 Gimso Mobile Ltd. Remote update of a portable storage device
US9195406B2 (en) * 2013-06-28 2015-11-24 Micron Technology, Inc. Operation management in a memory device
WO2015176040A1 (en) * 2014-05-15 2015-11-19 Adesto Technologies Corporation Memory devices and methods having instruction acknowledgement
EP3319267B1 (en) * 2015-07-01 2019-05-08 Hytera Communications Corporation Limited Wireless system access control method and device
KR102314137B1 (ko) * 2015-11-04 2021-10-18 삼성전자 주식회사 리커버리 동작을 선택적으로 수행하는 불휘발성 메모리 장치 및 그 동작방법
US10379781B2 (en) * 2016-04-20 2019-08-13 Sandisk Technologies Llc Storage system and method for improved command flow
CN109151160B (zh) * 2018-06-26 2021-04-13 Oppo广东移动通信有限公司 通信方法、装置、移动终端及存储介质
US11915047B2 (en) 2020-06-30 2024-02-27 Western Digital Technologies, Inc. Managing storage device compute operations
US11681466B2 (en) * 2020-06-30 2023-06-20 Western Digital Technologies, Inc. Proactive storage operation management
US11914894B2 (en) 2020-12-08 2024-02-27 Western Digital Technologies, Inc. Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145052A (en) * 1997-11-04 2000-11-07 Western Digital Corporation Disk drive with adaptive pooling for command reordering
US6820148B1 (en) * 2000-08-17 2004-11-16 Sandisk Corporation Multiple removable non-volatile memory cards serially communicating with a host
KR100528973B1 (ko) 2003-11-05 2005-11-16 한국전자통신연구원 가비지 콜렉션 방법 및 그 장치
US8001549B2 (en) * 2006-04-27 2011-08-16 Panasonic Corporation Multithreaded computer system and multithread execution control method
JP4477616B2 (ja) * 2006-10-19 2010-06-09 株式会社日立製作所 署名システム及び署名方法
CN101589378B (zh) 2006-12-04 2014-02-12 桑迪士克科技公司 通过虚拟块防止超时的便携式模块接口
JP4410792B2 (ja) * 2006-12-21 2010-02-03 株式会社日立コミュニケーションテクノロジー 暗号化装置
WO2008081801A1 (ja) * 2006-12-27 2008-07-10 Panasonic Corporation 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
US8214651B2 (en) * 2008-07-09 2012-07-03 International Business Machines Corporation Radio frequency identification (RFID) based authentication system and methodology

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11550578B2 (en) 2019-11-07 2023-01-10 Sk Hynix Inc Data storage apparatus including swap memory and operating method thereof

Also Published As

Publication number Publication date
TW201101039A (en) 2011-01-01
WO2011002435A1 (en) 2011-01-06
US8516232B2 (en) 2013-08-20
US20100332855A1 (en) 2010-12-30
CN102804160B (zh) 2015-08-12
EP2449473A1 (en) 2012-05-09
CN102804160A (zh) 2012-11-28

Similar Documents

Publication Publication Date Title
US8516232B2 (en) Method and memory device for performing an operation on data
US9191202B2 (en) Information processing device and computer program product
TWI632483B (zh) 安全裝置及在其內提供安全服務至主機的方法、安全設備以及電腦軟體產品
US11087000B2 (en) Controlled starting of an electronic circuit
US11086999B2 (en) Secure starting of an electronic circuit
JP2016517241A (ja) ストレージデバイスによって支援されるインライン暗号化および暗号化解除
CN103069384A (zh) 用从储存设备加载的操作系统代码安全地引导主机设备的主机设备和方法
US9959403B2 (en) Information processing system for mutual authentication between communication device and storage
KR20190014444A (ko) 보안 장치, 이를 포함하는 전자 장치 및 전자 장치의 동작 방법
US20230195473A1 (en) Peripheral component interconnect express device startup method and apparatus, and storage medium
CN114329496A (zh) 操作系统的可信启动方法和电子设备
CN115629824B (zh) Gpu的启动方法、装置、设备、存储介质和程序产品
CN111783120A (zh) 一种数据的交互方法、计算设备、bmc芯片及电子设备
CN114154443A (zh) 芯片授权和验证方法、装置和电子设备
JP6203556B2 (ja) 情報処理システム
JP6069120B2 (ja) 情報処理システム
US20230385461A1 (en) Secure starting of an electronic circuit
KR20100137354A (ko) 가상화 스마트 카드 시스템, 상기 가상화 스마트 카드 시스템 제공방법, 및 데이터 프로세싱 장치
CN114077738A (zh) 快速外设组件互联设备启动方法、装置以及存储介质
CN117251876A (zh) 一种嵌入式控制器的组件授权验证方法和系统
CN115756314A (zh) Nvram数据处理方法、电子设备和可读存储介质
CN117786699A (zh) 芯片初始化方法、装置、模块、电子设备和存储介质

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid