KR100688503B1 - 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 - Google Patents
브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법 Download PDFInfo
- 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
Links
- 238000003672 processing method Methods 0.000 title claims description 4
- 238000000034 method Methods 0.000 claims abstract description 22
- 230000004044 response Effects 0.000 claims description 36
- 230000015654 memory Effects 0.000 claims description 29
- 239000000872 buffer Substances 0.000 claims description 17
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 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)로서 출력한다.
또한, 상기 페치부(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항에 있어서, 상기 프로세서는,상기 페치 명령어가 어떤 연산 종류인지를 해석하는 명령어 디코더; 및상기 해석 결과에 응답하여 상기 페치 명령어를 실행하는 실행부를 더 구비하는 것을 특징으로 하는 프로세서.
- 제 1항에 있어서, 상기 웨이 예측부는,상기 브랜치 목적 어드레스에 응답하여 상기 캐쉬 웨이들의 해당 서브 태그들을 출력하는 서브 태그 버퍼;상기 브랜치 목적 어드레스의 일부가 상기 서브 태그 버퍼에서 출력되는 다수의 서브 태그들 각각과 동일한지 여부를 비교하여, 다수의 비교 결과들을 출력하는 비교부; 및상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호의 논리 상태, 다음 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호의 논리 상태 및 상기 다수의 비교 결과들 각각의 논리 상태를 비교하여, 비교되는 논리 상태들이 같지 않으면 제1 논리 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능성을 알리는 제2 논리 상태를 가지는 웨이 인에이블 신호들 각각을 결정하는 결정부를 구비하는 것을 특징으로 하는 프로세서.
- 제 3항에 있어서, 상기 서브 태그 버퍼는,상기 브랜치 목적 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 디코더; 및다수의 서브 메모리들에 상기 캐쉬 웨이들의 서브 태그들을 저장하고, 상기 선택신호에 응답하여 상기 해당 서브 태그들을 출력하는 서브 태그 메모리를 구비하는 것을 특징으로 하는 프로세서.
- 제 4항에 있어서, 상기 서브 태그 메모리는,상기 명령어 캐쉬에 포함된 웨이들의 수와 동일한 수의 상기 서브 메모리들을 포함하고, 상기 서브 메모리들 각각에서 하나씩 상기 서브 태그들을 출력하는 것을 특징으로 하는 프로세서.
- 제 1항에 있어서, 상기 서브 태그들 각각은,상기 명령어 캐쉬에 포함되어 있는 상기 캐쉬 웨이들에 저장되는 태그들 각각의 일부 비트 데이터인 것을 특징으로 하는 프로세서.
- 제 6항에 있어서, 상기 일부 비트 데이터는,하위 N비트(N은 자연수)인 것을 특징으로 하는 프로세서.
- 제 1항에 있어서, 상기 서브 태그들 각각은,상기 명령어 캐쉬가 캐쉬 미스(miss) 발생에 따라 리플레이스먼트(replacement) 수행으로 해당 태그를 업데이트할 때, 함께 업데이트 되는 것을 특징으로 하는 프로세서.
- 제 1항에 있어서, 상기 브랜치 예측부는,상기 페치 어드레스에 응답하여, 상기 페치 어드레스의 인덱스에 상응하는 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스를 출력하는 브랜치 목적 버퍼;상기 해당 브랜치 어드레스 태그와 상기 페치 어드레스에 포함된 태그가 동일한지 여부를 알리는 비교 신호를 생성하는 태그 비교부;상기 페치 어드레스가 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 여부를 알리는 예측 신호를 생성하는 예측 로직; 및상기 비교 신호와 상기 예측 신호에 따라 상기 페치 어드레스가 분기될 것으로 예측되는 브랜치인지 여부를 알리는 결정 신호를 생성하는 결정부를 구비하는 것을 특징으로 하는 프로세서.
- 제 9항에 있어서, 상기 브랜치 목적 버퍼는,상기 페치 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 디코더; 및브랜치 어드레스 태그들과 브랜치 목적 어드레스들을 저장하고, 상기 선택신호에 응답하여 해당 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스 출력하는 메모리를 구비하는 것을 특징으로 하는 프로세서.
- 프로세서 싸이클마다 프로그램 카운터 신호에 응답하여 상기 페치 어드레스를 생성하는 단계;상기 페치 어드레스에 응답하여 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 결정하고, 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 브랜치 목적 어드레스를 생성하는 단계;상기 브랜치 목적 어드레스의 일부와 캐쉬 웨이들의 해당 서브 태그들 각각을 비교하여, 상기 비교 결과, 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호 및 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호에 따라 상기 캐쉬 웨이들 중 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이를 결정하는 단계;다음 프로세서 싸이클의 페치 어드레스를 결정하는 소정 조건에 응답하여 상기 브랜치 목적 어드레스, 순차 어드레스 및 상기 브랜치 목적 어드레스와 상기 순차 어드레스 외의 다른 어드레스들 중에서 다음 프로세서 싸이클의 페치 어드레스를 선택하고, 선택된 어드레스를 출력하는 단계; 및명령어 캐쉬에서 상기 선택된 어드레스에 따라 캐쉬 히트된 데이터를 페치 명령어로서 출력하는 단계를 구비하고,상기 브랜치 목적 어드레스가 선택되면 상기 결정된 캐쉬 웨이만에 접근하여 해당 페치 명령어를 출력하는 것을 특징으로 하는 프로세싱 방법.
- 제 11항에 있어서, 상기 프로세싱 방법은,상기 페치 명령어가 어떤 연산 종류인지를 해석하는 단계; 및상기 해석 결과에 응답하여 상기 페치 명령어를 실행하는 단계를 더 포함하는 것을 특징으로 하는 프로세싱 방법.
- 제 11항에 있어서, 상기 캐쉬 히트 발생시킬 가능성 있는 캐쉬 웨이의 결정 단계는,상기 브랜치 목적 어드레스에 응답하여 상기 캐쉬 웨이들의 해당 서브 태그들을 출력하는 단계;상기 브랜치 목적 어드레스의 일부가 상기 출력되는 다수의 서브 태그들 각각과 동일한지 여부를 비교하여, 다수의 비교 결과들을 출력하는 단계; 및상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호의 논리 상태, 다음 프로세서 싸이클의 페치 어드레스가 브랜치 목적 어드레스인지의 여부를 알리는 신호의 논리 상태, 및 상기 다수의 비교 결과들 각각의 논리 상태를 비교하여, 비교되는 논리 상태들이 같지 않으면 제1 논리 상태를 가지고 그렇지 않으면 캐쉬 히트 발생시킬 가능성을 알리는 제2 논리 상태를 가지는 웨이 인에이블 신호들 각각을 결정하는 단계를 포함하는 것을 특징으로 하는 프로세싱 방법.
- 제 13항에 있어서, 상기 서브 태그들의 출력 단계는,상기 브랜치 목적 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 단계; 및다수의 서브 메모리들에 저장된 상기 캐쉬 웨이들의 서브 태그들로부터, 상기 선택신호에 응답하여 상기 해당 서브 태그들을 출력하는 단계를 포함하는 것을 특징으로 하는 프로세싱 방법.
- 제 14항에 있어서, 상기 서브 메모리들은,상기 명령어 캐쉬에 포함된 웨이들의 수와 동일한 수로 이루어지고, 상기 서 브 태그들이 상기 서브 메모리들 각각에서 하나씩 출력되는 것을 특징으로 하는 프로세싱 방법.
- 제 11항에 있어서, 상기 서브 태그들 각각은,상기 명령어 캐쉬에 포함되어 있는 상기 캐쉬 웨이들에 저장되는 태그들 각각의 일부 비트 데이터인 것을 특징으로 하는 프로세싱 방법.
- 제 16항에 있어서, 상기 일부 비트 데이터는,하위 N비트(N은 자연수)인 것을 특징으로 하는 프로세싱 방법.
- 제 11항에 있어서, 상기 서브 태그들 각각은,상기 명령어 캐쉬가 캐쉬 미스 발생에 따라 리플레이스먼트 수행으로 해당 태그를 업데이트할 때, 함께 업데이트 되는 것을 특징으로 하는 프로세싱 방법.
- 제 11항에 있어서, 상기 브랜치 여부 예측 단계는,상기 페치 어드레스에 응답하여, 상기 페치 어드레스의 인덱스에 상응하는 브랜치 어드레스 태그 및 해당 브랜치 목적 어드레스를 출력하는 단계;상기 해당 브랜치 어드레스 태그와 상기 페치 어드레스에 포함된 태그가 동일한지 여부를 알리는 비교 신호를 생성하는 단계;상기 페치 어드레스가 분기될 것으로 예측되는 브랜치 명령어의 페치인가를 여부를 알리는 예측 신호를 생성하는 단계; 및상기 비교 신호와 상기 예측 신호에 따라 상기 실제로 분기될 것으로 예측되는지 여부를 알리는 결정 신호를 생성하는 단계를 구비하는 것을 특징으로 하는 프로세싱 방법.
- 제 19항에 있어서, 상기 해당 브랜치 어드레스 태그 및 상기 해당 브랜치 목적 어드레스 출력 단계는,상기 페치 어드레스의 인덱스에 따라 해당 선택신호를 생성하는 단계; 및브랜치 어드레스 태그들과 브랜치 목적 어드레스들을 저장하고 있는 메모리에서, 상기 선택신호에 응답하여 상기 해당 브랜치 어드레스 태그 및 상기 해당 브랜치 목적 어드레스 출력하는 단계를 구비하는 것을 특징으로 하는 프로세싱 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023132474A1 (ko) * | 2022-01-06 | 2023-07-13 | 부산대학교 산학협력단 | 분기 태그 지정 확장을 위한 리스크 파이브 아키텍처 명령어 확장을 위한 장치 및 방법 |
Families Citing this family (22)
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)
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)
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 |
-
2004
- 2004-11-02 KR KR1020040088217A patent/KR100688503B1/ko active IP Right Grant
-
2005
- 2005-11-02 US US11/264,158 patent/US7631146B2/en active Active
- 2005-11-02 JP JP2005319816A patent/JP2006134331A/ja active Pending
Patent Citations (5)
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)
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 |