KR101895852B1 - Mmu(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공 - Google Patents

Mmu(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공 Download PDF

Info

Publication number
KR101895852B1
KR101895852B1 KR1020177034306A KR20177034306A KR101895852B1 KR 101895852 B1 KR101895852 B1 KR 101895852B1 KR 1020177034306 A KR1020177034306 A KR 1020177034306A KR 20177034306 A KR20177034306 A KR 20177034306A KR 101895852 B1 KR101895852 B1 KR 101895852B1
Authority
KR
South Korea
Prior art keywords
partition
partitions
tcpid
translation
cache
Prior art date
Application number
KR1020177034306A
Other languages
English (en)
Other versions
KR20180013930A (ko
Inventor
제이슨 에드워드 포다이마
보후슬라프 리칠크
카를로스 제비어 모레라
세라지 모니어 가델랩
폴 크리스토퍼 존 위어시엔스키
알렉산더 미레트스키
카일 존 에르네웨인
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180013930A publication Critical patent/KR20180013930A/ko
Application granted granted Critical
Publication of KR101895852B1 publication Critical patent/KR101895852B1/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
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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/109Address translation 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/12Replacement control
    • 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
    • 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/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • 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/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • Y02D10/13

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(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들이 제공된다. 이와 관련하여, 일 양상에서, MMU를 포함하는 장치가 제공된다. MMU는 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하는 변환 캐시를 포함한다. MMU는, 각각이 복수의 변환 캐시 엔트리들 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함하는 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터들을 제공하는 파티션 디스크립터 테이블을 더 포함한다. MMU는 또한, 요청자로부터 메모리 액세스 요청을 수신하도록 구성된 파티션 변환 회로를 포함한다. 파티션 변환 회로는, 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하고, TCPID에 기반하여 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하고, 그리고 하나 또는 그 초과의 파티션들의 변환 캐시 엔트리 상에서 메모리 액세스 요청을 수행하도록 추가로 구성된다.

Description

MMU(MEMORY MANAGEMENT UNIT) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공
[0001] 본 출원은 2015년 5월 29일자로 출원된 "PROVIDING MEMORY MANAGEMENT UNIT (MMU) PARTITIONED TRANSLATION CACHES, AND RELATED APPARATUSES, METHODS, AND COMPUTER-READABLE MEDIA"라는 명칭의 미국 특허 출원 일련 번호 제 14/725,882 호에 대한 우선권을 주장하고, 상기 출원은 그 전체 내용이 인용에 의해 본원에 포함된다.
[0002] 본 개시내용의 기술은 일반적으로, MMU(memory management unit)들에 의해 제공된 변환 캐시들에 관한 것이다.
[0003] 가상 메모리는 가장 최신 컴퓨팅 시스템들에 의해 제공되는 메모리 관리 기법이다. 가상 메모리를 사용하여, 컴퓨팅 시스템의 CPU(central processing unit) 또는 주변 디바이스는 물리적 메모리 공간 내의 물리적 메모리 어드레스에 맵핑된 가상 메모리 어드레스를 사용하여 메모리 버퍼에 액세스할 수 있다. 이러한 방식으로, CPU 또는 주변 디바이스는 달리 가능한 것보다 더 큰 물리적 어드레스 공간을 어드레싱할 수 있고, 그리고/또는 물리적 메모리 공간에 걸쳐 사실상 물리적으로 인접해 있지 않은 메모리 버퍼의 인접한 뷰를 활용할 수 있다.
[0004] 종래에, 가상 메모리는, 가상 메모리 어드레스들을 물리적 메모리 어드레스들로 변환하기 위한 MMU(memory management unit)의 사용을 통해 구현된다. MMU는 컴퓨팅 시스템의 CPU로 통합(CPU MMU)될 수 있거나, 또는 주변 디바이스들에 대한 메모리 관리 기능들을 제공하는 별개의 회로(시스템 MMU, 또는 SMMU)를 포함할 수 있다. 종래의 동작에서, MMU는, 비-제한적 예들로서, DMA(direct memory access) 에이전트들, 비디오 가속기들, 및/또는 디스플레이 엔진들과 같은 "업스트림" 디바이스들로부터 메모리 액세스 요청들을 수신한다. 각각의 메모리 액세스 요청을 위해, MMU는 메모리 액세스 요청에 포함되는 가상 메모리 어드레스들을 물리적 메모리 어드레스로 변환하고, 그런 다음, 메모리 액세스 요청은 변환된 물리적 메모리 어드레스를 사용하여 프로세싱된다.
[0005] MMU가 단 시간 인터벌 내에서 동일한 가상 메모리 어드레스를 반복적으로 변환하도록 요구될 수 있기 때문에, MMU의 성능 및 컴퓨팅 시스템 전체는 MMU 내에서 어드레스 변환 데이터를 캐싱함으로써 개선될 수 있다. 이와 관련하여, MMU는 변환 캐시(변환 색인 버퍼 또는 TLB로 또한 지칭됨)로 알려진 구조를 포함할 수 있다. 변환 캐시는 변환 캐시 엔트리들을 제공하고, 여기에, 사전에 생성된 가상-투-물리적 메모리 어드레스 변환 맵핑들이 추후 액세스를 위해 저장될 수 있다. MMU가 변환 캐시에 저장된 가상 메모리 어드레스를 변환하기 위한 요청을 후속적으로 수신하면, MMU는 가상 메모리 어드레스를 재변환하는 것보다는 변환 캐시로부터 대응하는 물리적 메모리 어드레스를 리트리브할 수 있다.
[0006] 그러나, 변환 캐시의 사용을 통해 달성되는 성능 이익들은 MMU가 어드레스 변환 서비스들을 다수의 업스트림 디바이스들에 제공하는 시나리오들에서 손실될 수 있다. 업스트림 디바이스들이 MMU의 변환 캐시의 자원들을 공유해야 하기 때문에, 제한된 수의 변환 캐시 엔트리들의 경합이 "스래싱(thrashing)"을 초래할 수 있고, 여기서, 2 개 또는 그 초과의 업스트림 디바이스들은 그들 자신들을 위해 서로의 변환 캐시 엔트리들을 반복적으로 축출한다. 최악의 경우의 시나리오에서, 스래싱으로부터 발생하는 추가적 오버헤드가 캐싱의 이익들을 상쇄시킬 수 있다. 더 큰 변환 캐시는 변환 캐시 엔트리들에 대한 디바이스-간 경합의 효과들을 완화할 수 있지만, 또한 증가된 전력 소비 및 더 큰 물리적 풋프린트(footprint)를 초래할 수 있다.
[0007] 상세한 설명에서 개시되는 양상들은, MMU(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들을 제공하는 것을 포함한다. 이와 관련하여, MMU는 변환 캐시 파티셔닝을 가능하게 하도록 제공된다. MMU는, 각각이 이전 어드레스 변환 동작에 의해 결정되는 가상-투-물리적 어드레스 맵핑을 저장하는 변환 캐시 엔트리들을 제공하는 변환 캐시를 포함한다. 파티셔닝을 가능하게 하기 위해, MMU는 파티션 디스크립터 테이블, 및 선택적으로, 파티션 리맵핑 테이블 및/또는 파티션 선택 테이블을 제공한다. 파티션 디스크립터 테이블은, 각각이 변환 캐시의 하나 또는 그 초과의 변환 캐시 엔트리들을 포함하는 파티션을 정의하는 파티션 디스크립터들을 포함한다. 요청자로부터 메모리 액세스 요청을 수신할 시, MMU의 파티션 변경 회로는, 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하며, TCPID에 기반하여 파티션들 중 하나 또는 그 초과의 파티션들을 식별한다. 일부 양상들에서, TCPID를 결정하는 것은 출력 TCPID와 연관된 입력 TCPID로서 메모리 액세스 요청의 TCPID를 로케이팅하기 위해 파티션 리맵핑 테이블을 사용하는 것을 포함할 수 있다. 차례로, 출력 TCPID는 그런 다음, 파티션 선택 테이블을 사용하여 하나 또는 그 초과의 파티션들을 식별하기 위해 사용될 수 있다. 일단 하나 또는 그 초과의 파티션들이 식별되면, 캐시 동작(예컨대, 캐시 탐색 동작 및/또는 캐시 축출 동작)이 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대해 수행된다. 이러한 방식으로, MMU의 변환 캐시가 다수의 요청자들 중에서 효과적으로 파티셔닝될 수 있어서, 변환 캐시 엔트리들에 대한 요청자들 사이의 감소된 경합을 초래할 수 있다.
[0008] 일 양상에서, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치가 제공된다. MMU는 각각이 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하도록 구성된 변환 캐시를 포함한다. MMU는 변환 캐시의 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터들을 제공하도록 구성된 파티션 디스크립터 테이블을 더 포함하고, 복수의 파티션들의 각각의 파티션은 복수의 변환 캐시 엔트리들 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함한다. MMU는 또한, 파티션 변환 회로를 포함한다. 파티션 변환 회로는 요청자로부터 메모리 액세스 요청을 수신하도록 구성된다. 파티션 변환 회로는 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하도록 추가로 구성된다. 파티션 변환 회로는 또한, TCPID에 기반하여 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하도록 구성된다. 파티션 변환 회로는, 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대한 캐시 동작을 수행하도록 추가적으로 구성된다.
[0009] 다른 양상에서, MMU가 제공된다. MMU는, 각각이 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하기 위한 수단을 포함한다. MMU는 MMU의 변환 캐시의 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터들을 제공하기 위한 수단을 더 포함하고, 복수의 파티션들의 각각의 파티션은 복수의 변환 캐시 엔트리들 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함한다. MMU는 또한, 요청자로부터 메모리 액세스 요청을 수신하기 위한 수단을 포함한다. MMU는 메모리 어드레스 요청의 TCPID를 결정하기 위한 수단을 추가적으로 포함한다. MMU는 TCPID에 기반하여 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하기 위한 수단을 더 포함한다. MMU는 또한, 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대한 캐시 동작을 수행하기 위한 수단을 포함한다.
[0010] 다른 양상에서, 파티셔닝된 변환 캐시들을 제공하기 위한 방법이 제공된다. 방법은, MMU가 요청자로부터 메모리 액세스 요청을 수신하는 단계를 포함한다. 방법은 메모리 어드레스 요청의 TCPID를 결정하는 단계를 더 포함한다. 방법은 또한, TCPID에 기반하여, MMU의 변환 캐시의 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계를 포함한다. 방법은, 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대한 캐시 동작을 수행하는 단계를 추가적으로 포함한다.
[0011] 다른 양상에서, 컴퓨터-실행가능한 명령들이 저장된 비-일시적 컴퓨터-판독가능한 매체가 제공된다. 프로세서에 의해 실행될 때, 컴퓨터-실행가능한 명령들은, 프로세서로 하여금, 요청자로부터 메모리 액세스 요청을 수신하게 한다. 컴퓨터-실행가능한 명령들은, 프로세서로 하여금 추가로, 메모리 액세스 요청의 TCPID를 결정하게 한다. 컴퓨터-실행가능한 명령들은 또한, 프로세서로 하여금, TCPID에 기반하여, MMU의 변환 캐시의 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 한다. 컴퓨터-실행가능한 명령들은, 추가적으로 프로세서로 하여금, 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대한 캐시 동작을 수행하게 한다.
[0012] 도 1은, 업스트림 디바이스들로부터 어드레스 변환 서비스들을 제공하는 MMU(memory management unit)로의 통신 흐름들을 예시하는 예시적 컴퓨팅 시스템을 예시하는 블록 다이어그램이다.
[0013] 도 2는, 파티셔닝된 변환 캐시를 제공하기 위한 예시적 MMU를 예시하는 블록 다이어그램이다.
[0014] 도 3a 및 도 3b는, 변환 캐시 파티션을 정의하기 위한, 도 2에서 예시되는 파티션 디스크립터의 예시적 양상들을 예시하는 블록 다이어그램들이다.
[0015] 도 4는, TCPID(translation cache partition identifier)를 결정하기 위한, 도 2에서 예시되는 파티션 변환 회로 및 메모리 액세스 요청의 예시적 양상들을 예시하는 블록 다이어그램이다.
[0016] 도 5는, 파티셔닝된 변환 캐시들을 제공하기 위한, 도 2의 MMU의 예시적 동작들을 예시하는 플로우차트이다.
[0017] 도 6a-6c는, 파티션 선택 엔트리들의 사용 및 TCPID 리맵핑을 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 추가적인 예시적 동작들을 예시하는 플로우차트들이다.
[0018] 도 7은, 도 1의 MMU를 포함할 수 있는 예시적 프로세서-기반 시스템의 블록 다이어그램이다.
[0019] 이제 도시된 도면들을 참조하면, 본 개시내용의 몇몇 예시적 양상들이 설명된다. "예시적"이라는 용어는, "예, 예증 또는 예시로서 제공되는"을 의미하는 것으로 본원에서 사용된다. "예시적"으로서 본원에서 설명되는 임의의 양상은 반드시 다른 양상들에 비해 바람직하거나 또는 유리한 것으로서 해석되는 것은 아니다.
[0020] 본원에서 개시되는 바와 같은 MMU 파티셔닝된 변환 캐시들을 제공하기 위한 예시적 장치들 및 방법들을 논의하기 이전에, 가상-투-물리적 메모리 어드레스 변환을 제공하는 종래의 컴퓨팅 시스템이 설명된다. 이와 관련하여, 도 1은 CPU(central processing unit) MMU(102)가 어드레스 변환 서비스들을 CPU(104)에 제공하고, SMMU(system MMU)(106)가 업스트림 디바이스들(108, 110 및 112)에 어드레스 변환 서비스들을 제공하는 예시적 컴퓨팅 시스템(100)을 예시하는 블록 다이어그램이다. 컴퓨팅 시스템(100) 및 이의 엘리먼트들은, 다른 엘리먼트들 중에서, 알려진 디지털 논리 엘리먼트들, 반도체 회로들, 프로세싱 코어들 및/또는 메모리 구조들, 또는 이들의 조합들 중 임의의 하나를 포함할 수 있다는 것이 이해될 것이다. 본원에서 설명되는 양상들은 엘리먼트들의 임의의 특정 어레인지먼트로 제한되는 것은 아니고, 개시되는 기법들은 반도체 다이들 또는 패키지들 상의 다양한 구조들 및 레이아웃들로 용이하게 확장될 수 있다.
[0021] 도 1에서 보여지는 바와 같이, 컴퓨팅 시스템(100)은, 상호연결부(126)의 대응하는 슬래이브 포트들(S)(120, 122 및 124)에 연결된 마스터 포트들(M)(114, 116 및 118)을 각각 가지는 업스트림 디바이스들(108, 110 및 112)을 포함한다. 일부 양상들에서, 업스트림 디바이스들(108, 110 및 112) 각각은, 비-제한적 예들로서, 주변 디바이스, 이를테면, DMA(direct memory access) 에이전트, 비디오 가속기, 및/또는 디스플레이 엔진을 포함할 수 있다. 상호연결부(126)는 업스트림 디바이스들(108, 110 및 112)로부터 메모리 액세스 요청들(도시되지 않음)을 수신할 수 있으며, SMMU(106)의 마스터 포트(M)(128)로부터 슬래이브 포트(S)(130)로 메모리 액세스 요청들을 전달할 수 있다. 각각의 메모리 액세스 요청을 수신한 이후에, SMMU(106)는 가상-투-물리적 메모리 어드레스 변환을 수행할 수 있으며, 어드레스 변환에 기반하여, 시스템 상호연결부(136)를 통해 메모리(132) 및/또는 슬래이브 디바이스(134)에 액세스할 수 있다. 도 1에 도시되는 바와 같이, SMMU(106)의 마스터 포트(M)(138)는 시스템 상호연결부(136)의 슬래이브 포트(S)(140)와 통신한다. 결국, 시스템 상호연결부(136)는 마스터 포트들(M)(142 및 144)을 통해 메모리(132) 및 슬래이브 디바이스(134)의 슬래이브 포트들(S)(146 및 148)과 각각 통신한다. 일부 양상들에서, 메모리(132) 및/또는 슬래이브 디바이스(134)는 비-제한적 예들로서, 시스템 메모리, 시스템 레지스터들, 및/또는 메모리-맵핑된 I/O(input/output) 디바이스들을 포함할 수 있다. SMMU(106)가 업스트림 디바이스들(108, 110 및 112)을 서빙하지만, 일부 양상들은 SMMU(106)가 도 1에서 예시되는 것보다 더 많거나 또는 더 적은 업스트림 디바이스들을 서빙할 수 있다는 것을 제공할 수 있다는 것이 이해될 것이다.
[0022] 위에서 서술된 바와 같이, 컴퓨팅 시스템(100)은 또한, CPU MMU(102)가 통합된 CPU(104)를 포함한다. CPU MMU(102)는, SMMU(106)가 어드레스 변환 서비스들을 업스트림 디바이스들(108, 110 및 112)에 제공하는 것과 대체로 동일한 방식으로, CPU MMU(102)의 CPU 메모리 액세스 요청들(도시되지 않음)에 대한 어드레스 변환 서비스들을 제공할 수 있다. CPU 메모리 액세스 요청의 가상-투-물리적 메모리 어드레스 변환을 수행한 이후에, CPU MMU(102)는 시스템 상호연결부(136)를 통해 메모리(132) 및/또는 슬래이브 디바이스(134)에 액세스할 수 있다. 특히, CPU(104)의 마스터 포트(M)(150)는 시스템 상호연결부(136)의 슬래이브 포트(S)(152)와 통신한다. 그런 다음, 시스템 상호연결부(136)는 마스터 포트들(M)(142 및 144)을 통해 메모리(132) 및 슬래이브 디바이스(134)의 슬래이브 포트들(S)(146 및 148)과 각각 통신한다.
[0023] 성능을 개선하기 위해, MMU, 이를테면, CPU MMU(102) 및/또는 SMMU(106)는, 사전에 생성된 가상-투-물리적 메모리 어드레스 변환 맵핑들을 저장하기 위한 변환 캐시(도시되지 않음)를 제공할 수 있다. 그러나, 다수의 업스트림 디바이스들에 공유되는 MMU, 이를테면, SMMU(106)의 경우, 업스트림 디바이스들은 변환 캐시의 제한된 자원들에 대해 경합하도록 강제될 수 있다. 이것은, 업스트림 디바이스들이 그들 자신들을 위해 서로의 변환 캐시 엔트리들을 반복적으로 축출하므로, 스래싱을 초래할 수 있다. 최악의 경우의 시나리오에서, 스래싱에 의해 발생되는 추가적 오버헤드가 변환 캐시의 이익들을 상쇄시킬 수 있다.
[0024] 이와 관련하여, 도 2는 파티셔닝된 변환 캐시를 제공하기 위한 예시적 MMU(200)를 예시하도록 제공된다. 일부 양상들에서, MMU(200)는, CPU MMU(102) 및/또는 SMMU(106) 대신에, 컴퓨팅 시스템, 이를테면, 도 1의 컴퓨팅 시스템(100)에서 사용될 수 있다. MMU(200)는 변환 캐시 엔트리들(204(0)-204(X))을 제공하는 변환 캐시(202)를 포함한다. 일부 양상들에서, 변환 캐시 엔트리들(204(0)-204(X)) 각각은, 비-제한적 예로서, 어드레스 변환 맵핑(도시되지 않음), 이를테면, 가상-투-물리적 메모리 어드레스 변환 맵핑을 정의한다. 일부 양상들은 변환 캐시(202)가 도 2에서 예시되는 것보다 더 많거나 또는 더 적은 변환 캐시 엔트리들(204(0)-204(X))을 포함할 수 있는 것을 제공할 수 있다는 것이 이해될 것이다. 변환 캐시(202)는 또한, "각각이 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하기 위한 수단"으로 본원에서 지칭된다.
[0025] MMU(200)는 파티션 디스크립터 테이블(206)을 더 포함한다. 파티션 디스크립터 테이블(206)은, 대응하는 파티션들(210(0)-210(N))을 정의하는 파티션 디스크립터들(208(0)-208(N))을 제공한다. 도 2에 도시되는 바와 같이, 파티션들(210(0)-210(N)) 각각은 변환 캐시(202)의 변환 캐시 엔트리들(204(0)-204(X)) 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함한다. 예컨대, 도 2의 예에서, 파티션(210(0))은 변환 캐시 엔트리들(204(0)-204(2))을 포함하는 반면, 파티션(210(1))은 변환 캐시 엔트리들(204(3)-204(5))을 포함하고, 파티션(210(N))은 변환 캐시 엔트리들(204(6)-204(X))을 포함한다. 일부 양상들에 따라, 파티션 디스크립터 테이블(206)은 도 2에서 예시되는 것보다 더 많거나 또는 더 적은 파티션 디스크립터들(208(0)-208(N))을 포함할 수 있다. 파티션 디스크립터 테이블(206)은 또한, "MMU의 변환 캐시의 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터들을 제공하기 위한 수단"으로 본원에서 지칭된다. 대응하는 파티션들(210(0)-210(N))을 정의하기 위해 파티션 디스크립터들(208(0)-208(N))에 의해 사용될 수 있는 예시적 메커니즘들은 도 3a 및 도 3b에 대해 더 상세하게 아래에서 논의된다.
[0026] 일부 양상들에서, 파티션들(210(0)-210(N))은 파티션 디스크립터들(208(0)-208(N))에 의해 정의되는 논리적 구성들로 간주될 수 있다. 일부 양상들은 파티션 디스크립터들(208(0)-208(N))이 설계 시간에 구성될 수 있다는 것을 제공할 수 있다. 따라서, 이러한 양상들에서, 파티션들(210(0)-210(N))의 수 및 파티션들(210(0)-210(N)) 각각에 배정되는 변환 캐시 엔트리들(204(0)-204(X))의 수가 설계 시간에 결정될 수 있다. 일부 양상들에서, 파티션 디스크립터들(208(0)-208(N))은 실행 시간에 소프트웨어에 의해 프로그래밍가능할 수 있어서, 따라서, 파티션들(210(0)-210(N))의 수 및 파티션들(210(0)-210(N)) 각각에 대한 변환 캐시 엔트리들(204(0)-204(X))의 수가 동적으로 구성되게 허용한다.
[0027] 도 2를 계속 참조하면, MMU(200)는 또한, 파티션 변환 회로(212)를 포함한다. 예시적 동작에서, 파티션 변환 회로(212)는 도 1의 업스트림 디바이스들(108, 110, 112) 중 하나의 업스트림 디바이스와 같은 요청자로부터 메모리 액세스 요청(도시되지 않음)을 수신한다. 그런 다음, 파티션 변환 회로(212)는 메모리 액세스 요청의 TCPID(도시되지 않음)를 결정할 수 있다. 도 4에 대해 아래에서 더 상세하게 논의되는 바와 같이, TCPID는 메모리 액세스 요청의 일부로서 요청자에 의해 명백하게 제공될 수 있고 그리고/또는 메모리 액세스 요청 그 자체의 속성들 및/또는 소스 타입에 기반하여 파티션 변환 회로(212)에 의해 유도될 수 있다. 그런 다음, 파티션 변환 회로(212)는 TCPID에 기반하여 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들을 식별하며, 파티션들(210(0)-210(N)) 중 식별된 하나 또는 그 초과의 파티션들에 대응하는 변환 캐시 엔트리들(204(0)-204(X)) 중 하나 또는 그 초과의 변환 캐시 엔트리들에 대한 캐시 동작을 수행한다. 일부 양상들에서, 캐시 동작을 수행하는 것은, 비-제한적 예들로서, 변환 캐시 엔트리들(204(0)-204(X))을 탐색하는 것, 변환 캐시 엔트리들(204(0)-204(X)) 중 하나 또는 그 초과의 변환 캐시 엔트리들에 기록하는 것, 및/또는 변환 캐시 엔트리들(204(0)-204(X)) 중 하나 또는 그 초과의 변환 캐시 엔트리들의 컨텐츠들을 축출하는 것을 포함할 수 있다. 파티션 변환 회로(212)는 "요청자로부터 메모리 액세스 요청을 수신하기 위한 수단", "메모리 액세스 요청의 TCPID를 결정하기 위한 수단", "TCPID에 기반하여 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하기 위한 수단" 및/또는 "변환 캐시 엔트리에 대한 캐시 동작을 수행하기 위한 수단"으로 본원에서 지칭될 수 있다.
[0028] 따라서, 파티션 변환 회로(212)는, 요청자로부터의 메모리 액세스 요청에 대한 응답으로, 파티션 변환 회로(212)가 TCPID에 의해 식별된 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들과 연관된 특정 변환 캐시 엔트리들(204(0)-204(X))에 대한 캐시 동작만을 수행함을 보장할 수 있다. 예컨대, TCPID가 파티션(210(0))을 식별하면, 파티션 변환 회로(212)는 파티션(210(0))과 연관된 변환 캐시 엔트리들(204(0)-204(2))에 대한 캐시 동작만을 수행할 수 있다. 사실상, 파티션 변환 회로(212)는 파티션들(210(0)-210(N))을 사용하여 액세스 제어 메커니즘을 변환 캐시 엔트리들(204(0)-204(X))에 제공할 수 있어서, 상이한 TCPID들과 연관된 요청자들이 서로의 변환 캐시 엔트리들(204(0)-204(X))에 부정적 영향을 미치지 못하게 한다.
[0029] 일부 양상들에서, 메모리 액세스 요청으로부터 유도되거나 그 메모리 액세스 요청 내에서 수신된 TCPID를 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들을 식별하기 위해 실제로 사용되는 "출력" TCPID에 맵핑하는 것이 바람직할 수 있는 상황들이 발생할 수 있다. 예컨대, TCPID 리맵핑을 제공하는 것은 파티션 디스크립터들(208(0)-208(N))의 소프트웨어 재구성을 가능하게 할 수 있다. 이와 관련하여, 일부 양상들에서, 파티션 변환 회로(212)는 하나 또는 그 초과의 리맵핑 엔트리들(216(0)-216(M))을 포함하는 파티션 리맵핑 테이블(214)을 선택적으로 제공할 수 있다. 리맵핑 엔트리들(216(0)-216(M))은 각각, 대응하는 입력 TCPID(218(0)-218(M))(즉, 업스트림 요청자가 어드레스 변환을 위해 사용하도록 특정하는 변환 캐시 파티션 또는 파티션들의 세트를 식별하는 TCPID)를 대응하는 출력 TCPID(220(0)-220(M))(즉, 어드레스 변환을 위해 실제로 사용되는 변환 캐시 파티션 또는 파티션들의 세트를 식별하는 TCPID)에 맵핑한다. 따라서, 파티션 변환 회로(212)는 메모리 액세스 요청으로부터 수신되거나 또는 유도된 TCPID를 결정한 이후에 TCPID 리맵핑을 수행할 수 있다.
[0030] 그렇게 수행하기 위해, 파티션 변환 회로(212)는 먼저, 입력 TCPID(218(0)-218(M))가 메모리 액세스 요청의 TCPID에 대응하는 리맵핑 엔트리들(216(0)-216(M)) 중 하나를 식별한다. 일부 양상들에서, 메모리 액세스 요청의 TCPID는 소프트웨어 프로그래밍가능할 수 있거나, 또는 소프트웨어가 메모리 액세스 요청의 TCPID의 값들을 수정할 수 없도록 하드-코딩될 수 있다. 그런 다음, 파티션 변환 회로(212)는 입력 TCPID(218(0)-218(M))를 포함하는 리맵핑 엔트리(216(0)-216(M))로부터 출력 TCPID(220(0)-220(M))를 리트리브할 수 있으며, 출력 TCPID(220(0)-220(M))를 사용하여 캐시 동작의 타겟으로서 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션을 식별할 수 있다. 이러한 방식으로, 파티션 리맵핑 테이블(214)은 메모리 액세스 요청의 부분으로서 수신된 TCPID의 프로그래밍적 리맵핑을 가능하게 할 수 있으며, 이는, 비-제한적 예들로서, 소프트웨어 성능 최적화, 시스템 성능 튜닝 및/또는 부정확한 요청자-특정 TCPID들로부터 발생하는 하드웨어 이슈들의 정정을 허용할 수 있다.
[0031] 일부 양상들에 따라, MMU(200)는 또한, 캐시 탐색 및/또는 캐시 축출에 활성적이고 적합한 변환 캐시 엔트리들(204(0)-204(X))의 선택을 가능하게 하기 위해 파티션 선택 테이블(222)을 선택적으로 제공할 수 있다. 이를 위해, 파티션 선택 테이블(222)은 파티션들(210(0)-210(N))에 대응하는 파티션 선택 엔트리들(224(0)-224(Y))을 포함한다. 파티션 선택 엔트리들(224(0)-224(Y)) 각각은 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들에 대응할 수 있다. 도 2의 예에서, 예컨대, 파티션 선택 엔트리(224(0))는 파티션들(210(0) 및 210(1))에 대응하는 반면, 파티션 선택 엔트리(224(Y))는 파티션(210(N))에 대응한다. 일부 양상들에서, 파티션 선택 엔트리들(224(0)-224(Y))은 파티션 리맵핑 테이블(214)로부터 리트리브된 출력 TCPID(220(0)-220(M)) 중 하나를 사용하여 선택될 수 있다. 파티션 선택 엔트리들(224(0)-224(Y)) 각각은 탐색 제어 표시자(SRCH)(226(0)-226(Y)) 및 축출 제어 표시자(EVCT)(228(0)-228(Y)) 중 하나 또는 그 둘 모두를 포함할 수 있다. 일부 양상들에서, 탐색 제어 표시자들(226(0)-226(Y)) 및/또는 축출 제어 표시자들(228(0)-228(Y))은 비트 표시자들, 플래그들 및/또는 당해 기술 분야에 알려진 다른 상태 표시자들을 포함할 수 있다.
[0032] 파티션 변환 회로(212)는, 하나 또는 그 초과의 파티션들(210(0)-210(N))에 대한 대응하는 파티션 선택 엔트리(224(0)-224(Y))에 기반하여 캐시 동작에 대한 타겟들로서 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들을 식별하도록 구성될 수 있다. 예컨대, 파티션들(210(0) 및 210(1))에 대한 캐시 탐색 동작을 수행하기 이전에, 파티션 변환 회로(212)는 먼저, 파티션들(210(0) 및 210(1))에 대응하는 파티션 선택 엔트리(224(0))의 탐색 제어 표시자(226(0))에 기반하여, 파티션들(210(0) 및 210(1))이 탐색에 적합한지 여부를 결정할 수 있다. 유사하게, 파티션 변환 회로(212)는, 파티션들(210(0) 및 210(1))에 대응하는 파티션 선택 엔트리(224(0))의 축출 제어 표시자(228(0))에 기반하여, 파티션들(210(0) 및 210(1))이 축출에 적합한지 여부를 결정할 수 있다.
[0033] 위에서 서술된 바와 같이, 파티션 디스크립터 테이블(206)의 파티션 디스크립터들(208(0)-208(N))은 변환 캐시(202)의 대응하는 파티션들(210(0)-210(N))을 정의하기 위해 제공될 수 있다. 도 3a 및 도 3b는 각각, 도 2의 파티션(210(0))과 같은 파티션을 정의하기 위한 상이한 메커니즘들(도시되지 않음)을 예시하는 2개의 예시적 파티션 디스크립터들을 도시하는 블록 다이어그램들(300 및 302)이다. 도 3a 및 도 3b에서, 도 2의 변환 캐시(202)는, 위에서 논의된 바와 같이, 변환 캐시 엔트리들(204(0)-204(X))을 제공한다. 도 3a 및 도 3b는 또한, 각각이 도 2의 변환 캐시 엔트리들(204(0)-204(2))을 포함하는 파티션(210(0))을 정의하는 파티션 디스크립터들(304 및 306)을 각각 제공한다. 따라서, 파티션 디스크립터들(304 및 306)은 도 2의 파티션 디스크립터(208(0))에 기능적으로 대응할 수 있다.
[0034] 도 3a에서, 파티션 디스크립터(304)는 시작 포인터(308) 및 종료 포인터(310)를 사용하여 파티션(210(0))을 정의한다. 시작 포인터(308)는, 화살표(312)로 도시되는 바와 같이, 파티션(210(0))에 대한 시작 변환 캐시 엔트리(204(0))를 표시한다. 유사하게, 종료 포인터(310)는, 화살표(314)로 도시되는 바와 같이, 파티션(210(0))에 대한 종료 변환 캐시 엔트리(204(2))를 표시한다.
[0035] 도 3b의 파티션 디스크립터(306)는 대안적 파티션 정의 메커니즘을 예시한다. 도 3b에서, 파티션 디스크립터(306)는 시작 포인터(316) 및 카운트 표시자(318)를 제공한다. 시작 포인터(316)는, 화살표(320)로 도시되는 바와 같이, 파티션(210(0))에 대한 시작 변환 캐시 엔트리(204(0))를 표시한다. 카운트 표시자(318)는, 화살표(322)로 표시되는 바와 같이, 파티션(210(0))에 포함된 변환 캐시 엔트리들(204(0)-204(2))의 카운트를 표시하는 값("3")을 제공한다.
[0036] 도 4는, TCPID를 결정하기 위한, 도 2의 MMU(200)의 파티션 변환 회로(212) 및 메모리 액세스 요청의 예시적 양상들을 예시하기 위한 다이어그램(400)을 제공한다. 도 4에서, 파티션 변환 회로(212)는 요청자(404)로부터 메모리 액세스 요청(402)을 수신한다. 일부 양상들에서, 요청자(404)는 도 1의 업스트림 디바이스들(108, 110, 112) 중 하나를 포함할 수 있다. 일부 양상들은 MMU(200)가 제2-스테이지 MMU이고, 요청자(404)가 제1-스테이지 MMU라는 것을 제공할 수 있다. 도 4에서 보여지는 바와 같이, 메모리 액세스 요청은 요청자(404)의 소스 타입을 표시하는 소스 표시자(406)를 포함할 수 있다. 비-제한적 예로서, 소스 표시자(406)는, 요청자(404)가 도 1의 업스트림 디바이스들(108, 110, 112) 중 하나인지 여부 또는 요청자(404)가 제1-스테이지 MMU인지 여부를 표시하는 플래그일 수 있다. 그런 다음, 파티션 변환 회로(212)는 소스 표시자(406)에 기반하여 TCPID를 유도할 수 있다. 이것은, 비-제한적 예로서, 파티션 변환 회로(212)가, 제1-스테이지 MMU에 의한 독점적 사용을 위해 변환 캐시(202)의 일부분을 배정하게 허용할 수 있다.
[0037] 메모리 액세스 요청(402)은 또한, 요청자(404)에 의해 제공된 선택적 요청자-공급 TCPID(408)를 포함할 수 있다. 요청자-공급 TCPID(408)가 메모리 액세스 요청(402)의 일부로서 수신되는 경우, 파티션 변환 회로(212)는 요청자-공급 TCPID(408)를 리트리브하여, 그것을, 화살표(412)로 표시되는 바와 같이, 캐시 동작에 대한 타겟으로서 도 2의 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들을 식별하기 위한 TCPID(410)로서 사용할 수 있다. 일부 양상들은, TCPID(410)로서 요청자-공급 TCPID(408)를 사용하는 것에 추가하여 또는 그 대신에, 파티션 변환 회로(212)가 화살표(416)로 도시되는 바와 같이, 메모리 액세스 요청(402)의 속성(414)에 기반하여 TCPID(410)를 유도할 수 있다는 것을 제공할 수 있다. 비-제한적 예들로서, TCPID(410)는, 메모리 액세스 요청(402)의 하나 또는 그 초과의 속성들(414), 이를테면, 요청자(404)를 고유하게 식별하는 마스터 ID(identifier) 속성, 판독/기록 속성, 보안/비-보안 속성, 메모리 타입 속성, 캐싱가능성 속성, 및/또는 공유가능한 속성에 기반하여 결정될 수 있다. 일부 양상들에서, 파티션 변환 회로(212)는, 화살표(418)로 도시되는 바와 같이, 파티션 리맵핑 테이블(214)을 사용하여 TCPID(410)를 선택적으로 리맵핑할 수 있다.
[0038] 파티셔닝된 변환 캐시들을 제공하기 위한, 도 2의 MMU(200)의 예시적 동작들을 예시하기 위해, 도 5가 제공된다. 간결함을 위해, 도 2 및 도 4의 엘리먼트들이 도 5를 설명하는데 참조된다. 도 5에서, 동작들은, MMU(200)(특히, 파티션 변환 회로(212))가 요청자(404)로부터 메모리 액세스 요청(402)을 수신하는 단계(블록(500))로 시작한다. 일부 양상들에서, 요청자(404)는, 제1-스테이지 MMU를 포함할 수 있거나, 또는 업스트림 디바이스, 이를테면, 도 1의 업스트림 디바이스들(108, 110, 112)을 포함할 수 있다.
[0039] 파티션 변환 회로(212)는 메모리 액세스 요청(402)의 TCPID(410)를 결정한다(블록(502)). 다음으로, 파티션 변환 회로(212)는, TCPID(410)에 기반하여, MMU(200)의 변환 캐시(202)의 복수의 파티션들(210(0)-210(N)) 중 파티션들(210(0)-210(1))과 같은 하나 또는 그 초과의 파티션들을 식별한다(블록(504)). 그런 다음, 파티션 변환 회로(212)는, 하나 또는 그 초과의 파티션들(210(0)-210(1))의 하나 또는 그 초과의 변환 캐시 엔트리들(204(0)-204(5)) 중 변환 캐시 엔트리(204(0))와 같은 변환 캐시 엔트리에 대한 캐시 동작을 수행한다(블록(506)). 일부 양상들은, 캐시 동작을 수행하는 것이, 비-제한적 예들로서, 변환 캐시 엔트리들(204(0)-204(5))을 탐색하는 것, 변환 캐시 엔트리들(204(0)-204(5)) 중 하나 또는 그 초과의 변환 캐시 엔트리들에 기록하는 것, 및/또는 변환 캐시 엔트리들(204(0)-204(5)) 중 하나 또는 그 초과의 변환 캐시 엔트리들의 컨텐츠들을 축출하는 것을 포함할 수 있다는 것을 제공할 수 있다. 이 예에서, 변환 캐시 엔트리들(204(0)-204(5))의 선택이 비-제한적 예들이라는 것, 및 다른 또는 추가적 변환 캐시 엔트리들(204(0)-204(X))이 TCPID(410)에 의해 식별되는 파티션들(210(0)-210(N))에 기반하여 선택될 수 있다는 것이 이해될 것이다.
[0040] 도 6a-6c는, 파티셔닝된 변환 캐시들을 제공하기 위한 추가적인 예시적 동작들을 예시하는 플로우차트들이다. 특히, 도 6a는 TCPID 리맵핑을 위한 파티션 변환 회로(212)의 동작들을 포함하는 반면, 도 6b는 예시적 파티션 정의 메커니즘들을 사용하기 위한 파티션 변환 회로(212)의 동작들을 제공한다. 도 6c는 캐시 동작을 수행하는데 파티션 선택 엔트리들을 사용하기 위한 파티션 변환 회로(212)의 동작들을 예시한다. 간결함을 위해, 도 2-4의 엘리먼트들이 도 6a-6c를 설명하는데 참조된다.
[0041] 도 6a에서, 동작들은, MMU(200)(특히, 파티션 변환 회로(212))가 요청자(404)로부터 메모리 액세스 요청(402)을 수신하는 단계(블록(600))로 시작한다. 다음으로, 파티션 변환 회로(212)는 메모리 액세스 요청(402)의 TCPID(410)를 결정한다(블록(602)). 일부 양상들은, TCPID(410)를 결정하기 위한 블록(602)의 동작들이, 메모리 액세스 요청(402)의 속성(414)에 기반하여 TCPID(410)를 유도하는 단계(블록(604))를 포함할 수 있다는 것을 제공할 수 있다. 일부 양상들에서, TCPID(410)를 결정하기 위한 블록(602)의 동작들은, 메모리 액세스 요청(402)에 의해 제공된 요청자-공급 TCPID(408)를 리트리브하는 단계(블록(606))를 포함할 수 있다. 일부 양상들에 따라, TCPID(410)를 결정하기 위한 블록(602)의 동작들은, 출력 TCPID(220(0))로의 입력 TCPID(218(0))의 리맵핑을 정의하는 복수의 리맵핑 엔트리들(216(0)-216(M)) 중에서 리맵핑 엔트리(216(0))와 같은 리맵핑 엔트리를 식별하는 단계를 포함할 수 있으며, 리맵핑 엔트리(216(0))의 입력 TCPID(218(0))는 메모리 액세스 요청(402)의 TCPID(410)에 대응한다(블록(608)). 일부 양상들에서, TCPID(410)를 결정하기 위한 블록(602)의 동작들이, 요청자(404)의 소스 타입을 표시하는 메모리 액세스 요청(402)의 소스 표시자(406)에 기반하여 TCPID(410)를 유도하는 단계(블록(609))를 포함할 수 있다.
[0042] 다음으로, 파티션 변환 회로(212)는, TCPID(410)에 기반하여, MMU(200)의 변환 캐시(202)의 복수의 파티션들(210(0)-210(N)) 중 파티션들(210(0)-210(1))과 같은 하나 또는 그 초과의 파티션들을 식별한다(블록(610)). 일부 양상들에서, 파티션들(210(0)-210(1))을 식별하기 위한 블록(610)의 동작들은 리맵핑 엔트리(216(0))의 출력 TCPID(220(0))에 기반할 수 있다(블록(611)). 일부 양상들은 또한, 하나 또는 그 초과의 파티션들(210(0)-210(1))을 식별하기 위한 블록(610)의 동작들이 복수의 파티션 선택 엔트리들(224(0)-224(Y)) 중 파티션 선택 엔트리(224(0))와 같은 파티션 선택 엔트리에 기반할 수 있다는 것을 제공할 수 있다(블록(612)). 비-제한적 예로서, 파티션 선택 엔트리들(224(0)-224(Y)) 각각은 탐색 제어 표시자(226(0)) 및 축출 제어 표시자(228(0)) 중 적어도 하나를 정의할 수 있으며, 복수의 파티션들(210(0)-210(N)) 중 하나 또는 그 초과의 파티션들(210(0)-210(1))에 대응할 수 있다. 일부 양상들에서, 파티션 선택 엔트리(224(0))는, 비-제한적 예로서, 출력 TCPID(220(0))와 같은 출력 TCPID에 기반하여 선택될 수 있다. 그런 다음, 프로세싱은 도 6b의 블록(613)에서 재개할 수 있다.
[0043] 이제 도 6b를 참조하면, 일부 양상들에 따른, 파티션 변환 회로(212)는 대응하는 복수의 파티션 디스크립터들(208(0)-208(N))에 추가로 기반하여 하나 또는 그 초과의 파티션들(210(0)-210(1))을 식별할 수 있다(블록(613)). 일부 양상들에 따라, 복수의 파티션 디스크립터들(208(0)-208(N)) 각각은, 파티션 디스크립터(208(0))에 의해 정의되는 대응하는 파티션(210(0))의 시작 변환 캐시 엔트리(204(0))로의 시작 포인터, 이를테면, 시작 포인터(308), 및 대응하는 파티션(210(0))의 종료 변환 캐시 엔트리(204(X))로의 종료 포인터, 이를테면, 종료 포인터(310)를 포함할 수 있다(블록(614)). 다른 양상들에서, 파티션 디스크립터들(208(0)-208(N)) 각각은, 파티션 디스크립터(208(0))에 의해 정의되는 대응하는 파티션(210(0))의 시작 변환 캐시 엔트리(204(0))로의 시작 포인터, 이를테면, 시작 포인터(316), 및 대응하는 파티션(210(0))의 하나 또는 그 초과의 변환 캐시 엔트리들(204(0)-204(X))의 카운트를 표시하는 카운트 표시자, 이를테면, 카운트 표시자(318)를 포함할 수 있다(블록(616)). 그런 다음, 프로세싱은 도 6c의 블록(620)에서 재개할 수 있다.
[0044] 이제 도 6c를 참조하면, 파티션 변환 회로(212)는 다음으로, 하나 또는 그 초과의 파티션들(210(0)-210(1))의 하나 또는 그 초과의 변환 캐시 엔트리들(204(0)-204(2)) 중 변환 캐시 엔트리(204(0))에 대한 캐시 동작을 수행한다(블록(620)). 일부 양상들에서, 캐시 동작을 수행하기 위한 블록(620)의 동작들은, 요청자(404)의 소스 타입을 표시하는 TCPID(410)의 소스 표시자(406)에 기반할 수 있다(블록(622)). 일부 양상들은, 캐시 동작을 수행하기 위한 블록(620)의 동작들이, 하나 또는 그 초과의 파티션들(210(0)-210(1))에 대한 파티션 선택 엔트리(224(0))에 기반할 수 있다는 것을 제공할 수 있다(블록(624)). 일부 양상들에서, 파티션 선택 엔트리(224(0))에 기반하여 캐시 동작을 수행하기 위한 블록(624)의 동작들은, 하나 또는 그 초과의 파티션들(210(0)-210(1))에 대한 탐색 제어 표시자(226(0))에 기반하여, 하나 또는 그 초과의 파티션들(210(0)-210(1))의 하나 또는 그 초과의 변환 캐시 엔트리들(204(0)-204(2))이 탐색에 적합함을 결정하는 단계(블록(626))를 포함할 수 있다. 일부 양상들에 따른, 파티션 선택 엔트리(224(0))에 기반하여 캐시 동작을 수행하기 위한 블록(624)의 동작들은, 하나 또는 그 초과의 파티션들(210(0)-210(1))에 대한 축출 제어 표시자(228(0))에 기반하여, 하나 또는 그 초과의 파티션들(210(0)-210(1))의 하나 또는 그 초과의 변환 캐시 엔트리들(204(0)-204(2))이 축출에 적합함을 결정하는 단계(블록(628))를 포함할 수 있다.
[0045] 본원에 개시되는 양상들에 따라, 제공되는 MMU 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들이 임의의 프로세서-기반 디바이스에서 제공되거나 또는 이에 통합될 수 있다. 예들은, 제한없이, 셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, 휴대용 컴퓨터, 데스크탑 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어 및 휴대용 디지털 비디오 플레이어를 포함한다.
[0046] 이와 관련하여, 도 7은, 도 2에서 예시되는 MMU(200)를 사용할 수 있는 프로세서-기반 시스템(700)의 예를 예시한다. 이 예에서, 프로세서-기반 시스템(700)은, 각각이 하나 또는 그 초과의 프로세서들(704)을 포함하는 하나 또는 그 초과의 CPU(central processing unit)(들)(702)를 포함한다. CPU(들)(702)는, 일시적으로 저장된 데이터로의 급속한 액세스를 위해 프로세서(들)(704)에 커플링된 캐시 메모리(706)를 가질 수 있다. CPU(들)(702)는 CPU 메모리 액세스 요청들에 대한 어드레스 변환 서비스들을 제공하기 위한 CPU MMU(707)를 더 포함한다. CPU(들)(702)는 시스템 버스(708)에 커플링되며, 프로세서-기반 시스템(700)에 포함된 마스터 및 슬래이브 디바이스들을 상호커플링할 수 있다. 잘 알려진 바와 같이, CPU(들)(702)는 시스템 버스(708)를 통해 어드레스, 제어 및 데이터 정보를 교환함으로써 이러한 다른 디바이스들과 통신한다. 예컨대, CPU(들)(702)는 메모리 유닛들(712(0)-712(N))을 제공하는 메모리 시스템(710)에 버스 트랜잭션 요청들을 전달할 수 있다. 도 7의 예에서, SMMU들(713 및 714)은 또한, 시스템 버스(708)에 커플링된다. CPU MMU(707) 및 SMMU들(713 및 714) 중 하나 또는 그 초과가 도 2의 MMU(200)를 포함할 수 있다는 것이 이해될 것이다. 프로세서-기반 시스템(700)은 다수의 SMMU들(713 및 714)을 포함할 수 있다는 것이 추가로 이해될 것이다.
[0047] 다른 마스터 및 슬래이브 디바이스들은 SMMU들(713 및 714)을 통해 시스템 버스(708)에 연결될 수 있다. 도 7에서 예시되는 바와 같이, 이 디바이스들은, 예들로서, 메모리 제어기(715), 하나 또는 그 초과의 입력 디바이스들(716), 하나 또는 그 초과의 출력 디바이스들(718), 하나 또는 그 초과의 네트워크 인터페이스 디바이스들(720) 및 하나 또는 그 초과의 디스플레이 제어기들(722)을 포함할 수 있다. 입력 디바이스(들)(716)는 입력 키들, 스위치들, 음성 프로세서들 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 입력 디바이스를 포함할 수 있다. 출력 디바이스(들)(718)는 오디오, 비디오, 다른 시각적 표시자들 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 출력 디바이스를 포함할 수 있다. 네트워크 인터페이스 디바이스(들)(720)는 네트워크(724)로의 그리고 네트워크(724)로부터의 데이터의 교환을 허용하도록 구성된 임의의 디바이스들일 수 있다. 네트워크(724)는, 유선 또는 무선 네트워크, 사설 또는 공공 네트워크, LAN(local area network), WLAN(wide local area network) 및 인터넷을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 네트워크일 수 있다. 네트워크 인터페이스 디바이스(들)(720)는 원하는 임의의 타입의 통신 프로토콜을 지원하도록 구성될 수 있다.
[0048] CPU(들)(702)는 또한, 하나 또는 그 초과의 디스플레이들(726)에 전송된 정보를 제어하기 위해 시스템 버스(708)를 통해 디스플레이 제어기(들)(722)에 액세스하도록 구성될 수 있다. 디스플레이 제어기(들)(722)는 하나 또는 그 초과의 비디오 프로세서들(728)을 통해 디스플레이될 정보를 디스플레이(들)(726)에 전송하고, 비디오 프로세서들(728)은 디스플레이(들)(726)에 적합한 포맷으로 디스플레이될 정보를 프로세싱한다. 디스플레이(들)(726)는, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이 등을 포함하는(그러나, 이들로 제한되는 것은 아님) 임의의 타입의 디스플레이를 포함할 수 있다.
[0049] 당업자들은 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적인 논리적 블록들, 모듈들, 회로들, 및 알고리즘들이 전자 하드웨어, 메모리에 또는 다른 컴퓨터-판독가능한 매체에 저장되어 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 이 둘 모두의 조합들로서 구현될 수 있다는 것을 추가로 인식할 것이다. 본원에서 설명되는 마스터 및 슬래이브 디바이스들은, 예들로서, 임의의 회로, 하드웨어 컴포넌트, IC(integrated circuit) 또는 IC 칩에서 사용될 수 있다. 본원에서 개시되는 메모리는 임의의 타입 및 사이즈의 메모리일 수 있으며, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 교환가능성을 명확하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그 기능성의 측면에서 위에서 설명되었다. 이러한 기능성이 어떻게 구현되는지는 특정 애플리케이션, 설계 선택들 및/또는 전체 시스템 상에 부과되는 설계 제약들에 의존한다. 당업자들은 설명되는 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 판정들이 본 개시내용의 범위로부터의 이탈을 야기하는 것으로 해석되어서는 안 된다.
[0050] 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적 논리 블록들, 모듈들 및 회로들이 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명되는 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현되거나 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신(state machine)일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 조합, 예컨대, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다.
[0051] 본원에서 개시되는 양상들은, 하드웨어 및 하드웨어에 저장된 명령들로 구현될 수 있으며, 예컨대, RAM(Random Access Memory), 플래시 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 탈착가능한(removable) 디스크, CD-ROM, 또는 당해 기술 분야에서 알려진 임의의 다른 형태의 컴퓨터-판독가능한 매체에 상주할 수 있다. 예시적 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC 내에 상주할 수 있다. ASIC는 원격국 내에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격국, 기지국 또는 서버 내에 개별 컴포넌트들로서 상주할 수 있다.
[0052] 또한, 본원에서의 예시적 양상들 중 임의의 양상에서 설명되는 동작 단계들이 예들 및 논의를 제공하기 위해 설명된다는 점이 주목된다. 설명되는 동작들은 예시되는 시퀀스들 이외의 다수의 상이한 시퀀스들에서 수행될 수 있다. 게다가, 단일 동작 단계에서 설명되는 동작들은 실제로, 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적 양상들에서 논의되는 하나 또는 그 초과의 동작적 단계들이 조합될 수 있다. 플로우차트 다이어그램들에서 예시되는 동작 단계들은 당업자에게 용이하게 명백해질 바와 같은 다수의 상이한 수정들이 행해질 수 있다는 것이 이해될 것이다. 당업자는 또한, 정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있다는 것을 이해할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 조합에 의해 표현될 수 있다.
[0053] 본 개시내용의 이전 설명은 임의의 당업자가 본 개시내용을 제조하거나 또는 사용하는 것을 가능하게 하도록 제공된다. 본 개시내용에 대한 다양한 수정들은 당업자들에게 용이하게 명백할 것이고, 본원에서 정의되는 일반적 원리들은 개시내용의 사상 또는 범위로부터 벗어나지 않으면서 다른 변형들에 적용될 수 있다. 따라서, 본 개시내용은 본원에서 설명되는 예들 및 설계들로 제한되도록 의도되는 것이 아니라, 본원에서 개시되는 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.

Claims (33)

  1. 파티셔닝된 변환 캐시들을 제공하기 위한 MMU(memory management unit)를 포함하는 장치로서,
    각각이 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하도록 구성된 변환 캐시;
    상기 변환 캐시의 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터(descriptor)들을 제공하도록 구성된 파티션 디스크립터 테이블 ― 상기 복수의 파티션들의 각각의 파티션은 상기 복수의 변환 캐시 엔트리들 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함함 ―; 및
    파티션 변환 회로를 포함하고,
    상기 파티션 변환 회로는,
    요청자(requestor)로부터 메모리 액세스 요청을 수신하고;
    상기 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하고;
    상기 TCPID에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하고; 그리고
    상기 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대해 캐시 동작을 수행하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  2. 제 1 항에 있어서,
    상기 파티션 디스크립터 테이블은 상기 복수의 파티션 디스크립터들을 제공하도록 구성되고,
    상기 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 종료 변환 캐시 엔트리로의 종료 포인터를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  3. 제 1 항에 있어서,
    상기 파티션 디스크립터 테이블은 상기 복수의 파티션 디스크립터들을 제공하도록 구성되고,
    상기 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 하나 또는 그 초과의 변환 캐시 엔트리들의 카운트를 표시하는 카운트 표시자를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  4. 제 1 항에 있어서,
    상기 파티션 변환 회로는 상기 메모리 액세스 요청의 속성에 기초하여 상기 TCPID를 유도(derive)함으로써 상기 TCPID를 결정하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  5. 제 1 항에 있어서,
    상기 파티션 변환 회로는 상기 메모리 액세스 요청에 의해 제공된 요청자-공급(requestor-supplied) TCPID를 리트리브(retrieve)함으로써 상기 TCPID를 결정하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  6. 제 1 항에 있어서,
    각각이 출력 TCPID로의 입력 TCPID의 리맵핑(remapping)을 정의하는 복수의 리맵핑 엔트리들을 제공하도록 구성된 파티션 리맵핑 테이블을 더 포함하고,
    상기 파티션 변환 회로는,
    상기 복수의 리맵핑 엔트리들 중 하나의 리맵핑 엔트리를 식별함으로써 상기 TCPID를 결정하고 ― 상기 리맵핑 엔트리의 상기 입력 TCPID는 상기 메모리 액세스 요청의 TCPID에 대응함 ―; 및
    상기 리맵핑 엔트리의 상기 출력 TCPID에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  7. 제 1 항에 있어서,
    상기 메모리 액세스 요청은 상기 요청자의 소스 타입을 표시하는 소스 표시자를 포함하고, 그리고
    상기 파티션 변환 회로는 상기 소스 표시자에 기초하여 상기 TCPID를 유도함으로써 상기 TCPID를 결정하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  8. 제 1 항에 있어서,
    복수의 파티션 선택 엔트리들을 포함하는 파티션 선택 테이블을 더 포함하고,
    상기 복수의 파티션 선택 엔트리들 각각은, 탐색 제어 표시자 및 축출(eviction) 제어 표시자 중 적어도 하나를 정의하고 그리고 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들에 대응하며, 그리고
    상기 파티션 변환 회로는 상기 복수의 파티션 선택 엔트리들 중 하나의 파티션 선택 엔트리에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  9. 제 8 항에 있어서,
    상기 파티션 변환 회로는, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 탐색 제어 표시자에 기초하여, 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 탐색에 적합함을 결정함으로써 상기 캐시 동작을 수행하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  10. 제 8 항에 있어서,
    상기 파티션 변환 회로는, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 축출 제어 표시자에 기초하여, 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 축출에 적합함을 결정함으로써 상기 캐시 동작을 수행하도록 구성되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  11. 제 1 항에 있어서,
    IC(integrated circuit)로 통합되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  12. 제 1 항에 있어서,
    셋탑 박스, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 고정 위치 데이터 유닛, 모바일 위치 데이터 유닛, 모바일 폰, 셀룰러 폰, 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 뮤직 플레이어 및 비디오 플레이어로 구성된 그룹으로부터 선택된 디바이스로 통합되는, 파티셔닝된 변환 캐시들을 제공하기 위한 MMU를 포함하는 장치.
  13. MMU(memory management unit)로서,
    각각이 어드레스 변환 맵핑을 정의하는 복수의 변환 캐시 엔트리들을 제공하기 위한 수단;
    상기 MMU의 변환 캐시의 대응하는 복수의 파티션들을 정의하는 복수의 파티션 디스크립터들을 제공하기 위한 수단 ― 상기 복수의 파티션들의 각각의 파티션은 상기 복수의 변환 캐시 엔트리들 중 하나 또는 그 초과의 변환 캐시 엔트리들을 포함함 ―;
    요청자로부터 메모리 액세스 요청을 수신하기 위한 수단;
    상기 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하기 위한 수단;
    상기 TCPID에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하기 위한 수단; 및
    상기 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대해 캐시 동작을 수행하기 위한 수단을 포함하는, MMU.
  14. 파티셔닝된 변환 캐시들을 제공하기 위한 방법으로서,
    MMU(memory management unit)에 의해, 요청자로부터 메모리 액세스 요청을 수신하는 단계;
    상기 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하는 단계;
    상기 TCPID에 기초하여, 상기 MMU의 변환 캐시의 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계; 및
    상기 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대해 캐시 동작을 수행하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  15. 제 14 항에 있어서,
    상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계는 대응하는 복수의 파티션 디스크립터들에 추가로 기초하고,
    상기 대응하는 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 종료 변환 캐시 엔트리로의 종료 포인터를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  16. 제 14 항에 있어서,
    상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계는 대응하는 복수의 파티션 디스크립터들에 추가로 기초하고,
    상기 대응하는 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 하나 또는 그 초과의 변환 캐시 엔트리들의 카운트를 표시하는 카운트 표시자를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  17. 제 14 항에 있어서,
    상기 TCPID를 결정하는 단계는, 상기 메모리 액세스 요청의 속성에 기초하여 상기 TCPID를 유도하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  18. 제 14 항에 있어서,
    상기 TCPID를 결정하는 단계는, 상기 메모리 액세스 요청에 의해 제공된 요청자-공급 TCPID를 리트리브하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  19. 제 14 항에 있어서,
    각각이 출력 TCPID로의 입력 TCPID의 리맵핑을 정의하는 복수의 리맵핑 엔트리들 중에서 하나의 리맵핑 엔트리를 식별함으로써 상기 TCPID를 결정하는 단계 ― 상기 리맵핑 엔트리의 상기 입력 TCPID는 상기 메모리 액세스 요청의 TCPID에 대응함 ―; 및
    상기 리맵핑 엔트리의 상기 출력 TCPID에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  20. 제 14 항에 있어서,
    상기 메모리 액세스 요청은 상기 요청자의 소스 타입을 표시하는 소스 표시자를 포함하고, 그리고
    상기 TCPID를 결정하는 단계는, 상기 소스 표시자에 기초하여 상기 TCPID를 유도하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  21. 제 14 항에 있어서,
    복수의 파티션 선택 엔트리들 중 하나의 파티션 선택 엔트리에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하는 단계를 더 포함하며,
    상기 복수의 파티션 선택 엔트리들 각각은, 탐색 제어 표시자 및 축출 제어 표시자 중 적어도 하나를 정의하고 그리고 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들에 대응하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  22. 제 21 항에 있어서,
    상기 캐시 동작을 수행하는 단계는, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 탐색 제어 표시자에 기초하여, 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 탐색에 적합함을 결정하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  23. 제 21 항에 있어서,
    상기 캐시 동작을 수행하는 단계는, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 축출 제어 표시자에 기초하여, 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 축출에 적합함을 결정하는 단계를 포함하는, 파티셔닝된 변환 캐시들을 제공하기 위한 방법.
  24. 컴퓨터-실행가능한 명령들이 저장된 비-일시적 컴퓨터-판독가능한 저장 매체로서, 상기 명령들은 프로세서에 의해 실행될 때, 상기 프로세서로 하여금,
    요청자로부터 메모리 액세스 요청을 수신하게 하고;
    상기 메모리 액세스 요청의 TCPID(translation cache partition identifier)를 결정하게 하고;
    상기 TCPID에 기초하여, MMU(memory management unit)의 변환 캐시의 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 하고; 그리고
    상기 하나 또는 그 초과의 파티션들의 하나 또는 그 초과의 변환 캐시 엔트리들 중 하나의 변환 캐시 엔트리에 대해 캐시 동작을 수행하게 하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  25. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 대응하는 복수의 파티션 디스크립터들에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 하는 컴퓨터-실행가능한 명령들이 저장되고,
    상기 대응하는 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 종료 변환 캐시 엔트리로의 종료 포인터를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  26. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 대응하는 복수의 파티션 디스크립터들에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 하는 컴퓨터-실행가능한 명령들이 저장되고,
    상기 대응하는 복수의 파티션 디스크립터들 각각은,
    상기 파티션 디스크립터에 의해 정의되는 대응하는 파티션의 시작 변환 캐시 엔트리로의 시작 포인터; 및
    상기 대응하는 파티션의 하나 또는 그 초과의 변환 캐시 엔트리들의 카운트를 표시하는 카운트 표시자를 포함하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  27. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 메모리 액세스 요청의 속성에 기초하여 상기 TCPID를 유도함으로써 상기 TCPID를 결정하게 하는 컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  28. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 메모리 액세스 요청에 의해 제공된 요청자-공급 TCPID를 리트리브함으로써 상기 TCPID를 결정하게 하는 컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  29. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로,
    각각이 출력 TCPID로의 입력 TCPID의 리맵핑을 정의하는 복수의 리맵핑 엔트리들 중에서 하나의 리맵핑 엔트리를 식별함으로써 상기 TCPID를 결정하게 하고 ― 상기 리맵핑 엔트리의 상기 입력 TCPID는 상기 메모리 액세스 요청의 TCPID에 대응함 ―; 그리고
    상기 리맵핑 엔트리의 상기 출력 TCPID에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 하는
    컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  30. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 요청자의 소스 타입을 표시하는 상기 메모리 액세스 요청의 소스 표시자에 기초하여 상기 TCPID를 유도함으로써 상기 TCPID를 결정하게 하는 컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  31. 제 24 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 복수의 파티션 선택 엔트리들 중 하나의 파티션 선택 엔트리에 기초하여 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들을 식별하게 하는 컴퓨터-실행가능한 명령들이 저장되며,
    상기 복수의 파티션 선택 엔트리들 각각은, 탐색 제어 표시자 및 축출 제어 표시자 중 적어도 하나를 정의하고 그리고 상기 복수의 파티션들 중 하나 또는 그 초과의 파티션들에 대응하는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  32. 제 31 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 탐색 제어 표시자에 기초하여 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 탐색에 적합함을 결정함으로써, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리에 기초하여 상기 캐시 동작을 수행하게 하는 컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
  33. 제 31 항에 있어서,
    상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 추가로, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리의 축출 제어 표시자에 기초하여 상기 하나 또는 그 초과의 파티션들의 상기 하나 또는 그 초과의 변환 캐시 엔트리들이 축출에 적합함을 결정함으로써, 상기 하나 또는 그 초과의 파티션들에 대한 파티션 선택 엔트리에 기초하여 상기 캐시 동작을 수행하게 하는 컴퓨터-실행가능한 명령들이 저장되는, 비-일시적 컴퓨터-판독가능한 저장 매체.
KR1020177034306A 2015-05-29 2016-04-29 Mmu(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공 KR101895852B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/725,882 US9824015B2 (en) 2015-05-29 2015-05-29 Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media
US14/725,882 2015-05-29
PCT/US2016/030040 WO2016195869A1 (en) 2015-05-29 2016-04-29 Providing memory management unit (mmu) partitioned translation caches, and related apparatuses, methods, and computer-readable media

Publications (2)

Publication Number Publication Date
KR20180013930A KR20180013930A (ko) 2018-02-07
KR101895852B1 true KR101895852B1 (ko) 2018-09-07

Family

ID=56015107

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177034306A KR101895852B1 (ko) 2015-05-29 2016-04-29 Mmu(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공

Country Status (8)

Country Link
US (1) US9824015B2 (ko)
EP (1) EP3304321B1 (ko)
JP (1) JP6391855B2 (ko)
KR (1) KR101895852B1 (ko)
CN (1) CN107667355B (ko)
AU (1) AU2016270028A1 (ko)
TW (1) TWI627533B (ko)
WO (1) WO2016195869A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018057039A1 (en) * 2016-09-26 2018-03-29 Hewlett-Packard Development Company, L. Update memory management information to boot an electronic device from a reduced power mode
US10678690B2 (en) * 2017-08-29 2020-06-09 Qualcomm Incorporated Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
EP3899719A4 (en) * 2018-12-21 2022-07-06 INTEL Corporation VIRTUALIZATION OF PROCESS ADDRESS SPACE IDENTIFIERS USING HARDWARE PALL INDICATORS
US11513973B2 (en) 2019-12-20 2022-11-29 Advanced Micro Devices, Inc. Arbitration scheme for coherent and non-coherent memory requests
CN111338989B (zh) * 2020-02-12 2021-01-12 合肥康芯威存储技术有限公司 一种存储器及其控制方法与存储系统
US11847074B2 (en) 2020-11-02 2023-12-19 Honeywell International Inc. Input/output device operational modes for a system with memory pools

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145542A1 (en) 2009-12-15 2011-06-16 Qualcomm Incorporated Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH087719B2 (ja) * 1989-02-10 1996-01-29 日本電気株式会社 情報処理システム
JPH04205636A (ja) * 1990-11-30 1992-07-27 Matsushita Electric Ind Co Ltd 高速アドレス変換装置
US5430857A (en) 1993-01-04 1995-07-04 Intel Corporation Method and apparatus for translating logical addresses into physical addresses using odd/even translation tables
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
US6230248B1 (en) * 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6493800B1 (en) * 1999-03-31 2002-12-10 International Business Machines Corporation Method and system for dynamically partitioning a shared cache
US7346757B2 (en) * 2002-10-08 2008-03-18 Rmi Corporation Advanced processor translation lookaside buffer management in a multithreaded system
US6986017B2 (en) 2003-04-24 2006-01-10 International Business Machines Corporation Buffer pre-registration
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US8146087B2 (en) 2008-01-10 2012-03-27 International Business Machines Corporation System and method for enabling micro-partitioning in a multi-threaded processor
WO2010095182A1 (ja) * 2009-02-17 2010-08-26 パナソニック株式会社 マルチスレッドプロセッサ及びデジタルテレビシステム
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US20120096226A1 (en) * 2010-10-18 2012-04-19 Thompson Stephen P Two level replacement scheme optimizes for performance, power, and area
WO2012060148A1 (ja) 2010-11-02 2012-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセスを制御する装置およびコンピュータ
US9405700B2 (en) 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US8683175B2 (en) 2011-03-15 2014-03-25 International Business Machines Corporation Seamless interface for multi-threaded core accelerators
US9086989B2 (en) 2011-07-01 2015-07-21 Synopsys, Inc. Extending processor MMU for shared address spaces
CN103116556B (zh) * 2013-03-11 2015-05-06 无锡江南计算技术研究所 内存静态划分虚拟化方法
US9317443B2 (en) * 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110145542A1 (en) 2009-12-15 2011-06-16 Qualcomm Incorporated Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups

Also Published As

Publication number Publication date
EP3304321A1 (en) 2018-04-11
CN107667355A (zh) 2018-02-06
US20160350222A1 (en) 2016-12-01
AU2016270028A1 (en) 2017-11-09
JP2018519579A (ja) 2018-07-19
US9824015B2 (en) 2017-11-21
JP6391855B2 (ja) 2018-09-19
TWI627533B (zh) 2018-06-21
EP3304321C0 (en) 2023-09-20
WO2016195869A1 (en) 2016-12-08
EP3304321B1 (en) 2023-09-20
CN107667355B (zh) 2021-02-02
TW201710907A (zh) 2017-03-16
BR112017025619A2 (pt) 2018-08-07
KR20180013930A (ko) 2018-02-07

Similar Documents

Publication Publication Date Title
KR101895852B1 (ko) Mmu(memory management unit) 파티셔닝된 변환 캐시들, 및 관련 장치들, 방법들, 및 컴퓨터-판독가능한 매체들의 제공
KR102545726B1 (ko) 프로세서-기반 시스템들에서 공간 QoS(Quality of Service) 태깅을 사용한 이종 메모리 시스템들의 유연한 관리의 제공
US9110830B2 (en) Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
KR101379524B1 (ko) 디스플레이 파이프 내에서의 스트리밍 변환
KR102504728B1 (ko) Cpu(central processing unit)-기반 시스템에서 다수의 llc(last-level cache) 라인들을 사용하여 메모리 대역폭 압축을 제공하는 것
US10372635B2 (en) Dynamically determining memory attributes in processor-based systems
US20180173623A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations
US9697126B2 (en) Generating approximate usage measurements for shared cache memory systems
US11386016B2 (en) Flexible storage and optimized search for multiple page sizes in a translation lookaside buffer
US10228991B2 (en) Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
US11868269B2 (en) Tracking memory block access frequency in processor-based devices
US10754795B2 (en) MMU assisted address sanitizer
US11061820B2 (en) Optimizing access to page table entries in processor-based devices
US20180285269A1 (en) Aggregating cache maintenance instructions in processor-based devices
US11755498B2 (en) Emulating scratchpad functionality using caches in processor-based devices
JP5752331B2 (ja) 物理タグ付けされたデータキャッシュへのトラフィックをフィルタリングするための方法
US10482016B2 (en) Providing private cache allocation for power-collapsed processor cores in processor-based systems
US9921962B2 (en) Maintaining cache coherency using conditional intervention among multiple master devices
BR112017025619B1 (pt) Aparelho que compreende uma unidade de gerenciamento de memória e método para fornecer caches de tradução particionados

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right