KR20210096062A - 예외 발생 이벤트 처리 시스템 및 방법 - Google Patents

예외 발생 이벤트 처리 시스템 및 방법 Download PDF

Info

Publication number
KR20210096062A
KR20210096062A KR1020217004641A KR20217004641A KR20210096062A KR 20210096062 A KR20210096062 A KR 20210096062A KR 1020217004641 A KR1020217004641 A KR 1020217004641A KR 20217004641 A KR20217004641 A KR 20217004641A KR 20210096062 A KR20210096062 A KR 20210096062A
Authority
KR
South Korea
Prior art keywords
processing unit
exception
handling routine
trigger event
control interface
Prior art date
Application number
KR1020217004641A
Other languages
English (en)
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 KR20210096062A publication Critical patent/KR20210096062A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

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 Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

예외 발생 이벤트들을 처리하는 장치 및 방법을 제공한다. 제1 처리 유닛은 프로그램 코드를 실행하도록 제공되고, 제2 처리 유닛도 제공된다. 상기 제1 처리 유닛은, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 갖는다. 상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 진입하는 것이다. 상기 제2 처리 유닛은, 상기 트리거 이벤트에 응답하여, 예외 처리 루틴을 실행하는 것으로, 이때에 상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치된다. 상기 제2 처리 유닛은 상기 예외 처리 루틴의 완료시 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치된다. 이러한 해결방법은, 제1 처리 유닛에 의해 실행되는 프로그램 코드와, 상기 시스템내의 상당한 보안성 향상을 일으킬 수 있는 예외 처리 루틴을 수행하는 데 사용된 소프트웨어와 사이의 물리적 분리를 고려한다.

Description

예외 발생 이벤트 처리 시스템 및 방법
본 기술은, 예외 발생 이벤트들을 처리하는 장치 및 방법에 관한 것이다.
처리유닛상에서 소프트웨어를 실행할 때, 예외가 생기게 하는 이벤트들이 일어나기도 한다. 그 때에, 인터럽트 서비스 루틴의 실행은, 상기 예외 발생 이벤트를 처리하기 위해서 유발될 수도 있다. 종종, 상기 인터럽트 서비스 루틴은, 소프트웨어 실행 특권의 상위 레벨에서 실행되어도 되고, 상기 예외 발생 이벤트를 일으켰던 실행을 갖는 코드보다 더 신뢰받는 코드의 일부이어도 된다. 일부의 구현 예에서, 소프트웨어 실행 특권의 레벨을 예외 레벨이라고도 하고, 이에 따라 예외 발생 이벤트가 특별한 소프트웨어의 실행시에 일어날 때, 상위 예외 레벨에서 상기 인터럽트 서비스 루틴을 실행하기 위해서, 해당 상위 예외 레벨로의 천이가 있는 경우일 수도 있다.
이러한 시스템에서는, 보다 신뢰된 코드와 관련된 데이터에의 액세스를 얻는 덜 신뢰된 코드의 위험들을 완화하기 위해서, 상기 시스템내의 보안의 레벨을 증가시키는 것이 바람직하다.
일 구성 예에서 제공한 시스템은: 프로그램 코드를 실행하는 제1 처리 유닛; 및 제2 처리 유닛을 포함하고; 상기 제1 처리 유닛은, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 갖고; 상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지(halted) 모드에 진입하는 것이고; 상기 제2 처리 유닛은, 상기 트리거 이벤트에 응답하여, 예외 처리 루틴을 실행하는 것으로, 이때에 상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치되고; 상기 제2 처리 유닛은 상기 예외 처리 루틴의 완료시 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치된다.
또 하나의 구성 예에서 제공한 제1 처리 유닛은: 프로그램 코드를 실행하는 실행 회로소자; 및 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 포함하고, 상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 실행 회로소자가 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 진입하는 것이고; 상기 제어 인터페이스는 상기 제2 처리 유닛이 상기 트리거 이벤트에 응답하여 예외 처리 루틴을 실행중인 동안에 상기 제2 처리 유닛에 액세스 가능하게 배치되는 것에 의해, 상기 제2 처리 유닛이 상기 예외 처리 루틴에서 필요로 한 대로 상기 제1 처리 유닛의 상기 상태 정보에 액세스하고 수정할 수 있고; 상기 제1 처리 유닛은, 상기 제2 처리 유닛이 상기 예외 처리 루틴을 완료하였을 때, 상기 정지 모드를 퇴장하고 상기 프로그램 모드의 실행을 재개하도록 배치된다.
추가의 구성 예에서 제공한 제2 처리 유닛은: 제1 처리 유닛에서 발행한 트리거 이벤트에 응답하여 예외 처리 루틴을 실행하는 실행 회로소자-상기 트리거 이벤트는 상기 제1 처리 유닛이 상기 제1 처리 유닛에 의한 프로그램 코드의 실행이 정지되어 있는 정지 모드에 진입하여 있는 것을 나타냄-; 및 본 통신 인터페이스를 통해, 상기 제2 처리 회로소자가, 상기 예외 처리 루틴을 실행하는 동안에 상기 제1 처리 유닛의 제어 인터페이스에 액세스하도록 배치되는 상기 통신 인터페이스-상기 제어 인터페이스는 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 제2 처리 유닛에 제공하도록 구성됨-를 포함하고; 상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치되고; 상기 제2 처리 유닛은 상기 예외 처리 루틴의 완료시 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치된다.
아울러 추가의 구성 예에서 제공한, 프로그램 코드를 실행하는 제1 처리 유닛과, 제2 처리 유닛을 갖는 시스템에서의 예외 발생 이벤트들을 처리하는 방법은: 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 상기 제1 처리 유닛에 제공하는 단계; 상기 제1 처리 유닛내의 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 상기 제1 처리 유닛이 진입하게 하는 단계; 상기 트리거 이벤트에 응답하여, 상기 제2 처리 유닛이, 예외 처리 루틴 실행시에 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하는 상기 예외 처리 루틴을 상기 제2 처리 유닛이 실행하게 하는 단계; 및 상기 제2 처리 유닛에 의한 상기 예외 처리 루틴의 완료시, 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하는 단계를 포함한다.
또 하나의 구성 예에서 제공한 시스템은: 프로그램 코드를 실행하는 제1 처리 수단; 및 제2 처리 수단을 포함하고; 상기 제1 처리 수단은, 상기 제2 처리 수단의 메모리 어드레스 공간에 매핑되어 상기 제1 처리 수단의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 수단에 제공하기 위한 제어 인터페이스 수단을 갖고; 상기 제1 처리 수단은, 상기 제1 처리 수단이 상기 프로그램 코드의 실행을 정지시키는 정지 모드에 진입하고 트리거 이벤트를 발행함으로써, 적어도 하나의 예외 발생 이벤트에 응답하고; 상기 제2 처리 수단은, 상기 트리거 이벤트에 응답하여, 예외 처리 루틴을 실행하는 것으로, 이때에 상기 제2 처리 수단은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 수단의 상기 상태 정보에 액세스하도록 배치되고; 상기 제2 처리 수단은, 상기 예외 처리 루틴의 완료시, 상기 제1 처리 수단이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 한다.
본 기술에 대해서, 아래의 첨부도면들에 도시된 것과 같은 예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 구현 예에 따라 시스템내에 설치된 부품들을 도시하는 블록도이고;
도 2는 일 구현 예에 따라 도 1의 상기 메모리 매핑된 제어 인터페이스내에 설치되어도 되는 기억소자들을 보다 상세히 도시하는 도면이고;
도 3은 일 구현 예에 따라 예외들의 처리를 도시하는 흐름도이고;
도 4a는 본 기술을 사용하지 않고 예외들의 처리를 도시하고 도 4b는 본 기술을 사용할 때 예외들의 처리를 도시한 것이고;
도 5a 및 5b는 여기서 설명된 기술들이 활용되어도 되는 처리 유닛들의 구현 예를 도시한 것이고;
도 6은 일 구현 예에 따라, 여기서 설명된 기술이 예외 처리의 네스팅(nesting)을 어떻게 허용하도록 구현될 수 있는지를 도시한 것이고;
도 7은 인터럽트 분배기를 사용하여 인터럽트들을 다수의 상이한 제어 코어들 중 하나에 분배하는 다른 구성 예를 도시한 것이고;
도 8은 적어도 하나의 레벨의 캐시가 애플리케이션 코어와 제어 코어 사이에 공유되어도 되는 배치 예를 도시한 것이다.
일 구성 예에서, 시스템은, 프로그램 코드를 실행하는 제1 처리 유닛과, 제2 처리 유닛을 제공할 수도 있다. 제2 처리 유닛은 프로그램 코드를 실행할 수도 있지만, 여기서 설명된 기술은, 상기 제1 처리 유닛에 의한 상기 프로그램 코드의 실행시에 예외 발생 이벤트가 일어나는 상황들에서 상기 제2 처리 유닛이 어떻게 사용되는지를 대상으로 한다.
제1 처리 유닛에는, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고, 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된, 제어 인터페이스가 제공되어 있다. 따라서, 상기 제어 인터페이스를 거쳐, 상기 제2 처리 유닛에는, 상기 제1 처리 유닛의 상기 상태의 적어도 일부에의 직접 매핑된 액세스가 제공된다.
상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 진입하도록 배치되어 있다. 그 후, 상기 제2 처리 유닛은, 이러한 트리거 이벤트에 응답하여, 예외 처리 루틴을 실행하는 것으로, 이때에 상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서, 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치된다. 따라서, 필요한 경우 소프트웨어 실행 특권의 상위 레벨로 먼저 천이한, 상기 필요로 한 예외 처리 루틴을 상기 제1 처리 유닛 자체가 실행할 정상적 해결방법과 대조하여, 여기서 설명된 기술에 따라, 제1 처리 유닛은 상기 예외 처리 루틴을 실행하지 않고, 대신에, 상기 예외 처리 루틴은 별도의 처리 유닛에 의해 실행된다. 따라서, 이것은, 자신의 프로그램 코드를 실행하는 상기 제1 처리 유닛과, 상기 제1 처리 유닛 대신에 예외 처리 루틴을 수행하는 데 사용된 별도의 처리 유닛과의 사이에서 물리적 분리가 이루어지는 것을 가능하게 한다. 이는 상기 시스템내에서 상당히 보안성을 증가시킬 수 있다.
그 후, 상기 예외 처리 루틴의 완료시, 상기 제2 처리 유닛은 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치되어도 된다. 제2 처리 유닛이 상기 필요로 한 상태 정보에 상기 제1 처리 유닛의 제어 인터페이스를 거쳐 액세스하므로, 상기 제2 처리 유닛은, 상기 제1 처리 유닛 대신에 상기 예외 처리 루틴을 수행하는 동안에 필요에 따라 상기 제1 처리 유닛의 상태를 효율적으로 조작할 수 있어, 적절한 때에 상기 제1 처리 유닛이 정지 모드를 퇴장할 때, 상기 제1 처리 유닛은 상기 예외 발생 이벤트를 처리하기 위해서 적절히 상기 상태가 갱신되어 있는 상태에서 상기 프로그램 코드의 실행을 정확히 재개할 수 있다.
따라서, 상기 제2 처리 유닛의 상기 메모리 어드레스 공간내에 매핑되는 제어 인터페이스를 제1 처리 유닛에 제공하고, 또한 상기 제1 처리 유닛의 관련 상태 정보에 상기 제2 처리 유닛이 직접 매핑된 액세스를 갖게 함으로써, 예외 발생 이벤트에 의해 생긴 예외를 다루는 데 필요로 한 상기 예외 처리 루틴의 수행은, 상기 제1 처리 유닛으로부터 물리적으로 별도의 처리 유닛에 떠넘길 수 있음에 따라서, 비신뢰 코드로부터 신뢰 데이터에의 액세스를 얻으려고 할 수도 있는 특정한 유형의 공격의 가능성을 상당히 완화시킬 수 있다.
상기 제2 처리 유닛에 상기 제1 처리 유닛의 제어 인터페이스를 거쳐 직접 매핑된 액세스가 주어지는 상태 정보는 다양한 형태를 취할 수도 있다. 일 구현 예에서, 이러한 상태 정보는, 프로그램 코드를 실행할 때 상기 제1 처리 유닛에 의해 처리된 데이터를 저장하는 데 사용된 상기 제1 처리 유닛의 일 세트의 레지스터들의 콘텐츠를 포함한다. 따라서, 상기 제2 처리 유닛상에서 상기 실행 처리 루틴의 수행시에, 제2 처리 유닛은, 상기 제1 처리 유닛의 제어 인터페이스를 사용한 효율적인 방식으로, 그 레지스터들의 콘텐츠를 판독하고, 필요에 따라 그 레지스터들의 콘텐츠를 갱신할 수 있다.
상기 제어 인터페이스가 상기 제1 처리 유닛의 상술한 세트의 레지스터들에의 직접 매핑된 액세스를, 상기 제2 처리 유닛에 제공하도록 배치될 수 있는 방식은 많이 있다. 일 배치 예에서, 상기 제어 인터페이스는, 제2 처리 유닛에 의해 상기 세트의 레지스터들에 직접 매핑된 액세스를 제공하기 위해 상기 제2 처리 유닛의 상기 메모리 어드레스 공간에 대해 매핑된 일 세트의 기억소자들을 제공한다. 따라서, 상기 세트내의 각 기억소자는, 제2 처리 유닛에 의해 어드레싱될 수 있고, 상기 제1 처리 유닛의 상기 세트의 레지스터들내의 대응한 레지스터에 직접 매핑된다. 그 결과, 상기 제2 처리 유닛이 그 기억소자들 중 하나에 판독 또는 기록 액세스할 때마다, 그것은, 상기 제1 처리 유닛의 상기 세트의 레지스터들내의 관련 레지스터에의 대응한 판독 또는 기록 액세스를 기동하는 데 사용된다.
상기 제1 처리 유닛의 상기 세트의 레지스터들에의 액세스에 더하여, 또는 이 액세스 대신에, 상기 제2 처리 유닛에는, 제1 처리 유닛의 메모리 어드레스 공간의 적어도 일부에의 직접 매핑된 액세스가 주어질 수도 있으므로, 제어 인터페이스를 거쳐 상기 제2 처리 유닛에 대해 이용 가능하게 한 상기 제1 처리 유닛의 상태 정보의 적어도 일부는 상기 제1 처리 유닛의 상기 메모리 어드레스 공간의 일부일 수 있다.
일 배치 예에서, 상기 제1 처리 유닛의 메모리 어드레스 공간의 일부는, 상기 제2 처리 유닛의 일차 어드레스 공간과는 별도의 상기 제2 처리 유닛의 이차 어드레스 공간을 형성하도록 배치되어도 된다. 상기 제2 처리 유닛이 해당 이차 어드레스 공간에 액세스하게 하도록 제공될 수 있는 메카니즘은 많이 있다. 예컨대, 이 목적을 위해 별도의 로드/스토어 명령들이 사용될 수 있거나, 태그 비트들은, 제2 처리 유닛이 상기 일차 어드레스 공간이나 상기 이차 어드레스 공간내에서 메모리 액세스들을 발생하는지에 영향을 미치기 위해서, 메모리 어드레스들을 발생할 때 상기 제2 처리 유닛에서 사용한 어드레스 레지스터의 논어드레스 부분에 가산될 수 있다.
하지만, 위에서 식별된 것처럼 이차 어드레스 공간의 제공은, 상기 시스템에 대한 특정한 아키텍처 변경들을 요구할 가능성이 높다. 다른 구현에서, 이러한 아키텍처 변경들은, 상기 제1 처리 유닛의 상기 메모리 어드레스 공간의 관련 부분을 제2 처리 유닛의 상기 일차 어드레스 공간에 매핑함으로써 회피될 수도 있다. 예컨대, 상기 제어 인터페이스는 상기 제2 처리 유닛의 상기 메모리 어드레스 공간에 매핑된 기억소자들의 블록을 제공할 수도 있고, 상기 블록내의 각 기억소자는 상기 제1 처리 유닛의 메모리 어드레스 공간의 적어도 일부내의 대응한 메모리 장소에 직접 매핑된다. 따라서, 이러한 사례들에 있어서, 상기 제1 처리 유닛의 관련 메모리 어드레스 공간은, 제1 처리 유닛의 앞서 설명된 세트의 레지스터들이 액세스될 수 있과 매우 같은 방식으로 상기 제2 처리 유닛에 의해 액세스될 수 있다.
상기 제어 인터페이스내의 상기 기억소자들의 블록을 상기 제1 처리 유닛의 메모리 어드레스 공간의 일부의 여러 가지의 메모리 장소들과 어떻게 관련시키는지에 관한 설정 가능성(configurability)을 허용하기 위해서, 상기 제어 인터페이스는, 상기 기억소자들의 블록내의 기억소자들과, 상기 제1 처리 유닛의 메모리 어드레스 공간의 적어도 일부내의 상기 대응한 메모리 장소들과 사이의 직접 매핑을 식별하기 위해 설정 가능한 매핑 스토리지를 포함할 수도 있다.
일 구현 예에서, 상기 제1 처리 유닛이 상기 프로그램 코드를 실행중인 동안에 일어나는 임의의 예외 발생 이벤트는, 상술한 방식으로 처리될 수도 있다, 즉 상기 제1 처리 유닛이 상기 정지 모드에 진입하게 하고 트리거 이벤트를 발행하게 할 수도 있다. 하지만, 그 밖의 구현에 있어서, 이는 특정한 예외 발생 이벤트들에 대해서만 일어나도록 제약될 수도 있고, 그 밖의 예외 발생 이벤트들은 종래의 방식으로, 즉 제1 처리 유닛 자체내에서, 상기 예외 처리 루틴을 수행하기 전에 상기 제1 처리 유닛의 예외 레벨에서의 천이와 관련지울 수 있게 처리될 수도 있다.
일 구현에 있어서, 상기 제어 인터페이스는, 상기 제1 처리 유닛에 의한 상기 프로그램 코드의 실행시에 접하였을 때의 예외 발생 이벤트들이 상기 제1 처리 유닛이 상기 정지 모드에 진입하게 하고 트리거 이벤트를 발행하게 하는 것인지를 식별하는 설정 가능한 예외 이벤트 식별 스토리지를 더 포함하여도 된다. 따라서, 상기 제1 처리 유닛은, 예외 발생 이벤트를 검출하면, 상기 정지 모드에 진입하고 트리거 이벤트를 발행하는 것이 적절한지를 판정하도록 상기 설정 가능한 예외 이벤트 식별 스토리지의 콘텐츠에 의해 제어될 수 있다.
이러한 해결방법은, 상술한 기술의 이용에 있어서 아주 큰 융통성을 제공한다. 구체적인 사용 케이스의 예로서, 상기 예외 이벤트 식별 스토리지는, 상기 제1 처리 유닛에게 제1 처리 유닛에 의해 처리되는 예외 발생 이벤트인 지정된 예외 레벨로 천이하는 것을 요구할 예외 발생 이벤트가 일어날 때마다, 상기 제1 처리 유닛이 정지 모드에 진입하고 트리거 이벤트를 발행하는 것을 식별하도록 구성되어도 된다. 따라서, 제1 처리 유닛내의 예외 발생 이벤트의 처리에 의해 상기 지정된 예외 레벨로 천이시키지 않을 상황에서는, 상기 제1 처리 유닛 자체에 의해 상기 필요로 한 예외 처리 루틴이 수행되게 하도록 판정되어도 되지만, 제1 처리 유닛이 그 지정된 예외 레벨(또는 이와는 달리 그 지정된 예외 레벨 또는 상위 예외 레벨)로 천이하는 것이 필요할 상황에서는, 해당 단계를 취하는 대신에, 상기 제1 처리 유닛은 정지 모드에 진입하고 트리거 이벤트를 발행하도록 배치될 수 있고, 따라서 상기 필요로 한 예외 처리 루틴이 상기 물리적 별도의 제2 처리 유닛에 의해 수행되게 할 수 있다.
일 구현 예에서, 상기 제1 처리 유닛은 상기 정지 모드에 진입할 때, 자신의 현재 예외 레벨로 유지하도록 배치되고, 상기 제2 처리 유닛은 선택된 예외 레벨에서 상기 예외 처리 루틴을 실행하도록 배치된다. 따라서, 상술한 기술들의 이용을 통해, 상기 예외 발생 이벤트는, 제1 처리 유닛이 자신의 현재의 예외 레벨을 변경하지 않고 처리된다. 대신에, 상기 제1 처리 유닛은, 단지 그 정지 모드에 진입하여, 자신의 현재의 예외 레벨을 유지하고, 적절한 때, 그 정지 모드를 퇴장하도록 지시받으면, 그 후 해당 현재의 예외 레벨에서 제1 처리 유닛은 상기 프로그램 코드의 실행을 재개할 수 있다. 이에 따라, 제1 처리 유닛은 그렇지 않은 경우 필요할지도 모르는 단계들을 취할 필요가 없어 상기 제1 처리 유닛은 예외 처리 루틴을 처리하기 위해서 상이한 예외 레벨로 천이하였다. 이러한 단계들은, 예를 들면, 현재의 실행 상태와 복귀 어드레스를 보존하는 단계, 상기 필요로 한 모드/예외 레벨에 진입하는 단계, 잠재적으로 특정한 데이터를 로컬 캐시 등의 임시 스토리지로부터 플러시하는 단계, 등을 포함할 수 있다. 따라서, 여기서 설명된 기술들을 채용함으로써 실현될 수 있는 보안상 이점에 더하여, 특정한 효율성 이점도 일부의 구현에서는 실현될 수 있다.
상기 제2 처리 유닛이 예외 처리 루틴을 실행하는 상기 선택된 예외 레벨은, 다양한 형태를 취할 수 있다. 이를테면, 일부의 사례에서는, 상기 제2 처리 유닛의 상기 선택된 예외 레벨이 상기 제1 처리 유닛의 현재의 예외 레벨과 같다. 하지만, 특별한 일 구현에 있어서, 상기 선택된 예외 레벨은, 제1 처리 유닛의 현재의 예외 레벨보다 상위의 예외 레벨이다.
일 구현에 있어서, 상기 트리거 이벤트는, 상기 제1 처리 유닛이 상기 정지 모드에 왜 진입하였는지를 식별할 때 상기 제2 처리 유닛을 지원하는 특정한 정보를 포함하여도 된다. 그렇지만, 상기 트리거 이벤트 자체를 보충하는 대안으로서, 일 구현에 있어서, 상기 제어 인터페이스는, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고, 또한 상기 제1 처리 유닛이 정지 모드에 왜 진입하였는지를 식별할 때 지원하는 데 상기 제2 처리 유닛에서 사용한 정보를 상기 제1 처리 유닛에 의해 제공하도록 기록된, 신드롬 스토리지를 포함하여도 된다. 따라서, 제2 처리 유닛이 트리거 이벤트를 처리할 때, 제2 처리 유닛은, 제1 처리 유닛이 정지 모드에 왜 진입하였는지를 식별할 때 지원하는 정보를 얻기 위해서 상기 신드롬 스토리지에의 판독 액세스들을 수행할 수 있음에 따라서, 예외 발생 이벤트를 처리하기 위해서 필요로 한 상기 프로세스의 효율성을 향상시킨다.
제1 처리 유닛과 제2 처리 유닛과의 사이에서 1 대 1 매핑이 존재할 필요가 없다. 예컨대, 상기 제2 처리 유닛은, 프로그램 코드를 실행중인 다양한 상이한 처리 유닛들 대신에 상술한 기능을 수행할 수 있다. 이를테면, 일 배치 예에서, 상기 시스템은, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 제3 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 제2 처리 유닛에 제공하도록 구성된 추가의 제어 인터페이스를 갖는 상기 제3 처리 유닛을 더 포함하여도 된다. 상기 제3 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제3 처리 유닛이 실행을 정지시키고 상기 트리거 이벤트를 발행하는 상기 정지 모드에 진입하는 것이어도 된다. 이 트리거 이벤트는, 상기 제1 처리 유닛이나 상기 제3 처리 유닛에서 상기 트리거 이벤트를 발행하였는지를 판정하게 하여, 상기 제1 처리 유닛과 제3 처리 유닛 중 어느 것이 상기 예외 처리 루틴을 실행할 때 액세스할지를 판정하는 것을, 상기 제2 처리 유닛이 가능하게 하는 정보를 포함하여도 된다. 따라서, 이러한 사례에서, 상기 제2 처리 유닛은, 상기 제1 처리 유닛과 상기 제3 처리 유닛 양쪽 대신에 예외 처리 루틴들을 수행할 수 있고, 또 메모리 어드레스 공간내에 매핑되는 상기 관련된 제어 인터페이스를 거쳐 필요에 따라 양쪽의 처리 유닛의 상기 필요로 한 상태 정보에 액세스할 수 있다.
일 구현 예에서, 상기 예외들의 처리는, 상기 시스템내에서 다수의 레벨들로 네스트(nest)될 수 있다. 따라서, 상기 제2 처리 유닛이 제1 처리 유닛 대신에 예외들을 처리할 수도 있지만, 상기 제2 처리 유닛 자체는, 코드를 실행중인 동안에 일어나는 예외 발생 이벤트들이 부가의 처리 유닛에 의해 처리될 수 있도록 배치되어도 된다. 따라서, 일 배치 예에서, 상기 시스템은 부가의 처리 유닛을 더 포함하여도 되고, 이때의 상기 제2 처리 유닛은, 상기 부가의 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제2 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 부가의 처리 유닛에 제공하도록 구성된, 제2 제어 인터페이스를 갖는다. 그 후, 상기 제2 처리 유닛은, 상기 제2 처리 유닛상에서 프로그램 코드의 실행시에 일어나는 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제2 처리 유닛이 그 제2 처리 유닛상에서 행해지는 상기 프로그램 코드의 실행을 정지시키고, 추가의 트리거 이벤트를 발행하는, 상기 정지 모드에 진입하는 것일 수도 있다. 그 후, 상기 부가의 처리 유닛은, 상기 추가의 트리거 이벤트에 응답하여, 추가의 예외 처리 루틴을 실행하는 것으로, 이때에 부가의 처리 유닛은 상기 추가의 예외 처리 루틴에 의해 필요에 따라 해당 상태 정보를 수정하기 위해서 상기 제2 제어 인터페이스를 거쳐 상기 제2 처리 유닛의 상기 상태 정보에 액세스하도록 배치된다. 그 후, 상기 부가의 처리 유닛은, 상기 추가의 예외 처리 루틴의 완료시에 상기 제2 처리 유닛이, 상기 정지 모드를 퇴장하게 하고 상기 제2 처리 유닛상에 행해지는 상기 프로그램 코드의 실행을 재개하게 하도록 배치된다.
이러한 해결방법에 의해, 임의의 레벨의 네스팅은 원하는 경우 이루어질 수 있다는 것을 알 것이다. 이러한 구현에서는, 각 개개의 처리 유닛은, 상기 시스템내에서 서브세트의 상기 이용 가능한 예외 레벨들에서 단지 동작할 수 있도록 구성되어도 된다. 실제로, 극단적인 예로, 개개의 처리 유닛들 전부는 단일의 예외 레벨에서 단지 실행하도록 배치될 수 있고, 이때 현재의 처리 유닛에 처리한 상위 예외 레벨로 천이를 야기하였을 임의의 예외 발생 이벤트들은 대신에, 상기 정지 모드에 진입하고 상기 트리거 이벤트를 발행하는 상기 현재의 처리 유닛에 의해 처리되고, 이때 해당 트리거 이벤트는 해당 상위 예외 레벨에서 동작하는 또 하나의 처리 유닛에 의해 처리된다.
상기 시스템내의 여러 가지의 처리 유닛들은, 다양한 형태를 취할 수 있다. 일 배치 예에서, 상기 제1 처리 유닛은 애플리케이션 처리 유닛이고, 상기 프로그램 코드는 애플리케이션 프로그램 코드이며, 상기 제2 처리 유닛은 제어 처리 유닛이다. 따라서, 일 배치 예에서, 상기 제1 처리 유닛은, 단지 애플리케이션 코드를 실행하도록 배치될 수 있고, 또한 소프트웨어 실행 특권의 최하위 레벨, 이를테면 최하위 예외 레벨에서 단지 동작할 수 있도록 구성되어도 된다. 상위 예외 레벨에서 코드의 실행을 필요로 할 임의의 예외 발생 이벤트들은, 상기 제1 처리 유닛에 의해 처리되지 않고, 대신에 여기서 설명된 기술을 거쳐 또 하나의 처리 유닛에 떠넘겨진다.
일 배치 예에서, 상기 제1 처리 유닛과 상기 제2 처리 유닛은, 별도의 프로세서 코어들에 의해 제공되어도 된다. 이러한 일 배치에서, 상기 제1 처리 유닛과 상기 제2 처리 유닛은 상기 시스템내에서 적어도 상기 캐시 레벨들의 서브세트를 위한 별도의 캐시 구조들을 가질 수도 있다. 상기 제1 처리 유닛과 상기 제2 처리 유닛 사이의 상기 캐시 구조들의 적절한 분리에 의해, 이는, 예를 들면 최근에 공개된 추론 기반 캐시 타이밍 부채널 공격들과 관련지어, 보안상 이점들을 한층 더 향상시킬 수 있고, 여기서 다수의 기술들은, 캐시 타이밍 분석이 명령들의 오추론 실행으로부터 정보를 누설하도록 남용될 수 있는 시나리오들을 발생하려고 하는 데 사용될 수 있다. 별도의 캐시 구조가 사용되도록 보장함으로써, 적어도, 레벨 1 캐시 및 레벨 2 캐시와 같은 상위 레벨의 캐시에서는, 상기와 같은 공격들이 완화될 수 있다.
상기 제1 처리 유닛과 상기 제2 처리 유닛이 별도의 프로세서 코어들이 될 요구사항이 없다. 예컨대, 또 하나의 구현에 있어서, 상기 제1 처리 유닛과 상기 제2 처리 유닛은 멀티스레드 프로세서 코어상에서 별도의 스레드들에 의해 제공되어도 된다. 각 스레드는 자신의 아키텍처 상태를 갖고, 따라서, 여기서 설명된 기술은 멀티스레드 프로세서 코어내에서 상기 별도의 스레드들과 관련지어 적용될 수 있다.
앞서 언급된 것처럼, 여기서 설명된 기술들은, 시스템을 어떻게 구성하는지의 융통성을 많이 제공할 수 있다. 예컨대, 상기 제1 처리 유닛과 상기 제2 처리 유닛의 적어도 하나는, 단일의 예외 레벨에서 단지 동작하도록 제약되어도 된다. 실제로, 앞서 언급된 것처럼, 적절한 네스팅 기술들에 의해, 각 개개의 처리 유닛이 단일의 예외 레벨에서 단지 동작하도록 제약되는 것이 가능할 수도 있다.
상기 제1 처리 유닛에서 발행한 트리거 이벤트는 다양한 형태를 취할 수 있다. 예컨대, 트리거 이벤트는, 해당 트리거 이벤트를 처리하는 것인 특별한 처리 유닛을 명시적으로 타겟으로 삼아도 되고, 따라서 이러한 사례들에서 상기 제2 처리 유닛은 상기 트리거 이벤트를 발행하는 피타겟(targeted) 처리 유닛이다. 그렇지만, 다른 해결방법에 있어서, 상기 트리거 이벤트는, 어느 처리 유닛이 해당 트리거 이벤트를 처리하는 것인지를 결정하는 일부의 분배 메카니즘에 발행될 수 있고, 이 경우에, 상기 제2 처리 유닛은 상기 트리거 이벤트에 응답 가능한 일부의 처리 유닛들 중에서 일 처리 유닛이다.
이제, 특별한 예들에 대해서 상기 도면들을 참조하여 설명하겠다.
도 1은 일 구현 예에 따른 시스템의 블록도이다. 제1 처리 유닛(10)은, 프로그램 코드를 실행하기 위한 처리 파이프라인(25)을 갖게 제공된다. 상기 처리 파이프라인에 의한 명령들의 실행시에, 상기 처리 파이프라인은, 상기 명령들에 대한 소스 오퍼랜드들을 얻고, 그 명령들의 실행에 의해 발생된 결과 오퍼랜드들을 상기 레지스터 세트에 저장하기 위해서, 표준 방식으로 레지스터 세트(30)의 레지스터들에 액세스할 것이다. 데이터는 로드 연산을 거쳐 메모리로부터 상기 레지스터들에 로딩될 수 있고, 마찬가지로, 데이터는 스토어 명령들의 실행을 거쳐 역으로 메모리에 저장되어도 된다. 상기 메모리 시스템은, 도 1에 도시된 상기 캐시(35)와 같은, 하나 이상의 레벨들의 캐시를 포함하여도 된다.
당업자라면 잘 알다시피, 처리 유닛내에서 프로그램 코드의 실행시에, 취해지는 예외를 일으키는 상황들이 생길 수도 있고, 여기서는 이러한 상황들을 예외 발생 이벤트들이라고 한다. 이러한 예외 발생 이벤트들은, 아주 다양한 상이한 형태들, 예컨대 입/출력(I/0) 디바이스 요구들, 유저 프로그램으로부터 운영체계 서비스를 유발하는 요구들(종종, 시스템 콜이라고 함), 정수 산술 오버플로우 또는 언더플로우, 페이지 폴트 등을, 취할 수 있다.
일 처리 유닛이, 여기서 상이한 예외 레벨들이라고 하는 소프트웨어 실행 특권의 다수의 상이한 레벨들에서 실행하는 것도 알려져 있다. 예외 발생 이벤트에 의해 예외가 취해지게 될 때, 이는, 일반적으로, 상기 예외를 다루기 위해서 (여기서는 예외 처리 루틴이라고도 하는) 인터럽트 서비스 루틴의 실행을 필요로 할 것이다. 종종, 모든 경우에서는 아니지만, 상기 처리 유닛이, 상기 예외를 처리하기 위해서 상기 인터럽트 서비스 루틴을 실행하기 전에, 상이한, 상위 특권, 예외 레벨로 천이하는 것이 요구될 수도 있다.
상기 시스템내에서 데이터의 보안성을 보장하기 위해서, 특별한 예외 레벨에서 실행하는 소프트웨어가 상위 예외 레벨에서 실행하는 상기 소프트웨어와 관련된 특정한 데이터에 액세스할 수 없도록 보장하는 것이 바람직하다. 상기 시스템내에서 신뢰된 코드에서 사용한 상기 데이터를 분리하려고 하는 메카니즘들이 공지되어 있어서, 그 데이터는, 하위 예외 레벨에서 행하는 덜 신뢰된 코드에 의해 액세스될 수 없다. 그렇지만, 공격자들은, 비신뢰 코드를 실행할 때 신뢰된 데이터에의 액세스를 얻으려고 이용하는 기술들에 관해 훨씬 더 정교해지고 있는 중이다. 특별한 예로서, 추론 기반 캐시 타이밍 부채널 공격들이 개발되고 있고(Spectre이라고 하는 경우도 있다), 여기서 다수의 기술들은, 캐시 타이밍 분석은 명령들의 오추론 실행으로부터 정보를 누설하도록 남용될 수 있게 사용될 수 있다. 이러한 배경에 대해서, 예외들을 처리할 때 시스템내의 보안성을 증가시켜, 상위 예외 레벨에서 조작된 신뢰된 데이터가 하위의 덜 신뢰된 예외 레벨에서 실행하는 코드에 대해 알게 모르게 이용 가능하게 되지 않도록 보장하는 것이 바람직할 것이다.
여기서 보다 상세히 설명하듯이, 상기 제1 처리 유닛(10)은, 일어날 수도 있는 예외 발생 이벤트의 유형들의 적어도 일부에 대해서, 상기 제1 처리 유닛이, 예컨대 상위 예외 레벨로 전환하고 적절한 인터럽트 서비스 루틴을 상기 처리 파이프라인(25)상에서 실행함으로써, 상기 실행 자체를 처리하지 못하지만, 대신에 해당 예외의 서비스가 도 1의 제2 처리 유닛(20)이라고 하는 물리적 별도의 처리 유닛에 의해 처리되는 것을 가능하게 하는 메카니즘이 제공되도록, 배치된다.
특히, 상기 제1 처리 유닛(10)은, 상기 제2 처리 유닛(20)의 메모리 어드레스 공간에 매핑되는 메모리 매핑된 제어 인터페이스(40)를 갖는다. 특히, 다수의 기억소자들(45)은, 상기 제2 처리 유닛의 메모리 어드레스 공간의 일부에 매핑되는 상기 메모리 매핑된 제어 인터페이스(40)내에 제공되고, 이것에 의해 로드 명령 및 스토어 명령은, 상기 제2 처리 유닛의 메모리 어드레스 범위내에서 대응한 어드레스들의 지정을 통해, 그 기억소자들(45)에 대해 판독 및 기록하기 위해서, 상기 처리 파이프라인(50)상에서 실행될 수 있다.
게다가, 그 기억소자들(45)은, 상기 제1 처리 유닛의 특정한 상태 정보에의 직접 매핑된 액세스를 제공하도록 구성된다. 특히, 도 2를 참조하여 상세히 후술하듯이, 그 기억소자들 중 특정한 기억소자는 상기 레지스터 세트(30)내의 상기 레지스터들에의 직접 매핑된 액세스를 제공하여도 되어, 제2 처리 유닛이, 상기 제1 처리 유닛(10)에서 일어난 예외를 처리하는 인터럽트 서비스 루틴을 수행할 때 그 레지스터들의 콘텐츠를 판독 및 갱신하는 것을 가능하게 한다. 마찬가지로, 상기 제1 처리 유닛의 메모리 어드레스 공간의 특정한 부분은 상기 기억소자들(45)을 거쳐 상기 제2 처리 유닛에 대해 이용가능하게 될 수 있어, 제2 처리 유닛(20)에 의해 그 기억소자들에 대해 수행된 로드 또는 스토어 연산으로 데이터를 상기 제1 처리 유닛(10)의 메모리 어드레스 공간내의 메모리 장소들로부터 판독 또는 메모리 장소들에 기록시키도록 할 것이다. 따라서, 상기 기억소자들(45)을 거쳐, 상기 제2 처리 유닛은, 도 1의 쌍방향 선들(80)로 나타낸 것처럼, 상기 레지스터 세트(30)에 대해 판독 및 기록 연산을 수행 가능할 수도 있고, 마찬가지로, 제1 처리 유닛(10)의 상기 캐시(35)와 인터페이싱하는 쌍방향 선들(85)로 나타낸 것처럼, 적어도 상기 제1 처리 유닛의 메모리 어드레스 공간의 서브세트를 고려하여 판독 및 기록 연산을 수행 가능할 수도 있다.
상기 제2 처리 유닛은, 상기 제1 처리 유닛과 마찬가지의 방식으로 배치되어도 되고, 따라서 명령들을 실행하도록 배치된 처리 파이프라인(50)을 가질 수 있고, 이때에, 상기 처리 파이프라인은 관련된 레지스터들의 세트(55)에 액세스할 수도 있고, 또한 데이터를 로컬 캐시(60)를 거쳐 메모리로부터 그 레지스터들에 로딩하거나, 또는 데이터를 역으로 상기 로컬 캐시(60)를 거쳐 상기 레지스터들로부터 메모리에 저장하여도 된다.
여기서 설명된 기술에 따라, 적어도 특정한 유형들의 예외 발생 이벤트의 경우, 상기 처리 파이프라인(25)은, 프로그램 코드의 실행을 정지시크는 연산의 정지 모드에 진입하고, 트리거 이벤트를 발행하도록 배치된다. 특히, 상기 처리 파이프라인(25)은, 트리거 이벤트(70)가 상기 제1 처리 유닛(10)으로부터 출력되게 하는 경로(65) 상에서 정지 모드 신호를 어서트할 수 있다. 이 트리거 이벤트는, 특별한 처리 유닛에 향해도 되거나, 상기 트리거 이벤트를 어느 처리 유닛에 향하게 할지를 판정하기 위해 임의의 적절한 기준을 적용하는 인터럽트 분배 엔티티에 발행되어도 된다. 현재의 사례에서는, 상기 트리거 이벤트를 궁극적으로 상기 제2 처리 유닛(20)에 전달시키는 것으로 가정한다.
상기 트리거 이벤트를 수신하면, 상기 제2 처리 유닛은, 자신의 처리 파이프라인(50)내에서 수행되는 상기 처리를 중단시키고, 상기 트리거 이벤트에서 제공된 상기 정보에 근거하여, 상기 제1 처리 유닛(10)에 의해 생긴 예외를 처리하게 실행되는 적절한 인터럽트 서비스 루틴을 판정한다.
그 인터럽트 서비스 루틴을 실행할 때, 상기 처리 파이프라인(50)은, 상기 메모리 매핑된 제어 인터페이스(40)내의 메모리 어드레스 가능 기억소자들(45)에 향하게 되는 상기 경로들(75)을 거쳐 로드 연산 및/또는 스토어 연산을 수행하여도 된다. 앞서 설명된 것처럼, 상기 기억소자들에의 판독 액세스 또는 기록 액세스는, 상기 경로들(80)을 거쳐 상기 레지스터 세트(30)의 레지스터들, 또는 상기 경로들(85)을 거쳐 제1 처리 유닛의 메모리 어드레스 공간내의 메모리 장소들 등의, 상기 제1 처리 유닛내의 직접 매핑된 상태 유지 구조들에의 대응한 액세스들을 기동시킨다.
그 결과, 상기 인터럽트 서비스 루틴의 처리시에, 상기 제2 처리 유닛(20)은, 상기 제1 처리 유닛내에서 필요로 한 상태에 액세스 가능하고, 해당 상태를 상기 인터럽트 서비스 루틴에서 필요로 한 대로 수정 가능하다.
이러한 프로세스가 상기 제2 처리 유닛의 제어하에 수행중이지만, 상기 제1 처리 유닛은, 상기 정지 모드내에 유지되어 있고, 이에 따라 상기 처리 파이프라인(25)내에서 임의의 명령들을 실행하지 않는다. 상기 예외 처리 루틴이 제2 처리 유닛에 의해 완료될 때, 예외 처리 프로세스가 완료되고, 즉 상기 예외로부터 복귀가 존재하는 것을 나타내기 위해 경로(90)상에서 신호가 발행될 수 있다. 이 시점에서, 상기 제1 처리 유닛은, 상기 프로그램 코드의 실행을 재개하는 것이 자유롭고, 이에 따라 정지 모드 퇴장 신호는 상기 처리 파이프라인(25)에 경로(95)상에서 송신되어서 프로그램 실행을 재개시킨다.
이러한 메카니즘에 의해, 상기 처리 파이프라인(25)은, 현재의 예외 레벨로부터, 즉 예외 발생 이벤트가 일어나기 전에 동작중이었던 상기 예외 레벨로부터, 천이할 필요가 없다는 것을 주목해야 한다. 대신에, 상기 처리 파이프라인은 현재의 예외 레벨을 유지한 채로 단지 실행을 정지시킬 수 있고, 적절한 때에, 그 후 다시 현재의 예외 레벨에 머무른 채에 상기 프로그램 코드의 실행을 재개할 수 있다.
상기 메모리 매핑된 제어 인터페이스(40)의 사용을 통해, 필요에 따라 물리적 별도의 처리 유닛이 상기 제1 처리 유닛의 상태 정보에 액세스하고 이 상태 정보를 수정하는 메카니즘을 제공하여 상기 예외 처리 루틴을 효율적으로 수행하는 것을 가능하게 함으로써, 상기 예외 처리 루틴의 처리를 상기 물리적 별도의 처리 유닛(20)에 떠넘기는 것이 가능하다. 이는, 상기 시스템내의 보안성을 상당히 개선시킨다. 예컨대, 상기 예외 발생 이벤트의 유형이, 정상적으로 상기 예외 처리 루틴을 수행하기 전에 상기 제1 처리 유닛에게 상위 예외 레벨에 진입하도록 요구하면, 더 이상 상기 제1 처리 유닛내에서 해당 천이가 발생하기 위한 요구사항이 없다. 대신에, 상기 예외 처리 루틴은, 해당 예외 처리 루틴을 수행하기 위해서 예외 상위 레벨로의 자체 천이할 수 있거나 천이하지 않을 수도 있는, 상기 별도의 처리 유닛에 의해 실행될 수 있고, 이러한 사례에서 상기 상이한 예외 레벨들에서 동작하는 상기 소프트웨어간에 물리적 분리는 보안성을 상당히 개선시킨다.
원하는 경우, 상기 제2 처리 유닛에도, 상기 제1 처리 유닛내의 그 밖의 스토리지, 예를 들면, 상기 부가의 메모리 매핑된 제어 레지스터들(110)에의 메모리 매핑된 액세스가 주어질 수 있다. 예컨대, 임베디드 추적 매크로셀(ETM)(100)은, 상기 제1 처리 유닛내에서, 상기 처리 파이프라인(25)의 처리 활동들을 나타내는 추적 스트림을 생성하도록 제공되어도 되고, 이때 해당 ETM의 연산은 상기 제어 레지스터들(110)내에 저장된 특정한 제어정보(120)에 의해 제어된다. 마찬가지로, 수행 관리 유닛(PMU)(105)은, 상기 제1 처리 유닛의 동작 수행을 나타내는 특정한 수행 매트릭스들을 발생하도록 제공되어도 되고, 해당 수행 관리 유닛은 상기 제어 레지스터들(110)내의 제어정보(115)에 근거하여 구성되어도 된다. 원하는 경우, 상기 제2 처리 유닛(20)에는 상기 제어 레지스터들(110)에의 메모리 매핑된 액세스가 주어질 수 있어서, 상기 제2 처리 유닛이 상기 ETM(100)과 상기 PMU(105)에 의해 수행되는 상기 연산들을 프로그래밍할 수 있다.
일 구현에 있어서, 상기 메모리 매핑된 제어 인터페이스(40)는, 제1 처리 유닛(110)의 디버그 인터페이스내에 제공된 기능성을 개선시킴으로써 제공될 수 있다. 특히, 제1 처리 유닛상에서 디버깅 연산들을 수행할 때, 디버그 인터페이스는, 상기 처리 파이프라인의 실행이 필요에 따라 또한 필요할 때 정지되는 것을 가능하게 하는 메카니즘들을 제공할 수도 있다. 이러한 메카니즘은, 단지 표준 외부 디버그 인터페이스를 제공하는 대신에, 제1 처리 유닛의 특정한 상태 정보에의 직접 매핑된 액세스를 제공하여, 별도의 처리 유닛(20)상에서 실행하는 인터럽트 서비스 루틴이 해당 상태 정보를 예외의 처리시에 액세스 및 갱신하는 것이 효율적인 메카니즘을 제공함으로써, 외부 디바이스, 이를테면 상기 제2 처리 유닛으로부터 상위 수행 액세스를 허용하도록, 보충되어도 된다.
도 2는 일 구현 예에서 상기 메모리 매핑된 제어 인터페이스(40)내에 제공되어도 되는 상기 기억소자들(45)을 보다 상세히 도시하는 도면이다.
도시된 것처럼, 일 세트의 기억소자들(150)은, 상기 제1 처리 유닛의 상기 레지스터들(30)에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 주기 위해서 제공되어도 된다. 예를 들면, 상기 세트내의 각 개개의 기억소자는, 상기 레지스터 세트(30)내에서의 상기 레지스터들 중 하나에 직접 매핑되어도 된다. 그 후, 상기 제2 처리 유닛(20)내에서의 처리 파이프라인(50)이 로드 또는 스토어 연산을 수행할 때, 상기 세트내의 특별한 기억소자(150)에 매핑하는 메모리 어드레스를 지정하는 것은, 상기 레지스터 세트내의 상기 레지스터에 직접 액세스하기 위해서 사용될 수 있다. 예컨대, 로드 연산을 수행할 때, 상기 관련 레지스터(30)로부터의 콘텐츠는 역으로 상기 처리 파이프라인(50)에 제공하기 위한 상기 세트내의 기억소자(150)에 검색될 수 있고, 마찬가지로, 스토어 연산을 수행할 때, 데이터는, 상기 세트내의 어드레싱된 기억소자(150)에 기록되어 직접 상기 레지스터 세트(30)의 대응한 레지스터내에 갱신이 이루어지게 할 수 있다.
또한 도 2에 도시된 것처럼, 원하는 경우, 기억소자들의 블록(155)은, 상기 제1 처리 유닛의 상기 메모리 어드레스 공간의 일부에의 직접 매핑된 액세스를 제공하게 제공될 수 있다. 예컨대, 상기 기억소자들의 블록(155)은, 상기 제2 처리 유닛의 메모리 어드레스 공간내의 특별한 범위의 어드레스들과 관련될 수 있어서, 그 기억소자들의 블록에 관해서 로드 및 스토어 연산들이 상기 제2 처리 유닛에 의해 수행되게 한다. 또한, 각 기억소자는 상기 제1 처리 유닛의 메모리 어드레스 공간내의 관련된 메모리 장소에 직접 매핑될 수 있어, 그 후, 이러한 기억소자에 관해서 수행된 임의의 액세스는 상기 관련된 메모리 장소에 관해서 직접 수행된다.
상기 블록(155)에서의 상기 기억소자들이 상기 제1 처리 유닛의 메모리 어드레스 공간내의 특별한 메모리 장소에 매핑되는 방식은 설정 가능할 수도 있고, 따라서, 예컨대, 하나 이상의 매핑 레지스터들(160)은, 상기 블록(155)에서의 상기 기억소자들과 상기 제1 처리 유닛(10)의 메모리 어드레스 공간에서의 대응한 메모리 장소들과의 사이의 상기 매핑을 식별하도록 제공되어도 된다. 상기 매핑 레지스터(들)은, 다양한 방식으로, 예컨대, 상기 제2 처리 유닛(20)상에 실행된 신뢰된 코드에 의해, 상기 제1 처리 유닛(10)상에서 실행된 적절한 신뢰된 코드에 의해, 또는, 상기 제1 처리 유닛과 상기 제2 처리 유닛 사이의 관계를 셋업하는 데 사용된 추가의 처리 유닛상에서 실행된 신뢰된 코드에 의해, 기록되어도 된다. 이러한 해결방법에 의해, 상기 제1 처리 유닛(10)의 메모리내에 유지된 상태 정보는, 상기 메모리 매핑된 제어 인터페이스(40)를 통해 제공된 상기 직접 매핑된 액세스로 인한 효율적인 방식으로, 상기 제2 처리 유닛(20)의 처리 파이프라인(50)상에서 상기 인터럽트 서비스 루틴의 실행시에 액세스되어 갱신될 수 있다.
상기 매핑 레지스터들(160)을 거쳐 구성된 상기 기억소자들의 블록(155)은 상기 제2 처리 유닛(20)에는 상기 제1 처리 유닛의 메모리 어드레스 공간의 일부에의 직접 매핑된 액세스가 주어질 수 있는 하나의 메카니즘을 제공하지만, 그 밖의 메카니즘들도 원하는 경우 사용될 수 있다는 것을 알 것이다. 이를테면, 상기 제1 처리 유닛(10)의 상기 메모리 어드레스 공간은, 상기 제2 처리 유닛의 일차 어드레스 공간과 별도로 상기 제2 처리 유닛의 이차 어드레스 공간으로서 취급될 수 있다. 그 후, 제2 처리 유닛은, 상기 제1 처리 유닛 대신에 상기 인터럽트 서비스 루틴을 실행하는 동안에 상기 제1 처리 유닛(10)의 어드레스 공간내의 상태 정보에 액세스하도록, 이차 어드레스 공간을 어드레싱하는 것을 가능하게 하는 메카니즘이 구비하고 있어도 된다. 이러한 목적을 위해 사용될 수 있는 메카니즘은 많이 있다. 예컨대, 별도의 세트의 로드 및 스토어 명령들은, 상기 일차 어드레스 공간 대신에 이차 어드레스 공간에 액세스하는 데 사용되는 상기 명령 세트 아키텍처에 의해 제공되어도 된다. 또는, 태그 비트들은, 메모리 어드레스들을 생성할 때 상기 일차 어드레스 공간 또는 이차 어드레스 공간내의 메모리 액세스들을 생성하는지에 영향을 미치는, 상기 제2 처리 유닛에서 사용한 어드레스 레지스터의 논어드레스 부분에 가산될 수 있다. 그렇지만, 이러한 메카니즘은, 상기 제1 처리 유닛의 전체 어드레스 공간이 상기 제2 처리 유닛의 이차 어드레스 공간으로서 복제되는 것을 잠재적으로 가능하게 할 수 있지만, 그것은 특정한 아키텍처 변경들이 구현되기를 요구할 수도 있다. 따라서, 일부의 구현에서는, 도 2를 참조하여 상술한 메카니즘을 선호할 수도 있다. 임의의 시점에 있어서(즉, 상기 매핑 레지스터들(165)에서의 매핑 변경없이) 상기 제2 처리 유닛에 의해 액세스될 수 있는 제1 처리 유닛내의 상기 어드레스 공간의 양이 상기 기억소자들의 블록(155)의 크기에 의해 지시되지만, 그것은, 상기 시스템에 대한 임의의 아키텍처 변경들을 필요로 하지 않고 구현될 수 있는 메카니즘을 제공한다.
또한, 도 2에 도시된 것처럼, 하나 이상의 예외 발생 식별 레지스터들(165)은, (예를 들면, 예외 레벨의 변경과, 상기 처리 파이프라인(25)내의 인터럽트 서비스 루틴의 실행을, 기동함으로써) 상기 예외 자체를 다루려고 하는 대신에, 예외 발생 이벤트의 어느 유형이 상기 제1 처리 유닛으로 하여금 상기 정지 모드에 진입하고 상기 트리거 이벤트를 발행하게 할지를 식별하도록 프로그래밍될 수 있게 제공되어도 된다. 이것은, 상기 정지 모드가 언제 사용되는지에 관한 아주 않은 설정 가능성을 허용한다. 예컨대, 상기 규모의 일 단부에서, 임의의 예외 발생 이벤트는 상기 처리 파이프라인이 상기 정지 모드에 진입하게 할 수도 있어, 모든 예외들은 상기 제2 처리 유닛에 의해 원격으로 처리된다. 그렇지만, 원하는 경우, 하나 이상의 상이한 형태의 예외 발생 이벤트는, 상기 정지 모드와, 상기 예외 처리의 상기 제2 처리 유닛에의 떠넘김을 기동하지 않고, 상기 제1 처리 유닛에 의해 처리되면 좋을 수도 있다.
일 배치 예에서, 상기 예외 이벤트 식별 레지스터(들)(165)는, 상기 제1 처리 유닛에게 상기 제1 처리 유닛에 의해 처리되는 예외 발생 이벤트이었던 지정된 예외 레벨로 천이하도록 요구하는 상기 제1 처리 유닛내에서 예외 발생 이벤트가 일어날 때마다, 해당 예외 발생 이벤트의 발생이 상기 정지 모드에 진입되게 하고, 제2 처리 유닛(20) 등의 물리적 별도의 처리 유닛이 상기 예외를 처리하게 상기 트리거 이벤트(70)를 발행시키게 할 것이라는 것을, 식별하도록 프로그래밍되어도 된다. 구체적인 예에 의해, 상기 제1 처리 유닛에 대해, 상기 예외 레벨 0에 머무르는 동안에 처리될 수 있는 예외 발생 이벤트들을 처리시킬 수도 있지만, 예외 레벨 1 이상으로 천이를 요구할 임의의 예외 발생 이벤트들의 경우에, 이것은, 상기 처리 파이프라인(25)이 상기 정지 모드에 진입하게 하고, 상기 예외의 처리를 물리적 별도의 처리 유닛에 떠넘기게 할 수도 있다. 또 하나의 예로서, 상기 제1 처리 유닛에 대해, 예외 레벨 0 또는 예외 레벨 1에서 처리될 수 있는 예외들을 처리시킬 수도 있지만, 예외 레벨 2 이상으로의 천이를 요구할 임의의 그 밖의 예외 발생 이벤트들을 위해 상기 정지 모드에 진입할 것이다.
상기 예외 이벤트 식별 레지스터(들)(165)는, 예를 들면, 상기 제2 처리 유닛(20)상에 실행하는 신뢰된 코드에 의해, 상기 제1 처리 유닛(10)상에서 실행하는 신뢰된 코드에 의해, 또는, 상기 제1 처리 유닛과 상기 제2 처리 유닛 사이의 관계를 셋업하는 데 사용된 추가의 처리 유닛상에서 실행된 신뢰된 코드에 의해, 다양한 방식으로 프로그래밍될 수 있다.
일 구현에 있어서, 상기 트리거 이벤트(70) 자체는, 상기 제1 처리 유닛이 상기 정지 모드에 진입하는 이유를 상기 제2 처리 유닛이 판정하는 것을 가능하게 할 일부의 정보를 제공하여도 된다. 그렇지만, 다른 구현에 있어서, 하나 이상의 신드롬 레지스터들(170)은, 이를 위해 상기 기억소자들(45)내에 제공되어도 된다. 특히, 그 후, 상기 제1 처리 유닛은, 상기 정지 모드에 진입하기 전에 그 신드롬 레지스터들에 기록할 수 있어, 상기 제2 처리 유닛이 상기 트리거 이벤트에 응답하므로, 인터럽트 서비스 루틴을 실행할 때, 그 후, 제2 처리 유닛은 해당 정보를 얻기 위해서 상기 신드롬 레지스터들에 액세스할 수 있다.
도 3은 상기 제1 처리 유닛(10)내에서 검출된 예외 발생 이벤트를 처리할 때 도 1의 상기 시스템의 동작을 도시하는 흐름도다. 단계 200에서는, 상기 제1 처리 유닛이 예외가 취해질 필요가 있는 것을 검출하였는지를 판정한다. 검출하였을 경우, 단계 205에서는, 상기 예외 발생 이벤트가 상기 제1 처리 유닛에게 상기 정지 모드에 진입하도록 요구하는지를 판정한다. 앞서 설명된 것처럼, 이는, 상기 예외 이벤트 식별 레지스터(들)(165)의 구성에 의존할 수도 있다. 상기 예외 발생 이벤트가 상기 제1 처리 유닛에게 상기 정지 모드에 진입하도록 요구하지 않을 경우, 프로세스는 단계 210으로 진행되어 상기 제1 처리 유닛은 표준방식으로 상기 예외를 처리한다. 앞서 설명된 것처럼, 이는 상기 제1 처리 유닛에 의해 상위 예외 레벨로 변경하는 것을 포함하여도 된다.
상기 예외 발생 이벤트가 상기 제1 처리 유닛에게 상기 정지 모드에 진입하도록 요구한다고 판정할 경우, 단계 215에서, 상기 제1 처리 유닛은, 자신의 현재의 예외 레벨에 머무르고, 상기 정지 모드에 진입하고, 상기 트리거 이벤트를 어서트한다.
상기 트리거 이벤트는, 상기 예외를 처리하는 것인 특별한 처리 유닛에서 타겟으로 삼아도 되거나, 대신에, 상기 트리거 이벤트를 어느 처리 유닛에 향하게 할지를 판정하는, 인터럽트 재분배기 메카니즘을 거쳐 라우팅되어도 된다. 어느 메카니즘이 사용되든, 상기 트리거 이벤트는 결국 적절한 제2 처리 유닛에 의해 수신되고, 단계 220에서, 상기 트리거 이벤트에 응답하는 상기 제2 처리 유닛은, 해당 제2 처리 유닛에 의해 현재 수행되는 상기 처리를 정지시키기 위해 인터럽트를 취하고 나서, 예외를 처리하기 위해서 적절한 예외 처리 루틴을 실행한다. 상기 예외 처리 루틴의 판정은, 표준 방식으로, 예컨대, 일어나 있던 상기 예외의 유형을 참조하여 이루어질 수 있다. 또한, 상기 트리거 이벤트의 일부로서 발행된 상기 인터럽트 수 등의 정보는, 상기 제2 처리 유닛이, 상기 트리거 이벤트를 상기 제1 처리 유닛이 발행하였다고 판정하여서, 상기 예외 처리 루틴을 수행할 때 어느 메모리 매핑된 제어 인터페이스(40)와 통신하는 것인지를 판정하는 것을 가능하게 할 것이다.
단계 220에 나타낸 것처럼, 상기 예외 처리 루틴을 실행하는 프로세스 동안에, 제2 처리 유닛(20)은, 상기 제1 처리 유닛(10)의 메모리 매핑된 제어 인터페이스(40)의 상기 기억소자들(45)을 거쳐 상기 제1 처리 유닛(10)의 상태 정보에 액세스하고 갱신할 것이다. 이것은, 예를 들면, 상기 레지스터 세트(30)내의 하나 이상의 레지스터들의 콘텐츠에 액세스하고 갱신하는 것과, 상기 제1 처리 유닛의 상기 메모리 어드레스 공간내의 하나 이상의 메모리 장소들에 액세스하고 갱신하는 것을 포함하여도 된다.
그 후, 단계 225에서, 상기 제2 처리 유닛은, 경로(90)상에서 상기 예외로부터의 복귀를 상기 제1 처리 유닛에 신호로 보내어, 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 코드의 실행을 재개하게 할 것이다.
도 4a 및 4b는, 상술한 해결방법을 채용할 때의 데이터에 주어진 상기 개선된 보호를 도시한 것이다. 특히, 도 4a는, 본 기술 없이 채용될, 즉 제1 처리 유닛이 그 자신의 예외들을, 예를 들면 상위 예외 레벨로 천이시키고 나서 그 필요로 한 예외 처리 루틴을 해당 상위 예외 레벨에서 실행함으로써, 처리하는, 상기 해결방법을 도시한 것이다. 초기에, 애플리케이션 코드가 애플리케이션 예외 레벨에서 (도 4a에서 CPU 0이라고 하는) 상기 제1 처리 유닛상에서 실행중이고, 그 후 포인트 250에서 예외 처리 루틴에 대해 트랩이 취해진다고 가정한다. 본 예에서, 포인트 250에 도달될 때, 상기 처리 유닛은 상위 예외 레벨, 예를 들면 운영체계 소프트웨어와 관련된 예외 레벨에 천이시키고 나서, 상기 예외 처리 루틴은 운영체계 제어하에 실행된다고 가정한다.
상기 트랩 포인트(250) 전에 실행되는 중이었던 상기 애플리케이션 코드와, 상기 예외 처리 루틴을 구현하는 데 사용된 상기 운영체계 코드와의 양쪽은, CPU 0내의 로컬 캐시(230)에 액세스한다. 상기 예외 처리 루틴의 수행 동안에, 상이한 유형들의 데이터는, 상기 운영체계 소프트웨어에 의해, 상기 캐시(230)로부터 판독되고, 상기 캐시(230)에 기록되어도 된다. 이것은, 상기 운영체계 전용이고, 상기 애플리케이션 코드와 공유되지 않는 데이터라고 생각될 수 있는 상기 운영체계의 소유 데이터(255, 265)를 포함하여도 되지만, 또한, 유저 데이터(260), 예를 들면 상기 애플리케이션 예외 레벨에 대한 갱신된 상태 정보도 포함하여도 되고, 이 데이터는, 상기 예외 처리 루틴이 완료되고, 상기 처리 파이프라인이 상기 애플리케이션 코드의 실행을 재개하기 위해서 상기 애플리케이션 예외 레벨에 복귀되어 있으면, 상기 애플리케이션 코드에 대해 이용 가능하게 되는 것인 유형의 데이터이다.
단계 270에서는, 상기 예외 처리 루틴이 완료하므로, 상기 프로세서가 상기 예로로부터 복귀하여, 역으로 상기 애플리케이션 예외 레벨(예컨대, 예외 레벨(EL) 0)로의 천이를 야기하고 나서, CPU 0은 상기 애플리케이션 코드의 처리를 재개하고 상기 캐시(230)에 액세스한다고 가정한다. 여러 가지의 메카니즘들을 이용하여, 예를 들면, 상기 운영체계의 소유 데이터(255, 265)가, 예를 들면 해당 데이터를 상기 캐시로부터 플러시함으로써, 또는 그 데이터를 일부의 그 밖의 메카니즘들을 사용하여 보호함으로써, 상기 예외 처리 루틴으로부터의 복귀 후 애플리케이션 코드에 의해 액세스되는 것으로부터 보호하려고 할 수 있지만, 이러한 데이터의 보안성에 대한 관심과, 부채널 공격들이 해당 데이터에 액세스하는 데 사용되는 전망이, 최근에 증가하고 있다.
도 4b는, 여기서 설명된 기술들을 사용할 때, 이러한 데이터의 보안성을 어떻게 향상시킬 수 있는지를 도시한 것이다. 특히, 또, CPU 0이 애플리케이션 예외 레벨, 예를 들면 EL0에서 애플리케이션 코드를 실행중이고, 포인트 275에서 예외 발생 이벤트가 일어나, 예외 처리 루틴에 대해 트랩을 야기시킨다고 가정한다. 앞서 설명된 기술들에 따라, 이 포인트에서 CPU 0은 상기 정지 모드에 진입하고, 명령들의 실행을 중단시킨다. 상기 트리거 이벤트의 발행은, 도 4b에서 CPU 1이라고 하는 상기 제2 처리 유닛에 의해 인터럽트가 취해지게 한다. 그 후, 포인트 280에서, CPU 1은, 상기 필요로 한 예외 처리 루틴을 실행하도록 시작하고, 다시 이것은 운영체계 예외 레벨, 예컨대 EL1에서 코드의 실행을 포함하여도 된다. 그렇지만, 상기 필요로 한 예외 루틴이 CPU 1에 의해 실행중임에 따라, 상기 운영체계의 전용 데이터("소유 데이터")(282, 286)는, CPU 1의 로컬 캐시(240)로부터 판독되고, 이 로컬 캐시에 기록될 수 있다. 반대로, 상기 애플리케이션 코드와 공유되게 되는 유저 데이터(284)는, CPU 0의 제어 인터페이스(235)를 통해, 앞서 설명된 상기 메카니즘, 즉 상기 메모리 매핑된 제어 인터페이스(235)내의 상기 기억소자들을 거쳐 제공된 CPU 0의 상기 메모리 어드레스 공간에의 직접 매핑된 액세스를 사용하여, CPU 0의 로컬 캐시(230)에 기록된다.
적절한 때에, 상기 예외 처리 루틴이 완료되고, 이에 따라 프로세스가 단계 290에서 상기 예외로부터 복귀할 때, 이는, CPU 0이 상기 애플리케이션 코드의 실행을 재개하게 할 것이다. 그렇지만, CPU 0과 CPU 1 사이의 물리적 분리로 인해, 보안성이 상당히 개선되는 데, 그 이유는 상기 운영체계 민감 데이터 중 아무것도 CPU 0의 상기 캐시(230)에 기록되어 있지 않기 때문이다.
게다가, 보안성이 일반적으로 개선되는 데, 그 이유는, 도 4b의 상기 메카니즘을 이용할 때, CPU 0은 결코 상기 애플리케이션 예외 레벨(예컨대, 예외 레벨 0)로부터 천이하지 않음에 따라, (CPU 0 자체가 상기 예외를 처리하기 위해서 상위 예외 레벨로 천이하였었던 경우이었을 상황에 반해서) 상위 예외 레벨과 관련된 액세스 특권들을 갖지 않기 때문이다.
일부의 수행 이점도, 도 4b를 참조하여 설명한 기술들을 채용할 때 실현되어도 된다. 예컨대, 상기 예외의 처리동안에, 예외 레벨 0에 관련되지 않는 CPU 0의 캐시(230)에 데이터가 저장되지 않으므로, 상기 예외 처리 루틴이 완료되어 있을 때 예외 레벨 1 데이터의 보안성을 유지관리하는 단계들이 필요하지 않다. 예컨대, 포인트 290에서 상기 예외 처리 루틴이 완료할 때 CPU 0의 상기 캐시(230)로부터 임의의 데이터를 플러시할 필요가 없다.
여기서 설명된 기술들은, 상기 제2 처리 유닛이, 상기 제1 처리 유닛의 동작에 있어서 제어 역할을 더 많이 가져가게 하도록 확장될 수 있다는 것을 주목해야 한다. 예컨대, 상기 제2 처리 유닛(20)은, (예컨대, 애플리케이션 코어라고 생각될 수 있는) 상기 제1 처리 유닛을 정지시켜 언제라도, 예를 들면, 다수의 유저 프로세스간에 상기 애플리케이션 코어를 공동사용하게 콘택스트를 전환할 수 있는, 제어 코어의 형태를 취한다고 생각되어도 된다. 따라서, 예외 발생 이벤트의 하나 이상의 유형에 대한 예외들을 처리함으로써, 시스템 서비스를 상기 애플리케이션 코어에 제공하는 상기 제어 코어에 더하여, 이와 같은 해결방법은, 상기 애플리케이션 코어가 컴퓨트 서비스를 상기 제어 코어에 효율적으로 제공하는 것도 가능하게 한다. 단일의 제어 코어는, 이러한 시나리오에서 다수의 애플리케이션 코어들을 관리할 수 있다.
상술한 기술들을 이용할 수 있는 상기 처리 유닛들은, 다양한 형태를 취할 수 있다. 예컨대, 도 5a에 도시된 것처럼, 각 처리 유닛은, 별도의 프로세서 코어들이어도 된다. 따라서, 도 5a에서 상기 제어 코어(320)라고 한, 제2 처리 유닛의 상기 메모리 어드레스 공간에 메모리 매핑되는 관련된 제어 인터페이스(305, 315)를 각기 갖는 다수의 제1 처리 유닛(300, 310)이 제공되어도 된다.
예외 발생 이벤트가 상기 코어들(300, 310) 중 어느 하나에서 일어나고 해당 코어가 상기 정지 모드에 진입하게 하고 트리거 이벤트를 발행하게 하는 유형을 가질 때, 상기 트리거 이벤트는, 상기 제어 코어(320)에 라우팅될 수 있다. 상기 예외 수에 근거하여, 상기 제어 코어는, 어느 코어가 상기 트리거 이벤트를 발행하였는지를 판정하고 나서, 일어나 있던 예외의 상기 유형을 고려하는 적절한 예외 처리 루틴을 실행하여, 상기 예외를 처리할 수 있다. 앞서 설명된 기술들을 사용하여, 상기 제어 코어는 관련된 제어 인터페이스(305, 315)를 거쳐, 상기 트리거 이벤트를 발행한 상기 코어(300, 310)의 상기 필요로 한 상태에 액세스하고 이 상태를 갱신할 수 있다.
그렇지만, 상기 처리 유닛들이 도 5a에 도시된 것처럼 별도의 프로세서 코어들인 것이 필요하지 않다. 대신에, 상기 별도의 처리 유닛들은, 도 5b에 도시된 것등의 멀티스레드 코어내에 별도의 스레드들이어도 된다. 따라서, 상기 멀티스레드 코어(330)는, 각기 관련 제어 인터페이스(340, 350)를 가질 수도 있는 다수의 스레드들(335, 345)을 포함하여도 된다. 상이한 스레드들이 멀티스레드 코어(330)의 일부의 처리 자원들을 공유하여도 되지만, 그 스레드들은, 효과적으로 별도의 처리 소자들을 형성하고, 그 자신의 레지스터들, 어드레스 공간을 갖고, 그 자신의 특별한 예외 레벨들 등에서 동작하여도 된다. 따라서, 개개의 스레드들은, 앞서 설명된 제1 처리 유닛과 같은 방식으로 동작할 수 있고, 트리거 이벤트들을 상기 제2 처리 유닛에 발생하여 상기 제2 처리 유닛이 그들을 대신하여 예외를 처리하게 할 수도 있다. 따라서, 상기 제어 코어(360)는, 도 5a의 예를 참조하여 앞서 설명된 것과 같은 정확히 방식으로 예외들을 처리할 수 있고, 이때의 예외 수 정보는, 상기 트리거 이벤트를 발행하고 있는 상기 멀티스레드 코어내의 특별한 스레드를 식별하는 데 사용된다.
도 5b에는 상기 제어 코어(360)가 별도의 프로세서 코어로서 도시되어 있지만, 그 밖의 구현에 있어서 상기 제어 코어(360) 자체가 상기 멀티스레드 코어(330)내의 스레드들 중 하나이어도 된다는 것을 주목해야 한다.
도 6은 예외들의 네스트 처리를 지원하는 데 여기서 상술한 기술을 어떻게 사용할 수 있는지를 도시한 것이다. 따라서, 본 예에서, 상기 제1 처리 유닛은, 본 예의 제어 코어 1(380)에서, 상기 제2 처리 유닛의 상기 메모리 어드레스 공간에 매핑되는 관련된 제어 인터페이스(375)를 갖는 상기 애플리케이션 코어(370)의 형태를 취한다. 그렇지만, 상기 제어 코어 1(380)에 의해 수행된 처리시에, 상기 제어 코어 1 내에서, 예외가 취해지고, 적절한 예외 처리 루틴이 수행되기를 요구하는, 예외 발생 이벤트들이 검출될 것도 가능하다. 이러한 사례들에서 상기 예외 처리 루틴이 상기 제어 코어 1(380) 자체내에서, 예를 들면 상위 예외 레벨로 천이시키고 적절한 예외 처리 루틴을 실행함으로써, 구현될 수 있지만, 다른 실시예에서는, 상기 제어 코어 1(380)은, 제어 코어 2(390)의 상기 메모리 어드레스 공간에 메모리 매핑되는 제어 인터페이스(385)도 가질 수도 있다. 이러한 해결방법에 의해, 상기 제어 코어 1은, 특정한 예외 발생 이벤트들에 대해서, 상기 정지 모드에 진입하고, 트리거 이벤트를 발행하여 제어 코어 2(390)가 적절한 예외 처리 루틴을 실행하게 할 수 있고, 이 프로세스 동안에 제어 코어 2(390)는, 상기 제어 인터페이스(385)를 거쳐 상기 제어 코어 1(380)내의 상기 필요로 한 상태에 액세스하고 이 상태를 갱신하여도 된다.
도 6에 도시된 기법이, 원하는 경우, 임의로 보다 많은 네스트 레벨들을 제공하도록 확장될 수 있다는 것을 알 것이다. 이러한 메카니즘은, 상당한 융통성을 제공한다. 예를 들면, 일 사례에서, 각기 개개의 코어는 단일의 예외 레벨에서만 동작하도록 배치되어도 된다는 것을 알 것이고, 이때 예외 발생 이벤트들 전부가 처리를 위해 별도의 코어에 라우팅된다. 일부의 사례들에서, 이것은, 상기 예외 레벨들의 개념이 함께 없앨 수 있다는 것을 의미할 수도 있다.
앞서 설명한 도 5b와 같이, 도 6에서는 상기 소자들(370, 380, 390)이 별도의 프로세서 코어들이라고 가정하지만, 다른 구현에 있어서 그 소자들은 멀티스레드 코어내의 별도의 스레드들에 의해 제공될 수 있다.
도 7은 인터럽트 분배기(420)가 상기 시스템내에 제공되는 경우의 구현을 도시한 것이다. 본 예에서는, 다수의 제어 코어들(410, 415)이 존재하고, 각 제어 코어는 하나 이상의 애플리케이션 코어들(400, 440)에의 메모리 매핑된 액세스가 제공될 수 있다. 상기 애플리케이션 코어들은, 상술한 것처럼, 상기 애플리케이션 코어 대신에 인터럽트 서비스 루틴을 실행하는 제어 코어에 의해 그 애플리케이션 코어들내의 특정한 상태 정보에의 직접 매핑된 액세스를 위해 제공하도록 배치된 관련 제어 인터페이스들(405, 445)을 갖는다.
이러한 구현에 있어서, 애플리케이션 코어(400)가 트리거 이벤트를 발행할 때, 이것은, 인터럽트 분배기(420)에 건네진 인터럽트 요구의 형태를 취할 수 있다. 따라서, 상기 애플리케이션 코어(400)가 트리거 이벤트를 어서트할 때, 경로(425)상에서 인터럽트 요구를 상기 인터럽트 분배기(420)에 발행할 수 있다. 그 후, 상기 인터럽트 분배기는, 상기 인터럽트 요구를 어느 제어 코어에 라우팅할지를 판정하기 위해 메카니즘을 이용할 것이고, 그 인터럽트 요구를, 경로 430상에서 상기 제어 코어 1(410)에, 또는 경로 435상에서 상기 제어 코어 2(415)에 보낼 것이다. 도 7에서 간략을 기하기 위해서 단지 2개의 제어 코어만이 도시되어 있지만, 그 밖의 구현에 있어서는 보다 많은 제어 코어들이 제공되어도 되고, 이에 따라 상기 인터럽트 요구가 전파되는 목적지 제어 코어와 관련하여 상기 인터럽트 분배기(420)를 위한 옵션들이 보다 많이 존재할 수도 있다는 것을 알 것이다.
상기 인터럽트 요구가 향하는 상기 제어 코어에 의해 상기 인터럽트 요구를 접수한다고 가정하면, 상기 처리는 필수적으로 앞서 설명된 것처럼 진행되고, 이때의 해당 제어 코어는 적절한 예외 처리 루틴을 수행하고, 이 프로세스 동안에 로드 및/또는 스토어 연산들은, 상기 애플리케이션 코어(400)내의 상태 정보에 액세스하고 이 상태 정보를 갱신하기 위해서, 상기 메모리 매핑된 제어 인터페이스(405)내의 상기 기억소자들에 대해 수행될 수 있다. 상기 예외 처리 루틴이 완료되어 있으면, 상기 애플리케이션 코어(400)에는, 상기 예외로부터의 복귀가 통지되고 나서, 상기 애플리케이션 코드의 실행을 재개하기 위해서 상기 정지 모드로 존재한다.
도 7에서 애플리케이션 코어들과 제어 코어들에 대해 도 7을 참조하였지만, 앞서 설명된 도 6으로부터, 상기 인터럽트 요구를 발행하는 상기 코어가 애플리케이션 코어일 필요는 없고, 자체가 애플리케이션 코드보다 상위의 예외 레벨에서 소프트웨어를 실행중일 수 있다는 것을 알 것이다.
앞선 설명으로부터, 도 7에 도시된 여러 가지의 코어들이 물리적 별도의 프로세서 코어들일 필요는 없지만, 대신에 멀티스레드 코어상에서 실행하는 별도의 스레드들일 수 있다는 것도 알 것이다.
일 구현에 있어서, 상기 애플리케이션 코어와 상기 제어 코어에 의해 액세스된 상기 캐시 구조들은 분리되어도 되지만, 일부의 사례들에서, 상기 캐시의 레벨들 중 하나 이상은 도 8의 예로 도시된 것처럼, 공유되어도 된다. 본 예에서, 상기 애플리케이션 코어(470)는 로컬 레벨 1 캐시(475)를 갖고, 상기 제어 코어(480)는 관련 레벨 1 캐시(485)도 갖는다. 그렇지만, 원하는 경우, 상기 애플리케이션 코어(470)와 상기 제어 코어(480)는, 레벨 2 캐시(490)를 공유하여도 된다. 일부의 구현에 있어서, 캐시 타이밍 부채널 공격들, 이를테면 앞서 언급된 Spectre기반 공격들에 대해 개선된 강성을 제공하기 위해서, 레벨 2 캐시 구조를 공유하는 것이 부적절하다고 생각될 수도 있고, 이러한 사례들에서 상기 애플리케이션 코어와 상기 제어 코어가 별개의 레벨 1 캐시 구조들 뿐만 아니라 별개의 레벨 2 캐시 구조들도 가질 수도 있지만, 그 밖의 구현에 있어서 도 8에 도시된 상기 해결방법은, 전체적으로 허용 가능할 수도 있다. 특히, 이러한 해결방법으로, 상술한 정지 모드를 사용한 별도의 코어들, 예를 들면 단일의 예외 레벨에서만 동작할 수 있는 일부의 사례들에서, 예외 레벨들의 물리적 분리와, 가능한 예외 레벨들의 서브세트만을 특정한 코어들이 지원하도록 배치할 가능성에 의해, 예외들이 처리되게 하는 많은 이점들을 얻는 것도 가능할 것이다. 적어도 일부의 캐시 구조들의 공유를 허용함으로써, 이것은, 멀티스레드 코어내의 개개의 스레드들과 관련지어 보다 쉽게 적용시키는 등의 현재 설명된 기술의 응용성의 영역을 증가시킨다.
여기서 설명된 기술들을 채용함으로써, 다수의 이점들이 실현될 수 있고, 예외 레벨들의 물리적 분리를 통해 전반적인 보안성을 향상시킨다. 먼저, 상기 애플리케이션 코어상에서 실행하는 애플리케이션 소프트웨어가 변경할 필요가 없다는 것을 주목한다. 또한, 상기 제어 코어는 상위 예외 레벨에서 실행중일 필요는 없고, 앞서 설명된 방식으로 상기 애플리케이션 코어에의 메모리 매핑된 액세스가 주어진다면, 심지어 예외 레벨 0에서도 실행될 수 있다. 또한 상술한 것처럼, 제어 코어의 예외들 자체는 또 하나의 코어에 의해 트랩되어 처리될 수 있어, 예외 처리의 임의의 네스팅을 허용한다.
또한, 애플리케이션 코어가 제어 코어에 위임되는 애플리케이션 코어의 예외들에 의존한다고 가정하면, 해당 애플리케이션 코어는, 단지 예외 레벨들의 서브세트, 예컨대 EL0만을 구현할지도 몰라서(따라서 순수 데이터 평면 코어를 구현함), 설계에 있어서 상당히 단순화될 수 있다.
일 특별한 구현에 있어서, 애플리케이션 코어와 제어 코어 전부는, 단일의 예외 레벨을 단지 구현하면 되도록 배치될 수 있어, 잠재적으로 예외 레벨들 전부를 없애도록 허용할 수 있다.
상술한 것처럼, 일 구현 예에서, 상기 제1 처리 유닛(10)내에 제공된 상기 메모리 매핑된 제어 인터페이스(40)는, 기존의 디버그 인터페이스의 능력들을 개선시켜서 형성될 수 있어, 제어 코어에 의한 빠른 메모리 매핑된 액세스를 고려하고, 관련 레지스터 상태 및/또는 메모리 어드레스 공간에의 직접 매핑된 액세스를 제공하는 것일 수 있다. 또한, 상기 향상된 메모리 매핑된 인터페이스가 효율성을 향상시킨 기존의 디버그 사용 케이스들도 지원하여, 외부 디버거가 상기 코어의 레지스터들과 그의 메모리의 뷰에 보다 빨리 액세스하게 하므로, 예외 처리와 관련된 것들을 넘는 부가의 이점들을 제공할 수 있다는 것을 주목해야 한다.
상술한 것처럼, 일 구현에서 물리적 별도의 프로세서 코어들이 사용될 수 있지만, 다른 구현에 있어서, 상기 개개의 처리 유닛들은, 멀티스레드 코어내의 개개의 스레드들의 형태를 취할 수 있다. 따라서, 제1 스레드내에서 일어나는 예외 발생 이벤트들은, 해당 스레드가 상기 정지 모드에 진입하는 것과, 상기 예외가 처리를 위해 또 하나의 스레드에 떠넘기지는 것을 일으킬 수 있고, 이때의 다른 스레드는 상기 제1 스레드의 상태에의 메모리 매핑된 액세스를 갖는다. 상술한 네스트 해결방법은, 이러한 일 구현 예에서 채용될 수 있었고, 이때의 각 스레드는 특별한 예외 레벨에 대응하여서, 특별한 예외 레벨에서 처리될 필요가 있는 예외들이 해당 예외 레벨에서 동작할 수 있는 특별한 스레드에 향하게 되는 것을 가능하게 한다.
상술한 것처럼, 일부의 구현에 있어서, 상기 메모리 매핑된 제어 인터페이스(40)내의 상기 기억소자들은, 상기 제1 처리 유닛이 상기 정지 모드에 진입하고, 트리거 이벤트를 발행하여 상기 예외 처리 루틴이 상이한 처리 유닛에 의해 수행되게 할, 예외 발생 이벤트들의 유형에 관한 좀 많은 설정 가능성을 허용하도록 구성도리 수 있다. 일부의 사례들에서, 상기 제1 처리 유닛은, 항상, 상기 예외 발생 이벤트에 상관없는 방식으로 예외들에 응답하도록 배치되어도 된다. 해당 사례에서, 상술한 도 3을 참조하여, 단계 205는 효과적으로 제거되어서, 상기 제1 처리 유닛이 상기 예외를 처리하는 단계 210으로 진행하는 경로가 결코 존재하지 않을 것이다. 대신에, 프로세스는 단계 215에 직접 진행되어, 상기 처리 유닛은, 자신의 현재 예외 레벨에 머무르고, 상기 정지 모드에 진입하고, 상기 트리거 이벤트를 어서트할 것이다. 이에 따라, 제1 처리 유닛의 복잡성에 있어서 상당히 단순화될 수 있다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 동작을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 동작을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 동작을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (23)

  1. 프로그램 코드를 실행하는 제1 처리 유닛; 및
    제2 처리 유닛을 포함하고;
    상기 제1 처리 유닛은, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 갖고;
    상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 진입하는 것이고;
    상기 제2 처리 유닛은, 상기 트리거 이벤트에 응답하여, 예외 처리 루틴을 실행하는 것으로, 이때에 상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치되고;
    상기 제2 처리 유닛은 상기 예외 처리 루틴의 완료시 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치되는, 시스템.
  2. 제 1 항에 있어서,
    상기 제1 처리 유닛의 상기 상태 정보는, 상기 프로그램 코드를 실행할 때 상기 제1 처리 유닛에 의해 처리된 데이터를 저장하는 데 사용된 상기 제1 처리 유닛의 일 세트의 레지스터들의 콘텐츠를 포함하는, 시스템.
  3. 제 2 항에 있어서,
    상기 제어 인터페이스는, 상기 제2 처리 유닛에 의해 상기 세트의 레지스터들에 직접 매핑된 액세스를 제공하기 위해 상기 제2 처리 유닛의 상기 메모리 어드레스 공간에 대해 매핑된 일 세트의 기억소자들을 제공하는, 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛의 상기 상태 정보는, 상기 제1 처리 유닛의 상기 메모리 어드레스 공간의 적어도 일부에 저장된 데이터를 포함하는, 시스템.
  5. 제 4 항에 있어서,
    상기 제1 처리 유닛의 메모리 어드레스 공간의 상기 적어도 일부는, 상기 제2 처리 유닛의 이차 어드레스 공간을 형성하는, 시스템.
  6. 제 4 항에 있어서,
    상기 제어 인터페이스는 상기 제2 처리 유닛의 상기 메모리 어드레스 공간에 매핑된 기억소자들의 블록을 제공하고, 상기 블록내의 각 기억소자는 상기 제1 처리 유닛의 메모리 어드레스 공간의 상기 적어도 일부내의 대응한 메모리 장소에 직접 매핑되는, 시스템.
  7. 제 6 항에 있어서,
    상기 제어 인터페이스는, 상기 기억소자들의 블록내의 기억소자들과, 상기 제1 처리 유닛의 메모리 어드레스 공간의 상기 적어도 일부내의 상기 대응한 메모리 장소들과 사이의 직접 매핑을 식별하기 위해 설정 가능한 매핑 스토리지를 포함하는, 시스템.
  8. 제 1 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 제어 인터페이스는, 상기 제1 처리 유닛에 의한 상기 프로그램 코드의 실행시에 접하였을 때의 예외 발생 이벤트들이 상기 제1 처리 유닛이 상기 정지 모드에 진입하게 하고 트리거 이벤트를 발행하게 하는 것인지를 식별하는 설정 가능한 예외 이벤트 식별 스토리지를 포함하는, 시스템.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 예외 이벤트 식별 스토리지는, 상기 제1 처리 유닛에게 제1 처리 유닛에 의해 처리되는 예외 발생 이벤트인 지정된 예외 레벨로 천이하는 것을 요구할 예외 발생 이벤트가 일어날 때마다, 상기 제1 처리 유닛이 정지 모드에 진입하고 트리거 이벤트를 발행하는 것을 식별하도록 구성되는, 시스템.
  10. 제 1 항 내지 제 9 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛은 상기 정지 모드에 진입할 때 자신의 현재 예외 레벨로 유지하도록 배치되고, 상기 제2 처리 유닛은 선택된 예외 레벨에서 상기 예외 처리 루틴을 실행하도록 배치되는, 시스템.
  11. 제 10 항에 있어서,
    상기 선택된 예외 레벨은 상기 제1 처리 유닛의 현재의 예외 레벨보다 상위의 예외 레벨인, 시스템.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 제어 인터페이스는, 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고, 또한 상기 제1 처리 유닛이 정지 모드에 왜 진입하였는지를 식별할 때 지원하는 데 상기 제2 처리 유닛에서 사용한 정보를 상기 제1 처리 유닛에 의해 제공하도록 기록된, 신드롬 스토리지를 포함하는, 시스템.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 제3 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 제2 처리 유닛에 제공하도록 구성된 추가의 제어 인터페이스를 갖는 상기 제3 처리 유닛을 더 포함하고;
    상기 제3 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제3 처리 유닛이 실행을 정지시키고 상기 트리거 이벤트를 발행하는 상기 정지 모드에 진입하는 것이고;
    상기 트리거 이벤트는, 상기 제1 처리 유닛이나 상기 제3 처리 유닛에서 상기 트리거 이벤트를 발행하였는지를 판정하게 하여, 상기 제1 처리 유닛과 제3 처리 유닛 중 어느 것이 상기 예외 처리 루틴을 실행할 때 액세스할지를 판정하는 것을, 상기 제2 처리 유닛이 가능하게 하는 정보를 포함하는, 시스템.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    부가의 처리 유닛을 더 포함하고;
    상기 제2 처리 유닛은, 상기 부가의 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제2 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 부가의 처리 유닛에 제공하도록 구성된, 제2 제어 인터페이스를 갖고;
    상기 제2 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제2 처리 유닛이 그 제2 처리 유닛상에서 행해지는 프로그램 코드의 실행을 정지시키고, 추가의 트리거 이벤트를 발행하는, 상기 정지 모드에 진입하는 것이고,
    상기 부가의 처리 유닛은, 상기 추가의 트리거 이벤트에 응답하여, 추가의 예외 처리 루틴을 실행하는 것으로, 이때에 부가의 처리 유닛은 상기 추가의 예외 처리 루틴에 의해 필요에 따라 해당 상태 정보를 수정하기 위해서 상기 제2 제어 인터페이스를 거쳐 상기 제2 처리 유닛의 상기 상태 정보에 액세스하도록 배치되고;
    상기 부가의 처리 유닛은, 상기 추가의 예외 처리 루틴의 완료시에 상기 제2 처리 유닛이, 상기 정지 모드를 퇴장하게 하고 상기 제2 처리 유닛상에 행해지는 상기 프로그램 코드의 실행을 재개하게 하도록 배치되는, 시스템.
  15. 제 1 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛은 애플리케이션 처리 유닛이고, 상기 프로그램 코드는 애플리케이션 프로그램 코드이며, 상기 제2 처리 유닛은 제어 처리 유닛인, 시스템.
  16. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛과 상기 제2 처리 유닛은, 별도의 프로세서 코어들에 의해 제공되는, 시스템.
  17. 제 1 항 내지 제 16 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛과 상기 제2 처리 유닛은 상기 시스템내에서 적어도 상기 캐시 레벨들의 서브세트를 위한 별도의 캐시 구조들을 갖는, 시스템.
  18. 제 1 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛과 상기 제2 처리 유닛은 멀티스레드 프로세서 코어상에서 별도의 스레드들에 의해 제공되는, 시스템.
  19. 제 1 항 내지 제 18 항 중 어느 한 항에 있어서,
    상기 제1 처리 유닛과 상기 제2 처리 유닛의 적어도 하나는, 단지 단일의 예외 레벨에서 동작하도록 제약되는, 장치.
  20. 제 1 항 내지 제 19 항 중 어느 한 항에 있어서,
    상기 제2 처리 유닛은,
    상기 트리거 이벤트를 발행하는 피타겟(targeted) 처리 유닛;
    상기 트리거 이벤트에 응답 가능한 일부의 처리 유닛들 중에서 일 처리 유닛 중,
    하나인, 장치.
  21. 제1 처리 유닛으로서:
    프로그램 코드를 실행하는 실행 회로소자; 및
    제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 포함하고;
    상기 제1 처리 유닛은, 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 실행 회로소자가 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 진입하는 것이고;
    상기 제어 인터페이스는 상기 제2 처리 유닛이 상기 트리거 이벤트에 응답하여 예외 처리 루틴을 실행중인 동안에 상기 제2 처리 유닛에 액세스 가능하게 배치되는 것에 의해, 상기 제2 처리 유닛이 상기 예외 처리 루틴에서 필요로 한 대로 상기 제1 처리 유닛의 상기 상태 정보에 액세스하고 수정할 수 있고;
    상기 제1 처리 유닛은, 상기 제2 처리 유닛이 상기 예외 처리 루틴을 완료하였을 때, 상기 정지 모드를 퇴장하고 상기 프로그램 모드의 실행을 재개하도록 배치되는, 제1 처리 유닛.
  22. 제2 처리 유닛으로서:
    제1 처리 유닛에서 발행한 트리거 이벤트에 응답하여 예외 처리 루틴을 실행하는 실행 회로소자-상기 트리거 이벤트는 상기 제1 처리 유닛이 상기 제1 처리 유닛에 의한 프로그램 코드의 실행이 정지되어 있는 정지 모드에 진입하여 있는 것을 나타냄-; 및
    통신 인터페이스를 통해, 상기 제2 처리 회로소자가, 상기 예외 처리 루틴을 실행하는 동안에 상기 제1 처리 유닛의 제어 인터페이스에 액세스하도록 배치되는 상기 통신 인터페이스-상기 제어 인터페이스는 상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 어드레스를 상기 제2 처리 유닛에 제공하도록 구성됨-를 포함하고;
    상기 제2 처리 유닛은, 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하도록 배치되고;
    상기 제2 처리 유닛은 상기 예외 처리 루틴의 완료시 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하도록 배치되는, 제2 처리 유닛.
  23. 프로그램 코드를 실행하는 제1 처리 유닛과, 제2 처리 유닛을 갖는 시스템에서의 예외 발생 이벤트들을 처리하는 방법으로서:
    상기 제2 처리 유닛의 메모리 어드레스 공간에 매핑되고 상기 제1 처리 유닛의 상태 정보에의 직접 매핑된 액세스를 상기 제2 처리 유닛에 제공하도록 구성된 제어 인터페이스를 상기 제1 처리 유닛에 제공하는 단계;
    상기 제1 처리 유닛내의 적어도 하나의 예외 발생 이벤트에 응답하여, 상기 제1 처리 유닛이 상기 프로그램 코드의 실행을 정지시키고 트리거 이벤트를 발행하는 정지 모드에 상기 제1 처리 유닛이 진입하게 하는 단계;
    상기 트리거 이벤트에 응답하여, 상기 제2 처리 유닛이, 예외 처리 루틴 실행시에 상기 예외 처리 루틴에서 필요로 한 대로 상기 상태 정보를 수정하기 위해서 상기 제어 인터페이스를 거쳐 상기 제1 처리 유닛의 상기 상태 정보에 액세스하는 상기 예외 처리 루틴을 상기 제2 처리 유닛이 실행하게 하는 단계; 및
    상기 제2 처리 유닛에 의한 상기 예외 처리 루틴의 완료시, 상기 제1 처리 유닛이 상기 정지 모드를 퇴장하게 하고 상기 프로그램 모드의 실행을 재개하게 하는 단계를 포함하는, 방법.
KR1020217004641A 2018-12-06 2019-10-16 예외 발생 이벤트 처리 시스템 및 방법 KR20210096062A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1819930.7A GB2579617B (en) 2018-12-06 2018-12-06 An apparatus and method for handling exception causing events
GB1819930.7 2018-12-06
PCT/GB2019/052943 WO2020115455A1 (en) 2018-12-06 2019-10-16 A system and method for handling exception causing events

Publications (1)

Publication Number Publication Date
KR20210096062A true KR20210096062A (ko) 2021-08-04

Family

ID=65029902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217004641A KR20210096062A (ko) 2018-12-06 2019-10-16 예외 발생 이벤트 처리 시스템 및 방법

Country Status (6)

Country Link
US (1) US11630673B2 (ko)
JP (1) JP2022509722A (ko)
KR (1) KR20210096062A (ko)
CN (1) CN112585584A (ko)
GB (1) GB2579617B (ko)
WO (1) WO2020115455A1 (ko)

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US6341324B1 (en) * 1995-10-06 2002-01-22 Lsi Logic Corporation Exception processing in superscalar microprocessor
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
WO2000070482A1 (en) * 1999-05-14 2000-11-23 Clearwater Networks, Inc. Interrupt and exception handling for multi-streaming digital processors
US6480948B1 (en) * 1999-06-24 2002-11-12 Cirrus Logic, Inc. Configurable system memory map
US6591378B1 (en) * 2000-02-22 2003-07-08 Motorola, Inc. Debug controller in a data processor and method therefor
US7546441B1 (en) * 2004-08-06 2009-06-09 Xilinx, Inc. Coprocessor interface controller
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US20070168646A1 (en) * 2006-01-17 2007-07-19 Jean-Francois Collard Data exchange between cooperating processors
US7730263B2 (en) * 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
JP2010015364A (ja) * 2008-07-03 2010-01-21 Renesas Technology Corp マルチプロセッサシステム及び情報処理装置
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US8813083B2 (en) * 2011-07-01 2014-08-19 Intel Corporation Method and system for safe enqueuing of events
JP5852677B2 (ja) * 2011-12-26 2016-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation レジスタ・マッピング方法
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
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10394730B2 (en) * 2014-11-14 2019-08-27 Cavium, Llc Distributed interrupt scheme in a multi-processor system
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
US10527673B2 (en) * 2016-08-01 2020-01-07 Microsoft Technology Licensing, Llc Hardware debug host
US9971702B1 (en) * 2016-10-24 2018-05-15 Intel Corporation Nested exception handling
US10394641B2 (en) * 2017-04-10 2019-08-27 Arm Limited Apparatus and method for handling memory access operations

Also Published As

Publication number Publication date
CN112585584A (zh) 2021-03-30
GB2579617A (en) 2020-07-01
US20210240480A1 (en) 2021-08-05
US11630673B2 (en) 2023-04-18
GB201819930D0 (en) 2019-01-23
JP2022509722A (ja) 2022-01-24
WO2020115455A1 (en) 2020-06-11
GB2579617B (en) 2021-01-27

Similar Documents

Publication Publication Date Title
CA2954604C (en) Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
CN107851036B (zh) 具有高级操作系统支持的处理器
US8726292B2 (en) System and method for communication in a multithread processor
JP6185487B2 (ja) ドメイン間で切り替わる際のセキュアなデータの非セキュアなアクセスから隔離された状態での維持
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US7290261B2 (en) Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US7631196B2 (en) Method and apparatus for loading a trustable operating system
US7802250B2 (en) Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US20130145128A1 (en) Processing core with programmable microcode unit
JP4925973B2 (ja) 装置、システム、方法およびプログラム
US7529916B2 (en) Data processing apparatus and method for controlling access to registers
JP5244160B2 (ja) 複数の命令シーケンサでのスレッド実行に基づく命令セットのためのメカニズム
JPH08278886A (ja) データ処理システムでの拡張システム管理操作のための方法およびシステム
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
TWI811456B (zh) 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體
US11301283B1 (en) Virtualization extension modules
US20120290806A1 (en) Selective routing of local memory accesses and device thereof
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
US9086906B2 (en) Apparatus and method for guest and root register sharing in a virtual machine
US10901936B2 (en) Staged power on/off sequence at the I/O phy level in an interchip interface
KR20210096062A (ko) 예외 발생 이벤트 처리 시스템 및 방법
US9501667B2 (en) Security domain prediction
JP2011070290A (ja) データプロセッサ
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
KR20200125633A (ko) 외부 예외 핸들링

Legal Events

Date Code Title Description
A201 Request for examination