KR0160602B1 - 데이터 처리장치 - Google Patents

데이터 처리장치 Download PDF

Info

Publication number
KR0160602B1
KR0160602B1 KR1019980007835A KR19980007835A KR0160602B1 KR 0160602 B1 KR0160602 B1 KR 0160602B1 KR 1019980007835 A KR1019980007835 A KR 1019980007835A KR 19980007835 A KR19980007835 A KR 19980007835A KR 0160602 B1 KR0160602 B1 KR 0160602B1
Authority
KR
South Korea
Prior art keywords
instruction
register
data
instructions
bus
Prior art date
Application number
KR1019980007835A
Other languages
English (en)
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 가부시기 가이샤 히다찌 세이사꾸쇼
Application granted granted Critical
Publication of KR0160602B1 publication Critical patent/KR0160602B1/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, 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Abstract

본 발명은 메모리 인터페이스로부터 명령을 받는 명령 유닛, 상기 명령 유닛으로부터 읽혀진 제 1 및 제 2 명령을 저장하는 적어도 2개의 명령 레지스터, 상기 명령 유닛으로부터 명령을 읽도록 프로그램 카운터를 제어하는 시퀀서, 데이터를 저장하는 레지스터 파일, 상기 레지스터 파일로부터 상응한 데이터를 읽고 명령 레지스터로부터 읽혀진 명령에 따라 병렬로 산술연산을 행하는 적어도 2개의 산술 연산 유닛, 데이터를 저장하는 복수의 레지스터, 각 산술 연산 유닛의 데이터를 상기의 레지스터로 송출하는 제 1 데이터 버스, 각 레지스터의 데이터를 각 산술 연산 유닛에 송출하는 제 2 데이터 버스, 및 제 1 데이터 버스와 제 2 데이터 버스를 연결하는 복수의 버스 스위치를 포함하는 데이터 처리장치를 제공한다.

Description

데이터 처리장치
본 발명은 미니컴퓨터(minicomputer), 마이크로컴퓨터(microcomputer)등의 중앙처리장치(central processing unit)에 관한 것으로, 특히 고속동작에 적합한 데이터 처리장치에 관한 것이다.
종래로 부터 계산기의 고속화를 위하여 여러 가지 연구가 행해지고 있다. 대표적인 수법으로 파이프라인(pipeline)방식이 있다. 파이프라인 방식이라 함은 하나의 명령처리를 완전하게 종료하고 난 후 다음의 명령을 시작하는 것이 아니라, 하나의 명령을 복수 스테이지(stage)로 나누어 최초의 명령이 2번째의 스테이지에 당도했을 때 다음 명령의 최초 스테이지의 처리를 시작하도록 버킷 릴레이(bucket-relay)식으로 처리하는 방식이다. 이와 같은 방식에 관해서는 도미다 마사히로(富田眞治) 저 「병렬계산기 구성론」 쇼고오도오(昭晃堂) pp.25 내지 68에 상세히 논술되어 있다. n단 파이프라인 방식을 사용하면 각각의 파이프라인 스테이지에서 처리되고 있는 명령은 1개이지만 전체적으로 보면 n개의 명령을 동시에 처리할 수가 있어 파이프라인 피치마다 1개의 명령처리를 종료할 수가 있다.
그리고 계산기의 명령 아키텍처(architecture)가 그 처리방식, 처리성능에 미치는 영향이 큰 것은 주지이다. 명령 아키텍처의 관점으로부터 계산기를 분류하면 CISC(Complex Instruction Set Computer)와 RISC(Reduced Instruction Set Computer)로 나누어진다. CISC에서는 마이크로 명령을 사용하여 복잡한 명령을 처리한다. 이것에 대하여 RISC에서는 명령을 간단한 것으로 좁히는 대신에 마이크로명령을 사용하지 않고 하드 와이어드(hard wired)논리 제어로 고속화를 도모하고 있다. 이하 종래의 CISC, RISC의 양자에 관하여 하드웨어 개요와 그 파이프라인 동작에 관하여 설명한다.
도 2는 CISC형 계산기의 일반적 구성을 설명하는 도이다. 200은 메모리 인터페이스(memory interface), 201은 프로그램카운터(program counter), 202는 명령 캐시, 203은 명령 레지스터, 204는 명령 디코더, 205는 어드레스 계산 제어회로, 206은 마이크로 명령을 저장해 두는 제어메모리(control storage)(CS), 207은 마이크로 프로그램 카운터, 208은 마이크로 명령 레지스터, 209는 디코더, 210은 메모리와 데이터를 교환하는 기억 데이터 레지스터(MDR: Memory Data Register), 211은 메모리상의 연산어드레스를 나타내는 기억어드레스 레지스터(MAR: Memory Address Register), 212는 어드레스 가산기, 213은 레지스터 파일(register file), 214는 산술논리장치(ALU: Arithmetic Logical Unit)이다.
동작의 개요를 설명한다. 프로그램카운터(201)에 따라 나타낸 명령이 명령개시로부터 취출되고 신호 217을 통하여 명령 레지스터(203)에 세트된다. 명령 디코더(204)는 명령을 신호 218을 통하여 수취하고 마이크로 명령의 선두 어드레스(head address)신호 220을 통하여 마이크로프로그램 카운터(207)에 세트한다. 또 어드레스 계산 방법을 신호 219를 통하여 어드레스 계산 제어회로(205)에 지시한다. 어드레스 계산 제어회로(205)는 어드레스 계산에 필요한 레지스터를 판독하고, 어드레스 가산기(212)의 제어 등을 행한다. 어드레스 계산에 필요한 레지스터는 레지스터 파일(213)로부터 버스(bus)(226, 227)를 통하여 어드레스 가산기(212)에 송출된다. 한편 마이크로 명령은 매 기계 사이클마다 제어메모리(206)로부터 판독되어 디코더(209)에 의하여 디코더되고 산술논리장치(214), 레지스터 파일(213)을 제어하는데 사용된다. 224는 이들의 제어신호이다. 산술논리장치(214)는 레지스터로부터 버스(228, 229)를 통하여 보내지는 데이터를 연산하고 버스(230)를 통하여 다시 레지스터 파일(213)에 저장한다. 메모리 인터페이스(200)는 명령의 페치(fetch), 오퍼랜드(operand)의 페치등 메모리와의 교환을 행하는 회로이다.
다음에 도 2에서 나타낸 계산기의 파이프라인 동작을 도 3, 4, 5를 사용하여 설명한다. 파이프라인은 6단이다. 명령페치(IF: Instruction Fetch) 스테이지에서는 명령 캐시(202)로부터 명령이 판독되어 명령 레지스터(203)에 세트된다. 디코드(D: Decode) 스테이지에서는 명령 디코더(204)에 의하여 명령의 디코더가 행해진다. 어드레스(A: Address) 스테이지에서는 어드레스 가산기(212)에 의하여 오퍼랜드의 어드레스 계산이 행해진다. 오퍼랜드 페치(OF: Operand Fetch) 스테이지에서는 메모리 인터페이스(200)를 통하여 기억 어드레스 레지스터(211)에서 지적된 어드레스의 오퍼랜드가 페치되어 기억 데이터 레지스터(210)에 세트된다. 다음에 실행(EX: Execution) 스테이지에서는 레지스터 파일(213) 및 기억데이터 레지스터(210)로부터 데이터가 판독되어 산술논리장치(214)에 보내져 연산된다. 최후로 쓰기(W: Write) 스테이지에서는 연산결과가 레지스터 파일(213)중의 1개의 레지스터에 버스(230)를 통하여 저장된다.
그리고 도 3은 기본명령의 하나인 가산명령(ADD)을 연속하여 처리하는 상태를 나타낸 것이다. 1기계 사이클마다, 1명령 처리되고 있고 산술논리장치(214), 어드레스 가산기(212)와 함께 매 사이클 병렬하여 작동하고 있다.
도 4는 조건부 분기명령(BRAcc)의 처리상태를 나타낸 것이다. 시험(TEST)명령으로 플래그(flag)가 생성된다. 도 4는 조건 성립시의 흐름을 나타낸 것이다. 플래그 생성이 실험 스테이지에서 행해지므로 점프선명령의 페치까지 3사이클의 대기사이클이 발생한다. 파이프라인 단수를 증가시키면 증가시킬수록 이 대기사이클은 증가하여 성능향상의 어려움이 된다.
도 5는 복잡한 명령의 실행 흐름을 나타낸 것이다. 명령 1이 복잡한 명령이다. 복잡한 명령이라 함은 스트링 복수(string copy)와 같이 다수의 메모리 액세스(access)가 있는 명령등에서 통상 실행 스테이지를 다수회 연장함으로써 처리된다. 실행 스테이지는 마이크로 프로그램에 의하여 제어된다. 마이크로 프로그램은 1기계 사이클에 1회 억세스된다. 즉 복잡한 명령은 마이크로프로그램을 복수회 읽음으로써 처리한다. 이 때 실행 스테이지에는 1개의 명령밖에 들어가지 않으므로 다음의 명령(도 5의 명령 2)은 대기된다. 이와 같은 때에는 산술논리장치(214)는 항상 작동하고 있으나 어드레스 가산기(212)에는 유휴가 발생해 버린다.
다음에 RISC형 계산기에 관하여 설명한다. 도 6은 RISC형 계산기의 일반적 구성을 설명하는 도이다. 601은 메모리 인터페이스, 602는 프로그램 카운터, 603은 명령 캐시, 604는 시퀀서(sequencer), 605는 명령 레지스터, 606은 디코더, 607은 레지스터 파일, 608은 산술논리장치, 609는 기억데이터 레지스터, 610은 기억 어드레스 레지스터이다.
도 7에 기본명령의 처리 흐름을 나타낸다. 명령 페치(Instruction Fetch) 스테이지에서는 프로그램 카운터(602)에서 지시되는 명령이 명령캐시로부터 판독되어 명령 레지스터(605)에 설정된다. 또 시퀀서(604)는 명령신호(615), 산술논리장치(608)로부터의 플래그신호(616)에 의하여 프로그램 카운터(602)를 제어한다. 읽기(R: Read) 스테이지에서는 레지스터 파일(607)로부터 명령으로 지시된 레지스터가 버스(618, 619)를 통하여 산술장치(608)에 전송된다. 또 실행 스테이지에서는 산술논리장치(608)에 의하여 연산이 행해진다. 최후로 쓰기 스테이지에서는 연산된 결과가 레지스터 파일(607)에 버스(620)를 통하여 저장된다.
RISC형 계산기에서는 명령을 기본적인 명령만으로 한정하고 있다. 연산은 레지스터-레지스터사이로 한정되어 있고 오퍼랜드 페치를 수반하는 명령은 로드(load)명령과 스토어(store)명령 뿐이다. 복잡한 명령은 기본명령을 조합함으로써 실현한다. 또 마이크로 명령은 사용되지 않고 명령레지스터(605)의 내용이 직접 디코더(606)에서 디코드되어 산술논리장치(608)등을 제어한다.
도 7은 레지스터-레지스타간 연산의 처리흐름을 나타내고 있다. 파이프라 인은 명령이 간단하기 때문에 4단으로 완료하고 있다.
도 8은 조건 분기시의 처리 흐름을 나타내고 있다. CISC형 계산기에 비하여 파이프라인 단수가 적기 때문에 대기 사이클이 적다. 도 8의 예에서는 대기 사이클은 1사이클뿐이다. 단, 반드시 레지스터간 연산뿐만 아니라, 메모리로부터의 오퍼랜드의 로드나 메모리에의 오퍼랜드의 스토어가 필요하다. CISC형 계산기에서는 어드레스 가산기가 있기 때문에 메모리로부터의 오퍼랜드의 로드가 1기계 사이클에서 실행 가능하나 도 6에 나타낸 RISC형 계산기에서는 로드명령은 어드레스 계산명령과 로드명령으로 분해되기 때문에 2기계 사이클이 필요하게 된다.
상기 종래 기술의 문제점에 관하여 정리하여 기술한다. CISC형 계산기에서는 어드레스 가산기가 있기 때문에 메모리 레지스터간 명령을 1기계사이클로 실행할 수 있으나 파이프라인 단수가 많기 때문에 분기시의 오버헤드(overhead)가 크다. 또 복잡한 명령을 실행할 때에는 실행 스테이지만이 반복되므로 어드레스 가산기에 유휴가 발생한다는 문제점이 있었다.
또 RISC형 계산기에서는 파이프라인 단수가 적기 때문에 분기시의 오버헤드가 작다.
그러나 어드레스 가산기가 없이 메모리-레지스터간 연산을 위해서는 로드명령, 레지스터가 연산명령의 2명령을 요한다는 문제점이 있었다.
본 발명의 제 1목적은 복수의 연산기를 쓸데없이 동작시키지 않고 처리능력을 높이는 데이터 처리장치를 제공하는데 있다.
본 발명의 제 2목적은 분기시의 오버헤드를 작게 한 데이터 처리장치를 제공하는데 있다.
또 본 발명의 제 3목적은 메모리, 레지스터간 연산등의 복잡한 명령의 처리시간을 단축한 데이터 처리장치를 제공하는데 있다.
도 1은 본 발명의 일 실시예인 전체 블럭도,
도 2는 종래 예의 전체 블럭도,
도 3도 내지 도 5는 그 동작을 설명하는 타이밍챠트,
도 6은 또 하나의 종래 예의 전체 블럭도,
도 7, 도 8은 그 동작을 설명하는 타이밍챠트,
도 9는 본 발명의 일 실시예의 명령 일람을 나타낸 도,
도 10은 본 발명의 일 실시예에 관한 명령 포오맷을 나타낸 도,
도 11 내지 도 14는 본 발명의 일 실시예의 동작을 설명하는 타이밍챠트,
도 15는 종래 예의 동작을 설명하는 타이밍챠트,
도 16 내지 도 18은 본 발명의 일 실시예의 동작을 설명하는 타이밍챠트,
도 19는 도 1의 제 1연산유닛(110)의 구성도,
도 20은 도 1의 제 2연산유닛(112)의 구성도,
도 21은 도 1의 레지스터파일(111)의 구성도,
도 22 내지 도 25는 도 1에 나타낸 본 발명의 일 실시예의 동작을 설명하는 도,
도 26은 도 1의 명령유닛(103)의 구성도,
도 27은 그 동작을 설명하는 도,
도 28은 도 26의 캐시(2301)의 구성도,
도 29는 도 1의 명령유닛(103)의 다른 구성도,
도 30은 본 발명의 일 실시예의 동작을 설명하는 타이밍챠트,
도 31a 및 도 31b는 명령 구성을 나타낸 도,
도 32는 본 발명의 다른 실시예인 전체 블럭도,
도 33 내지 도 36은 부분적으로 복수 명령 동시 처리를 행하는 본 발명의 다른 실시예의 설명도이다.
* 도면의 주요부분에 대한 부호의 설명
100,200 : 메모리 인터페이스 101,201 : 프로그램카운터(PC)
102 : 시퀀스 103 : 명령유닛
104 : 제1명령 레지스터 105 : 제 2명령 레지스터
106 : 제 1디코더 107 : 제 2디코더
108 : 기억데이터 레지스터(MDR: Memory Data Register)
109 : 기억 어드레스 레지스터(MAR: Memory Address Register)
110 : 제 1연산유닛 111 : 레지스터파일
112 : 제 2연산유닛 202 : 명령캐시
203 : 명령레지스터 204 : 명령디코더
205 : 어드레스계산 제어회로 206 : 콘트롤 기억장치(CS)
207 : 마이크로 프로그램 카운터 208 : 마이크로 명령 레지스터
209 : 디코더
210 : 메모리 데이터 레지스터(MDR)
211 : 메모리 어드레스 레지스터
212 : 어드레스 가산기 213 : 레지스터 파일
214 : 산술논리장치(ALU: Arithmetic Logical Unit)
상기 목적은 주로 레지스터 파일을 공용하는 복수의 연산유닛을 설치하고 명령을 간단하게 하여 파이프라인 단수를 적게 하고 또 1머신 사이클에 복수의 명령을 판독하여 복수 연산 유닛을 제어하는 것 등에 의하여 달성된다.
본 발명의 적합한 실시예에 의하면, 복잡한 명령은 기본명령으로 분해되고 또 1기계 사이클에서 복수의 명령이 동시에 판독되어 실행되기 때문에 복수의 연산유닛이 동시에 작동하여 처리능력을 높일 수가 있다.
또 명령의 기능이 간단하여 파이프라인 단수를 짧게 할 수 있으므로 분기시의 오버헤드를 작게 할 수 있다.
또 복수 연산 유닛이 병렬로 작동하기 때문에 복잡한 명령의 처리시간을 단축할 수가 있다.
이하 본 발명의 일 실시예를 설명한다.
도 9는 본 실시예에서 설명하는 프로세서의 명령 일람이다. 기본명령은 모두 레지스터간 연산이다. 분기 명령에는 무조건 분기명령(BRA), 조건부 분기명령(BRAcc)(cc는 분기조건을 나타낸다), 서브 루틴(sub-routine)에의 분기명령(CALL), 서브루틴으로부터의 복귀명령(RTN)등 4개가 있다. 그 외에 로드명령(LOAD)과 스토어명령(STOR)이 있다. 설명의 형편상, 데이터형은 32비트 정수만으로 했으나 이것에 한정되는 것은 아니다. 또 어드레스는 32비트(4바이트)마다 1개 할당되어 있는 것으로 하였다. 간단하게 하기 위하여 상기와 같이 명령수를 제한하고 있으나, 이것은 본 발명을 제한하는 것이 아니라 1기계 사이클에서 처리할 수 있는 내용이면 다시 명령을 증가시켜도 좋다.
도 10에 명령 포오맷(format)을 나타낸다. 명령은 모두 32비트의 고정길이이다. 기본명령중의 F, S1, S2, D 필드는 각각 연산결과를 플래그에 반영할 것인가의 여부를 지시하는 비트, 제 1소스 레지스터를 제시하는 필드, 제 2소스 레지스터를 지시하는 필드, 데스티네이션 레지스터(destination register)를 지시하는 필드이다.
본 실시예의 구성을 나타낸 것이 도 1이다. 100은 메모리 인터페이스, 101은 32비트의 프로그램 카운터, 102는 시퀀서, 103은 명령 유닛, 104는 32비트의 제 1명령 레지스터, 105는 32비트의 제 2명령 레지스터, 106은 제 1디코더, 107은 제 2디코더, 108은 메모리 데이터 레지스터, 109는 메모리 어드레스 레지스터, 110은 제 1연산 유닛, 111은 레지스터 파일, 112는 제 2연산 유닛이다.
본 실시예에서는 1기계 사이클의 사이에 2개의 명령이 병렬로 판독되어 실행된다. 본 실시예에서의 파이프라인 처리의 상태를 나타낸 것이 도 11 내지 도 14이다. 파이프라인은 명령 페치(Instruction Fetch), 읽기(Read), 실행(Execution), 쓰기(Write)등 4단이다.
다시 도 1을 사용하여 본 실시예의 동작에 관하여 설명한다.
명령 페치 스테이지에서는 프로그램 카운터에 의하여 지시되는 2개의 명령이 판독되고 버스(115), (117)를 통하여 각각 제 1명령 레지스터(104), 제 2명령 레지스터(105)에 설정된다. 프로그램 카운터가 짝수일 때에는 프로그램 카운터 번지의 명령이 제 1명령 레지스터에 프로그램 카운터 +1번지의 명령이 제 2명령 레지스터에 저장된다. 또 프로그램 카운터가 홀수일 때에는 제 1명령 레지스터에는 NOP명령이 제 2명령 레지스터에는 프로그램 카운터 번지의 명령이 설정된다. 시퀀서(102)는 프로그램 카운터를 제어하는 회로이다. 제 1명령 레지스터, 제 2명령 레지스터 모두 분기명령이 아닌 때에는 프로그램 카운터에는 전 프로그램 카운터치 + 2의 값을 세트한다.
분기에는 분기 어드레스를 계산하여 프로그램 카운터에 세트한다. 조건 분기 시에는 제 1연산 유닛으로부터의 플래그정보(123) 및 제 2연산 유닛으로부터의 플래그정보(124)로부터 분기의 여부를 판정한다. 또 명령 유닛으로부터 송출되는 신호(116)는 제 1명령, 제 2명령간의 각종 경합을 나타낸 경합신호이다. 경합신호가 어서트된 경우에는 경합을 피하도록 하드웨어에서 제어한다. 경합 회피방법에 관해서는 후에 상세히 설명한다.
다음에 기본 명령 처리시의 읽기 스테이지의 동작에 관하여 설명한다. 읽기 스테이지에서는 제 1명령 레지스터(104)의 내용이 제 1디코더(106)에서 디코드되고 또 제 2명령 레지스터(105)의 내용이 제 2디코더(107)에서 디코드된다.
그 결과 제 1명령 레지스터(104)의 제 1소스 레지스터 파일(S1)에서 지시되는 레지스터의 내용이 버스(125)를 통하여 제 2소스 레지스터 필드(S2)에서 지시되는 레지스터의 내용이 버스(126)를 통하여 제 1연산 유닛(110)에 송출된다. 또 제 2명령 레지스터의 제 1소스 레지스터(S1)에서 지시되는 레지스터의 내용이 버스(127)를 통하여 제 2소스 레지스터 필드(S2)에서 지시되는 레지스터의 내용이 버스(128)를 통하여 제 2연산 유닛(112)에 송출된다.
다음에 실행 스테이지의 동작에 관하여 설명한다. 실행 스테이지는 제 1명령 레지스터의 OP코드의 명령에 따라 제 1연산 유닛(110)에 있어서 버스(125, 126)에 의하여 보내져온 데이터간의 연산을 행한다. 병렬로 제 2명령 레지스터(105)의 OP코드의 내용에 따라 제 2연산유닛(112)에 있어서 버스(127, 128)에 의하여 보내져온 데이터간의 연산을 행한다.
최후로 쓰기 스테이지의 동작을 설명한다. 쓰기 스테이지에서는 제 1연산 유닛(110)의 연산결과가 버스(129)를 통하여 제 1명령 레지스터의 데스티네이션 필드(D)에서 지시되는 레지스터에 저장된다. 또 제 2연산 유닛(112)의 연산결과가 버스(131)를 통하여 제 2명령 레지스터의 데스티네이션 필드(D)에서 지시되는 레지스터에 저장된다.
도 11은 기본명령을 연속하여 처리하는 흐름을 나타낸 것이다. 1기계 사이클에 2명령씩 처리된다. 또 이 예에서는 제 1연산 유닛과 제 2연산 유닛은 항상 병렬로 동작하고 있다.
도 12는 제 1명령으로서 로드명령, 또는 스토어명령, 제 2명령으로서 기본명령을 연속하여 처리하는 흐름을 나타낸 것이다. 로드명령 실행시에는 읽기 스테이지에서 제 1명령 레지스터의 S2필드에서 지시되는 레지스터의 내용이 버스(126)를 통하여 메모리 어드레스 레지스터(109)에 전송된다.
다음에 실행 스테이지에서 메모리 인터페이스(100)를 통하여 오퍼랜드를 페치한다. 최후에 쓰기 스테이지에서 페치된 오퍼랜드가 버스(129)를 통하여 제 1명령 레지스터의 데스티네이션 필드(D)에서 지시되는 레지스터에 저장된다.
실행 스테이지에 있어서, 1기계 사이클에서 오퍼랜드를 페치하는 것은 메모리 인터페이스에 고속 캐시를 구비하고 있으면 가능하다. 특히 도 1에 나타내는 계산기 전체가 반도체 기판상에 집적되어 명령 캐시, 데이터 캐시와 함께 칩상에 구비되는 것은 용이하다. 물론 캐시가 미스히트(mis-hitted)한 경우에는 1기계 사이클에서 오퍼랜드 페치를 종료할 수가 없다. 이와 같은 때는 시스템 클럭을 정지시켜 실행 스테이지를 연장하면 된다. 이것은 종래의 계산기에서도 행해지고 있는 것이다.
다음에 스토어 명령 실행시에는 읽기 스테이지에 있어서, 제 1명령 레지스터의 제 1소스 레지스터 필드(S1)에서 지시되는 레지스터의 내용이 데이터로서 버스(125)를 통하여 메모리 데이터 레지스터(108)에 전송된다. 또 동시에, 제 1명령 레지스터의 제 2소스 레지스터 필드(S2)에서 지시되는 레지스터의 내용이 어드레스로서 버스(126)를 통하여 메모리 어드레스 레지스터(109)에 전송된다. 다음에 실행 스테이지에서, 메모리 어드레스 레지스터(109)에서 지시되는 번지에 메모리 데이터 레지스터(108)내의 데이터가 기입된다.
도 12에 나타낸 바와 같이 로드 명령, 스토어 명령, 제 1명령에 있는 경우에 관해서도 1기계 사이클에 2명령씩 처리할 수가 있다. 로드 명령, 스토어 명령이 제 2명령에 출현했을 때의 처리에 관해서는 후에 상세하게 설명한다.
도 13은 제 2명령으로서 무조건 점프 BRA명령 실행시의 처리 흐름을 나타낸 것이다.
BRA명령이 판독되면 읽기 스테이지에 있어서 시퀀서(102)는 변위 필드(displacement field)(d)와 프로그램 카운터와의 가산을 행하여 프로그램 카운터(101)에 세트한다. 이 사이에 BRA명령의 다음 번지의 명령과 그 다음 번지의 명령(도 13의 명령 1과 명령 2)이 읽혀진다. 그 다음의 사이클에 점프선의 2명령이 읽혀진다. 본 실시예에서는 명령 1, 2도 함께 실행가능한 하드웨어로 하고 있다. 즉 점프명령 처리시에도, 대기사이클이 발생하지 않는다. 이 수법은 지연부기라 불려지는 것으로 RISC형의 종래 계산기에서도 행해지고 있는 것이다. 단, 종래의 RISC형 계산기에서는 점프 명령의 어드레스 계산중에 1명령 밖에 실행할 수 없었으나 본 실시예에서는 점프명령의 어드레스 계산중에도 2명령 동시 처리되기 때문에 보다 처리능력을 높일 수가 있다. CALL명령, RTN명령의 처리 흐름도 마찬가지이다. 컴파일러(compiler)에 의하여 분기명령의 어드레스 계산중에 가능한 한 유효한 명령을 실행할 수 있도록 코드 생성하나 아무것도 하는 일이 없을 때에는 도 13의 명령 1, 2를 NOP 명령으로 해둔다. 이 때에는 실질적으로 1기계 사이클의 대기가 발생한다. 그러나 파이프라인 단수가 적기 때문에 종래 예에서 기술한 CISC형의 계산기에 비하여 분기시의 오버헤드를 작게 할 수 있다는 이점이 있다.
도 14는 조건 분기명령(BRAcc)의 처리 흐름을 나타낸 것이다. ADD, F로 나타낸 명령에서 플래그의 세트가 행해지고 그 결과에 따라 분기의 성부(成否)가 결정된다. 이 때도 도 13을 사용하여 설명한 무조건 분기명령 처리시와 마찬가지로 BRAcc명령이 있는 번지의 명령, 도 14의 명령 1과 그 다음의 명령, 도 14의 명령 2가 판독되어 처리된다. 단 이 2명령의 처리 흐름중 쓰기 스테이지에 있어서는 BRAcc명령의 분기조건 불성립시만 연산결과의 레지스터 파일에의 기입이 행해진다. 즉 분기명령 성립시에는 연산결과의 기입이 저지된다.
이상 도 11 내지 도 14를 사용하여 설명한 바와 같이 본 실시예에서는 1기계 사이클에 2명령씩 처리하므로 그 처리능력이 최대 2배로 향상된다는 이점이 있다. 또 명령이 간단하여 와이어드 논리에 의한 제어로 파이프라인 단수가 4단으로 적어지기 때문에 분기시의 오버헤드를 최대 1기계 사이클로 작게 할 수가 있다. 또 컴파일러에 의한 지연분기의 최적화가 성공하면 상기 오버헤드를 없앨 수가 있다.
또 복잡한 처리도 간단한 명령의 조합으로 실행하기 때문에, 종래의 CISC형 계산기에 있어서의 파이프라인 병렬에 의한 어드레스 가산기와 산술논리장치의 병렬동작에 비하여 도 1의 제 1연산유닛(110)과 제 2연산유닛(112)의 병렬동작을 쉼없이 수행할 수 있다는 장점이 있다. 이 점에 관하여 간단히 설명한다. 메모리로부터 레지스터에의 로드를 반복할 경우, 종래 CISC형 계산기에서는 도 15에 나타낸 바와 같이 1기계 사이클에 1개씩 데이터를 로드할 수가 있다.
이에 대하여 본 실시예에 있어서는 1개의 데이터의 로드에 어드레스 계산용 ADD명령과 그 어드레스를 사용한 로드 명령의 2명령이 걸리나 도 16에 나타낸 바와 같이 1기계 사이클에 2명령씩 실행할 수 있으므로 역시 1기계 사이클에 1개씩 데이터를 로드할 수 있다. 연산기의 병렬동작이라는 의미에서는 양자 모두 2개의 연산기가 동시에 병렬로 동작하고 있어 이 예에서는 동일하다.
또 복잡한 처리에 관하여 비교한 것이 도 17과 도 18이다. 종래의 CISC형 계산기에서 6사이클의 실행 스테이지에서의 처리를 요하고 있던 도 17에 나타낸 명령 1은 도 18에 나타낸 바와 같이 본 실시예에서는 3사이클에서 종료할 수가 있다. 이것은 종래의 CISC형 계산기에서는 명령 1의 실행중 어드레스 가산기의 동작이 정지되어 버리나 본 실시예에서는 2개의 연산기가 매사이클 병렬하여 동작하는 것이 가능하게 되기 때문이다.
도 1 내지 제 1연산유닛(110)의 내부를 설명한 것이 도 19이다. 1500은 산술논리장치, 1501은 배럴 쉬프터(barrel shifter), 1502는 플래그 생성회로이다. 버스(125, 126)로부터 전송되어 온 데이터는 가감산, 논리연산시에는 산술논리장치(1500)에서 SFT명령시에는 배럴쉬프터에서 처리된다. 처리결과는 버스(130)에 송출된다. 연산결과에 의하여 플래그가 플래그 생성회로(1502)에 의하여 생성되어 신호 123로서 송출된다.
도 1의 제 2연산유닛(112)의 내용을 일례로서 설명한 것이 도 20이다. 1600은 산술논리장치, 1601은 플래그 생성회로이다. 제 1연산유닛과의 상위점은 펄스 쉬프터(pulse shifter)가 없는 점이다. 이것은 SFT 명령은 산술논리 연산명령에 비하여 출현빈도가 낮기 때문에 생략한 것이다. 이렇게 함으로써 1기계 사이클에 2개의 SFT명령을 실행할 수가 없게 되나 하드웨어량을 삭감할 수 있다는 이점이 있다. 2개의 SFT 명령이 출현했을 때의 제어방법에 관해서는 후술한다. 물론 제 2연산 유닛(112)으로서 도 19의 유닛을 사용해도 좋다.
도 21은 도 1의 레지스터 파일(111)안을 나타낸 것이다. 1708은 레지스터, 1700 내지 1709는 버스 스위치이다. 각 레지스터는 4개의 리이드 포오트(read port), 2개의 기입 포오트를 가진다.
버스 스위치는 전 명령의 데스티네이션 필드에서 지시된 레지스터를 다음 명령에서 즉시 사용할 때, 레지스터 파일을 바이패스하기 위하여 사용된다. 예를 들면 버스 스위치(1702)는 버스(129)로부터 127에의 바이패스 스위치이고 제 1명령의 데스티네이션 레지스터필드(D)와 제 2명령의 제 1소스 레지스터 필드(S1)가 일치했을 때에 열리도록 하면 좋다.
다음에 제 1명령과 제 2명령의 경합 해소방법에 관하여 도 22 내지 도 29를 사용하여 설명한다. 제 1명령과 제 2명령의 조합에 의해서는 양 명령을 동시에 실행할 수 없는 경우가 있다. 이것을 경합이라고 부르기로 한다.
이하의 경우에 경합이 발생한다.
(1) 로드, 스토어명령이 제 2명령으로서 출현했을 경우
(2) SFT명령이 제 2명령으로서 출현했을 경우
(3) 제 1명령의 데스티네이션 레지스터 필드(D)에서 지시되는 레지스터와, 제 2명령의 제 1소스 레지스터 필드(S1)에서 지시되는 레지스터 또는 제 2명령의 제 2소스 레지스터 필드(S2)에서 지시되는 레지스터가 일치하는 경우
상기 경합중 (1)과 (2)는 제 2연산유닛에서 로드, 스토어 명령 및 SFT명령을 처리할 수 없게 됨으로써 발생하는 본 실시예 특유의 문제이다.
도 1에 있어서, 버스 127에 제 2메모리 데이터 레지스터, 버스 128에 제 2메모리 어드레스 레지스터를 추가하고 메모리 인터페이스에서 1기계 사이클에 2개의 데이터를 억세스할 수 있도록 하면 (1)의 경합조건은 해소할 수 있다. 또 제 2연산 유닛에도 배럴 쉬프터를 설치하면, (2)이 경합 조건도 해소할 수 있다. 본 실시예에서는 하드웨어 삭감을 위하여 상기 경합조건이 발생한 것이다. 이와 같은 경우도 후에 기술하는 바와 같이 용이하게 경합을 해소할 수 있으므로 필요성능과 허용되는 하드웨어량에 따라 동시 처리 크기의 명령에 대응하는 하드웨어만 2중화 하는 것은 실질적으로 성능을 떨어뜨리지 않고 하드웨어를 삭감할 수 있다는 이점이 있다.
도 22를 사용하여 SFT명령이 제 2명령으로서 출현했을 때의 제어방법에 관하여 설명한다. 도 22의 상부에는 제 2명령이 되는 어드레스 "3"에 SFT명령이 있는 경우이다. 도 22의 하부는 실행시의 제 1명령 레지스터, 제 2명령 레지스터에 들어가는 명령을 나타내고 있다. 프로그램 카운터(2)일 때 제 2명령이 SFT명령인 것을 하드웨어에서 검출하여 제 1명령 레지스터에는 2번지의 명령을 제 2명령 레지스터에는 NOP 명령을 설정한다.
또, 다음의 기계 사이클에서는 프로그램 카운터를 "1"만 증가시키고 3번지를 세트한다. 그리고 제 1명령 레지스터에는 3번지의 SFT명령을 제 2명령 레지스터에는 NOP명령을 설정한다. 이와 같이 2기계 사이클로 나누어 처리함으로써 정확하게 처리할 수가 있다. 물론 컴파일러에 의한 최적화를 행하여 가능한 한 제 2명령에 SFT명령이 출현하지 않도록 하는 것이 바람직하다. 다른 경합 해소방식에 관하여 도 23을 사용하여 설명한다. 즉 제 2명령이 되는 홀수 어드레스는 SFT명령을 두는 것을 금지하고 그 밖에 실행하는 명령이 없을 때에는 NOP 명령을 넣어둔다. 이렇게 하면 프로그램 사이즈는 약간 증가하나 경합 해소를 위한 하드웨어를 생략할 수 있다는 이점이 있다.
도 24는 로드명령이 제 2명령으로서 출현했을 때의 처리방법을 나타내고 있다. 3번지에 로드명령이 있다. 처리방법은 SFT 명령일 때와 동일하다.
도 25는 레지스터 경합시의 처리방식을 나타내고 있다. 2번지의 명령이 8번 레지스터에 기입되어 있고, 동일 8번 레지스터를 3번지의 명령이 판독되고 있다. 이 경우도 SFT명령과 마찬가지로 2기계 사이클로 나누어 실행한다. 로드, 스토어명령, 레지스터, 경합에 관해서도 홀수번지에 두는 것을 금지하여 경합을 해소해도 좋다. 효과는 SFT 명령의 곳에 설명한 것과 동일하다.
다음에 도 22 내지 도 25에서 설명한 처리방식을 실현하는 하드웨어 방식에 관하여 설명한다. 도 26은 이를 위한 도 1의 명령 유닛(103)의 구성을 나타낸 도이다. 2300은 경합검출회로, 2301은 캐시 메모리, 2302는 제 1마스크 회로, 2303은 제 2마스크 회로이다. 버스(113)로부터는 통상 프로그램 카운터의 값이 입력되고 프로그램 카운터에서 지시되는 명령과 그 다음 번지의 명령이 버스(2305), 버스(2306)에 송출된다. 캐시 미스 히트시에는 메모리 인터페이스(100)에 의하여 명령의 페치가 행해지고 버스(113)를 통하여 캐시(2301)에 기입된다. 이 때 경합 검출회로가 제 1명령과 제 2명령간의 경합을 체크하고 경합이 있으면 경합신호(2304)를 어서트한다. 캐시에는 2명령에 1비트씩 양 명령의 경합 상태를 나타내는 비트가 설치되어 있고 캐시 미스시에는 경합신호(2304)를 저장한다. 제 1마스크 회로는 입력으로서 제 1명령, 제 2명령, 경합비트, 프로그램 카운터의 최하위 비트를 받아 도 27에 나타낸 바와 같이 제 1명령 레지스트(105)에의 신호(117)를 송출한다.
도 27에 나타낸 바와 같이 경합비트, 프로그램 카운터 최하위 모두 0일 때에는 제 1명령 레지스터에 제 1명령이 제 2명령 레지스터에 제 2명령이 송출된다. 이것은 통상 케이스이다. 경합비트가 1, 프로그램 카운터 최하위가 0일 때에는 제 1명령 레지스터에 제 1명령이 제 2명령 레지스터에 NOP 명령이 송출된다. 이것은 경합 명령 처리시의 제 1기계 사이클시의 처리이다. 다음에 경합비트가 1이고 프로그램 카운터 최하위도 1일 때에는 제 1명령 레지스터에 제 2명령을 제 2명령 레지스터에 NOP를 송출한다. 이것은 경합 명령처리시의 제 2기계 사이클시의 처리이다. 상기 처리에 의하여 도 22, 도 23, 도 25에서 설명한 경합명령의 처리 흐름이 실현된다. 분기명령이 홀수번지에 분기했을 때에는 도 27에 나타낸 바와 같이 경합비트의 값에 의하지 않고 제 2명령만 실효되므로 정확한 처리가 가능하다.
캐시 판독은 매 사이클 행해지나 캐시에의 기입은 캐시가 미스히트했을 때만 또한 수 기계 사이클 걸쳐서 행해진다. 따라서 경합 검출회로를 캐시기입시에 동작시켜 캐시에 경합비트를 유지해 두는 것은 기계 사이클을 단축하는데 유효하다.
도 28은 도 26의 명령캐시(2301)의 구성을 나타낸 것이다. 2500은 디렉토리, 2501은 데이터 메모리, 2502는 선택기, 2503은 어드레스 레지스터, 2504는 기입 레지스터, 2505는 비교기, 2506은 캐시 제어회로이다. 도 28의 캐시는 통상의 캐시의 구성과 거의 동일하나 데이터 메모리(2501)에 2명령분 8바이트에 1개씩, 경합비트 유지용의 필드가 있는 것, 캐시 판독시에 프로그램 카운터 최하위(0비트)를 무시하고 항상 제 1명령(2305)과 제 2명령(2306)과 경합신호(116)를 송출하는 점이 다르게 되어 있다.
도 28에서는 데이터 메모리가 8K단어분이고, 블럭크기가 32바이트(8단어)로 되어 있다. 프로그램 카운터로부터 송출된 신호(113)는 어드레스 레지스터(2503)에 세트된다. 어드레스의 3내지 12비트에서 디렉토리(2500)와 데이터 메모리(2501)가 감산된다. 비교기(2505)는 디렉토리 출력과 어드레스 레지스터의 13내지 31비트를 비교한다. 불일치이면 신호 2508에 의하여 캐시 제어회로(2506)에 그것을 알린다. 캐시 제어회로(2506)는 주 메모리로부터 미스 히트한 명령을 포함하는 블럭을 판독하여 데이터 메모리(2501)에 설정한다. 한편 선택기(2502)는 어드레스 레지스터의 제 1, 2비트를 사용하여 블럭의 안으로부터 필요한 2명령을 선택한다. 제 1명령과 제 2명령은 반드시 동일 블럭내에 있으며, 한쪽만 미스히트하는 일은 없다.
도 29는 도 1의 명령 유닛(103)의 다른 구성예를 나타낸 것이다. 2600은 캐시 메모리, 2604는 경합 검출회로, 2302는 제 1마스크 회로, 2303은 제 2마스크 회로이다. 도 26의 구성과의 차이는 캐시에 경합비트 유지의 필드가 없고 캐시출력의 제 1명령(2601)과 제 2명령(2602)을 매 사이클 경합 검출회로(2604)가 감시하고 있는 것이다. 제 1마스크회로(2302), 제 2마스크회로(2303)의 동작은, 도 26과 동일하다.
본 실시예에 의하면 캐시 판독후에 매 사이클 경합 검출회로가 작동하므로 기계 사이클이 신장한다는 결점이 있으나 캐시내의 경합비트 필드가 없어도 좋다는 이점이 있다.
또한, 본 실시예에서는 1기계 사이클에 2명령씩 처리되는 것을 살려서 도 30에 나타낸 바와 같이 특수한 경우에 조건부 분기명령을 더욱 고속화할 수가 있다. 즉 조건부 분기명령에 있어서 조건성립시의 분기선이 다음 명령의 명령(도 30의 명령 2)일 때 조건의 성립여부에 관계없이 명령 2, 명령 3을 실행하고 조건의 성립여부에 따라 명령 1의 쓰기 스테이지를 억지할 것인가 여부를 제어함으로써 조건 성립시의 대기 사이클을 없앨 수가 있다. 단, 이 경우 조건분기 명령은 반드시 제 1명령측에 두는 것으로 한다. 통상의 조건부 분기에서는 도 14를 사용하여 설명한 바와 같이 분기성립시에는 1사이클의 대기사이클이 발생한다. 환언하여 설명하면 본 발명에서는 1기계 사이클에 2명령씩 처리하므로 2명령 단위에서의 명령처리 흐름에 영향을 미치지 않고 제 1명령측의 조건부 분기명령의 조건의 성립여부에 따라 제 2명령측의 명령의 실행을 제어할 수가 있다.
또한 본 실시예에서는 1기계 사이클에 2명령씩 처리되는 것을 살려서 "아토믹(atomic)"한 처리를 용이하게 실현할 수가 있다. 아토믹 처리라고 하는 것은 반드시 계속적으로 행해지는 처리를 말하는 것으로 프로세스간의 동기등에 사용된다. 도 31a는 종래의 계산기의 경우이고 도 31b는 본 실시예에 관하여 설명하고 있다. 도 31a에서는 각 명령의 사이에 개입중단이 들어갈 가능성이 있으나, 도 31b에서는 명령 1과 명령 2의 사이 및 명령 3과 명령 4의 사이에는 결코 개입중단이 들어가지 않는다. 이 때문에 도 31a에서는 임의의 명령 사이에 다른 프로세스를 처리하는 프로그램이 들어갈 가능성이 있으나, 도 31b에서는 명령 1과 명령 2, 명령 3과 명령 4는 반드시 연속적으로 실행되는 것이 보증되고 있다는 이점이 있다.
도 32는 본 발명의 다른 실시예의 구성을 나타낸 도이다. 본 실시예에서는 1기계 사이클에 4명령씩 처리할 수가 있다. 3200은 메모리 인터페이스, 3201은 프로그램 카운터, 3202는 시퀀서, 3203은 명령 유닛, 3204∼3207은 제 1∼4명령 레지스터, 3208∼3211은 제1∼4디코더, 3212는 MDR, 3213은 MAR, 3214, 3215, 3217, 3218은 제1∼4연산 유닛, 3216은 레지스터 파일이다.
각 연산 유닛은 레지스터 파일(3216)을 공유하고 있다. 각 부의 동작설명은 도 1에서 나타낸 실시예와 동일하므로 생략한다.
마찬가지로 또한 병렬도를 높이는 것은 가능하나, 수 명령에 1개의 비율로 분기명령이 존재하는 프로그램도 있어 그와 같은 프로그램에서는 극단적으로 병렬도를 높여도 그다지 효과가 얻어지지 않는다. 2내지 4명령 동시 처리정도가 적당하다. 분기가 적고, 경합도 적은 프로그램에서는 다시 병렬도를 높이면 효과적으로 성능이 높아진다. 또 병렬도를 2n(n은 자연수)으로 함으로써 명령유닛의 제어를 용이하게 할 수가 있다.
또 본 발명의 다른 실시예에 관하여 설명한다.
지금까지의 실시예에서는 항상 복수명령 동시처리를 행하고 있었다. 통상은 1기계 사이클에 1명령씩 처리하고 부분적으로 복수명령 동시처리를 행함으로써도 이익을 얻을 수가 있다. 도 33에 3가지 예를 나타낸다. 도 33a에서는 제 1명령은 주메모리, 제 2명령은 어드레스 공간의 선두 부분에만 있고, 또 ROM화되어 있다. 도 33b에서는 제 1명령, 제 2명령 모두 어드레스 공간의 선두부분에서 ROM화되어 있다. 다른 부분은 제 1명령만으로 주메모리에 있다. 도 33c에서는 도 33a와 거의 동일하나, 제 2명령의 ROM화 부분이 어드레스 공간의 중간에 있다. 계산기 전체의 구성은 도 1과 동일하고 단지 명령유닛(103)을 변경하면 된다. ROM부분에는 사용빈도가 높고 병렬도가 높은 프로그램을 기입해 두고 주루틴 보다 서브루틴 호출에 의하여 이용한다. ROM부분은 소용량이면 되므로 컴파일러가 없어도 어셈블러에 의하여 최적인 프로그램을 작성할 수가 있다.
도 34는 도 33a를 실현하기 위한 도 1, 명령유닛(103)의 구성을 나타낸 것이다. 2900은 캐시, 2901은 4K단어의 ROM, 2903은 마스크회로, 2902는 마스크회로 제어회로이다. 마스크회로 제어회로는 어드레스(113)를 항상 감시하고 있어 어드레스의 상위 12내지 31비트가 모두 제로일 때만 유효신호(2904)를 어서트한다. 마스크회로(2903)는 유효신호(2904)가 어서트되었을 때만 ROM출력(2905)을 제 2명령 레지스터에의 출력(117)으로서 송출한다. 다른 때는 NOP명령을 송출한다.
도 33c를 실현하기 위해서는 도 34의 마스크회로 제어회로(2902)를 도 35와 같이 하면 된다. 3000은 비교기, 3001은 베이스 레지스터이다. 베이스 레지스터의 상위 12 내지 31비트와 어드레스(113)의 상위 12 내지 31비트가 일치했을 때에 비교기(3000)는 유효신호(2904)를 어서트한다.
도 33b를 실현하기 위해서는 도 1의 명령유닛(103)을 도 36과 같이 구성하면 된다. 2901, 2902, 2903의 기능은 도 29에서 설명한 동일번호의 것과 동일하다.
3100은 캐시, 3101은 4K단어의 ROM, 3102는 선택기 제어회로, 3107은 선택기이다. 선택기 제어회로(3102)는 어드레스(113)의 상위 12 내지 31비트를 항상 감시하고, 그들이 모드 제로일 때만 ROM 선택회로(3105)를 어스트한다. 선택기(3107)는 ROM선택신호(3105)가 어서트되었을 때만 ROM 출력신호(3104)를 제 1명령 레지스터에의 출력(115)으로서 송출한다. 다를 때에는 캐시출력(3103)을 송출한다.
도 33 내지 36을 사용하여 설명한 바와 같이 부분적으로 복수 명령 동시 처리를 행하고 그 부분을 ROM화함으로써 하드웨어를 삭감할 수 있다. 또 ROM부분 만이면 어셈블리에 의하여 최적 설계할 수 있기 때문에 복수 명령 동시처리를 의식한 컴파일러를 개발하지 않아도 된다는 이점이 있다. 또 ROM부분을 개서함으로써 적용시마다 적용에 적합한 고속화를 실현할 수 있다.
본 발명에 의하면 복잡한 명령은 기본명령으로 분해되고, 또 1머신 사이클에서 복수의 명령이 동시에 판독되어 실행되기 때문에 복수의 연산기가 동시에 작동하여 처리능력을 높일 수가 있다.
또 명령의 기능이 간단하고, 파이프라인 단수를 짧게 할 수 있기 때문에 분기시의 오버헤드를 작게 할 수 있다.
또 복수 연산기의 병렬로 동작하기 때문에 복잡한 처리의 처리시간을 단축할 수가 있다.

Claims (6)

  1. 데이터 처리장치에 있어서,
    메모리 인터페이스(100)로부터 명령을 받는 명령 유닛(103),
    상기 명령 유닛(103)으로부터 명령을 읽도록 프로그램 카운터를 제어하는 시퀀서(102),
    상기 명령 유닛(103)으로부터 읽혀진 제 1 및 제 2 명령을 저장하는 적어도 2개의 명령 레지스터(104, 105),
    데이터를 저장하는 레지스터 파일(111),
    상기 레지스터 파일(111)로부터 상응한 데이터를 읽고 명령 레지스터(104, 105)로부터 읽혀진 명령에 따라 병렬로 산술연산을 행하는 적어도 2개의 산술 연산 유닛(110, 112),
    데이터를 저장하는 복수의 레지스터(1708),
    각 산술 연산 유닛(110, 112)의 데이터를 상기의 레지스터(1708)로 송출하는 제 1 데이터 버스,
    각 레지스터(1708)의 데이터를 각 산술 연산 유닛(110, 112)에 송출하는 제 2 데이터 버스, 및
    제 1 데이터 버스와 제 2 데이터 버스를 연결하는 복수의 버스 스위치(1700 내지 1709)를 포함하는 것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 제 1 및 제 2 데이터 버스는 레지스터(1708)를 바이패스하도록 연결된 것을 특징으로 하는 데이터 처리장치.
  3. 제 1 항 또는 제 2 항에 있어서,
    전명령의 데스티네이션 필드에 의하여 특정된 상기 레지스터(1708)가 다음 명령을 위하여 즉시 사용될 때 상기 레지스터(1708)가 바이패스되는 것을 특징으로 하는 데이터 처리장치.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 버스 스위치(1700 내지 1709)는 하나의 산술 연산 유닛(110, 112)의 하나의 출력(129, 131)과 다른 산술 연산 장치(110, 112)의 적어도 하나의 입력(125 내지 128)을 연결하도록 제공되는 것을 특징으로 하는 데이터 처리장치.
  5. 제 1 항 내지 제 4 항중 어느 한 항에 있어서,
    상기 버스 스위치(1700 내지 1709)는 하나의 산술 연산 유닛(110, 112)으로부터 다른 산술 연산 유닛(110, 112)으로 연산결과를 송출하도록 제어되는 것을 특징으로 하는 데이터 처리장치.
  6. 제 1 항 내지 제 5 항중 어느 한항에 있어서,
    상기 버스 스위치(1702)는 제 1 명령의 데스티네이션 레지스터 필드(D)가 제 2 명령의 제 1 소스 레지스터 필드(S1)와 일치할 때 기동되는 것을 특징으로 하는 데이터 처리장치.
KR1019980007835A 1988-11-11 1998-03-10 데이터 처리장치 KR0160602B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP88-283673 1988-11-11
JP63283673A JP2810068B2 (ja) 1988-11-11 1988-11-11 プロセッサシステム、コンピュータシステム及び命令処理方法
KR1019890016275A KR0149658B1 (ko) 1988-11-11 1989-11-10 데이터 처리장치 및 데이터 처리방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1019890016275A Division KR0149658B1 (ko) 1988-11-11 1989-11-10 데이터 처리장치 및 데이터 처리방법

Publications (1)

Publication Number Publication Date
KR0160602B1 true KR0160602B1 (ko) 1999-10-01

Family

ID=17668583

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1019890016275A KR0149658B1 (ko) 1988-11-11 1989-11-10 데이터 처리장치 및 데이터 처리방법
KR1019980007835A KR0160602B1 (ko) 1988-11-11 1998-03-10 데이터 처리장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1019890016275A KR0149658B1 (ko) 1988-11-11 1989-11-10 데이터 처리장치 및 데이터 처리방법

Country Status (5)

Country Link
US (3) US5233694A (ko)
EP (3) EP0368332B1 (ko)
JP (1) JP2810068B2 (ko)
KR (2) KR0149658B1 (ko)
DE (3) DE68929215T2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101419668B1 (ko) * 2006-09-06 2014-07-15 실리콘 하이브 비.브이. 데이터 처리회로 및 데이터 처리방법
KR102449203B1 (ko) 2022-03-08 2022-09-29 주식회사 제이비티 안전상태정보 관리 방법

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JPH04111127A (ja) * 1990-08-31 1992-04-13 Toshiba Corp 演算処理装置
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
JP2682232B2 (ja) * 1990-11-21 1997-11-26 松下電器産業株式会社 浮動小数点演算処理装置
US5446849A (en) * 1990-11-30 1995-08-29 Kabushiki Kaisha Toshiba Electronic computer which executes squash branching
RU1804645C (ru) * 1991-03-27 1993-03-23 Институт Точной Механики И Вычислительной Техники Им.С.А.Лебедева Центральный процессор
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
JP3105197B2 (ja) 1991-06-24 2000-10-30 株式会社日立製作所 除算回路及び除算方法
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
DE69233493T2 (de) * 1991-07-08 2005-07-28 Seiko Epson Corp. RISC-Prozessor mit erweiterbarer Architektur
KR100294276B1 (ko) * 1991-07-08 2001-09-17 야스카와 히데아키 고속트랩및예외상태를구현한알아이에스씨마이크로프로세서구조
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
JPH0546386A (ja) * 1991-08-13 1993-02-26 Hitachi Ltd データプロセツサ
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
EP0551090B1 (en) * 1992-01-06 1999-08-04 Hitachi, Ltd. Computer having a parallel operating capability
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
WO1993020505A2 (en) 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
US5371864A (en) * 1992-04-09 1994-12-06 International Business Machines Corporation Apparatus for concurrent multiple instruction decode in variable length instruction set computer
EP0638183B1 (en) 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5416913A (en) * 1992-07-27 1995-05-16 Intel Corporation Method and apparatus for dependency checking in a multi-pipelined microprocessor
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
EP1107111A3 (en) 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
JP3182591B2 (ja) * 1993-01-20 2001-07-03 株式会社日立製作所 マイクロプロセッサ
US5416911A (en) * 1993-02-02 1995-05-16 International Business Machines Corporation Performance enhancement for load multiple register instruction
US5560025A (en) * 1993-03-31 1996-09-24 Intel Corporation Entry allocation apparatus and method of same
US5673409A (en) * 1993-03-31 1997-09-30 Vlsi Technology, Inc. Self-defining instruction size
US5463748A (en) 1993-06-30 1995-10-31 Intel Corporation Instruction buffer for aligning instruction sets using boundary detection
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
US5878245A (en) * 1993-10-29 1999-03-02 Advanced Micro Devices, Inc. High performance load/store functional unit and data cache
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
EP0651332B1 (en) * 1993-10-29 2001-07-18 Advanced Micro Devices, Inc. Linearly addressable microprocessor cache
DE69427265T2 (de) 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5630082A (en) * 1993-10-29 1997-05-13 Advanced Micro Devices, Inc. Apparatus and method for instruction queue scanning
US5604909A (en) 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
US5974534A (en) * 1994-02-14 1999-10-26 Hewlett-Packard Company Predecoding and steering mechanism for instructions in a superscalar processor
US5537629A (en) * 1994-03-01 1996-07-16 Intel Corporation Decoder for single cycle decoding of single prefixes in variable length instructions
US5608885A (en) * 1994-03-01 1997-03-04 Intel Corporation Method for handling instructions from a branch prior to instruction decoding in a computer which executes variable-length instructions
US5586277A (en) * 1994-03-01 1996-12-17 Intel Corporation Method for parallel steering of fixed length fields containing a variable length instruction from an instruction buffer to parallel decoders
US5566298A (en) * 1994-03-01 1996-10-15 Intel Corporation Method for state recovery during assist and restart in a decoder having an alias mechanism
US5673427A (en) * 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
US5630083A (en) * 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5600806A (en) * 1994-03-01 1997-02-04 Intel Corporation Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5559974A (en) * 1994-03-01 1996-09-24 Intel Corporation Decoder having independently loaded micro-alias and macro-alias registers accessible simultaneously by one micro-operation
US5758116A (en) * 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US6237082B1 (en) 1995-01-25 2001-05-22 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received
JP3180175B2 (ja) * 1995-02-13 2001-06-25 株式会社日立製作所 命令レベルの並列処理制御方法およびプロセッサ
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
US5859991A (en) * 1995-06-07 1999-01-12 Advanced Micro Devices, Inc. Parallel and scalable method for identifying valid instructions and a superscalar microprocessor including an instruction scanning unit employing the method
US5867701A (en) * 1995-06-12 1999-02-02 Intel Corporation System for inserting a supplemental micro-operation flow into a macroinstruction-generated micro-operation flow
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5706489A (en) * 1995-10-18 1998-01-06 International Business Machines Corporation Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data
US5796974A (en) * 1995-11-07 1998-08-18 Advanced Micro Devices, Inc. Microcode patching apparatus and method
US5815724A (en) * 1996-03-29 1998-09-29 Intel Corporation Method and apparatus for controlling power consumption in a microprocessor
US5862398A (en) * 1996-05-15 1999-01-19 Philips Electronics North America Corporation Compiler generating swizzled instructions usable in a simplified cache layout
CN1145099C (zh) * 1996-05-15 2004-04-07 特莱麦迪雅技术公司 用于存储混洗指令的方法与装置
US6131152A (en) * 1996-05-15 2000-10-10 Philips Electronics North America Corporation Planar cache layout and instruction stream therefor
JPH1011289A (ja) * 1996-06-19 1998-01-16 Mitsubishi Electric Corp 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ
US5884055A (en) * 1996-11-27 1999-03-16 Emc Corporation Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US5890219A (en) * 1996-11-27 1999-03-30 Emc Corporation Redundant writing of data to cached storage system
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
TW373149B (en) 1997-07-02 1999-11-01 Matsushita Electric Ind Co Ltd Program control method
US6467035B2 (en) * 1997-09-08 2002-10-15 Agere Systems Guardian Corp. System and method for performing table look-ups using a multiple data fetch architecture
JP2954119B2 (ja) * 1997-11-26 1999-09-27 日本電気株式会社 命令実行サイクル可変回路
DE19802364A1 (de) * 1998-01-22 1999-07-29 Siemens Ag Vorrichtung und Verfahren zur Steuerung von Prozessen auf einem Computersystem
DE19819531C1 (de) * 1998-04-30 1999-12-02 Siemens Ag RISC-Prozessor mit einer Debug-Schnittstelleneinheit
US6233690B1 (en) * 1998-09-17 2001-05-15 Intel Corporation Mechanism for saving power on long latency stalls
US6668316B1 (en) * 1999-02-17 2003-12-23 Elbrus International Limited Method and apparatus for conflict-free execution of integer and floating-point operations with a common register file
EP1050809A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Computer instruction dependency
DE69938621D1 (de) * 1999-05-03 2008-06-12 St Microelectronics Sa Befehlausgabe in einem Rechner
US6442677B1 (en) * 1999-06-10 2002-08-27 Advanced Micro Devices, Inc. Apparatus and method for superforwarding load operands in a microprocessor
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7711926B2 (en) 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US7107439B2 (en) * 2001-08-10 2006-09-12 Mips Technologies, Inc. System and method of controlling software decompression through exceptions
EP1387253B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Dynamic translation and execution of instructions within a processor
US7366352B2 (en) * 2003-03-20 2008-04-29 International Business Machines Corporation Method and apparatus for performing fast closest match in pattern recognition
US7698539B1 (en) * 2003-07-16 2010-04-13 Banning John P System and method of instruction modification
US6996916B2 (en) * 2004-03-09 2006-02-14 Helen Of Troy Limited Variable ion hair styling appliances
US20050224091A1 (en) * 2004-04-08 2005-10-13 Helen Of Troy Limited Ion curling iron and straightener
JP4435177B2 (ja) * 2004-11-12 2010-03-17 株式会社ジャストシステム データ処理装置およびデータ処理方法
US7985566B2 (en) 2005-04-22 2011-07-26 Mitsubishi Chemical Corporation Biomass-resource-derived polyester and production process thereof
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US9513959B2 (en) * 2007-11-21 2016-12-06 Arm Limited Contention management for a hardware transactional memory
SE536462C2 (sv) * 2011-10-18 2013-11-26 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
JP6106499B2 (ja) * 2013-04-11 2017-03-29 株式会社日立製作所 データ反映方法
US11599358B1 (en) * 2021-08-12 2023-03-07 Tenstorrent Inc. Pre-staged instruction registers for variable length instruction set machine

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573853A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US3614745A (en) * 1969-09-15 1971-10-19 Ibm Apparatus and method in a multiple operand stream computing system for identifying the specification of multitasks situations and controlling the execution thereof
US3771138A (en) * 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US4521850A (en) * 1977-12-30 1985-06-04 Honeywell Information Systems Inc. Instruction buffer associated with a cache memory unit
JPS6043535B2 (ja) 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
US4616331A (en) * 1980-02-25 1986-10-07 Tsuneo Kinoshita Information processing system consisting of an arithmetic control unit formed into a one-chip typed by application of a highly-integrated semiconductor device
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4437149A (en) 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
EP0072373B1 (en) * 1981-08-19 1986-03-19 International Business Machines Corporation Improved microprocessor
EP0082903B1 (fr) * 1981-12-29 1987-05-13 International Business Machines Corporation Unité de commande pouvant être connectée à deux mémoires de vitesses différentes
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4546428A (en) * 1983-03-08 1985-10-08 International Telephone & Telegraph Corporation Associative array with transversal horizontal multiplexers
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
JPS59186062A (ja) * 1983-04-07 1984-10-22 Nec Corp 分散形プロセツサシステム
JPS6015746A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd デ−タ処理装置
JPS60120439A (ja) * 1983-12-05 1985-06-27 Nec Corp 演算処理装置
JPS60136872A (ja) 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
US4599708A (en) * 1983-12-30 1986-07-08 International Business Machines Corporation Method and structure for machine data storage with simultaneous write and read
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
US4620275A (en) * 1984-06-20 1986-10-28 Wallach Steven J Computer system
JPS619734A (ja) * 1984-06-26 1986-01-17 Nec Corp プロセツサ制御方式
US4766564A (en) * 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
US4677545A (en) * 1984-10-12 1987-06-30 American Telephone And Telegraph Company Microprocessor having macro-rom and main program queues
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US4789925A (en) * 1985-07-31 1988-12-06 Unisys Corporation Vector data logical usage conflict detection
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.
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US4825360A (en) * 1986-07-30 1989-04-25 Symbolics, Inc. System and method for parallel processing with mostly functional languages
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
JPS6373332A (ja) 1986-09-16 1988-04-02 Nec Corp マイクロプログラム制御方式
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPH0810430B2 (ja) 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US4811296A (en) * 1987-05-15 1989-03-07 Analog Devices, Inc. Multi-port register file with flow-through of data
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
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
EP0407911B1 (en) 1989-07-07 1998-12-09 Hitachi, Ltd. Parallel processing apparatus and parallel processing method
JPH03288246A (ja) 1990-04-04 1991-12-18 Matsushita Electric Ind Co Ltd 命令キャッシュメモリ
US5214763A (en) 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
EP0459232B1 (en) 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101419668B1 (ko) * 2006-09-06 2014-07-15 실리콘 하이브 비.브이. 데이터 처리회로 및 데이터 처리방법
US8838945B2 (en) 2006-09-06 2014-09-16 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes for processing time-stationary encoded instructions, and method of operating/scheduling such data circuit
KR102449203B1 (ko) 2022-03-08 2022-09-29 주식회사 제이비티 안전상태정보 관리 방법

Also Published As

Publication number Publication date
EP0368332A2 (en) 1990-05-16
EP0996057B1 (en) 2003-08-13
KR900008394A (ko) 1990-06-04
US5233694A (en) 1993-08-03
US20010021970A1 (en) 2001-09-13
EP0368332B1 (en) 1997-09-24
EP0782071A2 (en) 1997-07-02
JP2810068B2 (ja) 1998-10-15
DE68928340D1 (de) 1997-10-30
EP0996057A1 (en) 2000-04-26
DE68929483T2 (de) 2004-07-01
KR0149658B1 (ko) 1998-10-15
US7424598B2 (en) 2008-09-09
DE68929483D1 (de) 2003-09-18
JPH02130634A (ja) 1990-05-18
DE68929215T2 (de) 2001-01-25
EP0782071B1 (en) 2000-05-24
US6256726B1 (en) 2001-07-03
DE68929215D1 (de) 2000-06-29
EP0368332A3 (en) 1992-07-15
DE68928340T2 (de) 1998-02-12
EP0782071A3 (en) 1997-07-30

Similar Documents

Publication Publication Date Title
KR0160602B1 (ko) 데이터 처리장치
KR100208889B1 (ko) 병렬처리장치 및 병렬처리방법
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5649145A (en) Data processor processing a jump instruction
US4740893A (en) Method for reducing the time for switching between programs
EP0473420A2 (en) Virtual long instruction word memory architecture for digital signal processor
KR100254008B1 (ko) 2개의 명령을 동시에 실행할 수 있는 데이타 프로세서
JPS6014341A (ja) 基本命令セツト計算機システムにおけるトラツプ割込み方式
US4323964A (en) CPU Employing micro programmable control for use in a data processing system
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
US5097407A (en) Artificial intelligence processor
US5041968A (en) Reduced instruction set computer (RISC) type microprocessor executing instruction functions indicating data location for arithmetic operations and result location
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
US6101596A (en) Information processor for performing processing without register conflicts
US5363490A (en) Apparatus for and method of conditionally aborting an instruction within a pipelined architecture
US6266764B1 (en) Program controller for switching between first program and second program
JP3102399B2 (ja) データ処理装置及び方法
KR100367139B1 (ko) 캐시의내용이무효인경우캐시가판독되는것을방지하는파이프라인형마이크로프로세서
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP2636821B2 (ja) 並列処理装置
US5649229A (en) Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage
JP2785820B2 (ja) 並列処理装置
JP2927281B2 (ja) 並列処理装置
KR100257772B1 (ko) 수퍼스칼라 마이크로프로세서의 정지점 생성 장치
JPH04264954A (ja) 複合命令計算機

Legal Events

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

Payment date: 20060810

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee