KR102269912B1 - 데이터 액세스를 위한 액세스 속성의 처리 - Google Patents

데이터 액세스를 위한 액세스 속성의 처리 Download PDF

Info

Publication number
KR102269912B1
KR102269912B1 KR1020167005602A KR20167005602A KR102269912B1 KR 102269912 B1 KR102269912 B1 KR 102269912B1 KR 1020167005602 A KR1020167005602 A KR 1020167005602A KR 20167005602 A KR20167005602 A KR 20167005602A KR 102269912 B1 KR102269912 B1 KR 102269912B1
Authority
KR
South Korea
Prior art keywords
data
attribute
software
data access
interrupted
Prior art date
Application number
KR1020167005602A
Other languages
English (en)
Other versions
KR20160045735A (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 KR20160045735A publication Critical patent/KR20160045735A/ko
Application granted granted Critical
Publication of KR102269912B1 publication Critical patent/KR102269912B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/468Specific access rights for resources, e.g. using capability register

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

데이터 처리장치(2)는 제 1 특권 레벨 EL1에서 제 1 소프트웨어(13)를 실행하고 제 1 특권 레벨보다 높은 제 2 특권 레벨 EL2에서 제 2 소프트웨어(10)를 실행하는 처리회로(4)를 갖는다. 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 표시하기 위해 제 1 및 제 2 소프트웨어(10, 12)에 의해 속성이 설정된다. 명령이 인터럽트될 수 있는 것으로 제 2 소프트웨어(10)에 의해 설정된 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 대해, 명령의 실행이 인터럽트될 수 없는 것으로 상기 제 1 소프트웨어(12)에 의해 설정된 제 1 속성이 명시하더라도, 이 명령이 인터럽트 가능한 것으로 설정된다.

Description

데이터 액세스를 위한 액세스 속성의 처리{HANDLING ACCESS ATTRIBUTES FOR DATA ACCESSES}
본 발명은 데이터 처리 분야에 관한 것이다. 특히, 본 발명은 데이터 처리장치에서 데이터 액세스를 위한 액세스 속성의 처리에 관한 것이다.
데이터 저장소로부터 데이터를 액세스하기 위한 데이터 액세스 명령은 데이터 액세스가 행해지는 방식을 제어하는 액세스 속성을 구비한다. 예를 들어, 액세스 속성은, 다른 데이터 액세스들에 대해 데이터 액세스를 순서를 무시하고 처리될 수 있는지 여부와, 액세스된 데이터가 캐시에 기억되어야 하는 시기 또는 방식을 명시한다. 그러나, 일부의 액세스 속성은 데이터 액세스를 행하는 것과 관련된 대기시간에 영향을 미친다. 실시간 시스템(예를 들어, 자동차 또는 산업용 응용에서 사용되는 장치)에서는, 특정한 프로세싱 연산이 완료하는데 얼마나 오랜 시간이 걸리는지에 대해 결정적(deterministic) 거동을 갖는 것이 바람직한 경우가 많으므로, 특정한 데이터 액세스와 관련된 긴 대기시간은 문제가 될 수 있다. 특히, 다수의 다른 소프트웨어 어플리케이션들이 한 개의 프로세서에 결합되는 경우가 이에 해당하는데, 이 경우에는 한 개의 어플리케이션이 긴 대기시간의 데이터 액세스를 개시하여, 다른 소프트웨어 어플리케이션이 실시간의 중요한 연산을 행하지 못하게 방해한다. 본 발명을 이들 문제를 해소하는 것을 목적으로 한다.
일면에 따르면, 본 발명은, 데이터 처리장치로서,
데이터를 처리하도록 구성된 처리회로와,
데이터를 기억하도록 구성된 데이터 저장소를 구비하고,
상기 처리회로는, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고, 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성되고,
상기 데이터 저장소에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하도록 구성되고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성된 데이터 처리장치를 제공한다.
한가지 종류의 데이터 액세스 속성은 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시한다. 어떤 종류의 데이터 액세스 명령은 실행하는데 긴 시간이 걸리므로, 데이터 액세스 전체에 걸쳐 데이터 액세스 명령이 도중에 인터럽트될 수 있는지 여부는 실시간 시스템에서 중요할 수 있다. 즉시 서비스할 필요가 있는 인터럽트 등의 실시간의 중요 이벤트가 인터럽트 불가능으로 표시된 데이터 액세스 중에 일어나면, 처리회로는 데이터 액세스의 완료에 전념하여, 실시간 중요 이벤트의 처리에 지연을 일으키는데, 이것은 바람직하지 않다.
처리회로는 제 1 특권 레벨에서 실행되는 제 1 소프트웨어와 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 실행되는 제 2 소프트웨어를 포함하는 다수의 소프트웨어를 지원한다. 소프트웨어의 각 층은 데이터 액세스 명령에 대해 그들 자신의 액세스 속성을 설정하여, 적어도 한 개의 제1 속성이 제 1 소프트웨어에 의해 명시되고 적어도 한 개의 제 2 속성이 제 2 소프트웨어에 의해 명시되며, 이들 각각은 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시한다. 통상적인 구성에서는, 동일한 데이터 액세스에 대해 서로 다른 액세스 속성들이 설정되는 경우에는, 가장 제한적인 속성이 데이터 액세스를 위한 실제 속성으로 선택될 것이다. 예를 들어, 제 1 소프트웨어가 액세스가 인터럽트될 수 없다고 명시하면, 이것은 데이터 액세스의 인터럽트를 허용하는 덜 제한적인 속성들을 보통 무시할 것이다. 그러나, 데이터 액세스를 수행하는데 긴 시간이 걸리는 경우에는, 더 제한적인 액세스 속성이 실시간 중요 이벤트를 서비스할 수 있는 능력에 영향을 미칠 수도 있다.
따라서, 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 제 1 소프트웨어에 의해 설정된 적어도 한 개의 제 2 속성이 명기하는 소정의 종류의 데이터 액세스 명령에 대해, 제 1 소프트웨어에 의해 설정된 적어도 한 개의 제 1 속성이 실행이 인터럽트될 수 없다고 명시하더라도, 처리회로가 실행이 인터럽트될 수 있다고 명시하는 것으로 액세스 속성을 결정한다. 이 때문에, 제 1 소프트웨어에 의해 설정된 속성이 더 높은 특권 레벨에 있는 제 2 소프트웨어에 의해 설정된 속성에 의해 무효로 되어, 실시간 중요 이벤트의 경우에 데이터 액세스 명령이 인터럽트될 수 있도록 보장한다. 예를 들어, 이와 같은 구성은 긴 인터럽트 처리 대기시간을 방지한다. 보통 데이터 액세스에 대해 설정된 충돌하는 속성들 중에서 가장 제한적인 것을 사용하여 액세스를 처리할 것이기 때문에, 이와 같은 접근방식은 직관에 반한다.
본 기술은 모든 데이터 액세스 명령에 사용될 수 있지만, 인터럽트 불가능한 것으로 표시되는 경우 긴 지연을 일으킬 수 있는 복수의 처리 사이클에 걸쳐 실행되는 명령들에 대해 특히 유용하다.
데이터 액세스 명령의 실행이 인터럽트될 수 있으면, 인터럽트, 예외 또는 다른 실시간 중요 이벤트의 발생시, 명령의 실행이 중단된다. 이벤트가 일단 처리되면, 데이터 액세스 명령의 실행이 처음부터 다시 시작되거나, 가능한 경우에는 데이터 액세스가 인터럽트되는 시점부터 재개된다.
본 발명은 일반적으로 처리회로에 의해 실행된 모든 소프트웨어 내부에서 발생하는 소정의 종류의 데이터 액세스 명령에 적용된다. 이와 달리, 소정의 종류의 데이터 액세스 명령이 한 개 이상의 특정한 종류의 소프트웨어, 특히 제 1 소프트웨어 자체 또는 제 1 소프트웨어의 제어하에서 실행되는 또 다른 소프트웨어에서 나타날 때에만 전술한 것과 같은 액세스 속성의 결정이 사용되어도 된다. 제 2 소프트웨어 내에서 소정의 종류의 데이터 액세스 명령을 마주치면, 그것의 액세스 속성이 제 1 소프트웨어에 의해 명시된 제 1 속성을 고려하지 않고 제 2 소프트웨어에 의해 명시된 제 2 속성에 근거하여 결정될 수 있다. 이 때문에, 전술한 것과 같은 속성 결정이 소정의 종류의 데이터 액세스 명령의 모든 발생에 대해 사용될 필요가 없다.
제 1 및 제 2 소프트웨어는 다른 특권 레벨에서 동작하는 소프트웨어일 수 있으며, 이때 제 2 소프트웨어는 제 1 소프트웨어보다 높은 특권을 갖는다. 이와 관련하여, "더 높은 특권 레벨"은, 이 특권 레벨에서 동작하는 소프트웨어가 "더 낮은 특권 레벨"에서 동작하는 소프트웨어보다 더 큰 권한을 갖는다는 것을 의미한다(예를 들면, 제 2 소프트웨어는 제 1 소프트웨어가 액세스 불가능한 데이터를 액세스하거나, 제 2 소프트웨어가 제 1 소프트웨어가 사용 불가능한 특정한 활동을 행할 수 있다). 제 1 및 제 2 특권 레벨은 더 큰 수의 레벨들 내부의 임의이 2개의 특권 레벨이어도 된다. 일부 실시예에서는, 가장 큰 수치가 최고의 특권 레벨을 표시하는 한편(예를 들여, 특권 레벨 3이 특권 레벨 2보다 큰 권한을 갖는다), 다른 실시예에서는 가장 낮은 수치가 최고의 특권 레벨을 표시한다(예를 들어, 특권 레벨 0이 특권 레벨1보다 큰 권한을 갖는다).
예를 들어, 실시간 시스템은, 복수의 운영체계들이 동일한 장치에 공존하고 하이퍼바이저가 이 운영체계들을 관리하는 가상화를 허용한다. 이와 같은 종류의 환경에서는, 제 1 소프트웨어가 운영체계들 중에서 한 개를 포함하고 제 2 소프트웨어가 하이퍼바이저를 포함한다. 운영체계와 하이퍼바이저는 각각 별개로 데이터 액세스에 대한 액세스 속성들을 정의한다. 소정의 종류의 데이터 액세스 명령의 실행이 인터럽트될 수 있는 것으로 하이퍼바이저가 명시하지만, 운영체계가 이 명령이 인터럽트될 수 없다고 요구하는 경우에, 하이퍼바이저가 운영체계를 무효로 할 수 있으므로, 운영체계에 의해 설정된 속성에 무관하게 데이터 액세스가 인터럽트 가능한 것으로 표시된다. 이와 같은 구성은 게스트 운영체계가 부적절한 높은 대기시간의 상황을 일으키는 것을 방지한다.
긴 대기시간이 관심사인 모든 종류의 데이터 액세스 명령에 본 발명이 적용되지만, 본 발명은 특히 데이터 저장소로부터 복수의 레지스터에 데이터를 로드하는 로드 다중(load multiple) 명령 또는 복수의 레지스터로부터 데이터 저장소에 데이터를 저장하는 저장 다중(store multiple) 명령에 유용하다. 일반적으로, 로드 또는 저장 다중 명령은 레지스터들의 목록을 명시하고, 로드 또는 저장 명령의 실행은 이 목록 내부의 레지스터들의 수에 의존하는 다수의 처리 사이클을 필요로 한다. 로드 또는 저장 다중 명령이 인터럽트 불가능한 것으로 표시되면, 프로세서는 다중 로드 또는 저장을 완료하는데 전념하고, 보통 다중 로드 또는 저장이 완료할 때까지 다른 동작을 서비스할 수 없게 될 것이다. 이것은 실시간의 중요할 수 있는 다른 이벤트들을 처리하는데 있어서 바람직하지 않게 긴 대기시간을 발생할 수 있다. 이 문제를 해소하기 위해, 제 1 소프트웨어가 이와 같은 명령들이 인터럽트 불가능한 것으로 표시하더라도, 더 높은 특권 레벨에 있는 제 2 소프트웨어가 필요한 경우에 무효로 하여, 로드 및 저장 다중 명령들이 인터럽트 가능하도록(그리고 나중에는 반복가능하도록) 보장한다.
일부 시스템에서는, 제 2 소프트웨어가 데이터 액세스가 인터럽트될 수 있는 것으로 명시하고 제 1 소프트웨어가 그것이 인터럽트될 수 없는 것으로 명시할 때, 제 2 소프트웨어가 항상 제 1 소프트웨어를 무효로 해도 된다. 그러나, 데이터 액세스가 인터럽트 불가능한 것으로 연속될 수 있도록 하는 것이 바람직한 상황이 존재할 수도 있다. 따라서, 처리회로는 제어값을 유지한다. 적어도 한 개의 제 2 속성이 데이터 액세스의 인터럽션을 허용하는 경우에, 처리회로는 이 제어값에 근거하여 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 결정해도 된다. 제 1 속성이 실행이 인터럽트될 수 없다고 명시하더라도 제어값의 제 1 값이 이 실행이 인터럽트될 수 있다고 표시할 수 있다(따라서 제 2 소프트웨어에 의해 명시된 속성이 제 1 소프트웨어에 의해 명시된 속성을 무효로 한다). 제어값의 제 2 값은, 실행이 인터럽트될 수 있는지 여부가 제 1 속성에 근거하여 결정되어야 한다는 것을 표시할 수 있다(따라서, 제 1 및 제 2 속성들 중에서 가장 제한적인 것이 선택된다). 제어값은 액세스가 제 2 소프트웨어에 의해 강제로 인터럽트 불가능하게 되는지 여부를 시스템이 선택할 수 있도록 한다. 대기시간이 중요한(latency-critical) 이벤트가 예측될 때에는, 제어값이 제 1 값으로 설정되어 실시간 요건이 만족되도록 보장할 수 있는 한편, 이와 같은 이벤트가 예측되지 않고 인터럽트 대기시간이 문제가 될 것으로 예측되지 않을 때에는, 제어값이 제 2 값으로 설정되어, 데이터 액세스가 제 1 소프트웨어에 의해 정의되는 방식으로 제어될 수 있도록 한다. 예를 들어 하이퍼바이저 등의 제2 소프트웨어에 응답하여 제어값이 처리회로에 의해 제 1 또는 제 2 값으로 설정되어도 된다.
제 2 소프트웨어가 제 1 소프트웨어에 의해 설정된 인터럽트 불가능한 제 1 속성을 무효로 하여 데이터 액세스를 인터럽트 가능으로 설정하더라도, 처리회로는 여전히 제 1 소프트웨어에 의해 설정된 저거도 한 개의 제 1 속성에 근거하여 데이터 액세스 정보의 적어도 한 개의 다른 프로퍼티(property)를 결정해도 된다. 예를 들어, 상기한 다른 프로퍼티는 인터럽트 처리 대기시간에 영향을 미치지 않으므로 실시간 중요한 것이 아닌 어떤 것이어도 된다. 그 때문에, 데이터 액세스 명령에 대해 결정된 액세스 속성은 제 1 및 제 2 소프트웨어에 의해 정의된 프로퍼티들의 조합에 해당한다.
예를 들어, 상기한 다른 프로퍼티는 다른 데이터 액세스 명령들의 실행에 대해 소정의 종류의 데이터 액세스 명령의 실행이 재배열될 수 있는지 여부의 표시를 포함한다. 또한, 상기한 다른 프로퍼티는 데이터 액세스 명령에 응답하여 액세스된 데이터가 캐시에 기억되는 방식을 제어하는 캐시 정책(policy) 정보를 포함해도 된다. 예를 들어, 캐시 정책은 기록 액세스가 동시 기록(write through) 액세스, 후기록(write back) 액세스 또는 기록 할당 액세스로서 처리되어야 하는지를 명시하는데, 이것은 액세스된 데이터에 캐시 저장 위치가 할당되는 시기와 이 캐시 저장 위치에서 데이터가 갱신되는 시기에 영향을 미친다. 이와 유사한 정책 정보가 판독에 대해서 설정되어도 된다. 따라서, 제어값이 제 1 값을 가져 데이터 액세스를 강제로 인터럽트 가능하게 하더라도, 데이터 액세스는, 높은 대기시간의 상황을 방지하기 위해 제 1 소프트웨어에 의해 요될 때 인터럽트 가능하고 반복 가능하면서도, 버스 상의 프레젠테이션의 순서와 캐시 정책 정보 등의, 제 1 소프트웨어에 의해 정의된 프로퍼티들의 일부를 유지한다.
일 실시예에서, 제 1 및 제 2 소프트웨어에 의해 정의된 제 1 및 제 2 속성과, 제 1 및 제 2 속성들의 조합에 근거하여 데이터 액세스 명령에 대해 설정된 최종적인 액세스 속성들은 각각 데이터 액세스 명령이 정규 종류의 데이터 명령인지 또는 장치 종류의 데이터 명령인지 식별한다. 일반적으로, 정규 종류의 데이터 액세스 명령은 인터럽트가 가능하고 나중 단계에서 반복되거나 재개될 수 있다. 또한, 정규 종류의 데이터 액세스는 다른 액세스들에 재배열되는 것이 허용된다. 이에 반해, 장치 종류의 데이터 액세스 명령은 인터럽트되고 반복될 수 없으며 다른 데이터 액세스들에 대해 재배열될 수 없다. 장치 종류의 데이터 액세스는, 외부 장치에 매핑되는 데이터 저장소의 영역을 데이터 액세스가 목표로 하는 것이 예측될 때, 운영체계에 의해 사용되는 일이 많다. 일부의 외부 장치들은 대응하는 장치 종류의 메모리 영역에 대한 판독 또는 기록에 응답하여 특정한 활동을 행하도록 기동되므로, 장치 종류의 영역에 대한 일련의 판독 또는 기록이 인터럽트되거나 재배열되지 않아야 하는 것이 중요할 수 있는데, 이것이 외부 장치에 의해 행해진 동작에 영향을 미칠 수 있기 때문이다. 따라서, 장치의 올바른 거동을 확보하기 위해 장치 종류의 데이터 액세스가 보통 사용된다. 그러나, 복수의 운영체계가 결합되고 하이퍼바이저가 이들 운영체계를 관리하는 가상화된 시스템에서는, 외부 장치가 실제로 존재하지 않을 수도 있으며, 하이퍼바이저가 장치에 해당하는 가상 기능을 제공하여, 실제의 외부 장치가 존재하는 것처럼 운용체계에게 보인다. 따라서, 장치 종류의 데이터 액세스들이 인터럽트되거나 재배열될 수 있는지 여부는 중요하지 않은데, 이들 데이터 액세스에 대한 인터럽션에 의해 영향을 받을지도 모르는 실제 장치가 존재하지 않을 수도 있기 때문이다. 제 2 소프트웨어는, 제 1 소프트웨어에 의해 설정된 장치 종류의 액세스가 실제로 장치 종류의 액세스일 필요가 있는지 여부를 알고 있으며, 알지 못하는 경우에는, 제 1 속성을 무효로 하여 액세스를 정규 종류의 데이터 액세스로 함으로써, 필요한 경우에 인터럽트될 수 있도록 보장한다.
데이터 액세스 명령은 데이터 저장소 내부의 위치의 어드레스를 명시해도 된다. 제 1 및 제 2 소프트웨어에 의해 설정된 제 1 및 제 2 속성이 이 어드레스에 근거하여 결정된다. 메모리 어드레스 또는 메모리 어드레스의 일부에 근거하여 식별되는 데이터 저장소의 서로 다른 메모리 영역들에 대해 서로 다른 액세스 속성들이 설정될 수 있다.
속성들은 적어도 한 개의 제 1 속성과 적어도 한 개의 제 2 속성을 정의하는 제 1 및 제 2 데이터를 기억하는 제 1 및 제 2 메모리 속성 유닛을 사용하여 설정되어도 된다. 제1 및 제 2 메모리 속성 유닛의 데이터는 각각 제 1 및 제 2 소프트웨어에 의해 설정된다. 메모리 속성 유닛은 데이터 액세스와 관련된 물리 어드레스를 수신하고 이 어드레스에 근거하여 속성 데이터를 참조하는 메모리 보호 유닛이어도 된다. 이와 달리, 제 1 및 제 2 메모리 속성 유닛은, 가상 어드레스를 수신하고, 이 가상 어드레스를 물리 어드레스로 변환하고, 원래의 가상 어드레스 또는 변환된 물리 어드레스 중에서 한 개에 근거하여 데이터 액세스에 대한 대응하는 액세스 속성들을 결정하는 메모리 관리 유닛이어도 된다. 따라서, 제 1 및 제 2 속성을 결정하는 다양한 방법이 존재한다.
데이터 액세스 명령에 대한 액세스 속성의 결정은 데이터 처리장치의 다양한 부분에 의해 행해져도 된다. 예를 들어, 처리회로, 제 2 메모리 속성 유닛 또는 데이터 저장소가 제1 및 제 2 속성에 근거하여 액세스 속성의 결정을 수행할 수도 있다. 따라서, 본 발명은 이와 같은 결정이 데이터 처리장치 내부에서 일어나는 경우에 한정되지 않는다.
또 다른 실시예에 따르면, 본 발명은,
일면에 따르면, 본 발명은, 데이터 처리장치로서,
데이터를 처리하는 처리수단과,
데이터를 기억하는 데이터 기억수단을 구비하고,
상기 처리수단은, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고, 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성되고,
상기 데이터 기억수단에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하도록 구성되고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성된 데이터 처리장치를 제공한다.
또 다른 실시예에 따르면, 본 발명은, 데이터를 처리하도록 구성된 처리회로와 데이터를 기억하도록 구성된 데이터 저장소를 구비하고, 상기 처리회로가 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성된, 데이터 처리장치에 대한 데이터 처리방법으로서,
상기 데이터 저장소에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하는 단계를 포함하고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
상기 데이터 처리방법은,
상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하는 단계를 더 포함하는 데이터 처리방법을 제공한다.
이하, 다음의 첨부도면을 참조하여 본 발명의 실시예를 설명한다.
도 1은 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 서로 다른 특권 레벨들에서 동작하는 소프트웨어를 개략적으로 나타내 것이다.
도 3은 서로 다른 특권 레벨들에서 동작하는 각각의 소프트웨어에 의해 정의된 메모리 속성들의 일례를 개략적으로 나타낸 것이다.
도 4는 로드 다중 명령과 저장 다중 명령의 일례를 나타낸 것이다.
도 5는 인터럽트 불가능한 로드/저장 다중 명령이 실시간 시스템에서 인터럽트 처리시에 지연을 일으키는 일례를 나타낸 것이다.
도 6은 제 1 및 제 2 특권 레벨에 있는 소프트웨어에 의해 정의된 액세스 속성들이 결합하여 데이터 액세스를 위해 사용할 액세스 속성을 결정하는 방법을 나타낸 테이블이다.
도 7은 이와 같은 방식으로 액세스 속성을 결정하는 것이 어떻게 도 5에 도시된 높은 인터럽트 대기시간을 방지하는지에 대한 일례를 나타낸 것이다.
도 8은 소정의 종류의 데이터 액세스 명령에 대한 액세스 속성을 결정하는 방법을 나타낸 것이다.
도 1은 데이터를 처리하는 처리회로(4)와 데이터를 기억하는 메모리(데이터 저장소)(6)를 구비한 데이터 처리장치(2)를 개략적으로 나타낸 것이다. 처리회로는 처리회로(4)에 의해 처리할 값들을 기억하는 레지스터들(8)을 갖는다. 메모리(6)로부터 레지스터들(8)에 데이터가 로드되고 레지스터들(8)로부터 메모리(6)에 데이터가 기억될 수 있다. 메모리(6)로부터 프로세서(4)로 명령들이 페치될 수 있다. 메모리(6)에 있는 데이터 또는 명령보다 낮은 대기시간을 갖고 데이터 또는 명령을 기억하기 위해 데이터 캐시 또는 명령 캐시(도 1에는 미도시)가 설치되어도 된다.
도 2에 도시된 것과 같이, 처리회로(4)는 서로 다른 특권 레벨들 EL0, EL1, 띠2에서 실행되는 소프트웨어를 지원한다. 하이퍼바이저(10)는 제 2 특권 레벨 EL2에서 실행된다. 하이퍼바이저(10)는 EL2보다 낮은 특권 레벨인 제 1 특권 레벨 EL1에서 실행되는 다수의 게스트 운영체계(12)를 관리한다. 예를 들어, 각각의 운영체계(12)에는 다른 타임 슬롯이 할당되고, 이 타임 슬롯 동안에 처리회로(4)가 이 운영체계(12)를 실행한다. 각각의 운영체계(12)는 최저 특권 레벨인 기저 특권 레벨 EL0에서 실행되는 한 개 이상의 어플리케이션들(14)을 실행한다. 운영체계(12)는, 한 개 이상의 실시간 운영체계(RTOS)(12-0, 12-1)와 적어도 한 개의 비실시간("GUI 리치(rich))" 운영체계(12-2)를 포함한다. 실시간 운영체계(12-0, 12-1)는, 예를 들어, 안전을 위해 신속한 인터럽트 응답 처리가 중요한, 차량 내부의 브레이크 및 에어백 시스템을 제어하는 어플리케이션 등의 한 개 이상의 실시간 어플리케이션들(14-0, 14-1, 14-2)을 관리한다. GUI 리치 운영체계(12-2)는 Windows, iOS, Linux 등의 그래픽 사용자 인터페이스(GUI)를 지원하는 운영체계이다. GUI 리치 운영체계(12-2)는, 인터럽트가 신속하게 처리되는지 여부가 덜 중요한, 차량 내부의 스테레오 시스템을 제어하는 어플리케이션 등의 한 개 이상의 비실시간 어플리케이션(14-3)을 실행한다. 다른 시스템들은 도 2에 도시된 3 레벨보다 많거나 적은 특권 레벨("예외 레벨"로도 알려진다)을 가져도 된다.
다시 도 1을 참조하면, 데이터 처리장치(2)는, 제 1 특권 레벨 EL1에서 실행되는 운영체계들(12) 중에서 한 개에 의해 설정된 제 1 메모리 액세스 속성을 정의하는 데이터를 기억하는 제 1 메모리 보호 유닛(MPU)(20)을 갖는다. 처리회로(4)는 제 2 특권 레벨 EL2에 있는 하이퍼바이저(10)에 의해 설정된 메모리 액세스 속성을 정의하는 제 2 MPU(22)를 더 갖는다. 데이터 액세스 명령에 응답하여, 처리회로(4)는 이 명령에 의해 명시된 어드레스를 제 1 MPU(20) 및 제 2 MPU(22) 모두에게 제공하고, 이들 MPU는 이 어드레스에 대한 각각의 액세스 속성을 찾는다. MPU들(20, 22)은 액세스 속성에 근거하여 액세스가 행해질 수 있는지 결정하고, 액세스가 허용되지 않는 경우에는 결함(fault)을 기동한다. 예를 들어, 메모리(6)의 특정한 영역들은 특권이 없는 명령에 의해 액세스할 수 없는 특권을 갖는 것으로 지정되어도 된다. 속성들은, 액세스가 인터럽트될 수 잇는지 여부 등과 같이, 메모리(6)에 의해 액세스가 행해지는 방식에 영향을 미치는 다양한 프로퍼티들을 더 정의해도 된다.
속성은 캐시 정책 정보도 정의해도 된다. 판독 액세스에 대해, 캐시 정책 정보는 판독이 다음 사항에 해당하는지 명시한다:
· 동시 판독(read through): 필요한 값이 복사본을 캐시에 두지 않고 메모리로부터 직접 프로세서(4)의 레지스터들(8)로 판독된다. 또는
· 비동시 판독: 값이 메모리(6)에서 캐시로 판독된 후, 캐시에서 레지스터들(8)로 판독된다.
마찬가지로, 기록 액세스에 대해, 액세스가 다음과 같이 명시된다:
· 동시 기록: 캐시 적중(cache hit)시에, 값이 캐시와 메모리 모두에 기록된다.
· 후기록: 캐시 적중시에, 값이 캐시에 기록되고 이 값을 기억하는 캐시 위치가 더티(dirty)로 표시되지만, 다른 데이터 값을 기억하기 위해 이 캐시 위치가 재할당될 필요가 있고 더티 데이터 값이 메모리(6)에 기록될 때까지 이 값이 메모리(6)에 기록되지 않는다.
· 기록 할당: 캐시 적중시에, 필요한 데이터 값이 캐시 내부로 로드된다.
· 비기록 할당: 캐시 적중시에, 필요한 데이터 값이 메모리에서 수정되고 캐시 내부에 로드되지 않는다.
이것들은 메모리 액세스 속성에 의해 명시될 수 있는 프로퍼티들의 일부의 예에 지나지 않으며, 다른 많은 프로퍼티들이 존재할 수도 있다.
도 1의 예에서는, 프로세서(4)에 의해 제공된 어드레스가 물리 어드레스이며, 각각의 MPU(20, 22)는 이 메모리 어드레스에 대한 대응하는 액세스 속성을 참조한다. 그러나, 다른 예에서는, MPU(20, 22)가, 처리회로(4)에서 가상 어드레스를 수신하고 가상 어드레스를 물리 어드레스로 변환할 뿐 아니라 메모리 액세스 속성을 참조하는 메모리 관리 유닛(MMU)으로 교체된다. 서로 다른 가상-물리 어드레스 매핑이 운영체계(12)에 의해 제 1 MMU(20)에 정의되고 하이퍼바이저(10)에 의해 제 2 MMU(22)에 정의된다. 그 때문에, 일반적으로 MPU 또는 MMU는 데이터 액세스에 의해 명시된 메모리 어드레스에 근거하여 참조되는 데이터 액세스에 대한 액세스 속성을 정의하는 데이터를 포함하는 메모리 속성 유닛이어도 된다.
도 3에 도시된 것과 같이, 제 1 예외 레벨 EL1에서 동작하는 운영체계(12)와 제 2 예외 레벨 EL2에서 동작하는 하이퍼바이저(10)는 동일한 메모리 어드레스에 대해 모순되는 메모리 속성들을 정의한다. 예를 들어, 도 3의 좌측 부분에 도시된 것과 같이, 운영체계(12)는 메모리 어드레스 공간(30)의 서로 다른 영역들을 정규 메모리 영역(40) 또는 장치 종류 영역(500으로서 지정한다. 정규 영역의 메모리(40)를 목표로 하는 메모리 액세스 명령은 액세스 도중에 인터럽트되고 반복되거나 나중에 재개되는 한편, 장치 종류의 메모리 영역(50)을 목표로 하는 액세스 명령은 인터럽트 및 반복/재개될 수 없다. 또한, 정규 종류의 액세스는 그것의 원래의 프로그램 순서에 비해 다른 액세스에 대해 다른 순서로 처리될 수 있는 한편, 장치 종류의 액세스는 재배열될 수 없다. 도 3의 우측에 도시된 것과 같이, 제 2 특권 레벨 띠2에서 동작하는 하이퍼바이저에 의해 정의된 메모리 속성은 마찬가지로 어드레스 공간(30)의 정규 영역(40)과 장치 종류의 영역(50)을 정의한다. 그러나, 하이퍼바이저(10)에 의해 정의된 영역들은 운영체계(12)에 의해 정의된 영역들과 같지 않아도 된다. 예를 들어, 어드레스 공간(30)의 어떤 영역이 외부 장치에 매핑될 것으로 운영체계가 예측하기 때문에 이 영역이 운영체계(12)에 의해 장치 종류인 것으로 설정되지만, 하이퍼바이저(10)에 의해 관리된 가상화된 시스템에서는, 이와 같은 장치가 존재하지 않을 수도 있으므로, 하이퍼바이저(10)가 그 대신에 이와 같은 영역들 정규 영역으로 표시한다. 예를 들어, 도 3에 도시된 어드레스 55를 목표로 하는 데이터 액세스에 대해, 운영체계(12)는 이 액세스를 장치 종류로서 명시하는 한편, 하이퍼바이저(10)는 이 액세스를 정규 종류로서 명시한다.
도 4는 메모리 속성들의 이와 같은 차이가 중요할 수 있는 일부 명령의 예를 나타낸 것이다. 도 4는 복수의 값을 메모리(6)에서 레지스터들(8)에 로드하는 로드 다중 명령 LDM을 나타내고 있다. 로드 다중 명령은 레지스터들(8)에 로드할 제 1 값 A의 메모리(6) 내부의 어드레스를 표시하는 어드레스 #addr을 포함하는 어드레스 레지스터 r0을 명시한다. 로드 다중 명령은 데이터 값들을 로드하고자 하는 레지스터들을 식별하는 레지스터들 r1 내지 r12의 목록을 더 명시한다. 도 4에 도시된 것과 같이, 어드레스 #addr에 기억된 값 A가 레지스터 r1에 로드된 후, 나머지 레지스터들 r2 내지 r12 내부에 로드할 각각의 다음 값 B-L에 대해 어드레스가 증분된다. 마찬가지로, 저장 다중 명령 STM은 어드레스 #addr을 포함하는 레지스터 r0와 메모리에 기억할 데이터 값들 A-L을 제공하는 레지스터들 r1 내지 r12의 목록을 명시하고, 이때 어드레스 #addr은 제 1 값 A를 기억할 메모리 내부의 위치를 식별하고 그후 다음의 메모리 위치들을 액세스하기 위해 어드레스가 증분된다. 목록 내부의 레지스터들의 수는 실행되는 로드 또는 저장의 개수를 결정한다. 일반적으로, 로드/저장 다중 명령들은 레지스터당 한 개의 처리 사이클을 필요로 한다. 도 4에는 레지스터를 사용하여 어드레스 #addr을 명시하는 예가 도시되어 있지만, 다른 예에서는 어드레스가 명령 코딩시의 즉시값(immediate value)으로 명시될 수도 있다.
도 5는 로드 또는 저장 다중 명령이 운영체계(12)의 제어하에서 제 1 MPU(20)에 의해 장치 종류로서 표시될 때 발생할 수 있는 문제를 예시한 것이다. 도 5에 도시된 것과 같이, 각각의 운영체계(12)에 타임 슬롯이 할당되고, 각각의 운영체계(12)는 그것의 각각의 타임 슬롯 동안에 처리회로(4)에 의해 실행된다. 인터럽트들(60)이 주기적으로 발생되어 새로운 운영체계(12)로의 전환을 기동한다. 도 5에는 동일한 지속기간을 갖는 타임 슬롯들이 도시되어 있지만, 한 개의 운영체계(12)에 다른 운영체계보다 긴 타임 슬롯을 할당하는 것이 가능할 것이다.
실시간 운영체계들(12-0, 12-1)에 대해서는, 이 운영체계(12)로의 전환을 기동하는 인터럽트들(60)이 결정적인 시기에 일어나는 것이 중요하다. 도 5에 도시된 것과 같이, 이들 인터럽트들 중에서 한 개(60-1)가 발생하기 직전에 비실시간 운영체계(12-2)가 로드 다중 또는 저장 다중 명령과 마주친다. 명령이 장치 종류로 표시되면, 이 명령은 인터럽트될 수 없다. 도 4에 도시된 것과 같이 복수의 로드 또는 복수의 저장을 행하는 것은 다수의 처리 사이클을 필요로 할 수 있으므로, 로드 다중 또는 저장 다중 명령을 완료하는 것은 도 5에 도시된 것과 같이 이 연산이 실시간 운영체계 12-1과 관련된 타임 슬롯으로 넘치게 할 수 있다. 이 명령은 인터럽트될 수 없는 경우에는, 이것이 다음 운영체계 12-1로의 전환을 기동하는 인터럽트 60-1의 처리를 지연시키는데, 이것은 실시간 운영체계 12-1이 그것의 타임 슬롯의 개시시에 실시간의 중요 이벤트를 서비할 필요가 있으므로 문제가 될 수 있다.
전형적인 아키텍처에서는, 동일한 트랜잭션에 대해 복수의 층의 메모리 속성들이 정의될 때, 이들 속성이 일반적으로 합성되어 원래의 속성들 중에서 가장 제한적인 속성에 해당하는 합성 속성을 형성한다. 그 때문에, 한 개의 속성이 트랜잭션을 장치 종류로서 명시하고 다른 속성이 그것의 정류 종류로서 명시하는 경우에는, 일반적으로 이 트랜잭션이 장치 종류로서 표시될 것이다. 그러나, 이와 같은 가장 제한적인 장치 종류의 속성은 실시간 이벤트가 너무 늦게 서비스되도록 할 수도 있기 때문에, 실시간 시스템에서는, 이것이 도 5에 도시된 것과 같이 높은 인터럽트 대기시간의 문제를 일으킬 것이다.
이와 같은 문제를 해소하기 위해, 운영체계(12)의 제어하에서 제1 MPU(20)에 의해 정의된 제 1 속성과 하이퍼바이저(10)의 제어하에서 제 2 MPU(22)에 의해 정의된 제 2 속성이 도 6에 도시된 것과 같이 다른 방식으로 합성될 수 있다. 트랜잭션이 장치 종류이어야 한다고 제 2 MPU(22)가 결정한 경우에는, 제 1 MPU(20)에 의해 설정된 대응하는 제 1 속성의 상태에 무관하게, 전체 속성이 장치 종류로서 설정된다(도 6의 하단 행 참조). 또한, 제 1 및 제 2 MPU(20, 22) 모두가 트랜잭션을 정규 종류로 설정한 경우에는, 전체 속성도 정규 종류로 설정된다(도 6의 좌측 박스 참조).
그러나, 하이퍼바이저가 트랜잭션을 정규 종류로 지정하고, 운영체계가 트랜잭션을 장치 종료로 지정할 때(도 6의 상단 우측 박스), 처리회로에 의해 유지된 제어값(100)을 사용하여 이 트랜잭션에 대한 전체 메모리 액세스 속성을 결정한다. 제어값(100)은, 다양한 방식으로 유지되고, 레지스터들(8) 또는 메모리(6) 내부 등의 데이터 처리장치(2) 내부의 임의의 위치에 기억된다. 이와 달리, 도 1에 도시된 것과 같이 제어값(100)이 처리회로(4) 내부의 위치에 기억되어도 된다. 일 실시예에서, 처리회로(4)는 프로세서(4)의 다양한 프로퍼티들을 제어하는 다수의 제어 비트들을 포함하는 제어 레지스트를 갖고, 메모리 속성 제어값(100)이 이들 제어 비트들 중에서 한 개이어도 된다. 또한, 제 2 MPU(22)가 제어값(100)을 유지할 수도 있다.
제어값(100)은 하이퍼바이저가 정규 종류로서 명시하는 적어도 한 개의 특정한 종류의 데이터 액세스 명령에 대한 정규/장치 종류 속성의 설정을 제어한다. 제어값이 제 1 값(예를 들어, 1의 값)을 가지면, 트랜잭션이 정규인 것으로 표시되므로, 정규 종류의 하이퍼바이저(10) 설정이 운영체계(12)에 의해 설정된 장치 종류의 설정을 무효로 한다. 그렇지만, 트랜잭션의 나머지 프로퍼티들은 운영체계(12)에 의해 명시된 장치 상태에 따라 유지된다. 예를 들어, 트랜잭션이 나머지 트랜잭션들에 대해 그 자신의 원래의 순서로 처리되는 프로퍼티가 장치 트랜잭션들에 따라 유지되지만, 이 트랜잭션은 정규 트랜잭션들에 따라 인터럽트가능하다. 이때, 제어값이 1일 때, 운영체계(12)에 의해 어떤 속성이 명시되었는지에 무관하게, 전체 속성이 하이퍼바이저에 의해 명시된 속성을 설정되게 된다.
한편, 제어값(100)이 제 2 값(예를 들어, 0)을 갖는 경우에는, 하이퍼바이저가 이 액세스를 제 2 MPU(22)를 사용하여 정규 종류로서 명시하였더라도, 이 트랜잭션이 제 1 MPU(20)에 의해 설정된 제 1 속성에 따라 장치 종류로서 표시될 수 있다. 이것은 데이터 액세스가 여전히 인터럽트 불가능한 것으로 처리되게 된다는 것을 의미한다. 제어값(100)이 0이면, 이 데이터 액세스에 대한 전체 액세스 속성이 제 1 및 제 2 MPU(20, 22)에 의해 설정된 속성들 중에서 가장 제한적인 속성에 따라 설정되게 되므로, 하이퍼바이저(10) 또는 운영체계(12)가 장치 종류 액세스를 정의하는 경우에는, 전체 속성도 장치 종류가 된다.
이 제어값(100)은 예를 들어 하이퍼바이저(10) 등의 소프트웨어에 의해 설정될 수 있다. 이와 같은 구성은 하이퍼바이저(10)가 운영체계(12)에 의한 장치 종류의 표시가 무효로 될 수 있는지 여부를 제어할 수 있도록 한다. 실시간 운영체계의 개시를 기동하는 인터럽트(60) 등의 실시간의 중요 이벤트가 발생할 것이 예측되는 경우에는, 제1 MPU(20)가 트랜잭션을 장치 종류로 정의하더라도, 이 트랜잭션이 정규인 것으로 여전히 고려되어 인터럽트되도록, 제어값이 1로 설정될 수 있다. 따라서, 도 7에 도시된 것과 같이, 로드 또는 저장 다중 명령이 비실시간 운영체계(12-2)에 의해 개시되더라도, 인터럽트(60-1)가 발생하면, 로드 저장 다중 명령이 인터럽트되어, 운영체계 12-1이 실시간 이벤트들 처리할 수 있도록 한다. 그후, 비실시간 운영체계(12-2)가 프로세서(4) 상에서 그것의 다음의 슬롯을 수신할 때 로드 또는 저장 다중 명령이 다시 시작되거나 재개될 수 있다. 한편, 실시간 중요 이벤트가 예측되지 않는 경우에는, 하이퍼바이저가 제어값을 0으로 설정하여, 운영체계(12)가 트랜잭션을 장치 종류로 지정하더라도, 이 트랜잭션이 장치 종류인 것으로 처리되어 인터럽트될 수 없다는 것을 표시한다.
도 6에 도시된 액세스 속성의 결정은 제 2 MPU(22)에 의해 행해져도 되는데, 이 제 2 MPU는 제 1 MPU(20)로부터 제 1 속성을 수신하고 그것을 그 자신의 참조된 제 2 속성과 합성하여 전체 속성을 형성해도 된다. 이와 달리, 제 1 및 제 2 속성들이 메모리(6)에 주어지고, 이 메모리는 액세스가 메모리(6)에 의해 처리되는 방식을 결정하는 합성 속성을 결정하는 제어 로직을 가져도 된다.
도 6에서는, 1의 제어값이 하이퍼바이저의 "정규" 속성이 운영체계의 "장치" 속성을 무효로 해야 한다는 것을 나타내고, 0의 값이 운영체계의 "장치" 속성이 사용되어 한다는 것을 표시하는 예가 도시되어 있지만, 다른 예에서는, 반대의 매핑이 사용되어, 0과 1의 의미가 바뀌어도 된다. 도 6에 도시된 기술은, 로드 다중 명령이나 저장 다중 명령, 또는 인터럽트가 불가능한 경우에 긴 대기시간을 발생할 것으로 예측된 다른 액세스 명령들 등의 소정의 종류의 데이터 액세스 명령에 대해서만 사용되어도 된다. 다른 실시예에서는, 이 기술이 모든 데이터 액세스 명령에 대해 사용될 수도 있다. 도 6에 도시된 기술이 사용되지 않는 명령에 대해서는, 제 1 및 제 2 MPU(20, 22)에 의해 명시된 각각의 속성들 중에서 가장 제한적인 속성이 취해진다(제어값(100)이 도 6에 도시된 것과 같이 0의 값을 갖는 경우와 유사하다).
또한, 제어값(100)이 주어지지 않고 본 발명을 구현하는 것이 가능하다. 이와 같은 경우에, 소정 종류의 명령에 대해, MPU 22가 제 1 MPU(22)를 항상 무효로 하여, 하이퍼바이저(10)가 트랜잭션을 "정규" 종류인 것으로 지정하는 경우에, 운영체계(12)가 그것을 "장치" 종류로 지정하더라도, 이 트랜잭션이 인터럽트될 수도 있다.
또한, 도 6에 도시된 기술은, 명령이 기저 특권 레벨 EL0 또는 제 1 특권 레벨 EL1에서 실행될 때 소정 종류의 데이터 액세스 명령에 대해서만 사용되어도 된다. 하이퍼바이저 레벨 띠2에 의해 실행된 데이터 액세스 명령은 이 기술을 적용하지 않아도 되고, 그 대신에, 동일한 어드레스에 대해 제 1 MPU(20)에 의해 설정된 속성에 무관하게, 제 2 MPU(22)에 의해 설정된 허가에 근거하여 장치 종류 또는 정규 종류 명령인 것으로 처리되어도 된다(도 6에 도시된 것과 같이 제어값이 1인 경우와 유사하다).
일부 시스템에서는, 이 기술이 더욱 일반적으로 적용되어, 더 낮은 특권 레벨에서 실행되는 소정 종류의 데이터 액세스 명령이 인터럽트될 수 있는지 아닌지를 제어하기 위해, 더 높은 특권 레벨에서 실행되는 소프트웨어에 의해 설정되는 제어 비트(100)를 제공해도 된다. 즉, 더 높은 특권 레벨과 더 낮은 특권 레벨 소프트웨어가 각각 특권 레벨 EL2, EL1에서 실행되는 소프트웨어일 필요는 없으며, 그 대신에 특권 레벨들의 계층 내부의 임의의 2개의 특권 레벨에서 동작해도 된다.
도 8은 데이터 액세스 명령에 대한 메모리 액세스 속성을 결정하는 방법의 일례를 개략적으로 나타낸 것이다. 스텝 100에서, 프로세서(4)가 소정의 데이터 액세스(본 실시예에서는, 기저 특권 레벨 EL 또는 제 1 특권 레벨 EL1에서 실행되는 소프트웨어로부터의 로드 다중 명령 또는 저장 다중 명령)를 실행할 예정인지 여부를 판정한다. 실행할 예정이 아닌 경우에는, 데이터 액세스 명령에 대한 메모리 액세스 속성이 종래기술에서 알려진 것과 같은 다른 방식으로 결정된다. 한편, 로드 또는 저장 다중 명령이 특권 레벨 EL0 또는 EL1에서 마주친 경우에는, 스텝 102로 처리를 진행하여, 제 2 MPU(22)가 이 명령에 대한 제 2 속성을 판정한다. 제 2 속성이 장치 종류인 경우에는, 스텝 104에서 이 명령에 대한 전체 액세스 속성이 장치 종류로서 결정되고, 메모리(6)에 명령이 내려진다. 따라서, 데이터 액세스가 인터럽트되거나 재배열될 수 없으므로, 프로세서(4)는 다른 액세스를 실행하기 전에 로드 또는 저장 다중 명령의 완료에 전념한다.
한편, 스텝 102에서, 데이터 액세스가 정규 종류의 액세스인 것으로 제 2 MPU가 판정하면, 스텝 106에서 제 1 MPU(20)가 이 데이터 액세스 명령에 대한 속성을 판정한다. 실제로는, 스텝 102 및 106이 각각의 MPU(20, 22)에 의해 병렬로 행해지거나, 스텝 102 이전에 스텝 106이 행해져도 된다. 제 1 MPU(20)에 의해 스텝 106에서 결정된 제 1 속성이 정규인 경우(즉, 모든 MPU들(20, 22)이 액세스를 정규인 것으로 정의한 경우), 스텝 108에서 이 명령에 대해 전체 액세스 속성(100)이 정규인 것으로 결정된다. 따라서, 필요한 경우에 다중 로드 또는 저장 명령이 인터럽트될 수 있다.
한편, 스텝 106에서 속성이 장치 종류인 것으로 결정되면(즉, 하이퍼바이저(10)가 트랜잭션을 정규인 것으로 결정하고 운영체계가 그것을 장치인 것으로 정의하면), 스텝 110에서, 시스템이 제어 비트(100)를 검사한다. 제어 비트가 제 1 값(본 실시예에서는 1)을 갖는 경우에는, 스텝 112에서 전체 속성이 정규인 것으로 설정되어 명령이 인터럽트 불가능한 것으로 표시한다. 따라서, 하이퍼바이저는 운영체계(12)에 의해 설정된 장치 종류 표시를 무효로 한다. 그러나, 운영체계(12)에 의해 설정된 장치 종류 표시와 관련된 트랜잭션의 적어도 한 개의 다른 프로퍼티가 유지되어도 된다. 예를 들어, 트랜잭션이 다른 트랜잭션이 비해 재배열되지 않으므로, 트랜잭션들이 그들의 원래의 순서로 메모리 버스 상에 나타난다는 사실이 유지되어도 된다. 또한, 운영체계(12)에 따라 제 1 MPU(20)에 의해 정의된 캐시 판독/기록 정책 정보도 유지되어도 된다. 한편, 제어 비트(110)가 제 2 값(예를 들어, 0)을 갖는 경우에는, 스텝 114에서 이 명령에 대한 속성이 장치 종류로 설정되므로, 이 명령이 메모리(6)에 내려질 때 인터럽트될 수 없다. 이와 같은 경우에는, 제 1 MPU(20)에 의해 제공된 더욱 제한적인 장치 표시가 취해진다.
특정한 실시예들을 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며 본 발명의 보호범위 내에서 다수의 변형 및 추가가 행해질 수 있다는 것은 자명하다. 예를 들어, 본 발명의 보호범위를 벗어나지 않으면서, 독립항의 특징과 이하의 종속항들의 특징의 다양한 조합이 이루어질 수도 있다.

Claims (16)

  1. 데이터 처리장치로서,
    데이터를 처리하도록 구성된 처리회로와,
    데이터를 기억하도록 구성된 데이터 저장소를 구비하고,
    상기 처리회로는, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고, 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성되고,
    상기 데이터 저장소에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하도록 구성되고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
    상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성된 데이터 처리장치.
  2. 제 1항에 있어서,
    상기 소정의 종류의 데이터 액세스 명령은 복수의 처리 사이클에 걸쳐 실행될 데이터 액세스 명령을 포함하는 데이터 처리장치.
  3. 제 1항 또는 제 2항에 있어서,
    상기 소정의 종류의 데이터 액세스 명령은 상기 제 1 소프트웨어의 명령 또는 상기 제 1 소프트웨어의 제어하에서 실행되는 또 다른 소프트웨어의 명령을 포함하는 데이터 처리장치.
  4. 제 1항 또는 제 2항에 있어서,
    상기 처리회로는 복수의 운영체계를 지원하고, 상기 제 1 소프트웨어는 상기 복수의 운영체계 중에서 한 개를 포함하고, 상기 제 2 소프트웨어는 상기 복수의 운영체계를 관리하는 하이퍼바이저를 포함하는 데이터 처리장치.
  5. 제 1항 또는 제 2항에 있어서,
    상기 소정의 종류의 데이터 액세스 명령은, 상기 데이터 저장소로부터 상기 데이터 처리장치의 복수의 레지스터에 데이터를 로드하는 로드 다중 명령, 또는 상기 데이터 처리장치의 복수의 레지스터로부터 상기 데이터 저장소에 데이터를 기억하는 저장 다중 명령을 포함하는 데이터 처리장치.
  6. 제 1항 또는 제 2항에 있어서,
    상기 데이터 처리장치는 제어값을 유지하도록 구성되고,
    상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 상기 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는 상기 제어값에 근거하여 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 액세스 속성이 명시하는지 여부를 판정하도록 구성된 데이터 처리장치.
  7. 제 6항에 있어서,
    상기 소정의 종류의 데이터 액세스 명령에 대해,
    상기 제어값이 제 1 값을 갖는 경우에는, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 처리장치가 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다고 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성되고,
    상기 제어값이 제 2 값을 갖는 경우에, 상기 데이터 처리장치는, 상기 적어도 한 개의 제 1 속성에 근거하여, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는 것으로 상기 적어도 한 개의 액세스 속성이 명시하는지 여부를 판정하도록 구성된 데이터 처리장치.
  8. 제 6항에 있어서,
    상기 처리회로는 상기 제 2 소프트웨어에 응답하여 상기 제어값을 설정하도록 구성된 데이터 처리장치.
  9. 제 1항 또는 제 2항에 있어서,
    상기 데이터 액세스 명령의 실행이 인터럽트될 수 없는 것으로 상기 적어도 한 개의 제 1 속성이 명시할 때, 상기 데이터 처리장치가 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는 것으로 명시하는 상기 적어도 한 개의 액세스 속성을 결정하는 경우, 상기 데이터 처리장치는 상기 적어도 한 개의 제 1 속성에 근거하여 결정된 상기 데이터 액세스 명령의 적어도 한 개의 다른 프로퍼티를 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성된 데이터 처리장치.
  10. 제 9항에 있어서,
    상기 적어도 한 개의 다른 프로퍼티는,
    (i) 상기 소정의 종류의 데이터 액세스 명령의 실행이 다른 데이터 액세스 명령들의 실행에 대해 재배열될 수 있는지 여부와,
    (ii) 상기 데이터 액세스 명령에 응답하여 액세스된 데이터가 캐시에 기억되는 방식을 제어하는 캐시 정책 정보 중에서
    적어도 한 개를 포함하는 데이터 처리장치.
  11. 제 1항 또는 제 2항에 있어서,
    상기 적어도 한 개의 액세스 속성, 상기 적어도 한 개의 제 1 속성 및 상기 적어도 한 개의 제 2 속성 각각은, 상기 데이터 액세스 명령이 인터럽트될 수 있는 정규 종류의 데이터 액세스 명령인지 또는 인터럽트될 수 없는 장치 종류의 데이터 액세스 명령인지 식별하는 데이터 처리장치.
  12. 제 1항 또는 제 2항에 있어서,
    상기 데이터 액세스 명령은 상기 데이터 저장소 내부의 위치의 어드레스를 명시하고, 상기 데이터 처리장치는 상기 어드레스의 적어도 일부에 근거하여 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성을 결정하도록 구성된 데이터 처리장치.
  13. 제 1항 또는 제 2항에 있어서,
    상기 적어도 한 개의 제 1 속성을 정의하는 제 1 데이터를 기억하도록 구성된 제 1 메모리 속성 유닛을 구비하고, 상기 처리회로는 상기 제 1 소프트웨어에 응답하여 상기 제 1 데이터를 설정하도록 구성된 데이터 처리장치.
  14. 제 1항 또는 제 2항에 있어서,
    상기 적어도 한 개의 제 2 속성을 정의하는 제 2 데이터를 기억하도록 구성된 제 2 메모리 속성 유닛을 구비하고, 상기 처리회로는 상기 제 2 소프트웨어에 응답하여 상기 제 2 데이터를 설정하도록 구성된 데이터 처리장치.
  15. 데이터 처리장치로서,
    데이터를 처리하는 처리수단과,
    데이터를 기억하는 데이터 기억수단을 구비하고,
    상기 처리수단은, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고, 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성되고,
    상기 데이터 기억수단에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하도록 구성되고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
    상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 처리장치는, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하도록 구성된 데이터 처리장치.
  16. 데이터를 처리하도록 구성된 처리회로와 데이터를 기억하도록 구성된 데이터 저장소를 구비하고, 상기 처리회로가 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성된, 데이터 처리장치에 대한 데이터 처리방법으로서,
    상기 데이터 저장소에 있는 데이터를 액세스하기 위한 데이터 액세스 명령에 응답하여, 상기 제 1 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 1 속성과 상기 제 2 소프트웨어에 근거하여 설정하는 적어도 한 개의 제 2 속성에 근거하여 상기 데이터 액세스 명령에 대한 적어도 한 개의 액세스 속성을 결정하는 단계를 포함하고, 상기 적어도 한 개의 제 1 속성과 상기 적어도 한 개의 제 2 속성 각각은 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있는지 여부를 명시하고,
    상기 데이터 처리방법은,
    상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 상기 적어도 한 개의 제 2 속성이 명시하는 소정의 종류의 데이터 액세스 명령에 응답하여, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 없다는 것을 상기 적어도 한 개의 제 1 속성이 명시하더라도, 상기 데이터 액세스 명령의 실행이 인터럽트될 수 있다는 것을 명시하는 상기 적어도 한 개의 액세스 속성을 결정하는 단계를 더 포함하는 데이터 처리방법.
KR1020167005602A 2013-08-23 2014-07-15 데이터 액세스를 위한 액세스 속성의 처리 KR102269912B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1315108.9A GB2517493A (en) 2013-08-23 2013-08-23 Handling access attributes for data accesses
GB1315108.9 2013-08-23
PCT/GB2014/052154 WO2015025129A1 (en) 2013-08-23 2014-07-15 Handling access attributes for data accesses

Publications (2)

Publication Number Publication Date
KR20160045735A KR20160045735A (ko) 2016-04-27
KR102269912B1 true KR102269912B1 (ko) 2021-06-28

Family

ID=49355838

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005602A KR102269912B1 (ko) 2013-08-23 2014-07-15 데이터 액세스를 위한 액세스 속성의 처리

Country Status (10)

Country Link
US (2) US10354092B2 (ko)
EP (1) EP3036622B1 (ko)
JP (1) JP6511446B2 (ko)
KR (1) KR102269912B1 (ko)
CN (1) CN105453029B (ko)
BR (1) BR112016002977B1 (ko)
GB (1) GB2517493A (ko)
IL (1) IL243889B (ko)
TW (1) TWI630554B (ko)
WO (1) WO2015025129A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2940575B1 (en) * 2014-05-02 2018-05-09 Nxp B.V. Controller circuits, data interface blocks, and methods for transferring data
GB2546742B (en) 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
US11205152B1 (en) * 2016-03-18 2021-12-21 Amazon Technologies, Inc. Virtual logistical network overlay for physical logistical network
GB2564400B (en) * 2017-07-06 2020-11-25 Advanced Risc Mach Ltd Graphics processing
EP3726390B1 (en) * 2018-02-02 2024-04-24 Huawei Technologies Co., Ltd. Method and device for protecting kernel integrity
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) * 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
GB2578135B (en) 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2392998A (en) 2002-09-16 2004-03-17 Advanced Risc Mach Ltd Handling interrupts during multiple access program instructions
US20040054831A1 (en) 2000-12-01 2004-03-18 Rikard Johansson Method and computer device with different criticality
US20060031838A1 (en) 2004-08-06 2006-02-09 Rabih Chrabieh Method and apparatus for implementing priority management of computer operations
US20080046621A1 (en) 2004-09-29 2008-02-21 Naoto Okino Information Processing Apparatus, Interrupt Process Control Method, and Computer Program

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4087856A (en) * 1976-06-30 1978-05-02 International Business Machines Corporation Location dependence for assuring the security of system-control operations
JPS55112651A (en) * 1979-02-21 1980-08-30 Fujitsu Ltd Virtual computer system
US5325536A (en) * 1989-12-07 1994-06-28 Motorola, Inc. Linking microprocessor interrupts arranged by processing requirements into separate queues into one interrupt processing routine for execution as one routine
JP2759407B2 (ja) 1993-04-15 1998-05-28 ローレルバンクマシン株式会社 硬貨包装機
US5889973A (en) * 1995-03-31 1999-03-30 Motorola, Inc. Method and apparatus for selectively controlling interrupt latency in a data processing system
FR2775370B1 (fr) * 1998-02-20 2001-10-19 Sgs Thomson Microelectronics Procede de gestion d'interruptions dans un microprocesseur
US6574736B1 (en) * 1998-11-30 2003-06-03 Microsoft Corporation Composable roles
DE10206865C1 (de) * 2002-02-18 2003-05-15 Daimler Chrysler Ag Reaktionszeit-Beschränkung eines Software-Prozesses
US20040005483A1 (en) * 2002-03-08 2004-01-08 Chhiu-Tsu Lin Perovskite manganites for use in coatings
US7944953B2 (en) * 2002-04-03 2011-05-17 Tvworks, Llc Method and apparatus for transmitting data in a data stream
JP2004139503A (ja) 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
US20040168047A1 (en) * 2003-02-24 2004-08-26 Matsushita Electric Industrial Co., Ltd. Processor and compiler for creating program for the processor
US7543331B2 (en) * 2003-12-22 2009-06-02 Sun Microsystems, Inc. Framework for providing a configurable firewall for computing systems
US7147938B2 (en) * 2004-06-30 2006-12-12 Eastman Kodak Company Organic element for electroluminescent devices
US20060064528A1 (en) * 2004-09-17 2006-03-23 Hewlett-Packard Development Company, L.P. Privileged resource access
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20060218425A1 (en) 2005-02-25 2006-09-28 Zhimin Ding Integrated microcontroller and memory with secure interface between system program and user operating system and application
JP2007004661A (ja) * 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8726292B2 (en) * 2005-08-25 2014-05-13 Broadcom Corporation System and method for communication in a multithread processor
US8443188B2 (en) * 2006-11-30 2013-05-14 Microsoft Corporation Using code access security for runtime accessibility checks
US8869294B2 (en) * 2006-12-05 2014-10-21 Intel Corporation Mitigating branch prediction and other timing based side channel attacks
US8136091B2 (en) * 2007-01-31 2012-03-13 Microsoft Corporation Architectural support for software-based protection
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
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
KR101496329B1 (ko) * 2008-03-28 2015-02-26 삼성전자주식회사 네트워크의 디바이스 보안 등급 조절 방법 및 장치
US8347380B1 (en) * 2008-06-30 2013-01-01 Symantec Corporation Protecting users from accidentally disclosing personal information in an insecure environment
US8450300B2 (en) * 2009-07-13 2013-05-28 Cempra Pharmaceuticals Inc. Fusidic acid dosing regimens for treatment of bacterial infections
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US8489789B2 (en) * 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US8826231B1 (en) * 2010-06-28 2014-09-02 The Boeing Company Methods and systems for deploying software applications
JP5541036B2 (ja) * 2010-09-21 2014-07-09 富士通株式会社 メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US8898459B2 (en) * 2011-08-31 2014-11-25 At&T Intellectual Property I, L.P. Policy configuration for mobile device applications
US8695010B2 (en) * 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
US8856789B2 (en) * 2012-09-06 2014-10-07 Assured Information Security, Inc. Facilitating execution of a self-modifying executable
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
KR101920980B1 (ko) * 2014-03-19 2018-11-21 인텔 코포레이션 멀티-운영 체제 디바이스들에 대한 액세스 격리
US9747218B2 (en) * 2015-03-20 2017-08-29 Mill Computing, Inc. CPU security mechanisms employing thread-specific protection domains
US9870466B2 (en) * 2015-09-26 2018-01-16 Mcafee, Inc. Hardware-enforced code paths
US20170123800A1 (en) * 2015-11-04 2017-05-04 International Business Machines Corporation Selective resource activation based on privilege level
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US10650156B2 (en) * 2017-04-26 2020-05-12 International Business Machines Corporation Environmental security controls to prevent unauthorized access to files, programs, and objects
US10635831B1 (en) * 2018-01-06 2020-04-28 Ralph Crittenden Moore Method to achieve better security using a memory protection unit
US11042485B2 (en) * 2018-06-20 2021-06-22 Vmware, Inc. Implementing firmware runtime services in a computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040054831A1 (en) 2000-12-01 2004-03-18 Rikard Johansson Method and computer device with different criticality
GB2392998A (en) 2002-09-16 2004-03-17 Advanced Risc Mach Ltd Handling interrupts during multiple access program instructions
US20060031838A1 (en) 2004-08-06 2006-02-09 Rabih Chrabieh Method and apparatus for implementing priority management of computer operations
US20080046621A1 (en) 2004-09-29 2008-02-21 Naoto Okino Information Processing Apparatus, Interrupt Process Control Method, and Computer Program

Also Published As

Publication number Publication date
TW201514857A (zh) 2015-04-16
JP6511446B2 (ja) 2019-05-15
WO2015025129A1 (en) 2015-02-26
US10354092B2 (en) 2019-07-16
JP2016532205A (ja) 2016-10-13
GB201315108D0 (en) 2013-10-09
EP3036622B1 (en) 2018-03-07
US20190286831A1 (en) 2019-09-19
EP3036622A1 (en) 2016-06-29
IL243889B (en) 2019-05-30
IL243889A0 (en) 2016-04-21
KR20160045735A (ko) 2016-04-27
BR112016002977A2 (ko) 2017-08-01
US20160210465A1 (en) 2016-07-21
CN105453029B (zh) 2018-11-09
CN105453029A (zh) 2016-03-30
BR112016002977B1 (pt) 2022-06-21
US11055440B2 (en) 2021-07-06
GB2517493A (en) 2015-02-25
TWI630554B (zh) 2018-07-21

Similar Documents

Publication Publication Date Title
KR102269912B1 (ko) 데이터 액세스를 위한 액세스 속성의 처리
JP7245779B2 (ja) Tlbまたはキャッシュ割り当ての分割
JP7065099B2 (ja) メモリシステムリソースの分割または性能監視
EP2954419B1 (en) Virtualisation supporting guest operating systems using memory protection units
JP7265478B2 (ja) メモリ分割
JP7065098B2 (ja) メモリシステムリソースの分割または性能監視
JP6158952B2 (ja) データ処理装置のメモリ・アクセス動作の操作
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
JP7128822B2 (ja) メモリシステムリソースの分割または性能監視
US10248418B2 (en) Cleared memory indicator
KR20210034027A (ko) 메모리 시스템에 저장된 메모리 보호 테이블을 사용하는 메모리 보호 유닛
JP2022547545A (ja) ページテーブルウォークメモリトランザクションのためのパーティション識別子
US11237985B2 (en) Controlling allocation of entries in a partitioned cache
US6895583B1 (en) Task control block for a computing environment
TW202246989A (zh) 映射分區識別符
US11734011B1 (en) Context partitioning of branch prediction structures

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