KR19990013491A - 프로그램 제어방법 - Google Patents

프로그램 제어방법 Download PDF

Info

Publication number
KR19990013491A
KR19990013491A KR1019980025862A KR19980025862A KR19990013491A KR 19990013491 A KR19990013491 A KR 19990013491A KR 1019980025862 A KR1019980025862 A KR 1019980025862A KR 19980025862 A KR19980025862 A KR 19980025862A KR 19990013491 A KR19990013491 A KR 19990013491A
Authority
KR
South Korea
Prior art keywords
instruction
branch
address
command
code
Prior art date
Application number
KR1019980025862A
Other languages
English (en)
Other versions
KR100528208B1 (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 KR19990013491A publication Critical patent/KR19990013491A/ko
Application granted granted Critical
Publication of KR100528208B1 publication Critical patent/KR100528208B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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

Landscapes

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

Abstract

명령을 파이프라인(pipeline) 처리하는 정보처리장치에 있어서의 조건분기 제어에 있어서, 파이프라인의 구성이나 명령의 내용에 제한을 받지않게 하면서 분기 해저드를 유효적으로 절감하게 하기 위해서, 조건분기명령의 조건이 확정되기 전에, 즉, 분기판정을 하기전에 조건분기명령의 후속명령의 파이프라인 정보를 퇴피(退避)시키고, 분기목적지명령을 미리 파이프라인에 투입하고, 조건성립시에는 분기목적지명령을 그대로 실행하고, 조건이 성립하지 않은 때에는 퇴피되어 있던 후속명령의 파이프라인 정보를 파이프라인에 되돌려서 조건분기명령의 후속명령을 실행한다.

Description

프로그램 제어방법 및 프로그램 제어장치
본 발명은 명령을 파이프라인(pipeline) 처리하는 정보처리장치에 있어서 조건분기(conditional branch)의 제어를 행하는 프로그램 제어방법에 관한 것이다.
명령을 파이프라인 처리하는 정보처리장치에 있어서 각 명령이 순차적으로 파이프라인으로 보내어져서 순서대로 실행되는 때에는, 명령의 오버랩핑(overlapping) 실행에 의해 명령실행의 고속화가 도모된다. 그러나, 조건분기명령에 의해서 분기하는 경우에는, 조건이 판정된 시점부터 분기목적지명령을 페치(fetch)하기 때문에, 즉, 분기판정을 행한후에 분기어드레스를 프로그램카운터로 설정하기 때문에 파이프라인에 쓸모없는 공간, 즉 분기 해저드(hazard)가 생긴다.
이러한 분기 해저드는 조건성립시쪽이 조건이 성립하지 않았을 때에 비교해서 많다. 명령페치단계가 1단의 경우에는 분기 해저드가 1사이클이 많다. 또한 명령페치단계가 2단의 경우에는 분기 해저드가 2사이클이 많다. 더욱이 명령페치단계가 N단(N은 임의의 양의 정수)의 경우에는 분기 해저드가 N사이클이 많다.
그 문제를 해결하는 수단의 하나로서 종래는, 분기명령의 후속번지에 있는 명령을 지연 슬롯(slot)으로 실행함으로서 파이프라인의 분기 해저드를 감소하는, 소위 지연분기로 불리는 분기방법이 채용된다. 상기한 종래의 분기방법의 한 예로서는 예컨대 특개평 4-127237호 공보에 나타나있다.
상기한 바와 같이 종래의 방법에서는, 지연슬롯의 명령이 분기 해저드의 사이클로 실행되기 때문에 분기명령의 실행사이클은 외견상 감소한다. 그렇지만, 상기한 지연분기에 의한 분기방법에서는, 지연슬롯에 위치할 수 있는 명령에 제한이 있기 때문에 혹은, 분기 해저드의 사이클수가 많은 경우에 지연슬롯에 명령을 적절히 나누는 것이 곤란하게 되는 등의 이유로, 모든경우에 유효하게 분기 해저드를 감소하게 할 수 없는 문제를 가지고 있었다.
본 발명의 목적은 명령을 파이프라인 처리하는 정보처리장치에 있어서의 조건분기제어에 있어서, 파이프라인 구성이나 명령내용등에 제한을 받지않고 분기 해저드를 유효하게 감소시킬 수 있는 프로그램 제어방법을 제공하는 데 있다.
도 1은 본 발명의 제1, 제2, 제3 및 제4실시예에 있어서 프로그램 제어장치의 기본구성을 표시한 블록도이다.
도 2는 본 발명의 제1 및 제3실시예에 있어서 프로그램카운터부의 구체적인 구성을 표시한 블록도이다.
도 3은 본 발명의 제2 및 제4실시예에 있어서 프로그램카운터부의 구체적인 구성을 표시한 블록도이다.
도 4은 본 발명의 제1 및 제2실시예에 있어서 명령레지스터(instruction register)부의 구체적인 구성을 표시한 블록도이다.
도 5은 본 발명의 제3실시예에 있어서 명령레지스터부의 구체적인 구성을 표시한 블록도이다.
도 6은 본 발명의 제4실시예에 있어서 명령레지스터부의 구체적인 구성을 표시한 블록도이다.
도 7은 본 발명의 제1실시예에 있어서 3단 파이프라인의 경우에 조건분기의 제어흐름을 표시한 흐름도이다.
도 8은 본 발명의 제1실시예에 있어서 3단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
도 9은 본 발명의 제2실시예에 있어서 4단 파이프라인의 경우에 조건분기의 제어흐름을 표시한 흐름도이다.
도 10은 본 발명의 제2실시예에 있어서 4단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
도 11은 본 발명의 제3실시예에 있어서 명령페치단계가 2단계의 4단 파이프라인의 경우에 조건분기의 제어흐름을 표시한 흐름도이다.
도 12은 본 발명의 제3실시예에 있어서 명령페치단계가 2단계의 4단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
도 13은 본 발명의 제3실시예에 있어서 명령페치단계가 2단계의 5단 파이프라인의 경우에 조건분기의 제어흐름을 표시한 흐름도이다.
도 14은 본 발명의 제3실시예에 있어서 명령페치단계가 2단계의 5단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
도 15은 본 발명의 제4실시예에 있어서 명령페치단계가 2단계의 6단 파이프라인의 경우에 조건분기의 제어흐름을 표시한 흐름도이다.
도 16은 본 발명의 제4실시예에 있어서 명령페치단계가 2단계의 6단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
도 17은 종래의 3단 파이프라인의 경우의 조건분기의 타이밍을 표시한 타이밍도이다.
도 18은 종래의 명령페치단계가 2단계의 4단 파이프라인의 경우에 조건분기의 타이밍을 표시한 타이밍도이다.
(제1 실시예)
이하에 본 발명의 제1실시예의 조건분기처리에 있어서의 프로그램 제어방법 및 그 장치에 있어서 도면을 참조로 하여 설명한다.
도1은 본 발명의 제1실시예의 프로그램 제어장치의 기본구성을 표시하는 블록도이다. 도1에 있어서 프로그램카운터부(1)은 명령코드를 읽기위한 어드레스발생수단으로서, 분기판정기(4)로부터 조건분기명령이 있는 것을 표시하는 분기신호(14)와 분기목적지명령의 어드레스에 대응하는 분기어드레스(15)를 입력받고, 어드레스(11)을 출력한다. 메모리(2)는 명령코드를 저장하는 명령코드 저장수단으로서 프로그램카운터부(1)로부터 어드레스(11)을 입력받고 어드레스(11)에 대응된 제1명령코드(12)를 출력한다. 명령레지스터부(3)은 명령제어수단으로서 메모리(2)로부터 제1명령코드(12)를 입력받고, 분기판정기(4)로부터 분기신호(14)을 입력받고, 제2명령코드(13)을 출력한다. 분기판정기(4)는 분기판정수단으로서 명령레지스터부(3)으로부터 제2명령코드(13)을 입력받고 연산부(6)으로부터 조건 플래그(flag) 신호(17)를 입력받고, 제2명령코드(13)이 조건분기명령인지를 판정하고 조건분기명령일 때에 분기신호(14)와 조건분기명령중에 포함되어 있는 분기목적지명령의 어드레스, 이른바 분기어드레스(15)를 출력한다. 디코더(decoder)부(5)는 명령을 디코드하는 수단으로서 명령레지스터부(3)로부터 제2명령코드(13)을 입력받고, 제어신호(16)을 출력한다. 연산부(6)은 연산수단으로서 디코더부(5)로부터 제어신호(16)을 입력받고 연산을 실행하여 조건 플래그 신호(17)을 출력한다. 도1의 구성은 다음에 설명하는 제2부터 제4까지의 실시예와 공통이다.
도2는 본 발명의 제1실시예에 있어서 프로그램카운터부(1)의 구성을 나타내는 블록도이다. 도2에 있어서 제1프로그램카운터(101)은 제1어드레스 유지수단으로서 어드레스선택기출력(113)을 입력받고 어드레스(11)을 출력한다. 어드레스가산기(102)은 어드레스(11)를 증가시키는 어드레스 가산수단으로서 어드레스(11)을 입력받고 어드레스 가산기 출력(114)을 출력한다.
제2프로그램카운터(104)는 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 파이프라인 정보의 하나인 조건분기명령의 후속명령의 어드레스를 퇴피(退避)시키는 제2어드레스 유지수단으로서, 어드레스 가산기 출력(114)와 제2프로그램카운터용 분기신호(112)를 입력받고 제2프로그램카운터 출력(115)를 출력하여서 어드레스 가산기 출력(114)은 퇴피시켜진 후속명령의 어드레스에 대응하고 제2프로그램카운터 출력(115)은 파이프라인에 되돌려지는 후속명령의 어드레스에 대응한다.
어드레스 선택기(103)은 어드레스 선택수단으로서, 분기어드레스(15)와 어드레스 가산기 출력(114)와 제2프로그램카운터 출력(115)과 어드레스 선택기용 분기신호(111)을 입력받고 어드레스 선택기 출력(113)을 출력한다. 이 어드레스 선택기(103)에서는 어드레스 선택기용 분기신호(111)을 기초로 하여 조건분기명령의 경우에 분기어드레스(15)를 다음 어드레스로 선택하고, 조건분기명령 이외의 명령인 경우에는 어드레스 가산기 출력(114)를 다음 어드레스로 선택하고, 조건분기명령이 성립되지 않았을 때는 조건분기명령의 실행단계로 제2프로그램카운터 출력(115)을 다음 어드레스로서 선택한다. 도2의 구성은 다음에 설명하는 제3실시예와 공통이다.
그리고 분기판정기(4)는 조건분기명령일 때 실행단계에 있어서, 조건 플래그 신호(17)가 0인 때에는 조건이 성립되지 않은 것으로서, 어드레스 선택기용 분기신호(111)와 제1명령레지스터용 분기신호(311)을 출력한다.
도4은 본 발명의 제1실시예에 있어서 명령레지스터부(3)의 구성을 표시하는 블록도이다. 도4에 있어서 제1명령레지스터(301)은 제1명령유지수단으로서, 제1명령코드(12)와 제1명령레지스터용 분기신호(311)을 입력받고 명령레지스터 출력(314)를 출력한다. 이러한 경우에 제1명령레지스터(301)은 통상 제1명령코드(12)를 매 사이클 갱신하면서 기억하지만, 제1명령레지스터용 분기신호(311)이 입력된 때에는 앞사이클의 명령코드를 유지한다.
명령선택기(302)는 명령선택수단으로서 명령레지스터 출력(314)와 NOP코드(315)와 명령선택기용 분기신호(312)를 입력받고 제2명령코드(13)을 출력한다. 이러한 경우에, 명령선택기(302)는 통상 명령레지스터 출력(314)를 선택하지만 명령선택기용 분기신호(312)가 입력된 때에는 NOP코드를 선택한다.
그리고, 분기신호(14)는 어드레스선택기용 분기신호(111)와 제2프로그램카운터용 분기신호(112)와 제1명령레지스터용 분기신호(311)와 명령선택기용 분기신호(312)로 이루어진다. 도4의 구성은 다음에 설명하는 제2실시예와 공통이다.
이상과 같이 구성된 프로그램 제어장치에 대하여 아래 도7 및 도8을 사용하여 그것의 작동을 설명한다.
도7은 3단 파이프라인(명령페치단계(IF), 명령해독단계(DEC), 명령실행단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 제어흐름을 표시한 것이다. 이 경우에 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다. 또한 도 8은 그때의 타이밍 차트이고, (a)는 조건이 성립된 때 (b)는 조건이 성립되지 않은때이다. 이하 각 파이프라인 단계마다 그 작동을 설명한다. 그리고 명령페치단계에 대해서는 설명을 생략한다.
(1)조건분기명령의 명령해독단계
분기판정기(4)는 제2명령코드(13)을 디코드하여 조건분기명령인 것을 판정하고, 분기신호(14)와 분기어드레스(15)를 출력한다.
(2)조건분기명령의 실행단계
프로그램카운터부(1)에서는, 제2프로그램카운터용 분기신호(112)에 의해서 조건분기명령의 2개후의 명령의 어드레스(N+2)를 제2프로그램카운터(104)로 설정한다. 이것에 따라서 조건분기명령의 2개후의 명령의 어드레스(N+2)를 퇴피시킨다.
어드레스선택기용 분기신호(111)에 의해서, 어드레스선택기(103)가 분기어드레스(15)를 선택하여 제1프로그램카운터(101)에 분기어드레스(15)(M)를 설정하여서 어드레스(11)은 M번지로 된다. 이것에 따라서, 분기판정이 행해진 시점(조건분기명령의 실행단계의 최후) 전에, 분기목적지명령이 미리 파이프라인에 투입된다.
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 NOP코드(무처리 코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
*조건이 성립될 때
(3)조건분기명령의 실행단계의 다음단계
분기신호(14)가 해제된 통상동작으로 되돌아가고, 제2명령코드(13)은 M번지의 명령으로 된다. 이 결과로, N번지의 조건분기명령의 다음에 1사이클의 분기 해저드가 들어오지만, M번지 이후의 명령이 순차적으로 실행된다.
*조건이 성립되지 않을 때
(3)조건분기명령의 실행단계의 다음단계
어드레스선택기용 분기신호(111)에 의해서, 어드레스선택기(103)가 제2프로그램카운터 출력(115)를 선택하여 제1프로그램카운터(101)에 제2프로그램카운터(104)의 값을 설정하고, 어드레스(11)는 (N+2)번지로 된다. 그 결과, 퇴피되어 있던 후속명령의 어드레스가 파이프라인에 되돌려지게 된다. 또한, 제1명령레지스터용 분기신호(311)에 의해서, 제1명령레지스터(301)가 (N+1)번지의 명령을 유지하여 제2명령코드(13)는 (N+1)번지의 명령으로 된다. 그 결과, N번지의 조건분기명령의 후에 1사이클의 분기 해저드가 들어오지만 (N+1)번지 이후의 명령이 순차적으로 실행된다.
도 17은 3단 파이프라인(명령페치단계(IF), 명령해독단계(DEC), 명령실행 단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 종래예의 타임차트를 표시한 것으로, (a)는 조건이 성립될 때이고, (b)는 조건이 성립되지 않을 때이다. 이 경우, 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다.
도8과 도17을 비교하면 조건성립시의 분기 해저드가 1사이클 감소된 것이 판명된다.
상기한 도1, 도2, 도4, 도7 및 도8에 표시된 프로그램 제어방법은, 아래와 같이 요약될 수 있다. 즉, 프로그램카운터부(1)가 출력하는 어드레스(11)의 해당 명령코드를 메모리(2)에서 명령레지스터부(3)로 꺼내어서 해당 명령을 실행하는 것에 의해, 해당 명령을 파이프라인 처리하는 조건분기의 제어를 행할시에, 조건분기명령의 조건이 확정되기 전에 프로그램카운터부(1)에 조건분기명령의 2개후의 명령의 어드레스를 퇴피시키고, 프로그램카운터부(1)에 분기어드레스(15)를 설정하고, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 조건성립시에는 그대로 실행하고, 조건이 성립하지 않은 때에는 퇴피되어 있던 조건분기명령의 2개후의 명령의 어드레스를 프로그램카운터부(1)로 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 명령레지스터부(3)로 유지하여 실행한다.
또한, 상기한 도1, 도2, 도4, 도7 및 도8에 표시된 프로그램 제어장치는 아래와 같은 구성으로 된다. 즉, 명령을 파이프라인 처리하기 위한 조건분기의 제어를 행하는 것으로서, 분기어드레스(15)와 분기신호(14)를 입력받고 어드레스(11)을 발생하는 프로그램카운터부(1)와, 어드레스(11)에 대응하는 제1명령코드(12)를 저장 또는 출력하는 메모리(2)와, 제1명령코드(12)와 분기신호(14)를 입력받고 제2명령코드(13)을 출력하는 명령레지스터부(3)와, 제2명령코드(13)을 디코드하여 분기를 판정하고 분기신호(14)와 분기어드레스(15)를 출력하는 분기판정기(4)를 구비하고 있다.
이 경우, 프로그램카운터부(1)는 제1 및 제2프로그램카운터(101,104)와 어드레스선택기(103)와 어드레스 가산기(102)로 구성되어 있다. 그러므로, 제1프로그램카운터(101)는 어드레스선택기 출력(113)을 입력받고 어드레스(11)을 출력한다. 또한, 어드레스선택기(103)는 분기어드레스(15)와 어드레스 가산기 출력(114)과 제2프로그램카운터 출력(115)을 입력받고, 분기신호(14)에 의해 분기어드레스(15)와 어드레스 가산기 출력(114)와 제2프로그램카운터 출력(115) 중 어느 하나를 선택하여 출력한다. 또한, 어드레스 가산기(102)는 어드레스(11)를 증가시킨다. 또한, 제2프로그램카운터(104)는 어드레스 가산기 출력(114)를 입력받고 분기신호(14)에 의해 어드레스 가산기 출력(114)를 유지한다.
한편, 명령레지스터부(3)는 제1명령레지스터(301)와 명령선택기(302)로 구성되어 있다. 그러므로, 제1명령레지스터(301)는 제1명령코드(12)를 입력받고 분기신호(14)에 의해 제1명령코드(12)를 유지한다. 또한, 명령선택기(302)는 제1명령레지스터 출력(314)와 NOP코드(315)를 입력받고, 분기신호(14)에 의해 제1명령레지스터 출력(314)와 NOP코드(315) 중 어느 하나를 선택하여 제2명령코드(13)로서 출력한다.
이 구성에서 조건분기명령의 조건이 확정되기 전에, 조건분기명령의 2개후의 어드레스를 제2프로그램카운터(104)로 퇴피시키고, 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 명령선택기(302)에서 NOP코드(315)를 선택하고, 조건이 성립할 때에는 그대로 실행하고, 조건이 성립하지 않은 때에는 제2프로그램카운터(104)에 퇴피되어 있던 어드레스를 제1프로그램카운터(101)에 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 제1명령레지스터(301)에 유지시켜 실행하도록 제어함으로서, 조건분기명령의 조건성립시의 분기 해저드를 1사이클 감소시킬수 있다.
이상에서 설명한 것처럼, 이 실행예에서는 조건분기명령의 조건이 확정되기 전에 분기어드레스(15)를 제1프로그램카운터(101)로 설정하는 것에 의해서 미리 파이프라인에 투입하는 것으로, 조건이 성립된 때에는 분기목적지명령에 대하여 파이프라인 처리의 최초 명령페치단계는 완료되어서, 조건성립후는 2번째목차의 명령해독단계부터 분기목적지명령에 대하여 파이프라인 처리가 계속되기 때문에, 조건분기명령의 조건이 확정된 후에 분기목적지명령을 파이프라인에 투입하는 경우에 비교하여 분기목적지명령을 실행하는 경우의 분기 해저드를 감소시킬 수 있다.
한편, 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 어드레스를 제2프로그램카운터(104)에 기억시킴으로서 조건분기명령의 후속명령의 어드레스를 퇴피시키고, 조건이 성립되지 않은 때에는 퇴피시킨 조건분기명령의 후속명령의 어드레스를 제1프로그램카운터(101)에 설정하여 파이프라인에 되돌리는 것에 의해, 분기 해저드를 증가시키지 않으면서 조건분기명령의 후속명령을 실행시킬 수가 있다. 따라서, 전체로서 보면 분기가 성립하지 않은 때는 분기 해저드를 증가시키지 않고, 분기성립시에는 분기 해저드를 감소하게 하고, 프로그램을 효율적으로 실행하고 처리시간을 단축하는 것이 가능하다.
또한 간단하게 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 어드레스를 퇴피시키고, 분기어드레스(15)를 미리 파이프라인에 투입하는 것으로서 파이프라인의 구성이나 내용에 제한을 받지 않으면서 분기 해저드를 유효하게 감소시킬 수 있다.
그리고, 상기한 실시예는 3단 파이프라인에 대한 설명이지만, 명령해독단계를 2단이상 갖는 4단이상의 다단의 파이프라인에서도 동일한 양상의 효과를 얻을 수 있다.
(제2실시예)
이하의 본 발명의 제2실시예의 조건분기처리에 있어서 프로그램 제어방법 및 그 장치에 대하여 도면을 참조하여 설명한다.
도3은 본 발명의 제2실시예에 있어서 프로그램카운터부(1)의 구성을 표시한 블록도이다. 도2와 다른점은 제2프로그램카운터(104)의 입력이 어드레스 가산기 출력(114)에서 어드레스(11)로 변경된 점이다. 도3에 있어서 도2와 동일한 기능을 보유하는 것은 동일한 부호를 붙여서 그 상세한 설명은 생략한다. 도3의 구성은 다음에 설명하는 제4실시예와 공통이다.
제2실시예는 도1의 기본구성의 프로그램카운터부(1)의 구성을 도3과 같게하고 명령레지스터부(3)의 구성을 도4와 같은 것으로 한다. 그리고, 분기신호(14)는 어드레스 선택기용 분기신호(111)와 제2프로그램카운터용 분기신호(112)와 제1명령레지스터용 분기신호(311)와 명령선택기용 분기신호(312)로 형성된다.
이상에서와 같이 구성된 프로그램 제어장치에 대해서 이하 도9 및 도10을 사용하여 그 동작을 설명한다.
도 9는 4단 파이프라인(명령페치단계(IF), 제1명령해독단계(DEC1), 제2명령해독단계(DEC2), 명령실행 단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 제어흐름을 표시하는 것이다. 이 경우 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다. 또한 도10은 그 때의 타이밍 차트이고, (a)는 조건성립시이고 (b)는 조건이 성립하지 않을 때이다. 이하, 각 파이프라인 단계마다 그 동작을 설명한다. 그리고, 명령페치단계 및 제1명령해독 단계에 대한 설명은 생략한다.
(1)조건분기명령의 제2명령해독단계
분기판정기(4)가 제2명령코드(13)을 디코드하여 조건분기명령인지를 판정하고, 분기신호(14)와 분기어드레스(15)를 출력한다.
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
(2)조건분기명령의 실행단계
프로그램카운터부(1)에서는, 제2프로그램카운터용 분기신호(112)에 의해 조건분기명령의 2개후의 명령의 어드레스(N+2)를 제2프로그램카운터(104)에 설정한다. 이것에 의하여 조건분기명령의 2개후의 명령의 어드레스(N+2)를 퇴피시킨다.
어드레스선택기용 분기신호(111)에 의해서 어드레스선택기(103)가 분기어드레스(15)를 선택하여 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 어드레스(11)은 M번지로 된다. 이것에 의하여, 분기판정이 행해지는 시점(조건분기명령의 실행단계의 최후)전에 분기목적지명령이 미리 파이프라인에 투입된다.
제1명령레지스터용 분기신호(311)에 의해서, 제1명령레지스터(301)가 (N+1)번지의 명령을 유지하여 제2명령코드(13)은 (N+1)번지의 명령으로 된다.
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
*조건이 성립될 때
(3)조건분기명령의 실행단계의 다음단계
분기신호(14)가 해제된 통상동작으로 되돌아가고, 제2명령코드(13)은 M번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 뒤에 2사이클의 분기 해저드가 입력되지만, M번지이후의 명령이 순차적으로 실행된다.
*조건이 성립되지 않은 때
(3)조건분기명령의 실행단계의 다음단계
어드레스선택기용 분기신호(111)에 의해서, 어드레스선택기(103)가 제2프로그램카운터 출력(115)을 선택하여 제1프로그램카운터(101)에 제2프로그램카운터(104)의 값을 설정하고, 어드레스(11)은 (N+2)번지로 된다. 그 결과, 퇴피되어 있던 후속명령의 어드레스가 파이프라인에 되돌려진다. 또한, 제1명령레지스터용 분기신호(311)에 의해서 제1명령레지스터(301)가 (N+1)번지의 명령을 유지하여 제2명령코드(13)은 (N+1)번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에 2사이클의 분기 해저드가 들어오지만 (N+1)번지이후의 명령이 순차적으로 실행된다.
상기한 도1, 도3, 도4, 도9 및 도10에 표시된 프로그램 제어방법은 아래와 같이 요약될 수 있다. 즉, 프로그램카운터부(1)가 출력하는 어드레스(11)의 해당 명령코드를 메모리(2)에서 명령레지스터부(3)로 꺼내어서, 해당 명령을 실행하는 것에 의해서 해당 명령을 파이프라인 처리하는 조건분기의 제어를 행할시에, 조건분기명령의 조건이 확정되기전에 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 계속하여 프로그램카운터부(1)에 조건분기명령의 2개후의 명령의 어드레스를 퇴피시키고 프로그램카운터부(1)에 분기어드레스(15)를 설정하고, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 조건성립시에는 그대로 실행하고, 조건이 성립되지 않은 때에는 퇴피되어 있던 조건분기명령의 2개후의 명령어드레스를 프로그램카운터부(1)에 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 명령레지스터부(3)에 유지시켜서 실행하도록 한다.
상기한 도1, 도3, 도4, 도9 및 도10에 표시된 프로그램 제어장치는 아래와 같은 구성으로 되어있다. 즉, 명령을 파이프라인 처리하는 조건분기의 제어를 행하는 것으로, 분기어드레스(15)와 분기신호(14)를 입력받고 어드레스(11)을 발생하는 프로그램카운터부(1)와, 어드레스(11)에 대응하는 제1명령코드(12)를 저장 또는 출력하는 메모리(2)와, 제1명령코드(12)와 분기신호(14)를 입력받고 제2명령코드(13)을 출력하는 명령레지스터부(3)와, 제2명령코드(13)을 디코드하여 분기를 판정하고 분기신호(14)와 분기어드레스(15)를 출력하는 분기판정기(4)를 구비한다.
이러한 경우, 프로그램카운터부(1)는 제1 및 제2프로그램카운터(101,104)와 어드레스선택기(103)와 어드레스 가산기(102)로 구성된다. 그리고, 제1프로그램카운터(101)는 어드레스선택기 출력(113)을 입력받고 어드레스(11)를 출력한다. 또한, 어드레스선택기(103)는 분기어드레스(15)와 어드레스 가산기 출력(114)와 제2프로그램카운터 출력(115)을 입력받고, 분기신호(14)에 의해 분기어드레스(15)와 어드레스 가산기 출력(114)과 제2프로그램카운터 출력(115) 중 어느 하나를 선택하여 출력한다. 또한, 어드레스 가산기(102)는 어드레스(11)를 증가시킨다. 또한, 제2프로그램카운터(104)는 어드레스(11)을 입력받고 분기신호(14)에 의해 어드레스(11)를 유지한다.
한편, 명령레지스터부(3)는 제1명령레지스터(301)와 명령선택기(302)로 구성되어 있다. 그래서, 제1명령레지스터(301)는 제1명령코드(12)를 입력받고 분기신호(14)에 의해 제1명령코드(12)를 유지한다. 또한, 명령선택기(302)는 제1명령레지스터 출력(314)와 NOP코드(315)를 입력받고 분기신호(14)에 의해 제1명령레지스터 출력(314)와 NOP코드(315) 중 어느 하나를 선택하여 제2명령코드(13)으로서 출력한다.
이러한 구성에서, 조건분기명령의 조건이 확정되기 전에 명령선택기(302)에 NOP코드(315)를 선택하고, 조건분기명령의 2개후의 어드레스를 제2프로그램카운터(104)에 퇴피시키고, 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 명령선택기(302)에서 NOP코드(315)를 선택하고, 조건성립시에는 그대로 실행하고, 조건이 성립되지 않은 때에는 제2프로그램카운터(104)에 퇴피되어 있던 어드레스를 제1프로그램카운터(101)에 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 제1명령레지스터(301)에 유지시켜서 실행하도록 제어함으로서, 조건분기명령의 조건성립시의 분기 해저드를 1사이클 감소시킬 수 있다.
이상에서와 같이, 이 실행예에서는 제1실시예와 동일한 양상의 효과를 띠는 것 외에 제1실시예에 대하여 분기판정의 단계를 1단계 많은 것으로도 할 수 있다.
그리고, 상기한 실시예는 4단 파이프라인에 대해서 설명하였지만, 명령해독 단계를 3단계 이상을 보유하는 5단이상의 다단의 파이프라인에서도 동일한 양상의 효과가 얻어질 수 있다.
또한, 상술한 설명에서 실행단계에서 행해진 제2프로그램카운터(104)로의 조건분기명령의 2개후의 어드레스(N+2)의 설정을, 제2명령해독단계에서 행하는 것으로 제1실시예에서도 4단 파이프라인을 실현할 수 있다. 즉, 제1실시예와 다른점은 조건분기명령의 후속명령의 퇴피 타이밍에 있고, 동일한 어드레스(N+2)번지를 퇴피시켜도, 어드레스(11)를 퇴피하던가 어드레스 가산기(102)의 출력을 퇴피하던가에 의해서 퇴피의 타이밍이 1사이클 어긋나게 된다.
(제3실시예)
이하 본 발명의 제3실시예의 조건분기처리에 있어서의 프로그램 제어방법 및 그 장치에 대하여 도면을 참조로 하여 설명한다.
도 5는 본 발명의 제3실시예에 있어서 명령레지스터부(3)의 구성을 표시하는 블록도이다. 도4와 다른점은 제1명령코드(12)와 제2명령레지스터용 분기신호(313)을 입력받고 제2명령레지스터 출력(316)을 출력하는 제2명령유지수단으로 된 제2명령레지스터(303)을 설치하고, 또한 제1명령레지스터 출력(314)과 제2명령레지스터 출력(316)을 명령선택기용 분기신호(312)에 따라서 선택하는 명령선택기(302)를 설치한다는 점이다. 상기한 제2명령레지스터(303)는 조건분기명령의 후속명령의 명령코드를 퇴피하는 기능을 보유하고, 명령선택기(302)는 분기가 성립하지 않은 때에 제2명령레지스터 출력(316)을 선택하는 것으로서 퇴피하여 있던 후속명령의 명령코드를 파이프라인으로 되돌리는 기능을 보유한다. 도5에 있어서, 도4와 동일한 기능을 보유하는 것에는 동일한 부호를 붙이므로 상세한 설명을 생략한다.
제3실시예는 도1의 기본구성의 프로그램카운터부(1)의 구성을 도2와 같은 것으로 하고 명령레지스터부(3)의 구성을 도5와 같은 것으로 한다. 그리고, 분기신호(14)는 어드레스선택기용 분기신호(111)와 제2프로그램카운터용 분기신호(112)와 제1명령레지스터용 분기신호(311)와 명령선택기용 분기신호(312)와 제2명령레지스터용 분기신호(313)로 이루어진다.
이상과 같이 구성된 프로그램 제어장치에 대하여 이하 도11 및 도12를 사용하여 그것의 동작을 설명한다.
도11은 명령페치로서 2단계 설치된 경우의 4단 파이프라인(제1명령페치단계(IF1), 제2명령페치단계(IF2), 명령해독단계(DEC), 명령실행단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 제어흐름을 표시한 것이다. 이 경우, 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다. 또한, 도12는 그때의 타이밍 차트이고 (a)는 조건성립시이고 (b)는 조건이 성립하지 않은 때이다. 이하, 각 파이프라인 단계마다 그 동작을 설명한다. 그리고, 제1명령페치 단계 및 제2명령페치 단계에 대해서는 설명을 생략한다.
(1)조건분기명령의 명령해독단계
분기판정기(4)가 제2명령코드(13)을 디코드하여 조건분기명령인지를 판정하고 분기신호(14)와 분기어드레스(15)를 출력한다.
(2)조건분기명령의 실행단계
제2프로그램카운터용 분기신호(112)에 의해서 조건분기명령의 3개후의 어드레스(N+3)을 제2프로그램카운터(104)로 설정한다. 이것에 의하여 조건분기명령의 3개후의 명령의 어드레스(N+3)을 퇴피시킨다.
어드레스선택기용 분기신호(111)에 의해서, 어드레스선택기(103)가 분기어드레스(15)를 선택하여 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 어드레스(11)은 M번지로 된다. 이것에 의하여 분기판정이 행해진 시점(조건분기명령의 실행단계의 최후)전에, 분기목적지명령이 미리 파이프라인에 투입된다.
제2명령레지스터용 분기신호(313)에 의해서, 조건분기명령의 1개후의 명령코드(N+1)을 제2명령레지스터(303)에 설정한다. 이것에 의하여, 조건분기명령의 1개후의 명령코드(N+1)를 퇴피시킨다.
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
*조건성립시
(3)조건분기명령의 실행단계의 다음단계
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
(4)조건분기명령의 실행단계의 다음단계
분기신호(14)를 해제하여 통상동작으로 되돌아가고, 제2명령코드(13)은 M번지의 명령으로 된다. 그 결과, N번지의 조건분기명령 후에 2사이클의 분기 해저드가 들어오지만 M번지이후의 명령이 순차적으로 실행되어진다.
*조건이 성립하지 않은 때
(3)조건분기명령의 실행단계의 다음단계
어드레스선택기용 분기신호(111)에 의해서 어드레스선택기(103)가 제2프로그램카운터 출력(115)를 선택하여 제1프로그램카운터(101)에 제2프로그램카운터(104)의 값을 설정하고, 어드레스(11)은 (N+3)번지로 된다. 그 결과, 퇴피되어 있던 후속명령의 어드레스가 파이프라인에 되돌려진다.
또한, 명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 제2명령레지스터 출력(316)을 선택하여 제2명령코드(13)은 (N+1)번지의 명령으로 된다. 그 결과, 퇴피되어 있던 후속명령의 명령코드가 파이프라인에 되돌려진다.
(4)조건분기명령의 실행단계의 다음단계
제1명령레지스터용 분기신호(311)에 의해서, 제1명령레지스터(301)가 (N+2)번지의 명령을 유지하여 제2명령코드(13)은 (N+2)번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에 1사이클의 분기 해저드가 들어오지만, (N+1)번지 이후의 명령이 순차적으로 실행된다.
도18은 4단 파이프라인(제1명령페치단계(IF1), 제2명령페치단계(IF2), 명령해독단계(DEC), 명령실행단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 종래예의 타임 차트를 표시하는 것으로서, (a)는 조건성립시이고 (b)는 조건이 성립하지 않은 때이다. 이 경우, 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다.
도12와 도18을 비교하면, 조건성립시의 분기 해저드가 1사이클 감소된 것이 판별된다.
다음으로, 이하 도13 및 도14를 사용하여 5단 파이프라인의 동작을 설명한다.
도13은 명령페치가 2단계로 된 경우의 5단 파이프라인(제1명령페치단계(IF1), 제2명령페치단계(IF2), 제1명령해독단계(DEC1), 제2명령해독단계(DEC2), 명령실행단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 제어흐름을 표시한 것이다. 이 경우, 조건분기명령의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다. 또한, 도14은 그때의 타이밍 차트이고, (a)는 조건성립시이고 (b)는 조건이 성립되지 않은 때이다. 이하, 각 파이프라인 단계마다 그 동작을 설명한다. 그리고, 제1명령페치 단계, 제2명령페치 단계 및 제1명령해독 단계에 대해서는 설명을 생략한다.
(1)조건분기명령의 제2명령해독단계
분기판정기(4)가 제2명령코드(13)를 디코드하여 조건분기명령인지를 판정하고, 분기신호(14)와 분기어드레스(15)를 출력한다.
제2프로그램카운터용 분기신호(112)에 의해서, 조건분기명령의 3개후의 어드레스(N+3)을 제2프로그램카운터(104)에 설정한다. 이것에 의하여 조건분기명령의 3개후의 명령의 어드레스(N+3)을 퇴피시킨다.
어드레스선택기용 분기신호(111)에 의해서, 어드레스선택기(103)가 분기어드레스(15)를 선택하여 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 어드레스(11)은 M번지로 된다. 이것에 의하여 분기판정이 행해지는 시점(조건분기명령의 실행단계의 최후)전에, 분기목적지명령이 미리 파이프라인에 투입된다.
제2명령레지스터용 분기신호(313)에 의해서 조건분기명령의 1개후의 명령코드(N+1)를 제2명령레지스터(303)에 설정한다. 이것에 의하여, 조건분기명령의 1개후의 명령코드(N+1)를 퇴피시킨다.
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
(2)조건분기명령의 실행단계
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
*조건성립시
(3)조건분기명령의 실행단계의 다음단계
분기신호(14)를 해제한 통상동작으로 되돌아가고, 제2명령코드(13)은 M번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에 2사이클의 분기 해저드가 들어오지만, M번지이후의 명령이 순차적으로 실행된다.
*조건이 성립하지 않은 때
(3)조건분기명령의 실행단계의 다음단계
어드레스선택기용 분기신호(111)에 의해서 어드레스선택기(103)가 제2프로그램카운터 출력(115)를 선택하여 제1프로그램카운터(101)에 제2프로그램카운터(104) 값을 설정하고, 어드레스(11)는 (N+3)번지로 된다. 그 결과, 퇴피되어 있던 후속명령의 어드레스가 파이프라인에 되돌려진다.
제1명령레지스터용 분기신호(311)에 의해서, 제1명령레지스터(301)가 (N+2)번지의 명령을 유지하여 제2명령코드(13)은 (N+2)번지의 명령으로 된다.
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 제2명령레지스터 출력(316)을 선택하여 제2명령코드(13)은 (N+1)번지의 명령으로 된다. 그 결과, 퇴피되어 있던 후속명령의 명령코드가 파이프라인에 되돌려진다.
(4)조건분기명령의 실행단계의 다음단계
제1명령레지스터용 분기신호(311)에 의해서, 제1명령레지스터(301)가 (N+2)번지의 명령을 유지하여 제2명령코드(13)은 (N+2)번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에 2사이클의 분기 해저드가 들어오지만 (N+1)번지이후의 명령이 순차적으로 실행된다.
상기한 도1, 도2, 도5, 도11, 도12, 도13 및 도14에 표시된 프로그램 제어방법은 아래와 같이 요약될 수 있다. 즉, 프로그램카운터부(1)가 출력하는 어드레스(11)의 해당 명령코드를 메모리(2)에서 명령레지스터부(3)로 꺼내어 해당 명령을 실행하는 것에 의해 해당 명령을 파이프라인 처리하는 때의 조건분기의 제어를 행할시에, 조건분기명령의 조건이 확정되기 전에 프로그램카운터부(1)에 조건분기명령의 3개후의 명령의 어드레스를 퇴피시키고, 프로그램카운터부(1)에 분기어드레스(15)를 설정하고, 명령레지스터부(3)에 조건분기명령의 1개후의 명령의 명령코드를 퇴피시키고, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 조건성립시에는 그대고 실행하고, 조건이 성립하지 않은 때에는 퇴피되어 있던 조건분기명령의 3개후의 명령의 어드레스를 프로그램카운터부(1)에 설정하고, 명령레지스터부(3)에서 명령코드를 퇴피되어 있던 조건분기명령의 1개후의 명령의 명령코드로 치환하고, 계속하여 조건분기명령의 2개후의 명령의 명령코드를 제1명령레지스터(301)로 유지하여 실행하도록 한다. 그리고, 도13 및 도14의 경우에는 명령코드를 무처리명령코드로 치환하는 단계가 2개 있다.
상기의 도1, 도2, 도5, 도11, 도12, 도13 및 도14에 표시된 프로그램 제어장치는 아래와 같은 구성으로 되어 있다. 즉, 명령을 파이프라인 처리하는 때의 조건분기의 제어를 행하는 것에서, 분기어드레스(15)와 분기신호(14)를 입력받고 어드레스(11)을 발생하는 프로그램카운터부(1)와, 어드레스(11)에 대응하여 제1명령코드(12)를 저장 또는 출력하는 메모리(2)와, 제1명령코드(12)와 분기신호(14)를 입력받고 제2명령코드(13)을 출력하는 명령레지스터부(3)와, 제2명령코드(13)을 디코드하여 분기를 판정하고 분기신호(14)와 분기어드레스(15)를 출력하는 분기판정기(4)를 구비하고 있다.
이 경우, 프로그램카운터부(1)는 제1 및 제2프로그램카운터(101, 104)와 어드레스선택기(103)와 어드레스 가산기(102)로 구성된다. 그래서, 제1프로그램카운터(101)는 어드레스선택기 출력(113)을 입력받고 어드레스(11)을 출력한다. 또한, 어드레스선택기(103)는 분기어드레스(15)와 어드레스가산기 출력(114)와 제2프로그램카운터 출력(115)을 입력받고, 분기신호(14)에 의해서 분기어드레스(15)와 어드레스가산기 출력(114)과 제2프로그램카운터 출력(115) 중 어느 하나를 선택하여 출력한다. 또한, 어드레스가산기(102)가 어드레스(11)를 증가시킨다. 또한 제2프로그램카운터(104)는 어드레스가산기 출력(114)를 입력받고 분기신호(14)에 의해서 어드레스가산기 출력(114)를 유지한다.
한편, 명령레지스터부(3)는 제1 및 제2명령레지스터(301, 303)와 명령선택기(302)로 구성되어 있다. 그래서, 제1명령레지스터(301)는 제1명령코드(12)를 입력받고 분기신호(14)에 의해서 제1명령코드(12)를 유지한다. 또한, 제2명령레지스터(303)는 제1명령코드(12)를 입력받고 분기신호(14)에 의해서 제1명령코드(12)를 유지한다. 또한, 명령선택기(302)는 제1명령레지스터 출력(314)과 제2명령레지스터 출력(316)과 NOP코드(315)를 입력받고 분기신호(14)에 의해서 제1명령레지스터 출력(314)과 제2명령레지스터 출력(316)과 NOP코드(315) 중 어느 하나를 선택하여 제2명령코드(13)로서 출력한다.
이 구성에 의하면, 조건분기명령의 조건이 확정되기 전에 조건분기명령의 3개후의 명령의 어드레스를 제2프로그램카운터(104)로 퇴피시키고, 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 제2명령레지스터(303)로 퇴피시키고, 명령선택기(302)에서 NOP코드(315)를 선택하고, 조건성립시에는 그대로 실행하고, 조건이 성립하지 않은 때에는 제2프로그램카운터(104)에 퇴피되어 있던 어드레스를 제1프로그램카운터(101)에 설정하고, 명령선택기(302)에서 제2명령레지스터(303)을 선택하고, 조건분기명령의 2개후의 명령의 명령코드를 제1명령레지스터(301)로 유지하여 실행하도록 제어하는 것으로서, 명령페치단계가 2단계의 경우에 조건분기명령의 조건성립시의 분기 해저드를 2사이클 감소하게 할 수 있다.
이상에서와 같이, 이 실행예에서는 조건분기명령의 조건이 확정되기 전에 분기어드레스(15)를 제1프로그램카운터(101)에 설정하도록 하여서 미리 파이프라인에 투입함으로써, 조건이 성립된 때에는 분기목적지명령에 대해서 파이프라인 처리의 최초의 명령페치단계는 완료되고, 조건성립후는 2번째 목차의 명령해독단계에서 분기목적지명령에 대하여의 파이프라인 처리가 계속되기 때문에, 조건분기명령의 조건이 확정된 후에 분기목적지명령을 파이프라인에 투입하는 경우에 비교하여 분기목적지명령을 실행하는 경우의 분기 해저드를 감소시킬 수 있다.
한편, 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 어드레스를 제2프로그램카운터(104)에 기억시키는 것으로서, 조건분기명령의 후속명령의 어드레스를 퇴피시키고, 제1명령레지스터 출력(314)을 제2명령레지스터(303)에 저장하는 것에 의해서, 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 명령코드를 퇴피시키는 것으로서 조건이 성립되지 않은 때에는 퇴피되어 있던 조건분기명령의 후속명령의 어드레스를 제1프로그램카운터(101)에 설정하는 것에 의해서 파이프라인에 되돌리는 것과 아울러, 제2명령레지스터(303)에서 명령코드를 출력함에 따라서 파이프라인에 되돌려지는 것에 의해 분기 해저드를 증가시키지 않는 조건분기명령의 후속명령을 실행할 수 있다. 따라서 전체로서의 관점으로 본다면, 분기가 성립하지 않은 때의 분기 해저드를 증가시키지 않고, 분기성립시의 분기 해저드를 감소하게 할 수 있고, 프로그램을 효율적으로 실행할 수 있으며 처리시간을 단축하는 것이 가능하다.
또한, 간단하게 조건분기명령의 조건이 확정되기전에 조건분기명령의 후속명령의 어드레스와 명령코드를 퇴피시키고, 분기어드레스(15)를 미리 파이프라인에 투입하게 하는 것으로서, 파이프라인의 구성이나 명령의 내용에 제한을 받지 않으면서 분기 해저드를 유효하게 절감할 수 있다.
특히, 명령페치단계가 2단 혹은 4단 파이프라인의 경우에, 조건성립시의 분기 해저드를 1사이클 감소시킬 수 있다. 또한, 명령페치 단계가 2단 혹은 5단 파이프라인의 경우에는, 조건성립시의 분기 해저드를 2사이클 감소하게 할 수 있다.
그리고, 위의 설명에서는 명령의 페치단계를 2단으로서 설명하였지만, 3단이상의 임의의 단수로서도, 페치단계의 단수에 대응하여 명령레지스터를 추가하는 것으로 동일한 효과가 얻어질 수 있다는 것은 명백하다. 명령해독단계 1단의 것과 2단의 것에 대해서도 표시되지만, 3단이상의 것에 대해서도 동일한 효과가 얻어진다. 특히, 명령페치단계가 3이상인 경우에 있어서, 명령해독단계를 3이상으로 하는 것으로 조건성립시의 분기 해저드의 감소사이클수를 3이상으로 할 수 있다.
(제4실시예)
이하 본 발명의 제4실시예의 조건분기처리에 있어서의 프로그램 제어방법 및 그 장치에 대해서, 도면을 참조하여 설명한다.
도6은 본 발명의 제4실시예에 있어서의 명령레지스터부(3)의 구성을 표시한 블록도이다. 도5와 다른점은 제2명령유지수단으로 되는 제2명령레지스터(303)의 입력을, 제1명령코드(12)에서 제1명령레지스터 출력(314)으로 변경한다는 점이다. 도6에 있어서, 도5와 동일한 기능을 보유하는 것에서는 동일한 부호를 붙여서 그 상세한 설명은 생략한다.
제4실시예는, 도1의 기본구성의 프로그램카운터부(1)의 구성을 도3과 같이하고 명령레지스터부(3)의 구성을 도6과 같은 것으로 한다. 그리고, 분기신호(14)는 어드레스선택기용 분기신호(111)와 제2프로그램카운터용 분기신호(112)와 제1명령레지스터용 분기신호(311)와 명령선택기용 분기신호(312)와 제2명령레지스터용 분기신호(313)으로 된다.
이상과 같이 구성된 프로그램 제어장치에 대해서, 이하 도15 및 도16을 사용하여 그 동작을 설명한다.
도15은 명령페치로서 2단계 설치된 경우의 6단 파이프라인(제1명령페치단계(IF1), 제2명령페치단계(IF2), 제1명령해독단계(DEC1), 제2명령해독단계(DEC2), 제3명령해독단계(DEC3), 명령실행단계(EX))의 경우에 있어서, 조건분기명령을 실행하는 경우의 제어흐름을 표시한 것이다. 이 경우, 조건분기의 어드레스가 N번지, 분기목적지명령의 어드레스가 M번지이다. 또한, 도16은 그 때의 타이밍 차트이다. 이하 각 파이프라인 단계마다 그 동작을 설명한다. 그리고, 제1명령페치단계, 제2명령페치단계 및 제1명령해독단계에 대해서는 설명을 생략한다.
(1)조건분기명령의 제2명령해독단계
분기판정기(4)가 제2명령코드(13)을 디코드하여 조건분기명령인지를 판정하고 분기신호(14)와 분기어드레스(15)를 출력한다.
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
(2)조건분기명령의 제3명령해독단계
제2프로그램카운터용 분기신호(112)에 의해서 조건분기명령의 3개후의 어드레스(N+3)을 제2프로그램카운터(104)에 설정한다. 그것에 의해 조건분기명령의 3개후의 명령의 어드레스(N+3)을 퇴피시킨다.
어드레스선택기용 분기신호(11)에 의해서, 어드레스선택기(103)가 분기어드레스(15)를 선택하여 제1프로그램카운터(101)에 분기어드레스(15)를 설정하고, 어드레스(11)은 M번지로 된다. 이것에 의해 분기판정이 행해지는 시점(조건분기명령의 실행단계의 최후) 전에, 분기목적지명령이 미리 파이프라인에 투입된다.
제2명령레지스터용 분기신호(313)에 의해서 조건분기명령의 1개후의 명령코드(N+1)을 제2명령레지스터(303)에 설정한다. 이것에 의해 조건분기명령의 1개후의 명령코드(N+1)을 퇴피시킨다.
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
(3)조건분기명령의 실행단계
명령선택기용 분기신호(312)에 의해서 명령선택기(302)가 NOP코드(무처리코드)(315)를 선택하여 제2명령코드(13)은 NOP명령으로 된다.
*조건성립시
(4)조건분기명령의 실행단계의 다음단계
분기신호(14)를 해제하여 통상동작으로 되돌아가고, 제2명령코드(13)은 M번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에 3사이클의 분기 해저드가 입력되지만, M번지이후의 명령이 순차적으로 실행된다.
*조건이 성립되지 않은 때
(4)조건분기명령의 실행단계의 다음단계
어드레스선택기용 분기신호(111)에 의해서 어드레스선택기(103)가 제2프로그램카운터 출력(115)를 선택하여 제1프로그램카운터(101)에 제2프로그램카운터(104)의 값을 설정하고, 어드레스(11)은 (N+3)번지로 된다. 그 결과 퇴피되어 있던 후속명령의 어드레스가 파이프라인에 되돌려진다. 또한, 제1명령레지스터용 분기신호(311)에 의해서 제1명령레지스터(301)가 (N+2)번지의 명령을 유지한다.
명령선택기용 분기신호(312)에 의해서, 명령선택기(302)가 제2명령레지스터 출력(316)을 선택하여 제2명령코드(13)은 (N+1)번지의 명령으로 된다. 그 결과, 퇴피되어 있던 후속명령의 명령코드가 파이프라인에 되돌려진다.
(5)조건분기명령의 실행단계의 다음단계
제1명령레지스터용 분기신호(311)에 의해서 제1명령레지스터(301)가 (N+2)번지의 명령을 유지하여 제2명령코드(13)은 (N+2)번지의 명령으로 된다.
그 결과, N번지의 조건분기명령 후에, 3사이클의 분기 해저드가 들어오지만 (N+1)번지이후의 명령이 순차적으로 실행된다.
상기한 도1, 도2, 도5, 도11, 도12, 도15 및 도16에 표시된 프로그램 제어방법은 아래와 같이 요약될 수 있다. 즉, 프로그램카운터부(1)가 출력하는 어드레스(11)의 해당 명령코드를 메모리(2)에서 명령레지스터부(3)로 꺼내고 해당 명령을 실행하는 것에 의해서 해당 명령을 파이프라인 처리하는 때의 조건분기의 제어를 행할시에, 조건분기명령의 조건이 확정되기 전에, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 계속하여 프로그램카운터부(1)에서 조건분기명령의 3개후의 명령의 어드레스를 퇴피시키고, 프로그램카운터부(1)에 분기어드레스(15)를 설정하고, 명령레지스터부(3)에서 조건분기명령의 1개후의 명령의 명령코드를 퇴피시키고, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 계속하여 조건분기명령의 2개후의 명령의 명령코드를 명령레지스터부(3)로 유지하고, 명령레지스터부(3)에서 명령코드를 무처리명령코드로 치환하고, 조건성립시에는 그대로 실행하고, 조건이 성립하지 않은 때에는 퇴피되어 있던 조건분기명령의 3개후의 명령의 어드레스를 프로그램카운터부(1)에 설정하고, 명령레지스터부(3)가 명령코드를 퇴피되어 있던 조건분기명령의 1개후의 명령의 명령코드로 치환하고, 계속하여 조건부기명령의 2개후의 명령의 명령코드를 명령레지스터부(3)로 유지하여 실행하도록 한다.
상기한 도1, 도2, 도5, 도11, 도12, 도15 및 도16에 표시된 프로그램 제어장치는 아래와 같이 구성되어 있다. 즉, 명령을 파이프라인 처리하는 때의 조건분기의 제어를 행하는 것에서, 분기어드레스(15)와 분기신호(14)를 입력받고 어드레스(11)을 발생하는 프로그램카운터부(1)와, 어드레스(11)에 대응하여 제1명령코드(12)를 저장 또는 출력하는 메모리(2)와, 제1명령코드(12)와 분기신호(14)를 입력받고 제2명령코드(13)을 출력하는 명령레지스터부(3)와, 제2명령코드(13)을 디코드하여 분기를 판정하고 분기신호(14)와 분기어드레스(15)를 출력하는 분기판정기(4)를 구비하고 있다.
이 경우, 프로그램카운터부(1)는 제1 및 제2프로그램카운터(101, 104)와 어드레스선택기(103)와 어드레스가산기(102)로 구성되어 있다. 그래서, 제1프로그램카운터(101)는 어드레스선택기 출력(113)을 입력받고 어드레스(11)을 출력한다. 또한, 어드레스선택기(103)는 분기어드레스(15)와 어드레스가산기 출력(114)과 제2프로그램카운터 출력(115)을 입력받고, 분기신호(14)에 의해서 분기어드레스(15)와 어드레스가산기 출력(114)과 제2프로그램카운터 출력(115) 중 어느 하나를 선택하여 출력한다. 또한, 어드레스가산기(102)는 어드레스(11)를 증가시킨다. 또한, 제2프로그램카운터9104)는 어드레스(11)을 입력받고 분기신호(14)에 의해서 어드레스(11)을 유지한다.
한편, 명령레지스터부(3)는 제1 및 제2명령레지스터(301, 303)와 명령선택기(302)로 구성된다. 그래서, 제1명령레지스터(301)는 제1명령코드(12)를 입력받고 분기신호(14)에 의해서 제1명령코드(12)를 유지한다. 또한, 제2명령레지스터(303)는 제1명령레지스터 출력(314)를 입력받고, 분기신호(14)에 의해서 제1명령레지스터 출력(314)을 유지한다. 또한, 명령선택기(302)가 제1명령레지스터 출력(314)와 제2명령레지스터 출력(316)과 NOP코드(315)를 입력받고, 분기신호(14)에 의해서 제1명령레지스터 출력(314)과 제2명령레지스터 출력(316)과 NOP코드(315) 중 어느 하나를 선택하여 제2명령코드(13)으로 출력한다.
이러한 구성과 같이, 조건분기명령의 조건이 확정되기 전에, 명령선택기(302)에서 NOP코드(315)를 선택하고, 조건분기명령의 3개후의 명령의 어드레스를 제2프로그램카운터(104)로 퇴피시키고, 제1프로그램카운터(101)에 분기어드레스(315)를 설정하고, 조건분기명령의 1개후의 명령의 명령코드를 제2명령레지스터(303)에 퇴피시키고, 명령선택기(302)에서 NOP코드(315)를 선택하고, 조건성립시에는 그대로 실행하고, 조건이 성립하지 않은 때에는 제2프로그램카운터(104)에 퇴피되어 있던 어드레스를 제1프로그램카운터(101)로 설정하고, 명령선택기(302)에서 제2명령레지스터(303)을 선택하고, 조건분기명령의 2개후의 명령의 명령코드를 제1명령레지스터(301)로 유지하여 실행하도록 하여 제어하는 것으로서, 명령페치단계가 2단계의 경우에 조건분기명령의 조건성립시의 분기 해저드를 2사이클 감소시킬 수 있다.
이상에서와 같이, 이 실행예에서는, 상술한 제3실시예와 동일한 양상으로 명령페치단계가 2단 혹은 6단 파이프라인의 경우에, 조건성립시의 분기 해저드를 2사이클 감소하게 할 수 있다. 또한, 제3실시예에 대하여 분기판정의 단계를 1단계 많은 것으로 할 수 있다.
그리고, 위의 설명에서 명령페치단계를 2단으로서 설명하였지만, 3단이상의 임의의 단수에서도 명령레지스터를 추가함으로서 동일한 효과가 얻어진다는 것은 명백하다. 명령해독단계가 4단계이상인 것에서도 동일한 양상의 효과를 얻을 수 있다.
즉, 상술한 제3명령해독단계에서 행해진 제2프로그램카운터(104)로의 조건분기명령의 3개후의 어드레스(N+3)의 설정과 제2명령레지스터(303)로의 조건분기명령의 1개후의 명령코드(N+1)의 설정을, 제2명령해독 단계에서 행하는 것으로서 제3실시예에서도 6단 파이프라인을 실현할 수 있다. 즉, 제3실시예와 다른점은 조건분기명령의 후속명령의 퇴피 타이밍이다. 이 다른점은 제2실시예에서 설명된 것이다.
본 발명의 프로그램 제어방법은 분기목적지어드레스가 포함된 조건분기명령을 전제로 하고, 조건분기명령의 조건이 확정되기 전에 즉, 분기판정을 하기 전에 조건분기명령의 후속명령의 파이프라인 정보를 퇴피시키고 분기목적지명령을 미리 파이프라인에 투입하여, 조건성립시에는 분기목적지명령을 그대로 실행하고, 조건이성립되지 않은때에는 퇴피시켜진 후속명령의 파이프라인 정보를 파이프라인에 되돌려서 조건분기명령의 후속명령을 실행하는 것을 특징으로 한다. 상기한 후속명령의 파이프라인 정보로서는 후속명령의 어드레스와 후속명령의 명령코드가 있다.
그 구성에 의하면 조건분기명령의 조건이 확정되기 전에 분기목적지명령을 미리 파이프라인에 투입하고, 조건이 성립할때에는 분기목적지명령에 대하여의 파이프라인 처리의 적어도 최초의 단계는 종료되어서, 조건성립후에는 2번째목차 이후 중 어느 하나의 단계에서 분기목적지명령에 대하여 파이프라인 처리가 계속되기 때문에, 조건분기명령의 조건이 확정된 후에 분기목적지명령을 파이프라인에 투입하는 경우에 비교하여 분기목적지명령을 실행하는 경우의 분기 해저드를 감소하게 할 수 있다.
한편, 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 파이프라인 정보를 퇴피시켜서, 조건이 성립하지 않을 때에는 퇴피시켜진 조건분기명령의 후속명령의 파이프라인 정보를 파이프라인에 되돌리는 것에 의해 분기 해저드를 증가시키지 않으면서 조건분기명령의 후속명령을 실행할 수가 있다.
그러므로, 전체로서는 분기가 성립하지 않을때는 분기 해저드를 증가시키지 않고, 분기성립시에는 분기 해저드를 감소시킬 수 있고, 프로그램을 효율적으로 실행할 수 있으며 처리기간을 단축하는 것이 가능하다.
또한, 간단하게 조건분기명령의 조건이 확정되기 전에 조건분기명령의 후속명령의 파이프라인 정보를 퇴피시켜 분기목적지명령을 미리 파이프라인에 투입시키는 것으로서, 파이프라인의 구성이나 명령의 내용등에 제한을 받지 않고 분기 해저드를 유효하게 절감할 수 있다.

Claims (3)

  1. 명령을 파이프라인 처리하는 정보처리장치에 있어서의 조건분기의 제어를 행하는 프로그램 제어방법에 있어서,
    조건분기명령의 조건이 확정되기 전에, 조건분기명령의 후속명령의 파이프라인 정보를 퇴피시키고 분기목적지명령을 미리 파이프라인에 투입하고,
    조건성립시에는 상기한 분기목적지명령을 그대로 실행하고,
    조건이 성립하지 않은 때에는 퇴피되어 있던 상기한 후속명령의 파이프라인 정보를 상기한 파이프라인으로 되돌려서 상기한 조건분기명령의 후속명령을 실행하는 것을 특징으로 하는 프로그램 제어방법.
  2. 제1항에 있어서, 후속명령의 파이프라인 정보가 후속어드레스로 이루어지는 프로그램 제어방법.
  3. 제1항에 있어서, 후속명령의 파이프라인 정보가 후속명령코드와 후속어드레스로 이루어지는 프로그램 제어방법.
KR1019980025862A 1997-07-02 1998-06-30 프로그램제어방법 KR100528208B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP17707097 1997-07-02
JP97-177070 1997-07-02

Publications (2)

Publication Number Publication Date
KR19990013491A true KR19990013491A (ko) 1999-02-25
KR100528208B1 KR100528208B1 (ko) 2006-03-20

Family

ID=16024606

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980025862A KR100528208B1 (ko) 1997-07-02 1998-06-30 프로그램제어방법

Country Status (5)

Country Link
US (1) US6182211B1 (ko)
EP (1) EP0889394B1 (ko)
KR (1) KR100528208B1 (ko)
DE (1) DE69804383T2 (ko)
TW (1) TW373149B (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968545B1 (en) * 2000-09-11 2005-11-22 Agilent Technologies, Inc. Method and apparatus for no-latency conditional branching
US7397798B2 (en) * 2001-05-21 2008-07-08 Xelerated Ab Method and apparatus for processing blocks in a pipeline
JP2005149297A (ja) * 2003-11-18 2005-06-09 Renesas Technology Corp プロセッサおよびそのアセンブラ
US7477255B1 (en) * 2004-04-12 2009-01-13 Nvidia Corporation System and method for synchronizing divergent samples in a programmable graphics processing unit
US7324112B1 (en) 2004-04-12 2008-01-29 Nvidia Corporation System and method for processing divergent samples in a programmable graphics processing unit
DE112013006915T5 (de) * 2013-04-08 2015-12-24 Mitsubishi Electric Corp. Programmeditiergerät, Programmeditierverfahren und Programmeditierprogramm

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440704A (en) 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JP2508907B2 (ja) 1990-09-18 1996-06-19 日本電気株式会社 遅延分岐命令の制御方式
JP2882426B2 (ja) * 1991-03-29 1999-04-12 株式会社アドバンテスト アドレス発生装置
JP2875909B2 (ja) 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
JPH05173785A (ja) 1991-12-25 1993-07-13 Koufu Nippon Denki Kk 命令先取り装置
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
CN1153133C (zh) * 1996-12-09 2004-06-09 松下电器产业株式会社 采用小规模硬件作高命中率分支预测的信息处理装置
US6009515A (en) * 1997-05-30 1999-12-28 Sun Microsystems, Inc. Digital data processing system including efficient arrangement to support branching within trap shadows

Also Published As

Publication number Publication date
TW373149B (en) 1999-11-01
EP0889394B1 (en) 2002-03-27
EP0889394A2 (en) 1999-01-07
KR100528208B1 (ko) 2006-03-20
EP0889394A3 (en) 1999-04-14
US6182211B1 (en) 2001-01-30
DE69804383D1 (de) 2002-05-02
DE69804383T2 (de) 2002-10-10

Similar Documents

Publication Publication Date Title
US6889316B2 (en) Method and apparatus for restoring registers after cancelling a multi-cycle instruction
US6877090B2 (en) Branch predictor suitable for multi-processing microprocessor
EP1157329B1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
US20020169942A1 (en) VLIW processor
KR100423910B1 (ko) 코프로세서 명령 실행 장치 및 방법
KR100471794B1 (ko) 가변파이프라인단수의데이터처리장치
KR100528208B1 (ko) 프로그램제어방법
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
JP4383496B1 (ja) マイクロコンピュータ及びその命令実行方法
US6948054B2 (en) Simple branch prediction and misprediction recovery method
US20090070569A1 (en) Branch prediction device,branch prediction method, and microprocessor
JP3431503B2 (ja) 情報処理装置およびプログラム制御方法
US20050289330A1 (en) Branch control method and information processor
US20050071830A1 (en) Method and system for processing a sequence of instructions
JP2636192B2 (ja) 情報処理装置
US20060294345A1 (en) Methods and apparatus for implementing branching instructions within a processor
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
GB2285322A (en) Processor having multiple instruction registers
JPH05334081A (ja) パイプライン処理方式
JP3967363B2 (ja) 分岐予測装置および分岐予測方法
JP3851235B2 (ja) 分岐予測装置および分岐予測方法
JPH0760386B2 (ja) 分岐予測機能を有するデータ処理装置
JPH02255918A (ja) 命令取出し制御方式
JPH11175338A (ja) 情報処理装置
JPH05165640A (ja) マイクロプロセッサ

Legal Events

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

Payment date: 20111019

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee