KR20180054836A - 어그리게이팅된 mmu(memory management unit)들을 사용한 메모리 관리 기능성의 제공 - Google Patents
어그리게이팅된 mmu(memory management unit)들을 사용한 메모리 관리 기능성의 제공 Download PDFInfo
- Publication number
- KR20180054836A KR20180054836A KR1020187011644A KR20187011644A KR20180054836A KR 20180054836 A KR20180054836 A KR 20180054836A KR 1020187011644 A KR1020187011644 A KR 1020187011644A KR 20187011644 A KR20187011644 A KR 20187011644A KR 20180054836 A KR20180054836 A KR 20180054836A
- Authority
- KR
- South Korea
- Prior art keywords
- transaction
- output
- mmu
- matr
- input
- 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
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- 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/1008—Correctness of operation, e.g. memory ordering
-
- 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
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)
- Memory System (AREA)
Abstract
어그리게이팅된 MMU(memory management unit)들 및 관련된 장치들 및 방법들을 사용하여 메모리 관리 기능성을 제공하는 것이 개시된다. 일 양상에서, 각각이 복수의 입력 트랜잭션 버퍼들을 포함하는 복수의 입력 데이터 경로들 및 각각이 복수의 출력 트랜잭션 버퍼들을 포함하는 복수의 출력 경로들을 포함하는 어그리게이팅된 MMU가 제공된다. 어그리게이팅된 MMU의 일부 양상들은 부가적으로, 하나 또는 그 초과의 변환 캐시들 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 제공한다. 어그리게이팅된 MMU는 추가로, 입력 트랜잭션 버퍼로부터 MATR(memory address translation request)을 리트리브하고, TMAF(translated memory address field)를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하고, 그리고 TMAF를 출력 트랜잭션 버퍼에 제공하도록 구성된 MMU 관리 회로를 포함한다. 어그리게이팅된 MMU는 또한 각각이 결과적인 메모리 어드레스 변환들을 갖는 트랜잭션들을 출력하도록 구성되는 복수의 출력 데이터 경로들을 제공한다.
Description
[0001] 본 출원은 2015년 9월 25일 출원되고 발명의 명칭이 "PROVIDING MEMORY MANAGEMENT FUNCTIONALITY USING AGGREGATED MEMORY MANAGEMENT UNITS(MMUs)"인 미국 특허 출원 일련 번호 제14/866,228호를 우선권으로 주장하며, 이 출원의 내용들은 그 전체가 인용에 의해 본원에 포함된다.
[0002] 본 개시의 기술은 일반적으로 컴퓨터 프로세싱 시스템의 메모리 관리 유닛들(MMU)에 관한 것이다.
[0003] 메모리 관리 유닛들 또는 MMU들은 컴퓨터 프로세서들 및/또는 주변 디바이스들에 메모리 관리 기능성을 제공하는 최신 컴퓨터 프로세싱 시스템의 엘리먼트들이다. 이러한 메모리 관리 기능성은 가상-물리적 메모리 어드레스 변환 및 캐시뿐만 아니라 메모리 보호 및 속성 제어를 포함할 수 있다. 최신 컴퓨터 프로세서들의 프로세싱 코어들의 수가 증가함에 따라 이러한 프로세싱 코어들에 MMU 기능성을 제공하는 데 전용되는 프로세서 칩 영역의 양도 마찬가지로 증가하였다.
[0004] 현재 당업계에 알려진 MMU 아키텍처들은 MMU 성능을 유지하면서 MMU 기능성을 제공하는 칩 영역 비용을 감소시키는데 비효율적인 것으로 판명되었다. 하나의 이러한 아키텍처는 본원에서 "모놀리식(monolithic) MMU" 아키텍처로서 지칭된다. 모놀리식 MMU 아키텍처를 사용하는 컴퓨터 프로세싱 시스템은 다수의 모놀리식 MMU들을 제공하며, 그 각각은 하나의 입력 데이터 경로 및 하나의 출력 데이터 경로를 포함한다. 각각의 모놀리식 MMU는 또한 그 자신의 변환 캐시 및 트랜잭션 버퍼 및 스케줄러, 및 하나 또는 그 초과의 전용 하드웨어 페이지 테이블 워커(dedicated hardware page table walker)들을 제공한다. 모놀리식 MMU들 각각이 다른 모놀리식 MMU들과 독립적으로 동작하기 때문에, 각각의 고-성능 트래픽-생성 클라이언트마다 하나의 MMU를 제공함으로써 높은 프로세싱 성능이 달성될 수 있다. 그러나, 모놀리식 MMU들은 그의 구성 엘리먼트들의 중복으로 인해 비교적 큰 칩 영역을 소비할 수 있고, 저-성능 클라이언트들 간의 모놀리식 MMU의 공유는 성능 저하를 초래할 수 있다.
[0005] 다른 MMU 아키텍처는 본원에서 "분산(distributed) MMU" 아키텍처로서 지칭된다. 분산 MMU 아키텍처를 사용하는 컴퓨터 프로세싱 시스템에서, 각각의 트래픽-생성 클라이언트는 대응하는 클라이언트 MMU 유닛과 연관될 수 있다. 각각의 클라이언트 MMU 유닛은 그의 연관된 트래픽-생성 클라이언트에 대한 로컬 트랜잭션 버퍼 및 스케줄러 및 로컬 변환 캐시를 제공한다. 클라이언트 MMU 유닛들은 중앙 변환 캐시 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 제공하는 중앙 MMU 유닛에 통신 가능하게 커플링된다. 중앙 MMU 유닛의 하드웨어 페이지 테이블 워커(들)가 클라이언트 MMU 유닛들 사이에서 공유되기 때문에, 분산 MMU 아키텍처는 더 낮은-성능 프로세서들에 대해서 모놀리식 MMU들에 비해 칩 영역 절감들을 제공할 수 있다. 그러나 분산 MMU 아키텍처는 중- 및 고-성능 프로세서들에 잘 맞게 스케일링되지 않는다. 이는 부분적으로, 각각의 클라이언트 MMU 유닛과 중앙 MMU 유닛 간의 인터커넥트(interconnect)들에 필요한 칩 영역뿐만 아니라 클라이언트 MMU 유닛들 및 중앙 MMU 유닛들의 변환 캐시 엔트리의 복제(replication)에 기인한다. 또한, 중앙 MMU 유닛은 메모리 제어기 인터커넥트에 대한 전용 포트를 요구할 수 있으며, 이는 사용되는 칩 영역을 추가로 증가시킬 수 있다.
[0006] 상세한 설명에 개시된 양상들은 어그리게이팅된 메모리 관리 유닛들(MMU)을 사용하여 메모리 관리 기능성을 제공하는 것을 포함한다. 관련된 장치들 및 방법들이 또한 개시된다. 이와 관련하여, 일 양상에서, 어그리게이팅된 MMU가 제공된다. 어그리게이팅된 MMU는 각각이 대응하는 입력 데이터 경로에 대한 액세스를 제공하는 복수의 입력 데이터 포트들, 및 각각이 출력 데이터 포트를 구동하는 복수의 출력 데이터 경로들을 포함한다. 복수의 입력 데이터 경로들 각각은 그 자신의 전용 입력 트랜잭션 버퍼를 포함한다. 유사하게, 복수의 출력 데이터 경로들 각각은 그 자신의 전용 출력 트랜잭션 버퍼를 포함한다. 일부 양상들에서, 입력 데이터 경로들의 수는 출력 데이터 경로들의 수와 동일하거나, 더 크거나, 또는 더 작을 수 있다. 일부 양상들에서, 입력 데이터 포트들의 수는 출력 데이터 포트들의 수와 동일하거나, 더 크거나, 또는 더 작을 수 있다. 어그리게이팅된 MMU는 또한 입력 트랜잭션 버퍼에 상주하는 변환-전 트랜잭션들에 대한 MATR(memory address translation request)을 리트리브하도록 구성되는 MMU 관리 회로를 포함한다. MMU 관리 회로는, TMAF(translated memory address field)를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하고, 출력 데이터 경로를 통해 출력 데이터 포트로 변환-후 트랜잭션의 부분으로서 출력되도록 TMAF를 출력 트랜잭션 버퍼에 제공한다. 이러한 방식으로, 다양한 입력 데이터 경로들에 연결되는 다수의 트래픽-생성 클라이언트들은 임의의 단일 클라이언트가 MMU 자원들을 독점하는 것을 방지하면서 어그리게이팅된 MMU에 의해 효율적으로 서비스될 수 있다.
[0007] MMU 관리 회로의 일부 양상들은 하나 또는 그 초과의 변환 캐시들을 포함한다. 일부 양상들에 따라, 하나 또는 그 초과의 변환 캐시들 각각은 모든 입력 데이터 경로들 사이에서 공유될 수 있고 그리고/또는 각각, 입력 데이터 경로들의 서브세트 사이에서 공유되고 그리고/또는 하나 또는 그 초과의 입력 데이터 경로에 전용되는 다수의 더 작은 캐시들로 파티셔닝될 수 있다. 어그리게이팅된 MMU의 일부 양상들은 부가적으로 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 제공한다. 일부 양상들에서, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들은 모든 입력 데이터 경로들 사이에서 공유될 수 있고, 특정 입력 데이터 경로 또는 입력 데이터 경로들에 대해 각각 예약되는 그룹들로 분할될 수 있고 그리고/또는 QoS(Quality of Service) 방식에 의해 정의된 바와 같은 특정 우선순위들을 갖는 트랜잭션들에 대해 예약되는 그룹들로 분할될 수 있다. 일부 양상들은, 제어 및 관리 회로의 공유를 가능하게 하기 위해 입력 데이터 경로, 출력 데이터 경로, 하나 또는 그 초과의 변환 캐시들 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들이 상호연결될 수 있다는 것을 규정할 수 있다.
[0008] 일부 양상들에서, MMU 관리 회로는 내부적으로 공유되는 자원들에 대한 액세스를 관리하기 위해 다수의 프로세싱 지점들에서 내부 QoS(Quality-of-Service) 중재를 적용하도록 구성된다. 비-제한적인 예로서, 본원에서 개시된 일부 양상들에서의 MMU 관리 회로는, 입력 트랜잭션 QoS 중재에 따라 입력 트랜잭션 버퍼들에 상주하는 변환-전 트랜잭션의 MATR을 수신하고, 변환-전 트랜잭션의 MATR을 PTAB(pending transaction address buffer)에 배치할 수 있는 입력 변환 스케줄러를 포함한다. 일부 양상들에 따라, PTAB는 모든 입력 데이터 경로들 사이에서 공유될 수 있고, 특정 입력 데이터 경로 또는 입력 데이터 경로들의 그룹에 대해 각각 예약되는 엔트리들의 그룹들로 분할될 수 있고 그리고/또는 QoS 방식에 의해 정의된 바와 같은 특정 우선순위들을 갖는 트랜잭션들에 대해 각각 예약되는 엔트리들의 그룹들로 분할될 수 있다.
[0009] 일부 양상들에 따라, MMU 관리 회로는 또한 PTAB로의 변환-전 트랜잭션들에 대한 MATR들의 부가를 모니터링하는 MMU 관리자를 포함할 수 있고, 하나 또는 그 초과의 보류중인 MATR들 간의 QoS 중재에 따라 프로세싱하기 위한 MATR들을 선택할 수 있다. MMU 관리자는 캐시된 메모리 어드레스 변환 결과가 MATR에 대한 하나 또는 그 초과의 변환 캐시들에 존재하는지를 결정할 수 있고, 만약 그렇다면, 캐시된 메모리 어드레스 변환 결과를 PTAB에 제공할 수 있다. 만약 그렇지 않다면, MMU 관리자는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들 중 하나에 MATR의 변환을 할당할 수 있다. MMU 관리 회로의 일부 양상들은 추가로, PTAB로부터 완성된 TMAF를 리트리브하고, 출력 트랜잭션들에 대한 QoS 중재 정책에 따라 대응하는 출력 트랜잭션 버퍼에 TMAF를 큐잉하는 출력 변환 스케줄러를 제공할 수 있다. 위에서 언급한 것들과 같은 전용 및 공유 엘리먼트들의 혼합을 제공함으로써, 어그리게이팅된 MMU는, 모놀리식 MMU 및 분산형 MMU들 둘 모두에 비해 영역 비용을 감소시키면서 개선된 성능을 제공할 수 있다.
[0010] 일 양상에서, 어그리게이팅된 MMU가 제공된다. 어그리게이팅된 MMU는, 복수의 입력 데이터 포트들을 포함하며, 이들 각각은 복수의 메모리 어드레스 변환-전 판독 트랜잭션들 및 복수의 변환-전 기록 트랜잭션들을 수신하도록 구성된 복수의 입력 데이터 경로들에 변환-전 트랜잭션들을 전달하도록 구성된다. 복수의 입력 데이터 경로들은 복수의 변환-전 트랜잭션들의 각각의 변환-전 트랜잭션들을 저장하도록 구성된 복수의 입력 트랜잭션 버퍼 슬롯들을 각각 포함하는 대응하는 복수의 입력 트랜잭션 버퍼들을 포함한다. 어그리게이팅된 MMU는 추가로, 대응하는 복수의 출력 트랜잭션 버퍼들을 포함하는 복수의 출력 데이터 경로들을 포함한다. 복수의 출력 트랜잭션 버퍼들 각각은, 복수의 변환-후 트랜잭션들의 각각의 변환-후 트랜잭션을 저장하도록 구성된 복수의 출력 트랜잭션 버퍼 슬롯들을 포함한다. 어그리게이팅된 MMU는 또한 MMU 관리 회로를 포함한다. MMU 관리 회로는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 변환-전 트랜잭션의 MATR을 리트리브하도록 구성된다. MMU 관리 회로는 추가로, TMAF를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하도록 구성된다. MMU 관리 회로는 또한, 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 TMAF 및 변환-전 트랜잭션 페이로드를 제공하도록 구성된다. 어그리게이팅된 MMU의 복수의 출력 데이터 경로들의 각각의 출력 데이터 경로는 대응하는 복수의 출력 데이터 포트들을 통해 변환-후 트랜잭션을 출력하도록 구성된다.
[0011] 일 양상에서, 어그리게이팅된 MMU가 제공된다. 어그리게이팅된 MMU는 복수의 입력 데이터 경로들에 대응하는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 MATR을 리트리브하기 위한 수단을 포함한다. 어그리게이팅된 MMU는 추가로, TMAF를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 수단을 포함한다. 어그리게이팅된 MMU는 또한, 복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 TMAF 및 변환-전 트랜잭션 페이로드를 제공하기 위한 수단을 포함한다. 어그리게이팅된 MMU는 부가적으로, 복수의 출력 데이터 경로들 중 출력 데이터 경로를 통해 복수의 출력 데이터 포트들 중 출력 데이터 포트로 변환-후 트랜잭션을 출력하기 위한 수단을 포함한다.
[0012] 다른 양상에서, 메모리 관리를 제공하기 위한 방법이 제공된다. 이 방법은, 어그리게이팅된 MMU(memory management unit)에 의해, 복수의 입력 데이터 경로들에 대응하는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 MATR을 리트리브하는 단계를 포함한다. 방법은 추가로, TMAF를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하는 단계를 포함한다. 방법은 또한, 어그리게이팅된 MMU는 또한, 복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 TMAF 및 변환-전 트랜잭션 페이로드를 제공하는 단계를 포함한다. 방법은 부가적으로, 복수의 출력 데이터 경로들 중 출력 데이터 경로를 통해 복수의 출력 데이터 포트들 중 출력 데이터 포트로 변환-후 트랜잭션을 출력하는 단계를 포함한다.
[0013] 도 1a 및 도 1b는 변환-전 트랜잭션들(즉, 판독 및/또는 기록 트랜잭션들)의 예시적인 구성 필드들 및 각각이 메모리 관리 유닛(MMU)의 동작에 의해 어떻게 수정될 수 있는지를 도시하는 도면들이다.
[0014] 도 2a는 모놀리식 MMU 아키텍처에 기초한 예시적인 컴퓨터 프로세싱 시스템의 블록도이다.
[0015] 도 2b는 분산 MMU 아키텍처에 기초한 예시적인 컴퓨터 프로세싱 시스템의 블록도이다.
[0016] 도 3a 내지 도 3c는 모놀리식 MMU들 및 분산 MMU들에 대한 칩 영역 요건들을 감소시키면서 메모리 관리 기능성을 제공하는 예시적인 어그리게이팅된(aggregated) MMU들의 블록도들이다.
[0017] 도 4는, 도 3a 내지 도 3c의 어그리게이팅된 MMU의 MMU 관리 회로의 추가의 예시적인 엘리먼트들을 도시하는 블록도이다.
[0018] 도 5a 내지 도 5f는, 도 4의 어그리게이팅된 MMU 및 그의 구성 엘리먼트들에 의한 MATR(memory address translation request)의 종단간 프로세싱을 예시하는 블록도들이다.
[0019] 도 6a 및 도 6b는 도 4의 예시적인 어그리게이팅된 MMU에 의한 메모리 관리 기능성을 제공하기 위한 예시적인 동작들을 예시하는 흐름도들이다.
[0020] 도 7은 MATR들을 프로세싱하기 위한, 도 4의 입력 변환 스케줄러 및 PTAB(pending transaction address buffer)의 예시적인 동작들을 예시하는 흐름도이다.
[0021] 도 8은 보류중인 트랜잭션들의 프로세싱을 완료하기 위한 도 4의 출력 변환 스케줄러 및 PTAB의 예시적인 동작들을 예시하는 흐름도이다.
[0022] 도 9a 및 도 9b는 보류중인 트랜잭션들에 대한 메모리 어드레스 변환들을 제공하기 위해 도 4의 하나 또는 그 초과의 변환 캐시들 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 사용하기 위한 도 4의 MMU 관리자의 예시적인 동작들을 예시하는 흐름도들이다.
[0023] 도 10은 도 3a 내지 도 3c의 어그리게이팅된 MMU를 포함할 수 있는 예시적인 프로세서-기반 시스템의 블록도이다.
[0014] 도 2a는 모놀리식 MMU 아키텍처에 기초한 예시적인 컴퓨터 프로세싱 시스템의 블록도이다.
[0015] 도 2b는 분산 MMU 아키텍처에 기초한 예시적인 컴퓨터 프로세싱 시스템의 블록도이다.
[0016] 도 3a 내지 도 3c는 모놀리식 MMU들 및 분산 MMU들에 대한 칩 영역 요건들을 감소시키면서 메모리 관리 기능성을 제공하는 예시적인 어그리게이팅된(aggregated) MMU들의 블록도들이다.
[0017] 도 4는, 도 3a 내지 도 3c의 어그리게이팅된 MMU의 MMU 관리 회로의 추가의 예시적인 엘리먼트들을 도시하는 블록도이다.
[0018] 도 5a 내지 도 5f는, 도 4의 어그리게이팅된 MMU 및 그의 구성 엘리먼트들에 의한 MATR(memory address translation request)의 종단간 프로세싱을 예시하는 블록도들이다.
[0019] 도 6a 및 도 6b는 도 4의 예시적인 어그리게이팅된 MMU에 의한 메모리 관리 기능성을 제공하기 위한 예시적인 동작들을 예시하는 흐름도들이다.
[0020] 도 7은 MATR들을 프로세싱하기 위한, 도 4의 입력 변환 스케줄러 및 PTAB(pending transaction address buffer)의 예시적인 동작들을 예시하는 흐름도이다.
[0021] 도 8은 보류중인 트랜잭션들의 프로세싱을 완료하기 위한 도 4의 출력 변환 스케줄러 및 PTAB의 예시적인 동작들을 예시하는 흐름도이다.
[0022] 도 9a 및 도 9b는 보류중인 트랜잭션들에 대한 메모리 어드레스 변환들을 제공하기 위해 도 4의 하나 또는 그 초과의 변환 캐시들 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 사용하기 위한 도 4의 MMU 관리자의 예시적인 동작들을 예시하는 흐름도들이다.
[0023] 도 10은 도 3a 내지 도 3c의 어그리게이팅된 MMU를 포함할 수 있는 예시적인 프로세서-기반 시스템의 블록도이다.
[0024] 이제 도면들을 참조하여, 본 개시의 여러 예시적인 양상들이 설명된다. "예시적인"이란 단어는, "예, 경우 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. "예시적인" 것으로서 본원에서 설명된 임의의 양상은 다른 양상들에 비해 반드시 바람직하거나 유리한 것으로서 해석될 필요는 없다.
[0025] 상세한 설명에 개시된 양상들은 어그리게이팅된 메모리 관리 유닛들(MMU)을 사용하여 메모리 관리 기능성을 제공하는 것을 포함한다. 모놀리식 MMU 및 분산 MMU 아키텍처들, 예시적인 어그리게이팅된 MMU의 엘리먼트들 및 동작들을 보다 상세하게 설명하기 전에, 변환-전 트랜잭션들(즉, 판독 및/또는 기록 트랜잭션들)의 예시적인 구성 필드들 및 각각이 MMU의 동작에 의해 어떻게 수정될 수 있는지가 논의된다. 이와 관련하여, 도 1a 및 도 1b가 제공된다. 도 1a는 예시적인 변환-전 기록 트랜잭션을 예시하는 반면에, 도 1b는 예시적인 판독 트랜잭션을 예시한다.
[0026] 이제 도 1a를 참조하면, 클라이언트(도시되지 않음)로부터 발신되는 변환-전 기록 트랜잭션(10)은, 2개의 부분들 즉, 트랜잭션 MATR(memory address translation request)(12) 및 WRP(write request payload)(14)로 구성될 수 있다. MMU(16)는 클라이언트로부터 변환-전 기록 트랜잭션(10)을 수신하고 필요에 따라 그의 구성 서브-컴포넌트들을 수정함으로써 MATR(12)을 프로세싱한다. 특히, MATR(12)의 가상 어드레스(18)는 MMU(16)에 의해 물리적 어드레스(20)로 변환된다. MATR(12)의 액세스 속성들(22) 및 QoS 속성들(24)은 TMAF(translated memory access field)(30)의 액세스 속성들(26) 및 QoS 속성들(28)로 각각 수정될 수 있거나, 또는 수정되지 않은 채로 액세스 속성들(26) 및 QoS 속성들(28) 내로 카피될 수 있다. MMU(16)는 변환-전 기록 트랜잭션(10)으로부터의 수정되지 않은 WRP(14)(기록 속성(34) 및 기록(WR) 트랜잭션 데이터(36)를 포함함)를 TMAF(30)에 첨부함으로써 변환-후 기록 트랜잭션(32)을 출력한다.
[0027] 유사하게, 도 1b에서 알 수 있는 바와 같이, 예시적인 변환-전 판독 트랜잭션(38)은 2개의 부분들 : MATR(40) 및 RRP(read request payload)(42)로 구성된다. MMU(16)는 클라이언트(도시되지 않음)로부터 변환-전 판독 트랜잭션(38)을 수신하고 필요에 따라 그의 구성 서브-컴포넌트들을 수정함으로써 MATR(40)을 프로세싱한다. MATR(40)의 가상 어드레스(44)는 MMU(16)에 의해 물리적 어드레스(46)로 변환된다. MATR(40)의 액세스 속성들(48) 및 QoS 속성들(50)은 TMAF(56)의 액세스 속성들(52) 및 QoS 속성들(54)로 각각 수정될 수 있거나, 또는 변경되지 않은 채로 액세스 속성들(52) 및 QoS 속성들(54) 내로 카피될 수 있다. MMU(16)는 변환-전 판독 트랜잭션(38)으로부터의 수정되지 않은 RRP(42)(판독 속성(60)을 포함함)를 TMAF(56)에 첨부함으로써 변환-후 판독 트랜잭션(58)을 출력한다.
[0028] 이제 도 2a를 참조하면, 모놀리식 MMU 아키텍처를 예시하는 컴퓨터 프로세싱 시스템(100)은 다수의 모놀리식 MMU(102(0)-102(3))를 제공한다. 모놀리식 MMU들(102(0)-102(3)) 각각은, 하나의 입력 데이터 경로(104(0)-104(3)) 및 하나의 출력 데이터 경로(106(0)-106(3))를 각각 포함한다. 모놀리식 MMU들(102(0)-102(3)) 각각은 또한, 변환 캐시(108(0)-108(3)), 트랜잭션 버퍼 및 스케줄러(110(0)-110(3)) 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(112(0)-112(3))을 각각 제공한다. 그 결과, 모놀리식 MMU들(102(0)-102(3))은 컴퓨터 프로세싱 시스템(100) 내에서 서로 독립적으로 동작할 수 있다. 도 2a의 예에서, 모놀리식 MMU들(102(2) 및 102(3))의 출력 데이터 경로들(106(2) 및 106(3))은 메모리 제어기 인터커넥트(114)로 직접 라우팅되는 반면에, 모놀리식 MMU들(102(0) 및 102(1))의 출력 데이터 경로들(106(0) 및 106(1))은 인터커넥트(116)에 의해 멀티플렉싱된다. 이러한 방식으로, 모놀리식 MMU들(102(0)-102(3))은 메모리 제어기 인터커넥트(114)를 통해 메모리 제어기, 예컨대, 메모리 제어기들(118(0) 내지 118(X)) 중 하나에 메모리 어드레스 변환 결과들을 제공할 수 있다.
[0029] 도 2a의 클라이언트들(120, 122, 124, 126, 128 및 130)은 트래픽-생성 클라이언트들을 표현하며, 이들 각각은 MATR들(도시되지 않음)의 형태의 트래픽 및 대응하는 입력 데이터 경로들(104(0)-104(3))을 통해 모놀리식 MMU들(102(0)-102(3))에 통신되는 다른 데이터를 생성한다. 도 2a의 예에서, 클라이언트들(120, 122 및 130)은 예를 들어, 높은 볼륨(volume)의 MATR들을 생성할 수 있는 고-성능 트래픽-생성 클라이언트들을 표현한다. 따라서, 클라이언트들(120, 122 및 130)은 각각, 모놀리식 MMU(102(0)-102(2)) 중 단일의 하나에 의해 각각 배타적으로 서비스된다. 결과적으로, 모놀리식 MMU들(102(0)-102(2))의 변환 캐시들(108(0)-108(2)), 트랜잭션 버퍼들 및 스케줄러들(110(0)-110(2)) 및 하드웨어 페이지 테이블 워커들(112(0)-112(2))은 대응하는 클라이언트들(120, 122 및 130)에 대해 효과적으로 전용된다. 클라이언트들(120, 122 및 130)이 MMU 자원들을 놓고 다른 트래픽-생성 클라이언트들과 경쟁할 필요가 없기 때문에, 모놀리식 MMU들(102(0)-102(2))은 높은 레벨의 성능을 제공할 수 있다.
[0030] 그러나, 모놀리식 MMU들(102(0)-102(3)) 각각에 의해 소비되는 잠재적으로 큰 칩 영역으로 인해, 모놀리식 MMU들(102(0)-102(3)) 중 전용되는 하나를 각각의 모든(every) 트래픽-생성 클라이언트에 제공하는 것이 실현 가능하지 않을 수 있다. 따라서, 클라이언트들(124, 126 및 128)과 같은 저-성능 트래픽-생성 클라이언트들에 대해, 컴퓨터 프로세싱 시스템(100)은 트래픽을 단일 트래픽 스트림으로 멀티플렉싱하기 위해 인터커넥트(132)와 같은 외부 트래픽 멀티플렉서(multiplexor)를 사용할 수 있다. 그 후, 인터커넥트(132)는 트래픽 스트림을 단일 모놀리식 MMU(102(3))의 입력 데이터 경로(104(3))로 지향시킬 수 있다. 이러한 방식으로, 모놀리식 MMU(102(3))는 다수의 클라이언트들(124, 126 및 128)을 서비스할 수 있다. 이 접근법은 메모리 관리 기능성을 제공하는데 필요한 칩 영역을 감소시킬 수 있지만, 그것은 클라이언트들(124, 126 및 128) 간의 모놀리식 MMU(102(3))의 MMU 자원들의 공유로 인해 발생하는 부가적인 성능 이슈들을 야기할 수 있다. 예를 들어, 변환 캐시(108(3))가 공유되기 때문에, 클라이언트들(124, 126 및 128)이 변환 캐시(108(3))로부터 서로의 엔트리들을 반복적으로 퇴거(evict)시키는 "스레싱(thrashing)" 조건이 발생할 수 있다. 더욱이, 트랜잭션 버퍼 및 스케줄러(110(3))가 공유되기 때문에, 공격적인 클라이언트가 트랜잭션 버퍼 및 스케줄러(110(3))의 모든 슬롯들을 점유하여, 덜 공격적인 클라이언트들로부터의 트래픽에 대한 액세스를 사실상 거부하는 것이 가능할 수 있다.
[0031] 도 2b의 컴퓨터 프로세싱 시스템(200)에 의해 예시된 분산 MMU 아키텍처는 도 2a의 모놀리식 MMU 아키텍처에 내재된 단점들 중 일부를 해결하려고 시도한다. 도 2b의 예에서, 컴퓨터 프로세싱 시스템(200)은, 대응하는 클라이언트 MMU 유닛들(212(0)-212(4))과 연관되는 트래픽-생성 클라이언트들(202, 204, 206, 208 및 210)을 포함한다. 클라이언트 MMU 유닛들(212(0)-212(4))은 그들의 연관된 트래픽-생성 클라이언트들(202, 204, 206, 208, 210)에게 각각의 로컬 트랜잭션 버퍼 및 스케줄러들(214(0)-214(4)) 및 로컬 변환 캐시들(216(0)-216(4))을 제공한다. 컴퓨터 프로세싱 시스템(200)은 추가로, 중앙 변환 캐시(220), 보류중인 어드레스 변환 버퍼(222) 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(224)을 제공하는 중앙 MMU 유닛(218)을 포함한다. 중앙 변환 캐시(220)는 로컬 변환 캐시들(216(0)-216(4))에 비해 대형이며 트래픽-생성 클라이언트들(202, 204, 206, 208, 및 210)의 클라이언트 MMU 유닛들(212(0)-212(4)) 사이에서 공유된다. 유사하게, 중앙 MMU 유닛(218)의 하드웨어 페이지 테이블 워커(들)(224)에 의해 제공되는 기능성은 트래픽-생성 클라이언트들(202, 204, 206, 208, 및 210)의 클라이언트 MMU 유닛들(212(0)-212(4)) 사이에서 공유된다. 도 2b에서 알 수 있는 바와 같이, 메모리 제어기들(226(0)-226(Y))에 대한 액세스는 클라이언트 MMU 유닛들(212(3)-212(4))과 같은 클라이언트 MMU 유닛들로부터 메모리 제어기 인터커넥트(228)로의 집적 연결에 의해 제공될 수 있거나, 또는 클라이언트 MMU 유닛(212(0)-212(2))과 같은 클라이언트 MMU들로부터의 출력을 어그리게이팅하는 인터커넥트(230)에 의해 제공될 수 있다.
[0032] 중앙 MMU 유닛(218)의 하드웨어 페이지 테이블 워커(들)(224)가 클라이언트 MMU 유닛들(212(0)-212(4)) 사이에서 공유되기 때문에, 분산 MMU 아키텍처는 더 낮은-성능의 컴퓨터 프로세싱 시스템들에 대한 모놀리식 MMU들(102(0)-102(3))에 비해 칩 영역 절감들을 제공할 수 있다. 그러나, 도 2b에 예시된 분산 MMU 아키텍처는, 그것이 중- 및 고-성능 컴퓨터 프로세싱 시스템들에 잘 맞지 않게 하는 성능 및 영역 양자의 단점들을 초래할 수 있다. 예를 들어, 로컬 변환 캐시들(216(0)-216(4)) 중 하나에서의 캐시 미스의 경우에, 중앙 변환 캐시(220)에 대한 결과적인 메모리 액세스는 긴 레이턴시를 겪을 수 있으며, 이는 중앙 변환 캐시(220)에서의 캐시 미스의 경우에 추가로 악화될 수 있다. 또한, 중앙 변환 캐시(220)가 클라이언트 MMU 유닛들(212(0)-212(4)) 사이에서 공유되기 때문에, 스레싱 조건이 발생할 수 있고, 그리고/또는 중앙 변환 캐시(220) 내의 공간이 모든 클라이언트 MMU 유닛들(212(0)-212(4))에 대해 불충분할 수 있다. 또한, 분산 MMU 아키텍처에 필요한 칩 영역은, 각각의 클라이언트 MMU 유닛(212(0)-212(4))과 중앙 MMU 유닛(218) 사이의 인터커넥트들 뿐만 아니라 메모리 제어기 인터커넥트(228)에 대한 전용 포트(232)로 인해 증가할 수 있다.
[0033] 따라서, 도 2a의 모놀리식 MMU 아키텍처 및 도 2b의 분산 MMU 아키텍처의 단점들을 해결하기 위해, 어그리게이팅된 MMU가 제공된다. 이와 관련하여, 도 3a는 예시적인 어그리게이팅된 MMU(300)를 예시한다. 어그리게이팅된 MMU(300)는 다른 엘리먼트들 중에서도, 알려진 디지털 로직 엘리먼트들, 반도체 회로들, 프로세싱 코어들 및/또는 메모리 구조들, 또는 이들의 결합 중 임의의 하나를 포함할 수 있다는 것이 이해될 것이다. 본원에서 설명된 양상들은 엘리먼트들의 임의의 특정 어레인지먼트로 제한되지 않고, 개시된 기술들은 반도체 다이들 또는 패키지들 상의 다양한 구조들 및 레이아웃들로 용이하게 확장될 수 있다.
[0034] 어그리게이팅된 MMU(300)는 대응하는 복수의 입력 데이터 포트들(303(0)-303(N))에 연결된 복수의 입력 데이터 경로들(302(0)-302(N))을 제공한다. 입력 데이터 경로들(302(0)-302(N)) 각각은 각각의 입력 트랜잭션 버퍼(304(0)-304(N))를 제공하고, 각각의 출력 트랜잭션 버퍼(306(0)-306(Q))를 제공하는 출력 데이터 경로(305(0)-305(Q))와 연관된다. 입력 트랜잭션 버퍼들(304(0)-304(N))은 입력 트랜잭션 버퍼 슬롯들("ITB 슬롯")(308(0)-308(A), 310(0)-310(C), 및 312(0)-312(E))을 각각 포함하는 반면에, 출력 트랜잭션 버퍼들(306(0)-306(Q))은 출력 트랜잭션 버퍼 슬롯들("OTB 슬롯")(314(0)-314(B), 316(0)-316(D), 및 318(0)-318(F))을 각각 포함한다. 각각의 입력 데이터 경로(302(0)-302(N))는 다른 입력 데이터 경로(302(0)-302(N))와 공유되지 않는 그 자신의 입력 트랜잭션 버퍼(304(0)-304(N))를 포함하기 때문에, 입력 데이터 경로들(302(0)-302(N)) 중 하나를 통과하는 데이터는 입력 데이터 경로들(302(0)-302(N))로부터의 데이터와 혼합되지 않는다. 결과적으로, 어그리게이팅된 MMU(300)는, 위에서 논의된 분산 MMU 아키텍처에서 발생할 수 있는 바와 같이, 공격적인 클라이언트가 입력 트랜잭션 버퍼 슬롯들(308(0)-308(A), 310(0)-310(C) 및 312(0)-312(E)) 모두를 점유하는 것을 방지할 수 있다.
[0035] 어그리게이팅된 MMU(300)는 추가로, 복수의 출력 데이터 포트들(320(0)-320(M))을 제공한다. 도 3a의 예에서, 입력 데이터 포트들(303(0)-303(N))의 수(N)은 출력 데이터 포트들(320(0)-320(M))의 수(M)와 동일하다. 그러나, 도 3b와 관련하여 아래에서 보다 상세히 논의되는 바와 같이, 일부 양상들은 입력 데이터 포트들(303(0)-303(N))의 수(N)가 출력 데이터 포트들(320(0)-320(M))의 수(M)보다 클 수 있음을 규정할 수 있다. 본원에서 개시된 일부 양상들에 따라, 입력 데이터 경로들(302(0)-302(N)) 각각은 어그리게이팅된 MMU(300)의 클록 주파수에 비해 더 높은 또는 더 낮은 클록 주파수를 제공하도록 독립적으로 클로킹될 수 있다. 이는 어그리게이팅된 MMU(300)에 의한 전력 소비를 감소시킬 수 있다.
[0036] 도 3a에서 알 수 있는 바와 같이, 어그리게이팅된 MMU(300)는 트래픽 생성 클라이언트들(322, 324, 326, 328, 및 330)로부터 입력 데이터 포트들(303(0)-303(N))을 통해 입력 데이터 경로들(302(0)-302(N))로, 변환-전 트랜잭션들(예를 들어, 도 1a의 변환-전 기록 트랜잭션(10) 및/또는 도 1b의 변환-전 판독 트랜잭션(38))을 수신하도록 구성된다. 일부 양상들에서, 도 3a에 예시된 것보다 더 많거나 적은 트래픽-생성 클라이언트들이 어그리게이팅된 MMU(300)에 의해 서비스될 수 있다는 것이 이해될 것이다. 어그리게이팅된 MMU(300)는 클라이언트(322)의 경우에서와 같이 클라이언트에 직접 통신 가능하게 커플링될 수 있거나, 인터커넥트들(332 및 334)과 같은 인터커넥트로부터 데이터의 멀티플렉싱된 스트림을 수신할 수 있다. 어그리게이팅된 MMU(300)의 MMU 관리 회로(336)는, 입력 트랜잭션 버퍼들(304(0)-304(N))로부터 각각의 변환-전 트랜잭션에 대한 MATR(예를 들어, 도 1a의 MATR(12) 및/또는 도 1b의 MATR(40))을 리트리브하는 것, 대응하는 TMAF(예를 들어, 도 1a의 TMAF(30) 및/또는 도 1b의 TMAF(56))를 생성하기 위해 메모리 어드레스 변환 동작들을 수행하는 것, 그리고 출력 데이터 경로들(305(0)-305(Q)) 내에 로케이팅된 출력 트랜잭션 버퍼들(306(0)-306(Q))에 TMAF를 제공하는 것을 담당한다. MMU 관리 회로(336)의 예시적인 구성 엘리먼트들 및 동작들은 도 4 및 도 5a 내지 도 5f와 관련하여 아래에서 보다 상세히 논의된다. TMAF는, 변환-후 트랜잭션(예를 들어, 도 1a의 변환-후 기록 트랜잭션(32) 및/또는 도 1b의 변환-후 판독 트랜잭션(58))으로서 대응하는 요청 페이로드(예를 들어, 도 1a의 WRP(14) 및/또는 도 1b의 RRP(42))와 결합되며, 이는 그 후, 출력 데이터 경로들(305(0)-305(Q))을 경유하여, 출력 데이터 포트들(320(0)-320(M))을 통해 트래픽 인터커넥트(338)로 출력된다. 그 후, 트래픽 인터커넥트(338)는 변환-후 트랜잭션을 메모리 제어기들(340(0)-340(Z))에 제공할 수 있다.
[0037] 위에서 언급된 바와 같이, 어그리게이팅 MMU(300)의 일부 양상들은 입력 데이터 포트들(303(0)-303(N))의 수(N)가 출력 데이터 포트들(320(0)-320(M))의 수(M)보다 크다는 것을 규정할 수 있다. 이와 관련하여, 도 3b는 예시적인 어그리게이팅된 MMU(300')를 예시한다. 어그리게이팅된 MMU(300')는 도 3a의 어그리게이팅된 MMU(300)의 동일 구성 엘리먼트들을 포함하고, 메모리 어드레스 변환이 발생한 이후, 출력 데이터 경로들(305(0)-305(Q))로부터의 트래픽을 단일 출력 데이터 포트(360(M))로 결합하기 위한 변환-후 중재기(post-translation arbiter)(342)를 추가로 제공한다. 도 3b의 예에서, 변환-후 중재기(342)는 출력 데이터 경로들(305(1)-305(Q))로부터 다수의 변환-후 트랜잭션들(도시되지 않음)을 수신할 수 있고, 변환-후 QoS 중재에 기초하여 출력 데이터 포트(320(M))에 출력될 변환-후 트랜잭션을 선택할 수 있다. 변환-후 중재기(342)에 의해 수행되는 변환-후 QoS 중재는, 라운드 로빈 중재, 우선순위 라운드 로빈 중재, 엄격한 우선순위 중재, 크래딧-기반 중재, 선입선출 중재, 가중화된 라운드-로빈 중재, 연령-기반 중재, 동적 우선순위 중재, 랜덤 중재, 공정율(fair-rate) 중재 및/또는 임의의 다른 형태의 중재를 포함(그러나 이에 제한되지 않음)하는 당 분야에 알려진 임의의 QoS 중재 방법을 포함할 수 있다.
[0038] 어그리게이팅 MMU(300)의 일부 양상들은 입력 데이터 경로들(302(0)-302(N))의 수(N)가 출력 데이터 경로들(305(0)-305(Q))의 수(Q)보다 크다는 것을 규정할 수 있다. 이와 관련하여, 도 3c는 예시적인 어그리게이팅된 MMU(300")를 예시한다. 어그리게이팅된 MMU(300")는, 어그리게이팅된 MMU(300")가 입력 데이터 경로들(302(0)-302(N))의 수(N)보다 적은 수(Q)의 출력 데이터 경로들(305(0)-305(Q))을 제공한다는 것을 제외하면, 도 3a의 어그리게이팅된 MMU(300)의 모든 양상들과 유사하다. 어그리게이팅된 MMU(300")에서, MMU 관리 회로(336)는 다수의 입력 데이터 경로들로부터의 트래픽을 하나의 공유된 출력 데이터 경로로 지향시킨다. 도 3c의 예에서, 입력 데이터 경로들(302(0) 및 302(1))로부터의 트래픽은 메모리 어드레스 변환이 발생한 후에, 단일 공유된 출력 데이터 경로(305(0))로 결합된다. 도 3c의 출력 데이터 경로(305(0))는 입력 데이터 경로들(302(0)-302(1))로부터 다수의 변환-후 트랜잭션들을 수신할 수 있고, 입력 데이터 경로들(302(0) 내지 302(1)) 간의 변환-후 QoS 중재에 기초하여 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))에 전달될 트랜잭션을 선택할 수 있다. 출력 데이터 경로(305(0))에 의해 수행되는 변환-후 QoS 중재는, 라운드 로빈 중재, 우선순위 라운드 로빈 중재, 엄격한 우선순위 중재, 크래딧-기반 중재, 선입선출 중재, 가중화된 라운드-로빈 중재, 연령-기반 중재, 동적 우선순위 중재, 랜덤 중재, 공정율 중재 및/또는 임의의 다른 형태의 중재를 포함(그러나 이에 제한되지 않음)하는 당 분야에 알려진 임의의 QoS 중재 방법을 포함할 수 있다.
[0039] 출력 데이터 경로(305(0))가 다수의 입력 데이터 경로들(302(0)-302(1)) 간에 공유되는 상황들에서, 하나의 입력 데이터 경로(302(0)-302(1))로부터의 어떠한 트랜잭션들도 모든 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))을 점유하지 않고, 이에 따라 다른 입력 데이터 경로들(302(0)-302(1))이 공유된 출력 데이터 경로(305(0))에 그의 트랜잭션들을 송신하는 것을 방지하지 않는 것이 바람직할 수 있다. 또한, (예를 들어, 도 1a의 QoS 속성들(24, 28) 및/또는 도 1b의 QoS 속성들(50, 54)에 의해 표시된 바와 같은) 더 낮은 우선순위 트랜잭션들이 모든 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))을 점유하고 이에 따라, 더 높은 우선순위 트랜잭션이 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))에 액세스하는 것을 일시적으로 거부하지 않도록 보장하는 것이 바람직할 수 있다. 이러한 조건들을 방지하기 위해, 공유된 출력 데이터 경로(305(0))는 일부 양상들에서, 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))의 다수의 서브세트들(각각은 입력 데이터 경로들(302(0)-302(N)) 중 하나 또는 그 초과로부터 발신되는 트랜잭션들의 배타적 사용을 위한 것임)의 예약을 허용하면서, 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))의 나머지가 모든 입력 데이터 경로들(302(0)-302(N)) 사이에서 공유되도록 허용하게 구성될 수 있다. 일부 양상들에 따라, 공유된 출력 데이터 경로(305(0))는 일부 양상들에서, 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))의 다수의 서브세트들(각각은 특정 QoS 속성을 갖는 트랜잭션들의 배타적 사용을 위한 것임)의 예약을 허용하면서, 출력 트랜잭션 버퍼 슬롯들(314(0)-314(B))의 나머지가 QoS 속성들을 토대로 한 차별 없이 모든 트랜잭션들 사이에서 공유되도록 허용하게 구성될 수 있다.
[0040] 일부 양상들에 따라 도 3a의 어그리게이팅된 MMU(300)의 MMU 관리 회로(336)의 예시적인 구성 엘리먼트들을 더 잘 예시하기 위해, 도 4가 제공된다. 도 4의 예에서, MMU 관리 회로(336)는 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))을 포함할 수 있다. 일부 양상들에서, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))은 각각, 모든 입력 데이터 경로들(302(0)-302(N)) 사이에서 공유될 수 있거나, 또는 변환 캐시들(400(0)-400(P)) 각각이 입력 데이터 경로들(302(0)-302(N))의 서브세트 사이에서 공유되거나 입력 데이터 경로들(302(0)-302(N)) 중 하나 또는 그 초과에 전용될 수 있도록 파티셔닝될 수 있다. 유사하게, 일부 양상들에 따라, 하드웨어 페이지 테이블 워커들(402(0)-402(W)) 각각은 모든 입력 데이터 경로들(302(0)-302(N)) 사이에서 공유되거나, 또는 각각의 하드웨어 페이지 테이블 워커(402(0)-402(W))가 입력 데이터 경로들(302(0)-302(N))의 서브세트 사이에서 공유되거나 하나 또는 그 초과의 입력 데이터 경로(302(0)-302(N))에 전용될 수 있도록 파티셔닝될 수 있다. 도 5a 내지 도 5f와 관련하여 아래에서 보다 상세히 논의되는 일부 양상들에서, MMU 관리 회로(336)는, 수신된 MATR(예를 들어, 도 1a의 MATR(12) 및/또는 도 1b의 MATR(40))에 기초하여 메모리 어드레스 변환 동작들을 수행할 때, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(P))을 이용하도록 구성될 수 있다.
[0041] 도 4에서 알 수 있는 바와 같이, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))은 어그리게이팅된 MMU(300) 내에서 입력 데이터 경로들(302(0)-302(N)) 부근에 있고 입력 데이터 경로들(302(0)-302(N)) 사이에서 공유될 수 있다. 입력 데이터 경로들(302(0)-302(N)) 부근에 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))을 로케이팅함으로써, 어그리게이팅된 MMU(300)는 일부 양상들에서, 캐시 자원들의 불필요한 복제를 회피하고, 로컬 캐시들과 중앙 캐시 간의 인터커넥트들에 대한 필요성을 제거한다. 로컬 및 중앙 캐시들에 대한 필요성을 회피하는 것은 로컬 캐시들과 중앙 캐시들 간의 통신에서 초래되는 캐시 액세스 레이턴시를 제거함으로써 분산 MMU 아키텍처에 비해 어그리게이팅된 MMU(300)의 성능을 추가로 개선할 수 있다.
[0042] 도 4의 MMU 관리 회로(336)는 추가로, 입력 변환 스케줄러(404), PTAB(pending transaction address buffer)(406), MMU 관리자(408) 및 출력 변환 스케줄러(410)를 포함할 수 있다. 입력 변환 스케줄러(404)는, 입력 트랜잭션 QoS 중재에 따라 입력 트랜잭션 버퍼들(304(0)-304(N))로부터 MATR들(예를 들어, 도 1a의 MATR(12) 및/또는 도 1b의 MATR(40))을 리트리브하는 것 그리고 MATR들을 PTAB(406)의 PTAB 슬롯들(412(0)-412(G))에 배치하는 것을 담당할 수 있다. 입력 변환 스케줄러(404)에서의 입력 트랜잭션 QoS 중재는, 이용 가능한 PTAB 슬롯들(412(0)-412(G))에 들어가도록 허용할 MATR을 결정하기 위한 중재를 수행하도록 입력 데이터 경로들(302(0)-302(N))로부터의 다수의 적격의 MATR의 대응하는 QoS 속성들(예를 들어, 도 1a의 QoS 속성들(24, 28) 및/또는 도 1b의 QoS 속성들(50, 54))을 사용할 수 있다. 비-제한적인 예들로서, 입력 트랜잭션 QoS 중재는, 라운드 로빈 중재, 우선순위 라운드 로빈 중재, 엄격한 우선순위 중재, 크래딧-기반 중재, 선입선출 중재, 가중화된 라운드-로빈 중재, 연령-기반 중재, 동적 우선순위 중재, 랜덤 중재, 공정율 중재 및/또는 임의의 다른 형태의 중재를 포함(그러나 이에 제한되지 않음)하는 당 분야에 알려진 임의의 QoS 중재 방법을 포함할 수 있다.
[0043] 그 후, MMU 관리자(408)는 PTAB(406)의 적격의 MATR들의 QoS 속성들에 기초한 QoS 중재를 사용하여 PTAB(406)로부터 보류중인 MATR을 선택할 수 있고, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))을 사용하여 TMAF(예를 들어, 도 1a의 TMAF(30) 및/또는 도 1b의 TMAF(56))를 생성할 수 있으며, 이는 그 후 대응하는 PTAB 슬롯(412(0)-412(G))에 배치된다. 그 후, 출력 변환 스케줄러(410)는 QoS 중재를 사용하여 PTAB(406)로부터 완성된 TMAF를 선택할 수 있고, 입력 데이터 경로(302(0)-302(N))로부터 대응하는 출력 데이터 경로(305(0)-305(Q))로 이동되도록 대응하는 요청 페이로드(예를 들어, 도 1a의 WRP(14) 및/또는 도 1b의 RRP(42))를 스케줄링할 수 있다. 출력 변환 스케줄러(410)는 TMAF를 대응하는 출력 데이터 경로(305(0)-305(Q))에 제공하며, 여기서 TMAF는 요청 페이로드와 결합되어, 출력 트랜잭션 버퍼 슬롯(314(0)-314(B), 318(0)-318(F)) 내에서 변환-후 트랜잭션(예를 들어, 도 1a의 변환-후 기록 트랜잭션(32) 및/또는 도 1b의 변환-후 판독 트랜잭션(58))을 생성한다. 그 후, 변환-후 트랜잭션은 출력 데이터 포트들(320(0)-320(M)) 중 하나에 출력된다. 이러한 방식으로, 입력 변환 스케줄러(404), MMU 관리자(408) 및 출력 변환 스케줄러(410)에 의해 제공되는 QoS 특징들은, 높은 우선순위 트랜잭션들에 우선적인 변환 자원들이 주어지고 결핍(starve)되지 않도록 보장한다. 메모리 어드레스 변환 결과를 생성하기 위해 MATR을 프로세싱하는데 있어 입력 변환 스케줄러(404), PTAB(406), MMU 관리자(408) 및 출력 변환 스케줄러(410)의 동작들은 도 5a 내지 도 5f와 관련하여 아래에서 보다 상세히 논의된다.
[0044] 또한, MMU 관리 회로(336)는 일부 양상들에서, 공유된 레지스터들(414) 및 공유된 제어 로직(416)을 포함할 수 있다. 공유된 레지스터(414) 및 공유된 제어 로직(416)은 모든 입력 데이터 경로들(302(0)-302(N))에 메모리 관리 기능성을 제공하기 위해 어그리게이팅된 MMU(300)에 의해 사용될 수 있다. 이는, 메모리 관리에 필요한 레지스터들 및 제어 로직 대부분이 로컬 변환 캐시들(216(0)-216(4) 및 중앙 변환 캐시(220))에서 복제되는, 도 2b에 도시된 분산 MMU 아키텍처와 대조적이다. 어그리게이팅된 MMU(300)에 의한 공유된 레지스터들(414) 및 공유된 제어 로직(416)의 사용은 추가로, 모든 레지스터들 및 제어 로직이 모놀리식 MMU들(102(0)-102(3)) 각각에서 복제되는, 도 2a의 모놀리식 MMU 아키텍처와 대조적이다. 공유된 레지스터(414) 및 공유된 제어 로직(416)을 사용함으로써, 어그리게이팅된 MMU(300)는 상당한 크기의 칩 영역 절감들을 달성할 수 있다. 또한, 소프트웨어에 의해 관리 및 제어할 MMU 인스턴스들의 수를 감소시킴으로써, 어그리게이팅된 MMU(300)를 사용하는 컴퓨터 시스템들에서 소프트웨어 오버헤드가 감소될 수 있다.
[0045] 일부 양상들에서, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))은 시스템 메모리(도시되지 않음)의 페이지 테이블들에 액세스하는 일련의 트랜잭션들(도시되지 않음)을 통해 가상 어드레스를 물리적 어드레스로 변환할 수 있다. 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터 발신되는 트랜잭션들은 하드웨어 테이블 워커(HTW) 멀티플렉서들(418)을 사용하여 출력 데이터 경로들(305(0)-305(Q))로부터의 트랜잭션들과 멀티플렉싱될 수 있다. HTW 멀티플렉서들(418)은 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 트랜잭션들 및 출력 데이터 경로들(305(0)-305(Q))로부터의 트랜잭션들의 QoS 속성들을 사용하여 두 소스로부터의 트랜잭션들 사이에서 선택하고 각각의 선택된 트랜잭션을 대응하는 출력 데이터 포트(320(0)-320(M))로 송신하도록 QoS 중재를 적용할 수 있다. 일부 양상들에 따라, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 일부 또는 모든 트랜잭션들은 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 트랜잭션들을 트래픽 인터커넥트(338)로 방출하기 위해 배타적으로 사용되는 전용 출력 포트(420)로 라우팅된다. 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 트랜잭션들은, 비-제한적인 예들로서, 트래픽 인터커넥트(338)에서의 각각의 트랜잭션의 최종 목적지의 어드레스, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 트랜잭션들의 출력이 출력 데이터 경로들(305(0)-305(Q))로부터의 트랜잭션들의 흐름을 방해하지 않도록 보장할 필요성, 및/또는 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))로부터의 트랜잭션들에 더 높은 우선순위 및/또는 트래픽 인터커넥트(338)로의 별개의 경로를 제공하고자 하는 바램(desire)과 같은 고려사항들에 기초하여, 출력 데이터 포트(320(0)-320(M)) 또는 전용 출력 포트(420)를 통해 어그리게이팅된 MMU(300)를 나가도록(exit) 지향될 수 있다.
[0046] 도 5a 내지 도 5f는 MATR의 프로세싱 동안 도 4의 어그리게이팅된 MMU(300)의 일부 양상들의 입력 변환 스케줄러(404), PTAB(406), MMU 관리자(408), 및 출력 변환 스케줄러(410)의 동작들을 더 잘 예시하기 위해 제공되는 블록도들이다. 이와 관련하여, 도 5a는 입력 트랜잭션들로서 인입하는 MATR들의 입력 버퍼링을 예시하고, 도 5b는 프로세싱을 위해 PTAB(406)로의 전달을 위한 입력 트랜잭션을 선택하기 위한 입력 변환 스케줄러(404)의 동작들을 도시한다. 도 5c는 MMU 관리자(408)가 캐시된 메모리 어드레스 변환 결과를 획득하기 위해 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))을 어떻게 사용할 수 있는지를 예시하는 반면에, 도 5d는 가상 어드레스로부터 물리적 어드레스로의 어드레스 변환을 수행하기 위해 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))을 사용하는 MMU 관리자(408)를 도시한다. 도 5e는 PTAB(406)로부터 출력 데이터 경로(305(0)-305(Q))로 완성된 TMAF의 이동을 스케줄링하기 위한 출력 변환 스케줄러(410)의 동작들을 예시하고, 도 5f는 출력 데이터 경로들(305(0)-305(Q))을 통해 출력 데이터 포트들(320(0)-320(M))로 출력되는 완성된 변환-후 트랜잭션을 도시한다. 명확성을 위해, 도 4의 엘리먼트들은 도 5a 내지 도 5f를 설명하는데 참조된다.
[0047] 이제 도 5a를 다시 참조하면, 일부 양상들에 따라 메모리 관리 기능성을 제공하기 위한 어그리게이팅된 MMU(300)의 동작들은, 변환-전 트랜잭션들(500, 502)이 어그리게이팅된 MMU(300)에 의해, 화살표들(504 및 506)에 의해 표시된 바와 같이, 입력 데이터 포트(도시되지 않음)를 통해 입력 데이터 경로들(302(0) 및 302(N))로 각각 수신되는 것으로 시작한다. 변환-전 트랜잭션들(500, 502)은 도 1a의 변환-전 기록 트랜잭션(10)과 같은 변환-전 기록 트랜잭션들 및/또는 도 1b의 변환-전 판독 트랜잭션들(38)과 같은 변환-전 판독 트랜잭션들을 포함할 수 있다는 것이 이해될 것이다. 도 5a의 예에서, 변환-전 트랜잭션들(500, 502)은 각각, MATR들(507, 508) 및 각각, 요청 페이로드들(509, 510)을 포함하다. MATR들(507, 508)은 도 3a의 클라이언트들(322, 324, 326, 328 및 330)과 같이 어그리게이팅된 MMU(300)에 통신 가능하게 커플링되는 트래픽-생성 클라이언트들(도시되지 않음)로부터 변환-전 트랜잭션들(500, 502)에 임베딩된 채로 수신될 수 있다. 도 5a에서 알 수 있는 바와 같이, 변환-전 트랜잭션(500)은 입력 트랜잭션(511)으로서 입력 데이터 경로(302(0))의 입력 트랜잭션 버퍼(304(0))의 입력 변환 버퍼 슬롯(308(0))에 저장된다. 마찬가지로, 변환-전 트랜잭션(502)은 입력 트랜잭션(512)으로서 입력 데이터 경로(302(N))의 입력 트랜잭션 버퍼(304(N))의 입력 변환 버퍼 슬롯(312(0))에 저장된다. 그 후, 변환-전 트랜잭션들(500, 502)의 MATR들(507, 508) 부분들은 입력 변환 스케줄러(404)에 의한 프로세싱을 기다린다.
[0048] 도 5b에서, 어그리게이팅된 MMU(300)의 일부 양상들에 따른 입력 변환 스케줄러(404)의 동작들이 도시된다. 입력 변환 스케줄러(404)는, QoS 중재 메커니즘을 적용함으로써 입력 트랜잭션 버퍼들(304(0)-304(N))로부터 MATR(도 5b의 예에서, 화살표(513)로 표시된 바와 같은 MATR(508))을 선택하는 것을 담당하며, 여기서 각각의 MATR(507, 508)의 QoS 속성들은 각각의 MATR들(507, 508)의 상대적 우선순위를 표시한다. 그 후, 입력 변환 스케줄러(404)는 PTAB(406)에 의해 저장되도록 선택된 MATR(508)을 스케줄링한다. 도 5b의 화살표(514)에 의해 표시된 바와 같이, PTAB(406)는 그 후, 보류중인 변환으로서 입력 변환 스케줄러(404)에 의해 선택되고 스케줄링된 MATR(508)을, PTAB 슬롯(412(0))에 저장한다.
[0049] MATR(508)을 선택할 때 입력 트랜잭션 QoS 중재를 적용함으로써, 입력 변환 스케줄러(404)는 상이한 입력 데이터 경로들(302(0)-302(N)) 사이에서 원하는 QoS 레벨을 유지할 수 있다. 일부 양상들에서, 입력 QoS 중재는, 어느 하나의 트래픽-생성 클라이언트도 PTAB(406)를 독점하게 허용하지 않도록 보장하고 그리고/또는 입력 데이터 경로들(302(0)-302(N))에 상주하는 일부 트랜잭션들에게, 이들이 각각의 트랜잭션에 대한 QoS 속성들에 표시된 바와 같이, 다른 트랜잭션들에 비해 더 높은 우선순위를 갖는 경우, PTAB(406)에 대한 더 우수한 액세스를 그랜트하도록 시도할 수 있다. 일부 양상들은 입력 트랜잭션 QoS 중재가 PTAB 슬롯들(412(0)-412(G))을 하나 또는 그 초과의 PTAB 슬롯들(412(0)-412(G))의 그룹들로 파티셔닝하도록 동적으로 구성될 수 있다는 것을 규정할 수 있다. 각각의 그룹은, 모든 트랜잭션들에 대한 모든 우선순위 레벨들 및/또는 모든 입력 데이터 경로들(302(0)-302(N))로부터의 모든 트랜잭션들(511, 512) 사이에서 잔여 PTAB 슬롯들(412(0)-412(G))을 공유하면서, 하나 또는 그 초과의 입력 데이터 경로들(302(0)-302(N))에 대해 그리고/또는 QoS 속성 필드들에 의해 표시된 바와 같이 미리 결정된 레벨의 높은 우선순위를 갖는 입력 트랜잭션들(511, 512)에 대해 전용식 비-공유 방법에서, 배타적 사용을 위해 예약될 수 있다. 일부 양상들에서, 입력 변환 스케줄러(404)는, 입력 트랜잭션 버퍼들(304(0)-304(N))로부터 수신된 선택된 MATR(508)에 대해, 선택된 MATR(508)이 PTAB(406)에 저장되기 전에, 대응하는 출력 트랜잭션 버퍼(306(Q))에 적어도 하나의 이용 가능한 출력 트랜잭션 버퍼 슬롯들(318(0)-318(F))이 존재하는 것을 보장할 수 있다.
[0050] 일부 양상들에서, MATR(508)이 선택되고 PTAB(406)의 이용 가능한 PTAB 슬롯(412(0))에 배치되면, 입력 변환 스케줄러(404)는 점유되지 않은 슬롯들(412(0)-412(G))이 PTAB(406) 내에 존재하는지를 결정하도록 PTAB(406)의 필 레벨(fill level)을 검사할 수 있다. 만약 그렇다면, 입력 변환 스케줄러(404)는, 점유되지 않은 PTAB 슬롯들(412(0)-412(G))로의 삽입을 위해 MATR들(507, 508)을 선택하도록 모든 입력 트랜잭션 버퍼들(304(0)-304(N)) 내의 모든 입력 트랜잭션 버퍼 슬롯들(308(0)-308(A), 312(0)-312(E))의 모든 잔여 MATR들 사이에서 연속적인 QoS 중재를 적용할 수 있다. 이용 가능한 PTAB 슬롯들(412(0)-412(G))이 특정 입력 데이터 경로들(302(0)-302(N))로부터 MATR들에 대해 미리 예약되는 경우, 또는 PTAB 슬롯들(412(0)-412(G))이 특정 우선순위 레벨의 MATR들에 대해 예약되고, 이들 조건들은 입력 트랜잭션 버퍼들(304(0)-304(N))에 존재하는 MATR들 중 어느 것에 의해서도 충족되지 않는 경우, MATR들이 이용 가능한 PTAB 슬롯들(412(0)-412(G))로 이동될 수 없는 일시적인 상황들이 존재할 수 있다. 이러한 상황들에서, 입력 변환 스케줄러(404)는, 예약 기준을 충족하는 PTAB 슬롯(412(0)-412(G))이 이용 가능하게 될 때까지 PTAB(406)의 이용 가능한 PTAB 슬롯들(412(0)-412(G))을 모니터링할 수 있다. 적합한 PTAB 슬롯(412(0)-412(G))이 이용 가능하게 되면, 입력 변환 스케줄러(404)는 새롭게 릴리스된 PTAB 슬롯(412(0)-412(G))으로의 이동을 위해 MATR을 선택하도록 QoS 중재를 적용한다.
[0051] 도 5c는, 어그리게이팅된 MMU(300)의 일부 양상들에 따라, TMAF(515)를 생성하기 위해 MATR(508)의 가상 어드레스(도시되지 않음) 상에서 변환 동작들을 수행하기 위한 MMU 관리자(408)의 동작들을 예시한다. 도 5c의 예에서, MMU 관리자(408)는 TMAF가 생성되지 않은 보류중인 MATR, 예컨대, 보류중인 MATR(508)의 추가(addition)를 검출하기 위해 PTAB(406)를 모니터링한다. 보류중인 MATR(508)의 검출 시에, MMU 관리자(408)는 화살표(520)에 의해 표시된 바와 같이, PTAB(406) 내의 보류중인 MATR들 중에서 보류중인 트랜잭션 MATR(508)을 선택한다. 일부 양상들에서, 보류중인 MATR(508)은 QoS 중재에 기초하여 선택될 수 있다. 이는, PTAB(406) 내의 높은-우선순위의 보류중인 MATR들이 낮은-우선순위의 트랜잭션들 이전에 프로세싱되는 것을 MMU 관리자(408)가 보장하는 것을 가능하게 할 수 있다.
[0052] 그 후, MMU 관리자(408)는 화살표(522)에 의해 표시된 바와 같이, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))이 MATR(508) 내의 가상 어드레스 및 대응하는 액세스 속성들(도시되지 않음)을 대응하는 물리적 어드레스(도시되지 않음)로 변환하는 캐시된 엔트리(cached entry)를 포함하는지를 결정한다. 변환이 발견되는 경우, 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))은 화살표(524)에 의해 표시된 바와 같이 MMU 관리자(408)에 물리적 어드레스를 리턴한다. 그 후, MMU 관리자(408)는 하나 또는 그 초과의 변환 캐시들(400)로부터 획득된 물리적 어드레스를 포함하는 TMAF(515)를 구성한다. TMAF(515)는 또한, 공유된 제어 로직(416) 및 공유된 레지스터(414)의 구현에 기초하여 MATR(508)의 입력 액세스 속성들의 동일한 버전 또는 수정된 버전일 수 있는 액세스 속성들을 포함한다. TMAF(515)는 또한, 공유된 제어 로직(414) 및 공유된 레지스터(416)의 구현에 기초하여 MATR(508)의 QoS 속성들 및 액세스 속성들의 동일한 버전 또는 수정된 버전일 수 있는 QoS 속성들(도시되지 않음) 및 액세스 속성들을 포함한다. TMAF(515)가 구성되면, 그것은, 화살표(526)에 의해 표시된 바와 같이, 대응하는 PTAB 슬롯(412(0))에 배치된다. 그 후, PTAB 슬롯(412(0))의 보류중인 TMAF(515)는 출력 변환 스케줄러(410)에 의한 고려사항에 대해 적격인 것으로서 마킹될 수 있다.
[0053] 이제 도 5d를 참조하면, 물리적 어드레스에 대한 변환이 하나 또는 그 초과의 변환 캐시들(400) 내에 캐시되지 않거나, 또는 단지 부분 변환만이 존재하는 경우, MMU 관리자(408)는 화살표(528)에 의해 표시된 바와 같이, 완전한 TMAF(515)를 생성하도록 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402 0)-402(W)) 중 하나를 할당한다. 일부 양상들에서, MMU 관리자(408)는 미리 결정된 QoS 중재 정책에 기초하여 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402) 중 하나를 할당할 수 있다. 이러한 방식으로, MMU 관리자(408)는 임의의 하나의 입력 데이터 경로(302(0)-302(N))로부터의 어떠한 변환 요청들의 세트도 모든 이용 가능한 하드웨어 페이지 테이블 워커들(402)을 독점할 수 없다는 것을 보장할 수 있다. 비-제한적인 예들로서, QoS 중재 정책은 선입선출 토대로 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))을 할당하는 것을 포함할 수 있거나, 또는 비-제한적인 예들로서, 보류중인 MATR(508)의 우선순위에 기초할 수 있다. 일부 양상들은, MMU 관리자(408)가 또한, 트래픽이 도달할 때 이용 가능한 하드웨어 페이지 테이블 워커들(402(0)-402(W))의 부족에 의해 입력 데이터 경로들(302(0)-302(N))이 차단되지 않도록 잔여의 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))이 입력 데이터 경로(302(0)-302(N))에 의해 사용되게 허용하면서, 하나 또는 그 초과의 비활성 입력 데이터 경로들(302(0)-302(N))의 배타적 사용을 위해 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))의 구성 가능한 수를 예약하도록 QoS 중재를 적용할 수 있다는 것을 규정할 수 있다.
[0054] 일부 양상들은, MMU 관리자(408)가 또한, 잔여의 그룹핑되지 않은 하드웨어 페이지 테이블 워커들(402)이 임의의 입력 데이터 경로(302(0)-302(N))에 의해 사용되도록 허용하면서, 하나 또는 그 초과의 입력 데이터 경로들(302(0)-302(N))의 배타적 사용을 위해 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)의 그룹들(각각의 그룹은 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)을 포함함)을 예약하도록 QoS 중재를 적용할 수 있다는 것을 규정할 수 있으다. 이러한 방식으로, 트래픽이 도달할 때 이용 가능한 하드웨어 페이지 테이블 워커들(402(0)-402(W))의 부족에 의해 입력 데이터 경로들(302(0) 내지 302(N))이 차단되지 않는다. 일부 양상들에 따라, MMU 관리자(408)는 또한, 잔여의 그룹핑되지 않은 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)이 임의의 레벨의 우선순위를 갖는 임의의 MATR에 의해 사용되도록 허용하면서, 자신의 QoS 속성들에 의해 표시된 바와 같은 소정의 레벨 또는 레벨들의 우선순위들을 갖는 MATR들의 배타적 사용을 위해 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)의 그룹들(각각의 그룹은 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)을 포함함)을 예약하도록 QoS 중재를 적용할 수 있다는 것을 규정할 수 있다. 따라서, 트래픽이 도달할 때 이용 가능한 하드웨어 페이지 테이블 워커들(402(0)-402(W))의 부족에 의해 더 높은 우선순위들을 갖는 MATR들이 차단되지 않는다.
[0055] 일부 양상들에서, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))은 화살표(530)에 의해 표시된 바와 같이, 트래픽 인터커넥트(338)로의 전용 출력 포트(420)를 통해 또는 출력 데이터 포트들(320(0)-320(M))을 사용하여 (예를 들어, 하나 또는 그 초과의 하드웨어 페이지 테이블 워크들을 수행(conducting)함으로써) MATR(508)의 가상 어드레스의 변환을 수행하도록 구성된다. 이러한 양상들에서, 하드웨어 페이지 테이블 워커들(402(0)-402(W))은, 출력 데이터 경로들(305(0)-305(Q))로부터의 다른 출력 트랜잭션들과 함께, 출력 데이터 포트들(320(0)-320(M))에 인라인(inline)으로 하드웨어 페이지 테이블 워크 트랜잭션들(도시되지 않음)을 선택적으로 삽입할 수 있다. 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W)) 각각은 출력 데이터 포트들(320(0)-320(M)) 중 하나를 사용하도록 구성되거나, 또는 트랜잭션 우선순위 또는 출력 데이터 경로 혼잡에 따라 다수의 출력 데이터 포트들(320(0)-320(M)) 사이에서 트래픽을 분배할 수 있다.
[0056] MATR(508)의 가상 어드레스의 변환을 완료하면, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W))은, 화살표(531)에 의해 표시된 바와 같이, MMU 관리자(408)에 변환된 물리적 어드레스를 제공한다. MMU 관리자(408)는 차례로, 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402)로부터 변환된 물리적 어드레스를 수신하고, 화살표(522)에 의해 표시된 바와 같이, MATR(508)의 가상 어드레스와 물리적 어드레스 사이의 업데이트된 변환으로 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))을 업데이트한다. MMU 관리자(408)는 또한, TMAF(515)를 구성하고 화살표(532)에 의해 표시된 바와 같이, PTAB(406)의 적절한 PTAB 슬롯(412(0)-412(G))에 TMAF(515)를 제공한다.
[0057] 도 5e에서, 어그리게이팅된 MMU(300)의 일부 양상들에서의 출력 변환 스케줄러(410)는 MATR 변환이 완료되고 TMAF가 이용 가능한 슬롯들, 예컨대, 도 5e의 PTAB 슬롯(412(0))을 로케이팅하기 위해 PTAB(406)의 PTAB 슬롯들(412(0)-412(G))을 검색한다. 그 후, 출력 변환 스케줄러(410)는 PTAB(406)의 이용 가능한 TMAF 중에서 선택한다. 도 5e의 예에서, 출력 변환 스케줄러(410)는 화살표(534)에 의해 표시된 바와 같이, TMAF(515)를 선택한다. 그 후, 출력 변환 스케줄러(410)는 화살표(536)에 의해 표시된 바와 같이, 출력 트랜잭션 버퍼(306(Q))의 적절한 출력 트랜잭션 버퍼 슬롯(318(0))으로 TMAF(515)를 이동시킨다.
[0058] 출력 변환 스케줄러(410)에 의한 스케줄링은, 비-제한적인 예들로서, TMAF(515)의 QoS 속성들 및 QoS 중재 방식(이는 출력 트랜잭션 버퍼 슬롯들(318(0)-318(F))의 가용성을 고려할 수 있음) 및/또는 보류중인 MATF들의 상대적 우선순위에 기초할 수 있다. PTAB(406)는 QoS-기반 스케줄링에 기초하여 TMAF(515)를 출력 트랜잭션 버퍼(306(Q))로 디큐잉(dequeue)한다. 그 후, 출력 트랜잭션 버퍼(306(Q))는 화살표(537)에 의해 표시된 바와 같이, 요청 페이로드(510)를 입력 트랜잭션 버퍼 슬롯(312(0))으로부터 출력 트랜잭션 버퍼 슬롯(318(0))으로 이동시키고, 이를 수신된 TMAF(515)와 결합하여 변환-후 트랜잭션(512')을 생성한다. 변환-후 트랜잭션(512')은 후속적으로, 출력 트랜잭션 버퍼 슬롯(318(0))에 저장된다. 일부 양상들에서, 출력 변환 스케줄러(410)는, 출력 트랜잭션 버퍼(306(Q))의 변환-후 트랜잭션(512')보다 높은 우선순위를 갖는, 입력 트랜잭션 버퍼(304(N))의 새로운 입력 트랜잭션들(도시되지 않음)이 존재하는 경우, 변환-후 트랜잭션(512')의 우선순위를 상승시킬 수 있다. 그 후, 메모리 어드레스 변환 동작들은 도 5f에서 화살표(540)에 의해 표시된 바와 같이, 변환-후 트랜잭션(512')이 출력 데이터 경로(305(Q))를 통해 출력됨에 따라 종결된다.
[0059] 도 4의 예시적인 어그리게이팅된 MMU(300)에 의한 메모리 관리 기능성을 제공하기 위한 예시적인 동작들을 예시하기 위해, 도 6a 및 도 6b가 제공된다. 명확성을 위해, 도 4, 및 도 5a 내지 도 5f의 엘리먼트들은 도 6a 및 도 6b를 설명하는데 있어 참조된다. 동작들은, 도 6a에서, 어그리게이팅된 MMU(300)의 MMU 관리 회로(336)가 복수의 입력 데이터 경로들(302(0)-302(N))에 대응하는 복수의 입력 트랜잭션 버퍼들(304(0)-304(N)) 중 입력 트랜잭션 버퍼(304(N))로부터 변환-전 트랜잭션(512)의 MATR(508)을 리트리브하는 것으로 시작한다(블록 600). 이와 관련하여, MMU 관리 회로(336)는 본원에서 "복수의 입력 데이터 경로들에 대응하는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 MATR(memory address translation request)을 리트리브하기 위한 수단"으로서 지칭될 수 있다. 일부 양상들에서, MATR(508)을 리트리브하기 위한 블록(600)의 동작들은 도 7과 관련하여 아래에서 더 상세히 설명되는 바와 같이 입력 변환 스케줄러(404)에 의해 수행된다. 일부 양상들은, 어그리게이팅된 MMU(300)의 PTAB(406)가 이어서, 보류중인 변환으로서 MMU 관리 회로(336)에 의해, 복수의 입력 트랜잭션 버퍼들(304(0)-304(N)) 중 입력 트랜잭션 버퍼(304(N))로부터 리트리브된 변환-전 트랜잭션(512)의 MATR(508)을 저장하는 것을 규정할 수 있다(블록 602).
[0060] 그 후, MMU 관리 회로(336)는 TMAF(515)를 생성하도록 MATR(508)에 기초하여 메모리 어드레스 변환 동작을 수행한다(블록 604). 따라서, MMU 관리 회로(336)는 본원에서 "TMAF(translated memory address field)를 생성하기 위해 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 수단"으로서 지칭될 수 있다. 일부 양상들에 따라, MATR(508)에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 블록(604)의 동작들은 도 9a 및 도 9b와 관련하여 아래에서 더 상세히 설명되는 바와 같이 MMU 관리자(408)에 의해 수행된다. 일부 양상들은, 메모리 어드레스 변환 동작을 수행하는 것이 복수의 입력 데이터 경로들(302(0)-302(N)) 부근의 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W)) 및 복수의 입력 데이터 경로들(302(0)-302(N)) 부근의 하나 또는 그 초과의 변환 캐시들(400(0)-400(P)) 중 하나를 사용하여 달성될 수 다는 것을 규정할 수 있다(블록 606). 어그리게이팅된 MMU(300)의 일부 예시적인 양상들에서, PTAB(406)는 이어서, MMU 관리 회로(336)에 의해 생성된 보류중인 변환에 대응하는 TMAF(515)를 수신한다(블록 608). 그 후, PTAB(406)는 보류중인 변환에 대한 TMAF(515)를 저장할 수 있다(블록 610). 그 후, 도 6b의 블록(612)에서 프로세싱이 재개된다.
[0061] 이제 도 6b를 참조하면, 일부 양상들에서, PTAB(406)는, 복수의 출력 트랜잭션 버퍼들(306(0)-306(Q)) 중 출력 트랜잭션 버퍼(306(Q))에 TMAF(515)를 제공하도록 보류중인 변환을 디큐잉한다(블록 612). 일부 양상들은, 복수의 입력 데이터 경로들(302(0)-302(N))의 서브세트로부터의 MATR들(508)에 대응하는 TMAF들(515)이 단일 출력 트랜잭션 버퍼(306(Q)) 내로 디큐잉될 수 있는 반면에, 일부 양상들에서 따라, 입력 데이터 경로들(302(0)-302(N))과 출력 트랜잭션 버퍼들(306(0)-306(Q)) 사이에 일대일 대응이 있을 수 있다는 것을 규정할 수 있다.
[0062] 그 후, TMAF(515) 및 변환-전 트랜잭션 페이로드(510)는 변환-후 트랜잭션(512')으로서, 복수의 출력 데이터 경로들(305(0)-305(Q))에 대응하는 복수의 출력 트랜잭션 버퍼들(306(0)-306(Q)) 중 출력 트랜잭션 버퍼(306(Q))에 제공된다(블록 614). 일부 양상들은 출력 트랜잭션 버퍼(306(Q))에 TMAF(515)를 제공하기 위한 블록(614)의 동작들이 도 8과 관련하여 아래에서 더 상세히 설명되는 바와 같이 출력 변환 스케줄러(410)에 의해 수행된다는 것을 규정할 수 있다. 따라서, 출력 변환 스케줄러(410)는 본원에서 "복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 TMAF 및 변환-전 트랜잭션 페이로드를 제공하기 위한 수단"으로서 지칭될 수 있다.
[0063] TMAF(515)를 포함하는 변환-후 트랜잭션(512')은 후속적으로, 복수의 출력 데이터 경로들(305(0)-305(Q)) 중 출력 데이터 경로(305(Q))를 통해 복수의 출력 데이터 포트들(320(0)-320(M)) 중 출력 데이터 포트(320(M))에 출력된다(블록 616). 이와 관련하여, 출력 데이터 경로(305(Q))는 본원에서 "복수의 출력 데이터 포트들 중 출력 데이터 포트에 변환-후 트랜잭션을 출력하기 위한 수단"으로서 지칭될 수 있다. 일부 양상들에서, 변환-후 트랜잭션(512')을 출력하기 위한 동작들은, 도 3b의 변환-후 중재기(342)가 복수의 출력 데이터 포트들(320(0)-320(M)) 중 출력 데이터 포트(320(M))에 출력되도록 복수의 출력 데이터 경로들(305(0)-305(Q))의 복수의 서브세트로부터 하나 또는 그 초과의 변환-후 트랜잭션들(512')을 수신하는 것을 포함할 수 있다(블록 618). 변환-후 중재기(342)는 변환-후 QoS 중재에 기초하여 하나 또는 그 초과의 변환-후 트랜잭션들(512') 중 변환-후 트랜잭션(512')을 선택할 수 있다(블록 620). 그 후, 선택된 변환-후 트랜잭션(512')은 변환-후 중재기(342)에 의해, 출력을 위해 출력 데이터 포트(320(M))에 제공될 수 있다(블록 622).
[0064] 위에서 언급된 바와 같이, 어그리게이팅된 MMU(300)의 일부 양상들에서, 입력 트랜잭션 버퍼(304(N))로부터 MATR(508)을 리트리브하기 위한 도 6a의 블록(600)의 동작들은 입력 변환 스케줄러(404)에 의해 수행될 수 있다. 이와 관련하여, 도 7은 MATR(508)을 프로세싱하기 위한 입력 변환 스케줄러(404) 및 PTAB(406)의 예시적인 동작들을 예시한다. 도 4 및 도 5a 내지 도 5f의 엘리먼트들은 명료함을 위해 도 7을 설명하는데 있어 참조된다. 도 7에서, 동작들은, 입력 변환 스케줄러(404)가 입력 트랜잭션 QoS 중재에 기초하여 복수의 입력 트랜잭션 버퍼들(304(0)-304(N)) 중 입력 트랜잭션 버퍼(304(N))로부터의 변환-전 트랜잭션(512)의 MATR(508)을 선택하는 것으로 시작한다(블록 700). 일부 양상들에서, 입력 변환 스케줄러(404)는, 선택된 MATR(508)의 변환-전 트랜잭션(512)의 입력 트랜잭션 버퍼(304(N))에 대응하는 출력 트랜잭션 버퍼(306(Q))가 이용 가능한 출력 트랜잭션 버퍼 슬롯(318(0)-318(F))을 포함하는지를 결정할 수 있다(블록 702). 어떠한 이용 가능한 출력 트랜잭션 버퍼 슬롯(318(0)-318(F))도 이용 가능하지 않은 경우, 프로세싱은 블록(700)으로 리턴할 수 있 있다.
[0065] 그러나, 이용 가능한 출력 트랜잭션 버퍼 슬롯(318(0)-318(F))이 이용 가능한 것으로 입력 변환 스케줄러(404)가 블록(702)에서 결정하는 경우, 입력 변환 스케줄러(404)는 일부 양상들에서, 선택된 MATR(508)이 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관되거나 복수의 입력 데이터 경로들(302(0)-302(N)) 중 하나 또는 그 초과의 배타적 사용을 위해 예약되지 않은 복수의 PTAB 슬롯들(412(0)-412(G)) 중 하나 또는 그 초과에 저장될 수 있는지를 결정할 수 있다(블록 703). 만약 그렇다면, 프로세싱은 블록(704)에서 재개된다. 결정 블록(703)에서, 선택된 MATR(508)이 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관되거나 복수의 입력 데이터 경로들(302(0)-302(N)) 중 하나 또는 그 초과의 배타적 사용을 위해 예약되지 않은 복수의 PTAB 슬롯들(412(0)-412(G)) 중 하나 또는 그 초과에 저장될 수 없다고 결정되는 경우, 입력 변환 스케줄러(404)는 이어서, 일부 양상들에서, 선택된 MATR(508)이 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 예약되거나 복수의 입력 데이터 경로들(302(0)-302(N)) 중 하나 또는 그 초과의 배타적 사용을 위해 예약된 복수의 PTAB 슬롯들(412(0)-412(G)) 중 하나 또는 그 초과에 저장될 수 있는지를 결정할 수 있다(블록(705). 만약 그렇지 않다면, 프로세싱은 블록(700)으로 리턴한다. 그렇지 않으면, 입력 변환 스케줄러(404)는 PTAB(406)에 의해 저장되도록, 선택된 MATR(508)을 스케줄링한다(블록 704). 그 후, PTAB(406)는 입력 변환 스케줄러(404)에 의해 스케줄링된 선택된 MATR(508)을 저장한다(블록 706).
[0066] 도 8은 일부 양상들에서 출력 트랜잭션 버퍼(306(Q)에 TMAF(515)를 제공하기 위한 도 6b의 블록(614)의 동작들을 수행할 수 있는 출력 변환 스케줄러(410)의 예시적인 동작들을 예시한다. 명확성을 위해, 도 4, 및 도 5a 내지 도 5f의 엘리먼트들은 도 8을 설명하는데 있어 참조된다. 도 8의 동작들은, 어그리게이팅된 MMU(300)의 출력 변환 스케줄러(410)가, TMAF(515)가 저장되는 PTAB(406)의 하나 또는 그 초과의 보류중인 변환들 중에서 보류중인 변환을 선택하는 것으로 시작한다(블록 800). 출력 변환 스케줄러(410)는 이어서, 출력 트랜잭션 QoS 중재에 기초하여, 변환-후 트랜잭션(512')으로서 복수의 출력 트랜잭션 버퍼들(306(0)-306(Q)) 중 출력 트랜잭션 버퍼(306(Q))로 이동되도록 TMAF(515)를 스케줄링한다(블록 802). 일부 양상들에 따라, 출력 트랜잭션 QoS 중재는 비-제한적인 예들로서, 출력 트랜잭션 버퍼 슬롯들(318(0)-318(F))의 가용성 및 보류중인 TMAF(515)의 상대적 우선순위를 고려할 수 있다.
[0067] 그 후, PTAB(406)는 스케줄링에 기초하여 복수의 출력 트랜잭션 버퍼들(306(0)-306(Q)) 중 출력 트랜잭션 버퍼(306(Q))로 보류중인 TMAF(515)를 디큐잉한다(블록 804). 일부 양상들에서, 출력 변환 스케줄러(410)는 변환-후 트랜잭션(512')의 상대적 우선순위를 상승시킬 수 있다(블록 806). 이는 출력 트랜잭션 버퍼(306(Q)의 변환-후 트랜잭션(512') 보다 높은 우선순위를 갖는 입력 트랜잭션 버퍼(304(N))의 새로운 입력 트랜잭션들이 존재하는 상황들에서 바람직할 수 있다.
[0068] 도 6a와 관련하여 위에서 설명된 바와 같이, MATR(508)에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 블록(604)의 동작들은 일부 양상들에서, 어그리게이팅된 MMU(300)의 MMU 관리자(408)에 의해 수행될 수 있다. 이와 관련하여, 도 9a 및 9b는 메모리 어드레스 변환 동작을 수행하기 위한 MMU 관리자(408)의 예시적인 동작들을 예시하기 위해 제공된다. 도 4 및 도 5a 내지 도 5f의 엘리먼트들은 명료함을 위해 도 9a 및 9b를 설명하는데 있어 참조된다.
[0069] 도 9a에서, 동작들은, MMU 관리자(408)가 변환 QoS 중재에 기초하여, TMAF(515)가 저장되어 있지 않은 PTAB(406)의 하나 또는 그 초과의 보류중인 MATR들(508) 중에서 보류중인 MATR(508)을 선택하는 것으로 시작한다(블록 902). 그 후, MMU 관리자(408)는 MATR(508)에 대응하는 캐시된 메모리 어드레스 변환 결과가 하나 또는 그 초과의 변환 캐시들(400(0)-400(P))에 존재하는지를 결정한다(블록 904). 만약 그렇다면, MMU 관리자(408)는 PTAB(406)에 의해, 선택된 MATR(508)에 대해 저장될 TMAF(515)의 부분으로서 캐시된 메모리 변환 결과(예를 들어, 캐시된 물리적 어드레스)를 제공한다(블록 906).
[0070] 그러나, 변환 캐시(400)가 MATR(508) 내의 가상 어드레스에 대한 어드레스 변환을 포함하지 않는다고 MMU 관리자(408)가 결정 블록(904)에서 결정하는 경우, 프로세싱은 도 9b의 블록(908)에서 재개된다. 이제 도 9b를 참조하면, MMU 관리자(408)는, 선택된 보류중인 MATR(508)에 대한 메모리 어드레스 변환 결과(예를 들어, 물리적 메모리 어드레스 변환)를 생성하도록 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들(402(0)-402(W)) 중 하드웨어 페이지 테이블 워커(402(0)-402(W))를 할당한다(블록 908). 일부 양상들에서, 하드웨어 페이지 테이블 워커(402)를 할당하기 위한 블록(908)의 동작은 하드웨어 페이지 테이블 워커 QoS 중재에 기초한다(블록 909). 메모리 변환의 완료 시에, MMU 관리자(408)는 하드웨어 페이지 테이블 워커(402(0)-402(W))로부터 메모리 어드레스 변환 결과를 수신한다(블록 910)). 그 후, MMU 관리자(408)는 TMAF(515)로서 PTAB(406)에 의해, 선택된 보류중인 MATR(508)에 대해 저장될 수신된 메모리 어드레스 변환 결과를 제공한다(블록 912). MMU 관리자(408)는 추가로, 수신된 메모리 어드레스 변환 결과를 하나 또는 그 초과의 변환 캐시들(400)에 제공한다.
[0071] 본원에서 개시된 양상들에 따라, 어그리게이팅된 MMU들을 사용하여 메모리 관리 기능성을 제공하는 것은, 하이브리드 확산 표준 라이브러리 셀들은 임의의 프로세서-기반 디바이스에 제공되거나 이에 통합될 수 있다. 예들은, 제한 없이, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 이동 위치 데이터 유닛, 모바일 전화, 셀룰러 폰, 스마트폰, 테블릿, 패블릿(phablet), 컴퓨터, 휴대용 컴퓨터, 데스크톱 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 및 자동차를 포함한다
[0072] 이와 관련하여, 도 10은 도 3a에 예시된 예시적인 어그리게이팅된 MMU(300)를 이용할 수 있는 프로세서-기반 시스템(1000)의 예를 예시한다. 이 예에서, 프로세서-기반 시스템(1000)은 각각이 하나 또는 그 초과의 프로세서들(1004)을 포함하는 하나 또는 그 초과의 중앙 처리 장치들(CPU들)(1002)을 포함한다. CPU(들)(1002)는 일시적으로 저장된 데이터에 대한 신속한 액세스를 위해 프로세서(들)(1004)에 커플링되는 캐시 메모리(1006)를 가질 수 있다. CPU(들)(1002)는 추가로, CPU 메모리 액세스 요청들에 대한 어드레스 변환 서비스들을 제공하기 위한 CPU MMU(1008)를 포함한다. CPU(들)(1002)는 시스템 버스(1010)에 커플링되고 프로세서-기반 시스템(1000)에 포함되는 마스터 및 슬래이브 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들)(1002)는 시스템 버스(1010) 상에서 어드레스, 제어 및 데이터 정보를 교환함으로써 이러한 다른 디바이스들과 통신한다. 예를 들어, CPU(들)(1002)는 메모리 유닛들(1014(0)-1014(N))을 제공하는 메모리 시스템(1012)에 버스 트랜잭션 요청들을 통신할 수 있다. 도 10의 예에서, 시스템 MMU(SMMU)(1016)는 또한 시스템 버스(1010)에 커플링된다. CPU MMU(1008) 및 SMMU(1016) 중 어느 하나 또는 둘 모두는 도 3a의 어그리게이팅된 MMU(300)를 포함할 수 있다는 것이 이해될 것이다.
[0073] 다른 마스터 및 슬래이브 디바이스들은 SMMU(1016)를 통해 시스템 버스(1010)에 연결될 수 있다. 도 10에서 예시된 바와 같이, 이들 디바이스들은 예들로서, 메모리 제어기(1018), 하나 또는 그 초과의 입력 디바이스들(1020), 하나 또는 그 초과의 출력 디바이스들(1022), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(1024), 및 하나 또는 그 초과의 디스플레이 제어기들(1026)을 포함할 수 있다. 입력 디바이스(들)(1020)는 입력 키들, 스위치들, 음성 프로세서들 등을 포함(그러나 이에 제한되지 않음)하는 임의의 유형의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(1022)는 오디오, 비디오, 다른 시각적 표시자들 등을 포함(그러나 이에 제한되지 않음)하는 임의의 유형의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(1024)는 네트워크(1028)로의 그리고 이로부터의 데이터의 교환을 허용하도록 구성되는 임의의 디바이스들일 수 있다. 네트워크(1028)는 유선 또는 무선 네트워크, 사설 또는 공중 네트워크, LAN(local area network), WLAN(wide local area network), 및 인터넷을 포함(그러나 이에 제한되지 않음)하는 임의의 유형의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(1024)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다.
[0074] CPU(들)(1002)는 또한 하나 또는 그 초과의 디스플레이들(1030)에 전송되는 정보를 제어하기 위해 시스템 버스(1010) 상에서 디스플레이 제어기(들)(1026)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(1026)는, 디스플레이될 정보를 디스플레이(들)(1030)에 대해 적합한 포맷으로 프로세싱하는 하나 또는 그 초과의 비디오 프로세서들(1032)을 통해, 디스플레이될 정보를 디스플레이(들)(1030)에 전송한다. 디스플레이(들)(1030)는 CRT(cathode ray tube), LCD(liquid crystal display), 플라스마 디스플레이 등을 포함(그러나 이에 제한되지 않음)하는 임의의 유형의 디스플레이를 포함할 수 있다.
[0075] 당업자들은 추가로, 본원에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어로서 구현될 수 있다는 것을 인지할 것이다. 본원에서 설명되는 디바이스들은 예들로서 임의의 회로, 하드웨어 컴포넌트, 집적 회로(IC), 또는 IC 칩에서 이용될 수 있다. 본원에서 개시되는 메모리는 임의의 유형 및 크기의 메모리일 수 있고 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 상호교환 가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능성 관점들에서 일반적으로 위에서 설명되었다. 이러한 기능성이 어떻게 구현되는지는 특정 애플리케이션, 설계 선택들 및/또는 전체 시스템에 부과되는 설계 제약들에 의존한다. 당업자들은 설명된 기능성을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들이 본 개시의 범위를 벗어나게 하는 것으로서 해석되지는 않아야 한다.
[0076] 본원에서 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 및 회로들은, 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array), 또는 다른 프로그래밍 가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 또한, 프로세서는 컴퓨팅 디바이스들의 결합, 예컨대, DSP와 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다.
[0077] 또한, 본원의 예시적인 양상들 중 임의의 것에서 설명된 동작 단계들은 예들 및 논의를 제공하기 위해 설명된다는 것이 주의된다. 설명된 동작들은 예시된 시퀀스들 이외의 다수의 상이한 시퀀스들로 수행될 수 있다. 또한, 단일 동작 단계에서 설명된 동작들은 실제로 다수의 상이한 단계들에서 수행될 수 있다. 부가적으로, 예시적인 양상들에서 논의된 하나 또는 그 초과의 동작 단계들은 결합될 수 있다. 흐름도 도면들에 예시되는 동작 단계들은 당업자에게 쉽게 자명하게 될 바와 같이 다수의 상이한 다른 변형들이 가해질 수 있다는 것이 이해될 것이다. 당업자들은, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 이용하여 표현될 수 있다는 것을 또한 이해할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
[0078] 본 개시의 이전 설명은 임의의 당업자가 본 개시를 사용하거나 또는 실시하는 것을 가능하게 하도록 제공된다. 본 개시에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이며, 본원에 정의된 일반적인 원리들은 본 개시의 사상 또는 범위를 벗어나지 않으면서 다른 변동들에 적용될 수 있다. 따라서, 본 개시는, 본원에서 설명된 예들 및 설계들로 제한되도록 의도되는 것이 아니라, 본원에 개시된 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위에 부합할 것이다.
Claims (46)
- 어그리게이팅된(aggregated) 메모리 관리 유닛(MMU)으로서,
복수의 메모리 어드레스 변환-전(pre-translation) 판독 트랜잭션들 및 복수의 메모리 어드레스 변환-전 기록 트랜잭션들을 수신하도록 구성된 복수의 입력 데이터 경로들에 변환-전 트랜잭션들을 전달하도록 각각 구성되는 복수의 입력 데이터 포트들 ― 상기 복수의 입력 데이터 경로들은 상기 복수의 변환-전 트랜잭션들의 각각의 변환-전 트랜잭션을 저장하도록 구성된 복수의 입력 트랜잭션 버퍼 슬롯들을 각각 포함하는 대응하는 복수의 입력 트랜잭션 버퍼들을 포함함 ― ; 및
복수의 변환-후(post-translation) 트랜잭션들의 각각의 변환-후 트랜잭션을 저장하도록 구성된 복수의 출력 트랜잭션 버퍼 슬롯들을 각각 포함하는 대응하는 복수의 출력 트랜잭션 버퍼들을 포함하는 복수의 출력 데이터 경로들;
MMU 관리 회로를 포함하고, 상기 MMU 관리 회로는,
상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 변환-전 트랜잭션의 MATR(memory address translation request)을 리트리브하고;
TMAF(translated memory address field)를 생성하기 위해 상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하고; 그리고
상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 상기 TMAF 및 변환-전 트랜잭션 페이로드를 제공하도록 구성되고;
상기 복수의 출력 데이터 경로들의 각각의 출력 데이터 경로는 대응하는 복수의 출력 데이터 포트들을 통해 상기 변환-후 트랜잭션을 출력하도록 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
상기 복수의 입력 데이터 경로들 각각을 독립적으로 클로킹하도록 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
상기 MMU 관리 회로는 추가로, 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들에 메모리 관리 기능성을 제공하도록 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 공유된 레지스터들 및 공유된 제어 로직 중 하나 또는 그 초과를 포함하는,
어그리게이팅된 MMU. - 제1항에 있어서,
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로는, 상기 복수의 입력 데이터 경로들 전부에 의한 상기 복수의 출력 트랜잭션 버퍼 슬롯의 나머지에 대한 액세스를 허용하면서, 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 입력 데이터 경로들의 배타적 사용을 위해 상기 복수의 출력 트랜잭션 버퍼 슬롯들 중 하나 또는 그 초과의 출력 트랜잭션 버퍼 슬롯들을 예약하도록 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로는, 임의의 QoS 우선순위와 연관된 MATR들에 의한 상기 출력 트랜잭션 버퍼 슬롯들의 나머지에 대한 액세스를 허용하면서, 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 상기 복수의 출력 트랜잭션 버퍼 슬롯들 중 하나 또는 그 초과의 출력 트랜잭션 버퍼 슬롯들을 예약하도록 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
변환-후 중재기(post-translation arbiter)를 더 포함하고, 상기 변환-후 중재기는,
상기 복수의 출력 데이터 포트들 중 출력 데이터 포트로 출력되도록 상기 복수의 출력 데이터 경로들의 복수의 서브세트로부터 하나 또는 그 초과의 변환-후 트랜잭션들을 수신하고;
변환-후 QoS(Quality-of-Service) 중재에 기초하여 상기 하나 또는 그 초과의 변환-후 트랜잭션들을 선택하고; 그리고
선택된 변환-후 트랜잭션의 TMAF를, 출력을 위해 상기 출력 데이터 포트에 제공하도록 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
상기 MMU 관리 회로는,
상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근에 있고 물리적 어드레스들로의 가상 어드레스들의 복수의 메모리 어드레스 변환들을 캐시하도록 구성되는 하나 또는 그 초과의 변환 캐시들; 및
MATR에 대한 TMAF를 각각 생성하도록 구성된, 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 하나 또는 그 초과의 하드웨어 페이지 테이블 워커(hardware page table walker)들을 포함하고;
상기 MMU 관리 회로는, 하나 또는 그 초과의 변환 캐시 중 하나 또는 그 초과 및 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들 중 하나 또는 그 초과를 사용하여 상기 TMAF를 생성하기 위해 상기 MATR에 기초하여 상기 메모리 어드레스 변환 동작을 수행하도록 구성되는,
어그리게이팅된 MMU. - 제7항에 있어서,
상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들은 각각, 상기 복수의 출력 데이터 포트들 중 출력 데이터 포트를 사용하여 상기 MATR에 대한 TMAF를 생성하도록 구성되는,
어그리게이팅된 MMU. - 제7항에 있어서,
상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들은 전용 출력 포트를 사용하여 상기 MATR에 대한 TMAF를 생성하도록 구성되는,
어그리게이팅된 MMU. - 제7항에 있어서,
상기 MMU 관리 회로는 추가로, MATR들 및 대응하는 TMAF들의 저장을 위한 복수의 PTAB(pending transaction address buffer) 슬롯들을 포함하는 PTAB를 포함하고;
상기 PTAB는,
보류중인 변환으로서 상기 MMU 관리 회로에 의해, 상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 리트리브되는 변환-전 트랜잭션의 MATR을 저장하고;
상기 MMU 관리 회로에 의해 생성된 보류중인 변환에 대응하는 TMAF를 수신하고;
상기 보류중인 변환에 대한 TMAF를 저장하고; 그리고
상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 상기 TMAF를 제공하기 위해 상기 보류중인 변환을 디큐잉(dequeue)하도록 구성되는,
어그리게이팅된 MMU. - 제10항에 있어서,
상기 PTAB는, 상기 복수의 입력 데이터 경로들 전부에 의한 복수의 PTAB 슬롯들의 나머지에 대한 액세스를 허용하면서, 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 입력 데이터 경로들의 배타적 사용을 위해 상기 복수의 PTAB 슬롯들 중 하나 또는 그 초과의 PTAB 슬롯들을 예약하도록 구성되는,
어그리게이팅된 MMU. - 제10항에 있어서,
상기 PTAB는, 임의의 QoS 우선순위와 연관된 MATR들에 의한 상기 복수의 PTAB 슬롯들의 나머지에 대한 액세스를 허용하면서, 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 상기 복수의 PTAB 슬롯들 중 하나 또는 그 초과의 PTAB 슬롯들을 예약하도록 구성되는,
어그리게이팅된 MMU. - 제10항에 있어서,
상기 MMU 관리 회로는 추가로,
상기 입력 트랜잭션 QoS 중재에 기초하여 상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 상기 변환-전 트랜잭션의 MATR을 선택하고; 그리고
상기 PTAB에 저장되도록 선택된 MATR을 스케줄링하도록 구성되게 함으로써, 상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 상기 변환-전 트랜잭션의 MATR을 리트리브하도록 구성된 입력 변환 스케줄러를 포함하고
상기 PTAB는 상기 입력 변환 스케줄러에 의해 스케줄링된 선택된 MATR을 저장함으로써 상기 MATR을 저장하도록 구성되는,
어그리게이팅된 MMU. - 제13항에 있어서,
상기 입력 변환 스케줄러는 상기 선택된 MATR의 변환-전 트랜잭션의 입력 트랜잭션 버퍼에 대응하는 출력 트랜잭션 버퍼가 이용 가능한 출력 트랜잭션 버퍼 슬롯을 포함한다고 결정함으로써 상기 PTAB에 의해 저장되도록 상기 선택된 MATR을 스케줄링하게 구성되는,
어그리게이팅된 MMU. - 제13항에 있어서,
상기 입력 변환 스케줄러는, 상기 선택된 MATR이 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 배타적 사용을 위해 예약된 복수의 PTAB 슬롯들 중 하나 또는 그 초과에 저장될 수 있다고 결정하는 것에 응답하여 상기 PTAB에 의해 저장되도록 상기 선택된 MATR을 스케줄링하게 구성되는,
어그리게이팅된 MMU. - 제13항에 있어서,
상기 입력 변환 스케줄러는, 상기 선택된 MATR이 상기 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 예약된 복수의 PTAB 슬롯들 중 하나 또는 그 초과에 저장될 수 있다고 결정하는 것에 응답하여 상기 PTAB에 의해 저장되도록 상기 선택된 MATR을 스케줄링하게 구성되는,
어그리게이팅된 MMU. - 제10항에 있어서,
상기 MMU 관리 회로는 추가로, TMAF가 저장된 PTAB의 하나 또는 그 초과의 보류중인 변환들 중에서 보류중인 변환을 선택하고; 그리고
출력 트랜잭션 QoS 중재에 기초하여, 변환-후 트랜잭션으로서 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼로 이동되도록 상기 TMAF를 스케줄링하게 구성됨으로써, 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 상기 변환-후 트랜잭션으로서 상기 TMAF 및 상기 변환-전 트랜잭션 페이로드를 제공하도록 구성된 출력 변환 스케줄러를 포함하고,
상기 PTAB는, 상기 스케줄링에 기초하여, 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 상기 TMAF를 제공하기 위해 상기 보류중인 변환을 디큐잉하도록 구성되는,
어그리게이팅된 MMU. - 제17항에 있어서,
상기 출력 변환 스케줄러는, 상기 보류중인 변환의 MATR이 수신된 입력 트랜잭션 버퍼에 대응하는 출력 트랜잭션 버퍼가 이용 가능한 출력 트랜잭션 버퍼 슬롯을 포함한다는 결정, 및 보류중인 트랜잭션의 상대적 우선순위에 기초하여, 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼들로 이동되도록 상기 TMAF를 스케줄링하게 구성되는,
어그리게이팅된 MMU. - 제17항에 있어서,
상기 출력 변환 스케줄러는 추가로, 상기 변환-후 트랜잭션의 상대적 우선순위를 상승시키도록 구성되는,
어그리게이팅된 MMU. - 제10항에 있어서,
상기 MMU 관리 회로는 추가로,
하나 또는 그 초과의 보류중인 MATR들 사이의 QoS 중재에 기초하여, 하나 또는 그 초과의 보류중인 MATR들 중에서, TMAF가 저장되어 있지 않은 PTAB의 보류중인 MATR을 선택하고;
상기 선택된 MATR에 대응하는 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재하는지를 결정하고;
상기 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재한다고 결정한 것에 응답하여, 상기 PTAB에 의해, 상기 선택된 MATR에 대해 저장될 TMAF의 부분으로서 상기 캐시된 메모리 어드레스 변환 결과를 제공하고; 그리고
상기 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재하지 않는다고 결정한 것에 응답하여:
선택된 보류중인 MATR에 대한 메모리 어드레스 변환 결과를 생성하도록 상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들의 하드웨어 페이지 테이블 워커를 할당하고;
상기 하드웨어 페이지 테이블 워커로부터 상기 메모리 어드레스 변환 결과를 수신하고;
TMAF로서 상기 PTAB에 의해, 상기 선택된 보류중인 MATR에 대해 저장하도록 수신된 메모리 어드레스 변환 결과를 제공하고; 그리고
상기 수신된 메모리 어드레스 변환 결과를 상기 하나 또는 그 초과의 변환 캐시들에 제공하도록 구성되게 함으로써, 상기 MATR에 기초하여 상기 메모리 어드레스 변환 동작을 수행하도록 구성되는 MMU 관리자를 포함하는,
어그리게이팅된 MMU. - 제20항에 있어서,
상기 MMU 관리자는, 하드웨어 페이지 테이블 워커 QoS 중재에 기초하여 상기 선택된 보류중인 MATR에 대한 메모리 어드레스 변환 결과를 생성하도록 상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들 중 하드웨어 페이지 테이블 워커를 할당하게 구성되는,
어그리게이팅된 MMU. - 제1항에 있어서,
집적 회로(IC)에 통합되는,
어그리게이팅된 MMU. - 제1항에 있어서,
셋톱 박스; 엔터테인먼트 유닛; 내비게이션 디바이스; 통신 디바이스; 고정 위치 데이터 유닛; 이동 위치 데이터 유닛; 모바일 전화; 셀룰러 폰; 스마트폰, 태블릿; 패블릿(phablet); 컴퓨터; 휴대용 컴퓨터; 데스크톱 컴퓨터; PDA(personal digital assistant); 모니터; 컴퓨터 모니터; 텔레비전; 튜너; 라디오; 위성 라디오; 뮤직 플레이어; 디지털 뮤직 플레이어; 휴대용 뮤직 플레이어; 디지털 비디오 플레이어; 비디오 플레이어; DVD(digital video disc) 플레이어; 휴대용 디지털 비디오 플레이어; 및 자동차로 구성된 그룹으로부터 선택되는 디바이스에 통합되는,
어그리게이팅된 MMU. - 어그리게이팅된 메모리 관리 유닛(MMU)으로서,
복수의 입력 데이터 경로들에 대응하는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 MATR(memory address translation request)을 리트리브하기 위한 수단;
TMAF(translated memory address field)를 생성하기 위해 상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 수단;
상기 복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 상기 TMAF 및 변환-전 트랜잭션 페이로드를 제공하기 위한 수단; 및
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로를 통해 복수의 출력 데이터 포트들 중 출력 데이터 포트로 상기 변환-후 트랜잭션을 출력하기 위한 수단을 포함하는,
어그리게이팅된 MMU. - 제24항에 있어서,
상기 TMAF를 생성하기 위해 상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하기 위한 수단은, 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 하나 또는 그 초과의 변환 캐시들 및 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 포함하는,
어그리게이팅된 MMU. - 메모리 관리를 제공하기 위한 방법으로서,
어그리게이팅된 MMU(memory management unit)에 의해, 복수의 입력 데이터 경로들에 대응하는 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터, 변환-전 트랜잭션의 MATR(memory address translation request)을 리트리브하는 단계;
TMAF(translated memory address field)를 생성하기 위해 상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하는 단계;
상기 복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 상기 TMAF 및 변환-전 트랜잭션 페이로드를 제공하는 단계; 및
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로를 통해 복수의 출력 데이터 포트들 중 출력 데이터 포트로 상기 변환-후 트랜잭션을 출력하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 복수의 입력 데이터 경로들 각각은 독립적으로 클로킹되는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 어그리게이팅된 MMU는 추가로, 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들에 메모리 관리 기능성을 제공하도록 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 공유된 레지스터들 및 공유된 제어 로직 중 하나 또는 그 초과를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로는, 상기 복수의 입력 데이터 경로들 전부에 의한 상기 복수의 출력 트랜잭션 버퍼 슬롯의 나머지에 대한 액세스를 허용하면서, 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 입력 데이터 경로들의 배타적 사용을 위해 복수의 출력 트랜잭션 버퍼 슬롯들 중 하나 또는 그 초과의 출력 트랜잭션 버퍼 슬롯들을 예약하도록 구성되는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 복수의 출력 데이터 경로들 중 출력 데이터 경로는, 임의의 QoS 우선순위와 연관된 MATR들에 의한 상기 출력 트랜잭션 버퍼 슬롯들의 나머지에 대한 액세스를 허용하면서, 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 상기 복수의 출력 트랜잭션 버퍼 슬롯들 중 하나 또는 그 초과의 출력 트랜잭션 버퍼 슬롯들을 예약하도록 구성되는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 어그리게이팅된 MMU의 변환-후 중재기에 의해, 상기 복수의 출력 데이터 포트들 중 출력 데이터 포트로 출력되도록 상기 복수의 출력 데이터 경로들의 복수의 서브세트로부터 하나 또는 그 초과의 변환-후 트랜잭션들을 수신하는 단계;
상기 변환-후 중재기에 의해, 변환-후 QoS(Quality-of-Service) 중재에 기초하여 상기 하나 또는 그 초과의 변환-후 트랜잭션들을 선택하는 단계; 및
상기 변환-후 중재기에 의해, 선택된 변환-후 트랜잭션의 TMAF를, 출력을 위해 상기 출력 데이터 포트에 제공하는 단계를 더 포함하는,
메모리 관리를 제공하기 위한 방법. - 제26항에 있어서,
상기 TMAF를 생성하기 위해 상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하는 단계는, 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 하나 또는 그 초과의 변환 캐시들 및 상기 복수의 입력 데이터 경로들 및 상기 복수의 출력 데이터 경로들 부근의 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들을 이용하여 상기 메모리 어드레스 변환 동작을 수행하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제32항에 있어서,
상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들은 상기 복수의 출력 데이터 포트들 중 출력 데이터 포트를 사용하여 상기 MATR에 대한 TMAF를 생성하는,
메모리 관리를 제공하기 위한 방법. - 제32항에 있어서,
상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들은 전용 출력 포트를 사용하여 상기 MATR에 대한 TMAF를 생성하는,
메모리 관리를 제공하기 위한 방법. - 제32항에 있어서,
상기 어그리게이팅된 MMU의 PTAB(pending transaction address buffer)에 의해, 보류중인 변환으로서 MMU에 의해, 상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 리트리브되는 변환-전 트랜잭션의 MATR을 저장하는 단계;
상기 PTAB에 의해, MMU 관리 회로에 의해 생성된 보류중인 변환에 대응하는 TMAF를 수신하는 단계;
상기 PTAB에 의해, 보류중인 변환에 대한 TMAF를 저장하는 단계; 및
상기 PTAB에 의해, 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 상기 TMAF를 제공하기 위해 상기 보류중인 변환을 디큐잉하는 단계를 더 포함하는,
메모리 관리를 제공하기 위한 방법. - 제35항에 있어서,
상기 PTAB의 복수의 PTAB 슬롯들 중 하나 또는 그 초과의 PTAB 슬롯들은, 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 입력 데이터 경로들의 배타적 사용을 위해 예약되는 반면에, 상기 복수의 PTAB 슬롯들의 나머지는 상기 복수의 입력 데이터 경로들 전부에 의해 액세스를 가능한,
메모리 관리를 제공하기 위한 방법. - 제35항에 있어서,
상기 PTAB의 복수의 PTAB 슬롯들 중 하나 또는 그 초과의 PTAB 슬롯들은, 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 예약되는 반면에, 상기 복수의 PTAB 슬롯들의 나머지는 임의의 QoS 우선순위와 연관된 MATR들에 의해 액세스 가능한,
메모리 관리를 제공하기 위한 방법. - 제35항에 있어서,
상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 변환-전 트랜잭션의 MATR을 리트리브하는 단계는,
상기 어그리게이팅된 MMU의 입력 변환 스케줄러에 의해, 상기 입력 트랜잭션 QoS 중재에 기초하여 상기 복수의 입력 트랜잭션 버퍼들 중 입력 트랜잭션 버퍼로부터 상기 변환-전 트랜잭션의 MATR을 선택하는 단계; 및
상기 입력 변환 스케줄러에 의해, 상기 PTAB에 의해 저장되도록 선택된 MATR을 스케줄링하는 단계를 포함하고;
상기 MATR을 저장하는 단계는, 상기 입력 변환 스케줄러에 의해 스케줄링된 선택된 MATR을 저장하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제38항에 있어서,
상기 PTAB에 의해 저장되도록 선택된 MATR을 스케줄링하는 단계는, 상기 선택된 MATR의 변환-전 트랜잭션의 입력 트랜잭션 버퍼에 대응하는 출력 트랜잭션 버퍼가 이용 가능한 출력 트랜잭션 버퍼 슬롯을 포함한다고 결정하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제38항에 있어서,
상기 PTAB에 의해 저장되도록 선택된 MATR을 스케줄링하는 단계는, 상기 선택된 MATR이 상기 복수의 입력 데이터 경로들 중 하나 또는 그 초과의 배타적 사용을 위해 예약된 복수의 PTAB 슬롯들 중 하나 또는 그 초과에 저장될 수 있다고 결정하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제38항에 있어서,
상기 PTAB에 의해 저장되도록 선택된 MATR을 스케줄링하는 단계는, 상기 선택된 MATR이 상기 하나 또는 그 초과의 특정된 QoS 우선순위들과 연관된 MATR들의 배타적 사용을 위해 예약된 복수의 PTAB 슬롯들 중 하나 또는 그 초과에 저장될 수 있다고 결정하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제35항에 있어서,
상기 복수의 입력 데이터 경로들에 대응하는 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 변환-후 트랜잭션으로서 상기 TMAF 및 변환-전 트랜잭션 페이로드를 제공하는 단계는,
상기 어그리게이팅된 MMU의 출력 변환 스케줄러에 의해, TMAF가 저장된 PTAB의 하나 또는 그 초과의 보류중인 변환들 중에서 보류중인 변환을 선택하는 단계;
상기 출력 변환 스케줄러에 의해, 출력 트랜잭션 QoS 중재에 기초하여, 변환-후 트랜잭션으로서 상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼로 이동되도록 상기 TMAF를 스케줄링하는 단계를 포함하고,
상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼에 상기 TMAF를 제공하기 위해 상기 보류중인 변환을 디큐잉하는 단계는 상기 스케줄링에 기초하는,
메모리 관리를 제공하기 위한 방법. - 제42항에 있어서,
상기 복수의 출력 트랜잭션 버퍼들 중 출력 트랜잭션 버퍼들로 이동되도록 상기 보류중인 TMAF를 스케줄링하는 단계는, 상기 보류중인 변환의 MATR이 수신된 입력 트랜잭션 버퍼에 대응하는 출력 트랜잭션 버퍼가 이용 가능한 출력 트랜잭션 버퍼 슬롯을 포함한다는 결정 및 상기 보류중인 변환의 상대적 우선순위에 기초하는,
메모리 관리를 제공하기 위한 방법. - 제42항에 있어서,
상기 출력 변환 스케줄러에 의해, 상기 변환-후 트랜잭션의 상대적 우선순위를 상승시키는 단계를 더 포함하는,
메모리 관리를 제공하기 위한 방법. - 제35항에 있어서,
상기 MATR에 기초하여 메모리 어드레스 변환 동작을 수행하는 단계는,
상기 어그리게이팅된 MMU의 MMU 관리자에 의해, 하나 또는 그 초과의 보류중인 MATR들 사이의 QoS 중재에 기초하여, 하나 또는 그 초과의 보류중인 MATR들 중에서, TMAF가 저장되어 있지 않은 PTAB의 보류중인 MATR을 선택하는 단계;
상기 MMU 관리자에 의해, 선택된 보류중인 MATR에 대응하는 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재하는지를 결정하는 단계;
상기 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재한다고 결정한 것에 응답하여, 상기 MMU 관리자에 의해, 상기 PTAB에 의해, 상기 선택된 보류중인 MATR에 대해 저장될 TMAF의 부분으로서 상기 캐시된 메모리 어드레스 변환 결과를 제공하는 단계; 그리고
상기 캐시된 메모리 어드레스 변환 결과가 상기 하나 또는 그 초과의 변환 캐시들에 존재하지 않는다고 결정한 것에 응답하여:
상기 MMU 관리자에 의해, 상기 선택된 보류중인 MATR의 MATR에 대한 메모리 어드레스 변환 결과를 생성하도록 상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들 중 하드웨어 페이지 테이블 워커를 할당하는 단계;
상기 MMU 관리자에 의해, 상기 하드웨어 페이지 테이블 워커로부터 상기 메모리 어드레스 변환 결과를 수신하는 단계;
상기 MMU 관리자에 의해, TMAF로서 상기 PTAB에 의해, 상기 선택된 보류중인 MATR에 대해 저장하도록 수신된 메모리 어드레스 변환 결과를 제공하는 단계; 및
상기 수신된 메모리 어드레스 변환 결과를 상기 하나 또는 그 초과의 변환 캐시들에 제공하는 단계를 포함하는,
메모리 관리를 제공하기 위한 방법. - 제45항에 있어서,
상기 선택된 MATR에 대한 메모리 어드레스 변환 결과를 생성하도록 상기 하나 또는 그 초과의 하드웨어 페이지 테이블 워커들 중 하드웨어 페이지 테이블 워커를 할당하는 단계는, 하드웨어 페이지 테이블 워커 QoS 중재에 기초하는,
메모리 관리를 제공하기 위한 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,228 US10019380B2 (en) | 2015-09-25 | 2015-09-25 | Providing memory management functionality using aggregated memory management units (MMUs) |
US14/866,228 | 2015-09-25 | ||
PCT/US2016/051254 WO2017053112A1 (en) | 2015-09-25 | 2016-09-12 | Providing memory management functionality using aggregated memory management units (mmus) |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180054836A true KR20180054836A (ko) | 2018-05-24 |
Family
ID=56979683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187011644A KR20180054836A (ko) | 2015-09-25 | 2016-09-12 | 어그리게이팅된 mmu(memory management unit)들을 사용한 메모리 관리 기능성의 제공 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10019380B2 (ko) |
EP (1) | EP3353663B1 (ko) |
JP (1) | JP6408747B1 (ko) |
KR (1) | KR20180054836A (ko) |
CN (1) | CN108351838B (ko) |
BR (1) | BR112018006070A2 (ko) |
CA (1) | CA2998337A1 (ko) |
TW (1) | TW201723854A (ko) |
WO (1) | WO2017053112A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020040531A1 (ko) | 2018-08-20 | 2020-02-27 | 한양대학교 산학협력단 | 무선통신 시스템에서 단말 정보 수집장치의 상향링크 간섭제어 방법 및 장치 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10007619B2 (en) * | 2015-05-29 | 2018-06-26 | Qualcomm Incorporated | Multi-threaded translation and transaction re-ordering for memory management units |
US20190087351A1 (en) * | 2017-09-20 | 2019-03-21 | Qualcomm Incorporated | Transaction dispatcher for memory management unit |
US11656905B2 (en) * | 2019-08-09 | 2023-05-23 | Arm Limited | Delegation control based on program privilege level and page privilege level |
CN115113828B (zh) * | 2022-08-26 | 2022-12-02 | 瀚博半导体(上海)有限公司 | 存储器管理系统、方法、人工智能芯片、电子设备和介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08328994A (ja) * | 1995-05-30 | 1996-12-13 | Toshiba Corp | 情報処理装置 |
JP4240610B2 (ja) * | 1998-11-27 | 2009-03-18 | 株式会社日立製作所 | 計算機システム |
US6625157B2 (en) * | 1999-05-20 | 2003-09-23 | Advanced Micro Devices, Inc. | Apparatus and method in a network switch port for transferring data between buffer memory and transmit and receive state machines according to a prescribed interface protocol |
US6742101B2 (en) * | 2001-06-29 | 2004-05-25 | Fujitsu Limited | Scalable and flexible method for address space decoding in a multiple node computer system |
US7673116B2 (en) | 2006-01-17 | 2010-03-02 | Advanced Micro Devices, Inc. | Input/output memory management unit that implements memory attributes based on translation data |
JP4909963B2 (ja) * | 2008-09-09 | 2012-04-04 | 株式会社東芝 | 統合メモリ管理装置 |
US8301865B2 (en) | 2009-06-29 | 2012-10-30 | Oracle America, Inc. | System and method to manage address translation requests |
US8234407B2 (en) * | 2009-06-30 | 2012-07-31 | Oracle America, Inc. | Network use of virtual addresses without pinning or registration |
US9405700B2 (en) | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
GB2495533A (en) | 2011-10-13 | 2013-04-17 | St Microelectronics Res & Dev | Distributing buffer data evenly across different memory devices |
US20130179642A1 (en) * | 2012-01-10 | 2013-07-11 | Qualcomm Incorporated | Non-Allocating Memory Access with Physical Address |
US9378150B2 (en) | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US9009446B2 (en) | 2012-08-02 | 2015-04-14 | Oracle International Corporation | Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with electrical interconnect |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US20150161057A1 (en) | 2013-12-05 | 2015-06-11 | Qualcomm Incorporated | System and method for providing client-side address translation in a memory management system |
-
2015
- 2015-09-25 US US14/866,228 patent/US10019380B2/en active Active
-
2016
- 2016-08-30 TW TW105127828A patent/TW201723854A/zh unknown
- 2016-09-12 CN CN201680055150.XA patent/CN108351838B/zh not_active Expired - Fee Related
- 2016-09-12 JP JP2018515040A patent/JP6408747B1/ja not_active Expired - Fee Related
- 2016-09-12 EP EP16770162.2A patent/EP3353663B1/en not_active Not-in-force
- 2016-09-12 WO PCT/US2016/051254 patent/WO2017053112A1/en active Application Filing
- 2016-09-12 BR BR112018006070A patent/BR112018006070A2/pt not_active Application Discontinuation
- 2016-09-12 CA CA2998337A patent/CA2998337A1/en not_active Abandoned
- 2016-09-12 KR KR1020187011644A patent/KR20180054836A/ko active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020040531A1 (ko) | 2018-08-20 | 2020-02-27 | 한양대학교 산학협력단 | 무선통신 시스템에서 단말 정보 수집장치의 상향링크 간섭제어 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
WO2017053112A1 (en) | 2017-03-30 |
CA2998337A1 (en) | 2017-03-30 |
US20170091116A1 (en) | 2017-03-30 |
TW201723854A (zh) | 2017-07-01 |
CN108351838B (zh) | 2019-08-30 |
JP2018533787A (ja) | 2018-11-15 |
CN108351838A (zh) | 2018-07-31 |
JP6408747B1 (ja) | 2018-10-17 |
BR112018006070A2 (pt) | 2018-10-09 |
EP3353663A1 (en) | 2018-08-01 |
US10019380B2 (en) | 2018-07-10 |
EP3353663B1 (en) | 2019-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3353663B1 (en) | Providing memory management functionality using aggregated memory management units (mmus) | |
CN103201726B (zh) | 提供细粒度仲裁系统 | |
US9064050B2 (en) | Arbitrating bus transactions on a communications bus based on bus device health information and related power management | |
CN109565476B (zh) | 使用共享全局存储器储备进行队列保护 | |
KR101881089B1 (ko) | 스트림 트랜잭션 정보에 기초하여 페이지 관리 정책들을 적용하기 위한 메모리 제어기들, 시스템들 및 방법들 | |
US7865647B2 (en) | Efficient resource arbitration | |
US8817619B2 (en) | Network system with quality of service management and associated management method | |
US20060271715A1 (en) | Interconnect logic for a data processing apparatus | |
EP3224728B1 (en) | Providing shared cache memory allocation control in shared cache memory systems | |
US10127169B2 (en) | Supporting flow control mechanism of bus between semiconductor dies assembled in wafer-level package | |
EP3676711A1 (en) | Providing fine-grained quality of service (qos) control using interpolation for partitioned resources in processor-based systems | |
EP2625619B1 (en) | Arbitrating stream transactions based on information related to the stream transaction(s) | |
WO2006134550A2 (en) | Memory controller | |
US9891840B2 (en) | Method and arrangement for controlling requests to a shared electronic resource | |
CN103201728B (zh) | 基于与流事务有关的信息来仲裁流事务 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |