KR0178078B1 - 2개의 명령이 동시 실행 가능한 데이타 프로세서 - Google Patents

2개의 명령이 동시 실행 가능한 데이타 프로세서 Download PDF

Info

Publication number
KR0178078B1
KR0178078B1 KR1019900017816A KR900017816A KR0178078B1 KR 0178078 B1 KR0178078 B1 KR 0178078B1 KR 1019900017816 A KR1019900017816 A KR 1019900017816A KR 900017816 A KR900017816 A KR 900017816A KR 0178078 B1 KR0178078 B1 KR 0178078B1
Authority
KR
South Korea
Prior art keywords
instruction
command
register
data
shifter
Prior art date
Application number
KR1019900017816A
Other languages
English (en)
Other versions
KR910010304A (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 KR910010304A publication Critical patent/KR910010304A/ko
Application granted granted Critical
Publication of KR0178078B1 publication Critical patent/KR0178078B1/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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3824Operand accessing

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)

Abstract

메모리(620)에서 제1 및 제2의 명령이 동시에 페치되어 제1과 제2의 명령 디코더(644), (645)가 제1과 제2의 명령을 각각 해독하고, 명령 실행 유닛은 레지스터 파일(650), 연산기(651) 및 시프터(652)를 포함하고, 제1의 비교기(132)는 제1의 명령의 종착필드(112)와 제2의 명령의 제1소스 필드(123)을 비교하며, 제2의 비교기(131)은 제1의 명령의 종착필드(112)와 제2의 명령의 종착필드(122)를 비교하고, 제1의 명령의 이미디어트 데이터(114)에 관계된 시프터(652)의 출력은 본래 레지스터 파일(650)에 세트되어야할 것이지만 양 비교기(132), (131)의 모든 입력이 일치하는 경우, 시프터(652)의 출력은 바이패스의 신호 전달경로를 거쳐서 연산기(651)의 입력 (656)에 공급되는 것이다.

Description

2개의 명령이 동시 실행 가능한 데이타프로세서
제1도(a), (b)는 본 발명의 1실시예의 특징인 2개의 명령 동시 실행을 가능하게 하는 데이터프로세서의 블록도.
제2도(a),(b)는 보 발명의 1실시예의 데이터프로세서를 위한 명령의 서식을 도시한 도면.
제3도(a) 내지 (d)는 본 발명의 1실시예의 데이타 프로세서가 2개의 명령을 직렬로 실행할 때의 블록도.
제4도(a) 내지 (c)는 본 발명의 1실시예의 데이터 프로세서의 파이프 라인 처리동작을 도시한 도면.
제5도는 본 발명의 1실시예의 데이터프로세서를 위한 명령의 연산코드의 비트할당을 나타낸 도면.
제6도는 제1도의 데이터프로세서의 기본적인 시스템 구성을 도시한 블록도.
* 도면의 주요부분에 대한 부호의 설명
640 : 프리페치 버퍼 641 : 제1명령 레지스터
642 : 제2명령레지스터 644, 645 : 제1, 제2디코더
650: 레지스터파일 651 : 연산기
652 : 시프터 131, 132 : 비교기
본 발명은 주로 마이크로프로세서(MPU)와 같은 데이터프로세서에 관한 것으로, 특히 32비트 RISC 프로세서의 2명령 동시 실행의 처리방법에 관한 것이다.
본 발명에 관계되는 공지예로서는 MIPS RESC ARCHITECTURE; 1988, Prentice- Hall, p.A-39 와 A-58, 1989 IEEE International Solid-State Circuits Conference DIGEST OF TECHNICAL PAPERS, P. 54-55 및 수기하라 히데후미 100만 트랜지스터를 집적하여 과학기술계산, 영상화를 노리는 마이크로 프로세서 80860 닛케이 일렉트로닉스 1989. 4. 3(No.470) P. 199-209를 들수가 있다.
최근 고성능 프로세서 시스템에서는 RISC (Reduced Instruction Set Computer) 구조를 채용하고 있다. 이 RISC 프로세서에서는 명령의 길이가 32비트로 고정되어 있다. 따라서 32비트 길이의 이미디어트 데이터(즉 각 값)를 취급하는 경우 2개의 명령으로 분해해서 실행할 필요가 있다. 예를 들면, 다음과 같이 된다.
LUI rt, upper 16bits
ORI rt, rt,lower 16bits
여기서 제1의 명령은 로드 어퍼 이미디어트(Load Upper Immediate)명령으로서, 명령중에 나타낸 16비트의 이미디어트 데이터를 좌로 16비트분 시프트해서 32비트의 데이터로 한 것을 t번째의 레지스터 rt에 저장하는 명령이다.
제2의 명령은 오이 이미디어트(Or Immediate) 명령으로서, 명령중에 나타낸 16비트의 이미디어트 데이터의 상위에 16비트분의 0을 확장한 것과 t번째의 레지스터 rt의 내용의 논리합을 레지스터 rt에 저장하는 명령이다.
상기 2명령의 명령 실행의 결과 레지스터 rt에 32비트 길이의 이미디어트 데이터를 세트할 수가 있다.
이와 같은 프로세서의 규격에 대해서는 미국 미프스사의 32비트 마이크로프로세서 R2000 의 구조에 대한 설명서에 기재되어 있다.
이상 기술한 바와 같이 종래의 RISC 프로세서에서는 32비트의 이미디어트 데이터를 취급하는 경우 2개의 명령으로 분할하여 실행하는데는 2사이클을 필요로 하고 있었다.
한편, 최근에는 버스의 데이터 폭을 64비트화 해서 버스의 대역폭 확장에 의한 처리 성능의 향상을 목표로 한 프로세서가 발표되고 있다. 예를 들면, 1989년의 ISSCC(IEEE Intermational Solid-State Circuits Conference)에서는 인텔사 등이 64비트 데이터 비스를 갖는 마이크로 프로세서를 발표하고 있다.
그러나, 상기한 마이크로프로세서에서도 코드 효율등을 고려해서 명령의 서식은 32비트로 고정되어 있다. 따라서 64비트분의 명령을 한번에 페치할 수 있음에도 불구하고32비트 길이의 이미디어트 데이터는 종래와 같이 2개의 명령으로 분할되어 2사이클을 필요로 해서 실행되고 있다.
또, 상기 인텔사의 마이크로프로세서에서는 64비트 버스를 이용해서 1사이클로 2개의 명령을 페치하고, 그들 명령이 정수연산 명령과 부동소수점 연산 명령의 조합이면, 그들을 동시에 실행하는 처리방법을 취하고 있다. 이것은 정수연산 명령으로는 정수의 범용 레이스터를 조작하고, 부동 소수점 명령으로는 부동소수점 레지스터를 조작하므로 이들 명령사이에서는 명령사이의 의존관계가 없는 것을 이용하고 있다. 따라서 상기 제어방법은 정수연산 명령을 2개 동시에 실행하는 처리방법에는 적용할 수 없다.
본 발명의 목적은 명령사이의 의존관계를 고려하면서 2개의 명령을 동시에 실행할 수 있는 데이터프로세서를 제공하는 것이다.
본 발명의 상기 및 그 밖의 목적과 새로운 특징은 본 명세서의 기술 및 첨부도면으로 명확하게 될 것이다.
본 출원에서 개시되는 발명중 대표적인 것의 개요를 간단히 설명하면 다음과 같다.
즉, 본 발명의 대표적인 실시예에 의한 마이크로 프로세서는,
(1) 소정의 비트폭(32비트)의 명령길이의 제1 및 제2의 명령을 메모리에서 페치하여 상기 제1 및 제2의 명령을 병렬로 출력하는 명령페치 유닛(640).
(2) 그 입력에 상기 명령페치 유닛(640)에서 출력되는 상기 제1의 명령의 연산 코드가 공급되는 제1의 명령 디코더(644),
(3) 그 입력에 상기 명령페치 유닛(640)에서 출력되는 상기 제2의 명령의 연산코드가 공급되는 제2의 명령 디코더(645),
(4) 적어도 레지스터 파일(650), 연산기(651) 및 시프터(652)를 포함하고, 상기 제1의 명령 디코더(644)의 디코드 결과와 상기 제2의 명령 디코더(645)의 디코드 결과중 적어도 어느 하나에 의해서 제어되는 명령 실행 유닛,
(5) 상기 명령페치 유닛(640)에서 출력되는 상기 제1의 명령 종착 필드(112)의 정보와 상기 명령페치 유닛(640)에서 출력되는 상기 제2의 명령의 제1소스필드(123)의 정보를 비교하는 제1의 비교기(132) 및
(6) 상기 명령페치 유닛(640)에서 출력되는 상기 제1의 명령의 종착 필드(112)의 정보와 상기 명령패치 유닛(640)에서 출력되는 상기 제2의 명령의 종착필드(122)의 정보를 비교하는 제2의 비교기(131)을 구비해서 이루어지고,
상기 레지스터 파일(650)은 여러개의 레지스터(R0, R1, R2, R3, ........ R31)로 되고,
상기 제1의 비교기(132)의 출력과 상기 제2의 비교기(131)의 출력에 의한 제어조건에 따라서 상기 제1의 명령의 이미디어트 데이터(114)에 관계된 상기 시프터(652)의 상기 출력을 상기 레지스터 파일(650)을 바이 패스해서 상기 연산기(651)의 입력(656)에 공급하기 위한 신호 전달 경로를 또 구비한 것이다(제1도(a)참조).
1사이클에서 메모리(620)으로 부터 제1과 제2의 명령이 명령페치 유닛(640)에 의해서 페치되고, 이 페치된 제1과 제2의 명령은 제1과 제2의 디코더(644,645)에 의해 디코드된다.
제1과 제2의 디코더(644,645)의 디코드 결과에 따라서 명령실행 유닛(650, 651, 652)가 제어된다.
상기 레지스터 파일(650)을 바이 패스해서 이 신호전달 경로를 거쳐 상기 시프터(652)의 상기 출력을 상기 연산기(651)의 상기 입력(656)에 공급하는 조건은 명령페치 유닛(640)에서 출력되는 제1의 명령이 연산기(651)과 본래는 무관계로 이제1의 명령의 이미디어트 데이터(114)에 관계된 시프터(652)의 출력을 이 제1의 명령의 종착 필드(112)의 정보에 의해 지정되는 레지스터 파일(650)중의 선택된 1개의 레지스터(R3)에 본래는 세트하는 명령(LUI명령)이며, 또 명령페치 유닛(640)에서 출력되는 제2의 명령이 상기 시프터(652)와 본래는 무관계로 이 제2의 명령의 제1소스필드(123)의 정보에 의해 지정되는 레지스터파일(650)중의 선택된 1개의 레지스터(R3)의 정보와 이 제2의 명령의 제2소스필드(124)에 관계된 정보를 연산기(651)에서 처리하고, 이 처리 결과를 이 제2의 명령의 종착 필드(122)의 정보에 의해 지정되는 레지스터 파일(650)중의 선택된 1개의레지스터(R3)에 세트하는 명령인 경우 제1의 비교기(132)의 양쪽 비교입력(112,123)이 서로 일치한다는 조건이다.
이 조건에서는 제1의 명령과 제2의 명령이 기본적으로 동시 실행될 수가 있으며, 또 레지스터 파일(650)을 바이패스해서 제1의 명령의 이미디어트 데이터(114)에 관계된 시프터(652)의 출력이 제2의 명령이 제1소스필드(!23)의 정보로서 고속으로 연산기(651)의 입력(656)에 공급될 수 있게 된다.
이와 같은 레지스터파일(650)을 바이 패스한다는 방법을 사용하지 않는다고 하면 레지스터 파일(650)을 구성하는 레지스터(R0, R1, R2, R3, ... R31)의 수가 큰 경우에 시프터(652)의 출력이 레지스터 파일(650)을 거쳐서 연산기(651)의 입력(656)으로 전달될때의 지연시간은 큰 것으로 되고 만다. 이와 같은 지연시간의 저감의 점에서도 본 발명의 대표적인 실시예는 가장 적합한 것이다.
제1의 비교기(132)의 양쪽 비교 입력(112, 123)이 서로 일치한다는 조건에 가해서, 또 제2의 비교기(131)의 양쪽 비교입력(112, 122)가 서로 일치하는 조건(즉, 제1과 제2의 명령의 종착 필드(112), 122)의 양쪽 정보 더 나아가서는 제2의 명령의 제1소스 필드(123)의 정보가 서로 일치하는 경우)에서는 본래 대로 선행하는 제1의 명령(LUI명령)에 의해 시프터(652)의 데이터를 R3 레지스터에 세트하였다고 해도 R3 레지스터에 세트된 이 데이터는 후속하는 제2의 명령(ORI명령)에 의한 연산기(651)의 처리결과 데이터에 의해서 갱신되므로 선행하는 제1의 명령(LUI명령)에 의한 시프터(652)의 데이터의 R3레지스터로의 세트는 무의미하게 될뿐만 아니라 데이터 갱신에 무모한 시간을 소비하게 된다.
이것에 대해서 본 발명의 대표적인 실시예에 의하면, 제1의 비교기(132)의 양쪽비교입력(112,123)이 서로 일치한다는 조건에 가해서, 또 제2의 비교기(131)의 양쪽 비교입력(112, 122)가 서로 일치하는 조건에서는 제1의명령인 LUI 명령에 의한 배럴 시프터(652)의 시프트 결과는 레지스터 파일(650)에 세트되는 일 없이 제2의 명령인 ORI 명령을 실행하기 위한 연산기(651)의 한쪽의 입력(656)에 직접 또한 고속으로 공급된다. 한편, 연산기(651)의 다른 쪽의 입력(655)에는 제2의 명령의 이미디어트 데이터(124)의 32비트 확장 데이터가 공급된다. 이렇게 해서 제1의 명령인 LUI 명령과 제2의 명령인 ORI 명령인 2개의 명령을 1사이클로 고속으로 실행할 수가 있다.
이하 본 발명의 구성에 대해서 실시예와 함께 설명한다.
제6도는 본 발명의 1실시예인 데이터프로세서의 블록도이다. 이 데이터프로세서의 기본구성은 크게 분류하면 프로세서부(610), 프로그램메모리(620) 및 데이터 메모리(630)으로 구성되어 있다.
프로그램 메모리(620)은 명령 어드레스 버스(621) 및 명령 데이터 버스(622)에 의해 프로세서(610)과 접속되어 있다.
명령 어드레스 버스(621)은 32비트폭에서 4G 바이트까지 어드레싱이 가능하다.
명령 데이터 버스(622)는 64비트폭에서 1회의 전송으로 2명령을 동시에 프로그램 메모리(620)에서 페치될 수가 있다.
데이터 메모리(630)은 오퍼랜드 어드레스 버스(631) 및 오퍼랜드 데이터 버스(632)에 의해 프로세서(610)과 접속되어 있다.
오퍼랜드 어드레스 버스(631)은 32비트폭에서 4G 바이트까지 어드레싱이 가능하다.
오퍼랜드 데이터 버스(632)는 32비트폭에서 1회의 전송으로 1워드의 데이터가 데이터 메모리(630)에서 또는 데이터 메모리(630)에 페치 또는 저장될 수가있다.
또, 프로그램 메모리(620) 및 데이터 메모리(630)은 각각 명령 캐시 메모리와 데이터 캐시 메모리로서, 메인 메모리(도시하지 않음)의 명령 및 데이터의 일부의 복사를 유지 하는 것이다.
프로세서(610)은 명령의 어드레스를 계산하는 프로그램 카운터(643), 프리 페치한 명령을 유지하는 프리 페치 버퍼(640), 제1명령 레지스터(641), 제2명령 레지스터(642), 제1명령 디코더(644), 제2명령 디코더(645), 레지스터 파일(650), 연산기(651), 배럴 시프터(652), 메모리 어드레스 레지스터(MAR)(653), 메모리 데이터 레지스터(MDR)(654)로 형성된다.
프리페치 유닛인 프리페치 버퍼(640)은 64비트폭에서 프로그램 메모리(620)으로 부터 한번에 페치해온 2명령을 유지할 수 있다.
프리페치 버퍼(640)의 내용은 제1명령 레지스터(641) 및 제2명령 레지스터(642)에 빈곳이 생긴 시점에서 좌측 명령은 제1명령 레지스터(641)로, 우측 명령은 제2명령 레지스터(642)로 전송된다.
본 실시예에서는 빅 엔디언의 어드레스 부착을 채용하고 있으며, 프리페치 버퍼(640)에 유지된 2개의 명령중 좌측의 명령이 먼저 실행되고, 그 다음에 우측의 명령이 실행된다.
레지스터 파일(650)은 32비트폭의 레지스터, 32개의 R0, R1, R2, .... R31로 되고, 3포트의 리드 및 3포트의 라이트가 동시에 가능하다.
명령 실행 유닛은 연산기(651)과 배럴 시프터(652)로 구성되어 있다.
연산기(651)은 각각 32비트의 A측 입력(655)와 B측 입력(656)을 갖고, 그 입력의 산술 논리연산을 실행하는 ALU(Arithmetic and Logic Unit) 에 의해 구성되고, 배럴 시프터(652)는 B측 입력을 A측 입력의 자리수 만큼 시프트하는 기능을 갖는다.
제2도는 본 발명의 1실시예인 제1도의 데이터프로세서를 위한 명령의 서식을 설명하는 도면이다.
제2도에 도시한 바와 같이 1개의 명령은 32비트의 고정길이로서, 좌측끝에서 6비트, 5비트, 5비트, 16비트의 필드로 분할되어 있다.
좌측끝의 6비트의 필드(210)은 명령의 종류를 나타내는 연산코드(OP코드)이다.
다음의 5비트의 필드(220)은 명령의 실행결과를 저장하는 레지스터를 지정하는 종착 필드이다.
그 다음의 5비트의 필드(230)은 명령의 입력 레지스터의 한쪽을 지정하는 제1소스 필드이다.
우측끝의 16비트의 필드(240)은 또 한쪽의 입력을 지정하는 제2소스 필드이다. 제2소스 필드(240)은 제2도 (a)에 도시한 바와 같이 16비트의 이미디어트 데이터로서 사용 되는 경우와 제2도(b)에 도시한 바와 같이 우측 끝의 5비트(250)에 의해 레지스터를 지정하는 경우가 있다. 제2소스 필드를 상기한 것 중 어느 쪽의 사용방법으로 하는 가는 OP코드(210)의 좌측 끝의 비트로 지정되고, 0 일 때는 제2도(a), 1 일 때는 제2도(b)와 같이 사용된다. 제2도(a)형식의 명령을 이미디어트 명령 이라 하고, 제2도(b) 형식의 명령을 레지스터 명령이라 한다.
또한, 본 실시예에서는 레지스터 파일(650)의 레지스터의 수는 32개이고, 레지스터를 지정하는 경우에는 상기한 바와 같이 5비트를 필요로 한다.
제5도는 OP 코드(210)의 비트 할당을 도시한 것이다. LUI(Load Upper Immediate) 명령(510)은 제2 소스필드(240)의 16비트의 이미디어트 데이터의 우측에 16비트 분의 0 을 연결하고, 32비트의 이미디어트로 해서 종착 필드(220) 에 나타내는 레지스터에 저장 하는 명령 이다.
ADDI(Add Immediate) 명령(512)는 제2소스 필드(240)의 16비트의 이미디어트 데이터의 좌측에 제2소스필드(240)의 최상위 비트와 같은 값인 16비트분을 연결해서 32비트의 이미디어트로 부호 확장한후 제1소스 필드(230)에서 나타내는 레지스터의내용과 가산해서 종착필드(220)에 나타내는 레지스터에 저장하는 명령이다.
SUBI(Subtract Immediate) 명령(514)는 제2소스필드(240)을 ADDI명령(512)와 마찬가지로 32비트의 이미디어트로 부호확장한후 제1소스 필드(230)에서 나타내는 레지스터의 내용에서 감산하여 종착(220)에 나타내는 레지스터에 저장하는 명령이다.
ANDI(AND Immediate)명령(516)은 제2소스 필드(240)의 16비트의 이미디어트 데이터의 좌측에 16비트분의 0을 연결해서 32비트의 이미디어트로 확장한후 제1소스 필드(230)에서 나타내는 레지스터의 내용과의 사이에서 각 비트마다의 논리곱을 구하여 그 결과를 종착필드(220)에 나타내는 레지스터에 저장하는 명령이다.
ORI(OR Immediate)명령(518) 및 EORI (Exclusive OR Immediate) 명령(520)은 ANDI 명령(516)과 마찬가지로 각각 논리합, 배타적 논리합을 구하는 명령이다.
SLLI (Shiqt Left Logical Immediate) 명령(522)는 제1소스 필드(230)에서 나타내는 레지스터의 내용을 제2소스 필드(240)의 16비트의 이미디어트 데이터의 수만큼 좌측으로 시프트해서그 결과를 종착 필드(220)에 나타내는 레지스터에 저장하는 명령이다. 이때 우측끝에서 시프트인 되는 값은 0이다.
SRLI (Shiqt Right Logic Immediate)명령(524)는 SLLI명령(522)와는 역으로 우측으로 시프트하는 명령이다. 이때 좌측끝에서 시프트인되는 값은 0이다.
SRAI (Shiqt Right Arithmetic Immediate)명령(526)은 SRLI명령(524)와 마찬가지로 우측으로 시프트하는 명령이지만 좌측끝에서 시프트인되는 값은 0이 아니라 제1소스 필드(230)에서 나타내는 레지스터의 우측끝의 비트와 같은 값이다.
LD(Load) 명령(530)은 제2소스 필드(240)을 ADDI명령(512)와 마찬가지로 32비트의이미디어트로 부호 확장한후 제1소스 필드(230)에서 나타내는 레지스터의 내용과 가산한 결과를 어드레스로 하고, 그 어드레스에서 나타낸 데이터 메모리의 내용을 종착필드(220)에 나타내는 레지스터에 저장하는 명령이다.
ST(Store) 명령(532)는 LD 명령(530)과 마찬가지로 어드레스를 구하고, 종착 필드 (220)에 나타내는 레지스터의 내용을 그 어드레스에서 나타낸 데이터 메모리에 저장하는 명령이다.
JUMP(Jump) 명령(534)는 무조건 분기 명령으로 LD명령(530)과 마찬가지로 어드레스를 구하고, 그 어드레스로 프로그램의 흐름을 바꾸는 명령이다.
Bcc(Branch)명령(536)은 조건부 분기 명령으로 조건이 성립했을 때 제2소스 필드(240)의 16비트의 이미디어트 데이터의 좌측에 제2소스 필드(240)의 최상위 비트와 같은 값인 16비트분을 연결해서 32비트의 이미디어트로 부호확장한 값과 현재의 명령의 어드레스를 나타내는 PC(Program Counter)의 값을 가산한 어드레스로 프로그램의 흐름을 바꾸는 명령이다. 또한, 이때의 분기조건은 종착 필드(220)의 5비트에 의해서 지정된다.
ADD명령(552)에서 SRA 명령(566)까지는 각각 ADDI명령(512)에서 SRAI명령(526)에 있어서 제2소스 오퍼랜드로서 레지스터의 내용을 사용하는 명령이다.
제1도(a), (b)는 본 발명의 1실시예의 특징인 2개의 명령을 동시 실행하기 위한 특징적인 구성과 동작을 제6도에 추가해서 도시한 것이다.
제1도(a)는 본 발명의 1실시예의 특징인 LUI 명령(그 명령 실행을 위해 연산기(651)을 사용하지 않고, 본래는 배럴 시프터(652)에 의한 시프트 결과를 레지스터 파일(650)의 1개의 레지스터에세트하는 명령)과 다른 명령(그 명령실행을 위해 배럴 시프트(652)를 사용하지 않고, 연산기(651)과 레지스터 파일(650)의 LUI 명령의 사용 레지스터를 사용하는 명령)을 동시에 실행하기 위한 구성의 동작을 도시한 도면이다.
LUI명령이 64비트 명령 데이터 버스(622)의 좌측에서 페치되고, ORI 명령이 우측에서 페치된 경우이다.
따라서 LUI명령으로 본래는 이미디어트 데이터(114)를 배럴 시프트(652)에서 좌측 시프트한후 레지스터파일(650)의 R3레지스터에 세트한다. 다음의 ORI 명령으로 본래는 직전의 LUI 명령으로 R3 레지스터에 세트된 좌측 시프트후의 이미디어트 데이터(114)와 32비트로 확장된 이미디어트 데이터(124)의 논리합의 데이터를 R3 레지스터에 재차 세트하는 것이다.
그러나 본래대로 선행하는 LUI명령에 의해서 배럴 시프터(652)에 의한 좌측시프트 데이터를 R3 레지스터에 세트 했다고 하여도, R3 레지스터에 세트된 이 데이터는 후속의 ORI 명령에 의한 논리합의 데이터에 의해서 갱신되므로 선행하는 LUI 명령에 의한 좌측 시프트 데이터의 R3레지스터로의 세트는 무의미하게 된다.
이것에 대해서 제1도(a)의 본 실시예에 의하면 LUI 명령에 의한 배럴 시프트(652)의 시프트 결과는 레지스터 파인(650)에 세트되는 일 없이 ORI명령을 실행하기 위한 연산기(651)의 한쪽의 입력(656)에 공급된다. 연산기(651)의 다른쪽의 입력(655)에는 32비트로 확장된 이미디어트 데이터(124)가 공급된다. 이렇게해서 제1도(a)의 실시예에 의하면 LUI 명령과 ORI 명령인 2개의 명령을 1사이클로 실행할 수가 있다.
또한, 여기서 R3 레지스터에 세트된 32비트 길이의 이미디어트 데이터는 다음의 명령에서 32비트 길이의 정수로서 산술연산명령(ADD, SUB 등)이나 논리 연산명령(AND, OR, EOR 등)에 이용된다. 또, 32비트 길이의 어드레스로서 메모리 조작명령(LD, ST)나 분기명령(Jump)에 이용되는 일도 있다.
이하 이 2개의 명령의 동시 실행에 대해서 상세히 설명한다.
64비트 명령 데이터 버스(622)의 좌측에서 페치된 LUI명령은 제1명령 레지스터(641)에 세트되고, 동시에 64비트 명령 데이터 버스(622)의 우측에서 페치된 ORI명령은 제2명령 레지스터(642)에 세트된다.
제1명령 디코더(644)는 제1명령 레지스터(641)의 OP코드필드(111)을 해독해서 LUI명령인 것을 검출하면 제2명령 디코더(645)를 유효로해서 제2명령 레지스터에 세트되어있는 명령을 해독하여 LUI 명령의 실행과 같은 사이클로 병렬로 실행을 개시한다.
즉, LUI명령의 동작으로서 제1명령 레지스터(641)의 제2소스 필드(114)의 16비트 이미디어트의 우측에 0을 16비트분 연결해서 32비트 길이로 확장한 것을 시프터(652)에서 구한다. 또한, 시프터(652)는 제1명령 레지스터(641)의 OP코드(111)을 해독하는 제1디코더(644)에 의해 제어된다.
또, 이때 비교기(131)에 의해서 제1명령 레지스터(641)의 종착 필드(112)와 제2명령 레지스터(642)의 종착필드(122)를 비교하여 동일하지 않은 경우는 제1명령 레지스터(641)의 종착 필드(112)에서 나타내는 R3 레지스터에 시프터(652)의 결과를 저장한다. 제1도(a)의 경우는 동일하므로 시프터(652)의 결과의 R3레지스터로의 저장은 실행하지 않는다.
또, 동시에 ORI 명령의 동작으로서는 제2소스 필드(124)의 16비트 이미디어트를 32비트 길이로 확장한다. 그리고, 비교기(132)에 의해서 제1명령 레지스터(641)의 종착필드(112)와 제2명령 레지스터(642)의 제1소스 필드(123)을 비교하여 동일한(즉, LUI 명령의 종착 레지스터와 ORI 명령의 소스 레지스터가 동일한) 경우는 제1소스 필드(123)에 따른 R3 레지스터에서의 리드를 억제하고, 그 대신에 시프터(652)의 결과를 이용해서 32비트로 확장된 이미디어트 데이터(!24)와의 논리합연산을 실행한다. 이들 2개의 데이터의 논리합을 연산기(651)에서 구하고, 그 결과를 종착 필드(122)에서 나타내는 R3 레지스터에 저장한다. 또한, 연산기(651)은 제2명령 레지스터(642)의 OP코드(121)을 해독하는 제2디코더(645)에 의해서 제어된다. 또, 제2소스 필드(124)의 이미디어트의 확장도 제2디코더(645)에 의해서 제어된다.
다음에 실행 하는 명령은 프리페치 버퍼(640) 에 유지되어있는 명령 이므로 이 명령을 제1 명령 레지스터 (641) 및 제2 명령 레지스터 (642) 로 전송 해서 이하 마찬 가지로 실행 한다.
제1도(b)는 본 발명의 특징인 LUI명령(그 명령 실행을 위해 연산기(651)을 사용하지 않고, 본래는 배럴 시프터(652)에 의한 시프트 결과를 레지스터 파일(650)의 하나의 레지스터에 세트하는 명령)과 다른 명령(그 명령 실행을 위해 배럴 시프터(652)를 사용하지 않고, 연산기(651)을 사용하여 레지스터파일(650)의 LUI명령에 의한 세트 레지스터와 다른 레지스터에 세트를 실행하는 명령)을 동시에 실행할때의 또 하나의 동작을 도시한 도면이다.
ADD 명령이 64비트 명령 데이터 버스(622)의 좌측에서 페치되고, LUI 명령이 우측에서 페치된 경우이다. ADD명령으로 R1 레지스터의 내용과 R2 레지스터의 내용을 가산하여 R3 레지스터에 저장하고, LUI 명령으로 이미디어트 데이터를 R4 레지스터의 상위 비트에 세트한다.
이 경우 레지스터 파일(650)의 사용 레지스터사이에서 사용에 관한 경합이 발생하는 일이 없으므로 ADD 명령과 LUI 명령인 2개의 명령을 1사이클로 실행할 수가 있다.
이하, 제1도(b)의 동작에 대해서 상세히 설명한다.
먼저 64비트 명령 데이터 버스(622)의 좌측 에서 페치된 ADD 명령은 제1명령 레지스터(641)에 세트되고, 동시에 64비트 명령 데이터 버스(622) 의 우측 에서 페치된 LUI 명령은 제 2명령 레지스터(642) 에 세트 된다. 제2 명령 디코더(645)는 제2 명령 레지스터(642)의 OP 코드 필드(151)을 해독 해서 LUI 명령인 것을 검출 하면 제2 명령 디코더(645)를 유효로 해서 제1 명령 레지스터에 세트 되어 있는 명령의 실행과 같은 사이클로 병렬로 LUI 명령의 실행을 개시한다.
우선 ADD 명령의 동작으로서 제1명령 레지스터(641)의 제1소스 필드(143)에 따라 R1레지스터의 내용을 리드하고, 또 제2소스 필드(144)에 따라 R2 레지스터의 내용을 리드한다. 이들 2개 데이터의 곱을 연산기(651)에서 구하고, 그 결과를 종착필드(142)에서 나타내는 R3 레지스터에 저장한다. 또한, 연산기(651) 은 제1명령 레지스터(641)의 OP코드(141) 을 해독하는 제1디코더(644) 에 의해 제어된다. 또한, 이때 비교기(131) 에 의해서 제1명령 레지스터(641)의 종착 필드(142) 와 제2명령 레지스터(642) 의 종착 필드(152) 를 비교하여 동일한 (즉, ADD 명령의 종착 레지스터와 LUI 명령의 종착 레지스터가 동일한) 경우는 상기 ADD 명령의 실행 결과의 R3 레지스터로의 저장을 억제 하고, 그 대신에 LUI 명령의 실행 결과를 레지스터 R3에 저장한다.
또, 동시에 LUI명령의 동작으로서 제2명령 레지스터(642)의 제2소스 필드(154)의 16비트 이미디어트의 우측에 0을 16비트분 연결해서 32비트 길이로 확장한 것을 시프터(652)에서 구하고, 그 결과를 종착 필드(152)에서 나타내는 R4 레지스터에 저장한다. 또한, 시프터(652)는 제2명령 레지스터(642)의 OP 코드 (151)을 해독하는 제2디코더(645)에 의해서 제어된다.
다음에 실행하는 명령은 프리페치 버퍼(640)에 유지되어 있는 명령이므로 이 명령을 제1명령 레지스터(641) 및 제2명령 레지스터(642)로 전송해서 이하 마찬가지로 실행한다.
분기 명령에 있어서, 지연 분기의 방법을 사용하는 일이 자주 있다. 이 방법에서는 분기명령의 다음의 1사이클을 지연슬롯이라 하며, RISC 프로세서를 위해서 컴파일된 프로그램의 분기 명령의 직후의 명령을 이 사이클에 실행한다. 이 분기 명령의 직후의 명령 실행후 실제의 분기를 실행한다.
이 RISC 프로세서를 위해서 컴파일된 프로그램의 분기명령의 직후의 명령은 CISC(Complex Instruction Set Computer) 프로세서와같은 통상의 데이터프로세서를 위해서 컴파일된 프로그램의 분기명령의 직전의 명령에 대응하고 있다.
한편, 상술한 바와 같이 RISC 프로세서에서는 분기 명령의 직후의 명령(CISC프로세서의 경우의 분기 명령의 직전의 명령)을 먼저 실행한후 분기명령을 실행한다.
지연 분기 및 지연슬롯에 관해서는 Gerry Kane 저서인 mips RISC ARCHITECHTURE, P. 1∼ P. 9 또는 P.1∼P.11(1988년)에 상세히 기재되어 있다.
즉, 통상의 프로세서는 명령 페치, 명령 디코드, 명령 실행의 다단의 파이프 라인에 의한 명령의 병렬 처리를 실행하고 있다.
이 파이프 라인 병렬 처리를 위해 분기 명령에 의한 분기 선두 어드레스 계산을 실행하고 있는 동안에 명령 페치유닛은 분기 명령에 계속되는 명령을 속속 페치하는 처리를 속행한다.
종래의 CISC 프로세서에서는 분기를 실행할 때 선행적으로 페치한 분기명령에 계속되는 명령을 무효화해서 분기선두 명령을 새로 페치하여 명령 코드, 명령 실행하는 것이다. 따라서 CISC 프로세서에서는 그 실행에 2사이클을 필요로 하는 분기명령후에 자동적으로 아무런 작업을 하지 않는 1사이클(No Operation 의 사이클)이 삽입되고 만다.
한편, RISC 프로세서에서는 분기를 실행할 때 선행적으로 페치한 분기명령에 계속되는 명령(CISC 프로세서의 경우의 분기명령 직전의 명령)을 무효화하지않고, 먼저 이 명령을 실행한후에 분기명령을 실행하여 새로 분기 선두명령을 페치하는 것이다.
이와 같이 RISC 프로세서에서는 분기 명령 후에 무효화 되는 일이 없는 유효한 명령을 프로그램 중에서 배치하는 것에 의해 이 사이클을 유효하게 활용할 수가 있다. 이와 같은 분기 명령의 규격은 지연분기라 불리 우며, 분기 명령후의 1사이클은 지연 슬롯이라 불리우고 있다.
따라서 본 발명의 1 실시예에 의한 RISC 프로세서에 있어서, 지연 분기의 지연 슬롯과 관계 해서 LUI 명령이 있는 경우의 처리 방법에 대해서 설명 한다.
먼저 제1의 명령이 분기명령이고, 제2의 명령이 LUI명령인 경우 제1의 방법으로서는 LUI 명령을 분기명령과 동시에 실행하고, 지연 분기의 지연슬롯에서는 다음의 제3의 명령을 실행하는 것이 고려된다. 제2의 방법으로서 또 제1의 방법에 가해서 제3의 명령도 LUI 명령의 경우는 제4의 명령도 동시에 지연 슬롯으로 실행할 수 있다. 또, 역으로 제3의 명령이 통상의 명령이고, 제4의 명령이 LUI 명령의 경우에도 제3의 명령과 제4의 명령을 동시에 지연슬롯으로 실행할 수가 있다. 제3의 방법으로서는 지연분기의 지연슬롯에 LUI명령이 들어가 있는 경우에는 상기한 처리방법을 억제해서 이 LUI명령을 분기 명령과 동시에 실행 하지 않고, 지연슬롯으로 LUI명령을 실행하는 것도 고려할 수 있다.
또, 제1의 명령이 LUI 명령이고, 제1의 명령직전의 명령이 분기명령인 경우 제4의 방법으로서는 지연슬롯내에서 제1의 LUI 명령과 분기명령 직후의 제2의 통상의 명령을 동시에 실행하는 것도 고려할 수 있다. 제5의 방법으로서는 상기 제3의 방법과 마찬가지로 LUI명령과 다음의 명령의 동시 실행을 억제해서 지연슬롯의 LUI 명령을 단독으로 실행하는 것도 고려할 수 있다.
이상과 같이 지연슬롯에 관계해서 LUI명령이 있을때의 처리방법에는 각종의 방식이 고려되므로 미리 소프트 웨어(특히 컴파일러)와의 사이에서 명확하게 결정해둘 필요가 있다.
따라서 상기 제1도(a)의 설명에서는 LUI명령 직전의 명령은 분기명령이 아닌 경우에 대해서 설명하였다. 직전의 명령이 분기명령인 경우는 제1도(a)의 실시예에서 LUI 명령은 분기명령의 지연슬롯으로 실행되고, ORI명령은 LUI명령과 동시에 실행되지 않는다.
또한, 상기 제1도(b)의 설명에서는 LUI 명령 직전의 명령은 ADD 명령이고, 분기 명령이 아닌 경우에 대해서 설명하였다. 직전의 명령(좌측의 명령)이 분기명령의 경우는 제1도(b)의 실시예에서 LUI명령은 분기명령의 지연슬롯으로 실행되고, LUI명령은 좌측의 명령(분기명령)과 동시에 실행되지 않는다.
다음에 제1도 또는 제6도에 도시한 데이터프로세서가 2개의 명령을 동시 실행할 수 없고, 2개의 명령을 직렬로 실행하는 경우에 대해서 제3도(a), (b), (c), (d)를 참조해서 설명한다.
제3도(a)는 R1레지스터의 내용과 R2 레지스터의 내용을 가산해서 R3 레지스터에 저장하는 ADD 명령을 실행할때의 동작을 도시한 도면이다. 또한, 이 명령은 64비트 명령 데이터 버스(622)의 좌측에서 페치된 것으로 한다.
제1명령 레지스터(641)의 제1소스 필드(311) 및 제2소스 필드(312)에 따라서 R1 레지스터 및 R2 레지스터의 내용을 리드하고, 연산기(651)에서 가산한 결과를 종착 필드(313)에서 나타내는 R3 레지스터에 저장한다.
또한, 연산기(651)은 제1명령 레지스터(641)의 OP코드(314)를 해독하는 제1디코더(644)에 의해서 제어된다.
다음에 실행하는 명령은 제2명령 레지스터(642)에 유지되어 있는 명령이므로 이 명령을 제1명령 레지스터(641)로 전송해서 이하 마찬가지로 실행한다.
제3도(b)는 R1 레지스터의 내용과 이미디어트를 가산해서 R3 레지스터에 저장하는 ADDI 명령을 실행 할때의 동작을 도시한 도면이다. 또한, 이 명령은 64비트 명령 데이터 버스(622)의 좌측에서 페치된 것으로 한다. 제1명령 레지스터(641) 의 제1소스필드(321)에 따라서 R1레지스터의 내용을 리드하며, 또 제2소스 필드(322)의 16비트 이미디어트를 32비트 길이로 부호 확장한다. 이들 2개의 데이터를 연산기(651) 에서 가산하고, 그 결과를 종착 필드(323)에서 나타내는 R3 레지스터에 저장한다. 또한, 연산기(651) 은 제1명령 레지스터(641) 의 OP 코드(324) 를 해독하는 제1디코더(644)에 의해서 제어된다. 또 제2소스 필드(322)의 이미디어트의 부호 확장도 제1디코더(644)에 의해서 제어된다. 다음에 실행하는 명령은 제2명령 레지스터(642)에 유지되어 있는 명령이므로 이 명령을 제1명령 레지스터(641)로 전송해서 이하 마찬가지로 실행한다.
제3도(c)는 R1 레지스터의 내용과 이미디어트를 가산한 값을 어드레스로 하는 데이터 메모리의 내용을 R3 레지스터에 저장하는 LD명령을 실행할때의 동작을 도시한 도면이다. 또한, 이 명령은 64비트 명령 데이터 버스(622)의 좌측에서 페치된 것으로 한다. 제1명령 레지스터(641)의 제1소스 필드(331)에 따라서 R1 레지스터의 내용을 리드하며, 또 제2소스 필드(332)의 16비트 이미디어트를 32비트 길이로 부호 확장한다. 이들 2개의 데이터를 연산기(651)에서 가산하고, 그 결과를 MAR(653)으로 전송하여 데이터 메모리(630)을 액세스 한다.
데이터 메모리(630)에서 리드된 데이터는 MDR(654)를 경유해서 종착필드(313)에서 나타내는 R3 레지스터에 저장한다. 다음에 실행하는 명령은 제2명령 레지스터(642)에 유지되어 있는 명령이므로 이 명령을 제1명령 레지스터(641)로 전송해서 이하 마찬가지로 실행한다.
제3도(d)는 R1 레지스터의 내용과 이미디어트를 가산한 값을 어드레스로하는 데이터 메모리(630)의 영역으로 R3 레지스터의 내용을 저장하는 ST 명령을 실행할때의 동작을 도시한 도면이다. 또한, 이 명령은 64비트 명령 데이터 버스(622)의 좌측에서 페치된 것으로 한다. 제1명령 레지스터(641)의 제1소스 필드(341)에 따라서 R1 레지스터의 내용을 리드하며, 또 제2소스 필드(342)의 16비트 이미디어트를 32비트 길이로 부호확장한다.
이들 2개의 데이터를 연산기(651)에서 가산하고, 그 결과를 MAR(653)으로 전송하여 데이터 메모리(63)을 액세스한다. 한편, 라이트 데이터는 종착 필드(343)에서 나타내는 R3 레지스터에서 리드되고, MDR(654)를 경유해서 데이터 메모리(630)으로 전송되어 저장된다. 다음에 실행하는 명령은 제2명령 레지스터(642)에 유지되어있는 명령이므로 이 명령을 제1명령 레지스터(641)로 전송해서 이하 마찬가지로 실행한다.
다음에 제1도 및 제6도의 실시예에 의한 데이터 프로세서의 파이프 라인 처리에 대해서 상세히 설명한다.
제4도(a)는 본 실시예의 프로세서에서 2개의 명령을 직렬 실행할때의 파이프 라인 처리에 대해서 도시한 도면이다. 또한, 명령 A에서 F가 제4도(c)에 도시한 바와 같이 프로그램 메모리(620)에 저장되어 있었다고 한다.
먼저, 제4도(a)의 하나의 상자는 각 파이프 라인 스테이지의 1클럭 사이클의 동작에 대응한다. 파이프 라인의 스테이지는 IF(명령 페치), ID(명령 디코드), EX(실행), W(결과의 저장)의 4개의 스테이지로 된다. 이하 각 클럭 사이클마다 설명한다.
[1클럭 사이클째]
프로그램 메모리(620)에서 64비트분의 명령(A와 B)를 페치해서 프리페치 버퍼(640)에 세트한다.
(2클럭 사이클째)프리페치 버퍼(640)에 유지하고 있는 2개의 명령(A와 B)를 각각 제1명령 레지스터(641) 및 제2명령 레지스터(642)에 세트하고, 제1명령 디코더(644) 및 제2명령 디코더(645)에서 해독을 실행한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이터 확장이 필요한 경우에는 이 사이클에서 실행한다.
또, 프로그램 메로리(620)에서 다음의 64비트분의 명령(C와 D)를 페치해서 프리페치 버퍼(640)에 세트한다.
[3클럭 사이클째]
제1명령 디코더(644) 에서 해독한 명령 A를 실행하고, 다음에 제2명령 레지스터(642)의 명령 B를 제1명령 레지스터(641) 에 세트 하여 제1 명령 디코더(644)에서 해독을 실행한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이터 확장이 필요한 경우에는 이 사이클에서 실행한다.
[4클럭 사이클째]
명령 A의 실행 결과를 레지스터에 저장하고, 제1명령디코더(644)에서 해독한 명령 B을 실행한다. 동시에 프리페치 버퍼(640)에 유지되어있는 2개의 명령(C와 D)를 각각 제1명령 레지스터(641) 및 제2명령 레지스터(642)에 세트하여, 제1명령 디코더(644) 및 제2명령 디코더(645)에서 해독을 실행한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이타 확장이 필요한 경우에는 이 사이클에서 실행한다. 또, 프로그램 메모리(620)에서 다음의 64비트분의 명령(E와 F)을 페치해서 프리페치 버퍼(640)에 세트한다. 이하 마찬가지로 동작한다.
제4도(b)는 본 실시예의 프로세서에서 본 발명의 특징인 2개의 명령을 동시에 실행할때의 파이프 라인 처리에 대해서 도시한 도면이다. 또한, 명령 A에서 F가 제4도(c)에 도시한 바와 같이 프로그램 메모리(620)에 저장되어 있었다고 한다. 여기서 명령A가 LUI명령이라고 한다. 이하 각 클럭 사이클마다 설명한다.
[1클럭 사이클째]
프로그램 메모리(620)에서 64비트분의 명령(A와 B)를 페치해서 프로페치 버퍼(640)에 세트한다.
[2클럭 사이클째]
프리페치 버퍼(640)에 유지하고 있는 2개의 명령(A와 B)를 각각 제1명령 레지스터(641) 및 제2명령 레지스터(642)에 세트하고, 제1명령 디코더(644) 및 제2명령 디코더(645)에서 해독을 실행한다. 그 결과, 명령 A가 LUI 명령인 것을 알 수 있으므로 다음의 사이클에서 이2개의 명령을 동시에 실행할 준비를 한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이터 확장이 필요한 경우에는 이 사이클에서 실행한다. 또, 프로그램 메모리(620)에서 다음의 64비트분의 명령(C와 D)를 페치해서 프리페치 버퍼(640)에 세트한다.
[3클럭 사이클째]
제1명령 디코더(644)에서 해독한 명령 A(LUI 명령) 및 제2명령 디코더(645)에서 해독한 명령 B를 동시 실행하고, 프리페치 버퍼(640)에 유지하고 있는 2개의명령(C와 D)를 제1명령 레지스터(641) 및 제2명령 레지스터(642)에 세트하여 제1명령 디코더(644) 및 제2명령 디코더(645)에서 해독을 실행한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이터 확장이 필요한 경우에는 이 사이클에서 실행한다.
또, 프로그램 메모리(620)에서 다음의 64비트분의 명령(E와 F)를 페치해서 프리페치 버퍼(640)에 세트한다.
[4클럭 사이클째]
명령 A(LUI명령) 및 명령 B의 실행 결과를 레지스터에 저장하고, 제1명령 디코더(644)에서 해독한 명령 C를 실행한다. 제2명령 레지스터(642)의 명령 D를 제1명령 레지스터(641)에 세트하여 제1명령 디코더(644)에서 해독을 실행한다. 또한, 이때 레지스터의 리드 및 이미디어트의 데이터 확장이 필요한 경우에는 이 사이클에서 실행한다. 이하 마찬가지로 동작한다.
또한, 제4도(b)에서는 명령 A가 LUI 명령인 경우에 대해서 설명했지만 제1도(b)에서 설명한 바와같이 명령 A가 다른 명령이고, 명령 B가 LUI명령의 경우도마찬가지로 이 2개의 명령을 동시에 실행할 수 있는 것을 알 수 있다.
이상 설명한 본 실시예에 의하면 각 명령의 서식이 한정되어 있으므로 명령의 해독이 용이하게 되어 명령 디코더가 2개로 증가해도 회로 규모는 그다지 증대하는 일은 없다.
또, 본 실시예에 의하면 이미디어트 데이터를 조작하는 명령의 OP 코드는 레지스터를 조작하는 명령의 OP코드와 좌단의 1비트만 다를 뿐이므로 연산기(651)등을 위한 제어신호 생성등을 위해 명령해독이 어느 쪽의 명령이라도 공통화할 수 있어 명령 디코더의 간략화가 가능하다.
또, 이미디어트를 조작하는가 아닌가는 OP 코드의 좌단의 1비트만 판단할 수 있으므로 이미디어트 생성회로의 제어신호등을 생성하기 위한 명령 디코더의 간략화가 가능하다.
따라서 본 실시예에 의하면 데이터폭이 넓은 버스를 사용해서 1사이클에서 페치한 2개의 명령을 동시에 실행할수 있으므로 파이프 라인 스테이지 사이의 부하를 균일하게 할 수있어 하드웨어회로의 유효한 이용이 가능하게 된다.
특히 본 실시예에 의하면 종래의 명령 서식을 바꾸지 않고, 32비트 길이의 이미디어트를 1사이클에서 조작할 수 있게 되어 호환성을 유지하면서 성능향상을 도모할 수가 있다.
또, 본 실시예에서는 LUI명령이 분기명령의 지연슬롯에 있는 경우에는 다른 명령과의 동시 실행을 억제하고 있으므로 종래의 프로그램을 그대로 실행해도 나쁜 영향을 주는 일 없이 호환성을 유지할 수가 있다.
이상 기술한 바와같이, 본 발명에 의하면 전후의 의존관계를 고려하면서 2개의 명령을 동시에 실행하는 명령제어방법을 용이하게 실현할 수있다.
따라서 피크시에는 종래의 2배의 처리성능을 갖는 데이터프로세서를 용이하게 실현할 수있다.

Claims (8)

  1. 명령코드길이가 소정의 비트길이로 고정된 축소명령 세트컴퓨터(RISC)구조를 사용하는 데이터프로세서에 있어서, 상기 소정의 비트길이를 각각 갖는 제1과 제2의 명령을 메모리에서 페치하고, 상기 제1과 제2의 명령을 병렬로 출력하는 명령페치유닛, 상기 명령페치유닛에서 받은 상기 제1의명령을 디코드하는 제1의 명령디코더, 상기 명령페치유닛에서 받은 제2의 명령을 디코드하는 제2의 명령디코더, 연산기, 시프터 및 여러개의 레지스터의 레지스터파일을 적어도 갖고, 상기 제1의 명령디코더로 부터의 디코드결과의 상기 제2의 명령디코더로 부터의 디코드결과중의 어느 하나에 의해 제어되는 명령실행유닛, 상기 명령페치유닛에서 출력된 상기 제1의 명령의 종착필드와 상기 명령페치유닛에서 출력된 상기 제2의 명령의 제1의 상기 소스필드를 포함하는 제1의 입력을 비교하는 제1의 비교기 및 상기 명령페치유닛에서 출력된 상기 제1의 명령은 제1의 이미디어트데이타에 관련된 상기 시프터를 동작시키도록 지시하는 제1의 이미디어트명령이고, 상기 명령페치유닛에서 출력된 상기 제2의 명령은 제2의 이미디어트데이타에 관련된 상기 연산기를 동작시키도록 지시하는 제2의 이미디어트명령이며, 상기 제1의 비교기가 상기 제1과 제2의 명령이 동일한 것을 나타낼 때, 상기 연산기의 입력으로 상기 시프터의 출력을 직접 공급하는 신호전달경로를 포함하며, 상기 제1의 이미디어트명령의 상기 제1의 이미디어트데이타에 관련되어 동작하는 상기 시프터의 시프트연산결과는 상기 신호전달경로를 거쳐 상기 연산기의 상기 입력에 공급되고, 상기 제2의 이미디어트 명령의 상기 제2의 이미디어트데이타에 관련되어 동작하는 상기 연산기의 상기 연산결과는 상기 레지스터파일내의 지정된 레지스터내에 저장되고, 이것에 의해 상기 연산기, 상기시프터 및 상기 레지스터파일을 사용하는 1클럭 사이클내에서 상기 제1과 제2의 이미디어트명령을 동시에 실행하는 데이타프로세서.
  2. 제1항에 있어서, 상기 명령페치유닛에서 출력된 상기 제1의 명령의 상기종착필드와 상기 명령페치유닛에서 출력된 상기 제2의 명령의 상기 종착필드를 포함하는 제2의 입력을 비교하는 제2의 비교기를 또 포함하며, 상기 제1 및 제2의 비교기가 상기 제1과 제2의 명령이 동일한 것을 나타낼 때, 상기 시프터의 출력이 상기 연산기의 입력으로 신호전달경로를 거쳐서 직접 공급되는 데이타프로세서.
  3. 제1항에 있어서, 상기 제1의 이미디어트 명령은 상기 시프터를 사용하여 상기 제1의 이미디어트데이타를 소정의 비트수만큼 좌측으로 시프트하는 로드 어퍼 이미디어트(LUI)명령이고, 상기 제2의 이미디어트명령은 상기 연산기를 사용하는 상기 제2의 이미디어트데이타에 관련된 데이터와 상기 제2의 이미디어트 명령의 상기 제1의 소스필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에서 리드된 정보에 관련해서 동작하고, 상기 레지스터파일내의 하나의 레지스터에 상기 논리연산결과를 저장하는 이미디어트명령인 데이타프로세서.
  4. 제3항에 있어서, 상기 제2의 이미디어트명령은 상기 하나의 레지스터에 리드한 정보와 상기 제2의 이미디어트데이타에 관련된 데이터사이의 OR 연산을 계산하는 OR이미디어트명령인 데이타프로세서.
  5. 명령코드길이가 소정의 비트길이로 고정된 축소명령 세트컴퓨터(RISC)구조를 사용하는 데이터프로세서에 있어서, 상기 소정의 비트길이를 각각 갖는 제1과 제2의 명령을 메모리에서 페치하고, 상기 제1과 제2의 명령을 병렬로 출력하는 명령 페치유닛, 상기 명령페치유닛에서 공급된 상기 제1의 명령의 연산코드를 입력으로써 받는 제1의 명령디코더, 상기 명령페치유닛에서 공급된 상기 제2의 명령의 연산코드를 입력으로써 받는 제2의 명령디코더, 연산기, 시프터 및 여러개의 레지스터의 레지스터파일을 적어도 갖고, 상기 제1의 명령디코더로 부터의 디코드결과와 상기 제2의 명령디코더로 부터의 디코드결과중의 어느 하나에 의해 제어되는 명령실행유닛, 상기 명령페치유닛에서 출력된 상기 제1의 명령의 종착필드의 정보와 상기 명령페치유닛에서 출력된 상기 제2의 명령의 제1의 소스필드의 정보를 비교하는 제1의 비교기 및 레지스터파일을 바이패스하기 위해 상기 시프터의 출력을 상기 연산기의 입력으로 공급하고, 상기 명령페치유닛에서 출력된 상기 제1의 명령은 이미디어트데이타에 관련해서 상기 시프터가 아닌 상기 연산기를 사용하고, 상기 제1의 이미디어트명령의 상기 이미디어트데이타에 관련해서 상기 제1의 이미디어트명령의 상기 종착필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에 상기 시프터의 시프트연산결과를 통상 저장하는 제1의 이미디어트 명령이고, 상기 명령페치유닛에서 출력된 상기 제2의 명령은 이미디어트데이타에 관련해서 상기 연산기가 아닌 상기 시프터를 사용하고, 상기 제2의 이미디어트명령의 상기 이미디어트데이타에 관련해서 상기 제2의 이미디어트 명령의 상기 종착필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에 상기 연산기의 연산결과를 통상 저장하는 제2의 이미디어트 명령이고, 상기 제1의 이미디어트 명령과 상기 제2의 이미디어트 명령이 상기 명령페치유닛에서 병렬로 출력되고, 상기 제1의 비교기는 그 입력이 서로 동일한 것을 비교하여 검출한다는 조건하에서는 상기 시프터의 상기 출력을 상기 레지스터파일로 공급하지 않는 신호전달경로를 포함하며, 상기 조건하에서 상기 제1의 이미디어트 명령의 상기 이미디어트데이타에 관련해서 상기 시프터의 상기 시프트연산결과는 상기 신호 전달경로를 거쳐서 상기 연산기의 입력이 아닌 상기 레지스터파일내의 상기 지정된 레지스터로 공급되고, 상기 제2의 이미디어트명령의 상기 이미디어트데이타에 관련해서 상기 연산기의 연산결과는 상기 레지스터파일내의 상기 지정된 레지스터에 저장하며, 상기 연산기, 상기 시프터 및 상기 레지스터파일을 사용하여 1클럭사이클내에서 상기 제1과 제2의 이미디어트 명령이 동시에 실행되는 데이터프로세서.
  6. 제5항에 있어서, 상기 명령페치유닛에서 출력된 상기 제1의 명령의 상기 종착필드의 상기 정보와 상기 명령페치유닛에서 출력된 상기 제2의 명령의 상기 종착필드의 정보를 비교하는 제2의 비교기를 또 포함하며, 제2의 비교기는 그 비교입력이 서로 동일한 것을 비교하여 검출하는 데이타프로세서.
  7. 제5항에 있어서, 상기 제1의 이미디어트명령은 상기 시프터를 사용하여 소정의 비트수만큼 상기 이미디어트데이타를 좌측으로 시프트하고, 상기 종착필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에 상기 시프터로 부터의 시프트결과를 통상 저장하는 로드 어퍼 이미디어트(LUI)명령이고, 상기 제2의 이미디어트명령은 상기 제1의 소스필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에서 정보를 통상 리드하고, 상기 제1의 소스필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에서 리드한 정보와 상기 연산기를 사용하는 것에 의해 상기 이미디어트데이타에 관련된 데이터의 논리연산을 통상 실행하며, 상기 종착필드에 의해 지정된 상기 레지스터파일내의 하나의 레지스터에 상기 논리연산결과를 저장하는 이미디어트명령인 데이터프로세서.
  8. 제7항에 있어서, 상기 제2의 이미디어트명령은 상기 하나의 레지스터에서 리드한 정보와 상기 이미디어트데이타에 관련된 데이터사이의 OR연산을 계산하는 OR이미디어트명령인 데이타프로세서,
KR1019900017816A 1989-11-08 1990-11-05 2개의 명령이 동시 실행 가능한 데이타 프로세서 KR0178078B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP28887489 1989-11-08
JP1-288874 1989-11-08

Publications (2)

Publication Number Publication Date
KR910010304A KR910010304A (ko) 1991-06-29
KR0178078B1 true KR0178078B1 (ko) 1999-05-15

Family

ID=17735881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900017816A KR0178078B1 (ko) 1989-11-08 1990-11-05 2개의 명령이 동시 실행 가능한 데이타 프로세서

Country Status (5)

Country Link
US (1) US5269007A (ko)
EP (1) EP0427245B1 (ko)
JP (1) JP2816248B2 (ko)
KR (1) KR0178078B1 (ko)
DE (1) DE69032174T2 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JP3105197B2 (ja) 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP2539974B2 (ja) * 1991-11-20 1996-10-02 富士通株式会社 情報処理装置におけるレジスタの読出制御方式
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
DE69415126T2 (de) * 1993-10-21 1999-07-08 Sun Microsystems Inc., Mountain View, Calif. Gegenflusspipelineprozessor
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5542059A (en) * 1994-01-11 1996-07-30 Exponential Technology, Inc. Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order
JPH07219769A (ja) * 1994-02-07 1995-08-18 Mitsubishi Electric Corp マイクロプロセッサ
WO1995022102A1 (en) * 1994-02-08 1995-08-17 Meridian Semiconductor, Inc. Method and apparatus for simultaneously executing instructions in a pipelined microprocessor
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5619663A (en) * 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
JP3543181B2 (ja) * 1994-11-09 2004-07-14 株式会社ルネサステクノロジ データ処理装置
US5649174A (en) * 1994-12-09 1997-07-15 Vlsi Technology Inc. Microprocessor with instruction-cycle versus clock-frequency mode selection
US5659785A (en) * 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
JP2798121B2 (ja) * 1995-08-04 1998-09-17 日本電気株式会社 データ処理装置
JP3658072B2 (ja) * 1996-02-07 2005-06-08 株式会社ルネサステクノロジ データ処理装置およびデータ処理方法
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US5870577A (en) * 1996-11-27 1999-02-09 International Business Machines, Corp. System and method for dispatching two instructions to the same execution unit in a single cycle
US5864341A (en) * 1996-12-09 1999-01-26 International Business Machines Corporation Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding
US6061780A (en) * 1997-01-24 2000-05-09 Texas Instruments Incorporated Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
WO1998033115A1 (fr) 1997-01-24 1998-07-30 Mitsubishi Denki Kabushiki Kaisha Processeur de donnees
US6260137B1 (en) * 1997-09-12 2001-07-10 Siemens Aktiengesellschaft Data processing unit with digital signal processing capabilities
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
JP3683248B2 (ja) * 2002-10-22 2005-08-17 富士通株式会社 情報処理装置及び情報処理方法
US8006114B2 (en) * 2007-03-09 2011-08-23 Analog Devices, Inc. Software programmable timing architecture

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
JPS6015746A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd デ−タ処理装置
GB8401807D0 (en) * 1984-01-24 1984-02-29 Int Computers Ltd Pipelined data processing apparatus
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit

Also Published As

Publication number Publication date
JP2816248B2 (ja) 1998-10-27
JPH03218523A (ja) 1991-09-26
KR910010304A (ko) 1991-06-29
EP0427245A3 (en) 1992-01-29
DE69032174T2 (de) 1998-12-03
DE69032174D1 (de) 1998-04-30
EP0427245B1 (en) 1998-03-25
US5269007A (en) 1993-12-07
EP0427245A2 (en) 1991-05-15

Similar Documents

Publication Publication Date Title
KR0178078B1 (ko) 2개의 명령이 동시 실행 가능한 데이타 프로세서
US5233694A (en) Pipelined data processor capable of performing instruction fetch stages of a plurality of instructions simultaneously
KR100254007B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타프로세서
KR100236525B1 (ko) 넓은 데이타 폭의 프로세서에서 다기능 데이타 정렬기
US5303356A (en) System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US6345357B1 (en) Versatile branch-less sequence control of instruction stream containing step repeat loop block using executed instructions number counter
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
US5924114A (en) Circular buffer with two different step sizes
US6670895B2 (en) Method and apparatus for swapping the contents of address registers
US9201657B2 (en) Lower power assembler
JP5068529B2 (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
JP2006053830A (ja) 分岐予測装置および分岐予測方法
US5072372A (en) Indirect literal expansion for computer instruction sets
Song Demystifying epic and ia-64
WO2005036384A2 (en) Instruction encoding for vliw processors
JPH0667882A (ja) データ処理装置

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee