KR100468618B1 - 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치 - Google Patents

가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치 Download PDF

Info

Publication number
KR100468618B1
KR100468618B1 KR10-2002-0016957A KR20020016957A KR100468618B1 KR 100468618 B1 KR100468618 B1 KR 100468618B1 KR 20020016957 A KR20020016957 A KR 20020016957A KR 100468618 B1 KR100468618 B1 KR 100468618B1
Authority
KR
South Korea
Prior art keywords
instruction
bit
address
start address
command
Prior art date
Application number
KR10-2002-0016957A
Other languages
English (en)
Other versions
KR20030078125A (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 KR10-2002-0016957A priority Critical patent/KR100468618B1/ko
Publication of KR20030078125A publication Critical patent/KR20030078125A/ko
Application granted granted Critical
Publication of KR100468618B1 publication Critical patent/KR100468618B1/ko

Links

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21SNON-PORTABLE LIGHTING DEVICES; SYSTEMS THEREOF; VEHICLE LIGHTING DEVICES SPECIALLY ADAPTED FOR VEHICLE EXTERIORS
    • F21S9/00Lighting devices with a built-in power supply; Systems employing lighting devices with a built-in power supply
    • F21S9/02Lighting devices with a built-in power supply; Systems employing lighting devices with a built-in power supply the power supply being a battery or accumulator
    • F21S9/03Lighting devices with a built-in power supply; Systems employing lighting devices with a built-in power supply the power supply being a battery or accumulator rechargeable by exposure to light
    • F21S9/037Lighting devices with a built-in power supply; Systems employing lighting devices with a built-in power supply the power supply being a battery or accumulator rechargeable by exposure to light the solar unit and the lighting unit being located within or on the same housing
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21KNON-ELECTRIC LIGHT SOURCES USING LUMINESCENCE; LIGHT SOURCES USING ELECTROCHEMILUMINESCENCE; LIGHT SOURCES USING CHARGES OF COMBUSTIBLE MATERIAL; LIGHT SOURCES USING SEMICONDUCTOR DEVICES AS LIGHT-GENERATING ELEMENTS; LIGHT SOURCES NOT OTHERWISE PROVIDED FOR
    • F21K9/00Light sources using semiconductor devices as light-generating elements, e.g. using light-emitting diodes [LED] or lasers
    • F21K9/20Light sources comprising attachment means
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21SNON-PORTABLE LIGHTING DEVICES; SYSTEMS THEREOF; VEHICLE LIGHTING DEVICES SPECIALLY ADAPTED FOR VEHICLE EXTERIORS
    • F21S8/00Lighting devices intended for fixed installation
    • F21S8/02Lighting devices intended for fixed installation of recess-mounted type, e.g. downlighters
    • F21S8/022Lighting devices intended for fixed installation of recess-mounted type, e.g. downlighters intended to be recessed in a floor or like ground surface, e.g. pavement or false floor
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V23/00Arrangement of electric circuit elements in or on lighting devices
    • F21V23/003Arrangement of electric circuit elements in or on lighting devices the elements being electronics drivers or controllers for operating the light source, e.g. for a LED array
    • F21V23/004Arrangement of electric circuit elements in or on lighting devices the elements being electronics drivers or controllers for operating the light source, e.g. for a LED array arranged on a substrate, e.g. a printed circuit board
    • F21V23/006Arrangement of electric circuit elements in or on lighting devices the elements being electronics drivers or controllers for operating the light source, e.g. for a LED array arranged on a substrate, e.g. a printed circuit board the substrate being distinct from the light source holder
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21VFUNCTIONAL FEATURES OR DETAILS OF LIGHTING DEVICES OR SYSTEMS THEREOF; STRUCTURAL COMBINATIONS OF LIGHTING DEVICES WITH OTHER ARTICLES, NOT OTHERWISE PROVIDED FOR
    • F21V33/00Structural combinations of lighting devices with other articles, not otherwise provided for
    • F21V33/0064Health, life-saving or fire-fighting equipment
    • F21V33/0076Safety or security signalisation, e.g. smoke or burglar alarms, earthquake detectors; Self-defence devices
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21WINDEXING SCHEME ASSOCIATED WITH SUBCLASSES F21K, F21L, F21S and F21V, RELATING TO USES OR APPLICATIONS OF LIGHTING DEVICES OR SYSTEMS
    • F21W2131/00Use or application of lighting devices or systems not provided for in codes F21W2102/00-F21W2121/00
    • F21W2131/40Lighting for industrial, commercial, recreational or military use
    • F21W2131/406Lighting for industrial, commercial, recreational or military use for theatres, stages or film studios
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F21LIGHTING
    • F21YINDEXING SCHEME ASSOCIATED WITH SUBCLASSES F21K, F21L, F21S and F21V, RELATING TO THE FORM OR THE KIND OF THE LIGHT SOURCES OR OF THE COLOUR OF THE LIGHT EMITTED
    • F21Y2115/00Light-generating elements of semiconductor light sources
    • F21Y2115/10Light-emitting diodes [LED]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Sustainable Development (AREA)
  • Physics & Mathematics (AREA)
  • Optics & Photonics (AREA)
  • Computer Security & Cryptography (AREA)
  • Environmental & Geological Engineering (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치는, BTB를 이용하여 명령어가 될 수 있는 복수개의 후보에 대한 예측을 종합함으로써, 높은 적중율을 갖는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 제공하는데 그 목적이 있다.
상기 목적을 달성하기 위하여 본 발명은, 제1 명령어 시작 주소 및 제1 명령어의 길이를 입력받아 인터리빙 작업을 통하여 예측된 다음 명령어 시작 주소를 생성하여 출력하는 BTB; 상기 BTB에서 상기 다음 명령어 시작 주소를 입력받고, 상기 다음 명령어 시작 주소에 따라 명령어 하프워드를 출력하는 명령어 캐쉬; 상기 명령어 캐쉬에서 상기 명령어 하프워드를 입력받고, 상기 명령어 하프워드를 분석하여 제1 명령어의 길이, 제2 명령어의 시작 주소, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 생성하고, 상기 제2 명령어의 시작 주소를 상기 BTB로 출력하는 제1 명령어 길이 계산 모듈; 상기 제1 명령어 길이 계산 모듈에서 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 입력받고, 디코딩을 수행하여 제1 명령 및 제2 명령을 생성하여 출력하는 명령어 디코더; 상기 명령어 디코더에서 상기 제1 명령 및 상기 제2 명령을 입력받고, 상기 제1 명령 및 상기 제2 명령에 따른 명령을 수행하며, 그 수행에 따른 결과를 출력하는 기능 유닛; 상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 저장하는 레지스터 화일; 및 상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 분석하여 상기 BTB에서 예측한 결과와 같은지를 비교하는 검사 수단을 포함한다.

Description

가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치{APPARATUS FOR BRANCH PREDICTION IN SUPERSCALAR PROCESSOR WITH VARIABLE LENGTH INSTRUCTION}
본 발명은 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치에 관한 것으로, 특히, 분기 타겟 버퍼(Branch Target Buffer ; BTB)를 이용하여 명령어를 빠르게 수행시킬 수 있도록 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치에 관한 것이다.
일반적으로, 최근의 슈퍼 스칼라 구조를 포함한 고성능 마이크로 프로세서에서는 성능 향상을 위해서 명령어 파이프라인(Pipeline)을 필수적으로 채택하고 있다. 파이프라인의 단계를 높이면 일반적으로는 마이크로 프로세서의 수행 주기가 짧아지므로 성능의 향상을 기할 수 있으나, 분기 명령어 수행 시의 분기 지연 사이클(branch delay cycle)의 증가로 인한 분기 손실(branch penalty)의 증가는 프로세서의 성능을 심각하게 저하시킨다.
분기 손실을 줄이기 위해서 소프트웨어에 기인한 정적인 기법과 하드웨어에기인한 동적인 기법들이 많이 제안되었다. 기존의 정적인 기법은 구현을 위한 하드웨어 비용이 작은 반면에 분기 손실을 충분히 감소시키지 못하고, 소프트웨어 호환성을 유지 못하는 문제가 있으므로, 인텔(Intel)의 펜티엄(Pentium), P6등과 같은 최근의 마이크로 프로세서에서는 구현 비용이 크지만 분기 손실 사이클을 충분히 감소시키면서 소프트웨어의 호환성을 유지할 수 있는 동적인 BTB(Branch Target Buffer)기법을 이용하고 있다. BTB 기법은 수행된 분기 명령어의 인스트럭션 포인터(Instruction pointer, IP)와 예측된 분기 목적 명령어(predicted branch target instruction)의 IP를 저장하는 독립된 분기 명령어 캐쉬(cache)를 이용하여, 분기 지연 사이클 동안 예측된 분기 목적 명령어의 패치(fetch)를 가능하게 하며, 이는 분기 방향의 예측이 실제 수행 결과와 일치할 경우에 분기 명령어의 수행을 단위 파이프라인 사이클 내에 완료할 수 있게 한다. 또한, 최근의 고성능 마이크로 프로세서의 설계에서는 타겟 명령어를 보다 빠른 시간 안에 패치하기 위해서 BTB 조회 시에 분기 명령어의 IP 대신에 분기 명령어 바로 전 사이클에서 패치되는 명령어의 IP를 이용해서 BTB를 조회한다.
상술한 종래의 수퍼스칼라 마이크로프로세서에서는, 일정한 길이를 갖는 명령어 세트에 대한 분기 예측을 하여 낭비되는 사이클을 최소로 하고 수행 속도를 빠르게 해주나, 수퍼스칼라 프로세서가 가변 길이의 명령어 세트를 갖게 된다면 이에 대한 분기 예측을 수행하는데 있어서 어려움이 따르게 되므로, 분기 예측이 제한적으로 수행될 수 밖에 없는 문제점이 있다. 즉, 2개의 명령어를 동시에 수행할 수 있는 수퍼스칼라 마이크로프로세서가 있다고 할 때, 명령어의 길이가 가변적이라면, 첫 번째 명령어의 위치는 정해져 있으나 두 번째 명령어의 위치는 알기 어려우므로, 첫 번째 명령어에 대한 분기 예측만을 수행하게 되어, 분기 예측의 적중률이 저하되는 문제점이 있다.
상기 문제점을 해결하기 위하여 안출된 본 발명은 BTB를 이용하여 명령어가 될 수 있는 복수개의 후보에 대한 예측을 종합함으로써, 높은 적중율을 갖는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 제공하는데 그 목적이 있다.
도 1은 본 발명의 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 나타낸 블록도,
도 2는 본 발명의 다른 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 나타낸 블록도,
도 3은 본 발명의 다른 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치 내에 장작된 4-웨이 BTB를 나타낸 블록도,
도 4는 첫 번째 명령어의 주소와 두 번째 명령어의 주소 관계를 나타낸 예시도,
도 5는 본 발명의 다른 일 실시예에 의한 4-웨이 BTB의 동작을 수행하기 위한 주소의 구분을 나타낸 예시도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
101 : BTB
102 : 명령어 캐쉬
103 : 명령어 길이 계산 모듈
104 : 명령어 디코더
105 : 기능 유닛
106 : 레지스터 화일
107 : 검사 수단
상기 목적을 달성하기 위하여 본 발명의 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치는, 제1 명령어 시작 주소 및 제1 명령어의 길이를 입력받아 인터리빙 작업을 통하여 예측된 다음 명령어 시작 주소를 생성하여 출력하는 BTB; 상기 BTB에서 상기 다음 명령어 시작 주소를 입력받고, 상기 다음 명령어 시작 주소에 따라 명령어 하프워드를 출력하는 명령어 캐쉬; 상기 명령어 캐쉬에서 상기 명령어 하프워드를 입력받고, 상기 명령어 하프워드를 분석하여 제1 명령어의 길이, 제2 명령어의 시작 주소, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 생성하고, 상기 제1 명령어의 길이를 상기 BTB로 출력하는 제2 명령어 길이 계산 모듈; 상기 제2 명령어 길이 계산 모듈에서 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 입력받고, 디코딩을 수행하여 제1 명령 및 제2 명령을 생성하여 출력하는 명령어 디코더; 상기 명령어 디코더에서 상기 제1 명령 및 상기 제2 명령을 입력받고, 상기 제1 명령 및 상기 제2 명령에 따른 명령을 수행하며, 그 수행에 따른 결과를 출력하는 기능 유닛; 상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 저장하는 레지스터 화일; 및 상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 분석하여 상기 BTB에서 예측한 결과와 같은지를 비교하는 검사 수단을 포함한다.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 본 발명의 가장 바람직한 실시예들을 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 나타낸 블록도로서, 본 발명의 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치는, BTB(101), 명령어 캐쉬(102), 제1 명령어 길이 계산 모듈(103), 명령어 디코더(104), 기능 유닛(105), 레지스터 화일(106) 및 검사 수단(107)을 포함한다. 본 실시예에 있어서, 수퍼스칼라 프로세서는, 2개의 명령어를 한 사이클에 수행할 수 있는 2-웨이 수퍼스칼라 프로세서가 16비트, 32비트 및 48비트의 가변적인 크기의 명령어 세트를 가지고 있을 때를 가정한다.
BTB(101)는, 제1 명령어 시작 주소 및 후술하는 제1 명령어 길이 계산모듈(103)로부터의 제2 명령어 시작 주소를 입력받아 다음 명령어 시작 주소를 생성하고, 상기 다음 명령어 시작 주소를 후술하는 명령어 캐쉬(102)로 출력하는 역할을 한다. 여기서, 상기 BTB(101)는, 3가지의 정보를 가지고 있다. 이들 정보는 분기 명령어라는 것을 알 수 있게 하는 정보, 분기 명령어가 채택될 가능성이 어느 정도인지를 알려주는 분기 예측 정보 및 분기 명령어가 가장 최근에 분기한 주소이다. 이러한 3가지의 정보를 가지고 있는 상기 BTB(101)는, 후술하는 명령어 캐쉬(102)로부터 각 명령어가 패치될 때마다 패치된 명령어의 주소를 입력받는다. 이 때, 상기 BTB(101)는 이 주소에 해당하는 엔트리가 발견되면, 이 주소의 명령어를 분기 명령어로 인지한다. 또한, 분기 명령어라는 것이 확인되면 분기 예측 정보를 가지고 이러한 분기 명령어의 채택여부를 예측하게 된다. 만약 채택될 것으로 예측된다면, 다음 명령어의 패치 주소는 상기 BTB(101)가 담고 있는 가장 최근에 분기한 주소가 되며, 이 주소부터 패치가 시작된다. 그러나, 채택되지 않을 것이라고 예측된다면, 다음 명령어의 패치 주소는 순차적인 주소가 된다. 한편, 이러한 상기 BTB(101)의 접근 과정에서 제1 명령어 시작 주소에 의해 분기가 채택될 것이라 예측된다면, 이 결과는 제2 명령어 시작 주소에 의해 예측된 결과보다 우선적으로 채택된다.
또한, 명령어 캐쉬(102)는 상기 BTB(101)에서 상기 다음 명령어 시작 주소를 입력받고, 상기 다음 명령어 시작 주소에 따라 명령어 하프워드(16 비트)를 후술하는 제1 명령어 길이 계산 모듈(103)로 출력하는 역할을 한다.
한편, 제1 명령어 길이 계산 모듈(103)은, 상기 명령어 캐쉬(102)에서 상기명령어 하프워드를 입력받고, 상기 명령어 하프워드를 분석하여 제1 명령어의 길이, 제2 명령어의 시작 주소, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 생성하고, 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 후술하는 명령어 디코더(104)로 출력하며, 상기 제2 명령어의 시작 주소를 상기 BTB(101)로 출력하는 역할을 한다.
또한, 명령어 디코더(104)는 상기 제1 명령어 길이 계산 모듈(103)에서 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 입력받고, 디코딩을 수행하여 제1 명령 및 제2 명령을 생성하며, 상기 제1 명령 및 상기 제2 명령을 후술하는 기능 유닛(105)으로 출력하는 역할을 한다. 여기서, 상기 명령어 디코더(104)는 패치된 명령어가 동일 사이클에 수행되는지 여부(pairing)도 검사한다.
한편, 기능 유닛(105)은, 상기 명령어 디코더(104)에서 상기 제1 명령 및 상기 제2 명령을 입력받고, 상기 제1 명령 및 상기 제2 명령에 따른 명령을 수행하며, 그 수행에 따른 결과를 후술하는 레지스터 화일(106) 및 후술하는 검사 수단(107)으로 출력하는 역할을 한다.
또한, 레지스터 화일(106)은, 상기 기능 유닛(105)에서 수행 결과를 입력받고, 상기 수행 결과를 저장하는 역할을 한다.
한편, 검사 수단(107)은, 상기 기능 유닛(105)에서 수행 결과를 입력받고, 상기 수행 결과를 분석하여 상기 BTB(101)에서 예측한 결과와 같은지를 비교하는 역할을 한다. 이 때, 예측된 결과가 실제와 다르면 파이프 라인은 분기 명령어 이후에 미리 파이프 라인에 들어와 있던 명령어들을 모두 없애고 올바른 경로의 명령어부터 다지 패치하여 실행하게 된다. 반대로 예측된 결과와 실제가 같다면 파이프 라인은 계속 순차적으로 진행될 수 있다.
도 2는 본 발명의 다른 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치를 나타낸 블록도로서, 본 발명의 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치는, 4-웨이 BTB(201), 명령어 캐쉬(102), 제2 명령어 길이 계산 모듈(203), 명령어 디코더(104), 기능 유닛(105), 레지스터 화일(106) 및 검사 수단(107)을 포함한다. 여기서, 도 1에 도시된 일 실시예와 동일한 블록은 편의상 설명을 생략하도록 하겠다.
4-웨이 BTB(201)는, 제1 명령어 시작 주소 및 후술하는 제2 명령어 길이 계산 모듈(203)로부터의 제1 명령어의 길이를 입력받아 인터리빙 작업을 통하여 다음 명령어 시작 주소를 생성하고, 상기 다음 명령어 시작 주소를 후술하는 명령어 캐쉬(102)로 출력하는 역할을 한다.
또한, 제2 명령어 길이 계산 모듈(203)은, 상기 명령어 캐쉬(102)에서 상기 명령어 하프워드를 입력받고, 상기 명령어 하프워드를 분석하여 제1 명령어의 길이, 제2 명령어의 시작 주소, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 생성하고, 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 후술하는 명령어 디코더(104)로 출력하며, 상기 제1 명령어의 길이를 상기 4-웨이BTB(201)로 출력하는 역할을 한다.
도 3은 본 발명의 다른 일 실시예에 따른 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치 내에 장작된 4-웨이 BTB(201)를 나타낸 블록도로서, 본 발명의 4-웨이 BTB(201)은, 제1 뱅크(310), 제2 뱅크(320), 제3 뱅크(330), 제4 뱅크(340) 및 BTB 제어 수단(350)을 포함한다.
제1 뱅크(310)는, 웨이(way) 주소(명령어 시작주소의 두 번째 비트 및 세 번째 비트)를 00으로 하고, 상기 웨이(way) 주소를 제외한 상기 제1 명령어 시작주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호(Hit in FA)를 후술하는 BTB 제어 수단(350)으로 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트 - n은 자연수 - 를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호(Hit in FB)를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다. 여기서, 상기 제1 뱅크(310)는, 제1 증분기(311), 제1 선택기(312), 제1 다음 주소 생성 블록(313), 제1 비교기(314), 제1 앤드 게이트(315), 제2 앤드 게이트(316) 및 제3 앤드 게이트(317)를 포함한다.
상기 제1 뱅크(310) 내에 장착된 제1 증분기(311)는, 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 후술하는 제1 선택기(312)로 출력하는 역할을 한다.
또한, 상기 제1 뱅크(310) 내에 장착된 제1 선택기(312)는, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 0보다 큰 경우에는 상기 제1 증분기(311)에서 입력된 값을 후술하는 제1 다음 주소 생성 블록(313)으로 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 0과 같은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 후술하는 제1 다음 주소 생성 블록(313)으로 출력하는 역할을 한다.
한편, 상기 제1 뱅크(310) 내에 장착된 제1 다음 주소 생성 블록(313)은, 웨이 주소로 00을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하고, 상기 주소 데이터 내 태그 데이터를 후술하는 제1 비교기(314)로 출력하며, 예측 비트 및 유효 비트를 후술하는 제1 앤드 게이트(315)로 출력하고, 후술하는 BTB 제어 수단(350)에서 입력 받은 제어 신호에 의해 상기 타겟 분기 주소를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 상기 제1 뱅크(310) 내에 장착된 제1 비교기(314)는, 상기 제1 다음 주소 생성 블록(313)에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 후술하는 제1 앤드 게이트(315)로 출력하는 역할을 한다.
한편, 상기 제1 뱅크(310) 내에 장착된 제1 앤드 게이트(315)는, 상기 제1 다음 주소 생성 블록(313)으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제1 비교기(314)에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 제2 앤드 게이트(316) 및 제3 앤드 게이트(317)로 출력하는 역할을 한다.
또한, 상기 제1 뱅크(310) 내에 장착된 제2 앤드 게이트(316)는, 상기 제1 앤드 게이트(315)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 0인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
한편, 상기 제1 뱅크(310) 내에 장착된 제3 앤드 게이트(317)는, 상기 제1 앤드 게이트(315)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈(203)에서 입력받은 제1 명령어의 길이 값을 더한 값이 0인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 제2 뱅크(320)는, 웨이(way) 주소(명령어 시작주소의 두 번째 비트 및 세 번째 비트)를 01로 하고, 상기 웨이(way) 주소를 제외한 상기 제1 명령어 시작주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호(Hit in FA)를 후술하는 BTB 제어 수단(350)으로 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트 - n은 자연수 - 를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호(Hit in FB)를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다. 여기서, 상기 제2 뱅크(320)는, 제2 증분기(321), 제2 선택기(322), 제2 다음 주소 생성 블록(323), 제2 비교기(324), 제4 앤드 게이트(325), 제5 앤드 게이트(326) 및 제6앤드 게이트(327)를 포함한다.
상기 제2 뱅크(320) 내에 장착된 제2 증분기(321)는, 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 후술하는 제2 선택기(322)로 출력하는 역할을 한다.
또한, 상기 제2 뱅크(320) 내에 장착된 제2 선택기(322)는, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 1보다 큰 경우에는 상기 제2 증분기(321)에서 입력된 값을 후술하는 제2 다음 주소 생성 블록(323)으로 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 1과 같거나 작은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 후술하는 제2 다음 주소 생성 블록(323)으로 출력하는 역할을 한다.
한편, 상기 제2 뱅크(320) 내에 장착된 제2 다음 주소 생성 블록(323)은, 웨이 주소로 01을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하고, 상기 주소 데이터 내 태그 데이터를 후술하는 제2 비교기(324)로 출력하며, 예측 비트 및 유효 비트를 후술하는 제4 앤드 게이트(325)로 출력하고, 후술하는 BTB 제어 수단(350)에서 입력 받은 제어 신호에 의해 상기 타겟 분기 주소를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 상기 제2 뱅크(320) 내에 장착된 제2 비교기(324)는, 상기 제2 다음 주소 생성 블록(323)에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 후술하는 제4 앤드 게이트(325)로 출력하는 역할을 한다.
한편, 상기 제2 뱅크(320) 내에 장착된 제4 앤드 게이트(325)는, 상기 제2 다음 주소 생성 블록(323)으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제2 비교기(324)에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 제5 앤드 게이트(326) 및 제6 앤드 게이트(327)로 출력하는 역할을 한다.
또한, 상기 제2 뱅크(320) 내에 장착된 제5 앤드 게이트(326)는, 상기 제4 앤드 게이트(325)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 1인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
한편, 상기 제2 뱅크(320) 내에 장착된 제6 앤드 게이트(327)는, 상기 제4 앤드 게이트(325)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈(203)에서 입력받은 제1 명령어의 길이 값을 더한 값이 1인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 제3 뱅크(330)는, 웨이(way) 주소(명령어 시작주소의 두 번째 비트 및 세 번째 비트)를 10으로 하고, 상기 웨이(way) 주소를 제외한 상기 제1 명령어 시작주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호(Hit in FA)를 후술하는 BTB 제어수단(350)으로 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트 - n은 자연수 - 를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호(Hit in FB)를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다. 여기서, 상기 제3 뱅크(330)는, 제3 증분기(331), 제3 선택기(332), 제3 다음 주소 생성 블록(333), 제3 비교기(334), 제7 앤드 게이트(335), 제8 앤드 게이트(336) 및 제9 앤드 게이트(337)를 포함한다.
상기 제3 뱅크(330) 내에 장착된 제3 증분기(331)는, 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 후술하는 제3 선택기(332)로 출력하는 역할을 한다.
또한, 상기 제3 뱅크(330) 내에 장착된 제3 선택기(332)는, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 2보다 큰 경우에는 상기 제3 증분기(331)에서 입력된 값을 후술하는 제3 다음 주소 생성 블록(333)으로 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 2보다 같거나 작은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 후술하는 제3 다음 주소 생성 블록(333)으로 출력하는 역할을 한다.
한편, 상기 제3 뱅크(330) 내에 장착된 제3 다음 주소 생성 블록(333)은, 웨이 주소로 10을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하고, 상기 주소 데이터 내 태그 데이터를 후술하는 제3 비교기(334)로 출력하며, 예측 비트 및 유효 비트를 후술하는 제7 앤드 게이트(335)로 출력하고, 후술하는 BTB 제어 수단(350)에서 입력 받은 제어 신호에 의해 상기 타겟 분기 주소를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 상기 제3 뱅크(330) 내에 장착된 제3 비교기(334)는, 상기 제3 다음 주소 생성 블록(333)에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 후술하는 제7 앤드 게이트(335)로 출력하는 역할을 한다.
한편, 상기 제3 뱅크(330) 내에 장착된 제7 앤드 게이트(335)는, 상기 제3 다음 주소 생성 블록(333)으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제3 비교기(334)에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 제8 앤드 게이트(336) 및 제9 앤드 게이트(337)로 출력하는 역할을 한다.
또한, 상기 제3 뱅크(330) 내에 장착된 제8 앤드 게이트(336)는, 상기 제7 앤드 게이트(335)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 2인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
한편, 상기 제3 뱅크(330) 내에 장착된 제9 앤드 게이트(337)는, 상기 제7 앤드 게이트(335)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈(203)에서 입력받은 제1 명령어의 길이 값을 더한 값이 2인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는역할을 한다.
또한, 제4 뱅크(340)는, 웨이(way) 주소(명령어 시작주소의 두 번째 비트 및 세 번째 비트)를 11로 하고, 상기 웨이(way) 주소를 제외한 상기 제1 명령어 시작주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호(Hit in FA)를 후술하는 BTB 제어 수단(350)으로 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트 - n은 자연수 - 를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호(Hit in FB)를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다. 여기서, 상기 제4 뱅크(340)는, 제4 다음 주소 생성 블록(341), 제4 비교기(342), 제10 앤드 게이트(343), 제11 앤드 게이트(344) 및 제12 앤드 게이트(345)를 포함한다.
상기 제4 뱅크(340) 내에 장착된 제4 다음 주소 생성 블록(341)은, 웨이 주소로 11을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하고, 상기 주소 데이터 내 태그 데이터를 후술하는 제4 비교기(342)로 출력하며, 예측 비트 및 유효 비트를 후술하는 제10 앤드 게이트(343)로 출력하고, 후술하는 BTB 제어 수단(350)에서 입력 받은 제어 신호에 의해 상기 타겟 분기 주소를 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, 상기 제4 뱅크(340) 내에 장착된 제4 비교기(342)는, 상기 제4 다음 주소 생성 블록(341)에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 후술하는 제10 앤드 게이트(343)로 출력하는 역할을 한다.
한편, 상기 제4 뱅크(340) 내에 장착된 제10 앤드 게이트(343)는, 상기 제4 다음 주소 생성 블록(341)으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제4 비교기(342)에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 제11 앤드 게이트(344) 및 제12 앤드 게이트(345)로 출력하는 역할을 한다.
또한, 상기 제4 뱅크(340) 내에 장착된 제11 앤드 게이트(344)는, 상기 제10 앤드 게이트(343)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 3인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
한편, 상기 제4 뱅크(340) 내에 장착된 제12 앤드 게이트(345)는, 상기 제10 앤드 게이트(343)에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈(203)에서 입력받은 제1 명령어의 길이 값을 더한 값이 3인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 후술하는 BTB 제어 수단(350)으로 출력하는 역할을 한다.
또한, BTB 제어 수단(350)은, 상기 제1 뱅크(310), 상기 제2 뱅크(320), 상기 제3 뱅크(330) 및 상기 제4 뱅크(340)로부터 제1 명령어 히트 신호(Hit in FA) 및 제2 명령어 히트 신호(Hit in FB)를 입력받고, 상기 복수개의 신호 중 활성화 신호가 감지되면, 활성화 신호를 출력한 뱅크에 제어 신호를 보내어 타겟 분기 주소를 입력받으며, 상기 타겟 분기 주소를 다음 명령어 시작 주소로하여 상기 명령어 캐쉬(102)로 출력하는 역할을 한다. 여기서, 상기 BTB 제어 수단(350)에 제1 명령어 히트 신호(Hit in FA) 및 제2 명령어 히트 신호(Hit in FB)가 모두 활성화 신호를 출력한 경우 제1 명령어 히트 신호(Hit in FA)의 활성화 신호를 우선적으로 처리한다.
도 4는 첫 번째 명령어의 주소와 두 번째 명령어의 주소 관계를 나타낸 예시도로서, 이에 의하면, 명령어의 길이는 2바이트, 4바이트, 6바이트 중 하나이기 때문에, 만약 첫 번째 명령어의 주소가 n이라면, 이어지는 두 번째 명령어의 시작 주소는 n+2, n+4, n+6 중 하나가 된다. 이러한 특성을 이용하여 제1 명령어 시작 주소 및 정확한 제2 명령어 시작 주소를 통하여 BTB(101)의 동작 수행을 하는 대신에, 제1 명령어 시작 주소와, 제2 명령어 시작 주소가 될 가능성이 있는 제1 명령어 시작 주소+2, 제1 명령어 시작 주소+4, 제1 명령어 시작 주소+6을 가지고 4-웨이 BTB(201)의 동작 수행을 하게 되는데, 이 방법은 당장 정확한 제2 명령어 시작 주소를 알지 못해도 예측 단계를 수행할 수 있는 장점을 갖는다.
도 5는 본 발명의 다른 일 실시예에 의한 4-웨이 BTB(201)의 동작을 수행하기 위한 주소의 구분을 나타낸 예시도로서, 이에 의하면, 최하위 1비트는 주소가 2바이트 단위이므로 무시되고, 웨이(way) 주소는 제1 명령어 시작 주소가 몇 번째 인터리브드(interleaved) BTB 뱅크(bank)에 있는지 알려주는 역할을 한다.세트(set) 주소는 각 뱅크를 인덱싱하기 위해 사용되며, 태그(tag) 주소는 분기 명령어를 확인하기 위해 사용된다.
도 2에 따른 본 발명의 다른 실시예의 동작에 관하여 도 3, 도 4 및 도 5를 참조하여 아래에 설명한다.
4-웨이 BTB(201)에 제1 명령어 시작 주소의 두 번째 비트에서 여섯 번째 비트가 00000인 제1 명령어 시작 주소가 입력되었다고 가정하자. 그러면, 제1 명령어 시작 주소의 두 번째 비트 및 세 번째 비트가 00이므로, 선택기(312, 322 및 332)는 증분기(311, 321 및 331)에 의해 더한 값을 선택하지 않는다. 그러므로, 제1 뱅크(310)에는 명령어 시작 주소의 두 번째 비트에서 여섯 번째 비트값이 00000이 되고, 제2 뱅크(320)에는 00001, 제3 뱅크(330)에는 00010, 제4 뱅크(340)에는 00011이 된다. 즉, 최하위 비트가 있으므로, 00000이 N이라면, N+2, N+4, N+6에 대하여 분기 여부를 예측하게 되는 것이다. 만약 제1 뱅크(310)의 상기 주소 데이터 내 태그 데이터가 제1 명령어 시작 주소의 태그 데이터와 일치하고, 예측 비트 및 유효 비트가 모두 활성화되었다고 하면, 제1 앤드 게이트(315)는 활성화 신호를 출력하게 된다. 이 때, 제1 명령어 시작 주소의 두 번째 비트 및 세 번째 비트가 00이므로, 제2 앤드 게이트(316) 두 개의 활성화 입력을 받으므로 활성화 신호를 출력하고, 이 경우, 제1 명령어 시작 주소에서 분기가 일어나며, 다음 명령어 시작 주소는 제1 다음 주소 생성 블록(313) 내 타겟 분기 주소가 된다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지로 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정되는 것이 아니다.
본 발명은, BTB를 이용하여 명령어가 될 수 있는 복수개의 후보에 대한 예측을 종합함으로써, 명령어의 길이가 가변적인 경우, 첫 번째 명령어의 위치는 정해져 있으나 두 번째 명령어의 위치는 알기 어려우므로 첫 번째 명령어에 대한 분기 예측만을 수행하게 되어 분기 예측의 적중률이 저하되는 문제점을 해결하는 이점이 있다.

Claims (7)

  1. 삭제
  2. 제1 명령어 시작 주소 및 제1 명령어의 길이를 입력받아 인터리빙 작업을 통하여 예측된 다음 명령어 시작 주소를 생성하여 출력하는 BTB;
    상기 BTB에서 상기 다음 명령어 시작 주소를 입력받고, 상기 다음 명령어 시작 주소에 따라 명령어 하프워드를 출력하는 명령어 캐쉬;
    상기 명령어 캐쉬에서 상기 명령어 하프워드를 입력받고, 상기 명령어 하프워드를 분석하여 제1 명령어의 길이, 제2 명령어의 시작 주소, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 생성하고, 상기 제1 명령어의 길이를 상기 BTB로 출력하는 제2 명령어 길이 계산 모듈;
    상기 제2 명령어 길이 계산 모듈에서 상기 제1 명령어의 길이, 제2 명령어의 길이, 제1 명령어 및 제2 명령어를 입력받고, 디코딩을 수행하여 제1 명령 및 제2 명령을 생성하여 출력하는 명령어 디코더;
    상기 명령어 디코더에서 상기 제1 명령 및 상기 제2 명령을 입력받고, 상기 제1 명령 및 상기 제2 명령에 따른 명령을 수행하며, 그 수행에 따른 결과를 출력하는 기능 유닛;
    상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 저장하는 레지스터 화일; 및
    상기 기능 유닛에서 수행 결과를 입력받고, 상기 수행 결과를 분석하여 상기 BTB에서 예측한 결과와 같은지를 비교하는 검사 수단
    을 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
  3. 제2항에 있어서, 상기 BTB는,
    웨이(way) 주소를 00으로 하고, 상기 웨이 주소를 제외한 상기 제1 명령어 시작 주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호를 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트 - n은 자연수 - 를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호를 출력하는 제1 뱅크;
    웨이 주소를 01로 하고, 상기 웨이 주소를 제외한 상기 제1 명령어 시작 주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호를 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호를 출력하는 제2 뱅크;
    웨이 주소를 10으로 하고, 상기 웨이 주소를 제외한 상기 제1 명령어 시작 주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호를 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호를 출력하는 제3 뱅크;
    웨이 주소를 11로 하고, 상기 웨이 주소를 제외한 상기 제1 명령어 시작 주소의 값을 입력받으며, 상기 제1 명령어 시작 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제1 명령어 히트 신호를 출력하고, 상기 제1 명령어 시작 주소에 16×n 비트를 더한 주소에 의한 예측의 경우, 다음 명령어 시작 주소 및 제2 명령어 히트 신호를 출력하는 제4 뱅크; 및
    상기 제1 뱅크, 상기 제2 뱅크, 상기 제3 뱅크 및 상기 제4 뱅크로부터 제1 명령어 히트 신호 및 제2 명령어 히트 신호를 입력받고, 상기 복수개의 신호 중 활성화 신호가 감지되면, 활성화 신호를 출력한 뱅크에 제어 신호를 보내어 타겟 분기 주소를 입력받으며, 상기 타겟 분기 주소를 다음 명령어 시작 주소로하여 상기 명령어 캐쉬로 출력하는 BTB 제어 수단
    을 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
  4. 제3항에 있어서, 제1 뱅크는,
    상기 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 출력하는 제1 증분기;
    상기 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 0보다 큰 경우에는 상기 제1 증분기에서 입력된 값을 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 0과 같은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 출력하는 제1 선택기;
    웨이 주소로 00을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하는 제1 다음 주소 생성 블록;
    상기 제1 다음 주소 생성 블록에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 출력하는 제1 비교기;
    상기 제1 다음 주소 생성 블록으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제1 비교기에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제1 앤드 게이트;
    상기 제1 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 0인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제2 앤드 게이트;
    상기 제1 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈에서 입력받은 제1 명령어의 길이 값을 더한 값이 0인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제3 앤드 게이트
    를 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
  5. 제3항에 있어서, 제2 뱅크는,
    상기 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 출력하는 제2 증분기;
    상기 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 1보다 큰 경우에는 상기 제2 증분기에서 입력된 값을 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 1과 같거나 작은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 출력하는 제2 선택기;
    웨이 주소로 01을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하는 제2 다음 주소 생성 블록;
    상기 제2 다음 주소 생성 블록에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 출력하는 제2 비교기;
    상기 제2 다음 주소 생성 블록으로부터 상기 예측 비트 및 상기 유효 비트를 입력받고, 상기 제2 비교기에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제4 앤드 게이트;
    상기 제4 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 1인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제5 앤드 게이트;
    상기 제4 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈에서 입력받은 제1 명령어의 길이 값을 더한 값이 1인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제6 앤드 게이트
    를 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
  6. 제3항에 있어서, 제3 뱅크는,
    상기 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트까지 입력받아 1을 더한 후 출력하는 제3 증분기;
    상기 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 2보다 큰 경우에는 상기 제3 증분기에서 입력된 값을 출력하고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 2와 같거나 작은 경우에는 제1 명령어 시작주소의 네 번째 비트부터 여섯 번째 비트를 출력하는 제3 선택기;
    웨이 주소로 10을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하는 제3 다음 주소 생성 블록;
    상기 제3 다음 주소 생성 블록에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 출력하는 제3 비교기;
    상기 제3 다음 주소 생성 블록으로부터 상기 예측 비트 및 상기 유효 비트를입력받고, 상기 제3 비교기에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제7 앤드 게이트;
    상기 제7 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 2인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제8 앤드 게이트;
    상기 제7 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈에서 입력받은 제1 명령어의 길이 값을 더한 값이 2인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제9 앤드 게이트
    를 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
  7. 제3항에 있어서, 제4 뱅크는,
    웨이 주소로 11을 갖는 주소 데이터, 예측 비트, 유효 비트 및 타겟 분기 주소를 저장하는 제4 다음 주소 생성 블록;
    상기 제4 다음 주소 생성 블록에서 출력한 상기 주소 데이터 내 태그 데이터와 제1 명령어 시작주소의 일곱 번째 비트부터 서른두 번째 비트까지를 비교하여 둘이 일치하면, 활성화 신호를 출력하는 제4 비교기;
    상기 제4 다음 주소 생성 블록으로부터 상기 예측 비트 및 상기 유효 비트를입력받고, 상기 제4 비교기에서 출력한 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제10 앤드 게이트;
    상기 제10 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트가 가리키는 값이 3인 경우에 활성화되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제11 앤드 게이트;
    상기 제10 앤드 게이트에서 신호를 입력받고, 제1 명령어 시작주소의 두 번째 비트 및 세 번째 비트에 상기 제2 명령어 길이 계산 모듈에서 입력받은 제1 명령어의 길이 값을 더한 값이 3인 경우에 활성화 되는 신호를 입력받으며, 입력된 신호를 가지고 AND 연산을 행한 후 결과값을 출력하는 제12 앤드 게이트
    를 포함하는 것을 특징으로 하는 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의 분기 예측 장치.
KR10-2002-0016957A 2002-03-28 2002-03-28 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치 KR100468618B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0016957A KR100468618B1 (ko) 2002-03-28 2002-03-28 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0016957A KR100468618B1 (ko) 2002-03-28 2002-03-28 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치

Publications (2)

Publication Number Publication Date
KR20030078125A KR20030078125A (ko) 2003-10-08
KR100468618B1 true KR100468618B1 (ko) 2005-01-31

Family

ID=32376950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0016957A KR100468618B1 (ko) 2002-03-28 2002-03-28 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치

Country Status (1)

Country Link
KR (1) KR100468618B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100761831B1 (ko) * 2005-07-07 2007-09-28 삼성전자주식회사 가변길이 명령어 인출을 위한 그래픽 처리장치 및 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07210383A (ja) * 1994-01-04 1995-08-11 Intel Corp 分岐命令予測機構及び予測方法
US5606676A (en) * 1992-07-31 1997-02-25 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
KR19980034443A (ko) * 1996-11-06 1998-08-05 김영환 슈퍼 스칼라 마이크로 프로세서의 효율적인 비티비(btb) 방법
KR19980084635A (ko) * 1997-05-23 1998-12-05 김영환 분기 예측 방법
US5948100A (en) * 1997-03-18 1999-09-07 Industrial Technology Research Institute Branch prediction and fetch mechanism for variable length instruction, superscalar pipelined processor
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606676A (en) * 1992-07-31 1997-02-25 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
JPH07210383A (ja) * 1994-01-04 1995-08-11 Intel Corp 分岐命令予測機構及び予測方法
KR19980034443A (ko) * 1996-11-06 1998-08-05 김영환 슈퍼 스칼라 마이크로 프로세서의 효율적인 비티비(btb) 방법
US5948100A (en) * 1997-03-18 1999-09-07 Industrial Technology Research Institute Branch prediction and fetch mechanism for variable length instruction, superscalar pipelined processor
KR19980084635A (ko) * 1997-05-23 1998-12-05 김영환 분기 예측 방법
US6263427B1 (en) * 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Proceedings of 28th Annual International Symposium on Microarchitecture, 1995.12.01., B.Calder et.al., "A system level perspective on branch architecture performance", pp.199-206 *

Also Published As

Publication number Publication date
KR20030078125A (ko) 2003-10-08

Similar Documents

Publication Publication Date Title
US10268480B2 (en) Energy-focused compiler-assisted branch prediction
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
KR100240591B1 (ko) 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
KR100464101B1 (ko) Dsp펑션을수행하도록의도된명령시퀀스들을dsp펑션식별자로변환하는dsp펑션프리프로세서를갖는cpu
US7478228B2 (en) Apparatus for generating return address predictions for implicit and explicit subroutine calls
JP6718454B2 (ja) 選択的ページミス変換プリフェッチによってプログラムメモリコントローラにおけるページ変換ミスレイテンシを隠すこと
JP2004533695A (ja) 分岐目標を予測する方法、プロセッサ、及びコンパイラ
KR20100132032A (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US20170093423A1 (en) Systems, Methods, and Apparatuses for Compression using Hardware and Software
KR19980079301A (ko) 레지스터 파일 판독을 감소시키는 벡터 프로세서 디자인
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
JPH08320788A (ja) パイプライン方式プロセッサ
US20070220235A1 (en) Instruction subgraph identification for a configurable accelerator
US6748523B1 (en) Hardware loops
KR100468618B1 (ko) 가변 길이 명령어를 갖는 수퍼스칼라 프로세서에 있어서의분기 예측 장치
US7519799B2 (en) Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US6766444B1 (en) Hardware loops
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
US6654872B1 (en) Variable length instruction alignment device and method
JPH10214188A (ja) プロセッサの命令供給方法及び装置
US20040128479A1 (en) Method and apparatus for variable length instruction parallel decoding
WO2012132214A1 (ja) プロセッサ及びその命令処理方法
US11995447B2 (en) Quick predictor override and update by a BTAC

Legal Events

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

Payment date: 20121210

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131217

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee