KR20120070591A - 다수의 가상 큐를 갖는 어드레스 변환 유닛 - Google Patents

다수의 가상 큐를 갖는 어드레스 변환 유닛 Download PDF

Info

Publication number
KR20120070591A
KR20120070591A KR1020127010491A KR20127010491A KR20120070591A KR 20120070591 A KR20120070591 A KR 20120070591A KR 1020127010491 A KR1020127010491 A KR 1020127010491A KR 20127010491 A KR20127010491 A KR 20127010491A KR 20120070591 A KR20120070591 A KR 20120070591A
Authority
KR
South Korea
Prior art keywords
address translation
entry
individual address
translation request
vmq
Prior art date
Application number
KR1020127010491A
Other languages
English (en)
Other versions
KR101324923B1 (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 KR20120070591A publication Critical patent/KR20120070591A/ko
Application granted granted Critical
Publication of KR101324923B1 publication Critical patent/KR101324923B1/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

어드레스 변환 유닛은 변환 색인 버퍼(TLB), 미스 큐 및 제어 유닛을 포함한다. TLB는 복수의 어드레스 변환을 저장할 수 있다. 미스 큐는 TLB 내에서 미스된, 수신된 어드레스 변환 요청들을 저장할 수 있다. 미스 큐는 복수의 엔트리를 포함할 수 있다. 적어도 일부의 엔트리는 각각 개별 어드레스 변환 요청 및 대응 식별자를 저장할 수 있다. 주어진 엔트리의 대응 식별자는 그 주어진 엔트리 내의 개별 어드레스 변환 요청의 프로세스 순서 제한조건과 동일한 프로세스 순서 제한조건을 갖는 다른 개별 어드레스 변환 요청을 저장하는 미스 큐 내의 다른 엔트리를 식별한다. 식별자를 통해 함께 링크되는 동일한 순서 제한조건을 갖는 어드레스 변환들은 동일한 가상 미스 큐에 속한다. 제어 유닛은 수신된 어드레스 변환 요청들을 식별자에 따른 순서로 처리할 수 있다.

Description

다수의 가상 큐를 갖는 어드레스 변환 유닛{ADDRESS TRANSLATION UNIT WITH MULTIPLE VIRTUAL QUEUES}
본 발명은 디지털 처리 시스템에 관한 것으로, 더 구체적으로는 그러한 시스템 내의 어드레스 변환 메커니즘들에 관한 것이다.
어드레스 변환은 종종 다수의 메모리 요청 소스 및 그 소스들에 의해 공유되는 메모리를 포함하는 시스템들에서 사용된다. 소스들은 프로세서들, 다양한 주변 장치들을 대신하여 동작하는 직접 메모리 액세스(DMA) 유닛들, 및/또는 주변 장치들 그 자체를 포함할 수 있다. 어드레스 변환은 상이한 소스들이 메모리에 대한 서로의 액세스를 방해하지 않을 것을 보장하고, (필요에 따라 메모리 안으로 및 밖으로 데이터를 페이지화하는 소프트웨어와 함께) 물리적 메모리에서 실제 이용가능한 것보다 큰 가상 메모리를 제공하고, (실제 메모리의 산재된 페이지들이 가상 메모리의 인접 블록처럼 보이는 것을 허용하는) 메모리의 동적 할당을 단순화하는 것 등을 위해 사용될 수 있다. 따라서, 주어진 소스는 가상 어드레스로 메모리 요청을 전송할 수 있으며, 어드레스 변환 메커니즘은 그 어드레스를 대응하는 물리적 어드레스로 변환할 수 있다.
전형적으로, 가상-대-물리 어드레스 변환들은 메모리 내에서, 소프트웨어로 관리되는 페이지 테이블들의 세트 내에 저장된다. 가상 어드레스는 (페이지 테이블의 베이스 어드레스에 대한) 인덱스로 사용될 수 있는데, 정확한 변환을 찾아내기 위해 페이지 테이블 엔트리 또는 엔트리들이 그로부터 판독된다. 일부 어드레스 변환 스킴들은, 변환을 찾기 위해 계층적 또는 비계층적 방식으로 다수의 페이지 테이블 판독을 사용한다. 다른 스킴들은 변환을 찾기 위해 단일 페이지 테이블 판독을 사용할 수 있다.
변환을 수행하기 위한 레이턴시는, 소스로부터의 메모리 요청에 응답한 신속한 액세스를 위해 최근 사용된 변환들을 캐싱하는 변환 색인 버퍼(translation lookaside buffer, TLB)를 제공함으로써 감소될 수 있다. 그러나, 일부 종래의 변환 메커니즘들에서는 TLB가 다수의 소스 간에 공유될 수 있으므로, 한 변환에서의 TLB 미스(miss)가 다른 무관한 변환 요청의 레이턴시를 증가시킬 수 있다. 이러한 유형의 레이턴시는 일부 시스템들에서는 허용되지 않을 수 있다.
다수의 가상 큐를 포함하는 어드레스 변환 유닛의 다양한 실시예가 개시된다. 일 실시예에서, 변환 유닛은 TLB(translation lookaside buffer), 미스 큐 및 제어 유닛을 포함한다. TLB는 복수의 어드레스 변환을 저장하도록 구성될 수 있다. 미스 큐(miss queue)는 TLB에서 미스된, 수신된 어드레스 변환 요청들을 저장하도록 구성될 수 있다. 미스 큐는 복수의 엔트리를 포함한다. 적어도 일부의 엔트리들은 개별 어드레스 변환 요청 및 대응 식별자를 저장하도록 각각 구성될 수 있다. 주어진 엔트리의 대응 식별자는 그 주어진 엔트리 내의 개별 어드레스 변환 요청의 프로세스 순서 제한조건(process ordering constraint)과 동일한 프로세스 순서 제한조건을 갖는, 다음으로 오래된 변환 요청과 같은 또 다른 개별 어드레스 변환 요청을 저장하는 미스 큐 내의 다른 엔트리를 식별한다. 예를 들어, 동일한 순서 제한조건을 가지며 식별자를 통해 함께 링크된 어드레스 변환들은 동일한 가상 미스 큐에 속한다. 제어 유닛은 수신된 어드레스 변환 요청들을 각각의 개별 어드레스 변환 요청의 식별자에 따른 순서로 처리하도록 구성될 수 있다.
도 1은 하나 이상의 어드레스 변환 유닛을 포함하는 시스템의 일 실시예의 블록도이다.
도 2는 도 1에 도시된 어드레스 변환 유닛의 일 실시예의 블록도이다.
도 3은 도 2에 도시된 어드레스 변환 유닛 미스 큐의 일 실시예의 블록도이다.
도 4a는 도 2 및 도 3의 미스 큐의 실시예 내의 다양한 엔트리들을 도시한 도면이다.
도 4b는 도 2 내지 도 4a의 미스 큐의 실시예 내의 3개의 가상 큐의 링크된 엔트리들을 도시한 아키텍처 도면이다.
도 5는 도 2 및 도 3의 미스 큐의 실시예 내의 엔트리의 동작 상태를 도시한 상태도이다.
도 6은 도 2 및 도 3에 도시된 어드레스 변환 유닛의 일 실시예의 동작을 도시한 흐름도이다.
본 발명이 다양한 수정 및 대안적인 형태들을 허용하긴 하지만, 그들의 구체적인 실시예들이 도면들에 예시로서 도시되어 있고 여기에 상세하게 설명될 것이다. 그러나, 도면들 및 그에 대한 상세한 설명은 본 발명을 개시된 특정한 형태로 제한하도록 의도된 것이 아니며, 반대로, 첨부된 청구항들에 의해 정의된 대로의 본 발명의 취지 및 범위 내에 드는 모든 수정, 균등물 및 대안들을 포함하도록 의도됨을 이해해야 한다. 여기에서 이용되는 제목들은 오직 체계화를 위한 것이며, 설명의 범위를 제한하기 위해 이용되도록 의도된 것이 아니다. 본 출원 전체에서 이용될 때, "~수 있다(may)"는 용어는 필수적이라는 의미(mandatory sense)(즉, 반드시 그러해야 함을 의미함)가 아니라, 허용적인 의미(permissive sense)(즉, ~일 가능성을 가짐을 의미함)로 이용된 것이다. 마찬가지로, "포함한다(include, including, includes)"라는 용어는 그에 제한된다는 것이 아니라 포함한다는 것을 의미한다.
다양한 유닛, 회로 또는 기타 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성되는(configured to)" 것으로서 설명될 수 있다. 그러한 맥락들에서, "~하도록 구성된다"는 것은 동작 동안 태스크 또는 태스크들을 수행하는 "회로망을 갖는다"는 것을 일반적으로 의미하는, 구조에 대한 폭넓은 기재이다. 그러한 것으로서, 유닛/회로/컴포넌트는 그 유닛/회로/컴포넌트가 현재 온(on) 상태가 아니더라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성된"에 대응하는 구조를 형성하는 회로망은 하드웨어 회로들을 포함할 수 있다. 마찬가지로, 설명에서의 편의를 위하여, 다양한 유닛/회로/컴포넌트가 태스크 또는 태스크들을 수행하는 것으로서 설명될 수 있다. 그러한 설명은 "~하도록 구성된"이라는 구문을 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성된 유닛/회로/컴포넌트에 관한 기재는 그 유닛/회로/컴포넌트에 대하여 35 U.S.C. §112의 6항의 해석을 적용하지 않도록 분명히 의도된 것이다.
이제 도 1을 보면, 시스템(10)의 일 실시예의 블록도가 도시된다. 시스템(10)은 컬러 액정 디스플레이(CLCD) 디스플레이 제어기(12), 비디오 인코더(14), 믹서(16), 스케일러(18), 비디오 디코더(20), 셰이더(22), 인터페이스 유닛(24), 어드레스 변환 유닛(26), 시스템 인터페이스 유닛(SIU)(28), 하나 이상의 고성능 주변 장치(30), 직접 메모리 액세스(DMA) 유닛(32), 하나 이상의 다른 주변 장치(34), 제2 어드레스 변환 유닛(36), 하나 이상의 사진 주변 장치(38), 프로세서(40), 및 메모리 제어기(42)를 포함한다.
도 1에 도시된 것과 같이, CLCD 디스플레이 제어기(12), 비디오 인코더(14), 믹서(16), 스케일러(18), 비디오 디코더(20) 및 셰이더(22)는, 시스템 인터페이스 유닛(28)에 더 연결되는 인터페이스 유닛(24)에 연결된다. 도시된 실시예에서, 인터페이스 유닛(24)은 도 1에 도시된 것과 같이, 어드레스 상호접속(11), 데이터 상호접속(13) 및 기입 응답 상호접속(15)을 포함하는 상호접속을 통해 시스템 인터페이스 유닛(28)에 연결된다. 어드레스 변환 유닛(26)은 어드레스 상호접속(11)에 연결되며, 인터페이스 유닛(24)에 의해 시스템 인터페이스 유닛(28)에 전송된 요청들의 어드레스들을 변환하도록 구성될 수 있다. 고성능 주변 장치들(30), DMA 유닛(32), 어드레스 변환 유닛(36), 프로세서(40) 및 메모리 제어기(42)는 시스템 인터페이스 유닛(28)에 연결된다. DMA 유닛(32)은 고성능 주변 장치들(30) 및 다른 주변 장치들(34)에 연결된다. 어드레스 변환 유닛(36)은 사진 주변 장치들(38)에 연결된다. 메모리 제어기(42)는 메모리(도시되지 않음)에 연결된다. CLCD 디스플레이 제어기(12)는 (아마도 도 1에 도시되지 않은 다른 컴포넌트들을 통해) CLCD에 연결된다. 일 실시예에서, 도 1에 도시된 것과 같은 시스템(10)은 SOC(system-on-a-chip)와 같은 단일 집적 회로 칩 상에 통합될 수 있다. 다른 실시예들에서, 도 1에 도시된 컴포넌트들을 제공하기 위해 둘 이상의 집적 회로가 사용될 수 있다. 다른 실시예들에서, 시스템(10)은 CLCD, 메모리 및 다양한 다른 컴포넌트들(예를 들어, 주변 인터페이스에 연결된 컴포넌트들)을 더 포함할 수 있다.
앞에서 언급된 것과 같이, 어드레스 변환 유닛(26)은 인터페이스 유닛(24)에 연결된 컴포넌트들 중 하나 이상에 의해 개시된 요청들에 대해 어드레스 변환을 제공할 수 있다. 예를 들어, 일 실시예에서, 어드레스 변환 유닛(26)은 CLCD 디스플레이 제어기(12), 비디오 인코더(14), 믹서(16), 스케일러(18) 및 셰이더(22)에 어드레스 변환을 제공할 수 있다. 그러나, 비디오 디코더(20)는 내부 어드레스 변환 메커니즘을 사용할 수 있다. 다른 실시예들은 희망에 따라 컴포넌트들의 상이한 부분집합들, 또는 컴포넌트들 전부에 대한 어드레스 변환을 위해 어드레스 변환 유닛(26)을 사용할 수 있다.
일반적으로, 어드레스 변환(또는 더 간결하게는 "변환")의 프로세스는, 어드레스 변환 유닛에 입력된 가상 어드레스를 메모리에 액세스하기 위해 사용될 수 있는 물리적 어드레스로 변경하는 것을 지칭할 수 있다. 물리적 어드레스가 가상 어드레스와 수치상 다른 경우가 많긴 하지만, 가상 어드레스를 수치상 동일한 물리적 어드레스로 맵핑하는 것이 가능하고, 이것은 종종 유니티 맵핑(unity mapping)이라고 지칭된다. 변환은 메모리 내의 하나 이상의 페이지 테이블에 저장되는 데이터에 기초하여 결정되며, 그 페이지 테이블들은 가상 어드레스들을 페이지 입도(page granularity)로 물리적 어드레스들로 맵핑한다. 소프트웨어는 페이지 테이블들의 내용들을 변경함으로써 가상 어드레스들의 물리적 어드레스들로의 맵핑을 제어할 수 있다. 페이지 크기들은 실시예마다 다를 수 있다. 다양한 실시예들에서 수 메가바이트 크기에 이르는 더 큰 페이지 크기들이 지원되긴 하지만, 예를 들어 4 킬로바이트가 전형적인 페이지 크기이다. 장래에, 훨씬 더 큰 페이지 크기들이 지원될 수 있다. 일부 실시예들에서, 다수의 페이지 크기들이 지원되며, 프로그래밍가능하게 선택가능하고/거나 동시에 사용되는 혼합된 크기들이 있을 수 있다. 가상 페이지로부터 물리적 페이지로의 특정 맵핑은 또한 변환으로 지칭될 수 있다.
어드레스 변환 유닛(26)은, 어드레스 변환 유닛(26)에 의해 최근 사용된 하나 이상의 변환을 캐싱할 수 있는 변환 색인 버퍼(예를 들어, 도 2에 도시된 TLB(70))를 포함할 수 있다. 일 실시예에서, TLB는 다수의 스테이지를 포함하는 파이프라인 구조로 구현될 수 있다. 따라서, TLB에서 히트된 가상 어드레스에 대해서는 낮은 레이턴시의 변환이 수행될 수 있으며, TLB에서 미스된 가상 어드레스에 대해서는 (변환을 획득하기 위해 메모리 내의 페이지 테이블들의 테이블 워크(table walk)가 필요하기 때문에) 다소 더 높은 레이턴시의 변환이 수행될 수 있다. 그러나, 이하에서 더 설명되는 것과 같이, 어드레스 변환 유닛(26)은 TLB에서 미스된 다수의 변환 요청이 동시에 진행되는 것을 허용함으로써 일부 변환들에 연관된 레이턴시들을 감소시킬 수 있는 TLB 미스 큐(예를 들어, 도 2의 MQ(64))를 이용할 수 있다.
어드레스 변환 유닛(26)이 어드레스 변환을 제공하는 컴포넌트들 중 하나 이상은 TLB내의 빈번한 미스를 용인할 수 없는 레이턴시 민감 컴포넌트들일 수 있다. 예를 들어, CLCD 디스플레이 제어기는 메모리로부터 데이터를 판독하여 CLCD 디스플레이 상에 이미지를 디스플레이할 수 있다(예를 들어, 프레임 버퍼 데이터). 이러한 메모리 판독 동작들의 어드레스들은 어드레스 변환 유닛(26)에 의해 변환될 수 있다. 디스플레이 제어기는 사용자가 볼 수 있도록 이미지를 디스플레이 상에 디스플레이하며, 데이터 판독 시의 예기치 않은 레이턴시는 디스플레이 상에 가시적 효과들을 야기할 수 있다. 비디오 인코더(14) 역시 비디오 디코더(20)만큼(비록 본 실시예에서는 비디오 디코더(20)가 그 자체의 어드레스 변환 유닛을 포함하긴 하지만) 메모리 판독 시의 레이턴시에 민감할 수 있다. 다양한 실시예들에서, 임의의 비디오 처리 유닛은 메모리 판독 레이턴시에 민감할 수 있다. 비디오 처리 유닛은 비디오 데이터를 처리하는 임의의 회로망일 수 있다. 비디오 처리 유닛들은 예를 들어, 디스플레이 제어기(12), 비디오 인코더(14), 믹서(16), 스케일러(18), 비디오 디코더(20) 및/또는 셰이더(22)를 포함할 수 있다. 비디오 처리 유닛들은 비디오 데이터를 처리하는 임의의 다른 회로망도 포함할 수 있다. 본 실시예에서, 디스플레이 제어기(12) 및 비디오 인코더(14)는 메모리 판독 지연에 민감하며, 다른 컴포넌트들은 레이턴시 민감하지 않거나 그들 자체의 어드레스 변환 유닛을 포함한다. 다른 실시예들은 더 많거나 적은 레이턴시 민감 비디오 처리 유닛들을 가질 수 있다.
따라서, TLB 미스 큐(도 2에 도시됨)는 진행 중인 TLB 미스들을 추적하고, 동일한 ARID를 갖는 변환들에 대해서 또는 모든 기입 변환들 사이에서 변환 요청 순서 제한조건들을 시행하면서 변환 요청들의 동시 처리를 허용한다. 도 2 내지 도 6의 설명과 함께 이하에서 더 상세하게 설명되는 것과 같이, 미스 큐는 물리적 미스 큐 저장소 구조 내에서 다수의 가상 미스 큐(VMQ)를 이용할 수 있다. 더 구체적으로는, 일 실시예에서 저장 유닛은 변환 요청들을 저장하는 다수의 엔트리를 포함할 수 있다. 미스 큐 내의 각각의 엔트리는 임의의 VMQ에 속하는 변환을 저장할 수 있다. 각각의 VMQ는 새로운 변환 요청들이 적절한 VMQ의 테일(tail)에 추가될 수 있는, 링크된 목록 유형의 데이터 구조로서 구현될 수 있다. 일 실시예에서, 각각의 엔트리는 동일 VMQ 내의 다음의 순차적인 변환 요청이 저장되는 미스 큐 엔트리를 식별하기 위한 포인터를 포함할 수 있다. 주어진 VMQ 내의 각각의 변환 요청은 동일한 프로세스 순서 제한조건들을 가질 수 있으며, 포인터들에 의해 지정된 순서로 처리될 수 있다. 그러나, 상이한 VMQ들 내의 변환 요청들은 서로를 저지할 수 없으며, 준비된 요청들은 이하에서 더 설명되는 것과 같은 선택 메커니즘을 사용하여 선택될 수 있다.
도 1에 도시된 것과 같이, 어드레스 변환 유닛(26)은 어드레스, 식별자 및 유형(예를 들어, 판독/기입)을 포함할 수 있는 어드레스 상호접속(11)을 수용할 수 있다. 또한, 다양한 실시예들에서, 다양한 다른 정보(예를 들어, 크기)도 물론 요청에 포함될 수 있다. 일 구현에서, 어드레스 상호접속(11)은 판독 및 기입 요청들에 대해 별개의 채널들을 포함할 수 있다. 따라서, 판독 어드레스, 기입 어드레스, 판독 식별자 및 기입 식별자가 존재할 수 있다. 요청의 판독/기입 속성은 요청을 전송하기 위해 채널들 중 어느 것이 사용되고 있는지로부터 추론될 수 있다. 다른 실시예들은 다른 상호접속들, 패킷 기반 상호접속 등을 사용할 수 있다. 예를 들어, 하나의 어드레스 및 판독/기입 표시를 전송하는 어드레스 상호접속이 사용될 수 있다.
다양한 실시예들에서, 데이터 상호접속(13)은 기입 데이터 채널 및 판독 데이터 채널을 포함할 수 있으며, 또는 양방향 상호접속일 수 있다. 어드레스 변환 유닛(26)은 데이터 상호접속(13)에 연결되어 TLB 미스들에 대한 테이블 워크들로부터 판독 데이터를 수신할 수 있다. 기입 응답 상호접속(15)은 기입 요청들에 대한 응답들(예를 들어, 완료 표시)을 공급한다.
인터페이스 유닛(24)은 컴포넌트들(12, 14, 16, 18, 20 및 22)로부터 요청들(또는 요청들이 전송될 준비가 되었다는 표시들)을 수신할 수 있으며, 충돌이 있는 경우 요청들 사이에서 중재하도록 구성될 수 있다. 인터페이스 유닛(24)은 어드레스 상호접속 상에서 요청들을 전송하고 대응하는 기입 데이터 및 판독 데이터를 데이터 상호접속에/으로부터 라우팅하도록 구성될 수 있다. 수신된 기입 응답들은 대응하는 기입 요청의 소스에 라우팅될 수 있다.
시스템 인터페이스 유닛(28)은 시스템(10)의 다양한 컴포넌트들에 접속되며 그 사이에서 통신을 제공하는 "최상위 레벨" 인터페이스일 수 있다. 시스템 인터페이스 유닛은 시스템(10) 내의 다른 컴포넌트들에 연결되기 위해 인터페이스 유닛(24)에 관해 도시된 것과 유사한 상호접속을 가질 수 있다.
CLCD 디스플레이 제어기(12)는 CLCD 상에 디스플레이된 이미지를 제어하도록 구성된다. 예를 들어, 메모리에 저장된 프레임 버퍼는 디스플레이의 각각의 화소가 나타내야 하는 색상을 식별하는 데이터를 저장할 수 있으며, 디스플레이 제어기(12)는 프레임 버퍼를 판독하고 프레임 버퍼에 의해 묘사된 이미지를 디스플레이 상에 디스플레이할 수 있다. 도 1에는 CLCD 디스플레이 제어기가 도시되어 있지만, 다른 실시예들은 임의의 유형의 디스플레이를 제어하도록 구성되는 임의의 디스플레이 제어기를 구현할 수 있다.
비디오 인코더(14)는 임의의 희망되는 코딩 스킴을 사용하여 비디오 스트림들을 인코딩하도록 구성될 수 있다. 인코딩 스킴들은 MPEG(motion picture experts group) 버전 1 내지 4 또는 임의의 후속 버전, 또는 임의의 다른 비디오 압축 또는 코딩 스킴을 포함할 수 있다. 마찬가지로, 비디오 디코더(20)는 임의의 희망되는 코딩 스킴을 사용하여 인코딩된 비디오 스트림들을 디코딩하도록 구성될 수 있다. 본 실시예에서는 비디오 디코더(20)가 그 자체의 어드레스 변환 유닛을 포함하지만, 다른 실시예들은 어드레스 변환 유닛(26)을 사용하는 비디오 디코더(20)를 포함할 수 있다. 그러한 실시예들에서, 비디오 디코더(20)는 레이턴시 민감 요청 소스일 수 있으며, 그것에 할당된 진로(way) 또는 진로들을 TLB 메모리의 레이턴시 민감 구획 내에 가질 수 있다.
믹서(16)는 비디오 믹싱 동작들을 수행하도록 구성될 수 있다. 스케일러(18)는 비디오 스케일링 동작들을 수행하도록 구성될 수 있다. 셰이더(22)는 화소 셰이딩 동작들을 수행하도록 구성될 수 있다. 일반적으로, 믹싱, 스케일링 및 셰이딩은 디스플레이를 위해 프레임을 생성하는 것의 일부일 수 있다.
고성능 주변 장치들(30)은, 적어도 시스템(10) 내의 다른 주변 장치들에 비해, 시스템 인터페이스 유닛(28) 상에 상당한 대역폭을 발생시킬 것으로 예상되는 다양한 주변 장치들을 포함할 수 있다. 예를 들어, 일 실시예에서, 고성능 주변 장치들은, 이더넷 MAC과 같은 네트워킹 미디어 액세스 제어기(MAC), WiFi(wireless fidelity) 제어기, 및 USB(universal serial bus) 제어기를 포함할 수 있다. 다른 실시예들은 더 많거나 적은 주변 장치들을 포함할 수 있으며, 주변 장치들을 다르게 분류하고/거나 배치할 수 있다. 예를 들어, MAC 및 USB 제어기는 중간 성능 주변 장치들일 수 있는 반면에, WiFi 제어기는 저성능 주변 장치일 수 있다. 다른 주변 장치들(34)은 오디오 서브시스템, 플래시 메모리 인터페이스, 범용 입력/출력(I/O) 타이머들, 온 칩 비밀 메모리, 암호화 엔진 등, 또는 그들의 임의의 조합과 같은 다양한 더 낮은 대역폭의 주변 장치들을 포함할 수 있다. DMA 유닛은 고성능 주변 장치들(30) 및 다른 주변 장치들(34)을 대신하여 메모리 제어기(42)를 통한 메모리로의 및 메모리로부터의 전송들을 수행하도록 구성될 수 있다.
일 실시예에서, 어드레스 변환 유닛(36)은, 카메라 인터페이스, JPEG(joint photographic experts group) 코더/디코더(코덱), 및 비디오 인코더를 포함할 수 있는 사진 주변 장치들(38)로부터의 어드레스들을 변환하도록 구성될 수 있다. 다른 실시예들은 다른 세트들의 사진 주변 장치들(38)을 포함할 수 있다. 일 실시예에서는 어드레스 변환 유닛(36)이 어드레스 변환 유닛(26)에서 사용되는 것과 유사한 마이크로아키텍처를 사용하여 구현될 수 있지만, 다른 구현들도 고려된다.
프로세서(40)는 임의의 명령어 세트 아키텍처를 구현할 수 있으며, 그 명령어 세트 아키텍처 내의 명령어들을 실행하도록 구성될 수 있다. 프로세서(40)는 스칼라, 수퍼스칼라, 파이프라인, 수퍼파이프라인, 무순서적(out of order), 순서적(in order), 추측적(speculative), 비-추측적(non-speculative) 등, 또는 그들의 조합들을 포함하는 임의의 마이크로 아키텍처를 이용할 수 있다. 프로세서(40)는 회로망을 포함할 수 있으며, 선택적으로 마이크로코딩 기법들을 구현할 수 있다.
메모리 제어기(42)는 (도 1에 도시된 것과 같은 하나 이상의 다른 컴포넌트로부터 요청들을 수신했을 수 있는) 시스템 인터페이스 유닛(28)으로부터 메모리 요청들을 수신하도록 구성될 수 있다. 메모리 제어기(42)는 메모리에 액세스하여 요청들을 완료할 수 있다(기입 요청에 대해 수신된 데이터를 메모리에 기입하거나, 판독 요청에 응답하여 메모리로부터 데이터를 제공). 메모리 제어기(42)는 DRAM(dynamic random access memory), SDRAM(synchronous DRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM, RDRAM(RAMBUS DRAM), SRAM(static RAM) 등과 같은 임의의 유형의 메모리와 인터페이스하도록 구성될 수 있다. 메모리는 DIMM(dual inline memory module)들과 같이, 다수의 메모리 뱅크로서 구성될 수 있다.
다른 실시예들은 도 1에 도시된 컴포넌트들 및/또는 다른 컴포넌트들의 부분집합들 또는 확대집합들을 포함하는, 컴포넌트들의 다른 조합들을 포함할 수 있다는 것에 유의한다. 도 1에서는 주어진 컴포넌트의 하나의 인스턴스가 도시될 수 있지만, 다른 실시예들은 주어진 컴포턴트의 하나 이상의 인스턴스를 포함할 수 있다. 또한, 다른 다양한 실시예들에서, 시스템 인터페이스 유닛(28)에 연결될 수 있는 그 다른 컴포넌트들 또는 다른 컴포넌트들의 일부분들은 또한 인터페이스 유닛(24)과 유사한 인터페이스 유닛(도시되지 않음)을 통해 연결될 수 있다. 대안적으로, 인터페이스 유닛(24)은 제거될 수 있으며, 거기에 연결된 컴포넌트들이 시스템 인터페이스 유닛(28)에 직접 연결될 수 있다. 그러나, 그러한 대안적 실시예들에서, 접속의 어드레스 부분은 어드레스 변환 유닛(26)을 포함할 수 있다.
도 2를 참조하면, 어드레스 변환 유닛(26)의 일 실시예의 블록도가 도시된다. 도 2의 실시예에서, 어드레스 변환 유닛(26)은 제어 유닛(60), 다중화기 유닛(mux)(50), 중재자(52), 미스 큐(MQ)(64), TLB(70) 및 물리적 어드레스 출력 레지스터들(81 및 82)을 포함한다. 도시된 것과 같이, 제어 유닛(60)은 mux(50)에 연결된다. 위에서 설명된 것과 같이, 제어 유닛(60) 및 mux(50)는 둘 다 판독 어드레스 및 판독 식별자(RID), 및 기입 어드레스 및 기입 식별자(WID)를 수신하도록 연결된다. mux(50)는 MQ(64)에 연결되고, mux 선택 입력은 중재자(52)에 연결된다. MQ(64)는 TLB(70) 및 출력 레지스터들(81 및 82)에 연결된다. TLB(70)의 출력도 출력 레지스터들(81 및 82)에 연결된다. 마지막으로, TLB(70)는 SIU(28)로부터 판독 데이터를 수신하도록 연결된다.
제어 유닛(60)은 어드레스 변환 유닛 클럭의 각각의 클럭 사이클 내에 엔트리를 할당할 수 있어서, 변환 요청이 도달하면, 엔트리는 이미 할당되어 있다. 어드레스 변환 요청이 인터페이스 유닛(24)으로부터 수신되면, 비록 TLB(70) 내에 히트가 있을 수 있더라도, 변환이 TLB 파이프라인을 통해 이동할 때의 수 개의 사이클 동안 그것은 MQ(64) 내의 할당된 엔트리에 저장된다. 도 5의 설명과 함께 이하에서 더 상세하게 설명되는 것과 같이, 히트가 있는 경우, 물리적 어드레스가 출력 레지스터들(81 및 82)을 통해 SIU(28)에 제공될 때, 엔트리는 유휴 상태로 될 수 있다. 그러나, TLB 미스가 있는 경우, 변환이 수행되고 있는 동안 변환은 MQ(64)에 머물 수 있다. 변환이 완료되고 판독 데이터가 TLB(70) 내에 제공되면, 변환이 재시도될 수 있다. 제어 유닛(60)은 TLB 충만을 통지받을 수 있으며, 그에 응답하여, 제어 유닛(60)은 대응하는 엔트리를 준비 또는 "큐잉" 상태로 전환할 수 있다. 일 실시예에서, 준비된 수 개의 변환이 있을 수 있다. 따라서, 각 사이클에서, 중재자(52)는 예를 들어 각각의 준비된 변환이 얼마나 오래되었는지와 같은 인자들에 따라, 어느 준비된 변환이 재시도될 수 있는지를 결정할 수 있다.
일 실시예에서, MQ(64)는 다수의 엔트리를 포함할 수 있다. MQ(64)는 MQ 식별자(MQID)를 사용하여 어드레스될 수 있는데, 그 MQID는 각각의 변환 어드레스 변환 유닛(26)에 입력될 때 그것에 할당될 수 있다. 각각의 엔트리는 임의의 유형의 변환을 저장할 수 있다. 그러나, 동일 RID를 갖는 판독 어드레스 변환 요청들, 및 모든 기입 어드레스 변환 요청들은 어떤 순서 제한조건들을 따라야 한다. 예를 들어, 일 실시예에서, 주어진 RID 값을 갖는 모든 판독 어드레스 전환들은 그들이 인터페이스(24) 상에 나타난 것과 동일한 순서로 SIU(28) 상에 나타나야 하며, 모든 기입 어드레스 전환들은 WID 값과 무관하게, 그들이 인터페이스(24) 상에 나타난 것과 동일한 순서로 SIU(28) 상에 나타나야 한다. 따라서, 이하에서 더 설명되는 것과 같이, 일 실시예에서 동일 RID를 갖는 판독 변환들은 함께 링크되어 가상 미스 큐(VMQ)를 형성할 수 있다. 마찬가지로, 모든 기입 변환 요청들은 함께 링크되어 단일 VMQ를 형성할 수 있다. 따라서, 주어진 VMQ 내의 어드레스 변환들은 동일한 순서 제한조건들을 가지며, 특정한 순서(예를 들어, 그들이 수신된 순서)로 처리되어야 한다. 그러나, 상이한 VMQ들 내의 변환 요청들은 그렇지 않다. 따라서, 상이한 VMQ들에 걸쳐서, 변환 요청들은 임의의 순서로 처리될 수 있다. 제어 유닛(60)은 각각의 엔트리에 연관된 정보에 액세스함으로써, 주어진 VMQ 내의 각각의 변환의 위치를 추적할 수 있다.
이하에서 도 3의 설명과 함께 더 설명되는 것과 같이, 변환이 MQ(64) 내에 저장될 때, 그것은 트랜잭션이 어느 RID 또는 WID, 따라서 어느 VMQ에 속하는지를 식별할 수 있는 상태 정보와 함께 저장될 수 있다. 정보는 주어진 엔트리가 VMQ의 헤드 또는 테일인지도 식별할 수 있다. 정보는 또한 주어진 VMQ 내에서 다음으로 오래된 변환을 나타내는 포인터를 포함할 수 있다.
도 3을 보면, 도 2의 어드레스 변환 미스 큐(64)의 일 실시예의 블록도가 도시되어 있다. 도 3의 MQ(64)는 변환들을 저장하기 위한 다수의 엔트리를 포함하는 저장소이다. 도시된 실시예에서, MQ(64)는 0 내지 15로 번호가 매겨진 16개의 엔트리를 포함한다. 각각의 엔트리는 변환 가상 어드레스(313), 판독 식별자(RID)(301), 기입 표시자(Wr), 연령 표시자(Age)(305), 테일 표시자(307), 상태 표시자(309) 및 VMQ 포인터(Ptr)(311)를 포함한다. 일 실시예에서, 모든 기입 변환들은 동일 VMQ에 속하기 때문에 별개의 WID 저장소는 필요하지 않다. 대신에, 단일 기입 비트가 사용될 수 있다. 그러나, 다른 실시예들에서는 희망에 따라, 추가의 WID 저장소가 Wr 표시자 대신에 또는 Wr 표시자에 추가하여 사용될 수 있다.
다양한 실시예들에서, MQ(64)를 구성하는 저장소는 임의의 유형의 저장소로서 구현될 수 있다. 예를 들어, 일 실시예에서는 MQ(64)가 단일 포트 16-엔트리 레지스터 파일을 사용하여 구현될 수 있지만, 다른 개수의 엔트리도 사용될 수 있다. 각각의 엔트리는 위에서 설명된 것과 같은 MQID를 통해 독립적으로 어드레스될 수 있다. 임의의 유형의 메모리 장치가 사용될 수 있긴 하지만, 레지스터 파일은 정적 RAM(random access memory) 계통의 RAM 어레이를 사용하여 구현될 수 있다. 또한, 비록 MQ(64) 내의 각각의 엔트리는 정보 필드들 전부를 포함하는 것으로 도시되어 있지만, 일부 실시예들에서는, 예를 들어 VMQ Ptr(311) 및 RID(301)와 같은 정보의 일부가 각각의 엔트리와 동시에 액세스되는 별개의 레지스터들에 저장될 수 있음이 고려된다.
위에서 기술한 것과 같이, 제어 유닛(60)은 MQID를 사용하여 MQ(64)에 액세스할 수 있다. 예시된 실시예에서, MQID는 4-비트 식별자이며, 그것의 각각의 카운트는 16개의 엔트리 중 하나에 대응한다. RID(301)는 주어진 엔트리가 어느 판독 VMQ에 속하는지를 나타낼 수 있다. 이하에서 더 설명되는 것과 같이, 일 실시예에서 동일한 RID를 갖는 모든 변환들은 동일 VMQ에 속하며, 모든 기입들은 하나의 VMQ에 속한다. Wr 표시자(303)는 변환이 기입 변환인지를 나타낸다. 연령 표시자(305)는 각각의 다른 엔트리에 대한 각각의 엔트리의 연령을 나타낸다. 예를 들어, 일 실시예에서, 연령 표시자(305)는 MQ(64) 내의 16개의 엔트리에 대응하는 4-비트 표시자일 수 있다. 테일 표시자(307)는 엔트리가 주어진 VMQ의 테일인지를 나타낼 수 있으며, 일 실시예에서 테일 표시자(307)는 단일 비트일 수 있다. 상태 표시자(309)는 엔트리의 현재 상태를 나타낸다. 이하에서 더 상세하게 설명되는 것과 같이, MQ(64)의 각각의 엔트리는 6개의 상태 중 하나일 수 있다. 따라서, 일 실시예에서, 상태 표시자(309)는 3-비트 표시자일 수 있다. 어드레스(313)는 변환 요청의 소정 개수의 가상 어드레스 비트를 저장할 수 있다.
연령 표시자(305)는, MQ(64) 내에 N개의 엔트리가 존재하는 경우 연령 표시자들(305)이 0(가장 최근의 엔트리)으로부터 N-1(가장 오래된 엔트리)까지의 연속적인 값들을 포함하도록, 각각의 엔트리의 연령을 추적할 수 있다. 따라서, 일 실시예에서 연령 표시자(305)는 4-비트 값일 수 있다. 각각의 엔트리가 한 VMQ에 링크되므로, 그 엔트리에 대한 연령 표시자(305)는 0으로 설정될 수 있으며, 모든 다른 유효한 엔트리들의 연령 표시자들(305)은 1씩 증가된다. 변환이 완료되는 때와 같이 변환이 삭제될 때, 모든 더 오래된 유효한 엔트리들의 연령 표시자들(305)은 1씩 감소된다.
위에서 설명된 것과 같이, 동일한 RID를 갖는 모든 엔트리들은 동일 VMQ에 속하며, 모든 기입 엔트리들은 하나의 VMQ에 속한다. 따라서, 특정 VMQ 내의 각각의 엔트리는 링크된 목록 유형 구조 내에서 포인터를 사용하여 함께 링크될 수 있다. 따라서, Ptr(311)은 주어진 VMQ 내에서 다음으로 가장 오래된 엔트리를 가리키는 값을 갖는 VMQ 포인터이다. 엔트리가 VMQ의 헤드인 경우, 포인터 값은 그 자체를 가리킨다. 엔트리가 VMQ의 테일인 경우, 포인터 값은 그 VMQ 내의 다음으로 오래된 엔트리를 가리킨다. 포인터가 테일에서 출발하여, 목록 내에서 헤드에 이를 때까지 다음으로 가장 오래된 것을 순방향으로 가리키기 때문에, 이러한 유형의 포인터 메커니즘은 역방향 포인터라고 지칭될 수 있다. MQ(64) 내의 엔트리들과 함께 VMQ에 속하는 변환이 수신될 때마다, 새로운 변환이 목록의 테일에 첨부될 수 있다. 예를 들어, 엔트리가 할당되고, 어드레스가 저장된다. 제어 유닛(50)은 이전 테일 엔트리의 테일 표시자(307)를 리셋하고, 새로운 엔트리의 테일 표시자(307)를 설정하며, 새로운 엔트리의 VMQ Ptr(311) 값이 이전 테일 엔트리를 가리키게 한다. 헤드 엔트리가 큐로부터 삭제될 때, 제어 유닛(50)은 VMQ 내의 다음의 더 최근의 엔트리의 포인터를 갱신하고 VMQ Ptr(311)이 그 자체를 가리키게 한다. 즉, 제어 유닛(50)은 다음의 더 최근의 값의 엔트리 MQID 값을 VMQ Ptr(311)에 기입한다.
대안적 실시예에서, 링크된 VMQ Ptr(311)은 VMQ 내의 다음의 가장 최근의 엔트리를 가리킬 수 있음이 고려된다. 따라서, 그러한 실시예에서, 링크된 엔트리들은 헤드 엔트리에서 출발하여 테일에 이를 때까지 다음의 가장 최근의 엔트리를 연속적으로 가리킬 수 있다. 또한, 테일 표시자 대신에 헤드 표시자가 사용될 수 있으며, 테일 엔트리의 VMQ 포인터 값은 그 자체를 가리킬 수 있다.
상기 역방향 VMQ 엔트리 링킹을 예시하기 위해, MQ(64)의 예시적인 실시예가 도 4a에 도시된다. 도 4a를 참조하면, MQ(64)는 16개의 엔트리를 포함한다. 그러나, 단순성을 위해 정보의 부분집합만이 여기에 도시된다. 도시된 것과 같이, MQ(64)는 각각 3개의 엔트리를 갖는 3개의 능동 가상 미스 큐를 포함한다. 3개의 VMQ는 RID 값 또는 Wr 표시자에 의해 식별된다. 더 구체적으로는, 하나의 VMQ는 1인 RID를 갖는 3개의 엔트리를 포함하며(VMQ1), 제2 VMQ는 5인 RID를 갖는 엔트리들을 포함하며(VMQ 5), 제3 VMQ는 하나의 논리값으로 설정된 Wr 표시자를 갖는 그러한 엔트리들을 포함한다(VMQ W).
도시된 것과 같이, VMQ 1의 테일 엔트리는 테일 표시자가 설정된 것에 의해 입증되는 대로 엔트리 4에 위치한다. VMQ Ptr 값은 14이며, 따라서 VMQ 1에서 다음으로 가장 오래된 엔트리를 가리킨다. 엔트리 14 내의 VMQ Ptr 값은 0이며, 이는 VMQ 1 내의 다음으로 가장 오래된 엔트리를 가리키며 엔트리 0에 위치한다. 엔트리 0 내의 VMQ Ptr 값은 0이다. 이것은 엔트리 0이 VMQ 1의 헤드임을 나타낸다(또한 도 4a 에서 'H'에 의해 그렇게 나타남).
마찬가지로, VMQ 5의 테일 엔트리는 테일 표시자가 설정된 것에 의해 입증되는 대로 엔트리 15에 위치한다. VMQ Ptr 값은 9이며, 따라서 VMQ 1에서 다음으로 가장 오래된 엔트리를 가리킨다. 엔트리 9 내의 VMQ Ptr 값은 1이며, 이는 VMQ 1 내의 다음으로 가장 오래된 엔트리를 가리키며 엔트리 1에 위치한다. 엔트리 1 내의 VMQ Ptr 값은 1이다. 이것은 엔트리 1이 VMQ 1의 헤드임을 나타낸다. VMQ W에서, 테일 엔트리는 테일 표시자가 설정된 것에 의해 입증되는 대로 엔트리 8에 위치된다. VMQ Ptr 값은 2이며, 따라서 VMQ W 내의 다음으로 가장 오래된 엔트리를 가리킨다. 엔트리 2 내의 VMQ Ptr 값은 5이며, 이는 VMQ W 내의 다음으로 가장 오래된 엔트리를 나타내며 엔트리 5에 위치한다. 엔트리 5 내의 VMQ Ptr 값은 5이다. 이것은 엔트리 5가 VMQ W의 헤드임을 나타낸다. 또한, 각각의 VMQ 내에서, 테일 엔트리는 가장 최근의 것이며(즉, 가장 낮은 연령 값을 가짐), 헤드 엔트리는 가장 오래된 것(즉, 가장 높은 연령 값을 가짐)이다.
도 4b에서, 도 4a의 MQ(64)의 실시예 내의 3개의 VMQ의 링크된 엔트리들을 도시한 단순화된 아키텍처 도면이 도시된다. 도 4b를 참조하면, VMQ 1는 최상위에 있고, VMQ 5는 중간에 있고, VMQ W는 최하단에 있다. 각각의 박스는 MQ(64) 내의 엔트리를 나타내고, 박스 내부의 숫자는 엔트리 번호 또는 MQID를 나타내며, 화살표 숫자는 도 4a의 VMQ Ptr(311)을 나타낸다. 위에서 기술되고 도 4b에 도시된 것과 같이, VMQ 1의 테일은 엔트리 4이며, 이는 엔트리 14를 가리키며, 이는 엔트리 0를 카리키며, 이는 그 자체를 가리키므로 VMQ 1의 헤드이다. 나머지 VMQ들(예를 들어, VMQ 5 및 VMQ W)은 유사하게 링크되며, 더 기술되지 않는다.
도 5를 보면, MQ(64)의 한 특정한 실시예 내에서의 엔트리의 동작 상태들을 도시하는 상태도가 도시되어 있다. 도면에 도시되고 위에서 언급된 것과 같이, MQ(64) 내의 각각의 엔트리는 6개의 상태 중 하나에 있을 수 있다. 상태들은 유휴(501), 할당(503), 초기(505), 페이지 테이블 엔트리(PTE) 페치(509), 충만 대기(Fill Wait)(511) 및 큐잉(507)을 포함한다. 도 2의 제어 유닛(60)은 아래에 더 설명되는 것과 같이 엔트리의 상태를 변경할 조건에 응답하여, 각각의 엔트리 내의 상태 표시자를 갱신할 수 있다.
유휴 상태는 엔트리가 변환을 추적하고 있지 않을 때 사용될 수 있다. 유휴 엔트리는 엔트리가 필요한 경우에 할당될 수 있는 빈 엔트리와 유사하다. 할당 상태의 엔트리는 변환 요청이 수신된 경우에 제어 유닛에 의해 사용되도록 할당된 것이다. 일 실시예에서, 각 사이클마다, 제어 유닛(60)은 변환 요청이 도달한 경우에 변환 요청을 받아들이기 위해 MQ(64) 내의 한 엔트리를 할당할 수 있다. 일 실시예에서, 엔트리는 한 사이클 동안 할당 상태로 머무를 수 있고, 엔트리가 필요하지 않은 경우, 그것은 사이클의 끝에서 유휴 상태로 복귀될 수 있다. 엔트리가 할당 상태로 있는 동안 변환 요청이 도달한 경우, 그 엔트리는 변환을 받아들이고, 엔트리는 초기 상태로 전환될 것이다. 일 실시예에서, 변환이 최초 액세스이든 재시도이든 간에 TLB 액세스를 할 때마다, 상태가 재계산될 수 있다. 엔트리는 TLB 액세스의 결과에 따라 4개의 상태(예를 들어, 유휴, PTE 페치, 충만 대기 또는 큐잉) 중 하나로 전환할 것이다.
변환 요청이 TLB 미스를 확인하기 위해 TLB 파이프라인을 따라 내려가는 동안, 엔트리는 다수의 사이클 동안 초기 상태로 머무를 수 있다. 일 실시예에서, 엔트리는 히트 또는 미스 표시를 기다리면서 4 사이클 동안 초기 상태로 머무를 수 있다. 초기 상태의 엔트리는 TLB 액세스의 결과에 따라 4개의 다른 상태 중 하나로 전환할 수 있다. 더 구체적으로, TLB 히트가 존재하고 변환이 완료되는 경우, 엔트리는 유휴로 전환한다. TLB 미스가 존재하고 PTE 페치가 시작되는 경우, 엔트리는 PTE 페치 상태로 전환한다. TLB 미스가 존재하지만 소정의 다른 엔트리는 동일한 PTE가 페치되기를 기다리면서 PTE 페치 상태로 있는 경우, 엔트리는 충만 대기 상태로 전환할 수 있다. TLB 히트가 존재하지만 예를 들어 순서 제한조건, 버스 비지 등과 같은 이유로 인해 변환이 완료될 수 없는 경우, 엔트리는 큐잉 상태로 전환할 수 있다.
PTE 페치 상태 내의 엔트리가 메모리에 PTE 페치 요청을 보냈고, 그 요청에 대하여 변환 데이터를 기다리고 있다. 데이터가 TLB에 리턴될 때, TLB는 제어 유닛(60)에게 충만 통지로 알릴 수 있다. 엔트리는 큐잉 상태로 전환될 수 있다.
큐잉 상태의 엔트리는 TLB의 변환 재시도 액세스의 수행을 재시도하기 위해 차례를 기다리고 있다. TLB 충만이 발생하거나 TLB 히트가 존재할 때, 그 엔트리는 재시도할 준비가 되어 있지만, 위에서 설명된 것과 같이 엔트리는 재시도될 다음 엔트리가 아닐 수 있다. 재시도가 수행되고 변환이 행해지고 나면, 엔트리는 유휴 상태로 전환할 수 있다.
충만 대기 상태로 전환한 엔트리는 TLB 미스 후에 TLB 충만을 기다리고 있지만, 동일한 PTE를 위한 PTE 페치가 다른 엔트리 내의 다른 변환 요청에 의해 이미 발행되어 있다. 변환 데이터가 TLB에 리턴될 때, TLB는 제어 유닛(60)에 충만 통지로 알릴 수 있다. 엔트리는 큐잉 상태로 전환할 수 있다.
도 6은 도 2 내지 도 5에 도시된 어드레스 변환 유닛의 일 실시예의 동작을 도시한 흐름도이다. 도 2 내지 도 6을 총괄하여 참조하고, 도 6의 블록(601)에서 시작하면, MQ(64) 내의 모든 엔트리는 유휴 상태이다. 각각의 버스 사이클에서, 제어 유닛(60)은 변환 요청이 수신된 경우에, MQ(64) 내의 한 엔트리(중재자(52)에 의해 선택됨)를 할당 상태로 전환할 수 있다(블록(603)). Rd 또는 Wr 변환 요청이 수신되지 않는 경우(블록(605)), 제어 유닛(60)은 사이클의 끝에서 그 엔트리를 다시 유휴 상태로 전환할 수 있다(블록(607)).
그러나, 변환 요청이 수신된 경우(블록(605)), 제어 유닛(60)은 변환을 할당된 엔트리 내에 저장하고(블록(609)), 그 엔트리를 초기 상태로 전환할 수 있다. 변환이 TLB 파이프라인에 진입하고, TLB(70) 내의 히트 또는 미스가 표시되는 동안, 엔트리는 초기 상태로 머무를 수 있다.
제어 유닛(60)은, 임의의 스테이지에서, 제1 또는 임의의 선행 변환이 MQ(64) 내에 있는 동안, 동일한 RID를 갖는 제2 또는 후속 판독 변환 요청, 또는 제2 또는 후속 기입 변환이 수신되는 경우(블록(631)), 제2 또는 후속 요청(들)을 MQ(64)의 다음 할당된 엔트리 내에 저장하도록 구성된다(블록(633)). 그 다음, 제어 유닛(60)은 엔트리 상태 정보를 기입하여 그 엔트리를 초기 상태로 전환하고(블록(635)), 선행 테일 엔트리의 MQID를 새로운 엔트리의 VMQ Ptr에 기입함으로써 그 엔트리를 적합한 VMQ의 테일에 첨부한다(블록(637)). 제어 유닛(60)은 또한 테일 표시자로 하여금 새로운 엔트리가 현재 테일임을 표시하게 한다(블록(634)). 따라서, 블록(631)은 이것이 동작 흐름 내의 어디에서든 발생할 수 있다는 것을 나타내기 위해 점선으로 도시되어 있다. 일단 새로운 엔트리가 기존 VMQ의 일부분이게 되면, 동작 흐름의 나머지는 임의의 엔트리에 적용된다.
TLB 히트가 존재하고(블록(613)), 변환이 행해진 경우(블록(615)), 제어 유닛(60)은 엔트리를 다시 유휴 상태로 전환할 수 있다(블록(607)). 엔트리가 다른 엔트리들을 갖는 VMQ의 일부분이 아닌 경우(블록(641)), 동작은 위에서 블록(603)과 함께 설명된 것과 같이 진행한다. 그러나, 엔트리가 다른 엔트리들을 갖는 VMQ의 일부분인 경우(블록(641)), 제어 유닛(60)은 VMQ 내의 다음의 더 최근의 엔트리에 액세스하고, 다음의 더 최근의 엔트리의 MQID를 VMQ Ptr(311) 내에 기입하여, 그 엔트리를 VMQ의 헤드로 할 수 있다(블록(643)). 동작은 위에서 블록(603)과 함께 설명된 것과 같이 진행한다.
블록(615)을 다시 참조하면, 위에서 설명된 것과 같은 이유로 인해 변환이 행해지지 않는 경우, 제어 유닛(60)은 엔트리를 큐잉 상태로 전환할 수 있고(블록(617)), 여기에서 엔트리는 TLB 액세스의 재시도를 기다릴 수 있다(블록(619)). 재시도가 중재자(52)에 의해 허가되면, 변환이 완료되고(블록(621)), 엔트리는 유효 상태로 복귀된다(블록(607)). 일 실시예에서, 큐잉 상태에 있고 TLB(70)로의 변환 액세스를 재시도할 준비가 된 헤드 엔트리가 하나보다 많을 때, 중재자(52)는 연령 표시자(305)를 이용하여, 어느 엔트리가 재시도될지를 결정할 수 있다. 더 구체적으로는, 일 실시예에서 가장 오래된 준비된 엔트리가 제일 먼저 재시도될 수 있다. 동작은 위에서 블록(641)과 함께 설명된 것과 같이 진행한다.
블록(613)을 다시 참조하면, TLB 미스가 존재하고, 동일한 PTE에 대하여 PTE 페치를 이미 수행한 변환 요청을 갖는 어떠한 다른 엔트리도 존재하지 않는 경우(블록(623)), PTE 페치가 발행되고, 제어 유닛(60)은 엔트리를 PTE 페치 상태로 전환하여(블록(625)), TLB 충만 및 TLB(70)로의 변환 데이터의 리턴을 기다릴 수 있다(블록(627)). 변환 데이터가 TLB(70)에 도달할 때, 제어 유닛(60)은 TLB 충만을 통지받고, 제어 유닛(60)은 엔트리를 큐잉 상태로 전환하여(블록(617)), TLB의 변환 액세스의 재시도를 기다릴 수 있다(블록(619)). 변환이 완료될 때(블록(621)), 제어 유닛(60)은 엔트리를 유휴 상태로 전환할 수 있다(블록(607)). 동작은 위에서 블록(603)과 함께 설명된 것과 같이 진행한다.
한편, TLB 미스가 존재하고(블록(613)), 다른 엔트리 내의 다른 변환 요청이 그 동일한 PTE를 위한 PTE 페치를 이미 수행한 경우(블록(623)), 제어 유닛(60)은 TLB(70)로의 변환 데이터의 리턴을 기다리기 위해(블록(627)), 엔트리를 충만 대기(Fill Wait) 상태로 전환할 수 있다(블록(629)). 변환 데이터가 TLB(70)에 도달할 때, 제어 유닛(60)은 TLB 충만을 통지받고, 제어 유닛(60)은 엔트리를 큐잉 상태로 전환하여(블록(617)), TLB의 변환 액세스의 재시도를 기다릴 수 있다(블록(619)). 변환이 완료되면(블록(621)), 제어 유닛(60)은 엔트리를 유휴 상태로 전환할 수 있다(블록(607)). 동작은 위에서 블록(641)과 함께 설명한 것과 같이 진행한다.
동작 흐름이 특정한 순서로 설명되고 도시되긴 했지만, 다른 실시예들에서는 다양한 블록들에 도시된 동작들이 희망에 따라 다른 순서로 수행될 수 있음이 고려된다는 점이 주목된다.
위의 실시예들은 상당히 상세하게 설명되었지만, 본 기술분야의 숙련된 자들은 위의 명세서를 완전히 알고 나면, 다수의 변형 및 수정을 분명하게 알게 될 것이다. 이하의 청구항들을 그러한 변형들 및 수정들 전부를 포괄하는 것으로 해석되도록 의도된다.

Claims (17)

  1. 변환 유닛으로서,
    복수의 어드레스 변환을 저장하도록 구성된 변환 색인 버퍼(translation lookaside buffer, TLB);
    상기 TLB에 연결되고, 상기 TLB 내에서 미스된 수신된 어드레스 변환 요청들을 저장하도록 구성된 미스 큐 - 상기 미스 큐는 복수의 엔트리를 포함하고, 상기 복수의 엔트리 중 적어도 일부는 개별 어드레스 변환 요청 및 대응 식별자를 저장하도록 각각 구성되며, 주어진 엔트리의 대응 식별자는 상기 주어진 엔트리 내의 개별 어드레스 변환 요청의 프로세스 순서 제한조건과 동일한 프로세스 순서 제한조건을 갖는 다른 개별 어드레스 변환 요청을 저장하는 상기 미스 큐 내의 다른 엔트리를 식별함 - ; 및
    상기 미스 큐에 연결되고, 상기 수신된 어드레스 변환 요청들을 처리하도록 구성된 제어 유닛 - 상기 제어 유닛은 각각의 개별 어드레스 변환 요청의 식별자에 따른 순서로 각각의 개별 어드레스 변환 요청을 처리하도록 구성됨 -
    을 포함하는 변환 유닛.
  2. 제1항에 있어서,
    상기 동일한 프로세스 순서 제한조건을 갖는 개별 어드레스 변환 요청들 중 하나 이상은 가상 미스 큐(VMQ)에 속하는 변환 유닛.
  3. 제2항에 있어서,
    각각의 VMQ는 가장 최근의 개별 어드레스 변환 요청으로 시작하고, 가장 오래된 개별 어드레스 변환 요청으로 끝나는 변환 유닛.
  4. 제2항에 있어서,
    각각의 개별 어드레스 변환 요청은 상기 식별자에 의해 동일한 VMQ 내의 다음으로 더 오래된 개별 어드레스 변환 요청에 링크되는 변환 유닛.
  5. 제2항에 있어서,
    주어진 VMQ의 가장 최근의 개별 어드레스 변환 요청에 연관된 엔트리는 테일 식별자(tail identifier)를 더 포함하는 변환 유닛.
  6. 제2항에 있어서,
    주어진 VMQ의 가장 오래된 개별 어드레스 변환 요청의 식별자는 상기 주어진 VMQ의 상기 가장 오래된 개별 어드레스 변환 요청을 저장하는 상기 미스 큐 내의 엔트리를 식별하는 변환 유닛.
  7. 제2항에 있어서,
    상기 제어 유닛은 각각의 VMQ의 각각의 변환 요청을 복수의 상태 중 하나로 유지하도록 구성되고, 상기 제어 유닛은 주어진 변환 요청에 대응하는 어드레스 변환이 상기 TLB 내에 저장되었다는 통지를 수신한 것에 응답하여, 상기 주어진 변환 요청을 큐잉 상태로 전환하도록 더 구성되는 변환 유닛.
  8. 제7항에 있어서,
    상기 미스 큐에 연결되고, 각각의 사이클마다 재시도를 위하여 상기 큐잉 상태에 있는 모든 변환 요청들 중에서 가장 오래된 변환 요청을 선택하도록 구성된 중재자를 더 포함하는 변환 유닛.
  9. 제1항에 있어서,
    각각의 엔트리는 유효한 개별 어드레스 변환 요청을 저장하는 각각의 다른 엔트리에 대하여 상기 미스 큐 내의 각각의 엔트리의 연령을 나타내는 연령 표시자를 더 포함하는 변환 유닛.
  10. 제9항에 있어서,
    상기 미스 큐에 연결되고, 특정한 개별 어드레스 변환 요청에 대응하는 어드레스 변환이 상기 TLB 내에 저장되었다는 통지를 수신한 것에 응답하여, 재시도를 위하여 상기 특정한 개별 어드레스 변환 요청을 선택하도록 구성된 중재자를 더 포함하는 변환 유닛.
  11. 제10항에 있어서,
    상기 중재자는 대응하는 어드레스 변환들이 상기 TLB 내에 저장되어 있는 복수의 개별 어드레스 변환 요청 중에서, 상기 복수의 개별 어드레스 변환 요청 각각의 연령 표시자에 기초하여 선택하도록 구성된 변환 유닛.
  12. 하나 이상의 장치; 및
    제1항 내지 제11항 중 어느 한 항에 기재된 변환 유닛
    을 포함하는 시스템.
  13. 변환 색인 버퍼(TLB)가 복수의 어드레스 변환을 저장하는 단계;
    미스 큐가 상기 TLB 내에서 미스된, 수신된 어드레스 변환 요청들을 저장하는 단계 - 상기 미스 큐는 복수의 엔트리를 포함하고, 상기 복수의 엔트리 중 적어도 일부는 개별 어드레스 변환 요청 및 대응 식별자를 저장하고, 주어진 엔트리의 대응 식별자는 상기 주어진 엔트리 내의 개별 어드레스 변환 요청의 프로세스 순서 제한조건과 동일한 프로세스 순서 제한조건을 갖는 다른 개별 어드레스 변환 요청을 저장하는 상기 미스 큐 내의 다른 엔트리를 식별함 - ; 및
    제어 유닛이 각각의 개별 어드레스 변환 요청의 식별자에 따른 순서로 각각의 개별 어드레스 변환 요청을 처리하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서,
    상기 동일한 프로세스 순서 제한조건을 갖는 상기 개별 어드레스 변환 요청들 중 하나 이상은 가상 미스 큐(VMQ)에 속하는 방법.
  15. 제14항에 있어서,
    각각의 VMQ 내에서, 새로운 개별 어드레스 변환 요청의 식별자가 가장 최근의 개별 어드레스 변환 요청을 식별하게 하고, 상기 새로운 개별 어드레스 변환 요청의 제2 식별자가 상기 새로운 개별 어드레스 변환 요청을 새로운 가장 최근의 변환 요청으로서 식별하게 함으로써, 상기 새로운 개별 어드레스 변환 요청을 상기 가장 최근의 개별 어드레스 변환 요청에 첨부하는 단계를 더 포함하는 방법.
  16. 제13항에 있어서,
    상기 미스 큐 내의 각각의 다른 엔트리에 대하여 상기 미스 큐 내의 각각의 엔트리의 연령을 나타내는 표시자를 유지하는 단계를 더 포함하는 방법.
  17. 제16항에 있어서,
    각각의 사이클마다 재시도를 위하여 준비 상태에 있는 모든 개별 어드레스 변환 요청 중 가장 오래된 개별 어드레스 변환 요청을 선택하는 단계를 더 포함하는 방법.
KR1020127010491A 2009-10-29 2010-10-29 다수의 가상 큐를 갖는 어드레스 변환 유닛 KR101324923B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/608,605 2009-10-29
US12/608,605 US8386748B2 (en) 2009-10-29 2009-10-29 Address translation unit with multiple virtual queues
PCT/US2010/054702 WO2011059812A1 (en) 2009-10-29 2010-10-29 Address translation unit with multiple virtual queues

Publications (2)

Publication Number Publication Date
KR20120070591A true KR20120070591A (ko) 2012-06-29
KR101324923B1 KR101324923B1 (ko) 2013-11-01

Family

ID=43530515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127010491A KR101324923B1 (ko) 2009-10-29 2010-10-29 다수의 가상 큐를 갖는 어드레스 변환 유닛

Country Status (7)

Country Link
US (1) US8386748B2 (ko)
EP (1) EP2494449A1 (ko)
JP (1) JP5453546B2 (ko)
KR (1) KR101324923B1 (ko)
CN (1) CN102597971B (ko)
BR (1) BR112012010143B1 (ko)
WO (1) WO2011059812A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180083041A (ko) * 2017-01-12 2018-07-20 삼성전자주식회사 무선 디스플레이 서브시스템 및 시스템-온-칩

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8285926B2 (en) * 2010-05-03 2012-10-09 Oracle America, Inc. Cache access filtering for processors without secondary miss detection
KR20120083160A (ko) * 2011-01-17 2012-07-25 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들, 및 이의 동작 방법
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US9009445B2 (en) 2011-10-20 2015-04-14 Apple Inc. Memory management unit speculative hardware table walk scheme
US8954755B2 (en) * 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US9244840B2 (en) 2012-12-12 2016-01-26 International Business Machines Corporation Cache swizzle with inline transposition
WO2014143055A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems
US9875187B2 (en) * 2014-12-10 2018-01-23 Intel Corporation Interruption of a page miss handler
US9524249B2 (en) * 2014-12-23 2016-12-20 Intel Corporation Memory encryption engine integration
KR102001486B1 (ko) * 2015-04-22 2019-07-18 캐논 가부시끼가이샤 복수의 외부 장치와 통신을 행하는 화상 형성장치, 이 장치의 제어방법, 및 기억매체
US10007619B2 (en) * 2015-05-29 2018-06-26 Qualcomm Incorporated Multi-threaded translation and transaction re-ordering for memory management units
US9836397B2 (en) * 2015-11-20 2017-12-05 International Business Machines Corporation Direct memory access of dynamically allocated memory
US10649912B2 (en) 2017-07-14 2020-05-12 International Business Machines Corporation Method and apparatus for an efficient TLB lookup
US11061822B2 (en) 2018-08-27 2021-07-13 Qualcomm Incorporated Method, apparatus, and system for reducing pipeline stalls due to address translation misses
US10776281B2 (en) * 2018-10-04 2020-09-15 International Business Machines Corporation Snoop invalidate filter for distributed memory management unit to reduce snoop invalidate latency
US11467959B1 (en) * 2021-05-19 2022-10-11 Apple Inc. Cache arbitration for address translation requests
US20230153249A1 (en) * 2021-11-18 2023-05-18 Ati Technologies Ulc Hardware translation request retry mechanism

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136696A1 (en) * 2004-12-16 2006-06-22 Grayson Brian C Method and apparatus for address translation
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US20070180158A1 (en) * 2006-02-01 2007-08-02 International Business Machines Corporation Method for command list ordering after multiple cache misses
US7539840B2 (en) * 2006-05-30 2009-05-26 International Business Machines Corporation Handling concurrent address translation cache misses and hits under those misses while maintaining command order
JP2009146344A (ja) * 2007-12-18 2009-07-02 Hitachi Ltd 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム
US8103831B2 (en) * 2008-03-31 2012-01-24 Intel Corporation Efficient method and apparatus for employing a micro-op cache in a processor
US7996650B2 (en) * 2008-07-14 2011-08-09 Via Technologies, Inc. Microprocessor that performs speculative tablewalks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180083041A (ko) * 2017-01-12 2018-07-20 삼성전자주식회사 무선 디스플레이 서브시스템 및 시스템-온-칩

Also Published As

Publication number Publication date
CN102597971B (zh) 2015-01-07
US8386748B2 (en) 2013-02-26
JP2013509655A (ja) 2013-03-14
JP5453546B2 (ja) 2014-03-26
BR112012010143A2 (pt) 2021-02-17
US20110107057A1 (en) 2011-05-05
EP2494449A1 (en) 2012-09-05
KR101324923B1 (ko) 2013-11-01
BR112012010143B1 (pt) 2021-09-21
WO2011059812A1 (en) 2011-05-19
CN102597971A (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
KR101324923B1 (ko) 다수의 가상 큐를 갖는 어드레스 변환 유닛
US8108650B2 (en) Translation lookaside buffer (TLB) with reserved areas for specific sources
US10120728B2 (en) Graphical processing unit (GPU) implementing a plurality of virtual GPUs
KR100227278B1 (ko) 캐쉬 제어 유닛
US10095526B2 (en) Technique for improving performance in multi-threaded processing units
JP5787629B2 (ja) マシンビジョン用マルチプロセッサシステムオンチップ
US8994741B2 (en) Streaming translation in display pipe
US5864876A (en) DMA device with local page table
US8683128B2 (en) Memory bus write prioritization
JP5137171B2 (ja) データ処理装置
JP2012038293A5 (ko)
JPH0744458A (ja) キャッシュメモリ構造およびキャッシュ・メモリを動作させる方法
US9135177B2 (en) Scheme to escalate requests with address conflicts
KR102478527B1 (ko) 이기종 메모리 시스템용 시그널링
US20050253858A1 (en) Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams
TW201423403A (zh) 共用資源的存取請求之有效率處理
US20130152093A1 (en) Multi-Channel Time Slice Groups
US9652560B1 (en) Non-blocking memory management unit
JP2010061220A (ja) データ転送装置、データ転送方法およびプロセッサ
JP2004240616A (ja) メモリコントローラ及びメモリアクセス制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 4