KR100259306B1 - 분기 명령 버퍼를 갖는 데이타 프로세서 - Google Patents

분기 명령 버퍼를 갖는 데이타 프로세서 Download PDF

Info

Publication number
KR100259306B1
KR100259306B1 KR1019920018637A KR920018637A KR100259306B1 KR 100259306 B1 KR100259306 B1 KR 100259306B1 KR 1019920018637 A KR1019920018637 A KR 1019920018637A KR 920018637 A KR920018637 A KR 920018637A KR 100259306 B1 KR100259306 B1 KR 100259306B1
Authority
KR
South Korea
Prior art keywords
instruction
address
branch
buffer
prefetch
Prior art date
Application number
KR1019920018637A
Other languages
English (en)
Other versions
KR930008615A (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 KR930008615A publication Critical patent/KR930008615A/ko
Application granted granted Critical
Publication of KR100259306B1 publication Critical patent/KR100259306B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • 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/30054Unconditional 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, look ahead
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Abstract

분기 명령을 실행하는 기능 및 명령을 프리페치하는 기능을 갖고, 명령 프로페치 기능이 분기 이력 정보와 결합되어 고속으로 분기 명령이 실행되는 데이타 프로세서로서, 리턴 어드레스가 서브루틴 콜 명령의 어드레스에 의해 결정되어, 여러개의 서브루틴 콜 명령이 프로그램에 있을 때, 관련된 서브루틴에 라이트된 리턴 명령에 대해 리턴 어드레스를 유일하게 결정할 수 없는 것을 해소하기 위해서,
(1) 데이타 프로세서에 의해 한번 실행된 분기 명령의 어드레스를 나타내는 분기 이력 정보, 그의 분기 목표 어드레스 및 그의 종류를 저장하는 제1의 버퍼와
(2) 서브루틴에서의 리턴을 위한 리턴 어드레스를 저장하는 제2의 버퍼를 포함하는 데이타 프로세서를 마련한다.
이러한 데이타 프로세서를 사용하는 것에 의해, 분기 처리, 특히 리턴 명령을 포함하는 무조건 분기 명령의 처리 속도가 증가된다.

Description

분기명령버퍼를 갖는 데이타프로세서
제1도는 본 발명에 따른 1실시예의 마이크로프로세서의 전체 구조를 도시한 도면,
제2도는 제1도의 마이크로프로세서에 어떠한 분기동작도 존재하지 않을 때의 파이프라인 처리 흐름을 도시한 도면.
제3도는 제1도의 마이크로프로세서의 분기명령버퍼BW(102)에 미스히트가 발생할 때의 파이프라인 처리 흐름을 도시한 도면.
제4도는 제1도의 마이크로프로세서의 분기명령버퍼BW(102)에 히트가 발생할 때의 파이프라인 처리 흐름을 개략적으로 도시한 도면.
제5도는 제1도의 마이크로프로세서의 분기명령버퍼BW(102)에 히트가 발생할 때의 파이프라인 처리 흐름을 도시한 도면.
제6도는 제1도의 마이크로프로세서의 분기명령버퍼BW(102) 및 리턴버퍼RB(103)에 히트가 발생할 때의 파이프라인 처리 흐름을 개략적으로 도시한 도면.
제7도는 제1도의 마이크로프로세서의 분기명령버퍼BW(102)의 상세한 구조를 개략적으로 도시한 도면.
제8도는 제1도의 마이크로프로세서의 리턴버퍼RB(103)의 상세한 구조를 도시한 도면.
제9도는 제1도의 마이크로프로세서의 명령 프리페치 유닛의 제어동작의 제1의 부분을 도시한 흐름도.
* 도면의 주요부분에 대한 부호의 설명
101 : 프리페치 어드레스 발생기 102 : 분기명령버퍼
103 : 리턴버퍼 104 : 명령캐시
111 : 프리페치 큐 321 : 명령 어드레스 큐
113 : 명령디코더 114 : 레지스터 화일
117 : 산술논리 유닛 119 : 오퍼런드 캐시
본 발명은 분기명령을 실행하는 기능 및 명령을 프리페치하는 기능을 갖는 데이타 프로세서에 관한 것으로서, 특히 명령 프리페치 기능이 분기이력정보와 결합되어 고속으로 분기명령이 실행되는 데이타 프로세서에 관한 것이다.
종래, 분기명령의 처리속도를 증가시키기 위해, 분기명령의 어드레스 및 분기목표명령의 어드레스가 분기이력정보로서 버퍼에 저장되는 데이타 프로세서가 JP-A-1-240931(1989년 9월 26일 공개)에 기재되어 있다. 명령 프리페치가 달성될 때, 사전에 분기를 제어하기 위해 이력정보를 키로서의 프리페치 어드레스에 의해 검사한다.
또한, 종래 분기명령의 고속실행을 위해, 분기명령전의 이전명령의 어드레스 및 분기목표명령의 어드레스가 분기이력정보로서 버퍼에 저장되는 데이타 프로세서가 JP-A-2-166520(1990년 6월 27일 공개)에 기재되어 있다. 명령이 디코드될 때, 이력정보는 키로서의 명령 어드레스에 의해 검사되어 무조건 분기명령의 실행을 스킵하는 것에 의해, 고속으로 분기가 달성된다.
종래기술은 무조건 분기명령에서의 분기처리속도 증가를 주목적으로 하였다. 그러나, 본 발명의 발명자의 연구를 통해, 이들 기술은 다음의 이유에 의해 무조건 분기명령과 관련된 서브루틴에서의 리턴에 대한 리턴(rts)명령의 분기처리에 대처할 수 없다.
각각의 종래기술에 있어서, 각 분기명령이 어떤 경우에도 고정된 분기 목표 어드레스를 갖는다고 하면, 분기이력정보가 다음의 분기처리에 유용하다고 고려된다. 그러나, 그러한 가정은 서브루틴에서의 리턴명령의 경우에 적용되지 않는다. 리턴명령은 서브루틴에서 콜측의 리턴 어드레스로의 리턴제어에 사용되므로, 리턴 어드레스는 콜측의 어드레스에 따라 변한다.
다음에, 서브루틴 콜 및 리턴처리 메카니즘을 설명한다.
먼저, 콜측의 루틴을 서브루틴 콜(bsr)명령을 실행한다. 실행중에 리턴어드레스가 산출되어 메모리내의 스택(소프트웨어에 의해 발생됨)이라고 하는 라스트 인 퍼스트 아웃(LIFO)에 저장된다. 리턴 어드레스는 서브루틴 콜 명령의 어드레스를 사용하는 것에 의해 산출된다. 그 후, 명령에 의해 제어가 서브루틴으로 전달된다. 그 후 서브루틴이 실행된다. 서브루틴의 최종단계에서 리턴 명령이 실행된다. 리턴 어드레스가 스택에서 리드된 후, 리턴 어드레스로 제어가 이동하는 것에 의해 처리가 콜측의 루틴으로 전달된다.
상술한 바와 같이, 리턴 어드레스는 서브루틴 콜 명령의 어드레스에 의해 결정된다. 따라서, 여러개의 서브루틴 콜 명령이 프로그램에 있을 때, 관련된 서브루틴에 라이트된 리턴(rts)명령에 대해 리턴 어드레스를 유일하게 결정할 수 없다.
본 발명의 목적은 분기명령을 고속으로 실행할 수 있고 무조건 분기명령, 즉 리턴명령의 분기처리에 대처할 수 있는 데이타 프로세서를 제공하는 것이다.
상기 목적을 달성하기 위해, 본 발명의 하나의 특징에 따르면, 본 발명의 데이타 프로세서는 [1] 데이타 프로세서에 의해 한번 실행된 분기명령의 어드레스를 나타내는 분기이력정보, 그의 분기목표 어드레스 및 그의 종류를 저장하는 제1의 버퍼와 [2] 서브루틴에서의 리턴을 위한 리턴 어드레스를 저장하는 제2의 버퍼를 포함한다.
제1의 버퍼 : 데이타 프로세서에 의해 실행된 분기명령을 데이타 프로세서가 실행하는 경우, 분기목표 어드레스가 제1의 버퍼에서 리드되어 다음 명령의 프리페치 어드레스가 고속으로 발생된다.
제2의 버퍼 : 데이타 프로세서가 사전에 한번 실행된 리턴명령을 실행할 때, 관련된 서브루틴에서의 리턴을 위한 리턴 어드레스가 제2의 버퍼에서 리드되는 것에 의해, 콜측의 루틴으로의 리턴제어가 고속으로 실행된다. 리턴 어드레스를 저장하는 제2의 버퍼는 라스트 인 퍼스트 아웃(LIFO) 큐이다. 큐는 서브루틴 콜 명령이 실행될 때만 푸시되고 리턴명령이 실행될때만 팝된다. 즉, 제2의 버퍼는 메모리의 스택의 일부(리턴 어드레스)를 저장하는 캐시메모리이다.
2개의 버퍼는 리턴 명령에 대해 다음과 같이 작용한다. 리턴명령이 프리페치된 이벤트는 분기이력정보를 저장하는 제1의 버퍼를 사용하는 것에 의해 검출된다. 즉, 리턴명령의 실행결과로서 분기이력정보는 다른 분기(bra 및 bsr)명령의 실행인 경우와 같이 제1의 버퍼에 등록된다. 그러나, 리턴명령에 대해 제1의 버퍼는 프리페치동작의 검출에만 사용된다. 즉, 분기목표 어드레스의 필드는 사용되지 않는다. 그 대신, 분기목표 어드레스는 리턴 어드레스를 저장하도록 배치된 제2의 버퍼에서 얻어진다.
또한, 동일한 분기이력정보가 저장되는 제1의 버퍼에 다른 분기명령과 함께 리턴명령이 등록되므로, 버퍼중의 하나를 관련된 분기 어드레스에 사용하는 것을 결정하는 정보가 필요하게 된다. 이 문제를 해소하기 위해서, 제1의 버퍼에는 분기명령의 종류를 나타내는 정보(분기명령종류)가 저장된다.
또한, JP-A-1-166520호에 기재되어 있는 바와 같이, 분기이력정보의 검색동작에서 분기명령에 선행하는 명령의 어드레스를 사용할 수 있다. 분기명령전 2이상의 이전의 명령이 존재할 수 있다.
본 발명의 상기 및 그 밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면에 의해 더욱 명확하게 될 것이다.
제1도는 본 발명에 따른 1실시예의 마이크로프로세서의 구조를 도시한 블럭도이다. 본 발명은 명령 프리페치 동작에 관한 분기동작의 처리속도를 고속화하는 기술에 관한 것으로서, 이하 명령 프리페치 유닛을 먼저 설명한다.
1. 마이크로프로세서의 내부구조
제1도에 따라 마이크로프레세서의 내부구조를 설명한다. 제1도에서, 본 발명에 따른 마이크로프로세서의 구성요소 및 기능은 다음과 같다.
PAG(101) : 프리페치 어드레스 발생기(가산기)
BW(102) : 분기 목표 어드레스를 유지하는 분기명령버퍼
RB(103) : 리턴 어드레스를 유지하는 리턴버퍼
IC(104) : 명령캐시
PFQ(11) : 프리페치 큐
PCQ(321) : PAG에 의해 발생된 명령 어드레스를 유지하는 명령 어드레스 큐
ID(113) : 명령디코더
RF(114) : 레지스터 화일
ALU(117) : 산술논리유닛
OC(119) : 오퍼런드캐시
이들 구성요소 중 PAG, BW, RB, IC, PFQ 및 PCQ는 프리페치 유닛내에 포함된다. 이하, 구성요소를 순서대로 설명한다.
PAG(101)은 프리페치 어드레스를 발생하는 29비트 가산기이다. 프로그램의 순차 실행, 즉 분기동작 이외의 동작에서, 프리페치 동작이 실행될 때마다 프리페치 어드레스에 고정값을 가산하는 것에 의해, 프레페치 어드레스가 생성된다. 가산되는 고정값은 한번에 프리페치될 명령의 바이트폭과 동일하다. 외부 메모리와 IC (명령캐시) 사이의 데이타선의 바이트폭이 8바이트일 때 가산되는 값은 8이다. PAG(101)로의 입력중 하나는 프리페치 어드레스의 값을 전달하는 신호선(110)이다. 그의 다른 하나는 이 예에서는 8인 고정값이다(값"8"은 최하위 비트(LSB)로 캐리비트에 의해 나타낼 수 있다). 가산의 결과는 신호선(105)상으로 공급된다.
분기명령버퍼BW(102)에는 분기명령의 어드레스, 분기 목표 어드레스 및 그의 종류를 구비하는 분기명령 이력정보가 저장된다. 이들 항목은 이력정보로서 하나의 군으로 배치된다. 명령 프리페치동작에서, 프리페치 어드레스는 이력정보내의 분기명령 어드레스와 비교된다. 히트가 발생하면, 분기 목표 어드레스 및 분기명령 종류는 BW(102)에서 출력된다.
리턴버퍼RB(103)은 분기명령의 종류인 리턴명령을 위한 리턴 어드레스를 유지하는 라스트 인 퍼스트 아웃(LIFO) 큐이다.
명령캐시IC(104)는 신호선(110)을 거쳐 29비트 프리페치 어드레스를 입력으로서 받은 후, 캐시(104)의 어드레스에 관한 64비트 명령(16비트폭의 4개의 명령)을 리드하여 신호선(108)상으로 명령을 출력한다. 명령이 캐시(104)의 어드레스에서 미스될 때, 명령이 64비트 신호선(120)을 거쳐 외부 메모리에서 리드되어 캐시(104)에 라이트되도록 외부 메모리 액세스가 초기화된다.
프리페치 큐 PFQ(111)은 프리페치 명령을 유지하는 퍼스트 인 퍼스트 아웃(FIFO) 큐로서, 명령을 정형(예를 들면, 64비트 포맷을 16비트 포맷으로) 하는 기능을 갖는다. 큐PFQ(111)은 64비트 신호선(108)을 입력으로서 받고 16비트 신호선(112)로 출력을 전달한다.
명령 어드레스 큐 PCQ(321)은 발생기 PAG(101)에서 생성된 프리페치 어드레스를 유지하는 FIFO큐이다. 큐(321)은 3입력 셀렉터(109)에서 29비트 신호선(110)을 입력으로서 받고, 29비트 신호선(122)상으로 출력을 전달한다.
명령디코더 ID(113)은 16비트 신호선(112)를 거쳐 큐 PFQ(111)에서의 명령을 입력으로서 받는다. 공급된 각 명령은 16비트 단위로 정형되거나 정렬된 포맷이다. 명령디코드 동작의 결과는 제어선을 거쳐 관련된 구성요소로 공급된다. 그러나, 제1도에는 제어선을 도시하지 않았다.
이 실시예의 레지스터 화일 RF(114)는 각각 32비트폭인 16개의 레지스터로 구성된다. RF(114)는 1개의 입력포트 및 2개의 출력포트를 갖는다. 이들 입력 및 출력포트는 동시에 동작될 수 있다. 각각의 포트는 32비트폭이고, 신호선(121), (115) 및 (116)에 각각 접속된다.
32비트 신호선(115) 및 (116)은 산술논리유닛(ALU)(117)에 입력으로서 접속된다. ALU(117)은 계산결과를 선(118)상으로 출력한다. 이 실시예에서, 데이타연산 및 어드레스산출은 ALU(117)에 의해 모두 실행된다. 구해진 데이타 또는 어드레스는 신호선(118)로 출력된다.
오퍼런드가 페치될 때, 오퍼런드 캐시 OC(119)가 신호선(118)을 거쳐 입력된 어드레스에 따라 액세스되고 데이타가 신호선(121)상으로 전달되는 것에 의해, 그의 값이 레지스터 화일(114)로 전송된다. 오퍼런드 저장동작에서 저장 어드레스는 첫번째 사이클에 있어서 ALU(117)에서 신호선(118)을 거쳐 오퍼런드 캐시(119)로 전송되어 그 안에 유지된다. 다음의 사이클에서 저장 데이타가 신호선을 거쳐 전달되어 오퍼런드 캐시(119) 및 외부 메모리에서 오퍼런드 저장동작이 실행된다. 또한, 오퍼런드 페치동작을 통해 액세스된 데이타가 오퍼런드 캐시(119)에서 미스될 때, 외부 메모리 액세스가 활성화되어 외부 메모리에서 신호선(120)을 거쳐 오퍼런드 캐시(119)로 오퍼런드가 전송된다.
2. 파이프라인 처리의 흐름
이하, 제2도 및 제6도에 따라 제1도에 도시한 실시예의 마이크로프로세서에서의 파이프라인 처리 흐름을 설명한다.
2. 1 분기가 없는 파이프라인 처리 흐름
제2도는 분기동작이 실행되지 않을 때의 파이프라인 처리의 흐름을 도시한 것이다. 가로축은 시간을 나타내고, 각 사이클은 t0, t1 등으로 나타내고, 세로축은 파이프라인의 각 스테이지에서의 처리를 나타낸다.
스테이지 "i"는 PAG(101), BW(102), RB(103), IC(104), PFQ(111) 및 PCQ(321)의 동작을 구비하는 명령 프리페치 스테이지이다. 예를 들면, 제2도의 시간 t0에서, 명령 1이 프리페치되어 PFQ(111)에서 신호선(112)를 거쳐 다음의 처리 스테이지(명령디코드 동작)로 전달된다. 이점에 관해서는 제2도에서 명령이 명령캐시(104)에서만 프리페치되는 것으로 한다.
스테이지 "d"는 명령디코드 스테이지로서, 제1도의 IC(113) 및 RF(114)의 동작을 포함하는 것이다. 제2도의 시간 t1에서, 명령 1이 디코더(113)에 의해 디코드되고 디코드동작의 결과에 따라 레지스터 화일(114)가 액세스되어 데이타가 리드된다. 구해진 데이타는 신호선(115) 및 (116)을 거쳐 전달된다.
스테이지 "e"는 실행 및 어드레스산출 스테이지로서, 제1도의 ALU(117)의 동작을 구비하는 것이다. 제2도의 시간 t2에서, 명령 1이 디코더(113)의 제어하에서 ALU(117)에 의해 실행되는 것에 의해 데이타동작이 달성된다. 신호선(115) 및 (116)은 ALU(117)에 입력으로서 접속되고, 그 결과는 신호선(118)로 출력된다.
스테이지 "a"는 오퍼런드 액세스 스테이지로서, 오퍼런드 캐시(119)의 동작을 포함한다. 제2도의 시간 t3에서, 명령 1은 명령디코더(113)의 제어하에서 오퍼런드 액세스 처리를 달성한다. 3종류의 처리가 다음과 같이 실행된다.
[1] 오퍼런드 페치 : 페치될 데이타가 오퍼런드 캐시(119)에서 미스될 때, 데이타가 외부 메모리에서 오퍼런드 캐시(119)로 전달되어 오퍼런드 페치처리가 실행된다.
[2] 오퍼런드 저장 : 데이타는 오퍼런드 캐시(119) 및 외부 메모리에 저장된다.
[3] 데이타 전송 : 연산결과는 ALU(117)에서 레지스터 화일(114)에 저장된다.
어떠한 동작에서도 입력은 신호선(118)을 거쳐 공급된다. 처리[1] 및 [3]에서는 출력이 신호선(121) 상으로 전달된다. 또한 데이타는 신호선(120)을 거쳐 외부 메모리와 수수된다. 제 1 도에는 외부 메모리로의 어드레스 출력선을 도시하지 않았다.
스테이지 "s"는 레지스터 저장 스테이지로서, 제1도의 레지스터 화일(114)의 동작을 포함한다. 제2도의 시간 t4에서, 명령 1은 명령 디코더(113)의 제어하에서 레지스터 저장 동작을 실행한다. 입력신호는 신호선(121)을 거쳐 전달된다.
2.2 분기가 있는 파이프라인 처리의 흐름
제3도는 분기명령버퍼 BW(102)에 미스가 발생할 때 무조건 분기(bra)명령 실행시의 파이프라인 처리 흐름을 도시한 것이다. 실행중인 명령이 무조건 분기명령이라는 것은 명령디코드 스테이지 "d"가 명령에 대해 종료일 때, 즉 시간 t0에서 결정된다. 그러나, 어드레스 산출 스테이지 "e"가 완료될 때, 즉 시간 t1에서 분기목표 어드레스가 알려진다. 계속해서, 분기목표 어드레스에서의 명령 11 및 12가 시간 t2에서 프레페치된다. 그 결과, 분기당 2사이클의 오버헤드(파이프라인 처리의 아이들 타임(유휴시간))가 발생한다.
제4도는 무조건 분기명령의 분기처리가 제1도의 버퍼BW(102)에 의해 고속으로 실행되는 경우의 파이프라인 처리 흐름을 도시한 것이다. 즉, 이 도면은 버퍼(102)에서 히트가 발생할 때의 파이프라인 처리 흐름을 도시한 것이다. 제3도에 비해 제4도에서는 오버헤드는 다음과 같이 발생하지 않는다(0사이클). 시간 t0의 스테이지 "i"에서 명령이 프리페치되는 것은 분기목표명령 11이 시간 t1에서 이미 프리페치되어 버퍼(102)의 이력정보에서 검출된다. 또한, 명령의 처리가 분기처리만으로 구성되므로, bra명령 자체는 스테이지 "i"에서 삭제되거나 스킵되므로, 스테이지 "d"로는 전송되지 않는다.
제5도는 제4도와 마찬가지로, 분기처리속도가 제1도의 버퍼(102)에 의해 증가되는 예를 도시한 것이다. 그러나, 분기명령은 서브루틴 콜(bsr) 명령이다. 명령이 실행될 때, 서브루틴영역의 명령 11 및 12가 분기명령버퍼(102)에서 리드된다. 또한, 서브루틴을 콜하기 위한 이 (bsr) 명령은 무조건 분기를 위한 분기(bra) 명령과는 다르다. 즉, 분기처리에 부가하여 실행되어야 할 처리가 존재하므로, 상기와 같은 분기(bra) 명령인 경우와 달리, 명령을 스킵할 수 없다. 따라서, 분기실행에는 2사이클의 기간이 필요하다. 분기의 오버헤드는 제4도의 경우와 마찬가지로 0사이클이다.
제6도는 제4도와 마찬가지로, 분기처리속도가 버퍼(102)에 의해 증가되는 경우를 도시한 것이다. 그러나, 이 예에서는 분기명령이 리턴(rts) 명령이다. 이 명령이 실행될 때, 콜측 루틴의 어드레스가 리턴버퍼(103)에서 리드된다. 이 명령은 서브루틴 콜(bsr) 명령과 동일한 이유에 의해 스킵될 수 없다. 따라서, 명령의 실행에는 1사이클이 필요하다. 그러나, 버퍼(102)의 유효한 효과에 의해 이 명령과 관련된 오버헤드는 0사이클이다.
상술한 바와 같이, 무조건 분기(bra) 명령 및 서브루틴 콜(bsr) 명령은 리턴버퍼 RB(103)을 사용하는 일 없이 분기명령버퍼 BW(102)를 거쳐 처리된다. 한편, 리턴(rts) 명령은 버퍼(102) 및 (103)을 거쳐 실행된다. 동작흐름의 설명에 앞서, 이들 버퍼(102) 및 (103)의 구조를 설명한다.
3. 분기명령버퍼(102) 및 리턴버퍼(103)의 구성 및 동작
3. 1 분기명령버퍼(102)의 구성 및 동작
제7도는 제1도의 버퍼(102)의 상세한 구조를 설명하는 구성도이다. 버퍼(102)는 어드레스 디코더(201), 어드레스 태그 필드BWA(202), 데이타 필드BWD(203) 및 일치비교기CMP(209)를 구비한다.
어드레스 디코더(201)은 5비트 디코더로서, BWA(202) 및 BWD(203)의 각각의 32개의 엔트리중의 하나를 특정하는 포인터를 디코드동작의 결과로서 구한다. 각 필드는 랜덤 액세스 메모리(RAM)으로 형성된다. 그러나, 이것을 내용 주소화 메모리로 구성할 수도 있다. BWA(202) 및 BWD(203)은 각각 32엔트리 또는 워드와 32비트 및 33비트폭을 각각 갖는다.
BWA(202)의 32비트는 분기명령 어드레스 31비트(입력선(122), 출력선(206) 및 (213))와 유효비트 1비트(입력선(204), 출력선(207))를 구비한다. BWD(203)의 33비트는 분기목표 어드레스 31비트(입력선(118), 출력선(106))와 분기명령종류 2비트(입력선(205) 및 출력선(208))를 구비한다. 분기명령종류는 무조건 분기(bra) 명령, 서브루틴 콜(bsr) 명령, 리턴(rts) 명령 사이의 판별을 위한 정보이다. CMP(209)는 24비트폭의 일치 비교기이다. 일치비교의 결과를 나타내는 신호(210)(일치는 1, 불일치는 0)은 AND회로(211)에서 유효신호(207)과 논리곱이 취해진다. AND회로(211)에서의 출력은 비트신호(212)로서 명령 프리페체 유닛의 BW 제어 회로로 전달된다.
분기명령버퍼 BW(102)의 라이트동작은 다음과 같다.
먼저, 29비트 프리페치 어드레스 신호선(110)의 하위 5비트가 어드레스 디코더(201)에 공급된다. 다음에, 디코더(201)에 의해 어드레스가 디코드되어 32개의 엔트리중 하나가 선택된다. 이 동작에서, BWA(202) 및 BWD(203)에 입력으로서 접속된 신호선(122), (204), (118) 및 (205)의 값은 선택된 엔트리에 동시에 라이트된다. 분기명령 어드레스(122)는 출력신호선을 거쳐 제1도의 명령 어드레스 큐PCQ(321)에서 전달된다. 유효비트(204)는 명령 프리페치 유닛의 제어회로에서 송출되고, 분기목표 어드레스(118)은 제1도의 ALU(117)에서 출력신호선(어드레스 산출 결과)을 거쳐 전달된다. 분기명령종류(205)는 명령디코더ID(113)으로부터의 출력정보를 명령 프리페치 유닛의 제어회로에 의해 타이밍조정해서 얻은 신호에 의해 나타내어진다.
분기명령버퍼BW(102)의 리드동작은 다음과 같이 실행된다.
그의 라이트동작과 마찬가지로, 29비트 프리페치 어드레스 신호선(110)의 하위 5비트는 어드레스 디코더(201)로 공급되지만, 나머지 24비트는 일치비교기CMP(209)로 공급된다. 계속해서, 어드레스가 어드레스 디코더(201)에서 디코드되어 32개의 엔트리중 하나가 선택된다. BWA(202) 및 BWD(203)이 액세스되어 선택된 엔트리에서 데이타가 리드되는 것에 의해, 신호선(206), (213), (207), (106) 및 (208)상으로 데이타가 출력된다.
신호선(206)으로 출력된 분기명령 어드레스는 선택된 엔트리에 등록된 분기명령의 어드레스의 상위 24비트이다. 어드레스의 하위 5비트만이 엔트리선택에 사용되므로, 프리페치중인 명령에 포함된 분기명령의 어드레스와 등록된 분기명령의 어드레스가 일치하는지의 여부를 결정하기 위해 비교기(209)에 의해 상위 24비트가 어드레스 사이에서 검사된다.
24비트 다음의 하위 7비트는 신호선(213)으로 송출된다. 신호선(213)에서의 상위 5비트는 프리페치 어드레스(110)의 5비트와 일치한다. 따라서, 그 5비트를 BWA(202)에서 삭제하거나 무시하여도 좋다. 신호선(213)의 하위 2비트는 8바이트 명령 필드의 분기명령(2바이트 길이)의 위치를 나타내므로 프리페치되어 프리페치 큐(111)의 제어정보로서 사용된다.
또한, 유효비트(207)은 엔트리에서 리드한 정보가 유효한지의 여부를 나타낸다. 유효비트(207)은 정보가 유효 또는 무효일 때, 각각 "1" 또는 "0"으로 설정된다. 유효신호는 AND회로(211)에 의해 일치비교의 결과를 나타내는 신호(210)과 논리곱을 취하는 것으로 BWA(202) 및 BWD(203)의 각각에서 리드된 데이타가 프리페치 어드레스(110)에 대응하여 유효한지의 여부를 나타내는 히트신호(212)가 생성된다.
BWD(203)에서 리드된 분기목표 어드레스(106)은 분기 프리페치 유닛의 분기처리에 사용된다. 즉, 제1도에서 버퍼BW(102)에서 출력된 분기목표 어드레스(106)은 셀렉터(109) 및 신호선(110)을 거쳐 프리페치 어드레스로서 명령캐시(104), 분기명령버퍼(102) 및 프리페치 어드레스 발생기(101)에 입력된다.
또한, 분기명령종류(208)은 엔트리에서 리드된 분기명령이 무조건 분기(bra) 명령, 서브루틸 콜(bsr)명령, 리턴(rts) 명령 중의 어느 하나를 나타내는 것이다. 정보를 수신하자 마자, 명령 프리페치 유닛의 제어회로는 제4도∼제6도에 도시한 동작중의 하나를 실행한다.
3. 2 리턴버퍼RB의 구성 및 동작
제8도는 제1도의 리턴버퍼(103)의 구조를 상세히 도시한 것이다. 버퍼(103)은 디코더(302) 및 랜덤 액세스 메모리RBD(303)을 구비한다. 디코더는 4비트 디코더로서, 4비트폭 포인터를 입력으로서 수신하여 메모리 RBD(303)의 16엔트리 중의 하나를 선택한다. 메모리RBD(303)은 16엔트리를 구비하고, 32비트폭이다. 32비트는 리턴 어드레스 31비트(입력선(118), 출력선(107))과 유효비트 1비트(입력선(304), 출력선(305))를 구비한다. 구해진 유효비트는 RBD(303)에서 유효비트로서 직접 사용된다.
리턴버퍼RB(103)의 라이트동작은 다음과 같다.
4비트 포인터(301)은 명령 프리페치 유닛의 제어회로에서 공급된다. 포인터(301)은 디코더(302)에 의해 디코드되어 메모리RBD(303)의 엔트리중의 하나를 선택한다. 이 동작에서, RBD(303)에 입력된 리턴 어드레스(118) 및 유효신호(304)의 각각의 값은 선택된 엔트리에 라이트된다. 유효신호는 명령 프리페치 유닛의 제어회로에서 전달된다. 리턴버퍼(103)에서의 데이타 라이트동작은 서브루틴 콜 명령(예를 들면, bsr명령)이 실행될 때 개시된다. 포인터의 내용은 이 동작중에 다음 항목을 나타내도록 변경된다.
버퍼RB(103)의 리드동작은 다음과 같이 실행된다.
라이트동작과 마찬가지로, 4비트 포인터(301)은 명령 프리페치 유닛의 제어회로에서 전달된다. 포인터(301)은 디코더(302)에 의해 디코드되어 메모리 RBD(303)의 엔트리중의 하나를 선택한다. 선택된 엔트리의 데이타는 신호선(107) 및 (305)로 동시에 출력된다. 버퍼BW(102)에서 리드된 분기명령의 종류가 리턴(rts) 명령을 나타내고 리턴버퍼(103)에서 얻은 (유효)비트 신호의 값이 "1"인 경우, 리턴 어드레스(107)은 다음의 프리페치 어드레스로서 제1도의 셀렉터(109) 및 신호선(110)을 거쳐 명령캐시(104), 분기명령버퍼(102) 및 프리페치 어드레스 발생기(101)로 전송된다. 리턴버퍼RB(103)의 포인터의 내용은 서브루틴 리턴(예를 들면 rts명령)이 실행될 때 이전 항목을 나타내도록 설정된다.
서브루틴 리턴(rts) 명령의 처리에서, 무조건 분기(bra) 명령 및 서브루틴 콜(bsr) 명령과는 달리, 분기목표 어드레스는 다음과 같은 이유에 의해 분기명령버퍼BW(102)에 유지될 수 없다.
리턴(rts) 명령은 관련된 서브루틴에서의 리턴제어에 사용된다. 즉, 서브루틴의 마지막 명령으로서, 명령은 서브루틴에서 서브루틴을 콜한 콜명령 직후의 명령으로의 분기제어에 대해 실행된다. 리턴 어드레스는 서브루틴이 콜될때 스택에 저장된 후, 제어가 서브루틴에서 리턴될 때 어드레서는 복원된다. 따라서, 동일한 서브루틴 리턴(rts) 명령에 대해서도, 리턴 어드레스는 서브루틴을 콜한 루틴의 어드레스에 따라 변경된다.
이와는 반대로, 분기명령버퍼BW(102)에서 분기명령의 어드레스 및 분기목표 어드레스는 이력정보를 구성하는 군으로서 저장된다. 상술한 바와 같이, 분기명령 어드레스는 서브루틴 리턴 명령에서 분기목표 어드레스에 관해 유일하지 않으므로, 서브루틴 리턴 어드레스의 분기 리턴 어드레스는 버퍼(102)에 유지될 수 없다. 이러한 결점을 극복하기 위해, 스택에 저장된 리턴 어드레스의 카피를 유지하는 버퍼RB(103)을 마련하고 이 버퍼RB(103)에서 리턴 어드레스를 얻는 것에 의해, 그 문제를 해소할 수 있다.
4. 동작의 흐름
제9도는 상기 실시예의 데이타 프로세서의 명령 프리페치 유닛의 기본적인 제어동작을 도시한 흐름도이다. 각각 분기, 리세트동작 및 예외의 발생에 관한 상태천이는 도시하지 않았다. 이하, 제9도에 따라 제어흐름을 설명한다.
스텝(900)에서, 제어는 프리페치 큐PFQ(111)의 자유영역을 대기한다. 큐(111)이 FIFO큐이므로, 데이타가 풀상태로 될 때 그곳에서 데이타가 명령디코더(113)으로 전송되어 자유영역이 마련될 때까지 어떠한 다음 데이타도 큐(111)에 큐할 수 없다. 따라서, 스텝(901)에서의 판정(PFQ(111)이 풀인지의 여부)에 따라 제어는 대기스텝(900) 또는 스텝(902)로 각각 진행한다.
스텝(902)에서, 리드동작은 명령캐시(104), 분기명령버퍼(102) 및 리턴버퍼(103)에 관해 실행된다. 리드동작의 결과가 스텝(903)∼(906)에서 각각 검사되어 스텝(907)∼(910) 중의 하나로 제어가 이동한다.
스텝(903)에서, 명령캐시(104)의 리드동작이 성공적으로 완료했는지(히트신호의 값이 "1")의 여부를 결정하는 판정이 실행된다. YES이면 제어는 스텝(904)로 진행하고, 그렇지 않으면 스텝(910)로 처리가 진행한다.
스텝(904)에서, 시스템은 버퍼(102)의 리드동작이 성공적으로 완료했는지의 여부(즉, 제7도의 히트신호(212)의 값이 "1"을 나타내는지의 여부)를 결정하는 판정을 실행한다. YES이면 제어는 스텝(905)로 진행하고, 그렇지 않으면 스텝(909)로 처리는 진행한다.
스텝(905)에서, 버퍼(102)에서 리드된 분기명령종류의 정보(제7도의 신호(208))가 리턴(rts) 명령을 나타내는지의 여부를 결정하기 위한 검사가 실행된다. 그 종류가 리턴 명령을 나타내면 제어는 스텝(906)으로 진행하고, 그렇지 않으면 처리는 스텝(907)로 진행한다.
스텝(906)에서, 버퍼(103)의 리드동작이 성공적으로 완료되었는지(즉, 제8도의 히트신호(305)의 값이 "1")의 여부를 결정하기 위해 판정이 실행된다. YES이면 제어는 스텝(908)로 진행하고, 그렇지 않으면 처리는 스텝(909)로 진행한다.
스텝(907)은 버퍼(102)에서 히트가 발생하고, 분기명령이 무조건 분기(bra) 명령 또는 서브루틴 콜(bsr) 명령일 때에 실행된다. 다음 사이클의 프리페치 어드레스로서 버퍼(102)에서 출력된 분기목표 어드레스(106)이 사용된다. 구체적으로, 신호(106)이 제1도의 셀렉터(109)에 의해 선택되어 그 신호의 값이 신호선(110)으로 전달된다.
스텝(908)은 버퍼(102) 및 (103) 각각에서 히트가 발생되고 분기명령이 리턴(rts) 명령일 때 실행된다. 버퍼(103)에서 공급된 리턴 어드레스(107)은 다음 사이클에서 프리페치 어드레스로서 사용된다. 구체적으로, 신호(107)이 제1도의 셀렉터(109)에 의해 선택되어 그의 값이 신호선(110)으로 전달된다.
스텝(909)는 히트가 캐시(104)에서 발생하고 스텝(907) 및 (908)로의 천이조건이 각각 만족되지 않을 때 실행된다. 스텝(909)에서, 리드동작은 명령캐시(104)에 대해서 실행된다. 이것과 관련하여 계속되는 사이클의 프리페치 어드레스로서 제1도의 발생기(101)에서 송출된 신호(105)의 값이 사용된다. 좀더 구체적으로, 제1도의 셀렉터(109)에 의해 신호(105)가 선택되어 그 신호의 값이 신호선(110)으로 전달된다.
스텝(910)으로의 상태천이는 캐시(104)의 리드동작이 실패로 끝날 때 발생한다. 스텝(910)에서 메모리 액세스는 외부 메모리에 대해 초기화된다. 데이타를 명령캐시(104)에서 리드하는데 사용된 프리페치 어드레스(신호선(110)의)가 어드레스로서 사용되어 외부 메모리를 액세스한다. 어드레스 신호선(110)은 제1도에 도시하지 않았다. 외부 메모리에서 명령전송이 종료될 때 제어는 스텝(902)로 다시 진행한다.
스텝(907)∼(909)의 각각에서 처리는 스텝(911)로 이동한다.
스텝(911)에서, 라이트동작이 버퍼(102) 및 (103)에 대해 활성화되는지의 여부가 판정된다. 기본적으로, 무조건 분기(bra) 명령, 서브루틴 콜(bsr) 명령 및 리턴(rts) 명령 중의 어느 하나가 명령디코더(113)에 의해 디코드된 것을 나타내는 디코드정보에 따라 결정한다. 그러나, 라이트동작의 초기화조건은 분기명령 사이에서 다음과 같이 약간 변경된다.
[1] 무조건 분기(bra)명령
bra명령이 디코드될 때 버퍼(102) 및 (103)이 유효하면, 라이트동작은 버퍼(102)에 대해 활성화된다. 명령이 버퍼(102)를 사용하는 분기에 관한 것일 때, 명령은 명령 프리페치 유닛에서 삭제되거나 또는 무시되므로, 명령디코더(113)으로 전송되지 않는다. 반대로, 명령이 디코드될 때, 명령은 버퍼(102)를 사용하는 분기동작을 실행하지 않는다.
[2] 서브루틴 콜(bsr) 명령 및 리턴(rts) 명령
버퍼(102)를 사용하는 분기동작이 이들 명령중의 하나에 대해 활성화되는 경우, 명령 프리페치 유닛은 분기명령이 버퍼(102)를 사용하여 분기동작을 이미 완료한 것을 나타내는 태그 정보와 함께 분기명령을 신호선(112)을 거쳐 명령 디코드 유닛(113)으로 전송한다. 태그정보에 따라 버퍼(102)를 거쳐 분기를 실행한 분기명령에 대해서 명령디코더(113)는 상기 명령중의 어느 하나가 디코드된것을 나타내는 디코드정보 및 분기방향신호가 명령 프리페치 유닛으로 송출되는 것을 방지한다.
버퍼(102)의 라이트동작이 초기화되면 제어는 스텝(912)으로 진행하고, 그렇지 않으면 처리는 스텝(901)으로 진행한다.
스텝(912)은 분기방향신호의 대기동작을 실행한다. 신호가 어서트되었는지의 여부는 스텝(913)에서 결정된다. 스텝(912)에서, 명령 어드레스 큐(321)이 액세스되어 분기명령의 어드레스가 신호선(122)로 출력된다. 또한, 제7도의 신호(204) 및 (205)가 발생되어 분기방향신호의 어서트를 대기한다. 신호가 어서트될 때, 제어는 스텝(914)으로 진행한다.
스텝(914)에서 데이타는 버퍼(102)에 등록된다. 제1도의 실시예의 마이크로프로세서에서, 분기지시신호 및 분기목표 어드레스는 동시에 생성된다. 어드레스트는 제1도의 ALU(117)에서 발생되어, 선(118)을 거쳐 버퍼(102)로 전송된다. 버퍼(102)에서 분기지시신호가 어서트될 때, 모든 입력데이타 항목은 프리페치 어드레스(110)에 의해 선택된 데이타 필드(203) 및 어드레스 태그 필드(202)의 엔트리에 동시에 라이트되도록 정렬된다. 이 알고리듬에서, 버퍼(102)의 라이트동작 및 캐시(104)의 리드동작은 스텝(914)에서 동시에 실행된다. 따라서, 데이타가 버퍼(102)에 라이트되는 동안에는 그곳에서 데이타를 리드할 수 없다. 그러나, 버퍼(102)의 리드 및 라이트동작은 버퍼(102)에 2개의 포트를 배치하여 동시에 실행할 수 있다.
버퍼(102)의 라이트동작이 스텝(914)에서 완료될 때, 제어는 스텝(903)으로 리턴된다.
상술한 바와 같이, 본 발명의 실시예에 따르면 분기처리과정에서 무조건 분기 명령을 제4도∼제6도에 도시한 바와 같이 고속으로 다음과 같이 실행할 수 있다.
[1] 분기명령 어드레스 및 분기목표 어드레스를 구비하는 분기이력정보는 이력정보의 검색동작이 프리페치 어드레스에 따라 실행되도록 유지된다. 이것에 의해, 분기를 처리의 초기단계에서 실행할 수 있다.
[2] 버퍼BW(분기이력정보를 유지하기 위한 것) 및 버퍼RB(리턴 어드레스를 유지하기 위한 것)은 동작시 서로 링크된다. 이것에 의해, 리턴명령을 위한 분기처리의 속도가 증가된다.
[3] 분기명령의 종류정보도 버퍼BW에 유지된다. 이것에 의해, 버퍼BW 및 RB 사이의 링크가 가능하게 되고, 각 분기명령에 대한 정확한 제어동작의 실행이 가능하게 된다. 예를 들면, 정보는 제어동작을 실행하기 위해 다음과 같이 사용된다. 무조건 분기(bra) 명령의 처리시에는 명령의 실행이 삭제되고, 서브루틴 콜(bsr) 명령의 처리시에는 그의 실행이 삭제되지 않는다.
이상, 본 발명자에 의해서 이루어진 발명은 상기 실시예에 따라 구체적으로 설명했지만, 본 발명은 상기 실시예에 한정되는 것은 아니고 그 요지를 이탈하지 않는 범위내에서 여러가지로 변경가능한 것은 물론이다.

Claims (5)

  1. 프리페치 어드레스를 발생하는 프리페치 어드레스 발생기,
    상기 프리페치 어드레스에 따라 메모리에서 명령을 프리페치하고 명령을 저장하는 프리페치큐,
    상기 프리페치큐내에 저장된 명령을 디코드하는 명령디코더,
    어드레스 계산에 따라 분기명령의 분기목표 어드레스를 발생하고, 상기 명령 디코더에서의 출력에 의해 제어되는 산술 논리 유닛(ALU),
    각각이 상기 프리페치 어드레스 발생기에서의 분기명령입력의 어드레스, 상기 ALU에서의 상기 분기명령입력의 분기목표 어드레스 및 상기 분기명령의 종류를 나타내는 상기 명령디코더로부터 입력된 정보를 저장하는 여러개의 엔트리를 갖는 제1의 버퍼,
    각각이 서브루틴에서 주처리루틴으로의 리턴을 위해 상기 ALU로부터 입력된 리턴어드레스를 저장하는 여러개의 엔트리를 갖는 제2의 버퍼 및
    상기 프리페치 어드레스와 상기 제1의 버퍼에 저장된 분기명령 어드레스를 비교하는 비교기를 포함하고,
    상기 비교기에 의해 상기 프리페치 어드레스와 상기 프레페치 명령 어드레스 사이의 일치가 검출될 때, 일치를 검출하기 위한 명령이 서브루틴에서 주처리 루틴으로의 리턴을 위한 리턴명령 이외의 분기명령인 것을 상기제1의 버퍼에서 리드된 정보가 나타내면, 상기 분기 목표 어드레스는 상기 제1의 버퍼에서 리드되고,
    상기 비교기에 의해 상기 프리페치 어드레스와 상기 프리페치 명령 어드레스 사이의 일치가 검출될 때, 일치를 검출하기 위한 명령이 서브루틴에서 주처리루틴으로의 리턴을 위한 리턴명령인 것을 상기 제1의 버퍼에서 리드된 정보가 나타내면, 상기 리턴 어드레스는 항상 상기 제2의 버퍼에서 리드되는 것을 특징으로 하는 데이타 프로세서.
  2. 제1항에 있어서,
    상기 메모리는 명령이 외부메모리에서 저장되는 캐시메모리이고, 상기 명령은 상기 프리페치 어드레스에 따라 상기 캐시메모리에서 상기 프리페치큐로 프리페치되는 것인 것을 특징으로 하는 데이타 프로세서.
  3. 제2항에 있어서,
    상기 프리페치큐, 상기 명령디코더, 상기 산술 논리 유닛, 상기 비교기, 상기 제1의 버퍼, 상기 제2의 버퍼 및 상기 캐시메모리는 마이크로프로세서의 반도체칩상에 형성되는 것을 특징으로 하는 데이타 프로세서.
  4. 제3항에 있어서,
    상기 프레페치큐, 상기 명령디코더 및 상기 산술 논리 유닛은 파이프라인 동작을 실행하는 것을 특징으로 하는 데이타 프로세서.
  5. 제4항에 있어서,
    상기 제2의 버퍼는 라스트 인 퍼스트 아웃 버퍼인 것을 특징으로 하는 데이타 프로세서.
KR1019920018637A 1991-10-28 1992-10-10 분기 명령 버퍼를 갖는 데이타 프로세서 KR100259306B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28103091A JP3182438B2 (ja) 1991-10-28 1991-10-28 データプロセッサ
JP91-281030 1991-10-28

Publications (2)

Publication Number Publication Date
KR930008615A KR930008615A (ko) 1993-05-21
KR100259306B1 true KR100259306B1 (ko) 2000-06-15

Family

ID=17633315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019920018637A KR100259306B1 (ko) 1991-10-28 1992-10-10 분기 명령 버퍼를 갖는 데이타 프로세서

Country Status (3)

Country Link
US (1) US5454087A (ko)
JP (1) JP3182438B2 (ko)
KR (1) KR100259306B1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5898864A (en) * 1995-09-25 1999-04-27 International Business Machines Corporation Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5835947A (en) * 1996-05-31 1998-11-10 Sun Microsystems, Inc. Central processing unit and method for improving instruction cache miss latencies using an instruction buffer which conditionally stores additional addresses
KR100496271B1 (ko) * 1997-06-18 2005-09-08 삼성에스디아이 주식회사 보호수지막용조성물및이를이용한음극선관용형광막의제조방법
US20010029582A1 (en) * 1999-05-17 2001-10-11 Goodman Daniel Isaac Method and system for copy protection of data content
JP3513038B2 (ja) 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
JP2002342075A (ja) * 2001-05-11 2002-11-29 Mitsubishi Electric Corp マイクロプロセッサ
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP2006040173A (ja) 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
US7472264B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Predicting a jump target based on a program counter and state information for a process
US8635406B2 (en) * 2012-03-08 2014-01-21 Arm Limited Data processing apparatus and method for providing target address information for branch instructions
US11099849B2 (en) * 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
US11481221B2 (en) * 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
GB2577051B (en) * 2018-09-11 2021-03-03 Advanced Risc Mach Ltd Branch prediction using branch target buffer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4884244A (en) * 1985-01-28 1989-11-28 Data General Corporation Method of addressing a computer memory
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
JPH01240931A (ja) * 1988-03-23 1989-09-26 Hitachi Ltd データ処理装置
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns

Also Published As

Publication number Publication date
JPH05120013A (ja) 1993-05-18
KR930008615A (ko) 1993-05-21
US5454087A (en) 1995-09-26
JP3182438B2 (ja) 2001-07-03

Similar Documents

Publication Publication Date Title
KR100259306B1 (ko) 분기 명령 버퍼를 갖는 데이타 프로세서
EP0391517B1 (en) Method and apparatus for ordering and queueing multiple memory access requests
EP0380846B1 (en) Apparatus for resolving a variable number of potential memory access conflicts in a pipeline computer system and method therefor
EP0380859B1 (en) Method of preprocessing multiple instructions
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5961637A (en) Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5127091A (en) System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US5461722A (en) Parallel processing apparatus suitable for executing in parallel a plurality of instructions including at least two branch instructions
US5509137A (en) Store processing method in a pipelined cache memory
JPS62221036A (ja) 計算装置
JPS6323586B2 (ko)
JPH0557616B2 (ko)
JP2000172507A (ja) 命令フェッチ制御装置
US5416911A (en) Performance enhancement for load multiple register instruction
US20060224870A1 (en) Information processing device
EP2220556A1 (en) A method and a system for accelerating procedure return sequences
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
US5381532A (en) Microprocessor having branch aligner between branch buffer and instruction decoder unit for enhancing initiation of data processing after execution of conditional branch instruction
JP2723238B2 (ja) 情報処理装置
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
US5838961A (en) Method of operation and apparatus for optimizing execution of short instruction branches
US5930489A (en) Microprocessor configured to detect memory operations having data addresses indicative of a boundary between instructions sets

Legal Events

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

Payment date: 20030310

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee