KR920006770B1 - 명령을 페치(fetch)하기 위한 제어 시스템 - Google Patents

명령을 페치(fetch)하기 위한 제어 시스템 Download PDF

Info

Publication number
KR920006770B1
KR920006770B1 KR1019890019693A KR890019693A KR920006770B1 KR 920006770 B1 KR920006770 B1 KR 920006770B1 KR 1019890019693 A KR1019890019693 A KR 1019890019693A KR 890019693 A KR890019693 A KR 890019693A KR 920006770 B1 KR920006770 B1 KR 920006770B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
determination
determining
instructions
Prior art date
Application number
KR1019890019693A
Other languages
English (en)
Other versions
KR900010552A (ko
Inventor
쓰요시 모리
세이찌 오까다
Original Assignee
후지쓰 가부시끼가이샤
야마모또 다꾸마
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쓰 가부시끼가이샤, 야마모또 다꾸마 filed Critical 후지쓰 가부시끼가이샤
Publication of KR900010552A publication Critical patent/KR900010552A/ko
Application granted granted Critical
Publication of KR920006770B1 publication Critical patent/KR920006770B1/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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

내용 없음.

Description

명령을 페치(fetch)하기 위한 제어 시스템
제1도는 하나의 사이클 파이프라인(pipeline)에서의 브랜치(branch)명령의 실행을 설명하기 위한 도.
제2도는 명령 프리페치(prefetch) 파이프라인을 설명하기 위한 도.
제3도는 브랜치 타겟(target)명령이 시작될 때 타겟측 위의 명령 페치가 수행되지 않는 예(번호 1)를 나타내는 도.
제4도는 타겟측 위의 명령 페치가 발생되지 않는 예(번호2)를 설명하고, 브랜치 타겟 명령이 시작되는 것을 나타내는 도.
제5도는 하나의 사이클 파이프라인에서의 무(無)-조건 브랜치 명령의 실행을 설명하기 위한도.
제6도는 본 발명의 실시예를 나타내는 블록도.
제7도는 범용 명령이 본 발명의 실시예로 실행되는 경우를 설명하기 위한 도.
제8도는 조건 브랜치 명령이 본 발명의 실시예로 실행되는 경우를 설명하기 위한 도.
제9도는 무-조건 브랜치 명령이 본 발명의 실시예로 실행되는 경우를 설명하기 위한 도.
제10a도, 제10b도 및 제10c도는 브랜치 판정회로 5의 구체적인 회로도.
제11도는 브랜치 조건 선택회로 구조의 예를 나타내는 도.
제12도는 브랜치 조건 선택회로의 진리표.
제13도는 브랜치 예측 사이클을 설명하기 위한 도.
본 발명은 브랜치 명령이 하나의 사이클 파이프라인 시스템을 사용하는 컴퓨터 시스템에서 실행될 때 브랜치 타겟 명령을 따르는 명령 그룹을 페치하기 위한 제어 시스템에 관한 것으로, 특히, 조건판정이, 브랜치 명령이 실행되는 조건 판정 사이클에 선행하는 사이클에서 실행될 수 있는지의 여부를 판정하므로써 선(先) 브랜치 판정을 실행하기 위한 명령 페칭 제어 시스템에 관한 것이다.
제1도는 종래의 하나의-사이클 파이프라인 시스템에서 브랜치 명령의 실행을 설명하기 위한 도이다. 도면의 꼭대기에 있는 번호들(1) 내지 (12)는 기계 사이클의 타이밍을 각각 나타내고, 각 명령들의 부호들 D, A, T, B, E 및 W는 파이프라인 제어에서 처리상태(지금부터는 "사이클"또는 단(stage)이라 칭함)를 각각 나타낸다.
D는 처리되어야 할 명령을 디코드하기 위한 디코딩 사이클을 나타낸다. A는 브랜치 타겟 명령을 페치하기 위하여 어드레스 계산을 실행하기 위한 어드레스 계산 사이클이다. T는 논리 사이클을 리얼(real)사이클로 변환하기 위한 어드레스 변환 사이클이고, B는 브랜치 타겟 명령을 페치하기 위한 사이클이며, E는 브랜치 조건이 성공할 것인지 또는 그렇지 않은지의 여부에 대한 판정을 실행하기 위한 브랜치 판정 사이클이고, W는 산술동작 결과를 저장하기 위한 사이클이다. 이 사이클들은 모두 알려져 있다.
파이프라인 시스템에서, 실행되어야 할 명령은 프리페치된다. 또한 실행된 명령의 프리페치는 파이프라인방식으로 실행된다. 제1도의 아래부분에 있는 명령의 프리페치 파이프라인의 부호 IA, IT 및 IB에 대한 주기는 브랜치 명령을 따르는 명령을 프리페치하기 위한 처리 사이클들을 나타내고, IA*, IT*및 IB*는 브랜치 타겟 명령을 따르는 명령을 프리페치하기 위한 처리 사이클을 나타낸다. 예를들면, 처리 IPP에 도시된 명령 프리페치 파이프라인 버퍼로부터 데이터를 페치하기 위한 어드레스 계산 사이클 IA, 어드레스 변환 사이클 IT 및 사이클 IB는 브랜치 명령
Figure kpo00001
의 브랜치가 성공하지 못하는 경우 페치명령
Figure kpo00002
+3을 페치하기 위한 것이다.
제1도에서, 제1도의 아래부분에 도시된 부호들 "Next"는 프리페치 되어야 할 명령의 종류를 나타낸다. 이 부호들은 브랜치 명령을 따르는 명령(이 부분의 "Next"이라 칭함)이 프리페치되는 것을 나타낸다. "Target"은 브랜치 타겟 명령을 따르는 명령(이 부분의 "Target"이라 칭함)이 프리페치되는 것을 나타내고 "Next"는 브랜치 명령을 따르는 명령이 프리페치되는 경우와 페치되지 않은 명령이 선택되지 않은 경우를 나타낸다.
브랜치 명령
Figure kpo00003
가 제1도에 도시된 예에서 첫번째로 실행되고 브랜치 명령
Figure kpo00004
를 따르는 명령 세트들
Figure kpo00005
,
Figure kpo00006
+2, 및
Figure kpo00007
+3은 다음에 바로 실행된다. 브랜치 조건이 타이밍 단계(5)에 있는 브랜치 명령
Figure kpo00008
의 브랜치 판정 사이클(E 상태)에서 이루어지고 브랜치 타겟 명령
Figure kpo00009
와 브랜치 타겟 명령을 따르는 명령 세트들
Figure kpo00010
,
Figure kpo00011
+1,
Figure kpo00012
+2,…이 실행된다. 브랜치 명령의 원타임 페치에 의하여 얻어진 브랜치 타겟 명령들의 번호
Figure kpo00013
,
Figure kpo00014
+1,
Figure kpo00015
+2가 브랜치 명령
Figure kpo00016
의 B상태가 3인 동안 수행되고, 브랜치는 브랜치 타겟
Figure kpo00017
,
Figure kpo00018
+1,
Figure kpo00019
+2의 실행이 순조롭게 시작되고 브랜치 명령
Figure kpo00020
의 E 상태동안의 브랜치 판정의 결과에 따라 수행된다.
파이프라인 시스템에서, 상술된 것으로서, 명령 프리페치가 파이프라인으로서 처리된다. 따라서, 제2도에 도시된 바와같이, 어드레스 계산 IA가 명령의 프리페치가 사실상 수행되는 단 IB에 앞선 두개의 사이클에서 행해지는 그러한 페치 어드레스를 결정할 필요가 있다. 제2도는 명령 프리페치 파이프라인을 설명하기 위한 것이다. 주기부의 부호들 IA, IT, IB 는 처리형태를 각각 나타낸다. IA는 어드레스 계산 사이클(ADRS)을 지정하고, IT는 어드레스 변환 사이클(TLB/TAG)을 나타내며는 명령 페칭 사이클(FETCH)을 나타낸다.
일반적으로, 즉, 브랜칭 명령에 제한이 없으면, 명령들 "Next 1" 과 "Next 2"의 어드레스가 명령이 사실상 페치되는 IB사이클에 두 사이클 앞선 IA사이클에서 프리페치 되어야할 필요가 있다.
파이프라인 처리는 제1도에 도시된 바와같이 수행되고 명령 프리페치는 제2도에 도시된 형태로 실행된다. 다음, 명령 프리페치가 제1도에 있는 브랜치 명령
Figure kpo00021
의 브랜치 판정 사이클(E 상태)로서 제1도에 있는 타이밍(5) 또는 다음 사이클(제1도에 있는 타이밍 (6)과 (7))에 있는 동일 사이클에서 수행되고, 브랜치 타겟 명령
Figure kpo00022
를 따르는 부분("Target") 또는 브랜치 명령
Figure kpo00023
를 따르는 부분("Next"측)에 대하여 실행되는 문제가 있다.
제3도에 도시된 바와같이, 예를들면, 브랜치 타겟 명령이 시작할 때 타겟측 명령 페치가 존재하지 않으면(번호 1), 브랜치 명령
Figure kpo00024
의 브랜치 판정 사이클(E 상태)의 브랜치 조건은 성공하고 B 상태(제3도의 타이밍(4)) 동안에 발생하는 브랜치 타겟의 기계 명령
Figure kpo00025
는 페치되며, 다음 타겟 명령
Figure kpo00026
가 타이밍(5)동안 실행될 수 있으나 타겟측의 이 시간의 명령
Figure kpo00027
+1은 아직 페치되지 않는다. 따라서, 명령
Figure kpo00028
+1의 실행은 타이밍(6)동안에는 시작하지 못한다.
이 문제점을 해결하기 위하여, 브랜치 타겟 명령
Figure kpo00029
와 브랜치 명령
Figure kpo00030
의 B 상태에서 브랜치 타겟 명령을 따르는 명령들
Figure kpo00031
+1,
Figure kpo00032
+2,…을 페치하기 위한 수단이 고려된다. 이 경우에, 하나의 페치동작에 의하여 페치될 수 있는 명령의 양은 약 1내지 2명령 길이이고, 명령의 양은 중앙처리 장치(CPU)와 명령 길이를 형성하는 방법에 의존한다. 예(번호 2)에 도시된 바와같이 타겟 측 명령이 제4도에 도시된 브랜치 타겟 명령의 시작에 있어서 페치되지 않고 브랜치 타겟 명령
Figure kpo00033
Figure kpo00034
+1을 비교하는 두 개의 명령이 페치되면, 타겟측의 명령
Figure kpo00035
+2는 타이밍(5)와 (6)에서 페치되지 않는다. 그러므로, 명령
Figure kpo00036
+1은 타이밍(7)에서 실행될 수 없고 중앙처리 장치(CPU)는 페치되고 실행되어야 할 명령을 기다리는 상태로 떨어진다.
문제점을 해결하기 위하여, 예를들면, 제4도에 도시된 바와같이, 타겟측의 명령
Figure kpo00037
+2가 타이밍(6)에서 페치될 때 페치 어드레스가 적어도 타이밍(4)에서 결정되어야 할 필요가 있다. 페치 어드레스의 결정은 브랜치 명령
Figure kpo00038
의 A상태에서의 어드레스 계산의 결과를 사용한다. 따라서, 브랜치 조건이 성공할 것인지의 여부에 따라 결정되는 E사이클을 기다려야할 필요가 있다. 그러나, 타겟측 명령 페치가 구동되면, 그 후 브랜치 명령을 따르는 부분의 명령 페치에 대한 처리를 스위치하기 위하여 여분의 하드웨어츠를 추가할 필요가 있다.
즉, 브랜치 타겟 명령 어드레스가 유지되고 브랜치 타겟 명령을 따르는 명령 페치가 실행되면, 이 명령페치를 갱신하기 위한 수단, 즉, 브랜치 타겟 명열을 따르는 명령의 어드레스를 계산하기 위한 수단이 다음 측의 브랜치 명령을 따르는 명령의 어드레스 계산 수단을 독립적으로 필요로 한다.
동작 명령의 실행에 따라 갱신되는 플래그 세트(또는 조건 코드)의 값을 판정하기 위한 브랜치 조건 명령은 브랜치 명령을 나타낸다.
동작 명령의 브랜치 조건 명령 바로전에 제공되고, 플래그 세트는 동작 명령의 E 상태에서 갱신되며, 브랜치 판정은 적어도 블팬치 명령의 E 상태가 실행될때 까지는 수행되지 못한다. 이것은 동작명령의 플러그 세트의 갱신이 동작 사이클 후에 일반적으로 실행되기 때문이다.
그러나, 동작명령이 그전에 즉시 실행되지 않으면, 판정은 브랜치 명령의 원래 판정 사이클(즉, E사이클)을 기다리지 않고 수행될 수 있다.
한편, 약간의 프랜치 명령들은 어떠한 조건도 없이 브랜치 되고 이렇게 얻어진 무-조건 브랜치들은 브랜치 명령의 명령 코드를 기초로 결정된다. 예를들면, 상업적으로 이용할 수 있는 시스템에서, BAL(branch and link)명령과 BAS(branch and safe)는 어떠한 조간도 가지지 않으며 그들은 명령 코드를 기초로 판정될 수 있다. BC(branch condition)명령은 조건 브랜치 명령이지만, 명령 코드의 비트들 8 내지 11은 X'F'(16수)이고 비트들 12 내지 15는 X'O'이 아니며, 처리는 어떠한 조건도 없이 브랜치된다. 비트들 8 내지 11또는 12 내지 15가 X'O'이면 처리는 브랜치되지 않는다.
이 경우에, 처리는, 브랜치 조건이 성공했는지의 여부에 관계없이 어떠한 조건도 없이 브랜치된다. 따라서, 제어는 브랜치 명령을 따르는 명령 세트를 페치하기 위하여 효과적으로 이동될 수 있다.
이것은 버퍼 메모리 15의 명령 10이 저장되는 헤드 어드레스를 구동하기 위하여 실행된다.
본 발명의 목적은 브랜치 명령이, 브랜치가 예측될 수 있는 무-조건 브랜치 명령 또는 명령일 때, 브랜치 타겟 명령을 따르는 명령 세트를 효과적으로 프리페치하기 위한 명령 페칭 제어 시스템을 제공하기 위한 것이다.
본 발명은 명령을 실행하고 프리페치하며, 브랜치 판정 사이클에 앞선 브랜치 명령의 브랜치 타겟 명령을 프리페치하기 위한 명령 페칭 제어 시스템을 제공한다. 시스템은 상기 명령이 실행될 때 파이프라인이 브랜치 판정 사이클에 앞선 브랜치 명령내에 있는 명령 코드를 기초로 선 브랜치 판정을 실행하기 위한 수단, 조건판정이 처리 사이클에서 수행될 수 있는지의 여부를 검출하고 브랜치 판정을 실행하고 위한 수단 및 브랜치 판정 수단이 브랜치가 성공했는지를 결정할 때 브랜치 명령의 파이프라인 내에 있는 브랜치 판정 사이클을 기다리지 않고 상기 브랜치 타겟 명령을 따르는 명령 세트들의 프리페치를 시작하기 위한 수단으로 구성된다.
브랜치 명령이 실행될 때, 브랜치 판정이 파이프라인의 프랜치 조건 판정 사이클을 선행하는 사이클에서 수행될 수 있는가를 판정한다. 이것은 브랜치 명령이 실행될 때 명령 프리페칭을 실행하기 위한 것이며, 그것에 의하여 브랜치 판정이 실행된다. 만약 브랜치가 성공하면, 브랜치 타겟 명령의 디코드 시작의 다음 사이클에서 브랜치 타겟 명령을 따르는 부분의 명령이 명령 레지스터에 페치되고 명령 디코드는 파이프라인 방법으로 수행된다. 따라서, 중앙처리 장치(CPU)는 명령 페치를 기다려야하는 상태로 떨어지는 것을 방지할 수 있다.
제5도는 본 발명의 방법에 따른 하나의 파이프라인 사이클에 있는 무-조건 브랜치 명령의 실행을 설명하기 위한 도이다. 이 예에서, 브랜치 타겟 명령들
Figure kpo00039
,
Figure kpo00040
+1,
Figure kpo00041
+2는 모든 명령에 대하여 페치된다.
제5의 타이밍(2)의 단에서, 브랜치 타겟 명령
Figure kpo00042
의 어드레스 계산(제5도의 부호 a로 표시된)이 브랜치 명령
Figure kpo00043
의 A상태에서 수행된다. 다음 브랜치 판정(제5도의 부호 b로 표시된)은 브랜치가 무-조건 브랜치인지 또는 브랜치가 예측할 수 있는 것인지의 여부에 상관없이, 브랜치 명령
Figure kpo00044
의 명령코드를 기초로 행해진다. 브랜치가 성공한 것으로 판정되면, 타이밍(3)의 단에 있는 명령 프리페치 파이프라인의 처리 상태 IA*(1)의 어드레스 계산은 제5도의 부호 c로 표시된 바와같이, 브랜치 타겟 명령
Figure kpo00045
+1에 대해 실행되고, 어드레스 계산은 브랜치 타겟 명령
Figure kpo00046
+2(제5도의 부호 d로 표시된)에 대한 타이밍(4)의 단에 있는 처리 상태 IA*(2)에서 실행된다.
타이밍 단(5)에서, 타겟측의 첫번째 명령
Figure kpo00047
+1의 페치가 실행될 수 있다. 따라서, 브랜치 타겟의 헤드
Figure kpo00048
를 따르는 명령
Figure kpo00049
+1과 브랜치 타겟의 명령
Figure kpo00050
+1을 따르는 명령
Figure kpo00051
+2가 순조롭게 수행될 수 있다.
제6도는 본 발명의 실시예를 나타낸다.
제7도는 제6도에 도시된 실시예에 있는 범용 명령의 실행을 설명하기 위한 도를 나타낸다. 제8도는 브랜치가 예측될 수 없을 때 브랜치 명령의 실행을 설명하기 위한 도이다. 제9도는 브랜치 예측이 실행될 수 있을 때 브랜치 명령의 실행을 설명하기 위한 도이다.
제6도에 도시된 실시예의 1은 명령 페치에 사용된 명령 프리페치 버퍼이고, 2는 명령 레지스터, 4는 오디너리(ordinary)명령과 브랜치 판정회로 23을 사용하는 브랜치 타겟 명령을 스위칭하기 위한 선택기 5는 본 발명에 따른 명령 코드에 대한 브랜치 판정회로, 7은 어드레스를 계산하기 위한 레지스터 세트(XR, BR, D), 8은 어드레스 가산기, 9는 어드레스 가산기의 결과를 수신하기 위한 레지스터(LAR#T), 11은 파이프라인의 진행과 매치되는 브랜치 판정회로 5의 결과를 유지하기 위한 플러그들(F1과 F2), 12는 레지스터(LAR#T), 9의 값을 기초로 어드레스 변환을 실행하기 위한 어드레스 변화회로, 14는 원 타이밍만큼 이동되고 변환되지 않는 레지스터(LAR#T)의 값을 유지하기 위한 레지스터(LAR#B), 15는 버퍼 메모리, 16은 파이프라인의 진행기 매치되고 원 타이밍만큼 이동되는 레지스터(PAR#B)의 값을 유지하기 위한 레지스터(PAR#E), 18은 원 타이밍만큼 이동되는 것에 의하여 파이프라인의 진행과 매치되는 레지스터(PAR#E)의 값을 유지하기 위한 레지스터(PAR#W), 19는 버퍼 메모리 15로부터 계산 동작의 오퍼랜드를 수신하기 위한 레지스터, 20은 범용 레지스터 세트 6으로부터 산술 동작의 오퍼랜드를 수신하기 위한 레지스터, 21은 산술논리 장치 회로, 22는 동작결과를 유지하기 위한 레지스터, 23은 종래의 브랜치 판정회로, 30은 명령 프리페치 어드레스를 유지하기 위한 레지스터(LIA#A), 31은 프리페치되는 명령 길이를 선택하기 위한 선택기이다. 선택기에 가해진 입력신호들①, ② 및 ③은 아래에 설명된다.
신호①은 오디너리 명령 프리페치의 페치량을 나타낸다. 신호②는 브랜치 판정회로 5에서 브랜치를 결정하기 위한 브랜치 명령에 의하여 버퍼 15로부터 명령 프리페치 버퍼 1에 페치되는 브랜치 타겟 명령의 명령길이를 나타낸다. 신호③은 브랜치 판정회로 23에서 브랜치를 결정하기 위한 브랜치 명령에 의하여 버퍼 15로부터 명령 프리페치 버퍼 1에 페치되는 브랜치 타겟 명령의 명령길이를 나타낸다.
32는 명령 페치 어드레스의 선택기를 나타내고, 선택기 31과 동일한 방법으로 동작한다. 선택기 31의 신호들 ①,② 및 ③에 관하여, 신호 ⓐ는 오디너리 명령 프리페치에 따라 레지스터 30의 내용을 선택하고, 신호 ⓑ는 브랜치가 브랜치 판정회로 5에 의하여 결정되는 레지스터 9의 내용을 선택하며, 신호ⓒ는 브랜치가 브랜치 판정회로 23에 의하여 결정되는 레지스터 14의 내용을 선택한다.
33은 브랜치 판정회로 5또는 브랜치 판정회로 23의 결과를 기초로 선택제어 신호를 형성하기 위한 회로이다. 브랜치 판정회로 23은 브랜치 판정회로 5의 결과에 의하여 우선적으로 제어되고 동시에 브랜치를 나타낸다.
34는 어드레스 가산기, 35는 어드레스 가산기의 결과를 수신하기 위한 레지스터(LIA#T), 36은 어드레스 변환회로, 37은 어드레스 변환의 결과를 수신하기 위한 레지스터(PIA=B)이다.
50은 조건 코드를 세트하는 명령을 D사이클에서 결정하기 위한 디코더 회로이고, 51은 디코더 회로 50의 출력을 유지하기 위한 플래그, 52는 플래그 51로 부터의 출력을 유지하기 위한 플래그, 53은 플래그 52로부터의 출력을 유지하기 위한 플래그, 54는 플래그 53의 출력을 유지하기 위한 플래그, 60은 조건 코드 제조의 타이밍과 조건 코드를 사용하는 브랜치 판정을 검출하기 위한 타이밍 판정회로, 70은 조건 코드 발생 회로, 71은 조건 코드 플래그이다.
설명의 편의를 위하여, 세개의 범용 레지스터들과 6과 세개의 버퍼 메모리들 15가 제2도에 도시되어 있지만 이들은 동일한 장치이다.
본 발명의 명령 실행의 상태가 범용 명령의 경우, 브랜치 예측이 불가능한 브랜치 명령의 경우 및 브랜치 명령의 실행의 경우로 분리되어 설명된다.
더욱이, 브랜치 예측의 예들이 상기 명령에 따라 설명될 것이다.
(1)범용 명령의 실행 경우
제7도는 범용 명령이 제2도에 도시된 본 발명의 실시예로 수행되는 경우를 설명하기 위한 도를 나타낸다. 제7도에 의하면, 범용 명령의 실행, 즉, 브랜치 명령이 아닌 명령의 실행이 설명될 것이다.
이 컴퓨터의 초기 상태에서, 첫번째 실행된 명령①의 어드레스는 명령 프리페치 어드레스를 유지하기 위한 레지스터(LIA#A) 30에 세트된다. 이 어드레스 값은 제7도의 부호에 의하여 지정된 "IA"이다. 선택기31에 입력된 명령 프리페치에 페치량을 나타내는 신호①은 "0"이고 명령①이 저장되는 버퍼 메모리 15의 헤드 영역의 어드레스에 대응한다. 이 시간에, 두개의 브랜치 판정회로를 5와 23은 넌-브랜치 조건을 나타낸다.
타이밍(1)에서, 선택기31에 의하여 선택된 신호①의 값 "0"은 선택기 31에 의하여 레지스터(LIA#A) 30의 값 "IA"에 더해지고 제7도의 부호 b에 의하여 표시된 레지스터(LIA#T) 35와 레지스터(LIA#A) 30에 세트된다. 즉, 이것은 명령 ①이 저장되는 버퍼 메모리 15의 헤드 어드레스를 페치하기 위해 실행된다.
타이밍(2)에서, 레지스터(LIA#T) 35에 저장된 어드레스(IA)가 어드레스 변환회로 36에 의하여 리얼 어드레스로 변환되고 결과는 제7도의 부호 "c"로 표시된 레지스터(제7도의 부호 "PIA"로 표시된 RIA#B)에 세트된다.
이 어드레스에 의하여 페치된 명령의 양(또는 길이)이 신호①(부호 "e"로 지정된 값)에 동시에 나타나고 다음 명령 페치 어드레스의 계산은 가산기에서 수행된다. 결과(제7도의 "IA+l"로 표시된 값)가 제7도의 부호 "d"로 표시된 레지스터(LIA#T) 35와 레지스터(LIA#A) 30에 세트된다. 이 동작은 명령②가 저장되는 버퍼 메모리 15영역의 어드레스를 페치하기 위해 수행된다.
명령①, ② 및 ③이 저장되는 어드레스들 IA, IA+l 및 IA+2l에 대한 액세스가 아래에 도시된다. 명령페치 버퍼 1이 프리페치 명령 트레인(train)에 의하여 가득채워 질때까지, 이 명령 페치의 동작은 모든 사이클(또는 간격)에서 시작한다. 레지스터(LIA#A) 30과 레지스터(LIA#T) 35에 저장된 값은 IA에서 IA+2l 내지 IA+3l…내지 IA+nl로 증가된다. 레지스터(PIA#B)에 저장된 값은 동일한 방법으로 PIA+1l에서 PIA+2l…내지 PIA+nl로 증가된다. 그러므로, 버퍼 15의 어드레스로 부터 계속해서 명령을 읽음으로써 명령①이 모드 l어드레스에 저장되고, 파이프라인 동작이 실행된다.
다음, 타이밍(3)에서, 버퍼 메모리 15는 레지스터(PIA#B) 37의 값 "PIA"에 의하여 액세스되고 결과(제7도의 명령①)는 제7도의 부호 "e"로 표시된 명령 프리페치 버퍼 1에 세트된다. 이 시간에, 만약 명령 프리페치 버퍼 1이 초기 상태 때문에 비워지면, 또는 명령 프리페치 버퍼 1이 비워지지 않으면, 명령 프리페치 버퍼 1에 저장된 명령은 계속 해서 명령을 지시하고, 다음 사이클이 시작되면, 명령은 명령 레지스터 2에 세트된다.
타이밍(4)에서, 명령 레지스터(2)내의 명령①의 디코딩이 시작된다(D상태). 즉, 명령 레지스터 2의 값에 따라, 범용 레지스터(GR) 6이 액세스되고 어드레스 계산에 필요한 레지스터의 값은 레지스터 세트(XR, BR, D) 7에 세트된다.
이 실시예에서, 명령 코드의 X2 부분과 P2 부분에 의하여 지정된 레지스터 번호의 범용 레지스터의 값이 레지스터 세트(XR, BR, D) 7내의 레지스터(XR, BR)에 리드되고 명령 코드의 D2의 부분은 어떠한 변화도 없이 레지스터 세트(XR, BR, D) 7의 레지스터(D)에 세트된다. 일반적으로, 명령 레지스터 2의 어드레스는 논리 어드레스이다. 논리 어드레스를 리얼 어드레스로 변환하는 과정으로서, 베이스 어드레스는 어드레스 부분의 X2와 B2에 의하여 범용 레지스터 6으로 부터 얻어지고 어드레스 부분의 변환 D2는 어드레스 가산기 A에 의하여 그들에 더해진다.
명령의 디코딩이 완성되면, 다음 명령(제7도의 명령②)은 명령 프리페치 버퍼 1로부터 명령 레지스터 2에 세트된다.
시작되는 명령이 브랜치 명령이면, 브랜치 판정은 명령 코드 또는 파이프라인 바로 전의 상태를 기초로 브랜치 판정회로 5에 의하여 실행되고, 결과는 플래그(F1) 10에 세트된다. 명령이 브랜치 명령이 아니면, 브랜치 판정회로 5의 출력은 플래그(F1) 10(브랜치 명령의 실행은 다음에 설명될 것이다)에 의하여 세트된 "0"이다. 다음 타이밍(5)에서, 오퍼랜드 어드레스 계산은 레지스터 세트(XR, BR, D)의 값에 따라 수행된다(A상태). 즉, 레지스터(XR, BR, D)의 값이 어드레스 가산기 8에 의하여 더해지고 가산 결과 제7도의 부호 "OA①"로 표시된 값)는 레지스터(LIR#T)9에 세트된다. 다음 플래그(F1) 10의 내용이 플래그(F2) 11로 이동되고 타이밍(5)에서, 다음 명령 ②의 디코드가 시작된다(D상태).
다음 타이밍(6)에서, 레지스터(LS#T) 9의 값이(OA①)은 어드레스 변환회로 12에 의하여 변환되고, 결과(제7도의 부호 "POA①"로 표시된 값)는 레지스터(PAR#B)13에 세트된다(T상태). 또한 레지스터(LAR#T)9의 값이 레지스터 14(LAR#B)에 세트된다. 다음 타이밍(7)에서, 버퍼 메모리 15가 레지스터(PAR#D)13의 값에 따라 액세스된다(B상태). 페치 데이터가 레지스터 19에 세트된다. 범용 레지스터 세트 6은 B사이클이 시작될때까지 명령 레지스터 2의 어드레스 부분의 일부의 내용을 유지하므로써 얻어진 신호(도시되지 않았음)에 의하여 동시에 액세스되고 그 결과는 레지스터 20에 세트된다. 레지스터(PAR#B)의 값(POA①)이 (PAR#E)16에 세트된다.
다음 타이밍(8)은 동작 사이클(E상태)이고 레지스터들 19와 20값의 산술 동작회로 21의 계산에 의하여 얻어진 결과는 레지스터 22에 세트된다. 즉, 버퍼 메모리 15의 데이터는 범용 레지스터 6의 데이터에 더해진다. 레지스터(PAR#E)16의 값은 레지스터(PAR#W)18에 세트된다.
다음에 타이밍(9)에서, 기억 사이클(W상태)연산은 버퍼 메모리 15와 범용 레지스터 세트 6에서 레지스터 22의 값을 저장한다. 동시에, 레지스터(PAR#W)18의 값(POA①)은 버퍼 메모리를 액세스하기 위해 사용된다.
명령 ②는 비슷한 순서에 따라 실행된다. 따라서 범용명령이 실행된다. 버퍼메모리의 액세스와 범용 레지스터 세트의 액세스는 명령의 한정에 따라 처리되지 않는다.
(2) 브랜치 명령을 실행하는 경우, 여기서 브랜치는 예정되지 않는다. 조건 브랜치 명령("브랜치 명령"이라 칭함)의 실행은 제4도에 의거함으로써 첫째로 설명할 것이다.
브랜치 명령의 경우에서, 명령페치는 범용명령 경우에서와 같은 동일 방법으로 실행될 수 있다. 제7도의 설명에서와 같이, 브랜치 명령
Figure kpo00052
의 디코우드(D상태)는 제8도에서 타이밍(4)에서 시작된다.
이 경우에, 브랜치 판정회로 5는 명령코드를 기초로한 브랜치 판정과 종래의 파이프라인 상태 "0"(브랜치 예측이 불가능하다는 것을 지정)을 실행한다. 판정이 출력된다(제8도에 의해 부호로 도시한 것과 같음), 범용 레지스터 세트(XR, BR, D)7과 어드레스 가산기 8과 변환회로 12에 의한 어드레스 계산기 및 어드레스 변환은 제7도에 도시한 바와같이 동일한 순서로 실행된다. 즉, 타이밍(6)에서 레지스터(LAR#T)9의 값(부호"b"와 "TA
Figure kpo00053
"로 도시함)은 어드레스 변환을 받고, 그 결과(PTA
Figure kpo00054
)는 레지스터(SAR#B) 13 (제7도의 부호 "C"로 도시함)으로 세트된다.
다음 타이밍(7)에서, 즉,
Figure kpo00055
상태에서, 버퍼 메모리 15로부터 페치 데이터는 브랜치 타겟에 대한 명령으로서 제공되고, 명령 레지스터 2로 세트된다. 브랜치 판정회로 23은 B상태(타이밍7)에서 브랜치 명령
Figure kpo00056
의 브랜치 판정을 실행한다.
만약 판단결과가 넌브랜치라면, 명령 프리페치 회로에서 선택기들 31,32,명령 레지스터 2와 선택기 4는 브랜치 명령보다 다른 범용 명령의 경우에서와 같이 동일한 순서를 사용하는 오디너리 처리를 선택한다.
한편, 브랜치가 성공적일때, 선택기 4는 제8도에서 부호 d로 도시한 바와같이 브랜치 타켓 명령
Figure kpo00057
의 시작실행에 대한 명령 레지스터 2에서 세트되는 브랜치 타켓명령을 선택한다. 여기서 브랜치가 이 타이밍의 브랜치 판정의 결과로서 성공적이고, 선택기 4는 명령 레지스터 2에서 세트되는 버퍼메모리 15로부터 페치데이타를 선택한다. 여기서 브랜치가 성공적이 아니라면, 선택기 4는 명령 레지스터 2에서 세트되는 명령프리페치 버퍼 1로부터 명령을 선택한다. 명령
Figure kpo00058
,
Figure kpo00059
+1,
Figure kpo00060
+2 및
Figure kpo00061
+3의 실행은 브랜치
Figure kpo00062
의 다음의 중지를 시작하고, 유사하게 실행되는 명령 프리페치 순서는 또한 파선으로 도시한 파이프라인 처리순서로 표현되는 부분으로 도시한 것과 같이 인터럽트된다.
브랜치 판정회로 23(제8도에서 "h"로 지정된 부분으로 표시)의 "l"을 출력할때, 선택기 31은 신호 ③을 선택하고, 선택기 32는 신호
Figure kpo00063
, 즉 레지스터(LAR#B)를 선택한다. 신호 ③은 타임(7)에서 페치된 브랜치 타켓명령
Figure kpo00064
의 길이를 도시하였고, 브랜치 타켓 명령을 수행하는 명령(
Figure kpo00065
+1)의 어드레스가 출력된다.
어드레스는 제8도에서 부호 e로 지정된 어드레스 "TA+l"의 레지스터(LAI#T)35에서 세트된다. 이 어드레스에 다른 명령페치는 타이밍(9)(제8도의 심볼 "f"로 지정된 부분으로 도시함)에서 실행된다. 그러나 (
Figure kpo00066
+1)의 디코우딩은 타이밍(10)(제8도에서 부호 "g"로 지정된 부분으로 도시함)에서 시작된다. 즉, 시작되지 않는 명령인 원사이클은 브랜치 타켓명령
Figure kpo00067
의 디코우드 시작사이클의 타이밍(8)과 다음의 명령(
Figure kpo00068
+1)의 디코우드 시작시이클의 타이밍(10)사이에서 야기된다. 그것에 의해서 파이프라인 연산을 방지한다. 브랜치가 예측되지 않는 브랜치 명령을 실행하는 경우에 본 실시예의 연산은 종래의 그것과 같다. 만약 이것이 향상되지 않는다면, 브랜치측과 오디너리 측 사이에서 명령의 선택은 변화되는 것이 요구되므로, 그것은 어드레스 가산기 34전에 발생하지 않는 경우가 아니고 어드레스 변환회로 34전에 즉시 또는 버퍼 메모리 15 액세스 전에 즉시 발생한다. 그러나 이 변화를 성취하기 위하여, 한쌍의 어드레스-가산기 또는 한쌍의 어드레스-변환회로들이 필요하다. 따라서 많은 하드웨어에서 큰 증가를 요구한다. 이것은 비경제적인 장치에서의 결과다.
(3) 브랜치 명령의 실행, 여기서 브랜치가 예측됨 브랜치가 예측될 수 있는 브랜치 명령의 실행의 경우는 제9도에 의거함으로써 설명될 것이다. 제9도에서, 제7도와 같이, 브랜치 명령
Figure kpo00069
의 명령 페치가 실행되고, 타이밍(4)에서 브랜치 명령은 "a"로 지정된 부분으로 도시한 바와같이 디코우드된다.
이 실례에서, 브랜치 판정회로 5는 명령 코드 또는 종래의 파이프 상태를 기초로 브랜치 판정을 실행하고, 브랜치가 성공적으로 예측될 때 "1"은 출력되고, 그렇지 않고 "0"은 제9도에서 "b"로 지정된 부분으로 도시한 바와같이 출력된다. 그러므로, 제8도에서 조건 브랜치 명령의 경우에서, 어드레스 계산기(A상태), 어드레스 변환(T상태)과 브랜치 타켓 명령 페치(B상태)가 각각의 타이밍(5), (6), (7)에서 실행된다. 타이밍(8), 즉 E상태에서, 선택기 4는 브랜치 판정회로 23의 출력(제8도에서 부호 d로 지정된 부분으로 도시함)으로 브랜치 타켓 명령을 선택한다. 그러므로, 브랜치 타켓 명령
Figure kpo00070
의 디코우드는 시작된다(제8도에서 부호 C로 지정된 부분으로 도시함)
브랜치 판단은 브랜치 명령
Figure kpo00071
의 D사이클로 실행된다. 브랜치 명령
Figure kpo00072
Figure kpo00073
사이클일 때 브랜치 판정회로 5는 "1"을 출력한다. 그러므로 출력은 신호 ②를 선택한다. 출력은 플래그 10과 11을 통하여 전송되고, 타이밍(6)에 선택기 31은 신호 ②를 선택하고, 선택기 32는 신호 ⓑ, 즉 레지스터(LAR#P)와 (LAR#P)9를 선택한다.
신호 ②는 타이밍(7)(제9도에서 신호 "l"로 표시된 값)에서 페치가 되는 기대인 브랜치 타켓 명령의 길이를 지정하는 신호고, 어드레스 가산기 34의 레지스터(LAR#T)9의 내용에(제9도에서 부호 "TA
Figure kpo00074
"로 지정된 값)을 더한다. 따라서, 명령의 어드레스(TA+l)은 가산기 34의 출력에서 나타난다.
어드레스는 제9도에서 부호"e"로 지정된 어드레스(TA+l)로 도시한 바와같이 레지스터(LIA#T)를 세트한다. 이 어드레스를 사용하는 명령 페치는 제9도에서 부호 "f"로 지정된 부분으로 도시한 바와같이 타이밍(8)에서 실행된다. 그러므로 명령(
Figure kpo00075
+1)의 디코우드는 제9부도에서 부호 d로 지정된 부분으로 도시한 바와같이 타이밍(9)에서 시작한다.
그러므로, 브랜치 명령을 실행할 때, 여기서 브랜치가 예측될 수 있고, 쓸데없는 시간은 브랜치 타켓 명령과 다음의 명령 사이에서 발생하지 않는다.
타이밍(7)에서, 브랜치 판정회로 23은 선택기 회로 33에 대한 브랜치의 성공을 지정하기 위한 신호를 전송한다. 이 판정의 결과와 같이 선택기 31과 32는 조건 브랜치의 동일한 방법으로 스위치된다. 명령의 명령패치는 다시 시작하는 브랜치 타켓 명령을 수행한다. 따라서 브랜치 타켓명령을 수행하는 명령의 명령페치는 다시 시작으로부터 방지된다. 이것을 방지하기 위해, 만약 출력 "1"에 대한 브랜치 판정회로 5를 인에이블하는 브랜치 명령이 브랜치 타켓명령을 수행하는 부분의 명령페치를 활성화한다. 그것은 브렌치 판정에 의해 활성화되는 것으로부터 명령 페치를 방지에 대한 선택기 33이 더 필요하다. 그러나, 여기서 브랜치는 상기 상태와 다른 이유 때문에 브랜치 판정회로 23과 브랜치 판정회로 5에서 동시에 성공적이고, 브랜치 판정회로 23의 조건이 우선적이다. 이것은 브랜치 판정회로 5에 의해 판정되는 종래의 명령으로 실행되는 브랜치 판정회로 23에 의해 판정되는 명령 때문이고, 본 브랜치 명령의 성공적인 경우에, 다음의 브랜치 명령은 실행될 수 없다.
제10a도는 브랜 판정회로 5의 주체적인 회로 소자를 도시하였다. 디코우드 명령 레지스터 2의 출력은 디코우드 80에 의해 디코우드되고, 디코우드 80은 명령이 조건 브랜치 또는 무조건 브랜치인지를 검출하는 명령을 디코우드한다. 더욱이, 게이트 82는 조건코드, 게이트 82'를 갱신하지 않는 브랜치 명령의 진행단계로부터 계속되는 방법으로 전송되는 다수의 명령을 결정하고, 범용 레지스터의 내용을 갱신하지 않는 브랜치 명령의 진행단계로부터 계속되는 방법으로 전송되는 다수의 명령을 결정한다. AND 게이트 82의 출력은 AND 게이트 83을 통하여 AND 게이트 84에 연결된다. 결과와 같이, 무조건 브랜치의 경우에, 또는 조건 브랜치의 경우에서 예측될 수 있는 명령의 경우에 브랜치 회로 5의; 출력은 "1"로 변한다. 타이밍 판정회로 60에서 AND 게이트 82는 플래그들 51, 52, 53 및 54가 "0"에 대한 타이밍으로 결정된다. 즉, AND 게이트 82는 조건 코드를 갱신하지 않는 브랜치 명령을 즉시 진행하는 다수의 예를들면, 4개의 연속명령을 검출한다.
타이밍 60'의 AND 게이트 82'는 파이프라인으로 A, T, B, E와 W사이클들의 각 타이밍에 대응하는 플래그들 51' 내지 55'로 부호 신호를 수신한다. AND 회로 82'의 출력은 AND 회로 83'의 입력에 연결된다. 타이밍회로 60'의 AND 게이트 82'는 "0"에 대한 타이밍인 모든 플래그들 51', 52', 53', 54'와 55'를 결정한다. 즉, AND 게이트 82'는 A, T, B, E와 W사이클들의 타이밍에 대한 범용 레지스터의 내용을 갱신하지 않는 브랜치 명령을 즉시 진행하는 다수의, 예를들면, 4개의 연속명령을 검출한다. 회로 83은 조건 브랜치가 성공적이고, 타이밍 판정회로 60의 출력이 "1"로 되는 것을 판정한다. 판정회로 8은 조건 코드 플래그 71과 명령 레지스터 2사이에서의 특정관계가 확정되는 것을 결정 한다. 이 경우에, AND 회로 84의 회로는 "1"로 되고, 명령은 예측될 수 있는 브랜치 명령으로 결정된다. 양자택일로, 디코우더 80은 범용레지스터 6에 저장된 값을 기초로 만든 브랜치명령의 판정을 결정한다.
예를들면, 카운터 브랜치명령인 명령을 결정하고, AND 게이트 82'는 상기 언급한 바와같이 범용 레지스터 위에 올것 6의 내용을 갱신하지 않는 연속명령을 즉시 진행하는 다수의 예를들면 4개를 결정한다. 체킹회로81'는 6진수의 "0000 0001"이 아닌 범용레지스터 6의 값을 검출한다. 즉, 브랜치는 범용 레지스터 6의 값 "1"과 다르기 때문에 성공적이다. 그러므로, AND 회로 84'의 출력은 "1"로 되고, 명령은 예측할 수 있는 브랜치 명령으로서 결정된다. 그러므로, 무조건 브랜치가 성공적일 때 또는 AND 회로들 84 또는 84'의 출력이 "1"일때, OR회로 85는 출력"1"을 처리하고, 브랜치 판정회로 5의 출력은 "1"로서 결정된다. 그러므로, 본래의 브랜치 판정 단계에 대해 종래에 실행되는 브랜치 판정에 대해 가능하게 된다. 명령레지스터 2와 조건 코드의 출력이 특정관계에 있고, 판정회로 81의 논리가 각각의 CPU들에 의한 명령한정을 일반적으로 받을 때, 판정회로 81은 브랜치 명령(명령 레지스터 2의 출력으로 나타남)내의 형성을 기초로 브랜치 판정과 조건코드(산술 연산회로 21의 연산 결과가 조건코드 발생회로 70을 통하여 조건코드 플래그 71로부터 출력될 때 얻어진다)를 실행한다.
그러므로, 제10b도에 도시한 바와같이, 판정회로 81은 브랜치가 판정회로 81의 데이터회로, 조건코드, 명령코드의 결합을 기초로 브랜치 명령의 결과로서 성공적일 때 판정 플래그(비트)를 출력한다.
명령코드, 조건코드의 결합과 판정회로 81의 데이터 회로를 기초로 브랜치 명령의 결과로 성공적이다. 이 조건은 4비트들 M1, M2, M3와 M4, 예를들면, 조건코드 플래그 71로부터 조건코드 C1과 C2로부터 전송된 패턴과 브랜치 명령에 대한 명령 레지스터 2의 마스크 필드를 포함하는 결합으로 성공적이다. 예를들면, M4가 1이고, C1과 C2가 (1, 1)일 때 AND 회로들 90과 91의 출력은 "1"이다.
그것에 의해서 OR회로 92를 통하여 출력 A를 "1"로 실행한다. 유사하게, C1=0이고 C2=1, M2=1; 또는 C1=0, C2=0이고 M1=1일 때 OR회로 92의 A출력은 "1"이다. 타이밍 판정회로 60의 출력이 1일때 동시에 출력 A는 "1"이고 회로 5의 출력은 "1"이 된다. 그러므로 조건브랜치의 경우에 처리는 조건 브랜치명령의 어드레스 부분으로 지정된 어드레스로 브랜치 될 수 있고, 브랜치는 예측될 수 있다.
디코우더 80이 후에 설명될 것과 카운트 브랜치 명령인 명령을 결정할 때 사용되는 판정회로 81'의 상세한 회로를 제10c도에 도시하였다.
다음, 제11도에 도시한 선택기 33의 예기 설명된다. 제11도에서, 번호 40과 41은 플래그들(F2a 와 F2b)을 나타내고, 번호 42는 AND 게이트를 나타내고, 번호 43은 OR 게이트를 나타낸다. 제11도에 도시한 브랜치 판정회로의 선택기 33에서, 제6도에서 플래그 11은 플래그(F2a)40과 플래그(F2b)41로 더 나누어지고, 브랜치 명령이 "B상태"일 때 플래그 40에서 세트되고 브랜치 명령이 파이프라인 연산의 진척에 따라 "E상태"일 때 플래그 41에서 세트로 제어된다. 제6도에 도시한 선택기들 31과 32의 선택신호는 제12도에 도시한 실시값 테이블에 따라 산출된다.
(4) 25브랜치를 예측하는 방법의 예들 (a) 명령 코드에 의한, 명령을 기초로 브랜치 판정을 형성할 수 있는 명령은 브랜치 명령중에 존재한다. 이 판정은 상기 상태로서 무조건 브랜치 명령을 검출할 수 있고, 무조건 넌 브랜치 명령을 검출한다. 여기서 무조건 넌 브랜치 명령은 명령세트에 포함된다.
(b) 플래그 세트의 세트 사이클과 브랜치 예측 사이클 사이의 관계에 의해서, 이것은 본래의 브랜치 사이클에 대한 브랜치 명령의 브랜치 예측 사이클로부터 변하하지 않는 브랜치 판정에 대해 사용된 정보를 구성하는 산술 동작의 결과에 의해 세트되는 플래그 세트의 값을 검출함으로써 실행된다. 브랜치 판정은 플래그 세트의 값을 기초로 실행할 수 있다.
이것은 플래그 세트의 값이 변하지 않는 검출이 필요하다.
제13도에서, 브랜치 명령
Figure kpo00076
의 브랜치 예측 사이클의 D상태가 실행되는 타이밍(6)에서 플래그 세트의 새로운 값은 연산 명령 1의 E상태에 의해 새롭게 된 값이다.
따라서 그것은 명령 2 내지 5의 플래그 세트가 새롭게 되지않는 명령인지를 체크한다. 만약 그것들이 브랜치 명령
Figure kpo00077
의 오디너리 브랜치 판정 사이클이라면, 타이밍(6)에서 플래그 세트의 값은 타이밍(10)에서와 같은 동일한 값이다.
그러므로, 브랜치 판정이 타이밍(6)에서 실행될 수 있다. 만약 명령 2 내지 5가 플래그 세트들을 갱신하기 위한 명령이라면, 브랜치 판정은 타이밍(6)에서 실행될 수 없고, 오디너리 브랜치 판정 사이클인 타이밍(10)에서 실행된다. 브랜치 판정은 조건 코드의 실행에서 타이밍을 검출하기 위한 타이밍 판정회로 60(제6도에 도시함)를 사용한다.
제13도에서, 명령 1은 조건 코드(플래그)를 갱신하기 위한 것인 반면 명령 2, 3, 4와 5는 아니다. 명령 1의 D사이클에서, 조건 코드의 세팅은 플래그 51에서 세트되는 디코우더 50에 의해 디코우드 된다. 그 값은 명령 1의 실행에 따라 플래드들 52, 53, 54와 54에서 순서적으로 세트된다.
한편, 명령 2, 3, 4 및 5는 플래그 51에서 결과의 상태로 세트되는 것으로부터 조건 코드들을 검출하기 위한 명령으로서 D사이클에서 각각 디코우드 된다.
결과와 같이, 타이밍(6)에서 그것은 명령
Figure kpo00078
의 첫번째 브랜치 판정 사이클이고, 조건코드는 명령 1에 대해 세트, 즉 갱신의 존재가 플래그 55에서 세트된다. 그러나, 플래그 54는 세트되므로 2는 조건코드를 갱신하지 않고, 플래그 53이 세트되므로 명령 3은 조건코드를 갱신하지 않고, 플래그 52가 세트되므로 명령 2는 조건 코드를 갱신하지 않고, 플래그 51이 세트되므로 명령 5는 조건 코드를 갱신하지 않는다.
타이밍 판정 회로 60은 브랜치 판정이 브랜치 명령 B에 의한 D사이클의 조건 코드를 기초로 실행될 수 있는지, 상기 플래그의 값을 고려하는지를 판단한다. 즉, 플래그들 51, 52, 53과 54는 조건코드가 갱신되지 않는 것을 도시하였고, 브랜치 명령 13는 제10a도와 10b도에 도시한 바와같이 브랜치 판정 회로 5를 사용하는 D싸이클에서 조건 코드를 기초로 브랜치 판정을 실행할 수 있다. 역으로 조건 코드의 갱신은 타이밍(6), 즉, 브랜치 명령 B의 D사이클 후에 발행한다. 예를들면 플래그 52가 갱신을 지시할 때, 명령 4는 E사이클에서 타이밍(8)의 갱신을 실행한다. 브랜치 판정은 타이밍(6)에서 조건코드를 사용함으로써 실행될 수 없다.
(c) 카운터 브랜치 명령에 의한 브랜치 예측을 기초로 한, 결과가 O과 다르고, 하이클라스 명령에 대한 두-루프를 형성하기 위해 사용될때, 카운터 브랜치 명령은 지정된 범용 레지스터의 값의 뺄셈을 실행하고, 브랜치가 성공적이다. 즉, 두-루프는 범용 레지스터 6과 산술논리장치에 의해 형성된 카운터의 내용이 "0" 될때까지 반복된다. 그것에 의해서 두-루프의 헤드 어드레스에 대한 브랜치를 반복적으로 실행한다. 카운터의 값이 "0"일 때, 두-루프는 완성되고 처리는 두-루프의 마지막 어드레스를 수행하는 어드레스에 대해 처리된다. 그러므로, 카운터 브랜치 명령의 경우에, 본 발명은 카운터 브랜치 명령의 브랜치 타켓 명령을 수행하는 명령을 프리페치하는 것이 가능한 그것을 만든다. 그것에 의해서 고속으로 실행되는 두-루프를 인에블링 한다.
브랜치 명령의 형태에서, 뺄셈한 값은 일반적으로 "1"이다. 따라서 브랜치는 성공적이고, 여기서 출력(범용 레지스터로부터)되는 값은 "1"이상이다.
제10c도는 브랜치 판정이 범용레지스터 6의 내용을 기초로 실행되는지 않되는지를 체크한다. 브랜치 사이클에서, 범용 레지스터 6에 저장된 값은 브랜치 판정회로 5에 대한 라인 5'(제6도에 도시함)를 통하여 판독된다. 그리고 그것은 값이 "1"인지 아닌지를 체크한다. 즉, 카운터 브랜치 명령에서, 범용 레지스터 6의 내용은 추출된다. 추출의 결과가 32비트 버퍼 레지스터 6의 경우에 6진수의 "0000 0001"이 아닌 것을 판정회로 81'(제10a도에 도시했음)에서 AND 회로 93에 의해 검출될 때, 판정회로 81'의 NAND 94는 AND 회로 84'에 공급되는 "1"을 출력한다. 그러므로 이 경우에 브랜치 판정회로 5는 범용 레지스터 6의 내용을 기초로 예측될 수 있는 브랜치 판정을 실행한다. 그러나, 이 경우에 본래의 판정단계에 대한 브랜치 예측 단계로부터 변화지 않는 범용 레지스터의 값을 검출하는 것이 필요하다. 언급한 바와 같이, 이 판정은 회로 50' ; 플래그들 51', 52', 53', 54'와 55'; 디코우더 50과 동일한 방법으로 제6도에서 점선으로 도시한 AND 회로 60'; 플래그들 51 내지 54 ; AND 회로 60에 의해 실행될 수 있다. 제10b도에서, AND 회로 86은 파이프라인에서 A, T, B, E와 W사이클들의 각각의 타이밍에 대응하는 플래그 51'로부터 55'로 신호를 수신한다.
본 발명에 따라 브랜치 명령을 실행할 때, 여기서 브랜치가 예측될 수 있을때, 브랜치 타켓 명령을 수행하는 명령의 실행이 대기를 유지하는 것이 가능하다. 실행되는 명령의 번호에 대해 무조건 명령 2의 번호의 비율에 좌우될지라도, 브랜치 명령의 가능성은 하이이고, 모든 능력이 크게 증가한다.

Claims (13)

  1. 브랜치 명령이 브랜치 판정을 실행하기 위하여 실행될때 파이프라인 시스템에서 브랜치 판정 단계에 대한 종래의 단계로 실행되는 조건 판정을 검출하기 위한 첫번째 브랜치 판정수단과, 상기 파이프라인 시스템에서 브랜치 명령의 브랜치 판정단계에 대한 기대없이 브랜치 타켓 명령을 수행하는 명령의 프리페치를 시작하기 위한 수단, 여기서 상기 첫번째 브랜치 판정수단이 브랜치가 성공적인 것을 판정하는 것으로 이루어진 브랜치 명령의 브랜치 타켓 명령의 페치와 파이프라인 시스템에서 명령의 프리페치를 실행하기 위한 명령 페치 제어 시스템.
  2. 제1항에 있어서, 상기 첫번째 브랜치 판정 수단이 둘의 명령 코드와 조건 코드를 기초로 판정에 대한 종래의 조건 브랜치의 판정을 실행하는 명령 페치 제어 시스템.
  3. 제1항에 있어서, 첫번째 브랜치 판정 수단이 조건 코드를 기초로 브랜치 판정에 대한 종래의 무조건 브랜치의 판정을 실행하는 명령 페치 제어 시스템.
  4. 제1항에 있어서, 상기 브랜치 판정수단이 명령의 코드 사이클에서 브랜치 명령을 실행하는 명령 페치 제어 시스템.
  5. 제1항에 있어서, 상기 첫번째 브랜치 판정 수단이 조건 브랜치 또는 무조건 브랜치가 존재하는 지를 결정하기 위한 명령 코드를 디코우딩 하기 위한 수단, 조건 코드를 갱신하지 않는 브랜치 명령의 종래의 명령으로부터 즉시 계속되는 다수의 명령을 결정하기 위한 수단, 명령 코드와 조건 코드의 결합을 기초로 브랜치 판정에 대한 종래의 브랜치로서 판정될 수 있는 브랜치 명령을 선택하기 위한 브랜치 명령 선택 수단, 예측될 수 있는 브랜치 명령을 판단하기 위한 수단, 여기서 상기 디코우딩 수단은 브랜치 조건을 디코우드하고, 상기 판정수단이 조건 코드가 시이클을 진행으로부터 계속되는 다수의 사이클들로 갱신되지 않고, 상기 브랜치 명령 선택 수단이 브랜치 명령인 명령을 선택하는 것을 판단하는 것으로 이루어진 명령 페치 제어 시스템.
  6. 제5항에 있어서, 상기 첫번째 브랜치 판정 수단이 성공적인 브랜치를 판정하고 범용 레지스터에 저장된 값을 연산하는 카운터 브랜치 명령인 상기 브랜치 명령을 판단하고, 그 결과는 미리 결정된 값이고, 범용 레지스터의 값이 미리 결정된 그것인지를 체킹하는 명령 페치 제어 시스템.
  7. 제5항에 있어서, 수단이 카운터 브랜치 명령인 명령 디코우더의 내용을 결정하기 위해 제공되고, 수단이 범용 레지스터의 내용을 갱신하지 않는 브랜치 명령을 진행하는 연속 명령의 미리 결정된 번호를 결정하기 위해 제공되고, 수단이 특정 번호가 아닌 브랜치 명령에 의해 지정된 범용 레지스터의 내용을 결정하기 위해 제공되고, 수단이 예측될 수 있는 카운터 브랜치 명령을 결정하기 위해 제공되고, 여기서 상기 세 개의 수단 모두의 조건이 설정된 명령 페치 제어 시스템.
  8. 제1항에 있어서, 상기 첫번째 브랜치 판정수단이 조건 브랜치 또는 무조건 브랜치를 디코우드하는 명령 코드를 디코우딩 하는 수단, 첫번째 브랜치 판정수단으로 첫번째 판정에 조건코드를 갱신을 하지 않는 브랜치 명령을 즉시 진행하는 다수의 연속 명령을 결정하기 위한 첫번째 결정수단, 브랜치 판정 수단의 첫번째 판정으로 범용 레지스터를 갱신하지 않는 브랜치 명령을 즉시 진행하는 다수의 연속 명령을 결정하기 위한 두 번째 결정 수단, 브랜치 명령이 무조건 브랜치일때와, 조건코드; 브랜치 명령이 명령 코드를 기초로 브랜치 판정을 실행하기 위해 필요할 때 그리고 브랜치가 상기 첫번째 결정수단에 의해 예측될 수 있을 때; 또는 브랜치 명령이 범용 레지스터의 값을 기초로 브랜치 판정을 실행하기 위해 필요할 때 그리고 브랜치가 상기 두 번째 결정 수단에 의해 예측될 수 있을 때 본래의 두 번째 브랜치 판정에 대한 종래의 사이클로 브랜치 판정을 실행하기 위한 수단으로 이루어진 명령 패치 제어 시스템.
  9. 제1항에 있어서, 상기 프리페치 시작 수단이 브랜치가 본래의 판정 사이클로 실행되는지를 조건 코드로부터 판정하기 위한 첫번째 브랜치 판정 수단의 결과와 두 번째 브랜치 판정 수단의 결과를 기초로 브랜치 타켓 명령을 수행하는 명령을 페칭하기 위하여 어드레스 정보를 선택하기 위한 선택수단으로 이루어진 명령 페이 제어 시스템.
  10. 제9항에 있어서, 상기 선택수단이 상기 어드레스 정보를 선택하기 위한 어드레스 정보 선택수단, 상기 첫번째와 두 번째 브랜치 판정 수단을 기초로 오디너리 브랜치 명령 또는 예측할 수 있는 브랜치 명령을 선택하기 위한 브랜치 조건 선택회로와 선택되는 명령의 명령 길이를 선택하기 위한 명령 길이 선택 회로로 이루어진 명령 패치 제어 시스템.
  11. 제1항에 있어서, 연속 사이클들의 브랜치 타켓 명령을 수행하는 명령과 브랜치 명령의 브랜치 타켓명령을 디코우딩하기 위한 명령 프리페치 실행 수단으로 더 이루어지고, 여기서 브랜치 판정이 첫번째 브랜치 판정회로에 의해 실행되고, 그것에 의해서 파이프라인 제어를 실행하는 명령 페치 제어 시스템.
  12. 명령을 디코우딩하기 위한 수단, 상기 명령의 논리적 어드레스를 계산, 논리 메모리를 리얼 메모리로 변환, 명령과 데이터가 저장된 버퍼 메모리로부터 명령과 데이터를 리이딩, 버퍼 메모리와 범용 레지스터에 결과를 다시 라이팅하고 명령을 기초로 데이터의 산술 연산을 실행, 그것에 의해서 명령 실행 파이프 라인 처리를 실행하고; 각각 명령의 명령 실행 파이프라인 처리의 디코우드 사이클에 대한 종래의 브랜치 명령의 브랜치 타켓 명령을 수행하는 명령과, 본 발명을 수행하는 명령을 리이딩 하기 위한 명령 프리페치 파이프라인을 실행하기 위한 수단; 상기 브랜치 명령이 실행될 때 파이프라인 처리로 브랜치 판정 사이클에 대한 종래의 브랜치를 판정하기 위한 첫번째 브랜치 판정 수단, 브랜치 명령의 파이프라인으로 브랜치 판정사이클에 대해 기대없이 상기 브랜치 타켓 명령을 수행하는 명령 세트의 프리페치를 시작하기 위한 수단, 상기 첫번째 브랜치 판정 수단이 브랜치가 성공적인 것을 판단하는 것으로 이루어진 명령 페치 제어 시스템.
  13. 명령을 디코우딩하는 단계, 상기 명령의 논리 어드레스를 계산, 논리어드레스를 리얼 어드레스로 변환, 명령과 데이터가 저장된 버퍼 메모리로부터 명령 또는 데이터를 리이딩, 버퍼 메모리 또는 범용 레지스터의 결과로 다시 라이팅하고 명령을 기초로 데이터의 산술연산을 실행하고, 그것에 의하여 명령 실행 파이프라인 처리를 실행하고; 각 명령의 명령 실행 파이프라인 처리의 디코우드 사이클에 대한 종래의 브랜치 명령의 브랜치 타켓 명령을 수행하는 명령과, 본 명령을 수행하는 명령을 리이딩하기 위해 명령 프리페치 파이프라인을 실행하기 위한 단계, 상기 브랜치 명령이 실행될 때 파이프라인 처리의 브랜치 판정 사이클에 대한 종래의 브랜치를 판정하기 위한 첫번째 브랜치 판정 단계, 브랜치 명령의 파이브라인의 브랜치 판정 사이클에 대한 기대없이 상기 브랜치 타켓 명령을 수행하는 명령 세트의 프리페치를 시작하기 위한, 단계 상기 첫번째 브랜치 판정 단계는 브랜치가 성공적인 것을 판정으로 이루어진 명령 페치 제어 시스템.
KR1019890019693A 1988-12-27 1989-12-27 명령을 페치(fetch)하기 위한 제어 시스템 KR920006770B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP88-327765 1988-12-27
JP32776588 1988-12-27
JP63-327765 1988-12-27

Publications (2)

Publication Number Publication Date
KR900010552A KR900010552A (ko) 1990-07-07
KR920006770B1 true KR920006770B1 (ko) 1992-08-17

Family

ID=18202737

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019890019693A KR920006770B1 (ko) 1988-12-27 1989-12-27 명령을 페치(fetch)하기 위한 제어 시스템

Country Status (6)

Country Link
US (1) US6631464B1 (ko)
EP (1) EP0376258B1 (ko)
KR (1) KR920006770B1 (ko)
AU (1) AU620962B2 (ko)
CA (1) CA2006732C (ko)
DE (1) DE68928937T2 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119221A (en) * 1996-11-01 2000-09-12 Matsushita Electric Industrial Co., Ltd. Instruction prefetching apparatus and instruction prefetching method for processing in a processor
US6415356B1 (en) * 2000-01-14 2002-07-02 Sun Microsystems, Inc. Method and apparatus for using an assist processor to pre-fetch data values for a primary processor
US6681318B2 (en) * 2000-09-08 2004-01-20 Sun Microsystems, Inc. Method and apparatus for using an assist processor to prefetch instructions for a primary processor
TW586666U (en) * 2001-04-03 2004-05-01 Univ Nat Chiao Tung Microprocessor command reading structure
JP7131236B2 (ja) 2018-09-20 2022-09-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN110377269B (zh) * 2019-06-17 2024-04-19 平安科技(深圳)有限公司 业务审批***配置化方法、装置及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS52120640A (en) * 1976-04-02 1977-10-11 Toshiba Corp Micro program control system
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4373180A (en) * 1980-07-09 1983-02-08 Sperry Corporation Microprogrammed control system capable of pipelining even when executing a conditional branch instruction
JPS57150040A (en) * 1981-03-11 1982-09-16 Mitsubishi Electric Corp Pipeline computer
US4435756A (en) * 1981-12-03 1984-03-06 Burroughs Corporation Branch predicting computer
JPS5958700A (ja) * 1982-09-29 1984-04-04 Fujitsu Ltd 記憶保護判定方式
JPS60105050A (ja) 1983-11-11 1985-06-10 Fujitsu Ltd パイプライン制御方式
JPS60107141A (ja) * 1983-11-16 1985-06-12 Fujitsu Ltd プランチ制御方式
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
JPH0789319B2 (ja) * 1985-04-22 1995-09-27 株式会社日立製作所 デ−タ処理装置における先行制御装置
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
JPH01271838A (ja) * 1988-04-22 1989-10-30 Fujitsu Ltd マイクロプログラム分岐方法
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system

Also Published As

Publication number Publication date
AU4728489A (en) 1990-07-05
AU620962B2 (en) 1992-02-27
EP0376258A3 (en) 1992-07-15
CA2006732A1 (en) 1990-06-27
CA2006732C (en) 1994-05-03
US6631464B1 (en) 2003-10-07
DE68928937T2 (de) 1999-07-01
EP0376258B1 (en) 1999-03-03
KR900010552A (ko) 1990-07-07
DE68928937D1 (de) 1999-04-08
EP0376258A2 (en) 1990-07-04

Similar Documents

Publication Publication Date Title
EP0689131B1 (en) A computer system for executing branch instructions
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
US4476525A (en) Pipeline-controlled data processing system capable of performing a plurality of instructions simultaneously
US7711930B2 (en) Apparatus and method for decreasing the latency between instruction cache and a pipeline processor
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
JPH0557616B2 (ko)
JPH0628184A (ja) ブランチ予測方法及びブランチプロセッサ
US4541047A (en) Pipelined data processing system
US4739470A (en) Data processing system
JPH08320788A (ja) パイプライン方式プロセッサ
US7346737B2 (en) Cache system having branch target address cache
KR920006770B1 (ko) 명령을 페치(fetch)하기 위한 제어 시스템
JP3725547B2 (ja) 限定ラン分岐予測
US5644759A (en) Apparatus and method for processing a jump instruction preceded by a skip instruction
JPH03129432A (ja) 分岐制御回路
US6289428B1 (en) Superscaler processor and method for efficiently recovering from misaligned data addresses
JP2006053830A (ja) 分岐予測装置および分岐予測方法
JPH01183737A (ja) 情報処理装置
US6360310B1 (en) Apparatus and method for instruction cache access
JP2591325B2 (ja) 分岐制御装置
JPH02255918A (ja) 命令取出し制御方式
JPH06131180A (ja) 命令処理方式および命令処理装置
JPH07200406A (ja) キャッシュシステム
JPS63195736A (ja) パイプライン制御のための分岐命令処理装置

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20040809

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee