KR930009756B1 - 분기명령 실행장치 및 분기명령 트레이싱방법 - Google Patents

분기명령 실행장치 및 분기명령 트레이싱방법 Download PDF

Info

Publication number
KR930009756B1
KR930009756B1 KR1019900009050A KR900009050A KR930009756B1 KR 930009756 B1 KR930009756 B1 KR 930009756B1 KR 1019900009050 A KR1019900009050 A KR 1019900009050A KR 900009050 A KR900009050 A KR 900009050A KR 930009756 B1 KR930009756 B1 KR 930009756B1
Authority
KR
South Korea
Prior art keywords
branch
instruction
signal
conditional
execution
Prior art date
Application number
KR1019900009050A
Other languages
English (en)
Other versions
KR910001538A (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 KR910001538A publication Critical patent/KR910001538A/ko
Application granted granted Critical
Publication of KR930009756B1 publication Critical patent/KR930009756B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

내용 없음.

Description

분기명령 실행장치 및 분기명령 트레이싱방법
제 1 도는 본 발명의 원리 설명도.
제 2 도는 본 발명의 일실시예의 구성도이며 조건분기 명령의 분기 트레이스(branch trance)의 파이프라인 처리의 설명도.
제 3 도는 본 발명의 명령실행부의 블록도.
제 4a∼d 도는 본 발명의 파이프라인 동작 설명도.
제 5 도는 피 디버그된 프로그램(debugged program)과 트레이스 내용의 일예의 설명도.
제 6 도는 디버깅처리의 설명도.
제 7 도는 제 3 도에 나타낸 명령 데코더와 그 주변회로의 블록도.
제 8 도는 조건 분기명령(BCC)을 나타낸 도면.
제 9 도는 제 3 도에 나타낸 분기판정회로의 블록도.
제 10 도는 제 3 도에 나타낸 것과 같이 행해지는 분기예측 원리의 설명도.
제 11 도는 조건분기중에서 분기되는 확률이 높은 명령을 과거의 이력에 준하여 예측하기 위한 블록도.
본 발명은 파이프라인의 처리를 사용하여 수차로 각 명령어를 실행하는 마이크로 프로세서에 있어서의 분기명령을 트레이스(trace)하는 방법에 관한 것이다.
이 종류의 분기명령 트레이스방법에 있어서, 조건부 분기명령이 데코드된 경우에 있어서는 파이프라인 처리에 교란(disturbance)이 생기지 않도록 하여 처리속도의 저하를 방지하는 것을 목적으로 하고 파이프라인 처리에 의한 순차적인 각 명령어 실행중에 분기된 명령어를 순차로 실행하는 명령실행장치에 있어서 조건부 분기명령이 데코드된 경우에 당해 조건의 판정결과를 기다리지 않고 즉시 조건성립을 추정하여 분기선 실행비트를 설정하고 그 후에 실제의 판정결과가 나올 시점에서 비트의 내용을 수정하도록 구성한다.
또한, 본 발명은 마이크로 프로세서에 있어서 파이프라인 처리를 사용하여 순차로 각 명령어를 실행하여 분기명령의 트레이스(trace)를 행하는 분기실행장치에 관한 것이다.
이 종류의 트레이스는 디버그 기술의 하나로서 사용되는 것으로 프로그램이 올바르게 동작하고 있는지의 여부를 알기 위하여 프로그램중의 명령의 실행순서나 변수의 값을 자동적으로 출력시키는 것이다.
파이프라인 처리를 행하는 마이크로 프로세서의 분기트레이스(분기를 행한 분기명령의 트레이스)에 관해서 각 조건부 분기명령의 조건판정의 결과가 당해 명령처리 종료까지 나오지 않는 경우에 디버그 예외 발생을 나타내는 비트를 갖는 레지스터의 기입은 당해 명령처리의 최종 사이클에서 행해지므로 분기성립 여부의 결과를 보고나서 상기 레지스터의 기입을 행하면 파이프 라인 처리에 교란이 생겨 버린다.
상술한 바와 같이 종래의 분기명령 트레이스에서는 조건부 분기명령이 데코드된 경우에 당해 조건의 판정결과를 갖고나서 디버그 예외 발생 비트를 설정하도록 되어 있다.
그 때문에 파이프라인 처리에 교란이 생겨서 파이프라인 처리 본래의 목적인 처리속도의 고속화가 침해된다는 문제점이 있었다.
본 발명은 이 종류의 분기명령 트레이스 방법에 있어서 조건부 분기명령이 데코드 된 경우에 있어서도 파이프라인 처리에 교란이 생기지 않도록 하여 처리속도의 저하를 방지하는 것을 목적으로 한다.
본 발명의 원리설명도를 제 1 도에 나타냈다. 동 도면에서 명령데코드부(1)에서는 조건부 분기명령을 데코드한 경우에 분기 판정부(3)에 대해서 그 취지를 통지(a1)한다.
분기판정부(3)에서는 명령데코드부(1)로부터의 통지(a1)와 트레이스의 모드제어등을 행하는 디버그 제어부(4)에서의 분기추적의 지시(a3)에 준하여 분기성빌을 예측하고 분기성립의 확률이 높은 경우에는 연산실행부(2)로부터 통지(a2)가 오기전에 분기성립을 추정하여 분기선 실행 비트, 예를들면 디버그 예외 발생 비트를 설정할 지시를 발생한다(a4).
그후에 연산실행부(2)에서의 통지(a2)를 받아들이는 조건판정을 행하여 분기가 불성립인 경우에는 디버그 제어부(4)로 디버그 예외 발생비트의 수정지시를 출력한다(a5).
디버그 제어부(4)는 디버그 제어에 관한 레지스터를 갖고 있어 분기 트레이스 지시를 분기 판정부로 통지하고(a3), 상기 비트를 설정할 지시(a4)를 받아서 상기 레지스터내에 디버그 예외 발생 비트를 설정한다. 또, 분기판정부(3)에서의 수정지시(a5)에 의해서 상기 비트의 수정을 행하는 것이다.
분기방향의 예측은 예를들면 무조건분기, 루프명령등과 같이 분기확률이 놓은 조건 분기 명령의 경우에는 분기성립방향으로 예측한다(명령종류별에 따른 예측).
또, 과거의 분기판정의 이력에 의해서 다음에 그 조건분기명령을 실행했을 때에 그 분기방향을 예측한다(분기예측 테이블에 의한 예측).
이와 같이 본 발명은 파이프라인 처리를 사용하여 순차로 각 명령어를 실행하는 마이크로 프로세서에 관한 것으로, 그 실행중에 분기된 명령어를 순차로 트레이스할시에 조건부 분기명령이 데코드된 경우에는 당해 조건의 판정결과를 기다리지 않고, 즉시 조건성립을 추정하여 디버그예외 발생비트를 설정하고, 그후의 실제의 판정결과가 나온 시점에서 디버그 예외 발생비트의 내용을 수정하는 것을 특징으로 한다.
이상의 구성에 의하면 분기 트레이스 지시(a3)가 있는 경우에는 조건분기명령을 데코드 했을 때(a1), 분기방향을 예측하여 분기성립 확률이 높은 경우에는 조건판정결과(a2)를 기다리지 않고 분기성립을 예측하여(a4) 디버그 예외발생비트를 설정하도록 하고, 분기 불성립인 경우에는(a5), 상기 비트의 수정을 행하도록 하고 있다.
따라서 조건판정 결과가 명령의 처리종료까지 알 수 없는 조건분기명령의 분기 트레이스를 행한 경우에는 디버그 예외 발생 비트의 기입도 당해 명령처리중에 행해지기 때문에 파이프라인 처리의 교란을 억제할 수 있다.
이하 첨부도면을 참조하여 본 발명을 상세히 설명한다.
제 2 도는 본 발명의 일실시예를 설명하는 도면이고, 조건부 명령의 분기 트레이스에 있어서의 파이프라인 처리의 스테이지를 나타내고 있다.
동 도면에 나타낸 바와 같이 사이클(1)에서 명령데코드가 행해지고 사이클(2)에서 조건의 연산을 행하고 사이클(3)에서 조건의 판정 및 레지스터의 기입을 행하는 조건부 분기명령에서는 명령이 무조건분기 또는 루프명령과 같이 분기확률이 놓은 경우에 분기 성립을 추정하여 조건판정결과를 기다리지 않고 사이클(3)에서 디버그 예외발생비트에 "1"이 기입된다(도면중 (a)참조).
그후에 사이클(3)에서 실제의 조건판정결과 분기가 성립된 경우에는 디버그 예외 발생비트의 내용이 그대로 보지된다(도면중 (a)참조).
이에 대해서 사이클(3)의 실제의 조건판정 결과 분기가 불성립인 경우에는 사이클(4)에서 디버그 예외 발생비트가 클리어된다(도면중 (b)참조). 이 경우에 레지스터 기입처리가 아니고 리세트 처리이므로 파이프라인 처리에는 영향은 주지 않는다.
이와 같이 상술한 실시예에 의하면 조건부 분기명령의 분기 트레이스에서는 분기성립의 확률이 높다고 예측된 경우에는 분기성립을 추정하여 디버그 예외 발생비트를 설정하므로 파이프라인 처리의 교단을 억제하고 처리속도의 저하를 방지할 수 있다.
제 3 도에 본 발명의 일실시예를 더 구체적으로 나타냈다. 명령실행부(10)는 메인 메모리 유니트(MMU)/캐슈(cache)(11)로부터 명령을 페치(fetch)하여 이것을 해독하고 연산하는 부분이다. MMU/캐슈(11)로부터의 명령 즉 마아크로명령(marcro instruction)은 명령데코드(12)에 페치되어 해독된다. 각 명령을 처리하는 루틴은 마이크로 프로그램으로서 마이크로(ROM)(13)에 기억된다. 페치된 마이크로명령의 OP코드에 대응하는 마이크로 ROM(13)내의 영역의 선두어드레스가 명령데코드(12)로부터 제공되면 마이크로 ROM(13)의 출력은 제어신호로서 연산기(14), 레지스터(15) 도는 메모리 엑세스 제어 레지스터 제어회로(16)로 제공된다. 명령으로 처리되는 데이타는 레지스터 15나 MMU/캐슈(11)등으로부터 독출되어 연산기(140)에서 연산되고 그 결과 레지스터 15나 MMU/캐슈(11) 또는 그것을 통하여 외부메모리(도시하지 않음)등에 기입된다. 제 3 도의 MMU/캐슈(11)는 어드레스 변환을 위한 관리기구와 내장캐슈로 된다. MMU/캐슈(11)로부터의 데이타의 독출을 기입을 할 경우에는 마이크로 ROM(13)으로부터의 제어 신호는 메모리엑세스/제어레지스터 제어회로(16)으로 제공된다. 메모리 엑세스 제어레지스터 제어회로(16)는 마이크로 ROM(13)으로부터의 지시에 준하여 메모리의 리드/라이트 요구의 발생이나 제어 레지스터의 리드/라이트 지시등을 행한다. MMU/캐슈(11)는 외부의 장치와 인터페이스(17)를 거쳐서 연결되어 있다. 외부장치로부터 인터럽트 요구가 있으면, 인터럽트 요구신호가 인터럽숀/예외 제어회로(18)로 제공되고 그 인터럽숀이 받아들여진 경우에 인터럽트 루틴으로 옮겨갈 마이크로 어드레스가 마이크로 ROM(13)으로 제공된다. 파이프라인 제어회로(19)는 데코드(DC)스테이지, 어드레스연산(AC)스테이지, 마이크로 독출(MI)스테이지, 연산(OE)스테이지, 결과기입(OW)스테이지, 즉 DC, AC, MI, DE, OW의 각 스테이지의 진행을 감시하고 또 캐슈미스히트(cache mishit)에 의한 외부메모리 엑세스등의 대기조건에 따라서 스테이지의 상태보지를 제어한다.
또 DC스테이지에서 유효한 명령데코드를 행한직후에 스트로브 신호(strobe signal)를 1로 한다.
분기판정부 20내의 판정회로(21)는 조건분기명령이 성립됐는지의 여부를 연산기(14)로부터의 상태 플래그(status flag)를 사용하여 판정하고 조건이 성립한 경우에는 조건성립 신호를 1로 하고 조건이 성립하지 않은 경우에는 조건 불성립신호를 1로 한다. 본 발명에서는 분기될 확률이 높은 조건분기명령, 분리확률이 낮은 조건분기명령의 차이에 의해서 분리제어를 행하는 논리회로로되는 제어회로를 분기판정부(20)에 갖고 있다.
명령데코더(12)로부터 조건분기코드 또는 마이크로 ROM(8)으로부터 마이크로 지시 제공되면 그중 어느 것을 선택하여 얻은 분기조건이 판정회로(21)로 제공된다. GO TO 문구와 같음 무조건분기 또는 DO LOOP 문구와 같은 분기 확률이 높은 조건분기명렬(조건분기 1) 또는 IF 등과 같이 분리되는 확률이 낮은 조건분기명령(조건분리 2)의 구별을 나타내는 신호 즉 무조건 분기신호, 조건분기 1신호, 조건분기 2신호가 각각 명령데코더(12)로부터 출력된다. 그들의 제어신호가 분기판정부(20)으로 제공되어 무조건 분기신호와 조건분기 1신호가 활성화되어 있는 경우에는 분기조건의 조건제어를 기다리지 않고 분기를 실행하는 제어가 행해진다. 즉, 무조건분기와 조건분기 1의 제어신호 는 OR회로(30)로 제공되고 그 출력은 분기가 행해졌을 때에만 추적조건으로 되는 플로우 트레이스(fiow trace)의 모드인 것을 나타내는 신호와 AND회로(32)에서 AND가 취해진다. 그 AND회로(32)의 출력이 1로 되면 OR회로(34)를 거쳐서 AND회로(35)로 제공된다. 따라서 파이프라인회로(19)로부터의 스트로브 신호가 1일 때에 즉 데코드 종료직후에 AND회로(35)의 출력이 1로되고 파이프라인 지연회로(37)는 OR회로(38)을 거쳐서 디버그 제어 레지스터(25)의 스테이터스(status)를 세트상태로 한다. 또, AND회로(35)의 출력은 제 4c 도의 AND회로의 출력에 의해 나타낸 바와 같이 OR 회로(36)를 통하여 인터럽숀/예외제어회로(18)로의 디버그 예외 요구(즉, 디버그 예외 발생 플래그)로 되어 분기판정을 기다리지 않고 디버그 루틴으로 점프(Jump)하게 된다. 그 디버그 예외발생 플래그는 또한 파이프라인 지연회로(37)에 의해 지연된 후 디버그 제어 레지스터(25)를 제어한다. 점프해버린후에 파이프라인 동작의 최후의 스테이지 즉 연산결과를 기입하는 OW스테이지에서 분기실행에 대한 가부판정이 행해진다.
즉, 연산기(14)로부터의 상태플래그의 내용의 결과 판정회로(21)에 제공되는 분기조건이 조건불성립인 경우에는 조건불성립 신호와 조건분기 1신호와의 양쪽이 플로우 트레이스 상태에 있어서 AND회로(32)로 입력되면 디버그 제어 레지스터(25)의 디버그 스테이지상태를 클리어한다. 또 디버그 루틴은 취소되게 된다.
또 OR회로(34)의 입력에는 스텝 트레이스 즉 1명령실행시마다 트레이스 조건이 성립될때에 1로 되는 신호가 입력되어 있다. 이상의 설명에서는 스텝 트레이스는 0으로 하고 있다.
본 발명에서는 분기조건의 제어를 기다려서 디버그 루틴으로 점프하는 경우도 고려한다. 분기된 확률이 낮은 조건분기명령 즉, 조건분기 2신호가 1일 경우에는 그 조건이 성립되는지의 여부는 연산기(14)로부터의 상태 플래그의 관측에 의해서 결정되고 파이프라인 동작의 경우의 OW스테이지에서 이 제어가 행해진다. 즉, 조건이 성립되는 경우에는 조건성립신호가 1이고 조건분기 2신호도 1이므로 플로우 트레이스 상황에서는 AND회로(31)의 출력이 1로 되고 이 1이 OR회로(36)을 거쳐서 디버그 제어레지스터(25)의 디버그 스테이터스의 상태를 세트시킨다. 이 경우에는 디버그 루틴으로 점프되는 것은 조건분기 1신호의 경우에 비해서 지연되게 된다. 즉, 본 발명에서는 상기 분기되는 무조건 분기의 경우와 명령의 종류나 과거의 이력등으로 결정되는 분기될확률이 높은 조건분기명령 즉, 조건분기 1에 대해서는 명령의 해독후 다음 명령을 취소한 후에 즉시 디버그 스테이터스를 세트하고 디버그 루틴으로 들어간다.
제 3 도에서 상술한 바와 같이 디버그 제어레지스터(25)의 세트신호에 의해서 디버그루틴이 실행된다. 이때에 디버그루틴의 각 명령은 본 발명에서는 CPU내부에 예를들면 캐슈의 일부를 ROM화하여 기억되어 있다. 따라서 디버그루틴도 CPU내부에 MMU/캐슈(11), 명령실행부(10), 명령데코더(12), 분기판정부(20), 디버그제어부레지스터(25)와 함께 1칩화 되어 있으므로 조건분기 1신호의 경우의 실행과 어울려 디버그루틴을 고속화할 수 있다.
다음에 본 발명의 파이프라인 동작을 설명하겠다.
제 4a 도는 종래예 또는 분기확률이 낮은 조건분리명령으로 분기한 경우의 디버그 처리이다.
제 4b 도는 본 발명에 의한 분기확률이 높은 조건분기 명령으로 분기한 경우 및 무조건 분기의 디버그처리이다.
제 4a 도는 명령 1에 따라 분기확률이 낮은 조건분기명령의 경우를 나타내는 것으로 명령은 DC스테이지, AC스테이지, MI, DE, OW, 스테이지의 순으로 각각 1사이클씩 연속적으로 각 스테이지가 진행된다. DC스테이지를 보면 명령 1의 데코드, 명령 2의 데코드, 명령 3의 데코드, 명령 4의 데코드는 각 사이클에서 행해진다. 또, 명령 2의 데코드와 명령 1의 어드레스 계산은 동시에 행해진다. 또, 명령 1의 조건분기명령은 OE스테이지에서의 연산기로부터의 상태플래그를 감지하여 OW스테이지에서 분기되는지의여부가 결정된다. 조건이 성립된 경우에 명령 2, 명령 3, 명령 4의 실행을 취소하고 그 명령 1 내에 지시되는 어드레스, 즉 점프선(jump target)어드레스를 점프한다. 그러나, 플로우 트레이스 감시중의 경우에는 분기선 어드레스로 점프하는 대신에 디버그 루틴이 기동되고 명령 1의 OW스테이지 후에 디버그루틴의 최초 스텝의 마이크로 독출이 행해진다.
디버그루틴에 들어가면 DC스테이지에 상당되는 마이크로개시 어드레스 생성후에 MI스테이지 OE스테이지의 각 스테이지상태가 진행되어 디버그의 서브루틴이 실행된다.
제 4b 도의 경우에는 분기명령 1은 분기확률이 높은 조건분기명령이므로 플로우 트레이스 감시중의 경우 명령 1의 DC스테이지 후에 명령 1에 후속되는 명령 2의 데코드 스테이지를 취소하고 디버그루틴으로 즉시 들어갈 수 있다.
또 명령의 1의 OE, OW의 실행시에 디버그 1은 MI, OW스테이지로 되어 있다. 본 발명에서는 조건분기명령에서도 확률이 높은 것은 명령 1의 실행완료를 기다리지 않고 데코드 직후부터 후속명령을 취소하여 디버그처리로 옮기기 위한 마이크로 처리를 기동시키고 조건이 성립되지 않았을 때에는 디버그처리로 옮기기 위한 마이크로처리를 취소하여 후속명령의 데코드로부터 다시 개시한다. 또 디버그등의 예외할입처리는 AC스테이지를 갖지 않는다.
제 4c 도는 분기판정부(20)의 제어회로에 있어서 분기성립, 불성립이 정해지는 타이밍과 디버그 제어 레지스터(25)와의 관계를 나타낸 것이다.
제 4c 도의 경우에 명령 1의 데코드결과에 의해서 파이프라인 지연회로(37)는 플로우트레이스와 조건분기 1신호의 AND회로(32)를 거쳐서 세트된다. 또 명령 1이 MI스테이지 되었을 때에 즉시 디버그의 DC스테이지 개시되고 디버그 제어레지스터(25)의 스테이터스상태는 파이프라인 지연회로(37)의 출력에 의해서 세트된다. 파이프라인 지연회로는 명령의 진행에 맞추어 상기 AND회로(35)의 출력을 지연시키고 명령이 OW스테이지로 진행됐을 때에 디버그 제어 레지스터의 스테이터스의 세트를 지시한다. OW스테이지까지 기다려 세트하고 있는 것은 그 이전의 명령으로 예외, 인터럽숀등에 의해서 명령취소가 행해진 경우에 디버그 제어레지스터의 변화를 억지하기 위해서다. 만약 명령 1의 OW스테이지에 있어서 분기조건 불성립이라고 판정된 경우에는 명령 1에 뒤이은 디버그루틴은 취소되고 디버그 제어레지스터(25)의 스테이터스 정보는 리세트된다. 그후에 명령 2, 명령 3이 실행된다.
제 4c 도 하방에는 분기조건판정의 타이밍을 구체적으로 나타냈다. 우선 OE스테이지의 전반에 레지스터(15)에서 데이타를 독출하고 OE스테이지의 후반에 이 데이타에 대한 연산이 연산기(ALU)(14)에서 실행된다. 그 결과, 상태플래그는 OW스테이지의 전반부에서 생성되며 그 상태플래그는 분기판정회로로 제공되고 OW스테이지의 후반부에 있어서, 분기조건이 결정된다. 또 레지스터의 내용, PSW의 내용, 디버그 제어레지스터의 내용이 갱신된다.
제 4d 도는 조건분기명령(ACB명령)에 대한 파이프라인 제어의 타이밍을 나타낸 도면이다. ACB명령은 카운터를 갱신하고 카운터치가 리미트치 미만이면 지정어드레스로 분기하는 루프명령이다.
ACB(1)의 경우에 루프카운터의 카운터수를 지시하는 카운트는 카운트업의 스탭폭(STEP)이 CE스테이지에서 가산되어 갱신되고, 갱신된 카운트수가 OW스테이지에서 레지스터에 기입된다. 그 카운터치의 갱신의 연산과 동시에 카운터의 최대치(LIMIT)와 비교하는 동작을 OE스테이지에서 행한다. 비교한 결과가 LIMIT미만의 경우에는 루프의 선두로 분기되므로 디버그 제어레지스터의 스테이터스는 세트된 채로 되지만 LIMIT이상이면 비분기이므로 스테이터스를 클리어 한다.
그러나, 이 경우에는 2개의 연산기가 필요하므로 또 하나의 예로서 ACB(2)의 경우에는 카운터치와 스텝수와의 연산을 OE1스테이지에서 행하여 갱신하고 갱신된 카운터치와 리미트와의 비교를 OE2스테이지에서 행한다. 이 경우에 2개의 마이크로 스텝으로 처리가 진행되므로 파이프라인 지연회로는 OE스테이지 등에서 2사이클간 상태를 보지함으로써 타이밍을 맞춘다. ACB(2의 경우가 조건 분기판정이 더 지연되므로 파이프라인 교란가능성이 커진다.
제 5 도는 피디버그 프로그램과 트레이스내용의 예를 나타내고 있다. BRA는 무조건 분기명령 Bcc는 조건분기명령, BSR는 서브루틴 분기명령이다.
#A1의 BRA는 무조건으로 어드레스 #A2로 점프한다. 또 프로그램을 진행시켜 Bcc에 오고 조건성립이라고 하면 #A5로 점프한다. 그 후에 #46까지 진행하고 ACB는 조건성립이라고 하면 #A3로 되돌아간다. 다음에 Bcc까지 진행되어 이것이 조건불성립으로 된다고 하면 다음 #A6의 ACB까지 진행된다. 따라서 또 #A3으로 되돌아간다. 다음 Bcc는 조건불성립이므로 Bcc명령에 뒤이은 명령을 실행하여 #A6까지 진행된다. ACB는 조건성립이므로 #A3로 되돌아가서 #A4까지 진행되고 Bcc는 조건성립이므로 #A5로 점프한다. 그후에 진행되어 다음 ACB는 조건불성립이므로 ACB에 뒤이은 명령을 실행하고 BSR는 무조건 분기이므로 도시되지 않은 서브루틴이 기억된 #A8로 점프한다.
제 6 도는 디버그처리를 설명하는 도면이다. 제 6 도에 있어서 디버그처리에 있어서는 피디버그 프로그램으로부터 디버그처리로 옮길때에 마이크로 처리에 의해서 정보가 세이브(save)된다. 세이브되는 내용은 PSW(Program Status Word), 리턴 어드레스 및 예외 발생 어드레스로서 이것은 주기억의 세이브영역에 기억된다. 또, 디버그를 위한 핸들러 프로그램(handler program)내에 세이브영역내의 리턴어드레스(플로우 트레이스에서는 분기목표어드레스), 예외발생 어드레스(플로우 트레이스에서는 분기명령 어드레스)를 주기억의 일부에 설비된 트레이스영역 또는 따로 설비된 트레이스 메모리에 기입하고 또 트레이스 메모리의 기입포인터를 갱신한다. 그 후에 복귀명령을 실행했을 때에 세이브된 정보의 PSW, 리턴 어드레스를 되돌려 복귀한다.
제 7 도는 명령데코더(12) 및 그 주변회로의 구성도이다.
명령선취 요구회로(41)로부터 명령선취 요구신호가 명령 캐수(42)로 제공되면 명령데코더(12)에 대해서 캐슈(42)로부터의 응답신호가 제공된다. 그러면 명령선취버퍼(43)로 현재의 라이트 포인터 기억용 레지스터(44)에 인크리멘터를 사용하여 1을 가하여 얻은 라이트 포인터로 지시되는 번지에 명령을 기입한다. 명령선취요구신호가 생성되고 있는 동안은 명령캐슈(42)로부터 명령선취 버퍼(43)로 명령이 기입된다. 명령선취버퍼(43)의 내용은 리드포인터 기억용 레지스터(46)의 내용으로 독출되고 독출된 내용은 명령코드로서 제 1 래치회로(45)로 제공된다. 그리하여 리드포인터 기억용 레지스터(46)의 내용은 가산기(53)에 의해서 명령길이에 대응하는 갱신량만큼 가산되어 그 갱신치가 리드포인터 기억용 레지스터(46)에 재차 세트된다. 분기명령이 실행되고 있지 않은 경우에는 연속되는 명령이 차례로 독출되어 제 1 래치회로(45)에 래치된다. 제 1 래치회로(45)에 세트된 명령코드는 명령코드 PLA(Programable Logic Array)(47)에 제공되어 제 2 래치회로 48에 세트되고 그 내용은 마이크로 ROM을 어드레스하는 마이크로 어드레스나 각종의 제어신호 및 무조건 분기명령인 경우에 활성화되는 무조건 분기명령신호, 분기확률이 높은 경우에 활성화되는 조건분기명령 1신호, 분기확률이 낮은 경우에 활성화되는 조건분기명령 2신호가 출력된다. 명령선취 버퍼(43)로부터의 명령코드는 PLA를 거치지 않고 명령레지스터(49)에도 세트된다. 명령 레지스터(49)의 내용은 워킹 레지스터번호나 분기조건 등을 형성하기 위하여 사용된다. 명령선취버퍼 제어회로(50)는 무조건 분기, 무조건 분기명령 1, 조건 분기명령 2의 각 경우에 명령선취 버퍼(43)의 라이트 포인터나 리드포인터의 값을 세이브 하거나 또는 변화시키는 제어를 행하고 또 분기판정부(20)로부터 제공되고 있는 조건분기 성립신호나 조건분기 불성립신호에 의해서 라이트 포인터나 리드 포인터 기억용 레지스트(44 및 46)의 상태를 제거한다.
분기동작과 포인터 제어는 아래와 같이 행해진다.
(1) 무조건 분기를 데코드한 경우 ;
라이트 포인터 리드포인터 기억용 레지스터(44 및 46)의 엔트리번호부(즉 WS 또는 RS이외의 라이트포인터 또는 리드포인터)와 함께 영(0)으로 하고 WS=RS가 되도록 사이드 지정비트를 초기화한다. 리드포인터 기억용 레지스터(46)의 엔트리 내의 오프세트부는 실행부로부터 분기어드레스 계산결과가 해당되는 하위부를 뽑아내어 세트시킨다.
(2) 조건분기 1(분기확률이 높은 명령 : 조건판정 전에 분기선 명령데코드 실행)을 데코드한 경우 ;
라이트포인터 리드포인터 기억용 레지스터(44, 46)의 엔트리번호부를 모두 영(0)으로 하고 WS/RS를 모드 반전(역사이드)시킨다. 리드 포인터 기억용 레지스터(46)의 엔트리내의 오프세트부는 실행부에서 분기어드레스 계산결과가 해당하는 하위부를 뽑아내어 세트시킨다. 또 그 이전의 라이트포인터 리드포인터의 값을 각각 라이프 포인터 2. 리드포인터 2 세이브용 레지스터(54, 56)에 세이브한다. 이 상태에서 이제까지와 역사이드에 분기측 명령을 선취하고 독출하여 실행한다. 그 후에 분기판정결과에 의해서 분기조건 성립의 경우는 명령실행을 취소하고 라이트 포인터와 리드포 포인터 기억용 레지스터(44, 46)를 각각 라이트포인터 2와 리드포인터 2의 세이브용 레지스터(54, 56)의 값으로 되돌린다. 또, WS/RS 모두 반전시킨다. 명령선취 어드레스는 비분기측으로 되돌린다.
(3) 조건분기 2(분기확률이 낮은 명령 : 조건판정에 비분기명령을 데코드실행)을 데코드한 경우 ;
라이트포인터 기억용 레지스터 44의 값을 라이트포인터2 세이브용 레지스터(54)에 세이브하고 라이트포인터 기억용 레지스터(44)의 엔트리 번호부를 영으로 하고 WS를 반전시킨다. 리드포인터는 그대로 사이드를 지시한다. 이 상태에서 명령선취는 분기선명령으로 하지만 데코드 실행은 비분기측이 된다. 그 후에 분기판정결과에 의해서 분기조건 성립의 경우에는 명령실행을 취소하고 리드포인터 기억용 레지스터(46)의 엔트리부를 영으로 하고 옵세트부에 분기어드레스 하위측을 로드하고 RS를 반전시킨다.
분기조건 불성립의 경우에는 명령버퍼의 독출, 데코드, 실행은 그대로 계속한다. 라이트포인터는 라이트포인터2 세이브용 레지스터(54)로부터 되돌리고 WS를 반전시킨다.
명령선취 어드레스는 비분기측으로 되돌린다. 명령선취 어드레스 카운터와 프로그램 카운터는 실행부에 설비되어 있으므로 제 7 도에는 도시하지 않았으나(제 3 도도 개량도이므로 생략되어 있다) 포인터와 같이 세이브를 위한 레지스터를 설비할 필요가 있다.
명령선취 어드레스 카운터는 라이트 포인터와 같이 절환이 행해지고 프로그램 카운터는 리드포인터와 같이 절환된다.
분기동작이 없을 때에는 라이트 포인터는 캐슈 또는 외부 메모리부터 유효 데코드가 전송됐을 때(응답이 있었을 때)에 카운트업 된다. 또 리드포인터는 데코더가 데코드를 마친 명령길이를 지정하므로 그만큼 카운트업한다.
명령선취는 명령선취버퍼(43)가 비어있는 한 요구된다. 통상은 라이트 포인터와 리드포인터의 차를 판단하여 비어있는 것을 검출한다.
그러나 조건분기동작중 기입과 독출의 시이드가 일치되지 않을 때(조건분기 2의 경우)는 라이트 포인터가 최대치가 되도록까지 선취를 행한다.
명령선취 어드레스 카운터는 라이트 포인터와 같이 절환이 행해지고 프로그램 카운터는 리드포인터와 같아 절환된다.
분기동작이 없을 때에는 라이트 포인터는 캐슈 또는 외부 메모리부터 유효 데코드가 전송됐을 때(응답이 있었을 때)에 카운트업된다. 또 리드포인터는 데코더가 데코드를 마친 명령길이를 지정하므로 그만큼 카운트업한다.
명령선취는 명령선취버퍼(43)가 비어있는 한 요구된다. 통상은 라이트 포인터와 리드포인터의 차를 판단하여 비어있는 것을 검출한다.
그러나 조건분기동작중 기입과 독출의 사이드가 일치되지않을 때(조건분기 2의 경우)는 라이트 포인터가 최대치가 되도록까지 선취를 행한다.
다음에 명령버퍼, 포인터의 제어를 행하는 명령선취 버퍼 제어회로(50)의 구성과 동작을 제 8 도를 참초하여 설명하겠다.
제 8 도에서 시스템 리스트 또는 무조건 분기신호가 1의 경우에는 OR회로(61)의 출력이 1로 되고 WS/RS를 초기화하는 WS/RS-클리어 신호가 활성화된다. 또 OR회로(63)의 출력인 WP-영(0)신호와 OR회로(68)의 출력인 RP-영(0)신호가 활성화되어 명령선취버퍼(43)의 리드포인터, 라이트포인터가 초기화된다. 조건분기 1신호가 활성화된다. 즉, 분기는 확률이 높은 분기명령인 명령이 데코드된 경우에는 OR회로(66)의 출력이 1이 됨으로써 WP2-래치-인에블신호의 활성화에 의해서 라이트 포인터 2의 래치를 인에이블하고 현재의 라이트포인터 WP2를 여기에 세이브시킨다.
또, OR회로(63)의 출력의 WP-영(0)도 활성화되어 라이트 포인터의 엔트리 번호부를 영(0)으로 한다. OR회로(62)의 출력WS-반전의 신호가 활성화되고 배타적 논리합회로(51)(제 7 도)에 의해서 WS 플립폴립의 값을 반전시켜 라이트 포인터의 최상위 비트(WS)기 1로 된다. 따라서 명령선취 버퍼로의 기입어드레스가 사이드 1로부터 사이드 2측으로 옮겨간다. 또 WP-영의 활성화에 의해서 사이드 1로부터 사이드 2측으로 옮겨간다. 또 WP-영의 활성화에 의해서 사이드 2의 선두어드레스를 지시하게 된다. 이것이 라이트 사이드 반전동작이 즉, 명령선취의 명령으로서 분기선 명령이 명령선취 버퍼(43)의 사이드 2에 제공된 동작으로 된다. 또 명령선취버퍼로부터의 리드동작에 대해서도 마찬가지로 사이드 2측으로부터 독출동작으로 옮겨진다. 즉, 조건분기 1신호가 1이 되면 반전회로(73, 74)를 거쳐서 RP2-래치-인에이블신호가 1로 되어 현재의 리드포인터의 값을 리드포인터 2로 세이브시킨다. 또 OR회로(69)의 출력이 1로 되고 그 출력은 OR회로(67, 68)에 입력된다.
RS-반전, RP-영(0)신호가 각각 1로 된다. RS-반전신호가 1이 되면 배타적 논리합회로(52)(제 7 도)에 의해서 RS-FF의 값이 반전된다. 또 RP-영(0)신호가 1이 됨으로써 RS이외의 리드포인터, 즉 엔트리번호부가 영(0)으로 클리어된다. 즉 사이드 2의 선두 어드레스를 지시하게 되고 사이드 2측으로부터 명령이 독출되게 된다. 즉, 조건분기의 분기되는 확률이 높은 경우에는 조건분기 판정을 기다리지 않고 명령선취 버퍼의 사이드 2, 즉 분기선 명령의 선취와 독출을 실행한다.
또 조건분기 1신호가 1일 경우에는 OR회로(77)의 출력이 1이 되어 D타입 프립플롭(78)의 상태를 1로 한다. 이 플립플롭은 조건분기 1의 데코드되어 분기조건성립, 불성립 신호중 어느 것이 오도록까지 1을 보지 하는 것이다. 즉, 분기조건성립, 불성립신호가 모두 영(0)인 경우에는 NOR회로(75)의 출력이 1이 되고 Q=1과 NOR회로 출력=1에 의해서 AND(76)의 출력이 1이 되어 OR77을 거쳐서FF를 재차 1로 한다. 즉, 1의 보지가 계속된다. 분기조건성립, 불성립신호는 명령선취 버퍼의 사이드 2측으로의 명령기입 또는 명령독출을 실행하고 있는 동안에 지연되어 입력된다. 조건분기 1이 활성화되면서 Q=1의 상태로 되고 그 후의 분기조건성립이 1이 되면 Q=1이므로 반전회로(71)의 출력이 영(0)으로 되고 분기조건 성립신호가 1이라도 AND회로(70)의 출력은 영(0)이 되고 버퍼의 사이드 2에 대한 독출, 기입동작을 그대로 실행한다. 또 조건분기 성립신호가 영(0)이 되면, AND회로(76), OR회로(77)을 거쳐서 플립플롭의 출력 Q를 영(0)으로 되돌린다.
한편, 분기조건 불성립신호가 1이 된 경우에는 현재 독출, 기입이 행해지고 있는 사이드 2의 분기선 명령의 독출을 정지하고 사이드 1측으로 되돌아가 분기명령에 뒤이은 명령의 독출, 기입동작을 실행할 필요가 있다. 따라서 분기조건 불성립신호가 1이 됨으로써 OR회로(62)의 출력WP-반전이 1이 되고 WS를 반전 즉, 1로부터 영(0)으로 되돌리고 또 반전회로(64. 65)를 거쳐서 WP2-WS복원신호를 1로 하여 라이트 포인터 2에 세이브되어 있었던 값을 라이트 포인터로 되돌리는 제어가 행해진다. 독출동작에 대해서도 마찬가지이며 분기조건 불성립신호가 1이 됨으로써 Q=1이므로 AND회로(72)의 출력이 1로 되어 OR회로(67)의 출력 RS-반전신호를 1로하고 또 PR-RS 복원신호를 1로 한다. 즉, RS신호를 1로부터 영(0)으로 되돌리고 독출을 사이드 1측에서 실행하기 위하여 리드포인터 2에 세이브되어 있었던 내용을 리드포인터(46)로 되돌리는 제어가 행해진다. 또 분기조건 불성립신호가 1이 되면 NOR회로(75)의 출력이 영(0)으로 되어 AND회로(76)의 출력을 영(0)으로 하므로 다음 클록으로 FF의 Q를 영(0)에 리세트한다.
조건분기 2 즉, 분기되는 확률이 낮은 경우에는 명령선취버퍼로의 기입에 대해서는 사이드 2측에 대해서 실행된다. 즉, OR회로(66)의 출력이 1이 됨으로써 WS를 반전시키고 WP-영(0)를 1로 하고 엔트리 번호부를 영(0)으로 하고 현재의 라이트 포인터의 엔트리번호를 라이트 포인터 2에 세이브하기 위하여 WP2-반전-인에이블신호를 1로 한다. 그러나, 조건분기 2의 경우에는 명령순취 버퍼로부터의 독출에 대해서는 사이드 1측에서 행한다. 즉 독출을 제어하는 제어신호에 대해서는 조건분기 2신호는 관계가 없고 따라서 조건분기 명령에 뒤이은 명령이 기억되어 있는 사이드 1측에서 독출된다. 또, 그 후에 분기조건 성립신호가 1이 되면 Q=0이므로 AND회로(70)의 출력이 1이 되어 사이드 2측으로 옮기는 동작이 실행된다. 또 라이트 동작의 사이드와 같은 사이드로 된다. 또 분기조건 불성립이 1이 된 경우에는 라이트동작에 대해서는 사이드 2로부터 사이드 1로 되돌릴 필요가 있으므로 OR회로(62)의 출력 WS-반전신호를 1로 하고 또 WP2-WP복원신호를 1로 하여 라이트 포인터 2의 내용을 라이트 어드레스로 하여 사용하도록 제어가 실행된다.
다음에 조건명령의 구성에 대해서 설명하겠다.
제 9 도는 조건분기명령 Bcc(Branch conditionaly)의 내용이다.
OP코드는 Bcc인 것을 나타낸다. PC 옵세트는 조건이 성립된 경우에 분기하는 분기선 어드레스를 현재의 프로그램 카운터의 옵세트(상대치)로서 나타낸 것이다. 분기조건 코드는 4비트로 되고(0000)은 ALU의 캐리플래그가 0인 경우에는 분기되는 것이다. 그들은 니모닉(mnemonic) 표시로 BXS, BXC이다.
B는 브랜치(분기), X는 캐리를 나타내고 S와 C는 각각 세트와 클리어를 나타낸다. ALU의 ZERO 플래그가 1 또는 0일 경우 조건코드는 각각(0010),(0011)에 대응하고 니모닉으로는 BEQ, BNE에 대응한다. 여기서 EQ는 동일(equal), NE는 다름(not equal)을 나타낸다. (0100)와 (0101)는 각각 비교결과가 낮은 경우와 높은 경우에 상당하고, 낮은 경우에 분기하는 것이 BLT이고, 낮지 않는 경우가 BGF에 대응한다.
LT는 이하(lessthan), GE는 동일 또는 그이상(greater equal)을 나타낸다. (0110)와 (0111)는 비교가 동일 또는 낮을 경우에 분기하는 경우와 그렇지 않을 경우에 분기하는 경우에 각각 상당한다. 니모닉으로는 BLE, BGT에 상당하고, LE는 동일 또는 그 이하(less equal) GT는 이상(greaterthan)에 대응한다.
또 ACB(Add compare & Branch)/SCB(Subtract compare & Branch) 명령은 명령 코드중에 분기조건코드를 갖지 않지만, 예를들면 ACB에서는 카운터치가 리미트치 미만이면 분기이므로 BLT에 상당하고, SCB에서는 카운터치가 BGT에 상당한다. 이 경우에 분기조건코드는 마이크로 프로그램에 의해서 지정된다.
제 10 도는 분기제어회로와 플래그 생성회로의 실시예이다.
연산부의 연산기(81 : 로부터의 ALU의 캐리-
Figure kpo00001
등이 출력되고 쉬프터에서 쉬프터 캐리-
Figure kpo00002
등이 출력된다. 이들은 상태플래그라고 칭한다. 상태 플래그 생성조건은 마이크로 프로그램 코드의 지정에 의해서 유효인지 무효인지 결정된다. 그 때문에 마이크로 코드로부터의 상태 플래그 생성조건을 데코드한 신호와 각 플래그와의 AND가 취해진다. 제 10 도에서는 부의 논리방식의 데코더나 연산기로부터의 신호가 출력되므로 NOR회로에서 그들의 유효, 무효가 결정되고 있다. 상태 플래그버스의 각 버스의 열선이 X(캐리), Z(0), L(로우[마이너스]), ...., V(오버플로우) 등의 플래그에 대응하고 있다.
예를들면 각 플래그버스는 클록신호
Figure kpo00003
신호의 로우(L)에 의해서 PMOS 트랜지스터가 ON이 되고 버스가 하이(H)상태로 되어 있다. 또 데코더회로(82)의 출력선(83)이 0이고, 또한
Figure kpo00004
신호가 로우(L)일때에 NOR회로(84)의 출력이 하이(H)로 되고 NMOS 트랜지스터(85)를 ON한다. 그렇게 하면 하이상태에 있었든 X플래그 버스가 로우로 되어 부의 논리로 활성화된다. 마찬가지로 쉬프트캐리(SFCARRY)가 로우(L)이고 마이크로 명령이 쉬프트캐리(AFTCARRY)를 지정하고 있으면 NOR회로(86)의 출력이 하이(H)로 되어 MOS회로(87)를 ON으로 하여 X를 로우(L)로 한다.
Z 플래그 버스는 ALUZERO 신호가 로우(L)이고 또 마이크로 지정이 있었든 경우에 로우(L)로 된다. 이들 상태 플래그는 클록신호 CLKY의 입력에 의해서 래치회로(88)에 래치된다. 래치회로(88)의 출력은 반전되고 분기조건코드의 상위 3비트 즉 제 9 도의 분기조건 코드의 상위 3비트의 각각과 AND회로(89)에서 분기 조건에 따른 조건이 형성된다. 그들은 OR회로(90)에 의해서 OR되고 배타적 논리부(91)로 입력된다. 그 배타적 논리부(91)의 다른 입력은 분기조건 코드의 최하위 비트(LSB)가 입력되어 있다. 그것이 1인 경우에는 OR회로(90)의 출력은 반전되고 0인 경우에는 그 출력은 반전되지 않는다. 배타적 논리부(91)의 출력이 분기조건 성립을 나타내는 신호이지만 실제로는 마이크로 프로그램으로부터 지정에 따른 분기조건 판정 타이밍 신호가 1일 때에 AND회로(92)를 거쳐서 분기조건 성립신호를 출력한다.
또 배타적 논리부(91)의 출력의 반전과 분기조건 판정 타이밍 신호와의 AND회로(93)의 출력이 분기조건 불성립 신호로 된다.
이와 같이 상태 플래그는 ALU, 쉬프터등의 각 연산기로부터 캐리나 제로체크의 결과등의 신호와 마이크로 지시에 준하여 X(캐리), Z(0), L(로우[마이너스]),....V(오버플로우) 등의 플래그를 연산기의 어느 신호에 의해서 생성되느냐를 나타내는 신호를 조합해서 생성된다. 예를들면 CMOS의 회로에서는 다이나믹 논리회로를 이용하고 플래그세트 조건과 연산기 출력의 논리적=1일때 플래그 버스의 신호선에 연결되는 NMOS 트랜지스터을 ON으로 하고 버스선 L레벨로 한다. 세트하는 조건이 하나도 성립하지 않으면 그 버스선은 프리챠지에 의해서 H레벨로 되어 있는 채로 된다.
분기조건을 예를들면 제 9 도와 같이 정의 되고 이에 따르면 조건으로 하는 플래그의 선택과 그 플래그의 세트, 클리어 어느 상태를 선택하느냐로 지정된다.
그런데 제 10 도와 같이 플래그 비트를 선택하는 데코더의 출력에 따라서 선택된 플래그를 조건에 의해서 배타적 논리합으로 반전하고 마이크로로부터의 분기판정 타이밍 지시도 조건분기성립 또는 불성립을 판단한다.
제 11 도는 조건 분기중에서 분기되는 확률이 높은 명령을 과거의 이력으로 예측하기 위한 블록도이다. 과거에 등록된 분기명령 어드레스의 각각은 현재의 프로그램 카운터(PC)의 값이나 비교기(100∼104)에서 비교되고 어느 것에 일치된 경우에 분기명령 어드레스(105)에 대응하는 분기선 명령 버퍼(106)의 내용을 독출한다. 그러기 위하여 비교회로의 비교결과를 OR회로(107)를 거쳐서 얻어지는 분기 윈도우 히트 신호(Branch window hit signal)를 생성한다. 이 신호가 1이 되면 인에이블회로(108)의 출력이 인에이블로 되므로 분기선 명령버퍼 1, 2, 3, 4중 비교결과로 인에이블된 레지스터의 내용이 데코더에 제공된다.
분기 윈도우 히트 신호가 0, 즉 PC가 어느 분기 명령 어드레스와 일치되지 않는 경우는 분기 윈도우 히트신호가 0이므로 반전회로(109)에 의해서 인에이블회로(110)를 인에이블하고 명령선취버퍼로부터의 통상과 같은 명령 데코더로 출력된다. 즉 이것이 이력에 의한 분기방향 예측의 예의 원리이다.
이 시스템은 여러 엔트리(예를들면 4엔트리)의 분기선 명령 버퍼와 한조가 되는 분기명령 어드레스 기억용 레지스터를 갖고 있다. 분기명령 어드레스 기억부에는 과거에 분기조건이 성립된 Bcc 명령이 명령 어드레스가 등록되고 또 분기선 명령 버퍼에는 그에 대응하는 분기선 명령이 등록되어 있다. 프로그램 카운터의 값이 등록된 분기선 명령중 그 어느 것과 일치된 경우에는 과거에 분기된 Bcc명령을 재차 실행하게 되므로 이번에도 분기될 확률이 높다고 판단하여 분기선 명령 버퍼로부터의 명령을 독출하여 명령데코더(PLA)(111)로 공급한다. 명령선 버퍼(43)에는 분기선 명령의 다음 명령이 선취된다. 분기 윈도우가 히트된 경우에 분기조건이 성립되지 않았을 때에는 해당 엔트리의 등록이 말소된다.
또 분기윈도우에 히트되지 않은 Bcc명령은 통상과 같이 명령선취 버퍼(43)를 사용하여 처리되지만 그것이 분기조건이 성립된 경우에는 분기윈도우의 미사용 엔트리 또는 그것이 없는 경우에는 구엔트리의 어느 것인가를 추방하여 분기 명령 어드레스 및 분기선 명령코드를 등록한다.
또 이상은 디버그루틴의 트레이스를 예로하여 설명하였으나 본 발명은 디버그루틴의 트레이스 이외의 조건 분기명령을 실행하는 경우에도 적용시킬 수 있음은 물론이다.
이상 설명한 바와 같이 본 발명에 의하면 파이프라인 처리를 행하는 마이크로 프로세서의 분기트레이스에 대해서는 조건 분기명령의 조건 판정이 명령 처리의 최후 사이클에서 행해지더라도 파이프라인 처리의 교란을 일으키지 않고 처리가 진행되어 명령처리 속도의 향상에 기여하는 바가 크다.

Claims (21)

  1. 파이프라인 처리에 의해서 명령을 순차 실행하는 분기명령 실행장치에 있어서, 조건 분기명령을 데코드하는 명령 데코드부(1)와 ; 당해 조건의 판정결과를 기다리지 않고 조건성립을 추정하여 분기선 명령의 실행유무를 지시하는 분기선 실행 플래그(33)를 제공하는 분기판정부(3)와, 상기 분기판정부(3)에 의해, 실제의 판정결과가 얻어졌을때에 상기 분기선 실행 플래그(33)의 내용을 수정하는 디버그 제어부(4)를 포함하는 것을 특징으로 하는 분기명령 실행장치.
  2. 제 1 항에 있어서, 상기 분기선 실행 플래그(33)는 디버그 예외 발생 플래그이고 상기 분기선은 디버그루틴인 것을 특징으로 하는 분기명령 실행장치.
  3. 파이프라인 처리에 의한 각 명령의 실행중에 분기된 명령을 실행하는 분기명령 실행장치에 있어서, 조건부 분기명령을 데코드하는 명령 데코드부(1)와, 당해 조건의 판정결과를 기다리지 않고 상기 조건의 성립을 추정하여 분기선 명령을 실행하는 분기판정부(3)와, 상기 분기판정부(3)에 의해 실제 판정결과가 얻어진 시점에서 분기 불성립일 경우에 사이 분기선 명령의 실행을 취소하는 디버그제어부(4) ; 를 포함하는 것을 특징으로 하는 분기명령 실행장치.
  4. 메인 메로리 유니트(11)로부터의 명령을 폐치하여 그것을 해독 연산하는 분기명령 실행장치에 있어서, 각 명령을 해독하고 해독된 명령이 무조건 분기인 경우에 분기될 확률이 높은 조건분기 명령의 경우 또는 분기될 확률이 낮은 조건분기 명령인 경우에 각각 무조건 분기신호, 조건분기 1신호, 조건분기 2신호를 출력하는 명령 데코드수단(12) ; 및 상기 조건부 분기명령의 조건이 성립하는 경우에는 조건 성립신호를 활성화되는 경우에는 조건 불성립신호를 활성화하는 판정수단(21) ; 상기 분기 불성립신호가 활성화되는 경우에 분기선 명령의 실행을 취소하고 또한 상기 데코드수단(12)으로부터 조건분기 1신호가 활성화된 경우 분기조건 성립 또는 불성립의 결과를 기다리지 않고 조건분기를 제어하는 제어수단 ; 을 포함하는 것을 특징으로 하는 분기명령 실행장치.
  5. 메인 메모리 유니트(11)로부터의 명령을 폐치하여 그것을 해독 연산하는 명령해독 실행장치 ; 해독된 명령이 무조건 분기인 경우에 활성화되는 무조건 분기신호, 분기될 확률이 높은 조건분기 명령인 경우에 활성화되는 조건분기 1신호 또는 분기될 확률이 낮은 조건분기 명령인 경우에 활성화되는 조건분기 2신호를 출력하는 명령 데코드수단(12) ; 상기 명령 데코드수단에 의해서 어드레스 제어되는 마이크로 프로그램을 기억하는 마이크로 기억수단(13) ; 상기 마이크로 기억수단(13) ; 상기 마이크로 기억수단(13)으로부터의 출력에 의해서 제어를 행하는 연산수단(14) ; 상기 명령 데코드수단(12)으로부터의 상태 플래그와 상기 명령 데코드수단(12)에서 제공되는 분기 조건코드를 사용하여 상기 마이크로 기억수단(13)으로부터의 마이크로 지시에 따라서 상기 조건분기 명령의 조건이 성립되는 경우에는 조건성립 신호를 활성화하고, 조건이 불성립의 경우에는 조건 불성립신호를 활성화하는 판정수단(21) ; 상기 명령 데코드수단(12)으로부터의 조건분기 1신호가 활성화되어 있는 경우에 상기 판정수단(21)으로부터의 조건성립, 불성립의 결과를 기다리지 않고 조건분기를 행하는 분기실행비트를 설정하고, 상기 판정수단(21)의 판정결과로서 분기 불성립신호가 활성화되는 경우에는 상기 분기선실행비트의 수정을 행하는 제어수단(4)을 포함하고 있는 것을 특징으로 하는 분기명령 실행장치.
  6. 제 5 항에 있어서, 데코드 스테이지(DC), 어드레스 계산 스테이지(AC), 마이크로 명령 독출(MI) 스테이지(MI), 실행 스테이지(OE) 및 실행결과 기입 스테이지(OW)로 되는 파이프라인 동작에 있어서, 상기 조건분기 2신호가 활성화되어 있는 경우에는 그 이전의 명령의 실행 스테이지에서 실행되는 연산부의 실행결과로서 생기는 상태 플래그의 생성을 보고 분기할 것인가 여부의 판정을 행하고, 분기하는 경우에는 조건분기 2신호를 발생한 분기명령에 뒤이은 명령을 취소하고, 상기 조건분기 1신호가 활성화되어 있는 경우에는 조건분기 1명령의 분기선 어드레스 계산의 어드레스 계산 스테이지 직후에 분기선명령을 선취하여 분기선 명령의 데코드 스테이지로 들어가고 실행 스테이지에서 실행되는 연산부의 실행결과로서 생기는 상태플래그의 생성을 보고 분기할 것인지 여부를 판정하고, 분기하는 경우에는 그대로 분기선 명령의 파이프라인 동작을 실행하고, 분기하지 않는 경우에는 분기선 명령을 취소하고 그 기입스테이지에 뒤이은 데코드 스테이지로부터 조건분기 1신호를 생성한 조건분기 명령에 뒤이은 데코드 스테이지로 들어가는 것을 특징으로 하는 분기명령 실행장치.
  7. 제 5 항에 있어서, 상기 명령 데코더(12)는 명령 선취 요구를 행하는 명령 선취 요구회로(41) ; 조건 분기 명령의 비분기축 명령열과 분기측 명령열을 각각 기억하는 2개의 영역을 갖고 있으며, 상기 선취 요구회로(41)로부터의 명령 선취 요구신호가 명령캐슈(42)에 제공되고 그것에 대한 응답신호가 출력된 경우에 상기 명령캐슈에서 명령을 선취하여 기입하고 또 기입한 명령을 독출하는 동작을 실행하는 명령 선취 버퍼(43) ; 상기 명령 선취 버퍼(43)로부터 독출되는 명령코드를 데코드하는 데코드수단(47) ; 상기 데코드수단(47)으로부터 무조건 분기명령인 경우에 활성화되는 무조건 분기명령신호, 분기확률이 높은 경우에 활성화되는 조건분기 명령 1신호, 분기확률이 낮은 경우에 활성화되는 조건분기 명령 2신호를 입력하고 상기 명령 선취 버퍼(43)의 라이트 포인터 또는 리드포인터(56)의 값을 변화시키는 제어를 행하고 또 조건분기의 성립, 불성립을 제어하는 판정회로로부터 보내오는 조건분기 성립신호와 조건분기 불성립신호의 입력에 의해서 상기 변화된 라이트 포인터 또는 리드포인터의 값을 소정시간 후에 재차 변화시키는 명령 선취 버퍼 제어수단(50) ; 상기 명령 선취 버퍼(43)의 제 1 및 제 2의 영역에 명령을 분배하기 위하여 기입어드레스를 생성 또는 세이브하는 라이트 포인터 수단(54) ; 및 상기 명령 선취 버퍼의 제 1 및 제 2의 영역으로부터 명령을 분배하는 독출어드레스를 생성 또는 세이브하는 리드포인터 수단(56) ; 을 포함하는 것을 특징으로 하는 분기명령 실행장치.
  8. 제 7 항에 있어서, 상기 명령 데코드수단(47)이 무조건 분기를 데코드한 경우에는 라이트 포인터, 리드포인터의 기억용 레지스터(44, 46)의 엔트리번호를 모두 영(0)으로 하여 WS=RS이 되도록 사이드 지정비트를 초기화하는 수단(50)과 실행부에서 분기 어드레스 계산결과가 해당되는 하위부를 뽑아내어 리드포인터 기억용 레지스터(46)의 엔트리내의 옵세트부에 세트하는 수단(68)을 갖고 상기 명령 선취 버퍼의 한쪽 영역에 대해서 리드, 라이트를 행하는 것을 특징으로 하는 분기명령 실행장치.
  9. 제 7 항에 있어서, 상기 명령 데코드수단(47)이 분기확률이 높은 명령인 조건분기신호을 데코드한 경우에는, 라이트포인터, 리드포인터 기억용 레지스터(44, 46)의 엔트리번호부를 모두 영(0)으로 하여 WS=RS 모두 반전(역 사이드)하는 수단과 리드포인터의 엔트리내 옵세트부에 실행부로부터 분기 어드레스 계산결과가 해당되는 하위부를 뽑아내어 세트하는 수단과 그 이전의 라이트 포인터, 리드포인터의 값을 각각 라이트 포인터와 리드포인터 기억용 레지스터에 세이브하는 수단(54, 56)과 이 상태에서 명령 선취 버퍼의 역 사이드에 분기선 명령을 선취하고 독출하여 실행하는 명령 선취 요구수단(41)과 그 후에 분기판정 결과에 의해서 분기조건 성립의 경우에는 그대로 계속하고 분기조건 불성립의 경우에는 명령실행을 취소하고 라이트 포인터, 리드포인터 기억용 레지스터(44, 46)에 각각 라이트 포인터와 리드 포인터 세이브용 레지스터(54, 56)에 세이브하고 있던 값을 되돌리고 또 WS/RS 모두를 반전하고 명령 선취 버퍼의 어드레스는 비분기측으로 되돌리는 명령 선취 버퍼 제어수단(50)을 갖는 것을 특징으로 하는 분기명령 실행장치.
  10. 제 7 항에 있어서, 상기 명려 데코드수단(47)이 분기확률이 낮은 명령인 조건분기 2를 데코드한 경우에는 라이트 포인터의 값을 라이트 포인터 세이브용 레지스터(54)에 세이브하고 라이트 포인터 기억용 레지스터(56)의 엔트리번호부를 영(0)으로 하고 WS를 반전하고 리드 포인터는 그대로 하는 수단(54)과 그 후에 분기판정결과에 의해서 분기조건성립의 경우에는 명령실행을 취소하고 리드포인터 기억용 레지스터의 엔트리부를 영(0)으로 하고 옵세트부에 분기 어드레스의 하위측을 로드하고 RS를 반전하도록 제어하는 수단(50)과 분기조건 불성립의 경우에는 명령 버퍼의 독출, 데코드 및 실행은 그대로 계속하고 라이트 포인터 기억용 레지스터에 라이트 포인터 2세이브용 레지스터에 세이브되어 있던 값을 되돌리고 WS를 반전하는 수단(50)을 갖는 것을 특징으로 하는 분기명령 실행장치.
  11. 제 7 항에 있어서, 상기 명령 선취 버퍼 제어수단(50)은 무조건 분기, 조건분기 1, 조건분기 2, 분기 조건 불성립 분기조건 성립신호들을 입력하고 무조건 분기신호가 활성화되는 경우에는 라이트 포인터, 리드 포인터(44, 46) 모두를 클레어하고 조건분기 1이 활성화된 경우에는 라이트 포인터를 세이브용 레지스터(54)에 세트하는 인에이블신호 및 역 사이드로 옮기는 제어신호를 형성하고 리드포인터 세이브용 레지스터(56)에 세트하는 인에이블신호 및 역사이드로 옮기는 제어신호을 형성하고 조건분기 1신호가 데코드되고 나서 분기 조건성립, 불성립신호중 어느 것이 입력되도록 까지 세트되어 있는 플립플롭(78)에 의해서 조건분기 1의 실행을 판단하고 분기조건 불성립의 경우에는 리드포인터 및 라이트 포인터을 세이브상태로부터 원래대로 되돌리고 분기명령에 뒤이은 명령의 선취, 데코드를 재개하고 조건분기 신호 2가 활성화되어 있는 경우에는 라이트 포인터를 세이브용 레지스터에 세트하는 인에이블신호 및 역사이드로 옮기는 제어신호를 형성하고 분기신호 불성립이 활성화된 경우에는 세이브상태로부터 원래대로 라이트포인터를 되돌리고 원래의 분기명령에 뒤이은 명령의 라이트를 실행하는 제어신호를 발생하고 분기조건 성립신호가 활성화된 경우에는 리드포인터를 역 사이드로 옮기는 제어신호를 발생하는 것을 특징으로 하는 분기명령 실행장치.
  12. 제 5 항에 있어서, 상기 분기선 명령 실행비트로 구동되는 처리는 디버그루틴인 것을 특징으로 하는 분기명령 실행장치.
  13. 제 12 항에 있어서, 상기 분기명령으로서 디버그루틴으로 점프한 경우에 이 디버그루틴인 것을 특징으로 하는 분기명령 실행장치.
  14. 제 5 항에 있어서, 상기 조건분기 1신호를 발생한 조건분기 명령은 DO LOOP인 것을 특징으로 하는 분기명령 실행장치.
  15. 제 14 항에 있어서, 상기 DO LOOP는 카운트 갱신과 동일 실행 스테이지에 DO LOOP로 부터 벗어나기 위한 리미트치와의 비교를 행함으로써 실행되는 것을 특징으로 하는 분기명령 실행장치.
  16. 제 14 항에 있어서, 상기 DO LOOP는 DO LOOP의 카운트 갱신을 행하는 제 1 실행 스테이지와 그 DO LOOP로 부터 벗어나기 위한 리미트치와의 비교를 행하는 제 2 실행 스테이지로 실행하는 것을 특징으로 하는 분기명령 실행장치.
  17. 제 5 항에 있어서, 상기 판정수단이 연산부에서 출력되는 상태 플래그를 마이크로 지시에 의한 상태 플래그 생성조건에 의해서 유효하게 하느냐 무효로 하느냐를 결정하는 수단과, 유효로 된 상태 플래그를 조건분기명령의 분기조건 코드에 의해서 상기 분기조건의 성립 또는 불성립을 결정하는 수단을 갖는 것을 특징으로 하는 분기명령 실행장치.
  18. 제 5 항에 있어서, 상기 명령 해독 실행장치는 1칩의 CPU내에 설비되고 디버그루틴을 격납하는 메모리도 이 CPU내에 설비된 것을 특징으로 하는 분기명령 실행장치.
  19. 제 5 항에 있어서, 상기 명령 데코드수단은 과거에 분기조건이 성립된 분기명령의 명령 어드레스를 등록하는 복수의 분기명령 어드레스 기억부(105)와, 상기 분기명령 어드레스에 대한 분기선 명령을 등록하는 분기선 명령 버퍼수단(106)과, 현재의 프로그램 카운터치와 상기 분기명령 어드레스 기억부에 기억되어 있는 복수의 분기명령 어드레스를 각각 비교하는 비교수단(101-104)과, 상기 비교수단의 비교결과 프로그램 카운터의 값이 분기명령 어드레스중 어느 것과 일치된 경우에는 일치된 분기명령 어드레스에 대응하는 분기선 명령을 상기 분기선 명령 버퍼로부터 독출된 데코더에 제공하고 또 동시에 분기확률이 높은 명령을 나타내는 조건분기 1신호를 활성화하여 프로그램 카운터의 값이 상기 분기명령 어드레스 기억부의 어느 어드레스에도 일치되지 않는 경우에는 명령 선취의 버퍼의 명령을 상기 명령 데코더에 제공하고 분기확률이 낮은 명령을 나타내는 조건분기 2신호를 활성화하는 제어를 행하는 분기예측수단(107)을 갖는 것을 특징으로 하는 분기명령 실행장치.
  20. 파이프라인 처리에 의한 각 명령어의 실행중에 분기된 명령어를 순차 트레이스하는 방법에 있어서 조건부 분기명령이 데코드된 경우에 당해 조건의 판정결과를 기다리지 않고 즉시 조건성립을 추정하여 디버그 예외 발생비트를 설정하고 그 후에 실제 판정결과가 나온 시점에서 디버그 예외 발생비트의 내용을 수정하는 것을 특징으로 하는 분기명령 트레이스 방법.
  21. 파이프라인 처리에 의한 각 명령어의 실행중에 분기된 명령어를 순차 트레이스하는 방법에 있어서, 조건부 분기명령이 데코드된 경우에 당해 조건의 판정결과를 기다리지 않고 즉시 조건성립을 추정하여 분기선 명령을 실행하고 그후에 실제의 판정결과가 나온 시점에서 만약 분기분성립의 경우에는 상기 분기선 명령의 실행을 취소하는 것을 특징으로 하는 분기명령 트레이스 방법.
KR1019900009050A 1989-06-20 1990-06-20 분기명령 실행장치 및 분기명령 트레이싱방법 KR930009756B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP15790489 1989-06-20
JP1-157904 1989-06-20

Publications (2)

Publication Number Publication Date
KR910001538A KR910001538A (ko) 1991-01-31
KR930009756B1 true KR930009756B1 (ko) 1993-10-09

Family

ID=15659980

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900009050A KR930009756B1 (ko) 1989-06-20 1990-06-20 분기명령 실행장치 및 분기명령 트레이싱방법

Country Status (4)

Country Link
US (1) US5715440A (ko)
EP (1) EP0404068A3 (ko)
JP (1) JPH0795271B2 (ko)
KR (1) KR930009756B1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528002A (ja) * 1991-07-24 1993-02-05 Nec Corp マイクロプロセツサ
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
JP3699518B2 (ja) * 1995-01-26 2005-09-28 サン マイクロシステムズ インコーポレイテッド パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
US6026236A (en) * 1995-03-08 2000-02-15 International Business Machines Corporation System and method for enabling software monitoring in a computer system
TW470915B (en) * 1996-03-12 2002-01-01 Matsushita Electric Ind Co Ltd Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations
JP3203180B2 (ja) * 1996-03-27 2001-08-27 三菱電機株式会社 幾何学演算装置
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
US6112298A (en) * 1996-12-20 2000-08-29 Texas Instruments Incorporated Method for managing an instruction execution pipeline during debugging of a data processing system
US6052753A (en) * 1997-01-21 2000-04-18 Alliedsignal Inc. Fault tolerant data bus
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6122729A (en) * 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US6553564B1 (en) * 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
EP0992907B1 (en) * 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
GB2362968B (en) 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
GB2366006B (en) * 1999-12-23 2004-06-30 St Microelectronics Sa A computer system with debug facility
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
GB2365546B (en) 1999-12-23 2004-02-18 St Microelectronics Sa A computer system with two debug watch modes
GB2362729B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Memory access debug facility
US6842811B2 (en) * 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US7350110B2 (en) * 2002-01-14 2008-03-25 International Business Machines Corporation Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
US8959500B2 (en) * 2006-12-11 2015-02-17 Nytell Software LLC Pipelined processor and compiler/scheduler for variable number branch delay slots
JP5082716B2 (ja) * 2007-09-20 2012-11-28 富士通セミコンダクター株式会社 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
GB2481385B (en) * 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
GB2487355B (en) * 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
WO2013128238A1 (en) * 2012-02-29 2013-09-06 Freescale Semiconductor, Inc. Debugging method and computer program product
US10802828B1 (en) 2018-09-27 2020-10-13 Amazon Technologies, Inc. Instruction memory

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS518841A (ja) * 1974-07-09 1976-01-24 Hitachi Ltd Bunkimeireiseigyohoshiki
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4338661A (en) * 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
JPS57153342A (en) * 1981-03-19 1982-09-21 Mitsubishi Electric Corp Pipeline computer
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
JPS59223850A (ja) * 1983-06-03 1984-12-15 Fuji Electric Co Ltd 命令先読み制御方式
JPH0752390B2 (ja) * 1985-05-07 1995-06-05 株式会社日立製作所 命令処理装置
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
JPS6255738A (ja) * 1985-09-04 1987-03-11 Hitachi Ltd プログラムカウンタトレ−ス機構をもつデ−タ処理装置
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
JPS63245525A (ja) * 1987-03-31 1988-10-12 Toshiba Corp マイクロプログラム処理装置
JPH0195331A (ja) * 1987-10-08 1989-04-13 Fujitsu Ltd パイプライン処理システム
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
US5129087A (en) * 1988-02-03 1992-07-07 International Business Machines, Corp. Computer system and a method of monitoring transient data structures in a computer system
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction

Also Published As

Publication number Publication date
KR910001538A (ko) 1991-01-31
US5715440A (en) 1998-02-03
JPH03129441A (ja) 1991-06-03
EP0404068A3 (en) 1991-12-27
JPH0795271B2 (ja) 1995-10-11
EP0404068A2 (en) 1990-12-27

Similar Documents

Publication Publication Date Title
KR930009756B1 (ko) 분기명령 실행장치 및 분기명령 트레이싱방법
EP0399760B1 (en) Paired instruction processor branch recovery mechanism
EP0399762B1 (en) Multiple instruction issue computer architecture
KR100667120B1 (ko) 이중 모드 시스템에서 혼합 명령 스트림 내의 상이한 명령세트의 분기 명령 에뮬레이팅
US5596733A (en) System for exception recovery using a conditional substitution instruction which inserts a replacement result in the destination of the excepting instruction
US6591378B1 (en) Debug controller in a data processor and method therefor
US6289445B2 (en) Circuit and method for initiating exception routines using implicit exception checking
KR20010050794A (ko) 개선된 분기 제어 명령을 이용하는 프로세서 구조 및동작
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JPH0863356A (ja) 分岐予測装置
US20040044884A1 (en) Evaluation of condition codes in a data processing apparatus
US6189093B1 (en) System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
JP2019197442A (ja) 演算処理装置及び演算処理装置の制御方法
US5666507A (en) Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing
US20050216713A1 (en) Instruction text controlled selectively stated branches for prediction via a branch target buffer
JP7064135B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20060200654A1 (en) Stop waiting for source operand when conditional instruction will not execute
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
US6990569B2 (en) Handling problematic events in a data processing apparatus
US5212779A (en) System for guarantee reexecution after interruption by conditionally used store buffer if microinstruction being executed is a memory write and last microinstruction
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
KR20160108754A (ko) 파이프라인 구조의 프로세서에서의 무조건 분기 명령어 처리 방법
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
EP0737334B1 (en) Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee