KR102383900B1 - 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산 - Google Patents

타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산 Download PDF

Info

Publication number
KR102383900B1
KR102383900B1 KR1020167024133A KR20167024133A KR102383900B1 KR 102383900 B1 KR102383900 B1 KR 102383900B1 KR 1020167024133 A KR1020167024133 A KR 1020167024133A KR 20167024133 A KR20167024133 A KR 20167024133A KR 102383900 B1 KR102383900 B1 KR 102383900B1
Authority
KR
South Korea
Prior art keywords
memory
region
memory address
secure
address
Prior art date
Application number
KR1020167024133A
Other languages
English (en)
Other versions
KR20160119140A (ko
Inventor
토마스 크리스토퍼 그로커트
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20160119140A publication Critical patent/KR20160119140A/ko
Application granted granted Critical
Publication of KR102383900B1 publication Critical patent/KR102383900B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

데이터 처리장치(2)는, 처리회로(4)에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하는 기억영역들(9)을 갖는 메모리 속성 유닛(7)을 갖는다. 타겟 메모리 어드레스에 응답하여, 상기 처리회로(4)는, 기억영역들 중 어느 영역이 타겟 메모리 어드레스에 대응한지를 식별하는 영역식별 값을 출력하도록 영역식별 연산을 행할 수 있다. 상기 영역식별 값은 상기 데이터 처리장치(2)에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 된다. 이것은, 어드레스들의 범위의 액세스 허용을 빠르게 체크거하거나 어떻게 메모리 속성 유닛을 갱신하는지를 판정하는데 유용할 수 있다.

Description

타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산{REGION IDENTIFYING OPERATION FOR IDENTIFYING REGION OF A MEMORY ATTRIBUTE UNIT CORRESPONDING TO A TARGET MEMORY ADDRESS}
본 기술은, 데이터 처리 분야에 관한 것이다. 보다 구체적으로, 본 기술은, 메모리에의 액세스를 제어하기 위한 속성 데이터를 기억하는 메모리 속성 유닛을 갖는 데이터 처리장치에 관한 것이다.
데이터 처리장치는, 처리회로에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하는( 메모리 보호 유닛 등의) 메모리 속성 유닛을 가질 수도 있다. 메모리 액세스를 필요로 할 때, 메모리 속성 유닛은 타겟 어드레스를 포함한 어드레스 범위에 대응한 속성 데이터를 검색하고, 히트(hit)가 있을 경우, 판독 또는 기록 액세스가 허용되는지를 상기 속성 데이터에 의거하여 판정한다.
본 발명의 배경이 되는 기술은 미국 특허공보 US7068545(2006.06.27)에 개시되어 있다.
본 기술의 일 측면에서 본 데이터 처리장치는,
데이터 처리를 행하도록 구성된 처리회로; 및
상기 처리회로에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 각각 구성된 복수의 기억영역을 포함하는 메모리 속성 유닛을 구비하고;
타겟 메모리 어드레스에 응답하여, 상기 처리회로는, 상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역인지를 판정하고, 상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 타겟 메모리 어드레스에 대한 상기 매칭 기억영역인지를 식별하는 영역식별 값을 출력하기 위해 영역식별 연산을 행하도록 구성되고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 된다.
본 기술에 의해 인식한 것은, 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 상기 영역식별 값을 사용 가능하게 하도록, 메모리 속성 유닛의 상기 기억영역들 중 어느 영역이 특정 타겟 어드레스에 대응하는지를 식별하는 영역식별 값을 출력하기 위해 영역식별 연산을 상기 처리회로가 행하는 것이 유용할 수 있는 경우들이 있다는 것이다. 이것은, 전형적으로 상기 속성 데이터 자체만이 상기 메모리 속성 유닛을 검색할 때 얻어질 것이므로 특이하다. 주어진 어드레스에 대한 속성 데이터가 상기 기억영역 중 어느 하나에 배치될 수 있으므로, 보통 주목하는 어느 기억영역이 특별한 타겟 어드레스에 매핑하는지를 고려하지 않는다. 그렇지만, 본 기술에 의해 인식한 것은, 상기 영역식별 연산이, 예를 들면, 어드레스들의 범위에 체킹 액세스 허용을 고속화하는데 도움이 될 수 있다는 것이다. 상기 영역식별 연산 없이, 어드레스들의 전체 범위에의 액세스가 허용되는 체킹은 그 범위에서 개개의 어드레스마다 허용이 체크될 필요가 있다. 그렇지만, 소프트웨어에 상기 영역식별 값을 이용함으로써, 상기 범위의 시작 및 종료 어드레스 양쪽이 동일한 기억영역에 관계하는지를 알기 위해서 이 시작 및 종료 어드레스와 어느 기억영역이 관련되는지를 체크하는 것이 가능하다. 가능할 경우, 어드레스들의 전체 범위에 대한 액세스 허용이 동일하고, 그래서, 개개의 어드레스마다 그 허용을 체크하는 것이 불필요하기 때문에 성능을 향상시키고 전력 소모를 감소시킨다. 상기 시작 및 종료 어드레스가 동일하지 않은 경우에도, 상기 영역식별 연산은, 체크의 수를 감소시키도록, 액세스 허용이 변경하는 포인트를 결정하는데 사용될 수 있다. 이하 설명하는 것처럼, 상기 영역식별 연산도, 메모리 속성 유닛을 갱신할 때 새로운 콘텍스트, 프로세스 또는 라이브러리용 속성을 들여오는데 도움이 될 수 있다.
타겟 메모리 어드레스는 물리 어드레스이고, 이것이 의미하는 것은, 상기 메모리 속성 유닛이 연속적 타겟 메모리 어드레스들을, 상기 처리회로와 상기 메모리 사이의 경계에서의 연속적 메모리 어드레스들에 매핑한다(달리 말하면, 연속적 타겟 메모리 어드레스들이 상기 메모리에 출력으로서 연속적 어드레스들에 매핑한다)는 것이다. 많은 경우에, 상기 메모리에 출력된 어드레스들은, 대응한 타겟 어드레스들과 동일한 어드레스들이어도 된다. 그렇지만, 상기 메모리 속성 유닛이, 상기 메모리에 출력된 어드레스를 생성하기 위해 상기 처리회로로부터 수신된 타겟 어드레스 모두에 상수를 가산하는 것 등의 단순한 매핑을 적용하는 것도 가능하고, 이 경우도 물리 타겟 어드레스를 사용하는데 고려된다. 이것은, 프로세서에 의해 특정된 것과 같은 가상 타겟 어드레스들로부터 메모리에 출력된 물리 어드레스들로의 임의의 어드레스 변환을 제공하는 메모리 관리 유닛과 대조를 이룬다. 상기 메모리 관리 유닛에 있어서, 연속적 타겟 어드레스들은, 메모리에 출력된 비연속적 어드레스들에 매핑될 수 있다. 본 기술의 영역식별 연산은, 메모리 관리 유닛에 그렇게 유용하지 않은데, 왜냐하면 통상, 상기 어드레스 변환이 상대적으로 작게(예를 들면, 4K 어드레스들) 되는 메모리 어드레스들의 페이지들의 입도에서 구현되어서, 단일의 프로세스나 프로그램이 많은 다른 페이지에 대응한 어드레스들을 사용할 가능성이 있기 때문이다. 이것은, 상기 영역식별 연산을 사용하여 상술한 것처럼 필요한 체킹의 양을 감소시킬 가능성이 훨씬 보다 적은 것을 의미하는데, 그 이유는 상기 시작 및 종료 어드레스가 종종 동일한 프로세스에 관련되는 경우에도 상기 메모리 관리 유닛의 다른 페이지들에 대응하기 때문이다. 이와 대조하여, 물리 어드레스를 타겟 어드레스로서 사용하는 메모리 속성 유닛에서는, 그 메모리 속성 유닛의 단일의 기억영역에 대응한 어드레스 범위들은 상기 메모리 관리 유닛에 대해서 훨씬 크게 되고, 종종 단일의 프로그램에서 사용한 어드레스 범위 전체는 단일의 기억영역에 대응한다. 이 때문에, 상기 시작 및 종료 어드레스가 동일한 기억영역과 관련되는 것을 상기 영역식별 연산이 찾을 가능성이 훨씬 많아서, 상술한 것처럼 체킹할 때 감소를 허가한다.
상기 영역식별 연산은 다른 방식으로 기동될 수 있다. 예를 들면, 상기 타겟 메모리 어드레스를 특정하는 전용 영역식별 명령어를 제공하여도 된다. 프로그래머는, 상기 처리회로를 기동하여 상기 영역식별 연산을 행하고 영역식별 값을 출력하기 위해 코드에 상기 식별영역 명령어를 포함할 수 있다.
이와는 달리, 전용 영역식별 명령어가 없을 수도 있다. 대신에, 타겟 메모리 어드레스에 기록될 때, 상기 타겟 메모리 어드레스와 관련된 영역을 식별하기 위해 상기 처리회로를 기동하여 상기 영역식별 연산을 행하는 소정의 레지스터를 구비하여도 된다. 예를 들면, 범용 스토어나 무브 명령어는 타겟 메모리 어드레스를 상기 소정의 레지스터에 기록하는데 사용되어도 된다.
상기 영역식별 연산은, 항상 유효영역 식별 값을 리턴할 필요가 없다. 무효영역 식별 값이 출력될 수도 있는 경우가 여러 가지가 있을 수도 있다. 예를 들면, 무효영역 식별 값은,
(a) 상기 메모리 속성 유닛이 사용 불가능한 경우; 또는
(b) 상기 타겟 메모리 어드레스가 복수의 영역 중 어느 하나에도 대응하지 않는 경우; 또는
(c) 상기 타겟 메모리 어드레스가 복수의 영역 중 2개 이상에 대응하는 경우;
(d) 상기 타겟 메모리 어드레스가, 사용 가능한 복수의 영역 중 2개 이상에 대응하는 경우; 또는
(e) 상기 타겟 메모리 어드레스가, 사용 가능한 복수의 영역 중 어느 하나에도 대응하지 않는 경우; 또는
(f) 상기 영역식별 연산이, 보안(security) 특권이 상기 영역식별 값을 결정하기에 불충분한 연산의 모드에 상기 처리회로가 있을 때, 행해지는 경우에, 출력되어도 된다. 주어진 데이터 처리장치는, 이들 표준의 전부를 적용할 필요는 없고 개개의 영역 식별 값이 출력되어야 하는지를 검출하기 위해 이들 표준의 어느 하나 이상을 적용하여도 된다.
무효영역 식별 값은 다른 방식으로 표현되어도 된다. 일례에서, 상기 무효영역 식별 값은, 메모리 속성 유닛의 실제 기억영역을 표현하지 않는 소정을 값을 사용하여 표현되어도 된다. 예를 들면, 상기 메모리 속성 유닛의 기억영역들이 0과 양의 정수 사이의 수들을 사용하여 표현되는 경우, 음의 값(예를 들면, -1)은 무효영역 식별 값을 가리키는데 사용될 수 있다. 이와는 달리, 무효영역 식별 값은 영역식별 값과 함께 출력되고 상기 관련된 영역 식별 값이 무효인 것을 가리키는 값으로 설정되는 무효 플래그를 사용하여 표현되어도 된다. 이 경우에, 상기 영역 식별 값은, 그 외에는 상기 메모리 속성 유닛의 실제 영역에 신호를 보내지만, 유효영역을 표현하지 않는 것인 무효 플래그에 의해 나타낸 값(예를 들면, 제로)을 갖기도 한다.
상기 (f)의 경우에 관하여, 일부의 상황에서, 주어진 어드레스와 관련된 기억영역이 유저가 프로그램에 사용 가능해지는 것이 바람직하지 않을 수도 있어서, 보안 특권이 상기 영역식별 값을 결정하는데 불충분한 상태에 있을 때 상기 영역식별 연산이 행해질 경우, 무효영역 식별 값이 출력되어도 된다. 상기 영역식별 값과 함께 출력된 무효 플래그를 사용하여 무효 값을 표현하는 경우에, 상기 영역식별 값으로부터 정보를 얻는 보안 특권이 불충분한 프로세스를 방지하기 위해 소정의 값(예를 들면, 제로)으로 상기 대응한 영역식별 값을 설정하는데 유용할 수 있다. 예를 들면, 보안 상태와 비보안 상태를 갖는 시스템에 있어서, 보안 상태에서 사용된 메모리 속성 유닛의 기억영역들에 대한 정보를 액세스하는 비보안 상태에서의 코드를 방지하는 것이 바람직할 수도 있는데, 그 이유는 공격자가 이 정보를 사용하여, 공격을 돕는데 사용될 수 있는 보안 상태에서 사용한 어드레스 맵에 대한 정보를 결정할 수 있기 때문이다. 비보안 상태에서 리턴중인 유효영역 식별 연산을 방지함으로써, 보안이 유지될 수 있다.
영역식별 값뿐만 아니라, 상기 처리회로도 상기 영역식별 연산을 행할 때 추가의 정보를 출력하여도 된다. 예를 들면, 이 추가의 정보는,
· 상기 매칭 기억영역에 기억된 속성 데이터의 적어도 일부,
· 상기 매칭 기억영역에 기억된 속성 데이터의 적어도 일부로부터 얻어진 정보,
· 상기 매칭 기억영역에 대한 메모리 어드레스 범위와 관련된 보안 상태의 표시, 또는
· 상기 매칭 기억영역에 대한 메모리 어드레스 범위의 시작 또는 종료 어드레스에 대응한 값들 중, 어느 하나 이상을 포함하여도 된다.
상기 영역식별 연산을 행하는 상황에 있어서, 종종 이 어드레스에 대한 속성 데이터 또는 보안 상태 등의 타겟 어드레스에 대한 추가의 정보를 체크하는데 필요하므로, 상기 영역식별 연산에 응답하여 상기 추가의 정보를 출력함으로써 이것은 그 추가의 정보를 체크하기 위해 별도의 연산을 행할 필요를 제거한다. 메모리 속성 유닛의 하드웨어는, 어떤 경우에도 검색에 응답하여 상기 추가의 정보를 리턴하여도 되어서, 그 추가의 정보를 출력하기 위해 상기 영역식별 연산을 확장하기 위해서 하드웨어를 거의 변형할 필요가 없을 수도 있다.
상기 메모리 어드레스 범위의 시작 또는 종료 어드레스일 경우, 상기 추가의 정보는, 이들 시작 또는 종료 어드레스를 명백하게 표현할 필요가 없다. 그 시작 또는 종료 어드레스를 얻는데 사용될 수 있는 어떠한 값도 사용될 수 있다. 예를 들면, 어드레스 값 자체 대신에, 그 어드레스들은, 속성들을 정의하는 메모리 어드레스 범위가 2의 제곱 어드레스 경계들과 정렬되어야 하는 경우 2의 제곱의 배수를 사용하여 표현될 수 있다. 또한, 상기 종료 어드레스는, 시작 어드레스에 대한 종료 어드레스의 오프셋을 표현하는 값이나, 어드레스 범위의 총 사이즈를 사용하여 표현되어도 되고, 마찬가지로, 그 오프셋도 2의 제곱으로서 표현되어도 된다.
상기 영역식별 연산으로 출력된 영역식별 값은, 상기 처리회로에 의해 목적지 레지스터의 적어도 일부에 기록되어도 된다. 따라서, 상기 영역식별 값은 다음의 명령어에서 사용하는데 이용가능해질 수도 있다. 이렇게 프로그래머들에 그 영역식별 값을 사용 가능하게 하는 것은, 통상 프로그래머가 주어진 어드레스에 대응한 속성 데이터에만 관심을 가지고 어느 기억영역이 그 어드레스의 속성 데이터를 기억하는 지에는 관심을 가지고 있지 않을 것이므로 특이하다. 목적지 레지스터는, 상술한 영역식별 명령어에 의해 특정되어도 되거나, 상기 처리회로가 상기 영역식별 값을 기록해야 하는 디폴트 레지스터일 수 있다. 상기 영역식별 값뿐만 아니라, 그 밖의 파라미터 이를테면, 무효 플래그나 상술한 추가의 정보도, 그 목적지 레지스터에 기록되어도 된다.
상기 영역식별 값은 다른 방식으로 표현되어도 된다. 일례에서, 상기 영역식별 값은, 상기 매칭 기억영역의 영역 번호를 포함하여도 된다. 그 영역 번호는 다른 방식으로 발생되어도 된다. 일례에서, 상기 메모리 속성 유닛은, 타겟 어드레스의 검색에 응답하여 상기 영역 번호를 발생하여도 된다. 통상의 메모리 속성 검색을 행하여 주어진 어드레스의 속성 데이터를 찾기 위해서, 상기 메모리 속성 유닛은, 일반적으로 영역마다 어드레스 범위에 대한 타겟 어드레스를 비교하기 위한 비교기들을 가지고, 그래서 이들 비교기들에 의해 생성된 히트 신호들은 상기 영역 번호를 얻는데 사용되어도 된다. 이와는 달리, 각 기억영역은, 그 영역을 식별하는 영역 번호를 기억하여도 된다. 이 경우에, 그 영역식별 연산을 행할 때, 상기 처리회로는 그 영역 번호를 상기 매칭 기억영역으로부터 얻기 위해 상기 메모리 속성 유닛을 제어하고 나서, 상기 처리회로는 상기 영역 번호를 출력한다.
또한, 상기 영역식별 값은, 주어진 어드레스와 관련된 기억 영역을 가리키는 다른 파라미터일 수 있다. 예를 들면, 메모리 속성 유닛의 다른 영역들에 대응한 상기 메모리 어드레스 범위가 중첩하지 않는 경우, 각 메모리 어드레스 범위의 시작 어드레스나 종료 어드레스는, 상기 처리회로에 의해 보여진 것처럼, 그 범위의 속성 데이터를 기억하는 기억영역을 식별할 수 있다.
상기 메모리 속성 유닛은, 주어진 메모리 어드레스의 메모리 액세스를 행하기 위한 상기 처리회로의 능력을 제어하는 속성 데이터를 기억하는 임의의 유닛을 구비하여도 된다. 예를 들면, 상기 메모리 속성 유닛은, 보다 많은 보안 상태와 비보안 상태 사이의 경계를 적용하거나, 특정한 소프트웨어(예를 들면, 응용 소프트웨어에 의해, 운영체계나 하이퍼바이저와 관련된 어드레스 범위를 액세스할 수 없을 수도 있다)에 액세스 불가능한 것으로서 특정한 어드레스 범위를 설정하는데 사용되어도 된다.
일부의 경우에는, 상기 처리장치내에 메모리 속성 유닛의 하나보다 많은 타입이 있을 수도 있다. 하나보다 많은 타입이 있을 경우, 제1 메모리 속성 유닛내의 어느 영역이 타겟 어드레스에 대응하고 제2 메모리 속성 유닛내의 어느 영역이 그 타겟 어드레스에 대응하는지를 식별하는데 필요할 수도 있다. 이 타입의 연산을 고속화하기 위해서, 상기 영역식별 연산은, 상기 제1 메모리 속성 유닛에 대응한 제1 식별 값과, 상기 제2 메모리 속성 유닛에 대응한 제2 식별 값의 양쪽을 출력하여도 된다. 예를 들면, 단일의 영역식별 명령어는, 2개의 별도의 명령어를 실행하는데 필요하지 않도록 2개(또는 이상)의 다른 영역 식별 값을 리턴시켜, 처리를 고속화하여도 된다.
상기 영역식별 연산이 2개 이상의 메모리 속성 유닛의 대응한 영역들을 식별하는 경우에, 상기 영역식별 연산이, 제1 메모리 속성 유닛의 대응한 제1 기억영역에 기억된 제1 속성 데이터의 적어도 일부와 제2 메모리 속성 유닛의 대응한 제2 기억영역에 기억된 제2 속성 데이터의 적어도 일부를 사용하여 합성 속성 파라미터를 결정하는 것도 매유 유용할 수 있다. 예를 들면, 상기 제1 및 제2 메모리 속성 유닛은, 주어진 메모리 어드레스에 액세스하기 위한 조건을 다르게 설정하여도 되고, 액세스 허가 여부를 판정하기 위해서 양쪽의 메모리 속성 유닛에서 속성 데이터를 고려할 필요가 있을 수도 있다. 각각의 메모리 속성 유닛으로부터의 속성 데이터를 상기 영역식별 연산의 일부로서 사용하여 상기 합성 속성 파라미터를 얻음으로써, 이것은, 메모리 액세스 허가 여부를 체크하는데 필요한 명령어의 수를 감소시킬 수 있다. 예를 들면, 일부의 명령어 세트에는, 하나의 레지스터내의 단일의 비트가 필요한 값을 갖는지를 상대적으로 쉽게 체크할 수 있는 명령어들이 있지만, 2개 이상의 비트가 필요한 값들을 갖는지를 체크하는 것은 보다 복잡하고 수개의 명령어가 필요할 수도 있다. 상기 영역식별 연산은, 양쪽의 유닛에서의 액세스 허용이 빠르게 체크될 수 있고 효율적으로 보다 적은 명령어를 사용할 수 있도록 상기 제1 및 제2 메모리 속성 유닛으로부터의 2개 이상의 정보를 단일의 비트로 감소시키는데 사용될 수 있다.
본 기술은, 적어도 보안 도메인과 비보안 도메인으로 이루어진 다중 도메인 연산을 갖는 처리회로를 갖는 시스템에서 특히 유용하다. 상기 처리회로가 보안 도메인에서 작동중일 때, 상기 처리회로는, 처리회로가 비보안 도메인에서 작동중일 때 액세스 불가능한 적어도 일부의 데이터에 액세스한다. 상기 메모리 속성 유닛은, 보안 도메인에서만 어느 어드레스가 액세스 가능한지와, 보안 도메인과 비보안 도메인 양쪽의 도메인에서 어느 어드레스가 액세스 가능한지를 판정하는데 사용될 수 있다. 상기 영역식별 연산을 사용함으로써, 어드레스 전체의 범위가 동일한 기억영역에 관계하는지를 빠르게 체크할 수 있어, 어드레스마다 개별적으로 액세스 속성들을 체크할 필요가 없으므로, 처리를 고속화하고 전력 소모를 줄일 수 있다.
보안 도메인과 비보안 도메인의 형태는 다양하다. 일례에서, 상기 보안 도메인은 운용체계 오퍼 등의 특권 코드가 실행될 수 있는 특권상태에 대응하여도 되고, 상기 비보안 도메인은 애플리케이션 소프트웨어 등의 비특권 코드들이 실행되는 비특권 상태에 대응할 수 있다. 그렇지만, 그 밖의 시스템에는, 뱅킹 애플리케이션이나 안전상 중요한 코드 등의 보안상 중요 코드를 실행하기 위한 개인 도메인에 해당한 보안 도메인을 갖는 동일한 디바이스상에서 동작하는 2개 이상의 "월드(worlds)"와, 비보안상 중요한 코드를 실행하기 위한 공용 도메인에 해당하는 비보안 도메인과의 사이에서의 완전한 분할이 존재하기도 한다. 일부의 실시예에서, 상기 개인 도메인과 공용 도메인은, 그 도메인내에 서브상태들, 이를테면 상술한 비특권 상태와 특권 상태를 갖지 않을 수도 있다. 일반적으로, 보다 보안적인 상태와 비보안 상태 사이의 임의의 경계에 대해서, 상기 메모리 속성 유닛은 그 경계를 적용하는데 사용될 수 있고, 본 기술은, 한 쌍의 어드레스가 동일한 영역에 관계하는 경우, 임의의 매개 어드레스가 동일한 속성 데이터를 가진다고 판정될 수 있도록, 상기 메모리 속성 유닛의 어느 영역이 주어진 타겟 어드레스에 속하는지를 체크하는데 유용할 수 있다.
일례에서, 상기 메모리 속성 유닛은, 복수의 도메인 중 어느 도메인이 특정 메모리 어드레스와 관련되어 있는지를 판정하는데 사용되는 보안 보호 유닛을 구비하여도 된다. 그 보안 보호 유닛은 이렇게 다른 방식으로 구현되어도 된다. 대응한 어드레스 범위가 보안 도메인 또는 비보안 도메인에 관계하는지를 특정하는 보안 플래그를 포함하는 속성 데이터를 기억하는 것이 가능하다. 이와는 달리, 그 도메인들 중 적어도 하나의 도메인에 대해서, 그 도메인에 관련된 어드레스 범위들은, 보안 보호 유닛에 속성 데이터가 없는 임의의 어드레스 범위가 그 도메인과 관련되어 있다고 가정함으로써, 보안 보호 유닛에서 암시적으로 식별될 수도 있다. 따라서, 어드레스 공간에서 어드레스 모두에 대한 보안 보호 유닛에 속성 데이터를 기억할 필요가 없다. 예를 들면, 상기 보안 보호 유닛은 보안 도메인에 해당한 어드레스 범위들을 규정하는 데이터를 포함하여도 되고, 타겟 어드레스가 보안 보호 유닛에 실패하는 경우, 그것이 비보안 도메인(또는 그 반대)과 관련된다고 가정하여도 된다. 2개보다 많은 도메인이 있는 경우, 그 도메인들 중 한 개 빼고는 모든 도메인이 보안 보호 유닛에 나타내어질 수도 있고, 그 보안 보호 유닛에 실패한 어드레스들은 나머지 도메인에 대응한다고 가정될 수 있다.
일부의 실시예에서, 상기 보안 보호 유닛도, 예를 들면 보안 어드레스 범위에 기억된 명령어가 보안 도메인에서 실행되어야 하고 비보안 어드레스 범위에 기억된 명령어가 비보안 도메인에서 실행되어야 한다고 가정하면, 제1 장소의 보안 도메인 또는 비보안 도메인에서 동작하는지를 판정하는데 사용되어도 된다. 일부의 예에서, 상기 보안 보호 유닛은 어드레스 범위와 관련된 보안상태 또는 비보안 상태이외의 임의의 다른 액세스 허용을 규정할 필요는 없다.
비보안 도메인에서 실행하는 코드가, 보안 보호 유닛의 어느 영역이 어느 어드레스에 대응하는지를 판정하게 하는 것이 바람직하지 않을 수도 있다. 공격자는, 이 정보를 사용하여 보안 위반을 일으킬 수도 있다. 이를 해결하기 위해서, 상기 처리회로는, 상기 처리회로가 비보안 도메인에서 작동중일 때 그 영역식별 연산이 성공적으로 실행되는 것을 막기도 한다. 일반적으로, 상기 처리회로는, 상기 영역식별 연산이 비보안 도메인에 있는 동안 실행되는 경우 보안 보호 유닛의 영역식별 값의 출력을 금지시킬 수도 있다. 이는 다른 방식으로 이루어질 수도 있다. 예를 들면, 상기 처리회로는, 상술한 것처럼 무효영역 식별 값을 출력하여도 되거나, 에러 또는 폴트는 상기 영역식별 연산이 비보안 도메인에 있는 동안 시도되는 경우 일어날 수도 있다. 상기 보안 보호 유닛과 관련된 영역식별 값이 출력되지 않은 경우에도, 다른 메모리 속성 유닛용 영역식별 값은, 이것이 데이터 처리장치의 현재의 상태 동안 허용되면 그래도 출력될 수도 있다.
메모리 속성 유닛의 다른 형태로서는, 메모리 어드레스 범위에의 액세스를 제어하기 위한 판도 또는 기록 허용 등의 속성 데이터를 기억하는 메모리 보호 유닛(MPU)이 있다. 상술한 것처럼 MPU와 보안 및 비보안 도메인을 포함하는 시스템에 있어서, 다수의 MPU는 다른 도메인들에 대응하게 구비되어도 된다. 예를 들면, 보안 MPU는 보안 도메인을 동작할 때 어드레스 범위들에의 액세스를 제어하는데 사용된 속성 데이터를 기억하여도 되고, 대응한 비보안 MPU는 비보안 도메인에서 동작할 때 사용될 수 있고, 비보안 코드는 보안 MPU에 액세스하는 것을 막을 수 있다. 일부의 실시예에서는 보안 및 비보안 MPU가 전체적으로 분리되어도 되지만, 각각의 MPU가 일부의 회로를 공유하는 것도 가능하다. 예를 들면, 상기 보안 및 비보안 MPU 중 한쪽만이 한 번에 활성상태가 된다고 예상되면, 별개의 기억영역들이 이들 유닛을 위한 속성 데이터를 기억하기 위해 구비되어도 되지만, 공통 세트의 비교기들은, 각 기억영역에 규정된 어드레스 범위들과 타겟 어드레스를 비교하기 위한 MPU들간에 공유되어도 된다.
따라서, 보안 보호 유닛과 하나 이상의 MPU 양쪽이 존재하여도 된다. 일례에서, 상기 영역식별 연산은, 제1 영역식별 값과 제2 영역식별 값을 상술한 것처럼 출력하여도 되고, 이때 상기 제1 값은 보안 보호 유닛에 대응하고, 상기 제2 값은 상기 MPU들 중 하나에 대응한다.
다수의 MPU가 있을 경우, 상기 영역식별 연산도, 상기 MPU들 중 어느 MPU를 사용하여 영역식별 값을 결정해야 하는지를 선택하여도 된다. 예를 들면, 이것은, 보안 및 비보안 MPU 중 어느 것이 대응한 영역을 결정하기 위해 액세스되어야 하는지를 가리키는 영역식별 명령어에서의 파라미터를 특정함으로써 행해질 수 있다. 이와는 달리, 전용 레지스터에의 기록이 상기 영역식별 연산을 기동할 경우에, 선택된 MPU는, 상기 레지스터에 플래그를 배치함으로써, 또는 타겟 어드레스에 의해 레지스터가 기록되는 선택이 MPU가 액세스되는지를 판정하도록 상기 다른 MPU들에 대응한 다른 전용 레지스터를 설치함으로써, 유저에 의해 선택되어도 된다. 이렇게 하여, 유저는, 어느 영역이 타겟 어드레스에 대응하는지를 판정하기 위해 상기 MPU중 어느 MPU가 질문을 받는지를 제어할 수 있다.
비보안 도메인에 있어서는, 유저가 상기 보안 MPU의 어느 영역이 주어진 어드레스에 대응하는지를 찾을 수 있는 것이 적절하지 않을 수도 있다. 상기 영역식별 연산이 프로세서가 비보안 도메인에서 작동중인 상태에서 보안 MPU를 그 선택된 MPU로서 선택하려고 시도하는 경우, 보안 MPU의 기억영역을 식별하는 영역식별 값의 출력은 금지되어도 된다. 상술한 것처럼, 이것은 무효값을 출력하거나 에러나 폴트의 신호를 보내는 것 등의 다른 방식으로 실시되어도 된다.
본 기술의 다른 측면에서 본 데이터 처리장치는,
데이터 처리를 행하는 처리수단; 및
상기 처리수단에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하는 복수의 기억영역 수단을 포함하는 메모리 속성 유닛 수단을 구비하고,
타겟 메모리 어드레스에 응답하여, 상기 처리수단은, 상기 메모리 속성 유닛 수단의 상기 복수의 기억영역 수단 중 어느 영역수단이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역 수단인지를 판정하고, 상기 메모리 속성 유닛 수단의 상기 복수의 기억영역 수단 중 어느 영역수단이 상기 타겟 메모리 어드레스를 포함하는 메모리 어드레스 범위에 대응한 것으로서 상기 메모리 속성 유닛 수단에 의해 나타낸 상기 매칭 기억영역 수단인지를 식별하는 영역식별 값을 출력하기 위해 영역식별 연산을 행하도록 구성되고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 된다.
본 기술의 또 다른 측면에서 본, 처리회로에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 각각 구성된 복수의 기억영역을 포함하는 메모리 속성 유닛을 구비한 데이터 처리장치의 데이터 처리방법은, 타겟 메모리 어드레스에 응답하여, 영역식별 연산을 행하는 단계를 포함하되, 상기 영역식별 연산은,
상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역인지를 판정하는 것; 및
상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 매칭 기억영역인지를 식별하는 영역식별 값을 출력하는 것을 포함하고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 된다.
상기 방법의 일례에서는, 상기 영역식별 연산은 비보안 도메인에서 실행하는 코드에 의해 설정된 하나 이상의 메모리 어드레스를 사용하여 보안 도메인에서 실행된 함수의 일부로서 행해져도 되고, 상기 영역식별 연산용 타겟 메모리 어드레스는 비보안 도메인에서 보내진 메모리 어드레스 중 하나이어도 된다. 비보안 도메인에 의해, 보안 도메인에서의 타겟 어드레스와 비보안 도메인으로부터 보내진 함수에서 사용한 하나 이상의 어드레스에 함수가 호출되는 경우에, 비보안 도메인이 보안 어드레스에서 보낼 수 있고 그 후 이 어드레스가 보안 도메인에서 액세스되는 공격 가능성이 있다. 보안 도메인에서 보안 어드레스들에의 액세스들이 보통 허가되므로, 이것은, 비보안 코드가 보안 어드레스들에의 액세스들을 제어할 수 있는 보안 허점을 제공하기도 한다. 그렇지만, 보안 도메인에서 함수에서의 영역식별 연산을 실행함으로써, 이것은 비보안 도메인에서 보내진 어드레스들에 메모리 속성 유닛 영역이 대응하는지를 체크할 수 있고, 비보안 도메인에서 보내진 어드레스들 전부가 동일한 영역에 대응하고 그 영역이 비보안 도메인에 대한 액세스 허용이 적절한 경우, 나머지 함수는 통상시대로 실시될 수 있고, 이때, 영역식별 연산이 없었고 대신에 비보안 도메인에서 보내진 각 어드레스가 개별적으로 검사되었어야 했을 경우에 보다 적은 검사가 요구되었을 것이다.
상기 내용과, 본 기술의 다른 목적, 특징 및 이점은, 아래의 첨부도면과 관련지어 읽혀질 이하의 실시예의 상세한 설명으로부터 명백해질 것이다:
도 1은 데이터 처리장치의 일례를 개략적으로 나타내고,
도 2는 메모리 어드레스 공간의 대응한 어드레스 범위들에 대한 속성 데이터를 기억하기 위한 메모리 속성 유닛을 나타내고,
도 3은 데이터 처리장치의 보다 상세한 예를 나타내고,
도 4는 도 3의 예와 함께 사용한 메모리 어드레스 공간의 일례를 나타내고,
도 5는 도 3에 도시된 상기 처리장치의 다른 보안 상태의 일례를 나타내고,
도 6은 영역식별 명령어의 인코딩의 예를 나타내고,
도 7은 그 영역식별 명령어의 결과의 예를 나타내고,
도 8은 타겟 어드레스에 대응한 영역을 식별하는 영역 번호를 발생하기 위한 로직을 갖는 메모리 속성 유닛의 일례를 나타내고,
도 9a는 타겟 어드레스를 소정의 레지스터에 기록하여서 영역식별 연산을 기동하는 일례를 나타내고,
도 9b는 다른 도메인에서 메모리 속성 유닛들의 영역식별 연산을 기동하는 다른 소정의 레지스터를 설치하는 일례를 나타내고,
도 10은 비보안 도메인으로부터 보내진 어드레스들을 사용하는 보안 도메인에서의 함수의 일례를 나타내고,
도 11은 비보안 도메인으로부터 보내진 어드레스들에 의해 메모리 속성 영역들에 걸쳐진 것에 따라 일어날 수도 있는 문제들의 일례를 나타내고,
도 12는 보안 도메인에서의 함수가 안전하게 행해질 수 있는 것을 체크하기 위해 영역식별 연산을 사용한 일례를 나타내고,
도 13은 새로운 라이브러리의 활성화를 고속화하는데 상기 영역식별 연산을 사용할 수 있는 일례를 나타내고,
도 14는 상기 영역식별 연산을 행하는 방법을 나타내는 흐름도다.
도 1은 처리회로(4), 데이터 스토어(메모리)(6) 및 상기 처리회로(4)에 의해 상기 메모리(6)에의 액세스를 제어하기 위한 속성 데이터를 기억하는 메모리 속성 유닛(7)을 갖는, 데이터 처리장치를 개략적으로 나타낸다. 도 2는, 도 2에 도시된 어드레스 공간(13)에 나타낸 것과 같은 대응한 메모리 어드레스 범위(11)에 대한 속성 데이터를 기억하기 위한 수개의 기억영역(9)을 갖는 상기 메모리 속성 유닛(7)의 일례를 나타낸다. 메모리(6)가 도 1의 단일 블록으로서 나타내어져 있지만, 일부의 경우에 메모리 어드레스 공간은, 수개의 다른 디바이스(예를 들면, RAM들, 플래시 메모리 디바이스들, 주변의 제어 레지스터 등)에 지점들을 커버하여도 된다.
상기 처리회로(4)에 보이는 어드레스 공간의 레이아웃은, 실질적으로 메모리 속성 유닛(7)에 보이는 어드레스들의 레이아웃과 같다. 각 기억영역(9)은, 처리회로(4)상에서 실행하는 명령어들에 의해 상기 어드레스 공간(13)에서 다른 어드레스 범위들에 매핑하도록 구성 가능하다. 예를 들면, 기억영역(9)은, 대응한 어드레스 범위를 규정하는 파라미터들, 이를테면 어드레스 범위의 시작 어드레스와 종료 어드레스, 시작 어드레스 및 어드레스 범위의 사이즈를 가리키는 파라미터, 또는 어드레스 범위의 시작에 대응하는 2의 제곱의 배수를 가리키는 값과 어드레스 범위의 사이즈를 가리키는 사이즈 파라미터를 기억하여도 된다. 그 밖의 예들에 있어서, 기억영역(9)과 관련된 어드레스 범위는, 기억영역에 고정배선되어 있어도 된다. 따라서, 기억영역(9)에 대응한 어드레스 범위를 표현하는 방식이 다르다. 일부의 예들에서, 메모리 속성 유닛(7)의 구성은, 기억영역(9)마다 규정된 어드레스 범위들이 중첩하는 경우 유효가 아닐 수도 있고, 그 밖의 예들에서는 일부의 중첩 어드레스 범위들은 동일한 어드레스에 대한 액세스 허용의 다수의 층을 규정하도록 허용되어도 된다. 일부의 실시예에서, 상기 어드레스 범위들은, (제한된 수의 범위 사이즈로부터 선택되어야 하는 것이라기보다는) 주어진 어드레스 증분의 임의의 배수를 갖기도 하고, 인접한 어드레스 범위들의 길이들(예를 들면, B와 C)은 서로 독립적으로 설정되어도 된다(길이가 각각 동일한 수개의 인접한 어드레스 범위들을 규정하기 위해 메모리 속성 유닛(7)을 제약할 필요가 없다).
각 기억영역(9)은, 프로세서(4)가 대응한 어드레스 범위내의 어드레스들에 대해 메모리 액세스 연산을 어떻게 행할 수 있는지를 제어하는 하나 이상의 속성(15)을 포함한다. 일부의 실시예의 경우, 어드레스들 또는 대응한 어드레스 범위를 규정하는 파라미터들은 메모리 속성 유닛(7)에 의해 기억된 속성 데이터(15)뿐이고, 이때 일부의 다른 정보는 어드레스가 메모리 속성 유닛에 규정된 대응한 어드레스 범위를 갖는지 아닌지에 의해 암시적으로 나타내어진다. 그 밖의 실시예의 경우, 프로세서(4)가 어드레스에 의해 식별된 메모리(6)에서의 지점에 대해 판독 및/또는 기록할 수 있는지를 특정하는 데이터와, 복수의 보안 상태나 도메인 중 어느 것이 어드레스와 관련되는지를 식별하는 데이터와 같은, 데이터를 규정하는 어드레스 범위와 아울러, 또 다른 속성 데이터(15)가 있어도 된다. 타겟 어드레스에 의해 식별된 메모리(6)에서의 일 지점에 메모리 액세스를 행할 때, 타겟 어드레스는, 이 타겟 어드레스와 기억영역들(9)의 각각에 대해 규정된 어드레스 범위들을 비교하고, 타겟 어드레스를 포함하는 어드레스 범위에 대응하는 영역들(9) 중 하나와 관련된 속성 데이터를 출력하는, 메모리 속성 유닛(7)에 제공된다. 그리고, 상기 처리회로(4)는, 메모리에의 액세스가 허가되는지를 상기 출력된 속성 데이터에 근거하여 판정한다. 메모리 속성 유닛(7)에 제공된 타겟 어드레스는 물리 어드레스(가상 어드레스는 아님)이어서, 상기 처리회로(4)에서 특정한 것과 같은 연속적 타겟 메모리 어드레스들은 메모리 속성 유닛(7)에 의해 상기 메모리(6)에 출력으로서 연속적 어드레스들에 매핑된다.
도 3은 데이터 처리장치(2)의 일례를 보다 상세히 나타낸다. 데이터 처리장치(2)는, 도 1에 나타낸 것처럼 처리회로(4)와, 데이터 스토어(6)를 구비하고, 또한 도 1 및 도 2에 도시된 메모리 속성 유닛(7)의 일례로서 각각 간주될 수 있는 몇몇의 유닛(42, 50, 52)을 구비한다. 또한, 데이터 처리장치(2)는, 처리회로(4)에 의해 처리될 데이터를 기억하기 위한 레지스터들(8)을 구비한다. 데이터 스토어(6)는, 메인 메모리뿐만 아니라 적어도 하나의 캐시도 구비하여도 된다. 상기 처리회로(4)는, 데이터 스토어(6)로부터 명령어들을 불러오는 페치(fetch) 스테이지(10), 그 불러온 명령어들을 디코딩하는 디코드 스테이지(12), 및 그 디코딩된 명령어들을 실행하기 위한 실행 스테이지(14)로 이루어진 처리 파이프라인을 구비한다. 그 파이프라인은 그 밖의 스테이지, 예를 들면 레지스터 리네이밍 스테이지나 발행(issue) 스테이지를 포함하여도 된다.
레지스터들(8)은 처리회로(4) 대신에 데이터를 기억하는 몇몇의 범용 레지스터RO 내지 R12를 구비한다. 도 3은 13개의 범용 레지스터RO 내지 R12를 도시하고 있지만, 그 밖의 수의 레지스터가 설치되어도 되고, 선택사항으로 부동소수점 값들을 기억하는 부동소수점 레지스터들도 설치될 수 있다. 또한, 레지스터들(8)은, 프로그램 카운터(PC) 레지스터(20), 링크 레지스터(LR)(22) 및 스택 포인터(SP) 레지스터들(24, 26)로 이루어진 일부의 전용 레지스터들을 구비한다. 프로그램 카운터 레지스터(20)는, 처리회로(4)에 의해 실행될 다음 프로그램 명령어의 어드레스를 가리키는 프로그램 카운터를 기억한다. 일반적으로, 명령어의 실행 후, 프로그램 카운터는, 메모리로부터 다음 명령어를 가리키기 위해 갱신될 것이다. 그렇지만, 명령어를 바꾸는 제어 흐름에 응답하여, 프로그램 카운터는, 다음의 순차적 명령어를 가리키지 않는 값으로 설정될 수 있다. 링크 레지스터(22)는, 함수 또는 예외의 완료 후 프로그램 명령어가 처리되어야 하는지를 판정하기 위해 상기 함수 또는 예외로부터 리턴할 때 사용된 리턴(return) 값을 기억하여도 된다. 스택 포인터 레지스터들(24, 26)은, 데이터 스토어(6)에서 보안 스택(30)과 비보안 스택(32)을 가리키는 보안 스택 포인터와 비보안 스택 포인터를 각각 기억한다. 예를 들면, 상기 스택 포인터는, 스택(30, 32)상에 배치된 최종 항목의 지점을 가리킬 수 있거나, 상기 스택(30, 32)상에 배치된 데이터 값이 기록되어야 하는 다음 지점을 가리킬 수 있다.
보안 보호 하드웨어(40)는, 보안 도메인과 비보안 도메인간의 분리를 적용하도록 설치된다. 그 보안 보호 하드웨어는, 데이터 스토어(6)의 영역들이 보안 영역인지 비보안 영역인지를 규정하는 보호 데이터를 기억하는 보안 보호 유닛(42)을 갖는다. 도 3은, 데이터 스토어(6)가 보안 영역(44)이 하나이고 비보안 영역(46)이 하나인 일례를 나타내지만, 실제로 데이터 스토어(6)는 각 타입의 몇몇의 영역을 포함하여도 된다. 일부의 예에서, 보안 보호 유닛(42)은, 보안 도메인과 비보안 도메인 중 한쪽과 관련된 어드레스 범위들을 규정하는 속성 데이터만을 포함할 수도 있고, 이때 보안 보호 유닛(42)에 규정되지 않은 어드레스 범위들은 보안 도메인과 비보안 도메인 중 다른 쪽에 관련된다고 가정한다. 데이터 스토어(6)의 보안 영역(44)내에 위치된 코드46은 보안 도메인에서 처리회로(4)에 의해 실행되고, 비보안 영역(46)내에 위치된 코드 48은 비보안 도메인에서 실행된다. 비보안 도메인에 있을 때, 상기 처리회로(4)는 보안영역(44)에 기억된 데이터나 명령어들을 액세스할 수 없다. 비보안 도메인과 보안 도메인간의 천이는, 보안 보호 하드웨어(40)에 의해 특정의 허가된 천이만을 접수하도록 보장하게 제어된다.
데이터 처리장치(2)는, 데이터 스토어(6)의 보안 및 비보안 영역(44, 46) 각각에 대해 액세스 허용을 규정하는 보안 메모리 보호 유닛(MPU)(50)과 비보안 MPU(52)를 구비한다. 그 MPU(50, 52)는 버스 매트릭스(50)를 거쳐 데이터 스토어(6)에 액세스한다. 그 액세스 허용은, 보안 및 비보안 영역(44, 46)의 서브영역이 액세스 가능 또는 액세스 불가능한지를 제어하여, 다른 액세스 허용은 다른 프로세스들 또는 소프트웨어 프로그램들에 대해 보안 또는 비보안 영역내에 설정될 수 있다. 상기 보안 MPU(50)와 비보안 MPU(52)에 의해 규정된 영역들은 중첩하여도 된다. 예를 들면, 보안 MPU(50)와 비보안 MPU(52)는 동일한 메모리 영역에 대해 다른 속성들을 규정하여도 된다.
도 4는 데이터 스토어(6)의 메모리 어드레스 공간의 일례를 나타낸다. 그 어드레스 공간은 보안 영역(44)과 비보안 영역(46)을 갖는다. 도 4는 하나의 비보안 영역(44)과 하나의 보안 영역(46)을 나타내지만, 보다 큰 수의 비인접한 보안영역들과 비보안 영역들이 설치될 수 있다. 보안 보호 유닛(42)은, 데이터 스토어(6)의 어느 영역들이 보안 영역들 또는 비보안 영역들인지를 규정하는 데이터를 기억한다(이들 중 하나는 보안 보호 유닛(42)에서 어드레스 범위를 규정하는 데이터의 부재에 의해 암시적으로 나타내어질 수 있다).
보안 영역(44)은, 보안 소프트웨어 라이브러리들에 대응한 하나 이상의 보안 스택(30)을 포함한다. 또한, 보안 영역(44)은, 애플리케이션 코드나 애플리케이션 레벨 소프트웨어 라이브러리들에 대응한 비특권 보안 코드(46)와, 예를 들면 운영체계에 대응한 특권 보안 코드(47)를 포함한다. 보안 MPU(50)는, 보안 영역들(44) 중 어느 서브영역들이 비특권 모드 또는 특권 모드인지를 제어한다. 마찬가지로, 비보안 영역(46)은, 비보안 도메인에서 실행하기 위한 (특권 모드와 비특권 모드를 포함하는) 비보안 코드(48), 이 비보안 코드(48)에서 사용한 비보안 스택(32), 및 비보안 데이터(39)를 포함한다. 비보안 MPU(52)는, 비보안 영역(46)에서의 데이터 또는 코드가 특권 또는 비특권인지를 제어한다. 일반적으로, 비특권 코드는, 특권 데이터나 코드에 액세스할 수 없다. 메모리 어드레스 공간도, 임의의 유효 명령어 어드레스에 대응하지 않는 보류 어드레스 범위(150)를 포함한다. 이 보류 범위는, 특수 이벤트를 기동할 수 있는 더미 어드레스들을 제공하는 것과 같은 특수 함수에 사용될 수 있다. 예를 들면, 상기 보류 어드레스 범위(150)는, OxF0000000 내지 OxFFFFFFFF의 범위내의 어드레스들을 포함하여도 된다.
도 5는 데이터 처리장치(2)의 다른 상태를 개략적으로 나타낸다. 그 장치는, 비보안 도메인(70)과 보안 도메인(80)을 갖는 것으로, 이 도메인들은 보안 프로세스들과 운영체계들이 비보안 프로세스들과 운영체계들에 의한 액세스의 위험 없이 안전하게 실행될 수 있도록, 상기 처리장치(2)를 분할한다. 직접 함수 호출들과 분기들을 비보안 도메인(70)과 보안 도메인(80) 사이에서 이룰 수 있고, 이때 보안 보호 하드웨어(40)는 그 도메인 70, 80 사이의 경계를 감시하고 도메인간의 천이가 허용되도록 보장한다. 처리의 동일 스레드는, 보안 도메인(80)과 비보안 도메인(70) 양쪽에서의 처리를 포함하여도 된다. 예를 들면, 비보안 애플리케이션은 패스워크 체킹 또는 지불 처리 등의 보안상 중요한 함수를 행하기 위해 보안 영역으로 분기하고 나서, 보안상 중요하지 않은 또 다른 처리를 위해 비보안 영역으로 다시 분기하여도 된다. 상기 장치(2)가 비보안 도메인(70)에 있을 때, 보안 보호 유닛(42)은 보안 도메인(80)과 관련된 데이터가 액세스 불가능하도록 보장한다.
비보안 도메인(70)과 보안 도메인(80)의 각 도메인내에는, 비특권 상태(90)와 특권상태(100)가 있다. 일반적으로, 상기 특권상태(100)는 운영체계들 등의 특권 소프트웨어에 사용되고, 비특권 상태(90)는 애플리케이션들과 라이브러리들 등의 비특권 코드들에 사용된다. 상기 비보안 도메인(70)과 보안 도메인(80)과 달리, 비특권 상태(90)와 특권상태(100) 사이에서 분기들 또는 함수 호출들은 일반적으로 가능하지 않고, 콘텍스트 스위치 또는 예외는, 특권모드와 비특권 모드 사이에서 전환하는데 필요할 수도 있다. 주어진 스레드는, 통상, 양쪽이 아닌, 비특권 상태(90) 또는 특권상태(100) 중 어느 한쪽에서 작동할 것이다. 일반적으로, 비특권 상태(90)에 있을 때, 특권상태(100)와 관련된 데이터는, (비록 보안 도메인(80)에서의 비특권 상태(90)가 비보안 도메인(70)에서의 특권상태(100)로부터의 데이터에 액세스 하게 하는 예외가 있을지라도) 액세스 불가능하다. 보안 MPU(50)는, 처리장치(2)가 보안 도메인(80)에 있는 동안에 특권 또는 비특권 상태에서 어드레스 범위들이 액세스 가능한지를 가리키는 액세스 허용들을 규정하는 한편, 비보안 MPU(52)는 처리장치(2)가 비보안 도메인(70)에 있는 동안에 특권 또는 비특권 상태로부터 어드레스 범위들이 액세스 가능한지를 가리키는 액세스 허용들을 규정한다.
전형적으로, 보안 보호 유닛(42)이나 보안 또는 비보안 MPU(50, 52) 등의 메모리 속성 유닛(7)은, 타겟 어드레스를 사용하여 질문 받을 수 있고, 그리고 대응한 타겟 어드레스의 속성 값들을 리턴할 것이다. 그렇지만, 본 기술에 의해 인식한 것은, 메모리 속성 유닛(7)(42, 50, 52)의 기억영역(9) 중 어느 영역이 타겟 어드레스에 대응하는지를 식별하는 영역 식별자를 리턴할 수 있는 것이 유용한 상황들이 일부 있다는 것이다. 따라서, 상기 처리회로(4)는, 특정 타겟 어드레스에 대한 매칭 기억영역(9)을 식별하고 그 기억영역을 식별하는 영역식별 값을 출력하기 위해서, 일 명령어에 응답하여 영역식별 연산을 행할 수 있다.
도 6은 상기 처리회로(4)를 기동하여 그 영역식별 연산을 행하기 위한 영역식별 명령어의 일례를 나타낸다. 그 영역식별 명령어TT는 후술할 선택사항의 플래그A(그 밖의 실시예는 이 플래그A를 사용하지 않을 수도 있다)뿐만 아니라, 원시 레지스터Rn과 목적지 레지스터Rd를 특정하는 인코딩도 갖는다. 프로그래머는, 상기 영역식별 명령어TT가 실행되기 전에 특정 타겟 어드레스가 그 원시 레지스터Rn에 배치되도록 프로그램을 기록한다. 상기 영역식별 명령어에 응답하여, 상기 처리회로(4)는, 기억영역(9) 중 어느 영역이 상기 레지스터Rn에서의 타겟 어드레스에 대응하는지를 상기 메모리 속성 유닛(7)을 사용하여 판정하고 나서, 결과 값을, 상기 영역(9) 중 어느 영역이 그 어드레스에 대응하는지를 식별하는 영역식별 값을 포함하는 목적지 레지스터Rd에 기록하는, 영역식별 연산을 행한다.
도 7은 목적지 레지스터Rd에 기록된 결과 값의 일례를 나타낸다. 도 3의 예에서는, 2가지 타입의 메모리 속성 유닛(7)(보안 보호 유닛 42와 상기 MPU 50,52)이 있으므로, 상기 영역식별 연산은 2개의 서로 다른 영역식별 값: 보안 또는 비보안 MPU(50, 52)의 어느 기억영역이 타겟 어드레스에 대응하는지를 가리키는 제1 값 MREGION과, 보안 보호 유닛(42)의 어느 기억영역이 타겟 어드레스에 대응하는지를 가리키는 제2 값 PREGION을, 리턴시킨다. 일반적으로, 상기 MPU들의 경우, 상기 값 MREGION은, 현재의 동작 도메인에 대응하는 상기 MPU 50, 52 중 한쪽에서의 매칭 기억영역을 식별하는 값이다. 그렇지만, "alt" 플래그A가 세트되는 경우, 반대의 도메인으로부터의 상기 MPU(50, 52)이 검색되어도 된다(이것은, 단지 보안 도메인에서 작동할 때 허가되기만 할 수도 있다). 메모리 속성 유닛(7)을 단지 하나만 갖는 그 밖의 실시예에서는, 하나의 영역식별 값만이 제공되어도 된다.
본 예에서, 상기 결과 값도, 상기 타겟 어드레스에 대한 매칭 기억영역(9)의 속성 데이터에 근거하여 판정된 몇몇의 그 밖의 추가 정보를 포함한다. 메모리 속성 유닛(7)이 매칭 기억영역을 식별하는 것에 대해 이미 검색되는 중이므로, 상기 속성 데이터를 판정하기 위해서 또 다른 명령어를 실행할 필요 없도록 매칭 기억영역(9)으로부터 추가의 속성 데이터를 리턴시키는 것이 효율적일 수 있다.
본 예에서, 상기 결과 값은 아래의 정보의 필드들을 포함한다:
MREGION(비트[7:0]): 타겟 어드레스를 매핑하는 MPU영역의 영역 번호.
PREGION(비트[15:8]): 타겟 어드레스를 매핑하는 보안 보호 유닛(42)의 영역 번호.
MRVALID(비트[16]): 본 필드는, 상기 MREGION 필드가 유효할 경우 1로 세트된다. 상기 MREGION 필드는 아래의 조건 중 어느 하나가 참일 경우 무효이다:
· 질문을 받고 있는 MPU(50, 52)가 존재하지 않거나 사용 불가되는 조건
· 타겟 어드레스가 다수의 사용 가능한 MPU 영역에 매칭한 조건
· 타겟 어드레스가 사용 가능한 하나의 MPU 영역에 매칭하지 않았던 조건
· 영역식별 연산이 비특권 모드에 있을 때 실행되었고, 상기 A플래그가 특정되지 않은 조건(보안 도메인(80)에서 비특권 상태에 있을 때, 보안 도메인(80)에서 특권 상태와 관련된 영역들에 대한 정보를 액세스시킬 수 없지만, 비보안 도메인(80)에서는 특권 및 비특권 영역에 대한 정보를 액세스할 수 있는데, 그 이유는 상기 A플래그가 유효한 보안 도메인에서 상기 영역식별 연산의 비특권 실행을 위해 특정되어야 하기 때문이다.).
선택사항으로, 무효 MREGION 필드는, 비보안 도메인에 있을 때 상기 영역식별 연산이 실행된 경우 발생되어도 되고, 상기 A플래그는 특정되어 있지 않았다(비보안 도메인에 있을 때, 보안 MPU(50)에 대한 정보를 액세스시킬 수 없다). 이와는 달리, 상기 A플래그가 비보안 도메인에 있는 동안 특정되는 경우, 그 명령어는, 규정되지 않은 것처럼 취급되지 않을 수도 있고, 그 경우에, 상기 영역식별 연산이 전혀 행해지지 않을 수도 있다.
PRVALID(비트[17]): 본 필드는, 상기 PREGION 필드가 유효일 경우 1로 세트된다. 그 PREGION 필드는 아래의 조건 중 어느 하나가 참일 경우 무효이다:
· 보안 보호 유닛(42)이 사용 불가능한 조건
· 타겟 어드레스가 보안 보호 유닛(42)에서의 다수의 사용 가능한 영역들에 매칭한 조건
· 타겟 어드레스가 보안 보호 유닛에서 어떠한 사용 가능한 영역들에도 매칭하지 않은 조건
· 영역식별 연산이, 비보안 도메인에 있는 동안 실행되지 않았던 조건(비보안 도메인에서의 코드는, 어드레스들이 보안 데이터나 코드에 관계하는 실마리를 줄 수 있는 상기 보안 보호 유닛(42)의 영역들에 대한 정보에 액세스할 수 없다)
· 영역식별 연산이, 보안 보호 하드웨어(40)에서 제공한 보안/비보안 도메인 분할을 실시하지 않는 장치상에서 실행되었던 조건.
R(비트[18]): 판독 액세스 가능성. R은, 특권 및 비특권 모드 중 현재의 특권 모드에서 동작할 때 상기 선택된 MPU의 허용에 따라, 타겟 어드레스에 의해 식별된 메모리 지점을 판독할 수 있는 경우 1로 세트된다.
RW(비트[19]): 판독/기록 액세스 가능성. RW는, 특권 및 비특권 모드 중 현재의 특권 모드에서 동작할 때 상기 선택된 MPU의 허용에 따라, 타겟 어드레스에 의해 식별된 메모리 지점을 판독 및 기록할 수 있는 경우 1로 세트된다.
NPR(비트[20]): Equal to R AND(NOT P). 1로 세트되는 경우, 이것은, 어드레스가 판독 가능하고 비보안 도메인(70)과 관련되어 있는 것을 가리킨다.
NPRW(비트[21]): Equal to RW AND(NOT P). 1로 세트되는 경우, 이것은, 타겟 어드레스가 판독 및 기록 가능하고 비보안 도메인(70)과 관련되어 있는 것을 가리킨다.
P(비트[22]): 프라이버시. 1의 값은, 메모리 지점이 보안(개인) 도메인(80)과 관련되는 것을 가리키고, 0의 값은, 메모리 지점이 비보안(공용) 도메인(70)과 관련되어 있는 것을 가리킨다. 본 필드는, 보안 도메인(80)에 있는 동안 상기 영역식별 연산이 실행되었을 경우 유효할 뿐이다.
상기 파라미터 NPR 및 NPRW는, 상기 MPU 50 또는 52로부터 얻어진 속성 데이터 R이나 RW의 일부와, 상기 보안 보호 유닛(42)으로부터 얻어진 속성 데이터 P의 일부로부터, 얻어진다. 이렇게 얻어진 파라미터를 영역식별 연산의 일부로서 판정함으로써, 이 정보를 합성하기 위해 또 다른 정보를 실행할 필요가 없다. 어드레스에의 판독/기록의 허용 여부와 어드레스의 비보안 어드레스 여부를 체크하는 것은, 도 5에 도시된 상태들을 갖는 시스템에서 상대적으로 일반적인 연산이다. 양쪽의 정보를 가리키는 단일의 비트를 리턴시킴으로써, 이것은, 일반적으로 단일의 명령어를 사용하여 레지스터 Rd내의 단일의 비트의 값을 효율적으로 체크 가능하지만, 2이상의 비트(예를 들면, 별개의 비트 R 및 P 또는 RW 및 P)의 값들을 체크하는 것이 보다 복잡할 수 있으므로, 또 다른 체크를 크게 단순화한다. 그 밖의 예에서는, 다른 속성 유닛(7)으로부터 상기 정보의 일부를 사용하여 얻어진 그 밖의 파라미터들이 얻어질 수 있다.
도 6에 도시된 명령어 인코딩에 응답하여 행해진 상기 영역식별 연산을 표현하는 의사 코드의 일례가 아래에 나타내어져 있다(약칭 PAU는 보안 보호 유닛을 말하고, "개인" 및 "공용"이란 보안 및 비보안 도메인 각각을 말한다):
Figure 112016085222280-pct00001
Figure 112016085222280-pct00002
Figure 112016085222280-pct00003
Figure 112016085222280-pct00004
Figure 112016085222280-pct00005
Figure 112016085222280-pct00006
Figure 112016085222280-pct00007
Figure 112016085222280-pct00008
Figure 112016085222280-pct00009
Figure 112016085222280-pct00010
Figure 112016085222280-pct00011
Figure 112016085222280-pct00012
Figure 112016085222280-pct00013
Figure 112016085222280-pct00014
Figure 112016085222280-pct00015
도 8은 (보안 보호 유닛(42)이나, MPU 50, 52 중 한쪽일 수도 있는) 메모리 속성 유닛(7)의 하드웨어의 일례를 나타낸다. 각 기억영역(9)은, 대응한 영역에 대한 속성 데이터를 기억하기 위한 다수의 레지스터로 표현되어도 된다. 도 8은, (상기 PREGION 필드 또는 MREGION 필드에 사용된) 상기 영역 번호가 메모리 속성 유닛의 기억영역들(9)에서 속성 데이터내에 기억되지 않고, 대신에 메모리 속성 유닛(7)에 의해 발생되는 예를 나타낸다. 따라서, 어드레스가 상기 영역식별 연산에 응답하여 메모리 속성 유닛에 입력될 때, 비교기들(110)은, 이 입력된 어드레스와, 각 영역(9)에 대응한 메모리 어드레스 범위들을 규정하는 데이터(112)를 비교하고, 그 어드레스가 대응한 영역(9)의 어드레스 범위내에 있으면 히트 신호(114)를 어서트(assert)한다. 메모리 속성 유닛(7)은, 기억영역들(9)로부터 속성 데이터(115)와 함께 상기 히트 신호들(114)을 수신하고, 히트가 검출된 영역에 대한 속성들(118)을 출력하는, 로직(116)을 갖는다. 타겟 어드레스를 검색하여 속성들(118)을 출력하기 위한 기능성은, 전형적으로 이미, 본 기술을 이용하지 않는 메모리 속성 유닛의 일부일 것이다. 또한, 본 기술은, 로직(116)의 기능성을 확대하여, 히트 신호(114)가 어서트되는 것에 의거하여 영역 번호(120)를 발생 및 출력한다.
그 밖의 실시예에서, 상기 영역 번호는 그 속성 데이터 자체의 일부로서 상기 영역(9)에 기억된 값이어도 되고, 상기 영역식별 연산의 타겟 어드레스에 대해 히트가 있을 때, 매칭 영역(9)에 기억된 영역 번호는, 상기 레지스터들로부터 판독되어 상기 처리회로(4)에 의해 출력될 수 있다.
일반적으로, 각 메모리 속성 유닛(7)은, 그 속성 데이터를 기억하기 위한 레지스터들(9)의 별개의 인스턴스를 포함할 수도 있다. 그렇지만, 다른 메모리 속성 유닛(7)이 비교기들(110)과 제어 로직(116) 등의 그 밖의 회로의 일부를 공유하는 것이 가능하다. 예를 들면, 전형적으로 보안 MPU(50)와 비보안 MPU(52) 중 한쪽만이 한 번에 활성상태이므로, 상기 비교기들(110)과 제어 로직(116)을 복제할 필요가 없고, 2개의 MPU간에 비교기들(110)과 로직(116)을 공유함으로써 회로 면적이 절감될 수 있다.
도 6은 전용 영역식별 명령어TT가 제공되는 경우의 예를 나타내지만, 그 밖의 예에서 상기 영역식별 연산은 범용 명령어 등의 또 다른 타입의 명령어에 의해 기동되어도 된다. 예를 들면, 도 9a는, 원시 레지스터Rn의 콘텐츠를 제2의 레지스터Rm*에 이동하기 위한 범용 무브(move) 명령어 MOV를 제공하는 경우를 나타낸다. 기록시에, 상기 처리회로(4)를 기동시켜 상기 레지스터에 배치된 어드레스에 대한 영역식별 연산을 행하도록 전용 레지스터가 제공되어도 된다. 따라서, 상기 MOV 명령어가 제2 레지스터Rm*인 전용 레지스터로 실행되는 경우, 상기 처리회로(4)는, 상기 영역식별 연산을 행하고, 전용 목적지 레지스터Rd*를 도 7에 도시된 결과 값으로 설정하여도 된다. 그리고, 다른 명령어는, 상기 영역식별 값들과 다른 추가의 정보를 상기 목적지 레지스터Rd*로부터 얻을 수 있다. 도 9a에 도시된 바와 같이, 상기 A플래그도, 도 7에 대해 설명된 것과 같은 방식으로 액세스되는지를 제어하기 위해 상기 MOV 명령어를 사용하여 상기 보안 MPU(50)나 비보안 MPU(52)가 상기 전용 레지스터에 배치될 수 있다.
이와는 달리, 상기 A플래그가 제공되지 않아도 되고, 대신에 2개의 다른 전용 레지스터 Rm1*, Rm2*이 제공될 수도 있는 도 9b와 같은 실시예를 제공할 수 있고, 이때 한쪽의 전용 레지스터가 보안 MPU에 해당하고, 다른 쪽의 전용 레지스터가 비보안 MPU에 해당하여, 이들 전용 레지스터들 중 어느 전용 레지스터가 MOV 명령어를 위한 목적지 레지스터인지를 선택함으로써, 프로그래머는, 어느 MPU가 질문을 받는지를 선택할 수 있다. 마찬가지로, 도 6의 예에서는, 상기 A플래그를 사용하는 대신에, 보안 MPU(50)에 질문하기 위한 명령어와 비보안 MPU(52)에 질문하기 위한 명령어인 2개의 별개의 명령어가 제공되어도 된다.
일부의 실시예에서, 상기 레지스터 Rm*, Rm1*, Rm2*는 메모리 매핑되어도 되고, 이러한 경우에, 스토어(store) 명령어는, 상기 값을 상기 레지스터 Rn으로부터 상기 전용 레지스터 Rm*, Rm1*, Rm2*에 기록하는데 사용될 것이다. 또한, 상기 목적지 레지스터 Rd*는 메모리 매핑되어도 되고, 로드(load) 명령어는 상기 영역식별 값에 액세스하는데 사용될 것이다.
또한, 도 9a 및 9b는, 상기 처리장치(2)를 기동하여 상기 영역식별 연산을 행하기 위해 타겟 어드레스가 상기 전용 레지스터 Rm*, Rm1* 또는 Rm2*에 기록된 값일 경우 예들을 나타내지만, 그 밖의 예에서 상기 어드레스는 상기 전용 레지스터에 기록될 필요가 없다. 대신에, 다른 값은 상기 전용 레지스터에 기록되어도 되고, 이것은 상기 처리회로(4)를 기동하여 다른 지점으로부터 어드레스를 판독하고 그 어드레스를 사용하여 상기 영역식별 연산을 행한다.
따라서, 본 기술에 의해, 프로그래머는, 주어진 타겟 어드레스에 매칭하는 상기 보안 보호 유닛(42)이나 MPU(50, 52)에서 기억영역(9)의 영역 번호를 얻기 위해 상기 처리회로를 제어하기 위한 코드의 명령어를 포함할 수 있다. 이것은, 도 10 내지 도 13의 예들에 도시된 것과 같은 몇몇의 상황에서 유용할 수 있다.
도 10은 보안 어드레스에 분기함으로써 비보안 도메인(70)으로부터 호출되는 보안 함수 bob()의 일례를 나타낸다. 상기 함수 bob()는 비보안 도메인(70)에서의 상기 코드로 특정한 어드레스들의 범위ADDR[]를 이용한다. 이러한 타입의 함수는, 비보안 코드(70)가 보안 어드레스를 보안 도메인(80)에 보낼 수 있는 경우, 그 어드레스에 대한 판독 또는 기록을 행하는 연산(예를 들면, 연산(130)은 부적절하게 보안 데이터에 액세스하거나 보안 데이터를 갱신할 수 있기 때문에 문제가 될 수 있는데, 그 이유는, 상기 보안 도메인(80)에서 한번 또 다른 보안 어드레스에의 액세스가 전형적으로 허가될 것이기 때문이다. 이러한 상황을 막기 위해서, 상기 함수 bob()는, 비보안 도메인에서 보낸 어드레스들이 보안 어드레스들 또는 비보안 어드레스들인지의 체크를 포함하도록 기록되어야 한다. 그렇지만, 비보안 도메인으로부터 어레이들이 보내지는 경우, 상기 bob()는 어레이 전체가 비보안 메모리(46)내에 포함되도록 체크를 행해야 한다. 이것은, 하나의 어레이의 시작 어드레스가 비보안 메모리(46)내에 위치되는 경우에도 그 어레이는 (도 11의 152에 도시된 것처럼) 보안 메모리(44)에 확장할지도 몰라, 그 시작 어드레스의 지점이 체크되는 경우 보안 위반이 될 가능성이 있기 때문이다. 이러한 경우는, 상기 보안 함수 bob()가 액세스될 상기 어레이의 시작 어드레스와 종료 어드레스 양쪽을 체크하였을 경우 검출될 수 있다. 그렇지만, 이것은, 상기 어레이가 완전히 보안 메모리 어드레스 범위에 걸쳐 이어졌을지도 모르므로 상기 시스템의 보안을 확보하기에는 충분하지 않아서, 그 시작 어드레스와 종료 어드레스 양쪽은, 비보안 메모리(46)에 위치된다. 이러한 경우의 일례가, 도 11의 160에 도시되어 있다. 개별적으로 상기 어레이 내의 어드레스마다 보안 보호 유닛(42)에서의 속성 데이터를 체크하는 것은, 느릴 수 있고 전력 소모가 증가되고 성능이 감소될 수 있다.
본 기술에 의해 인식한 것은, 상술한 영역식별 연산을 사용하여, 각 어드레스를 개별적으로 체크하는 것은 종종 불필요해져, 처리 자원과 전력이 절감될 수 있다는 것이다. 도 11에 도시된 것처럼, 상기 어레이ADDR[]에 특정된 어드레스 0 내지 N의 범위는, 전체적으로 메모리 속성 유닛(7)의 단일의 기억영역(9)에 대응한 어드레스 범위 내에 있어도 되는 경우가 많다. 예를 들면, 도 11에 도시된 어드레스들(140)은, 전체적으로 보안 보호 유닛(42)의 단일 기억영역(9)으로 표현된 어드레스 공간의 비보안 영역 내에 있다. 이 경우에, 영역들이 중첩하는 것을 허용하지 않는 시스템에 있어서, 어드레스들의 상기 어레이의 시작 어드레스와 종료 어드레스가 동일한 기억영역(9)에 관계하고, 기억영역이 비보안 영역으로서 나타내어진다고 판정될 수 있었을 경우, 상기 매개 어드레스들 전부의 허용을 체크할 필요가 없고 상기 함수 bob()의 나머지는 평소대로 진행될 수 있다. 이것은, 많은 처리를 절감한다. 어드레스들의 범위가 다수의 기억영역(9)과 관련된 어드레스 범위(예를 들면, 도 11의 예들 152, 160을 참조한다)에 걸쳐 이어질 때의 일부의 경우들에, 상기 처리가 진행될 수 있는지를 판정하기 위해 또 다른 체크가 필요할 수도 있다. 실제로, 대부분의 어레이들은 예 140에 도시된 것처럼 단일의 영역 내에 있고, 그래서 상기 또 다른 체크는 그렇게 자주 행해질 필요는 없다. 또 다른 체크가 필요한 경우에도, 상기 영역식별 연산은, 상기 어드레스들이 일 영역과 관련된 어드레스 범위로부터 다른 영역과 관련된 어드레스 범위에 걸쳐 이어진 포인트를 식별하는데 유용하여서, 체크될 필요가 있는 속성들을 갖는 개개의 어드레스의 수가 감소될 수 있다.
따라서, 도 12의 대응한 예에 도시된 것처럼, 함수 bob()는 영역식별 연산을 포함하도록 수정될 수 있다. 비보안 코드가 그 함수 bob()를 호출할 때, 보안 도메인(80)으로의 분기가 있다. 제1 쌍의 명령어(170)는 상기 어레이ADDR[]의 시작 및 종료 어드레스를 레지스터 R1, R2에 배치하도록 실행된다. 그리고, 2개의 영역식별 연산(180)은, 레지스터 R1, R2에서의 어드레스들을 위한 보안 보호 영역 번호(PREGION)를 체크하도록 행해진다. 단계 190에서, 레지스터 R3, R4의 보안 보호 유닛(42) 영역 번호(비트 15:8)가 동일하고 양쪽의 영역 번호가 유효(비트 17)할 경우, 이것은, 어드레스들의 상기 어레이ADDR[]의 시작 및 종료 어드레스가 메모리 속성 유닛의 단일의 기억영역(9)에 관계한다는 것을 의미하고, 그래서, 이들 어드레스가 비보안 어드레스들일 경우(R3의 비트 22가 0일 경우), 어드레스들의 전체 어레이 ADDR[]은 모두가 상기 어드레스 공간의 비보안 영역에 관계하기 때문에 안전하다. 이 경우에, 분기 명령어(200)는, 도 10에서와 같이 상기 함수에서 필요로 하는 처리를 행하기 위해 어드레스 addX에 분기한다. 한편, 상기 시작 및 종료 어드레스가 다른 영역에 관계하거나 보안 영역에 관계할 경우, 단계 210에서는 또 다른 체킹을 필요로 하고 이 체크가 실패할 경우 폴트된 처리나 에러의 신호가 일부의 방식으로 보내진다. 따라서, 이렇게 상기 영역식별 연산(180)을 사용함으로써, 많은 경우에 상기 또 다른 체킹(210)을 건너뛰어 상당한 양의 처리를 절감할 수 있다.
또 다른 체킹(210)은, 다른 방식으로 행해져도 된다. 예를 들면, 상기 어레이의 시작 및 종료 어드레스가 메모리 속성 유닛(7)의 다른 기억영역들(9)에 관계한다는 것을 안 경우, 상기 매개 어드레스들은 상기 기억영역들(9)의 경계가 어디에 있는지를 찾기 위해 검사되어도 된다. 예를 들면, 시작 어드레스와 종료 어드레스 사이의 중간의 어드레스는 먼저, 시작 및 종료 어드레스 중 한쪽과 같은 영역(9)에 관계하는지를 알기 위해 체크되고 나서, 얼마나 많은 영역들(9)이 어드레스들의 어레이 ADDR[]에 대응하는지와 다른 영역 사이의 경계가 어디에 있는지를 판정할 때까지 어드레스 범위의 또 다른 2진 분할이 행해져도 된다. 이와는 달리, 그 밖의 실시예에서, 영역식별 연산(180)으로부터 얻어진 영역 번호는, 그 영역들을 위한 시작 및 종료 어드레스를 포함하는 데이터 구조내에 색인이 만들어지는데 사용될 수 있음에 따라, 상기 경계들이 어디에서 2진 분할 프로세스를 사용하고 있는 중인지를 발견할 필요가 없이 인접한 영역(즉, 체크될 다음 영역)의 어드레스가 얻어지게 할 수 있다. 그리고, 기억영역(9)마다 하나의 어드레스의 속성들은, 계속된 상기 함수 bob()의 처리가 허가되는지를 판정하기 위해 체크될 수 있다. 도 11의 예(160)에 도시된 것처럼, 상기 어레이ADDR[]가 다수의 영역에 걸쳐 이어질 수 있는 것이 가능하다. 다수의 영역이 있을 경우, 그들의 영역들의 각각의 속성들은 상기 함수의 계속된 동작이 허가되도록 비보안 도메인을 가리킬 필요가 있다. 상기 또 다른 체킹은, 상대적으로 복잡하지만, 영역식별 연산을 이용함으로써 보다 빨리 행해질 수 있고, 가능하다면 완전히 생략될 수 있다.
도 10 내지 도 12는 비보안 도메인(70)과 보안 도메인(80) 사이의 경계를 가로지르는 함수의 일례를 나타내었지만, 그 밖의 예에서는 특권 상태(90)와 비특권 상태(100)간을 가로지를 때 또는 보안 수준이 다른 그 밖의 모드간을 가로지를 때 유사한 세트의 연산이 행해질 수 있었다. 또한, 도 12는 전용 영역식별 명령어를 사용하여 단계 180인 상기 영역식별 연산을 구현하는 예를 나타내었지만, 그 밖의 예에서는, 예를 들면, 전용 레지스터에의 기록을 사용한 도 9의 다른 접근법을 이용하여도 된다.
도 13은 상기 영역식별 연산이 유용할 수도 있는 다른 상황을 나타낸다. 상기 MPU 50 또는 52의 구성은, 다른 프로세스들이나 콘텍스트가 활성상태가 될 때 달라질 수도 있다. 이것의 일례는, 동일한 도메인이나 모드내에서 서로 분리되어 있을 필요가 있는 다른 소프트웨어 라이브러리들(250)이 몇 개가 있을 수도 있는 예이다. 예를 들면, 보안 도메인(80)내에는, 보안 도메인(80)에서 제공한 보호를 각기 필요로 하지만 서로 액세스하지 못하게 해야 하는 파티들을 상호 불신함으로써 제공된 다른 애플리케이션이 있을 수도 있다. 그러므로, 라이브러리 관리기(260)는, 상기 라이브러리들 중 하나를 활성 라이브러리로서 선택하고 나머지 라이브러리들을 비활성 라이브러리로서 세트하도록 구성되어도 된다. 예를 들면, 도 13에서, 라이브러리 0이 활성상태이고 라이브러리 1이 비활성 상태이다. 이러한 접근법을 보다 많은 상세는, 영국 캠브릿지의 ARM사에 의해 2013년 6월 12일에 제출된 동시계속출원 GB 1310421.1에 기재되어 있고, 본 명세서에서는 그 내용이 전체적으로 참고로 포함되어 있다. 이 접근법에 있어서, 각 라이브러리는 상기 어드레스 공간의 어느 범위들이 그 라이브러리를 사용하여 액세스 가능한지를 규정하는 다른 MPU 구성과 관련되어 있다. 라이브러리가 비활성 상태일 때, 상기 어드레스 공간의 그의 영역들은 액세스 불가능하게 설정되고, 라이브러리가 활성 상태일 때는 그의 영역들은 액세스 가능하게 설정된다. (활성 라이브러리로부터 또는 다른 도메인에서 작동하는 코드로부터) 비활성 라이브러리와 관련된 어드레스에의 함수 호출이나 분기가 있을 경우, 상기 MPU는 이 어드레스가 액세스 불가능하고 이것이 액세스 위반 예외를 일으킨다고 판정한다. 라이브러리 관리기(260)는, 비활성 라이브러리에의 액세스에 의해 상기 액세스 위반 예외를 일으키는지를 검출할 수 있는 폴트 핸들러를 갖고, 그럴 경우, 폴트 핸들러는 새로운 라이브러리를 활성화시키고 오래된 라이브러리를 비활성화시키는 MPU구성을 전환한다. 라이브러리 구성 데이터(270)는, 이때상기 MPU에 대해 무엇을 갱신해야 하는지를 판정하는데 사용된다.
따라서, 도 13의 하부에 도시된 것처럼, 제2 라이브러리(library 1)가 활성화되어 있고 제1 라이브러리(library 0)가 비활성화되어 있을 때, 상기 MPU(50, 52)는 새로운 활성 라이브러리(library 1)에 대한 액세스 허용을 설정하는 영역의 번호 1, 2, 3을 가질 것이다. 이때, 상기 비활성화된 라이브러리(library 0)에 관계하는 상기 MPU(50, 52)의 영역들(9)로부터 데이터를 퇴거시키는 것이 가능하다. 그렇지만, 상기 MPU(50, 52)는, 새로운 활성 라이브러리, library 1에 대한 속성 데이터를 기억하는데 필요한 것보다 많은 기억영역들(9)을 이용할 수도 있다. 최근에 비활성화된 라이브러리가 비교적 빨리 다시 활성화되는 것이 일반적이므로, 상기 비활성화된 library 0에 관한 속성 데이터의 적어도 일부를 그 MPU에 유지하지만 유효 비트(280)를 사용하여 이들 영역들을 무효로서 표시함으로써, 이것은, 이렇게 많은 데이터로서 상기 MPU에 로딩할 필요가 없으므로 그 라이브러리를 나중에 재활성화할 때 처리를 고속화할 수 있다.
그렇지만, 라이브러리를 재활성화할 때 행해져야 하는 중요한 태스크 중 하나는, 함수 호출의 타겟 어드레스를 다음에 활성화될 라이브러리의 ID로 변환하는 것이다. 전형적으로, 라이브러리 메인 구성 데이터(270)는, 요구된 라이브러리에 대한 분기 또는 함수의 타겟 어드레스와 라이브러리 번호간의 매핑을 발견하기 위해 순차로 검색되어야 할 소프트웨어 데이터 구조를 포함한다. 이러한 소프트웨어 구조를 검색하는 것은 성능과 전력 소모 면에서 비용이 들 수 있다.
이러한 문제는 본 기술의 영역식별 연산을 사용하여 해결될 수 있다. 그 영역식별 연산을 사용함으로써, 상기 MPU(50, 52)는, 비활성 라이브러리에 대한 함수 호출의 타겟 어드레스에 대응한 무효 기억영역의 영역 번호를 발견하기 위해 검색될 수 있다. 그리고, 이 영역 번호는, 타겟 어드레스에만 근거하여 가능한 것보다 효율적으로 상기 라이브러리 번호에 매핑될 수 있다. 예를 들면, 도 13에 도시된 것과 같은 소프트웨어 테이블(290)은, 상기 MPU의 기억영역들(9)의 영역 식별자들을 상기 라이브러리 관리기(260)에 의해 상기 라이브러리 번호에 매핑하도록 유지될 수 있다. 이러한 테이블(290)은, 어드레스들을 직접 라이브러리 번호들에 매핑하는 테이블보다 훨씬 작은 것이 일반적이다. 그러므로, 상기 영역식별 연산에 의해, 상기 MPU를 보다 효율적으로 갱신한다. 일부의 예에서, 도 13에 도시된 소프트웨어(290)는, 상기 라이브러리 구성 데이터(270)의 일부이어도 된다. 또한, 일부의 경우에는, 영역 번호를 상기 라이브러리 번호에 매핑하는 것은, 예를 들면, 매칭 영역 자체의 속성 데이터에 상기 라이브러리 번호의 표시를 기억함으로써, 소프트웨어 테이블(290) 없이 행해져도 된다.
도 14는 데이터 처리 방법을 표현하는 흐름도를 나타낸다. 단계 300에서, 상기 처리회로(4)의 디코드 스테이지(12)는, 영역식별 연산을 기동하는 명령어가 있는지를 검출한다. 이것은, 도 6에 나타낸 영역식별 명령어이거나, 도 9의 예와 같이 일부의 다른 방식으로 상기 영역식별 연산을 기동하는 또 다른 명령어일 수 있다. 이러한 명령어가 있을 경우, 단계 302에서는 어느 영역이 타겟 어드레스에 대응하는지를 판정하고, 단계 304에서는, 데이터 처리장치(2)에서 실행한 적어도 일부의 소프트웨어에 영역식별 값을 이용 가능하게 하기 위해서, 상기 대응한 영역을 식별하는 영역식별 값을 출력한다.
본 명세서에서는 첨부도면을 참조하여 본 발명의 실시예들을 상세히 설명하였지만, 본 발명은 그들의 구체적인 실시예에 한정되지 않고, 본 발명은 첨부된 청구항에 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 여러 가지 변경 및 수정을 실시할 수 있다는 것을 알 것이다.

Claims (23)

  1. 데이터 처리장치로서,
    데이터 처리를 행하도록 구성된 처리회로;
    상기 처리회로에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 각각 구성된 복수의 기억영역을 포함하는 메모리 속성 유닛을 구비하고;
    타겟 메모리 어드레스에 응답하여, 상기 처리회로는, 상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역인지를 판정하고, 상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 타겟 메모리 어드레스에 대한 상기 매칭 기억영역인지를 식별하는 영역식별 값을 출력하기 위해 영역식별 연산을 행하도록 구성되고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 되는, 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 처리회로는, 상기 타겟 메모리 어드레스를 특정하는 영역식별 명령어에 응답하여 상기 영역식별 연산을 행하도록 구성된, 데이터 처리장치.
  3. 제 1 항에 있어서,
    상기 처리회로는, 소정의 레지스터에 값을 기록하는 명령어에 응답하여 상기 영역식별 연산을 행하도록 구성된, 데이터 처리장치.
  4. 제 3 항에 있어서,
    상기 소정의 레지스터에 기록된 상기 값은, 상기 타겟 메모리 어드레스인, 데이터 처리장치.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 처리회로는,
    (a) 상기 메모리 속성 유닛이 사용 불가능한 경우; 또는
    (b) 상기 타겟 메모리 어드레스가 복수의 영역 중 어느 하나에도 대응하지 않는 경우; 또는
    (c) 상기 타겟 메모리 어드레스가 복수의 영역 중 2개 이상에 대응하는 경우;
    (d) 상기 타겟 메모리 어드레스가, 사용 가능한 복수의 영역 중 2개 이상에 대응하는 경우; 또는
    (e) 상기 타겟 메모리 어드레스가, 사용 가능한 복수의 영역 중 어느 하나에도 대응하지 않는 경우; 또는
    (f) 상기 영역식별 연산이, 보안 특권이 상기 영역식별 값을 결정하기에 불충분한 연산의 모드에 상기 처리회로가 있을 때, 행해지는 경우에,
    무효영역 식별 값을 출력하도록 구성된, 데이터 처리장치.
  6. 제 5 항에 있어서,
    상기 무효영역 식별 값은, 상기 복수의 기억영역 중 하나를 표현하지 않는 소정의 값을 포함하는, 데이터 처리장치.
  7. 제 5 항에 있어서,
    상기 무효영역 식별 값은, 상기 영역식별 값과 함께 출력되고 관련된 영역식별 값이 무효인 것을 나타내는 값으로 설정되는 무효 플래그를 사용하여 표현되는, 데이터 처리장치.
  8. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 영역식별 연산에 있어서, 상기 처리회로는,
    (a) 상기 매칭 기억영역에 기억된 속성 데이터의 적어도 일부;
    (b) 상기 매칭 기억영역에 기억된 속성 데이터의 적어도 일부로부터 얻어진 정보;
    (c) 상기 매칭 기억영역에 대한 메모리 어드레스 범위와 관련된 보안 상태의 표시;
    (d) 상기 매칭 기억영역에 대한 메모리 어드레스 범위의 시작 어드레스에 대응한 값;
    (e) 상기 매칭 기억영역에 대한 메모리 어드레스 범위의 종료 어드레스에 대응한 값; 및
    (f) 상기 매칭 기억영역에 대한 메모리 어드레스 범위의 사이즈에 대응한 값 중,
    적어도 하나를 포함하는 추가의 정보를 출력하도록 구성된, 데이터 처리장치.
  9. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 영역식별 연산에 있어서, 상기 처리회로는, 목적지 레지스터의 적어도 일부에 상기 영역식별 값을 기록하도록 구성된, 데이터 처리장치.
  10. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 영역식별 값은, 상기 매칭 기억영역의 영역 번호를 포함하는, 데이터 처리장치.
  11. 제 10 항에 있어서,
    상기 영역식별 연산에 있어서, 상기 처리회로는, 상기 복수의 기억영역 중 어느 영역이 상기 매칭 기억영역인지에 근거하여 상기 영역 번호를 발생하기 위해 상기 메모리 속성 유닛을 제어하도록 구성된, 데이터 처리장치.
  12. 제 10 항에 있어서,
    상기 메모리 속성 유닛의 각 기억영역은, 기억영역의 영역 번호를 기억하도록 구성되고;
    상기 영역식별 연산에 있어서, 상기 처리회로는 상기 매칭 기억영역으로부터 영역 번호를 출력하기 위해 상기 메모리 속성 유닛을 제어하도록 구성된, 데이터 처리장치.
  13. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 메모리 속성 유닛은, 복수의 제1 기억영역으로 이루어진 제1 메모리 속성 유닛이고, 각 제1 기억영역이 대응한 제1 메모리 어드레스 범위에의 액세스를 제어하기 위한 제1 속성 데이터를 기억하도록 구성되고;
    상기 데이터 처리장치는, 복수의 제2 기억영역으로 이루어진 제2 메모리 속성 유닛을 구비하고, 각 제2 기억영역이 대응한 제2 메모리 어드레스 범위에의 액세스를 제어하기 위한 제2 속성 데이터를 기억하도록 구성되고;
    상기 영역식별 연산에 있어서, 상기 처리회로는, 상기 복수의 제1 기억영역 중 어느 영역이 상기 타겟 메모리 어드레스를 포함하는 제1 메모리 어드레스 범위에 대응한 것으로서 상기 제1 메모리 속성 유닛에 의해 나타낸 대응한 제1 기억영역인지를 식별하기 위한 제1 영역식별 값과, 상기 복수의 제2 기억영역 중 어느 영역이 상기 타겟 메모리 어드레스를 포함하는 제2 메모리 어드레스 범위에 대응한 것으로서 상기 제2 메모리 속성 유닛에 의해 나타낸 대응한 제2 기억영역인지를 식별하기 위한 제2 영역식별 값을 출력하도록 구성된, 데이터 처리장치.
  14. 제 13 항에 있어서,
    상기 영역식별 연산에 있어서, 상기 처리회로는, 대응한 제1 기억영역에 기억된 제1 속성 데이터의 적어도 일부와 대응한 제2 기억영역에 기억된 제2 속성 데이터의 적어도 일부를 사용하여, 합성 속성 파라미터를 출력하도록 구성된, 데이터 처리장치.
  15. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 처리회로는 보안 도메인과 비보안 도메인으로 이루어진 연산의 복수의 도메인을 갖고, 상기 처리회로가 보안 도메인에서 작동중일 때, 상기 처리회로는, 상기 처리회로가 비보안 도메인에서 작동중일 때 액세스 불가능한 적어도 일부의 데이터에 액세스하는, 데이터 처리장치.
  16. 제 15 항에 있어서,
    상기 메모리 속성 유닛은 보안 보호 유닛을 구비하고, 상기 처리회로는 복수의 도메인 중 어느 도메인이 상기 보안 보호 유닛의 속성 데이터를 사용하여 특정 메모리 어드레스와 관련되어 있는지를 판정하도록 구성되고;
    상기 처리회로가 비보안 도메인에서 작동중일 때, 보안 도메인과 관련된 메모리 어드레스는 상기 처리회로에 액세스 불가능한, 데이터 처리장치.
  17. 제 15 항에 있어서,
    상기 영역식별 연산이, 상기 처리회로가 비보안 도메인에서 작동중일 때, 실행되는 경우, 상기 처리회로는 메모리 속성 유닛의 상기 매칭 기억영역을 식별하는 영역식별 값의 출력을 금지시키도록 구성된, 데이터 처리장치.
  18. 제 15 항에 있어서,
    (i) 보안 도메인에서 작동중일 때 상기 처리회로에 의해 메모리 어드레스 범위들에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 구성된 보안 메모리 보호 유닛; 및
    (ii) 비보안 도메인에서 작동중일 때 상기 처리회로에 의해 메모리 어드레스 범위들에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 구성된 비보안 메모리 보호 유닛을 더 구비하고;
    상기 보안 메모리 보호 유닛은 비보안 도메인에서 작동중일 때 상기 처리회로에 액세스 불가능한, 데이터 처리장치.
  19. 제 18 항에 있어서,
    상기 영역식별 연산은, 상기 보안 메모리 보호 유닛과 상기 비보안 메모리 보호 유닛 중 선택된 메모리 보호 유닛을 선택하고;
    상기 영역식별 연산에 있어서, 상기 처리회로는, 상기 복수의 기억영역 중 어느 영역이, 상기 타겟 메모리 어드레스를 포함하는 메모리 어드레스 범위에 대응한 것으로서 상기 선택된 메모리 보호 유닛에 의해 나타내는지를 식별하는 영역식별 값을 출력하도록 구성된, 데이터 처리장치.
  20. 제 19 항에 있어서,
    상기 영역식별 연산이 처리연산이 비보안 도메인에서 작동중일 때 행해지고, 상기 영역식별 연산이 상기 선택된 메모리 보호 유닛으로서 상기 보안 메모리 보호 유닛을 선택하는 경우, 상기 처리회로는, 보안 메모리 보호 유닛의 상기 매칭 기억영역을 식별하는 영역식별 값의 출력을 금지시키도록 구성된, 데이터 처리장치.
  21. 데이터 처리장치로서,
    데이터 처리를 행하는 처리수단; 및
    상기 처리수단에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하는 복수의 기억영역 수단을 포함하는 메모리 속성 유닛 수단을 구비하고;
    타겟 메모리 어드레스에 응답하여, 상기 처리수단은, 상기 메모리 속성 유닛 수단의 상기 복수의 기억영역 수단 중 어느 영역수단이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역 수단인지를 판정하고, 상기 메모리 속성 유닛 수단의 상기 복수의 기억영역 수단 중 어느 영역수단이 상기 타겟 메모리 어드레스를 포함하는 메모리 어드레스 범위에 대응한 것으로서 상기 메모리 속성 유닛 수단에 의해 나타낸 상기 매칭 기억영역 수단인지를 식별하는 영역식별 값을 출력하기 위해 영역식별 연산을 행하도록 구성되고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 되는, 데이터 처리장치.
  22. 처리회로에 의해 대응한 메모리 어드레스 범위에의 액세스를 제어하기 위한 속성 데이터를 기억하도록 각각 구성된 복수의 기억영역을 포함하는 메모리 속성 유닛을 구비한 데이터 처리장치의 데이터 처리방법으로서,
    타겟 메모리 어드레스에 응답하여, 영역식별 연산을 행하는 단계를 포함하되,
    상기 영역식별 연산은,
    상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 대응한 메모리 어드레스 범위가 상기 타겟 메모리 어드레스를 포함하는 매칭 기억영역인지를 판정하는 것; 및
    상기 메모리 속성 유닛의 상기 복수의 기억영역 중 어느 영역이 상기 매칭 기억영역인지를 식별하는 영역식별 값을 출력하는 것을 포함하고, 상기 타겟 메모리 어드레스는 물리 어드레스이고, 상기 영역식별 값은 상기 데이터 처리장치에 의해 실행된 적어도 일부의 소프트웨어에 사용 가능하게 되는, 데이터 처리방법.
  23. 제 22 항에 있어서,
    상기 처리회로는 보안 도메인과 비보안 도메인으로 이루어진 연산의 복수의 도메인을 갖고, 상기 처리회로가 보안 도메인에서 작동중일 때, 상기 처리회로는, 상기 처리회로가 비보안 도메인에서 작동중일 때 액세스 불가능한 적어도 일부의 데이터에 액세스하고,
    상기 영역식별 연산은, 비보안 도메인에서 실행하는 코드에 의해 설정된 하나 이상의 메모리 어드레스를 사용하여 보안 도메인에서 실행된 함수의 일부로서 행해지고, 상기 영역식별 연산을 위한 타겟 메모리 어드레스는 상기 하나 이상의 메모리 어드레스 중 하나를 포함하는, 데이터 처리방법.
KR1020167024133A 2014-02-10 2015-01-19 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산 KR102383900B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1402241.2A GB2522906B (en) 2014-02-10 2014-02-10 Region identifying operation for identifying a region of a memory attribute unit corresponding to a target memory address
GB1402241.2 2014-02-10
PCT/GB2015/050102 WO2015118295A1 (en) 2014-02-10 2015-01-19 Region identifying operation for identifying region of a memory attribute unit corresponding to a target memory address

Publications (2)

Publication Number Publication Date
KR20160119140A KR20160119140A (ko) 2016-10-12
KR102383900B1 true KR102383900B1 (ko) 2022-04-07

Family

ID=50390715

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167024133A KR102383900B1 (ko) 2014-02-10 2015-01-19 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산

Country Status (10)

Country Link
US (1) US10073777B2 (ko)
EP (1) EP3105681B1 (ko)
JP (1) JP6652491B2 (ko)
KR (1) KR102383900B1 (ko)
CN (1) CN105980993B (ko)
GB (1) GB2522906B (ko)
IL (1) IL246543B (ko)
MY (1) MY182446A (ko)
TW (1) TWI655643B (ko)
WO (1) WO2015118295A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9720868B2 (en) * 2014-07-07 2017-08-01 Xilinx, Inc. Bridging inter-bus communications
JP6860965B2 (ja) * 2015-06-12 2021-04-21 任天堂株式会社 情報処理装置、情報処理システム、情報処理プログラムおよび情報処理方法
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
US10534724B2 (en) * 2015-12-24 2020-01-14 Intel Corporation Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache
US10325108B2 (en) 2016-12-30 2019-06-18 Intel Corporation Method and apparatus for range based checkpoints in a storage device
CN110268392A (zh) * 2017-01-10 2019-09-20 瑞萨电子美国有限公司 安全架构和方法
US10402349B2 (en) * 2017-02-08 2019-09-03 Arm Limited Memory controller having data access hint message for specifying the given range of one or more memory addresses
US10534609B2 (en) * 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
GB2570692B (en) * 2018-02-02 2020-09-09 Advanced Risc Mach Ltd Controlling guard tag checking in memory accesses
EP3811264A4 (en) * 2018-06-24 2022-03-02 Hex Five Security, Inc. CONFIGURATION, ENFORCEMENT AND MONITORING THE SEPARATION OF TRUSTED EXECUTION ENVIRONMENTS
GB2578135B (en) * 2018-10-18 2020-10-21 Advanced Risc Mach Ltd Range checking instruction
GB2578158B (en) 2018-10-19 2021-02-17 Advanced Risc Mach Ltd Parameter signature for realm security configuration parameters
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
CN110008154B (zh) * 2019-04-16 2020-08-21 北京智芯微电子科技有限公司 提高处理器与访存总线时序的方法及内存属性预测器
KR20210012825A (ko) 2019-07-26 2021-02-03 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
GB2589895B (en) * 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
GB2589896B (en) * 2019-12-11 2022-07-27 Advanced Risc Mach Ltd An apparatus and method for handling exceptions
US11256631B1 (en) * 2020-01-17 2022-02-22 Ralph Crittenden Moore Enhanced security via dynamic regions for memory protection units (MPUs)
CN111694602B (zh) * 2020-06-12 2023-08-08 北京经纬恒润科技股份有限公司 跨分区的数据处理方法及装置
JP6827244B1 (ja) * 2020-09-15 2021-02-10 株式会社Attc 監査装置、監査方法、監査プログラムおよび監査システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011146030A (ja) 2009-12-15 2011-07-28 Canon Inc メモリ保護方法および情報処理装置
WO2013031130A1 (ja) 2011-09-01 2013-03-07 パナソニック株式会社 情報処理装置、そのアクセス制御方法及び集積回路

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049897A (en) * 1997-01-07 2000-04-11 Intel Corporation Multiple segment register use with different operand size
GB2325061B (en) * 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
WO2003090052A2 (en) * 2002-04-18 2003-10-30 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US7043616B1 (en) * 2002-04-18 2006-05-09 Advanced Micro Devices, Inc. Method of controlling access to model specific registers of a microprocessor
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US7287140B1 (en) * 2003-07-28 2007-10-23 Massachusetts Institute Of Technology System and technique for fine-grained computer memory protection
US7068545B1 (en) * 2005-01-04 2006-06-27 Arm Limited Data processing apparatus having memory protection unit
CN100386738C (zh) * 2005-08-10 2008-05-07 英业达股份有限公司 储存装置平台转移后的存取权限表自动重建方法及系统
US8051263B2 (en) * 2007-05-04 2011-11-01 Atmel Corporation Configurable memory protection
GB2484927A (en) * 2010-10-26 2012-05-02 Advanced Risc Mach Ltd Provision of access control data within a data processing system
CN102725741B (zh) * 2011-12-31 2014-11-05 华为技术有限公司 高速缓冲存储器控制方法、装置和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011146030A (ja) 2009-12-15 2011-07-28 Canon Inc メモリ保護方法および情報処理装置
WO2013031130A1 (ja) 2011-09-01 2013-03-07 パナソニック株式会社 情報処理装置、そのアクセス制御方法及び集積回路

Also Published As

Publication number Publication date
GB201402241D0 (en) 2014-03-26
IL246543B (en) 2020-03-31
IL246543A0 (en) 2016-08-31
MY182446A (en) 2021-01-25
JP6652491B2 (ja) 2020-02-26
US10073777B2 (en) 2018-09-11
TWI655643B (zh) 2019-04-01
US20150227462A1 (en) 2015-08-13
TW201532073A (zh) 2015-08-16
EP3105681A1 (en) 2016-12-21
WO2015118295A1 (en) 2015-08-13
GB2522906A (en) 2015-08-12
CN105980993B (zh) 2020-03-06
EP3105681B1 (en) 2021-10-20
KR20160119140A (ko) 2016-10-12
GB2522906B (en) 2021-07-14
CN105980993A (zh) 2016-09-28
JP2017505492A (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
KR102383900B1 (ko) 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산
US10810309B2 (en) Method and system for detecting kernel corruption exploits
CN108292272B (zh) 用于管理有界指针的装置和方法
US11249912B2 (en) Apparatus and method for storing bounded pointers
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
CN112602069A (zh) 范围检查指令
CN110574009B (zh) 用于管理对能力的使用的设备和方法
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
IL263204A (en) Confirmation control for teaching conditional memory access software
KR20200010308A (ko) 자격 도메인을 관리하는 장치 및 방법
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
US20230409494A1 (en) Technique for constraining access to memory using capabilities
CN118339542A (zh) 两阶段地址转换
JP7369720B2 (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