KR0149658B1 - 데이터 처리장치 및 데이터 처리방법 - Google Patents
데이터 처리장치 및 데이터 처리방법Info
- Publication number
- KR0149658B1 KR0149658B1 KR1019890016275A KR890016275A KR0149658B1 KR 0149658 B1 KR0149658 B1 KR 0149658B1 KR 1019890016275 A KR1019890016275 A KR 1019890016275A KR 890016275 A KR890016275 A KR 890016275A KR 0149658 B1 KR0149658 B1 KR 0149658B1
- Authority
- KR
- South Korea
- Prior art keywords
- instructions
- instruction
- information
- contention
- register
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 29
- 230000004044 response Effects 0.000 claims abstract 7
- 238000010586 diagram Methods 0.000 description 18
- 238000004364 calculation method Methods 0.000 description 17
- 230000008901 benefit Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 6
- 238000003672 processing method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
데이터를 저장하기 위한 메모리수단과, 실행될 명령의 어드레스를 출력하기 위한 프로그램카운터와, 상기 메모리수단과 상기 프로그램카운터에 접속된 메모리 인터페이스수단, 상기 메모리 인터페이스수단으로부터 입력된 복수의 명령을 저장하여 상기 프로그램카운터에 의해 출력된 어드레스에 응답하여 m개의 명령을 출력하도록 상기 프로그램카운터에 접속된 명령캐시, 상기 메모리 인터페이스수단과 상기 명령캐시 사이에 접속되고, 디코딩된 결과로서 상기 필드내에 저장될 정보를 생성시키도록 상기 메모리 인터페이스수단으로부터 상기 명령캐시로 이동된 명령들을 디코딩하는 프리디코더수단, 상기 명령캐시에 접속되어, 복수의 명령이 선택되는 경우에 병렬처리를 위한 적어도 하나의 명령을 지정하기 위한 상기 필드내의 정보에 응답하며, 상기 m개의 명령들을 수신하기 위한 마스크 및 스위치수단과, 상기 마스크 및 스위치수단에 접속되고 선택된 적어도 하나의 명령을 저장하기 위한 m개의 명령레지스터와, 상기 m개의 명령레지스터에 각각 접속되어, 그에 해당하는 디코딩된 결과를 생성시키도록 상기 적어도 하나의 저장된 명령을 디코딩하는 m개의 디코더와, 저장된 명령과 상기 필드내의 정보에 응답하여 상기 프로그램카운터내에 어드레스를 설정하는 시퀀스와, 상기 디코딩된 결과에 응답하여 상기 레지스터 파일로부터 이동된 적어도 하나의 데이터사항을 입력하며, 산술연산의 결과를 지시하는 데이터를 상기 레지스터 파일로 출력하도록 상기 입력된 데이터사항에 산술연산을 수행하는 m개의 산술연산 유닛을 포함하는 데이터처리장치를 제공한다.
Description
제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, 102 : 프로그램카운터(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)
본 발명은 미니컴퓨터(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머신 사이클에 복수의 명령을 판독하여 복수 연산 유닛을 제어하는 것 등에 의하여 달성된다.
본 발명의 적합한 실시예에 의하면, 복잡한 명령은 기본명령으로 분해되고 또 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명령으로서 출현했을 때의 제어방법에 관하여 설명한다. 제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화되어 있다. (b)에서는 제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 (51)
- 파이프라인된 데이터처리장치에 있어서, 데이터를 저장하기 위한 메모리 수단과; 실행될 명령의 어드레스를 출력하기 위한 프로그램카운터와; 상기 메모리수단과 상기 프로그램카운터에 접속된 메모리 인터페이스수단; 복수의 저장위치 필드를 구비하고, 상기 메모리 인터페이스수단으로부터 입력된 복수의 명령을 저장하여 상기 프로그램카운터에 의해 출력된 어드레스에 응답하여 m(여기서 m은 2보다 큰 정수임)개의 명령을 출력하도록 하기 위한 상기 프로그램카운터에 접속된 명령캐시; 상기 메모리 인터페이스수단과 상기 명령캐시 사이에 접속되고, 디코딩된 결과로서 상기 필드내에 저장될 정보를 생성시키도록 상기 메모리 인터페이스수단으로부터 상기 명령캐시로 이동된 명령들을 디코딩하는 프리디코더(per-decoder)수단; 상기 명령캐시에 접속되어, 복수의 명령이 선택되는 경우에 병렬처리를 위한 적어도 하나의 명령을 지정하기 위한 상기 필드내의 정보에 응답하며, 상기 m개의 명령들을 수신하기 위한 마스크 및 스위치수단과; 상기 마스크 및 스위치수단에 접속되고, 한번에 상기 마스크 및 스위치수단에 의해 선택된 적어도 하나의 명령을 저장하기 위한 m개의 명령레지스터와; 상기 m개의 명령레지스터에 각각 접속되어, 그에 해당하는 디코딩된 결과를 생성시키도록 상기 적어도 하나의 저장된 명령을 디코딩하는 m개의 디코더와; 상기 명령캐시, 상기 m개의 명령레지스터들 및 상기 프로그램카운터에 접속되고, 적어도 하나의 저장된 명령과 상기 필드내의 정보에 응답하여 상기 프로그램 카운터내에 어드레스를 설정하는 시퀀스와; 상기 m개의 디코더에 접속되고, 데이터를 저장하기 위한 복수의 레지스터를 포함하는 레지스터 파일; 및 상기 m개의 디코더와 상기 레지스터파일에 각각 접속되고, 상기 디코딩된 결과에 응답하여 상기 레지스터 파일로부터 이동된 적어도 하나의 데이터사항을 입력하며, 산술연산의 결과를 지시하는 데이터를 상기 레지스터 파일로 출력하도록 상기 입력된 데이터사항에 산술연산을 수행하는 m개의 산술연산 유닛을 포함하는 것을 특징으로 하는 데이터 처리장치.
- 제1항에 있어서, 상기 명령캐시는 명령들의 복수의 블록을 저장하고, 각각의 블록은 상기 프로그램카운터에 의해 출력된 어드레스에 응답하여 한번에 한 개의 블록을 출력시키기 위하여, m(여기서m=2n이고 n은 양의 정수임)개의 연속적인 명령들과 상기 각 필드를 포함하여, 상기 산술 연산 유닛에 의한 명령들의 병렬처리가 블록내의 명령들로 제한되는 것을 특징으로 하는 파이프라인된 데이터처리장치.
- 제2항에 있어서, 각각의 상기 필드는 해당하는 블록에서 적어도 두 개의 명령들이 병렬로 실행될 수 있는지의 여부를 지시하는 적어도 하나의 비트를 포함하는 것을 특징으로 하는 파이프라인된 데이터처리장치.
- 메모리장치에 있어서, 복수의 명령을 저장하기 위한 제1영역과 상기 명령들이 병렬로 처리될 수 있는지 여부를 결정하는데 사용된 정보를 저장하기 위한 제2영역을 구비한 캐시메모리를 포함하는 것을 특징으로 하는 메모리장치.
- 제4항에 있어서, 상기 정보는 상기 복수의 명령들의 실행 시퀀스를 제어하는데 사용되는 것을 특징으로 하는 메모리장치.
- 제4항에 있어서, 상기 제1영역은 상기 복수의 명령을 저장하기 위한 복수의 저장위치들을 포함하고, 상기 제2영역은 상기 정보를 저장하기 위한 상기 제1영역에서 저장위치와 개별적으로 관련된 복수의 태그필드(tag field)를 포함하는 것을 특징으로 하는 메모리장치.
- 제4항에 있어서, 상기 정보는 상기 명령들의 병렬처리에서 상기 여러 가지 명령들 사이의 경합을 지시하는데 사용되는 것을 특징으로 하는 메모리장치.
- 제7항에 있어서, 상기 정보에 의해 지시된 경합은 레지스터 경합인 것을 특징으로 하는 메모리장치.
- 제7항에 있어서, 상기 정보에 의해 지시된 경합은 리소스(resource) 경합인 것을 특징으로 하는 메모리장치.
- 제9항에 있어서, 상기 리소스 경합은 동일한 실행유닛에 의해 실행되는 복수의 명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 제9항에 있어서, 상기 리소스 경합은 동일한 로드유닛에 의해 사용을 위해 필요한 로드명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 제9항에 있어서, 상기 리소스 경합은 동일한 쉬프터의 사용을 위해 필요한 쉬프트명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 제4항에 있어서, 상기 제2영역은 상기 복수의 명령들과 관련하여 상기 정보의 비트들의 소정개수를 저장하기 위한 복수의 저장위치를 포함하는 것을 특징으로 하는 메모리장치.
- 제13항에 있어서, 상기 정보는 상기 복수의 명령들의 실행순서를 제어하는데 사용되는 것을 특징으로 하는 메모리장치.
- 제13항에 있어서, 상기 정보는 상기 명령들의 병렬처리에서 상기 명령들의 각각 하나들 사이의 경합을 지시하는데 사용되는 것을 특징으로 하는 메모리장치.
- 제15항에 있어서, 상기 정보에 의해 지시된 경합은 레지스터 경합인 것을 특징으로 하는 메모리장치.
- 제15항에 있어서, 상기 정보에 의해 지시된 경합은 리소스 경합인 것을 특징으로 하는 메모리장치.
- 제17항에 있어서, 상기 리소스 경합은 동일한 실행유닛에 의해 실행되는 복수의 명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 제17항에 있어서, 상기 리소스 경합은 동일한 로드 유닛에 의해 사용을 위해 필요한 로드 명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 제17항에 있어서, 상기 리소스 경합은 동일한 쉬프터의 사용을 위해 필요한 쉬프트명령들에 관련되어 있는 것을 특징으로 하는 메모리장치.
- 두 개 이상의 명령들을 병렬로 처리할 수 있는 처리장치와 함께 사용되는 명령 캐시 메모리에 있어서, 상기 처리장치에 의해 실행될 상기 명령들을 저장하기 위한 저장위치들의 제1필드와 상기 처리장치에 의해 상기 명령들이 상호 병렬로 처리될 수 있는지의 여부를 지시하는 정보를 저장하기 위한 저장위치의 제2필드를 구비한 메모리장치를 포함하는 것을 특징으로 하는 명령 캐시 메모리.
- 제21항에 있어서, 상기 제2필드의 저장위치들은 상기 제1필드의 저장위치들과 개별적으로 결합되어, 상기 제1필드의 저장위치들내에 저장된 상기 명령들이 상호 병렬로 처리될 수 있는지의 여부가 상기 제2필드의 관련 저장위치들내에 저장된 정보들로부터 결정되도록 하는 것을 특징으로 명령캐시메모리.
- 두 개이상의 명령들을 병렬로 처리할 수 있는 처리장치와 함께 사용되는 명령캐시메모리에 있어서, 상기 처리장치에 의해 실행될 상기 명령들을 저장하기 위한 저장위치들의 제1필드와 상기 처리장치에 의해 상기 명령들의 실행시퀀스를 결정하는데 사용되는 정보를 저장하기 위한 저장위치들의 제2필드를 구비한 메모리장치를 포함하는 것을 특징으로 하는 명령캐시메모리.
- 제23항에 있어서, 상기 정보는 상기 명령들과 결합된 비트들의 소정 개수로서 상기 제2필드의 저장위치들내에 저장되어 있는 것을 특징으로 하는 캐시메모리.
- 처리장치시스템에 있어서, 복수의 명령들을 페치하기 위한 페치수단과; 상기 페치수단에 의해 페치된 명령들을 프리디코딩하고 상기 명령들이 병렬로 처리될 수 있는지의 여부를 결정하는데 사용한 정보를 생성시키기 위한 프리디코드수단과; 상기 복수의 명령들과 상기 프리디코드수단에 의해 생성된 상기 정보를 저장하기 위한 캐시메모리를 포함하는 것을 특징으로 하는 처리장치시스템.
- 제25항에 있어서, 상기 캐시메모리내에 저장된 상기 정보에 근거하여 상기 복수의 명령들을 실행하기 위한 산술논리 연산수단을 더 포함하는 것을 특징으로 하는 처리장치시스템.
- 제26항에 있어서, 상기 정보는 상기 산술논리 연산수단에 의해 상기 복수의 명령들의 실행시퀀스를 제어하는데 사용되는 것을 특징으로 하는 처리장치 시스템.
- 제26항에 있어서, 상기 정보는 상기 산술논리 연산수단에 의해 상기 복수의 명령들의 병렬처리에서 상기 다양한 명령들 사이의 경합을 분석하는데 사용되는 것을 특징으로 하는 처리장치시스템.
- 제28항에 있어서, 상기 정보에 의해 지시된 상기 경합은 레지스터 경합인 것을 특징으로 하는 처리장치시스템.
- 제28항에 있어서, 상기 정보에 의해 지시된 상기 경합은 리소스 경합인 것을 특징으로 하는 처리장치시스템.
- 제30항에 있어서, 상기 리소스 경합은 동일한 실행유닛에 의해 실행되는 복수의 명령들에 관련되어 있는 것을 특징으로 하는 처리장치시스템.
- 제30항에 있어서, 상기 리소스 경합은 동일한 로드유닛에 의해 사용을 위해 필요한 로드명령들에 관련되어 있는 것을 특징으로 하는 처리장치시스템.
- 제30항에 있어서, 상기 리소스 경합은 동일한 쉬프터의 사용을 위해 필요한 쉬프트명령들에 관련되어 있는 것을 특징으로 하는 처리장치시스템.
- 제26항에 있어서, 상기 정보는 단일 비트로 표시되는 것을 특징으로 하는 처리장치시스템.
- 명령을 처리하는 방법에 있어서, 명령스토리지로부터 명령들을 페치하는 컴퓨터실행 페치단계와; 상기 명령들이 병렬로 처리될 수 있는지의 여부를 결정하기 위한 정보를 얻기 위하여 상기 인출된 명령들을 프리디코딩하는 컴퓨터실행 프리디코딩단계와; 상기 캐시메모리내의 상기 정보와 함께 상기 명령들을 저장하는 컴퓨터실행 저장단계; 및 경합없이 상기 명령들이 병렬로 처리될 수 있음을 상기 명령들과 함께 저장된 상기 정보가 지시할 때 상기 캐시메모리로부터 얻어진 상기 명령들을 병렬처리하는 컴퓨터실행 병렬처리단계를 포함하는 것을 특징으로 하는 명령처리방법.
- 제35항에 있어서, 상기 정보에 의해 지시된 상기 경합은 레지스터 경합인 것을 특징으로 하는 명령처리방법.
- 제35항에 있어서, 상기 정보에 의해 지시된 상기 경합은 리소스 경합인 것을 특징으로 하는 명령처리방법.
- 제37항에 있어서, 상기 리소스 경합은 동일한 실행수단에 의해 실행되는 복수의 명령들에 관련되어 있는 것을 특징으로 하는 명령처리방법.
- 제37항에 있어서, 상기 리소스 경합은 동일한 로드유닛에 의해 사용을 위해 필요한 로드명령들에 관련되어 있는 것을 특징으로 하는 명령처리방법.
- 제37항에 있어서, 상기 리소스 경합은 동일한 쉬프터의 사용을 위해 필요한 쉬프트명령에 관련되어 있는 것을 특징으로 하는 명령처리방법.
- 제35항에 있어서, 상기 명령들을 병렬 처리하는 상기 단계는 상기 캐시메모리내의 상기 명령들과 함께 저장된 상기 정보에 따라 명령들의 실행 타이밍을 제어하는 단계를 포함하는 것을 특징으로 하는 명령처리방법.
- 제35항에 있어서, 상기 정보는 상기 복수의 명령들에 결합된 비트들의 소정개수에 의해 표시되는 것을 특징으로 하는 명령처리방법.
- 데이터처리 시스템에 있어서, 명령을 저장하기 위한 제1저장수단과; 상기 저장수단내에 수용된 상기 명령들을 판독하여 명령의 실행순서를 제어하는데 사용될 정보를 생성시키도록 하는 디코드수단과; 상기 제1저장수단내에 수용된 명령들과 상기 디코드수단에 의해 생성된 상기 정보를 저장하기 위한 제2저장수단; 및 상기 제2저장수단내에 수용된 상기 정보에 근거하여 상기 제2저장수단내에 수용된 상기 명령들을 실행하기 위한 산술 논리연산수단을 구비하는 것을 특징으로 하는 데이터처리 시스템.
- 제43항에 있어서, 상기 제2저장수단은 캐시메모리인 것을 특징으로 하는 데이터처리 시스템.
- 제43항에 있어서, 상기 산술 논리 연산수단은 복수의 상기 명령들을 병렬로 실행시킬 수 있고 상기 제2저장수단내에 저장된 상기 정보는 경합없이 상기 명령들이 병렬적으로 실행될 수 있는지를 결정하는데 사용되는 것을 특징으로 하는 데이터처리 시스템.
- 제45항에 있어서, 상기 정보에 의해 지시된 상기 경합은 레지스터 경합인 것을 특징으로 하는 데이터 처리시스템.
- 제45항에 있어서, 상기 정보에 의해 지시된 상기 경합은 리소스 경합인 것을 특징으로 하는 데이터 처리시스템.
- 제47항에 있어서, 상기 리소스 경합은 상기 동일한 실행유닛에 의해 실행되는 복수의 명령들에 관련되어 있는 것을 특징으로 하는 데이터 처리시스템.
- 제47항에 있어서, 상기 리소스 경합은 상기 동일한 로드유닛에 의해 사용을 위해 필요한 로드 명령들에 관련되어 있는 것을 특징으로 하는 데이터 처리시스템.
- 제47항에 있어서, 상기 리소스 경합은 동일한 쉬프터의 사용을 위해 필요한 쉬프트명령에 관련 되어있는 것을 특징으로 하는 데이터 처리시스템.
- 제43항에 있어서, 상기 디코드수단은 상기 제1저장수단과 상기 제2저장수단 사이에 접속되어 있는 것을 특징으로 하는 데이터 처리시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980007835A KR0160602B1 (ko) | 1988-11-11 | 1998-03-10 | 데이터 처리장치 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP63-283673 | 1988-11-11 | ||
JP88-283673 | 1988-11-11 | ||
JP63283673A JP2810068B2 (ja) | 1988-11-11 | 1988-11-11 | プロセッサシステム、コンピュータシステム及び命令処理方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980007835A Division KR0160602B1 (ko) | 1988-11-11 | 1998-03-10 | 데이터 처리장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR900008394A KR900008394A (ko) | 1990-06-04 |
KR0149658B1 true KR0149658B1 (ko) | 1998-10-15 |
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 After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980007835A KR0160602B1 (ko) | 1988-11-11 | 1998-03-10 | 데이터 처리장치 |
Country Status (5)
Country | Link |
---|---|
US (3) | US5233694A (ko) |
EP (3) | EP0782071B1 (ko) |
JP (1) | JP2810068B2 (ko) |
KR (2) | KR0149658B1 (ko) |
DE (3) | DE68928340T2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100325177B1 (ko) * | 1991-07-08 | 2002-02-21 | 고성능 알아이에스씨 마이크로프로세서 구조 |
Families Citing this family (100)
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 |
DE69130588T2 (de) * | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
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 | 松下電器産業株式会社 | 浮動小数点演算処理装置 |
EP0488819B1 (en) * | 1990-11-30 | 1999-01-13 | Kabushiki Kaisha Toshiba | Conditional branch instructions execution apparatus |
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 |
JP3105197B2 (ja) | 1991-06-24 | 2000-10-30 | 株式会社日立製作所 | 除算回路及び除算方法 |
JP2984463B2 (ja) | 1991-06-24 | 1999-11-29 | 株式会社日立製作所 | マイクロコンピュータ |
KR100299691B1 (ko) * | 1991-07-08 | 2001-11-22 | 구사마 사부로 | 확장가능알아이에스씨마이크로프로세서구조 |
EP0547240B1 (en) * | 1991-07-08 | 2000-01-12 | Seiko Epson Corporation | Risc microprocessor architecture implementing fast trap and exception state |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
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 |
DE69311330T2 (de) | 1992-03-31 | 1997-09-25 | Seiko Epson Corp., Tokio/Tokyo | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
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 |
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 |
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 |
WO1994008287A1 (en) | 1992-09-29 | 1994-04-14 | 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 |
WO1994016384A1 (en) | 1992-12-31 | 1994-07-21 | 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 |
EP0651320B1 (en) * | 1993-10-29 | 2001-05-23 | Advanced Micro Devices, Inc. | Superscalar instruction decoder |
US5878245A (en) * | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
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 |
EP0651332B1 (en) | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearly addressable microprocessor cache |
DE69434669T2 (de) * | 1993-10-29 | 2006-10-12 | Advanced Micro Devices, Inc., Sunnyvale | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
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 |
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 |
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 |
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 |
US5537629A (en) * | 1994-03-01 | 1996-07-16 | Intel Corporation | Decoder for single cycle decoding of single prefixes in variable length instructions |
US5630083A (en) * | 1994-03-01 | 1997-05-13 | Intel Corporation | Decoder for decoding multiple instructions in parallel |
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 |
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 |
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 |
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 |
US6131152A (en) * | 1996-05-15 | 2000-10-10 | Philips Electronics North America Corporation | Planar cache layout and instruction stream therefor |
JP3706633B2 (ja) * | 1996-05-15 | 2005-10-12 | トリメディア テクノロジーズ インコーポ レイテッド | 命令キャッシュを備えたプロセッサ |
JPH1011289A (ja) * | 1996-06-19 | 1998-01-16 | Mitsubishi Electric Corp | 並列処理プロセッサにおける命令数拡張方法および並列処理プロセッサ |
US5890219A (en) * | 1996-11-27 | 1999-03-30 | Emc Corporation | Redundant writing of data to cached storage system |
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 |
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 |
EP1050808B1 (en) * | 1999-05-03 | 2008-04-30 | STMicroelectronics S.A. | Computer instruction scheduling |
EP1050809A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Computer instruction dependency |
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 | 株式会社ジャストシステム | データ処理装置およびデータ処理方法 |
CN101163729B (zh) | 2005-04-22 | 2013-04-10 | 三菱化学株式会社 | 来自生物质资源的聚酯及其制造方法 |
WO2008030093A2 (en) | 2006-09-06 | 2008-03-13 | Silicon Hive B.V. | Data processing circuit with a plurality of instruction modes |
US9513959B2 (en) * | 2007-11-21 | 2016-12-06 | Arm Limited | Contention management for a hardware transactional memory |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | 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 | 株式会社日立製作所 | データ反映方法 |
US12067395B2 (en) | 2021-08-12 | 2024-08-20 | Tenstorrent Inc. | Pre-staged instruction registers for variable length instruction set machine |
US11599358B1 (en) | 2021-08-12 | 2023-03-07 | Tenstorrent Inc. | Pre-staged instruction registers for variable length instruction set machine |
KR102449203B1 (ko) | 2022-03-08 | 2022-09-29 | 주식회사 제이비티 | 안전상태정보 관리 방법 |
Family Cites Families (41)
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 | 富士通株式会社 | 情報処理装置 |
EP0139080B1 (en) * | 1980-02-25 | 1989-08-30 | Kabushiki Kaisha Toshiba | An information-processing system |
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 |
DE69130588T2 (de) | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
-
1988
- 1988-11-11 JP JP63283673A patent/JP2810068B2/ja not_active Expired - Lifetime
-
1989
- 1989-11-08 US US07/433,368 patent/US5233694A/en not_active Expired - Lifetime
- 1989-11-10 DE DE68928340T patent/DE68928340T2/de not_active Expired - Fee Related
- 1989-11-10 KR KR1019890016275A patent/KR0149658B1/ko not_active IP Right Cessation
- 1989-11-10 EP EP97103969A patent/EP0782071B1/en not_active Expired - Lifetime
- 1989-11-10 EP EP89120881A patent/EP0368332B1/en not_active Expired - Lifetime
- 1989-11-10 EP EP99122100A patent/EP0996057B1/en not_active Expired - Lifetime
- 1989-11-10 DE DE68929483T patent/DE68929483T2/de not_active Expired - Fee Related
- 1989-11-10 DE DE68929215T patent/DE68929215T2/de not_active Expired - Fee Related
-
1992
- 1992-11-20 US US07/979,772 patent/US6256726B1/en not_active Expired - Lifetime
-
1998
- 1998-03-10 KR KR1019980007835A patent/KR0160602B1/ko not_active IP Right Cessation
-
2001
- 2001-05-14 US US09/853,769 patent/US7424598B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100325177B1 (ko) * | 1991-07-08 | 2002-02-21 | 고성능 알아이에스씨 마이크로프로세서 구조 | |
KR100325176B1 (ko) * | 1991-07-08 | 2002-02-25 | 고성능 알아이에스씨 마이크로프로세서 구조 | |
KR100325175B1 (ko) * | 1991-07-08 | 2002-02-25 | 고성능 알아이에스씨 마이크로프로세서 구조 |
Also Published As
Publication number | Publication date |
---|---|
JPH02130634A (ja) | 1990-05-18 |
EP0782071A2 (en) | 1997-07-02 |
EP0782071A3 (en) | 1997-07-30 |
EP0996057A1 (en) | 2000-04-26 |
DE68929483T2 (de) | 2004-07-01 |
US20010021970A1 (en) | 2001-09-13 |
DE68928340D1 (de) | 1997-10-30 |
DE68928340T2 (de) | 1998-02-12 |
KR0160602B1 (ko) | 1999-10-01 |
KR900008394A (ko) | 1990-06-04 |
EP0782071B1 (en) | 2000-05-24 |
US7424598B2 (en) | 2008-09-09 |
DE68929483D1 (de) | 2003-09-18 |
EP0368332B1 (en) | 1997-09-24 |
JP2810068B2 (ja) | 1998-10-15 |
US6256726B1 (en) | 2001-07-03 |
DE68929215D1 (de) | 2000-06-29 |
EP0996057B1 (en) | 2003-08-13 |
DE68929215T2 (de) | 2001-01-25 |
EP0368332A2 (en) | 1990-05-16 |
US5233694A (en) | 1993-08-03 |
EP0368332A3 (en) | 1992-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR0149658B1 (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 | |
KR100208889B1 (ko) | 병렬처리장치 및 병렬처리방법 | |
US5649145A (en) | Data processor processing a jump instruction | |
US5958048A (en) | Architectural support for software pipelining of nested loops | |
US9329866B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
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 | |
US5398321A (en) | Microcode generation for a scalable compound instruction set machine | |
US6101596A (en) | Information processor for performing processing without register conflicts | |
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 | |
US6670895B2 (en) | Method and apparatus for swapping the contents of address registers | |
EP0279953A2 (en) | Computer system having mixed macrocode and microcode instruction execution | |
US6266764B1 (en) | Program controller for switching between first program and second program | |
JP3147884B2 (ja) | 記憶装置及び情報処理装置 | |
JP3102399B2 (ja) | データ処理装置及び方法 | |
JP2636821B2 (ja) | 並列処理装置 | |
JPH063583B2 (ja) | 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 | |
JP2785820B2 (ja) | 並列処理装置 | |
JP2927281B2 (ja) | 並列処理装置 | |
WO1998006039A1 (en) | Disambiguation memory circuit and operating method | |
JPH0667882A (ja) | データ処理装置 |
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: 20120521 Year of fee payment: 15 |
|
EXPY | Expiration of term |