KR0175116B1 - 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인 - Google Patents

명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인 Download PDF

Info

Publication number
KR0175116B1
KR0175116B1 KR1019950703431A KR19950703431A KR0175116B1 KR 0175116 B1 KR0175116 B1 KR 0175116B1 KR 1019950703431 A KR1019950703431 A KR 1019950703431A KR 19950703431 A KR19950703431 A KR 19950703431A KR 0175116 B1 KR0175116 B1 KR 0175116B1
Authority
KR
South Korea
Prior art keywords
instruction
instructions
pipeline
integer
command
Prior art date
Application number
KR1019950703431A
Other languages
English (en)
Other versions
KR960701399A (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 KR960701399A publication Critical patent/KR960701399A/ko
Application granted granted Critical
Publication of KR0175116B1 publication Critical patent/KR0175116B1/ko

Links

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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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

다수실행기능을 구비하는 슈퍼스칼라마이크로프로세서에 있어서 고속으로 고효율의 파이프라인을 구비한 장치 및 방법을 제공한다. 파이프라인은 이용 가능한 공급원의 파이프라인내에서 디스페치되는 명령에 신속하게 적응한다. 파이프라인중에 발생하는 예외사태는 모두 동일의 파이프라인스테지에 있어서 동일의 방법으로 효율좋게 처리된다.
페치 처리한 명령데코드단계로 진행하기 전에 페치 처리한 명령의 제1의 영역 및 제2의 영역을 부가함으로써 보다 페치 처리한 명령을 프레데코드 처리하는 단계로부터 되고, 제1영역이 페치 처리한 명령으로부터 추출한 공급원정보를 함유하고 있고, 또 제2영역이 페치 처리한 명령에 의해서 사용되는 공급원의 종류를 인식하는 공급원류별화영역을 함유하고 있고, 또한 페치 처리한 명령을 명령데코드단계에 진행시켜서 데코드처리한 명령을 생성한 후에 명령을 인출처리하는 단계로부터 되고, 디스페치 처리단계가 상기 제1영역 및 제2영역을 사용해서 데코드처리한 명령을 처리하기 위한 기능유니트에 이끈다.

Description

[발명의 명칭]
명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인
[발명의 상세한 설명]
[기술분야]
본 발명은 일반적으로 파이프라인화한 슈퍼스칼라마이크로프로세서에 관한 것이다. 특히 본 발명은 정상 처리중 및 예외처리 후의 파이프라인화 슈퍼스칼라마이크로프로세서에 있어서의 명령디스페치처리에 관한 것이다.
[배경기술]
마이크로프로세서는 어드레스처리, 실행 및 제어 동작용의 한정된 온칩공급원을 구비하고 있다. 즉 마이크로프로세서(경제성 및 실행속도의 양면에 있어서)에 소요되는 비용과 공급원외 양의 사이에는 일정의 트레이드오프가 존재한다. 또, 마이크로프로세서의 설계자가 특정의 공급원의 조합을 설계한 경우에 이들의 공급원은 최고의 성능을 발휘하도록 최대 고율로 사용할 수 있도록 고려된다.
예를들면 스칼라프로세서의 경우 뜻이 있는 공급원의 제한예로서는 메모리로부터 꺼내어 ALU에 보내기 위한 칩위의 유효성을 들 수 있다. 이 ALU는 데이타에 준해서 동작해서 출력을 공급하고 그 후에 메모리로부터 다른 오퍼랜드가 보내지면 다른 연산을 실행하도록 대응한다.
ALU는 임계요소(크리티칼요소)이기 때문에 휴지상태에 놓이지 않는 것이 용이하게 인식된다. 또 성능을 향상시키기 위해서 ALU의 앞에 파이프라인 상의 구조가 가해지고 있다. 즉 파이프라인 구조에 의해서 ALU는 오퍼랜드를 가능한한 고속으로 처리할 수 있도록 하고, 오페란드에 대한 기대가 불요하게 되기때문에 성능이 향상되는 것이다.
그러나 파이프라인에 부정데이타가 함유되어 있는 상태에 있어서는 여러가지의 문제가 발생한다. 이러한 상태의 1예는 상태분기에서 생긴다. 즉 파이프라인은 분기 상태에서 가능성 있는 하나에만 대응하는 데이타를 함유하는 것이 가능하나, 때로는 데이타가 부정한 경우가 있다. 여기서 예외 또는 트레프란 용어가 당시스템에 의해서 실행되는 예외적 처리의 요구를 인식하기 위해서 사용하게 되었다.
또한 이와같은 예외적 사태에 대처하기 위한 여러가지 대책이 개발되고, 새로운 대책에 새로운 문제가 수반되는 반복이 현재도 계속되고 있다. 그러나 이러한 계속해서 행해지는 새롭게 개량된 시스템의 개발중에서 성능을 최대로 발휘시키는 것은 본래의 목적이다.
슈퍼스칼라마이크로프로세서도 또 동종의 문제를 안고 있고 이들의 문제는 더 규모가 크고 복잡한 문제를 야기한다. 슈퍼스칼라마이크로프로세서는 다기능 유니트를 구비하고 있고, 동 유니트는 명령을 실행할 뿐만 아니라 다른 기능유니트로써 다른 동작을 실행하는 것이 가능하다. 예를들면 스칼라프로세서가 1파이프라인 스테이지 당 1개의 명령을 갖는 파이프라인을 구비하고 있는 경우에 슈퍼스칼라마이크로프로세서는 1스테이지 당 다수개의 명령을 가질 수 있는 파이프라인을 구비하게 된다.
슈퍼컴퓨터는 때때로 이와같은 슈퍼스칼라구조를 채용하고 이 경우에도 성능과 비용의 균형이 중요한 문제가 된다. 또 마이크로프로세서에 구비되는 공급원으로부터 최대의 계산능력을 꺼내는 것이 아주 중요하다. 또 최고성능을 꺼내는데 있어서의 요점에는 예외사태를 신속하게 처리할 수 있는 고속이며 고효율의 파이프라인이 포함된다. 이 경우에 기능유니트를 가능한한 신속하게 대응시키기 위한 루팅명령은 비지상태에 있는 공급원의 고속해석을 필요로 한다.
[발명의 개시]
본 발명은 다수의 실행능력을 갖는 슈퍼스칼라마이크로프로세서에 고속 또한 고효율의 파이프라인을 구비하기 위한 장치 및 방법을 제공한다. 본 발명의 파이프라인은 이용가능한 공급원의 파이프라인 내에서 디스페치되는 명령에 신속하게 적응한다. 또 당파이프라인 중에 발생되는 예외상태는 모두 파이프라인 스테이지에 있어서 동일한 방법으로 효과적으로 처리된다.
본 발명의 일태양에 의하면 5단계의 슈퍼스칼라 정수파이프라인이 구비되고, 파이프라인은 데이타를 페치하고 디코드하고 어드레스처리하고, 실행하고, 또 레지스터파일에 기입한다. 이 경우에 프리디코더가 페치단계에 있어서 명령을 전처리해서 공급원 경합의 결정을 행하고 특이적인 분류코드를 함유한 코드를 각 명령에 부가해서 명령의 디스페치처리(배송처리)를 개선한다.
디코드단계에 있어서는 공급원의 스코어보도 및 다른 공급원 관련상태에 따라서 정수명령이 프로그램 시퀀스의 순으로 기능유니트에 보내진다. 또 어드레스처리 및 실행단계에 있어서는 부동소수점 명령이 재 포메트화되어서 주어지는 공급원 코드순내로 순환되고 4개의 명령이 동시에 기입단계에 있어서 부동소수점유니트에 대응한 파스트인·파스트아웃(FIFO)큐내에 순환된다.
본 발명의 다른 태양에 의하면 명령실행에러, 다종의 캐시히로미스 및 분기예측에러 등의 경우의 예외처리의 모두가 상기 실행단계에 결정된다.
즉, 슈퍼스칼라파이프라인에 있어서는 명령우선성 비트에 의해서 예외인자 보다 높은 우선성을 갖는 명령이 확실하게 실행되도록 하는 것이 가능한 한편 예외적 명령 및 낮은 우선 명령과 이들의 효과가 상쇠된다.
덧붙여 도면 및 청구범위를 함유한 본 명세서의 잔여부분에 의해서 본 발명의 다른 특징 및 이점이 이해된다.
[도면의 간단한 설명]
제1도는 정수 유니트(12)와 부동소수점 유니트(14)를 갖는 슈퍼스칼라마이크로프로세서 유니트(SMU)(10)의 블록도이다.
제2도는 SMU10에 있어서의 기능적 명령프로우 경로(파이프라인)의 1식을 나타낸 블록도이다.
제3도는 SMU10의 파이프라인 구조에 있어서의 5단계 정수파이프라인부(250)을 나타내는 동시에 각각의 단계에 있어서 실행되는 기능을 설명하기 위한 블록도이다.
제4도는 정수파이프라인(250)에서의 SMU10의 파이프라인 구조에 있어서의 부동소수점파이프라인(300)의 반결합을 나타낸 블록도이다.
제5도는 정수파이프라인(250), 외부캐슈파이프라인(302) 및 부동소수점 파이프라인(300)을 함유한 조합파이프라인(350)을 나타낸 프로유차트이다.
제6도는 제2도에 나타낸 디스페치유니트(202)의 상세한 블록도이다.
제7도는 프레디코드처리 후의 재포메트화명령(450)의 경우의 텐프레이트를 나타낸 도이다.
제8도는 제6도에 나타낸 정수디스페치유니트(402)를 거친 데이타 패스플로우의 블럭도이다.
제9도는 공급원경합을 설정하고 또한 결정하기 위한 레지스터 스코어보드(480)의 사용방법을 설명하기 위한 개략로이다.
제10도는 바람직한 실시예에 준한 페치 및 디스페치시스템(500)의 간단화된 블록도이다.
제11도는 제10도에 나타낸 명령큐의 동작을 4사이클에 걸쳐서 나타낸 도면이다.
제12도는 재포메트화 부동소수점동작명령(550)의 경우의 텐플레이트와 재포메트처리 후의 재포메트화 부동소수점메모리동작(552)의 경우의 텐플레이트를 나타낸 도면이다.
제13도는 부동소수점로드(공급)동작을 실행하기 위한 SMU10에 있어서의 디스페치처리를 나타낸 개략도이다.
제14도는 부동소수점스토어(기억)동작을 실행하기 위한 SMU10에 있어서의 디스페이 처리를 나타낸 개략도이다.
[발명을 실시하기 위한 최량의 형태]
이하 본 발명을 도면에 의해서 이하의 내용순으로 설명하겠다.
내용:
I. 서설
II. 파이프라인 구조
III. 디스페치 처리
IV. 파이프라인의 제충전 및 예외처리
V. 결론
I. 서설
제1도는 정수유니트(12)와 부동소수점 유니트(14)를 구비하는 슈퍼스칼라마이크로프로세서유니트(10)의 블록도이다. 이 바람직한 실시예에 있어서는 정수유니트(12)와 부동소수점 유니트(14)가 공동적으로 상호작용해서 단일의 마이크로프로세서를 구성하고 있으나 이들의 기능을 2종의 분리된 집적회로장치사이에서 물리적으로 분할되어 있다. 마이크로프로세서유니트(10)은 태그메모리유니트(18)을 거쳐서 억세스되는 글로발외부카슈(GS)(16)을 구비하고 있다. 즉 외부캐시(16)은 정수유니트(12)와 부동소수점유니트(14)의 양쪽에 대해서 이용되는 점에서 글로발이다.
정수 유니트(12)는 다수의 기능유니트를 구비하고 있다. 이들의 기능유니트는 정수레지스터파일(52)에 연결되는 정수처리 실행유니트(50)을 구비하고 있다. 또 실행유니트(50)은 2개의 정수연산로직유니트(IALUs)와 쉬프터와 승산-가산유니트를 구비하고 있다. 이 실행유니트(50)은 레지스터파일(52)로부터 수취한 데이타에 준해서 동작하여 결과를 재기입한다.
정수 유니트(12)는 온보드데이타캐시(DS)(54)에서 정수데이타를 레지스터파일(52)에 로드하고, 또 데이타를 레지스터파일(52)에서 DS54에 또, 부동소수점 유니트(14)를 거쳐서 외부캐시메모리에 스토어시킨다. 또 어드레스제네레이터(56)은 DS54에 기상어드레스를 공급하고, 레지스터파일(52)로부터의 데이타를 사용해서 어드레스를 발생한다.
이 DS54 내에 기억된 데이타는 전유효메모리 1부를 나타낼 뿐이고, 정수유니트(12)에 의해서 필요로 되는 데이타가 DS54에 있어서 무효인 경우도 있다. 이와 같은 경우는 정수유니트12가 외부캐쉬 16에 억세스하여 소망하는 데이타를 DS54에 공급한다. 또 외부캐쉬 16을 억세스하기 위해서 정수유니트 12는 어드레스제네레이터 56에서 공급되는 가상어드레스를 트랜스레이션룩어사이드버퍼(TLB) 58을 사용해서 물리어드레스로 변환한다. 그리고 TLB58은 외부캐시 16과 태그메모리유니트 18의 쌍방에 물리어드레스를 공급한다. 그 후에 외부캐시 16은 DS54를 소망데이타로 충전한다.
정수유니트 12는 데이타 프로우와 동작을 제어하기 위해서 명령을 사용한다. 그러므로 정수유니트 12는 명령캐시(IS)70, 분기예측캐시(BS)72, 명령버퍼 74, 디스페치유니트 50 및 부동소수점명령큐(FPQ) 82를 구비하고 있고, 명령의 수집 및 적당한 공급원에의 공급을 슈퍼스칼라프로세서유니트 10 중에서 적당한 순서로 행한다.
IS70은 명령을 기억해서 공급한다. 일부의 명령은 분기명령이고, 프로그램프로우에 있어서의 불연속점을 생성한다. BS72는 IS70과 연결되어 있고 IS70에 있어서의 각 분기명령에 대응하는 분기 타게트에 대한 포인터를 기억한다. 명령버퍼 74도 또 IS70의 출력과 연결되어 있고, IS70에서 의 명령을 소망순으로 로드한다.
디스페치유니트 80은 명령버퍼 74로부터의 명령을 독취하고 이들을 책크하고, 필요로 하는 하드웨어 공급원이 유효한지를 검증하고, 또한 마이크로프로세서유니트 10에 있어서의 적당한 기능유니트에 명령을 공급한다. 이 디스페치유니트 80은 부동소수점유니트 14에 보내질 예정의 명령을 부동소수점 큐 82에 향한다. 또 디스페치유니트 80은 실행유니트 50에 대해서 정수동작명령을 또 어드레스제네레이터 56에 대해서 메모리명령을 부여한다.
또 부동소수점유니트 14는 부동소수점실행유니트(FPXU)100, 부동소수점레지스터파일(FREG)102, 부동소수점 로드큐(LDQ) 104 및 기억큐 106을 구비하고 있다.
FPXU 100은 FREG 102에서 독취된 데이타에 준해서 동작하는 2개의 부동소수점실행유니트를 구비하고 있어 처리결과를 FREG102에 되기입한다.
이 FPU 14는 어드레스제어구조를 하등 함유하지 않기 때문에 정수유니트 12가 외부캐쉬 16에서 필요한 데이타를 억세스해서 이들을 LDQ104에 로드한다. 그 후에 FPU14에 대한 로드명령이 LDQ104로부터의 적당한 데이타를 독취해서 이것을 FREG 102에 기입한다. 마찬가지로 FREG 102에서 외부캐쉬 16에 대해서 기억정보가 STQ 106을 거쳐서 보내진다. 이경우에 FPU 14에 있어서의 기억명령이 데이타를 STQ 106에 이송하도록 작용한다. 이에 의해서 정수유니트 12는 데이타의 외부캐쉬 16에의 기억을 제어한다.
이와같은 SMU 10의 슈퍼스칼라특성은 상술한 실행가능의 복잡성에 기여한다. 그러나 공동동작을 위해서 유효한 다수의 실행유니트와 어드레스발생유니트가 존재하기 때문에 바람직한 실시예에 있어서는 SMU10에 다경로파이프라인구조가 구비된다.
예를 들면 명령버퍼 74는 1사이클 당 4개의 명령을 IS70에서 꺼낸다. 따라서 디스페치유니트 80은 각 사이클에 있어서 2개까지의 메모리 명령을 어드레스 발생유니트 56에 보내고, 또 2개까지의 정수동작 명령을 실행유니트 50에 보내고, 또 4개까지의 부동소수점명령을 FPQ82에 보낸다. 더 바람직한 실시예에서는 그 파이프라인이 연속동작모드로 사용된다.
환언하면 파이프라인은 정지되는 일이 없고 파이프라인 중의 하나의 단계에서 다른 단계로 명령을 연속적으로 진행시킨다. 또 디스페치처리, 파이프라인의 제어 및 재충전의 상세에 대해서 후술하겠다.
II. 파이프라인 구조
제2도는 SMU10에 있어서의 기능명령프로우경로(파이프라인)의 1식을 나타낸 블록도이다. 제2도에 있어서 제1도와 동일참조번호로 나타내는 부분은 동일성분을 나타낸다. 즉 SMU10을 사용하는 시스템의 초기화 후에 정수유니트 12는 외부캐쉬 16에서 1조의 적당한 명령을 데이타버스 200을 거쳐서 IS70에 로드한다. 이들의 명령은 각각 32비트폭이다. 또 정수유니트 12는 IS70에 대해서 한번에 4개의 명령을 로드하기 때문에 데이타 버스 200은 12.8비트폭이다.
디스페치유니트 202는 일정한 프레디코드기능, 명령버퍼 74, 디스페치유니트 80, 일정한 부동소수점 포메트화기능, 또 FPQ82를 구비하고 있고, 이것은 모두 제1도에 나타냈다. 그러므로 디스페치유니트 202는 데이타버스 204를 거쳐서 한번에 4개의 명령을 받아들이고, 각 명령에 18비트를 부가해서 루틴처리를 용이하게 하고, 이들의 명령을 정열화하고, 또한 1사이클 당 0에서 4개의 명령에 순서를 둔다. 이 경우에 초과비트의 부가처리는 프레디코드동작의 일부로 된다.
이와 같은 명령의 디스페치 동작에 있어서는 항상 명령이 차례로 발송된다. 즉, 상기 디스페치유니트 202가 어떤 이유(이들의 이유는 후에 상술한다)로 어떤 특정한 명령도 발송하는 것이 불가능하게 된 경우에는 명령의 흐름 중에 있는 그 후의 명령은 그 이전의 모든 명령이 발송될 때까지 발송불능하게 된다.
그러므로 디스페치유니트 202는 다수의 파이프라인을 구비해서 명령을 보낼 수 있도록 구성되어 있다. 이들의 파이프라인에는 메모리파이프라인 210, 정수 파이프라인 212 및 부동소수점 파이프라인 214가 포함된다. 메모리파이프라인 210 및 정수 파이프라인 212는 각각 2개의 독립한 파이프라인을 구비하고 있으나 부동소수점 파이프라인 214는 4개의 명령폭을 갖고있고, 2개의 부동소점 동작과 2개의 부동소수점 메모리동작에 대응하는 폭을 구비하고 있다.
이것에 의해서 디스페치유니트 202는 메모리 명령을 메모리파이프라인 210을 거쳐서 어드레스제네레이터 56에 보내고, 정수동작명령을 실행유니트 50에 보내고, 또 부동소수점 명령을 FPU 14에 보낸다. 이 경우에 디스페치유니트 202는 어드레스발생을 위한 메모리파이프라인 210과 부동소수점 파이프라인 214의 양쪽에 일부의 부동메모리명령을 보내는 것이다. 또 디스페치유니트 202는 부동소수점 비교 및 조건부 이동 등의 일부의 부동소수점 명령을 실행동작을 위한 정수 파이프라인 212와 부동소수점 파이프라인 214의 양쪽에 보낸다.
제1도에 의해서 설명한 성분에 더하여 제2도에서는 DS54의 출력을 인출 202에 연결하는 정수기억 파이프라인 220과 태그메모리유니트 18과 외부캐쉬 16과의 사이에 연결된 어드레스큐 224가 포함되어 있다. 정수기억 파이프라인 222는 정수유니트 12가 DS54에의 기억동작 후에 외부캐쉬 16을 경신하는 것이 가능하다. 이에 의해서 정수유니트 12는 정수기억 명령과 이에 부수되는 데이타를 디스페치유니트 202내에서 대체로 페키지화한다. 또 페키지화 후에 정수유니트 12는 명령과 데이타를 부동소수점 파이프라인 214에 보내서 FPU14에 외부캐쉬 16에 대한 데이타를 기억시킨다.
STQ106으로부터의 데이타를 기억하기 위한 적당한 어드레스가 어드레스큐 224를 거쳐서 정수유니트 12에서 주어진다. 이 경우에 FPU14에 보내지는 명령을 LPQ 104 및 어드레스큐 224에 있어서의 적당한 데이타와 합치시키는 것은 디스페치유니트 202의 기능의 일부이다.
제3도는 SMU10의 파이프라인 구조인 5단계정수 파이프라인 250의 부분을 나타내고 있고, 동시에 개개의 단계에서 실행되는 기능을 설명하고 있다. 이 정수파이프라인 250의 이점에는 명령의 페치처리와 실행처리 사이의 낮은 레텐스를 갖고 로드지연슬롯이 없는것 기억 후에 종속로드처리의 경우의 동일사이클 데이타송급 및 분기 및 지연슬롯이 동일사이클에 있어서 동시 실행할 수 있는 특성이 포함된다. 더 바람직한 실시예에 있어서는 SMU10은 감소명령세트 컴퓨터(RISC)에 있어서 사용되는 프로세서를 제공한다. 이 RISC구조는 여기에 기재하는 설계 및 실시에 많은 점에 영향을 미친다.
또 이하의 제3도의 설명에서는 제1도 및 제2도에 있어서 나타낸 성분에 대해서도 언급하겠다. 즉 정수파이프라인 250은 패치관계 252, 디코드단계 254, 어드레스단계 256, 실행단계 258 및 라이트 백 단계 250을 포함한다. 정수 파이프라인 250에는 메모리파이프라인 210과 정수명령 파이프라인 212의 양쪽이 포함된다.
페치단계 252는 정수유니트 12를 구비하여 데이타 버스 200을 거쳐서 외부캐쉬 16에서 IS70에 명령을 공급한다. 이미 기술한 바와같이 디스패치유니트 202는 일정한 프레디코드기능을 구비하고 있다. 즉, 프레디코더는 IS70에서 4개의 32비트 명령을 얻은 후에 각 명령에 18비트를 부가해서 디스페치 처리를 용이하게 한다. 이어서 프레디코더는 프레디코드 처리된 명령을 명령버퍼 74에 보낸다. 또 페치단계 252에서는 1정한 분기예측동작도 실행된다. 이 페치단계 252에 있어서의 분기예측동작에서는 4어에 대해서 1회의 분기예측이 행해진다.
다음에 데코드단계 254는 명령버퍼 74에서의 명령에 억세스해서 이들을 디코드하여, 이들의 명령의 종류를 결정한다. SMU 10은 4개까지의 명령을 1사이클 당 처리되므로 각 사이클에 있어서의 명령의 상대순서를 인식하기 위한 기구를 정하는 것이 중요하다. 이 디코드단계에서는 디스페치유니트 202가 이들의 명령을 스코어보드에 표현해서 명령의 요구에 유효한 기능감을 대응시킨다. 또 디스페치유니트 202는 유효한 기능감에 대응하는 명령만을 발송한다. 또 디코드단계에 있어서는 레지스터파일 52가 메모리명령에 의해서 억세스되어서 어드레스 레지스터 특정정보를 꺼낸다.
또 디코드단계 254는 실행되는 다음의 명령에 대해서 동작하는 프로그램카운터를 독취함으로써 명령중의 상대적인 우선도를 결정한다. 명령의 발송시에는 디스페치유니트 202는 명령의 상대적 우선도를 각 명령과 동시에 발송되는 제어웨드에 부수시킨다.
이 경우에 본 발명의 이점은 명령버퍼에서 4어보다 적은 디스페치 처리가 행해질 때에 명령버퍼중의 공급원코드순으로 명령을 다시 맞추는 것이 불필요하다는 것이다.
또 어드레스단계 256은 어드레스제네레이터 56을 사용해서 로드어드레스 및 기억어드레스를 발생한다. 실행단계 258은 대다수의 작용기능을 구비한다. 즉 실행유니트 50은 모든 정수연산로직유니트(IALU)의 동작을 행하고, 예외적으로 승산 및 제산(이들은 많은 사이클을 요한다)을 실행하고, 이 1사이클의 승산 및 제산에 있어서의 동작이 실행단계 중에 행해진다. 즉, 실행유니트 50이 실행단계 258 중에 레지스터파일 52에 DS54에서 데이타를 공급한다. 덧붙여 정수유니트 12가 실행단계 258 중에 있어서 분기를 결정하고, TLB 58의 룩업을 실행하여 예외적 상태를 검출한다.
라이트백단계 260은 실행단계 258에 이어서 SMU10의 파이프라인의 정수 파이프라인 250의 부분을 종결한다. 이와 같이 실행단계 258 중에 있어서 명령을 유효하게 완료함으로써 레지스터파일 52에의 필요한 기입동작이 임의로 행해진다. 또 실행단계 258에 있어서의 예외검출동작 및 결과에 의해서 레지스터파일 52에의 기입의 가농시기를 조건부로 할 수 있다. 이 경우의 레지스터파일 52에의 기입은 불가역적이다. 그러므로 정수유니트 12는 명령이 적정하게 실행되고, 보다 우선도가 높은 명령(즉, 명령의 흐름 중에서 다에 우선될 수 있는 명령)이 실행단계 258 중에 검출되는 어떠한 종류의 예외 상태에 있어서도 발생되는 일이 없는 경우에만 기입을 가능하게 한다. 예외처리 및 결정에 대한 보다 상세한 설명을 이하에 행한다.
제4도는 정수파이프라인 250에서 SMU 10의 파이프라인 구조에 있어서의 부동소수점 파이프라인 300의 부분 분리를 나타낸 블록도이다. 또 제4도의 설명은 제2도의 성분에 대해서 행한다. 이미 기술한 바와 같이 정수유니트 12는 어드레스제어 정보를 외부캐쉬 16에 공급해서 부동소수점유니트 14에 대응하는 데이타를 억세스한다. 이것은 부동소수점로드 및 기억명령이 정수파이프라인 250, 특히 메모리파이프라인 210을 통과해서 TLB 58에 이르고, 외부캐쉬 16에 있어서 필요한 데이타의 물리적 어드레스를 생성하는 것을 의미한다. TLB 58에서 외부캐쉬 16 및 외부카슈 16에서 LDQ 104의 데이타경로는 제4도에 나타내는 외부캐쉬 파이프라인 302를 구성하고 있다. 이 외부캐쉬 파이프라인 302는 5사이클로 동작한다. 바람직한 실시예에 있어서서는 대역폭을 개선하기 위해서 외부캐쉬 16이 인터리브구조로 되어있다. 즉 우수어드레스가 16a로 나타내는 제1뱅크에 배치되고, 기수어드레스 제2뱅크 166에 배치된다. 또 태그메모리 18은 우수태그메모리 18a와 기수메모리태그 18b에 똑같이 분할되어 있다.
외부캐쉬 파이프라인 302는 데이타를 LDQ104에 공급함으로써 FPU 14에 대응하는 데이타를 생성한다. 여기서도 외부캐쉬 16의 인터리보기능때문에 LDQ 104와 우수 LDQ(LDQE) 104a와 기수 LDQ(LDQE)104b로 분활되어 있다. 또 정수유니트 12는 어드레스 벨로우즈 304를 구비하고 있고, 벨로즈의 동작은 1993년 12월 15일 출원의 [다수평행 억세스처리에 의한 인터리보구조 메모리시스템에 있어서의 충돌해소법]으로 표제하는 관련 미국특허출원에 기재되어 있다. 즉 어드레스벨로즈 304는 정수파이프라인 250의 동일측으로 흐르는 것을 필요로 하는 2개의 명령이 파이프라인에서 도달했을 때에 인터리보식 외부캐쉬 302의 성능을 개선한다. 즉, 어드레스벨로즈 304는 명령의 하나를 보지하고 보다 우선성이 높은 것을 진행시키고 다음의 사이클에 있어서 보지한 명령을 공급할 수 있다.
정수파이프라인 250은 모든 고위의 명령이 실행되고 또 어떠한 예외상태 또는 의존상태도 해소될때까지는 FPQ82에 대해서 명령을 발하는 일은 없다. 그러나 1개의 명령이 FPQ82에 보내지면 이들의 명령은 모두 공급하게 된다. 그러므로 명령은 라이트백단계 260까지 FPQ82에 있어서 배열되지 않는다.
또 SMU10은 1993년 12월 15일 출원의 [분릴레벨캐쉬]로 표제하는 병합미국특허출원에 있어서 기재되는 분리레벨캐쉬의 구조를 채용한다. 5단계의 외부캐쉬 302의 사용은 부동소수점 명령의 경우에 문제가 생기고, 단순한 실시에서는 부동소수점의 로드에 이어서 5사이클 또는 20개까지의 명령에 대응하는 어떠한 부동소수점 명령의 발송도 방해되는 일은 있을 수 있다.
정수 파이프라인 250에서의 FPU14의 분리는 외부캐쉬 파이프라인 302에 있어서의 5사이클의 존재를 감춘다. FPQ82는 파스트인·파스트아웃(FIFO)큐로서 실시된다. 그러므로 부동소수점로드명령의 결과를 사용하는 부동소수점명령은 FPQ82에 있어서의 부동소수점 로드명령에 신속하게 계속될 수 있다. 이때문에 디스페치유니트 202는 외부카슈 302의 잠재성을 무시한다. 그 후에 정수파이프라인 250이 다른 명령에 대한 동작을 신속하게 또한 자동적으로 계속한다. 이 로드명령은 메모리파이프라인 210을 거쳐서 외부카슈 파이프라인 302에 진행하고 5사이클 후에 LDQ 104에 로드데이타를 맞긴다. 그후 로드데이터가 LDQ104에 있어서 유효하게 될 때까지 부동소수점로드명령은 FPQ82에 있어서 대기하고 준비가 갖추어진 시점에서 FPU14에 보내진다. 또 로드데이터가 FREG파일 102에 공급될 때까지 연산명령이 FPQ82에 있어서 부동소수점 명령의 후방에 대기한다.
FPU 14의 분리는 정수명령에 대한 부동소수점명령의 순서외의 실행을 가져온다. 또 외부카슈 파이프라인 304의 잠재성은 부동소수점 명령 및 정수명령의 순서 내의 실행을 요구하지 않으므로써 정수파이프라인 250에서 감추어진다.
제5도는 정수 파이프라인 250, 외부카슈파이프라인 302 및 부동소수점 파이프라인 300을 함유한 조합파이프라인 350을 나타낸 프로우차트이다. 이 조합파이프라인 350은 각각 페치 단계, 디코드단계, 어드레스단계, 실행단계 및 라이트백 단계에 대응하는 F,D,A,E,W 사이클에 의해서 정수파이프라인 250의 각 단계를 인식한다. 또 조합파이프라인 350은 FPQ82에서의 부동소수점 명령을 부여하기 위한 초과 사이클을 나타낸 S단계를 함유한다. 즉, 부동소수점의 발송은 공급원의 충돌과 레지스터의 종속성에 의해서 S단계에서 생긴다.
또 G,H,I,H 및 K로 나타내는 단계는 외부카슈 파이프라인 302의 일부이다. 또 조합파이프라인 350은 LDQ104에의 로드데이터의 기입을 위한 사이클을 나타낸 L단계를 포함하고 있다.
또 T,R,X,Y,Z,U 및 V로 나타내는 단계는 부동소수점 파이프라인 300을 정한다. 이 중 T단계는 T버스이송단계이고, 정수유니트 12를 포함한 집적회로 페키지에서 FPU14를 포함한 집적회로 페키지에서 FPU14를 포함한 집적회로 페키지에 명령이 통과하는데 요하는 시간을 허용한다. 그리하여 정수유니트 12에서 태그메모리 18 및 외부카슈 16에의 이송 등의 SMU10을 종단하는 칩구성에 대응하는 전사이클이 허용된다.
R단계는 필요시에 FREG102를 독취한다. 이 경우에 FPU14는 4개의 단계 X단계, Y단계, Z단계 및 U단계를 갖고 있다. 이들의 단계는 공동해서 부동소수점 동작을 실행한다. 실행단계 X-Y를 거치는 몇개의 경로를 필요로 하는 복잡한 동작이 행해지는 경우도 있으나 결과는 반복적으로 결정된다. 또한 V단계는 FREG파일 102에 기입하여 부동소수점 파이프라인 300을 완료한다.
이상의 설명에서 알 수 있는 바와 같이 부동소수점 파이프라인 300은 2개의 부동소수점 명령과 2개의 부동소수점 메모리 명령에 대해서 1사이클에 대해서 동시에 동작하기 위한 공급원을 구비하고 있다.
III. 디스페치 처리
제6도는 제2도에 나타낸 디스페치유니트 202의 상세한 블록도이다. 즉 디스페치유니트 202는 프레디코더 400, 명령버퍼 74, 정수디스페치유니트 402, 부동소수점 명령포메트화 유니트 404, 부동소수점 디스페치유니트 406 및 FPQ82를 구비하고 있다. 그중 정수디스페치유니트 402, 부동소수점프레페키징유니트 404 및 부동소수점디스페치유니트 406은 공동해서 제1도의 디스페치유니트 80을 구성하고 있다.
이미 기술한 바와 같이 페치관계 252 중에 있어서는 프레디 코더 400이 IS70에서 한번에 4개의 명령을 독취한다. 그 후에 프레디코더 400은 IS70에서 독취한 명령을 일반적인 공급원의 요청에 비추어서 검사하고, 이를 다시 포메트화해서 레지스터의 스코어보드처리 및 공급원의 인터록에 적합한 포메트로 변환된다. 이 시점에 있어서 명령을 해석하고 공급원의 요청에 대해서 예비적인 결정을 하고 또 각 명령에 포함되는 정보를 추출하기 위해서 각각의 명령을 탐색하기 위한 보다 많은 유효한 시간이 명령의 흐름에 있어서 존재한다. 그 후에 디코드 단계에 있어서는 이들의 기능의 일부를 실행하기 위해서 유효한 시간은 거의 없다.
제7도는 프레디코드처리 후의 재포메트화된 명령 450의 경우의 텐플레이트를 나타내고 있다. 이 재포메트화 명령 450은 명령영역 452, 레지스터 지정영역 454, 유효성 영역 456 및 OP코드(OP code) 카테고리 영역 458을 포함한다. 명령영역 452는 32비트폭으로 오리지날한 명령이다. 또 레지스터 지정영역 454, 유효성 영역 456 및 OP 코드카테고리 영역 458은 프레디코더 400이 부가되는 영역이다.
레지스터파일 52에는 32개의 유효한 레지스터가 존재하기 때문에 이들은 각각에 대해서 5비트 영역에 의해서 각각에 식별된다. 즉, 지정 레지스터 영역 454는 명령영역 452에 있어서의 명령에 대응해서 지정 레지스터를 표현하는 5비트 영역이다. 그리하여 SMU10으로 사용되는 명령의 조는 지정 레지스터의 존재시에 각 명령이 32비트로 구성되어 있는 경우에 있어서 레지스터가 다수의 상이한 위치에 배치되는 것을 가능하게 한다. 따라서 지정 레지스터를 프레디 코드처리 중에 비치해서 기지의 장소에 이것을 배치함으로써 그 후에 있어서의 시간이 대폭으로 절약할 수 있다. 즉 중요한 레지스터 값에 대응해서 고정위치를 설정하는 것이 지정 레지스터 영역 454에 있어서의 목적의 하나이다.
유효성 영역 456은 프레디코더가 명령에서 꺼낼수 있는 다수의 특징을 코드화한다. 유효성영역 456에 있어서의 이들의 개개의 비트치는 디코드단계 254에 있어서의 디스페치 처리를 촉진한다. 바람직한 실시예에 있어서는 유효성 영역 456은 복수의 8비트위치를 포함하고 있다. 즉, 이들의 위치는 각각 rd유효, 명령유효, int/fp명령, int 및 fp명령, rs유효, rt유효, 예측비트 및 지연비트에 대응한다.
rd유효비트는 지정 레지스터영역 454에 있어서의 5개의 비트가 명령에 대해서 유효하는지의 여부를 나타내기 위한 스위치로서 작용한다. 또 지정 레지스터를 갖고 있지 않은 명령도 있다. 단, 정수명령은 각각 3개까지의 레지스터 즉, 지정 레지스터 및 2개까지의 공급원레지스터를 갖을 수 있다. 이 경우에 SMU10은 제1의 공급원 레지스터를 rs레지스터로서는 또 제2의 레지스터 rt레지스터로서 정하고 있다. 또 각 명령은 0개, 1개 또는 2개의 공급원 레지스터의 어느 것이나 사용할 수 있다. 또 유효한 영역 456에 있어서의 rs유효비트는 명령이 rs레지스터를 사용하고 있는지의 여부를 나타낸다. 마찬가지로 유효성 영역 456에 있어서의 rt유효비트는 명령이 rt레지스터를 사용하는지의 여부를 나타낸다. 단, SMU10의 경우의 명령의 조에 있어서는 rs 및 rt레지스터가 용이하게 배치할 수 있으므로 프레디코드처리 중에 이들의 레지스터를 추출할 필요는 없다. 즉, 명령 중에 있어서의 다수의 위치에 출현할 수 있는 것은 지정 레지스터이다.
또 명령유효비트는 정수 디스페치유니트 402에 대해서 명령이 유효하는지의 여부를 나타낸다. 또 int/fp명령유효비트는 디스페치유니트 402에 대해서 부수의 명령이 부동소수점 명령인지의 여부를 나타내고 int 및 fp유효비트는 부수의 명령이 부동소점 명령 및 정수명령의 약쪽인지의 여부를 나타낸다.
또 유효성 비트중의 2개, 즉 예측비트와 지연비트는 분기 예측로딕에 의해서 사용된다. 이들은 프레디코더 400에 의해서 정해지는 것도 아니고 또 디스페치시스템에 의해서 사용되지 않으므로 여기서는 더 설명하는 것을 생략한다.
또 5비트의 op코드카테고리 영역 458은 디스페치유니트 402가 다른 명령과는 별도로 하나의 명령 또는 복수의 명령군을 처리하도록 요구하는 특정한 공급원의 요청 또는 다른 인자로에 따라서 복수의 명령의 조를 1체로 모은다. 이하의 표 1은 정수 인출유니트 402에 있어서 사용하는 op코드의 조를 정의한다.
표 1에 있어서 Cat OPC는 바람직한 실시예에 대응해서 선택된 정수 OP코드의 카테고리 리스트이다. Cat Opc에 대응해서 비트페탄이 상기 명령의 OP코드 카테고리 영역 458에 있어서의 특정 카테고리에 의해서 표현되는 명령에 첨부된다. 또 비트 페탄의 결출에 있어서의 괄호내의 수자는 비트의 위치번호를 각각 나타내고 있고 [0]을 저위의 비트번호를 또 [4]는 고위의 비트번호를 나타내고 있다. 또 상술한 내용설명에 있어서는 코프로세서가 바람직한 실시예에 있어서의 부동소수점유니트에 언급한다.
가령 상기 OP코드의 카테고리가 유사한 공급원 요청을 갖는 명령을 군별하기 위해서 선택되어도 공통의 특징을 나누는 OP코드 카테고리의 군이 존재한다. 즉 최소량의 첨가비트를 사용해서 가능한한 효과적으로 프레디코드처리 및 이에 이어지는 데코드처리 및 디스페치 처리를 행하기 때문에 공급원의 할당에 의미가 있고, 또 상이한 OP코드카테고리 중에 분포되는 공통의 특징이 유사한 비트페탄을 갖고 있다. 예를 들면 최후의 6개의 OP코드카테고리는 모두 메모리 타입의 명령을 나타내고 있고, 때문에 비트위치 2 및 3이 설정되어 있다. 즉, 메모리 타입명령의 OP코드카테고리 만이 위치 2 및 3에 있어서의 양쪽의 비트를 설정한다. 그리하여 디스페치유니트 402는 매스킹 비트 2 및 3에 의해서 명령을 신속하게 결정해서 이들 양쪽위치가 [1]인지의 여부를 알 수 있다. 마찬가지로 3종류의 분기 타입 OP코드 카테고리 즉 bccdep, brbit 및 mvccdep가 있고, 이들의 명령은 모드[010]에 합치되는 비트위치 2,3및 4를 갖고 있다.
중요한 상관관련성을 유지하면서 상이한 OP코드 카테고리에 명령을 충분히 기억시키는 것은 수종의 비트를 사용해서 행하는데 곤란하다. 그러나 각 명령에 첨부하는 다수의 비트를 불필요하게 증가하는 것은 코스트 및 처리속도면에서 바람직하지 않다.
여기서 프레디코드 처리후에 프레데코드 400이 재포오메트화하고 또한 처리된 명령을 명령버퍼 74 중에 배열한다. IS70에서 꺼내진 4종의 명령은 합계해서 128비트이나 명령버퍼 74에 기억된 4종의 명령은 합계로 200비트가 된다. 즉 명령버퍼 74에 대한 초과메모리의 요구는 데코드단계 254 중에 있어서의 프레데코드 처리에서 얻어지는 성능의 이점에 의해서 대폭적으로 오프세트된다.
제8도는 제6도에 나타낸 정수디스페치유니트 402를 거쳐서 데이타패스프로우의 블록도이다. 즉 정수디스페치유니트 402는 5개의 크로스바(멜티플렉서)를 구비하고 있고, 크로스바는 명령버퍼 74(큐레지스터)에서 명령을 수취한다. 이들의 크로스바는 2개의 정수동작 크로스바 470, 2개의 메모리 크로스바 472 및 1개의 분기크로스바 474를 함유한다. 디스페치유니트 402에 주어지는 4개의 명령 중 정수크로스바 470은 최초의 2개의 정수동작명령을 선택해서 이들을 정수파이프라인 212에 보낸다.
또 정수파이프라인 212에 보내진 2개의 정수동작명령 중 우선도가 높은것 본 발명의 시양에 따라서 좌측파이프라인으로 층하는 파이프라인의 한쪽으로 보내진다. 따라서 크로스바 470은 2개의 정수동작 명령 중의 우선도가 낮은 것을 정수파이프라인 212에 있어서의 우측정수파이프라인에 보낸다. 또 메모리크로스바 472는 명령버퍼 74에서 보내지는 4개의 명령에서 최초의 2개의 메모리 동작명령을 선택해서 메모리파이프라인 210에 이들을 보낸다.
이 경우에 메모리크로스바 472는 이들 2개의 메모리 동작명령 중에서 우선도가 높은 것을 좌측메모리파이프라인에 보내고, 다른 것은 우측 메모리파이프라인에 보낸다.
또 분기크로스바 474는 최초의 분기명령을 선택해서 이것을 분기로직에 보낸다. 또 제8도에 나타낸 5종의 크로스바는 모두 동시에 동작해서 명령버퍼 74에서 4종의 명령을 평행해서 수취한다. 이 경우에 명령버퍼 74에서 수취되는 4종의 명령 중에는 2개 보다 많은 또는 적은 정수동작명령 및 2개보다 많은 또는 적은 메모리동작명령 및 1개보다 많은 또는 적은 분기명령이 존재하는 경우도 있을 수 있다.
이 때문에 이들의 크로스바는 적당한 종류 보다 적은 명령이 유효한 경우에 각각의 최대치 보다 적은 값을 꺼내도록 되어 있다.
SMU 10은 각 사이클에 있어서 4종까지의 명령을 실행할 수 있는 슈퍼스칼라프로세서이다. 그러나 이들의 명령은 항상 수번으로 실행되어서 보내진다. 여기서 이와 같은 순번의 처리를 실행하기 위해서 정수파이프라인 250의 각 단계에 있어서 특정 단계에 있어서의 각각의 명령이 상대우선도를 갖도록 되어 있다.
즉, 이와 같은 상대우선도를 표현하는 2종의 우선도 비트가 각 명령에 첨부된다.
또 우선도는 명령버퍼 74에 부수한 명령카운터에 의해서 초기적으로 설정된다. 이 명령카운터는 디스페치유니트 402에 보내지는 4종의 명령 중에서 최고 우선도의 명령에 대해서 계속적으로 포인트 붙임을 한다. 그 후에 디스페치유니트 402가 파이프라인에 명령을 계속 보내지는 것에 따라서 명령카운터는 명령버퍼 74에 있어서의 최고 우선도의 비디스페치명령에 포인트를 붙이도록 된다.
동작에 있어서는 4종의 명령 중에서 최초의 2개의 정수동작명령을 선택하기 때문에 정수크로스바가 명령카운터의 값에 대응해서 작동한다. 정수명령을 신속하게 발견하기 위해서 인출유니트 402는 메모리 명령은 아니고 부동소수점명령도 아니고, 또한 유효한 초기의 2개의 명령을 발견한다. 이 경우에 각 명령에 있어서의 유효성 영역 456의 유효비트 및 fp/int유효성 비트가 유효한 비부동소수점 명령인 명령을 지시한다. 또 이와 같은 명령이 메모리 명령 인지의 여부를 결정하기 위해서 디스페치유니트 402는 각 명령의 OP코드카테고리 영역에 있어서의 비트패턴의 제2 및 제3비트를 마스크한다. 즉 이들의 비트가 양쪽 모두[I]이 아닌 경우는 명령은 메모리 명령은 아니다. 그리하여 유효하고 비메모리 또한 비부동소수점명령으로 간주된다.
한편, 메모리 명령의 선택은 간단하다. 상술한 바와 같이 명령카운터, 유효성 영역 456에 있어서의 유효비트 및 3의 위치비트의 마스크결과에 의해서 디스페치유니트 402는 최초의 2개의 메모리 명령을 신속하게 결정한다.
분기로직에 공급하기 위한 최고우선도의 분기명령의 선택 또는 명령카운터 유효성 영역 456에 있어서의 유효비트 및 비트위치 2, 3 및 4의 마스크와 [010]과의 비교에 의존한다.
그리하여 적절한 합치가 얻어지면 명령은 분기명령으로 간주된다. 또, 분기로딕에 보내지는 명령은 다른 하나의 파이프라인에도 보내진다.
데코드단계 254에 있어서는 특히 메모리명령의 경우에 있어서 타이밍이 대단히 중요하다. 즉 메모리명령은 다음의 사이클에 있어서의 어드레스발생에 사용되는 정보를 억세스하기 위해서 레지스터파일 52에 될 수 있는한 신속하게 발송하는 것이 중요하다. 그러므로 디스페치유니트 402는 공급원 경합의 결정전에 파이프라인에 명령을 폭로하는 것이다. 또 이것에 따라서 디스페치유니트 402는 각 명령에 대해서 해제제어신호가 나온다. 즉 이 해제신호는 발송할 필요가 없는 명령에 대해서 나오는 것이다. 또 명령카운터는 유효하게 발송되는 명령에 대응해서만이 진행된다. 환언하면 임의의 데코드처리 사이클에 있어서 어떤 이유에 의해서 전혀 발송할 필요가 없게된 경우에는 디스페치유니트 402는 각 발송명령에 대해서 해제신호를 발한다. 이 경우에 명령카운터는 진행하지 않는다.
디스페치유니트 402는 레지스터의 스코어보드처리의 결과에 부분적이기는 하나 이에 의해서 해제제어 신호의 상태를 결정한다. 제9도는 공급원의 경합을 설정하고 또한 결정하기 위한 레지스터 스코어보드 480의 사용방법을 개략적으로 설명하기 위한 도면이다. 레지스터 스코어보드 480은 레지스터파일 52에 있어서의 레지스터의 부적성한 억세스를 방지하기 위해서 필요한 비교를 나타낸 얼레이이다. 얼레이의 재상부에는 2개의 공급원 레지스터의 4종의 명령의 각각에 있어서의 5개의 비트치가 배치되어 있고, 얼레이 전체로 합계 8개의 선이 그어져 있다.
또한 얼레이의 하부에는 디스페치유니트 402가 재상부에 배열된 공급원 레지스터에 대응하는 값과의 비교에 사용되는 여러가지의 레지스터의 5개의 비트 값이 배치되어 있다. 이들의 얼레이 하부의 레지스터는 4종의 명령의 각각에 있어서의 지정 레지스터 영역 454에서의 4개의 지정 레지스터값을 함유한다. 덧붙여 레지스터 스코어보드 480은 직전사이클에 있어서 발송된 명령에 대응하는 지정 레지스터의 값도 사용한다. 이들의 레지스터치는 ardil, ardir, ardml 및 ardmr와 라벨화된다. 이 때 직전사이클에 있어서 발송된 명령은 어드레스단계 256에 존재한다고 생각되고 있다. 따라서 ardil은 어드레스 단계에 위치한 좌측정수파이프에 있어서의 명령의 지정레지스터를 의미한다. 마찬가지로 ardir은 좌측의 정수파이프지정 레지스터이고, ardml 및 ardmr은 각각 어드레스관계에 있어서의 좌측 및 우측 메모리파이프의 지령 레지스터이다.
또 FPU14에서 데이타를 꺼내어서 이것을 레지스터파일 52에 있어서의 레지스터에 가하는 이동명령도 존재한다. 이 처리는 시간이 걸리기 때문에 데이타를 수취하기 위한 레지스터는 스코어보드처리되어 있다. 이들의 이동명령 중 임의시간에 계속되는 2개의 명령이 있고, mvo는 제1의 이동명령의 지정레지스터를 기억하고 mv1은 제2의 이동명령의 지정레지스터를 기억한다.
레지스터 스코어보드 480을 실행하기 위해서 4개 또는 그 이하의 현재의 데코드사이클중에서 발송되고 있는 명령에 있어서 인식되는 공급원 레지스터의 5개의 비트치를 기억하기 위한 8개의 레지스터가 존재한다. 또 각 레지스터에는 각 명령의 유효성영역 456에서 대응하는 유효비트가 부수된다. 덧붙여 4종의 발송된 이동명령, 4개의 이미 발송된 명령 및 2개의 이동명령의 지정레지스터를 인식하는 5개의 비트치를 보지하기 위해서 10개의 레지스터가 존재한다. 또 지정레지스터 정보를 보지하는 레지스터는 이들에 부수되는 유효성비트를 갖는다(유효성 영역 456의 rd유효비트에서 취해진다).
제9도에 있어서는 지정 레지스터와 공급원 레지스터와의 비교가 얼레이의 교차점에 있어서 원형이 나타나는 경우에 행해진다. 예를들면 제1명령(rdo)에 대응하는 지정 레지스터가 명령 2,3 또는 4에 대응하는 공급원 레지스터로서 사용되는지를 알기 위해서는 비교가 행해진다. 그리하여 레지스터 스코어보드 480의 경우에 각 사이클에 있어서 5개의 비트치에 대한 72종까지의 비교가 행해진다. 디스페치유니트는 그 후의 비지상태에 있는 공급원에 대한 억세스를 요구하는 명령을 늦추면서 보다 높은 우선도의 명령이 레지스터를 사용하는 것을 가능하게 함으로써 충돌을 해소한다. 즉 이와같이 발송된 명령을 늦추기 위해서 인출유니트 402는 늦추려고 하는 명령에 대응하는 해제신호를 발한다.
또 디스페치유니트 402가 어드레스 단계 256의 정수 파이프라인에 있어서 명령의 지정 레지스터를 스코어보드 처리하는 이유의 하나는 어드레스용 레지스터를 사용해서 로드에 의해서 다음의 사이클에 있어서 즉시 계속되고 있는 레지스터에의 부가에 대해서 보호를 행하는 것이다. 레지스터가 FPU14에서 이동명령을 수취하는 것을 보류함으로써 FPU14는 기대할 필요가 없어진다. 즉, 이것이 동작완료 후에 있어서의 기능유니트의 대기를 불필요하게 하기 위한 SMU10의 구성이다.
덧붙여서 디스페치유니트 402는 어떤 명령을 적정하게 발송할 것인지를 결정하기 위해서 레지스터 스코어보드 480의 결과뿐만 아니라 더 많은 정보를 사용한다.
즉, 공급원의 층돌을 해소시키면서 명령을 순서대로 발송하는 것을 확실하게 하는 것이 디스페치 처리에 있어서의 목적의 하나이다. 정수 유니트 12의 경우에 공급원의 제한에는 1개의 승산기, 1개의 쉬프터, mvfti(부동소수점 레지스터를 정수에 이동한다)에 대응하는 2개의 지정 레지스터, mvfti에 대응하는 레지스터파일 52에의 비특이적인 기입포트 및 ccbit 의존명령에 대응해서 비지인 cc(상태코드)비트의 유효성이 함유된다. 예를들면 1사이클 당 1개의 쉬프트 명령만이 발송되므로 4종의 명령군에 있어서의 제2의 쉬프트명령은 쉬프터가 유효하게 될 때까지 기대하지 않으면 안된다.
또, 디스페치유니트 402는 모든 정수 디스페치 처리를 해제하는 다수의 상태를 채용할 수 있다. 이의 상태에는 분기 예측의 잘못 또는 예외 상태로 이어지는 qflsh(큐플래슈) 디백모드, 부동소수점큐의 완충 및 메모리파이프가 벌써 메모리 동작을 처리할 수 없게된 상태로 되는 것이 함유된다.
또 메모리 명령의 경우에도 해결해야 할 제약이 있다. 즉, 이들의 제약에는 DS54에 대한 1개 만의 독취 포토, DS54에 대한 기입의 타이밍, 정수에 대응하는 1개만의 레지스터 기입포로가 명령을 기억하고 병합하는 것, 정수의 기억 mvitf 및 mvcitf가 명령과 동시에 관계하는 데이타를 담지하기 위해서 FPQ82에 있어서의 기입전체를 요구하는 것, sc가 자발적으로 지행하는 것, mvcitf가 FPU14에 있어서 모든 cc비트를 설정할 때에 자발적으로 진행해서 cc비트로직을 보다 간결하게 하는 것이 포함된다.
이들의 정수 및 메모리의 제약은 디스페치유니트 402에 의한 명령의 디스페치 처리를 더 제한할 수 있으므로 레지스터 스코어보드 480의 결과에만 의해서 발송되는 것보다 적은 명령이 1사이클에서 있어서 실제로 발송된다.
제10도는 본 발명에 의한 페치 및 디스페치시스템 500의 간단화된 블록도이다. 즉, 4개의 32비트 명령이 버퍼큐 502에 보내진다. 그리하여 공급되는 명령은 128비트의 경계선에 연해서 배열되고 송출되는 명령은 항상 각각 인접되어 있다, 또 버퍼큐 702에 보내지는 명령은 4어의 배열로 구성되어 있고, 명령카슈(도시 않음)에서 백파큐 502의 재상부에 들어간다. 디스페치유니트 504는 명령의 발송을 제어하고, 디스페치 레지스터 506과 셀렉터회로 508을 구비하고 있다. 또 1군의 온데키레지스터 510이 백파큐 502의 출력을 디스페치유니트 504에 연결되어 있다.
디스페치 레지스터 506은 데코더 및 레지스터파일에 접속하는 이제까지의[명령레지스타]로서 가능하다. 디스페치 레지스터 506은 온데키레지스트 510에서 또는 백파큐 502의 출력에서 직접 재순환 또는 재충전된다. 또 백파큐 502는 명령카슈에서 디스페치 레지스터에 이르는 다이렉트패스를 제공하는 바이패스(도시 않음)를 구비하고 있다.
제11도는 제10도에 나타낸 것과 같은 4사이클의 명령큐의 동작을 나타낸 도면이다. 즉 제1의 사이클에 있어서는 백파큐 502, 온데키레지스터 510 및 디스페치 레지스터 504가 문자에 의해서 나타나고 또한 하강하는 알파벳트순으로 실행되는 명령으로 충전된다. 그리하여 명령포인터는 기초적으로 명령[A]를 지시한다.
또 제1사이클에 있어서 디스페치로직이 잠재적으로 평행한 제1의 4개의 명령[A] 내지 [D] 중에서 [A] 및 [B]가 동시에 실행되는 것을 결정한다.(예를 들면, [C]는 [A]에 종속가능하기 때문에 발송할 수 없다. 또 시스템이 순서대로 발송을 행하기 때문에 [C]의 발송불능에 의해서 [D]의 발송을 행하지 않는 것이 필요하게 된다).
그 후에 제2사이클에 있어서 디스페치로딕크에서의 신호가 온데키레지스터 510에서 디스페치 레지스터 504에 대해서 [E] 및 [F]로 진행되고, 또 [C] 및 [D]를 보지한다. 이것에 의해서 명령카운터는 최고 우선도 명령으로서 [C]를 지시하고, [C]에서 시작하는 [D] 내지 [F])에 최우수선성을 부여한다. 그리고 제2사이클에 있어서는 명령 [C] 내지 [E]가 [F]를 보지한 상태로 발송한다.
그 후에 제3사이클에 있어서 명령[G] 및 [H]가 온데키레지스터 510에서 디스페치레지스터 504에 이동한다. 그러나 [I]는 백파큐어 502에서 직접 억세스된다. 이와같이 온데키레지스터 510에서 모든 명령이 고갈되면 백파큐 502의 진행이 시작되어 부가적인 명령이 취해진다. 이와같은 진행은 제4사이클까지 발생하지 않으나 디스페치레지스터 504는 백파큐 502에서 직접 적당히 충전된다. 이와같은 직접 접속에 의해 페치파이프라인이 디스페치 결정로직에서 분리되어 있는 것을 알 수 있다. 디스페치로직은 각 디스페치레지스터에 공급하는 셀렉터 508을 조작하는 것만을 필요로 한다.
그 후에 제4사이클에 있어서 백파큐 502의 진행 및 디스페치레지스터 504의 충전이 동시에 행해지고 계속적인 위치 맞춤없는 명령디스페치 처리(공급원 코드순에 있어서의 명령의 재위치 맞춤이 없다)가 행해진다.
다시 제6도에 의해서 이하의 설명을 행한다.
데코드 단계 354의 종점에 있어서 2개까지의 정수명령이 정수파이프라인으로 보내지고, 2개까지의 메모리명령이 메모리파이프라인으로 보내준다. 이때에 부동소수점 명령은 디스페치단계 254에 있어서 스코어보드화 또는 처리되지 않고 단순히 정수 디스페치유니트 402를 거쳐서 부동소수점 명령처리유니트 404로 흐른다. 또 어드레스단계 256에 있어서는 부동소수점 명령은 부동소수점 디스페치 처리를 위해서 적의 재포메트화 된다.
제12도는 재 포매트처리 후의 재포메트화된 부동소수점동작명령 550에 대응하는 텐플레이트와 재포메트화된 부동소수점 메모리동작 552에 대응하는 텐플레이트를 표현하기 위한 도면이다.
즉, 부동소수점명령의 재포메트화에 의해서 명령이 37비트폭으로 된다.
또 실행단계 258에 있어서는 이들의 재포메트화된 부동소수점명령이 공급원의 수번에 따라서 순회한다. 그 후에 부동소수점 명령에 관련되는 명령을 함유한 4어가 FPQ82에 기입된다. 이 경우에 부동소수점 디스페치유니트 406은 데코드단계 254에 있어서의 디스페치 처리와 똑같이 공급원의 경합 및 레지스터 스코어보드에 따라서 fp관련명령의 발송을 제어한다. 단, 여기서는 재포메트화된 명령의 1부만이 정수유니트 12와 FPU14를 연결하고 있는 T버스 위에 실제로 송출된다. 그리하여 제12도에 나타내고 있는 바와 같이 29비트의 재포메트와 부동소수점동작명령 550이 T버스로 보내지고, 또 불과 9비트의 재포메트화 부동소수점에 메모리명령 552가 T버스로 보내진다.
표 2는 부동소수점 OP코드와 OP코드카데고리를 표현하는 부수의 4비트치를 나타내고 있다. 이 경우에 부동소수점디스페치(S사이클 또는 FD단계)의 동작이 4비트 태그만을 필요로 하기 때문에 보다 적은 카테고리를 나타내고 있다. 여기서도 카테고리는 상이한 공급원의 요청은 강조하고 있다. 표 2에서는 2종의 광범한 서브클래스, 즉, 부동소수점 메모리명령과 부동소수점 실행명령을 나타내고 있다. 이 경우에 OP코드의 최고비트가 사브크라스를 나타냈다. 즉 비트위치 4에 있어서의 [0]이 메모리 명령을 나타낸 한편에서 [I]이 부동소수점 실행명령을 나타낸다.
부동소수점 명령의 디스페치로직에 있어서의 난점의 하나는 부동소수점 실행명령의 스코어보드화이다. 즉, 부동소수점 실행명령의 상이한 OP코드에 의해서 이들의 잠복기간의 차를 잘 알 수 있다. 즉 10ng의 [1000]비트파탄에 의해서 나타내는 것보다도 아래의 표 2의 OP코드부분에 있어서 카테고리의 명령은 완료되므로 많은 사이클을 필요로 한다. FPU 14는 실행용으로 2개의 대층적인 파이프라인을 구비하고 있으나 이들 명령의 상이한 잠복기간 때문에 스코어보드가 상당히 복잡하게 되어 있다.
제13도는 부동소수점 로드동작을 실행하기 위한 SMU10에 있어서의 디스페치 처리를 나타낸 약도이다. 즉 유니트 12에 있어서의 레지스터파일의 독취동작, 어드레스 발생 및 TLB룩업 기능은 어드레스유니트 600에 함유된다. 또 태그메모리 억세스 및 GS 데이타 억세스의 외부카슈 파이프라인기능은 글로발카슈(GS) 억세스유니트 602에 함유된다 GS억세스 유니트 602는 독취데이터를 LDQ 104 및 FPR 102의 쌍방에 공급한다. 덧붙여서 GS억세스유니트 602는 GS16에서의 데이타가 유효할 때에 LDQ 104에 배열화 신호를 발한다.
정수유니트 12는 또 로드배열카운터(LDQ카운터) 604를 구비한다. LDQ카운터 604는 GS타그메모리에 히로가 존재하는 시간을 나타낸 GS억세스유니트 602에서의 증가신호에 따라서 동작한다.
또 LDQ카운터 604는 FP디스페치유니트 406에 출력을 보낸다. 출력은 3종의 상태를 취하고 이들은 0.1 또는2이다.
부동소수점로드명령은 ISIU 디스페치유니트 402에 있어서 개시한다. 정수 디스페치유니트 402는 이 명령을 정수파이프라인(어드레스 유니트 600) 및 부동소수점 파이프라인(FP디스페치유니트 406)의 양쪽에 보낸다. 그 결과 어드레스유니트 600은 실효어드레스를 발생하고 이것을 물리 어드레스로 번역한다. 또, 어드레스유니트 600은 물리 어드레스를 GS억세스유니트 602에 공급한다.
또, GS억세스유니트가 GS태그하이트를 검출하면 정수유니트 12는 대응데이타가 유효한 것을 알고, LDQ카운터 604에 증가신호를 발해서 이것을 1만큼 증가한다. 또한 GS억세스유니트 602는 데이타가 유효한때에 배열신호를 LDQ 104에 보내서 LDQ에 이것을 기입한다.
이와같은 어드레스 발생 및 데이타 억세스사이클에 있어서 FP디스페치유니트 406은 FPQ82에 있어서의 부동소수점로드명령을 보지한다. LDQ카운터 604가 부동소수점로드동작에 대응한 데이타가 LDQ104에 있어서 유효한 것을 나타내는 것, FP디스페치유니트 406은 FPU14에 T버스를 거쳐서 이 명령을 발송한다. 그후에 FPU14는 LDQ104에서의 데이타를 독취하고 이것을 FPR102에 기입한다.
제14도는 부동소수점기억동작을 실행하기 위한 SMU10에 있어서의 디스페치 처리를 나타낸 개략도이다. 즉, 정수유니트 12는 레지스터파일 52, 어드레스 제네레이터 56, TLB58 및 DS타그유효성 데이타를 함유한 기억어드레스 발생유니트 610을 구비하고 있다. 기억데이타 배열카운터(SDQ 카운터 ) 612(홀수 어드레스에 대응하는 SDQ카운터 (SDQE카운터 612a)와 짝수 어드레스에 대응하는 SDQ카운터(SDQ카운터 612b)의 2개의 카운터로서 물리적으로 실시된다)가 FPU14에 관해서 STQ106의 상태를 결정한다. SQ카운터는 FP데스페치유니트 406에서의 증가신호에 응해서 이들의 기억치가 증가한다. 그후에 FP디스페치유니트 406은 기억어드레스 발생유니트 610에서 신호를 수치하고, 어느 뱅크에 기억처리가 행해지는가를 지시한다.
이 경우에 부동소수점 기억명령은 IS정수인출유니트 402에서 개시한다. 즉 디스페치유니트 402는 부동소수점 기억명령을 어드레스 발생유니트 610 및 FP디스페치유니트 406의 쌍방에 발송한다.
그후에 기억어드레스 발생유니트 610은 부동소수점 기억명령과 하등의 어드레스 공급원 레지스터 특정정보를 수취한다. 또한 FP디스페치유니트 406은 데이타 공급원 레지스터 특정정보를 수취한다.
그 후의 기억어드레스 발생유니트 610을 실효 어드레스를 결정해서 이것을 물리 어드레스로 번역한다. DS54는 DS 및 GS사이의 일관성을 확실히 하기때문에 체크되는 타그메모리와 유효메모리(도시않음)를 구비하고 있다. 그런데 기억어드레스 발생유니트 610은 물리 어드레스를 GS타그 18에 보내고, 또 홀수/짝수 뱅크신호를 FP디스페치유니트 406에 보낸다.
또 GS타그 18에 있어서 히트하면 기억어드레스가 기억어드레스큐 224에 있어서 배열된다. 이때에 외부카슈제어로직 614가 적당한 SDQ카운터 612의 상태를 체크해서 데이타가 FPU14에 대해서 STQ106에 있어서 유효하느냐 않느냐 결정한다.
FP디스페치유니트 406은 정상명령 및 공급원의 종속성에 의해서 명령의 발송이 가능하게 되기까지의 부동소수점 기억명령의 발송을 대기한다. 또 기억명령을 수취하면 FPU14는 FPR102에서의 데이타를 독취해서 이것을 STQ 106에 배열한다.
이때에 SDQ카운터 612가 데이타 STQ106에 있어서 유효한 것을 지시하기 때문에 증가한다. 그 후에 SDQ106에 있어서의 기입과 어드레스큐 224에 있어서의 기입이 일치하면 외부카슈제어로딕크 614가 데이타를 해열(dequeue)해서 외부카슈 16에 보낸다.
IV. 파이프라인의 재충진 및 예외처리
상술한 파이프라인은 그 바람직한 동작 모드에서 연속적으로 페치되고 데코드되고 또 실행되는 명령에 대해서 동작한다. 그러나 파이프라인 동작을 불연속하는 다수의 상황이 슈퍼스칼라식 프로세서의 동작에서 생긴다. 일반적으로 이들의 상황을 바람직한 실시예에 있어서 예외상태라 칭하고 이 상태에 있어서는 SMU10이 파이프라인을 특별한 상태로 동작시킨다.
여기서 SMU10에 의해서 취해지는 예외상태를 처리하기 위한 방법론을 예외처리라 칭한다. 그런데 바람직한 실시예에 있어서는 SMU10은 이 예외처리의 개념을 예외로서 일반적으로 정의되어 있지 않은 사태 및 상황에까지 확장해서 이들의 모두에게 대응할 수 있는 보편적인 시스템을 제공한다. 이때문에 SMU10의 사실상 모든 기능유니트에 연결하는 예외처리 로딕크가 예외처리를 모니타해서 제어한다.
즉, SMU10은 종래의 정수유니트가 갖는 예외사태의 종류를 함유할뿐아니고, 데이타 카슈의 미스히트, TLB의 예외사태, 부동소수점명령의 예외상황, 분기오예측, 더우기는 인식 가능한 예외 상황류에 있어서의 예외처리의 시스템 호출 및 응답을 함유한다. 또한 SMU10은 이들의 예외사태에 대응하는 일반적인 예외처리 방법을 제공한다.
그러나 SMU10의 슈퍼스칼라특성에 의해서 이와 같은 예외처리 방법은 복잡해진다. 여기서 바람직한 실시예에 있어서는 SMU10은 모든 예외 사태를 실효단계 258에 있어서 처리한다. 이 경우에 레지스터파일 52에의 기입이 불가역이기 때문에 예외사태의 검출을 라이트 백단계 260의 전에 행할 필요가 있다. 또 SMU10은 부동소수점명령을 FPQ82에 발송하기 전에 부동소수점명령에 앞서서 우선도가 높은 명령에 관련한 모든 예외사태를 결정한다.
또 예외처리시스템에서의 복잡한 다른 요인으로서 SMU10에 있어서 연속적으로 진행하는 파이프라인의 사용을 들 수 있다. 즉 SMU10의 파이프라인은 정지하지 않고 명령을 각 사이클에 있어서 진행시키고 있다. 따라서 파이프라인의 속도, 예외사태 후에 실효단계 258의 사이에 검출되는 소량의 유효시간 및 대형칩프사이즈에 의해서 SMU10의 모든 부분에 대한 명령의 발송정지에 의해서 파이프라인을 휴지시키는 것은 비실용적이 된다.
정수명령의 경우에는 예외처리는 고정도모델을 사용한다. 또 부동소수점명령의 경우에는 정수파이프라인 250에서 높은 잠복성의 외부카슈파이프라인 302를 분리함으로써 SMU10은 저정도의 예외처리 모델을 사용한다.
즉, 고정도모델에 있어서는 SMU10은 예외사태를 일으키는 명령을 고정도로 인식하는 것이 요구된다. 그런데 SMU10은 실행단계 258에 있어서 프로그램카운터를 채용하고, 또 각 명령에 부가하는 우선 도비트를 사용해서 예외사태를 일으키는 특정명령을 인식한다. 이 경우에 각 명령에 부가되는 2종의 비트우선도코드가 파이프라인중의 동일단계에 있어서의 명령중의 상태우선도를 지시한다.
또한 우선도비트는 제2의 기능을 다한다. 즉 예외사태의 발생시에 SMU10은 예외사태를 완수시키는 명령보다 높은 우선도를 갖는 모든 명령을 허용하고, 예외사태 완수명령 및 보다 낮은 우선도의 명령을 제거한다.
즉, 이와같이 예외명령만 아니고 저우선도명령을 타그처리함으로써 다음단계에의 진행이나 메모리 위치에 있어서의 단계변경이 방해되므로 이들의 제거명령의 영향을 실행단계 258에서 제거할 필요가 있다.
이와같은 제거처리를 설명하기 위해서 DS에 대해서 부가적인 설명을 더 행한다. 즉 DS54는 32바이트 배선을 수반한 16KB데이타를 기억하는 직접 맵캐시이다. DS54는 타그메모리와 유효성 비트메모리를 구비하고 있다. 이 경우에 DS54에 있어서의 각 워드에는 1개의 유효성비트가 부수하고 있다. DS54의 유효성 비트는 이미 분리레벨케슈에 대해서 설명했다. 즉, SMU10은 DS기억의 소멸의 보조에 동일의 유효성 비트를 사용하고 있다.
SMU10은 DS의 타그메모리에 있어서의 히트의 유무나 겹쳐쓰이고 있는 것이 무엇인가를 알기전에 DS54의 데이타영역에 대해서 항시 기억처리한다. 따라서 DS의 타그미스가 존재하는 경우에는 예외 처리로딕크가 이 미스를 예외사태로서 전술과 같이 처리한다. 또 보다높은 우선도의 명령에서 예외사태가 일어난 경우에는 DS타그의 히트가 존재하고 있어도 예외처리로 로딕크는 그 기억을 말소한다. 또한 DS기입을 정정하기 위해서 예외처리로딕크는 기억된 데이타 워드에 부수한 유효성 비트를 크리어해서 데이타를 무효로 한다. 그런데 순서외의 기억에 앞서서 기억위치에 데이타가 기억된 것은 이미 문제가 되지 않는다. 또한 이 위치에서 독취하기 위한 다음동작에 의해서 DS미스가 발생되고 외부카슈 16에서의 이 위치의 독취가 생긴다(예외사태가 생긴다). 여기서 이 위치에의 다음기입에 의해서 데이타를 기억해서 데이타가 유효인 것을 나타낸 부수의 유효성 비트를 설정한다.
또한 일정의 예외사태뒤 디스페치유니트 202는 2내지 3사이클에 걸쳐서 정수파이프라인 250을 프레슈처리 한다. 이 프레슈처리가 발생되고 있는 사이도 상기 예외처리로딕크는 DS54에 무엇이 일어나고 있는 것을 감시할 수 있고, 또 그때에 필요한 정정을 가하는 것이 가능하다.
이하 상이한 종류의 예외사태를 설명하고 또 그와같은 명령을 처리하기 위한 단계에 대해서 설명하겠다. 즉 예외사태는 정수유니트의 예외사태 TLB의 예외 사태 FPU14 실행유니트의 예외사태 IS미스 및 DS타그미스의 순으로 처리된다.
정수유니트의 예외사태는 일반적으로 정수유니트 50에 있어서 오버플로우와 같은 형태가 생긴다.
이 예외사태를 검출하면 SMU10은 신속하게 그 예외처를 개시한다. 그 제1단계에 있어서는 실행단계 258에 있어서의 4개의 가능한 명령중에서 어느 명령이 예외사태를 일으킨 것이 식별된다. 이 명령의 식별처리는 예외사태를 검출하는 기능유니트가 부수명령에서 2비트의 우선도코드를 통지한때에 결과를 안다. 또 이와같은 통지는 예외처리로딕크에 대해서 행해진다.
또 실행단계 258에 다수의 명령이 존재하는 경우에는 2개 이상의 명령이 예외사태를 일으키는 일도 있을 수 있다. 이 경우에 처리로딕크는 예외사태를 일으키고 있는 최고 우선도의 명령을 예외명으로써 선택하고, 이것보다 높은 우선도를 갖는 명령의 완료를 허용하고 또 예외명령과 이보다 낮은 우선도의 명령을 모두 제거한다.
명령을 제거하기 위해서는 명령이 임의의 메모리 위치에 대해서 불가역 변화를 일으키는 것을 금지할 필요가 있다. 그러므로 예외처리로딕크는 제거될 명령에 의한 레지스터파일에의 기입을 디스에이블한다. 또한 이와같은 명령의 레지스터파일에의 기입을 디스에이블에 하기위해 예외처리로딕크는 그 명령의 유효성 비트를 해소한다(즉 동명령을 무효화한다).
그런데 레지스터파일은 유효성 비트를 해제한 명령에 의해서 변경하는 일이 없게 된다. 또 유효성 비트는 페치단계에 있어서 각 명령에 부가되는 유효성 영역에 있어서의 명령유효비트와는 상이하다. 즉 비트는 SMU10의 각 단계에 대한 각 명령의 유효성(즉, 임의의 특정단계가 명령을 처리가능하냐 아니냐)을 나타내기 위해 명령에 부가한 1비트 코드이다. 파이프라인은 각 사이클에 진행되어지므로 다음 단계에서 선택되지 않은 명령은 겹쳐써져서 파이프라인에서 소실한다.
또 예외처리로딕크는 정수레지스터파일에의 기입을 방지할 뿐 아니라 예외명령과 그보다 낮은 우선도의 명령모드의 FPQ82에의 기입을 방지하고, 또 이들의 외부카슈파이프라인 302에의 송입을 방해한다. 더하여 예외처리로딕크는 예외상태의 존재를 나타낸 신호를 디스페치유니트 202에 보낸다. 그 결과 디스페치유니트 202는 동작의 재개가능이 알려지기까지 모든 명령의 발송을 정지한다.
또 실행단계 258에 부수한 프로그램카운터가 설비되어 있고, 카운터는 통지된 우선도코드를 사용하고, 또 프로그램코드 번호를 프로그램카운터에 부가함으로써 예외명령에 대응하는 프로그램코드 번호를 결정한다. 이 예외명령에 대응하는 프로그램코드 번호는 예외프로그램카운터(EPC)이다.
EPC는 명령버퍼 74와 명령카슈 70을 제어로딕크에 공급된다. 이 결과 명령버퍼 74는 다음의 명령으로서 예외명령을 지시하기까지 그 명령카운터를 진행시킨다.
정수실행유니트의 예외사태의 경우에는 IS70이 예외사태를 처리하기 위해서 예외처리 백터에서 명령을 집어낸다. 이와같이해서 예외처리 백터에서의 명령이 떨어져서 디스페치 처리의 준비가 갖추어지고, 디스페치유니트 202는 인출처리를 재개해서 예외사태를 처리한다. 그런데 예외처리가 완료되면 SMU10의(정상)동작이 재개된다. 어느 종류의 예외사태의 경우에 처리는 예외명령을 따라서 재개하고, 또 다른 종류의 경우에는 SMU10이 전혀 상이한 명령의 조합을 처리한다. 따라서 정수실행 유니트명령의 예외사태는 이 명령과 이것에 계속되는 명령의 작용을 제거하고 예외처리 백터명령의 발송 및 실행하고, 또한 동작을 재개함으로써 처리된다.
또, 예외처리로딕크가 TLB의 예외사태를 마찬가지로 처리한다. TLB의 예외사태는 TLB58이 어드레스 제네레이터 56에 의해서 발생되는 실효어드레스에 대응하는 물리어드레스를 룩엎하지 않은 때에 생긴다. SMU10에도 물리어드레스가 결정되나 이 처리에는 얼마인가의 사이클을 요한다. 여기서 TLB의 예외사태에 따라서 예외처리딕크는 TLB예외사태를 야기하는 명령을 예외명령으로서 인식한다. 그후에 예외명령 및 이것보다 낮은 우선도의 명령을 이것보다 높은 우선도의 명령을 실행완료함으로써 제거시킨다.
이 경우에 EPC명령버퍼 74에 대해서 TLB예외사태를 일으키는 명령에 대해서의 지시값을 통지한다. 이 결과 그 자체에 어떤 에러가 없어도 TLB의 예외사태의 경우에는 TLB의 재충진이 소프트웨어루팅에 의해서 처리된다. 그 후의 재충진처리가 완료되면 프로그램실행이 TLB의 예외사태로된 장소에서 재개된다. 또 이것에 대해서는 1993년 12월 5일 출원의 [가변페이지사이즈의 트란스레이숀 룩어사이드 버퍼]라 제명한 미국특허 출원을 참조바란다. 이 경우에 명령카운터는 TLB의 예외사태가 일어날 때의 명령에 대해서 단순히 지시해서 디스페치유니트 202에 이것을 조사시켜서 발송시킨다. 그 후에 TLB58의 준비가 갖추어지기까지 명령카운터는 이동하지 않고, 디스페치유니트 202가 연속적으로 명령을 발송계속한다. 그런데 물리어드레스가 유효하게되면 곳 정상동작이 개시된다.
또 예외처리로딕크는 부동소수점 실행에 있어서의 예외사태를 1회의 통지처를 따라서 정수유니트 실행의 예외사태와 마찬가지로 처리한다. 즉, 상술한 바와같이 SMU10은 부동소수점명령의 경우에 저정도예외 모델을 채용한다. 그러므로 예외사태가 생기면 프로그램카운터는 이 예외사태가 발생되는 명령을 지시 않는다. 따라서 부동소수점명령의 예외사태를 처리하기 위해서 예외처리로딕크가 프로그램카운터의 현재값과 예외사태의 종류를 통지한다.
이 결과 모든 명령이 제거되고, 디스페치유니트 202는 정수파이프라인 250을 프레슈 처리하고, IS70이 명령의 종류에 적합한 명령을 에러처리백터에서 집어낸다. 이 에러처리루칭은 부동소수점에러가 발생하는 명령에 대해서의 정보의 결핍을 마련할 필요가 있다. 부동소수점의 예외사태는 소프트웨어의 예외처리수단의 특정의 기능에 의존하나 일반적으로 프로그램의 실행을 끝내고 에러코드를 따라서 종료한다.
또 IS미스나 DS미스의 경우에는 에러는 전혀 생기지 않으나 이들은 예외사태가 처리되는 것과 동일방법, 즉 파이프라인이 프레슈되어서 새로운 명령이 나오는 식의 방법으로 처리된다. 단, IS미스에 대해서는 명령의 꺼내기가 새로운 IS라인이 발견되기까지 유보되고, 그 후에 명령의 대스페치처리를 재개한다. 또, DS미스의 경우에는 명령을 집어내기가 DS미스를 일으킨 명령때에 있어서는 신속하게 재개하거나 디스페치 처리는 새로운 DS라인의 발견되기까지 유보된다.
그런데 본 발명의 이점은 예외사태를 신속하게 (IS사이클이내에서) 결정하고 특정의 예외명령을 고정도로 인식하고, 또 보다 우선도가 높은 명령의 완수를 가능하게 하는 시스템기능에 의한 것이다. 다음에 표 3에 나타낸 명령의 흐름을 검토하겠다.
이들의 명령은 아주 우선도가 높은 것이 최상이 되는 것과 같이 배열되어 있다. 이중에서 디스페치유니트 202는 제1의 4개의 명령을 발송한다. 이중에서 4번째의 명령을 실행하는 과정에 있어서 DS미스가 발생된다. 이 경우에 예외처리로딕크는 1, 2, 3번째의 명령의 완수를 믿는다. 그 후에 4번째의 명령의 DS미스를 처리한 후에 디스페치유니트는 4번째의 명령뿐만아니고, 4, 5, 6 및 7번째의 명령을 발송한다. 그런데, DS예외사태후에는 디스페치 처리는 새로운 명령에서 시작되는 순번에 명령버퍼 74에서 끄집어낸다.
V. 결론
이상에서 본 발명은 슈퍼스칼라멀티프로세서에 있어서의 명령인출 및 예외처리에 있어서의 문제의 간단하고 고효율의 해소방법을 제공한다. 상기는 본 발명의 바람직한 실시예에 대해서의 완결된 설명이나 여러가지의 변경 및 등가의 태양의 사용이 가능하다. 예를들면 바람직하게 실시예에 있어서의 부동소수점 코프로세서의 사용에 대해서의 기재는 본 발명을 하나의 종류의 코프로세서만에 한정하는 것은 아니다.
즉 당업계에서 주지한 바와같이 다른 종의 코프로세서도 유효하다. 예를들면 부동소수점의 특정사양요소의 1부를 다른 종의 코프로세서에 전용하는 특정사양요소에 의해서 치환하는 것이 가능하다. 그러므로 상술의 기재는 본 발명의 범위를 한정하는 것은 아니다.
이상에서 본 발명은 슈퍼스칼라멀티프로세서에서의 명령인출 및 예외 처리의 문제를 간단하고 고효율로 해소하는 방법을 제공하는 것에 있다.

Claims (5)

  1. 명령데코드단계로 진행하기 전에 페치 처리된 명령에 제1의 영역 및 제2의 영역을 부가해서 페치 처리된 명령을 프레데코드 처리하는 단계에 있어서 상기 제1영역은 페치 처리된 명령에서 추출된 공급원정보를 함유하고 있고, 상기 제2영역은 페치 처리된 명령에 유사한 타이프의 명령에 의해서 사용되는 공급원의 종류를 식별하는 공급원류별화영역을 함유하고 있는 프레데코드처리와 그후에, 상기 페치 처리된 명령을 데코드명령을 생성하기 위해서 명령데코드 단계로 진행시킨 후에 이 명령을 디스페치 처리하는 단계로서 되고, 상기 디스페치 처리단계는 상기 제1영역 및 제2영역을 사용하고 데코드처리된 명령을 처리하는 기능유니트에 도입하는 것을 특징으로 하는 명령페치단계에 이어지는 명령데코드단계를 갖는 슈퍼스칼라마이크로프로세서를 위한 명령디스페치방법.
  2. 제1의 명령내의 제1의 상대위치에 위치하는 제1의 행선레지스터 정보영역을 제1명령에서 추하고, 상기 제1행선레지스터 정보영역을 제1명령에 관한 소정위치에 부가함으로써 데코드단계의 앞에 상기 제1명령을 프레데코드처리하는 단계와, 상기 제1상대위치란 상이한 제2상대위치에 위치하는 제2의 행선레지스터 정보영역을 제2의 명령에서 추출하고 상기 제2행선레지스터 정보영역을 제2명령에 관한 상기 소정위치에 부가함으로써 상기 데코드단계의 앞에 상기 제2명령을 프레데코드처리하는 단계와, 상기 데코드 단계에 있어서 상기 제1명령으로부터 제1의 공급원레지스터 정보영역을 추출하는 단계와, 상기 데코드 단계에 있어서 상기 제2명령에서 제2의 공급원레지스터 정보영역을 추출하는 단계, 그 후에 상기 제1레지스터행선정보영역과 상기 제2공급원레지스터 정보영역을 비교하는 단계와, 상기 제2레지스터행선정보영역과 상기 제1공급원레지스터 정보영역을 비교하는 단계로 되는 것을 특징으로하는 복수의 범용레지스터를 갖는 슈퍼스칼라마이크로프로세서의 파이프라인에 있어서의 데코드단계에 동시에 주기 붙어진 제1의 명령과 제2의 명령과의 사이에 있어서의 레지스터 경합에 대해서의 책크방법.
  3. 명령페치단계와 이 페치단계에 이어지는 명령 데코드단계와 이 명령데코드 단계에 이어진 다음 단계를 함유하고, 정수기능유니트 및 부동소수점 기능유니트를 갖는 슈퍼스칼라멀티치프형 마이크로프로세서에 있어서의 정수명령과 부동소수점명령을 디스페치 처리하는 방법에 있어서, (a) 정수명령을 페치 처리하는 단계와, (b) 부동소수점명령을 페치 처리하는 단계와, 그 후에 (c) 상기 정수명령에 제1의 값이 정수명령을 정수형의 명령으로서 식별하는 정보를 함유하고 있는 식별영역을 부가함으로써 정수명령을 상기 명령 데코드단계에 진행시키기 전에 상기 정수명령을 프레더코드 처리하는 단계로 되고, 또한 (d) 상기 부동소수점명령에 제2의 값이 부동소수점명령을 부동소수점형의 명령으로서 식별하는 정보를 함유하고 있는 식별영역을 부가함으로써 부동소수점명령을 상기 명령데코더 단계에 진행시키기 전에 부동소수점명령을 프레데코드 처리하는 단계로부터 되고, 그 후에 (e) 상기 명령데코드단계에서 정수형 명령만을 디스페치 처리하는 단계와, (f)상기 다음단계에서 부동소수점형 명령을 디스페치 처리하는 단계로 되는 것을 특징으로하는 정수명령과 부동소수점명령을 디스페치 처리하는 방법.
  4. 페치 단계, 데코드단계, 어드레스단계, 실행단계 및 데이타를 범용레지스터파일에 기입하는 레지스터라이트백 단계순의 5단계 파이프라인을 갖는 슈퍼스칼라마이크로프로세서를 위한 예외처리 방법에 있어서, 상기 실행단계에 있어서 동시 실행처리를 위해서 상기 슈퍼스칼라마이크로프로세서의 기능유니트에 복수명령의 각각이 복수명령 내의 다른 명령과 상이한 부수의 실행우선도 레벨을 갖는 상기 복수의 명령을 동시에 디스페치 처리하는 단계와, 그 후에 상기 실행단계에 있어서의 상기 복수명령중의 특정의 하나의 명령의 실행에 의해서 생기는 예외조건을 검출하는 단계와, 상기 복수의 명령의 어느것이나 상기 특정의 하나의 명령인가를 결정하는 단계와, 상기 특정의 하나의 명령에 복수하는 상기 우선도레벨을 결정하는 단계와 그후에 제거처리가 레지스터라이트백단계의 직후에 있어서의 범용레지스터파일에의 기입을 금지하는 제거처리를 함유한 상기 특정의 하나의 명령 및 특정의 하나의 명령에 부수의 우선도레벨보다 낮은 부수의 우선도레벨을 갖는 모든 명령을 제거하고 있는 상기 복수명령내에서 높은 우선도레벨의 명령의 상기 범용레지스터파일에의 기입을 레지스터라이트백단계의 직후에 허용된 부수의 우선도 레벨보다 높은 부수의 우선도레벨을 갖는 것을 완수하는 단계로 되는 것을 특징으로하는 슈퍼스칼라마이크로프로세서를 위한 예외처리 방법.
  5. 마이크로프로세서에 있어서의 디스페치유니트에 대해서 명령세트내에 있어서의 명령의 공급원요구를 식별하는 공급원식별타그를 제공하는 방법에 있어서, 서로에 배타적인 마이크로세서에 있어서의 공급원의 할당으로 제한에 대해서의 복수의 공급원분류를 특정하는 단계와, 상기 명령세트내의 각 명령을 상기 복수의 공급원분류내의 적당한 하나의 분류에 부수되는 단계와, 공통의 디스페치특성을 분배하는 상기 복수의 공급원분류내의 제1 및 제2의 공급원분류의 공급원분류의 세트를 식별하는 단계와, 상기 복수의 공급원분류의 각각에 대해서 특징적인 2값을 할당하는 단계로부터 되고, 상기 제1의 공급원 분류 및 제2의 공급원분류의 각각의 2값이 공급원세트를 식별하는 마스크패턴을 분배하고 상기 공급원세트내의 명령만이 상기 마스크파탄을 함유하는 것을 특징으로하는 공급원식별타그를 제공하는 방법.
KR1019950703431A 1993-12-15 1994-12-15 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인 KR0175116B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16809493A 1993-12-15 1993-12-15
US8/168094 1993-12-15
US08/168094 1993-12-15
PCT/JP1994/002108 WO1995016952A1 (en) 1993-12-15 1994-12-15 Superscalar microprocessor instruction pipeline including instruction dispatch and release control

Publications (2)

Publication Number Publication Date
KR960701399A KR960701399A (ko) 1996-02-24
KR0175116B1 true KR0175116B1 (ko) 1999-04-01

Family

ID=22610099

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019950703431A KR0175116B1 (ko) 1993-12-15 1994-12-15 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인

Country Status (8)

Country Link
EP (1) EP0690372B1 (ko)
JP (1) JP2815236B2 (ko)
KR (1) KR0175116B1 (ko)
CN (1) CN1068445C (ko)
DE (1) DE69435278D1 (ko)
HK (1) HK1016025A1 (ko)
TW (1) TW350046B (ko)
WO (1) WO1995016952A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100407013B1 (ko) * 2000-01-06 2003-11-28 인터내셔널 비지네스 머신즈 코포레이션 1차 및 2차 송출큐를 갖는 마이크로프로세서
KR100407014B1 (ko) * 2000-01-06 2003-11-28 인터내셔널 비지네스 머신즈 코포레이션 명령어 히스토리 정보를 갖는 기본 블럭 캐쉬마이크로프로세서

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870616A (en) * 1996-10-04 1999-02-09 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5805907A (en) * 1996-10-04 1998-09-08 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US6823448B2 (en) * 2000-12-15 2004-11-23 Intel Corporation Exception handling using an exception pipeline in a pipelined processor
US9201657B2 (en) * 2004-05-13 2015-12-01 Intel Corporation Lower power assembler
ES2702045T3 (es) 2013-05-16 2019-02-27 Koninklijke Philips Nv Método de operación de un molinillo
EP2866138B1 (en) 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures
CN104951283B (zh) * 2015-06-05 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 一种risc处理器的浮点处理单元集成电路及方法
CN110825436B (zh) * 2018-08-10 2022-04-29 昆仑芯(北京)科技有限公司 应用于人工智能芯片的计算方法和人工智能芯片

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS586971B2 (ja) * 1979-12-26 1983-02-07 株式会社日立製作所 演算処理装置
JPS5943440A (ja) * 1982-09-03 1984-03-10 Toshiba Corp 演算制御装置
US4879676A (en) * 1988-02-29 1989-11-07 Mips Computer Systems, Inc. Method and apparatus for precise floating point exceptions
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
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
JP2818249B2 (ja) * 1990-03-30 1998-10-30 株式会社東芝 電子計算機
JP2878792B2 (ja) * 1990-06-22 1999-04-05 株式会社東芝 電子計算機
JPH06110688A (ja) * 1991-06-13 1994-04-22 Internatl Business Mach Corp <Ibm> 複数の順序外れ命令を並行処理するためのコンピュータ・システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100407013B1 (ko) * 2000-01-06 2003-11-28 인터내셔널 비지네스 머신즈 코포레이션 1차 및 2차 송출큐를 갖는 마이크로프로세서
KR100407014B1 (ko) * 2000-01-06 2003-11-28 인터내셔널 비지네스 머신즈 코포레이션 명령어 히스토리 정보를 갖는 기본 블럭 캐쉬마이크로프로세서

Also Published As

Publication number Publication date
EP0690372B1 (en) 2010-03-03
CN1119473A (zh) 1996-03-27
KR960701399A (ko) 1996-02-24
EP0690372A1 (en) 1996-01-03
TW350046B (en) 1999-01-11
JP2815236B2 (ja) 1998-10-27
EP0690372A4 (en) 2000-05-03
WO1995016952A1 (en) 1995-06-22
HK1016025A1 (en) 1999-12-10
CN1068445C (zh) 2001-07-11
DE69435278D1 (de) 2010-04-22

Similar Documents

Publication Publication Date Title
KR100299691B1 (ko) 확장가능알아이에스씨마이크로프로세서구조
US5682492A (en) Computer processor with distributed pipeline control that allows functional units to complete operations out of order while maintaining precise interrupts
US5699537A (en) Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
KR100559482B1 (ko) 고성능 알아이에스씨 마이크로프로세서 구조
EP0547240B1 (en) Risc microprocessor architecture implementing fast trap and exception state
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US5611063A (en) Method for executing speculative load instructions in high-performance processors
EP0952517A2 (en) Microprocessors load/store functional units and data caches
US7418580B1 (en) Dynamic object-level code transaction for improved performance of a computer
US5784603A (en) Fast handling of branch delay slots on mispredicted branches
KR0175116B1 (ko) 명령 인출 및 해제제어를 함유한 슈퍼스칼라 마이크로프로세서명령파이프라인
JP3153906B2 (ja) コンピュータの分散型パイプライン制御装置及び方法
US5812812A (en) Method and system of implementing an early data dependency resolution mechanism in a high-performance data processing system utilizing out-of-order instruction issue
US5634136A (en) Data processor and method of controlling the same
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US6851044B1 (en) System and method for eliminating write backs with buffer for exception processing
US6157995A (en) Circuit and method for reducing data dependencies between instructions
KR20230038799A (ko) 전력 절약을 위한 레지스터 리네이밍
Wang et al. A general framework to build new CPUs by mapping abstract machine code to instruction level parallel execution hardware

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: 20121009

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20130927

Year of fee payment: 16

FPAY Annual fee payment

Payment date: 20141013

Year of fee payment: 17

EXPY Expiration of term