KR20160045699A - 시간 집약적 명령의 처리 - Google Patents

시간 집약적 명령의 처리 Download PDF

Info

Publication number
KR20160045699A
KR20160045699A KR1020167004314A KR20167004314A KR20160045699A KR 20160045699 A KR20160045699 A KR 20160045699A KR 1020167004314 A KR1020167004314 A KR 1020167004314A KR 20167004314 A KR20167004314 A KR 20167004314A KR 20160045699 A KR20160045699 A KR 20160045699A
Authority
KR
South Korea
Prior art keywords
time intensive
exception
commands
instructions
time
Prior art date
Application number
KR1020167004314A
Other languages
English (en)
Other versions
KR102235142B1 (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 KR20160045699A publication Critical patent/KR20160045699A/ko
Application granted granted Critical
Publication of KR102235142B1 publication Critical patent/KR102235142B1/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

시간 집약적 명령들의 실행은 중요한 이벤트들이 늦게 응답을 받도록 하거나 전혀 응답을 방지 못하게 할 수 있다. 정보 처리장치는, 한 개 이상의 시간 집약적 명령들을 포함하는 명령들을 실행하는 처리회로(60)와, 처리회로에 대해 적어도 한 개의 예외를 발생하는 예외 발생회로(100)를 구비한다. 처리회로는 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지한다. 시간 집약적 명령에 마주쳤을 때, 제어값이 시간 집약적 명령들이 실행될 수 없다는 것을 나타낸 경우에는, 제 1 예외가 처리회로를 기동하여 시간 집약적 명령의 실행을 금지한다. 이와 달리, 제어값이 시간 집약적 명령들이 실행될 수 있다는 것을 나타낸 경우에는, 시간 집약적 명령이 실행된다.

Description

시간 집약적 명령의 처리{HANDLING TIME INTENSIVE INSTRUCTIONS}
본 발명은 데이터 처리장치의 분야에 관한 것이다. 특히, 본 발명은 데이터 처리장치에서 시간 집약적(time intensive) 명령들의 처리에 관한 것이다.
실시간 시스템에서는, 일정한 기간 내에 또는 특정한 시간에 특정한 이벤트에 응답하는 것이 필요한 경우가 많다. 이것을 달성하기 위해, 이와 같은 시스템은 전체적으로 시스템의 결정론적 거동에 의존하는 일이 많다. 예를 들면, 소정의 간격으로 또는 소정의 시간에 프로세서 또는 센서 등의 다른 하드웨어에 대한 액세스를 소프트웨어에게 제공하는 것이 필요할 수도 있다.
실시간 시스템의 한가지 예는, 차량의 충돌을 검출하고, 이와 같은 충돌의 검출시에, 에어백을 전개하도록 설계된 에어백 전개 시스템이다. 이와 같은 시스템에서는, 충돌 이벤트가 검출된 후 매우 짧은 기간 내에 에어백이 전개되는 것이 필수적이다.
그러나, 하드웨어가 바쁜 경우에는, 주어진 기간 내에 특정한 이벤트에 응답한다는 문제가 악화된다. 특히, 프로세서가 시간이 많이 걸리는 명령을 실행하고 있는 경우에는, 다른 작업을 수행할 수 있기 전에 지연이 존재한다. 에어백 전개 시스템을 고려하면, 예를 들어, 충돌 이벤트가 발생하기 직전에 프로세서가 시간이 많이 걸리는 명령의 실행을 개시하는 경우, 에어백을 전개할 수 있기 전에 프로세서가 시간이 많이 걸리는 명령의 실행을 완료하는 것이 필요할 수도 있다. 이것은, 충돌이 일어났지만, 시간이 많이 걸리는 명령이 완료할 때까지 장기간 동안 에어백 전개 시스템이 동작하지 않는 상황을 일으킬 수도 있다.
따라서, 실시간 시스템에서는, 곤란한 시기에 시간이 많이 걸리는 명령의 실행은, 시스템의 전체적인 성능에 상당한 악영향을 미칠 수 있으며, 심지어 시스템의 완전한 고장을 야기할 수 있다.
이와 같은 명령을 처리하는 한가지 방법은, 중요한 이벤트가 일어날 때 이 명령의 실행을 단순히 종료하는 것이다. 그러나, 이것은 명령에 이미 쏟은 프로세서 자원의 낭비이며, 시간이 많이 걸리는 명령의 실행이 개시되기 전의 이전의 상태로 프로세서의 상태를 회복시키기 위해 더 많은 프로세서 자원의 소비를 필요로 하는 일이 많을 수 있다. 더구나, 일부의 명령들은 원래가 인터럽트가 불가능하거나, 인터럽트되면 곤란한 부작용을 발생할 수 있다.
일면에 따르면, 한 개 이상의 시간 집약적 명령들을 포함하는 명령들을 실행하도록 구성된 처리회로와, 상기 처리회로에 대해 적어도 한 개의 예외를 발생하도록 구성된 예외 발생회로를 구비하고, 상기 처리회로는, 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하도록 구성되고, 상기 예외 발생회로는, 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타내는 제 1 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 처리회로를 기동함으로써 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하도록 구성되고, 상기 예외 발생회로는, 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타내는 제 2 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하도록 구성된, 정보 처리장치가 제공된다.
본 발명은, 특히 비교적 신속하게 응답해야 하는 중요한 이벤트 이전에 시간 집약적 명령들이 발생할 때 실시간 시스템에서, 이 시간 집약적 명령들의 실행이 치명적인 경우가 있을 수 있다는 것을 인식한다. 예를 들어, 시스템이 시간 집약적 명령들의 실행을 개시하려고 하고 중요한 이벤트 또는 예외가 그후 즉시 발생하려고 하면, 이 중요한 이벤트 또는 예외에 대해 응답할 수 있기 전에 시간 집약적 명령이 완료될 필요가 있을 것이다. 실시간 시스템에서는, 예외 또는 이벤트가 매우 짧은 기간 내에 응답을 받을 필요가 있기 때문에, 이것은 허용될 수 없을 수도 있다.
상기한 일면에 따르면, 처리회로에 의해, 시간 집약적 명령들이 실행될 수 있는지 여부, 즉 시간 집약적 명령들의 실행이 허용되는지 여부를 표시하기 위한 제어값이 제공된다. 시간 집약적 명령들이 실행될 수 없는 상태로 제어값이 설정되는 경우에는, 시간 집약적 명령을 실행하려는 시도는 제 1 예외가 예외 발생회로에 의해 발생되도록 하여, 이 시간 집약적 명령의 실행이 금지되게 한다. 이와 달리, 시간 집약적 명령들이 실행될 수 있는 제어값의 상태인 경우에는, 이들 명령들의 실행이 계속되고 제 1 예외가 발생하지 않는다. 따라서, 제어값의 상태를 제어함으로써, 시간 집약적 명령들이 필요에 따라 허용되거나 허용되지 않을 수 있다. 따라서, 중대한 이벤트가 발생하기로 되어 있거나 높은 발생 확률을 갖는 것이 알려진 경우에는, 이 이벤트를 앞두고 시간 집약적 명령들을 허용하지 않도록 제어값이 설정될 수 있다. 따라서, 이벤트 자체가 발생할 때, 시간이 걸리는 명령들이 발생하지 않아야 하며, 이벤트에 신속하게 응답할 수 있다.
수많은 다양한 예의 시간 집약적 명령들이 존재한다. 일부 실시예에서, 시간 집약적 명령은 처리회로의 복수의 처리 사이클들이 실행되도록 요구하는 명령인 것으로 생각될 수 있다. 이 예 대신에 또는 이 예에 덧붙여, 시간 집약적 명령들은 일단 개시하면 인터럽트할 수 없는 명령들을 포함하여도 된다.
이들 2가지 예 중에서 어느 한 개에 덧붙여, 또는 이것 대신에, 시간 집약적 명령은, 부동 소수점 제곱근 명령, 나눗셈 명령, 인터럽트 불가능한 로드 다중(load multiple) 명령, 인터럽트 불가능한 저장 다중(store multiple) 명령과, 적어도 한 개의 소정의 단일 명령 다중 데이터(SIMD) 명령 중에서 적어도 한 개를 포함해도 된다.
부동 소수점 제곱근 명령들과 정수 또는 부동 소수점 나눗셈 명령은, 단순히 다수의 처리 사이클들이 완료하도록 요구하는 이들 명령의 속성으로 인해 시간이 많이 걸릴 수 있다. 이들 명령을 인터럽트하는 것은 시간 집약적 연산이 다시 개시되도록 요구할 것이기 때문에, 이들 명령을 인터럽트하지 않는 것이 바람직할 수 있다. 더구나, 시간 집약적 제곱근 또는 나눗셈 명령 후에 또는 이들 명령과 병렬로 실행되는 프로그램 순서에서 나중의 명령은 이 명령이 완료되기 전에 제곱근 또는 나눗셈 명령의 입력 레지스터를 오버라이트하여, 인터럽트가 되는 경우에 이들 명령들이 다시 시작하는 것이 매우 곤란하거나 심지어 불가능할 수 있다. 로드 및 저장 명령들은, 이들 명령에서 참조되고 있는 메모리의 어드레스들이 디바이스(Device) 타입 메모리로서 취급되는 경우에는, 이들 명령이 인터럽트 불가능한 것으로 표시된다. 이와 같은 메모리는 하드웨어 장치에 매핑되고, 이들 메모리 위치에 대한 판독 또는 기록은 장치가 특별한 방식으로 동작하도록 할 수 있다. 이들 명령을 인터럽트하는 것은 하드웨어 장치의 부정확하고 비결정론적인(non-deterministic) 거동을 일으킬 수 있다. SIM 명령은, 단일의 처리 연산자가 동일한 입력 피연산자(들) 내부의 복수의 데이터 요소들에 대해 병렬로 실행되는 명령이다. 적어도 일부의 SIM 연산은 다수의 프로세서 사이클들을 포함할 수 있으며, 정수 또는 부동 소수점 나눗셈 명령과 마찬가지로, 인터럽트되는 경우에 이와 같은 명령들을 다시 시작하는 것이 불가능할 수도 있다.
"시간 집약적 명령"이라는 용어의 다른 적절한 예는 본 발명이 속한 기술분야의 당업자에게 있어서 자명하며, 전술한 예들 중에서 어느 한 개 대신에, 또는 이에 덧붙여 사용될 수도 있다.
처리회로는, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고, 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성된다. 즉, 제 1 소프트웨어는 제 2 소프트웨어보다 낮은 특권 레벨에서 실행된다. "높은"이라는 용어는, 특권의 레벨을 가리키고, 특권 레벨과 관련된 수치값을 가리키는 것은 아니다. 따라서, 더 큰 특권 레벨이 더 작은 특권 레벨보다 수치적으로 높거나 낮을 수 있다. 일반적으로, "더 높은" 특권을 갖는 소프트웨어는 "더 낮은" 특권에 있는 소프트웨어가 이용가능하지 않은 권한을 갖는다.
이들 실시예의 일부에서, 제 2 소프트웨어는 처리회로를 제어하여 상기 제어값을 변경하도록 구성된다.
예외 발생회로는 상기 제 1 소프트웨어의 상기 시간 집약적 명령들 중에서 한 개에 응답하여 제 1 예외를 발생하도록 구성되어도 된다. 즉, 제 1 소프트웨어가 시간 집약적 명령들 중에서 한 개의 실행을 시도할 때, 예외 발생회로가 제 1 예외를 발생한다. 따라서, 제 1 소프트웨어의 거동이 제어값에 의해 관리된다.
따라서, 더 높은 특권 레벨에서 실행되는 제 2 소프트웨어가 제어값을 설정하고, 더 낮은 특권 레벨에서 실행되는 제 1 소프트웨어가 이 제어값에 의해 영향을 받는다. 이와 같은 실시예들은, 가상화된 환경에서와 같이, 한 개의 세트의 소프트웨어가 다른 소프트웨어에 의해 관리되는 시스템에 적합하다.
예외 발생회로는 상기 제 2 특권 레벨보다 낮은 특권 레벨에서 실행되는 소프트웨어의 시간 집약적 명령들 중에서 한 개에만 응답하여 제 1 예외를 발생하도록 구성되어도 된다. 즉, 제 2 특권 레벨보다 낮은 특권 레벨에서 실행되는 소프트웨어에 대해서만 제 1 예외가 발생된다. 달리 표현하면, 예외 발생회로는 상기 제 2 특권 레벨에서 실행되는 소프트웨어의 시간 집약적 명령들 중에서 한 개에 응답하여 제 1 예외를 발생하지 않도록 구성된다. 이들 실시예의 일부에서, 예외 발생회로는 최상위 특권 레벨에서 실행되는 소프트웨어의 시간 집약적 명령들 중에서 한 개에 응답하여 상기 제 1 예외를 발생하지 않도록 구성된다. 따라서, 일부 소프트웨어는 항상 시간 집약적 명령들을 발생할 자격이 주어진다. 예를 들어, 하이퍼바이저 또는 관리 소프트웨어는 항상 시간 집약적 명령들을 실행할 자격이 주어진다.
제 1 소프트웨어는 한 개 이상의 게스트 운영체계를 포함하고, 제 2 소프트웨어는 하이퍼바이저를 포함한다. 하이퍼바이저가 각각의 게스트 운영체계의 거동을 제어하여 자원들이 공정하게 분배되도록 보장할 수 있기 때문에, 본 발명은 하이퍼바이저와 한 개 이상의 가상화된 게스트 운영체계를 포함하는 환경에 적합하다. 예를 들어, 하이퍼바이저가 제어값을 설정하게 함으로써, 제 2 게스트 운영체계에 대한 제 1 게스트 운영체계에 의해 내려진 시간 집약적 명령들의 영향을 제한하는 것이 가능하다.
처리회로 상에서 특정한 순간에 어떤 소프트웨어가 실행되고 있는지를 변경하는 콘텍스트 스위치(context switch) 등의 한 개 이상의 소정의 이벤트들에 응답하여 제어값이 변경되어도 된다. 예를 들면, 콘텍스트가 한 개의 게스트 운영체계의 처리를 정지시키고 다른 게스트 운영체계 또는 하이퍼바이저의 처리를 재개해도 된다. 이와 같은 실시예들에서는, 처리회로가 콘텍스트 스위치에 응답하여 제어값을 제 2 상태로 변경한다. 즉, 콘텍스트 스위치에 응답하여, 시간 집약적 명령들이 실행될 수 있도록 처리회로가 제어값을 변경한다. 어떤 경우에는, 콘텍스트 스위치가 발생한 직후에는 다른 운영체계가 실행을 개시할 가능성이 없으므로, 콘텍스트 스위치 직후에 시간 집약적 명령들을 허용하는 것이 이와 같은 명령들이 실행되도록 하기 위한 가장 적절한 시기이다. 따라서, 운영체계가 다음 콘텍스트 스위치가 발생하기 전에 시간 집약적 명령을 수행하는데 이용가능한 가장 많은 시간을 갖는다.
소정의 이벤트의 다른 예는, 예측된 이벤트 이전의 제 1 소정 기간에 동안 발생되는 제 2 예외이다. 예를 들어, 예측된 이벤트는 콘텍스트 스위치이고, 이전의 콘텍스트 스위치후 제 2의 소정 기간 동안 제 2 예외가 발생된다. 즉, 콘텍스트 스위치가 일어난 후 소정의 기간이 경과한 후, 제 2 예외가 발생되어, 시간 집약적 명령들이 실행될 수 없도록 제어값이 상태를 변경하게 한다. 하이퍼바이저를 이용하는 실시예에서는, 제 2 소프트웨어(예를 들면, 하이퍼바이저)가 제 2 예외에 응답하여 처리회로를 제어한다. 콘텍스트 스위치는 보통 주기적이다. 최종의 콘텍스트 스위치후 소정의 기간이 경과한 후, 그리고 다음의 콘텍스트 스위치가 예상되기 전에, 시간 집약적 명령들을 금지함으로써, 시간 집약적 명령의 실행이 추후의 콘텍스트 스위치를 지연시킬 가능성이 적으며, 따라서 하드웨어 장치 상에서 실행되는 다른 소프트웨어가 영향을 받게 되는 가능성이 적어진다.
일부의 경우에는, 제 1 소정의 시간이 제 2 소정의 기간보다 작다. 특히, 제 2 기간에 대한 제 1 소정의 기간의 비율이 1:9이어도 된다. 즉, 시간 집약적 명령들이 실행될 수 있는 기간이 시간 집약적 명령들이 실행될 수 없는 기간보다 길며, 시간 집약적 명령들이 실행될 수 없는 기간은 그후의 콘텍스트 스위치의 발생 직전이 된다. 이와 같은 특징의 이점은, 시간 집약적 명령들이 일반적으로 허용될 수 있어(기간의 90%), 데이터 처리장치가 정상으로 동작할 수 있게 한다는 것이다. 아주 짧은 기간 동안에만 시간 집약적 명령이 금지된다.
제 2 예외에 응답하여, 처리회로는, 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타내는 상기 제 1 상태로 제어값을 변경하도록 구성된다. 이에 따르면, 예측된 이벤트의 준비로, 시간 집약적 명령들이 허용되지 않으므로, 시스템이, 시간 집약적 명령들을 실행하는 것이 요구되기보다는, 예측된 이벤트에 신속하게 더 응답하도록 할 수 있도록 한다.
일부 실시예에서, 상기 처리회로는 제 1 예외에 응답하여 상기 제 2 소프트웨어의 실행으로 스위치하도록 구성된다. 제 2 소프트웨어가 제 1 예외가 실행되고 있는 것에 반응하는 다양한 방식이 존재하며, 이것들 중에서 일부의 예를 이하에서 설명한다. 이들 실시예가 제한적인 것이 아니라는 것은 본 기술분야의 당업자에게 자명할 것이다. 더구나, 이들 실시예는 적절히 임의의 방식으로 결합되어도 된다.
제 2 소프트웨어는 상기 처리회로를 제어하여 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어를 변경하도록 구성된다. 즉, 상기 제 1 예외에 응답하여, 제 2 소프트웨어가 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어를 변경한다. 예를 들어, 다가오는 소프트웨어 스위치가 보통 허용되기 전에, 다른 게스트 운영체계가 일찍 스위치될 수도 있다. 따라서, 처리회로의 처리 사이클들이 소모되지 않으며, 스위치 인(switch in)되는 게스트 운영체계에 따라 소비될 수 있다.
상기 제 1 예외에 응답하여, 다음의 콘텍스트 스위치가 일어날 때까지, 상기 처리회로가 상기 복수의 제 1 소프트웨어를 실행하도록 않도록 구성되어도 된다. 이와 같은 상황에서는, 다른 콘텍스트 스위치가 수신될 때까지 복수의 제 1 소프트웨어가 모두 실행되지 않게 된다. 제 1 예외가 발생되는 것에 응답하여 제 1 소프트웨어의 어느 것이 실행될지를 변경하지 않음으로써, 처리장치의 결정론적 거동이 유지된다. 즉, 특정한 제 1 소프트웨어가 실행되기로 되어 있었던 시가가 변경되지 않게 된다. 그러나, 시간 집약적 명령을 내린 제 1 소프트웨어를 실행을 계속하는 것이 허용되지 않는다. 콘텍스트 스위치가 일단 발생하면, 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어가 변경되고, 상기 복수의 제 1 소프트웨어 중에서 이 활성인 소프트웨어가 명령들을 실행하는 것이 허용되고, 처리가 다시 원래의 제 1 소프트웨어로 다시 스위치될 때 시간이 많이 걸리는 명령이 나중에 실행되게 된다.
일부의 경우에는, 상기 제 1 예외에 응답하여, 상기 처리회로가, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하지 않고, 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어의 실행을 계속하도록 구성된다. 즉, 이들 경우에는, 상기 제 1 소프트웨어 중에서 활성인 소프트웨어가 활성인 상태로 유지되고 실행을 계속하도록 허용된다. 그러나, 재 1 예외가 발생되도록 한 시간 집약적 명령은 실행되지 않으며 나중에 다시 내려질 필요가 있을 수 있다.
제 2 면에 따르면, 정보 처리장치를 위한 장치로 구현되는(machine-implemented) 방법으로서, 한 개 이상의 시간 집약적 명령들을 포함하는 한 개 이상의 명령들을 실행하는 단계와, 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하는 단계를 포함하고, 상기 제어값이 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타낼 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하고, 상기 제어값이 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타낼 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하는 방법이 제공된다.
제 3 면에 따르면, 한 개 이상의 시간 집약적 명령들을 포함하는 명령들을 실행하는 처리수단과, 상기 처리수단에 대해 적어도 한 개의 예외를 발생하는 예외 발생수단을 구비하고, 상기 처리수단은, 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하도록 구성되고, 상기 예외 발생수단은, 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타내는 제 1 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 처리수단을 기동함으로써 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하도록 구성되고, 상기 예외 발생수단은, 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타내는 제 2 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하도록 구성된, 정보 처리장치가 제공된다.
이하, 첨부된 도면에 도시된 실시예들을 참조하여 본 발명을 더욱 더 상세히 설명한다.
도 1은 본 발명이 적용되는 정보 처리장치에 의해 실행되는 소프트웨어의 계층 표현을 개략적으로 나타낸 것이다.
도 2는 일 실시예에 따른 정보 처리장치를 개략적으로 나타낸 것이다.
도 3은 제어값의 상태에 근거하는 시간 집약적 명령들을 허용/디스에이블시키는 예를 나타낸 것이다.
도 4a는 일 실시예에 따른 제 1 예외에 대한 응답을 개략적으로 나타낸 것이다.
도 4b는 제 2 실시예에 따른 제 1 예외에 대한 응답을 개략적으로 나타낸 것이다.
도 4a는 제 3 실시예에 따른 제 1 예외에 대한 응답을 개략적으로 나타낸 것이다.
도 5는 일 실시예에 따른 시간 집약적 명령들에 대한 응답 방법을 개략적으로 나타낸 것이다.
도 1은 전술한 기술을 이용하는 가상화된 시스템에서 실행되는 소프트웨어를 개략적으로 나타낸 것이다.
소프트웨어는, 계층적이며, (특권 레벨 또는 실행 레벨로도 불리는) 예외 레벨 EL2에서 실행되고 예외 레벨 EL1에서 실행되는 다수의 게스트 운영체계를 관리하는 하이퍼바이저(10)를 구비한다. 예외 레벨은, 이 예외 레벨에서 실행되는 소프트웨어에게 주어지는 특권의 정도를 표시한다. 본 실시예에서는, 하이퍼바이저가 게스트 운영체계보다 높은 예외 레벨에서 실행되므로, 하이퍼바이저가 게스트 운영체계보다 더 많은 특권을 갖는다. 이와 같은 특정한 실시예에서는 3가지 예외 레벨(EL2, EL1 및 EL0)이 도시되어 있다. 그러나, 본 발명에서 설명하는 기술은 임의의 복수의 예외 레벨을 포함하는 시스템에 적용가능하다는 것은 본 기술분야의 당업자에게 있어서 자명할 것이다.
게스트 운영체계는 실시간 운영체계(30)와 리치(rich) 운영체계(50)를 구비한다. 실시간 운영체계는 보통 사용자에 의해 요구된 작업을 계속해서 실행하는 것이 아니라 검출된 이벤트들에 신속하게 응답하도록 설계된다. 다수의 이벤트는 중요하여, 이들 이벤트에 대한 응답을 일정한 기간 내에 받아 시스템의 돌발적 고장을 피해야 한다는 것을 나타낸다. 리치 운영체계도 이벤트에 응답하지만, 보통 이들 이벤트에 의해 구동되지 않고 일반적으로 중요한 이벤트를 전혀 처리하지 않는다. 리치 운영체계의 예로는, "윈도우" 및 "리눅스" 등의 가정 환경에서 잘 알려진 것을 들 수 있다. 예를 들어, 실시간 운영체계는 차량의 에어백이나 브레이크를 제어하는 반면에, 리치 운영체계는 카 스테레오를 제어한다.
각각의 운영체계(30, 50)는 1개 이상의 실시간 또는 비실시간 작업들(40)을 관리한다. 이들 작업은 더 낮은 예외 레벨 EL0에서 동작한다.
본 실시예에서, 하이퍼바이저는 복수의 운영체계들 사이에서 자원을 공유한다. 즉, 어느 한 시간에, 게스트 운영체계들 중에서 한 개만이 능동적으로 실행되고 다른 운영체계는 대기해야 한다. 활성인 운영체계의 선택과, 다음에 어떤 운영체계가 실행될 예정인지의 판정은 하이퍼바이저에 의해 제어된다.
따라서, 각각의 게스트 운영체계의 성능은 일부가 다른 게스트 운영체계들의 거동에 의해 결정된다는 것을 알 수 있다. 예를 들어, 리치 운영체계들(50) 중에서 한 개가 특히 시간이 많이 걸려 인터럽트가 불가능한 작업의 실행을 개시하는 경우, 이 시간이 많이 걸리는 명령이 종료할 때까지, 하이퍼바이저(10)가 실시간 운영체계(30)에게 처리회로의 공유를 허용하지 않을 수도 있다. 따라서, 실시간 운영체계들이 중요한 이벤트에 대한 응답을 대기하고 잇는 경우, 이들 실시간 운영체계가 대기하여야 한다.
도 1에 도시된 실시예에서는, 하이퍼바이저(10)가, 게스트 운영체계들(30, 50) 또는 이들 게스트 운영체계들에 의해 관리되는 작업들(40) 중에서 한 개가 시간 집약적 명령들을 실행하는 것이 허용되는지 여부를 제어하는 제어값(20)을 설정하며, 이것은 실시간 운영체계(30)가 실시간의 중요한 이벤트들에 응답하지 못하게 한다. 따라서, 제어값의 상태를 변경함으로써, 시간 집약적 명령들의 실행을 금지하거나 억제하여, 실시간의 중요한 이벤트들이 즉시 처리될 수 있게 하는 것이 가능하다. 제어값(20)은, 메모리(70), 레지스터들(90), 처리회로(60)의 일부를 구성하거나, 완전히 별개의 장치이어도 된다.
도 2는 본 발명을 구현하는 정보 처리장치를 개략적으로 나타낸 것이다. 본 실시예에서는, 한 개 이상의 명령을 실행하기 위해 처리회로(60)가 설치된다. 한 개 이상의 명령은 시간 집약적인 명령들을 포함한다. 이와 관련하여, 시간 집약적 명령은 그것의 실행을 위해 처리회로(60)의 복수의 클록 사이클을 필요로 하는 명령이어도 된다. 한 개 이상의 별개의 종류의 명령들이 시간 집약적 명령으로 사전에 결정되어도 된다.
시간 집약적 명령의 시도된 실행에 대한 처리회로(60)의 응답은 제어값(20)의 상태에 의존한다. 예를 들어, 제어값(20)이 값 0이나 거짓으로 설정되면, 이것은 시간 집약적 명령들이 허용된다는 것을 나타낸다. 역으로, 제어값이 값 1이나 참으로 설정되면, 이것은 시간 집약적 명령들이 허용되지 않는다는 것을 나타낸다. 이때, 이들 수치가 물론 반전되거나 다른 표현이 가능하는 것은 본 기술분야의 당업자에게 있어서 자명할 것이다. 예를 들어, 제어값은, 시간 집약적 명령들의 실행이 허용되는 조건의 집합을 표시해도 된다.
시간 집약적 명령들이 허용된다는 것을 제어값(20)이 표시할 때 (예를 들어, 명령 발행 상태 또는 실행 단계에 있는) 처리회로(60)가 마주치는 시간 집약적 명령에 응답하여, 처리회로(60)가 이 시간 집약적 명령을 실행하게 된다. 이와 달리, 시간 집약적 명령이 허용되지 않는다는 것을 제어값(20)이 표시할 때 마주치는 시간 집약적 명령에 응답하여, 예외 발생회로(100)가 제 1 예외(예를 들면, 인터럽트)를 발생하게 된다. 제 1 예외는 처리회로(60)가 활성인 운용체계를 스위치 아웃(switch out)하게 하고 그 대신에 하이퍼바이저(10)를 실행하게 한다. 하이퍼바이저(10)는, 시간 집약적 명령을 금지하여 응답함으로써 이 명령이 실행되지 않는다. 그후, 하이퍼바이저는, 시간 집약적 명령을 실행하지 않고, 추가적인 조치를 취하여 진행을 허용한다.
예외 발생회로(100)는 제 1 예외 이외에 다른 예외를 발생해도 된다. 발행될 수 있는 다른 예외의 한가지는, 처리회로가 서로 다른 운영체계들의 실행 사이에서 스위치하게 하는 콘텍스트 스위치 예외이다. 이와 같은 예외는 사이클 카운터(110)의 값에 근거하여 주기적으로 발생된다.
도 2에 도시된 실시예에서는, 예외 발생회로(100)가 제 2 예외를 발생하여 처리회로(60)를 제어함으로써 제어값(20)을 플립(flip)한다. 그 결과, 시간 집약적 명령들의 실행이 변경될 수 있다. 사이클 카운터(110)는 이와 같은 제 2 예외를 주기적으로 발행하는데 사용된다. 그 결과, 처리회로(60)는 시간 집약적 명령들이 주기적으로 발행될 수 있도록 허용하거나 허용하지 않도록 이루어지거나, 주어진 기간에 이들 2가지 상태들 사이에서 교번하도록 이루어질 수 있다.
정보 처리장치는, 메모리(70)에 대한 액세스를 제한하는 메모리 보호 유닛(MPU)(80)을 거쳐 액세스된 메모리(70)를 더 구비한다. 정보 처리장치는 레지스터들의 세트(90)를 더 구비한다. 다른 실시예에서는, MPU 대신에 또는 MPU에 덧붙여 메모리 관리 유닛(MMU)이 설치되어도 된다.
시간 집약적 명령들은 실행하기 위해 처리회로(60)의 복수의 처리 사이클을 필요로 한다. 그러나, 일부 실시예에서는, 시간 집약적 명령들이 사전에 정의된 세트이다. 예를 들면, 사전에 정의된 세트는 부동 소수점 제곱근 명령과 나눗셈 명령을 포함해도 된다. 사전에 정의된 세트는, 메모리(70)에 기억된 복수의 데이터 값들이 레지스터들(90)로 전달되는 인터럽트 불가능한 로드 다중 명령들을 포함해도 된다. 마찬가지로, 사전에 정의된 세트는, 레지스터들(90)에 기억된 복수의 데이터 값들이 메모리(70)로 전달되는 인터럽트 불가능한 저장 다중 명령들을 포함해도 된다. MPU(80)는 특정한 로드 다중 또는 저장 다중 명령이 인터럽트 불가능하다는 것을 표시한다. 예를 들어, 메모리(70)의 메모리 어드레스들의 특정한 영역과 관련하여 MPU(80)에 특정한 비트를 설정함으로써 이것이 발생될 수 있다. 디바이스 타입 메모리를 처리할 때 이것을 행함으로써, 하드웨어 장치에 직접 매핑되는 메모리의 부분에 대한 판독 및 기록이 이 하드웨어 장치를 제어하도록 할 수 있다. 이들 명령은, 데이터 값들의 서브셋만이 메모리에 기억되거나 메모리에서 판독되어, 부정확하게 또는 비결정론적으로 동작하는 하드웨어 장치를 발생할 수 있는 상황이 일어나지 않도록 보장하기 위해 인터럽트 불가능해야 한다.
명령들의 소정의 목록은 적어도 한 개의 소정의 단일 명령 다중 데이터(SIMD)를 포함해도 되는데, 이와 같은 명령들은 단지 한 개의 명령을 내림으로써 복수의 데이터에 대해 다수의 연산을 병렬로 행하기 위해 사용될 수 있다. 예를 들어, 한 개의(SIMD) 명령을 사용하여 행렬 승산을 행할 수도 있다.
도 3은 제어값을 사용하여 시간 집약적 명령들이 실행될 수 있는지 여부를 제어하는 것을 개략적으로 나타낸 것이다.
시간 t0에, 제어값이 0으로 설정되어 시간 집약적 명령들이 허용된다는 것을 표시한다.
시간 t1에, 시간 집약적 명령이 내려진다. 시간 t1에는, 제어값이 0으로 설정되어 시간 집약적 명령들이 허용된다는 것을 표시하기 때문에, 명령을 진행하는 것이 허가되므로, 처리회로(60)에 의해 명령이 실행된다.
시간 t2에는, 제어값이 1로 설정되어, 시간 집약적 명령들이 허용되지 않는다는 것을 표시한다. 시간 t4에서의 예측된 실시간의 중요한 이벤트가 근접한 것으로 인해 시간 t2에 시간 집약적 명령들이 허용되지 않는다. 예측된 실시간의 중요한 이벤트에 매우 근접한 시간 집약적 명령을 허용하지 않음으로써, 시간 집약적 명령의 처리의 결과로써 실시간의 중요한 이벤트에 대한 응답이 지연되는 상황을 방지할 수 있다.
시간 t3에, 또 다른 시간 집약적 명령이 내려진다. 시간 t3에서 제어값이 1로서 시간 집약적 명령들이 허용되지 않는다는 것을 표시하기 때문에, 시간 집약적 명령의 실행이 허가되지 않게 되고, 그 대신에 예외 발생회로(100)에 의해 제 1 예외가 발생되어 처리회로(60)가 시간 집약적 명령을 금지하게 한다.
최종적으로, 시간 t4에서, 예측된 실시간의 중요한 이벤트가 일어난다. 실시간의 중요한 이벤트의 발생 이전에 시간 집약적 명령들이 허용되지 않았기 때문에, 시간 t4에 시간 집약적 명령들이 처리되고 있을 가능성이 없다. 따라서, 실시간의 중요한 이벤트가 거의 지연없이 거의 즉시 응답을 받을 수 있다.
도 4a는, 시간 집약적 명령들이 허용되지 않는다는 것을 제어값(20)이 표시할 때, 이와 같은 명령들이 내려진 것에 응답하여, 처리회로(60)가 예외 발생회로(100)에 의해 발생된 제 1 예외에 응답하는 첫 번째 예를 나타낸 것이다. 도 4a에 도시된 것과 같이, 처리회로(60)는 3가지 서로 다른 운용체계들 OS1, OS2 및 OS3의 실행 사이에서 순환하도록 구성된다. 별개의 시간 슬라이드(time slice)들(130)에서 실행이 일어나는데, 각각의 시간 슬라이스는 특정한 게스트 운영체계 전용이다. 한 개의 운영체계로부터 다른 운영체계로의(즉, 한 개의 시간 슬라이스로부터 다른 시간 슬라이스로의) 스위치는 콘텍스트 스위치로 불린다. 각각의 콘텍스트 스위치의 발생 이전에, (도 4a에서 점선으로 표시된) 제 2 예외가 발생된다. 제 2 예외는, 시간 집약적 명령들이 허용되지 않도록 제어값(20)에 기억된 값을 처리회로(60)가 변경하게 한다. 콘텍스트 스위치가 발생한 후, 시간 집약적 명령들을 한번 더 허용하도록 제어값(20)이 설정된다. 따라서, 도 4a에서 볼 수 있는 것과 같이, 시간 집약적 명령들이 허가되는 제 1 기간(140)과 시간 집약적 명령들이 허가되지 않는 제 2 기간(120)으로서 각각의 시간 슬라이스(130)를 생각할 수 있다. 도 4a에는 제 2 시간(120)이 제 1 기간(140)보다 상당히 짧다는 것을 나타내고 있다. 예를 들어, 제 2 기간(120)에 대한 제 1 기간(140)의 비율은 9:1이다. 그 결과, 콘텍스트 스위치가 발생하기 직접에 시간 집약적 명령들이 허가되지 않는 것을 제외하고는, 이들 명령은 일반적으로 허용된다. 따라서, 콘텍스트 스위치가 발생할 수 있기 전에 시간 집약적 명령들이 완료될 필요가 있을 가능성이 거의 없기 때문에, 각각의 콘텍스트 스위치를 처리하는데 있어서 거의 지연이 존재하지 않는다. 따라서, 3가지 운영체계 OS1, OS2 및 OS3가 정기적인 스케줄로 실행되고, 결정론적인 시기에 실행이 허용되며, 콘텍스트 스위치가 지연되는 것으로 인해 변동성을 거의 갖지 않는다. 시간 집약적 명령들이 허가되지 않는다는 것을 제어값(20)이 표시할 때, 이들 명령을 실행하려는 시도가 행해지면, 예외 발생회로(100)는 제 1 예외를 발생하여, 하이퍼바이저가 처리회로(60)에 의해 실행되게 한다. 그후, 도 4a, 도 4b 및 도 4c에 나타낸 것과 같이, 다양한 방법들 중에서 한가지로 하이퍼바이저가 응답한다.
도 4a에서는, 시간 집약적 명령의 실행을 금지하고 운영체계들 OS1, OS2 또는 OS3의 어느 것도 실행하지 않음으로써, 처리회로(60)가 제 1 예외에 대해 응답한다. 따라서, 시간 집약적 명령을 마주친 시간과 다음의 콘텍스트 스위치 사이의 기간(150) 동안, 하이퍼바이저의 일부를 구성하는 소프트웨어가 실행되지만, 게스트 운영체계는 실행이 불가능하다.
도 4b는 도 4a와 유사하지만, 시간 t3에서의 제 1 예외의 발생에 대해 다른 응답을 나타낸다. 이 예에서는, 시간 집약적 명령이 여전히 금지되지만, 운영체계들 OS1, OS2 및 OS3 중에서 어느 한 개를 실행하지 않는 것이 아니라. 곧 발생할 예상된 콘텍스트 스위치 동작이 앞당겨진다. 따라서, 운영체계 OS1이 일찍 실행되는 것이 허용된다. 이 예에서는, 프로세싱 자원이 소모되지 않는다. 그러나, 다음의 운영체계가 정상적으로 예상되는 것보다 이르게 실행이 되기 때문에, 시스템의 결정론적 속성이 변한다. 따라서, 콘텍스트 스위치 타이밍을 변경하는 것보다는 도 4a에 도시된 것과 같이 다음의 콘텍스트 스위치를 대기하는 것이 더 간단할지도 모른다.
도 4c는 도 4a 및 도 4b와 유사하다. 시간 집약적 명령이 여전히 금지된다. 그러나, 시간 t3에서의 제 1 예외 발생에 응답하여, 운영체계 OS3의 실행이 계속된다. 시간 집약적 명령이 OS3 하에서 제 1 작업의 일부로서 발생한 경우에, OS3가 제 1 작업이 아니라 이와 다른 제 2 작업의 실행을 계속할 수 있다. 그후, 하이퍼바이저는 시간 집약적 명령의 실행을 방지하기 위해 조치를 행한다. 예를 들어, 하이퍼바이저는, 시간 집약적 명령이 실행되게 한 작업을 스위치 아웃하고 그 대신에 다른 작업을 실행하기 위해 게스트 운영체계가 그 자신의 콘텍스트 스위치를 발생하게 한다. 이와 달리, 하이퍼바이저는, 에러 또는 예외를 발생하여 요청된 연산이 현재 수행될 수 없다는 것을 표시함으로써, 시간 집약적 명령에 응답해도 된다.
도 5는 일 실시예에 따른 시간 집약적 명령에 대한 응답방법을 개략적으로 나타낸 것이다.
스텝 S200에서, 다음 명령을 페치한다. 스텝 S210에서, 페치된 명령이 시간 집약적 명령인지 아닌지 처리회로(60)가 판정한다. 명령이 시간 집약적 명령이 아닌 경우에는, 스텝 S220에서, 명령이 실행되고 스텝 S200으로 처리가 되돌아간다. 그러나, 스텝 S210에서, 명령이 시간 집약적 명령인 것으로 판정되면, 스텝 S230에서, 시간 집약적 명령이 허용된다는 것을 제어값이 표시하는지 여부를 검사한다. 시간 집약적 명령이 허용되지 않는 것으로 제어값이 표시하는 것으로 판정된 경우에는, 스텝 S240에서, 제 1 예외가 발생되고, 스텝 S250에서 시간 집약적 명령이 금지된다. 그후, 스텝 S200으로 처리가 되돌아간다. 그러나, 스텝 S230에서, 시간 집약적 명령이 허가되는 것으로 판정된 경우에는, 스텝 S260에서, 시간 집약적 명령이 실행되고, 스텝 S200으로 처리가 되돌아간다.
특정한 실시예들을 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며 본 발명의 보호범위 내에서 다수의 병형 및 추가가 행해질 수 있다는 것은 자명하다. 예를 들어, 본 발명의 보호범위를 벗어나지 않으면서, 독립항의 특징과 이하의 종속항들의 특징의 다양한 조합이 이루어질 수도 있다.

Claims (24)

  1. 한 개 이상의 시간 집약적 명령들을 포함하는 명령들을 실행하도록 구성된 처리회로와,
    상기 처리회로에 대해 적어도 한 개의 예외를 발생하도록 구성된 예외 발생회로를 구비하고,
    상기 처리회로는 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하도록 구성되고,
    상기 예외 발생회로는, 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타내는 제 1 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 처리회로를 기동함으로써 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하도록 구성되고,
    상기 예외 발생회로는, 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타내는 제 2 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하도록 구성된 정보 처리장치.
  2. 제 1항에 있어서,
    상기 시간 집약적 명령들은, 상기 처리회로의 복수의 처리 사이클이 실행되도록 요구하는 명령들을 포함하는 정보 처리장치.
  3. 제 1항 또는 제 2항 중 어느 한 항에 있어서,
    상기 시간 집약적 명령들은 인터럽트될 수 없는 명령들을 포함하는 정보 처리장치.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 시간 집약적 명령들은, 부동 소수점 제곱근 명령, 나눗셈 명령, 인터럽트 불가능한 로드 다중 명령, 인터럽트 불가능한 저장 다중 명령과, 적어도 한 개의 소정의 단일 명령 다중 데이터(SIMD) 명령 중에서 적어도 한 개를 포함하는 정보 처리장치.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서,
    상기 처리회로는, 제 1 특권 레벨에서 제 1 소프트웨어를 실행하고 상기 제 1 특권 레벨보다 높은 제 2 특권 레벨에서 제 2 소프트웨어를 실행하도록 구성된 정보 처리장치.
  6. 제 5항에 있어서,
    상기 제 2 소프트웨어는 상기 처리회로를 제어하여 상기 제어값을 변경하도록 구성된 정보 처리장치.
  7. 제 5항 또는 제 6항에 있어서,
    상기 예외 발생회로는 상기 제 1 소프트웨어의 상기 시간 집약적 명령들 중에서 한 개에 응답하여 상기 제 1 예외를 발생하도록 구성된 정보 처리장치.
  8. 제 5항 내지 제 7항 중 어느 한 항에 있어서,
    상기 예외 발생회로는, 상기 제 2 특권 레벨보다 낮은 특권 레벨에서 실행되는 소프트웨어의 상기 시간 집약적 명령들 중에서 한 개에만 응답해서 상기 제 1 예외를 발생하도록 구성된 정보 처리장치.
  9. 제 5항 내지 제 8항 중 어느 한 항에 있어서,
    상기 제 1 소프트웨어는 한 개 이상의 게스트 운영체계를 포함하고,
    상기 제 2 소프트웨어는 하이퍼바이저를 포함하는 정보 처리장치.
  10. 제 1항 내지 제 9항 중 어느 한 항에 있어서,
    상기 처리회로는 한 개 이상의 소정의 이벤트에 응답하여 상기 제어값을 변경하도록 구성된 정보 처리장치.
  11. 제 10항에 있어서,
    상기 한 개 이상의 소정의 이벤트는 콘텍스트 스위치를 포함하는 정보 처리장치.
  12. 제 11항에 있어서,
    상기 콘텍스트 스위치에 응답하여, 상기 처리회로가 상기 제어값을 상기 제 2 상태로 변경하도록 구성된 정보 처리장치.
  13. 제 10항 내지 제 12항 중 어느 한 항에 있어서,
    상기 한 개 이상의 소정의 이벤트는 제 2 예외를 포함하고,
    상기 예외 발생회로는 예측된 이벤트 이전의 제 1 소정의 기간 동안 상기 제 2 예외를 발생하도록 구성된 정보 처리장치.
  14. 제 13항에 있어서,
    상기 예측된 이벤트는 콘텍스트 스위치이고, 이전의 콘텍스트 스위치 이후의 제 2 소정의 기간 동안 상기 제 2 예외가 발생하는 정보 처리장치.
  15. 제 14항에 있어서,
    상기 제 1 소정의 기간은 상기 제 2 소정의 기간보다 적은 정보 처리장치.
  16. 제 15항에 있어서,
    상기 제 2 소정의 기간에 대한 상기 제 1 소정의 기간의 비율이 1:9인 정보 처리장치.
  17. 제 13항 내지 제 16항 중 어느 한 항에 있어서,
    상기 제 2 예외에 응답하여, 상기 처리회로가 상기 제어값을 상기 제 1 상태로 변경하도록 구성된 정보 처리장치.
  18. 제 5항 내지 제 9항 중 어느 한 항에 있어서,
    상기 처리회로는 상기 제 1 예외에 응답하여 상기 제 2 소프트웨어의 실행으로 스위치하도록 구성된 정보 처리장치.
  19. 제 18항에 있어서,
    상기 처리회로는 상기 제 1 특권 레벨에서 복수의 제 1 소프트웨어 중에서 한 개를 실행하도록 구성된 정보 처리장치.
  20. 제 19항에 있어서,
    상기 제 1 예외에 응답하여, 상기 제 2 소프트웨어는 상기 처리회로를 제어하여 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어를 변경하도록 구성된 정보 처리장치.
  21. 제 19항 또는 제 20항에 있어서,
    상기 제 1 예외에 응답하여, 상기 처리회로가 다음의 콘텍스트 스위치까지 상기 복수의 제 1 소프트웨어를 실행하지 않도록 구성된 정보 처리장치.
  22. 제 19항 내지 제 21항 중 어느 한 항에 있어서,
    상기 제 1 예외에 응답하여, 상기 처리회로는 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하지 않고 상기 복수의 제 1 소프트웨어 중에서 활성인 소프트웨어의 실행을 계속하도록 구성된 정보 처리장치.
  23. 정보 처리장치를 위한 장치로 구현되는 방법으로서,
    한 개 이상의 시간 집약적 명령들을 포함하는 한 개 이상의 명령들을 실행하는 단계와,
    상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하는 단계를 포함하고,
    상기 제어값이 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타낼 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하고,
    상기 제어값이 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타낼 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하는 방법.
  24. 한 개 이상의 시간 집약적 명령들을 포함하는 명령들을 실행하는 처리수단과,
    상기 처리수단에 대해 적어도 한 개의 예외를 발생하는 예외 발생수단을 구비하고,
    상기 처리수단은, 상기 시간 집약적 명령들이 실행될 수 있는지 여부를 표시하기 위한 제어값을 유지하도록 구성되고,
    상기 예외 발생수단은, 상기 시간 집약적 명령들이 실행될 수 없다는 것을 나타내는 제 1 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 제 1 예외를 발생하여 상기 처리수단을 기동함으로써 상기 시간 집약적 명령들 중에서 상기 한 개의 실행을 금지하도록 구성되고,
    상기 예외 발생수단은, 상기 시간 집약적 명령들이 실행될 수 있다는 것을 나타내는 제 2 상태에 상기 제어값이 있을 때 상기 시간 집약적 명령들 중에서 한 개에 응답하여, 상기 시간 집약적 명령들 중에서 상기 한 개를 실행하도록 구성된 정보 처리장치.
KR1020167004314A 2013-08-23 2014-07-07 시간 집약적 명령의 처리 KR102235142B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1315109.7 2013-08-23
GB1315109.7A GB2517494B (en) 2013-08-23 2013-08-23 Handling time intensive instructions
PCT/GB2014/052053 WO2015025127A1 (en) 2013-08-23 2014-07-07 Handling time intensive instructions

Publications (2)

Publication Number Publication Date
KR20160045699A true KR20160045699A (ko) 2016-04-27
KR102235142B1 KR102235142B1 (ko) 2021-04-02

Family

ID=49355839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167004314A KR102235142B1 (ko) 2013-08-23 2014-07-07 시간 집약적 명령의 처리

Country Status (10)

Country Link
US (1) US10963250B2 (ko)
EP (1) EP3036629B1 (ko)
JP (1) JP6427575B2 (ko)
KR (1) KR102235142B1 (ko)
CN (1) CN105474174B (ko)
BR (1) BR112016002997B1 (ko)
GB (1) GB2517494B (ko)
IL (1) IL244199B (ko)
TW (1) TWI654561B (ko)
WO (1) WO2015025127A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2517493A (en) * 2013-08-23 2015-02-25 Advanced Risc Mach Ltd Handling access attributes for data accesses
US9367322B1 (en) 2015-07-27 2016-06-14 International Business Machines Corporation Age based fast instruction issue
US10942509B2 (en) 2018-01-19 2021-03-09 Ge Aviation Systems Llc Heterogeneous processing in unmanned vehicles
US11029985B2 (en) 2018-01-19 2021-06-08 Ge Aviation Systems Llc Processor virtualization in unmanned vehicles

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306766A1 (en) * 2009-05-28 2010-12-02 James Paul Schneider Adding aspects to virtual machine monitors
US7966480B2 (en) * 2001-06-01 2011-06-21 Microchip Technology Incorporated Register pointer trap to prevent errors due to an invalid pointer value in a register
JP2011134162A (ja) * 2009-12-25 2011-07-07 Internatl Business Mach Corp <Ibm> タスクの切り換えを制御するシステムおよび方法
WO2012123706A1 (en) * 2011-03-14 2012-09-20 Arm Limited Diagnosing code using single step execution

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6058410A (en) 1996-12-02 2000-05-02 Intel Corporation Method and apparatus for selecting a rounding mode for a numeric operation
US6427202B1 (en) * 1999-05-04 2002-07-30 Microchip Technology Incorporated Microcontroller with configurable instruction set
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US7181600B1 (en) * 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7779239B2 (en) * 2004-07-28 2010-08-17 Intel Corporation User opt-in processor feature control capability
US7590823B1 (en) * 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
JP5010164B2 (ja) * 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US7797681B2 (en) 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US20080072019A1 (en) * 2006-09-19 2008-03-20 Avinash Sodani Technique to clear bogus instructions from a processor pipeline
US20090037918A1 (en) * 2007-07-31 2009-02-05 Advanced Micro Devices, Inc. Thread sequencing for multi-threaded processor with instruction cache
US8397235B2 (en) 2008-10-07 2013-03-12 Futurewei Technologies, Inc. User tolerance based scheduling method for aperiodic real-time tasks
JP5353227B2 (ja) 2008-12-24 2013-11-27 富士通株式会社 性能測定プログラム及び性能測定方法並びに性能測定機能を有する情報処理装置。
CN101826000A (zh) * 2010-01-29 2010-09-08 北京龙芯中科技术服务中心有限公司 流水线微处理器的中断响应确定方法、装置及微处理器核
CN101866281B (zh) * 2010-06-13 2013-05-22 清华大学 一种多周期指令执行方法和装置
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
US9146767B2 (en) * 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7966480B2 (en) * 2001-06-01 2011-06-21 Microchip Technology Incorporated Register pointer trap to prevent errors due to an invalid pointer value in a register
US20100306766A1 (en) * 2009-05-28 2010-12-02 James Paul Schneider Adding aspects to virtual machine monitors
JP2011134162A (ja) * 2009-12-25 2011-07-07 Internatl Business Mach Corp <Ibm> タスクの切り換えを制御するシステムおよび方法
WO2012123706A1 (en) * 2011-03-14 2012-09-20 Arm Limited Diagnosing code using single step execution

Also Published As

Publication number Publication date
GB2517494B (en) 2021-02-24
JP2016531363A (ja) 2016-10-06
IL244199B (en) 2019-06-30
IL244199A0 (en) 2016-04-21
JP6427575B2 (ja) 2018-11-21
KR102235142B1 (ko) 2021-04-02
BR112016002997B1 (pt) 2022-05-31
GB2517494A (en) 2015-02-25
EP3036629B1 (en) 2021-06-09
US20160202977A1 (en) 2016-07-14
CN105474174A (zh) 2016-04-06
WO2015025127A1 (en) 2015-02-26
EP3036629A1 (en) 2016-06-29
GB201315109D0 (en) 2013-10-09
BR112016002997A2 (ko) 2017-08-01
TW201508636A (zh) 2015-03-01
TWI654561B (zh) 2019-03-21
CN105474174B (zh) 2020-02-28
US10963250B2 (en) 2021-03-30

Similar Documents

Publication Publication Date Title
KR100726317B1 (ko) 게스트 소프트웨어의 특권 레벨에 기초한 가상 머신모니터로의 전이
EP2315113A1 (en) Multi-threaded processors and multi-processor systems comprising shared resources
KR102235142B1 (ko) 시간 집약적 명령의 처리
EP2996043B1 (en) Debugging in a data processing apparatus
JP2001014220A (ja) ソフトウェア制御される電子装置のパーティション分割および監視方法
EP3308314A1 (en) Secure mode state data access tracking
CN108241522B (zh) 虚拟化环境中的睡眠状态切换方法、装置及电子设备
JP5999216B2 (ja) データ処理装置
CN107315631B (zh) 一种任务调度方法及装置
CN107179980B (zh) 用于监视计算系统的方法和相应的计算系统
KR101838474B1 (ko) 다중프로세서 시스템에서의 예외 제어
KR100843134B1 (ko) 인터럽트 금지구간 처리 장치 및 방법과 페이지 고정 장치및 방법
US20220334862A1 (en) Virtual mode execution manager
US11194615B2 (en) Dynamic pause exiting
KR20190077235A (ko) 반도체 장치
JP7498845B2 (ja) 制御装置及び制御方法
US11726811B2 (en) Parallel context switching for interrupt handling
US20240086219A1 (en) Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit
JP2023032307A (ja) 仮想化制御装置および割り込み制御方法
JP2008077388A (ja) マルチプロセッサ制御システム、方法、およびプログラム
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法
JP4387863B2 (ja) 擾乱発生検出プログラムおよび擾乱発生検出方法
JP2013190929A (ja) マイクロコンピュータ

Legal Events

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