KR20190077235A - 반도체 장치 - Google Patents

반도체 장치 Download PDF

Info

Publication number
KR20190077235A
KR20190077235A KR1020180166492A KR20180166492A KR20190077235A KR 20190077235 A KR20190077235 A KR 20190077235A KR 1020180166492 A KR1020180166492 A KR 1020180166492A KR 20180166492 A KR20180166492 A KR 20180166492A KR 20190077235 A KR20190077235 A KR 20190077235A
Authority
KR
South Korea
Prior art keywords
interrupt
virtual machine
information
cpu
priority
Prior art date
Application number
KR1020180166492A
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 KR20190077235A publication Critical patent/KR20190077235A/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • 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/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
    • G06F9/4818Priority circuits therefor
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microcomputers (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

가상 머신의 인터럽트 성능을 향상시키는 반도체 장치를 제공하는 것이다.
반도체 장치는, 복수의 가상 머신과, 상기 복수의 가상 머신을 관리하는 가상 머신 매니저를 저장하는 메모리와, 상기 복수의 가상 머신과 상기 가상 머신 매니저를 실행하는 CPU를 구비한다. 상기 CPU는, 인터럽트를 처리하는 가상 머신의 정보(제1 정보)와 실행 중인 가상 머신의 정보(제2 정보)가 동일한 경우, 실행 중인 가상 머신에 인터럽트 처리를 실행시키고, 상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 가상 머신 매니저에 상기 실행 중인 가상 머신을 정지시키고, 또한 인터럽트를 처리하는 가상 머신을 동작시켜 인터럽트 처리를 실행시킨다.

Description

반도체 장치{SEMICONDUCTOR DEVICE}
본 개시는 반도체 장치에 관한 것이며, 예를 들어 가상 머신을 구성하는 반도체 장치에 적용 가능하다.
가상화(Virtualization)라 불리는 1개의 하드웨어를 복수의 하드웨어로 보이게 하는 기술이 있다. 이 가상화 기술은, VMM(Virtual Machine Monitor : 가상 머신 모니터 또는 Virtual Machine Manager) 혹은 하이퍼 바이저라 불리는 관리 소프트웨어가 OS(Operating System)와 하드웨어(프로세서나 I/O) 사이에 들어감으로써 실현된다(일본 특허 공개 제2013-210962호 공보). 예를 들어, VMM은 스케줄러 기능에 의해 복수의 가상 머신을 주기적으로 전환하여, 가상 머신이 실행된다.
일본 특허 공개 제2013-210962호 공보 일본 특허 공표 제2013-519169호 공보
동작 중인 가상 머신이 인터럽트를 접수하도록 하면, 정지 중인 가상 머신은 동작 중인 가상 머신으로부터 정지 중인 가상 머신으로 실행이 전환될 때까지 인터럽트가 접수되지 않으므로, 정지 중인 가상 머신의 인터럽트 응답이 지연된다. VMM이 인터럽트를 접수하도록 하면, 동작 중인 가상 머신으로부터 VMM으로 실행이 전환되지 않으면 인터럽트가 접수되지 않으므로, 동작 중인 가상 머신의 인터럽트 응답이 지연된다.
그 밖의 과제와 신규 특징은, 본 개시의 기술 및 첨부 도면으로부터 명백하게 될 것이다.
본 개시 중, 대표적인 것의 개요를 간단하게 설명하면, 하기와 같다.
즉, 반도체 장치는, 복수의 가상 머신과, 상기 복수의 가상 머신을 관리하는 가상 머신 매니저를 저장하는 메모리와, 상기 복수의 가상 머신과 상기 가상 머신 매니저를 실행하는 CPU를 구비한다. 상기 CPU는, 인터럽트를 처리하는 가상 머신의 정보(제1 정보)와 실행 중인 가상 머신의 정보(제2 정보)가 동일한 경우, 실행 중인 가상 머신에 인터럽트 처리를 실행시키고, 상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 가상 머신 매니저에 상기 실행 중인 가상 머신을 정지시키고, 또한 인터럽트를 처리하는 가상 머신을 동작시켜 인터럽트 처리를 실행시킨다.
상기 반도체 장치에 따르면, 가상 머신의 인터럽트 성능을 향상시킬 수 있다.
도 1은 가상 머신의 개념을 설명하는 도면.
도 2는 비교예 1의 가상 머신의 인터럽트를 설명하는 도면.
도 3은 비교예 2의 가상 머신의 인터럽트를 설명하는 도면.
도 4는 실시 형태의 가상 머신의 인터럽트를 설명하는 도면.
도 5는 실시예의 반도체 장치의 구성을 도시하는 블록도.
도 6은 도 5의 반도체 장치에 있어서 CPU 및 이벤트 결정 장치를 하나씩 도시한 도면.
도 7은 도 6의 이벤트 결정 장치의 구성을 도시하는 블록도.
도 8은 변형예 1의 인터럽트를 처리하는 VM의 정보의 확정을 설명하는 블록도.
도 9는 도 8의 VM 정보 테이블의 예를 도시하는 도면.
도 10은 변형예 2의 반도체 장치의 구성을 도시하는 블록도.
도 11은 도 10의 이벤트 결정 장치의 구성을 도시하는 블록도.
도 12는 변형예 3의 인터럽트 컨트롤러의 구성을 도시하는 블록도.
도 13은 도 12의 이벤트 결정 장치의 구성을 도시하는 블록도.
도 14는 변형예 4의 반도체 장치의 구성을 도시하는 블록도.
도 15는 VMM 스케줄러의 동작을 설명하는 타이밍도.
도 16은 실시예의 반도체 장치를 차량에 사용한 경우의 응용예를 도시하는 블록도.
이하, 실시 형태에 대하여, 도면을 사용하여 설명한다. 단, 이하의 설명에 있어서, 동일 구성 요소에는 동일 부호를 붙이고 반복 설명을 생략하는 경우가 있다.
먼저, 가상 머신에 대하여 도 1을 사용하여 설명한다. 도 1은 가상 머신의 개념을 설명하는 도면이다.
도 1에 도시한 바와 같이, 예를 들어 하나의 CPU(물리 머신) 상에 소프트웨어 프로그램을 포함하는 가상 머신 매니저(Virtual Machine Manager)(이하, VMM이라 함)이 실장되고, VMM의 관리 하의 소프트웨어 프로그램에 의해 복수의 가상 머신(Virtual Machine)(이하, VM이라 함)이 구성된다. 도 1에서는 VM은 제1 가상 머신(이하, VM1이라 함), 제2 가상 머신(이하, VM2라 함) 및 제3 가상 머신(VM3)의 3개이며, VM1, VM2, VM3은 각각의 애플리케이션 프로그램(App1, App2, App3)을 실행한다. VMM은 스케줄러 기능에 의해, VM1, VM2 및 VM3을 주기적으로 전환하여 실행시킨다.
다음으로, 각 VM이 인터럽트를 접수하는 예(비교예 1)에 대하여 도 2를 사용하여 설명한다. 도 2는 비교예 1의 인터럽트 접수를 설명하는 개념도이며, 도 2의 (A)는 VM1의 동작 시에 VM1의 인터럽트 요구가 있는 경우의 도면이고, 도 2의 (B)는 VM1의 동작 시에 VM2의 인터럽트 요구가 있는 경우의 도면이다. 도 2의 (A), 도 2의 (B)에 있어서, 가로 방향의 검고 굵은 화살표는 동작 중(실행 중)을 나타내고 있고, 세로 방향의 가는 화살표는 VM 또는 VMM의 전환을 나타내고 있다. 이것은 도 3의 (A), 도 3의 (B), 도 4의 (A), 도 4의 (B)에 있어서도 마찬가지이다.
도 2의 (A)에 도시한 바와 같이, 비교예 1에서는, VM1의 동작 시에 VM1의 인터럽트 요구가 있었던 경우, VM1이 그 인터럽트의 접수는 가능하다. 그러나, VM1의 동작 시에, VM2의 인터럽트 요구가 있었던 경우, VM2는 인터럽트를 접수할 수는 없다. 도 2의 (B)에 도시한 바와 같이, 비교예 1에서는, VMM이 스케줄러에 따라서, VM1을 VMM으로 전환하고, 다시 VM2로 전환하여, VM2가 동작을 시작하고 인터럽트 접수가 가능해진다.
다음으로, VMM이 인터럽트를 접수하는 예(비교예 2)에 대하여 도 3을 사용하여 설명한다. 도 3은 비교예 2의 인터럽트 접수를 설명하는 개념도이며, 도 3의 (A)는 VM1의 동작 시에 VM1의 인터럽트 요구가 있는 경우의 도면이고, 도 3의 (B)는 VM1의 동작 시에 VM2의 인터럽트 요구가 있는 경우의 도면이다.
도 3의 (A)에 도시한 바와 같이, 비교예 2에서는, VM1의 동작 시에 VM1의 인터럽트 요구가 있었던 경우, 인터럽트 요구는 VMM에 통지되고, VMM은 VM1로부터 VMM으로 전환되고, 다시 VM1로 전환되어, VM1이 동작을 시작하고 인터럽트 접수가 가능해진다. 또한, 도 3의 (B)에 도시한 바와 같이, 비교예 2에서는, VM1의 동작 시에, VM2의 인터럽트 요구가 있었던 경우, 인터럽트 요구는 VMM에 통지되고, VM1을 VMM으로 전환하고, 다시 VM2로 전환하여, VM2가 동작을 시작하고 인터럽트 접수가 가능해진다.
비교예 1에서는, 동작 중인 VM은 직접 인터럽트를 받을 수 있어, 일단 VMM에서 인터럽트를 접수하는 비교예 2에 비해 인터럽트 성능을 유지할 수 있다. 한편, 동작 중이 아닌 VM의 인터럽트는, 발생 상태가 메모리에 기록되고, VMM이 스케줄된 경우에 이것을 판독하고, VM을 스케줄함으로써 이것을 처리한다. 비교예 1에서는, 동작 중이 아닌 VM의 인터럽트의 접수 입도는 VM의 스케줄의 주기에 의존하기 때문에, VM의 인터럽트의 리얼타임성을 유지하고 싶은 경우에는 부적합하다.
비교예 2에서는, 모든 인터럽트를 VMM이 접수하기 때문에, VM의 스케줄 주기에 비해, 리얼타임성을 유지하여 동작 중이 아닌 VM의 인터럽트를 접수하는 것이 가능해진다. 그러나, 반드시 VMM을 통해 인터럽트를 접수하기 때문에, 동작 중인 VM의 인터럽트의 성능이 저하된다.
다음으로, 실시 형태의 인터럽트 접수에 대하여 도 4를 사용하여 설명한다. 도 4는 실시 형태의 인터럽트 접수를 설명하는 개념도이며, 도 4의 (A)는 VM1의 동작 시에 VM1의 인터럽트 요구가 있는 경우의 도면이고, 도 4의 (B)는 VM1의 동작 시에 VM2의 인터럽트 요구가 있는 경우의 도면이다.
도 4의 (A)에 도시한 바와 같이, 실시 형태에서는, VM1의 동작 시에 VM1의 인터럽트 요구가 있었던 경우, VM1이 그 인터럽트의 접수는 가능하다. 또한, 도 4의 (B)에 도시한 바와 같이, 실시 형태에서는, VM1의 동작 시에, VM2의 인터럽트 요구가 있었던 경우, 인터럽트 요구는 VMM에 통지되고, VM1을 VMM으로 전환하고, 다시 VM2로 전환하여, VM2가 동작을 시작하고 인터럽트 접수가 가능해진다.
즉, 실행 중인 VM과 동일한 VM의 인터럽트가 입력되는 경우에 실행 중인 VM이 직접 인터럽트를 접수하고, 실행 중인 VM과 상이한 VM의 인터럽트가 입력되는 경우에 VMM을 기동함으로써, VMM이 인터럽트 요구가 있었던 VM으로 처리를 전환하여, 인터럽트를 접수한다.
바꾸어 말하면, CPU는, 동작 중인 VM에 대한 인터럽트를 수신한 경우에 동작 중인 VM이 인터럽트를 접수하고, 정지 중인 가상 머신에 대한 인터럽트를 수신한 경우에 VMM에 인터럽트를 접수시킨다.
구체적으로는, 실시 형태의 반도체 장치는 복수의 VM과 VMM을 저장하는 메모리와, 복수의 VM 및 VMM을 실행하는 CPU를 구비한다. CPU는 인터럽트를 처리하는 VM의 정보(제1 정보)와 실행 중인 VM의 정보(제2 정보)에 기초하여 인터럽트 처리를 실행한다. 즉, CPU는, 인터럽트를 처리하는 VM의 정보와 실행 중인 VM의 정보가 동일한 경우, 실행 중인 VM에 인터럽트 처리를 실행시키고, 인터럽트를 처리하는 VM의 정보와 실행 중인 VM의 정보가 상이한 경우, VMM에 실행 중인 VM을 전환시킨 후, 실행 중인 VM에 인터럽트 처리를 실행시킨다.
인터럽트를 처리하는 VM의 정보와 실행 중인 VM의 정보가 동일한 경우에, 실행 중인 VM 자신이 인터럽트를 접수할 수 있기 때문에, 일단, VMM에서 인터럽트를 접수하는 방법(비교예 2)에 비해 인터럽트 성능을 유지할 수 있다. 또한, 인터럽트를 처리하는 VM의 정보와 실행 중인 VM의 정보가 상이한 경우에도 VMM에서 인터럽트를 접수하는 것이 가능하기 때문에, VM의 스케줄 주기로 인터럽트를 접수하는 방법(비교예 1)에 비해, 인터럽트의 리얼타임성을 확보할 수 있다.
[실시예]
상기 실시 형태의 일례의 구성에 대하여 도 5를 사용하여 설명한다. 도 5는 실시예의 반도체 장치의 구성을 도시하는 블록도이다.
반도체 장치(1)는, 복수의 VM을 실행하는 CPU(10)와, 인터럽트 요구를 발생하는 인터럽트 요구원(IRS)(50)과, 인터럽트 요구원(50)으로부터 인터럽트 요구를 수취하고, CPU(10)를 향하여 인터럽트 요구를 출력하는 인터럽트 컨트롤러(INTC)(20)와, 복수의 VM 및 VMM의 소프트웨어 프로그램이 저장되는 메모리(MEMORY)(30)를 구비한다. 반도체 장치(1)는, 또한, 인터럽트를 처리하는 VM의 정보와 실행 중인 VM의 정보로부터 인터럽트에 대한 CPU(10)의 거동을 결정하는 이벤트 결정 장치(EDU)(40)와, 주변 장치(PERIPHERAL)(60)와, CPU(10)와 메모리(30)와 주변 장치(60)를 접속하는 버스(70)를 구비한다. 반도체 장치(1)는 단일의 반도체 칩으로 형성되는 마이크로컨트롤러이다. CPU(10)는 단일이어도 복수여도 된다. 이벤트 결정 장치(40)는 CPU(10)에 대응하여 설치되고, CPU(10)가 m개(CPU#1 내지 m)인 경우, 이벤트 결정 장치(40)도 m개(이벤트 결정 장치#1 내지 m) 구비한다. 제1 CPU(10)(CPU#1)는 VM1 내지 VMn1의 n1개의 VM을 실행하고, 제m CPU(10)(CPU#m)는 VM1 내지 VMnm의 nm개의 VM을 실행한다. 여기서, n1, nm은 자연수이며, n1은 nm과 동일한 경우도 상이한 경우도 있다.
도 5에서는 메모리(30)를 1개로 하였지만 복수여도 되고, CPU(10)로부터의 액세스 경로가 존재하면 버스(70)에 직접 연결되어 있지 않아도 된다. 메모리(30)는 SRAM 등의 휘발성 메모리여도 되고, 플래시 메모리 등의 불휘발성 메모리여도 된다. 또한, 인터럽트 컨트롤러(20)는 1개로 하였지만, 예를 들어 CPU마다 인터럽트 컨트롤러를 갖는 등 복수의 인터럽트 컨트롤러를 포함하고 있어도 된다. 또한, 모든 CPU(10)가 복수의 VM을 실행할 수 있도록 기재되어 있지만, 단일 VM만을 실행하는 CPU나, VM을 갖지 않는 CPU가 혼재되어 있어도 된다. 또한, 이벤트 결정 장치(40)는 CPU(10) 또는 인터럽트 컨트롤러(20)에 포함되어 있어도 된다. 또한, 도 5에 있어서, 인터럽트 요구원(50)은 단일 또는 복수의 주변 장치나 외부 단자이다.
도 6은 도 5의 반도체 장치에 있어서 CPU 및 이벤트 결정 장치를 하나씩 도시한 도면이다.
이후, CPU(10) 및 이벤트 결정 장치(40)가 하나이고, CPU(10)에서 2개의 VM이 동작하고 있는 경우를 예로 들어 설명을 행하지만, VM의 수는 2개에 한정되는 것은 아니다.
메모리(30)에는 VM1과 VM2와 VMM의 소프트웨어 프로그램이 배치되어 있다. VM1 및 VM2의 프로그램에는 인터럽트 처리 서브루틴(이하, ISR이라 함)이 포함되고, VMM의 프로그램에는 예외 핸들러(EHNDL)가 포함되어 있다. ISR에는, 서브루틴의 복귀처로 분기하기 위한 제1 종료 코드(ENDC1) 및 제2 종료 코드(ENDC2)가 포함되어 있다. CPU(10)에는, VM1, VM2, VMM 중 어느 소프트웨어 프로그램이 할당된다. VM1, VM2의 할당은, VMM이 행한다. CPU(10)는, 레지스터를 포함하고, VMM과 VM1, VM2 간의 통신을 행하기 위한 메시지 박스(MSGBX)(11)를 갖는다. 메시지 박스(11)는, VMM에 의해 판독 및 기입이 가능하고, VM에 의해 판독이 가능하다. 메시지 박스(11)는 실시예에서는, 레지스터를 포함하고, CPU(10)에 배치되는 것으로 하였지만, CPU로부터 액세스 가능한 기억 장치이면 되고, 예를 들어 메모리(30) 상이나 버스(70)에 접속된 주변 장치(60)에 배치되어도 된다.
인터럽트 요구원(50)으로부터 인터럽트가 통지되면, 인터럽트 컨트롤러(20)는 인터럽트의 정보(예를 들어 인터럽트 채널 번호)로부터 인터럽트를 처리하는 VM의 정보(PVM)를 확정한다.
이벤트 결정 장치의 일례에 대하여 도 7을 사용하여 설명한다. 도 7은 도 6의 이벤트 결정 장치의 구성을 도시하는 블록도이다. 이벤트 결정 장치(40)는 실행 중인 VM의 정보(EVM)와 인터럽트를 처리하는 VM의 정보(PVM)가 일치하는지 여부를 VM 비교 회로(VCMP)(41)에서 판정한다. 이 일치 정보(일치 판정 결과)와 인터럽트를 처리하는 VM의 정보(PVM)를 이벤트 지시(EVNT)로서 CPU(10)에 출력한다.
CPU(10)는 인터럽트 요구(IRQ)와 이벤트 지시(EVNT)를 수취하면 이벤트 지시(EVNT)에 따라 거동을 결정한다. 이벤트 지시(EVNT)에 포함되는 일치 판정 결과가 일치를 나타내고 있는 경우에는, CPU(10)는 메모리(30)로부터 인터럽트를 처리하는 VM의 ISR을 판독하고, 인터럽트 처리를 행한다. ISR은 메시지 박스(11)를 판독한다. 이 경우, 메시지 박스(11)에는 제1 종료 코드(ENDC1)를 선택하기 위한 지시가 VMM에 의해 저장되어 있다. 예를 들어, VMM은, 디폴트에서는 제1 종료 코드(ENDC1)를 선택하기 위한 지시를 미리 저장해 둔다. ISR은 메시지 박스(11)의 지시에 따라 제1 종료 코드(ENDC1)를 실행한다. 제1 종료 코드(ENDC1)에는, ISR로부터 인터럽트되기 전의 처리로 복귀하기 위한 분기가 포함되어 있고, 이것을 실행함으로써, 인터럽트 처리는 완료된다.
이벤트 지시(EVNT)에 포함되는 일치 판정 결과가 불일치를 나타내고 있는 경우에는, CPU(10)는 메모리(30)로부터 VMM의 예외 핸들러(EHNDL)를 판독한다. 예외 핸들러(EHNDL)에는 VM을 전환하기 위한 프로그램이 포함되어 있고, VMM은 프로그램에 따라 인터럽트를 처리하는 VM을 CPU(10)에 할당한다. CPU(10)에 할당된 VM은, 인터럽트 요구를 접수하고, 메모리(30)로부터 자신의 ISR을 판독하여 인터럽트 처리를 행한다. ISR은 메시지 박스(11)를 판독한다. 이 경우, 메시지 박스(11)에는 제2 종료 코드(ENDC2)를 선택하기 위한 지시가 VMM에 의해 저장되어 있다. 예를 들어, VMM은, VM을 전환하기 전에 메시지 박스(11)에 제2 종료 코드(ENDC2)를 선택하기 위한 지시를 저장해 둔다. ISR은 제2 종료 코드(ENDC2)를 실행한다. 제2 종료 코드(ENDC2)에는 CPU(10)에 VMM을 실행시키기 위한 처리는 포함되어 있고, 이것을 실행함으로써 VMM이 동작한다. VMM은 원하는 종료 처리를 행한다. 예를 들어, 메시지 박스(11)에 제1 종료 코드(ENDC1)를 선택하기 위한 지시를 저장하고, 인터럽트 요구가 입력되기 전에 실행된 VM을 CPU(10)에 할당한다.
CPU(10)에서 VM1이 실행되고 있는 경우를 예로 들어, 구체적으로 설명한다. 인터럽트 컨트롤러(20)는 입력된 인터럽트 요구로부터, 인터럽트를 처리하는 VM의 정보(PVM)를 확정한다.
인터럽트를 처리하는 VM의 정보(PVM)가 VM1인 경우, 이벤트 결정 장치(40)의 일치 판정 결과는 일치로 되고, 일치 정보와 인터럽트를 처리하는 VM의 정보(PVM)로서의 VM1이 이벤트 지시(EVNT)로서 출력된다. CPU(10)는 이벤트 지시(EVNT)에 따라, 메모리(30)로부터 VM1의 ISR을 판독하여 인터럽트 처리를 행한다. ISR은 메시지 박스(11)를 판독한다. 이 경우, 메시지 박스(11)에는 제1 종료 코드(ENDC1)를 선택하기 위한 지시가 VMM에 의해 저장되어 있다. ISR은 메시지 박스(11)의 지시에 따라 제1 종료 코드(ENDC1)를 실행하고, 인터럽트되기 전의 처리로 복귀한다.
인터럽트를 처리하는 VM의 정보(PVM)가 VM2인 경우, 이벤트 결정 장치(40)의 일치 판정 결과는 불일치로 되고, 일치 정보(불일치 정보)와 인터럽트를 처리하는 VM 정보(PVM)로서의 VM2가 이벤트 지시(EVNT)로서 출력된다. CPU(10)는 이벤트 지시(EVNT)에 따라, 메모리(30)로부터 VMM의 예외 핸들러(EHNDL)를 판독한다. VMM은 메시지 박스(11)에 제2 종료 코드(ENDC2)를 선택하기 위한 지시를 저장하고, VM2를 CPU(10)에 할당한다. CPU(10)는 메모리(30)로부터 VM2의 ISR을 판독하여 인터럽트 처리를 행한다. ISR은 메시지 박스(11)를 판독한다. 이 경우, 메시지 박스(11)에는 제2 종료 코드(ENDC2)를 선택하기 위한 지시가 VMM에 의해 저장되어 있다. ISR은 메시지 박스(11)의 지시에 따라 제2 종료 코드(ENDC2)를 실행하고, CPU(10)에 VMM을 할당한다. VMM은, 메시지 박스(11)에 제1 종료 코드(ENDC1)를 선택하기 위한 지시를 저장하고, VM1을 CPU(10)에 할당한다.
실시예에서는, 포어그라운드 시에 실행 중인 VM 자신이 인터럽트를 접수할 수 있기 때문에, 일단 VMM에서 인터럽트를 접수하는 방법(비교예 2)에 비해 인터럽트 성능을 유지할 수 있다. 또한, 인터럽트의 수신처 이외의 VM이 실행된 경우에도 VMM에서 인터럽트를 접수하는 것이 가능하기 때문에, VM의 스케줄 주기로 인터럽트를 접수하는 방법(비교예 1)에 비해, 인터럽트의 리얼타임성을 확보할 수 있다.
<변형예>
이하, 대표적인 변형예에 대하여, 몇 개를 예시한다. 이하의 변형예의 설명에 있어서, 상술한 실시예에서 설명된 것과 마찬가지의 구성 및 기능을 갖는 부분에 대해서는, 상술한 실시예와 마찬가지의 부호가 사용될 수 있는 것으로 한다. 그리고, 이러한 부분의 설명에 대해서는, 기술적으로 모순되지 않는 범위 내에 있어서, 상술한 실시예에 있어서의 설명이 적절히 원용될 수 있는 것으로 한다. 또한, 상술한 실시예의 일부, 및, 복수의 변형예의 전부 또는 일부가, 기술적으로 모순되지 않는 범위 내에 있어서, 적절히, 복합적으로 적용될 수 있다.
(변형예 1)
실시예에서는, 주변 장치(60)나 칩 외부 등의 인터럽트 요구원(50)으로부터 인터럽트가 통지되면, 인터럽트 컨트롤러(20)는 인터럽트의 정보(예를 들어 인터럽트 채널 번호)로부터 인터럽트를 처리하는 VM의 정보(PVM)를 확정하였지만, 이것에 한정되는 것은 아니다.
변형예 1의 인터럽트를 처리하는 VM의 정보(PVM)의 확정에 대하여 도 8, 도 9를 사용하여 설명한다. 도 8은 변형예 1의 인터럽트를 처리하는 VM의 정보의 확정을 설명하는 블록도이다. 도 9는 도 8의 VM 정보 테이블의 예를 도시하는 도면이다.
변형예 1에서는, 입력된 인터럽트의 종별마다 속성 정보(AI)를 갖는 인터럽트 컨트롤러(20A)와, 속성 정보(AI)와 인터럽트를 처리하는 VM의 정보(PVM)의 관계가 확정되는 VM 정보 테이블(VMT)(80)을 사용하여 인터럽트를 처리하는 VM의 정보(PVM)를 확정한다. 도 9에 도시한 바와 같이, VM 정보 테이블(80)은 속성 정보(AI)의 값으로부터 인터럽트를 처리하는 VM의 정보(PVM)를 확정한다. 도 9에서는, 속성 정보(AI)의 「0」, 「2」는 인터럽트를 처리하는 VM의 정보(PVM)의 VM1을 지정하고, 속성 정보(AI)의 「1」, 「3」은 인터럽트를 처리하는 VM의 정보(PVM)의 VM2를 지정하고 있다. 도 9의 예에서는 속성 정보(AI)의 값에 대하여 1개의 VM이 도시되어 있지만, 이것에 한정되는 것은 아니고 복수의 VM이 지정되어 있어도 된다. 또한, VM 정보 테이블(VMT)(80)은 이벤트 결정 장치(40)의 내부에 배치되어 있어도 된다.
(변형예 2)
실시예의 이벤트 결정 장치(40)는 구성이 간단하지만, 실행 중인 VM과 인터럽트 요구의 VM이 상이한 경우, 반드시 VM의 전환이 발생해 버린다. 이에 의해, 인터럽트 요구가 발생할 때마다 VM을 전환함으로써, 오버헤드가 발생하여, CPU(10)가 원래 실행하고 싶은 처리를 실행할 수 없을 가능성이 있다. 또한, 실제로는 모든 인터럽트가 실행 중인 VM을 전환해서까지 실행할 만큼 중요도가 높은 것은 아니다.
변형예 2에서는 인터럽트의 종별에 따라 VM의 전환 유무를 선택할 수 있다. 변형예 2의 이벤트 결정 장치에 대하여 도 10, 도 11을 설명한다. 도 10은 변형예 2의 반도체 장치의 구성을 도시하는 블록도이다. 도 11은 도 10의 이벤트 결정 장치의 구성을 도시하는 블록이다.
변형예 2의 반도체 장치(1B)는, 인터럽트 컨트롤러(20B) 및 이벤트 결정 장치(40B)를 제외하고, 실시예의 반도체 장치(1)와 마찬가지이다.
인터럽트 컨트롤러(20B)로부터 인터럽트 우선도(INTP)를 출력하고, 이벤트 결정 장치(40B)에 입력한다. 이벤트 결정 장치(40B)는, 일정 이상 우선도가 높은 인터럽트인지를 나타내는 역치(TH)를 저장하는 레지스터(REG)(44)와, 역치(TH)와 인터럽트 우선도(INTP)를 비교하는 우선도 비교 회로(PCMP)(42)와, 실행 중인 VM의 정보(EVM)와 인터럽트를 처리하는 VM의 정보(PVM)를 비교하는 VM 비교 회로(VCMP)(41)를 구비한다. 이벤트 결정 장치(40B)는, 또한, 우선도 비교 회로(42)의 우선도 비교 결과(PCO) 및 VM 비교 회로(41)의 비교 결과(VCO)로부터 이벤트 지시(EVNT)를 생성하는 이벤트 지시 생성 회로(EVNTG)(43)와, 인터럽트 요구(IRQ)의 CPU(10)에의 전달을 허가 금지하는 마스크 회로(MSKC)(45)를 구비한다. 비교 결과(VCO)는 일치 판정 결과 및 인터럽트를 처리하는 VM의 정보(PVM)이다. 이벤트 지시(EVNT)는 이벤트 지시 생성 결과(VM 전환의 유무) 및 인터럽트를 처리하는 VM의 정보(PVM)이다. 역치(TH)는 CPU(10) 등으로부터 소프트웨어 프로그램에 의해 레지스터(44)에 설정되어도 되고, 하드웨어에서 고정되어 있어도 된다. 소프트웨어 프로그램으로부터 설정할 수 있는 경우, 역치(TH)가 저장되는 레지스터(44)는 VM으로부터의 설정을 제한하는 기구를 가져도 된다.
변형예 2에서는, 인터럽트 우선도(INTP)와 역치(TH)로부터 우선도 비교 결과(PCO)를 생성한다. 우선도 비교 결과(PCO)에는, 예를 들어 인터럽트 우선도(INTP)가 역치(TH)보다 큰지 여부가 출력된다. 이벤트 지시 생성 회로(43)는, VM 비교 회로(VCMP)(41)의 비교 결과(VCO)와, 우선도 비교 회로(42)의 우선도 비교 결과(PCO)로부터 이벤트 지시(EVNT)를 생성한다. 이벤트 지시 생성 회로(43)는, 예를 들어 VM 비교 회로(41)의 비교 결과(VCO)가 불일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH)보다 큰 경우에는, VM의 전환을 행하도록 이벤트 지시(EVNT)를 생성하고, 또한, CPU(10)에의 인터럽트 요구(IRQ)의 출력을 허가하도록 신호(MSK)를 생성한다. 이벤트 지시 생성 회로(43)는, VM 비교 회로(41)의 결과가 불일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH) 이하인 경우에는, CPU(10)에 인터럽트 요구(IRQ)를 출력하지 않도록 신호(MSK)를 생성한다.
이벤트 지시 생성 회로(43)는, 예를 들어 VM 비교 회로(41)의 비교 결과(VCO)가 일치인 경우에는, VM의 전환을 행하지 않도록 이벤트 지시(EVNT)를 생성하고, 또한, CPU(10)에의 인터럽트 요구(IRQ)의 출력을 허가하도록 신호(MSK)를 생성한다.
변형예 2에서는 인터럽트 우선도(INTP)와 역치(TH)를 VM의 전환의 조건으로 하였지만 이것에 한정되는 것은 아니다. 예를 들어 인터럽트 컨트롤러(20)에 인터럽트의 각 채널에 대하여 VM 전환 가부를 허가할지 여부의 설정 기능을 배치하고, 그 설정을 이벤트 결정 장치에 출력하여, 이벤트 지시 생성을 행해도 된다.
실시예의 경우, 실행 중인 VM과 인터럽트 요구의 VM이 상이한 경우, 반드시 VM의 전환이 발생해 버린다. 이에 의해, 인터럽트 요구(IRQ)가 발생할 때마다 VM을 전환함으로써 오버헤드가 발생하여, CPU(10)가 원래 실행하고 싶은 처리를 실행할 수 없을 가능성이 있다. 변형예 2에서는, 인터럽트의 종별에 따라 VM의 전환 유무를 선택함으로써, 실행 중인 VM의 동작을 정지하더라도 실행시키고 싶은 인터럽트 요구(IRQ)에 한정하여 VM 전환을 행한다. 이에 의해, 과잉의 오버헤드의 발생을 억제하여 인터럽트 처리 성능을 향상시킬 수 있다. 또한, VM 전환을 행하지 않는 인터럽트의 경우, 제2 종료 코드(ENDC2)를 선택할 필요가 없기 때문에, 메시지 박스(11)를 판독하지 않고 제1 종료 코드(ENDC1)를 실행하도록 ISR을 구성해도 된다.
(변형예 3)
변형예 2에서는, 가장 우선도가 높은 인터럽트는, VM 비교 회로(41)의 비교 결과(VCO)가 불일치이고 또한, 그 인터럽트 우선도(INTP)가 역치(TH) 이하인 경우, CPU(10)는 이 인터럽트를 접수하지 않음에도 불구하고, 보다 우선도가 낮은 인터럽트는, VM 비교 회로(41)의 비교 결과(VCO)가 일치하는 경우에도, 그 인터럽트 우선도(INTP)가 역치(VH) 이하이기 때문에, 인터럽트가 보류되어 버리는 경우가 있다.
이것을 해결하는 일례(변형예 3)에 대하여 도 12, 도 13을 사용하여 설명한다. 도 12는 변형예 3의 인터럽트 컨트롤러의 구성을 도시하는 블록도이다. 도 13은 도 12의 이벤트 결정 장치의 구성을 도시하는 블록도이다.
변형예 3의 반도체 장치는, 이벤트 결정 장치를 인터럽트 컨트롤러(20C) 내에 설치하고 있는 점을 제외하고, 변형예 2의 반도체 장치(1B)와 마찬가지이다. 인터럽트 컨트롤러(20C)에 우선도 비교 회로를 배치하고 실행 중인 VM의 정보(EVM)를 입력한다. 인터럽트 컨트롤러(20C) 내의 각 인터럽트 요구(IRQ)에 대하여 인터럽트 우선도(INTP)와 역치(TH)의 비교를 실행하고, 역치(TH)보다 큰 인터럽트 우선도(INTP)의 인터럽트가 없는 경우에는, 실행 중인 VM의 인터럽트 요구(IRQ)를 출력한다.
구체적으로는, 인터럽트 컨트롤러(20C)는, 제1 채널의 인터럽트 요구원(21)의 이벤트 결정 장치(23)와, 제2 채널의 인터럽트 요구원(22)의 이벤트 결정 장치(24)와, 인터럽트 선택 회로(IRQ_SLCT)(25)를 구비한다. 제1 채널의 인터럽트 요구원(21)은 인터럽트 요구(IRQ)와 인터럽트를 처리하는 VM의 정보(PVM)와 인터럽트 우선도(INTP)를 이벤트 결정 장치(23)에 출력한다. 제2 채널의 인터럽트 요구원(22)은 인터럽트 요구(IRQ)와 인터럽트를 처리하는 VM의 정보(PVM)와 인터럽트 우선도(INTP)를 이벤트 결정 장치(24)에 출력한다.
이벤트 결정 장치(23, 24)는, 변형예 2의 이벤트 결정 장치(40B)와 마찬가지로, 일정 이상 우선도가 높은 인터럽트인지를 나타내는 역치(TH)를 저장하는 레지스터(REG)(44)와, 역치(TH)와 인터럽트 우선도(INTP)를 비교하는 우선도 비교 회로(PCMP)(42)와, 실행 중인 VM의 정보(EVM)와 인터럽트를 처리하는 VM의 정보(PVM)를 비교하는 VM 비교 회로(VCMP)(41)를 구비한다. 이벤트 결정 장치(23, 24)는, 또한, 우선도 비교 회로(42)의 우선도 비교 결과(PCO) 및 VM 비교 회로(41)의 비교 결과(VCO)로부터 이벤트 지시(EVNT)를 생성하는 이벤트 지시 생성 회로(EVNTG)(43C)와, 인터럽트 요구(IRQ)의 CPU(10)에의 전달을 허가 금지하는 마스크 회로(MSKC)(45)를 구비한다. 비교 결과(VCO)는 일치 판정 결과 및 인터럽트를 처리하는 VM의 정보(PVM)이다. 이벤트 지시(EVNT)는 이벤트 지시 생성 결과(VM 전환의 유무, 인터럽트 우선도가 역치 이하) 및 인터럽트를 처리하는 VM의 정보(PVM)이다.
이벤트 지시 생성 회로(43C)는, VM 비교 회로(VCMP)(41)의 비교 결과(VCO)와, 우선도 비교 회로(42)의 우선도 비교 결과(PCO)로부터 이벤트 지시(EVNT)를 생성한다. 이벤트 지시 생성 회로(43C)는, 예를 들어 VM 비교 회로(41)의 비교 결과(VCO)가 불일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH)보다 큰 경우에는, VM의 전환을 행하도록 이벤트 지시(EVNT)를 생성하고, 또한, CPU(10)에의 인터럽트 요구(IRQ)의 출력을 허가하도록 신호(MSK)를 생성한다. 이벤트 지시 생성 회로(43C)는, VM 비교 회로(41)의 결과가 불일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH) 이하인 경우에는, CPU(10)에 인터럽트 요구(IRQ)를 출력하지 않도록 신호(MSK)를 생성한다.
이벤트 지시 생성 회로(43C)는, 예를 들어 VM 비교 회로(41)의 비교 결과(VCO)가 일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH)보다 큰 경우에는, VM의 전환을 행하지 않도록 이벤트 지시(EVNT)를 생성하고, 또한, CPU(10)에의 인터럽트 요구(IRQ)의 출력을 허가하도록 신호(MSK)를 생성한다. 이벤트 지시 생성 회로(43C)는, VM 비교 회로(41)의 결과가 일치이고, 또한 인터럽트 우선도(INTP)가 역치(TH) 이하인 경우에는, 인터럽트 우선도가 역치(TH) 이하인 것 및 VM의 전환을 행하지 않도록 이벤트 지시(EVNT)를 생성하고, 또한, CPU(10)에 인터럽트 요구(IRQ)의 출력을 허가하도록 신호(MSK)를 생성한다.
인터럽트 선택 회로(25)는, 이벤트 결정 장치(23, 24)로부터, VM 비교 회로(41)의 비교 결과(VCO)가 일치하는 인터럽트 요구, 또는 VM 비교 회로(41)의 비교 결과(VCO)가 불일치 또한 VM의 전환을 행하도록 이벤트 지시(EVNT)가 생성된 인터럽트 요구를 수취한다. 인터럽트 선택 회로(25)는, 수취한 인터럽트 중 가장 인터럽트 우선도가 높은 인터럽트 요구(IRQ)를 선택하여 인터럽트 요구(IRQ) 및 이벤트 지시(EVNT)를 CPU(10)에 출력한다. 이때의 이벤트 지시(EVNT)는 VM 전환의 유무 및 인터럽트를 처리하는 VM의 정보(PVM)이다.
제1 채널의 인터럽트 요구원(21)으로부터 인터럽트 요구(IRQ), 인터럽트를 처리하는 VM의 정보(PVM)가 VM1, 인터럽트 우선도(INTP)가 역치(TH) 이하이고, 제2 채널의 인터럽트 요구원(22)으로부터 인터럽트 요구(IRQ), 인터럽트를 처리하는 VM의 정보(PVM)가 VM2, 인터럽트 우선도(INTP)가 역치(TH) 이하이고, 실행 중인 VM의 정보(EVM)가 VM2인 경우에 대하여, 설명한다.
이벤트 결정 장치(23)는, 제1 채널의 인터럽트 요구원(21)으로부터 인터럽트 요구(IRQ)가 인터럽트를 처리하는 VM의 정보(PVM)와 실행 중인 VM의 정보(EVM)가 상이하고, 인터럽트 우선도(INTP)가 역치(TH) 이하이므로, 인터럽트 요구(IRQ_CH1) 및 이벤트 지시(EVNT_CH1)를 인터럽트 선택 회로(25)에 출력하지 않는다(예를 들어, IRQ_CH1=0, EVNT_CH1=0).
한편, 이벤트 결정 장치(24)는 제2 채널의 인터럽트 요구원(22)으로부터 인터럽트 요구(IRQ)가 인터럽트를 처리하는 VM의 정보(PVM)와 실행 중인 VM의 정보(EVM)가 일치하고, 인터럽트 우선도(INTP)가 역치(TH) 이하이므로, 인터럽트 요구(IRQ_CH2) 및 이벤트 지시(EVNT_CH2)를 인터럽트 선택 회로(25)에 출력한다. 이때의 이벤트 지시(EVNT_CH2)의 VM 전환은 없으며, 인터럽트 우선도가 역치 이하이고, 인터럽트를 처리하는 VM의 정보(PVM)가 VM2이며, IRQ_CH2=1이다.
인터럽트 선택 회로(25)는, 이벤트 결정 장치(24)의 인터럽트 요구(IRQ_CH2) 및 이벤트 지시(EVNT_CH2)를 CPU(10)에 출력한다. 따라서, 제2 채널의 인터럽트 요구(IRQ) 및 이벤트 지시(EVNT)가 선택된다. 이때의 이벤트 지시(EVNT)의 VM 전환은 없으며, 인터럽트를 처리하는 VM의 정보(PVM)는 VM2이다. 이에 의해, 제1 채널의 인터럽트 우선도(INTP)가 제2 채널의 인터럽트 우선도(INTP)보다 높은 경우에도, 제2 채널의 인터럽트 요구(IRQ)가 CPU(10)에 출력된다. 바꿔 말하면, 인터럽트 우선도(INTP)가 높고, VM 전환이 없으며, 인터럽트를 처리하는 VM의 정보(PVM)가 실행 중인 VM의 정보(EVM)와 상이한 인터럽트 요구(IRQ)에 의해, 인터럽트 우선도(INTP)가 낮고, VM 전환이 없으며, 인터럽트를 처리하는 VM의 정보(PVM)가 실행 중인 VM의 정보(EVM)와 동일한 인터럽트 요구(IRQ)의 CPU(10)에의 출력이 저해되는 일이 없다.
(변형예 4)
실시예에서는 이벤트 지시(EVNT)로 VMM으로 천이하는 예외를 발생시킨 후, 제2 종료 코드(ENDC2)를 실행하여 VMM으로 처리를 되돌리고, CPU(10)에 인터럽트 전의 VM을 할당함으로써, VM의 스케줄러의 주기 제어를 유지하는 것이 가능하다. 한편 ISR을 실행한 시간만큼, 인터럽트된 VM의 타임 윈도우가 소비되어 버린다.
이것을 해결하는 변형예 4의 반도체 장치에 대하여 도 14, 도 15를 사용하여 설명한다. 도 14는 변형예 4의 반도체 장치의 구성을 도시하는 블록도이다. 도 15는 VMM 스케줄러의 동작을 설명하는 타이밍도이며, 도 15의 (A)는 VMM 스케줄러의 기본 동작을 도시하는 도면이고, 도 15의 (B)는 실시예의 인터럽트를 접수한 경우의 동작을 도시하는 도면이며, 도 15의 (C)는 변형예 4의 동작을 도시하는 도면이다.
변형예 4의 설명에 앞서서, VM 스케줄러의 기본 동작에 대하여 설명한다. 도 15의 (A)에 도시한 바와 같이, VM 스케줄러의 1시스템 주기(SYSTEM PERIOD)는, 먼저, VMM의 동작에서 시작되고, 그 후, VM1로 전환되어, VM1을 실행한다. VM1의 실행 개시로부터 소정 시간 후, VM1로부터 VMM으로 전환되고, 다시, VM2로 전환되어, VM2를 실행한다. VM2의 실행 개시로부터 소정 시간 후, VM2로부터 VMM으로 전환된다. 1시스템 주기의 마지막에는 시스템 주기 마진을 갖는다.
다음으로, 실시예의 반도체 장치의 구성에 있어서, VM1 실행 중에 VM2의 인터럽트 요구가 있고 이것을 접수한 경우의 VM 스케줄러의 동작에 대하여 설명한다. 도 15의 (B)에 도시한 바와 같이, VM 스케줄러의 1시스템 주기(SYSTEM PERIOD)는, 먼저, VMM의 동작에서 시작되고, 그 후, VM1로 전환되어, VM1을 실행한다. VM2의 인터럽트 요구가 있고 이것을 접수하기 위해, VM1로부터 VMM으로 전환되고, 다시, VM2로 전환되어 인터럽트 처리를 행한다. VM2의 인터럽트 처리 후, VM2로부터 VMM으로 전환되고, 다시 VM1로 전환되어, VM1을 실행한다. 최초의 VM1의 실행 개시로부터 소정 시간 후, VM1로부터 VMM으로 전환되고, 다시, VM2로 전환되어, VM2를 실행한다. VM2의 실행 개시로부터 소정 시간 후, VM2로부터 VMM으로 전환된다. 1시스템 주기의 마지막에는 시스템 주기 마진을 갖는다.
변형예 4에서는, VMM이 인터럽트 요구의 VM의 ISR을 실행하기 전에 퍼포먼스 계측 기능을 기동한다. 퍼포먼스 계측 기능은, 예를 들어 타이머(TIMER)(61)를 사용하여 VM의 실행 시간을 카운트하는 기능을 갖고 있고, VMM으로부터의 기동, 및 카운터값의 판독이 가능하다. 또한, 필요에 따라서 VM으로부터의 카운터의 제어를 금지하는 기구를 갖는다. 인터럽트 요구의 VM의 ISR을 실행한 후, VMM은 퍼포먼스 계측 기능의 결과를 확인한다. 예를 들어, 인터럽트 요구의 VM의 ISR의 처리에 요한 시간(Tcount)을 1시스템 주기의 최후의 시스템 주기 마진 기간에 있어서, 인터럽트 요구의 VM의 ISR의 처리에 요한 시간(Tcount)분만큼 인터럽트된 VM을 실행한다.
구체적으로, 변형예 4의 반도체 장치의 구성에 있어서, VM1 실행 중에 VM2의 인터럽트 요구가 있고 이것을 접수한 경우의 VM 스케줄러의 동작에 대하여 설명한다. 도 15의 (C)에 도시한 바와 같이, VM 스케줄러의 1시스템 주기(SYSTEM PERIOD)는 먼저, VMM의 동작에서 시작되고, 그 후, VM1로 전환되어, VM1을 실행한다. VM2의 인터럽트 요구가 있고 이것을 접수하기 위해, VM1로부터 VMM으로 전환되고, 다시, VM2로 전환되어 인터럽트 처리를 행한다. 여기서, VM1로부터 VMM으로 전환됨으로써, 타이머(TIMER)(61)의 계수를 개시한다(COUNT START). VM2의 인터럽트 처리 후, VM2로부터 VMM으로 전환되고, 다시 VM1로 전환되어, VM1을 실행한다. 여기서, VMM으로부터 VM1로 전환됨으로써, 타이머(TIMER)(61)의 계수를 정지한다(COUNT STOP). 최초의 VM1의 실행 개시로부터 소정 시간 후, VM1로부터 VMM으로 전환되고, 다시, VM2로 전환되어, VM2를 실행한다. VM2의 실행 개시로부터 소정 시간 후, VM2로부터 VMM으로 전환된다. 1시스템 주기의 최후의 시스템 주기 마진 기간에 있어서, 인터럽트 요구의 VM2의 ISR의 처리에 요한 시간(Tcount)분만큼 VM1을 실행한다. 이에 의해, VMM 및 VM2에 인터럽트된 VM1의 타임 윈도우를 보상할 수 있다.
또한, 인터럽트 요구의 VM의 ISR의 처리에 요한 시간(Tcount)을 VMM 스케줄러의 주기 제어용의 카운터(예를 들어, CPU(10) 내의 타이머(TIMER)(12))에 가산하여, 인터럽트된 VM의 타임 윈도우를, 원래 상정한 길이로 복원해도 된다. 이 경우, VM 스케줄러가 일순하는 데 걸리는 시간이 늘어나지만, VM 스케줄러에 대한 워치독 타이머(WDT)(62)를 설치하여 실행 시간 보호를 행해도 된다.
<응용예>
도 16은 실시예의 반도체 장치를 차량에 사용한 경우의 구성예를 도시하는 블록도이다. 도 16에 도시한 바와 같이, 차량(200)에는, 반도체 장치(SEMICONDUCTOR DEVICE)(1), 센서(SENSOR)(210) 및 카메라(CAMERA)(220)가 설치되어 있다. 반도체 장치(1)는 차량 탑재용의 칩이다. 센서(210)는 차량(200)의 소정의 정보를 취득한다. 또한, 카메라(220)는 차량 주변의 영상을 취득한다. 센서(210) 및 카메라(220)에 의해 취득된 정보는, 반도체 장치(1)에 공급된다. 반도체 장치(1)는, 센서(210) 및 카메라(220)에 의해 취득된 정보에 따라서, 소정의 처리를 실시한다. 반도체 장치(1) 대신에 변형예 1 내지 4 중 어느 하나의 반도체 장치를 사용해도 된다.
이상, 본 발명자에 의해 이루어진 발명을 실시 형태, 실시예 및 변형예에 기초하여 구체적으로 설명하였지만, 본 발명은 상기 실시 형태, 실시예 및 변형예에 한정되는 것은 아니고, 다양하게 변경 가능한 것은 물론이다.
1 : 반도체 장치
10 : CPU
11 : 메시지 박스
12 : 타이머
20 : 인터럽트 컨트롤러
20A : 인터럽트 컨트롤러
20B : 인터럽트 컨트롤러
20C : 인터럽트 컨트롤러
21 : 제1 채널의 인터럽트 요구원
22 : 제2 채널의 인터럽트 요구원
23 : 이벤트 결정 장치
24 : 이벤트 결정 장치
25 : 인터럽트 선택 회로
30 : 메모리
40 : 이벤트 결정 장치
40B : 이벤트 결정 장치
40C : 이벤트 결정 장치
41 : VM 비교 회로
42 : 우선도 비교 회로
43 : 이벤트 지시 생성 회로
43C : 이벤트 지시 생성 회로
44 : 레지스터
45 : 마스크 회로
50 : 인터럽트 요구원
60 : 주변 회로
61 : 타이머
62 : 워치독 타이머
70 : 버스
80 : VM 정보 테이블
200 : 차량
210 : 센서
220 : 카메라

Claims (20)

  1. 복수의 가상 머신과, 상기 복수의 가상 머신을 관리하는 가상 머신 매니저를 저장하는 메모리와,
    상기 복수의 가상 머신과 상기 가상 머신 매니저를 실행하는 CPU를 구비하고,
    상기 CPU는,
    인터럽트를 처리하는 가상 머신의 정보(제1 정보)와 실행 중인 가상 머신의 정보(제2 정보)가 동일한 경우, 실행 중인 가상 머신에 인터럽트 처리를 실행시키고,
    상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 가상 머신 매니저에 상기 실행 중인 가상 머신을 정지시키고, 또한 인터럽트를 처리하는 가상 머신을 동작시켜 인터럽트 처리를 실행시키는 반도체 장치.
  2. 제1항에 있어서,
    상기 복수의 가상 머신간의 통신을 행하는 메시지 박스를 더 구비하고,
    상기 복수의 가상 머신의 각각은, 서브루틴의 복귀처로 분기하기 위한 제1 종료 코드 및 제2 종료 코드를 포함하는 인터럽트 처리 서브루틴을 갖고,
    상기 가상 머신 매니저는 예외 핸들러를 갖고,
    상기 제1 종료 코드는 상기 인터럽트 처리 서브루틴으로부터 인터럽트되기 전의 처리로 복귀하기 위한 분기하는 처리를 갖고,
    상기 제2 종료 코드는 상기 CPU에 상기 가상 머신 매니저를 실행시키기 위한 처리를 갖고,
    상기 가상 머신 매니저는 상기 메시지 박스에 상기 제1 종료 코드를 선택하는 지시를 초기 설정하는 처리를 갖는 반도체 장치.
  3. 제2항에 있어서,
    상기 제1 정보와 상기 제2 정보가 동일한 경우, 상기 CPU는, 상기 실행 중인 가상 머신의 상기 인터럽트 처리 서브루틴을 판독하여, 인터럽트 처리를 행하고,
    상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 CPU는 상기 가상 머신 매니저의 상기 예외 핸들러를 판독하고, 상기 예외 핸들러는 상기 인터럽트를 처리하는 가상 머신을 상기 CPU에 할당하고, 상기 CPU는 상기 인터럽트를 처리하는 가상 머신의 인터럽트 처리 서브루틴을 판독하여, 인터럽트 처리를 행하는 반도체 장치.
  4. 제3항에 있어서,
    상기 실행 중인 가상 머신의 상기 인터럽트 처리 서브루틴은, 상기 제1 정보와 상기 제2 정보가 동일한 경우, 상기 메시지 박스의 지시에 따라 상기 제1 종료 코드를 실행하는 처리를 갖고,
    상기 가상 머신 매니저는, 상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 메시지 박스에 상기 제2 종료 코드를 선택하는 지시를 저장하는 처리를 갖고,
    상기 인터럽트를 처리하는 가상 머신의 상기 인터럽트 처리 서브루틴은, 상기 제1 정보와 상기 제2 정보가 상이한 경우, 상기 메시지 박스의 지시에 따라 상기 제2 종료 코드를 실행하는 처리를 갖는 반도체 장치.
  5. 제4항에 있어서,
    상기 제2 종료 코드는, 상기 메시지 박스에 상기 제1 종료 코드를 선택하는 지시를 저장하고, 인터럽트 요구가 입력되기 전에 실행된 가상 머신을 상기 CPU에 할당하는 처리를 갖는 반도체 장치.
  6. 제1항에 있어서,
    상기 제1 정보와 상기 제2 정보에 기초하여 이벤트 지시를 상기 CPU에 출력하는 장치를 더 구비하고,
    상기 이벤트 지시는, 인터럽트 요구와, 상기 제1 정보와 상기 제2 정보의 일치 불일치 정보와, 상기 인터럽트를 처리해야 할 가상 머신의 정보인 반도체 장치.
  7. 제6항에 있어서,
    인터럽트 채널로부터 상기 제1 정보를 확정하는 인터럽트 컨트롤러를 더 구비하고,
    상기 장치는, 상기 인터럽트 컨트롤러로부터의 상기 제1 정보와 상기 CPU로부터의 상기 제2 정보를 비교하는 비교 회로를 구비하는 반도체 장치.
  8. 제6항에 있어서,
    인터럽트 요구의 종별에 대응하는 속성 정보를 갖는 인터럽트 컨트롤러와,
    상기 속성 정보와 상기 제1 정보의 관계를 저장하는 가상 머신 정보 테이블을 더 구비하고,
    상기 장치는, 상기 가상 머신 정보 테이블로부터의 상기 제1 정보와 상기 CPU로부터의 상기 제2 정보를 비교하는 비교 회로를 구비하는 반도체 장치.
  9. 제6항에 있어서,
    인터럽트 채널로부터 확정하는 상기 제1 정보와 인터럽트 우선도를 갖는 인터럽트 컨트롤러를 더 구비하고,
    상기 장치는,
    상기 인터럽트 컨트롤러로부터의 상기 제1 정보와 상기 CPU로부터의 상기 제2 정보를 비교하는 비교 회로와,
    일정 이상 우선도가 높은 인터럽트인지를 나타내는 역치를 저장하는 레지스터와,
    상기 역치와 상기 인터럽트 우선도를 비교하는 우선도 비교 회로와,
    상기 우선도 비교 회로의 우선도 비교 결과 및 상기 비교 회로의 비교 결과로부터 상기 이벤트 지시를 생성하는 이벤트 지시 생성 회로와,
    상기 이벤트 지시 생성 회로로부터의 신호에 기초하여 인터럽트 요구의 상기 CPU에의 전달을 허가 금지하는 마스크 회로를 구비하는 반도체 장치.
  10. 제9항에 있어서,
    상기 이벤트 지시 생성 회로는,
    상기 비교 회로의 상기 비교 결과가 일치이고, 또한 상기 인터럽트 우선도가 상기 역치보다 큰 경우에는, 가상 머신의 전환을 행하지 않도록 상기 이벤트 지시를 생성하고, 또한, 상기 CPU에의 인터럽트 요구의 출력을 허가하는 신호를 상기 마스크 회로에 출력하고,
    상기 비교 회로의 상기 비교 결과가 일치이고, 또한 상기 인터럽트 우선도가 역치 이하인 경우에는, 상기 CPU에의 상기 인터럽트 요구의 출력을 금지하는 신호를 상기 마스크 회로에 출력하도록 구성되는 반도체 장치.
  11. 제6항에 있어서,
    상기 장치는, 복수의 인터럽트 요구에 대하여 인터럽트 우선도와 일정 이상 우선도가 높은 인터럽트인지를 나타내는 역치의 비교를 실행하고, 상기 역치보다 큰 상기 인터럽트 우선도의 인터럽트가 없는 경우에는, 실행 중인 가상 머신에의 인터럽트 요구를 출력하는 반도체 장치.
  12. 제11항에 있어서,
    상기 장치는,
    제1 채널의 인터럽트 요구원으로부터의 인터럽트 요구와 상기 제1 정보와 인터럽트 우선도를 입력하는 제1 이벤트 결정 장치와,
    제2 채널의 인터럽트 요구원으로부터의 인터럽트 요구와 상기 제1 정보와 인터럽트 우선도를 입력하는 제2 이벤트 결정 장치와,
    상기 제1 이벤트 결정 장치로부터의 인터럽트 요구 및 이벤트 지시와, 상기 제2 이벤트 결정 장치로부터의 인터럽트 요구 및 이벤트 지시를 선택하는 인터럽트 선택 회로를 구비하고,
    상기 제1 이벤트 결정 장치 및 상기 제2 이벤트 결정 장치의 각각은,
    상기 인터럽트 컨트롤러로부터의 상기 제1 정보와 상기 CPU로부터의 상기 제2 정보를 비교하는 비교 회로와,
    상기 역치를 저장하는 레지스터와,
    상기 역치와 상기 인터럽트 우선도를 비교하는 우선도 비교 회로와,
    상기 우선도 비교 회로의 우선도 비교 결과 및 상기 비교 회로의 비교 결과로부터 상기 이벤트 지시를 생성하는 이벤트 지시 생성 회로와,
    상기 이벤트 지시 생성 회로로부터의 신호에 기초하여 인터럽트 요구의 상기 CPU에의 전달을 허가 금지하는 마스크 회로를 구비하는 반도체 장치.
  13. 제12항에 있어서,
    상기 이벤트 지시 생성 회로는, 상기 비교 회로의 비교 결과가 일치하고, 또한 상기 인터럽트 우선도가 상기 역치 이하인 경우에는, 상기 인터럽트 우선도가 상기 역치 이하인 것 및 가상 머신의 전환을 행하지 않는 이벤트 지시를 생성하고, 또한, 상기 CPU에의 인터럽트 요구의 출력을 허가하는 신호를 상기 마스크 회로에 출력하는 반도체 장치.
  14. 제1항에 있어서,
    상기 가상 머신 매니저는, 인터럽트 요구가 없는 경우, 1시스템 주기 내에 상기 복수의 가상 머신의 각 가상 머신을 1회씩 상기 CPU에 할당하고, 상기 1시스템 주기 내의 최초의 가상 머신 전, 상기 각 가상 머신의 사이 및 최후의 가상 머신 후에 당해 가상 머신 매니저를 상기 CPU에 할당하고,
    상기 1시스템 주기의 마지막에 마진 기간을 갖는 반도체 장치.
  15. 제14항에 있어서,
    상기 가상 머신 매니저는, 정지 중인 가상 머신에 인터럽트 요구가 있는 경우, 실행 중인 가상 머신에 할당된 기간 중 상기 정지 중인 가상 머신의 인터럽트 처리에 의해 침식된 기간분을 상기 마진 기간 내에 할당하는 반도체 장치.
  16. 제1 및 제2 가상 머신과, 상기 제1 및 제2 가상 머신을 관리하는 가상 머신 매니저를 저장하는 메모리와,
    상기 제1 및 제2 가상 머신과 상기 가상 머신 매니저를 실행하는 CPU를 구비하고,
    상기 CPU는,
    상기 제1 가상 머신의 동작 중에 상기 제1 가상 머신에 대한 인터럽트를 수신한 경우, 상기 동작 중인 상기 제1 가상 머신에 인터럽트를 접수시키고,
    상기 제1 가상 머신의 동작 중에 정지 중인 상기 제2 가상 머신에 대한 인터럽트를 수신한 경우, 상기 가상 머신 매니저를 기동하고, 상기 가상 머신 매니저에 상기 제2 가상 머신으로 처리를 전환시켜 인터럽트를 접수시키는 반도체 장치.
  17. 제16항에 있어서,
    상기 CPU는 메시지 박스를 구비하고,
    상기 제1 및 제2 가상 머신의 각각은, 서브루틴의 복귀처로 분기하기 위한 제1 종료 코드 및 제2 종료 코드를 포함하는 인터럽트 처리 서브루틴을 갖고,
    상기 가상 머신 매니저는 예외 핸들러를 갖고,
    상기 제1 종료 코드는 상기 인터럽트 처리 서브루틴으로부터 인터럽트되기 전의 처리로 복귀하기 위한 분기하는 처리를 갖고,
    상기 제2 종료 코드는 상기 CPU에 상기 가상 머신 매니저를 실행시키기 위한 처리를 갖고,
    상기 가상 머신 매니저는 상기 메시지 박스에 상기 제1 종료 코드를 선택하는 지시를 초기 설정하는 처리를 갖는 반도체 장치.
  18. 제17항에 있어서,
    상기 CPU는, 상기 제1 가상 머신의 동작 중에 상기 제1 가상 머신에 대한 인터럽트를 수신한 경우, 상기 제1 가상 머신의 인터럽트 처리 서브루틴을 판독하여, 인터럽트 처리를 행하고,
    상기 제1 가상 머신의 상기 인터럽트 처리 서브루틴은, 상기 메시지 박스의 지시에 따라 상기 제1 종료 코드를 실행하는 처리를 갖는 반도체 장치.
  19. 제17항에 있어서,
    상기 CPU는, 상기 제1 가상 머신의 동작 중에 정지 중인 상기 제2 가상 머신에 대한 인터럽트를 수신한 경우, 상기 가상 머신 매니저의 상기 예외 핸들러를 판독하고,
    상기 예외 핸들러는 상기 제2 가상 머신을 상기 CPU에 할당하고, 상기 CPU는 상기 제2 가상 머신의 인터럽트 처리 서브루틴을 판독하여, 인터럽트 처리를 행하고,
    상기 가상 머신 매니저는, 상기 메시지 박스에 상기 제2 종료 코드를 선택하는 지시를 저장하는 처리를 갖고,
    상기 제2 가상 머신의 상기 인터럽트 처리 서브루틴은, 상기 메시지 박스의 지시에 따라 상기 제2 종료 코드를 실행하는 처리를 갖는 반도체 장치.
  20. 제19항에 있어서,
    상기 제2 종료 코드는, 상기 메시지 박스에 상기 제1 종료 코드를 선택하는 지시를 저장하고, 인터럽트 요구가 입력되기 전에 실행된 가상 머신을 상기 CPU에 할당하는 처리를 갖는 반도체 장치.
KR1020180166492A 2017-12-25 2018-12-20 반도체 장치 KR20190077235A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2017-247755 2017-12-25
JP2017247755A JP2019114097A (ja) 2017-12-25 2017-12-25 半導体装置

Publications (1)

Publication Number Publication Date
KR20190077235A true KR20190077235A (ko) 2019-07-03

Family

ID=65010428

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180166492A KR20190077235A (ko) 2017-12-25 2018-12-20 반도체 장치

Country Status (5)

Country Link
US (1) US10936357B2 (ko)
EP (1) EP3502887B1 (ko)
JP (1) JP2019114097A (ko)
KR (1) KR20190077235A (ko)
CN (1) CN109960567A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7327235B2 (ja) * 2020-03-24 2023-08-16 横河電機株式会社 フォールトトレラントシステム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013519169A (ja) 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化
JP2013210962A (ja) 2012-03-30 2013-10-10 Renesas Electronics Corp 半導体装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102067089A (zh) * 2008-06-24 2011-05-18 松下电器产业株式会社 虚拟计算机控制装置、虚拟计算机控制程序以及虚拟计算机控制电路
US8886862B2 (en) * 2011-08-11 2014-11-11 Mellanox Technologies Ltd. Virtualization of interrupts
JP5737050B2 (ja) * 2011-08-15 2015-06-17 富士通株式会社 情報処理装置、割込み制御方法および割込み制御プログラム
US8892802B2 (en) * 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US9772868B2 (en) * 2014-09-16 2017-09-26 Industrial Technology Research Institute Method and system for handling interrupts in a virtualized environment
KR20160039846A (ko) * 2014-10-02 2016-04-12 한국전자통신연구원 인터럽트 처리 시스템 및 인터럽트 처리 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013519169A (ja) 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化
JP2013210962A (ja) 2012-03-30 2013-10-10 Renesas Electronics Corp 半導体装置

Also Published As

Publication number Publication date
EP3502887B1 (en) 2021-10-27
EP3502887A3 (en) 2019-08-28
US10936357B2 (en) 2021-03-02
US20190196865A1 (en) 2019-06-27
CN109960567A (zh) 2019-07-02
JP2019114097A (ja) 2019-07-11
EP3502887A2 (en) 2019-06-26

Similar Documents

Publication Publication Date Title
JP4291301B2 (ja) ゲストソフトウェアの特権レベルに基づく1つの仮想マシンモニタへの移行の支援
US6128641A (en) Data processing unit with hardware assisted context switching capability
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
EP3241149A1 (en) Method to isolate real-time or safety-critical software and operating system from non-critical software and operating system
CN111324432A (zh) 处理器调度方法、装置、服务器及存储介质
US20220035664A1 (en) Reverse restartable sequences for lock polling scalability
CN113918336A (zh) 基于多核CPU的FreeRTOS运行任务方法及装置
KR102235142B1 (ko) 시간 집약적 명령의 처리
US11086658B2 (en) System performance enhancement with SMI on multi-core systems
KR20190077235A (ko) 반도체 장치
US7516311B2 (en) Deterministic microcontroller context arrangement
US10908952B2 (en) Preemptive scheduling of in-enclave threads
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method
US9959225B2 (en) Computer apparatus and control method of computer apparatus
US20230236901A1 (en) Safe critical section operations for virtual machines with virtual central processing unit overcommit
KR102285084B1 (ko) 이종의 멀티 cpu를 운용하는 시스템-온-칩 및 그 동작 방법
CN113569231B (zh) 多进程的mpu保护方法、装置及电子设备
US11507415B2 (en) Supporting invocations of the RDTSC (read time-stamp counter) instruction by guest code within a secure hardware enclave
Moisuc et al. Hardware event handling in the hardware real-time operating systems
US20230305872A1 (en) Efficient central processing unit overcommit for virtual machines with symmetric multi-processing
US20240134669A1 (en) Paravirtual pause loops in guest user space
US20240086219A1 (en) Transmitting interrupts from a virtual machine (vm) to a destination processing unit without triggering a vm exit
US20240231867A9 (en) Paravirtual pause loops in guest user space
JP2008077388A (ja) マルチプロセッサ制御システム、方法、およびプログラム
Borg Avoiding blocking system calls in a user-level thread scheduler for shared memory multiprocessors