KR20170137107A - 버스트 변환 룩―어사이드 버퍼 - Google Patents

버스트 변환 룩―어사이드 버퍼 Download PDF

Info

Publication number
KR20170137107A
KR20170137107A KR1020177029607A KR20177029607A KR20170137107A KR 20170137107 A KR20170137107 A KR 20170137107A KR 1020177029607 A KR1020177029607 A KR 1020177029607A KR 20177029607 A KR20177029607 A KR 20177029607A KR 20170137107 A KR20170137107 A KR 20170137107A
Authority
KR
South Korea
Prior art keywords
burst
tlb
entry
conversion data
burst entry
Prior art date
Application number
KR1020177029607A
Other languages
English (en)
Other versions
KR101895388B1 (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 KR20170137107A publication Critical patent/KR20170137107A/ko
Application granted granted Critical
Publication of KR101895388B1 publication Critical patent/KR101895388B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate 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/1041Resource optimization
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size 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/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

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

가상 어드레스를 포함하는 피비교수가 수신된다. 피비교수와 버스트 엔트리 태그의 매치를 결정할 때, 후보 매칭 변환 데이터 유닛이 선택된다. 선택하는 것은 버스트 엔트리 태그와 연관된 복수의 변환 데이터 유닛들로부터 이루어지며, 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초한다. 후보 매칭 변환 데이터 유닛의 콘텐츠는 피비교수 중 적어도 일부와 비교된다. 매치 시에, 히트가 생성된다.

Description

버스트 변환 룩―어사이드 버퍼
[0001] 본 특허 출원은 2015년 4월 15일에 출원된 명칭이 "BURST TRANSLATION LOOK-ASIDE BUFFER"인 가출원 제 62/148,121 호를 우선권으로 주장하고, 상기 가출원은 본원의 양수인에게 양도되고, 이로써 인용에 의해 본원에 명백히 통합된다.
[0002] 본 출원은 일반적으로 메모리 관리에 관한 것이다.
[0003] 프로세서는 메모리 내의 타겟 위치의 실제 물리적 어드레스 대신에 "가상 어드레스"를 먼저 생성함으로써 메모리를 액세스할 수 있다. 타겟 위치를 액세스하기 위해, 가상 어드레스는 물리적 어드레스들로 맵핑될 수 있다. VA-PA(virtual address-physical address) 맵핑이 캐시에 저장될 수 있고, 예를 들면, 운영 시스템의 제어 하에서 동적으로 업데이트될 수 있다. 가상 어드레싱은 다양한 이점들, 예를 들면, 물리적 메모리 공간의 동적 할당, 보안 메모리 공간의 비인가된 액세스에 대한 보호, 및 다수의 프로그램들이 물리적 메모리 내의 중첩하는 공간을 부주의하게 사용하는 것의 방지를 제공할 수 있다. 가상 어드레싱은 또한, 예를 들면, 비-인접한 물리적 메모리 공간들이 소프트웨어 프로그램에 인접한 공간처럼 보이게 하는 것을 가능하게 할 수 있다.
[0004] 종래의 가상 어드레싱 기술들은 물리적 메모리를, "페이지 넘버들"에 의해 식별될 수 있는 블록들 또는 "페이지들"로 분할할 수 있다. VA-PA 맵핑은 가상 페이지 넘버와 물리적 페이지 넘버 간의 관계를 제공하고, 맵핑 정보는 "페이지 표"의 엔트리들에 저장된다. 페이지 표들은 가상 어드레스의 서브-세트의 비트들(예를 들면, "VA 태그 비트들")을 사용하여 "페이지 표 워크(walk)" 프로세스에 의해 탐색될 수 있다. 그러나, 페이지 표 워크가 각각의 메모리 액세스를 위해 요구되면, 프로세싱 오버헤드가 존재할 것이다. 페이지 엔트리들(예를 들면, 가장 최근에 사용된 엔트리들)의 선택을 보유하는 캐시는 페이지 표 워크들을 감소시키기 위한 하나의 종래의 기술이다. 종종 "변환 룩어사이드 버퍼" 또는 "TLB"라 불리는 캐시는 N 개의 엔트리들을 가질 수 있다. 각각의 TLB 엔트리는, VA 태그 비트들을 사용하여 탐색될 수 있고 물리적 어드레스, 예를 들면, VA 태그 비트들이 맵핑되는 물리적 페이지 넘버를 포함할 수 있는 "태그 비트들"을 보유하는 "태그"를 포함할 수 있다. CPU가 가상 어드레스를 생성할 때, TLB는 N 개의 엔트리들에서 태그 비트들을 탐색하기 위해 VA 태그 비트들을 사용한다. 매치가 존재하면, TLB는 히트(hit)를 식별하고, 매칭 엔트리로부터 물리적 페이지 넘버를 출력한다. 어떠한 매치도 없다면, TLB는 "누락(miss)"을 식별하고, 메모리 관리 자원은 페이지 표들의 "페이지 표 워크" 탐색을 수행할 수 있다. 위에서 언급된 바와 같이, 페이지 표 워크는 프로세싱 시간 및 메모리 관리 자원들을 소비할 수 있다. 따라서, 낮은 누락 레이트는 TLB 성능 목표일 수 있다.
[0005] TLB에 대한 다른 성능 목표들은, 예를 들면, 클록 사이클 내의 빠른 탐색 속도 및 빠른 TLB 무효화를 포함할 수 있다.
[0006] 그러나, 상이한 TLB 성능 목표들은, 종래의 TLB 설계 기술들을 적용할 때, 충돌하는 설계 목표들을 생성할 수 있다. 예를 들면, TLB 크기를 증가시키는 것, 즉, 동시에 저장될 수 있는 엔트리들의 수를 증가시키는 것은 누락 레이트를 낮추기 위한 하나의 종래의 TLB 설계 기술이다. 증가된 TLB 크기는 증가되는 비용들, 및 TLB 회로 면적의 대응하는 증가 및 탐색 회로 복잡성으로 인한 감소된 성능, 및 수반되는 전파 지연들의 증가로 이어질 수 있다.
[0007] TLB 누락 레이트를 낮추는 것을 목표로 하는 다른 종래의 기술들이 존재한다. 예를 들면, 하나의 종래의 기술은 "세트 연관(set associative)" TLB 아키텍처를 사용하고, 이는 칩 면적의 효율적인 사용을 가능하게 할 수 있다. 그러나, 세트 연관 TLB 아키텍처는 또한 매우 많은 수의 TLB 충돌들을 보여줄 수 있고, 탐색 및 TLB 무효화 둘 모두는 다수의 사이클들을 소비할 수 있다.
[0008] 이러한 요약은 예시적인 특징들 및 그의 양상들을 식별하고, 개시된 요지의 배타적이거나 총망라한 설명이 아니다. 특징들 또는 양상들이 이러한 요약에 포함되거나 이로부터 생략되든지 간에, 이러한 요약은 그러한 특징들의 상대적인 중요성을 표시하도록 의도되지 않는다. 부가적인 특징들 및 양상들이 설명되고, 다음의 상세한 설명을 읽고 상세한 설명의 일부를 형성하는 도면들을 볼 때, 당업자들에게 명백해질 것이다.
[0009] 본 개시를 읽을 때 인지될 바와 같이, 특징들은, 빠른 TLB 룩업을 갖는 완전-연관 TLB들의 품질들, 및 빠른 TLB 무효화 특성들을 유지하면서, 개선된 영역 효율 및 확장성(scalability)을 제공할 수 있는 버스트-TLB를 포함할 수 있지만, 이에 제한되지 않는다.
[0010] 가상 어드레스를 변환하기 위한 방법들이 개시되고, 하나의 예시적인 방법에서, 예시적인 동작들은, 다양한 양상들에 따라, 피비교수(comparand)를 수신하는 단계 ― 피비교수는 가상 어드레스를 포함함 ― , 및 피비교수와 버스트 엔트리 태그(burst entry tag)의 매치를 결정할 때, 후보 매칭 변환 데이터 유닛(candidate matching translation data unit)을 선택하는 단계를 포함할 수 있고, 선택하는 것은 복수의 변환 데이터 유닛들로부터 이루어지고, 복수의 변환 데이터 유닛들은 버스트 엔트리 태그와 연관되고, 선택하는 것은 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초한다. 다양한 양상들에 따른 예시적인 동작들은 또한 후보 매칭 변환 데이터 유닛의 콘텐츠와 피비교수 중 적어도 일부를 비교하고, 비교의 결과가 매치를 표시할 때, 히트(hit)를 생성하는 단계를 포함할 수 있다.
[0011] 변환 룩어사이드 버퍼(translation lookaside buffer; TLB)를 제공할 수 있는 장치들이 개시되고, 하나의 예시적인 TLB 특징들은, 피비교수를 수신하고, 이에 대한 응답으로, 피비교수 및 버스트 엔트리 태그가 매치하는지를 결정하도록 구성된 버스트 TLB 엔트리 선택 로직을 포함할 수 있고, 피비교수는 가상 어드레스를 포함한다. TLB 특징들은, 다양한 양상들에 따라, 피비교수 및 버스트 엔트리 태그가 매치한다고 버스트 TLB 엔트리 선택 로직이 결정하는 것에 대한 응답으로, 후보 매칭 변환 데이터 유닛을 선택하도록 구성될 수 있고 ― 후보 매칭 변환 데이터 유닛은 버스트 엔트리 태그와 연관된 복수의 변환 데이터 유닛들 중에 있음 ― , 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초하여 후보 매칭 변환 데이터 유닛을 선택하도록 추가로 구성된 칼럼 선택기 로직(column selector logic)을 더 포함할 수 있다. TLB 특징들은, 다양한 양상들에 따라, 매치 로직(match logic)을 더 포함할 수 있고, 매치 로직은 후보 매칭 변환 데이터 유닛의 콘텐츠와 피비교수 중 적어도 일부를 비교하고, 비교의 결과가 매치를 표시할 때, 히트를 생성하도록 구성될 수 있다.
[0012] 다양한 양상들에 따른 비일시적인 컴퓨터 판독 가능 매체의 예들은, 프로세서에 의해 판독 및 실행될 때, 프로세서로 하여금, 피비교수를 수신하게 하고 ― 피비교수는 가상 어드레스를 포함할 수 있음 ― , 피비교수 및 버스트 엔트리 태그가 매치하는지를 결정하게 하고, 피비교수 및 버스트 엔트리 태그가 매치한다고 결정할 때, 후보 매칭 변환 데이터 유닛을 선택하게 하고 ― 후보 매칭 변환 데이터 유닛은 버스트 엔트리 태그와 연관된 복수의 변환 데이터 유닛들 중에 있음 ― , 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초하여 후보 매칭 변환 데이터 유닛을 선택하게 할 수 있는 코드를 포함할 수 있다. 일 양상에서, 다양한 양상들에 따른 비일시적인 컴퓨터 판독 가능 매체는, 프로세서에 의해 판독 및 실행될 때, 프로세서로 하여금, 후보 매칭 변환 데이터 유닛의 콘텐츠와 피비교수 중 적어도 일부를 비교하게 하고, 비교의 결과가 매치를 표시할 때, 히트를 생성하게 하기 위한 코드를 더 포함할 수 있다.
[0013] 하나 이상의 양상들에 따른 예시적인 장치들은 TLB(translation lookaside buffer)를 제공할 수 있고, 특징들은 피비교수를 수신하기 위한 수단 ― 피비교수는 가상 어드레스를 포함함 ― , 및 피비교수 및 버스트 엔트리 태그가 매치하는지를 결정하고, 피비교수와 버스트 엔트리 태그의 매치를 결정할 때, 후보 매칭 변환 데이터 유닛을 선택하기 위한 수단을 포함할 수 있다. 하나 이상의 양상들에 따라, 특징들은 후보 매칭 변환 데이터 유닛의 콘텐츠와 피비교수 중 적어도 일부를 비교하고, 비교의 결과가 매치를 표시할 때, 히트를 생성하기 위한 수단을 더 포함할 수 있고, 후보 매칭 변환 데이터 유닛은 복수의 변환 데이터 유닛들 중의 변환 데이터 유닛일 수 있고, 후보 매칭 변환 데이터 유닛을 선택하는 것은 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초할 수 있다.
[0014] 첨부된 도면들은 양상들의 설명을 돕기 위해 제시되고, 단지 예시를 위해 제공되고, 양상들의 어떠한 제한도 아니다.
[0015] 도 1은 관련 기술의 TLB(translation-lookaside-buffer)의 구성 및 논리 연산을 예시한다.
[0016] 도 2는 본 개시의 양상들에 따른, 하나의 예시적인 버스트 엔트리 TLB의 일 어레인지먼트 및 하나의 예시적인 버스트 엔트리를 예시한다.
[0017] 도 3은 본 개시의 양상들에 따른, 하나의 예시적인 버스트 엔트리를 갖는 하나의 예시적인 버스트 엔트리 TLB의 논리 흐름을 예시한다.
[0018] 도 4는 본 개시의 양상들에 따른, 다른 예시적인 버스트 엔트리 TLB의 일 어레인지먼트, 및 하나의 예시적인 대안 버스트 엔트리를 예시한다.
[0019] 도 5는 본 개시의 양상들에 따른, 다른 예시적인 버스트 엔트리 TLB의 일 어레인지먼트, 및 하나의 예시적인 대안 버스트 엔트리를 예시한다.
[0020] 도 6은 본 개시의 양상들에 따른, 예시적인 세트의 버스트 엔트리들을 보유하는 하나의 예시적인 버스트 엔트리 TLB에서 버스트 디코드 및 매치 기능들의 일 구성을 예시한다.
[0021] 도 7은 다양한 양상들에 따른 하나의 버스트 엔트리 TLB 프로세스의 예시적인 동작들의 흐름도를 도시한다.
[0022] 도 8은 본 개시의 양상들에 따른, 버스트 엔트리 TLB에 대한 제 1 스테이지 맵핑 및 제 2 스테이지 맵핑을 갖는 고레벨 맵핑도를 도시한다.
[0023] 도 9는 본 개시의 양상들에 따른, 버스트 엔트리 TLB 내의 버스트 엔트리의 하나의 예시적인 생성에서 논리 흐름을 예시한다.
[0024] 도 10은 본 개시의 양상들에 따른, 버스트 엔트리 TLB 내의 버스트 엔트리의 하나의 예시적인 대안 생성에서 논리 흐름을 예시한다.
[0025] 도 11은 본 개시의 하나 이상의 양상들이 유리하게 사용될 수 있는 예시적인 무선 디바이스를 예시한다.
[0026] 양상들은 특정 예시적인 양상들에 관련된 다음의 설명 및 관련 도면들에 개시된다. 대안적인 양상들은 개시된 개념들의 범위에서 벗어나지 않고서 고안될 수 있다. 설명되는 특정 예시적인 구현들에서, 다양한 컴포넌트 구조들 및 동작들의 부분들이 공지된 종래의 기술들로부터 취해지고, 이어서 하나 이상의 양상들에 따라 배열될 수 있는 인스턴스들이 식별된다. 그러한 인스턴스들에서, 공지된 종래의 컴포넌트 구조들 및/또는 동작들의 부분들의 내부의 세부사항들은 개시된 개념들의 잠재적인 불명료화를 회피하는 것을 돕기 위해 생략된다.
[0027] 본원에 사용되는 용어는 특정 양상들을 도시하는 예들을 오로지 설명할 목적을 위한 것이며, 제한하는 것으로 의도되지 않는다.
[0028] 단어 "예시적인 것"은 본원에서 "예, 사례 또는 예시로서 기능하는 것"을 의미하는데 사용된다. "예시적인 것"으로서 본원에 설명된 임의의 양상은 다른 양상들에 비해 반드시 선호되거나 유리한 것으로 해석되지는 않는다. 마찬가지로, 용어 "본 발명의 양상들"은 모든 실시들이 논의되는 특징, 장점 또는 동작 모드를 포함하는 것을 요구하지 않는다.
[0029] 본원에 사용된 바와 같이, 단수 형태들은, 문맥이 달리 명백히 표시하지 않는다면, 복수 형태들을 물론 포함하도록 의도된다. 용어들 "포함하다(comprises)", "포함하는(comprising)", "구비하다(includes)" 및/또는 "구비하는(including)"은 본원에 이용될 때, 서술된 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 컴포넌트들의 존재를 특정하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 그들의 그룹들의 존재 또는 추가를 배제하지는 않음이 이해될 것이다.
[0030] 특정 양상들은, 예를 들면, 다양한 프로세스들의 또는 이들에 관련된 동작들 및 단계들 측면에서 설명된다. 달리 명시적으로 언급되거나, 특정 맥락으로부터 명백해지는 경우들을 제외하고, 그러한 동작들 및 단계들의 설명된 순서는 단지 예시를 위한 것이며, 다양한 예시적인 양상들에 따라 실제로 적용될 수 있는 동작들 또는 단계들의 순서로 반드시 제한되지는 않는다는 것이 이해될 것이다.
[0031] 또한, 다양한 프로세스들의 동작들은 흐름도들을 참조하여 설명된다. 흐름도들은, 하나의 블록에 도시된 동작들이 다른 블록에 도시된 동작들의 시작 시에 종결되거나, 계속될 수 없다는 것을 반드시 의미하지는 않다는 것이 이해될 것이다.
[0032] 특정 양상들은, 예를 들면, 컴퓨팅 디바이스 또는 컴퓨팅 디바이스의 엘리먼트들에 의해 또는 이들의 제어 하에서 수행될 수 있는 예시적인 동작들, 단계들, 액션들 및 동작들, 단계들 및 액션들의 시퀀스들 측면에서 설명된다. 그러한 동작들, 단계들, 액션들, 시퀀스들 및 이들의 조합들이 특정 회로들(예를 들면, ASIC들(application specific integrated circuits))에 의해 또는 이들의 제어 하에서, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해 또는 둘 모두의 조합에 의해 수행될 수 있다는 것은, 본 개시를 읽을 때 당업자들에 의해 이해될 것이다.
[0033] 따라서, 동작들, 단계들, 액션들, 시퀀스들 및 이들의 다른 조합들이 대응하는 세트의 컴퓨터 명령들을 저장한 임의의 형태의 컴퓨터 판독 가능 저장 매체 내에서 완전히 구현될 수 있고, 컴퓨터 명령들은, 실행 시에, 연관된 프로세서로 하여금 본원에 설명된 동작들, 단계들, 액션들, 시퀀스들 및 다른 조합들을, 직접적으로 또는 간접적으로, 수행하게 할 수 있다는 것은 그러한 당업자들에 의해 인지될 것이다. 따라서, 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있고, 이들 모두는 청구된 요지의 범위 내에 있는 것으로 고려된다.
[0034] 도 1은 종래의 TLB(translation-lookaside-buffer)(102)의 논리 구성 및 예시적인 동작들을 도시한다. 종래의 TLB(102)는, 총괄적으로 "종래의 TLB 엔트리들(104)"(도 1에서 라벨이 개별적으로 나타나지 않음)로 지칭될 4 개의 종래의 TLB 엔트리들(104-0, 104-1, 104-2 및 104-3)을 저장하는 것으로 도시된다. 4 개의 종래의 TLB 엔트리들(104)의 수량은 임의적인 예이다. 4 개의 종래의 TLB 엔트리들(104) 각각은 TLB 태그 및 TLB 맵핑 데이터를 포함한다.
[0035] 4 개의 종래의 TLB 엔트리들(104)의 TLB 태그들은 각각 TLB Tag0, TLB Tag1, TLB Tag2 및 TLB Tag3으로 각각 라벨링되고, 편의상, 총괄적으로 "TLB TagsX"(도 1에서 라벨이 개별적으로 나타나지 않음)로 지칭될 것이다. 종래의 TLB 엔트리들(104)의 TLB 맵핑 데이터는 TLB Data0, TLB Data1, TLB Data2 및 TLB Data3으로 각각 라벨링되고, 총괄적으로 "TLB DataX"(도 1에서 라벨이 개별적으로 나타나지 않음)로 지칭될 것이다.
[0036] 당업자들에게 공지된 종래의 기술들에 따라, TLB TagsX 각각은, TLB DataX가 유효 변환 데이터일 수 있는 가상 어드레스 블록을 식별할 수 있다. 도 1의 예에서, TLB Tag0는 가상 어드레스 블록(A0)과 매칭하고, TLB Tag1은 가상 어드레스 블록(A1)과 매칭하고, 유사한 방식으로, TLB Tag2 및 TLB Tag3은 가상 어드레스 블록들(A2 및 A3)과 각각 매칭한다. 가상 어드레스 블록들(A0, A1, A2 및 A3)은 총괄적으로 "가상 어드레스 블록들(AX)"(도 1에서 라벨이 개별적으로 나타나지 않음)로 지칭될 수 있다. 가상 어드레스 블록들(AX) 각각은, 도 1의 예에서, (연속 가상 어드레스들 측면에서) 도 1에 도시된 4 킬로바이트들(KB)의 크기를 갖는다. 크기는 "입상 크기(granule size)"로 지칭될 수 있다.
[0037] 도 1을 참조하면, 종래의 TLB(102)는, 그러나 가상 어드레스가 유효 종래의 TLB 엔트리(104)를 보유하는 가상 어드레스 블록(AX) 내에 있는 경우에만, 가상 어드레스의 빠른 변환을 제공할 수 있다. 가상 어드레스 블록(AX) 내의 가상 어드레스의 확률, 즉, TLB "히트(hit)"의 확률은 유효 종래의 TLB 엔트리들(104)의 수에 적어도 부분적으로 의존한다. 다양한 애플리케이션들에서, 하지만, 주어진 입상 크기에서 TLB 히트들의 원하는 확률을 달성하는 것은 엔트리들의 수가 많은 것으로 이어질 수 있다. 본 개시에 앞서 설명된 바와 같이, 매우 많은 수의 종래의 TLB 엔트리들을 보유할 수 있는 종래의 TLB 캐시를 설계하는 것은 비용들, 예를 들면, 칩 면적 및 전파 지연들을 초래할 수 있다.
[0038] 다른 특징들 중에서 빠르게 탐색 가능한 S 개의 단일 TLB 엔트리들의 세트를 제공할 수 있는 TLB 캐시를 포함하는 방법들 및 시스템들이 개시되고, TLB 엔트리들 각각은 다수의 가상 어드레스 블록에 대한 VA-PA 맵핑을 보유한다. 편의상, 개시된 양상들에 따른 TLB 캐시 방법들, 시스템들 및 프로세스들의 예들의 본원의 설명은 "버스트 TLB 캐시", 및 "버스트 TLB 엔트리"의 라벨들을 "비-배타적으로" 사용할 것이다. "버스트 TLB 캐시", 및 "버스트 TLB 엔트리"가 어떠한 고유한 의미도 갖지 않고 임의의 개시된 양상의 범위를 제한하지 않는 신조어 라벨들(coined labels)이라는 것이 이해될 것이다.
[0039] 하나 이상의 양상들에 따른 하나의 버스트 TLB 캐시에서, 각각의 버스트 TLB 엔트리는 TLB 태그 및 한 세트의 M 개의 특별히 구성된 TLB 필드들을 포함할 수 있다. TLB 태그는 대안적으로 "버스트 TLB 태그"로 지칭될 수 있다. 특별히 구성된 TLB 필드들은 대안적으로, 총괄적으로, "변환 데이터 유닛들"로, 그리고 일반적으로 "변환 데이터 유닛"으로 지칭될 것이다. "변환 데이터 유닛(들)" 및 "버스트 TLB 태그"가 어떠한 고유한 의미도 갖지 않고 임의의 개시된 양상의 범위를 제한하지 않는 신조어 라벨들이라는 것이 이해될 것이다.
[0040] 일 양상에서, 버스트 TLB 엔트리의 M 개의 변환 데이터 유닛들 각각은 M 개의 가상 어드레스 블록들 중 상이한 블록의 VA-PA 변환을 위한 정보를 보유할 수 있다. 따라서, 각각의 버스트 TLB 엔트리는 M 개의 가상 어드레스 블록에 대한 VA-PA 맵핑 정보를 보유할 수 있다. 비교해 볼 때, 종래의 TLB들은 M 개의 가상 어드레스 블록들에 대한 M 개의 TLB 엔트리들을 요구할 것이다.
[0041] 일 양상에서, 버스트 TLB 태그는, M 개의 변환 데이터 유닛들이, 총괄적으로, VA-PA 맵핑 정보를 보유하는 총 가상 어드레스 범위를 식별하는 정보를 포함할 수 있다.
[0042] 일 양상에서, M 개의 변환 데이터 유닛들 각각은 변환 데이터 유효성(validity) 플래그를 포함할 수 있다. 변환 데이터 유효성 플래그는, 예를 들면, 일 비트일 수 있다. 일 양상에서, 변환 데이터 유효성 플래그는 변환 데이터 유효 플래그와 변환 데이터 무효 플래그 사이에서 스위칭 가능할 수 있다. 각각의 버스트 TLB 엔트리의 버스트 TLB 태그는, 일 양상에서, 버스트 엔트리 유효성 플래그를 포함할 수 있다. 일 양상에서, 버스트 엔트리 유효성 플래그는 버스트 엔트리 유효 플래그(예를 들면, 논리 "0" 또는 "1")와 버스트 엔트리 무효 플래그(예를 들면, 논리 "1" 또는 "0") 사이에서 스위칭 가능할 수 있다. 일 양상에서, 버스트 엔트리 유효 플래그는 M 개의 변환 데이터 유닛 유효 플래그들의 논리 OR로서 생성될 수 있다. 다른 양상에서, 버스트 엔트리 유효 플래그는 변환 데이터 유닛 유효 플래그들과 독립하여, 선택적으로, 설정될 수 있다.
[0043] 일 양상에서, 각각의 버스트 TLB 엔트리 데이터는, 본원에 설명된 특징들 이외에도, 종래의 타입들 및 종류들의 변환 정보를 포함할 수 있다. 예들은 메모리 페이지 특성들, 캐싱 가능성/공유 가능성(cacheability/sharability), 및 액세스 허가들(access permissions)을 포함한다. 이들 및 다른 종래의 타입들 및 종류들의 변환표 정보는 당업자들에게 공지되어 있고, 따라서 추가의 상세한 설명이 생략된다.
[0044] 하나 이상의 양상들에 따른 하나의 예시적인 버스트 TLB에서, M은, 예를 들면, 2일 수 있다. 2인 M을 가정하면, 하나의 예시적인 버스트 TLB 내의 각각의 버스트 TLB 엔트리는 제 1 변환 데이터 유닛, 제 2 변환 데이터 유닛 및 버스트 엔트리 태그를 포함할 수 있다. 일 양상에서, 이러한 예에 대한 버스트 엔트리 유효 플래그는 제 1 TLB 변환 데이터 유닛 및 제 2 TLB 변환 데이터 유닛의 개개의 변환 데이터 유효성 플래그들의 논리 OR로서 생성될 수 있다. 2와 동일한 M은 단지 예시를 위한 임의적인 예이다. 예를 들면, 비제한적으로, M은 4와 동일하거나 4보다 더 클 수 있다.
[0045] 도 2는 다양한 양상들에 따른 하나의 버스트 엔트리 TLB(202)를 포함하는 어레인지먼트(200)를 예시한다. 버스트 엔트리 TLB(202)는 204-1, 204-2 ... 204-s ... 204-S로 개별적으로 라벨링된 예들과 같은 수량 S 개의 버스트 TLB 엔트리들을 보유할 수 있다. 설명을 목적으로, 버스트 TLB 엔트리들(204-1, 204-2 ... 204-S)은 대안적으로, 총괄적으로, "버스트 TLB 엔트리들(204)"(라벨이 도 2에 개별적으로 보이지 않음)로 지칭될 것이다. 또한, 설명을 목적으로, 버스트 TLB 엔트리들(204) 중 임의적인 하나가 확대도로 도시되고, 버스트 TLB 엔트리들(204) 각각은 버스트 TLB 태그(206) 및, 4의 M을 가정하면, 제 1 변환 데이터 유닛(208-1), 제 2 변환 데이터 유닛(208-2), 제 3 변환 데이터 유닛(208-3) 및 제 4 변환 데이터 유닛(208-4)을 포함할 수 있다. 제 1 변환 데이터 유닛(208-1), 제 2 변환 데이터 유닛(208-2), 제 3 변환 데이터 유닛(208-3) 및 제 4 변환 데이터 유닛(208-4)은 총괄적으로 "변환 데이터 유닛들(208)"(라벨이 도 2에 개별적으로 보이지 않음)로 지칭될 것이다.
[0046] 예시 목적으로, 4 KB의 입상 크기가 가정될 것인데, 이는, 변환 데이터 유닛들(208) 각각이 4 KB VA 어드레스들의 블록의 VA-PA 맵핑을 보유할 수 있다는 것을 의미한다. 변환 데이터 유닛들(208)은, 예시 목적으로, 4 개의 연속적인 VA 블록들의 VA-PA 맵핑을 보유하는 것으로 가정될 것이다. 예에 대해 추가로, 도 2에서 "BD1"로 라벨링된 제 1 변환 데이터 유닛(208-1)의 콘텐츠는 VA "4 KB-1"로의 VA "0"의 VA-PA 맵핑을 위한 정보일 수 있고, 여기서 VA "0"은, 설명을 목적으로, "제로" 어드레스로서 사용되는 임의적인 가상 어드레스일 수 있고, 다른 VA들은 이에 대해 오프셋들이다. 도 2에서 "BD2"로 라벨링된 제 2 변환 데이터 유닛(208-2)의 콘텐츠는 "8 KB-1"로의 VA "4 KB"의 VA-PA 맵핑을 위한 정보일 수 있다. 도 2에서 "BD3"으로 라벨링된 제 3 변환 데이터 유닛(208-3)의 콘텐츠는 "12 KB-1"로의 VA "8 KB"의 VA-PA 맵핑을 위한 정보일 수 있다. 마지막으로, 도 2에서 "BD4로 라벨링된 제 4 변환 데이터 유닛(208-4)의 콘텐츠는 "16 KB-1"로의 VA "12 KB"의 VA-PA 맵핑을 위한 정보일 수 있다. 버스트 TLB 태그(206)는 4 개의 변환 데이터 유닛들(208)에 의해 걸쳐 있는 VA 범위를 식별하는 정보를 포함할 수 있고, 4 개의 변환 데이터 유닛들(208)은, 위에서 설명된 예시적인 범위들 및 예시적인 4 KB 입도에 대해, VA "0" 내지 VA (16K-1)일 것이다. 본 개시에 사용된 바와 같이, 라벨들 "BTAG," "BD1," "BD2," "BD3" 및 "BD4"는 어떠한 고유한 의미도 갖지 않고, 개시된 양상들 중 임의의 것의 범위를 제한하지 않는다는 것이 이해될 것이다.
[0047] 도 3은, 도 2를 참조하여 위에서 설명된 바와 같이, 임의적인 버스트 엔트리 TLB(204-s)에 의해 제공될 수 있는 예시적인 VA-PA 맵핑(300)을 도시한다. 도 3을 참조하면, 4 개의 변환 데이터 유닛들(208)은 "A0," "A1," A2," 및 "A3"으로 라벨링된 4 KB VA의 연속적인 4 개의 VA 블록들을 각각 4 KB인 "P0," "P1," P2," 및 "P3"으로 라벨링된 대응하는 4 개의 PA 블록들로 맵핑할 수 있다. 도시된 바와 같이, 4 개의 PA 블록들은 반드시 연속적이지는 않고, 반드시 VA 블록들(A0, A1, A2 및 A3)과 같이 (위치 측면에서) 정렬되지는 않는다. 도 3을 참조하면, 제 1 변환 데이터 유닛(208-1)의 BD1 콘텐츠는 4 KB PA 블록(P0)으로 VA 어드레스 블록(A0)(0 내지 4 KB-1)을 맵핑하는 정보일 수 있다. 제 2 변환 데이터 유닛(208-2)의 BD2 콘텐츠는 4 KB PA 블록(P1)으로 VA 어드레스 블록(A1)(4 KB 내지 8 KB-1)을 맵핑하는 정보일 수 있다. 제 3 변환 데이터 유닛(208-3)의 BD3 콘텐츠는 4 KB PA 블록(P2)으로 VA 어드레스 블록(A2)(8 KB 내지 12 KB-1)을 맵핑하는 정보일 수 있고, 제 4 변환 데이터 유닛(208-4)의 BD4 콘텐츠는 4 KB PA 블록(P3)으로 VA 어드레스 블록(A3)(12 KB 내지 16 KB-1)을 맵핑하는 정보일 수 있다.
[0048] 도 4는, R KB의 입상 크기를 갖는, 본 개시의 양상들에 따른 하나의 버스트 엔트리 TLB의 하나의 어레인지먼트(400)를 예시한다. 편의상, 도 2의 어레인지먼트(200)의 변형예로서 도 4의 어레인지먼트(400)가 도시된다. 어레인지먼트(400)에서, 도 4에서 "BDR1"로 라벨링된 제 1 변환 데이터 유닛(208-1)의 콘텐츠는 VA(virtual address) "0" 내지 VA "R KB-1" 범위의 가상 어드레스들의 VA-PA 변환을 위한 정보일 수 있다. 도 4에서 "BDR2"로 라벨링된 제 2 변환 데이터 유닛(208-2)의 콘텐츠는 VA "R KB" 내지 "2R KB-1"의 VA-PA 변환을 위한 정보일 수 있다. "BDR3", "BDR4"로 각각 라벨링된 제 3 변환 데이터 유닛(208-3)의 콘텐츠 및 제 4 변환 데이터 유닛의 콘텐츠는 "3R KB-1"로의 VA "2R KB"의 VA-PA 맵핑 및 "4R KB-1"로의 VA "3R KB"의 VA-PA 맵핑을 위한 정보일 수 있다. 일 양상에서, 도 4에서 "BTGR"로 라벨링된 버스트 TLB 태그(206)의 콘텐츠는 버스트 TLB 엔트리 어드레스 범위 정보(도 4에 보이지 않음)를 포함할 수 있다. 버스트 TLB 엔트리 어드레스 범위 정보는, 각각의 TLB 엔트리(204-s)의 제 4 변환 데이터 유닛(208)의 총괄적인 콘텐츠(collective content), 즉, BDR1, BDR2, BDR3 및 BDR4는 VA "0" 내지 VA "4R KB-1"의 가상 어드레스들의 범위에 대한 VA-PA 맵핑 정보를 포함한다는 것을 표시할 수 있다. 본 개시에 사용된 바와 같이, 라벨들 "BTGR", "BDR1", "BDR2", "BDR3" 및 "BDR4"는 어떠한 고유한 의미도 갖지 않고, 개시된 양상들 중 임의의 것의 범위를 제한하지 않는다는 것이 이해될 것이다.
[0049] 도 2 및 4를 참조하면, 개개의 어레인지먼트들(200 및 400)은 M이 4와 동일한데, 즉, 4 개의 변환 데이터 유닛들(208)을 갖는 것으로 설명되었다. 따라서, 양자의 어레인지먼트들(200 및 400)에서 버스트 TLB 엔트리들(204) 각각은 4 개의 가상 어드레스 블록들을 변환하기 위한 정보를 보유할 수 있다.
[0050] 도 5는, 개별적으로 504-1, 504-2... 504-S로 라벨링된 수량(T 개)의 버스트 TLB 엔트리들을 보유하는 예시적인 버스트 엔트리 TLB(502)를 갖는 하나의 예시적인 일반적인 어레인지먼트(500)를 도시한다. 설명 목적으로, 버스트 TLB 엔트리들(504-1, 504-2... 504-t... 504-T)은 대안적으로, 총괄적으로, "버스트 TLB 엔트리들(504)"(도 5에서 라벨이 개별적으로 나타나지 않음)로 지칭될 것이다. 버스트 TLB 엔트리들(504)의 구성은 일반적으로, 위에서 설명된 바와 같이, 버스트 TLB 엔트리들(204)의 구성에 따를 수 있고, 각각의 버스트 TLB 엔트리(504)는, 특정 수량 4와 반대로, 일반적인 수량(M 개)의 변환 데이터 유닛을 보유한다. 앞서 설명된 바와 같이, M은 2의 임의의 정수 거듭제곱(integer power)일 수 있다.
[0051] 버스트 TLB 엔트리들(504) 모두를 나타낼 수 있는 버스트 TLB 엔트리(504-t)의 확대도는, 버스트 TLB 엔트리(504-t)가 버스트 TLB 태그(506), 제 1 변환 데이터 유닛(508-1), 제 2 변환 데이터 유닛(508-2)... 제 m 변환 데이터 유닛(508-m)... 및 제 M 변환 데이터 유닛(508-M)(총괄적으로 "변환 데이터 유닛들(508)"(도 5에서 라벨이 개별적으로 보이지 않음))을 포함하는 것을 도시한다. 변환 데이터 유닛(508)의 개개의 콘텐츠는 "BE1", "BE2,"... "BEm"... "BEM"으로 라벨링된다. 버스트 TLB 태그(506)의 콘텐츠는 "BTG"로 라벨링된다. 라벨들 "BTG", "BE1", "BE2,"... "BEm"... "BEM"이 어떠한 고유한 의미도 갖지 않고, 개시된 양상들 중 임의의 것의 범위를 제한하지 않는다는 것이 이해될 것이다.
[0052] 특정 입도, 예를 들면, 이에 제한 되지 않지만 4 KB를 가정하면, 각각의 버스트 TLB 엔트리(504)의 버스트 TLB 태그(506)의 콘텐츠 BTG는 그 입도의 M 배, 예를 들면, 4 KB의 M 배에 걸친 가상 어드레스 범위를 표시할 수 있다. 더 큰 수량(M)은 더 작은 입도를 제공할 수 있거나, 더 큰 범위의 가상 어드레스들의 VA-PA 맵핑을 위한 정보를, 총괄적으로 자신의 M 개의 변환 데이터 유닛들(508)에 의해, 보유하는 버스트 TLB 엔트리들(504) 각각을 제공할 수 있다. 버스트 TLB 엔트리들을 탐색 및 선택하고, 변환 데이터 유닛들(508) 중에서 선택하기 위한 로직의, 본 개시의 나중의 설명을 더 상세히 읽을 때 추가로 이해될 바와 같이, 더 큰 수량들(M 개)은, 예를 들면, 칩 면적 및 전파 지연의 비용들을 가질 수 있다.
[0053] 도 6은 하나 이상의 양상들에 따른 버스트 TLB(600)의 특징들을 예시한다. 일 양상에 따른 TLB(600)는 버스트 TLB 데이터 세트 버퍼(602)를 포함할 수 있다. TLB 데이터 세트 버퍼(602)는, 예를 들면, 설명을 목적으로, 대안적으로, 총괄적으로 "버스트 TLB 데이터 세트들(604)"(도 6에서 라벨이 개별적으로 보이지 않음)로 지칭될 제 1 버스트 TLB 데이터 세트(604-1), 제 2 버스트 TLB 데이터 세트(604-2) ... 및 제 S 버스트 TLB 데이터 세트(604-S)를 포함하는 버스트 TLB 데이터 세트들의 세트를 보유할 수 있다. 버스트 TLB 데이터 세트들(604) 각각은 일반적으로 도 2를 참조하여 설명된 버스트 TLB 엔트리들(204) 각각의 4 개의 변환 데이터 유닛들(208)로서 구성될 수 있다. 따라서, 버스트 TLB 데이터 세트들(604) 각각은 위에서 설명된 바와 같이 M 개의 변환 데이터 유닛들을 포함할 수 있고, M은 2의 정수 거듭제곱이다. 이러한 예에서, M은 4로 가정된다. 4 개의 변환 데이터 유닛들은, 총괄적으로 "변환 데이터 유닛(605)"(도 6에서 라벨이 개별적으로 보이지 않음)로 지칭되는 제 1 변환 데이터 유닛(605-1), 제 2 변환 데이터 유닛(605-2), 제 3 변환 데이터 유닛(605-3) 및 제 4 변환 데이터 유닛(605-4)을 포함한다. 변환 데이터 유닛들(605)은 일반적으로 본 개시에서 앞서 설명된 변환 데이터 유닛들(208 및 508)에 따라 구성될 수 있다. 일 양상에서, 4 개의 변환 데이터 유닛들(605) 각각은, 본 개시에 앞서 식별된 바와 같이, 변환 데이터 유효성 플래그를 포함할 수 있다.
[0054] 도 6을 참조하면, 버스트 TLB 태그 버퍼(606)는, 각각의 버스트 TLB 데이터 세트(604)와 연관된 버스트 TLB 태그, 예를 들면, 설명을 목적으로, 대안적으로, 총괄적으로 "버스트 TLB 태그들(608)"(도 6에서 라벨이 개별적으로 보이지 않음)로서 지칭될 제 1 버스트 TLB 태그(608-1), 제 2 버스트 TLB 태그(608-2)... 및 제 S 버스트 TLB 태그(608-S)를 보유할 수 있다. 제 1 버스트 TLB 태그(608-1) 및 제 1 버스트 TLB 데이터 세트(604-1)는, 결합하여, 결국, 도 2를 참조하여 설명되는 제 1 버스트 TLB 엔트리(204-1)로서 기능할 수 있는 제 1 버스트 TLB 엔트리(도 6에서 개별적으로 라벨링되지 않음)를 형성할 수 있다. 마찬가지로, 제 2 버스트 TLB 태그(608-2) 및 제 2 버스트 TLB 데이터 세트(604-2)는, 결합하여, 결국, 도 2를 참조하여 설명되는 제 2 버스트 TLB 엔트리(204-2)로서 기능할 수 있는 제 2 버스트 TLB 엔트리(도 6에서 개별적으로 라벨링되지 않음)를 형성한다. 일 양상에서, 버스트 TLB 태그들(608) 각각은, 본 개시에서 앞서 설명된 바와 같이, 버스트 TLB 엔트리 유효성 플래그(도 6에 명시적으로 보이지 않음)를 포함할 수 있다.
[0055] 도 6을 참조하면, 버스트 TLB(600)는 버스트 TLB 엔트리 선택 로직(610)을 포함할 수 있다. 버스트 TLB 엔트리 선택 로직(610)은, 가상 어드레스 및 선택적으로 연관된 다른 정보(예를 들면, 컨텍스트 정보)를 수신할 때, 자신이 스텝 1 탐색 피비교수를 형성하고, 스텝 1 탐색 피비교수와 버스트 TLB 태그들(608) 각각을 비교할 수 있도록 구성될 수 있다. 스텝 1 탐색 피비교수는, 예를 들면, 수신된 가상 어드레스의 지정된 비트들인 위에서 설명된 "VA 태그 비트들"일 수 있다. 일 양상에서, "매치"는 2 개의 조건들의 일치(concurrence)에 의해 설정될 수 있고, 2 개의 조건들은: a) 버스트 TLB 태그들(608) 중 적어도 하나에 보유된 어드레스 범위 내의 속하는(범위와 매칭하는) VA 태그 비트들; 및 b) 유효한 매치 버스트 TLB 태그들(608)에 대응하는 TLB 엔트리(들) 중 적어도 하나를 포함할 수 있다. 후자의 조건은 본 개시에서 앞서 설명된 버스트 엔트리 유효성 플래그로부터 결정될 수 있다.
[0056] 도 6을 참조하면, 일 양상에서, 버스트 TLB 엔트리 선택 로직(610)은 하나 이상의 매칭 버스트 TLB 태그들(608)과 연관된 개개의 어드레스들을 어드레스 디코더(612)로 통신하도록 구성될 수 있다. 버스트 TLB 데이터 세트들(604)은 로우들(rows)로 배열될 수 있고, 따라서, 어드레스 디코더(612)는 로우 디코더로서 구성될 수 있다. 이와 같이 구성되므로, 버스트 TLB 엔트리 선택 로직(610)으로부터 각각의 어드레스를 수신할 때, 어드레스 디코더(612)는 로우로 버스트 TLB 데이터 세트(604)를 선택할 수 있다. 로우는 M 개의 변환 데이터 유닛들을 포함할 것이고, 도 6의 예에서, M은 4와 동일하다.
[0057] 일 양상에서, 칼럼 선택/로우 디코더(614)는, "선택 비트들"로 지칭된 비트들을 가상 어드레스로부터 수신하고, 선택 비트들에 기초하여, 후보 매칭 변환 데이터 유닛으로서 4 개(또는 4 개 이외의 다른 복수 M)의 변환 데이터 유닛들(605) 중 하나를 선택하도록 구성될 수 있다. 선택은 가상 어드레스의 지정된 비트들에 기초할 수 있고, 대안적으로 "선택 비트들"로 지칭될 것이다. 일 양상에서, 선택 비트들의 수는 log2M일 수 있다. 따라서, M이 2이면, 하나의 선택 비트가 요구되고, M이 4이면, 2 개의 선택 비트들이 요구된다. 일 양상에서, 버스트 TLB(600)는, 후보 매칭 변환 데이터 유닛에 저장된 정보와, 버스트 TLB 엔트리 선택 로직(610)에 의해 사용된 스텝 1 탐색 피비교수, 또는 그것의 미리 결정된 부분을 비교하도록 구성될 수 있는 매치 로직(616)을 포함할 수 있다. 예시로서, 18-비트 가상 어드레스들을 수신하는 예시적인 버스트 TLB(600)가 가정된다. 이러한 예에서 탐색 피비교수는 가상 어드레스의 최상위 6 비트들(가상 어드레스 어드레스 비트들 [15: 12])로 구성될 것이다. 이러한 예시적인 탐색 피비교수에 대한 임의적인 비트 값들이 "001010"인 것으로 가정된다. 또한, 제 2 버스트 TLB 태그(608-2)가 "001010"의 이러한 예시적인 피비교수와 매칭한다고 가정된다. 이러한 예에 대해 TLB(600)의 동작들은 버스트 TLB 엔트리 선택 로직(610)이, "001010"을 사용하여, 제 2 버스트 엔트리 TLB 태그(608-2)를 선택하는 것을 포함할 수 있다. 선택하는 것은, 탐색 피비교수와 연관된 가상 어드레스를 포함하는 제 2 버스트 TLB 태그(608-2) 어드레스 범위 값과 매칭하는 피비교수 비트들 "001010"에 기초한다. 어드레스 디코더(612)는, 제 2 버스트 TLB 태그(608-2)로부터의 정보를 사용하여, 제 2 버스트 TLB 데이터 세트(604-2)를 선택하고, 그 제 2 버스트 TLB 데이터 세트(604-2)를 칼럼 선택/로우 디코더(614)에 제공할 수 있다. 이어서, 칼럼 선택/로우 디코더(614)는, 이러한 예(M이 4임)에서 2 비트들을 포함하는 가상 어드레스로부터의 선택 비트들을 사용하여, 제 2 버스트 TLB 변환 데이터 세트의 4 개의 변환 데이터 유닛들(605) 중 하나를 선택할 수 있다. 하나 이상의 양상들에 따른 동작들에서, 선택된 변환 데이터 유닛(605)이 유효하고, 탐색 피비교수와 연관된 가상 어드레스를 포함하는 어드레스 범위에 관련되면, 매치 로직(616)은, 매치를 적어도 부분적으로 식별할 것이다. 이어서, 블록(618)에 표현된 기능들은, 선택된 변환 데이터 유닛에 저장된 변환 정보를 사용하여, 가상 어드레스의 VA-PA 변환의 동작들에 적용될 수 있다. 매치 로직(616)이 어떠한 매치도 검출하지 않는다면, TLB 누락이 보고될 수 있다.
[0058] 도 6을 참조하면, 일 양상에서, 버스트 TLB 엔트리 선택 로직(610)이 피비교수와 매칭하는 버스트 엔트리 TLB 태그(608)에 대한 버스트 TLB 태그 버퍼(606)를 탐색하는 위에서 설명된 동작들은, 설명을 목적으로, "스텝 1 탐색"으로 지칭될 수 있다. 칼럼 선택/로우 디코더(614) 및 매치 로직(616)의 위에서 설명된 동작들은 "스텝 2 탐색"으로 지칭될 수 있다. 스텝 1 탐색에 사용되는 피비교수의 부분(예를 들면, 가상 어드레스의 할당된 비트들)은 "스텝 1 탐색 피비교수"로 지칭될 수 있다. 스텝 1 탐색에 사용되는 피비교수의 부분(예를 들면, 가상 어드레스의 할당된 비트들)은 "스텝 2 탐색 피비교수"로 지칭될 수 있다. 스텝 1 탐색 피비교수를 형성하는 것이 버스트 TLB(600)에 대해 외부에서, 전체적으로 또는 부분적으로, 구현될 수 있다는 것이 이해될 것이다.
[0059] 일 양상에서, 스텝 1 탐색 피비교수와 버스트 TLB 태그들(608)을 비교하는 동작들은 다수의 버스트 TLB 태그들(608)과의 매치를 생성할 수 있다. 추가의 양상에서, 버스트 TLB 엔트리 선택 로직(610)은, 다수의 매치의 경우에, 순차적인 스텝 1 탐색이 매칭 버스트 TLB 태그들(608) 중 제 1 매칭 버스트 TLB 태그를 리트리브(retrieve)하도록 구성될 수 있다. 스텝 1 탐색의 시퀀스는 규칙들에 따를 수 있다. 규칙들은 애플리케이션-특정적일 수 있고, 과도한 실험(undue experimentation) 없이 본 개시를 읽을 때 당업자들에 의해, 다양한 애플리케이션들에 대해 식별 및 구현될 수 있다. 따라서, 규칙들의 추가의 상세한 설명이 생략된다.
[0060] 도 6을 참조하면, 일 양상에서, 버스트 TLB 태그들(608) 각각에(그리고 도 2 및 4를 참조하여 설명된 "BTAG들" 각각에) 포함된 것으로 앞서 설명된 버스트 엔트리 어드레스 범위는 버스트 엔트리 1차 어드레스 범위(도 6에 명시적으로 보이지 않음)일 수 있다. 일 양상에서, 버스트 TLB 태그들(608) 각각은 또한 버스트 엔트리 2차 어드레스 범위(도 6에 명시적으로 보이지 않음)를 포함할 수 있다. 버스트 엔트리 2차 어드레스 범위는, 하나 이상의 양상들에서, VA-PA 변환 정보를 찾는 것 이외의 목적들로 버스트 TLB 태그들 중에서 선택하도록 사용될 수 있다. 하나의 목적은 버스트 TLB 태그들(608)과 같은 버스트 TLB 태그들의 어드레싱 가능 선택적 무효화(addressable selective invalidation)일 수 있다.
[0061] 일 양상에서, 버스트 TLB(600)는 자신의 버스트 TLB 태그들(608)의 선택적 무효화를 제공하도록 구성될 수 있다. 도 6을 참조하면, 다른 양상에서, 도시된 무효화 피비교수와 같은 피비교수가 버스트 TLB 태그 버퍼(606)에 제공될 수 있다. 무효화 피비교수는 특정 버스트 TLB 태그들(608)의 버스트 엔트리 2차 어드레스 범위 내에 속하도록 설정된 무효화 어드레스(도 6에 보이지 않음)를 포함할 수 있다. 이어서, 모든 버스트 TLB 태그들(608)의 버스트 엔트리 2차 어드레스 범위는 무효화 피비교수와 비교될 수 있다. 버스트 TLB 태그(608)가 무효화 피비교수와 매칭하는 버스트 엔트리 2차 어드레스 범위를 가질 때, 그 버스트 TLB 태그(608)는 "무효화"될 수 있다. 무효화는, 예를 들면, 자신의 버스트 TLB 엔트리 유효성 플래그를 버스트 TLB 엔트리 무효 플래그로 스위칭하는 것을 포함할 수 있다. 무효화 피비교수는 부가적인 정보, 예를 들면, 컨텍스트 및/또는 어드레스 공간 식별자들을 포함할 수 있다. 그러한 정보는 종래의 TLB 기술들에서 사용되는 정보를 포함할 수 있다. 일 양상에서, 무효화 프로세스는, 버스트 엔트리 2차 어드레스 범위에 대한 위에서 설명된 비교 이외에, 그러한 정보와 버스트 TLB 태그들(608) 내의 대응하는 정보를 비교하는 것을 포함할 수 있다.
[0062] 도 7은 다양한 양상들에 따른 하나의 버스트 엔트리 TLB 프로세스의 예시적인 동작들의 흐름도(700)를 도시한다. 도 7을 참조하여 예들을 설명하는데 있어서, 용어 "흐름(700)"은 흐름도(700)에 따른 동작들을 포함하는 예시적인 프로세스를 의미하는 것으로 이해될 것이다. 일 양상에서, 흐름(700)은 702에서 가상 어드레스를 수신하는 동작들로 시작될 수 있다. 흐름(700)은, 이에 대한 응답으로, 704로 진행되고, 예를 들면, 도 6을 참조하여 설명된 제 1 스텝 탐색의 동작들을 적용할 수 있다. 704의 동작들은, "매치"가 존재하는지를 결정하기 위해, 예를 들면, 도 6의 매치 로직(616)이 가상 어드레스의 지정된 태그 비트들 또는 "VA 태그 비트들"과 버스트 TLB 태그들(608)을 비교하는 것을 포함할 수 있다. "아니오" 브랜치가 결정 블록(706)에서 빠져나가는 것으로 도시된 바와 같이, 704의 제 1 스텝 탐색 동작들이 어떠한 매치도 발견하지 않는다면, 흐름(700)은 708로 진행되고, "누락"을 보고하고, 이어서 710으로 진행되고, 새로운 버스트 TLB 엔트리의 생성 동작들을 적용하고, 생성된 TLB 버스트 엔트리로 버스트 TLB를 업데이트할 수 있다. 그러한 동작들의 예들은 본 개시의 나중에 더 상세히 설명된다.
[0063] 도 7을 참조하면, 704의 동작들이 VA 태그 비트들과 매칭하는 버스트 TLB 태그들 중 하나 이상(예를 들면, 버스트 TLB 태그들(608) 중 하나 이상)을 발견하면, 흐름(700)은, "예" 브랜치가 결정 블록(706)에서 빠져나가는 것으로 표시된 바와 같이, 712로 진행되고, 대응하는 버스트 TLB 데이터 세트들에 대해 제 2 스텝 탐색의 동작들을 적용할 수 있다. 예를 들면, 도 6을 참조하면, 712의 동작들은 매칭 버스트 TLB 태그들(608)에 대응하는 버스트 TLB 데이터 세트들(604)에 대해 제 2 스텝 탐색을 수행할 수 있다. 712의 제 2 스텝 탐색 동작들은, 위에서 설명된 선택 비트들을 사용하여, 후보 매칭 변환 데이터 유닛으로서 M 개의 변환 데이터 유닛들 중 하나를 선택하는 것, 및 후보 매칭 변환 데이터 유닛의 콘텐츠와 스텝 1 피비교수를 비교하는 것을 포함할 수 있다. 712의 비교 동작들은, 예를 들면, 버스트 TLB(600)의 매치 로직(616)에 의해 수행될 수 있다. 매치가 존재하면, "예" 브랜치가 결정 블록(714)에서 빠져나가는 것으로 도시된 바와 같이, 흐름(700)은 716으로 진행되고, 가상 어드레스의 VA-PA 변환을 수행할 수 있다. 716의 VA-PA 동작들은, 예를 들면, 버스트 TLB(600)의 블록(618)에 대해 위에서 설명된 기능들에 의해 수행될 수 있다.
[0064] 도 7을 참조하면, 후보 매칭 변환 데이터 유닛이 스텝 1 피비교수와 매칭하지 않는다는 것을 714의 비교 동작들이 도시하면, "아니오" 브랜치가 결정 블록(714)에서 빠져나가는 것으로 도시된 바와 같이, 흐름 결정은 708로 진행되고, "누락"을 보고하고, 이어서 710으로 진행되고, 새로운 버스트 TLB 엔트리의 생성 동작을 적용할 수 있다. 일 양상에서, 새로운 버스트 엔트리의 생성은 후보 매칭 변환 데이터 유닛과 연관된 버스트 TLB 데이터 세트(604)를 변하지 않게 남겨두고, 대응하는 새로운 버스트 TLB 데이터 세트(604)를 생성할 수 있다. 다른 양상에서, 후보 매칭 변환 데이터 유닛과 연관된 버스트 TLB 데이터 세트(604)는, 예를 들면, 자신의 버스트 TLB 엔트리 유효성 플래그를 버스트 TLB 엔트리 무효 플래그로 스위칭함으로써 무효화될 수 있다. 도 7의 블록(710) 및 도 6을 참조하면, 일 양상에서, 버스트 TLB(600)는, M(예를 들면, 4) 전부를 업데이트하지 않고서, 개별적인 TLB 변환 데이터 유닛들을 업데이트하도록 구성될 수 있다. 일 양상에서, 개별적인 TLB 변환 데이터 유닛들의 그러한 업데이팅은, 하나 이상의 매칭 버스트 TLB 태그들(608)을 산출하는 스텝 1 탐색에 대한 응답으로 수행될 수 있지만, 스텝 1 탐색 피비교수와 후보 매칭 변환 데이터 유닛의 콘텐츠를 비교하는 스텝 2 탐색에 의해 어떠한 매치도 발견되지 않는다. 개별적인 TLB 변환 데이터 유닛 업데이팅은, 일 양상에서, 새로운 정보를 변환 데이터 유닛들 중 하나 이상에 기록 또는 중복 기록하고, 각각에 대해, 대응하는 유효 비트를 유효한 것으로 설정함으로써 수행될 수 있다.
[0065] 도 8은 VA 공간으로부터 IPA(Intermediate Physical Address) 공간으로의 제 1 스테이지 변환(802), 및 IPA 공간으로부터 PA 공간으로의 제 2 스테이지 변환(804)을 포함하는 2-스테이지 변환의 일부의 고레벨 맵핑도(800)를 도시한다. 예시 목적으로, 제 1 스테이지 변환(802)은, 예를 들어 그리고 비제한적으로, ARM® "Cortex A" 시리즈 및 다양한 비교 가능한 프로세서 타입들의 메모리 관리 유닛에 의해 사용되는 "스테이지 1 변환"에 따를 수 있다. 제 2 스테이지 변환(804)은, 예를 들어 그리고 비제한적으로, ARM® "Cortex A" 시리즈 및 다양한 비교 가능한 프로세서 타입들의 메모리 관리 유닛에 의해 사용되는 "스테이지 2 변환"에 따를 수 있다. 고레벨 맵핑도(800)에 표현된 바와 같은 2-스테이지 변환의 일반적인 개념들, 동작들은 당업자들에게 공지되어 있고, 따라서 그러한 개념들 및 동작들의 더 상세한 설명이 생략된다. 도 2 및 8을 참조하면, 예시 목적으로, 제 1 스테이지 변환(802)의 예시적인 VA 범위는, 도 2의 예에 대해, "버스트 TLB 엔트리들(204)"의 16 KB 범위에 대응하여 16 KB인 VA 범위(806)일 수 있다. 16 KB 범위는, 도 2를 참조하여 설명된 바와 같이, 버스트 TLB 엔트리들(204)의 4 개의 변환 데이터 유닛들(208)에 의해 스패닝(span)된다. 도 9를 참조하여 더 상세히 설명될 바와 같이, 도 8에 도시된 2-스테이지 변환은, 다양한 양상들에서, 버스트 TLB 엔트리(204)의 생성 또는 업데이팅에 연관될 수 있다.
[0066] 도 9는 본 개시의 양상들에 따른, 버스트 엔트리 TLB에서 버스트 엔트리를 생성 및 로딩하기 위한 하나의 프로세스의 예시적인 동작들의 흐름도(900)를 도시한다. 도 9를 참조하여 동작들을 설명하는데 있어서, 용어 "흐름(900)"은 흐름도(900)에 따른 동작들을 포함하는 예시적인 프로세스를 의미하는 것으로 이해될 것이다. 흐름(900)은 중복 기록하기 위한 타겟/희생자 버스트 TLB 엔트리를 선택하는 것을 가정한다. 일 양상에서, 흐름(900)의 목적들을 위해 중복 기록하기 위한 타겟/희생자 버스트 TLB를 선택하는 동작들은 공지된 종래의 TLB의 타겟/희생자를 선택하기 위한 공지된 종래의 기술들의 개조, 예를 들면, 과도한 실험 없이 본 개시를 읽을 때 당업자들에 의해 용이하게 수행되는 "교체"일 수 있다. 따라서, 중복 기록하기 위한 타겟/희생자 버스트 TLB 엔트리를 선택하는 것의 더 상세한 설명은 생략된다.
[0067] 흐름(900)에 따른 동작들은, 캐시 로드 이벤트의 표시를 검출 또는 수신할 때, 902에서 시작될 수 있다. 902에서의 캐시 로드 이벤트는, 예를 들면, "아니오" 브랜치가 결정 블록(706)에서 708로 빠져나가는 것으로 도시된 도 7 스텝 1 누락일 수 있다. 902에서 검출 또는 수신되는 캐시 로드 이벤트는, 예를 들면, "아니오" 브랜치가 결정 블록(714)에서 708로 빠져나가는 것으로 도시된 스텝 2 누락일 수 있다. 일 양상에서, 902에서의 캐시 로드 이벤트는, 예를 들면, 특정 버스트-TLB 엔트리를 버스트-TLB에 미리-로딩하기 위해 애플리케이션 프로그램(도면들에 명시적으로 보이지 않음)에 의해 제공되는 직접적인 커맨드(도면들에 명시적으로 보이지 않음)를 수신하는 것의 발생일 수 있다. 이들은 새로운 버스트-TLB 엔트리의 생성 및 로딩을 개시하기 위해 902에서 검출 또는 수신될 수 있는 단지 예시적인 이벤트들이다.
[0068] 캐시 로드 이벤트가 902에서 검출 또는 수신될 때, 흐름(900)은 904로 진행되고, 스테이지-1 맵핑 정보(906)의 페이지 및 스테이지-2 맵핑 정보(908)의 페이지를 리트리브하기 위한 동작들을 적용할 수 있다. 도 8 및 9를 참조하면, 스테이지-1 페이지(906)는 VA-IPA의 제 1 스테이지 변환(802)에 대응할 수 있고, 이러한 예에서, 4 KB의 도 8의 예시적인 크기와 반대로 2 MB의 도 8의 예시적인 크기를 갖는다. 유사한 방식으로, 스테이지-2 페이지(908)는 4 KB의 도 8의 예시적인 크기와 반대로, 2 MB의 도 8의 예시적인 크기를 갖는 IPA-PA의 제 2 스테이지 변환(804)에 대응할 수 있다. 이어서, 흐름(900)은 910으로 진행되고, 스테이지-1 페이지(906) 및 스테이지-2 페이지(908)를 병합하는 동작들을 적용할 수 있다.
[0069] 도 9를 참조하면, 910의 동작들 후에, 흐름(900)은 912로 진행되고, "관심 블록" 변환 범위를 설정하는 동작들을 적용하고, 이어서 914로 진행되고, "관심 블록" 외부의 변환 정보를 폐기하는 동작들을 적용할 수 있다. 도 2, 8 및 9를 참조하면, 하나의 예시적인 관심 블록은 도 2의 버스트 TLB 엔트리(204-s)를 참조하여 설명된 16 KB 가상 어드레스 공간일 수 있다. 이는, 예를 들면, 도 8에 도시된 가상 어드레스 공간(806)의 16 KB 범위에 대응할 수 있다. 914에서 폐기된 "관심 블록" 외부의 변환 정보는, 도 8을 참조하면, 각각 4 KB의 4 개의 IPA 블록들(도 8에 도시되지만, 별개로 넘버링되지 않음) 내에 있지 않고, 각각 4 KB의 4 개의 PA 블록들(도 8에 도시되지만, 별개로 넘버링되지 않음) 내에 있지 않은 IPA 어드레스들에 대한 스테이지 1 맵핑 변환 정보에 대응할 수 있다.
[0070] 914의 동작들 후에, 그 다음 흐름(900)은 916으로 진행되고, 새로운(또는 업데이트된) "관심 블록" 버스트 TLB 엔트리(918)로 버스트 TLB를 업데이트하는 동작들을 적용할 수 있다. 916의 동작들은 또한, 중복 기록 또는 업데이트되기 전에, 희생자/타겟 "관심 블록" 버스트-TLB 엔트리를 무효화하는 것을 포함할 수 있다.
[0071] 도 10은 다른 양상에 따른, 버스트 엔트리 TLB에서 버스트 엔트리를 생성 및 로딩하기 위한 하나의 대안적인 프로세스의 예시적인 동작들의 흐름도(1000)를 도시한다. 도 10을 참조하여 예들을 설명하는데 있어서, 용어 "흐름(1000)"은 흐름도(1000)에 따른 동작들을 포함하는 예시적인 프로세스를 의미하는 것으로 이해될 것이다. 도 9의 흐름(900)을 참조하여 위에서 설명된 바와 같이, 도 10의 버스트 엔트리 TLB에서 버스트 엔트리를 로딩하는 것이 중복 기록하기 위한 타겟/희생자 버스트 TLB 엔트리를 선택하는 것을 포함할 수 있다는 것이 이해될 것이다. 또한 위에서 설명된 바와 같이, 그러한 동작들은 공지된 종래의 TLB의 타겟/희생자를 선택하기 위한 공지된 종래의 기술들의 개조, 예를 들면, "교체"일 수 있고, 따라서, 더 상세한 설명은 생략된다.
[0072] 도 10을 참조하면, 흐름(1000)은 캐시 로드 이벤트를 검출 또는 수신함으로써 1002에서 시작될 수 있다. 캐시 로드 이벤트는, 예를 들면, 도 9의 블록(902)을 참조하여 위에서 설명된 예시적인 캐시 로드 이벤트 중 임의의 것일 수 있다. 1002에서 캐시 로드 이벤트 시에, 흐름(1000)은 1004로 진행되고, 스테이지-1 페이지(1006) 및 스테이지-2 페이지(1008)를 리트리브하기 위한 동작들을 적용할 수 있다. 정보는, 예를 들면, 메인 메모리 내의 변환표들(도면들에 명시적으로 보이지 않음)로부터 리트리브될 수 있고, 이들의 예는 도 11을 참조하여 더 상세히 설명된다. 1004의 동작들 후에, 흐름(1000)은 1010으로 진행되고, 스테이지-1 페이지(1006) 및 스테이지-2 페이지(1008)를 병합하는 동작들을 적용할 수 있다. 이어서, 흐름(1000)은 1012로 진행되고, 변환 크기(즉, 1차 어드레스 범위 버스트 엔트리 태그들(예를 들면, 도 6의 버스트 TLB 태그들(608)에서 인코딩된 어드레스 범위)를 설정하는 동작들을 적용할 수 있다. 일 양상에서, 1012의 동작들은 유효 페이지 크기 중에서 가장 큰 것으로서 변환 크기를 설정하고, 버스트 TLB 입상 크기를 설정할 수 있다. 유효 페이지 크기는, 도 10을 참조하면, 이러한 예에서 2 Mbyte인, 스테이지-1 페이지 크기 및 스테이지-2 페이지 크기 중에서 최소일 수 있다. 버스트 TLB 입상 크기는, 도 2를 참조하면, 도 2의 변환 데이터 유닛들(208)의 4 KB 버스트 TLB 입상 크기일 수 있다. 더 일반적인 예에서, 1010의 동작들에서 사용되는 버스트 TLB 입상 크기는 도 4의 버스트 TLB 데이터 유닛들(408)의 R KB 버스트 TLB 입상 크기일 수 있다. 변환 크기를 설정하는 1012의 동작들은, 예를 들면, 다음과 같이 표현될 수 있다.
[0073] 변환 크기(버스트-TLB 태그들의 1차 어드레스 범위에서 인코딩됨)를 다음이 같이 설정된다.
max(유효 페이지 크기, 2Q x 버스트-TLB-입상-크기)(수학식 1)
여기서 Q = log2M이다.
[0074] 따라서, 변환 크기는, 수학식 1에 따라, 유효 페이지 크기 중에서 가장 크고, 버스트 TLB 입상 크기의 M 배이다.
[0075] 일 양상에서, 1010의 동작들은 또한 무효화 크기(버스트-TLB 태그들의 2차 어드레스 범위에서 인코딩됨)를 설정하는 것을 포함할 수 있다. 무효화 크기는, 예를 들면, 다음과 같이 표현될 수 있다.
[0076] max(무효화 페이지 크기, 2Q x 버스트-TLB-입상-크기)(수학식 2)
[0077] 여기서 무효화 페이지 크기는 스테이지-1 페이지 크기(906)이다.
[0078] 따라서, 무효화 크기는, 수학식 2에 따라, 스테이지-1 페이지 크기(1006) 중에서 가장 크고, 버스트 TLB 입상 크기의 M 배이다.
[0079] 1012의 동작들이 변환 크기를 설정할 때, 흐름(1000)은 1014로 진행되고, 대응하는 VA-PA 맵핑 정보를 갖는 새로운(또는 업데이트된) 버스트 TLB 엔트리(1016)로 버스트 TLB를 업데이트하는 동작들을 적용할 수 있다. 1014의 동작들은, 위에서 설명된 중복-기록 또는 업데이팅과 연관하여, 중복 기록 또는 업데이트되기 전에, 희생자/타겟 버스트-TLB 엔트리를 무효화하는 것을 포함할 수 있다. 희생자/타겟 버스트-TLB 엔트리를 무효화하기 위한 동작들은, 예를 들면, 유효로부터 무효로 버스트-TLB 엔트리의 유효 플래그를 변경하는 것을 포함할 수 있다.
[0080] 동작들(1014) 및 새로운(또는 업데이트된) 버스트 TLB 엔트리(1016)가 유효 페이지 크기의 상대적인 크기 및 버스트 TLB 입상 크기의 M 배의 수량에, 적어도 부분적으로, 의존할 수 있다는 것은, 본 개시를 전체적으로 읽을 때, 당업자들에 의해 이해될 수 있다. 예를 들면, 유효 페이지 크기가 버스트 TLB 입상 크기의 M(또는 2Q) 배보다 더 크면, 1014의 동작들은 전부 M 개의 변환 데이터 유닛들에 동일한 변환 데이터를 설정할 수 있다. 일 양상에서, 1014의 동작들은 또한 각각의 M 개의 변환 데이터 유닛들에 대한 데이터 유효 플래그를 "유효"로 설정할 수 있다. 도 10의 새로운(또는 업데이트된) 버스트 TLB 엔트리(1016)가 이러한 양상에 따른 예로서 도시되는데, 왜냐하면 전부 4 개의 예시적인 버스트 TLB 데이터(버스트 TLB 데이터 1, 버스트 TLB 데이터 2 ... 버스트 TLB 데이터 4로 라벨링됨)가 (이러한 예에서) "0" 내지 (2 MB-1)의 범위를 변환하기 위한 동일한 정보를 보유하기 때문이다. "0" 어드레스에 관하여, 이는 설명 목적으로 참조로서 사용되는 임의적인 어드레스일 수 있다. 대안적으로, 또한 유효 페이지 크기가 버스트 TLB 입상 크기의 M(또는 2Q) 배보다 더 크면, 1014의 동작들은 특정, 고정된 버스트-TLB 데이터 위치에 변환을 저장하고, 이러한 버스트-TLB 데이터 위치 유효 플래그를 유효로 설정할 수 있다.
[0081] 도 10을 참조하면, 일 양상에서, 유효 페이지 크기가 2Q(즉, 정수 M) x 버스트-TLB-입상-크기 미만이거나 동일하면, 1014의 동작들은 유효 페이지-크기에 대응하는 버스트-TLB 데이터를 파퓰레이팅(populate)하고, 그러한 버스트-TLB 데이터 플래그들을 유효로 설정할 수 있다.
[0082] 도 11은 본 개시의 하나 이상의 양상들이 이롭게 사용될 수 있는 무선 디바이스(1100)를 예시한다.
[0083] 이제 도 11을 참조하면, 무선 디바이스(1100)는 시스템 버스(도 11에 볼 수 있지만 개별적으로 라벨링되지 않음)에 의해 상호연결된 CPU(1104), 프로세서 메모리(1106) 및 MMU(memory management unit)(1107)를 갖는 프로세서(1102)를 포함한다. MMU(1107)는 도 6의 버스트 TLB(600)로서 구성될 수 있는 버스트 TLB(600)를 포함할 수 있다. CPU(1104)는 프로세서 메모리(1106) 또는 외부 메모리(1110)를 액세스하기 위한 가상 어드레스들을 생성할 수 있다. 가상 어드레스들은 시스템 버스를 통해 MMU(1107)로 통신될 수 있다. MMU(1107)는, 이에 대한 응답으로, 예를 들면, 도 6을 참조하여 설명된 바와 같이 먼저 버스트 TLB(600)를 탐색할 것이다.
[0084] 무선 디바이스(1100)는 도 9 및 10을 참조하여 설명된 다양한 방법들을 수행하도록 구성될 수 있고, 도 9 및 10을 참조하여 설명된 방법들 중 임의의 것을 수행하기 위해 프로세서 메모리(1106) 또는 외부 메모리(1110)로부터 리트리브되는 명령들을 실행하도록 추가로 구성될 수 있다.
[0085] 도 11은 또한 프로세서(1102) 및 디스플레이(1128)에 커플링된 디스플레이 제어기(1126)를 도시한다. 코더/디코더(코덱)(1134)(예를 들면, 오디오 및/또는 음성 코덱)는 프로세서(1102)에 커플링될 수 있다. 무선 제어기(440)(모뎀을 포함할 수 있음)와 같은 다른 컴포넌트들이 또한 예시된다. 예를 들면, 스피커(1136) 및 마이크로폰(1138)은 코덱(1134)에 커플링될 수 있다. 도 11은 또한 무선 제어기(1140)가 무선 안테나(1142)에 커플링될 수 있다는 것을 도시한다. 특정 양상에서, 프로세서(1102), 디스플레이 제어기(1126), 프로세서 메모리(1106), 외부 메모리(1110), 코덱(1134) 및 무선 제어기(1140)는 시스템-인-패키지 또는 시스템-온-칩 디바이스(1122)에 포함될 수 있다.
[0086] 특정 양상에서, 입력 디바이스(1130) 및 전력 공급기(1144)는 시스템-온-칩 디바이스(1122)에 커플링될 수 있다. 또한, 특정 양상에서, 도 11에 예시된 바와 같이, 디스플레이(1128), 입력 디바이스(1130), 스피커(1136), 마이크로폰(1138), 무선 안테나(1142) 및 전력 공급기(1144)는 시스템-온-칩 디바이스(1122) 외부에 있다. 그러나, 디스플레이(1128), 입력 디바이스(1130), 스피커(1136), 마이크로폰(1138), 무선 안테나(1142) 및 전력 공급기(1144) 각각은 인터페이스 또는 제어기와 같은, 시스템-온-칩 디바이스(1122)의 컴포넌트에 커플링될 수 있다.
[0087] 버스트 TLB(600)가 반드시 프로세서(1002)의 부분은 아니며, 대신에, 하드웨어 가속기 블록(도 11에 명시적으로 보이지 않음), 예를 들면, 카메라 시스템, 비디오 인코더, 디스플레이 제어기를 갖는 MMU의 부분일 수 있어서, MMU에 의해 "변환"되어 시스템 메모리로 재지향되는 메모리 요청들을 MMU로 발행한다는 것이 이해될 것이다.
[0088] 도 11이 무선 통신 디바이스를 도시하지만, 프로세서(1102) 및 버스트 TLB(600)를 갖는 자신의 MMU(1107)가 또한 셋-톱 박스, 음악 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 내비게이션 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛, 컴퓨터, 랩톱, 태블릿, 모바일 폰 또는 다른 유사한 디바이스들에 통합될 수 있다는 것이 또한 주목되어야 한다.
[0089] 전술한 개시된 디바이스들 및 기능들은 컴퓨터 판독 가능 매체 또는 컴퓨터 판독 가능 매체들 상에 저장된 컴퓨터 파일들(예컨대, RTL, GDSII, GERBER 등)으로 설계 및 구성될 수 있다. 그러한 파일들 중 일부 또는 전부는, 그러한 파일들에 기초하여 디바이스들을 제조하는 제조 핸들러에 제공될 수 있다. 결과적인 제품들은, 이어서 반도체 다이로 절단되고 반도체 칩으로 패키징되는 반도체 웨이퍼들을 포함한다. 이어서, 반도체 칩들은 위에서 설명된 디바이스들에서 사용된다.
[0090] 당업자들은, 정보 및 신호들이 다양한 상이한 기술들 및 기법들을 이용하여 표현될 수 있다는 것을 이해할 것이다. 예컨대, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심벌들 및 칩들은 전압들, 전류들, 전자기파들, 자기 필드들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 결합들로 표현될 수 있다.
[0091] 더욱이, 당업자들은 본 명세서에 개시된 양상들에 관련하여 설명되는 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 결합들로서 구현될 수 있음을 이해할 것이다. 컴퓨터 소프트웨어는, 프로세서에 의해 실행될 때, 프로세서로 하여금 설명된 양상들에 따라 단계들 및 관련 동작들을 수행하게 할 수 있는 명령들을 포함하는 비일시적인 컴퓨터-판독 가능 매체를 포함할 수 있다. 하드웨어와 소프트웨어의 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들을 그들의 기능 관점에서 일반적으로 상술되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제한들에 의존한다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나는 것을 야기하는 것으로 해석되어서는 안 된다.
[0092] 본원에 설명된 다양한 방법들, 시퀀스들 및/또는 알고리즘들은, 예컨대, 하드웨어에서 직접적으로, 또는 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당분야에 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다.
[0093] 전술한 개시가 본 발명의 예시적인 예들 및 애플리케이션들을 도시하지만, 첨부된 청구항들에 의해 정의된 본 발명의 범위에서 벗어나지 않고서, 다양한 변화들 및 수정들이 본원에서 이루어질 수 있다는 것이 주목되어야 한다. 청구된 방법들에서 언급된 기능들, 단계들 및/또는 액션들은 임의의 특정 순서로 수행될 필요는 없다. 또한, 특징들이 단수 형태로 설명 또는 청구될 수 있지만, 단수에 대한 제한이 명시적으로 언급되지 않는다면, 복수가 고려된다.

Claims (15)

  1. 가상 어드레스(virtual address)를 변환(translating)하기 위한 방법으로서, 피비교수(comparand)를 수신하는 단계 ― 상기 피비교수는 가상 어드레스를 포함함 ― ; 및 상기 피비교수와 버스트 엔트리 태그(burst entry tag)의 매치를 결정할 때, 후보 매칭 변환 데이터 유닛(candidate matching translation data unit)을 선택하는 단계 ― 상기 선택하는 것은 복수의 변환 데이터 유닛들로부터 이루어지며, 상기 복수의 변환 데이터 유닛들은 상기 버스트 엔트리 태그와 연관되고, 상기 선택하는 것은 상기 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초함 ― , 및 상기 후보 매칭 변환 데이터 유닛의 콘텐츠와 상기 피비교수 중 적어도 일부를 비교하고, 상기 비교의 결과가 매치를 표시할 때, 히트(hit)를 생성하는 단계를 포함하고, 상기 버스트 엔트리 태그는 버스트 엔트리 유효성 플래그(burst entry validity flag)를 포함하고, 상기 피비교수가 상기 버스트 엔트리 태그와 매칭한다고 결정하는 것은 상기 버스트 엔트리 유효성 플래그에 적어도 부분적으로 기초하는, 가상 어드레스를 변환하기 위한 방법.
  2. 제 1 항에 있어서, 상기 버스트 엔트리 태그는 버스트 엔트리 어드레스 범위를 포함하고, 상기 피비교수와 상기 버스트 엔트리 태그의 매치는 상기 가상 어드레스가 상기 버스트 엔트리 어드레스 범위 내의 어드레스인 것에 적어도 부분적으로 기초하는, 가상 어드레스를 변환하기 위한 방법.
  3. 제 2 항에 있어서, 상기 방법은: 무효화 피비교수(invalidation comparand)를 수신하는 단계; 및 상기 무효화 피비교수와 상기 버스트 엔트리 태그의 매치에 적어도 부분적으로 기초하여, 상기 버스트 엔트리 태그에 대응하는 버스트 엔트리를 무효화하는 단계를 더 포함하는, 가상 어드레스를 변환하기 위한 방법.
  4. 제 2 항에 있어서, 상기 버스트 엔트리 어드레스 범위는 버스트 엔트리 1차(primary) 어드레스 범위이고, 상기 버스트 엔트리 태그는 버스트 엔트리 2차(secondary) 어드레스 범위를 더 포함하고, 상기 방법은: 무효화 피비교수를 수신하는 단계; 및 상기 무효화 피비교수와 상기 버스트 엔트리 2차 어드레스 범위의 매치에 적어도 부분적으로 기초하여, 상기 버스트 엔트리 2차 어드레스 범위에 대응하는 변환 데이터 유닛들을 무효화하는 단계를 더 포함하는, 가상 어드레스를 변환하기 위한 방법.
  5. 제 1 항에 있어서, 상기 방법은 버스트 엔트리를 저장하는 단계를 더 포함하고, 상기 버스트 엔트리는 상기 버스트 엔트리 태그 및 상기 복수의 변환 데이터 유닛들을 포함하고, 상기 버스트 엔트리 유효성 플래그는 버스트 엔트리 유효 플래그와 버스트 엔트리 무효 플래그 간에 스위칭 가능하고, 상기 버스트 엔트리 태그는 버스트 엔트리 어드레스 범위를 포함하고, 상기 피비교수와 상기 버스트 엔트리 태그의 매치는 상기 가상 어드레스가 상기 버스트 엔트리 어드레스 범위 내의 어드레스인 것에 적어도 부분적으로 추가로 기초하는, 가상 어드레스를 변환하기 위한 방법.
  6. 제 5 항에 있어서, 상기 방법은: 무효화 피비교수를 수신하는 단계; 및 상기 무효화 피비교수와 상기 버스트 엔트리 태그의 매치에 적어도 부분적으로 기초하여, 상기 버스트 엔트리 유효성 플래그를 상기 버스트 엔트리 무효 플래그로 스위칭하는 단계를 더 포함하는, 가상 어드레스를 변환하기 위한 방법.
  7. 제 1 항에 있어서, 상기 버스트 엔트리는 복수의 버스트 엔트리들 중에 있고, 상기 버스트 엔트리들 각각은 대응하는 버스트 엔트리 태그 및 대응하는 복수의 변환 데이터 유닛들을 포함하고, 각각의 버스트 엔트리의 복수의 변환 데이터 유닛들은 M 개의 변환 데이터 유닛들을 포함하고, M은 정수이고, 상기 피비교수가 상기 버스트 엔트리 태그와 매칭하는지를 결정하는 것은 상기 피비교수가 상기 버스트 엔트리들 중 적어도 하나의 버스트 엔트리의 대응하는 버스트 엔트리 태그와 매칭하는지를 결정하는 것을 포함하는, 가상 어드레스를 변환하기 위한 방법.
  8. 제 1 항에 있어서, 상기 변환 데이터 유닛들 각각은 변환 데이터 유효성 플래그를 포함하고, 상기 변환 데이터 유효성 플래그는 변환 데이터 유효 플래그와 변환 데이터 무효 플래그 간에 스위칭 가능하고, 상기 버스트 엔트리 유효성 플래그는 버스트 엔트리 유효 플래그와 버스트 엔트리 무효 플래그 간에 스위칭 가능하고, 상기 복수의 변환 데이터 유닛들은 제 1 변환 데이터 유닛 및 제 2 변환 데이터 유닛을 포함하고, 상기 제 1 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 1 변환 데이터 유효성 플래그이고, 상기 제 2 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 2 변환 데이터 유효성 플래그이고, 상기 버스트 엔트리 유효 플래그는 적어도 상기 제 1 변환 데이터 유효성 플래그 및 상기 제 2 변환 데이터 유효성 플래그의 논리 OR에 적어도 부분적으로 기초하는, 가상 어드레스를 변환하기 위한 방법.
  9. 제 8 항에 있어서, 상기 가상 어드레스의 적어도 1 비트는 선택 비트이고, 상기 후보 매칭 변환 데이터 유닛을 선택하는 것은, 상기 선택 비트의 상태에 기초하여, 상기 제 1 변환 데이터 유닛과 상기 제 2 변환 데이터 유닛 중에서 선택하는, 가상 어드레스를 변환하기 위한 방법.
  10. 제 8 항에 있어서, 상기 복수의 변환 데이터 유닛들은 제 3 변환 데이터 유닛 및 제 4 변환 데이터 유닛을 더 포함하고, 상기 제 3 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 3 변환 데이터 유효성 플래그이고, 상기 제 4 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 4 변환 데이터 유효성 플래그이고, 상기 버스트 엔트리 유효 플래그는 상기 제 1 변환 데이터 유효성 플래그, 상기 제 2 변환 데이터 유효성 플래그, 상기 제 3 변환 데이터 유효성 플래그 및 상기 제 4 변환 데이터 유효성 플래그의 논리 OR에 적어도 부분적으로 기초하는, 가상 어드레스를 변환하기 위한 방법.
  11. 제 10 항에 있어서, 상기 가상 어드레스의 적어도 2 비트들은 선택 비트들이고, 상기 후보 매칭 변환 데이터 유닛을 선택하는 것은 상기 선택 비트들의 상태에 기초하여 상기 제 1 변환 데이터 유닛, 상기 제 2 변환 데이터 유닛, 상기 제 3 변환 데이터 유닛 및 상기 제 4 변환 데이터 유닛 중에서 선택하는, 가상 어드레스를 변환하기 위한 방법.
  12. 변환 룩어사이드 버퍼(translation lookaside buffer; TLB)로서, 피비교수를 수신하고, 이에 대한 응답으로, 상기 피비교수 및 상기 버스트 엔트리 태그가 매치하는지를 결정하도록 구성된 버스트 TLB 엔트리 선택 로직 ― 상기 피비교수는 가상 어드레스를 포함함 ― ; 상기 피비교수 및 상기 버스트 엔트리 태그가 매치한다고 상기 버스트 TLB 엔트리 선택 로직이 결정하는 것에 대한 응답으로, 후보 매칭 변환 데이터 유닛을 선택하도록 구성되고, 상기 가상 어드레스의 적어도 1 비트에 적어도 부분적으로 기초하여 상기 후보 매칭 변환 데이터 유닛을 선택하도록 구성된 칼럼 선택기 로직(column selector logic) ― 상기 후보 매칭 변환 데이터 유닛은 상기 버스트 엔트리 태그와 연관된 복수의 변환 데이터 유닛들 중에 있음 ― ; 및 매치 로직(match logic)을 포함하고, 상기 매치 로직은 상기 후보 매칭 변환 데이터 유닛의 콘텐츠와 상기 피비교수 중 적어도 일부를 비교하고, 상기 비교의 결과가 매치를 표시할 때, 히트를 생성하도록 구성되고, 상기 버스트 엔트리 태그는 버스트 엔트리 유효성 플래그를 포함하고, 상기 버스트 TLB 엔트리 선택 로직은 상기 버스트 엔트리 유효 플래그에 적어도 부분적으로 기초하여 상기 피비교수 및 상기 버스트 엔트리 태그가 매치한다고 결정하도록 추가로 구성되는, 변환 룩어사이드 버퍼(TLB).
  13. 제 12 항에 있어서, 상기 변환 데이터 유닛들 각각은 변환 데이터 유효성 플래그를 포함하고, 상기 변환 데이터 유효성 플래그는 변환 데이터 유효 플래그와 변환 데이터 무효 플래그 간에 스위칭 가능하고, 상기 버스트 엔트리 유효성 플래그는 버스트 엔트리 유효 플래그와 버스트 엔트리 무효 플래그 간에 스위칭 가능하고, 상기 복수의 변환 데이터 유닛들은 제 1 변환 데이터 유닛 및 제 2 변환 데이터 유닛을 포함하고, 상기 제 1 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 1 변환 데이터 유효성 플래그이고, 상기 제 2 변환 데이터 유닛의 변환 데이터 유효성 플래그는 제 2 변환 데이터 유효성 플래그이고, 상기 버스트 엔트리 유효 플래그는 적어도 상기 제 1 변환 데이터 유효성 플래그 및 상기 제 2 변환 데이터 유효성 플래그의 논리 OR에 적어도 부분적으로 기초하는, 변환 룩어사이드 버퍼(TLB).
  14. 적어도 하나의 명령을 포함하는 컴퓨터 판독 가능 저장 매체로서, 상기 적어도 하나의 명령은 컴퓨터 또는 프로세서로 하여금 제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 수행하게 하기 위한 것인, 컴퓨터 판독 가능 저장 매체.
  15. 장치로서, 제 1 항 내지 제 11 항 중 어느 한 항에 따른 방법을 수행하기 위한 수단을 포함하는, 장치.
KR1020177029607A 2015-04-15 2016-03-15 버스트 변환 룩―어사이드 버퍼 KR101895388B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562148121P 2015-04-15 2015-04-15
US62/148,121 2015-04-15
US14/865,965 US9836410B2 (en) 2015-04-15 2015-09-25 Burst translation look-aside buffer
US14/865,965 2015-09-25
PCT/US2016/022435 WO2016167912A1 (en) 2015-04-15 2016-03-15 Burst translation look-aside buffer

Publications (2)

Publication Number Publication Date
KR20170137107A true KR20170137107A (ko) 2017-12-12
KR101895388B1 KR101895388B1 (ko) 2018-09-07

Family

ID=55637479

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020177029607A KR101895388B1 (ko) 2015-04-15 2016-03-15 버스트 변환 룩―어사이드 버퍼

Country Status (6)

Country Link
US (1) US9836410B2 (ko)
EP (1) EP3283967B1 (ko)
JP (1) JP6317048B1 (ko)
KR (1) KR101895388B1 (ko)
CN (1) CN107533513B (ko)
WO (1) WO2016167912A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators
GB2565069B (en) * 2017-07-31 2021-01-06 Advanced Risc Mach Ltd Address translation cache
KR101942663B1 (ko) * 2017-09-28 2019-01-25 한국과학기술원 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5491806A (en) * 1990-06-26 1996-02-13 Lsi Logic Corporation Optimized translation lookaside buffer slice having stored mask bits
US5564052A (en) * 1991-06-27 1996-10-08 Integrated Device Technology, Inc. Logically disconnectable virtual-to-physical address translation unit and method for such disconnection
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US8707011B1 (en) * 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US20140281116A1 (en) * 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US7310721B2 (en) * 2003-10-30 2007-12-18 Microsoft Corporation Shadow page tables for address translation control
US7558939B2 (en) 2005-03-08 2009-07-07 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US7734892B1 (en) 2005-03-31 2010-06-08 Rozas Guillermo J Memory protection and address translation hardware support for virtual machines
US7426626B2 (en) * 2005-08-23 2008-09-16 Qualcomm Incorporated TLB lock indicator
US7822926B2 (en) 2007-04-16 2010-10-26 Arm Limited Cache memory
US9239799B2 (en) * 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
JP5526626B2 (ja) 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
WO2012015766A2 (en) 2010-07-28 2012-02-02 Rambus Inc. Cache memory that supports tagless addressing
US9405700B2 (en) 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US9092358B2 (en) * 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability
US9684601B2 (en) * 2012-05-10 2017-06-20 Arm Limited Data processing apparatus having cache and translation lookaside buffer
US9355040B2 (en) * 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5491806A (en) * 1990-06-26 1996-02-13 Lsi Logic Corporation Optimized translation lookaside buffer slice having stored mask bits
US5564052A (en) * 1991-06-27 1996-10-08 Integrated Device Technology, Inc. Logically disconnectable virtual-to-physical address translation unit and method for such disconnection
US5574877A (en) * 1992-09-25 1996-11-12 Silicon Graphics, Inc. TLB with two physical pages per virtual tag
US8707011B1 (en) * 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US20140281116A1 (en) * 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits

Also Published As

Publication number Publication date
US9836410B2 (en) 2017-12-05
US20160306746A1 (en) 2016-10-20
JP2018514861A (ja) 2018-06-07
EP3283967B1 (en) 2020-07-15
CN107533513B (zh) 2021-06-04
KR101895388B1 (ko) 2018-09-07
JP6317048B1 (ja) 2018-04-25
CN107533513A (zh) 2018-01-02
WO2016167912A1 (en) 2016-10-20
EP3283967A1 (en) 2018-02-21

Similar Documents

Publication Publication Date Title
US8589658B2 (en) Systems and methods for utilizing an extended translation look-aside buffer having a hybrid memory structure
US9454491B2 (en) Systems and methods for accessing a unified translation lookaside buffer
KR101895388B1 (ko) 버스트 변환 룩―어사이드 버퍼
US10747683B2 (en) Translation lookaside buffer switch bank
US20120297139A1 (en) Memory management unit, apparatuses including the same, and method of operating the same
US20050027961A1 (en) System and method for resolving virtual addresses using a page size tag
KR101559023B1 (ko) 메모리 페이지들의 일부에 저장된 메타데이터를 갖는 메모리
US8180965B2 (en) System and method for cache access prediction
JP2009512944A (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US20170091117A1 (en) Method and apparatus for cache line deduplication via data matching
US20120173843A1 (en) Translation look-aside buffer including hazard state
CN104704476A (zh) 减少异构计算系统中的冷tlb未命中
WO2021061446A1 (en) Storage management apparatus, storage management method, processor, and computer system
US10318436B2 (en) Precise invalidation of virtually tagged caches
CN114637700A (zh) 针对目标虚拟地址的地址转换方法、处理器及电子设备
KR102355374B1 (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US20140013054A1 (en) Storing data structures in cache
US20030225992A1 (en) Method and system for compression of address tags in memory structures
US20180081815A1 (en) Way storage of next cache line
US20140006747A1 (en) Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure
CN115934587B (zh) 内存管理单元和内存管理方法
EP3017374A1 (en) Lookup of a data structure containing a mapping between a virtual address space and a physical address space

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right