KR102051816B1 - 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템 - Google Patents

메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템 Download PDF

Info

Publication number
KR102051816B1
KR102051816B1 KR1020157023132A KR20157023132A KR102051816B1 KR 102051816 B1 KR102051816 B1 KR 102051816B1 KR 1020157023132 A KR1020157023132 A KR 1020157023132A KR 20157023132 A KR20157023132 A KR 20157023132A KR 102051816 B1 KR102051816 B1 KR 102051816B1
Authority
KR
South Korea
Prior art keywords
memory
processing circuitry
permissions
address
virtual
Prior art date
Application number
KR1020157023132A
Other languages
English (en)
Other versions
KR20150117278A (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 KR20150117278A publication Critical patent/KR20150117278A/ko
Application granted granted Critical
Publication of KR102051816B1 publication Critical patent/KR102051816B1/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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/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/45583Memory management, e.g. access or allocation
    • 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/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Abstract

프로세서(20)에는, 제1 세트의 허가를 적용하는 제1 메모리 보호 유닛(38)과, 제2 세트의 허가를 적용하는 제2 메모리 보호 유닛(40)이 구비되어 있다. 메모리 액세스는, 제1 세트의 허가와 제2 세트의 허가 양쪽이 충족되는 경우만 허가될 것이다. 또한, 상기 프로세서는, 가상 어드레스 VA로부터 물리 어드레스 PA로 변환하는 기능을 하는 메모리 관리 유닛(42)을 구비한다. 상기 제1 메모리 보호 유닛(38)과 제2 메모리 보호 유닛(40)의 선택 가능한 유닛은 게스트 오퍼레이팅 시스템이 실행하는 예외 레벨보다 높은 특권을 갖는 예외 레벨에서 실행하는 하이퍼바이저 프로그램(2)에 의해 설정된 선택 비트의 제어하에 임의의 주어진 시간에 액티브이다.

Description

메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템{VIRTUALISATION SUPPORTING GUEST OPERATING SYSTEMS USING MEMORY PROTECTION UNITS}
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 보다 구체적으로, 본 발명은, 데이터 처리 시스템내에서 메모리 보호 유닛들의 제공 및 이용에 관한 것이다.
데이터 처리 시스템에, 상기 시스템상에서 프로그램을 실행하여서 메모리 영역들에의 액세스를 제어하기 위한 메모리 보유 유닛(MPU)들을 제공하는 것이 알려져 있다. 메모리 보호 유닛들은, 물리 어드레스를 수신하고, 일 세트의 액세스 허가에 따라 메모리 액세스 동작이 허가되었는지 아닌지를 판정한다. 메모리 보호 유닛들은, 특별한 처리 태스크들을 완료하는데 얼마나 오래 걸리는지에 대해서 결정적 작용을 갖는 것이 바람직한 실시간 시스템내에서 사용하는데 아주 적절하다. 이러한 시스템내에서, 가상 어드레싱의 이용은, 가상 어드레스를 물리 어드레스로 변환하는 필요한 변환 데이터를 검색하기 위해서 메인 메모리내에 페이지 테이블 워킹(walking)을 필요하는 변환 색인 버퍼 미스(miss)로 인해 오래 지연시킬 수 있을 가능성이 있기 때문에 문제가 된다.
처리 시스템의 기술이 진보됨에 따라, 행해질 수도 있는 단위 시간당 처리량의 면에서 상기 시스템들의 성능의 향상을 수반한다. 가능한 경우 데이터 처리 시스템의 비용을 줄이기 위한 계속되는 압력이 추가된다.
본 발명의 일 국면에서 본 데이터 처리장치는,
프로그램 명령어들의 스트림을 실행하는 처리 회로소자;
상기 처리 회로소자에서 행할 메모리 액세스 동작용 메모리내에 메모리 어드레스 위치를 직접 지정하는 물리 어드레스를 수신하고,
상기 메모리 액세스 동작이 허가되었는지 아닌지를 제1 세트의 허가에 따라 판정하도록 구성된,
제1 메모리 보호 유닛; 및
상기 물리 어드레스를 수신하고,
상기 메모리 액세스 동작이 허가되었는지 아닌지를 제2 세트의 허가에 따라 판정하도록 구성된,
제2 메모리 보호 유닛을 구비함에 따라서,
상기 메모리 액세스 동작은, 상기 제1 세트의 허가와 상기 제2 세트의 허가의 양쪽을 충족하는 경우에만 허가된다.
본 기술은, 제1 메모리 보호 유닛과 제2 메모리 보호 유닛 양쪽을 구비하는 데이터 처리 장치를 제공하고; 메모리 액세스 동작은 이들 양쪽의 메모리 보호 유닛에 의해 감시된 허가를 충족하는 경우만 허가된다, 예를 들면 상기 제1 메모리 보호 유닛은 (물리 어드레스 모두를 사용하는) 게스트 실시간 오퍼레이팅 시스템 대신에 상기 제1 세트의 액세스 허가를 적용하고, 상기 제2 메모리 보호 유닛은 다수의 게스트 오퍼레이팅 시스템간에 기반 하드웨어의 셰어링을 관리하는 하이퍼바이저 프로그램 대신에 상기 제2 세트의 액세스 허가를 적용한다. 이러한 형태의 시스템은, 각 가상 실시간 시스템은 상기 제1 메모리 보호 유닛을 사용하여 그 메모리 액세스 허가를 강요하고 나서, 상기 게스트 오퍼레이팅 시스템을 관리하는 하이퍼바이저는 상기 제2 메모리 보호 유닛을 사용하여 상기 하이퍼바이저에 의해 감시된 액세스 허가들을 강요하여도 된다. 실시간 프로세서의 가상화는, 통상, 실시간 프로세서의 결정적 작용을 받아들이기 어려울 정도로 타협하는 것과 충분히 적절하게 처리 태스크들을 행하는 능력을 잠재적으로 금지시키는 것으로서 간주될 때 본 기술분야 내에서 접수된 지혜와 편견에 대처한다. 그렇지만, 본 기술은, 프로세서 기술의 진보에 의해 제공된 처리 속도의 증가에 따라, 허용 처리속도와 응답성의 레벨을 그럼에도 불구하고 유지하면서 실시간 프로세서를 가상화하는 것이 가능하다고 인지한다. 하이퍼바이저에 관련된 허가들을 강요하기 위해 물리 어드레스들로 작동하는 제2 메모리 보호 유닛뿐만 아니라 상기 가상화된 실시간 프로세서에 관련된 상기 허가들을 강요하기 위해 물리 어드레스들로도 작동하는 제1 메모리 보호 유닛의 이용은, 가상 어드레스들을 핸들링하는 것에 관련된 무한한 지연이 가상화된 실시간 프로세서에도 제공될 수 있는 이점이 있다. 가상화된 실시간 프로세서를 제공하는 것은, 그 프로세서의 별개의 실제 인스턴스를 피할 수 있기 때문에 비용을 줄이는 이점이 있다.
가상화 실시간 프로세서와 하이퍼바이저 사이의 시큐리티의 관리는, 제1 예외 레벨에서 작동할 때 상기 처리 회로소자가 상기 제1 세트의 허가를 변경하게 허가되고 상기 제2 세트의 허가를 변경하게 허가되지 않고, 또한 제2 예외 레벨에서 작동할 때 상기 처리 회로소자가 상기 제2 세트의 허가를 변경하게 허가되도록, 상기 처리 회로소자를 구성하여서 예외 레벨의 계층을 지원하는 시스템내에서 실시되어도 된다. 따라서, 상기 제2 세트의 허가의 변경은, 상기 시스템이 상기 제2 예외 레벨에서 작동중이고 이에 따라서 하나 이상의 가상 실시간 프로세서(상기 제1 예외 레벨에서 작동하는 상기 게스트 오퍼레이팅 시스템)를 관리하는 (상기 제2 예외 레벨에서 작동하는) 하이퍼바이저의 시큐리티가 보호될 수도 있을 때 이외는 보호될 수 있다.
상기 프로세서는, 각각 선택된 실시간 오퍼레이팅 시스템을 실행하고 제1 세트의 허가와 관련된 다수의 실시간 프로세서를 지원하기도 한다. 또한, 상기 시스템은, 그래픽 유저 인터페이스(GUI)를 지원하는, "리치" 오퍼레이팅 시스템 등의 상기 실시간 동작 제약을 갖지 않는 하나 이상의 또 다른 프로세서와 조합하여 하나 이상의 가상화된 실시간 프로세서를 제공할 수도 있는 것이 가능하다.
상기 제1 메모리 보호 유닛과 상기 제2 메모리 보호 유닛은, 일부의 실시예에서 완전히 별개의 회로소자로서 구성되어도 된다는 것을 알 것이다. 그 밖의 실시예에서, 상기 제1 메모리 보호 유닛과 상기 제2 메모리 보호 유닛의 구현은 자신의 하드웨어 일부나 전부를 공유하도록 되는 것도 가능하다. 일부의 실시예에서, 먼저, 상기 제1 메모리 보호 유닛으로서 기능하도록 현재 액티브 게스트 오퍼레이팅 시스템의 상기 제1 세트의 허가를 강요하도록 작동하고 나서 상기 하이퍼바이저의 상기 제2 세트의 허가를 강요하도록 작동해서, 상기 제2 메모리 보호 유닛으로서 기능하는, 단일 세트의 하드웨어를 제공하는 것이 가능하기도 하다.
본 기술의 다수의 프로세서를 가상화하는 능력은, 가상 어드레스를 수신하여 메모리 매핑 데이터에 따라 물리 어드레스로 변환하는 기능을 하는 메모리 관리 유닛을 제공하여서도 개선되어도 된다. 이러한 메모리 관리 유닛의 제공으로 상기 장치가 가상 메모리와 작동하는 프로세서를 가상화시킨다. 상기 메모리 관리 유닛은, 상기 메모리 매핑 데이터내의 일 세트의 가상 메모리 허가에 따라 가상 메모리 액세스 동작을 허가하거나 허가지 않는 기능을 하기도 한다.
상기 하이퍼바이저의 시큐리티는, 상기 처리 회로소자가 상기 제1 예외 레벨에서 작동중일 때 상기 메모리 매핑 데이터를 변경하게 허가되고 상기 하이퍼바이저에서 사용한 상기 제2 세트의 허가를 변경하게 허가되지 않도록 상기 처리 회로소자를 구성하여서 지원되기도 한다.
상기 실시간 프로세서의 가상화와 가상 메모리를 지원하는 프로세서의 가상화간의 전환은, 상기 처리 회로소자가 상기 제1 예외 레벨(또는 액세스 권한이 거의 없는 하위 예외 레벨(하위 특권)에서 계속해서 작동하는 동안 액티브가 될 상기 제1 메모리 보호 유닛 또는 메모리 관리 유닛 중 한쪽의 유닛을 선택하기 위해 (하이퍼바이저 레벨일 수도 있는) 제2 예외 레벨로부터 (실시간 오퍼레이팅 시스템의 커널이나 가상 메모리를 지원하는 오퍼레이팅 시스템의 커널일 수도 있는) 제1 예외 레벨로 변환할 때 이들 옵션간의 전환을 행하도록 작동하는 선택 회로소자에 의해 실시되어도 된다. 따라서, 상기 시스템은, 상기 제2 예외 레벨로부터 상기 제1 예외 레벨로 복귀할 때 액티브가 될 상기 제1 메모리 보호 유닛 또는 메모리 관리 유닛 중 한쪽간에 선택한다.
상기 처리 회로소자는, 상기 시스템이 제2 예외 레벨에서 작동 중일 때 기록되는 선택 비트에 따라 제어되어도 된다. 시큐리티는, 상기 제1 예외 레벨에서 작동할 때 상기 처리 회로소자에 의해 상기 선택 비트가 기록 가능하지 않을 때 향상됨으로써, 상기 제2 예외 레벨에서 선택된 것처럼 상기 제1 메모리 보호 유닛이나 상기 메모리 관리 유닛 중 한쪽이 반드시 상기 제1 예외 레벨에서 행해진 처리동안에 사용하고 있도록 한다.
서로 다른 프로세서의 가상화간의 전환은, 상기 제1 예외 레벨로부터 상기 제2 예외 레벨로의 전환시에 콘텍스트 데이터를 기억하고 이 콘텍스트 데이터를 상기 제2 예외 레벨로부터 상기 제1 예외 레벨로 전환시에 회복하도록 구성된 예외 제어 회로소자에 의해 실시되어도 된다. 이 콘텍스트 데이터는 상기 선택 비트를 포함하여도 된다. 레지스터 콘텐츠, 구성 데이터 등의 각 세트의 콘텍스트 데이터는, 서로 다른 가상화된 프로세서에 관련되어도 된다.
상기 메모리 관리 유닛은 서로 다른 다양한 형태를 취할 수도 있지만, 적어도 일부의 실시예에서 변환 데이터 매핑 가상 어드레스들을 물리 어드레스들에 기억하도록 구성된 변환 색인 버퍼를 구비한다. 상기 메모리 관리 유닛은, 상기 메모리 매핑 데이터를 판정하기 위해 상기 메인 메모리내에 기억된 페이지 데이터를 통해 페이지 테이블 워크 동작을 행하도록 구성되어도 되고; 상기 메모리 매핑 데이터의 양은 일반적으로 많음에 따라서 상기 메모리 관리 유닛내에 동시에 통상적으로 전부 보유될 수 없다.
본 기술의 적어도 일부의 실시예에서 지원한 것과 같은 가상 메모리를 사용한 프로세서들은, 그래픽 유저 인터페이스를 지원하며 가상 메모리 어드레스 공간을 사용하는, 비실시간 오퍼레이팅 시스템과 하나 이상의 어플리케이션 프로그램을 실행할 수도 있다. 이러한 그래픽 유저 인터페이스를 사용한 오퍼레이팅 시스템들과 어플리케이션 프로그램들은, 보장된 최대 메모리 액세스 지연들과 그 밖의 실시간 제약들을 필요로 하지 않는 처리의 타입에 관련되는 것이 일반적이므로 실시간 동작 제약들의 대상이 되지 않는 것이 일반적이다.
상기 가상화된 실시간 프로세서와, 가상 메모리를 사용한 가상화된 프로세서와의 안전한 분리는, 상기 제1 메모리 보호 유닛이 액티브일 경우, 상기 제1 세트의 허가가 상기 처리 회로소자에 의해 기록될 수도 있고, 상기 메모리 매핑 데이터를 판정하는 페이지 테이블 데이터의 시작 위치를 가리키는 변환 테이블 베이스 레지스터 값이 상기 처리 회로소자에 의해 기록되지 않을 수도 있는, 시스템에 의해 실시되어도 된다. 따라서, 상기 가상화된 실시간 프로세서는, 가상화된 메모리를 사용한 상기 가상화된 프로세서에 관련된 구성을 변경하는 것을 막는다. 반대로, 상기 메모리 관리 유닛이 액티브일 경우, 상기 처리 회로소자는, 상기 제1 세트의 허가를 변경하지 않고 상기 변환 테이블 베이스 레지스터 값을 변경할 수 있도록 구성되어도 된다. 따라서, 상기 가상 메모리를 사용한 가상화된 프로세서는, 상기 변환 테이블 베이스 레지스터 값과 같은 그 자신의 구성을 갱신할 수 있지만, 상기 가상화된 실시간 프로세서에 관련된 상기 제1 세트의 허가 데이터를 변경하는 것을 막는다.
일부의 실시예에서, 상기 제1 세트의 허가 및 변환 베이스 레지스터 값은, 상기 처리 회로소자에 결합된 코프로세서내에 레지스터 매핑된 값들로서 기억되어도 된다. 코프로세서내 레지스터 매핑된 값의 형태로 이러한 구성 데이터를 제공하는 것에 의해 적절한 경우 쉽게 액세스 될 수 있고, 반대로 적절한 예외 레벨 제어에 따라 또는 상기 제1 메모리 보호 유닛이나 상기 메모리 관리 유닛이 액티브인지에 따라 쉽게 보호될 수 있다.
본 발명의 다른 국면에 따른 데이터 처리 방법은,
처리 회로소자에 의해 프로그램 명령어들의 스트림을 실행하는 단계;
제1 메모리 보호 유닛을 사용하여,
상기 처리 회로소자에서 행할 메모리 액세스 동작용 메모리내에 메모리 어드레스 위치를 직접 지정하는 물리 어드레스를 수신하고,
상기 메모리 액세스 동작이 허가되었는지 아닌지를 제1 세트의 허가에 따라 판정하는 단계; 및
제2 메모리 보호 유닛을 사용하여,
상기 물리 어드레스를 수신하고,
상기 메모리 액세스 동작이 허가되었는지 아닌지를 제2 세트의 허가에 따라 판정하는 단계를 포함함에 따라서,
상기 메모리 액세스 동작은, 상기 제1 세트의 허가와 상기 제2 세트의 허가의 양쪽을 충족하는 경우에만 허가된다.
이제, 본 발명의 실시예들을 예시로만 아래의 첨부도면을 참조하여 설명하겠다:
도 1은 가상 메모리를 사용한 가상화된 프로세서와 함께 다수의 가상화된 실시간 프로세서를 지원하는 시스템을 개략적으로 도시한 것이고,
도 2는 메모리 관리 유닛과 함께 제1 및 제2 메모리 보호 유닛 양쪽을 제공하는 처리 시스템을 개략적으로 도시한 것이고,
도 3은 코프로세서내에 구성 데이터를 기억하는 것을 개략적으로 도시한 것이고,
도 4는 상기 제1 메모리 보호 유닛이 액티브일 경우 메모리 액세스의 핸들링을 개략적으로 도시하는 흐름도이고,
도 5는 메모리 관리 유닛이 액티브일 경우 메모리 액세스의 핸들링을 개략적으로 도시하는 흐름도이고,
도 6은 하이퍼바이저를 거쳐 가상화된 프로세서들과 서로 다른 관련된 예외 레벨들간의 전환을 개략적으로 도시한 도면이고,
도 7은 상기 제1 메모리 보호 유닛과 일치하게 동작하기 위한 어드레스 변환 유닛을 갖는 처리 시스템의 일례를 도시한 것이고,
도 8은 도 7의 처리 시스템의 서로 다른 오퍼레이팅 시스템의 메모리 액세스들의 핸들링을 개략적으로 도시한 것이고,
도 9는 메모리에 있어서, 메모리 액세스 동작을 위해 상기 처리 회로소자가 발생한 어드레스들을, 물리 위치를 특정하는 물리 어드레스들로 매핑하는 일례를 도시한 것이고,
도 10은 도 7의 처리 시스템용 코프로세서내에 구성 데이터를 기억하는 것을 도시한 것이고,
도 11은 상기 제1 메모리 보호 유닛, 상기 어드레스 변환 유닛 및 폴트 발생 회로소자를 도시한 것이고,
도 12는 상기 제1 메모리 보호 유닛에 기억된 일 세트의 허가 데이터의 일례를 도시한 것이고,
도 13은 상기 어드레스 변환 유닛에 기억된 어드레스 변환 엔트리의 일례를 도시한 것이고,
도 14는 상기 제1 메모리 보호 유닛에 의해 특별한 특권 레벨의 메모리 액세스가 허가되지 않는다고 판정되면 폴트 조건의 발생을 억제하는 일례를 도시한 것이고,
도 15는 상기 제1 메모리 검출 유닛의 허가 데이터를 갱신하는 레거시 인터페이스의 일례를 도시한 것이고,
도 16은 상기 제1 메모리 보호 유닛의 허가 데이터를 갱신하는 메인 인터페이스의 일례를 도시한 것이고,
도 17은 도 7의 시스템을 사용한 메모리 액세스 동작을 처리하는 방법을 도시하는 흐름도이고,
도 18은 상기 메모리 보호 유닛과 상기 어드레스 변환 유닛 각각에 대한 룩업 동작의 속도를 높이기 위한 메모리 보호 캐시와 어드레스 변환 캐시를 구비한 일례를 도시한 것이고,
도 19는 메모리 액세스 요구를 핸들링하는데 사용하기 위해 상기 메모리 보호 유닛과 상기 어드레스 변환 유닛 중 어느 한쪽을 선택하기 위한 선택부를 구비한 일례를 도시한 것이다.
도 1은 가상 메모리를 사용한 다수의 가상화된 실시간 프로세서와 가상화된 프로세서를 지원하는 시스템을 개략적으로 도시한 것이다. 하이퍼바이저 프로그램(2)은, 제2 예외 레벨 EL2에서 작동하고, 가상화된 프로세서간의 전환을 제어하여 이들 가상화된 프로세서들을 서로로부터 보호/격리하는 기능을 한다. 제1 가상화된 실시간 프로세서는, 제1 실시간 오퍼레이팅 시스템(4)을 사용하여 실시간 어플리케이션(6)의 실행을 지원한다. 상기 실시간 어플리케이션(6)과 상기 실시간 오퍼레이팅 시스템(4) 양쪽은, 메모리 액세스 동작을 지정할 때 물리 어드레스들 PA를 발생한다. 상기 실시간 어플리케이션(6)에서 발생한 물리 어드레스들 PA는, 상기 실시간 오퍼레이팅 시스템(4)에 의해 제어된 제1 메모리 보호 유닛에서 강요한 (상기 게스트 실시간 오퍼레이팅 시스템(4) 대신에) 제1 레벨의 메모리 보호의 대상이 된다. 상기 메모리 액세스 요구가 이 제1 세트의 허가에 의해 허가되면, 상기 메모리 액세스 동작도 상기 제2 메모리 보호 유닛을 사용한 상기 하이퍼바이저(2)에 의해 관리된 제2 세트의 허가에 대해 체크된다. 상기 제1 메모리 보호 유닛과 상기 제2 메모리 보호 유닛은, 상기 실시간 오퍼레이팅 시스템(4)과 상기 하이퍼바이저(2) 각각의 폴리시들을 강요하기 위해 적절한 상기 제1 세트의 허가 데이터와 상기 제2 세트의 허가 데이터로 구성되는 하드웨어 구성요소들로 구성되어도 된다. 따라서, 상기 실시간 오퍼레이팅 시스템(4)과 상기 하이퍼바이저(2)에 의해 제어된 상기 제1 세트의 허가와 상기 제2 세트의 허가는, 그 때에 동작하기 위해 상기 실시간 오퍼레이팅 시스템(4) 또는 상기 하이퍼바이저(2)를 필요로 하지 않고 상기 메모리 보호 유닛 하드웨어에 의해 강요될 수 있다.
또한, 도 1에는 다수의 실시간 어플리케이션(10, 12)을 지원하는 또 다른 실시간 오퍼레이팅 시스템(8)이 도시되어 있다. 이전과 같이, 다수의 실시간 어플리케이션(10, 12)은 상기 제1 메모리 보호 유닛과 상기 제2 메모리 보호 유닛 각각에 의해 상기 제1 세트의 허가와 상기 제2 세트의 허가에 대해 체크된 물리 어드레스들 PA를 발생한다. 상기 실시간 오퍼레이팅 시스템(4)과 실시간 어플리케이션(6)은, 상기 실시간 오퍼레이팅 시스템(8)과 상기 실시간 어플리케이션(10, 12)이 실행하는 상기 가상화된 실시간 프로세서와는 완전히 다른 가상화된 실시간 프로세서에 관해 실행한다고 생각된다. 하이퍼바이저(2)는, 기반 하드웨어에 콘텍스트/구성 데이터를 스와핑하여서 이들 2개의 가상화된 실시간 프로세서간에 전환한다. 상기 기반 하드웨어는, 실시간 동작과 일치하게 상기 제1 세트의 허가와 제2 세트의 허가의 빠른 어플리케이션을 지원하기 위해서 제1 메모리 보호 유닛과 제2 메모리 보호 유닛을 제공한다.
또한, 도 1에는 그래픽 유저 인터페이스를 지원하는 "리치" 오퍼레이팅 시스템, 이를 테면, 윈도우즈, iOS, 리눅스 등의 형태의 또 다른 오퍼레이팅 시스템(14)이 도시되어 있다. 다수의 어플리케이션(16, 18)은, 이 또 다른 오퍼레이팅 시스템(14)을 사용하여 실행한다. 그 어플리케이션(16, 18)은, 이 또 다른 오퍼레이팅 시스템(14)에 의해 구성되어 제어되는 메모리 관리 유닛에 의해 변환되는 가상 어드레스들을 발생한다. 이 가상 어드레스들은, 물리 어드레스들로 변환되고 나서, 상기 제2 메모리 보호 유닛에 의해 상기 제2 세트의 허가에 대해 체크된다. 이와 같이, 상기 또 다른 오퍼레이팅 시스템(14)은, 메모리 관리 유닛을 이용하여, 상기 또 다른 오퍼레이팅 시스템(14) 대신에 적절한 허가를 변환하여 적용하고 나서, 제2 메모리 보호 유닛은 하이퍼바이저(2) 대신에 허가들을 적용하는 기능을 한다.
도 2는 도 1에 도시된 소프트웨어 아키텍처를 지원하기에 적절한 형태의 처리 하드웨어를 개략적으로 도시한 것이다. 마이크로프로세서 코어(20)는, 프로그램 명령어들의 스트림을 실행하기 위한 처리 회로소자(22)를 구비한다. 상기 프로그램 명령어들의 스트림은, 하이퍼바이저(24), 제1 실시간 오퍼레이팅 시스템(26), 제2 실시간 오퍼레이팅 시스템(28), 실시간 어플리케이션(30), 또 다른 "비실시간" 오퍼레이팅 시스템(32) 및 그 또 다른 오퍼레이팅 시스템을 어플리케이션(34)을 제공하는 프로그램 명령어들을 포함하는 메모리(23)로부터 판독된다. 또한, 그 메모리(23)내에는, 페이지 테이블 워크 동작을 거쳐 메모리 매핑 데이터를 형성하는데 사용된 페이지 테이블 데이터(36)도 포함되어 있다.
마이크로프로세서 코어(20)는, 제1 메모리 보호 유닛(38), 제2 메모리 보호 유닛(40) 및 메모리 관리 유닛(42)을 구비한다. 메모리 관리 유닛(42)은, 변환 색인 버퍼(44), 페이지 테이블 워킹 회로소자(46) 및 변환 테이블 베이스 레지스터(48)를 구비한다. 이 변환 테이블 베이스 레지스터(48)는, 상기 메모리(23)내 상기 페이지 테이블 데이터(36)의 시작부분을 가리키는 변환 테이블 베이스 레지스터 값을 기억하고 있다. 페이지 테이블 워크 회로소자(46)는, 메모리 매핑 데이터를 상기 변환 색인 버퍼(44)에 꺼내기 위해서 페이지 테이블 워크 동작을 행할 때 상기 변환 테이블 베이스 레지스터 값을 사용한다.
상기 제1 메모리 보호 유닛(38)은 코프로세서(50)내의 레지스터들로부터 판독된 제1 세트의 허가를 적용한다. 제2 메모리 보호 유닛(40)은, 또 상기 코프로세서(50)로부터 판독된 제2 세트의 허가를 적용한다. 상기 제1 메모리 보호 유닛(38) 및 제2 메모리 보호 유닛(40)은, 상기 제1 세트의 허가와 제2 세트의 허가 각각에 따라 같은 물리 어드레스를 사용하여 체크를 행하는 것을 병렬 작동하고 있다. 예외 레벨 제어 회로소자(52)는, 상기 처리 회로소자(22)가 현재 작동중인 현재의 예외 레벨(즉, 어플리케이션용 EL0, 오퍼레이팅 시스템용 EL1, 하이퍼바이저용 EL2)을 제어하는 기능을 한다. 선택 회로소자(54)는, 알맞은 시간에 주어진 점에서 상기 메모리 관리 유닛(44)과 제1 메모리 보호 유닛(38) 중 한쪽이 액티브 상태가 되게 제어하도록 제공된다. 상기 제1 메모리 보호 유닛(38)은, 실행하는 코드가, 상기 실시간 오퍼레이팅 시스템 4, 8 중 한쪽, 또는 실시간 어플리케이션 6, 10, 12 중 한쪽 등의 실시간 코드일 경우 액티브가 될 것이다. 상기 메모리 관리 유닛(42)은 상기 또 다른 오퍼레이팅 시스템(14) 또는 상기 어플리케이션(16, 18) 중 한쪽이 실행중일 때 액티브가 될 것이다. 상기 하이퍼바이저가 액티브일 경우, 제2 메모리 처리 유닛(40)만은 상기 하이퍼바이저(2)의 액션을 부적절하게 방해하는 상기 메모리 관리 유닛(42) 또는 제1 메모리 보호 유닛(38)을 피하기 위해서 사용중일 것이다. 액티브 중인 상기 제1 메모리 보호 유닛(38)과 액티브 중인 메모리 관리 유닛(42)간의 변경은, 제2 예외 레벨 EL2에의 천이를 거치며 상기 제2 예외 레벨 EL2에서 실행하는 하이퍼바이저(2)의 제어하에서 이루어진다. 제2 예외 레벨 EL2와 하이퍼바이저(2)로부터 상기 오퍼레이팅 시스템 4, 8, 14 중 한쪽으로 다시 복귀될 때, 선택비트는, 상기 처리 회로소자로부터 상기 선택 회로소자(54)에 출력되고, 상기 제1 메모리 보호 유닛(38) 또는 메모리 관리 유닛(42)이 액티브가 될 것인지를 제어하는 기능을 한다.
상기 처리 회로소자(22)는, 상기 메모리(23)내에서 행해질 메모리 액세스들에 관련된 어드레스들을 발생한다. 상기 제1 메모리 보호 유닛(38)이 액티브가 되도록 현재 선택된 경우, 이들 메모리 어드레스들은 물리 어드레스들 PA일 것이다. 상기 메모리 관리 유닛(42)은 액티브가 되도록 선택된 경우, 이들 메모리 어드레스들은 가상 어드레스들 VA일 것이다. 물리 어드레스 PA는 제2 MPU(40)에 공급된 패스(Pass) 신호를 발생하기 위해 상기 제1 MPU(38)에 의해 상기 제1 세트의 허가 데이터에 대해 체크될 것이다. 또한, 제2 MPU(40)는, 상기 제2 세트의 허가 데이터에 대해 상기 물리 어드레스를 체크할 것이다. 상기 제1 MPU(38)에 의한 체크 결과가 패스(pass)이고 제2 MPU(40)도 상기 제2 세트의 허가에 대한 메모리 액세스를 패스할 경우, 물리 어드레스 PA는 상기 메모리 액세스를 구동하기 위해 메모리(23)에 출력된다.
액티브중인 메모리 관리 유닛(42)일 경우에, 상기 처리 회로소자(22)는 메모리 액세스에 관련된 가상 어드레스 VA를 발생한다. 이 가상 어드레스 VA는, 메모리 관리 유닛(42)에 공급되고, 물리 어드레스 PA를 발생하기 위해 (상기 변환 색인 버퍼(44)내에 보유되거나 페이지 테이블 워크를 거쳐 상기 페이지 테이블 데이터(36)로부터 회복된) 메모리 매핑 데이터를 거쳐 변환된다. 또한, 메모리 관리 유닛(42)은, 페이지 테이블 데이터(36)로부터 꺼내진 메모리 관리 데이터내에 포함된 가상 메모리 허가에 대한 가상 어드레스 VA의 체크를 행한다. 가상 어드레스 VA가 성공적으로 변환되고 가상 메모리 허가를 패스하는 경우, 상기 메모리 관리 유닛(42)은 상기 제2 MPU(40)에, 변환된 물리 어드레스 PA와, 그 가상 메모리 허가의 패스를 나타내는 신호를 출력한다. 그리고, 제2 MPU(40)는 하이퍼바이저(2) 대신에 제2 세트의 허가 데이터를 적용하고, 이 체크가 패스된 경우, 물리 어드레스 PA는 요구된 메모리 액세스를 행하기 위해 상기 메모리(23)에 출력된다. 상기 메모리 관리 유닛(42)의 액션이 페이지 테이블 워크 동작을 행할 필요가 있을 수도 있으므로, 주어진 메모리 액세스를 행하는데 필요한 시간은 상당히 달라질 수 있고, 이 이유는 상기 메모리 관리 유닛(42)을 사용한 가상 어드레싱이 실시간 동작을 원할 때 부적절하기 때문이다.
도 3은 코프로세서(50)내에 일 세트의 메모리 매핑된 레지스터를 개략적으로 도시한 것이다. 이들 메모리 매핑된 레지스터들은, 제1 MPU(38)가 액티브일 경우 상태A로 도시되어 있다. 같은 레지스터들은, 메모리 관리 유닛(42)이 액티브일 경우 상태B로 도시되어 있다. 제1 세트의 허가는, 상기 제1 MPU(38)가 액티브일 때 상기 처리 회로소자(22)와 상기 제1 MPU(38)에서 액세스할 수 있는 일 세트의 레지스터(56)내에 기억된다. 변환 테이블 베이스 레지스터(58)는, 상기 제1 MPU(38)가 액티브일 때 상기 처리 회로소자(22)에 액세스 가능하지 않다. 일 세트의 레지스터(60)는, 제2 MPU(40)가 사용하는 하이퍼바이저(2) 대신에 제2 세트의 허가를 기억한다. 이 제2 세트의 허가는, 상기 하이퍼바이저(2)의 실행에 대응한 제2 예외 레벨(EL2)에서 실행할 때 액세스 가능하기만 하다.
도 3b에서 B로서 도시된 경우는, 메모리 관리 유닛(42)이 액티브일 때다. 이 경우에, 상기 레지스터(56)는 상기 처리 회로소자(22)에 액세스 가능하지 않고, 상기 변환 테이블 베이스 레지스터(58)는 상기 처리 회로소자(22)에 액세스 가능하며, 상기 제2 세트의 허가를 기억하는 레지스터(60)는 상기 제2 예외 레벨 EL2가 액티브일 때 하이퍼바이저에 다시 액세스 가능하기만 하다.
도 4는 상기 제1 MPU(38)가 액티브일 때 도 2의 회로의 동자을 개략적으로 도시한 흐름도다. 단계 62에서, 메모리 액세스가 발생될 때까지 처리를 대기한다. 단계 64에서, 제1 메모리 보호 유닛(38)은 상기 제1 세트의 허가에 대한 상기 수신된 물리 어드레스 PA를 체크한다. 단계 66에서 액세스가 허가되지 않았다고 판정한 경우, 단계 68은 실시간 오퍼레이팅 시스템(4, 8) 중 한쪽 대신에 무슨 폴리시가 설정되었든지 간에 따라 핸들링될 허가 폴트를 기동시킨다. 그리고, 처리가 종료된다.
단계 66에서 제1 메모리 보호 유닛(38)이 액세스를 허가하였다고 판정한 경우, 단계 70에서는 제2 메모리 보호 유닛(40)에 의해 제2 세트의 허가에 대해 물리 어드레스 PA의 체크를 행하는 기능을 한다. 단계 70에서는, 이 제2 세트의 허가가 액세스가 허가된 것을 가리키는지 아닌지를 판정한다. 액세스가 허가되지 않은 경우, 단계 74는 하이퍼바이저(2) 대신에 폴트 핸들링을 행한다. 액세스가 허가되는 경우, 단계 76은 상기 메모리(22)에의 액세스를 송신하는 기능을 한다.
도 5는 메모리 관리 유닛(42)이 액티브일 때 처리를 개략적으로 도시하는 흐름도다. 단계 78에서는, 메모리 액세스가 발생될 때까지 처리를 기다린다. 단계 80은 가상 어드레스 VA를 물리 어드레스 PA로 변환하고 그 어드레스를 가상 메모리 허가에 대해 체크하는 메모리 관리 유닛(42)에 해당한다. 단계 82에서는 액세스가 허가되지 않았다고 판정한 경우, 단계 84에서는 오퍼레이팅 시스템(14) 대신에 폴트 핸들링을 행한다. 단계 82에서 액세스가 허가되는 경우, 단계 86은 제2 메모리 보호 유닛(40)에 의해 적용된 제2 세트의 허가에 대해 단계 80에서 발생된 물리 어드레스를 체크하는 기능을 한다. 단계 88에서 제2 세트의 허가에 따라 액세스가 허가되었다고 판정한 경우, 단계 90은 그 액세스를 상기 메모리(22)에 송신하는 기능을 한다. 단계 88에서 그 액세스가 허가되지 않았다고 판정한 경우, 단계 92는 하이퍼바이저(2) 대신에 폴트 핸들링을 행한다.
도 6은 제1 메모리 보호 유닛(38) 또는 메모리 관리 유닛(42)이 액티브인지간의 전환을 개략적으로 도시한 도면이다. 기간 94에서는, 최하위(최소 특권) 예외 레벨 EL0에서 실시간 어플리케이션을 실행한다. 기간 96에서는 예외 레벨 EL1에서 실시간 오퍼레이팅 시스템(4, 8)의 커널의 실행에 대해 처리를 패스시킨다. 이 때, 예외 레벨 EL0에 역으로 천이하는 것에 의해 또 다른 실시간 어플리케이션에 다시 역으로 처리를 되돌릴 수 있었다. 그렇지만, 도시된 예에서, 인터럽트 IRQ 또는 수율 트리거는 실시간 오퍼레이팅 시스템 커널(96)이 실행중인 동안 일어나고, 이것은, 기간 98에서의 하이퍼바이저의 실행을 기동하고 상기 처리 회로소자를 예외 레벨 EL2로 전환시킨다. 기간 94에서의 실시간 어플리케이션과 기간 96에서의 실시간 오퍼레이팅 시스템 커널의 실행 전체에 걸쳐서 상기 제1 MPU(38)와 제2 MPU(40)는 액티브 상태다. 기간 98에서의 하이퍼바이저의 액션은, 제1 MPU(38)가 액티브인 것으로부터 MMU(42)가 액티브인 것까지 도 2의 처리 하드웨어에 의해 가상화될 가상 머신간의 콘텍스트들을 스와핑하는 것을 포함한다. 이 콘텍스트 스위치는, 레지스터들의 절약뿐만 아니라 가상 머신의 이전의 실행으로부터의 절약된 콘텍스트들이 스왑 인(swapped in)되는 것에 관련된 레지스터 콘텐츠를 스와핑하는 것과, 가상 머신이 스왑 아웃되는 것에 관련된 그 밖의 데이터를 포함한다. 하이퍼바이저(2)가 그 실행을 기간 98동안 끝낼 때, 상기 시스템은 예외 레벨 EL1에 반대로 이동하고, 선택 회로소자(54)에 출력되는 선택 비트를 설정한다. 이것은, 액티브 중인 제1 메모리 보호 유닛(38)으로부터 액티브중인 메모리 관리 유닛(42)으로 전환시키는 기능을 한다. 기간 100은, 기간 102에서 어플리케이션(16, 18)의 실행이 행해지기 전에 예외 레벨 EL1에서 그래픽 유저 인터페이스 지원 오퍼레이팅 시스템(14)의 실행에 해당한다. 기간 102에서의 처리는, 가상 어드레스 VA를 발생하고, 가상 메모리 허가를 적용하는 것뿐만 아니라, 메모리 관리 유닛(42)을 사용하여 가상 어드레스 VA를 물리 어드레스 PA로 변환한다.
도 7은 처리장치의 제2 예를 도시한 도면이다. 본 예에서, 마이크로프로세서 코어(20)는, 어드레스 변환 유닛(120)과 폴트 발생 회로소자(122)를 더 구비한 것 이외에는 도 2와 같다. 이와는 달리, 도 7의 처리장치의 요소들은 도 2의 대응한 요소들과 같고, 동일한 참조부호로 도시되어 있다. 어드레스 변환 유닛(ATU)(120)은, 상기 메모리 어드레스 공간의 대응한 페이지에 대한 가상 대 물리 어드레스 매핑을 각각 지정하는 변환 엔트리들을 기억하는 변환 색인 버퍼(TLB)(126)를 구비한다. 메모리의 페이지는, TLB(126)에서 변환 색인 버퍼 엔트리에 해당하는 메모리 어드레스 공간의 범위다. MMU(42)와는 달리, 상기 ATU(120)는 페이지 테이블 워킹 회로소자(46) 또는 변환 테이블 베이스 레지스터(48)를 갖지 않는다. 대신에, ATU(120)의 TLB(126)의 갱신은 상기 처리 회로소자(22)상에서 소프트웨어 실행에 의해 행해진다. 이 소프트웨어(예를 들면, 실시간 오퍼레이팅 시스템 소프트웨어)는 갱신된 데이터를 상기 코프로세서(50)의 메모리 매핑된 레지스터들에 기록하고, TLB(126)는 그 갱신된 데이터를 코프로세서(50)로부터 판독한다. 상기 ATU(120)의 페이지 테이블 워크들을 제거함으로써, 그 ATU는 가상 대 물리 어드레스 변환에 의해서도 실시간 시스템에서 사용하는데 적합하다.
도 8은 도 7의 실시예에서 각종 메모리 액세스 핸들링 유닛간의 관계를 개략적으로 도시한 것이다. 도 1에 도시된 것처럼, 상기 시스템은, 실시간 소프트웨어(이를테면, 실시간 오퍼레이팅 시스템(RTOS)(26, 28) 또는 실시간 어플리케이션(30)) 또는 비실시간 소프트웨어(이를테면, "GUI 리치" 오퍼레이팅 시스템(32) 도는 비실시간 어플리케이션(34)) 중 한쪽의 제어하에 작동하여도 된다. 도 8에 도시된 실시간 상태와 비실시간 상태간의 전환은, 도 1-도 6의 상술한 것과 같은 방식으로 제어된다.
상기 비실시간 소프트웨어가 액티브일 때, MMU(42)는 프로세서(22)에 의해 지정된 가상 어드레스들을 메모리(23)에서 물리 위치들을 직접 특정하는 물리 어드레스들로 변환하고 나서, 그 물리 어드레스들은, 예외 레벨 EL2에 있는 동안 하이퍼바이저(24)에서 설정한 액세스 허가에 의거하여 상기 메모리 액세스가 허가되었는지를 제어하는 제2 MPU(40)에 패스된다. 이것은, 도 1-도 6에 대해 이전에 설명한 MPU(42)와 같다.
실시간 소프트웨어(26, 28, 30)가 액티브일 때, 상기 프로세서(22)에서 발생한 메모리 액세스 동작의 타겟 어드레스 A는 제1 MPU(38)와 ATU(120) 양쪽에 패스된다. 제1 MPU(38)는, 제1 MPU(38)가 타겟 어드레스에 대응한 임의의 세트의 허가 데이터를 기억하는지를 판정하기 위해 보호 검색을 행한다. 또한, ATU(120)는, ATU(12O)가 타겟 어드레스에 대응한 임의의 변환 엔트리들을 기억하는지를 판정하기 위해 변환 검색을 행한다. 제1 MPU(38)와 ATU(120)는 예외 레벨 EL1에서 오퍼레이팅 시스템 소프트웨어에 의해 프로그램 가능하다.
타겟 어드레스가 제1 MPU(38)에서 충돌하는 경우, 상기 타겟 어드레스는 상기 메모리(23)내의 메모리 위치를 직접 지정하는 물리 어드레스 PA로서 해석된다. 이 경우에, 제1 MPU(38)는, 상기 타겟 어드레스를 포함한 영역에 대응한 상기 세트의 허가 데이터를 사용하여, 상기 메모리 액세스 동작이 허용되는지를 판정한다. 상기 메모리 액세스 동작이 허용되는 경우, (타겟 어드레스와 같은) 물리 어드레스는, 하이퍼바이저 액세스 허가를 적용하기 위해 상기 제2 MPU(40)에서 사용된다.
한편, 타겟 어드레스가 상기 어드레스 변환 유닛(120)에서 변환 엔트리(TLB 126의 TLB 엔트리)에 해당하는 경우, 상기 타겟 어드레스는, 가상 어드레스 VA로서 해석되고 ATU(120)의 대응한 변환 엔트리를 사용하여 물리 어드레스 PA로 변환된다. 그리고, ATU(120)에서 발생한 물리 어드레스 PA는, 제2 MPU(40)에 공급되어 상기 하이퍼바이저 제어 허가 데이터를 사용하여 상기 액세스가 허가되는지를 제어한다. 또한, 선택사항으로 상기 ATU(120)는 일부의 액세스 허가 제어를 제공하여도 된다.
그러므로, 실시간 소프트웨어가 액티브일 때, 상기 제1 MPU(38)와 상기 ATU(120) 양쪽은 제1 MPU(38)를 사용하여 처리중인 일부의 메모리 액세스들과 ATU(120)를 사용하여 처리중인 그 밖의 메모리 액세스들과 동시에 액티브이다. 이것은, 실시간 또는 비실시간 소프트웨어가 실행되는지에 따라 이들 MMU(42)와 제1 MPU(38) 중 한쪽만이 액티브인 MMU(42)와 제1 MPU(38)간의 관계와 다르다. 주어진 메모리 액세스 동작을 처리하기 위해 제1 MPU(38)와 ATU(120) 중 어느 쪽을 사용할지를, 상기 메모리 액세스 동작의 타겟 어드레스에 의거하여 선택한다. 도 9에 도시된 것처럼, 상기 처리 회로소자(22)에서 본 것처럼 메모리 어드레스 공간은, 상기 제1 MPU(38)에 대응한 일부의 어드레스 범위(130)와 상기 ATU(120)에 대응한 그 밖의 어드레스 범위(132)로 분할되는 것이 효과적이다. 상기 제1 MPU(38)에 대응한 메모리 영역들(130)에서의 어드레스들은, 물리 어드레스 공간에서 대응한 물리 어드레스들에 직접 매핑된다. 상기 어드레스 변환 유닛(120)에 대응한 영역들(132)에서의 가상 어드레스들은, ATU(120)의 변환 엔트리를 사용하여 서로 다른 물리 어드레스들로 변환될 수 있다. 상기 영역들(130, 132)의 분할은, 유닛(38, 120)이 메모리 액세스마다 사용되도록 소프트웨어 프로그래머는 제어할 수 있도록 소프트웨어에 의해 설정된다.
제1 PU(38)와 ATU(120)의 결합은, 실시간 어플리케이션에 유용하다. 통상, 제1 MPU(38)는, 물리 어드레스들과 직접 작동하여서 빠르고 결정적인 응답시간을 제공하므로 바람직할 것이다. 그렇지만, 일부의 레거시 소프트웨어 어플리케이션(30)의 경우, 상기 소프트웨어를 참조한 어드레스들은 그 밖의 어플리케이션에 사용된 어드레스들과 충돌하여서, 상기 ATU(120)의 가상 대 물리 어드레스 변환을 사용하여 그 어드레스 공간에 이들 어드레스들을 재배치하는 것에 의해 이러한 어플리케이션들을 공존 가능하게 한다. 상기 ATU가 페이지 테이블 워킹(walking) 회로소자(46)를 갖지 않고 소프트웨어에 의해 직접 프로그램 가능하므로, 상기 ATU(120)는 결정적 응답시간을 갖는 것이 합리적이어서, 실시간 시스템들에 적합하다.
상기 제1 MPU(38)의 상기 세트의 허가 데이터와 상기 ATU(120)에서의 TLB(126)의 변환 테이블 엔트리들은, 코프로세서(50)의 메모리 매핑된 구성 레지스터들을 사용하여 소프트웨어에 의해 프로그램 가능하다. 도 10은 본 실시예에서의 코프로세서가 상기 ATU(120)의 변환 테이블 엔트리들을 정의하는 데이터를 기억하는 추가의 레지스터들(140)을 구비하는 것 이외는 도 3과 같다. 상기 변환 엔트리들을 정의하는 레지스터들(140)은, 상기 선택회로(54)가 액티브가 될 제 1 MPU(38)와 ATU(120)를 선택한 상태A에 있을 때 액세스될 수만 있고, 상기 MMU(42)가 액티브일 때 상태B에서 액세스될 수 없다.
도 11은 제1 MPU(38), ATU(120) 및 폴트 발생 회로소자(122)의 일례를 보다 상세히 도시한 것이다. 타겟 어드레스는, 상기 제1 MPU(38)과 ATU(120) 양쪽에 제공되고, 양쪽 유닛(38, 120)은 타겟 어드레스에 대응한 데이터를 검색하기 위해 검색동작을 행한다.
일부의 예들에서, 상기 제1 MPU는 상기 ATU(120)가 타겟 어드레스용 변환 엔트리를 검색하면서 병렬로 타겟 어드레스에 대응한 허가 데이터를 검색하기도 한다. 이러한 구현은 양쪽의 검색이 동시에 행해질 수 있으므로 보다 빠르다. 그렇지만, 보다 에너지 효율적인 구현은, 상기 제1 MPU(38)에서 검색 후 ATU(120) 검색이 행해지는 경우를 제공한다. 제1 MPU(38)가 상기 얻어진 세트의 허가 데이터를 사용하여 메모리 액세스가 허가되지 않았다고 판정한 경우, ATU(120)에서 검색을 행하는 것이 필요하지 않을 수도 있고, (상기 시스템 설계자가 상기 제1 MPU(38)에 의해 허가되지 않은 메모리 액세스 전부를 금지시키기를 원한다고 하면; 이것은, 항상, 도 14에 대해 후술한 것과 같은 경우가 아닐 수도 있다) 절전을 위해서 상기 ATU 검색은 생략될 수 있다. 이 때문에, 제1 MPU(38)는, MPU히트가 있을 경우, 대응한 허가 데이터가 메모리 액세스가 허용 가능한지를 가리키는지를 가리키는 ATU에, 패스 신호(150)를 발행하여도 된다. 상기 패스 신호(150)가 그 액세스가 허용 가능하지 않은 것을 가리키는 경우, 상기 ATU(120)는 검색을 생략하며, 또한 상기 제1 MPU(38)에서 히트가 없거나 그 액세스가 허용 가능하지 않은 경우, 상기 ATU(120)는 검색을 행한다.
도 11에 도시된 것처럼, 제1 MPU(38)는, 각각, 제1 MPU(38)의 엔트리에 대응하고, 타겟 어드레스가 상기 대응한 엔트리에 대해 정의된 어드레스 공간의 영역내에 있는지를 가리키는 일 세트의 보호 히트 신호(155)를 발생한다. 마찬가지로, ATU(120)는, 각각 TLB(126)에서의 변환 엔트리들 중 하나에 대응하고, 대응한 엔트리가 상기 타겟 어드레스를 구비한 어드레스들의 페이지를 위한 것인가를 가리키는 일 세트의 변환 히트 신호(160)를 발생한다.
폴트 발생 회로소자(122)는, 히트신호(155, 160) 중 하나 보다 많은 히트신호가 히트를 가리키는 경우 폴트 조건을 발생한다. 그 폴트는, 상기 제1 MPU(38)와 ATU(120)의 양쪽에 있어서 히트들에 의해 생길 수도 있거나, 제1 MPU(28)의 서로 다른 엔트리에서의 다수의 히트에 의해, 또는 ATU(120)의 서로 다른 엔트리에서의 다수의 히트에 의해 생길 수도 있다. 다수의 동시 히트들을 방지함으로써, 메모리 액세스 요구의 처리는 예측 가능하고 안전하게 보증될 수 있다.
히트가 다수 있으면, 이것에 의해 예측 불가능한 작용이 생길 수 있다. 예를 들면, 제1 MPU(38)를 사용하여 2개의 서로 다른 세트의 액세스 허가를 적용하려고 하는 것 또는, 같은 타겟 어드레스를 제1 MPU(38)를 사용하여 물리 어드레스로서 ATU(120)를 사용하여 가상 어드레스로서 해석하려고 하는 것에 의해 결과가 불확정해질 수 있다. 폴트를 발생함으로써, 이들의 경우를 표시해놓을 수 있다. 상기 장치에는, 메모리(23)내에, 상기 폴트들을 해결하거나 그 폴트들에 상기 시스템 사용자가 관심을 불러일으키게 하는 폴트 핸들링 소프트웨어 루틴들이 구비되어 있다. 따라서, 상기 폴트 발생 회로소자(122)는, 상기 시스템의 프로그래머가 도 9에 도시된 것처럼 상기 MPU 및 ATU에 대해 정의된 영역(130, 132)끼리 반드시 중첩하지 않도록 한다.
또한, 상기 폴트 발생 회로소자(122)는, 상기 히트신호(155, 160) 중 아무것도 MPU나 TLB엔트리가 타겟 어드레스에 해당하는 것을 가리키지 않는 경우 폴트를 발생하기도 한다.
도 12는 제1 MPU(38)의 허가 엔트리의 일례를 도시한 것이다. 각 엔트리(170)는, 대응한 메모리 영역의 베이스 어드레스를 정의한 영역 베이스 어드레스(172)와, 상기 영역의 리미트 어드레스를 정의하는 영역 리미트 어드레스(174)를 구비할 수도 있다. 일반적으로, 상기 리미트 어드레스(174)의 값은, 상기 베이스 어드레스(172)보다 클 것이다. 상기 보호 검색을 행하면, 상기 제1 MPU(38)는, 타겟 어드레스가 베이스 어드레스(172)와 리미트 어드레스(174) 사이에 있는 경우(또는 상기 어드레스 172, 174 중 하나인 경우) 타겟 어드레스에 상기 엔트리(170)가 해당한다고 판정할 것이다. 상기 베이스 어드레스(172)와 리미트 어드레스(174)에 의해, 상기 제1 MPU(38)를 사용하여 임의의 사이즈의 메모리 영역들을 정의할 수 있다. 또한, 상기 MPU 엔트리(170)는 서로 다른 특권 레벨 EL0,EL1의 메모리 액세스 요구들에 대해 정의된 허가 데이터(176, 178)를 구비한다. 예를 들면, 허가 데이터 176은, 어플리케이션 특권 레벨 EL0에 대해 정의되어 있고, 허가 데이터 178은 오퍼레이팅 시스템 특권 레벨 EL1에 대해 정의되어 있다. 상기 허가 데이터(176, 178)는 상기 메모리 액세스의 특성을 제어하는 각종 파라미터를 포함한다. 예를 들면, 상기 허가 데이터는, 판독동작의 허용 여부나 기록동작의 허용 여부를 정의하기도 한다. 또한, 상기 허가 데이터는, 상기 동작이 프로그램 순서로 핸들링되어야 하는 꼭 맞춤형 메모리 액세스동작인지의 여부, 또는 프로그램 순서에 대해 비순차적으로 실행될 수 있는 통상의 동작인지의 여부 등의, 상기 메모리(23)에서의 메모리 액세스의 처리를 제어하는 영역 속성들을 정의하기도 한다. 도 12는 상기 영역의 끝이 영역 리미트 어드레스(174)를 사용하여 정의되어 있는 경우의 예를 도시하였지만, 영역 사이즈 파라미터를 사용하여 영역 리미트를 정의하는 것도 ㅗ가능할 것이다.
도 13은 ATU(120)의 변환 테이블 엔트리(180)의 일 예시도다. 각 엔트리는, 가상 페이지 어드레스(182)와 그 가상 페이지 어드레스(182)를 변환시킬 물리 페이지 어드레스(184)를 포함한다. 또한, 그 엔트리(180)는, 이 변환을 적용할 페이지의 범위에 속하는 타겟 어드레스의 범위를 가리키는 페이지 사이즈 파라미터(186)도 포함한다. 예를 들면, 상기 페이지 사이즈는 4Kbyte 및 64Kbyte 등의 제한된 세트의 옵션으로부터 선택되어도 된다. 이 때문에, ATU(120)에서의 상기 변환 테이블 엔트리는, 상기 베이스 어드레스(172)와 상기 리미트 어드레스(174)를 사용하여 보다 많은 임의의 영역들을 정의할 수 있는 상기 MPU(38)와 대조하여 소정의 사이즈의 페이지를 정의하는 것으로 제한되어도 된다. 상기 ATU(120)가 주어진 타겟 어드레스의 변환 검색을 행하면, 상기 엔트리(180)는 타겟 어드레스의 최상위 부분이 그 변환 엔트리(180)의 가상 페이지 어드레스(182)와 일치하는 경우 타겟 어드레스에 해당한다고 판정된다. 가상 페이지 어드레스(182)와 일치될 상기 부분의 사이즈는, 페이지 사이즈(186)에 좌우된다. 예를 들면, 32비트 어드레스를 사용하여 정의된 어드레스 공간의 경우, 상기 페이지 어드레스(182)는 상기 어드레스의 상위 20비트이고, 하위 12비트는 같은 페이지(212=4096=4Kbyte)내의 서로 다른 어드레스들을 특정할 것이다. 따라서, ATU(120)에서의 히트는, 타겟 어드레스의 상위 20비트가 상기 변환 엔트리들(180) 중 하나의 엔트리에 대해 가상 페이지 어드레스(182)와 일치하는 경우 일어날 것이다. 히트가 검출되면, 타겟 어드레스의 가상 페이지 어드레스(182)는, 대응한 변환 엔트리(180)의 물리 페이지 어드레스(184)로 변환된다. 상기 타겟 어드레스의 나머지 비트(상기 주어진 예에서는 하위 12비트)는 페이지 오프셋을 지정하고 다음의 변환은 그대로다.
도 11의 폴트 발생 회로소자(122)는, 다수의 히트신호(155, 156)가 히트를 가리키는 경우 폴트 조건을 발생한다. 그렇지만, 히트가 있는 경우에도 폴트의 발생을 억제하는 것이 바람직한 경우도 있다. 도 14에 도시된 것처럼, 오퍼레이팅 시스템은, 자신의 메모리 액세스를 위한 어드레스 공간의 일부분(190)을 유보하여도 된다. 또한, 어플리케이션은, 상기 오퍼레이팅 시스템을 위해 유보된 상기 일부분(190)의 서브부분(192)에서의 어드레스들을 사용하여도 된다. 이 경우에, 상기 영역(192)용 MPU(170)는, 어플리케이션 특권 레벨 EL0용 허가(176)를 상기 영역(190)에 대해 판독 및 기록이 허용되지 않는 것을 가리키도록 설정하고, 오퍼레이팅 시스템 특권 레벨 EL1용 허가(178)를 판독 및 기록이 허용되는 것을 가리키도록 설정하는 것이 보통일 것이다. 이때, 상기 어플리케이션 EL0에 의한 영역(190)에의 액세스들은 가능하지 않을 것이고, 상기 ATU 및 MPU가 상기 타겟 어드레스에 대해 일치하는 엔트리를 특정할 때 폴트가 발생되는 경우, 그 어플리케이션은 실행될 수 없다.
도 14의 하부에 도시된 것처럼, 상기 어플리케이션이 실행될 수 있도록, 상기 서브 영역(192)에의 특권레벨 EL0의 액세스들은, 물리 어드레스 공간의 서로 다른 부분을 사용하도록 상기 ATU(120)를 사용하여 자신의 어드레스들을 물리 어드레스들로 변환시킬 수 있어, 상기 오퍼레이팅 시스템을 위해 유보된 상기 일부분(190)과의 충돌을 피할 수 있다. 폴트 발생 회로소자(122)는, (a) 타겟 어드레스의 제1 MPU(38)에서의 히트가 있을 때; (b) ATU(120)에서의 히트도 있을 때; (c) 메모리 액세스 동작이 소정의 특권 레벨(예를 들면, EL0)을 가질 때; 및 (d) 제1 MPU(38)가 대응한 세트의 허가 데이터를 사용하여 메모리 액세스가 허가되지 않는다고 판정할 때의, 폴트 조건의 발생을 억제할 수 있다. 따라서, 제1 MPU(38)와 ATU(120) 양쪽에서 히트들이 있음에도 불구하고, 상기 변환된 어드레스들에 의해 액세스가 진행될 수 있다.
폴트 발생을 억제하는 소정의 특권 레벨은, 상기 ATU(120)를 사용하여 다른 소프트웨어와의 충돌을 피하는 메모리 어드레스 공간에 재배치될 소프트웨어의 특권 레벨이어도 된다. 도 14는, 특권 레벨 EL0로부터의 액세스들이 자신의 타겟 어드레스를 변환시켜 특권 레벨 EL1과의 충돌을 피하는 일례를 도시하고 있지만, 그 밖의 예에서, 이것의 반대일 수 있고, 그들의 어드레스를 변환시킨 EL1용 액세스들일 수 있고 EL0용 액세스들이 그들의 어드레스 공간의 원래의 부분 그대로이다. 또한, MPU(38)에서 허가하지 않을 때 어드레스 변환을 사용하여 메모리 액세스의 진행이 허용되도록, ATU(120)는, (MPU(38)가 메모리 액세스가 허용되지 않는다고 판정하면 ATU(120)가 변환 검색을 생략할 수 있는 상술한 특징과는 달리) 제1 MPU(38)에서의 검색 결과에 상관없이 변환 검색을 행해야 한다.
코프로세서(50)는 제1 MPU(38)와 ATU(120)를 프로그래밍하는데 사용된다. 이전의 MPU들은 도 15에 도시된 레거시 인터페이스(196)를 사용하여 소프트웨어에 의해 프로그래밍되고 있었다. 코프로세서(50)는, 영역 선택기(200), 영역 베이스 어드레스(202), 영역 리미트 어드레스(204), 특권 레벨 EL0용 일 세트의 액세스 허가(206) 및 특권 레벨 EL1용 일 세트의 액세스 허가(208)를, 기억하기 위한 기억위치를 갱신하기도 한다. 그 기억위치는, 예를 들면 레지스터들 또는 레지스터들의 서브부분이어도 된다. 제1 MPU(38)에서 일 세트의 허가 데이터를 갱신하기 위해서, 상기 처리 회로소자(22)에서 실행한 소프트웨어는, 갱신될 상기 허가 데이터의 식별자를 상기 영역 선택기 기억 위치(200)에 기록하고, 상기 베이스 어드레스, 리미트 어드레스 및 허가의 필요한 값들을 그 밖의 기억 위치(202, 204, 206, 208)에 기록한다. 하나보다 많은 세트의 허가 데이터가 제1 MPU(38)에서 갱신될 필요가 있을 경우, 이들은 이후의 갱신용 데이터가 위치 200-208에 기록되기 전에 상기 제1 MPU(38)가 그 기억 위치 200-208에 기록된 데이터를 반드시 판독하도록 배리어(barrier) 동작에 의해 강 갱신이 분리되면서 순서적으로 갱신된다. 이것은, 실시간 오퍼레이팅 시스템에서는 바람직하지 않은 메모리 보호 데이터를 갱신할 때 지연의 원인이 될 수 있다.
이러한 문제를 해결하기 위해서, 본 기술은 도 16에 도시된 것처럼 갱신 인터페이스(210)를 제공한다. 단일의 MPU 엔트리를 한 번에 갱신하기 위한 일 세트의 위치 200-208을 제공하는 대신에, 도 16에 도시된 인터페이스(210)는, 다수의 세트(212)의 갱신 기억 위치를 구비한다. 주어진 세트의 허가 데이터를 갱신하기 위해서, 상기 처리 회로소자(22)에 의해 실행된 소프트웨어는, 갱신될 필요가 있는 상기 세트의 허가 데이터에 대응한 상기 세트(212)의 갱신 기억 위치에 상기 갱신된 데이터를 기록한다. 이에 따라 배리어 동작을 사용한 서로 다른 MPU엔트리들의 갱신을 분리할 필요가 없어, 그 갱신의 속도를 향상시킨다.
도 16에 도시된 메인 인터페이스(210)가 실시간 시스템에 보다 적합하였지만, 도 15의 레거시 인터페이스를 위해 설계되어 있던 레거시 소프트웨어가 상기 시스템에 의해 실행될 경우, 양쪽의 인터페이스는, 상기 코프로세서(15)에 구비되어 새로운 소프트웨어와 레거시 소프트웨어에 대해 상기 제1 MPU(38)의 갱신을 허가하여도 된다.
도 17은 제1 MPU(38)와 ATU(120)를 사용하여 메모리 액세스 동작을 핸들링하는 방법을 도시한 것이다. 단계 300에서는, 타겟 어드레스 A를 지정하는 상기 처리 회로소자(22)에 의해 메모리 액세스 동작을 기동시킨다. 단계 302에서, 상기 제1 MPU(38)는 상기 타겟 어드레스 A를 포함한 영역에 대응한 세트들의 허가 데이터를 검색하기 위해 보호 검색을 행한다. 단계 304에서, 상기 제1 MPU(38)는 임의의 영역 x에 대해 보호 히트가 있는지를(즉, 타겟 어드레스가 MPU 엔트 x에 의해 정의된 영역내에 있음) 판정한다. 히트가 있을 경우, 단계 306에서 상기 제1 MPU(38)는 영역x에 대한 보호 히트신호를 1로 설정한다. 히트가 없을 경우, 단계 308에서, 상기 제1 MPU(38)는 영역x에 대응한 보호 히트신호를 0으로 설정한다. 상기 제1 MPU(38)에서 정의된 영역마다 단계 304-308을 반복한다.
상기 제1 MPU(38)의 동작과 동시에, 상기 어드레스 변환 유닛(120)은, 타겟 어드레스 A의 대응한 변환 테이블 엔트리가 있는지를 체크하기 위해 단계 310에서 변환 검색을 행한다. 단계 312에서, 상기 ATU(120)는, 임의의 변환 엔트리 y에 히트가 있는지를 판정한다. 변환 엔트리 y에 변환 히트가 있을 경우, 단계 314에서는, 엔트리 y에 대응한 상기 변환 히트신호를 1로 설정하고, 히트가 없을 경우 단계 360에서는 그 변환 히트신호 y를 0으로 설정한다. 또, 상기 ATU(120)의 변환 엔트리마다 단계 312-316을 반복한다.
상기 제1 MPU(38)에서 히트가 있었을 경우, 그 방법은 단계 306 다음의 단계 320으로 진행하여 상기 제1 MPU(38)는 타겟 어드레스와 일치하였던 엔트리에서의 현재 예외 레벨에 대해 정의된 상기 세트의 허가를 사용하여 상기 메모리 액세스가 허가되었는지를 판정한다. 그 액세스가 허가된 경우, 단계 322에서는 상기 패스신호(150)를 1로 설정하고, 그 액세스가 허가되지 않은 경우, 단계 324에서는 상기 패스신호(150)를 0으로 설정한다. 상기 패스신호(150)는 제2 MPU(40)에 공급된다. 그 패스신호(150)가 1일 경우, 단계 326에서 상기 제2 MPU는, 그 액세스가 그것의 액세스 허가를 준수하는지를 판정한다. 제2 MPU가 그 액세스가 허가되었다고 판정한 경우, 단계 328에서는, 그 액세스를 처리될 메모리에 송신한다. 한편, 제1 MPU(38) 또는 제2 MPU(40)가 상기 액세스가 허가되지 않았다고 판정한 경우, 단계 330 또는 332에서는 폴트 핸들링을 행한다(단계 330은 오퍼레이팅 시스템 허가 폴트 핸들링에 해당하고, 단계 332는 하이퍼바이저 허가 폴트 핸들링에 해당한다).
상기 타겟 어드레스가 상기 변환 유닛에서의 엔트리에 일치한 경우, 상기 방법이 단계 314 다음의 단계 340으로 진행하여, 타겟 어드레스A를, ATU(120)의 변환 엔트리에 따라 가상 어드레스 VA로부터 물리 어드레스 PA로 변환시킨다. 단계 342에서는 그 변환된 물리 어드레스를 제2 MPU(40)에 패스하고 나서, 단계 344에서는 액세스가 허가되었는지를 체크한다. 단계 344, 346, 348은 상술한 단계 326, 328, 332와 마찬가지다. 상기 제2 MPU(40)의 액세스 허가 체크도, 타겟 어드레스가 제1 MPU(38) 또는 제2 MPU(40)에서 충돌하는지에 상관없이 같다.
한편, 단계 302로부터 316까지의 상기 보호 검색 및 변환 검색 동작 다음의 단계 350에서, 상기 폴트 발생 회로소자(122)는, (a) 다수의 히트신호(155, 160)가 1인지, 또는 (b) 히트신호(155, 160) 아무것도 1이 아닌지를, 판정한다. 상기 시스템이 정확히 프로그래밍되어 있을 경우, 단일의 히트신호는 1이고 그 밖의 히트신호(155, 160)는 0일 것이다. 이 경우, 단계 352에서는, 상기 폴트 발생 회로소자(122)에 의해 폴트 조건을 기동시키지 않는다. 그렇지만, 제로, 2개 이상의 히트가 기동되었을 경우, 단계 354에서, 상기 폴트 발생 회로소자(122)는, (i) 메모리 액세스가 소정의 특권 레벨(본 예에서는, EL0)로부터의 이벤트와, (ii) 상기 ATU(120)에서 히트가 있던 이벤트와, (iii) 제1 MPU(38)로부터 수신된 패스신호(150)가 액세스가 허가되지 않은 것을 가리키는 이벤트의 조합이 일어났는지를 검출한다. 검출할 경우, 단계 352에서는, ATU(120)에서 제공한 변환에 의거하여 메모리 액세스가 계속 허용되기 때문에 폴트 조건을 기동시키지 않는다(이는 도 14에 도시된 경우다). 한편, 단계 354에서 이 이벤트의 조합이 검출되지 않았을 경우, 단계 356에서는 폴트 조건을 발생한다. 이 폴트는 모든 형태의 에러에 대해 같을 수도 있거나, 이와는 달리 폴트 발생 회로소자(122)는 상기 MPU에서의 다수의 히트, ATU에서의 다수의 히트, 상기 MPU와 ATU 각각에서의 하나의 히트, 또는 상기 MPU와 ATU에서의 제로 히트가 있었는지에 따라 서로 다른 종류의 폴트들을 발생하여도 된다. 단계 358에서, 상기 시스템은 상기 폴트를 취급하는 폴트 핸들링 소프트웨어를 실행한다. 예를 들면, 상기 시스템은, 문제가 있는 것을 유저에게 경고등을 점등하여 알리기도 하거나, 상기 폴트를 기동시킨 메모리 액세스 요구의 처리를 중단시키기도 하거나, 상기 다수의 히트에 의한 잠재적 불안전 상황을 해결하는 그 밖의 일부의 수단을 제공하기도 한다.
도 18은, 제1 MPU(38)이 해당 메모리 보호 캐시(마이크로 MPU)(400)를 갖고, 상기 ATU(120)가 해당 어드레스 변환 캐시(마이크로 ATU)(410)를 갖는 다른 예를 도시한 것이다. 마이크 MPU(400)는 상기 제1 MPU(38)의 일부분의 상기 세트들의 허가 데이터를 기억한다. 상기 마이크로 ATU(410)는, ATU(120)의 상기 ATU(120)의 일부분의 상기 어드레스 변환 엔트리들을 기억한다. 메모리 액세스 동작에 응답하여, 상기 타겟 어드레스는 제1 MPU(38), 마이크로 MPU(400), ATU(120) 및 마이크로 ATU(410) 각각에 공급된다.
마이크로 MPU(400)가 상기 타겟 어드레스를 포함한 영역에 대응한 일 세트의 허가 데이터를 기억하는 경우, 메모리 액세스용 액세스 허가는 이 세트의 허가 데이터를 사용하여 제어되고, 상기 제1 MPU(38)의 풀 검색이 생략될 수 있다. 마이크로 MPU(400) 해당 세트의 허가 데이터를 기억하지 않는 경우, 상기 제1 MPU(38)의 풀 검색이 행해지고, 상기 제1 MPU(38)에 히트가 있을 경우, 상기 얻어진 세트의 허가 데이터를 사용하여 메모리 액세스가 핸들링되어, 메모리의 같은 영역에의 이후의 액세스들이 보다 빨리 핸들링될 수 있도록 상기 마이크로 MPU(400)에 놓일 수 있다. 상기 마이크로 MPU(400)가 상기 제1 MPU(38)보다 적은 세트의 허가 데이터를 기억하므로, 상기 마이크로 MPU(400)의 검색이 제1 MPU(38)의 검색보다 빠르며 보다 에너지 효율적이다.
마찬가지로, 상기 마이크로 ATU(410)가 타겟 어드레스를 포함한 페이지에 대응한 어드레스 변환 엔트리를 기억하는 경우, 상기 타겟 어드레스는 상기 얻어진 어드레스 변환 엔트리를 사용하여 가상 어드레스로부터 물리 어드레스로 변환되고, ATU(120)의 풀 검색이 생략된다. 한편, 상기 마이크로 ATU(120)가 상기 대응한 엔트리를 기억하는 경우 상기 ATU(120)의 풀 검색이 행해지고, 히트가 있는 경우 타겟 어드레스는 상기 ATU(120)에서 얻어진 엔트리를 사용하여 변환된다. 상기 마이크로 ATU(410)가 상기 ATU(120)에서 얻어진 엔트리로 갱신될 수 있다.
상기 제1 MPU(38) 및 상기 ATU(120)에서 발생한 히트신호(155, 160)와 마찬가지로, 상기 마이크로 MPU(400)도, 타겟 어드레스에 대응한 데이터가 특정되었는지를 가리키는 해당 히트신호(420, 430)를 발생한다. 이전과 같이, 상기 폴트 발생 회로소자(122)는, 히트신호(155, 160, 420, 430)가 히트를 가리키지 않는 경우나, 다수의 히트신호(155, 160, 420, 430)가 히트를 가리키는 경우(도 14에 대해 설명된 상황과 도 17의 단계 354가 일어나지 않으면) 폴트를 발생한다.
어떠한 종류의 캐시 라인필(linefill) 및 퇴거 방식도 상기 마이크로 MPU(400) 또는 상기 마이크로 ATU(410)에 데이터가 놓이는 것을 제어하는데 사용되어도 된다. 본 예는 2레벨 MPU와 2레벨 ATU를 도시하고 있지만, 그 밖의 예에서는, 또 다른 레벨의 캐시가 제공되어도 된다. 또한, 상기 MPU 캐시 레벨의 수가 상기 ATU 캐시 레벨의 수와 같은 것이 필수적이지는 않다.
도 19는 상기 제1 MPU(38)와 상기 ATU(120) 중 어느 유닛이 특별한 메모리 액세스를 처리해야 하는지를 선택부(450)가 선택하도록 구성된 다른 예를 도시한 것이다. 상기 선택부(450)는, (도 9의 에와 마찬가지로 어드레스 공간을 효과적으로 분할하는) 상기 제1 MPU(38)를 사용해야 하는 일부의 메모리 범위(130)와, ATU(120)를 사용해야 하는 다른 메모리 범위(132)를, 정의하는 일 세트의 선택 엔트리들을 기억하여도 된다. 상기 선택부(450)는, 각 유닛이 상기 메모리 액세스를 핸들리하기 위해 선택되었는지를 가리키는, MPU선택신호를 상기 제1 MPU(38)에 패스하고, ATU선택신호를 상기 ATU(120)에 패스한다. 상기 선택부(450)가 상기 제1 MPU(38)와 상기 ATU(120) 중 하나만을 선택하므로, 상기 폴트 발생 회로소자(122)는 상기 제1 MPU(38)와 상기 ATU(120) 양쪽이 주어진 메모리 액세스에 대해 액티브 상태가 되는 것이 불가능하기 때문에 본 실시예에서는 불필요할 수도 있다. 그렇지만, 상기 제1 MPU(38)의 다수의 엔트리나 ATU(120)의 다수의 엔트리에 히트들이 있는 경우 폴트를 발생하는 것이 바람직할 경우, 상기 폴트 발생 회로소자(122)는 그래도 제공될 수 있다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (21)

  1. 프로그램 명령어들의 스트림을 실행하는 처리 회로소자;
    상기 처리 회로소자에서 행할 메모리 액세스 동작용 메모리내에 메모리 어드레스 위치를 직접 지정하는 물리 어드레스를 수신하고,
    상기 메모리 액세스 동작이 허가되었는지 아닌지를 제1 세트의 허가에 따라 판정하도록 구성된,
    제1 하드웨어 메모리 보호 유닛;
    상기 물리 어드레스를 수신하고,
    상기 메모리 액세스 동작이 허가되었는지 아닌지를 제2 세트의 허가에 따라 판정하도록 구성된,
    제2 하드웨어 메모리 보호 유닛; 및
    상기 처리 회로소자가 행할 가상 메모리 액세스 동작을 위한 가상 메모리 어드레스 공간내에서 가상 메모리 어드레스 위치를 지정하는 가상 어드레스를 수신하고,
    메모리 매핑 데이터에 따라 상기 가상 어드레스를, 상기 메모리 내의 물리 메모리 어드레스 위치를 직접 지정하는 물리 어드레스로 변환시키도록 구성된,
    메모리 관리 유닛를 구비함에 따라서,
    상기 메모리 액세스 동작은, 상기 제1 세트의 허가와 상기 제2 세트의 허가의 양쪽을 충족하는 경우에만 허가되고,
    상기 처리 회로소자는 예외 레벨들의 계층내의 선택 가능한 예외 레벨에서 작동하도록 구성되고,
    상기 예외 레벨들의 계층내의 제1 예외 레벨에서 작동할 때, 상기 처리 회로소자가 상기 제1 세트의 허가를 변경하게 허가되고 상기 제2 세트의 허가를 변경하게 허가되지 않고,
    상기 예외 레벨들의 계층내의 제2 예외 레벨에서 작동할 때, 상기 처리 회로소자가 상기 제2 세트의 허가를 변경하게 허가되고,
    상기 제2 예외 레벨로부터 상기 제1 예외 레벨로 전환할 때 작동하여, 상기 처리 회로소자가 상기 제1 예외 레벨에서 작동하는 동안 액티브가 될 상기 제1 하드웨어 메모리 보호 유닛과 상기 메모리 관리 유닛 중 한쪽의 유닛을 선택하도록 구성된 선택 회로소자를 더 구비하는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 처리 회로소자는, 상기 제1 예외 레벨에서 작동할 때 실시간 오퍼레이팅 시스템의 프로그램 명령어들을 실행하고 상기 제2 예외 레벨에서 작동할 때 하이퍼바이저 프로그램의 프로그램 명령어들을 실행하도록 구성되는, 데이터 처리장치.
  3. 제 2 항에 있어서,
    상기 하이퍼바이저 프로그램은, 제1 세트의 허가와 각각 관련된 복수의 실시간 오퍼레이팅 시스템 중 선택된 오퍼레이팅 시스템을 실행하도록 상기 처리 회로소자를 제어하는, 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제1 하드웨어 메모리 보호 유닛과 상기 제2 하드웨어 메모리 보호 유닛에는, 상기 제1 세트의 허가와 상기 제2 세트의 허가 각각을 사용하여 적어도 부분적으로 공유된 하드웨어가 구비되어 있는, 데이터 처리장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 메모리 관리 유닛은, 상기 메모리 매핑 데이터 내의 일 세트의 가상 메모리 허가에 따라, 상기 가상 메모리 액세스 동작이 허가되었는지 아닌지를 판정하도록 구성된, 데이터 처리장치.
  7. 제 6 항에 있어서,
    상기 처리 회로소자는, 상기 제1 예외 레벨에서 작동할 때, 상기 메모리 매핑 데이터를 변경하게 허가되고 상기 제2 세트의 허가를 변경하게 허가되지 않는, 데이터 처리장치.
  8. 삭제
  9. 제 1 항에 있어서,
    상기 선택 회로소자에 의한 상기 선택은 상기 제2 예외 레벨에서 작동할 때 상기 처리 회로소자가 기록한 선택 비트에 의해 좌우되고,
    상기 선택 비트는, 상기 제1 예외 레벨에서 작동할 때 상기 처리 회로소자에 의해 기록 가능하지 않는, 데이터 처리장치.
  10. 제 9 항에 있어서,
    상기 제1 예외 레벨로부터 상기 제2 예외 레벨로의 전환시에 콘텍스트 데이터를 기억하고 상기 콘텍스트 데이터를 상기 제2 예외 레벨로부터 상기 제1 예외 레벨로 전환시에 회복하도록 구성된 예외 제어 회로소자를 더 구비하고, 상기 선택 비트는 상기 콘텍스트 데이터의 일부인, 데이터 처리장치.
  11. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 메모리 관리 유닛은, 변환 데이터 매핑 가상 어드레스들을 물리 어드레스들에 기억하도록 구성된 변환 색인 버퍼를 구비하는, 데이터 처리장치.
  12. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 메모리 관리 유닛은, 상기 메모리 매핑 데이터를 판정하기 위해 상기 메모리내에 기억된 페이지 테이블 데이터를 통해 페이지 테이블 워크(walk) 동작을 행하도록 구성되는, 데이터 처리장치.
  13. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 처리 회로소자는, 상기 가상 메모리 어드레스 공간을 사용하여 그래픽 유저 인터페이스를 지원하는 오퍼레이팅 시스템과 하나 이상의 어플리케이션 프로그램을 실행하도록 구성되는, 데이터 처리장치.
  14. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제1 하드웨어 메모리 보호 유닛이 액티브일 경우, 상기 제1 세트의 허가는 상기 처리 회로소자에 의해 기록될 수도 있고, 상기 메모리 매핑 데이터를 판정하는 페이지 테이블 데이터의 시작 위치를 가리키는 변환 테이블 베이스 레지스터 값이 상기 처리 회로소자에 의해 기록되지 않을 수도 있고,
    상기 메모리 관리 유닛이 액티브일 경우, 상기 제1 세트의 허가는 상기 처리 회로소자에 의해 기록되지 않을 수도 있고, 상기 메모리 매핑 데이터를 판정하는 페이지 테이블 데이터의 시작 위치를 가리키는 변환 테이블 베이스 레지스터 값은 상기 처리 회로소자에 의해 기록될 수도 있는, 데이터 처리장치.
  15. 제 14 항에 있어서,
    상기 제1 세트의 허가와 상기 변환 테이블 베이스 레지스터 값은, 상기 처리 회로소자에 결합된 코프로세서 회로소자내에 레지스터 매핑된 값들로서 기억되는, 데이터 처리장치.
  16. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제1 하드웨어 메모리 보호 유닛과 상기 제2 하드웨어 메모리 보호 유닛은, 상기 제1 세트의 허가와 상기 제2 세트의 허가 각각을 체크하기 위해 병렬로 작동하도록 구성된, 데이터 처리장치.
  17. 처리 회로소자에 의해 프로그램 명령어들의 스트림을 실행하는 단계;
    제1 하드웨어 메모리 보호 유닛을 사용하여,
    상기 처리 회로소자에서 행할 메모리 액세스 동작용 메모리내에 메모리 어드레스 위치를 직접 지정하는 물리 어드레스를 수신하고,
    상기 메모리 액세스 동작이 허가되었는지 아닌지를 제1 세트의 허가에 따라 판정하는 단계;
    제2 하드웨어 메모리 보호 유닛을 사용하여,
    상기 물리 어드레스를 수신하고,
    상기 메모리 액세스 동작이 허가되었는지 아닌지를 제2 세트의 허가에 따라 판정하는 단계; 및
    메모리 관리 유닛을 사용하여,
    상기 처리 회로소자가 행할 가상 메모리 액세스 동작을 위한 가상 메모리 어드레스 공간내에서 가상 메모리 어드레스 위치를 지정하는 가상 어드레스를 수신하고,
    메모리 매핑 데이터에 따라 상기 가상 어드레스를, 상기 메모리 내의 물리 메모리 어드레스 위치를 직접 지정하는 물리 어드레스로 변환시키는 단계를 포함함에 따라서
    상기 메모리 액세스 동작은, 상기 제1 세트의 허가와 상기 제2 세트의 허가의 양쪽을 충족하는 경우에만 허가되는, 데이터 처리 방법으로서,
    예외 레벨들의 계층내의 선택 가능한 예외 레벨에서 상기 처리 회로소자를 작동시키는 단계;
    상기 예외 레벨들의 계층내의 제1 예외 레벨에서 작동할 때, 상기 처리 회로소자에게 상기 제1 세트의 허가를 변경하는 것을 허가하고 상기 제2 세트의 허가를 변경하는 것을 허가하지 않는 단계; 및
    상기 예외 레벨들의 계층내의 제2 예외 레벨에서 작동할 때, 상기 처리 회로소자에게 상기 제2 세트의 허가를 변경하는 것을 허가하는 단계를 포함하고,
    상기 데이터 처리 방법은,
    상기 제2 예외 레벨로부터 상기 제1 예외 레벨로 전환할 때, 상기 처리 회로소자가 상기 제1 예외 레벨에서 작동하는 동안 액티브가 될 상기 제1 하드웨어 메모리 보호 유닛과 상기 메모리 관리 유닛 중 한쪽의 유닛을 선택하는 단계를 더 포함하는, 데이터 처리 방법.
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020157023132A 2013-02-05 2013-02-05 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템 KR102051816B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/GB2013/050257 WO2014122415A1 (en) 2013-02-05 2013-02-05 Virtualisation supporting guest operating systems using memory protection units

Publications (2)

Publication Number Publication Date
KR20150117278A KR20150117278A (ko) 2015-10-19
KR102051816B1 true KR102051816B1 (ko) 2019-12-04

Family

ID=47678887

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157023132A KR102051816B1 (ko) 2013-02-05 2013-02-05 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템

Country Status (7)

Country Link
US (1) US9747052B2 (ko)
EP (1) EP2954419B1 (ko)
JP (1) JP6106765B2 (ko)
KR (1) KR102051816B1 (ko)
CN (1) CN104956342B (ko)
IL (1) IL239668B (ko)
WO (1) WO2014122415A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014208848A1 (de) * 2014-05-12 2015-11-12 Robert Bosch Gmbh Verfahren zum Überwachen eines elektronischen Sicherheitsmoduls
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
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
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
DE102016222695A1 (de) * 2016-11-17 2018-05-17 Continental Teves Ag & Co. Ohg Verfahren zur automatischen und dynamischen Re-Konfiguration einer Speicherschutz-Einheit sowie ein Mikrocontroller mit einer Speicherschutz-Einheit
US10664306B2 (en) 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US20180203807A1 (en) 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10394454B2 (en) 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10268379B2 (en) * 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10649678B2 (en) * 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
JP6541912B2 (ja) * 2017-03-02 2019-07-10 三菱電機株式会社 情報処理装置およびアクセス管理プログラム
GB2562102B (en) 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
GB2563009B (en) * 2017-05-25 2019-12-25 Advanced Risc Mach Ltd An apparatus and method for interpreting permissions associated with a capability
US10664400B2 (en) 2017-07-11 2020-05-26 Arm Limited Address translation cache partitioning
US20210049112A1 (en) * 2018-02-02 2021-02-18 Huawei Technologies Co., Ltd. Kernel integrity protection method and apparatus
JP6990150B2 (ja) * 2018-06-18 2022-01-12 ルネサスエレクトロニクス株式会社 データ処理装置及びメモリ保護方法
GB2575877B (en) 2018-07-27 2021-06-09 Advanced Risc Mach Ltd Memory protection unit using memory protection table stored in memory system
US11256625B2 (en) 2019-09-10 2022-02-22 Arm Limited Partition identifiers for page table walk memory transactions
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
GB2596103B (en) 2020-06-17 2022-06-15 Graphcore Ltd Dual level management
CN113360422B (zh) * 2021-07-13 2022-02-18 科东(广州)软件科技有限公司 一种异构系统中实时操作系统设备收发数据的方法及装置
WO2023061607A1 (en) * 2021-10-15 2023-04-20 Huawei Technologies Co., Ltd. Regulating access to memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205203A1 (en) * 2003-03-24 2004-10-14 Marcus Peinado Enforcing isolation among plural operating systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578110B1 (en) * 1999-01-21 2003-06-10 Sony Computer Entertainment, Inc. High-speed processor system and cache memories with processing capabilities
DE60133880D1 (de) * 2000-02-01 2008-06-19 Cirrus Logic Inc Verfahren und schaltkreis um ein system in einem sicheren umfeld selektiv zu betreiben
US20020069341A1 (en) * 2000-08-21 2002-06-06 Gerard Chauvel Multilevel cache architecture and data transfer
JP4302641B2 (ja) * 2002-11-18 2009-07-29 エイアールエム リミテッド デバイスによるメモリへのアクセスの制御
GB0226875D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Control of access to a memory by a device
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
RU2005115083A (ru) * 2002-11-18 2006-01-20 Арм Лимитед (Gb) Переключение процессора между защищенным и незащищенным режимами
US20070174910A1 (en) * 2005-12-13 2007-07-26 Zachman Frederick J Computer memory security platform
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
US8205197B2 (en) * 2008-11-12 2012-06-19 Lenovo (Singapore) Pte. Ltd. Apparatus, system, and method for granting hypervisor privileges
US20110202740A1 (en) * 2010-02-17 2011-08-18 Arm Limited Storing secure page table data in secure and non-secure regions of memory
US9940268B2 (en) * 2013-02-05 2018-04-10 Arm Limited Handling memory access protection and address translation in a data processing apparatus
US9215129B2 (en) * 2013-04-11 2015-12-15 International Business Machines Corporation Automatically constructing protection scope in a virtual infrastructure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205203A1 (en) * 2003-03-24 2004-10-14 Marcus Peinado Enforcing isolation among plural operating systems

Also Published As

Publication number Publication date
CN104956342A (zh) 2015-09-30
EP2954419A1 (en) 2015-12-16
CN104956342B (zh) 2018-04-27
JP2016510469A (ja) 2016-04-07
EP2954419B1 (en) 2017-03-29
US9747052B2 (en) 2017-08-29
IL239668A0 (en) 2015-08-31
IL239668B (en) 2019-02-28
KR20150117278A (ko) 2015-10-19
WO2014122415A1 (en) 2014-08-14
JP6106765B2 (ja) 2017-04-05
US20150347052A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
KR102051816B1 (ko) 메모리 보호 유닛들을 사용한 가상화 지원 게스트 오퍼레이팅 시스템
JP6158952B2 (ja) データ処理装置のメモリ・アクセス動作の操作
EP1966706B1 (en) Identifier associated with memory locations for managing memory accesses
US9009727B2 (en) Virtualization with in-place translation
KR101751627B1 (ko) 온디맨드로 가상 머신 모니터의 동작들을 선택적으로 인에이블하기 위한 방법 및 장치
KR101691017B1 (ko) 데이터 처리장치 및 데이터 처리방법
KR101799261B1 (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
KR102605793B1 (ko) 자격들의 이용을 관리하는 장치 및 방법
WO2018063571A1 (en) Technologies for object-oriented memory management with extended segmentation
JP2022503562A (ja) 範囲チェック命令
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
JP2022505011A (ja) メモリ・アクセスを制御するための装置及び方法
JP6788748B2 (ja) ワーキングメモリを保護する方法および装置
Krzyzanowski MemoryáManagement: áPaging

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant