KR100955284B1 - 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체 - Google Patents

보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체 Download PDF

Info

Publication number
KR100955284B1
KR100955284B1 KR1020057008760A KR20057008760A KR100955284B1 KR 100955284 B1 KR100955284 B1 KR 100955284B1 KR 1020057008760 A KR1020057008760 A KR 1020057008760A KR 20057008760 A KR20057008760 A KR 20057008760A KR 100955284 B1 KR100955284 B1 KR 100955284B1
Authority
KR
South Korea
Prior art keywords
mode
secure
security
monitor
processor
Prior art date
Application number
KR1020057008760A
Other languages
English (en)
Other versions
KR20050086673A (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
Priority claimed from GBGB0226874.6A external-priority patent/GB0226874D0/en
Priority claimed from GB0303494A external-priority patent/GB0303494D0/en
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20050086673A publication Critical patent/KR20050086673A/ko
Application granted granted Critical
Publication of KR100955284B1 publication Critical patent/KR100955284B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

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)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Abstract

다수의 모드와 다수의 도메인에서 동작 가능한 프로세서를 구비한 데이터 처리 시스템이 제공된다. 상기 다수의 모드는 상기 보안 도메인 내의 모드인 적어도 하나의 보안 모드, 상기 비보안 도메인 내의 모드인 적어도 하나의 비보안 모드, 및 모니터 모드로 구성되며, 상기 프로세서는 비보안 모드에서 작동시에는 억세스할 수 없는 보안 데이터에 억세스 할 수 있는 프로그램을 보호모드에서 실행하고, 상기 보안 모드와 비보안 모드 사이의 전환(switching)은 상기 모니터 모드에서 일어나며, 상기 프로세서는 상기 보안 모드와 상기 비보안 모드 사이의 전환을 제어하기 위한 모니터 프로그램을 수행하기 위하여 상기 모니터 모드에서 적어도 부분적으로 동작가능하다.
데이터 처리시스템, 보안 모드, 비보안, 프로세서, 모니터 모드

Description

보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체{DATA PROCESSING APPARATUS FOR PROCESSOR SWITCHING BETWEEN SECURE AND NON-SECURE MODES, DATA PROCESSING METHOD AND COMPUTER-READABLE STORAGE MEDIUM}
본 발명은 데이터 처리 시스템에 관한 것이다. 구체적으로는 본 발명은 데이터 처리 시스템의 보안모드(secure mode)와 비보안모드(non-secure mode) 사이의 전환 제어에 관한 것이다.
데이터 처리 장치는 전형적으로 데이터 처리 장치에 적재된 어플리케이션을 실행하기 위한 프로세서를 포함한다. 상기 프로세서는 운영체계의 제어하에 동작한다. 특정한 어플리케이션을 수행하기 위하여 필요한 데이터는 데이터 처리 장치의 메모리 내부에 저장된다. 상기 데이터는 어플리케이션에 포함된 명령어 및/또는 이러한 명령어들이 프로세서에서 수행되는 동안 사용되는 실제 데이터 값일 수 있다.
하나 이상의 어플리케이션에서 사용되는 데이터는 프로세서상에서 실행되는 다른 어플리케이션에 의하여 억세스 되지 않아야 하는 민감한 것인 다양한 경우가 있을 수 있다. 예를 들어, 데이터 처리 장치가 스마트 카드인 경우, 어플리케이션들 중 한가지가 검증(validation), 인증(authentication), 복호화(decryption) 등을 수행하기 위하여 보안 키와 같은 민감한 데이터를 사용하는 보안 어플리케이션인 경우가 있다. 이러한 상황에서는 민감한 데이터가 보안 키이고, 이것이 데이터 처리장치에 적재된 다른 어플리케이션, 예를 들어, 보안 데이터에 억세스하기 위하여 검색하는 것을 목적으로 하는 데이터 처리장치에 적재된 해킹 어플리케이션에 의하여 억세스 될 수 없도록 하는 것이 중요하다.
공지의 시스템에서는, 운영체계가 하나의 어플리케이션의 보안 데이터가 운영체계의 제어하에 실행되는 다른 어플리케이션에 의하여 억세스 될 수 없도록 충분한 보안성을 제공하도록 하는 것이 운영체계 개발자의 업무였다. 그러나, 시스템이 점점 복잡해지면서 운영체계의 경향은 점점 커지고 복잡해지며, 이러한 상황에서 운영체계 자체내에서 충분한 보안성을 확보하는 것은 점점 어려워졌다.
민감한 데이터에 대한 안전한 저장공간을 제공하고 악의적인 프로그램 코드로부터 보호하기 위한 시스템의 예로 미국특허출원 US 2002/007456 A1 및 미국특허 US 6,282,657B, US 6,292,874B가 있다.
따라서, 데이터 처리장치의 메모리 내부에 포함된 보안 데이터의 보안성을 확보하기 위한 개선된 기술의 제공이 바람직하다.
본 발명의 한 측면은 데이터를 처리하기 위한 장치에 관한 것으로, 상기 장치는
다수의 모드와 다수의 도메인에서 동작 가능한 프로세서로서, 상기 다수의 도메인은 보안 도메인과 비보안 도메인으로 구성되고, 상기 다수의 모드는
상기 보안 도메인 내의 모드인 적어도 하나의 보안 모드;
상기 비보안 도메인 내의 모드인 적어도 하나의 비보안 모드; 및
모니터 모드로 구성되는 프로세서에 있어서,
상기 프로세서는 비보안 모드에서 작동시에는 억세스할 수 없는 보안 데이터에 억세스 할 수 있는 프로그램을 보호모드에서 수행하며,
상기 보안 모드와 비보안 모드 사이의 전환(switching)은 상기 모니터 모드에서 수행되며, 상기 프로세서는 상기 모니터 모드에서 상기 보안 모드와 상기 비보안 모드 사이의 전환을 제어하기 위한 모니터 프로그램을 수행하기 위하여 적어도 부분적으로 동작 가능한 프로세서를 구비하는 것을 특징으로 한다.
본 발명은 보안 모드와 비보안 모드의 양쪽에서 동작 가능한 시스템의 보안을 제어하기 위한 중요한 측면은 보안 모드와 비보안 모드 사이의 전환이 어떻게 제어되는가 하는 점이라는 것을 인식하고 있다. 구체적으로는, 전환이 수행되는 방식에 유연성이 존재할수록 보안상의 잠재적인 취약성이 있다. 본 발명은 어떠한 보안 모드와 비보안 모드사이의 전환도 모니터 모드에서만 온전하게 수행되도록 함으로써 이러한 점을 지적하고 있다. 전환은 모니터 모드에서 온전하게 수행되거나, 전환과 관련된 태스크, 예를들어 문맥(context)의 저장/복구를 수행하기 위하여 모니터 모드에서 일부 보안 모드(즉, 보안 특권모드)로의 전환을 사용할 수도 있다. 따라서, 모니터 모드의 보안성이나 보안커널이 직,간접적으로 침해될 수 없다면 보호 모드와 비보호 모드 사이의 무허가 전환이 발생할 수 없다. 이러한 구조에서는 모니터 모드의 책임이 보안 도메인과 비보안 도메인 사이의 전환을 지원하기 위하여 필요한 정도로 제한되기 때문에 모니터 모드가 상대적으로 단순하게 만들어 질 수 있도록 한다. 일반적으로, 모니터 모드가 단순할수록 보안의 침해가 이루어 질 수 있는 취약성은 줄어든다. 모니터 프로그램(커널)은 보안 도메인과 비보안 도메인 사이의 전환을 제어하기 위해서 적어도 부분적으로 작동할 수 있다 - 모니터 커널의 일부분은 모니터 모드 대신에 보안 특권모드(secure privileged mode)에서 작동할 수도 있다.
모니터 모드의 보안 도메인과 비보안 도메인 사이의 전환을 운영하는 부분인 동작의 예는 모니터 프로그램(적어도 일부는 모니터 모드에서 작동하나, 문맥의 저장/복구 또는 다른 동작을 수행하기 위하여 보안 특권모드로의 전환이 필요할 수도 있다.)에서 보안 도메인과 비보안 도메인에 의하여 공유된 프로세서의 레지스터 뱅크의 적어도 일부분을 비우는 동작(flush)을 할 수 있는 것이다. 이는 비보안 도메인으로 전환될 경우에 보안 도메인의 레지스터에 존재하던 어떠한 데이터도 남아있지 못하도록 하여 비보안 도메인에서 이러한 데이터가 우연히라도 억세스될 수 없도록 한다.
대안으로 가능한 실시예로서, 비보안 레지스터 뱅크와 보안 레지스터 뱅크를 분리할 수도 있다. 이러한 접근은 보안 도메인과 비보안 도메인 사이의 전환에 필요한 총 시간을 감소시킨다는 장점을 갖지만, 비보안 도메인에서 보안 도메인으로 데이터를 넘겨주는 것이 불편해지는 만큼 부가적인 하드웨어 요구사항이 필요하다는 단점이 있다. 보안 도메인과 비보안 도메인 사이의 전환은 다양한 방법으로 개시될 수 있으나, 이들은 바람직하게는 모니터 모드에서 서비스하기 위하여 동작하는 모니터 프로그램의 하나 또는 그 이상의 고정된 위치에 존재하는 특징을 공유한다. 가능한 진입(entry) 포인트를 모니터 프로그램 내부에서 작은 수의 고정된 위치로 제어하는 것은 보안을 강화시킨다. 반면에, 보안 도메인에서는 문맥 전환(context switching)을 가능하게 하고, 모니터 모드에서 동작하는 소프트웨어를 단순화시키는 것을 가능하게 하는 방식으로 보안 사용자 모드(secure user modes)로의 전환에 적용되는 보통의 메카니즘을 이용하여 보안 특권 모드가 모니터 모드로 전환한다.
본 발명의 바람직한 실시예에 있어서, 전환은 모니터 프로그램 내부의 고정된 지점에서 만들어진 콜(call)의 형태이다.
본 발명의 다른 실시예에 있어서, 전환은 보안 상태 변수나 프로그램 상태 변수를 저장하기 위하여 기록하는 것과 같은 모니터 모드에서 시스템을 보안 도메인에서 비보안 도메인으로 바꾸기 위한 프로그램에 의한 시도에 의해서 발생된다. 이러한 시도는 하드웨어에 의하여 인지되며 모니터 프로그램 내부의 고정된 위치에 콜을 발생시키도록 동작한다.
모니터 모드에 대한 진입(entry)이 비보안 모드에서 시작되면, 프로세서는 비보안 모드로 되돌아갈 때 복구되도록 프로그램 카운터 값을 저장하여 중지된 시점에서 작업이 재개되도록 한다. 비보안 모드로 되돌아갈 때 하나 또는 그 이상의 프로세서 상태 값이 복구될 필요가 있는 경우 이와 유사하게 상태의 저장이 수행된다.
예외가 발생할 수 있다는 점에서 문제가 발생할 수 있다.
프로세서가 보안 모드에 있는 경우 예외(exception)가 바람직하게 처리되도록 하기 위하여 비보안 모드로의 전환을 필요로 하는 예외가 발생할 수 있으므로 문제가 있을 수 있다. 이런 경우, 보안 모드와 비보안 모드 사이의 전환은 정상적인 경우와 같이 모니터 모드를 경유하며, 모니터 모드는 비보안 모드에 의존하여 보안 모드 프로세싱을 재개하는 것이 아니라 비보안 모드가 예를들어 시스템이 보안 모드에 있을 때 예외가 발생하는 지점에서의 프로그램 카운터 값 또는 프로세서 상태 레지스터 값과 관련한 보안계(secure world)에 관한 몇몇 정보를 취득하도록 하여 보안 프로세싱이 적절한 지점에서 재개할 수 있도록 책임진다.
보안 도메인과 비보안 도메인을 명확하게 구분짓는 방법은 보안 상태 플래그를 시스템과 연관짓는 것이다. 보안 상태 플래그의 제어는 보안 상태 플래그를 모니터 모드에서만 기록가능하도록 함으로써 모니터 모드로 집중된다.
본 발명의 시스템이 사용되는 바람직한 실시예는 프로세서가 비보안 모드에서 동작시 이를 제어하는 비보안 운영체계와 프로세서가 보안 모드에서 작동할때 이를 제어하는 보안 운영체계(몇몇 케이스에서는 축소된 보안 커널인)를 제공하는 것이다. 모니터 프로그램은 바람직하게는 보안 운영 체계의 일부로 제작될 수 있다.
본 발명의 바람직한 실시예에서는 보안 도메인과 비보안 도메인 사이의 전환을 제어하는 모니터 프로그램에 대한 인터럽트(interrupt)을 통하여 시스템 보안의 잠재적인 취약성이 발생할 수 있음을 인지하고 있다. 따라서, 본 발명의 바람직한 실시예는 예외 처리(정상적인 프로그램 흐름에 대한 인터럽트)를 실행시키는 적어도 하나 이상의 예외 조건이 모니터 모드에서는 비활성화(disable)된다.
보안 도메인들 사이의 전환이 모니터 모드를 경유하여 이루어지는 속도를 향상시키기 위하여, 본 발명의 몇몇 실시예에서는 비용/이익 조건이 매우 뛰어난 경우, 모니터 모드로 들어갔을때 프로세서의 레지스터 뱅크 내부의 범용 레지스터로 대용되는 전용 레지스터(새도우 레지스터)를 제공한다. 즉, 이러한 전용 레지스터는 모니터 프로그램에 의하여 즉시 사용될 수 있어 모니터 프로그램이 존재하는 레지스터의 내용을 그 동작이 완료되기 이전에 저장할 필요가 없으며, 따라서 모니터 모드에서 전환을 수행하는데 소요되는 시간을 단축시킬 수 있다. 모니터 모드에서 예외들이 비활성화된 경우 모니터 모드에서 사용되는 필요시간을 단축하는 것이 더욱 중요하다.
인터럽트와 같은 예외가 시스템의 전체적인 보안의 잠재적인 취약성을 나타내므로 시스템의 문맥에서 예외가 처리되는 방식은 그 자체로 중요하다.
시스템이 특정 조건에 적응하기 위하여 예외에 반응하는 방안을 가능하게 하기 위하여, 본 발명의 바람직한 실시예는 어떤 예외가 그 모드에서 실행중인 예외 핸들러(handler)에 의하여 처리되어야 하는지, 예외 발생시 어떤 예외가 현재 도메인 내부의 하나의 모드에서 실행중인 예외 핸들러에 의하여 처리되어야 하는지를 지시하는 하나 또는 그 이상의 파라미터를 저장하는 예외 트랩(trap) 마스크 레지스터를 제공한다. 따라서, 예외 발생의 형태에 의존하는 경우 시스템은 그 예외를 처리하기 위하여 보안 도메인으로 전환하도록 강제되거나, 비보안 도메인인 현재 도메인에 머물 수 있을 것이다. 모니터 모드는 보안 도메인으로 전환할 수 있는 능력이 있다. 그리고 보안 상태 플래그가 이 모드에서 선택될 수 있고 시스템의 전체 보안이 모니터 모드의 보안에 달려있는 것으로 간주될 수 있어 보안 모드로 간주될 수 있다. 시스템의 보안 상태는 몇가지 방식으로 보안 상태 플래그와 상기 시스템이 모니터 모드에 있는지 여부의 OR로 간주될 수 있다. 특정 예외는 모니터 모드에서 처리되도록 강제된다. 또는, 예외는 보안 또는 비보안 모드를 불문 시스템의 현재모드에서 동작하는 예외 핸들러에 의하여 처리되도록 남겨질 수도 있다.
본 발명의 바람직한 실시예는 특수 목적의 모니터 모드 진입 명령어를 제공하여, 모니터 모드로 진입하기 위하여 하드웨어가 상기 명령어에 반응하며 소정의 위치에서 모니터 프로그램을 수행하도록 한다. 이러한 모니터 모드 진입 명령어는 연관된 모드 전환 소프트웨어 인터럽터 벡터를 이용하는 모드 전환 소프트웨어 인터럽트의 형태일 수 있다. 모니터 모드로 진입하는 주요한 방식이 이러한 명령어를 이용하는 것으로 하고, 고정된 지점에서 모니터 프로그램의 실행을 시작하는 것과 같은 분명하고 정확하게 정의된 방식에 의하여 하드웨어가 반응하도록 강제하도록 명령어의 동작을 조율하는 것은 특히 장점이 있다.
보안 도메인과 비보안 도메인 내부에는 다양한 프로세싱 모드가 제공되며 양 도메인에 동일한 모드가 제공되어야 할 필요는 없다. 가능한 모드의 예로는 관리자 모드, 시스템 모드, 취소 예외 모드, 정의되지 않은 예외 모드, 인터럽트 모드, 패스트 인터럽트 모드 및 사용자 모드가 있다.
바람직한 실시예에서 프로세서는 상기 보안 도메인에서 상기 비보안 도메인으로 형태를 변경할 수 없는 보안 도메인 내부의 적어도 하나의 보안 특권 모드에서 동작가능하며, 상기 보안 특권 모드는 상기 보안 특권 모드가 프로그램 실행 지점의 변경없이 상기 모니터 모드로 변경되는 것을 허가할 특권을 갖는다.
모니터 프로그램은 기본적으로 보안과 비보안 도메인 사이에서 각 방향에서의 변경을 관리하는 책임이 있다. 상기 모니터 프로그램은 모니터 모드에서 적어도 부분적으로 실행된다. 예를들어, 모니터 프로그램은 모니터 모드와 보안 모드에서 각각 부분적으로 실행될 수 있다. 보안 커널은 보안 특권 모드에서 실행된다. 보안 특권 모드가 모니터 모드로 전환하는 것을 허용함에 따라 모니터 프로그램은, 비록 보안 커널의 복잡도를 증가시킬지라도 일부 함수를 보안 커널로 옮김으로써 더욱 단순하게 쓰여질 수 있다. 모니터 프로그램을 단순하게 만듦으로써 보안이 지켜짐을 확인하는 것이 용이해져 보안성이 강화된다. 즉, 모니터 프로그램이 보안과 비보안 도메인을 오가는 까닭에 오직 의도한 것만을 행하도록 하는 것이 중요하다. 보안 커널은 그러나 보안 도메인에서만 실행된다. 모니터 프로그램은 다른 모드들로 전환시 다시 모니터 모드로 돌아올 수 있으므로 보안 특권 모드의 상태를 저장할 수 있다.
바람직한 실시예에서 프로세서는 보안 도메인과 비보안 도메인 사이의 변경을 위하여 보안 플래그를 변경하도록 작동할 수 있으며, 이러한 보안 플래그는 모니터 모드 외부에서는 쓰기 금지되어 있다. 보안 플래그는 모니터 모드의 외부에서 읽기 금지가 되어 있을수도 없을수도 있다.
이러한 기법이 프로그램 실행의 변경없이 보안 특권모드에서 모니터 모드로의 변경을 허용하므로, 바람직한 실시예는 모니터 모드로 전환을 수행하는 소프트웨어 명령어를 책임진다. 그러나 이 경우 소프트웨어 인터럽트 명령어와 연관된 인터럽트 벡터에 의하여 특정되는 프로그램 실행 지점의 변경이 있다. 이러한 소프트웨어 인터럽트 메카니즘은 소프트웨어 인터럽트 메카니즘 프로그램의 흐름이 인터럽트 메카니즘을 이용하도록 강제되므로 보안 특권 모드에서 제공되는 진입에 비하여 덜 유연하다. 소프트웨어 인터럽트 메카니즘은 인터럽트 루틴의 코드가 폐쇄적으로 제어될 수 있어 낮은 위성험으로 보안 또는 비보안 특권 모드에서 호출될 수 있다.
보안 도메인이 오직 보안 특권 모드만을 포함하도록 하는 것이 가능하므로, 바람직한 실시예에서는 프로그램 실행 지점의 변경없이 모니터 모드로의 전환이 불가능한 적어도 하나의 비보안 특권모드가 전형적으로 포함된다. 보안 도메인 내부의 모드의 다양성은 보안 도메인 내부의 운영체계의 적절한 구성과 조합을 가능하게 한다.
본 발명의 바람직한 실시예에 있어서 리셋에 의하여 프로세서가 보안 특권 모드로 진입한다. 보안 특권 모드로 리셋하는 것은 다양한 서로 다른 잇점을 갖는데, 예를들어 비보안 환경에서 보안을 신경쓰지 않는 운영체계에 대한 하향 호환성과 같은 장점이 있다. 보안 특권모드로 리셋함에 의하여 보안에 민감한 시스템은 보안 동작이 필요하지 않더라도 보안 도메인에 머무를 수 있다. 시스템이 보안을 신경쓰는 경우, 보안 특권 모드에서 부팅하는 것은 모니터 모드 내부에서 실행되는 모니터 프로그램이 보안이 더욱 향상되도록 단순한 형태로 유지하는 것이 가능하도록 하는 보안 특권 모드 내부의 보안 커널에 의하여 제공되는 다수의 코드와 부팅 동작의 지원을 허용한다.
모니터 모드와 보안 특권 모드 사이의 적절한 균형을 위하여, 바람직한 실시예에서는 모니터 모드에서 억세스 가능한 메모리 영역이 보안 특권 모드에서도 또한 억세스 가능하다.
본 발명의 다른 양상은 데이터를 처리하는 방법을 제공하는데, 상기 방법은
다수의 모드와 다수의 도메인에서 동작가능한 프로세서로 프로그램을 실행하는 방법에 있어서, 상기 다수의 도메인은 보안 도메인과 비보안 도메인을 포함하며, 상기 다수의 모드는
상기 보안 도메인 내의 모드인 적어도 하나의 보안 모드;
상기 비보안 도메인 내의 모드인 적어도 하나의 비보안 모드; 및
모니터 모드로 구성되는 프로세서에 있어서,
상기 프로세서는 비보안 모드에서 작동시에는 억세스할 수 없는 보안 데이터에 억세스 할 수 있는 프로그램을 보호모드에서 수행하며,
상기 보안 모드와 비보안 모드 사이의 전환은 상기 모니터 모드에서 수행되며, 상기 프로세서는 상기 모니터 모드에서 상기 보안 모드와 상기 비보안 모드 사이의 전환을 제어하기 위한 모니터 프로그램을 수행하기 위하여 적어도 부분적으로 동작 가능한 것임을 특징으로 한다.
본 발명에 대하여 첨부하는 도면에 도시된 실시예를 참조하여 예시적인 방법으로 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 데이터 처리 장치를 개략적으로 도시하는 블록도이며,
도 2는 비보안 도메인과 보안 도메인에서 동작하는 서로 다른 프로그램을 도시하는 개략도이며,
도 3은 서로 상이한 보안 도메인에 연관된 처리(processing) 모드의 행열을 도시하는 개략도이며,
도 4 및 5는 프로세싱 모드와 보안 도메인 사이의 상이한 관계를 도시하는 개략도이며,
도 6은 프로세싱 모드에 따른 프로세서의 레지스터 뱅크의 프로그래머 모델을 도시하며,
도 7은 보안 도메인과 비보안 도메인에 대한 각각의 레지스터 뱅크를 제공하는 예를 도시하는 예시도이며,
도 8은 각각의 모니터 모드를 통하여 수행되는 보안 도메인 사이의 전환과 관련된 다수의 프로세싱 모드를 도시하는 개략도이며,
도 9는 모드 전환 소프트웨어 인터럽트 명령어를 이용한 보안 도메인 전환의 과정을 도시하는 개략도이며,
도 10은 비보안 인터럽트 요청과 보안 인터럽트 요청이 시스템에 의하여 어떻게 되는지 예를 들어 도시하는 개략도이며,
도 11A 및 11B는 도 10에 의한 보안 인터럽트 요청 처리의 예와 비보안 인터럽트 요청 처리의 예를 도시하는 개략도이며,
도 12는 도 10에 도시된 것과 비교하여 비보안 인터럽트 요청 신호와 보안 인터럽트 요청 신호를 처리하는 다른 개요를 도시하는 개략도이며.
도 13A 및 13B는 도 12에 도시된 개요에 의한 비보안 인터럽트 요청 및 보안 인터럽트 요청을 처리하는 예시적인 과정을 도시하는 예시도이며,
도 14는 벡터 인터럽트 테이블의 예시도이며,
도 15는 서로 상이한 보안 도메인과 연관된 멀티 벡터 인터럽트 테이블을 예시하는 개략도이며,
도 16은 예외 제어 레지스터를 도시하는 개략도이며,
도 17은 보안 도메인 세팅을 변경하는 방식으로 프로세싱 상태 레지스터를 변경하는 명령어가 모니터 모드에 대한 진입을 발생시켜 모니터 프로그램을 실행시키는 개별 모드 변경 예외를 어떻게 발생시키는지 도시하는 흐름도이며,
도 18은 모니터 모드의 태스크가 인터럽트된 경우의, 다수의 모드에서 동작하는 프로세서의 제어 쓰레드(thread)를 도시하는 개략도이며,
도 19는 다수의 모드에서 동작하는 프로세서의 서로 다른 제어 쓰레드를 도시하는 개략도이며,
도 20은 모니터 모드에서 인터럽트가 활성화(enable)된 경우, 다수의 모드에서 동작하는 프로세서의 다른 제어 쓰레드를 도시하는 개략도이며,
도 21 내지 23은 제 2 실시예에 따른 보안 도메인과 비보안 도메인 사이의 전환에 관한 시나리오와 다른 프로세싱 모드의 관점을 도시하며,
도 24는 전통적인 ARM 코어에 보안 프로세싱 옵션을 부가하는 개념을 도시하는 개략도이며,
도 25는 보안 도메인과 비보안 도메인과 리셋을 구비하는 프로세서를 도시하는 개략도이며,
도 26은 소프트웨어 페이크(fake) 인터럽트를 이용하여 일시 중단된 운영체계에 프로세싱 요청을 전달하는 것을 도시하는 개략도이며,
도 27은 소프트웨어 페이크 인터럽트를 통하여 일시 중단된 운영체계에 프로세싱 요청을 전달하는 다른 예를 도시하는 개략도이며,
도 28은 도 26 및 27에서 생성된 것과 같은 종류의 소프트웨어 페이크 인터럽트를 수신한 경우의 처리 과정을 개략적으로 도시하는 흐름도이며,
도 29 및 30은 비보안 운영체계에 의하여 생성된 가능한 태스크 전환을 추적하기 위한 보안 운영체계에 의한 태스크를 도시하는 개략도이며,
도 31은 도 29 및 30의 보안 운영체계의 호출을 수신한 경우의 처리 과정을 개략적으로 도시하는 흐름도이며,
도 32는 서로 다른 운영체계에 의하여 다른 인터럽트들이 처리되는 다수의 운영체계를 갖는 시스템에서 발생할 수 있는 인터럽트 우선순위 역전의 문제점을 개략적으로 도시하는 개략도이며,
도 33은 도 32에 도시된 문제점을 피하기 위한 스텁(stub) 인터럽트 핸들러의 사용법을 개략적으로 도시한 개략도이며,
도 34는 서로 다른 종류와 다른 우선순위의 인터럽트들이 다른 운영체계를 사용하여 제공되는 인터럽트에 의하여 일시중단될 수 있는지 여부에 따라 어떻게 처리되는지 도시하며,
도 35는 프로세서가 모니터 모드에서 동작중일때 어떻게 모니터 모드에 특화된 프로세서 환경설정 데이터(configuration data)로 프로세서 조정 데이터를 덮어쓰는지 도시하며,
도 36는 본 발명의 제 1 실시예에 따른 보안 도메인과 비보안 도메인 사이의 전이시 어떻게 프로세서 조정 데이터가 전환되는지 도시하는 흐름도이며,
도 37은 본 발명의 제 1 실시예에서 메모리 억세스를 제어하기 위하여 사용되는 메모리 운영 로직을 도시하는 블록도이며,
도 38은 본 발명의 제 2 실시예에서 메모리 억세스를 제어하기 위하여 사용되는 메모리 운영 로직을 도시하는 블록도이며,
도 39는 본 발명의 제 1 실시예에 따른 가상주소를 지시하는 메모리 억세스 요청을 처리하기 위한 메모리 운영 로직 내에서 이루어지는 프로세서를 도시한 흐름도이며,
도 40은 본 발명의 제 1 실시예에 따른 물리주소를 지시하는 메모리 억세스 요청을 처리하기 위한 메모리 운영 로직 내에서 이루어지는 프로세서를 도시한 흐름도이며,
도 41은 바람직한 실시예의 파티션 체커(partition checker)가 메모리 억세스를 처리하려는 장치가 비보안 모드에서 동작중일때 보안 메모리 내부의 물리 주소에 대한 억세스를 방지하기 위하여 어떻게 동작하는지 개략적으로 도시하는 개략도이며,
도 42는 본 발명의 바람직한 실시예에 따른 비보안 페이지 테이블 및 보안 페이지 테이블 양자의 사용을 도시하는 블록도이며,
도 43은 바람직한 실시예의 주(main) 변환색인버퍼(TLB)에서 사용된 두가지 형태의 플래그를 도시한 블록도이며,
도 44는 본 발명의 제 1 실시예에서 부팅 단계 이후 메모리가 어떻게 파티션 나눠지는지를 도시하며,
도 45는 본 발명의 실시예에 따른 부트 파티션의 동작이후 메모리 운영 유니트에 의한 비보안 메모리의 매핑을 도시하며,
도 46은 본 발명의 실시예에 따른 보안 어플리케이션이 비보안 어플리케이션과 메모리를 공유하도록 메모리 일부의 권한이 어떻게 변경되는지를 도시하며,
도 47은 본 발명의 제 1 실시예에 따른 데이터 처리 장치의 외부 버스에 장치가 어떻게 접속하는지를 도시하며,
도 48은 본 발명의 제 2 실시예에 따른 외부 버스에 장치가 어떻게 커플링되는지 도시하는 블록도이며,
도 49는 단일한 페이지 테이블 셋이 사용되는 실시예에서 물리 메모리의 배열을 도시하며,
도 50A는 두개의 MMU가 매개주소를 이용하여 가상주소에서 물리주소로 변환되는 배열을 도시하며,
도 50B는 두개의 MMU가 매개주소를 이용하여 가상주소에서 물리주소로 변환되는 다른 배열을 도시하며,
도 51은 보안 도메인과 비보안 도메인의 물리 주소 공간과 매개 주소 공간(intermediate address space)의 일치여부를 예시적으로 도시하며,
도 52는 제 2 MMU와 연관된 페이지 테이블의 조작을 통한 보안 도메인과 비보안 도메인의 메모리 영역의 스와핑을 도시하며,
도 53은 주 TLB에서 놓치는 경우 가상에서 물리 주소로의 변환을 판단하기 위하여 발동되는 예외를 발생시키는 단일 MMU를 이용한 실시예를 도시하며,
도 54는 도 53의 MMU의 주 TLB에서 놓치는 경우 발생되는 예외을 처리하기 위하여 프로세서 코어에 의하여 수행되는 처리과정을 도시하는 흐름도이며,
도 55는 일 실시예에 따른 데이터 처리 장치 내부에 제공되는 부재를 도시하는 블록도로서, 캐쉬는 개별 캐쉬 라인에 저장되는 데이터가 보안 데이터인지 비보안 데이터인지 나타내는 정보를 제공받으며,
도 56은 도 55에 도시된 메모리 운영 유니트의 구성을 도시하며,
도 57은 도 55의 데이터 처리 장치 내부에서 비보안 메모리 억세스 요청을 처리하기 위하여 수행되는 처리과정을 도시하는 흐름도이며,
도 58은 도 55의 데이터 처리 장치 내부에서 보안 메모리 억세스 요청을 처리하기 위하여 수행되는 처리과정을 도시하는 흐름도이며,
도 59는 프로세서에서 수행되는 서로 다른 모드와 어플리케이션을 위한 모니터링 함수의 가능한 입상(granularity)를 도시하는 개략도이며,
도 60은 상이한 모니터링 함수를 구동하는 가능한 방법들을 도시하며,
도 61은 상이한 모니터링 함수를 제어가능한 제어 값의 테이블을 도시하며,
도 62는 포지티브 엣지 트리거드 플립플롭(positive-edge triggered FILP FLOP)을 도시하며,
도 63은 스캔 체인 셀(scan chain cell)을 도시하며,
도 64는 스캔 체인 내의 다수의 스캔 체인 셀을 도시하며,
도 65는 디버그 TAP 콘트롤러를 도시하며,
도 66A는 JADI 입력을 구비한 디버그 TAP 콘트롤러를 도시하며,
도 66B는 바이패스 레지스터를 구비한 스캔 체인 셀을 도시하며,
도 67은 코어, 스캔 체인 및 디버그 상태/제어 레지스터를 구비한 프로세서를 도시한 개략도이며,
도 68은 디버그 또는 트레이스 초기화를 제어하는 인자를 개략적으로 도시하는 개략도이며,
도 69A 및 69B는 디버그 입상을 요약하여 도시하며,
도 70은 디버그의 실행중 디버그의 입상을 도시하는 개략도이며,
도 71A 및 71B는 보안계에서 디버그가 활성화된 경우와 비활성화된 경우 각각의 모니터 디버그를 도시한다.
도 1은 본 발명의 바람직한 실시예에 따른 데이터 처리 장치를 도시하는 블 록도이다. 데이터 처리장치는 일련의 명령어를 처리하기 위한 산술논리연산장치(ALU) 16를 구비한 프로세서 코어 10를 포함한다. ALU 16에 필요한 데이터는 레지스터 뱅크 14에 저장된다. 코어 10는 프로세서 코어의 활동을 나타내는 진단(diagnostic) 데이터가 수집되는 것을 활성화 할 수 있는 다수의 모니터링 함수를 포함한다. 예를들어, 엠베디드 트레이스 모듈(ETM) 22은 어떤 활동이 추적(trace)될 것인지 결정하는 ETM 22내부의 제어 레지스터의 내용에 따라 프로세서 코어에 대한 실시간 추적을 제공한다. 트레이스 신호는 전형적으로 이들이 순서대로 분석될 수 있는 트레이스 버퍼의 출력이다. 다양한 주변장치(미도시)에 의하여 발생할 수 있는 다수의 인터럽트의 처리를 수행하기 위하여 벡터 인터럽트 콘트롤러 21가 제공된다.
나아가, 도 1에 도시된 바와 같이, 코어 10 내부에 제공되는 다른 모니터링 함수는 디버그 함수 일 수 있는데, 데이터 처리 장치 외부의 디버깅 어플리케이션이 하나 또는 그 이상의 스캔 체인 12와 커플링된 제이태그(Joing Test Access Gropup : JTAG) 콘트롤러 18를 통하여 상기 코어 10와 통신할 수 있다. 프로세서 코어 10의 여러 부분의 상태에 관한 정보는 스캔 체인 12와 제이태그 콘트롤러 18을 통해 외부 디버깅 어플리케이션으로 출력될 수 있다. 인서킷에뮬레이터(ICE) 20은 레지스터 24 없이 디버그 기능이 시작되거나 종료될 때를 인지하면서 상태를 저장할 때 사용되므로, 예를 들어 브레이크 포인트, 왓치 포인트 등을 저장하는데 사용될 것이다.
코어 10은 데이터 프로세싱 장치의 메모리 안의 위치에 접근하기 위한 코어 10에 의해 요청된 메모리 억세스 요청을 관리하기 위해 준비된 메모리 관리 로직 30을 통해 시스템 버스 40에 연결된다. 단단히 연결된 메모리(TCM) 36과 도 1에 설명된 캐쉬 38과 같은 메모리의 특정 부분은 시스템 버스 40에 직접적으로 연결된 메모리 유닛들에 의해 수록될 것이다. 직접 메모리 접근(DMA) 콘트롤러 32와 같은 추가적인 디바이스들 또한 이러한 메모리를 접근하기 위해 제공될 것이다. 대표적으로, 여러 개의 제어 레지스터 34는 칩의 다양한 소자들을 특정한 제어 파라미터를 정의하기 위해 제공될 것이며, 이러한 제어 레지스터들도 이 문서에 보조처리기 15(CP15) 레지스터로써 언급될 것이다.
코어 10을 포함하고 있는 칩은 외부 버스 인터페이스 42를 통해 외부 버스 70(예를 들어 ARM사에 의해 개발된 “어드밴스 마이크로콘트롤러 버스 구조”(AMBA)의 명세에 따라 작동되는 버스)에 연결될 것이고, 여러 디바이스들도 외부 버스 70에 연결 될 것이다. 이러한 디바이스들에는 디지털 신호 프로세서(DSP) 50이나 직접 메모리 접근(DMA) 컨트롤러 52와 같은 마스터 디바이스와 부트 롬 44, 화면 드라이버 46, 외부 메모리 56, 입출력(I/O) 인터페이스 60 혹은 키 스토리지 유닛 64와 같은 슬래이브 디바이스가 포함될 것이다. 도 1에 설명된 다양한 슬래이브 디바이스들도 또한 완전히 데이터 프로세싱 장치의 전체 메모리에 통합된 부분으로 간주될 수 있다. 예를 들어, 부트 롬 44 데이터는 외부 메모리 56의 경우와 같이 프로세싱 장치의 주소지정 가능 메모리의 일부를 형성할 것이다. 더 나아가, 화면 드라이버 46, 입출력 인터페이스 60 및 키 스토리지 유닛 64와 같은 디바이스들은, 데이터 프로세싱 장치의 전체 메모리의 일부분으로서 완전히 독자적인 주소 지정이 가능한 일부 레지스터 혹은 48, 62, 66 버퍼와 같은 내부 스토리지 소자들을 각각 포함할 것이다. 차후 상세히 논의될 것처럼, 메모리의 일부, 즉 외부 메모리 56의 일부는 메모리 접근의 제어와 관련된 정보들을 정의하는 페이지 테이블 58을 저장하는데 사용될 것이다.
당업자의 평가에 따르면, 전형적으로 외부 버스 70은 코어 10, DMA 32, DSP 50, DMA 52 등과 같은 다중 마스터 디바이스들에 의해 생성되는 다중 메모리 접근 요청들 간의 중재에 활용되는 아비터와, 외부 버스의 어느 슬래이브 디바이스가 특정 메모리 접근 요청을 처리할 것인지를 결정하는데 사용되는 디코더 로직 54를 제공할 것이다.
어떤 구현에서는 외부 버스가 코어 10을 보유한 칩에 외부적으로 제공되는 반면에, 다른 구현에서는 외부 버스가 코어 10과 함께 칩 안에 제공될 것이다. 이것은 외부 버스가 칩의 외부에 있을 때와 비교하여 외부 버스상의 보안 데이터의 보안 유지가 용이하다는 장점을 갖는다. 외부 버스가 칩 외부에 있을 때에는 보안 데이터의 보안성 증가를 위해 데이터 암호화 기술이 사용될 것이다.
도 2는 보안 도메인과 비보안 도메인을 가진 프로세싱 시스템 상에서 작동되는 여러 프로그램들에 대해 설명하고 있다. 이 시스템에는 최소한으로 모니터 모드에서 부분적으로 작동하는 모니터 프로그램 72를 제공한다. 이와 같은 구현의 예에서, 보안 상태 플래그는 단지 모니터 모드 안에서만 기록 접근이 가능하며 모니터 프로그램 72에 의해 기록될 것이다. 모니터 프로그램 72는 보안 도메인과 비보안 도메인 사이에서 각각의 방향의 모든 변화를 관리하는 책임을 진다. 코어를 향한 외부 관점으로부터 모니터 모드는 항상 안전하며, 모니터 프로그램은 보안 메모리 안에 존재한다.
비보안 도메인 안에 비보안 운영 체제 74와, 비보안 운영 체제 74와 함께 운영되는 다수의 비보안 어플리케이션 프로그램 76, 78이 제공된다. 보안 도메인에는 보안 커널 프로그램 80이 제공된다. 보안 커널 프로그램 80은 보안 운영 체제를 형성하는 것으로 이해될 수 있다. 전형적으로 보안 커널 프로그램 80과 같은 프로그램은 보안 도메인에서 반드시 제공되어야 하는 프로세싱 액티비티에 필수적인 기능들만을 제공하기 위해 설계된다. 따라서 보안 커널 80은 가능한 작고 간단해야 하는데, 왜냐하면 이렇게 함으로써 더욱 안전한 처리가 가능하기 때문이다. 보안 커널 80과의 결합의 형태로 수행되는 다수의 보안 어플리케이션 82, 84가 설명되어 있다.
도 3은 다른 보안 도메인과 연관된 프로세싱 모드의 매트릭스에 관해 설명하고 있다. 이러한 상세 예제에서 프로세싱 모드는 보안 도메인과 관련하여 대칭적이며, 따라서 모드1과 모드2는 보안형식과 비보안 형식의 두 가지로 존재한다.
모니터 모드는 시스템에서 보안 접근의 최고 수준을 보유하며 이러한 예에서 구현은 비보안 도메인과 보안 도메인 사이에서 각자 방향으로의 시스템 변환이 가능한 유일한 모드이다. 따라서 모든 도메인 변환은 모니터 모드로의 전환과 모니터 모드 하에서의 모니터 프로그램 72의 실행에 의해서 발생한다.
도 4는 비보안 도메인 프로세싱 모드 1, 2, 3, 4와 보안 도메인 프로세싱 모드 a, b, c의 또다른 설정에 관해 도식적으로 설명한다. 도 3의 대칭 배열과는 반 대로, 도 4는 어떤 프로세싱 모드의 경우 한개 혹은 그 이상의 보안 도메인에서 나타나지 않음을 보여준다. 모니터 모드 86이 비보안 도메인과 보안 도메인의 양쪽에 걸쳐 있는 것으로 재차 설명되고 있다. 모니터 모드 86는, 보안 상태 플래그가 이 모드에서 변경되며 모니터 모드 하의 모니터 프로그램 72가 스스로가 보안 상태 플래그를 설정할 수 있는 능력을 가지고 있으므로, 보안 프로세싱 모드로 간주될 수 있다. 이는 시스템 안에서 효과적으로 최후 수준의 전체적인 보안을 제공한다.
도 5는 보안 도메인에 따른 프로세싱 모드의 또 다른 배치를 설명하고 있다. 이배치에서는 보안과 비보안 도메인들이 기타 나머지 도메인과 함께 확인되고 있다. 기타 도메인이란 설명되어 있는 보안과 비보안 도메인들과 서로 영향을 미치지 않고 연관성이 없도록 다른 시스템과 격리되어있음을 말한다.
프로세싱 시스템이 그렇듯이 마이크로프로세서는 보통 레지스터 뱅크 88과 함께 공급되며 피연산자 값이 저장된다. 도 6은 특정한 레지스터 번호와 특정한 프로세싱 모드를 위한 전담 레지스터들의 실례의 레지스터 뱅크의 프로그래머의 모델 뷰를 도시하고 있다. 또한 도 6의 예는 전용으로 저장된 프로그램 상태 레지스터, 전용 스택 포인터 레지스터 및 각각의 프로그램 모드 전용의 링크 레지스터 R14와 함께 제공되는 유명한 ARM 레지스터 뱅크 (잉글랜드 캠브리지의 ARM 사의 ARM7 프로세서가 제공되듯이)의 연결선이나 이번에는 모니터 모드의 공급과 연결되어있다. 도 6에서 도시된 바와 같이 신속한 인터럽트 모드는 실행되었을 때 다른 모드로부터 레지스터 문맥을 저장하고 재 저장 할 필요가 없게끔 여분의 지정된 레지스터를 가지고 있다. 모니터 모드는 지정된 다른 레지스터들과 비슷한 방법으로 신속한 인 터럽트 모드가 보안 도메인 전환의 빠른 프로세싱과 이 전환들의 대기시간을 줄일 수 있도록 한다.
도 7에서는 레지스터 뱅크 88이 각각 보안과 비보안 도메인에 사용되는 완벽하고 분리된 두 가지 형태의 또 다른 구체화를 도시하고 있다. 이것은 보안 도메인 안에서 작동중인 레지스터에 저장되어 있는 보안 데이터가 안전하지 않은 도메인으로 변경되었을 때 억세스를 방지할 수 있게 하는 하나의 방법이다. 그러나 이러한 구성은 보안 도메인과 비보안 도메인 모두에 억세스할 수 있는 레지스터 안에 빠르고 효율적인 메커니즘을 이용하여 비보안 도메인에서 보안 도메인으로 데이터를 옮기는 가능성을 지연시킨다.
보안 레지스터 뱅크 소유가 갖는 한가지 중요한 장점은 하나의 계(world)에서 다른 계로 전환 하기 전에 레지스터의 문맥(context)의 일부분을 비우는 동작이 필요한 상황을 모면할 수 있다는 것이다. 지연(latency)이 중대한 문제가 아닐 경우에는 도 6의 예와 같이 보안 도메인 계를 위한 복제 레지스터를 미보유한 간단한 하드웨어 시스템이 사용될 것이다. 모니터 모드는 하나의 도메인에서 다른 도메인으로의 전환에 관해 책임이 있다. 레지스터의 일부 소거뿐만 아니라 문맥의 복원, 이전 문맥의 저장 등은 적어도 일부분은 모니터 모드에서 실행되는 모니터 프로그램에 의해 작동된다. 그러므로 이 시스템은 마치 가상 모형처럼 작동된다. 이와 같은 실시예는 이 글의 뒷부분에 언급되어 있다. 예를 들자면 여기에 설명된 보안의 특징들이 생성되어 질 때 ARM7의 프로그램 모델이 참고될 수 있다.
프로세서 모드
보안계의 모드를 복사하기 전에 같은 모드가 보안과 비보안 도메인을 함께 지원한다.(도 8 참조) 모니터 모드가 그것이 보안이든 비보안이든 현재의 코어 상태를 인식한다. (예: S에서 읽은 저장 비트는 코프로세서 설정 레지스터다)
도 8에서는 SMI(소프트웨어 모니터 인터럽트 명령어)가 발생할 때마다 코어가 하나의 계에서 다른 계로 제대로 이동하기 위해 모니터 모드로 들어간다.
SMI가 사용자 모드로부터 허가된 도 9를 참고하면:
1. 스케쥴러가 쓰레드 1을 실행시킨다.
2. 쓰레드 1이 보안 기능을 실행한다 => SMI 보안이 작동되며 코어가 모니터 모드로 들어간다. 하드웨어 컨트롤 안에서 현재의 PC와 CPSR (현재 프로세서 상태 레지스터)가 R14_mon 안에 저장되며 SPSR_mon (모니터 모드를 위해 저장된 프로세서 상태 레지스터)와 IRQ/FIQ 인터럽트가 사용 금지된다.
3. 모니터 프로그램이 다음 사항들을 실행시킨다:
- S 비트가 정해진다 (보안 상태 플래그)
- 보안 어플리케이션이 실행될 때 비보안 문맥이 사라지지 않도록 R14_mon 과 SPSR_mon을 저장한다.
- 실행할 새로운 쓰레드가 있는지 확인 한다: 보안 쓰레드 1. 메카니즘 (몇몇 예의 통합체에서 쓰레드 아이디 테이블을 통해)은 쓰레드 1이 보안계에서 수행중임을 보여준다.
- IRQ/FIQ의 인터럽트가 재가동 된다. 보안 어플리케이션이 보안 사용자 모 드로 실행될 수 있다.
4. 보안 쓰레드 1의 실행이 끝난후에 모니터 프로그램 모드 의 "보안으로부터의 복귀" 기능으로 분리된다. (코어가 모니터 모드에 들어갈 때 IRQ/FIQ 방해가 불가능해진다.)
5. "보안으로부터의 복귀"의 기능은 다음과 같은 업무를 수행한다:
- 보안 쓰레드 1의 끝남을 알린다. (예: 쓰레드 아이디 테이블에서 tread 1을 삭제한다.)
- 스택 비보안 문맥을 복구시키며 필요한 레지스터들을 분출함으로 비보안 도메인으로 돌아왔을 때 보안 데이터가 읽히지 않게 한다.
- SUBS 명령어과 함께 비보안 도메인으로 돌아오며 (이것으로 알맞은 포인트로 프로그램 카운터를 재저장하고 상태 플래그가 업데이트된다) PC (R14_mon 으로부터 저장된)와 CPSR (SPSR_mon으로부터 저장된)이 재저장된다. 그러므로 비보안 도메인의 복귀 포인트가 그전에 실행되었던 쓰레드 1 안의 SMI의 뒤에오는 명령어 이다.
6. 쓰레드 1이 끝까지 실행되며 스케쥴러로 넘어간다.
위에 설명된 기능들 중에서 몇 개는 특징적인 구현에 따라 모니터 프로그램과 보안 작동 시스템으로 나뉘어 진다.
그 밖의 다른 구현들은 사용자 모드에서 SMI들이 허가되지 않게 하도록 한다.
보안계 진입
리셋
하드웨어 리셋이 일어날 때, MMU가 사용불가 상태가 되고 ARM 코어 (프로세서)가 S 비트 세트와 함께 보안 감독자 모드로 분리된다. 보안 부트가 실행되었을 때 모니터 모드로 가야하는 SMI가 실행되며, 원한다면 모니터는 비보안계 (비보안 서비스 모드)의 OS로 바뀔 수 있다. OS가 사용되길 원한다면 간단히 보안 감독자 모드 안에서 부팅하며 보안 상태를 무시할 수 있다.
SMI 명령어
이 명령어(소프트웨어 인터럽트 명령어로 바꾸는 모드)는 비보안 도메인(전에서도 말했듯이 SMI를 특권 모드로 제한하는 것이 바람직하다)의 어떤 비보안 모드로부터 가져올 수 있지만 연관된 벡터가 지정한 타겟 입장 포인트는 항상 조정되어 있어야 하며 모니터 모드 안에 있어야한다. 실행되어야하는 알맞은 보안기능은 SMI 핸들러의 분리에 달려있다. (예: 명령어와 전달된 피연산자가 제어한다)
매개변수를 비보안계에서 보안계로 전달하는 일은 도 6 타입의 레지스터 뱅크 안에 속해있는 레지스터 뱅크의 공용 레지스터들을 사용하여 이루어진다.
비보안계에서 SMI가 일어날 경우 ARM 코어는 하드웨어 안에서 다음의 액션들을 실행한다 :
- 모니터 모드로 들어가며 SMI 벡터로 분리된다. (모니터 모드에 있기 때문 에 보안 메모리 억세스가 허락된다)
- PC가 R14_mode 로 CPSR이 SPSR_mon로 저장된다.
- 모니터 모드를 이용함으로 S 비트가 세팅된다.
- 모니터 모드 안의 보안 예외 핸들러가 실행되기 시작한다.(멀티-쓰레드 케이스의 문맥이 저장 또는 재저장 된다).
- 알맞은 기능을 실행하기 위해 보안사용자 모드 (또는 서비스 모드와 같은 또 다른 모드)로 분리된다.
- 코어가 모니터 모드에 있음과 동시에 IRQ와 FIQ가 사용불가 된다. (지연시간이 길어진다)
보안계 퇴거
보안계를 빠져나가는 경우는 두 가지가 있다:
- 보안 기능이 끝나며 기능을 실행시켰던 그전의 비보안 모드로 돌아간다.
- 보안 기능은 비보안 예외의 인터럽트를 받는다 (예: IRQ/FIQ/SMI).
보안 기능의 정상 종료
보안 기능이 정상적으로 끝나면 우리는 SMI가 끝나자마자 비보안계 안의 어플리케이션을 재 시작한다. 보안 사용자 모드에서 "보안 상태부터의 복귀"의 루틴에 맞는 매개변수들과 함께 모니터 모드로 돌아올 수 있게 SMI 명령어가 실행된다. 이 단계에서 레지스터들은 비보안과 보안계안에서 데이터 누수를 방지하기 위해 일부분을 비우는 작업을 수행하며, 그 다음에 비보안 문맥, 즉 일반적인 목적의 레지스터들은 재 저장되고 비보안 뱅크화 레지스터들은 비보안계에서 가졌던 값으로 업데이트 된다. R-14_mon 과 SPSR_mon은 'MOVSPC,R14' 명령어를 실행시킴으로 SMI 다음의 비보안 어플리케이션으로 돌아올 수 있도록 그후 알맞은 값을 갖게 된다.
비보안 예외로 생긴 보안 기능의 종료
이러한 경우에는 보안 기능이 끝나지 않았으며 보안 문맥은 처리되어야할 인터럽트가 무엇이던 간에 비보안 예외 핸들러로 가기 전에 저장되어야 한다.
보안 인터럽트
보안 인터럽트는 몇 가지 경우에 발생한다.
가능한 두 가지 해결책은 다음의 경우에 따라 결정된다.
- 인터럽트의 종류 (보안 또는 비보안)
- IRQ가 일어날 때 코어가 있는 모드 (보안 또는 비보안계 )
해결책 하나
이 해결책에서는 보안과 비보안 인터럽트를 지원하는 상반되는 두개의 핀이 필요하다.
비보안계에 있는 경우는 다음과 같다:
- IRQ가 발생하며 코어는 인터럽트를 처리하기위해 ARM 코어 안의 ARM7과 같 이 IRQ 모드로 간다.
- SIRQ가 발생하며 코어는 비보안 문맥을 저장하기위해 모니터 모드로 간다음 보안 인터럽트를 처리하기 위해 보안 IRQ 핸들러로 간다.
보안계에 있는 경우는 다음과 같다:
- SIRQ가 발생하며 코어는 보안 IRQ 핸들러로 간다. 코어는 보안계를 벗어나지 않는다.
- IRQ가 발생하며 코어는 보안 문맥이 저장되어 있는 모니터 모드로 간 다음 비보안 인터럽트들을 처리하기위해 비보안 IRQ 핸들러로 간다.
다시 말하자면, 현재의 계에 속한 인터럽트가 아니라면 코어는 곧바로 모니터 모드로 들어가거나 현재의 계를 벗어나지 않는다. (도10 참조)
보안계 안에서 생기는 IRQ
도 11A 참조:
1. 스케쥴러가 쓰레드 1을 실행시킨다.
2. 쓰레드 1이 안전 기능을 실행 한다. => SMI 보안 콜, 코어가 모니터 모드로 들어간다. 현재의 PC 와 CPSR 이 R14_mon 과 SPSR_mon 에 저장되며 IRQ/FIQ가 사용이 불가능하게 된다.
3. 모니터 핸들러(프로그램)가 다음의 일을 실행 한다:
- S 비트가 결정된다.
- 보안 어플리케이션이 실행되는 동안 예상치 못한 문제로 인하여 비보안 문맥이 사라지는 경우를 방지하기위해 R14_mon and SPSR-mon이 같은 곳에 저장된다 (다른 레지스터들도 들어가는 경우가 있다).
- 실행되어야 할 새로운 쓰레드가 있는지 확인한다: 보안 쓰레드 1. 메카니즘 (쓰레드 아이디 테이블을 통한)은 쓰레드 1이 보안계에서 활성중 이라는 뜻이다.
- 보안 어플리케이션이 그 후에 보안 사용자 모드에서 실행될 수 있다. IRQ/FIQ 가 재활성화된다.
4. IRQ는 쓰레드 1이 실행중 일때 발생한다. 코어는 곧바로 모니터 모드 (특수 벡터)로 들어가고 R14_mon안의 현재의 PC와 SPSR-mon 안의 CPSR을 모니터 모드 안에 저장 시킨다 (IRQ/FIQ가 사용불가 된다).
5. 보안 문맥은 반드시 저장되어야 하며 그전의 비보안 문맥은 재저장 된다. 모니터 핸들러는 R14_irq/SPSR_irq를 알맞은 값으로 업데이트 하기위해 IRQ 모드로 바뀐다음 컨트롤을 비보안 IRQ 핸들러로 넘긴다.
6. IRQ 핸들러가 IRQ 서비스를 한다음 비보안계 안에있는 쓰레드 1을 컨트롤한다. SPSR_irq 와 R14_irq를 CPSR과 PC에 재저장함으로 쓰레드 1은 인터럽트 된 적있는 SMI 명령어를 가르키게 된다.
7. SMI 명령어가 재실행된다. (명령어 2와 같음).
8. 모니터 핸들러가 인터럽트된 적 있는 쓰레드를 인식하며 쓰레드 1 문맥을 재저장 한다. 사용자 모드 안에 있는 보안 쓰레드 1으로 분리되며 인터럽트된 적 있는 명령어를 가리킨다.
9. 보안 쓰레드 1이 끝까지 실행되며 모니터 모드 안에 있는 '보안으로의 복귀' 기능으로 분리 된다. (전문 SMI).
10. '보안으로의 복귀' 기능이 다음과 같은 일을 한다:
- 쓰레드1이 끝남을 알린다. (예: 쓰레드 ID 테이블의 경우 쓰레드 1을 테이블에서 삭제한다).
- 비보안계로 돌아왔을 때 보안 데이터가 읽혀지게 비보안 문맥으로부터 재저장되며 필요한 레지스터들을 분출시킨다.
- PC (R14_mon으로부터 재 저장된) 와 CPSR (SPSR_mon으로부터)을 재저장하며 SUBS 명령어와 함께 비보안계로 다시 분리된다. 그러므로 비보안계의 회기 포인트는 쓰레드 1에 있는 실행되었던 SMI 다음의 명령어가 되어야한다.
11. 쓰레드1이 끝까지 실행되며 그 후 스케쥴러에서 제어한다.
비보안계에서 실행되는 SIRQ
도 11B를 참조:
1. 스케쥴러가 쓰레드1을 실행시킨다
2. 보안 쓰레드1이 실행되는 동안 SIRQ가 발생한다. 코어가 곧바로 모니터 모드 (구체적인 벡터)로 들어가며 R14_mon에 있는 현재의 PC 와 SPSR_mon에 있는 CPSR을 모니터 모드안에 저장하며 IRQ/FIQ가 비활성화 된다.
3. 비보안 문맥이 저장되어야 하며 코어가 보안 IRQ 핸들러로 간다.
4. IRQ 핸들러가 SIRQ를 서비스 한 다음, 알맞은 매개변수의 SMI을 이용하여 모니터 모드 핸들러에게 컨트롤을 준다.
5. 모니터 핸들러가 비보안 문맥을 재저장하여 SUBS 명령어는 코어가 비보안계 로 회기할 수 있게 하고 인터럽트된 쓰레드1을 재개 한다.
6. 쓰레드1이 끝까지 실행된 다음 스케쥴러에게 넘어 간다
도 11A의 메카니즘은 보안계로 들어가는 결정적인 방법이란 장점을 가지고 있다. 그러나, 거기엔 인터럽트 우선권에 관한 몇 가지 문제점이 있다: 예)SIRQ가 보안 인터럽트 핸들러에서 실행되고 있을 때 높은 우선순위를 가진 IRQ가 발생할 수 있다. 비보안 IRQ가 끝나면 코어가 보안 인터럽트를 재개할 수 있도록 SIRQ 가 재 생성되어야 한다.
해결책 둘
이 메카니즘에서는 (도 12 참조) 두 가지 전혀 다른 핀 또는 한 개가 보안과 비보안 인터럽트를 지원한다. 두 개의 핀을 가지고 있음으로써 인터럽트 지연을 줄일 수 있다.
비보안계에 있는 경우는 다음과 같다:
-IRQ가 발생하며 코어는 ARM7 시스템과 같은 인터럽트를 처리하기위해 IRQ로 간다.
-SIRQ가 발생하며 코어는 SMI 명령어가 비보안 문맥을 저장하기 위함과 보안 인터럽트를 처리하기 위해 모니터 모드를 코어 브랜치로 만들며 IRQ 핸들러로 간다.
보안계에 있는 경우는 다음과 같다:
-SIRQ가 발생하며 코어가 보안 IRQ 핸들러로 간다. 코어는 보안계를 떠나지 않는다.
-IRQ가 발생하며 코어는 SMI 명령어가 코어 브랜치를 모니터 모드(보안 문맥은 저장된다)로 만드는 보안 IRQ 핸들러로 가고 이 비보안 인터럽트를 처리하도록 비보안 IRQ 핸들러로 간다.
보안계 안에서 발생하는 IRQ
도 13A 참조:
1. 스케쥴러가 쓰레드1을 실행한다.
2. 쓰레드 1 보안 기능을 실행시켜야한다 => SMI 보안 은 R14_mon과 SPRP_mon에 저장되며 IRQ/FIQ가 사용 불가능하게 된다.
3. 모니터 핸들러가 다음의 일들을 한다:
-S 비트를 초기화 한다.
-보안 어플리케이션이 실행되는 동안 비보안 문맥이 지워지지 않게 함께 있는 R14_mon 과 SPSR_mon이 (결국엔 모든 레지스터 들이) 저장된다.
-실행될 새로운 쓰레드가 있는지 확인한다: 보안 쓰레드 1. 메카니즘은 (쓰레드 ID 테이블을 통한) 쓰레드1이 보안계에서 활동 중인지를 보여준다.
-보안 어플리케이션 이 보안 사용자 모드에서 시작할 수 있다. IRQ/FIQ가 재활성화 된다.
4. 보안 쓰레드1이 실행될 때 IRQ가 발생한다. 코어가 곧바로 보안 IRQ 모드로 들어간다.
5. 코어가 R14_irq 안에 있는 현재의 PC와 SPSR_irq에 있는 CPSR을 저장한다. IRQ 핸들러는 이것을 비보안 인터럽트로 인식하고 SMI 가 알맞은 매개변수s와 함께 모니터 모드로 들어가게 한다.
6. 보안 문맥이 반드시 저장되어야 하고 그전의 비보안 문맥이 재저장 된다. 모니터 핸들러는 CPSR을 읽음으로 SMI가 어디서 왔는지 알수 있다. 그리고 그것은 IRQ mode로 가서 R14_irq/SPSR_irq를 읽음으로 알맞은 보안 문맥을 저장한다. 또한 그것은 IRQ 루틴이 끝날 때 재저장 되어야 하는 비보안 문맥안의 같은 레지스터들을 저장한다.
7. IRQ 핸들러는 IRQ를 서비스 하고 비보안계 안에 있는 쓰레드1에게 컨트롤을 준다. CPSR과 PC안에 있는 SPSR_irq와 R14_irq를 재저장함으로 코어가 인터럽트 받은 적 있는 SMI 명령어를 가르킨다.
8. SMI 명령어가 재실행된다 (2와 같은 명령어).
9. 모니터 핸들러는 이 쓰레드를 인터럽트 받은 적이 있는지를 보고 쓰레드1 문맥을 재저장한다. 그런 다음 사용자 모드안의 보안 쓰레드 1로 분리되며 인터럽트된 명령어를 가리킨다.
10. 보안 쓰레드1 이 끝까지 실행되며 모니터 모드안에 있는 "보안으로 복 귀" 기능으로 분리된다.
11. "보안으로 복귀" 기능은 다음의 일들을 한다:
- 보안 쓰레드 1이 끝남을 알린다. (예: 쓰레드 ID 테이블과 같은 경우, 쓰레드 1을 테이블로부터 분리한다)
- 비보안 문맥으로부터 재저장하고 비보안계로 돌아왔을 때 보안 정보를 읽어지지 않게 필요한 레지스터들이 분출되게 한다.
- PC (R14_mon에서 재저장된)와 CPSR (SPSR_mon 으로부터)가 재저장되며 SUBS 명령어와 함께 비보안계로 다시 분출되었다. 비보안 계안의 리턴 포인트는 쓰레드1 안에서 실행되었던 SMI 다음의 명령어가 되어야 한다.
12. 쓰레드1 이 끝까지 실행되며 스케쥴러에게 넘어간다.
비보안계에서 발생하는 SIRQ
도 13B 참조:
1. 스케쥴러가 쓰레드1을 실행한다
2. 쓰레드1이 실행하는 동안 SIRQ가 발생한다
3. 코어가 곧바로 irq mode 로 들어가고 R14_irq 안에 있는 현재의 PC와 SPSR_irq에 있는 CPSR이 저장된다. 그다음 IRQ 는 사용 불가능하게 된다. IRQ 핸들러는 이것이 SIRQ 인지를 확인하고 알맞은 매개변수들과 함께 SMI 명령어를 실행한다.
4. 모니터 모드에 있을때 비보안 문맥은 저장되어야 하며 코어는 보안 IRQ 핸들러로 간다.
5. 보안 IRQ 핸들러는 SIRQ의 정기적 서비스를 서비스한 다음 알맞은 매개변수들을 가지고 있는 SMI를 모니터하는 능력을 다시 부여받는다.
6. 모니터 핸들러는 비보안 문맥을 재저장함으로 SUBS 명령어는 코어가 비보안계로 다시 돌아오게 하고 인터럽트 IRQ 핸들러가 재작동하게 한다.
7. IRQ 핸들러가 SUBS를 실행함으로 비보안 쓰레드로 돌아올 수 있다.
8. 쓰레드 1이 끝까지 실행되며 스케쥴러에게 넘어간다.
도12에 나와 있는 메커니즘에는 집합적인 인터럽트가 일어나는 경우에 SIRQ를 재생성할 필요가 없지만 보안 인터럽트들이 실행될 거란 보장은 없다.
예외 벡터
최소한 두개의 물리적 벡터 테이블들이 저장된다. (실질적으로 싱글 벡터 테이블로 보일수 있다). 하나는 비보안 메모리 안에 있는 비보안계와 또 하나는 보안 메모리 안에 있는 보안계 (비보안계에서 억세스할 수 없는) 이다. 보안과 비보안계들에 사용된 물리적 메모리 매핑은 똑같은 가상 메모리 주소들이 다른 벡터 테이블들을 물리적 메모리 안에 저장되는 일을 효율적으로 허용한다. 모니터 모드는 항상 플랫 메모리 매핑을 사용하여 물리적 테이블 안에 있는 세 번째 벡터 테이블을 지원한다.
도12 메커니즘의 인터럽트가 일어날 때는 도 14에 보이는 다음의 벡터들이 각각의 테이블 마다 있다. 이 벡터 셋 은 보안과 비보안 메모리 안에서 복사된다.
NB. 리셋 엔트리는 보안 벡터 테이블 안에만 있다. 비보안계에서 리셋이 실행되면 코어 하드웨어는 리셋 벡터가 보안 메모리에 억세스할 수 있도록 관리자 모드의 진입과 S 비트의 초기화를 강요한다.
도 15는 세 개의 예외 벡터 테이블을 설명 한다: 보안 모드, 비보안 모드, 모니터 모드. 이러한 예외 벡터 테이블들은 예외 벡터들과 함께 프로그램 됨으로써 요구사항들과 보안과 비보안 작동 시스템들의 성격과 매치시킨다. 각각의 예외 벡터 테이블들은 메모리 안에서의 기반 어드레스가 가리키는 테이블을 저장하며 CP15안에서의 관련된 벡터 테이블 기반 어드레스 레지스터를 가지고 있다. 예외적인 일이 일어난 경우 하드웨어는 벡터 테이블 기반 어드레스 레지스터를 관련된 현재의 시스템으로 참고함으로써 사용된 벡터 테이블 기반 어드레스를 결정한다. 또는, 다른 모드에 있는 물리적 메모리 매핑에 대한 가상주소가 사용되어 다른 물리적 메모리 어드레스들에 있는 세 개의 지정된 벡터 테이블이 분리된다.
도 16에서 설명되었듯이 예외 트랩 마스크 레지스터는 프로세서 코어와 관련된 시스템(설정 제어) 코프로세서 (CP15)로 지원되고 있다. 이 예외 트랩 마스크 레지스터는 각각의 예외 타입으로 관련된 플래그들을 제공한다. 이와 같은 플래그들은 하드웨어가 현재 도메인에 있는 예외 에 맞는 벡터에게 다이렉트 프로세싱을 작동해야 하는지 아님 모니터 모드 (보안 모드 타입중의 한 가지)로 바꾼 다음 모니터 모드 벡터 테이블에 있는 벡터를 따라야 하는지를 보여주고 있다. 예외 트랩 마스크 레지스터는 모니터 모드에서만 쓰기가 가능하다. 이는 읽기 권한이 또한 금지되어 있으며, 예외 트랩 마스크는 도 16에 포함되어 있지 않은 플래그 상의 리셋 백터가 시스템이 항상 보안 관리자 모드 상에서 리셋 백터로 건너 뛰도록 설정되어 있는 경우에 해당하는데, 이는 보안 벡터 테이블이 리셋 백터 테이블을 내부 호환성 측면, 부트의 보안을 확보하기 위함이다. 이는 도 15에서 보여지며, 완벽함을 위해서, 보안 벡터는 보여지는 대로 벡터 테이블에서 다른 보안 관리 모드가 보안 벡터 테이블에 비해 앞서게 된다.
도 16은 또한 예외 트랩 마스크 레지스터가 프로그래밍이 가능한 상태에서의 예외의 종류를 나타내고 있다. 예를 들어 보안 부트 상의 모니터 프로그램 등이다. 또 다르게 일부 혹은 모든 플래그는 특정한 설치 조건에 들게 되는데, 이는 물리적 입력 시그널, 예를 들어서 보안 인터럽트 플래그 SIRQ와 같은 것이 모니터 모드 상에서 설치된 경우에 강제 입력된 값들과 보안 인터럽트가 전송 되었을 때의 인터럽트 요청 벡터가 보안 모드일 경우이다. 도 16은 예외 트랩 레지스터가 비보안 도메인의 예들과, 비슷한 종류의 프로그램 가능 비트 등이 보안 도메인 예외 사항에 의해 제공될 것이라는 것을 표시 하고 있다.
위에서 이해된 대로, 한 레벨에서 하드웨어는 현재 도메인 예외 사항에서 강제로 인터럽트를 발생하거나, 혹은 모니터 모드의 예외 사항을 관리하는 관리자의 조건에 따라 제어 레지스터 플래그를 관리하며, 단지 처음 레벨의 플래그만 적용된다. 예를 들어, 보안 모드상에서 예외가 발생하는 것은 가능한 일이고, 보안 모드의 예외 벡터 상에서는 보안 모드 예외 관리자를 따르게 되나, 이 보안 모드 예외 관리자는 보안 관리자 보다는 특성상 비보안 예외 관리자 쪽에서 관리하는 것이 옳다고 판단하여 SMI 설정을 따라서 비보안 모드로 전환하여 비보안 예외 관리자에게 인계하게 된다. 이 전환은 비보안 관리자 모드가 초기화 할 수 있도록 하는데 역할을 하며, 보안 예외 관리자가 모니터 모드 예외 관리자로부터 직접 프로세스를 할 수 있도록 하는데 도움을 준다.
도 17은 흐름도 상에서 시스템의 운영 상태를 다른 가능한 종류의 전환 요청이 연계된 예외에 의해 실행되는 것을 보여 준다. 단계 98에서 보면, 하드웨어는 모니터 모드로 전환 하려고 하는 어떤 시도에 대해서도 현재 프로그램 상태 레지스터로 등록하게 된다. 그러한 시도가 나타나게 되면, 새로운 종류의 예외가 발생하게 되고, CPSR 위반 예외 사항이 전달된다. 이 CPSR 위배 예외는 단계 100에서 적당한 예외 벡터를 모니터 모드 상에서 실행하여, 모니터 프로그램이 단계 102를 실행 하여 CPSR위배 예외 사항을 관리 할 수 있도록 해 준다.
보안 도메인과 비보안 도메인 사이의 관계되는 부분은 도 17에 나타나 있으며, 기존에 언급된 SMI 설정을 사용한다. 부분 적으로, 그러한 기술 구현은 존재 하는 코드에 대하여 호환성 측면을 보장하고, 프로세스 상태 레지스터를 제공할 수 있도록 한다. 이는 보안 도메인과 비보안 도메인 상에서도 승인 되지 않은 시도를 만들기 위해 쓰여진다.
위의 언급한 대로 일반적으로 인터럽트들은 프로세스가 모니터 모드에서 동작하는 경우에 비활성화 된다. 이는 시스템의 보안을 위한 것이다. 인터럽트가 인터럽트 포인터 상에서의 기능 구현에서 레지스터에 예외를 등록해서 보안 데이터가 누수 되는 패스로 진행 할 수 있도록 모니터 모드 상에서의 보안을 유지 하는 기능을 한다. 그러나 한 가지 순서가 인터럽트를 모니터 모드상의 대기 시간이 길어 질 때 비활성화 하게 된다.
프로세서 수행 상태가 만약 모니터 모드 상에서 인터럽트를 가능하게 한다면, 그 기능은 저장되지 않는다. 그러므로 모니터 모드 상에서의 인터럽트 문제는, 안전하게 재시작된 상태에서의 인터럽트가 가능하도록 모니터 모드에서 수행하는 수밖에 없다. 이런 경우에 인터럽트는 모니터 모드의 단지 기능만 안전하게 재시작 하게 된다. 이런 경우에, 모니터 모드에서의 인터럽트는, 특정 기능이 재시작되어 계속되는 결과를 도출해 낼 때 보여진다. 만약 기능이 프로세서의 어떤 상태, 예를 들어서 재시작되어 다른 결과를 나타내는 것은 좋은 아이디어가 아니다. 이러한 이유로, 단지 그와 같은 기능만이 안전하게 모니터 모드에서 인터럽트가 있을 수 있도록 재시작 할 수 있게 하며, 다른 기능들의 인터럽트는 비활성화되는 것이다.
도 18은 본 발명의 모니터 모드에서의 구현 방법에 대한 설명을 하고 있다. SMI는 작업 A가 비보안 모드에서 프로세스를 모니터 모드로 전환 하게 한다. SMI설정에서는 모니터 모드가 비보안 SMI 벡터에 배정 되어 있다.
PC의 현 상태는 저장 되어 있는 것이고 s비트는 인터럽트가 비활성화 하도록 설정되어 있다. 일반적으로 LR_mon 과 SPSR_mon 은 CP와 CPSR에 비보안 모드로 저장된다.
기능 C에 나와 있는 기능들은 모니터 모드에서 초기화 된다. 첫번 째의 것은 기능 C가 인터럽트를 활성화하고, 기능 C가 이후에 수행된다. 만약 인터럽트 그 기능 C의 프로세스상에서 수행되는 경우에는, 인터럽트는 비활성화되지 않은 상태에서, 응답되어 진행된다. 그러나, 모니터 모드 표시자에서는 모니터 모드로의 재실행이 아니라, 재시작을 표시하게 된다. 그러므로, 인터럽트는 인터럽트 예외 벡터가 LR_mon 과 SPSR_mon등으로 현재 상태가 저장되지는 않는다.
도 18에서 보여지듯이, 인터럽트 작업, 작업 B등은 프로세스가 SMI설정의 어드레스를 읽어서 이를 인터럽트 레지스터에 복사하여 SMI가 다시 기능 C를 구현할 수 있도록 한다.
위의 프로세스는 단지 기능 C가 재 시작이 가능하다는 것을 보여 주는 것뿐이며, 이것은 재 시작된 프로세스 C가 연속적인 프로세스 과정을 지나게 된다는 것을 의미한다. 이것은 프로세스 상에서 기능 C가 작업에 관한 프로세서의 모드를 변경하는 것은 아니며, 차후의 스택 프로세싱 등에 영향을 미친 다는 것을 의미한다. 계속 적으로 수행되는 A기능 같은 경우에는 멱등원이라는 이름을 붙이기도 한다. 멱등원의 기능을 제대로 수행하지 못하는 프로세스 문제를 해결하기 위해서는, 멱등원의 코드 값을 가지는 첫 번째 부분을 비활성화 시키는 것이 있다. 예를 들어서, 코드 C가 스택에 기록을 하는 과정에서 처음에 스택 포인터를 업데이트 하지 않는 경우가 있고, 기능 C를 위한 코드는 프로세서가 인터럽트를 비활성화 시켜서 스택 포인터를 현재의 위치로 업데이트 할 수 있도록 한다. 이것은 도 18에 나와 있으며, 기능 C의 프로세싱이 특정한 방법을 통해서 인터럽트가 비활성화 되었음을 보여준다.
도 19는 약간 다른 예가 될 수 있다. 이것은 작업 C가 프로세스 하는데 있어서 약간 다른 방법으로, 관리 파라미터가 설정된 상태에서의 예이다. 이것은 작업 C의 포인터가 멱등원 상태가 아니고, 안전하게 재시작된 상태에서 똑같은 프로세스 상태를 만들어내는 것을 마지막에 수행하여 인터럽트 되지 않도록 한다. 몇몇 실시 예에서 보듯이 스택 포인터가 업데이트 되는 등의 프로세스 변경에 일어난 경우에는, 프로세스가 멱 등원 상태에서 이후에 복구될 수 있도록 하게 하는 기능을 가지고 있다.
인터럽트의 관리 파라미터가 지정 되어 있는 경우에는, 두 개의 가능한 방법이 진행 된다. 이것은 루틴을 수정하여 실행할 수 있도록 하거나 혹은 SMI가 실행된 상태에서 이전의 작업 C의 루틴을 수정하여 실행 할 수 있도록 하는 것이다. 보여질 수 있는 대로, 두 개의 각각의 수행 방법은 루틴을 수정하여서, 모니터 모드 상에 있게 하고, 실행은 비보안 도메인 상에서 하게 된다. 이것은 보안 도메인이나 모니터 모드에는 영향을 미치지는 않는다.
도 19에서 볼 수 있듯이 코드 C의 첫 번째 부분은 멱등원 상태이고, 인터럽트 상에서 재 시작 된다. 두 번째 부분은 루틴이 수정 된 이후에 재 시작 될 수 있으며, 이것은 이후의 제거 파라미터를 설정하게 된다. 이 마지막 부분의 코드는 재실행 할 수 없으며, 각각의 코드 프로세스 되는 동안에 비활성화 된다.
도 20은 다른 예를 보여 주는데, 이는 다른 실시예와는 차이가 나며, 모니터 모드 상에서 실행된다. 기능은 모니터 모드에서 인터럽트를 비활성화 시켜서 더 이상 안전한 재실행이 없도록 한다. 이것은 단지 기능이 모니터 모드 상에서 재실행 되는 것을 보여준다.
모니터 모드 상에서 인터럽트가 설정 순서에 맞게 주소의 시작을 저장하여 새로운 프로세스를 추가하고 이것이 전부 새로운 기능을 수행 할 수 있도록 하게 하는 역할을 한다. 다른 방법으로는 기능이 시작하는 부분의 주소를 미리 로딩하여서, 프로세스의 상태를 인터럽트 예외 레지스터로 쓰게 할 수 있도록 한다.
도 20에 구현된 방법으로는, 기능의 재 시작이 인터럽트 기능의 종료나 혹은 루틴을 수정하는 것으로 끝난다. 이것은 안전하게 재 시작할 수 있는 기능을 제공한다.
위의 인터럽트 대기가 시스템을 보안 및 비보안 모드에서 일반적으로 기능들은 전부 인터럽트를 비활성화 하는 것에서 시작한다. 이는 인터럽트가 인터럽트 대기 시간을 줄이는 역할을 하며, 예를 들어 일반적인 운영 체계의 내용 변환 등의 예가 있다.
보안 및 비보안 메모리 억세스
도 1에 나타나 있듯이, 데이터 프로세싱 과정은 TCM 36, 캐쉬 38, 롬 44, 외부 메모리 56등을 포함하는 기타 장비들로 구성되어 있다. 도 37에 도시된 바와 같이 메모리는 보안 메모리와 비보안 메모리로 구성 되어 있다. 이것은 일반적으로 어떤 물리적인 구분이 보안 메모리 영역과 비보안 메모리 영역에서 이 영역이 대신에 보안 운영체계의 데이터 프로세싱 과정에서 결정되는 것으로 볼 수 있다. 이는 보안 도메인 상에서 실행된다. 그러므로, 모든 보안 메모리 , 물리적 메모리의 접속은 보안 메모리 내에 위치하게 되면, 모든 물리적인 부분은 비보안 메모리에 속하게 된다.
도 2와 5에 도시되어 있는 것처럼, 프로세싱 시스템은 보안 도메인과 비보안 도메인을 가지고 있다. 보안 도메인 상에서는 보안 커널 프로그램 80이 동작하여 보안 모드를 수행한다. 모니터 프로그램 72는 보안 및 비보안 도메인이 모니터 모드 상에서 부분적으로 수행 하는 것을 관리 하게 된다. 실시예 상에서 모니터 프로그램은 부분적으로 모니터 모드와 부분적인 보안 모드로 수행 되게 된다. 보안 모드는 내부 알리아스와 관리 모드 SVC등을 가지게 된다.
모니터 프로그램 72는 보안과 비보안 도메인 사이의 각각의 방향에서의 관리를 맡는다. 일부 기능은 도 8과 9에 나타나 있으며, 프로세서 모드 부분을 참조하면 된다. 모니터 프로그램은 비보안 모드에서 보안 모드로의 전환을 주 역할로 하고 있으며, 위의 설명된 부분인 "보안 영역 전환" 은 모니터 모드 상에서 하나 이상의 레지스터 보안 혹은 비보안 도메인 상에 존재 할 때 이 위치를 바꾸어 주는 역할을 맡게 된다. 여기 소개된 대로, 어떤 레지스터는 전환이 실행 될 때 비활성화 되기도 한다. 모니터 모드 상에서는 모든 인터럽트가 정지 한다.
모니터 모드가 모니터 프로그램이 설치되어 불규칙 적인 보안 및 비보안 메모리 영역을 수행 했을 때 모니터 프로그램은 보안화 된다. 이것은 단지 기능이 단순하게 실행 되었을 때에 한한다. 모니터 프로그램이 단순할수록 이로 인한 이점은 더 많아지게 된다. 특정된 보안 모드에서 모니터 프로그램의 단순화가 보안 모드를 수행하게 되는 경우에는, 운영 체계가 보안 모드를 수행 할 수 있도록 권한을 부여한다. 특정화 되지 않은 보안 모드는 리셋을 야기 한다. 모니터 모드와 특정화된 보안 모드의 전환 과정은 도메인 간의 이동에 있을 때의 상태를 저장하도록 한다.
S 플래그와 관련된 실시예에 있어서, 특정화된 보안 모드는 또한 모니터 모드로도 불린다. 만약 보안화된 모니터 모드가 프로세서 상에서 변환된 모니터 모드로 유지되어 제어 프로그램 상에 S 플래그가 변환 될 수 있도록 한다. 그리므로, S 플래그가 제공됨으로써, 모니터 모드는 일반화되지 않는다고 할 수 있다. 이러한 실시예는 현재의 기술 한계에서 특정화된 보안 모드 중의 하나로 S 플래그가 위치 하게된다.
이미 제기된 예의 실시예를 보면, 코어 10의 상태가 특정화 모드를 결정짓는 역할을 한다.
이는 일부 모드가 기능을 설정할 수 있도록 해준다. 그러므로, 프로세서 코어 10은 보안 모드를 가능하게 해서 모니터 모드 상에서 보안 및 비보안 상에서의 접속을 가능할 수 있도록 메모리 모드를 모니터 모드 상에서 특정화된 보안 모드로 변경하여 모니터 모드나 혹은 그 반대로 작동할 수 있도록 해 준다. 프로세서 코어 10은 이와 같이 기능을 가능할 수 있도록 해 준다.
메모리는 부분화 되어 보안 및 비보안 메모리로 구분이 되면 마찬가지고 두 개의 메모리는 모니터와 비보안 메모리 상태로 구분된다. 선택적으로 비보안 메모리는 모니터 모드 상에서 인식되고, 보안 모드와 비보안 모드로 다시 구분된다.
다른 상황의 예로는, 모니터모드와 여러 중 하나의 보안 모드는 비보안 메모리 모드로의 억세스를 거부하고 보안 모드로 전송을 하게 된다. 그리고 보안 메모리는 단지 모니터 모드에서 억세스가 가능하며, 보안 모드와 비보안 모드는 단지 보안 모드에서만 억세스가 가능하다.
상황의 다른 예로는, 모니터 모드가 보안 모드상에 좀 더 다른 특권을 가지게 되는 것에 대해서 부팅 및 리셋이 실행되기도 한다. 그러나 상황적인 다른 많은 예에서, 직접 변환이 보안 모드와 모니터 모드 상에서 이루어 질 수 있도록 하게 한다.
도 2에 도시된 바와 같이 보안 도메인은 보안 모드에서 보안 커널 80이나 운영 체계에 의해서, 그리고 보안 어플리케이션 82, 84 등에 대해 보안 커널 80을 수행하게 된다. 보안 커널과 보안 어플리케이션 프로그램은 다른 프로그램 코드가 보안 모드에서 가능할 수 있도록 억세스를 각각의 보안 및 비보안 메모리 상에서의 작업으로 볼 수 있다.
이 발명의 예들에서 확인할 수 있지만, 상황에서 프로세스가 운용이 될 때, 본 발명은 컴퓨터 프로그램이 이 부분에서 적당한 프로세서와 프로세싱에 맞게 운용되는 경우에 적용될 수 있다는 것을 알 수 있다.
선택적인 구현 방법에 있어서 현재 기술이 고려하는 프로그램의 모델은 아래에 주어진 대로 도 21과 23에서 볼 수 있다.
아래 표현에서 우리는 아래의 용어들을 지정하여 이해 함으로써, ARM 프로세서가 ARM 사에 의해 디자인 되어 있다는 것을 알아야 할 것이다.
S 비트 : 보안 상태 비트, CP 15레지스터에 지정되어 있다.
"보안/ 비보안 상태" 이것은 S 비트값으로 지정되어 있다. 이것은 코어가 보안계에 억세스할 수 있거나 혹은 비보안 모드에서 제한 되어 있을 수 있다. 이것은 S 비트 상태로 강제 될 수 있다.
"비보안계" 그룹은 모든 하드웨어 소프트웨어 억세스가 비보안 어플리케이션 상에서 이루어지는 것을 의미한다.
"보안계" 그룹은 모든 하드웨어 소프트웨어 그룹 중에 보안 모드로 수행이 되는 보안 코드를 의미한다.
모니터 모드: 새 모드로서 보안 모드와 비보안 모드를 변환 시키는 책임을 지게 된다.
요약
코어는 언제나 비보안 모드에서 억세스된다.
코어는 단지 보안 상태와 모니터 모드에서만 보안 상태로 억세스 된다.
SMI: 소프트웨어 모니터 인터럽트: 새 설정으로서, 지정된 SMI를 통한 예외 벡터를 이용한 코어 벡터에 모니터 모드를 실행한다.
쓰레드 ID: 각각의 쓰레드 구분자에 연관된 것이다. 몇몇 종류의 운영 체제에서 운영 체제가 비보안 모드에서 운용이 되고, 각각의 경우에 보안 기능이 요청되면, 그것은 파라미터를 통해 쓰레드 ID를 통해서 보안 기능으로 비보안 어플리케이션에서의 링크를 연결하는 기능을 한다.
프로그래머 모델
카본 코어 개관
카본 기술의 개념은 프로세서가 현재 기술을 이용하는데 있어서, 두 가지의 개념을 볼 수 있는데 하나는 보안 혹은 비보안 상태이다. 보안 상태는 반드시 비보안상태의 데이터로 누수 되어 서는 안된다.
제안된 솔루션에서, 보안과 비보안 상태는 같은 레지스터 뱅크를 공유하게 된다. 그 결과로, 모든 현존하는 모드는 ARM코어 상에서 각각의 상태로 존재하게 된다.
코어는 보안 및 비보안 상태에서 새로운 상태 비트로, S비트로 초기화 되어 CP 15레지스터로 지정된다.
S비트로 수정되어 각각의 설정을 통제 받는 상황에서, 각각의 상태를 다른 형태로 변환하면서, 새 모드를 추가하고, 모니터 모드가 관리를 하는 차원에서 각각의 모드를 관리 하게 된다. 모니터 모드에서 적당한 CP 15레지스터를 통해 쓰기를 수행하며, S비트로 쓰기가 가능할 수 있도록 한다.
마지막으로, 관리 예외에 대한 유연성을 추가할 수 있다. 모든 예외사항에서, 리셋을 제외 하고는 상황적으로 발생할 수 있는 것에 맞추어 모니터 모드로 전환이 된다. 이것은 CP 15 레지스터에 지정되어 설정될 수 있도록 한다.
해당 도표에 이 솔루션에 대한 자세한 사항이 표시 되어 있다.
프로세서 상태 및 모드
신규 카본 특징
보안 혹은 비보안 상태(S 비트)
카본 코어의 특징 중의 하나는 코어가 보안 (S=1)상태 혹은 비보안 상태(S=0)에 있음을 나타내는 S 비트가 존재하는 것이다. 보안 상태 하에서 코어는 보안 혹은 비보안계 안의 어떠한 자료도 억세스할 수 있을 것이다. 비보안 상태에 있을 때에 코어는 비보안 계의 자료로의 억세스가 제한될 것이다.
이러한 규칙의 유일한 예외는 S 비트를 비활성화하는 모니터 모드와 관련이 있다. S=0인 비보안 상태일지라도, 모니터 모드에서는 코어가 보안특권 억세스가 수행할 것이다. 모니터 모드와 관련한 자세한 정보를 위해서는 다음의 구절을 참고하면 된다.
S 비트는 모니터 모드 안에서만이 읽기와 쓰기가 수행될 수 있다. 어떠한 S 비트 값이라도, 기타의 다른 모드가 S 비트 값에 억세스하려고 한다면, 이러한 억세스는 무시되거나 혹은 정의되지 않은 예외의 결과를 낳게 될 것이다.
리셋과는 다르게 모든 예외들은 보안 상태의 비트에 아무런 영향을 미치지 않는다. 리셋 수행 시에는 , S 비트는 세팅되며, 코어는 감시 모드에서 시작될 것이다. 상세한 정보를 위해서는 부트 섹션을 참조하면 된다.
보안/비보안 상태는 ARM/Thumb/Java 상태와는 무관하게 분리되어 작동된다.
모니터 모드
카본 시스템의 또 다른 중요한 특징은 새로운 모드인 모니터 모드의 생성에 있다. 이것은 보안 혹은 비보안 상태의 변환하는 코어를 컨트롤하는 데 이용될 것이다. 그것은 언제든지 보안모드로 간주될 것이다. 즉, S 비트 값이 어떠한 값이든 간에 모니터 모드상에서는 코어가 항상 외부 계로의 보안특권 억세스를 수행할 것 이다.
어느 보안특권 모드(즉 보안 상태하의 특권 모드)일지라도 단순히 CPSR 모드 비트들(MSR, MOVS, 혹은 동등한 명령어)의 기록을 통해 모니터 모드로 변환할 수 있을 것이다. 그러나 이러한 작동은 비보안 사용자 모드 혹은 보안 사용자 모드에서는 금지될 것이다. 이와 같은 작동이 발생하는 경우에는, 그 명령어는 무시되거나 예외를 발생시킬 것이다.
전용 CPSR 위반 예외에 관한 어떠한 필요성이 제기될 수도 있다. 비보안 사용자 모드 혹은 보안 사용자모드로부터 CPSR의 직접 쓰기를 통해 모니터 모드로의 변환 시도에 의해 이러한 예외가 발생될 수도 있다.
리셋을 제외한 모든 예외들은 모니터 모드가 작동될 때 사실상 금지된다 :
- 모든 인터럽트들은 제한된다.
- 모든 메모리 예외들은 무시되거나 치명적인 예외를 발생시킨다.
- 미정의된 명령어들/SWI/SMI는 무시되거나 치명적인 예외를 발생시킨다.
모니터 방식으로의 진입 시에는 인터럽트들은 자동적으로 금지되며 또한 시스템 모니터가 작동되고 있는 동안 발생할 수 없는 다른 종류들의 예외들처럼 시스템 모니터가 기록되어야 한다.
모니터 모드는 몇몇의 사설 레지스터들을 보유할 필요가 있다. 이러한 솔루션은 R13(sp_mon), R14 (lr_mon) 및 SPSR (spsr_mon)과 같은 레지스터들의 최소 집합만을 복제하도록 제안한다.
모니터 모드상에서 MMU(flat address map)는 MPU 혹은 파티션 체커처럼 사용 금지된다. (모니터 모드는 보안 특권 외부 접속을 항상 수행할 것이다.) 그러나 특별하게 프로그래밍된 MPU 영역 속성들(캐쉬능력 등)은 동작될 수 있다. 선택에 따라서는 모니터 모드는 보안 도메인에 사용되는 어떠한 매핑이라도 활용할 것이다.
새로운 명령어
이 제안은 현존하는 ARM 명령어 세트에 새로운 하나의 명령어를 추가하는 것을 요구한다.
고정된 SMI 예외 벡터에서 분기 명령을 실행하면서, SMI (소프트웨어 모니터 인터럽트) 명령어는 모니터 방식으로 진입하는 데 이용될 것이다. 이 명령어는 주로 비보안 상태와 보안 상태 사이에서 교환토록 모니터를 표시하는 데 이용될 것이다.
선택(혹은 추가)에 따라 문맥 변환 성능을 개선하기 위하여 모니터 모드가 모니터 스택으로부터(혹은 모니터 스택으로) 다른 모드의 상태를 저장하거나 복원하는 것을 가능케 하기 위해 새로운 명령어를 추가할 수도 있다.
프로세서 모드
앞서 논의된 대로, 코어에 단지 하나의 새로운 모드인 모니터 모드가 추가 되었을 뿐이다. 존재하는 모든 모드들은 사용이 가능하며, 또한 보안 상태와 비보안 상태 둘다에서 존재할 수 있다.
실제로 카본 유저들은 도 21에 설명된 구조를 볼 수 있을 것이다.
프로세서 레지스터
이러한 구체화는 보안계와 비보안계가 동일한 레지스터 뱅크를 공유하도록 제안 한다. 이것이 뜻하는 바는 모니터 모드를 통해 하나의 계로부터 다른 계로 변환할 시에 시스템 모니터가 첫 번째 계의 문맥을 저장하고 두 번째 계의 문맥을 생성(혹은 복원)해야할 필요가 있다는 것이다.
매개변수의 전달이 용이해진다: 시스템 모니터가 S 비트를 한번 변환하면, 동일한 레지스터에 저장된 어떠한 자료라도 첫 번째 계에서처럼 두 번째 계에서도 동일하게 사용이 가능할 것이다.
그러나 엄격하게 제어되어야 하는 제한된 수의 매개변수 전달 전용 레지스터와는 달리 대부분의 다른 레지스터들은 보안상태에서 비보안 상태로 전환시에 보안 데이터의 누수를 방지하기 위해 일부분을 비워야 할 필요가 있을 것이다. 이것은 모니터 커널에 의해 보증될 필요가 있을 것이다.
하드웨어 메커니즘이나 새로운 명령어에게 보안 상태에서 비보안상태로의 전환시에 직접적으로 레지스터를 비울 수 있는 권한을 주는 것도 또다른 하나의 실현 가능한 일이다.
제안된 또다른 솔루션은 보안 상태와 비보안 상태간에 물리적으로 분리된 두개의 레지스터 뱅크를 보유하여 모든 (혹은 대부분의) 현존 레지스터 뱅크를 복제하는 것을 필요로 한다. 이 솔루션은 레지스터 안에 저장된 보안/비보안 데이터를 명확히 분리하는 장점을 가지고 있다. 그것은 또한 보안 상태와 비보안 상태간의 빠른 문맥 변환을 가능케 한다. 그럼에도 불구하고, 보안계가 비보안 레지스터를 억세스하는 것을 허가하는 전용 명령어를 생성하지 않는 경우에는 레지스터를 통한 매개변수의 전달이 어렵게 된다는 것이 단점이다.
도 22는 프로세서 모드에 따라 사용 가능한 레지스터에 대해 설명하고 있다. 프로세서 상태가 현 논제에 어떤 영향도 미치지 않는다는 것을 유의해야 한다.
예외들
보안 인터럽트
현행 솔루션
일반적으로 현재 코어에서처럼 IRQ나 FIQ와 같은 동일한 인터럽트 핀을 유지시키는 것이 제안된다. 예외 트랩 마스크 레지스터 (추후 이 문서상에서 정의될 것임)와 연계하면, 어떤 시스템도 다른 종류의 인터럽트를 구현하고 다루는 충분한 융통성이 있을 것이다.
VIC 강조
우리는 다음의 방법으로 VIC (벡터 인터럽트 콘트롤러)를 강화할 수 있었다. VIC는 개개의 벡터 주소들과 연관된 하나의 보안 정보 비트를 수록하고 있을 것이다. 이러한 비트는 단지 모니터나 보안 특권 모드에 의해 프로그래밍이 가능할 것이며, 그것은 고려되는 인터럽트가 보안측면에서 다루어지거나 처리되어야 하는지의 여부를 나타낼 것이다.
우리는 또한 두 새로운 벡터 어드레스를 추가할 것인데, 한 개의 벡터 어드레스는 비보안 상태에서 발생하는 모든 보안 인터럽트를 위한 것이며, 다른 한개는 보안 상태에서 발생하는 모든 비보안 인터럽트를 위한 것이다.
CP15에 포함된 S 비트 정보는 신규 VIC 입력처럼 VIC로의 사용 또한 가능하게 될 것이다.
다음의 테이블은 입력되는 인터럽트의 상태(각자의 인터럽트 라인과 연관된 S 비트에 의해 표시되는 보안 혹은 비보안)에 따라 실현될 수 있는 각각의 시나리오에 대해 요약하여 표시하고 있다.
Figure 112005025464202-pct00001
예외 처리 구성능력
카본 융통성의 개선을 위하여 새로운 레지스터인 예외트랩마스크가 CP15에 추가되어야 한다. 이 레지스터는 다음의 비트들을 포함할 것이다:
Bit 0: Undef 예외 (비보안 상태)
Bit 1: SWI 예외 (비보안 상태)
Bit 2: Prefetch abort 예외 (비보안 상태)
Bit 3: Data abort 예외 (비보안 상태)
Bit 4: IRQ 예외 (비보안 상태)
Bit 5: FIQ 예외 (비보안 상태)
Bit 6: SMI 예외 (보안/비보안 상태 둘 다)
Bit 16: Undef 예외 (보안 상태)
Bit 17: SWI 예외 (보안 상태)
Bit 18: Prefetch abort 예외 (보안 상태)
Bit 19: Data abort 예외 (보안 상태)
Bit 20: IRQ abort 예외 (보안 상태)
Bit 21: FIQ abort 예외 (보안 상태)
이 레지스터에서 리셋 예외는 어떠한 일치되는 비트도 가지고 있지 않다. 리셋은 항상 코어가 전용 벡터를 통해 보안 감시자 모드로 들어가도록 한다.
비트가 세팅되면, 관련 예외는 코어가 모니터 모드에 진입하도록 만든다. 그렇지 않으면, 그 예외는 발생된 계에서 연관된 핸들러에 의해 다뤄질 것이다.
이 레지스터는 단지 모니터 모드에서만 보여질 것이다. 어떤 다른 모드에서의 억세스를 시도하려는 명령어는 모두 무시될 것이다.
이 레지스터는 시스템이 모니터를 지원하는지의 여부에 따라 시스템 특정값으로 초기화되어야 한다. 이것은 기능적으로 VIC에 의해 관리될 수 있다.
예외 벡터 테이블
분리된 보안계와 비보안계에 따라, 보안 예외 벡터 테이블과 비보안 예외 벡터테이블 또한 분리하여야 한다.
더욱이, 모니터가 몇몇의 예외들을 잡을 수 있으므로, 제 3의 모니터 전용 예외 벡터테이블 또한 필요로 할 수도 있다.
다음의 테이블은 이러한 세 개의 각자 다른 예외 벡터 테이블을 요약한다 :
비보안 메모리의 경우:
Figure 112005025464202-pct00002
보안 메모리의 경우:
Figure 112005025464202-pct00003
* 리셋 메커니즘에 관련한 상세한 정보를 위해서는 “부트” 섹션을 참고할 것.
모니터 메모리의 경우 (플랫 맵핑):
Figure 112005025464202-pct00004
모니터 모드에서, 각각의 예외가 다른 두개의 연관된 벡터를 가지고 있도록, 예외 벡터는 복제될 것이다:
- 하나는 비보안 상태에서 발생되는 예외를 위한 것임.
- 다른 하나는 보안 상태에서 발생되는 예외를 위한 것임.
모니터 커널이 예외가 발생된 초기의 상태를 감시할 필요가 없으므로, 이것은 더 이상의 예외 지연을 감소시키는 데에 유용할 수도 있다.
이러한 특징은 보안 상태와 비보안 상태간의 변환의 개선을 위한 가장 적합한 지원중에 하나인 SMI와 같은 몇몇의 예외들로만 제한될 수 있음을 유의하여야 한다.
계간 변환
상태간 변환시, 모니터 모드는 첫 번째 상태의 문맥을 모니터 스택에 반드시 저장하여야 하며, 모니터 스택으로부터 두 번째 상태 문맥을 복원해야 한다.
따라서 모니터 모드는 사설 레지스터(r14, SPSR, ..)를 포함하는 모든 모드에서의 모든 레지스터를 억세스할 필요가 있다.
이것을 다루기 위해, 제안된 솔루션은 CPSR의 단순한 기록을 통해 모니터 모드로의 직접적인 변환의 권한을 보안 상태에서 어느 특권 모드에 제공하는데 있다.
이러한 시스템을 이용하여 다음과 같이 계간 변환이 수행된다:
-모니터 모드로 진입한다.
-S 비트를 세팅한다.
-감독자 모드로 변환한다.
-모니터 스택 (물론 감독자 모드는 모니터 스택 포인터로의 억세스가 필요하지만, 예를 들면 R0에서 R8같은 일반 레지스터를 사용하면 이것은 간단히 실행될 수 있다.)에 감독자 레지스터를 저장한다.
-모니터 스택에 IRQ 레지스터를 저장한다.
-등등...모든 모드에 대하여
-한번 모든 모드의 사설 레지스터 전부가 저장되면, 간단한 MSR 명령어(단순희 CPSR 모드 필드에 모니터 값을 기록한다.)와 함께 모니터 모드로 복귀한다.
기타 솔루션들도 또한 고려되었다:
-모니터가 다른 모드들의 사설 레지스터들을 자신의 스택에 저장할 수 있도록 새로운 명령어를 추가한다.
-새로운 "상태"로서 모니터를 구현한다. 예를 들면 모니터 상태(적당한 억세스 권한을 갖기 위하여)나 IRQ(혹은 다른) 모드에서 IRQ(혹은 다른) 사설 레지스터를 볼 수 있도록 하기 위해 새로운 "상태"로 구현한다.
기본 시나리오 (도 23 참조)
1. 쓰레드 1이 비보안계(S 비트=0)에서 작동중이다.
2. SMI 명령은 그 코어를 비보안 SMI 벡터를 통해 모니터 모드에 들어가게 만든다.
LR_mon과 SPSR_mon은 비보안 모드의 PC와 CPSR를 저장하는데 활용된다.
이 단계에서 시스템이 현재 보안상태에 있더라도 S 비트는 변환되지 않은 상태로 남아있다.
모니터 커널이 모니터에 비보안 문맥을 저장한다.
그것은 또한 LR_mon과 SPSR_mon을 더한다.
모니터 커널은 CP15 레지스터에 기록함으로써 "S" 비트를 변환한다.
이 구현에서, 모니터 커널은 "보안 쓰레드 1"이 보안계에서 시작될 수 있도 록 트랙을 유지한다. (예컨대 쓰레드 아이디 테이블의 업데이트를 통해)
결국, 모니터 모드가 존재하며 보안 감독자 모드로 변환된다.(LR_mon and SPSR_mon의 업데이트 이후 MOVS 명령어)
3. 보안 커널은 어플리케이션을 정확한 보안 메모리 장소로 신속히 전달하며, 이후에 사용자 모드로 전환한다. (예를 들면 MOVS를 사용하여)
4. 보안 사용자 모드에서 보안 기능이 실행된다.
한번 종료되면, 이는 적절한 SWI를 수행함으로써 "종료" 기능을 호출한다.
5. SWI 명령어는 코어가 전용 SWI 벡터를 통해 보안 SVC 모드에 진입하게 한다. 차례에 따라 "종료" 기능을 수행한다.
이러한 "종료" 기능은 모니터 모드로 복구하는 SMI와 함께 종료된다.
6. SMI 명령어는 코어를 전용 보안 SMI 벡터를 통해 모니터 모드에 진입하도록 한다.
LR_mon과 SPSR_mon은 Secure svc 모드의PC와 CPSR을 저장하는 데 이용된다.
S 비트는 변하지 않은 상태로 남아있다. (즉, 보안 상태)
모니터 커널은 보안 쓰레드 1이 종료되었다는 사실을 기록한다. (쓰레드 아이디 테이블로부터 보안 쓰레드 1를 삭제한다)
이후 CP15 레지스터에 기록하고, 비보안 상태로 돌아감으로써 "S"비트를 변환한다.
모니터 커널은 모니터 스택으로부터 비보안 문맥을 복원한다.
모니터 커널은 또한 2단계에서 저장된 이전의 LR_mon과 CPSR_mon을 로딩한 다.
마지막으로, SUBS와 함께 모니터 모드를 종료하며, 이는 명령어에서 코어가 비보안 사용자 모드로 복귀하도록 한다.
7. 쓰레드 1은 정상적으로 회복될 수 있다.
도 6을 참조하면, 보안 도메인과 비보안 도메인 사이에 모든 레지스터들은 공유되고 있음을 알 수 있다. 모니터 모드에서 변환은 보안 도메인과 비보안 도메인의 어느 한쪽에서 다른 반대쪽으로 레지스터를 변환하면서 발생한다. 이것은 상기 "계간의 변환" 단락에서 설명되어진 것처럼, 한쪽의 도메인에 현재의 레지스터의 상태를 저장하고 반대쪽의 도메인에 새로운 레지스터 상태를 기록(혹은 레지스터에 기록되어 있는 이전 상태의 복원)하는 것을 수반한다.
이런 변환을 수행함에 있어 수행시간을 단축하는 것이 바람직하다. 변환의 실행에 걸린 시간을 단축하기 위하여 보안 도메인과 비보안 도메인간에 변환이 수행될 때 그 속에 저장된 데이터 값들을 변경시키지 않은 채 공유된 레지스터들의 사용을 금지시킨다. 예를 들어 비보안 도메인으로부터 보안 도메인으로의 변환을 생각해 보자. 보안계에서 도 6에 설명된 FIQ 레지스터들이 필요가 없다고 예를 들어 가정해 보자. 그러면, 이러한 레지스터들은 사용이 불가능한 상태이며 그것들을 보안 도메인으로 변환하거나 이러한 레지스터들의 문맥을 저장할 필요가 없다.
레지스터의 불가용화는 여러 방법을 통해 달성될 수 있다. 한가지 방법은 이러한 레지스터들을 이용하는 모드를 잠그는 것이다. 그것은 모드의 불용화를 나타내는 CP15 레지스터의 제어비트를 기록함으로써 수행된다.
선택에 의해, CP15 레지스터에 제어 비트를 기록함으로써 명령어순의 원리에 따라 레지스터에 억세스하는 것이 불가능할 수도 있다. CP15 레지스터에 기록된 S 비트는 모드가 아닌 그 레지스터와 명백한 관계가 있다. 따라서 그 모드는 사용금지 되지는 않지만 금지된 모드에서의 레지스터로의 억세스은 금지된다.
FIQ 레지스터들은 빠른 인터럽트와 연결된 데이터를 저장한다. FIQ 레지스터(들)가 사용이 금지되고 신속한 인터럽트가 발생하는 경우, 프로세서는 모니터상에 예외를 표시한다. 예외 발생에 대한 응답상황에서 모니터 모드는 하나의 도메인과 연관되거나 상기 사용금지된 레지스터에 저장된 어떠한 데이터 값의 저장을 수행가능하고, 또한 다른 도메인과 연관된 새로운 데이터 값을 레지스터에 로드하는 것도 가능하며, 그러고 난 다음 FIQ 모드 레지스터를 재사용할 수 있다.
프로세서의 도메인 변환시에 모든 뱅크 레지스터가 사용이 금지되도록 하기 위해 프로세서가 조절될 수 있다. 대신하여, 레지스터의 불용화는 프로그래머의 선택시에 도메인의 변경과 다른 것들이 사용금지되는 때에 미리 결정된 몇몇의 공유된 레지스터들 중의 하나가 불용화 되는 것에 의해 선택이 가능하다.
모니터 모드상에서 도메인이 변경될 때에 공유 레지스터들 중의 하나 이상이 불용화되고, 하나의 도메인이 존재할 때 다른 공유 레지스터 중의 하나 이상이 그들의 저장된 데이터를 갖도록 하는 한편 다른 도메인에서는 로딩된 새로운 데이터를 가질 수 있도록 하기 위해 프로세서는 조절될 수 있다. 그 새로운 자료는 공 자료일 수도 있다.
도 24는 전통적인 ARM 코어에 보안 프로세싱 옵션을 추가하는 개념에 대해 설명하고 있다. 도는 현존하는 코어에 보안 프로세싱 옵션을 추가함으로써 보안 프로세싱 옵션을 내재한 프로세서가 어떻게 형성될 수 있는지를 도식적으로 보여주고 있다. 만약에 시스템이 현존하는 레거시 운영 체계와의 후방 호환성이 있다면, 이것은 레거시 시스템이 프로세서의 전통적인 비보안 부분에서 실행되고 있음을 직관적으로 생각될 수 있다. 그러나, 도의 아래 부분에서 도식적으로 나타나 있으며 그 아래에 설명되어 있듯이 사실은 레거시 시스템이 운영되는 보안 부분에서 실행되고 있는 것이다.
도 25는 보안 및 비보안 도메인을 가지고 있으며 리셋을 설명하고 있는 프로세서에 대해 보여주고 있으며, 이는 도 2와 비슷하다. 도 2는 보안 도메인에서 처리되는 것을 관리하는 보안 OS 시스템 및 비보안 도메인에서 처리되는 것을 관리하는 비보안 OS 시스템을 이용한 보안 민감도 타입을 수행하기 위해 개조된 프로세서에 대해 설명하고 있다. 그러나 프로세서는 또한 전통적인 레거시 운영 체계와의 후방향 호환성을 가지고 있고, 따라서 그 프로세서는 레거시 운영 체계를 활용하며 보안에 민감하지 않은 방법으로 운영될 수도 있다.
도 25에서 보여지듯이, 리셋은 보안 도메인에 있으며, 어떠한 종류의 수행 리셋이라도 여기서 S 비트 혹은 보안 상태 플래그 셋과 함께 발생한다. 보안에 민감하지 않은 운영 타입인 경우 리셋은 보안 도메인과 프로세싱에서 발생되며 이후에 보안 도메인 안에서 지속된다. 그러나 처리를 관리하는 레거시 운영 체계는 그 시스템의 안전 관점에 대해 알지 못한다.
도 25에 도시된 바와 같이, 보안에 민감한 것이든 혹은 실제 보안에 민감하지 않던 간에 보안 감독자 모드 안에서 실행이 시작되는 주소를 세팅하기 위해 리셋이 수행된다. 한번 리셋이 수행되면, 추가적인 업무들이 부트나 리부트 매카니즘이 수행되는 동안 나타나게 된다. 부트 메카니즘은 아래에 설명되어 있다.
부트 메카니즘
그 부트 메카니즘은 아래의 특징들을 따라야 한다.
-레거시 OS와의 호환성을 유지해야 한다.
-시스템의 보안을 보증하기 위해 최고 특권 모드에서 부팅한다.
결과적으로 카본 코어는 보안 감독자 모드에서 부팅될 것이다.
그리고 나서 다른 시스템이 있을 것이다:
-레가시 OS를 수행하길 원하는 시스템들을 위해 S 비트는 계정에 입력되지 않을 것이며 코어는 감독자 모드에서 부팅되는 것을 단지 관찰할 것이다.
- 카본 특징을 사용하는 것을 원하는 시스템을 위해, 코어는 그 시스템의 모든 보안 방어를 설정할 수 있도록 하기 위해 보안 특권 모드에서 부팅한다. (잠재적으로 모니터 모드로 변환한 이후)
상기 부트 메카니즘의 세부사항에 관해서, 본 발명의 실시예에 의한 프로세서는 모든 경우에 있어서 보안 감독자 모드에서 프로세싱을 시작하기 위해 프로세서를 리셋시킨다. 보안에 민감하지 않은 경우의 운영시에는 (운영체제가 알고 있지 못하더라도) S 비트가 세팅되어 있으므로, 보안이 문제거리가 아닐지더라도 운영 체제는 실제적으로 보안 도메인에서 작동되고 있다. 이것은 비보안 모드에서 억세 스가 가능한 메모리의 부분들이 이 상황에서는 억세스가 불가능하다는 장점을 가지고 있다.
모든 경우에 있어서 보안 감독자 모드에서 부팅하는 것은 시스템의 보안을 보증하는 것이므로 보안에 민감한 시스템에서도 장점을 가지고 있다. 보안에 민감한 시스템에서, 부팅시에 제공된 어드레스는 비보안 관리자 모드가 저장된 부트 프로그램을 가리키고 있으며 또한 보안 시스템으로의 설정과 모니터 모드로의 변환을 가능케 한다. 보안 감독자 모드로부터 모니터 모드로의 변환은 대부분 가능하며, 모니터 모드 설정을 초기화하기 위한 모니터 모드에서의 프로세싱을 적합한 순간에 시작할 수 있도록 해준다.
도 26은 1 단계에서 비보안 쓰레드 NSA가 비보안 운영 체계에 의해 실행되는 것을 설명하고 있다. 2 단계에서 비보안 쓰레드 NSA가 모니터 모드를 통해 3단계의 모니터 모드 프로그램을 수행하며 보안 도메인을 호출한다. 모니터 모드 프로그램은 도메인 변환을 위해 S 비트를 변경하고, 5단계의 보안 운영시스템으로 이동하기 앞서 필요로 하는 문맥의 저장 및 문맥의 복원을 수행한다. 그리고 나서, 일치하는 보안 쓰레드 SA는 그것이 6 단계의 인터럽트 irq에 종속되기 전에 실행된다. 하드웨어를 다루는 인터럽트는 그 인터럽트가 보안 운영 체계 혹은 비보안 운영 체계에 의해 다뤄지게 될지를 결정하게 되는 7단계에서 모니터 모드로의 귀환을 작동시킨다. 이 상황에서, 인터럽트는 9단계에서 시작하는 비보안 운영 체계에 의해 다루어진다. 인터럽트가 비보안 운영 체계에 의해 다루어졌을 때, 비보안 쓰레드 NSA는 일반 쓰레드가 작동을 교환하는 11단계에 앞서, 비보안 운영 체계에서 현재의 작업 으로 재개된다. 이러한 쓰레드의 변경은 타이밍 이벤트 혹은 유사한 이벤트의 결과일 수 있다. 다른 쓰레드 NSB는 12단계에서 비보안 운영 체계에 의해 비보안 도메인 안에서 실행되며, 그때 이것은 14단계에서는 모니터 도메인과 프로그램을 통해 보안 도메인을 호출한다. 7단계에서 보안 운영 체계가 보안 쓰레드가 실행이 중지되었거나 종료의일반적인 요청 때문에 남겨졌다기 보다는 인터럽트의 결과로써 최종으로 중지된 것을 알려주기 위해 플래그를 저장한 모니터 프로그램은 몇몇의 다른 메카니즘을 사용했다. 따라서, 그 보안 운영 체계가 인터럽트에 의해 중지된 이후로, 15단계에서의 모니터 프로그램은 귀환 쓰레드 아이디를 명시하고 있는 조작된 인터럽트의 소프트웨어를 사용하며 보안 운연 시스템에 재입장한다.(예를 들어, 쓰레드의 구분자가 기타 매개변수 데이터와 같은 비보안 쓰레드 NSB의 요청에 의해 보안 운영 체계에 의해 시작된다.) 이러한 조작된 인터럽트 소프트웨어의 매개변수가 레지스터 값으로 옮겨질 수도 있다.
조작된 인터럽트 소프트웨어가 15단계의 보안 운영 체계의 인터럽트 귀환 핸들러 루틴을 작동시킨다. 이러한 귀환 인터럽트 핸들러 루틴은 중지에 앞서 수행되었던 보안 운영 체계가 최종으로 중지된 보안 쓰레드 SA의 쓰레드 아이디와 일치하는지의 여부를 확인하기 위해 검사한다. 이 경우에, 매치되는 것이 없으며 따라서, 16단계에서 보안 쓰레드 SA의 문맥이 저장된 이후에 비보안 쓰레드 NSB에 의해 명시되는 대로 귀환 쓰레드로의 쓰레드 변환을 수행하기 위해 보안 운영 체계가 작동된다. 그리고 나서, 보안 쓰레드 SA는 그것이 요구에 따라 인터럽트된 포인트로부터 차후에 다시 시작될 수 있다.
도 27은 도 26에 설명된 행동의 형태의 또다른 예를 도식적으로 설명하고 있다. 이러한 예에서 IRQ를 핸들링하기 위해 조용한 프로세싱이 비보안 운영 체계의 제어 아래 수행되며, 비보안 쓰레드 변환이 없어서, 결과적으로 조작된 인터럽트 소프트웨어가 보안 운영 체계의 귀환 인터럽트 핸들러에 의해 받게 될 때 아무런 쓰레드 변환이 필요가 없음과 단지 보안 쓰레드 SA가 15단계에서 재개되는 것이 결정된다.
도 28은 귀환 쓰레드 핸들러에 의해 수행되는 프로세싱을 도식적으로 설명하고 있는 흐름도이다. 4002 단계에서, 귀환 쓰레드 핸들러가 시작된다. 소프트웨어로부터의 귀환 쓰레드 확인자가 날조된 4004단계에서, 인터럽트는 검사되고 보안 운영 체계가 종료되었을 때에 현재 수행중인 보안 쓰레드와 비교된다. 이것이 일치하면, 프로세싱은 안전 쓰레드가 재개되는 4006 단계까지 진행된다. 4004 단계에서의 비교가 일치되지 않는다면, 신규 보안 쓰레드로의 변환이 일어나는 4010 단계에 앞서, 프로세싱은 구 보안 쓰레드의 문맥이 저장된 4008단계까지 진행된다. (차후의 재개를 위해) 새로운 쓰레드는 이미 진행중일 지도 모른다. 4010은 재개이다.
도 29는 마스터 비보안 운영 체계에 의해 변환된 작업을 따라서 수행하는 슬레이브 보안 운영시스템의 프로세싱을 도식적으로 설명하고 있다. 마스터 비보안 운영 체계는 자신의 활동에 대해 다른 운영 체계와 함께 커뮤니케이션하거나 협력을 하기 위한 메커니즘이 없는 관계로 마스터로서만 작동되는 레거시 운영 체계일 수 있다. 도 29에서처럼 최초의 엔트리 포인트로서, 비보안 운영 체계는 비보안 쓰레드 NSA를 실행시킨다. 이 비보안 쓰레드 NSA는 SMI라는 소프트웨어 인터럽트를 사용하는 보안 운영 체계에 의해 실행되는 보안 쓰레드에 대해 호출을 한다. SMI 호출은 2단계인 모니터 모드에서 수행중인 모니터 프로그램에 도달하고 그후에 호출을 4단계에서 보안 운영 체계로 전달하기 앞서 필요한 문맥의 저장 및 변환을 수행한다. 보안 운영 체계는 이후 일치하는 SA 보안 쓰레드를 시작하고, 타이머 이벤트의 혹은 유사 이벤트의 결과에 따라 이 보안 쓰레드는 모니터 모드를 통해 비보안 운영 체계로 제어권을 돌려줄 수도 있다. 비보안 쓰레드인 NSA가 9단계에서 다시 보안 운영 체계에 제어권을 넘겨줄 때에 최초의 소프트웨어 인터럽트를 재발행하면서 제어권 이전 작업을 수행한다. 소프트웨어 인터럽트는 비보안 쓰레드 아이디 확인 NSA, 타겟 보안 쓰레드가 작동될 수 있는 보안 쓰레드 아이디를 포함한다. 다시 말해서, 다른 매개변수와 같이 쓰레드 아이디는 보안 쓰레드인 SA를 인식한다.
9단계에서 생성된 호출이 모니터 프로그램에 의해 전해져서 12단계에서 보안 운영 체계에 의해 보안 도메인에서 접수될 때, 비보안 쓰레드 아이디는 비보안 운영 체계에 의해 문맥 변환이 있었는지를 결정하기 위하여 검사될 수 있다. 타겟 쓰레드의 보안 쓰레드 아이디도 또한 보안 운영 체계가 재가동되거나 새로운 쓰레드로 시작된 상황 하에서 정확한 쓰레드인지를 확인하기 위해 검사될 수 있다.
도 30은 쓰레드에 있는 전환이 9단계 시에 비보안 운영 체계의 제어 아래에 비보안 도메인에서 발생하는 것만을 제외하고는 도 29와 유사하다. 따라서, 그것은 11단계에서 소프트웨어를 보안 운영 체계로의 호출을 방해하게 만드는 다른 비보안 쓰레드 NSB이다. 14단계에서, 보안 운영 체계는 비보안 쓰레드 NSB의 다른 쓰레드 아이디를 인식하고 이에 따라 보안 쓰레드 SA의 문맥을 저장하고 보안 쓰레드 SB를 시작하면서 수반하는 프로세스 전환을 수행한다.
도 31은 보안 운영 체계의 쓰레드의 시작 혹은 쓰래드의 재개를 위한 호출로로써 소프트웨어 인터럽트를 받은 상황에서 보안 운영 체계에 의해 수행된 처리를 도식적으로 설명하는 흐름도이다. 4012 단계에서, 그 호출은 받아진다. 4014 단계에서, 보안 운영 체계 위에 현재 구동중인 보안 쓰레드와 일치하는지를 확인하기 위해 호출의 매개변수들은 검사된다. 매치되는 경우가 발생하면, 안전 쓰레드는 4016단계에서 재시작 된다. 매칭이 발생하지 않는 경우에는 프로세싱이 신규 요청 쓰레드의 가능 여부가 판단되는 4018 단계까지 진행한다. 신규 요청 쓰레드는 보안 운영 체계 상에서 이미 다른 작동중인 쓰레드에 의해 사용되고 있는 외부 자원들이 있거나 그것의 요청 때문에 사용이 불가능할 수도 있다. 그런 경우에, 그 호출은 비보안 운영 체계로 돌아가자는 적절한 메시지를 가진 4020 단계에서 거절된다. 4018 단계에서의 결정이 신규 쓰레드가 사용 가능하다고 한 것이라면, 가능한 차후의 재개를 위해 오래된 보안 쓰레드를 저장하게 되는 4022단계까지 진행하게 된다. 4024 단계에서, 보안 운영 체계로의 소프트웨어 인터럽트 호출에 특화된 새로운 보안 쓰레드에 전환이 생성되어 진다.
도 32는 각자 다른 운영 체계에 의해 각각의 인터럽트가 조작되는 병렬 운영 체계 하에서 인터럽트가 조작될 때 우선권 전도가 발생할 수도 있음을 도식적으로 설명하고 있다.
프로세싱은 SA 보안 쓰레드를 실행시키는 보안 운영 체계와 함께 시작된다. 그리고 나서, 이것은 첫 번째 인터럽트 Int1에 의해 중단된다. 이것은 인터럽트가 보안 도메인에서 조작되거나 혹은 비보안 도메인에서 조작되는지를 결정짓기 위해 모니터 모드 안에서 모니터 프로그램을 작동시킨다. 이러한 경우, 인터럽트는 보안 도메인 상에서 조작될 것이며 프로세싱은 보안 운영 체계로 돌아가고, 인터럽트 핸들링 루틴은 인터럽트 Int1이 시작되도록 할 것이다. 인터럽트 핸들링 루틴이 Int1를 위해 조작되는 중간에도, 상위 우선권을 갖는 인터럽트 Int2가 받아질 수 있다. 그러면 Int1을 위한 인터럽트 핸들러는 정지하게 되며, 모니터 모드의 모니터 프로그램이 인터럽트 Int2가 어디서 조작되는지를 파악하기 위해 사용된다. 이러한 경우 인터럽트 Int2는 비보안 운영 체계에 의해 조작이 될 것이며, 순차적으로 제어권이 비보안 운영 체계로 넘어가서 Int2를 위한 인터럽트 핸들러가 작동을 시작한다. 인터럽트 Int2를 위한 인터럽트 핸들러의 사용이 만료되었을 때에는 비보안 운영 체계는 보안 도메인에서 서비스가 종료된 보류 인터럽트 Int1이 있다는 것을 가리킬 수 있는 정보를 아무것도 가지고 있지 않게 된다. 따라서, 비보안 운영시스템은 최초의 인터럽트 Int1이 서비스되지 않은 상태로 남아있을 때에, 작업 변환이나 다른 비보안 쓰레드인 NSB의 작동과 같이 차후의 몇몇 프로세싱을 수행할 수도 있다.
도 33은 도 32의 작동이 회피되는 경우와 연관된 문제점들에 관한 기술사항들을 설명하고 있다. 인터럽트 Int1이 발생될 때, 모니터 프로그램은 이것을 스터브 인터럽트 핸들러가 시작되는 비보안 도메인으로 전달한다. 스터브 인터럽트 핸들러는 비교적 크기가 작으며, 보안 도메인 내부에서 인터럽트 Int1을 위한 인터럽 트 핸들러를 작동시키고, 모니터 모드를 통해 프로세싱을 보안 도메인쪽으로 재빠르게 복귀시킨다. 인터럽트 Int1은 보안 도메인 안에서 첫째로 처리되며, 비보안 도메인에서의 스터브 인터럽트 핸들러의 작동 시작은 보안 도메인에서의 인터럽트가 보류되고 있다는 것을 비보안 도메인에 알려주는 일종의 위치 보유자라고 생각되어질 수 있다.
인터럽트 Int1와 관련 있는 보안 도메인 상의 인터럽트 핸들러는 또다시 상위 우선권을 보유한 Int2에게 권한을 넘긴다. 이것은 그전처럼 비보안 도메인에서의 인터럽트 Int2를 위한 인터럽트 핸들러의 실행을 작동시킨다. 그러나 이와 같은 상황에서 Int2를 위한 인터럽트 핸들러의 사용이 만료되었을 때에, 비보안 운영체제는 인터럽트 Int1을 위한 스터브 인터럽트 핸들러가 여전히 미완료 상태로 남아 있으며, 따라서 스터브 인터럽트 핸들러를 재개할 것을 가리키고 있는 데이터를 보유하고 있다. 이러한 스터브 인터럽트 핸들러는 자신을 보안 모드로 콜백 하였던 포인트에서 정지되었던 것처럼 나타날 것이다. 포인트에서 순차적으로 이 호출은 다시 수행될 것이며 따라서 보안 도메인으로의 전환을 만들어 낼 것이다. 보안 도메인으로 복귀하게 되면, 보안 도메인은 인터럽트 Int1을 위한 인터럽트 핸들러를, 전에 종료되었던 포인트에서 스스로 다시 작동시킬 수 있다. 보안 도메인 내에서 인터럽트 Int1을 위한 인터럽트 핸들러가 완료되면, 호출은 초기에 작동되던 보안 쓰레드 SA가 다시 시작되기 전에 비보안 도메인에서의 스터브 인터럽트 핸들러를 종료시키기 위해 비보안 도메인으로 돌아간다.
도 34는 각자 다른 인터럽트 및 이와 연관된 우선권, 그리고 어떻게 인터럽 트들이 조작되는 지에 대해 도식적으로 설명되고 있다. 상위의 우선권을 지닌 인터럽트들은 비보안 도메인에 의해 조작되는 상대적으로 상위의 우선권을 지닌 인터럽트가 존재하지 않음을 규정하면서, 순수한 보안 도메인 인터럽트 핸들러들을 이용하여 조작될 것이다. 하위의 인터럽트들보다 상위의 우선권을 지닌 인터럽트가 비보안 도메인에서 조작되면, 모든 하위 인터럽트들은 순수하게 비보안 도메인에서 조작되거나 도 33에 도시된 바와 같이 이들 인터럽트들의 주된 조작이 보안 도메인 내부에서 발생되더라도 비보안 도메인이 인터럽트들을 추적할 수 있도록 하기 위해 스터브 인터럽트 핸들러 기술을 활용하여야 한다.
앞서 언급된 대로, 모니터 모드는 보안 도메인과 비보안 도메인 사이의 전환을 수행하는 데 사용된다. 레지스터들이 두 개의 다른 도메인 사이에서 공유되는 구체화에서, 이것은 레지스터의 상태를 메모리 안에 저장하는 것을 수반한다. 그리고 나서 메모리로부터 새로운 목적 도메인의 상태를 로딩하여 그들의 레지스터들에 기록한다. 두 개의 다른 도메인 사이에 공유되지 않는 레지스터들을 위해서는 상태가 기록될 필요가 전혀 없으며, 그러므로 이러한 레지스터들은 다른 도메인들로부터 억세스되지 않을 것이며, 상태간의 변환은 보안 도메인과 비보안 도메인 간의 직접적인 변환의 결과처럼 수행되질 것이다. (즉, CP15 레지스터들 중의 하나에 기록된 S 비트의 값이 공유되지 않은 레지스터들을 사용할 것인지를 결정한다.)
모니터 모드 중에 변환이 필요한 상태 정보의 부분은 프로세서에 의한 프로세서 설정 데이터 컨트롤 메모리 접근과 관련된 부분이다. 각각의 도메인 안에는 다른 관점의 메모리가 존재한다. 예를 들면, 보안 데이터를 저장하기 위해 보안 도 메인이 보안 메모리를 접근하고 있을 때에는 이 보안 메모리는 비보안 도메인으로부터 접근이 금지되며, 각각의 도메인 사이에서 변환 시에 프로세서 설정 데이터가 변경되어야 할 것이라는 것은 확실하다.
도 35에서 볼 수 있듯이, 프로세서 설정 데이터는 CP15 레지스터 34 안에 저장되며, 또한 이러한 레지스터들은 하나의 통합체에서 도메인들에게 공유되어진다. 그런 까닭에, 모니터 모드가 보안 도메인과 비보안 도메인 사이에서 변경될 때, 현재 CP15 레지스터 34에 들어있는 프로세서 설정 데이터는 CP15 레지스터의 외부에서 메모리 내부쪽으로 위치가 변경되어야 할 필요가 있으며, 또한 목적 도메인과 연관된 프로세서 설정 데이터도 CP15 레지스터 34 안에 로딩 되어야 한다.
일반적으로 CP15 레지스터에 있는 프로세서 설정 데이터가 시스템 안에서 메모리로의 접근에 대한 즉각적인 효과를 가지고 있으므로, 프로세서가 모니터 모드에서 작동되고 있을 시에 프로세서에 의해 업데이트 되면, 즉각적으로 이러한 설정값들이 작용할 것이 분명하다. 그럼에도 불구하고, 모니터 모드에는 메모리로의 접근을 조절하는 프로세서 설정 데이터가 정적 세트인 경우가 더욱 바람직하므로, 위의 경우는 바람직하지 못하다.
따라서, 도 35에서도 볼 수 있듯이, 동 발명의 통합체에서 모니터 모드 특수 프로세서 설정 데이터 2000이 제공되며, 이는 프로세서가 모니터 모드에서 작동되는 동안 CP15 레지스터 34 안의 프로세서 설정 데이터를 비활성화하는 데에 사용될 수도 있다. 이것은 CP15 레지스터에 저장된 프로세서 설정 데이터 및 모니터 모드 특수 프로세서 설정 데이터 2000 둘 다를 입력받을 수 있는 멀티플렉서(다중화기) 2010를 갖춤으로써 도 35에 설명된 통합체에서 달성되었다. 또한, 멀티플렉서 2010은 2015 경로를 따라 제어신호를 받는데, 이 제어신호는 프로세서가 현재 모니터 모드에서 작동하고 있는지의 여부를 알려준다. 프로세서가 모니터 모드에서 작동되지 않을 경우 CP15 레지스터 34에 있는 프로세서 설정 데이터가 시스템으로 출력되나, 모니터 모드에서 프로세서가 작동되는 경우에는 멀티플렉서 2010이 프로세서가 모니터 모드에서 동작될 때에 무모순의 프로세서 설정 데이터 집합이 적용되고 있음을 보장하기 위해 대신 모니터 모드 특수 프로세서 설정 데이터 2000을 출력한다.
조작될 수 없음을 보장하기 위하여, 모니터 모드 특수 프로세서 설정 데이터는 시스템 안에 하드코딩 될 수도 있다. 그러나 모니터 모드 특수 프로세서 설정 데이터 2000이 보안문제와 절충되지 않은 채 프로그래밍 될 수도 있으므로, 제공되는 모니터 모드 특수 프로세서 설정 데이터는 보안 특권 모드에서 수행되는 경우에만 한해서 프로세서에 의해 변경될 수 있다. 이것은 모니터 모드 특수 프로세서 설정 데이터의 세팅과 관련하여 어느 정도의 융통성을 허락할 것이다. 모니터 모드 특수 프로세서 설정 데이터가 프로그래밍이 가능토록 조정되는 경우에는, 그 설정 데이터가 시스템 내의 어느 적절한 장소, 즉 예를 들면 CP15 레지스터 34 내부 안에 구별된 레지스터 세트 내부와 같은 곳에 저장 될 수도 있다.
일반적으로, 모니터 모드에서 프로세서가 작동하는데 있어서 가장 안전한 환경을 제공하기 위해 모니터 모드 특수 프로세서 설정 데이터는 세팅 될 것이다. 그런 까닭에, 상기 실시예에서, 모니터 모드 특수 프로세서 설정 데이터는 프로세서 가 모니터 모드 상에서 작동될 때에 메모리 관리 유닛 30을 사용금지하도록 지정할 것이며, 또한 메모리 관리 유닛이 접근하지 못하도록 가상 어드레스를 물리적 어드레스로 변환하는 것을 금지한다. 이와 같은 상황에서, 메모리 접근 요청을 송신할 때 프로세서는 플랫 매핑 등을 활용하여 항상 직접적으로 물리적 어드레스로 조정될 것이다. 이것은 가상 어드레스가 물리적 어드레스로 매핑되어 변경되었는지의 여부와는 상관 없이 프로세서가 모니터 모드에서 작동되고 있을 때에 신뢰성 있게 메모리에 접근할 수 있도록 보장한다.
모니터 모드 특수 프로세서 설정 데이터는 또한 일반적으로 프로세서가 모니터 모드에서 수행될 때에 프로세서가 보안 데이터로의 접근이 가능하도록 지정할 것이다. 이것은 도메인 상태 비트의 형태를 취하여 메모리 허가 데이터에 의해 즐겨 명시되며, 이 도메인 상태 비트는 보안 프로세서 설정 데이터 안에서 연관된 도메인 상태 비트("S"비트)를 위해 명시된 것과 동일한 값을 갖는다. 따라서 CP15 레지스터 내부에 저장된 도메인 상태 비트의 실제 값과는 상관없이 모니터 모드 특수 프로세서 설정 데이터에 의해 명시된 그 값은, 모니터 모드가 보안 데이터에 접근하는 것을 보증하기 위해, 도메인 상태 비트에 의해 비활성화될 것이다.
모니터 모드 특수 프로세서 설정 데이터는 또한 메모리의 부분에 제어 접근하기 위한 기타 데이터들에 관해서도 명시하고 있다. 예를 들면, 모니터 모드 특수 프로세서 설정 데이터는, 프로세서가 모니터 모드에서 작동되는 동안 캐시 38이 데이터에 접근할 수 없도록 명시할 수 있다.
상기 설명된 통합체에서 프로세서 설정 데이터를 포함하고 있는 모든 CP15 레지스터들은 전부 다 도메인 간에 공유되고 있다고 생각되어진다. 그러나, 다른 대안의 통합체의 경우에서는 CP15 레지스터 중의 다수가 "뱅크화"되어, 예를 들면 프로세서 설정 데이터의 특별한 아이템을 저장하기 위해서 두 개의 레지스터가 있을 수 있도록 하게 된다; 하나의 레지스터는 비보안 도메인 상태에서 접근할 수 있으며 비보안 도메인과 관련된 프로세서 설정 데이터의 아이템 값을 포함하고 있고, 다른 하나의 레지스터는 보안 도메인 상태에서 접근할 수 있으며 보안 도메인과 관련된 프로세서 설정 데이터의 아이템 값을 포함하고 있다.
뱅크화 되지 않을 한 개의 CP15 레지스터는 "S" 비트 값을 갖게 되는 레지스터이지만, 원칙적으로는 CP15 레지스터의 다른 레지스터들은 원하는 경우 모두 뱅크화 될 수 있다. 이러한 구체화에 있어서, 모니터 모드에 의한 프로세서 설정 데이터의 변환은 공유된 레지스터들 안에 현재 존재하는 프로세서 설정 데이터를 공유된 CP15 레지스터로부터 꺼내와 메모리 안으로 옮기는 것이나, 목적 도메인과 연관된 프로세서 설정 데이터를 공유된 CP15 레지스터로 로딩하는 것과 연관된다. 뱅크화 된 레지스터들을 위하여 프로세서 설정 데이터가 메모리에 저장될 필요는 없으며, 대신에 공유된 CP15 레지스터와 연관 있는 S 비트 값의 변환의 결과로써 변환이 자동적으로 발생할 것이다.
앞서 언급된 대로, 모니터 모드 프로세서 설정 데이터는 연관된 CP15 레지스터에 저장된 것을 비활성화시키지만 보안 도메인에서 도메인 상태 비트로 사용되어진 것과 같은 값을 가지는 도메인 상태 비트를 포함할 것이다. (즉, 상기 서술된 통합체에서의 S 비트 값이 1인 경우) 많은 수의 CP15 레지스터들이 뱅크화 되었을 때, 이는 적어도 도 35에서 기술된 모니터 모드 특수 프로세서 설정 데이터 200의 일부분이, 이러한 레지스터들의 문맥이 변환 프로세스 도중에 메모리의 바깥에 적혀지지 않기 때문에, 뱅크화된 레지스터에 저장되어 있던 보안 프로세서 설정 데이터로부터 파생된 것일 수 있다는 것을 의미한다.
따라서, 하나의 예로써, 모니터 모드 특수 프로세서 설정 데이터는 도메인 상태 비트가 모니터 모드상에 있지 않을 경우에 사용될 것들과, 우선시 되는 통합체들에서 동일한 값을 가지고 있어서 보안 도메인에서 활용되던 것들을 비활성화시킬 것을 명시할 것이며, 이는 접근이 가능한 뱅크화된 CP15 레지스터 중에서 어떤 것을 선별하는 로직이 보안 CP15 레지스터들에 접근하는 것을 허용할 것이다. 모니터 모드가 이러한 보안 프로세서 설정 데이터를 모니터 모드 특수 프로세서 설정 데이터의 관련 분야로써 사용할 수 있도록 허가함으로써, 모니터 모드 특수 프로세서 설정 데이터의 아이템을 위해 분리된 레지스터 세트를 제공할 필요가 더 이상 없어짐에 따라 자원의 절약이 실현될 수 있다.
도 36은 한 도메인과 다른 도메인 사이에 변환이 요구되는 경우 프로세서 설정 데이터를 전환하기 위해 수행하였던 단계들을 설명하는 흐름도이다. 이전에 언급된 대로, SMI 명령어는 도메인 사이에서의 변환을 부추기기 위해서 호출된다. 따라서, 2020 단계에서, SMI 명령의 발행은 기다려진다. SMI 명령어를 받으면, 프로세서는 프로세서가 모니터 모드에서 모니터 프로그램을 수행시키기 시작하는 2030 단계까지 진행하며, 이는 모니터 모드 특수 프로세서 설정 데이터가 멀티플렉서 2010을 향한 2015 경로를 따른 제어 신호의 결과로써 사용되어지는 원인이 된다. 앞서 언급된 대로, 이것은 스스로 포함하고 있는 데이터의 세트일 수 있으며, 혹은 뱅크화 레지스터에 저장되었던 보안 프로세서 설정 데이터로부터 파생된 일정 부분일 수도 있다.
그 뒤로는, 2040 단계에서, 현재의 상태는 SIM 명령어를 호출하는 도메인으로부터 메모리를 향해 저장되며, 이것은 공유된 CP15 레지스터로부터 도메인과 연관된 프로세서 설정 데이터의 상태의 저장도 포함한다. 일반적으로, 그런 상태의 저장을 위해 남겨둔 메모리 부분이 있을 것이다. 그러면, 2050 단계에서, 상태 지시자는 그 목적 도메인을 위해 일치 한 상태를 포함하는 메모리의 부분을 가리키기 위해 교환된다. 그런 까닭에, 일반적으로, 상태 정보를 저장하는 데 대해서 할당된 메모리의 두 부분이 있을 것이다. 하나는 비보안 도메인을 위해 상태를 저장하는 데 대해서 할당했으며 다른 하나는 보안 도메인에서의 상태를 저장하기 위한 것이다.
상태 포인터가 2050단계에 위치하게 되면, 해당 하는 위치는 2060단계에서 등록 되는 공유된 CP15이며, 이는 목적지 도메인을 위한 데이터 구성 프로세스에 전달되는 데이터를 포함하게 된다. 그런 이유로, 모니터 프로그램은 종료되며, 프로세서는 모니터 모드 이후 목적도메인을 위한 필요한 다른 모드로 전환 하게 된다.
도 37은 본 발명의 일 실시예에 의한 로직 30의 메모리 관리 유닛의 운용에 대해 자세한 설명을 나타낸다. 메모리 관리 로직은 메모리 관리 유닛(MMU) 200과메모리 보안 유닛(MPU) 220으로 구성된다. 코어 10에 의해서 요청되어, 가상의 어드 레스를 부여 받은 어떤 메모리 접근 이라도 패스 234 를 통해 MMU 200으로 도달하게 되며, MMU 200은 지정된 접근 제한 기능을 수행하게 된다. 좀 더 자세히 볼때 이는 가상 어드레스에 상응하는 물리적 어드레스를 지정하고, 각 부분별 특질에 맞추어 접근 허가 권한을 부여 할 수 있도록 한다.
데이터 프로세싱 장치의 메모리 시스템은 보안 메모리와 비보안 메모리로 구성되어 있으며, 보안 메모리는 보안 데이터를 저장하는데 쓰이며, 코어 10에 의해서만 접근이 가능하거나 혹은 주 장비에서만 가능한데, 이 때는 핵심 혹은기타 장비가 보안 모드에서 동작하고, 그에 다른 보안 도메인이 동작하는 조건에 해당한다.
도 37에 표현되어 있는 본 발명의 실시예는, MPU 220내부의 파티션 체커에 의해 수행된 코어10에서 실행되는 어플리케이션 의한 보안 데이터의 접근 시도 정책에 대한 설명을 보충한다. MPU 220은 보안 운영 체제에 의해서 운영되며, 또한 보안 커널로도 불린다.
본 발명의 바람직한 실시예에 대해서, 보안 페이지 테이블 58은 비보안 메모리에 의해 제공이 되는데, 예를 들어서 외부 메모리 56의 비보안 메모리 부분은 해당하는 디스크립터 페이지 테이블 내부에서 지정된 영역으로 각각의 비보안 메모리가 저장된다.
디스크립터는 MMU가 기 지정된접근 조절 기능을 수행할 수 있도록 요구되는 정보의 접근 관리 정보를 수집하는 역할을 하며, 그에 따라 도 37를 참고하여 서술된 실시예는 가상 메모리의 물리적 메모리로의 매핑과, 접근 허가 권한, 그리고 각 각의 영역에 대한 속성의 정보를 제공한다.
게다가, 본 발명의 실시예 의하면, 최소한의 보안 메모리 58은 전체 보안 메모리 시스템에 의해서 제공되는데, 예를 들어서 외부 메모리 56의 보안 구역내부에서, 일부 메모리 영역이 디스크립터에 연계된 테이블 내에서 지정된 메모리 영역으로 다시 지정된다. 프로세서가 비보안 모드에서 동작될 때, 비보안 페이지 테이블은 메모리 접근 관리 용도로써, 상응하는 디스크립터를 구하기 위해 지향된다. 그 동안 프로세서는 보안 모드에서 동작하고, 보안 페이지 상의 디스크립터가 사용된다.
MMU로의 상응하는 페이지 테이블을 추출하는 데는 다음의 절차가 진행된다. 코어10이 가상의 주소를 지정하여 메모리 접근 요청을 수행하는 경우에, 해당되는 페이지 테이블에서 구해지는 물리적 어드레스 부분에 해당하는 가상 어드레스 부분 중의 하나를 저장하는 마이크로 TLB 206에서 찾기가 실행된다. 그래서, 마이크로 TLB206은 그 스스로의 내부에서 부합 되는 가상 어드레스 포션이 있는지 확인 하고, 비교하게 된다. 비교된 부분은 가상 주소의 비트 중 가장 중요한 몇 가지의 기지정된 숫자이며, 비트 수는 페이지 테이블 58내부 페이지의 입상(granularity)에 의존한다. 마이크로 TLB 206 내부의 찾기 기능은 상태적으로 빠른데, 8개와 같은 적은 수의 입력 수를 가지고 있기 때문이다.
마이크로 TLB 206상에서 부합되는 경우가 발생하지 않을 때, 메모리 접근 요청은 패스 242를 거쳐서 주 TLB 208로 향하게 되며, 이는 페이지 테이블에서 구한 몇 가지의 디스크립터로 구성되어 있다.
이후 몇 가지 더 자세한 사항을 볼 것이나, 각각의 비보안 페이지 테이블에서 구한 디스크립터와 보안 페이지에서 구한 디스크립터는 주 TLB 208에서 공존 할 수 있으며, 주 TLB내부의 엔트리는 각각 해당하는 플래그(여기서는 도메인 플래그에 해당) 보안 페이지 테이블에서 구해진 디스크립터가 보안 페이지 테이블 혹은 비보안 페이지 테이블에서 구해진 것인가를 나타낼 수 있다. 어떤 실시예에서도 모든 보안 모드 메모리 접근 권환 요청에서 물리적 어드레스를 지정하는 모든 보안 모드에서, 주 TLB내에서 그러한 플래그의 요구가 없다는 주목할 만하고, 해당 TLB는 단순히 저장 비보안 디스크립터이다.
주 TLB 208에서, 비슷한 검색이 TLB 208 의 특수한 모드에서 수행되는 디스크립터와 관련한 가상 어드레스 부분 모두에 상응하는 메모리 접근 요청에서 제기된 가상 주소의 부분인지 하는 결정을 한다. 그러므로, 만약 코어10이 비보안 모드에서 동작하면, 그와 같은 디스크립터 만을, 비보안 페이지 테이블 로부터 구해진 주 TLB 208에 의해 체크를 받으며, 반면에 만약 코어10 이 보안 모드에서 동작한다면, 보안 페이지 테이블에서 구해진 TLB만이 체크를 받는다.
그와 같은 검사 프로세스의 결과가 주 TLB안에 있다면 접근 관리정보는 해당하는 디스트립터에서 추출되며, 패스 242로 다시 전달 된다. 특별히 가상 어드레스 부분과 그에 해당하는 물리적 어드레스 부분의 디스크립터는 패스 242를 통해 마이크로 TLB 204로 라우트 되며, 마이크로 TLB의 입력값의 저장을 위해서, 접근 권한이 접근 권한로직 202로 로드되며, 영역 특성값은 접근 권한 204로 로드되게 된다. 억세스 접근 권한 202와 영역 특성값 204는 마이크로 TLB를 향해 분산되거나, 혹 은 마이크로 TLB로 합쳐 지게 된다.
이 부분에서 MMU 200은, 마이크로 TLB 206 내부에서 발생 할 것이기 때문에, 메모리 접근 요청을 제어 할 수 있게 된다. 그에 따라서, 마이크로 TLB206 은 해당 메모리로 라우트 하기 위한 시스템 버스 40으로의 패스 238로 출력 될 수 있는 물리적인 어드레스를 생성하며, 이는 TCM36, 캐쉬 38, 기타 등등의 온칩 메모리에 존재 하거나, 혹은 외부 버스 인터페이스 42를 통한 외부 메모리 유닛에 존재 할 수 있다. 동시에, 접근 권한 202는 메모리가 허가를 받은 것인지 결정하게 되고, 그리고 패스 230을 통해 코어 10으로 시그널을 취소하는데, 이는 만약 코어가 특정한 메모리 위치의 접근 권한 동작모드에 지정되어 작동할 수 있도록 하지 않았을 때 이다. 예를 들어서, 특정 부분의 메모리가 보안 모드에 있거나 혹은 비보안 모드에 있을 때, 단지 코어가 관리자 모드에 있을 때 접근이 가능하거나, 그에 따라 혹은 코어 10이 유저 모드 같은 메모리 위치에 있을 때 검색을 하는 경우 억세스 권한 로직202는 코어 10이 현재 적당한 접근 권한을 가지고 있지 않을 때 패스 230으로의 시그널을 취소하게 된다. 이는 메모리 접근을 취소하는 것을 야기 하게 된다. 최종적으로, 영역 속성 로직 204는 특정한 부분의 메모리 속성을 결정하게 되고, 예를 들어서 억세스가 캐쉬를 사용하는가, 버퍼를 사용하는가 등이고, 패스 232와 같은 시그널을 발생 시키는데, 패스 232는 메모리의 데이터가 접근 요청이 캐쉬화 될 수 있는지, 예를 들어서 캐쉬 38 등, 데이터 쓰기 권한 이 버퍼화 될 수 있는가등등 이다.
주 TLB 208에서 어떤 요청이 없을 때, 해석 테이블 로직 210이 해당하는 페이지 테이블 58을 패스 248을 통해 요구되는 디스크립터를 추출해 내기 위해서 사용되고, 그리고 패스 246을 통해 디스크립터는 주 TLB208에 저장하기 위함이다. 비보안 메모리와 보안 메모리는 주 어드레스를 CP15 34 등의 레지스터에 저장되게 되고, 보안 도메인이나 혹은 비보안 도메인 같은 프로세서 코어 10이 동작하는 현재 도메인 등에서 도메인 상태는 비보안 도메인과 보안 도메인 혹은 그 반대의 경우에 발생하는 작업 등이 있을 때, 모니터 모드에 의해 도메인 상태 레지스터가 지정된다. 도메인 상태 레지스터의 내용은 그의 도메인 비트로 이해되기도 한다. 그에 따라, 만약 해석 테이블 작동 프로세스는 수행되고, 해석 테이블 수행 로직 210은 코어 10이 수행되는 도메인에 대해 알게 되고,
그에 따라 베이스 어드레스 해당하는 테이블에 사용된다. 가상 어드레스는 주 어드레스에 요구되는 디스크립터를 구하기 위한 적당한 페이지 테이블 내부에서 적합한 엔트리로의 접속을 위해 주 어드레스로의 오프셋으로 사용되게 된다.
디스크립터가 해석 테이블 운용 로직 210에 의해 추출되고, 주 TLB 208에 위치하면, 접근이 주 TLB내부에서 구해지게 되며, 이전에 설명한 프로세스가 접근 관리 정보를 받기 위해 호출하게 된다. 그리고 마이크로 TLB 206에 이를 저장하며, 접근 권한 로직 202와 영역 속성 로직 204에도 저장이 된다. 메모리 접근은 MMU 200에 의해 수행된다.
기존에 언급한, 수행 방법에 대해서, 주 TLB 208은 보안 페이지 테이블과 비보안 페이지 테이블에 저장을 할 수 있으나, 메모리 접근 요청은 단지 MMU 200에 의해서며, 이는 마이크로 TLB 206에 그 정보가 저장되었을 때 의한다. 수행 방법에서, 주 TLB 208과 마이크로 TLB 208사이의 데이터 전송에 대해서는, MMU 220 하의 파티션 체커 202에 의해 모니터를 하게 되며, 이를 확실하게 하기 위해, 그 환경에서 코어 10은 비보안 모드에서 동작하게 되고, 보안 메모리 내에서 생성되도록 물리적 주소가 작용한다면, 주 TLB 208의 디스크립터로부터 마이크로 TLB 206으로 전송되는 정보에 대한 어떤 권한도 거부하게 된다.
메모리 보안 유닛은 보안된 운영체제에서 관리되는데, 이는 CP15 34 등의 레지스터의 부분 정보를 지정하고 보안 메모리와 비보안 메모리를 판단할 수 있다. 파티션 체커 222는 비보안 모드를 보안 모드로, 코어 10에 의해 접근을 허가할 수 있도록 마이크로 TLB 206으로 전송되는 접근 관리 정보인지 판단할 수 있기 위한 부분 정보를 참고할 수 있게 한다. 좀 더 특별하게, 수행 방법에 있어서, 코어 10이 비보안 모드 운영체계로 동작하는 경우에, 지적하였듯이 도메인 모드에서 도메인 비트로 지정된 도메인 상태 레지스터에서, 파티션 체커 222는 패스 244를 주 TLB 208에서 마이크로 TLB 206으로 물리적인 어드레스를 받기 위해 동작하거나, 보안 메모리 내의 물리적 어드레스 부분에 기인한 가상 어드레스를 통한 물리적 어드레스인지 결정하는 부분에 사용된다. 그러한 환경에서는, 파티션 체커 222는 코어 10에 패스 230을 통해서 발생 지점에 대한 메모리 접근을 방지하는 취소 시그널을 보내게 된다.
파티션 체커 222가 실제로 마이크로 TLB 206에서 저장되는 물리적 어드레스 포션을 방지할 수 있도록 준비되거나 혹은 마이크로 TLB 206에 저장되어 있는 점은주목할 만하나, 그 취소 프로세스의 일 부분은 마이크로 TLB 206에서의 잘못됨 물리적 어드레스를 제거하는 것인데, 예를 들어 마이크로 TLB 206으로 모으는 것 등이다.
코어 10이 보안 모드 혹은 비보안 모드상에서 모니터 모드를 통해 동작 형태를 바꿀 때마다, 모니터 모드는 도메인 상태 레지스터인 CP15를 프로세서의 운영이 바뀔 때마다 표시하기 위해 변경된다. 도메인 사이의 전송 절차의 부분 중 하나로, 마이크로 TLB 206은 보안 도메인과 비보안 도메인 사이의 데이터 전송을 한데로 모으게 되고, 마이크로 TLB 206 상에서의 오류를 만들게 되며, 주 TLB 208에서 접근 정보를 받도록 요구하거나, 혹은 해당하는 페이지 테이블에서 디스크립터를 받을 수 있도록 한다.
위와 같은 접근에 의해, 파티션 체커 222는 코어가 비보안 모드에서 동작을 할 때, 보안 메모리로의 접근을 시도하는 마이크로 TLB 206에서의 접근 정보를 받을 수 있게 되었을 때, 메모리 접근 취소 프로세스가 생성이 되게 된다.
프로세서 코어 10의 어떤 동작 모드에서든 메모리 접근 요청은 지정된 물리적 어드레스로 준비되고, 그와 같은 동작모드에서 MMU 200은 비활성화되며, 물리적 어드레스는 패스 236을 통해 MPU 220으로 향하게 된다. 보안 모드로 동작하는 중에는 접근 권한 로직 224와 영역 특성 로직 226은 요구되는 접근 권한을 수행하게 되며, 영역 속성 조사를 CP15 34내의 부분 정보 레지스터의 해당하는 영역을 구분하기 위한 접근 권한과 영역 정보를 이용하게 된다. 어떤 특정한 모드에서 동작하도록 보안 메모리 내의 일부가, 보안 메모리 내를 검색하도록 되어 있다면, 예를 들어서 보안 특별 모드에서라면, 그와 같은 환경에서 취소 프로세스를 생성하도록 MMU의 접근 권한 로직202가 코어 내에서 접근 권한 로직 224를 야기 시켜서 패스 230을 통해 취소를 실행한다. 비슷한 방법으로, 영역 속성 206은 캐쉬나 혹은 버퍼가 가능한 시그널을 비슷한 방법으로 생성하며, 그 방법은 가상 어드레스로 이루어진 MMU의 영역 속성 로직 204 가 만들어내는 메모리 접근 요청 이다. 그 접근이 가능하다고 가정해 보면 그 프로세스는 패스 240을 거쳐 시스템 버스 40에 도달하게 되며, 그 곳은 해당하는 메모리 유닛이 라우트 되는 곳이다.
물리적 어드레스로 접근 요청이 지정되는 비보안 모드를 위해, 접근 요청은 패스 236을 통해 파티션 체커 222로 라우트 되고, 이는 취소 시그널이 패스 230을 통해 다시 만들어지는 이벤트 내에서 위치가 보안 메모리로 지정되는 물리적 어드레스인가를 결정하기 위한 CP15의 레지스터 34의 부분 정보를 참고하기 위한 부분검사를 수행하게 된다.
위의 묘사된 메모리 관리 유닛의 프로세싱은 도 39와 40에 흐름도를 통해 자세히 표현되어 있다. 도 39는 단계 300에 표시되어 있는 대로 코어 10에서 프로그램에 동작하며 물리적 어드레스를 생성하는 것을 볼 수 있다.
CP 15의 도메인 상태 레지스터 34가 모니터 모드에서 이후 보안 도메인이나 혹은 비보안 도메인 상태로 현재 동작하는 지를 표시 하게 된다. 그 이벤트 상에서 만약 코어가 보안 도메인으로 동작하고 있다면, 마이크로 TLB 상의 가상 어드레스 부분 중의 하나가 가상 어드레스 주소 내에서 일치하는 지, 마이크로 TLB 상에서 검색을 수행하게 된다. 단계 302에서 발생하는 이벤트에서, 프로세스 분기는 단계 312를 향하게 되며, 이는 접근 권한로직 202가 필요한 접근 권한 분석을 수행하게 되는 곳이다. 단계 312는 접근 권한 위배가 있는지, 만약에 프로세스가 패스 230을 통한 접근권한 로직 202을 제기하는 단계 316에 있는 지를 결정하게 된다. 그렇지 않다면, 그러한 접근 권한 위배 상황에서, 프로세스는 단계 314에서 318 까지 진행 되며, 이는 메모리 접근이 진행되는 것으로 볼수 있다. 특별히 영역 속성 로직 204는 필요한 캐쉬 와 버퍼가 가능한 속성등을 패스 232를 통해 발생시키고, 마이크로 TLB 206은 기존에 설명한대로 패스 238을 통해 물리적인 어드레스를 생성한다.
만약 단계 302에서 마이크로 TLB상의 오류가 있는 경우에는, 주 TLB 208에서의 단계 304가 주 TLB상의 필요한 주 디스크립터가 실행 중인지 검사 프로세스가 수행된다. 그렇지 않은 경우에는, 페이지 테이블 업무 프로세스가 단계 306에서 수행되고, 그 반면에 해석 테이블 수행 로직210 은 보안 테이블 모드에서 필요한 디스크립터를 구하고, 이전에 도 37에 설명된 방법과 같다. 프로세스는 단계 308로 진행이 되거나 혹은, 단계 304에서 308로 바로 진행되는데, 이는 보안 디스크립터가 이미 주 TLB 208에 있는 경우에 한한다.
단계 308에서, 옳은 표시가 된 보안 디스크립터를 포함했다는 것을 결정하고, 그에 따라 프로세스는 단계 310으로 진행되는데, 마이크로 TLB는 물리적 어드레스 부분을 포함한 디스크립터의 부분 섹션과 함께 로드 된다. 코어 10이 보안 모드에서 동작하는 관계로, 파티션 체커 222가 부분 검사 기능을 수행할 필요는 없다.
메모리 접근의 나머지 부분인 단계 321로의 진행은 이미 전에 설명 된 부분이다.
비보안 메모리 접근 이벤트에서, 프로세스는 단계 300에서 320으로 진행되는데, 해당하는 물리적 어드레스가 존재하는 비보안 디스크립터로부터 발생되었는지를 검사하기 위해서이다. 만약 그러하다면, 프로세스 분기는 바로 단계 336을 향하게 되고, 이 곳에서 접근 권한 로직 202를 통해 접근 권한이 검사를 받게 된다. 이것은 중요하게 지적되는 부분으로, 만약 해당하는 물리적 어드레스 부분이 마이크로 TLB상에 있다면, 이것은 마이크로 TLB상에 저장되기 전에 기존의 정보가 이미 비보안 정보라는 것을 의미한다. 단계 336에서 338로 진행될 때, 메모리에 대한 어떤 위배가 없다면 이는 338로의 진행을 의미한다. 이는 다른 메모리 단계가 진행 되었을때의 이야기이며, 이는 이후에 설명하기로 한다.
마이크로 TLB에 320상에 발생하는 내용이 없는 경우에, 마이크로 TLB 208상에 비보안 디스크립터가 존재하는가를 단계 320에서 검사하게 된다. 그렇지 않은 경우에는, 단계 324에서 해석 테이블 수행 로직 210상으로 마이크로 TLB 208에 필요되는 비보안 디스크립터가 비보안 페이지 테이블에서 로드 되었는지를 검사하게 된다. 프로세스는 단계 326으로 진행하게 되고, 혹은 바로 단계 322에서 326으로 진행되는데, 이는 마이크로 TLB 208에서 322에 대한 호출이 있는 경우에 해당한다. 단계 326에서는 주 TLB가 올바르게 매겨진 비보안 디스크립터를 가상 어드레스에서 받아 왔는지 검사하고, 메모리 접근 요청으로부터 가상 어드레스를 정상적으로 받아 왔는지 단계 328에서 파티션 체커 222를 통해 검사하게 된다.(디스크립터 내부에서 물리적 어드레스가 주어진다).이는 또한 비보안 메모리로 위치하게 된다. 만약 그렇지 않다면, 예를 들어서 물리적 메모리가 보안 메모리에 위치 하게 될 때, 단계 330에서 보안 위반이 있는가를 확인하고 프로세스는 단계 332로 진행하는데, 이는 보안/비보안 오류가 파티션 체커 222에 의해 제기되어 취소 프로세스가 동작한다.
파티션 체커 로직 222는 보안 오류가 없는지 확인하고, 단계 334로 진행하게 되며, 마이크로 TLB 상의 해당하는 부분의 마이크로 TLB로 로드되어 물리적인 어드레스 부분을 포함하고, 단계 336에서 이전에 설명한 방법대로 메모리 접근을 시도 하게 된다.
도 40에 나온대로 물리 메모리는 접근 요청을 하게 된다. 기존에 설명한 대로, 이와 같은 시나리오에서, MMU 200은 비활성화 되고, CP 15의 MMU활성화 유닛에 의해서 선택적으로 재수행된다. 이 세팅은 모니터 모드에 의해 수행된다. 그래서, 단계 350에서는 코어 10이 물리적인 어드레스를 MPU 220을 통해서 패스 236을 지나 만들어 내게 된다. 그러면 단계 352에서 MPU는 해당 권한을 검사하여 메모리 접근 요청이 현재의 운용 형태, 예를 들어서 관리자, 유저, 모드 등을 확인한다. 그리고, 만약에 운용 모드가 비보안 모드인 경우에는, 파티션 체커 222는 또한 단계 352로 이동하여 물리적 어드레스가 비보안인 상태로 지정된다. 단계 354에서는 예를 들어서 메모리 관리 권한에서의 오류가 있는지 확인하게 되고, 비보안 모드에서의 문제가 없는지도 구분하게 된다. 만약 이 중의 어느 하나의 위반이 발생하는 경우에는, 단계 356에서 MPU 220쪽으로 위반 경고 메시지를 보내게 된다. 본 수행 방법에서는 두 가지의 취소가 발생하는데, 선택적인 시그널이 접근 권한 금지나 혹은 보안 금지 등이 이에 해당한다.
단계 354에서 다른 보안 오류가 발견되지 않았다면, 358로 진행하게 되고, 메모리 접근을 통해 물리적 어드레스가 발생하였는지 구분하게 된다.
본 수행 방법에서는 모니터 모드만이 물리적 어드레스를 직접적으로 준비 할 수 있다고 설명하고 있고, 그에 따라 모든 MMU 200이 관련된 경우에는 이전에 설명한대로 가상 메모리 어드레스가 물리적 메모리 어드레스를 통해 가능해 진다는 것을 이미 설명해 놓고 있다.
도 38은 가상 메모리 어드레스가 지정된 형태에서의 선택적인 메모리 관리 형태의 모습을 보여 주고 있다. 그리고 이는 물리적 어드레스가 직접적으로 메모리 관리에 관여 하지 않음을 보여준다. 이 시나리오에서, MPU 220은 필요한 부분이 아니며, 대신에 파티션 체커 220이 MMU 200과 같이 운용되고 있다. 이는 도 37, 39에서 설명한 것과 같은 내용으로 볼 수 있다.
다른 형태의 작업들도 가능 하다는 것이 주목할 만 하다. 예를 들어서 비보안 모드에서는 두 개의 MMU가 동시에 작업이 가능하며, 하나는 보안 모드에서, 또 하나는 비보안 모드에서도 작동할 수 있게 된다. 예를 들어서 도 37의 MMU 220은 완전한 다른 MMU와 교체 될 수 도 있다. 이런 경우에서는 플래그의 사용이 보안 디스크립터와 비보안 디스크립터를 구분할 수 있는 기준으로 사용되며, 주 TLB내에 비보안 데이터와 보안 데이터 저장의 구분을 도와주게 된다. 비보안 도메인이 코어에 저장되도록 시도할 때, 또한 파티션 체커가 동작하여 그 내용을 파악한다.
만약에 그 대신에 모든 메모리 억세스가 물리적인 어드레스를 요구하는 경우에는, 두 개의 MPU상에서 그 처리를 받아들여 하나는 보안 모드, 다른 하나는 비보안 모드로 동작하게 된다. 비보안 모드는 파티션 체커를 이용한 작업에 들어가게 되며, 보안 모드는 비보안 모드 데이터가 들어 갈 수 없도록 처리 된다.
도 37에서 이미 제공한 기능에 관련해서, 파티션 체커 222는 해석 테이블 작업 로직 210에 대한 활성화 정책을 검사하게 된다. 특별히, 코어가 현재 비보안 도메인 상에서 작업되고 있는 중이라면, 파티션 체커 222는 로직 210이 데이터를 검색하고 있는 동안에 비보안 페이지보다는 보안 페이지 상에서 동작하는지를 검사하게 된다. 로직 210이 일반적으로 가상 어드레스의 특정 비트를 검사하여 두 개의 모드를 전부 검색하기 때문에, 예를 들어서 파티션 체크가 활성화된 상태에서는 보안 페이지 테이블에서의 베이스 어드레스 보다는 비보안 페이지 베이스 어드레스에 로직 210의 검사가 수행된다.
도 41은 파티션 체커 222가 비보안 모드상에서 동작하는 것을 보여 주고 있다. 일반적은 동작 모드에서 비보안 페이지 테이블은 비보안 메모리 상에서만 매핑되는 것을 볼 수 있다. 그러나 소프트웨어 공격의 경우에는 디스크립터는 표현된 대로 비보안과 보안 메모리 상에서 간섭을 받게 된다. 그러므로, 도 41에서 고려되는 것처럼, 단계 370, 372, 374 등에서 혹은 보안 영역인 376, 378, 380 등에서의 페이지를 보안 할 수 있도록 비보안 디스크립터가 동작한다. 만약 가상 어드레스가 메모리 접속 요청의 일부분이라고 한다면, 물리적 어드레스는 보안 메모리 역역에 물리적 어드레스로 응답이 되고, 예를 들어서 메모리 영역 376이 도 41에 표시된 경우처럼, 파티션 체커 222는 금지된 접근을 취소 할 수 있도록 생성이 된다. 반대로, 만약 물리적 어드레스가 디스크립터에서 추출되어 비보안 메모리 영역으로 포함이 된다면, 영역 374의 예 처럼(도 41) 접근 관리 정보가 마이크로 TLB 206으로 로드되어 순순하게 보안 영역 374로 넘어가게 된다. 그러므로, 비보안 메모리 영역 374는 보안 영역 376, 378, 380이 발생할 수 있으나, 접근은 불가하게 된다. 고로, 이것은 주 TLB 208 이 비보안 페이지 테이블이 간섭받거나 할 때 나타나며, 마이크로 TLB는 단지 물리적인 어드레스로 비보안 메모리 영역에서 접근이 가능하도록 물리적 메모리 부분을 포함할 뿐이다.
기존에 설명된 대로, 본 실시예에서 보안 메모리와 비보안 메모리는 가상 어드레스를 지정할 수 있으며, 보안 페이지와 비보안 메모리 사이 혹은 그 반대의 경우에 선택적으로 모드를 바꿀 수 있도록 하고 있다. 비보안 모드 상태에서, 비보안 페이지는 해석 테이블 로직 210의 영향을 받으며, 도 42는 이 부분에 대한 예를 도1에 나와 있는 외부 메모리 56의 예와 같이 들고 있다. 이는 비보안 페이지 테이블 395에서 CP15의 레지스터 34를 참고로 베이스 어드레스 397로 인식되고 있는 것이다. 비슷한 경우로, 보안 메모리 400의 경우에는, 도 1의 외부 메모리 56내부의 것처럼, 보안 페이지 테이블 405는 복제된 CP 15의 레지스터 34 내부에서 제동되면 이는 베이스 어드레스 407에 근간을 두고 있다. 각각의 디스크립터는 비보안 페이지 테이블 395 내부에서 비보안 페이지 메모리 390으로, 그 반면에 보안 페이지 테이블 405 내부에서 각각의 디스크립터는 정의를 내릴 수 있게 된다. 게다가 이후에 설명한 부분이나, 공유 메모리 영역 410내의 특정 메모리 영역은 비보안, 보안 메모리 모드 양쪽에서 접근이 가능하다.
도 43은 마이크로 TLB 208이 도메인 플래그 425를 이용해 본 실시예에 대한 실행을 하는 것을 설명하고 있다. 디스크립터 435는 보안 페이지 혹은 비보안 페이지 테이블에서 구분이 된다. 이는 검색 프로세스가 수행되었을 때, 코어 10에 해당하는 특정 도메인이 검사 되었을 때의 경우이다. 도 43은 코어가 보안 도메인 상에서 동작하는 것에 대한 예를 보여주고 있고, 보안 모드에 해당한다. 도 43에서 보듯이, TLB 208 검색이 수행되었을 때, 이는 디스크립터 440이 무시 되었다는 것을 의미하며, 디스크립터 445가 검사 프로세스에 사용되었음을 의미한다.
귀환 방법에서 프로세스 아이디 430은 또한 ASID플래그라고 명명되며, 이는 특정 페이지 테이블에서 추출된 디스크립터를 의미한다. 그에 따라 프로세스 P1, P2, P3은 각자의 메모리 상의 페이지 테이블에서 추출되며, 이후에 비보안 모드와 보안 모드 양쪽에서 전체적으로 분류되어 P1, P2, P3는 보안 및 비보안 도메인 상에서 작동한다. 도 43에 도시된 바와 같이, TLB 208이 필요할 시에는 ASID플래그도 같이 동작하는 것을 볼 수 있다.
도 43의 예에서 보안 도메인을 볼 수 있듯이, 프로세스 P1이 수행 중에는, 주 TLB 208에서의 450개의 엔트리가 검사 프로세스 내에서 구분이 되며, 메모리 접근 요청에 따라 가상 메모리의 해당하는 부분에 대한 검사가 종료된 이후에, 실행 혹은 오류가 나타나게 된다. 만약 실행시에는, 해당 접근 관리 정보가 마이크로 TLB 206 상에서 접근 권한 로직 202로 정보를 보내고, 영역 특성 로직 204로 접근을 하게 된다. 그 외에 오류가 발생하는 경우에는 해석 테이블 수행 로직 210이 주 TLB 208로의 디스크립터를 보안 프로세스 P1으로부터 수행하게 된다. TLB의 내부에는 많은 관리 기술이 포함되어 있으며, 새 디스크립터가 생성된 경우에는 주 TLB 208로 저장이 된다. 만약 TLB가 포화 상태라면, 새 디스크립터에 대해 기존에 접근 한 방법으로 재사용하거나 혹은, 일부 디스크립터를 제외하여 공간을 확보할 수 있도록 한다.
보안 커널은 보안 모드의 동작시 사용되며, 전체적으로 비보안 운용 체제에서 개발되기도 한다. 그러나, 특정한 경우에서 보안 커널은 비보안 운영 체제에서 비보안 디스크립터를 사용하기 위해 개발되기도 한다. 확실히, 이는 보안 어플리케이션을 비보안 데이터로 접근할 수 있도록 하며, 단지 가상 어드레스를 아는 것만으로도 가능하다. 이 경우에는 보안 가상 매핑과 비보안 가상 매핑이 특정한 ASID상에서 제외되는 것을 기존에 가정하고 있다. 이런 시나리오에서는, 도메인 플래그 등의 태그가 보안/비보안 디스크립터를 구분하지는 않는다. TLB의 검색은 대신에 모든 가능한 디스크립터를 찾는데 이용된다.
본 실시예에서 주 TLB의 설정의 선택은 이전에 구성된 분리된 보안 및 비보안 디스크립터에서 CP 15의 관리 레지스트에서 제공된 특정한 비트에 의해 구분이 된다. 본 실시예에서 이 비트는 단지 보안 커널에 의해 정해진다.
보안 어플리케이션이 직접적으로 비보안 가상 어드레스를 사용할 수 있도록 한 경우에, 비보안 스택 포인터가 보안 도메인 상에서 가능하게 된다. 이는 비보안 레지스터의 값을 복제하여 쓸 수 있도록 한다. 이는 비보안 어플리케이션이 보안 어플리케이션에 의해 이해된 스킴(scheme)에 따라 파라미터를 저장할 수 있도록 한다.
상술한 바와 같이, 메모리는 보안과 비보안으로 구분이 되며, 이 구분은 CP 15 레지스터의 34의 보안 커널에 의해 결정된다. 이 기본적인 구분 방법은, 영역 접근 권한에 의해 MPU 장치와 함께 지정된다. 그에 따라 메모리는 각각의 영역으로 구분되며, 각각의 영역은 선택적으로 각각의 주 어드레스, 사이즈, 메모리 속성과 접근 권한을 가지게 된다. 게다가 오버랩 영역이 프로그램된 경우에는, 상위 영역의 속성이 가장 높은 우선권을 가진다. 게다가, 본 발명의 실시예에 의하면, 새 영역 속성은 보안 메모리 비보안 메모리에 해당하는 지정을 할 수 있도록 한다. 이 새 영역 속성은 보안 커널에서 보안 메모리로 보안되는 부분을 지정하여 보안 커널에서 사용할 수 있도록 한다.
부트 단계에서, 처음 부분은 도 44에서 설명한 대로 수행이 된다. 이 초기 부분은 메모리 460에 할당되는 비보안 부분이며, 비보안 운영체계와 비보안 어플리케이션을 위해 쓰인다. 이 양은 전체 부분에서 비보안 영역으로 구분된다. 이 정보는 이후 비보안 운영체계에서 관리 측면으로 사용된다. 나머지 메모리 462, 464 등은 보안 메모리로 운영체계에 의해 결정된다. 비보안 체계의 전체적인 보안을 위해서, 비보안 메모리는 보안 특권 모드 상에서만 수행된다. 고로, 보안 어플리케이션은 이 부트 단계 부분에서 메모리 460이 비보안 운영체계 안에서 사용 가능한지 확인하고 메모리 462는 보안 커널에서 464는 보안 어플리케이션에서 사용 가능 할 수 있게 한다.
부트 단계가 수행되면, 비보안 메모리 460의 부트 단계는 비보안 운영 체계에 의해 수행되며, MMU 200을 사용하여 일상적으로 비보안 페이지에서 지정될 수 있는 일련의 작업을 수행하는데, 이는 도 45에 표현되어 있다.
보안 어플리케이션이 비보안 어플리케이션과의 메모리 공유를 요청하는 경우, 보안 커널은 부분적으로 메모리를 기 도메인에서 다른 쪽으로 전송할 수 있게 한다. 고로, 도 46에 설명되어 있는 것처럼, 페이지 변환은 보안 페이지 466처럼 공유 메모리로 사용될 수 있다.
메모리의 부분이 변경되는 경우에, 마이크로 TLB 206은 통합되어야 한다. 이는 이 시나리오에서 비보안 접근이 발생하는 경우에, 마이크로 TLB 206상에서 에러가 발견이 되면, 새로운 디스크립터가 TLB 208상에서 로드 된다. 이 새로운 디스크립터는 파티션 체커 222를 검사하여 MPU 220의 시도를 새로운 마이크로 TLB 206상에서 받을 수 있도록 하고, 새로운 메모리 영역을 지정하게 한다.
본 실시예에 있어서, 캐쉬 38은 가상 인덱스와 물리적인 태그를 소유하게 된다. 그에 따라 캐쉬 38의 억세스가 수행되면, 마이크로 TLB 208상에서 먼저 검사가 수행이 되고, 접근 권한과 보안, 비보안 권한이 검사된다. 캐쉬 38에서는 보안 데이터는 저장 될 수 없으며, 비보안 어플리케이션에서 이를 수행한다. 캐쉬 38에 대한 접근은 파티션 체커 222에서 수행이 되며, 이는 비보안 모드 상에서 수행 되어 보안 데이터의 접근을 차단한다.
그러나 한가지 문제가 발생할 수 있는데, 비보안 도메인 상에서의 어플리케이션은 캐쉬를 부적절하거나, 깨끗하거나 혹은 정리해야 할 경우가 있다. 이는 운영체제에 영향을 주지는 않는다. 예를 들어서 운영 체계가 캐쉬 38을 초기화 하지 않고 사용하는 경우에 오염된 보안 데이터는 외부 메모리로 교체 된다. 선택적으로 보안 데이터는 캐쉬에 태그된 상태로 존재하며, 다른 형태로 관리된다.
실시예에서 만약 "어드레스에 의해 무효로한 선형" 동작이 비보안 프로그램에 의해 수행된다면, 물리적 어드레스 파티션 체커 222에 의해 수행이 되고, 캐쉬 라인이 보안 캐쉬 라인인 경우에는 "클린 및 무효" 동작 모드로 수행이 된다. 이는 시스템의 보안을 위함이다. 게다가 본 실시예에서 "인덱스에 의한 무효"동작은 비보안 프로그램에서 수행되어 인덱스에 의한 무효 동작으로 바뀐다. 비슷하게, "모두 무효" 동작은 비보안 프로그램에서 "클린 및 모두 무효" 동작으로 바뀐다.
더욱이, 도 1을 참고하면, TCM36으로의 모든 접근(DMA32)은 마이크로 TLB 206에 의한다. 고로 DMA32가 모든 가상 어드레스를 물리 어드레스로 변환하는 경우에는, 기존의 플래그가 주 TLB상으로 접근할 수 있도록 코어 10에서 제기된 접근 요청에 의해 검사를 수행한다. 그리고 나중에 언급하겠지만, 외부 버스 70에서 복제된 외부 체커가 동작하며, 선택적으로 아비터/디코더 블록 54에 위치한 DMA32로의 직접적인 접근이 가능한 등의 모든 접근에 대한 검사를 수행한다. 그리고, 특정한 실시예에서 CP 15 레지스터 34가 DMA 32가 비보안 도메인 상에서 쓰일 수 있는가를 검사하며, 이 비트는 단지 보안 커널에서 특정 모드로 수행될 때만 사용이 가능하다.
TCM 36을 고려할 때, 보안 데이터가 TCM 36에 존재하는 경우에는, 이는 조심해서 다루어야 한다. 예로서, 비보안 운영체계에서 물리적 어드레스의 범위가 TCM 36 메모리인 경우에는 외부 보안메모리 부분도 겹쳐지게 된다. 만약 운영체계가 보안 모드로 전환이 된다면, 보안 커널은 데이터를 중첩되는 부분에 저장하게 되고, 이는 TCM 36이 높은 우선권을 가지게 되어 다양한 이점의 보안 영역이 매핑되어 비보안 영역의 물리적 메모리에 위치하게 된다. 이것은 비보안 운영 시스템에서 보안 데이터를 접속할 수 있게 하며, 파티션 체커가 비보안에 대한 취소를 수행할 수 없게 한다. 고로 정리하자면 만약 TCM이 일반 로컬 램이고 스마트 캐쉬가 아닌 경우에는 비보안 운영체계는 보안 영역의 데이터를 만약 TCM의 물리적 어드레스가 이동할 수 있다면 접근이 가능하다는 것이다.
이와 같은 시나리오를 방지하기 위해, 관리 비트가 실시예 내의 CP 15 레지스트 34에 대해 단지 특정 모드에서만 접근이 가능하도록 되어 있다. 이는 두 가지 설정으로 구성되어 있는데, 첫 번째 구성에서는 비트 수를 1로 지정하여, TCM이 단지 콘트롤 레지스터를CP 15 레지스터 34를 통해서 정의 되어 있지 않은 예외가 허용되는 것을 방지하기 위함이다. 두번 째 설정은 관리 비트를 0으로 설정하여, 비보안 운영 체계에서 TCM이 관리를 할수있도로 하게 한다. TCM을 통해 보안 데이터가 저장 할 수 없도록 막는 것이다. 고로 보안 접근이 허용되는 경우에, TCM 어드레스 영역에서는 따로 검사가 수행되지는 않는다.
기본적으로 TCM은 비보안 운영 체계에서만 이용되며, 이 시나리오에서는 비보안 운영 체계는 바뀔 필요를 가지지 않는다.
상기한 바와 같이, 파티션 체커 222는 이 실시예에서 외부버스 70을 통한 블록을 수행하여, 추가적인 파티션 체커가 정책 접근을 메모리를 통해 다른 장치로 하는 것을 관리하며, DSP50이나 DMA 콘트롤러 52가 외부 버스로 이중 연결된 것 등이 이에 해당한다. 확실히 다른 실시예 등에서는, 물론 이후에 언급하겠지만, 메모리 관리 유닛 30 등과는 다른 형태의 외부 접근에 대한 블록 감시에 대한 기능을 갖는다. 이러한 실시예에서는, 파티션 체커가 메모리 관리 로직 30의 부분이며, 이런 경우에 체커는 외부 버스에 이중 연결된 파티션 체커로 이후에 동작하게 된다.
상기한 바와 같이, 전체 메모리 시스템은 몇 개의 메모리 유닛으로 구성되어 있으며, 외부 버스 70에도 지정될 수 있는데, 그 예로 외부 메모리 56, 부트롬 44, 버퍼 레지스터 48, 62,66 등이 이에 해당하고, 외부 연결장비들, 예를 들어서 스크린 드라이버 46, I/O 인터페이스 60, 키 저장 유닛 64 등이다. 이러한 메모리 시스템의 다른 부분들은 보안 메모리로 지정될 수 있으며, 예를 들어 위의 장비들이 모두 보안 유닛으로 지정될 수 있으면, 이러한 경우에는 코어 10을 통한 외부 관리 로직 30이 개입하여 이에 대한 관리를 해야 한다.
도 47은 어떻게 추가적인 파티션 체커 492가 외부 버스에 이중 연결되어, 외부 장치들에 의해 사용되는 지를 보여 주고 있다. 외부 버스는 장치의 종류에 따라서 메모리의 종류를 지정 받는데, 예를 들어서 470,472 등이며, 이러한 메모리 접근 요청은 외부 장비에서 지정되는 시그널에 의해 특정 모드나 혹은 다른 모드 상에서 사용이 가능하도록 한다. 본 발명의 실시예에 있어서, 도메인 시그널은 선택적으로 하드웨어의 레벨을 설정하여, 그 설정에 맞게 패스 490을 통해 외부 버스로 해당하는 작업을 수행한다. 도 47의 목적은, 패스 490이 분리적으로 패스 488과 다른 형태로 동작하는 것을 표시해 준다.
이 도메인 시그널에서, 또한 S 유니트로 지정되는 것이 장치의 메모리 접근을 운영체제 상에서 보안 도메인과 비보안 도메인 상에서 관리해 준다. 이 정보는 파티션 체커 492를 통해 외부 버스로 연결된다. 외부 버스 492는 또한 부분 정보 구분을 할 수 있는 메모리 영역의 보안, 비보안 부분에 대한 관리를 할 수 있다. 그리고 이는 한 개의 장치가 다른 메모리의 보안 영역에 접근하는 데 있어서 S 비트가 보안 메모리 모드로 지정되어 있는지 확인하는 기능을 가지고 있다.
기본적으로, S 비트는 기존에 존재하는 비보안 장치들 예를 들어 도 47에 나와 있는 외부 장비들에 대한 것과 같은 것에는 결코 외부 접근을 허용하지는 않는다. 또한 파티션 체커 492는 보안 메모리의 일부분으로써, 버퍼 482, 486에 등록되어, 스크린 드라이버 480과 I/O 인터페이스 484, 그리고 외부 메모리 474내의 레지스터를 관리한다.
도 47상에서 아비터 블록 476은 마스터 디바이스의 메모리 접근에 대한 관리를 수행한다. 예를 들어서 장치 470, 472 등이나, 이는 서비스 메모리 요청을 하는 장비이며, 하나의 요소가 다른 요소와 결합된 상태이기도 하다.
도 48은 다른 실시예에서, 파티션 체커 492가 제공되지 않았을 때, 대신 다른 메모리 영역, 즉, 474, 480 484 등이 정책에 따라 준비되어 예를 들어 스크린 드라이버 480등이 보안 메모리로 지정되는 등의 역할을 하게 된다. 이에 S 비트는 따로 설정 되지 않으며, 메모리 접근은 허용되지 않는다. 파티션 체커 492가 다른 메모리 접근 관리에 사용이 되기도 한다.
위의 도 47과 48의 설명에서, S 비트는 운영 체계가 보안 혹은 비보안 도메인 상의 메모리 접근에 대해서 구분하는 역할을 한다고 설명 했다. 다른 관점에서, S 비트는 메모리 접근 요청에 속하기도 한다.
본 실시예에 있어서, 도 37과 38을 참고 했을 때, 가상 메모리를 물리적 메모리로 수행할 때 사용이 된다. 단일 MMU는 단일 페이지 테이블로 구성되어 있고, 도 49에 표현된 대로, 물리적인 공간은 보안과 비보안 영역으로 구분 지어진다. 물리적 어드레스 2100이 0어드레스에서 시작해서 Y어드레스로의 메모리 유닛을 메모리 관리 시스템에서 볼 경우, 외부 메모리 56이 이에 해당한다. 각각의 메모리 유닛을 위해서, 어드레스가 가능한 메모리 항목은 두 개의 부분으로 나뉘는데, 첫번째 2110 부분은 비보안 메모리 유닛으로, 두 번째 2120부분은 보안 유닛으로 나뉜다.
이러한 접근 방법에서, 물리적인 어드레스는 각각의 도메인으로 접근이 불가하고 이러한 차이에서 운영 체계가 이들 메모리를 사용하면서 운용된다. 운용 체계가 보안 모드에서 수행되고 있을 때, 비보안 도메인에 대한 정보는 고려 되지 않으며, 대신에 보안 운영 체계가 동작하나 존재하지는 않는다.
다른 이슈로, 비보안 운영체계는 외부 메모리 0에서 X로 도착하는 어드레스 공간을 관리 하게 된다. 그리고 비보안 운영체계에서 보안 커널과 특별한 형태로 나타나는 보안 메모리는 X+1 에서 Y로 까지 발전하게 된다. 반대로 보안 커널에서 어드레스 0에서 시작하는 메모리 체계가 나타나지 않는 경우는, 운영 체계에서 이를 거부하게 된다.
위의 고려를 좀더 완화할 수 있는 방법으로는 보안 메모리 영역을 완벽하게 비보안 운영체계의 시점에서 가리는 방법이 있다. 이는 보안 커널에서 보안 도메인과 비보안 운영 체계를 비보안 도메인에서 보이는 어드레스 공간으로 하여 외부 메모리를 어드레스 0에서 시작하게 하는 것으로 도 51에 표현되어 있다. 여기에 물리적 어드레스 2200이 페이지 레벨에 맞게 구분되어 보안과 비보안 조직으로 구분된다. 도 51에 나와 있는 예로써, 외부 메모리는 4개의 영역으로 구분되어 있는데, 2210, 2220, 2230, 2240 등이나, 두 개의 보안 메모리 영역과 두 개의 비보안 메모리 영역이다.
가상 주소와 물리적 주소의 공간의 전송에 대해서 두 개의 다른 층의 어드레스가 첫 번째 테이블에서 다른 테이블로 준비되며, 그로 인해, 프로세서가 보안 도메인인지 비보안 도메인인지에 대한 내용을 확인 할 수 있다. 좀 더 독특하게, 도 51에 나와 있는 대로, 두 개의 보안 메모리 영역인 2210 과 2230은 물리 어드레스 공간 상에서 단일 영역 2265 쪽으로 메모리 테이블 2250상에서 존재하는 보안 메모리 내의 디스크립터를 통해서 데이터를 보내게 된다. 프로세서에 관해 운영 체계가 고려 될 때, 중간에 물리적인 어드레스가 존재 하며, 이는 MMU 를 가상 어드레스로 변환 하여 중간 어드레스 공간에 배치한다.
비슷하게 중간 어드레스 공간 2270은 비보안 도메인에 포함될 수 있으며, 두 개의 비보안 메모리 영역인 2220과 2240은 물리적 어드레스 공간에서 매핑되어 비보안 메모리 공간인 2275에서 중간 어드레스 공간을 비보안 도메인으로 해당 디스크립터에 의해 페이지 테이블 2250내의 비보안 페이지로 변환한다.
실시예에 있어서 변환된 가상 어드레스를 물리적 어드레스로, 중간 어드레스를 통해서 두 개의 나누어진 MMU로 변환 하는 것은 도 50A에 표현 되어 있다. 각각의 MMU 2150과 2170은 비슷한 도 37의 MMU 200과 비슷한 내용이다. 그러나 도의 자 세한 부분은 50A에는 현재 삭제되어 있다.
처음의 MMU 2150의 마이크로 TLB 2155는 주 TLB 2160과 해석 테이블 수행 로직 2165가 동시에 두 번째 MMU 2170은 마이크로 TLB 275를 포함하고 있으며, TLB 2180과 해석 테이블 수행 로직 2185 등이 주 요소이다. 처음 MMU는 비보안 도메인에 의해 수행이 되며, 혹은 보안 커널이 프로세서가 보안 모드일 때도 동작하게 된다. 그러나 이 실시예에서는 MMU는 단지 보안 커널이 모니터 프로그램에 의해서만 수행이 된다.
프로세서 코어 10이 메모리 접근을 요청하면, 패스 2153을 통해 가상 어드레스를 만들어 낸다. 마이크로 TLB 2155는 몇 개의 가상 주소 부분을 저장하게 되며, 주 TLB 2160에 의해서 페이지 테이블이 받아져 처음 연결된 페이지 테이블로 데이터가 전송된다. 만약 마이크로 TLB 2155에서 데이터가 검출 되는 경우에는 마이크로 TLB 2155는 패스 2157에서 중간 어드레스가 가상 주소로 2153 패스를 통해 진행이 된다. 그리고 만약 해당하는 가상 어드레스 부분이 중간 어드레스 부분에서 마이크로 TLB 2155 중간 어드레스는 패스 2157을 통해 지나가게 된다.
만약 마이크로 TLB 2155에 다른 접근이 없다고 한다면, 주 TLB 2160을 포함하고, 그리고 나서 해석 테이블 수행 로직 2165가 이미 지정된 페이지 테이블에서 요구되는 디스크립터를 요구하기 위해 사용이 된다. 이는 MMU 2150에 의해서 수행된다.
일반적으로, 페이지 테이블이 각각의 프로세스에 연관이 되어 있다면, 중간 베이스 어드레스는 해석 테이블 수행 로직 2165에서 접근을 가능하게 하고, 예를 들어서 적당한 레지스터를 CP 15에서 레지스터 34를 이용하게 된다. 그에 따라서 해석 테이블 수행 로직 2165는 중간 어드레스를 패스 2167을 통해 중간 어드레스를 이슈화 하여 적당한 페이지 테이블에서 디스크립터를 요청하게 된다.
두번째 2170 MMU유닛은 모든 중간 어드레스 결과를 마이크로 TLB 2155를 통해 패스 2157로, 혹은 해석 테이블 수행 로직 2165를 패스 2167을 통해서, 그리고 마이크로 TLB에서 이슈된 물리적 어드레스를 패스 2192 메모리로 야기 되는 데이터를 데이터 버스 2190을 통해서 받게 된다. 중간 어드레스를 2157패스를 통해 받는 과정에서, 요구 되는 데이터를 코어10으로 전송하게 되며, 중간 어드레스는 패스 2167을 통해서, 이는 요구되는 디스크립터를 MMU 2150으로 주 TLB 2160을 통해 전달하게 된다.
마이크로 TLB 2175에서 오류가 나는 경우에는, 주 TLB 2180에서 참고가 되고, 만약에 주 TLB상에서 요구가 있는 경우에는, 요구되는 중간 어드레스부분과 해당하는 물리적 어드레스 부분을 패스 2192를 통해 요구하게 된다. 그러나 마이크로 TLB 2175나 혹은 주 TLB 2180이 없는 경우에는, 해석 테이블 수행 로직 2185가 패스 2194를 통해 결과를 도출하게 되고, 이 차 MMU 2170을 통한 페이지 테이블 결과를 도출한다. 이 두번 째 페이지 테이블의 종류들은 중간 어드레스 부분에서 물리적 어드레스 부분으로 변환하는 것으로, 일반적으로 최소한 한 대 이상의 디스크립터가 작동하여 그 물리적 어드레스를 비보안 도메인에서 페이지 테이블을 보안 도메인에서 하나 이상의 페이지 테이블을 구현하게 된다. 요청이 2194를 통해 전달될 때, 해당하는 디스크립터를 두 번째 페이지 테이블에서 결과를 내어 두번째 MMU 2170에서 주 TLB 2180내의 저장을 하게 된다.
도 50A의 구현 사례에서 보듯이 특별한 예에서 볼 수 있는 부분이 아래와 같이 표현되어 있다. 그리고 변수들의 표시는 IA는 중간 어드레스, 그리고 PA는 물리적 어드레스를 표현한다.
1) 코어가 VA = 3000로 함 (IA=5000, PA=7000)
2) MMU 1의 마이크로 TLB의 미스
3) MMU 1의 주 TLB의 미스
페이지 테이블 1 기저 주소 = 8000 IA [PA=10000]
4) MMU 1의 변환 테이블 워크 로직은 페이지 테이블 검사를 수행한다 IA = 8003으로 함.
5) MMU 2의 마이크로 TLB의 미스
6) MMU 2의 주 TLB의 미스
페이지 테이블 2 기저 주소 = 12000 PA
7) MMU 2 변환 테이블 워크 로직은 페이지 테이블 검사를 수행한다.
IA = 12008으로 함. "8000IA = 10000PA" 페이지 테이블 데이터로 복귀
8) MMU 2의 주 TLB에 저장됨
9) MMU 2의 마이크로 TLB에 저장됨
10) MMU 2의 마이크로 TLB가 히트됨
PA =10003으로 함. "3000VA=5000IA" 페이지 테이블 데이터로 복귀
11) MMU 1의 주 TLB에 저장됨
12) MMU 1의 마이크로 TLB에 저장됨
13) MMU 1의 마이크로 TLB가 히트됨. 데이터 억세스를 수행하기 위하여 IA= 5000로 함.
14) MMU 2의 마이크로 TLB의 미스
15) MMU 2의 주 TLB의 미스
16) MMU 2의 해석 테이블 수행 로직에서 페이지 테이블 검색을 수행. PA = 12005으로 함
17) MMU 2의 주 TLB에 저장됨
18) MMU 2의 마이크로 TLB에 저장됨
19) MMU 2의 마이크로 TLB가 히트됨. 데이터 억세스를 수행하기 위하여 PA = 7000으로 함
20) 물리적 데이터 어드레스 7000이 코어로 복귀
이후 코어는 메모리 접근 요청을 하게 된다. (VA 3001)
1) 코어가 VA=3001로 함
2) MMU 1의 마이크로 TLB가 히트됨. MMU 2로 IA5001가 요청됨
3) MMU 2의 마이크로 TLB가 히트됨. 메모리로 PA7001이 요청됨
4) PA7001의 데이터가 코어로 복귀.
위의 예는 각각의 마이크로 TLB와 주 TLB의 각각의 MMU에서 예를 가장 "최악의" 시나리오의 예로 볼 수 있다. 일반적으로 그것은 최소한의 마이크로 TLB 혹은 주 TLB에서 데이터를 받는 시간을 제거 하는데 사용이 된다.
도 51로 돌아와서, 페이지 테이블 2250의 두 번째 세트에서 특정한 영역의 물리적인 어드레스 공간이 제공이 되며, 구현 방법에 있어서 첫 번째 페이지 테이블은 두 가지로나뉘는데, 하나는 보안 페이지 테이블과 다른 하나는 비보안 페이지 테이블이다. 바람직하게는 보안 페이지 테이블은 중간 어드레스 공간 2265에서 일관적으로 나타나게 되고, 비보안 테이블은 중간 메모리 공간 2275에서 나타나게 된다. 그러나, 물리적 공간에서 일관되게 나타나지 않는 경우도 있으며, 그 예로 보안 페이지 테이블은 처음의 보안 영역인 2210, 2230에서의 페이지 테이블로 나누어 지는 것을 볼 수 있는데, 비슷하게, 비보안 페이지 테이블은 비보안 메모리 영역인 2220과 2240으로 나뉘게 된다.
이전에 언급한대로, 2가지 레벨의 페이지 테이블 접근 방식은 운영 체계의 보안 도메인과 비보안 도메인의 운영체계를 물리적 어드레스 공간에서 물리적 어드레스가 0부터 시작하는 경우에는, 추가적으로 보안 메모리 영역이 완벽하게 비보안 운영체계의 관점에서 "물리적 어드레스"로 보이게 되는 중간 어드레스의 순서를 일관적으로 할 수 있게 준비할 수 있도록 물리적 어드레스를 보이지 않도록 한다.
추가적으로 비보안 메모리와 보안 메모리 간의 메모리 영역 변경에 대해 이것은 도 52에 나타나 있다. 도 52에서 볼 수 있듯이, 메모리 영역 2300에서 는 메모리의 단일 페이지의 예를 볼 수 있으며, 비보안 메모리 영역 2220과 비슷한 메모리 영역 2310이 또한 보안 영역 2210에 상주 하게 된다. 그러나, 이 두 개의 2300과2310의 메모리 영역은 단순히 해당하는 디스크립터를 변경하는 선에서 바뀔 수 있고, 그러한 영역 2300은 보안 영역에 매핑되어 영역 2305로 중간 어드레스 공간으로써 보안 도메인에 나타나게 되고, 비보안 도메인에 나타나게 된다. 이는 전체적으로 투명하게 운영 체계에 보안 도메인과 비보안 도메인으로 나타나게 된다. 이는 운영 체계에 물리적 어드레스 공간을 보는 관점이 중간 어드레스 공간의 보안 및 비보안 메모리에 상대적으로 중간 어드레스로 존재한다. 그래서, 접근 방법은 모든 물리적 어드레스의 운영 체계에서의 재 정의를 피하게 된다.
본 발명의 실시예에서 두 개의 MMU는 또한 사용되면, 다른 준비 단계는 도 50A에 나타나는데, 도 50B에 그 다른 준비 단계가 나타나 있다. 도 50B와 50A상에서 비교되어 나타나 있는 것과 같이, 준비과정은 동일하며, 단지 구현방법에 있어서 첫 번째 MMU 2150은 가상 어드레스를 물리적 어드레스로 변환하는 것이고, 두 번째 MMU는 중간 어드레스를 통해서 물리적인 어드레스로 접근한다고 볼 수 있다. 그래서, 마이크로 TLB 2155는 첫 번째 MMU 2150상에서 MMU 2170의 마이크로 TLB 2175로, 도 50A에 구현되어 있는 것처럼, 마이크로 TLB 2155에 물리적인 주소로 직접 패스 2192로 전달되고 있다. 이는 도 50B에서 확인할 수 있다. 도 50B에 구현되어 있는 부분은 아래와 같으며, 자세한 프로세싱에 관련된 부분은 50A에 설명되어 나타나 있는 부분과 같다.
1) 코어가 VA = 3000로 함
2) MMU 1의 마이크로 TLB 및 주 TLB의 미스
페이지 테이블 1 기저 주소 = 8000IA [PA=10000]
3) MMU 내의 해석 테이블 수행 로직은 페이지 테이블 검색을 수행
IA = 8003으로 함.
4) MMU 2의 마이크로 TLB 및 주 TLB에서 IA 8003 미스
페이지 테이블 2 기저주소 = 12000 PA
5) MMU 2 내의 해석 테이블 수행 로직에서 페이지 테이블 검사를 수행
PA =12008으로 함.
"8000IA = 10000PA" 페이지 테이블 데이터로 복귀
6) "8000IA = 10000PA" 매핑이 MMU 2의 주 TLB 및 마이크로 TLB에 저장됨.
7) MMU 2 내의 마이크로 TLB는 단계 3의 요청을 PA10003으로 해석하여 페치함. "3000VA = 5000IA" 페이지 테이블 데이터로 복귀.
주: 이 해석은 MMU 1에 의해 잠시 남아있는 부분이며, 다른 어떤 TLB로도 직접 저장 되지는 않는다.
8) MMU 1의 해석 테이블 수행 로직은 MMU 2로 IA=5000을 요청한다.
9) MMU 2의 주 TLB 및 마이크로 TLB에서 IA5000 미스
10) MMU 2 내의 해석 테이블 수행 로직은 페이지 테이블 검색을 수행. PA=12005으로 함. "5000IA = 7000PA" 페이지 테이블 데이터로 복귀
11) MMU 2는 마이크로 TLB 및 주 TLB에 "5000IA= 7000PA"를 저장. 이 해석은 MMU 1에도 전달된다.
12) MMU 2는 메모리에 억세스하기 위하여 PA = 7000으로 함.
13) PA 7000의 데이터가 코어로 복귀.
다음으로 코어는 메모리 접근 요청을 한다(VA 3001)
1) 코어는 VA =3001으로 함.
2) MMU 1의 마이크로 TLB가 히트됨. MMU 1은 PA =7001로 하기 위한 요청을 함.
3) PA 7001의 데이터가 코어로 복귀.
위의 예 에서 비교된 바와 같이, 도 50A에서 제공된 내용은, 주로 다른 점이 단계 7에서의 MMU 1이 첫번째 테이블을 디스크립터로 바로 저장하지 않는다는 것이고, 단계 12b에서 (12a 와 12b 는 동시에 발생한다) MMU 1 는 또한 IA->PA로 받는 조합에서 TLB로 조합된 디스크립터를 저장하게 된다.
따라서, 선택적인 구현 방법은 두 세트의 페이지 테이블로 각각의 가상 어드레스를 물리적인 어드레스로 변환하며, 사실은 마이크로 TLB 2155와 주 TLB 2160에서 저장된 직접적인 가상 어드레스가 물리적인 어드레스로 해석되는 부분의 검사를 피할 수 있도록 양 쪽의 MMU가 마이크로 TLB 2155 혹은 주 TLB 2160으로 작업이 발생할 때실행 된다는 것을 알 수 있다. 이 첫 번째 MMU는 직접적으로 두 번째 MMU의 작업이 없이도 코어로부터 요청을 관리 할 수 있게 된다.
두 번째 MMU 2170은 마이크로 TLB 2175와 주 TLB 2180을 포함하지 않고서, 페이지 테이블 수행 로직 2185가 모든 요청에서 두 번째 MMU 요청에 의해 사용되도록 한다. 이는 복잡함과 두 번째 MMU의 비용을 절약하여, 두 번째 MMU가 상대적인 사용 빈도를 줄일 수 있도록 한다. 그런 관계로, 첫 번째 MMU가 모든 요청에 처음 응대하게 되고, 이후에 마이크로 TLB 2155와 주 TLB 2160이 첫 번째 MMU 2150이 첫 번째 MMU의 가동속도를 높이는 역할을 한다.
페이지 테이블 사이즈가 다를 수 있다는 것은 반드시 알고 있어야 하며, 그런 관계로 디스크립터 들은 두 개의 절반으로 각각의 사이즈화 된 페이지를 가지가 된다. 일반적으로 MMU 1페이지는 MMU 2의 페이지보다 작지만 항상 그런 것은 아니다. 예를 들어서.
테이블 1이 0x4003000의 4KB를 0x00081000로 매핑
테이블 2가 0x00000000의 1MB를 0x02000000로 매핑
이때 가장 작은 두 개의 사이즈를 가진 조합을 볼 수 있는데, 조합된 디스크립터는 "4KB at 0x40003000 onto 0x02081000"이다.
그러나, 데이터가 각각에 모드에서 바뀌고 난 경우에는 반대의 경우도 사실이 될 수 있다. 예를 들어서
테이블 1이 0xv0000000의 1MB를 0x00000000로 매핑
테이블 2가 0x00042000의 4KB를 0x02042000로 매핑
이때, 코어에서 어드레스 0xc0042010를 검색하면 다음의 매핑이 주어진다.
"4KB at 0xc0042000 onto ox02042000"
예를 들어서 두 개의 사이즈 중에 작은 것은 언제나 조합용 매핑으로 사용된다.
두번 째 경우는 그 영향이 적은 편인데, 이는 1메가 바이트의 디스크립터 테이블 1이 다른 버려진 4킬로 바이트 영역에 반복적으로 접근하게 된다. 그러나, 일반적인 시스템에서 테이블 2의 디스크립터는 대부분의 시간에서 더 큰 편이며, 더 효율적으로 쓰인다.
도 50A와 50B에서 볼 수 있는 두 개의 각각의 MMU의 동작에 대해서, 단일 MMU는 도 53에서 볼 수 있듯이, 주 TLB 2420에서 에러가 나는 경우 그 예외를 생성해서, 소프트웨어가 코어 10과 함께 가상 어드레스를 해석하여 두 개의 다른 페이지 테이블을 생성하도록 한다. 좀더 구체적으로는 도 53에 도시되어 있는 바와 같이, 코어 10 MMU 2400과 연결되면, 마이크로 TLB 2410에 주 TLB 2420의 조합이 된다. 코어 10이 메모리 접근 요청을 하는 경우에는 가상 어드레스는 패스 2430을 통해서 마이크로 TLB를 관찰하게 되고, 그리고 나서 해당 물리적 어드레스의 결과를 직접 패스 2440으로 전달하게 되는데 이것이 코어 10으로 데이터를 재 전송하게 하는 결과를 가진다. 그러나, 만약에 2410에서 오류가 발생하는 경우에는 주 TLB인 2420이 개입되어 해당하는 디스크립터를 포함한 가상 어드레스 부분과 물리적인 어드레스 부분은 마이크로 TLB 2410으로 보내고 물리적인 어드레스는 패스 2440을 이용한다. 그러나, 주 TLB가 오류를 생성한다면, 패스 2422를 통한 예외 사항이 발생하게 되어 코어로 전달이 되고, 프로세스는 코어에서 처음 받을 때 그런 예외 사항 이었는지에 대한 프로세스를 진행하게 된다. 이는 도 54에 나타나 있다.
도 54에서 보듯이 TLB가 코어에 의해 에러 검출에 실패하는 경우, 코어는 모니터 모드에 진입하여 기존에 정의된 백터에 의해 단계 2510으로 이동한다. 이는 도 54에서 보듯이 페이지 테이블을 병합하여 수행할 수 있도록 한다.
좀더 구체적으로, 단계 2520에서 패스 2430을 통한 가상 어드레스는 마이크로 TLB 2410과 주 TLB 2420에서 받아지며, 단계 2530에서 중간 어드레스가 첫 번째 디스크립터에서 요구되며 이는 중간 어드레스의 테이블 세트의 종류에 따라 달라진다.
고로 단계 2550 에서 1차 디스크립터는 가상 어드레스의 오류에 따라서 결정된다.
그리고 단계 2560에서는, 두 번째 테이블이 다시 두번 째 디스크립터에 주어진 물리적인 어드레스를 중간 어드레스의 가상 어드레스에 대한 오류를 검사하기 위해 쓰여진다. 스탭 2750에서는, 두 번째 디스크립터가 물리적 어드레서의 가상 어드레스의 오류에 대한 내용을 구하기 위해 합쳐진다.
위의 구해진 정보대로, 프로그램은 두번 째 디스크립터에서 필요한 가상 어드레스의 물리적 어드레스로의 변환을 위하여 프로그램을 통합하게 된다. 이는 단계 2580에서 수행된다. 비슷한 방식으로 이전에 묘사한 페이지 테이블 사이즈에 대해 소프트 웨어는 가장 작은 사이즈의 테이블을 선택하게 된다. 단계 2590에서는, 새로운 디스크립터가 저장되어 주 TLB상의 2420에 저장되며, 프로세서는 2595단계의 예외 사항에서 반환되게 된다.
그런 관계로, 코어 10은 가상 주소를 메모리 접근 요청에 패스 2430을 통해 사용하기 위해 쓰이며, 이는 마이크로 TLB 2410상의 오류를 야기하게 되는데, 반면에 마이크로 TLB 2410은 물리적 어드레스를 패스 2440을 통해 받게 된다. 이로 인해 패스 2450에서 코어 10으로의 필요한 데이터들이 전송된다.
이것은 선택적인 구현 방법에 있어서, 도 50A 와 50B 상에서 볼 수 있는 것 인데, 하나, 혹은 둘의 MMU가 구현방법에 있어서 소프트 웨어를 도 53과 54에 있는 내용에 따라 묘사한데로 그 원칙으로 하는 것을 볼 수 있다.
두 개의 MMU가 도 50A, 50B에서 보여진 것처럼 사용되거나 혹은 MMU 단독으로 도 53에서 쓰이는 것과 같은 것은 운영 체제가 보안 모드에서 작동될 때 볼 수 있는 것이고, 이는 페이지 테이블이 안전하다는 것을 의미한다. 그 결과로 프로세서가 비보안 도메인 상에서 단지 비보안 메모리에 대한 내용만을 확인 할 수 있을 때, 중간 어드레스 공간은 비보안 도메인 상에 두 번째 페이지 테이블에 의해 생성이 된다. 그 결과로 메모리 관리 로직 30은 파티션 체커를 사용하지 않으며 이는 도 1에 나와 있다. 그러나 파티션 체커는 외부 버스를 통해 모니터 접근 모드로 제공되며, 이는 시스템 내의 다른 버스 마스터에 의한다.
도 37과 38에 나타나 있는 구현 방법에 따라, 파티션 체커 222는 MMU 200과 연결 되어 그에 따라 접근이 캐쉬 38내에서 수행 되고, 검색이 마이크로 TLB 206에 의해서 처음 수행 된 후, 접근 권한 특별히 보안 및 비보안 권한 등이 검사 된다. 또, 그런 구현 방법에서 보안 데이터는 캐쉬 38에 저장 될 수 가 없는데, 이는 비보안 어플리케이션에 의해서 이다. 캐쉬 38로의 접근은 파티션 체커 222에 의해서인데, 비보안 모드상에서 보안 모드의 데이터 저장이 이루어지지 않는다.
그러나, 본 발명의 선택적인 실시예에서는, 시스템 버스 40을 통한 모니터 접근 모드를 파티션 체커 222가 허용하지 않는다. 그 대신에, 외부 버스 70에 연결된 단일 체커가 작동하여 모니터 권한을 외부 버스로 연결시키는 작업을 한다. 이러한 실시예에 있어서, 이는 프로세서 코어 10이 시스템 버스 40을 통하는 어떤 메모리 유닛이라도 연결이 가능하고, TCM36과 캐쉬 버스 38과 같은 부분에 있어서의 접근을 허용하고, 그 기술적 구현이 프로세서 코어 10이 비보안 모드의 운영 체계 내에서는 캐쉬 38이나 TCM 36이 없이는 접근이 불가능하다는 기술적인 메커니즘을 설명하고 있다.
도 55는 본 발명의 일 실시예에 따른 데이터 처리장치를 도시하고 있으며, 캐쉬 38 및/또는 TCM 36에 대한 접근을 MMU 200과 관련하여 제공되는 파티션 체커 로직에 대한 필요없이 제어할 수 있도록하는 메카니즘을 제공한다. 도 55에 나타나 있는 것처럼, 시스템 버스 40과 캐쉬 38, TCM 36은 서로 연계되어 있다. 코어 10, 캐쉬 38, 그리고 TCM 36은 외부 버스 인터페이스 42로 외부 버스 70을 통해 연결되어 있으며, 이것은 도 55상의 어드레스 버스 2620, 제어 버스 2630, 데이터 버스 2640으로 구성되어 있다.
코어 10, MMU 200, 캐쉬 38, TCM 36과 외부 버스 42등은 외부 버스 70으로의 단일 장치 연결이 가능하고, 장치 버스와 다른 장치들의 보안 외부 장치 470 이나 혹은 비보안 장치 472등에 대한 보안 기능을 제공한다. 또한 연결된 장치 버스 70에 대해서 하나 혹은 더 많은 메모리 유닛에 존재할 수도 있다. 더욱이, 버스 제어 유닛 2650은 장치 버스 70에 연결되며, 아비터 2652와 디코더 2654, 파티션 체커 2656 등을 포함한다. 일반적인 장치 버스에 연결된 장비들에 대한 일반적인 토론을 위해서, 도 47에 그 내용이 서술되어 있다. 도 47에 나타나 있는 실시예는 아비터, 디코더, 그리고 파티션 체커에 대한 분리된 블록을 나타내며, 이러한 요소들은 단일 제어 블록 2650에서도 같은 방식으로 보여지게 된다.
도 56의 MMU 200의 경우는 도 55에 비해 더 자세하게 묘사되어 있다. 도 56과 도 37의 비교에 있어서는, 차이점이 단지 주 TLB 208과 마이크로 TLB 206만이 있을 뿐이다. 만약 프로세서 코어 10이 메모리 접근 요청을 특정한 가상 메모리에 하게 되는 경우 메모리 접근 요청이 MMU쪽으로 라우트 되어, 위에 설명된 대로 도 37의 내용을 따라서, 물리적 어드레스가 시스템 버스 40으로 패스 238을 통해 마이크로 TLB 206으로 전달되는 것을 볼 수 있다. 만약, 그와 반대로 제어 요청이 물리 어드레스로 직접 도달하는 경우에는, 이는 MMU 200을 지나쳐서 대신에 패스 236을 통해 시스템 버스 40으로 바로 연결되게 된다. 이러한 실시예에서는 프로세서는 모니터 모드에서만 동작하게 되며, 메모리 접근 요청은 직접적으로 물리 메모리를 향하게 된다.
이전의 MMU 200의 설명에 대한 부분을 다시 생각해 보았을 때, 특별히 도 43에 나타나 있는 주 TLB 43에 대해서, 이는 몇 개의 디스크립터 435를 가지고 있는데, 각각의 디스크립터의 도메인 플래그 425는 동일하게 제공되어 해당 디스크립터에보안 페이지 테이블이나 혹은 비보안 페이지 테이블로 전송된다. 디스크립터 435와 연계된 도메인 플래그 425는 도 55의 MMU 200관련 내용에 표기 되어있다.
코어 10이 메모리 접근 요청을 제기하는 경우에는 이것은 물리적 주소가 메모리 접근 요청을 시스템 버스 40으로 하는 것을 의미하고, 이는 데이터 아이템이 캐쉬에 저장되는 것을 의미한다. 오류가 발생할 때마다, 데이터 아이템은 외부 메모리 56에서 메모리 접근 요청을 했다는 것을 의미한다. 특별히 캐쉬가 EBI 42에 대해 선형 라인필(linefill) 요청을 제어 버스 2630에 한 경우에, 외부 버스 70으로 연결이 되고, 이는 도메인의 시그널이 동작 모드에서 코어로 가는 메몰 접근이 제기 되었음을 의미한다. 고로, 라인필(linefill) 프로세스는 원래 메모리 접근 요청을 캐쉬 38에 의해 외부 버스로 보이게 하는 가상의 역할을 한다.
HPROT 시그널은 파티션 체커 2656에서 받게 된다. 그리고 그에 따라 파티션 체커는 요청하는 장치가 외부 메모리 56이 동작해서 보안 도메인인지 혹은 비보안 도메인인지 하는 부분에 대한 결정을 한다. 파티션 체커 2656은 부분 정보 구분을 위해서 메모리의 어느 영역이 보안 혹은 비보안 모드인지, 그리고 장치가 요구하는 데이터 접근방향으로 접근 하도록 하는 지를 검사하게 된다. 그러므로, 파티션 체커는 메모리의 보안 영역에서 접근을 허가 하게되며, 만약 도메인 시그널이 HPROT시그널 내부에서 정의 된다면, 데이터는 보안 모드의 운용을 할 수 있도록 시스템에 요청을 하게 된다.
파티션 체커는 코어 10이 HPROT 시그널이 코어가 비보안 모드에서 동작하는 부분을 감지할 때 데이터의 접근을 차단하도록 한다. 그러나 이에 대한 라인필(linefill) 요청은 외부 메모리에서 보안 영역의 메모리에 있는 데이터를 받아 올 수 있도록 검색을 수행하고, 그리고 파티션 체커 2656이 EBI42로, 캐쉬 38을 이용해 다시 취소 시그널을 패스 2670을 통해 코어 10으로 보내게 되는 역할을 한다. 그러나, 만약 파티션 체커 2656이 접근을 허가하도록 하는 경우에는, 결과물 S가 태그 시그널을 구분하여 중간에 보안 모드와 비보안 모드를 구분한 상태에서, S 태그 시그널은 패스 2634를 통해 EBI 42를 향하게 되고, 다시 캐쉬 38에서 플래그 2602가 연계된 상태에서 라인필(linefill) 프로세스의 목적인 캐쉬 라인 2600과 함께 연계되게 된다.
동시에 제어 로직 2650은 외부 메모리 56의 라인필 데이터를 연결하는데 허가를 하게 되고 이 데이터는 다시 EBI42를 거쳐서 캐쉬 38에 라인 2600으로 도달하게 된다. 그런 관계로, 프로세스의 결과에 의해 선택된 캐쉬 라인은 외부 메모리 56에 도달하여 데이터 아이템을 코어 10에 전달하게 된다. 그 데이터 아이템의 목적은 코어에서의 접근 요청에 대한 것이고 다시 캐쉬 38쪽으로 혹은 직접 EBI 42 쪽으로 코어 10에 패스 2660을 통해 전달되게 된다.
본 실시예에서, 원래 데이터가 저장되는 라인은 상기 라인필 프로세스에 의하고, 플래그 2602는 파티션 체커 2656에 근간한 데이터 값에 의한다. 그리고 플래그는 캐쉬 38에 의해 다시 사용되며, 이는 직접적으로 캐쉬 라인 2600에 대한 데이터 입력을 도와주는 역할을 한다. 그러므로, 코어 10은 메모리 접근 요청을 특정한 캐쉬 라인 2600으로 전달하게 하며, 캐쉬 38은 플래그 2602의 값에 연계되게 된다. 그리고 비교된 값은 CP 15의 상태 레지스터에 기록된다. 캐쉬 38은 단지 데이터 아이템을 보안 모드의 동작 상황에서 운용할 수 있도록 해 준다. 보안 데이터의 코어로의 어떠한 접근 시도도 캐쉬 38에서 비보안 모드로 동작하는 경우에는 패스 2670을 거쳐서 취소 시그널을 생성하게 된다.
TCM 36은 여러 가지 방법으로 설정될 수 있다. 일 실시예에 의하면, 이것은 캐쉬처럼 세팅되기도 해서 다수의 2610 캐쉬 라인이 될 수도 있고, 플래그 2612와 연계된 같은 방법으로 캐쉬 38에 등록되기도 한다. TCM 36으로의 접근은 이전에 언급한 캐쉬 38로의 접근 방법과 동일하며, 어떤 TCM 오류라도 라인필(linfill) 프로세스가 동작하며, 파티션 체커 2656이 S 태그의 값을 발생시켜서 플래그 2612가 라인 2610과 연계되도록 한다.
다른 실시예에서는, TCM 36이 외부 메모리 56으로의 확장자 역할을 하기도 하여 프로세서에 의해 자주 메모리를 저장하는 데 쓰이기도 한다. 이는 시스템 버스가 외부 메모리 보다 빠르기 때문이다.
TCM 36은 플래그 2612를 사용하지 않으며, 그 대신에 다른 기술을 사용하여 TCM으로의 접근 관리를 시도한다. 특별히 이전에 언급된 대로 본 실시예에서는 제어 플래그는 프로세서가 특정화된 관리 모드에서 작동할 때 제공되며, 혹은 긴밀히 연결된 메모리를 통해 제어가 가능한 프로세서를 통한 수행이 최소한 1회 정도 비보안 모드에서 실행될 수 있도록 한다. 제어 플래그는 보안 운영체제에서 수행되며, 효과적으로 TCM이 특정화된 보안 모드에서 수행되는지 아닌지에 대한 결정을 하게 된다. 이런 실시예에서는, 비보안 접근이 TCM제어 레지스터 상에서 입력된 설정 예외를 지정하지 않은 레지스터를 연결하는 것을 시도하게 된다.
다른 구성에서는 TCM이 프로세스를 비보안 모드 상에서의 운용되는 운영체계에서 제어 받을수 있도록 한다. 이런 환경에서는 단지 비보안 어플리케이션 만이 실행 될 뿐이다. 다른 보안 데이터는 저장될 수 없거나 혹은 TCM에서 로드가 된다. 따라서, 보안 접근이 수행 되었을 때, TCM에서 TCM 주소 범위에서 주소를 찾을 수 있게 되어 있다.
도 57은 도 55에서 수행되는 프로세서의 형태를 도식화 하여 표현하고 있는데, 우선 단계 2705에서 검색이 수행되어, 마이크로 TLB 206을 통해 만약 접근이 발생할 경우, 마이크로 TLB가 단계 2730에 접근 권한을 검사한다. 도 56을 참고로 할 때, 이 프로세스는 접근 권한 로직 202에 의해 수행 되는 것으로 보인다.
단계 2705에서 마이크로 TLB 상의 검사가 발생하며, 검사는 주 TLB 208에서 비보안 디스크립터를 그에 저장하면서 검사를 수행한다. 만약 결과가 오류라면, 페이지 테이블 수행 프로세스는 단계 2715에서 수행 되어 2720 단계에서는 주 TLB가 정확한 태그를 지닌 비보안 디스크립터를 결정하게 된다.
그런 관계로, 단계 2725에서는 마이크로 TLB상에서 물리적인 어드레스를 가지고 있는 디스크립터의 부분에 로드 되어 마이크로 TLB는 접근 권한을 검사한다.
단계 2730에서는, 접근 권한에 대한 위반이 있는 경우에는 프로세스가 2740으로 수행되며, 취소 시그널이 발생하게 되면, 패스 230을 통해서 프로세스 코어로 전송 하게 된다. 그러나, 위반 이 발견되지 않는 경우에는 단계 2745에서 접근이 캐쉬데이터 아이템을 가지고 있는 지에 대한 여부를 확인하여 결정한다. 만약 그렇지 않은 경우에는, 외부 접근이 단계 2790에서 초기화 된상태에서, 보안 부분 위반이 발생한 경우에는, 데이터를 받기 위한 검색이 수행된다. 단계 2795에서는 파티션 체커 2656이 보안 부분 위반이 있는지를 검사하며, 만약 프로세서 코어 10이 보안 메모리의 데이터를 저장한다. 그리고 위반이 발견되는 경우에는, 파티션 체커 2656이 시그널은 2775 단계을 통해서 생성하게 된다. 그러나, 보안 부분 위반이 없는 경우에는 프로세스를 2785에서 진행 되며, 데이터 접근이 발생한다.
단계 2745에서는 데이터 요청이 캐쉬가 가능한가에대한 여부를 확인 할 수 있고, 캐쉬가 검사를 해서 단계 2750에서 캐쉬를 사용할 수 있게 하고, 만약 접근 이 감지되는 경우에는 캐쉬가 보안 라인 태그 위반을 단계 2755에서 수행하게 된다. 그리고 이 단계에서, 캐쉬는 플래그 2602의 값을 검사하여 데이터 아이템을 요청하게된다. 만약, 라인 태그가 검색된 경우에는, 캐쉬 38에 의해 오류 취소 시그널이 보안 오류상에서 전송 되어, 단계 2755에서 라인 태그를 통한 처리를 한후, 코어 10에서 패스 2670을 통해 연결된다. 그러나, 비보안 라인 태그 위반은 스탭 2755에 감지 되고 있고, 데이터 접근은 단계 2785로 수행된다.
만약 캐쉬 검색이 단계 2750에서 수행되는 경우, 캐쉬 오류가 발생하는 경우에는 캐쉬 라인필(linefill)이 단계 2765에서 초기화된다. 단계 2770에서는, 파티션 체커 2656이 보안 위반 오류가 있는지 확인하고, 만약 그렇다면 취소 시그널을 2755단계로 보내게 된다. 그러나, 오류가 없는 경우에는, 단계 2780에서 진행되고, 데이터 접근은 2785에서 완료된다.
도 57에 나타나 있듯이, 단계은 2705, 2710, 2715, 2720, 2730 과 2735가 MMU내부에서 수행되어 단계 2745, 2750, 2755, 2765, 2780과 2790등이 캐쉬에 의해 수행된다. 그리고 단계 2770 과 단계 2795에서는 파티션 체커가 수행 된다.
도 58은 보안 프로그램상에서 아날로그화 되어 수행되는 가상 어드레스의 코어에 위치하여, 이를 실행한다. 도 57과 58의 비교에서, 단계 2805에서 2835를 통한 MMU의 아날로그 프로세스는 단계 2810 등의 주 TLB가 수행되는 도중에 보안 디스크립터를 수행하여 단계 2820에서 주 TLB에 합당한 테그를 보안 디스크립터에 가지게 된다.
캐쉬 내부에서는 캐쉬가 더 이상 어떤 라인 태그 위반을 하지 않는다는 것을 나타내고 있다. 이는 도 58에서 참고할 수 있는 실시예는 보안 프로그램이 보안 데이터와 비보안 데이터를 접근할 수 있게 하는 것이다. 그에 따라서, 만약 단계 2850에서 캐쉬 검사가 있는 경우에는, 프로세스는 바로 단계 2885를 향해 데이터 접근을 시도한다.
비슷하게도, 각각의 이벤트는 외부 접근을 할 수 있는 메모리 접근 이 요구 되는 경우에 파티션 체커와 부분 검사가 수행되는 상태에서 보안 프로그램이 보안 데이터와 비보안 데이터를 접속할 수 있도록 한다.
단계 2845, 2850, 2860, 2890은 캐쉬에서 아날로그 단계로 수행되고, 2745, 2750, 2765, 2790 등으로 도 57에 묘사된 내용을 볼수 있다.
도 59에서 프로세서상에서 다른 모드와 어플리케이션을 보여주고 있다. 줄이 그어져 있는 선은각각 분리된 다른 어플리케이션과 모드 등을 나타내는데, 다른 모니터링 프로세스가 본 발명의 구현에서 필요한 부분이다.
프로세서가 모니터링을 하는 능력은 오류의 발견 등이 왜 어플리케이션에서 수행 되지 않고 유용한 많은 프로세서상에서 그러한 기능을 할 수 있도록 하게 한다. 이는 다양한 방법으로 디버그 및 트레이스 기능을 수행하도록 한다.
프로세서가 현재 기술을 디버그 해서 운용되게 하는 몇몇 모드를 포함하여 정지 디버그 모드와 모니터 디버그 모드 등이다. 이 모드들은 정지 되어야 하는 시간에 맞추어 작동하게 된다. 정지 디버그 모드에서는 분기점이나 주시점으로 상태가 구분된다. 코어의 입력이 정지하게 되면, 파이프 라인은 기존에 조합된 설정에 따라 정해진다. PC는 정지 상태에 빠지게 되며, 어떤 인터럽트도 무시되게 된다. 내부 상태에서 코어가 수행이 가능하게 됨에 따라 메모리 시스템에 대한 상태에 위치 하게 된다. 이 상태는 프로그램 수행에 필요로 하며, 현재의 모드를 수정하여 레지스터 내용을 변화 할 수 있게 된다. 디버그가 종료 하게 되면, 코어는 재 시작 설정을 검사한 이후에 디버그 상태를 종료하고 코어는 원래 모드로 돌아오게 된다.
모니터 디버그 상에서 분기점이나 주시점에서 코어가 취소 모드에 들어가게 되면, 기능 모드에서 정지되지 않은 상태에서 정지 디버그에서 준비되도록 하게 된다. 취소 관리자는 디버그 어플리케이션과 통신하게 되며, 프로세서의 상태를 체크하여 덤프 메모리를 구성하게 된다. 디버그 모니터 프로그램은 하드웨어/소프트웨어 디버그 인터페이스 프로그램으로 인식된다. 만약 11비트의 디버그 상태에서 제어 레지스터를 DSCR에서 설정되며, 인터럽트를 보여주게 된다. 모니터 디버그 모드에서는, 벡터 수집 작업이 비 활성화 되었을 때의 데이터 취소와 수집 취소를 수행 하기 위한, 발견될 수 없는 결과의 내용으로 모니터 디버그 모드 상에서 생성되는 데이터를 볼 수 있다. 이것은 모니터 디버그 모드가 관리자 모드에서 보안 모드와 비보안 모드 상에서의 종류를 선택할 수 있게 된다.
디버그는 상태에 관련한 프로세스의일부 모습을 제공할 수있다. 만약 이것이 여러 개의 레지스터를 동시에 디버그 모드 상에서 요청 할 수 있는 데이터를 받는 경우라면, 이 값들은 검사 체인과 그 직렬로 나타나는 결과를 JTAG 콘트롤러에 의해 보게 된다.
선택적인 방법에서의 모니터 모드는 트레이스에 의한다. 트레이스는 기록을 순서적인 상태에서 동작할 수 있도록 설계되어 있다. 트레이스는 ETM상에서 실행되 며, 도 1의 22, 26을 참고 할 수 있다. ETM은 트레이스 포트를 정보의 외부로 노출되면, 이는 외부 트레이스 포트 분석기에서 분석되게 된다.
구현 방법 상에서 현재 기술 운영 방법은 두 가지 다른 도메인으로 구분되는데, 보안과 비보안 모드의 조합에 의한다. 그러나 모니터링 기능에 대한 명확한 기술에 대한 두 개의 도메인 상에서 데이터는 반드시 누출되지 않아야 한다. 본 발명의 실시예에서는 모니터링 기능이 디버그와 트레이스 상에서 도메인 간의 데이터 누수를 근본적으로 전체적인 시스템 상에서 접근이 가능한 것으로 설정된다.
보안과 비보안 도메인 상의 보안 데이터는 비보안 상태에서는 불가능 하여야 한다. 게다가, 디버그가 허용된 경우에, 이는 보안 모드와 비보안 모드의 데이터는 강제적으로 숨기게 된다. 도 59에 나타나 있는 내용은 일부의 예가 데이터 접근을 구분 할 수 있게 되고, 다른 수준의 데이터 성질을 나타낸다. 도 59에서의 예는 블록 500에서의 가장 보안 되어야 하는 모드와 보안 및 비보안 모드 상에서의 전환에 대해 아래의 모니터 모드 500은 비보안 관리 모드 520에서 보안 관리모드 510으로의 전환을 시도 하게 된다. 유저 모드 상에서의 어플리케이션은 522, 524와 보안 유저모드에서의 수행을 한다. 선택적으로, 비보안 도메인과 보안 도메인 상에서의 접속은 가능해야 하는 부분이고, 실시예 상에서는 비보안 부분과 보안 부분에 대해서는 유저 도메인 상에서의 다른 보안 데이터의 누수를 막기 위한 구분으로 볼 수 있다. 코어의 부분에서 이것의 접속은 모니터 기능 중에서 라인 503에서 발생하는 유저 보안 모드 상에서의 기능을 볼 수 있다. 보안 데이터는 다른 어플리케이션 상 에서 그 접근을 모니터 기능을 통해 조절 될 수 있도록 하게 한다.
네 개의 레지스터의 디버그 이벤트가 존재한다. 설정 오류 상태 레지스터, 데이터 오류 상태 레지스터, 그리고 설정 오류 어드레스 레지스터 등이다. 이 레지스터는 어떤 구현 방법에서 조합 되며, 보안 관점에서 볼 때 데이터를 누수를 막기 위함이다.
PC 샘플 레지스터: 디버그 TAP는 PC를 검사 체인 7에서 접근 할 수 있도록 한다. 보안 관점에서의 디버그 상태에서는 보안 모드에서 의존한 마스트 값을 디버그 할 때, 비보안 모드 상태에서는 보안 모드에서 실행 되는 코어는 PC의 어떤 값도 유저 어플리케이션이 사용할 수 없도록 하고 있다.
TLB 입력값: CP 15를 이용하여 마이크로 TLB상에서 읽고 쓰는 TLB입력 값을 말한다. 우리는 또한 주 TLB와 마이크로 TLB상의 로딩과 매칭을 조절 할 수 있다. 이런 종류의 운용은 반드시 강제적으로 수행 되어야 하며, 특별히 보안 쓰레드 상의 디버그가 MMU/ MPU의 보조를 요구하게 된다.
성능 모니터 조절 레지스터: 성능 조절 레지스터는 캐쉬가 오류가 난 경우에 마이크로 TLB가 오류가 난 경우에 외부 메모리 요청을 부분 설정 수행등에 사용한다. 비보안 상태에서는 이 데이터를 디버그 상태로 만들어 지지 않도록 했다. 이 카운터 값은 보안 상태에서 동작할 수 있도록 한다.
캐쉬 시스템 디버그: 디버깅은 비 침투적인 캐쉬 시스템이어야 한다. 이것은 캐쉬와 외부 메모리 상의 유기성을 확보할 수 있도록 한다. 캐쉬는 CP15를 사용하면서, 캐쉬가 모든 영역에서 강제로 쓰기를 할 수 있도록 한다. 모든 경우에, 캐쉬 의 수정은 보안 상태의 약점을 디버그 할 수 있도록 제어 될 수 있도록 한다.
엔디언(endianness): 비보안 상태나 보안 유저 어플리케이션 상에서는 엔디언의 변화를 허용하지 않도록 제어를 해야 한다. 엔디언의 변화는 보안 커널을 비 정상적으로 발생하도록 야기시킨다. 엔디언 억세스는 입상에 의하여, 디버그 상에서 금지된다.
모니터 기능의 접근은 코어가 제어하면서 모니터기능을 수행할 수 있도록 한다. 디버그와 트레이스는 여러 종류로 초기화 된다. 본 발명의 실시예에서 모니터 기능의 접근은 보안 부분에서 특정한 환경에서의 초기화를 가능하게 하는 코어의 보안 부분이 제공된다.
이러한 기법의 구현 방법에 있어서 모니터링 기능은 다음의 입상에 디버그 상태에 의한다.
디버그 값을 보안 유저 모드 상에서 단지 혹은 모드 보안 상태에서, 디버그 모드를 가능하게 한 상태에서 쓰레드 ID가 보안 유저 모드 상태에서의 관리를 맡게 된다.
모니터링 기능을 초기화 하기 위해서는, 해당되는 기능이 전부 활성화 되어야 한다. 도 60은 테이블을 도식화 하여 가능한 방법을 초기화하여 모니터링 기능을 활성화 시키고, 모니터링 기능의 종류에 따라서 초기화 설정이 프로그래밍되도록 한다.
일반적으로, 모니터링 설정은 소프트웨어나 혹은 하드웨어 상태에서 입력될 수 있다. 모니터링 기능을 활성화 하기 위해서는, 제어 값이 사용되게 된다. 이러 한 조합은 비트 들이 조건적으로 의존하게 되며, 만약 조건이 존재하는 경우에는 모니터링은 단지 비트가 설정 되었을 때시작 할 수 있도록 한다. 이는 ICE530에 위치하고 있는 CP14 보안 레지스터에 저장된다.
본 발명의 실시예에 있어서 디버그 모드에서 관찰 가능한 4개의 비트들이 존재한다. 이는 보안 디버그 활성화 비트, 보안 트레이스 활성화 비트, 보안 유저 모드 활성화 비트와 보안 쓰레드 인식 활성화 비트 등이다. 이러한 제어 값들은 조절 가능한 입상을 위해 모니터링 기능을 수행하여 데이터 누수를 특정한 도메인 상에서 막기 위해 사용된다. 도 61은 이와 같은 내용에 대해 어떻게 접근할 것인가에 대한 내용을 나타내게 된다.
이러한 제어 비트는 보안 도메인 상의 레지스터를 저장하여 3가지 가능성으로 볼 수 있다. 소프트웨어 접근을 ARM프로세서/ MRC/MCR보조 프로세스를 통해 보안관리자 모드를 이용해서 접근할 수 있도록 하고 있다. 선택적으로, 소프트웨어접근은 다른 모드에서 인증코드를 이용해 접근할 수 있도록 하게 한다. 더 다른 비교 내용은 더 다른 하드웨어 접근과 이에 관한 설정이 존재해서 입력 포트와 JTAG을 관리 할 수 있도록 한다. 게다가, 모니터링 함수의 사용가능성과 관련한 제어값의 입력 이외에도 입력 포트는 프로세서의 다른 함수들과 관련한 제어값의 입력에 사용될 수도 있다.
스캔체인 및 JTAG에 관한 더욱 구체적인 사항은 다음과 같다.
등록 로직 셀
모든 집적 회로는 두 가지의 로직을 가진다.
조합형 로직 셀 예를 들어서 AND, OR, INV와 같은 게이트를 가진다. 그러한 게이트와 조합들은 단일 혹은 수 차례의 시그널에 의한 부울린 계산 공식에 의해 표현된다.
래치, 플립플롭과 같은 레지스터 로직 셀. 그러한 셀은 시그널 값을 저장하는데 쓰인다. 도 62에 포지티브 엣지 플립플롭이 도시되어 있다.
클럭 시그널 (CK)에 포지티브 엣지 이벤트가 발생하는 경우에 출력(Q)은 입력(D) 값을 수신한다; 또는 출력(Q)은 그의 값을 메모리에 유지한다.
스캔 체인 셀
디버그의 목적으로, 등록 로직 셀의 기능적이 부분이 패스되야 하는 경우가 있다. 이런 등록 셀은 스캔 체인 셀로서 통합되며, 도 63에 나타나 있다.
기능 모드에서, SE(검색 가능)은 초기화 되어 등록 셀은 단일 등록 셀로서 운용되며, 테스트나 디버그 모드에서 SE는 설정되고 입력된 데이터가 D 입력 대신에 SI입력으로 대체된다.
스캔 체인
모든 스캔 체인은 도 64에 나타난 대로 사슬형태로 만들어져 있다.
기능 모드에서 SE가 초기화 되고 모든 등록 셀이 정상적으로 접근이 가능하고 다른 회로의 로직이 상호 작용을 할수 있게 한다. 테스트나 디버그 모드에서는, SE가 활성화 되고 모든 레지스터는 스캔 체인에 의해 사슬형태로 나열되게 된다. 데이터는 첫번째 스캔 체인에서 전송되며, 각각의 클럭 사이클에 맞게 돌아간다. 데이터는 레지스터의 등록 형태에 따라서 이동 되기도 한다.
탭 콘트롤러
디버그 탭 콘트롤러는 여러 개의 스캔 체인을 관리할 때 사용한다. 탭 콘트롤러는 특정한 스캔 체인을 사용할 수 있는데 "scan in", "scan out" 과 같은 시그널을 특성 스캔 체인으로 보내는 역할을 한다. 탭 콘트롤러는 JTAG에 의해 외부에서 통제를 받는다. 도 65에 탭 콘트롤러에 대한 설명이 나와 있다.
JTAG의 선택적인 비활성화 스캔 체인 셀
보안상의 이유로, 어떤 레지스터는 스캔 체인에 의해 검색이 안될 수 도 있다. 이러한 경우 테스트나 디버그 모드상에서도 불가하며 새로운 입력 방식인 JADI는 이러한 것을 유동적으로 제거하거나 고정적인 형태에서의 스캔 체인에서부터 전체적인 모든 체인으로, 수정 없이 집적 회로 상에서 제거 할 수 있도록 한다. 도 66A에 B항목에 그 내용이 나와 있다.
만약 JADI가 비 활성화 되는 경우에, 그 상황이 기능 모드거나 혹은 테스트, 디버그 모드 인경우에는, 스캔 체인은 일상적으로 동작한다. 그러나 JADI가 활성화 되어 있는 상태에서는, 디버그 모드 상태에서 스캔 체인 셀이 전체 체인 구조에서 제거 될 수 있다.
스캔 체인 셀의 동일 번호를 유지하기 위해서 JTAG의 JADI가 레지스터를 비활성화 시킨다. SO와 Q는 다른 형태이다.
도 67은 JTAG를 활용하고 있는 프로세싱에 대한 내용을 보여주고 있다. 일반적인 동작 상태에서는 메모리 550이 코어와 통신을 하게 되고, 그러한 환경에서는 레지스터 CP14 등과 같은 관리 값을 가지게 된다. 이것을 일반적으로 보안 관리자 모드에서만 수행이 가능하다.
디버그 모드가 초기화 되고 입력 값이 TAB 580을 통해 입력될 때, 이것은 코어를 제어하고 있는 것으로 볼 수 있다. 코어는 단계 대 단계 모드로 동작한다. 디버그 TAP은 CP14로 코어를 통해 접근을 하며, 제거 값은 또한 이런 식으로 초기화 된다.
CP 14레지스터를 TAP 580을 통해 관리하는 것은 JSDAEN시그널에 의한다. 이것은 접근을 위한 목적과, JSDAEN이 높은 속성 권한을 가지게 하는데 있다. 모든 모드 특성에 대한 검사가 완료되면 JSDAEN은 디버그가 활성화 되고 이것은 제어 값에 대한 관리 권한이 보안 모드로 전환되면서 디버그 TAP 580에 대한 활성화가 이루어 진다. 일반적으로 프로세스는 보안 모드에서 동작하고 JSDAEN이 그 근간을 이룬다. 제어 값에 대한 내용은 이와 같고, 지시 메모리 550에 의한 소프트웨어 라우트가 가능해 진다. 이 라우트를 통해서 보안된 관리자 모드와 혹은 다른 인증 코드에 의한 모드가 제공된다.
디폴트 디버그는 단지 비보안 모드 상에서만 이루어진다. 이를 보안모드에서 가능하게 위해서는 제어 값의 비트가 활성화되어야 한다.
디버그 모드에 대한 이점은 항상 유저가 비보안 상태로 들어갈 수 있다는 것이다. 고로, 보안 모드로의 접근은 일반적으로 유저들이 디버그 모드 일 때는 가능하지 않으며, 많은 경우에서 보안 모드로의 접근은 힘든 부분이 있으며, 가능해 지기 전에 보드 단계를 확인한다. 보안 관리자는 CP 15에 데이터를 작성하면서 소프트 웨어 라우트를 실행 하게 된다.
도 68은 디버그 초기화에 대한 내용을 나타내고 있다. 이 도면에서 코어 600에 해당하는 부분은 보안 상태 비트 S를 표시하며 시스템이 보안 모드인지 아닌지를 표시한다. 코어 600은 또한 602 레지스터의 협업 비트 S를 표시하거나 프로세스가 운용 중인때에, 예를 들어서 유저 모드와 같은 경우에 리제스터 603에 내용 구분 자를 제공하여 현재 코어에서 운용되는 쓰레드와 어플레케이션의 종류를 확인할 수 있게 해 준다.
분기점에 비교자 601에 도달할 때 분기점에서 레지스터 611은 레지스터 612에 저장된 메모리의 주소를 기억하여 제어 로직 620 쪽으로 신호를 보낸다. 제어 로직 620은 보안 상태 S의 모드를 602 와 그 쓰레드로 보내게 되며, 이를 레지스터 CP 14에 저장한다. 만약 시스템이 보안 모드에서 동작하지 않는 다면 630에 보안 모드 입력이 표시된다. 그리고 만약에 시스템이 보안 모드에서 동작하는 경우, 보안 로직 620은 모드 602에 나타나며, 만약 유저모드에서 이 모드가 유효한지 확인하는 데는 디버그 모드가 설정이 된다. 만약 디버그 모드가 초기화 되고, 쓰레드가 비트 상에서 인식되는 경우에는 상기 도면은 제어 값에 대한 특성을 보여준다.
모니터 제어는 도 68에 나타나서 어떻게 제어 값이 레지스터 CP14에 저장되 어 보안 관리자 모드에서만 수정이 가능한가에 대한 설명이 되어 있다. 보안 유저 모드에서는, 보안 관리자 모드가 인증 코드를 이용하여 제어 값을 CP14에 설정 할 수 있는 부분을 설명하고 있다.
제어 로직 620은 디버그 입력 시그널을 비교자 610에 보내면서 분기점에 도달하여 쓰레드 비교자 640에 대한 쓰레드의 디버그가 가능함을 보여 준다. 이 가정은 쓰레드가 CP 14에 비트 형태로 존재함을 나타낸다. 만약 쓰레드의 초기화 비트가 분기점에 도달하게 되는 경우에는, 디버그 혹은 트레이스와 같은 모니터 기능이 동작하여 쓰레드 표시자가 분기점에 도달한 데이터가 옳은 것인 지에 대한 판단을 돕게 된다. 분석된 데이터를 추출하여 내용 구분을 할 수 있도록 하는 것은 비교자 640에서 쓰레드가 가능하도록 한다.
이 실시예에서, 입상 내부의 구조도가 존재한다. 그런 결과로 어떤 디버그나 트레이스 상에서는 보안 유저 모드가 실행 되어 보안 쓰레드가 활성화 되는 비트로 바뀌게 된다. 이는 도 69A와 69B에 나타나 있다.
제어 값은 디버그와 상태 제어 레지스터 (CP14)제거 보안 디버그 입상에 있는 도메인에 따라, 모드와 수행 쓰레드를 제어한다. 이것이 최상위 보안 관리자 모드이다. 만약 디버그 및 상태 제어 레지스터 CP14 가 구성되어 있는 경우라면, 이는 보안 관리자 모드가 해당하는 분기점에, 주 시점에 대해 프로그래밍하는 것이고, 코어는 디버그 상태로 들어가게 된다.
도 69A는 침투 디버그에 관한 보안 디버그 입상의 요약을 도시한다. 리셋의 기본값은 회색으로 표현되어 있다.
디버그 입상에 관한 관찰 디버그의 경우에도 마찬가지이다. 도 69B는 이 경우 보안 디버그 입상의 요약을 도시하는데, 이때 리셋의 기본값이 회색으로 표현되어 있다.
보안 사용자 모드 디버그 가능 비트 및 보안 쓰레드-인지 디버그 가능 비트는 일반적으로 강제적이고 주목할만한 디버그에 활용됨을 주의해야 한다.
쓰레드 인지 초기설정 비트는 레지스터 CP14에 저장되어 있으며, 이는 어플리케이션에 의해 세분성이 요구되는가를 지시한다. 쓰레드 인지 비트가 초기화되면, 차후 제어 로직이 프로그램 식별자 혹은 쓰레드 603가 쓰레드 인지 제어 값에 지시된 것인지 혹은 아닌지를 검증하고, 만약 그렇다면 디버그가 초기화될 것이다. 사용자 모드나 디버그 가능 비트 중에 하나가 설정되지 않거나 쓰레드 인지 비트가 설정되고 어플리케이션 작동이 쓰레드 인지 제어 값에 인지되지 않았을 때에는 중지점은 무시될 것이며, 코어는 수행하던 일을 계속 진행하여서 디버그는 초기화되지 않을 것이다.
모니터링 기능의 제어 초기화에 더하여, 모니터 기능 시의 진단 데이터의 캡쳐도 또한 비슷한 방법으로 제어될 수 있다. 이것을 수행하기 위하여 코어는 레지스터 CP 14에 저장된 가능 비트와 같은 제어 값과 모니터링 기능 작동 시에 연관되는 상태, 두 가지에 지속적으로 주의하여야 한다.
도 70은 모니터링 함수의 실행시의 입상을 개략적으로 도시한다. 이 경우 영역 A는 진단 데이터를 포착할 수 있도록 침투가능한 영역과 관련되며, 영역 B는 CP14에 저장된 그 제어값이 진단 데이터를 포착하는 것이 불가능함을 나타내는 영 역과 관련된다.
따라서, 디버그와 프로그램이 영역 A에서 실행되면 진단 데이터는 디버그 중 순차적(step-by-step) 방식으로 출력된다. 동작이 영역 B로 전환되면 진단 데이터의 포착은 허용되지 않으며, 디버그는 더이상 순차적 방식으로 진행되지 않고 아토믹하게 진행되어 어떠한 데이터도 포착되지 않는다. 이는 프로그램의 동작이 영역 A로 복귀할 때 까지 지속되며, 복귀후 진단 데이터의 포착 및 순차적 방식의 디버그가 재개된다.
상기의 실시예에 있어, 만일 보안 도메인이 비활성화되면, SMI 명령어는 항상 아토믹 이벤트로 여겨지며, 진단 데이터의 포착은 억제된다.
나아가, 만일 쓰레드 인식 개시 비트(thread aware initilaisation bit)가 설정되면 어플리케이션에 따른 모니터링 함수의 입상이 또한 발생한다.
관찰 가능한 디버그 또는 트레이스에 대하여, 이는 ETM에 의하여 완료되며 디버그와는 완전히 독립적이다. 트레이스가 활성화되면 ETM은 통상적으로 동작하며 비활성화되면 ETM은 트레이스를 보안계로 숨기거나 선택된 입상에 따라 보안계의 일부분으로 숨긴다. 보안 도메인에서 이것이 활성화되지 않은 경우에 ETM 포착과 진단 데이터의 추적을 피하는 방법의 하나는 S비트가 높은 값일 때 ETM을 지연시키는 것이다. 이것은 S비트와 ETMPWRDOWN 신호를 결합함으로써 수행되며, 코어의 보안계 진입시 ETM 값이 마지막 보유했던 값으로 유지된다. ETM은 따라서 SMI 명령어를 추적하여 코어가 비보안계로 복귀할 때까지 지연된다. 따라서, ETM은 비보안 활동만을 볼 수 있다.
다른 모니터링 함수와 그 입상에 대한 요약은 다음과 같다.
보드 단계(board stage)에서의 침투 디버그
보드 단계에서 JSDAEN 핀이 연결되지 않으면, 부트 세션을 시작하기 전에 어디에서든지 디버그를 활성화할 수 있다. 유사하게, 만일 보안 관리자 모드에서도 유사한 권한을 갖는다.
만일 중지 디버그 모드에서 디버그를 개시하면 모든 레지스터에 억세스 할 수 있으며 (비보안 및 보안 레지스터 뱅크) 디버그 제어를 위한 전용비트를 제외한 모든 메모리가 덤프될 수 있다.
디버그 중지 모드는 어떤 도메인, 어떤 모드에서든지 진입가능하다. 브레이크 포인트와 와치 포인트는 보안 또는 비보안 메모리에 설정될 수 있다.
디버그 상태에서, MCR 명령어를 통해 S비트를 변경하는 것으로써 보안계로 들어가는 것이 가능하다.
보안 예외가 발생할 경우 디버그 모드에 들어갈 수 있으므로, 벡터 트랩 레지스터는 다음과 같은 새로운 비트들로 확장된다.
SMI 벡터 트래핑 가능
보안 데이터 포기 벡터 트래핑 가능
보안 프리패치 포기 벡터 트래핑 가능
보안 미지정 벡터 트래핑 가능
모니터 디버그 모드에서, 심지어는 비보안계에서 SMI가 호출되는 상황에서 우리가 모든 부분을 디버그 할 수 있도록 허가한다면, 단계별 디버그에서 보안계에 진입하는 것이 가능하다. 보안 도메인에서 중지점이 발생하는 경우, 보안 포기 핸들러가 보안 레지스터 뱅크와 보안 메모리의 덤프를 실행할 수 있다.
보안계와 비보안계 안의 두 개의 포기 핸들러는 디버깅 어플리케이션에 그들의 정보를 제공하여, (연관된 디버그 제어 PC의) 디버그 창에 보안계와 비보안계의 레지스터 상태를 표시토록 한다.
도 71A는 코어가 모니터 디버그 모드에서 구성되고 보안계에서 디버그가 가능한 경우에 무엇들이 발생되는지에 관해 보여주고 있다. 도 71B는 코어가 모니터 디버그 모드에서 구성되고 보안계에서 디버그가 불가능한 경우에 무엇들이 발생되는지에 관해 보여주고 있다. 차후의 프로세스는 아래에 기술되어 있다.
제작 단계에서의 강제 디버그
제작 단계에서 JSDAEN이 비보안계에 연관되어 있으며 디버그가 비보안계에만 한정되어 있는 경우에, 보안 감독자가 다른 것들을 정하지 않는다면 발생할 상황들에 대해 도 71B의 도표에 기록되어 있다. 이러한 경우 SMI는 보안 기능이 항상 디버그 상태에 진입하기 전에 종료되도록 하기 위해 항상 원자 명령어로서 인식되어져야 한다.
디버그 중지 모드로의 진입시 다음과 같은 제약을 받는다.
외부 디버그 요청 또는 내부 디버그 요청은 비보안계에서만 고려된다. 만일 EDBGRQ(외부 디버그 요청)이 보안계에서 설정되면, 코어는 디버그 중지모드로 진입하며, 보안 함수가 종료되면 코어는 비보안계로 복귀한다.
브레이크 포인트 또는 와치 포인트를 보안 메모리 상에 프로그래밍하는 것은 아무런 효력이 없으며 코어는 프로그램된 주소와 일치하더라도 중단되지 않는다.
벡터 트랩 레지스터(이하에서 상세히 설명함)는 비보안 예외만을 고려한다. 모든 확장된 트랩 활성화 비트는 무효화되기 전에 설명된다.
중지 디버그 모드에서는 다음과 같은 제약이 적용된다 :
S비트는 보안 디버그가 활성화 된 경우를 제외하고는 보안계 진입을 위하여 변경될 수 없다.
모드 비트는 보안 관리자 모드에서만 디버그가 허용된 경우 변경될 수 없다.
보안 디버그를 제어하는 전용 비트는 변경될 수 없다.
SMI가 로드되어 실행되면(시스템 속도 억세스로) 코어는 보안 함수가 완전히 실행된 경우에만 디버그 상태로 재진입한다.
모니터 디버그 모드에서는 보안계에서 모니터링이 발생할 수 없으므로, 보안 취소 핸들러가 디버그 모니터 프로그램을 지원할 필요가 없다.
비보안계에서는 "step-by-step"가 가능하지만, SMI가 실행되면 언제나 보안 함수가 완전히 실행되어 "step-in" 및 "step-over"이 다른 모든 명령어에서 가능한 반면, XWSI "step-over"만이 허용된다. XWSI는 따라서 아토믹 명령어로 간주된다.
한번 보안 디버그가 비활성화 되면, 다음과 같은 제약을 받는다.
모니터 모드로 진입전 :
브레이크 포인트와 와치 포인트는 비보안계에서만 고려된다. 만일 S 비트가 설정되면 브레이크 포인트/와치 포인트는 통과된다. 와치 포인트 유니트는 브레이 크 포인트/와치 포인트가 보안 메모리에 아무런 영향이 없어 보안상 문제점이 없으므로 MCR/MRC(CP14)로 억세스 가능하다.
BKPT는 브레이크 포인트가 설정된 명령어를 대체하기 위하여 정상적으로 사용된다. 이는 비보안 모드에서만 가능할 BKPT 명령어에 의하여 메모리 내부의 명령어를 덮어쓰는 것을 지원한다.
벡터 트랩 레지스터는 비보안 예외만을 고려한다. 모든 확장된 트랩 활성화 비트는 무효화되기 이전에 설명된다. 데이터 취소(Data abort) 및 프리펫치(Pre-fetch) 활성화 비트는 프로세서가 복구불능의 상태로 되는 것을 방지하기 위하여 비활성화 되어야 한다.
중단 모드(halt mode)에서도 JTAG를 통해 마찬가지의 제약을 받는다. (S비트는 변경될수 없는 등.)
모니터 모드에서 1회(비보안 취소 모드)
비보안 취소 핸들러는 비보안계로 덤프할 수 있으며 보안 메모리 뿐만 아니라 보안 뱅크 레지스터를 볼 수 없다.
보안 함수를 아토믹 SMI 명령어로 실행하라
S비트는 보안계 진입을 위하여 변경될 수 없다.
모드 비트는 보안 관리자 모드에서 디버그가 활성화되어도 변경될 수 없다.
만일 외부 디버그 요청(EDBGRQ)이 발생하면,
비보안계에서는, 코어가 현재의 명령어를 종료하고 즉시 디버그 상태(중단 모드의)로 진입한다.
보안계에서는 코어가 비보안계로 회귀할 때 현재 함수를 종료하고 디버그 상태로 진입한다.
새로운 디버그 요구사항은 코어 하드웨어의 일부 변형을 의미한다. S비트는 세심하게 제어되어야 하며 보안 비트는 보안상의 이유로 스캔 체인에 삽입되지 말아야 한다.
요약하면, 디버그에서는 보안 관리자 모드에서 디버그가 활성화 된 경우에만 모드 비트가 변경될 수 있다. 보안 도메인에서 디버그에 억세스할 수 있는 자가 시스템을 변경시켜(TBL 진입 등) 보안계 전체에 억세스 하는 것을 방지한다. 이러한 방식으로 각각의 쓰레드는 자신의 코드를 디버그 할 수 있으며, 또한 자신의 코드만을 디버그 할 수 있다. 보안 커널은 안전하게 유지되어야 하며, 따라서 코어가 비보안계에서 동작중일 때 디버그에 진입하는 경우 모드 비트는 그 이전에 변경되어야만 한다.
이러한 기법에 따른 실시예에서는 새로운 벡터 트랩 레지스터를 사용한다. 만일 이 레지스터 내부의 하나의 비트가 높은 값으로 설정되고 대응하는 벡터가 촉발되면 프로세서는 적절한 예외 벡터로부터 명령어 펫치에 브레이크 포인트가 설정된 것처럼 디버그 상태로 진입한다. 이러한 비트들의 움직임은 디버그 제어 레지스트의 "Debug in Secure world Enable"비트의 값에 따라서 달라진다.
새로운 벡터 트랩 레지스터는 다음의 비트로 구성된다 : D_s_abort, P_s_abort, S_undef, SMI, FIQ, IRQ, Unaligned, D_abort, P_abort, SWI, 및 Undef.
- D_s_abort 비트 : 보안계에서 디버그가 활성화된 경우 및 중단 디버그 모드에서 디버그가 조정된 경우에만 설정되어야 한다. 만일 보안계에서 디버그가 비활성화 된 경우 이 비트는 그 값이 무엇이건 상관없이 효력이 없다.
- P_s_abort 비트 : D_s_abort 비트와 동일하다.
- S_undef 비트 : 보안계에서 디버그가 활성화 된 경우에만 설정되어야 한다. 보안계에서 디버그가 비활성화 된 경우 그 값이 무엇이건 상관없이 효력이 없다.
- SMI 비트 : 보안계에서 디버그가 활성화 되었을 경우에만 설정되어야 함. 만일 보안계에서 디버그가 비활성화된 경우, 해당 비트는 그 값이 무엇이건 상관없이 효력이 없다.
- FIQ, IRQ, D_abort, P_abort, SWI, undef 비트 : 비보안 예외에 대응하는 것으로 보안계에서 디버그가 비활성화 되어 있어도 유효하다. D_abort 및 P_abort는 모니터 모드에서 높은 값으로 설정되어야 한다.
- 리셋 비트 : 리셋 발생시 보안계로 진입하는데, 이 비트는 보안계에서 디버그가 활성화 되어 있을 때에만 유효하며 다른 경우 효력이 없다.
비록 본 발명의 구체적인 실시예가 개시되어 있으나, 본 발명이 이에 한정되지 아니함은 명백하며 본 발명의 범위 내에서 많은 변형이나 부가가 가능하다. 예를들어, 이하의 종속항의 구성요소의 다양한 결합은 본 발명의 범위를 벗어나지 않 고 독립항의 구성요소에 의하여 도출될 수 있다.

Claims (67)

  1. 다수의 모드와 다수의 도메인에서 동작 가능한 프로세서를 구비하고, 상기 다수의 도메인은 보안 도메인과 비보안 도메인으로 구성되며, 상기 다수의 모드는,
    상기 보안 도메인 내의 모드인 적어도 하나의 보안 모드와,
    상기 비보안 도메인 내의 모드인 적어도 하나의 비보안 모드, 및 모니터 모드를 포함하고,
    상기 프로세서는 비보안 모드에서 작동시에는 억세스할 수 없는 보안 데이터에 억세스 할 수 있는 프로그램을 보호모드에서 실행하며,
    상기 보안 모드와 비보안 모드 사이의 전환(switching)은 상기 모니터 모드에서 일어나며, 상기 프로세서는 상기 보안 모드와 상기 비보안 모드 사이의 전환을 제어하기 위한 모니터 프로그램을 수행하기 위하여 상기 모니터 모드에서 적어도 부분적으로 동작가능한 것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 프로세서는 레지스터 뱅크를 구비하며 상기 모니터 프로그램은 상기 보안 모드에서 상기 비보안 모드로 전환할 때 상기 레지스터 뱅크에 있는 어떠한 보안 데이터도 상기 보안 모드에서 상기 비보안 모드로 상기 모니터 프로그램에 의하여 허가된 경우를 제외하고는 넘겨지지 않도록 상기 보안 모드와 상기 비보안 모드 사이에 공유된 상기 레지스터 뱅크의 적어도 일부분을 비우는 동작(flush)을 할 수 있는 것을 특징으로 하는 데이터 처리장치.
  3. 제 1 항에 있어서,
    상기 프로세서는 상기 프로세서가 비보안 모드에서 동작할 때 사용되는 비보안 레지스터 뱅크 및 상기 프로세서가 보안 모드에서 동작할 때 사용되는 보안 레지스터 뱅크를 구비하는 것을 특징으로 하는 데이터 처리장치.
  4. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 동작시 상기 보안 모드로의 전환은 상기 모니터 프로그램의 하나 또는 그 이상의 고정된 지점의 하나에 대한 전환에 의하여 이루어지는 것임을 특징으로 하는 데이터 처리장치.
  5. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 보안 도메인은 적어도 하나의 보안 특권 모드 및 적어도 하나의 보안 사용자 모드를 제공하며, 보안 특권 모드에서 동작시 상기 모니터 모드로의 전환은 보안 사용자 모드로의 전환에 사용된 것과 같은 원리로 이루어지는 것임을 특징으로 하는 데이터 처리장치.
  6. 제 5 항에 있어서,
    상기 전환은 상기 비보안 모드에서 실행되는 프로그램에 의하여 생성되는 콜을 사용하는 것임을 특징으로 하는 데이터 처리장치.
  7. 제 6 항에 있어서,
    상기 콜은 상기 모니터 프로그램 내부의 고정된 지점에 대한 것임을 특징으로 하는 데이터 처리장치.
  8. 제 4 항에 있어서,
    상기 전환은 상기 모니터 모드에서 상기 비보안 모드와 상기 보안 모드 사이의 전환을 수행하는 경우를 제외하고는 프로그램에 의한 시도에 의하여 촉발되는 것임을 특징으로 하는 데이터 처리장치.
  9. 제 8 항에 있어서,
    상기 모니터 모드에서 상기 비보안 모드와 상기 보안 모드 사이의 전환을 수행하는 경우를 제외하고는 프로그램에 의한 어떠한 시도도 트랩되며 상기 모니터 프로그램의 고정된 지점에 대한 콜을 촉발하는 것을 특징으로 하는 데이터 처리장치.
  10. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 상기 모니터 모드에 대한 진입이 시작될 때, 상기 프로세서는 상기 비보안 모드에서 처리가 중지된 지점에서 상기 비보안 모드에서의 처리가 재개될 수 있도록 프로그램 카운터 값을 저장하는 것을 특징으로 하는 데이터 처리장치.
  11. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 상기 모니터 모드에 대한 진입이 시작될 때, 상기 프로세서는 상기 프로세서를 상기 비보안 모드에서 처리가 중지된 시점의 프로세서 상태로 복구하기 위하여 프로세서 상태값을 저장하는 것을 특징으로 하는 데이터 처리장치.
  12. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서의 예외 처리 발생으로 상기 보안 모드에서의 처리가 중지된 경우, 상기 비보안 모드로의 전환은 상기 모니터 모드를 경유하여 이루어지며 상기 예외 처리는 상기 모니터 모드로 제어의 반환이 완료된 경우에 가능한 것을 특징으로 하는 데이터 처리장치.
  13. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 프로세서는 상기 프로세서가 상기 보안 모드 또는 상기 비보안 모드에서 작동 중인지를 나타내는 보안 상태 플래그를 포함하되, 상기 보안 상태 플래그는 상기 프로세서가 상기 모니터 모드에서 작동중일 때 기록가능하며 상기 프로세서가 상기 모니터 모드 이외의 모드에서 작동중일 때에는 기록불가능한 것을 특징으로 하는 데이터 처리장치.
  14. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드 중 적어도 하나에서 동작중일때 비보안 운영체계가 상기 프로세서를 제어하는 것을 특징으로 하는 데이터 처리장치.
  15. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 보안 모드 중 적어도 하나에서 동작중일때 보안 운영체계가 상기 프로세서를 제어하는 것을 특징으로 하는 데이터 처리장치.
  16. 제 15 항에 있어서,
    상기 모니터 프로그램은 상기 보안 운영체계의 일부분인 것을 특징으로 하는 데이터 처리장치.
  17. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 프로세서는 예외 처리를 촉발시키는 하나 또는 그 이상의 예외 조건에 응답하는 것을 특징으로 하는 데이터 처리장치.
  18. 제 17 항에 있어서,
    상기 모니터 모드에서 적어도 하나의 상기 예외 조건이 불가용화된 것을 특징으로 하는 데이터 처리장치.
  19. 제 2 항에 있어서,
    상기 프로세서는 상기 모니터 모드로 진입시 대응되는 범용 레지스터 내부의 데이터를 덮어쓰지 않고 다수의 전용 레지스터가 상기 모니터 프로그램에 의하여 사용될 수 있도록 대응되는 범용 레지스터를 대체하는 다수의 전용 레지스터를 상기 레지스터 뱅크 내부에 구비하는 것을 특징으로 하는 데이터 처리장치.
  20. 제 17 항에 있어서,
    상기 예외 트랩 마스크 레지스터는 상기 예외 중의 어느 것이 상기 모니터 모드에서 실행중인 예외 핸들러에 의하여 처리되어야 하는지와 상기 예외 중의 어느 것이 예외 발생시 상기 보안 도메인과 상기 비보안 도메인 중 현재 도메인의 모드에서 실행중인 예외 핸들러에 의하여 처리되어야 하는지를 지시하는 하나 또는 그 이상의 파라메타를 저장하는 것을 특징으로 하는 데이터 처리장치.
  21. 제 17 항에 있어서,
    상기 프로세서는 상기 모니터 모드로의 진입 및 상기 모니터 프로그램의 실행을 촉발하도록 동작하는 보안 예외 조건에 응답하는 것을 특징으로 하는 데이터 처리장치.
  22. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 프로세서는 상기 모니터 모드로 진입하고 미리 정해진 지점에서 상기 모니터 프로그램의 실행을 시작하기 위한 모니터 모드 진입 명령어에 응답하는 것을 특징으로 하는 데이터 처리장치.
  23. 제 22 항에 있어서,
    상기 모니터 모드 진입 명령어는 모드 전환 소프트웨어 인터럽트 명령어이며 상기 미리 정해진 지점은 상기 모드 전환 소프트웨어 언터럽트 명령어와 연관된 모드 전환 소프트웨어 인터럽트 벡터인 것을 특징으로 하는 데이터 처리장치.
  24. 제 23 항에 있어서,
    서로 상이한 모드 전환 소프트웨어 인터럽트 벡터들은 상기 프로세서가 보안 모드 또는 비보안 모드에 있는지 여부에 종속적으로 상기 모드 전환 소프트웨어 인터럽트 명령어에 연관되는 것을 특징으로 하는 데이터 처리장치.
  25. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 보안 모드 중의 적어도 하나는 보안 관리자 모드, 보안 시스템 모드, 보안 취소 예외 모드, 보안 미정의된 예외 모드, 보안 인터럽트 모드, 보안 고속 인터럽트 모드, 및 보안 사용자 모드 중의 하나 또는 그 이상을 포함하는 것을 특징으로 하는 데이터 처리장치.
  26. 제 1 항, 제 2 항 또는 제 3 항 중의 어느 한 항에 있어서,
    상기 비보안 모드 중의 적어도 하나는 비보안 관리자 모드, 비보안 시스템 모드, 비보안 취소 예외 모드, 비보안 미정의된 예외 모드, 비보안 인터럽트 모드, 비보안 고속 인터럽트 모드, 및 비보안 사용자 모드 중의 하나 또는 그 이상을 포함하는 것을 특징으로 하는 데이터 처리장치.
  27. 제 1 항에 있어서,
    상기 프로세서는 상기 보안 도메인으로부터 상기 비보안 도메인으로 변경될 수 없는 상기 보안 도메인 내의 적어도 하나의 보안 특권 모드에서 동작가능하되, 상기 보안 특권 모드는 프로그램 실행 지점의 변경없이 상기 보안 특권 모드에서 상기 모니터 모드로의 변경을 허가할 권한을 갖는 것을 특징으로 하는 데이터 처리장치.
  28. 제 27 항에 있어서,
    상기 프로세서는 상기 모니터 모드에서, 상기 보안 도메인에서 상기 비보안 도메인으로의 변경을 위하여 보안 플래그를 변경하도록 동작할 수 있고, 상기 보안 플래그는 상기 모니터 모드 밖에서는 쓰기 금지된 것을 특징으로 하는 데이터 처리장치.
  29. 제 27 항 또는 제 28 항에 있어서,
    상기 프로세서는 소프트웨어 인터럽트 명령어와 연관된 인터럽트 벡터에 의하여 지시되는 프로그램 실행 지점의 변경을 통하여 상기 모니터 모드로의 전환을 수행하기 위한 상기 소프트웨어 인터럽트 명령어에 응답하는 것을 특징으로 하는 데이터 처리장치.
  30. 제 27 항 또는 제 28 항에 있어서,
    상기 비보안 도메인은 프로그램 실행 지점의 변경없이 상기 모니터 모드로의 변경이 불가능한 적어도 하나의 특권 비보안 모드를 포함하는 것을 특징으로 하는 데이터 처리장치.
  31. 제 27 항 또는 제 28 항에 있어서,
    상기 프로세서는 리셋에 의하여 상기 보안 특권 모드로 진입하는 것을 특징으로 하는 데이터 처리장치.
  32. 제 27 항 또는 제 28 항에 있어서,
    상기 보안 도메인에서 상기 비보안 도메인으로의 변경 이전에 상기 모니터 모드에서 실행되는 모니터 프로그램이 상기 보안 특권 모드가 상기 비보안 도메인으로의 전환을 위해 상기 모니터 모드로 다시 전환 하기 이전에 상기 모니터 모드 내부에서 억세스 불가능한 환경설정 데이터의 저장을 허용하도록 상기 보안 특권 모드로의 전환을 생성하는 것을 특징으로 하는 데이터 처리장치.
  33. 제 27 항 또는 제 28 항에 있어서,
    상기 모니터 모드에서 억세스 가능한 메모리 영역은 상기 보안 특권 모드에서도 억세스 가능한 것을 특징으로 하는 데이터 처리장치.
  34. 다수의 모드와 다수의 도메인에서 동작 가능한 프로세서로 프로그램을 실행하는 단계를 포함하고, 상기 다수의 도메인은 보안 도메인과 비보안 도메인으로 구성되며, 상기 다수의 모드는,
    상기 보안 도메인 내의 모드인 적어도 하나의 보안 모드와,
    상기 비보안 도메인 내의 모드인 적어도 하나의 비보안 모드와,
    모니터 모드를 포함하고,
    상기 프로세서는 비보안 모드에서 작동시에는 억세스할 수 없는 보안 데이터에 억세스 할 수 있는 프로그램을 보호모드에서 실행하며,
    상기 보안 모드와 비보안 모드 사이의 전환(switching)은 상기 모니터 모드에서 일어나며, 상기 프로세서는 상기 보안 모드와 상기 비보안 모드 사이의 전환을 제어하기 위한 모니터 프로그램을 수행하기 위하여 상기 모니터 모드에서 적어도 부분적으로 동작가능한 것을 특징으로 하는 데이터 처리방법.
  35. 제 34 항에 있어서,
    상기 프로세서는 레지스터 뱅크를 구비하며 상기 모니터 프로그램은 상기 보안 모드에서 상기 비보안 모드로 전환할 때 상기 레지스터 뱅크에 있는 어떠한 보안 데이터도 상기 보안 모드에서 상기 비보안 모드로 상기 모니터 프로그램에 의하여 허가된 경우를 제외하고는 넘겨지지 않도록 상기 보안 모드와 상기 비보안 모드 사이에 공유된 상기 레지스터 뱅크의 적어도 일부분을 비우는 동작(flush)을 할 수 있는 것을 특징으로 하는 데이터 처리방법.
  36. 제 34 항에 있어서,
    상기 프로세서는 상기 프로세서가 비보안 모드에서 동작할 때 사용되는 비보안 레지스터 뱅크 및 상기 프로세서가 보안 모드에서 동작할 때 사용되는 보안 레지스터 뱅크를 구비하는 것을 특징으로 하는 데이터 처리방법.
  37. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 동작시 상기 보안 모드로의 전환은 상기 모니터 프로그램의 하나 또는 그 이상의 고정된 지점의 하나에 대한 전환에 의하여 이루어지는 것임을 특징으로 하는 데이터 처리방법.
  38. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 보안 도메인은 적어도 하나의 보안 특권 모드 및 적어도 하나의 보안 사용자 모드를 제공하며, 보안 특권 모드에서 동작시 상기 모니터 모드로의 전환은 보안 사용자 모드로의 전환에 사용된 것과 같은 원리로 이루어지는 것임을 특징으로 하는 데이터 처리방법.
  39. 제 37 항에 있어서,
    상기 전환은 상기 비보안 모드에서 실행되는 프로그램에 의하여 생성되는 콜을 사용하는 것임을 특징으로 하는 데이터 처리방법.
  40. 제 39 항에 있어서,
    상기 콜은 상기 모니터 프로그램 내부의 고정된 지점에 대한 것임을 특징으로 하는 데이터 처리방법.
  41. 제 37 항에 있어서,
    상기 전환은 상기 모니터 모드에서 상기 비보안 모드와 상기 보안 모드 사이의 전환을 수행하는 경우를 제외하고는 프로그램에 의한 시도에 의하여 촉발되는 것임을 특징으로 하는 데이터 처리방법.
  42. 제 41 항에 있어서,
    상기 모니터 모드에서 상기 비보안 모드와 상기 보안 모드 사이의 전환을 수행하는 경우를 제외하고는 프로그램에 의한 어떠한 시도도 트랩되며 상기 모니터 프로그램의 고정된 지점에 대한 콜을 촉발하는 것을 특징으로 하는 데이터 처리방법.
  43. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 상기 모니터 모드에 대한 진입이 시작될 때, 상기 프로세서는 상기 비보안 모드에서 처리가 중지된 지점에서 상기 비보안 모드에서의 처리가 재개될 수 있도록 프로그램 카운터 값을 저장하는 것을 특징으로 하는 데이터 처리방법.
  44. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서 상기 모니터 모드에 대한 진입이 시작될 때, 상기 프로세서는 상기 프로세서를 상기 비보안 모드에서 처리가 중지된 시점의 프로세서 상태로 복구하기 위하여 프로세서 상태값을 저장하는 것을 특징으로 하는 데이터 처리방법.
  45. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 비보안 모드에서의 예외 처리 발생으로 상기 보안 모드에서의 처리가 중지된 경우, 상기 비보안 모드로의 전환은 상기 모니터 모드를 경유하여 이루어지며 상기 예외 처리는 상기 모니터 모드로 제어의 반환이 완료된 경우에 가능한 것을 특징으로 하는 데이터 처리방법.
  46. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 프로세서는 상기 프로세서가 상기 보안 모드 또는 상기 비보안 모드에서 작동 중인지를 나타내는 보안 상태 플래그를 포함하되, 상기 보안 상태 플래그는 상기 프로세서가 상기 모니터 모드에서 작동중일 때 기록가능하며 상기 프로세서가 상기 모니터 모드 이외의 모드에서 작동중일 때에는 기록불가능한 것을 특징으로 하는 데이터 처리방법.
  47. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 비보안 모드 중 적어도 하나에서 동작중일때 비보안 운영체계가 상기 프로세서를 제어하는 것을 특징으로 하는 데이터 처리방법.
  48. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 보안 모드 중 적어도 하나에서 동작중일때 보안 운영체계가 상기 프로세서를 제어하는 것을 특징으로 하는 데이터 처리방법.
  49. 제 48 항에 있어서,
    상기 모니터 프로그램은 상기 보안 운영체계의 일부분인 것을 특징으로 하는 데이터 처리방법.
  50. 제 34 항, 제 35 항 또는 제 36 항 중의 어느 한 항에 있어서,
    상기 프로세서는 예외 처리를 촉발시키는 하나 또는 그 이상의 예외 조건에 응답하는 것을 특징으로 하는 데이터 처리방법.
  51. 제 50 항에 있어서,
    상기 모니터 모드에서 적어도 하나의 상기 예외 조건이 불가용화된 것을 특징으로 하는 데이터 처리방법.
  52. 제 35 항에 있어서,
    상기 프로세서는 상기 모니터 모드로 진입시 대응되는 범용 레지스터 내부의 데이터를 덮어쓰지 않고 다수의 전용 레지스터가 상기 모니터 프로그램에 의하여 사용될 수 있도록 대응되는 범용 레지스터를 대체하는 다수의 전용 레지스터를 상기 레지스터 뱅크 내부에 구비하는 것을 특징으로 하는 데이터 처리방법.
  53. 제 50 항에 있어서,
    상기 예외 트랩 마스크 레지스터는 상기 예외 중의 어느 것이 상기 모니터 모드에서 실행중인 예외 핸들러에 의하여 처리되어야 하는지와 상기 예외 중의 어느 것이 예외 발생시 상기 보안 도메인과 상기 비보안 도메인 중 현재 도메인의 모드에서 실행중인 예외 핸들러에 의하여 처리되어야 하는지를 지시하는 하나 또는 그 이상의 파라메타를 저장하는 것을 특징으로 하는 데이터 처리방법.
  54. 제 50 항에 있어서,
    상기 프로세서는 상기 모니터 모드로의 진입 및 상기 모니터 프로그램의 실행을 촉발하도록 동작하는 보안 예외 조건에 응답하는 것을 특징으로 하는 데이터 처리방법.
  55. 제 34 항, 제 35 항 또는 제 36 항의 중의 어느 한 항에 있어서,
    상기 프로세서는 상기 모니터 모드로 진입하고 미리 정해진 지점에서 상기 모니터 프로그램의 실행을 시작하기 위한 모니터 모드 진입 명령어에 응답하는 것을 특징으로 하는 데이터 처리방법.
  56. 제 55 항에 있어서,
    상기 모니터 모드 진입 명령어는 모드 전환 소프트웨어 인터럽트 명령어이며 상기 미리 정해진 지점은 상기 모드 전환 소프트웨어 인터럽트 명령어와 연관된 모드 전환 소프트웨어 인터럽트 벡터인 것을 특징으로 하는 데이터 처리방법.
  57. 제 56 항에 있어서,
    서로 상이한 모드 전환 소프트웨어 인터럽트 벡터들은 상기 프로세서가 보안 모드 또는 비보안 모드에 있는지 여부에 종속적으로 상기 모드 전환 소프트웨어 인터럽트 명령어에 연관되는 것을 특징으로 하는 데이터 처리방법.
  58. 제 34 항, 제 35 항 또는 제 36 항의 중의 어느 한 항에 있어서,
    상기 보안 모드 중의 적어도 하나는 보안 관리자 모드, 보안 시스템 모드, 보안 취소 예외 모드, 보안 미정의된 예외 모드, 보안 인터럽트 모드, 보안 고속 인터럽트 모드, 및 보안 사용자 모드 중의 하나 또는 그 이상을 포함하는 것을 특징으로 하는 데이터 처리방법.
  59. 제 34 항, 제 35 항 또는 제 36 항의 중의 어느 한 항에 있어서,
    상기 비보안 모드 중의 적어도 하나는 비보안 관리자 모드, 비보안 시스템 모드, 비보안 취소 예외 모드, 비보안 미정의된 예외 모드, 비보안 인터럽트 모드, 비보안 고속 인터럽트 모드, 및 비보안 사용자 모드 중의 하나 또는 그 이상을 포함하는 것을 특징으로 하는 데이터 처리방법.
  60. 제 34 항에 있어서,
    상기 프로세서는 상기 보안 도메인으로부터 상기 비보안 도메인으로 변경될 수 없는 상기 보안 도메인 내의 적어도 하나의 보안 특권 모드에서 동작가능하되, 상기 보안 특권 모드는 프로그램 실행 지점의 변경없이 상기 보안 특권 모드에서 상기 모니터 모드로의 변경을 허가할 권한을 갖는 것을 특징으로 하는 데이터 처리방법.
  61. 제 60 항에 있어서,
    상기 프로세서는 상기 모니터 모드에서, 상기 보안 도메인에서 상기 비보안 도메인으로의 변경을 위하여 보안 플래그를 변경하도록 동작할 수 있고, 상기 보안 플래그는 상기 모니터 모드 밖에서는 쓰기 금지된 것을 특징으로 하는 데이터 처리방법.
  62. 제 60 항 또는 제 61 항에 있어서,
    상기 프로세서는 소프트웨어 인터럽트 명령어와 연관된 인터럽트 벡터에 의하여 지시되는 프로그램 실행 지점의 변경을 통하여 상기 모니터 모드로의 전환을 수행하기 위한 상기 소프트웨어 인터럽트 명령어에 응답하는 것을 특징으로 하는 데이터 처리방법.
  63. 제 60 항 또는 제 61 항에 있어서,
    상기 비보안 도메인은 프로그램 실행 지점의 변경없이 상기 모니터 모드로의 변경이 불가능한 적어도 하나의 특권 비보안 모드를 포함하는 것을 특징으로 하는 데이터 처리방법.
  64. 제 60 항 또는 제 61 항에 있어서,
    상기 프로세서는 리셋에 의하여 상기 보안 특권 모드로 진입하는 것을 특징으로 하는 데이터 처리방법.
  65. 제 60 항 또는 제 61 항에 있어서,
    상기 보안 도메인에서 상기 비보안 도메인으로의 변경 이전에 상기 모니터 모드에서 실행되는 모니터 프로그램이 상기 보안 특권 모드가 상기 비보안 도메인으로의 전환을 위해 상기 모니터 모드로 다시 전환 하기 이전에 상기 모니터 모드 내부에서 억세스 불가능한 환경설정 데이터의 저장을 허용하도록 상기 보안 특권 모드로의 전환을생성하는 것을 특징으로 하는 데이터 처리방법.
  66. 제 60 항 또는 제 61 항에 있어서,
    상기 모니터 모드에서 억세스 가능한 메모리 영역은 상기 보안 특권 모드에서도 억세스 가능한 것을 특징으로 하는 데이터 처리방법.
  67. 제 34 항, 제 35 항 또는 제 36 항의 어느 한 항에 의한 방법에 의하여 데이터 처리 장치를 제어할 수 있는 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체.
KR1020057008760A 2002-11-18 2003-10-27 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체 KR100955284B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GB0226874.6 2002-11-18
GBGB0226874.6A GB0226874D0 (en) 2002-11-18 2002-11-18 Switching between secure and non-secure processing modes
GB0303494.9 2003-02-14
GB0303494A GB0303494D0 (en) 2002-11-18 2003-02-14 Data processing system

Publications (2)

Publication Number Publication Date
KR20050086673A KR20050086673A (ko) 2005-08-30
KR100955284B1 true KR100955284B1 (ko) 2010-04-30

Family

ID=32328069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057008760A KR100955284B1 (ko) 2002-11-18 2003-10-27 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체

Country Status (11)

Country Link
US (1) US7849310B2 (ko)
EP (1) EP1563375B1 (ko)
JP (1) JP4423206B2 (ko)
KR (1) KR100955284B1 (ko)
AU (1) AU2003274383A1 (ko)
DE (1) DE60308215T2 (ko)
GB (1) GB2402785B (ko)
IL (1) IL164512A (ko)
RU (1) RU2005115083A (ko)
TW (1) TWI275997B (ko)
WO (1) WO2004046924A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016140548A1 (ko) * 2015-03-05 2016-09-09 삼성전자 주식회사 사용자 디바이스에 보안 모드를 제공하기 위한 방법 및 장치
KR20160108136A (ko) * 2015-03-05 2016-09-19 삼성전자주식회사 사용자 디바이스에 보안 모드를 제공하기 위한 방법 및 장치

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
KR100941104B1 (ko) * 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
EP1496435A1 (en) * 2003-07-11 2005-01-12 Yogitech Spa Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor
KR101037006B1 (ko) * 2003-11-28 2011-05-25 파나소닉 주식회사 데이터 처리장치
US20050198461A1 (en) * 2004-01-12 2005-09-08 Shaw Mark E. Security measures in a partitionable computing system
US7178015B2 (en) * 2004-01-12 2007-02-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
US20050154910A1 (en) * 2004-01-12 2005-07-14 Shaw Mark E. Security measures in a partitionable computing system
US7296146B2 (en) * 2004-01-12 2007-11-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
JP4447977B2 (ja) 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
EP1612638B1 (en) * 2004-07-01 2011-03-09 Texas Instruments Incorporated Method and system of verifying proper execution of a secure mode entry sequence
EP1619572A1 (en) * 2004-07-23 2006-01-25 Texas Instruments Incorporated System and method of identifying and preventing security violations within a computing system
US7484247B2 (en) * 2004-08-07 2009-01-27 Allen F Rozman System and method for protecting a computer system from malicious software
WO2006018307A2 (en) * 2004-08-18 2006-02-23 Jaluna Sa Operating systems
WO2006057316A1 (ja) * 2004-11-26 2006-06-01 Matsushita Electric Industrial Co., Ltd. プロセッサ、セキュア処理システム
FR2884628A1 (fr) * 2005-04-18 2006-10-20 St Microelectronics Sa Procede de traitement d'interruptions non securisees par un processeur operant dans le mode securise, processeur associe.
WO2006126686A1 (ja) * 2005-05-26 2006-11-30 Matsushita Electric Industrial Co., Ltd. データ処理装置
US7962746B2 (en) * 2005-06-01 2011-06-14 Panasonic Corporation Computer system and program creating device
US20070067826A1 (en) * 2005-09-19 2007-03-22 Texas Instruments Incorporated Method and system for preventing unsecure memory accesses
US8019947B2 (en) * 2005-10-19 2011-09-13 Intel Corporation Technique for thread communication and synchronization
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
EP2013809B1 (en) * 2006-05-01 2018-11-21 MediaTek Inc. Method and apparatus for secure context switching in a system including a processor and cached virtual memory
US20140373144A9 (en) * 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
EP1865435A1 (en) * 2006-06-06 2007-12-12 Texas Instruments France Enhanced exception handling
US7529916B2 (en) * 2006-08-16 2009-05-05 Arm Limited Data processing apparatus and method for controlling access to registers
US20090307770A1 (en) * 2006-08-17 2009-12-10 Peter William Harris Apparatus and method for performing integrity checks on sofware
DE102006049646B3 (de) * 2006-10-20 2008-06-19 Siemens Ag Verfahren und Sendevorrichtung zum gesicherten Erstellen und Versenden einer elektronischen Nachricht sowie Verfahren und Empfangsvorrichtung zum gesicherten Empfangen und Verarbeiten einer elektronischen Nachricht
JP2008152462A (ja) 2006-12-15 2008-07-03 Ntt Docomo Inc 遠隔起動システム、遠隔起動サーバ及び通信端末
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control
US8255988B2 (en) * 2007-03-28 2012-08-28 Microsoft Corporation Direct peripheral communication for restricted mode operation
JP5049185B2 (ja) * 2007-04-19 2012-10-17 パナソニック株式会社 情報セキュリティ装置、セキュリティシステム及び入力情報漏洩防止方法
EP1986122A1 (fr) * 2007-04-23 2008-10-29 Stmicroelectronics Sa Unite de traitement securisee
US8613081B2 (en) 2007-05-11 2013-12-17 Nagrastar Llc Apparatus for controlling processor execution in a secure environment
FR2919951B1 (fr) * 2007-08-08 2012-12-21 Airbus France Systeme de traitement et d'affichage de donnees
US8775824B2 (en) * 2008-01-02 2014-07-08 Arm Limited Protecting the security of secure data sent from a central processor for processing by a further processing device
US20090204823A1 (en) * 2008-02-07 2009-08-13 Analog Devices, Inc. Method and apparatus for controlling system access during protected modes of operation
US8555380B2 (en) * 2008-02-28 2013-10-08 Intel Corporation Automatic modification of executable code
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
US8468356B2 (en) * 2008-06-30 2013-06-18 Intel Corporation Software copy protection via protected execution of applications
US9286080B2 (en) * 2008-07-02 2016-03-15 Hewlett-Packard Development Company, L.P. Memory management for hypervisor loading
US8843742B2 (en) 2008-08-26 2014-09-23 Hewlett-Packard Company Hypervisor security using SMM
KR100966014B1 (ko) * 2008-09-11 2010-06-24 현대중공업 주식회사 프로그램의 동작 목적에 따른 프로세스 제어기반 파일시스템 제어기
US9166797B2 (en) * 2008-10-24 2015-10-20 Microsoft Technology Licensing, Llc Secured compartment for transactions
KR20100124052A (ko) * 2009-05-18 2010-11-26 삼성전자주식회사 플랫폼에 비종속적인 보안 환경 제공 장치 및 방법
US8499304B2 (en) * 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US8587409B2 (en) 2010-03-08 2013-11-19 Electronics And Telecommunications Research Institute Radio security leader controlling operation mode, and radio security tag supporting security mode and normal mode
DE102010028231A1 (de) * 2010-04-27 2011-10-27 Robert Bosch Gmbh Speichermodul zur gleichzeitigen Bereitstellung wenigstens eines sicheren und wenigstens eines unsicheren Speicherbereichs
US9054881B2 (en) 2010-05-14 2015-06-09 Electronics And Telecommunications Research Institute Radio frequency identification (RFID) tag and interrogator for supporting normal mode and secure mode, and operation method thereof
US9106697B2 (en) 2010-06-24 2015-08-11 NeurallQ, Inc. System and method for identifying unauthorized activities on a computer system using a data structure model
US8789189B2 (en) * 2010-06-24 2014-07-22 NeurallQ, Inc. System and method for sampling forensic data of unauthorized activities using executability states
DE102011012226A1 (de) * 2011-02-24 2012-08-30 Giesecke & Devrient Gmbh Verfahren zum Betrieb einer Mikroprozessoreinheit, insbesondere in einem mobilen Endgerät
DE102011012227A1 (de) * 2011-02-24 2012-08-30 Giesecke & Devrient Gmbh Verfahren zum Datenaustausch in einer gesicherten Laufzeitumgebung
DE102011018431A1 (de) 2011-04-21 2012-10-25 Giesecke & Devrient Gmbh Verfahren zur Anzeige von Informationen auf einer Anzeigeeinrichtung eines Endgeräts
US8914876B2 (en) * 2011-05-05 2014-12-16 Ebay Inc. System and method for transaction security enhancement
US9158924B2 (en) 2011-05-25 2015-10-13 Panasonic Intellectual Property Management Co., Ltd. Information processing apparatus and information processing method
US8495443B1 (en) 2011-05-31 2013-07-23 Apple Inc. Secure register scan bypass
KR101495653B1 (ko) * 2011-12-28 2015-02-26 노틸러스효성 주식회사 Epp 일체형 터치스크린이 구비된 금융자동화기기의 고객 정보 해킹 방지 방법
WO2013022290A1 (ko) * 2011-08-10 2013-02-14 노틸러스효성 주식회사 Epp 일체형 터치스크린 및 이를 이용한 금융자동화기기의 입력정보처리방법
US8930318B1 (en) * 2011-09-29 2015-01-06 Google Inc. Systems and methods for handling interruptions while updating of an electronic device
DE102011115135A1 (de) 2011-10-07 2013-04-11 Giesecke & Devrient Gmbh Mikroprozessorsystem mit gesicherter Laufzeitumgebung
DE102011116489A1 (de) * 2011-10-20 2013-04-25 Giesecke & Devrient Gmbh Mobiles Endgerät, Transaktionsterminal und Verfahren zur Durchführung einer Transaktion an einem Transaktionsterminal mittels eines mobilen Endgeräts
US9143943B2 (en) * 2011-11-29 2015-09-22 Dell Products L.P. Mode sensitive networking
GB2497736A (en) * 2011-12-16 2013-06-26 St Microelectronics Ltd Hardware monitor with context selector for selecting from multiple contexts
WO2013103341A1 (en) * 2012-01-04 2013-07-11 Intel Corporation Increasing virtual-memory efficiencies
US9141559B2 (en) 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
US9213828B2 (en) * 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US8667270B2 (en) 2012-02-10 2014-03-04 Samsung Electronics Co., Ltd. Securely upgrading or downgrading platform components
US20130219177A1 (en) * 2012-02-16 2013-08-22 Samsung Electronics Co. Ltd. Secure data processing device and method
KR101259824B1 (ko) * 2012-02-24 2013-04-30 주식회사 텔스카 시큐어 os를 이용한 모바일 디바이스의 비밀번호 입력 시스템 및 입력 방법
US9195497B2 (en) * 2012-03-21 2015-11-24 Microchip Technology Incorporated Microcontroller with context switch
GB2501274B (en) 2012-04-17 2020-05-13 Advanced Risc Mach Ltd Management of data processing security in a secondary processor
US9075992B2 (en) * 2012-05-01 2015-07-07 Harris Corporation Systems and methods for identifying, deterring and/or delaying attacks to a network using shadow networking techniques
KR101907486B1 (ko) * 2012-09-14 2018-10-12 한국전자통신연구원 보안성이 우수한 실행환경을 제공하는 이동 컴퓨팅 시스템
KR101954733B1 (ko) * 2012-10-26 2019-03-06 삼성전자주식회사 보안 콘텐츠를 처리하는 시스템 온 칩 및 그것을 포함하는 모바일 장치
EP2741229B1 (en) * 2012-12-07 2018-10-17 Samsung Electronics Co., Ltd Priority-based application execution method and apparatus of a dual-mode data processing device
US9268707B2 (en) 2012-12-29 2016-02-23 Intel Corporation Low overhead paged memory runtime protection
JP6106765B2 (ja) * 2013-02-05 2017-04-05 エイアールエム リミテッド メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US8931108B2 (en) * 2013-02-18 2015-01-06 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9536075B2 (en) * 2013-03-01 2017-01-03 Infineon Technologies Ag Dynamic resource sharing
US9892284B2 (en) * 2013-03-11 2018-02-13 Lantiq Beteiligungs-GmbH & Co. KG Trusted execution thread in an embedded multithreaded system
US9298911B2 (en) 2013-03-15 2016-03-29 Intel Corporation Method, apparatus, system, and computer readable medium for providing apparatus security
JP6067449B2 (ja) * 2013-03-26 2017-01-25 株式会社東芝 情報処理装置、情報処理プログラム
JP2014235326A (ja) 2013-06-03 2014-12-15 富士通セミコンダクター株式会社 システム、情報処理装置、セキュアモジュール、および検証方法
CN104243151B (zh) * 2013-06-06 2018-02-06 中国银联股份有限公司 一种基于移动设备的认证方法和认证装置
US9927995B2 (en) * 2013-06-19 2018-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Method and an integrated circuit for executing a trusted application within a trusted runtime environment
JP6117068B2 (ja) * 2013-09-20 2017-04-19 株式会社東芝 情報処理装置、およびプログラム
JP6129702B2 (ja) * 2013-09-24 2017-05-17 株式会社東芝 情報処理装置、情報処理システム、プログラム
KR101489887B1 (ko) * 2014-01-23 2015-02-06 고려대학교 산학협력단 인터럽트 처리 시스템 및 방법
US9268970B2 (en) * 2014-03-20 2016-02-23 Analog Devices, Inc. System and method for security-aware master
US20150268706A1 (en) * 2014-03-24 2015-09-24 Qualcomm Incorporated System and method for memory power management in a system on a chip with multiple execution environments
US9720868B2 (en) * 2014-07-07 2017-08-01 Xilinx, Inc. Bridging inter-bus communications
US10277616B2 (en) * 2014-09-25 2019-04-30 Vigilant Ip Holdings Llc Secure digital traffic analysis
US10394635B2 (en) 2014-10-29 2019-08-27 Hewlett Packard Enterprise Development Lp CPU with external fault response handling
CN104468997B (zh) * 2014-12-01 2017-09-19 努比亚技术有限公司 加密状态处理方法及装置
KR102327334B1 (ko) * 2014-12-31 2021-11-17 삼성전자주식회사 디스플레이 컨트롤러 및 이를 포함하는 반도체 집적회로 장치
EP3243313B1 (en) 2015-01-07 2020-09-16 GoSecure Inc. System and method for monitoring a computer system using machine interpretable code
SG10201500698YA (en) * 2015-01-29 2016-08-30 Huawei Internat Pte Ltd Method for data protection using isolated environment in mobile device
EP3241149B1 (en) * 2015-02-11 2018-12-12 Siemens Aktiengesellschaft Method to isolate real-time or safety-critical software and operating system from non-critical software and operating system
US9584628B2 (en) * 2015-03-17 2017-02-28 Freescale Semiconductor, Inc. Zero-copy data transmission system
US10063569B2 (en) * 2015-03-24 2018-08-28 Intel Corporation Custom protection against side channel attacks
US10078597B2 (en) * 2015-04-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. System and method of distinguishing system management mode entries in a translation address cache of a processor
WO2016175764A1 (en) * 2015-04-28 2016-11-03 Microsoft Technology Licensing, Llc Operating system privacy mode
US10366244B2 (en) * 2015-06-09 2019-07-30 International Business Machines Corporation Performing an operation on sensitive data
GB2539657B (en) 2015-06-22 2018-03-07 Advanced Risc Mach Ltd Tracing Processing Activity
KR102130744B1 (ko) 2015-07-21 2020-07-06 삼성전자주식회사 전자 장치 및 이의 제어 방법
US10102391B2 (en) 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9767320B2 (en) 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
WO2017034008A1 (ja) * 2015-08-25 2017-03-02 株式会社Seltech ハイパーバイザーを有するシステム
KR102429906B1 (ko) 2015-10-13 2022-08-05 삼성전자주식회사 스토리지 장치, 상기 스토리지 장치와 통신하는 호스트 및 상기 스토리지 장치를 포함하는 전자 장치
CN105447406B (zh) * 2015-11-10 2018-10-19 华为技术有限公司 一种用于访问存储空间的方法与装置
GB2557305A (en) * 2016-12-05 2018-06-20 Nordic Semiconductor Asa Memory protection logic
KR20180071679A (ko) * 2016-12-20 2018-06-28 삼성전자주식회사 사용자 단말 장치 및 그의 제어 방법
EP3547195B1 (en) 2016-12-29 2020-11-25 Huawei Technologies Co., Ltd. System-on-chip and method for switching secure operating systems
US10268379B2 (en) * 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10394454B2 (en) * 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10740496B2 (en) 2017-02-13 2020-08-11 Samsung Electronics Co., Ltd. Method and apparatus for operating multi-processor system in electronic device
RU2641226C1 (ru) * 2017-02-13 2018-01-16 Самсунг Электроникс Ко., Лтд. Способ функционирования secureos на многопроцессорных системах в мобильных устройствах
US20180275731A1 (en) * 2017-03-21 2018-09-27 Hewlett Packard Enterprise Development Lp Processor reset vectors
US10601592B2 (en) * 2017-09-08 2020-03-24 Kenneth Hugh Rose System and method trusted workspace in commercial mobile devices
US10387689B2 (en) * 2017-09-22 2019-08-20 Tocreo Labs, L.L.C. NFC cryptographic security module
US10783240B2 (en) 2017-09-29 2020-09-22 Stmicroelectronics, Inc. Secure environment in a non-secure microcontroller
US11347507B2 (en) 2018-03-15 2022-05-31 SiFive, Inc. Secure control flow prediction
SG10201808256PA (en) * 2018-09-21 2020-04-29 Singapore Management Univ Method and system for dynamically detecting, analyzing, monitoring, investigating and/or executing a live target program
US11307904B2 (en) 2018-12-18 2022-04-19 Ati Technologies Ulc Configurable peripherals
US11048515B2 (en) 2018-12-28 2021-06-29 SiFive, Inc. Way predictor and enable logic for instruction tightly-coupled memory and instruction cache
GB2580968B (en) 2019-02-01 2021-08-04 Advanced Risc Mach Ltd Lookup circuitry for secure and non-secure storage
US11216280B2 (en) * 2019-11-26 2022-01-04 Arm Limited Exception interception
GB2589895B (en) * 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
US11604505B2 (en) * 2020-12-29 2023-03-14 Qualcomm Incorporated Processor security mode based memory operation management
US11921655B2 (en) 2021-05-04 2024-03-05 Stmicroelectronics, Inc. Dynamic memory protection device system and method
US11914686B2 (en) * 2021-10-15 2024-02-27 Pure Storage, Inc. Storage node security statement management in a distributed storage cluster
FR3129499A1 (fr) * 2021-11-25 2023-05-26 STMicroelectronics (Grand Ouest) SAS Gestion dynamique d’un pare-feu de mémoire
CN115617560A (zh) * 2022-11-02 2023-01-17 地平线征程(杭州)人工智能科技有限公司 一种芯片监控方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
WO2001046800A2 (en) * 1999-12-23 2001-06-28 General Instrument Corporation Dual-mode processor

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) * 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
US4279016A (en) 1979-06-21 1981-07-14 International Business Machines Corporation Instruction pre-fetch microprocessor interrupt system
WO1990005951A1 (en) 1988-11-14 1990-05-31 Heinrich Hummel Method of handling unintended software interrupt exceptions
JP3230262B2 (ja) 1992-01-24 2001-11-19 ソニー株式会社 電子装置及びその固定情報修正方法
KR0175987B1 (ko) * 1994-10-28 1999-05-15 윌리암 티. 엘리스 데이타 처리 시스템 및 데이타 처리 방법
US5684948A (en) 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US5724027A (en) * 1995-09-28 1998-03-03 Intel Corporation Method and apparatus for providing system security to personal computer systems using transparent system interrupt
US5734910A (en) 1995-12-22 1998-03-31 International Business Machines Corporation Integrating multi-modal synchronous interrupt handlers for computer system
US5953502A (en) * 1997-02-13 1999-09-14 Helbig, Sr.; Walter A Method and apparatus for enhancing computer system security
US6321337B1 (en) 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US6282657B1 (en) 1997-09-16 2001-08-28 Safenet, Inc. Kernel mode protection
JP2000076087A (ja) 1998-08-28 2000-03-14 Hitachi Ltd マルチオペレーティングシステム制御方法
US6775779B1 (en) * 1999-04-06 2004-08-10 Microsoft Corporation Hierarchical trusted code for content protection in computers
SE515327C2 (sv) * 1999-08-27 2001-07-16 Ericsson Telefon Ab L M Anordning för att utföra säkra transaktioner i en kommunikationsanordning
WO2002071211A2 (en) 2000-11-20 2002-09-12 Zucotto Wireless, Inc. Data processor having multiple operating modes
JP2002182560A (ja) 2000-12-12 2002-06-26 Hitachi Ltd 暗号処理機能を備えた情報サーバ装置
JP2002202959A (ja) 2000-12-28 2002-07-19 Hitachi Ltd 動的な資源分配をする仮想計算機システム
US6925570B2 (en) 2001-05-15 2005-08-02 International Business Machines Corporation Method and system for setting a secure computer environment
EP1331539B1 (en) * 2002-01-16 2016-09-28 Texas Instruments France Secure mode for processors supporting MMU and interrupts
US7165135B1 (en) * 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
KR100941104B1 (ko) * 2002-11-18 2010-02-10 에이알엠 리미티드 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
GB2396713B (en) * 2002-11-18 2005-09-14 Advanced Risc Mach Ltd Apparatus and method for controlling access to a memory unit
AU2003278342A1 (en) * 2002-11-18 2004-06-15 Arm Limited Security mode switching via an exception vector
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7322042B2 (en) * 2003-02-07 2008-01-22 Broadon Communications Corp. Secure and backward-compatible processor and secure software execution thereon
EP1496435A1 (en) * 2003-07-11 2005-01-12 Yogitech Spa Dependable microcontroller, method for designing a dependable microcontroller and computer program product therefor
US7178015B2 (en) * 2004-01-12 2007-02-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
US7296146B2 (en) * 2004-01-12 2007-11-13 Hewlett-Packard Development Company, L.P. Security measures in a partitionable computing system
US7653802B2 (en) * 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US20070266444A1 (en) * 2004-12-03 2007-11-15 Moshe Segal Method and System for Securing Data Stored in a Storage Device
EP1865435A1 (en) * 2006-06-06 2007-12-12 Texas Instruments France Enhanced exception handling
US7529916B2 (en) * 2006-08-16 2009-05-05 Arm Limited Data processing apparatus and method for controlling access to registers
US7689733B2 (en) * 2007-03-09 2010-03-30 Microsoft Corporation Method and apparatus for policy-based direct memory access control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
WO2001046800A2 (en) * 1999-12-23 2001-06-28 General Instrument Corporation Dual-mode processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016140548A1 (ko) * 2015-03-05 2016-09-09 삼성전자 주식회사 사용자 디바이스에 보안 모드를 제공하기 위한 방법 및 장치
KR20160108136A (ko) * 2015-03-05 2016-09-19 삼성전자주식회사 사용자 디바이스에 보안 모드를 제공하기 위한 방법 및 장치
KR102474243B1 (ko) 2015-03-05 2022-12-06 삼성전자주식회사 사용자 디바이스에 보안 모드를 제공하기 위한 방법 및 장치

Also Published As

Publication number Publication date
TWI275997B (en) 2007-03-11
AU2003274383A1 (en) 2004-06-15
JP4423206B2 (ja) 2010-03-03
EP1563375A1 (en) 2005-08-17
IL164512A (en) 2010-02-17
RU2005115083A (ru) 2006-01-20
DE60308215D1 (de) 2006-10-19
GB2402785A (en) 2004-12-15
US7849310B2 (en) 2010-12-07
GB2402785B (en) 2005-12-07
JP2006506751A (ja) 2006-02-23
EP1563375B1 (en) 2006-09-06
US20040153672A1 (en) 2004-08-05
IL164512A0 (en) 2005-12-18
TW200411555A (en) 2004-07-01
WO2004046924A1 (en) 2004-06-03
GB0421627D0 (en) 2004-10-27
KR20050086673A (ko) 2005-08-30
DE60308215T2 (de) 2007-08-23

Similar Documents

Publication Publication Date Title
KR100955284B1 (ko) 보안 모드와 비보안 모드 사이의 프로세서 전환하는 데이터 처리장치, 데이터 처리방법 및 컴퓨터 판독가능한 기록매체
KR100941104B1 (ko) 데이터 처리 장치, 데이터 처리 방법 및 컴퓨터 프로그램을 기억한 컴퓨터 판독가능한 기억매체
KR101099463B1 (ko) 보안 도메인과 비보안 도메인을 갖는 시스템 내에서 가상메모리 어드레스의 물리적 메모리 어드레스로의 매핑
KR101015456B1 (ko) 디바이스에 의한 메모리로의 억세스 제어
JP4302493B2 (ja) データ処理装置内のメモリへアクセスするための技術
JP4424973B2 (ja) マルチドメインプロセッサのためのモニタ制御
JP4302492B2 (ja) メモリへのアクセスを管理するための装置および方法
JP4299107B2 (ja) サスペンドされたオペレーティングシステムへデータ処理リクエストを送る方法
US7171539B2 (en) Apparatus and method for controlling access to a memory
JP4302494B2 (ja) データ処理装置内のメモリへアクセスするための技術
JP4423012B2 (ja) マルチドメインプロセッサのための診断データ捕捉制御
WO2004046925A1 (en) Security mode switching via an exception vector
IL167597A (en) Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
JP2004171568A (ja) 多数のオペレーティングシステムを使用するデータ処理システムにおける多数の割り込みの取り扱い
IL168336A (en) Control of access to a memory by a device
JP4299108B2 (ja) 多数のオペレーティングシステムの間のタスクの追従

Legal Events

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

Payment date: 20160318

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 8