KR101179341B1 - 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 - Google Patents

메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 Download PDF

Info

Publication number
KR101179341B1
KR101179341B1 KR1020087015767A KR20087015767A KR101179341B1 KR 101179341 B1 KR101179341 B1 KR 101179341B1 KR 1020087015767 A KR1020087015767 A KR 1020087015767A KR 20087015767 A KR20087015767 A KR 20087015767A KR 101179341 B1 KR101179341 B1 KR 101179341B1
Authority
KR
South Korea
Prior art keywords
memory
transaction
entry
physical address
memory access
Prior art date
Application number
KR1020087015767A
Other languages
English (en)
Other versions
KR20080080594A (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 KR20080080594A publication Critical patent/KR20080080594A/ko
Application granted granted Critical
Publication of KR101179341B1 publication Critical patent/KR101179341B1/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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • 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/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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/14Protection against unauthorised use of memory or access to memory
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 액세스 데이터 구조에 기초하여 직접 캐시 액세스 트랜잭션들을 인코딩하기 위한 장치, 방법 및 시스템의 실시예들이 개시된다. 일 실시예에서, 장치는 메모리 액세스 로직 및 트랜잭션 로직을 포함한다. 메모리 액세스 로직은 메모리 액세스 데이터 구조에 기초하여 메모리 액세스를 허용할지를 결정한다. 트랜잭션 로직은 메모리 액세스 데이터 구조에 기초하여 직접 캐시 액세스 속성들을 트랜잭션에 할당한다.
메모리, 메모리 액세스 데이터 구조, 메모리 액세스 로직, 트랜잭션 로직, 직접 캐시 액세스 트랜잭션,

Description

메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스 트랜잭션의 수행{PERFORMING DIRECT CACHE ACCESS TRANSACTIONS BASED ON A MEMORY ACCESS DATA STRUCTURE}
본 발명은 정보 처리 분야에 관한 것으로서, 특히 정보 처리 시스템에서의 입출력 장치와 메모리 간의 트랜잭션 분야에 관한 것이다.
직접 캐시 액세스(direct cache access: DCA)는 입출력(I/O) 장치로부터의 데이터가 프로세서의 캐시 내에 배치되는 것을 허용하는 정보 처리 시스템 프로토콜이다. DCA는 데이터를 시스템 메모리 내에 배치하기 전에, 배치하는 대신에, 또는 배치하는 동시에 데이터를 프로세서의 캐시 내에 배치함으로써, 또는 데이터를 시스템 메모리 또는 중간 캐시 내에 배치하고, 프리페치 힌트(prefetch hint)를 이용하여 프로세서 캐시 내로의 데이터 배치를 트리거함으로써 시스템 메모리 액세스 대기 시간 및 대역폭 제한들을 방지하는 데 이용될 수 있다.
DCA 프로토콜은 DCA가 특정 트랜잭션에 대해 인에이블되는지 디스에이블되는지, 데이터가 어느 프로세서의 캐시 내로 배치되어야 하는지, 데이터가 어떻게 프로세서의 캐시 내로 배치되어야 하는지(예를 들어, 다중 방식 캐시 중 어느 방식으로, 그리고 어떤 라인 상태로, 예를 들어 배타적(exclusive) 또는 수 정(modified)), 또는 DCA 트랜잭션의 다른 상세들을 판단할 수 있는, I/O 트랜잭션에 대하여 할당되는 DCA 속성들의 이용을 수반한다. 이러한 속성들 중 일부는 구현 또는 플랫폼에 대하여 고유할 수 있는데, 예를 들어 프리페칭 방식에서 DCA 속성들은 멀티 라인 프리페치들 또는 프리페치 스트라이드에 대한 길이 속성을 포함할 수 있다.
DCA 속성들은 통상적으로 주변 장치 버스 트랜잭션에서 I/O 장치로부터 칩셋으로 전달되며, 칩셋은 데이터가 프로세서의 캐시로 전달되도록 프로세서 버스 상의 해당 트랜잭션을 인코딩한다. 예를 들어, 도 1은 프로세서들(110, 120)이 프로세서 버스(105)를 통해 칩셋(130)에 연결되는 시스템(100)에서 DCA 트랜잭션을 수행하는 공지의 방식을 나타낸다. 칩셋(130)은 주변 장치 버스(135)를 통해 I/O 장치(140)에 연결된다. 프로세서(110)는 코어(112) 및 캐시(113), 코어(114) 및 캐시(115), 코어(116) 및 캐시(117) 그리고 코어(118) 및 캐시(119)를 포함한다. 프로세서(120)는 코어(122) 및 캐시(123), 코어(124) 및 캐시(125), 코어(126) 및 캐시(127) 그리고 코어(128) 및 캐시(129)를 포함한다.
시스템(100)에서의 DCA 트랜잭션은 주변 장치 버스(135) 상의 I/O 트랜잭션(150)을 포함하고, I/O 트랜잭션(150)은 어드레스 및/또는 데이터를 지정하기 위한 필드(151) 및 트랜잭션에 대한 DCA 속성들을 지정하기 위한 필드(152)를 포함한다. 칩셋(130)은 I/O 트랜잭션(150)을 수신하고, 필요한 경우 필드들(151, 152)의 내용들을 디코딩하고, 시스템 트랜잭션(160)을 인코딩한다. 시스템 트랜잭션(160)은 어드레스 및/또는 데이터를 지정하기 위한 필드(161) 및 트랜잭션에 대한 DCA 속성들을 지정하기 위한 필드(162)를 포함한다. 도 1에서, 시스템 트랜잭션(160)은 프로세서 버스(105) 상에서 수행되고, 캐시(115)를 대상으로 한다.
상이한 정보 처리 시스템들에서의 PCI(Peripheral Component Interconnect), PCI-X, PCI-Express 및 USB(Universal Serial Bus)와 같은 상이한 주변 장치 버스들의 사용은 I/O 트랜잭션에서 DCA 속성들을 전달하는 다양한 방식을 요구할 수 있다. 예를 들어, DCA는 PCI-Express가 정의된 때 존재하지 않았기 때문에, DCA 사용을 위해 배타적으로 할당될 수 있는 PCI-Express 필드들이 존재하지 않는다. 따라서, PCI-Express 버스 상의 DCA 트랜잭션에 대해 맞춰진 방식에 의하면, 예를 들어 PCI-Express 트랜잭션에서 "태그" 필드의 제한된 5비트 부분을 사용할 수 있다.
상이한 I/O 버스들에 대해 표준 방식이 아니라 이러한 다양한 방식을 사용함으로써 DCA의 광범위한 채택이 제한될 수 있다.
첨부 도면들에서 본 발명은 제한이 아니라 예시로서 도시된다.
도 1은 DCA 트랜잭션을 수행하는 공지의 방식을 나타내는 도면.
도 2는 본 발명의 일 실시예에 따라 직접 캐시 액세스 트랜잭션들이 수행될 수 있는 시스템을 나타내는 도면.
도 3은 도메인에 대한 I/O 장치 할당의 일례를 나타내는 도면.
도 4는 DMA 리매핑을 이용하여 가상화를 지원하는 일례를 나타내는 도면.
도 5는 I/O 어드레스 변환의 일례를 나타내는 도면.
도 6은 본 발명의 일 실시예에 따른 메모리 액세스 데이터 구조 내의 엔트리 를 나타내는 도면.
도 7은 본 발명의 일 실시예에 따라 직접 캐시 액세스 트랜잭션을 수행하는 방법을 나타내는 도면.
본 발명은 후술하는 바와 같이 메모리 액세스 데이터 구조에 기초하여 DCA 트랜잭션들을 수행하기 위한 장치, 방법 또는 시스템으로 구현될 수 있다. 아래의 설명에서, 로직, 회로 및 시스템 구성들과 같은 다양한 특정 상세는 본 발명의 보다 충분한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세들 없이도 실시될 수 있음을 당업자는 이해할 것이다. 또한, 소정의 공지된 구조, 회로, 기술 등은 본 발명을 불필요하게 모호하게 하지 않도록 하기 위해 상세히 설명되지 않았다.
본 발명의 실시예들의 요소들은 하드웨어, 소프트웨어, 펌웨어, 또는 하드웨어, 소프트웨어 또는 펌웨어의 임의 조합으로 구현될 수 있다. 일반적으로 하드웨어라는 용어는 전자, 전자기, 광학, 전기 광학, 기계, 전기 기계 부품들 등과 같은 물리적 구조를 지칭한다. 일반적으로 소프트웨어라는 용어는 논리 구조, 방법, 프로시저, 프로그램, 루틴, 프로세스, 알고리즘, 공식, 표현식 등을 지칭한다. 일반적으로 펌웨어라는 용어는 하드웨어 구조(예를 들어, 플래시 메모리 또는 판독 전용 메모리)에서 구현 또는 실현되는 논리 구조, 방법, 프로시저, 프로그램, 루틴, 프로세스, 알고리즘, 공식, 또는 표현식을 지칭한다. 펌웨어의 예는 마이크로코드, 기입 가능 제어 저장소 및 마이크로 프로그래밍된 구조이다.
도 2는 본 발명의 일 실시예에 따라 직접 캐시 액세스 트랜잭션들이 수행될 수 있는 시스템(200)의 도면이다. 시스템(200)은 프로세서들(210, 220), 프로세서 버스(205), 메모리 제어 허브(memory control hub: MCH)(230), 시스템 메모리(240), 입출력 제어 허브(input/output control hub: ICH)(250), 주변 장치 버스(255), 대용량 저장 장치/인터페이스(270) 및 I/O 장치들(2801 내지 280K)을 포함한다. 시스템(200)은 전술한 것보다 적은 요소들을 포함하거나 많은 요소를 포함할 수 있다.
프로세서들(210, 220)은 하나 이상의 실행 코어를 갖는 임의의 컴포넌트들일 수 있으며, 각각의 실행 코어는 펜티엄® 프로세서 패밀리, 이타늄® 프로세서 패밀리, 또는 인텔사에서 나온 다른 프로세서 패밀리, 또는 다른 회사에서 나온 임의의 다른 범용 또는 기타 프로세서와 같은 다양한 상이한 타입의 프로세서 중 임의의 프로세서에 기초할 수 있다. 프로세서(210)는 코어들(212, 214, 216, 218) 및 캐시들(213, 215, 217, 219)을 포함한다. 프로세서(220)는 코어들(222, 224, 226, 228) 및 캐시들(223, 225, 227, 229)을 포함한다.
프로세서 버스(205)는 프로세서들(210, 220)이 상호 간에 또는 다른 프로세서들, 또는 다른 장치들, 예를 들어 MCH(230)와 통신하는 것을 가능하게 하는 임의의 병렬, 순차, 파이프라인, 비동기, 동기 또는 기타 버스 또는 점 대 점 접속일 수 있다.
MCH(230)는 시스템 메모리(240) 및 ICH(250)와 같은 메모리 및 I/O 장치들의 제어 및 구성을 각각 제공한다. MCH(230)는 프로세스 버스(205)와 인터페이스하고 프로세스 버스(205) 상의 트랜잭션을 인코딩하는 버스 인터페이스 유닛(231) 및 후술하는 바와 같은 DMA 리매핑 로직(235)을 포함한다. MCH(230)는 ICH(250)와 같은 다른 컴포넌트들 및/또는 시스템 로직, 버스 브리징, 메모리 제어 및/또는 I/O 장치 제어와 같은 다양한 기능을 통합하는 칩셋에 통합될 수 있다.
시스템 메모리(240)는 프로그램 코드 및 데이터와 같은 정보를 저장하는 임의의 유형의 메모리일 수 있다. 시스템 메모리(240)는 통상적으로 동적 랜덤 액세스 메모리(DRAM) 및 정적 랜덤 액세스 메모리(SRAM)로 구현된다. 시스템 메모리(240)는 운영 체제(OS) 또는 가상 머신 모니터(virtual machine monitor: VMM)(242) 전부 또는 일부, I/O 드라이버(245) 및 후술하는 바와 같은 메모리 액세스 테이블과 같이 본 발명의 실시예들을 구현하는 데 사용되는 임의의 코드 또는 데이터를 포함하는 코드, 데이터 또는 임의의 다른 정보를 저장하는 데 사용될 수 있다.
대용량 저장 장치/인터페이스(270)는 컴팩트 디스크(272), DVD(digital versatile disk; 273), 플로피 디스크(274) 및 하드 드라이브(276)와 같은 임의의 유형의 자기, 광학 또는 다른 머신 액세스 가능 매체들과 인터페이스할 수 있다. 본 발명의 실시예들을 포함하는 코드, 데이터 및 임의의 다른 정보는 그러한 임의의 매체들에 저장되고, 대용량 저장 장치/인터페이스(270)를 통해 액세스될 수 있다.
ICH(250)는 직접 메모리 액세스(direct memory access: DMA) 제어기, 인터럽트 제어기, 전력 관리 로직, 타이머, I/O 장치 인터페이스 및 USB 또는 로우 핀 카운트(low pin count: LPC) 인터페이스와 같은 주변 장치 버스(255) 및/또는 임의의 다른 버스 또는 접속에 대한 인터페이스와 같은 다수의 주변 기능을 포함할 수 있다. ICH(250)는 MCH(230)와 같은 임의의 다른 컴포넌트들과 함께 칩셋 내에 통합될 수 있다.
ICH(250)는 I/O 장치들(285)과 직접 인터페이스하며, 주변 장치 버스(255)를 통해 I/O 장치들(2801 내지 280K)과 인터페이스한다. 주변 장치 버스(255)는 PCI, PCI Express, 또는 ISA(industry standard architecture) 버스와 같이 I/O 트랜잭션들을 지원하는 임의의 유형의 버스일 수 있다. I/O 장치들(2801 내지 280K 및 285)은 입력 장치 제어기들(예를 들어, 키보드, 마우스, 트랙볼, 포인팅 장치), 매체 카드들(예를 들어, 오디오, 비디오, 그래픽), 네트워크 카드들 및 임의의 다른 주변 장치들과 같이 DMA 요청들을 포함하는 I/O 기능들을 수행하는 임의의 I/O 장치들일 수 있다.
MCH(230)로 돌아가면, MCH(230)는 I/O 트랜잭션에서 I/O 장치(예를 들어, I/O 장치들(2801 내지 280K 및 285) 중 하나)를 시스템 메모리(240) 내의 (후술하는) 도메인으로 매핑하는 DMA 리매핑 로직(235)을 포함한다. I/O 트랜잭션은 통상적으로 DMA 요청(즉, 시스템 메모리(240)에 직접 액세스하기 위한 I/O 장치로부터의 요청)이지만, 임의의 다른 유형의 트랜잭션일 수도 있다. DMA 리매핑 로직(235)은 I/O 장치 할당 및/또는 관리를 돕거나 강화하는 하드웨어 지원을 제공한다. DMA 리매핑 로직(235)은 대안적으로 ICH(250)와 같은, MCH(230)가 아닌 임의 컴포넌트에 포함될 수 있다. 이 로직은 또한 부분적으로 또는 전체적으로 프로세서(210 또는 220), 또는 임의의 다른 프로세서, 코프로세서, 칩셋 또는 다른 장치 내에 구현될 수 있다.
도메인은 시스템 메모리(240)의 서브세트가 할당되는, 시스템 내의 격리된 환경으로서 추상적으로 정의된다. 도메인에 할당된 메모리에 직접 액세스하는 것이 허용되는 I/O 장치들은 그 도메인의 할당된 장치들로서 참조된다. 도메인의 격리는 도메인에 할당되지 않은 장치들이 도메인 할당 메모리에 액세스하는 것을 차단함으로써 달성된다. 모든 I/O 장치가 소정의 도메인(아마도 디폴트 도메인)에 할당되는 것을 보장하고 각각의 할당된 장치들이 그 장치의 도메인에 할당된 메모리에만 액세스하도록 제한함으로써 복수의 격리된 도메인이 지원된다.
각각의 도메인은 메모리의 시스템 뷰와 다를 수 있는 메모리의 뷰, 또는 물리 어드레스 공간을 갖는다. 메모리의 시스템 뷰에 따라 메모리에 액세스하는 데 사용되는 어드레스는 호스트 물리 어드레스(host physical address: HPA)로 지칭된다. 도메인의 자원들이 도메인의 물리 어드레스 공간에 액세스하는 데 사용하는 어드레스는 게스트 물리 어드레스(guest physical address: GPA)로 지칭된다. 도메인은 자신의 GPA 공간이 HPA 공간과 동일하거나 그 서브세트인 경우에 재배치되지 않는 것으로 간주된다. 도메인은 자신의 할당된 HPA 공간에 액세스하기 위해 자신의 GPA 공간이 변환되는 경우에 재배치되는 것으로 간주된다. GPA 및 HPA 공간들의 논리적 분리는 메모리 보호를 실시하기 위한 기반을 제공한다. 이는 도메인의 할당된 장치들에 의해 생성되는 GPA들을 검증하고 아마도 이들을 유효한 HPA들로 변환할 수 있을 어드레스 보호 및 가능한 변환 메커니즘을 필요로 한다. DMA 리매핑 로직(235)은 DMA 리매핑으로 지칭되는 이러한 기능에 대한 하드웨어 지원을 제공한다.
도 3은 도메인에 대한 I/O 장치 할당의 일례를 나타내는 도면이다. I/O 장치 할당은 I/O 장치의 시스템 메모리(240) 내의 도메인으로의 매핑이다. 매핑은 DMA 리매핑 로직(235)에 의해 지원된다. 도 3에서, 장치(310)는 시스템 메모리(240) 내의 도메인(340)으로 매핑된다. 도메인(340)은 장치(310)에 대한 하나 이상의 드라이버(342)를 가질 수 있다.
DMA 리매핑 로직(235)은 레지스터 세트(320), DMA 리매핑 구조(322) 및 로직 회로(324)를 포함한다. 레지스터 세트(320)는 DMA 리매핑 구조(322), 로직 회로(324) 및 I/O 장치들을 위한 프로그램들 또는 드라이버들에 의해 사용되는 제어 또는 상태 정보에 대한 저장을 제공하는 다수의 레지스터를 포함한다. DMA 리매핑 구조(322)는 GPA들의 HPA들로의 리매핑 또는 어드레스 변환에 사용되는 기본 구조, 저장 또는 테이블들을 제공한다. 로직 회로(324)는 리매핑 또는 어드레스 변환 동작들을 수행하는 회로를 포함한다.
DMA 리매핑 로직(235)을 이용하는 I/O 장치 할당 및/또는 관리는 OS에 대한 격리 도메인을 제공하는 것과 같은 임의 수의 방식들에서 이용될 수 있다. 예를 들어, OS는 자신의 중요한 코드 및 데이터 구조들을 포함하도록 도메인을 정의하고, 모든 I/O 장치들이 이 도메인에 액세스하는 것을 제한할 수 있다. 이러한 도메인 격리 기술은 OS가 자신의 코드 및 데이터의 I/O 장치들 및 이들의 드라이버들을 통한 잘못된, 의도하지 않은 또는 기타 손상을 제한할 수 있게 한다.
DMA 리매핑 로직(235)은 또한 가상화 환경을 지원하는 데 사용될 수 있다. 일반적으로, 가상화 환경은 시스템 및 그의 자원들에 대해 완전한 직접 제어를 행하는 VMM 소프트웨어를 이용하여 다른 소프트웨어들(게스트들)이 실행되어 마치 VM 및 그 자원들에 대한 완전한 직접 제어를 행하는 것과 같이 될 수 있는 시스템들의 추상들(가상 머신들 또는 VM들)을 생성함으로써 구현된다. VMM은 VM들 사이에 시스템 자원들을 할당하여 공유하고 VM들을 서로 격리하여 각각의 VM을 다른 VM들 상에서 실행되는 게스트들로부터 보호함으로써 가상화 환경을 유지한다.
DMA 리매핑 로직(235)은 VMM을 도메인으로 매핑하고 각각의 VM을 도메인으로 매핑하고 개별 I/O 장치들을 개별 VM들에 대응하는 개별 도메인들에 할당함으로써 가상화를 지원하는 데 사용될 수 있다. 따라서, I/O 장치용의 드라이버는 그 장치가 할당된 VM에서만 실행되도록 할당될 수 있으며, VMM에 제어를 전달할 필요 없이 직접 I/O 장치와 인터페이스하는 것이 허용될 수 있다.
도 4는 DMA 리매핑을 이용하여 가상화를 지원하는 일례를 나타낸다. 도 4에서, VM(440) 상에서 실행되는 게스트들은 장치 드라이버(450), 게스트 OS(446) 및 애플리케이션들(442, 444)을 포함한다. VM(460) 상에서 실행되는 게스트들은 장치 드라이버(470), 게스트 OS(466) 및 애플리케이션들(462, 464)을 포함한다. 장치 드라이버들(450, 470)은 각각 I/O 장치들(410, 412)을 구동, 제어, 인터페이스 또는 지원하는 드라이버들이다. I/O 장치(410)는 VM(440)에 할당되고, I/O 장치(412)는 VM(460)에 할당된다.
일반적으로, 게스트들은, 예를 들어 I/O 동작을 시도할 때 VMM(420)에 트랩핑함으로써 VMM(420)을 통해 시스템 자원들에 액세스한다. 그러나, 장치(410)는 VM(440)에 할당되고, 그 드라이버(450)는 VM(440) 상에서 실행되므로, 게스트 OS(446) 및 애플리케이션들(442, 444)은 VMM(420)에 트랩핑하지 않고 장치(410)에 액세스할 수 있다. 마찬가지로, 장치(410)는 VMM(420)에 트랩핑하지 않고 예를 들어 DMA 요청을 통해 그의 도메인에 할당된 메모리에 액세스할 수 있다. DMA 리매핑 로직(235)은 I/O 장치들에 의해 사용된 GPA들을 대응하는 HPA들로 변환하고 I/O 장치가 할당된 도메인 밖의 메모리 위치에 액세스하는 것을 거부함으로써 이러한 능력을 지원한다.
도 5는 I/O 어드레스 변환의 일례를 나타낸다. 도 5에서, I/O 장치(510)는 도메인 A에 할당되고, I/O 장치(512)는 도메인 B에 할당된다. 각각의 I/O 장치는 어드레스 DMA_ADR에 대한 I/O 요청 또는 DMA 요청을 수행할 수 있다. DMA 리매핑 로직(235)은 I/O 장치(510)로부터의 DMA_ADR에 대한 요청을 물리 메모리(520)의 섹션(522)으로 매핑할 수 있으며, 물리 메모리의 섹션들(522, 524)은 도메인 A에 할당된다. 마찬가지로, DMA 리매핑 로직(235)은 I/O 장치(512)로부터의 DMA_ADR에 대한 요청을 물리 메모리(520)의 섹션(528)으로 매핑할 수 있으며, 물리 메모리의 섹션들(526, 528)은 도메인 A에 할당된다. 섹션들(522, 524, 526, 528)은 시스템의 메모리 관리 모델에 따른 페이지의 크기 또는 물리 메모리의 일부의 임의의 다른 크기를 가질 수 있다.
시스템 메모리의 게스트 뷰(540)는 게스트 I/O 장치들의 관점에서의 논리적 뷰이다. 게스트 I/O 장치(512)는 섹션(542)을 시스템의 어드레스 공간으로 간주하고, 게스트 I/O 장치(510)는 섹션(544)을 시스템의 어드레스 공간으로 간주한다. 도메인들의 생성 및 관리를 담당하는 VMM 또는 다른 소프트웨어는 각각의 도메인에 대해 물리 메모리(520)를 할당하고, DMA 리매핑 로직(235)에서 GPA/HPA 변환 기능을 설정한다.
DMA 리매핑 로직(235)에 의해 구현되는 어드레스 변환 기능은 시스템의 물리 메모리 관리 모델에 의존한다. 예를 들어, 호스트 물리 메모리가 도메인들에 연속 영역들로서 할당되는 경우, 변환 기능은 단순한 오프셋 추가일 수 있다. 대안적으로, 예를 들어 호스트 물리 메모리가 페이지 단위로 관리되는 경우에 DMA 리매핑 로직(235)은 데이터 구조를 참조하여 어드레스 변환을 수행할 수 있다. 다른 실시예들은 데이터 구조를 이용하여, 개별 장치들의 액세스가 허용되는 어드레스 범위들을 정의할 수 있다. 다른 실시예들은 이들 및 다른 기술들의 임의 조합을 이용할 수 있다.
DMA 리매핑 로직(235)에 의해 참조되는 데이터 구조(메모리 액세스 데이터 구조)는 단일 또는 다중 레벨 테이블과 같은 임의 형태의 데이터 구조일 수 있다. 데이터 구조 또는 데이터 구조의 임의의 일부분은 DMA 리매핑 구조(322)와 같은 DMA 리매핑 로직(234)에 대하여 액세스 가능한 임의의 저장 공간, 또는 시스템 메모리(240) 내의 메모리 액세스 테이블(248)에 저장될 수 있다. 데이터 구조 내의 정보의 전부 또는 일부는 하나 이상의 저장 공간에 복사 또는 복제될 수 있으며, 예를 들어 메모리 액세스 테이블(248)로부터의 엔트리들, 또는 DMA 리매핑 로직(235)에 의한 변환들의 결과들은 DMA 리매핑 구조(322) 내의 변환 색인(translation lookaside) 또는 다른 버퍼 또는 그 외의 장소에 저장될 수 있다.
도 6은 본 발명의 일 실시예에 따른 메모리 액세스 데이터 구조 내의 엔트리(600)를 나타낸다. 엔트리(600)는 4개의 필드를 포함하며, 이들 각각은 임의 수의 비트 위치들을 포함할 수 있다. GPA 필드(610)는 시스템 메모리에 액세스하기 위해 I/O 장치에 의해 사용될 수 있는 GPA 또는 GPA의 일부를 저장한다. HPA 필드(620)는 전술한 바와 같이 임의의 메모리 어드레스 변환 기능에 따라 GPA 필드(610)에 저장된 GPA에 대응하는 HPA 또는 HPA의 일부를 저장한다. 일 실시예에서, GPA 필드(610) 및 HPA 필드(620)에 저장된 어드레스들 각각은 시스템 메모리의 한 페이지의 기본 어드레스를 지정하며, 따라서 시스템 메모리 내의 단일 페이지에 대한 모든 액세스는 메모리 액세스 데이터 구조 내의 하나의 엔트리만을 필요로 한다. 이러한 실시예에서 또는 다른 실시예들에서, 메모리 액세스 데이터 구조 내의 단일 엔트리는 단일 어드레스가 아니라 어드레스들의 범위를 나타낼 수 있다.
메모리 액세스 속성 필드(630)는 필드들(610, 620) 내의 엔트리들에 대응하는 메모리 액세스 속성들을 저장한다. 예를 들어, 메모리 액세스 필드(630)는 해당 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션이 허용되는지의 여부, 프로세서 캐시들이 해당 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션 상에서 스누핑되어야 하는지를 지시하는 값 및 해당 어드레스 또는 어드레스 범위에 대한 DMA(또는 다른 I/O) 트랜잭션들에 관련된 임의의 다른 값들 또는 지시자들을 저장하는 데 사용될 수 있다.
DCA 속성 필드(640)는 필드들(610, 620) 내의 엔트리들에 대응하는 DCA 속성들을 저장한다. 예를 들어, DCA 속성 필드(640)는 DCA가 해당 어드레스 또는 어드레스 범위에 대해 인에이블 또는 디스에이블되는지를 지시하는 값을 저장하는 인에이블/디스에이블 필드(641), 해당 어드레스 또는 어드레스 범위에 대한 DCA 트랜잭션에 사용될 캐시 정책(예를 들어, 배타적 또는 수정)을 지시하는 값을 저장하는 캐시 정책 필드(642), 해당 어드레스 또는 어드레스 범위에 대한 DCA 트랜잭션에 사용될 시스템 트랜잭션 유형을 지시하는 값을 저장하는 시스템 트랜잭션 유형 필드(643), 해당 어드레스 또는 어드레스 범위에 대한 DCA 트랜잭션의 대상으로 사용될 프로세서 또는 캐시의 식별을 지시하는 값을 저장하는 대상 필드(644) 및 프리페칭 방식에서의 멀티 라인 프리페치들 또는 프리페치 스트라이드에 대한 길이 속성과 같이 해당 어드레스 또는 어드레스 범위에 대한 DCA 트랜잭션과 관련된 값들, 지시자들 또는 속성들을 저장하는 임의의 다른 필드들을 포함할 수 있다.
도 7은 본 발명의 일 실시예에 따른 시스템(200)에서 DCA 트랜잭션을 수행하는 방법(700)을 나타낸다. 블록 710에서, OS(또는 VMM)(242)는 DMA 리매핑 로직(235)을 구성하고, DMA 리매핑 로직(235)의 특정 구현 및 원하는 어드레스 보호 및/또는 변환 기능에 따르는 메모리 액세스 데이터 구조(248)를 설정한다.
블록 720에서, I/O 드라이버(245)는 메모리 액세스 데이터 구조(248) 내의 엔트리(예를 들어, 엔트리 500)에 대한 DCA를 인에이블하기 위해 OS(또는 VMM)에 요청을 행한다. 대안적으로, 엔트리는 DMA 리매핑 로직(235) 내의 메모리 액세스 데이터 구조 또는 시스템(200) 내의 임의의 다른 저장 공간 내의 엔트리일 수 있다. 요청을 행할 때, I/O 드라이버(245)는 엔트리(600)에 저장될 원하는 DCA 속성들을 제공한다. 요청은 I/O 장치(245)가 DCA 요청들을 행하고 DCA 속성들을 제공하는 데 사용할 수 있는 소프트웨어 인터페이스의 제공을 담당할 수 있는 OS(또는 VMM)(242)에 의해 처리된다. 따라서, 엔트리(600) 내의 DCA 속성들의 완전한 세트는 I/O 드라이버들(245)에 의해 제공되는 속성들 및 OS(또는 VMM)(242)에 의해 제공되는 속성들을 포함할 수 있다. 대응하는 GPA 및 HPA 값들은 블록 710에서의 메모리 액세스 데이터 구조(248)의 설정의 일부로서, 시스템(200)에서 수행되는 처리의 임의의 후속 구성의 일부로서, 또는 OS(또는 VMM)(242)에 의해 블록 720에서의 I/O 드라이버(245)로부터의 요청 처리의 일부로서 엔트리(600)에 저장될 수 있다.
블록 730에서, 시스템(200) 내의 I/O 장치(예를 들어, I/O 장치 180)는 엔트리(600) 내의 GPA에 의해 지정되는 어드레스 또는 어드레스 범위에 대한 주변 장치 버스(155) 상의 I/O 트랜잭션을 발행한다. 도 1을 참조하여 설명된 공지의 방식과 달리, I/O 장치는 DCA에 대해 알 필요가 없으며, I/O 트랜잭션은 어떠한 DCA 속성도 포함하지 않는 DMA 메모리 기입 트랜잭션과 같은 표준 I/O 트랜잭션일 수 있다.
블록 740에서, MCH(230)는 블록 730으로부터 I/O 트랜잭션을 수신하고, 필요한 경우에 이를 디코딩한다. 블록 750에서, MCH(230)는 엔트리(600)를 참조하여 DCA가 엔트리(500) 내의 GPA에 대해 인에이블 되었는지 판단하고, 엔트리(600)로부터 DCA 속성들을 취득하고, 필요한 경우에 GPA를 HPA로 변환한다.
블록 760에서, 버스 인터페이스 유닛(231)은 시스템(200) 내의 하나의 캐시(예를 들어, 캐시들(213, 215, 217, 219, 223, 225, 227, 229) 중 어느 하나)를 대상으로 하는, 엔트리(600)에 저장된 DCA 속성들에 기초하여 블록 730에서의 I/O 트랜잭션에 대응하는 프로세서 버스(105) 상의 트랜잭션을 인코딩하여 발행한다.
DMA 리매핑 로직(235), 또는 본 발명의 일 실시예에 따라 설계된 임의의 다른 요소는 생성에서 시뮬레이션, 제조에 이르기까지 다양한 단계로 설계될 수 있다. 설계를 나타내는 데이터는 다양한 방식으로 설계를 나타낼 수 있다. 먼저, 시뮬레이션에 유용한 바와 같이, 하드웨어는 하드웨어 기술 언어 또는 다른 기능 기술 언어를 이용하여 표현될 수 있다. 추가적으로 또는 대안적으로, 로직 및/또는 트랜지스터를 갖춘 회로 레벨 모델이 설계 프로세스의 소정 단계들에서 생성될 수 있다. 또한, 대부분의 설계들은 소정 단계에서 이들이 다양한 장치의 물리적 배치를 나타내는 데이터를 이용하여 모델링될 수 있는 레벨에 도달한다. 통상의 반도체 제조 기술들이 이용되는 경우에, 장치 배치 모델을 나타내는 데이터는 집적 회로를 제조하는 데 사용되는 마스크들의 상이한 마스크 층들 상의 다양한 특징들의 존재 여부를 지정하는 데이터일 수 있다.
임의의 설계 표현에서, 데이터는 임의 형태의 머신 판독 가능 매체에 저장될 수 있다. 이러한 정보를 전송하기 위해 변조 또는 생성된 광 또는 전기 파동, 메모리, 또는 디스크와 같은 자기 또는 광학 저장 매체는 머신 판독 가능 매체일 수 있다. 임의의 이러한 매체는 설계, 또는 에러 복구 루틴 내의 명령들과 같이 본 발명의 일 실시예에서 이용되는 다른 정보를 "전달" 또는 "지시"할 수 있다. 정보를 지시 또는 전달하는 전기 반송파가 전송될 때, 전기 신호의 복사, 버퍼링 또는 재전송이 수행되는 한도까지 새로운 복사가 행해진다. 따라서, 통신 제공자 또는 네트워크 제공자의 행동들은 물건, 예를 들어 본 발명의 기술들을 구현하는 반송파의 사본들을 만들 수 있다.
이와 같이, 메모리 액세스 데이터 구조에 기초하여 DCA 트랜잭션들을 수행하는 본 발명의 실시예들이 설명되었다. 소정의 실시예들이 설명되고, 첨부 도면들에 도시되었지만, 이러한 실시예들은 광범위한 발명에 대한 제한이 아니라 단지 예시적인 것일 뿐이며, 당업자가 본 명세서를 연구하면 다양한 다른 변형을 생각해낼 수 있으므로, 본 발명은 도시되고 설명된 특정 구성들 및 배열들로 한정되지 않음을 이해해야 한다. 성장이 빠르고 추가적인 진보가 쉽게 예측되지 않는 이와 같은 기술 분야에서, 개시된 실시예들은 본 발명의 원리들 또는 청구된 권리 범위로부터 벗어나지 않으면서 기술적 진보가 가능하도록 배치 및 상세 사항을 용이하게 변형하는 것이 가능할 수 있다.

Claims (18)

  1. 게스트 물리 어드레스를 호스트 물리 어드레스로 변환(translate)하기 위해 메모리 액세스 데이터 구조의 엔트리를 참조하고, - 상기 게스트 물리 어드레스는 상기 엔트리의 제1 필드에 저장되며, 상기 호스트 물리 어드레스는 상기 엔트리의 제2 필드에 저장됨 - 상기 엔트리의 제3 필드에 저장된 값에 기초하여 상기 호스트 물리 어드레스로의 직접 메모리 액세스를 허용할지를 결정하는 메모리 액세스 로직; 및
    상기 엔트리의 제4 필드에 저장된 직접 캐시 액세스 속성들을 상기 호스트 물리 어드레스로의 트랜잭션에 할당하고, 상기 직접 캐시 액세스 속성들에 기초하여 상기 트랜잭션을 인코딩하는 트랜잭션 로직
    을 포함하는 장치.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 메모리 액세스 데이터 구조의 일부를 저장하는 버퍼를 더 포함하는 장치.
  6. 제1항에 있어서,
    상기 직접 캐시 액세스 속성들은 직접 캐시 액세스 인에이블 지시자, 캐시 정책 지시자, 트랜잭션 유형 지시자 및 대상 캐시 식별 지시자 중 하나를 포함하는, 장치.
  7. 게스트 물리 어드레스를 호스트 물리 어드레스로 변환(translate)하기 위해 메모리 액세스 데이터 구조의 엔트리를 참조하는 단계 - 상기 게스트 물리 어드레스는 상기 엔트리의 제1 필드에 저장되며, 상기 호스트 물리 어드레스는 상기 엔트리의 제2 필드에 저장됨 - ;
    상기 엔트리의 제3 필드에 저장된 값에 기초하여 상기 호스트 물리 어드레스로의 직접 메모리 액세스 트랜잭션을 허용할지를 결정하는 단계;
    상기 호스트 물리 어드레스로의 직접 캐시 액세스 트랜잭션에 대한 속성들을 취득하는 단계 - 상기 속성들은 상기 엔트리의 제4 필드에 저장됨 -;
    상기 속성들을 상기 직접 캐시 액세스 트랜잭션에 할당하는 단계; 및
    상기 직접 캐시 액세스 속성들에 기초하여, 상기 직접 캐시 액세스 트랜잭션을 프로세서 버스 상에서 인코딩하는 단계
    를 포함하는 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 제7항에 있어서,
    상기 속성들은 직접 캐시 액세스 인에이블 지시자, 캐시 정책 지시자, 트랜잭션 유형 지시자 및 대상 캐시 식별 지시자 중 하나를 포함하는 방법.
  12. 메모리;
    캐시;
    장치;
    상기 메모리의 호스트 물리 어드레스로 게스트 물리 어드레스를 변환(translate)하기 위해 메모리 액세스 데이터 구조의 엔트리를 참조하고, - 상기 게스트 물리 어드레스는 상기 엔트리의 제1 필드에 저장되며, 상기 호스트 물리 어드레스는 상기 엔트리의 제2 필드에 저장됨 - 상기 엔트리의 제3 필드에 저장된 값에 기초하여 상기 장치가 상기 메모리의 상기 호스트 물리 어드레스로 액세스하는 것을 허용할지 결정하는 메모리 액세스 로직; 및
    상기 엔트리의 제4 필드에 저장되는 직접 캐시 액세스 속성들을 상기 호스트 물리 어드레스에서의 상기 캐시와 상기 장치 간의 트랜잭션에 할당하고, 상기 직접 캐시 액세스 속성들에 기초하여 상기 트랜잭션을 인코딩하는 트랜잭션 로직
    을 포함하는 시스템.
  13. 삭제
  14. 제12항에 있어서,
    상기 메모리 액세스 데이터 구조의 일부를 저장하는 변환 색인 버퍼(translation lookaside buffer)를 더 포함하는 시스템.
  15. 제12항에 있어서,
    상기 속성들은 직접 캐시 액세스 인에이블 지시자, 캐시 정책 지시자, 트랜잭션 유형 지시자 및 대상 캐시 식별 지시자 중 하나를 포함하는, 시스템.
  16. 제12항에 있어서,
    상기 메모리는 상기 메모리 액세스 데이터 구조를 저장하는, 시스템.
  17. 제16항에 있어서,
    상기 메모리는 또한 상기 메모리 액세스 데이터 구조를 설정(set up)하기 위해 운영 체제 및 가상 머신 모니터 중 하나의 일부를 저장하는, 시스템.
  18. 제16항에 있어서,
    상기 메모리는 또한 상기 메모리 액세스 로직을 구성하기 위해 운영 체제 및 가상 머신 모니터 중 하나의 일부를 저장하는, 시스템.
KR1020087015767A 2005-12-30 2006-12-18 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행 KR101179341B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/323,262 US7937534B2 (en) 2005-12-30 2005-12-30 Performing direct cache access transactions based on a memory access data structure
US11/323,262 2005-12-30
PCT/US2006/048555 WO2007078958A2 (en) 2005-12-30 2006-12-18 Performing direct cache access transactions based on a memory access data structure

Publications (2)

Publication Number Publication Date
KR20080080594A KR20080080594A (ko) 2008-09-04
KR101179341B1 true KR101179341B1 (ko) 2012-09-03

Family

ID=38110324

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087015767A KR101179341B1 (ko) 2005-12-30 2006-12-18 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행

Country Status (4)

Country Link
US (1) US7937534B2 (ko)
KR (1) KR101179341B1 (ko)
CN (2) CN103207842B (ko)
WO (1) WO2007078958A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure
US8032672B2 (en) 2006-04-14 2011-10-04 Apple Inc. Increased speed of processing of audio samples received over a serial communications link by use of channel map and steering table
US7587663B2 (en) 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
US7555597B2 (en) * 2006-09-08 2009-06-30 Intel Corporation Direct cache access in multiple core processors
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US8689288B2 (en) * 2007-04-16 2014-04-01 Samsung Electronics Co., Ltd. Apparatus and method for protecting system in virtualized environment
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7958313B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
WO2011120223A1 (en) * 2010-03-31 2011-10-06 Intel Corporation Hot-swapping active memory for virtual machines with directed i/o
DE102011014450B4 (de) * 2010-03-31 2013-03-28 Intel Corporation Aktiven Speicher für virtuelle Maschinen mit gerichtetem I/O im laufenden Betrieb tauschen (Hot-Swapping)
US8984228B2 (en) 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
WO2013095337A1 (en) * 2011-12-19 2013-06-27 Intel Corporation A system and deterministic method for servicing msi interrupts using direct cache access
US8904068B2 (en) * 2012-05-09 2014-12-02 Nvidia Corporation Virtual memory structure for coprocessors having memory allocation limitations
US9547594B2 (en) * 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9405687B2 (en) 2013-11-04 2016-08-02 Intel Corporation Method, apparatus and system for handling cache misses in a processor
US9280290B2 (en) 2014-02-12 2016-03-08 Oracle International Corporation Method for steering DMA write requests to cache memory
US9715455B1 (en) 2014-05-05 2017-07-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Hint selection of a cache policy
CN104572509B (zh) * 2014-12-26 2017-11-07 中国电子科技集团公司第十五研究所 一种在龙芯计算平台上实现独立显卡显存分配的方法
US9606925B2 (en) 2015-03-26 2017-03-28 Intel Corporation Method, apparatus and system for optimizing cache memory transaction handling in a processor
US10713202B2 (en) * 2016-05-25 2020-07-14 Samsung Electronics Co., Ltd. Quality of service (QOS)-aware input/output (IO) management for peripheral component interconnect express (PCIE) storage system with reconfigurable multi-ports
US11017126B2 (en) * 2017-12-19 2021-05-25 Western Digital Technologies, Inc. Apparatus and method of detecting potential security violations of direct access non-volatile memory device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138699A1 (en) * 2001-03-21 2002-09-26 Atsushi Okamura Cache memory device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6163834A (en) 1998-01-07 2000-12-19 Tandem Computers Incorporated Two level address translation and memory registration system and method
CN1173271C (zh) * 1999-12-24 2004-10-27 仁宝电脑工业股份有限公司 具有双重高速缓冲映射存储器的高速缓冲存储器系统
US6636906B1 (en) * 2000-04-28 2003-10-21 Hewlett-Packard Development Company, L.P. Apparatus and method for ensuring forward progress in coherent I/O systems
US6725289B1 (en) * 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
US7349943B2 (en) * 2003-03-12 2008-03-25 Microsoft Corporation Protocol-independent client-side caching system and method
CN100370441C (zh) * 2003-10-18 2008-02-20 鸿富锦精密工业(深圳)有限公司 遍历访问控制列表中许可权方法
US7937534B2 (en) 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020138699A1 (en) * 2001-03-21 2002-09-26 Atsushi Okamura Cache memory device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Direct Cache Access for High Bandwidth Network I/O(HUGGAHALLI, R. et al. Proceedings of the 32nd International Symposium on Computer Architecture, Pages 50-59.)*

Also Published As

Publication number Publication date
KR20080080594A (ko) 2008-09-04
US20070156968A1 (en) 2007-07-05
WO2007078958A3 (en) 2008-01-03
CN101351773B (zh) 2013-05-01
US7937534B2 (en) 2011-05-03
CN103207842B (zh) 2016-04-20
WO2007078958A2 (en) 2007-07-12
CN101351773A (zh) 2009-01-21
CN103207842A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
KR100914081B1 (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
JP4772795B2 (ja) 大アドレス容量に及ぶ変換テーブルを用いた、アドレス変換の性能向上
KR101060395B1 (ko) 직접 메모리 액세스 변환을 위한 어드레스 윈도우 지원
US7882330B2 (en) Virtualizing an IOMMU
KR100871743B1 (ko) 직접 메모리 액세스 주소 변환을 위한 캐싱 지원
JP5680642B2 (ja) 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
US20130132702A1 (en) Processor with Kernel Mode Access to User Space Virtual Addresses
US20110023027A1 (en) I/o memory management unit including multilevel address translation for i/o and computation offload
AMD et al. Technology (IOMMU) specification
KR20130048762A (ko) 입력/출력 주소의 메모리 주소로의 변환
KR20070052334A (ko) 계층적 변환 테이블을 이용하는 입력/출력 장치들을 위한어드레스 변환
KR20070047845A (ko) 직접 메모리 액세스 어드레스 변환을 위한 폴트 처리
CN113906389A (zh) 向访客操作系统提供输入输出存储器管理单元寄存器副本
CN114080587A (zh) 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问
EP3959607A1 (en) Domain identifier and device identifier translation by an input-output memory management unit
WO2012174346A1 (en) Programmable memory address segments

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20100607

Effective date: 20120531

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee