KR101623514B1 - Iommu에 의해 아키텍트되는 tlb 지원 - Google Patents

Iommu에 의해 아키텍트되는 tlb 지원 Download PDF

Info

Publication number
KR101623514B1
KR101623514B1 KR1020127024276A KR20127024276A KR101623514B1 KR 101623514 B1 KR101623514 B1 KR 101623514B1 KR 1020127024276 A KR1020127024276 A KR 1020127024276A KR 20127024276 A KR20127024276 A KR 20127024276A KR 101623514 B1 KR101623514 B1 KR 101623514B1
Authority
KR
South Korea
Prior art keywords
address translation
translation information
cache
information
address
Prior art date
Application number
KR1020127024276A
Other languages
English (en)
Other versions
KR20130009781A (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 KR20130009781A publication Critical patent/KR20130009781A/ko
Application granted granted Critical
Publication of KR101623514B1 publication Critical patent/KR101623514B1/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
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Landscapes

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

Abstract

본 발명의 실시예들은, 페이지 테이블 구조 및 포맷과는 독립된 개선된 변환 동작을 갖는 입출력 메모리 관리 유닛(IOMMU)의 보다 더 작고 더 간단한 하드웨어 구현을 가능하게 한다. 본 발명의 실시예들은 또한, 디바이스 독립적 구조를 제공함과 아울러 그 구현 방법을 제공하여, 소프트웨어의 보편성을 더 크게 증진시킬 수 있다(즉, 특정된 소프트웨어 버전만이 사용될 수 있는 경우가 거의 없어지며, 이것은 또한 개발 비용을 감소시킴).

Description

IOMMU에 의해 아키텍트되는 TLB 지원{IOMMU ARCHITECTED TLB SUPPORT}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 특히 입출력 메모리 관리 유닛(Input/Output Memory Management Unit, IOMMU)에 관한 것이다.
메모리 관리 유닛(Memory Management Unit, MMU)은 중앙 처리 장치(Central Processing Unit, CPU)와 관련될 수 있다. 예를 들어, CPU MMU는 CPU에 의해 사용되는 가상 어드레스를 시스템 메모리에 대응하는 물리적 어드레스로 변환하도록 구성되고, CPU MMU는, CPU와 관련된, 메모리 오버-커밋(memory over-commit), 리로케이션(relocation), 및 보호(protection)에 있어, 액세스(제공, 판독, 기입 등)를 유효화한다.
x86 CPU와 관련된 시스템에서, 입출력 주변기기와 관련된 입출력(IO) MMU는 상대적으로 최근에 정의되었다. 입출력 메모리 관리 유닛(IOMMU)은, 예를 들어, 주변기기에 의해 사용되는 가상 어드레스와 관련된 주변기기 요청에 응답하여, 가상 어드레스를 시스템 메모리의 대응하는 물리적 어드레스로 변환하기 위해, 시스템 메모리로부터 변환 정보를 검색할 수 있다.
IOMMU는 전형적으로 페이지-테이블 워커 로직(page-table walker logic)을 포함할 수 있는바, 페이지-테이블 워커 로직은 필요한 변환 정보를 찾기 위해(즉, 페이지-테이블 워크(page-table walk)를 수행하기 위해) 메인 시스템 메모리의 콘텐츠를 조사한다. 예를 들어, 주변기기 요청 정보가 IOMMU에 캐시(cache)되지 않은 때(즉, "미스(miss)"일 때), 시스템 메모리로부터 정보를 획득하기 위해 페이지-테이블 워커가 사용된다. 그러나, 페이지-테이블 워커는 구현하기에 복잡할 수 있는바, 이는 IOMMU 칩이나 칩 컴포넌트의 실리콘 영역 및 파워 소비를 증가시킬 수 있다. IOMMU는 페이지-테이블 워커를 IOMMU 하드웨어에 이용가능한 제한된 정보(예를 들어, 최근 최소 사용(Least-Recently-Used, LRU) 알고리즘에 근거하여 IOMMU 내에 캐시된 영향력 있는 정보)에 근거하여 국부적으로 최적화되도록 구현한다. 이러한 하드웨어만의 구현 예는, 잠재적으로 과다 변환 페치(excessive translation fetche)들("페이지-테이블 워크들") 및 과다 변환 미스(excessive translation missss)들을 유발시킬 수 있는바, 이는 입출력 서브시스템의 성능을 저하시킬 수 있으며, 메모리 레이턴시(memory latency)를 증가시킬 수 있다.
또한, 전형적으로 IOMMU는 특정 아키텍처와 관련된 페이지 테이블 엔트리들의 포맷에 근거하여 정보를 판독 및 파싱(parsing)하도록 구성되는바, 이는 IOMMU를 특정 페이지 테이블 아키텍처에 한정시키며, 페이지 테이블 포맷을 하드웨어 설계(암시적으로는 특정 호환가능 프로세서 구현)에 따르게 한다.
소프트웨어에 의해 아키텍트(architect)/관리(manage)되는 변환 참조 버퍼(Translation Look-aside Buffer, TLB) 캐시가 또한 알려져 있다. 소프트웨어는 TLB를 관리하고, 임의의 페이지 테이블 워크는 소프트웨어로 행해진다. 소프트웨어가 엔트리(entry)들을 TLB에 로딩하지만, 어떠한 하드웨어 인프라스트럭처(hardware infrastructure)도 소프트웨어에 의해 아키텍트되는 TLB를 지원하지 않는다. 더욱이, 소프트웨어에 의해 아키텍트되는 TLB는, 로딩 및/또는 무효화시 유연성이 없다(즉, 엔트리가 TLB에 로딩될 때, 로더(loader)는 이전 엔트리를 교체시킨다).
일부 입출력 제어기 혹은 주변기기는, 오퍼레이팅 시스템(operating system)이나 하이퍼바이저(hypervisor)에서 디바이스 드라이버 소프트웨어에 의해 관리되는 간단한 MMU를 포함한다. 예를 들어, 전형적인 그래픽 제어기는 그래픽 카드 상에 "로컬(local) MMU"를 포함한다. 이러한 경우에, "로컬 MMU" 맵핑 하드웨어(mapping hardware)는 정교한 알고리즘을 사용하여 시스템 소프트웨어에 의해 제어되지만, 각각의 MMU는 독자적 MMU이고 독자적 드라이버를 요구한다. 주변기기 하드웨어의 변경은 드라이버의 변경을 요구하는바, 이는 개발 비용을 증가시키고 개발 스케줄을 길게 하며, 궁극적으로 시장진입시기(time-to-market)를 지연시킨다. 이것이 또한 의미하는 것은, 벤더(vendor)가 가상 시스템에서 하이퍼바이저를 위해 범용 드라이버를 라이팅(writing)할 수 없다는 것이고, 이에 따라 특정 드라이버는 하이퍼바이저 내에 포함돼야만 함(그 선택은 시스템에 존재하는 세세한 입출력 주변기기들에 따라 달라짐)을 의미한다. 이것이 의미하는 바는, 지원되는 오퍼레이팅 시스템에 대한 드라이버들에 추가하여, 또 다른 드라이버가 하이퍼바이저를 위해 라이팅 및 테스팅돼야만 함을 의미하는바, 이것은 또한 개발 비용 및 시간을 증가시킨다.
소프트웨어가 하이퍼바이저에 대해 한번 라이팅되어 주변기기 메모리 맵핑 아키텍처의 다수의 구현을 위해 사용될 수 있도록 하는 표준 인터페이스를 제공하고 IOMMU 성능을 개선하는 방법이 필요하다.
본 발명의 실시예들은, 페이지 테이블 구조 및 포맷과는 독립된 개선된 변환 동작을 갖는 IOMMU의 보다 더 작고 더 간단한 하드웨어 구현을 가능하게 한다. 본 발명의 실시예들은 또한, 디바이스 독립적 구조를 제공함과 아울러 그 구현 방법을 제공하여, 소프트웨어의 보편성을 더 크게 증진시킬 수 있다(즉, 특정된 소프트웨어 버전만이 사용될 수 있는 경우가 거의 없어지며, 이것은 또한 개발 비용을 감소시킴).
본 발명의 일 실시예는 방법에 관한 것으로, 이 방법은, 시스템의 입출력 메모리 관리 유닛(IOMMU)에서 프리페치 이미디어트 커맨드(prefetch immediate command)를 수신하는 단계를 포함한다. 프리페치 이미디어트 커맨드는, (i) 가상 어드레스와 (ii) 가상 어드레스와 관련된 변환된 물리적 어드레스를 포함하는 어드레스 변환 정보를 특정한다. 이 방법은 또한, 적어도 리소스 상태(resource status)에 근거하여, 어드레스 변환 정보를, IOMMU와 관련된 입출력 변환 참조 버퍼(Input/Outout Translation Look-aside Buffer, IOTLB)에 선택적으로 저장하는 단계를 포함한다.
본 발명의 또 다른 실시예는 시스템에 관한 것으로, 이 시스템은, 프리페치 이미디어트 커맨드를 수신하도록 구성된 입출력 메모리 관리 유닛(IOMMU)을 포함한다. 프리페치 이미디어트 커맨드는, (i) 가상 어드레스와 (ii) 가상 어드레스와 관련된 변환된 물리적 어드레스를 포함하는 어드레스 변환 정보를 특정한다. IOMMU와 관련된 입출력 변환 참조 버퍼(IOTLB)가, 적어도 리소스 상태에 근거하여, 어드레스 변환 정보를 선택적으로 저장하도록 구성된다.
본 발명의 또 다른 실시예는 유형의 컴퓨터 판독가능 매체에 관한 것으로, 이 컴퓨터 판독가능 매체에는 컴퓨터 실행가능 명령들이 저장되고, 컴퓨터 실행가능 명령들은, 컴퓨팅 디바이스(computing device)에 의해 실행되는 경우, 컴퓨팅 디바이스로 하여금, 시스템의 입출력 메모리 관리 유닛(IOMMU)에서 프리페치 이미디어트 커맨드를 수신하는 단계와, 그리고 적어도 리소스 상태에 근거하여, 어드레스 변환 정보를, IOMMU와 관련된 입출력 변환 참조 버퍼(IOTLB)에 선택적으로 저장하는 단계를 포함하는 방법을 수행하도록 한다. 프리페치 이미디어트 커맨드는, (i) 가상 어드레스와 (ii) 가상 어드레스와 관련된 변환된 물리적 어드레스를 포함하는 어드레스 변환 정보를 특정한다.
본 발명의 다른 특징들 및 장점들뿐만 아니라 본 발명의 다양한 실시예들의 구조 및 동작이, 첨부되는 도면을 참조하여 아래에서 상세히 설명된다. 본 발명이 본 명세서에서 설명되는 특정 실시예들로만 한정되는 것이 아님에 유의해야 한다. 이러한 실시예들은 단지 예시적 목적으로 본 명세서에 제시된다. 추가적 실시예들은, 본 명세서에 포함된 가르침에 근거하여 관련 기술분야에서 숙련된 자들에게 명백하게 될 것이다.
첨부된 도면(이것은 본 명세서에 통합됨과 아울러 상세한 설명의 일부를 형성함)은, 본 발명의 실시예들을 나타내고, 그리고 앞에서 제공된 전반적인 설명 및 아래에서 제공되는 상세한 설명과 함께, 본 발명의 실시예들의 원리를 설명하는 역할을 한다.
도 1은 본 발명의 실시예에 따른, IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 2는 본 발명의 또 다른 실시예에 따른, IOMMU를 나타낸 블록도이다.
도 3은 본 발명의 또 다른 실시예에 따른, 시스템 메모리와 상호작용하는 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 4는 본 발명의 또 다른 실시예에 따른, 시스템 메모리와 상호작용하는 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 5는 본 발명의 또 다른 실시예에 따른, 어드레스 변환 정보를 선택적으로 저장하기 위한 방법을 나타낸 흐름도이다.
도 6은 본 발명의 또 다른 실시예에 따른, IOMMU를 나타낸 블록도이다.
도 7은 본 발명의 또 다른 실시예에 따른, 시스템 메모리와 상호작용하는 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 8은 본 발명의 또 다른 실시예에 따른, 시스템 메모리와 상호작용하는 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 9는 본 발명의 또 다른 실시예에 따른, 어드레스 변환 데이터에 대한 요청에 대해 서비스를 제공하기 위한 방법을 나타낸 흐름도이다.
도 10은 본 발명의 또 다른 실시예에 따른, 시스템 메모리와 상호작용하는 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 11은 본 발명의 또 다른 실시예에 따른, IOTLB를 갖는 주변기기와, 그리고 IOMMU를 포함하는 시스템을 나타낸 블록도이다.
도 12는 본 발명의 또 다른 실시예에 따른, 인터럽트 리맵핑 버퍼와, 그리고 디바이스 테이블 엔트리 버퍼를 포함하는 IOMMU를 나타낸 블록도이다.
본 발명의 실시예는 메모리 관리 유닛 및 그 애플리케이션을 제공한다. 아래의 상세한 설명에서, "일 실시예", "실시예", "예시적 실시예" 등의 언급을 통해 나타내고자 하는 것은, 그 설명된 실시예가 특별한 특징, 구조, 혹은 특성을 포함할 수는 있지만 모든 실시예가 그러한 특별한 특징, 구조, 혹은 특성을 반드시 포함하는 것은 아님을 나타낸다. 더욱이, 이러한 표현이 반드시 동일한 실시예를 언급하는 것도 아니다. 또한, 특별한 특징, 구조, 혹은 특성이 임의의 실시예와 연계되어 설명되는 경우, 명시적으로 설명되든 그렇지 않든 상관없이, 이러한 특징, 구조, 혹은 특성은 본 발명의 기술 분야에서 숙련된 자의 지식 범위 내에서 다른 실시예와도 연계될 수 있음을 이해해야 한다.
도 1은 CPU(106) 및 CPU(106)와 관련된 CPU MMU(108)를 포함하는 시스템(100)을 나타낸 블록도이다. 시스템(100)은 또한 주변기기(110)와 관련된 IOMMU(102)를 포함한다. 비록 여기서 도시되지는 않았지만, 복수의 IOMMU들이 시스템(100) 내에 있을 수 있고, 마찬가지로 복수의 CPU MMU들(108)이 있을 수 있다(예를 들어, 멀티프로세서 시스템들).
IOMMU(102)는 정의된 기능 및 동작 세트에 따라 동작한다. 이러한 기능 및 동작은 커맨드 세트와 관련되는바, 이 커맨트 세트는 시스템 메모리(104) 내에 큐잉(queuing)되며 IOMMU(102)에 의해 판독되어 IOMMU(102)에 의해 수행/소비된다.
IOMMU(102)는 주변기기(110)와 시스템 메모리(104) 간의 가상/물리적 어드레스들을 변환하고 인터럽트 리맵핑(interrupt remapping)을 수행한다. 인터럽트 리맵핑은, 어드레스들을 변환한다는 점에서(인터럽트들을 리맵핑하는 것에 대응함), 어드레스 변환과 유사한 기능을 한다. IOMMU(102)의 변환/리맵핑 속도를 향상시키기 위해, 시스템 메모리(104) 내에 저장된 어드레스 변환/인터럽트 리맵핑 정보는 IOMMU(102) 내에 캐시될 수 있다. 이것은 IOMMU(102)가 변환 정보 혹은 리맵핑 정보에 액세스할 수 있는 속도를 증가시킨다.
도 2는 도 1의 IOMMU(102)를 보다 상세히 나타낸 블록도이다. IOMMU(102)는 메인 시스템 메모리(104)(도 1 참조)의 콘텐츠를 조사하도록 구성된 페이지-테이블 워커(214)를 포함한다. 페이지-테이블 워커(214)는 또한 IOMMU(102) 내의 저장/캐시를 위한 정보의 로케이션(location) 및 검색을 용이하게 한다. 페이지-테이블 워커(214)는 변환 정보를, 변환 참조 버퍼(Translation Look-aside Buffer, TLB)(이것은 또한 입출력 TLB(Input/Output TLB, IOTLB)로 불리기도 함)(212)로 불리는 캐시에 삽입할 수 있다. IOTLB(212)는 가상 어드레스들(216)과 물리적 어드레스들(218) 간의 어드레스 변환을 위해 사용될 수 있다. 유사한 캐시 구조가 인터럽트 리맵핑을 위해 사용될 수 있다.
IOMMU(102)는, 캐시될 정보의 채움을 제어함과 아울러 IOMMU(102) 및/또는 IOTLB(212) 내에 캐시된 변환/리맵핑 정보의 무효화 혹은 플러싱(flushing)을 제어하는 커맨드들을 시스템 메모리(104)로부터 판독한다. IOMMU(102)는 또한, 주변기기(110)로부터의 정보에 대한 요청들에 응답하여, 변환/리맵핑 정보를 시스템 메모리(104)로부터 자동으로 로딩할 수 있다. 예를 들어, IOMMU(102)는 페이지-테이블 워커(214)로 하여금 페이지-테이블 워크를 수행하도록 함과 아울러 시스템 메모리(104)의 페이지 테이블들로부터 물리적 어드레스들(218)을 검색하도록 할 수 있다. 페이지-테이블 워크는 가상 어드레스들(216)을 포함하는 주변기기(110)로부터의 요청들에 응답할 수 있다(이때, 변환될 가상 어드레스들(216)은 IOTLB(212) 내에 캐시되어 있지 않음).
IOTLB(212) 내의 어드레스 변환/리맵핑 정보는 하드웨어 및/또는 소프트웨어를 통해 다양한 방식(이것은 또한 변환 버퍼 정책으로도 지칭됨)으로 유지 및 업데이트될 수 있다. 예를 들어, CPU(106) 상의 시스템 소프트웨어는 IOMMU(102) 내의 캐시된 정보(즉, 시스템 메모리(104) 내에 저장된 대응하는 정보에서의 변경으로 인해 이제 더 이상 유효하지 않은 정보)를 무효화시킬 수 있다. IOMMU(102)는 또한, 하드웨어가 IOMMU(102) 내에 캐시된 변환 엔트리들의 캐시 및 퇴거(eviction)를 주로 결정하도록, 하드웨어에서의 변환 버퍼 정책을 구현할 수 있다. 캐시된 변환 엔트리는 새로운 정보를 위한 공간을 만들기 위해 퇴거될 수 있다. 캐시된 변환 엔트리는, 더 이상 유효하지 않게 된 경우, 플러싱돼야만 한다. IOTLB(212) 내의 정보가 교체돼야 하거나 더 이상 유효하지 않은 경우, 이 정보를 처리함에 있어 이러한 기술 및 다른 기술들이 적용될 수 있다.
IOMMU(102)는, 주변기기(110)로부터 정보에 대한 요청을 수신하기 전에, 그 정보를 시스템 메모리(104)로부터 프리페치(prefetch)할 수 있다. 프리페치 커맨드는, 예를 들어, 미국 특허출원번호 제12/112,611호(발명의 명칭: "Translation Data Prefetch in an IOMMU", 출원일: 2008년 4월 30일)에 개시된 바와 같이 구현될 수 있으며, 상기 미국 특허출원의 내용은 그 전체가 참조로 본 명세서에 통합된다. 프리페치 커맨드는 IOMMU(102)에게 명령하여 시스템 메모리(104)의 페이지 테이블들을 워크하도록 할 수 있고, 예를 들어 특정된 (디바이스 가상) 어드레스들과 관련된 변환 정보를 프리로딩(preloading)하도록 할 수 있다. 이에 따라, 프리로딩된 변환 정보는, 요청이 IOMMU(102)에 들어오는 경우, IOTLB(212) 내에서 이용가능하게 된다.
도 3은 IOMMU(302) 및 시스템 메모리(304)를 포함하는 시스템(300)을 나타낸 블록도이다. 시스템(300)은 또한, 페이지 테이블들(320) 및 이벤트 로그 버퍼(event log buffer)(328)를 포함한다. 어드레스 변환 정보(322)는 페이지 테이블들(320)에서 액세스가능하다. IOMMU 엔트리(330)는 이벤트 로그 버퍼(328)에서 액세스가능하다. 시스템(300)은 추가적으로 CPU(306) 및 CPU MMU(308)를 포함할 수 있다.
IOMMU 캐시(들)를 채우는 것과 관련하여, IOMMU(302)는 시스템 메모리(304)의 페이지 테이블들(320)에 저장된 어드레스 변환 정보(322)에 액세스하여 이 정보를 캐시한다. 예시된 바와 같이, IOMMU(302)의 페이지-테이블 워커(314)는 어드레스 변환 정보(322)를 검색하기 위해 페이지-테이블 워크를 수행한다. 그 다음에, 어드레스 변환 정보(322)는 IOTLB(312) 내에 캐시된다. 주변기기(310)로부터 어드레스 변환 정보(322)에 대한 후속 요청이 IOMMU(302)에 도착하는 경우, 어드레스 변환 정보(322)는 IOTLB(312) 내에서 이용가능하고, 이에 따라 페이지-테이블 워크는 필요하지 않다. 만약 IOMMU(302)에서 이제 더 이상 이용가능하지 않는 어드레스 변환 정보(322)에 대한 요청이 IOMMU(302)에 도착한다면, 페이지 테이블들(320)로부터 어드레스 변환 정보(322)를 획득하기 위해 후속 페이지-테이블 워크가 수행될 수 있다. 대안적으로, 시스템(300)은 IOTLB(312)의 콘텐츠를 업데이트하기 위해 프리페치 이미디어트 커맨드(326)를 이용할 수 있다.
IOMMU(302)는 시스템 메모리(304)의 커맨드 큐(command queue)(324)에 저장된 커맨드들을 판독 및 소비할 수 있다. 이에 따라, IOMMU(302)는 커맨드들에서 전달된 정보를 사용하여 그 캐시(들)를 채울 수 있다. 이러한 채움 정책(fill policies)에 추가하여, IOMMU(302)에 의해 판독된 커맨드들은, 실제로, 시스템 소프트웨어로 하여금 IOTLB(312) 내에 캐시된 정보를 무효화하도록 할 수 있거나 아니면 업데이트하도록 할 수 있다. 예를 들어, 무효화는, 어드레스 변환 정보(322)가 변경되어 IOTLB(312) 내의 이전에 캐시된 어드레스 변환 정보가 이제 더 이상 그 변경된 어드레스 변환 정보(322)와는 대응하지 않는 상황과 관련될 수 있다.
IOMMU(302)에 의해 커맨드 큐(324)로부터 판독된 커맨드들은, IOMMU(302)의 기능을 더 증진시킬 수 있다. 프리페치 이미디어트 커맨드(326)는 프리페치 이미디어트 커맨드(326)의 바디(body) 내에 어드레스 변환 정보(322)를 포함할 수 있다. 그 다음에, IOMMU(302)는 프리페치 이미디어트 커맨드(326)를 통해 어드레스 변환 정보(322)를 수신할 수 있다. 이에 따라, IOMMU(302)는 어드레스 변환 정보(322)의 획득을 위해 페이지 테이블들(320)을 워크하는 페이지-테이블 워커(314)를 사용할 필요가 없다. 프리페치 이미디어트 커맨드(326)에서의 정보는, 어떠한 페이지-테이블 워크의 수행도 없이, 타겟 IOTLB(312) 내에 바로 로딩될 수 있다. 예시된 바와 같이, 페이지-테이블 워커(314)는 프리페치 이미디어트 커맨드(326)와 연계하여 백업(back-up) 및/또는 작업(work)을 수행하기 위해 이용가능하다.
프리페치 이미디어트 커맨드(326)는 IOMMU에 대한 새로운 커맨드로서 구현될 수 있거나, 혹은 앞서 설명된 프리페치 커맨드의 변형으로서 구현될 수 있다. 이것은 또한 시스템 소프트웨어에 의해 필요한 정보가 라이팅되는 MMIO 레지스터들의 세트로서 구현될 수 있다.
도 4는 본 발명의 실시예에 따른, 프리페치 이미디어트 커맨드(426)를 구현하는 시스템(400)을 나타낸 블록도이다. 시스템(400)은 주변기기(410)와 관련되며, CPU(406), CPU MMU(408), 및 시스템 메모리(404)를 포함할 수 있다. 시스템 메모리(404)는 페이지 테이블들(420), 커맨드 큐(424), 및 이벤트 로그 버퍼(428)를 포함한다. 시스템 메모리(404)는 또한, IO 페이지 테이블들(430)과 관련될 수 있다. 어드레스 변환 정보(422)는 IO 페이지 테이블들(430) 내에 저장될 수 있다. IO 페이지 테이블들(430)의 내부 포맷은 페이지 테이블들(420)의 내부 포맷과 동일할 필요는 없다. 프리페치 이미디어트 커맨드(426)는 어드레스 변환 정보(422)를 IOTLB(412) 내에 캐시한다. 어드레스 변환 정보(422)는 가상 어드레스들(416) 및 물리적 어드레스들(418)과 관련된다. 시스템(400)은, 프리페치 이미디어트 커맨드(426)에 의한 사용을 위해 어드레스 변환 정보(422)를 제공하도록, 커맨드 큐(424) 및 프리페치 이미디어트 커맨드(426)를 관리할 수 있다. 이에 따라, 프리페치 이미디어트 커맨드(426)를 사용하여 IOMMU와 상호작용하는 시스템(400)은, 이 시스템(400)이 IOMMU(402) 내에 데이터를 캐시하는 것과 관련될 수 있는 유연성 및 기회를 갖는다.
추가적으로, 시스템(400)은, 페이지-테이블 워커(414)의 사용을 요구함이 없이, 어드레스 변환 정보(422)를 IOTLB(412)에 캐시하는 것을 달성할 수 있다. 따라서, 시스템(400)은 (특정 하드웨어로 구성된 페이지-테이블 워커(414)가 사용되는 경우에) 특정 하드웨어로 구성된 페이지-테이블 워커(414)와 인터페이스하는 특정 시스템 드라이버들을 포함할 필요가 없다. 그러나, 전체 성능을 향상시키기 위해 프리페치 이미디어트 커맨드(426)는 하드웨어 페이지-테이블 워커(414)와 함께 작업을 수행 수도 있음(이것이 적용가능하다면)을 이해해야 한다.
도 5는 본 발명의 실시예에 따른, 시스템 상태에 근거하여 어드레스 변환 정보를 선택적으로 저장하는 예시적 방법(560)을 나타낸 흐름도이다. 단계(570)에서, IOMMU는 어드레스 변환 정보를 특정하는 프리페치 이미디어트 커맨드를 수신한다. 단계(572)에서, 시스템 상태가, 예를 들어, IOMMU 혹은 시스템에 의해, 점검된다. 시스템 상태는 시스템의 리소스 상태(resource status)를 포함할 수 있는바, 여기에는 시스템 리소스들의 이용가능성, IOTLB 내의 하나 이상의 비어 있는 어드레스 엔트리들의 이용가능성, 파워 절약 및/또는 수면 상태, 그리고/또는 해당 시스템 요청들에 대한 시스템 리소스들의 이용가능성이 포함된다. 리소스 상태는 또한, 프리페치 이미디어트 커맨드에서 특정된 무효화 표시, 또는 프리페치 이미디어트 커맨드에서 특정된 어드레스 변환 정보에 대응하는 IOTLB 내에 저장된 하나 이상의 유효 어드레스 엔트리들의 우선도를 포함할 수 있다.
단계(574)에서, 시스템 상태에 근거하여 프리페치 이미디어트 커맨드를 무시할지 여부의 결정이 수행된다. 만약 프리페치 이미디어트 커맨드를 무시하지 않는다고 결정되면, 이 방법은 단계(576)로 진행하고, 어드레스 변환 정보는 IOMMU의 IOTLB에 저장된다. 그 다음에, 이 방법은 단계(576)로부터 단계(578)로 진행한다. 만약 단계(574)에서 프리페치 이미디어트 커맨드를 무시한다고 결정하면, 이 방법은 단계(578)로 진행하고, 커맨드 큐 내의 다음 IOMMU 커맨드가 처리된다.
프리페치 이미디어트 커맨드에 대한 커맨드 포맷은, 변환된 물리적 어드레스와, 그리고 액세스 허가 표시자들, 및 특정된 (디바이스 가상) 어드레스에 대한 IOMMU 도메인 정보를 포함하는 다른 정보를 포함할 수 있다. 커맨드 포맷은 또한 IOTLB 슬롯 목적지(IOTLB slot destination)를 포함할 수 있다.
IOMMU는 프리페치 이미디어트 커맨드를 선택적으로 무시할 수 있다. 예를 들어, IOMMU는, IOMMU 캐시들 내의 기존의 엔트리가 오버라이팅(overwriting)돼지 말야만 하는지의 결정, 및 어드레스 변환이 삽입돼야만 하는 현재 이용가능한 IOMMU 캐시 엔트리가 존재하지 않는지의 결정을 할 수 있다. 무시된 프리페치 이미디어트 커맨드에 포함되었지만 삽입되지 않은 어드레스 변환 정보에 대한 요청이 이후 IOMMU에 도착하는 경우, IOMMU는, 그 요청된 어드레스 변환 정보를 획득하기 위해, 페이지-테이블 워크를 수행할 수 있거나 프리페치 이미디어트 커맨드를 요청할 수 있다. 만약 어떤 이유로 인해 프리페치 이미디어트 커맨드를 받아들이기에 상황이 나쁘거나 적절한 시기가 아니라면, 프리페치 이미디어트 커맨드가 무시되도록 하는 것이 안전하다.
프리페치 이미디어트 커맨드를 선택적으로 받아들이고 무시함으로써, IOMMU는, 해당 커맨드를 받아들일지 여부의 결정시 리소스 상태를 고려하여 시스템 성능을 최적화시킬 수 있다. 어드레스 변환 정보를 획득 및 삽입하기 위한 하드웨어 기반의 인프라스트럭처/메커니즘들이 IOMMU의 실시예들에 대해 이용가능하고, 프리페치 이미디어트 커맨드는 하드웨어 인프라스트럭처의 상부에서의 억셀레이션(acceleration)이다. 프리페치 이미디어트 커맨드는 어드레스 변환 정보를 로딩할 수 있거나, 혹은 어드레스 변환 정보의 로딩을 위해 이 커맨드는 무시되고 하드웨어 메커니즘에 의존할 수 있다.
프리페치 이미디어트 커맨드는, 어드레스 변환 정보를 IOMMU에게 제공하기 위해 IOMMU의 페이지-테이블 워커에 대한 대안을 제공한다. 추가적으로, 그 제공된 어드레스 변환 정보를 IOMMU의 IOTLB에 로딩 및/또는 삽입하기 위한 다양한 기술들이 구현될 수 있다. 본 명세서에서 설명되는 실시예들은 IOMMU의 기존 기능과 결합하여 작업을 수행할 수 있거나, 혹은 IOMMU 기능에 우선하여 작업을 수행할 수 있다.
일 실시예에서, IOMMU의 네이티브 캐시 교체 알고리즘(native cache replacement algorithm)은, 제공된 어드레스 변환 정보를 IOMMU의 IOTLB(즉, IOMMU의 내부 어드레스 변환 캐시)에 삽입하는데 사용될 수 있다. 이러한 방식으로, IOMMU IOTLB 변환 캐시는, 그 제공된 어드레스 변환 정보를 IOTLB에 로딩/삽입시 정상적으로 기능을 수행한다. 그러나, IOMMU는 전체적으로, IOMMU의 네이티브 캐시 교체 알고리즘에 어드레스 변환 정보를 획득 및/또는 제공하기 위해 페이지-워크 기능을 필요로 하지 않는다.
따라서, IOMMU의 네이티브 캐시 교체 알고리즘은 결과적으로 퇴거를 유발시킬 수 있는 상황(예를 들어, 제공된 어드레스 변환 정보를 저장하기 위해 IOTLB 내에 빈 슬롯이 없는 경우)을 처리할 수 있다. 예를 들어, IOTLB의 정상 동작은, IOTLB 내에 이미 캐시된 어드레스 변환 정보가 (이러한 이미 캐시된 어드레스 변환 정보가 사용 혹은 요청되기 전에도) 다른 제공된 어드레스 변환 정보에 의해 퇴거(교체)될 수 있도록 한다.
또 다른 실시예에서, 프리페치 이미디어트 커맨드는 정보를 포함할 수 있는바, 이 정보는 IOMMU로 하여금 IOMMU IOTLB 변환 캐시 내의 특정 슬롯에 해당 정보를 로딩하도록 하는 정보이다. 이러한 정보의 로딩은 그 프리페치 이미디어트 커맨드에 대한 IOMMU 변환 캐시 교체 하드웨어 및/또는 알고리즘을 무시 혹은 대체한다. IOTLB의 정상 동작은 후속적으로, 변환 정보가 그 사용 전에 퇴거(교체)되도록 할 수 있다. 시스템이 IOMMU를 제어할 수 있기 때문에, 시스템은 IOMMU 변환 캐시 교체 하드웨어 및/또는 알고리즘의 세부 사양으로부터 자유롭다.
또 다른 실시예에서, IOTLB 구조는, 예를 들어, 시스템 소프트웨어가 콘텐츠를 직접 조작할 수 있는 MMIO 공간에 직접 노출되거나, 혹은 어드레스/데이터 레지스터 쌍을 통해 MMIO 공간에 간접적으로 노출된다.
도 6은 본 발명의 실시예에 따른, 사이드 TLB(side TLB)(632)를 포함하는 IOMMU(602)의 또 다른 실시예를 나타낸 블록도이다. IOMMU(602)는 가상 어드레스들(616), 물리적 어드레스들(618), 및 페이지-테이블 워커(614)와 관련된다. 사이드 TLB(632)는 IOTLB(612)로부터 분리된다. IOMMU(602)는 제공된 어드레스 변환 정보를 특별한 "사이드(side)" 변환 참조 버퍼들(사이드 TLB(632))에 삽입할 수 있다. 사이드 TLB(632)는 시스템 소프트웨어에 의해 관리될 수 있고, 그리고 빈번하게 사용되는 변환들을 포함할 수 있다. 빈번하게 사용되는 변환들을 사이드 TLB(632)를 사용함으로써 IOTLB(612)와는 별개로 유지시키는 것은, 빈번하게 사용되는 변환들을 IOTLB(612)에서의 슬롯들에 대해 다른 어드레스 변환들과 경쟁해야 하는 것으로부터 해방시킨다. 사이드 TLB(632)에 캐시된 빈번하게 사용되는 변환들은, IOTLB(612) 상에서 수행되는 IOMMU(602)의 정상 변환 캐시 동작에 의해 퇴거되지 않는바, 이것은 사이드 TLB(632)가 "스티키(sticky)"하도록 하며 어드레스 변환 정보의 저장에 대해 언제나 이용가능하도록 해준다. 예를 들어, 사이드 TLB 캐시의 엔트리들에 저장된 어드레스 변환 정보를 필요로 하는 디바이스 직접 메모리 액세스(Direct Memory Access, DMA) 동작들은 빠르게 변환될 수 있으며, IOMMU에 의한 페이지 워크에 의해 지연되지 않는다.
도 7은 본 발명의 실시예에 따른, IOTLB(712) 및 사이드 TLB(732)가 포함된 IOMMU(702)를 구비한 시스템(700)을 나타낸 블록도이다. 시스템(700)은 CPU(706), CPU MMU(708), 시스템 메모리(704)를 포함한다. 시스템 메모리(704)는 페이지 테이블들(720), 커맨드 큐(724), 및 이벤트 로그 버퍼(728)를 포함한다. 시스템(700)에서, 가상 어드레스들(716)을 포함하는 주변기기(710)로부터의 요청이 IOMMU(702)에 도착한다. IOMMU(702)는, 가상 어드레스들(716)에 대응함과 아울러 물리적 어드레스들(718)과 관련된 어드레스 변환 정보가 IOMMU(702)에서 IOTLB(712) 및/또는 사이드 TLB(732) 내에 캐시되어 있는지 여부를 결정한다. 만약 이 정보가 IOMMU(702)에서 이용가능하지 않고 메인 시스템 메모리(704)의 페이지 테이블들(720)로부터 이용가능하다면, IOTLB 미스(miss)(이것은 정보가 이용가능하지 않는 페이지 폴트(page fault)와는 다른 것임) 상태가 된다. 페이지-테이블 워커(714)는 IOMMU(702)에서 요청을 서빙(serving)하기 위해 필요한 어드레스 변환 정보를 획득 및 제공하기 위해 시스템 메모리(704)의 페이지 테이블들(720)에 액세스할 수 있다. 추가적으로, 시스템(700)은, 페이지-테이블 워커(714)의 페이지-테이블 워크 수행을 기다림 없이, 사이드 TLB(732) 및 IOTLB(712)에 대해 어드레스 변환 정보(722)를 제공하기 위한 프리페치 이미디어트 커맨드(726)를 실행시키기 위해 커맨드 큐(724)를 사용할 수 있다.
IOMMU(702)는, 시스템 소프트웨어가 저장소 캐시의 사용을 최적화할 수 있도록, 프리페치 이미디어트 커맨드(726)와 관련된 저장소(캐시; 예를 들어, IOTLB(712) 및 사이드 TLB(732))의 크기 및 기능에 대한 정보를 시스템 소프트웨어 및/또는 시스템(700)에 제공하도록 구성될 수 있다. 이러한 제공된 정보에는 예를 들어 엔트리들의 개수 및 타입 그리고 캐시로서의 이들의 구성이 포함될 수 있다. 이에 따라, 시스템(700)은 전체 시스템 수준에서 IOMMU(702)의 저장소 캐시 리소스들을 지능적으로 관리할 수 있다.
도 8은 본 발명의 실시예에 따른, IOTLB(812)를 포함하는 IOMMU(802)를 구비한 시스템(800)을 나타낸 블록도이다. 시스템(800)은 시스템 메모리(804) 및 CPU MMU(808)를 포함한다. 시스템 메모리(804)는 페이지 테이블들(820), 커맨드 큐(824), 및 이벤트 로그 버퍼(828)를 포함한다. 도 8의 실시예에서, IOMMU(802)는 페이지-테이블 워커를 포함하지 않고, 따라서 파워 및 칩 사용 면적을 절약할 수 있다. 가상 어드레스들(816)을 포함하는 주변기기(810)로부터의 요청이 IOMMU(802)에 도착한다. IOMMU(802)는, 주변기기(810)로부터의 변환 요청에 대해 서비스를 제공하기 위해, 가상 어드레스들(816) 및 물리적 어드레스들(818)과 관련된 어드레스 변환 정보가 IOMMU(802)에서 이용가능한지 여부를 결정한다. 어드레스 변환 정보가 IOMMU(802)에 캐시되어 있지 않는 경우(예를 들어, IOTLB 미스(msis)의 경우), IOMMU(802)는 이벤트 로그 버퍼(828)에서 새로운 IOMMU 이벤트 로그 엔트리를 생성한다. 이벤트 로그 엔트리는 메인 CPU(806)에게 변환 정보가 IOMMU(802)에 의해 요구된다고 시그널링한다. 메인 CPU(806)는, 어드레스 변환 정보(822)를 IOTLB(812)에 삽입함과 아울러 이벤트를 트리거(trigger)한 주변기기(810)의 입출력 동작을 재개시키기 위해 프리페치 이미디어트 커맨드(826)를 사용할 수 있다. IOMMU(802) 캐시의 구현 결정 및 사용 패턴에 따라, IOTLB 미스의 확률을 더 감소시키거나 제거하기 위해, 사이드 TLB(예를 들어 도 7 참조, 도 8에서는 도시되지 않았음)가 IOMMU(802)에 포함될 수 있다.
프리페치 이미디어트 커맨드는 도메인 정보(domain information)를 IOMMU 캐시 구조에 주입하기 위해 도메인 정보(디바이스 테이블 엔트리 콘텐츠(Device Table Entry contents))를 포함할 수 있다. 대안적으로, 도메인 정보의 주입은, 다양한 구현 사양들에 따라, 개별 커맨드로서 구현될 수 있다.
도 9는 입출력 동작으로부터의 요청에 대해 서비스를 제공하기 위한 예시적 방법(960)을 나타낸 흐름도이다. 단계(980)에서, 어드레스 변환 정보를 요청하는 입출력 동작으로부터의 요청이 수신된다. 단계(982)에서, 이 요청과 관련된 어드레스 변환 정보가 IOMMU의 IOTLB 내에 이미 저장되어 있는지 여부가 결정된다. 만약 어드레스 변환 정보가 이미 저장되어 있다면, 방법은 단계(984)로 진행하여 그 요청된 어드레스 변환 정보가 제공된다. 만약 단계(982)에서, 어드레스 변환 정보가 이미 저장되어 있지 않다면, 방법은 단계(986)로 진행하여 어드레스 변환 정보가 요청되었음을 시그널링하는 IOMMU 이벤트 로그 엔트리가 생성된다. 단계(990)에서는, IOMMU 이벤트 로그 엔트리에 응답하여, 프리페치 이미디어트 커맨드를 사용하여 하나 이상의 IOMMU 캐시들 내에 요청된 어드레스 변환 정보가 삽입된다. 단계(992)에서, 어드레스 변환 정보를 요청하는 입출력 동작이 재개된다.
도 10은 IOMMU 이벤트 로그 엔트리(1030)를 포함하는 이벤트 로그 버퍼(1028)를 구비한 시스템(1000)을 나타낸 블록도이다. 예시된 실시예는 IOMMU(1002) 내에 페이지-테이블 워커를 포함하지 않고, 따라서 파워 및 칩 사용 면적을 절약할 수 있다. 시스템(1000)은 CPU MMU(1008) 및 시스템 메모리(1004)를 포함한다. 시스템 메모리(1004)는 페이지 테이블들(1020), 커맨드 큐(1024), 및 이벤트 로그 버퍼(1028)를 포함한다. 시스템(1000)에서, 주변기기(1010)로부터의 요청이 IOMMU(1002)에 도착한다. IOMMU(1002)는, 주변기기(1010)로부터의 변환 요청에 대해 서비스를 제공하기 위해, 어드레스 변환 정보가 IOMMU(1002)에서 이용가능한지 여부를 결정한다. 어드레스 변환 정보가 IOMMU(1002)에 캐시되어 있는 않는 경우(예를 들어, IOTLB 미스의 경우), 새로운 IOMMU 이벤트 로그 엔트리(1030)가 이벤트 로그 버퍼(1028)에서 생성된다. IOMMU 엔트리(1030)는 메인 CPU(1006)에게 변환 정보가 IOMMU(1002)에 의해 요구된다고 시그널링한다. 메인 CPU(1006)는, 어드레스 변환 정보(1022)를 IOTLB(1012)에 제공하기 위해 프리페치 이미디어트 커맨드(1026)를 사용한다. 프리페치 이미디어트 커맨드(1026)를 시스템 메모리(1004)의 커맨드 큐(1024) 내에 놓음으로써 변환 정보(1022)가 제공된다. IOMMU(1002)는 커맨드 큐(1024)로부터 프리페치 이미디어트 커맨드(1026)를 페치(fetch)하고, 그리고 IOMMU(1002)는 프리페치 이미디어트 커맨드(1026)를 실행한다. 제공된 어드레스 변환 정보(1022)는, 그 다음에, 앞서 설명된 다양한 채움 정책들을 사용하여 IOTLB(1012) 내에 삽입될 수 있다.
예를 들어, 프리페치 이미디어트 커맨드(1026)는 IOTLB(1012)의 특정 위치에 관한 특정 슬롯 혹은 다른 정보를 포함할 수 있다. 대안적으로, IOMMU의 네이티브 캐시 교체 알고리즘은 제공된 어드레스 변환 정보(1022)를 IOTLB(1012)에 삽입하는데 사용될 수 있다. IOMMU(1002) 캐시의 구현 결정 및 사용 패턴에 따라, IOTLB 미스의 확률을 더 감소시키거나 제거하기 위해, 사이드 TLB(미도시)가 IOMMU(1002)에 포함될 수 있다.
어드레스 변환 정보는 다양한 이유로 IOMMU의 변환 캐시(들)로부터 무효화 및/또는 제거될 수 있다. 예를 들어, IOMMU 내에 캐시된 어드레스 변환 정보는 이제 더 이상 시스템 메모리의 페이지 테이블들에 저장된 어드레스 변환 정보와 대응하지 않을 수 있다.
일 실시예에서, INVALIDATE_IOMMU_PAGES 커맨드는 무효화할 특정 어드레스 혹은 어드레스 변환 정보를 특정하기 위해 사용될 수 있고, 이에 따라 IOMMU는, 무효화할 임의의 특정 엔트리 또는 엔트리들을 찾기 위해 네이티브 IOMMU 탐색 알고리즘을 사용하여, 자신의 내부 어드레스 변환 캐시(들)를 탐색한다.
또 다른 실시예에서, INVALIDATE_IOMMU_PAGES 커맨드는, 무효화할 어드레스 대신, 무효화할 IOMMU의 특정 슬롯을 표시할 수 있다. 이 커맨드는 INVALIDATE_IOMMU_PAGES 커맨드의 변형물로서 구성될 수 있거나, 혹은 이 커맨드는 새로운 커맨드로서 구성될 수 있다.
또 다른 실시예에서, 무효화는 프리페치 이미디어트 커맨드를 발행함으로써 달성될 수 있다. 프리페치 이미디어트 커맨드는 점유된 어드레스 변환 슬롯을 특정할 수 있고, 그리고 점유된 어드레스 변환 슬롯 내에 포함된 정보가 오버라이팅돼야만 하는지를 특정할 수 있다. 예를 들어, 프리페치 이미디어트 커맨드는 무효화 비트를 포함할 수 있다. 무효화 비트가 표시된 경우, IOMMU는 프리페치 이미디어트 커맨드를 따르도록 제어됨과 아울러 사전에 존재하는 어드레스 변환 정보를 오버라이팅하도록 제어된다. 따라서, 무효화 비트는 IOMMU가 프리페치 이미디어트 커맨드를 선택적으로 무시할지 여부를 제어할 수 있다.
IOTLB 구조가, 예를 들어, MMIO 공간에서 직접 노출되는 또 다른 실시예에서(이 경우 시스템 소프트웨어는 콘텐츠를 직접 조작할 수 있음), 무효화는 직접 액세스 방법(direct-access method)을 사용함으로써 달성될 수 있다. 이러한 실시예에서, 시스템 소프트웨어는 (MMIO 공간을 통해 IOTLB를 조작함으로써) 엔트리들을 테이블에 삽입하는 방식과 동일한 방식으로 엔트리들을 무효화시킬 수 있다.
예를 들어, 메인 x86 프로세서 상에서 실행되는 시스템 소프트웨어가 이러한 새로운 커맨드들에 의해 증가하지만, 이로부터 얻어지는 이점은 이러한 이점을 구현하기 위해 용이하게 변경되는 소프트웨어로 구현될 수 있다. 시스템 소프트웨어는, 비변경 하드웨어 메커니즘이 로컬 레벨에서 예측 혹은 구현할 수 있는 것보다 더 세밀하고, 적절하고, 조정가능하고, 그리고 효율적인 교체 기술을 구현할 수 있다. 일부 시스템 제약(전형적으로 성능에 민감한 시스템들)에 있어서, 하드웨어 페이지-테이블 워커를 갖는 전체 IOMMU는 본 명세서에서 설명되는 소프트웨어 커맨드들 및 관련 구조들을 보완하도록 구현될 수 있다.
도 11은 IOTLB를 갖는 주변기기(1111)와, 그리고 IOMMU(1102)를 포함하는 시스템(1100)을 나타낸 블록도이다. 시스템(1100)은 시스템 메모리(1104), CPU(1106), 및 CPU MMU(1108)를 포함한다. 일부 주변기기들은 주변기기 내의 IOTLB를 사용한다. 주변기기의 IOTLB는 IOMMU(1102)의 IOTLB의 로직 확장부로서 기능할 수 있다. IOTLB를 갖는 주변기기(1111)는, IOMMU(1102)가 변환 정보(예를 들어, PCI-SIG ATS 어드레스 변환 서비스)의 획득 및 반환을 위해 페이지 테이블 워크들을 수행하도록 IOMMU(1102)를 사용할 수 있다. 따라서, 프리페치 이미디어트 커맨드 및 다른 관련 커맨드들 그리고 본 명세서에서 설명되는 구조들은, IOTLB를 갖는 주변기기(1111)가 포함된 이러한 시스템들과 호환가능하다.
이러한 시스템들 내의 IOTLB를 갖는 주변기기들(1111)은 그들의 IOTLB를 채우기 위해 PCI-SIG ATS 프로토콜을 계속 사용할 수 있다. 이러한 시스템 내의 IOTLB를 갖는 주변기기들은 또한, 그들의 IOTLB를 채우기 위해 본 명세서에서 설명되는 실시예들을 채택할 수 있다. 시스템 소프트웨어는 주변기기의 IOTLB 및 IOMMU 양쪽 모두를 채울 수 있고, 그리고 프로토콜들 및 소프트웨어 인터페이스는 효율성을 위해 호환가능할 수 있다. 일 실시예에서, IOMMU는 ATS 프로토콜을 지원할 필요가 없는 바, 이는 설계를 간단하게 함과 아울러 실리콘 면적 및 파워 요건을 감소시킨다.
도 12는, IOTLB(1212), 페이지-테이블 워커(1214), 인터럽트 리맵핑 버퍼(1234), 및 디바이스 테이블 엔트리 버퍼(1236)를 포함하는 IOMMU(1202)의 또 다른 실시예를 나타낸 블록도이다. IOMMU(1202)는 인터럽트 리맵핑으로 불리는 기능을 제공하는바, 이 기능은 가상 어드레스들(1216)과 물리적 어드레스들(1218) 간의 변환에서의 어드레스 변환과 유사한 기능이지만 인터럽트들에 대해 적용된다. 따라서, 본 명세서에서 설명되는 기술 및 실시예는 인터럽트 리맵핑을 위해 사용될 수 있다. 새로운 커맨드들 혹은 기존 커맨드들의 변형물들이, 어드레스 변환 대신에 인터럽트 리맵핑 정보를 운반하도록 구현될 수 있다. 마찬가지로, 새로운 혹은 변형된 커맨드들이 인터럽트 리맵핑 정보의 무효화를 위해 구현될 수 있다. 어드레스 변환 및 인터럽트 리맵핑은, IOMMU 디바이스 테이블 엔트리 버퍼(1236)에 의해 상관되는 그 대응하는 테이블들이 개별적이고 독립되어 있기 때문에, 독립적으로 구현될 수 있다. 따라서, IOMMU(1202)는 증진된 어드레스 변환 및 인터럽트 리맵핑을 수행할 수 있다.
결론
본 명세서에서 설명되는 실시예들은, IOMMU 구현물(제품)에 대한 시장진입시기를 개선할 수 있고, 새로운 IOMMU 하드웨어의 개발과 테스트와 지원을 위해 필요한 노력을 감소시킬 수 있으며, 그리고 소프트웨어로 하여금 적용가능한 하드웨어에 의해 행해진 로컬 최적 정책 결정에 따라 전체적으로 최적의 정책 결정이 개선되도록 하는 메커니즘을 제공할 수 있다. 본 발명의 실시예들은 또한, 사이드 TLB들을 이용하여, (소프트웨어에 의해 관리되는) "빠른 경로(quick path)" 변환 피처를 가능하게 한다. 입출력 메모리 관리 유닛의 기능은 더 효율적으로 구현될 수 있으며(실리콘 면적이 더 줄어듦), 입출력의 흐름은 이러한 시스템을 통해 더 빨라질 수 있다. 복수의 IOMMU들(제시된 장점들을 가진 IOMMU들과 갖지 않은 IOMMU들)은 호환성을 위해 시스템 내에 공존할 수 있다(시스템 설계에서 구형 칩 설계와 신형 칩 설계가 혼합될 수 있음). 일부 실시예들은 페이지-워커 하드웨어를 요구하지 않기 때문에, 결과적으로 IOMMU는 더 작아질 수 있고 더 작은 FPGA들에 적합할 수 있다. 이러한 실시예들은 IOMMU로 하여금 특정 페이지 테이블들의 포맷을 하드와이어(hard-wire)하도록 요구하지 않기 때문에, 이러한 실시예들은 다양한 페이지 테이블 포맷들(예를 들어, 비-x86 프로세서들 및 포맷들)과 함께 작동할 수 있다.
본 발명의 실시형태들을 수행하기 위해 로직(logic)에 의해 실행되는 명령들은, 다양한 프로그래밍 언어(예를 들어, C, C++, 어셈블리, 및/또는 하드웨어 기술 언어(Hardware Description Language, HDL))로 코딩될 수 있고, 아울러 로직 혹은 다른 디바이스에 의해 실행될 수 있는 오브젝트 코드(object code)로 컴파일링될 수 있다.
앞서 설명된 실시예들은, 베리로그(Verilog), RTL, 네트리스(netlists) 등과 같은 하드웨어 기술 언어로 기술될 수 있고, 그리고 이러한 기술(description)들은, 본 명세서에서 설명되는 바와 같은 본 발명의 실시형태들을 구현하는 하나 이상의 하드웨어 디바이스들을 발생시키기 위해, 마스크워크(maskworks)/포토마스크(photomasks)의 생성을 통해 제조 공정을 궁극적으로 구성하는데 사용될 수 있다.
본 발명의 실시형태들은 컴퓨터 판독가능 매체에 전체적으로 혹은 부분적으로 저장될 수 있다. 컴퓨터 판독가능 매체에 저장된 명령들은 프로세서로 하여금 본 발명의 실시예들을 전체적으로 혹은 부분적으로 수행하도록 할 수 있다.
본 명세서의 개요 및 요약 부분이 아닌 상세한 설명 부분이 특허청구범위의 해석을 위해 사용되도록 의도되었음을 이해해야 한다. 본 명세서의 개요 및 요약 부분은, 본 발명의 발명자(들)에 의해 고려되는 바와 같은 본 발명의 하나 이상의 예시적 실시예(그러나 모든 예시적 실시예는 아님)를 설명할 수 있는바, 따라서 어느 경우에 있어서도, 본 명세서에 첨부되는 특허청구범위 및 본 발명을 한정하도록 의도되지 않았다.

Claims (25)

  1. 메모리 관리 유닛(memory management unit) 내에 위치하는 제 1 캐시(cache)에 제 1 세트의 어드레스 변환 정보(address translation information)를 저장하는 단계와; 그리고
    상기 메모리 관리 유닛 내에 위치하는 제 2 캐시에 제 2 세트의 어드레스 변환 정보를 선택적으로 저장하는 단계를 포함하는 방법으로서,
    상기 제 2 세트의 어드레스 변환 정보는 상기 제 1 세트의 어드레스 변환 정보보다 더 빈번하게 액세스(access)되고, 상기 제 2 캐시는 상기 제 1 캐시 상에서 수행되는 퇴거 동작(eviction operation)에 영향을 받지 않는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두는, 프리페치 이미디어트 커맨드(prefetch immediate command)에 포함되는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두는, 가상 어드레스(virtual address)와 그리고 상기 가상 어드레스와 관련된 변환된 물리적 어드레스를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 메모리 관리 유닛은 입출력 메모리 관리 유닛(Input/Output Memory Management Unit, IOMMU)인 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 제 1 캐시는 사이드(side) 변환 참조 버퍼(Translation Look-aside Buffer, TLB)이고, 상기 제 2 캐시는 입출력 변환 참조 버퍼(Input/Outout Translation Look-aside Buffer, IOTLB)인 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 제 1 캐시 혹은 상기 제 2 캐시에 저장되지 않은 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련된 어드레스 변환 정보에 대한 요청에 응답하여, 이벤트 로그 엔트리(event log entry)를 생성하는 단계와; 그리고
    상기 이벤트 로그 엔트리에 응답하여 상기 요청된 어드레스 변환 정보를 상기 제 1 캐시 혹은 상기 제 2 캐시에 삽입하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    상기 제 1 캐시 혹은 상기 제 2 캐시에 저장되지 않은 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련된 어드레스 변환 정보에 대한 요청에 응답하여, 상기 메모리 관리 유닛과 관련된 페이지 테이블 워커(page-table walker)를 사용하여, 페이지 테이블 워크(page-table walk)를 수행하는 단계와;
    상기 페이지 테이블 워커를 사용하여, 상기 요청된 어드레스 변환 정보를, 상기 메모리 관리 유닛과 통신하는 컴퓨터 시스템의 시스템 메모리 내의 변환 테이블(translation table)로부터 획득하는 단계와; 그리고
    상기 메모리 관리 유닛과 관련된 캐시 교체 메커니즘(cache replacement mechanism)을 사용하여 상기 요청된 어드레스 변환 정보를 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두에 삽입하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두를 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두와 관련된 하나 이상의 특정 슬롯(slot)들에 삽입하여 상기 메모리 관리 유닛과 관련된 캐시 교체 메커니즘을 우회(bypassing)하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제1항에 있어서,
    상기 메모리 관리 유닛과 관련된 무효화 메커니즘(invalidation mechanism)을 사용하여 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두와 관련된 하나 이상의 위치들을 무효화하는 단계를 더 포함하며,
    상기 무효화하는 단계는, 하나 이상의 어드레스 엔트리(address entry)들, 또는 하나 이상의 슬롯(slot)들, 또는 상기 하나 이상의 어드레스 엔트리들과 상기 하나 이상의 슬롯들의 임의의 조합 중 적어도 하나를 특정하는 무효화 커맨드(invalidation command)에 응답하여 수행되는 것을 특징으로 하는 방법.
  10. 제1항에 있어서,
    임의의 이미 저장된 어드레스 변환 정보가 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련되어 있는지 여부에 상관없이, 무효화 표시에 응답하여 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제1항에 있어서,
    상기 메모리 관리 유닛을 포함하는 컴퓨터 시스템의 리소스 상태(resource status)를 결정하는 단계와; 그리고
    적어도 상기 리소스 상태에 근거하여, 인터럽트 리맵핑 정보(interrupt remapping information)를 상기 메모리 관리 유닛과 관련된 인터럽트 리맵핑 버퍼(interrupt remapping buffer)에 선택적으로 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제1항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보를 저장하는 단계는, 상기 제 1 세트의 어드레스 정보에 대응하는 제 1 세트의 변환 엔트리들을 상기 제 2 세트의 어드레스 정보에 대응하는 제 2 세트의 변환 엔트리들보다 더 빈번하게 업데이트(updating)하는 것을 포함하는 것을 특징으로 하는 방법.
  13. 중앙 처리 장치와;
    상기 중앙 처리 장치와 통신하는 시스템 메모리 유닛과; 그리고
    상기 시스템 메모리 유닛과 통신하는 메모리 관리 유닛을 포함하는 시스템으로서,
    상기 메모리 관리 유닛은,
    상기 메모리 관리 유닛 내에 위치하는 제 1 캐시에 제 1 세트의 어드레스 변환 정보를 저장하고; 그리고
    상기 메모리 관리 유닛 내에 위치하는 제 2 캐시에 제 2 세트의 어드레스 변환 정보를 선택적으로 저장하도록 되어 있고,
    상기 제 2 세트의 어드레스 변환 정보는 상기 제 1 세트의 어드레스 변환 정보보다 더 빈번하게 액세스되고, 상기 제 2 캐시는 상기 제 1 캐시 상에서 수행되는 퇴거 동작에 영향을 받지 않는 것을 특징으로 하는 시스템.
  14. 제13항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두는, 프리페치 이미디어트 커맨드에 포함되는 것을 특징으로 하는 시스템.
  15. 제13항에 있어서,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두는, 가상 어드레스와 그리고 상기 가상 어드레스와 관련된 변환된 물리적 어드레스를 포함하는 것을 특징으로 하는 시스템.
  16. 제13항에 있어서,
    상기 메모리 관리 유닛은 입출력 메모리 관리 유닛(IOMMU)인 것을 특징으로 하는 시스템.
  17. 제13항에 있어서,
    상기 제 1 캐시는 사이드 변환 참조 버퍼(TLB)이고, 상기 제 2 캐시는 입출력 변환 참조 버퍼(IOTLB)인 것을 특징으로 하는 시스템.
  18. 제13항에 있어서,
    상기 메모리 관리 유닛은 또한,
    상기 제 1 캐시 혹은 상기 제 2 캐시 각각에 저장되지 않은 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련된 어드레스 변환 정보에 대한 요청에 응답하여, 이벤트 로그 엔트리를 생성하고; 그리고
    상기 이벤트 로그 엔트리에 응답하여 상기 요청된 어드레스 변환 정보를 상기 제 1 캐시 혹은 상기 제 2 캐시에 삽입하도록 되어 있는 것을 특징으로 하는 시스템.
  19. 제13항에 있어서,
    상기 메모리 관리 유닛은,
    상기 제 1 캐시 혹은 상기 제 2 캐시에 저장되지 않은 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련된 어드레스 변환 정보에 대한 요청에 응답하여, 상기 메모리 관리 유닛과 관련된 페이지 테이블 워커를 사용하여, 페이지 테이블 워크를 수행하고;
    상기 페이지 테이블 워커를 사용하여, 상기 요청된 어드레스 변환 정보를, 상기 시스템 메모리 유닛 내의 변환 테이블로부터 획득하고; 그리고
    상기 메모리 관리 유닛과 관련된 캐시 교체 메커니즘을 사용하여 상기 요청된 어드레스 변환 정보를 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두에 삽입하도록 되어 있는 것을 특징으로 하는 시스템.
  20. 제13항에 있어서,
    상기 메모리 관리 유닛은,
    상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두를 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두와 관련된 하나 이상의 특정 슬롯들에 삽입하여 상기 메모리 관리 유닛과 관련된 캐시 교체 메커니즘을 우회하도록 되어 있는 것을 특징으로 하는 시스템.
  21. 제13항에 있어서,
    상기 메모리 관리 유닛은,
    상기 메모리 관리 유닛과 관련된 무효화 메커니즘을 사용하여 상기 제 1 캐시, 또는 상기 제 2 캐시, 또는 상기 제 1 캐시와 상기 제 2 캐시 모두와 관련된 하나 이상의 위치들을 무효화하도록 되어 있고,
    상기 무효화 메커니즘은, 하나 이상의 어드레스 엔트리들, 또는 하나 이상의 슬롯들, 또는 상기 하나 이상의 어드레스 엔트리들과 상기 하나 이상의 슬롯들의 임의의 조합 중 적어도 하나를 특정하는 무효화 커맨드에 응답하여 수행되는 것을 특징으로 하는 시스템.
  22. 제13항에 있어서,
    상기 메모리 관리 유닛은,
    임의의 이미 저장된 어드레스 변환 정보가 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두와 관련되어 있는지 여부에 상관없이, 무효화 표시에 응답하여 상기 제 1 세트의 어드레스 변환 정보, 또는 상기 제 2 세트의 어드레스 변환 정보, 또는 상기 제 1 세트의 어드레스 변환 정보와 상기 제 2 세트의 어드레스 변환 정보 모두를 저장하도록 되어 있는 것을 특징으로 하는 시스템.
  23. 제13항에 있어서,
    상기 메모리 관리 유닛과 관련된 인터럽트 리맵핑 버퍼를 더 포함하고,
    상기 인터럽트 리맵핑 버퍼는, 적어도 리소스 상태에 근거하여, 인터럽트 리맵핑 정보를 선택적으로 저장하도록 되어 있는 것을 특징으로 하는 시스템.
  24. 유형의 컴퓨터 판독가능 매체(tangible computer-readable medium)로서,
    상기 컴퓨터 판독가능 매체에는 컴퓨터 실행가능 명령들이 저장되고, 상기 컴퓨터 실행가능 명령들은, 컴퓨팅 디바이스(computing device)에 의해 실행되는 경우, 상기 컴퓨팅 디바이스로 하여금,
    메모리 관리 유닛 내에 위치하는 제 1 캐시에 제 1 세트의 어드레스 변환 정보를 저장하는 단계와; 그리고
    상기 메모리 관리 유닛 내에 위치하는 제 2 캐시에 제 2 세트의 어드레스 변환 정보를 선택적으로 저장하는 단계를 포함하는 방법을 수행하도록 하고,
    상기 제 2 세트의 어드레스 변환 정보는 상기 제 1 세트의 어드레스 변환 정보보다 더 빈번하게 액세스되고, 상기 제 2 캐시는 상기 제 1 캐시 상에서 수행되는 퇴거 동작에 영향을 받지 않는 것을 특징으로 하는 컴퓨터 판독가능 매체.
  25. 삭제
KR1020127024276A 2010-02-17 2011-02-16 Iommu에 의해 아키텍트되는 tlb 지원 KR101623514B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/707,341 US8244978B2 (en) 2010-02-17 2010-02-17 IOMMU architected TLB support
US12/707,341 2010-02-17
PCT/US2011/025075 WO2011103184A2 (en) 2010-02-17 2011-02-16 Iommu architected tlb support

Publications (2)

Publication Number Publication Date
KR20130009781A KR20130009781A (ko) 2013-01-23
KR101623514B1 true KR101623514B1 (ko) 2016-05-23

Family

ID=44041567

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127024276A KR101623514B1 (ko) 2010-02-17 2011-02-16 Iommu에 의해 아키텍트되는 tlb 지원

Country Status (6)

Country Link
US (1) US8244978B2 (ko)
EP (2) EP2537098B1 (ko)
JP (1) JP5650766B2 (ko)
KR (1) KR101623514B1 (ko)
CN (1) CN103026348B (ko)
WO (1) WO2011103184A2 (ko)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9152571B2 (en) * 2012-07-31 2015-10-06 Ati Technologies Ulc All invalidate approach for memory management units
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
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
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9064030B2 (en) 2012-11-29 2015-06-23 International Business Machines Corporation Tree traversal in a memory device
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
CN105095108A (zh) * 2014-05-06 2015-11-25 展讯通信(上海)有限公司 输入输出存储器管理单元及控制方法、装置
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9323701B2 (en) 2014-07-29 2016-04-26 Netapp, Inc. Technique for synchronizing IOMMU memory de-registration and incoming I/O data
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US9542332B2 (en) * 2014-11-13 2017-01-10 Via Alliance Semiconductor Co., Ltd. System and method for performing hardware prefetch tablewalks having lowest tablewalk priority
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US11086521B2 (en) 2015-01-20 2021-08-10 Ultrata, Llc Object memory data flow instruction execution
WO2016118564A1 (en) * 2015-01-20 2016-07-28 Ultrata Llc Universal single level object memory address space
CN112214424B (zh) 2015-01-20 2024-04-05 乌尔特拉塔有限责任公司 对象存储器结构、处理节点、存储器对象存储和管理方法
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
KR101994952B1 (ko) * 2015-03-27 2019-07-01 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 방법, 메모리 관리 유닛, 및 메모리 제어 장치
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US10459847B1 (en) * 2015-07-01 2019-10-29 Google Llc Non-volatile memory device application programming interface
US20170024145A1 (en) * 2015-07-23 2017-01-26 Qualcomm Incorporated Address translation and data pre-fetch in a cache memory system
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10248337B2 (en) 2015-12-08 2019-04-02 Ultrata, Llc Object memory interfaces across shared links
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
CA3006773A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
WO2017100292A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Object memory interfaces across shared links
US9959214B1 (en) 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
US9727484B1 (en) * 2016-01-29 2017-08-08 International Business Machines Corporation Dynamic cache memory management with translation lookaside buffer protection
US10671419B2 (en) * 2016-02-29 2020-06-02 Red Hat Israel, Ltd. Multiple input-output memory management units with fine grained device scopes for virtual machines
US10386904B2 (en) 2016-03-31 2019-08-20 Qualcomm Incorporated Hardware managed power collapse and clock wake-up for memory management units and distributed virtual memory networks
US10977192B1 (en) * 2016-04-08 2021-04-13 Amazon Technologies, Inc. Real-time memory-page state tracking and its applications
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10678702B2 (en) * 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US10599569B2 (en) 2016-06-23 2020-03-24 International Business Machines Corporation Maintaining consistency between address translations in a data processing system
US10095620B2 (en) * 2016-06-29 2018-10-09 International Business Machines Corporation Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US11157285B2 (en) 2020-02-06 2021-10-26 International Business Machines Corporation Dynamic modification of instructions that do not modify the architectural state of a processor
KR20220078132A (ko) 2020-12-03 2022-06-10 삼성전자주식회사 어드레스 변환을 수행하는 시스템 온 칩 및 이의 동작 방법
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134633A (en) 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US20080209130A1 (en) 2005-08-12 2008-08-28 Kegel Andrew G Translation Data Prefetch in an IOMMU
US20090119663A1 (en) 2007-11-01 2009-05-07 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06124237A (ja) * 1992-10-13 1994-05-06 Fuji Xerox Co Ltd アドレス変換バッファ装置
US6438593B1 (en) * 1998-05-21 2002-08-20 Lucent Technologies Inc. Method for information retrieval in broadcast disk systems
EP1139222A1 (en) 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6553477B1 (en) * 2000-11-06 2003-04-22 Fujitsu Limited Microprocessor and address translation method for microprocessor
GB2378277B (en) * 2001-07-31 2003-06-25 Sun Microsystems Inc Multiple address translations
US7089396B2 (en) * 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
US7707359B2 (en) * 2005-12-09 2010-04-27 Oracle America, Inc. Method and apparatus for selectively prefetching based on resource availability
US7673116B2 (en) * 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
CN101246452B (zh) * 2007-02-12 2010-12-15 国际商业机器公司 执行快速的mmu模拟的方法和装置、以及全系统模拟器
US8055827B2 (en) * 2009-01-26 2011-11-08 Advanced Micro Devices, Inc. Guest interrupt controllers for each processor to aid interrupt virtualization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134633A (en) 1997-10-31 2000-10-17 U.S. Philips Corporation Prefetch management in cache memory
US20080209130A1 (en) 2005-08-12 2008-08-28 Kegel Andrew G Translation Data Prefetch in an IOMMU
US20090119663A1 (en) 2007-11-01 2009-05-07 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests

Also Published As

Publication number Publication date
EP3486788A1 (en) 2019-05-22
EP2537098A2 (en) 2012-12-26
EP2537098B1 (en) 2018-11-21
JP2013519965A (ja) 2013-05-30
KR20130009781A (ko) 2013-01-23
CN103026348B (zh) 2016-03-16
WO2011103184A2 (en) 2011-08-25
WO2011103184A3 (en) 2012-10-11
US20110202724A1 (en) 2011-08-18
JP5650766B2 (ja) 2015-01-07
US8244978B2 (en) 2012-08-14
CN103026348A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
KR101623514B1 (ko) Iommu에 의해 아키텍트되는 tlb 지원
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US8433853B2 (en) Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US6681311B2 (en) Translation lookaside buffer that caches memory type information
US6412057B1 (en) Microprocessor with virtual-to-physical address translation using flags
US7711903B2 (en) Preloading translation buffers
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
EP3265917B1 (en) Cache maintenance instruction
KR100240914B1 (ko) 데이터 프리페치 방법 및 프로세싱 시스템
US7996650B2 (en) Microprocessor that performs speculative tablewalks
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
US11853225B2 (en) Software-hardware memory management modes
KR20030097871A (ko) 캐시에서의 라인들을 추론적으로 무효화하는 방법 및 시스템
US7003630B1 (en) Mechanism for proxy management of multiprocessor storage hierarchies
EP2431866A1 (en) Data processor with memory for processing decorated instructions with cache bypass
EP1262876B1 (en) Multiprocessing system with shared translation lookaside buffer
CN113641403A (zh) 微处理器和在微处理器中实现的方法
JP2022548219A (ja) 変換ルックアサイドバッファ無効化

Legal Events

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

Payment date: 20190417

Year of fee payment: 4