KR101702287B1 - 보안 속성으로 cpu 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템 - Google Patents

보안 속성으로 cpu 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101702287B1
KR101702287B1 KR1020157021996A KR20157021996A KR101702287B1 KR 101702287 B1 KR101702287 B1 KR 101702287B1 KR 1020157021996 A KR1020157021996 A KR 1020157021996A KR 20157021996 A KR20157021996 A KR 20157021996A KR 101702287 B1 KR101702287 B1 KR 101702287B1
Authority
KR
South Korea
Prior art keywords
transaction
security attributes
initiator
security
access
Prior art date
Application number
KR1020157021996A
Other languages
English (en)
Other versions
KR20150107834A (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 KR20150107834A publication Critical patent/KR20150107834A/ko
Application granted granted Critical
Publication of KR101702287B1 publication Critical patent/KR101702287B1/ko

Links

Images

Classifications

    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)

Abstract

보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하는 방법, 장치 및 시스템이 제공된다. 불변의 보안 속성들은, 신뢰되거나 또는 신뢰되지 않는 CPU/코어의 실행 모드를 식별하는 CPU 또는 프로세서 코어에 의한 트랜잭션 개시자에 대해 생성된다. 트랜잭션들은 보호된 자산이 액세스될 수 있는 입/출력(I/O) 디바이스 또는 시스템 메모리를 타겟으로 할 수 있다. 정책 시행 로직 블록들은 장치 또는 시스템에서의 다양한 포인트들에서 구현되어, 트랜잭션들에 대해 생성된 불변의 보안 속성들에 기초하여 보호된 자산들에 대한 액세스를 허용 또는 거절한다. 하나의 양상에서, CPU/코어가 신뢰된 실행 모드에서 동작중임을 나타내기 위한 제1 트랜잭션을 통해 모드 레지스터가 갱신되는 멀티-레벨 보안 방안이 구현되며, 트랜잭션이 신뢰된 개시자로부터의 것임을 검증하기 위해 모드 레지스터에서의 실행 모드 표시를 이용하여 제2 트랜잭션에 대해 보안 속성들이 생성된다.

Description

보안 속성으로 CPU 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템{A METHOD, APPARATUS, SYSTEM FOR QUALIFYING CPU TRANSACTIONS WITH SECURITY ATTRIBUTES}
본 개시 내용은 컴퓨팅 시스템에 관한 것으로서, 특히 (전적인 것은 아니지만) 트랜잭션들에 대해 생성된 보안 속성들에 기초하여 중앙 프로세서 유닛들 및 프로세서 코어들로부터 발생되는 트랜잭션들을 자격부여(qualifying)하는 것에 관한 것이다.
도 1은 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예를 도시한다.
도 2는 예시적인 시스템 온 칩(System on a Chip; SoC) 아키텍처 및 시스템에서 디바이스들에 의해 개시된 트랜잭션들과 관련된 대응하는 통신 경로들을 예시하는 시스템 개략도이다.
도 3a 및 3b는 소스 기반, 타겟 기반 및 패브릭 기반 SAI 시행 방안들에 대한 조립(coarse-grain) 및 세립(fine-grain) 서브젝트 개시자 대 타겟 오브젝트 맵핑들을 각각 도시한다.
도 4는 본 발명의 일 실시예에 따른 정책 레지스터들을 이용하는 안전 액세스 메커니즘의 개요를 도시한다.
도 5는 도 2의 SoC를 도시하는 도면으로서, SoC 패브릭들에 의해 이용된 프로토콜과 사유 프로토콜 사이의 보안 속성들을 맵핑하기 위한 맵퍼 및 사유 프로토콜을 구현하는 버스를 더 포함하는 도면을 도시한다.
도 6은 본 발명의 일 실시예에 따른 판독 및 기록 정책 레지스터들의 예시적인 세트를 도시한다.
도 7은 본 발명의 일 실시예에 따른 예시적인 제어 정책 레지스터를 도시한다.
도 8은 본 발명의 일 실시예에 따른, 도 2의 SoC를 이용한 예시적인 트랜잭션 및 관련 보안 액세스 시행 메커니즘 시설들을 도시한다.
도 9는 본 명세서에서 개시된 실시예들의 양상들이 구현될 수 있는 예시적인 시스템 아키텍처의 블록 개략도이다.
도 10은 일 실시예에 따른, 개시자의 현재 실행 모드를 나타내는 표시로 모드 레지스터를 갱신하기 위해 수행된 동작을 예시하는 흐름도이다.
도 11a는 일 실시예에 따른, 모드 레지스터 갱신 프로세스를 더 예시하는 결합 아키텍처 및 데이터 흐름 도면이다.
도 11b는 일 실시예에 따른, MMIO 기록 트랜잭션을 예시하는 결합 아키텍처 및 데이터 흐름 도면이다.
도 12는 칩 상의 컴퓨팅 시스템의 실시예를 도시한다.
도 13은 컴퓨팅 시스템에 대한 블록도의 실시예를 도시한다.
이하의 설명에서, 본 발명에 대한 완전한 이해를 제공하기 위해, 특정 타입의 프로세서 및 시스템 구성, 특정 하드웨어 구조, 특정 아키텍처 및 마이크로 아키텍처 세부사항, 특정 레지스터 구성, 특정 인스트럭션 타입, 특정 시스템 구성요소, 특정 측정/높이, 특정 프로세서 파이프라인 스테이지 및 동작 등의 예들과 같은 많은 특정 세부사항들이 개시된다. 그러나, 본 기술 분야의 당업자라면, 본 발명을 실시하기 위해 이러한 특정 세부사항들이 이용될 필요는 없음을 명백히 알 것이다. 다른 경우들에 있어서, 본 발명을 불필요하게 불명료하게 하지 않도록, 컴퓨터 시스템의 특정적 및 대안적 프로세서 아키텍처, 특정 로직 회로/기술된 알고리즘들에 대한 코드, 특정 펌웨어 코드, 특정 상호접속 동작, 특정 로직 구성, 특정 제조 기법 및 재료, 특정 컴파일러 구현, 코드에서의 알고리즘들의 특정 표현, 특정 파워 다운 및 게이팅 기술/로직 및 다른 특정 동작 세부사항과 같은 잘 알려진 구성요소들 또는 방법들은 상세히 기술되지 않는다.
컴퓨팅 시스템들이 발전함에 따라, 그 구성요소들이 점점 더 복잡해지고 있다. 그 결과, 구성요소들 사이에서 연결 및 통신하기 위한 상호접속 아키텍처도, 대역폭 요건들이 최적의 구성요소 동작에 대해 만족되도록 보장하기 위해 복잡도가 증가하고 있다. 더욱이, 상이한 마켓 세그먼트들이 마켓의 요구를 맞추기 위해 상호접속 아키텍처들의 상이한 양상들을 요구한다. 예를 들어, 서버들은 보다 높은 성능을 요구하는 반면, 모바일 생태계는 때때로 전력 절약을 위해 전체 성능을 희생할 수 있다.
역사적으로, 컴퓨터 시스템 아키텍처들은 외부 버스 및/또는 다른 타입의 외부 상호접속들을 통해 접속되는 CPU(central processing unit), 메모리 제어기 또는 허브, 입/출력(I/O) 허브 등과 같은 개별적인 구성요소들을 이용한다. 보다 최근에, 컴퓨터 아키텍처들은 개별적인 구성요소들로부터 SoC(System on a Chip) 방안으로 전환하였으며, 그러한 방안 하에서 다양한 시스템 구성요소들이 단일의 기판 상에 집적된 단일의 다이 또는 다수의 다이 상에 통합되고, 다양한 구성요소들은 버스, 직렬 기반 상호접속, 및 스위치 패브릭(단순히 패브릭 이라고도 지칭됨)과 같은 내부 상호접속 구조들을 통해 상호접속된 로직/회로의 블록들(일반적으로, 구성요소 이름에 의해, 기능 블록들로서, 및/또는 IP(Intellectual Property) 블록들로서 지칭됨)을 포함한다.
본 명세서에 개시된 본 발명의 실시예들의 양상들 및 구현들을 보다 잘 이해하기 위해, 멀티코어 프로세서를 이용하는 컴퓨팅 시스템에 대한 아래의 설명이 먼저 제공된다. 이러한 컴퓨팅 시스템은 멀티칩 모듈과 같은 SoC 또는 유사한 아키텍처에서 구현될 수 있는 컴퓨터 시스템들의 다양한 양상들에 대한 예시일 뿐임을 이해할 것이다.
도 1을 참조하면, 멀티코어 프로세서를 포함하는 컴퓨팅 시스템에 대한 블록도의 실시예가 도시된다. 프로세서(100)는 마이크로프로세서, 내장 프로세서, DSP(digital signal processor), 네트워크 프로세서, 핸드헬드 프로세서, 애플리케이션 프로세서, 코프로세서, SoC, 또는 코드를 실행하는 다른 디바이스와 같은, 임의의 프로세서 또는 처리 디바이스를 포함한다. 일 실시예에서, 프로세서(100)는 비대칭 코어들 또는 대칭 코어들(예시된 실시예)을 포함할 수 있는 적어도 2개의 코어들(즉, 코어 (101, 102))을 포함한다. 그러나, 프로세서(100)는 대칭적이거나 또는 비대칭적일 있는 임의의 수의 처리 요소들을 포함할 수 있다.
일 실시예에서, 처리 요소는 소프트웨어 스레드를 지원하는 하드웨어 또는 로직을 지칭한다. 하드웨어 처리 요소들의 예들은, 스레드 유닛, 스레드 슬롯, 스레드, 처리 유닛, 콘텍스트, 콘텍스트 유닛, 논리 프로세서, 하드웨어 스레드, 코어, 및/또는 실행 상태 또는 아키텍처 상태와 같은 프로세서에 대한 상태를 유지할 수 있는 임의의 다른 요소를 포함한다. 즉, 일 실시예에서, 처리 요소는 소프트웨어 스레드, 운영 체제, 애플리케이션, 또는 다른 코드와 같은 코드와 독립적으로 관련될 수 있는 임의의 하드웨어를 지칭한다. 전형적으로, 물리적 프로세서(또는 프로세서 소켓)는 코어들 또는 하드웨어 스레드들과 같은 임의의 수의 다른 처리 요소들을 잠재적으로 포함하는 집적 회로를 지칭한다.
때때로, 코어는 독립적인 아키텍처 상태를 유지할 수 있는 집적 회로 상에 위치된 로직을 지칭하며, 각각의 독립적으로 유지된 아키텍처 상태는 적어도 일부 전용 실행 자원들과 관련된다. 코어들과는 대조적으로, 하드웨어 스레드는 전형적으로, 독립적인 아키텍처 상태를 유지할 수있는 집적 회로 상에 위치된 임의의 로직을 지칭하며, 독립적으로 유지된 아키텍처 상태들은 실행 자원들에 대한 액세스를 공유한다. 볼 수 있듯이, 특정 자원들이 공유되고, 다른 것들이 아키텍처 상태에 전용될 때, 하드웨어 스레드와 코드의 명칭 사이의 선이 중첩된다. 때때로, 코어 및 하드웨어 스레드는 운영 체제에 의해 개별적인 논리 프로세서들로서 보여지며, 운영 체제는 각각의 논리 프로세서 상의 동작들을 개별적으로 스케쥴링할 수 있다.
도 1에 도시된 바와 같이, 물리적 프로세서(100)는 2개의 코어들(즉, 코어(101, 102))을 포함한다. 여기서, 코어(101, 102)는 대칭적 코어들로서 고려되는데, 즉, 코어들은 동일한 구성들, 기능 유닛들, 및/또는 논리를 갖는다. 다른 실시예에서, 코어(101)는 비순차(out-of-order) 프로세서 코어인 반면, 코어(102)는 순차(in-order) 프로세서 코어를 포함한다. 그러나, 코어들(101, 102)은 네이티브 코어, 소프트웨어 관리형 코어, 네이티브 ISA(Instruction Set Architecture)를 실행하도록 적응된 코어, 트랜스레이티드 ISA를 실행하도록 적응된 코어, 공동 설계형 코어, 또는 다른 알려진 코어와 같은 임의의 타입의 코어로부터 개별적으로 선택될 수 있다. 이종(heterogeneous) 코어 환경(즉, 비대칭 코어들)에서, 이진 트랜스레이션과 같은 일부 형태의 트랜스레이션을 이용하여, 하나 또는 두 코어 상의 코드를 스케쥴링 또는 실행할 수 있다. 추가의 설명을 위해, 코어(101)에 도시된 기능 유닛들이 이하에 더 상세히 기술되며, 코어(102)에서의 유닛들은 도시된 실시예와 유사한 방식으로 동작한다.
도시된 바와 같이, 코어(101)는 하드웨어 스레드 슬롯들(101a, 101b)로서 지칭될 수도 있는 2개의 하드웨어 스레드(101a, 101b)를 포함한다. 따라서, 일 실시예에서, 운영 체제와 같은 소프트웨어 엔티티들은 프로세서(100)를 4개의 분리된 프로세서, 즉, 4개의 소프트웨어 스레드들을 동시에 실행할 수 있는 4개의 논리적 프로세서 또는 처리 요소로서 잠재적으로 보게 된다. 전술한 바와 같이, 제1 스레드는 아키텍처 상태 레지스터들(101a)과 관련되고, 제2 스레드는 아키텍처 상태 레지스터들(101b)과 관련되고, 제3 스레드는 아키텍처 상태 레지스터들(102a)과 관련되고, 제4 스레드는 아키텍처 상태 레지스터들(102b)과 관련될 수 있다. 여기서, 아키텍처 상태 레지스터들(101a, 101b, 102a, 102b) 각각은 전술한 바와 같이 처리 요소들, 스레드 슬롯들 또는 스레드 유닛들로서 지칭될 수 있다. 예시된 바와 같이, 아키텍처 상태 레지스터들(101a)은 아키텍처 상태 레지스터들(101b)에서 복제되어, 개별적인 아키텍처 상태들/콘텍스트들이 논리적 프로세서(101a) 및 논리적 프로세서(101b)에 대해 저장될 수 있다. 코어(101)에서, 인스트럭션 포인터들 및 할당기에서의 리네이밍 로직 및 리네이머 블록(130)과 같은 다른 보다 작은 자원들이 스레드들(101a, 101b)에 대해 복제될 수도 있다. 재정렬/리타이어먼트 유닛(135)에서의 재정렬(re-order) 버퍼들, ITLB(120), 로드/저장 버퍼들 및 큐(queue)들과 같은 일부 자원들이 파티셔닝을 통해 공유될 수 있다. 범용 내부 레지스터들, 페이지-테이블 베이스 레지스터(들), 하위 레벨 데이터-캐시 및 데이터-TLB(151), 실행 유닛(들)(140), 및 비순차 유닛(135)의 부분들과 같은 다른 자원들이 잠재적으로 완전히 공유된다.
때때로 프로세서(100)는 완전히 공유될 수 있는, 파티셔닝을 통해 공유되거나 또는 처리 요소들에 의해/처리 요소들에 대해 전용되는 다른 자원들을 포함한다. 도 1에서, 프로세서의 예시적인 논리적 유닛들/자원들을 갖는 순수하게 예시적인 프로세서의 실시예가 도시된다. 프로세서는 이들 기능 유닛들 중 임의의 것을 포함하거나 또는 생략할 수 있으며, 또한 도시되지 않은 임의의 다른 알려진 기능 유닛들, 로직 또는 펌웨어를 포함할 수 있음을 주지해야 한다. 도시된 바와 같이, 코어(101)는 간략화된 대표적인 비순차(out-of-order; OOO) 프로세서 코어를 포함한다. 그러나, 다른 실시예들에서 순차 프로세서가 이용될 수 있다. OOO 코어는 실행되고/취해질 브랜치들을 예측하기 위한 브랜치 타겟 버퍼(120) 및 인스트럭션들에 대한 어드레스 트랜스레이션 엔트리들을 저장하기 위한 I-TLB(instruction-translation buffer)(120)를 포함한다.
코어(101)는 페치 유닛(120)에 연결된 디코드 모듈(125)을 더 포함하여, 페치된 요소들을 디코딩한다. 일 실시예에서, 페치 로직은 스레드 슬롯들(101a, 101b)과 각각 관련된 개별적인 시퀀서들을 포함한다. 통상적으로, 코어(101)는 프로세서(100) 상에서 실행가능한 인스트럭션들을 정의/지정하는 제1 ISA와 관련된다. 때때로, 제1 ISA의 일부인 머신 코드 인스트럭션들이, 수행될 인스트럭션 또는 동작을 참조/지정하는 인스트럭션의 일부(오피코드(opcode) 라고 지칭됨)를 포함한다. 디코드 로직(125)은 그들의 오피코드로부터 이들 인스트럭션들을 인식하고, 제1 ISA에 의해 정의된 바와 같이 처리를 위해 파이프라인에서 디코딩된 인스트럭션들을 전달하는 회로를 포함한다. 예를 들어, 이하에 보다 상세히 기술된 바와 같이, 일 실시예에서, 디코더들(125)은 트랜잭션 인스트럭션과 같은 특정 인스트럭션들을 인식하도록 설계 또는 적응된 로직을 포함한다. 디코더들(125)에 의한 인식의 결과로서, 아키텍처 또는 코어(101)는 적절한 인스트럭션과 관련된 작업들을 수행하기 위해 특정의 미리 정의된 동작들을 취한다. 본 명세서에서 기술된 작업들, 블록들, 동작들 및 방법들 중 임의의 것이 단일의 또는 다수의 인스트럭션들에 응답하여 수행될 수 있으며, 그 인스트럭션들 중 일부는 새롭거나 또는 오래된 인스트럭션들일 수 있음을 주지해야 한다. 일 실시예에서, 디코더들(126)은 동일한 ISA(또는 그것의 서브세트)를 인식한다. 대안적으로, 이종 코어 환경에서, 디코더들(126)은 (제1 ISA의 서브세트이거나 또는 별개의 ISA인) 제2 ISA를 인식한다.
일례에서, 할당기 및 리네이머 블록(130)은 인스트럭션 처리 결과들을 저장하는 레지스터 파일들과 같은 자원들을 보유하기 위한 할당기를 포함한다. 그러나, 스레드들(101a, 101b)이 잠재적으로 비순차 실행이 가능하며, 여기서 할당기 및 리네이머 블록(130)은 인스트럭션 결과들을 추적하기 위한 레코더 버퍼들과 같은 다른 자원들을 또한 보유한다. 유닛(130)은 프로그램/인스트럭션 참조 레지스터들을 프로세서(100) 내부의 다른 레지스터들로 리네이밍하기 위한 레지스터 리네이머를 포함할 수도 있다. 재정렬/리타이어먼트 유닛(135)은 전술한 레코더 버퍼들, 로드 버퍼들 및 저장 버퍼들과 같은 구성요소들을 포함하여, 비순차 실행 및 비순차 실행된 인스트럭션들의 이후의 순차 리타이어먼트를 지원한다.
일 실시예에서, 스케쥴러 및 실행 유닛(들) 블록(140)이 스케쥴러 유닛을 포함하여 실행 유닛들 상에서의 인스트럭션/동작을 스케쥴링한다. 예를 들어, 부동 소수점 인스트럭션이, 이용가능한 부동 소수점 실행 유닛을 갖는 실행 유닛의 포트 상에서 스케쥴링된다. 실행 유닛들과 관련된 레지스터 파일들이, 정보 인스트럭션 처리 결과들을 저장하기 위해 또한 포함된다. 예시적인 실행 유닛들은 부동 소수점 실행 유닛, 정수 실행 유닛, 점프 실행 유닛, 로드 실행 유닛, 저장 실행 유닛 및 다른 알려진 실행 유닛들을 포함한다.
하위 레벨 데이터 캐시 및 D-TLB(data translation buffer)(150)가 실행 유닛(들)(140)에 연결된다. 데이터 캐시는 잠재적으로 메모리 코히어런시 상태들로 유지되는 데이터 오퍼랜드들과 같은 요소들 상에서 최근에 이용된/동작된 것을 저장하기 위한 것이다. D-TLB는 물리적 어드레스 트랜스레이션들에 대한 최근의 가상/선형적인 것을 저장하기 위한 것이다. 특정 예로서, 프로세서는 물리적 메모리를 복수의 가상 페이지들로 분할하는 페이지 테이블 구조를 포함할 수 있다.
여기서, 코어들(101, 102)은 온칩(on-chip) 인터페이스(110)와 관련된 제2 레벨 캐시와 같은, 상위 레벨 또는 퍼더-아웃(further-out) 캐시에 대한 액세스를 공유한다. 상위 레벨 또는 퍼더-아웃은 실행 유닛(들)로부터 다른 경로를 증가시키거나 또는 얻는 캐시 레벨들을 지칭함을 주지해야 한다. 일 실시예에서, 상위 레벨 캐시는 제2 또는 제3 레벨 데이터 캐시와 같은 최종 레벨 데이터 캐시(즉, 프로세서(100) 상에서의 메모리 계층 구조에서의 최종 캐시)이다. 그러나, 상위 레벨 캐시는 인스트럭션 캐시와 관련되거나 또는 인스트럭션 캐시를 포함할 수 있기 때문에, 그렇게 제한되지 않는다. 트레이스 캐시(즉, 인스트럭션 캐시의 한 가지 타입)가 대신에 디코더(125) 이후에 연결되어, 최근에 디코딩된 트레이스들을 저장할 수 있다. 여기서, 인스트럭션은 잠재적으로 매크로-인스트럭션(즉, 디코더들에 의해 인식된 일반적인 인스트럭션)을 지칭하며, 그것은 다수의 마이크로-인스트럭션들(마이크로-동작들)로 디코딩될 수 있다.
도시된 구성에서, 프로세서(100)는 온칩 인터페이스 모듈(110)을 또한 포함한다. 역사적으로, 이하에 보다 상세히 기술되는 메모리 제어기는 프로세서(100) 외부의 컴퓨팅 시스템에 포함되어 왔다. 이러한 시나리오에서, 온칩 인터페이스(110)는 시스템 메모리(175), 칩셋(때로는, 메모리(175)에 접속하기 위한 메모리 제어기 허브 및 주변 디바이스들에 접속하기 위한 I/O 제어기 허브를 포함함), 메모리 제어기 허브, 노스브리지, 또는 다른 집적 회로와 같은, 프로세서(100) 외부의 디바이스들과 통신하기 위한 것이다. 그리고, 이러한 시나리오에서, 버스(105)는 멀티-드롭 버스, 점대점 상호접속, 직렬 상호접속, 병렬 버스, 코히어런트(예를 들면, 캐시 코히어런트) 버스, 층형 프로토콜 아키텍처, 차동 버스, 및 GTL 버스와 같은 임의의 알려진 상호접속을 포함할 수 있다.
메모리(175)는 프로세서(100)에 전용되거나, 또는 시스템에서의 다른 디바이스들과 공유될 수 있다. 메모리(175)의 타입들에 대한 일반적인 예들은, DRAM, SRAM, 비휘발성 메모리(NV 메모리), 및 다른 알려진 저장 디바이스들을 포함한다. 디바이스(180)는 그래픽 가속기, 프로세서 또는 메모리 제어기 허브에 연결된 카드, I/O 제어기 허브에 연결된 데이터 스토리지, 무선 트랜시버, 플래시 디바이스, 오디오 제어기, 네트워크 제어기, 또는 다른 알려진 디바이스를 포함할 수 있음을 주지해야 한다.
그러나, SoC의 의해 구현된 것과 같이, 최근에 보다 많은 로직 및 디바이스들이 단일의 다이 상에 통합됨에 따라, 이들 디바이스들 각각은 프로세서(100) 상에서 통합될 수 있다. 예를 들어, 일 실시예에서, 메모리 제어기 허브는 프로세서(100)와 동일한 패키지 및/또는 다이 상에 존재한다. 여기서, 코어의 일부(온코어 부분)(110)는 메모리(175) 또는 그래픽 디바이스(180)와 같은 다른 디바이스들과 인터페이스하기 위한 하나 이상의 제어기(들)을 포함한다. 그러한 디바이스들과 인터페이스하기 위한 상호접속 및 제어기들을 포함하는 구성은, 때때로 온코어(on-core)(또는 언코어(un-core) 구성)로서 지칭된다. 예로서, 일 실시예에서, 온칩 인터페이스(110)는 온칩 통신을 위한 링 상호접속 및 오프칩 통신을 위한 고속 직렬 점대점 링크(105)를 포함한다. 대안적으로, 온칩 통신은 메시형(mesh-type) 구성을 갖는 하나 이상의 스위치 패브릭에 의해 가능해질 수 있다. 그러나, SoC 환경에서, 네트워크 인터페이스, 코프로세서들, 메모리(175), 그래픽 프로세서(180), 및 임의의 다른 알려진 컴퓨터 디바이스들/인터페이스와 같은 보다 많은 디바이스들도 단일의 다이 또는 집적 회로 상에 통합되어, 높은 기능 및 저전력 소모를 갖는 작은 폼 팩터(form factor)를 제공할 수 있다.
일 실시예에서, 프로세서(100)는 컴파일러, 최적화 및/또는 변환기 코드(177)를 실행하여, 애플리케이션 코드(176)를 컴파일, 변환 및/또는 최적화함으로써, 본 명세서에서 기술된 장치 및 방법을 지원하거나, 또는 그것과 인터페이스할 수 있다. 때때로 컴파일러는 소스 텍스트/코드를 타겟 텍스트/코드로 변환하는 프로그램 또는 프로그램들의 세트를 포함한다. 통상적으로, 컴파일러를 이용한 프로그램/애플리케이션 코드의 컴파일링은 다수의 단계(phase)들로 행해질 수 있으며, 상위 레벨 프로그래밍 언어 코드를 로우 레벨 머신 또는 어셈블리 언어 코드로 변환하도록 패스된다. 그러나, 단일 패스 컴파일러들이 단순한 컴파일을 위해서 여전히 이용될 수 있다. 컴파일러는 임의의 알려진 컴파일 기법들을 이용할 수 있으며, 어휘 분석(lexical analysis), 전처리, 파싱(parsing), 의미 분석(semantic analysis), 코드 생성, 코드 변환 및 코드 최적화와 같은 임의의 알려진 컴파일러 동작들을 수행할 수 있다.
보다 큰 컴파일러들은 때때로 다수의 단계들을 포함하지만, 이러한 단계들은 대부분 2개의 일반적인 단계들, 즉, (1) 전단(front-end)(즉, 일반적으로 여기서는 구문 처리(syntactic processing), 의미 처리 및 몇몇 변환/최적화가 발생될 수 있음), 및 (2) 후단(back-end)(즉, 일반적으로 여기서는 분석, 변환들, 최적화들 및 코드 생성이 발생될 수 있음) 내에 포함된다. 일부 컴파일러들은 컴파일러의 전단과 후단 사이의 묘사의 블러링을 나타내는 중간(middle)을 지칭한다. 그 결과, 삽입, 관련, 생성 또는 컴파일러의 다른 동작은 임의의 전술한 단계들 또는 패스들에서 발생될 뿐만 아니라, 컴파일러의 임의의 다른 단계들 또는 패스들에서 발생될 수도 있다. 예시적인 예로서, 컴파일러는 컴파일링의 전단 단계에서의 호출들/동작들의 삽입 및 그 이후의 변환 단계 동안의 하위 레벨 코드로의 호출들/동작들의 변환과 같은, 동작들, 호출(call)들, 함수들 등을 컴파일링의 하나 이상의 단계들에 잠재적으로 삽입한다. 동적인 컴파일 동안, 컴파일러 코드 또는 동적 최적화 코드가 그러한 동작들/호출들을 삽입할 뿐만 아니라, 실행시간 동안의 실행을 위해 코드를 최적화할 수 있음을 주지해야 한다. 특정한 예시적인 예로서, 이진 코드(이미 컴파일링된 코드)는 실행시간 동안 동적으로 최적화될 수 있다. 여기서, 프로그램 코드는 동적 최적화 코드, 이진 코드, 또는 그들의 조합을 포함할 수 있다.
컴파일러와 유사하게, 이진 변환기와 같은 변환기는 코드를 정적으로 또는 동적으로 변환하여 코드를 최적화 및/또는 변환한다. 따라서, 코드, 애플리케이션 코드, 프로그램 코드 또는 다른 소프트웨어 환경의 실행에 대한 참조는, (1) 프로그램 코드를 컴파일하고, 소프트웨어 구조들을 유지하고, 다른 동작들을 수행하고, 코드를 최적화하고, 또는 코드를 변환하기 위해, 컴파일러 프로그램(들), 최적화 코드 최적화기, 또는 변환기를 동적으로 또는 정적으로 실행하는 것, (2) 최적화/컴파일링된 애플리케이션 코드와 같은 동작들/호출들을 포함하는 메인 프로그램 코드를 실행하는 것, (3) 메인 프로그램 코드와 관련된 라이브러리들과 같은 다른 프로그램 코드를 실행하여 소프트웨어 구조들을 유지하고, 다른 소프트웨어 관련 동작들을 수행하고, 또는 코드를 최적화하는 것, 또는 (4) 그들의 조합을 지칭할 수 있다.
SoC 기반 플랫폼에서, 프로세서 코어들, 가속기들 및 디바이스들은 서로의 자원들에 액세스하여, 동시에 실행될 수 있는 신뢰도의 변경의 다수의 작업부하들을 포함하는 작업부하들을 처리한다. 또한, 마이크로코드 및 SMM(System Management Mode)와 같은 CPU 트랜잭션들은 보안 메모리 영역들, 시스템 에이전트에서의 구성 제어들, IP 에이전트들 등과 같은, SoC에서의 중요 자산들에 대한 액세스를 요구한다. 중요 자산들의 예는 SMM에 대해 전용인 IMR(Isolated Region of Memory), 마이크로코드에 의해 구성되는 전력 관리 제어기에서의 구성 레지스터들 등을 포함한다. 이를 고려하면, SoC를 통해 분포된 민감한 자산들을 보호하기 위해 적절한 제어들이 필요하다. 그렇지 않은 경우, 벤더 및 고객 비밀들이 침해될 수 있다. 위협의 예는, 컴퓨터 시스템 상에서 실행되는 멀웨어(malware)가 보호된 메모리 영역 레지스터들에 간섭하고, 비밀들을 노출시키는 것이다.
미래의 트렌드는 이러한 가속기들이 고정된 기능으로부터 최근의 알고리즘들로 갱신되는 프로그래밍가능 엔진들로 진화할 수 있음을 제안하고 있다. 유용한, 동적 소프트웨어 환경은 새로운 취약성을 도입할 수 있다. 추가적으로, 메모리는 낮은 대기시간 요건들을 만족시키기 위해 SoC를 통해 분포된다. 이것은 민감한 자산들을 저장하는 저장소들의 수를 증가시키고, 제한된 액세스를 필요로 한다. 이러한 요인들은 다수의 코어들 및 분포된 메모리로 이루어지는 SoC에서의 액세스 제어를 시행할 필요성에 대한 이유가 된다.
프로세서 코어들, 가속기들 및 디바이스들의 예시적인 세트를 도시하는 예시적인 SoC(200)에 대응하는 추상적 아키텍처가 도 2에 도시된다. SoC(200)는 하나 이상의 프로세서 코어(202)(간략성을 위해 1개만 도시됨)를 포함하고, 그 각각은 메모리 패브릭(206)에 연결된 로컬 캐시(204)를 포함한다. 또한, SoC(200)는 메모리(210)에 연결된 하나 이상의 가속기(208)를 포함하고, 메모리(210)는 코어 인터페이스(212)를 통해 메모리 패브릭(206)에 연결된다. 메모리 패브릭(206)은 메모리 인터페이스(214) 및 사우스 페이싱(south-facing) 인터페이스(216)를 또한 포함한다. 메모리 인터페이스(214)는 DRAM(dynamic random access memory)(218)과의 통신을 가능하게 한다. 사우스 페이싱 인터페이스(216)는 메모리 패브릭과 IO 패브릭(220) 사이에 상호접속을 제공한다. IO 패브릭(220)은 각각 개별적인 메모리(226, 228)에 연결된 디바이스들(222, 224)에 의해 도시된 다양한 IO 디바이스들과의 입/출력 통신들을 지원한다. 또한, IO 패브릭(220)은 SRAM(Static Random Access Memory)(230)과 나머지 시스템 구성요소들 사이에 인터페이스를 제공한다.
SoC(200)의 동작 동안, 다양한 시스템 구성요소들이 다른 구성요소들/디바이스들에 의해 유지되거나 제공되는 SoC 자산들을 액세스할 수 있다. 예를 들어, 프로세서(202)는 각각의 통신 경로 디바이스(232, 234, 236, 238, 240, 242)에 의해 도시된 바와 같이, DRAM(218), 가속기(208), 메모리(210), 디바이스(224), 메모리(228) 및 SRAM(230) 각각을 액세스할 수 있다. 유사하게, 다양한 IO 디바이스들이 통신 경로(244, 246, 248, 250, 252)에 의해 도시된 바와 같이, 디바이스들 및 메모리 자원들과 같은 다른 자원들을 액세스할 수 있다.
프로세서 코어들, 가속기들 및 디바이스들은 서로 상호작용하여 SoC(220)에 의해 처리된 작업부하들을 처리한다. 상호작용은, 부분적으로, 코어들, 가속기들 및 디바이스들과 관련된 메모리 및 저장 자원들 및/또는 레지스터들뿐만 아니라, DRAM(218), SRAM(230) 등과 같은 공통의 메모리 자원들을 액세스함으로써 가능하게 된다. 그러한 시스템 자원 액세스 요청들을 개시하는 구성요소들은, 본 명세서에서 "개시자들" 로서 지칭된다.
도 2의 아키텍처에서 볼 수 있듯이, 프로세서 코어(202) 및 가속기(208)와 같은 개시자들 중 일부는 SoC(200)에 내장되는 내부 구성요소들을 포함하는 반면, IO 디바이스들(222, 224)과 같은 다른 개시자들은 그들의 특정 기능에 따라 SoC 내부 또는 외부에 존재할 수 있다. 또한, SoC 외부에 있는 것은, SoC에서의 내부 또는 외부 개시자들을 통해 내부 또는 외부 자원들을 액세스하고자 시도할 수 있는 소프트웨어 및 펌웨어 엔티티들이다. 그 결과, 가변 신뢰도(varing degrees of trustworthiness)의 작업부하들이 동시에 실행될 수 있다.
SoC(200)는 권한이 부여되지 않은 액세스에 대하여 보호될 구성 레지스터들, 범위 레지스터들 등과 같은 하드웨어 자산들 및 데이터를 포함한다. 통상적인 방안 하에서, 이러한 데이터 및 하드웨어 자원들에 대한 액세스를 제어하는 것은 SoC의 특정 설계자에 의해 각각의 SoC에 대해 애드혹(ad-hoc) 및 단편적 방식으로 처리된다. 이러한 방안은 개시자의 특권을 확실히 결정하도록 SoC 패브릭들 및 인터페이스들에서 포괄적인 지원을 제공하지 않는다.
SoC 아키텍처들에서의 최근의 진보는 (예를 들면, 메모리 패브릭(206)을 통한) 내부 및 (예를 들면, IO 패브릭(220)을 통한) 외부 메모리 자원들 둘다를 통한 코히어런시를 지원하는 메모리 및 IO 패브릭을 도입하였다. 이것은, 부분적으로, 메모리 액세스 및 코히어런시 프레임워크를 통해 가능하게 된다. 일부 실시예들에서, 이러한 프레임워크는 자원들에 대한 안전 액세스를 일관성 있는 방식으로 지원하기 위해 SoC 아키텍처들을 통해 구현될 수 있는 균일한 액세스 제어 아키텍처를 정의하는데 이용된다. 일 실시예에서, 메모리 패브릭(206) 및 IO 패브릭(220)은 Intel® QPI(QuickPath Interconnect) 프레임워크들을 이용한다. 일반적으로 메모리 패브릭 및 IO 패브릭 각각은 상호접속들에 접속된 디바이스들과 자원들 사이의 트랜잭션들을 가능하게 하기 위한 대응하는 제어 로직과의 상호접속을 포함한다.
액세스 제어 모델 및 아키텍처
일 실시예에서, 오직 권한이 부여된 개시자들만이 보증된 자원들에 대한 액세스가 허용됨을 보장하기 위해 속성 기반 액세스 제어 모델이 구현된다. 그러한 모델 하에서, 서브젝트 또는 개시자가 오브젝트 또는 타겟을 액세스한다. 서브젝트 및 오브젝트의 특성들은 서브젝트 속성들 및 오브젝트 속성들로서 각각 캡쳐된다.
SoC 플랫폼에서는 액세스 제어 정책들이 시행될 수 있는 다수의 포인트들이 있다. 이러한 시행 포인트들은 소스(즉, 서브젝트 또는 개시자), 타겟 및/또는 패브릭에서 포함한다. 정책들은 도 3a 및 3b에서 명확히 도시된 바와 같이, 액세스들 및 다른 파라미터들의 타입에 따라 조립(coarse-grained) 또는 세립(fine-grained)일 수 있다.
소스 기반 액세스 제어의 경우, 액세스 제어는 서브젝트 또는 개시자에서 시행된다. 이러한 경우, 액세스 정책은 소스 S0과 오브젝트들 O0, O1, On 사이의 일-대-다수(one-to-many) 관계에 의해 도시된 바와 같이, 개시자에 의해 액세스될 수 있는 타겟들 모두를 정의한다. 추가적으로, 개시자는 개시자 로직에 복잡도를 부가하는 디코딩 타겟 어드레스들을 지원할 필요가 있다. 타겟 기반 액세스 제어의 경우, 액세스 정책은 엔드포인트(end-point)에서 시행된다. 타겟 기반 액세스 정책은 도 3a에서의 타겟 기반 액세스 제어 방안에 대한 소스들 S0, 오브젝트들 S0, S1, Sn 및 타겟 오브젝트 O0 사이의 다수-대-일(many-to-one) 관계에서 도시된 바와 같이, 타겟을 액세스할 수 있는 모든 개시자들을 고려한다. 어드레스 디코딩은, 트랜잭션이 이미 그것을 타겟에 대해 행하였으므로, 문제가 아니다. 이러한 방법은 SoC에서 일반적으로 이용된다. 마지막으로, 패브릭 기반 액세스 제어는 개시지 ?? 타겟과는 독립적이며, 전형적으로 인그레스(ingress) 또는 이그레스(egress) 패브릭 인터페이스에서의 패브릭에서의 정책들을 시행한다. 그것은 정책 시행에 대한 중심 포인트를 제공하며, 따라서 관리가 보다 용이하다. 타겟들에 대한 어드레스 디코딩이 패브릭에서 수행된다. 액세스 제어 정책은 도 3a에 도시된 패브픽 기반 액세스 제어 방안에서의 소스들과 타겟 오브젝트들 사이의 다수-대-다수(many-to-many) 관계에 의해 도시된 바와 같이, 패브릭에 연결된 타겟들을 액세스할 수 있는 모든 개시자들을 정의한다.
도 3b에 도시된 보다 세립의 액세스 제어 방안들 하에서, 소스 기반 방안 및 패브릭 기반 방안에 대한 각각의 소스 S가, 개시자의 아이덴티티 또는 개시자의 동작 모드와 같은 다수의 속성들을 갖는 것으로서 도시된다. 유사하게, 타겟 기반 세립 방안의 경우, 주어진 타겟 오브젝트가 다수의 액세스 제어 속성들을 가질 수 있다.
전술한 바와 같이, SAI(Security Attributes of Initiator) 라는 용어는 액세스 결정들을 행하는데 이용된 서브젝트 또는 개시자의 불변의 특성들을 나타내는 것으로 정의된다. 일 실시예에서, 이러한 속성들은 하드웨어 엔티티들에 의해 생성되며, 대응하는 서브젝트 또는 개시자에 의해 개시된 각각의 트랜잭션을 수반한다. 소스 ID들과는 달리, SAI는 브리지들에서 변형되지 않으며, 그들은 정책 시행의 포인트까지 지속된다. 정책 레지스터들이 자산에 대한 판독 및 기록 액세스에 대한 정책들을 정의하기 위해서 및 이러한 정책들을 구성 또는 갱신할 수 있는 엔티티를 제한하기 위해서 이용된다. 일 실시예에서, 액세스 제어 아키텍처는 이하의 형성 블록들, 즉, SAI, SAI 생성기, SAI 맵퍼, 판독 정책 레지스터들, 기록 정책 레지스터들 및 제어 정책 레지스터들로 이루어진다. 추가적으로 일 실시예에서, 랩퍼(wrapper)들을 이용하여 외부 포트들에 대해 SAI를 시행함으로써, 그들의 액세스들이 적절하게 특성화되는 것을 보장한다.
SAI
일 실시예에서, 보안 속성들이 서브젝트들/개시자들에게 할당되고, 개시자들의 액세스 권한들(즉, 판독, 기록, 액세스 없음 등)을 결정하는데 이용된다. 개시자의 보안 속성들 또는 "SAI"는 액세스 결정들을 행하는데 이용된 개시자의 불변의 특성들을 나타낸다. 일 실시예에서, 이러한 보안 속성들은 SoC 하드웨어에 의해 생성되며, 모든 트랜잭션을 수반한다. 일부 통상적인 보안 방안들에서 이용된 소스 ID들과는 달리, SAI들은 불변적이며, 그것은 그들이 정책 시행의 포인트까지 지속되고 브리지들 또는 인터페이스들에서 변형되지 않음을 의미한다.
일 실시예에서, 정책 레지스터들은 액세스 정책을 구현하기 위한 최소한 판독 및 기록인 액세스의 각각의 타입에 대해 정의된다. 일반적으로, 정책 레지스터들을 갖는 SAI들을 이용하기 위한 2개의 옵션들, 즉, 1) SAI가 판독/기록 정책 레지스터들 내로 인덱싱하는데 이용되고, 정책 레지스터의 값이 허용되거나 또는 거절된 액세스를 나타내거나, 또는 2) 인입되는 SAI가 예상 SAI와 비교되고, 그 2개의 SAI들이 매칭되는 경우에만 액세스가 허용되는 옵션이 있다. 하나 또는 적은 수의 개시자들이 존재하는 상황이 있다면, 옵션 2가 더욱 최적일 수 있다. 옵션 1과 옵션 2의 조합이 특정 SoC의 액세스 요건들에 따라 구현될 수도 있다.
일 실시예에서, 판독 및 기록 정책들을 구성할 수 있는 자산, 즉, 판독 및 기록 정책 레지스터들에서의 값들을 보호하는 신뢰 컴퓨팅 베이스(Trusted Computing Base)에 속하는 신뢰 엔티티를 식별하는 제어 정책 레지스터가 정의된다. 제어 정책 레지스터는 자기 지시적(self-referential)이며, 그것은 그의 콘텐츠가 그 자신에 대한 액세스들에 대해 액세스 제어를 시행시키는데 이용됨을 의미한다.
도 4는 SAI 기반 보안 방안의 예시적인 구현의 개요를 도시한다. 이러한 예 하에서, 서브젝트 개시자들 S0, S1, ...Sn이 타겟 오브젝트들 O0, O1, ...On을 액세스하는 것으로 도시된다. 메모리 패브릭(206)에 연결되는 오브젝트들을 액세스하기 위한 액세스 제어(즉, 패브릭 기반 액세스)는 메모리 패브릭 판독 및 기록 정책 레지스터들(400, 402)을 통해 가능해진다. 유사하게, IO 디바이스들과 같은 외부 타겟들을 액세스하기 위한 액세스 제어(즉, 타겟 기반 액세스)는 판독 및 기록 정책 레지스터들(404, 406)을 통해 가능해진다.
도 4의 예에서, 서브젝트 S0은 메모리 패브릭(206)에 연결된 타겟 오브젝트 O0(도시되지 않음)에 대한 판독 액세스를 수행하고자 한다. 서브젝트 개시자들 S0, S1, ...Sn 각각에 대해, 관련된 정책 레지스터들을 통해 SAI 보안 방안에 의해 시행된 것으로서 각각의 개시자의 액세스 권한들을 정의하는 보안 속성들 SA의 세트가 할당된다. 서브젝트에 적용가능한 보안 속성들 SA의 세트를 유효화하는 정보가, 이하에 더 상세히 기술된 바와 같이, 서브젝트에 의해 개시된 각각의 액세스 메시지와 함께 전달된다. 정책 레지스터들은 대응하는 오브젝트들에 대한 액세스를 안전하게 제어하기 위한 보안 속성 데이터를 저장한다. 개시자 서브젝트의 보안 속성들이 오브젝트를 액세스하기 위한 보안 속성들과 매칭된다면, 트랜잭션이 진행되도록 허용된다. 반대로, 개시자 서브젝트가 (그 액세스 메시지들과 함께 전달된 그 SA 정보를 통해 식별된 것으로서의) 적절한 보안 속성들을 갖지 않는다면, 트랜잭션은 거절될 것이며, 대응하는 메시지는 개시자 서브젝트로 리턴된다.
개시자의 보안 속성들 또는 SAI는 SoC 플랫폼에서의 타겟들에 대한 액세스를 결정하기 위해 검사되는 개시자들(및 서브젝트들)의 불변의 특성들을 나타낸다. 일 실시예에서, 이러한 특성들은 역할(role), 디바이스 모드 및 시스템 모드를 포함한다. 디바이스 모드는 동적이며, 디바이스의 현재 내부 모드를 캡쳐한다. 예를 들어, 모드는 안전 또는 정상 모드일 수 있다. 시스템 모드는 동적이며, 프로세서 코어에 의해 구동된 모드를 나타낸다. 일 실시예에서, 프로세서 코어는 (산업계에서 IA로서 알려진) 인텔 32 또는 64비트 아키텍처에 기초한 IA 코어들이다. 예를 들어, 시스템 모드는 SMM(System Management Mode) 또는 안전 모드 등일 수 있다. 추가적으로, 멀티-스레디드(multi-threaded) 개시자들의 경우, 현재 스레드를 나타내기 위한 콘텍스트 속성이 정의되며, 이러한 속성들은 SAI를 수반할 것이다.
SAI 생성기
SAI는 SoC 하드웨어에 의해 성성되고, 그 입력 파라미터들이 역할, 디바이스 모드, 시스템 모드 및 다른 선택적 파라미터들을 포함할 수 있는 함수에 의해 생성되는 인코딩이다. SAI의 해석은 각각의 SoC에 특정적이며, SoC 설계자에 의해 정의된다. 예시적인 구현으로서, SAI 인코딩에서 특정 비트를 '1'로 설정하는 것은 프로세서 코어에 의한 액세스를 나타낼 수 있다. 비트가 '0'으로 설정된다면, SAI 비트맵에서의 다른 비트들이 디바이스 액세스들을 인코딩하는데 이용될 수 있다. 예를 들어, 100...1b는 IA 코어 액세스를 나타내고, 001...0b는 디바이스 액세스를 나타낸다. 물론, 비트들의 수 및 SAI 인코딩의 포맷은 설계자에 의해 구성될 수 있기 때문에, 이것은 단지 예시적인 것이다.
SAI 맵퍼
일부 SoC들에서의 I/O 디바이스들은 논-벤더(non-vendor)(즉, SoC의 벤더가 아님) 또는 레거시 벤더 패브릭들에 접속된다. 예를 들어, 일부 SoC들은 OCP(Open Core Protocol), AMBA(Advanced Microcontroller Bus Architecture), IOSF 또는 다른 사유 버스 프로토콜들을 통합할 수 있다. SAI 맵퍼들은 SoC 특정 디바이스 도메인(예를 들면, OCP 도메인)에서 해석될 수 있는 보안 속성들에 대한 SoC 벤더들의 표준 패브릭들에서의 에이전트들에 의해 생성된 트랜잭션들을 수반하는 보안 속성들 또는 SAI를 맵핑할 책임이 있다. 유사하게, 논-벤더 패브릭들에서의 디바이스들에 의해 생성된 업스트림 트랜잭션들의 경우, 디바이스들에 의해 생성된 보안 속성들은 메모리/코히어런시 및 IOSF 도메인들에서 해석될 수 있는 SAI들로 맵핑되어야 한다. 전형적으로 이러한 맵퍼들은 하나의 패브릭 프로토콜을 다른 것으로 맵핑하는 브리지들에서 구현될 수 있다. 일부 실시예에서, 이러한 맵퍼들은 하드웨어에서 안전하게 맵핑되며, 조작될 수 없다.
SAI 맵퍼의 예시적인 구현이 도 5에 도시된다. 이러한 예에서, OCP, AMBA, IOSF 등과 같은, IO 패브릭(220)과는 상이한 벤더, 논-벤더 또는 레거시 벤더 버스 또는 스위치 패브릭(500)이 브리지(502)를 통해 IO 패브릭(220)에 연결된다. 메모리(506)를 갖는 하나 이상의 디바이스(504)가 버스(500)에 연결되며, 여기서 이러한 디바이스들에 대한 액세스는 버스(502)에 의해 구현된 프로토콜에 따른다. 한편, 상이한 프로토콜이 SoC(200)에서의 메모리 패브릭(206) 및 IO 패브릭(220)에 접속된 자산들 및 자원들을 액세스하기 위한 트랜잭션들에 대해 구현된다. SoC(200)와 버스(500)에 접속된 디바이스들 사이의 트랜잭션을 가능하게 하도록, 브리지(502)는 SAI 맵퍼(508)를 이용하여 2개의 프로토콜들 사이에 SAI 데이터를 맵핑한다.
판독 및 기록 정책 레지스터들
판독 및 기록 정책 레지스터들은 SoC 설계자에 의해 각각의 개시자에 대해 정의되는 판독 및 기록 허가들을 포함한다. 트랜잭션을 수반하는 SAI는 정책 레지스터에 대한 인덱스로서 기능한다. 예로서, 일 실시예에서, 32비트 판독 및 기록 정책 레지스터가 메모리 패브릭에서 정의된다. 판독 및 기록 정책 레지스터들(600, 602)의 대응하는 쌍이 도 6에 도시되며, 여기서 1들은 액세스가 허용됨을 나타내고, 0들은 액세스가 거절됨을 나타낸다. 일반적으로, SAI 폭은 n 비트이다. n의 값은 하나의 생성으로부터 다른 것까지 변경될 수 있고/있거나 제품들 간에 상이할 수 있다. 일 실시예에서, 인코딩 공간은 2^(n-1)이며, 여기서 n 비트들 중 하나는 코어 대 디바이스 인코딩들을 구별하는데 이용된다. 실제 인코딩들은 일반적으로 제품에 특정적일 것이기 때문에, 32 비트 레지스터를 이용하는 것은 단지 예시일 뿐이다. 개시자에 대한 SAI 할당은 융통성이 있으며, 특정 제품에 의존한다. 예를 들어, 개시자 당 하나의 SAI가 있거나 또는 개시자 당 다수의 SAI가 있거나, 또는 다수의 개시자들이 하나의 SAI로 그룹화될 수 있다.
제어 정책 레지스터
제어 정책 레지스터의 콘텐츠는 판독 및 기록 정책 레지스터들을 구성하도록 허용되는 신뢰 엔티티를 정의한다. 제어 정책 레지스터는 자기 지시적 레지스터이며, 제어 정책 레지스터에서 지정된 SAI는 판독 및 기록 레지스터 정책들을 수정할 뿐만 아니라, 제어 정책 레지스터의 콘텐츠를 중복기록하도록 허용된다. 단일의 신뢰 엔티티가 제어 정책 레지스터를 구성하도록 허용함으로써, 정책 레지스터들에 대한 액세스가 모든 다른 에이전트들에 대해 로킹되는 결과가 된다. 제어 정책 레지스터에서 SAI에 의해 지정된 엔티티는 파워 온(power-on)/리세트에서 로딩된 초기 값을 벗어나 정책 레지스터들을 구성할 수 있는 에이전트들의 세트를 확장하도록 선택할 수 있으며, 또는 신뢰 엔티티는 0들을 제어 정책 레지스터에 기록하여, 다음 시스템 리세트/파워 온까지 그것을 로킹할 수 있다. 이것은 다음 리세트까지 정책 레지스터들을 로킹 다운(locking down)하는 것을 구현하거나, 또는 정책이 실행시간 동안 신뢰 엔티티에 의해 갱신되는 것을 허용하도록, SoC 설계자에 대해 융통성을 제공한다. 예시적인 32비트 제어 정책 레지스터(700)가 도 7에 도시된다.
도 8은 메모리에 대한 디바이스 액세스들을 안전하게 시행하는 예를 도시한다. 이러한 예 하에서, 디바이스(222)는 DRAM(218)을 액세스하기 위한 트랜잭션(예를 들면, 판독 또는 기록)을 개시한다. I/O 브리지(254)에서, 적절한 SAI들이 브리지 하드웨어를 통해 생성되며, 이들 SAI는 이 경우 메모리 패브릭(206) 내의 정책 레지스터들(256)인 적용가능한 보안 시행 엔티티에 도달할 때까지 인터페이스들을 통해 트랜잭션 메시지와 함께 전달될 것이다. 정책 레지스터들(256)에서, SAI는 예를 들면, 판독 또는 기록인 트랜잭션의 타입에 따라 적용가능한 정책 레지스터에 대하여 검사 및 평가될 것이다.
본 명세서에서 개시된 SAI 안전 액세스 시행 방안은 현재의 방안들에 비해 많은 이점들을 제공한다. 그것은 SoC 설계들을 통해 일관성 있게 이용될 수 있는 SAI 생성기들, SAI 맵퍼들, 정책 레지스터들 등과 같은 균일한 액세스 제어 형성 블록들을 정의한다. 그것은 균일한 방식으로 SoC 패브릭에 적용된다. 이러한 이점들은 지속적인 속성인 SAI를 각각의 트랜잭션과 관련시킴으로써 달성된다. 트랜잭션 메시지들의 현존하는 포맷들 내에 SAI 데이터를 전달함으로써, 액세스 보안 방안들을 부가하기 위한 지원이 QPI와 같은 현존 상호접속 프레임워크들 내에서 달성될 수 있다. SoC는 SAI 정보를 이용하여 메모리, 언코어 레지스터들, I/O 디바이스 등과 같은 SoC 자산들을 타겟으로 하는 모든 개시자들에 의해 생성된 트랜잭션들에 대한 액세스 제어를 시행할 수 있다. SAI들은 특정 I/O 디바이스들에 대한 메모리 영역들에 대한 독점적인 액세스 또는 프로세스가 특정 모드들에서 실행될 때의 SoC 자산들에 대한 독점적인 액세스를 허용하는데 이용될 수 있다. 액세스 제어 아키텍처는 일관성 있는 모듈형 프레임워크 내의 모든 액세스 제어 결정들의 평가를 허용하는 강력한 새로운 패러다임이다. 상호접속들을 통해 SAI 정보를 지속적으로 운반함으로써, 액세스 제어 실행의 설계, 디버그 및 확인을 간략화하는데, 개시자 보안 역할이 트랜잭션들을 버퍼링하는 모든 마이크로-아키텍처 구조들을 통해 즉각적으로 이용가능하기 때문이다.
도 9는 일 실시예에 따른, SAI 기반 액세스 보안 방안을 구현하도록 구성된 시스템 아키텍처(900)를 도시한다. 시스템(900)에서, 백색의 배경들로 도시된 구성요소들은 SoC 상에 통합되는 반면, 밝은 회색 배경으로 도시된 구성요소들은 SoC 상의 적용가능한 인터페이스들과 통신하도록 연결되는 오프칩 구성요소들이다.
SoC 구성요소들은 일 실시예에서 IDI(intra-die interconnect) 인터페이스인 코히어런트 인터페이스를 통해 시스템 에이전트(908)에서의 LLC(last level cache) 및 코히어런스 블록(904)에 연결된 복수의 프로세서 코어들(902-0 내지 902-N)을 포함하는 CPU(901)를 포함한다. 코어들(902) 각각은 전형적으로 제1 레벨 캐시(L1 캐시) 또는 제1 및 제2 레벨 캐시(L1/L2 캐시)의 조합을 포함할 수 있는 로컬 캐시를 포함하는 것으로서 도시된다. LLC 및 코히어런스 블록(904)은 분배된 LLC를 포함하고, 그것은 예시된 실시예에서 복수의 LLC 슬라이스로서 구성되며, 각각의 슬라이스는 각각의 코어(902)에 논리적으로 할당된다. LLC 및 코히어런스 블록(904)에서의 로직은 다른 시스템 로직(도시되지 않음)과 결합하여 코어들(902-0 내지 902-N)로부터 발생되는 메모리 트랜잭션들에 대한 메모리 코히어런시를 가능하게 하도록 구성된다. 일 실시예에서, 코어들(902-0 내지 902-N) 각각은 논리적 코어를 나타내고, CPU는 하나 이상의 물리적 코어들을 포함하며, 물리적 코어들 각각은 하나 이상의 논리적 코어들을 갖는다. 예컨대, Intel®의 Hyper-Threading(HT) 기술 하에서, 각각의 물리적 코어는 2개의 논리적 코어들의 구현을 지원한다.
시스템 에이전트(908)는 코히어런트/메모리 패브릭(910), 전력 관리 블록(912), I/O 인터페이스(914) 및 메모리 제어기(916)를 더 포함한다. 코히어런트/메모리 패브릭(910)은 코히어런트 메모리 트랜잭션들 및 논-코히어런트 메모리 트랜잭션들에 대한 지원을 갖는 메모리 패브릭을 포함하며, 다수의 DRAM 채널들을 통해 액세스된 DRAM(920)을 포함하는 오프칩 시스템 메모리(918)에 대한 액세스를 가능하게 하도록 구성되는 메모리 제어기(916)와 인터페이스하는 것으로서 도시된다. 일 실시예에서, 코히어런트/메모리 패브릭(910)은 Intel® QPI 상호접속 구조 및 프로토콜을 이용한다. 다른 실시예에서, 코히어런트/메모리 패브릭(910)은 Intel® KTI(Keizer Technology Interconnect) 상호접속 구조 및 프로토콜을 이용한다. 코히어런트/메모리 패브릭(910)은 모드 레지스터(922), 액세스 제어 정책 로직(924) 및 정책 레지스터들(926)을 논리적으로 포함하는 것으로서 또한 도시된다. 본 명세서에서 이용된 바와 같이, "논리적으로 포함한다"는 것은, 대응하는 구성요소가 그것이 도시되는 블록의 동작과 관련되지만, 실제의 구현에서는 별도의 블록으로서 구현될 수 있음을 의미한다. 일 실시예에서, 코히어런트/메모리 패브릭(910)은 내부 상호접속 인터페이스(928)를 통해 I/O 인터페이스(914)에 연결된다.
시스템 아키텍처(910)는 시스템 에이전트(908)에 연결되는 것으로서 도시되는 그래픽 엔진(929)을 또한 포함한다. 일 실시예에서, 그래픽 엔진(929)은 그래픽 엔진(929)에 직접 액세스하기 위한 하나 이상의 프로세서 코어들(202-0 내지 902-N)에 대한 IDI 인터페이스 또는 다른 상호접속(도시되지 않음)에 접속된다.
I/O 인터페이스(914)는 다수의 I/O 스위치 패브릭을 포함하는 I/O 상호접속 계층구조를 포함하며 도 9의 하부 절반 쪽으로 도시된 I/O 서브시스템과 시스템 에이전트(908) 사이의 브리지로서 동작하도록 구성된다. I/O 상호접속 계층구조의 최상부는 기본(primary) 인터페이스를 통해 I/O 인터페이스(914)에 접속되는 기본 I/O 스위치 패브릭(930)이다. I/O 상호접속 계층구조에서의 다른 I/O 스위치 패브릭들은 온칩 I/O 스위치 패브릭들(932, 934) 및 오프칩 I/O 스위치 패브릭(936)을 포함한다. 일반적으로, I/O 스위치 패브릭들(930, 932, 934, 936)은 다양한 상호접속 구조들 및 관련된 프로토콜들을 이용하여 구현될 수 있으며, 제한적인 것은 아니지만, IOSF, OCP, AMBA 또는 다른 현존하거나 미래의 스위치 패브릭을 포함한다. 2개의 I/O 스위치 패브릭이 상이한 프로토콜들을 구현하는 경우들에 있어서, 브리지들은 브리지들(938, 940)에 의해 도시된 바와 같이, 상이한 프로토콜들 사이에서 인터페이스하도록 구현된다. 또한, 통신하도록 연결되며 상이한 클록 주파수들을 이용하는 I/O 스위치 패브릭들이 2개의 패브릭들 사이의 통신을 가능하게 하는 적절한 클록-크로싱(clock-crossing) 도메인을 갖는 인터페이스를 포함할 수 있다.
시스템 아키텍처(900)는 마스터 인터페이스를 통해 I/O 인터페이스(914) 및/또는 기본 I/O 스위치 패브릭(930)에 연결되는 측대역 메시징 블록(942)을 또한 포함한다. 측대역 메시징 블록(942)은 메시징 채널로서도 지칭되는 측대역 채널(944)을 통해 액세스 제어 정책 로직에 연결된다. 일반적으로, 측대역 및/또는 메시징 채널들은 구성 동작들을 가능하게 하는데 이용되며, 데이터 트랜잭션들과 관련된 데이터 페이로드들을 송신하는데 이용되지 않는다.
도 9는 각각 메모리들(950, 952)에 연결된 온칩 I/O 디바이스들(946, 948), 및 오프칩 I/O 디바이스들(954, 956, 958, 960) 및 오프칩 메모리들(962, 964)을 포함하는 I/O 상호접속 계층구조에서의 다양한 레벨들에서 예시된 I/O 스위치 패브릭들에 연결되는 다양한 I/O 디바이스들 및 관련된 메모리들을 더 도시한다. 추가적으로, 플래시 메모리 제어기(906)를 포함하는 I/O 디바이스가 기본 I/O 스위치 패브릭(930)에 연결되고, BIOS(970)를 포함하는 시스템 펌웨어가 저장되는 플래시 메모리(968)에 대한 액세스를 가능하게 하도록 구성된다. 일 실시예에서, 플래시 메모리(968)는 운영 체제(972)를 저장하는데 또한 이용된다. 선택적으로, 운영 체제는 디스크 드라이브 또는 고체 상태 드라이브(둘다 도시되지 않음)와 같은 분리된 저장 디바이스 상에 저장될 수 있다.
전술한 바와 같이, SAI들은 다양한 서브젝트 개시자들에서 생성될 수 있으며, SAI 정책 시행 로직이 시스템에서의 다양한 구성요소들에서 구현될 수 있다. 도 9의 상부 좌측 코너에 도시된 범례를 참조하면, SAI들을 생성하도록 구성되는 구성요소들이 타원 라벨링된 "SAI"로 도시되며, SAI 정책 시행 로직에 대한 위치들은 박스 라벨링된 "SAI"에 의해 도시된다. 또한, 보호된 자산들이 범례에 도시된 바와 같이 크로스-해치 박스로 도시된다. 시스템 아키텍처(900)에서의 SAI들, SAI 정책 시행 로직 및 보호된 자산들의 도시는 단지 예시적인 것이며, 실제 SoC에서 상이한 구성들이 구현될 수 있음을 이해할 것이다.
도 9에 도시된 바와 같이, SAI 정책 시행은 엔드포인트들에서의 SAI 정책 시행 로직 블록들을 통해, 다양한 패브릭들 및 인터페이스들 내에서 구현된다. 전술한 바와 같이, SAI 정책 시행은 서브젝트 개시자들(도시되지 않음)에서 구현될 수도 있다. 일반적으로, 패브릭들에 대한 SAI 시행 로직은 패브릭에 대한 인그레스 또는 이그레스 인터페이스들에서, 및/또는 패브릭 내의 또는 패브릭과 논리적으로 관련된 로직 블록들에서 구현될 수 있다. I/O 디바이스의 타입에 따라, SAI 시행 로직은 I/O 디바이스 (또는 그것의 인터페이스 또는 관련된 에이전트)에서 구현되거나, 또는 랩퍼가 전술한 바와 같이, 그리고 이하에서 도 10a 및 10b를 참조하여 더 상세히 기술된 바와 같이 이용될 수 있다. 보호된 자산들은 레지스터들, 또는 I/O 디바이스와 관련된 메모리 내의 보호된 메모리의 부분들 또는 시스템 메모리(918)에서의 보호된 메모리(972)에 의해 도시된 바와 같은 다른 시스템 구성요소와 같은 하드웨어 기반 자산들을 일반적으로 포함한다.
보안 속성들을 갖는 CPU 트랜잭션들을 자격부여
역사적으로, 중앙 처리 유닛들은 단일의 코어를 포함하고, 멀티칩 시스템 아키텍처에서의 분리된 구성요소들로서 구현되었다. 전술한 바와 같이, 보다 최근의 시스템 설계들은 전형적으로 프로세서 또는 복수의 프로세서 코어를 포함하는 SoC 아키텍처를 구현한다. 전술한 역사적 문맥으로 인해, 프로세서 코어들로부터 발생된 트랜잭션들은 본 명세서에서 CPU 트랜잭션들로서 지칭되거나, 대안적으로, 프로세서 코어 트랜잭션들로서 지칭된다.
전술한 바와 같이, CPU들 및 그들의 프로세서 코어들은 관련된 동작들을 수행하기 위한 인스트럭션들을 실행하는데 이용된다. 가장 일반적인 타입의 인스트럭션들은 CPU/프로세서 코어의 인스트럭션 아키텍처를 지원하도록 컴파일링되는 모듈들 및 애플리케이션들에 대응하는 머신 코드이다. 이러한 모듈들 및 애플리케이션들은 운영 체제 커널, 운영 체제에 의해 호스팅되는 애플리케이션들 및 디바이스 드라이버들을 포함한다.
보안상의 이유로, 모뎀 CPU들 및 프로세서 코어들은 상이한 특권 레벨들에서의 인스트럭션들의 실행을 가능하게 하도록 구성된다. 최저 특권 레벨은 최소의 신뢰이며 악의적인 코드에 대한 가장 일반적인 소스를 제공하는 애플리케이션 코드의 실행을 위해 이용된다. 가장 신뢰된 코드는 하드웨어 기반이며 애플리케이션 소프트웨어를 통해 액세스될 수 없는 프로세서 마이크로코드이다. 다른 신뢰된 코드는 SMM에 있는 동안에 실행되는 시스템 관리 코드를 포함하며, 이러한 코드는 단지 SMM에 있을 때 액세스가능한 특정의 미리 결정된 위치들에서 위치되도록 허용된다.
전술한 바와 같이, SAI들은 개시자가 CPU 또는 프로세서 코어일 때의 시스템 모드를 식별하는 속성들을 포함할 수 있다. 악의적인 엔티티가, 개시자가 안전 모드에서 실행되는 프로세서 코어임을 나타내는 SAI를 생성하는 것을 방지하기 위해, 일 실시예 하에서, 멀티 레벨 보안 방안이 CPU들/프로세서 코어들로부터 발생되는 트랜잭션들에 대해 구현된다.
멀티-레벨 보안 방안은 2개의 단계들, 즉, 실행 모드 구성 단계 및 해당 실행 모드에 있는 동안의 온고잉(ongoing) 트랜잭션 단계를 이용한다. 도 10에서의 흐름도(1000)를 참조하면, 일 실시예에 따라, 실행 모드 구성 단계는 다음과 같이 구현된다.
프로세스는 블록(1002)에서 시작되며, 여기서 프로세서 코어는 코어의 현재 모드로 시스템 에이전트에서의 모드 레지스터를 구성하기 위해 제한된 코어 트랜잭션을 생성한다. 시스템 에이전트에서, 블록(1004)에 도시된 바와 같이, 제한된 트랜잭션 체크가 수행되고, 그 결과는 LPID(logical processor identifier), 코어에 의해 생성되었음을 나타내는 안전 스트랩 비트(secure strap bit) 및 (대응하는 실행 모드를 나타내는 표시를 포함하는) 모드 레지스터의 현재 값과 함께 보안 속성 생성 유닛으로 공급된다. 이것은 마이크로코드 액세스임을 나타내는 비트 인코딩을 포함하는 n비트 보안 속성의 생성을 초래한다.
블록(1006)에서, 보안 속성들과 함께 제한된 코어 트랜잭션이 IO 패브릭으로 송신된다. 시스템 에이전트는 제한된 트랜잭션을 SoC 기본 인터페이스를 통해 정규 I/O 판독/기록 트랜잭션으로서 송신한다. 병렬 동작 동안, 보안 속성 비트들이 IO 패브릭의 기본 마스터 인터페이스 상에서 송신된다. 블록(1008)에서, 측대역 메시지 버스에 대한 제한된 코어 트랜잭션 바운드가 요구(claim)되고, 측대역 메시지가 생성된다. 블록(1010)에 도시된 바와 같이, 측대역 메시지를 수반하는 보안 속성들은 액세스가 모드 레지스터에 대해 허용되기 전에 액세스 제어 정책 레지스터에 의해 검증된다. 이 경우, 트랜잭션 개시자의 실행 모드를 나타내는 보안 속성이 모드 레지스터에 대한 기록을 허용하기 전에 마이크로코드 실행 모드에 대응하도록 검증된다. 그 다음, 모드 레지스터는 코어의 현재 모드로 갱신된다.
모드 레지스터가 코어의 현재 모드로 갱신되면, 코어에 의해 생성된 임의의 트랜잭션들이 그 보안 속성들과 함께 수반될 것이다. 불변적인 이러한 보안 속성들은 변경되지 않은 SoC 패브릭들 및 상호접속들을 통한 트랜잭션을 수반한다. 타겟에서, 이러한 속성들은 정책 시행 로직에 의해 검사되어, 자산에 대한 액세스를 허용 또는 거절할지 여부가 결정된다. 그 결과, CPU 마이크로코드 트랜잭션들 또는 SMM 트랜잭션들과 같은, 특정 신뢰된 실행 모드들에서 동작할 때에 CPU들에 의해 개시된 트랜잭션들은, DRAM, SRAM, 구성 레지스터들, MMIO, 퓨즈 등과 같은 시스템 자원들을 액세스할 때 특수한 특권들로 취급될 수 있다.
일 실시예에 따르면, MMIO 기록 트랜잭션이 뒤따르는 모드 레지스터 갱신 프로세스의 추가적인 세부사항들이 도 11a 및 11b에 도시되며, 이들 도면 각각은 결합 아키텍처 및 데이터흐름도를 도시한다. 일반적으로, 도 11a 및 11b에서의 시스템 구성요소들은 도 9의 시스템 아키텍처(900)의 선택된 구성요소들에 대응하는 예시적인 구현을 예시하는 것이다. 공통 참조 번호들을 공유하는 (따라서, 유사하게 구성되는) 도 9, 11a 및 11b에서의 구성요소들 이외에, 도 11a 및 11b에서 도시된 구성요소들은 SAI 생성 유닛(1100), IOSF 패브릭(1106), 맵(1110)을 포함하는 IOSF2OCP 브리지(1108), OCP 패브릭(1112), OCP 디바이스(1114) 및 OCP 디바이스 랩퍼(1116)를 포함한다. 도 11a 및 11b 각각에서, 원으로 둘러싸인 번호들에 인접한 박스들은 대응하는 동작들 및/또는 트랜잭션 데이터의 현재 상태를 도시한다.
모드 레지스터 갱신 프로세스는 프로세서 코어(902)가 신뢰된 실행 모드에서 동작하며, 코어가 마이크로코드 모드에서 동작함을 식별하는 모드 레지스터에서의 표시를 설정하기 위해 모드 레지스터(922)에 대한 마이크로코드 기록을 포함하는 트랜잭션을 생성하는 것으로 시작된다. 마이크포코드 기록 트랜잭션은, 일 실시예에서, 미리 결정된 임계값보다 높거나, 그렇지 않은 경우 미리 정의된 어드레스 범위 내에 있는 I/O 어드레스를 가짐으로써 특권의 트랜잭션으로서 식별되는 특권의 트랜잭션을 포함한다. 다음, 메모리 패브릭(910)에서, 특권된 I/O 체크가 수행되고, 그 결과는 코어(902)에 대한 논리 프로세서 ID, 프로세서 코어에 의해 생성되었음을 나타내는 안전 스트랩 비트(1102), 및 모드 레지스터의 현재 값과 함께 SAI 생성 유닛(1100)으로 공급된다. 따라서, SAI는 함수로서 인코딩된다.
SAI = Fn(isPriviledgedIO, LPID, IsSecure, Mode Register Value)
이러한 입력들에 응답하여, SAI 생성 유닛(1100)에서의 로직은 n비트 SAI를 출력한다.
SAI를 포함하는 마이크로코드 기록 트랜잭션이 적용가능한 상호접속들 및 인터페이스들(도시되지 않음)을 통해 I/O 인터페이스(914)에 전달된다. I/O 인터페이스는 마이크로코드 I/O 트랜잭션을 IOSF 기본 인터페이스를 통해 정규 I/O 판독/기록 트랜잭션으로서 IOSF 패브릭(1106)에게 송신한다. 한편, SAI 비트들이 IOSF 기본 마스터 인터페이스 상에서 코맨드 속성들로서 측대역 메시징 블록(942)에게 송신된다. 일 실시예에서, 측대역 메시징 블록은 하나 이상의 미리 정의된 어드레스 범위들에서 측대역 메시지 버스에 대한 마이크로코드(10) 트랜잭션 바운드로서 트랜잭션들을 요구한다. 트랜잭션이 요구되면, 측대역 메시징 블록(942)이 모드 레지스터(922)로 송신되는 측대역 메시지(1118)를 생성한다. 측대역 메시지(1106)를 수반하는 SAI가, 액세스가 모드 레지스터(922)에 대해 허용되기 전에, 액세스 제어 정책 블록(924)에서 SAI 정책 체크 로직에 의해 검증된다. 이 경우, SAI는 그것이 마이크로코드 트랙잭션인지를 검증하기 위해 기록 정책 레지스터에 의해 검사된다. SAI가 검증되면, 모드 레지스터(924)가 프로세서 코어(902)의 현재 실행 모드로 갱신(즉, 이러한 예에서는 마이크로코드 모드로 갱신)된다.
모드 레지스터에서의 현재 실행 모드 표시가 변경되면, 프로세서 코어(902)로부터 발생되는 후속 트랜잭션들이, 모드 레지스터에서의 실행 모드 표시가 상이한 실행 모드로의 변경과 관련하여 갱신될 때까지, 프로세서 실행 코드가 표시(예를 들면, 마이크로코드)에 의해 식별된 모드임을 나타내도록 인코딩되는 SAI를 포함할 것이다. 이러한 멀티-레벨 보안 방안(즉, 모드 레지스터가 먼저 별도로 갱신되고, 후속 트랜잭션들과는 별개의 것이 될 것을 요구함)을 이용함으로써, 악의적인 에이전트가 간단히 프로세서 코어로서 가장함으로써 보호된 자산들을 액세스하는 것을 방지하게 된다.
도 11b는 CPU가 SMM에서 동작하는 동안 후속 MMIO 트랜잭션에 대한 동작들 및 데이터흐름들을 도시한다. 프로세스는 동작 1에서 프로세서 코어(902)가 MMIO 트랜잭션을 생성하는 것으로 시작된다. 앞에서와 같이, SAI 생성 함수인 Fn(isPrivilegedIO, LPID, IsSecure, Mode Register Value)에게 전달된 파라미터들의 값들에 기초하여 동작 2에서 n비트 SAI가 생성된다. MMIO 트랜잭션(이제 SAI를 포함함)이 적용가능한 상호접속들 및 인터페이스들을 통해 I/O 인터페이스(914)로 전달된다. 동작 3에 도시된 바와 같이, I/O 인터페이스는 IOSF 패브릭(1108)의 IOSF 기본 마스터 인터페이스를 통해 그의 SAI와 더불을 MMIO 트랜잭션을 정규 I/O 트랜잭션으로서 송신한다. OCP 디바이스(예를 들면, 이러한 예에서 OCP 디바이스(1114))에서 타겟이 된 MMIO의 경우, IOSF2OCP 브리지(1108)가 트랜잭션을 요구한다. SAI가 코맨드 속성들로서 기본 마스터 인터페이스를 통해 송신된다. SAI는 IOSF2OCP 브리지(1108)에서의 맵(1110)에 의해, 동작 4에 도시된 바아 같이, OCP 패브릭(1112) 및 그것에 연결된 OCTP 디바이스들에 의해 해석가능한 OCP 보안 속성들로 맵핑된다. 일 실시예에서, OCP 보안 속성들은 SAI와 동일한 제약들에 따른다. 동작 5에서, OCP 디바이스 랩퍼(1116)는 액세스가 OCP 보안 속성들에 기초하여 승인되어야 하는지의 여부를 결정한다. 일 실시예에서, OCP 디바이스 랩퍼(1106)는 MMIO 트랜잭션을 수반하는 OCP 보안 속성들을 검사하고, 그 정책에 기초하여, OCP 디바이스(1114)에 대한 액세스를 거절 또는 허용하도록 구성되는 판독/기록 정책 레지스터들을 포함한다.
신뢰된 실행 모드에서 동작하는 CPU 개시자들로부터 보호된 자산들에 대한 액세스를 가능하게 하는 것에 추가하여, 상이한 레벨의 신뢰에 대한 지원이 다수의 신뢰된 실행 모드들에서의 동작을 지원하는 CPU들에 대해 구현될 수 있다. 예를 들어, CPU가 이하의 실행 모드들을 지원하는 것으로 가정한다.
T0 (신뢰 레벨 0, 예를 들면, 마이크로코드)
Tl (신뢰 레벨 1)
T2 (신뢰 레벨 2, 예를 들면, 부트 BIOS)
T3 (신뢰 레벨 3, 예를 들면, SMM)
...
U0 (비신뢰 레벨 0)
U1 (비신뢰 레벨 1)
...
이러한, 그리고 유사한 구성들 하에서, SAI 생성 유닛 로직 및 SAI 정책 시행 로직이 상이한 레벨들의 신뢰에 기초하여 액세스 정책들을 시행하도록 구성될 수 있다. 예를 들어, 일부 보호된 자산들은 마이크로코드 모드에서 실행되는 개시자로부터만 액세스될 수 있는 반면, 다른 보호된 자산들은 SMM 모드 또는 상위 레벨의 신뢰된 실행 모드에서 실행되는 개시자로부터 액세스될 수 있다.
일부 실시예들에서, CPU 실행 모드들이 네스팅(nested)될 수 있다. 예를 들어, BIOS 코드가 그것이 시스템을 부팅하기 시작한 직후에 SMI(System Management Interrupt)를 얻을 수 있는 반면, SMM 처리기는 SoC에서의 자원들 및 자산들과 상호작용하기 위한 마이크로코드 루틴을 포함할 수 있다. 상이한 옵션들 하에서, 모드 레지스터가 신뢰된 실행 모드를 반영하도록 갱신되면, 모드 레지스터는 신뢰된 실행 모드 레벨에서의 각각의 변경으로 갱신되거나 또는 갱신되지 않을 수 있다. 그러나, 일 실시예에서, 신뢰된 실행 모드와 비신뢰된 실행 모드 사이에서 변경될 때마다, 모드 레지스터에서의 실행 모드 표시가 갱신될 것이다.
본 명세서에서 개시된 SAI 안전 액세스 시행 방안은 현재의 방안들에 비하여 많은 이점들을 제공한다. 그것은 SoC 설계들을 통해 일관성 있게 이용될 수 있는 SAI 생성기들, SAI 맵퍼들, 정책 레지스터들 등과 같은 균일한 액세스 제어 형성 블록들을 정의한다. 그것은 균일한 방식으로 SoC 패브릭들에 적용된다. 이러한 이점들은 지속적인 속성, SAI를 각각의 트랜잭션과 관련시킴으로써 달성된다. 트랜잭션 메시지들의 현존하는 포맷들 내의 SAI 데이터를 전달함으로써, 액세스 보안 방안들을 추가하기 위한 지원이 QPI와 같은 현존하는 상호접속 프레임워크 내에서 달성될 수 있다. SoC는 SAI 정보를 이용하여 메모리, 언코어 레지스터들, I/O 디바이스들 등과 같은 SoC 자산들을 타겟으로 하는 모든 개시자들에 의해 생성된 트랜잭션들에 대한 액세스 제어를 시행한다. SAI들은 특정 I/O 디바이스들에 대한 메모리 영역들에 대한 독점적인 액세스 또는 프로세서가 특정 모드들에서 실행될 때 SoC 자산들에 대한 독점적인 액세스를 허용하는데 이용될 수 있다. 액세스 제어 아키텍처는 일관성 있는 모듈형 프레임워크 내의 모든 액세스 제어 결정들의 평가를 허용하느 강력한 새로운 패러다임이다. 상호접속들을 통해 지속적으로 SAI 정보를 운반함으로써, 액세스 제어 행사들의 설계, 디버그 및 검증을 간략화하는데, 개시자 보안 역할이 트랜잭션들을 버퍼링하는 모든 마이크로-아키텍처 구조들을 통해 즉각적으로 이용가능하기 때문이다.
개시되었던 트랜잭션이 신뢰 모드일 때 실행 모드를 나타내는 표시와 결합하여 CPU 외부의 포인트에서 CPU 내에서 개시된 트랜잭션들에 대해 SAI를 생성함으로써, 악의적 소프트웨어 기반 엔티티가 신뢰된 개시자로서 가장하는 것으로부터 배제된다. 더욱이, 후속 트랜잭션들이 보호된 자산들을 타겟으로 하기 전에 모드 레지스터에 실행 모드 표시를 설정하기 위해 분리된 트랜잭션을 이용하는 멀티 레벨 안전 트랜잭션 방안을 구현할 때 다른 보안 층이 추가된다.
다음, 도 12를 참조하면, 본 발명에 따른 SOC(system on-chip) 설계의 실시예가 도시된다. 특정한 예시적인 예로서, SOC(1200)가 사용자 장비(UE)에 포함된다. 일 실시예에서, UE는 핸드헬드 전화, 스마트폰, 태블릿, 초박형 노트북, 광대역 어댑터를 구비한 노트북, 또는 임의의 다른 유사한 통신 디바이스와 같은, 통신을 위해 최종 사용자가 사용할 임의의 디바이스를 지칭한다. 때때로, UE는 잠재적으로 GSM 네트워크에서의 이동국(MS)에 사실상 대응하는 기지국 또는 노드에 접속한다.
여기서, SOC(1200)는 2개의 코어들(1206, 1207)을 포함한다. 전술한 바와 유사하게, 코어들(1206, 1207)은 Intel® Architecture CoreTM 기반 프로세서, AMD(Advanced Micro Devices, Inc.) 프로세서, MIPS 기반 프로세서, ARM 기반 프로세서 설계, 또는 그 고객 뿐만 아니라, 그들의 소지자들 또는 채택자들과 같은 인스트럭션 세트 아키텍처에 따를 수 있다. 코어들(1206, 1207)은 시스템(1200)의 다른 부분들과 통신하기 위해 버스 인터페이스 유닛(1209) 및 L2 캐시(1210)와 관련되는 캐시 제어(1208)에 연결된다. 상호접속(1210)은 기술된 본 발명의 하나 이상의 양상을 잠재적으로 구현하는 IOSF, AMBA, 또는 전술한 다른 상호접속과 같은 온칩 상호접속을 포함한다.
인터페이스(1210)는 SIM 카드와 인터페이스하기 위한 SIM(Subscriber Identity Module)(1230), SOC(1200)를 초기화 및 부팅하도록 코어들(1206, 1207)에 의한 실행을 위해 부트 코드를 보유하는 부트 ROM(1235), 외부 메모리(예를 들면, DRAM(1260))와 인터페이스하기 위한 SDRAM 제어기(1240), 비휘발성 메모리(예를 들면, 플래시(1265))와 인터페이스하기 위한 플래시 제어기(1245), 주변장치들과 인터페이스하기 위한 주변 제어(1250)(예를 들면, 직렬 주변 인터페이스), 입력을 디스플레이 및 수신하기 위한 비디오 코덱들(1220) 및 비디오 인터페이스(1225)(예를 들면, 터치 가능 입력), 그래픽 관련 연산들을 수행하기 위한 GPU(1215) 등과 같은 다른 구성요소들에 대한 통신 채널들을 제공한다. 이들 인터페이스들 중 임의의 것은 본 명세서에서 기술된 본 발명의 양상들을 통합할 수 있다.
또한, 시스템은 블루투스 모듈(1270), 3G 모뎀(1275), GPS(1280) 및 WiFi(1285)와 같은, 통신을 위한 주변장치들을 도시한다. 전술한 바와 같이, UE는 통신을 위한 라디오를 포함함을 주지해야 한다. 그 결과, 이들 주변 통신 모듈들이 전부 요구되지는 않는다. 그러나, 몇몇 형태의 UE에서는 외부 통신을 위한 라디오가 포함된다.
위에서 기술된 장치, 방법 및 시스템은 전술한 바와 같은 임의의 전자 디바이스 또는 시스템으로 구현될 수 있음을 주지해야 한다. 특정 예시로서, 이하의 도면들을 본 명세서에서 기술된 바와 같이 본 발명을 이용하기 위한 예시적인 시스템을 제공한다. 이하에서 시스템들은 보다 상세히 기술되므로, 다수의 상이한 상호접속들이 위의 설명으로부터 개시되고, 기술되고, 다시 논의된다. 그리고, 쉽게 이해할 수 있듯이, 위에서 기술된 진보들은 그러한 상호접속들, 패브릭들 또는 아키텍처들 중 임의의 것에 적용될 수 있다.
이제 도 13을 참조하면, 본 발명의 실시예에 따른 컴퓨터 시스템에 제공된 구성요소들의 블록도가 도시된다. 도 13에 도시된 바와 같이, 시스템(1300)은 구성요소들의 임의의 조합을 포함한다. 이들 구성요소들은 IC, 그 일부분, 이산적 전자 디바이스, 또는 다른 모듈, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 컴퓨터 시스템에 적응된 그 조합, 또는 그렇지 않은 경우 컴퓨터 시스템의 섀시(chassis) 내에 통합되는 구성요소들로서 구현될 수 있다. 또한, 도 13의 블록도는 컴퓨터 시스템의 많은 구성요소들의 상위 레벨 도면을 도시하기 위한 것임을 주지해야 한다. 그러나, 도시된 구성요소들 중 일부가 생략되고, 추가적인 구성요소들이 제공되고, 도시된 구성요소들의 상이한 배열이 다른 구현들에서 발생될 수 있음을 이해할 것이다. 그 결과, 전술한 본 발명은 이하에 도시되거나 기술되는 하나 이상의 상호접속들의 임의의 부분으로 구현될 수 있다.
도 13에서 볼 수 있듯이, 프로세서(1310)는, 일 실시예에서, 마이크로프로세서, 멀티-코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 내장형 프로세서, 또는 다른 알려진 처리 요소를 포함한다. 예시된 구현에서, 프로세서(1310)는 메인 처리 유닛 및 시스템(1300)의 다양한 구성요소들 중 많은 것과 통신하기 위한 중앙 허브로서 기능한다. 일례로서, 프로세서(1300)는 SoC로서 구현된다. 특정한 예시적인 예로서, 프로세서(1310)는 i3, i5, i7과 같은 Intel® Architecture CoreTM 기반 프로세서 또는 캘리포니아주, 산타클라라의 인텔 코포레이션으로부터 이용가능한 다른 그러한 프로세서를 포함한다. 그러나, 캘리포니아주, 서니베일의 AMD(Advanced Micro Devices, Inc.), 캘리포니아주, 서니베일의 MIPS Technologies, Inc.로부터의 MIPS 기반 설계, ARM Holdings, Ltd.로부터 라이싱된 ARM 기반 설계, 또는 그 고객, 또는 그들의 소유자 또는 채택자로부터 이용가능한 것과 같은 다른 저전력 프로세서가, Apple A5/A6 프로세서, 퀄컴 스냅드래곤 프로세서, 또는 TI OMAP 프로세서와 같은 다른 실시예에서 대신에 제공될 수 있음을 이해할 것이다. 그러한 프로세서들의 많은 고객 버젼들이 수정 및 변경될 수 있지만, 그들은 프로세서 라이센서에 의해 개시된 바와 같은 정의된 알고리즘들을 수행하는 특정 인스트럭션 세트를 지원 또는 인식할 수 있음을 주지해야 한다. 여기서, 마이크로아키텍처 구현은 변할 수 있지만, 프로세서의 아티켁쳐 기능은 통상적으로 일관성이 있다. 일 실시예에서의 프로세서(1310)의 아키텍처 및 동작에 관한 특정한 세부사항은, 예시적인 예를 제공하도록 이하에 더 기술될 것이다.
프로세서(1310)는, 일 실시예에서, 시스템 메모리(1315)와 통신한다. 예시적인 예로서, 소정의 실시예에서 주어진 양의 시스템 메모리를 제공하기 위해 다수의 메모리 디바이스들을 통해 구현될 수 있다. 예로서, 메모리는 JEDEC JESD 209-2E(2009년 4월 발행)에 따른 현재의 LPDDR2 표준, 또는 대역폭을 증가시키기 위해 LPDDR2에 대한 확장들을 제공하게 될 LPDDR3 또는 LPDDR4로서 지칭될 차세대 LPDDR 표준과 같은, JEDEC(Joint Electron Devices Engineering Council) LPDDR(low power double data rate) 기반 설계에 따른 것일 수 있다. 다양한 구현들에서, 개별 메모리 디바이스들은 SDP(single die package), DDP(dual die package), 또는 쿼드 다이 패키지(quad die package)(QDP)와 같은 상이한 패키지 타입들일 수 있다. 이들 디바이스들은, 일부 실시예들에서, 마더보드 상으로 직접 솔더링되어 보다 낮은 프로파일 솔루션을 제공하는 반면, 다른 실시예들에서, 디바이스들은 주어진 커넥터에 의해 마더보드에 연결되는 하나 이상의 메모리 모듈로서 구성된다. 물론, 다른 타입의 메모리 모듈들, 예를 들면, 제한적인 것은 아니지만 microDIMM, MiniDIMM을 포함하는 상이한 종류들의 DIMM(dual inline memory module)과 같은 다른 메모리 구현들이 가능하다. 특정한 예시적인 실시예에서, 메모리는 2GB와 16GB 사이의 크기이며, BGA(ball grid array)를 통해 마더보드 상으로 솔더링되는 DDR3LM 패키지 또는 LPDDR2 또는 LPDDR3 메모리로서 구성될 수 있다.
데이터, 애플리케이션, 하나 이상의 운영 체제 등과 같은 정보의 지속적인 저장을 제공하기 위해, 대용량 저장장치(1320)가 프로세서(1310)에 또한 연결될 수 있다. 다양한 실시예들에서, 보다 얇고 보다 가벼운 시스템 설계를 가능하게 할 뿐만 아니라 시스템 응답성을 개선하기 위해, 이러한 대용량 저장장치는 SSD를 통해 구현될 수 있다. 그러나, 다른 실시예들에서, 대용량 저장장치는 하드 디스크 드라이브(HDD)를 이용하여 기본적으로 구현될 수 있으며, 보다 적은 양의 SSD 저장장치가 시스템 활동들의 재개시에 대해 고속 파워업이 발생되도록 파워 다운 이벤트들 동안에 콘텍스트 상태 및 다른 그러한 정보의 비휘발성 저장을 가능하게 하기 위한 SSD 캐시로서 작용한다. 또한, 도 13에 도시된 바와 같이, 플래시 디바이스(1322)가 예를 들면, SPI(serial peripheral interface)를 통해 프로세서(1310)에 연결될 수 있다. 이러한 플래시 디바이스는 BIOS(basic input/output software)를 포함하는 시스템의 소프트웨어 뿐만 아니라 시스템의 다른 펌웨어의 비휘발성 저장을 제공할 수 있다.
다양한 실시예들에서, 시스템의 대용량 저장장치는 SSD 단독에 의해서, 또는 SSD 캐시를 갖는 디스크, 광학 또는 다른 드라이브로서 구현된다. 일부 실시예들에서, 대용량 저장장치는 RST(restore) 캐시 모듈과 함께 SSD 또는 HDD로서 구현된다. 다양한 구현들에서, HDD는 320GB 내지 4TB(terabyte) 및 그 이상 사이의 저장을 제공하는 반면, RST 캐시는 24GB 내지 256GB의 용량을 갖는 SSD로 구현된다. 그러한 SSD 캐시는 SLC(single level cache) 또는 MLC(multi-level cacht) 옵션으로서 구성되어, 적절한 레벨의 응답성을 제공할 수 있다. SSD 단독 옵션에서, 모듈은 mSATA 또는 NGFF 슬롯과 같은 다양한 위치들에 수용될 수 있다. 예로서, SSD는 120GB 내지 1TB 범위의 용량을 갖는다.
다양한 입/출력(IO) 디바이스들이 시스템(1300) 내에 제공될 수 있다. 도 13의 실시예에서는, 섀시의 뚜껑 부분 내에 구성된 고선명 LCD 또는 LED 패널일 수 있는 디스플레이(1324)가 구체적으로 도시된다. 이러한 디스플레이 패널은 터치 스크린(1325)을 또한 제공할 수 있으며, 터치 스크린(1325)는 예를 들면, 사용자의 이러한 터치 패널과의 상호작용을 통해, 사용자 입력들이 시스템에 제공되어, 예를 들면, 정보의 디스플레이, 정보의 액세스 등과 관련된 원하는 동작들을 가능하게 하도록, 디스플레이 패널을 통해 외부적으로 적응된다. 일 실시예에서, 디스플레이(1324)는 고성능 그래픽 상호접속으로서 구현될 수 있는 디스플레이 상호접속을 통해 프로세서(1310)에 연결될 수 있다. 터치 스크린(1325)은, 일 실시예에서, I2C 상호접속일 수 있는 다른 상호접속을 통해 프로세서(1310)에 연결될 수 있다. 도 13에 더 도시된 바와 같이, 터치 스크린(1325) 이외에도, 터치에 의한 사용자 입력이 섀시 내에 구성될 수 있는 터치 패드(1330)를 통해 또한 발생될 수 있으며, 또한 터치 스크린(1325)과 동일한 I2C 상호접속에 연결될 수 있다.
디스플레이 패널은 다수의 모드에서 동작할 수 있다. 제1 모드에서, 디스플레이 패널은 디스플레이 패널이 가시광에 대해 투명한 투명 상태로 배열될 수 있다. 다양한 실시예들에서, 다수의 디스플레이 패널은 주변 부근의 베젤을 제외한 디스플레이일 수 있다. 시스템이 노트북 모드에서 동작하고, 디스플레이 패널이 투명 상태에서 동작할 때, 사용자는 디스플레이 패널 상에 제공되는 정보를 볼 수 있으며, 또한 디스플레이 뒤의 물체들을 볼 수 있다. 또한, 디스플레이 패널 상에 디스플레이된 정보는 디스플레이 뒤에 위치한 사용자가 볼 수 있다. 또는, 디스플레이 패널의 동작 상태는 가시광이 디스플레이 패널을 통해 투과하지 못하는 불투명 상태일 수 있다.
태블릿 모드에서, 베이스 패널의 바닥 표면이 표면 상으로 되거나 또는 사용자가 들고 있을 때, 시스템은 디스플레이 패널의 후면 디스플레이 표면이 그것이 사용자를 향해 바깥쪽으로 향하는 위치에 있도록 접혀져서 덮이게 된다. 동작의 태블릿 모드에서, 후면 디스플레이 표면은 디스플레이 및 사용자 인터페이스의 역할을 수행하는데, 이러한 표면은 터치 스크린 기능을 가질 수 있고, 태블릿 디바이스와 같은 종래의 터치 스크린 디바이스의 다른 알려진 기능들을 수행할 수 있기 때문이다. 이를 위해, 디스플레이 패널은 터치 스크린층과 전면 디스플레이 표면 사이에 배치되는 투명성 조절층을 포함할 수 있다. 일부 실시예들에서, 투명성 조절층은 일렉트로크로믹 층(EC), LCD 층, 또는 EC와 LCD 층들의 조합일 수 있다.
다양한 실시예들에서, 디스플레이는 상이한 크기들, 예를 들면, 11.6" 또는 13.3" 스크린일 수 있으며, 16:9 종횡비, 및 적어도 300nit 밝기를 가질 수 있다. 또한, 디스플레이는 풀 HD(full high definition) 해상도(적어도 1920x1080p)일 수 있으며, eDP(embedded display port)와 호환되고, 패널 자체 리프레시를 갖는 저전력 패널일 수 있다.
터치 스크린 성능에 관하여, 시스템은 멀티-터치 용량성이며, 적어도 5 핑거 가능한 디스플레이 멀티-터치 패널을 제공할 수 있다. 일부 실시예에서, 디스플레이는 10 핑거 가능할 수 있다. 일 실시예에서, 터치 스크린은 "핑거 번(finger burn)"을 감소시키고, "핑거 스킵핑(finger skipping)"을 피하도록 낮은 마찰을 위해, 손상 및 스크래치 저항성 유리 및 코팅(예를 들면, Gorilla GlassTM 또는 Gorilla Glass 2TM) 내에 수용된다. 강화된 터치 경험 및 응답성을 제공하기 위해, 터치 패널은, 일 실시예에서, 핀치 줌(pinch zoom) 동안 정적인 뷰(static view)당 2 프레임(30Hz)보다 작은 것과 같은 멀티-터치 기능, 및 200ms(래그 온 핑거 투 포인터(lag on finger to pointer))에서 프레임(30Hz)당 1cm보다 작은 단일-터치 기능을 갖는다. 디스플레이는, 일부 실시예들에서, 패널 표면과 같은 높이인 최소 스크린 베젤을 갖는 에지-투-에지(edge-to-edge) 유리를 지원하며, 멀티-터치를 이용할 때 제한된 IO 간섭을 갖는다.
지각적인 컴퓨팅(perceptual computing) 및 다른 목적들을 위해, 다양한 센서들이 시스템 내에 제공될 수 있으며, 상이한 방식들로 프로세서(1310)에 연결될 수 있다. 특정한 관성 및 환경 센서들이 센서 허브(1340)를 통해, 예를 들면, I2C 상호접속을 경유하여 프로세서(1310)에 연결될 수 있다. 도 13에 도시된 실시예에서, 이들 센서들은 가속도계(1341), ALS(ambient light sensor)(1342), 나침반(1343) 및 자이로스코프(1344)를 포함할 수 있다. 다른 환경 센서들은 일부 실시예들에서 시스템 관리 버스(SMBus)를 통해 프로세서(1310)에 연결되는 하나 이상의 열 센서들(1346)을 포함할 수 있다.
플랫폼에 제공된 다양한 관성 및 환경 센서들을 이용하여, 많은 상이한 사용의 경우들이 실현될 수 있다. 이들 사용의 경우들은 지각적인 컴퓨팅을 포함하는 진보된 컴퓨팅 동작들을 가능하게 하며, 또한 전력 관리/배터리 수명, 보안, 및 시스템 응답성에 관한 개선이 가능하게 한다.
예를 들어, 전력 관리/배터리 수명 이슈에 관하여, 주변광 센서로부터의 정보에 적어도 부분적으로 기초하여, 플랫폼의 위치에서의 주변광 조건들이 결정되고, 디스플레이의 세기가 그에 따라 제어된다. 따라서, 특정한 광 조건들에서 디스플레이 동작시에 소모된 전력이 감소된다.
보안 동작들에 관하여, 위치 정보와 같은, 센서들로부터 얻어진 콘텍스트 정보에 기초하여, 사용자가 특정한 보안 문서들을 액세스하는 것이 허용되는지 여부가 결정될 수 있다. 예를 들어, 사용자는 작업장 또는 홈 위치에서 그러한 문서들을 액세스하도록 허용될 수 있다. 그러나, 사용자는 플램폼이 공공 장소에서 제공될 때 그러한 문서들을 액세스하는 것이 방지된다. 이러한 결정은, 일 실시예에서, 예를 들면, GPS 센서 또는 랜드마크들의 카메라 인식을 통해 결정된 위치 정보에 기초한다. 다른 보안 동작들은 서로의 근접한 범위 내에, 예를 들면, 본 명세서에서 기술된 바와 같은 휴대용 플랫폼 및 사용자의 데스크탑 컴퓨터, 모바일 전화 등의 디바이스들의 페어링을 제공하는 것을 포함할 수 있다. 특정한 공유가, 일부 구현들에서, 이들 디바이스들이 그렇게 페어링될 때에 근거리 통신을 통해 실현된다. 그러나, 디바이스들이 특정 범위를 벗어날 때, 그러한 공유는 디스에이블링될 수 있다. 더욱이, 본 명세서에서 기술된 바와 같은 플랫폼과 스마트폰을 페어링하는 경우, 디바이스가 서로로부터 미리 결정된 거리보다 많이 이동할 때, 공공 장소에 있을 때, 알람이 트리거링되도록 구성될 수 있다. 반대로, 이들 페어링된 디바이스들이 안전한 장소, 예를 들면, 작업장 또는 홈 위치에 있을 때, 디바이스들은 그러한 알람을 트리거링하지 않으면서 이러한 미리 결정된 한계를 벗어날 수 있다.
센서 정보를 이용하여 응답성이 또한 개선될 수 있다. 예를 들어, 플랫폼이 저전력 상태에 있을 때에도, 센서들은 비교적 낮은 주파수에서 실행되도록 여전히 인에이블링될 수 있다. 따라서, 예를 들면, 관성 센서들, GPS 센서 등에 의해 결정된 플랫폼의 위치에서의 임의의 변경들이 결정된다. 그러한 변경들이 등록되지 않았다면, Wi-FiTM 액세스 포인트 또는 유사한 무선 인에이블러와 같은 이전의 무선 허브에 대한 보다 빠른 접속이 발생되는데, 이 경우에는 이용가능한 무선 네트워크 자원들을 스캔할 필요가 없기 때문이다. 따라서, 저전력 상태로부터 깨어 있을 때, 보다 큰 레벨의 응답성이 달성된다.
많은 다른 사용자 경우들이 본 명세서에서 기술된 바와 같은 플랫폼 내의 통합된 센서들을 통해 얻어진 센서 정보를 이용하여 인에이블링될 수 있으며, 위에서의 예들은 단지 예시를 위한 것임을 이해할 것이다. 본 명세서에서 기술된 시스템을 이용하여, 지각적인 컴퓨팅 시스템은 제스쳐 인식을 포함하는 대안적인 입력 양상들의 추가를 허용할 것이고, 시스템이 사용자 동작들 및 의도를 감지하게 할 수 있다.
일부 실시예들에서, 하나 이상의 적외선 또는 다른 열 감지 소자들, 또는 사용자의 존재 또는 이동을 감지하기 위한 임의의 다른 소자가 제공될 수 있다. 그러한 감지 요소들은 함께 동작하고, 순차적으로 동작하고, 또는 둘다인 다수의 상이한 요소들을 포함할 수 있다. 예를 들어, 감지 요소들은 광 또는 음향 투영과 같은 초기 감지를 제공하며, 그후 예를 들면, 초음파 전파 시간 카메라 또는 패턴화된 광 카메라에 의한 제스쳐 검출을 위한 감지가 뒤따른다.
또한, 일부 실시예들에서, 시스템은 조명된 라인을 생성하기 위한 광 생성기를 포함한다. 일부 실시예들에서, 이러한 라인은 가상 경계 또는 평면을 통과 또는 브레이크 스루하기 위한 사용자의 동작이 컴퓨팅 시스템과 작용하기 위한 의도로서 해석되는 가상 경계, 즉, 상상적인 또는 가상의 공간적 위치에 관한 시각적 신호(visual cue)를 제공한다. 일부 실시예들에서, 조명된 라인은 컴퓨팅 시스템이 사용자에 관하여 상이한 상태들로 천이함에 따라 색들을 변경할 수 있다. 조명된 라인은 공간에서의 가상 경계의 사용자에 대한 시각적 신호를 제공하는데 이용될 수 있으며, 사용자가 컴퓨터와 작용하고자 원하는 때를 결정하는 것을 포함하여, 시스템에 의해 사용자에 관한 컴퓨터의 상태에서의 천이들을 결정하는데 이용될 수 있다.
일부 실시예들에서, 컴퓨터는 사용자 위치를 감지하고, 컴퓨터와 작용하기 위한 사용자의 의도를 나타내는 제스쳐로서 가상 경계를 통한 사용자의 손의 이동을 해석하도록 동작한다. 일부 실시예들에서, 사용자가 가상 라인 또는 평면을 통과할 경우, 광 생성기에 의해 생성된 광이 변경되어, 사용자가 컴퓨터에 입력을 제공하기 위한 제스쳐들을 제공하기 위한 영역으로 진입하였다는 시각적 피드백을 사용자에게 제공한다.
디스플레이 스크린들은 사용자에 관해 컴퓨팅 시스템의 상태의 천이들의 시각적 표시들을 제공할 수 있다. 일부 실시예들에서, 제1 스크린은 하나 이상의 감지 요소들의 이용을 통한 것과 같이, 사용자의 존재가 시스템에 의해 감지되는 제1 상태에 제공된다.
일부 구현들에서, 시스템은 안면 인식에 의한 것과 같이, 사용자 아이덴티티를 감지하도록 작용한다. 여기서, 제2 스크린으로의 천이가, 컴퓨팅 시스템이 사용자 아이덴티티를 인식하였던 제2 상태에서 제공될 수 있으며, 이러한 제2 스크린은 사용자가 새로운 상태로 천이하였다는 시각적 피드백을 사용자에게 제공한다. 제3 스크린으로의 천이가, 사용자가 사용자의 인식을 확인하였던 제3 상태에서 발생될 수 있다.
일부 실시예들에서, 컴퓨팅 시스템은 사용자에 대한 가상 경계의 위치를 결정하기 위한 천이 메커니즘을 이용할 수 있으며, 여기서 가상 경계의 위치는 사용자 및 콘텍스트에 따라 변할 수 있다. 컴퓨팅 시스템은 조명된 라인과 같은 광을 생성하여, 시스템과 작용하기 위한 가상 경계를 나타낼 수 있다. 일부 실시예들에서, 컴퓨팅 시스템은 대기 상태에 있을 수 있으며, 광이 제1 색으로 생성될 수 있다. 컴퓨팅 시스템은 감지 요소들을 이용하여 사용자의 존재 및 이동을 감지하는 것에 의한 것과 같이, 사용자가 가상 경계를 지나가서 도달했는지의 여부를 검출할 수 있다.
일부 실시예들에서, 사용자가 (사용자의 손들이 가상 경계 라인보다 컴퓨팅 시스템에 더 근접한 것과 같이) 가상 경계를 교차한 것으로서 검출한다면, 컴퓨팅 시스템은 사용자로부터 제스쳐 입력을 수신하기 위한 상태로 천이할 수 있으며, 여기서 천이를 나타내기 위한 메커니즘이 제2 색으로 변경되는 가상 경계를 나타내는 광을 포함할 수 있다.
일부 실시예들에서, 컴퓨팅 시스템은 제스쳐 이동이 검출되었는지를 결정할 수 있다. 제스쳐 이동이 검출된다면, 컴퓨팅 시스템은 제스쳐 인식 프로세스로 진행할 수 있으며, 그러한 프로세스는 컴퓨팅 디바이스 내의 메모리에 위치할 수 있거나, 그렇지 않은 경우 컴퓨팅 디바이스에 의해 액세스될 수 있는 제스쳐 데이터 라이브러리로부터의 데이터의 이용을 포함할 수 있다.
사용자의 제스쳐가 인식된다면, 컴퓨팅 시스템은 입력에 응답하여 함수를 수행하고, 사용자가 가상 경계 내에 있는 경우 추가적인 제스쳐들을 수신하도록 리턴할 수 있다. 일부 실시예들에서, 제스쳐가 인식되지 않는다면, 컴퓨팅 시스템은 에러 상태로 천이할 수 있으며, 여기서 에러 상태를 나타내기 위한 메커니즘은 제3 색으로 변경되는 가상 경계를 나타내는 광을 포함할 수 있으며, 시스템은 사용자가 컴퓨팅 시스템과 작용하기 위한 가상 경계 내에 있는 경우 추가적인 제스쳐들을 수신하도록 리턴한다.
전술한 바와 같이, 다른 실시예들에서, 시스템은 적어도 2개의 상이한 모드, 즉, 태블릿 모드 및 노트북 모드로 이용될 수 있는 컨버터블 태블릿 시스템으로서 구성될 수 있다. 컨버터블 시스템은 2개의 패널, 즉, 디스플레이 패널 및 베이스 패널을 가짐으로써, 태블릿 모드에서는 2개의 패널들이 서로의 최상부 상의 스택에 배치되도록 한다. 태블릿 모드에서, 디스플레이 패널은 바깥쪽으로 향하며, 통상적인 태블릿들에서 발견되는 터치 스크린 기능을 제공할 수 있다. 노트북 모드에서, 2개의 패널들은 개방된 뚜껑이 달린 구성으로 배열될 수 있다.
다양한 실시예들에서, 가속도계는 적어도 50Hz의 데이터 레이트를 갖는 3-축 가속도계일 수 있다. 3-축 자이로스코프일 수 있는 자이로스코프가 또한 포함될 수 있다. 또한, 전자 나침반/자력계가 제공될 수 있다. 또한, 하나 이상의 근접 센서들(proximity sensors)이 제공될 수 있다(예를 들면, 사람이 시스템에 근접(또는 비근접)할 때를 감지하고, 배터리 수명을 연장하기 위해 전력/성능을 조절하도록 개방된 뚜껑에 대해). 가속도계, 자이로스코프 및 나침반을 포함하는 일부 OS들의 센서 퓨전 능력에 대해 개산된 특징들을 제공할 수 있다. 또한, RTC(real-time clock)를 갖는 센서 허브를 통해, 센서 메커니즘으로부터의 웨이크(wake)가, 시스템의 나머지가 저전력 상태에 있을 때 센서 입력을 수신하도록 실현될 수 있다.
일부 실시예들에서, 내부 뚜껑/디스플레이가 뚜껑이 폐쇄/개방되는 때를 나타내기 위한 스위치 또는 센서를 개방하고, 시스템을 접속된 대기 또는 접속된 대기 상태로부터 자동으로 깨우도록 하는데 이용될 수 있다. 다른 시스템 센서들은 내부 프로세서, 메모리 및 스킨 온도 모니터링을 위한 ACPI 센서들을 포함하고, 감지된 파라미터들에 기초하여 프로세서 및 시스템 동작 상태들에 대한 변경들이 가능하게 할 수 있다.
일 실시예에서, OS는 접속된 대기를 구현하는 Microsoft® Windows8 OS(본 명세서에서 Win8 CS 라고도 지칭됨)일 수 있다. 유사한 상태를 갖는 Windows 8 접속 대기 또는 다른 OS가, 본 명세서에서 기술된 바와 같은 플랫폼을 통해, 매우 낮은 울트라 아이들 전력을 제공하여, 애플리케이션들이 매우 낮은 전력 소비를 하면서, 예를 들면, 클라우드 기반 장소에 접속된 채로 유지되도록 할 수 있다. 플랫폼은 3개의 전력 상태, 즉, 스크린 온(정상), (디폴트 "오프" 상태로서의) 접속된 대기 및 셧다운(0 와트의 전력 소비)을 지원할 수 있다. 따라서, 접속된 대기 상태에서, 플랫폼은 스크린이 오프인 경우에도 (최소 전력 레벨들에서) 논리적으로 온(on)이다. 그러한 플랫폼에서, 부분적으로는 동작을 수행하기 위해 최저 전력 구성요소를 인에이블시키는 오프로드 기술로 인해, 애플리케이션들에 대해 투명하고 일정한 접속이 유지되도록 전력 관리가 수행될 수 있다.
또한, 도 13에서 보듯이, 다양한 주변 디바이스들이 LPC(low pin count) 상호접속을 통해 프로세서(1310)에 연결될 수 있다. 도시된 실시예에서, 다양한 구성요소들이 내장형 제어기(1335)를 통해 연결될 수 있다. 그러한 구성요소들은 (예를 들면, PS2 인터페이스를 통해 연결된) 키보드(1336), 팬(fan)(1337) 및 열 센서(1339)를 포함할 수 있다. 일부 실시예들에서, 터치 패드(1330)가 PS2 인터페이스를 통해 EC(1335)에 또한 연결될 수 있다. 또한, TCG(Trusted Computing Group) TPM(trusted platform module) 사양 버전 1.2(2003년 10월 2일자)에 따른 TPM(1338)과 같은 보안 프로세서가 이러한 LPC 상호접속을 통해 프로세서(1310)에 또한 연결될 수 있다. 그러나, 본 발명의 영역은 이와 관련하여 제한되지 않으며, 안전 정보의 안전 처리 및 저장이, 보안 코프로세서에서의 SRAM(static random access memory)과 같은 다른 보호된 장소에 존재하거나, 또는 SE(secure enclave) 프로세서 모드에 의해 보호될 때에만 암호해제되는 암호화된 데이터 부분들(encrypted data blobs)로서 존재할 수 있음을 이해할 것이다.
특정 구현에서, 주변 포트들은 HDMI(high definition media interface) 커넥터(전체 크기, 미니 또는 마이크로와 같은 상이한 폼 팩터들(form factors)일 수 있음), Universal Serial Bus Revision 3.0 사양(2008년 11월)에 따른 풀-사이즈 외부 포트들과 같은 하나 이상의 USP 포트들(적어도 하나는 시스템이 접속된 대기 상태에 있을 때 (스마트폰과 같은) USB 디바이스들의 충전을 위해 전력 공급을 받으며, AC 벽 전력에 플러깅됨)을 포함할 수 있다. 또한, 하나 이상의 ThunderboltTM 포트들이 제공될 수 있다. 다른 포트들은 풀 사이즈 SD-XC 카드 판독기와 같은 외부적으로 액세스가능한 카드 판독기 및/또는 WWAN을 위한 SIM 카드 판독기(예를 들면, 8 핀 카드 판독기)를 포함할 수 있다. 오디오를 위해, 스테레오 음향 및 마이크로폰 능력(예를 들면, 조합 기능)을 갖는 3.5mm 잭이 제공될 수 있으며, 잭 검출을 지원한다(예를 들면, 뚜껑에서의 마이크로폰을 이용한 헤드폰 전용 지원 또는 케이블에 있는 마이크로폰을 갖는 헤드폰). 일부 실시예들에서, 이러한 잭은 스테레오 헤드폰과 스테레오 마이크로폰 입력 사이에서 리태스크어블(re-taskable)일 수 있다. 또한, 파워 잭이 AC 브릭(brick)에 대한 연결을 위해 제공될 수 있다.
시스템(1300)은 무선을 포함하는 다양한 방식으로 외부 디바이스들과 통신할 수 있다. 도 13에 도시된 실시예에서, 각각 특정 통신 프로토콜에 대해 구성된 무선장치에 대응할 수 있는 다양한 무선 모듈들이 제공된다. 근거리와 같은 짧은 범위에서의 무선 통신을 위한 한 가지 방식은, 일 실시예에서, SMBus를 통해 프로세서(1310)와 통신할 수 있는 NFC(near field communication) 유닛(1345)을 통한 것일 수 있다. 이러한 NFC 유닛(1345)을 통해, 서로 근접한 디바이스들이 통신할 수 있음을 주지해야 한다. 예를 들어, 사용자는 시스템(1300)이, 2개의 디바이스들을 함께 가까운 관계로 적응시키고, 식별 정보 지불 정보, 이미지 데이터와 같은 데이터 등과 같은 정보의 전송을 인에이블링함으로써 사용자의 스마트폰과 같은 다른 (예로써) 휴대용 디바이스와 통신할 수 있게 한다. 무선 전력 전송이 NFC 시스템을 이용하여 또한 수행될 수 있다.
본 명세서에서 기술된 NFC 유닛을 이용하여, 사용자들은 하나 이상의 디바이스들의 코일들 사이의 커플링을 레버리징함으로써 (근거리 통신 및 무선 전력 전송(WPT)과 같이) 근거리 커플링 기능들을 위해 디바이스들을 수평으로 범프하고, 디바이스들을 나란히 위치시킬 수 있다. 보다 구체적으로, 실시예들은 전략적으로 형상을 갖고, 위치되는 페라이트 재료를 디바이스들에 제공함으로써, 코일들의 보다 우수한 커플링을 제공한다. 각각의 코일은, 시스템에 대한 공통 공진 주파수를 인에이블링하기 위해 시스템의 저항성, 용량성 및 다른 특징들과 함께 선택될 수 있는, 그와 관련된 인덕턴스를 갖는다.
도 13에 더 도시된 바와 같이, 추가적인 무선 유닛들은 WLAN 유닛(1350) 및 블루투스 유닛(1352)을 포함하는 다른 짧은 범위 무선 엔진들을 포함할 수 있다. WLAN 유닛(1350)을 이용함으로써, IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따른 Wi-FiTM 통신들이 실현될 수 있으며, 블루투스 유닛(1352)을 통해서는 블루투스 프로토콜을 통한 짧은 범위 통신들이 발생될 수 있다. 이들 유닛들은 예를 들면, USB 링크 또는 UART(universal asynchronous receiver transmitter) 링크를 통해 프로세서(1310)와 통신할 수 있다. 또는, 이들 유닛들은 예를 들면, PCI ExpressTM Specification Base Specification 버전 3.0(2007년 1월 17일 발행)에 따른 PCIeTM(Peripheral Component Interconnect ExpressTM) 프로토콜, 또는 SDIO(serial data input/output) 표준과 같은 다른 그러한 프로토콜에 따른 상호접속을 통해 프로세서(1310)에 연결될 수 있다. 물론, 하나 이상의 애드인 카드(add-in cards) 상에 구성될 수 있는 이들 주변 디바이스들 사이의 실제 물리적 접속은 마더보드에 적응된 NGFF 접속을 통한 것일 수 있다.
또한, 예를 들면, 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신들이, 이번에는 SIM(subscriber identity module)(1357)에 연결될 수 있는 WWAN 유닛(1356)을 통해 발생될 수 있다. 또한, 위치 정보의 수신 및 이용이 가능하도록, GPS 모듈(1355)이 제공될 수도 있다. 도 13에 도시된 실시예에서, WWAN 유닛(1356) 및 카메라 모듈(1354)과 같은 통합된 캡쳐 디바이스가, USB 2.0 또는 3.0 링크, 또는 UART 또는 I2C 프로토콜과 같은 소정의 USB 프로토콜을 통해 통신할 수 있음을 주지해야 한다. 다시, 이들 유닛들의 실제 물리적 접속은 마더보드 상에 구성된 NGFF 커넥터에 대한 NGFF 애드인 카드의 적응을 통한 것일 수 있다.
특정 실시예에서, 무선 기능은 예를 들면, Windows 8 CS에 대한 지원을 갖는 WiFiTM 802.11ac 솔루션(예를 들면, IEEE 802.11abgn과 역으로 호환되는 애드인 카드)을 이용하여 모듈식으로 제공될 수 있다. 이러한 카드는 (예를 들면, NGFF 어댑터를 통해) 내부 슬롯에 구성될 수 있다. 추가적인 모듈이 블루투스 능력(예를 들면, 역방향 호환을 갖는 블루투스 4.0) 뿐만 아니라, Intel® Wireless Display 기능을 제공할 수 있다. 또한, NFC 지원이 분리된 디바이스 또는 다기능 디바이스를 통해 제공될 수 있으며, 예로서, 용이한 액세스를 위해 섀시의 전면 우측 부분에 위치될 수 있다. 더 추가적인 모듈로서, 3G/4G/LTE 및 GPS에 대한 지원을 제공할 수 있는 WWAN 디바이스가 있을 수 있다. 이 모듈은 내부(예를 들면, NGFF) 슬롯에서 구현될 수 있다. 통합된 안테나 지원이 WiFiTM, 블루투스, WWAN, NFC 및 GPS를 위해 제공될 수 있으며, WiFiTM으로부터 Wireless Gigabit Specification(2010년 7월)에 따른 WWAN 무선장치, 무선 기가비트(WiGig)로의 끊김 없는 천이, 및 그 반대로의 천이를 가능하게 한다.
전술한 바와 같이, 통합된 카메라가 뚜껑에 포함될 수 있다. 일례로서, 이러한 카메라는, 예를 들면, 적어도 2.0 MP(megapixel)을 가지며 6.0 MP 이상으로 확장되는 고해상도 카메라일 수 있다.
오디오 입력들 및 출력들을 제공하기 위해, 오디오 프로세서가 DSP(digital signal processor)(1360)를 통해 구현될 수 있으며, DSP(1360)는 HDA(high definition audio) 링크를 통해 프로세서(1310)에 연결될 수 있다. 유사하게, DSP(1360)는 섀시 내에 구현될 수 있는 출력 스피커들(1363)에 연결될 수 있는 통합된 CODEC(coder/decoder) 및 증폭기(1362)와 통신할 수 있다. 유사하게, 증폭기 및 CODEC(1362)은 시스템 내의 다양한 동작들의 음성 활성화 제어(voice-activated control)가 가능하도록 고품질 오디오 입력들을 제공하기 위한 (디지털 마이크로폰 어레이와 같은) 듀얼 어레이 마이크로폰들을 통해 구현될 수 있는 마이크로폰(1365)으로부터 오디오 입력들을 수신하도록 연결될 수 있다. 또한, 오디오 출력들이 증폭기/CODEC(1362)으로부터 헤드폰 잭(1364)으로 제공될 수 있음을 주지해야 한다. 비록 도 13의 실시예에서의 이러한 특정 구성요소들을 이용하여 도시되지만, 본 발명의 범주는 이와 관련하여 제한되지 않음을 이해할 것이다.
특정 실시예에서, 디지털 오디오 코덱 및 증폭기는 스테레오 헤드폰 잭, 스테레오 마이크로폰 잭, 내부 마이크로폰 어레이 및 스테레오 스피커들을 구동할 수 있다. 다른 구현들에서, 코덱은 오디오 DSP 내에 통합되거나, 또는 HD 오디오 경로를 통해 PCH(peripheral controller hub)에 연결될 수 있다. 일부 구현들에서, 통합된 스테레오 스피커들 이외에, 하나 이상의 배스(bass) 스피커들이 제공될 수 있으며, 스피커 솔루션은 DTS 오디오를 지원할 수 있다.
일부 실시예들에서, 프로세서(1310)는 외부 전압 레귤레이터(voltage regulator; VR), 및 FIVR(fully integrated voltage regulator)로서 지칭되는, 프로세서 다이 내부에 통합되는 다수의 내부 전압 레귤레이터들에 의해 전력을 공급받을 수 있다. 프로세서에서 다수의 FIVR을 이용하는 것은 구성요소들이 분리된 전력 플레인들로 그룹화될 수 있도록 하여, 그룹 내의 구성요소들에 대해서만 FIVR에 의해 전력이 조정 및 공급되도록 한다. 전력 관리 동안, 하나의 FIVR의 주어진 전력 플레인은, 프로세서가 특정한 낮은 전력 상태로 될 때 파워 다운 또는 오프될 수 있으며, 다른 FIVR의 다른 전력 플레인은 액티브 또는 완전히 전력공급된 채로 유지된다.
일 실시예에서, 지속 전력 플레인(sustain power plane)이 프로세서와 PCH 사이의 인터페이스, 외부 VR과의 인터페이스 및 EC(1335)와의 인터페이스와 같은 몇 개의 I/O 신호들에 대한 I/O 핀들에 전력을 공급하기 위해 일부 딥 슬립(deep sleep) 상태들 동안에 이용될 수 있다. 또한, 지속 전력 플레인은 전력 콘텍스트가 슬립 상태 동안에 저장되는 온보드 SRAM 또는 다른 캐시 메모리를 지원하는 온다이 전압 레귤레이터에 전력을 공급한다. 지속 전력 플레인은 또한, 다양한 웨이크업 소스 신호들을 모니터링 및 처리하는 프로세서의 웨이크업 로직에 전력을 공급하는데 이용된다.
전력 관리 동안, 다른 전력 플레인들이 프로세서가 특정한 딥 슬립 상태들로 진입할 때에 파워 다운 또는 오프되는 반면, 지속 전력 플레인은 전술한 구성요소들을 지원하도록 파워 온으로 유지된다. 그러나, 이것은 그러한 구성요소들이 필요하지 않은 경우에 불필요한 전력 소비 또는 소산을 초래할 수 있다. 이를 위해, 실시예들은 전용의 전력 플레인을 이용하여 프로세서 콘텍스트를 유지하기 위해 접속된 대기 슬립 상태를 제공할 수 있다. 일 실시예에서, 접속된 대기 슬립 상태는 그 자체가 프로세서와의 패키지에 제공될 수 있는 PCH의 자원들을 이용하여 프로세서 웨이크업을 용이하게 한다. 일 실시예에서, 접속된 대기 슬립 상태는 프로세서 웨이크업 때까지 PCH에서 프로세서 아키텍처 기능들을 지속하는 것을 가능하게 하며, 이것은 모든 클록들의 턴 오프를 포함하는, 딥 슬립 상태들 동안에 파워 온으로 이전에 남겨져 있었던 불필요한 프로세서 구성요소들 전부를 턴 오프할 수 있다. 일 실시예에서, PCH는 TSC(time stamp counter) 및 접속된 대기 로직을 포함하여, 접속된 대기 상태 동안 시스템을 제어한다. 지속 전력 플레인에 대한 통합된 전압 레귤레이터가 PCH 상에 마찬가지로 위치될 수 있다.
일 실시예에서, 접속된 대기 상태 동안, 통합된 전압 레귤레이터가 프로세서가 딥 슬립 상태들 및 접속된 대기 상태로 진입할 때의 임계 상태 변수들과 같은 프로세서 콘텍스트가 저장되는 전용의 캐시 메모리를 지원하도록 파워 온으로 유지되는 전용의 전력 플레인으로서 기능할 수 있다. 이러한 임계 상태는 아키텍처, 마이크로-아키텍처, 디버그 상태와 관련된 상태 변수들, 및/또는 프로세서와 관련된 유사한 상태 변수들을 포함할 수 있다.
EC(1335)로부터의 웨이크업 소스 신호들이 접속된 대기 상태 동안에 프로세서 대신에 PCH에 송신되어, PCH가 프로세서 대신에 웨이크업 처리를 관리할 수 있다. 또한, TSC가 PCH에 유지되어, 프로세서 아키텍처 기능들을 지속하는 것을 가능하게 한다. 도 13의 실시예에서의 이들 특정 구성요소들로 도시되지만, 본 발명의 영역은 이와 관련하여 제한되지 않음을 이해할 것이다.
프로세서에서의 전력 제어는 강화된 전력 보존을 초래할 수 있다. 예를 들어, 전력은 코어들 사이에서 동적으로 할당될 수 있으며, 개별적인 코어들은 주파수/전압을 변경할 수 있고, 다수의 딥 저전력 상태들이 매우 낮은 전력 소비를 가능하게 하도록 제공될 수 있다. 또한, 코어들 또는 독립적인 코어 부분들의 동적인 제어는, 구성요소들이 이용되고 있지 않을 때에 그 구성요소들을 파워 오프함으로써 감소된 전력 소비를 제공할 수 있다.
일부 구현들은 PMIC(specific power management IC)를 제공하여 플랫폼 전력을 제어할 수 있다. 이러한 솔루션을 이용하여, 시스템은 Win8 접속된 대기 상태에 있을 때와 같이 주어진 대기 상태에 있을 때 확장된 지속기간(예를 들면, 16 시간)에 걸쳐 매우 낮은 (예를 들면, 5% 미만의) 배터리 저하를 볼 수 있다. Win8 아이들 상태에서 예를 들면, 9 시간을 초과하는 배터리 수명이 실현될 수 있다(예를 들면, 150nit에서). 비디오 재생에 관하여, 긴 배터리 수명이 실현될 수 있으며, 예를 들면, 풀HD 비디오 재생이 최소 6 시간 동안 발생될 수 있다. 일 실시예에서의 플랫폼은, 예를 들면, SSD를 이용한 Win8 CS에 대해 35 Whr(watt hours), 그리고 RST 캐시 구성을 갖는 HDD를 이용한 Win8 CS에 대해 (예를 들면) 40-44 Whr의 에너지 성능을 가질 수 있다.
특정한 구현은 대략 25W TDP 설계 포인트까지의 구성가능한 CPU TDP를 가지고, 15W 공칭 CPU 열 설계 전력(thermal design power; TDP)에 대한 지원을 제공할 수 있다. 플랫폼은 전술한 열 특징들 때문에 최소의 환기구(vent)들을 포함할 수 있다. 또한, 플랫폼은 (고온 공기가 사용자에게 불지 않는다는 점에서) 필로우-프렌들리(pillow-friendly)이다. 섀시 재료에 따라, 상이한 최대 온도 포인트들이 실현될 수 있다. (적어도 플라스틱의 뚜껑 또는 베이스 부분을 가져야 하는) 플라스틱 섀시의 일 구현에서, 최대 동작 온도는 52oC일 수 있다. 그리고, 금속 섀시의 구현의 경우, 최대 동작 온도는 46oC일 수 있다.
다른 구현들에서, TPM과 같은 보안 모듈이 프로세서 내로 통합될 수 있으며, 또는 TPM 2.0 디바이스와 같은 이산적인 디바이스일 수 있다. PTT(Platform Trust Technology) 라고도 지칭되는 통합된 보안 모듈을 이용함으로써, BIOS/펌웨어는 안전 키보드 및 디스플레이와 같은 안전 사용자 인터페이스들과 함께, 안전 인스트럭션들, 안전 부트, Intel® Anti-Theft Technology, Intel® Identity Protection Technology, Intel® Tursted Execution Technology(TXT) 및 Intel® Manageability Engine Technology를 포함하는 특정한 보안 특징들에 대한 특정 하드웨어 특징들을 노출할 수 있다.
본 명세서에서 기술된 실시예들은 현재의 시스템들에 비하여 몇 가지의 이점들 및 차이점들을 제공한다. 분배형 코히어런트 및 메모리 패브릭 아키텍처는 메모리 코히어런시를 유지하고 정확한 오더링을 시행하면서 캐싱 및 비캐싱 에이전트들에 의한 캐시라인들에 대한 공유된 액세스를 위한 지원을 포함하는, 병렬 파이프라인들의 이용을 통해 캐싱 에이전트들 및 비캐싱 에이전트들에 대한 동시 액세스들을 가능하게 한다. 병렬 파이프라인들의 이용은 단일의 파이프라인을 이용하는 통상적인 아키텍처들 하에서 이용가능한 것보다 큰 메모리 처리량을 가능하게 한다. 캐싱 및 비캐싱 에이전트들 둘다에 대한 메모리 자원들에 대한 공유된 액세스를 제공함으로써, 아키텍처들은 독립적으로 동작되고 공유된 액세스를 제공하지 않는 캐싱 및 비캐싱 에이전트들에 대해 분리된 파이프라인들을 이용하는 현존 방안들에 비하여 개선점들을 제공한다. 어드레스 매칭 하드웨어와 오더링 하드웨어를 연결해제함으로써, 아키텍처는 정확한 오더링 동작을 유지하면서, I/O 요청들에 대해 고성능, 분배된 충돌 체크를 가능하게 한다. 위에서 기술된 방법을 이용하여 다수의 가상 채널들을 보다 적은 충돌 섀시들로 맵핑함으로써, 아키텍처는 요구되는 QoS를 달성하면서, 전형적인 시스템들이 각각의 가상 채널에 대한 전용 자원들로 통상적으로 초래하게 되는 관련된 영역 오버헤드를 감소시킨다.
이하의 예들은 다른 실시예들과 관련된다. 일실시예에서, 방법은 적어도 하나의 I/O 패브릭을 포함하는 I/O 상호접속 계층구조 및 메모리 패브릭을 포함하는 컴퓨터 시스템에서의 프로세서 코어 또는 CPU를 포함하는 개시자로부터 트랜잭션을 개시 -트랜잭션은 메모리 패브릭 또는 I/O 패브릭을 통해 액세스되는 트랜잭션에 대한 타겟과 관련된 보호된 자산을 액세스하도록 요청함 - 하고, 개시자 외부에서, 개시자가 신뢰된 실행 모드에서 동작하고 있음을 식별하는 표시와 결합하여 개시자의 아이덴티티에 기초하여 불변의 보안 속성들을 생성 - 표시는 개시자 외부에 저장됨 - 하고, 트랜잭션 및 불변의 보안 속성들을 타겟 쪽으로 전달하고, 개시자가 하나 이상의 신뢰된 실행 모드에서 실행중인 경우 개시자에 의해 개시된 트랜잭션에 대해 보호된 자산에 대한 액세스가 허용되는 보호된 자산에 대한 액세스 정책을 구현하고, 불변의 보안 속성들을 이용하여 액세스 정책을 시행하는 것을 포함한다. 일 실시예에서, 방법은 신뢰된 실행 모드에서 개시자를 동작하는 동안, 개시자의 현재 실행 모드가 신뢰된 실행 모드임을 나타내는, 개시자 외부의 현재 모드 표시를 설정하는 것을 더 포함한다. 일 실시예에서, 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고, 방법은 트랜잭션이 개시자의 현재 실행 모드로 개시자 외부의 모드 레지스터를 갱신하기 위한 것임을 나타내는 표시를 포함하는 제2 트랜잭션 이전에 개시자로부터의 제1 트랜잭션을 개시하고, 제1 트랜잭션에 대응하는 불변의 보안 속성들을 생성하고, 보안 속성들을 모드 레지스터에 전달하고, 개시자의 현재 실행 모드를 나타내는 표시로 모드 레지스터를 갱신하는 것을 더 포함한다. 일 실시예에서, 방법은 불변의 보안 속성들이 모드 레지스터에 대한 액세스가 허용됨을 나타내는 경우 모드 레지스터에 대한 액세스를 허용하는 액세스 정책을 불변의 보안 속성들의 이용을 통해 시행하는 것을 더 포함한다.
본 방법의 실시예에서, 불변의 보안 속성들의 생성은 개시자에 의해 생성된 보안 표시에 더 기초한다. 일 실시예에서, 불변의 보안 속성들의 생성은 트랜잭션이 미리 결정된 타입의 I/O 트랜잭션이라는 결정에 더 기초한다. 일 실시예에서, 신뢰된 실행 모드는 마이크로코드 실행 모드이다. 일 실시예에서, 타겟은 메모리 제어기를 통해 메모리 패브릭에 동작가능하게 연결된 시스템 메모리를 포함하고, 액세스 정책은 메모리 제어기에서 시행된다.
일 실시예에서, 개시자는 시스템 에이전트에 연결된 프로세서 코어를 포함하고, 보안 속성들은 시스템 에이전트에서의 내장된 로직에 의해 생성된다. 일 실시예에서, 보안 속성들은 메모리 패브릭에서의 내장된 로직에 의해 생성된다.
다른 실시예들에 따르면, 장치는 전술한 방법 동작들을 수행하기 위한 수단으로 구성된다. 일 실시예에서, 장치는 복수의 프로세서 코어들 - 적어도 하나의 프로세서 코어는 적어도 하나의 신뢰된 실행 모드 및 적어도 하나의 비신뢰된 실행 모드를 포함하는 다수의 실행 모드에서 실행하도록 구성됨 -, 각각의 프로세서 코어가 동작가능하게 연결되는 메모리 패브릭, 복수의 I/O 패브릭을 포함하는 I/O 상호접속 계층구조, 복수의 I/O 패브릭을 포함하고, 계층구조의 최상위 레벨을 점유하며 I/O 인터페이스를 통해 메모리 패브릭에 동작가능하게 연결되는 기본 I/O 패브릭을 포함하는 I/O 상호접속 계층구조, 각각 I/O 패브릭에 연결되는 복수의 I/O 디바이스, 프로세서 코어들 각각에 대해 외부에 있으며 트랜잭션들에 대한 불변의 보안 속성들을 복수의 입력에서 수신된 입력 데이터의 함수로서 생성하도록 구성되는 보안 속성 생성 유닛, 및 트랜잭션이 트랜잭션에 대해 생성된 보안 속성들에 기초하여 액세스 정책 시행 블록과 관련된 보호된 자산에 대한 액세스가 허용되는 액세스인 액세스 정책을 시행하도록 각각 구성되는 복수의 액세스 정책 시행 블록을 포함한다. 메모리 제어기를 통해 메모리 패브릭에 동작가능하게 연결된 시스템 메모리를 포함하는 컴퓨터 시스템에서의 장치의 동작시에, 장치는 신뢰된 실행 모드에서 실행되는 프로세서 코어를 포함하는 개시자로부터의 트랜잭션을 개시 - 트랜잭션은 I/O 디바이스들 중 하나 또는 시스템 메모리 중 하나를 포함하는 타겟과 관련된 보호된 자산을 액세스하기 위한 요청을 포함함 -, 개시자가 신뢰된 실행 모드에서 동작중임을 나타내는 표시와 결합하여 개시자의 아이덴티티에 기초하여, 보안 속성 생성 유닛을 통해, 불변의 보안 속성들을 생성하고, 트랜잭션 및 불변의 보안 속성들을 타겟 쪽으로 전달하고, 보호된 자산과 관련된 액세스 정책 시행 블록을 통해, 그리고 불변의 보안 속성들의 이용을 통해, 보호된 자산에 대한 액세스 정책을 시행하도록 구성된다.
장치의 실시예에서, 보안 속성 생성 유닛에 대한 복수의 입력은 트랜잭션이 안전함을 나타내고 트랜잭션과는 분리되어 송신되는 입력을 포함한다. 실시예에서, 보안 속성 생성 유닛에 대한 복수의 입력은 트랜잭션을 특권의 I/O 트랜잭션으로서 식별하는 표시를 포함한다. 실시예에서, 복수의 프로세서 코어가 시스템 에이전트에 연결되고, 보안 속성 생성 유닛은 시스템 에이전트에서의 내장된 로직을 포함한다.
실시예에서, 장치는 보안 속성 생성 유닛의 입력에 연결된 모드 레지스터를 더 포함하고, 모드 레지스터는 프로세서 코어의 실행 모드를 식별하는 표시를 저장하도록 구성된다. 실시예에서, 장치는 실행 모드 표시가 모드 레지스터로 전송되게 하는 측대역 채널을 더 포함한다. 실시예에서, 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고, 컴퓨터 시스템에서의 장치의 동작시에, 장치는 트랜잭션이 개시자의 현재 실행 모드로 모드 레지스터를 갱신하기 위한 것임을 식별하는 표시를 포함하는 제2 트랜잭션 이전에 제1 트랜잭션을 개시하고, 제1 트랜잭션에 대응하는 보안 속성 생성 유닛에서 보안 속성들을 생성하고, 보안 속성들을 모드 레지스터로 전달하고, 개시자의 현재 실행 모드를 나타내는 표시로 모드 레지스터를 갱신하도록 더 구성된다. 실시예에서, 장치는 모드 레지스터로 송신된 메시지에 대한 보안 속성들에 포함된 표시에 기초하여 모드 레지스터에 대한 액세스를 허용 또는 거절하도록 구성된 액세스 정책 시행 로직을 더 포함한다.
다른 실시예들에 따르면, SOC는 복수의 프로세서 코어를 포함하는 CPU, CPU가 동작가능하게 연결되는 시스템 에이전트 - 시스템 에이전트는 CPU로부터 개시된 트랜잭션에 대한 불변의 보안 속성들을 생성하도록 구성된 보안 속성 생성 유닛을 포함하고, 보안 속성은 각각의 트랜잭션에 대한 CPU의 실행 모드를 식별함 -, 복수의 I/O 패브릭을 포함하고, 계층구조의 최상위 레벨을 점유하고 시스템 에이전트에 연결되는 기본 I/O 패브릭을 포함하는 I/O 상호접속 계층구조, 각각 I/O 패브릭에 연결되는 복수의 I/O 디바이스 - I/O 디바이스 중 적어도 하나는 하나 이상의 보호된 자산과 관련됨 -, 및 I/O 디바이스를 포함하는 타겟을 갖는 트랜잭션이 트랜잭션에 대해 생성된 보안 속성들에 기초하여 I/O 디바이스와 관련된 보호된 자산에 대한 액세스가 허용 또는 거절되는 I/O 디바이스와 관련된 하나 이상의 보호된 자산에 대한 액세스 정책을 시행하도록 각각 구성되는 복수의 액세스 정책 시행 블록을 포함한다. 컴퓨터 시스템에서의 SoC의 동작 동안, CPU로부터 발생되는 트랜잭션은, CPU가 비신뢰 실행 모드에서 동작중인 경우, 보호된 자산에 대한 액세스가 허용되지 않는다.
SoC의 실시예에서, 시스템 에이전트는 CPU의 실행 모드를 식별하는 표시가 저장되는 모드 레지스터를 더 포함하고, 보안 속성 생성 유닛이 모드 레지스터에 연결되고, 실행 모드 표시를 트랜잭션에 대한 보안 속성을 생성하는데 이용된 입력으로서 이용한다. 실시예에서, SoC는 CPU가 신뢰된 실행 모드에서 동작중임을 나타내기 위해 모드 레지스터에서의 실행 모드 표시를 갱신하기 위해 신뢰된 실행 모드에서 동작하는 동안 제1 트랜잭션이 CPU로부터 개시되고, 신뢰된 실행 모드에서 동작하는 동안 보호된 자산을 액세스하기 위해 제2 트랜잭션이 CPU로부터 개시되는, 보호된 자산들을 액세스하기 위한 멀티 레벨 보안 방안을 구현하도록 구성된다. 일 실시예에서, I/O 상호접속 계층구조는 제2 프로토콜을 갖는 제2 I/O 패브릭이 제1 프로토콜과 제2 프로토콜 사이에서 보안 속성들을 맵핑하도록 구성된 맵퍼를 갖는 브리지를 통해 연결되는 제1 프로토콜을 이용하는 제1 I/O 패브릭을 포함한다.
다른 실시예들에 따르면, 전술한 방법, 장치 및 SoC의 양상들을 구현하기 위한 시스템이 제공된다. 시스템은 복수의 처리 코어를 포함하는 CPU, 프로세서 코어 각각이 동작가능하게 연결되는 시스템 에이전트 - 시스템 에이전트는 메모리 제어기에 연결된 메모리 패브릭 및 CPU로부터 개시된 트랜잭션들에 대한 불변의 보안 속성들을 생성하도록 구성된 보안 속성 생성 유닛을 포함함 -, 적어도 하나의 다른 I/O 패브릭에 각각 연결되는 복수의 I/O 패브릭을 포함하는 I/O 상호접속 계층구조 - I/O 계층구조는 계층구조의 최상위 레벨을 점유하며 시스템 에이전트에 연결되는 기본 I/O 패브릭을 포함함 -, 각각 I/O 패브릭에 연결되며, 플래시 메모리 제어기를 포함하는 복수의 I/O 디바이스, 및 I/O 디바이스를 포함하는 타겟을 갖는 트랜잭션이 트랜잭션에 대해 생성된 보안 속성들에 기초하여 I/O 디바이스에서의 보호된 자산을 액세스하는 것이 허용 또는 거절되는 I/O 디바이스와 관련된 하나 이상의 보호된 자산에 대한 액세스 정책을 시행하도록 각각 구성되는 복수의 액세스 정책 시행 블록을 포함한다. 시스템은 메모리 제어기에 동작가능하게 연결된 시스템 메모리, 및 BIOS를 포함하는 제1 복수의 인스트럭션 및 저장된 운영 체제를 포함하는 제2 복수의 인스트럭션을 갖는 플래시 메모리 제어기에 동작가능하게 연결되는 플래시 메모리를 더 포함한다. 시스템의 동작시에, SoC는 신뢰된 모드에서 실행되는 프로세서 코어를 포함하는 개시자로부터의 트랜잭션을 개시 - 트랜잭션은 타겟 I/O 디바이스와 관련된 보호된 자산을 액세스하기 위한 요청을 포함함 - 하고, 개시자가 신뢰된 실행 모드에서 동작중임을 식별하는 표시와 결합하여 개시자의 아이덴티티에 기초하여, 보안 속성 생성 유닛을 통해, 불변의 보안 속성들을 생성하고, 트랜잭션 및 불변의 보안 속성들을 타겟 I/O 디바이스 쪽으로 전달하고, 타겟 I/O 디바이스와 관련된 액세스 정책 시행 블록을 통해, 그리고 불변의 보안 속성들의 이용을 통해, 보호된 자산에 대한 액세스 정책을 시행하도록 구성된다.
일 실시예에서, 시스템 에이전트는 보안 속성 생성 유닛의 입력에 연결된 모드 레지스터를 더 포함하고, 모드 레지스터는 프로세서 코어의 실행 모드를 식별하는 표시를 저장하도록 구성된다. 일 실시예에서, 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고, 시스템의 동작시에, SoC는 트랜잭션이 개시자의 현재 실행 모드로 모드 레지스터를 갱신하기 위한 것임을 식별하는 표시를 포함하는 제2 트랜잭션 이전에 제1 트랜잭션을 개시하고, 제1 트랜잭션에 대응하는 보안 속성 생성 유닛에서 불변의 보안 속성들을 생성하고, 불변의 보안 속성들을 모드 레지스터로 전달하고, 개시자의 현재 실행 모드를 나타내는 표시로 모드 레지스터를 갱신하도록 구성된다.
본 발명은 제한된 수의 실시예들에 대하여 기술되었지만, 본 기술 분야의 당업자라면 그것에 대한 여러 가지의 수정 및 변형을 이해할 것이다. 첨부된 청구항들은 본 발명의 진정한 사상 및 영역에 속하는 모든 그러한 수정 및 변형을 커버하는 것으로 의도된다.
설계는 생성으로부터 시뮬레이션을 거쳐서 제조하기 까지, 다양한 단계들을 겪을 수 있다. 설계를 나타내는 데이터는 다수의 방식으로 설계를 나타낼 수 있다. 먼저, 시뮬레이션에서 통상적인 것으로서, 하드웨어는 하드웨어 서술 언어 또는 다른 기능 서술 언어를 이용하여 표현될 수 있다. 추가적으로, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델이 설계 프로세스의 일부 단계들에서 생성될 수 있다. 더욱이, 일부 단계에서, 대부분의 설계들은 하드웨어 모델에서의 다양한 디바이스들의 물리적인 배치를 나타내는 데이터의 레벨에 도달하게 된다. 통상적인 반도체 제조 기술들이 이용되는 경우, 하드웨어 모델을 나타내는 데이터는 집적 회로를 생성하는데 이용된 마스크들에 대한 상이한 마스크 층들 상의 다양한 특징들의 존재 또는 부재를 지정하는 데이터일 수 있다. 설계에 대한 임의의 표현에서, 데이터는 임의의 형태의 비일시적 머신 판독가능 매체에 저장될 수 있다.
본 명세서에서 이용된 모듈 또는 구성요소는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합을 지칭한다. 예로서, 모듈 또는 구성요소는 마이크로제어기에 의해 실행되도록 적응된 코드를 저장하기 위한 비일시적 매체와 관련된 마이크로제어기와 같은 하드웨어를 포함한다. 따라서, 모듈 또는 구성요소에 대한 참조는, 일 실시예에서, 비일시적 매체 상에 유지될 코드를 인식 및/또는 실행하도록 구체적으로 구성되는 하드웨어를 지칭한다. 더욱이, 다른 실시예에서, 모듈 또는 구성요소의 이용은, 미리 결정된 동작들을 수행하기 위해 마이크로제어기에 의해 실행되도록 구체적으로 적응되는 코드를 포함하는 비일시적 매체를 지칭한다. 그리고, 추론할 수 있듯이, 다른 실시예에서, (이러한 예에서의) 모듈 이라는 용어는 마이크로제어기와 비일시적 매체의 조합을 지칭할 수 있다. 때때로, 분리된 것으로서 도시되는 모듈 및/또는 구성요소 경계들은 일반적으로 변하며, 잠재적으로 중첩된다. 예를 들어, 제1 및 제2 모듈은 일부 독립적인 하드웨어, 소프트웨어 또는 펌웨어를 잠재적으로 유지하면서, 하드웨어, 소프트웨어, 펌웨어, 또는 그들의 조합을 공유할 수 있다. 일 실시예에서, 로직 이라는 용어의 이용은, 트랜지스터, 레지스터와 같은 하드웨어, 또는 프로그래밍가능 로직 디바이스들과 같은 다른 하드웨어를 포함한다.
"동작가능하게 연결된" 이라는 문구의 이용은, 일 실시예에서, (예를 들면, 물리적 신호 경로들을 통해) 직접적으로 또는 (예를 들면, 그 사이에 배치되는 하나 이상의 구성요소들, 인터페이스들, 제어기들 등을 통해) 간접적으로 서로 연결되는 구성요소들, 로직, 및/또는 모듈들을 지칭한다. 또한, 일부 실시예들에서, 구성요소들, 로직, 및/또는 모듈들은 장치 또는 시스템이 동작할 때에 동작가능하게 연결될 수 있다. 예를 들어, 스위치 패브릭은 스위치 패브릭에 대한 다양한 인그레스 인터페이스들에서 수신된 신호들을 스위치 패브릭에 대해 선택된 이그레스 인터페이스들에 스위칭가능하게 연결하도록 구성되며, 따라서 통신시에 그러한 인그레스 및 이그레스 인터페이스들에 연결된 구성요소들을 선택가능하게 연결하게 된다.
"하도록(to)" 또는 "하도록 구성된(configured to)" 이라는 문구의 이용은, 일 실시예에서, 지정되거나 또는 결정된 작업을 수행하기 위해 장치, 하드웨어, 로직 또는 요소를 배열, 함께 배치, 제조, 판매를 위해 제공, 수입 및/또는 설계하는 것을 지칭한다. 이러한 예에서, 동작하지 않는 장치 또는 그 요소는 여전히, 지정된 작업을 수행하기 위해 그것이 설계되고, 연결되고, 및/또는 상호접속되는 경우, 지정된 작업을 수행 "하도록 구성"된다. 순수하게 예시적인 예로서, 로직 게이트는 동작 동안에 0 또는 1을 제공할 수 있다. 그러나, 클록에 대해 인에이블 신호를 제공 "하도록 구성된" 로직 게이트는, 1 또는 0을 제공할 수 있는 모든 잠재적인 로직 게이트를 포함하지 않는다. 그 대신에, 로직 게이트는 동작 동안에 1 또는 0 출력이 클록을 인에이블시키는 것인 일부 방식으로 연결된 것이다. 다시, "하도록 구성된" 이라는 용어의 이용이 동작을 요구하지는 않지만, 그 대신에, 장치, 하드웨어 및/또는 요소의 잠재 상태에 초점을 맞추고 있으며, 잠재 상태에서는 장치, 하드웨어 및/또는 요소가 동작중일 때 특정 작업을 수행하도록 장치, 하드웨어 및/또는 요소가 설계된다.
더욱이, '할 수 있는(capable of/to)' 및/또는 '동작가능한(operable to)' 이라는 문구의 이용은, 일 실시예에서, 지정된 방식으로 장치, 로직, 하드웨어 및/또는 요소를 이용할 수 있게 하는 방식으로 설계된 일부 장치, 로직, 하드웨어 및/또는 요소를 지칭한다. 위에서와 같이, '할 수 있는' 또는 '동작가능한' 이라는 문구의 이용은, 일 실시예에서, 장치, 로직, 하드웨어 및/또는 요소의 잠재 상태를 지칭하며, 여기서, 장치, 로직, 하드웨어 및/또는 요소가 동작하지는 않지만, 지정된 방식으로 장치의 이용을 가능하게 하는 방식으로 설계된다.
본 명세서에서 이용된 바와 같이, 값은 숫자, 상태, 논리 상태, 또는 이진 논리 상태의 임의의 알려진 표현을 포함한다. 때때로, 로직 레벨들, 로직 값들, 또는 논리 값들의 이용은 1들 및 0들로서 또한 지칭되며, 그것은 단순히 이진 로직 상태들을 나타낸다. 예를 들어, 1은 낮은 로직 레벨을 지칭하고, 0은 낮은 로직 레벨을 지칭한다. 일 실시예에서, 트랜지스터 또는 플래시 셀과 같은 저장 셀은 단일의 논리 값 또는 다수의 논리 값들을 유지할 수 있다. 그러나, 컴퓨터 시스템에서의 값들의 다른 표현들이 이용되었다. 예를 들어, 십진수 10은 1010의 이진값 및 16진법 문자 A로서 표현될 수도 있다. 따라서, 값은 컴퓨터 시스템에 유지될 수 있는 정보의 임의의 표현을 포함한다.
더욱이, 상태들이 값들 또는 값들의 부분들에 의해 표현될 수 있다. 예로서, 논리 1과 같은 제1 값은 디폴트 또는 초기 상태를 나타낼 수 있으며, 논리 0과 같은 제2 값은 논-디폴트 상태를 나타낼 수 있다. 또한, 리세트 및 세트 라는 용어들은, 일 실시예에서, 디폴트 및 갱신된 값 또는 상태를 각각 지칭한다. 예를 들어, 디폴트 값은 높은 논리 값, 즉, 리세트를 잠재적으로 포함하고, 갱신된 값은 낮은 논리 값, 즉, 세트를 잠재적으로 포함한다. 값들의 임의의 조합을 이용하여 임의의 수의 상태들을 나타낼 수 있다.
위에서 개시된 방법, 하드웨어, 소프트웨어, 펌웨어 또는 코드의 실시예들은 처리 요소에 의해 실행가능한 머신 액세스가능, 머신 판독가능, 컴퓨터 액세스가능, 또는 컴퓨터 판독가능 매체 상에 저장된 인스트럭션들 또는 코드를 통해 구현될 수 있다. 비일시적 머신 액세스가능/판독가능 매체는 컴퓨터 또는 전자 시스템과 같은 머신에 의해 판독가능한 형태로 정보를 제공(즉, 저장 및/또는 송신)하는 임의의 메커니즘을 포함한다. 예를 들어, 비일시적 머신 액세스가능 매체는 SRAM(static RAM) 또는 DRAM(dynamic RAM)과 같은 RAM; ROM; 자기 또는 광학 저장 매체; 플래시 메모리 디바이스; 전기 저장 디바이스; 광학 저장 디바이스; 음향 저장 디바이스; 일시적 (전파된) 신호들(예를 들면, 반송파, 적외선 신호, 디지털 신호)로부터 수신된 정보를 유지하기 위한 다른 형태의 저장 디바이스 등을 포함하며, 이들은 정보를 수신할 수 있는 비일시적 매체와는 구별된다.
본 발명의 실시예들을 수행하기 위한 로직을 프로그래밍하는데 이용된 인스트럭션들은, DRAM, 캐시, 플래시 메모리, 또는 다른 스토리지와 같은, 시스템에서의 메모리 내에 저장될 수 있다. 더욱이, 인스트럭션들은 네트워크를 통해서, 또는 다른 컴퓨터 판독가능 매체에 의해 분배될 수 있다. 따라서, 머신 판독가능 매체는 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 송신하기 위한 임의의 메커니즘, 즉, 제한적인 것은 아니지만, 플로피 디스켓, 광학 디스크, 컴팩트 디스크, CD-ROM, 자기-광학 디스크, ROM, RAM, EPROM(Erasable Programmable Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), 자기 또는 광학 카드, 플래시 메모리, 또는 유형의 머신-판독가능 스토리지를 포함할 수 있다. 따라서, 컴퓨터 판독가능 매체는 머신(예를 들면, 컴퓨터)에 의해 판독가능한 형태로 전자 인스트럭션들 또는 정보를 저장 또는 송신하기에 적합한 임의의 타입의 유형의 머신 판독가능 매체를 포함한다.
본 명세서 전체를 통해, "일 실시예" 또는 "실시예"에 대한 참조는, 실시예와 함께 기술된 특정한 특징, 구조, 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 따라서, 본 명세서 전체를 통해 "일 실시예에서" 또는 "실시예에서" 라는 문구의 출현이, 모두 동일한 실시예를 지칭할 필요는 없다. 더욱이, 특정한 특징, 구조, 또는 특성은 하나 이상의 실시예들에서 임의의 적절한 방식으로 결합될 수 있다.
전술한 명세서에서, 특정한 예시적인 실시예들을 참조하여 상세한 설명이 제공되었다. 그러나, 첨부된 청구항들에 개시된 것으로서의 본 발명의 보다 넓은 사상 및 영역을 벗어나지 않고서도, 그것에 대한 수정들 및 변경들이 행해질 수 있음을 명백히 알 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아닌 예시적인 의미인 것으로 간주된다. 더욱이, 전술한 실시예의 이용 및 다른 예시적인 언어가 동일한 실시예 또는 동일한 예를 지칭할 필요는 없지만, 상이하고 개별적인 실시예들 뿐만 아니라, 잠재적으로는 동일한 실시예를 지칭할 수 있다.

Claims (43)

  1. 적어도 하나의 I/O 패브릭을 포함하는 I/O 상호접속 계층구조(interconnect hierarchy) 및 메모리 패브릭(memory fabric)을 포함하는 컴퓨터 디바이스에서의 프로세싱 요소를 포함하는 개시자(initiator)로부터 트랜잭션을 개시하는 단계 - 상기 트랜잭션은 상기 트랜잭션에 대한 타겟과 관련된 보호된 자산을 액세스하도록 요청함 - 와,
    상기 개시자 외부에서, 상기 개시자가 신뢰된 실행 모드(trusted execution mode)에서 동작하고 있음을 식별하는 표시(indicia)와 결합된 상기 개시자의 아이덴티티에 기초하여 불변의 보안 속성들(immutable security attributes)을 생성하는 단계 - 상기 표시는 상기 개시자 외부에 저장됨 - 와,
    상기 트랜잭션 및 상기 불변의 보안 속성들을 상기 타겟 쪽으로 전달하는 단계와,
    상기 개시자가 하나 이상의 신뢰된 실행 모드에서 실행중인 경우 개시자에 의해 개시된 트랜잭션에 대해 보호된 자산에 대한 액세스가 허용되는 보호된 자산에 대한 액세스 정책을 구현하는 단계와,
    상기 불변의 보안 속성들을 이용하여 상기 액세스 정책을 시행하는(enforcing) 단계를 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  2. 제1항에 있어서,
    신뢰된 실행 모드에서 상기 개시자를 동작하는 동안, 상기 개시자의 현재 실행 모드가 신뢰된 실행 모드임을 나타내는, 상기 개시자 외부의 현재 모드 표시(current mode indicia)를 설정하는 단계를 더 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  3. 제2항에 있어서,
    상기 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고, 상기 방법은,
    상기 트랜잭션이 상기 개시자의 현재 실행 모드로 상기 개시자 외부의 모드 레지스터를 갱신하기 위한 것임을 식별하는 표시를 포함하는 제2 트랜잭션 이전에 상기 개시자로부터의 제1 트랜잭션을 개시하는 단계와,
    상기 제1 트랜잭션에 대응하는 불변의 보안 속성들을 생성하는 단계와,
    상기 보안 속성들을 상기 모드 레지스터에 전달하는 단계와,
    상기 개시자의 현재 실행 모드를 나타내는 표시를 사용하여 상기 모드 레지스터를 갱신하는 단계를 더 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  4. 제3항에 있어서,
    상기 불변의 보안 속성들이 상기 모드 레지스터에 대한 액세스가 허용됨을 나타내는 경우 상기 모드 레지스터에 대한 액세스를 허용하는 액세스 정책을 상기 불변의 보안 속성들의 이용을 통해 시행하는 단계를 더 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  5. 제1항에 있어서,
    상기 불변의 보안 속성들의 생성은 상기 개시자에 의해 생성된 보안 표시에 더 기초하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  6. 제1항에 있어서,
    상기 불변의 보안 속성들의 생성은 상기 트랜잭션이 미리 결정된 타입의 I/O 트랜잭션이라는 결정에 더 기초하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  7. 제1항에 있어서,
    상기 신뢰된 실행 모드는 마이크로코드 실행 모드(microcode execution mode)인
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  8. 제1항에 있어서,
    상기 타겟은 메모리 제어기를 통해 상기 메모리 패브릭에 동작가능하게 연결된 시스템 메모리를 포함하고, 상기 액세스 정책은 상기 메모리 제어기에서 시행되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  9. 제1항에 있어서,
    상기 개시자는 시스템 에이전트에 연결된 프로세서 코어를 포함하고, 상기 보안 속성들은 상기 시스템 에이전트에서의 내장된 로직에 의해 생성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  10. 제1항에 있어서,
    상기 보안 속성들은 상기 메모리 패브릭에서의 내장된 로직에 의해 생성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 방법.
  11. 보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치로서,
    복수의 프로세서 코어 - 상기 복수의 프로세서 코어 중 적어도 하나의 프로세서 코어는 적어도 하나의 신뢰된 실행 모드 및 적어도 하나의 비신뢰된 실행 모드를 포함하는 복수의 실행 모드에서 실행하도록 구성됨 - 와,
    상기 프로세서 코어들의 각각이 동작가능하게 연결되는 메모리 패브릭과,
    입/출력(I/O) 상호접속 계층구조와,
    트랜잭션들에 대한 불변의 보안 속성들을 복수의 입력에서 수신된 입력 데이터의 함수로서 생성하도록 구성되는, 상기 프로세서 코어들의 각각의 외부의 보안 속성 생성 유닛과,
    복수의 액세스 정책 시행 블록 - 상기 복수의 액세스 정책 시행 블록의 각각은 트랜잭션이 상기 트랜잭션에 대해 생성된 보안 속성들에 기초하여 상기 액세스 정책 시행 블록과 관련된 보호된 자산을 액세스하도록 허용되는 액세스 정책을 시행하도록 구성됨 - 을 포함하고,
    메모리 제어기를 통해 상기 메모리 패브릭에 동작가능하게 연결된 시스템 메모리를 포함하는 컴퓨터 시스템에서 상기 장치의 동작시에,
    상기 장치는,
    신뢰된 실행 모드에서 실행되는 프로세서 코어를 포함하는 개시자로부터의 트랜잭션을 개시 - 상기 트랜잭션은 I/O 디바이스들 중 하나 또는 시스템 메모리 중 하나를 포함하는 타겟과 관련된 보호된 자산을 액세스하기 위한 요청을 포함함 - 하고,
    상기 개시자가 신뢰된 실행 모드에서 동작중임을 식별하는 표시와 결합된 상기 개시자의 아이덴티티에 기초하여, 상기 보안 속성 생성 유닛을 통해, 불변의 보안 속성들을 생성하고,
    상기 트랜잭션 및 상기 불변의 보안 속성들을 상기 타겟 쪽으로 전달하도록 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  12. 제11항에 있어서,
    상기 보안 속성 생성 유닛에 대한 복수의 입력은, 상기 트랜잭션이 안전한 것이며 상기 트랜잭션으로부터 분리되어 송신되는 것임을 나타내는 입력을 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  13. 제11항에 있어서,
    상기 보안 속성 생성 유닛에 대한 복수의 입력은 상기 트랜잭션을 특권의 I/O 트랜잭션(privileged I/O transaction)으로서 식별하는 표시를 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  14. 제11항에 있어서,
    상기 보안 속성 생성 유닛의 입력에 연결된 모드 레지스터를 더 포함하고, 상기 모드 레지스터는 상기 프로세서 코어의 실행 모드를 식별하는 표시를 저장하도록 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  15. 제14항에 있어서,
    실행 모드 표시가 상기 모드 레지스터로 전송되게 하는 측대역 채널(sideband channel)을 더 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  16. 제15항에 있어서,
    상기 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고,
    상기 컴퓨터 시스템에서의 상기 장치의 동작시에,
    상기 장치는,
    상기 트랜잭션이 상기 개시자의 현재 실행 모드를 사용하여 상기 모드 레지스터를 갱신하기 위한 것임을 식별하는 표시를 포함하는 상기 제2 트랜잭션 이전에 제1 트랜잭션을 개시하고,
    상기 제1 트랜잭션에 대응하는 상기 보안 속성 생성 유닛에서 보안 속성들을 생성하고,
    상기 보안 속성들을 상기 모드 레지스터로 전달하고,
    상기 개시자의 상기 현재 실행 모드를 나타내는 표시를 사용하여 상기 모드 레지스터를 갱신하도록 또한 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  17. 제14항에 있어서,
    상기 모드 레지스터로 송신된 메시지에 대한 보안 속성들에 포함된 표시에 기초하여 상기 모드 레지스터에 대한 액세스를 허용 또는 거절하도록 구성된 액세스 정책 시행 로직을 더 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  18. 제11항에 있어서,
    상기 복수의 프로세서 코어는 시스템 에이전트에 연결되고, 상기 보안 속성 생성 유닛은 상기 시스템 에이전트에 내장된 로직을 포함하는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 장치.
  19. 보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 시스템으로서,
    SoC(System on a Chip) - 상기 SoC는,
    복수의 프로세서 코어를 포함하는 CPU와,
    상기 프로세서 코어 각각이 동작가능하게 연결되는 시스템 에이전트 - 상기 시스템 에이전트는 메모리 제어기에 연결된 메모리 패브릭 및 상기 CPU로부터 개시된 트랜잭션들에 대한 불변의 보안 속성들을 생성하도록 구성된 보안 속성 생성 유닛을 포함함 - 와,
    적어도 하나의 다른 I/O 패브릭에 각각 연결되는 복수의 I/O 패브릭을 포함하는 입/출력(I/O) 상호접속 계층구조 - 상기 I/O 상호접속 계층구조는 계층구조의 최상위 레벨을 점유하며 상기 시스템 에이전트에 연결되는 기본 I/O 패브릭을 포함함 - 와,
    각각 I/O 패브릭에 연결되며, 플래시 메모리 제어기를 포함하는 복수의 I/O 디바이스와,
    상기 I/O 디바이스를 포함하는 타겟을 갖는 트랜잭션이 상기 트랜잭션에 대해 생성된 보안 속성들에 기초하여 상기 I/O 디바이스에서의 보호된 자산을 액세스하는 것이 허용 또는 거절되는 상기 I/O 디바이스와 관련된 하나 이상의 보호된 자산에 대한 액세스 정책을 시행하도록 각각 구성되는 복수의 액세스 정책 시행 블록을 포함함 - 와,
    상기 메모리 제어기에 동작가능하게 연결된 시스템 메모리와,
    BIOS를 포함하는 제1 복수의 인스트럭션 및 저장된 운영 체제를 포함하는 제2 복수의 인스트럭션을 가지며, 플래시 메모리 제어기에 동작가능하게 연결되는 플래시 메모리를 포함하고,
    상기 시스템의 동작시에, 상기 SoC는,
    신뢰된 모드에서 실행되는 프로세서 코어를 포함하는 개시자로부터의 트랜잭션을 개시 - 상기 트랜잭션은 타겟 I/O 디바이스와 관련된 보호된 자산을 액세스하기 위한 요청을 포함함 - 하고,
    상기 개시자가 신뢰된 실행 모드에서 동작중임을 식별하는 표시와 결합된 상기 개시자의 아이덴티티에 기초하여, 보안 속성 생성 유닛을 통해, 불변의 보안 속성들을 생성하고,
    상기 트랜잭션 및 상기 불변의 보안 속성들을 상기 타겟 I/O 디바이스 쪽으로 전달하고,
    상기 타겟 I/O 디바이스와 관련된 액세스 정책 시행 블록을 통해, 그리고 상기 불변의 보안 속성들의 이용을 통해, 상기 보호된 자산에 대한 액세스 정책을 시행하도록 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 시스템.
  20. 제19항에 있어서,
    상기 시스템 에이전트는 상기 보안 속성 생성 유닛의 입력에 연결된 모드 레지스터를 더 포함하고, 상기 모드 레지스터는 상기 프로세서 코어의 실행 모드를 식별하는 표시를 저장하도록 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 시스템.
  21. 제20항에 있어서,
    상기 개시자로부터 개시된 트랜잭션은 제2 트랜잭션을 포함하고, 상기 시스템의 동작시에,
    상기 SoC는,
    상기 트랜잭션이 상기 개시자의 현재 실행 모드로 상기 모드 레지스터를 갱신하기 위한 것임을 식별하는 표시를 포함하는 상기 제2 트랜잭션 이전에 제1 트랜잭션을 개시하고,
    상기 제1 트랜잭션에 대응하는 보안 속성 생성 유닛에서 불변의 보안 속성들을 생성하고,
    상기 불변의 보안 속성들을 상기 모드 레지스터로 전달하고,
    상기 개시자의 현재 실행 모드를 나타내는 표시를 사용하여 상기 모드 레지스터를 갱신하도록 구성되는
    보안 속성들을 갖는 CPU 트랜잭션들을 자격부여하기 위한 시스템.
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
KR1020157021996A 2013-03-14 2014-03-03 보안 속성으로 cpu 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템 KR101702287B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/828,676 US8959576B2 (en) 2013-03-14 2013-03-14 Method, apparatus, system for qualifying CPU transactions with security attributes
US13/828,676 2013-03-14
PCT/US2014/019791 WO2014158744A1 (en) 2013-03-14 2014-03-03 A method, apparatus, system for qualifying cpu transactions with security attributes

Publications (2)

Publication Number Publication Date
KR20150107834A KR20150107834A (ko) 2015-09-23
KR101702287B1 true KR101702287B1 (ko) 2017-02-22

Family

ID=51534944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021996A KR101702287B1 (ko) 2013-03-14 2014-03-03 보안 속성으로 cpu 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템

Country Status (6)

Country Link
US (1) US8959576B2 (ko)
EP (1) EP2972785B1 (ko)
KR (1) KR101702287B1 (ko)
CN (1) CN104981815B (ko)
TW (1) TWI514191B (ko)
WO (1) WO2014158744A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058524A1 (en) * 2012-01-04 2015-02-26 Kenneth C. Creta Bimodal functionality between coherent link and memory expansion
US9229895B2 (en) * 2012-09-13 2016-01-05 Intel Corporation Multi-core integrated circuit configurable to provide multiple logical domains
US9526285B2 (en) 2012-12-18 2016-12-27 Intel Corporation Flexible computing fabric
US9465938B2 (en) * 2014-09-22 2016-10-11 Qualcomm Incorporated Integrated circuit and method for detection of malicious code in a first level instruction cache
US9996487B2 (en) * 2015-06-26 2018-06-12 Intel Corporation Coherent fabric interconnect for use in multiple topologies
US9733689B2 (en) * 2015-06-27 2017-08-15 Intel Corporation Hardware apparatuses and methods to perform transactional power management
DE112015006944B4 (de) * 2015-09-25 2023-03-23 Intel Corporation Einrichtung, System und Verfahren zum Ermöglichen einer Kommunikation über eine Verbindung mit einer Vorrichtung außerhalb einer Baugruppe
US10664179B2 (en) * 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9690495B2 (en) 2015-11-03 2017-06-27 International Business Machines Corporation Emulating memory mapped I/O for coherent accelerators in error state
US10025741B2 (en) * 2016-01-13 2018-07-17 Samsung Electronics Co., Ltd. System-on-chip, mobile terminal, and method for operating the system-on-chip
US9984009B2 (en) * 2016-01-28 2018-05-29 Silicon Laboratories Inc. Dynamic containerized system memory protection for low-energy MCUs
CN105786571A (zh) * 2016-02-29 2016-07-20 珠海市魅族科技有限公司 一种移动终端的控制方法及移动终端
US10572687B2 (en) * 2016-04-18 2020-02-25 America as represented by the Secretary of the Army Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture
US10318440B2 (en) * 2016-09-23 2019-06-11 Intel Corporation Mapping security policy group registers
US10956325B2 (en) * 2016-12-12 2021-03-23 Intel Corporation Instruction and logic for flushing memory ranges in a distributed shared memory system
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
CN110268392A (zh) * 2017-01-10 2019-09-20 瑞萨电子美国有限公司 安全架构和方法
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
EP3407559A1 (en) * 2017-05-26 2018-11-28 Authentic Vision GmbH System and method to manage privileges based on the authentication of an uncloneable security device
US10747908B2 (en) 2017-06-02 2020-08-18 Apple Inc. Secure circuit control to disable circuitry
US11176280B2 (en) * 2017-06-02 2021-11-16 Apple Inc. Secure circuit control to disable circuitry
US10331578B2 (en) * 2017-06-09 2019-06-25 Intel Corporation Fine-grained access host controller for managed flash memory
US20190004978A1 (en) * 2017-06-30 2019-01-03 Intel Corporation Security role identifier pools allocation
US11100023B2 (en) * 2017-09-28 2021-08-24 Intel Corporation System, apparatus and method for tunneling validated security information
US10482258B2 (en) * 2017-09-29 2019-11-19 Nxp Usa, Inc. Method for securing runtime execution flow
US20190042473A1 (en) * 2017-12-28 2019-02-07 Intel Corporation Technologies for enabling slow speed controllers to use hw crypto engine for i/o protection
US11132207B2 (en) 2017-12-29 2021-09-28 Lattice Semiconductor Corporation Fast boot systems and methods for programmable logic devices
GB201806465D0 (en) 2018-04-20 2018-06-06 Nordic Semiconductor Asa Memory-access controll
US11281595B2 (en) * 2018-05-28 2022-03-22 Intel Corporation Integration of disparate system architectures using configurable isolated memory regions and trust domain conversion bridge
GB201810659D0 (en) * 2018-06-28 2018-08-15 Nordic Semiconductor Asa Secure-Aware Bus System
GB201810662D0 (en) 2018-06-28 2018-08-15 Nordic Semiconductor Asa Peripheral Access On A Secure-Aware Bus System
GB201810653D0 (en) 2018-06-28 2018-08-15 Nordic Semiconductor Asa Secure peripheral interconnect
TWI696920B (zh) * 2018-10-22 2020-06-21 大陸商明緯(廣州)電子有限公司 無線式參數設定系統
WO2020252791A1 (zh) * 2019-06-21 2020-12-24 华为技术有限公司 一种集成芯片及数据处理方法
US11343090B2 (en) * 2019-06-27 2022-05-24 Intel Corporation Device ID for memory protection
CN112528345A (zh) * 2019-09-18 2021-03-19 华为技术有限公司 通信方法、装置、计算机可读存储介质和芯片
US20230044219A1 (en) * 2019-10-29 2023-02-09 Silicon Mobility Sas A secure hardware programmable architecture
TWI727509B (zh) * 2019-11-20 2021-05-11 瑞昱半導體股份有限公司 具有省電模式且能夠在省電模式盡量省電的通訊裝置
GB2596103B (en) * 2020-06-17 2022-06-15 Graphcore Ltd Dual level management
GB2596102B (en) 2020-06-17 2022-06-29 Graphcore Ltd Processing device comprising control bus
US11409681B2 (en) 2020-09-04 2022-08-09 Paypal, Inc. Computer system communication via sideband processor
CN115312110A (zh) * 2021-05-08 2022-11-08 瑞昱半导体股份有限公司 芯片验证系统及其验证方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222816A1 (en) 2008-02-29 2009-09-03 Arm Limited Data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuirty
US20120047516A1 (en) * 2010-08-23 2012-02-23 Empire Technology Development Llc Context switching

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657727B2 (en) 2000-01-14 2010-02-02 Hitachi, Ltd. Security for logical unit in storage subsystem
US7426644B1 (en) * 2001-12-05 2008-09-16 Advanced Micro Devices, Inc. System and method for handling device accesses to a memory providing increased memory access security
GB0407384D0 (en) * 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
US8732789B2 (en) * 2006-05-30 2014-05-20 Iyuko Services L.L.C. Portable security policy and environment
US8677141B2 (en) * 2007-11-23 2014-03-18 Microsoft Corporation Enhanced security and performance of web applications
US8607034B2 (en) * 2008-05-24 2013-12-10 Via Technologies, Inc. Apparatus and method for disabling a microprocessor that provides for a secure execution mode
US20110202740A1 (en) 2010-02-17 2011-08-18 Arm Limited Storing secure page table data in secure and non-secure regions of memory
US8789170B2 (en) * 2010-09-24 2014-07-22 Intel Corporation Method for enforcing resource access control in computer systems
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US9413538B2 (en) * 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9171163B2 (en) * 2013-03-15 2015-10-27 Intel Corporation Mutually assured data sharing between distrusting parties in a network environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090222816A1 (en) 2008-02-29 2009-09-03 Arm Limited Data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuirty
US20120047516A1 (en) * 2010-08-23 2012-02-23 Empire Technology Development Llc Context switching

Also Published As

Publication number Publication date
CN104981815B (zh) 2018-10-26
CN104981815A (zh) 2015-10-14
US8959576B2 (en) 2015-02-17
EP2972785A1 (en) 2016-01-20
TWI514191B (zh) 2015-12-21
KR20150107834A (ko) 2015-09-23
EP2972785B1 (en) 2019-10-16
EP2972785A4 (en) 2016-11-02
TW201506673A (zh) 2015-02-16
US20140282819A1 (en) 2014-09-18
WO2014158744A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
KR101702287B1 (ko) 보안 속성으로 cpu 트랜잭션을 자격부여하기 위한 방법, 장치 및 시스템
US9405688B2 (en) Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture
US9268948B2 (en) Secure access enforcement proxy
US10268815B2 (en) Authentication of a multiple protocol connection
CN109074341B (zh) 减少引脚计数接口
US10969992B2 (en) Address translation for scalable linked devices
CN115543905A (zh) 针对pcie进行sris模式选择的系统、方法和装置
US11232056B2 (en) System and method for vector communication
EP4109281B1 (en) Peer-to-peer link sharing for upstream communications from xpus to a host processor
US20150186311A1 (en) Smart direct memory access
US20210389371A1 (en) Debug data communication system for multiple chips
US11016550B2 (en) Controller to transmit data for components of a physical layer device
CN109643577B (zh) 用于存储器训练的电参数的多维优化
US20220113967A1 (en) Accelerator fabric for discrete graphics
US20170351430A1 (en) Method, apparatus, and system for cache coherency using a coarse directory
US11126554B2 (en) Prefetching write permissions into address translation cache

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right