KR20080063125A - 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환 - Google Patents

분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환 Download PDF

Info

Publication number
KR20080063125A
KR20080063125A KR1020070137832A KR20070137832A KR20080063125A KR 20080063125 A KR20080063125 A KR 20080063125A KR 1020070137832 A KR1020070137832 A KR 1020070137832A KR 20070137832 A KR20070137832 A KR 20070137832A KR 20080063125 A KR20080063125 A KR 20080063125A
Authority
KR
South Korea
Prior art keywords
partition
address
address translation
logic
memory
Prior art date
Application number
KR1020070137832A
Other languages
English (en)
Other versions
KR100914081B1 (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 KR20080063125A publication Critical patent/KR20080063125A/ko
Application granted granted Critical
Publication of KR100914081B1 publication Critical patent/KR100914081B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

분할 시스템에서 메모리를 액세스하는 디바이스를 위한 게스트 대 호스트 어드레스 변환 장치, 방법, 및 시스템의 실시예들이 개시되어 있다. 일 실시예에서, 장치는 인터페이스, 분할 로직, 제1 어드레스 변환 로직, 및 제2 어드레스 변환 로직을 포함한다. 인터페이스는 분할 시스템에서 메모리를 액세스하라는 디바이스로부터의 요청을 수신한다. 분할 로직은 이 디바이스가 제1 분할 또는 제2 분할에 할당되는지의 여부를 판정한다. 제1 어드레스 변환 로직은 제1 분할에서 제1 게스트 어드레스를 제1 호스트 어드레스로 변환한다. 제2 어드레스 변환 로직은 제2 분할에서 제2 게스트 어드레스를 제2 호스트 어드레스로 변환한다.
Figure P1020070137832
분할 시스템, 어드레스 변환, 게스트 어드레스, 호스트 어드레스

Description

분할 시스템에서 메모리를 액세스하는 디바이스들에 대한 게스트 대 호스트 어드레스 변환{GUEST TO HOST ADDRESS TRANSLATION FOR DEVICES TO ACCESS MEMORY IN A PARTITIONED SYSTEM}
본 명세서는 정보 처리 분야에 관한 것으로, 특히, 분할 정보 처리 시스템 분야에 관한 것이다.
일반적으로, 정보 처리 시스템에서의 분할(partitioning)의 개념은 시스템을 파티션으로 나누는 것을 나타내고, 각 파티션은 완전하고 독립적인 시스템으로서 동작될 수 있는 시스템 자원들의 그룹이다. 파티션에 할당될 수 있는 시스템 자원들은 프로세서들, (다중 코어 프로세서의 개별 코어들이 다른 파티션들에 할당되어 질 수 있는) 프로세서 코어들, 시스템 메모리의 일부분, 및 입출력("I/O") 디바이스들을 포함한다.
분할의 상이한 유형들이 공지되어 있다. "소프트" 분할에서, 시스템 자원들은 파티션들 사이에서 공유될 수 있다. 소프트 분할의 한가지 형태는 가상화(virtualization)로서, 이것은 각각의 OS가 시스템 및 그의 자원들을 통해 완전하고 직접적인 제어를 하도록 설계되었더라도, 하나 이상의 운영 시스템들(각각은 "OS")의 복수의 인스턴스들이 단일 시스템에서 구동되게 한다. 가상화는, 시스템의 물리적 자원들을 직접 제어하고, 하나 이상의 가상 프로세서들을 포함하며, OS가 완전하고 직접적으로 제어하는 가상 자원들을 갖는 "가상 기계"("VM")를 각각의 OS에 제공하는 가상 기계 모니터(virtual machine monitor)("VMM")로 알려진 소프트웨어를 이용하여 통상적으로 실현된다. VMM은 VM들 사이에서 물리적 자원들을 공유하고/하거나 할당하는 것과 같은 가상화 정책들을 실현하는 시스템 환경("가상화 환경")을 유지한다. VM 상에서 구동하는 각각의 OS 및 임의의 다른 소프트웨어는 "게스트" 또는 "게스트 소프트웨어"라고 하는 한편, "호스트" 또는 "호스트 소프트웨어"는 VMM과 같이, 가상 환경의 외부에서 구동하고, 가상 환경을 인식할 수 있거나 또는 인식할 수 없는 소프트웨어이다.
소프트 분할은 통상적으로, VMM, 하이퍼바이저(hypervisor), OS 또는 다른 이러한 소프트웨어가 분할 시스템의 하나의 파티션에서 구동하고 물리적 자원들의 공유를 강제하도록 설계되며, 다른 파티션들에서 구동하고 있는 임의의 이러한 소프트웨어가 물리적 자원들을 직접 제어하는 것을 방지하는 것을 포함할 수 있다.
"하드" 분할에서, 각 시스템 자원은 통상적으로 개별 파티션 전용이다. 하드 분할은 임의의 OS, VMM, 하이퍼바이저, 또는 다른 이러한 소프트웨어를 제공하는데, 이러한 소프트웨어가 그의 파티션의 물리적 자원들을 직접 제어할 수 있기 때문에 소프트웨어가 분할 시스템용으로 설계될 필요없이 각각의 파티션에서 구동 된다.
본 발명의 일 양상에 따르면, 장치는 인터페이스, 분할 로직, 제1 어드레스 변환 로직, 및 제2 어드레스 변환 로직을 포함한다. 인터페이스는 분할 시스템에서 메모리를 액세스하라는 디바이스로부터의 요청을 수신한다. 분할 로직은 이 디바이스가 제1 분할 또는 제2 분할에 할당되는지의 여부를 판정한다. 제1 어드레스 변환 로직은 제1 분할에서 제1 게스트 어드레스를 제1 호스트 어드레스로 변환한다. 제2 어드레스 변환 로직은 제2 분할에서 제2 게스트 어드레스를 제2 호스트 어드레스로 변환한다.
본 발명은 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한 게스트 대 호스트 어드레스 변환을 위한 장치들, 방법들 및 시스템에 관한 것으로, 분할 시스템의 가상화 능력을 증가시키는 데 이용될 수 있다.
본 발명은 전술한 바와 같은 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한 게스트 대 호스트 어드레스 변환을 위한 장치들, 방법들 및 시스템에서 구체화될 수 있다. 본 설명에서, 많은 특정한 상세, 이를테면 컴포넌트 및 시스템 구성들은 본 발명의 더욱 완전한 이해를 제공하기 위해 설명될 것이다. 그러나, 본 발명이 이러한 특정 상세없이 실시될 수 있음을 당업자가 인식할 것이다. 또한, 본 발명을 불필요하게 모호하게 하지 않기 위해서 몇몇 공지된 구조들, 회로 들, 등은 상세히 나타내지 않았다.
본 발명의 실시예들은 분할 시스템의 가상화 능력을 증가시키는 데 이용될 수 있다.
본 발명의 실시예들의 요소들은 하드웨어, 소프트웨어, 펌웨어, 또는 하드웨어, 소프트웨어, 또는 펌웨어의 임의의 조합으로 실현될 수 있다. 용어 하드웨어는 일반적으로 전자식, 전자기식, 광학, 전기 광학, 기계식, 전기 기계식 부품들과 같은 물리적 구조를 갖는 요소를 나타낸다. 용어 소프트웨어는 일반적으로 논리적 구조, 방법, 절차, 프로그램, 루틴, 프로세스, 알고리즘, 공식, 표식(expression) 등을 나타낸다. 용어 펌웨어는 일반적으로 하드웨어 구조(예를 들면, 플래시 메모리 또는 판독 전용 메모리)에서 실현되거나 구체화된 논리적 구조, 방법, 절차, 프로그램, 루틴, 프로세스, 알고리즘, 공식, 또는 표식을 나타낸다. 펌웨어의 예들은 마이크로코드, 기록가능 제어 기억 장치(writable control store), 및 마이크-프로그램화 구조이다.
도 1은 정보 처리 시스템(100)에서의 본 발명의 일 실시예를 나타낸다. 정보 처리 시스템(100)은 임의의 OS, VMM, 또는 다른 소프트웨어의 실행이 가능한 임의의 장치일 수 있는 베어 플랫폼 하드웨어(110)를 포함한다. 예를 들면, 베어 플랫폼 하드웨어(110)는 퍼스널 컴퓨터, 메인프레임 컴퓨터, 포터블 컴퓨터, 핸드헬드 디바이스, 셋톱 박스, 서버, 또는 임의 다른 컴퓨팅 시스템의 하드웨어일 수 있다. 본 실시예에서, 베어 플랫폼 하드웨어(110)는 하나 이상의 프로세서 패키지들(120), 칩셋(들)(130), 시스템 메모리(140) 및 디바이스들(151, 152, 153, 및 154)을 포함한다.
프로세서(120)는 하나 이상의 실행 코어들을 갖는 임의의 컴포넌트일 수 있으며, 여기서 각 실행 코어는, Intel® Pentium® 프로세서 패밀리, Itanium® 프로세서 패밀리, 또는 Intel®사로부터의 다른 프로세서 패밀리, 또는 다른 회사로부터의 또 다른 프로세서, 또는 디지털 신호 프로세서 또는 마이크로컨트롤러와 같은 범용 마이크로프로세서를 포함하는 여러가지 프로세서들 중 임의의 프로세서에 기초할 수 있거나, 재구성가능한 코어(예를 들면, 필드 프로그램가능한 게이트 어레이)일 수도 있다. 도 1은 단 하나의 이러한 프로세서(120)만을 나타내지만, 베어 프로세싱 하드웨어(110)는 각각이 임의의 수의 실행 코어들을 갖는 임의의 수의 멀티코어 프로세서들 및 각각이 임의의 수의 스레드를 갖는 임의의 수의 멀티스레드 프로세서들을 포함하는 임의의 수의 프로세서들을 포함할 수 있다.
칩셋(130)은 프로세서(120) 및/또는 시스템(100)을 위한 메모리 동작, 입력/출력 동작, 구성, 제어, 내부 또는 외부 인터페이스, 접속, 또는 통신 기능들(예를 들면, "글루(glue)" 로직 및 버스 브릿지), 및/또는 임의의 유사한 기능들을 지원하는 회로들 및 로직의 임의의 그룹일 수 있다. 칩셋(130)의 개별 요소들은 단일 칩, 한 쌍의 칩들에서 함께 그룹화될 수 있고, 복수의 칩들에서 분산될 수 있고, 및/또는 부분적으로, 전체적으로, 중복되게 집적될 수 있거나, 프로세서(120)를 포함하는 하나 이상의 프로세서들로의 분산 접근에 따를 수 있다.
시스템 메모리(140)는 데이터 및/또는 프로그램 코드와 같은 정보가 저장될 수 있는 임의의 매체, 이를 테면, 정적 또는 동적 랜덤 액세스 메모리, 반도체 기 판 판독 전용 또는 플래시 메모리, 자기 또는 광 디스크 메모리, 또는 프로세서(120)에 의해 판독 가능한 임의의 다른 유형의 매체, 또는 이러한 매체들의 임의의 조합일 수 있다.
디바이스들(151, 152, 153, 및 154)은 각각 임의의 수의 임의의 타입의 I/O, 주변, 또는 다른 디바이스들, 이를테면 키보드, 마우스, 트랙볼, 포인팅 디바이스, 모니터, 프린터, 미디어 카드, 네트워크 인터페이스, 정보 저장 장치 등을 나타낼 수 있다. 각각의 디바이스들(151, 152, 153, 및 154)은 개별(discrete) 컴포넌트로 구체화될 수 있거나, 이들 중 임의의 하나 이상은 임의의 다른 디바이스들과 함께 집적된 컴포넌트에 포함될 수 있다. 일 실시예에서, 디바이스들(151, 152, 153, 및 154)은 다중 기능(multifunctional) I/O, 주변, 또는 다른 디바이스에서 각각 다른 기능을 나타낸다.
프로세서(120), 칩셋(130), 시스템 메모리(140), 및 디바이스들(151, 152, 153, 및 154)은 임의의 알려진 접근법 이를테면, 직접 또는 간접적으로 하나 이상의 패럴렐, 시퀀셜, 파이프라인식, 비동기, 동기, 유선, 무선, 또는 다른 버스 또는 포인트-투-포인트 접속을 통해 서로 연결되거나 통신할 수 있다. 예를 들면, 칩셋(130)은 디바이스들(151, 152, 153, 및 154)로부터 트랜잭션들을 수신하는 인터페이스(133)를 포함한다. 베어 플랫폼 하드웨어(110)는 또한 임의의 수의 추가 디바이스들, 에이전트들, 컴포넌트들, 또는 접속들을 포함할 수 있다.
베어 플랫폼 하드웨어(110)는 분할 기술에 따라 파티션들(111 및 112)로 분할된다. 멀티코어 프로세서(120)의 코어(121), 칩셋(130)의 어드레스 트랜잭션 로 직(131), 시스템 메모리(140)의 일부(141), 및 디바이스들(151 및 153)은 파티션(111)에 할당된다. 멀티코어 프로세서(120)의 코어(122), 칩셋(130)의 어드레스 트랜잭션 로직(132), 시스템 메모리(140)의 일부(142), 및 디바이스들(152 및 154)은 파티션(112)에 할당된다. 각 파티션은 또한 추가 프로세서들, 코어들, 칩셋들 또는 다른 로직, 메모리의 일부, 디바이스들, 또는 전술되거나 그렇지 않다면 정보 처리 분야에서 공지된 임의의 다른 물리적 자원들을 포함할 수 있다.
베어 플랫폼 하드웨어(110) 이외에, 도 1은 파티션(111)에서 VMM(115)에 의해 유지되는 가상화 환경(113), 및 파티션(112)에서 VMM(116)에 의해 유지되는 가상화 환경(114)을 나타낸다. VMM들(115 및 116)은 베어 플랫폼 하드웨어(110)에 설치되거나 액세스가능한 임의의 소프트웨어, 펌웨어, 또는 하드웨어 호스트일 수 있으며, 게스트들에게 베어 플랫폼 하드웨어(110)의 추상 개념(abstractions)인 VM들을 제공하고, 그렇지 않다면 VM들을 생성하고, VM들을 관리하며, 가상화 정책들을 실행한다. VMM들(115 및 116)은 각각 동일한 VMM의 인스턴스이거나 두 개의 다른 VMM들의 인스턴스일 수 있다.
게스트는, VMM(115 또는 116)의 다른 인스턴스, 임의의 하이퍼바이저, 또는 임의의 애플리케이션 또는 다른 소프트웨어를 포함하는 임의의 VMM, 임의의 OS일 수 있다. 각 게스트는 VM에 제시된 프로세서 및 플랫폼의 아키텍처에 따라서, 베어 플랫폼 하드웨어(110)의 프로세서 및 플랫폼 레지스터들, 메모리 및 입출력 디바이스들과 같은 물리적 자원들에 대한 액세스를 기대한다. 도 1은, 게스트 OS(171), 게스트 애플리케이션(181) 및 디바이스 드라이버(185)가 인스톨된 VM(161), 게스트 OS(173), 게스트 애플리케이션(183) 및 디바이스 드라이버(187)가 인스톨된 VM(163), 게스트 OS(172), 게스트 애플리케이션(182) 및 디바이스 드라이버(186)가 인스톨된 VM(162), 및 게스트 OS(174), 게스트 애플리케이션(184) 및 디바이스 드라이버(188)가 인스톨된 VM(164)의 4개의 VM들을 나타낸다. 도 1은 4개의 VM들, VM당 1개의 애플리케이션 및 1개의 드라이버만을 나타내지만, 임의의 수의 VM들이 생성될 수 있고, 임의의 수의 애플리케이션 및/또는 드라이버들이 본 발명의 범주 내에서 각 VM에 구동될 수 있다.
게스트가 액세스할 수 있는 자원은 "특권(privileged)" 또는 "특권없는(non-privileged)" 자원으로서 분류될 수 있다. 특권 자원에 있어서, VMM은 자원을 통한 최종(ultimate) 제어를 유지하면서 게스트가 원하는 기능성을 조장한다. 특권없는 자원들은 VMM에 의한 제어를 필요로 하지 않고 게스트가 직접 액세스할 수 있다.
또한, 각 게스트 OS는 예외들(예를 들면, 용지 오류, 및 일반 보호 오류), 인터럽트들(예를 들면, 하드웨어 인터럽트들 및 소프트웨어 인터럽트들) 및 플랫폼 이벤트들(예를 들면, 초기화 및 시스템 관리 인터럽트들)과 같은 각종 이벤트들을 처리하도록 기대된다. 여기에서, 이들 예외들, 인터럽트들, 및 플랫폼 이벤트들은 총괄적 및 개별적으로 "가상화 이벤트들"로 불린다. 이들 가상화 이벤트들 중 몇몇 이벤트들은, 이들이 VM들의 적합한 동작, 게스트들로부터 VMM의 보호, 및 서로간의 게스트들의 보호를 보장하기 위해 VMM에 의해 처리되어야 하기 때문에 "특권 이벤트들"이라고 불린다.
임의의 시간에, 프로세서 코어는 VMM 또는 임의 게스트로부터의 명령을 실행하고 있을 수 있으므로, VMM 또는 게스트는 프로세서 코어 상에서, 또는 이의 제어하에서 구동되고 있을 수 있다. 특권 이벤트가 발생하거나 게스트가 특권 자원에 액세스하려고 하는 경우에, 제어는 게스트로부터 VMM으로 이동될 수 있다. 게스트로부터 VMM으로 제어의 이동은 여기서 "VM 엑시트(exit)"로 불린다. 이 이벤트를 처리하거나 자원에 대한 액세스를 적합하게 조장한 후, VMM은 게스트로 제어를 되돌릴 수 있다. VMM으로부터 게스트로의 제어의 이동은 여기서 "VM 엔트리"이라 부른다.
가상화를 지원하기 위해서, 어드레스 변환 로직(예를 들면, 어드레스 변환 로직(131 또는 132))이 디바이스(예를 들면, 디바이스(151, 152, 153, 또는 154))를 I/O 트랜잭션 내의 시스템 메모리(140)의 도메인(이하 설명함)에 매핑하는 데 이용될 수 있다. I/O 트랜잭션은 통상적으로 DMA 요청(즉, 시스템 메모리(140)를 직접 액세스하기 위한 I/O 디바이스로부터의 요청)이지만, 임의의 다른 유형의 트랜잭션일 수도 있다. 어드레스 변환 로직은 I/O 디바이스 할당 및/또는 관리를 용이하게 하거나 향상시키기 위해서 하드웨어 지원을 제공한다. 어드레스 변환 로직은 도 1에 도시한 바와 같이, 칩셋(130) 내에 포함될 수 있거나, 부분적으로 또는 전체적으로 프로세서(120) 또는 임의의 다른 프로세서, 코프로세서(coprocessor), 칩셋, 또는 다른 컴포넌트에서 구현될 수 있다.
도메인은 시스템 내의 격리된(isolated) 환경으로 추상적으로 정의되며, 시스템 메모리(140)의 서브셋이 할당된다. 예를 들면, 각각의 VM들(161, 162, 163 및 164)이 도메인인 것으로 고려될 수 있다. 도메인에 할당된 시스템 메모리의 일부를 직접 액세스하게 되는 디바이스들은 그 도메인의 지정된 디바이스들이라고 불린다. 도메인의 격리는 도메인에 지정되지 않은 디바이스들로부터 그의 할당된 메모리에 대한 액세스를 차단함으로써 달성된다. 복수의 격리된 도메인들은 모든 디바이스들이 어떤 도메인(가능하게는 디폴트 도메인)에 지정되었음을 보장하고, 각각의 할당된 디바이스로부터 단지 그 도메인에 할당된 메모리에 대한 액세스를 제한함으로써 지원된다.
각 도메인은 시스템 메모리의 관점(view) 또는, 메모리의 시스템 관점과는 다를 수 있는 물리적 어드레스 공간을 갖는다. 메모리의 시스템 관점에 따라 시스템 메모리를 액세스하는 데 이용되는 어드레스는 호스트 물리적 어드레스(host physical address)("HPA")로 불린다. 그의 물리적 어드레스 공간을 액세스하는 도메인의 자원들이 이용하는 어드레스는 게스트 물리적 어드레스(guest physical address)("GPA")로 불린다. 도메인은, 그의 GPA 공간이 HPA 공간과, 또는 HPA 공간의 서브셋과 동일하다면 재배치되지 않도록(non-relocated) 고려된다. 도메인은, 그의 GPA 공간이 그의 할당된 HPA 공간을 액세스하기 위해 변환된다면 재배치되도록 고려된다. GPA 및 HPA 공간들의 논리적 분리는 메모리 보호를 강화하기 위한 기초를 제공한다. 이것은 도메인의 지정된 디바이스들에 의해 생성된 GPA들을 유효화할 수 있고, 가능하게는 HPA들을 유효화하기 위해서 이들을 변환할 수 있는 어드레스 보호 및 가능하게는 변환 메커니즘을 필요로 한다. 어드레스 변환 로직, 이를테면 어드레스 변환 로직(131 및 132)은 그의 기능성을 위해서, 때때로 DMA 리 매핑(remapping)으로 불리는 하드웨어 지원을 제공한다.
도 2는 도메인에 대한 디바이스 지정, 또는 매핑의 일례를 나타내는 도면이다. 도 2에서, 디바이스(151)는 시스템 메모리(140) 내의 도메인(240)으로 매핑된다. 도메인(240)은, 디바이스(151)를 제어하거나 그렇지 않으면 디바이스(151)를 지원하는 임의의 소프트웨어일 수 있는 디바이스 드라이버(241)를 포함할 수 있다. 도메인(240)으로의 디바이스(151)의 매핑은 어드레스 변환 로직(131)에 의해 지원된다.
어드레스 변환 로직(131)은 레지스터 세트(231), 리매핑 구조(232), 및 로직 회로(233)를 포함한다. 레지스터 세트(231)는, 리매핑 구조(232), 로직 회로(233) 및 프로그램들, 또는 디바이스용 드라이버들에 의해 이용되는 제어 또는 상태 정보를 기억 장치(storage)에 제공하는 복수의 레지스터들을 포함한다. 리매핑 구조(232)는 기본 구조, 기억 장치, 또는 GPA들에서 HPA들로의 리매핑 또는 어드레스 변환에 이용되는 테이블을 제공한다. 로직 회로(233)는 리매핑 또는 어드레스 변환 동작을 행하는 회로를 포함한다.
도 1로 되돌아 가면, 각각의 디바이스들(151, 152, 153, 및 154)은 다른 도메인에 지정되어 있는 것으로 도시된다. 파티션(111)에서의 어드레스 변환 로직(131)은 VM(161)의 도메인으로의 디바이스(151)의 매핑, 및 VM(163)의 도메인으로의 디바이스(153)의 매핑을 지원한다. VM(161)의 도메인에서 디바이스 드라이버(185)는 디바이스(151)를 제어한다. VM(163)의 도메인에서 디바이스 드라이버(187)는 디바이스(153)를 제어한다. 파티션(112)에서의 어드레스 변환 로 직(132)은 VM(162)의 도메인으로의 디바이스(152)의 매핑, 및 VM(164)의 도메인으로의 디바이스(154)의 매핑을 지원한다. VM(162)의 도메인에서 디바이스 드라이버(186)는 디바이스(152)를 제어한다. VM(164)의 도메인에서 디바이스 드라이버(188)는 디바이스(154)를 제어한다.
일반적으로, 게스트들은 VMM을 통해, 예를 들면, I/O 동작을 시도하는 경우에 VM 엑시트를 야기함으로써 시스템 자원들을 액세스한다. 그러나, 디바이스(151)는 VM(161)에 지정되고, 그의 드라이버(185)는 VM(161)에서 구동하기 때문에, 게스트 OS(171) 및 애플리케이션(181)은 VMM(420)에 VM 엑시트를 야기하지 않고 디바이스(151)를 액세스할 수 있다. 또한, 디바이스(151)는 예를 들면, VM 엑시트를 야기하지 않고 DMA 요청을 통해 VM(161)의 도메인에 할당된 메모리를 액세스할 수 있다. 어드레스 변환 로직(131)은 디바이스(151)가 이용하는 GPA들을 대응하는 HPA들로 변환하고, 디바이스(151)로부터 그의 할당된 도메인 밖의 메모리 위치에 대한 액세스를 거부함으로써 이 능력을 지원한다. 마찬가지로, 게스트 OS(172) 및 애플리케이션(182)은 디바이스(152)를 액세스할 수 있고, 디바이스(152)는 VM(162)의 도메인에 할당된 메모리를 액세스할 수 있으며, 게스트 OS(173) 및 애플리케이션(183)은 디바이스(153)를 액세스할 수 있고, 디바이스(153)는 VM(163)의 도메인에 할당된 메모리를 액세스할 수 있으며, 게스트 OS(174) 및 애플리케이션(184)은 디바이스(154)를 액세스할 수 있고, 디바이스(154)는 VM(164)의 도메인에 할당된 메모리를 액세스할 수 있으며, 이 모두는 VM 엑시트를 야기하지 않는다.
도 3은 DMA 리매핑을 위한 어드레스 변환의 일례를 나타낸다. 도 3에서, 디바이스(151)는 도메인 A로 지정되고, 디바이스(153)는 도메인 B로 지정된다. 각 디바이스는 I/O 요청 또는 어드레스 DMA_ADR에 대한 DMA 요청을 실행할 수 있다. 어드레스 변환 로직(131)은 디바이스(151)로부터의 DMA_ADR에 대한 요청을 물리적 메모리(140)의 섹션(341)으로 매핑하고, 여기서 물리적 메모리의 섹션들(341 및 345)은 도메인 A로 할당된다. 마찬가지로, 어드레스 변환 로직(131)은 디바이스(153)로부터의 DMA_ADR에 대한 요청을 물리적 메모리(140)의 섹션(347)으로 매핑하고, 여기서 물리적 메모리의 섹션들(343 및 347)은 도메인 B로 할당된다. 섹션들(341, 343, 345, 및 347)은 시스템의 메모리 관리 모델에 따른 페이지의 사이즈 또는 물리적 메모리의 일부의 임의의 다른 사이즈일 수 있다.
시스템 메모리의 게스트 관점(350)은 디바이스들(151 및 153)의 투시도로부터의 논리적 관점이다. 디바이스(151)는 섹션(351)을 시스템의 어드레스 공간으로 보는 반면, 디바이스(153)는 섹션(353)을 시스템의 어드레스 공간으로 본다. VMM(115) 또는 도메인들의 생성 및 관리에 책임이 있는 다른 소프트웨어는 각 도메인에 대한 물리적 메모리(140)를 할당하고, 어드레스 변환 로직(131)에서 GPA 대 HPA 변환 기능을 설정한다.
어드레스 변환 로직(131)에 의해 실현되는 어드레스 변환 기능은 시스템의 물리적 메모리 관리 모델에 의존한다. 예를 들면, 호스트 물리적 메모리가 인접(contiguous) 영역으로서 도메인들에 할당되는 곳에서, 변환 기능은 단순한 오프셋 추가일 수 있다. 대안으로, 어드레스 변환 로직(131)은, 예를 들면 호스트 물 리적 메모리가 페이지 정교성(granularity)으로 관리되는 곳에서 어드레스 변환을 행하는 데이터 구조를 참조할 수 있다. 다른 실시예들에서는 개별 디바이스들이 액세스 허가되는 어드레스 범위들을 정의하기 위해서 데이터 구조를 이용할 수 있다. 다른 실시예들은 이들 및 다른 기술들의 임의의 결합을 이용할 수 있다.
어드레스 변환 로직(131)에 의해 참조되는 데이터 구조("메모리 액세스 데이터 구조")는, 단일 또는 멀티-레벨 테이블과 같은 데이터 구조의 임의의 형태일 수 있다. 메모리 액세스 데이터 구조, 또는 메모리 액세스 데이터 구조의 임의의 일부분은 어드레스 변환 로직(131), 이를테면 리매핑 구조(232) 또는 시스템 메모리(140) 내의 메모리 액세스 테이블(141)에 액세스가능한 임의의 저장 공간에 저장될 수 있다. 메모리 액세스 데이터 구조에서 전체 또는 일부 정보는 하나 이상의 저장 공간들, 예를 들면 메모리 액세스 테이블(141)로부터의 엔트리들, 또는 어드레스 변환 로직(131)에 의한 변환의 결과들에 카피되거나 복제될 수 있고, 리매핑 구조(232)에서의 변환 룩-어사이드(look-aside) 또는 다른 버퍼, 또는 다른 곳에 저장될 수 있다.
도 4는 본 발명의 일 실시예에 따른 메모리 액세스 데이터 구조에서의 엔트리(400)를 나타낸다. 엔트리(400)는 3개의 필드들을 포함하고, 그들 각각은 임의의 수의 비트 위치를 포함한다. GPA 필드(410)는 시스템 메모리를 액세스하기 위해 디바이스에 의해 이용될 수 있는 GPA 또는 GPA의 일부를 저장하는 것이다. HPA 필드(420)는, 전술한 바와 같이, 임의의 메모리 어드레스 변환 기능에 따라서, GPA 필드(410)에 저장된 GPA에 대응하는 HPA 또는 HPA의 일부를 저장하는 것이다. 일 실시예에서, GPA 필드(410) 및 HPA 필드(420)에 저장된 각각의 어드레스들은 시스템 메모리의 페이지의 기준(base) 어드레스를 특정하여, 시스템 메모리 내의 단일 페이지에 대한 모든 액세스들은 메모리 액세스 데이터 구조에서 단 하나의 엔트리를 필요로 한다. 이러한 일 실시예 또는 다른 실시예들에서, 메모리 액세스 데이터 구조에서의 단일 엔트리는 단일 어드레스보다는 어드레스들의 범위를 나타낼 수 있다.
메모리 액세스 속성 필드(430)는 필드들(410 및 420)에서의 엔트리들에 대응하는 메모리 액세스 속성들을 저장하는 것이다. 예를 들면, 메모리 액세스 필드(430)는, 대응하는 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션이 허가되는지의 여부를 나타내는 값, 프로세서 캐시들이 대응하는 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션에서 스누프(snoop)되어야 하는지의 여부를 나타내는 값, 및 대응하는 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션에 관련된 임의 다른 값들 또는 지시기(indicator)들을 저장하는 데 이용될 수 있다.
도 1로 되돌아가면, 시스템(100)은 파티션들(111 및 112)로 분할된다. 이 분할은 임의의 공지된 접근법에 따라, 이를테면, 디바이스들을 포함하는 하드웨어 자원들을 각 파티션에 지정함으로써 시스템을 구성하는 시스템 초기화 시에 분할 펌웨어 또는 소프트웨어를 실행함으로써 실현될 수 있다.
파티션에 디바이스를 지정하는 것은 임의의 수의 접근법들에 따라서 달성 및/또는 유지될 수 있다. 제1 접근법에서, 디바이스는 특정 파티션에 대응하는 메모 리의 일부에 지정될 수 있다. 예를 들면, 메모리의 일부는 하나 이상의 메모리 범위 또는 다른 레지스터들에서의 하나 이상의 하위 어드레스들, 상위 어드레스들, 및/또는 오프셋들, 다른 저장 위치, 또는 그 파티션에 대응하는 데이터 구조 엔트리들을 저장함으로써 특정 파티션에 할당될 수 있다. 그 후, 액세스 제어 리스트, 맵, 또는 다른 데이터 구조는 트랜잭션들의 발행 및/또는 응답에 대해 디바이스를 메모리의 그 부분으로 제한하는데 이용될 수 있다. 디바이스는, 시스템에서의 특정 버스 상의 특정 디바이스 내에서 그의 특정 기능에 따라 디바이스를 식별하는 버스, 디바이스, 함수 넘버("BDF")와 같은 임의의 고유 식별자로 액세스 제어 리스트, 맵, 또는 다른 데이터 구조에서 식별될 수 있다.
제2 접근법에 따르면, 디바이스는 파티션에 직접 지정될 수 있다. 예를 들면, 데이터 구조는 시스템 내의 각 디바이스의 식별자(예를 들면, BDF) 및 지정되어진 파티션의 식별자를 저장하기 위해서 분할 펌웨어 또는 소프트웨어에 의해 생성 및/또는 유지될 수 있다. 대안으로, 특정한 디바이스들은 지정되어진 파티션의 식별자를 저장하기 위해서 프로그램될 수 있다. 본 발명의 범주 내에서 다른 접근법들도 가능하다.
임의의 이러한 디바이스 지정 접근법에 따라서, 분할 로직(190)은 트랜잭션에 관련된 디바이스가 어떤 파티션에 지정되었는지를 판정한다. 일 실시예에서, 분할 로직(190)은 액세스 제어 리스트 또는 다른 이러한 데이터 구조에서 트랜잭션과 관련된 디바이스 식별자, 이를테면 트랜잭션에 포함된 BDF를 검색함으로써 디바이스가 지정되어진 파티션을 판정한다. 액세스 제어 리스트는 디바이스가 지정된 메모리의 일부를 나타내고, 차례로 디바이스가 지정된 파티션을 나타낸다. 다른 실시예에서, 트랜잭션과 관련된 디바이스 식별자는 어떤 파티션에 디바이스가 지정되었는지를 직접 나타내는 테이블, 맵, 또는 다른 데이터 구조에서 엔트리를 찾는데 이용될 수 있다. 다른 실시예에서, 트랜잭션 프로토콜은 예를 들면, 트랜잭션 내에서 파티션 식별자를 포함하는 요청 디바이스를 제공함으로써 직접 파티션을 식별하는 수단을 포함할 수 있다.
도 5는 도 1의 실시예에 따른 분할 로직(190)을 나타낸다. 룩업(look-up) 모듈(510)은, 전술한 바와 같이 또는 임의의 다른 접근법에 따라서, 디바이스와 관련된 트랜잭션을 수신하고 어느 파티션으로 디바이스가 지정되었는지 판정한다. 라우팅(routing) 모듈(520)은 트랜잭션을 디바이스가 지정되어진 파티션을 위한 어드레스 변환 로직에 라우팅한다. 예를 들어, 디바이스(151)로부터의 DMA 요청의 경우, 룩업 모듈(510)은 디바이스(151)가 파티션(111)으로 지정되도록 결정하며, 이에 따라 라우팅 모듈(520)은 DMA 요청을 어드레스 변환 로직(131)에 라우팅한다.
룩업 모듈(510)은, 전술한 바와 같이 또는 임의의 다른 접근법에 따라서, 액세스 제어 리스트들, 디바이스 액세스 맵들, 메모리 범위 레지스터들, 또는 다른 저장 위치나 데이터 구조의 개별 또는 조합을 참조하여 디바이스가 어느 파티션에 지정되는지를 판정할 수 있다. 도 5의 실시예에서, 분할 로직(190)은 파티션 지정을 위해 디바이스를 결정하는 룩업 모듈(510)에 의해 이용되는 정보의 저장 위치를 나타내는 디바이스 액세스 맵(530)을 포함한다. 이러한 정보는 파티션 지정을 위해 디바이스를 결정하기 위해 직접 이용되는 정보, 이를테면, 디바이스에서 메모 리, 메모리에서 파티션, 또는 임의의 다른 시스템 자원 매핑의 리스트 또는 테이블과 같은 정보일 수 있으며, 이러한 정보가 저장될 수 있는 시스템(100) 내에서의 위치 또는 임의의 위치에 대한 참조 또는 포인터일 수 있다. 참조하는 디바이스 액세스 맵(530) 및/또는 임의의 레지스터들, 메모리 어드레스들, 또는 다른 저장 위치 또는 데이터 구조는 상기 참조된 분할 펌웨어 또는 소프트웨어에 의해, 또는 임의의 OS, VMM, 또는 다른 이러한 소프트웨어에 의해 초기화되고/되거나 유지될 수 있다.
도 5의 실시예에서, 분할 로직(190)은 룩업 모듈(510)에 의한 이전 판정으로부터의 결과를 저장하는 룩-어사이드 캐시(540)를 더 포함한다. 예를 들면, 룩업 모듈(510)이 디바이스가 지정된 파티션을 판정하는데 BDF를 이용하는 경우에, BDF 및 그 파티션에 할당된 어드레스 변환 로직의 식별자가 룩-어사이드 캐시 엔트리에 저장될 수 있다. 그 후, 어드레스 변환 로직 매핑에 대한 BDF는 룩업 모듈(510)에 의한 판정 대신에 룩-어사이드 캐시(540)에서 발견될 수 있다.
분할 로직(190)은 시스템(100)으로부터 제거되어진 디바이스들에 대응하는 룩-어사이드 캐시 엔트리들을 무효화하기 위한 룩-어사이드 캐시 매니저(550)를 더 포함한다. 예를 들면, 분리식(removable) 디바이스 보드 또는 카드가 주변 버스 슬롯에서 제거되면, 캐시 매니저(550)는 그 디바이스 보드 또는 카드에 대응하는 룩-어사이드 캐시(540)에 있는 모든 엔트리들을 무효화한다. 그 후, 새로운 디바이스 보드 또는 카드가 해당 슬롯에 삽입되어 다른 파티션에 지정될 수 있다.
도 6은 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한 게스트 대 호스트 어드레스 변환 방법(600)에서 본 발명의 실시예를 나타낸다. 방법 실시예들은 이 점에 있어서 제한되지 않지만, 도 6의 방법 실시예를 설명하기 위해서 도 1의 시스템(100)의 설명을 참조한다.
도 6의 박스 610에서, 시스템, 예를 들면, 시스템(100)은 두 개의 파티션들, 예를 들면, 파티션들(111 및 112)로 분할된다. 분할은 시스템 자원들, 이를테면 시스템 메모리의 일부, I/O 디바이스들, 및 각 파티션에 대한 어드레스 변환 로직의 할당을 포함한다. 예를 들면, 디바이스(151)는 파티션(111)에 할당될 수 있고, 디바이스(152)는 파티션(112)에 할당될 수 있다. 디바이스(151 및 152)는 동일한 게스트 물리적 어드레스(예를 들면, DMA_ADR)를 포함하는 시스템 메모리의 게스트 관점을 가질 수 있다.
박스 620에서, 디바이스(151)는 DMA 요청과 같이 시스템 메모리를 액세스하는 것과 관련한 트랜잭션을 초기화한다. 트랜잭션은 디바이스 식별자, 예를 들면, 디바이스(151)의 BDF, 및 게스트 물리적 어드레스, 예를 들면, DMA_ADR를 포함한다.
박스 622에서, 디바이스 식별자는 어느 파티션, 예를 들면 파티션(111)에 디바이스가 지정되었는지를 판정하는 데 이용된다. 박스 624에서, 룩-어사이드 캐시 엔트리가 생성된다. 캐시 엔트리는 디바이스 식별자와, 파티션(111)에 할당되어진 어드레스 변환 로직, 예를 들면, 어드레스 변환 로직(131)의 식별자를 포함한다.
박스 630에서, 트랜잭션은 어드레스 변환 로직(131)에 라우팅되어, 디바이스(151)에 의해 이용되는 게스트 물리적 어드레스 DMA_ADR를 디바이스(152)에 의해 이용되는 게스트 물리적 어드레스 DMA_ADR로부터 명확하게 한다. 박스 632에서, 어드레스 변환 로직(131)은 파티션(111)에서 게스트 물리적 어드레스 DMA_ADR를 호스트 물리적 어드레스로 변환한다. 박스 634에서, 박스 620에서 초기화된 트랜잭션은 박스 632에서 발견된 호스트 물리적 어드레스에서 완성된다.
박스 640에서, 디바이스(151)는 DMA 요청과 같이, 시스템 메모리를 액세스하는 것을 포함하는 다른 트랜잭션을 초기화한다. 트랜잭션은 디바이스 식별자, 예를 들면, 디바이스(151)의 BDF, 및 게스트 물리적 어드레스, 예를 들면, DMA_ADR를 포함한다.
박스 642에서, 디바이스 식별자는 룩-어사이드 캐시에서 발견된다. 박스 644에서, 트랜잭션은 룩-어사이드 캐시에서 발견된 엔트리에 기초하여 어드레스 변환 로직(131)에 라우팅된다. 박스 646에서, 어드레스 변환 로직(131)은 파티션(111)에서 게스트 물리적 어드레스 DMA_ADR를 호스트 물리적 어드레스로 변환한다. 박스 648에서, 박스 640에서 초기화된 트랜잭션은 박스 646에서 발견된 호스트 물리적 어드레스에서 완성된다.
박스 650에서, 디바이스(151)는 시스템(100)으로부터 제거된다. 박스 652에서, 디바이스(151)에 대응하는 룩-어사이드 캐시 엔트리가 무효화된다.
본 발명의 범주 내에서, 방법(600)은 예시된 박스들의 생략, 추가 박스들의 부가, 또는 재정리되어 생략되거나 추가한 박스들의 조합에 의해 행해질 수 있다. 예를 들면, 트랜잭션이 파티션 식별자를 포함하는 경우에, 박스들(622 및 624)은 생략될 수 있다.
본 발명의 실시예에 따라서 설계된 임의의 컴포넌트 또는 컴포넌트의 일부는 제조를 위한 생성에서 시뮬레이션까지의 여러 단계들에서 설계될 수 있다. 설계를 표현하는 데이터는 여러 방식에서의 설계를 표현할 수 있다. 우선, 시뮬레이션에서 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 다른 기능적 기술 언어를 이용하여 표현될 수 있다. 부가적으로 또는 대안으로, 로직 및/또는 트랜지스터 게이트들을 갖는 회로 레벨 모델이 설계 과정의 어떤 단계들에서 생성될 수 있다. 또한, 대부분의 설계는, 어떤 단계에서, 각종 디바이스들의 물리적 배치를 나타내는 데이터를 가지고 모델링되는 레벨에 도달한다. 종래의 반도체 제조 기술이 이용되는 경우에, 디바이스 배치 모델을 나타내는 데이터는 집적 회로를 생성하는 데 이용되는 마스크를 위한 상이한 마스크 층들에서 각종 특징들의 존재 또는 부재를 특정하는 데이터일 수 있다.
설계의 표현에 있어서, 데이터는 임의의 형태의 기계 판독가능한 매체에 저장될 수 있다. 이러한 정보를 송신하기 위해서 변조되거나 그렇지 않다면 생성된 광학 또는 전기파, 메모리, 또는 자기 또는 광학적 저장 매체, 이를테면 디스크는 기계 판독가능한 매체일 수 있다. 이들 매체 중 임의의 매체는 설계 또는 본 발명의 실시예에서 이용되는 다른 정보를 "가지고(carry)" 있거나 "표시(indicate)"할 수 있다. 정보를 표시하거나 가지고 있는 전기 반송파가 송신될 때, 전기 신호의 카피, 버퍼링, 또는 재송신이 행해진다는 점에서, 새로운 카피가 이뤄진다. 따라서, 통신 제공자 또는 네트워크 제공자의 행동은 본 발명의 기술을 구체화하는 물건, 예를 들면, 반송파의 복제물의 제작을 구성할 수 있다.
따라서, 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한 게스트 대 호스트 어드레스 변환 장치, 방법, 및 시스템이 개시되어 있다. 특정한 실시예들이 기술되고 첨부한 도면들이 도시되어 있지만, 본 명세서를 검토함에 있어서 다양한 다른 변형들이 당업자들에게 생각날 수 있기 때문에, 이러한 실시예들은 단지 예시적인 것이고, 넓은 발명을 제한하는 것은 아니며, 본 발명이 도시되고 기술된 특정한 구성 및 배열에 한정되지 않는다는 점은 이해할 것이다. 성장이 빠르고 그 이상의 진보가 용이하게 예견되지 않는 이와 같은 기술 분야에서는, 본 명세서의 원리 또는 첨부한 청구범위의 범주에서 벗어나지 않고 기술적 진보를 가능하게 함으로써 용이하게 되는 개시된 실시예들이 배열 및 상세가 손쉽게 변형될 수 있다.
본 발명은 첨부한 도면들을 제한이 아닌 예로서 나타낸다.
도 1은 정보 처리 시스템에서 본 발명의 실시예를 나타낸다.
도 2는 도메인에 대한 디바이스의 할당을 나타낸다.
도 3은 시스템 메모리를 액세스하는 디바이스에 대한 어드레스 변환을 나타낸다.
도 4는 메모리 액세스 데이터 구조에서의 엔트리를 나타낸다.
도 5는 도 1의 실시예의 분할 로직을 나타낸다.
도 6은 본 발명의 방법 실시예를 나타낸다.
<도면의 주요 부분에 관한 설명>
100 : 시스템
110 : 베어 플랫폼 하드웨어
111, 112 : 분할
120 : 프로세서
130 : 칩셋
140 : 메모리

Claims (20)

  1. 분할 시스템(partitioned system)에서 메모리를 액세스하라는 디바이스로부터의 요청(request)을 수신하는 인터페이스,
    상기 디바이스가 상기 분할 시스템 내의 제1 파티션 또는 제2 파티션에 할당되는지의 여부를 판정하는 분할 로직(partitioning logic),
    상기 제1 파티션에서 제1 게스트 어드레스를 제1 호스트 어드레스로 변환하는 제1 어드레스 변환 로직, 및
    상기 제2 파티션에서 제2 게스트 어드레스를 제2 호스트 어드레스로 변환하는 제2 어드레스 변환 로직
    을 포함하는 장치.
  2. 제1항에 있어서,
    상기 분할 로직은 또한, 상기 디바이스가 상기 제1 파티션에 할당된다는 판정에 응답하여 상기 제1 어드레스 변환 로직에 상기 요청을 전달하고, 상기 디바이스가 상기 제2 파티션에 할당된다는 판정에 응답하여 상기 제2 어드레스 변환 로직에 상기 요청을 전달하는 장치.
  3. 제1항에 있어서,
    상기 분할 로직은 파티션 식별자(identifier)를 판정하기 위해서 상기 요청 에 포함된 디바이스 식별자를 이용하는 룩업(look-up) 모듈을 포함하는 장치.
  4. 제3항에 있어서,
    상기 룩업 모듈은 데이터 구조에서 엔트리를 찾기 위해서 상기 디바이스 식별자를 이용하는 장치.
  5. 제4항에 있어서,
    상기 엔트리는 상기 디바이스가 액세스되는 메모리 범위를 나타내는 장치.
  6. 제4항에 있어서,
    상기 엔트리는 파티션 식별자를 나타내는 장치.
  7. 제1항에 있어서,
    상기 분할 로직은 상기 판정의 결과를 저장하는 캐시를 포함하는 장치.
  8. 제2항에 있어서,
    상기 분할 로직은, 상기 요청에 포함된 파티션 식별자에 기초하여 상기 디바이스가 제1 파티션 또는 제2 파티션에 할당되는지의 여부를 판정하는 장치.
  9. 제2항에 있어서,
    상기 분할 로직은 또한, 상기 제1 어드레스 변환 로직 및 상기 제2 어드레스 변환 로직을 지원하는 변환 지원 로직을 포함하는 장치.
  10. 분할 시스템에서 메모리를 액세스하라는 디바이스로부터의 요청을 수신하는 단계,
    상기 디바이스가 상기 분할 시스템 내의 제1 파티션 또는 제2 파티션에 할당되는지의 여부를 판정하는 단계,
    상기 디바이스가 상기 제1 분할에 할당된다는 판정에 응답하여 상기 제1 어드레스 변환 로직에 상기 요청을 전달하는 단계, 및
    상기 디바이스가 상기 제2 분할에 할당된다는 판정에 응답하여 상기 제2 어드레스 변환 로직에 상기 요청을 전달하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    파티션 식별자를 판정하기 위해서 상기 요청에 포함된 디바이스 식별자를 이용하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    데이터 구조에서 엔트리를 찾기 위해서 상기 디바이스 식별자를 이용하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서,
    상기 엔트리는 상기 디바이스가 액세스되는 메모리 범위를 나타내는 방법.
  14. 제12항에 있어서,
    상기 엔트리는 파티션 식별자를 나타내는 방법.
  15. 제10항에 있어서,
    상기 판정의 결과를 캐시에 저장하는 단계를 더 포함하는 방법.
  16. 제10항에 있어서,
    상기 판정 단계는, 상기 디바이스가 상기 제1 파티션 또는 상기 제2 파티션에 할당되는지의 여부에 대한 이전의 판정 결과를 저장하는 캐시 엔트리를 판독하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    상기 시스템으로부터 제거되는 상기 디바이스에 응답하여 상기 캐시 엔트리를 무효화하는 단계를 더 포함하는 방법.
  18. 제1 파티션 - 상기 제1 파티션은,
    메모리의 제1 부분,
    제1 디바이스, 및
    상기 메모리의 상기 제1 부분에서 제1 게스트 어드레스를 제1 호스트 어드레스로 변환하는 제1 어드레스 변환 로직을 포함함 -,
    제2 파티션 - 상기 제2 파티션은,
    상기 메모리의 제2 부분,
    제2 디바이스, 및
    상기 메모리의 상기 제2 부분에서 제2 게스트 어드레스를 제2 호스트 어드레스로 변환하는 제2 어드레스 변환 로직을 포함함 -, 및
    상기 제1 디바이스로부터의 제1 요청을 상기 제1 어드레스 변환 로직으로 전달하고, 상기 제2 디바이스로부터의 제2 요청을 상기 제2 어드레스 변환 로직으로 전달하는 분할 로직
    을 포함하는 시스템.
  19. 제18항에 있어서,
    상기 분할 로직은, 데이터 구조에서 엔트리를 찾기 위해서 제1 디바이스 식별자를 이용하는 것에 응답하여 상기 제1 요청을 전달하고, 상기 엔트리는 상기 제1 디바이스가 상기 제1 분할에 할당된 것을 나타내는 시스템.
  20. 제18항에 있어서,
    상기 메모리는 DRAM(dynamic random access memory)인 시스템.
KR1020070137832A 2006-12-27 2007-12-26 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환 KR100914081B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/616,662 2006-12-27
US11/616,662 US7685401B2 (en) 2006-12-27 2006-12-27 Guest to host address translation for devices to access memory in a partitioned system

Publications (2)

Publication Number Publication Date
KR20080063125A true KR20080063125A (ko) 2008-07-03
KR100914081B1 KR100914081B1 (ko) 2009-08-27

Family

ID=39048237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070137832A KR100914081B1 (ko) 2006-12-27 2007-12-26 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환

Country Status (8)

Country Link
US (1) US7685401B2 (ko)
EP (1) EP1959348B1 (ko)
JP (3) JP2008165789A (ko)
KR (1) KR100914081B1 (ko)
CN (1) CN101236529B (ko)
DE (2) DE102007062744B4 (ko)
FR (1) FR2910985B1 (ko)
GB (1) GB2445831B (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US20080229053A1 (en) * 2007-03-13 2008-09-18 Edoardo Campini Expanding memory support for a processor using virtualization
US7979869B2 (en) * 2007-09-28 2011-07-12 Oracle America, Inc. Method and system for performing I/O operations using a hypervisor
US20090217280A1 (en) * 2008-02-21 2009-08-27 Honeywell International Inc. Shared-Resource Time Partitioning in a Multi-Core System
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8910169B2 (en) 2008-09-30 2014-12-09 Intel Corporation Methods and systems to perform a computer task in a reduced power consumption state
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8417895B1 (en) * 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8775741B1 (en) 2009-01-13 2014-07-08 Violin Memory Inc. Using temporal access patterns for determining prefetch suitability
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8285961B2 (en) * 2008-11-13 2012-10-09 Grid Iron Systems, Inc. Dynamic performance virtualization for disk access
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
JP5491102B2 (ja) * 2009-08-27 2014-05-14 ルネサスエレクトロニクス株式会社 データプロセッサ
US8402246B1 (en) 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
CN102576333B (zh) * 2009-10-05 2016-01-13 马维尔国际贸易有限公司 非易失性存储器中的数据高速缓存
US8688897B2 (en) * 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US9229757B2 (en) 2010-07-19 2016-01-05 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US8863117B2 (en) 2010-07-19 2014-10-14 International Business Machines Corporation Optimizing a file system interface in a virtualized computing environment
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8954959B2 (en) * 2010-09-16 2015-02-10 Red Hat Israel, Ltd. Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
US20140007098A1 (en) * 2011-12-28 2014-01-02 Paul M. Stillwell, Jr. Processor accelerator interface virtualization
US9280488B2 (en) * 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9740624B2 (en) * 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
GB2511794B (en) * 2013-03-13 2020-12-02 Advanced Risc Mach Ltd A Protection Unit and Method for Controlling Access by Plural Processes to a Storage Unit
JP5962853B2 (ja) * 2013-04-22 2016-08-03 富士通株式会社 情報処理装置、方法、及びプログラム
US9411765B2 (en) * 2013-12-20 2016-08-09 Qualcomm Incorporated Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment
WO2015162745A1 (ja) * 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム
US10089238B2 (en) 2014-07-17 2018-10-02 Qualcomm Incorporated Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) 2014-07-17 2017-04-04 Qualcomm Incorporated Method and apparatus for flexible cache partitioning by sets and ways into component caches
US10180908B2 (en) 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US11163682B2 (en) * 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
US20180203807A1 (en) * 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
CN110336563A (zh) * 2019-05-09 2019-10-15 核芯互联(北京)科技有限公司 一种工作模式选择方法、装置、系统及存储介质
CN112667354B (zh) * 2020-12-30 2022-05-06 上海壁仞智能科技有限公司 计算机可读取存储介质、虚拟化寄存器装置及访问该装置的方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619747B2 (ja) * 1984-01-18 1994-03-16 株式会社日立製作所 I/o命令実行方法、i/o割込処理方法およびそれらを用いた計算機システム
US4843541A (en) * 1987-07-29 1989-06-27 International Business Machines Corporation Logical resource partitioning of a data processing system
US5426748A (en) * 1992-01-03 1995-06-20 International Business Machines Corporation Guest/host extended addressing method and means with contiguous access list entries
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
US6976083B1 (en) * 1999-02-19 2005-12-13 International Business Machines Corporation Apparatus for providing direct data processing access using a queued direct input-output device
US6438671B1 (en) * 1999-07-01 2002-08-20 International Business Machines Corporation Generating partition corresponding real address in partitioned mode supporting system
JP2001051900A (ja) * 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US7003771B1 (en) * 2000-06-08 2006-02-21 International Business Machines Corporation Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource
JP2002132518A (ja) * 2000-10-25 2002-05-10 Fujitsu Ltd 仮想計算機システムおよび仮想計算機間の入出力装置交換方法
JP4018900B2 (ja) * 2001-11-22 2007-12-05 株式会社日立製作所 仮想計算機システム及びプログラム
US20030110205A1 (en) * 2001-12-07 2003-06-12 Leith Johnson Virtualized resources in a partitionable server
US7124273B2 (en) * 2002-02-25 2006-10-17 Intel Corporation Method and apparatus for translating guest physical addresses in a virtual machine environment
US6834296B2 (en) * 2002-03-01 2004-12-21 International Business Machines Corporation Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions
US7054985B2 (en) * 2002-07-23 2006-05-30 Hewlett-Packard Development Company, L.P. Multiple hardware partitions under one input/output hub
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US20040098544A1 (en) * 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US7076634B2 (en) * 2003-04-24 2006-07-11 International Business Machines Corporation Address translation manager and method for a logically partitioned computer system
US7424709B2 (en) 2003-09-15 2008-09-09 Intel Corporation Use of multiple virtual machine monitors to handle privileged events
US7200687B2 (en) * 2003-09-25 2007-04-03 International Business Machines Coporation Location-based non-uniform allocation of memory resources in memory mapped input/output fabric
CN1253829C (zh) * 2003-10-15 2006-04-26 大唐微电子技术有限公司 一种优化存储器逻辑分区结构的非cpu集成电路卡
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7426625B2 (en) * 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US8914606B2 (en) * 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
JP4982971B2 (ja) * 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7302547B2 (en) * 2004-09-30 2007-11-27 Hewlett-Packard Development Company, L.P. Method and system for supporting virtual mappings for shared firmware
US9058292B2 (en) * 2004-12-29 2015-06-16 Intel Corporation System and method for one step address translation of graphics addresses in virtualization
US7395405B2 (en) 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7987464B2 (en) * 2006-07-25 2011-07-26 International Business Machines Corporation Logical partitioning and virtualization in a heterogeneous architecture

Also Published As

Publication number Publication date
GB2445831A (en) 2008-07-23
CN101236529A (zh) 2008-08-06
KR100914081B1 (ko) 2009-08-27
DE102007062744B4 (de) 2018-09-06
JP2008165789A (ja) 2008-07-17
JP2014017012A (ja) 2014-01-30
US7685401B2 (en) 2010-03-23
DE102007063946B4 (de) 2024-04-25
FR2910985B1 (fr) 2015-09-04
CN101236529B (zh) 2013-02-06
DE102007062744A1 (de) 2008-08-14
EP1959348B1 (en) 2018-05-16
GB0724597D0 (en) 2008-01-30
FR2910985A1 (fr) 2008-07-04
JP2012022694A (ja) 2012-02-02
EP1959348A3 (en) 2009-07-22
US20080162864A1 (en) 2008-07-03
JP5735070B2 (ja) 2015-06-17
EP1959348A2 (en) 2008-08-20
GB2445831B (en) 2010-03-31

Similar Documents

Publication Publication Date Title
KR100914081B1 (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
US7937534B2 (en) Performing direct cache access transactions based on a memory access data structure
US7490191B2 (en) Sharing information between guests in a virtual machine environment
US8041920B2 (en) Partitioning memory mapped device configuration space
US7467381B2 (en) Resource partitioning and direct access utilizing hardware support for virtualization
US8661181B2 (en) Memory protection unit in a virtual processing environment
US7984203B2 (en) Address window support for direct memory access translation
CN109074316B (zh) 页面错误解决方案
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
US8560806B2 (en) Using a multiple stage memory address translation structure to manage protected micro-contexts
US20140108701A1 (en) Memory protection unit in a virtual processing environment
US8549254B2 (en) Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts
US20070168641A1 (en) Virtualizing an IOMMU
US20130036291A1 (en) Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts
US9875132B2 (en) Input output memory management unit based zero copy virtual machine to virtual machine communication
US20070220231A1 (en) Virtual address translation by a processor for a peripheral device

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121102

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 11