KR100804285B1 - 변환 색인 버퍼 플러시 필터 - Google Patents

변환 색인 버퍼 플러시 필터 Download PDF

Info

Publication number
KR100804285B1
KR100804285B1 KR1020027017127A KR20027017127A KR100804285B1 KR 100804285 B1 KR100804285 B1 KR 100804285B1 KR 1020027017127 A KR1020027017127 A KR 1020027017127A KR 20027017127 A KR20027017127 A KR 20027017127A KR 100804285 B1 KR100804285 B1 KR 100804285B1
Authority
KR
South Korea
Prior art keywords
tlb
memory
index buffer
address
translation index
Prior art date
Application number
KR1020027017127A
Other languages
English (en)
Other versions
KR20030010727A (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 KR20030010727A publication Critical patent/KR20030010727A/ko
Application granted granted Critical
Publication of KR100804285B1 publication Critical patent/KR100804285B1/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/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

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) 플러시 필터(40)가 개시된다. 일 실시예에 있어서, 중앙 처리 장치(10)는 최근의 어드레스 변환들을 저장하는 TLB(39)를 포함한다. TLB 플러시 필터(40)는 어드레스 변환들이 상기 TLB(39)에 로드 및 캐시되는 메모리 블록들을 모니터한다. 상기 TLB 플러시 필터(40)는 메모리 내의 임의의 하부 어드레스 변환들이 변경되었는지 여부를 검출하도록 구성된다. 변경되지 않았을 경우, 상기 TLB 플러시 필터(40)는 그 다음의 문맥 전환 후에 상기 TLB(39)의 플러시를 방지할 수 있다. 상기 하부 어드레스 변환들이 변경되었을 경우, 상기 TLB 플러시 필터(40)는 문맥 전환 후에 상기 TLB(39)가 플러시되게 할 수 있다.
변환 색인 버퍼, 플러시, 필터, 메모리, 캐시, 어드레스

Description

변환 색인 버퍼 플러시 필터{A TRANSLATION LOOKASIDE BUFFER FLUSH FILTER}
본 발명은 프로세서들에 관한 것으로 특히, 어드레스 변환(address translation)을 저장하는데 이용되는 변환 색인 버퍼(translation lookaside buffer: TLB, 이하 TLB 라고도 약칭한다)에 관한 것이다.
메모리 관리를 이용하는 컴퓨터 시스템은 메모리 액세스를 수행하기 위해 가상 어드레스(virtual address)를 물리적 어드레스(physical address)로 변환할 필요가 있다. 메모리 모델을 어드레스하기 위해 전형적인 컴퓨터 프로그램들이 기입되며, 따라서 메모리 액세스를 수행할 때 상기 프로그램들이 가상 메모리 어드레스를 발행(issue)한다. 이후, 상기 가상 메모리 어드레스는 상기 프로그램에 의해 요구되는 정보를 액세스하기 위해 물리적 메모리 어드레스로 변환되어야 한다. 가상 대 물리적 어드레스 변환(virtual-to-physical address translations)을 수행하기 위해, 서로 다른 컴퓨터 아키텍처에 다양한 메커니즘들이 존재한다.
어드레스 변환을 수행할 때의 하나의 문제점은 지연시간(latency)이다. 메모리로부터 정보를 액세스하는데 필요한 시간에 더하여, 상기 어드레스 변환을 수행하기 위해 다수의 클록 사이클이 이용될 수 있다. 메모리 액세스를 빈번하게 수행하는 프로그램에서 이 지연시간 페널티(latency penalty)는 심각하게 되거나 또는 허용가능하지 않게 될 수 있다. 어드레스 변환으로부터 상기 지연시간 페널티를 줄이는 하나의 일반적인 방법은 변환 색인 버퍼(TLB)를 사용하는 것이다. TLB는 프로세서내에 위치한 소형 메모리이며, 가상 어드레스 대 물리적 어드레스 변환을 저장하는데 이용된다. 전형적인 TLB는 최신의 어드레스 변환에 대해 가상 및 물리적 어드레스 둘 다를 저장할 수 있다. 프로그램은 메모리 액세스를 시도할 때, 가상 어드레스를 발행할 수 있다. 이후, 상기 발행된 가상 어드레스는 상기 TLB에서 탐색될 수 있다. 상기 발행된 가상 어드레스가 발견되면, 상기 발행된 가상 어드레스에 대응하는 물리적 어드레스가 메인 메모리(main memory)를 액세스하기 위해 이용될 수 있다. 전형적으로, 변환들은 페이지 단위로(예를 들어, 4Kbytes, 2Mbytes, 4Mbytes 등) 제공되며, 상기 TLB는 상기 가상 어드레스의 페이지 부분과 상기 대응하는 물리적 어드레스의 페이지 부분을 저장할 수 있다.
TLB에 의해 장점들이 제공됨에도 불구하고, 문제점들이 여전히 존재한다. 하나의 이러한 문제점은 문맥 전환(context switch)에서 발생한다. TLB를 이용하는 다수의 프로세서상에서, 문맥 전환에 의해 상기 TLB에 저장된 모든 변환들이 제거된다. 이는 TLB 플러시(flush)로서 알려져 있다. 전환된 문맥에 해당하는 어드레스 변환들 중 하나 또는 그 이상이 변경될 수 있으며, 따라서 TLB에 캐시된(cached) 변환들이 더 이상 정확한 변환이 아니기 때문에 상기 TLB는 플러시된다. 유감스럽게도, 상기 문맥 전환 후에 새로운 프로세스가 실행되기 때문에, 각각의 메모리 액세스는 어드레스 변환을 필요로 하며, 상기 TLB는 다시 로드되어야 한다. 상기 TLB의 상기 어드레스 변환 및 재로딩(reloading)은 상당한 지연시간 페널티를 초래할 수 있다. 이들 지연시간 페널티는 빈번한 문맥 전환을 요구하는 프로그램들 또는 운영체제에 의해 더 악화할 수 있다.
TLB에 저장된 상기 어드레스 변환들은 메모리에 저장된 하부 데이터 구조들에 의해 지원된다. 예를 들어, 페이징(paging)을 이용하는 컴퓨터들은 페이지 테이블에 데이터 구조들을 저장할 수 있다. 이와 같은 데이터 구조들은 상기 TLB 내에 로드되는 변환들을 포함할 수 있다. 이들 데이터 구조들은 문맥 전환을 통해 전환되었던 문맥에 대해 변경될 수 있지만, 대개 이들 데이터 구조들은 변경되지 않는다. 상기 데이터 구조들은 모든 경우에 변경되는 것은 아니라는 사실에 불구하고, 전형적인 프로세서는 여전히 상기 TLB의 플러시를 수행한다. 이런 경우, TLB 플러시는 불필요하며, 그 결과, 상기 설명된 바와 같은 상당한 지연시간 페널티가 발생할 수 있다.
US-A-6,021,481은 유효 어드레스-대-실제 어드레스 변환 캐시를 처리하는 방법을 개시하는데, 여기에서 어떤 세그먼트 레지스터들이 상기 캐시에 현재 매핑되어 있는지에 대한 기록이 유지된다. 이후, 세그먼트 레지스터로의 이동(MTSR; move to segment register) 명령이 실행되면, 캐시 세그먼트 레지스터 래치가 검사되어, 상기 세그먼트 레지스터가 상기 캐시에서 매핑되었는지를 판단하고, 매핑된 경우 무효 래치를 세트한다. 이후, 문맥 동기화 이벤트가 발생할 때, 상기 캐시가 무효화되어야 하는지 여부를 판단하기 위해 상기 무효 래치가 검사된다.
DE-A-195 16 949는 변환 색인 버퍼(TLB)에서 전체 영역들의 고속 무효화를 위한 플러시 색인 버퍼(FLB)를 설명하며, 여기서 상기 FLB가 오버플로우(overflow)이면, 상기 TLB와 상기 FLB가 둘 다 무효화된다.
EP-A-0,568,195는 어드레스 공간이 새로운 태스크에 의해 재사용될 때 TLB를 단지 퍼징(purging)함으로써 TLB 퍼지 오버헤드를 감소시키는 프로세스를 개시하며, FIFO는 그것이 FIFO의 상부에 나타날 때 퍼지를 발생시키는 퍼지 마커(purge marker)를 포함하는 어드레스 공간 식별자들을 갖는다.
US-A-4,053,948은 증분 카운터를 이용하여, TLB 엔트리에 퍼지 카운터(purge counter)와 퍼지 카운트 필드(purge count field)를 포함하는 색인 어레이 무효 메커니즘과, 그리고 카운터 오버플로우에서의 TLB의 무효화를 개시한다.
상기 문제점들은 본원에 설명된 변환 색인 버퍼(TLB) 플러시 필터에 의해 대부분 해결될 수 있다. 일 실시예에 있어서, 프로세서는 최근의 어드레스 변환들을 저장하는 TLB를 포함한다. TLB 플러시 필터는 어드레스 변환들이 상기 TLB에 로드되고 캐시되는 메모리 블록들을 모니터한다. 상기 TLB 플러시 필터는 메모리 내의 하부 어드레스 변환들 중 임의의 변환이 변경되었는지 여부를 판단하도록 구성된다. 변경이 발생하지 않았다면, 상기 TLB 플러시 필터는 문맥 전환 상의 TLB의 플러시를 방지할 수 있다. 상기 하부 어드레스 변환들에 대해 변경이 발생한 경우, 상기 TLB 플러시 필터는 문맥 전환 후에 상기 TLB의 플러시를 허용할 수 있다.
일 실시예에 있어서, 상기 TLB 플러시 필터는 영역 테이블(region table)을 이용하여 어드레스 변환들이 상기 TLB에 캐시된 메모리 블록들을 추적한다. 상기 TLB 플러시 필터는 다양한 메모리 블록(전형적으로 페이지 테이블 또는 디렉토리)의 상기 하부 어드레스 변환들에 대한 변경을 모니터할 수 있다. 제 1 문맥 전환은 TLB 플러시를 야기할 수 있으며, 이후 상기 TLB 플러시 필터를 활성화한다. 메모리의 상기 하부 어드레스 변환들에 대한 어떤 변경도 상기 영역 테이블에서 검출되지 않는다면, 후속의 문맥 전환시에 TLB 플러시들은 상기 TLB 플러시 필터에 의해 차단될 수 있다.
또한, 상기 TLB 플러시 필터를 동작시키는 방법은 문맥 전환을 추적하는 단계를 포함한다. 일 실시예에 있어서, 이는 기준 어드레스 레지스터(base address register)의 값에 태그(tag)를 붙임으로써 수행될 수 있다. 상기 기준 어드레스 레지스터는 특정 문맥과 관련된 페이지 테이블의 기준 어드레스를 저장하도록 구성될 수 있다. 상기 태그와 상기 레지스터의 실제 값은 상기 영역 테이블에 엔트리(entry)로서 저장될 수 있으며, 특정 메모리 영역에 대응할 수 있다. 상기 태그는 다른 데이터와 함께 TLB 엔트리에 저장되어, 상기 엔트리에 있는 변환을 한 문맥와 관련시킨다. 이런 식으로, 다수의 문맥들에 대한 변환들은 동시에 상기 TLB에 존재할 수 있다. 현재의 문맥 태그와 일치하는 문맥 태그들을 갖는 변환만이 현재의 문맥에 이용가능하다.
일 실시예에서 이용되는 상기 영역 테이블은 내용 어드레스 가능 메모리(Content Addressable Memory: CAM, 이하 CAM 이라고도 약칭한다) 및 랜덤 액세스 메모리(Random Access Memory: RAM, 이하 RAM 이라고도 약칭한다)로 구현된다. 상기 CAM은 어드레스 변환들이 상기 TLB로 로딩되는 메모리 구조에 관한 정보를 저장하는데 이용될 수 있다. 이와 같은 정보는 페이지 디렉토리 정보와 페이지 테이블 정보를 포함할 수 있다. 상기 RAM은 기준 어드레스 레지스터의 값들과 그와 관련된 태그를 저장하는데 이용될 수 있다. 또한, 기준 어드레스 엔트리의 수를 추적하기 위해 카운터가 이용될 수 있다. 상기 카운터가 오버플로우할 때, 상기 TLB 플러시 필터는 비활성화될 수 있으며, 상기 영역 테이블은 클리어(clear)될 수 있다. 또한, 상기 CAM에 저장된 엔트리의 수를 기록하기 위해 영역 카운터가 이용될 수 있다. 또한, 이 카운터의 오버플로우는 상기 TLB 플러시 필터가 비활성화되고 상기 영역 테이블이 클리어되게 할 수 있다. 상기 TLB 플러시 필터의 비활성화 후에, 문맥 전환에 의해 TLB 플러시가 발생할 수 있다. 이후, 상기 TLB 플러시 필터는 다시 한번 활성화될 수 있다.
따라서, 다양한 실시예들에 있어서, 상기 TLB 플러시 필터는 TLB에 대한 불필요한 플러시들을 방지할 수 있다. TLB에 대한 불필요한 플러시들이 방지되었기 때문에, 새로운 문맥은 상기 하부 어드레스 변환의 어떤 것도 변경되지 않았을 경우 이전에 캐시된 어드레스 변환을 이용할 수 있다. 이에 의해 많은 경우, 가상 어드레스를 물리적 어드레스로 변환하고, 상기 TLB내에 그 어드레스를 캐시하는 프로세스의 반복 필요성이 없어지게 된다. 따라서, 다수의 메모리 액세스에 대한 지연시간이 현저하게 감소될 수 있으며, 이로써 프로세서 성능을 현저하게 증가시킬 수 있다.
본 발명의 다른 목적들 및 장점들은 첨부 도면을 참조하여 하기의 상세한 설명을 숙독할 때 명백하게 될 것이다.
도 1은 TLB 플러시 필터가 구현될 수 있는 프로세서의 일 실시예의 블록도이고;
도 2는 TLB 플러시 필터를 이용하는 프로세서의 일부분의 일 실시예의 블록도이고;
도 3은 TLB 플러시 필터의 일 실시예의 블록도이고;
도 4는 상기 TLB 플러시 필터의 일 실시예에 대한 영역 테이블 엔트리를 예시하는 도면이고;
도 5는 상기 TLB 플러시 필터의 일 실시예를 동작시키는 논리를 예시하는 논리도이고;
도 6은 상기 TLB 플러시 필터의 일 실시예의 동작을 예시하는 타이밍도이고;
도 7a는 영역 테이블의 엔트리들에 의해 커버되는 페이징 구조를 예시하는 블록도이고;
도 7b는 도 7a에 예시된 상기 페이징 구조에 대응하는 엔트리들을 갖는 영역 테이블을 예시하는 블록도이고; 그리고
도 8은 TLB 플러시 필터가 구현되는 컴퓨터 시스템의 일 실시예의 블록도이다.
본 발명은 다양한 수정들과 변형들을 갖지만, 본원에서는 특정 실시예들이 상기 도면들에 예시적으로 도시되어 상세히 설명된다. 그러나, 이러한 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태들로 한정하지 않으며, 첨부된 청구항들에 의해 정의되는 본 발명의 정신 및 범위 내에 있는 모든 수정들, 등가물들 및 대안들을 포함한다는 것을 이해해야 한다.
도 1을 참조하면, 프로세서(10)의 일 실시예의 블록도가 도시된다. 다른 실시예들도 가능하며 고려된다. 도 1에 도시된 바와 같이, 프로세서(10)는 프리페치/프리디코드(prefetch/predecode) 유닛(12), 분기 예측 유닛(14), 명령 캐시(16), 명령 정렬 유닛(18), 복수의 디코드 유닛들(20A-20C), 복수의 예약 스테이션들(22A-22C), 다수의 기능 유닛들(24A-24C), 로드/저장 유닛(26), 데이터 캐시(28), 레지스터 파일(30), 재정렬 버퍼(32), MROM 유닛(34) 및 버스 인터페이스 유닛(37)을 포함한다. 본원에서 특정 참조 부호 및 그에 수반되는 문자에 의해 지칭되는 요소들은 집합적으로 단지 참조 부호 하나만으로 표시하기로 한다. 예를 들어, 디코드 유닛(20A-20C)은 집합적으로 디코드 유닛들(20)로 표시한다.
프리페치/프리디코드 유닛(12)은 버스 인터페이스 유닛(37)으로부터 명령들을 수신하도록 연결되고, 또한 명령 캐시(16) 및 분기 예측 유닛(14)과 연결된다. 유사하게, 분기 예측 유닛(14)은 명령 캐시(16)와 연결된다. 또한, 분기 예측 유닛(14)은 디코드 유닛들(20) 및 기능 유닛(24)과 연결된다. 또한, 명령 캐시(16)는 MROM 유닛(34) 및 명령 정렬 유닛(18)과 연결된다. 명령 정렬 유닛(18)은 디코드 유닛들(20)과 차례로 연결된다. 각각의 디코드 유닛(20A-20C)은 로드/저장 유닛(26)과 연결되며, 각각의 예약 스테이션들(22A-22C)과 연결된다. 또한, 예약 스테이션들(22A-22C)은 각각 기능 유닛들(24A-24C)과 연결된다. 또한, 디코드 유닛들(20) 및 예약 스테이션들(22)은 레지스터 파일(30) 및 재정렬 버퍼(32)와 연결된다. 기능 유닛들(24)은 로드/저장 유닛(26), 레지스터 파일(30) 및 재정렬 버퍼(32)와 연결된다. 데이터 캐시(28)는 로드/저장 유닛(26) 및 버스 인터페이스 유닛(37)과 연결된다. 또한, 버스 인터페이스 유닛(37)은 L2 캐시로의 L2 인터페이스 및 버스와 연결된다. 마지막으로, MROM 유닛(34)은 디코드 유닛들(20)과 연결된다.
명령 캐시(16)는 명령들을 저장하도록 제공되는 고속 캐시 메모리이다. 명령들은 명령 캐시(16)로부터 페치되어 디코드 유닛들(20)로 전송된다. 일 실시예에 있어서, 명령 캐시(16)는 64 바이트 라인들(1 바이트는 8개의 2진 비트들을 포함)을 갖는 2 방식 세트 어소시에이티브(two way set associative) 구조의 최대 64 킬로바이트의 명령들을 저장하도록 구성된다. 대안적으로, 임의의 다른 원하는 구성 및 크기가 이용될 수 있다. 주목할 사항으로서, 예를 들어 명령 캐시(16)는 완전 어소시에이티브(fully associative) 구성, 세트 어소시에이티브 구성 또는 직접 매핑 구성으로 구현될 수 있다.
명령들은 프리페치/프리디코드 유닛(12)에 의해 명령 캐시(16) 내에 저장된다. 명령들은 프리페치 방식에 따라 명령 캐시(16)로부터의 요구 전에 프리페치될 수 있다. 프리페치/프리디코드 유닛(12)에 의해 다양한 프리페치 방식들이 이용될 수 있다. 프리페치/프리디코드 유닛(12)이 명령들을 명령 캐시(16)에 전송할 때, 프리페치/프리디코드 유닛(12)은 상기 명령들의 각각의 바이트마다 3개의 프리디코드 비트(시작 비트(start bit), 최종 비트(end bit) 및 기능 비트(functional bit))를 발생시킨다. 상기 프리디코드 비트들은 각 명령의 경계들을 표시하는 태그들을 형성한다. 또한, 이하에 더 상세하게 설명되는 바와 같이, 상기 프리디코드 태그들은 주어진 명령이 디코드 유닛들(20)에 의해 직접 디코드될 수 있는지 또는 상기 명령이 MROM 유닛(34)에 의해 제어되는 마이크로코드 절차를 호출함으로써 실행되는지와 같은 추가 정보를 전달할 수 있다. 또한, 프리페치/프리디코드 유닛(12)은 분기 명령들을 검출하고 상기 분기 명령들에 대응하는 분기 예측 정보를 분기 예측 유닛(14) 내에 저장하도록 구성될 수 있다. 다른 실시예들은 임의의 적절한 프리디코드 방식을 이용할 수 있다.
다음에는 가변 바이트 길이 명령 세트를 이용하는 프로세서(10)의 일 실시예를 위한 프리디코드 태그들의 인코딩 방법 중 하나가 설명될 것이다. 가변 바이트 길이 명령 세트는 서로 다른 명령들이 서로 다른 수의 바이트들을 점유할 수 있는 명령 세트이다. 프로세서(10)의 일 실시예에 의해 이용되는 예시적인 가변 바이트 길이 명령 세트는 x86 명령 세트이다.
상기 예시적인 인코딩에서, 주어진 바이트가 명령의 첫번째 바이트인 경우, 이 바이트에 대한 시작 비트가 세트된다. 상기 바이트가 명령의 최종 바이트인 경우, 이 바이트에 대한 최종 비트가 세트된다. 디코드 유닛들(20)에 의해 직접 디코딩될 수 있는 명령들을 "고속 통과(fast path)" 명령들이라고 한다. 일 실시예에 따르면, 나머지 x86 명령들은 MROM 명령들로 지칭된다. 고속 통과 명령들에 대해, 상기 기능 비트는 명령에 포함된 각각의 프리픽스(prefix) 바이트에 대해 세트되고, 다른 바이트들에 대해 클리어된다. 대안적으로, MROM 명령들에 대해, 상기 기능 비트는 각각의 프리픽스 바이트에 대해 클리어되고 다른 바이트들에 대해 세트된다. 명령의 타입은 최종 바이트에 대응하는 기능 비트를 검사함으로써 결정될 수 있다. 이 기능 비트가 클리어인 경우, 상기 명령은 고속 통과 명령이다. 반대로, 이 기능 비트가 세트된 경우, 상기 명령은 MROM 명령이다. 이로써 명령의 연산 부호(opcode)는 명령의 첫번째 클리어 기능 비트와 관련된 바이트로서 디코드 유닛들(20)에 의해 직접 디코딩될 수 있는 명령 내에 위치할 수 있다. 예를 들어, 2개의 프리픽스 바이트, Mod R/M 바이트 및 즉시(immediate) 바이트를 포함하는 고속 통과 명령은 이하와 같은 시작 비트, 최종 비트 및 기능 비트를 각각 가질 수 있다:
시작 비트 10000
최종 비트 00001
기능 비트 11000
MROM 명령들은 디코드 유닛들(20)에 의해 디코딩하는데 너무 복잡하다고 판단되는 명령들이다. MROM 명령들은 MROM 유닛(34)을 호출함으로써 실행된다. 특히, MROM 명령을 조우할 때, MROM 유닛(34)은 원하는 동작을 달성하기 위해 상기 명령을 분석하고 이 명령을 정의된 고속 통과 명령들의 서브세트(subset)로 발행한다. MROM 유닛(34)은 고속 통과 명령들의 서브세트를 디코드 유닛들(20)로 전송한다.
프로세서(10)는 조건부 분기 명령들에 후속하는 명령들을 투기적으로 페치하기 위하여 분기 예측을 이용한다. 분기 예측 동작을 수행하기 위한 분기 예측 유닛(14)이 포함된다. 일 실시예에 있어서, 분기 예측 유닛(14)은 명령 캐시(16)에서 캐시 라인의 16 바이트 부분마다 2개의 분기 타겟 어드레스들 및 대응하는 분기 여부 예측들(taken/not taken predictions)까지 캐시하는 분기 타겟 버퍼를 이용한다. 상기 분기 타겟 버퍼는 예를 들어, 2048개의 엔트리들 또는 임의의 다른 적절한 수의 엔트리들을 포함할 수 있다. 프리페치/프리디코드 유닛(12)은 특정 라인이 프리디코드될 때, 초기의 분기 타겟 어드레스들을 결정한다. 캐시 라인에 대응하는 분기 타겟들에 대한 후속의 갱신은 상기 캐시 라인 내의 명령들의 실행으로 인해 발생할 수 있다. 명령 캐시(16)는 페치되는 명령 어드레스의 표시를 제공하며, 이에 의해 분기 예측 유닛(14)은 분기 예측을 형성하기 위해 어느 분기 타겟 어드레스를 선택할지를 결정할 수 있다. 디코드 유닛들(20)과 기능 유닛들(24)은 분기 예측 유닛(14)에 갱신 정보를 제공한다. 디코드 유닛들(20)은 분기 예측 유닛(14)에 의해 예측되지 않았던 분기 명령들을 검출한다. 기능 유닛들(24)은 상기 분기 명령들을 실행하며, 상기 예측된 분기 지시가 옳지 않은지를 결정한다. 상기 분기 지시가 "취해질(taken)" 수 있으며, 이 경우 후속 명령들은 상기 분기 명령의 타겟 어드레스로부터 페치된다. 반대로, 상기 분기 지시는 "취해지지 않은(not taken)"일 수 있으며, 후속 명령들은 상기 분기 명령에 연속하여 메모리 위치로부터 페치된다. 오예측된(mispredicted) 분기 명령이 검출될 때, 오예측된 분기에 후속하는 명령들은 프로세서(10)의 다양한 유닛들로부터 폐기된다. 대안적인 구성에서, 분기 예측 유닛(14)은 디코드 유닛들(20) 및 기능 유닛들(24) 대신에 재정렬 버퍼(32)와 연결될 수 있으며, 재정렬 버퍼(32)로부터 분기 오예측 정보를 수신할 수 있다. 갖가지 적절한 분기 예측 알고리즘들은 분기 예측 유닛(14)에 의해 이용될 수 있다.
명령 캐시(16)로부터 페치된 명령들은 명령 정렬 유닛(18)에 전달된다. 명령들이 명령 캐시(16)로부터 페치되면, 대응하는 프리디코드 데이터는 주사되어 페칭될 명령들에 관한 정보를 명령 정렬 유닛(18)(및 MROM 유닛(34))에 제공한다. 명령 정렬 유닛(18)은 주사 데이터를 이용하여 각각의 디코드 유닛들(20)에 대해 명령을 정렬한다. 일 실시예에 있어서, 명령 정렬 유닛(18)은 8개의 명령 바이트들의 3개의 세트로부터의 명령들을 디코드 유닛들(20)에 대해 정렬시킨다. 디코드 유닛(20A)은 (프로그램 순서에서) 디코드 유닛들(20B 및 20C)에 의해 동시에 수신된 명령들 이전의 명령을 수신한다. 유사하게, 디코드 유닛(20B)은 프로그램 순서에서 디코드 유닛(20C)에 의해 동시에 수신된 명령들 이전의 명령을 수신한다.
디코드 유닛들(20)은 명령 정렬 유닛(18)으로부터 수신된 명령들을 디코딩하도록 구성된다. 레지스터 피연산자 정보가 검출되어, 레지스터 파일(30) 및 재정렬 버퍼(32)로 전송된다. 또한, 상기 명령들이 하나 이상의 메모리 동작 수행을 요구하는 경우, 디코드 유닛들(20)은 메모리 동작들을 로드/저장 유닛(26)으로 전송한다. 각각의 명령은 기능 유닛들(24)을 위한 제어 값들의 세트로 디코딩되며, 이 제어 값들은 상기 명령에 포함될 수 있는 피연산자 어드레스 정보 및 변위(displacement) 또는 즉시 데이터와 함께 예약 스테이션(22)으로 전송된다. 하나의 특정 실시예에 있어서, 각각의 명령은 기능 유닛들(24A-24C)에 의해 개별적으로 실행될 수 있는 최대 2개의 동작까지 디코딩된다.
프로세서(10)는 순서를 벗어난(out of order) 실행을 지원하고, 따라서 재정렬 버퍼(32)를 이용하여 레지스터 판독 및 기입 동작에 있어 원래(original) 프로그램 시퀀스를 계속 추적하고, 레지스터 리네이밍(renaming)을 실현하고, 투기적인 명령 실행과 분기 오예측 복구를 가능하게 하며, 정확한 예외 처리를 용이하게 한다. 재정렬 버퍼(32) 내의 일시 저장 위치는 레지스터의 갱신을 포함하는 명령 디코드 시에 예약되고, 이에 의해 투기적 레지스터 상태를 저장한다. 분기 예측이 옳지 않은 경우, 오예측 경로를 따라 투기적으로 실행된 명령들의 결과는 레지스터 파일(30)에 기입되기 전에 버퍼에서 무효화될 수 있다. 유사하게, 특정 명령이 예외를 일으키는 경우, 특정 명령에 후속하는 명령들은 폐기될 수 있다. 이와 같이 하여, 예외는 "정확"하다(즉, 상기 예외를 일으키는 특정 명령에 후속하는 명령들은 상기 예외 이전에 완료되지 않는다). 또한 주목할 사항으로서, 특정 명령은, 프로그램 순서에서 특정 명령을 선행하는 명령들 이전에 실행되는 경우, 투기적으로 실행된다. 선행 명령들은 분기 명령이거나 예외-발생 명령일 수 있으며, 이런 경우에, 상기 투기적 결과들은 재정렬 버퍼(32)에 의해 폐기될 수 있다.
디코드 유닛들(20)의 출력에서 제공되는 명령 제어 값 및 즉시 또는 변위 데이터는 각각 예약 스테이션들(22)로 직접 전송된다. 일 실시예에 있어서, 각각의 예약 스테이션(22)은 대응하는 기능 유닛으로의 발행을 기다리는 6개까지의 보류중인 명령들에 대한 명령 정보(즉, 명령 제어 값들뿐 아니라 피연산자 값들, 피연산자 태그들 및/또는 즉시 데이터)를 보유하고 있을 수 있다. 도 1의 실시예에서, 각각의 예약 스테이션(22)은 전용 기능 유닛(24)과 관련된다. 따라서, 예약 스테이션들(22)과 기능 유닛들(24)에 의해 3개의 전용 "발행 위치"가 형성된다. 다시 말하면, 예약 스테이션(22A)과 기능 유닛(24A)에 의해 발행 위치 0이 형성된다. 예약 스테이션(22A)으로 정렬되어 전송된 명령들은 기능 유닛(24A)에 의해 실행된다. 유사하게, 예약 스테이션(22B)과 기능 유닛(24B)에 의해 발행 위치 1이 형성되며, 예약 스테이션(22C)과 기능 유닛(24C)에 의해 발행 위치 2가 형성된다.
특정 명령의 디코딩시, 필요한 피연산자가 레지스터 위치에 있으면, 레지스터 어드레스 정보는 재정렬 버퍼(32)와 레지스터 파일(30)로 동시에 전송된다. 이 기술 분야의 당업자들은 x86 레지스터 파일이 8개의 32비트 실제 레지스터(real register) (즉, 전형적으로 EAX, EBX, ECX, EDX, EBP, ESI, EDI 및 ESP를 지칭함)를 포함한다는 것을 알 수 있을 것이다. 상기 x86 프로세서 아키텍처를 이용하는 프로세서(10)의 실시예들에 있어서, 레지스터 파일(30)은 상기 32비트 실제 레지스터들 각각에 대한 저장 위치를 포함한다. MROM 유닛(34)에 의한 사용을 위한 추가 저장 위치는 레지스터 파일(30) 내에 포함될 수 있다. 재정렬 버퍼(32)는 이들 레지스터들의 내용을 변경하는 결과들에 대한 일시적 저장 위치를 포함함으로써 순서를 벗어난 실행을 허용한다. 재정렬 버퍼(32)의 일시 저장 위치는 디코딩시, 상기 실제 레지스터들 중 하나의 내용을 수정하도록 결정되는 각 명령에 대해 예약된다. 따라서, 특정 프로그램의 실행 동안의 다양한 지점에서, 재정렬 버퍼(32)는 주어진 레지스터의 투기적으로 실행된 내용들을 포함하는 하나 이상의 위치를 가질 수 있다. 주어진 명령의 디코딩 후에, 재정렬 버퍼(32)가 상기 주어진 명령의 피연산자로서 이용되는 레지스터에 할당된 위치들 또는 이전 위치를 갖는다고 판단된 경우, 상기 재정렬 버퍼(32)는 1) 가장 최근에 할당된 위치에 있는 값 또는 2) 이전의 명령을 최종적으로 실행하게 되는 기능 유닛에 의해 값이 아직 생성되지 않았을 경우, 가장 최근에 할당된 위치에 대한 태그를, 대응하는 예약 스테이션에 전송한다. 재정렬 버퍼(32)가 주어진 레지스터에 대해 예약된 위치를 갖는 경우, 상기 피연산자 값(또는 재정렬 버퍼 태그)은 레지스터 파일(30)이라기 보다는 재정렬 버퍼(32)로부터 제공된다. 재정렬 버퍼(32)에 필요한 레지스터에 대해 예약된 위치가 없는 경우, 상기 값은 레지스터 파일(30)로부터 직접 취해진다. 상기 피연산자가 메모리 위치에 대응하는 경우, 상기 피연산자 값은 로드/저장 유닛(26)을 통해 예약 스테이션에 제공된다.
하나의 특정 실시예에 있어서, 재정렬 버퍼(32)는 동시에 디코딩된 명령들을 한 단위로 저장 및 조작하도록 구성된다. 이러한 구성은 본원에서는 "라인-지향(line-oriented)"으로 표기된다. 여러 명령들을 함께 조작함으로써, 재정렬 버퍼(32)내에서 이용되는 하드웨어는 단순화될 수 있다. 예를 들어, 본 실시예에 포함된 라인-지향 재정렬 버퍼는 하나 이상의 명령들이 디코드 유닛(20)에 의해 전송될 때마다 3개의 명령들(각각의 디코드 유닛(20)으로부터의 하나의 명령)에 관한 명령 정보를 위해 충분한 저장 위치를 할당한다. 반대로, 종래의 재정렬 버퍼들에서 실제로 전송된 명령들의 수에 따라 가변하는 저장량이 할당된다. 상기 가변 저장량을 할당하기 위해 비교적 다수의 논리 게이트들이 요구될 수 있다. 동시에 디코딩된 명령들 각각이 실행될 때, 명령 결과들은 동시에 레지스터 파일(30) 내에 저장된다. 이후, 상기 저장장소는 동시에 디코딩된 명령들의 다른 세트로의 할당을 위해 해방된다. 또한, 명령마다 이용되는 제어 논리 회로의 양은 상기 제어 논리가 동시에 디코딩된 여러 명령들에 걸쳐 감가상각(amortize)되기 때문에 감소한다. 특정 명령을 식별하는 재정렬 버퍼 태그는 라인 태그와 오프셋 태그인 2개의 필드들로 분할될 수 있다. 상기 라인 태그는 특정 명령을 포함하는 동시 디코딩된 명령들의 세트를 식별하고, 상기 오프셋 태그는 상기 세트내의 명령이 특정 명령에 대응하는지를 식별한다. 레지스터 파일(30)에 명령 결과들을 저장하는 것과 대응하는 저장장소를 해방하는 것은 명령들의 "퇴거(retire)"라 지칭된다. 또한, 임의의 재정렬 버퍼 구성은 프로세서(10)의 다양한 실시예들에서 이용될 수 있다는 것에 주목할 필요가 있다.
앞서 언급한 바와 같이, 예약 스테이션들(22)은 명령들이 대응하는 기능 유닛(24)에 의해 실행될 때까지 상기 명령들을 저장한다. (ⅰ) 명령의 피연산자들이 제공되었을 경우, 그리고 (ⅱ) 동일한 예약 스테이션(22A-22C) 내에 있고, 프로그램 순서에서 명령 이전의 명령에 대해 피연산자들이 제공되지 않았을 경우, 실행을 위해 명령이 선택된다. 주목할 사항으로서, 기능 유닛들(24) 중 하나에 의해 명령이 실행될 때, 이 명령의 결과는 그 결과가 재정렬 버퍼(32)를 갱신하기 위해 전송됨과 동시에 이 결과를 기다리고 있는 임의의 예약 스테이션들(22)로 직접 전송된다(이 기술은 일반적으로 "결과 전송(result forwarding)"이라 지칭된다). 명령은 실행을 위해 선택될 수 있고, 상기 관련된 결과가 전송되는 클록 사이클 동안 기능 유닛(24A-24C)으로 전달될 수 있다. 예약 스테이션들(22)은 이 경우에 상기 전송된 결과를 상기 기능 유닛(24)에 라우팅한다. 명령들이 기능 유닛들(24)에 의해 실행되도록 다수 동작들로 디코딩될 수 있는 실시예들에서, 상기 동작들은 서로 별개로 스케줄링될 수 있다.
일 실시예에 있어서, 기능 유닛들(24) 각각은 가산 및 감산의 정수 연산뿐 아니라 시프트, 회전, 논리 연산 및 분기 연산을 수행하도록 구성된다. 상기 연산들은 디코드 유닛들(20)에 의해 특정 명령에 대해 디코딩된 제어 값들에 응답하여 수행된다. 또한, 주목할 사항으로서, 부동 소수점 연산을 제공하기 위해 부동 소수점 유닛(미도시)이 이용될 수 있다. 상기 부동 소수점 유닛은 MROM 유닛(34) 또는 재정렬 버퍼(32)로부터 명령들을 수신하고, 그 후에 재정렬 버퍼(32)와 통신하여 상기 명령들을 완료하는 코프로세서(coprocessor)로서 동작할 수 있다. 또한, 기능 유닛들(24)은 로드/저장 유닛(26)에 의해 수행되는 로드 및 저장 메모리 동작에 대한 어드레스 생성을 수행하도록 구성될 수 있다. 특정의 일 실시예에 있어서, 각각의 기능 유닛(24)은 어드레스를 생성하기 위한 어드레스 생성 유닛과 나머지 기능을 수행하는 실행 유닛을 포함할 수 있다. 상기 2개의 유닛들은 클록 사이클 동안 서로 다른 명령들 또는 동작들에 따라 독립적으로 동작할 수 있다.
또한, 상기 기능 유닛들(24) 각각은 조건부 분기 명령들의 실행에 관한 정보를 분기 예측 유닛(14)에 제공한다. 분기 예측이 올바르지 않다면, 분기 예측 유닛(14)은 명령 처리 파이프라인(pipeline)에 들어간 오예측 분기에 후속하는 명령들을 플러시하며, 명령 캐시(16) 또는 메인 메모리로부터 필요한 명령들이 페치되게 한다. 이와 같은 경우에 주목할 사항으로서, 상기 오예측 분기 명령 후에 일어나는 원래 프로그램 시퀀스 내의 명령들의 결과는, 투기적으로 실행되고 로드/저장 유닛(26)과 재정렬 버퍼(32)에 일시적으로 저장된 것들을 포함한 명령들의 결과들이 폐기된다. 또한 주목할 사항으로서, 분기 실행 결과들은 기능 유닛들(24)에 의해 재정렬 버퍼(32)에 제공될 수 있으며, 이는 기능 유닛들(24)로의 분기 오예측들을 나타낼 수 있다.
기능 유닛들(24)에 의해 생성된 결과들은, 레지스터 값이 갱신되는 경우, 재정렬 버퍼(32)로 그리고 메모리 위치의 내용들이 변경되는 경우, 로드/저장 유닛(26)으로 전송된다. 결과가 레지스터에 저장되는 것일 경우, 명령이 디코딩되었을 때, 재정렬 버퍼(32)는 레지스터의 값에 대해 예약된 위치에 결과를 저장한다. 기능 유닛들(24)과 로드/저장 유닛(26)으로부터의 결과들을 전송하기 위해 다수의 결과 버스들(38)이 포함된다. 결과 버스들(38)은 생성된 결과뿐 아니라 실행되는 명령을 식별하는 재정렬 버퍼 태그를 전달한다.
로드/저장 유닛(26)은 기능 유닛들(24)과 데이터 캐시(28) 사이의 인터페이스를 제공한다. 일 실시예에 있어서, 로드/저장 유닛(26)은 데이터 캐시(28)에 액세스하지 않는 보류중인 로드들 및 저장들에 대한 데이터 및 어드레스 정보를 위한 저장 위치를 갖는 제 1 로드/저장 버퍼와, 그리고 데이터 캐시(28)에 액세스한 로드들 및 저장들에 대한 데이터 및 어드레스 정보의 저장 위치를 갖는 제 2 로드/저장 버퍼로 구성된다. 예를 들어, 상기 제 1 버퍼는 12개의 위치를 포함할 수 있으며, 상기 제 2 버퍼는 32개의 위치를 포함할 수 있다. 디코드 유닛들(20)은 상기 로드/저장 유닛(26)으로의 액세스를 조정한다. 상기 제 1 버퍼가 꽉 찼을 때, 디코드 유닛은 로드/저장 유닛(26)에 보류중인 로드 또는 저장 요구 정보를 위한 장소가 생길 때까지 기다려야 한다. 또한, 로드/저장 유닛(26)은 데이터 일관성이 유지되도록 하기 위해 보류중인 저장 메모리 동작에 대한 로드 메모리 동작들의 의존성 검사를 수행한다. 메모리 동작은 프로세서(10)와 메인 메모리 서브시스템 사이의 데이터의 전송이다. 메모리 동작은 메모리에 저장된 피연산자를 이용하는 명령의 결과일 수 있고, 또는 어떤 다른 동작이 아니라 상기 데이터 전송을 일으키는 로드/저장 명령의 결과일 수 있다. 또한, 로드/저장 유닛(26)은 세그먼트 레지스터들 및 x86 프로세서 아키텍처에 의해 정의된 어드레스 변환 메커니즘과 관련된 다른 레지스터들과 같은 특정 레지스터에 대한 특정 레지스터 저장장치를 포함할 수 있다.
데이터 캐시(28)는 로드/저장 유닛(26)과 메인 메모리 서브시스템 사이에 전송되는 데이터를 일시적으로 저장하도록 제공되는 고속 캐시 메모리이다. 일 실시예에 있어서, 데이터 캐시(28)는 2 웨이 세트 어소시에이티브 구조로 64 킬로바이트까지의 데이터를 저장하는 용량을 갖는다. 데이터 캐시(28)는 다양한 특정 메모리 구성에서 구현될 수 있는 바, 세트 어소시에이티브 구성, 풀 어소시에이티브(full associative) 구성, 직접-매핑 구성 및 임의의 적절한 크기의 다른 구성을 포함한다.
상기 x86 프로세서 아키텍처를 이용하는 프로세서(10)의 특정의 일 실시예에 있어서, 명령 캐시(16)와 데이터 캐시(28)는 선형적으로 어드레싱되고 물리적으로 태그가 붙는다. 선형 어드레스(linear address)는 명령에 의해 특정되는 오프셋과 x86 어드레스 변환 메커니즘의 세그먼트 부분에 의해 특정되는 기준 어드레스로부터 형성된다. 선형 어드레스는 메인 메모리를 액세스하는 물리적 어드레스로 임의선택적으로 변환될 수 있다. 선형으로부터 물리적 어드레스로의 변환은 상기 x86 어드레스 변환 메커니즘의 페이징 부분에 의해 특정된다. 상기 물리적 어드레스는 히트/미스(hit/miss) 상태를 결정하기 위해 물리적 태그들과 비교된다.
버스 인터페이스 유닛(37)은 버스를 통해 프로세서(10)와 컴퓨터 시스템의 다른 구성요소 사이에서 통신하도록 구성된다. 예를 들어, 상기 버스는 디지털 이큅먼트 코포레이션(Digital Equipment Corporation)에 의해 개발된 EV-6 버스와 호환될 수 있다. 대안적으로, 패킷-기반, 단방향 또는 양방향 링크 등을 포함하는 임의의 적절한 상호연결 구조가 이용될 수 있다. 임의선택적인 L2 캐시 인터페이스는 또한 레벨 2 캐시와 인터페이스하기 위해 이용될 수 있다.
이제, 도 2를 참조하면 TLB 플러시 필터를 이용하는 프로세서(10) 일부의 일 실시예의 블록도가 도시된다. TLB 플러시 필터(40)는 로드/저장 유닛(26), 버스 인터페이스 유닛(37), L1 캐시(25) 및 TLB(39)와 연결된다. L1 캐시(25)는 예를 들어, 명령 캐시(16)와 데이터 캐시(28)를 포함할 수 있다. 일부 실시예들에 있어서, L1 캐시(25)의 명령 캐시(16) 및 데이터 캐시(28) 각각은 그들 자신의 별개의 TLB와 관련될 수 있다. 이들 TLB들은 각각의 캐시에 통합될 수 있다. 로드/저장 유닛(26)은 레지스터 파일(30)과 연결된다. 레지스터 파일(30)의 레지스터들 중에 기준 어드레스 레지스터(301)가 있다. 기준 어드레스 레지스터(301)는 현재 실행되는 문맥에 대해 페이지 테이블의 기준 어드레스를 저장할 수 있다. 대안적으로, 기준 어드레스 레지스터(301)는 페이지 디렉토리 포인터 테이블의 기준 어드레스 또는 현재 실행되는 문맥과 관련된 다른 어드레스 정보를 저장할 수 있다. 기준 어드레스 레지스터(301)는 문맥 전환 동안 갱신될 수 있다.
TLB 플러시 필터(40)는 TLB(39) 내에 로드될 수 있는 어드레스 변환들을 포함하는 메모리의 블록들을 모니터하도록 구성된다. TLB 플러시 필터(40)가 상기 모니터된 메모리의 블록들에서 하나 이상의 어드레스 변환들에 대한 변경을 검출한 경우, 상기 필터(40)는 TLB(39)가 다음 문맥 전환 후에 플러시되게 한다. 상기 도시된 실시예에 있어서, TLB 플러시 필터는 TLB(39)의 플러시를 가능하게 하기 위해 무효화 신호를 어써트(assert)할 수 있다. 로드/저장 유닛(26)은 또한 신호(본원에 LS_TLB 무효화로서 도시됨)를 어써트함으로써 TLB(39)가 플러시되도록 할 수 있다. 이 신호는, 로드/저장 유닛(26)에 의해 어써트될 때, TLB(39)가 무조건적으로 플러시되게 하거나, 또는 다음 문맥 전환시 상기 TLB가 플러시되게 할 수 있다. 가능한 무조건 플러시의 생성들 중 일부를 도 5를 참조하여 이하에서 논의할 것이다.
TLB 플러시 필터(40)는 제 1 문맥 전환에 의해 활성화될 수 있다. 상기 제 1 문맥 전환은 컴퓨터 시스템의 초기 부팅 후에, 또는 상기 플러시 필터의 비활성화 후에 일어날 수 있다. 상기 제 1 문맥 전환은 TLB(39)의 플러시를 야기할 수 있다. 상기 제 1 문맥 전환에 후속하여, TLB(39)의 플러시는 TLB 플러시 필터(40)에 의해 필터링될 수 있다.
TLB 플러시 필터(40)는 버스 인터페이스 유닛(37)과 연결되며, 그것이 모니터하는 메모리의 블록에 관한 정보를 수신할 수 있다. 상기 도시된 실시예에 있어서, TLB 플러시 필터(40)는 버스 인터페이스 유닛(37)으로부터 페이지 디렉토리 엔트리를 수신할 수 있다. 다양한 실시예들에 있어서, TLB 플러시 필터(40)는 또한 페이지 디렉토리 엔트리, 페이지 디렉토리 포인터, 페이지 테이블, 또는 어드레스 변환에 이용될 수 있는 다른 데이터 구조에 관한 정보를 수신할 수 있다. 일반적으로, 어드레스 변환 정보를 저장하는 메모리 블록의 임의의 어드레스는 버스 인터페이스 유닛(37)에 의해 TLB 플러시 필터(40)에 제공될 수 있다. 또한, TLB 플러시 필터(40)는 버스 인터페이스 유닛(37)으로부터 스누프(snoop)(또는 프로브(probe)) 요구 신호 뿐만 아니라 영역 테이블의 탐색을 위해 스누프 어드레스를 수신할 수 있다(하기에 상세하게 설명될 것이다). 로드/저장 유닛이 특정 레지스터 버스(SRB) 링 주변에 기준 어드레스 레지스터(301)에 저장된 새로운 어드레스를 전송함에 따라, 문맥 전환이 일어날 때 TLB 플러시 필터(40)는 또한 로드/저장 유닛(26)으로부터 통지를 받을 수 있다.
일반적으로, 상기 SRB 링은 특정 레지스터와 통신하기 위해 이용될 수 있는 버스이다. 다양한 특정 레지스터들은 프로세서 전체의 다양한 유닛들에 위치할 수 있다. 상기 도시된 실시예에 있어서, 로드/저장 유닛(26)은 상기 SRB 링에 대한 버스 마스터로서 이용되며, 이에 의해 특정 레지스터들을 포함하는 판독 및 기입 동작들을 제어할 수 있다. 상기 SRB 링의 구현은 특정 레지스터들이, 이 레지스터들을 사용하는 논리에 근접하게 위치되게 하며, 여전히 로드/저장 유닛(26)의 제어하에 놓이도록 할 수 있다.
도 3을 참조하면, TLB 플러시 필터의 일 실시예의 블록도가 도시된다. TLB 플러시 필터(40)는 링 노드(401), 영역 테이블(402) 및 필터 회로(403)를 포함한다. 필터 회로(403)는 TLB(39)와 연결되어 있으며, 상기 TLB를 무효화하기 위해 즉, 플러시하기 위해 신호를 어써트할 수 있다. 영역 테이블(402)은 내용 어드레스 가능 메모리(CAM)와 랜덤 액세스 메모리(RAM)를 포함한다. 영역 테이블(402)의 상기 CAM 부분은 페이지 디렉토리 포인터뿐 아니라 관련된 태그들과 같은 어드레스들을 저장하는데 이용될 수 있으며, 또한, (도 2의) 기준 어드레스 레지스터(301)로부터의 기준 어드레스들을 저장할 수 있다. 상기 영역 테이블의 RAM 부분은 전형적으로 기준 어드레스 레지스터(301)로부터의 기준 어드레스와 관련된 태그를 저장한다. CAM 및 RAM 엔트리들은 이하에 더 상세하게 논의될 것이다.
영역 테이블(402)로의 엔트리들은 링 노드(401) 및 다중화기들(407)을 통해 TLB 플러시 필터(40)에 의해 수신될 수 있다. 또한, 다중화기들(407)은 여기에 도시된 페이지 디렉토리 엔트리(PDE) 속성과 같은 다른 정보를 수신하는데 이용될 수 있다. 이후, 다중화기들(407)을 통해 수신된 정보는 상기 CAM 또는 상기 RAM에 저장될 수 있다. 영역 테이블(402)로부터의 정보는 또한 링 노드(401)를 통해 상기 SRB 링 내로 전송될 수 있다.
또한, 2개의 카운터들은 영역 테이블(402)과 관련된다. 영역 카운터(404)는 상기 CAM으로의 엔트리의 수를 카운트하도록 구성되고, 기준 어드레스 레지스터 카운터(405)는 기준 어드레스 레지스터 태그들의 수를 카운트하도록 구성된다. 이들 카운터들 각각은 상기 영역 테이블에서 이용가능한 자원을 추적한다. 만약 상기 영역 테이블이 이용가능한 자원을 다 써버린다면, 카운터들 중 하나는 오버플로우 신호를 어써트할 수 있다. 예를 들어, 각각의 CAM 엔트리가 꽉 찼을 경우, 상기 영역 카운터는 오버플로우 신호를 어써트할 수 있다. 이 오버플로우 신호는 상기 TLB 플러시 필터를 비활성화하는데 이용될 수 있다. 유사하게, 모든 이용가능한 태그들이 상기 기준 어드레스 레지스터 카운터에 이용되는 경우, 그것은 또한 오버플로우할 수 있으며, 이로써 상기 TLB 플러시 필터를 비활성화할 수 있는 오버플로우 신호를 어써트한다. 이후, TLB 플러시 필터(40)의 비활성화 다음의 상기 제 1 문맥 전환에 의해 TLB가 플러시된다. TLB 플러시 필터(40)가 비활성화될 때, 두개의 카운터는 제어 논리(406)에 의해 리세트(reset)될 수 있다.
상술한 바와 같이, 영역 테이블(402)은 TLB 플러시 필터(40)의 동작 동안 다수의 엔트리들을 저장하도록 구성된다. 영역 테이블(402)의 엔트리들은 페이지 테이블 또는 어드레스 변환들을 TLB(39) 내로 로드하는데 이용될 수 있는 다른 데이터 구조에 대한 수정을 검출하는데 이용될 수 있다. 상기 페이지 테이블 또는 다른 데이터 구조가 변경되었을 때를 검출하기 위해, (도 1의) 버스 인터페이스 유닛(37)은 상기 영역 테이블을 프로브(즉, 스누프)할 수 있다. 상기 영역 테이블의 프로빙(probing)은 상기 프로세서 내의 일관성 프로토콜(coherency protocol)의 기능일 수 있다. 일반적으로, 상기 스누프 어드레스(snoop address)는 상기 영역 테이블(예를 들어, 상기 CAM)에 기록된 어드레스들과 비교된다. 상기 영역 테이블의 프로브가 히트(hit)를 야기하고(프로브 비교 결과가 일치하고), 상기 프로브가 TLB 플러시 필터(40)에 의해 모니터되는 메모리 블록에서 데이터를 수정하는 메모리 액세스(상기 TLB안에 어드레스 변환들을 로드하는데 이용되는 데이터의 잠재적인 변형을 나타냄)를 위한 것인 경우, 그 다음의 문맥 전환은 TLB(39)의 플러시를 야기할 수 있다. 상기 도시된 실시예에 있어서, 필터 회로(403)가 무효화 신호를 어써트할 때 TLB의 플러시가 일어날 수 있는 바, 이로써 TLB(39)에 현재 저장되어 있는 모든 엔트리들을 무효화한다. 전형적으로, 상기 영역 테이블의 탐색이 상기 CAM에 저장된 엔트리들 중 하나에 대해 일치하는 때, 히트가 발생한다. 상기 프로브로부터 어떤 히트도 발생하지 않는 경우, TLB 플러시 필터(40)는 그 다음 문맥 전환 후의 TLB 플러시를 방지할 수 있다.
도 4를 참조하면, 상기 TLB 플러시 필터의 일 실시예에 대한 영역 테이블 엔트리들을 예시하는 도면이 도시된다. 각각의 영역 테이블 엔트리는 CAM 엔트리(402-C)와 RAM 엔트리(402-R)를 포함한다. CAM 엔트리(402-C)는 유효 비트(V), 페이지 디렉토리 포인터(PDP) 비트 및 태그를 포함한다. 다양한 다른 실시예들에 있어서, CAM 엔트리들은 또한 메모리 속성 및 보호 정보와 같은 메모리 어드레스와 관련된 다른 타입의 정보를 포함할 수 있다. CAM 엔트리(402-C)의 태그는 전형적으로 상기 TLB에 있는 어드레스 변환에 대응하는 어드레스이다. 이 어드레스는 예를 들어, 페이지 디렉토리 포인터, 또는 페이지 디렉토리 엔트리로부터의 페이지 테이블 포인터, 또는 기준 어드레스 레지스터로부터의 기준 어드레스일 수 있다. 일 실시예에 있어서, 상기 어드레스는 메모리에서 물리적 어드레스에 대응하는 선형 어드레스일 수 있다. 태그에 의해 표시된 어드레스가 페이지 디렉토리 포인터에 대한 것일 경우, PDP 비트가 세트될 수 있다. 태그에 의해 표시된 어드레스가 페이지 디렉토리 엔트리에 대한 것일 경우, PDP 비트는 클리어될 수 있다. 상기 태그에 의해 표시된 어드레스가 상기 TLB 또는 페이지 테이블에 저장된 어드레스 변환에 대해 유효하다는 것을 나타내도록 상기 유효 비트가 세트될 수 있다. 상기 CAM 엔트리에 저장된 어드레스들은 상기 설명된 버스 인터페이스 유닛에 의해 프로브될 수 있는 바, 이로써, 어드레스 변환들이 상기 TLB 안에 로드되는 페이지 테이블 또는 다른 데이터 구조에 대해 임의의 수정이 발생하였는지를 TLB 플러시 필터(40)가 판단하게 한다.
RAM 엔트리(402-R)는 유효 비트와 기준 어드레스 레지스터 태그를 포함한다. 상기 도시된 실시예에 있어서, 상기 기준 어드레스 레지스터 태그는 상기 CAM에 저장될 수 있는 기준 어드레스 레지스터 엔트리와 관련될 수 있다. 상기 CAM에 저장된 상기 기준 어드레스 값은 이전에 조우했던 문맥 또는 현재 실행되는 문맥의 페이지 테이블(또는 다른 데이터 구조)에 대한 기준 어드레스일 수 있다. 이 실시예에서 상기 기준 어드레스 레지스터 태그는 단지 기준 어드레스에 대응하는 수이다. (전형적으로 각각의 문맥 전환와 함께 발생할 수 있는) 상기 기준 어드레스 레지스터의 각각의 변경 후, 상기 레지스터의 새로운 값은 상기 영역 테이블에 저장된 최후의 TLB 플러시 이후 발생된 예전의 값들과 비교된다. 어떤 일치도 발견되지 않는 경우(즉, 미스(miss)), 상기 레지스터의 값은 태그값을 할당받고 CAM에 저장되며, 관련 태그는 RAM에 저장된다. 일치는 상기 레지스터의 현재 값이 이미 영역 테이블에 저장된다는 것을 나타낸다. 따라서, 이전에 조우했던 문맥이 상기 프로세서에 의해 재개(resume)되는 경우, 이전에 이용했던 어드레스 변환들이 다시 이용될 수 있다. 일치가 있는 경우 어떤 새로운 태그도 할당될 필요가 없다.
도 5는 상기 필터 회로(403)의 일 실시예를 동작시키는 논리를 예시하는 논리도이다. 필터 회로(403)는 단지 어떤 상태가 만족될 때만 상기 TLB의 플러시가 일어나게 하는 논리를 포함한다. 필터 회로(403)는 도 1의 로드/저장 유닛(26)으로부터 LS_TLB 무효화 및 LS_TLB 무효화 M 신호를 수신하도록 구성된다. 상기 LS_TLB 무효화 신호는 상기 TLB 플러시 필터가 활성화되는지에 상관없이, 상기 TLB의 무조건 플러시를 야기할 수 있다. 상기 프로세서의 동작에 있어서 다양한 변경들은 상기 TLB의 플러시를 필요로 할 수 있다. 이들 조건들은 페이징을 턴오프하거나, 글로벌 페이징을 턴온하거나, 메모리 타입을 변경하거나, 또는 메모리 속성들을 변경하는 것을 포함하지만, 이러한 조건들은 이러한 기능에 국한되는 것이 아니다. 어써트될 때, 상기 LS_TLB 무효화 신호는 상기 도면에 도시된 OR 게이트와 D 플립플롭을 통해 전파될 수 있다. 그 후에, 이에 의해 상기 FF_TLB 무효화 신호가 어써트되며(이 신호는 도 2와 3에 도시된 무효화 신호와 동일하다), 그 다음의 문맥 전환 후에 상기 TLB의 플러시가 가능하게 된다.
상기 LS_TLB 무효화 M 신호는 수정이 발생한 경우, 상기 TLB가 플러시되는 것임을 나타내는데 이용될 수 있다. 이 신호는 상기 TLB 플러시 필터가 활성화될 때 논리적 하이(high) 상태로 유지될 수 있다. 수정은 하부 어드레스 변환들에 대한 변경들 또는 (상기 카운터가 오버플로우일 때와 같은) 상기 플러시 필터의 상태에서의 변경들을 포함할 수 있다. LS_TLB 무효화 M 신호가 논리적 하이로 어써트되고 상기 /CLR 신호가 로우(low)로 어써트될 때(그리고 상기 AND 게이트 내에 입력되기 전에 변환될 때) 상기 FF_TLB 무효화 신호가 어써트될 수 있다.
상기 /CLR 신호는 여러 서로 다른 조건들 중 하나에 의해 논리적 로우 상태로 구동될 수 있다. 이들 조건들은 대안적인 실시예들에 의해 변동할 수 있다. 상기 도시된 실시예에 있어서, 이러한 조건들은 상기 플러시 필터의 리세트(리세트 신호), 페이지 데이터의 수정(도 3에 히트 신호로 도시되어 있는 페이지 데이터 수정 신호), 카운터들의 오버플로우(영역 카운터 오버플로우 신호, 기준 어드레스 레지스터 카운터 오버플로우 신호), 또는 상기 플러시 필터의 기능을 억제하는 신호(플러시 필터 디스에이블 신호)를 포함할 수 있다. 도 5의 논리 회로에 이들 조건들 각각에 대한 신호들이 존재한다. 상기 /CLR 신호는 전형적으로 상기 도시된 실시예에서 논리적 하이 상태로 유지되며, 도면에 도시된 7-입력 AND 게이트로의 입력이 되도록 (OR 게이트를 포함하는) 피드백 회로를 통해 전파될 수 있다. 또한, 상기 FF_TLB 무효화 신호는 피드백 회로를 통해 그리고 그것이 어써트될 때 상기 OR 게이트를 통해 전파될 수 있다. 조건 중 어느 것을 논리적 하이 상태로 구동함으로써, (상기 변환기들로 인해) 상기 AND 게이트에 논리적 로우 입력이 제공되며, 이로써 상기 /CLR 신호가 논리적 로우 상태로 어써트되게 한다.
도 6을 참조하면, 상기 TLB 플러시 필터의 일 실시예의 동작을 예시하는 타이밍도가 도시된다. 상기 타이밍도는 예시적으로 상기 플러시 필터의 기본적인 동작을 도시하고자 하는 것이며, 모든 가능한 조건들 또는 발생할 수 있는 결과들을 포함하고자 하는 것은 아니다. 또한, 상기 타이밍도는 상기 플러시 필터의 구현을 이것에만 한정하고자 하는 것이 아니며, 이는 서로 다른 실시예들에 따라 변할 수 있다.
상기 TLB 플러시 필터는 제 1 문맥 전환에 의해 초기에 활성화될 수 있다. 상기 플러시 필터는 제 1 문맥 전환 이전에 활성화되지 않았기 때문에 상기 TLB의 플러시가 필터링되지 않는다. 상기 제 1 문맥 전환 후에, 페이지 테이블(A)은 메모리 내로 로드된다. 페이지 테이블(A)은 새로운 문맥과 관련되며, 따라서 대응하는 어드레스 변환들이 상기 TLB 내로 로드될 때, 이 페이지 테이블에 대응하는 엔트리들은 도 3의 영역 테이블 내로 로드될 수 있다. 페이지 테이블(A)의 로드 후에, 다른 문맥 전환이 일어난다. 이 경우에, 상기 TLB의 플러시는 상기 활성화된 TLB 플러시 필터에 의해 방지될 수 있다. 이는 문맥 전환들 사이에 플러시가 발생되어야 함을 필요로 하는 어떤 조건도 없음을 나타낸다. 본 예에서는, 문맥 전환들 사이에 페이지 테이블(A)에 대한 어떤 변경도 이루어지지 않는다.
상기 제 2 문맥 전환 후에, 페이지 테이블(B)은 메모리 내로 로드된다. 페이지 테이블(B)은 어드레스 변환들을 포함할 수 있으며, 그것들의 일부는 상기 TLB 내로 로드될 수 있다. 페이지 테이블(B)을 메모리 내로 로드한 다음에, 페이지 테이블(B)이 수정된다. 이와 같이, 페이지 테이블(B)로부터 상기 TLB 내로 로드된 일부 어드레스 변환들이 더 이상 유효하지 않게 될 수 있다. 따라서, 상기 TLB 플러시 필터는 다음 문맥 전환 후 TLB 플러시(여기서는 필터링된 플러시로서 나타냄)가 발생하게 할 수 있다.
상기 필터링된 플러시 후에 발생할 수 있는 다음의 이벤트(event)는 페이지 테이블(C)의 로드이다. 도 3을 참조하여 논의된 바와 같이, 영역 카운터는 상기 영역 테이블의 상기 CAM 부분을 추적하며, 상기 영역 테이블이 더 많은 엔트리에 대해 공간을 다 써버린다면, 오버플로우할 수 있다. 상기 도시된 도면에 있어서, 이것은 페이지 테이블(C)의 로드 다음에 발생하여, 상기 영역 카운터가 오버플로우하게 한다. 상기 영역 카운터의 오버플로우는 상기 TLB 플러시 필터가 비활성화되게 한다. 제 1 문맥 전환의 비활성화하에서, 상기 TLB는 플러시될 수 있다. 상기 제 1 문맥 전환은 또한 상기 TLB 플러시 필터가 재활성화되게 한다.
도 7a 및 7b는 영역 테이블에서 엔트리들에 의해 커버되는 페이징 구조와 TLB 플러시 필터(40)의 일 실시예로서 페이징 구조에 대응하는 엔트리들을 갖는 영역 테이블을 예시하는 블록도이다. 도 7a에서, 기준 어드레스 레지스터(301)는 페이지 디렉토리 포인터들의 영역(R0)을 나타내는 어드레스를 저장할 수 있다. 상기 영역에 있는 각각의 엔트리는 페이지 디렉토리를 나타낸다.
도 8을 참조하면, 버스 브리지(202)를 통해 다양한 시스템 구성요소들과 연결된 프로세서(10)를 포함하는 컴퓨터 시스템(200)의 일 실시예의 블록도가 도시된다. 다른 실시예들도 가능하며 고려될 수 있다. 상기 도시된 시스템에서, 메인 메모리(204)는 메모리 버스(206)를 통해 버스 브리지(202)와 연결되며, 그래픽 제어기(208)는 AGP 버스(210)를 통해 버스 브리지(202)와 연결된다. 마지막으로, 다수의 PCI 디바이스들(212A-212B)은 PCI 버스(214)를 통해 버스 브리지(202)와 연결된다. 또한, EISA/ISA 버스(220)를 통해 하나 이상의 EISA 또는 ISA 디바이스들(218)에 전기적 인터페이스를 제공하기 위해 2차 버스 브리지(216)가 제공될 수 있다. 프로세서(10)는 CPU 버스(224)를 통해 버스 브리지(202) 및 임의선택적 L2 캐시(228)와 연결된다.
버스 브리지(202)는 프로세서(10), 메인 메모리(204), 그래픽 제어기(208) 및 PCI 버스(214)에 장착된 디바이스들 사이에 인터페이스를 제공한다. 버스 브리지(202)와 연결된 디바이스들 중 하나로부터 동작이 수신될 때, 버스 브리지(202)는 상기 동작의 타겟(예를 들어, 특정 디바이스. PCI 버스(214)의 경우, 상기 타겟은 PCI 버스(214)가 됨)을 식별한다. 버스 브리지(202)는 상기 타겟 디바이스로 동작을 라우팅한다. 일반적으로 버스 브리지(202)는 소스 디바이스 또는 버스에 의해 이용되는 프로토콜로부터 상기 타겟 디바이스 또는 버스에 의해 이용되는 프로토콜로 동작을 변환한다.
PCI 버스(214)에 ISA/EISA 버스로의 인터페이스를 제공하는 것에 더하여, 원하는 경우 2차 버스 브리지(216)는 추가 기능을 통합할 수 있다. 2차 버스 브리지(216)의 외부에 있거나 또는 2차 버스 브리지(216)와 통합되어 있는 입/출력 제어기(미도시)가 또한 필요한 경우, 키보드 및 마우스(222)와 다양한 직렬 및 병렬 포트에 대한 동작 지원을 제공하도록 컴퓨터 시스템(200) 내에 포함될 수 있다. 외부 캐시 유닛(미도시)이 또한 다른 실시예들에 있어서 프로세서(10)와 버스 브리지(202) 사이에 있는 CPU 버스(224)와 연결될 수 있다. 대안적으로, 상기 외부 캐시는 버스 브리지(202)와 연결될 수 있으며, 상기 외부 캐시를 위한 캐시 제어 논리는 버스 브리지(202) 내에 통합될 수 있다. 또한, L2 캐시(228)가 프로세서(10)에 대한 후방(backside) 구성으로서 도시된다. L2 캐시(228)는 프로세서(10)로부터 분리될 수 있거나, 프로세서(10)와 카트리지(예를 들어, 슬롯 1 또는 슬롯 A) 내에 통합되거나, 또는 프로세서(10)와 반도체 기판 상에 통합될 수도 있음을 주목할 필요가 있다.
메인 메모리(204)는 응용 프로그램이 저장되는 메모리이고, 프로세서(10)는 주로 상기 메모리로부터 프로그램을 실행한다. 적절한 메인 메모리(204)는 DRAM(동적 랜덤 액세스 메모리)을 포함한다. 예를 들어, SDRAM(동기식 DRAM) 또는 램버스 DRAM(RDRAM)의 다수의 뱅크들이 적절할 수 있다.
PCI 디바이스들(212A-212B)은 예를 들어, 네트워크 인터페이스 카드, 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 제어기, SCSI(소형 컴퓨터 시스템 인터페이스) 어댑터 및 전화 카드와 같은 다양한 주변 장치의 예시이다. 유사하게, ISA 디바이스(218)는 모뎀, 사운드 카드 및 GPIB 또는 필드(field) 버스 인터페이스 카드와 같은 데이터 획득 카드 등을 포함하는 다양한 타입의 주변 장치의 예시이다.
그래픽 제어기(208)는 디스플레이(226)에서 텍스트 및 이미지의 표현을 제어하도록 제공된다. 그래픽 제어기(208)는 메인 메모리(204) 내에 그리고 메인 메모리(204)로부터 효과적으로 시프트될 수 있는 3차원 데이터 구조를 표현하기 위해 이 기술분야에서 일반적으로 알려져 있는 전형적인 그래픽 가속기를 구현할 수 있다. 따라서, 버스 브리지(202) 내의 타겟 인터페이스에 대한 액세스를 요구 및 수신할 수 있으며, 이에 의해 메인 메모리(204)에 대한 액세스를 획득할 수 있다는 점에서 그래픽 제어기(208)는 AGP 버스(210)의 마스터일 수 있다. 전용 그래픽 버스는 메인 메모리(204)로부터 데이터의 빠른 검색을 제공해준다. 특정 동작의 경우, 그래픽 제어기(208)는 AGP 버스(210)에 PCI 프로토콜 트랜잭션을 발생시키도록 더 구성될 수 있다. 그러므로, 버스 브리지(202)의 상기 AGP 인터페이스는 AGP 프로토콜 트랜잭션 뿐만 아니라 PCI 프로토콜 타겟 및 개시 트랜잭션 둘다를 지원하기 위한 기능을 포함할 수 있다. 디스플레이(226)는 이미지 또는 텍스트가 제시되는 임의의 전자식 디스플레이이다. 적절한 디스플레이(226)는 음극선관("CRT"), 액정 디스플레이("LCD") 등을 포함한다.
상기 AGP, PCI 및 ISA 또는 EISA 버스들은 상기의 설명에서 예로서 이용되었으며, 바람직한 경우 임의의 버스 아키텍처들이 대체될 수 있음에 주목할 필요가 있다. 또한, 주목할 사항으로서 컴퓨터 시스템(200)은 추가적인 프로세서들(예를 들어, 컴퓨터 시스템(200)의 선택 요소로서 도시된 프로세서(10a))을 포함하는 다중처리 컴퓨터 시스템일 수 있다. 프로세서(10a)는 프로세서(10)와 유사할 수 있다. 특히, 프로세서(10a)는 프로세서(10)의 동일 카피일 수도 있다. 프로세서(10a)는 독립적인 버스(도 5에 도시됨)를 통해 버스 브리지(202)와 연결될 수 있거나, 프로세서(10)와 CPU 버스(224)를 공유할 수도 있다. 또한, 프로세서(10a)는 L2 캐시(228)와 유사한 임의선택 L2 캐시(228a)와 연결될 수 있다.
삭제
본 발명은 마이크로프로세서 및 변환 색인 버퍼들에 응용가능하다.

Claims (25)

  1. 어드레스 변환들을 저장하는 변환 색인 버퍼(TLB)와; 그리고
    상기 변환 색인 버퍼와 연결된 변환 색인 버퍼 플러시 필터를 포함하며,
    여기서 상기 변환 색인 버퍼 플러시 필터는 상기 어드레스 변환들이 상기 변환 색인 버퍼 내로 판독 및 캐시될 수 있는 메모리 블록들을 모니터하고 상기 메모리 블록들에 있는 상기 어드레스 변환들 중 임의의 변환이 변경되었는지 여부를 판단하도록 구성되며, 여기서 상기 변환 색인 버퍼 플러시 필터는 문맥 전환에 응답하여, 상기 어드레스 변환들이 변경되었을 경우 상기 변환 색인 버퍼가 플러시되게 하도록 더 구성되며, 여기서 상기 변환 색인 버퍼 플러시 필터는 상기 어드레스 변환들이 변경되지 않았을 경우 상기 변환 색인 버퍼의 플러시를 방지하도록 구성되는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 제 1 문맥 전환에 의해 활성화되는 것을 특징으로 하는 프로세서.
  3. 제 2 항에 있어서, 상기 제 1 문맥 전환은 상기 변환 색인 버퍼의 플러시를 야기하는 것을 특징으로 하는 프로세서.
  4. 제 1 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 메모리 블록들을 추적하는 영역 테이블을 포함하는 것을 특징으로 하는 프로세서.
  5. 제 4 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 메모리 블록들 내의 메모리 위치의 수정을 검출하도록 구성되며, 여기서 상기 변환 색인 버퍼 플러시 필터는 그 다음의 문맥 전환에 응답하여, 그리고 상기 메모리 위치의 상기 수정을 검출함에 응답하여, 상기 변환 색인 버퍼가 플러시되게 하도록 구성되는 것을 특징으로 하는 프로세서.
  6. 제 4 항에 있어서, 상기 영역 테이블은 내용 어드레스 가능 메모리(CAM)와 랜덤 액세스 메모리(RAM)를 포함하는 것을 특징으로 하는 프로세서.
  7. 제 6 항에 있어서, 상기 내용 어드레스 가능 메모리는 다수의 엔트리들을 저장하도록 구성되며, 여기서 상기 다수의 엔트리들 각각은 상기 메모리 블록들과 관련된 어드레스 정보를 포함하는 것을 특징으로 하는 프로세서.
  8. 제 7 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 내용 어드레스 가능 메모리 내의 엔트리들의 수를 카운트하도록 구성된 카운터를 포함하는 것을 특징으로 하는 프로세서.
  9. 제 8 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 카운터가 오버플로우할 때 비활성화되는 것을 특징으로 하는 프로세서.
  10. 제 6 항에 있어서, 상기 랜덤 액세스 메모리는 복수의 엔트리들을 저장하도록 구성되며, 여기서 상기 복수의 엔트리들 각각은 기준 어드레스와 관련된 태그를 저장하도록 구성되는 것을 특징으로 하는 프로세서.
  11. 제 10 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 내용 어드레스 가능 메모리를 미스(miss)하는 기준 어드레스에 응답하여 새로운 태그를 제공하도록 구성된 카운터를 포함하는 것을 특징으로 하는 프로세서.
  12. 제 11 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 카운터가 오버플로우할 때 비활성화되는 것을 특징으로 하는 프로세서.
  13. 변환 색인 버퍼(TLB)에 어드레스 변환들을 저장하는 단계와, 상기 어드레스 변환들은 하나 이상의 메모리 블록들로부터 상기 변환색인버퍼 내로 로드되고;
    상기 하나 이상의 메모리 블록들에 저장된 임의의 어드레스 변환들이 변경되었는지 여부를 판단하는 단계와;
    상기 하나 이상의 메모리 블록들에 저장된 상기 어드레스 변환들 중 임의의 변환이 변경되었을 경우, 상기 변환 색인 버퍼를 플러시하는 단계와, 상기 플러시는 문맥 전환에 응답하며; 그리고
    상기 하나 이상의 메모리 블록들에 저장된 상기 어드레스 변환들 중 어느 것도 변경되지 않았을 경우, 문맥 전환에 응답하여 상기 변환 색인 버퍼의 플러시를 방지하는 단계를 포함하며, 여기서 상기 변환 색인 버퍼의 플러시는 변환 색인 버퍼 플러시 필터에 의해 방지되는 것을 특징으로 하는 프로세서 동작 방법.
  14. 제 13 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 제 1 문맥 전환에 의해 활성화되는 것을 특징으로 하는 프로세서 동작 방법.
  15. 제 14 항에 있어서, 상기 제 1 문맥 전환은 상기 변환 색인 버퍼의 플러시를 야기하는 것을 특징으로 하는 프로세서 동작 방법.
  16. 제 13 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 하나 이상의 메모리 블록들에 저장된 상기 어드레스 변환들을 모니터하도록 구성된 영역 테이블을 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  17. 제 16 항에 있어서, 상기 변환 색인 버퍼의 플러시는 상기 하나 이상의 메모리 블록들에 저장된 하나 이상의 상기 어드레스 변환들에 대한 변경의 검출 후, 그 다음의 문맥 전환에 응답하여 발생하며, 상기 검출은 상기 영역 테이블에서 발생하는 것을 특징으로 하는 프로세서 동작 방법.
  18. 제 16 항에 있어서, 상기 영역 테이블은 내용 어드레스 가능 메모리(CAM) 및 랜덤 액세스 메모리(RAM)를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  19. 제 18 항에 있어서, 상기 내용 어드레스 가능 메모리는 복수의 엔트리들을 저장하도록 구성되며, 여기서 상기 엔트리들의 각각은 상기 하나 이상의 메모리 블록들과 관련된 정보를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  20. 제 19 항에 있어서, 카운터가 상기 내용 어드레스 가능 메모리에 저장된 엔트리들의 수를 카운트하도록 구성되는 것을 특징으로 하는 프로세서 동작 방법.
  21. 제 20 항에 있어서, 상기 카운터의 오버플로우는 상기 변환 색인 버퍼 플러시 필터가 비활성화되게 하는 것을 특징으로 하는 프로세서 동작 방법.
  22. 제 18 항에 있어서, 상기 랜덤 액세스 메모리는 복수의 엔트리들을 저장하도록 구성되며, 상기 엔트리들의 각각은 기준 어드레스와 상기 기준 어드레스와 관련된 태그를 포함하는 것을 특징으로 하는 프로세서 동작 방법.
  23. 제 22 항에 있어서, 카운터가 상기 랜덤 액세스 메모리의 엔트리들의 수를 카운트하도록 구성되는 것을 특징으로 하는 프로세서 동작 방법.
  24. 제 23 항에 있어서, 상기 변환 색인 버퍼 플러시 필터는 상기 카운터가 오버플로우할 때 비활성화되는 것을 특징으로 하는 프로세서 동작 방법.
  25. 복수의 엔트리들을 갖는 메모리 회로와, 여기서 상기 복수의 엔트리들 각각은 어드레스 변환들을 저장하기 위한 메모리 블록의 어드레스를 저장하도록 구성되며; 그리고
    상기 메모리 회로에 연결된 회로를 포함하며, 여기서 상기 회로는 상기 메모리 회로에 저장된 상기 복수의 엔트리들에 대응하는 상기 어드레스 변환들이 변경된 경우에 문맥 전환에 응답하여 변환 색인 버퍼(TLB)의 플러시를 허용하도록 구성되며, 여기서 상기 회로는 상기 어드레스 변환들이 변경되지 않은 경우에 상기 변환 색인 버퍼의 플러시를 방지하도록 구성되는 것을 특징으로 하는 장치.
KR1020027017127A 2000-06-15 2001-03-09 변환 색인 버퍼 플러시 필터 KR100804285B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/595,597 US6510508B1 (en) 2000-06-15 2000-06-15 Translation lookaside buffer flush filter
US09/595,597 2000-06-15
PCT/US2001/007591 WO2001097043A1 (en) 2000-06-15 2001-03-09 A translation lookaside buffer flush filter

Publications (2)

Publication Number Publication Date
KR20030010727A KR20030010727A (ko) 2003-02-05
KR100804285B1 true KR100804285B1 (ko) 2008-02-18

Family

ID=24383899

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027017127A KR100804285B1 (ko) 2000-06-15 2001-03-09 변환 색인 버퍼 플러시 필터

Country Status (8)

Country Link
US (1) US6510508B1 (ko)
EP (1) EP1290562B1 (ko)
JP (1) JP4437001B2 (ko)
KR (1) KR100804285B1 (ko)
CN (1) CN1304962C (ko)
DE (1) DE60102017T2 (ko)
TW (1) TW561341B (ko)
WO (1) WO2001097043A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE0003446L (sv) * 2000-09-27 2002-03-28 Ericsson Telefon Ab L M En pipelinemikroprocessor och ett förfarnade relaterande därtill
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6910097B1 (en) * 2001-04-09 2005-06-21 Netlogic Microsystems, Inc. Classless interdomain routing using binary content addressable memory
US6622211B2 (en) * 2001-08-15 2003-09-16 Ip-First, L.L.C. Virtual set cache that redirects store data to correct virtual set to avoid virtual set store miss penalty
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7089396B2 (en) * 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
US7552255B1 (en) 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7711898B2 (en) * 2003-12-18 2010-05-04 Intel Corporation Register alias table cache to map a logical register to a physical register
US7082486B2 (en) * 2004-01-14 2006-07-25 International Business Machines Corporation Method and apparatus for counting interrupts by type
US20050273575A1 (en) * 2004-06-02 2005-12-08 Mukherjee Shubhendu S Mechanism to invalidate data translation buffer entries a multiprocessor system
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7840850B2 (en) 2005-04-11 2010-11-23 Hewlett-Packard Development Company, L.P. Data processing system for logging memory access data
US7823151B2 (en) * 2005-06-15 2010-10-26 Intel Corporation Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB
US7606363B1 (en) 2005-07-26 2009-10-20 Rockwell Collins, Inc. System and method for context switching of a cryptographic engine
US7634642B2 (en) * 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US7631147B2 (en) * 2006-12-06 2009-12-08 Microsoft Corporation Efficient flushing of translation lookaside buffers in a multiprocessor environment
US20080263256A1 (en) * 2007-04-20 2008-10-23 Motorola, Inc. Logic Device with Write Protected Memory Management Unit Registers
US8538000B2 (en) * 2007-08-10 2013-09-17 Tekelec, Inc. Methods, systems, and computer program products for performing message deposit transaction screening
US8601234B2 (en) 2007-11-07 2013-12-03 Qualcomm Incorporated Configurable translation lookaside buffer
US7937556B2 (en) * 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US9886391B2 (en) * 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
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
US20160179726A1 (en) * 2014-12-17 2016-06-23 Qualcomm Incorporated Programming hardware registers using a pipelined register bus, and related methods, systems, and apparatuses
US10599566B2 (en) * 2016-11-29 2020-03-24 Qualcomm Incorporated Multi-mode cache invalidation
US10353825B2 (en) 2017-06-16 2019-07-16 International Business Machines Corporation Suspending translation look-aside buffer purge execution in a multi-processor environment
US10318436B2 (en) * 2017-07-25 2019-06-11 Qualcomm Incorporated Precise invalidation of virtually tagged caches
US10552162B2 (en) 2018-01-22 2020-02-04 International Business Machines Corporation Variable latency flush filtering
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

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
EP0568195A1 (en) * 1992-04-29 1993-11-03 International Business Machines Corporation Data processing system having multiple virtual address spaces
DE19516949A1 (de) * 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US6021481A (en) 1997-11-10 2000-02-01 International Business Machines Corporation Effective-to-real address cache managing apparatus and method

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US602148A (en) * 1898-04-12 John- w
JPS5687282A (en) 1979-12-14 1981-07-15 Nec Corp Data processor
US4669043A (en) 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US5060137A (en) 1985-06-28 1991-10-22 Hewlett-Packard Company Explicit instructions for control of translation lookaside buffers
GB2210479B (en) 1987-10-02 1992-06-17 Sun Microsystems Inc Alias address support.
DE69427734T2 (de) 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher
US5680572A (en) 1994-02-28 1997-10-21 Intel Corporation Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
ZA954460B (en) 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
US5752274A (en) 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5924125A (en) 1995-08-01 1999-07-13 Arya; Siamak Method and apparatus for parallel access to consecutive TLB entries
US5895501A (en) 1996-09-03 1999-04-20 Cray Research, Inc. Virtual memory system for vector based computer systems
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
EP0568195A1 (en) * 1992-04-29 1993-11-03 International Business Machines Corporation Data processing system having multiple virtual address spaces
DE19516949A1 (de) * 1994-05-11 1996-02-15 Gmd Gmbh Speichervorrichtung zum Speichern von Daten
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US6021481A (en) 1997-11-10 2000-02-01 International Business Machines Corporation Effective-to-real address cache managing apparatus and method

Also Published As

Publication number Publication date
US6510508B1 (en) 2003-01-21
KR20030010727A (ko) 2003-02-05
JP4437001B2 (ja) 2010-03-24
CN1436332A (zh) 2003-08-13
EP1290562A1 (en) 2003-03-12
CN1304962C (zh) 2007-03-14
EP1290562B1 (en) 2004-02-11
DE60102017D1 (de) 2004-03-18
TW561341B (en) 2003-11-11
JP2004503870A (ja) 2004-02-05
WO2001097043A1 (en) 2001-12-20
DE60102017T2 (de) 2004-11-25

Similar Documents

Publication Publication Date Title
KR100804285B1 (ko) 변환 색인 버퍼 플러시 필터
US6349365B1 (en) User-prioritized cache replacement
EP0795828B1 (en) Dynamic set prediction method and apparatus for a multi-level cache system
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
KR100734529B1 (ko) 밀접하게 결합된 다중 프로세서를 위한 고속의 다중 스레딩
EP0651332B1 (en) Linearly addressable microprocessor cache
US5671444A (en) Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US6185675B1 (en) Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
KR100880686B1 (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US7133968B2 (en) Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions
US5680572A (en) Cache memory system having data and tag arrays and multi-purpose buffer assembly with multiple line buffers
US6125441A (en) Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
US6092182A (en) Using ECC/parity bits to store predecode information
US5752274A (en) Address translation unit employing a victim TLB
US7996650B2 (en) Microprocessor that performs speculative tablewalks
US20110145509A1 (en) Cache directed sequential prefetch
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
US5715427A (en) Semi-associative cache with MRU/LRU replacement
US6175898B1 (en) Method for prefetching data using a micro-TLB
US20070033385A1 (en) Call return stack way prediction repair
US6240506B1 (en) Expanding instructions with variable-length operands to a fixed length
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6446189B1 (en) Computer system including a novel address translation mechanism

Legal Events

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

Payment date: 20110201

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee