KR100688503B1 - 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 - Google Patents

브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 Download PDF

Info

Publication number
KR100688503B1
KR100688503B1 KR1020040088217A KR20040088217A KR100688503B1 KR 100688503 B1 KR100688503 B1 KR 100688503B1 KR 1020040088217 A KR1020040088217 A KR 1020040088217A KR 20040088217 A KR20040088217 A KR 20040088217A KR 100688503 B1 KR100688503 B1 KR 100688503B1
Authority
KR
South Korea
Prior art keywords
address
branch
fetch
cache
sub
Prior art date
Application number
KR1020040088217A
Other languages
English (en)
Other versions
KR20060039147A (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 삼성전자주식회사
Priority to KR1020040088217A priority Critical patent/KR100688503B1/ko
Priority to JP2005319816A priority patent/JP2006134331A/ja
Priority to US11/264,158 priority patent/US7631146B2/en
Publication of KR20060039147A publication Critical patent/KR20060039147A/ko
Application granted granted Critical
Publication of KR100688503B1 publication Critical patent/KR100688503B1/ko

Links

Images

Classifications

    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는 프로세서 및 그 방법이 개시된다. 상기 프로세서에서는, 페치부가 다음 프로세서 싸이클에 페치할 어드레스를 결정하는 것과 병행하여, 브랜치 예측부가 예측한 브랜치 목적 어드레스의 일부 정보가 웨이 예측부가 상기 브랜치 목적 어드레스를 해석하여 검출한 서브 태그들 중 어느 것과 매칭되는지를 비교한다. 이와 같은 비교에 따라, 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하고, 브랜치 목적 어드레스가 다음에 페치할 명령어 어드레스로 결정되면 결정된 캐쉬 웨이만 접근하여 페치 명령어를 추출한다.

Description

브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는 프로세서 및 그 방법{Processor and processing method for predicting a cache way using the branch target address}
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 브랜치 예측을 수행하는 일반적인 프로세서의 블록도이다.
도 2는 캐쉬 웨이를 예측하는 본 발명의 일실시예에 따른 프로세서의 블록도이다.
도 3은 도 2의 브랜치 예측부의 구체적인 블록도이다.
도 4는 도 2의 웨이 예측부의 구체적인 블록도이다.
도 5는 4-웨이를 가지는 명령어 캐쉬의 일례이다.
본 발명은 CPU(Control Processing Unit)에 관한 것으로, 특히 브랜치 예측(branch prediction)에 의하여 결정된 브랜치 목적 어드레스(branch target address)를 이용하여 캐쉬 웨이(cache way)를 예측하는 프로세서(processor)에 관 한 것이다.
휴대용 기기가 많이 사용됨에 따라 저전력에 대한 요구가 다방면에 걸쳐서 요구되고 있다. 특히 임베디드(embedded) 프로세서를 이용하는 시스템의 경우에 그 고속의 성능과 함께 전력 소모가 매우 중요한 요소이다.
도 1은 브랜치 예측을 수행하는 일반적인 프로세서(100)의 블록도이다. 도 1을 참조하면, 상기 프로세서(100)는 페치부(fetch unit)(110), 명령어 캐쉬(instruction cache)(120), 명령어 디코더(instruction decoder)(130), 실행부(execution unit)(140), 및 브랜치 예측부(branch predictor)(150)를 구비한다.
상기 페치부(110)는 프로세서 싸이클(cycle)마다 프로그램 카운터(counter) 신호(PC)에 응답하여 소정 메모리에서 어드레스를 페치하는 역할과 다음에 페치할 명령어의 어드레스를 결정하는 역할을 한다. 이를 위하여 현재 페치할 어드레스 (FADR)를 출력하는 역할도 수행한다. 상기 브랜치 예측부(150)는 상기 페치 어드레스(FADR)에 응답하여 그 어드레스가 브랜치 명령어의 페치인가를 판단하고, 해당 브랜치 명령어가 실제로 분기될 것으로 예측되면('predicted taken'이라 함) 브랜치 목적 어드레스(TADR)를 출력한다. 상기 페치부(110)는 브랜치 목적 어드레스를 포함한 여러 후보 어드레스 중에서 다음 프로세서 싸이클에 페치될 어드레스를 선택하여 페치 어드레스를 명령어 캐쉬(120)로 전달한다.
상기 명령어 캐쉬(120)는 상기 페치부(110)에서 전달되는 어드레스에 응답하여 상기 명령어 캐쉬(120)에 구비되는 태그(tag) 및 데이터 메모리에 접근하고, 태그 매칭(matching)이 이루어지는 블록에서 해당 데이터를 선택하여 출력한다. 상기 선택된 데이터는 페치 명령어로서 상기 명령어 디코더(130)로 입력되고, 이에 따라 상기 명령어 디코더(130)는 상기 페치 명령어로부터 어떤 연산 종류인지를 해석한다. 상기 실행부(140)는 상기 해석된 연산 종류에 기초하여 상기 페치 명령어를 실행한다.
여기서, 상기 명령어 캐쉬(120)가 'Set-associative Cache'인 경우에, 상기 명령어 캐쉬(120)는 태그 및 데이터 메모리로 이루어지는 웨이(way)를 다수개 포함한다. 이때, 상기 명령어 캐쉬(120)는 페치 명령어를 출력하기 위하여, 상기 페치부(110)에서 전달되는 어드레스에 따라, 모든 웨이들에 접근하여 태그 매칭을 수행하고, 매칭된 블록들의 데이터 중에서 어느 하나를 선택하여 출력한다. 예를 들어, '4-Way Set-associative Cache'의 경우에는 4개의 태그 메모리와 4개의 데이터 메모리에 접근하여 출력한 4 개의 데이터 중에서 상기 페치부(110)에서 전달되는 어드레스와 태그 매칭이 된 어느 하나를 선택한다. 따라서, 'Set-associative Cache' 방식에서는 명령어 캐쉬(120)에 접근과 관련하여 많은 전력을 소모하는 문제점이 있다.
따라서, 본 발명이 이루고자하는 기술적 과제는, 'Set-associative Cache' 방식에서 브랜치 목적 어드레스를 이용하여 프로세서 동작 속도의 불필요한 저하없이 필요한 캐쉬 웨이만이 선택되도록 예측함으로써 명령어 캐쉬에 의하여 소모되는 전력을 줄이는 프로세서를 제공하는 데 있다.
본 발명이 이루고자하는 다른 기술적 과제는, 브랜치 목적 어드레스를 이용 하여 필요한 캐쉬 웨이만이 선택되도록 예측하는 프로세싱 방법을 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한 본 발명에 따른 프로세서는, 브랜치 예측부, 웨이 예측부, 페치부, 명령어 캐쉬, 명령어 디코더, 및 실행부를 구비하는 것을 특징으로 한다. 상기 브랜치 예측부는 페치 어드레스에 응답하여 브랜치 명령어의 페치인가를 예측하고, 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 브랜치 목적 어드레스를 출력한다. 상기 웨이 예측부는 상기 브랜치 목적 어드레스의 일부와 캐쉬 웨이들의 해당 서브 태그들 각각을 비교하고, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인가의 여부를 알리는 신호에 따라 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정한다. 상기 페치부는 프로세서 싸이클마다 프로그램 카운터 신호에 응답하여 상기 페치 어드레스를 출력하고, 다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여 상기 브랜치 목적 어드레스, 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스를 선택하고 선택된 어드레스를 출력한다. 상기 명령어 캐쉬는 상기 선택된 어드레스에 따라 캐쉬 히트된 데이터를 페치 명령어로서 출력하고, 상기 페치부에서 상기 브랜치 목적 어드레스가 선택되면 상기 웨이 예측부에서 결정된 캐쉬 웨이만에 접근하여 해당 페치 명령어를 출력한다. 상기 명령어 디코더는 상기 페치 명령어가 어떤 연산 종류인지를 해석한다. 상기 실행부는 상기 해석 결과에 응답하여 상기 페치 명령어를 실행한다.
상기 웨이 예측부는 서브 태그 버퍼, 비교부, 및 결정부를 구비하는 것을 특징으로 한다. 상기 서브 태그 버퍼는 상기 브랜치 목적 어드레스에 응답하여 상기 캐쉬 웨이들의 해당 서브 태그들을 출력한다. 상기 비교부는 상기 브랜치 목적 어드레스의 일부가 상기 서브 태그 버퍼에서 출력되는 다수의 서브 태그들 각각과 동일한지 여부를 비교하여, 다수의 비교 결과들을 출력한다. 상기 결정부는 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호의 논리 상태, 다음 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호의 논리 상태 및 상기 다수의 비교 결과들 각각의 논리 상태를 비교하여, 비교되는 논리 상태들이 같지 않으면 제1 논리 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능성을 알리는 제2 논리 상태를 가지는 웨이 인에이블 신호들 각각을 결정한다.
상기 브랜치 예측부는 브랜치 목적 버퍼, 태그 비교부, 예측 로직, 및 결정부를 구비하는 것을 특징으로 한다. 상기 브랜치 목적 버퍼는 상기 페치 어드레스에 응답하여, 상기 페치 어드레스의 인덱스에 상응하는 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스를 출력한다. 상기 태그 비교부는 상기 해당 브랜치 어드레스 태그와 상기 페치 어드레스에 포함된 태그가 동일한지 여부를 알리는 비교 신호를 생성한다. 상기 예측 로직은 상기 페치 어드레스가 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 여부를 알리는 예측 신호를 생성한다. 상기 결정부는 상기 비교 신호와 상기 예측 신호에 따라 상기 페치 어드레스가 분기될 것으로 예측되는 브랜치인지 여부를 알리는 결정 신호를 생성한다.
상기의 다른 기술적 과제를 달성하기 위한 본 발명에 따른 프로세싱 방법은, 프로세서 싸이클마다 프로그램 카운터 신호에 응답하여 상기 페치 어드레스를 생성하는 단계; 상기 페치 어드레스에 응답하여 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 결정하고, 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 브랜치 목적 어드레스를 생성하는 단계; 상기 브랜치 목적 어드레스의 일부와 캐쉬 웨이들의 해당 서브 태그들 각각을 비교하여, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호에 따라 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하는 단계; 다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여 상기 브랜치 목적 어드레스, 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스를 선택하고 선택된 어드레스를 출력하는 단계; 및 명령어 캐쉬에서 상기 선택된 어드레스에 따라 캐쉬 히트된 데이터를 페치 명령어로서 출력하는 단계를 구비하고, 상기 브랜치 목적 어드레스가 선택되면 상기 결정된 캐쉬 웨이만에 접근하여 해당 페치 명령어를 출력하는 것을 특징으로 한다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
본 발명에서는 다음 프로세서 사이클에 페치될 어드레스를 결정하는 것과, 브랜치 목적 어드레스를 이용하여 접근될 해당 캐쉬 웨이를 예측하는 것이 동시에 수행될 수 있도록 하기 위하여 제안되었다. 캐쉬 웨이를 예측하는 본 발명의 일실시예에 따른 프로세서(200)의 블록도가 도 2에 도시되어 있다. 도 2를 참조하면, 상기 프로세서(200)는 페치부(fetch unit)(210), 명령어 캐쉬(instruction cache)(220), 명령어 디코더(instruction decoder)(230), 실행부(execution unit)(240), 브랜치 예측부(branch predictor)(250), 및 웨이 예측부(way predictor)(260)를 구비한다.
상기 페치부(110)는 프로세서 싸이클(cycle)마다 프로그램 카운터(counter) 신호(PC)에 응답하여 소정 메모리에서 어드레스를 페치하는 역할과 다음에 페치할 명령어의 어드레스(NEXT PC)를 결정하는 역할을 한다. 이를 위하여 현재 페치할 어드레스(FADR)를 출력하는 역할도 수행한다.
상기 브랜치 예측부(250)는 상기 페치 어드레스(FADR)에 응답하여 그 어드레스가 브랜치 명령어의 페치인가 및 해당 브랜치 명령어가 실제로 분기될 것인가를 예측한다. 이에 따라, 상기 브랜치 예측부(250)는 예측 결과에 따라 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호(TNT) 및 브랜치 목적 어드레스(TADR)를 출력한다. 상기 브랜치 예측부(250)에 대해서 도 3의 설명에서 좀 더 자세히 설명된다.
상기 브랜치 예측부(250)의 브랜치 예측 결과에 따라, 상기 페치 어드레스 (FADR)가 분기될 것으로 예측되는 브랜치 명령어에 해당하면('predicted taken'이라 함), 상기 웨이 예측부(260)는 상기 브랜치 목적 어드레스(TADR)에 의하여 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정한다. 상기 웨이 예측부(260)는 상기 브랜치 목적 어드레스(TADR)의 일부분과, 캐쉬 웨이들에 저장된 서브 태그들 중 상기 브랜치 목적 어드레스(TADR)에 대응하는 서브 태그들 각각을 비교하고, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호(TNT) 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호(TB)에 따라 상기 명령어 캐쉬(220)에 포함된 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하여 웨이 인에이블 신호(ENWAY)를 출력한다. 상기 명령어 캐쉬(220)는, 위에서 기술한 바와 같이, 'Set-associative Cache'인 것으로 가정된다. 상기 브랜치 예측부(250) 및 상기 명령어 캐쉬(220)에 대하여 도 4 및 도 5의 설명에서 좀더 자세히 설명된다.
다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여, 상기 페치부(210)는 상기 브랜치 목적 어드레스, 프로그램 카운터(counter) 신호(PC)에 따라 페치되는 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스(NEXT PC)를 선택하고, 상기 명령어 캐쉬(220)로 전달한다. 분기 여부, 브랜치 예측의 적중(hit) 실패(miss) 여부, 인터럽트 발생 여부 등이 다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건으로서 고려될 수 있다.
또한, 상기 페치부(210)는 다음 프로세서 싸이클의 패치 어드레스(NEXT PC)가 브랜치 목적 어드레스인가의 여부를 알리는 신호(TB)를 웨이 예측부(260)로 전달한다. 예를 들어, 상기 페치부(210)는 다음 프로세서 싸이클의 패치 어드레스(NEXT PC)가 브랜치 목적 어드레스인지 아닌지에 대하여 선택적으로 논리 하이 상태 또는 논리 로우 상태의 상기 전달 신호(TB)를 생성한다. 다음 프로세서 싸이클의 페치 어드레스를 선택하는 방법은 기존의 일반적인 프로세서에서 사용하는 방법과 동일한 방법을 사용한다. 이에 따라, 상기 명령어 캐쉬(220)는 상기 페치부(210)에서 전달되는 선택된 어드레스(NEXT PC)에 따라 일반적인 프로세서와 같이 명령어 캐쉬(220)내의 모든 캐쉬 웨이를 접근하여 캐쉬 히트된 데이터를 페치 명령어(FIN)로서 출력하고, 이때 상기 페치부(210)에서 브랜치 목적 어드레스(TADR)가 선택되었다면 상기 명령어 캐쉬(220)는 상기 브랜치 목적 어드레스(TADR)에 응답하여 상기 웨이 예측부(260)에서 결정된 상기 명령어 캐쉬(220) 내의 캐쉬 웨이만에 접근하고, 태그 매칭(matching)이 이루어지는 블록에서 캐쉬 히트된 데이터를 페치 명령어(FIN)로서 출력한다.
상기 페치 명령어(FIN)는 상기 명령어 디코더(230)로 입력되고, 이에 따라 상기 명령어 디코더(230)는 상기 페치 명령어(FIN)로부터 어떤 연산 종류인지를 해석한다. 상기 실행부(240)는 상기 해석된 연산 종류에 기초하여 상기 페치 명령어(FIN)를 실행한다.
도 2의 브랜치 예측부(250)의 구체적인 블록도가 도 3에 도시되어 있다. 도 3을 참조하면, 상기 브랜치 예측부(250)는 브랜치 목적 버퍼(branch target buffer)(251), 태그 비교부(tag comparator)(252), 예측 로직(prediction logic)(253), 및 결정부(254)를 구비한다.
상기 브랜치 목적 버퍼(251)는 상기 페치부(210)에서 출력되는 페치 어드레스(FADR)에 응답하여 해당 브랜치 어드레스 태그(TAG) 및 해당 브랜치 목적 어드레 스(TADR) 출력한다. 도 3에 도시된 바와 같이, 상기 브랜치 목적 버퍼(251)는 디코더(255) 및 메모리(256)를 구비한다. 상기 디코더(255)는 상기 페치 어드레스(FADR)의 인덱스에 따라 해당 선택신호를 생성한다. 주지된 바와 같이, 상기 페치 어드레스(FADR)는 태그, 인덱스, 및 옵셋(offset) 필드들로 이루어지고, 상기 디코더(255)는 상기 인덱스 필드를 참조하여 상기 메모리(256)에 저장된 해당 브랜치 어드레스 태그(TAG) 및 브랜치 목적 어드레스(TADR)를 지시하는 선택신호를 생성한다. 상기 메모리(256)는 브랜치 어드레스 태그들과 브랜치 목적 어드레스들을 저장하고, 상기 선택신호에 응답하여 해당 브랜치 어드레스 태그(TAG) 및 해당 브랜치 목적 어드레스(TADR)를 출력한다.
상기 태그 비교부(252)는 상기 메모리(256)에서 출력되는 상기 해당 브랜치 어드레스 태그(TAG)가 상기 페치 어드레스(FADR)에 포함된 태그와 동일한지 비교하여 그 여부를 알리는 비교 신호를 생성한다. 예를 들어, 상기 태그 비교부(252)는 비교 결과가 동일한지 또는 동일하지 않은지에 대하여 선택적으로 논리 하이 상태 또는 논리 로우 상태의 상기 비교 신호를 생성한다.
상기 예측 로직(253)은 소정 브랜치 예측 방법(branch prediction mechanism)에 따라 상기 페치 어드레스(FADR)가 실제로 분기될 것으로 예측되는 브랜치 명령어의 페치인가의 여부를 알리는 예측 신호를 생성한다. 주지된 바와 같이, 브랜치 예측 방법에는 여러 가지가 있을 수 있다. 상기 브랜치 예측에 따라 상기 예측 로직(253)은 상기 페치 어드레스(FADR)가 실제로 분기될 것으로 예측되는 명령어의 페치에 해당하는지('predicted taken' 이라 함) 또는 그렇지 않은지 각각 에 대하여, 논리 하이 상태 또는 논리 로우 상태의 상기 예측 신호를 발생한다.
상기 결정부(254)는 상기 비교 신호와 상기 예측 신호를 비교하여 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호(TNT)를 생성한다. 예를 들어, 상기 결정부(254)는 비교 결과가 동일한지 또는 동일하지 않은지에 대하여 선택적으로 논리 하이 상태 또는 논리 로우 상태의 상기 결정 신호(TNT)를 생성한다.
도 2의 웨이 예측부(260)의 구체적인 블록도가 도 4에 도시되어 있다. 도 4를 참조하면, 상기 웨이 예측부(260)는 서브 태그 버퍼(sub-tag buffer)(261), 비교부(262), 및 결정부(263)를 구비한다.
상기 서브 태그 버퍼(261)는 브랜치 예측부(250)에서 출력되는 브랜치 목적 어드레스(TADR)에 응답하여 명령어 캐쉬(220)에 포함된 캐쉬 웨이들의 해당 서브 태그들을 출력한다. 상기 서브 태그 버퍼(261)는 디코더(411) 및 서브 태그 메모리(412)를 구비한다. 상기 디코더(411)는 상기 브랜치 목적 어드레스(TADR)의 인덱스에 따라 해당 선택신호를 생성한다. 상기 서브 태그 메모리(412)는 다수의 서브 메모리들(415~418)에 캐쉬 웨이들의 서브 태그들을 저장하고, 상기 선택신호에 응답하여 상기 해당 서브 태그들을 출력한다. 상기 서브 태그 메모리(412)에는 캐쉬 웨이들의 수와 동일한 수의 상기 서브 메모리들(415~418)을 포함하고 있고, 상기 서브 메모리들(415~418) 각각이 하나씩 상기 선택신호에 대응하는 서브 태그를 출력한다. 도 4에서는, '4-Way Set-associative Cache'인 것으로 가정하여, 4개의 서브 메모리들(415~418)이 있는 것으로 가정하였다. 상기 서브 태그 메모리(412)에 저장되는 상기 서브 태그들 각각은 상기 명령어 캐쉬(220)에 포함되어 있는 캐쉬 웨이 들에 저장되는 모든 태그들 각각의 일부 데이터에 해당한다. 이러한 서브 태그들 각각은 상기 명령어 캐쉬(220)가 캐쉬 미스(miss) 발생에 따라 리플레이스먼트(replacement) 수행으로 해당 태그를 업데이트할 때, 업데이트된 태그의 하위 N 비트(N은 자연수)만이 추출되어 함께 업데이트되는 데이터이다. 상기 서브 태그들로서 저장되는 하위 N 비트의 데이터는 상기 업데이트되는 태그의 3비트, 4비트, 또는 5비트 등으로 설정될 수 있고, 비트 수가 클 수록 웨이 예측의 정확도는 높아진다. 상기 명령어 캐쉬(220)에서의 캐쉬 미스(miss) 발생에 따른 리플레이스먼트(replacement) 수행에 대해서는 주지된 바와 같다.
상기 비교부(262)는 비교기들(421~427)을 이용하여, 상기 브랜치 목적 어드레스(TADR)의 일부분, 즉, 태그 필드의 데이터 중에서 상기 서브 태그에 대응하는 하위 N비트와 상기 서브 태그 버퍼(261)에서 출력되는 다수의 서브 태그들 각각과 비교한다. 상기 비교기들(421~427)은 비교에 따라 동일한지 또는 그렇지 않은지에 대하여 선택적으로 논리 하이 상태 또는 논리 로우 상태를 가지는 비교 결과 다수를 생성한다.
상기 결정부(263)는 소정 로직들(431~437)을 이용하여, 브랜치 예측부(250)에서 출력되는 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호(TNT)의 논리 상태, 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호(TB)의 논리 상태, 및 상기 비교기들(421~427)에서 출력되는 상기 다수의 비교 결과들 각각의 논리 상태를 비교한다. 이때, 비교되는 논리 상태들이 같지 않으면 논리 로우 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능 성을 알리는 논리 하이 상태를 가지는 웨이 인에이블 신호들 ENWAY[1]~ ENWAY[4] 각각을 결정한다.
도 5는 4-웨이를 가지는 명령어 캐쉬(220)의 일례이다. 도 5를 참조하면, '4-Way Set-associative Cache'로 가정되어, 상기 명령어 캐쉬(220)에 4개의 캐쉬 웨이들(221~224)이 포함되어 있고, 캐쉬 히트된 데이터를 선택하기 위한 선택부(225)를 포함한다. 주지된 바와 같이, 캐쉬 웨이들(221~224) 각각은 상기 페치부(210)에서 선택된 어드레스의 인덱스에 따라 해당 태그 블록을 선택하기 위한 디코더, 태그 매칭 수행에 참조될 태그 메모리, 및 어드레스의 옵셋에 대응되어 있는 데이터 메모리로 구성된다.
상기 브랜치 예측부(250)의 예측에 따라 브랜치에 해당하여 상기 페치부(210)에서 선택된 상기 브랜치 목적 어드레스(TADR)가 상기 명령어 캐쉬(220)로 전달되면, 이에 따라 상기 명령어 캐쉬(220)는 상기 웨이 예측부(260)에서 결정된 캐쉬 웨이만에 접근한다. 예를 들어, 상기 웨이 인에이블 신호들 ENWAY[1]~ ENWAY[4] 중 ENWAY[1]만 논리 하이 상태이고 나머지는 논리 로우 상태라면, 상기 4개의 캐쉬 웨이들(221~224) 중 제1 웨이(221)만 동작하고, 나머지 제2 내지 제4 웨이들(222~224)은 동작하지 않는다. 이와 같이 접근된 캐쉬 웨이(221)에서 태그 매칭(matching)에 의하여 캐쉬 히트되는 블록에서, 상기 명령어 캐쉬(220)는 상기 브랜치 목적 어드레스(TADR)의 옵셋 필드에 대응하는 데이터를 추출하고, 상기 선택부(225)를 통하여 추출된 데이터를 선택하여 페치 명령어(FIN)로서 출력한다.
위에서 기술한 바와 같이, 본 발명의 일실시예에 따른 프로세서(200)에서는, 브랜치 예측부(250)가 예측한 브랜치 목적 어드레스(TADR)의 일부 정보가, 웨이 예측부(260)가 상기 브랜치 목적 어드레스(TADR)를 해석하여 검출한 서브 태그들 중 어느 것과 매칭되는지를 비교한다. 이와 같은 비교에 따라, 캐쉬 히트(hit) 발생시킬 가능성 있는 캐쉬 웨이를 결정하고, 결정된 캐쉬 웨이만 접근하여 페치 명령어(FIN)를 추출한다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이 본 발명에 따른 프로세서는, 다음 페치 어드레스의 결정과 웨이 예측을 병렬적으로 수행하여 'Set-associtive Cache' 에서 필요한 캐쉬 웨이만이 선택되도록 예측하므로, 웨이 예측에 따른 지연 시간을 감소시키며, 소모 전력을 줄이는 효과가 있다.

Claims (20)

  1. 페치 어드레스에 응답하여 브랜치 명령어의 페치인가를 예측하고, 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 브랜치 목적 어드레스를 출력하는 브랜치 예측부;
    상기 브랜치 목적 어드레스의 일부와 캐쉬 웨이들의 해당 서브 태그들 각각을 비교하고, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인가의 여부를 알리는 신호에 따라 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하는 웨이 예측부;
    프로세서 싸이클마다 프로그램 카운터 신호에 응답하여 상기 페치 어드레스를 출력하고, 다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여 상기 브랜치 목적 어드레스, 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스를 선택하고, 선택된 어드레스를 출력하는 페치부; 및
    상기 선택된 어드레스에 따라 캐쉬 히트된 데이터를 페치 명령어로서 출력하고, 상기 페치부에서 상기 브랜치 목적 어드레스가 선택되면 상기 웨이 예측부에서 결정된 캐쉬 웨이만에 접근하여 해당 페치 명령어를 출력하는 명령어 캐쉬를 구비하는 것을 특징으로 하는 프로세서.
  2. 제 1항에 있어서, 상기 프로세서는,
    상기 페치 명령어가 어떤 연산 종류인지를 해석하는 명령어 디코더; 및
    상기 해석 결과에 응답하여 상기 페치 명령어를 실행하는 실행부를 더 구비하는 것을 특징으로 하는 프로세서.
  3. 제 1항에 있어서, 상기 웨이 예측부는,
    상기 브랜치 목적 어드레스에 응답하여 상기 캐쉬 웨이들의 해당 서브 태그들을 출력하는 서브 태그 버퍼;
    상기 브랜치 목적 어드레스의 일부가 상기 서브 태그 버퍼에서 출력되는 다수의 서브 태그들 각각과 동일한지 여부를 비교하여, 다수의 비교 결과들을 출력하는 비교부; 및
    상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호의 논리 상태, 다음 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호의 논리 상태 및 상기 다수의 비교 결과들 각각의 논리 상태를 비교하여, 비교되는 논리 상태들이 같지 않으면 제1 논리 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능성을 알리는 제2 논리 상태를 가지는 웨이 인에이블 신호들 각각을 결정하는 결정부를 구비하는 것을 특징으로 하는 프로세서.
  4. 제 3항에 있어서, 상기 서브 태그 버퍼는,
    상기 브랜치 목적 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 디코더; 및
    다수의 서브 메모리들에 상기 캐쉬 웨이들의 서브 태그들을 저장하고, 상기 선택신호에 응답하여 상기 해당 서브 태그들을 출력하는 서브 태그 메모리를 구비하는 것을 특징으로 하는 프로세서.
  5. 제 4항에 있어서, 상기 서브 태그 메모리는,
    상기 명령어 캐쉬에 포함된 웨이들의 수와 동일한 수의 상기 서브 메모리들을 포함하고, 상기 서브 메모리들 각각에서 하나씩 상기 서브 태그들을 출력하는 것을 특징으로 하는 프로세서.
  6. 제 1항에 있어서, 상기 서브 태그들 각각은,
    상기 명령어 캐쉬에 포함되어 있는 상기 캐쉬 웨이들에 저장되는 태그들 각각의 일부 비트 데이터인 것을 특징으로 하는 프로세서.
  7. 제 6항에 있어서, 상기 일부 비트 데이터는,
    하위 N비트(N은 자연수)인 것을 특징으로 하는 프로세서.
  8. 제 1항에 있어서, 상기 서브 태그들 각각은,
    상기 명령어 캐쉬가 캐쉬 미스(miss) 발생에 따라 리플레이스먼트(replacement) 수행으로 해당 태그를 업데이트할 때, 함께 업데이트 되는 것을 특징으로 하는 프로세서.
  9. 제 1항에 있어서, 상기 브랜치 예측부는,
    상기 페치 어드레스에 응답하여, 상기 페치 어드레스의 인덱스에 상응하는 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스를 출력하는 브랜치 목적 버퍼;
    상기 해당 브랜치 어드레스 태그와 상기 페치 어드레스에 포함된 태그가 동일한지 여부를 알리는 비교 신호를 생성하는 태그 비교부;
    상기 페치 어드레스가 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 여부를 알리는 예측 신호를 생성하는 예측 로직; 및
    상기 비교 신호와 상기 예측 신호에 따라 상기 페치 어드레스가 분기될 것으로 예측되는 브랜치인지 여부를 알리는 결정 신호를 생성하는 결정부를 구비하는 것을 특징으로 하는 프로세서.
  10. 제 9항에 있어서, 상기 브랜치 목적 버퍼는,
    상기 페치 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 디코더; 및
    브랜치 어드레스 태그들과 브랜치 목적 어드레스들을 저장하고, 상기 선택신호에 응답하여 해당 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스 출력하는 메모리를 구비하는 것을 특징으로 하는 프로세서.
  11. 프로세서 싸이클마다 프로그램 카운터 신호에 응답하여 상기 페치 어드레스를 생성하는 단계;
    상기 페치 어드레스에 응답하여 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 결정하고, 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 브랜치 목적 어드레스를 생성하는 단계;
    상기 브랜치 목적 어드레스의 일부와 캐쉬 웨이들의 해당 서브 태그들 각각을 비교하여, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호에 따라 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하는 단계;
    다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여 상기 브랜치 목적 어드레스, 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스를 선택하고, 선택된 어드레스를 출력하는 단계; 및
    명령어 캐쉬에서 상기 선택된 어드레스에 따라 캐쉬 히트된 데이터를 페치 명령어로서 출력하는 단계를 구비하고,
    상기 브랜치 목적 어드레스가 선택되면 상기 결정된 캐쉬 웨이만에 접근하여 해당 페치 명령어를 출력하는 것을 특징으로 하는 프로세싱 방법.
  12. 제 11항에 있어서, 상기 프로세싱 방법은,
    상기 페치 명령어가 어떤 연산 종류인지를 해석하는 단계; 및
    상기 해석 결과에 응답하여 상기 페치 명령어를 실행하는 단계를 더 포함하는 것을 특징으로 하는 프로세싱 방법.
  13. 제 11항에 있어서, 상기 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이의 결정 단계는,
    상기 브랜치 목적 어드레스에 응답하여 상기 캐쉬 웨이들의 해당 서브 태그들을 출력하는 단계;
    상기 브랜치 목적 어드레스의 일부가 상기 출력되는 다수의 서브 태그들 각각과 동일한지 여부를 비교하여, 다수의 비교 결과들을 출력하는 단계; 및
    상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호의 논리 상태, 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호의 논리 상태, 및 상기 다수의 비교 결과들 각각의 논리 상태를 비교하여, 비교되는 논리 상태들이 같지 않으면 제1 논리 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능성을 알리는 제2 논리 상태를 가지는 웨이 인에이블 신호들 각각을 결정하는 단계를 포함하는 것을 특징으로 하는 프로세싱 방법.
  14. 제 13항에 있어서, 상기 서브 태그들의 출력 단계는,
    상기 브랜치 목적 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 단계; 및
    다수의 서브 메모리들에 저장된 상기 캐쉬 웨이들의 서브 태그들로부터, 상기 선택신호에 응답하여 상기 해당 서브 태그들을 출력하는 단계를 포함하는 것을 특징으로 하는 프로세싱 방법.
  15. 제 14항에 있어서, 상기 서브 메모리들은,
    상기 명령어 캐쉬에 포함된 웨이들의 수와 동일한 수로 이루어지고, 상기 서 브 태그들이 상기 서브 메모리들 각각에서 하나씩 출력되는 것을 특징으로 하는 프로세싱 방법.
  16. 제 11항에 있어서, 상기 서브 태그들 각각은,
    상기 명령어 캐쉬에 포함되어 있는 상기 캐쉬 웨이들에 저장되는 태그들 각각의 일부 비트 데이터인 것을 특징으로 하는 프로세싱 방법.
  17. 제 16항에 있어서, 상기 일부 비트 데이터는,
    하위 N비트(N은 자연수)인 것을 특징으로 하는 프로세싱 방법.
  18. 제 11항에 있어서, 상기 서브 태그들 각각은,
    상기 명령어 캐쉬가 캐쉬 미스 발생에 따라 리플레이스먼트 수행으로 해당 태그를 업데이트할 때, 함께 업데이트 되는 것을 특징으로 하는 프로세싱 방법.
  19. 제 11항에 있어서, 상기 브랜치 여부 예측 단계는,
    상기 페치 어드레스에 응답하여, 상기 페치 어드레스의 인덱스에 상응하는 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스를 출력하는 단계;
    상기 해당 브랜치 어드레스 태그와 상기 페치 어드레스에 포함된 태그가 동일한지 여부를 알리는 비교 신호를 생성하는 단계;
    상기 페치 어드레스가 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 여부를 알리는 예측 신호를 생성하는 단계; 및
    상기 비교 신호와 상기 예측 신호에 따라 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호를 생성하는 단계를 구비하는 것을 특징으로 하는 프로세싱 방법.
  20. 제 19항에 있어서, 상기 해당 브랜치 어드레스 태그 및 상기 해당 브랜치 목적 어드레스 출력 단계는,
    상기 페치 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 단계; 및
    브랜치 어드레스 태그들과 브랜치 목적 어드레스들을 저장하고 있는 메모리에서, 상기 선택신호에 응답하여 상기 해당 브랜치 어드레스 태그 및 상기 해당 브랜치 목적 어드레스 출력하는 단계를 구비하는 것을 특징으로 하는 프로세싱 방법.
KR1020040088217A 2004-11-02 2004-11-02 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 KR100688503B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020040088217A KR100688503B1 (ko) 2004-11-02 2004-11-02 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
JP2005319816A JP2006134331A (ja) 2004-11-02 2005-11-02 ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法
US11/264,158 US7631146B2 (en) 2004-11-02 2005-11-02 Processor with cache way prediction and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040088217A KR100688503B1 (ko) 2004-11-02 2004-11-02 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법

Publications (2)

Publication Number Publication Date
KR20060039147A KR20060039147A (ko) 2006-05-08
KR100688503B1 true KR100688503B1 (ko) 2007-03-02

Family

ID=36263485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040088217A KR100688503B1 (ko) 2004-11-02 2004-11-02 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법

Country Status (3)

Country Link
US (1) US7631146B2 (ko)
JP (1) JP2006134331A (ko)
KR (1) KR100688503B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023132474A1 (ko) * 2022-01-06 2023-07-13 부산대학교 산학협력단 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101174202B (zh) * 2006-10-31 2010-09-15 扬智科技股份有限公司 具多指令流的录像译码器快取装置及其控制方法
JP4980751B2 (ja) * 2007-03-02 2012-07-18 富士通セミコンダクター株式会社 データ処理装置、およびメモリのリードアクティブ制御方法。
US8095736B2 (en) * 2008-02-25 2012-01-10 Telefonaktiebolaget Lm Ericsson (Publ) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US7546417B1 (en) 2008-07-15 2009-06-09 International Business Machines Corporation Method and system for reducing cache tag bits
US8543769B2 (en) 2009-07-27 2013-09-24 International Business Machines Corporation Fine grained cache allocation
US8745618B2 (en) 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
US8838906B2 (en) * 2010-01-08 2014-09-16 International Business Machines Corporation Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US8533399B2 (en) * 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US9507647B2 (en) * 2010-01-08 2016-11-29 Globalfoundries Inc. Cache as point of coherence in multiprocessor system
US8635408B2 (en) * 2011-01-04 2014-01-21 International Business Machines Corporation Controlling power of a cache based on predicting the instruction cache way for high power applications
US9256544B2 (en) * 2012-12-26 2016-02-09 Advanced Micro Devices, Inc. Way preparation for accessing a cache
US9311098B2 (en) * 2013-05-07 2016-04-12 Apple Inc. Mechanism for reducing cache power consumption using cache way prediction
CN104252334B (zh) * 2013-06-29 2017-07-07 华为技术有限公司 分支目标地址获取方法和装置
EP3296880B1 (en) 2015-06-02 2022-09-21 Huawei Technologies Co., Ltd. Access system and method for data storage
US11048515B2 (en) 2018-12-28 2021-06-29 SiFive, Inc. Way predictor and enable logic for instruction tightly-coupled memory and instruction cache
TWI749960B (zh) * 2020-12-23 2021-12-11 瑞昱半導體股份有限公司 資料處理裝置與其資料存取電路
US12008375B2 (en) 2022-06-08 2024-06-11 Ventana Micro Systems Inc. Branch target buffer that stores predicted set index and predicted way number of instruction cache
US12014180B2 (en) 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Dynamically foldable and unfoldable instruction fetch pipeline
US12014178B2 (en) * 2022-06-08 2024-06-18 Ventana Micro Systems Inc. Folded instruction fetch pipeline
US11836498B1 (en) 2022-08-02 2023-12-05 Ventana Micro Systems Inc. Single cycle predictor
US11816489B1 (en) 2022-08-02 2023-11-14 Ventana Micro Systems Inc. Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle
US12020032B2 (en) 2022-08-02 2024-06-25 Ventana Micro Systems Inc. Prediction unit that provides a fetch block descriptor each clock cycle

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
US6115792A (en) * 1997-12-16 2000-09-05 Advanced Micro Devices, Inc. Way prediction logic for cache array
KR20010031572A (ko) * 1997-10-30 2001-04-16 토토라노 제이. 빈센트 더 작은 수의 분기 예측과 대체 목표를 사용하여 더 큰수의 분기 예측을 하는 장치 및 방법
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5978906A (en) * 1996-11-19 1999-11-02 Advanced Micro Devices, Inc. Branch selectors associated with byte ranges within an instruction cache for rapidly identifying branch predictions
US5956746A (en) 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6425055B1 (en) * 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
KR20020039689A (ko) * 1999-10-14 2002-05-27 토토라노 제이. 빈센트 정렬정보를 캐쉬하는 장치 및 방법
US6222241B1 (en) 1999-10-29 2001-04-24 Advanced Micro Devices, Inc. Method and system for reducing ARC layer removal by providing a capping layer for the ARC layer
US7406569B2 (en) * 2002-08-12 2008-07-29 Nxp B.V. Instruction cache way prediction for jump targets
US6976126B2 (en) * 2003-03-11 2005-12-13 Arm Limited Accessing data values in a cache

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073230A (en) * 1997-06-11 2000-06-06 Advanced Micro Devices, Inc. Instruction fetch unit configured to provide sequential way prediction for sequential instruction fetches
KR20010031572A (ko) * 1997-10-30 2001-04-16 토토라노 제이. 빈센트 더 작은 수의 분기 예측과 대체 목표를 사용하여 더 큰수의 분기 예측을 하는 장치 및 방법
US6115792A (en) * 1997-12-16 2000-09-05 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023132474A1 (ko) * 2022-01-06 2023-07-13 부산대학교 산학협력단 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법

Also Published As

Publication number Publication date
JP2006134331A (ja) 2006-05-25
US20060095680A1 (en) 2006-05-04
KR20060039147A (ko) 2006-05-08
US7631146B2 (en) 2009-12-08

Similar Documents

Publication Publication Date Title
KR100688503B1 (ko) 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
EP1244970B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US8458408B2 (en) Cache directed sequential prefetch
EP0927394B1 (en) A cache line branch prediction scheme that shares among sets of a set associative cache
EP1891530B1 (en) Configurable cache system depending on instruction type
US8775740B2 (en) System and method for high performance, power efficient store buffer forwarding
KR20150016278A (ko) 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
JPH08234980A (ja) 分岐先バッファを用いた分岐予測システム
US11579884B2 (en) Instruction address translation and caching for primary and alternate branch prediction paths
CN112579175B (zh) 分支预测方法、分支预测装置和处理器核
CN105446773A (zh) 高速缓存行的非对齐加载指令的推测并行执行系统和方法
JP2019526873A (ja) 分岐ターゲットバッファの圧縮
WO2017053111A1 (en) Method and apparatus for dynamically tuning speculative optimizations based on predictor effectiveness
CN101681258A (zh) 使用可变长度指令集处理器中分支目标地址缓存的分支预测
EP2339453A1 (en) Arithmetic processing unit, information processing device, and control method
JP3590427B2 (ja) 先行読出機能付命令キャッシュメモリ
US11379239B2 (en) Apparatus and method for making predictions for instruction flow changing instructions
US20100146212A1 (en) Accessing a cache memory with reduced power consumption
US7346737B2 (en) Cache system having branch target address cache
KR20090042318A (ko) 분기 타겟 어드레스 캐시에서 룩업들을 감소시키는 방법 및장치
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
JP2006031697A (ja) 分岐ターゲットバッファと使用方法

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: 20130131

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150202

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200131

Year of fee payment: 14