KR20140113578A - 디지털 콘텐츠 보호 장치 및 방법 - Google Patents

디지털 콘텐츠 보호 장치 및 방법 Download PDF

Info

Publication number
KR20140113578A
KR20140113578A KR1020140030652A KR20140030652A KR20140113578A KR 20140113578 A KR20140113578 A KR 20140113578A KR 1020140030652 A KR1020140030652 A KR 1020140030652A KR 20140030652 A KR20140030652 A KR 20140030652A KR 20140113578 A KR20140113578 A KR 20140113578A
Authority
KR
South Korea
Prior art keywords
page
digital content
memory
offset
address
Prior art date
Application number
KR1020140030652A
Other languages
English (en)
Other versions
KR101632235B1 (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 KR20140113578A publication Critical patent/KR20140113578A/ko
Application granted granted Critical
Publication of KR101632235B1 publication Critical patent/KR101632235B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

본 발명의 실시예에서, 프로세서는 디지털 콘텐츠를 부분들로 파싱하고 각각의 부분들이 메모리의 대응 페이지로 저장되도록 하는 콘텐츠 저장 로직을 포함한다. 프로세서는 또한, 메모리 내에 목적지 어드레스를 갖는 기입 명령어를 수신하고, 목적지 어드레스가 디지털 콘텐츠의 일부분을 저장하는 메모리 위치와 연관되어 있다면 메모리 위치와 연관된 페이지를 삭제하기 위한 보호 로직을 포함한다. 목적지 어드레스가 디지털 콘텐츠 중 어느 것도 저장하지 않는 다른 메모리 위치와 연관되어 있다면, 보호 로직은 기입 명령어의 실행을 허용한다. 다른 실시예들이 기술되고 청구되어 있다.

Description

디지털 콘텐츠 보호 장치 및 방법{APPARATUS AND METHOD TO PROTECT DIGITAL CONTENT}
본 발명은 디지털 콘텐츠의 보호에 관한 것이다.
암호화된 디지털 콘텐츠는 암호해제 후 공격에 취약할 수 있다. 예컨대, 암호해제된 디지털 콘텐츠의 부분의 오버라이트(overwrite)는 공격을 당할 수 있다. 공격시, 기입 명령어는, 데이터 스트링에서의 후속 데이터가 메타데이터인지 또는 페이로드 데이터인지를 나타내는 데이터 타입 인디케이터(indicator)를 오버라이트 하도록 지시한다. 페이로드 데이터의 표시로부터 메타데이터의 표시로의 데이터 타입 인디케이터의 오버라이트는 페이로드 데이터에 비권한 액세스를 허용할 수 있다. 즉, 데이터 타입 인디케이터에 후속하는 위치에 저장된 데이터가 페이로드 데이터 대신에 메타데이터로서 재-라벨링(re-labeling)되기 때문에, 그리고 메타데이터가 전형적으로 보호되지 않기 때문에, (부정확하게 라벨링된) 페이로드 데이터는 페이로드 데이터의 도난을 포함하는 비권한 액세스를 당할 수 있다.
도 1은 본 발명의 일 실시예에 따르는 시스템의 부분의 블록도이다.
도 2는 본 발명의 일 실시예에 따르는 다른 시스템의 부분의 블록도이다.
도 3은 본 발명의 일 실시예에 따르는, 메모리에 기입된 디지털 콘텐츠를 도시하는 블록도이다.
도 4는 본 발명의 일 실시예에 따르는, 디지털 콘텐츠를 보호하는 방법의 흐름도이다.
도 5는 본 발명의 일 실시예에 따르는 프로세서 코어의 블록도이다.
도 6은 본 발명의 일 실시예에 따르는 프로세서의 블록도이다.
도 7은 본 발명의 일 실시예에 따르는 멀티-도메인 프로세스의 블록도이다.
도 8은 본 발명의 일 실시예에 따르는 다중 코어를 포함하는 프로세서의 일 실시예를 도시한다.
도 9는 본 발명의 일 실시예에 따르는 시스템의 블록도이다.
도 10은 본 발명의 다른 실시예에 따르는 시스템의 블록도이다.
보안 강화된 프로세서 (Security Enhanced Processor; SEP)는 예컨대 DRM(Digital Right Management) 재생 동안 안전한 콘텐츠 암호해제를 위해 사용된다. 콘텐츠는 관련 하드웨어로 내장될 수 있는 액세스 제어 메커니즘을 구비한 전용 메모리인 고립 메모리 영역(Isolated Memory Regions; IMR)으로 암호해제될 수 있다. IMR 사용은 호스트 프로세서 및 멀웨어(malware)가 암호해제된 콘텐츠로의 직접 액세스를 방지하고, 선택된 서브시스템(예컨대, 보안 엔진 및 하드웨어 디코더)만이 IMR에 저장된 콘텐츠에 액세스하는 것을 허용한다.
디코더는 자신이 디코딩을 진행할 수 있기 전에 보호된 압축 콘텐츠에 대한 정보를 필요로 할 수 있다. 예컨대, 슬라이스 메타데이터 및 실제 보호된 콘텐츠 페이로드의 크기 및 위치에 대한 정보는 디코더가 압축 데이터를 디코딩하기 전에 필요할 수 있다. 이는 보안 홀들(security holes), 예컨대, "컷 앤 페이스트 공격(cut and paste attack)" 및 "평문 오버레이(plain text overlay)"에 대한 가능성을 연다. 예컨대, 데이터가 보안 엔진에 의해 파싱(parsing) 될 때의 공격으로 인해, (보호된 PAYLOAD를 포함하는) 전체 암호해제된 콘텐츠는, 보안 엔진이 헤더 정보의 수정에 기초하여 데이터를 메타데이터로서 잘못 해석하기 때문에, 호스트 엔티티에 제공될 수 있다. 따라서, 보호된 페이로드 콘텐츠는 호스트의 로그(rogue) 애플리케이션에 의해 도난될 수 있다.
또한, 암호 블록(crypto-block)으로 정렬되지 않은 더 작은 패킷들은 콘텐츠 제공자로부터 평문 재료(plain text material)로서 도달할 수 있고, 호스트는 패킷이 암호해제될 필요가 없는 보안 엔진에 특정될 수 있다. 따라서, 공격자는 "오버라이트된 평문 부분(overwritten plain text part)"을 암호해제할 필요가 없는 콘텐츠로서 특정할 수 있다. 보안 엔진이 호스트로부터 (오프셋을 통해) 위치 정보를 얻는다는 것을 유의해야 한다. 결과적으로, 호스트는 부정확한 데이터를 잠재적으로 이런 방식으로 전송하여 실제 데이터를 대체할 수 있다.
공격 시나리오는 실제 비디오 프레임에 정렬되지 않은 불규칙한 크기를 갖는 패킷을 송신할 수 있는 이러한 스킴에서 가능하게 된다. 공격은 또한 하드웨어 플랫폼 상에서 가능하며, 이런 하드웨어 플랫폼 상의 디코더는 전체 스트림 자체를 파싱할 능력을 갖지 않는다.
일례에서, 공격은 이미 IMR로 암호해제된 데이터로 향할 수 있다. IMR을 지원하는 일부 플랫폼에서, 보안 엔진만이 IMR로의 판독-기입 액세스를 가지며, 반면에 다른 컴포넌트들, 예컨대 디코더는 판독전용 액세스로 제한된다. 보안 엔진은 암호해제된 데이터를 잠금(lock)하여, 후속 보안 비디오 경로 컴포넌트에 의해서만 소비되게 함으로써 "오버라이트" 공격을 잠재적으로 제거하고, 소비 후 리셋(예컨대, 잠금해제(unlock))할 수 있다.
그러나, 보안 엔진은 소정 데이터가 언제 소비되는지를 알지 못할 수 있다. 더욱이, IMR은 각각의 프레임이 디코더에 의해 소비되기 전 다수의 프레임을 홀드할 수 있다. 결국, 예컨대 보안 엔진에 의한 데이터 기입, 및 디코더에 의한 데이터 판독은 임의의 형태로 일어날 수 있다.
전형적으로, 프레임은 소비되기 전에 그 전체가 암호해제되며, 프레임을 구성하는 다수의 패킷들은 보안 엔진에 연속 형태(contiguous fashion)로 공급된다. 즉, 프레임은 다수의 패킷들로 이루어질 수 있으며, 이들 패킷들은, 다른 프레임의 패킷들이 암호해제되기 전에 전체 프레임이 IMR로 암호해제될 때까지, IMR로 연속해서 암호해제된다.
본 발명의 일 실시예에서, IMR은 기입-잠김-리셋 기능(write-lock-reset facility), 예컨대 페이지 당(또는 블록 당) 입상도(granularity)를 제공할 수 있다. 페이지(또는 블록)는 시스템이 필요할 때마다 소정의 입상도를 가질 수 있다. 페이지는 시스템 기동시 설정될 수 있다. 기입된 페이지 내의 최종 오프셋의 러닝(running) OFFSET은 그 페이지와 연관된 저장 레지스터에서 유지될 수 있다. OFFSET은 다음과 같이 모든 기입시 업데이트될 수 있다: 새로운 오프셋이 OFFSET보다 크다면 기입이 허용되고, OFFSET은 기입된 최종 위치로 업데이트될 수 있다. 달리 말하자면, OFFSET은 저장 레지스터에 의해 "잠김"된다. OFFSET보다 작은 페이지 내의 오프셋으로 기입을 시도하면, OFFSET은 0으로 리셋(페이지 잠금해제(page unlocked))될 수 있고, 페이지는 삭제될 수 있으며, 그 페이지 내의 소정 오프셋으로의 새로운 기입이 허용될 수 있다. 기입 후, OFFSET은 다시 업데이트될 수 있다.
OFFSET보다 작은 오프셋은 다음의 두 가지 경우로 시도된다: 1) 새로운 프레임은 IMR로 기입/암호해제되고 있다. 이 경우, OFFSET의 전형적인 리셋 및 페이지의 잠금해제가 일어난다. 2) 멀웨어가 기존 데이터 수정을 시도하고, 이 경우 OFFSET의 리셋 및 전체 페이지의 클리어런스(예컨대, 삭제)가 수정을 방지할 수 있다.
페이지 크기는 프레임 크기를 조정하도록 적절하게 또는 설정가능하게 이루어질 수 있다. 일례에서, 전체 프레임은, 예컨대 저장 레지스터에 저장된 OFFSET과 기입 오프셋을 비교함에 의해 공격이 검출될 때, 클리어될 수 있다.
일 실시예에서, LOCK 및 RESET 기능은 펌웨어 또는 하드웨어로 구현될 수 있다. 예컨대, SEP 상에서 실행되는 펌웨어는 페이지 속성(예컨대, 최종 기입된 오프셋)과 모방 LOCK 및 RESET 기능을 소프트웨어로 유지할 수 있다. SEP 펌웨어가 보안 환경에서 실행된다고 예상하기 때문에, 그 결과는 하드웨어에서 구현될 때와 동일하게 유효하다.
다양한 실시예에서, 디지털 콘텐츠의 보호는, 예컨대 디지털 콘텐츠가 암호해제된 후 프로세서에 의해 제공된다. 프로세서는 디지털 콘텐츠를 부분들로 파싱하고 각각의 부분들을 메모리의 대응 페이지에 저장하기 위한 콘텐츠 저장 로직을 포함할 수 있다. 프로세서는, 파싱된 디지털 콘텐츠가 저장된 후, 목적지 어드레스를 포함하는 기입 명령어를 수신하기 위한 보호 로직을 또한 포함하며, 기입 명령어의 목적지 어드레스가 디지털 콘텐츠의 부분을 저장하는 메모리 위치를 향한다면, 보호 로직은 페이지를 삭제할 수 있다. 목적지 어드레스가 디지털 콘텐츠 중 어느 것도 저장하지 않는 다른 메모리 위치와 연관된다면, 보호 로직은 기입 명령어를 실행한다. 기입 명령어가 목표로 한 디지털 콘텐츠가 저장된 페이지 삭제는 비권한 당사자에 의한 액세스로부터 삭제된 디지털 콘텐츠를 보호할 수 있다.
도 1을 참고하면, 본 발명의 일 실시예에 따르는 시스템(100)의 부분의 블록도가 도시되어 있다. 도 1에 도시된 바와 같이, 시스템(100)은 SEP(Security Enhanced Processor)(102)를 포함하는 여러 컴포넌트를 포함할 수 있다.
SEP(102)는 들어오는 명령어를 암호해제하기 위한 암호해제 로직(112)을 포함한다. SEP(102)는 콘텐츠 저장 로직(114)을 포함하는 MCH(Memory Controller Hub)(110)와, 어드레스 저장 로직(118), 어드레스 비교 로직(120), 및 페이지 삭제 로직(122)을 포함하는 보호 로직(116)을 포함한다. MCH(110)는 어드레스 오프셋, 예컨대 대응 페이지 내의 최종 기입된 메모리 위치의 오프셋을 저장하기 위한 하나 이상의 저장 레지스터(1240, 1241, ..., 124n)를 또한 포함할 수 있다. 도 1에서 SEP(102)는 하이 레벨에서 도시되어 있다는 것에 유의해야 하며, SEP(102)와 같은 프로세서가 다수의 다른 피처들을 포함할 수 있다는 것을 이해해야 한다.
시스템(100)은 하나 이상의 IMR을 포함하는 액세스 제어 메모리를 또한 포함할 수 있다. 다양한 실시예에서, 메모리(150)는 DRAM, SRAM, 또는 다른 타입의 저장 메모리일 수 있다. IMR에 대한 액세스는 MCH(110)에 의해 결정될 수 있다.
메모리(150)는 MCH(110)를 통해 디코더(180)에 결합될 수 있다. 일 실시예에서, 디코더(180)는, 예컨대 SEP(102) 및 메모리(150)와 함께 마더보드(도시되지 않음) 상에 위치할 수 있다.
메모리(150)의 부분은 하나 이상의 페이지들(1540, 1541, ..., 154n)로 분할될 수 있다. 일 실시예에서, 각각의 페이지는 동일한 저장 용량, 예컨대 대략 4 킬로바이트(kB) 또는 다른 저장 용량을 가질 수 있다. 다른 실시예에서, 페이지들 1540-154n 중 하나 이상은 페이지들 1540-154n 중 다른 하나와 저장 용량에서 변할 수 있다.
동작시, SEP(102)는 암호화된 디지털 콘텐츠(160)를 수신할 수 있고, 암호해제 로직(112)은 암호화된 디지털 콘텐츠(160)를 암호해제하여, (암호화되지 않은) 디지털 콘텐츠를 생성할 수 있다.
암호화된 디지털 콘텐츠가 암호해제된 후, MCH(110) 내의 콘텐츠 저장 로직(114)은 디지털 콘텐츠를 예컨대, 각각의 부분은 메모리(150)의 페이지들(1540,1541,...,154n)에 대응하는 하나 이상의 부분들로 파싱할 수 있다. 일부 실시예들에서, 부분들은 동일한 크기를 가질 수 있다. 다른 실시예들에서, 적어도 한 부분은 다른 부분과 크기가 상이할 수 있다. 암호해제된 콘텐츠가 부분들로 파싱된 후, 부분들은 콘텐츠 저장 로직(114)에 의해 저장되며, 각각의 부분은 대응하는 페이지들(1540, 1541, ..., 154n)에 저장된다.
어드레스 저장 로직(118)은 각각의 페이지(1540,1541,...,154n) 내의 최종 기입된 메모리 위치의 어드레스를, 대응하는 페이지의 시작 어드레스로부터의 오프셋으로서 대응하는 저장 레지스터(1240, 1241, ..., 124n)에 저장할 수 있다.
SEP(102)는 프로그램 명령어(170)를 수신할 수 있다. 프로그램 명령어 중 하나는 페이지들(1540, 1541, ..., 154n) 중 한 페이지 내인 목적지 어드레스로 향하는 기입 명령어일 수 있다. MCH(110)는 어느 페이지 154i가 기입 명령어의 목적지 어드레스를 포함하는지 결정할 수 있다. 어드레스 비교 로직(120)은 기입 명령어의 목적지 어드레스의 표현을 페이지 154i에 대응하는 저장 레지스터 124i에 저장된 어드레스의 표현과 비교할 수 있다. 예컨대, 어드레스 비교 로직(120)은, 기입 명령어의 목적지 어드레스에 대응하는 오프셋이 페이지 154i의 최종 기입된 어드레스에 대응하는 저장 레지스터 124i에 저장된 오프셋보다 작거나 또는 동일한지를 결정한다. 기입 명령어가 실행된다면, 기입 명령어는 저장된 데이터 중 일부를 페이지 154i에 오버라이트 할 것이다. 예컨대, 오버라이트되도록 목표된 저장된 데이터는 페이로드 데이터의 데이터 인디케이터 타입(indicator type)을 포함할 수 있다. 데이터 인디케이터 타입이 오버라이트된다면, 페이로드 데이터는 예컨대 전형적으로 보호되지 않는 메타데이터로서 잘못 라벨링될 수 있고, 그래서 페이로드 데이터는 공격 대상이 될 수 있다.
목적지 어드레스가 저장 레지스터 124i에 저장된 오프셋에 의해 표현된 어드레스보다 작거나 또는 동일한지가 결정된다면, 어드레스 비교 로직(120)은 페이지 삭제 로직(122)을 트리거하여 페이지 154i를 삭제할 수 있다. 페이지 154i의 삭제는 페이지에 저장된 디지털 콘텐츠가 비권한 액세스를 당하지 않을 것이라는 것을 보장할 수 있다. 일 실시예에서, 삭제에 후속하여 페이지 154i는 블랭크로 남겨질 수 있다.
수신된 기입 명령어의 목적지 어드레스가 저장 레지스터(124i)에 저장된 어드레스보다 크다면, 기입 명령어가 실행될 수 있는데, 예를 들면, 추가 데이터가 페이지(154i)에, 예를 들면, 페이지(154i)의 미기입된 부분에 기입될 수 있다.
페이지들(1540, 1541, ..., 154n)의 콘텐츠는 디코딩을 위해 MCH(110)를 경유하여 디코더(180)에 제공될 수 있고, 디코딩된 데이터는 예를 들어, 비디오, 오디오, 또는 다른 전용 콘텐츠로서 출력될 수 있다. 공격 시나리오에서, 페이지(154i)는 삭제되고 노이즈로서 디코딩될 수 있고, 디지털 콘텐츠(162)가 공격당했다는 것을 나타내도록 동작할 수 있는 노이즈로서 출력될 수 있다.
도 2에서는, 본 발명의 다른 실시예에 따른 시스템(200)의 일부의 블록도가 도시되어 있다. 도 2에 도시된 바와 같이, 시스템(200)은 메모리 제어기 허브(MCH)(222)에 결합될 수 있는 프로세서(210)를 포함하는 다양한 컴포넌트들을 포함할 수 있다. 프로세서(210)는 코어들(2110, 2111, ..., 211n)을 포함할 수 있는 멀티-코어 프로세서일 수 있다. 프로세서(210)는 또한 암호화된 디지털 콘텐츠를 암호해제하기 위한 암호해제 로직(212)을 포함할 수 있다.
MCH(222)는 DRAM(dynamic random access memory), SRAM(static random access memory), 또는 다른 타입의 메모리와 같은 메모리(220)에 결합될 수 있다. MCH(222)는 콘텐츠 저장 로직(224) 및 어드레스 저장 로직(228), 어드레스 비교 로직(230), 및 페이지 삭제 로직(232)을 포함한 보호 로직(226)을 포함할 수 있다. MCH(222)는 또한 하나 이상의 저장 레지스터들(2420, 2421, ..., 242n)을 포함할 수도 있고, 이들 각각은, 예를 들어 대응하는 페이지의 초기 어드레스로부터의 오프셋으로서, 페이지의 어드레스를 메모리(220)에 저장한다.
메모리(220)는 하나 이상의 페이지들(2400, 2401, ..., 240n)로 분할될 수 있다. 일 실시예에서, 각각의 페이지는 예를 들어 대략 4 킬로바이트(kB)의 동일한 용량일 수 있다. 다른 실시예에서, 일부 페이지들은 메모리(220) 내의 다른 페이지들과 용량에서 상이할 수 있다.
메모리(220)는, 예를 들어 데이터가 페이지들(2400, 2401, ..., 240n)에 저장된 후에, 메모리(220)에 저장된 디코드 데이터(예를 들어, 페이로드 데이터)로 구성될 수 있는 디코더(280)에 MCH(222)를 통해 결합될 수 있다.
동작시, 프로세서(210)는 암호화된 디지털 콘텐츠(260)를 수신할 수 있고, 암호해제 로직(212)은 (암호화되지 않은) 디지털 콘텐츠를 생산하기 위해 암호화된 디지털 콘텐츠(260)를 암호해제할 수 있다. 메모리 관리 제어기(222) 내의 콘텐츠 저장 로직(224)은 예를 들어 각각의 부분이 페이지들(2400, 2401, ..., 240n) 중 하나에 대응하는 하나 이상의 부분들로 디지털 콘텐츠를 파싱할 수 있다. 일부 실시예들에서, 부분들은 동일한 크기일 수 있다. 다른 실시예들에서, 적어도 하나의 부분은 다른 부분들 중 적어도 하나와 상이한 크기이고, 각각의 부분은 페이지(2400, 2401, ..., 240n) 중 하나에 대응하는 크기일 수 있다. 콘텐츠 저장 로직(224)은 각각의 부분을 대응하는 페이지(2400, 2401, ..., 240n)에 저장할 수 있다.
메모리 관리 제어기(222)의 보호 로직(226) 내의 어드레스 저장 로직(228)은 각각의 페이지들(2400, 2401, ..., 240n) 내의 최종 기입된 메모리 위치의 대응하는 어드레스를 대응하는 저장 레지스터(2420, 2421, ..., 242n)에 저장할 수 있다. 일 실시예에서, 각각의 어드레스는 대응하는 페이지(2400, 2401, ..., 240n)의 초기 어드레스로부터의 대응하는 오프셋으로서 저장될 수 있다.
프로세서(210)는 프로그램 명령어들(270)을 수신할 수 있다. 프로그램 명령어들(270) 중 하나는 페이지들(2400, 2401, ..., 240n) 중 하나 내에 있는 목적지 어드레스로 유도하는 기입 명령어일 수 있다. 예를 들면, 기입 명령어는 페이지(2400) 내의 목적지 어드레스를 가질 수 있다.
어드레스 비교 로직(230)은 기입 명령어의 목적지 어드레스를, 목적지 어드레스를 포함하는 대응하는 페이지의 저장 레지스터, 예를 들어 저장 레지스터(2420)에 저장된 어드레스에 비교할 수 있다. 예를 들면, 목적지 어드레스에 대응하는 오프셋은 결정되고 저장 레지스터(2420)에 저장된 최종 기입된 오프셋과 비교될 수 있다. 어드레스 비교 로직(230)이 목적지 어드레스가 저장 레지스터(2420)에 저장된 오프셋에 의해 표현되는 어드레스보다 작거나 같다고 결정하는 경우에, 기입 명령어가 실행되면, 기입 명령어는 페이지(2400) 내의 저장된 데이터 중 일부를 오버라이트할 것이다. 결과적으로, 어드레스 비교 로직(230)은 페이지(2400)를 삭제하기 위해 페이지 삭제 로직(232)을 트리거할 수 있다. 페이지(2400)의 삭제는, 이전에 페이지에 저장된 디지털 콘텐츠가, 예를 들어 오버라이트 전에 페이로드 데이터가 후속하는 것을 나타내는 데이터 타입 인디케이터의 오버라이트를 통해 발생했을 수 있는 비권한 액세스에 당하지 않을 것이라는 것을 보장할 수 있다.
어드레스 비교 로직(230)이 기입 명령어의 목적지 어드레스가 최종 기입된 어드레스에 후속되는 것이라고 결정하면, 저장 레지스터에 저장된 최종 기입된 어드레스와 목적지 어드레스의 비교에 의해 (예를 들어, 목적지 어드레스에 대응하는 오프셋과 저장된 오프셋의 비교에 의해) 결정되기 때문에, 기입은 기입 명령어의 목적지 어드레스에 실행될 수 있다. 목적지 어드레스가 이전에 기입되지 않았기 때문에, 기입 명령어의 실행의 결과로서 어떠한 데이터도 오버라이트 되지 않을 것이다.
도 3에서는 본 발명의 일 실시예에 따라, 메모리에 저장될 디지털 콘텐츠의 블록도가 도시되어 있다. 암호해제된 디지털 콘텐츠(310)는 제1 데이터 타입 인디케이터(302), 제1 데이터(304), 제2 데이터 타입 인디케이터(306), 및 제2 데이터(308)를 포함할 수 있다. 일 실시예에서, 제1 데이터 타입 인디케이터(302)는 제1 데이터(304)가 메타데이터라는 것을 나타낼 수 있고, 제2 데이터 타입 인디케이터(306)는 제2 데이터(308)가 페이로드 데이터라는 것을 나타낼 수 있다.
메모리(320)는 클리어 잠금해제 페이지(322)를 포함할 수 있다. 메모리 관리 제어기(도시되지 않음) 내의 콘텐츠 저장 로직은 디지털 콘텐츠(310)의 일부를 페이지(322)에 기입하여, 디지털 콘텐츠(310)의 일부를 포함하는 페이지(324)를 생산할 수 있다. 페이지(322)에 기입("제1 기입")이 완료된 후에, 페이지(324)에 기입된 데이터의 최종 어드레스에 대응하는 최종 기입된 오프셋은 대응하는 저장 레지스터(도시되지 않음)에 저장될 수 있다. 제1 기입의 완료 후에, 페이지(324)는 페이지(324)에 다른 기입을 막도록 잠길 수 있다.
계속해서, 페이지(324)로의 추가 기입 명령어가 수신되면, 추가 기입 명령어의 목적지 어드레스에 대응하는 오프셋은 페이지(324)에 대응하는 저장 레지스터에 저장된 최종 기입된 오프셋과 비교될 수 있다. 추가 기입 명령어의 목적지 어드레스가 페이지(324)에서 이전 기입의 말단에 후속되면(예를 들어, 추가 기입 명령어의 목적지 어드레스 오프셋이 저장된 최종 기입된 오프셋에 후속되면), 잠긴 페이지(324)는 (예를 들어 잠금해제된 페이지(325)와 같이) 잠금해제될 수 있고, 추가 기입 명령어는 페이지(326)를 생산하기 위한 추가 데이터를 기입하도록 실행될 수 있으며, 이는 추가 기입 명령어가 실행된 후에 잠길 수 있다. 저장된 최종 기입된 오프셋은 페이지(326)에 저장된 추가 데이터를 반영하기 위해 대응하는 저장 레지스터에 업데이트될 수 있다.
추가 기입 명령어의 목적지 어드레스와 연관된 오프셋과 최종 기입된 오프셋의 비교는 추가 기입 명령어가 이미 기입된 페이지 어드레스로 유도되는 것이라고 가리킨다면, 페이지의 콘텐츠들은 (클리어) 페이지(328)를 생산하기 위해 삭제(플러쉬)될 수 있다. 최종 기입된 오프셋은 0으로 리셋되어 페이지(328)에 대응하는 저장 레지스터에 저장될 수 있다. 페이지(326)에 저장된 디지털 콘텐츠의 삭제는 이전에 저장된 디지털 콘텐츠가 손상되지 않을 것이라는 것을 보장한다.
삭제된 페이지는 페이지(328)에 후속 기입을 가능하게 하기 위해 잠금해제되어 페이지(330)를 얻을 수 있고, 이는 후속 기입이 실행된 후에 다시 잠길 수 있다. 저장된 오프셋은 후속 기입으로 인해 페이지의 점유된 부분들을 반영하도록 페이지(330)의 대응하는 저장 레지스터에서 업데이트될 수 있다.
도 4에서는 본 발명의 일 실시예에 따라, 디지털 콘텐츠를 보호하는 방법의 흐름도가 도시되어 있다. 블록(402)에서 시작하여, 들어오는 암호화된 디지털 콘텐츠는 예를 들어 보안 강화된 프로세서(Security Enhanced Processor), 또는 멀티-코어 프로세서에 의해 암호해제될 수 있다.
블록(404)으로 계속해서, 암호해제된 디지털 콘텐츠는 예를 들어 메모리 제어기 허브에 의해 부분들로 파싱될 수 있다. 예를 들면, 각각의 부분은 예를 들어 고립 메모리 영역(isolated memory regions; IMR) 또는 시스템 메모리(예를 들면, DRAM)의 페이지에 저장될 크기로 될 수 있고, 일 실시예에서 각각의 페이지는 동일한 저장 용량(예를 들면, 4kB)을 가질 수 있거나, 또는 다른 실시예에서 일부 페이지들의 저장 용량은 다른 페이지들의 저장 용량과 상이할 수 있다. 일부 페이지들은 디지털 콘텐츠가 저장된 후에 부분적으로 채워질 수 있다.
블록(406)으로 진행해서, 각각의 부분은 IMR 또는 시스템 메모리 내의 대응하는 페이지에 저장될 수 있다. 블록(408)으로 이동하여, 각각의 페이지 내의 최종 기입된 메모리 위치의 (페이지 내의 어드레스에 대응하는) 최종 기입된 오프셋은 예를 들어 메모리 제어기 허브에 또는 시스템 메모리 같은 메모리에 위치될 수 있는 대응하는 레지스터에 저장될 수 있다.
블록(410)으로 진행해서, 디지털 콘텐츠 부분이 저장되어 있는 페이지들 중 한 페이지 내의 목적지 어드레스를 갖는 기입 명령어가 (프로세서에 의해) 수신될 수 있다. 판단 블록(412)으로 계속해서, 예를 들어 저장된 최종 기입된 오프셋과의 비교에 의해 기입 명령어의 목적지 어드레스가 대응하는 페이지 내의 최종 기입된 메모리 위치 어드레스보다 작거나 같은지 여부에 대한 결정은 프로세서에 의해 이루어질 수 있다. 목적지 어드레스가 최종 기입된 메모리 위치 어드레스보다 크다면, 블록(414)으로 진행하여 기입 명령어가 실행될 수 있는데, 예를 들면 기입 명령어는 대응하는 페이지 내의 블랭크 메모리 위치에 추가 데이터가 기입되는 것을 야기한다. 블록(418)으로 진행해서, 대응하는 페이지의 저장된 최종 기입된 오프셋은 추가 저장된 데이터를 반영하도록 업데이트될 수 있고, 블록(420)으로 진행하여 이 방법은 종료한다. 목적지 어드레스가 최종 기입된 메모리 위치 어드레스보다 작거나 동일하다면, 블록(416)에서 페이지는 삭제될 수 있다. 블록(417)으로 이동하여, 대응하는 저장 레지스터에 저장된 최종 기입된 오프셋은 예를 들어 삭제된 페이지를 반영하기 위해 0으로 리셋될 수 있다. 블록(414)으로 돌아가서, 기입 명령어가 실행될 수 있다. 블록(418)으로 진행하여, 대응하는 페이지의 저장된 최종 기입된 오프셋은 추가 저장된 데이터를 반영하기 위해 업데이트될 수 있고, 블록(420)으로 계속해서, 이 방법은 종료한다.
도 4의 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합에 의해 수행될 수 있다. 도 4의 실시예에서는 하이 레벨을 도시되어 있지만, 본 발명의 범주는 이에 한정되는 않는 것으로 이해되어야 한다.
실시예들은 많은 다른 시스템에서 구현될 수 있다. 예를 들면, 실시예들은 멀티코어 프로세서와 같은 프로세서에서 실현될 수 있다. 도 5에서는 본 발명의 하나의 실시예에 따른 프로세서 코어의 블록도가 도시되어 있다. 도 5에 도시된 바와 같이, 프로세서 코어(500)는 멀티코어 프로세서의 하나의 코어일 수 있고, 멀티-스테이지 파이프라인 방식의 아웃-오브-오더 프로세서로서 도시되어 있다.
도 5에 도시된 바와 같이, 코어(500)는, 실행될 명령어들을 페치(fetch)하고 프로세서에서 나중에 사용하기 위해 이들을 준비하도록 사용될 수 있는 프론트 엔드 유닛들(510)을 포함한다. 예를 들면, 프론트 엔드 유닛들(510)은 페치 유닛(501), 명령어 캐시(503), 및 명령어 디코더(505)를 포함할 수 있다. 일부 구현들에서, 프론트 엔드 유닛(510)은 마이크로-연산 저장소뿐만 아니라 마이크로코드 저장소와 함께 트레이스 캐시(trace cache)를 또한 포함할 수 있다. 페치 유닛(501)은 예를 들어 메모리 또는 명령어 캐시(503)로부터 마이크로-명령어들을 페치하고, 명령어 디코더(505)에 이들을 공급하여, 이들을 기초요소들, 즉 프로세서에 의해 실행되기 위한 마이크로-연산들로 디코딩할 수 있다.
마이크로-명령어들을 수신하고 실행하기 위해 이들을 준비하도록 사용될 수 있는 아웃-오브-오더(OOO) 엔진(515)이 프론트 엔드 유닛들(510) 및 실행 유닛들(520) 사이에 결합되어 있다. 특히, OOO 엔진(515)은 마이크로-명령어 플로우를 재배열하고 실행에 필요한 다양한 자원들을 할당할 수 있을 뿐만 아니라, 엔진의 리네이밍 로직의 사용에 의한 것과 같이 레지스터 파일(530) 및 확장 레지스터 파일(535)과 같은 다양한 레지스터 파일 내의 저장 위치들 상에 논리적인 레지스터들의 리네이밍을 제공하는 다양한 버퍼들을 포함할 수 있다. 레지스터 파일(530)은 정수 연산 및 부동 소수점 연산을 위한 별도의 레지스터 파일들을 포함할 수 있다. 확장 레지스터 파일(535)은 예를 들어 레지스터당 256 비트 또는 512 비트의 벡터 크기의 유닛을 위한 저장소를 제공할 수 있다.
예를 들어 다양한 정수, 부동 소수점, 및 단일 명령어 멀티플 데이터(SIMD) 로직 유닛들을 포함하는 다양한 자원들은 다른 전문화된 하드웨어 중에서 실행 유닛(520)에 제공될 수 있다. 예를 들면, 이러한 실행 유닛들은 하나 이상의 연산 로직 유닛들(ALU)(522)을 포함할 수 있다. 물론 곱셈-누적 유닛들 등과 같은 다른 실행 유닛들이 또한 있을 수 있다. 결과들은, 프로세서의 메모리 서브시스템(560) 내에서 구현될 수 있는 리타이어먼트 로직에 제공될 수 있다. 실행 유닛들 및 프론트 엔드 로직을 포함하는 다양한 프로세서 구조들은 예를 들어 메모리 서브시스템(560)에 결합될 수 있다. 이 메모리 서브시스템은 예를 들어 온 또는 오프 칩 캐시 및 시스템 메모리와 같은 메모리 계층의 추가 부분들과 프로세서 구조들 사이의 인터페이스를 제공할 수 있다. 이와 같이 서브시스템은 메모리 오더 버퍼(MOB)(540)를 포함하는 다양한 컴포넌트들을 갖는다. 특히, MOB(540)는 실행되는 명령어와 연관된 정보들을 수신하기 위한 다양한 어레이들 및 로직을 포함할 수 있다. 그 다음, 이 정보는 MOB(540)에 의해 검사되어, 명령어들이 유효하게 리타이어되고 결과 데이터가 프로세서의 아키텍처 상태로 커미트되는지 여부, 또는 명령어들의 적절한 리타이어먼트를 차단하는 하나 이상의 예외들이 발생하는지 여부를 결정한다. 물론, MOB(540)은 리타이어먼트와 연관된 다른 연산들을 처리할 수 있다.
도 5에 도시된 바와 같이, 일 실시예에서, MOB(540)는 하위 레벨 캐시(예컨대, L1 캐시)일 수 있는 캐시(550)에 결합된다. 또한, 메모리 서브시스템(560)은 시스템 메모리(도 5에서의 설명을 용이하게 하기 위해 도시하지 않음)와의 통신을 제공하기 위한 통합 메모리 제어기(570)를 포함할 수 있다. 또한, 메모리 서브시스템(560)은 메모리 요청들을 개시하기 위한 다양한 동작들을 핸들링하고, 메모리로부터의 데이터의 복귀를 핸들링하는 MEU(memory execution unit)(575)를 포함할 수 있다. 예를 들어, MEU(575)는 디지털 컨텐츠를 부분들로 파싱하는 것, 이 부분들을 대응하는 페이지들에 저장하는 것, 각각의 페이지의 최종 기입 오프셋을 저장하는 것, 그리고 기입 명령어가 페이지 내의 디지털 컨텐츠를 포함하는 메모리 위치에 관한 것인지 여부를 결정하는 것에 영향을 줄 수 있다. 본 발명의 실시예들과 관련하여 본 명세서에서 기술된 바와 같이, 기입 명령어가 페이지 내의 디지털 컨텐츠를 저장하는 메모리 위치에 관한 것인 경우, MEU(575)는 목적지 메모리 위치를 포함하는 페이지를 삭제할 수 있다.
메모리 서브시스템(560)으로부터 상위 레벨 캐시들, 시스템 메모리 등과의 데이터 통신이 발생할 수 있다. 도 5의 실시예는 이러한 상위 레벨에 의해 도시되었지만, 본 발명의 범위는 이에 한정되지 않는다는 점을 이해해야 한다. 예를 들어, 도 5의 구현이, 소위 x86 ISA(instruction set architecture) 아키텍처 등의 아웃-오브-오더 머신에 관한 것이지만, 본 발명의 범위는 이와 관련된 것에 한정되지 않는다. 즉, 그 외의 실시예들이 인-오더 프로세서, ARM-기반 프로세서 등의 RISC(reduced instruction set computing) 프로세서, 또는 에뮬레이션 엔진 및 연관된 로직 회로를 통해 상이한 ISA의 명령어들 및 동작들을 에뮬레이트할 수 있는또 다른 타입의 ISA 프로세서에서 구현될 수 있다.
이제 도 6을 참조하면, 본 발명의 실시예에 따른 프로세서의 블록도가 도시되어 있다. 도 6에 도시된 바와 같이, 프로세서(600)는 코어 도메인(610)에 복수의 코어들(610a - 610n)을 포함하는 멀티코어 프로세서일 수 있다. 일 실시예에서, 각각의 코어는 본 발명의 실시예들에서 기술된 바와 같이 컨텐츠 저장 로직, 어드레스 저장 로직, 어드레스 비교 로직, 및 페이지 삭제 로직을 포함하는 메모리 실행 유닛(도시되지 않음)을 포함할 수 있다. 또한, 도 6에 도시된 바와 같이, 하나 이상의 GPU(graphics processing unit)(6120-612n)들이 그래픽 도메인(612)에 존재할 수 있다. 이러한 다양한 계산 요소들은 인터커넥트(615)를 통해, 다양한 구성요소들을 포함하는 시스템 에이전트 또는 언코어(uncore; 620)에 결합될 수 있다. 알 수 있는 바와 같이, 언코어(620)는 최종 레벨 캐시일 수 있는 공유 캐시(630)를 포함할 수 있다.
또한, 언코어는 통합된 메모리 제어기(640) 및 다양한 인터페이스들(650)을 포함할 수 있다. 본 발명의 일부의 실시예들에서, 메모리 제어기(640)는 암호해제된 디지털 컨텐츠를 부분들로 파싱할 수 있고, 이 부분들을 시스템 메모리(660)의 대응하는 페이지들에 저장할 수 있으며, 그리고 각각의 페이지의 최종 기입 오프셋을 저장할 수 있다. 본 발명의 실시예들에 따라 메모리 제어기(640)는 디지털 컨텐츠의 일부가 페이지들 중 하나에 저장되는 메모리 위치의 목적지 어드레스를 기입 명령어가 갖는지 여부를 판정할 수 있으며, 만약 그러한 경우에는, 그 페이지를 삭제할 수 있다.
또한, 도 6과 관련하여, 프로세서(600)는 시스템 메모리(660)와, 예컨대 메모리 버스를 통하여 통신할 수 있다. 또한, 인터페이스(650)에 의해, 주변 장치들, 대용량 기억장치 등의 다양한 오프-칩 컴포넌트들로의 접속이 행해질 수 있다. 도 6의 실시예에서는 이러한 특정 구현에 의해 도시되었으나, 본 발명의 범위는 이것에 한정되지 않는다.
이제 도 7을 참조하면, 본 발명의 또 다른 실시예에 따른 멀티-도메인 프로세서의 블록도가 도시되어 있다. 도 7의 실시예에 도시된 바와 같이, 프로세서(700)는 복수의 도메인을 포함한다. 특히, 코어 도메인(710)은 복수의 코어들(7100 - 710n)을 포함할 수 있고, 그래픽 도메인(720)은 하나 이상의 그래픽 엔진들을 포함할 수 있으며, 그리고 시스템 에이전트 도메인(750) 또한 존재할 수 있다.
세 개의 도메인들만이 도시되었지만, 본 발명의 범위는 이것에 한정되지 않고 그 외의 실시예들에서는 추가적인 도메인들이 존재할 수 있다는 것을 이해해야 한다. 예를 들어, 각각의 코어 도메인이 적어도 하나의 코어를 포함하는 복수의 코어 도메인들이 존재할 수 있다.
일반적으로, 각각의 코어(710)는 다양한 실행 유닛들 및 추가적인 프로세싱 요소들뿐만 아니라 하위 레벨 캐시들을 더 포함할 수 있다. 다양한 코어들이 서로 결합될 수 있고, 복수의 LLC(last level cache)(7400 - 740n) 유닛들로 형성된 공유 캐시 메모리에 결합될 수 있다. 다양한 실시예들에서, LLC(740)는 코어들 및 그래픽 엔진 외에도 다양한 미디어 프로세싱 회로 사이에서 공유될 수 있다. 알 수 있는 바와 같이, 이에 따라 링 인터커넥트(730)는 코어들을 함께 결합시키고, 코어들, 그래픽 도메인(720) 및 시스템 에이전트 회로(750) 사이에 상호접속을 제공한다.
도 7의 실시예에서, 시스템 에이전트 도메인(750)은 연관된 디스플레이의 제어 및 연관된 디스플레이에 대한 인터페이스를 제공할 수 있는 디스플레이 제어기(752)를 포함할 수 있다. 더 알 수 있는 바와 같이, 시스템 에이전트 도메인(750)은 전력 제어 유닛(755)을 포함할 수 있다.
도 7에서 더 알 수 있는 바와 같이, 프로세서(700)는 DRAM(dynamic random access memory) 등의 시스템 메모리(도시되지 않음)에 인터페이스를 제공할 수 있는 IMC(integrated memory controller)(770)를 더 포함할 수 있다. IMC(770)는 본 발명의 실시예에 따라, 암호해제된 디지털 컨텐츠를 부분들로 파싱할 수 있고, 이 부분들을 시스템 메모리의 대응하는 페이지들에 저장할 수 있으며, 각각의 페이지의 최종 기입 오프셋을 저장할 수 있다. 본 발명의 실시예들에 따라 IMC(770)는, 디지털 컨텐츠의 일부가 페이지들 중 하나에 (예컨대, 페이지의 최종 기입 오프셋에 의한 목적지 어드레스의 표현의 비교를 통해서) 저장되는 메모리 위치의 목적지 어드레스를 기입 명령어가 갖는지 여부를 결정할 수 있으며, 만약 그러한 경우에는, 그 페이지를 삭제할 수 있다.
복수의 인터페이스들(7800-780n)은 프로세서와 그 외의 회로 사이에 상호접속을 가능하게 하기 위해 존재할 수 있다. 예를 들어, 일 실시예에서는 하나 이상의 PCIeTM(PCI ExpressTM, Peripheral Component Interconnect Express) 인터페이스들뿐만 아니라 적어도 하나의 DMI(direct media interface) 인터페이스가 제공될 수 있다. 또한, 추가적인 프로세서들 또는 그 외의 회로 등의 다른 에이전트들 사이에 통신을 제공하기 위해, Intel® QPI(quick path interconnect) 프로토콜에 따르는 하나 이상의 인터페이스들이 또한 제공될 수 있다. 도 7의 실시예에서는 이러한 상위 레벨로 도시되었지만, 본 발명의 범위는 이와 관련된 것에 한정되지 않는다는 것을 이해해야 한다.
도 8을 참조하면, 복수의 코어들을 포함하는 프로세서의 일 실시예가 도시되어 있다. 프로세서(800)는 마이크로프로세서, 임베디드 프로세서, DSP(digital signal processor), 네트워크 프로세서, 핸드헬드 프로세서(handheld processor), 어플리케이션 프로세서, 코-프로세서(co-processor), SOC(system on a chip), 또는 코드를 실행하기 위한 그 외의 장치 등의 임의의 프로세서 또는 프로세싱 장치를 포함한다. 프로세서(800)는, 일 실시예에서, (도시된 실시예인) 비대칭 코어들 또는 대칭 코어들을 포함할 수 있는 적어도 두 개의 코어들 - 코어(801) 및 코어( 802) - 을 포함한다. 그러나, 프로세서(800)는 대칭이거나 또는 비대칭일 수 있는 임의의 수의 프로세싱 요소들을 포함할 수 있다.
일 실시예에서, 프로세싱 요소는 소프트웨어 스레드를 지원하기 위한 하드웨어 또는 로직과 관련된다. 하드웨어 프로세싱 요소들의 예들은 스레드 유닛, 스레드 슬롯, 스레드, 프로세스 유닛, 컨텍스트, 컨텍스트 유닛, 로직 프로세서, 하드웨어 스레드, 코어, 및/또는 실행 상태 또는 아키텍처 상태(architectural state) 등의 프로세서에 대한 상태를 유지할 수 있는 임의의 다른 요소를 포함한다. 즉, 일 실시예에서 프로세싱 요소는 소프트웨어 스레드, 운영체제, 어플리케이션 또는 그 외의 코드 등의 코드와 독립적으로 연관될 수 있는 임의의 하드웨어와 관련된다. 일반적으로, 물리적인 프로세서는 코어 또는 하드웨어 스레드 등의 임의의 수의 다른 프로세싱 요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
코어는 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로에 위치한 로직을 주로 지칭하고, 각각의 독립적으로 유지되는 아키텍처 상태는 적어도 일부 전용 실행 리소스들과 연관된다. 코어들과는 반대로, 하드웨어 스레드는 일반적으로 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치한 임의의 로직을 지칭하고, 독립적으로 유지되는 아키텍처 상태들은 실행 리소스들로의 액세스를 공유한다. 알 수 있는 바와 같이, 특정 리소스들이 공유되고 그 외의 부분들이 아키텍처 상태에 전용되는 경우, 코어와 하드웨어 스레드의 명명(nomenclature) 사이의 경계가 중복된다. 그러나 코어와 하드웨어 스레드는 운영체제에 의해 주로, 운영체제가 각각의 로직 프로세서에서의 동작들을 개별적으로 스케쥴링할 수 있는 개별적인 로직 프로세서들로서 여겨진다.
도 8에 도시된 바와 같이, 물리적 프로세서(800)는 2개의 코어들, 즉 코어들(801 및 802)을 포함한다. 여기서, 코어들(801 및 802)은 대칭적 코어들, 즉 동일한 구성들, 기능 유닛들, 및/또는 로직을 갖는 코어들로 고려된다. 다른 실시예에서, 코어(801)는 아웃-오브-오더(out-of-order) 프로세서 코어를 포함하는 반면에, 코어(802)는 인-오더(in-order) 프로세서 코어를 포함한다. 그러나, 코어들(801 및 802)은 고유의 코어(native core), 소프트웨어 관리 코어, 고유의 명령어 세트 아키텍처(ISA)를 실행하도록 적응된 코어, 변환된 ISA를 실행하도록 적응된 코어, 병렬 설계된 코어(co-designed core), 또는 다른 공지된 코어와 같은 임의의 타입의 코어로부터 개별적으로 선택될 수 있다. 추가 논의에서, 코어(801)에 도시된 기능 유닛들은 이하에서 더 상세히 기술되고, 코어(802) 내의 유닛들은 유사한 방식으로 동작한다.
도시된 바와 같이, 코어(801)는 2개의 하드웨어 스레드(thread)(801a 및 801b)를 포함하고, 이들은 또한 하드웨어 스레드 슬롯들(801a 및 801b)로 지칭될 수 있다. 따라서, 일 실시예에서 운영 시스템과 같은 소프트웨어 엔티티들은 잠재적으로 프로세서(800)를 4개의 개별 프로세서들, 즉, 4개의 논리 프로세서들 또는 동시에 4개의 소프트웨어 스레드들을 실행할 수 있는 프로세싱 엘리먼트들로 간주한다. 위에서 언급된 바와 같이, 제1 스레드는 아키텍처 상태 레지스터들(801a)과 연관되고, 제2 스레드는 아키텍처 상태 레지스터들(801b)과 연관되고, 제3 스레드는 아키텍처 상태 레지스터들(802a)과 연관될 수 있고, 제4 스레드는 아키텍처 상태 레지스터들(802b)과 연관될 수 있다. 여기서 각각의 아키텍처 상태 레지스터들(801a, 801b, 802a, 및 802b)은 상술한 바와 같이 프로세싱 엘리먼트들, 스레드 슬롯들, 또는 스레드 유닛들로 지칭될 수 있다. 도시된 바와 같이, 아키텍처 상태 레지스터들(801a)은 아키텍처 상태 레지스터들(801b)에서 복제되어서, 개별적인 아키텍처 상태들/콘텍스트들은 논리 프로세서(801a) 및 논리 프로세서(801b)를 위해 저장될 수 있다. 코어(801)에서, 할당기 및 리네이머 블록(830)에서의 리네이밍 로직 및 명령어 포인터들과 같은 다른 더 작은 리소스들은 또한 스레드들(801a 및 801b)에 대해 복제될 수 있다. 리오더/리타이어먼트 유닛(835)의 리오더 버퍼들, ILTB(820), 로드/저장 버퍼들, 및 큐(queue)들과 같은 일부 리소스들은 파티셔닝(partitioning)을 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지 테이블 기반 레지스터(들), 저 레벨 데이터-캐시 및 데이터-TLB(815), 실행 유닛(들)(840), 및 아웃-오브-오더 유닛(835)의 부분들과 같은 다른 리소스들은 잠재적으로 완전히 공유된다.
프로세서(800)는 보통, 완전히 공유되거나, 파티셔닝을 통해 공유되거나, 또는 프로세싱 엘리먼트들에 의해/에게 전용이 될 수 있는 다른 리소스들을 포함한다. 도 8에서, 프로세서의 예시적인 논리 유닛들/리소스들을 갖는 순수하게 예시적인 프로세서의 실시예가 도시되어 있다. 프로세서는 이러한 기능 유닛들 중 임의의 것을 포함하거나 생략할 수 있을 뿐만 아니라 도시되지 않은 임의의 다른 공지된 기능 유닛들, 로직, 또는 펌웨어를 포함할 수 있다는 것을 유념한다. 도시된 바와 같이, 코어(801)는 간략화된, 대표적인 OOO(out-of-order) 프로세서 코어를 포함한다. 그러나 인-오더 프로세서는 다른 실시예들에서 이용될 수 있다. OOO 코어는 실행될/취해질 브랜치(branch)들을 예측하기 위한 브랜치 타겟 버퍼(820) 및 명령어들에 대한 어드레스 변환 엔트리들을 저장하기 위한 명령어-변환 버퍼(instruction-translation buffer; I-TLB)(820)를 포함한다.
코어(801)는 또한 페치(fetch)된 엘리먼트들을 디코딩하기 위해 페치 유닛(820)에 결합된 디코드 모듈(825)을 포함한다. 일 실시예에서, 페치 로직은 스레드 슬롯들(801a, 801b)과 각각 관련된 개별적인 시퀀서(sequencer)들을 포함한다. 코어(801)는 일반적으로 프로세서(800) 상에서 실행 가능한 명령어들을 정의/특정하는 제1 ISA와 연관된다. 보통 제1 ISA의 일부인 머신 코드 명령어들은 수행될 명령어 또는 연산을 참조/특정하는 명령어(연산 코드(opcode)로도 지칭됨)의 일부분을 포함한다. 디코드 로직(825)은, 이러한 명령어들을 그들의 연산 코드로부터 인식하고 제1 ISA에 의해 정의된 것으로서 프로세싱하기 위한 파이프라인에서 디코딩된 명령어들을 통과시키는 회로를 포함한다. 예를 들어, 일 실시예에서, 디코더들(825)은 트랜잭션 명령어(transactional instruction)와 같은 특정 명령어들을 인식하도록 설계되거나 적응된 로직을 포함한다. 디코더들(825)에 의한 인식의 결과로서, 아키텍처 또는 코어(801)는 적절한 명령어와 연관된 작업들을 수행하기 위한 특정한, 미리 정의된 액션들을 실행한다. 본문에 기술된 작업들, 블록들, 연산들, 및 방법들 중 임의의 것은 단독의 또는 다수의 명령어들에 응답하여 수행될 수 있고, 그것들 중 일부는 새롭거나 오래된 명령어들일 수 있다는 것을 주목하는 것이 중요하다.
일 예시에서, 할당기 및 리네이머(renamer) 블록(830)은 명령어 프로세싱 결과들을 기입하기 위한 레지스터 파일들과 같은 리소스들을 보존하기 위한 할당기를 포함한다. 그러나, 스레드들(801a 및 801b)은 잠재적으로 아웃-오브-오더 실행을 할 수 있고, 여기서 할당기 및 리네이머 블록(830)은 또한 명령어 결과들을 추적하기 위한 리오더(reorder) 버퍼들과 같은 다른 소스들을 보존한다. 유닛(830)은 또한 프로그램/명령어 참조 레지스터들을 프로세서(800)의 내부에 있는 다른 레지스터들로 리네이밍하는 레지스터 리네이머를 포함할 수 있다. 리오더/리타이어먼트 유닛(835)은 아웃-오브-오더 실행 및 이후의 명령어들 실행된 아웃-오브-오더의 인-오더 리타이어먼트를 지원하기 위해 상술한 리오더 버퍼들, 로드 버퍼들, 및 저장 버퍼들과 같은 엘리먼트들을 포함한다.
일 실시예에서, 스케줄러 및 실행 유닛(들) 블록(840)은 실행 유닛들 상에서의 명령어들/동작을 스케줄링하기 위한 스케줄러 유닛을 포함한다. 예를 들어, 부동 소수점(floating point) 명령어는 이용 가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 일부분에서 스케줄링된다. 실행 유닛들과 관련된 레지스터 파일들은 또한 정보 명령어 프로세싱 결과들을 저장하기 위해 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프(jump) 실행 유닛, 로드 실행 유닛, 저장 실행 유닛, 및 다른 공지된 실행 유닛들을 포함한다.
하위 레벨의 데이터 캐시 및 데이터 변환 버퍼(data translation buffer; D-TLB)(850)는 실행 유닛(들)(840)에 결합된다. 데이터 캐시는, 잠재적으로 메모리 일관성(coherency) 상태들에서 유지되는, 데이터 피연산자(operand)들과 같은 엘리먼트들 상에서 최근에 사용/동작된 것을 저장한다. D-TLB는 물리적 어드레스 변환들에 최근의 가상/선형인 것을 저장한다.
여기서, 코어들(801 및 802)은, 최근 페치된 엘리먼트들을 캐싱하는, 상위 레벨 또는 퍼더-아웃(further-out) 캐시(810)로의 액세스를 공유한다. 상위 레벨 또는 퍼더-아웃은 증가하거나 실행 유닛(들)로부터 더 멀어지는 캐시 레벨을 지칭한다는 것을 주목한다. 일 실시예에서, 상위 레벨 캐시(810)는, 제2 또는 제3 레벨 데이터 캐시와 같은, 최종 레벨 데이터 캐시 - 프로세서(800) 상의 메모리 계층(hierarchy)에서의 최종 캐시 - 이다. 그러나, 상위 레벨 캐시(810)는 명령어 캐시와 연관될 수 있거나 또는 명령어 캐시를 포함하기 때문에, 상위 레벨 캐시(810)는 이에 제한되지 않는다. 트레이스(trace) 캐시 - 명령어 캐시의 타입 - 는 대신에 최근 디코딩된 트레이스(trace)들을 저장하기 위해 디코더(825) 이후에 결합될 수 있다.
도시된 구성에서, 프로세서(800)는 또한 제어기(870)를 포함한다. 본 발명의 실시예들에 따라 제어기(870)는 암호해제된 디지털 컨텐츠를 부분들로 파싱하고, 시스템 메모리(875)의 대응하는 페이지들에 그 부분들을 저장할 수 있다. 본 발명의 실시예들에 따라 제어기(870)는, 기입 명령어가 (예를 들어, 목적지 어드레스의 표현과 페이지의 최종 기입 오프셋의 비교를 통해) 페이지들 중 하나 내에서 디지털 컨텐츠의 일부가 저장된 메모리 위치의 목적지 주소를 갖는지 여부를 판정하고, 그리고 그렇다면 그 페이지를 삭제할 수 있다.
이러한 시나리오에서, 버스 인터페이스(805)는 시스템 메모리(875), 칩셋(대부분의 경우 메모리(875)에 연결하는 메모리 제어기 허브 및 주변 디바이스들을 연결하는 I/O 제어기 허브를 포함함), 메모리 제어기 허브, 노스브릿지(northbridge), 또는 다른 집적 회로(도시되지 않음)와 같은 프로세서(800)의 외부에 있는 디바이스들과 통신한다. 그리고 이러한 시나리오에서, 버스(805)는 멀티드롭 버스, 점대점 인터커넥트, 직렬 인터커넥트, 병렬 인터커넥트, 코히런트(예를 들어, 캐시 코히런트) 버스, 계층적 프로토콜 아키텍처, 차동 버스(differential bus), 및 GTL 버스와 같은 임의의 공지된 인터커넥트를 포함할 수 있다.
메모리(875)는 프로세서(800)의 전용이거나 시스템의 다른 디바이스들과 공유될 수 있다. 메모리(875)의 유형들의 공통 예들은 DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 다른 공지된 저장 디바이스들을 포함한다. 디바이스(880)는 그래픽 가속기, 메모리 제어기 허브에 연결된 프로세서 또는 카드, I/O 제어기 허브에 연결된 데이터 저장소, 무선 송수신기, 플래시 디바이스, 오디오 제어기, 네트워크 제어기, 또는 다른 공지된 디바이스를 포함할 수 있다는 것을 주목한다.
도시된 실시예에서, 제어기(870)는 프로세서(800)의 일부로서 도시된다는 것을 주목한다. 최근에, 더 많은 로직 및 디바이스들이 SOC와 같은 하나의 다이(die)에 집적되기 때문에, 이러한 디바이스들의 각각은 프로세서(800) 상에 포함될 수 있다. 예를 들어, 일 실시예에서, 메모리 제어기 허브(870)는 프로세서(800)와 함께 동일한 패키지 및/또는 다이 상에 있다. 여기서, 코어의 일부분(온코어(on-core) 부분)은 메모리(875) 또는 그래픽 디바이스(880)와 같은 다른 디바이스들과 접속하기 위한 제어기(870)를 포함한다. 그 설정은, 이러한 디바이스들과 접속하기 위한 제어기들 및 인터커넥트를 포함하여, 흔히 온코어(또는 언코어(un-core) 구성)으로 지칭된다. 일례로서, 버스 인터페이스(805)는 메모리(875)와 접속하는 메모리 제어기 및 그래픽 프로세서(880)와 접속하는 그래픽 제어기를 포함한 링 인터커넥트를 포함한다. 그러나, SOC 환경에서는, 네트워크 인터페이스, 코-프로세서들, 메모리(875), 그래픽 프로세서(880), 및 임의의 다른 공지된 컴퓨터 디바이스들/인터페이스와 같은 더 많은 디바이스들은 단일 다이 또는 집적 회로 상에 집적되어 고기능성 및 저전력 소모의 소형 폼 팩터를 제공할 수 있다.
실시예들은 다수의 상이한 시스템 타입으로 구현될 수 있다. 이제 도 9를 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시되어 있다. 도 9에 도시된 바와 같이, 멀티프로세서 시스템(900)은 점대점 인터커넥트 시스템이고, 점대점 인터커넥트(950)를 통해 결합되는 제1 프로세서(970) 및 제2 프로세서(980)를 포함한다. 도 9에 도시된 바와 같이, 프로세서들(970 및 980)의 각각은 제1 프로세서 코어 및 제2 프로세서 코어(즉, 프로세서 코어들(974a 및 974b) 및 프로세서 코어들(984a 및 984b))를 포함하는 멀티코어 프로세서들일 수 있지만, 이들 프로세서들 내에는 수많은 잠재적 코어들이 존재할 수도 있다. 프로세서들 각각은 각자의 캐시를 포함할 수 있다. 제1 프로세서(970) 및 제2 프로세서(980)는 P-P 인터커넥트(952 및 954)를 통해 칩셋(990)에 각각 결합될 수 있다. 도 9에 도시된 바와 같이, 칩셋(990)은 P-P 인터페이스들(994 및 998)을 포함한다.
도 9를 계속 참조하면, 제1 프로세서(970)는 메모리 제어기 허브(MCH)(972) 및 점대점(P-P) 인터페이스들(976 및 978)을 또한 포함한다. 마찬가지로, 제2 프로세서(980)는 MCH(982) 및 P-P 인터페이스들(986 및 988)을 포함한다. 도 9에 도시된 바와 같이, MCH(972 및 982)는 프로세서들을 각자의 메모리들, 즉 메모리(932) 및 메모리(934)에 결합시키고, 이들 메모리들은 각자의 프로세서들에 국부적으로 부착된 시스템 메모리(예컨대, DRAM)의 일부일 수 있다. 본 발명의 일 실시예에 따라, MCH(972 및 982)의 각각은 암호해제된 디지털 콘텐츠를 부분들로 파싱하고, 이 부분들을 대응 메모리(932 및 934)의 대응 페이지들에 저장할 수 있다. 본 발명의 실시예들에 따라, MCH(972 및 982)는 기입 명령어가 이들 페이지들 중 한 페이지 내에 디지털 콘텐츠의 일부가 저장된 메모리 위치의 목적지 어드레스를 갖는지 여부를 (예를 들어, 목적지 어드레스의 표현과 그 페이지의 최종 기입된 오프셋의 비교를 통해) 판정할 수 있고, 만약 그렇다면, 그 페이지를 삭제할 수 있다.
또한, 칩셋(990)은 P-P 인터커넥트(939)에 의해 칩셋(990)과 고성능 그래픽 엔진(938)을 결합시키기 위한 인터페이스(992)를 포함한다. 결국, 칩셋(990)은 인터페이스(996)를 통해 제1 버스(916)에 결합될 수 있다. 도 9에 도시된 바와 같이, 다양한 입력/출력(I/O) 디바이스들(914)은 제1 버스(916)를 제2 버스(920)에 결합시키는 버스 브릿지(918)와 함께 제1 버스(916)에 결합될 수 있다. 일 실시예에서, 다양한 디바이스들은 예컨대 키보드/마우스(922), 통신 디바이스들(926), 및 디스크 드라이브 또는 다른 대용량 저장 디바이스와 같은 데이터 저장 유닛(928)을 포함하는 제2 버스(920)에 결합될 수 있다. 또한, 오디오 I/O(924)는 제2 버스(920)에 결합될 수 있다. 실시예들은 스마트 셀룰러 전화기, 울트라북TM, 태블릿 컴퓨터, 넷북 등과 같은 모바일 디바이스들을 포함하는 다른 타입의 시스템에 포함될 수 있다.
즉, 다른 실시예들에서, 프로세서 아키텍처는 프로세서가 제1 ISA(소스 ISA로 지칭됨)의 명령어들을 실행할 수 있도록 하는 에뮬레이션 피처들을 포함할 수 있고, 여기서 아키텍처는 제2 ISA(타겟 ISA로 지칭됨)에 따른다. 일반적으로, OS 및 애플리케이션 프로그램들 모두를 포함하는 소프트웨어는 소스 ISA에 컴파일되고, 하드웨어는 특수한 성능 및/또는 에너지 효율 피처를 갖는 소정의 하드웨어 구현을 위해 특별히 설계된 타겟 ISA를 구현한다.
도 10을 참조하면, 본 발명의 또 다른 실시예에 따른 시스템(1000)의 블로도가 도시되어 있다. 시스템(1000)은 프로세서(1010) 및 메모리(1030)를 포함한다. 프로세서(1010)는 SOC(system on a chip)일 수 있으며, 보안 엔진(1012), 하나 이상의 코어들 포함할 수 있는 코어 유닛(1014), 다른 SOC 컴포넌트들과 통신하기 위한 캐시 메모리 및 인터페이스, 저장소(1016), 및 인코딩/디코딩 로직(1018)을 포함할 수 있다.
동작시, 보안 엔진(1012)은 들어오는 암호화된 데이터(1020)를 암호해제할 수 있다. 보안 엔진(1012)은 (암호화되지 않은) 데이터를 부분들로 파싱하고, 부분들을 메모리(1030) 내의 대응 페이지들에 저장할 수 있다. 보안 엔진(1012)은 각각의 페이지의 최종 기입된 어드레스에 대응하는 최종 기입된 오프셋을 대응하는 저장 레지스터에 저장할 수 있다. 일 실시예에서, 저장 레지스터는 프로세서(1010) 내에 위치할 수 있다. 다른 실시예에서, 저장 레지스터는 메모리(1030) 내에 위치할 수 있다.
코어 유닛(1014)은 자신의 목적지 어드레스가 페이지들 중 한 페이지에 있는 기입 명령어를 수신할 수 있다. 보안 엔진(1012)은 기입 명령어의 목적지 어드레스와 연관된 기입 오프셋과 최종 기입된 오프셋의 비교를 수행할 수 있다. 보안 엔진(1012)은 기입 오프셋과 최종 기입된 오프셋의 비교에 기초하여 페이지로의 기입 액세스를 잠금 또는 잠금해제할 수 있다. 예를 들어, 기입 오프셋이 최종 기입된 오프셋보다 큰 경우, 보안 엔진(1012)은 대응 페이지로의 기입 액세스를 잠금해제할 수 있고, 기입 오프셋이 최종 기입된 오프셋 이하인 경우, 보안 엔진(1012)은 대응 페이지로의 기입 액세스를 잠금하고, 최종 기입된 오프셋을 0으로 리셋하고, 대응 페이지의 콘텐츠를 삭제(예컨대, 플러쉬)할 수 있다.
실시예들은 수많은 상이한 타입의 시스템들로 이용될 수 있다. 예를 들어, 일 실시예에서 통신 디바이스는 본 명세서에 기술된 다양한 방법들 및 기법들을 수행하도록 구성될 수 있다. 실시예들은 스마트 셀룰러 전화기, 태블릿 컴퓨터, 넷북, 울트라북TM 등과 같은 모바일 디바이스들을 포함하는 다른 타입의 시스템에 포함될 수 있다. 물론, 본 발명의 범위는 통신 디바이스에 한정되지 않고, 대신에 다른 실시예들은 명령어들을 프로세싱하기 위한 다른 타입의 장치, 또는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여 디바이스가 본문에 기술된 하나 이상의 방법 및 기법들을 수행하도록 하는 명령어들을 포함하는 하나 이상의 머신 판독 가능 매체에 관한 것일 수 있다.
이하의 예들은 추가 실시예에 관련된다. 일 실시예에서, 프로세서는 디지털 콘텐츠를 부분들로 파싱하고 각각의 부분을 메모리의 대응 페이지에 저장되게 하는 콘텐츠 저장 로직을 포함한다. 또한, 프로세서는 메모리 내에 목적지 어드레스를 갖는 기입 명령어를 수신하기 위한 보호 로직을 포함한다. 목적지 어드레스가 디지털 콘텐츠의 일부를 저장하는 메모리 위치와 연관되어 있는 경우, 보호 로직은 메모리 위치와 연관된 페이지를 삭제하고, 목적지 어드레스가 디지털 콘텐츠의 어떠한 것도 저장하지 않는 또 다른 메모리 위치와 연관되어 있는 경우, 보호 로직은 기입 명령의 실행을 허용한다.
다른 실시예에서, 프로세서는 암호화된 디지털 콘텐츠를 암호해제하고 디지털 콘텐츠를 콘텐츠 저장 로직에 출력하는 암호해제 로직을 포함한다.
일 실시예에서, 각각의 페이지는 동일한 페이지 사이즈를 갖는다.
일 실시예에서, 프로세서는 하나 이상의 저장소를 포함하며, 각각의 저장소는 대응 페이지의 최종 기입된 어드레스의 표현을 저장한다. 일 실시에에서, 최종 기입된 어드레스의 표현은 대응 페이지의 초기 어드레스로부터의 오프셋을 포함한다.
보호 로직은 목적지 어드레스의 표현과 저장소들 중 하나에 저장된 최종 기입된 어드레스의 표현을 비교하여, 목적지 어드레스와 연관된 메모리 저장 위치가 디지털 콘텐츠의 일부를 저장하는지의 여부를 판정하고, 만약 목적지 어드레스가 최종 기입된 어드레스보다 크면, 보호 로직은 목적지 어드레스와 연관된 메모리 저장 위치가 디지털 콘텐츠의 어느 것도 저장하고 있지 않은 것으로 판정할 수 있으며, 보호 로직은 기입 명령어의 실행을 허용할 수 있다.
목적지 어드레스가 특정 페이지의 시작부와 최종 기입된 어드레스의 사이에 있는 경우, 보호 로직은 특정 페이지의 콘텐츠를 삭제할 수 있고 최종 기입된 어드레스의 표현을 리셋할 수 있다.
일 실시예에서, 시스템은 프로세서, 프로세서에 결합된 DRAM(dynamic random access memory), 및 DRAM에 결합되어 디지털 콘텐츠를 DRAM 내의 복수의 페이지로 기입하는 메모리 제어기를 포함한다. 프로세서에 의해, 페이지들 중 한 페이지의 메모리 저장 위치의 목적지 어드레스를 갖는 기입 명령어의 수신에 응답하여, 메모리 제어기는, 만약 메모리 저장 위치가 디지털 콘텐츠 중 어느 것도 저장하고 있지 않으면 기입 명령어를 실행하고, 만약 메모리 저장 위치가 디지털 콘텐츠의 일부를 저장하고 있으면 그 페이지를 삭제한다.
일 실시예에서, 메모리 제어기는 복수의 레지스터를 포함하고, 각각의 레지스터는 대응 페이지의 최종 기입된 어드레스에 대응하는 최종 기입된 오프셋을 저장한다.
일 실시예에서, 메모리 제어기는 목적지 어드레스에 대응하는 목적지 오프셋을 레지스터들 중 하나에 저장된 오프셋에 비교하여 목적지 어드레스와 연관된 메모리 저장 위치가 디지털 콘텐츠의 일부를 저장하는지 여부를 결정할 수 있다. 목적지 오프셋이 특정 페이지의 시작부와 최종 기입된 오프셋 사이에 있다면, 메모리 제어기는 목적지 어드레스와 연관된 메모리 저장 위치가 디지털 콘텐츠의 일부를 저장한다고 결정할 수 있다.
메모리 저장 위치가 디지털 콘텐츠의 일부를 저장한다면, 메모리 제어기는 페이지가 삭제된 후에 최종 기입된 오프셋을 리셋할 수 있다. 목적지 오프셋이 최종 기입된 오프셋보다 크다면, 메모리 제어기는 목적지 어드레스와 연관된 메모리 저장 위치가 디지털 콘텐츠 중 어느 것도 저장하지 않는다고 결정할 수 있다.
일 실시예에서, 방법은 디지털 콘텐츠를 부분들로 파싱하는 단계, 각각의 부분을 메모리의 대응 페이지로 저장하는 단계, 기입 명령어의 목적지 어드레스를 페이지들 중의 하나의 최종 기입된 어드레스에 비교하여 대응 메모리 위치가 디지털 콘텐츠의 일부를 저장하는지 여부를 결정하는 단계, 대응 메모리 위치가 디지털 콘텐츠의 일부를 저장한다면 페이지들 중 적어도 하나를 삭제하는 단계, 및 대응 메모리 위치가 디지털 콘텐츠 중 어느 것도 저장하지 않으면 기입 명령어를 실행하는 단계를 포함한다.
상기 방법은 디지털 콘텐츠를 파싱하기에 앞서 디지털 콘텐츠를 암호해제하는 단계를 더 포함할 수 있다.
비교 단계는 제1 페이지가 목적지 어드레스를 포함한다고 결정하는 단계를 포함하고, 목적지 어드레스가 제1 페이지의 제1 기입된 어드레스와 제1 페이지의 최종 기입된 어드레스 사이에 있다면, 대응 메모리 위치는 디지털 콘텐츠의 일부를 저장한다고 결정하는 단계를 포함한다.
상기 방법은, 목적지 어드레스가 제1 페이지의 제1 기입된 어드레스와 제1 페이지의 최종 기입된 어드레스 사이에 있지 않으면, 대응 메모리 위치는 디지털 콘텐츠 중 어느 것도 저장하지 않는다고 결정하는 단계를 포함한다. 상기 방법은 기입 명령어의 실행에 응답하여 대응하는 최종 기입된 어드레스를 업데이트하는 단계를 더 포함할 수 있다.
일 실시예에서, 적어도 하나의 머신 판독가능 매체는 프로세서 상에서 실행될 때 프로세서가 상기 방법의 전술된 실시예들 중 하나 이상을 수행하도록 구성하는 하나 이상의 명령어들을 포함한다.
일 실시예에서, 장치는 상기 방법의 전술된 실시예들 중 하나 이상을 수행하도록 구성될 수 있다.
일 실시예에서, 장치는 상기 방법의 전술된 실시예들 중 임의의 방법을 수행하기 위한 수단들을 포함한다.
일 실시예에서, 프로세서는, 제1 페이지로의 기입 명령어와 연관된 기입 오프셋과 제1 저장소에 저장되고 제1 페이지의 최종 기입된 메모리 위치와 연관된 최종 기입된 오프셋의 비교에 응답하여 메모리의 제1 페이지로의 기입 액세스를 잠금해제할지 여부를 결정하기 위한 하나 이상의 코어들 및 보호 로직을 포함할 수 있다. 보호 로직은 기입 오프셋이 최종 기입된 오프셋을 초과한다는 것을 나타내는 비교에 응답하여 제1 페이지로의 기입 액세스를 잠금해제하고 기입 명령어의 실행을 허용할 수 있다.
프로세서는 기입 명령어의 실행에 응답하여 제1 저장소 내의 최종 기입된 오프셋을 기입 오프셋으로 교체하기 위한 업데이트 로직을 포함할 수 있다.
보호 로직은 기입 오프셋이 최종 기입된 오프셋보다 작거나 같다는 것을 나타내는 비교에 응답하여 제1 페이지를 삭제할 수 있다.
프로세서는 페이지의 삭제 후에 제1 저장소 내의 최종 기입된 오프셋을 리셋하기 위한 업데이트 로직을 포함할 수 있다.
실시예들은 코드로 구현될 수 있고, 명령어들을 수행하기 위한 시스템을 프로그래밍하는데 사용될 수 있는 명령어들을 저장하는 비일시적 저장 매체 상에 저장될 수 있다. 저장 매체는 플로피 디스크, 광학 디스크, SSD(solid state drive), CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritable) 및 광자기 디스크를 포함하는 디스크 중 임의의 타입, ROM(read-only memory), DRAM(dynamic random access memory)과 같은 RAM(random access memory), SRAM(static random access memory), EPROM(erasable programmable read-only memory), 플래쉬 메모리, EEPROM(electrically erasable programmable read-only memory)와 같은 반도체 디바이스, 자기 카드 또는 광학 카드, 또는 전자 명령어를 저장하기 적절한 임의의 다른 타입의 매체를 포함하지만, 이에 국한되지 않는다.
본 발명은 제한된 수의 실시예들에 관해 기술되지만, 통상의 당업자는 이것들로부터의 수많은 변경 및 변형을 이해할 것이다. 본 발명의 진의 및 범위 내에 포함됨으로써 첨부된 청구범위가 이러한 변경 및 변형 전부를 커버한다.

Claims (25)

  1. 콘텐츠를 보호하기 위한 프로세서로서,
    디지털 콘텐츠를 부분들로 파싱하고 각각의 부분이 메모리의 대응 페이지로 저장되도록 하기 위한 콘텐츠 저장 로직; 및
    보호 로직
    을 포함하고,
    상기 보호로직은,
    상기 메모리 내의 목적지 어드레스를 갖는 기입 명령어를 수신하고,
    상기 목적지 어드레스가 상기 디지털 콘텐츠의 일부를 저장하는 메모리 저장 위치와 연관되는 경우에, 상기 메모리 위치와 연관된 페이지를 삭제하고,
    상기 목적지 어드레스가 상기 디지털 콘텐츠 중 어느 것도 저장하지 않는 다른 메모리 저장 위치와 연관되는 경우에, 상기 기입 명령어의 실행을 허용하는
    프로세서.
  2. 제1항에 있어서,
    암호화된 디지털 콘텐츠를 암호해제하고 상기 디지털 콘텐츠를 상기 콘텐츠 저장 로직으로 출력하기 위한 암호해제 로직을 더 포함하는 프로세서.
  3. 제1항에 있어서,
    각각의 페이지는 동일한 페이지 크기를 갖는 프로세서.
  4. 제1항에 있어서,
    하나 이상의 저장소를 더 포함하고, 각각의 저장소는 대응 페이지의 최종 기입된 어드레스의 표현을 저장하는 프로세서.
  5. 제4항에 있어서,
    상기 최종 기입된 어드레스의 표현은 상기 대응 페이지의 초기 어드레스로부터의 오프셋을 포함하는 프로세서.
  6. 제4항 내지 제5항 중 어느 한 항에 있어서,
    상기 보호 로직은, 상기 목적지 어드레스의 표현을 상기 저장소들 중 하나에 저장된 상기 최종 기입된 어드레스의 표현에 비교하여, 상기 목적지 어드레스와 연관된 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장한다는 것을 결정하는 프로세서.
  7. 제4항에 있어서,
    상기 목적지 어드레스가 상기 페이지들 중 한 페이지 내의 상기 최종 기입된 어드레스보다 크다면, 상기 보호 로직은 상기 목적지 어드레스와 연관된 상기 메모리 저장 위치가 상기 디지털 콘텐츠 중 어느 것도 저장하지 않는다는 것을 결정하는 프로세서.
  8. 제4항에 있어서,
    상기 목적지 어드레스가 특정 페이지의 시작부와 상기 페이지들 중 한 페이지 내의 상기 최종 기입된 어드레스 사이에 있다면, 상기 보호 로직은 상기 목적지 어드레스와 연관된 상기 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하고 있다고 것을 결정하는 프로세서.
  9. 제8항에 있어서,
    상기 프로세서는 상기 최종 기입된 어드레스의 표현을 리셋하는 프로세서.
  10. 시스템으로서,
    데이터를 프로세싱하기 위한 프로세싱 수단;
    프로세서에 결합되고, 데이터를 저장하기 위한 메모리 수단; 및
    상기 메모리 수단에 결합된 메모리 제어기 수단
    을 포함하고,
    상기 메모리 제어기 수단은 디지털 콘텐츠를 상기 메모리 수단의 복수의 페이지에 기입하고, 프로세서가 상기 페이지들 중 한 페이지의 메모리 저장 위치의 목적지 어드레스를 갖는 기입 명령어를 수신하는 것에 응답하여,
    상기 메모리 저장 위치가 상기 디지털 콘텐츠 중 어느 것도 저장하고 있지 않다면, 상기 기입 명령어를 실행하고;
    상기 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하고 있다면, 상기 페이지를 삭제하는
    시스템.
  11. 제10항에 있어서,
    상기 메모리 제어기 수단은 복수의 레지스터를 포함하고, 각각의 레지스터는 대응 페이지의 최종 기입된 어드레스에 대응하는 최종 기입된 오프셋을 저장하는 시스템.
  12. 제11항에 있어서,
    상기 메모리 제어기 수단은 또한 상기 목적지 어드레스에 대응하는 목적지 오프셋을 상기 레지스터들 중 하나에 저장된 오프셋에 비교하여, 상기 목적지 어드레스와 연관된 상기 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하는지 여부를 결정하는 시스템.
  13. 제12항에 있어서,
    상기 목적지 오프셋이 특정 페이지의 시작부와 상기 최종 기입된 오프셋 사이에 있다면, 상기 메모리 제어기 수단들은 또한 상기 목적지 어드레스와 연관된 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하고 있다고 결정하는 시스템.
  14. 제11항에 있어서,
    상기 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장한다면, 상기 메모리 제어기 수단은 또한 상기 최종 기입된 오프셋을 리셋하는 시스템.
  15. 제12항에 있어서,
    상기 목적지 오프셋이 상기 최종 기입된 오프셋보다 크면, 상기 메모리 제어기 수단은 또한 상기 목적지 어드레스와 연관된 상기 메모리 저장 위치가 상기 디지털 콘텐츠의 어느 것도 저장하고 있지 않다고 결정하는 시스템.
  16. 방법으로서,
    디지털 콘텐츠를 부분들로 파싱하는 단계;
    각각의 부분을 메모리의 대응 페이지로 저장하는 단계;
    기입 명령어의 목적지 어드레스를 상기 페이지들 중 한 페이지의 최종 기입된 어드레스에 비교하여, 대응 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하고 있는지 여부를 결정하는 단계;
    상기 대응 메모리 저장 위치가 상기 디지털 콘텐츠의 일부를 저장하고 있다면, 상기 페이지들 중 적어도 한 페이지를 삭제하는 단계; 및
    상기 대응 메모리 저장 위치가 상기 디지털 콘텐츠 중 어느 것도 저장하고 있지 않다면 상기 기입 명령어를 실행하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 디지털 콘텐츠를 파싱하기에 앞서 상기 디지털 콘텐츠를 암호해제하는 단계를 더 포함하는 방법.
  18. 제16항에 있어서,
    상기 비교는,
    제1 페이지가 상기 목적지 어드레스를 포함한다는 것을 판정하는 단계;
    상기 목적지 어드레스가 상기 제1 페이지의 제1 기입된 어드레스와 상기 제1 페이지의 최종 기입된 어드레스 사이에 있다면, 상기 대응 메모리 저장 위치는 상기 디지털 콘텐츠의 일부를 저장하고 있다고 결정하는 단계; 및
    상기 목적지 어드레스가 상기 제1 페이지의 상기 제1 기입된 어드레스와 상기 제1 페이지의 최종 기입된 어드레스 사이에 있지 않다면, 상기 대응 메모리 저장 위치가 상기 디지털 콘텐츠 중 어느 것도 저장하고 있지 않다고 결정하는 단계
    를 포함하는 방법.
  19. 제16항에 있어서,
    상기 기입 명령어의 실행에 응답하여 상기 대응하는 최종 기입된 어드레스를 업데이트하는 단계를 더 포함하는 방법.
  20. 프로세서 상에서 실행시, 프로세서가 제16항 내지 제19항 중 어느 한 항을 따르는 방법을 수행하도록 구성하는 하나 이상의 명령어들을 포함하는 적어도 하나의 머신 판독가능 매체.
  21. 프로세서로서,
    하나 이상의 코어들; 및
    제1 페이지로의 기입 명령어에 연관된 기입 오프셋과 제1 저장소에 저장되고 상기 제1 페이지의 최종 기입된 메모리 저장 위치와 연관된 최종 기입된 오프셋의 비교에 응답하여 메모리의 상기 제1 페이지로의 기입 액세스를 잠금해제할지 여부를 결정하기 위한 보호 로직
    을 포함하는 프로세서.
  22. 제21항에 있어서,
    상기 보호 로직이 상기 제1 페이지로의 기입 액세스를 잠금해제하고, 상기 기입 오프셋이 상기 최종 기입된 오프셋을 초과한다는 것을 나타내는 비교에 응답하여 상기 기입 명령의 실행을 허용하는 프로세서.
  23. 제22항에 있어서,
    상기 제1 저장소 내의 상기 최종 기입된 오프셋을 상기 기입 명령어의 실행에 응답하여 상기 기입 오프셋으로 대체하기 위한 업데이트 로직을 더 포함하는 프로세서.
  24. 제21항에 있어서,
    상기 보호 로직은 상기 기입 오프셋이 상기 최종 기입된 오프셋 이하라는 것을 나타내는 비교에 응답하여 상기 제1 페이지를 삭제하는 프로세서.
  25. 제24항에 있어서,
    상기 기입 오프셋이 상기 최종 기입된 오프셋 이하라는 것을 나타내는 비교에 응답하여 상기 제1 저장소 내의 상기 최종 기입된 오프셋을 리셋하기 위한 업데이트 로직을 더 포함하는 프로세서.
KR1020140030652A 2013-03-15 2014-03-14 디지털 콘텐츠 보호 장치 및 방법 KR101632235B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/833,119 2013-03-15
US13/833,119 US9411983B2 (en) 2013-03-15 2013-03-15 Apparatus and method to protect digital content

Publications (2)

Publication Number Publication Date
KR20140113578A true KR20140113578A (ko) 2014-09-24
KR101632235B1 KR101632235B1 (ko) 2016-06-21

Family

ID=50634704

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140030652A KR101632235B1 (ko) 2013-03-15 2014-03-14 디지털 콘텐츠 보호 장치 및 방법

Country Status (7)

Country Link
US (2) US9411983B2 (ko)
JP (1) JP5789320B2 (ko)
KR (1) KR101632235B1 (ko)
CN (1) CN104050396B (ko)
BR (1) BR102014006230A2 (ko)
DE (1) DE102014003687A1 (ko)
GB (1) GB2513982B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US9674255B1 (en) * 2014-03-26 2017-06-06 Amazon Technologies, Inc. Systems, devices and methods for presenting content
FR3030827B1 (fr) 2014-12-19 2017-01-27 Stmicroelectronics (Grenoble 2) Sas Procede et dispositif de traitement securise de donnees cryptees
US9614666B2 (en) 2014-12-23 2017-04-04 Intel Corporation Encryption interface
US9852072B2 (en) * 2015-07-02 2017-12-26 Netapp, Inc. Methods for host-side caching and application consistent writeback restore and devices thereof
US10346641B2 (en) * 2016-09-23 2019-07-09 Intel Corporation Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050023248A (ko) * 2002-08-01 2005-03-09 마츠시타 덴끼 산교 가부시키가이샤 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법
JP2007026434A (ja) * 2005-06-24 2007-02-01 Samsung Electronics Co Ltd 低性能格納装置のdrm権利オブジェクトを効率的に管理する方法および装置
US20080168252A1 (en) * 2005-05-23 2008-07-10 Matsushita Electric Industrial Co., Ltd. Memory Controller, Nonvolatile Storage Device, Nonvolatile Storage System, and Memory Control Method
US20090327751A1 (en) * 2006-05-31 2009-12-31 Haim Koifman Method and system for transformation of logical data objects for storage

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6646646B2 (en) * 2000-12-13 2003-11-11 Micron Technology, Inc. Memory system having programmable multiple and continuous memory regions and method of use thereof
JP4375935B2 (ja) * 2002-01-22 2009-12-02 スパンション エルエルシー 不正読み出し防止機能付き半導体不揮発性メモリ
US7444682B2 (en) 2002-07-03 2008-10-28 Macronix International Co., Ltd. Security memory device and method for making same
US8112618B2 (en) * 2004-04-08 2012-02-07 Texas Instruments Incorporated Less-secure processors, integrated circuits, wireless communications apparatus, methods and processes of making
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
JP4490331B2 (ja) * 2004-08-03 2010-06-23 富士通株式会社 断片パケット処理方法及びこれを用いるパケット転送装置
US20060029102A1 (en) * 2004-08-03 2006-02-09 Fujitsu Limited Processing method of fragmented packet
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
US7797463B2 (en) * 2005-06-30 2010-09-14 Intel Corporation Hardware assisted receive channel frame handling via data offset comparison in SAS SSP wide port applications
JP4787055B2 (ja) * 2006-04-12 2011-10-05 富士通株式会社 情報分割記録機能を持つ情報処理装置
US8514886B2 (en) * 2007-11-23 2013-08-20 International Business Machines Corporation Method and user device for receiving digital transmissions
US8370644B2 (en) 2008-05-30 2013-02-05 Spansion Llc Instant hardware erase for content reset and pseudo-random number generation
US8213618B2 (en) * 2008-12-30 2012-07-03 Intel Corporation Protecting content on client platforms
US8413253B2 (en) 2009-12-30 2013-04-02 Intel Corporation Protecting persistent secondary platform storage against attack from malicious or unauthorized programs

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050023248A (ko) * 2002-08-01 2005-03-09 마츠시타 덴끼 산교 가부시키가이샤 암호화된 데이터를 해독하고 해독된 데이터를 실행을 위해사용되는 메모리 공간에 로케이트시키는 장치 및 방법
US20080168252A1 (en) * 2005-05-23 2008-07-10 Matsushita Electric Industrial Co., Ltd. Memory Controller, Nonvolatile Storage Device, Nonvolatile Storage System, and Memory Control Method
JP2007026434A (ja) * 2005-06-24 2007-02-01 Samsung Electronics Co Ltd 低性能格納装置のdrm権利オブジェクトを効率的に管理する方法および装置
US20090327751A1 (en) * 2006-05-31 2009-12-31 Haim Koifman Method and system for transformation of logical data objects for storage

Also Published As

Publication number Publication date
GB2513982B (en) 2015-09-02
GB2513982A (en) 2014-11-12
JP5789320B2 (ja) 2015-10-07
CN104050396A (zh) 2014-09-17
JP2014183579A (ja) 2014-09-29
DE102014003687A1 (de) 2014-09-18
CN104050396B (zh) 2018-11-06
BR102014006230A2 (pt) 2018-02-14
US9411983B2 (en) 2016-08-09
US20160285637A1 (en) 2016-09-29
GB201404484D0 (en) 2014-04-30
US9673985B2 (en) 2017-06-06
KR101632235B1 (ko) 2016-06-21
US20140281584A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
US11467981B2 (en) Memory initialization in a protected region
TWI751731B (zh) 用以支援保護容器的即時遷移之處理器、方法、系統和指令
US9942035B2 (en) Platform migration of secure enclaves
JP6225395B2 (ja) セキュアなメモリの再パーティショニング
CN106687972B (zh) 针对有效gadget控制转移的攻击保护
KR101632235B1 (ko) 디지털 콘텐츠 보호 장치 및 방법
US10255199B1 (en) Evicting clean secure pages without encryption
US20140156972A1 (en) Control Transfer Termination Instructions Of An Instruction Set Architecture (ISA)
US9116729B2 (en) Handling of binary translated self modifying code and cross modifying code
CN108334400B (zh) 为安全飞地管理存储器
US9684511B2 (en) Using software having control transfer termination instructions with software not having control transfer termination instructions
US9705892B2 (en) Trusted time service for offline mode
KR20120096588A (ko) 동기화 simd 벡터
US11204874B2 (en) Secure memory repartitioning technologies
KR102298403B1 (ko) 제어 전송 인스트럭션으로의 리턴
US20140223129A1 (en) Key-based data security management
US20140122811A1 (en) Method And Apparatus For Error Correction In A Cache
KR102669289B1 (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공
KR20240081462A (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공
KR20190031136A (ko) 신뢰 도메인들을 사용한 가상화된 시스템들에서의 격리 제공

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190530

Year of fee payment: 4