KR20180013924A - 메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화 - Google Patents

메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화 Download PDF

Info

Publication number
KR20180013924A
KR20180013924A KR1020177034178A KR20177034178A KR20180013924A KR 20180013924 A KR20180013924 A KR 20180013924A KR 1020177034178 A KR1020177034178 A KR 1020177034178A KR 20177034178 A KR20177034178 A KR 20177034178A KR 20180013924 A KR20180013924 A KR 20180013924A
Authority
KR
South Korea
Prior art keywords
translation
requests
address translation
cache
scheduler
Prior art date
Application number
KR1020177034178A
Other languages
English (en)
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 KR20180013924A publication Critical patent/KR20180013924A/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or 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/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

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)

Abstract

시스템들 및 방법들은 멀티스레드 메모리 관리 유닛(MMU)에서 어드레스 변환들을 수행하는 것과 관련된다. 2개 또는 그 초과의 어드레스 변환 요청들은 멀티스레드 MMU에 의해 수신되고 시스템 메모리의 어드레스들로의 어드레스 변환들을 리트리브하도록 병렬로 프로세싱될 수 있다. 어드레스 변환들이 멀티스레드 MMU의 변환 캐시에 존재하는 경우, 어드레스 변환들이 변환 캐시로부터 수신되고 변환된 어드레스들을 사용하여 시스템 메모리의 액세스를 위해 스케줄링될 수 있다. 변환 캐시에서 미스가 존재하는 경우, 2개 또는 그 초과의 어드레스 변환 요청들은 2개 또는 그 초과의 변환 테이블 워크들에서 병렬로 스케줄링될 수 있다.

Description

메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화
[0001] 본 특허 출원은 2015년 5월 29일 출원되고 발명의 명칭이 "MULTI-THREADED TRANSLATION AND TRANSACTION RE-ORDERING FOR MEMORY MANAGEMENT UNITS"이며, 본원의 양수인에게 양도되고 그리하여 본원에 인용에 의해 명시적으로 포함되는 가출원 번호 제62/168,712호를 우선권으로 주장한다.
[0002] 개시된 양상들은 MMU(memory management unit)들에 관한 것으로서, 보다 구체적으로, 예시적인 양상들은 다수의 변환들(translations)을 병렬로 처리하도록 구성된 멀티스레드 MMU(multithreaded MMU)들에 관한 것이다.
[0003] MMU(memory management unit)는 프로세서들 또는 주변 디바이스들(일반적으로, 업스트림 클라이언트 또는 디바이스로서 지칭됨)에 대해 어드레스 변환(및 다른 메모리 관리 기능들)을 수행하도록 구성된다. 예를 들어, MMU는 가상-물리적 메모리 어드레스 변환들을 수행하는 것으로 당분야에 알려진 바와 같은 TLB(translation lookaside buffer)를 포함할 수 있다.
[0004] 도 1을 참조하면, 종래의 MMU(104)는 업스트림 클라이언트 디바이스(102)로부터 클라이언트 입력 트랜잭션(116)(예를 들어, 어드레스의 판독 또는 기록 요청)을 수신하고, 변환이 클라이언트 입력 트랜잭션(116)에 대해 MMU(104)에 존재하는 경우, MMU(104)는 어드레스 변환을 수행한다. 어드레스 변환 정보는 클라이언트 입력 트랜잭션 요청(116)의 어드레스를 클라이언트 출력 트랜잭션(120)에 대한 어드레스로 변환하는데 사용된다.
[0005] MMU(104)는 도 1에서 보다 상세히 도시된다. MMU(104)는 이전에 완료된(또는 부분적으로 완료된) 변환들의 결과들을 저장하는 변환 캐시(108)를 포함할 수 있다. 변환 캐시(108)에 저장된 정보를 사용하여 변환될 수 없는 클라이언트 입력 트랜잭션들(116)은 TTW(translation table walker)(114)를 사용하여 "변환 테이블 워크(walk)"라고 불리는 프로세스를 수행함으로써 해결된다. 특정 클라이언트 입력 트랜잭션(116)에 대응하는 특정 엔트리(TTW 0(112)로 도시됨)는 변환 요청에 대한 변환 테이블 워크들을 수행하는데 사용된다. 일부 경우들에서, 변환 테이블 워크 요청들은 버스(120)를 통해 버스(124)로부터 시스템 메모리(106)로 전송될 수 있으며, 여기서 응답(122)은, 시스템 메모리(106)(다운스트림 디바이스)로부터 수신되고 변환 캐시(108)를 파퓰레이팅(populate)하는데 사용되는 대응하는 변환 정보를 포함할 수 있다. 일부 경우들에서, 클라이언트 출력 트랜잭션들은 버스(120) 상에서 전송될 수 있으며, 여기서 응답(122)은 클라이언트 출력 트랜잭션들과 관련될 수 있고 업스트림 클라이언트 디바이스(102)로 전송될 수 있다.
[0006] 다수의 클라이언트 입력 트랜잭션들(116)은 이들이 위의 방식으로 서비스될 수 있기 전에 수신될 수 있기 때문에, 클라이언트 입력 트랜잭션들(116)은 이들이 변환 캐시(108)에 액세스할 수 있기 전에 트랜잭션 큐(110)에 배치된다. 트랜잭션 큐(110)의 선두의 클라이언트 입력 트랜잭션들(116)은 변환 캐시(108)에 액세스하도록 연속적으로 허용된다. 트랜잭션 큐(110)의 선두의 클라이언트 입력 트랜잭션(116)에 대해 변환 캐시(108)에서 어떠한 변환도 발견되지 않는 경우, 트랜잭션 큐(110)의 모든 다른 트랜잭션들은, 트랜잭션 큐(110)의 선두의 클라이언트 입력 트랜잭션(116)에 대한 변환 결과가 시스템 메모리(106)의 액세스 및 TTW(114)를 사용한 변환 테이블 워크 프로세스로부터 획득될 때까지 대기하도록 강제된다. 트랜잭션 큐(110)의 선두의 클라이언트 입력 트랜잭션(116)에 대한 변환이 획득되는 시간 동안, MMU(104)는 정지되고, 따라서 MMU(104)의 성능은 저하된다.
[0007] 따라서, 당 분야에서는, 한 번에 단지 하나의 변환 테이블 워크만을 서비스할 수 있는 단일 변환 테이블 워커(예를 들어, TTW(114)) 및 한 번에 단지 하나의 트랜잭션만을 프로세싱할 수 있는 트랜잭션 큐(예를 들어, 트랜잭션 큐(110))를 포함하는 종래의 MMU들의 상술된 단점들을 극복할 필요가 있다.
[0008] 예시적인 양상들은 멀티스레드 메모리 관리 유닛(MMU)에서 어드레스 변환들을 수행하기 위한 시스템들 및 방법들과 관련된다. 2개 또는 그 초과의 어드레스 변환 요청들은 멀티스레드 MMU에 의해 수신되고, 이들이 멀티스레드 MMU의 변환 캐시에 존재하는 경우 어드레스 변환들을 리트리브하거나 변환 캐시에서 미스(miss)된 어드레스 변환 요청들에 대해 변환 테이블 워크들(translation table walks)을 병렬로 수행하도록 병렬로 프로세싱될 수 있다.
[0009] 예시적인 멀티스레드 MMU들은 다수의 클라이언트 요청들의 변환 및 트랜잭션 재순서화를 병렬로 수행하도록 구성될 수 있다. 따라서, 예시적인 멀티스레드 MMU에 의해 수신된 다수의 클라이언트 입력 트랜잭션들에 대해 동시성 멀티스레드 변환이 수행될 수 있다. 또한, 예시적인 멀티스레드 MMU들은 새롭게 변환된 트랜잭션들이 변환되기를 대기하는 구(older) 트랜잭션들을 우회(예를 들어, 종래의 MMU들에서의 트랜잭션 큐의 선두의 트랜잭션만을 서비스하는 것의 제한을 피함)하도록 허용하는 트랜잭션 재순서화를 수행하도록 구성된다.
[0010] 일부 양상들에서, 예시적인 멀티스레드 MMU들은 병렬로 다수의 스레드들의 변환을 돕기 위해 제공된 다수의 변환 테이블 워커들에 대한 요청들의 중복(duplication)을 피하기 위해 변환 요청들의 "사전-필터링"을 수행하도록 구성된다. 일부 양상들에서, 변환 캐시 필(translation cache fill)들의 중복을 피하기 위해, 변환 결과들의 "사후-필터링(post-filtering)"이 또한 수행될 수 있다. 또 다른 양상들에서, 예시적인 기술들은 다수의 요청들에 대한 변환 테이블 액세스들의 중복 또는 리던던시(redundancy)를 감소시킴으로써, 변환 테이블 워크들의 대역폭 소비를 감소시키기 위해 사용된다.
[0011] 이에 따라, 예시적인 양상은 하나 또는 그 초과의 업스트림 디바이스들로부터 2개 또는 그 초과의 어드레스 변환 요청들을 수신하도록 구성된 멀티스레드 메모리 관리 유닛(MMU)을 포함하는 장치에 관한 것이다. 멀티스레드 MMU는 시스템 메모리의 대응하는 변환된 어드레스를 획득하기 위해, 2개 또는 그 초과의 어드레스 변환 요청들 중 적어도 2개를 병렬로 프로세싱하도록 추가로 구성된다.
[0012] 다른 예시적인 양상은 어드레스 변환을 수행하는 방법에 관한 것이며, 이 방법은 2개 또는 그 초과의 어드레스 변환 요청들을 수신하는 단계 및 멀티스레드 메모리 관리 유닛(MMU)에서, 시스템 메모리의 대응하는 변환된 어드레스들을 획득하기 위해 2개 또는 그 초과의 어드레스 변환 요청들에 대한 2개 또는 그 초과의 어드레스 변환들을 병렬로 수행하는 단계를 포함한다.
[0013] 다른 예시적인 양상은 2개 또는 그 초과의 어드레스 변환 요청을 수신하기 위한 수단, 및 저장하기 위한 수단의 대응하는 변환된 어드레스들을 획득하도록 2개 또는 그 초과의 어드레스 변환 요청들에 대해 2개 또는 그 초과의 어드레스 변환들을 병렬로 수행하기 위한 수단을 포함하는 장치에 관한 것이다.
[0014] 또 다른 예시적인 양상은, 프로세서에 의해 실행될 때, 프로세서로 하여금 어드레스 변환을 위한 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터 판독 가능한 저장 매체에 관한 것이며, 비-일시적인 컴퓨터 판독 가능한 저장 매체는 2개 또는 그 초과의 어드레스 변환 요청들을 수신하기 위한 코드 및 시스템 메모리의 대응하는 변환된 어드레스들을 획득하도록 2개 또는 그 초과의 어드레스 변환 요청들에 대해 2개 또는 그 초과의 어드레스 변환들을 병렬로 수행하기 위한 코드를 포함한다.
[0015] 첨부 도면들은 본 발명의 양상들의 설명을 보조하도록 제시되며 본 개시의 제한이 아니라 양상들의 예시를 위해서만 제공된다.
[0016] 도 1은 종래의 MMU를 포함하는 시스템을 예시한다.
[0017] 도 2는 멀티스레드 MMU를 포함하는 예시적인 시스템을 예시한다.
[0018] 도 3a 및 도 3b는 도 2의 멀티스레드 MMU의 1차 스케줄러를 예시한다.
[0019] 도 4a 및 도 4b는 도 2의 멀티스레드 MMU의 2차 스케줄러를 예시한다.
[0020] 도 5는 멀티스레드 MMU를 포함하는 다른 예시적인 시스템을 예시한다.
[0021] 도 6 내지 도 7은 변환 테이블 액세스 필터와 관련된 양상들을 예시한다.
[0022] 도 8 내지 도 9는 변환 테이블 액세스 필터를 사용하는 방법들에 대한 흐름도들을 예시한다.
[0023] 도 10은 멀티스레드 MMU를 사용하여 변환 요청들을 프로세싱하는 방법의 흐름도이다.
[0024] 도 11은 본 개시의 양상이 유리하게 사용될 수 있는 예시적인 무선 디바이스를 예시한다.
[0025] 본 발명의 양상들은 본 발명의 특정 양상들에 관한 관련된 도면들 및 하기의 설명에서 개시된다. 대안적인 양상들은 본 발명의 범위로부터 벗어남 없이 안출될 수 있다. 추가로, 본 발명의 관련된 세부사항들을 모호하지 않게 하도록 본 발명의 잘 알려진 엘리먼트들은 상세하게 설명되지 않거나 생략될 것이다.
[0026] "예시적인"인 이란 단어는, "예, 경우 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. "예시적인" 것으로서 본원에서 설명되는 임의의 양상은 반드시 다른 양상들보다 선호되거나 유리한 것으로 해석될 필요는 없다. 마찬가지로, "본 발명의 양상들"이라는 용어는 본 발명의 모든 양상들이 논의된 특징, 이점 또는 동작 모드를 포함할 것을 요구하진 않는다.
[0027] 본원에서 이용된 용어는 특정 양상들만을 설명하기 위한 것이며 본 발명의 양상들을 제한하는 것으로 의도되지 않는다. 본원에서 이용되는 바와 같이, 단수 형태는 문맥이 달리 명확히 표시하지 않으면, 복수 형태들을 또한 포함하도록 의도된다. 용어들 "포함하다(comprises)", "포함하는 (comprising)", "갖다(includes)" 및/또는 "갖는 (including)"은 본원에서 이용될 때, 서술된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 컴포넌트들의 존재를 특정하지만, 하나 또는 그 초과의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지는 않는다는 것이 추가로 이해될 것이다.
[0028] 추가로, 다수의 양상들은 예를 들어, 컴퓨팅 디바이스들의 엘리먼트들에 의해 수행되는 동작들의 시퀀스들의 견지에서 설명된다. 본원에서 설명되는 다양한 동작들은 특정 회로들(예를 들어, 주문형 집적회로(ASIC)들)에 의해, 하나 또는 그 초과의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이 둘의 조합에 의해 수행될 수 있다는 것이 인지될 것이다. 부가적으로, 본원에서 설명되는 동작들의 이들 시퀀스는, 실행 시에, 연관된 프로세서가 본원에서 설명되는 기능성을 수행하게 하는 컴퓨터 명령들의 대응하는 세트를 저장하고 있는 임의의 형태의 컴퓨터 판독 가능한 저장 매체 내에서 완전히 실현되는 것으로 간주될 수 있다. 따라서, 본 발명의 다양한 양상들은 다수의 상이한 형태들로 실현될 수 있으며, 이들 모두는 청구되는 청구 대상의 범위 내에 있는 것으로 고려된다. 또한, 본원에서 설명되는 양상들 각각에 대해, 임의의 이러한 양상들의 대응하는 형태는 예를 들어, 설명된 동작을 수행"하도록 구성된 로직"으로서 본원에서 설명될 수 있다.
[0029] 본 개시의 예시적인 양상들은 2개 또는 그 초과의 클라이언트 요청들의 변환 및 트랜잭션 재순서화(reordering)를 병렬로 수행하도록 구성된 멀티스레드 MMU들에 관한 것이다. 따라서, 예시적인 멀티스레드 MMU에 의해 수신된 다수의 클라이언트 입력 트랜잭션들에 대해 동시성 멀티스레드 변환들이 수행될 수 있다. 예시적인 멀티스레드 MMU는 또한, 변환 요청들에 대해 새롭게 수신된 트랜잭션들이, 변환되기를 대기중인 구 트랜잭션들을 우회하도록 허용하는 트랜잭션 재순서화를 수행할 수 있다.
[0030] 일부 양상들에서, 예시적인 멀티스레드 MMU들은 병렬로 다수의 스레드들의 변환을 보조하기 위해 제공된 다수의 변환 테이블 워커들에 대한 요청들의 중복(duplication)을 피하기 위해 변환 요청들의 "사전-필터링"을 수행할 수 있다. 일부 양상들에서, 변환 캐시 필(translation cache fill)들의 중복을 피하기 위해, 변환 결과들의 "사후-필터링"이 또한 수행될 수 있다. 또 다른 양상들에서, 예시적인 기술들은 다수의 요청들에 대한 변환 테이블 액세스들의 중복 또는 리던던시를 감소시킴으로써, 변환 테이블 워크들의 대역폭 소비를 감소시키기 위해 사용될 수 있다.
[0031] 이제 도 2를 참조하면, 예시적인 양상들에 따라 멀티스레드 MMU로서 구성된 MMU(204)를 포함하는 프로세싱 시스템(200)이 예시된다. 일반적으로, MMU(204)는 업스트림 디바이스(202)로부터 클라이언트 입력 트랜잭션들(216)을 수신할 수 있다. 본 명세서에 사용된 바와 같이, "트랜잭션"이라는 용어는 시스템 메모리(206)를 판독/기록하는 요청들 그리고, 일부 경우들에서 요청들에 대한 응답을 또한 포함할 수 있다. 예를 들어, 클라이언트 입력 트랜잭션(216)은 시스템 메모리(206)를 판독/기록하는 요청 또는 시스템 메모리(206)의 특정된 어드레스로의 어드레스 변환들을 위한 어드레스 변환 요청을 포함할 수 있다. 업스트림 디바이스(202)는 단일 디바이스가 아니라, 임의의 범용 또는 특수 목적 프로세서, 예컨대, GPU(general processing unit), CPU(central processing unit), DSP(digital signal processor) 등을 포함하는 하나 또는 그 초과의 업스트림 디바이스들을 포함할 수 있다. 또한, 일부 경우들에서, 업스트림 디바이스(202)는 2개 또는 그 초과의 프로세싱 스레드들을 병렬로 프로세싱할 수 있는 멀티스레드 프로세서를 또한 포함할 수 있다. 따라서, 하나 또는 그 초과의 업스트림 디바이스들(202)은 시스템 메모리(206)의 어드레스들에 대한 어드레스 변환 요청들을 생성하도록 구성될 수 있으며, 여기서 어드레스 변환 요청들은 MMU(204)에 의해 클라이언트 입력 트랜잭션들(216)로서 수신될 수 있다.
[0032] 멀티스레드 변환(즉, 다수의 트랜잭션들의 동시성 프로세싱) 및 트랜잭션 재순서화를 지원하기 위해, 예시적인 양상들은 하나 또는 그 초과의 멀티스레드 스케줄러들을 포함할 수 있는 멀티스레드 MMU들에 관한 것이다. 도 2에 도시된 바와 같이, MMU(204)는 2개의 스케줄러들, 즉, 1차 스케줄러(210)(멀티스레딩될 수 있음) 및 2차 스케줄러(220)(또한 멀티스레딩될 수 있음)를 포함하며, 이는 아래의 섹션들에서 상세히 설명될 것이다.
[0033] 1차 스케줄러(210)는 클라이언트 입력 트랜잭션들(216)을 수신하고, 클라이언트 입력 트랜잭션들(216)이 수신된 순서와 동일하거나 상이할 수 있는 순서로 변환 요청들을 스케줄링한다. 1차 스케줄러(210)는 임의의 하나 또는 그 초과의 변환 결과들(211)이 변환 캐시(208)로부터 수신되기 전에 변환을 위해 변환 캐시(208)에 다수의 변환 요청들(209)을 발행(issue)할 수 있다. 이러한 의미에서, 1차 스케줄러(210)는 동시에 동작하는 다수의 변환 요청들을 가질 수 있다. 따라서, 1차 스케줄러(210)는 본 개시에서 "멀티스레딩"되는 것으로서 지칭될 수 있다. 1차 스케줄러(210)는, 클라이언트 입력 트랜잭션들(216)이 수신되는 순서와 동일하거나 상이할 수 있는 순서로, 클라이언트 출력 트랜잭션들(242)(이들이 변환 캐시(208)에 의해 일단 변환되었다면)을 시스템 메모리(206)에 전송할 수 있다. 따라서, 1차 스케줄러(210)는 2개 또는 그 초과의 변환 요청들을 변환 캐시(208)에 비순차적으로(out of order) 발행하도록 구성될 수 있다.
[0034] 2차 스케줄러(220)는 변환 요청들(230)(예를 들어, 1차 스케줄러(210)로부터 변환 캐시(208)로 전송되었지만, 변환 캐시(208)에서 미스(miss)됨) 또는 프리페치 엔진(prefetch engine)(222)으로부터의 변환 요청들(228)을 수신한다. 프리페치 엔진(222)은 트랜잭션들에 대한 요구가 발생하기 전에 트랜잭션들을 프리페치하도록 구성되는 별개의 프로세싱 모듈일 수 있다(예를 들어, 루프가 프로그램에서 인식되는 경우, 미리 결정된 패턴을 따르는 반복되는 요청들이 있을 것이란 점이 이해될 수 있고, 이에 따라 미래의 요청들은 이들에 대한 요구가 발생한 후에 이들을 프리페치하는데 있어 초래될 수 있는 임의의 레이턴시들을 피하기 위해 미리 페치될 수 있음). 2차 스케줄러(220)는 변환 요청들(228, 230)이 수신되었던 순서와 동일하거나 상이한 순서로 변환 요청들(236)을 발행할 수 있다. 또한, 2차 스케줄러(220)는 임의의 하나 또는 그 초과의 변환 결과들(238, 240)이 수신되기 전에 다수의 변환 요청들(236)을 발행할 수 있다. 이러한 의미에서, 2차 스케줄러(220)는 동시에 동작하는 다수의 변환 요청들을 또한 가질 수 있고, 따라서 본 개시의 일부 양상들에서, "멀티스레딩"되는 것으로서 또한 지칭될 수 있다.
[0035] 일 양상에서, 2차 스케줄러(220)는, TTW(translation table walker)(214)에 요청들(236)을 전송함으로써(수신 순서와 동일하거나 상이한 순서로) 프리페치 엔진(222)으로부터의 요청들(228)(또는 "프리페치 어드레스 변환 요청들") 또는 변환 캐시(208)에서 미스된 요청들(230)에 대해 변환 테이블 워크들을 스케줄링하도록 구성된다. 이와 관련하여, 2차 스케줄러(220)는 사전-필터(224) 및 사후-필터(226)를 포함하며, 그 기능들은 아래에서 간략히 소개되고 이하의 섹션들에서 설명될 것이다.
[0036] 관련없는 또는 리던던트(redundant) 요청들(236)이 TTW(214)에 대해 이루어질 수 있는 것이 가능하다. 사전-필터(224)는 TTW(214)에 대해 이루어진 관련없는 또는 리던던트 요청들(236)을 감소시키도록 구성된다. 다른 한편, 사후-필터(226)는 관련없는 또는 리던던트 변환 캐시 필들 또는 변환 결과들(238, 240)을 감소시키도록 구성된다.
[0037] 도 2로부터 또한 관찰되는 바와 같이, TTW(214)는 2개 또는 그 초과의 독립적인 변환 테이블 워커들(각각 TTW(212a-n)로서 지정된 TTW0 내지 TTWn-1)을 포함한다. TTW들(212a-n)은 병렬로 다수의 요청들(236)에 대한 변환 테이블 워크들을 수행하기 위해 독립적으로 그리고 동시에 동작할 수 있다. 따라서, TTW(214)는 또한 본 개시에서 "멀티스레딩"되는 것으로서 지칭될 수 있다.
[0038] 이제 도 3a를 참조하면, 1차 스케줄러(210)의 확대도가 예시된다. 도시된 바와 같이, 1차 스케줄러(210)는 본원에서 1차 스케줄러 슬롯들로서 지칭되는 하나 또는 그 초과의 스케줄러 엔트리들을 포함할 수 있다. 도 3a에서, N개의 1차 스케줄러 슬롯들(0 내지 N-1)이 도시되고, 슬롯들(304a-n)로서 지정된다. 슬롯들(304a-n)은 아래의 도 3b를 참조하여 추가로 상세히 도시되고 설명된다. 이전에 설명된 클라이언트 입력 트랜잭션들(216)은 또한 1차 스케줄러(210)에 대한 입력으로서 도시된다. 1차 스케줄러(210)에 의해 수신된 각각의 클라이언트 입력 트랜잭션(216)은 어드레스 정보를 포함할 수 있지만, 일부 클라이언트 입력 트랜잭션들(216)에 대해 어드레스 변환이 수행되지 않을 수 있는 것이 가능하다. 1차 스케줄러(210)에 의해 전송된 변환 요청들(209)에 대응하는, 1차 스케줄러(210)에 의해 수신된 변환 결과들(211)이 또한 도시된다. 1차 스케줄러(210)는 변환 캐시(208) ― 이곳에서부터 변환 요청들(209)이 2차 스케줄러(220)로 전달될 수 있음 ― (이 경우, 변환 캐시(208)에서 미스가 존재함)에, 어드레스 변환이 요청되거나 특정되는 모든 클라이언트 입력 트랜잭션들(216)에 대한 변환 요청들(209)을 전송한다. 1차 스케줄러(210)는 클라이언트 출력 트랜잭션들(242)을 메모리(206)에 출력하며, 여기서 출력 트랜잭션들(242)은 MMU(204)에 의해 프로세싱된 클라이언트 입력 트랜잭션들(216)에 대응한다. 따라서, 출력 트랜잭션들(242)은, 변환된 클라이언트 입력 트랜잭션들(216) 또는 어드레스 변환이 요청되지 않거나 수행되지 않은 클라이언트 입력 트랜잭션들(216)에 대응한다.
[0039] 이제 도 3a 및 도 3b를 함께 참조하면, 1차 스케줄러(210)가 하나 또는 그 초과의 클라이언트 입력 트랜잭션들(216)을 수신할 때, 1차 스케줄러(210)는 하나 또는 그 초과의 클라이언트 입력 트랜잭션들(216)을 병렬로 저장하고 동작하도록 구성된다. 이와 관련하여, 각각의 클라이언트 입력 트랜잭션들(216)은 하나 또는 그 초과의 슬롯들(304a-n) 중 대응하는 슬롯에 저장되는 반면에, 대응하는 어드레스 변환 요청들은, 예를 들어, 변환 요청에 대한 응답이 수신될 때까지 프로세싱되고, 대응하는 클라이언트 입력 트랜잭션들(216)은 이후에 1차 스케줄러(210)로부터 제거된다. 변환이 수행되지 않을 것으로 결정되는 경우, 대응하는 변환 요청의 프로세싱은 또한 완료된 것으로서 취급될 것이고 대응하는 클라이언트 입력 트랜잭션(216)이 1차 스케줄러(210)로부터 제거될 것이다. 슬롯들(304a-n)(예를 들어, 도 3b에서 특별히 예시된 슬롯들(0-7)에 대응함)은 프로그래밍 가능한 방식으로 (예를 들어, 에이전트들의 특정 분류들에 기초하여 상이한 에이전트에) 할당될 수 있거나, 고정된 방식으로, 업스트림 클라이언트 디바이스(202)의 특정 에이전트들에 대응하도록 할당될 수 있다.
[0040] 예를 들어, 업스트림 클라이언트 디바이스(202)는 하나 또는 그 초과의 에이전트들(예를 들어, 에이전트 A, B 등)로 구성될 수 있으며, 여기서 하나 또는 그 초과의 요청들의 그룹은 에이전트에 대응할 수 있다. 에이전트들은 그룹들 또는 부류들로 분류될 수 있다. 각각의 분류는, 에이전트들의 각각의 그룹/부류가 1차 스케줄러(210)에 발행할 수 있는 변환 요청들의 양에 대한 최소 및 최대 제한들에 기초할 수 있다. 도 3b에서 알 수 있는 바와 같이, 일부 슬롯들은 특정 에이전트들에 대해(예를 들어, 슬롯들(0 및 1)은 에이전트 A에 대해, 슬롯들(2 및 3)은 에이전트 B에 대해) 예약될 수 있고, 일부 슬롯들(예를 들어, 슬롯들(4 내지 7))은 모든 에이전트들에 대해 이용 가능할 수 있다. 다음 조건들이 참일 때 즉, (1) 에이전트가 MMU(204)에 발행하기 위해 이용 가능한 클라이언트 입력 트랜잭션(216)(예를 들어, 변환 요청)을 갖고; (2) 1차 스케줄러(210)가 모든 에이전트들에 대응하는 슬롯들(304a-n)의 최소 할당을 만족시키도록 이용 가능하고 사용중이지 않은 충분한 슬롯들(304a-n)을 갖고; 그리고 (3) 1차 스케줄러(210)가 에이전트에 대해 허용된 슬롯들(304a-n)의 최대 수 보다 적게 현재 서비스하고 있을 때, 업스트림 클라이언트 디바이스(202)의 특정 에이전트는 그의 변환 요청들이 1차 스케줄러(210)에 의해 프로세싱되게 할 수 있다.
[0041] 위의 조건들을 시행하거나 구현하기 위해, 중재 유닛(302)이 1차 스케줄러(210)에 제공된다. 클라이언트 업스트림 디바이스(202)의 다수의 에이전트들이 동시에 위의 3개의 조건들을 충족시키는 경우, 중재 유닛(302)은 어느 에이전트의 클라이언트 입력 트랜잭션(216)이 1차 스케줄러(210)에 의해 먼저 수용되는지를 결정하기 위한 중재 정책을 구현하도록 구성된다. 몇 개의 타입들의 중재 정책들, 예컨대, 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 클라이언트 입력 트랜잭션(216)이 먼저 서비스됨), 프로그래밍 가능한 우선순위(예를 들어, 에이전트 A로부터의 요청들이 에이전트 B로부터의 요청들보다 우선순위가 더 높게 되도록 프로그래밍될 수 있음)) 또는 당 분야에 알려진 임의의 다른 우선순위 -기반 중재 정책이 이와 관련하여 중재 유닛(302)에 의해 구현될 수 있다.
[0042] 중재 유닛(302)을 통과한 후에, 1차 스케줄러(210)에 의한 프로세싱에 적격인 것으로 결정된 클라이언트 입력 트랜잭션들(216)은 이용 가능하거나 비어있는 슬롯들(304a-n)에 큐잉되거나 배치된다. 명시적으로 도시되지 않았지만, 슬롯들(304a-n) 각각은 또한, 그것과 연관된 상태를 가질 수 있으며, 여기서 슬롯의 상태는 슬롯에 저장된 클라이언트 입력 트랜잭션(216)에 대한 어드레스 변환의 스테이터스(status)를 포함한다. 다음의 상태들 (1)-(4)는 본 개시에서 스케줄러들의 슬롯들과 연관될 수 있지만, 이것이 총망라하는 리스트는 아니며, 변동들/추가들이 가능하다: (1) "변환 캐시 룩업을 대기중(waiting for translation cache lookup)"(예를 들어, 변환 요청(209)이 스케줄링될 것이고 어드레스 변환이 수행될 때); (2) "변환이 진행중(translation is progress)"(예를 들어, 변환 요청(209)이 스케줄링되었고 이제 변환 결과(211)를 대기중일 때); (3) "어떠한 변환도 수행되지 않을 것이기 때문에 메모리 액세스를 대기중(waiting for memory access since no translation is to be performed)"(예를 들어, 변환이 수행될 것을 클라이언트 출력 트랜잭션(242)이 지정하지 않지만 메모리 액세스에 대해 스케줄링될 때); (4) "변환 완료(translation completed)"(예를 들어, 대응하는 변환 결과(211)가 수신되었고(이 시점에서, 변환은 완료된 것으로 간주됨), 트랜잭션이 클라이언트 출력 트랜잭션(242)으로서 메모리 액세스들에 대해 스케줄링될 때).
[0043] 따라서, 클라이언트 입력 트랜잭션(216)이 배치되는 슬롯의 상태는, "변환 캐시 룩업을 대기중"(어드레스 변환이 수행될 경우) 또는 "어떠한 변환도 수행되지 않을 것이기 때문에 메모리 액세스를 대기중"(어떠한 어드레스 변환도 수행되지 않을 경우) 중 하나로 업데이트된다.
[0044] 1차 스케줄러(210)에 의해 위의 방식으로 수신되어 슬롯들(304a-n) 중 하나에 저장되는 각각의 클라이언트 입력 트랜잭션(216)은 결국 MMU(204)에 의해 프로세싱된다. 클라이언트 입력 트랜잭션(216)이 변환이 수행될 트랜잭션으로서 지정되는 경우, 대응하는 변환 요청은 스케줄링 알고리즘을 사용하여 스케줄링된다. 이 시점에서, 2차 스케줄러(220)는 1차 스케줄러(210)의 슬롯들(304a-n)과 유사한 슬롯들을 또한 갖는다는 것이 이해될 것이며, 2차 스케줄러(220)의 슬롯들은 아래의 섹션들에서 추가로 상세히 설명될 것이다. 변환 요청을 스케줄링하는 것과 관련하여, 2차 스케줄러(220)에서 이용 가능한, 할당되지 않은 또는 비어있는 슬롯 및 1차 스케줄러(210)의 하나 또는 그 초과의 슬롯들(304a-n)이 클라이언트 입력 트랜잭션들(216)(이들의 상태들은 "변환 캐시 룩업을 대기중"으로 세팅됨)을 보유하는 경우, 클라이언트 입력 트랜잭션(216)에 대한 변환 요청이 변환 캐시(208) 또는 2차 스케줄러(220)에 발행된다.
[0045] 슬롯들(304a-n)의 다수의 클라이언트 입력 트랜잭션들(216)이 "변환 캐시 룩업을 대기중"으로 세팅된 그의 상태들을 갖는 경우, 1차 스케줄러(210)의 메모리 변환 스케줄링(308)으로서 도시된 블록은 다수의 클라이언트 입력 트랜잭션들(216)(각각이 슬롯들(304a-n) 중 하나에 저장됨) 사이에서, 스케줄링 알고리즘을 이용하여 중재하도록 구성된다. 스케줄링 알고리즘은 중재 알고리즘들, 예컨대, 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 클라이언트 입력 트랜잭션들(216)이 먼저 스케줄링됨), 프로그래밍 가능한 우선순위(예를 들어, 에이전트들에 기초한 우선순위 또는 클라이언트 입력 트랜잭션들(216)과 연관된 우선순위 기반 시그널링), 또는 당 분야에 알려진 다른 적합한 우선순위-기반 선택 메커니즘을 포함할 수 있다.
[0046] 클라이언트 입력 트랜잭션(216)이 변환 요청(209)으로서 변환 캐시(208)에 발행되도록 선택될 때, 클라이언트 입력 트랜잭션(216)의 대응하는 슬롯(304a-n)은 "변환이 진행중"으로 업데이트된다. 변환 캐시(208)는 하나 또는 그 초과의 변환 요청들(209)을 수신하고, 변환 캐시(208)가 대응하는 변환들을 포함하는지를 검사하기 위해 캐시 룩업이 수행된다. 변환 캐시(208)에 하나 또는 그 초과의 히트(hit)가 존재하는 경우, 즉, 특정 변환 요청들(209)에 대해 변환 캐시(208)에 대응하는 변환들이 존재하는 경우(본 개시에서 "히트 어드레스 변환 요청(hitting address translation request)"로서 또한 지칭됨), 변환 캐시(208)는 1차 스케줄러(210)에 변환 결과들(211)을 포워딩하고, 대응하는 슬롯들(이로부터 특정 변환 요청들(209)이 전송됨)의 상태는 "변환 완료"로 업데이트된다. 한편, 하나 또는 그 초과의 미스(miss)가 존재하고, 하나 또는 그 초과의 변환 요청들(209)에 대해 변환 캐시(208)에 대응하는 변환들이 존재하지 않는 경우(본 개시에서 "미스 어드레스 변환 요청(missing address translation request)"으로서 또한 지칭됨), 2차 스케줄러(220)는 TTW(translation table walker)(214)의 TTW들(212a-n) 중 하나 또는 그 초과에 대해 대응하는 하나 또는 그 초과의 변환 요청들(236)을 스케줄링하도록 액세스된다(도 2 참조). 변환 결과들(238/240)이 TTW(214)로부터 수신되면, 변환 결과들은 1차 스케줄러(210)로(변환 결과들(232/234)을 통해 변환 캐시(208) 및 변환 캐시(208) 상으로 그리고 변환 결과들(211)을 통해 1차 스케줄러로) 포워딩된다.
[0047] TTW(214)를 통해 변환 캐시(208) 또는 2차 스케줄러(220)가 특정 변환 요청(209)에 대한 변환을 완료하고 변환 결과(211)가 1차 스케줄러(210)로 리턴될 때, 1차 스케줄러(210)는 다음의 동작들을 수행함으로써, 즉, (1) 변환 요청(209)을 발행한 대응하는 슬롯(304a-n)에 변환 결과들(211)이 저장되고; (2) 대응하는 슬롯(304a-n)의 상태는 "변환 완료"로서 표시됨으로써; 변환 결과들(211)을 프로세싱한다. 다수의 변환 결과들(211)이 동시에 이용 가능한 경우, 1차 스케줄러(210)는 프로세싱을 위해 어느 변환 결과(211)가 먼저 수신될지를 선택하도록 구성된다. 이와 관련하여, TTW(214)는, 라운드 로빈 또는 고정된 우선순위(가장 오래된 변환 결과(211)가 먼저 프로세싱됨), 프로그래밍 가능한 우선순위, 또는 당 분야에 알려진 다른 우선순위-기반 선택 메커니즘과 같은 알고리즘들에 기초하여 변환 결과들(211) 사이에서 중재하도록 구성된다.
[0048] 따라서, 1차 스케줄러(210)는 변환 결과들(211)을 OOO(out of order)로 수신할 수 있으며, 이는 위에서 논의된 중재 방식들을 사용하여 프로세싱될 수 있다. 프로세싱이 "완료됨"(변환이 요청/수행되지 않은 슬롯들을 포함함)을 그의 스테이터스가 표시하는 모든 슬롯들(304a-n)에 대해, 어느 완료된 트랜잭션(242)이 시스템 메모리(206)로 발행되는지를 결정하기 위해 스케줄링 알고리즘이 이용된다. 이와 관련하여, 스케줄링 알고리즘은, 순서화(ordering) 규칙들이 준수되고, 순서화 위험을 생성하는 슬롯들(304a-n)의 임의의 클라이언트 입력 트랜잭션들(216)은 시스템 메모리(206)에 스케줄링되기에 적격이 아님을 보장하도록 설계된다. 위험들을 피하기 위한 예시적인 재순서화 규칙은 다음의 섹션에서 설명된다. 스케줄링 알고리즘은 시스템 메모리(206)에 발행되기에 적격인 것으로 결정된 최고 우선순위 출력 트랜잭션(242)을 선택하도록 설계될 수 있다. 출력 트랜잭션들(242)에 대한 우선순위는 각각의 클라이언트 입력 트랜잭션(216), 또는 클라이언트 입력 트랜잭션들(216)을 발행한 (클라이언트 업스트림 디바이스(202)의 "마스터"로서 또한 지칭되는) 에이전트의 타입과 연관된 (예를 들어, 서비스 품질(QoS) 메트릭에 기초한) 우선순위와 연관될 수 있다. 출력 트랜잭션들(242)을 시스템 메모리(206)에 발행하는 것은 또한, 1차 스케줄러(210)로부터 대응하는 클라이언트 입력 트랜잭션(216)을 제거하는 것을 포함하는데, 즉 대응하는 클라이언트 입력 트랜잭션(216)은 그의 대응하는 슬롯(304a-n)으로부터 할당해제된다.
[0049] 재순서화 위험들을 회피하기 위한 적용 가능한 재순서화 규칙들이 이제 설명될 것이다. 시스템 메모리(206)가 약하게 순서화된 메모리인 경우, 재순서화 위험들을 피하기 위해, 1차 스케줄러(210)는, RAW(read-after-write) , WAW(write-after-write) 및 WAR(write-after-read) 위험들이 당 분야에서 알려져 있기 때문에, (1) 임의의 2개의 출력 트랜잭션들(242)을 재순서화하는 것이 RAW 위험을 생성하지 않아야 하고; (2) 임의의 2개의 출력 트랜잭션들(242)을 재순서화하는 것이 WAW 위험을 생성하지 않아야 하고; 그리고 (3) 임의의 2개의 출력 트랜잭션들(242)을 재순서화하는 것이 WAR 위험들을 생성하지 않아야 한다는 것을 보장하도록 구성된다.
[0050] 다른 한편, 시스템 메모리(206)가 강하게 또는 엄격하게 순서화된 메모리인 경우, 재순서화 위험들을 피하기 위해, 1차 스케줄러(210)는 임의의 2개의 출력 트랜잭션들(242)을 재순서화하는 것이 엄격한 순서화 위험을 생성하지 않아야 한다는 것을 보장하도록 구성된다. 2개의 출력 트랜잭션(242)이 동일한 에이전트에 의해 생성된 클라이언트 입력 트랜잭션들(216)로부터 발생되고 2개의 출력 트랜잭션들(242)이 엄격한 순서화를 위해 지정된 경우, 출력 트랜잭션들(242)은 재순서화될 수 없다.
[0051] 일부 경우들에서, 다음의 부가적인 재순서화 규칙들이 또한 적용될 수 있다. 이와 관련하여, 1차 스케줄러는 재순서화가 다음의 위험들, 즉 (1) 임의의 2개의 출력 트랜잭션들(242)을 재순서화하는 것이 인-오더 위험(in-order hazard)을 생성하지 않아야 한다는 것을 보장해야 한다. 2개의 출력 트랜잭션들(242)이 동일한 에이전트에 의해 생성된 클라이언트 입력 트랜잭션들(216)로부터 발생하고 2개의 출력 트랜잭션들(242)이 발행된 동일 순서로만 에이전트가 응답들(244)을 수신할 수 있는 경우, 에이전트는 "인-오더 응답이 특정된(in-order response is specified)" 것으로 간주되고, (당 분야에 알려진 바와 같은) 어떠한 응답 재순서화 버퍼들이 구현되지 않는 경우 2개의 출력 트랜잭션들(242)(둘 모두 "인-오더"로 표시됨)은 재순서화될 수 없다. 응답 재순서화 버퍼들이 구현되는 경우, 위에서 언급된 2개의 출력 트랜잭션들(242)이 재정렬될 수 있고, 응답 재정렬 버퍼들은 오리지날 순서를 재구성하도록 구성되어 "인-오더 응답이 특정된" 에이전트가 예상된 순서로 응답들(244)을 다시 수신한다.
[0052] 이제 도 4a 내지 도 4b를 참조하면, 2차 스케줄러(220)가 상세히 설명될 것이다. 도 2를 다시 참조하면, 변환 요청(228/230)이 프리페치 엔진(222) 또는 변환 캐시(208)로부터 각각 수신될 때, 2차 스케줄러는 또한 하나 또는 그 초과의(예를 들어, M개의) 변환 요청들(228/230)을 병렬로 저장하고 동작하도록 구성된다. 1차 스케줄러(210)의 슬롯들(304a-n)과 유사하게, 2차 스케줄러(220)에 의해 수신된 변환 요청들(228/230)은, 변환 결과들(238/240)이 TTW(214)로부터 수신될 때까지, 슬롯들(0 ― M-1)로서 도시되고 슬롯들(404a-m)로서 지정된 M개의 2차 스케줄러 슬롯들 중 하나 또는 그 초과에 저장된다.
[0053] 슬롯들(404a-m)은 프로그래밍 가능한 또는 고정된 방식으로, (이전에 논의된 바와 같이) 클라이언트 입력 트랜잭션들(216)이 발생한 에이전트들의 상이한 분류들에 기초하여 에이전트들에 할당될 수 있다. 다시 한번, 각각의 분류는 2차 스케줄러(220)에 발행될 수 있는, 에이전트들의 각각의 그룹/부류들로부터의 변환 요청량들의 최소/최대 제한들에 기초할 수 있다. 에이전트는, 다음 조건들이 충족될 때, 즉, (1) 에이전트가 이용 가능한 변환 요청(228/230)을 갖고; (2) 2차 스케줄러(220)는 모든 에이전트들에 대한 최소 슬롯 할당을 만족시키기에 충분한 이용 가능한 슬롯들(404a-m)을 갖고; 그리고 (3) 2차 스케줄러(220)가 요청 에이전트에 대해 허용된 슬롯들(404a-m)의 최대수보다 적게 현재 서비스하고 있을 때, 그의 변환 요청들(228/230)이 2차 스케줄러(220)에 의해 프로세싱되게 하기에 적격이다. 따라서, 일부 슬롯들은 특정 에이전트들에 대해(예를 들어, 슬롯들(0 및 1)은 에이전트 A에 대해, 슬롯들(2 및 3)은 에이전트 B에 대해) 예약될 수 있고, 일부 슬롯들(예를 들어, 슬롯들(4 내지 7))은 모든 에이전트들에 대해 이용 가능할 수 있다는 것이 도 4b로부터 알 수 있다.
[0054] 다수의 에이전트들이 위의 조건들을 동시에 충족하는 경우, 중재 블록(402)은 어느 변환 요청(228/230)이 먼저 프로세싱되는지를 결정하기 위한 중재 정책을 구현하도록 구성된다. 중재 정책은 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 변환 요청(228/230)이 먼저 프로세싱됨), 프로그래밍 가능한 우선순위(예를 들어, 클라이언트 입력 트랜잭션들(216)로부터의 변환 요청들(230)이 프리페치 엔진(222)으로부터의 변환 요청들(228)보다 우선시됨), 또는 당 분야에 알려진 다른 우선순위-기반 중재 정책일 수 있다.
[0055] 중재 블록(402)에 의해 변환 요청들(228/230)을 수신하고 변환 요청들(228/230)을 선택할 때, 변환 요청들(228/230)이 대응하는 슬롯들(404a-m)에 할당되고 슬롯의 상태(도시되지 않음)는 "변환을 대기중"(도 2의 사전-필터링 블록(224)을 참조하여 다음의 섹션들에서 논의될 바와 같이, 변환 요청들(228/230)이 사전-필터링에 적격이 아닌 경우) 또는 "X를 대기중"(변환 요청들(228/230)이 사전-필터링에 적격인 경우, 그리고 여기서 X는 이전의 변환 요청(236)의 슬롯에 대응함)으로 표시된다.
[0056] 슬롯들(404a-m)에서 수신되고 저장되는 각각의 변환 요청(228/230)은 결국 TTW(214)의 TTW들(212a-n) 중 하나에 발행된다(각각의 TTW(212a-n)는 한번에 하나의 변환 테이블 워크를 서비스하도록 구성됨). 미할당 TTW(212a-n)가 변환 요청(228/230)을 수신하는데 이용 가능하고 하나 또는 그 초과의 슬롯들(404a-m)이, 그의 상태가 "변환을 대기중"인 변환 요청들(228/230)을 보유하는 경우, 변환 요청(228/230)이 TTW(212a-n)에 발행된다.
[0057] 슬롯들(404a-m)에 저장된 하나 초과의 변환 요청(228/230)이 상태 "변환을 대기중"을 갖는 경우, 스케줄링 블록(406)은, 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 변환 요청(228/230)이 먼저 스케줄링됨), 프로그래밍 가능한 우선순위(예를 들어, 변환 요청(228/230)이 발생된 에이전트에 기초한 우선순위), 또는 당 분야에 알려진 다른 우선순위-기반 선택 메커니즘과 같은 스케줄링 알고리즘에 기초하여 이들 사이에서 중재하도록 구성된다.
[0058] 변환 요청(228/230)이 TTW들(212a-n) 중 하나에 발행되도록 스케줄링될 때, 변환 요청(228/230)을 보유하는 슬롯(404a-m)의 상태는 "변환이 진행중"으로 업데이트된다. 대응하는 TTW(212a-n)는 변환 요청들(228/230)을 프로세싱하기 위해 다음 동작들, 즉, (1) 2차 변환 캐시(도시되지 않음)를 참고(consult)하고; (2) 변환을 완료하기 위해 변환 테이블 워크들을 수행하고; (3) TTW(212a-n)로부터의 결과들을, 완전한 또는 부분적인 변환들을 저장할 수 있는 변환 캐시들(예를 들어, 변환 캐시(208))로 리턴하고; 또는 (4) TTW(212a-n)로부터의 결과들을 2차 스케줄러(220)로 리턴하는 것 중 하나 또는 그 초과를 수행할 것이다.
[0059] 2차 스케줄러(220)가 TTW들(212a-n)로부터 변환 결과들(238/240)을 수신할 때, 2차 스케줄러(220)는 슬롯들(404a-m)의 변환 결과들(238/240)을 프로세싱하고 대응하는 슬롯을 "변환 완료"로서 표시한다. 하나 초과의 변환 결과들(238/240)이 동시에 리턴되는 경우, TTW(214)는 예를 들어, 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 변환 결과들(238/240)이 먼저 프로세싱됨), 프로그래밍 가능한 우선순위(예를 들어, 변환 요청들(228/230)이 발생된 에이전트에 기초한 우선순위), 또는 당 분야에 알려진 다른 우선순위-기반 선택 메커니즘들과 같은 알고리즘들에 기초하여 어느 결과가 먼저 프로세싱될지를 선택한다.
[0060] 2차 스케줄러에 의해 수신된 변환 결과들(238/240)은 다음 방식으로 리턴되거나 디-큐잉(de-queuing)된다. 그의 스테이터스가 "변환 완료"로 표시된 슬롯들(404a-m)이 선택되고 그 안에 포함된 변환 결과들(238/240)이 (변환 캐시(208)를 통해) 1차 스케줄러(210)로 리턴된다. 프리페치 요청들(변환 요청들(228))에 대응하는 변환 결과들(238/240)을 포함하는 슬롯들(404a-n)에 대해, 출력 트랜잭션(242)이 프리페치 요청들에 대해 생성되지 않기 때문에 어떠한 추가의 조치도 취해지지 않고, 이에 따라 슬롯(404a-m)은 할당해제(해방)될 수 있다.
[0061] 그의 스테이터스가 "변환 완료"인 모든 슬롯들(404a-m)로부터의 변환 결과들(238/240)은, 하나 초과가 동시에 리턴될 준비가 되어있는 경우, 중재 프로세스를 통해 전송될 수 있다. 중재 프로세스는 라운드 로빈 또는 고정된 우선순위(예를 들어, 가장 오래된 변환 결과(238/240)가 먼저 리턴됨), 프로그래밍 가능한 우선순위(예를 들어, 대응하는 변환 요청(230)이 발생된 에이전트에 기초한 우선순위), 또는 당 분야에 알려진 다른 우선순위-기반 선택 메커니즘을 포함할 수 있다. 변환 결과(238/240)가 변환 요청(230)이 발생된 에이전트로 리턴되면, 대응하는 슬롯(404a-m)은 할당해제(해방)된다.
[0062] 위에서 언급된 바와 같이, 2개 또는 그 초과의 TTW들(212a-n)이 동시에 동작할 수 있다. 각각의 TTW(212a-n)는 필요한 변환 캐시 룩업들 및 메모리 액세스들(변환 테이블 워크들)을 수행하여 수신된 변환 요청(236)에 대한 어드레스를 변환할 수 있다. 각각의 TTW(212a-n)는 캐시 필 요청들을 발행하고 변환 결과들(238/240)을 2차 스케줄러(220)에 포워딩할 수 있다. 2차 스케줄러(220)는 변환 결과들(238/240)을 중재하여 필요에 따라 적절한 목적지로 포워딩할 수 있다.
[0063] 도 2를 다시 참조하면, 사전-필터링 블록(224)이 이제 추가로 상세히 설명될 것이다. 2차 스케줄러(220)는 다수의 변환 요청들(236)을 병렬로 변환하는 프로세스에 관련된 리던던시가 최소화되도록 사전-필터링을 수행하게 구성된다. 위의 논의들로부터, 다수의 변환 요청들(236)(즉, 미스 어드레스 변환 요청들)을 변환하는 프로세스는 변환 테이블 워크들을 위한 (예를 들어, 시스템 메모리(206)에 대한) 메모리 액세스들, 변환 캐시 룩업들, 변환 요청들(236)을 프로세싱하기 위한 TTW들(212a-n)과 같은 자원들의 할당 등을 포함한다는 것이 이해된다.
[0064] 예를 들어, 다수의 변환 요청들(236)이 주어진 어드레스 공간의 동일한 변환 그래뉼 크기(예를 들어, 예시적인 MMU(204)에 대한 최소 변환 그래뉼 크기일 수 있는 4KB 그래뉼 크기)에 대한 변환을 요청할 때, 사전-필터링 블록(224)은 유사한 미스 어드레스 변환 요청들의 감소된 수(예를 들어, 하나)만 제외하고 모든 중복을 필터링, 억제 또는 회피하고 다수의 변환 요청들(236)의 감소된 수(예를 들어, 1) 중 하나만을 프로세싱을 위해 TTW(212a-n)에 포워딩하도록 구성된다. 그 후, 사전-필터링 블록(224)은 하나 또는 그 초과의 후속 변환 요청들(236)에 대한 하나의 변환 또는 "초기" 변환의 변환 결과들(238/240)을 사용할 수 있다. 어느 요청들이 유사한지를 결정하기 위해, 사전-필터링 블록(224)은 프리페치 엔진(222) 또는 1차 스케줄러(변환 캐시(208)에서 미스됨) 각각으로부터, 2차 스케줄러(220)에서 수신된 변환 요청들(228/230)을 검사한다. 변환 요청들(230)과 관련된 어드레스(및 동작 환경/어드레스 공간을 식별하는 다른 정보)가 결정되고, 현재 2차 스케줄러(220)에 의해 서비스되는 모든 다른 변환 요청들(236)(즉, 그들의 스테이터스들이 그들의 대응하는 슬롯들(404a-m)에서 "변환이 진행중" 또는 "변환을 대기중"임)의 어드레스들과 비교된다. 입력 어드레스들이 동일한 변환 그래뉼(예를 들어, 동일한 4KB 블록) 내에 있고 동작 환경/어드레스 공간을 식별하는 다른 모든 정보가 동일한 경우 매칭하거나 유사한 요청이 발견된다.
[0065] 매칭이 발견되는 경우, 새롭게 수신된 변환 요청(236)을 포함하는 슬롯(404a-m)의 스테이터스는 "변환을 대기중" 대신에 "X를 대기 중"으로서 표시되며, 여기서 X는 매칭하는 변환 요청(236)을 포함하는 슬롯(404a-m)이다. TTW(212a-n)가 슬롯 X에 대한 변환 결과(238/240)를 리턴할 때, 그의 스테이터스가 "X를 대기중"인 슬롯(404a-m)은 변환 결과(238/240)로 업데이트되고 그의 스테이터스는 "완료된 변환"으로 업데이트된다. 대안적인 양상들에서, 그의 스테이터스가 "X를 대기중"인 슬롯(404a-m)을 업데이트하는 대신, 슬롯 X에 대한 변환 결과(238/240)가 업데이트될 때까지, "X를 대기중"인 슬롯에 대한 변환 캐시 룩업(또는 TTW(212a-n)에 의한 프로세싱)은 연기될 수 있다.
[0066] 일부 양상들에서, 사전-필터링 블록(224)은 "윈도우(window)" 기반 프로세싱을 구현할 수 있다. 윈도우 기반 프로세싱에서, TTW들(212a-n)이 변환 요청들(236)을 프로세싱할 때, 액세스되는 어드레스 공간의 최소 변환 그래뉼에 대한 테이블 또는 페이지 맵핑을 페치하는 것 이외에도, 인접한 테이블 또는 페이지 맵핑의 정렬된 윈도우가 또한 페치된다. 동시성 변환 요청들(236)이 이 윈도우에 의해 커버되는 어드레스들에 대한 변환을 요청하는 경우, 사전-필터링 블록(224)은 변환 테이블 워크가 단지 한번 수행되고, 각각의 후속 변환 요청(236)은 테이블 또는 페이지 맵핑들의 윈도우가 변환 결과들(238/240) 상에서 리턴되기를 대기하는 것을 보장하도로 구성될 수 있다.
[0067] 일부 다른 양상들에서, 최소 변환 그래뉼 크기(예를 들어, 4KB 변환 블록)의 미스-언더-미스(miss-under-miss) 사전-필터링이 사용될 수 있다. 미스-언더-미스 사전-필터링은 다수의 양상들에서, 위에서 설명된 윈도우 기반 프로세싱과 유사하다. 명백히, 미스-언더-미스 프로세싱의 차이는 다음과 같다. (예를 들어, MMU(204)에 의해 수행될 가상-물리적 어드레스 변환의 경우에 TTW들(212a-n)로부터 리턴된 가상 어드레스들에 대한) 후속 변환 요청들(236)은, 초기 및 후속 변환 요청들(236)에 대한 어드레스들이 동일한 정렬된 윈도우(예를 들어, 4KB의 최소 변환 그래뉼 윈도우 크기로 제한되기 보다는 4KB와 같은 최소 변환 그래뉼의 배수) 내에 있는 경우, 초기 변환 요청들(236)과의 매칭을 갖거나 동일한 것으로 간주된다.
[0068] 도 2를 다시 참조하면, 사후-필터링 블록(226)이 이제 추가로 상세히 설명될 것이다. 멀티스레드 TTW(214)는 동시에 다수의 변환들을 프로세싱할 수 있기 때문에, 동시성 변환 결과들(238/240)은 변환 캐시(208)를 리던던트/ 중복 정보로 채우는 것이 가능하다. 미스-언더-미스 사후-필터링은 변환 캐시(208)에 기록되는 중복 정보의 양을 제거(또는 최소화)하기 위해 사후-필터링 블록(226)에 의해 이용될 수 있다. 사후-필터링 블록(226)은 하나 또는 그 초과의 TTW들(212a-n)로부터 하나 또는 그 초과의 변환 결과들(238/240)을 수신할 수 있고, 하나 또는 그 초과의 변환 결과들(238/240) 중 2개 또는 그 초과가 유사한 변환 결과들인 경우, 유사한 변환 결과들 중 단지 하나만을 변환 캐시(208)에 포워딩하는 반면에, 남은 유사한 변환 결과들을 억제(suppressing)한다.
[0069] 따라서, 사후-필터링의 일 양상에서, 사후-필터링 블록(226)은 어떠한 중복 정보도 변환 캐시(208)에 채워지지 않는다는 것을 보장하기 위해, 변환 캐시(208)를 채우기 전에 변환 캐시(208)를 조사하거나 룩업하도록 구성된다. 그러나 (예를 들어, 1차 스케줄러(210)로부터의 다른 변환 요청들(209)을 프로세싱하는데 잠재적으로 사용될 수 있는) 변환 캐시(208) 룩업의 대역폭은 사후-필터링 블록(226)에 의해 수행된 룩업에 의해 영향을 받을 수 있다. 예를 들어, TTW들(212a-n)로부터의 변환 캐시 필 요청(예를 들어, 변환 결과(238/240))이 2차 스케줄러(220)에서 수신될 때, 사후-필터링 블록(226)은 변환 결과(238/240)에 대응하는 변환이 변환 캐시(208)에 이미 존재하는지를 검사하기 위해 변환 캐시(208)를 조사할 수 있다. 조사가 매칭을 리턴하면, 사후-필터링 블록(226)은 TTW들(212a-n)로부터 수신된 변환 결과(238/240)를 폐기할 수 있다. 그렇지 않으면, 사후-필터링 블록(226)은 변환 캐시(208)가 변환 결과(238/240)로 채워지도록 허용할 수 있다.
[0070] 사후-필터링의 다른 양상에서, 최근에 채워진 변환 결과들(238/240)의 별개의 캐시(도시되지 않음)가 유지될 수 있다. 이 별개의 캐시는 최근에 채워진 변환 결과들(238/240)을 보유하는 "최근 채워진 캐시"로서 본원에서 지칭된다. 최근 채워진 캐시는 새로운 변환 결과(232/234)가 최종적으로 변환 캐시(208)에 채워지기 전에 중복 변환 결과(238)를 검사하기 위해 참고될 수 있다. 최근 채워진 캐시는 변환 캐시(208)보다 작을 수 있는데, 예를 들어, 최근 채워진 캐시의 엔트리들의 수는 TTW들(212a-n)에 의해 동시에 프로세싱될 수 있는 변환 요청들(236)의 수에 비례할 수 있다. 최근 채워진 캐시가 이러한 방식으로 사용될 때, 변환 캐시(208)에 중복 정보를 채우는 것이 여전히 가능할 수 있지만, 부가적인 변환 캐시 조사가 수행되지 않기 때문에, 변환 캐시(208) 룩업의 대역폭에 영향을 거의 또는 전혀 미치지 않는다.
[0071] 사후-필터링을 위해 최근 채워진 캐시를 활용하는 일 양상에서, 필터링되지 않은 변환 결과(예를 들어, 사후-필터링되지 않은 변환 결과(238))가 사후-필터링 블록(226)에서 수신될 때, 최근 채워진 캐시가 검토 또는 조사된다. 조사가 특정 변환 결과(238)에 대해 매칭을 리턴하는 경우, 사후-필터링 블록(226)은 매칭하는 변환 결과(238)를 폐기하고, 매칭하는 변환 결과(238)가 변환 캐시(208)를 채우는 것을 방지할 수 있다(그 이유는 본원에서는, 매칭하는 변환 결과(238)가 최근에 발행된 변환 요청(236)에 응답하여 수신된 경우, 매칭하는 변환 결과(238)가 여전히 변환 캐시(208)에 상주할 가능성이 높다는 것이 가정되기 때문임). 조사가 매칭을 발생시키지 않는 경우, 사후-필터링 블록(226)은 변환 캐시(208)는 물론 최근 채워진 캐시를 채우도록 변환 결과(238)를 발행한다.
[0072] 일부 양상들에서, 최근 채워진 캐시에 기초한 사후-필터링은 다음 방식으로 구성될 수 있다. 필터링되지 않은 변환 결과(예를 들어, 변환 결과(238))가 2차 스케줄러(220)에 의해 수신될 때, 2차 스케줄러(220)의 각각의 슬롯(404a-m)은 변환 결과(238)와의 매칭이 존재하는지를 알기 위해 검사된다. 앞서 설명된 바와 같이, 슬롯들(404a-m)은 변환 요청(230)(예를 들어, 가상 어드레스) 및 변환 요청(230)과 연관된 콘텍스트 정보를 포함할 수 있다. 계류중인 변환 요청을 갖는 슬롯(404a-m)들 중 임의의 것에서 계류중인 변환 요청(230)과 매칭하는 변환 결과(238)에 대해, 매칭하는 변환 요청(230)을 포함하는 슬롯(404a-m)의 상태는 "변환 캐시 필 폐기(translation cache fill discard)"로서 표시된다. 후속 변환 결과(238)가 또한, 그의 상태가 "변환 캐시 필 폐기"인 슬롯의 변환 요청(230)과 매칭하는 경우, 이 후속 변환 결과(238)는 중복인 것으로 결정되고, 후속 (중복) 변환 결과(238)가 변환 캐시(208)를 채우도록 허용하기 보다는, 사후-필터링 블록(226)에 의해 폐기된다. 그의 상태가 "변환 캐시 필 폐기"로 표시되지 않은 임의의 슬롯(404a-m)에 저장된 변환 요청(230)에 대응하는 변환 결과들(238)은 폐기되는 것이 아니라, (예를 들어, 도 2에 도시된 변환 캐시 필 (필터링된) 결과(232)를 통해) 변환 캐시(208)를 채우도록 허용될 것이다. 변환 결과(238)가 슬롯들(404a-m) 중 임의의 것에 저장된 변환 요청들(230)에 대응하는지 또는 이와 매칭하는지를 결정하는 것은 어드레스 필드 및 콘텍스트 정보(예를 들어, 가상 머신 식별자, 어드레스 공간 식별자 등)를 매칭시키기 위한 당 분야에 알려진 임의의 매칭/룩업 메커니즘을 포함할 수 있고, 변환 캐시(208)를 검색하는 프로세스와 유사할 수 있다.
[0073] 이제 도 5를 참조하면, 예시적인 멀티스레드 MMU의 대안적인 구현이 도시된다. 도 5는 MMU(504)를 포함하는 프로세싱 시스템(500)을 예시한다. 프로세싱 시스템(500)은 다수의 양상들에서, 도 2의 프로세싱 시스템(200)과 유사하고 따라서, 이들 2개의 프로세싱 시스템들의 유사한 특징들을 지정하기 위해 유사한 참조 번호들이 유지된다. 유사한 특징들의 반복 없이 프로세싱 시스템들(200 및 500) 사이의 중요한 차이에 초점을 맞추면, MMU(504)는 MMU(204)의 1차 스케줄러(210) 및 2차 스케줄러(220)를, 1차 스케줄러(210) 및 2차 스케줄러(220) 둘 모두의 기능을 수행하도록 구성된 단일의 메인 스케줄러(510)로 대체한다는 것이 도 5로부터 이해된다. MMU(504)는 또한 변환 캐시(208)에 전송된 변환 요청들(509)의 사전-필터링을 수행하기 위한 사전-필터링 블록(524)을 갖는다. 사후-필터링 블록(526)은 변환 결과들(238/240)이 변환 캐시(208)에 채워지기 전에 변환 결과들(238/240)의 사후-필터링 기능들을 수행한다. 프리페치 엔진(222)은 사전-필터링 블록(524)에 의해 사전-필터링이 또한 적용될 수 있는 메인 스케줄러(510)에 요청들(528) (또는 본 개시에서 "프리페치 어드레스 변환 요청들")을 직접 전송한다. (변환 캐시(208)로부터의 또는 변환 캐시(208)에서 미스된 변환 요청들(536)에 대해 TTW들(212a-n)을 포함하는 TTW(214)에 의해 제공된 변환 결과들(238/240)로부터) 변환 결과들(511)이 메인 스케줄러(510)에 직접 제공된다. MMU(504)의 남은 프로세스들 및 기능들은 MMU(204)의 것들과 유사하고, 이에 따라 이들의 추가의 상세한 설명은 본원에서 회피할 것이다.
[0074] 이제 도 6을 참조하면, 변환 테이블들에 대한 액세스의 감소에 관한 양상들이 설명될 것이다. 예시적인 멀티스레드 MMU(예를 들어, 204/504)는 다수의 변환 테이블 워크들을 동시에 수행할 수 있기 때문에, 이러한 동시성 변환 테이블 워크들을 위해 이용되는 상태 머신들이 조정되지 않는 경우, 상태 머신들(예를 들어, TTW들(212a-n))은 작업을 중복해서 하고, 변환 테이블 메모리 요청들을 동일한 변환 테이블 어드레스들에 2번 이상 집합적으로 발행할 수 있다. 따라서, 일부 양상들은 중복/리던던트 메모리 액세스들을 제거하여, 멀티스레드 MMU의 액세스 대역폭들 및 변환 테이블 워커들에 대한 액세스를 상응하게 감소시키는 것에 관한 것이다. 이와 관련하여, 도 6은 TTW(214)의 이전에 설명된 TTW들(212a-n), 및 부가적으로, 중복 변환 테이블 워크 요청들/액세스들을 감소/제거함으로써 변환 테이블 워크 대역폭을 감소시키도록 구성된 변환 테이블 액세스 필터(602)를 도시한다.
[0075] 변환 테이블 액세스 필터(602)는 TTW들(212a-n)과 메모리(206) 사이에 배치되거나 그 사이에서 구성될 수 있다. 변환 테이블 액세스 필터(602)의 분해도가 도 6에 또한 도시된다. 변환 테이블 액세스 필터(602)는 TTW(214)에 대한 미해결 요청들을 보유하도록 구성된 미해결 TTW 요청 상태 블록(606)을 포함한다. TTW들(212a-n)에 대응하는, 대응하는 레지스터들 또는 저장 수단들(612a-612n)은 특정 TTW들(212a-n)에 관련된 미해결 요청들을 보유하기 위해 제공된다. 선택적인 변환 결과 캐시(608)는 또한 일부 양상들에서, 변환 테이블 워크들의 일부 변환 결과들(즉, 메모리(206)의 변환된 어드레스들)을 저장하도록 제공될 수 있다. 미해결 TTW 요청 상태(606) 및 레지스터들(612a 내지 612n), 및 선택적으로, 변환 결과 캐시(608)를 사용하여, 변환 테이블 액세스 필터(602)는 메모리(206)의 중복/리던던트 액세스들을 검출하고 메모리(206)의 단지 유일한 액세스들만을 허용하면서, 중복/리던던트 액세스들을 감소 또는 제거할 수 있다.
[0076] 예시적인 멀티스레드 MMU(204/504)에서의 변환 테이블 액세스 필터(602)의 효과는 도 7을 참조하여 설명될 것이다. 2개의 별개의 테이블 워커들(예를 들어, TTW들(212a-b))과 연관된 2개의 테이블 워크 시퀀스들이 도 7에서 워크-A 및 워크-B로서 도시된다. 예에서, TTW들(212a-b)은 동일한 변환 테이블을 사용하여 동일한 어드레스 공간 내의 어드레스들 "A" 및 어드레스 "B"에 대한 변환 테이블 워크들을 동시에 수행할 수 있다. 어드레스 "A" 및 어드레스 "B"가 상이한 변환 그래뉼들(예를 들어, 가상 메모리의 4KB 블록들)에 상주하지만, 동일한 메모리 블록(예를 들어, 가상 메모리의 2MB 블록) 내에 있는 경우, TTW들(212a- b)은 어드레스들 "A" 및 어드레스 "B"에 대한 변환 테이블 워크의 공통 엘리먼트들을 갖는 것으로 이해된다. 이러한 공통성은 도시된 바와 같이 테이블들 또는 페이지들 L1(702a) 및 L2(702b)에서 동일한 변환 테이블 엔트리들에 대한 중복 메모리 액세스들로 이어진다. 테이블(704)은 어떠한 필터링도 없이(예를 들어, 변환 테이블 액세스 필터(602)를 사용하지 않음) 어드레스들 "A" 및 "B"에 관련된 테이블 워크들에 대한 메모리 액세스들의 리스트를 예시하고, 테이블(706)은 (예를 들어, 변환 테이블 액세스 필터(602)를 사용하여) 필터링을 한 어드레스들 "A" 및 "B"에 관련된 테이블 워크들에 대한 메모리 액세스들의 리스트를 예시한다. 테이블들(704 및 706)을 비교하면, 테이블(704)에 존재하는 중복 변환 테이블 액세스들(어드레스 "B"에 대한 테이블 워크들에서 전개된 TTW(212b)에 대한 단계 1(L1) 및 단계 2(L2))이 테이블(706)에서 제거되는 것이 이해된다. 따라서, 변환 테이블 액세스 필터(602)가 예시적인 양상들에서 전개될 때 액세스들의 수는 감소되며, 이는 대역폭 감소로 이어진다.
[0077] 이제 도 8을 참조하면, 변환 테이블들에 대한 관련없는/리던던트 액세스들을 억제하기 위한 알고리즘 또는 흐름도에 관한 방법(800)이 예시된다. 방법(800)은 선택적으로 인에이블될 수 있다. 방법(800)이 인에이블될 때, TTW들(212a-n) 중 임의의 하나에 대해 수신된 각각의 새로운 변환 요청(236)에 대해, 방법(800)은 메모리(206)에 대한 관련없는/리던던트 액세스들을 억제하기 위해 사용될 수 있다. 이러한 인에이블은, 예를 들어, MMU(204)에 대한 모든 타입들의 액세스들에 대한 글로벌 인에이블일 수 있거나, 또는 개별 인에이블들이 특정 변환 테이블 액세스 타입들에 대해 적용될 수 있다. 변환 테이블 액세스 타입들의 일부 예들은 스테이지-1, 레벨 1-3 및 스테이지-2, 레벨 1-3을 포함한다.
[0078] 방법(800)을 추가로 상세히 고려하면, 블록(802)에서, 방법(800)은 예를 들어, 각각의 새로운 변환 요청(236)으로 시작할 수 있다. 블록(804)에서, 예를 들어, 변환 테이블 액세스 필터(602)가 인에이블되는지 여부가 결정된다. 변환 테이블 액세스 필터(602)가 인에이블("예" 경로)되는 경우, 방법(800)은 변환 테이블 액세스 필터(602)가 특정 요청 타입에 대해 인에이블되는지가 결정되는 블록(806)으로 진행된다. 블록(804)에서, 변환 테이블 액세스 필터(602)가 인에이블되지 않는 것으로 결정된 경우, 방법(800)은 블록(810)으로 진행된다. 유사하게, 블록(806)에서, 변환 테이블 액세스 필터(602)가 특정 요청 타입에 대해 인에이블되지 않는 것으로 결정된 경우, 방법(800)은 블록(810)으로 진행된다.
[0079] 블록(806)에서, 변환 테이블 액세스 필터(602)가 특정 요청 타입에 대해 인에이블되는 것으로 결정되는 경우, 방법(800)은, (예를 들어, 도 6의 미해결 TTW 요청 상태 블록(606) 또는 레지스터들(612a-n)로부터의) 새로운 변환 테이블 요청을 만족시키는 미해결의 중첩되는 변환 테이블 액세스가 이미 존재하는지가 검사되는 블록(808)으로 진행된다. 블록(808)에서, 결정이 "아니오"인 경우, 방법(800)은 블록(810)으로 진행된다. 블록(810)에서, 블록(802)에서 도달한 새로운 변환 요청(236)을 만족시키기 위해 (예를 들어, TTW(214)로부터 메모리(206)로의) 변환 테이블 액세스가 수행된다. 블록(808)에서, 결정이 "예"인 경우, 방법(800)은 새로운 변환 테이블 요청이 (예를 들어, 변환 테이블 액세스 필터(602)를 사용하여) 변환 요청(236)에 대해 억제되는 블록(812)으로 진행된다. 그 후, 방법(800)은, 새로운 변환 요청(236)을 만족시키도록 그의 결과들을 사용하기 위해 중첩되는 변환 테이블 액세스가 완료되기를 대기하는 블록(814)으로 진행된다. 블록들(814 및 810)로부터, 방법(800)은 방법(800)이 종료되거나 마무리되는 블록(820)으로 진행된다.
[0080] 일부 양상들에서, 블록(820)은, 새로운 변환 요청(236)을 만족시키기 위해, 블록(810)으로부터 획득된 페이지 테이블 데이터를 변환 결과 캐시(608)에 저장되도록 저장하는 것을 포함할 수 있다. 그러나 일부 다른 양상들에서, 변환 결과 캐시(608)에 페이지 테이블 데이터를 저장하기로 결정하기 전에 부가적인 필터링 단계들이 수행될 수 있다. 예를 들어, 블록(810) 이후에, 방법(800)은 페이지 테이블 데이터를 저장하기 전에 수행될 수 있는 부가적인 필터링 단계들을 포함할 수 있다. 부가적인 필터링 단계들은 하기에서 도 9를 참조하여 설명될 것이다.
[0081] 도 9는 변환 테이블들(예를 들어, TTW(214))에 대한 관련없는/리던던트 액세스들을 억제하기 위한 알고리즘 또는 흐름도에 관한 다른 예시적인 방법(900)을 예시한다. 블록들(802, 804, 806, 및 810)은 위에서 설명된 방법(800)의 블록들과 유사하고, 이에 따라 이들은 재차 설명되지 않을 것이다. 블록(902)에서 시작하여, 블록(806)에서의 결정이 "예"인 경우, 블록(902)에 도달되며, 블록(902)에서, 선택적인 변환 결과 캐시(608)가 룩업된다. 블록(904)에서, 변환 요청(236)에 대한 요청된 변환 테이블 데이터가 변환 결과 캐시(608)에서 발견되는 경우, 방법(900)은 블록(906)으로 진행된다. 블록(906)에서, 변환 요청(236)에 대한 새로운 변환 테이블 요청들은 억제되고 변환 결과 캐시(608)로부터의 데이터가 변환 요청(236)을 서비스하는데 사용되며, 거기에서부터, 방법(900)은 방법(900)이 완료되거나 마무리되는 블록(914)으로 진행된다.
[0082] 다른 한편, 블록(904)에서, 변환 요청(236)에 대한 변환 데이터가 변환 결과 캐시(608)에서 발견되지 않는 경우, 방법(900)은 블록(810)으로 진행되며, 거기서부터 블록들(908-912)의 부가적인 단계들이 수행된다. 블록(908)에서, 변환 테이블 액세스 필터(602)가 인에이블되는지가 다시 결정되고, 만약 아니라면, 방법(900)은 블록(914)에서 종료한다. 변환 테이블 액세스 필터(602)가 인에이블되는 경우, 블록(910)에서, 변환 테이블 액세스 필터(602)가 특정 변환 테이블 요청 타입의 변환 요청(236)에 대해 인에이블되는지가 결정되고, 만약 아니라면, 방법(900)은 블록(914)에서 종료한다. 블록(910)에서, 변환 테이블 액세스 필터(602)가 특정 변환 테이블 요청 타입의 변환 요청(236)에 대해 인에이블되는 것으로 결정되는 경우, 블록(912)에서, 변환 요청(236)에 대한 페이지 테이블 데이터가 변환 결과 캐시(608)에 저장되고, 방법(900)은 블록(914)에서 종료한다.
[0083] 일부 예시적인 양상들에서, 로컬 캐시들(예를 들어, 변환 결과 캐시(608))은 변환 테이블 데이터를 보유할 수 있기 때문에, 예시적인 MMU들에 의해 수신된 무효화 커맨드들(예를 들어, 당분야에 알려진 바와 같은 TLB 무효화 커맨드들)에 응답하면서 주의를 기울인다. 임의의 TLB 무효화 커맨드가 MMU(204)에 의해 수신될 때, 예를 들어, 전체 변환 결과 캐시(608)의 콘텐츠들은 무효한 것으로 간주된다. 따라서, 메모리(206)에 대해 현재 미해결인 모든 변환 테이블 액세스들은 플래깅되어서, 그의 결과들이 리턴될 때, 이들은 변환 결과 캐시(608)에 파퓰레이팅되지 않는다. 일부 경우들에서, 변환 결과 캐시(608)의 모든 엔트리들이 상응하게 무효화된다. 변환 결과 캐시(608)가 물리적으로 태깅될 수 있기 때문에, 전체 변환 결과 캐시(608)는 이러한 경우들에, 임의의 이러한 MMU 무효화 커맨드를 통해 무효화된다. 당업자에 의해 이해될 수 있는 바와 같이, 본 개시의 범위 내에서 다른 유사한 무효화 절차들이 구현될 수 있다.
[0084] 양상들은 본원에서 개시되는 프로세스들, 기능들 및/또는 알고리즘들을 수행하기 위한 다양한 방법들을 포함한다는 것을 인지할 것이다. 예를 들어, 도 10은 어드레스 변환을 수행하는 방법(1000)을 예시한다. 방법(1000)은 2개 또는 그 초과의 어드레스 변환 요청들(예를 들어, 업스트림 클라이언트 디바이스(202)로부터의 클라이언트 입력 트랜잭션들(216))을 수신하는 단계; 및 멀티스레드 메모리 관리 유닛(예를 들어, MMU(204))에서 시스템 메모리(예를 들어, 메모리(206))의 대응하는 변환된 어드레스를 획득하기 위해 2개 또는 그 초과의 어드레스 변환 요청들에 대한 2개 또는 그 초과의 어드레스 변환들을 병렬로 수행하는 단계를 포함한다.
[0085] 일부 양상들에서, 방법(1000)은 적어도 하나의 스케줄러에(예를 들어, 1차 스케줄러(210)의 슬롯들(304a-n)에) 2개 또는 그 초과의 어드레스 변환 요청들을 저장하고 2개 또는 그 초과의 어드레스 변환 요청들(예를 들어, 209)을 멀티스레드 MMU의 변환 캐시(예를 들어, 변환 캐시(208))에 전송하는 단계를 포함할 수 있다. 일부 양상들에서, 적어도 하나의 스케줄러(예를 들어, 1차 스케줄러(210))는, 2개 또는 그 초과의 어드레스 변환 요청들이 적어도 하나의 스케줄러에 의해 수신된 순서와 동일하거나 상이한 순서로, 2개 또는 그 초과의 어드레스 변환 요청들을 변환 캐시에 발행할 수 있다. 일부 양상들에서, 방법(1000)은 또한, 어드레스 변환 요청에 대해 변환 캐시에서 히트가 존재하는 경우 변환 캐시로부터 2개 또는 그 초과의 어드레스 변환 요청들 중의 어드레스 변환 요청에 대한 변환(예를 들어, 변환 결과(211))을 수신하거나, 또는 변환 캐시에서 미스(예를 들어, 230)된 어드레스 변환 요청들을 변환 테이블 워커에(예를 들어, 2차 스케줄러(220)를 통해 TTW(214)에) 포워딩하는 단계를 포함할 수 있다. 2개 또는 그 초과의 변환 테이블 워크들은 2개 또는 그 초과의 어드레스 변환 요청들에 대한 2개 또는 그 초과의 변환 테이블 워커들(예를 들어, 212a-n)에 의해 병렬로 수행될 수 있다.
[0086] 일부 양상들에서, 방법(1000)은, 변환 테이블 워커들로의 어드레스 변환 요청들의 포워딩의 중복을 피하기 위해 어드레스 변환 요청들을 변환 테이블 워커에 포워딩하기 전에 변환 캐시에서 미스된 어드레스 변환 요청들을 (예를 들어, 사전-필터링 블록(224)에서) 사전-필터링하는 단계를 포함할 수 있다. 일부 양상들에서, 방법(1000)은 또한 변환 캐시를 채우는데 있어 중복을 피하기 위해, 변환 테이블 워커로부터 획득된 변환 결과들을 (예를 들어, 사후-필터링 블록(226)에서) 사후-필터링하는 단계를 포함할 수 있다. 일부 양상들에서, 방법(1000)은 또한, (예를 들어, 위에서 설명된 바와 같은 방법들(800 또는 900)에서 변환 테이블 액세스 필터(602)를 사용함으로써) 시스템 메모리에 대한 액세스들의 중복 또는 리던던시를 감소시킴으로써, 변환 테이블 워커에 의해 수행되는 변환 테이블 워크들의 대역폭 소비를 감소시키는 단계를 포함할 수 있다.
[0087] 이제 도 11을 참조하면, 예시적인 양상들에 따라 구성된 무선 디바이스의 블록도가 도시되고 일반적으로 1100으로 지정된다. 무선 디바이스(1100)는 아래에서 설명되는 바와 같이, 도 2의 프로세싱 시스템(200)의 특정 양상들을 포함한다. 업스트림 클라이언트 디바이스(202)가 특별히 예시되며, 이는 또한, 멀티스레드 MMU(204) 및 시스템 메모리(206)에 커플링된 프로세서(예를 들어, 디지털 신호 프로세서(DSP), 중앙 처리 장치(CPU) 등)일 수 있다. MMU(204)를 통한 메모리(206)로의 연결 이외에도, 일부 경우들에서, 프로세서(202)로부터 메모리(206)로의 직접 연결이 가능하다.
[0088] 또한, 도 11은 프로세서(202) 및 디스플레이(1128)에 커플링된 디스플레이 제어기(1126)를 도시한다. 코더/디코더(CODEC)(1134)(예를 들어, 오디오 및/또는 음성 CODEC)가 프로세서(202)에 커플링될 수 있다. (모뎀을 포함할 수 있는) 무선 제어기(1140)와 같은 다른 컴포넌트들이 또한 예시된다. 스피커(1136) 및 마이크로폰(1138)은 CODEC(1134)에 커플링될 수 있다. 또한, 도 11은 무선 제어기(1140)가 무선 안테나(1142)에 커플링될 수 있음을 표시한다. 특정 양상에서, 프로세서(202), 디스플레이 제어기(1126), MMU(204), 메모리(206), CODEC(1134) 및 무선 제어기(1140)는 시스템-인-패키지 또는 시스템-온-칩 디바이스로서 통합되거나 패키징될 수 있는 시스템(200)에 포함된다.
[0089] 특정 양상에서, 입력 디바이스(1130) 및 전원(1144)은 시스템-온-칩 디바이스(200)에 커플링된다. 또한, 특정 양상에서, 도 11에서 예시된 바와 같이, 디스플레이(1128), 입력 디바이스(1130), 스피커(1136), 마이크로폰(1138), 무선 안테나(1142) 및 전원(1144)은 시스템-온-칩 디바이스(200) 외부에 있다. 그러나 디스플레이(1128), 입력 디바이스(1130), 스피커(1136), 마이크로폰(1138), 무선 안테나(1142) 및 전원(1144) 각각은 인터페이스 또는 제어기와 같은 시스템-온-칩 디바이스(200)의 컴포넌트에 커플링될 수 있다.
[0090] 도 11이 무선 통신 디바이스를 도시하지만, 프로세서(202), MMU(204), 메모리(206)가 또한 셋-톱 박스, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛, 컴퓨터, 랩톱, 태블릿, 모바일 전화 또는 다른 유사한 디바이스들에 통합될 수 있다는 것이 주의되어야 한다.
[0091] 당업자들은, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 이용하여 표현될 수 있다는 것을 인지할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기 필드들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0092] 더욱이, 당업자들은 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합들로서 구현될 수 있다는 것을 인지할 것이다. 하드웨어 및 소프트웨어의 이러한 상호교환성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 이들의 기능성의 견지에서 일반적으로 위에서 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은, 설명된 기능성을 각각의 특정 애플리케이션 마다 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로 해석되어선 안 된다.
[0093] 본원에서 개시된 양상들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 제거 가능한 디스크, CD-ROM, 또는 당분야에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링될 수 있다. 대안으로, 저장 매체는 프로세서에 통합될 수 있다.
[0094] 따라서, 본 발명의 양상은 멀티스레드 프로세서의 스레드들을 관리/스케줄링하는 방법을 구현하는 컴퓨터 판독 가능한 매체들을 포함할 수 있다. 이에 따라, 본 발명은 예시된 예들로 제한되지 않고 본원에서 설명되는 기능성을 수행하기 위한 임의의 수단들이 본 발명의 양상들에 포함된다.
[0095] 위의 개시가 본 발명의 예시적인 양상들을 도시하지만, 다양한 변화들 및 변형들이 첨부된 청구항들에 의해 정의된 바와 같은 본 발명의 범위로부터 벗어남 없이 본원에서 이루어질 수 있다는 것이 주의되어야 한다. 본원에서 설명되는 본 발명의 양상들에 따른 방법 청구항들의 기능들, 단계들 및/또는 동작들은 임의의 특정한 순서로 수행되지 않아도 된다. 또한, 본 발명의 엘리먼트들이 단수로 설명되거나 청구될 수 있지만, 단수로의 제한이 명시적으로 언급되지 않는 한, 복수가 고려된다.

Claims (15)

  1. 장치로서,
    하나 또는 그 초과의 업스트림 디바이스들로부터 2개 또는 그 초과의 어드레스 변환 요청들을 수신하도록 구성된 멀티스레드 메모리 관리 유닛(MMU)을 포함하고,
    상기 멀티스레드 MMU는 시스템 메모리의 대응하는 변환된 어드레스들을 획득하기 위해, 상기 2개 또는 그 초과의 어드레스 변환 요청들 중 적어도 2개를 병렬로 프로세싱하도록 추가로 구성되고,
    상기 멀티스레드 MMU는 1차 스케줄러, 변환 캐시 및 2차 스케줄러를 포함하고,
    상기 1차 스케줄러는 상기 2개 또는 그 초과의 어드레스 변환 요청들을 수신하고 상기 변환 캐시에서의 변환을 위해 상기 2개 또는 그 초과의 어드레스 변환 요청들을 발행하도록 구성되고,
    상기 1차 스케줄러에 의해 발행된 하나 또는 그 초과의 미스 어드레스 변환 요청들(missing address translation requests)에 대해 상기 변환 캐시에서 미스들이 존재하는 경우, 상기 변환 캐시는 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들을 상기 2차 스케줄러에 포워딩하도록 구성되고,
    상기 2차 스케줄러는 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들을 수신하고 하나 또는 그 초과의 변환 테이블 워커(TTW)들에서 상기 시스템 메모리의 어드레스들로의 변환을 위해 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들을 스케줄링하도록 구성되고; 그리고
    상기 멀티스레드 MMU는,
    상기 하나 또는 그 초과의 미스 어드레스 변환 요청들을 수신하도록 구성되고, 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들 중 2개 또는 그 초과의 미스 어드레스 변환 요청들이 유사한 미스 어드레스 변환 요청들인 경우, 2개 또는 그 초과의 유사한 미스 어드레스 변환 요청들 중 단지 하나만을 상기 하나 또는 그 초과의 TTW들에 포워딩하고 상기 2개 또는 그 초과의 유사한 미스 어드레스 변환 요청들 중 나머지 것들을 억제하도록 구성되는 사전-필터링 블록; 또는
    상기 하나 또는 그 초과의 미스 어드레스 변환 요청들 중 2개 또는 그 초과가 상기 시스템 메모리의 리던던트 액세스들(redundant accesses)을 포함하는지를 결정하고 상기 시스템 메모리의 단지 유일한(unique) 액세스만이 수행되게 허용하도록 구성된 변환 테이블 액세스 필터 중 적어도 하나를 더 포함하는,
    장치.
  2. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 업스트림 디바이스들은 2개 또는 그 초과의 어드레스 변환 요청들을 생성하도록 구성된 범용 프로세서, 특수 목적 프로세서 또는 멀티스레드 프로세서 중 하나 또는 그 초과를 포함하는,
    장치.
  3. 제 1 항에 있어서,
    상기 1차 스케줄러는 상기 2개 또는 그 초과의 어드레스 변환 요청들이 상기 1차 스케줄러에 의해 수신된 순서와 상이한 순서로 상기 2개 또는 그 초과의 어드레스 변환 요청들을 상기 변환 캐시에 발행하도록 구성되는,
    장치.
  4. 제 1 항에 있어서,
    상기 1차 스케줄러는 상기 2개 또는 그 초과의 어드레스 변환 요청들이 프로세싱되는 동안 상기 2개 또는 그 초과의 어드레스 변환 요청들을 저장하도록 구성된 2개 또는 그 초과의 1차 스케줄러 슬롯들을 포함하고, 상기 2개 또는 그 초과의 1차 스케줄러 슬롯들은 상기 하나 또는 그 초과의 업스트림 디바이스들의 2개 또는 그 초과의 에이전트들에 할당되며,
    이 할당은,
    상기 2개 또는 그 초과의 에이전트들의 분류에 기초하여 프로그래밍 가능하거나, 또는
    라운드 로빈, 고정된 우선순위 또는 상기 2개 또는 그 초과의 에이전트들과 연관된 프로그래밍 가능한 우선순위들을 포함하는 중재 정책에 기초하고,
    상기 2개 또는 그 초과의 1차 스케줄러 슬롯들은 대응하는 2개 또는 그 초과의 상태들을 포함하고, 각각의 상태는 대응하는 1차 스케줄러 슬롯에 저장된 어드레스 변환 요청의 스테이터스(status)를 포함하는,
    장치.
  5. 제 4 항에 있어서,
    상기 2개 또는 그 초과의 1차 스케줄러 슬롯들은 대응하는 2개 또는 그 초과의 상태들을 포함하고, 각각의 상태는 대응하는 1차 스케줄러 슬롯에 저장된 어드레스 변환 요청의 스테이터스를 포함하는,
    장치.
  6. 제 1 항에 있어서,
    상기 1차 스케줄러에 의해 발행된 2개 또는 그 초과의 어드레스 변환 요청들 중 하나 또는 그 초과의 히트 어드레스 변환 요청들에 대해 상기 변환 캐시에 히트들이 존재하는 경우, 상기 변환 캐시는 상기 하나 또는 그 초과의 히트 어드레스 변환 요청들에 대한 상기 시스템 메모리의 하나 또는 그 초과의 변환된 어드레스들을 포함하는 대응하는 하나 또는 그 초과의 변환 결과들을 상기 1차 스케줄러에 제공하도록 구성되고,
    상기 1차 스케줄러는 대응하는 하나 또는 그 초과의 히트 어드레스 변환 요청들과 연관된 우선순위들 또는 상기 하나 또는 그 초과의 히트 어드레스 변환 요청들을 생성한 하나 또는 그 초과의 업스트림 디바이스들과 연관된 서비스 품질(QoS) 메트릭들에 기초하여, 그리고 액세스들 간의 위험들(hazards)을 피하기 위한 상기 액세스들의 재순서화에 추가로 기초하여, 상기 하나 또는 그 초과의 히트 어드레스 변환 요청들에 대한 상기 시스템 메모리의 하나 또는 그 초과의 변환된 어드레스들에 대한 액세스들을 스케줄링하도록 구성되는,
    장치.
  7. 제 1 항에 있어서,
    상기 2차 스케줄러는, 상기 2개 또는 그 초과의 미스 어드레스 변환 요청들에 대응하는 상기 시스템 메모리의 변환된 어드레스들을 포함하는 변환 결과들이 상기 하나 또는 그 초과의 TTW들로부터 수신되고, 상기 변환된 어드레스들이 상기 변환 캐시에 리턴될 때까지, 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들 중 2개 또는 그 초과를 저장하도록 구성된 2개 또는 그 초과의 2차 스케줄러 슬롯들을 포함하고,
    상기 2개 또는 그 초과의 2차 스케줄러 슬롯들은 상기 하나 또는 그 초과의 업스트림 디바이스들의 2개 또는 그 초과의 에이전트들에 할당되고,
    이 할당은:
    상기 2개 또는 그 초과의 에이전트들의 분류에 기초하여 프로그래밍 가능하거나, 또는
    라운드 로빈, 고정된 우선순위 또는 상기 2개 또는 그 초과의 에이전트들과 연관된 프로그래밍 가능한 우선순위들을 포함하는 중재 정책에 기초하는,
    장치.
  8. 제 7 항에 있어서,
    상기 2개 또는 그 초과의 2차 스케줄러 슬롯들은 대응하는 2개 또는 그 초과의 상태들을 포함하고, 각각의 상태는 대응하는 2차 스케줄러 슬롯에 저장된 미스 어드레스 변환 요청의 스테이터스를 포함하는,
    장치.
  9. 제 1 항에 있어서,
    상기 사전-필터링 블록은, 상기 2개 또는 그 초과의 미스 어드레스 변환 요청들에 대해 변환될 입력 어드레스들이 동일한 변환 그래뉼(translation granule) 내에 있거나 또는 상기 동일한 변환 그래뉼의 특정된 배수 내에 있는 경우, 상기 2개 또는 그 초과의 미스 어드레스 변환 요청들이 유사한 미스 어드레스 변환 요청들인 것으로 결정하도록 구성되는,
    장치.
  10. 제 1 항에 있어서,
    상기 하나 또는 그 초과의 미스 어드레스 변환 요청들에 대해 하나 또는 그 초과의 TTW들로부터 하나 또는 그 초과의 변환 결과들을 수신하고, 상기 하나 또는 그 초과의 변환 결과들 중 2개 또는 그 초과가 유사한 변환 결과들인 경우, 상기 유사한 변환 결과들 중 단지 하나만을 상기 변환 캐시에 포워딩하고 남은 유사한 변환 결과들을 억제하도록 구성된 사후-필터링 블록 ― 상기 사후-필터링 블록은 상기 하나 또는 그 초과의 변환 결과들 중 2개 또는 그 초과가 유사한 변환 결과들인지를 결정하기 위해 상기 변환 캐시를 조사(probe)하도록 구성됨 ― ; 및
    상기 하나 또는 그 초과의 변환 결과들을 저장하도록 구성되는 최근 채워진 캐시(recently filled cache)를 더 포함하고,
    상기 사후-필터링 블록은 상기 하나 또는 그 초과의 변환 결과들 중 2개 또는 그 초과가 유사한 변환 결과들인지를 결정하기 위해 상기 최근 채워진 캐시를 조사하도록 구성되는,
    장치.
  11. 제 1 항에 있어서,
    상기 변환 테이블 액세스 필터는, 상기 2개 또는 그 초과의 미스 어드레스 변환 요청들에 대한 변환된 어드레스들이 동일한 메모리 블록 내에 있는 경우 상기 2개 또는 그 초과의 미스 어드레스 변환 요청들이 리던던트(redundant) 액세스들을 포함하는지를 결정하도록 구성되고, 상기 변환 테이블 액세스 필터는 하나 또는 그 초과의 미스 어드레스 변환 요청들의 하나 또는 그 초과의 변환 결과들을 보유하도록 구성된 변환 결과 캐시를 포함하는,
    장치.
  12. 제 11 항에 있어서,
    상기 변환 테이블 액세스 필터는 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들에 대한 상기 변환 캐시로부터의 하나 또는 그 초과의 변환 결과들을 제공하도록 구성되는,
    장치.
  13. 어드레스 변환을 수행하는 방법으로서,
    2개 또는 그 초과의 어드레스 변환 요청들을 수신하는 단계; 및
    멀티스레드 메모리 관리 유닛(MMU)에서, 시스템 메모리의 대응하는 변환된 어드레스들을 획득하기 위해 상기 2개 또는 그 초과의 어드레스 변환 요청들에 대한 2개 또는 그 초과의 어드레스 변환들을 병렬로 수행하는 단계를 포함하며, 상기 수행하는 단계는,
    상기 멀티스레드 MMU의 1차 스케줄러에 상기 2개 또는 그 초과의 어드레스 변환 요청들을 저장하고 상기 1차 스케줄러로부터의 2개 또는 그 초과의 어드레스 변환 요청들을, 변환을 위해 변환 캐시에 발행하는 단계;
    상기 변환 캐시에서 미스된 하나 또는 그 초과의 미스 어드레스 변환 요청들을 2차 스케줄러에 포워딩하는 단계;
    하나 또는 그 초과의 TTW(translation table walker)들에서 어드레스 변환을 위해 상기 2차 스케줄러에 의해 수신된 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들을 스케줄링하는 단계; 및
    2개 또는 그 초과의 미스 어드레스 변환 요청들이 유사한 미스 어드레스 변환 요청들인지를 결정하고, 상기 2개 또는 그 초과의 유사한 미스 어드레스 변환 요청들 중 단지 하나만을 상기 하나 또는 그 초과의 TTW들에 포워딩하면서 상기 2개 또는 그 초과의 유사한 미스 어드레스 변환 요청들 중 남은 것들을 억제하는 단계; 또는
    상기 하나 또는 그 초과의 TTW(translation table walker)들에서 어드레스 변환을 위해 스케줄링된 상기 하나 또는 그 초과의 미스 어드레스 변환 요청들 중 2개 또는 그 초과가 상기 시스템 메모리의 리던던트 액세스들을 포함하는지를 결정하고, 상기 시스템 메모리의 단지 유일한 액세스들만이 수행되도록 허용하는 단계 중 적어도 하나의 단계를 포함하는,
    어드레스 변환을 수행하는 방법.
  14. 장치로서,
    제 13 항에 따른 방법을 수행하기 위한 수단을 포함하는,
    장치.
  15. 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제 13 항에 따른 방법을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터 판독 가능한 저장 매체.
KR1020177034178A 2015-05-29 2016-04-27 메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화 KR20180013924A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562168712P 2015-05-29 2015-05-29
US62/168,712 2015-05-29
US14/859,351 2015-09-20
US14/859,351 US10007619B2 (en) 2015-05-29 2015-09-20 Multi-threaded translation and transaction re-ordering for memory management units
PCT/US2016/029502 WO2016195850A1 (en) 2015-05-29 2016-04-27 Multi-threaded translation and transaction re-ordering for memory management units

Publications (1)

Publication Number Publication Date
KR20180013924A true KR20180013924A (ko) 2018-02-07

Family

ID=57397568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034178A KR20180013924A (ko) 2015-05-29 2016-04-27 메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화

Country Status (9)

Country Link
US (1) US10007619B2 (ko)
EP (1) EP3304320A1 (ko)
JP (1) JP2018519581A (ko)
KR (1) KR20180013924A (ko)
CN (1) CN107710173A (ko)
BR (1) BR112017025625A2 (ko)
CA (1) CA2983797A1 (ko)
TW (1) TW201710908A (ko)
WO (1) WO2016195850A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830224B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation Selective fault stalling for a GPU memory pipeline in a unified virtual memory system
US10509729B2 (en) * 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10635654B2 (en) * 2017-06-12 2020-04-28 Samsung Electronics Co., Ltd. Data journaling for large solid state storage devices with low DRAM/SRAM
US10649912B2 (en) * 2017-07-14 2020-05-12 International Business Machines Corporation Method and apparatus for an efficient TLB lookup
US20190087351A1 (en) * 2017-09-20 2019-03-21 Qualcomm Incorporated Transaction dispatcher for memory management unit
US10628072B2 (en) * 2018-08-21 2020-04-21 Samsung Electronics Co., Ltd. Scalable architecture enabling large memory system for in-memory computations
GB2578099B (en) * 2018-10-15 2021-05-12 Advanced Risc Mach Ltd Memory access control
US11636043B2 (en) 2021-08-30 2023-04-25 International Business Machines Corporation Sleeping and waking-up address translation that conflicts with translation level of active page table walks

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010052053A1 (en) 2000-02-08 2001-12-13 Mario Nemirovsky Stream processing unit for a multi-streaming processor
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US8347065B1 (en) 2006-11-01 2013-01-01 Glasco David B System and method for concurrently managing memory access requests
US7814253B2 (en) * 2007-04-16 2010-10-12 Nvidia Corporation Resource arbiter
US7904692B2 (en) * 2007-11-01 2011-03-08 Shrijeet Mukherjee Iommu with translation request management and methods for managing translation requests
US8271700B1 (en) * 2007-11-23 2012-09-18 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US8108584B2 (en) * 2008-10-15 2012-01-31 Intel Corporation Use of completer knowledge of memory region ordering requirements to modify transaction attributes
EP2441005A2 (en) 2009-06-09 2012-04-18 Martin Vorbach System and method for a cache in a multi-core processor
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US8386748B2 (en) * 2009-10-29 2013-02-26 Apple Inc. Address translation unit with multiple virtual queues
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US8954986B2 (en) * 2010-12-17 2015-02-10 Intel Corporation Systems and methods for data-parallel processing
US8695008B2 (en) * 2011-04-05 2014-04-08 Qualcomm Incorporated Method and system for dynamically controlling power to multiple cores in a multicore processor of a portable computing device
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
CN103348333B (zh) * 2011-12-23 2017-03-29 英特尔公司 用于分级高速缓存设计中的高速缓存之间的高效通信的方法和装置
CN102763086A (zh) * 2012-01-18 2012-10-31 华为技术有限公司 分布式计算任务处理系统和任务处理方法
US9152566B2 (en) * 2012-06-15 2015-10-06 International Business Machines Corporation Prefetch address translation using prefetch buffer based on availability of address translation logic
US9069690B2 (en) 2012-09-13 2015-06-30 Intel Corporation Concurrent page table walker control for TLB miss handling
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US20150100733A1 (en) 2013-10-03 2015-04-09 Synopsys, Inc. Efficient Memory Organization
US9411745B2 (en) 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
CN104484228B (zh) * 2014-12-30 2017-12-29 成都因纳伟盛科技股份有限公司 基于Intelli‑DSC的分布式并行任务处理系统
US20160210069A1 (en) * 2015-01-21 2016-07-21 Bitdefender IPR Management Ltd. Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
US10019380B2 (en) * 2015-09-25 2018-07-10 Qualcomm Incorporated Providing memory management functionality using aggregated memory management units (MMUs)

Also Published As

Publication number Publication date
CN107710173A (zh) 2018-02-16
TW201710908A (zh) 2017-03-16
US20160350234A1 (en) 2016-12-01
JP2018519581A (ja) 2018-07-19
WO2016195850A1 (en) 2016-12-08
BR112017025625A2 (pt) 2018-08-07
US10007619B2 (en) 2018-06-26
CA2983797A1 (en) 2016-12-08
EP3304320A1 (en) 2018-04-11

Similar Documents

Publication Publication Date Title
KR20180013924A (ko) 메모리 관리 유닛들을 위한 멀디-스레드 변환 및 트랜잭션 재-순서화
KR102407128B1 (ko) 메모리 컨트롤러
US8683140B2 (en) Cache-based speculation of stores following synchronizing operations
US9436638B1 (en) Full bandwidth packet handling with server systems including offload processors
KR101483849B1 (ko) 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭
US8140768B2 (en) Jump starting prefetch streams across page boundaries
KR101426461B1 (ko) 액세스 레이턴시를 감소시키기 위한 버스 중재 기술들
JP5118199B2 (ja) マルチスレッドおよびマルチコア・システムのためのキャッシュ、および、その方法
JP5059609B2 (ja) メモリへの様々なタイプのアクセスを予測するため、およびキャッシュメモリに関連付けられた予測を管理するための、システム、装置、および方法
US20080162760A1 (en) Efficient resource arbitration
KR20160074647A (ko) 로드 및 저장 유닛과 데이터 캐시에 대한 순서화 및 대역폭 향상
EP2839379A1 (en) A write-only dataless state for maintaining cache coherency
US20070162706A1 (en) Method and circuit to implement digital delay lines
US9639470B2 (en) Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
JP2018519581A5 (ko)
CN113924558A (zh) 阶层式存储器系统中的存储器管线控制
JP2009521054A (ja) ダイナミックキャッシュ管理装置及び方法
US20070250668A1 (en) Data processing system, processor and method of data processing that support memory access according to diverse memory models
US6895454B2 (en) Method and apparatus for sharing resources between different queue types
US20070156960A1 (en) Ordered combination of uncacheable writes
CN105830027B (zh) 用于为网络处理器中的处理器核心预取并处理作业的方法和装置
US10366013B2 (en) Caching structure for nested preemption
KR20220083849A (ko) 메모리 컨트롤러

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application