KR19980063924A - 마이크로프로세서에서 공유 데이터 경로를 통해 정수 및 부동소숫점 데이터를 통신하기 위한 장치 및 그 통신 방법 - Google Patents

마이크로프로세서에서 공유 데이터 경로를 통해 정수 및 부동소숫점 데이터를 통신하기 위한 장치 및 그 통신 방법 Download PDF

Info

Publication number
KR19980063924A
KR19980063924A KR1019970066937A KR19970066937A KR19980063924A KR 19980063924 A KR19980063924 A KR 19980063924A KR 1019970066937 A KR1019970066937 A KR 1019970066937A KR 19970066937 A KR19970066937 A KR 19970066937A KR 19980063924 A KR19980063924 A KR 19980063924A
Authority
KR
South Korea
Prior art keywords
floating point
integer
instruction
result
operand
Prior art date
Application number
KR1019970066937A
Other languages
English (en)
Other versions
KR100507415B1 (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 KR19980063924A publication Critical patent/KR19980063924A/ko
Application granted granted Critical
Publication of KR100507415B1 publication Critical patent/KR100507415B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Abstract

본 발명에 의한 마이크로프로세서는 인스트럭션을 동기적으로 실행한다. 이 인스트럭션은 정수 연산용 정수 인스트럭션과, 실수 연산용 부동 소숫점 인스트럭션을 포함한다. 인스트럭션 파이프라인은 정수 및 부동 소숫점 인스트럭션이 파이프라인내로 혼입되며, 각각의 인스트럭션을 병렬로 동기적으로 수행하기 위한 복수개의 연속 단계를 갖는다. 각각의 복수개의 연속 단계들은 복수개의 인스트럭션 개개를 동시에 연산한다. 정수 유닛은 정수 인스트럭션을 수행하고, 적어도 하나의 정수 피연산자 또는 정수 결과로 수행된 정수 연산에 따라 정수 결과를 형성한다. 부동 소숫점 유닛은 부동 소숫점 인스트럭션을 실행하고, 적어도 하나의 부동 소숫점 피연산자 또는 부동 소숫점 결과로 수행된 적어도 하나의 상기 부동 소숫점 연산에 기초하여 부동 소숫점 결과를 형성한다. 데이터 경로는, 정수 결과 또는 인스트럭션 파이프라인 정수 피연산자내의 복수개의 연속 단계들과, 부동 소숫점 결과 또는 부동 소숫점 피연산자 사이의 통신을 위하여, 부동 소숫점 유닛과 정수 유닛에 의해 공유된다.

Description

마이크로프로세서에서 공유 데이터 경로를 통해 정수 및 부동 소숫점 데이터를 통신하기 위한 장치 및 그 통신 방법
본 발명은 일반적으로 공유 데이터 경로(shared data path)를 통하여, 정수 및 부동 소숫점 데이터를 전송하는 마이크로프로세서 및 그 방법에 관한 것으로, 특히 정수 및 부동 소숫점 데이터를 집적화된 정수 유닛 및 부동 소숫점 유닛 각각에 통신하기 위한 공유 데이터 경로와, 복수개의 파이프라인 단계들(pipeline stages)을 갖는 마이크로프로세서에 관한 것이다.
정수 인스트럭션(instruction) 및 실수 인스트럭션의 개별 처리는, 통상 사이클당 실행된 프로그램 인스트럭션의 수로서 측정된 바와 같이 전체의 처리 속도를 감소시킨다. 이것은 정수 처리와 달리, 실수를 처리하는데, 정확성이 요구됨과 동시에 그 복잡성도 증가하기 때문이다. 게다가, 실수 및 정수는 내부 기계 표기법(internal machine notation)에 대하여 개개의 형태로 표시된다. 부동 소숫점(floating point) 표기법은 실수를 표시하기 위해 이용되는데, 이와 다른 포맷도 가능하지만, 통상적으로 부호 비트, 지수 및 소수부를 포함한다. 2개의 보수 표기법 및 1개의 보수 표기법은 정수를 표시하기 위해 이용되는데, 이와 다른 포맷도 가능하지만, 통상적으로 부호 비트 및 절대값을 포함한다. 이처럼 구분되는 표기법은 효율적인 마이크로프로세서 디자인에 대해 복잡한 추가의 계층(layer)을 필요로 한다.
마이크로프로세서의 전형적인 중앙 처리 유닛(CPU)은, 비록 전용 하드웨어가 정수의 곱셈 및 나눗셈을 처리하는데 종종 이용된다 할지라도, 정수 인스트럭션 및 일세트의 범용 레지스터를 수행하는 산술 논리 유닛(arithmetic logic unit: ALU 또한, 이를 정수 유닛(IU)이라 칭한다)을 포함한다. 덧셈 또는 뺄셈과 같은 단순한 정수 산술 인스트럭션은 통상 단일 기계 사이클로서 종료된다. 내부 표기법의 차이점에도 불구하고, IU 또한, 1993년 5월. PP 6∼7, 마이크로프로세서 리포트, MIPS R4200 및 1994년 8월. PP1∼37, MIPS 컴퓨터 인코오포레이티드, R4200 Preliminary Datasheet Rev. 1.4, R4200 MICROPROCESSOR에 개시된 바와 같은 부동 소숫점 인스트럭션을 처리하는데 이용된다. 부동 소숫점 및 정수 표시 사이에서의 변환은 필요하지 않지만, 단지 부동 소숫점 연산 처리가 IU 연산 처리 보다 길기 때문에, 그 성능이 떨어지게 된다.
콜웰등의 미국 특허 번호 제5,179,680호, 이시다의 미국 특허 번호 제5,226,166호 및 제5,293,500호에 개시된 바와 같이, 전용 부동 소숫점 유닛(FPU)이부동 소숫점 인스트럭션을, 정수 인스트럭션과 함께 병렬로 처리하는데 있어 선택적으로 적용된다. 하지만, 이러한 형태의 FPU는 IU와 FPU 사이에 있는 부동 소숫점 피연산자를 통신하기 위한 분리된 데이터 경로를 필요로 한다. 게다가, FPU의 인스트럭션의 처리는 IU의 인스트럭션의 처리에 동기되어야 하므로, 추가의 연산에 대한 복잡성 및 지연이 수반된다.
따라서, 본 발명의 목적은 종래 기술의 단점을 극복하기 위하여, 정수 데이터 및 부동 소숫점 데이터를 공유 데이터 경로 시스템으로 통신하기 위한 마이크로프로세서 및 그 방법을 제공함에 있다.
도 1은 본 발명의 공유 데이터 경로가 적용된 마이크로프로세서의 기능 블록도.
도 2는 인스트럭션 파이프라인의 블록도.
도 3은 공유 데이터 경로에 관한 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
9 : 마이크로프로세서
10 : 유닛/부동 소숫점 제어기
11 : 인스트럭션 파이프라인
22 : 부동 소숫점 유닛
23 : 부동 소숫점 산술 논리 유닛
24 : 부동 소숫점 곱셈 유닛
25 : 부동 소숫점 나눗셈 및 제곱근 유닛
26 : 제2 레지스터 화일
27 : 정수 유닛
본 발명의 일실시예는 인스트럭션(instruction)을 동기적으로 실행하기 위한 마이크로프로세서이다. 그 인스트럭션은 정수 연산을 수행하기 위한 정수 인스트럭션과, 실수 연산을 수행하기 위한 부동 소숫점 인스트럭션을 포함한다. 인스트럭션 파이프라인은 복수개의 인스트럭션을 동기적으로 처리하기 위한 연속 단계들(successive stages)을 갖는다. 각각의 복수개의 연속 단계들은 인스트럭션 중 개개의 것을 동시에 연산한다. 본 발명에 있어서, 정수 인스트럭션 및 부동 소숫점 인스트럭션은 파이프라인내에 혼입(intermix)된다. 정수 유닛은 정수 인스트럭션을 실행함과 동시에 정수 인스트럭션 각각에 대하여 정수 결과를 형성한다. 부동 소숫점 유닛은 부동 소숫점 인스트럭션을 실행함과 동시에 부동 소숫점 인스트럭션 각각에 대하여 부동 소숫점 결과를 형성한다. 데이터 경로는, 인스트럭션 파이프라인 형태의 복수개의 연속 단계들 사이에 있는 데이터를 통신하기 위하여, 정수 유닛과 부동 소숫점 유닛에 의해 공유 된다.
본 발명의 또 다른 실시예는 프로그램 인스트럭션을 파이프라인식으로 처리하기 위한 마이크로프로세서이다. 프로그램 인스트럭션 각각은 정수 프로그램 인스트럭션 또는 부동 소숫점 프로그램 인스트럭션 중 하나를 포함한다. 회로는, 복수개의 프로그램 인스트럭션을 동시에 처리하며, 적어도 하나의 정수 피연산자(integer operand)로부터의 정수 결과를 형성하도록, 정수 인스트럭션을 실행하며, 적어도 하나의 부동 소숫점 피연산자로부터, 부동 소숫점 결과를 형성하도록, 부동 소숫점 인스트럭션을 실행하며, 적어도 하나의 정수 피연산자와 정수 유닛의 정수 결과를 통신하며 그리고, 부동 소숫점 결과와 적어도 하나의 부동 소숫점 피연산자를, 부동 소숫점 유닛으로 통신하기 위하여 제공되는 것이다.
본 발명의 다른 일실시예는 정수값과 부동 소숫값 각각을, 마이크로프로세서내의 공유 데이터 경로를 통하여 통신하기 위한 방법이다. 각각의 정수값은 적어도 하나의 정수 피연산자와 정수 결과를 포함한다. 부동 소숫값 각각은 부동 소숫점 피연산자 중 적어도 하나와 하나의 부동 소숫점 결과를 포함한다. 상기 방법은 인스트럭션을 마이크로프로세서에 제공하는 단계들을 포함한다. 이 인스트럭션은 정수 인스트럭션 또는 부동 소숫점 인스트럭션 중 하나이다. 인스트럭션이 실행을 목적으로 그 형태에 따라, 정수 유닛 또는 부동 소숫점 유닛을 향하여 배출(issue)하게 된다. 일반적으로, 배출된 인스트럭션이 정수 인스트럭션일 경우, 그 인스트럭션은 정수 유닛의 이용에 의해 실행되어 정수 결과를 형성한다. 하지만, 배출된 인스트럭션이 정수의 곱셈일 경우, 부동 소숫점 곱셈 유닛에 의해 실행되며, 배출된 인스트럭션이 정수 나눗셈일 경우, 정수 나눗셈 유닛에 의해 실행된다. 배출된 인스트럭션이 부동 소숫점 인스트럭션일 경우, 부동 소숫점 유닛에 의해 실행되어 부동 소숫점 결과를 형성한다. 정수 결과 또는 부동 소숫점 결과는 공유 데이터 경로를 통하여 통신된다. 당업자라면 본 발명의 일실시예의 상세한 설명에 따라 명백하게 이해할 수 있을 것이다. 본 발명을 수행하기 위한 최적으로 고려된 설명을 통하여 본 발명의 일실시예가 이하에 기술된다. 한편, 본 발명은 이와 다른 개별의 실시예가 가능하며, 본 발명의 실시예 및 그 사상을 벗어나지 않는 범위내에서, 이하의 수개의 상세들은 다양한 관점에서 변경될 수 있다. 따라서, 도면 및 상세한 설명들은 본 발명을 제한하는 것이 아니라, 단순히 본 발명의 이해를 위해 제공된 것으로서 간주되어야만 한다.
Ⅰ. 마이크로프로세서
도 1은 본 발명의 공유 데이터 경로가 적용된 마이크로프로세서(9)의 기능 블록도이다. 마이크로프로세서(9)는 서로 결합되어 있는 정수 유닛/부동 소숫점 제어기(IU/FPC)(10)와, 개개의 부동 소숫점 유닛(FPU)(22)들을 포함한다. 마이크로프로세서(9)는 SPARC(상표등록명) 아키텍쳐에 따라 디자인된 RISC(Reduced Instruction Set Computer ; 축소된 인스트럭션 세트 컴퓨터)를 이용한 단일 인스트럭션 배출 프로세서이며, 마이크로프로세서(9)가 다중 프로그램 인스트럭션을 동시에 처리하는 것을 가능하게한 논리 인스트럭션 파이프라인(11)을 갖는다.
SPARC(상표등록명)는 캘리포니아 멘로 파크, SPARC 인터내쇼널 인코오포레이티드의 상표 등록명이다. SPARC(상표등록명) RISC 아키텍쳐에 관한 범용 정보는 1992년 SPARC 인터내쇼널 인코오포레이티드 SPARC 아키텍쳐 매뉴얼 버젼 8에 개시되어 있다. 본 발명은 이를 참조로 한다. 각각의 기계 사이클 동안, 인스트럭션 파이프라인(11)에서의 처리가 종료될때까지, 새로운 프로그램 인스트럭션이 수신된다. 결국, 각각의 프로그램 인스트럭션의 처리가, 이미 인스트럭션 파이프라인에 있는 다른 프로그램 인스트럭션과 함께, 시간상으로 서로 중첩되어, 전체의 처리 속도를 증가시킨다.
RISC 디자인은 일반적으로 억세스 메모리용 로드 및 저장 인스트럭션과, 산술 및 논리 인스트럭션에 대한 가용 프로그램 인스트럭션을 제한한다. 마이크로프로세서(9)에서, 프로그램 인스트럭션 포맷은, 32비트 메모리 경계로 할당되어 있으며, 균일한 배열의 연산 코드(opcode) 및 레지스터 어드레스부(register address field)를 포함한다. 더우기, 마이크로프로세서(9)는 하바드(HARVARD(Aiken)) 메모리 아키텍쳐를 적용하여, 인스트럭션 및 프로그램 데이터를, 프로그램 인스트럭션을 저장하기 위한 인스트럭션 캐시(도시하지 않음)와, 프로그램 데이터를 저장하기 위한 데이터 캐시(도시하지 않음)로 분할한다.
이제, 도 1 및 도 2를 참조하면, 정수 및 부동 소숫점 인스트럭션은 마이크로프로세서(9)내에 집적된 개개의 기능성 유닛에 의해 각각 처리된다. 그 중, IU/FPC(10)내에 집적된 정수 유닛(IU)(27)은 정수 인스트럭션을 처리하고, FPU(22)는 부동 소숫점 인스트럭션을 처리한다. 비록, IU/FPC(10)내에 또한 집적된 부동 소숫점 제어기(FPC)(28)가, IU/FPC(10)과 FPU(22) 사이의 부동 소숫점 인스트럭션의 디스페치(dispatch), 동기(synchronization) 및 종료(completion)를 제어한다 할지라도, FPU(22)는 IU/FPC(10)으로부터 개개의 기능 유닛으로서 부동 소숫점 인스트럭션을 실행한다. IU(27)는 정수 인스트럭션을 실행하도록 범용 레지스터(도시하지 않음)를 포함하며, 로드 및 저장된 메모리 어드레스를 산출하며, 프로그램 카운터(PC)(도시하지 않음)를 유지함에 의해, 마이크로프로세서(9)의 모든 연산을 제어한다. 도 2에 나타낸 바와 같이, IU(27)는 첫번째, 7개의 논리 단계로서 논리 인스트럭션 파이프라인(11)에는 이슈(12), 페치(13), 디코드(14), 실행(15), 메모리(16), 지연(17) 및 기록(18)을 포함하며, FPC(28)은 마지막, 5개의 논리 단계로서, 인스트럭션 파이프라인(17)에는 메모리(16), 지연(17), 기록(18), FP 지연(19) 및 FP 기록(20)을 포함한다. 메모리(16), 지연(17) 및 기록(18)(도 2에서 27'-28'로 병기됨)은 IU(27)과 FPC(28) 둘다의 일부에 속하고 있음에 주목하여야 한다. FPU(22)는 3개의 독립적인 서브유닛으로 구성된다. 부동 소숫점 산술 논리 유닛(FP-ALU)(23)은 부동 소숫점 덧셈, 뺄셈, 비교 및 변환 인스트럭션을 수행한다. 부동 소숫점 승산기(FP-MUL)(24)는 부동 소숫점 곱셈을 수행한다. 부동 소숫점 나눗셈/제곱근 유닛(FP-CIV/SQRT)(25)은 부동 소숫점 나눗셈과 제곱근 산출을 수행한다. 본 발명의 일실시예에 있어서, FP-ALU(23) 및 FP-MUL(24)는 피연산자 타입에 무관한, 약 3.5 기계 사이클이 되는 부동 소숫점을 생성하고, FP-DIV/SQRT(25)는 약 25 기계 사이클이 되는 부동 소숫점을 생성한다.
Ⅱ. 인스트럭션 파이프라인
9 단계의 논리 인스트럭션 파이프라인(11)은 IU/FPC(10)에 집적되어, 다중 프로그램 인스트럭션을 동시에 처리한다. 인스트럭션 파이프라인(11)은 정수 및 부동 소숫점 인스트럭션을, 동기 방식으로 병렬 처리함으로써, 전체의 처리 속도를 증가시킨다. 데이터 값은 정지 또는 지연의 생성 없이 순방향 전송되기 때문에, 피연산자, 결과값 및 바이패스 경로는 마이크로프로세서(9)로 하여금 피연산자 타입에 무관하게, 사이클당 약 1 인스트럭션을 완성하게끔 한다. 게다가, 각각의 정수 및 부동 소숫점 인스트럭션은 중간값을 산출하는 입력으로서, 동시에 결과를 생성하는 출력으로서, 적어도 1 개의 피연산자를 필요로한다. 이러한 값들은 특정 파이프라인 단계에 의존하는 피연산자, 결과 또는 바이패스 데이터 경로를 따라 모두 전송될 수 있다. 인스트럭션 파이프라인(11)의 단계들은 이하의 설명과 같다.
(1)이슈(ISSUE)단계(12)
이 단계는, 프로그램 카운터(PC)(도시하지 않음)를 통하여, 디코드 단계(14) 또는 실행 단계(15) 중 어느 하나로부터 인스트럭션 가상 어드레스(instruction virtual address) IVA[31:2]를 수신함에 의해, 프로그램 인스트럭션을 배출하며, IVA[31:2]를 인스트럭션 캐시(도시하지 않음)로 전송한다.
(2)페치(FETCH)단계(13)
이 단계는, 프로그램 인스트럭션 룩업(look up)을 수행하며, 한쌍의 32비트 프로그램 인스트럭션 ID[63:0]을 수신하여, 프로그램 인스트럭션을 인스트럭션 캐시(도시하지 않음)로부터, 프리페치 버퍼(도시하지 않음)로 페치한다. 이것은 브랜치 프로그램 인스트럭션용 1 사이클 페널티(penalty)를 피할 수 있다.
(3)디코드(DECODE)단계(14)
이 단계는, 페치 단계(13)로부터 프로그램 인스트럭션을 수신하여 한쌍의 정수 피연산자를 생성하도록, 단일 프로그램 인스트럭션을 디코딩하여, 2 개의 정수 피연산자 %rs1 및 %rs2를 생성한다. 이들 피연산자들은 IU 레지스터 화일(21)로부터 판독되거나 실행(15), 메모리(16), 지연(17) 또는 기록(18)으로 전송된다. IU 레지스터 화일(21)은 정수 피연산자를 일시적으로 저장하는데 이용된다.
(4)실행(EXECUTE)단계(15)
이 단계는, 프로그램 인스트럭션을 실행하고, 정수 산출을 수행한다. 실행 단계(15)는 IU 산술 논리 유닛(IU-ALU)(도시하지 않음) 및 32-비트 좌·우측 시프터(도시하지 않음)를 포함한다. 이 시프터 및 IU-ALU는 정수 산술 인스트럭션을 실행하는 반면에, 부동 소숫점 승산기(24)는 정수 곱셈을 수행한다. 특히, IU-ALU는 가산 및 논리 앤드(AND), 오아(OR) 및 익스쿠르시브 오아(Exclusive OR : XOR) 인스트럭션을 수행한다. 인스트럭션 가상 어드레스 IVA[31:0]는 PC(도시하지 않음)로 디스페치되며, 데이터 가상 어드레스 DVA[31:0]는 데이터 캐시(도시하지 않음)로 디스페치된다. 실행 단계(15) 또한 모든 부동 소숫점 인스트럭션을, 이하에 추가로 설명한 바와 같은 부동 소숫점 유닛(FPU)으로 배출된다.
(5)메모리(MEMORY)단계(16)
이 단계는, 프로그램 인스트럭션 실행 단계로부터의 결과를 저장하거나, FPU(22)의 인스트럭션 파이프라인(11)과, 데이터 캐시(도시하지 않음) 사이의 64 비트의 데이터를 수신 및 전송함에 의해, IU LOAD 인스트럭션, IU STORE 인스트럭션, FPU LOAD 인스트럭션 또는 FPU STORE 인스트럭션을 수행한다. LOAD 인스트럭션 동안, 캐시 히트(hit) 또는 캐시 미스(miss)를 위해 캐시 태그(tag)가 체크된다. 저장(STORE) 인스트럭션 동안, 모든 데이터는 저장 정렬기(data aligner)에 의해 정렬되며, 빈공간이 나타날때에, 데이터 캐시로 기록하기 위해 저장-데이터-유지 레지스터(도시하지 않음)로 공급된다.
(6)지연(DEFER)단계(17)
이 단계는, 비정상 상태(폴트(fault))의 로드(LOAD) 인스트럭션의 결과로서, IU 레지스터 화일(21)로 공급되고 있는 기록(WRITE) 데이터를 삭제하는 기회를 제공함에 의해, 인스트럭션 실행의 동기성을 보조한다.
(7)기록(WRITE)단계(18)
이 단계는, 지연(DEFER) 단계(17)로부터의 정수 결과를 수신하며, 이를 IU 레지스터 화일(21)로 기록함에 의해 정수 결과를 기록한다. 게다가, 부동 소숫점 나눗셈 및 제곱근 인스트럭션은 전용 부동 소숫점 나눗셈 또는 제곱근 홀딩 슬롯(도시하지 않음)으로 공급된다.
(8)부동 소숫점 지연(FP-DEFER)단계(19)
이 단계는, 산술 및 곱셈 연산을 포함하는 모든 부동 소숫점 인스트럭션의 종료(complete)를 동기시킨다. 게다가, 어떤 공급된 부동 소숫점 나눗셈 또는 제곱근 인스트럭션 또한 종료된다. 산술, 논리 및 곱셈 인스트럭션은 인스트럭션 파이프라인(11)의 동기에서 4개의 사이클로 종료되는 반면에, 나눗셈 및 제곱근 인스트럭션은 약 25 사이클로 종료된다.
(9)부동 소숫점 기록(FP-WRITE)단계(20)
이 단계는, 부동 소숫점 결과를 기록한다. FP 레지스터 화일(26)로 공급된 임의의 부동 소숫점 기록(WRITE) 인스트럭션이 기록되며, 또한 임의의 폴팅(faulting) 부동 소숫점 인스트럭션은 부동 소숫점 폴트 대기열(fault queue)로 삽입된다. 부동 소숫점 상태 레지스터 또한 업데이트된다.
정수 및 부동 소숫점 인스트럭션 사이의 동기성을 달성하고, 전체의 인스트럭션 처리 속도를 증대하기 위하여, 마이크로프로세서(9)는 IU/FPC(11)과 FPU(22) 사이의 정수 및 부동 소숫점 데이터를 통신하기 위한 공유 데이터 경로(shared data path)를 포함한다. 2개의 IU(27) 및 FPU(22)는 데이터 경로를 필요로한다. 이 경로에는 각 단계들의 인스트럭션 파이프라인(11) 사이에서, 피연산자 및 결과들을 전송하기 위한 바이패스 경로가 포함된다. 이하에서 설명되는 바와 같이, 이들 데이터 경로의 특정 섹션은 기록 단계(18)를 통하여, 메모리 단계(16) 사이에 공유된다. 부동 소숫점 인스트럭션은 FP 기록 단계(20)를 통하여 디코드 단계(14)에서 처리된다. 모든 부동 소숫점 인스트럭션은 디코드 단계(14)에서 구조성 및 피연산자의 위험성(hazard)에 대하여 테스트된다. 부동 소숫점 인스트럭션 피연산자는 실행 단계(15)내에 있는 FP 레지스터 화일로부터 모이게 된다. 부동 소숫점 제어기(FPC)(28)는 FP 기록 단계(20)를 통하여 디코드 단계(17)에서 동작하며, FPU(22)로의 피연산자와 부동 소숫점 인스트럭션의 디스페치와, FPU(22)로부터의 부동 소숫점 결과의 수신을 정합함에 의해, FPU(22)의 동작을 제어한다. 부동 소숫점 인스트럭션은 메모리 단계(16)를 개시하는 FPU(22)에 의해 실행되며, 약 25 사이클로 종료하는 부동 소숫점 나눗셈 및 제곱근 인스트럭션을 제외하고는, 약 3.5 사이클로 FP 지연 단계(19)후에 종료된다. 부동 소숫점 결과는 FP 기록 단계(20)내의 FP 레지스터 화일에 기록된다. FP 레지스터 화일 또는 3 개의 엔트리 부동 소숫점 폴트 대기열 중 하나는 부동 소숫점 상태 레지스터(FSR)를 따라, FP 기록 단계(20) 동안에 기록된다.
FPC(28)는 사이클 마다 1 개의 부동 소숫점 인스트럭션을 배출한다. 모든 부동 소숫점 카피 및 로드 인스트럭션은 메모리 단계(16)에서 종료하는 반면에, 부동 소숫점 결과는, 추가로 이하에서 설명되어지는 바와 같이, 공유 데이터 경로를 이용하는 인스트럭션 파이프라인(11)을 통하여, FP 지연 단계(19)로 파이프라인 전송된다. FP-ALU(23) 및 FP-MUL(24)에 대한 부동 소숫점 인스트럭션은, 정상 또는 비정상 피연산자의 결과와는 무관하게, FP 지연 단계(19)에서 종료하게 되지만, FP-DIV/SQRT(25)에 대한 부동 소숫점 인스트럭션은 메모리 단계(16), 지연 단계(17) 및 기록 단계(18) 동안 파이프라인 전송된다. 이후에, 이러한 인스트럭션은 FP-DIV/SQRT 홀딩 슬롯(도시하지 않음)에 진입된다. 전술한 바와 같이, 부동 소숫점 피연산자는 실행 단계(15) 동안 모이게 되며, 부동 소숫점 인스트럭션 실행은 메모리 단계(16) 동안 개시한다. FPU(22)는 32비트(단일 워드) 또는 64 비트(이중 워드) 값 중 하나를 동작시킬 수 있기 때문에, FPU(22)내의 데이터 경로는 64 비트 폭을 갖는다. 단일 워드 피연산자는 레지스터 수에 따라, 피연산자 및 바이패스 데이터 경로로 정렬된다. 특히, 부동 소숫점 레지스터 %f0(도시하지 않음)로 공급되고 있는 단일 워드는, 부동 소숫점 레지스터 %f25(도시하지 않음)로부터 판독되고 있는 단일 워드가 비트[31:0]를 이용하고 있을 동안에만 비트[63:32]를 이용한다. 부동 소숫점 피연산자 2(비트[63:32])에 대한 바이패스 데이터 경로는 부동 소숫점 피연산자 1(비트[31:0])에 대한 바이패스 데이터 경로로부터 분리되는데, 2개의 개별적인 32 비트 값이 1 개의 64 비트 피연산자를 형성하도록 조합될 수 있으며, 단일 64 비트 값이 2 개의 분리된 32 비트 피연산자로서 이용될 수 있기 때문이다. 2개의 정수 및 부동 소숫점 저장 인스트럭션에 대한 데이터가 실행 단계(15)에서 모이기 때문에, IU(27) 및 FPU(22)는 이하의 도 3에서 설명되어지는 바와 같이, 32-비트 바이패스 데이터 경로를 피연산자 2[31:0]에 대하여 공유할 수 있다.
Ⅲ. 공유 피연산자 데이터 경로
전술한 바와 같이, 정수 인스트럭션은 통상의 실행 단계(15) 동안 1 사이클로 종료된다. 하지만, 결과는, 3 개 단계 후의 기록 단계(18)가 될때까지 저장되지 않는다. 부동 소숫점 인스트럭션은 3.5 사이클 이내로 메모리 단계(16)에서 시작하여, 마지막 FP 지연 단계(19)에서 종료된다. 결국, 정수 및 부동 소숫점 인스트럭션 처리는 3 개의 단계 즉, 메모리 단계(16), 지연 단계(17) 및 기록 단계(18) 동안 중첩하게 된다(도 2에 도시됨).
도 3은 IU(27)과 FPU(22)에 대한 공유 데이터 경로에 관한 도면이다.
도 3에 도시된 회로에는 인스트럭션 파이프라인에 의해 이용되는 중첩 데이터 경로를 제외한, 9 개의 분리 경로가 도시되어 있다. 도시된 모든 라인은 32 비트 폭을 갖는다. 5 개의 데이터 경로는 정수 인스트럭션을 처리하는데 이용되며, 4 개의 데이터 경로는 부동 소숫점 인스트럭션을 처리하는데 이용된다. 본 발명의 바람직한 일실시예에 있어서, 인스트럭션 파이프라인 각 단계에서 존재하는 데이터는 정수 데이터 또는 부동 소숫점 데이터중 어느 하나일 것이다.
A.정수 산술 및 논리 인스트럭션용 데이터 경로
제1 멀티플렉서(MUX)(30)는 정수 피연산자 1 용 입력 데이터를 선택한다. 제2 멀티플렉서(MUX)(32)는 정수 피연산자 2 용 입력 데이터를 선택한다. 하지만, 입력 경로는 제2 멀티플렉서(32)의 입력 경로 각각의 피연산자에 대해 유사하며, 이와 접속된 바이패스 회로(이하에 설명됨)는 도시의 간단화를 위하여 도 3에서 생략되었으며, 이하에서도 그 설명을 생략한다. 입력 데이터는 바이패스 경로로 부터의 데이터와, 실행되고 있는 인스트럭션의 2개의 피연산자부로부터의 데이터를 포함한다.
엔코드 단계(14) 동안, 제1 멀티플렉서(30)의 입력은 라인(34)을 통하여 IU 레지스터 화일(21)로부터의 32-비트 값, 처리되고 있는 정수 인스트럭션의 선택된 부(field)에 의해 특정화된 라인(36)의 제로 피연산자 또는 중간값, 또는 가장 최근에 생성된 정수 결과를 갖는 라인(38)상의 바이패스 정수 피연산자를 포함한다. 바이패스 회로는 이하에 상세하게 설명된다. 제어 라인(도시하지 않음)은 제1 멀티플렉서(30)의 어느 입력이 라인(42)을 통하여 제3 멀티플렉서(40)으로 전송하는지를 선택한다. 제3 멀티플렉서(40)는 제1 멀티플렉서(30)의 출력과 데이터 캐시(도시하지 않음)로부터의 데이터 중 하나를 입력으로서 취한다. 데이터 캐시로부터의 데이터는 라인(41)에 도달되며, 로드 정렬기(43)에 의해 처리된다. 로드 정렬기(43)는 선택된 워드상의 데이터 캐시로부터의 데이터와, IU ALU(50)에 의해 요구된 바이트 경계를 정렬하며, 그 데이터를 라인(84)을 통하여 제3 멀티플렉서(40)로 전송시킨다. 제3 멀티플렉서(40)는 선택된 정수 피연산자 1를 전송시키고, 이 피연산자는 제1 실행 레지스터(44)에 저장된다. 이와 유사하게, 제2 멀티플렉서(32)는 라인(48)상의 제4 멀티플렉서(46)를 통하여 제2 실행 레지스터(48)로 전송하기 위한 정수 피연산자 2를 선택한다.
실행 단계(15) 동안, 정수 피연산자는 제1 실행 레지스터(44)로부터 페치됨과 동시에, 제2 실행 레지스터(48)로부터 페치되며, 정수 유닛 산술 논리 유닛(IU ALU)(50)은 2개의 정수 피연산자의 산술 또는 논리 연산을 수행한다. 연산의 정수 결과는 라인(52)을 통하여 제5 멀티플렉서(54)로 항상 전송되며, 제1 메모리 레지스터(56)에 저장되며 그 뿐만 아니라, 라인(58)을 경유하여 정수 피연산자 1의 바이패스 경로에도 제공될 수 있다. 정수 피연산자 1의 바이패스 경로는 제6 멀티플렉서(60)로 향하는 라인(58)상의 IU ALU(50)의 출력을 포함한다. 만일, 디코드 단계(14) 동안 처리되고 있는 인스트럭션이, IU 레지스터 화일(21)로 다시 기록되지 않고, 실행 단계(15)에서 단지 업데이트(update)된 IU 레지스터 화일(21)로부터의 피연산자를 필요로할 경우, 이러한 피연산자는 설명한 바와 같이, 디코드 단계 회로로 다시 전송하게 된다. 이러한 경로는 제6 멀티플렉서와 제1 멀티플렉서(42)를 접속하고 있는 라인(38)으로 도시되어 있다.
메모리 단계(16) 동안, 정수 결과는 제1 메모리 레지스터(56)로부터 제7 멀티플렉서(62)로 라인(64)을 통하여 전송되며, 이후에 라인(68)을 통하여 제8 멀티플렉서(66)로 전송된다. 메모리 단계(16) 동안, 정수 결과가 정수 피연산자 1 로서 요구될 경우, 정수 결과를 라인(70)을 통하여 제9 멀티플렉서(72)로 전송하고, 이후에 라인(74)을 통하여 제6 멀티플렉서(60)로 전송됨에 의해, 그 결과는 제1 정수 피연산자 바이패스 경로상으로 전송된다. 정수 결과는 항상 제1 지연 레지스터(76)로 기록된다.
기록 단계(18) 동안, 정수 결과는 라인(80)상의 제10 멀티플렉서(78)를 통하여 제1 지연 레지스터(76)로부터 IU 레지스터 화일(21)로 전송된다. 만일, 기록 단계(18) 동안 정수 결과가 정수 피연산자 1로 요구될 경우, 이후에 라인(82)상의 정수 결과가 제9 멀티플렉서(72)로 전송됨에 의해, 그 결과는 정수 피연산자 1의 바이패스 경로로 전송하게 된다.
B.로드 정수 인스트럭션용 데이터 경로
인스트럭션 파이프라인에 의해 처리되고 있는 인스트럭션이 로드 정수 인스트럭션(예컨대, 데이터 캐시로부터의 정수 데이터로서 IU 레지스터 화일(21)에서의 레지스터의 로드)일 경우, 피연산자의 생성 처리는 일반적으로 산술 또는 논리 인스트럭션에 대한 것과 동일하다. 하지만, 산술 또는 논리 연산을 수행하는 대신에, IU ALU(50)는 선택된 레지스터로 로드되고 있는 데이터의 어드레스를 산출한다. 어드레스 및 레지스터 정보는 라인(34)과 정수 피연산자 2(도시하지 않음)용 라인상의 인스트럭션으로부터 획득된 직접 피연산자(immediate operand)이다.
디코드 단계(14) 동안, 정수 피연산자는 전술한 바와 같이 결정된다. 실행 단계(15) 동안, IU ALU는 로드되는 데이터의 데이터 캐시내에 있는 어드레스를 산출한다. 어드레스는 도 3에 도시하지 않은 경로를 통하여 데이터 캐시로 전송된다. 메모리 단계(16) 동안, 로드 정렬기(43)는 라인(41)을 통하여 데이터 캐시로부터 IU ALU에 의해 산출된 어드레스로 어드레스된 데이터를 수용하며, 이 데이터를 라인(86)을 통하여 제8 멀티플렉서(66)로 전송시킨다. 이후에, 이 데이터는 제1 지연 레지스터(76)에 저장된다. 기록 단계(18) 동안, 데이터는 제10 멀티플렉서(78)를 통하여, 라인(80)상의 IU 레지스터 화일(21)의 선택된 레지스터로 전송된다.
C.정수 인스트럭션 저장용 데이터 경로
인스트럭션 파이프라인에 의해 처리되는 인스트럭션이 저장 정수 인스트럭션(예컨대, IU 레지스터 화일(21)내의 레지스터로부터 데이터 캐시내의 메모리 위치로 정수 데이터를 저장하는 것)일 경우, 피연산자 생성 처리는 일반적으로 산술 또는 논리 인스트럭션과 동일하다. 하지만, 산술 또는 논리 연산을 수행하는 대신에, IU ALU(50)은 데이터 캐시로 저장되는 데이터의 어드레스를 산출한다. 어드레스 및 레지스터 정보는 라인(34)과 정수 피연산자 2(도시하지 않음)용 라인상의 인스트럭션으로부터 획득된 직접 피연산자이다.
디코드 단계(14) 동안, 정수 피연산자는 전술한 바와 같이 결정된다. 실행 단계(15) 동안, IU ALU는 저장되는 데이터에 대하여 데이터 캐시내의 어드레스를 산출한다. 데이터는 라인(88)상의 IU 레지스터 화일(21)내의 선택된 레지스터로부터 수신되며, 제5 멀티플렉서(54)로 전송되며, 제1 메모리 레지스터(56)로 저장된다. 메모리 단계(16) 동안, 데이터는 라인(64)의 제7 멀티플렉서(62)로부터 라인(70)의 저장 정렬기(90)으로 전송된다. 저장 정렬기(90)는 로드 정렬기(43)의 역 연산(inverse operation)을 수행한다. 이 저장 정렬기는 데이터 캐시의 요구에 따라 데이터를 정렬한다. 이후에, 데이터는 제1 저장 데이터 레지스터(92)에 저장된다. 기록 단계(18) 동안, 데이터는 라인(94)을 통하여 데이터 캐시내의 특정 위치로 전송된다.
D.정수 데이터 바이패스용 데이터 경로
본 발명은 파이프라인내의 인스트럭션 처리의 중간 결과를, 다음 인스트럭션의 즉각적인 이용을 위하여, 초기의 파이프라인 단계로 되돌아가게 전송시키는 기능을 제공한다. 예를들어, 값 A가 실행 단계(15) 동안 계산되고 있는 위치를 제공한다. 계산된 값 A가, 파이프라인의 초기 단계에서 인스트럭션에 의한 피연산자로서 요구될 경우, 단계 이후의 실행 단계에서는 인스트럭션 파이프라인내에 머물러있을 수 있다(그러므로, IU 레지스터 화일(21)내의 레지스터에 미처 저장되지 않음). 상기 전송 기능이 제공되지 않을 경우, 인스트럭션 파이프라인은, 업데이트된 값 A가 IU 레지스터 화일로 기록되고, 이후에 파이프라인으로 다시 페치될때까지 유지되고 있어야 하며, 그렇지 않을 경우에는, A를 요구하는 인스트럭션 처리는 가장 마지막에 계산된 값 A를 이용할 수가 없게 된다. 상기 전송 기능은 필요시, 계산된 값을 다시 인스트럭션 파이프라인의 초기 단계로 제공함에 의해, 그러한 문제를 피할 수 있다. IU 레지스터 화일(21)에 기록된 정수 데이터는 2가지 경우로 인스트럭션 파이프라인으로 다시 전송될 수 있다. 그 첫번째 경우는 메모리 단계(16) 동안에 있다. 데이터가 제8 멀티플렉서(66)에 도달될때, 그 데이터는 라인(96)을 통해 제11 멀티플렉서(98)로 전송된다. 제11 멀티플렉서(98)는 데이터가 라인(100,102)을 통해 제2 메모리 레지스터(104)로 전송되어야 하는지의 여부를 제어한다. 일단, 데이터가 제2 메모리 레지스터(104)내에 있을 경우, 데이터는 제7 멀티플렉서(62)를 경유하여 전술한 바이패스 경로로 전송되며, 다시 라인(70)상에서 시작하여 제9 멀티플렉서(72)로 전송될 수 있다. 제2 메모리 레지스터(104)로의 데이터 로딩은 제1 메모리 레지스터(56)로 데이터의 로딩과 동일한 클록 사이클 동안 생성하게 된다. 두번째 경우는 지연 단계(17) 동안에 있다. 데이터가 제10 멀티플렉서(78)에 도달될때, 라인(106)을 통해 제12 멀티플렉서(108)로 전송된다. 제12 멀티플렉서(108)는 데이터가 제11 멀티플렉서(98)로부터 제2 메모리 레지스터(104)까지의 바이패스 경로로 합칠 것인지의 여부를 제어한다.
E.정수 곱셈 및 나눗셈 인스트럭션용 데이터 경로
본 발명에 있어서, 정수 곱셈 및 나눗셈 인스트럭션의 실행은 IU ALU(50)에 의해 수행되지 않는다. 그 대신, 정수 피연산자는 이하의 방법으로, FP MUL(24)와 FD DIV SQRT(25)로 전송된다. 메모리 단계(16) 동안, 피연산자 데이터는 제8 멀티플렉서(66)를 통하여 전송되며, 제11 멀티플렉서(98)로 라인(96)을 통하여 제공된다. 이후, 피연산자 데이터는 곱셈 또는 나눗셈 인스트럭션이 처리되는 지의 여부에 따라, 라인(100)을 통하여, FPU(22)의 적절한 섹션으로 전송된다. 피연산자 데이터 또한, 지연 단계(17) 동안, 라인(106)상의 제10 멀티플렉서(78)를 통하여, 제1 지연 레지스터(76)으로부터 제12 멀티플렉서(108)로 전송된다. 이후, 피연산자 데이터는 FPU(22)의 적절한 섹션으로 라인(100)을 통하여 전송된다. 이후, FPU는 요구된 연산을 실행한다. 정수 결과는 라인(110,112)을 통하여 FPU로부터 IU로 공급된다. 라인(110)은 정수 결과의 비트 0∼31를 반송하며, 라인(112)는 정수 결과의 비트 32∼63를 반송한다. 비트 0∼31은 제14 멀티플렉서(114)와 제15 멀티플렉서(116)을 통하여 제12 멀티플렉서(108)로 전송된다. 제12 멀티플렉서(108)로부터의 결과 데이터는 라인(100,102)상의 제11 멀티플렉서(98)를 통하여, 제2 메모리 레지스터(104)로 전송된다. 이후에, 정수 결과의 하단 32 비트는 제7 멀티플렉서(62)를 통하여 전파되며, 라인(70)이 시작하는 바이패스 경로가 이용될 수 있으며, 또는 제8 멀티플렉서(66), 제1 지연 레지스터(76) 및 제10 멀티플렉서(78)를 통하여, 라인(80)상의 IU 레지스터 화일로 제공될 수 있다. 정수 결과의 비트 32∼63는 제16 멀티플렉서(118), 제17 멀티플렉서(120), 제18 멀티플렉서(122) 및 제19 멀티플렉서(124)를 통하여 전송된다. 제19 멀티플렉서(124)는 라인(126,128)상의 정수 결과의 비트 32∼63을 제3 메모리 레지스터(130)로 전송시킨다.
정수 곱셈 및 나눗셈 연산 결과의 일부 또한, Y 레지스터(도 3에 도시하지 않음)라 칭하는 레지스터에 저장된다. Y 레지스터는 정수 곱셈 또는 나눗셈 연산으로부터의 64 비트의 결과중 상단 32 비트를 저장한다. Y 레지스터는 라인(132)을 제13 멀티플렉서(134)로 공급한다. Y 레지스터는 여기에서 참조하고 있는 SPARC ARCHITECTURE MANUAL, VERSION 8, SPARC INTERNATIONAL, INC., 1992에 그 모든 것이 설명되어 있다.
F.이중 피연산자 부동 소숫점 인스트럭션용 데이터 경로
이중 피연산자 부동 소숫점(FP) 인스트럭션은 FP 덧셈, FP 뺄셈, FP 곱셈, FP 나눗셈, FP 제곱근, 정수로부터 부동 소숫점으로의 변환 및 그 역산(vice versa)과 같은 인스트럭션을 포함한다. FPU(22)는 실행 단계(15) 동안 부동 소숫점 인스트럭션을 수신하는 마이크로프로세서 아키텍쳐에 있는 개개의 처리 유닛이다. 하지만, 부동 소숫점 피연산자 생성은 도 3에 나타낸 회로에 의해 달성된다. 단지 제2 부동 소숫점 피연산자용 경로만이 도시되었다. 피연산자 생성 경로는 제1 부동 소숫점 피연산자용의 경로와 유사하다.
FP 피연산자 2의 데이터는 실행 단계(15) 동안 FP 레지스터 화일(26)로부터 페치된다. 제2 부동 소숫점 피연산자 64비트까지 라인(136,138)에 도달하며, 데이터의 0∼31 비트가 라인(136)에 도달하며, 32∼63 비트가 라인(138)에 도달한다. 피연산자 2 가 단일 32 비트 워드로 구성될 경우, 0∼31 또는 32∼63 비트 중 하나가 이용되는 레지스터의 레지스터 수에 의거하여 이용된다. 0∼31비트는 제14 멀티플렉서(114), 제15 멀티플렉서(116), 제12 멀티플렉서(108), 제11 멀티플렉서(98) 및 라인(100)을 통하여 FPU(22)로 전송된다. 한편, FP 피연산자 2의 데이터의 0∼31비트는 메모리(16), 지연(17), 기록(18) 또는 FP 지연(19) 단계 동안, 인스트럭션 파이프라인으로부터 제공될 수 있다. 이러한 FP 피연산자 2의 데이터는 메모리 단계(16) 동안 라인(96)상의 제8 멀티플렉서(66)로부터, 지연 단계(17) 동안 라인(106)상의 제10 멀티플렉서(78)과 제1 지연 레지스터(76)로부터, 기록 단계(18) 동안 라인(156)상의 제1 기록 레지스터(154)로 부터, FP 지연 단계(19) 동안 라인(160)상의 제1 FP 지연 레지스터(156)로 부터 피연산자 생성 경로로 전송된다. 32∼63 비트는 제16 멀티플렉서(118), 제17 멀티플렉서(120), 제18 멀티플렉서(122), 제19 멀티플렉서(124)와 라인(126)을 통하여 FPU(22)로 전송하게 된다. 또한, 제2 피연산자 데이터 FC 피연산자는 라인(140)을 통하여, 메모리 단계(16) 동안 라인(140)상의 제13멀티플렉서(134)로부터, 지연 단계(17) 동안 라인(144)상의 제2 지연 레지스터(142)로부터, 기록 단계(18) 동안 라인(148)의 제2 기록 레지스터로부터 및, FP 지연 단계(19) 동안 라인(152)상의 제2 FP 지연 레지스터(150)로부터 피연산자 생성 경로로 전송된다.
이중 피연산자 부동 소숫점 인스트럭션 처리의 결과는 라인(110,112)상의 FPU)(22)로부터 복귀된다. 0∼31 비트의 결과는 라인(110)으로 수신되며, 32∼63은 라인(112)로 수신된다. 비트(0∼31)는 제20 멀티플렉서(162)로 전송되며, 이후에 FP 레지스터 화일(26)에 기록된다. 32∼63 비트는 제21 멀티플렉서(164)로 전송되며, 이후에 FP 레지스터 화일(26)에 기록된다.
G.단일 피연산자 부동 소숫점 인스트럭션용 데이터 경로
단일 피연산자 부동 소숫점 인스트럭션은 FP 이동(FP MOV), FP 부정(FP NEG), FP 절대값(FP ABS) 및 변환 연산(예컨대, 정수로부터 이중 부동 소숫점으로의 변환)과 같은 인스트럭션을 포함한다. FPU(22)는 이러한 인스트럭션을 처리하는데 이용되지 않으며, 단지 FP 피연산자 2 만이 단일 피연산자로서 이용된다.
FP 피연산자 2 의 데이터는 실행 단계(15) 동안 FP 레지스터 화일(26)로부터 페치된다. 부동 소숫점 피연산자 1 용 32 비트 데이터는 라인(136 또는 138)으로 도달하는데, 0∼31 비트는 라인(136)으로 도달하고, 32∼63 비트는 라인(138)으로 도달한다. 여기서, 32 비트 피연산자용 2 개의 병렬 데이터 경로가 있다는 것에 주목하여야 한다.
0∼31 비트로서 특정된 데이터는 제14 멀티플렉서(114), 제15 멀티플렉서(116), 제12 멀티플렉서(108), 제11 멀티플렉서(98) 및 라인(100)을 통해 제2 메모리 레지스터(104)로 전송된다. 또한, 32∼63 비트로서 특정된 데이터는 제16 멀티플렉서(118), 제17 멀티플렉서(120), 제18 멀티플렉서(122), 제19 멀티플렉서(124) 및 라인(126,128)을 통해 제3 메모리 레지스터(130)로 전송된다. 그러므로, 실행 단계(15) 동안, FP 피연산자 2 용의 32 비트 데이터는 제1 메모리 레지스터(104) 또는 제3 메모리 레지스터(130) 중, 그 둘 모두에 로드되는 것이 아닌 그 중 어느 하나에 로드된다. 메모리 레지스터로부터, 데이터는 적절한 데이터 경로를 통하여 흐른다. 만일, 제2 메모리 레지스터(104)가 로딩되었다면, 이후의 데이터는 제22 멀티플렉서(166)로부터 FP 카피 유닛(168)로 전송된다. FP 카피 유닛(168)은 단일 피연산자에 대해 요구된 연산을 수행한다. 그 결과는 메모리 단계(16) 동안, 제8 멀티플렉서(66)로부터 제1 지연 레지스터(76)로 전송되며, 지연 단계(17) 동안, 제1 지연 레지스터(76)로부터 제10 멀티플랙서(78)로 전송되며, 기록 단계(18) 동안, 제1 기록 레지스터(154)로부터 제1 FP 지연 레지스터(158)로 전송되며, FP 기록 단계(20) 동안, 제20 멀티플렉서(162)를 통해 FP 지연 레지스터(1)로부터 FP 레지스터 화일(26)로 전송된다. 이와 유사하게, 제3 메모리 레지스터(130)가 로딩되었다면, 이후의 데이터는 제22 멀티플렉서(166)를 통해 FP 카피 유닛(168)으로 전송된다. FP 카피 유닛(168)은 단일 피연산자의 요구된 연산을 수행한다. 그 결과는 메모리 단계(16) 동안, 제13 멀티플렉서(134)를 통해 제2 지연 레지스터(142)로 전송되며, 지연 단계(17) 동안 제2 지연 레지스터(142)로부터 제2 기록 레지스터(146)으로 전송되며, 기록 단계(18) 동안, 제2 기록 레지스터(146)로부터 제2 FP 지연 레지스터(150)로 전송되며, FP 기록 단계(20) 동안, 제21 멀티플렉서(164)를 통해 제2 FP 지연 레지스터(150)로부터 FP 레지스터 화일(26)로 전송된다.
H.로드 부동 소숫점 인스트럭션용 데이터 경로
인스트럭션 파이프라인에 의해 처리되는 인스트럭션이 로드 부동 소숫점 인스트럭션일 경우(예컨대, 데이터 캐시로부터 부동 소숫점 데이터를 갖는 FP 레지스터내의 화일(26)의 로드), 피연산자 생성 처리는 일반적으로 고정 소숫점 산술 인스트럭션용과 동일하다. 어드레스 및 레지스터 정보는 피연산자 2 용 라인(도시하지 않음) 및 라인(34)상의 인스트럭션으로부터 획득된 직접 피연산자이다.
디코드 단계(14) 동안, 피연산자는 전술한 바와 같이 결정된다. 실행 단계(15) 동안, IU ALU는 로딩되는 부동 소숫점 데이터에 대한 데이터 캐시내의 어드레스를 산출한다. 이 어드레스는 도 3에서 도시하지 않은 경로를 통해 데이터 캐시로 전송된다. 메모리 단계(16) 동안, 로드 정렬기(43)는 부동 소숫점 데이터의 32비트의 단일 워드와 부동 소숫점 데이터의 64 비트 이중 워드중 어느 하나를 수용하며, 라인(41)을 통해 캐시 데이터로부터의 IU ALU에 의해 산출된 어드레스에 의해 어드레스되며, 라인(86,170)을 통해 부동 소숫점 데이터를 전송한다. 만일, FP 피연산자 2 가 단일 32 비트 워드로 구성되면, 이후에 이용되는 레지스터의 레지스터 수에 따라 0∼31 또는 32∼63 비트중 하나가 이용된다. 부동 소숫점 데이터의 0∼31 비트는 라인(86)을 통해 제8 멀티플랙서(66)로 전송된다. 부동 소숫점 데이터의 32∼63 비트는 라인(170)을 통해 제13 멀티플랙서(134)로 전송된다. 데이터의 0∼31 비트는 이후에 제1 지연 레지스터(76)에 저장된다.
지연 단계(17) 동안, 데이터의 0∼31 비트는 제10 멀티플렉서(78)를 경유하여 제1 기록 레지스터(154)로 전송된다. 기록 단계(18) 동안, 데이터의 0∼31 비트는 제1 FP 지연 레지스터(158)로 전송된다. 최종적으로, FP 기록 단계(20) 동안, 데이터의 0∼31 비트는 제20 멀티플렉서(162)로 전송되며, 이후 FP 레지스터 화일(26)로 기록된다. 이와 유사하게, 데이터의 32∼63 비트는 제2 지연 레지스터(142)내에 저장된다. 지연 단계(17) 동안, 데이터의 32∼63 비트는 제2 기록 레지스터(146)로 전송된다. 기록 단계(18) 동안, 데이터의 32∼63 비트는 제2 FP지연 레지스터(150)로 전송된다. 최종적으로, FP 기록 단계(20) 동안, 데이터의 32∼63 비트는 제21 멀티플렉서(164)로 전송되며, 이후에 FP 레지스터 화일(26)로 기록된다.
I.저장 부동 소숫점 인스트럭션용 데이터 경로
인스트럭션 파이프라인에 의해 처리되는 인스트럭션이 저장 부동 소숫점 인스트럭션일 경우(예컨대, 데이터 캐시내의 메모리 위치에 대하여 FP 레지스터 화일(26)의 레지스터로부터 부동 소숫점 데이터를 저장하는 경우), 피연산자 생성 처리는 일반적으로 부동 소숫점 산술 인스트럭션용과 동일하다. 그러므로, IU ALU(50)는 피연산자 1 및 2를 이용하여 어드레스를 산출한다. 어드레스 및 레지스터 정보는 피연산자 2 용 라인(도시하지 않음) 및 라인(34)을 통해 인스트럭션으로부터 획득된 직접 피연산자이다. 저장 데이터는 인스트럭션내의 피연산자 3 이며, 제14 멀티플렉서(114), 제16 멀티플렉서(118), 제15 멀티플렉서(116), 제17 멀티플렉서(120), 제12 멀티플렉서(108), 제18 멀티플렉서(122), 제11 멀티플렉서(98), 제19 멀티플렉서(124)등을 이용하는 FP 피연산자 2 경로에 대한 데이터 경로에 형성된다. 부동 소숫점 데이터는 FP 레지스터 화일로부터 획득된다.
디코드 단계(14) 동안, 피연산자는 전술한 바와 같이 결정된다. 실행 단계(15) 동안, IU ALU는 저장되는 부동 소숫점 데이터에 대하여 데이터 캐시내의 어드레스를 산출한다. 데이터는 라인(136,138)을 통해, FP 레지스터 화일(26)내에서 선택된 레지스터로부터 수신된다. 부동 소숫점 데이터는 32 비트를 갖는 단일 워드 또는 64 비트를 갖는 이중 워드로 구성될 수 있다. 부동 소숫점 데이터의 0∼31 비트는 라인(100,102)를 통하여, 제14 멀티플렉서(114), 제15 멀티플렉서(116), 제12 멀티플렉서(108), 제11 멀티플렉서(98)로 전송되며, 제2 메모리 레지스터(104)에 저장된다. 부동 소숫점 데이터의 32∼63 비트는 라인(126,128)을 통하여, 제16 멀티플렉서(118), 제17 멀티플렉서(120), 제18 멀티플렉서(122), 제19 멀티플렉서(124)로 전송되며, 제3 메모리 레지스터(130)로 저장된다. 메모리 단계(16) 동안, 데이터의 0∼31 비트는 제7 멀티플렉서(62)를 통해, 제2 메모리 레지스터(104)로부터 라인(70)상의 저장 정렬기(90)로 전송된다. 저장 정렬기(90)는 로드 정렬기(43)의 역 연산을 수행한다. 저장 정렬기는 데이터 캐시의 요구에 따라 부동 소숫점 데이터를 정렬한다. 데이터의 32∼63 비트는 제3 메모리 레지스터(130)로부터 라인(172)을 통해, 저장 정렬기(90)로 전송된다.
지연 단계(17) 동안, 데이터의 0∼31 비트는 제1 저장 데이터 레지스터(92)에 저장되며, 데이터의 32∼63 비트는 제2 저장 데이터 레지스터(174)에 저장된다. 일단, 데이터가 저장 데이터 레지스터에 있으면, 데이터 캐시가 가용되거나 또는 연속 저장(및 그의 데이터)이 도달하는 것 중 어느 하나가 될때까지 그 장소에 머무르게 된다.
한편, 본 발명의 바람직한 일실시예에 대하여 설명하였지만, 이하의 청구항에 의해 정의된 바와 같이, 본 발명의 사상 및 기술적 사항에 벗어나지 않는 범위내에서의 다양한 변형 및 변경이 있을 수 있음은 당업자에게는 자명하다 할것이다.
상기한 바와 같은 본 발명에 따라, 정수 데이터 및 부동 소숫점 데이터를, 공유 데이터 경로 시스템으로 통신하기 때문에, 추가의 연산으로 인한 복잡성 및 지연 단계의 추가를 없앨 수 있어, 마이크로프로세서 디자인의 단순화와 함께 정확한 연산을 수행할 수 있는 효과가 있다.

Claims (32)

  1. 복수개의 연속 처리 단계들을 갖는 인스트럭션 파이프라인에서, 부동 소숫점 연산을 수행하는 부동 소숫점 인스트럭션이 정수 연산을 수행하는 정수 인스트럭션에 혼입되어 구성되어 있는 인스트럭션들을, 동시에 처리하기 위한 프로세서에 있어서,
    상기 인스트럭션 파이프라인(11)의 상기 부동 소숫점 인스트럭션을 실행하며, 적어도 하나의 부동 소숫점 피연산자로부터 부동 소숫점 결과를 생성하는 부동 소숫점 유닛(22)과,
    상기 인스트럭션 파이프라인(11)의 상기 정수 인스트럭션을 실행하며, 적어도 하나의 정수 피연산자로부터 정수 결과를 생성하는 정수 유닛(27)과,
    상기 부동 소숫점 유닛에 의해 상기 부동 소숫점 인스트럭션의 동기 및 종료 상태를 제어하는 부동 소숫점 제어기(28)와,
    상기 인스트럭션 파이프라인(11)의 연속 단계의 처리 과정 동안에, 정수 피연산자, 정수 결과, 부동 소숫점 피연산자 및 부동 소숫점 결과 사이를 통신하기 위하여, 상기 부동 소숫점 유닛(22), 상기 정수 유닛(27) 및 상기 부동 소숫점 제어기(28)에 의해 공유된 통신 수단을 포함하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 상기 정수 유닛(27)에 의해 형성된 정수 결과를 저장하는 상기 통신 수단에 접속된 제1 레지스터 화일(21)을 추가로 포함하는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서, 상기 부동 소숫점 유닛(22)에 의해 형성된 부동 소숫점 결과를 저장하는 상기 통신 수단에 접속된 제2 레지스터 화일(26)을 추가로 포함하는 것을 특징으로 하는 프로세서.
  4. 제1항에 있어서, 상기 부동 소숫점 유닛(22)은 덧셈, 뺄셈 및 부동 소숫점 인스트럭션으로부터 부동 소숫점 피연산자로 연산 변환을 수행하는 부동 소숫점 산술 논리 유닛(23)을 포함하는 것을 특징으로 하는 프로세서.
  5. 제1항에 있어서, 상기 부동 소숫점 유닛(22)은 부동 소숫점 인스트럭션으로부터 부동 소숫점 연산으로 곱셈 연산을 수행하는 부동 소숫점 곱셈 유닛(24)을 포함하는 것을 프로세서.
  6. 제1항에 있어서, 상기 부동 소숫점 유닛(22)은 부동 소숫점 인스트럭션으로부터 부동 소숫점 피연산자로 나눗셈 및 제곱근 연산을 수행하는 부동 소숫점 나눗셈 및 제곱근 유닛(25)을 포함하는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서, 상기 통신 수단은 상기 정수 유닛(7)과 상기 부동 소숫점 제어기(28)의 구성 모두를 포함하는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서, 상기 정수 유닛(27)은 정수 인스트럭션 및 부동 소숫점 인스트럭션용 인스트럭션 어드레스를 배출하는 수단(12)을 포함하는 것을 특징으로 하는 프로세서.
  9. 제1항에 있어서, 상기 정수 유닛(27)은 정수 인스트럭션 및 부동 소숫점 인스트럭션을 페칭하는 수단(13)을 포함하는 것을 특징으로 하는 프로세서.
  10. 제1항에 있어서, 상기 정수 유닛(27)은 적어도 하나의 정수 피연산자를 생성하기 위해 정수 인스트럭션을 디코딩하는 수단(14)을 포함하는 것을 특징으로 하는 프로세서.
  11. 제1항에 있어서, 상기 정수 유닛(27)은 정수 인스트럭션으로부터 정수 피연산자로 정수 연산을 실행하며, 부동 소숫점 인스트럭션 및 부동 소숫점 피연산자를 상기 부동 소숫점 유닛으로 디스페칭하는 수단(15)을 포함하는 것을 특징으로 하는 프로세서.
  12. 제1항에 있어서, 정수 인스트럭션의 실행 결과를 저장하는 수단(16)을 추가로 포함하는 것을 특징으로 하는 프로세서.
  13. 제2항에 있어서, 상기 제1 레지스트 화일(21)의 정수 결과를 기록하는 수단(18)을 추가로 포함하는 것을 특징으로 하는 프로세서.
  14. 제2항에 있어서, 상기 제1 레지스터 화일(21)의 정수 결과를 기록 하는 수단(18)을 추가로 포함하는 것을 특징으로 하는 프로세서.
  15. 제3항에 있어서, 상기 부동 소숫점 제어기(28)는 상기 부동 소숫점 유닛(22)에 의해 부동 소숫점 인스트럭션 실행의 종료를 동기화하는 수단(19)과,
    부동 소숫점 결과를 상기 제2 레지스터 화일(26)로 기록하는 수단(20)을 포함하는 것을 특징으로 하는 프로세서.
  16. 제1항에 있어서, 상기 통신 수단은 정수 피연산자와 정수 산술 및 논리 인스트럭션의 정수 결과를 통신하는 제1 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  17. 제1항에 있어서, 상기 통신 수단은 정수 피연산자와 로드 정수 인스트럭션의 정수 결과를 통신하는 제2 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  18. 제1항에 있어서, 상기 통신 수단은 정수 피연산자와 저장 정수 인스트럭션의 정수 결과를 통신하는 제3 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  19. 제1항에 있어서, 상기 통신 수단은 정수 피연산자와 상기 인스트럭션 파이프라인의 초기 단계에 대한 정수 결과를 통신하는 제4 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  20. 제1항에 있어서, 상기 통신 수단은 정수 피연산자와 정수 곱셈 및 나눗셈 인스트럭션의 정수 결과를 통신하는 제5 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  21. 제1항에 있어서, 상기 통신 수단은 적어도 하나의 부동 소숫점 피연산자와 단일 피연산자 부동 소숫점 인스트럭션의 부동 소숫점 결과를 통신하는 제6 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  22. 제1항에 있어서, 상기 통신 수단은 적어도 2개의 부동 소숫점 피연산자와 이중 피연산자 부동 소숫점 인스트럭션의 부동 소숫점 결과를 통신하는 제7 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  23. 제1항에 있어서, 상기 통신 수단은 부동 소숫점 피연산자와 로드 부동 소숫점 인스트럭션의 부동 소숫점 결과를 통신하는 제8 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  24. 제1항에 있어서, 상기 통신 수단은 부동 소숫점 피연산자와 저장 부동 소숫점 인스트럭션의 부동 소숫점 결과를 통신하는 제9 데이터 경로 수단을 포함하는 것을 특징으로 하는 프로세서.
  25. 정수 유닛 및 부동 소숫점 유닛으로 구성되고, 부동 소숫점 연산을 수행하는 부동 소숫점 인스트럭션이 정수 연산을 수행하는 정수 인스트럭션에 혼입되어 구성되어 있는 인스트럭션들을, 동시에 처리하기 위한 처리 시스템에서의 공유 데이터 경로에 있어서,
    정수 피연산자를 수신하는 제1 레지스터 수단(44,48)과,
    제1 레지스터 수단으로부터 획득된 정수 피연산자로 산술 및 논리적 연산을 수행하여 정수 결과를 생성하는 산술 논리 유닛(50)과,
    상기 정수 결과를 수신하는 제2 레지스터 수단(56)과,
    상기 정수 결과를 상기 제1 레지스터 수단으로 전송하는 제1 바이패스 수단(60,38,74,72,70,80,82)과,
    상기 제2 레지스터 수단으로부터의 정수 결과를 수신하는 제3 레지스터 수단(76,142)과,
    상기 정수 결과를 저장하는 제1 레지스터 화일(21)과,
    상기 정수 결과를 상기 제3 레지스터 수단으로부터 상기 제1 레지스터 화일로 전송하는 수단(78,80)을 포함하는 것을 특징으로 하는 공유 데이터 경로.
  26. 제25항에 있어서, 정수 데이터를 수용하며, 상기 정수 데이터를 상기 정수 결과로 정렬하며, 상기 정수 결과를 상기 제3 레지스터 수단으로 저장하도록 상기 제3 레지스터 수단에 결합된 로드 정렬 수단(43)을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  27. 제25항에 있어서, 정수 피연산자를 상기 제1 레지스터 화일로부터 상기 제2 레지스터 수단으로 전송하는 수단(88,54)과,
    상기 정수 피연산자를 수신하며, 상기 정수 피연산자를 상기 정수 결과로 정렬하도록 상기 제2 레지스터 수단에 결합된 저장 정렬 수단(90)과,
    상기 정수 결과를 수신하는 제4 레지스터 수단(92,174)과,
    상기 정수 결과를 상기 제4 레지스터 수단으로부터 상기 제1 레지스터 화일로 전송하는 수단(94,176)을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  28. 제25항에 있어서, 정수 곱셈 또는 정수 나눗셈 인스트럭션의 실행으로부터의 정수 결과 또는 부동 소숫점 카피 인스트럭션의 실행으로부터의 부동 소숫점 결과를 수신하는 제5 레지스터 수단(104,130)과,
    상기 정수 결과, 정수 피연산자, 부동 소숫점 피연산자 또는 부동 소숫점 결과를 상기 제2 레지스터 수단으로부터 상기 제5 레지스터 수단으로 전송하는 제2 바이패스 수단(96,98,102,124,128)과,
    상기 정수 결과, 부동 소숫점 피연산자 또는 부동 소숫점 결과를 상기 제3 레지스터 수단으로부터 상기 제2 바이패스 수단으로 전송하는 제3 바이패스 수단(106,108,122,144)을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  29. 제28항에 있어서, 정수 피연산자를 상기 부동 소숫점 유닛으로 전송하는 수단(96,98,100,106,108)과,
    상기 정수 결과를 상기 부동 소숫점 유닛으로부터 수신하는 수단(110,112)과,
    상기 정수 결과를 상기 제3 바이패스 수단으로 전송하는 수단(114,116,11 8,120)을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  30. 제29항에 있어서, 부동 소숫점 피연산자와 상기 부동 소숫점 결과를 저장하는 제2 레지스터 화일(26)과,
    상기 제2 레지스터 화일로부터 부동 소숫점 피연산자를 수신하며, 상기 부동 소숫점 피연산자를 상기 부동 소숫점 유닛으로 전송하고, 상기 부동 소숫점 피연산자를 상기 제5 레지스터로 전송하는 수단(136,138,100,126)과,
    상기 부동 소숫점 유닛으로부터 상기 부동 소숫점 결과를 수신하고, 상기 부동 소숫점 결과를 상기 제5 레지스터 수단으로 전송하는 수단(110,112)과,
    상기 부동 소숫점 결과를 상기 제3 레지스터 수단으로부터 수신하고, 상기 부동 소숫점 피연산자를 상기 제3 레지스터 수단으로부터 수신하는 제6 레지스터 수단(146,154)과,
    상기 부동 소숫점 피연산자 또는 상기 부동 소숫점 결과를 상기 제6 레지스터 수단으로부터 상기 제3 바이패스 수단으로 전송하는 제4 바이패스 수단(116,1 20)과,
    상기 제6 레지스터 수단으로부터 상기 부동 소숫점 결과를 수신하는 제7 레지스터 수단(150,158)과,
    상기 부동 소숫점 피연산자 또는 상기 부동 소숫점 결과를 상기 제7 레지스터 수단으로부터 상기 제4 바이패스 수단으로 전송하는 제5 바이패스 수단(152,160)과,
    상기 제7 레지스터 수단 또는 상기 부동 소숫점 유닛으로부터 상기 부동 소숫점 결과를 수신하고, 상기 부동 소숫점 결과를 상기 제2 레지스터 화일로 저장하는 수단(162,164)들을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  31. 제30항에 있어서, 상기 제3 레지스터 수단과 상기 제5 레지스터 수단에 결합된 부동 소숫점 카피 유닛(168)을 추가로 포함하는 것을 특징으로 하는 공유 데이터 경로.
  32. 혼입된 정수 피연산자, 정수 결과, 부동 소숫점 피연산자 및 부동 소숫점 결과를, 마이크로프로세서내의 공유 데이터 경로를 통하여, 정수 유닛, 부동 소숫점 유닛과 부동 소숫점 제어기 사이로, 통신하기 위한 방법에 있어서,
    정수 곱셈 및 나눗셈 인스트럭션 구성의 정수 인스트럭션, 또는 부동 소숫점 카피 인스트럭션 구성의 부동 소숫점 인스트럭션 중 하나인 실행용 인스트럭션이, 상기 인스트럭션이 정수 곱셈 인스트럭션 또는 나눗셈 인스트럭션이 아닌 정수 인스트럭션 또는 부동 소숫점 카피 인스트럭션일 경우에, 상기 정수 유닛으로 배출하거나, 또는 상기 인스트럭션이, 부동 소숫점 카피 인스트럭션이 아닌 부동 소숫점 인스트럭션 또는 나눗셈 인스트럭션 또는 정수 곱셈 인스트럭션일 경우에, 상기 부동 소숫점 유닛으로 배출하는 단계와,
    상기 인스트럭션이, 정수 곱셈 인스트럭션 또는 나눗셈 인스트럭션일 경우에, 상기 공유 데이터 경로상의 상기 정수 피연산자를 수신하는 단계와,
    상기 인스트럭션이, 부동 소숫점 인스트럭션일 경우에, 상기 공유 데이터 경로상의 상기 부동 소숫점 피연산자를 수신하는 단계와,
    상기 배출된 인스트럭션이, 정수 결과를 형성하는 정수 인스트럭션일 경우 또는 상기 배출된 인스트럭션이 부동 소숫점 결과를 형성하는 부동 소숫점 카피 인스트럭션일 경우에, 상기 배출된 인스트럭션을 상기 정수 유닛에 의해 실행시키는 단계와,
    상기 배출된 인스트럭션이, 상기 부동 소숫점 결과를 형성하는 부동 소숫점 인스트럭션일 경우 또는 상기 배출된 인스트럭션이 상기 정수 결과를 형성하는 정수 곱셈 또는 나눗셈 인스트럭션일 경우에, 상기 배출된 인스트럭션을 상기 부동 소숫점 유닛에 의해 실행시키는 단계와,
    상기 정수 결과 및 상기 부동 소숫점 결과를, 상기 공유 데이터 경로를 통하여 선택적으로 통신시키는 단계를 포함하는 것을 특징으로 하는 통신 방법.
KR1019970066937A 1996-12-10 1997-12-09 마이크로프로세서내의공유데이터경로를통해정수데이터및부동소수점데이터를통신하기위한장치및그통신방법 KR100507415B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US3237496P 1996-12-10 1996-12-10
US60/032,374 1996-12-10
US60/032374 1996-12-10
US08/767,953 US5887160A (en) 1996-12-10 1996-12-17 Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US08/767953 1996-12-17
US8/767,953 1996-12-17

Publications (2)

Publication Number Publication Date
KR19980063924A true KR19980063924A (ko) 1998-10-07
KR100507415B1 KR100507415B1 (ko) 2005-12-06

Family

ID=26708335

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970066937A KR100507415B1 (ko) 1996-12-10 1997-12-09 마이크로프로세서내의공유데이터경로를통해정수데이터및부동소수점데이터를통신하기위한장치및그통신방법

Country Status (3)

Country Link
US (1) US5887160A (ko)
JP (1) JP3607476B2 (ko)
KR (1) KR100507415B1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860000A (en) * 1996-01-31 1999-01-12 Hitachi Micro Systems, Inc. Floating point unit pipeline synchronized with processor pipeline
US6591361B1 (en) * 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US7757066B2 (en) * 2000-12-29 2010-07-13 Stmicroelectronics, Inc. System and method for executing variable latency load operations in a date processor
US6963961B1 (en) * 2001-07-09 2005-11-08 Lsi Logic Corporation Increasing DSP efficiency by independent issuance of store address and data
US20060095723A1 (en) * 2001-11-05 2006-05-04 Moyer William C Method and apparatus for interfacing a processor to a coprocessor
EP1365319B1 (en) * 2002-04-01 2017-07-05 QUALCOMM Incorporated Risc processor supporting one or more uninterruptible co-processors
US6944746B2 (en) * 2002-04-01 2005-09-13 Broadcom Corporation RISC processor supporting one or more uninterruptible co-processors
GB2395298B (en) * 2002-09-17 2007-02-14 Micron Technology Inc Flexible results pipeline for processing element
WO2004084064A2 (en) * 2003-03-19 2004-09-30 Koninklijke Philips Electronics N.V. Type conversion unit in a multiprocessor system
US7290121B2 (en) * 2003-06-12 2007-10-30 Advanced Micro Devices, Inc. Method and data processor with reduced stalling due to operand dependencies
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
TWI278910B (en) * 2005-08-09 2007-04-11 Powerchip Semiconductor Corp System and method for wafer visual inspection
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8127262B1 (en) * 2008-12-18 2012-02-28 Xilinx, Inc. Communicating state data between stages of pipelined packet processor
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
EP2866138B1 (en) * 2013-10-23 2019-08-07 Teknologian tutkimuskeskus VTT Oy Floating-point supportive pipeline for emulated shared memory architectures
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
WO2020190798A1 (en) 2019-03-15 2020-09-24 Intel Corporation Multi-tile memory management for detecting cross tile access, providing multi-tile inference scaling, and providing optimal page migration

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) * 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
US4851990A (en) * 1987-02-09 1989-07-25 Advanced Micro Devices, Inc. High performance processor interface between a single chip processor and off chip memory means having a dedicated and shared bus structure
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JPH0769821B2 (ja) * 1988-03-04 1995-07-31 日本電気株式会社 情報処理装置におけるバイパスライン制御方式
US4901267A (en) * 1988-03-14 1990-02-13 Weitek Corporation Floating point circuit with configurable number of multiplier cycles and variable divide cycle ratio
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
US5159680A (en) * 1988-07-28 1992-10-27 Sun Microsystems, Inc. Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register
US5083263A (en) * 1988-07-28 1992-01-21 Sun Microsystems, Inc. BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
US5109495A (en) * 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5204828A (en) * 1989-02-10 1993-04-20 Intel Corporation Bus apparatus having hold registers for parallel processing in a microprocessor
US5226166A (en) * 1989-02-10 1993-07-06 Mitsubishi Denki K.K. Parallel operation processor with second command unit
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5210841A (en) * 1990-01-30 1993-05-11 Advanced Micro Devices, Inc. External memory accessing system
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
DE69130588T2 (de) * 1990-05-29 1999-05-27 Nat Semiconductor Corp Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors

Also Published As

Publication number Publication date
US5887160A (en) 1999-03-23
JPH10228378A (ja) 1998-08-25
KR100507415B1 (ko) 2005-12-06
JP3607476B2 (ja) 2005-01-05

Similar Documents

Publication Publication Date Title
KR19980063924A (ko) 마이크로프로세서에서 공유 데이터 경로를 통해 정수 및 부동소숫점 데이터를 통신하기 위한 장치 및 그 통신 방법
US5923871A (en) Multifunctional execution unit having independently operable adder and multiplier
USH1291H (en) Microprocessor in which multiple instructions are executed in one clock cycle by providing separate machine bus access to a register file for different types of instructions
JP3618821B2 (ja) 複数の型のオペレーションを同時並列で実行するためのプロセッサコア、およびオペレーションに用いられるオペランドデータを処理し通信する方法
US5940311A (en) Immediate floating-point operand reformatting in a microprocessor
US5675758A (en) Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
US6157994A (en) Microprocessor employing and method of using a control bit vector storage for instruction execution
US5185872A (en) System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US6668316B1 (en) Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
EP1385085B1 (en) High performance risc microprocessor architecture
US7072929B2 (en) Methods and apparatus for efficient complex long multiplication and covariance matrix implementation
US5983336A (en) Method and apparatus for packing and unpacking wide instruction word using pointers and masks to shift word syllables to designated execution units groups
US6725357B1 (en) Making available instructions in double slot FIFO queue coupled to execution units to third execution unit at substantially the same time
US6148395A (en) Shared floating-point unit in a single chip multiprocessor
JPH10116268A (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US5884062A (en) Microprocessor with pipeline status integrity logic for handling multiple stage writeback exceptions
US8671266B2 (en) Staging register file for use with multi-stage execution units
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US6163837A (en) Writing of instruction results produced by instruction execution circuits to result destinations
JPH10161872A (ja) 命令データを位置合せするための方法および装置
US5961575A (en) Microprocessor having combined shift and rotate circuit
WO1990010267A1 (en) Distributed pipeline control for a computer
US6012139A (en) Microprocessor including floating point unit with 16-bit fixed length instruction set
EP1367485B1 (en) Pipelined processing
US7861061B2 (en) Processor instruction including option bits encoding which instructions of an instruction packet to execute

Legal Events

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

Payment date: 20120724

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130719

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140721

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150716

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee