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

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

Info

Publication number
KR20030010727A
KR20030010727A KR1020027017127A KR20027017127A KR20030010727A KR 20030010727 A KR20030010727 A KR 20030010727A KR 1020027017127 A KR1020027017127 A KR 1020027017127A KR 20027017127 A KR20027017127 A KR 20027017127A KR 20030010727 A KR20030010727 A KR 20030010727A
Authority
KR
South Korea
Prior art keywords
tlb
flush
address
flush filter
memory
Prior art date
Application number
KR1020027017127A
Other languages
English (en)
Other versions
KR100804285B1 (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

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}
메모리 관리를 이용하는 컴퓨터 시스템은 메모리 액세스를 수행하기 위해서 가상 어드레스(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 플러시(TLB flush)로서 알려져 있다. 문맥 전환에 해당하는 어드레스 변환들 중 하나 또는 그 이상이 변경될 수 있으며, 따라서 TLB에 있는 변환값이 더이상 정확한 변환값이 아니기 때문에 상기 TLB는 플러시(flush)된다. 불행하게도, 상기 문맥 전환 후에 새로운 프로세스가 구동되기 때문에, 각각의 메모리 액세스는 어드레스 변환을 요구하며, 상기 TLB는 다시 적재되어야 한다. 상기 TLB의 상기 어드레스 변환 및 재적재(reloading)는 상당한 지연 패널티를 초래할 수 있다. 이들 지연 패널티는 잦은 문맥 전환을 요구하는 프로그램들 또는 운영체제에 의해 더욱 심각하게 될 수 있다.
TLB에 저장된 상기 어드레스 변환들은 메모리에 저장된 하부 데이터 구조들에 의해 지원된다. 예를 들어, 페이징(paging)을 이용하는 컴퓨터들은 페이지 테이블에 데이터 구조들을 저장할 수 있다. 이러한 데이터 구조들은 상기 TLB 안에 적재되는 변환들을 포함할 수 있다. 이들 데이터 구조들은 문맥 전환을 통해 전환되었던 문맥에 대해 변경될 수 있지만, 종종 이들 데이터 구조들은 변경되지 않는다. 상기 데이터 구조들은 모든 경우에 변경되지 않는다는 사실에도 불구하고, 전형적인 프로세서는 여전히 상기 TLB의 플러시를 수행한다. 이런 경우, TLB 플러시는 필요하지 않으며, 상기 설명된 바와 같이 상당한 지연 패널티를 초래할 수 있다.
본 발명은 프로세서들에 관한 것으로 특히, 어드레스 변환(address translation)을 저장하는데 이용되는 변환 색인 버퍼(translation lookaside buffer)에 관한 것이다.
본 발명의 다른 목적들 및 장점들은 첨부 도면을 참조하여 하기의 상세한 설명을 읽었을 때 명백하게 될 것이다.
도 1은 TLB 플러시 필터가 실시될 수 있는 프로세서의 일 실시예의 블럭도이고;
도 2는 TLB 플러시 필터를 이용하는 프로세서의 일부분의 일 실시예의 블럭도이고;
도 3은 TLB 플러시 필터의 일 실시예의 블럭도이고;
도 4는 상기 TLB 플러시 필터의 일 실시예에 대한 영역 테이블 엔트리를 예시하는 도표이고;
도 5는 상기 TLB 플러시 필터의 일 실시예를 동작시키는 로직을 예시하는 로직도이고;
도 6은 상기 TLB 플러시 필터의 일 실시예의 동작을 예시하는 타이밍도이고;
도 7a는 영역 테이블에서 엔트리가 포함된 페이징 구조를 예시하는 블럭도이고;
도 7b는 도 7a에 예시된 상기 페이징 구조에 대응하는 엔트리를 갖는 영역 테이블을 예시하는 블럭도이고; 그리고
도 8은 TLB 플러시 필터가 실시되는 컴퓨터 시스템의 일 실시예의 블럭도이다.
본 발명은 다양한 수정들과 변형들을 갖지만, 본원에서는 특정 실시예들이 상기 도면들에 예시적으로 도시되어 상세히 설명된다. 그러나, 이러한 도면들 및 상세한 설명은 본 발명을 개시된 특정 형태들로 한정하지 않으며, 첨부된 청구항들에 의해 규정되는 본 발명의 정신 및 범위 내에 있는 모든 수정들, 등가물들 및 대안들을 포함한다는 것을 이해해야 한다.
상기 문제점들은 본원에 설명된 변환 색인 버퍼(TLB) 플러시 필터에 의해 대부분 해결될 수 있다. 일 실시예에 있어서, 프로세서는 최근의 어드레스 변환들을 저장하는 TLB를 포함한다. TLB 플러시 필터는 어드레스 변환들이 상기 TLB에 적재 및 캐시되는 메모리 블럭들을 모니터한다. 상기 TLB 플러시 필터는 메모리에서 하부 어드레스 변환들 중 어느 것이 변경되었는지 여부를 결정하도록 구성된다. 어떤 변경도 발생하지 않았다면, 상기 TLB 플러시 필터는 문맥 전환에서 상기 TLB의 플러시를 방지할 수 있다. 상기 하부 어드레스 변환들에 대해 변경이 발생했다면, 상기 TLB 플러시 필터는 문맥 전환 후에 상기 TLB의 플러시를 가능하게 할 수 있다.
일 실시예에 있어서, 상기 TLB 플러시 필터는 어드레스 변환들이 상기 TLB에 캐시되었던 메모리 블럭들을 트래킹하기 위해 영역 테이블(region table)을 이용한다. 상기 TLB 플러시 필터는 다양한 메모리 블럭(전형적으로 페이지 테이블 또는 디렉토리)의 상기 하부 어드레스 변환들에 대한 변경을 모니터할 수 있다. 제 1 문맥 전환은 TLB 플러시를 야기할 수 있으며, 이후 상기 TLB 플러시 필터를 활성화한다. 상기 영역 테이블에서 메모리의 상기 하부 어드레스 변환들에 대한 어떤 변경도 검출되지 않는다면, 후속 문맥 전환에서 상기 TLB 플러시 필터에 의해 TLB 플러시들이 차단될 수 있다.
또한, 상기 TLB 플러시 필터를 동작시키는 방법은 문맥 전환을 트래킹하는 단계를 포함한다. 일 실시예에 있어서, 이는 기본 어드레스 레지스터(base address register)의 값에 태그(tag)를 붙임으로써 수행될 수 있다. 상기 기본 어드레스 레지스터는 특정 문맥과 관련된 페이지 테이블의 기본 어드레스를 저장하도록 구성될 수 있다. 상기 레지스터의 태그와 실제 값은 상기 영역 테이블에 엔트리(entry)로서 저장될 수 있으며, 특정 메모리 영역에 대응할 수 있다. 상기 태그는 다른 데이터와 함께 TLB 엔트리에 저장되어, 상기 엔트리에 있는 변환을 한 문맥와 관련시킨다. 이런 식으로, 각기 다른 문맥들에 대한 변환들은 동시에 상기 TLB에 존재할 수 있다. 현 문맥에서는 현 문맥 태그와 일치하는 문맥 태그들을 가진 변환만이 이용가능하다.
일 실시예에서 이용된 상기 영역 테이블은 내용 주소화 메모리(CAM) 및 랜덤 액세스 메모리(RAM)로 구현된다. 상기 CAM은 어드레스 변환들이 상기 TLB로 적재되는 메모리 구조에 관한 정보를 저장하는데 이용될 수 있다. 이러한 정보는 페이지 디렉토리 정보와 페이지 테이블 정보를 포함할 수 있다. 상기 RAM은 기본 어드레스 레지스터와 그것의 관련된 태그의 값을 저장하는데 이용될 수 있다. 또한, 다수의 기본 어드레스 엔트리를 트래킹하기 위해 카운터가 이용될 수 있다. 상기 카운터가 오버플로우(overflow)일 때, 상기 TLB 플러시 필터는 비활성화될 수 있으며, 상기 영역 테이블은 클리어(clear)될 수 있다. 또한, 상기 CAM에 저장된 다수의 엔트리를 기록하기 위해 영역 카운터가 이용될 수 있다. 또한, 이 카운터의 오버플로우는 상기 TLB 플러시 필터가 비활성화되고 상기 영역 테이블이 클리어되도록 할 수 있다. 상기 TLB 플러시 필터의 비활성화 다음에, 문맥 전환은 TLB 플러시를 야기할 수 있다. 이후, 상기 TLB 플러시 필터는 다시 한번 활성화될 수 있다.
따라서, 다양한 실시예들에 있어서, 상기 TLB 플러시 필터는 TLB에 대한 불필요한 플러시들을 방지할 수 있다. TLB에 대한 불필요한 플러시들이 방지되었기 때문에, 상기 하부 어드레스 변환의 어떤 것도 변경되지 않았을 경우 새 문맥는 이전에 캐시된 어드레스 변환을 이용할 수 있다. 많은 경우에, 이를 통해 가상 어드레스를 물리적 어드레스로 변환하고, 상기 TLB내에 그 변환을 캐시(저장)하는 과정의 반복 필요성이 없어지게 된다. 따라서, 대다수의 메모리 액세스에 대한 지연은 현저하게 감소될 수 있으며, 이로써 프로세서 성능을 현저하게 증가시킬 수 있다.
이제 도 1을 보면, 프로세서(10)의 일 실시예의 블럭도가 도시된다. 다른 실시예들도 가능하며 고려될 수 있다. 도 1에 도시된 바와 같이, 프로세서(10)는 예비인출/예비디코딩 유닛(12), 분기 예측 유닛(14), 명령 캐시(16), 명령 정렬 유닛(18), 다수의 디코딩 유닛(20A-20C), 다수의 예약 스테이션(reservation station)(22A-22C), 다수의 기능 유닛(24A-24C), 적재/저장 유닛(26), 데이터 캐시(28), 레지스터 파일(30), 재배열 버퍼(32), MROM 유닛(34) 및 버스 인터페이스 유닛(37)을 포함한다. 본원에서 특정 참조 부호나 한 글자가 따르는 참조부호에 의해 나타나는 구성요소들은 전체적으로 단지 참조 부호만으로 표시하기로 한다. 예를 들어, 디코딩 유닛(20A-20C)은 전체적으로 디코딩 유닛들(20)로 표시한다.
예비인출/예비디코딩 유닛(12)은 버스 인터페이스 유닛(37)으로부터 명령들을 수신하기 위해서 버스 인터페이스 유닛(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)는 64byte 라인들(1byte는 8개의 2진 비트들을 포함한다)을 갖는 2개의 세트 어소시에이티브(set associative) 구조에 최대 64Kbytes의 명령들을 저장하도록 구성된다. 대안적으로, 임의의 다른 원하는 구성 및 크기가 이용될 수 있다. 예를 들어, 명령 캐시(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 명령이다. 이로써 명령의 연산 부호는 명령의 첫번째 클리어 기능 비트와 관련된 바이트로서 디코딩 유닛들(20)에 의해 바로 디코딩될 수 있는 명령내에 위치할 수 있다. 예를 들어, 2개의 접두 바이트, Mod R/M 바이트 및 즉시(immediate) 바이트를 포함하는 고속 통과 명령은 아래와 같은 시작, 최종 및 기능 비트들을 각각 가질 수 있다:
시작 비트 10000
최종 비트 00001
기능 비트 11000.
MROM 명령들은 디코딩 유닛들(20)에 의해 디코딩하는데 너무 복잡하다고 결정되는 명령들이다. MROM 명령들은 MROM 유닛(34)을 호출함으로써 실행된다. 특히, MROM 명령이 직면될 시, MROM 유닛(34)은 원하는 동작을 달성하기 위해 상기 명령을 분석하여 이 명령어를 이미 정의된 고속 통과 명령들의 부분 집합으로 나누어 발행(issue)한다. MROM 유닛(34)은 나누어진 고속 통과 명령들의 부분 집합을 디코딩 유닛들(20)로 전송한다.
프로세서(10)는 조건부 분기 명령들에 후속하는 명령들을 추론하여 인출하기 위하여 분기 예측을 이용한다. 분기 예측 동작을 수행하기 위해 분기 예측 유닛(14)이 포함된다. 일 실시예에 있어서, 분기 예측 유닛(14)은 명령 캐시(16)에서 캐시 라인의 16byte 부분마다 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)을 위한 제어 값들로 디코딩되며, 이 제어 값들은 피연산자 어드레스 정보(operand address information) 및 상기 명령에 포함될 수 있는 디스플레이스먼트(displacement) 또는 즉시 데이터와 함께 예약 스테이션(22)으로 전송된다. 하나의 특정 실시예에 있어서, 각각의 명령은 기능 유닛들(24A-24C)에 의해 개별적으로 실행될 수 있는 최대 2개의 동작까지로 디코딩된다.
프로세서(10)는 비순차(out of order) 실행을 지원하는 바, 따라서 레지스터판독 및 기입 동작에 있어 원(original) 프로그램 시퀀스를 계속 유지하고, 레지스터의 이름을 새로 정하며, 추론적인 명령 실행과 분기 오예측 복구를 가능하게 하고 그리고 정확한 예외(exception) 처리를 하게 하기 위해 재배열 버퍼(32)를 이용한다. 재배열 버퍼(32)내의 임시 저장 위치는 예측 레지스터의 갱신을 요하는 명령어의 상태를 저장하기 위해 디코딩시 즉각 예약된다. 분기 예측이 옳지 않은 경우, 오예측 경로를 따라 추론하여 실행된 명령들의 결과는 그것들이 레지스터 파일(30)에 기입되기 전에 버퍼에서 무효화될 수 있다. 유사하게, 특정 명령이 예외를 일으키는 경우, 특정 명령에 후속하는 명령들은 버려질 수 있다. 이런 식으로, 예외는 "정확"하다(즉, 상기 예외를 일으키는 특정 명령에 후속하는 명령들은 상기 예외 이전에 완료되지 않는다). 프로그램 순서에서 그것이 특정 명령을 선행하는 명령들 이전에 실행되는 경우, 상기 특정 명령이 추론하여 실행된다고 표현되는데에 주목할 필요가 있다. 선행 명령들은 분기 명령이거나 예외-발생(exception-causing) 명령일 수 있으며, 이런 경우에, 상기 추론적인 결과들은 재배열 버퍼(32)에 의해 버려질 수 있다.
디코딩 유닛의 출력에서 제공되는 명령 제어 값 및 즉시 또는 디스플레이스먼트(displacement) 데이터는 각각 예약 스테이션들(22)로 직접 전송된다. 일 실시예에 있어서, 각각의 예약 스테이션(22)은 대응하는 기능 유닛으로의 발행을 기다리는 6개까지의 현안 명령들에 대한 명령 정보(즉, 명령 제어 값들 뿐만 아니라 피연산자 값들, 피연산자 태그들 및/또는 즉시 데이터)를 가지고 있을 수 있다. 도 1의 실시예에 대해서, 각각의 예약 스테이션(22)은 전용 기능 유닛(24)과 결합된다.따라서, 예약 스테이션들(22)과 기능 유닛들(24)에 의해 3개의 전용 "발행 위치(issue position)"가 형성된다. 다시 말하면, 예약 스테이션(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)안에 저장된다. 이후, 상기 저장은 동시에 디코딩된 명령들의 다른 세트에 의해 이용가능하게 된다. 또한, 명령마다 이용되는 제어 논리 회로의 양은 상기 제어 논리가 동시에 디코딩된 여러개의 명령어들을 거쳐 분할되기 때문에 감소된다. 특정 명령을 식별하는 재배열 버퍼 태그는 2개의 필드 즉, 라인 태그와 오프셋 태그로 분할될 수 있다. 상기 라인 태그는 특정 명령을 포함하는 동시 디코딩된 명령들의 세트를 식별하고, 상기 오프셋 태그는 상기 세트내의 명령이 특정 명령과 일치하는지 식별한다. 레지스터 파일(30)안에 명령 결과들을 저장하는 것과 대응하는 저장을 비우는 것은 명령들을 "퇴거(retire)"하는 것을 나타낸다는 것에 주목할 필요가 있다. 또한, 임의의 재배열 버퍼 구성은 프로세서(10)의 다양한 실시예들에서 이용될 수 있다는 것에 주목할 필요가 있다.
앞서 언급한 바와 같이, 명령들이 대응하는 기능 유닛(24)에 의해 실행될 때까지 예약 스테이션들(22)은 명령들을 저장한다. (ⅰ) 명령의 피연산자들이 제공되었을 경우, 그리고 (ⅱ) 동일한 예약 스테이션(22A-22C)내에 있고, 프로그램 순서로 명령 이전에 있는 명령에 대해 피연산자들이 제공되지 않았을 경우, 실행을 위해 명령이 선택된다. 기능 유닛들(24) 중 하나에 의해 명령이 실행될 때, 이 명령의 결과는 그 결과가 재배열 버퍼(32)를 갱신하기 위해 전송됨과 동시에 이 결과를 기다리고 있는 임의의 예약 스테이션들(22)로 바로 전송된다는 것에 주목할 필요가 있다(이 기술은 일반적으로 "결과 전송(result forwarding)"으로 나타낸다). 명령은 실행을 위해 선택될 수 있고, 상기 관련된 결과가 전송되는 클럭 사이클 동안 기능 유닛(24A-24C)으로 통과될 수 있다. 예약 스테이션들(22)은 이 경우에 상기 전송된 결과를 상기 기능 유닛(24)으로 보낸다. 명령들이 기능 유닛들(24)에 의해실행될 복합 동작들로 디코딩될 수 있는 실시예들에 있어서, 상기 동작들은 서로 개별적으로 계획될 수 있다.
일 실시예에 있어서, 기능 유닛들(24) 각각은 덧셈 및 뺄셈의 정수 산술 연산 뿐만 아니라 천이, 회전, 논리 연산 및 분기 연산을 수행하도록 구성된다. 상기 연산들은 디코딩 유닛들(20)에 의한 특정 명령에 대해 디코딩된 제어 값들에 응답하여 수행된다. 또한, 부동 소수점 연산을 제공하기 위해 부동 소수점 장치(미도시)가 이용될 수 있음에 주목할 필요가 있다. 상기 부동 소수점 장치는 코프로세서(coprocessor)로서 동작될 수 있어, MROM 유닛(34) 또는 재배열 버퍼(32)로부터 명령들을 수신하고, 후속하여 상기 명령들을 완료하기 위해 재배열 버퍼(32)와 통신한다. 또한, 기능 유닛들(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)에 액세스하지 않는 보류(pending) 적재들 및 저장들에 대한 데이터 및 어드레스 정보를 위한 저장 위치를 갖는 제 1 적재/저장 버퍼와, 그리고 데이터 캐시(28)에 액세스하는 적재들 및 저장들에 대한 데이터 및 어드레스 정보를 위한 저장 위치를 갖는 제 2 적재/저장 버퍼와 구성된다. 예를 들어, 상기 제 1 버퍼는 12개의 위치를 포함할 수 있으며, 상기 제 2 버퍼는 32개의 위치를 포함할 수 있다. 디코딩 유닛들(20)은 상기 적재/저장 유닛(26)으로 액세스를 조정한다. 상기 제 1 버퍼가 꽉 찼을 때, 디코딩 유닛은 적재/저장 유닛(26)에 보류중인 적재 또는 저장 요구정보를 위한 장소가 생길 때까지 기다려야 한다. 또한, 적재/저장 유닛(26)은 데이터 일관성이 유지되도록 하기 위해서 보류중인 저장 메모리 동작에 대한 적재 메모리 동작들의 종속 검사를 수행한다. 메모리 동작은 프로세서(10)와 메인 메모리 하부 시스템 사이의 데이터의 전송이다. 메모리 동작은 메모리에 저장된 피연산자를 이용하는 명령의 결과일 수 있거나, 어떤 다른 동작도 아닌 상기 데이터 전송을 일으키는 적재/저장 명령의 결과일 수 있다. 또한, 적재/저장 유닛(26)은 세그먼트 레지스터들 및 x86 프로세서 아키텍처에 의해 규정된 어드레스 변환 메커니즘과 관련된 다른 레지스터들과 같은 특정 레지스터에 대한 특정 레지스터 저장을 포함할 수 있다.
데이터 캐시(28)는 적재/저장 유닛(26)과 메인 메모리 하부 시스템 사이에 전송되는 데이터를 임시로 저장하도록 제공되는 고속 캐시 메모리이다. 일 실시예에 있어서, 데이터 캐시(28)는 2가지 방식의 세트 어소시에이티브 구조로 64Kbytes까지의 데이터를 저장하는 용량을 갖는다. 데이터 캐시(28)는 다양한 특정 메모리 구성에서 구현될 수 있는 바, 세트 어소시에이티브 구성, 전체 어소시에이티브 구성, 직접-매핑 구성 및 임의의 적절한 크기의 다른 구성을 포함한다.
상기 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)의 플러시를 가능하게 하기 위해 Invalidate 신호를 어서트(assert)할 수 있다. 적재/저장 유닛(26)은 또한 신호(본원에 LS_TLBInvalidate로서 도시됨)를 어서트함으로써 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 엔트리들은 하기에 더 상세하게 논의될 것이다.
영역 테이블(401)안의 엔트리들은 링 노드(401)를 통해 TLB 플러시 필터(40)에 의해 수신될 수 있으며, 다중화기들(407)에 의해 수신될 수 있다. 또한, 다중화기들(407)은 여기에 도시된 페이지 디렉토리 엔트리(PDE) 특성과 같은 다른 정보를 수신하는데 이용될 수 있다. 이후, 다중화기들(407)을 통해 수신된 정보는 상기 CAM 또는 상기 RAM에 저장될 수 있다. 영역 테이블(402)로부터의 정보는 또한 링 노드(401)를 통해 상기 SRB 링안으로 전송될 수 있다.
또한, 2개의 카운터들은 영역 테이블(402)과 결합된다. 영역 카운터(404)는 상기 CAM 에 있는 엔트리의 수를 세도록 구성되고, 기본 어드레스 레지스터 카운터(405)는 기본 어드레스 레지스터 태그들의 수를 세도록 구성된다. 이들 카운터들 각각은 상기 영역 테이블에서 이용가능한 리소스를 트래킹한다. 만약 상기 영역 테이블이 이용가능한 리소스를 다 써버린다면, 카운터들 중 하나는 오버플로우(overflow) 신호를 어서트할 수 있다. 예를 들어, 각각의 CAM 엔트리가꽉 찼을 경우, 상기 영역 카운터는 오버플로우(overflow) 신호를 어서트할 수 있다. 이 오버플로우(overflow) 신호는 상기 TLB 플러시 필터를 비활성화하는데 이용될 수 있다. 유사하게, 모든 이용가능한 태그들이 상기 기본 어드레스 레지스터 카운터에 이용되는 경우, 그것은 또한 오버플로우할 수 있으며, 이로써 상기 TLB 플러시 필터를 비활성화할 수 있는 오버플로우(overflow) 신호를 어서트한다. 이후, 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)가 Invalidate 신호를 어서트할 때 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)가 결정하도록 해준다.
RMA 엔트리(402-R)는 유효 비트와 기본 어드레스 레지스터 태그를 포함한다. 상기 도시된 실시예에 있어서, 상기 기본 어드레스 레지스터 태그는 상기 CAM에 저장될 수 있는 기본 어드레스 레지스터 엔트리와 관련될 수 있다. 상기 CAM에 저장된 상기 기본 어드레스 값은 이전에 직면했던 문맥 또는 현재 실행되는 문맥의 페이지 테이블(또는 다른 데이터 구조)에 대한 기본 어드레스일 수 있다. 이 실시예에서 상기 기본 어드레스 레지스터 태그는 단지 기본 어드레스에 대응하는 수이다. (전형적으로 각각의 문맥 전환와 함께 일어날 수 있는) 상기 기본 어드레스 레지스터의 각각의 변경후, 상기 레지스터의 새로운 값은 상기 영역 테이블에 저장된 최근의 TLB 플러시 이후 발생된 기존 값들과 비교된다. 어떤 일치도 발견되지 않는 경우(즉, 미스(miss)), 상기 레지스터의 값은 태그값이 할당되어 CAM에 저장되며, 관련 태그는 RAM에 저장된다. 일치(match)는 상기 레지스터의 현재 값이 이미 영역 테이블에 저장된다는 것을 나타낸다. 따라서, 이전에 직면했던 문맥이 상기 프로세서에 의해 재개(resume)되는 경우, 이전에 이용했던 어드레스 변환들은 다시 이용될 수 있다. 일치가 있는 경우 어떤 새로운 태그도 할당될 필요가 없다.
도 5는 상기 필터 회로(403)의 일 실시예를 동작시키는 로직을 예시하는 로직도이다. 필터 회로(403)는 단지 어떤 상태가 만족될 때만 상기 TLB의 플러시가 일어나도록 해주는 로직을 포함한다. 필터 회로(403)는 도 1의 적재/저장 유닛(26)으로부터 LS_TLBInvalidate 및 LS_TLBInvalidateM 신호를 수신하도록 구성된다. 상기 LS_TLBInvalidate 신호는 상기 TLB 플러시 필터가 활성화되는지에 상관없이, 상기 TLB의 무조건 플러시를 야기할 수 있다. 상기 프로세서의 동작에 있어서 다양한 변경들은 상기 TLB의 플러시를 필요로 할 수 있다. 이들 조건들은 페이징을 턴오프하거나, 글로벌 페이징을 턴온하거나, 메모리 타입을 변경하거나, 또는 메모리 특성을 변경하는 것을 포함하지만, 이러한 조건들은 이러한 기능에 국한되는 것이 아니다. 어서트될 때, 상기 LS_TLBInvalidate 신호는 상기 도표에 도시된 OR 게이트와 D 플립플롭을 통해 전해질 수 있다. 이후, 이것은 상기 FF_TLBInvalidate 신호가 어서트되도록 하며(이 신호는 도 2와 3에 도시된 Invalidate 신호와 동일하다), 이로써 그 다음 문맥 전환 후에 상기 TLB의 플러시를 가능하게 해준다.
상기 LS_TLBInvalidateM 신호는 수정이 발생한 경우, 상기 TLB가 플러시되는 것임을 나타내는데 이용될 수 있다. 이 신호는 상기 TLB 플러시 필터가 활성화될 때 논리적 하이(high) 상태로 유지될 수 있다. 수정은 하부 어드레스 변환들에 대한 변경들 또는 (상기 카운터가 오버플로우일 때와 같은) 상기 플러시 필터의 상태에서의 변경들을 포함할 수 있다. LS_TLBInvalidateM 신호가 논리적 하이로 어서트되고 상기 /CLR 신호가 로우(low)를 어서트할 때(그리고 상기 AND 게이트안에 입력되기 전에 변환될 때) 상기 FF_TLBInvalidate 신호는 어서트될 수 있다.
상기 /CLR 신호는 여러개의 서로다른 조건들 중 하나에 의해 논리적 로우 상태로 구동될 수 있다. 이들 조건들은 대안적인 실시예들에 의해 변할 수 있다. 상기 도시된 실시예에 있어서, 이러한 조건들은 상기 플러시 필터의 리셋(Reset 신호), 페이지 데이터의 수정(도 3에 Hit 신호로 도시되어 있는 Modify Page Data 신호), 카운터들의 오버플로우(Overflow Region Counter 신호, Overflow Base Address Register Counter 신호), 또는 상기 플러시 필터의 기능을 억제하는 신호(Disable Flush Filter 신호)를 포함할 수 있다. 도 5의 논리 회로에 이들 조건들 각각에 대한 신호들이 존재한다. 상기 /CLR 신호는 전형적으로 상기 도시된 실시예에서 논리적 하이 상태에 유지되며, 도면에 도시된 7-입력 AND 게이트로의 입력이 되게 하기 위해 (OR 게이트를 포함하는) 피드백 회로를 통해 전해질 수 있다. 또한, 상기 FF_TLBInvalidate 신호는 피드백 회로를 통해 그리고 그것이 어서트될 때 상기 OR 게이트를 통해 전해질 수 있다. 조건 중 어느 것을 논리적 하이(logic high) 상태로 되게 함으로써, (상기 변환기들로 인해) 상기 AND 게이트에 논리적 로우(logic low) 입력이 제공되며, 이로써 상기 /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)에 전기적 인터페이스를 제공하기 위해 이차 버스 브리지(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 버스로의 인터페이스를 제공하는 것에 부가하여, 필요시 이차 버스 브리지(216)는 추가 기능을 통합할 수 있다. 이차 버스 브리지(216)의 외부에 있거나 또는 이차 버스 브리지(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)의 동일 카피(copy)일 수도 있다. 프로세서(10a)는 독립적인 버스(도 5에 도시됨)를 통해 버스 브리지(202)와 연결될 수 있거나, 프로세서(10)와 CPU 버스(224)를 공유할 수도 있다. 또한, 프로세서(10a)는 L2 캐시(228)와 유사한 선택적인 L2 캐시(228a)와 연결될 수 있다.
본 발명은 특정 실시예들을 참조하여 설명되었으며, 상기 실시예들은 예시적인 것으로서, 본 발명의 범위를 제한하는 것이 아님을 이해해야 할 것이다. 설명된 상기 실시예들에 대한 임의의 변형, 수정, 추가 및 개선은 가능하다. 이들 변형,수정, 추가 및 개선은 하기의 청구범위내에 정의된 바와 같이 본 발명의 범위내에 있다.
본 발명은 마이크로프로세서 및 변환 색인 버퍼들에 응용가능하다.

Claims (10)

  1. 어드레스 변환들을 저장하는 변환 색인 버퍼(TLB)(39)와; 그리고
    상기 TLB와 연결된 TLB 플러시 필터(40)를 포함하며, 여기서 상기 TLB 플러시 버퍼는 상기 어드레스 변환들이 상기 TLB 안으로 판독 및 캐쉬될 수 있는 메모리 블럭들을 모니터하고 상기 메모리 블럭들에 있는 임의의 상기 어드레스 변환들이 변경되었는지를 결정하도록 구성되며, 또한, 상기 TLB 플러시 필터는 상기 어드레스 변환들이 변경되었을 경우 상기 TLB가 문맥 전환에 응답하여 플러시되도록 구성되고, 상기 TLB 플러시 필터는 상기 어드레스 변환들이 변경되지 않았을 경우 상기 TLB의 플러시를 방지하도록 구성되는 것을 특징으로 하는 프로세서.
  2. 제 1 항에 있어서, 상기 TLB 플러시 필터(40)는 제 1 문맥 전환에 의해 활성화되는 것을 특징으로 하는 프로세서.
  3. 제 2 항에 있어서, 상기 제 1 문맥 전환은 상기 TLB(39)가 플러시되게 하는 것을 특징으로 하는 프로세서.
  4. 제 1 항에 있어서, 상기 TLB 플러시 필터는 상기 메모리 블럭들을 트래킹하는 영역 테이블(402)을 포함하는 것을 특징으로 하는 프로세서.
  5. 제 4 항에 있어서, 상기 TLB 플러시 필터(40)는 상기 메모리 블럭들내의 메모리 위치의 변경을 검출하도록 구성되며, 상기 TLB 플러시 필터는 다음 문맥 전환에 응답 및 상기 메모리 위치의 상기 수정을 검출함에 응답하여, 상기 TLB가 플러시되게 하도록 구성되는 것을 특징으로 하는 프로세서.
  6. 제 4 항에 있어서, 상기 영역 테이블(402)은 내용 주소화 메모리(CAM)와 랜덤 액세스 메모리(RMA)를 포함하는 것을 특징으로 하는 프로세서.
  7. 제 6 항에 있어서, 상기 CAM은 다수의 엔트리들을 저장하도록 구성되며, 상기 다수의 엔트리들 각각은 상기 메모리 블럭들과 관련된 어드레스 정보를 포함하는 것을 특징으로 하는 프로세서.
  8. 변환 색인 버퍼(TLB)(39)에 어드레스 변환들을 저장하는 단계 - 상기 어드레스 변환들은 하나 이상의 메모리 블럭들로부터 상기 TLB안으로 적재된다 - 와;
    상기 하나 이상의 메모리 블럭들에 저장된 임의의 어드레스 변환들이 변경되었는지 여부를 결정하는 단계와;
    상기 하나 이상의 메모리 블럭들에 저장된 임의의 상기 어드레스 변환들이 변경되었을 경우, 상기 TLB를 플러시하는 단계 - 상기 플러시는 문맥 전환에 응답한다 - 와; 그리고
    상기 하나 이상의 메모리 블럭들에 저장된 상기 어드레스 변환들 중 그 어느것도 변경되지 않았을 경우, 문맥 전환에 응답하여 상기 TLB의 플러시를 방지하는 단계를 포함하며, 여기서 상기 TLB의 플러시는 TLB 플러시 필터(40)에 의해 방지되는 것을 특징으로 하는 프로세서 동작 방법.
  9. 제 8 항에 있어서, 상기 TLB 플러시 필터(40)는 제 1 문맥 전환에 의해 활성화되는 것을 특징으로 하는 프로세서 동작 방법.
  10. 제 9 항에 있어서, 상기 제 1 문맥 전환은 상기 TLB(39)가 플러시되게 하는 것을 특징으로 하는 프로세서 동작 방법.
KR1020027017127A 2000-06-15 2001-03-09 변환 색인 버퍼 플러시 필터 KR100804285B1 (ko)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20030010727A true KR20030010727A (ko) 2003-02-05
KR100804285B1 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009023573A3 (en) * 2007-08-10 2009-04-30 Tekelec Us 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

Families Citing this family (32)

* 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
US7552254B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7552255B1 (en) 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
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
WO2006123351A1 (en) 2005-04-11 2006-11-23 Hewlett-Packard Development Company L.P. Tlb page fault handler and dump manager
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
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

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US602148A (en) * 1898-04-12 John- w
US4053948A (en) 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
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.
US5428757A (en) 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
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
EP0760134A1 (de) * 1994-05-11 1997-03-05 Gmd - Forschungszentrum Informationstechnik Gmbh Speichervorrichtung zum speichern von daten
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
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
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
US6021481A (en) 1997-11-10 2000-02-01 International Business Machines Corporation Effective-to-real address cache managing apparatus and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009023573A3 (en) * 2007-08-10 2009-04-30 Tekelec Us 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

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100804285B1 (ko) 변환 색인 버퍼 플러시 필터
US6490658B1 (en) Data prefetch technique using prefetch cache, micro-TLB, and history file
EP0651332B1 (en) Linearly addressable microprocessor cache
US6804799B2 (en) Using type bits to track storage of ECC and predecode bits in a level two cache
US6081884A (en) Embedding two different instruction sets within a single long instruction word using predecode bits
KR100734529B1 (ko) 밀접하게 결합된 다중 프로세서를 위한 고속의 다중 스레딩
US6442707B1 (en) Alternate fault handler
US8458408B2 (en) Cache directed sequential prefetch
US5793941A (en) On-chip primary cache testing circuit and test method
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
US6041405A (en) Instruction length prediction using an instruction length pattern detector
US6092182A (en) Using ECC/parity bits to store predecode information
US6125441A (en) Predicting a sequence of variable instruction lengths from previously identified length pattern indexed by an instruction fetch address
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
EP0795828A2 (en) Dynamic set prediction method and apparatus for a multi-level cache system
KR20040014673A (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US6542986B1 (en) Resolving dependencies among concurrently dispatched instructions in a superscalar microprocessor
US6175898B1 (en) Method for prefetching data using a micro-TLB
US20070033385A1 (en) Call return stack way prediction repair
US5835949A (en) Method of identifying and self-modifying code
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6240506B1 (en) Expanding instructions with variable-length operands to a fixed length
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
KR20020087386A (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치

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