KR940000968B1 - 마이크로프로세서 - Google Patents

마이크로프로세서 Download PDF

Info

Publication number
KR940000968B1
KR940000968B1 KR1019900013376A KR900013376A KR940000968B1 KR 940000968 B1 KR940000968 B1 KR 940000968B1 KR 1019900013376 A KR1019900013376 A KR 1019900013376A KR 900013376 A KR900013376 A KR 900013376A KR 940000968 B1 KR940000968 B1 KR 940000968B1
Authority
KR
South Korea
Prior art keywords
instruction
branch
data
buffer
address
Prior art date
Application number
KR1019900013376A
Other languages
English (en)
Other versions
KR910005155A (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 KR910005155A publication Critical patent/KR910005155A/ko
Application granted granted Critical
Publication of KR940000968B1 publication Critical patent/KR940000968B1/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, 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/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

Landscapes

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

Abstract

내용 없음.

Description

마이크로프로세서
제1도는 본 발명의 실시예를 표시한 블록선도.
제2도는 제1도에 도시된 PFU를 표시한 내부 블록선도.
제3도는 제2도에 도시된 회로 동작을 설명하기 위한 동작선도.
제4도는 본 발명의 또다른 실시예에 따라서 PFU의 부분을 표시한 블록선도.
제5도는 제4도에 나타낸 회로의 동작을 설명하는 동작도.
* 도면의 주요부분에 대한 부호의 설명
110 : 버스 제어 유닛 120 : 명령 프리팻치 유닛
130 : 명령 디코더 유닛 140 : 유효 어드레스 발생기
150 : 메모리 관리 유닛 200 : 프리팻치 제어기
206 : 정렬 제어기
본 발명은 마이크로프로세서에 관한 것으로, 특히 파이프라인 구조의 마이크로프로세서의 명령어 프리팻치 유닛의 개선에 관한 것이다.
명령어 프리팻치 기능 및 파이프라인 처리기능은 마이크로프로세서의 프로그램 실행 효율을 향상시키는데 광범위하게 사용된다. 그러나, 마이크로프로세서가 조건부 브랜치 명령에 직면할때 실행 효율은 종종 현저하게 저하된다. 특히 조건부 브랜치 명령에 의해 지정된 브랜치 조건이 조건부 브랜치 명령전의 어떤 명령어의 실행에 의해 변경될 수 있는 현재의 프로세서 실행 상태와 일치하는지 아닌지에 따라 명령어 스트림을 제어 또는 변경하는데 조건부 브랜치가 사용된다. 그러므로, 브랜치가 택해지거나 아닌가의 사실은 프로세서 실행 상태가 설정되기 전에는 알 수가 없다. 즉 조건부 브랜치 명령이 디코드(즉, 해독)되더라도, 프로세서 실행 상태가 설정될때까지는 조건부 브랜치 명령의 실행은 대기 상태이다. 조건부 브랜치 명령의 실행전에, 이 브랜치 명령에 후속되는 하나이상의 명령어가 명령어 프리팻치 동작에 의해 프리팻치된다. 따라서 프리팻치된 이들 명령은 브랜치가 택해지지 않을때 유효명령으로서 실행된다. 다른 말로 하면, 브랜치가 택해질때는 상기 프리팻치 명령은 무효 명령이 된다. 브랜치 어드레스에서의 명령(이후 "브랜치 타겟 명령"이라함)은 새롭게 팻치되어야만 한다. 이에 따라 파이프 라인 동작은 정지된다.
이 결점을 해결하기 위해, 조건부 브랜치 명령에 후속하는 명령뿐만 아니라 브랜치 타겟 명령도 브랜치가 택하여지거나 혹은 택하여지지 않은 것으로 설정되기 전에 프리팻치되고, 이 명령들중 하나가 선택되어 브랜치가 택하여지거나 택하여지지 않은 사실에 따라서 실행되는 구성이 고안되었다. 이 구성에 따라, 브랜치가 택해질때도 브랜치 타겟 명령은 이미 프리팻치되어 있어 프로그램 실행 효율이 향상된다.
그러나, 다음과 같은 문제가 최근의 고성능 마이크로프로세서에서 일어난다. 이에 대해 자세히 기술하자면, 마이크로프로세서는 일반적으로 워드(word)단위로 처리동작을 수행한다. 그리고 명령어 프리팻치 동작도 워드 단위로 수행된다. 최근의 성능 마이크로프로세서에서는 1개의 워드의 비트 길이가 확장된다. 예를들어, 1개 워드가 32비트로 구성된다고 하면, 명령 데이터는 한번의 프리팻치 동작당 4바이트 단위로 팻치된다. 명령 프리팻치 동작이 4바이트 단위로 실행된다는 사실은 메모리 억세스 어드레스의(최하위 비트를 포함하여)하위 2개 비트의 내용이 무시된다는 것을 의미한다. 즉, 브랜치 타겟 명령에 대한 프리팻치 동작은 브랜치 어드레스의 하위 2비트의 내용을 무시함으로서 실행된다. 다른 한편으로, 브랜치 타겟 명령을 포함하는 각 명령의 바이트 길이는 일정치 않으며 요구되는 데이터 처리 동작 및/또는 오퍼랜드 데이터로의 어드레싱 모드에 무관하에 변동된다. 이러한 이유로, 명령의 선두(leading)바이트는 워드 경계와 항상 일치하는 것은 아니다. 그러므로, 브랜치 타겟 명령의 선두 바이트는 브랜치 타겟 명령에 대한 프리팻치 동작에 의해 실제로 팻치된 4개 바이트중 제1바이트와 종종 상이하다.
명령은 일반적으로, 하나의 연산 코드(이하 "OP-코드"라 칭함)필드, 하나 또는 두개의 오퍼랜드 필드를 포함한다. OP-코드 필드는 명령 디코더 유닛의 OP-코드 필드 디코더에 의해 디코드 된다음 실행 유닛으로 공급된다. 한편, 오퍼랜드 필드는 디코더 유닛의 어드레싱 필드 디코더에 의해 디코드된 다음 오퍼랜드 억세스 유닛으로 공급된다. 그러므로, 브랜치 타겟 명령의 OP-코드 필드 및 오퍼랜드 필드가 명령 디코더 유닛의 대응 디코더에 공급되는지의 여부를 검출하는 것이 요구되는데, 이것은 브랜치 타겟 명령의 선두 바이트가 실제로 팻치된 4개의 바이트중 제1바이트와 항상 일치하는 것은 아니기 때문이다. 결과적으로 브랜치 타겟 명령의 디코딩 개시가 지연된다.
그러므로, 본 발명의 목적은 브랜치 타겟 명령의 디코딩이 브랜치가 취해지는 즉시 개시되는 마이크로프로세서를 제공하는 것이다.
본 발명의 또다른 목적은 개선된 명령 프리팻치 유닛을 구비하는 마이크로프로세서를 제공하는 것이다.
본 발명에 따른 마이크로프로세서는, 조건부 브랜치 명령의 실행이 완료되기 전에 브랜치 타겟 명령에 대한 명령 프리팻치 주기를 개시하고 아울러 다수의 바이트로 이루어진 명령어 데이터를 팻치하는 프리팻치 수단과, 다수의 바이트로 이루어진 팻치 명령 데이터를 일시 기억하는 브랜치 버퍼와, 브랜치 어드레스의 최하위 비트(들)의 정보에 응답하여 브랜치 버퍼로부터 출력될 바이트(들)를 선택하는 수단과, 그리고 브랜치가 취해질때, 선택된 바이트(들)를 명령 디코더에 전송하는 수단을 구비한다.
따라서, 브랜치 어드레스를 활용함으로써, 브랜치 버퍼로부터 출력될 바이트 데이터가 선택되고 만일 상기 브랜치가 취해지면 상기 선택된 바이트 데이터는 명령 디코더로 전달된다. 따라서, 디코더로 전달된 상기 바이트 데이터는 브랜치가 취해진 것으로 설정될때는 이미 선택되어 있으므로, 브랜치 타겟 명령의 디코딩 동작은 즉시 개시된다.
본 발명의 상기 및 기타 목적, 장점 및 특색이 첨부한 도면을 참조하여 다음 설명으로부터 더욱 명백하게 될 것이다.
이제 제1도를 참조하면, 본 발명의 실시예에 따른 마이크로프로세서(100)는 메모리 및 주변 입출력 장치(도시되어 있지 않음)에 결합된 시스템 버스(170)에 버스 사이클(bus cycle)를 시작하여 명령은 팻치하고 데이터를 읽어내고 쓰는 버스 제어 유닛(BCU)(110)을 포함한다. 이와 같이 팻치된 명령들은 버스(1101)를 통해 명령 프리팻치 유닛(PFU)(120)에 공급되어 일시적으로 그곳에 저장된다. PFU(120) 및 BCU(110)은 이들 사이에 있는 제어 버스(1201)를 통해 명령 프리팻치 요구와 이러한 요구에 응답하는 인식 신호 등을 전달한다. PFU(120)로부터의 명령은 버스(1202)를 통해 명령 디코더 유닛(IDU)(130)에 보내진다. IDU(130)는 공급된 명령을 디코드(해독)하고 명령을 실행하기 위한 데이터 처리 정보 및 오퍼랜드 데이터를 억세스하기 위한 오퍼랜드 억세스 정보를 발생한다. 데이터 처리 정보는 버스(1302)를 통해 명령 실행 유닛(EXU)(160)에 공급되고, 오퍼랜드 억세스 정보는 버스(1301)를 통해 유효 어드레스 발생기(EAG)(140)에 공급된다. EAG(140)은 오퍼랜드 억세스 정보(1301)에 응답하여 유효 어드레스를 계산 및 발생시키고 이것을 버스(1401)를 통해 메모리 관리 유닛(MMU)(150)에 공급한다.
MMU(150)는 유효 어드레스를 실어드레스(real address)로 번역하고 난 뒤 버스(1501)를 통해 BCU(110)에 오퍼랜드 억세스를 요구한다. MMU(150)는 또한 IDU(130)에 신호(1502)로서 어드레스 번역 완료를 알린다. EXU(160)은 IDU(130)으로부터의 정보에 응답하여 명령을 실행하며 BCU(110)로부터 또는 BCU에 오퍼랜드 데이터를 수신 또는 공급한다. 조건부 브랜치 명령의 실행에서, 그 명령의 브랜치 조건이 충족되면, 즉 브랜치를 취하도록 설정되면, 브랜치-가능 신호(VTAKEN)(1601)가 활동 레벨(active level)로 변한다. 그 반면에, 브랜치 조건이 충족되지 않으면, 즉 브랜치를 취하지 않도록 설정되면, 브랜치-불능 신호(UTAKEN)(1602)가 활동 레벨로 바뀐다. 이들 신호(1601,1602)는 PFU(120)와 IDU(130)에 공급된다. MMU(150)은 추가로, 브랜치 어드레스에서의 명령, 즉 브랜치 타겟 명령을 억세스하기 위해 조건부 브랜치 명령에 응답하는 브랜치 어드레스를 발생시킬때, 브랜치 어드레스의 하위 2개 비트(최하위 비트를 포함하여)의 정보를 PFU(120)에 공급한다. 상기의 각 유닛은 소정의 파이프라인 방식으로 동작한다.
본 실시예의 마이크로프로세서(100)에서는 한 단어의 32비트 즉 4바이트로 구성된다. 그러므로, 4바이트 길이의 명령어 데이터가 한 명령어 프리팻치 동작에 의해 동시에 팻치되어, 4바이트 길이의 명령어 버스(1101)를 통해 PFU(120)로 전달된다. 한편, 명령어 데이터 및 오퍼랜드 데이터를 저장하는 메모리에서, 한 바이트 데이터에는 하나의 유일한 어드레스가 할당된다. 따라서, 하나의 팻치 동작에 의한 4바이트 길이의 명령어 데이터의 팻칭은 메모리 어드레스의 하위 2비트(LSB 및 LSB+1)의 내용을 무시함으로써 메모리 억세스가 수행된다는 것을 의미한다.
다시, 제2도를 참조하면, PFU(120)는 4개의 포켓(pocket)(INSQ0-INSQ3)을 가진 명령어 큐(queue)(203)를 포함하고 있다. 각각의 명령어 큐 포켓(INSQO-3)은 4바이트 메모리 용량을 갖고 있다. 버스(1101)는 공통으로 제2 내지 제4 큐 패킷(INSQ1-3)에 결합된다. 다른 한편으로, 제1큐 패킷(INSQ0)은 버스(1101)에 결합된 제1입력부 및 브랜치 버퍼(201)에 결합된 제2입력부를 갖고 있는 멀티플렉서(MPX)(204)의 출력부에 결합된다. MPX(204)는 브랜치 검출신호(2021)가 "1"이 될때에는 브랜치 버퍼(201)를 선택하고, 신호(2021)가 "0"이 될때에는 버스(1101)를 선택한다.
상기 검출 신호(2021)는 VTAKEN(1601) 및 UTAKEN(1602) 모두가 비활동 레벨에 있거나, 또는 UTAKEN(1602)이 활동 레벨에 있을 때에는 "0"을 택하고, VTAKEN(1601)이 활동 레벨에 있을 때에는 "1"을 택하도록 브랜치 검출기(202)에 의해 제어된다. 그러므로, MPX(204)는 조건부 브랜치 명령어에 응답하는 브랜치가 취해질 때에만 브랜치 버퍼(201)를 선택한다. 버퍼(201)도 4바이트 메모리 용량이다. 버스(1101)상의 명령어 데이터는 큐 제어기(205)로부터 큐 포인터(queue pointer) 정보(2051)에 의하여 선정된 큐 포켓(INQ0-3)중의 하나에 저장된다. 프리팻치 제어기(200)는 BCU(110)와 제어 정보의 교환으로 PFU(120)의 전체 제어 동작을 행한다. 실제로, BCU(110)가 제어 버스(1201)을 통해서, 조건부 브랜치 명령을 위한 프리팻치 동작에 응답하여 명령어 데이터가 프리팻치되어 버스(1101)에 전달되는 것을 PFU(120)에 알릴때에, 프리팻치 제어기(200)는 프리팻치 명령어 데이터를 브랜치 버퍼(201)에 저장시키도록 신호(2001)를 작동시킨다. 조건부 브랜치 명령외의 프리팻치 동작에 의한 명령어 데이터에 대해서는, 제어기(200)는 신호(2002)를 작동시킨다. 이에 따라 큐 제어기(205)는 큐 포켓(INSQ0 내지 INSQ3)를 그 순서대로 선택하도록 상기 포인터 정보(2051)의 내용을 제어한다.
큐 포켓(INSQ0 내지 INSQ3)에 저장된 명령어 데이터는 16-바이트로된 명령어 데이터로서 구속되어 버스(2031)를 통해 명령어 정렬기(207)에 공급된다. 상기 정렬기(207)는 정렬 제어기(206)로부터의 정렬 포인터 정보(2061)에 응답하여 16바이트 명령어 데이터로부터 1개 이상의 바이트 데이터를 선택하여 출력한다. 특히, 실행되어질 명령어에 의해 요구된 동작이 단일 오퍼랜드 데이터 또는 2개의 오퍼랜드 데이터에 의해 수행한다. 덧붙여, 풍부한 어드레싱 모드가 각각의 오퍼랜드 데이터에 지원된다. 또다른 한편으로, IDU(130)는 EXU(160)에 공급되어질 데이터 처리 정보(1302)를 발생하는 연산코드(OP-코드) 필드 디코더와 EAG(140)에 공급되어질 오퍼랜드 억세스 정보(1301)를 발생하는 오퍼랜드 필드 디코더를 포함한다. 그러므로 실행되어질 명령어의 각각의 필드가 IDU(130)의 대응 디코더에 공급될 것이 요구된다. 상기 목적을 위해, 명령어 정렬기(207)는 상기 포인터 정보(2061)에 응답하여 버스(2031)상의 16-바이트 명령어 데이터의 오퍼랜드 필드 데이터를 버스(2071 및 1201-1)을 통해 IDU(130)의 오퍼랜드 필드 디코더에 공급하고 또한 상기 16-바이트 명령어 데이터의 OP-코드 필드 데이터를 버스(2072 및 1202-2)를 통해 IDU(130)의 OP-코드 필드 디코더에 공급한다. IDU(130)는 어느 바이트(들)가 버스(2031)상의 데이터로부터 선택되는지를 나타내는 정보(1303)를 정렬 제어기(206)에 공급하며, 따라서 정보(2061)의 내용이 제어된다. 또한 정보(1303)가 큐 제어기(205)에 공급되며, 따라서 상기 제어기는 데이터를 IDU(130)에 공급했던 큐 포켓(들)(INSQ)을 검출하며, 따라서, 새로운 명령어 데이터가 상기 검출된 포켓(들)(INSQ)에 저장되어진다.
브랜치 버퍼(branch buffer)(201)내에 저장된 4바이트 길이의 명령어 데이터는 브랜치 정렬기(208)로 가는 버스(2011)에 공급되는데, 이 브랜치 정렬기는 OP-코드 필드 출력 버스(2082)와 오퍼랜드 필드 출력버스(2081)를 갖고 있다. 상기 정렬기(208)는 브랜치 정렬기 제어기(209)로부터의 정렬 정보(2091)에 응답하여 버스(2011)상의 데이터가 버스(2081 및 2082)에 각각 출력되도록 제어한다. 상기 포인터 정보(2091)는 MMU(150)로부터의 정보(1503)에 응답하여 제어기(209)에 의해 발생된다.
PFU(120)는 두개의 멀티플렉서(MPX)(210 및 211)를 또한 구비한다. 검출기(202)로부터의 신호(2021)가 "0"을 취할때, MPX(210 및 211)는 버스(2071 및 2072)를 버스(1202-1 및 1202-2)에 각각 연결시킨다. 다른 한편으로는, "1"의 신호(2021)는 MPX(210 및 211)가 버스(2081 및 2082)를 각각 선택하도록 한다.
그다음, IDU(130)가 조건부 브랜치 명령을 수신한 후의 동작에 대해 제1,2도 및 3도를 참조하여 이하에 설명한다. IDU(130)가 조건부 브랜치 명령을 수신하여 디코드할때, 이 IDU(130)은 브랜치 조건을 나타내는 정보(1302)를 EXU(160)에 공급하고 브랜치 어드레스를 발생시키기 위한 정보(1301)를 EAG(140)에 공급한다. 이때, EXU(160)가 비교적 긴 실행 시간이 요구되는 곱셈 명령 또는 나눗셈 명령과 같은 조건부 브랜치 명령에 선행하는 어떤 명령을 실행하고 있는 사용중의 상태에 있는 경우 브랜치 조건이 충족되었는지 여부를 검출한다. 상기 각 유니트가 파이프라인 방식으로 동작하기 때문에, 조건부 브랜치 명령에 이어지는 하나이상의 명령은 프리팻치되고, 명령 큐(INSQ0)(203)에 일시 저장된다.
한편, MMU(150)는 브랜치 어드레스를 발생하고, 그런후 BCU(110)가 브랜치 타겟 명령을 프리팻치하도록 요구한다. 더욱이, MMU(150)는 PFU(120)의 정렬기 제어기(209)에 브랜치 어드레스의 하위 2비트의 내용을 나타내는 정보(1503)를 공급한다. 브랜치 어드레스가 "XX……X001B"("B"는 2진수 표현을 나타냄)라고 하면, 데이터 "01B"는 정보(1503)로서 제어기(209)에 제공 되어진다. MMU(150)로부터의 요구에 응답하여, BCU(110)는 브랜치 타겟 명령을 팻치하기 N이해 버스 사이클을 개시한다. 그러나 BCU(110)는, 상기에서 논한바 같이, 브랜치 어드레스의 하위 2비트 내용을 무시하면서 상기 명령 팻치 사이클을 수행한다. 결과적으로, 어드레스 "XX…XX000B"에서 "XX…01B"까지에 저장된 4바이트 길이의 명령어 데이터는 제3도에 도시된 바와 같이 팻치되어 있다. 이들 4바이트 명령어 데이터는 버스(1101)을 통해 PFU(120)에 전달된다. 이때, 신호(2001)가 활동 상태로 되어 상기 프리팻치된 상기 4바이트 명령 데이터는 브랜치 버퍼(201)에 저장된다. 따라서, 이 버퍼(201)에 저장된 것은 브랜치 타겟 명령(301)앞에 있는 명령어(300)의 즉시(immeditate) 데이터의 일부(1바이트)와, 브랜치 타겟 명령(301)의 OP-코드 필드(301-1)(2바이트) 및, 브랜치 타겟 명령(301)의 어드레싱 모드 필드(301-2)(1바이트)이다. 브랜치 정렬기 제어기(209)는 "01B"의 정보(1503)를 수신하기 때문에, 그 제어기는 브랜치 버퍼(201)에 저장된 데이터의 제1바이트 데이터가 무효라고, 즉, 제1바이트 데이터가 브랜치 타겟 명령(301)에 속하지 않는다고 판단한다. 그러므로, 제어기(209)는 브랜치 정렬기(208)가 OP-코드 필드(301-1) 및 어드레싱 모드 필드(301-2)를 버스(2082-2 및 2082-1)에 각각 출력하도록 포인터 정보(2091)의 내용을 제어한다. 물론, 정렬기(208)에 의해 버퍼(201)로부터 출력될 데이터의 위치 및 수는 정보(503)의 내용에 따른다.
EXU(160)가 현재 명령의 수행을 완료할 때, 브랜치 조건이 충족되는지의 여부를 검출하기 시작한다. 브랜치 조건이 충족된다고 가정하면, VTAKEN(1601)은 브랜치가 취해져야 한다는 사실을 PFU(120)에 알리기 위해 활동 레벨로 전환된다. 이에 응답하여, 브랜치 검출기(202)는 "1"의 신호(2021)를 출력한다. 이에 따라 MPX(211 및 210)는 브랜치 정렬기(208)의 출력 버스(2082 및 2081)를 IDU(130)에 이르는 버스(1202-2 및 1202-1)에 각각 접속 시킨다. 따라서, 브랜치 타겟 명령(301)의 어드레싱 모드 필드(301-2)와 OP-코드 필드(301-1)는 IDU(130)의 대응 디코더 부분에 공급된다. 이에 따라 타겟 명령에 대한 디코딩 동작이 개시된다. "1"의 신호(2021)에 의해, MPX(204)는 브랜치 버퍼(201)를 선택하고, 큐 제어기(205)에 의해 큐 포켓(INSQ0)은 기억한다. 또한, 큐 제어기(205)는 이미 내부에 저장되어 있는 명령어 데이터를 무효화하기 위해 큐 포켓(INSQ1 내지 INSQ3)을 리셋트한다. 브랜치가 VTAKEN(1601)에 의해 취해지도록 설정되기 때문에, 명령어 프리팻치 동작은 이미 프리팻치된 데이터에 이어지는 명령어 데이터에 대해 실행된다. 결과적으로, 어드레스("XX…X100B" 내지 "XX…X111B")에 저장된 4-바이트 명령어 데이터는 팻치되어 큐 포켓(INSQ1)에 저장된다.
이렇게, 팻치된 명령어 데이터의 제1 및 제2바이트 데이터는 브랜치 타겟 명령(301)의 오퍼랜드 억세스의 변위 데이터(301-3)에 해당하고, 제3 및 제4바이트 데이터는 다음 명령(302)의 OP-코드 필드(302-1)에 해당한다. IDU(130)는 브랜치 타겟 명령(301)의 OP-코드 필드(301-1)와 어드레싱 모드 필드(301-2)를 디코드하고 이 명령(301)이 하나의 오퍼랜드 명령이고 또한 2-바이트 변위 데이터의 변위 모드의 오퍼랜드 어드레싱 모드를 갖고 있다고 판단한다. 그러므로 IDU(130)는 정렬기 제어기(206)가 큐 포켓(INSQ1)의 데이터로부터 제1 및 제2바이트 데이터를 선택할 것을 명령한다. 브랜치가 취해진 후에는 신호(2021)가 "0"으로 변하기 때문에, 브랜치 타겟 명령(301)의 변위 데이터(301-3)는 버스(2071 및 1202-1)을 통해 IDU(130)에 공급된다. 이 결과, IDU(130)는 브랜치 타겟 명령(301)을 실행하기 위해 정보(1301 및 1302)를 발생시키고 그것을 EAG(140) 및 EXU(160)에 공급한다. 그리고 나서, 다음 명령(302)의 OP-코드 필드(302-1)가 버스(2072 및 1202-2)를 통해 IDU(130)에 공급된다. 브랜치 타겟 명령(301)이 제3도에서 5-바이트 길이를 갖는 것으로 되어 있지만 2바이트 또는 3바이트 길이도 가질 수 있다. 그럴경우, 브랜치 타겟 명령에 뒤따르는 명령의 일부분이 브랜치 버퍼(201)안에 저장되고 난 다음 큐 포켓(INSQ0)안에 저장된다. 그런후에 명령의 상기 일부분은 브랜치 타겟 명령에 뒤따르는 명령을 디코딩하는데 사용된다.
한편, 브랜치 조건이 충족되지 않은 것을 EXU(160)가 검출한 경우, EXU는 UTAEKN(1602)을 활동 레벨로 전환시킨다. 이 결과, 이미 큐 포켓(INSQ)안에 저장된 명령 데이터가 IDU(130)에 공급된다. 조건부 브랜치 명령에 다음의 명령이 디코딩 되기 시작한다.
상술한 바와같이, 브랜치 타겟 명령에 속하지 않는 명령어 데이터가 프리팻치되어 유지될지라도 브랜치가 취해질 때 즉시 브랜치 타겟 명령의 디코딩이 개시된다.
1-바이트 길이의 OP-코드를 가진 명령도 있다. 이러한 명령어 브랜치 타겟 신호로 프로그램될 경우, 제2도에 도시된 회로 구성으로는 브랜치 타겟 명령의 오퍼랜드 필드의 일부분이 브랜치 정렬기(208)를 통해 버스(1202-1)로 전달되지 못한다. 이러한 경우에 있어서, 큐 포켓(INSQ0)이 이용되어야 하므로 디코딩 시간이 다소 길어진다. 이러한 프로그램을 해결하기 위한 회로 구성이 본 발명의 또다른 일 실시예로써 제4도에 도시되어 있으며, 여기서 제2도에 도시된 것과 동일한 구성 부분에 대해서는 동일한 참조부호로 표시된다.
이 실시예에서는, OP 코드의 상위 3개 비트가 모두 "1"이라는 사실에 있어서 1바이트 길이의 OP 코드를 가진 명령이 다른 유형의 명령으로부터 구별되는 것이 활용된다. 특히, 상기 버스(1101)에 연결되는 패턴 검출기(400)가 제공된다. 이 검출기(400)는 상기 브랜치 버퍼(201)에 저장된 명령 신호(2001)가 발생될때 동작되며, 각 바이트 데이터의 상위 3비트의 내용을 판단한다. 이들 3비트가 모두 "1"일때, 상기 검출기(400)는 4-비트 구성의 플래그 레지스터(401)의 대용 비트를 "1"로 세트시킨다. 한편, 이 3비트중 적어도 1개 비트는 "0"이며, 상기 레지스터(401)의 해당 비트는 "0"로 리셋트된다. 레지스터(401)의 내용은 플래그 레지스터 정렬기(402)에 공급된다. 이 정렬기(402)는 포인터 정보(2091)에 응답하여 레지스터(401)의 비트 데이터를 출력 데이터(403)로서 출력하며, 이 비트 데이터는 브랜치 정렬기(208)로부터 출력되는 최하위 바이트에 데이터에 해당한다. 브랜치 정렬기(208)는 제4도에 도시한 바와 같이, 제각기 4바이트 데이터를 출력하기 위해 네개의
버스(2085-1 내지 2085-4)를 가진다. 버스(2085-1, 2085-2)는 OP-코드 필드 출력 버스(2082)로 묶여진다. 버스(2085-2, 2085-3)은 멀티플렉서(MPX)(404)에 결합되며, 버스(2085-3, 2085-4)는 멀티플렉서(MPX)(405)에 결합된다. MPX(404, 405)의 출력은 오퍼랜드 필드 출력 버스로 묶여진다. MPX(404, 405)는 데이터(403)가 "1"일 때 각각 버스(2085-2, 2085-3)을 선택하고, 데이터(403)가 "0"일 때 버스(2085-3, 2085-4)를 선택한다.
브랜치 타겟 명령(501)의 제5도에 도시한 바와 같이, 1-바이트 길이의 OP 코드 필드(501-1)를 가지고 그 어드레스가 "XX……XX01B"이라고 가정하면, 브랜치 버퍼(201)는 상술한 바와같이 명령어(501)앞의 명령어의 일부와 명령어(501)의 3개 필드(501-1 내지 501-3)를 저장한다. 이때, 플래그 레지스터(401)의 데이터는 "XX1X"로서, 여기서 적어도 제2비트(401-2)가 패턴 검출기(400)에 의해 "1"로 세트된다. VTAKEN(1601)의 활동 레벨에 의해 브랜치가 취해질 때는 브랜치 타겟 명령어(501)의 필드(501-1, 501-2, 501-3)는 브랜치 정렬기(208)의 버스(2085-1, 2085-2, 2085-3)상에 각각 나타나며, 제2플래그 비트(401-2)의 데이터 "1"은 데이터(403)으로서 정렬기(402)의 출력에 나타난다. 따라서, 필드(501-1, 501-2)는 MPX(404)를 통해 버스(2082)상에 출력되며, 필드(501-2, 501-3)는 MPX(405)를 통해 버스(2081)상에 출력된다. 따라서, 인덱스 필드(501)와 어드레싱 모드 필드(501-3)는 브랜치 타겟 명령어(501)의 오퍼랜드 필드로서 IDU(130)의 OP 코드 필드 디코더부에 공급된 필드 데이터(501-2)는 무의미 데이터로 처리된다.
본 발명은 상기 실시예에 한정되지 않고, 본 발명의 사상과 영역에서 벗어남이 없이 수정 및 변경이 가해질 수 있다. 예를들어, 브랜치 버퍼는 8-바이트 혹은 16-바이트와 같은 큰 메모리 용량을 가질 수 있다. 1개 워드가 16-비트로 구성될 때, 브랜치 어드레스의 최하위 비트는 정보로서 사용된다.

Claims (6)

  1. 조건부 브랜치 명령의 브랜치 조건이 설정되기전에 다수의 바이트로 구성된 명령어 데이터를 프리팻치하기 위해 브랜치 어드레스에서의 명령에 대해 명령 프리팻치 동작을 실행하는 실행 수단과 ; 상기 실행 수단에 접속되어 상기 명령어 데이터를 일시 저장하는 버퍼 수단과 ; 상기 버퍼 수단에 접속되어 상기 브랜치 어드레스의 하위 비트 데이터에 응답하여 상기 버퍼 수단에 저장된 상기 명령어 데이터의 상기 다수의 바이트중 일부를 선택하여 출력시키는 수단 및 ; 상기 선택 출력 수단에 접속되어 상기 명령어 데이터의 상기 다수의 바이트중 상기 일부를 브랜치가 취해질때에 명령어 디코더에 전달하는 수단으로 구성된 마이크로프로세서.
  2. 조건부 브랜치 명령을 프리팻치한 후 프리팻치되는 적어도 하나의 명령어를 일시 저장시키는 제1저장수단과 ; 상기 조건부 브랜치 명령의 브랜치 조건이 설정되기전에 프리팻치되는 브랜치 어드레스에서의 명령어를 일시 저장시키는 제2저장 수단과 ; 상기 제1저장 수단에 접속되어 상기 제1저장 수단에 저장된 명령어의 오퍼랜드 필드와 동작 코드 필드를 정렬시키는 제1정렬기와 ; 상기 제2저장 수단에 접속되어 상기 제2저장 수단에 저장된 명령어의 오퍼랜드 필드와 동작 코드 필드를 정렬시키는 제2정렬기 및 ; 상기 제1 및 제2정렬기에 접속되어 브랜치가 취해지지 않을 때는 상기 제1정렬기의 출력을 명령어 디코더에 전달하며, 상기 브랜치가 취해질 때는 상기 제2정렬기의 출력을 상기 명령어 디코더에 전달하는 선택 수단으로 구성된 마이크로프로세서.
  3. 제2항에 있어서, 상기 브랜치가 취해질 때 상기 제2저장 수단으로 부터의 명령어를 상기 제1저장수단에 기록하는 수단을 더 포함하는 마이크로프로세서.
  4. 조건부 브랜치 명령으로부터 도출된 브랜치 어드레스에 응답하여 상기 브랜치 어드레스에서의 브랜치 타겟 명령에 대한 명령어 팻치 동작을 실행하여 상기 브랜치 타겟 명령에 속하는 제1데이타와 상기 브랜치 타겟 명령에 속하지 않는 제2데이타를 포함하는 명령어 데이터를 팻치하는 버스 제어 유닛과 ; 상기 버스 제어 유닛에 접속되어 상기 버스 제어 유닛에 의해 팻치된 상기 명령어 데이터를 일시 저장하는 브랜치 버퍼와 ; 상기 브랜치 버퍼에 접속되어 상기 명령어 데이터의 제2데이타를 마스킹하면서 상기 명령어 데이터의 제1데이타를 출력시키는 브랜치 정렬기와 ; 명령어 코드를 수신 및 디코딩하는 명령어 디코더 및 ; 상기 브랜치 정렬기와 상기 명령어 디코더 사이에 접속되어 상기 조건부 브랜치 명령에 의해 요구된 브랜치가 취해질 때 상기 명령어 디코더에 상기 브랜치 정렬기로부터 출력된 상기 제1데이타를 상기 명령어 코드로서 공급하는 공급 수단으로 구성된 마이크로프로세서.
  5. 제4항에 있어서, 상기 브랜치 정렬기가 상기 브랜치 어드레스중 일부를 수신하여 상기 브랜치 어드레스중 상기 일부에 응답하여 상기 제2데이타를 마스킹하면서 상기 제1데이타를 출력시키는 것을 특징으로 하는 마이크로프로세서.
  6. 제5항에 있어서, 상기 버스 제어 유닛이 상기 조건부 브랜치 명령에 뒤이은 명령어를 팻치하고, 상기 마이크로프로세서가, 상기 버스 제어 유닛에 접속되어 상기 조건부 브랜치 명령에 뒤이은 상기 명령어를 일시 저장하는 명령어 버퍼를 더 포함하고, 상기 공급 수단이, 상기 제1데이타와 상기 명령어 버퍼에 저장된 상기 명령어를 수신하여 상기 브랜치가 취하여질 때는 상기 제1데이타를 상기 브랜치가 취하여지지 않을 때는 상기 명령어 버퍼에 저장된 상기 명령어를 상기 명령어 디코더에 공급하는 선택기를 포함하는 것을 특징으로 하는 마이크로프로세서.
KR1019900013376A 1989-08-28 1990-08-28 마이크로프로세서 KR940000968B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP1-222058 1989-08-28
JP22205889 1989-08-28
JP222058 1989-08-28

Publications (2)

Publication Number Publication Date
KR910005155A KR910005155A (ko) 1991-03-30
KR940000968B1 true KR940000968B1 (ko) 1994-02-07

Family

ID=16776444

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900013376A KR940000968B1 (ko) 1989-08-28 1990-08-28 마이크로프로세서

Country Status (5)

Country Link
US (1) US5381532A (ko)
EP (1) EP0471888B1 (ko)
JP (1) JP2682217B2 (ko)
KR (1) KR940000968B1 (ko)
DE (1) DE69032897T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100325177B1 (ko) * 1991-07-08 2002-02-21 고성능 알아이에스씨 마이크로프로세서 구조

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2536726B2 (ja) * 1993-07-07 1996-09-18 日本電気株式会社 マイクロプロセッサ
US5673427A (en) * 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
US5590358A (en) * 1994-09-16 1996-12-31 Philips Electronics North America Corporation Processor with word-aligned branch target in a byte-oriented instruction set
US5732235A (en) * 1996-01-25 1998-03-24 International Business Machines Corporation Method and system for minimizing the number of cycles required to execute semantic routines
US5898888A (en) * 1996-12-13 1999-04-27 International Business Machines Corporation Method and system for translating peripheral component interconnect (PCI) peer-to-peer access across multiple PCI host bridges within a computer system
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6598154B1 (en) * 1998-12-29 2003-07-22 Intel Corporation Precoding branch instructions to reduce branch-penalty in pipelined processors
EP1050811A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Branching in a computer system
US7647486B2 (en) 2006-05-02 2010-01-12 Atmel Corporation Method and system having instructions with different execution times in different modes, including a selected execution time different from default execution times in a first mode and a random execution time in a second mode

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5282149A (en) * 1975-12-29 1977-07-09 Fujitsu Ltd Instruction address control system
JPS55118170A (en) * 1979-03-06 1980-09-10 Mitsubishi Electric Corp Memory access device
CA1174370A (en) * 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
JPS5729152A (en) * 1980-07-28 1982-02-17 Fujitsu Ltd Information processor prefetching instruction
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
CA1233270A (en) * 1985-03-18 1988-02-23 Vojin G. Oklobdzija Register selection mechanism and organization of an instruction prefetch buffer
JPS61262849A (ja) * 1985-05-17 1986-11-20 Hitachi Ltd 情報処理装置
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
DE3785897T2 (de) * 1986-02-28 1993-09-30 Nec Corp Steuervorrichtung zum vorabruf von befehlen.
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4893234A (en) * 1987-01-15 1990-01-09 United States Department Of Energy Multi-processor including data flow accelerator module
JPS6473423A (en) * 1987-09-14 1989-03-17 Matsushita Electric Ind Co Ltd Instruction look-ahead controller
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100325177B1 (ko) * 1991-07-08 2002-02-21 고성능 알아이에스씨 마이크로프로세서 구조
KR100325176B1 (ko) * 1991-07-08 2002-02-25 고성능 알아이에스씨 마이크로프로세서 구조
KR100325175B1 (ko) * 1991-07-08 2002-02-25 고성능 알아이에스씨 마이크로프로세서 구조

Also Published As

Publication number Publication date
DE69032897D1 (de) 1999-02-25
EP0471888A2 (en) 1992-02-26
KR910005155A (ko) 1991-03-30
US5381532A (en) 1995-01-10
EP0471888A3 (en) 1992-03-11
DE69032897T2 (de) 1999-08-26
JPH03156534A (ja) 1991-07-04
EP0471888B1 (en) 1999-01-13
JP2682217B2 (ja) 1997-11-26

Similar Documents

Publication Publication Date Title
KR940003383B1 (ko) 파이프라인 처리 방식으로 동작하는 프리디코더 유니트 및 주 디코더 유니트를 구비한 마이크로프로세서
US5737590A (en) Branch prediction system using limited branch target buffer updates
US4847753A (en) Pipelined computer
US5926646A (en) Context-dependent memory-mapped registers for transparent expansion of a register file
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US5293592A (en) Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
US6012125A (en) Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
US4775927A (en) Processor including fetch operation for branch instruction with control tag
US5394558A (en) Data processor having an execution unit controlled by an instruction decoder and a microprogram ROM
US6088781A (en) Stride instruction for fetching data separated by a stride amount
EP0380859A2 (en) Source list, pointer queues and result queues
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
CN111213131B (zh) 高速缓存器中的零时延预提取
EP3695318B1 (en) Servicing cpu demand requests with inflight prefetches
US4500959A (en) Apparatus for invalidating the content of an instruction buffer by program store compare check
KR940000968B1 (ko) 마이크로프로세서
US5634119A (en) Computer processing unit employing a separate millicode branch history table
JP2010501913A (ja) 可変長命令セット内の分岐命令の最後の粒度(granularity)と関連付けられたキャッシュ分岐情報
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US5740418A (en) Pipelined processor carrying out branch prediction by BTB
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US5404471A (en) Method and apparatus for switching address generation modes in CPU having plural address generation modes
US20050108508A1 (en) Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US5243705A (en) System for rapid return of exceptional processing during sequence operation instruction execution

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
FPAY Annual fee payment

Payment date: 20020130

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee