KR101691017B1 - 데이터 처리장치 및 데이터 처리방법 - Google Patents

데이터 처리장치 및 데이터 처리방법 Download PDF

Info

Publication number
KR101691017B1
KR101691017B1 KR1020127012704A KR20127012704A KR101691017B1 KR 101691017 B1 KR101691017 B1 KR 101691017B1 KR 1020127012704 A KR1020127012704 A KR 1020127012704A KR 20127012704 A KR20127012704 A KR 20127012704A KR 101691017 B1 KR101691017 B1 KR 101691017B1
Authority
KR
South Korea
Prior art keywords
program
hardware resources
value
boundary
register
Prior art date
Application number
KR1020127012704A
Other languages
English (en)
Other versions
KR20120098702A (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 KR20120098702A publication Critical patent/KR20120098702A/ko
Application granted granted Critical
Publication of KR101691017B1 publication Critical patent/KR101691017B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/30098Register arrangements
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

프로세서(6)는 성능 모니터(12)와 콘텍스트 포인터(18)와 같은 복수의 하드웨어 리소스를 포함한다. 경계 지시 회로(14, 20)는 프로그램화 가능하고 하드웨어 리소스를 제1 부분과 제2 부분으로 분할하는 경계 위치를 지시하는 경계값을 저장한다. 리소스 제어 회로(16, 22)는 프로그램 실행 회로(8)가 제1 프로그램을 실행시, 제공된 하드웨어 리소스의 수에 대한 질의에 대해 제1 값을 제공하는 반면, 프로그램 실행 회로가 제2 프로그램을 실행시, 상기와 같은 질의에 대해 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 제공하도록 하드웨어 리소스에 대한 액세스를 제어한다.

Description

데이터 처리장치 및 데이터 처리방법{DATA PROCESSING APPARATUS AND METHOD FOR PROCESSING THE DATA}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 더욱 상세하게, 본 발명은 데이터 처리 시스템 내의 하드웨어 리소스의 관리에 관한 것이다.
데이터 처리 시스템은 통상적으로 성능 모니터 카운터, 구성 저장 레지스터, 디버그 이벤트 생성 소스, 추적 리소스 등과 같은 다수의 하드웨어 리소스를 구비한다. 특정 프로세서 내에 구비되는 이들 리소스의 수는 시스템 구현에 특정적일 수 있다.
데이터 처리 시스템 분야에서 가상 현실화를 이용하는 경향이 증가하고 있다. 이러한 가상 현실화는 소프트웨어가 소프트웨어의 측면에서 하나의 형태를 가지는 것으로 보이지만 실제로는 기본적인 물리적 형태가 다른 실행 환경을 갖도록 할 수 있다. 예를 들면, 프로세서는 가상 현실화를 관리하는 역할의 하이퍼바이저(hypervisor) 소프트웨어는 물론 해당 하이퍼바이저 소프트웨어의 수준보다 낮은 특권(privilige) 레벨로 실행되는 하나 이상의 게스트 운영 시스템(guest OS)을 실행하도록 제공될 수 있다. 게스트 운영 시스템은 물리적 현실과 다른 유용한 특정 하드웨어 리소스의 수를 지시하는 등의 프로세서로의 인터페이스를 통해 하이퍼바이저 소프트웨어에 의해 제시될 수 있다. 이러한 가상 현실화는 정상적으로는 하이퍼바이저 소프트웨어에 의해 관리되는데, 해당 하이퍼바이저 소프트웨어는 소프트웨어적으로 리소스에 액세스를 시도하고, 게스트 운영 시스템에 제공되는 가상 시스템에 매칭되는 적절한 응답을 주도록 기본적인 게스트 운영 시스템에 대한 응답을 관리하는 역할을 하는 하이퍼바이저 프로그램의 실행을 시도한다. 하이퍼바이저 제어에 따라 소프트웨어적으로 액세스를 시도하고 적절한 응답을 생성하는 이러한 처리는 수백 주기의 처리 사이클을 소비할 수 있으므로 비교적 실행이 느리다. 준 가상현실화적 접근의 경우, 게스트 운영 시스템은 하이퍼바이저와 동일한 특권 레벨을 가질 수 있고, 다름 아닌 하이퍼바이저의 공시 인터페이스에 대한 적절한 요청을 통해서 소정의 리소스를 사용하는 것으로 "믿어질" 수 있다.
가상 현실화하려고 하는 소정의 하드웨어 리소스는 소프트웨어적으로 액세스를 시도하고 적절한 응답을 생성하는 이러한 접근에 부적절하다. 예를 들면, 시스템 성능의 측면을 모니터링하기 위해 프로세서 내에 하드웨어 성능 카운터를 제공하는 것이 유용해지고 있다. 하이퍼바이저 프로그램은 이러한 성능 카운터를 사용하여, 요구되는 성능 기준을 여전히 만족하면서 프로세서에 의한 에너지 사용을 줄이도록 전압 및 주파수 조절과 같은 파라미터를 제어할 수 있다. 다른 레벨에서, 게스트 운영 시스템 또는 해당 게스트 운영 시스템을 사용하여 실행되는 어플리케이션 프로그램은 해당 어플리케이션 소프트웨어 또는 게스트 운영 시스템의 개발 중에 수행되는 자체의 동작 또는 진단/디버그 동작의 일부로서의 동작을 제어하기 위해 하드웨어 성능 카운터를 사용할 수 있다. 이러한 성능 카운터의 측면에서 이들 하드웨어 리소스의 가상 현실화의 지원을 위해 성능 카운터에 대해 액세스를 시도하는 오버헤드는 모니터링되는 소프트웨어의 성능 및 거동과 그에 따른 생성 결과의 타당성에 큰 영향을 미치도록 되어 있다. 높은 수준의 제어를 위한 하이퍼바이저 프로그램과 게스트 운영 시스템과 같이 다른 목적을 위한 기타 프로그램에 의해 하드웨어 리스소의 사용을 동시에 지원하는 것도 바람직하다. 또한, 물리적 실시에 제공되는 하드웨어 리소스의 수는 변할 수 있다.
가상 현실화된 시스템 내에서 관리를 필요로 하는 하드웨어 리소스의 다른 예로는 시스템 메모리 관리 유닛의 구성 데이터를 지시하는데 사용되는 콘텍스트 포인터(context pointer)가 있다. 안전 도메인(secure domain)과 비 안전 도메인(예, ARM Trustzone)을 지원하는 것과 같은 시스템 내에서, 실행되는 소프트웨어에 제공되는 환경에 따라 하드웨어 메모리 관리 유닛의 구성을 교환하는 것이 필요하기도 하다. 이러한 구성 데이터가 저장되는 장소를 지시하는 하드웨어는 저장과 검색의 목적으로 해당 데이터에 신속하게 액세스하기 위한 메커니즘을 제공한다. 따라서, 이들 포인터로의 소프트웨어 액세스의 시도는 콘텍스트가 스위칭될 수 있는 속도에 악영향을 미칠 수 있다. 그럼에도, 시스템이 포인터의 수가 변경될 수 있는 다른 물리적 실시를 지원할 수 있는 능력은 물론, 이들 포인터의 수를 포함하는 적절한 환경을 제공할 수 있어야 하는 것이 중요하다.
일 측면의 관점으로부터, 본 발명은 복수의 프로그램의 제어하에 데이터를 처리하는 장치를 제공한다. 상기 장치는, 복수의 프로그램의 제어하에 데이터를 처리하는 장치로서: 복수의 하드웨어 리소스의 각각이, 시퀀스 내에 미리 정해진 위치를 갖도록 미리 정해진 시퀀스를 갖는 상기 복수의 하드웨어 리소스와; 상기 시퀀스를 상기 시퀀스 내의 경계 위치의 제1 측면의 제1 부분과 상기 시퀀스 내의 상기 경계 위치의 제2 측면의 제2 부분으로 분할하는 위치인 상기 시퀀스 내의 경계 위치를 나타내는 경계값을 저장하도록 구성된 경계 지시 회로와; 프로그램 명령을 실행하도록 구성된 프로그램 명령 실행 회로와; 상기 경계 지시 회로에 결합되고, 상기 프로그램 명령 실행 회로가 제1 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 제1 값을 제공하도록 응답하고, 상기 프로그램 명령 실행 회로가 제2 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 제2 부분 내의 하드웨어 리소스에 대응하는 값을 제공하도록 응답하도록 구성된, 리소스 제어 회로를 포함하고, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제1 프로그램의 상기 하나 이상의 프로그램 명령은 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수에 대해 진정한 값을 응답 제공하고, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제2 프로그램의 상기 하나 이상의 프로그램 명령은 상기 경계값에 의해 특정되는 값을 응답 제공하는 것을 특징으로 하는 장치를 제공한다.
본 기술은 복수의 하드웨어 리소스를 프로그램화 가능한 경계값으로 지시되는 제1 부분과 제2 부분으로 분할하기 위해 하드웨어 지원을 제공한다. 리소스 제어 회로는 제1 프로그램이 제공된 하드웨어 리소스의 수를 질의할 때 제1 값을 내고 제2 프로그램이 제공되는 하드웨어 리소스의 수를 질의할 때 상기 제2 부분 내의 하드웨어 리소스에 대응하는 값을 제공하도록 제공된다. 따라서, 제1 프로그램과 제2 프로그램은 제공되는 하드웨어 리소스의 수에 대해 다른 관점으로 주어질 수 있다. 제1 프로그램과 제2 프로그램은 상이한 실시 형태 내에 상이한 수의 하드웨어 리소스가 제공될 수 있다는 사실을 고려하도록 해당 수를 질의할 수 있다. 또한, 이러한 질의에 대해 제1 프로그램과 제2 프로그램이 응답 제공하는 다른 결과는 제1 프로그램과 제2 프로그램에 의해 행해질 수 있는 하드웨어의 사용을 분리할 수 있도록 한다. 제1 프로그램 또는 제2 프로그램이 응답 제공하는 하드웨어 리소스의 수에 관한 질의에 대한 정확한 응답은 변한다. 제1 프로그램은 제공된 하드웨어 리소스의 수의 진정한 값을 응답 제공하고, 제2 프로그램은 경계값에 의해 특정되는 값을 응답 제공한다.
예를 들면, 제1 프로그램이 응답 제공하는 리소스의 수에 대한 제1 값은 제1 부분과 제2 부분 내의 하드웨어 리소스의 합에 대응할 수 있다. 따라서, 제1 프로그램은 모든 하드웨어 리소스에 대한 제어가 허용되는 반면, 제2 프로그램은 제2 부분 내에 있는 하드웨어 리소스를 인지하기만 할 뿐이고 제2 부분 내의 하드웨어 리소스에 대한 동작이 제한될 것이다. 대안적인 예로서, 제1 프로그램이 응답 제공하는 제1 값은 제1 부분 내의 하드웨어 리소스의 수에 대응함으로써 제1 프로그램으로의 하드웨어 리소스에 액세스할 수 있다.
제1 프로그램과 제2 프로그램은 프로그램 명령 실행 회로에 의해 지원하는 복수의 특권 레벨 내에서 상이한 특권 레벨로 동작할 수 있다. 이러한 환경 내에서, 리소스 제어 회로는 제1 특권 레벨에서 실행되는 제1 프로그램이 프로그램 명형 제어하에서 경계값을 기록하는 것이 허용되는 반면, 제2 특권 레벨에서 실행되는 제2 프로그램은 경계값을 기록하는 것이 허용되지 않도록 구성될 수 있다. 이러한 방식으로, 제1 프로그램은 제2 프로그램에 제공되는 하드웨어 리소스의 뷰(view)를 제어할 수 있다. 리소스 제어 회로는 시스템이 제2 특권 레벨에 있을 때 제1 부분 내의 하드웨어 리소스에 대한 액세스에 다른 방식으로 응답하도록 구성될 수 있다. 일반적인 의미에서, 리소스 제어 회로는 프로그램 실행 회로가 제1 특권 레벨로 동작하는 경우에 비해 제2 특권 레벨로 동작시 제1 부분 내의 이들 하드웨어 리소스에 대한 액세스 권한이 적을 수 있다. 이것의 하나의 예로는 프로그램 실행 회로가 제1 특권 레벨로 동작시 제1 부분 내의 하드웨어 리소스에 접근 권한이 없는 경우일 수 있다.
삭제
복수의 특권 레벨은 특권 레벨의 계층을 포함할 수 있는데, 계층 내에서 높은 적어도 일부의 특권 레벨은 계층 내에서 낮은 특권 레벨에 비해 하드웨어 리소스와 관련하여 적당한 상위 집합의 액세스 권한을 가진다.
이상에서는 리소스 제어 회로가 응답하는 하나의 경계값을 포함하는 시스템을 설명하였다. 추가의 실시예에서, 경계 지시 회로는 추가의 경계값을 저장하도록 구성될 수 있으며, 해당 추가의 경계값은 제2 부분을 추가의 제1 부분과 추가의 제2 부분으로 분할한다. 제2 특권 레벨로 동작시, 프로그램은 추가의 경계값을 기록하고 또한 제공된 하드웨어 리소스의 수에 관한 질의에 대해 추가의 제1 부분과 추가의 제2 부분 내의 하드웨어 리소스의 수의 합에 대응하는 값으로 응답하는 것이 허용될 것이다. 동시에, 제1 특권 레벨로 동작하는 프로그램은 추가의 경계값을 기록하는 것이 허용되지 않을 것이고, 제공된 하드웨어 리소스의 수에 관한 질의에 대해 추가의 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 내도록 응답할 것이다.
따라서, 하드웨어 리소스를 제1 부분과 제2 부분으로 분할하는 것은 제2 부분이 다시 추가의 제1 부분과 추가의 제2 부분으로 분할되는 것에 의해 계층적일 수 있음을 알 것이다. 유사한 방법으로, 추가의 제2 부분 등등은 추가의 경계값에 의해 추가로 세부 분할될 수 있다.
본 기술에 의해 관리되는 하드웨어 리소스는 여러 가지 다른 형태를 취할 수 있음을 알겠지만, 본 기술은 하드웨어 리소스가 메모리 관리 유닛의 구성 데이터에 대한 포인터의 테이블 내에 복수의 엔트리를 포함하는 실시예에 적합하다.
이러한 실시예 내에서, 구성 데이터는 변환 테이블 베이스 포인터 레지스터값과; 폴트 어드레스 및 콘텍스트 레지스터값과; 변환 색인 버퍼 유지 레지스터값과; 물리적 어드레스에 대한 가상 어드레스 동작 레지스터값과; 메모리 관리 유닛 구성 및 제어 레지스터값과; 변환 테이블 베이스 포인터 레지스터값, 폴트 어드레스 및 콘텍스트 레지스터값, 변환 색인 버퍼 유지 레지스터값, 물리적 어드레스에 대한 가상 어드레스 동작 레지스터값, 및 메모리 관리 유닛 구성 및 제어 레지스터값을 포함하는 콘텍스트 뱅크 값과; 바이패스 속성 레지스터값과; 상기 제1 프로그램과 상기 제2 프로그램 중 하나 이상에 의해 개시되는 활동에 응답하여 발생되는 인터럽트 출력과; 데이터 스트림을 매핑하기 위한 거래 식별 레지스터값; 중 하나 이상을 포함할 수 있다.
본 기술이 잘 적용되는 다른 실시예에서, 복수의 하드웨어 리소스는 복수의 성능 확인(PM) 회로를 포함할 수 있다. 이들 성능 확인 회로는 카운터 레지스터, 인에이블 레지스터, 오버플로우 상태 플래그 및 오버플로우 이벤트 인터럽트 인에이블 레지스터 중 하나 이상을 포함하는 복수의 카운터와; 복수의 이벤트로부터 카운트 이벤트를 선택하는 이벤트 선택 회로; 중 하나 이상을 포함할 수 있다.
본 기술에 적용될 수 있는 복수의 하드웨어 리소스의 추가의 예로는 복수의 하드웨어 리소스가 전체가 액세스되는 레지스터의 복수의 필드를 포함하는 경우가 있는데, 이때 레지스터의 복수의 필드는 구성 레지스터와 상태 레지스터 중 하나이며, 복수의 필드 각각은 각각의 추가의 리소스를 나타내며, 경계값은 복수의 필드 중 어떤 것이 제1 프로그램에 액세스되고 복수의 필드 중 어떤 것이 제2 프로그램에 액세스되는지를 특정한다.
이러한 측면에서, 복수의 하드웨어 리소스는 복수의 성능 확인 회로 각각에 대응하는 구성 레지스터 내의 비트를 포함할 수 있고, 각각의 비트는 해당 회로가 인에이블 상태인지 여부와 같은 대응하는 성능 확인 회로의 소정의 측면을 제어한다. 이것은 각각의 비트가 제어를 행하기보다 대응하는 회로의 소정의 측면을 리포팅할 때 상태 레지스터에도 적용된다. 회로 당 다수의 비트의 필드와 같은 다수-대-일의 비트 매핑이 존재할 수 있다.
본 기술이 적용될 수 있는 하드웨어 리소스의 추가의 예는 복수의 하드웨어 리소스가 제1 프로그램 또는 제2 프로그램에 의해 사용되는 복수의 레지스터를 포함하는 경우이다. 예를 들면, 이들 레지스터는 관련 장치에 있어서 액세스되는 데이터 스트림과 관련 처리 콘텍스트 사이에 사용되는 매핑을 저장하는 매핑 레지스터일 수 있다.
제2 프로그램이 제1 부분(즉, 해당 프로그램에 적절히 액세스되지 않는 부분) 내의 하드웨어 리소스에 대한 판독을 시도하면, 소정의 실시예의 경우, 하드웨어 리소스에 대한 디폴트 값이 제공될 수 있다. 유사한 방식으로, 제2 프로그램이 제1 부분 내의 하드웨어 리소스에 대해 기록을 시도하면, 해당 기록은 행해지지 않을 것이고 배제(또는 폴트) 처리가 기동될 수 있다.
전술한 복수의 상이한 특권 레벨은 다양한 형태와 용도를 가질 수 있다. 본 기술이 사용될 수 있는 일례에서, 복수의 특권 레벨은 하이퍼바이저 프로그램이 가상 현실화된 기본 하드웨어에 대해 실행되는 하이퍼바이저 특권 레벨과 운영 시스템 프로그램이 실행되는 운영 시스템 특권 레벨을 포함한다. 하이퍼바이저 프로그램은 제1 부분 내의 하드웨어 리소스와 제2 부분 내의 하드웨어 리소스에 액세스되며, 운영 시스템 프로그램은 제2 부분 내의 리소스에만 액세스된다.
본 기술이 사용될 수 있는 다른 예의 환경은 복수의 다른 특권 레벨이 안전 프로그램이 실행되는 안전 도메인 내의 적어도 하나의 안전 특권 레벨과 비 안전 프로그램이 실행되는 비 안전 도메인 내의 적어도 하나의 비 안전 특권 레벨을 포함하는 경우이다. 이러한 측면에서, 안전 프로그램은 제1 부분 내의 하드웨어 리소스와 제2 부분 내의 하드웨어 리소스에 액세스되며, 비 안전 프로그램은 제2 부분 내의 하드웨어 리소스에만 액세스된다.
하드웨어 리소스에 대한 출입 제어(gating) 액세스와 함께 리소스 제어 회로는 경계값에 의존하여 복수의 하드웨어 리소스를 재-인덱싱할 수 있다. 이 방식으로, 상이한 프로그램은 해당 인덱스가 매핑된 물리적 리소스가 어떤 부분이 액세스되는지와 제1 부분과 제2 부분 사이의 경계의 위치에 따라 변했을지라도 이들 프로그램이 일련의 인덱스 값 내의 설정 인덱스 값으로부터 시작된 것처럼 리소스에 액세스할 수 있다.
본 발명의 추가의 측면으로부터 해당 각각의 하드웨어 리소스가 미리 정해진 시퀀스 내에 미리 정해진 위치를 갖도록 상기 미리 정해진 시퀀스를 갖는 복수의 하드웨어 리소스를 갖는 장치에 의해 복수의 프로그램의 제어하에 데이터를 처리하는 방법이 제공되며, 해당 방법은: 상기 시퀀스를 상기 시퀀스 내의 경계 위치의 제1 측면의 제1 부분과 상기 시퀀스 내의 상기 경계 위치의 제2 측면의 제2 부분으로 분할하는 위치인 상기 시퀀스 내의 경계 위치를 나타내는 경계값을 저장하는 단계와; 프로그램 실행 회로가 제1 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 제1 값을 제공하도록 응답하는 단계와; 상기 프로그램 실행 회로가 제2 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 제공하도록 응답하는 단계를 포함하며, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제1 프로그램의 상기 하나 이상의 프로그램 명령은 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수에 대해 진정한 값을 응답 제공하고, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제2 프로그램의 상기 하나 이상의 프로그램 명령은 상기 경계값에 의해 특정되는 값을 응답 제공한다.
삭제
본 발명의 실시예들은 예시만의 목적으로 첨부 도면을 참조로 설명된다.
도 1은 프로그램 명령의 제어하에 데이터를 처리하고 상이한 종류의 하드웨어 리소스를 포함하는 장치를 개략적으로 예시하고;
도 2는 경계 레지스터 내에 유지된 경계값에 의해 특정되는 경계에서 제1 부분과 제2 부분으로 분할되는 복수의 하드웨어 리소스를 개략적으로 예시하며;
도 3은 레지스터 내의 제어 비트이고 경계 레지스터 내에 유지된 경계값에 의해 제1 부분과 제2 부분으로 분할되는 복수의 리소스를 개략적으로 예시하며;
도 4는 다른 특권 레벨에서 동작하는 상이한 프로그램들의 계층을 예시하며;
도 5는 안전 도메인과 비 안전 도메인을 갖는 시스템 내의 특권 레벨의 다른 구성을 예시하며;
도 6은 제1 부분 내의 하드웨어 리소스에 대한 제어를 예시하는 흐름도이고;
도 7은 경계와 추가의 경계에 의한 하드웨어 리소스의 분할을 예시하며;
도 8은 다른 특권 레벨에서 프로그램에 의해 기록되는 각각의 경계값으로 복수의 리소스를 분할하는 다중 경계를 개략적으로 예시하며;
도 9는 메모리 관리 유닛 구성의 저장 위치에 대한 포인터의 테이블의 형태로 복수의 하드웨어 리소스를 예시하며;
도 10은 리소스 크기 표시를 판독하는 회로를 개략적으로 예시하며;
도 11은 본 발명의 워터마크 기술을 사용하는 경우 리소스 판독을 위한 회로를 개략적으로 예시하며;
도 12는 본 발명의 워터마크 기술을 사용하는 경우 리소스를 기록하기 위한 회로를 개략적으로 예시한다.
도 1은 복수의 프로그램의 제어하에 데이터를 처리하는 장치(2)를 개략적으로 예시한다. 프로그램은 시스템-온-칩 집적 회로(6)에 결합되는 메모리(4) 내에 저장된다. 집적 회로(6)는 메모리(4)로부터 판독된 프로그램 명령을 실행시키는 프로세서 코어(8)를 포함한다. 집적 회로(6)는 예컨대, 다른 성분 요소(도시 생략)를 연결하는 ARM AXI 버스를 통해 시스템 레벨에서 메모리(4)에 대한 액세스를 제어하는 시스템 메모리 관리 유닛(MMU)(10)도 포함한다. 집적 회로(6)는 하기에 추가로 설명되는 본 발명에 따라 상이한 특권 레벨에서 실행되는 상이한 프로그램에 유효하게 구성되는 하드웨어 리소스를 포함한다.
본 예에서, 하드웨어 리소스의 일 형태는 성능 카운터의 형태의 성능 확인(PM) 회로(12)를 포함한다. 이들 성능 확인 회로(12)(복수의 하드웨어 리소스에 대응함)와 관련하여, 성능 확인 경계 레지스터(14)(경계 지시 회로)와 성능 확인 제어 회로(16)(리소스 제어 회로)가 제공된다. 성능 확인 경계 레지스터(14)는 성능 확인 회로(12)의 제1 부분 내에 있는 성능 카운터와 성능 확인 회로(12)의 제2 부분 내에 있는 성능 카운터 사이의 분할을 지시하는 경계값을 저장한다. 성능 확인 회로 내의 성능 카운터는 각각의 하드웨어 리소스가 미리 정해진 시퀀스 내에서 미리 정해진 위치를 갖도록 미리 정해진 시퀀스를 가진다. 따라서, 해당 시퀀스 내의 포인트에서 경계를 정하는 것에 의해 어떤 성능 카운터가 해당 경계의 일측의 제1 부분 내에 있고 어떤 성능 모니터가 해당 경계의 타측의 제2 부분 내에 있는지를 결정할 수 있다. 성능 확인 제어 회로(16)는 프로세서 코어(8)가 동작하고 처리 명령을 실행하는 현재 특권 레벨을 지시하는 신호가 공급된다. 성능 확인 제어 회로(16)는 이 특권 레벨에 반응하여, 프로세서 코어(8)에 의해 실행되는 프로그램에 의해 시도될 때 하드웨어 리소스(예, 성능 모니터를 위한 성능 확인 또는 제어 스위치) 중 하나에 대한 액세스 허용 여부를 결정한다. 액세스가 허용되면, 예컨대, 기록이 행해지거나 판독이 행해지는 것이 허용된다. 액세스가 허용되지 않으면, 상기 동작이 수행되지 않을 것이고, 디폴트 값의 제공, 배제 처리의 기동, 판독은 허용하지만 기록은 하용하지 않거나 단순히 기록을 무시하는 등과 같은 디폴트 동작이 수행될 수 있다.
도 1에는 복수의 콘텍스트 포인터(18)를 포함하는 다른 종류의 하드웨어 리소스도 도시되어 있다. 이들 콘텍스트 포인터는 현재 콘텍스트/모드와 관련하여 시스템 MMU(10)를 프로그래밍하기 위한 콘텍스트 데이터가 메모리(4) 내에 저장된 위치를 지시하는 어드레스 값을 저장한다. 따라서, 콘텍스트/모드가 변경될 때, 시스템 MMU(10)를 위해 형성된 이러한 구성 데이터는 MMU(10) 내로 신속하게 회수될 수 있고 저장된 현재 데이터는 메모리(4)로 인출될 수 있다. 콘텍스트/모드는 프로세서 코어(8)가 ARM Trustzone 시스템의 안전 도메인 또는 비 안전 도메인에서 현재 동작하는지 여부에 대응할 수 있다.
복수의 콘텍스트 포인터(미리 정해진 시퀀스, 예컨대 포인터 번호를 갖는 복수의 하드웨어 리소스)와 관련하여, 콘텍스트 포인터를 제1 부분과 제2 부분으로 분할하는 경계값을 저장하는 콘텍스트 포인터 경계 레지스터(20)와, 프로세서 코어(8)가 프로그램 명령에 의해 콘텍스트 포인터(18)로의 액세스를 제어하도록 동작하는 도메인에 대응하는 콘텍스트 포인터 제어 회로(22)가 제공된다. 성능 확인 회로(12)와 관련하여 전술한 바와 같이, 콘텍스트 포인터(18)는 콘텍스트 포인터 경계 레지스터(20) 내에 저장된 콘텍스트 포인터 경계값에 의해 자체의 미리 정해진 시퀀스 내에서 제1 부분과 제2 부분으로 분할된다. 콘텍스트 포인터에 반응하는 제어 로직은 제공된 하드웨어 리소스의 수를 질의하는 제1 프로그램 실행 명령에 응답하여 제1 값을 제공할 수 있으며, 해당 제1 값은 제1 부분 내의 콘텍스트 포인터의 수이거나 제1 부분과 제2 부분 내의 콘텍스트 포인터의 합일 수 있다. 제1 부분에 액세스되는 제1 프로그램은 콘텍스트 포인터 경계 레지스터(20) 내에 경계값을 기록하는 것이 허용된다. 콘텍스트 포인터(18)의 제2 부분에 액세스되는 제2 프로그램은 콘텍스트 포인터 경계값의 기록을 허용하지 않으며, 제공된 콘텍스트 포인터의 수를 질의할 때 제2 부분으로부터의 콘텍스트 포인터의 수에 대응하는 값을 제공한다.
도 2는 복수의 하드웨어 리소스(C0-C7)를 개략적으로 예시한다. 이들 하드웨어 리소스(24)는 복수의 하드웨어 리소스 내의 수치적 위치에 대응하는 미리 정해진 시퀀스를 가진다. 경계 레지스터(26) 내에 저장되는 경계값은 해당 시퀀스 내의 경계 위치를 지시한다. 경계값은 가변적이므로 경계의 위치는 경계 레지스터(26)로의 기록에 의해 변경될 수 있다.
도시된 예에서, 하드웨어 리소스의 제1 부분은 레지스터(C3-C7)를 포함한다. 하드웨어 리소스의 제2 부분은 레지스터(C0-C2)에 대응한다. 하드웨어 리소스의 제1 부분은 안전 도메인에서 실행되는 안전 프로그램에 의해서만 액세스될 수 있다. 하드웨어 리소스의 제2 부분은 안전 도메인에서 실행되는 안전 프로그램과 비 안전 도메인에서 실행되는 비 안전 프로그램 모두에 액세스될 수 있다. 당업자에게 익숙한 바와 같이, 안전 프로그램은 통상 집적 회로(6)의 기본 하드웨어 구성을 적어도 부분적으로 가상 현실화하고, 보호되는 방식으로 비 안전 소프트웨어에 서비스를 제공하도록 비 안전 프로그램에 가상 하드웨어 인터페이스를 제공하는 기능을 가진다.
안전 프로그램과 비 안전 시스템 모두는 실시 형태마다 다를 수 있는 유효한 하드웨어 리소스의 수를 질의하는 것이 필요하다. 그러나, 본 발명에 따라 이러한 질의에 응답하여 제공되는 값은 질의를 내는 프로그램이 안전 도메인에서 실행되는 안전 프로그램 또는 비 안전 도메인에서 동작하는 비 안전 프로그램인지 여부에 따라 변할 것이다. 안전 프로그램은 제공되는 하드웨어 리소스의 진정한 총수를 제공하는 반면, 비 안전 프로그램은 제2 부분 내에 제공된 하드웨어 리소스의 수에 대응하는 수를 제공할 것이다. 이러한 방식으로, 제1 부분 내의 하드웨어 리소스는 비 안전 프로그램에 의해 감춰지고 안전 프로그램에 의한 사용을 위해 보유될 수 있다.
경계 레지스터(26) 내에 저장되는 경계값에 의해 제어되는 경계의 위치는 경계 레지스터(26) 내에 경계값을 기록하는 것에 의해 변경될 수 있다. 안전 프로그램은 경계 레지스터(26)에 기록을 행할 수 있다. 비 안전 도메인의 비 안전 및 기타 프로그램은 경계 레지스터(26)에 기록이 허용되지 않는다.
시스템 MMU(10)는 프로세서 MMU가 프로세서 발생 액세스를 위해 제공되는 것과 유사한 방식으로 디바이스 발생 액세스(device generated accesses)를 위해 주소 변환 및 보호 서비스를 제공한다. 시스템 MMU와의 주요한 차이는 지원되는 동시 변환 구성의 수이다.
프로세서 MMU는 통상 한 번에 하나의 소프트웨어 "단어"에 대한 변환을 지원한다는 점에서 단 하나의 액티브 콘텍스트를 지원한다. 하이퍼바이저와 같은 소프트웨어의 관리 부분은 게스트 OS의 실행을 시간 분할(timesliceing)시 해당 상태를 전환하도록 구성될 것이고, 각각의 게스트 OS는 어플리케이션의 실행을 시간 분할시 상응하는 동작을 수행할 것이다.
시스템 MMU(10)는 짧은 시공간 내에/동시에 다수의 디바이스로부터 변환 액세스를 지원함으로써 잠재적으로 각각의 디바이스에 별도의 변환/보호를 제공한다.
예컨대 ARM Trustzone 기술을 적용하는 시스템을 사용하여, 시스템 MMU(10)는 2 세트의 디바이스로부터 변환 거래를 지원할 수 있다:
1. 안전 소프트웨어에 의해 구성된 디바이스
2. 비 안전 소프트웨어에 의해 구성된 디바이스
거래 변환 처리는 변환 처리(예, 변환 테이블 베이스 포인터 레지스터, 변환 테이블 제어 레지스터)를 구성하는 소정의 콘텍스트를 필요로 한다. 시스템 MMU(10) 하에서, 원하는 여러 세트의 변환 중 각각의 세트는 별도의 변환 콘텍스트를 필요로 할 것이다. 그러므로, 시스템 MMU(10)는 변환 콘텍스트의 풀을 제공할 것이고, 시스템 MMU(10)가 안전 및 비 안전 소프트웨어 사이에서 간단한 방식으로 이들 콘텍스트를 공유할 수 있는 방법을 찾는 것이 바람직하다.
ARM Trustzone 기술을 적용하는 시스템을 사용한 안전 소프트웨어에 대한 접근과 마찬가지로, 비 안전 소프트웨어는 안전 소프트웨어가 갖는 변환 콘텍스트를 관찰하거나 영향을 미칠 수 없어야 한다. 또한, 비 안전 소프트웨어는 안전 소프트웨어가 시스템 MMU에 의해 제공되는 서비스를 사용할 필요가 있는 경우 모든 변환 콘텍스트를 요구할 수 없어야 한다. 제안된 해법은 변환 콘텍스트의 풀을 2 세트-안전 소프트웨어용 1 세트와 비 안전 소프트웨어용 1 세트-로 분할하는 경계 레지스터를 구현하는 것이다. 이러한 접근은 비 안전 소프트웨어에 콘텍스트 풀의 적절한 부분에 대한 직접적인 액세스를 제공하는 장점을 제공하고, 안전 소프트웨어의 개입이 불필요하다.
이 시스템 MMU의 추가의 장점의 예는 리소스가 제1 부분 또는 제2 부분에 존재하는지 여부에 따라 리소스로부터 상이한 거동이 요망되는 경우이다. 예를 들면, 제1 부분 내에 존재하는 변환 콘텍스트는 제2 부분 내에 존재하는 변환 콘텍스트와 다른 형식을 가질 수 있다. 이 형식은 경계값에 따라 선택될 수 있으므로, 리소스는 양자의 형식을 지원할 수 있도록 설계되고 이들 리소스가 제1 또는 제2 부분에 존재하는지 여부를 기초로 리소스가 제공할 대상의 형식을 선택한다.
시스템 MMU(10)에서, 비 안전 그룹에 있는 변환 콘텍스트는 변환 콘텍스트를 두 개 그룹(안전, 비안전)으로 분할하는데 경계값을 사용하는 것은 물론, 추가의 경계값을 사용하여 2개 부분으로 분할된다. 이들 부분은 제1 또는 제2 스테이지 변환 콘텍스트 형식을 제공하며, 해당 형식은 가상 어드레스로부터 중간 물리적 어드레스로, 그리고 중간 물리적 어드레스로부터 물리적 어드레스로의 변환을 위해 제공된다. 제1 스테이지 변환 콘텍스트 형식은 게스트 OS에 의해 사용되도록 제공되고; 제2 스테이지 변환 콘텍스트 형식은 하이퍼바이저를 위해 제공된다. 시스템 MMU(10)는 제1 스테이지 변환의 출력이 제2 스테이지 변환의 입력으로 공급되는 경우의 내포 변환(nested translation)을 위해 추가적으로 구성될 수 있어서 가상 현실화된 시스템의 콘텍스트에서 어드레스를 가상 어드레스로부터 물리적 어드레스로 어드레스 변환을 수행할 수 있다.
하이퍼바이저는 게스트 OS에 대해 제1 스테이지 변환을 수행하는 비 안전 그룹 내의 부분으로 액세스를 허용할 수 있으며; 제2 스테이지 변환을 수행하는 부분은 게스트 OS에 액세스될 수 없을 것이다.
도 3은 본 기술에 따라 관리될 수 있는 복수의 하드웨어 리소스의 다른 예를 예시한다. 해당 예에서, 복수의 하드웨어 리소스는 전체적으로 액세스되는(즉, 전체적으로 판독되거나 기록되는) 제어 레지스터 내에 제어 비트를 포함한다. 도 3에 도시된 해당 레지스터 내의 각각의 비트는 대응하는 성능 모니터(예, 성능 카운터 회로)가 인에이블 또는 디스에이블되는지 여부를 제어하는 역할을 한다. 경계 레지스터(28) 내에 저장된 경계값은 성능 모니터 인에이블 레지스터(30)내의 비트를 제1 부분과 제2 부분으로 분할한다. 제1 부분 내의 인에이블 비트는 하이퍼바이저 프로그램에 의해 판독 및 기록 액세스되지만, 게스트 운영 시스템에 의해서는 유효하게 액세스되지 않을 수 있다. 액세스가 허용되지 않는 경우의 디폴트 동작의 예로는 게스트 운영 시스템에 의한 상기 비트 중 하나에 대한 기록이 무시되고, 이들 비트 중 하나의 판독이 게스트 운영 시스템에 의해 수행되는 경우, 하이퍼바이저에 의해 설정되는 관련 비트의 실제값이 무엇인지에 무관하게 "0"의 값이 제시되는 것이다(또는 실제값이 제시될 수 있다). 인에이블 레지스터(30)의 제2 부분은 하이퍼바이저 프로그램과 게스트 운영 시스템에 의해 판독 및 기록 모두가 액세스된다.
해당 예에서, 성능 확인 인에이블 레지스터(30) 내의 인에이블 비트는 경계 레지스터(28) 내에 저장된 경계값의 제어하에 선택적인 액세스가 허용되는 대상 하드웨어 리소스임을 알 것이다. 또한, 기본 성능 카운터는 선택된 액세스가 허용되는 대상의 하드웨어 리소스이다.
이들 기술의 다른 가능한 특징은 (동적 전압 조절에 대한 스위칭과 같은 하드웨어 특성을 위한 글로벌 인에이블 레지스터 등과 같은) 글로벌 제어 레지스터와 제공된 리소스의 분할시 이들 이득 쉐도우 값을 제공하는 것이다. 따라서, (게스트 운영 시스템에 제공되는 가상 머신의 프로그래머 모델인) 하나의 글로벌 인에이블 레지스터 대신에, 제1 부분을 제어하는 제1 글로벌 인에이블 레지스터와 제2 부분을 제어하는 제2 글로벌 인에이블 레지스터가 존재한다. 제2 인에이블 레지스터는 가상 머신의 글로벌 인에이블에 대응한다.
도 4는 프로세서(6)에 의해 실행될 수 있는 복수의 프로그램의 구성을 개략적으로 예시한다. 하이퍼바이저 프로그램(32)은 기본 게스트 운영 시스템(34, 36)에 대한 프로세서(6)의 가상 현실화를 수행한다. 각각의 게스트 운영 시스템(34, 36)은 해당 게스트 운영 시스템(34, 36)에 물리적 프로세서(6)의 진정한 물리적 형태를 갖지 않을 수 있는 가상 프로세서에 대응하는 환경이 주어지도록 하이퍼바이저 프로그램(32)에 의해 관리되는 프로세서(6)로의 인터페이스를 포함한다. 예를 들면, 프로세서(6)는 게스트 운영 시스템(34, 36)이 액세스 허용되는 것보다 많은 수의 하드웨어 리소스를 포함하고 이를 제어할 수 있으며, 하드웨어 리소스 중 일부는 하이퍼바이저(32)에 의해 사용되도록 보유된다. 게스트 운영 시스템(34, 36)이 유효한 하드웨어 리소스의 수를 질의하면, 제공되는 하드웨어 리소스의 수에 대한 진정한 값을 나타내지 않는 값이 제시된다.
도 4에는 예시된 다른 프로그램과 관련된 상이한 특권 레벨, 즉 하이퍼버이저 특권 레벨, 특권화된 특권 레벨, 사용자 특권 레벨과 함께 각각의 게스트 운영 시스템(34, 36)의 제어하에 실행되는 각각의 어플리케이션 프로그램도 예시된다. 해당 구성은 당업자에게는 익숙할 것이다.
도 5는 다른 특권 레벨을 갖는 다른 프로그램의 구성의 다른 예를 예시한다. 도 5의 구성에는 안전 도메인(S)과 비 안전 도메인(NS)도 제공된다. 안전 도메인 내에는 특권화된 특권 레벨에서 동작하는 특권화된 레벨 코드(38)와 사용자 특권 레벨에서 동작하는 사용자 코드(40)가 존재한다. 비 안전 도메인 내에는 유사한 방식으로 특권화된 특권 레벨에서 동작하는 특권화된 코드(42)와 사용자 특권 레벨에서 동작하는 사용자 코드(44)가 존재한다. 이러한 환경 내에서는 안전 도메인 내에서 실행되는 프로그램 코드만이 하드웨어 리소스의 제1 부분에 액세스되는 반면, 비 안전 도메인에소 동작하는 프로그램 코드는 해당 제1 부분 내의 하드웨어 그리소에 액세스되지 않는다.
도 6은 하드웨어 리소스에 대한 액세스 요청에 응답하여 수행되는 처리 제어를 나타내는 흐름도이다. 이 처리 제어는 도 1의 성능 확인 제어 회로(16) 또는 콘텍스트 포인터 제어 회로(22)에 의해 수행된다.
46 단계에서, 하드웨어 리소스로의 액세스가 수신될 때까지 대기한다. 48 단계에서, 관련 하드웨어 리소스가 복수의 하드웨어 리소스의 제1 부분 내에 있는지 여부가 결정된다.이러한 결정은 액세스가 행해진 하드웨어 리소스의 인덱스 값과 성능 확인 경계 레지스터(14) 또는 콘텍스트 포인터 경계 레지스터(20)에 특정된 현재 경계값 사이의 비교에 의해 행해질 수 있다.
액세스가 제1 부분 내의 하드웨어 리소스에 대한 것이 아니면, 처리는 50 단계로 진행되어, 관련 액세스가 허용된다. 제1 부분 내에 대한 것이 아닌 액세스는 제1 프로그램과 제2 프로그램이 특권 레벨에 무관하게 액세스되는 제2 부분 내에 있는 것에 대한 액세스일 것이다.
48 단계에서의 결정이 액세스가 제1 부분 내의 하드웨어 리소스에 대한 것이면, 52 단계는 프로세서(6)의 현재 동작 모드가 하이퍼바이저 모드인지 여부를 결정한다. 현재 동작 모드가 하이퍼바이저 모드이면, 50 단계에서, 관련 액세스가 허용되고 수행된다. 현재 모드가 하이퍼바이저 모드가 아니면, 처리는 54 단계로 진행된다. 하이퍼바이저 모드는 제1 부분 내의 하드웨어 리소스에 액세스되는 것이 허용되는 경우 해당 모드 내에서 프로그램이 반드시 실행되어야 하는 모드이다.
54 단계는 관련 액세스가 판독 액세스인지 여부를 결정한다. 액세스가 판독 액세스인 경우, 56 단계는 진정한 값 대신에 예컨대 "0"의 디폴트 값을 제시한다. 54 단계에서 결정되는 액세스가 판독 액세스가 아닌 경우, 58 단계는 폴트를 생성하고 기록 액세스를 무시한다. 기록을 무시하고 판독에 대한 실제값을 제공하는 등의 다른 디폴트 동작도 가능하다.
도 7은 본 기술에 따라 하드웨어 리소스가 두 개 이상의 경계에 의해 분할되는 방법을 개략적으로 예시한다. 하이퍼바이저에 의해 기록되는 제1 경계는 하드웨어 리소스를 하이퍼바이저에만 액세스될 수 있는 제1 부분과 하이퍼바이저와 게스트 운영 시스템 모두에 액세스될 수 있는 제2 부분으로 분할한다. 하이퍼바이저 또는 게스트 운영 시스템에 의해 기록되는 추가의 경계값은 제2 부분을 추가의 제1 부분과 추가의 제2 부분으로 분할한다. 추가의 제1 부분은 하이퍼바이저 프로그램과 게스트 운영 시스템 프로그램 모두에 액세스될 수 있다. 추가의 제2 부분은 하이퍼바이저 프로그램, 게스트 운영 시스템 프로그램 및 사용자 프로그램에 액세스될 수 있다.
사용자 특권 레벨에서 동작하는 사용자 프로그램이 제공된 하드웨어 리소스의 수를 질의하면, 추가의 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값이 응답 제시된다. 특권화된 특권 레벨에서 동작하는 게스트 운영 시스템이 제공된 하드웨어 리소스의 수를 질의하면, 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값이 응답 제시된다. 하이퍼바이저 프로그램이 하이퍼바이저 특권 모드 내의 자신의 위치로부터 제시되는 하드웨어 리소스의 수에 대한 질의를 발행하면, 하드웨어 리소스의 수에 대한 진정한 값이 제1 부분과 제2 부분 내의 하드웨어 리소스의 수의 합에 대응하여 제시된다.
제공된 하드웨어 리소스의 수에 관한 질의에 응답하여 다른 값을 응답 제시하는 것을 포함하여, 리소스 제어 회로(16, 22)는 각각의 프로그램에 대한 액세스가 물리적으로 존재하는 하드웨어 리소스의 진정한 시퀀스 내의 실제 위치에 무관하게 동일한 주어진 포인트(인덱스 값)에서 시작하는 것으로 보이도록 하드웨어 리소스를 재-인덱싱한다. 따라서, 예를 들면, 각각의 프로그램은 어떤 특권 레벨에서 실행되던지 그리고 하드웨어 리소스의 어떤 부분에 액세스되는지 간에 고정 값에서 모두 시작하는 하드웨어 리소스에 대한 인덱스를 가질 것이다. 예컨대, 인덱스 모두는 진정한 물리적 하드웨어 리소스 내의 자체의 위치에 무관하게 "0"의 값에서 시작하여 해당 값에서 위로 확장된다. 도 2의 예에서, 제2 부분의 인덱스는 당연히 "0"에서 기원되며, 제1 부분 엔트리는 "0"에서 시작하도록 재-인덱싱된다.
도 8은 하드웨어 리소스가 다른 부분으로 분할되는 추가의 예를 예시한다. 해당 예에서는 4개의 경계값이 예시되는데, 각각의 값은 하드웨어 리소스를 추가로 세분한다. 주어진 예에서, 특권 레벨은 0차 레벨로부터 3차 레벨까지 연장되고, 0차 레벨 경계값은 0차 특권 레벨에서 동작하는 프로그램에 의해서만 기록이 허용된다. 1차 레벨 경계값은 제1 특권 레벨 또는 그 이상에서 동작하는 프로그램에 의해 기록될 수 있다. 유사한 방식으로, 추가의 경계값은 그 대응하는 특권 레벨이 액세스되는 하드웨어 리소스의 부분을 추가의 제1 부분과 추가의 제2 부분으로 세부 분할하고, 경계값에 의한 분할은 대응하는 특권 레벨 또는 그 이상에서 실행되는 프로그램에 의해 기록 가능한 경계의 위치를 고정시킨다. 따라서, 도 8로부터는 하드웨어 리소스의 세부 분할의 계층이 각각의 특권 레벨에서 기록 가능한 복수의 경계값에 의해 형성됨을 알 것이다.
도 9는 해당례의 경우 메모리 관리 유닛(MMU)에 대한 콘텍스트 데이터를 저장하는 메모리 어드레스에 대한 포인터의 테이블에 대응하는 하드웨어 리소스의 다른 예를 개략적으로 예시한다. 제1 부분과 제2 부분 사이의 경계는 오버라이드 레지스터(60) 내에 저장된다. 해당 오버라이드 레지스터(60)는 하이퍼바이저 특권 레벨에서 실행되는 하이퍼바이저 프로그램에 의해서만 기록될 수 있다. 하이퍼바이저 크기 레지스터(62)는 도 9의 제1 부분과 제2 부분 내에 속하는 레지스터의 진정한 총수를 지시하는 값을 저장한다. 제공되는 게스트 운영 시스템 크기 레지스터(64)는 특권화된 특권 레벨에서 실행되는 게스트 운영 시스템에 의해 판독시 유효한 포인터 값의 수에 대한 값을 응답 제시한다. 이러한 게스트 운영 시스템 크기 레지스터(64)는 위치(66)에 대응하는 디폴트 값을 가진다. 이러한 디폴트 값은 오버라이드 레지스터(60)가 경계를 디폴트 위치(66)가 아닌 위치로 이동시키는 다른 값으로써 하이퍼바이저 프로그램에 의해 기록되지 않으면 게스트 운영 시스템으로부터의 판독에 응답하여 제공될 것이다. 이것은 도 9에 도시된 상황이다. 따라서, 하드웨어 리소스의 수의 디폴트 값이 게스트 운영 시스템에 제공될 수 있고, 하이퍼바이저 프로그램은 적절한 경우 더 많은 하드웨어 리소스를 게스트 운영 시스템에 선택적으로 제공할 수 있다.
해당 예에서, 게스트 운영 시스템에 의해 사용되는 포인터 값은 하이퍼바이저에 의해 필요한 것보다 작다. 따라서, 정상적으로는 하이퍼바이저에 의해서만 사용될 수 있는 포인터가 게스트 운영 시스템에 의해 사용되도록 할당된 경우, 이들 포인터는 게스트 운영 시스템을 위한 작은 포인터를 저장하는데 필요한 것보다 큰 잉여의 비트 공간을 가질 것이다. 이러한 잉여 공간은 간단히 무시될 수 있다.
도 10은 리소스 크기 지시 회로를 개략적으로 예시한다. 제공되는 하드웨어 리소스는 레지스터(68)의 풀이다. 일정 값 또는 판독 전용 값을 저장하는 크기 지시 레지스터(70)는 관련 시스템 내의 구성 레지스터의 총수를 나타내는 값을 지시한다. 더 많은 특권화된 레벨 코드에 의해 기록 가능한 경계 레지스터(72)는 낮은 특권 레벨에서 동작시 리소스 크기 표시로서 제공되는 경계 위치를 나타낸다. 다중화기(74)는 보다 높은 특권화된 현재의 액세스 레벨을 지시하는 멀티플렉스 스위칭 신호에 따라 크기 데이터에 대한 판독 요청에 응답하여 크기 지시 레지스터(70) 내에 저장된 값과 경계 레지스터(72) 내에 저장된 값의 제공을 스위칭한다. 따라서, 소프트웨어적 측면으로부터, 크기 지시는 언제나 고정 레지스터 내에 저장되는 것으로 간주되지만, 해당 레지스터의 판독시, 제공되는 값은 시스템의 동작하는 현재 특권 모드에 따라 크기 지시 레지스터(70) 또는 경계 레지스터(72)로부터 유래될 것이다. 다 많은 특권화된 코드 레벨이 경계 레지스터(72)에 기록될 수 있으므로 해당 코드 레벨은 보다 적은 특권화된 코드 레벨에 의해 볼 수 있는 리소스 크기를 변화시킬 수 있다. 크기 지시 레지스터 내에 저장되는 값은 하드웨어 구현에 특정적일 수 있으며, 더 많은 특권화된 코드 레벨에 의해 사용되는 값을 응답 제공할 수 있다.
도 11은 리소스 중 하나를 판독하기 위한 회로를 개략적으로 예시한다. 다중화기(76)는 디코딩된 어드레스에 따라 리소스 레지스터 중 판독할 하나의 리소스 레지스터를 선택한다. 그러나, 추가의 다중화기(78)는 판독되는 리소스가 해당 모드에서 유효한 리소스 레지스터의 범위 밖에 있으면 판독되는 리소스의 콘텐츠에 대해 고정 디폴트 값을 제공할 것이다. 따라서, 다중화기(78)는 디폴트 값을, 시스템이 보다 많은 특권화된 레벨의 액세스 모드로 동작하지 않거나, 액세스되는 리소스의 어드레스가 낮은 특권 액세스 레벨에서 동작시 시스템에 유용한 리소스 어드레스의 범위의 한계로 설정된 경계 레지스터 내에 저장된 값보다 작거나 같지 않다면, 판독 데이터 출력으로 전환할 것이다.
도 12는 리소스(68)로의 기록을 위한 회로를 개략적으로 예시한다. 해당 구성에서, 기록의 어드레스는 기록 인에이블로서 리소스(68) 내의 레지스터 중 적절한 하나의 레지스터로 공급되는 하나의 hot 신호를 생성하는 디코더(80)로 전송된다. 이러한 디코더(80)로부터의 신호는 액세스 제어 AND 게이트(82)로부터의 추가의 신호와 함께 AND 연산이 수행된다. 액세스 제어 AND 게이트(82)는 시스템이 보다 많은 특권화된 액세스 모드로 동작하거나 액세스되는 레지스터의 어드레스가 낮은 특권 레벨에서 액세스 가능한 레지스터에 대한 경계 위치 이하임을 지시하는 신호와 함께 기록 인에이블 신호를 AND 연산 처리한다. 따라서, 보다 많은 특권화된 액세스 레벨에서는 임의의 레지스터가 기록될 수 있는 반면, 낮은 특권 레벨에서는 경계 이하의 레지스터만이 기록될 수 있다. 낮은 특권 레벨에서 허용된 범위 밖의 레지스터로의 기록은 기록 데이터가 레지스터로의 입력에 인가되더라도 기록 인에이블 신호가 생성되지 않을 것이므로 간단할 것이다.
도 9의 포인터에 의해 지시되는 구성 데이터는 여러 가지 다양한 형태를 가질 수 있다. 이러한 구성 데이터는 도 1의 메모리 관리 유닛(10)에 의해 사용된다. 구성 데이터는 다음 중 하나 이상을 포함할 수 있다: 변환 테이블 베이스 포인터 레지스터값과; 폴트 어드레스 및 콘텍스트 레지스터값과; 변환 색인 버퍼 유지 레지스터값과; 물리적 어드레스에 대한 가상 어드레스 동작 레지스터값과; 메모리 관리 유닛 구성 및 제어 레지스터값과; 변환 테이블 베이스 포인터 레지스터값, 폴트 어드레스 및 콘텍스트 레지스터값, 변환 색인 버퍼 유지 레지스터값, 물리적 어드레스에 대한 가상 어드레스 동작 레지스터값, 및 메모리 관리 유닛 구성 및 제어 레지스터값을 포함하는 콘텍스트 뱅크 값과; 바이패스 속성 레지스터값과; 상기 제1 프로그램과 상기 제2 프로그램 중 하나 이상에 의해 개시되는 활동에 응답하여 발생되는 인터럽트 출력과; 데이터 스트림을 매핑하기 위한 거래 식별 레지스터값.
도 1 내지 도 3과 관련하여 설명된 성능 확인 회로는 여러 가지 상이한 형태를 가질 수 있다. 이들 성능 확인 회로는 하나 이상의 카운터 레지스터, 인에이블 레지스터, 오버플로우 상태 플래그 및 오버플로우 이벤트 인터럽트 인에이블 레지스터를 포함하는 복수의 카운터를 포함할 수 있다. 성능 확인 회로는 추가적으로 또는 대안적으로 복수의 이벤트로부터 카운트 이벤트를 선택하는 이벤트 선택 회로를 포함할 수 있다. 이러한 맥락에서, 본 발명의 장치는 추가적으로 카운터 레지스터, 인에이블 레지스터, 오버플로우 상태 플래그 및 오버플로우 이벤트 인터럽트 인에이블 레지스터 중 하나 이상을 포함하는 복수의 카운터와; 복수의 이벤트로부터 카운트 이벤트를 선택하는 이벤트 선택 회로를 포함할 수 있다. 이들 요소는 도 3의 구성의 물리적 구현을 제공할 수 있다. 도 3에 논리적으로 예시된 성능 확인 인에이블 레지스터(30)는 실제 전술한 다양한 인에이블 레지스터에 의해 물리적으로 제공될 수 있다.
본 기술이 적용될 수 있는 다른 형태의 하드웨어 리소스는 제1 프로그램 또는 제2 프로그램에 의해 사용되는 복수의 레지스터이다. 예컨대, 이들 레지스터는 장치에 있어서 액세스되는 데이터 스트림과 관련 처리 콘텍스트 사이에 사용되는 매핑을 저장하는 복수의 매핑 레지스터일 수 있다. 따라서, 장치가 콘텍스트를 전환하면, 시스템 내 하드웨어 리소스 중 하나를 포함하는 물리적 레지스터 내에 저장되는 이유로 새로운 콘텍스트에 대해 새로운 매핑이 신속하게 유효하게 될 수 있다.
본 기술의 추가의 사용은 디버그/진단 이벤트 생성 리소스의 관리에 있을 수 있다. 예를 들면, 물리적으로 제공되는 중단점(break point) 및 감시점(watch point) 리소스가 가상 현실화 계층 내에서 낮은 레벨로 실행되는 프로그램에 대해 본 기술에 따라 가상 현실화될 수 있다. 이들 중단점 및 감시점 리소스는 일례로서 중단점 비교기와 감시점 비교기일 수 있다. 본 기술에 따라 관리될 수 있는 진단 리소스의 다른 예는 프로세서(6)의 추적 데이터 생성 유닛 내의 어드레스 비교기이다. 본 기술에 따라 관리될 수 있는 리소스의 다른 예는 당업자에게 분명할 것이다.

Claims (28)

  1. 복수의 프로그램의 제어하에 데이터를 처리하는 장치로서:
    복수의 하드웨어 리소스의 각각이, 시퀀스 내의 미리 정해진 위치를 갖도록 미리 정해진 시퀀스를 갖는 상기 복수의 하드웨어 리소스와;
    상기 시퀀스를 상기 시퀀스 내의 경계 위치의 제1 측면의 제1 부분과 상기 시퀀스 내의 상기 경계 위치의 제2 측면의 제2 부분으로 분할하는 위치인 상기 시퀀스 내의 경계 위치를 나타내는 경계값을 저장하도록 구성된 경계 지시 회로와;
    프로그램 명령을 실행하도록 구성된 프로그램 명령 실행 회로와;
    상기 경계 지시 회로에 결합되고, 상기 프로그램 명령 실행 회로가 제1 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 제1 값을 제공하도록 응답하고, 상기 프로그램 명령 실행 회로가 제2 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 제2 부분 내의 하드웨어 리소스에 대응하는 값을 제공하도록 응답하도록 구성된, 리소스 제어 회로를 포함하고,
    상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제1 프로그램의 상기 하나 이상의 프로그램 명령은 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수에 대해 진정한 값을 응답 제공하고, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제2 프로그램의 상기 하나 이상의 프로그램 명령은 상기 경계값에 의해 특정되는 값을 응답 제공하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서, 상기 제1 값은 상기 제1 부분과 제2 부분 내의 하드웨어 리소스의 수의 합에 대응하는 장치.
  3. 제1항에 있어서, 상기 제1 값은 상기 제1 부분 내의 하드웨어 리소스의 수에 대응하는 장치.
  4. 제1항에 있어서,
    상기 프로그램 명령 실행 회로는 복수의 특권 레벨 중 선택 가능한 하나의 레벨에서 동작하도록 구성되며, 상기 복수의 특권 레벨 내의 상이한 특권 레벨은 상기 복수의 하드웨어 리소스에 대한 액세스 권한이 상이하며;
    상기 리소스 제어 회로는:
    상기 프로그램 명령 실행 회로가 제1 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 제1 프로그램을 실행하고 상기 경계값이 기록되도록 허용하며;
    상기 프로그램 명령 실행 회로가 제2 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 제2 프로그램을 실행하고 상기 경계값이 기록되는 것을 허용하지 않도록 구성된 장치.
  5. 제4항에 있어서,
    상기 리소스 제어 회로는 상기 프로그램 명령 실행 회로가 상기 제2 특권 레벨로 동작시, 상기 제1 부분 내의 하드웨어 리소스에 대한 액세스를 시도하는 하나 이상의 프로그램 명령이, 상기 프로그램 명령 실행 회로가 상기 제1 특권 레벨로 동작시의 경우보다, 상기 제1 부분 내의 상기 하드웨어 리소스에 대한 액세스 권한을 작게 허용되도록 구성된 장치.
  6. 제5항에 있어서,
    상기 프로그램 명령 실행 회로가 상기 제2 특권 레벨로 동작시, 상기 제1 부분 내의 하드웨어 리소스에 대한 액세스를 시도하는 상기 하나 이상의 프로그램 명령은 상기 제1 부분 내의 상기 하드웨어 리소스에 대한 액세스 권한이 허용되지 않는 장치.
  7. 제5항에 있어서,
    상기 복수의 특권 레벨은 특권 레벨 계층을 포함하며, 상기 제1 특권 레벨은 상기 계층 내에서 상기 제2 특권 레벨보다 높고, 상기 계층 내의 주어진 특권 레벨은 상기 계층 내에서 상기 주어진 특권 레벨보다 낮은 임의의 특권 레벨에 비해 상기 하드웨어 리소스에 대해 적절한 상위 집합의 액세스 권한을 가지는 장치.
  8. 제4항 내지 제7항 중 어느 한 항에 있어서,
    상기 경계 지시 회로는 추가의 경계값을 저장하도록 구성되고, 상기 추가의 경계값은 상기 제2 부분을 추가의 제1 부분과 추가의 제2 부분으로 분할하며,
    상기 리소스 제어 회로는,
    상기 프로그램 명령 실행 회로가 상기 제2 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 추가의 경계값이 기록되도록 허용하고 상기 장치 내에 존재하는 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 추가의 제1 부분과 상기 추가의 제2 부분 내의 하드웨어 리소스의 수의 합에 대응하는 값을 응답 제공하며,
    상기 프로그램 명령 실행 회로가 제3 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 추가의 경계값이 기록되는 것을 허용하지 않고 상기 장치 내에 존재하는 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 추가의 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 응답 제공하도록 구성된 장치.
  9. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 경계 지시 회로는 0이 아닌 양의 정수인 N개의 추가의 경계값을 저장하도록 구성되며, 상기 N개의 추가의 경계값은 상기 경계값으로 시작하는 일련의 경계값을 형성하며, 상기 일련의 경계값 내의 n차 경계값은 상기 일련의 경계값 내의 (n-1)차 경계값에 의해 정해지는 제2 부분을 n차 제1 부분과 n차 제2 부분으로 분할하며, 상기 리소스 제어 회로는:
    상기 프로그램 명령 실행 회로가 상기 n차 경계값에 대해 제2 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 n차 경계값이 기록되도록 허용하고 상기 장치 내에 존재하는 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 n차 제1 부분과 상기 n차 제2 부분 내의 하드웨어 리소스의 수의 합에 대응하는 값을 응답 제공하며,
    상기 프로그램 명령 실행 회로가 상기 n차 경계값에 대해 제2 특권 레벨로 동작시, 프로그램 명령 제어하에서 상기 n차 경계값이 기록되는 것을 허용하지 않고 상기 장치 내에 존재하는 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 n차 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 응답 제공하도록 구성된 장치.
  10. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 메모리 관리 유닛의 구성 데이터에 대한 포인터의 테이블 내에 복수의 엔트리를 포함하는 장치.
  11. 제10항에 있어서, 상기 구성 데이터는:
    변환 테이블 베이스 포인터 레지스터값과;
    폴트 어드레스 및 콘텍스트 레지스터값과;
    변환 색인 버퍼 유지 레지스터값과;
    물리적 어드레스에 대한 가상 어드레스 동작 레지스터값과;
    메모리 관리 유닛 구성 및 제어 레지스터값과;
    변환 테이블 베이스 포인터 레지스터값, 폴트 어드레스 및 콘텍스트 레지스터값, 변환 색인 버퍼 유지 레지스터값, 물리적 어드레스에 대한 가상 어드레스 동작 레지스터값, 및 메모리 관리 유닛 구성 및 제어 레지스터값을 포함하는 콘텍스트 뱅크 값과;
    바이패스 속성 레지스터값과;
    상기 제1 프로그램과 상기 제2 프로그램 중 하나 이상에 의해 개시되는 활동에 응답하여 발생되는 인터럽트 출력과;
    데이터 스트림을 매핑하기 위한 거래 식별 레지스터값;
    중 하나 이상을 포함하는 장치.
  12. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 복수의 성능 확인 회로를 포함하는 장치.
  13. 제12항에 있어서, 상기 복수의 성능 확인 회로는:
    카운터 레지스터, 인에이블 레지스터, 오버플로우 상태 플래그 및 오버플로우 이벤트 인터럽트 인에이블 레지스터 중 하나 이상을 포함하는 복수의 카운터와;
    복수의 이벤트로부터 카운트 이벤트를 선택하는 이벤트 선택 회로;
    중 하나 이상을 포함하는 장치.
  14. 제12항에 있어서,
    상기 복수의 성능 확인 회로를 선택적으로 인에이블링하는 글로벌 인에이블 레지스터와;
    상기 제1 부분 내의 상기 복수의 성능 확인 회로를 선택적으로 인에이블링하도록 상기 제1 프로그램에 액세스될 수 있는 쉐도우 글로벌 인에이블 레지스터와, 상기 제2 부분 내의 상기 복수의 성능 확인 회로를 선택적으로 인에이블링하도록 상기 제1 프로그램과 상기 제2 프로그램에 액세스될 수 있는 구조화된 글로벌 인에이블 레지스터
    중 하나 이상을 포함하는 장치.
  15. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 전체가 액세스되고, 구성 레지스터와 상태 레지스터 중 하나이며, 레지스터의 복수의 필드를 포함하고, 상기 복수의 필드 각각은 각각의 추가의 리소스를 나타내며, 상기 경계값은 복수의 필드 중 어떤 것이 상기 제1 프로그램에 액세스되고 복수의 필드 중 어떤 것이 상기 제2 프로그램에 액세스되는지를 특정하는 장치.
  16. 제15항에 있어서, 상기 복수의 하드웨어 리소스는 복수의 성능 확인 회로 각각에 대응하는 구성 레지스터 내의 하나 이상의 비트의 필드를 포함하며, 각각의 필드는 상기 복수의 성능 확인 회로 중 대응하는 성능 확인 회로가 인에이블 상태인지 여부를 제어하는 장치.
  17. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 상기 제1 프로그램 또는 상기 제2 프로그램에 의해 사용되는 복수의 레지스터를 포함하는 장치.
  18. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 상기 장치에 있어서 액세스되는 데이터 스트림과 관련 처리 콘텍스트 사이에 사용되는 매핑을 저장하는 복수의 매핑 레지스터인 장치.
  19. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 하드웨어 리소스는 복수의 중단점 레지스터와 복수의 감시점 레지스터 중 적어도 하나를 포함하는 장치.
  20. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제2 프로그램이 상기 제2 부분 내의 하드웨어 리소스의 판독을 시도하면, 상기 하드웨어 리소스에 대한 디폴트 값이 응답 제공되는 장치.
  21. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제2 프로그램이 상기 제2 부분 내의 하드웨어 리소스의 기록을 시도하면, 상기 기록이 수행되지 않는 장치.
  22. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 제2 프로그램이 상기 제2 부분 내의 하드웨어 리소스에 대한 액세스를 시도하면, 상기 액세스는 포기되고 배제 처리가 작동되는 장치.
  23. 제4항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 상이한 특권 레벨은 하이퍼바이저 프로그램이 실행되는 하이퍼바이저 특권 레벨과 운영 시스템 프로그램이 실행되는 운영 시스템 특권 레벨을 포함하고, 상기 하이퍼바이저 프로그램은 상기 제1 부분 내의 하드웨어 리소스와 상기 제2 부분 내의 하드웨어 리소스에 액세스되며, 상기 운영 시스템 프로그램은 상기 제2 부분 내의 하드웨어 리소스에 액세스되는 장치.
  24. 제4항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 상이한 특권 레벨은 안전 프로그램이 실행되는 안전 도메인 내의 적어도 하나의 안전 특권 레벨과 비 안전 프로그램이 실행되는 비 안전 도메인 내의 적어도 하나의 비 안전 특권 레벨을 포함하며, 상기 안전 프로그램은 상기 제1 부분 내의 하드웨어 리소스와 상기 제2 부분 내의 하드웨어 리소스에 액세스되며, 상기 비 안전 프로그램은 상기 제2 부분 내의 하드웨어 리소스에 액세스되는 장치.
  25. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 리소스 제어 회로는 상기 경계값에 의존하여 상기 복수의 하드웨어 리소스를 재-인덱싱하는 장치.
  26. 복수의 하드웨어 리소스의 각각이, 시퀀스 내의 미리 정해진 위치를 갖도록 미리 정해진 시퀀스를 갖는 상기 복수의 하드웨어 리소스를 갖는 장치에 의해 복수의 프로그램의 제어하에 데이터를 처리하는 방법으로서:
    상기 시퀀스를 상기 시퀀스 내의 경계 위치의 제1 측면의 제1 부분과 상기 시퀀스 내의 상기 경계 위치의 제2 측면의 제2 부분으로 분할하는 위치인 상기 시퀀스 내의 경계 위치를 나타내는 경계값을 저장하는 단계와;
    프로그램 명령 실행 회로가 제1 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 제1 값을 제공하도록 응답하는 단계와;
    상기 프로그램 명령 실행 회로가 제2 프로그램을 실행시, 상기 장치 내에 제공되는 상기 복수의 하드웨어 리소스의 수를 질의하는 하나 이상의 프로그램 명령에 대해 상기 제2 부분 내의 하드웨어 리소스의 수에 대응하는 값을 제공하도록 응답하는 단계를 포함하고,
    상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제1 프로그램의 상기 하나 이상의 프로그램 명령은 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수에 대해 진정한 값을 응답 제공하고, 상기 장치 내에 존재하는 상기 복수의 하드웨어 리소스의 수를 질의하는 상기 제2 프로그램의 상기 하나 이상의 프로그램 명령은 상기 경계값에 의해 특정되는 값을 응답 제공하는 것을 특징으로 하는 방법.
  27. 삭제
  28. 삭제
KR1020127012704A 2009-10-21 2010-08-23 데이터 처리장치 및 데이터 처리방법 KR101691017B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0918501.8A GB2474666B (en) 2009-10-21 2009-10-21 Hardware resource management within a data processing system
GB0918501.8 2009-10-21
PCT/GB2010/051388 WO2011048395A1 (en) 2009-10-21 2010-08-23 Hardware resource management within a data processing system

Publications (2)

Publication Number Publication Date
KR20120098702A KR20120098702A (ko) 2012-09-05
KR101691017B1 true KR101691017B1 (ko) 2017-01-09

Family

ID=41426522

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127012704A KR101691017B1 (ko) 2009-10-21 2010-08-23 데이터 처리장치 및 데이터 처리방법

Country Status (11)

Country Link
US (1) US8949844B2 (ko)
EP (1) EP2491490B1 (ko)
JP (1) JP5596164B2 (ko)
KR (1) KR101691017B1 (ko)
CN (1) CN102667722B (ko)
GB (1) GB2474666B (ko)
IL (1) IL217770A (ko)
IN (1) IN2012DN02045A (ko)
MY (1) MY157557A (ko)
TW (1) TWI486760B (ko)
WO (1) WO2011048395A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US9778953B2 (en) * 2009-06-16 2017-10-03 International Business Machines Corporation Process and system for comprehensive IT discovery without credentials
US20130007379A1 (en) * 2011-06-30 2013-01-03 Kegel Andrew G Secure and virtualizable performance counters
EP2575068A1 (en) * 2011-09-30 2013-04-03 Certicom Corp. System and method for providing hardware-based security
WO2013099414A1 (ja) * 2011-12-26 2013-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション レジスタ・マッピング方法
WO2013101059A1 (en) 2011-12-29 2013-07-04 Intel Corporation Supervisor mode execution protection
US9286245B2 (en) * 2011-12-30 2016-03-15 Intel Corporation Hardware enforced memory access permissions
WO2013115816A1 (en) * 2012-02-02 2013-08-08 Intel Corporation A method, apparatus, and system for speculative abort control mechanisms
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
US9047090B2 (en) 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
EP2741229B1 (en) * 2012-12-07 2018-10-17 Samsung Electronics Co., Ltd Priority-based application execution method and apparatus of a dual-mode data processing device
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
WO2014174580A1 (ja) 2013-04-22 2014-10-30 富士通株式会社 情報処理装置、方法、及びプログラム
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
GB2529248A (en) * 2014-08-15 2016-02-17 Advanced Risc Mach Ltd Performance monitoring in a data processing apparatus capable of executing instructions at a plurality of privilege levels
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
WO2017062541A1 (en) * 2015-10-06 2017-04-13 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
EP3726390B1 (en) * 2018-02-02 2024-04-24 Huawei Technologies Co., Ltd. Method and device for protecting kernel integrity
EP3857371A1 (en) 2019-12-19 2021-08-04 Google LLC Resource management unit for capturing operating system configuration states and memory management
WO2021126216A1 (en) 2019-12-19 2021-06-24 Google Llc Resource management unit for capturing operating system configuration states and offloading tasks
US11334393B2 (en) 2020-01-07 2022-05-17 Bank Of America Corporation Resource cluster chaining architecture
US11301305B2 (en) 2020-01-07 2022-04-12 Bank Of America Corporation Dynamic resource clustering architecture
US10938742B1 (en) 2020-01-31 2021-03-02 Bank Of America Corporation Multiplexed resource allocation architecture
WO2022133845A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Processor including monitoring circuitry for virtual counters
KR102479465B1 (ko) * 2021-01-14 2022-12-22 충남대학교 산학협력단 모바일 신뢰 실행 환경의 보안성 강화를 위한 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
JP2000076133A (ja) 1998-06-04 2000-03-14 Texas Instr Inc <Ti> 一度だけ書込み可能なメモリ内のプログラムデ―タのセキュリティ保証方法
WO2008030093A2 (en) 2006-09-06 2008-03-13 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3689287T2 (de) * 1985-02-18 1994-05-26 Nec Corp Datenverarbeitungsgerät.
JPS63271553A (ja) * 1987-04-28 1988-11-09 Nec Corp 情報処理装置
JPH06208464A (ja) * 1993-01-08 1994-07-26 Mitsubishi Electric Corp マイクロコンピュータ
US7412492B1 (en) * 2001-09-12 2008-08-12 Vmware, Inc. Proportional share resource allocation with reduction of unproductive resource consumption
JP4170133B2 (ja) * 2003-04-17 2008-10-22 三菱電機株式会社 情報処理装置
JP2005056017A (ja) * 2003-08-08 2005-03-03 Hitachi Ltd 情報処理装置
US8079034B2 (en) * 2003-09-15 2011-12-13 Intel Corporation Optimizing processor-managed resources based on the behavior of a virtual machine monitor
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US20050183065A1 (en) * 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US20050204357A1 (en) * 2004-03-15 2005-09-15 Ajay Garg Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology
US7213125B2 (en) * 2004-07-31 2007-05-01 Hewlett-Packard Development Company, L.P. Method for patching virtually aliased pages by a virtual-machine monitor
US8090919B2 (en) * 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US8782671B2 (en) * 2006-07-26 2014-07-15 Hewlett-Packard Development Company, L. P. Systems and methods for flexibly controlling resource usage by a driver domain on behalf of a virtual machine
US8607228B2 (en) * 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
GB2440968B (en) * 2006-08-16 2011-02-02 Advanced Risc Mach Ltd Protecting system control registers in a data processing apparatus
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
US20100083247A1 (en) * 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
US8346995B2 (en) * 2008-09-30 2013-01-01 Microsoft Corporation Balancing usage of hardware devices among clients
US20110061050A1 (en) * 2009-09-04 2011-03-10 Sahita Ravi L Methods and systems to provide platform extensions for trusted virtual machines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
JP2000076133A (ja) 1998-06-04 2000-03-14 Texas Instr Inc <Ti> 一度だけ書込み可能なメモリ内のプログラムデ―タのセキュリティ保証方法
WO2008030093A2 (en) 2006-09-06 2008-03-13 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes

Also Published As

Publication number Publication date
GB2474666B (en) 2015-07-15
MY157557A (en) 2016-06-30
GB2474666A (en) 2011-04-27
EP2491490A1 (en) 2012-08-29
JP5596164B2 (ja) 2014-09-24
TW201115334A (en) 2011-05-01
US20110093750A1 (en) 2011-04-21
IN2012DN02045A (ko) 2015-08-21
WO2011048395A1 (en) 2011-04-28
JP2013508845A (ja) 2013-03-07
EP2491490B1 (en) 2018-12-05
IL217770A0 (en) 2012-03-29
GB0918501D0 (en) 2009-12-09
US8949844B2 (en) 2015-02-03
KR20120098702A (ko) 2012-09-05
CN102667722B (zh) 2016-10-19
IL217770A (en) 2016-02-29
CN102667722A (zh) 2012-09-12
TWI486760B (zh) 2015-06-01

Similar Documents

Publication Publication Date Title
KR101691017B1 (ko) 데이터 처리장치 및 데이터 처리방법
EP2997477B1 (en) Page table data management
KR102051816B1 (ko) 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템
EP2537097B1 (en) Storing secure mode page table data in secure and non-secure regions of memory
JP5812245B2 (ja) ページング可能ゲストをサポートするコンピューティング環境のストレージの管理を容易にするためのコンピュータ可読プログラム・コード・ロジック、方法、およびシステム
JP5234794B2 (ja) データ処理装置および処理回路上で実行される仮想機械によるセキュア・メモリへのアクセス制御方法
US11907542B2 (en) Virtualized-in-hardware input output memory management
KR20210070974A (ko) 레인지 체킹 명령
US11467977B2 (en) Method and apparatus for monitoring memory access behavior of sample process
US10248785B2 (en) Application memory protection using a host page table switching virtual machine function
US20130007379A1 (en) Secure and virtualizable performance counters
US11009841B2 (en) Initialising control data for a device

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 4