KR20140028137A - 공유된 가상 메모리를 지원하는 이종 컴퓨팅 시스템에서의 tlb 슛 다운을 위한 방법 및 장치 - Google Patents
공유된 가상 메모리를 지원하는 이종 컴퓨팅 시스템에서의 tlb 슛 다운을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20140028137A KR20140028137A KR1020147002511A KR20147002511A KR20140028137A KR 20140028137 A KR20140028137 A KR 20140028137A KR 1020147002511 A KR1020147002511 A KR 1020147002511A KR 20147002511 A KR20147002511 A KR 20147002511A KR 20140028137 A KR20140028137 A KR 20140028137A
- Authority
- KR
- South Korea
- Prior art keywords
- pasid
- status
- tlb
- entry
- state
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/303—In peripheral interface, e.g. I/O adapter or channel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
멀티 코어 시스템에서 가상 메모리를 공유하는 이종 디바이스들에 대해 효과적인 TLB(translation look-aside buffer)를 위한 방법들 및 장치가 개시된다. 효과적인 TLB 슛 다운들을 위한 장치의 실시예들은 가상 어드레스 변환 엔트리들을 저장하기 위한 TLB, 및 가상 어드레스 변환 엔트리들에 대응하는 PASID(process address space identifier) 상태 엔트리들을 유지하기 위한, TLB와 결합된, 메모리 관리 유닛을 포함할 수 있다. PASID 상태 엔트리들은 활성 참조 상태 및 레이지 무효화 상태를 포함할 수 있다. 메모리 관리 유닛은 멀티 코어 시스템 내의 디바이스들로부터 PASID 상태 업데이트 요청들을 수신하는 것에 응답하여 PASID 상태 엔트리의 원자 수정을 수행할 수 있고, PASID 상태 엔트리의 레이지 무효화 상태를 판독할 수 있다. 메모리 관리 유닛은 각각의 레이지 무효화 상태에 응답하여 활성화에 앞서 TLB 엔트리들을 동기화하도록 PASID 상태 업데이트 응답들을 디바이스들에 보낼 수 있다.
Description
본 발명은 일반적으로 컴퓨팅 및/또는 통신 분야들에 관한 것이다. 특히, 본 발명은 멀티 코어 시스템에서 가상 메모리를 공유하는 이종 디바이스들에 대해 효과적인 TLB(translation look-aside buffer) 슛 다운(shoot-down)들에 관한 것이다.
현대의 프로세서들은 종종 명령어들 및/또는 데이터의 카피들을 더 짧은 액세스 지연들을 갖는 더 작고 더 빠른 메모리들에 제공함으로써 외부 메모리에 액세스하는 성능을 개선하기 위해 캐시들을 포함한다. 또한 그러한 캐시들은, 예를 들어, 페이징된(paged) 가상 메모리 시스템의 시스템 페이지 테이블들로부터 가상-물리 어드레스 변환들을 캐시하도록 TLB(translation look-aside buffer)와 같은 디바이스를 사용하여 빠른 가상-물리 어드레스 변환들에 대한 지원을 제공할 수 있다. TLB가 가상 어드레스를 TLB에 저장된 변환들 중 하나에 매칭하는 경우, 그러한 이벤트를 TLB 히트(hit)로서 지칭할 수 있고 검색된 물리 어드레스는 캐시 내의 또는 메인 메모리 내의 메모리에 더 빠르게 액세스하는 데 사용될 수 있다. TLB가 가상 어드레스를 TLB에 저장된 변환들 중 하나에 매칭하는 데 실패하는 경우, 그러한 이벤트를 TLB 미스(miss) 또는 페이지 미스로서 지칭할 수 있고, 변환은 메모리 내의 대응하는 페이지 테이블들을 검색함으로써 진행한다.
전형적인 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템은 다양한 동종 또는 이종 프로세싱 디바이스들 - 예를 들어, 하나 이상의 이종 그래픽 프로세서 또는 비디오 프로세서 등을 함께 갖는 몇 개의 동종 프로세서 코어를 가질 수 있다. 이러한 동종 또는 이종 프로세싱 디바이스들은 가상 메모리 어드레스 공간들을 공유할 수 있다. 전형적으로, 동종 프로세서 코어들은 페이징된 가상 메모리 시스템에서 시스템 페이지 테이블들로부터 가상-물리 어드레스 변환들을 캐시하기 위한, 전술한 바와 같은, TLB들 및 캐시 계층들을 가질 수 있다. 현대의 프로세서들에서 동종 프로세서 코어들은 또한 시스템 페이지 테이블들을 통해 페이지 워크(page walk)들을 더 빠르게 수행하기 위해 하드웨어에 페이지 미스 핸들러(PMH)를 포함할 수 있다. 이러한 동종 프로세서 코어들 중 하나가 물리 메모리 내의 어느 것에도 맵핑(mapping)되지 않은 가상 메모리 내의 페이지에 액세스하도록 시도하는 경우, 메모리 액세스는 페이지 오류(page fault)를 야기할 것이고, 운영 체제는 문제를 "해결(fix)"하도록 호출될(invoked) 것이다.
그래픽 프로세서들과 같은, 이종 프로세싱 디바이스들은 또한 가상-물리 어드레스 변환들을 수행하기 위해 TLB들과 같은 메커니즘들을 가질 수 있지만, 전형적으로 동종 프로세서 코어들 상에서 실행되고, 이종 프로세싱 디바이스들과의 페이징된 가상 메모리 시스템의 일부 제한된 공유를 위해 페이지 테이블들 등을 설정하도록 이종 프로세싱 디바이스들에 대한 드라이버들과 통신할 수 있는 일부 소프트웨어들이 있다. 그러나 동종 프로세서 코어들에서와는 다르게, 이러한 메커니즘들은, 예를 들어, 페이지 오류들을 핸들링하는 능력이 부족한, 제한된 능력들을 가질 수 있다. 따라서 이러한 이종 프로세싱 디바이스들과 공유되는 페이지들은, 운영체제가, 요청이 지시하는 바와 같이 그것들을 디스크로부터 및 디스크에 페이징하는 것을 방지하도록, 메모리에 락 다운(lock down)될 필요가 있을 수 있다. 따라서 지원될 수 있는 애플리케이션들의 수는 제한될 수 있거나, 또는 요구되는 물리 메모리의 양은 그렇지 않았을 경우보다 클 수 있다. 게다가 페이징된 가상 메모리를 이종 프로세싱 디바이스와 공유하기 위해 페이지 테이블들 등을 설정하도록 동종 프로세서 상에서 실행되는 소프트웨어는, 이종 프로세싱 디바이스들을 사용하는 것의 유효성을 감소시킬 수 있는, 성능 오버헤드(overhead)를 초래한다.
동종 프로세서 코어들 상에서 실행중인 소프트웨어(예를 들어, 운영 체제) 가 페이지 테이블들을 변경하는 경우, 시스템 전체에 걸친 다양한 TLB들에 캐시된 대응하는 변환들은 무효화 되어야 한다. 이것은 TLB 슛 다운으로서 공지되어 있다. 하나의 단순한 접근 방법은 시스템 내의 모든 디바이스들에 무효화 메시지를 브로드캐스트(broadcast)하는 것이지만, 이것은 원하지 않은 통신 혼잡을 야기할 수 있다. 또한, 이종 프로세싱 디바이스들에 대해 설정된 페이지 테이블들은 동종 프로세서 코어들에 의해 사용되는 페이지 테이블들과는 동일하지 않을 수 있고, 이종 프로세싱 디바이스들에 사용되는 메커니즘들은 그것들의 TLB 엔트리들을 무효화하는, 그리고 자신에 대한 새로운 페이지 테이블 정보를 복구하는 제한된 능력들을 가질 수 있다.
원하지 않은 혼잡을 피하기 위해, 운영 체제들은 레이지 무효화(lazy invalidation) 스킴의 형태를 사용해 왔다. 운영 체제는 동종 프로세서 코어들 상에서 실행되고, 다양한 동종 프로세서 코어들 상에서 활성인 프로세스들, 애플리케이션들 또는 스레드(thread)들 중 어느 것에도 액세스할 수 있기 때문에, 즉, 그 TLB 엔트리를 사용했던 프로세스를 활성적으로 실행하고 있었던 코어들의 TLB들에서만, 및/또는 그 TLB 엔트리를 사용할 프로세스를 활성화하기를 원할 수 있는 코어들의 TLB들에서, 그것은 필요에 따라 "슛 다운" 또는 TLB 엔트리들의 무효화를 트리거(trigger)할 수 있다. 따라서 TLB 슛 다운들에 대해 불필요한 활동 및 오버헤드를 피할 수 있다. 그러나 운영 체제가 이종 프로세싱 디바이스들 상에서 실행되지 않기 때문에, 이종 프로세싱 디바이스들이 새로운 페이지 테이블 정보를 복구할 수 있고/있거나 페이지 오류들을 생성할 수 있다고 가정하더라도, 그것은 어느 프로세스들이 활성이고 어느 TLB 엔트리들이 무효화될 필요가 있을 수 있는지를 추적할 수 없다. 따라서 브로드캐스트는 프로세스 가상 어드레스 공간을 잠재적으로 공유하는 모든 이종 프로세싱 디바이스들에 보내질 필요가 있을 것이다.
캐시들에 액세스하거나 또는 가상 메모리를 사용하는 프로세싱 코어들 및 그 외의 이종 프로세싱 디바이스들의 수가 증가함에 따라, 가상 메모리 공간이 더 많은 이러한 디바이스들에 의해 공유되는 경우, 부가적인 메모리 혼잡, 및 충돌들과 같은 문제들을 예상하는 타당한 이유가 있을 수 있다. 현재까지, 그러한 합리적으로 예상되는 문제들에 대한 잠재적인 해결책들은 충분히 연구되지 않았다.
본 발명은 예로서 예시되고 첨부된 도면들의 그림들에 한정되지 않는다.
도 1은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위한 종래 기술 기법을 예시하는 도면.
도 2는 효과적인 TLB 슛 다운들을 지원하는, 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위한 장치의 일 실시예를 예시하는 도면.
도 3은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스의 일 실시예에 대한 흐름도를 예시하는 도면.
도 4는 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스의 대안의 실시예에 대한 흐름도를 예시하는 도면.
도 5는 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스 및 장치를 이용하는 프로세서의 일 실시예를 예시하는 도면.
도 6은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스 및 장치를 이용하는 시스템의 일 실시예를 예시하는 도면.
도 1은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위한 종래 기술 기법을 예시하는 도면.
도 2는 효과적인 TLB 슛 다운들을 지원하는, 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위한 장치의 일 실시예를 예시하는 도면.
도 3은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스의 일 실시예에 대한 흐름도를 예시하는 도면.
도 4는 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스의 대안의 실시예에 대한 흐름도를 예시하는 도면.
도 5는 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스 및 장치를 이용하는 프로세서의 일 실시예를 예시하는 도면.
도 6은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스 및 장치를 이용하는 시스템의 일 실시예를 예시하는 도면.
멀티 코어 시스템에서 가상 메모리를 공유하는 이종 디바이스들에 대해 효과적인 TLB(translation look-aside buffer) 슛 다운들을 위한 방법들 및 장치가 개시된다. 효과적인 TLB 슛 다운들을 위한 장치의 실시예들은 가상 어드레드 변환 엔트리들을 저장하기 위한 TLB, 및 가상 어드레스 변환 엔트리들에 대응하는 PASID(process address space identifier) 상태 엔트리들을 유지하도록, TLB와 결합된, 메모리 관리 유닛을 포함할 수 있다. PASID 상태 엔트리들은 활성 참조(active reference) 상태 및 레이지 무효화(lazy-invalidation) 상태를 포함할 수 있다. 메모리 관리 유닛은 멀티 코어 시스템 내의 디바이스들로부터 PASID 상태 업데이트 요청들을 수신하는 것에 응답하여 PASID 상태 엔트리들의 원자 수정(atomic modification)을 수행할 수 있고 PASID 상태 엔트리들의 레이지 무효화 상태를 판독할 수 있다. 메모리 관리 유닛은 각각의 레이지 무효화 상태에 응답하는 활성화에 앞서 TLB 엔트리들을 동기화하도록 PASID 상태 업데이트 응답들을 디바이스들에 보낼 수 있다.
이러한, 그리고 그 외의 실시예들은 이하의 교시들에 따라 실현될 수 있고 다양한 수정들 및 변경들이 본 발명의 더 넓은 기술적 사상 및 범위로부터 벗어나지 않고 이하의 교시들에서 행해질 수 있다는 것은 명백할 것이다. 이에 따라, 본 명세서 및 도면들은 제한하는 의미보다는 오히려 예시적인 것으로서 간주되고 본 발명은 특허청구범위 및 그들의 등가물들의 관점에서만 평가된다.
도 1은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하는 것에 대한 종래 기술 기법을 예시한다. 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템은 다양한 동종 또는 이종 프로세싱 디바이스들을 가질 수 있다. 예를 들어, 도 1의 시스템은 몇 개의 동종 프로세서 코어들을 갖고, 그것들 중 두 개는, GFX(106) 또는 비디오 프로세서들, 예를 들어 말하면, 디바이스(109)와 같은, 하나 이상의 이종 그래픽 프로세서와 함께, 코어(102) 및 코어(104)로서 도시된다. 코어(102) 및 코어(104)는, 디코드(131) 및 디코드(151), 스레드 당 큐들(per-thread queues)(133 및 153), 부동 소수점/단일 명령어 다중 데이터 레지스터들 FP/SIMD REGS(135a) 및 FP/SIMD REGS(155a), 일반 레지스터들 GEN REGS(135b) 및 GEN REGS(155b), 부동 소수점/단일 명령어 다중 데이터 실행 유닛들 FP/SIMD EXU(137a) 및 FP/SIMD EXU(157a), 및 정수 실행 유닛들 INT EXU(137b) 및 INT EXU(157b) 각각을 통한 실행을 위한 다중 프로세스 스레드들을 프로세싱하는 멀티 스레드형 코어들일 수 있다. 코어(102) 및 코어(104)는 또한 각각 버스/인터커넥트(bus/interconnect)(115)를 통해 물리 메모리(105)와, 버스/인터커넥트 유닛들 B/I-U(120) 및 B/I-U(140)를 통해 메모리 유닛들 MEM-U(125) 및 MEM-U(145)와 결합될 수 있다. 코어(102) 및 코어(104)는 또한 물리 메모리(105) 및 버스/인터커넥트(115) 및 옵션으로 라스트 레벨 캐시 LLC(116)를 통해 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)와 결합될 수 있다.
이러한 동종 또는 이종 프로세싱 디바이스들은 물리 메모리(105) 및 옵션으로 라스트 레벨 캐시 LLC(116)를 통해 가상 메모리 어드레스 공간들을 공유할 수 있다. 전형적으로, 페이징된 가상 메모리 시스템에서, 동종 프로세서 코어들은, 각각, 캐시 계층들, 예를 들어, I-캐시(123), D-캐시(124), L2(126) 및 I-캐시(143), D-캐시(144), L2(146); 및 시스템 OS(154), 페이지 테이블들 PTBL(152)로부터 가상-물리 어드레스 변환들을 캐시하기 위해, 각각, TLB들, 예를 들어, I-TLB(121), D-TLB(122) 및 I-TLB(141), D-TLB(142)를 가질 수 있다.
동종 프로세서 코어들(102 및 104)은 또한 시스템 페이지 테이블들 PTBL(152)을 통해 페이지 워크들을 수행하기 위해 하드웨어에 페이지 미스 핸들러들 PMH(130) 및 PMH(150)를 포함할 수 있다. 이러한 동종 프로세서 코어들(102 및 104) 중 하나가 물리 메모리(105) 내의 어느 것에도 맵핑되지 않은 가상 메모리 내의 페이지에 액세스하도록 시도하는 경우, 메모리 액세스는 페이지 오류를 야기할 것이고, 운영 체제 OS(154)는 문제를 "해결"하도록 호출될 것이다.
그래픽 프로세서 GFX(106) 및 디바이스(109)와 같은, 이종 프로세싱 디바이스들은 또한 가상-물리 어드레스 변환들을 수행하기 위해 TLB들과 같은 메커니즘들을 가질 수 있지만, 전형적으로 동종 프로세서 코어들(102 및 104) 상에서 실행되고, 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)와의 페이징된 가상 메모리 시스템의 일부의 제한된 공유를 위해 페이지 테이블들 등을 설정하도록 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)에 대한 드라이버들과 통신할 수 있는 일부 소프트웨어들이 있다. 그러나 동종 프로세서 코어들(102 및 104)에서와는 다르게, 이러한 메커니즘들은, 예를 들어, 페이지 오류들을 핸들링하는 능력이 부족한, 제한된 능력들을 가질 수 있다. 따라서 이러한 이종 프로세싱 디바이스들과 공유된 페이지들은, 운영체제 OS(154)가, 요청이 지시하는 바와 같이 그것들을 디스크로부터 및 디스크에 페이징하는 것을 방지하도록, 물리 메모리(105)에 락 다운될 필요가 있다. 따라서 지원될 수 있는 애플리케이션들의 수는 제한될 수 있거나, 또는 요구되는 물리 메모리의 양은 그렇지 않았을 경우보다 클 수 있다. 게다가 페이징된 가상 메모리를 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)와 공유하기 위해 페이지 테이블들 등을 설정하도록 동종 프로세서(102 또는 104) 상에서 실행되는 소프트웨어는, 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)를 사용하는 유효성들을 감소시킬 수 있는, 성능 오버헤드를 초래한다.
동종 프로세서 코어들(102 및 104) 상에서 실행되는 소프트웨어(예를 들어, 운영 체제 OS(154)가 페이지 테이블들 PTBL(152)을 변경시키는 경우, 다양한 TLB들 각각, 즉, I-TLB(121), D-TLB(122) 및 I-TLB(141), D-TLB(142), 및 GFX(106) 및/또는 디바이스(109) 내의 임의의 TLB들에 캐시되는 대응하는 변환들은 무효화되어야 한다. 무효화 메시지를 시스템 내의 모든 디바이스들에 브로드캐스트하는 것은 원하지 않은 통신 혼잡을 야기할 수 있다. 원하지 않은 혼잡을 피하기 위해, 운영 체제 OS(152)는 레이지 무효화 스킴을 사용할 수 있다. 운영 체제 OS(152)는 동종 프로세서 코어들(102 및 104) 상에서 실행되고, 다양한 동종 프로세서 코어들 상에서 활성인 프로세스들, 애플리케이션들 또는 스레드들 중 어느 것에도 액세스할 수 있기 때문에, 그것은 필요에 따라, 즉, 그 TLB 엔트리를 사용했던 프로세스를 활성적으로 실행하고 있었던, 코어들의 TLB들 I-TLB(121), D-TLB(122) 및 I-TLB(141), D-TLB(142) 각각에서, 및/또는 그 TLB 엔트리를 사용할 프로세스를 활성화하기를 원할 수 있는 코어들의 TLB들에서만, "슛 다운" 또는 TLB 엔트리들의 무효화를 트리거할 수 있다. 따라서 TLB 슛 다운들에 대해 불필요한 활동 및 오버헤드를 피할 수 있지만, 동종 프로세서 코어들(102 및 104)에만 대한 것이다. 운영 체제 OS(152)가 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109) 상에서 실행되지 않기 때문에, 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)가 새로운 페이지 테이블 정보를 복구할 수 있고 페이지 오류들을 생성할 수 있다고 가정하더라도, 그것은 어느 프로세스들이 활성이고 어느 TLB 엔트리들이 무효화될 필요가 있을 수 있는지를 추적할 수 없다. 따라서 브로드캐스트는 프로세스 가상 어드레스 공간을 잠재적으로 공유하는 모든 이종 프로세싱 디바이스들 GFX(106) 및 디바이스(109)에 보내질 필요가 있을 것이다.
캐시들에 액세스하거나 또는 가상 메모리를 사용하는 프로세싱 코어들 및 그 외의 이종 프로세싱 디바이스들의 수가 증가함에 따라, 가상 메모리 공간이 더 많은 이러한 디바이스들에 의해 공유되는 경우, 부가적인 메모리 혼잡, 및 충돌들 또는 경합 조건들과 같은, 문제들을 예상하는 타당한 이유가 있을 수 있다는 것이 이해될 것이다.
도 2는 효과적인 TLB 슛 다운들을 지원하는, 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위한 장치(201)의 일 실시예를 예시한다. 장치(201)는 가상 어드레스 변환 엔트리들을 저장하기 위한 IOTLB(213)를 포함한다. 메모리 관리 유닛 IOMMU(212)는, IOTLB(213)의 가상 어드레스 변환 엔트리들의 적어도 일부에 대응하는 PASID 상태 엔트리들을 유지하도록, IOTLB(213) 및 PASID 상태 저장소(214)와 결합된다. PASID 상태 엔트리들의 실시예들은, 이하에 보다 구체적으로 설명될, 활성 참조 상태 및 레이지 무효화 상태를 각각 포함할 수 있다. 예시를 위해 IOTLB(213) 및 PASID 상태 저장소(214)는 IOMMU(212)에 포함된 것으로서 도시되지만, 하나 또는 둘 모두가 별개의 하드웨어 또는 소프트웨어 데이터 구조들로서 구현될 수 있고 IOMMU(212)의 외부, 예를 들어, 메모리(205)에 상주할 수 있다는 것이 이해될 것이다.
장치(201)는, IOMMU(212)에 포함된 것으로서 도시되지만 별개의 하드웨어 또는 소프트웨어로서 구현될 수 있고 IOMMU(212)의 외부에 상주할 수 있는, 라스트 레벨 캐시 LLC(116) 및 스케줄러(218)를 또한 옵션으로 포함한다.
장치(201)는, 이종 디바이스들을 갖는 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템과 통신하기 위해, 그리고 이종 디바이스들을 갖는 멀티 코어 시스템에서, 메모리(205)를 통해, 가상 메모리를 공유하기 위해 버스/인터커넥트(215)와 동작 가능하게 결합된다. 시스템은, 그래픽 디바이스들과 같은 이종 디바이스들 - 그것들 중 둘은 GFX(206) 및 GFX(208)로서 도시됨 - 뿐만 아니라, 다수의 동종 코어들 - 그것들 중 둘은 코어(202) 및 코어(204)로서 도시됨 -, 및 옵션으로 비디오 디바이스(207) 및 디바이스(209)와 같은 그외의 이종 디바이스들을 포함할 수 있다.
다수의 동종 코어들(202 및 204)은 디코드(231) 및 디코드(251), 스레드 당 큐들(233 및 253), 부동 소수점/단일 명령어 다중 데이터 레지스터들 FP/SIMD REGS(235a) 및 FP/SIMD REGS(255a), 일반 레지스터들 GEN REGS(235b) 및 GEN REGS(255b), 부동 소수점/단일 명령어 다중 데이터 실행 유닛들 FP/SIMD EXU(237a) 및 FP/SIMD EXU(257a), 및 정수 실행 유닛들 INT EXU(237b) 및 INT EXU(257b)을, 각각, 통해 실행을 위한 다중 프로세스 스레드들을 프로세싱하는 멀티 스레드형 코어들일 수 있다. 코어(202) 및 코어(204)는 또한, 각각, 버스/인터커넥트(215)를 통해 물리 메모리(205)와 결합될 수 있고, 버스/인터커넥트 유닛들 B/I-U(220) 및 B/I-U(240)를 통해 메모리 유닛들 MEM-U(225) 및 MEM-U(245)와 결합될 수 있다. 코어(202) 및 코어(204)는 또한 메모리(205) 및 버스/인터커넥트(215)를 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(116)를 통해 이종 프로세싱 디바이스들 GFX(206) 및 GFX(208), 및 옵션으로 비디오 디바이스(207) 및 디바이스(209)와 같은 그외의 이종 디바이스들과 결합될 수 있다.
이러한 동종 또는 이종 프로세싱 디바이스들은 메모리(205)를 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(116)를 통해 가상 메모리 어드레스 공간들을 공유할 수 있다. 전형적으로, 페이징된 가상 메모리 시스템에서, 동종 프로세서 코어들은, 각각, 캐시 계층들, 예를 들어, I-캐시(223), D-캐시(224), L2(226) 및 I-캐시(243), D-캐시(244), L2(246); 및 시스템 OS(254), 페이지 테이블들 PTBL(252)로부터 가상-물리 어드레스 변환들을 캐시하기 위해, 각각, TLB들, 예를 들어, I-TLB(221), D-TLB(222) 및 I-TLB(241), D-TLB(242)를 가질 수 있다.
동종 프로세서 코어들(202 및 204)은 또한 시스템 페이지 테이블들 PTBL(252)을 통해 페이지 워크들을 수행하기 위해 하드웨어에 페이지 미스 핸들러들 PMH(230) 및 PMH(250)를 포함할 수 있다. 이러한 동종 프로세서 코어들(202 및 204) 중 하나가 물리 메모리(205) 내의 어느 것에도 맵핑되지 않은 가상 메모리 내의 페이지에 액세스하도록 시도하는 경우, 메모리 액세스는 페이지 오류를 야기할 것이고, 운영 체제 OS(254)는 문제를 "해결"하도록 호출될 것이다.
그래픽 프로세서들 GFX(206) 및 GFX(208)와 같은, 이종 프로세싱 디바이스들 및 옵션으로 비디오 디바이스(207) 및 디바이스(209)와 같은 그외의 이종 디바이스들은 또한 가상-물리 어드레스 변환들을 수행하기 위해, 각각, TLB들, 예를 들어, TLB(262), TLB(282), TLB(272) 및 TLB(292)와 같은 메커니즘들을 가질 수 있다. TLB(262), TLB(282), TLB(272) 및 TLB(292)의 다양한 실시예들은, 각각, 동종 프로세서 코어들(202 및 204)과 동일한 능력들, 또는 비교할 만한 능력들을 가지거나 또는 가지지 않을 수 있다. 이종 프로세싱 디바이스들 GFX(206), GFX(208) 및 옵션으로 비디오 디바이스(207) 및 디바이스(209)는 또한, 이종 프로세싱 디바이스들 GFX(206), GFX(208), 비디오 디바이스(207) 및 디바이스(209) 상의 실행을 위해 프로세스 스레드들을 스케줄링하기 위한 스케줄러들, 예를 들어, SCHED(268), SCHED(288), SCHED(278) 및 SCHED(298)를 각각 가질 수 있다. 옵션으로 중앙 스케줄러 SCHED(218)를 포함하는 스케줄러들 SCHED(268), SCHED(288), SCHED(278) 및 SCHED(298)는, 각각, 그 디바이스 상의 프로세스 스레드를 활성화하거나, 또는 비활성화하도록 이종 프로세싱 디바이스들로부터 PASID 상태 업데이트 요청들을 발행할 수 있다.
메모리 관리 유닛 IOMMU(212)는 멀티 코어 시스템 내의 복수의 이종 디바이스 중 하나 이상의 각각의 요청 디바이스로부터 하나 이상의 PASID 상태 업데이트 요청을 수신할 수 있다. 요청 디바이스들 중 하나로부터의 PASID 상태 업데이트 요청을 프로세싱할 때, IOMMU(212)는 그 PASID 상태 업데이트 요청에 대응하는 PASID 상태의 원자 수정을 수행할 수 있다. 그러한 원자 수정의 일 실시예는, 예를 들어, 요청 디바이스에 의해 활성화됨에 앞서 프로세스 어드레스 공간에 대한 가상 어드레스 변환 엔트리가 시스템 페이지 테이블들과 동기화될 필요가 있는지를 알아보기 위해, IOMMU(212)가 PASID 상태 엔트리의 레이지 무효화 상태를 판독할 수 있고, 대응하는 PASID 상태에 대해 레이지 무효화 체크를 수행할 수 있는, 원자 판독-수정-기입 동작의 형태일 수 있다. IOMMU(212)는 이후, 예를 들어, 레이지 무효화 상태가 설정됨에 응답하여 활성화에 앞서 디바이스의 TLB 엔트리를 동기화하도록, 요청 디바이스에 지시하는, PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 PASID 상태 업데이트 응답을 보낼 수 있다.
이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛 다운들을 지원하기 위한 하나 이상의 프로세스의 실시예들이 또한, 특히 도 3-4를 참조하여, 이하에 보다 구체적으로 설명될 것이다.
도 3은 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛 다운들을 지원하기 위한 프로세스(301)의 일 실시예에 대한 흐름도를 예시한다. 프로세스(301) 및 본원에 개시된 그외의 프로세스들은 범용 머신들에 의해 또는 특수 목적 머신들에 의해 또는 둘의 조합에 의해 실행 가능한 전용 하드웨어 또는 소프트웨어 또는 펌웨어 동작 코드들을 포함할 수 있는 프로세싱 블록들에 의해 수행된다.
프로세스(301)의 프로세싱 블록(310)에서, 하나 이상의 PASID 상태 업데이트 요청은 멀티 코어 시스템 내의 복수의 이종 디바이스 중 하나 이상의 각각의 요청 디바이스로부터 수신된다. 프로세싱 블록(320)에서, PASID 상태의 원자 수정은 그러한 PASID 상태 업데이트 요청들 중 하나에 대응하여 수행되고, 프로세싱 블록(330)에서, 대응하는 PASID 상태에 대해 레이지 무효화 체크가 수행된다. 원자 수정은, 예를 들어, 요청 디바이스에 의해 활성화됨에 앞서 프로세스 어드레스 공간에 대한 가상 어드레스 변환 엔트리가 시스템 페이지 테이블들과 동기화될 필요가 있는지를 알아보기 위해, IOMMU가 PASID 상태 엔트리의 레이지 무효화 상태를 판독할 수 있고, 대응하는 PASID 상태에 대해 레이지 무효화 체크를 수행할 수 있는, 원자 판독-수정-기입 동작의 형태일 수 있다. 이후 프로세싱 블록(350)에서, PASID 상태 업데이트 응답은, 예를 들어, 레이지 무효화 상태가 설정됨에 응답하여 활성화에 앞서 디바이스 TLB 엔트리를 동기화할 필요가 있다는 것을, 요청 디바이스에 지시하는, 그러한 특정 PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 보내진다.
멀티 코어 시스템의 운영 체제로부터의 TLB 슛 다운의 프로세싱은 이후 프로세싱 블록(360)에서 발생한다. 일단 IOTLB 엔트리가 활성화되면, TLB 슛 다운의 프로세싱은 IOTLB 엔트리를 무효화하는 것으로 시작할 수 있다. 그러한 프로세싱은 또한, 예를 들어, PASID 상태 엔트리 내의 활성 참조 카운트가 0이 아니면, 하나 이상의 이종 디바이스의 디바이스 TLB 엔트리들을 무효화하는 것을 포함할 수 있다. 대안으로, PASID 상태 엔트리 내의 활성 참조 카운트가 0이면, 즉, TLB 엔트리를 현재 사용하는 디바이스들은 없지만 그것이 일부 디바이스 TLB(들)에서 여전히 활성화되어 있을 수 있는 경우, TLB 슛 다운을 프로세싱하는 것은 PASID 상태 엔트리를 판독하는 것 및 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것을 포함할 수 있다.
예시의 목적으로, 프로세스(301)의 일부 실시예들에서, 프로세싱으로 하여금 발생하게 하는 이벤트들은 그 외의 순서들대로 또는 그 외의 이벤트 발생들과 동시에 발생할 수 있다는 것이 이해될 것이다. 예를 들어, IOMMU가 PASID 상태 업데이트 요청들을 프로세싱할 수 있는 동안, TLB 슛 다운은 임의의 시간에 운영 체제로부터 수신될 수 있다. 따라서 경합 조건들로부터 보호하는 것, 및 PASID 상태 및 TLB 엔트리들에 대한 업데이트들의 순서화가 시스템 페이지 테이블들에 대한 변경들에 관한 그러한 구조들에서 가상 어드레스 변환들의 정확성을 보존한다는 것에 주의하는 것은 중요하다.
도 4는 이종 디바이스들을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛-다운들을 지원하기 위한 프로세스의 대안의 실시예에 대한 흐름도를 예시한다.
프로세스(401)의 프로세싱 블록(410)에서, PASID 상태 업데이트 요청은 멀티 코어 시스템 내의 복수의 이종 디바이스 중 요청 디바이스로부터 수신된다. 업데이트 요청이 요청 디바이스에 대해 PASID 상태를 활성화하는 것인지 또는 비활성화하는 것인지는 프로세싱 블록(415)에서 판정된다. 요청이 요청 디바이스에 대해 PASID 상태를 활성화하는 것이면, 프로세싱 블록(420)에서 PASID 상태 업데이트 요청에 대응하여 PASID 상태의 원자 수정이 수행되고, 여기에서 레이지 무효화 상태가 판독되고, 활성 참조 카운트 RCOUNT는 증가되고 레이지 무효화 상태는 클리어(clear)된다. 원자 수정은 원자 판독-수정-기입 동작의 형태일 수 있다. 다르게는 요청이 요청 디바이스에 대해 PASID 상태를 비활성화하는 것이면, 프로세싱 블록(425)에서 활성 참조 카운트 RCOUNT는 감소된다.
프로세싱 블록(430)에서 대응하는 PASID 상태에 대해 레이지 무효화 체크가 수행된다. 원자 수정에서 IOMMU가 PASID 상태 엔트리의 레이지 무효화 상태를 판독한 이후, 대응하는 PASID 상태에 대한 레이지 무효화 체크는, 예를 들어, 요청 디바이스에 의해 활성화됨에 앞서 프로세스 어드레스 공간에 대한 가상 어드레스 변환 엔트리가 시스템 페이지 테이블들과 동기화될 필요가 있는지를 판정하도록, 그것이 사전에 설정되었는지를 알아내도록 판독되었던 상태를 체크하는 것을 포함할 수 있다.
만약 그러하다면, PASID 상태 엔트리 내의 활성 참조 카운트가 이제 0이 아니고 레이지 무효화 상태가 사전에 설정되었기 때문에, 프로세싱 블록(440)은 IOTLB 엔트리를 무효화하는 것으로 시작하고 시스템 페이지 테이블들과 동기화될 필요가 있는 하나 이상의 이종 디바이스의 디바이스 TLB 엔트리들을 무효화하는 동기화 플래그를 설정하는 것을 더 포함한다. 이후 프로세싱 블록(450)에서, PASID 상태 업데이트 응답은, 활성화에 앞서 디바이스 TLB 엔트리를 동기화할 필요가 있다는 것을 요청 디바이스에 지시하는, 설정된 동기화 플래그와 함께, 그 특정 PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 보내진다.
다르게는 프로세싱은, 동기화 플래그가 클리어되는, 비활성화 요청의 경우에서와 같이, 프로세싱 블록(435)으로 진행한다. 이후 프로세싱 블록(445)에서, PASID 상태 업데이트 응답은, 활성화에 앞서 디바이스 TLB 엔트리를 동기화할 필요가 없다는 것을 요청 디바이스에 지시하는, 클리어된 동기화 플래그와 함께, 그 특정 PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 보내진다.
프로세싱 블록(455)에서, PASID 상태 업데이트 응답 내의 동기화 플래그의 설정에 기초하여, 요청 디바이스는 활성화에 앞서 디바이스 TLB 엔트리를 동기화할 필요가 있을 수 있다. 이러한 방법으로 PASID 상태 엔트리 내의 활성 참조 카운트가 0으로부터 1로 증가하고 레이지 무효화 상태가 사전에 설정되었던 경우에는 언제나 동기화 플래그가 설정될 것이라는 것이 이해될 것이다. 레이지 무효화 상태에 기초하고 다수의 디바이스들에 대한 동기화의 그외의 실시예들이 또한 사용될 수 있다.
멀티 코어 시스템의 운영체제로부터 TLB 슛 다운을 프로세싱하는 것은, 이후, 글로벌 페이지들이 수정되었는지가 판정되는 프로세싱 블록(460)에서 시작하는 프로세스(402)에서 발생한다. 그러하다면, TLB 슛 다운의 프로세싱은 프로세싱 블록(475)에서 IOTLB 엔트리 및 이종 디바이스들의 모든 대응하는 디바이스 TLB 엔트리들을 무효화하는 것을 포함할 수 있다. 다르게는, 프로세싱은, 대응하는 PASID 상태 엔트리가 판독되는 프로세싱 블록(465)으로 진행할 수 있다. 이후 프로세싱 블록(470)에서, PASID 상태 엔트리 내의 활성 참조 카운트가 0인지가 판정된다. 그렇지 않다면, TLB 슛 다운의 프로세싱은 프로세싱 블록(475)에서 IOTLB 엔트리 및 이종 디바이스들의 모든 대응하는 디바이스 TLB 엔트리들을 무효화하는 것을 다시 포함한다. 그러나 PASID 상태 엔트리 내의 활성 참조 카운트가 0이면, PASID 상태 엔트리 내의 레이지 무효화 필드는 프로세싱 블록들(420, 430 및 440)에 관하여 전술한 바와 같이 레이지 무효화를 트리거하도록 설정된다. 프로세싱은 이후 프로세스(401)의 프로세싱 블록(410)으로 시작하는 것을 반복한다.
예시의 목적으로, 프로세스들(401 및 402)의 일부 실시예들에서, 프로세스들(401 및 402)의 프로세싱으로 하여금 발생하게 하는 이벤트들은 그 외의 순서들대로 또는 동시에 발생할 수 있다는 것이 이해될 것이다. 예를 들어 IOMMU가 프로세스(401)에서 PASID 상태 업데이트 요청들을 프로세싱할 수 있는 동안, TLB 슛 다운은 임의의 시간에 운영 체제로부터 수신될 수 있고 프로세스의(402) 프로세싱으로 하여금 발생하게 한다. 따라서 경합 조건들로부터 보호하는 것, 및 PASID 상태 및 TLB 엔트리들에 대한 업데이트들의 순서화가 시스템 페이지 테이블들에 대한 변경들에 관한 그러한 구조들에서 가상 어드레스 변환들의 정확성을 보존한다는 것에 주의하는 것은 중요하다. 임계 구역들(critical sections)(예를 들어, 세마포어들(semaphores))을 핸들링하기 위한 판독-수정-기입, 및 테스트-앤드-세트(test-and-set), 또는 그외의 기법들과 같은 원자 동작들(atomic operations)은 이러한 목표들을 달성하도록 본 기술분야에 숙련된 자들에 의해 다양한 실시예들에서 사용될 수 있다.
도 5는 이종 디바이스들(506-509)을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛 다운들을 지원하기 위한 프로세스, 예를 들어 프로세스(301), 및 장치(501)를 이용하는 프로세서(503)의 일 실시예를 예시한다. 프로세서(503)의 장치(501)는 가상 어드레스 변환 엔트리들을 저장하기 위해 IOTLB(513)를 포함한다. 메모리 관리 유닛(MMU)(512)은, IOTLB(513)의 가상 어드레스 변환 엔트리들의 적어도 일부에 대응하는 PASID 상태 엔트리들을 유지하도록, IOTLB(513) 및 PASID 상태 저장소(514)와 결합된다. PASID 상태 엔트리들의 실시예들은 활성 참조 상태 및 레이지 무효화 상태를 각각 포함할 수 있다. 예시의 목적으로 IOTLB(513) 및 PASID 상태 저장소(514)는 MMU(512)에 포함된 것으로서 도시되지만 하나 또는 둘 모두가 별개의 하드웨어 또는 소프트웨어 데이터 구조들로서 구현될 수 있고 MMU(512)의 외부, 예를 들어 메모리(505)에 상주할 수 있다는 것이 이해될 것이다.
프로세서(503)의 장치(501)는, 또한 MMU(512)에 포함된 것으로서 도시되지만 별개의 하드웨어 또는 소프트웨어로서 구현될 수 있고 MMU(512) 외부에 상주할 수 있는, 라스트 레벨 캐시 LLC(516) 및 스케줄러(518)를 옵션으로 포함한다.
프로세서(503)의 장치(501)는 이종 디바이스들을 갖는 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템과 통신하기 위해, 그리고 이종 디바이스들을 갖는 멀티 코어 시스템에서, 메모리(505)를 통해, 메모리 컨트롤(553)을 통해, 가상 메모리를 공유하기 위해 버스/인터커넥트들(515 및 551)과 동작 가능하게 결합된다. 시스템은, 그래픽 디바이스들과 같은 이종 디바이스들 - 그것들 중 둘은 GFX(506) 및 GFX(508)로서 도시됨 - 뿐만 아니라, 다수의 동종 코어들 - 그것들 중 둘은 코어(502) 및 코어(504)로서 도시됨 -, 및 옵션으로 비디오 디바이스(507) 및 디바이스(509)와 같은 그외의 이종 디바이스들을 포함할 수 있다.
다수의 동종 코어들(502 및 504)은 설명한 바와 같이, 예를 들어, 도 2에 관련한 실행을 위해 다중 프로세스 스레드들을 프로세싱하는 멀티 스레드형 코어들일 수 있다. 코어(502) 및 코어(504)는 버스/인터커넥트(515)를 통해 다양한 디바이스들, 예를 들어, I/O 확장 디바이스(537), NAND 컨트롤(557), 전송 프로세서(558), 보안 프로세서(559), 비디오 디스플레이 로직(527), 오디오/비디오 I/O(548), 오디오 디코드 로직(549), 및 옵션으로 단일 명령어 다중 데이터(SIMD) 코프로세서(coprocessor)(591)와 결합될 수 있다. 코어(502) 및 코어(504)는 또한 버스/인터커넥트(551) 및 메모리 컨트롤(553)을 통해 메모리(505)와 결합될 수 있다. 코어(502) 및 코어(504)는 또한 메모리(505) 및 버스/인터커넥트들(515 및 551)을 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(516)를 통해 이종 프로세싱 디바이스들 GFX(506) 및 GFX(508), 및 옵션으로 비디오 디바이스(507) 및 디바이스(509)와 같은 그외의 이종 디바이스들과 결합될 수 있다.
이러한 동종 또는 이종 프로세싱 디바이스들은 메모리(505)를 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(516)를 통해 가상 메모리 어드레스 공간들을 공유할 수 있다. 전형적으로, 페이징된 가상 메모리 시스템에서, 동종 프로세서 코어들은 각각, 예를 들어, L2(526) 및 L2(546)를 포함하는 캐시 계층들; 및 시스템 OS(554), 페이지 테이블들 PTBL(522)로부터 가상-물리 어드레스 변환들을 캐시하기 위해 TLB들, 각각, 예를 들어 TLB(522) 및 TLB(542)를 가질 수 있다.
동종 프로세서 코어들(502 및 504)은 또한 시스템 페이지 테이블들 PTBL(552)을 통해 페이지 워크들을 수행하기 위해 하드웨어에 페이지 미스 핸들러들(도시되지 않음)을 포함할 수 있다. 이러한 동종 프로세서 코어들(502 및 504) 중 하나가 물리 메모리(505) 내의 어느 것에도 맵핑되지 않은 가상 메모리 내의 페이지에 액세스하도록 시도하는 경우, 메모리 액세스는 페이지 오류를 야기할 것이고, 운영 체제 OS(554)는 문제를 "해결"하도록 호출될 것이다.
그래픽 프로세서들 GFX(506) 및 GFX(508)와 같은, 이종 프로세싱 디바이스들 및 옵션으로 비디오 디바이스(507) 및 디바이스(509)와 같은 그외의 이종 디바이스들은 가상-물리 어드레스 변환들을 수행하기 위해 TLB들, 각각, 예를 들어, TLB(562), TLB(582), TLB(572) 및 TLB(592)와 같은 메커니즘들을 가질 수 있다. TLB(562), TLB(582), TLB(572) 및 TLB(592) 각각의 다양한 실시예들은 동종 프로세서 코어들(502 및 504)과 동일한 능력들, 또는 비교할 만한 능력들을 가지거나 또는 가지지 않을 수 있다. 이종 프로세싱 디바이스들 GFX(506), GFX(508) 및 옵션으로 비디오 디바이스(507) 및 디바이스(509)는 또한, 이종 프로세싱 디바이스들 GFX(506), GFX(508), 비디오 디바이스(507) 및 디바이스(509) 상의 실행을 위해 프로세스 스레드들을 스케줄링하기 위한 스케줄러들, 예를 들어, SCH(568), SCH(588), SCH(578) 및 SCH(598)를 각각 가질 수 있다. 옵션으로 중앙 스케줄러 SCH(518)를 포함하는 스케줄러들 SCH(568), SCH(588), SCH(578) 및 SCH(598)는 각각 그 디바이스 상의 프로세스 스레드를 활성화하거나, 또는 비활성화하도록 이종 프로세싱 디바이스들로부터 PASID 상태 업데이트 요청들을 발행할 수 있다.
메모리 관리 유닛(512)은 멀티 코어 시스템 내의 복수의 이종 디바이스 중 하나 이상의 각각의 요청 디바이스로부터 하나 이상의 PASID 상태 업데이트 요청을 수신할 수 있다. 하나 이상의 요청 디바이스로부터의 PASID 상태 업데이트 요청을 프로세싱할 때, MMU(512)는 그 PASID 상태 업데이트 요청에 대응하는 PASID 상태의 원자 수정을 수행할 수 있다. 그러한 원자 수정의 일 실시예는, 예를 들어, 요청 디바이스에 의해 활성화됨에 앞서 프로세스 어드레스 공간에 대한 가상 어드레스 변환 엔트리가 시스템 페이지 테이블들과 동기화될 필요가 있는지를 알아내도록, MMU(512)가 PASID 상태 엔트리의 레이지 무효화 상태를 판독할 수 있고, 대응하는 PASID 상태에 대해 레이지 무효화 체크를 수행할 수 있는, 원자 판독-수정-기입 동작의 형태일 수 있다. MMU(512)는 이후, 예를 들어, 레이지 무효화 상태가 설정됨에 응답하여 활성화에 앞서 디바이스의 TLB 엔트리를 동기화하도록 요청 디바이스에 지시하는, PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 PASID 상태 업데이트 응답을 보낼 수 있다.
도 6은 이종 디바이스들(606-609)을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛 다운들을 지원하도록 프로세스, 예를 들어, 프로세스(301), 및 장치(601)를 이용하는 시스템(610)의 일 실시예를 예시한다.
시스템(610)은, 가상 어드레스 변환 엔트리들을 저장하기 위해 IOTLB(613)를 포함하는, 프로세서(603)의 장치(601)를 포함한다. 메모리 관리 유닛(612)은 IOTLB(613)의 가상 어드레스 변환 엔트리들의 적어도 일부에 대응하는 PASID 상태 엔트리들을 유지하도록 IOTLB(613) 및 PASID 상태 저장소(614)와 결합된다. PASID 상태 엔트리들의 실시예들 각각은 활성 참조 상태 및 레이지 무효화 상태를 포함할 수 있다. 예시의 목적으로 IOTLB(613) 및 PASID 상태 저장소(614)는 MMU(612)에 포함된 것으로서 도시되지만 하나 또는 둘 모두가 별개의 하드웨어 또는 소프트웨어 데이터 구조들로서 구현될 수 있고 MMU(612)의 외부, 예를 들어, 메모리(605)에 상주할 수 있다는 것이 이해될 것이다.
프로세서(603)의 장치(601)는, 또한 MMU(612)에 포함된 것으로서 도시되지만 별개의 하드웨어 또는 소프트웨어로서 구현될 수 있고 MMU(612)의 외부에 상주할 수 있는, 라스트 레벨 캐시 LLC(616) 및 스케줄러(618)를 또한 옵션으로 포함한다.
프로세서(603)의 장치(601)는 이종 디바이스들을 갖는 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템과 통신하기 위한, 그리고 이종 디바이스들을 갖는 멀티 코어 시스템에서, 메모리(605)를 통해, 메모리 컨트롤(653)을 통해, 가상 메모리를 공유하기 위한 버스/인터커넥트들(615 및 651)과 동작 가능하게 결합된다. 시스템(610)의 실시예들은 멀티 코어 프로세서 또는 멀티 코어 프로세싱 시스템과 통신하기 위한 PCI(Peripheral Component Interconnect) 또는 PCI Express 또는 SATA(Serial Advanced Technology Attachment)와 같은 표준 또는 비표준 또는 사유 기술들, 인터페이스들, 버스들 또는 인터커넥트들(615 및 651)을 사용하여 구현될 수 있다.
시스템(610)의 그외의 실시예들은 표준 또는 비표준 또는 사유 기술들, 인터페이스들, 버스들 또는 인터커넥트들 - 예를 들어, SPI(Serial Peripheral Interface) 버스; ISA(Industry Standard Architecture) 버스, PC/104, PC/104+ 및 Extended ISA; USB(Universal Serial Bus) AVC(Audio Video Class); AMBA(Advanced Microcontroller Bus Architecture) APB(Advanced Peripheral Bus); Fire Wire(IEEE Std 1394a-2000 High Performance Serial Bus - Amendment 1, ISBN 0-7381-1958-X; IEEE Std 1394b-2002 High Performance Serial Bus - Amendment 2, ISBN 0-7381-3253-5; IEEE Std 1394c-2006, 2007-06-08, ISBN 0-7381-5237-4); HDMI(High-Definition Multimedia Interface); VESA(Video Electronic Standards Association)의 Display Port 및 Mini Display Port; MIPI®(Mobile Industry Processor Interface) Alliance의 SLIMbus®(Serial Low-power Inter-chip Media Bus), LLI(Low Latency Interface), CSI(Camera Serial Interface) DSI(Display Serial Interface) 등을 사용하여 구현될 수 있다.
시스템(610)은 그래픽 디바이스들과 같은 이종 디바이스들 - 그들 중 둘은 GFX(606) 및 GFX(608)로서 도시됨 - 뿐만 아니라, 다수의 동종 코어들 - 그것들 중 둘은 코어(602) 및 코어(604)로서 도시됨 -, 및 옵션으로 비디오 디바이스(607) 및 디바이스(609)와 같은 그외의 이종 디바이스들을 포함할 수 있다.
다수의 동종 코어들(602 및 604)은 실행을 위해 다중 프로세스 스레드들을 프로세싱하는 멀티 스레드형 코어들일 수 있다. 동종 프로세서 코어(602) 및 코어(604)는 버스/인터커넥트(615), 예를 들어, 브리지(30), 무선 연결 디바이스(20), 모뎀 디바이스(26), 및 오디오 I/O 디바이스들(28)을 통해 다양한 디바이스들과 결합될 수 있다. 시스템(610)의 일부 실시예들은, 예를 들어, 태블릿 컴퓨터 또는 스마트 폰에서 사용하기 위한 칩 상의 시스템으로서 구현될 수 있다. 그러한 실시예들에서 무선 접속성 디바이스(20)는 무선 LAN(local area network) 링크를 제공할 수 있고, 모뎀 디바이스(26)는 4G(fourth generation), 5G(fifth generation), 또는 후속 전화기 링크를 제공할 수 있고, 오디오 I/O 디바이스들(28)은 오디오 휴먼 인터페이스 디바이스들, 예를 들어, 헤드셋, 스피커들, 핸드셋 마이크로폰, 오디오 입력 및 출력 채널들, 및 증폭기들의 세트를 제공할 수 있다.
동종 프로세서 코어들(602 및 604)은, 무선 접속성 디바이스(20), 모뎀 디바이스(26), 및 오디오 I/O 디바이스들(28), 카메라 인터페이스(21), 고속 IrDA(Infrared Data Association) 포트(23), HD(high definition) 멀티미디어 인터페이스(24), USB(25), 디스플레이 컨트롤(27), 및 대안의 마스터 인터페이스(29)를 포함할 수 있으나 이에 한정되지 않는, 다양한 그외의 시스템 디바이스들과 통신하기 위해 버스/인터커넥트(615), 브리지(30) 및 버스/인터커넥트(18)와 결합된다. 동종 프로세서 코어들(602 및 604)은 또한, 플래시 메모리(13), SD(secure digital) 메모리(16), MMC(multimedia card)(17) 및 SSD(solid state drive)(19)를 포함할 수 있으나 이에 한정되지 않는, 다양한 그외의 시스템 디바이스들과 통신하기 위해 버스/인터커넥트(615), 브리지(30) 및 버스/인터커넥트(11)와 결합된다. 동종 프로세서 코어들(602 및 604)은, UART(universal asynchronous receiver/transmitter)(31), 카메라 컨트롤(32), Wi-Fi 802.11 a/b/g 송수신기 및/또는 GPS(Global Positioning System) 송수신기를 옵션으로 포함하는 Blue Tooth UART(33), 키패드(634), 배터리 컨트롤(35), I/O 확장(37) 및 터치 스크린 컨트롤(39)을 포함할 수 있으나 이에 한정되지 않는, 다양한 그외의 시스템 디바이스들과 통신하기 위해 버스/인터커넥트(615), 브리지(30) 및 버스/인터커넥트(18)와 결합된다.
동종 프로세서 코어(602) 및 코어(604)는 또한 버스/인터커넥트(651) 및 메모리 컨트롤(653)을 통해 메모리(605)와 결합될 수 있다. 동종 프로세서 코어(602) 및 코어(604)는 또한 메모리(605) 및 버스/인터커넥트들(615 및 651)을 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(616)를 통해 이종 프로세싱 디바이스들 GFX(606) 및 GFX(608), 및 옵션으로 비디오 디바이스(607) 및 디바이스(609)와 같은 그외의 이종 디바이스들과 결합될 수 있다. 시스템(610)의 메모리 (605) 및 그외의 유형의(tangible) 저장 매체는, 이종 디바이스들(606-609)을 갖는 멀티 코어 시스템에서 가상 메모리를 공유하기 위해 효과적인 TLB 슛 다운들을 지원하도록 동종 프로세서 코어들(602 및 604)에 의해 실행될 수 있는 OS(654), MMU(612), SCH(618, 668, 678, 688 및 698) 및 그외의 디바이스들 및/또는 드라이버들(도시되지 않음)의 실행 가능한 명령어들을 포함하는 기능적 서술 자료를 기록할 수 있다.
시스템(610)의 일부 실시예들은, 단일 컴퓨터 내에서 동시에 실행되는 다중 운영 체제들이, PCI Express 토폴로지들에서 네이티브(native) I/O 가상화를 제공하는, SRIOV(Single Root I/O Virtualization), 또는 다중 루트 컴플렉스(root complex)들이 PCI Express 계층을 공유하는 토폴로지(topology)들에서 네이티브 I/O 가상화를 제공하는, MRIOV(Multi-Root I/O Virtualization)와 같은 디바이스들을 네이티브하게 공유할 수 있게 하는 산업 표준들을 고수할 수 있다. 시스템(610)의 일부 바람직한 실시예들은 SPI 버스, USB, AMBA APB; Fire Wire, HDMI, Mini Display Port, MIPI SLIMbus, MIPI LLI, MIPI CSI, MIPI DSI 등과 같은 표준 또는 비표준 또는 사유 기술들, 인터페이스들, 버스들 또는 인터커넥트들을 포함할 수 있다.
이러한 동종 또는 이종 프로세싱 디바이스들은 메모리(605)를 통해, 그리고 옵션으로 라스트 레벨 캐시 LLC(616)를 통해 가상 메모리 어드레스 공간들을 공유할 수 있다. 전형적으로, 페이징된 가상 메모리 시스템에서, 동종 프로세서 코어들은 각각 캐시 계층들, 예를 들어, L2(626) 및 L2(646); 및 호스트 또는 게스트 시스템 OS(654), 페이지 테이블들 PTBL(652)로부터 가상-물리 어드레스 변환들을 캐시하기 위한 TLB들, 예를 들어, TLB(622) 및 TLB(642)를, 각각, 가질 수 있다.
동종 프로세서 코어들(602 및 604)은 또한 시스템 페이지 테이블들 PTBL(652)을 통해 페이지 워크들을 수행하기 위해 하드웨어에 페이지 미스 핸들러들(도시되지 않음)을 포함할 수 있다. 이러한 동종 프로세서 코어들(602 및 604) 중 하나가, 물리 메모리(605) 내의 어느 것에도 맵핑되지 않은 가상 메모리 내의 페이지에 액세스하도록 시도하는 경우, 메모리 액세스는 페이지 오류를 야기할 것이고, 운영 체제 OS(654)는 문제를 "해결"하도록 호출될 것이다.
그래픽 프로세서들 GFX(606) 및 GFX(608)와 같은, 이종 프로세싱 디바이스들 및 옵션으로 비디오 디바이스(607) 및 디바이스(609)와 같은 그외의 이종 디바이스들은 가상-물리 어드레스 변환들을 수행하기 위해 TLB들, 예를 들어, TLB(662), TLB(682), TLB(672) 및 TLB(692)와 같은 메커니즘들을, 각각, 가질 수 있다. TLB(662), TLB(682), TLB(672) 및 TLB(692)의 다양한 실시예들은, 각각, 동종 프로세서 코어들(602 및 604)과 동일한 능력들, 또는 비교할 만한 능력들을 가지거나 또는 가지지 않을 수 있다. 이종 프로세싱 디바이스들 GFX(606), GFX(608) 및 옵션으로 비디오 디바이스(607) 및 디바이스(609)는 또한, 이종 프로세싱 디바이스들 GFX(606), GFX(608), 비디오 디바이스(607) 및 디바이스(609) 상의 실행을 위해 프로세스 스레드들을 스케줄링하기 위한 스케줄러들, 예를 들어, SCH(668), SCH(688), SCH(678) 및 SCH(698)를, 각각, 가질 수 있다. 옵션으로 중앙 스케줄러 SCH(618)를 포함하는 스케줄러들 SCH(668), SCH(688), SCH(678) 및 SCH(698)는, 각각, 그 디바이스 상의 프로세스 스레드를 활성화하거나, 또는 비활성화하도록 이종 프로세싱 디바이스들로부터 PASID 상태 업데이트 요청들을 발행할 수 있다.
메모리 관리 유닛(612)은 멀티 코어 시스템 내의 복수의 이종 디바이스 중 하나 이상의 각각의 요청 디바이스로부터 하나 이상의 PASID 상태 업데이트 요청을 수신할 수 있다. 요청 디바이스들 중 하나로부터의 PASID 상태 업데이트 요청을 프로세싱할 때, MMU(612)는 그 PASID 상태 업데이트 요청에 대응하는 PASID 상태의 원자 수정을 수행할 수 있다. 그러한 원자 수정의 일 실시예는, 예를 들어, 요청 디바이스에 의해 활성화됨에 앞서 프로세스 어드레스 공간에 대한 가상 어드레스 변환 엔트리가 시스템 페이지 테이블들과 동기화될 필요가 있는지를 알아내도록, MMU(612)가 PASID 상태 엔트리의 레이지 무효화 상태를 판독할 수 있고, 대응하는 PASID 상태에 대해 레이지 무효화 체크를 수행할 수 있는, 원자 판독-수정-기입 동작의 형태일 수 있다. MMU(612)는 이후, 예를 들어, 레이지 무효화 상태가 설정되는 것에 응답하여 활성화에 앞서 디바이스의 TLB 엔트리를 동기화하도록 요청 디바이스에 지시하는, PASID 상태 업데이트 요청에 대응하는 요청 디바이스에 PASID 상태 업데이트 응답을 보낼 수 있다.
이상의 설명은 본 발명의 바람직한 실시예들을 예시하기 위한 의도이다. 이상의 논의로부터, 성장이 빠르고 더 이상의 발전들이 쉽게 예견될 수 없는, 그러한 기술 분야에서 특히, 본 발명은, 첨부된 특허청구범위 및 그들의 등가물들의 범위 내에서 본 발명의 원칙들로부터 벗어나지 않고 본 기술 분야에 숙련된 자들에 의해 배열 및 상세에서 수정될 수 있다는 것은 또한 명백할 것이다.
Claims (30)
- 가상 메모리를 공유하는 이종 디바이스들을 갖는 멀티 코어 시스템에서 효과적인 TLB 슛 다운(shoot-down)들을 위한 방법으로서,
상기 멀티 코어 시스템 내의 복수의 이종 디바이스 중 하나 이상의 각각의 요청 디바이스로부터 하나 이상의 프로세스 어드레스 공간 식별자(PASID) 상태 업데이트 요청을 수신하는 단계,
상기 하나 이상의 PASID 상태 업데이트 요청 중 첫 번째에 대응하는 PASID 상태의 원자 수정(atomic modification)을 수행하는 단계,
상기 대응하는 PASID 상태에 대해 레이지 무효화 체크(lazy invalidation check)를 수행하는 단계, 및
상기 하나 이상의 PASID 상태 업데이트 요청 중 상기 첫 번째에 대응하는 요청 디바이스에 PASID 상태 업데이트 응답을 보내는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 멀티 코어 시스템 내의 운영 체제로부터 TLB 슛 다운을 프로세싱하는 단계를 더 포함하는 방법. - 제2항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 단계는,
IOTLB 엔트리를 무효화하는 단계를 포함하는 방법. - 제3항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 단계는,
상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리를 무효화하는 단계를 포함하는 방법. - 제2항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 단계는,
PASID 상태 엔트리를 판독하는 단계, 및
상기 PASID 상태 엔트리 내의 활성 참조 카운트(active reference count)가 0이면 상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 단계
를 포함하는 방법. - 제5항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 단계는,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 IOTLB 엔트리를 무효화하는 단계, 및
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리를 무효화하는 단계
를 포함하는 방법. - 제5항에 있어서,
상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 단계는 락킹된(locked) 비교-및-교환(compare-and-exchange) 명령어를 사용하여 수행되는 방법. - 제1항에 있어서,
상기 PASID 상태의 상기 원자 수정은,
제1 PASID 상태 업데이트 요청이 비활성화 업데이트를 지시하면 활성 참조 카운트를 감소시키는 단계를 포함하는 방법. - 제1항에 있어서,
상기 PASID 상태의 상기 원자 수정은,
레이지 무효화 필드를 포함하는 PASID 상태 엔트리를 판독하는 단계,
제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 활성 참조 카운트를 증가시키는 단계, 및
제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 상기 레이지 무효화 필드를 클리어(clear)하는 단계
를 포함하는 방법. - 제9항에 있어서,
판독된 상기 PASID 상태 엔트리에 포함되는 상기 레이지 무효화 필드가 설정되었으면, IOTLB 엔트리를 무효화하는 단계, 및
판독된 상기 PASID 상태 엔트리에 포함되는 상기 레이지 무효화 필드가 설정되었고 제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 제1 PASID 상태 업데이트 요청에 대해 디바이스 동기화 플래그를 설정하는 단계
를 더 포함하는 방법. - 복수의 가상 어드레스 변환 엔트리를 저장하기 위한 TLB, 및
상기 가상 어드레스 변환 엔트리들의 일부에 대응하는 PASID 상태 엔트리들을 유지하기 위한, 상기 TLB와 결합된, 메모리 관리 유닛
을 포함하고,
각각의 상기 PASID 상태 엔트리들은 활성 참조 상태 및 레이지 무효화 상태를 포함하고,
상기 메모리 관리 유닛은 멀티 코어 시스템 내의 복수의 이종 디바이스 중의 디바이스로부터 제1 PASID 상태 업데이트 요청을 수신하는 것에 응답하여 제1 PASID 상태 엔트리의 원자 수정을 수행하고, 상기 제1 PASID 상태 엔트리의 상기 레이지 무효화 상태를 판독하고,
상기 메모리 관리 유닛은 판독된 상기 레이지 무효화 상태에 적어도 부분적으로 응답하여 활성화에 앞서 디바이스 TLB 엔트리를 동기화하도록 PASID 상태 업데이트 응답을 상기 디바이스에 보내는 장치. - 제11항에 있어서,
상기 제1 PASID 상태의 상기 원자 수정은,
상기 레이지 무효화 필드를 포함하는 상기 제1 PASID 상태 엔트리를 판독하고,
상기 제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 활성 참조 카운트를 증가시키고,
상기 제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 상기 레지이 무효화 필드를 클리어하는 것
을 포함하는 장치. - 제11항에 있어서,
상기 메모리 관리 유닛은 판독된 상기 레이지 무효화 상태에 적어도 부분적으로 응답하여, 또한,
상기 제1 PASID 상태 엔트리에 대응하는 TLB 가상 어드레스 변환 엔트리를 무효화하고,
상기 디바이스에 보내진 상기 PASID 상태 업데이트 응답에 대해 동기화 플래그를 설정하는 장치. - 제11항에 있어서,
상기 메모리 관리 유닛은, 또한,
상기 멀티 코어 시스템 내의 운영 체제로부터 TLB 슛 다운을 프로세싱하는 장치. - 제14항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
TLB 가상 어드레스 변환 엔트리를 무효화하는 것을 포함하는 장치. - 제14항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리로 하여금 무효화되게 하는 것을 포함하는 장치. - 제14항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
PASID 상태 엔트리를 판독하고,
상기 PASID 상태 엔트리 내의 활성 참조 카운트가 0이면 상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것
을 포함하는 장치. - 제17항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 TLB 엔트리를 무효화하고,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리로 하여금 무효화되게 하는 것
을 포함하는 장치. - 제17항에 있어서,
상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것은 락킹된 비교-및-교환 명령어를 사용하여 수행되는 장치. - 멀티 코어 프로세서로서,
제1 복수의 동종 프로세싱 코어,
이종 프로세싱 디바이스,
복수의 가상 어드레스 변환 엔트리를 저장하기 위한 TLB, 및
상기 가상 어드레스 변환 엔트리들의 일부에 대응하는 PASID 상태 엔트리들을 유지하기 위한, 상기 TLB와 결합된, 메모리 관리 유닛
을 포함하고,
각각의 상기 PASID 상태 엔트리들은 활성 참조 상태 및 레이지 무효화 상태를 포함하고,
상기 메모리 관리 유닛은 상기 멀티 코어 프로세서 내의 복수의 이종 디바이스 중의 디바이스로부터 제1 PASID 상태 업데이트 요청을 수신하는 것에 응답하여 제1 PASID 상태 엔트리의 원자 수정을 수행하고, 상기 제1 PASID 상태 엔트리의 상기 레이지 무효화 상태를 판독하고,
상기 메모리 관리 유닛은 판독된 상기 레이지 무효화 상태에 적어도 부분적으로 응답하여 활성화에 앞서 디바이스 TLB 엔트리를 동기화하도록 PASID 상태 업데이트 응답을 상기 디바이스에 보내는 멀티 코어 프로세서. - 제20항에 있어서,
상기 제1 PASID 상태 엔트리의 상기 원자 수정은,
상기 레이지 무효화 필드를 포함하는 상기 제1 PASID 상태 엔트리를 판독하고,
상기 제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 활성 참조 카운트를 증가시키고,
상기 제1 PASID 상태 업데이트 요청이 활성화 업데이트를 지시하면 상기 레이지 무효화 필드를 클리어하는 것
을 포함하는 멀티 코어 프로세서. - 제20항에 있어서,
상기 메모리 관리 유닛은 또한 운영 체제로부터 TLB 슛 다운을 프로세싱하는 멀티 코어 프로세서. - 제22항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
PASID 상태 엔트리를 판독하고,
상기 PASID 상태 엔트리 내의 활성 참조 카운트가 0이면 상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것
을 포함하는 멀티 코어 프로세서. - 제23항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 TLB 엔트리를 무효화하고,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리로 하여금 무효화되게 하는 것
을 포함하는 멀티 코어 프로세서. - 제23항에 있어서,
상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것은 락킹된 비교-및-교환 명령어를 사용하여 수행되는 멀티 코어 프로세서. - 멀티 코어 시스템으로서,
가상 어드레스 변환 엔트리들을 포함하는 복수의 페이지 테이블을 저장하기 위한 메모리,
제1 복수의 동종 프로세싱 코어,
이종 프로세싱 디바이스,
복수의 상기 가상 어드레스 변환 엔트리들을 저장하기 위한 TLB, 및
상기 가상 어드레스 변환 엔트리들의 일부에 대응하는 PASID 상태 엔트리들을 유지하기 위한, 상기 TLB와 결합된, 메모리 관리 유닛
을 포함하고,
각각의 상기 PASID 상태 엔트리들은 활성 참조 상태 및 레이지 무효화 상태를 포함하고,
상기 메모리 관리 유닛은 상기 멀티 코어 시스템 내의 복수의 이종 디바이스 중의 디바이스로부터 제1 PASID 상태 업데이트 요청을 수신하는 것에 응답하여 제1 PASID 상태 엔트리의 원자 수정을 수행하고, 상기 제1 PASID 상태 엔트리의 상기 레이지 무효화 상태를 판독하고,
상기 메모리 관리 유닛은 판독된 상기 레이지 무효화 상태에 적어도 부분적으로 응답하여 활성화에 앞서 디바이스 TLB 엔트리를 동기화하도록 PASID 상태 업데이트 응답을 상기 디바이스에 보내는 멀티 코어 시스템. - 제26항에 있어서,
상기 메모리 관리 유닛은 또한 상기 멀티 코어 시스템 내의 운영 체제로부터 TLB 슛 다운을 프로세싱하는 멀티 코어 시스템. - 제27항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리로 하여금 무효화되게 하는 것을 포함하는 멀티 코어 시스템. - 제27항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
PASID 상태 엔트리를 판독하고,
상기 PASID 상태 엔트리 내의 활성 참조 카운트가 0이면 상기 PASID 상태 엔트리 내의 레이지 무효화 필드를 설정하는 것
을 포함하는 멀티 코어 시스템. - 제29항에 있어서,
상기 TLB 슛 다운을 프로세싱하는 것은,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 TLB 엔트리를 무효화하고,
상기 PASID 상태 엔트리 내의 상기 활성 참조 카운트가 0이 아니면 상기 복수의 이종 디바이스 중 하나의 이종 디바이스의 디바이스 TLB 엔트리로 하여금 무효화되게 하는 것
을 포함하는 멀티 코어 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/191,327 US9916257B2 (en) | 2011-07-26 | 2011-07-26 | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
US13/191,327 | 2011-07-26 | ||
PCT/US2012/047991 WO2013016345A2 (en) | 2011-07-26 | 2012-07-24 | Method and apparatus for tlb shoot-down in a heterogeneous computing system supporting shared virtual memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140028137A true KR20140028137A (ko) | 2014-03-07 |
KR101604929B1 KR101604929B1 (ko) | 2016-03-18 |
Family
ID=47425977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147002511A KR101604929B1 (ko) | 2011-07-26 | 2012-07-24 | 공유된 가상 메모리를 지원하는 이종 컴퓨팅 시스템에서의 tlb 슛 다운을 위한 방법 및 장치 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9916257B2 (ko) |
JP (2) | JP6032855B2 (ko) |
KR (1) | KR101604929B1 (ko) |
CN (2) | CN103827839B (ko) |
DE (1) | DE202012007252U1 (ko) |
GB (1) | GB2506788B (ko) |
IN (1) | IN2014CN00386A (ko) |
TW (1) | TWI489278B (ko) |
WO (1) | WO2013016345A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022060492A1 (en) * | 2020-09-21 | 2022-03-24 | Intel Corporation | Pasid based routing extension for scalable iov systems |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014016650A1 (en) * | 2012-07-27 | 2014-01-30 | Freescale Semiconductor, Inc. | Circuitry for a computing system and computing system |
WO2014133527A1 (en) * | 2013-02-28 | 2014-09-04 | Intel Corporation | Leveraging an enumeration and/or configuration mechanism of one interconnect protocol for a different interconnect protocol |
US9223690B2 (en) * | 2013-10-04 | 2015-12-29 | Sybase, Inc. | Freeing memory safely with low performance overhead in a concurrent environment |
US9411745B2 (en) | 2013-10-04 | 2016-08-09 | Qualcomm Incorporated | Multi-core heterogeneous system translation lookaside buffer coherency |
US9384133B2 (en) * | 2014-05-30 | 2016-07-05 | International Business Machines Corporation | Synchronizing updates of page table status indicators and performing bulk operations |
US9785554B2 (en) | 2014-05-30 | 2017-10-10 | International Business Machines Corporation | Synchronizing updates of page table status indicators in a multiprocessing environment |
US20160098203A1 (en) * | 2014-12-18 | 2016-04-07 | Mediatek Inc. | Heterogeneous Swap Space With Dynamic Thresholds |
CN105846859B (zh) * | 2015-01-12 | 2019-05-24 | 芋头科技(杭州)有限公司 | 一种嵌入式操作系统实现蓝牙从设备功能的系统及方法 |
EP3054384B1 (en) * | 2015-02-04 | 2018-06-27 | Huawei Technologies Co., Ltd. | System and method for memory synchronization of a multi-core system |
WO2016206012A1 (en) * | 2015-06-24 | 2016-12-29 | Intel Corporation | Systems and methods for isolating input/output computing resources |
EP3353659A4 (en) * | 2015-09-25 | 2019-05-01 | Intel Corporation | SYSTEMS AND METHODS FOR CONTROLLING INPUT / OUTPUT COMPUTER RESOURCES |
US10942683B2 (en) | 2015-10-28 | 2021-03-09 | International Business Machines Corporation | Reducing page invalidation broadcasts |
US9898226B2 (en) * | 2015-10-28 | 2018-02-20 | International Business Machines Corporation | Reducing page invalidation broadcasts in virtual storage management |
US9892024B2 (en) * | 2015-11-02 | 2018-02-13 | Sony Interactive Entertainment America Llc | Backward compatibility testing of software in a mode that disrupts timing |
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 |
US10120814B2 (en) * | 2016-04-01 | 2018-11-06 | Intel Corporation | Apparatus and method for lazy translation lookaside buffer (TLB) coherence |
US10067870B2 (en) | 2016-04-01 | 2018-09-04 | Intel Corporation | Apparatus and method for low-overhead synchronous page table updates |
US10540292B2 (en) | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
DK3502906T3 (da) * | 2016-06-08 | 2021-08-30 | Google Llc | Tlb-shootdown for lav overhead |
US10282308B2 (en) * | 2016-06-23 | 2019-05-07 | Advanced Micro Devices, Inc. | Method and apparatus for reducing TLB shootdown overheads in accelerator-based systems |
US20180276175A1 (en) * | 2017-03-22 | 2018-09-27 | National Instruments Corporation | Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network |
CN108932213A (zh) * | 2017-10-10 | 2018-12-04 | 北京猎户星空科技有限公司 | 多操作系统间的通讯方法、装置、电子设备和存储介质 |
US10725932B2 (en) | 2017-11-29 | 2020-07-28 | Qualcomm Incorporated | Optimizing headless virtual machine memory management with global translation lookaside buffer shootdown |
US10990436B2 (en) * | 2018-01-24 | 2021-04-27 | Dell Products L.P. | System and method to handle I/O page faults in an I/O memory management unit |
US11106613B2 (en) * | 2018-03-29 | 2021-08-31 | Intel Corporation | Highly scalable accelerator |
US10846235B2 (en) | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
DE102018004086A1 (de) | 2018-05-18 | 2019-11-21 | Singulus Technologies Ag | Durchlaufanlage und Verfahren zum Beschichten von Substraten |
KR102655094B1 (ko) * | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
US11036649B2 (en) | 2019-04-04 | 2021-06-15 | Cisco Technology, Inc. | Network interface card resource partitioning |
CN110968530B (zh) * | 2019-11-19 | 2021-12-03 | 华中科技大学 | 一种基于非易失性内存的键值存储系统和内存访问方法 |
CN116594925B (zh) * | 2023-04-24 | 2024-09-27 | 上海天数智芯半导体有限公司 | 一种地址转换系统、处理器、地址转换方法及电子设备 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02183849A (ja) * | 1989-01-11 | 1990-07-18 | Fujitsu Ltd | アドレス対応表無効化処理方式 |
JPH06139149A (ja) * | 1992-10-29 | 1994-05-20 | Mitsubishi Electric Corp | 多重仮想空間制御装置 |
US6175876B1 (en) | 1998-07-09 | 2001-01-16 | International Business Machines Corporation | Mechanism for routing asynchronous state changes in a 3-tier application |
US6779049B2 (en) * | 2000-12-14 | 2004-08-17 | International Business Machines Corporation | Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism |
US7111145B1 (en) | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7073043B2 (en) * | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
US7552254B1 (en) * | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
US7069389B2 (en) * | 2003-11-26 | 2006-06-27 | Microsoft Corporation | Lazy flushing of translation lookaside buffers |
US7562179B2 (en) * | 2004-07-30 | 2009-07-14 | Intel Corporation | Maintaining processor resources during architectural events |
US7376807B2 (en) | 2006-02-23 | 2008-05-20 | Freescale Semiconductor, Inc. | Data processing system having address translation bypass and method therefor |
US7555628B2 (en) * | 2006-08-15 | 2009-06-30 | Intel Corporation | Synchronizing a translation lookaside buffer to an extended paging table |
US7917725B2 (en) | 2007-09-11 | 2011-03-29 | QNX Software Systems GmbH & Co., KG | Processing system implementing variable page size memory organization using a multiple page per entry translation lookaside buffer |
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 |
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
EP2622525A1 (en) | 2010-09-30 | 2013-08-07 | Hewlett-Packard Development Company, L.P. | Virtual machines for virus scanning |
JP5956754B2 (ja) | 2012-01-06 | 2016-07-27 | 株式会社荏原製作所 | 真空排気システム |
-
2011
- 2011-07-26 US US13/191,327 patent/US9916257B2/en active Active
-
2012
- 2012-07-24 CN CN201280031876.1A patent/CN103827839B/zh not_active Expired - Fee Related
- 2012-07-24 GB GB1400358.6A patent/GB2506788B/en not_active Expired - Fee Related
- 2012-07-24 WO PCT/US2012/047991 patent/WO2013016345A2/en active Application Filing
- 2012-07-24 IN IN386CHN2014 patent/IN2014CN00386A/en unknown
- 2012-07-24 JP JP2014522944A patent/JP6032855B2/ja not_active Expired - Fee Related
- 2012-07-24 KR KR1020147002511A patent/KR101604929B1/ko active IP Right Grant
- 2012-07-24 CN CN201611013967.9A patent/CN106776379B/zh not_active Expired - Fee Related
- 2012-07-25 TW TW101126812A patent/TWI489278B/zh not_active IP Right Cessation
- 2012-07-26 DE DE202012007252U patent/DE202012007252U1/de not_active Expired - Lifetime
-
2016
- 2016-10-24 JP JP2016207724A patent/JP6378733B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022060492A1 (en) * | 2020-09-21 | 2022-03-24 | Intel Corporation | Pasid based routing extension for scalable iov systems |
US12086082B2 (en) | 2020-09-21 | 2024-09-10 | Intel Corporation | PASID based routing extension for scalable IOV systems |
Also Published As
Publication number | Publication date |
---|---|
GB2506788B (en) | 2020-05-27 |
CN103827839B (zh) | 2016-12-21 |
WO2013016345A3 (en) | 2013-04-11 |
GB2506788A (en) | 2014-04-09 |
TWI489278B (zh) | 2015-06-21 |
IN2014CN00386A (ko) | 2015-04-03 |
CN106776379B (zh) | 2021-09-07 |
KR101604929B1 (ko) | 2016-03-18 |
WO2013016345A2 (en) | 2013-01-31 |
TW201333700A (zh) | 2013-08-16 |
JP2014526102A (ja) | 2014-10-02 |
JP6378733B2 (ja) | 2018-08-22 |
JP6032855B2 (ja) | 2016-11-30 |
GB201400358D0 (en) | 2014-02-26 |
US9916257B2 (en) | 2018-03-13 |
JP2017037672A (ja) | 2017-02-16 |
CN106776379A (zh) | 2017-05-31 |
DE202012007252U1 (de) | 2012-11-29 |
US20130031333A1 (en) | 2013-01-31 |
CN103827839A (zh) | 2014-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6378733B2 (ja) | 共有仮想メモリをサポートする異種コンピュータシステムにおけるtlbシュートダウンの方法および装置 | |
US9921968B2 (en) | Multi-core shared page miss handler | |
US9465670B2 (en) | Generational thread scheduler using reservations for fair scheduling | |
US20080005504A1 (en) | Global overflow method for virtualized transactional memory | |
US20080162868A1 (en) | Means to share translation lookaside buffer (TLB) entries between different contexts | |
US20140173203A1 (en) | Block Memory Engine | |
US10031848B2 (en) | Method and apparatus for improving snooping performance in a multi-core multi-processor | |
JP6663108B2 (ja) | 物理演算処理装置、情報処理装置及び情報処理装置の制御方法 | |
JP7359858B2 (ja) | 仮想化された環境におけるパススルーデバイスのための直接メモリアクセストラッキング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20190227 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20200227 Year of fee payment: 5 |