KR20020067596A - 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 - Google Patents

경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 Download PDF

Info

Publication number
KR20020067596A
KR20020067596A KR1020027008672A KR20027008672A KR20020067596A KR 20020067596 A KR20020067596 A KR 20020067596A KR 1020027008672 A KR1020027008672 A KR 1020027008672A KR 20027008672 A KR20027008672 A KR 20027008672A KR 20020067596 A KR20020067596 A KR 20020067596A
Authority
KR
South Korea
Prior art keywords
path
address
cache
tag
partial
Prior art date
Application number
KR1020027008672A
Other languages
English (en)
Other versions
KR100747127B1 (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 KR20020067596A publication Critical patent/KR20020067596A/ko
Application granted granted Critical
Publication of KR100747127B1 publication Critical patent/KR100747127B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

캐쉬(14)는 에측 경로에 응답하여 출력 바이트들을 제공한다. 또한, 태그는 예측 경로로부터 판독되고, 단지 부분적인 태그들만이 비예측 경로들로부터 판독된다. 이 태그는 입력 어드레스의 태그 부분과 비교되고, 부분적인 태그들은 입력 어드레스의 대응하는 부분적인 태그 부분과 비교된다. 만일 예측 경로에서 적중 실패가 검출되면, 부분적인 태그 비교가 이용된다. 만일 부분적인 태그들 어느것도 입력 어드레스의 대응하는 부분적인 태그 부분과 정합되지 않는경우, 캐쉬에서 적중 실패가 결정된다. 다른 한편으로, 만일 부분적인 태그들중 하나 이상이 입력 어드레스의 대응하는 부분적인 태그들 부분과 정합되면, 캐쉬(14)는 입력 어드레스가 캐쉬(14)에서 적중하는지 아니면 적중실패하는지를 결정하기위해 대응하는 경로들을 조회한다.

Description

경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터 부분적인 태그들을 제공하는 캐쉬{CACHE WHICH PROVIDES PARTIAL TAGS FROM NON-PREDICTED WAYS TO DIRECT SEARCH IF WAY PREDICTION MISSES}
수퍼스칼라 프로세서는 클럭 주기로 다중 명령어들을 동시에 실행하고, 설계에 따라 가장 짧은 클럭주기를 특정함으로써 고 성능을 성취한다. 여기서 사용되는 용어 "클럭주기"는 프로세서의 명령어 파이프라인 스테이지들이 그들이 의도하는 기능을 수행하는 시간 간격을 일컫는다. 한주기가 끝날때, 그 결과값들이 다음 파이프라인 스테이지로 옮겨진다. 클럭 저장 디바이스들(예컨대, 레지스터, 래치, 플롭 등)은 그 클럭주기를 정의하는 클럭신호에 응답하여 그들의 값을 취한다.
유효 메모리 대기시간(effective memory latency)를 감소시키기위해, 프로세서들은 전형적으로 캐쉬들을 포함한다. 이 캐쉬들은 사전에 인출된 명령어 및/또는 데이터 디바이스들을 저장하는데 이용되는 고속 메모리들이다. 이 캐쉬 메모리들은 상기 프로세서를 포함하고 있는 컴퓨터 시스템내에 사용되는 메인 메모리보다 실질적으로 낮은 메모리 대기시간을 제공할 수 있다.
캐쉬는 "세트 어소시에이티브(set associative)"구조로 구성된다. 세트 어소시에이티브 구조에서, 캐쉬는 로우 (흔히 "세트(sets)"로 일컬어짐) 및 컬럼 (흔히 "경로(ways)"로 일컬어짐)을 갖는 2차원 어레이로서 구성된다. 캐쉬가 임의의 어드레스에 상주하는 바이트에 대하여 캐쉬가 조회될 때, 상기 어드레스로부터의 다수의 비트들은 상기 캐쉬내의 "인덱스(index)"로서 사용된다. 이 인덱스는 상기 2차원 어레이내의 특정 세트를 선택하며, 그러므로써 상기 인덱스에 대해 요구되는 어드레스의 수는 상기 캐쉬내에 구성된 세트의 수로 결정된다. 인덱스를 통해 세트를 선택하는 동작은 "인덱싱(indexing)" 이라 일컬어진다. 상기 캐쉬의 각 경로는 선택된 세트의 구성 일원인 하나의 캐쉬 라인 저장 위치를 갖는다(여기서, 캐쉬라인은 캐쉬에 저장을 위한 유닛으로서 처리되는 인접 바이트들(contiguous bytes)의 수이며, 비록 임의 수의 바이트들이 캐쉬라인을 구성하는 것으로 정의될 수도 있지만은 전형적으로 16-64바이트 범위로 구성된다.). 선택된 세트의 경로들에 저장된 바이트들과 관계하는 어드레스들에 대해 상기 세트에 저장된 어드레스들이 요청된 어드레스와 정합되는지 여부를 판단하기 위한 검사가 행해진다. 만일 정합이 되는 것으로 판정되면 그 액세스는 "적중(hit)"한 것으로 간주되어 상기 캐쉬는 관련 바이트를 제공한다. 만일 정합이 되지 않는 것으로 판정되면 그 액세스는 "적중실패(miss)"로 간주된다. 적중실패가 검출되면, 이 바이트들은 메인 메모리 시스템으로부터 상기 캐쉬로 전달된다. 상기 캐쉬에 저장된 바이트들과 관련된 어드레스들 또한 저장된다. 이들 저장된 어드레스들은 "태그(tags)" 또는 "태그 어드레스(tag addresses)"로서 일컬어진다.
전술한 바와 같이, 상기 캐쉬의 각 경로로부터의 캐쉬 라인 저장위치는 상기 선택된 세트의 구성일원이 된다(즉, 상기 세트의 선택에 응답하여 액세스된다). 상기 경로들중 한 경로에 저장된 정보는 상기 캐쉬의 출력으로서 제공되며, 이 캐쉬는 상기 캐쉬에 경로 선택을 제공함으로써 선택된다. 이 경로선택은 출력으로서 선택될 경로를 확인(identify)한다. 전형적인 세트 어소시에이티브 캐쉬에서, 이 경로 선택은 세트 내의 태그들을 검사하여 상기 태그들중 하나와 요청된 어드레스간의 정합을 구함으로써 결정된다.
불행하게도, 세트 어소시에이티브 캐쉬들은 출력을 위한 경로 선택을 결정하기 위한 태그 비교로 인해 (인덱스 당 하나의 캐쉬 라인 저장제공하는) 직접 맵핑 캐쉬보다 높은 대기시간을 갖는다. 더욱이, 이 경로 선택은 액세스 전에는 알 수 가 없으므로, 전형적으로 각 경로가 액세스되고, 만일 적중이 검출되는 경우 출력 바이트를 선택하기 위해 대응하는 경로 선택이 뒤늦게 이용된다. 모든 경로들에 대한 액세스는 바람직하지 못한 높은 전력소비를 야기한다. 최근 프로세서들에서의 동작 속도(주파수)의 증가와 동등하게, 전력 소비의 제한 역시 신속하게 이루어져야 한다. 따라서, 세트 어소시에이티브 캐쉬의 대기시간 및 전력소비를 낮출 수 있는 방법이 요구된다.
상기에 제시한 문제점들은 본 발명에 개시된 캐쉬에 의해 대부분 해결된다. 상기 캐쉬는 입력 어드레스 및 대응 경로 예측을 수신하도록 결합된다. 이 캐쉬는 (출력 바이트를 선택하기 위한 태그 비교 대신에) 예측 경로에 응답하여 출력 바이트를 제공하며, 따라서 태그 비교를 수행하는 것과 비교하여 액세스 대기시간을 감소시킨다. 더욱이, 상기 예측 경로로부터 태그가 판독되며, 단지 부분적인 태그들이 비 예측 경로들로부터 판독된다. 상기 태그는 입력 어드레스의 태그부(tag portion)와 비교되며, 상기 부분적인 태그들은 입력 어드레스의 대응하는 부분적인 태그부와 비교된다. 만일 상기 태그가 입력 어드레스의 태그부와 정합되면, 상기 예측 경로에서 적중이 검출되고, 상기 예측 경로에 응답하여 제공된 바이트들은 정확하게된다. 만일 상기 태그가 입력 어드레스의 태그부와 정합되지 않으면, 상기 예측경로에서 적중 실패가 검출된다. 만일 상기 부분적인 태그들 중 어느 것도 입력 어드레스의 태그 부분과 정합하지 않으면, 상기 캐쉬에서 적중 실패가 결정된다. 다른 한편으로, 만일 상기 부분적인 태그들 중 하나 이상이 상기 입력 어드레스의 대응하는 부분적인 태그들과 정합하면, 상기 캐쉬는 (예컨대, 부분적인 태그의 정합이 검출되는 경로들에 대한 모든 태그 비교를 수행함으로써) 상기 입력 어드레스가 상기 캐쉬에서 적중인지 아니면 적중실패인지를 결정하기 위해 대응하는 경로들에 대해 조회를 행한다. 부분적인 태그들은 비 예측 경로들로부터 판독되기 때문에, 경로들 각각으로부터 모든 태그들을 판독하는 것과 비교하여 전력이 보존될 수 있게 된다. 장점적으로, 액세스 대기시간은 및 전력 소비가 감소된다. 더욱이, 부분적인 태그들을 제공함으로써, 조회될 다른 경로들이 확인될 수 있고, 조회될 경로들의 수가 감소된다( 예컨대, 부분적인 태그를 갖는 각 경로는 조회되지 않는다.)
넓게 말해서, 어떤 캐쉬가 창안되는데, 이 캐쉬는 태그 어레이와 이 태그 어레이에 결합된 제어회로를 포함한다. 이 태그 어레이는 판독 어드레스 및 경로 선택의 인덱스를 수신하도록 결합되며, 복수의 경로를 포함하고 있다. 이 태그 어레이는 복수의 부분적인 태그들을 출력하도록 구성되는데, 이 부분적인 태그들 각각은 상기 복수의 경로들중 하나로부터 온다. 상기 제어 회로는 상기 태그 어레이의 복수의 경로들중 제 1 경로에서 판독 어드레스의 적중 실패에 응답하여 조회 경로를 확인하는 조회 경로 선택을 발생하도록 구성된다. 제 1 경로는 경로 선택에 의해 확인된다. 조회 경로로부터의 제 1의 부분적인 태그는 판독 어드레스의 대응 부분과 정합한다.
또한 어떤 프로세서가 창안되는데, 이 프로세서는 인출 어드레스에 응답하여 경로 예측을 제공하도록 구성되는 라인 예측기와 그리고 경로 예측 및 인출 어드레스를 수신하도록 결합된 명령어 캐쉬를 포함한다. 이 명령어 캐쉬는 세트 어소시에이티브이며, 인출 어드레스의 인덱스에 응답하여 복수의 부분적인 태그들을 출력하도록 구성된 태그 어레이를 포함한다. 이 명령어 캐쉬는 경로 예측에 의해 확인되는 제 1 경로에서 인출 어드레스 적중실패에 응답하여, 복수의 부분적인 태그들중 대응하는 부분적인 태그가 인출 어드레스의 대응하는 부분과 정합하는지에 관하여 태그 어레이의 제 2 경로를 조회한다. 또한, 컴퓨터 시스템이 창안되는데, 이 컴퓨터 시스템은 이 컴퓨터 시스템과 I/O 디바이스가 결합되는 다른 컴퓨터시스템과의 사이에 통신을 하도록 구성된 I/O 디바이스와 그리고 프로세서를 포함한다.
또한, 어떤 방법이 창안되는데, 이 방법에 따르면, 복수의 부분적인 태그들이 인출 어드레스에 응답하여 캐쉬로부터 판독된다. 인출 어드레스가 상기 캐쉬의 예측 경로에서 적중하는지의 여부가 판단된다. 인출 어드레스가 캐쉬의 예측 경로에서 적중하지 않음을 판정함에 응답하여 캐쉬의 제 2 경로에 대해 조회가 이루어진다. 제 2 경로는 제 2 경로는 상기 예측 경로와 다르며, 상기 제 2 경로에 대응하는 복수의 부분적인 태그들 중 제 1의 부분적인 태그는 인출 어드레스의 대응하는 부분과 정합한다.
본 발명은 프로세서 분야, 보다 특별하게는 프로세서내의 캐쉬 메커니즘에 관한 것이다.
본 발명의 다른 목적 및 장점들이 다음의 첨부도면을 참조로 한 상세한 설명으로부터 더욱 명확해질 것이다.
도 1은 프로세서의 일 실시예의 블록선도.
도 2는 도 1에 보인 프로세서에의해 사용되는 파이프라인의 제 1실시예를 예시하는 파이프라인 선도.
도 3은 도 1에 보인 브랜치 예측/인출 PC 발생 유닛, 라인 예측기, I-cache 와 그리고 상기 유닛들의 일실시예에 따른 이들 사이의 상호 연결을 예시하는 블록선도.
도 4는 도 1 및 도 3에 보인 I-cache의 일 실시예의 블록선도.
도 5는 도 4에 보인 태그 어레이의 일 실시예를 예시하는 선도.
도 6은 전형적인 한 어드레스내 필드들을 예시하는 선도.
도 7은 도 4에 보인 제어회로의 일실시예에 의해 사용되는 상태 머신을 예시하는 상태 머신 선도.
도 8은 도 7에 보인 액세스 상태에서 도 4에 보인 제어회로의 일실시예의 동작을 예시하는 흐름도.
도 9는 도 7에 보인 조회상태에서 도 4에 보인 제어회로의 일 실시예의 동작을 예시하는 흐름도.
도 10은 도 1에 보인 프로세서를 포함하는 제 1 예의 컴퓨터 시스템의 블록 선도.
도 11은 도 1에 보인 프로세서를 포함하는 제 2 예의 컴퓨터 시스템의 블록 선도.
본 발명은 다양한 변형이 가능하지만은 이에 대한 대안적인 형태 및 특정 실시예들을 예로써 도면에 도시하였는바, 이들에 대해 상세히 설명하기로 한다. 그러나, 본 출원서의 도면 및 상세한 설명은 본 발명을 여기에 초기화한 특정 형태로만 한정하고자 하는 것이 아니며, 첨부한 청구범위에 의해 정의되는 바와 같이 본 발명의 정신 및 범주 내에서 가능한 모든 변형, 균등 및 대체를 포괄하는 것임을 이해해야 할 것이다.
프로세서의 개요
도 1은 프로세서(10)의 일 실시예의 블록 선도를 보인 것이다. 다른 실시예들도 고려될 수 있다. 도 1의 실시예에서, 프로세서(10)는 라인 예측기(12), 명령어 캐쉬(I-cache)(14), 정렬 유닛(16), 브랜치 예측/인출 PC 발생 유닛(18), 다수의 디코드 유닛(24A-24D), 예측기 적중실패 디코드 유닛(260, 마이크로코드 유닛(28), 맵 유닛(30), 퇴거 큐(32), 구조적 변경 파일(architectual renames file)(34), 미결정 파일(future file)(20), 스케줄러(36), 정수 레지스터파일(38A), 플로팅포인트(floating point)레지스터 파일(38B), 정수 실행 코어(40A), 플로팅 포인트 실행 코어(40B), 적재/저장 유닛(42), 데이터 캐쉬(D-cache)(44), 외부 인터페이스 유닛(46) 및 PC 사일로( PC silo)(48)를 포함한다. 라인 예측기(12)는 예측기 적중실패 디코드 유닛(26), 브랜치 예측/인출 PC 발생 유닛(18), PC 사일로(48) 및 정렬 유닛(16)에 연결된다. 라인 예측기(12)는 또한 I-cache(14)에 연결될 수도 있다. I-cache(14)는 정렬 유닛(16) 및 브랜치 예측/인출 PC 발생유닛(18)에 연결되며, 이 브랜치 예측/인출 PC 발생유닛(18)은 또한 PC 사일로(48)에 연결된다. 정렬유닛(16)은 또한 예측기 적중실패 디코드 유닛(26) 및 디코드 유닛(24A-24D)에 연결된다. 디코드 유닛(24A-24D)은 또한 맵 유닛(30)에 연결되고, 디코드 유닛(24D)은 마이크로코드 유닛(28)에 연결된다. 맵 유닛(30)은 퇴거 큐(32)(구조적 변경파일(34)에 연결됨), 미 결정 파일(20), 스케줄러(36) 및 PC 사일로(48)에 연결된다. 스케줄러(36)는 레지스터 파일(38A-38B)에 연결되며, 이 레지스터 파일(38A-38B)은 또한 서로 및 각각의 실행 코어(40A-40B)에 연결된다. 실행 코어(40A-40B)는 또한 적재/저장 유닛(42) 및 스케줄러(36)에 연결된다. 실행 코어(40A)는 또한 D-cache(44)에 연결된다. 적재/저장 유닛(42)은 스케줄러(36), D-cache(44) 및 외부 인터페이스 유닛(46)에 연결된다. D-cache(44)는 레지스터 파일(38)에 연결된다. 외부 인터페이스 유닛(46)은 외부 인터페이스(52) 및 I-cache(14)에 연결된다. 참조번호 뒤에 영문자가 표기된 구성요소들은 단지 참조번호로만 집합적으로 표기하기로 한다. 예컨대, 디코드 유닛(24A-24D)은 디코드 유닛(24)으로 집합적으로 표기한다.
도 1의 실시예에서, 프로세서(10)는 가변 바이트 길이의 복합적인 명령어 세트 계산(CISC:complex instruction set computing) 명령어 세트 아키텍춰를 활용한다. 예컨대, 프로세서(10)는 x86 명령어 세트 아키텍춰(또한 IA-32로 일컫는다)를 활용한다. 다른 실시예들은 고정 길이 명령어 세트 아키텍춰 및 감소된 명령어 세트 계산(RISC:reduced instruction set computing)명령어 세트 아키텍춰를 포함하는 다른 명령어 세트 아키텍춰들을 활용할 수도 있다. 도 1에 보인 일부 구성요소들은 그러한 아키텍춰들에서 생략될 수도 있다.
브랜치 예측/인출 PC 발생 유닛(18)은 I-cache(14), 라인 예측기(12) 및 PC 사일로(48)에 인출 어드레스(인출 PC)를 제공하도록 구성된다. 브랜치 예측/인출 PC 발생유닛(18)은 인출 어드레스의 발생을 지원하기위해 사용되는 적절한 브랜치 예측 메커니즘을 포함할 수 있다. 상기 인출 어드레스에 응답하여, 라인 예측기(12)는 복수의 명령어들에 대응하는 정렬 정보를 정렬 유닛(16)에 제공하며, 상기 제공된 명령어 정보에 의해 식별되는 명령어들에 후속하는 명령어들을 인출하기위한 차기 인출 어드레스(next fetch address)를 제공한다. 차기 인출 어드레스는 브랜치 예측/인출 PC 발생 유닛(18)에 제공될 수 있거나 또는 필요한 경우 직접 I-cache(14)에 제공될 수도 있다. 브랜치 예측/인출 PC 발생 유닛(18)은 (트랩(trap)이 검출되는 경우) PC 사일로(48)로부터 트랩 어드레스를 수신할 수 있으며, 이 트랩 어드레스는 브랜치 예측/인출 PC 발생 유닛(18)에 의해 발생되는 인출 PC를 포함할 수 있다. 대안적으로, 인출 PC는 브랜치 예측 정보 및 라인 예측기(12)로부터의 정보를 이용하여 발생될 수도 있다. 일반적으로, 라인예측기(12)는 프로세서(10)에 의해 사전에 투기적으로(speculatively)인출된 명령어들에 대응하는 정보를 저장한다. 일 실시예에서, 라인 예측기(12)는 2K 엔트리들을 포함하는데, 이들 엔트리 각각은 여기서 명령어들의 "라인"으로 일컫는 하나 또는 그 이상의 명령어들의 그룹을 위치시킨다. 이 명령어들의 라인은 프로세서(10)의 명령어 처리 파이프라인에 의해 처리되어 스케줄러(36)내에 놓여지게된다.
I-cache(14)는 명령어 바이트를 저장하기위한 고속 캐쉬 메모리이다. 일 실시예에 따르면, I-cache(14)는 예컨대 64 바이트 캐쉬 라인을 활용하는 예컨대 128Kbyte의 4 경로 세트 어소시에이티브 조직(four way set associative organization)으로 구성된다. 그러나, (직접 매핑된 구조로 구성되는) 임의의 I-cache 구조가 적합할 수도 있다.
정렬 유닛(16)은 라인 예측기(12)로부터 명령어 정렬 정보 및 I-cache(14)로부터의 인출 어드레스에 대응하는 명령어 바이트들을 수신한다. 정렬 유닛(16)은 제공된 명령어 정렬 정보에 따라 디코드 유닛(24A-24D) 각각 내로 명령어 바이트들을 선택한다. 보다 특별하게, 라인 예측기(12)는 각 디코드 유닛(24A-24D)에 대응하는 명령어 포인터를 제공한다. 명령어 포인터는 대응 디코드 유닛(24A-24D)으로의 전달을 위해 그 인출된 명령어 바이트들내에 명령어를 위치시킨다. 일 실시예에서, 일부 명령어들은 하나 이상의 디코드 유닛(24A-24D)에 전달될 수 있다. 따라서, 본 실시예에 보인 바와같이 라인 예측기(12)로부터의 명령어들의 라인은 4개의 명령어들을 포함할 수 있다. 그러나, 다른 실시예들에서는 라인내에 그 이상 또는 그 보다 적은 명령어들을 제공하기 위해 그보다 많거나 또는 그 보다 적은 디코드유닛(24)을 포함할 수도 있다.
디코드 유닛(24A-24D)은 자신에게 제공되는 명령어들을 디코딩하며, 각 디코드 유닛(24A-24D)은 이들 명령어에 대응하는 하나 또는 그 이상의 명령어 오퍼레이션(또는 ROP들)을 식별하는 정보를 발생한다. 일 실시예에서, 각 디코드 유닛(24A-24B)은 명령어 당 최고 두 개의 명령어를 발생할 수 있다. 여기서 사용하는 명령어 오퍼레이션(또는 ROP)은 실행 코어(40A-40B)내의 실행 유닛이 단일 엔티티(entity)로서 실행하도록 된 오퍼레이션이다. 간단한 명령어들은 단일 명령어 오퍼레이션에 대응하며, 보다 복합적인 명령어들은 다수의 명령어 오퍼레이션에 대응한다. 보다 복합적인 명령어들 일부는 (본 실시예에서 디코드 유닛(2D)을 통해 내부의 판독전용 메모리로부터 인출되는) 마이크로코드 루틴으로써 마이크로코드 유닛(28)내에서 수행될 수 있다. 또한, 다른 실시예들은 각 명령어에 대해 단일 명령어 오퍼레이션을 활용할 수 있다 (즉, 이들 실시예에서 명령어와 명령어 오퍼레이션은 유사할 수가 있다).
PC 사일로(48)는 각 명령어 인출에 대해 인출 어드레스 및 명령어 정보를 저장하며, (프로세서(10)에 의해 활용되는 명령어 세트 아키텍춰로 정의되는 명령어 트랩, 브랜치 예측 오류 및 다른 미세구조적으로 정의되는 트랩 등) 예외들(execptions)하에서 명령어 인출을 전환(redirecting)하는 역할을 한다. PC 사일로(48)는 프로세서(10)내에 현저할 수 있는 다수의 명령어 라인들에 대응하는 명령어 정보 및 인출 어드레스를 저장하기 위한 원형 버퍼를 포함한다. 명령어 라인의 퇴거(retirement)에 응답하여, PC 사일로(48)는 대응 엔트리를 폐기한다. 예외에 응답하여, PC 사일로(48)는 브랜치 예측/인출 PC 발생유닛(18)에 트랩 어드레스를 제공한다. 퇴거 및 예외 정보는 스케줄러(36)에 의해 제공될 수 있다. 일 실시예에서, PC 사일로(48)는 프로세서(10)내에 현저한 명령어들의 순서를 식별하기위해 시퀀스 번호(R#)를 각 명령어에 할당한다. 스케줄러(36)는 예외 또는 명령어 오퍼레이션의 퇴거를 겪는 명령어 오퍼레이션을 식별하기위해 R#들을 각 PC 사일로(48)에 리턴(return)한다.
라인 예측기(12)에서의 적중실패 검출 시, 정렬 유닛(16)은 대응 명령어 바이트를 I-cache(14)로부터 예측기 적중실패 디코드 유닛(16)에 전송한다. 예측기 적중실패 디코드 유닛(26)은 명령어를 디코딩하여, 프로세서(10)가 (예컨대, 최대 수의 명령어 오퍼레이션, 최대 수의 명령어, 브랜치 명령어들에서의 종단(terminate)을 위해, 등등) 설계될때 명령어들 라인에 임의의 제한을 가한다. 라인 종단 하에서, 예측기 적중실패 디코드 유닛(26)은 라인 예측기(12)에 상기 정보를 제공하여 이곳에 저장되도록 한다. 주목할 사항으로, 예측기 적중실패 디코드 유닛(26)은 명령어들이 디코드될 때 이들 명령어를 전송하도록 구성될 수 있다. 대안적으로, 예측기 적중실패 디코드 유닛(26)은 명령어 정보의 라인을 디코드해서, 이를 라인 예측기(12)에 제공하여 이곳에 저장되도록 할 수 있다. 이어서, 그 적중실패 인출 어드레스는 라인 예측기(12)에서 재시도되어, 적중(hit)이 검출되게 된다.
라인 예측기(12)에서의 적중실패 하에서 명령어들을 디코드 하는 것에 더하여, 예측기 적중실패 디코드 유닛(26)은 만일 라인 예측기(12)에 의해 제공된 명령어 정보가 무효일 경우 명령어들을 디코드하도록 구성될 수 있다. 일 실시예에서, 프로세서(10)는 라인 예측기(12)에 있는 정보를 I-cache(14)내의 대응 명령어들과 일관성 있게 유지시키려 하지 않는다 (예컨대, 명령어들이 대체되거나 I-cache (14)에서 무효일 때, 대응 명령어 정보는 활발하게 무효화되지 않는다). 디코드 유닛(24A-24D)은 제공된 명령어 정보를 검증하여 무효 명령어 정보가 검출될 때 예측기 적중실패 디코드 유닛(26)에 신호한다. 특별한 일 실시예에 따르면, (산술, 로직, 시프트/회전 및 브랜치 오퍼레이션을 포함하는)정수, (멀티미디어 오퍼레이션을 포함하는) 플로팅 포인트 및 적재/저장과 같은 명령어 오퍼레이션들이 프로세서(10)에 의해 지원된다.
디코드된 명령어 오퍼레이션 및 소오스 및 목적지 레지스터 번호들이 맵 유닛(30)에 제공된다. 맵 유닛(30)은 각 명령어 오퍼레이션의 소오스 레지스터 오퍼랜드 및 각 목적지 레지스터 오퍼랜드에 물리 레지스터 번호들(PR#들)을 제공함으로써 레지스터 변경을 수행하도록 구성된다. 물리 레지스터 번호들은 레지스터(38A-38B)내의 레지스터들을 식별한다. 맵 유닛(30)은 또한 명령어 오퍼레이션의 소오스 오퍼랜드에 할당된 각 물리 레지스터 번호를 갱신하는 명령어 오퍼레이션들의 R#들을 제공함으로써 각 명령어 오퍼레이션에 대한 종속들(dependencies)의 표시를 제공한다. 맵 유닛(30)은 대응하는 논리 레지스터 번호에 근거하여 각 목적지 레지스터(및 대응 명령어 오퍼레이션의 R#)에 할당된 물리 레지스터 번호로 미결정 파일(20)을 갱신한다. 또한, 맵 유닛(30)은 목적지 레지스터의 논리 레지스터 번호, 할당된 물리 레지스터 번호 및 사전 할당된 물리레지스터 번호를 퇴거 큐(32)에 저장한다. 명령어들이 퇴거될 때 (스케줄러(36)에 의해 맵 유닛(30)에 표시됨), 퇴거 큐(32)는 구조적 변경 파일(34)을 갱신하고, 더 이상 사용되지 않는 어떤 레지스터들을 배제시킨다. 따라서, 구조적 레지스터 파일(34)에서 물리 레지스터 번호들은 프로세서(10)의 전달된 구조적 상태를 저장하는 물리 레지스터들을 식별하는데 반해, 미결정 파일(20)은 프로세서(10)의 추론적인 상태를 나타낸다. 다시 말해서, 구조적 변경 파일(34)은 각 논리 레지스터에 대응하는 물리적 레지스터 번호를 저장하며, 각 논리 레지스터에 대한 전달된 레지스터 상태를 나타낸다. 미결정 파일(20)은 각 논리 레지스터에 대응하는 물리 레지스터 번호를 저장하며, 각 논리 레지스터에 대한 추론적인 레지스터 상태를 나타낸다.
명령어 오퍼레이션의 라인, 소오스 물리 레지스터 번호들 및 목적지 물리 레지스터 번호들은 PC 사일로(48)에 의해 할당된 R#들에 따라 스케줄러(36)에 저장된다. 또한, 특정 명령어 오퍼레이션에 대한 종속들은 이 스케줄러에 저장된 다른 명령어 오퍼레이션들에 대한 종속들로 언급된다. 일 실시예에서, 명령어 오퍼레이션들은 퇴거될때까지 스케줄러(36)에 남아있게된다.
스케줄러(36)는 상기 명령어 오퍼레이션에 대해 언급된 종속들이 만족될때까지 각 명령어 오퍼레이션을 저장한다. 특정 명령어 실행 오퍼레이션을 스케줄링하는 것에 응답하여, 스케줄러(36)는 어떤 클럭주기에서 특정 명령어 오퍼레이션이 레지스터 파일(38A-38B)을 갱신하게 될지를 결정한다. 실행 코어(40A-40B)내의 서로 다른 실행유닛들은 서로 다른 수의 파이프라인 스테이지(및 그럼으로써 서로 다른 대기시간)을 활용한다. 또한, 일부 명령어들은 파이프라인에서 다른 명령어들보다 많은 대기시간을 경험하게된다. 따라서, (다수의 클럭 주기들에서)특정 명령어 오퍼레이션을 위한 대기시간을 측정하는 카운트다운이 발생된다. 스케줄러(36)는 (레지스터 파일을 판독하는 종속 명령어 오퍼레이션들 이전 또는 이와 동시에 갱신이 발생할때까지) 특정 수의 클럭 주기를 대기하며, 상기 특정 명령어 오퍼레이션들에 따른 명령어 오퍼레이션들이 스케줄링 됨을 지시한다. 주목할 사항으로, 스케줄러(360는 일단 그의 종속들이 만족이 되면 (즉, 스케줄러 큐내의 그의 순서에 관하여 순서가 뒤바뀌면) 명령어들을 스케쥴링한다.
정수 및 적재/저장 명령어 오퍼레이션들은 레지스터 파일(38A)로부터 소오스 물리 레지스터 수에 따라 소오스 오퍼랜드를 판독하며, 실행을 위해 실행코어(40A)로 전송된다. 실행코어(40A)는 명령어 오퍼레이션을 실행하고, 레지스터 파일(38A)내의 목적지에 할당된 물리 레지스터를 갱신한다. 추가로, 실행코어(40A)는 명령어 오퍼레이션의 R# 및 (가령 있다면) 이 명령어 오퍼레이션에 관한 예외 정보를 스케줄러(36)에 보고한다. 레지스터 파일(38B) 및 실행코어 (40B)는 플로팅 포인트 명령어 오퍼레이션들에 관하여 유사한 방식으로 동작한다(또한, 플로팅 포인트 저장을 위한 저장 데이터를 적재/저장 유닛(42)에 제공하다).
일 실시예에서, 실행코어(40A)는 예컨대 두 개의 정수 유닛, 브랜치 유닛, 및 (대응하는 변환 룩어사이드 버퍼들 즉, TLBs(translation lookaside buffers))를 갖는 두개의 어드레스 발생 유닛을 포함한다. 실행 코어 (40B)는 플로팅 포인트/멀티미디어 배율기, 플로팅 포인트/멀티미디어 가산기, 및 저장 데이터를적재/저장 유닛(42)에 전달하기 위한 저장 데이터 유닛을 포함한다. 실행 유닛들에 대한 다른 구성들도 가능하다.
적재/저장 유닛(42)은 메모리 연산을 수행하고 그리고 D-cache(44)에 부재된메모리 연산들을 위한 채움 연산들을 스케줄링하기위해 D-cache(44)에 인터페이스를 제공한다. 적재 메모리 연산은 어드레스 발생을 수행하고 (D-cache(44) 또는 적재/저장 유닛(42)내의 저장 큐로 부터)레지스터 파일(38A-38B)에 데이터를 전송하는 실행 코어(40A)에 의해 완성된다. 저장 어드레스들은 발생시 실행코어(40A)에 의해 (실행코어(40A) 및 D-cache(44)간의 연결부를 통해 직접) D-cache(44)에 전송된다. 이 저장 어드레스들에는 저장 큐 엔트리가 할당된다. 저장 데이터는 동시에 제공되거나 또는 설계에 따라 후속하여 제공될 수 있다. 저장 명령어의 퇴거 시, 상기 데이터는 (비록 D-cache(44)의 퇴거와 갱신 사이에 약간의 지연이 있을 수 있지만은) D-cache(44)에 저장된다. 추가로, 적재/저장 유닛(42)은 적재/저장 버퍼를 포함하는데, 이 버퍼는 D-cache(44)에 부재된 적재/저장 어드레스들을 (외부 인터페이스 유닛(46)을 통한) 후속 캐쉬 채움을 위해 저장하고 부재 적재/저장 연산을 재개한다. 적재/저장 유닛(42)은 또한 적재/저장 종속들을 처리하도록 구성된다.
D-cache(44)는 프로세서(10)에 의해 엑세스되는 데이터를 저장하기위한 고속 메모리이다. D-cache(44)는 (직접 맵핑 및 집합 연관성 구조들(direct mapped and set-associative)을 포함하는) 어떤 적절한 구조를 포함할 수도 있지만은, D-cache(44)의 일 실시예는 128Kbyte 즉, 64 바이트 라인을 갖는 2-방식 집합 연관성 캐쉬를 포함한다.
외부 인터페이스 유닛(46)은 외부 인터페이스(52)를 통해 다른 디바이스들과 교신하도록 구성된다. L2 캐쉬로의 인터페이스 및 프로세서(10)를 다른 디바이스들에 연결하기위한 외부 버스(들)을 포함하는 적절한 외부 인터페이스(52)가 사용된다. 외부 인터페이스 유닛(46)은 I-cache(16) 및 D-cache(44)를 위한 채움을 인출하고 그리고 D-cache(44)로부터 외부 인터페이스로의 폐기된 갱신 캐쉬 라인을 기입한다. 또한, 외부 인터페이스 유닛(46)은 또한 프로세서(10)에 의해 발생된 캐쉬불가(non-cacheable) 판독 및 기입을 수행한다.
도 2는 프로세서(10)의 일 실시예에 의해 활용되는 예시적인 파이프 라인 스테이지 집합을 설명하는 예시적인 파이프라인 선도를 보인 것이다. 다른 실시예들에서는 다른 파이프라인들 즉, 도 2에 보인 파이프라인보다 적거나 많은 파이프라인 스테이지를 포함하는 파이프라인들을 활용한다. 도 2에 보인 스테이지들은 수직 대시 라인으로 경계를 정하였다. 각 스테이지는 프로세서(10)내에서 클럭 저장 요소들(예컨대, 레지스터, 래치, 플롭등)에 이용되는 클럭 신호의 한 클록 주기이다.
도 2에 예시한 바와같이, 예시적인 파이프라인은 CAM0 스테이지, CAM1 스테이지, 라인 예측기(LP)스테이지, 명령어 캐쉬(IC) 스테이지, 정렬(AL) 스테이지, 디코드(DEC)스테이지, 맵 1(M1) 스테이지, 맵 2(M2) 스테이지, 기입 스케줄러(WR SC) 스테이지, 판독 스케줄러(RD SC) 스테이지, 레지스터 파일 판독 (RF RD) 스테이지, 실행(EX) 스테이지, 레지스터 파일 기입(RF WR) 스테이지 및 퇴거 (RET) 스테이지를 포함한다. 어떤 명령어들은 실행상태에서 다수의 클럭 주기를 이용한다. 예컨대, 메모리 연산, 플로팅 포인트 연산 및 정수 승산 연산들이 도 2에서 확대형태로 예시되어 있다. 메모리 연산은 어드레스 발생(AGU) 스테이지, 변환(TLB)스테이지, 데이터 캐쉬 1(DC1)스테이지 및 데이터 캐쉬 2(DC2) 스테이지를 포함한다. 마찬가지로, 플로팅 포인트 연산은 4개의 플로팅 포인트 실행(FEX1-FEX4)스테이지를 포함하며, 정수 승산은 4개의 (IM1-IM4)스테이지를 포함한다.
CAM0 및 CAM1 스테이지 동안, 라인 예측기(12)는 브랜치 예측/인출 PC 발생 유닛(18)에 의해 제공된 인출 어드레스를 자체에 저장된 라인 어드레스들과 비교한다. 추가로, 인출 어드레스는 가상 어드레스(예컨대, x86 아키텍춰에 있는 라인 어드레스)로부터 CAM1 및 CAM1 스테이지 동안 (예컨대, 도 3의 ITLB(60)에서) 물리 어드레스로 변환한다. CAM0 및 CAM 1 스테이지 동안 적중을 검출함에 응답하여, 대응 라인 정보는 라인 예측기 스테이지 동안 라인 예측기로부터 판독된다. 또한, I-cache(14)는 라인 예측기 스테이지동안 (상기 물리 어드레스를 이용하여)판독을 시작한다.
주목할 사항으로, 도 2에 예시한 파이프라인은 인출 어드레스에 대해 라인 예측기(12)에서 적중을 검출하기위해 2개의 클럭 주기를 활용하지만은 다른 실시예들은 이 연산을 수행하기위해 1개의 클럭 주기(및 스테이지)를 활용할 수도 있다. 더욱이, 일 실시예에서, 라인 예측기(12)는 I-cache(14)에 대해서는 차기 인출 어드레스 및 한 적중에 대해서는 라인 예측기(12)의 차기 엔트리를 제공하며, 그러므로써 CAM0 및 CAM1 스테이지는 라인 예측기(12)에서 이전의 적중으로부터 기인하는 인출을 위해 스킵(skip)될 수 있다.
I-cache(14)에 의해 제공된 명령어 바이트는 라인 예측기(12)로부터의 대응라인 정보에 응답하여 정렬 스테이지동안 정렬 유닛(16)에 의해 디코드 유닛(24A-24D)에 정렬된다. 디코드 유닛(24A-24D)은 상기 제공된 명령어들을 디코드하고, 상기 명령어들에 대응하는 ROP들 및 상기 디코드 스테이지 동안 오퍼랜드 정보를 식별한다. 맵 유닛(30)은 맵 1 스테이지 동안 상기 제공된 정보로부터 ROP들을 발생하고, (미결정 파일(20)을 갱신하는) 레지스터 변경을 수행한다. 맵 2 스테이지 동안, ROP들 및 할당된 변경들은 퇴거 큐(32)에 기록된다. 또한, ROP들 (각 ROP 들은 종속 관계에 있음)이 결정된다. 각 ROP는 미결정 파일에 기록될때 초기 ROP에 종속되는 레지스터이며, 다른 유형의 종속물(예컨대, 이전의 연속 명령어, 등등)을 또한 나타낸다.
발생된 ROP들 및 오퍼랜드들은 기입 스케줄러 스테이지동안 스케줄러(36)에 기입된다. 이 스테이지 때까지, 특정 정보 라인에 의해 위치된 ROP들은 유닛으로서 파이프라인을 통해 흐른다. 그러나, 스케줄러(36)내로의 기입에 후속하여, 이 ROP들은 각기다른 시간에 나머지 스테이지들을 통해 흐른다. 일반적으로, 특정 ROP는 스케줄러(36)에 의한 실행을 위해 선택될 때까지 (예컨대, 상기 ROP들(여기서, 상기 특정 ROP는 종속적임)이 전술한 바와같이 실행을 위해 선택된 후) 이 스테이지에 남아있게된다. 따라서, 특정 ROP는 기입 스케줄러 기입 스테이지와 판독 스케줄러 스테이지 사이에서 하나 이상의 지연 클럭 주기를 겪게 된다. 판독 스케줄러 스테이지 동안, 상기 특정 ROP는 스케줄러(36)내에서 선택로직에 참여하고, 실행을 위해 선택되며, 스케줄러(36)로부터 판독된다. 이어서, 상기 판독 ROP는 레지스터 파일 판독 스테이지에서(ROP의 유형에 따라)레지스터 파일들(38A-38B)중 하나로부터 레지스터 파일 오퍼레이션을 진행하게된다.
상기 특정 ROP 및 오퍼랜드들은 대응하는 실행 코어(40A 또는 40B)에 제공되며, 명령어 오퍼레이션이 실행 스테이지동안 상기 오퍼랜드들에서 수행된다. 전술한 바와같이, 일부 ROP들은 여러개의 실행 파이프라인 스테이지를 가지고 있다. 예컨대, 메모리 명령어 오퍼레이션들(예컨대, 적재 및 저장들)은 어드레스 발생 스테이지(여기서, 메모리 명령어 오퍼레이션에 의해 엑세스된 메모리 위치의 데이터 어드레스가 발생된다), 변환 스테이지(여기서, 어드레스 발생 스테이지에 의해 제공된 가상 데이터 어드레스가 변환된다) 및 한쌍의 데이터 캐쉬 스테이지(여기서, D-cache (44)가 엑세스된다)를 통해 실행된다. 플로팅 포인트 오퍼레이션들은 4클럭의 실행 주기를 활용하고, 정수 배율기들은 마찬가지로 4클럭의 실행 주기를 활용한다.
실행 스테이지(들)의 완료 시, 상기 특정 ROP는 레지스터 파일 기입 스테이지동안 그의 할당된 물리 레지스트를 갱신한다. 마지막으로, 상기 특정 ROP는 (퇴거 스테이지에서) 이전의 각 ROP의 퇴거후에 퇴거된다. 다시, 레지스터 파일 기입 스테이지와 퇴거 스테이지 사이에서 특정 ROP에 대해 하나 이상의 클럭 주기들이 경과된다. 또한, 본 기술분야에 잘 공지된 바와같이 파이프라인 정지 조건들로 인해 특정 ROP가 임의 스테이지에서 정지된다.
캐쉬 액세스
도 3은 브랜치 예측/인출 PC 발생 유닛(18), 라인 예측기(12), I-cache(14), 명령어 TLB(ITLB)(60) 및 인출 어드레스 mux(64)의 일실시예를 예시하는 블록선도를 보인 것이다. 다른 실시예들을 고려할 수 있다. 도 3의 실시예에서, 브랜치 예측/인출 PC 발생 유닛(18)은 PC 사일로 (48)로부터 트랩 PC를 수신하도록 연결되고 또한 ITLB(60), 라인 예측기(12), I-cache(14) 및 인출 어드레스 mux(64)에 연결된다. ITLB(60)는 또한 인출 어드레스 mux(64)에 연결되고, 인출 어드레스 mux(64)는 I-cache(14)에 연결된다. 라인 예측기(12)는 I-cache(14) 및 인출 어드레스 mux(64)에 연결된다.
일반적으로, 인출 PC 발생 유닛(18)은 인출될 명령어들에 대한 인출 어드레스(인출 PC)를 발생한다. 이 인출 어드레스는 라인 예측기(12) 및 TLB(60) (및 도 1에 보인 PC 사일로 (48))에 제공된다. 라인 예측기(12)는 상기 인출 어드레스와 자체에 저장된 인출 어드레스들을 비교하여, 상기 인출 어드레스에 대응하는 라인 예측기 엔트리가 라인 예측기(12)내에 존재하는지를 판단한다. 만일 대응하는 라인 예측기 엔트리가 발견되면, 라인 예측기 엔트리에 저장된 명령어 포인터들이 정렬 유닛(16)에 제공된다. 라인 예측기 엔트리들을 조회하는 라인 예측기(12)와 동시에, ITLB(60)은 상기 인출 어드레스 (본 실시예에서는 가상 어드레스임)를 I-cache(14)로의 엑세스를 위해 물리 어드레스(물리 PC)로 변환한다. ITLB(60)는 상기 물리 어드레스를 인출 어드레스 mux(64)에 제공하고, 브랜치 예측/인출 PC 발생 유닛(18D)은 물리 어드레스를 선택하기위해 인출 어드레스 mux(64)를 제어한다. mux(64)의 출력은 도면 및 설명의 간략화를 위해 캐쉬 인출 어드레스(또는 캐쉬 인출 PC)로 언급한다. I-cache(14)는 물리 어드레스에 대응하는 명령어 바이트를 판독하고, 이 명령어 바이트를 정렬 유닛(16)에 제공한다.
본 실시예에서, 각 라인 예측기 엔트리는 또한 차기 인출 어드레스(차기 인출 PC)를 제공한다. 차기 인출 어드레스는 mux(64)에 제공되고, 브랜치 예측/인출 PC 발생 유닛(18)은 라인 예측기(12)가 적중을 검출함에 응답하여 I-cache(14)를 엑세스하기 위해 mux(64)를 통하는 어드레스를 캐쉬 인출 어드레스로서 선택한다. 이러한 식으로, 차기 인출 어드레스는 인출 어드레스들이 라인 예측기에서 계속해서 적중되는 동안 I-cache(14)에 신속하게 제공될 수 있다. 라인 예측기 엔트리는 또한 라인 예측기(12)가 차기 인출 어드레스에 대응하는 명령어 포인터들을 인출할 수 있도록 (차기 인출 어드레스에 대응하는) 라인 예측기(12)내의 차기 라인 예측기 엔트리의 표시를 포함한다. 따라서, 인출 어드레스들이 라인 예측기(12)에서 계속해서 적중되면, 명령어들의 라인들의 인출이 도 2에 보인 파이프라인의 라인 예측기 스테이지로부터 초기화된다. (스케줄러(36)에 응답하여) PC 사일로(48)에 의해 초기화된 트랩들과, 그리고 차기 인출 어드레스에 대해 라인 예측기(12)에 의해 수행된 예측과 브랜치 예측/인출 PC 발생 유닛(18D)에 의해 발생된 차기 인출 어드레스 사이의 불일치는 브랜치 예측/인출 PC 발생 유닛(18D)에 의해 제공된 인출 어드레스가 라인 예측기(12)에서 조회될 수 있게 한다.
추가로, 라인 예측기(12)는 캐쉬 린출 어드레스에 대응하는 경로 예측을 제공한다. I-cache(14)는 이 경로 예측에 의해 확인되는 예측 경로를 판독하여, 판독 명령어 바이트를 정렬 유닛(16)에 제공한다. 장점적으로, I-cache(14)를 액세스하기위한 대기시간은 출력 데이터를 선택하는데 태그 비교가 사용되지 않기 때문에 감소될 수 있다. 더욱이, 전력 소비는 비예측 경로들을 휴지상태에 놓음으로써(즉,비 예측 경로들을 액세스하지 않음으로써) 감소될 수 있고, 따라서 비 예측 경로들의 액세스시 소비되게되는 전력이 보존된다. 또한, I-cache(14)는 예측 경로로부터 의 태그 및 비예측 경로로부터의 부분적인 태그들을 액세스 할 수 있다. 부분적인 태그들은 완전 태그의 하나 이상의 비트들을 배제하고, 만일 인출 어드레스가 예측 경로에서 적중실패인 경우 비예측 경로에 대한 조회를 지시하는데 이용된다. 비예측 경로들로부터 단지 부분적인 태그들을 제외하고 예측 경로로부터 완전 태그를 액세스함으로써 추가적인 전력이 보존될 수 있다. 만일 인출 어드레스가 예측 경로를 적중실패하면, I-cache(14)는 대응하는 부분적인 태그가 인출 어드레스의 대응하는 부분과 정합하는지에 대해 비예측 경로들을 조회한다. 만일 부분적인 태그가 인출 어드레스의 대응하는 부분과 정합하지 않으면, 완전 태그 역시 정합되지 않게되고, 따라서 부분적인 태그가 정합하지 않는 경로는 조회에서 빠지게 된다. 따라서, 조회가 보다 효율적으로 되며, 각 경로로부터 완전 태그를 액세스하는 것과 비교하여 전력 소비가 감소되게 된다.
만일 경로 예측 적중실패가 검출되면, I-cache(14)는 브랜치 예측/인출 PC 발생 유닛(18) 및 라인 예측기(12)에 정지신호(stall signal)를 표명한다. 이 정지신호는 브랜치 예측/인출 PC 발생 유닛(18) 및 라인 예측기(12)가 인출 어드레스들의 추가적 발생을 중단시켜 I-cache(14)가 비예측 경로들에서 적중에 대해 조회할 수 있도록 한다. 적중이 검출되면, Icache(14)는 라인 예측기(12)에 갱신된 경로 예측을 제공하며, 상기 정지 신호를 비표명한다. 라인 예측기(12)는 갱신된 경로 예측으로 대응하는 라인 예측기 엔트리를 갱신한다. 만일 적중실패가 검출되면(즉,경로들중 어느것도 정합 태그를 가지고 있지 않으면), I-cache(14)는 대체 경로를 선택하고 그 대체 경로를 갱신된 경로 예측으로서 제공한다. 대안적으로, 이 대페 경로는 대응하는 명령어 바이트들이 외부 인터페이스 유닛(46)으로부터 I-cache(14)에 제공될때 선택될 수 있다.
차기 인출 어드레스들이 라인 예측기(12)에 의해 발생되고 그리고 라인예측기에 의해 적중이 되는 동안에도 인출 PC 발생 유닛(18D)은 PC 사일로(48)에 의한 로깅(logging)을 위해 인출 어드레스들을 계속 발생한다. 또한, 인출 PC 발생 유닛(18D)은 브랜치 예측기(18A-18c)를 통해 라인 예측기(12)에 의해 제공된 차기 인출 어드레스들을 검증한다. 라인 예측기(12)내의 라인 예측기 엔트리들은 명령어들 라인내의 종단 명령어를 유형별로 식별하며, 라인 예측기(12)는 상기 유형 정보 및 종단 명령어(도 3의 브랜치 정보)의 예측 방향을 인출 PC 발생 유닛(18D)에 전송한다. 또한, 브랜치 명령어내에 포함된 브랜치 변위(branch displacement)를 통해 타겟 어드레스를 형성하는 브랜치들에 대해 라인 예측기(12)는 브랜치 변위의 표시를 제공한다. 예측된 차기 인출 어드레스를 검증하기 위한 목적으로, 종단 명령어는 조건 브랜치 명령어, 간접 브랜치 명령어 또는 리턴 명령어로 될 수 있다.
주목할 사항으로, 일 실시예에서 I-cache(14)는 인출 어드레스 옆에 위치된 명령어 바이트로 시작하는, 명령어 인출 당 고정된 수의 명령어 바이트를 제공한다. 인출 어드레스는 캐쉬 라인내의 어느 곳에 바이트를 위치시키기 때문에, I-cache(14)는 인출 어드레스에 응답하여 두 개의 캐쉬라인(인출 어드레스에 의해 인덱스된 캐쉬라인 및 캐쉬에서 차기 인덱스에 있는 캐쉬라인)을 엑세스한다. 다른실시예들은 제공되는 명령어 바이트의 수를 무엇이 처음에 오든간에 고정된 수 또는 캐쉬 라인의 끝으로 제한한다. 일 실시예에서, 상기 고정된 수는 16이다. 그러나, 다른 실시예에서 16보다 많거나 적은 수를 이용할 수 있다. 두개의 캐쉬 라인 및 두개의 경로예측을 액세스하는 실시예들이 제공될 수 있다. 하기 도 4내지 9에 관한 설명은 경로 예측에 관해 언급하지만은 다중의 동시적인 경로 예측들에도 확장될 수 있다.
여기에서 사용하는 "어드레스"는 프로세서(10)가 결합될 수 있는 메모리 시스템내의 바이트를 식별하는 값이다. "인출 어드레스"는 프로세서(10)내의 명령어들로서 실행될 명령어 바이트들을 인출하는데 사용되는 어드레스이다. 전술한바와같이, 프로세서(10)는 어드레스 변환 메커니즘을 활용하는데, 이 메커니즘에서 (명령어들의 오퍼랜드들에 응답하여 발생되는) 가상 어드레스들은 (메모리 시스템에서 위치들을 물리적으로 식별하는) 물리 어드레스로 변환된다. x86 명령어 세트 아키텍춰에서, 가상 어드레스들은 명령어들의 오퍼랜드들로부터 발생되는 로직 어드레스들하에서 동작하는 세크먼테이션 메커니즘에 따라 발생되는 선형 어드레스들이다. 다른 명령어 세트 아키텍춰들은 상기 가상 어드레스를 다르게 정의할 수 있다.
도 4는 I-cache(14)의 일 실시예의 블록선도를 보인 것이다. 다른 실시예들이 창안 가능하다. 도 4의 실시예에서, I-cache(14)는 태그 어레이(70), 명령어 어레이(72), 나머지 태그 비교기(74), 복수의 부분적인 태그 비교기(76A-76D), 제어회로(78), 경로 멀티플렉서(mux)(80), 어드레스 mux(82) 및 어드레스 레지스터(84)를 포함한다. 어드레스 mux(82) 및 어드레스 레지스터(84)는 I-cache(14)에 제공되는 캐쉬 어드레스를 수신하도록 결합되며, 어드레스 레지스터(84)는 또한 어드레스 mux(820에 결합된다. 어드레스 mux(82)의 출력은 태그 어레이(70) 및 명령어 어레이(72) 뿐만 아니라 비교기(74, 74A-76D)에 결합된다. 경로 mux(800는 I-cache(14)에 제공되는 경로 예측을 수신하도록 결합되고, 제어 회로(78)로 부터의 조회 경로 선택을 수신하도록 결합된다. 경로 mux(80)의 출력은 태그 어레이(70) 및 명령어 어레이(72)에 결합된다. mux(80, 82)는 제어 회로로 부터 선택 신호를 수신 하도록 결합되고, 어드레스 레지스터(84)는 제어 회로(78)로부터 보유(hold) 제어 신호를 수신하도록 결합된다. 나머지 태그 비교기(74)는 태그 어레이(70)로 붙너 예측 경로 나머지 태그(RTag)를 수신하도록 결합되고, 출력신호를 제어 회로(78)에 제공하도록 결합된다. 부분적인 태그 비교기(76A-76D) 각각은 태그 어레이(70)으로 부터 각각의 부분적인 태그들(PTag0-Ptag3)를 수신하도록 결합되며, 제어 회로(78)에 각의 출력신호를 제공하도록 결합된다. 제어 회로(78)는 외부 인터페이스에 적중실패 신호, 라인 예측기(12)에 경로 예측 갱신 신호 및 라인 예측기와 브랜치 예측/인출 PC 발생 유닛(18)에 정지 신호(stall signal)를 제공하도록 결합된다. 제어회로(78)는 경로 mux(80)로부터 경로 선택을 수신하도록 결합된다. 주목할 사항으로 I-cache(14)는 적중 실패에 응답하여 I-cache(14)내로 캐쉬라인들의 전송을 관리하거나 스누프 트랜젝션을 관리하거나 등등의 필요한 기능을 수행하도록 추가적인 회로(미도시)를 포함할 수 있다.
태그 어레이(70)는 I-cache(14)에 저장되는 명령어 바이트들의 캐쉬라인들의 태그들을 저장하며, 명령어 어레이 (72)는 명령어 바이트들의 캐쉬라인을 저장한다. 태그 어레이(70) 및 명령어 어레이(72)는 예컨대 랜덤 액세스 메모리(RAM) 어레이들로 구성된다. 태그 어레이(70)에서의 태그 저장 위치들과 명령어 어레이(72)에서의 캐쉬 라인 저장위치들간에는 일대일 대응이 된다. 보다 특별하게, 태그 어레이(70) 및 명령어 어레이(72)는 동일수 의 세트(따라서, 동일 세트의 인덱스 비트로 인덱스됨)와 동일 수의 경로를 포함한다.
일반적으로, 제어회로(78)는 예측 경로에서의 적중실패로 인하여 비 예측 경로에서 인출 어드레스의 적중에 대한 조회를 행하지 않고, 어드레스 mux(82)를 통해 캐쉬 인출 어드레스 및 경로 mux(80)를 통해 경로 예측을 선택한다. 따라서, 캐쉬 인출 어드레스 및 예측 경로는 태그 어레이(70) 및 명령어 어레이(72)에 제공된다. 보다 특별하게, 캐쉬 인출 어드레스의 인덱스부는 각 어레이에 제공되고, 대응하는 세트가 선택된다. 더욱이, 명령어 어레이(72)에서, 세트의 예측 경로가 액세스되고, 비예측 경로들은 (경로 예측에 응답하여) 전력을 보존하도록 휴지상태로 유지된다. 판독 액세스 동안 어레이에 의해 소비되는 전력은 일반적으로 액세스되는 정보의 량(예컨대, 비트 또는 바이트의 수)에 비례하므로, 소비되는 전력은 만일 그러하지 못한 경우 액세스 되어 출력에서 선택되지 않는 어레이의 부분들(예컨대, 명령어 어레이(72)의 비 예측 경로들)을 휴지 상태로 되게함으로써 감소된다. 예측 경로에 저장되는 명령어 바이트들은 명령어 어레이(72)로 부터 정렬 유닛(16)으로 출력된다. 추가로, 부분적인 태그가 태그 어레이(70)의 각 경로로부터 판독되고, 나머지 태그(즉, 부분적인 태그로부터 배제된 태그의 부분)는 태그 어레이(70)의 예측 경로로 부터 판독된다. 다시, 단지 부분적인 태그들만이 비예측 경로들로부터 판독되기 때문에, 각 경로로부터 완전 태그를 판독하는 것과 비교하여 전력이 보존될 수 있게 된다. 예측 경로로부터의 부분적인 태그와 예측 경로로부터의 나머지 태그의 결합은 예측 경로로부터의 태그를 구성한다.
나머지 태그 비교기(74)는 예측 경로로부터의 나머지 태그를 인출 어드레스의 대으하는 부분과 비교한다. 만일 나머지 태그와 인출 어드레스의 대으하는 부분이 동일하면, 나머지 태그 비교기(74)는 그의 출력신호를 제어 회로(78)에 표명한다. 그렇지 않은경우, 나머지 태그 비교기(74)는 그의 출력을 제어 회로(78)에 표명하지 않는다. 마찬가지로, 부분적인 태그 비교기들(76A-76D)각각은 태그 어레이(70)의 각 경로로부터 부분적인 태그를 수신하여, 수신된 부분적인 태그를 인출 어드레스의 대응하는 부분과 비교한다. 만일 수신된 부분적인 태그와 인출 어드레스의 대응하는 부분이 동일하면, 부분적인 태그 비교기(76A-76D)는 그의 출력을 표명한다. 그렇지 않은경우, 부분적인 태그 비교기(76A-76D)는 그의 출력을 표명하지 않는다.
만일 나머지 태그 비교기(74) 및 예측 경로에 대응하는 부분적인 태그 비교기(76A-76D)가 모두 그들의 출력을 표명하면, 제어 회로(78)는 예측 경로에서 적중을 검출하고, 명령어 어레이(72)에 의해 제공되는 대응하는 명령어 바이트들은 정확하게 된다. 제어 회로(78)는 정지 신호 또는 적중 실패 신호를 표명하지 않으며, 후속적인 액세스들이 계속된다. 제어 회로(78)는 부분적인 태그 비교기(76A-76D)중 어느것이 선택된 경로에 대응하는지를 결정하기위해, 태그 어레이(70)에 제공되는 경로 선택을 수신한다.
다른 한편으로, 만일 나머지 태그 비교기(74) 또는 예측 경로에 대응하는 부분적인 태그 비교기(76A-76D)가 그의 출력을 표명하지 않으면, 제어 회로(78)는 예측 경로에서 적중 실패를 검출한다. 만일 다른 부분적인 태그 비교기들(76A-76D) 어느것도 그의 출력을 표명하지 않으면, 인출 어드레스는 I-cache(14)에서 적중실패이며, 제어 회로(78)는 그 적중 실패 신호를 외부 인터페이스 유닛(46)에 표명하여, 적중실패 명령어 바이트가 인출되도록 한다. 반대로, 만일 다른 부분적인 태그 비교기들(76A-76D)로부터의 출력들중 적어도 어느 하나가 표명되고, 예측 경로에서 적중실패가 검출되면, 제어 회로(78)는 조회 경로 선택을 발생하고, 그 조회 경로 선택을 경로 mux(80)에 제공하여 정지 신호를 라인 예측기(12) 및 브랜치 예측.인출 PC 발생 유닛(18)에 표명한다. 조회 경로 선택은 부분적인 태그가 인출 어드레스의 대으하는 부분과 정합되는 경로를 확인한다. 제어 회로(78)는 경로 mux(80)를 통해 조회 경로 선택 및 어드레스 mux(84)를 통해 어드레스 레지스터(84)의 값을 선택한다. 조회 경로가 액세스 되고, 그 조회 경로에서 적중이 검출되는지 여부를 결정하기위한 비교가 예측 경로 액세스와 유사한 방식으로 수행된다. 만일 적중이 검출되면, 제어 회로(78)는 경로 예측 갱신으로서 적중하는 조회 경로 선택을 라인 예측기(12)에 전송한다.
일반적으로, 어드레스 레지스터(84)는 각 클럭주기 마다 I-cache(14)에 제공되는 캐쉬 인출 어드레스를 캡춰(capture)한다. 그러나, 어드레스 레지스터(84)는 보유 제어 신호를 포함하는데, 이 제어신호는 표명될때 어드레스 레지스터(84)가 그의 현재 값을 유지하도록 한다. 보류 제어는 제어 회로(78)가 경로 mux(80)를 통해 조회 경로 선택 및 어드레스 mux(82)를 통해 어드레스 레지스터(84)의 내용을 선택하게 되는 클럭 주기동안 표명된다. 이러한 방식으로, 예측 경로에서 적중실패된 인출 어드레스는 다시 태그 어레이(70) 및 명령어 어레이(72)에 제시되고, 상기 조회 경로 선택이 경로 선택으로서 태그 어레이(70) 및 명령어 어레이(72)에 제공된다.
만일 제어 회로(78)가 조회 경로에서 적중을 검출하지 못하면, 제어회로(78)는 부분적인 태그 적중이 검출되는 각 경로가 조회될때까지 추가적인 조회 경로들을 발생한다. 일 실시예에서, 제 1 조회 경로는 부분적인 태그 적중이 검출되는 최하위수의 경로(the lowest numbered way)가 되며, 후속적인 조회 경로들이 증가하는 순서로 발생된다 (예컨대, 본 실시예에서는 먼 경로 0이 조회되고, 마지막으로 경로 3이 조회된다). 제어 회로(78)는 조회가 계속됨에 따라 정지 신호를 계속 표명한다. 만일 부분적인 태그 적중들을 갖는 경로들 각각이 하나의 적중에 대해 조회되고 그리고 적중이 검출되지 않으면, 제어 회로(78)는 그 적중실패 신호를 외부 인터페이스 유닛(46)에 표명한다. 따라서, 적중 실패 캐쉬 라인이 인출되어 I-cache(14)에 저장된다.
적중실패 신호의 표명은 라인 예측기(12)와 분기 예측/인출 PC 생성 유닛(18)으로 하여금 상기 적중실패 명령 바이트들이 외부 인터페이스 유닛(46)으로부터 제공될 때까지 정지되도록 한다. 대안적으로, 제어회로(78)는 상기 지연 신호를 상기 적중실패 명령 바이트들이 제공될 때까지 계속해서 표명할 수 있다.
주목할 사항으로, 명령 배열(72)의 선택된 방법 만을 액세싱하는데 부가적으로, 명령 어레이(72)는 캐쉬라인 내부의 다중 뱅크들을 사용할 수 있다. 명령 어레이(72)는 액세스를 위해 뱅크(또는 뱅크들)를 선택하기위하여 하나 이상의 캐쉬 라인 오프셋들을 이용할 수 있고, 다른 뱅크들은 휴지상태로 유지될 수 있다. 또한 주목할 사항으로, 어레이의 부분은 상기 어레이의 상기 부분을 액세싱하지 않음으로써 무효로 유지될 수 있다. 예를 들어, 상기 부분은 데이터를 상기 어레이로부터 출력하기위해서 저장 셀들이 선택되지 않으면 무효일 수 있다. 다시 말해서, 상기 무효 부분들은 "파워 업(powered up)"되지 않을 것이다. 또한 주목할 사항으로, 비록 명령 캐쉬가 경우 예측 및 부분적인 태그들의 사용의 예로서 이용될 수 있지만, 다른 캐쉬들은 유사한 구조들을 적용할 수 있다. 예를 들어, 데이터 캐쉬 또는 조합된 명령/데이터 캐쉬는 유사한 구조를 사용할 수 있다.
대안적 구성들이 가능하다는 것에 주목하기 바란다. 예를 들어서, 부분적인 적중의 검출을 위해 각 경우들을 조회하는 대신, 태그 어레이(70)는 선택된 경우로부터 전체 태그와 다른 경우들로부터의 부분적인 태그들을 판독하는데 부가되는 각 경우로부터의 전체 태그 판독을 제공하도록 구성될 수 있다. 만일 하나 이상의 부분적인 태그 적중이 검출되면, 제어 회로(78)는 전체 태그 판독을 수행할 수 있고, 전체 태그 비교기들은 각 경우를 위해 제공될 수 있다. 이러한 방식으로, 적중을 위한 조회은 전술된 바와 같은 하나 이상의 판독들대신 상기 태그들의 하나의 판독에서 완료될 수 있다. 또한 주목할 사항으로, 어드레스 mux(82)와 mux(64)(도 3에 도시됨)는 원한다면 어드레스 레지스터(84), ITLB(60)에의해 제공되는 물리적 어드레스, 그리고 라인 예측기(12)에의해 제공되는 다음 인출 어드레스 사이의 선택을위해서 단일 mux로 병합될 수 있다.
도 5에서, 태그 어레이(70)의 일 실시예의 블록 다이어그램이 도시된다. 다른 실시예들이 가능하며 창안될 수 있다. 도 5의 실시예에서, 태그 어레이(70)는 인덱스를 수신하기위해 결합되는 부분적인 태그 디코더(90)와 상기 인덱스 및 경우 선택을 수신하기위해 결합되는 나머지 태그 디코더(92)를 포함한다. 태그 어레이(70)는 세트들로 배열되는 한 세트의 RAM 셀들(94)을 더 포함한다. 예시적 세트(96)는 두개의 수평 점선 라인들 간에 예시되며, 다른 세트들은 디코더들(90과 92)로부터 상이한 신호들을 수신하는 동일 구성을 포함할 수 있다. 세트(96)는 나머지 태그 셀들(98A-98D)과 부분적인 태그 셀들(100)을 포함한다. 나머지 태그 센스 증폭기(센스앰프)(102)와 부분적인 태그 센스앰프(104) 역시 도시된다. 주목할 사항으로, 세트 조합적 RAM 설계들 위해 적절한 임의의 방식으로 부가적인 회로부(미도시)가 태그 어레이(70)를 갱신하기위해 포함될 수 있다.
전형적인 RAM 어레이에서, 디코더는 세트를 선택하고 워드라인을 상기 세트 내부의 상기 RAM 셀들에 대해 활성화하기위해 상기 수신된 인덱스를 디코드한다. 각 RAM 셀은 (일반적으로 비트와 비트바(bit bar)로 간주되는)비트 라인들의 한 쌍과 결합되고, 상기 RAM 셀 중 하나는 상기 RAM 셀에 저장된 비트에 응답하여 방전된다. 센스앰프는 상기 비트 라인들과 결합되고 그리고 상기 비트 라인들 쌍 간의 전압 차이에 응답하여 상기 세트의 각 셀에 대해서 이진 0이나 이진 1을 생성하도록 구성된다. 도 5에 예시된 태그 어레이(70)의 일 실시예에서, 셀들(98A-98D)과 셀들(100)은 센스앰프들(102 또는 104) 중 하나와 셀들을 결합하는 수직 라인들에의해 나타내어지는 각 셀에 대한 비트 라인들의 쌍과 결합된다. 그래서, 셀들(98A)의 각 비트에 대해서, 비트 라인들의 한 쌍이 제공될 수 있으며 나머지 태그 센스앰프(102)와 결합될 수 있다. 유사하게, 셀들(98B)의 각 비트에 대해서, 비트 라인들의 한 쌍이 제공되고 나머지 태그 센스앰프(102)와 결합될 수 있다(그리고 셀들(98C-98D)도 유사하다). 비트 라인들의 한 쌍은 셀들(100)의 각 비트에 대해 제공될 수 있고, 부분적인 태그 센스앰프(104)와 결합될 수 있고, 다른 세트들(도 5에 미도시)의 상기 셀들(98A-98D과 100)은 각각 상기 셀들(98A-98D 그리고 100)과 같이 비트 라인들의 동일한 세트들과 결합된다.
일반적으로, 부분적인 태그 셀들(100)은 세트(96)에 저장된 각 태그의 부분적인 태그들 부분을 저장한다. 예를 들어, 예시적 실시예에서, 태그 어레이(70)는 4 경우 세트 결합적이다. 그래서, 부분적인 태그 셀들(100)은 이러한 실시예에서 4개의 부분적인 태그들(각 경우에 대해 하나)의 각 비트를 저장하기위해 셀들을 포함한다. 나머지 태그 셀들(98A-98D) 각각은 하나의 나머지 태그의 각 비트를 저장하기위해 셀들을 포함한다(그리고 그로인해 4개의 태그 셀들(98A-98D)은 본 4경우 세트 조합적 실시예를 위해 예시된다).
부분인적 태그 디코더(90)는 태그 어레이에의해 수신되는 인덱스를 디코드하고 선택된 세트에 대한 부분적인 태그들을 활성화한다. 각 세트는 부분적인 태그 디코더(90)로부터 상이한 워드라인을 수신한다. 예를 들어, 도 5는 부분적인 태그 디코더(90)로부터 워드라인을 수신하는 세트(96)의 부분적인 태그들(100)을 예시한다. 상기 활성화된 워드라인에 응답하여, 상기 부분적인 태그 셀들(100)은 그와 결합된 비트라인들을 방전시키고, 부분적인 태그 센스앰프(104)는 상기 비트 라인들 상의 상이한 전압들을 통해 상기 부분적인 태그들의 상기 비트들을 센스한다. 이러한 방식으로, 상기 각 경우에 대한 부분적인 태그들은 비교기들(76A-76D)로의 출력이다. 주목할 사항으로, 상기 부분적인 태그들에 대한 워드라인은 나머지 부분적인 태그들을 비충전으로 두는 동안 하나의 부분적인 태그들 부분이 갱신되도록 허용하기위해서, 각 경우에 대한 개별 워드 라인들을 실질적으로 포함할 수 있다. 판독을 목적으로, 상기 워드라인들 각각은 상기 부분적인 태그들 각각을 판독하기위해 활성화될 수 있다.
나머지 태그 디코더(92)는 상기 선택된 세트를 결정하기위해 인덱스를 디코드할 수 있고, 상기 선택된 세트에 저장된 나머지 태그들 중 하나를 선택하기위해서 상기 경우 선택을 또한 디코드한다. 나머지 태그 디코더(92)는 각 세트에 대한 다수의 워드라인들을 제공하고, 상기 경우 선택에 응답하여 상기 선택된 세트를 위해 상기 워드 라인들 중 하나를 활성화시킨다. 예를 들어, 도 5는 나머지 태그 셀들(98A)에 대한 제 1워드라인, 나머지 태그 셀들(98B)에 대한 제 2워드라인, 나머지 태그 셀들(98C)에 대한 제 3워드라인, 그리고 나머지 태그 셀들(98D)에 대한 제 4워드라인을 제공하는 나머지 태그 디코더(92)를 예시한다. 다른 세트들은 상이한 다수의 워드라인들을 수신한다. 활성화된 워드라인에 응답하여, 나머지 태그 셀들(98A-98D) 중 하나는 대응하는 비트 라인들을 방전시키고, 나머지 태그 센스앰프(102)는 상이한 전압들을 통해 상기 나머지 태그의 비트들을 센스한다. 이러한 방식으로, 상기 선택된 경우로부터의 나머지 태그는 비교기(74)로의 출력이다. 주목할 사항으로, 예시적 실시예에서, 나머지 태그 센스앰프(102)는 상기 세트의 몇몇 나머지 태그들로부터 하나의 나머지 태그를 제공한다. 그래서, 나머지 태그 센스앰프(102)는 센스를 위해 상기 나머지 태그 셀들(98A-98D) 중 하나에 대응하는 비트의 한 세트를 선택하기위해 상기 경우 선택(또는 대안적으로, 나머지 태그 디코더(92)로부터의 제어 신호들)을 수신한다. 다시 말해서, 나머지 태그 셀들(98A-98D) 각각으로부터의 비트 라인들은 상기 센스앰프 회로부로의 입력 시작 전에 "컬럼-mux된다". 센스앰프들이 전형적으로 상기 어레이에의해 소비되는 전력의 실질적인 총량을 소비하기 때문에, 센스되는 비트라인들의 수의 제한은 소비전력을 더욱 줄일 수 있다. 대안적으로, 상기 나머지 태그들은 원한다면 분리된 센스앰프들에의해 센스된 후 mux될 수 있다.
대안적 구성으로, 태그 어레이(70)는 단일 디코더와 세트 당 하나의 워드라인을 사용할 수 있지만, 하나의 나머지 태그 센스앰프(102)와 컬럼 mux를 제공할 수 있으며, 이는 이하 설명된다. 이러한 실시예에서, 상기 선택된 세트의 나머지 태그 셀들(98A-98D) 각각은 그의 대응 비트 라인들을 방전시키지만, 센스되는 비트 라인들의 수는 여전히 제한되며, 그로인해 상기 센스앰프에의해 소비되는 전력은 제한될 수 있다. 또한, 전체 태그 판독을 위해 제공되는 실시예에서, 태그 어레이(70)는 한 세트에 저장되는 각 비트에 대한 센스앰프들을 사용할 수 있지만, 만일 전체 태그 판독이 수향되지 않으면 상기 부분적인 태그 센스앰프들과 나머지 태그 센스앰프들 중 하나 만을 활성화할 수 있다.
주목할 사항으로, 도 5에 도시된 바와 같은 세트 내부의 셀들의 분배는 단순히 편의를 위한 것이며 도면 상 명료함을 위한 것이다. 상기 셀들은 설계 선택에 따라 임의의 적절한 방식으로 물리적으로 배열될 수 있다.
도 6에서, 예시적 인출 어드레스(110)는 이들이 I-캐쉬(14)와 관련되는 바와 같이 인출 어드레스의 다양한 부분들을 예시하면서 도시된다. 상기 인출 어드레스의 최상위 비트들은 도 6의 좌측이며, 최하위 비트들은 도 6의 오른쪽이다. 도 6에 도시된 바와 같이, 인출 어드레스는 오프셋 필드(112), 인덱스 필드(114), 그리고 태그 필드(116)로 나누어진다. 태그 필드(116)는 부분적인 태그 필드(118)와 나머지 태그 필드(120)로 세분화된다.
오프셋 필드(112)를 형성하는 인출 어드레스 부분(110)은 명령 캐쉬 라인 내부의 어드레스된 바이트의 오프셋을 정의하는 인출 어드레스(110)의 비트들이다. 따라서, 오프셋 필드(112) 내부의 비트들의 수는 상기 캐쉬 라인 내부의 바이트들 의 수에 따른다. 예를 들어, 일 실시예에서, I-캐쉬(14)는 64바이트 캐쉬 라인을 포함한다. 이러한 실시예에서, 오프셋 필드(112)는 상기 캐쉬라인의 최하위 6비트들이다.
상기 인덱스 필드(114)는 상기 I-캐쉬(14)를 선택하기위해 상기 캐쉬 인덱스를 형성하는 비트들을 포함한다. 도시된 상기 실시예에서, 인덱스 필드(114)는 오프셋 필드(112)를 제외한 인출 어드레스(110)의 최하위 비트들을 포함한다. 예를 들어, 일 실시예에서, I-캐쉬(14)는 64바이트 라인들을 가지는 4경우 세트 조합적 구조에서 128킬로바이트이다. 이러한 실시예는 512 세트들을 가지며, 그로인해 상기 인덱스는 세트의 선택을 위해 9비트들을 제공한다(29=512).
태그 필드(116)는 상기 인덱스 필드(114)와 오프셋 필드(112)를 제외한 인출 어드레스(110) 부분을 포함한다. 태그 필드(116)는 태그 어레이(70)의 캐쉬 라인을 특별하게(uniquely) 식별하기위해 I-캐쉬(12)에의해 저장되는 인출 어드레스(110)의 부분을 포함한다(그리고 "태그"로 간주된다). 오프셋 필드(112)가 상기 캐쉬 라인 내부의 바이트를 정의하기 때문에, 상기 오프셋 필드(112)는 저장되지 않는다. 또한, 상기 인덱스가 I-캐쉬(14) 내부의 세트를 선택하기 때문에, 상기 인덱스는 상기 태그를 저장하는 I-캐쉬(14)의 위치에서 고유하다. 그래서, 상기 선택된 세트에 저장된 태그들에 대한 상기 태그 필드(116)의 비교는 (만일 정합이 검출되면)I-캐쉬(14)에 저장된 인출 어드레스에 대응하는 캐쉬 라인을 식별한다.
상기 예시적 실시예에서, 부분적인 태그 필드(118)는 만일 예측된 경우가 적중실패하면 어떤 경우를 조회해야 하는지를 결정하기위하여 각 경우에 대한 태그 어레이(70)에의해 제공되는 태그 필드(116)의 부분이고, 그리고 태그 어레이(70)에의해 제공되는 부분적인 태그들에 대한 비교를 위해 부분적인 태그 비교기들(76A-76D)에 제공되는 인출 어드레스의 부분이다. 상기 예시적인 실시예에서, 부분적인 태그 필드(118)는 태그 필드(116)의 최하위 비트들을 포함한다. 많은 프로그램들이 "참조의 국부성(locality fo reference)"을 보이며, 여기서는 명령들이 메모리에서 서로 인접하게 물리적으로 위치되기 때문에, 그리고 I-캐쉬(14)가 전형적으로 명령 바이트들의 가장 최근에 액세스된 캐쉬 라인을 저장하기 때문에, 상기 인출 어드레스와는 통계적으로 가장 상이할 가능성이 많은 태그의 비트들이 상기 태그의 최하위 비트들이다. 따라서, 이러한 비트들은 비-예측된 경우들의 조회을 제한할 가능성을 증가시키기위해 상기 부분적인 태그 필드(118)로서 선택되고, 그로인해 더 빠르게 적중 경우를 정하거나 적중실패를 검출한다. 다른 실시예들은 부분적인 태그들 형성하기위해 태그 필드(116)의 임의의 적절한 부분을 선택할 수 있다.
상기 예시된 실시예에서, 나머지 태그 필드(120)는 만일 상기 경우의 적중이 검출되는지를 판단하기위해 상기 예측되거나 선택된 경우를 위해 태그 어레이(70)에의해 제공되는 태그 필드(116)의 부분이고, 그리고 태그 어레이(70)에의해 제공되는 나머지 태그와 비교하기 위해서 나머지 태그 비교기(74)에 제공되는 인출 어드레스의 부분이다. 나머지 태그 필드(120)는 상기 부분적인 태그 필드(118)를 제외한 태그 필드(116)의 나머지 비트들을 포함한다.
부분적인 태그 필드(118)에 포함된 비트들의 수는 설계 선택에 따라 선택될 수 있다. 일반적으로, 상기 선택된 비트들의 수는 어떤 경우들이 제거될 것인지 혹은조회이 포함될 것인지에따른 정밀도와 보존될 전력의 양 사이에서 절충될 수 있다. 부분적인 태그에 많은 비트들의 수가 포함되면, 비-정합 태그를 저장하는 경우들이 비-예측된 경우의 적중의 조회에서 제거될 수 있는 확률이 커지지만, 작은 전력이 보존될 것이다. 예를 들어, 4 경우 세트 조합적 캐쉬를 가지는 실시예에서, (하나의 전체 태그, 각각 전체 태그 크기의 1/3인 3개의 부분적인 태그들이 판독되며, 이들은 두개의 전체 태그와 동일하기 때문에) 전체 태그 판독의 소비 전력 중 거의 절반을 소비하면서 태그 필드(116)의 비트들의 1/3이 부분적인 태그 필드(118)에 할당될 수 있다. 임의 수의 비트들은 상기 부분적인 태그에 저장된다. 일반적으로, 부분적인 태그는 적어도 한 비트를 제외하며, 상기 태그의 다중 비트들을 제외할 수 있다. 도 7에서, 제어 회로(78)의 일 실시예에 사용될 수 있는 예시적 상태 머신이 도시된다. 다른 실시예들이 가능하며 창안될 수 있다. 도 7의 실시예에서, 상기 상태 머신은 액세스 상태(130)와 조회 상태(132)를 포함한다.
액세스 상태(130)는 I-캐쉬(14)로부터 일반 인출들이 수행되는 상태이다. 따라서, 상기 상태 머신은 만일 인출가 상기 예측된 경우에 적중하면 액세스 상태(130)로 남아 있는다. 부가적으로, 상기 상태 머신은 만일 인출가 상기 예측된 경우에 적중실패하지만 또한 부분적인 태그들과 비교될때 적중실패이면(즉, 상기 인출 어드레스의 대응하는 부분이 정합하는 부분적인 태그들이 없으면), 액세스 상태(130)로 남아 있는다. 반면에, 상기 상태 머신은 적어도 하나의 부분적인 태그들이 상기 인출 어드레스의 대응하는 부분에 정합하고("부분적인 태그 적중") 상기 예측된 경우에서 적중실패하는 인출에 응답하여 액세스 상태(130)에서 조회 상태(132)로 천이한다.
조회 상태(132)는 I-캐쉬(14)가 예측된 경우에 적중실패되는 인출 어드레스에 대한 부분적인 태그 적중을 가지는 비-예측된 경우들을 조회하는 상태이다. 상기 상태 머신은 만일 상기 인출 어드레스가 현재 조회의 조회 경우에 적중실패하고 부분적인 태그 적중을 가지는 적어도 하나의 다른 경우가 조회되면 조회 상태(132)로 남아 있는다. 상기 상태 머신은 만일 상기 조회 경우가 적중하거나 만일 각 부분적인 태그 적중들이 고갈되면(즉, 조회되었고 적중실패로 검출됨) 조회 상태(132)에서 액세스 상태(130)로 천이한다.
도 8에서, 상태 머신이 액세스 상태(130)인 동안 제어 회로(78)의 일 실시예의 예시적 동작이 도시되는 흐름도이다. 다른 실시예들이 가능하며 창안될 수 있다. 도 8에 도시된 단계들은 이해를 용이하게하는 특정 순서로 도시되지만, 임의의 적절한 순서들이 사용될 수 있다. 또한, 제어 회로(78)내에 적용되는 조합 논리에의해 병렬로 수행될 수 있다.
만일 인출 어드레스가 제공되면, 제어 회로(78)는 상기 인출 어드레스가 기 설정된 경우에 적중실패하는지를 판단한다(결정 블록(140)). 예를 들어, 제어 회로(78)는 나머지 태그 비교기(74)와 상기 예측된 경우에 대응하는 부분적인 태그 비교기(76A-76D)로부터의 출력 신호들을 시험한다. 만일 상기 인출 어드레스가 예측된 경우에 적중하면, 제어 회로(78)는 아무것도 부가하지 않는다. 반면에, 만일 상기 인출 어드레스가 상기 예측된 경우에 적중실패하면, 제어 회로(78)는 부분적인 태그 적중이 있는지를 판단한다(결정 블록(142)). 예를 들어, 제어 회로(78)는 부분적인 태그 비교기(76A-76D)로부터의 출력 신호들을 상호간에 시험함으로써 부분적 태그 적중이 있는지를 판단할 수 있다. 만일 부분적인 태그 적중이 검출되지 않으면, 제어 회로(78)는 상기 적중실패 캐쉬 라인의 인출를 초기화 하기위해 적중실패 신호를 외부 인터페이스 유닛(46)으로 표명한다(단계(144)). 반면에, 만일 부분적인 태그 적중이 검출되면, 제어 회로(78)는 지연 신호를 표명한다(단계(146)). 부가적으로, 제어 회로(78)는 상기 인출 어드레스에 적중하는 대응하는 부분적 태그에 대한 제 1경우의 판독을 초기화 한다(단계(148)). 그 다음, 제어 회로(78)는 상기 상태 머신을 상기 조회 상태로 천이한다(단계(150)).
도 9는 상태 머신이 조회 상태(132)인 동안 제어 회로(78)의 일 실시예의 예시적 동작이 도시되는 흐름도이다. 다른 실시예들이 가능하며 창안될 수 있다. 도 9에 도시된 단계들은 이해를 용이하게하는 특정 순서로 도시되지만, 임의의 적절한 순서들이 사용될 수 있다. 또한, 제어 회로(78)내에 적용되는 조합 논리에의해 병렬로 수행될 수 있다.
제어 회로(78)는 상기 인출 어드레스가 상기 조회 경우에 적중하는지를 판단한다(결정 블록(160)). 예를 들어, 제어 회로(78)는 나머지 태그 비교기(74)와 상기 조회 경우에 대응하는 부분적인 태그 비교기(76A-76D)로부터의 출력 신호들을 시험한다. 만일 상기 인출 어드레스가 상기 조회 경우에 적중하면, 제어 회로(78)는 갱신된 경우 예측을 라인 예측기(12)로 전송하고(단계(162)), 상기 지연 신호를 비표명하고(단계(164)), 그리고 상기 상태 머신을 액세스 단계로 천이시킨다(단계(166)).
반면에, 만일 상기 인출 어드레스가 상기 조회 경우에 적중하지 않으면, 제어 회로(78)는 조회에 적중하는 부가적인 부분적인 태그 적중들이 있는지를 판단한다(결정 블록(168)). 예를 들어, 제어 회로(78)는 부분적인 태그 적중이 검출되는 조회 경우보다 더 높은 번호의 경우가 존재하는지를 판단할 수 있다. 만일 부가적인 부분적인 태그 적중이 검출되면, 제어 회로(78)는 다음 부분적인 태그 적중의 판독을 초기화한다(단계(170)). 예를 들어, 제어 회로(78)는 부분적인 태그 적중이 검출되는 조회 경우로부터 다음의 더 높은 번호의 경우를 선택할 수 있다. 부가적으로, 제어 회로(78)는 다음 경우가 조회되도록 하기위해 지연 신호을 계속 표명할 수 있다(단계(172)). 만일 조회을 위한 부가적인 부분적인 태그 적중들이 없으면,제어 회로(78)는 적중실패 신호를 외부 인터페이스 유닛(64)으로 표명하고 (단계(174)), 상기 상태 머신을 상기 액세스 상태로 천이시킨다(단계(176)).
주목할 사항으로, 여기 사용되는 제어 회로라는 용어는 입력들로 동작하여 전술된 바와 같은 대응 출력들을 생성하는 임의의 조합 회로(예를 들어, 조합 논리 게이트들, mux, 레지스터들, 래치들, 플롭들, 가산기들, 쉬프터들, 로테이터들 등과 같은 데이터 흐름 구성요소들, 그리고/또는 상태 머신들을 수행하는 회로들)로 간주된다. 부가적으로, 여기 사용된, 용어 "표명된"은 신호 또는 비트에 대한 논리적 참 값을 제공하는 것으로 간주된다. 신호 또는 비트는 만일 그것이 특정 조건을 나타내는 값을 전달한다면 표명될 수 있다. 반대로, 신호 또는 비트는 그것이 특정 조건의 결여를 나타내는 값을 전달한다면 "비표명"될 수 있다. 신호 또는 비트는 그것이 논리적 0값을 전달하거나, 반대로 그것이 논리적 1값을 전달할때 표명되는 것으로 정의될 수 있으며, 상기 신호 또는 비트는 상반되는 논리적 값이 전달될 때 비표명되는 것으로 정의될 수 있다.
컴퓨터 시스템
도 10은 버스 브리지(202)를 통해 다양한 시스템 구성요소들에 연결된 프로세서(10)를 포함하는 컴퓨터 시스템(200)의 일 실시예의 블록선도를 보인 것이다. 다른 실시예들이 고려될 수도 있다. 이 시스템에서, 메인 메모리(204)가 메모리 버스(206)를 통해 버스 브리지(202)에 연결되고, 그래픽 컨트롤러(208)가 AGP 버스(210)를 통해 버스 브리지(202)에 연결된다. 복수의 PCI 디바이스(212A-212B)가 PCI 버스(214)를 통해 버스 브리지(202)에 연결된다. 2차 버스 브리지(216)가EISA/ISA 버스(220)를 통한 하나 이상의 EISA 또는 ISA 디바이스(218)로의 전기적 인터페이스를 위해 제공된다. 프로세서(10)는 CPU 버스(224)를 통해 버스 브리지(202)에 그리고 선택적인 L2 캐쉬(228)에 연결된다. CPU 버스(224)와 그리고 L2 캐쉬(228)로의 인터페이스는 서로 외부 인터페이스(52)를 포함한다.
버스 브리지(202)는 프로세서(10), 메인 메모리(204), 그래픽 컨트롤러(208) 및 PCI 버스(214)에 연결된 디바이스들 사이에 인터페이스를 제공한다. 버스 브리지(202)에 연결된 이들 디바이스들중 하나로부터 오퍼레이션이 수신되면, 버스 브리지(202)는 그 오퍼레이션의 타겟을 식별한다 (예컨대, 특정 디바이스 또는, PCI 버스(214)의 경우에 그 타겟은 PCI 버스(214)에 놓인다). 버스 브리지(204)는 그 타겟 디바이스에 그 오퍼레이션을 전송한다. 버스 브리지(202)는 일반적으로 어떤 오퍼레이션을 소오스 디바이스 또는 버스에 의해 사용되는 프로토콜로부터 타겟 디바이스 또는 버스에 의해 사용되는 프로토콜로 변환한다.
PCI 버스(214)에 대한 ISA/EISA 버스로의 인터페이스를 제공하는 것에 더하여 2차 버스 브리지(216)는 필요한 경우 추가의 기능을 포함할 수 있다. 2차 버스 브리지(216)로부터 분리되거나 또는 이와 통합된 입력/출력 컨트롤러(도시않됨)가 또한 키보드 및 마우스(222) 및 필요한 경우 다양한 직병렬 포트에 대한 동작 지원을 제공하도록 컴퓨터 시스템(200) 내에 포함된다. 다른 실시예들에서, 외부 캐쉬 유닛(도시않됨)이 또한 프로세서(10)와 버스 브리지(202) 사이의 CPU 버스(224)에 연결된다. 대안적으로, 이 외부 캐쉬는 버스 브리지(202)에 연결될 수 있고 이 외부 캐쉬에 대한 캐쉬 제어 로직이 버스 브리지(202)에 통합될 수 있다. L2캐쉬(228)가 또한 프로세서(10)의 후방 구성에 도시되어 있다. L2 캐쉬(228)는 프로세서(10)와 분리되거나, 프로세서(10)와 함께 카트리지(예컨대, 슬롯/또는 슬롯2) 내에 통합되거나, 또는 프로세서(10)와 함께 반도체 기판에 통합될 수 있다.
메인 메모리(204)는 프로세서(10)가 주로 실행하는 응용 프로그램들을 저장하는 메모리이다. 적절한 메인 메모리(204)는 DRAM(다이내믹 랜덤 엑세스 메모리)를 포함한다. 예컨대, 다수 뱅크의 SDRAM(동기 DRAM) 또는 램버스 DRAM(RDRAM)이 적합한다.
PCI 디바이스(212A-212B)는 예컨대 네트워크 인터페이스 카드, 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 디바이스 컨틀로러, SCSI 어댑터 및 전화 카드와 같은 다양한 주변 장치들을 표시한다, 마찬가지로, ISA 디바이스(218)는 모뎀, 사운드 카드 및 GPIB 또는 필드 버스 인터페이스 카드 등의 다양한 데이터 취득 카드와 같은 다양한 유형의 주변 장치들을 표시한다.
그래픽 컨트롤러(208)가 디스플레이(226) 상에 텍스트 및 화상을 표현하는 것을 제어하도록 제공된다. 그래픽 컨트롤러(28)는 메인 메모리(204) 내부로 및 이로부터 효과적으로 시프트될 수 있는 3차원 데이터 구조를 표현하도록 본 기술 분야에 일반적으로 알려진 전형적인 그래픽 가속기를 구현한다. 그러므로, 그래픽 컨트롤러(208)는 AGP 버스(210)의 마스터가 될 수 있는 바, 이는 버스 브리지(202) 내에서 탸겟 인터페이스로의 엑세스를 요청 및 수신하고, 그럼으로써 메인 메모리(204)로의 엑세스를 얻게 된다. 전용 그래픽 버스는 메모리(204)로부터의 데이터에 대한 신속한 조회을 제공한다. 임의의 동작을 위해, 그래픽 컨트롤러(208)는 또한 AGP 버스(210)에서의 PCI 프로토콜 트랜잭션을 발생하도록 구성된다. 따라서, 버스 브리지(202)의 AGP 인터페이스는 AGP 프로토콜 트랜잭션 뿐만 아니라 PCI 프로토콜 타겟 및 발기(initiator) 트랜잭션 모두를 지원하는 기능을 포함한다. 디스플레이(226)는 임의의 전자 디스플레이 장치로써 여기에 화상 또는 텍스트가 표현된다. 적절한 디스플레이(226)로써 음극선관("CRT"), 액정 표시 장치 ("LCD") 등이 포함된다.
주목할 사항으로, 상기 설명에서 예로써 AGP, PCI 및 ISA 또는 EISA 버스들이 사용되지만은, 필요한 경우 임의의 버스 아키텍춰들이 대체 사용될 수 있다. 또한, 컴퓨터 시스템(200)은 부가적인 프로세서들(예컨대, 컴퓨터 시스템(200)의 선택적인 구성요소로서 보인 프로세서(10a)를 포함하는 멀티프로세싱 컴퓨터 시스템으로 될 수 있다. 프로세서(10a)는 프로세서(10)와 유사하다. 보다 특별하게, 프로세서(10a)는 프로세서(10)의 동일한 복제본이다. 프로세서(10a)는 (도 10에 보인 바와 같이) 독립적인 버스를 통해 버스 브리지(202)에 연결되거나 또는 프로세서(10)와 함께 CPU 버스(224)를 공유한다. 또한, 프로세서(10a)는 L2 캐쉬(228)와 유사한 선택적인 L2 캐쉬(228a)에 연결된다.
도 11은 컴퓨터 시스템(300)의 또 다른 실시예를 보인 것이다. 다른 실시예들이 고려될 수 있다. 도 11의 실시예에서 컴퓨터 시스템(300)은 여러 개의 처리 노드(312A, 312B, 312C 및 312D)를 포함한다. 각 처리 노드는 처리 노드(312A-312D) 각각에 포함된 메모리 컨트롤러(316A-316D)를 통해 각 메모리(314A-31D)에연결된다. 또한, 처리 노드(312A-312D)는 처리 노드(312A-312D) 간의 통신을 위해 사용되는 인터페이스 로직을 포함한다. 예컨대, 처리 노드(312A)는 처리 노드(312B)와의 통신을 위한 인터페이스 로직(318A) 및 또 다른 처리 노드(도시않됨)와의 통신을 위한 제 3 인터페이스 로직(318C)을 포함한다. 마찬가지로, 처리 노드(312B)는 인터페이스 로직(218D, 318E, 318F)을 포함하고, 처리 노드(312C)는 인터페이스 로직(318G, 318H, 318I)를 포함하고, 처리 노드(312D)은 인터페이스 로직(318J, 318K, 318L)을 포함한다. 처리 노드(312D)는 인터페이스 로직(318L)을 통해 다수의 입력/출력 디바이스(예컨대, 하나로 이어진 구성(daisy chain configuration)의 디바이스(320A-320B)와 통신하도록 연결된다. 다른 처리 노드들이 마찬가지 방식으로 다른 I/O 디바이스들과 통신할 수 있다.
처리 노드(312A-312D)는 처리 노드간 통신을 위해 패킷 기반 링크를 구현한다. 본 실시예에서, 이 링크는 단방향 라인들의 세트로서 실시된다(예컨대, 라인(324A)은 패킷들을 처리 노드(312A)에서 처리 노드(312B)로 전송하는데 사용되고, 라인(324B)은 패킷들을 처리 노드(312B)로부터 처리 노드(312A)로 전송하는데 사용된다. 도 11에 보인 바와 같이, 다른 처리 노드들 사이에 패킷들을 전송하기 위해 다른 라인 세트(324C-324H)가 사용된다. 일반적으로, 라인들(324)의 각 세트는 하나 이상의 데이터 라인, 이 데이터 라인에 대응하는 하나 이상의 클럭 라인 및 전송되는 패킷의 유형을 표시하는 하나 이상의 제어 라인을 포함한다. 이 링크는 처리 노드들간의 통신을 위해서는 캐쉬 코히런트 방식으로 동작되고, 처리 노드와 I/O 디바이스 (또는 PCI 버스 또는 ISA 버스와 같은 통상적인 구성의 I/O 버스로의 버스 브리지) 사이의 통신을 위해서는 비-코히런트 방식으로 동작한다. 또한, 이 링크는 도시된 바와 같이 I/O 디바이스들 사이의 하나로 이어진 구성을 이용하여 비-코히런트 방식으로 동작될 수 있다. 어떤 처리 노드로부터 다른 처리 노드로 전송될 패킷은 하나 이상의 중간 노드들을 통과하게 된다. 예컨대, 처리 노드(312A)에 의해 처리 노드(312D)로 전송되는 패킷은 도 254에 보인 바와 같이 처리 노드(312B) 또는 처리 노드(312C)를 통과한다. 적절한 전송 알고리즘이 사용될 수 있다. 컴퓨터 시스템(300)의 다른 실시예들은 도 11에 보인 실시예보다 많거나 적은 처리 노드를 포함할 수 있다.
일반적으로, 패킷들을 노드들 간의 라인들(324) 상에서 하나 이상의 비트 타임으로서 전송된다. 이 비트 타임은 대응하는 클럭 라인들 상에서 클럭 신호의 상승 또는 하강 에지가 된다. 이 패킷들은 트랜잭션을 초기화하기 위한 명령 패킷, 캐쉬 코히어런시를 유지하기 위한 프로브 패킷 및 프로브 및 명령들에 응답하는 것으로부터의 응답 패킷들을 포함한다.
처리 노드(312A-312D)는 메모리 컨트롤러 및 인터페이스 로직 이외에 하나 이상의 프로세서를 포함할 수 있다. 넓게 말해서, 처리 노드는 적어도 하나의 프로세서를 포함하고 메모리 및 필요시 다른 로직과 통신하기 위한 메모리 컨트롤러를 선택적으로 포함한다. 보다 특별하게, 처리 노드(312A-312D)는 프로세서(10)를 포함한다. 외부 인터페이스 유닛(46)은 노드 내에 인터페이스 로직(318) 및 메모리 컨트롤러(316)를 포함한다.
메모리(314A-314D)는 어떤 적합한 메모리 디바이스들을 포함한다. 예컨대,메모리(314A-314D)는 하나 이상의 RAMBUS DRAM (RDRAM), 동기 DRAM (SDRAM), 스태틱 램들을 포함한다. 컴퓨터 시스템(300)의 어드레스 공간은 메모리(314A-314D) 사이에서 분리된다. 각 처리 노드(312A-312D)는 어느 어드레스가 어느 메모리(314A-314D)에 맵핑되는지 및 그럼으로써 특정 어드레스에 대한 메모리 요청이 어느 처리 노드(312A-312D)로 전송되어야 하는 지를 결정하는데 사용되는 메모리 맵을 포함한다. 일 실시예에서, 컴퓨터 시스템(300) 내에서의 어드레스에 대한 코히어런시 포인트는 그 어드레스에 대응하는 바이트를 저장하는 메모리에 연결되는 메모리 컨트롤러(316A-316D)이다. 다시 말해서, 메모리 컨트롤러(316A-316D)는 대응 메모리(314A-314D)로의 각 메모리 엑세스가 캐쉬 코히어런트 방식으로 발생되게 해주는 역할을 한다. 메모리 컨트롤러(316A-316D)는 메모리(314A-314D)로의 인터페이스를 위한 제어 회로를 포함한다. 또한, 메모리 컨트롤러(316A-316D)는 메모리 요청을 큐하기 위한 요청 큐를 포함한다.
일반적으로, 인터페이스 로직(318A-318D)은 링크로부터 패킷을 수신하고 링크시 전송될 패킷을 버퍼링하는 다양한 버퍼를 포함한다. 컴퓨터 시스템(300)은 패킷을 전송하기 위한 적절한 흐름 제어 메커니즘을 활용한다. 예컨대, 일 실시예에서 각 인터페이스 로직(318)은 인터페이스 로직이 연결되는 링크의 다른 말단에서 수신기 내의 각 유형의 버퍼의 수의 카운트를 저장한다. 이 인터페이스 로직은 수신 인터페이스 로직이 패킷을 저장하기 위해 빈 버퍼(free buffer)를 갖지 않는한 패킷을 전송하지 않는다. 패킷을 전방으로 전송함으로써 수신 버퍼가 공백 상태로 되면, 수신 인터페이스 로직은 송신 인터페이스 로직에 메세지를 전송하여 이 버퍼가 공백 상태임을 표시하게 된다. 그러한 메커니즘은 "쿠폰-기반(coupon-based)" 시스템으로 일컬어진다
I/O 디바이스(320A-32DB)는 어떤 적절한 I/O 디바이스로 될 수 있다. 예컨대, I/O 디바이스(320A-320B)는 네트워크 인터페이스 카드, 비디오 가속기, 오디오 카드, 하드 드라이브 또는 드라이브 컨트롤러, SCSI 어댑터 및 전화 카드, 모뎀, 사운드 카드, 및 GPIB 또는 필드 버스 인터페이스 카드와 같은 다양한 데이터 취득 카드를 포함한다.
당업자이면 상기 상세한 설명으로부터 많은 변형 및 수정을 충분히 고려할 수 있을 것이다. 따라서, 다음의 특허 청구의 범위는 그러한 모든 변경 및 수정을 포괄하는 것으로 해석되어야할 것이다.
본 발명은 일반적으로 프로세서들 및 컴퓨터 시스템들에 응용될 수 있다.

Claims (10)

  1. 어드레스의 인덱스 및 경로 선택을 수신하도록 결합된 태그 어레이(70) - 여기서, 상기 태그 어레이(70)는 복수의 경로들을 포함하고 그리고 복수의 부분적인 태그들을 출력하도록 구성되며, 상기 복수의 부분적인 태그들 각각은 상기 복수의 경로들중 하나와 대응하며 - 와; 그리고
    상기 태그 어레이(70)에 결합되는 제어회로(78) - 여기서, 상기 제어 회로(70)는 상기 태그 어레이(70)의 상기 복수의 경로들중 제 1 경로에서 상기 어드레스 적중 실패에 응답하여 조회 경로를 확인하는 조회 경로 선택을 발생하도록 구성되고, 상기 제 1 경로는 상기 경로 선택에 의해 확인되며, 상기 조회 경로로부터의 제 1의 부분적인 태그는 상기 어드레스의 대응하는 부분과 정합한다 - 를 포함하는 캐쉬.
  2. 제 1 항에 있어서,
    입력 경로 예측과 그리고 상기 조회 경로 선택을 수신하도록 결합된 멀티플렉서(80)를 더 포함하며,
    상기 멀티플렉서(80)는 상기 입력 경로 예측과 상기 조회 경로 선택 사이에서 선택하도록 구성되고, 상기 태그 어레이(70)에 상기 경로 선택을 제공하도록 결합되며,
    상기 제어 회로(78)는 상기 멀티플렉서(80)에 선택 제어를 제공하도록 결합되고, 상기 조회 경로 선택을 발생하지않는 상기 제어회로(78)에 응답하여 상기 입력 경로 예측의 선택을 행하도록 구성되며,
    상기 제어회로(78)는 상기 조회 경로 선택을 발생하는것에 응답하여 상기 조회 경로 선택의 한 선택을 행하도록 구성된 캐쉬.
  3. 제 1 항에 있어서,
    상기 어드레스가 상기 조회 경로에 적중실패하면, 상기 제어회로(78)는 상기 어드레스의 상기 대응하는 부분과 정합하는 제 2 조회 경로 로부터의 제 2 부분적인 태그에 응답하여 상기 제 2 조회 경로 선택을 발생하도록 구성된 캐쉬.
  4. 제 1 항에 있어서,
    상기 제어 회로(78)는 상기 제 1 경로에서의 상기 어드레스 적중실패에 응답하여 적중실패 신호를 표명하도록 구성되며, 상기 복수의 부분적인 태그들중 어느것도 상기 어드레스의 상기 대응하는 부분과 정합하지 않는 캐쉬.
  5. 제 1 항에 있어서,
    상기 제어회로(28)는 상기 제 1 경로에서의 상기 어드레스 적중실패, 대응하는 부분적인 태그가 상기 어드레스의 상기 대응하는 부분과 정합하는지에 관한 상기 복수의 경로들 각각에 대한 조회 및 상기 목수의 경로들 각각에서의 적중실패에 응답하여 적중실패 신호를 표명하도록 구성된 캐쉬.
  6. 인출 어드레스에 응답하여 경로 예측을 제공하도록 구성된 라인 예측기(12)와; 그리고
    상기 경로 예측 및 상기 인출 어드레스를 수신하도록 결합된 상기 청구항 1내지 5항중 어느 항에 언급된 캐쉬(14)를 포함하는 프로세서.
  7. 제 6 항에 있어서,
    상기 제 2 경로 또는 상기 추가적인 경로에서의 적중에 응답하여, 사기 캐쉬(14)가 갱신된 경로 예측을 상기 라인 예측기(12)에 제공하도록 구성된 프로세서.
  8. 어드레스에 응답하여 캐쉬(14)로부터 복수의 부분적인 태그들을 판독하는 단계와;
    상기 캐쉬(14)의 예측 경로에서 상기 어드레스가 적중하는지 여부를 결정하는 단계와;
    상기 결정이 상기 어드레스가 상기 캐쉬(14)의 상기 예측 경로에서 적중하지 않는것으로 결정함에 응답하여, 적중에 관해 상기 캐쉬(14)의 제 2 경로를 조회하는 단계를 포함하며, 상기 제 2 경로는 상기 예측 경로와 다르고, 상기 제 2 경로에 대응하는 상기 복수의 부분적인 태그들중 제 1의 부분적인 태그는 상기 어드레스의 상기 대응하는 부분과 정합되는 방법.
  9. 제 8 항에 있어서,
    상기 어드레스가 상기 제 2 경로에서 적중하는지 여부를 결정하는 단계와; 그리고
    상기 결정이 상기 어드레스가 상기 캐쉬(14)의 상기 제 2 경로에서 적중하지 않는것으로 결정함에 응답하여, 적중에 관해 상기 캐쉬(14)의 제 3 경로를 조회하는 단계를 포함하며, 상기 제 3 경로는 상기 예측 경로와 다르고, 상기 제 3 경로에 대응하는 상기 복수의 부분적인 태그들중 제 2의 부분적인 태그는 상기 어드레스의 상기 대응하는 부분과 정합되는 방법.
  10. 제 8항에 있어서,
    상기 결정이 상기 어드레스가 상기 예측 경로에서 적중하지 않는것으로 결정하고 그리고 상기 복수의 부분적인 태그들 어느것도 상기 어드레스의 상기 대응하는 부분과 정합하지 않음에 응답하여, 적중실패 신호를 발생하는 단계와;
    상기 결정이 상기 어드레스가 상기 예측 경로에서 적중하지 않는것으로 결정하고 그리고 상기 복수의 부분적인 태그들중 대응하는 부분적인 태그가 상기 어드레스의 상기 대응하는 부분과 정합하는것에 관하여 각 경로를 조회하는데 있어 적중이 검출되지 않음에 응답하여, 적중실패 신호를 발생하는 단계를 더 포함하는 방법.
KR1020027008672A 2000-01-03 2000-08-08 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬 KR100747127B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/476,577 2000-01-03
US09/476,577 US6687789B1 (en) 2000-01-03 2000-01-03 Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Publications (2)

Publication Number Publication Date
KR20020067596A true KR20020067596A (ko) 2002-08-22
KR100747127B1 KR100747127B1 (ko) 2007-08-09

Family

ID=23892412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027008672A KR100747127B1 (ko) 2000-01-03 2000-08-08 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬

Country Status (7)

Country Link
US (1) US6687789B1 (ko)
EP (1) EP1244970B1 (ko)
JP (1) JP2003519835A (ko)
KR (1) KR100747127B1 (ko)
CN (1) CN1208726C (ko)
DE (1) DE60003235T2 (ko)
WO (1) WO2001050272A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6944713B2 (en) * 2002-06-18 2005-09-13 Intel Corporation Low power set associative cache
US20040054867A1 (en) * 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
US6973557B2 (en) * 2003-02-04 2005-12-06 Sun Microsystems, Inc. Apparatus and method for dual access to a banked and pipelined data cache memory unit
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US20040243767A1 (en) * 2003-06-02 2004-12-02 Cierniak Michal J. Method and apparatus for prefetching based upon type identifier tags
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7085894B2 (en) * 2003-09-11 2006-08-01 International Business Machines Corporation Selectively accepting cache content
US6961276B2 (en) * 2003-09-17 2005-11-01 International Business Machines Corporation Random access memory having an adaptable latency
US7669009B2 (en) * 2004-09-23 2010-02-23 Intel Corporation Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
KR100688503B1 (ko) * 2004-11-02 2007-03-02 삼성전자주식회사 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
US7793040B2 (en) * 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US20060277352A1 (en) * 2005-06-07 2006-12-07 Fong Pong Method and system for supporting large caches with split and canonicalization tags
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
JP5326314B2 (ja) 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
JP5622155B2 (ja) * 2009-10-20 2014-11-12 国立大学法人電気通信大学 キャッシュメモリおよびその制御方法
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
CN102193875B (zh) * 2011-04-26 2013-08-14 北京工业大学 多核下基于Cache划分的自适应路预测算法
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
US8458447B2 (en) * 2011-06-17 2013-06-04 Freescale Semiconductor, Inc. Branch target buffer addressing in a data processor
US9460016B2 (en) 2014-06-16 2016-10-04 Analog Devices Global Hamilton Cache way prediction
KR102354990B1 (ko) * 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9846648B2 (en) * 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10324850B2 (en) 2016-11-11 2019-06-18 Microsoft Technology Licensing, Llc Serial lookup of tag ways
GB2560336B (en) 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10565122B2 (en) 2017-05-30 2020-02-18 Microsoft Technology Licensing, Llc Serial tag lookup with way-prediction
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US11507174B2 (en) * 2020-02-25 2022-11-22 Qualcomm Incorporated System physical address size aware cache memory
CN111988444B (zh) * 2020-08-19 2022-10-18 成都安可信电子股份有限公司 一种同步总线快速搜索终端地址搜索方法
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11593001B1 (en) * 2021-08-02 2023-02-28 Nvidia Corporation Using per memory bank load caches for reducing power use in a system on a chip

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
US4914582A (en) 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
JPS63163939A (ja) * 1986-12-26 1988-07-07 Nippon Telegr & Teleph Corp <Ntt> キヤツシユメモリの制御方法
JPH02156352A (ja) * 1988-12-09 1990-06-15 Hitachi Ltd キャッシュメモリ
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
JPH05120135A (ja) * 1991-10-25 1993-05-18 Oki Electric Ind Co Ltd キヤツシユ制御方式
US5418922A (en) 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
JPH0721785A (ja) * 1993-06-29 1995-01-24 Kawasaki Steel Corp 半導体メモリ
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
EP0675443A1 (en) 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
JP3589485B2 (ja) * 1994-06-07 2004-11-17 株式会社ルネサステクノロジ セットアソシアティブ方式のメモリ装置およびプロセッサ
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
US5752069A (en) 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5893146A (en) 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5802594A (en) 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US5848428A (en) 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
JPH1139216A (ja) * 1997-07-24 1999-02-12 Hitachi Ltd 半導体記憶装置及びキャッシュメモリシステム
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016545A (en) 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor

Also Published As

Publication number Publication date
DE60003235T2 (de) 2004-04-08
EP1244970A1 (en) 2002-10-02
US6687789B1 (en) 2004-02-03
CN1415092A (zh) 2003-04-30
WO2001050272A1 (en) 2001-07-12
JP2003519835A (ja) 2003-06-24
KR100747127B1 (ko) 2007-08-09
EP1244970B1 (en) 2003-06-04
DE60003235D1 (de) 2003-07-10
CN1208726C (zh) 2005-06-29

Similar Documents

Publication Publication Date Title
KR100747127B1 (ko) 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬
US6502185B1 (en) Pipeline elements which verify predecode information
US7117290B2 (en) MicroTLB and micro tag for reducing power in a processor
US8458408B2 (en) Cache directed sequential prefetch
US5918245A (en) Microprocessor having a cache memory system using multi-level cache set prediction
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
KR100708010B1 (ko) 인덱스와 선택적 경로 정합에 기반하여 데이터를 포워딩하는 저장 버퍼
US5793941A (en) On-chip primary cache testing circuit and test method
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6523109B1 (en) Store queue multimatch detection
US7743232B2 (en) Multiple-core processor with hierarchical microcode store
US6088789A (en) Prefetch instruction specifying destination functional unit and read/write access mode
US6481251B1 (en) Store queue number assignment and tracking
US20050050278A1 (en) Low power way-predicted cache
KR100586057B1 (ko) 프리디코드 정보를 저장하기 위해 ecc/패리티 비트들의 이용
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
US6647490B2 (en) Training line predictor for branch targets
KR20020087386A (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6363471B1 (en) Mechanism for handling 16-bit addressing in a processor
US6704854B1 (en) Determination of execution resource allocation based on concurrently executable misaligned memory operations
KR20020039689A (ko) 정렬정보를 캐쉬하는 장치 및 방법
US6546478B1 (en) Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US11797308B2 (en) Fetch stage handling of indirect jumps in a processor pipeline
US6721876B1 (en) Branch predictor index generation using varied bit positions or bit order reversal

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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20100729

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee