KR101558427B1 - 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템 - Google Patents

가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템 Download PDF

Info

Publication number
KR101558427B1
KR101558427B1 KR1020147008659A KR20147008659A KR101558427B1 KR 101558427 B1 KR101558427 B1 KR 101558427B1 KR 1020147008659 A KR1020147008659 A KR 1020147008659A KR 20147008659 A KR20147008659 A KR 20147008659A KR 101558427 B1 KR101558427 B1 KR 101558427B1
Authority
KR
South Korea
Prior art keywords
processor
virtual
data
data access
controller
Prior art date
Application number
KR1020147008659A
Other languages
English (en)
Other versions
KR20140069079A (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 KR20140069079A publication Critical patent/KR20140069079A/ko
Application granted granted Critical
Publication of KR101558427B1 publication Critical patent/KR101558427B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0058Bus-related hardware virtualisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

방법은, 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하는 컨트롤러에서 물리적 어드레스를 공유 메모리 대신 발신 디바이스로 선택적으로 라우팅하는 단계를 포함한다. 물리적 어드레스는 가상 디바이스로부터의 데이터 액세스에 대응한다. 방법은 가상화된 입/출력을 구현하는 컴퓨팅 시스템에 로컬 코히어런시(local coherency)를 제공할 수 있다.

Description

가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템{COMPUTER SYSTEM WITH PROCESSOR LOCAL COHERENCY FOR VIRTUALIZED INPUT/OUTPUT}
본 개시물은 일반적으로 가상화된 입/출력(virtualized input/output)을 위한 프로세서 로컬 코히어런시(processor local coherency)에 관한 것이다.
멀티프로세서 컴퓨터 시스템은 하나 또는 그 초과의 입/출력(I/O) 디바이스들로의 액세스를 갖는 다수의 프로세서들을 포함할 수 있다. 몇몇 시스템들은 I/O 가상화를 지원할 수 있다. 예를 들어, 듀얼 프로세서 시스템에서 단일 I/O 디바이스를 가상화하는 것은, 단일 I/O 디바이스를 2개의 독립적인 I/O 디바이스들로 보이게 하며, 여기서, 각각의 프로세서는 2개의 독립적인 I/O 디바이스들 중 하나를 "소유한다(own)". 가상화는 다수의 프로세서들에 의한 I/O 디바이스들의 공유를 용이하게 할 수 있다. 통상적으로, 가상화된 시스템들은 완전히 코히어런트하게 유지될 수 있다. 즉, 멀티프로세서 시스템에서의 각각의 프로세서는 가상 I/O 디바이스들과 공유 메모리 사이의 모든 I/O 동작들을 추적할 수 있다.
완전한 코히어런시(full coherency)는 하드웨어 또는 소프트웨어를 통해서 구현될 수 있다. 그러나, 가상 I/O 디바이스들의 수 및 프로세서들의 수가 증가함에 따라서, 완전히 코히어런트한 시스템들에서는 확장성 문제들이 발생할 수 있다. 예를 들어, 프로세서들의 수를 증가시키는 것은, 프로세서들 각각이 다른 프로세서들 각각에 의해 수행되는 가상화된 I/O 디바이스의 각각의 판독 및 기록 동작에 대해 인지하고 있기 때문에, 코히어런트 가상화된 I/O 디바이스와 관련된 복잡성을 증가시킬 수 있다. 이는, 프로세서들 각각에서의 추가적인 데이터 프로세싱을 수반할 수 있으며 공유되는 리소스들(예컨대, 프로세서들과 공유 메모리 사이의 버스)을 더 소모할 수 있다.
가상화된 시스템에서, 가상 I/O 디바이스들은 가상 어드레스 공간에 기초하여 동작할 수 있는 반면, 공유 메모리(예컨대, 랜덤 액세스 메모리(RAM))는 물리적 어드레스 공간에 기초하여 어드레싱을 지원할 수 있다. 이러한 시스템들에서, 컨트롤러(예컨대, I/O 메모리 관리 유닛(MMU; memory management unit) 컨트롤러)가 가상 I/O 디바이스들에, (또한, 가상 프로세서들로 가상화될 수 있는) 프로세서들에, 그리고 공유 메모리에 커플링될 수 있다. 컨트롤러는 가상 어드레스들과 물리적 어드레스들 사이에서 전환할 수 있다. 완전히 코히어런트한 시스템에서, 가상 I/O 디바이스와 관련된 프로세서(예컨대, "발신(originating)" 프로세서)가 데이터 액세스 요청을 행하는 경우, 컨트롤러는 대응하는 데이터 액세스(예컨대, 가상 디바이스에 의해 개시된 DMA(direct memory access) 기록 동작)를 공유 메모리로 라우팅할 수 있다. 완전한 코히어런시를 유지하기 위해, 발신 프로세서를 포함하는 모든 프로세서들은 기록 동작을 반영하기 위해 자신의 개별적인 캐시들을 업데이트할 수 있다. 그러나, 가상화된 시스템에서, 특정 가상 디바이스에 의해 공유 메모리에 기록된 데이터는 언제나 오직 대응하는 프로세서 또는 가상 프로세서(즉, 데이터 액세스 요청을 발신한(originated) 프로세서)에 의해서만 액세스될 수 있다. 이에 따라, 시스템에서 이러한 데이터와 모든 다른 프로세서들 사이의 완전한 코히어런시를 유지하는 것은 유용하지 않을 수 있다.
개시된 시스템들 및 방법들에 따르면, 가상화된 I/O에 대한 프로세서 로컬 코히어런시가 구현될 수 있다. 예를 들어, 컨트롤러는, 물리적 어드레스들 및 그와 관련된 데이터를, 공유 메모리 대신 발신(예컨대, 요청) 프로세서로 선택적으로 재지향시킬 수 있다. 발신 프로세서는, 시스템 내의 다른 프로세서들이 영향을 받지 않을 수 있으면서, 데이터를 캐싱할 수 있고 후속하여 그 데이터를 공유 메모리 내에 저장할 수 있다. N개의 프로세서들에 대응하는 N개의 가상 I/O 디바이스들을 포함하는 시스템(여기서, N은 1보다 큰 정수임)에서, 각각의 프로세서는 자신의 대응하는 가상 I/O 디바이스에 대해 코히어런트할 수 있지만, 임의의 다른 프로세서 또는 가상 I/O 디바이스에 대해서는 코히어런트하지 않을 수 있다.
특정 실시예에서, 방법은 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하는 컨트롤러에서 물리적 어드레스를 공유 메모리 대신 발신 디바이스로 선택적으로 라우팅하는 단계를 포함한다. 물리적 어드레스는 가상 디바이스로부터의 데이터 액세스에 대응한다.
다른 특정 실시예에서, 시스템은 가상화된 디바이스, 가상화된 디바이스로의 액세스를 갖는 복수의 디바이스들, 복수의 프로세서들 각각에 의해 공유되는 메모리, 및 가상화된 디바이스에 그리고 복수의 디바이스들 각각에 커플링된 컨트롤러를 포함한다. 컨트롤러는 데이터 액세스에 대응하는 물리적 어드레스(및 데이터)를 가상화된 디바이스로부터 메모리 대신 복수의 디바이스들 중 하나로 선택적으로 재지향시키도록 구성된다.
다른 특정 실시예에서, 장치는 컨트롤러를 포함한다. 컨트롤러는, 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하기 위한 수단 및 데이터 액세스에 대응하는 물리적 어드레스를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 선택적으로 라우팅하기 위한 수단을 포함한다.
다른 특정 실시예에서, 장치는 컨트롤러를 포함한다. 컨트롤러는 가상 어드레스들 및 물리적 어드레스들을 저장하는 메모리를 포함한다. 컨트롤러는 또한 데이터 액세스에 대응하는 물리적 어드레스를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 선택적으로 라우팅하도록 구성된 재지향 유닛을 포함한다.
다른 특정 실시예에서, 유형의(tangible) 프로세서-판독가능 매체는 가상 디바이스로의 액세스를 제어하는 컨트롤러에서 프로세서에 의해 실행가능한 명령들을 포함한다. 명령들은, 프로세서로 하여금, 발신 디바이스로부터 가상화된 디바이스로 전송된 액세스 요청들에 대한 버스를 모니터링하게 하고 그리고 데이터(즉, 액세스 요청들에 응답하는 데이터)를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 선택적으로 재지향시키게 한다.
개시된 실시예들 중 적어도 하나에 의해 제공되는 하나의 특정 이점은, 시스템-전체의(system-wide) 하드웨어 코히어런시를 디바이스-특정(예컨대, 프로세서-특정) 코히어런시로 대체하는 것으로 인해 하나 또는 그 초과의 가상화된 디바이스들 및 다수의 프로세서들을 포함하는 시스템에서 데이터 쓰루풋이 개선되고 전력 소모가 감소된다는 것이다.
본 개시물의 다른 양상들, 이점들, 및 특징들은, 이하의 섹션들: 도면의 간단한 설명, 상세한 설명, 및 청구범위를 포함하는 전체 명세서의 리뷰 이후에 명료하게 될 것이다.
도 1은 데이터 액세스에 대응하는 데이터를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 라우팅하도록 동작가능한 시스템의 특정 예시적인 실시예의 도면이다.
도 2는 데이터를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 라우팅하는 방법의 특정 예시적인 실시예의 흐름도이다.
도 3은 데이터를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스로 라우팅하는 방법의 다른 특정 예시적인 실시예의 흐름도이다.
부분적으로 코히어런트한(예컨대, 프로세서 로컬 코히어런트한) 가상화된 입/출력(I/O) 시스템은 데이터 액세스에 대응하는 데이터를 가상 디바이스로부터 메모리 대신 대응하는 발신 디바이스(예컨대, 프로세서)로 라우팅할 수 있다. 예를 들어, 프로세서가, 대응하는 가상 디바이스로부터 데이터를 요청하는 경우, MMU 컨트롤러는 요청된 데이터 및 관련 물리적 어드레스를 가상 디바이스로부터 공유 메모리 대신 요청 프로세서로 라우팅할 수 있다. 시스템에서 다른 프로세서들은 라우팅에 대해 알지 못할 수 있다. 다른 프로세서들의 논-코히어런시(non-coherency)는, 특정 조건들 하에서 허용가능하거나 또는 유리할 수 있는데, 이는, 예를 들어, 다른 프로세서들이 요청된 데이터에 대한 액세스를 가지지 않거나 또는 액세스를 필요로 하지 않기 때문이다.
도 1은 데이터 액세스에 대응하는 데이터를 가상 디바이스로부터 공유 메모리 대신 발신 디바이스(예컨대, 발신 프로세서 또는 다른 디바이스)로 선택적으로 라우팅하도록 동작가능한 시스템(100)의 특정 예시적인 실시예의 도면이다. 시스템(100)은 I/O 디바이스(140), 공유 메모리(150), 및 복수의 프로세서들(예컨대, 예시적인 프로세서들(120, 130))에 통신가능하게 커플링된 컨트롤러(110)를 포함한다. 특정 실시예에서, 컨트롤러(110)는 입/출력(I/O) 메모리 관리 유닛(MMU) 컨트롤러일 수 있다. 대안적으로, 컨트롤러는 다른 유형의 컨트롤러일 수 있다. 컨트롤러(110), 프로세서들(120 및 130), I/O 디바이스(140), 및 공유 메모리(150) 사이를 커플링하는 것은, 하나 또는 그 초과의 하드웨어 버스들(170) 및 통신 회로를 통해서 컴퓨터 시스템에서 구현될 수 있다. 특정 실시예에서, 공유 메모리(150)는 랜덤 액세스 메모리(RAM)일 수 있다.
도 1의 특정 실시예가 듀얼 프로세서 시스템을 예시하지만, 2개보다 많은 또는 2개보다 적은 프로세서들이 시스템(100)에 존재할 수 있다는 것에 유의해야 한다. 예를 들어, 시스템(100)은 컴퓨터 서버와 같은 컴퓨팅 디바이스 내에 포함될 수 있고, 컴퓨팅 디바이스는 2개보다 많은 프로세서들을 포함할 수 있거나 또는 가상화를 지원하는 단일-프로세서 서버 또는 디바이스일 수 있다.
프로세서들(120 및 130)은 가상화를 지원할 수 있다. 예를 들어, 프로세서들(120 및 130) 각각은 캐시(124 및 134)를 포함할 수 있고, 예시된 가상 프로세서들(122 및 132)과 같은 하나 또는 그 초과의 가상 프로세서들을 지원할 수 있다. 특정 실시예에서, 각각의 가상 프로세서(122, 132)는 기본(underlying) 프로세서(120, 130)에서 실행되고 있는 특정 동작 시스템에 대응할 수 있다. I/O 디바이스(140)는 또한 가상화를 지원할 수 있다. 예를 들어, 시스템(100)에서 "n"개의 프로세서들(120, 130)이 존재하는 경우, I/O 디바이스(140)는 "n"개의 대응 가상 디바이스들(142, 144)을 지원할 수 있다(도 1에 도시된 예시에서는, "n"은 2와 동일함). 특정 실시예에서, 각각의 가상 디바이스(142, 144)는 I/O 가상화 프로토콜에 따른 커맨드들을 통해서 액세스가능할 수 있다. 예를 들어, 가상 디바이스들(142, 144)은 PCIe(peripheral component interconnect express) 하드웨어 토폴로지를 갖는 컴퓨터 시스템(예컨대, PCIe 버스를 갖는 컴퓨터 시스템)에서 단일 루트 I/O 가상화(SR-IOV) 프로토콜에 따르는 커맨드들을 통해서 액세스가능할 수 있다. 가상 디바이스들(142, 144)은 프로세서들(120, 130)의 제어하에서 데이터 판독 및/또는 데이터 기록 동작들(예컨대, DMA(direct memory access) 동작들)을 수행할 수 있다.
컨트롤러(110)는 가상 디바이스들(142, 144)로의 액세스를 제어할 수 있고 가상 어드레스들의 물리적 어드레스들로의 전환 및 물리적 어드레스들의 가상 어드레스들로의 전환을 관리할 수 있다. 특정 실시예에서, 컨트롤러(110)는 버스 모니터링 유닛(112), 재지향 유닛(114), 및 가상-물리적 어드레스 테이블(116)을 포함할 수 있다. 버스 모니터링 유닛(112), 재지향 유닛(114), 및 가상-물리적 어드레스 테이블(116)은, 전용 하드웨어 및 메모리를 이용하여, 컨트롤러(110) 또는 그 내부의 프로세서에 의해 실행가능한 명령들을 이용하여, 또는 이들의 임의의 조합을 이용하여 구현될 수 있다.
버스 모니터링 유닛(112)은 프로세서들(120, 130) 및/또는 가상 프로세서들(122, 132) 중 임의의 것으로부터 가상화된 디바이스들(142, 144)에 전송된 데이터 액세스 요청들에 대한 버스(170)를 모니터링할 수 있다. 예를 들어, 버스 모니터링 유닛(112)은 제 1 프로세서(120)에 의해 대응하는 제 1 가상 디바이스(142)에 전송된 데이터 액세스 요청(126)을 검출할 수 있다. 데이터 액세스 요청들은 데이터 판독들, 데이터 기록들, 또는 이들의 임의의 조합에 대한 요청들일 수 있다.
재지향 유닛(114)은 물리적 어드레스들 및 데이터를 공유 메모리(150) 대신 프로세서들(120, 130)로 선택적으로 재지향시키도록 동작가능할 수 있다. 예를 들어, 컨트롤러(110)가 제 1 프로세서(120)에 의해 전송된 데이터 액세스 요청(126)에 응답하여 I/O 디바이스(140)로부터 데이터 액세스(160)를 수신하는 경우, 데이터 액세스(160)는 목적지 가상 어드레스(162)를 특정할 수 있고 데이터(164)(예컨대, 목적지 가상 어드레스(162)에 기록될 데이터)를 포함할 수 있다. 재지향 유닛(114)은 목적지 가상 어드레스(162)를 공유 메모리(150) 내의 대응하는 목적지 물리적 어드레스로 매핑하기 위해 가상-물리적 어드레스 테이블(116)에 액세스할 수 있다. 특정 실시예에서, 공유 메모리(150)는 "n"개의 가상 디바이스들(142, 144) 및 "n"개의 프로세서들(120, 130)에 대응하는 "n"개의 파티션들(152, 154)로 분할될 수 있다. 이러한 실시예에서, 목적지 가상 어드레스(162)에 대응하는 목적지 물리적 어드레스가 제 1 프로세서(120)에 대응하는 파티션(예컨대, 제 1 파티션(152))에 위치될 수 있다.
재지향 유닛(114)은 또한, 결정된 목적지 물리적 어드레스가 라우팅될 발신 프로세서(120)를 식별할 수 있다. 발신 프로세서(120)는 다양한 방법들에 따라서 식별될 수 있다. 예시하기 위해, 특정 실시예에서, 데이터 액세스(160)는 발신 프로세서 넘버 또는 SR-IOV 데이터(예컨대, SR-IOV 표준에 따라서 하나 또는 그 초과의 데이터 필드들에 저장된 SR-IOV 데이터)(166)를 포함할 수 있고, 재지향 유닛(114)은 이러한 정보에 기초하여 발신 프로세서(120)를 식별할 수 있다. 다른 특정 실시예에서, 시스템(100)은 확장된 어드레스 공간을 지원할 수 있다. 예를 들어, 가상 어드레스(162) 및/또는 물리적 어드레스는 확장된 어드레스일 수 있고, 발신 프로세서(120)는 확장된 어드레스의 적어도 하나의 비트에 기초하여 식별될 수 있다. "2B"개의 프로세서들을 포함하는 시스템에서, 확장된 어드레스의 "B"개의 비트들이 발신 프로세서를 식별하는데 이용될 수 있다. 발신 프로세서(120)를 식별한 때, 재지향 유닛(114)은 목적지 물리적 어드레스 및 데이터(164)를 공유 메모리(150) 대신 발신 프로세서(120)로 라우팅할 수 있다. 특정 실시예에서, 데이터(164)는 대응하는 가상 디바이스에 의한 DMA(direct memory access) 판독 동작에 대응할 수 있고, 여기서, 데이터가 대응하는 로컬 캐시 내에 존재하지 않으면, 대응하는 프로세서(또는 가상 프로세서)는 시스템 메모리로부터 데이터를 리트리브할 수 있다. 예를 들어, 데이터(164)가 대응하는 프로세서에 특정할 수 있기 때문에(즉, 다른 프로세서들에 의해서는 액세스되지 않음), 데이터(164)는 공유 메모리에 기록되는 대신 대응하는 프로세서로 선택적으로 라우팅될 수 있고 그 대응하는 프로세서에 의해 직접 소모될 수 있다. 데이터가 특정 프로세서에 특정한 경우, 그 데이터는 공유 메모리 대신 특정 프로세서로 선택적으로 라우팅될 수 있고, 이에 의해 버스(170) 상에서의 혼잡을 감소시킬 수 있다. 대안적인 실시예에서, 목적지 물리적 어드레스 및 데이터(164)는, 도 1에 예시된 것과 같은 분리된 접속을 통하는 대신, 버스(170)를 통해서 발신 프로세서(120)로 라우팅될 수 있다.
동작 동안, 버스 모니터링 유닛(112)은 프로세서들(120, 130) 중 하나 또는 그 초과로부터의 데이터 액세스 요청들을 검출할 수 있다. 예를 들어, 버스 모니터링 유닛(112)은 제 1 프로세서(120)로부터 제 1 가상 디바이스(142)로의 데이터 액세스 요청(126)을 검출할 수 있고, 여기서 데이터 액세스 요청(126)은 I/O 디바이스(140)로부터의 데이터를 리트리브하는 것에 대응한다. 데이터 액세스 요청(126)에 응답하여, 가상 디바이스(142)는 목적지 가상 어드레스(162) 및 목적지 가상 어드레스(162)에 기록될 데이터(164)를 포함하는 데이터 액세스(160)를 발행할 수 있다. 컨트롤러(110)에서의 재지향 유닛(114)은, 가상-물리적 어드레스 테이블(116)에 기초하여 목적지 가상 어드레스(162)를 대응하는 목적지 물리적 어드레스로 전환할 수 있고, 목적지 물리적 어드레스 및 데이터(164)를 공유 메모리(150) 대신 발신 프로세서(120)로 라우팅할 수 있다.
프로세서(120)는 물리적 어드레스에 기초하여 일 위치에 있는 캐시(124)에 데이터(164)를 저장할 수 있다. 따라서, 가상 디바이스(142) 및 데이터 액세스(160)는 캐시(124)에 대하여 코히어런트할 수 있다. 그러나, 캐시(124)는 공유 메모리(150)에 대하여 그리고 다른 프로세서들과 관련된 다른 캐시들(예컨대, 제 2 프로세서(130)와 관련된 제 2 캐시(134))에 대하여 논-코히어런트할 수 있다. 특정 실시예에서, 발신 프로세서(120)는 공유 메모리(150)에 데이터(164)를 포워딩하는데 책임이 있는 것으로 가정할 수 있다. 예를 들어, 데이터(164)가 캐시(124)에 저장된 후, 발신 프로세서(120)는 목적지 물리적 어드레스에 대응하는 제 1 파티션(152) 내의 위치에 데이터(164)(또는 데이터(164)의 카피본)를 라우팅할 수 있다. 특정 실시예에서, 시스템(100)이 프로세서(120)로부터 프로세서(130)로의 프로세스 이전(process migration)을 가능하게 하는 경우, 프로세서(130)가 데이터(164)에 액세스할 수 있도록, 프로세서(120)는 공유 메모리(150)에 데이터(164)를 포워딩할 수 있다.
특정 실시예에서, 도 1의 시스템(100)은 특정 이벤트들에 대한 소프트웨어-구현되는 코히어런시를 지원할 수 있다. 예를 들어, 도 1의 시스템(100)은 가상 디바이스 초기화, 가상 디바이스 파기(virtual device destruction), 및 (예컨대, 일 프로세서로부터 다른 프로세서로의) 프로세스 이전의 경우에서 소프트웨어-구현되는 완전한 코히어런시를 지원할 수 있다.
따라서, 도 1의 시스템(100)은 시스템-전체의 완전한 코히어런시를 부분적인 코히어런시로 대체할 수 있다. 예를 들어, 시스템(100)에서의 각각의 프로세서-디바이스 쌍은 코히어런트할 수 있다. 그러나, 각각의 프로세서-디바이스 쌍은, 완전히 하드웨어 코히어런트한 시스템에서처럼, 다른 프로세서-디바이스 쌍들에 대해 코히어런트하지는 않을 수 있다. 도 1의 시스템(100)은, 이에 따라, 하드웨어 복잡도를 감소시킬 수 있고, 버스(170) 상에서의 혼잡을 감소시킬 수 있다. 시스템-전체의 완전한 코히어런시를 부분적인 코히어런시로 대체함으로써, 도 1의 시스템(100)은 또한 감소된 전력 소모를 달성할 수 있고 완전히 코히어런트한 시스템들보다 더 낮은 비용으로 구축 또는 동작될 수 있다.
도 2는 데이터를 공유 메모리 대신 프로세서로 라우팅하는 방법(200)의 특정 예시적인 실시예의 흐름도이다. 예시적인 실시예에서, 방법(200)은 도 1의 컨트롤러(110)에 의해 수행될 수 있다.
방법(200)은, 202에서, 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하는 컨트롤러에서, 가상 디바이스로부터 데이터 액세스를 수신하는 단계를 포함할 수 있다. 데이터 액세스는 가상 어드레스를 특정할 수 있다. 예를 들어, 도 1에서, 컨트롤러(110)는 제 1 가상 디바이스(142)로부터 데이터 액세스(160)를 수신할 수 있고, 여기서 데이터 액세스(160)는 목적지 가상 어드레스(162)를 특정한다.
방법(200)은 또한, 204에서, 가상 어드레스에 기초하여 데이터 액세스에 대응하는 물리적 어드레스를 결정하는 단계를 포함할 수 있다. 예를 들어, 도 1에서, 재지향 유닛(114)은 가상-물리적 어드레스 테이블(116)에 기초하여 목적지 가상 어드레스(162)로부터 목적지 물리적 어드레스를 결정할 수 있다.
방법(200)은, 206에서, 물리적 어드레스가 라우팅되는 프로세서를 식별하는 단계를 더 포함할 수 있다. 식별된 프로세서는 데이터 액세스의 발신 프로세서일 수 있다. 특정 실시예에서, 발신 프로세서는, 프로세서 넘버, SR-IOV 데이터, 또는 물리적 어드레스의 하나 또는 그 초과의 비트들에 기초하여 식별될 수 있다. 예를 들어, 도 1에서, 재지향 유닛(114)은 발신 프로세서 넘버/SR-IOV 데이터(166)에 기초하여 또는 목적지 물리적 어드레스의 하나 또는 그 초과의 비트들에 기초하여 제 1 프로세서(120)를 발신 프로세서로서 식별할 수 있다.
방법(200)은, 208에서, 데이터 액세스에 대응하는 물리적 어드레스를 공유 메모리 대신 프로세서로 선택적으로 라우팅하는 단계를 포함할 수 있다. 프로세서는 가상 디바이스에 대응하는 가상 프로세서를 지원할 수 있다. 예를 들어, 도 1에서, 재지향 유닛(114)은 목적지 물리적 어드레스 및 대응하는 데이터(164)를 공유 메모리(150) 대신 발신 프로세서(120)로 라우팅할 수 있으며, 여기서 발신 프로세서(120)는 제 1 가상 디바이스(142)에 대응하는 제 1 가상 프로세서(122)를 지원한다. 특정 실시예에서, 발신 프로세서(120)는 물리적 어드레스에 기초하여 결정된 일 위치에서의 캐시(124)에 데이터(164)를 저장할 수 있고, 후속하여 그 데이터를 공유 메모리(150)의 제 1 파티션(152)으로 포워딩할 수 있다. 특정 실시예에서, 데이터(164)가 공유 메모리(150)에 저장된 후, 데이터(164)는 발신 프로세서(120)(예컨대, 제 2 프로세서(130)) 이외의 프로세서들에 의해 액세스가능할 수 있다.
도 3은 가상화된 디바이스로부터의 데이터를 라우팅하는 방법(300)의 다른 특정 예시적인 실시예의 흐름도이다. 예시적인 실시예에서, 방법(300)은 도 1의 컨트롤러(110)에 의해 수행될 수 있다.
방법(300)은, 302에서, 가상화된 디바이스로의 액세스를 제어하는 컨트롤러에서, 발신 프로세서로부터 가상화된 디바이스로의 액세스 요청들에 대한 버스를 모니터링하는 단계를 포함할 수 있다. 예를 들어, 도 1에서, 컨트롤러(110)의 버스 모니터링 유닛(112)은 데이터 액세스 요청(126)과 같은 액세스 요청들에 대한 버스(170)를 모니터링할 수 있다. 발신 프로세서(120)로부터 I/O 디바이스(140)로의 데이터 액세스 요청(126)을 검출하는 것에 응답하여, 컨트롤러(110)는 데이터 액세스 요청(126)(예컨대, 데이터 액세스(160))에 대한 응답을 위해 I/O 디바이스(140)의 통신들을 모니터링하기 시작할 수 있다.
방법(300)은, 304에서, 가상화된 디바이스로부터 데이터를 공유 메모리로 전송하는 대신, 이 데이터를 가상화된 디바이스로부터 발신 프로세서로 선택적으로 재지향시키는 단계를 포함할 수 있다. 예시적인 실시예에서, 공유 메모리는 컨트롤러에 커플링된 복수의 프로세서들에 의해 공유될 수 있다. 예를 들어, 도 1에서, 컨트롤러(110)의 재지향 유닛(114)은 데이터(164)를 공유 메모리(150) 대신 발신 프로세서(120)로 선택적으로 재지향시킬 수 있다. 특정 실시예에서, 방법(300)은, 306에서, 발신 프로세서에서 컨트롤러에 의해 라우팅된 데이터를 캐싱하는 단계, 및 후속하여, 발신 프로세서에 할당된 데이터를 공유 메모리의 파티션에 저장하는 단계를 더 포함할 수 있다. 예를 들어, 도 1에서, 발신 프로세서(120)는 캐시(124)에 데이터(164)를 저장할 수 있고, 후속하여, 발신 프로세서(120)에 할당된 공유 메모리(150)의 제 1 파티션(152)에 저장하기 위해 데이터(164)를 전송할 수 있다.
도 2 및 도 3의 방법들(200, 300)은 시스템-전체의 완전한 코히어런시를 부분적인 코히어런시의 다수의 인스턴스들로 대체할 수 있다. 예를 들어, 각각의 프로세서-디바이스 쌍(예컨대, 도 1의 제 1 프로세서(120)와 제 1 가상 디바이스(142), 및 도 1의 제 2 프로세서(130)와 제 2 가상 디바이스(144))은 내부적으로 코히어런트할 수 있지만, 완전히 코히어런트한 시스템에서처럼, 다른 프로세서-디바이스 쌍들에 대해 코히어런트하지는 않을 수 있다. 따라서, 도 2 및 도 3의 방법들(200, 300)은, 가상화된 시스템(예컨대, SR-IOV 표준에 따라서 가상화된 디바이스들을 갖는 컴퓨터 서버)에서 감소된 하드웨어 복잡도, 감소된 버스 혼잡, 및 더 낮은 전력 소모를 달성할 수 있다.
설명된 실시예들과 함께, 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하기 위한 수단을 갖는 컨트롤러를 포함하는 장치가 개시된다. 예를 들어, 전환을 관리하기 위한 수단은 도 1의 컨트롤러(110), 도 1의 재지향 유닛(114), 디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하도록 구성된 하나 또는 그 초과의 다른 디바이스들, 또는 이들의 임의의 조합 중 하나 또는 그 초과를 포함할 수 있다.
컨트롤러는 또한 데이터 액세스에 대응하는 데이터 및 물리적 어드레스를 가상 디바이스로부터 공유 메모리 대신 프로세서로 라우팅하기 위한 수단을 포함할 수 있다. 예를 들어, 라우팅하기 위한 수단은, 도 1의 컨트롤러(110), 도 1의 재지향 유닛(114), 물리적 어드레스들을 공유 메모리 대신 프로세서로 라우팅하도록 구성된 하나 또는 그 초과의 다른 디바이스들, 또는 이들의 임의의 조합 중 하나 또는 그 초과를 포함할 수 있다.
당업자들은, 본원에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 이 둘의 조합들로서 구현될 수 있다는 것을 더 인식할 것이다. 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능과 관련하여 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지 또는 소프트웨어로서 구현되는지 여부는 특정한 애플리케이션 및 전체 시스템에 대하여 부과되는 설계 제약들에 따라 좌우된다. 당업자들은 설명된 기능을 각각의 특정한 애플리케이션에 대하여 다양한 방식들로 구현할 수 있으나, 이러한 구현 결정들은 본 개시물의 범위를 벗어나는 것을 야기하는 것으로 해석되어서는 안된다.
본원에 개시된 실시예들과 관련하여 설명된 방법 또는 알고리즘의 단계들은 직접 하드웨어로 구현되거나, 프로세서에 의해 실행되는 소프트웨어 모듈로 구현되거나, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 RAM(random access memory), 플래시 메모리, ROM(read-only memory), PROM(programmable read-only memory), EPROM(erasable programmable read-only memory), EEPROM(electrically erasable programmable read-only memory), 레지스터들, 하드 디스크, 탈착식 디스크, CD-ROM(compact disc read-only memory), 또는 당업계에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 비-일시적(예컨대, 유형의) 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록, 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC(application-specific integrated circuit) 내에 상주할 수 있다. ASIC는 컴퓨팅 디바이스 또는 사용자 단말 내에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말 내에 이산 컴포넌트들로서 상주할 수 있다.
개시된 실시예들의 이전의 설명은 당업자가 개시된 실시예들을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 당업자들에게 용이하게 명백할 것이며, 본원에 정의된 원리들은 본 개시물의 범위를 벗어나지 않고 다른 실시예들에 적용될 수 있다. 따라서, 본 개시물은 본원에 나타낸 실시예들로 제한되는 것으로 의도되는 것이 아니라, 후술하는 청구범위에 의해 정의되는 바와 같은 원리들 및 신규한 특징들과 가능한 일치하는 최광의의 범위에 부합할 것이다.

Claims (23)

  1. 방법으로서,
    디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하는 컨트롤러에서, 물리적 어드레스를 특정한 디바이스로 선택적으로 라우팅하는 단계를 포함하고,
    상기 물리적 어드레스는 가상 디바이스에 의하여 개시되는 데이터 액세스 동작에 대응하고,
    상기 특정한 디바이스는 제 1 프로세서를 포함하고, 그리고
    상기 특정한 디바이스는 상기 가상 디바이스와 구별되는,
    방법.
  2. 제 1 항에 있어서,
    가상 어드레스에 기초하여 상기 물리적 어드레스를 결정하는 단계를 더 포함하고,
    상기 데이터 액세스 동작은 상기 가상 어드레스를 특정하는,
    방법.
  3. 제 1 항에 있어서,
    상기 제 1 프로세서는 가상 프로세서를 지원하고,
    상기 가상 프로세서는 상기 가상 디바이스에 대응하고, 그리고
    상기 가상 디바이스는 상기 가상 프로세서로부터 상기 가상 디바이스로 입/출력(I/O) 가상화 프로토콜에 따라 하나 이상의 커맨드들을 전송함으로써 상기 가상 프로세서에 액세스 가능한,
    방법.
  4. 제 3 항에 있어서,
    상기 컨트롤러는 입/출력(I/O) 메모리 관리 유닛(MMU; memory management unit) 컨트롤러를 포함하고, 그리고
    상기 I/O 가상화 프로토콜은 단일 루트 입/출력 가상화(SR-IOV; single root input/output virtualization) 프로토콜을 포함하는,
    방법.
  5. 제 1 항에 있어서,
    상기 물리적 어드레스를 라우팅하기 전에 상기 특정한 디바이스를 식별하는 단계를 더 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 특정한 디바이스는 상기 데이터 액세스 동작과 관련된 프로세서 넘버에 기초하여 또는 상기 데이터 액세스와 관련된 단일 루트 입/출력 가상화(SR-IOV) 데이터에 기초하여 식별되는,
    방법.
  7. 제 1 항에 있어서,
    상기 물리적 어드레스를 라우팅하기 전에 상기 특정한 디바이스를 식별하는 단계를 더 포함하고,
    상기 물리적 어드레스는 확장된 어드레스이고, 그리고
    상기 특정한 디바이스는 상기 확장된 어드레스의 적어도 하나의 비트에 기초하여 식별되는,
    방법.
  8. 제 1 항에 있어서,
    상기 데이터 액세스 동작은 기록 동작, 판독 동작, 또는 이들의 조합인,
    방법.
  9. 제 1 항에 있어서,
    상기 가상 디바이스는 가상화된 입/출력 디바이스를 포함하는,
    방법.
  10. 제 1 항에 있어서,
    상기 제 1 프로세서는 제 1 캐시 메모리를 포함하고,
    상기 데이터 액세스 동작은 상기 제 1 캐시 메모리에 대하여 코히어런트(coherent)하고,
    상기 제 1 캐시 메모리는 공유 메모리로의 액세스를 갖는 제 2 프로세서의 제 2 캐시 메모리에 대하여 논-코히어런트(non-coherent)하고, 그리고
    상기 공유 메모리는 상기 제 1 프로세서와 상기 제 2 프로세서에 의하여 공유되는,
    방법.
  11. 제 1 항에 있어서,
    상기 제 1 프로세서는 캐시 메모리를 포함하고, 그리고
    상기 제 1 프로세서는 상기 물리적 어드레스에 기초하여 결정된 제 1 위치에서 상기 캐시 메모리에 데이터를 저장하는,
    방법.
  12. 제 11 항에 있어서,
    상기 데이터가 상기 캐시 메모리에 저장된 후, 상기 제 1 프로세서는 공유 메모리의 제 2 위치에 상기 데이터를 전송하고,
    상기 제 2 위치는 상기 물리적 어드레스에 대응하는,
    방법.
  13. 제 1 항에 있어서,
    상기 데이터 액세스 동작은 상기 가상 디바이스에 의해 개시되는 DMA(direct memory access) 판독 동작인,
    방법.
  14. 시스템으로서,
    가상화된 디바이스;
    상기 가상화된 디바이스로의 액세스를 갖는 복수의 디바이스들;
    상기 복수의 디바이스들 각각에 의해 공유되는 메모리; 및
    상기 가상화된 디바이스에 그리고 상기 복수의 디바이스들 각각에 커플링된 컨트롤러를 포함하고,
    상기 컨트롤러는 데이터를 상기 복수의 디바이스들 중 특정한 디바이스로 선택적으로 재지향(redirect)시키도록 구성되고,
    상기 데이터는 상기 가상화된 디비이스에 의하여 개시되는 데이터 액세스 동작에 의하여 특정되고,
    상기 특정한 디바이스는 프로세서를 포함하고, 그리고
    상기 특정한 디바이스는 상기 가상화된 디바이스와 구별되는,
    시스템.
  15. 제 14 항에 있어서,
    상기 컨트롤러는 입/출력(I/O) 메모리 관리 유닛(MMU) 컨트롤러를 포함하고,
    상기 데이터 액세스 동작은 가상 어드레스를 특정하고,
    물리적 어드레스는 상기 가상 어드레스에 기초하여 결정되고,
    상기 물리적 어드레스는 공유 메모리 내의 제 1 위치와 관련되고, 그리고
    상기 데이터는 상기 특정한 디바이스와 관련된 제 2 위치로 선택적으로 재지향되고,
    상기 제 2 위치는 상기 제 1 위치와 구별되는,
    시스템.
  16. 장치로서,
    컨트롤러를 포함하고,
    상기 컨트롤러는:
    디바이스 가상 어드레스들의 물리적 어드레스들로의 전환을 관리하기 위한 수단; 및
    물리적 어드레스를 특정한 디바이스로 선택적으로 라우팅하기 위한 수단을 포함하고,
    상기 물리적 어드레스는 가상 디바이스에 의하여 개시되는 데이터 액세스 동작에 대응하고,
    상기 특정한 디바이스는 프로세서를 포함하고, 그리고
    상기 특정한 디바이스는 상기 가상 디바이스와 구별되는,
    장치.
  17. 제 16 항에 있어서,
    상기 프로세서는 데이터 액세스 요청의 발신 프로세서이고,
    상기 데이터 액세스 동작은 상기 데이터 액세스 요청에 기초하고, 그리고
    상기 컨트롤러는 상기 발신 프로세서를 식별하기 위한 수단을 더 포함하는,
    장치.
  18. 장치로서,
    컨트롤러를 포함하고,
    상기 컨트롤러는:
    가상 어드레스들 및 물리적 어드레스들을 저장하는 메모리; 및
    물리적 어드레스를 특정한 디바이스로 선택적으로 라우팅하도록 구성된 재지향 유닛을 포함하고,
    상기 물리적 어드레스는 가상 디바이스에 의하여 개시되는 데이터 액세스 동작에 대응하고,
    상기 특정한 디바이스는 프로세서를 포함하고, 그리고
    상기 특정한 디바이스는 상기 가상 디바이스와 구별되는,
    장치.
  19. 제 18 항에 있어서,
    상기 메모리는 상기 가상 어드레스들의 상기 물리적 어드레스들로의 전환을 관리하기 위한 어드레스 테이블을 저장하고,
    상기 프로세서는 데이터 액세스 요청의 발신 프로세서이고,
    상기 데이터 액세스 동작은 상기 가상 디바이스에서 수신되는 상기 데이터 액세스 요청에 기초하고, 그리고
    상기 재지향 유닛은 상기 발신 프로세서를 식별하도록 추가적으로 구성되는,
    장치.
  20. 명령들을 포함하는 유형의(tangible) 프로세서-판독가능 매체로서,
    상기 명령들은, 프로세서로 하여금:
    특정한 디바이스로부터 가상 디바이스로 전송되는 액세스 요청에 대한 버스를 모니터링하게 하고; 그리고
    데이터를 상기 특정한 디바이스로 선택적으로 재지향시키게 하도록,
    상기 프로세서에 의해 실행가능하고,
    상기 데이터는 상기 가상 디바이스에 의하여 개시되는 데이터 액세스 동작에 의하여 특정되고,
    상기 특정한 디바이스는 특정한 프로세서를 포함하고,
    상기 특정한 디바이스는 상기 가상 디바이스와 구별되는,
    유형의 프로세서-판독가능 매체.
  21. 제 20 항에 있어서,
    상기 명령들은, 상기 프로세서로 하여금 상기 특정한 디바이스로부터의 상기 액세스 요청을 검출하게 하도록 상기 프로세서에 의해 추가적으로 실행가능한,
    유형의 프로세서-판독가능 매체.
  22. 제 1 항에 있어서,
    상기 컨트롤러에서 상기 데이터 액세스 동작의 표시를 수신하는 것에 후속하여 상기 물리적 어드레스를 상기 특정한 디바이스로 선택적으로 라우팅하는 단계를 더 포함하고,
    상기 데이터 액세스 동작은 상기 특정한 디바이스로부터 상기 가상 디바이스로 전송되는 데이터 액세스 요청에 기초하는,
    방법.
  23. 제 22 항에 있어서,
    상기 컨트롤러에서, 상기 가상 디바이스로부터 가상 어드레스를 수신하는 단계 ― 상기 가상 어드레스는 상기 가상 디바이스에 의하여 개시되는 상기 데이터 액세스 동작에 의하여 특정됨 ― ; 및
    상기 가상 어드레스를 수신하는 것에 후속하여 상기 가상 어드레스를 상기 물리적 어드레스로 전환하는 단계를 더 포함하는,
    방법.
KR1020147008659A 2011-09-01 2012-09-04 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템 KR101558427B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/223,347 2011-09-01
US13/223,347 US8656137B2 (en) 2011-09-01 2011-09-01 Computer system with processor local coherency for virtualized input/output
PCT/US2012/053682 WO2013033709A1 (en) 2011-09-01 2012-09-04 Computer system with processor local coherency for virtualized input/output

Publications (2)

Publication Number Publication Date
KR20140069079A KR20140069079A (ko) 2014-06-09
KR101558427B1 true KR101558427B1 (ko) 2015-10-12

Family

ID=46852401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008659A KR101558427B1 (ko) 2011-09-01 2012-09-04 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템

Country Status (6)

Country Link
US (1) US8656137B2 (ko)
EP (1) EP2751698B1 (ko)
JP (1) JP5841255B2 (ko)
KR (1) KR101558427B1 (ko)
CN (1) CN103782282B (ko)
WO (1) WO2013033709A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103152394B (zh) * 2013-02-06 2016-09-28 华为技术有限公司 数据存取系统、内存共享设备及数据读取方法
US9218291B2 (en) * 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
JP6164125B2 (ja) * 2014-03-19 2017-07-19 富士ゼロックス株式会社 印刷制御システム
US9766916B2 (en) * 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
AU2014203218B2 (en) * 2014-06-13 2016-08-25 Canon Kabushiki Kaisha Memory configuration for inter-processor communication in an MPSoC
US9772962B2 (en) 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US9720846B2 (en) * 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US9886210B2 (en) * 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
FR3048526B1 (fr) * 2016-03-07 2023-01-06 Kalray Instruction atomique de portee limitee a un niveau de cache intermediaire
KR20180041037A (ko) * 2016-10-13 2018-04-23 삼성전자주식회사 멀티 코어 솔리드 스테이트 드라이브의 공유 분산 메모리 관리 방법
CN109313426B (zh) * 2016-10-21 2021-10-08 株式会社东芝 控制器
KR101718695B1 (ko) * 2016-12-28 2017-03-22 비콤시스템주식회사 가상화 기반 컨트롤러가 탑재된 빌딩자동제어 장치
CN109460373B (zh) * 2017-09-06 2022-08-26 阿里巴巴集团控股有限公司 一种数据共享方法、终端设备和存储介质
WO2019124450A1 (ja) * 2017-12-20 2019-06-27 日本電気株式会社 入出力実行装置、デバイス仮想化システム、入出力実行方法、および、記録媒体
US11429526B2 (en) * 2018-10-15 2022-08-30 Texas Instruments Incorporated Credit aware central arbitration for multi-endpoint, multi-core system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099319A1 (en) * 2007-11-01 2011-04-28 Cisco Technology, Inc. Input-output memory management unit (iommu) and method for tracking memory pages during virtual-machine migration

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2819982B2 (ja) 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US7620955B1 (en) * 2001-06-08 2009-11-17 Vmware, Inc. High-performance virtual machine networking
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7609649B1 (en) * 2005-04-26 2009-10-27 Cisco Technology, Inc. Methods and apparatus for improving network based virtualization performance
US7702826B2 (en) 2005-12-28 2010-04-20 Intel Corporation Method and apparatus by utilizing platform support for direct memory access remapping by remote DMA (“RDMA”)-capable devices
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US7617377B2 (en) * 2006-10-17 2009-11-10 International Business Machines Corporation Splitting endpoint address translation cache management responsibilities between a device driver and device driver services
US7506084B2 (en) * 2006-10-17 2009-03-17 International Business Machines Corporation Method for communicating with an I/O adapter using cached address translations
US7774556B2 (en) * 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
KR20100084605A (ko) * 2007-05-31 2010-07-27 더 유니버시티 오브 레딩 프로세서
US8250254B2 (en) 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US20100217937A1 (en) 2009-02-20 2010-08-26 Arm Limited Data processing apparatus and method
US9405700B2 (en) * 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099319A1 (en) * 2007-11-01 2011-04-28 Cisco Technology, Inc. Input-output memory management unit (iommu) and method for tracking memory pages during virtual-machine migration

Also Published As

Publication number Publication date
KR20140069079A (ko) 2014-06-09
EP2751698A1 (en) 2014-07-09
JP5841255B2 (ja) 2016-01-13
US20130061020A1 (en) 2013-03-07
CN103782282B (zh) 2016-06-01
WO2013033709A1 (en) 2013-03-07
CN103782282A (zh) 2014-05-07
US8656137B2 (en) 2014-02-18
EP2751698B1 (en) 2016-03-23
JP2014529829A (ja) 2014-11-13

Similar Documents

Publication Publication Date Title
KR101558427B1 (ko) 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템
TWI651620B (zh) 用於處理多個交易之資料處理系統及方法
US10445018B2 (en) Switch and memory device
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
US9575889B2 (en) Memory server
KR20210147976A (ko) 확장 가능하고 일관성 있는 메모리 장치를 위한 시스템 및 방법
US7093079B2 (en) Snoop filter bypass
JP5573829B2 (ja) 情報処理装置およびメモリアクセス方法
JP5546635B2 (ja) データ転送装置およびその制御方法
JP5565425B2 (ja) 演算装置、情報処理装置および演算方法
US10762137B1 (en) Page table search engine
US10467159B2 (en) Memory node controller
KR102064764B1 (ko) 메시지 시그널 인터럽트의 통신
US10810133B1 (en) Address translation and address translation memory for storage class memory
CN117873931B (zh) 一种数据处理系统、方法及介质
KR20130095811A (ko) 복합 멀티-코어 및 멀티-소켓 시스템의 디버깅
US8495091B2 (en) Dynamically routing data responses directly to requesting processor core
US10754789B1 (en) Address translation for storage class memory in a system that includes virtual machines
JP2016508650A (ja) リフレクティブメモリとのコヒーレンシの実施
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
JP2017146787A (ja) 演算処理装置、情報処理装置、及び情報処理装置の制御方法
JP2011248551A (ja) アクセス制御装置
CN118511151A (zh) 具有集成存储器池化和直接交换高速缓存的系统和方法
WO2016170632A1 (ja) 計算機及び電源制御方法

Legal Events

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

Payment date: 20180928

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5