KR20070115883A - 컴퓨터 시스템에서의 보강된 인터럽트 제어 방법, 이를구현하는 시스템, 명령어를 포함하는 컴퓨터-판독가능 매체및 하드웨어 제어 장치 - Google Patents
컴퓨터 시스템에서의 보강된 인터럽트 제어 방법, 이를구현하는 시스템, 명령어를 포함하는 컴퓨터-판독가능 매체및 하드웨어 제어 장치 Download PDFInfo
- Publication number
- KR20070115883A KR20070115883A KR1020077018278A KR20077018278A KR20070115883A KR 20070115883 A KR20070115883 A KR 20070115883A KR 1020077018278 A KR1020077018278 A KR 1020077018278A KR 20077018278 A KR20077018278 A KR 20077018278A KR 20070115883 A KR20070115883 A KR 20070115883A
- Authority
- KR
- South Korea
- Prior art keywords
- interrupt
- processor core
- source
- computer
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
본 발명의 여러가지 실시예는 AIC(augmented interrupt controller, 보강된 인터럽트 컨트롤러) 및 더욱 풍부한 인터럽트 정보(또는 "합성 인터럽트", 즉 "SI")를 제공하는 SIS(synthetic interrupt source, 합성 인터럽트 소스)에 관한 것이다. AIC 및 SIS는 인터럽트, 특히 가상 머신으로 전송되고 그에 의해 수신되는 인터럽트를 전송 및 수신하는 효율적인 수단을 제공한다. 이들 실시예 중 몇개는 구체적으로는 들어오는 인터럽트와 연관되어 있는 부가 정보를 받아 전달하도록 확장되어 있는 인터럽트 컨트롤러에 관한 것이다. 어떤 이러한 실시예에 있어서, 인터럽트 컨트롤러에 대한 메모리-매핑 확장은 인터럽트 전달의 일부인 부가 정보로 채워져 있는 데이터 구조체를 포함한다. 본 명세서에 기술된 실시예들 중 몇개가 가상 머신 시스템과 관련하여 기술되어 있지만, 본 명세서에 기술된 발명은 또한 전통적인 컴퓨터 시스템(가상화 계층이 없음)에도 적용될 수 있다.
인터럽트 컨트롤러, 가상 머신, 합성 인터럽트 소스, 가상 머신 모니터,
Description
본 발명은 일반적으로 인터럽트 컨트롤러 분야에 관한 것으로서, 상세하게는 가상 머신("프로세서 가상화"라고도 함)에서 사용하기 위한 인터럽트 컨트롤러에 관한 것이다. 보다 구체적으로는, 본 발명은 가상 머신 환경에서 사용하기 위한 보강된 인터럽트 컨트롤러는 물론 상기 보강된 인터럽트 컨트롤러에서 사용하기 위한 더욱 풍부한 인터럽트 정보를 포함하는 합성 인터럽트 소스에 관한 것이다.
컴퓨터는 특정의 시스템 명령어 세트를 실행하도록 설계되어 있는 범용 중앙 처리 장치(CPU)를 포함한다. 유사한 아키텍처 또는 설계 규격을 갖는 일군의 프로세서는 동일 프로세서 계열의 구성원인 것으로 생각될 수 있다. 현재의 프로세서 계열의 예로는 미국 아리조나주 피닉스 소재의 모토롤라사에 의해 제조된 모토롤라 680X0 프로세서 계열, 미국 캘리포니아주 서니베일 소재의 인텔사에 의해 제조된 인텔 80X86 프로세서 계열, 및 모토롤라사에 의해 제조되고 미국 캘리포니아주 쿠퍼티노 소재의 애플 컴퓨터사에 의해 제조된 컴퓨터에서 사용되는 PowerPC 프로세 서 계열이 있다. 일군의 프로세서가 이들의 유사한 아키텍처 및 설계 고려사항으로 인해 동일 계열에 있을 수 있지만, 프로세서는 그의 클럭 속도 및 다른 성능 파라미터에 따라 계열 내에서 아주 다양할 수 있다.
각각의 계열의 마이크로프로세서는 그 프로세서 계열에 고유한 명령어를 실행한다. 프로세서 또는 한 계열의 프로세서들이 실행할 수 있는 전체적인 일련의 명령어를 프로세서의 명령어 세트라고 한다. 예로서, 인텔 80X86 프로세서 계열에 의해 사용되는 명령어 세트는 PowerPC 프로세서 계열에 의해 사용되는 명령어 세트와 호환되지 않는다. 인텔 80X86 명령어 세트는 CISC(Complex Instruction Set Computer, 복합 명령어 세트 컴퓨터) 포맷에 기초하고 있다. 모토롤라 PowerPC 명령어 세트는 RISC(Reduced Instruction Set Computer, 축소 명령어 세트 컴퓨터) 포맷에 기초하고 있다. CISC 프로세서는 많은 수의 명령어를 사용하며, 이들 중 일부는 꽤 복잡한 기능을 수행할 수 있지만 일반적으로 실행하는 데 많은 클럭 사이클을 필요로 할 수 있다. RISC 프로세서는 훨씬 높은 속도로 실행되는 더욱 간단한 일련의 기능을 수행하기 위해 적은 수의 이용가능한 명령어를 사용한다.
또한, 컴퓨터 시스템들 간에 프로세서 계열이 독자적인 결과, 일반적으로 컴퓨터 시스템의 하드웨어 아키텍처의 나머지 요소들 간에 호환성이 없게 된다. 인텔 80X86 프로세서 계열 중의 프로세서로 제조된 컴퓨터 시스템은 PowerPC 프로세서 계열 중의 프로세서로 제조된 컴퓨터 시스템의 하드웨어 아키텍처와 다른 하드웨어 아키텍처를 갖게 된다. 프로세서 명령어 세트의 독자성 및 컴퓨터 시스템의 하드웨어 아키텍처로 인해, 응용 소프트웨어 프로그램은 일반적으로 특정의 운영 체제를 실행하는 특정의 컴퓨터 시스템 상에서 실행되도록 작성된다.
프로세서 가상화
컴퓨터 제조업자는 적은 것보다는 더 많은 애플리케이션이 컴퓨터 제조업자의 제품과 연관된 마이크로프로세서 계열 상에서 실행되게 함으로써 그의 시장 점유율을 최대화하고자 한다. 컴퓨터 시스템 상에서 실행될 수 있는 운영 체제 및 응용 프로그램의 수를 증가시키기 위해, 호스트(host)라고 하는 한 유형의 CPU를 갖는 주어진 컴퓨터가 호스트 컴퓨터로 하여금 게스트(guest)라고 하는 관계없는 유형의 CPU의 명령어를 에뮬레이트할 수 있게 해주는 에뮬레이터 프로그램을 포함하는 기술 분야가 개발되었다. 따라서, 호스트 컴퓨터는 하나 이상의 호스트 명령어가 주어진 게스트 명령어에 응답하여 호출되게 하는 애플리케이션을 실행한다. 따라서, 호스트 컴퓨터는 그 자신의 하드웨어 아키텍처용으로 설계된 소프트웨어 및 관계없는 하드웨어 아키텍처를 갖는 컴퓨터용으로 작성된 소프트웨어 둘다를 실행할 수 있다. 보다 구체적인 예로서, 예를 들어, 애플 컴퓨터사에 의해 제조된 컴퓨터 시스템은 PC-기반 컴퓨터 시스템용으로 작성된 운영 체제 및 프로그램을 실행할 수 있다. 또한, 단일의 CPU 상에서 다수의 비호환 운영 체제를 동시에 동작시키기 위해 에뮬레이터 프로그램을 사용하는 것이 가능할 수도 있다. 이러한 구성에서, 각각의 운영 체제가 서로 비호환이지만, 에뮬레이터 프로그램은 2개의 운영 체제 중 하나를 호스팅할 수 있으며, 그렇지 않았으면 비호환이었을 운영 체제를 동일한 컴퓨터 시스템 상에서 동시에 실행될 수 있게 해준다.
게스트 컴퓨터 시스템이 호스트 컴퓨터 시스템 상에서 에뮬레이트될 때, 게 스트 컴퓨터 시스템은 '가상 머신'이라고 말해지는데, 그 이유는 게스트 컴퓨터 시스템이 호스트 컴퓨터 시스템에서 한 특정의 하드웨어 아키텍처의 동작의 순수한 소프트웨어 표현으로서만 존재하기 때문이다. 용어 '에뮬레이터', '가상 머신', 및 '프로세서 에뮬레이션'은 전체 컴퓨터 시스템의 하드웨어 아키텍처를 모방하거나 에뮬레이트할 수 있음을 나타내기 위해 때때로 상호 교환가능하게 사용된다. 예로서, 미국 캘리포니아주 산마테오 소재의 Connectix Corporation에 의해 제작된 가상 PC 소프트웨어는 인텔 80X86 펜티엄 프로세서 및 여러가지 마더보드 컴포넌트 및 카드를 포함하는 전체 컴퓨터를 에뮬레이트한다. 이들 컴포넌트의 동작은 호스트 머신 상에서 실행되고 있는 가상 머신에서 에뮬레이트된다. PowerPC 프로세서를 갖는 컴퓨터 시스템 등의 호스트 컴퓨터의 운영 체제 소프트웨어 및 하드웨어 아키텍처 상에서 실행되는 에뮬레이터 프로그램은 전체 게스트 컴퓨터 시스템의 동작을 모방한다.
에뮬레이터 프로그램은 호스트 머신의 하드웨어 아키텍처와 에뮬레이트된 환경 내에서 실행되는 소프트웨어에 의해 전송되는 명령어 사이의 인터체인지로서 기능한다. 이 에뮬레이트된 환경은 VMM(virtual machine monitor, 가상 머신 모니터)에 의해 생성될 수 있으며, 이 VMM은 하드웨어 바로 위에서 실행되는 소프트웨어 계층으로서 VMM이 가상화하고 있는 하드웨어와 동일한 인터페이스를 노출시킴으로써 머신의 모든 자원을 가상화한다(이에 의해 VMM이 그의 바로 위에서 실행되는 운영 체제 계층에 의해 인식되지 못한 채로 있을 수 있게 된다). 이 구성에서, 호스트 운영 체제(HOS) 및 VMM은 동일한 물리적 하드웨어 상에서 나란히 실행될 수 있다. 다른 대안으로서, 에뮬레이터 프로그램은 물리적 컴퓨터 하드웨어 상에서 직접 실행되면서 또하나의 하드웨어 구성을 에뮬레이트하는 HOS 자체일 수 있다. 이 실시예의 특정의 구현에서, HOS 소프트웨어는 구체적으로 "하이퍼바이저(hypervisor)"의 한 실시예를 포함할 수 있다.
하이퍼바이저는 HOS의 커널 레벨 근방에 존재하면서 HOS 이외의 하나 이상의 2차 운영 체제가 컴퓨터 시스템의 물리적 프로세서(들)를 비롯한 컴퓨터 시스템의 하드웨어를 사용할 수 있게 해주는 제어 프로그램이다. 하이퍼바이저는, 2차 운영 체제가 실제로는 다른 하드웨어 및/또는 운영 체제 환경에서 동작하고 있을 수 있고 또 HOS가 컴퓨터 시스템의 논리적 제어에 있을 수 있더라도, 2차 운영 체제가 그의 통상적인 하드웨어 및/또는 운영 체제 환경에서 동작하고 있으며 또 컴퓨터 시스템의 논리적 제어 내에 있는 것으로 생각하도록, 2차 운영 체제에 대한 운영 환경을 에뮬레이트한다. 이것이 중요한 이유는 많은 운영 체제가 그 운영 체제가 컴퓨터 시스템의 하드웨어의 배타적인 논리적 제어에 있는 것처럼 동작해야만 하도록 기능하기 때문이다. 따라서, 다수의 운영 체제가 단일의 컴퓨터 시스템 상에서 동시에 기능하기 위해서는, 각각의 운영 체제가 전체 컴퓨터 시스템에 대한 배타적 제어를 갖는 것처럼 기능하도록, 각각의 운영 체제의 하이퍼바이저가 나머지 운영 체제의 존재를 감추는 기능을 해야만 한다.
간단함을 위해, VMM 및 하이퍼바이저(이에 한정되지 않음)를 비롯한 프로세서 가상화 프로그램을 본 명세서에서 총괄하여 "가상화기(virtualizer)"라고 한다. 게다가, 하이퍼바이저와 관련하여 본 명세서에 개시된 발명의 어떤 측면이라도 VMM(또는 다른 가상화기)에 똑같이 유효하고 개시되는 것으로 가정되며, 그 역도 마찬가지이다.
인터럽트 컨트롤러
당업자라면 잘 알고 있는 바와 같이, 일반적인 컴퓨터 시스템(예를 들어, 단일의 운영 체제를 실행하는 물리적 하드웨어)에서, 하드웨어 장치(네트워크 카드, 프린터, 다른 주변 장치, 기타)는 각각의 프로세서 코어 상에서 실행되는 프로세서 코어 소프트웨어와 인터럽트를 통해 통신을 한다. 그렇지만, 각각의 프로세서 코어와 시스템 내의 나머지 하드웨어 사이에 몇가지 종류의 상호 작용이 있지만, 코어 외부로부터 개시되는 이러한 상호 작용 전부는 단일의 간단한 인터럽트 전달 메카니즘을 통해 지나간다. 게다가, 종래의 시스템에서, 인터럽트 벡터의 수는 아주 제한되어 있고, 이에 의해 이벤트들을 각 그룹에 대한 하나의 공통 인터럽트 하에 그룹화할 필요가 있게 된다. 따라서, 프로세서 코어 소프트웨어가 인터럽트를 수신할 때, 인터럽트의 원인과 상황을 식별하기 위해 몇개의 단계를 거쳐야만 하는데, 그 이유는 기존의 인터럽트 전달 메카니즘이 일반적으로 인터럽트의 소스 또는 원인을 신뢰성있게 식별하기 위한 어떤 대책도 가지고 있지 않기 때문이다. 게다가, 단일의 인터럽트가 단일의 물리 또는 가상 장치로부터의 몇개의 유사한 이벤트들 중 단지 하나만을 나타낼 수도 있다. 예를 들어, 상위 추상화 레벨에서 구현된 메시징 시스템은 동작하기 위해 수백 또는 수천개의 개별적으로 어드레싱가능한 신호를 필요로 할 수 있으며, 코어 프로세서 소프트웨어는 어느 어드레싱가능 신호가 이들 유형의 장치로부터 수신된 인터럽트에 대응하는지를 결정해야만 한다.
시스템이 하이퍼바이저, VMM 또는 다른 머신 가상화 기술(총괄하여 "가상화기") 하에서 실행되고 있는 경우, 가상 장치에 의해 파티션(partition)(가상 머신의 인스턴스(instance))에 제공되는 서비스는 일반적으로 일반적인 컴퓨터 시스템에서의 하드웨어 장치와 동일한 인터럽트 메카니즘을 통해 그 파티션에 신호를 한다. 그렇지만, 가상 머신 환경에서, 가상화된 가상 머신에 대한 장치 뿐만 아니라 각각의 가상 머신에 대한 프로세서 코어(들)도 있다. 따라서, 각각의 이러한 가상화된 프로세서 코어에 대한 코어 프로세서 소프트웨어는 인터럽트(이들 인터럽트는 하드웨어 장치 및 가상화된 장치 둘다에 의해 발생될 수 있으며 후자는 소프트웨어로만 존재함)를 실제로 처리하기 위해 가상화기(예를 들어, 하이퍼바이저 또는 VMM)와 통신을 해야만 한다는 사실에 의해 더 복잡하게 된다. 기존의 인터럽트 전달 메카니즘이 일반적으로 인터럽트, 특히 소프트웨어에의 의해 발생된 인터럽트의 소스를 신뢰성있게 식별하기 위한 대책을 가지고 있지 않기 때문에, 가상 환경에서 인터럽트의 소스 및 속성을 식별하는 데 필요한 프로세서 자원은 실질적으로 더 많은 비용이 든다. 게다가, 인터럽트와 연관된 데이터는 일반적으로 하드웨어 및 시스템 소프트웨어에 의해 광범위하게 액세스될 수 있어야만 하며, 가상화기가 다수의 상호 신뢰하지 않는 시스템 소프트웨어 개체들을 호스팅하는 일반적인 상황 하에서 신뢰할 수 있는 전달이 어렵다. (이러한 상황 하에서, 정보를 인터럽트와 함께 파티션으로 푸시할 필요가 있으며, 모든 파티션이 동일한 인터럽트 관리 방식에 참여하고 있을 때에도, 이들 인터럽트와 연관된 모든 정보는 이웃 파티션에서의 악의적인 운영 체제로부터 보호될 필요가 있다.)
따라서, 인터럽트가 각각의 VM에서 몇개의 서로 다른 소스(하드웨어 및 소프트웨어 소스 둘다를 포함함)[이들 중 다수는 하드웨어 버스 상의 장치보다 "훨씬 더 멀리" 있음(따라서 완료하는 데 더 많은 물리적 프로세서 사이클을 필요로 함)]로부터 올 수 있기 때문에, 기술 분야에서 머신 가상화 시스템의 성능 및 효용성을 향상시키기 위해 더 많은 정보를 포함하는 더욱 풍부한 인터럽트 전달 메카니즘이 필요하다.
본 발명의 여러가지 실시예는 AIC(augmented interrupt controller, 보강된 인터럽트 컨트롤러) 및 더욱 풍부한 인터럽트 정보(또는 "합성 인터럽트", 즉 "SI")를 제공하는 SIS(synthetic interrupt source, 합성 인터럽트 소스)에 관한 것이다. AIC 및 SIS는 인터럽트, 특히 가상 머신으로 전송되고 그에 의해 수신되는 인터럽트를 전송 및 수신하는 효율적인 수단을 제공한다. 이들 실시예 중 몇개는 구체적으로는 들어오는 인터럽트와 연관되어 있는 부가 정보를 받아 전달하도록 확장되어 있는 인터럽트 컨트롤러에 관한 것이다. 어떤 이러한 실시예에 있어서, 인터럽트 컨트롤러에 대한 메모리-매핑 확장은 인터럽트 전달의 일부로서 부가 정보로 채워지는 데이터 구조체를 포함한다. 본 명세서에 기술된 실시예들 중 몇개가 가상 머신 시스템과 관련하여 개시되어 있지만, 본 명세서에 개시된 발명은 또한 전통적인 컴퓨터 시스템(가상화 계층이 없음)에도 적용될 수 있다.
도 1은 본 발명의 측면들이 구현될 수 있는 컴퓨터 시스템을 나타낸 블록도.
도 2는 컴퓨터 시스템에서 에뮬레이트된 운영 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타낸 도면.
도 3a는 호스트 운영 체제에 의해 (직접적으로 또는 하이퍼바이저를 통해) 에뮬레이션이 수행되는 가상화된 컴퓨팅 시스템을 나타낸 도면.
도 3b는 호스트 운영 체제와 나란히 실행되는 가상 머신 모니터에 의해 에뮬레이션이 수행되는 대안적인 가상화된 컴퓨팅 시스템을 나타낸 도면.
도 4a는 일반적인 하드웨어 인터럽트 컨트롤러("APIC(advanced programmable interrupt controller, 개선된 프로그램가능 인터럽트 컨트롤러)")를 나타낸 블록도.
도 4b는 일반적인 가상 인터럽트 컨트롤러, 즉 가상 머신 내의 가상화된 APIC를 나타낸 블록도.
도 5a는 일반적인 인터럽트 프로세스 흐름에 대한 프로세스 흐름도.
도 5b는 본 발명의 몇개의 실시예에 존재하는 보강된 인터럽트 컨트롤러를 사용하는 향상된 개념적 인터럽트 처리 프로세스에 대한 프로세스 흐름도.
도 6a는 인터럽트 컨트롤러 인터페이스가 들어오는 인터럽트(예를 들어, 메시지 신호 방식 인터럽트)와 연관된 부가 정보를 받아 신뢰성있게 전달하도록 확장되어 있는, 본 발명의 어떤 실시예들에 대한 보강된 인터럽트 컨트롤러를 나타낸 블록도.
도 6b는 인터럽트 컨트롤러 인터페이스가 들어오는 인터럽트와 연관된 부가 정보를 받아 신뢰성있게 전달하도록 확장되어 있는(인터럽트에 관한 부가 정보는 인터럽트의 소스에 의해 공유 메모리 장소에 배치됨), 본 발명의 어떤 실시예들에 대한 보강된 인터럽트 컨트롤러를 나타낸 블록도.
이상의 요약은 물론 이하의 양호한 실시예에 대한 상세한 설명은 첨부 도면과 관련하여 읽어보면 더 잘 이해된다. 본 발명을 설명하기 위해, 도면에 본 발명의 예시적인 구성이 도시되어 있지만, 본 발명은 개시된 특정의 방법 및 수단으로 한정되지 않는다.
법적 요건을 만족시키도록 구체적으로 발명 대상이 기술되어 있다. 그렇지만, 이 설명 자체는 본 특허의 범위를 제한하기 위한 것이 아니다. 오히려, 발명자는, 다른 현재 또는 미래의 기술과 관련하여 본 문서에 기술된 것들과 유사한 다른 단계 또는 단계들의 조합을 포함하기 위해, 청구된 발명 대상이 다른 방식으로도 실시될 수 있음을 생각하고 있다. 게다가, 용어 "단계"가 본 명세서에서는 이용되는 방법의 서로 다른 요소를 함축하기 위해 사용될 수 있지만, 이 용어는, 개별적인 단계들의 순서가 명시적으로 기술되어 있지 않는 한/기술되어 있는 경우를 제외하고는, 본 명세서에 개시된 여러가지 단계들 간의 임의의 특정 순서를 암시하는 것으로 해석되어서는 안된다.
컴퓨터 환경
본 발명의 많은 실시예들이 컴퓨터 상에서 실행될 수 있다. 도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적당한 컴퓨팅 환경에 대한 간략한 일반적인 설명을 제공하기 위한 것이다. 꼭 그럴 필요는 없지만, 본 발명이 클라이언트 워크 스테이션 또는 서버 등의 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어와 일반적으로 관련하여 기술되어 있다. 일반적으로, 프로그램 모듈은 특정의 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조체, 기타를 포함한다. 게다가, 당업자라면 본 발명이 핸드 헬드 장치, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 기타를 비롯한 다른 컴퓨터 시스템 구성에서 실시될 수 있다는 것을 잘 알 것이다. 본 발명은 또한 작업이 통신 네트워크를 통해 연결되어 있는 원격 프로세싱 장치들에 의해 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘다에 위치해 있을 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 프로세싱 유닛(21), 시스템 메모리(22), 및 시스템 메모리를 비롯한 여러가지 시스템 컴포넌트를 프로세싱 유닛(21)에 연결시키는 시스템 버스(23)를 포함하는 종래의 퍼스널 컴퓨터(20), 기타를 포함한다. 시스템 버스(23)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함한다. 시동 중과 같은 때에 퍼스널 컴퓨터(20) 내의 요소들 사이에서 정보를 전달하는 데 도움을 주는 기본적인 루틴을 포함하는 기본 입/출력 시스템(BIOS)(26)은 ROM(24)에 저장되어 있다. 퍼스널 컴퓨터(20)는 또한 하드 디스크(도시 생략)로부터 판독하고 그에 기록 하는 하드 디스크 드라이브(27), 분리형 자기 디스크(29)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(28), 및 CD ROM이나 다른 광학 매체 등의 분리형 광학 디스크(31)로부터 판독하거나 그에 기록하는 광학 디스크 드라이브(30)를 포함할 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광학 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광학 드라이브 인터페이스(34)에 의해 각각 시스템 버스(23)에 연결되어 있다. 이들 드라이브 및 그의 연관된 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈 및 퍼스널 컴퓨터(20)에 대한 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경이 하드 디스크, 분리형 자기 디스크(29) 및 분리형 광학 디스크(31)를 이용하고 있지만, 당업자라면 자기 카세트, 플래쉬 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지(Bernoulli cartridge), 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 기타 등등의 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체도 역시 예시적인 운영 환경에서 사용될 수 있다는 것을 잘 알 것이다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램(36), 기타 프로그램 모듈(37) 및 프로그램 데이터(38)를 비롯한 다수의 프로그램 모듈이 하드 디스크, 자기 디스크(29), 광학 디스크(31), ROM(24) 또는 RAM(25) 상에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42) 등의 입력 장치를 통해 퍼스널 컴퓨터(20)에 명령 및 정보를 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크, 조이스 틱, 게임 패드, 위성 안테나, 스캐너, 기타를 포함할 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 연결되어 있는 직렬 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 연결되어 있지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus, 범용 직렬 버스) 등의 다른 인터페이스에 의해 연결될 수 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치도 역시 비디오 어댑터(48) 등의 인터페이스를 통해 시스템 버스(23)에 연결되어 있다. 모니터(47) 이외에, 퍼스널 컴퓨터는 일반적으로 스피커 및 프린터 등의 다른 주변 출력 장치(도시 생략)를 포함한다. 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56) 및 SCSI 버스(56)에 연결된 외부 저장 장치(62)를 포함한다.
퍼스널 컴퓨터(20)는 원격 컴퓨터(49) 등의 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 또하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치(peer device) 또는 다른 통상의 네트워크 노드일 수 있으며, 도 1에 메모리 저장 장치(50)만이 도시되어 있지만, 일반적으로 퍼스널 컴퓨터(20)에 대해 상기한 요소들 중 다수 또는 그 전부를 포함한다. 도 1에 도시된 논리적 연결은 LAN(local area network, 근거리 통신망)(51) 및 WAN(wide area network, 원거리 통신망)(52)을 포함한다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(20)는 네트워크 인터페이 스 또는 어댑터(53)를 통해 LAN(51)에 연결되어 있다. WAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(20)는 일반적으로 모뎀(54) 또는 인터넷 등의 원거리 통신망(52)을 통해 통신을 설정하는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 연결된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(20)에 대해 도시된 프로그램 모듈 또는 그의 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결이 예시적인 것이며 컴퓨터들 간에 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 잘 알 것이다. 게다가, 본 발명의 많은 실시예들이 컴퓨터화된 시스템에 특히 아주 적합한 것으로 생각되고 있지만, 본 문서에서의 어느 것도 본 발명을 이러한 실시예로 한정하려는 것이 아니다.
가상 머신
개념적 측면에서 볼 때, 컴퓨터 시스템은 일반적으로 기초가 되는 하드웨어 계층 상에서 실행되는 하나 이상의 소프트웨어 계층을 포함한다. 이러한 계층화는 추상화로 인해 행해진다. 주어진 소프트웨어 계층에 대해 인터페이스를 정의함으로써, 그 계층은 그 위에 있는 다른 계층들과 달리 구현될 수 있다. 잘 설계된 컴퓨터 시스템에서, 각각의 계층은 그 바로 아래에 있는 계층에 관해서만 알고 있다(또 그에만 의존하고 있다). 이것은 계층 또는 "스택"(다수의 인접층들)이 상기 계층 또는 스택 상부의 층들에 부정적인 영향을 주지 않고 대체될 수 있게 해준다. 예를 들어, 소프트웨어 애플리케이션(상위 계층)은 파일을 어떤 유형의 영구 저장 장치에 기록하기 위해 일반적으로 운영 체제(하위 계층)의 하위 레벨에 의존하며, 이들 애플리케이션은 플로피 디스크, 하드 드라이브 또는 네트워크 폴더에 데이터를 기록하는 것 간의 차이를 이해할 필요가 없다. 이 하위 계층이 파일을 기록하기 위해 새로운 운영 체제 컴포넌트로 대체되는 경우, 상위 계층 소프트웨어 애플리케이션의 동작은 영향을 받지 않은 채로 있다.
계층화된 소프트웨어의 유연성은 가상 머신(VM)이 실제로 또하나의 소프트웨어 계층인 가상 하드웨어 계층을 제공할 수 있게 해준다. 이와 같이, VM은 그 위에 있는 소프트웨어 계층들에 대해 상기 소프트웨어 계층들이 그 자신의 사적인 컴퓨터 시스템 상에서 실행되고 있다고 착각하게 할 수 있으며, 따라서 VM은 다수의 "게스트 시스템"으로 하여금 단일의 "호스트 시스템" 상에서 동시에 실행될 수 있게 해줄 수 있다.
도 2는 컴퓨터 시스템에서 에뮬레이트된 운영 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타낸 도면이다. 동 도면에서, 에뮬레이션 프로그램(94)은 물리적 하드웨어 아키텍처(92) 상에서 직접 또는 간접적으로 실행된다. 에뮬레이션 프로그램(94)은 (a) 호스트 운영 체제와 나란히 실행되는 가상 머신 모니터, (b) 고유의 에뮬레이션 기능을 갖는 전용의 호스트 운영 체제, 또는 (c) 하이퍼바이저 컴포넌트를 갖는 호스트 운영 체제일 수 있으며, 상기 하이퍼바이저 컴포넌트가 상기 에뮬레이션을 수행한다. 에뮬레이션 프로그램(94)은 게스트 하드웨어 아키텍처(96)를 에뮬레이트한다(이 컴포넌트가 "가상 머신", 즉 실제로 존재하지 않지만 그 대신에 상기 에뮬레이션 프로그램(94)에 의해 에뮬레이트되는 하드웨어라는 사실을 나타내기 위해 파선으로 도시되어 있음). 게스트 운영 체 제(98)는 상기 게스트 하드웨어 아키텍처(96) 상에서 실행되고, 소프트웨어 애플리케이션(100)은 게스트 운영 체제(98) 상에서 실행된다. 도 2의 에뮬레이트된 운영 환경에서(에뮬레이션 프로그램(94)의 동작으로 인해), 소프트웨어 애플리케이션(100)이 일반적으로 호스트 운영 체제 및 하드웨어 아키텍처(92)와 호환되지 않는 운영 체제 상에서 실행되도록 설계되어 있지만, 소프트웨어 애플리케이션(100)이 컴퓨터 시스템(90)에서 실행될 수 있다.
도 3a는 물리적 컴퓨터 하드웨어(102) 바로 위에서 실행되는 호스트 운영 체제 소프트웨어 계층(104)을 포함하는 가상화된 컴퓨터 시스템을 나타낸 것이며, 여기서 호스트 운영 체제(호스트 OS)(104)는 호스트 OS가 에뮬레이트(또는 "가상화")하고 있는 하드웨어와 동일한 인터페이스를 노출시킴으로써 물리적 컴퓨터 하드웨어(102)의 자원에의 액세스를 제공하고, 이에 따라 차례로 호스트 OS가 그 위에서 실행되고 있는 운영 체제에 의해 인식되지 않은 채로 있을 수 있다. 에뮬레이션을 수행하기 위해, 호스트 운영 체제(104)는 고유의 에뮬레이션 기능을 갖는 특수 설계된 운영 체제일 수 있거나, 다른 대안으로서 이는 에뮬레이션을 수행하는 내장된 하이퍼바이저 컴포넌트를 갖는 표준 운영 체제일 수 있다.
다시 도 3a를 참조하면, 호스트 OS(104) 상부에는 2개의 가상 머신(VM) 구현, 예를 들어, 가상화된 인텔 386 프로세서일 수 있는 VM A(108) 및, 예를 들어, 모토롤라 680X0 계열의 프로세서 중 하나의 가상화된 버전일 수 있는 VM B(110)가 있다. 각각의 VM(108, 110)에는, 각각 게스트 운영 체제(게스트 OS) A(112) 및 게스트 OS B(114)가 있다. 게스트 OS A(112) 상부에는 2개의 애플리케이션, 즉 애플 리케이션 A1(116) 및 애플리케이션 A2(18)이 실행되고 있고, 게스트 OS B(114) 상부에는 애플리케이션 B1(120)이 실행되고 있다.
도 3a와 관련하여, VM A(108) 및 VM B(110)(파선으로 도시되어 있음)이 소프트웨어 구성으로만으로 존재하고 또 게스트 OS A(112) 및 게스트 OS B(114)에 각각 VM A(108) 및 VM B(110)을 제공할 뿐만 아니라 게스트 OS A(112) 및 게스트 OS B(114)가 실제의 물리적 컴퓨터 하드웨어(102)와 간접적으로 상호작용하는 데 필요한 소프트웨어 단계들 전부를 수행하는 특수 소프트웨어 코드의 존재로 인해 가능하게 되는 가상화된 컴퓨터 하드웨어 표현이라는 것에 주의하는 것이 중요하다.
도 3b는 에뮬레이션이 호스트 운영 체제(104")와 나란히 실행되는 가상 머신 모니터(VMM)(104')에 의해 수행되는 대안적인 가상화된 컴퓨팅 시스템을 나타낸 것이다. 어떤 실시예에 있어서, VMM은 호스트 운영 체제(104) 상부에서 실행되면서 상기 호스트 운영 체제(104)를 통해서만 컴퓨터 하드웨어와 상호작용하는 애플리케이션일 수 있다. 다른 실시예들에서, 도 3b에 도시된 바와 같이, VMM은 그 대신에 어떤 레벨에서는 호스트 운영 체제(104)를 통해 컴퓨터 하드웨어(102)와 간접적으로 상호작용하는 복수의 부분적으로 독립적인 소프트웨어 시스템을 포함할 수 있지만, 다른 레벨에서는 VMM은 컴퓨터 하드웨어(102)와 직접 상호작용한다(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함). 또다른 실시예들에서, VMM은 모든 레벨에서 호스트 운영 체제(104)를 이용하지 않고(그렇지만, 상기 컴퓨터 하드웨어(102)의 사용을 조정하고 충돌, 기타를 회피하는 한, 여전히 상기 호스트 운영 체제(104)와 상호작용함) 컴퓨터 하드웨어(102)와 직접 상호작용 하는 완전히 독립적인 소프트웨어 시스템을 포함할 수 있다(호스트 운영 체제가 컴퓨터 하드웨어와 직접 상호작용하는 방식과 유사함).
VMM을 구현하는 이들 변형들 모두는 본 명세서에 기술된 본 발명의 대안적인 실시예들을 형성할 것으로 기대되며, 본 명세서에서의 어느 것도 본 발명을 임의의 특정의 VMM 구성으로 제한하는 것으로 해석되어서는 안된다. 게다가, (아마도 하드웨어 에뮬레이션 시나리오에서) 각각 VM A(108) 및/또는 VM B(110)를 통해 애플리케이션들(116, 118, 120) 간의 상호작용에 대한 언급은 실제로는 애플리케이션들(116, 118, 120)과 VMM 간의 상호작용인 것으로 해석되어야만 한다. 이와 유사하게, (아마도 컴퓨터 하드웨어(102) 상에서 직접 또는 간접적으로 컴퓨터 명령어를 실행하기 위해) 애플리케이션 VM A(108) 및/또는 VM B(110)과 호스트 운영 체제(104) 및/또는 컴퓨터 하드웨어(102) 간의 상호작용에 대한 언급은 실제로는 VMM과 (경우에 따라) 호스트 운영 체제(104) 또는 컴퓨터 하드웨어(102) 간의 상호작용인 것으로 해석되어야만 한다.
보강된 인터럽트 컨트롤러(Augmented Interrupt Controller)
도 4a는 일반적인 하드웨어 인터럽트 컨트롤러("개량된 프로그램가능 인터럽트 컨트롤러(advanced programmable interrupt controller)", 즉 "APIC"라고도 함)를 나타낸 블록도이다. APIC(400)는 버스(402)에 의해 상호연결되는 2개의 컴포넌트 그룹, 즉 I/O APIC(410) 및 로컬 APIC(420)를 포함한다.
이 비제한적인 예에서, 예시적인 I/O APIC(412)에 대해 도시된 바와 같이, I/O APIC(412, 414, 416) 각각은 최대 24개의 고유한 장치 인터럽트를 처리하기 위 해 24개의 입력 라인(예를 들어, 418a, 418b, 418c)을 포함한다. 수신된 특정의 장치 인터럽트에 기초하여(즉, 입력 라인들 중 어느 것이 활성화되는지에 따라), 각각의 I/O APIC는 논리적 라우팅 테이블(logical routing table)(도시 생략)을 사용하여 공통 버스(402)를 통해 특정의 인터럽트를, 특정의 프로세서 코어(432, 434, 436)에 각각 대응하는 로컬 APIC(422, 424, 426) 중 하나로 포워딩한다(각각의 프로세서는 그 자신의 대응하는 로컬 APIC 컴포넌트를 가짐).
I/O APIC(412, 414, 416) 중 하나로부터 인터럽트를 수신할 때, 각각의 로컬 APIC(422, 424, 426)(이 비제한적인 예에서, 최대 240개의 고유한 인터럽트를 수신할 수 있음)는 각각 그의 프로세서 코어(432, 434, 436)에게 수신된 인터럽트를 통지한다. 그 프로세서 코어는 이어서 현재 하고 있는 것을 중단하고, 즉각 어느 장치가 인터럽트를 야기하였으며 무슨 이유 때문인지를 결정하는 힘든 프로세스를 시작한다. 프로세서 코어가 마침내 인터럽트에 관한 이 부가 정보를 수집한 후에, 프로세서 코어는 프로세서 코어가 인터럽트의 소스 및 그 이유에 관해 확인할 수 없었던 새로운 정보에 기초하여 다른 기존의 아직 완료되지 않은 인터럽트 이벤트의 우선순위를 재부여하도록 로컬 APIC에 통지하는 것으로 인터럽트를 종결한다. 프로세서 코어는 이어서 계속하여 그 다음으로 가장 높은 우선순위 인터럽트(이 마지막 인터럽트를 처리하기 이전에 동작하기 시작했던 동일한 인터럽트 이벤트일 수 있거나, 이들의 상대 우선순위에 따라, 이 가장 새로운 인터럽트일 수 있음)를 처리한다.
각각의 로컬 APIC가 약 240개의 고유의 인터럽트 이벤트에 대해 신호받을 수 있고 또 각각의 I/O APIC가 일반적으로 약 24개의 고유의 인터럽트 이벤트에 대해 신호받을 수 있지만, I/O APIC와 로컬 APIC 사이에서 통신을 하는 데 사용되는 일반적인 APIC 버스는 인터럽트 소스, 기타를 구분할 정도로 충분히 정교하지 않다(예를 들어, 고유의 신호 라인을 충분히 가지고 있지 않다). 그 결과, 특정의 프로세서 코어에 대한 로컬 APIC에 의해 수신되는 인터럽트는 2개 이상의(아마도 몇개의) 가능한 인터럽트 이벤트에 대응할 수 있고, 따라서 프로세서 코어가 어느 장치가 인터럽트를 야기했는지를 확인하고(그 인터럽트에 대응하는 그의 몇개의 장치에 폴링하는 것에 의함) 또 인터럽트의 원인을 확인(인터럽트의 원인에 관하여 인터럽트 발생 장치(interrupting device)로부터 부가 정보를 수집하는 것에 의함)할 필요가 있다. 물리적 하드웨어에서, 이러한 폴링 및 정보 수집은 아주 비효율적이고 자원 집중적이며, 이 비효율성은 가상 머신 환경에서 몇자리수 정도 더 크다.
도 4b는 일반적인 가상 인터럽트 컨트롤러, 즉 가상 머신 내의 가상화된 APIC를 나타낸 블록도이다. 가상 머신 분야의 당업자라면 잘 알고 있고 용이하게 이해하는 바와 같이, 가상 APIC(450)가 소프트웨어 표현으로서 존재하는 것을 제외하고는, 가상 APIC(450)는 논리적으로 도 4a의 하드웨어 APIC와 동일한 구조 컴포넌트(도시 생략)를 포함하며, 따라서 인터럽트 동작을 수행하기 위해 호스트 하드웨어 프로세서 상에서 상당히 더 많은 명령어를 필요로 하고, 게스트 운영 체제, 하이퍼바이저(또는 다른 가상화기) 및 물리적 하드웨어 간의 상호작용과 관련하여 특히 그렇다.
도 5a는 도 4a에 대해 본 명세서에서 이미 언급되어 있고 도 4b와 유사한 일 반적인 인터럽트 프로세스 흐름을 개괄적으로 나타낸 프로세스 흐름도이다(가상 머신, VMM 및 물리적 호스트 하드웨어 간에 필요한 부가적인 상호작용으로 인해 후자의 경우가 더 복잡함). 일반적으로, 단계(502)에서, 인터럽트가 소스 장치에 의해 발생되고, 단계(504)에서, 인터럽트 입력 라인을 통해 상기 장치에 연결되어 있는 I/O APIC에 의해 수신된다. 단계(506)에서, I/O APIC는 어느 프로세서 코어 및 대응하는 논리적 APIC가 이 특정의 인터럽트를 수신하도록 지정되어 있는지를 확인하기 위해 논리적 라우팅 테이블 검색을 행하고, 단계(508)에서, 이 검색에 기초하여, 인터럽트를 지정된 로컬 APIC로 포워딩한다. 단계(510)에서, 특정의 로컬 APIC는 추가적인 처리를 위해 인터럽트를 수신하고 우선순위를 부여한다. 단계(512)에서, 프로세서 코어는 처리를 위해 인터럽트를 수신하지만, 인터럽트의 소스 또는 그의 원인을 모르기 때문에, 정확한 장치가 식별되고 인터럽트의 원인이 확인될 때까지 인터럽트를 야기했을 수 있는 여러가지 장치들에 폴링을 해야만 한다. 단계(514)에서, 단계(512)에서 결정된 인터럽트의 소스 및 인터럽트의 원인(이들 모두 "인터럽트 정보", 즉 "i.i"를 구성함)에 기초하여, 프로세서는 이어서 인터럽트를 처리하고, 완료되면, 로컬 APIC가 제공해야만 하는 그 다음으로 가장 높은 우선순위 인터럽트를 수신한다.
이 방식이 일반적으로 비효율적이지만 물리적 하드웨어(인터럽트 컨트롤러 및 코어 프로세서)에 근소하게 충분하더라도, 가상 머신 환경에서 가상화될 때 이들 비효율성이 확대된다. 그렇지만, 수정하기 어려운 물리적 하드웨어와는 달리, 가상 하드웨어(즉, 가상 머신 환경에 가상화되어 있는 머신)는 수정하기가 비교적 쉬우며, 그 결과 본 명세서에서의 본 발명의 많은 실시예들은 보강된 인터럽트 컨트롤러를 통해 인터럽트 처리를 단순화하는 것에 관한 것이다.
도 5b는 본 발명의 몇개의 실시예에서 보강된 인터럽트 컨트롤러를 사용하는 개선된 개념적인 인터럽트 처리 프로세스를 나타낸 프로세스 흐름도이다. 동 도면에서, 단계(552)에서, 소스 장치(이 경우에, 개량되고 따라서 "합성 인터럽트 소스", 즉 "SIC"를 포함하는 가상 장치)에 의해 발생된 인터럽트는 인터럽트의 소스 및 그 원인에 관한 데이터를 포함하는 인터럽트 정보(가상 머신의 경우에, 이용되고 있는 가상 장치에 행해진 개량에 의해 자동적으로 발생될 수 있음)를 수반한다. 단계(554)에서, 이 인터럽트 및 그에 수반하는 인터럽트 정보(이들이 함께 "합성 인터럽트", 즉 "SI"를 구성함)이 보강된 인터럽트 컨트롤러(AIC)에 의해 수신되고 우선순위 부여되며, 단계(556)에서, 추가의 정보를 얻기 위해 장치들에 폴링할 필요없이 프로세서 코어에 의해 처리된다.
또한, 본 발명의 몇가지 이러한 실시예들에서, 물리적 하드웨어 장치가 또한 표준 인터럽트 대신에 SI를 제공하도록 개량될 수 있을 것으로 예상되지만, 표준(비SI) 인터럽트가 (실제의 물리적 하드웨어 장치 등으로부터) 수신될 때, 정규의 인터럽트 처리가 진행될 수 있다는 것을 잘 알 것이다.
도 6a 및 도 6b는 본 발명의 어떤 실시예들에 대한 보강된 인터럽트 컨트롤러를 나타낸 블록도로서, 여기서 각각에서의 인터럽트 컨트롤러 인터페이스는 들어오는 인터럽트(즉, SI)와 연관된 부가 정보를 받아서 신뢰성있게 전달하도록 확장되어 있다. 도 6a에서, 가상 I/O APIC(612)는, 예를 들어, 메시지 신호 방식 인터 럽트를 통해 인터럽트 소스(606)로부터 직접 부가 정보를 받도록 확장되어 있다. 이 부가 정보는, 인터럽트 자체와 함께, 인터럽트의 소스 및 인터럽트의 원인을 식별해주는 합성 인터럽트(SI)를 구성한다. 이 부가 정보는, 인터럽트와 함께, I/O APIC(612)로부터 버스(602)를 통해 적절한 로컬 APIC(622)로 전달되고, 로컬 APIC(622)는 차례로 이 정보를 그의 코어 프로세서(632)에 직접 제공한다. 어떤 대안적인 실시예에 있어서, 로컬 APIC는 또한 부가 정보를 수신하고 그 부가 정보는 물론 그가 받는 인터럽트 우선순위에 기초하여 인터럽트에 우선순위를 부여하도록 개량될 수 있다.
도 6b에서, 인터럽트는 I/O APIC(612)에 의해 수신되고 로컬 APIC(622)로 전달되며, 차례로 프로세서 코어(632)로 전달되지만, 인터럽트에 관한 부가 정보는, 인터럽트 소스(606)에 의해, 인터럽트의 소스 및 원인을 확인하기 위해 장치들에 폴링을 하는 대신에 코어 프로세서(632)에 의해 자동적으로 액세스되는 공유 메모리 장소(608)에 배치되는데, 그 이유는 공유 메모리 장소 내의 이 부가 정보가 인터럽트의 소스 및 인터럽트의 원인을 식별해주기 때문이다. 어떤 대안적인 실시예에서, 로컬 APIC는 또한 공유 메모리 장소 내의 부가 정보에 액세스하고 또 그 부가 정보 및 그가 받는 인터럽트 우선순위에 기초하여 인터럽트에 우선순위를 부여하도록 개량될 수 있다.
보강된 인터럽트 컨트롤러에 대한 부가적인 개량
이상의 것 이외에, 하이퍼바이저 시스템에서 어떤 인터럽트가 소프트웨어에 의해 전송될 수 있기 때문에, 그 인터럽트가 다른 악의적인 소프트웨어에 의해 위 장(spoof)된 것이 아님을 확신하기 위해 인터럽트의 수신자(즉, 코어 프로세서)가 그 인터럽트의 소스를 알아내는 신뢰성있는 방법을 갖는 것이 중요하다. 이와 유사하게, 파티션(partition)은 그 인터럽트와 연관된 어떤 정보가 그대로 전달되었음을 알 필요가 있을 수 있다. 이것은, 프로세서 코어로의 인터럽트의 전달의 일부로서 채워지는 지정된 구조체로, 인터럽트 컨트롤러에 대한 메모리-매핑 확장을 정의함으로써 달성될 수 있다. 이 구조체 내의 어떤 필드들은 송신자에 의해 제공되는 파라미터, 특히 신호되는 이벤트에 관한 더 많은 상세를 제공하는 "원인 코드"를 포함하고 있다. 다른 필드, 특히 "전송측 파티션 식별자" 필드는 인터럽트 컨트롤러에 의해 제공된다. 이 구조체가 수신자 및 인터럽트 컨트롤러에 의해서만 액세스가능하기 때문에, 수신자는 인터럽트 파라미터의 진정성을 믿을 수 있다. 이 구조체가 인터럽트를 전달하는 일부로서 채워지기 때문에, 이 부가 정보의 검색이 송신자를 검색 및 질의하는 종래의 모델보다 훨씬 더 효율적이다. 이들 구조체는 종래의 인터럽트 벡터와 연관되어 있으며, 따라서 인터럽트 우선순위 부여 및 전달은 현재의 메카니즘에 부합하며 이를 계속 이용할 수 있다.
어떤 실시예들에서, 본 시스템은 장치들이 특정의 파티션에 할당될 수 있게 해주는 부가적인 가상화 하드웨어를 포함할 수 있다. 이 경우에, 이러한 장치들에 의해 전송된 인터럽트 및 연관된 파라미터는 소프트웨어-개시 인터럽트와 동일한 방식으로 보호될 수 있다.
게다가, 일반적인 인터럽트 컨트롤러가 이미 프로세서간 인터럽트를 전송하는 기능을 가지고 있기 때문에, 이 기능이 가상 머신 환경에서 파티션 내로부터 액 세스될 때 그 파티션 내의 가상 프로세서로 인터럽트를 전송하는 동일한 서비스를 제공하는 것이 유익할 수 있다. 다른 파티션으로 인터럽트를 전송하기 위해 또는 전송측 파티션 내에서 파라미터와 함께 인터럽트를 전송하기 위해 별도의 기능이 필요한 반면, 비록 인터럽트가 어떻게 전송되는지에 상관없이 인터럽트를 수신하는 메카니즘이 동일할 것이지만, 이 별도의 기능은 종래의 컨트롤러와 유사한 일군의 명령 레지스터일 수 있거나 기능적 인터페이스(functional interface)일 수 있다.
게다가, 많은 유사한 인터럽트 이벤트가 필요할 때(상위 계층 통신 프로토콜에 대한 판독가능/기록가능 시그널링 등), 인터럽트가 추가 정보 없이 계속하여 부울 조건을 나타내는 대안적인 구성이 제공될 수 있다. 그렇지만, 종래의 인터럽트가 이 기본적인 기능을 다하는 반면, 종래의 인터럽트 벡터는 비교적 부족한 자원이고 따라서 이들 실시예는 단일의 종래의 인터럽트 벡터 배후에 비교적 큰 플래그 비트맵을 유지하기 위해 인터럽트 컨트롤러 내의 부가적인 공간을 사용할 수 있으며, 사실상 인터럽트 요청 테이블의 크기를 어떤 운영 체제 지정 인자만큼 증대시킨다. 이 비트맵 증대는 디스패치 우선순위에 영향을 주는 입도 레벨(level of granularity) 이상에서 또는 이하에서 일어날 수 있으며, 하드웨어로 복제하기 어려운 필요한 가상 레지스터를 소프트웨어로 가상화하는 것이 꽤 쉽다면, 가상 머신과 관련하여 행하기는 상당히 쉽다. 예를 들어, 종래의 APIC에서, 인터럽트 벡터의 상위 4 비트가 그의 우선순위를 나타내고, 하위 4 비트가 동일한 우선순위의 서로 다른 신호들 간을 구분하는 데 사용되는 반면, 여기에 기술된 비트맵 확장은 후자의 그룹을 16개의 가능한 값으로부터 말하자면 4096개 이상의 서로 다른 값들로 확장할 수 있다. 상기한 파라미터를 갖는 인터럽트와 같이, 이들 인터럽트는 확장된 일군의 명령 레지스터에 의해 또는 기능적 인터페이스에 의해 전송될 수 있다. 어떤 실시예에 있어서, 단일의 종래의 인터럽트 벡터가 어느 한 종류의 인터럽트 또는 그 둘다를 처리하도록 임의적으로 구성될 수 있다.
이와 유사하게, 본 발명의 다른 실시예들은 또한 2개의 파티션 간에 사용하기 위한 상위-레벨 통신 프로토콜을 작성하는 데 사용될 수 있다. 바이트-스트림-지향 전송 및 다른 유사한 메카니즘을 통해 전송하기 위해 메시지를 패키징하는 여러가지 방법이 고안되어 있지만, 충분히 작은 메시지에 대해, 전체 메시지 본문(message body)이 인터럽트에 관한 파라미터로서 전송될 수 있으며, 메시지의 통지 및 전달을 하나의 개체로 효과적으로 번들링(bundling)할 수 있다. 이것은 차례로 수신자로 하여금 파티션 내부로부터 가상화기로의 부가적인 전환 없이 전체 메시지를 수신할 수 있게 해주는데, 그 이유는 인터럽트가 수신될 때 메시지의 전체 본문이 이미 파티션의 주소 공간에 존재하기 때문이다. 메시지와 연관된 데이터가 너무 커서 파라미터 기능 내에 전혀 맞지 않을 때, 상위-레벨 마샬링 계층(marshaling layer)이 정보를 덜 효율적인 방식으로 이동시켜야만 하지만, 대부분의 메시지는 인터럽트 파라미터에 허용된 공간 내에 들어맞으며, 따라서 훨씬 더 효율적으로 처리될 수 있다. 어떤 실시예들에서, 파라미터 영역의 크기는 컴파일 시에 또는 실행 시에 특정의 부하에 대한 최적의 균형을 이루도록 구성될 수 있다. 이 개념은 파티션들(각각의 파티션은 또하나의 파티션으로 인터럽트를 전송함) 간의 최적의 비동기 통신 프로토콜로서 구현될 수 있다. 이 프로토콜은 (a) 개시된 메시지와 연관된 응답 메시지를 갖거나 갖지 않는, 간단한 독립형 메시지 전달 프로토콜, (b) 작용 및 데이터를 파티션 경계에 걸쳐 마샬링하기 위해 인터럽트를 사용하여, 동기 및/또는 비동기 기능적 인터페이스를 호출자에게 노출시키는 종래의 RPC 프로토콜, 및/또는 (c) 임의의 수의 참여자들 각각이 서로에게 자유롭게 인터럽트를 전송하는 피어-투-피어 구성(peer-to-peer arrangement)을 포함할 수 있다.
파티션간 동기화(cross-partition synchronization)는 본 발명의 여러가지 실시예들에 대한 다른 응용이다. 운영 체제가 일반적으로 데이터 구조체를 그의 스케쥴러와 공유함으로써 기능하는 동기화 프리미티브(synchronization primitive)를 제공하지만, 일반적으로 파티션들 간에 이러한 구조체의 공유가 없으며, 다른 메카니즘이 필요하다. 이 점에서, 다수의 파티션 내의 객체들이 단일의 논리적 상태를 반영할 수 있도록 파티션 내의 한 부류의 동기화 객체가 작성될 수 있다. 이러한 메카니즘은 파티션내 및 파티션간 동기화가 동일한 인터페이스를 통해 행해질 수 있게 해준다.
결론
본 명세서에 기술된 여러가지 시스템, 방법 및 기술들은 하드웨어 또는 소프트웨어로, 또는 적절한 경우 이 둘의 조합으로 구현될 수 있다. 따라서, 본 발명의 방법 및 장치 또는 그의 어떤 측면 또는 부분은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계-판독가능 저장 매체 등의 유형 매체에 구현되는 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 여기서 프로그램 코드가 컴 퓨터 등의 기계에 로드되어 그에 의해 실행될 때, 그 기계는 본 발명을 실시하는 장치가 된다. 프로그램가능 컴퓨터 상에서의 프로그램 코드 실행의 경우에, 컴퓨터는 일반적으로 프로세서, 이 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함한다. 컴퓨터 시스템과 통신을 하기 위해 하나 이상의 프로그램이 양호하게는 상위 레벨의 절차적 또는 객체 지향 프로그래밍 언어로 구현된다. 그렇지만, 프로그램(들)은, 원하는 경우, 어셈블리어 또는 기계어로 구현될 수 있다. 어쨋든, 이 언어는 컴파일된 또는 인터프리트된 언어일 수 있고, 하드웨어 구현과 결합될 수 있다.
본 발명의 방법 및 장치는 또한 전기 배선 또는 케이블을 거쳐, 광섬유를 통해, 또는 임의의 다른 형태의 전송을 통하는 등, 어떤 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현될 수 있으며, 여기서 프로그램 코드가 EPROM, 게이트 어레이, 프로그램가능 논리 장치(programmable logic device, PLD), 클라이언트 컴퓨터, 비디오 레코더, 기타 등등의 기계에 의해 수신되고 로드되어 실행될 때, 이 기계는 본 발명을 실시하는 장치가 된다. 범용 프로세서 상에서 구현될 때, 이 프로그램 코드는 프로세서와 결합하여, 본 발명의 기능을 수행하는 동작을 하는 고유의 장치를 제공한다.
본 발명이 여러가지 도면의 양호한 실시예와 관련하여 기술되어 있지만, 다른 유사한 실시예가 사용될 수 있거나 본 발명을 벗어나지 않고 본 발명의 동일한 기능을 수행하기 위해 기술된 실시예들에 수정 및 추가가 행해질 수 있다는 것을 잘 알 것이다. 예를 들어, 본 발명의 예시적인 실시예가 퍼스널 컴퓨터의 기능을 에뮬레이트하는 디지털 장치와 관련하여 기술되어 있지만, 당업자라면 본 발명이 본 출원에 기술된 이러한 디지털 장치로 한정되지 않으며, 유선이든 무선이든 상관없이, 게임 콘솔, 핸드헬드 컴퓨터, 휴대용 컴퓨터, 기타 등등의 임의의 수의 기존의 또는 새로 등장하는 컴퓨팅 장치나 환경에 적용될 수 있고 또 통신 네트워크를 통해 연결되어 있고 또 이 네트워크를 통해 상호작용하는 임의의 수의 이러한 컴퓨팅 장치에 적용될 수 있다는 것을 잘 알 것이다. 게다가, 핸드헬드 장치 운영 체제 및 다른 응용 관련 하드웨어/소프트웨어 인터페이스 시스템을 비롯한 다양한 컴퓨터 플랫폼이 본 명세서에서 생각되고 있음이 강조되어야만 하는데, 그 이유는 특히 무선 네트워크화된 장치의 수가 계속하여 증가하고 있기 때문이다. 따라서, 본 발명은 어떤 단일의 실시예로 한정되어서는 안되며, 오히려 폭 및 범위가 첨부된 청구 범위에 따라 해석되어야 한다.
마지막으로, 본 명세서에 기술된 실시예들은 다른 프로세서 아키텍처, 컴퓨터-기반 시스템, 또는 시스템 가상화에서 사용하도록 구성될 수 있으며, 이러한 실시예들은 본 명세서에 기술된 개시 내용에 의해 명백히 예상되는 것이고, 따라서 본 발명은 본 명세서에 기술된 특정 실시예들로 한정되어서는 안되고 그 대신에 가장 넓게 해석되어야만 한다. 이와 마찬가지로, 프로세서 가상화 이외의 목적을 위해 합성 명령어를 사용하는 것도 본 명세서에 기술된 개시 내용에 의해 예상되는 것이며, 프로세서 가상화 이외의 것과 관련하여 이와 같이 합성 명령어를 사용하는 것이 본 명세서에 기술된 개시 내용 내에서 가장 넓게 해석되어야만 한다.
Claims (20)
- 컴퓨터 시스템에서의 보강된 인터럽트 제어 방법으로서,인터럽트 소스가 인터럽트 신호 및 인터럽트 정보 둘다를 인터럽트 컨트롤러 및 그의 대응하는 프로세서 코어로 전송하는 단계를 포함하는 보강된 인터럽트 제어 방법.
- 제1항에 있어서, 상기 인터럽트 정보는 이하의 요소들, 즉 상기 인터럽트 소스의 식별자 및 상기 인터럽트의 원인으로 이루어진 그룹 중에서 적어도 하나의 요소를 포함하는 것인 보강된 인터럽트 제어 방법.
- 제2항에 있어서, 상기 인터럽트 컨트롤러 및 상기 대응하는 프로세서 코어는, 이하의 복수의 작업, 즉 상기 인터럽트의 소스를 식별하는 것 및 상기 인터럽트의 원인을 확인하는 것 중에서 하나의 작업을 수행하기 위해, 어떤 장치에도 폴링을 하지 않고 상기 인터럽트 정보를 사용하여 처리를 위해 상기 인터럽트에 우선순위를 부여하는 것인 보강된 인터럽트 제어 방법.
- 제3항에 있어서, 상기 인터럽트는 대응하는 프로세서 코어를 관여시키지 않고 로컬 APIC(advanced programmable interrupt controller)에 의해 우선순위가 부여되는 것인 보강된 인터럽트 제어 방법.
- 제3항에 있어서, 상기 인터럽트 정보는 공유 메모리 장소를 거쳐 상기 인터럽트 소스로부터 상기 인터럽트 컨트롤러 또는 상기 프로세서 코어로 전달되는 것인 보강된 인터럽트 제어 방법.
- 제3항에 있어서, 상기 인터럽트 소스, 상기 인터럽트 컨트롤러 또는 상기 대응하는 프로세서 코어 중 적어도 하나는 가상 머신 환경에서의 가상화된 소프트웨어 표현인 것인 보강된 인터럽트 제어 방법.
- 컴퓨터 시스템에서의 보강된 인터럽트 제어 시스템으로서,인터럽트 컨트롤러 및 대응하는 프로세서 코어, 및인터럽트 신호 및 인터럽트 정보 둘다를 상기 인터럽트 컨트롤러 및 상기 대응하는 프로세서 코어로 전송하는 인터럽트 소스를 포함하는 것인 보강된 인터럽트 제어 시스템.
- 제7항에 있어서, 상기 인터럽트 정보는 이하의 요소들, 즉 상기 인터럽트 소스의 식별자 및 상기 인터럽트의 원인으로 이루어진 그룹 중에서 적어도 하나의 요소를 포함하는 것인 보강된 인터럽트 제어 시스템.
- 제8항에 있어서, 상기 인터럽트 컨트롤러 및 상기 대응하는 프로세서 코어 는, 이하의 복수의 작업, 즉 상기 인터럽트의 소스를 식별하는 것 및 상기 인터럽트의 원인을 확인하는 것 중에서 하나의 작업을 수행하기 위해, 어떤 장치에도 폴링을 하지 않고 상기 인터럽트 정보를 사용하여 처리를 위해 상기 인터럽트에 우선순위를 부여하는 것인 보강된 인터럽트 제어 시스템.
- 제9항에 있어서, 상기 인터럽트는 대응하는 프로세서 코어를 관여시키지 않고 로컬 APIC(advanced programmable interrupt controller)에 의해 우선순위가 부여되는 것인 보강된 인터럽트 제어 시스템.
- 제9항에 있어서, 공유 메모리 장소를 더 포함하고,상기 인터럽트 정보는 상기 공유 메모리 장소를 거쳐 상기 인터럽트 소스로부터 상기 인터럽트 컨트롤러 또는 상기 프로세서 코어로 전달되는 것인 보강된 인터럽트 제어 시스템.
- 제9항에 있어서, 상기 인터럽트 소스, 상기 인터럽트 컨트롤러 또는 상기 대응하는 프로세서 코어 중 적어도 하나는 가상 머신 환경에서의 가상화된 소프트웨어 표현인 것인 보강된 인터럽트 제어 시스템.
- 컴퓨터 시스템에서의 보강된 인터럽트 제어를 위한 컴퓨터-판독가능 명령어를 포함하는 컴퓨터-판독가능 매체로서,상기 컴퓨터-판독가능 명령어는 인터럽트 소스가 인터럽트 신호 및 인터럽트 정보 둘다를 인터럽트 컨트롤러 및 그의 대응하는 프로세서 코어로 전송하게 하는 명령어를 포함하는 것인 컴퓨터-판독가능 매체.
- 제13항에 있어서, 상기 인터럽트 정보가 이하의 요소들, 즉 상기 인터럽트 소스의 식별자 및 상기 인터럽트의 원인으로 이루어진 그룹 중에서 적어도 하나의 요소를 포함하게 하는 명령어를 더 포함하는 것인 컴퓨터-판독가능 매체.
- 제14항에 있어서, 상기 인터럽트 컨트롤러 및 상기 대응하는 프로세서 코어가, 이하의 복수의 작업, 즉 상기 인터럽트의 소스를 식별하는 것 및 상기 인터럽트의 원인을 확인하는 것 중에서 하나의 작업을 수행하기 위해, 어떤 장치에도 폴링을 하지 않고 상기 인터럽트 정보를 사용하여 처리를 위해 상기 인터럽트에 우선순위를 부여하게 하는 명령어를 더 포함하는 것인 컴퓨터-판독가능 매체.
- 제15항에 있어서, 상기 인터럽트가 대응하는 프로세서 코어를 관여시키지 않고 로컬 APIC(advanced programmable interrupt controller)에 의해 우선순위가 부여되게 하는 명령어를 더 포함하는 것인 컴퓨터-판독가능 매체.
- 제15항에 있어서, 상기 인터럽트 정보가 공유 메모리 장소를 거쳐 상기 인터럽트 소스로부터 상기 인터럽트 컨트롤러 또는 상기 프로세서 코어로 전달되게 하 는 명령어를 더 포함하는 것인 컴퓨터-판독가능 매체.
- 제15항에 있어서, 상기 인터럽트 소스, 상기 인터럽트 컨트롤러 또는 상기 대응하는 프로세서 코어 중 적어도 하나가 가상 머신 환경에서의 가상화된 소프트웨어 표현이게 하는 명령어를 더 포함하는 것인 컴퓨터-판독가능 매체.
- 컴퓨터 시스템에서 보강된 인터럽트 제어를 구현하는 하드웨어 제어 장치로서,인터럽트 소스가 인터럽트 신호 및 인터럽트 정보 둘다를 인터럽트 컨트롤러 및 그의 대응하는 프로세서 코어로 전송하게 하는 수단 - 상기 인터럽트 정보는 이하의 요소들, 즉 상기 인터럽트 소스의 식별자 및 상기 인터럽트의 원인으로 이루어진 그룹 중에서 적어도 하나의 요소를 포함함 - 및,상기 인터럽트 컨트롤러 및 상기 대응하는 프로세서 코어가, 이하의 복수의 작업, 즉 상기 인터럽트의 소스를 식별하는 것 및 상기 인터럽트의 원인을 확인하는 것 중에서 하나의 작업을 수행하기 위해, 어떤 장치에도 폴링을 하지 않고 상기 인터럽트 정보를 사용하여 처리를 위해 상기 인터럽트에 우선순위를 부여하게 하는 수단을 포함하는 하드웨어 제어 장치.
- 제19항에 있어서, 상기 인터럽트 정보가 공유 메모리 장소를 거쳐 상기 인터럽트 소스로부터 상기 인터럽트 컨트롤러 또는 상기 프로세서 코어로 전달되게 하 는 수단을 더 포함하는 하드웨어 제어 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/092,012 | 2005-03-28 | ||
US11/092,012 US7689747B2 (en) | 2005-03-28 | 2005-03-28 | Systems and methods for an augmented interrupt controller and synthetic interrupt sources |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070115883A true KR20070115883A (ko) | 2007-12-06 |
Family
ID=37036531
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077018278A KR20070115883A (ko) | 2005-03-28 | 2006-03-28 | 컴퓨터 시스템에서의 보강된 인터럽트 제어 방법, 이를구현하는 시스템, 명령어를 포함하는 컴퓨터-판독가능 매체및 하드웨어 제어 장치 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7689747B2 (ko) |
EP (1) | EP1854014A4 (ko) |
JP (1) | JP2008535099A (ko) |
KR (1) | KR20070115883A (ko) |
CN (1) | CN101128807B (ko) |
IL (1) | IL184614A0 (ko) |
TW (1) | TW200707211A (ko) |
WO (1) | WO2006105208A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101242661B1 (ko) * | 2009-12-11 | 2013-03-12 | 한국전자통신연구원 | 컴퓨터 시스템에서 인터럽트 컨트롤러의 가상화 장치 및 방법 |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7802073B1 (en) * | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US9032127B2 (en) * | 2006-09-14 | 2015-05-12 | Hewlett-Packard Development Company, L.P. | Method of balancing I/O device interrupt service loading in a computer system |
US20080082710A1 (en) * | 2006-09-29 | 2008-04-03 | Dell Products L.P. | System and method for managing system management interrupts in a multiprocessor computer system |
US8219788B1 (en) | 2007-07-23 | 2012-07-10 | Oracle America, Inc. | Virtual core management |
US7769938B2 (en) | 2007-09-06 | 2010-08-03 | Intel Corporation | Processor selection for an interrupt identifying a processor cluster |
US7627706B2 (en) * | 2007-09-06 | 2009-12-01 | Intel Corporation | Creation of logical APIC ID with cluster ID and intra-cluster ID |
GB2462258B (en) * | 2008-07-28 | 2012-02-08 | Advanced Risc Mach Ltd | Interrupt control for virtual processing apparatus |
US8190769B1 (en) | 2008-12-30 | 2012-05-29 | Juniper Networks, Inc. | Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification |
US8255496B2 (en) | 2008-12-30 | 2012-08-28 | Juniper Networks, Inc. | Method and apparatus for determining a network topology during network provisioning |
US8565118B2 (en) * | 2008-12-30 | 2013-10-22 | Juniper Networks, Inc. | Methods and apparatus for distributed dynamic network provisioning |
US8331362B2 (en) * | 2008-12-30 | 2012-12-11 | Juniper Networks, Inc. | Methods and apparatus for distributed dynamic network provisioning |
US9424211B2 (en) * | 2008-12-31 | 2016-08-23 | Intel Corporation | Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller |
US20100174841A1 (en) * | 2008-12-31 | 2010-07-08 | Zohar Bogin | Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller |
US8234432B2 (en) * | 2009-01-26 | 2012-07-31 | Advanced Micro Devices, Inc. | Memory structure to store interrupt state for inactive guests |
JP5320140B2 (ja) * | 2009-04-14 | 2013-10-23 | 株式会社日立製作所 | 計算機システム、割込み中継回路及び割込み中継方法 |
US8255603B2 (en) * | 2009-08-14 | 2012-08-28 | Advanced Micro Devices, Inc. | User-level interrupt mechanism for multi-core architectures |
US8953603B2 (en) * | 2009-10-28 | 2015-02-10 | Juniper Networks, Inc. | Methods and apparatus related to a distributed switch fabric |
US8442048B2 (en) * | 2009-11-04 | 2013-05-14 | Juniper Networks, Inc. | Methods and apparatus for configuring a virtual network switch |
US8380908B2 (en) * | 2009-12-31 | 2013-02-19 | Intel Corporation | Emulation of an input/output advanced programmable interrupt controller |
US8566492B2 (en) * | 2009-12-31 | 2013-10-22 | Intel Corporation | Posting interrupts to virtual processors |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
US8606975B2 (en) * | 2010-05-21 | 2013-12-10 | Oracle International Corporation | Managing interrupts in a virtualized input/output device supporting multiple hosts and functions |
US8891406B1 (en) | 2010-12-22 | 2014-11-18 | Juniper Networks, Inc. | Methods and apparatus for tunnel management within a data center |
US8893267B1 (en) | 2011-08-17 | 2014-11-18 | Applied Micro Circuits Corporation | System and method for partitioning resources in a system-on-chip (SoC) |
CN103049318B (zh) * | 2011-10-11 | 2017-10-17 | 北京科银京成技术有限公司 | 分区操作系统的虚拟中断方法 |
US9229884B2 (en) | 2012-04-30 | 2016-01-05 | Freescale Semiconductor, Inc. | Virtualized instruction extensions for system partitioning |
US9152587B2 (en) * | 2012-05-31 | 2015-10-06 | Freescale Semiconductor, Inc. | Virtualized interrupt delay mechanism |
US8914566B2 (en) * | 2012-06-19 | 2014-12-16 | Teradyne, Inc. | Managing interrupts |
US9436626B2 (en) | 2012-08-09 | 2016-09-06 | Freescale Semiconductor, Inc. | Processor interrupt interface with interrupt partitioning and virtualization enhancements |
US9442870B2 (en) | 2012-08-09 | 2016-09-13 | Freescale Semiconductor, Inc. | Interrupt priority management using partition-based priority blocking processor registers |
RU2514141C1 (ru) | 2012-09-28 | 2014-04-27 | Закрытое акционерное общество "Лаборатория Касперского" | Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции |
US9009368B2 (en) | 2012-10-23 | 2015-04-14 | Advanced Micro Devices, Inc. | Interrupt latency performance counters |
US9021143B2 (en) | 2012-11-30 | 2015-04-28 | Intel Corporation | Polling of I/O devices on host initiated communication transports |
JP6123487B2 (ja) * | 2013-05-28 | 2017-05-10 | 富士通株式会社 | 制御装置、制御方法及び制御プログラム |
JP6241178B2 (ja) | 2013-09-27 | 2017-12-06 | 富士通株式会社 | ストレージ制御装置,ストレージ制御方法及びストレージ制御プログラム |
US9417801B2 (en) * | 2014-03-27 | 2016-08-16 | Intel Corporation | Virtual general-purpose I/O controller |
US9910699B2 (en) | 2014-10-28 | 2018-03-06 | Intel Corporation | Virtual processor direct interrupt delivery mechanism |
US10049064B2 (en) * | 2015-01-29 | 2018-08-14 | Red Hat Israel, Ltd. | Transmitting inter-processor interrupt messages by privileged virtual machine functions |
JP6464777B2 (ja) | 2015-01-30 | 2019-02-06 | 富士通株式会社 | 情報処理装置及びプログラム |
US9747225B2 (en) | 2015-05-05 | 2017-08-29 | Microsoft Technology Licensing, Llc | Interrupt controller |
CN108196945B (zh) * | 2016-12-08 | 2022-06-07 | 阿里巴巴集团控股有限公司 | 一种核间通信方法、装置和虚拟化设备 |
US11809888B2 (en) | 2019-04-29 | 2023-11-07 | Red Hat, Inc. | Virtual machine memory migration facilitated by persistent memory devices |
US11989144B2 (en) | 2021-07-30 | 2024-05-21 | Advanced Micro Devices, Inc. | Centralized interrupt handling for chiplet processing units |
CN113886054B (zh) * | 2021-12-03 | 2022-04-15 | 芯来科技(武汉)有限公司 | 一种中断处理装置、芯片和电子设备 |
US20230315659A1 (en) * | 2022-03-29 | 2023-10-05 | Mellanox Technologies, Ltd. | Interrupt emulation on network devices |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61206043A (ja) * | 1985-03-11 | 1986-09-12 | Hitachi Ltd | 仮想計算機システムにおける割込制御方法 |
US5418968A (en) * | 1990-10-31 | 1995-05-23 | Gobeli; Gregg P. | System and method for controlling interrupt processing |
JP3093293B2 (ja) * | 1991-02-08 | 2000-10-03 | 日本電気株式会社 | 情報処理装置の割り込み方式 |
SG48803A1 (en) * | 1993-04-19 | 1998-05-18 | Intel Corp | Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller |
US6240483B1 (en) * | 1997-11-14 | 2001-05-29 | Agere Systems Guardian Corp. | System for memory based interrupt queue in a memory of a multiprocessor system |
US6295573B1 (en) * | 1999-02-16 | 2001-09-25 | Advanced Micro Devices, Inc. | Point-to-point interrupt messaging within a multiprocessing computer system |
JP2001209548A (ja) * | 2000-01-28 | 2001-08-03 | Matsushita Electric Ind Co Ltd | マイクロコンピュータシステム |
JP2004030161A (ja) * | 2002-06-25 | 2004-01-29 | Hitachi Ltd | コンピュータシステムにおける割り込み制御方法、コンピュータシステム、半導体集積回路、及びプログラム |
US7000051B2 (en) * | 2003-03-31 | 2006-02-14 | International Business Machines Corporation | Apparatus and method for virtualizing interrupts in a logically partitioned computer system |
US7281075B2 (en) * | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
JP2004355543A (ja) * | 2003-05-30 | 2004-12-16 | Toshiba Corp | 情報処理装置および割り込み通知方法 |
WO2004114132A1 (ja) * | 2003-06-20 | 2004-12-29 | Fujitsu Limited | 割り込み制御方法、割り込み制御装置及び割り込み制御プログラム |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
US7177967B2 (en) * | 2003-09-30 | 2007-02-13 | Intel Corporation | Chipset support for managing hardware interrupts in a virtual machine system |
US7139857B2 (en) * | 2003-11-12 | 2006-11-21 | Standard Microsystems Corporation | Method and apparatus for handling interrupts |
US7222203B2 (en) * | 2003-12-08 | 2007-05-22 | Intel Corporation | Interrupt redirection for virtual partitioning |
-
2005
- 2005-03-28 US US11/092,012 patent/US7689747B2/en active Active
-
2006
- 2006-03-27 TW TW095110586A patent/TW200707211A/zh unknown
- 2006-03-28 CN CN2006800062444A patent/CN101128807B/zh not_active Expired - Fee Related
- 2006-03-28 EP EP20060748881 patent/EP1854014A4/en not_active Ceased
- 2006-03-28 KR KR1020077018278A patent/KR20070115883A/ko not_active Application Discontinuation
- 2006-03-28 JP JP2008504314A patent/JP2008535099A/ja active Pending
- 2006-03-28 WO PCT/US2006/011487 patent/WO2006105208A2/en active Application Filing
-
2007
- 2007-07-15 IL IL184614A patent/IL184614A0/en unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101242661B1 (ko) * | 2009-12-11 | 2013-03-12 | 한국전자통신연구원 | 컴퓨터 시스템에서 인터럽트 컨트롤러의 가상화 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP1854014A4 (en) | 2010-03-31 |
IL184614A0 (en) | 2007-12-03 |
WO2006105208A3 (en) | 2007-06-07 |
WO2006105208A2 (en) | 2006-10-05 |
TW200707211A (en) | 2007-02-16 |
US20060218328A1 (en) | 2006-09-28 |
EP1854014A2 (en) | 2007-11-14 |
CN101128807B (zh) | 2011-10-26 |
US7689747B2 (en) | 2010-03-30 |
JP2008535099A (ja) | 2008-08-28 |
CN101128807A (zh) | 2008-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070115883A (ko) | 컴퓨터 시스템에서의 보강된 인터럽트 제어 방법, 이를구현하는 시스템, 명령어를 포함하는 컴퓨터-판독가능 매체및 하드웨어 제어 장치 | |
EP2122474B1 (en) | Optimized interrupt delivery in a virtualized environment | |
EP1628214B1 (en) | Systems and methods for implementing an operating system in a virtual machine environment | |
US9619270B2 (en) | Remote-direct-memory-access-based virtual machine live migration | |
US8635612B2 (en) | Systems and methods for hypervisor discovery and utilization | |
EP2519877B1 (en) | Hypervisor-based isolation of processor cores | |
US8832688B2 (en) | Kernel bus system with a hyberbus and method therefor | |
CN107273199B (zh) | 用于管理虚拟化环境中的中断的体系结构和方法 | |
JP5079246B2 (ja) | 仮想マシン環境におけるマルチレベルインターセプト処理のためのシステムおよび方法 | |
US7761578B2 (en) | Communicating in a virtual environment | |
US20190146827A1 (en) | Virtualized network function resource management method and device | |
US8091086B1 (en) | System and method for virtualization using an open bus hypervisor | |
CN103699428A (zh) | 一种虚拟网卡中断亲和性绑定的方法和计算机设备 | |
KR20060071307A (ko) | 가상 기기들을 위한 프로세서 토폴로지를 노출시키는시스템 및 방법 | |
US20190258503A1 (en) | Method for operating virtual machines on a virtualization platform and corresponding virtualization platform | |
CN113067849B (zh) | 基于Glusterfs的网络通信优化方法及装置 | |
Nordal et al. | Paravirtualizing tcp | |
CN114397999B (zh) | 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备 | |
Gebhardt et al. | Challenges for inter virtual machine communication | |
Zhang et al. | NVMe-over-RPMsg: A Virtual Storage Device Model Applied to Heterogeneous Multi-Core SoCs | |
WO2022160217A1 (zh) | 一种中断上报装置、方法及虚拟化系统 | |
Banga | Virtual Interrupt Handling to Reduce CPU Overhead in I/O Virtualization | |
Luo et al. | A functional classification based inter-vm communication mechanism with multi-core platform | |
Sankh et al. | Survey of Approaches to Improve Inter Virtual Machine Communication Efficiency on Xen Platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |