KR0133238B1 - 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법 - Google Patents

컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법

Info

Publication number
KR0133238B1
KR0133238B1 KR1019940023113A KR19940023113A KR0133238B1 KR 0133238 B1 KR0133238 B1 KR 0133238B1 KR 1019940023113 A KR1019940023113 A KR 1019940023113A KR 19940023113 A KR19940023113 A KR 19940023113A KR 0133238 B1 KR0133238 B1 KR 0133238B1
Authority
KR
South Korea
Prior art keywords
instruction
instructions
buffer
instruction buffer
execution
Prior art date
Application number
KR1019940023113A
Other languages
English (en)
Other versions
KR950009453A (ko
Inventor
스코트 레이 데이비드
에드워드 댓처 래리
스탠리 와랜 2세 헨리
Original Assignee
윌리암 티. 엘리스
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 윌리암 티. 엘리스, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 윌리암 티. 엘리스
Publication of KR950009453A publication Critical patent/KR950009453A/ko
Application granted granted Critical
Publication of KR0133238B1 publication Critical patent/KR0133238B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Selective Calling Equipment (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

각 실행장치가 자신과 연관된 인스트럭션 버퍼를 가지고 모든 인스트럭션이 순서대로 실행되는 다중 실행장치 프로세싱 시스템(multiple execution unit porcessing system)이 제공된다. 제1실행장치(장치 0)는 항상 가장 오래된 인스트럭션을 포함하고 제2실행장치(장치 1)는 가장 최신의 것을 포함한다. 로드, 저장, 가산등과 같은 프로세서 인스트럭션이 인스트럭션 캐시버퍼로부터 인스트럭션 버퍼 0과 인스트럭션 버퍼 1의 각각에 제공된다. 제1(가장 오래된)인스트럭션은 버퍼 0에 입력되고, 제2(가장 최신의)인스트럭션은 버퍼 1에 제공된다. 디코딩 단계동안 인스트럭션이 직전의 선행 인스트럭션에 의존하는지를 판단한다. 인스트럭션이 모드 다른 인스트럭션에 독립적인 경우, 병렬로 실행될 수 있다. 그러나, 제2인스트럭션이 제1인스트럭션에 의존한다면, (제1인스트럭션의 실행에 후속하여) 제1인스트럭션 버퍼로 시프팅된다. 또한, 사용불가능 자원에 의존하는 인스트럭션이 정의될 수 있다. 대부분의 경우, 이들 사용불가능 인스트럭션은 실행장치상에서 병렬로 실행될 수 있다.

Description

컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법
제1도는 본 발명을 이용할 수 있는 다중 실행 프로세서의 각종 요소를 도시한 블럭도.
제2도는 각 실행장치와 연관된 인스트럭션 버퍼와 인스트럭션의 흐름 경로를 도시한 본 발명의 상세도.
제3도 및 3b도는 각종 기준에 따라, 제1 및 제2인스트럭션이 종속적인 것으로 도시된 본 발명의 바람직한 실시예를 도시한 흐름도.
제4도는 본 발명에서 독립 혹은 종속 인스트럭션을 실행하기 위해 필요한 기계 사이클 수의 예를 도시한 타이밍도.
*도면의 주요 부분에 대한 부호의 설명*
1 : 인스트럭션 버퍼2 : 인스트럭션 버퍼0
3 : 디코드제어장치04 : 인스트럭션 버퍼1
5 : 디코드제어장치17,9 : 레지스터화일
10 : 레지스터화일 입력래치 및 멀티프렉서
13 : 실행제어장치014 : 인스트럭션버퍼
15 : 실행제어장치117 : 실행장치0
19 : 실행장치121 : 2-포트 가산기
23,27 : 논리장치25 : 3-포트 가산기
33 : 2-포트 데이타어드레스변환논리부
35 : 되기록데이타선36 : 데이타캐시버스
본 발명은 다중 실행장치(multiple execution units)를 구비한 프로세싱시스템(processing system)에서 인스트럭션(instructions)을 지명(dispatch)하는 것에 관한 것으로 특히 인스트럭션(instructions)이 종속(dependent), 독립(independent) 혹은 사용불가능 자원(unavailable resource)으로 정의되는 다중 인스트럭션 버퍼(multiple instruction buffers)를 구비한 시스템을 제공한다. 이들 인스트럭션은 이들 인스트럭션의 정의 및 다른 인스트럭션들과의 관계에 따라 순차적으로(sequentially) 혹은 병렬로(in parallel) 실행된다.
근래, 다중 실행장치를 구비한 프로세싱 시스템은 널리 알려져 있다. 대부분의 종래 시스템은 가산(add), 저장(store), 로드(load), 감산(subtract), 승산(multiply) 및 분기(branch)등과 같은 동작을 수행하는 다수의 특수 목적 실행장치(multiple special purpose execution units)를 포함하고 있다. 종래의 시스템은 인스트럭션 종속성(instruction dependencies)과 관련된 문제를 해결하기 위하여, 특정 인스트럭션을 이 인스트럭션에 대응하는 특수 목적 실행장치와 연관된 버퍼(buffer)에 입력한다. 예를 들면, 로드 동작 인스트럭션은 로드장치(load unit)와 연관된 버퍼에 입력된다. 종래의 시스템은 인스트럭션 종속성이 존재하는 경우 선행 인스트럭션 결과(outcome)에 의존하는 후속(later) 인스트럭션을 단순히 보류(hold)한다. 일단 선행 인스트럭션이 실행되면, 후속의 종속적인 인스트럭션이 특정 실행장치에서 실행된다. 종래의 시스템에서는 각종 실행장치와 연관된 각종 버퍼간에 인스트럭션 시프팅(shifting)이 발생할 수 있으나, 이 시프팅은 인스트럭션의 유형(type of instruction)과 그 유형의 인스트럭션을 실행할 수 있는 특정 실행장치간의 관계에 의존하고 있음에 유의해야 한다. 즉, 로드인스트럭션은 로드 실행장치와 연관된 버퍼로 시프팅될 수 있다. 또한, 이들 종래 기술의 다중 실행장치 시스템은 인스트럭션의 순서를 유지하는 본 발명과는 대조적으로 통상적으로 순서없이 인스트럭션을 실행한다.
미국 특허 제5,133,077호에는 각각 특정 유형의 인스트럭션을 전담하는 다수의 상이한 실행장치(multiple destinct execution units)가 개시되어 있다. 따라서, 각 인스트럭션은 그 인스트럭션의 유형에 따라 이들 실행장치중의 하나와 연관된 특정 버퍼에 저장되어야 한다. 이들 인스트럭션은 소정 유형의 실행장치에 특정(specific)되므로, 다른 실행장치와 연관된 버퍼로는 시프팅될 수 없다. 따라서, 이 시스템은 인스트럭션 종속성이 존재하는 경우, 후속의 인스트럭션이 종속하는 선행 인스트럭션의 실행 종료시까지 이러한 종속적인 후속의 인스트럭션을 보류하는 외에는 다른 방도가 없다.
미국 특허 제4,837,678호에는 인스트럭션을 수신하고 그 인스트럭션 유형에 근거하여 시프팅하는 시프팅 회로(shifting circuit)를 포함하는 인스트럭션시퀀서(instruction sequencer)를 포함하는 시스템을 개시하고 있으나, 이 시스템의 실행장치(제11열, 제8 내지 30행)는 종속성이 없는 인스트럭션을 실행하도록 요구되고 있다.
미국 특허 제4,847,755호에는 인스트럭션 스트림(instruction stream)을 분석하고 인스트럭션 스트림에 지능(intelligence)을 부가하는 다수의 프로세서 요소(processor elements)를 구비한 프로세싱 시스템이 개시되어 있다. 예를 들어, 이 시스템은 자연적 병행성(natural concrrrencies)(독립 인스트럭션)을 추구하며, 논리적 프로세서 번호 및 인스트럭션 수행 개시 시간(instruction firing time)을 포함한 지능을 각 인스트럭션에 부가하는데(제17열, 제54 내지 60행), 이 지능이 인스트럭션을 재배열(reorder)시킨다. 그후, 논리적 자원 드라이버(logical resource driver)가 선택된 프로세싱 요소에 각 인스트럭션을 전달한다(제18열, 제10 내지 25행).
미국 특허 제5,075,840호에는 순서없이 인스트럭션을 실행할 수 있는 다중 프로세서(multiple processors)를 구비한 시스템이 개시되어 있다. 이 시스템은 특정 유형의 인스트럭션의 실행을 이 인스트럭션이 적절한 순차적 순서로 실행될 수 있을 때까지 지연(delay)시킬 수 있는 능력(capability)을 가지고 있다.
종래의 어떠한 시스템도 모든 인스트럭션의 순서를 유지함과 동시에 다중 실행장치를 구비한 시스템에서 종속 인스트럭션의 실행시 발생하는 문제를 해결할 수 있는 일반적인 해결방안을 제공하지는 못함을 알 수 있다. 순서없이 인스트럭션을 실행하는 다수의 종래 시스템은 복잡한 분기 메카니즘(sophisticated branching mechanism)을 필요로 하며, 따라서, 프로세싱 시스템이 상당히 복잡해진다. 따라서, 본 발명은 인스트럭션의 순서를 유지하므로써, 예를 들어, 분기시기를 결정하는 오버헤드(overhead)를 감소시켜 성능을 최적화한다. 인스트럭션이 실행장치의 능력이 아니라 단지 다른 인스트럭션과의 종속성에 따라 분석되고 실행되어 각종 유형의 컴퓨터 시스템에서 동작할 수 있는 프로세서를 구비하는 것은 매우 바람직할 것이다.
종래 기술과는 달리, 본 발명은 디코드 단계동안 인스트럭션을 분석하고, 그 다음 이 인스트럭션이 독립적인지 혹은 종속적인지 혹은 사용불가능(unavailable)인지를 판정하는 시스템을 제공한다. 본 발명의 목적을 위하여, 종속 인스트럭션은 단지 직전의 선행 인스트럭션(immediately prior instruction)에만 의존하는 인스트럭션으로 정의된다. 예를 들어 레지스터(register)와 같은 자원내부의 값의 이용가능성에 의존하는 인스트럭션은 사용불가능으로 정의되며, 몇몇 경우에는 본 발명에서 독립적으로 다루어져 병렬로 시프팅될 수 있다(단, 순서가 유지됨). 물론, 완전히 독립적인 인스트럭션은 병렬로 실행된다.
각 실행장치가 자신과 연관된 인스트럭션 버퍼를 가지는 이중 실행장치(dual execution unit)프로세싱 시스템이 제공된다. 제1실행장치(장치 0)는 항상 가장 오래된 인스트럭션을 포함하며, 제2실행장치(장치 1)는 항상 가장 최근의 인스트럭션을 포함한다. 로드, 저장, 가산 등과 같은 프로세서 인스트럭션은 인스트럭션 캐시 버퍼로부터 각각의 인스트럭션 버퍼 0 및 인스트럭션 버퍼 1에 제공된다. 제1인스트럭션(가장 오래된 인스트럭션)은 상기 버퍼 0에 저장되고, 다음의 (제2) 인스트럭션은 상기 버퍼 1에 저장된다. 디코드 단계동안, 인스트럭션이 종속적이어서 한번에 하나씩 실행되어야 하는지, 아니면 인스트럭션이 독립적이거나 혹은 사용불가능이어서 병렬로 실행될 수 있는지를 판단한다. 제2인스트럭션이 제1인스트럭션에 종속적인 경우, (실행되는 제1인스트럭션에 후속하여)제2인스트럭션은 인스트럭션 버퍼1로부터 인스트럭션 버퍼 0으로 시프팅된다. 이러한 시프팅은 제2인스트럭션이 제1인스트럭션에 종속하기 때문에다. 시프팅된 인스트럭션은 제1인스트럭션이 되고, 새로 제2인스트럭션이 제2인스트럭션 버퍼에 수신된다. 모든 인스트럭션이 순차적인 순서로 실행된다는 것에 유의하여야 한다. 순차적 종속 인스트럭션이 상당수 있을 경우, 단지 실행장치 0에 의해서만 순서대로 실행된다. 즉, 처음의 두 인스트럭션은 종속적인 것으로 판정되어 두 인스트럭션 버퍼에 배치될 것이다. 제2버퍼내의 인스트럭션은 제1버퍼내의 인스트럭션에 의존하므로, 제1인스트럭션 실행에 후속하여 제1인스트럭션 버퍼로 시프팅된다. 다음의 후속 인스트럭션은 제2인스트럭션 버퍼 1 내에 입력되며, 이 인스트럭션 역시 종속적인 경우, 선행 인스트럭션이 실행된 후에 제1인스트럭션 버퍼 0으로 시프팅되는 방식으로 실행된다. 그러나, 후속 인스트럭션이 독립적인 경우, 두 인스트럭션은 제1 및 제2실행장치상에서 병렬로 실행된다. 이러한 방식으로, 프로세서 인스트럭션은 실행장치의 능력에 근거한 것이 아닌 다른 인스트럭션과의 종속성에 근거하여 효과적으로 순차 실행된다.
본 발명의 목적, 특징 및 장점은 도면을 참조하여 후술하는 상세한 설명 및 첨부된 특허 청구 범위에 의해 명백히 이해될 수 있을 것이다.
제1도를 참조하면, 본 발명의 다중 실행 프로세서의 각종 요소가 블럭도 형태로 도시되고 있다. 참조번호(1)은 인스트럭션 버스 A, B, C, D로부터 인스트럭션을 수신하는 인스트럭션 버퍼를 나타낸다. 인스트럭션 버퍼(1)는 본 기술분야에서 알려진 하드웨어 메모리와 같은 저장장치이다. 레지스터화일 입력래치(register file input latch)(10)는 (도시되지 않은) 시스템 메모리에 접속된(도시되지 않은) 2-포트 데이타캐시장치(dual port data cache unit)로부터 데이타를 수신한다. 비록 본 발명의 바람직한 실시예가 2개의 실행장치를 구비한 프로세서에 대해 설명하고 있으나 2개 이상의 실행장치를 가지는 프로세싱 시스템에도 동일하게 적용되도록 의도되었음을 유의하여야 한다(실행장치 0과 실행장치 1의 각각에 대응하는) 디코드제어장치(decode control unit)(3,5)는 인스트럭션 버퍼(1)로부터 수신된 인스트럭션을 해석(interpret)하는 데 사용된다. 디코드장치(3,5)는 로드, 저장, 가산 등과 같은 인스트럭션을 인식할 수 있다. 각 디코드 장치(3,5)는 대응하는 레지스터화일(7,9)을 각각 구비하는데, 이 화일은 입력래치(10)의 데이타를 데이타캐시버스(36)로부터 직접 혹은 되기록데이타선(35)(write-back data line)을 통하여 수신한다. 디코드장치(3,5)는 버퍼(1)로부터 수신된 인스트럭션을 근거로 하여 인스트럭션 판독/기록 제어 신호를 레지스터화일(7,9)에 제공한다. 이 제어 신호는 데이타가 실행장치입력래치(10)로부터 레지스터화일(7,9)에 기록되는지, 레지스터화일(7,9)로부터 실행장치입력래치(11)로 판독되는지를 결정한다. 제1도에서, 레지스터화일(10)로부터 4개의 데이타 워드(data word)가 레지스터화일(7)에 기록되고, 실행장치입력래치(11)에 의해 다시 3개의 데이타 워드가 레지스터화일(7)로부터 판독된다는 것을 알 수 있다. 또한, 4개의 데이타 워드가 레지스터화일(9)에 기록되고, 실행장치입력래치(11)에 의해 역시 4개의 데이타 워드가 레지스터화일(9)로부터 판독된다.
본 발명은 디코드제어장치(3,5)내에 포함된 부울 논리(boolean logic)에 의해 구현됨을 유의하여야 한다. 이 논리는 인스트럭션을 해석하는 프로세스를 수행하고, 하나 혹은 두개의 인스트럭션이 실행장치(17,19)로 시프팅될 수 있는지를 결정한다. 당업자라면, 제3a 내지 3b도에 도시된 본 발명의 논리흐름을 본 발명의 디코드제어장치(3,5)에서 수행되는 하드웨어 논리로 쉽게 변환할 수 있을 것이다.
또한, 당업자라면 본 발명은 파이프라인 구조(pipelined architecture)를 가진 프로세서임을 알 것이다. 따라서, 데이타가 각종 단계(stage)에서 래치(latch) 혹은 보류(hold)된다. 이러한 방식으로, 실행된 인스트럭션의 결과 혹은 그에 상응하는 것들이 저장되어, 상이한 인스트럭션들이 동시에 프로세싱 시스템에 입력될 수 있다. 따라서, 프로세서를 통한 연속적인 데이타 흐름이 가능하다. 실행장치입력래치는 데이타가 실제적인 실행장치에 입력되기전에 레지스터화일(7,9)로부터의 데이타를 보류한다. 또한, 실행장치입력래치(11)는 (도시되지 않은)멀티플렉서를 포함하여, 데이타가 실행장치로 우회(bypass)되도록 데이타 캐시버스(36)로부터 수신된 데이타 신호들을 결합한다. 또한 레지시터화일 입력래치(10)도 멀티플렉서를 포함하여 데이타캐시장치버스(36)와 되기록버스(35)로부터 수신된 데이타를 결합한다.
실행장치(17,19)는 모두 다수의 인스트럭션을 실행할 수 있는 전기능(full function)장치이다. 이 장치는 동일할 수도 있지만, 본 발명에서 이러한 제한이 요구되는 것은 아니다. 바람직한 실시예에서, 장치(17,19)는 동일하지는 않으나, 하나가 소정의 특수 인스트럭션의 특정 요구를 처리하는 데에 있어 다소 상이한 특징을 가지는 2개의 전기능 실행장치이다. 실행장치(17)는 가산 기능을 수행하는 2-포트 가산기(dual port adder)(21)와, 회전(rotate)등과 같은 인스트럭션을 실행하는데 사용되는 논리장치(23)를 포함한다. 실행장치(19)는 3-포트 가산기(25)와 논리장치(27)를 포함한다. 3-포트 가산기(25)는 로드, 저장, 비교등을 포함하는 가산 유형(add type)의 인스트럭션을 실행하는데 소요되는 사이클(cycle)의 수를 절약한다. 이는 병렬로 실행될 수 있는 인스트럭션의 판단시, 가산 유형의 인스트럭션은 모두 독립 인스트럭션으로 판단하는 본 발명의 능력때문이다. 종래기술의 시스템에서 가산 유형의 인스트럭션은 종속적으로 간주되어, 제2인스트럭션은 선행의 인스트럭션 실행이 종료될 때까지 기다려야 한다. 예를들면, 인스트럭션(1) ADD R1, R2, R3와(2) add R5, R1, R4는 전형적으로 레지스터화일 R2, R3내 값을 가산하여 레지스터화일 R1에 이 새로운 값을 저장하는 데 사용된다. 다음 인스트럭션에서는, 원하는 결과값이 레지스터화일 R5에 입력되도록 하기 위해서는 레지스터화일 R1의 값을 레지스터화일 R4의 값과 가산해야 하므로, 상기 새로운 값이 레지스터화일 R1에 입력될 때가지 기다려야 한다. 원하는 결과는 실제로 레지스터화일 R2, R3 및 R4의 값의 합산이다. 따라서, 종래의 시스템은 이 동작을 수행하기 위해서 2개의 기계 사이클(maching cycle)상에서 2개의 인스트럭션 실행을 요구한다.
이와 달리, 본 발명은 ADD 인스트럭션을 독립적으로 정의하여 병렬로 실행될 수 있도록 하는 메카니즘을 제공하므로써, 단일의 기계 사이클로도 동일한 동작을 수행할 수 있다. 전술의 예를 사용하면, 인스트럭션 ADD R1, R2, R3와 ADD R5, R1, R4가 디코드제어장치(3,5)에 의해 디코딩되면, 이들은 ADD R1, R2, R3 및 ADD R5, R1, R4를 의하는 것으로 해석된다. 즉, 종속 인스트럭션은 독립인스트럭션속에 포함되어 제2인스트럭션의 R2와 R3값이 R1값을 대신하게 된다. 레지스터화일 R1에 입력된 값은 후속하는 가산 인스트럭션(ADD R5, R1, R4)외의 다른 인스트럭션에서도 필요할 수 있으므로, 제1가산 인스트럭션 즉, ADD R1, R2, R3는 여전히 실행되어야 한다. 또한 3-포트 가산기(25)의 존재로 인하여, 이들 두개의 인스트럭션은 동시에 실행될 수 있다. 즉 ADD R1, R2, R3는 2-포트 가산기(21)에서 실행되고, ADD R5, R2, R3, R4는 3-포트 가산기(25)에서 동시에 실행된다. 이러한 방식으로, 본 발명은 가산 유형 인스트럭션을 다른 인스트럭션에 대해 독립적인 것으로 정의할 수 있다.
또한 실행제어장치(13,15)는 디코드장치(3,5)로부터 디코딩된 인스트럭션을 수신하여 제어신호 형태의 인스트럭션을 실행장치(17,19)의 각각에 입력한다. 실행장치(17,19)가 로드 및 저장 인스트럭션을 실행하는 동안, 가산기(21,25)는 저장 인스트럭션에 대한 데이타값 자체도 계산할 뿐만 아니라 조작(manipulate)되는 데이타에 대한 실효 어드레스(effective address)(즉, 캐시내에서 참조 데이타가 위치한 장소)를 계산한다. 그 다음, 이 실효 어드레스는 2-포트 데이타어드레스 변환논리장치(dual port data address translation logic unit)(33)로 전송되어, 물리적 어드레스(즉, 메모리내에서 참조된 데이타가 위치한 장소)로 변환된다. 데이타는 데이타 캐시로부터 버스(36)상에 복귀(return)되고, 화일입력래치(10)로 입력되며, (데이타 캐시 버스(36)를 경유하여) 실행입력래치(11)로 우회(bypass)될 수도 있다. 가산 인스트럭션과 같이 프로세서내에서 데이타를 조작하는 다른 유형의 인스트럭션에 있어서, 실행장치(17,19)로부터의 데이타값은(되기록 버스(35)를 경유하여) 레지스터화일입력래치(10)로 입력되며, 또한 실행 입력 래치(11)로 우회될 수도 있다.
제2도에는 제1도에 도시된 인스트럭션 버퍼(1)가 상세히 도시되어 있다. 인스트럭션 버스 A, B, C 및 D는 인스트럭션 캐시장치 등으로부터의 인스트럭션을 버스(8)에 입력하고, 버스(8)은 인스트럭션을 선입 선출(first-in first-out) 하드웨더 저장장치인 실제 인스트럭션 버퍼(14)로 직접 전송한다. 출력 인스트럭션 버퍼(2,4)는 인스트럭션을 버스(8)로부터 직접 혹은 버퍼(14)로부터 버스(12)를 경유하여 수신한다. 출력 인스트럭션 버퍼(2,4)는 실행장치(17,19)중의 하나와 각각 대응한다. 또한, 버스(6)가 제공되어 출력버퍼(2,4) 사이에 인스트럭션의 시프팅 혹은 전송이 허용된다. 본 발명의 바람직한 실시예는 2개의 전기능 프로세싱 장치를 포함하므로, 인스트럭션은 장치(17,19)의 실행 동안 출력 버퍼(2,4)간에 시프팅될 수 있다. 이러한 능력의 중요성은 제3a 및 제3b도와 관련하여 차후에 보다 상세히 기술될 것이다. 그 다음, 실행되어야 할 인스트럭션은 버퍼(2,4)로부터 디코드제어장치(3,5)로 출력된다.
제3a 및 3b도에는 본 발명에 의해 정의되는 인스트럭션들간의 관계가 도시되어 있다. 하나의 카테고리는 직전의 선행 인스트럭션을 제외한 다른 이전의 선행 인스트럭션에 의존하는 인스트럭션으로서 정의된다. 즉, LOAD 인스트럭션에 의해 메모리로부터 로드된 값은 다수의 기계 사이클이 경과한 후에 실행되는 후속 인스트럭션에 의해 이용될 수 있다. 예를 들어, 다음과 같은 인스트럭션이 주어진다고 가정해보자.
(1) LOAD R1, R31, R30
(2) ADD R4, R3, R2
(3) ADD R5, R1, R2
첫 인스트럭션(1)은 레지스터화일 R1의 값을 로드한다 메모리내 실효어드레스는 R31과 R30를 가산하여 계산된다. 계산된 어드레스에서의 데이타는 R1으로 로드된다. 그 다음, 인스트럭션(2)는 레지스터화일 R3과 R2의 내용을 가산하여 그 결과값을 레지스터화일 R4에 입력한다. 그 다음, 인스트럭션(3)은 이전에 로드된 레지스터화일 R1의 값을 사용하여, 이 값을 레지스터화일 R2의 값에 가산하고, 그 결과값을 레지스터화일 R5에 입력한다. 인스트럭션(3)은 사용불가능일 수 있는 자원 [자원 화일(R1)]의 값에 의존함을 알 수 있다. 즉, 레지스터화일 R1에 로드되어야 하는 값은 시스템 메모리로부터 제공될 수도 있는데, 이에는 다수의 기계 사이클이 소요될 수도 있다.
본 발명은 직전의 선행 인스트럭션을 제외한 이전의 선행 인스트럭션에 의존하는 인스트럭션을, 잠재적으로 사용불가능 자원(레지스터화일)에 의존한다는 의미로 사용불가능 인스트럭션으로 정의한다. 이 사용불가능 인스트럭션은 마치 이들이 독립적인 것처럼 실행장치(17,19)로 병렬 이동이 가능하다. 그러나, 차후에 보다 상세히 기술하는 바와 같이, 사용불가능 인스트럭션이 종속 인스트럭션을 선행하는 경우와, 이들 인스트럭션이 순차적으로 실행되어야만 하는 경우와 같은 다른 상황이 있다. 종속 인스트럭션과 함께 이 사용불가능 인스트럭션은 데이타 종속 인스트럭션 즉, 직전의 선행 인스트럭션에 근거하든지 혹은 또다른 이전의 선행 인스트럭션에 근거하든지 간에 소정 유형의 데이타 종속성을 가지는 인스트럭션으로 간주된다.
따라서, 본 발명에 따르면 모든 인스트럭션은 (1) 독립적, (2) 종속적, 혹은 (3) 사용불가능 중의 하나로 분류된다. 본 발명은 이들 인스트럭션의 조합이 실행장치(17,19) 상에서 동시에 실행될 수 있는지와 인스트럭션들 중의 어느 것이 순차적으로 실행되어야 하는지를 판정하는 메카니즘을 제공한다. 인스트럭션들은, 제1인스트럭션이 인스트럭션 버퍼 0(참조번호 2)에 제공되고 제2인스트럭션이 버퍼 1(참조번호 4)에 제공되는 방식으로 쌍을 이루어 인스트럭션 버퍼(2,4)에 제공된다. 이러한 방식으로, 모든 인스트럭션들은 순차적 순서로 한번에 하나씩 실행되거나 혹은 원래의 순서를 그대로 유지하면서 병렬로 실행된다. 가장 오래된 인스트럭션이 항상 인스트럭션 버퍼(2)에 입력되어 버퍼(4)의 인스트럭션에 앞서 실행되도록 함으로써 순차적 순서가 유지된다. 상술한 바와 같이, 종속 인스트럭션은, 본 발명의 목적을 위하여 독립적인 것으로 간주되는 3-포트 가산기를 이용하는 가산 인스트럭션을 제외하고, 단지 직전의 선행 인스트럭션에만 의존하는 인스트럭션으로 정의된다. 독립 인스트럭션은 이전의 인스트럭션으로부터 결과, 값, 데이타, 자원을 요구하지 않거나 이전의 인스트럭션에 의해 이용되지 않는 인스트럭션으로 정의된다. 사용불가능 인스트럭션은 앞서 정의한 바와 같이 직전의 선행 인스트럭션을 제외한 이전에 선행하는 인스트럭션에 의존하는 인스트럭션이다.
전술한 바와 같이, 제3a 및 3b도는 이중 실행장치(17,19)를 가장 효과적으로 이용하기 위하여 앞서 정의된 인스트럭션의 본 발명에 따른 실행을 설명하는 흐름도이다. 먼저, 전술한 바와 같이 정의된 통상의 인스트럭션을 사용하여 프로세스의 일반적인 설명이 제공되고, 이어서 특정예에 대하여 설명될 것이다. 또한, 후속 설명은 2개의 실행장치가 제공되는 경우에 대하여 기술할 것이나, 본 발명은 다른 수의 실행장치를 가지는 프로세싱 시스템에도 동일하게 적용할 수 있음을 이해해야 한다.
단계 1에서 프로세스가 개시되고, 단계 2에서 양쪽 실행장치(17,19)의 모두가 실행가능한지를 판단한다. 실행이 불가능한 경우, 양쪽 장치 모두가 사용 가능할때까지 시스템은 단계 3에서 보류(hold)된다. 장치가 모두 사용가능한 경우에는 단계 4에서, (제2도의 인스트럭션 버퍼(2,4)로부터의) 인스트럭션 스트림내에서 제1 및 제2인스트럭션이 모두 독립적인 인스트럭션인지 혹은 모두 종속적인 인스트럭션인지를 판정한다. 제1 및 제2인스트럭션이 모두 독립적인 경우, 두 인스트럭션은 기계(maching)(본 발명의 다중 실행 프로세서를 의미함)로 시프팅되어 장치(3,5)에 의해 디코딩되고, 실행장치(17,19)상에서 동시에 실행된다(단계 8). 제1 및 제2인스트럭션이 모두 독립적인 인스트럭션이 아닌 경우, 방법은 단계 5로 진행되어, 제1 및 제2인스트럭션이 모두 소정 사유로 인하여 보류되어야 하는지를 판단한다. 이것은 레지스터의 내용이 필요하나 아직 이용가능하지 않을 때 발생한다. 이러한 유형의 인스트럭션은 직전의 인스트럭션의 결과에 의존하는 것이 아니라 사용불가능으로 정의된 소정 인스트럭션 혹은 자원에 의존한다. 제1 및 제2인스트럭션이 모두 사용불가능인 경우에는 단계 8로 시프팅되는데, 그 이유는(인스트럭션 버퍼 혹은 디코드내에서의) 그 인스트럭션의 위치에 관계없이, 시스템은 이들 인스트럭션이 필요로 하는 사용불가능 자원이 액세스가능하게 될 때까지 기다려야하기 때문이다. 따라서, 사용불가능 인스트럭션은 실행장치(17,19)로 시프팅되어 새로운 인스트럭션이 버퍼(2,4)로 이동될 수 있도록 한다.
제1인스트럭션이 사용불가능 레지스터화일 엔트리(entry)에 의존하고, 제2인스트럭션은 독립적인 경우(단계 6), 단계 8로 진행되어 이들 인스트럭션의 모두는 실행장치로 시프팅된다. 이러한 상황에서, 본 발명은 2개의 인스트럭션이 시프팅되도록 하는데, 그 이유는 사용불가능 인스트럭션은 실행장치(17)로 이동되어 요구된 데이타를 액세스할 수 있을 때까지 대기하고, 독립적인 인스트럭션은 사용불가능 인스트럭션이 준비될 때까지 실행장치(14)에서 대기한 후 두 인스트럭션이 병렬로 실행되기 때문이다. 그러나, 제1인스트럭션이 사용불가능이 아닌 경우이거나 혹은 제2인스트럭션이 독립적이 아닌 경우, 본 발명의 인스트럭션 실행방법은 단계 7로 진행하여, 제1인스트럭션이 독립적인지와 제2인스트럭션이 사용불가능인지를 판정한다. 단계 7에서는, 단지 하나의 인스트럭션만이 시프팅되는데, 그 이유는 사용불가능 인스트럭션을 인스트럭션 버퍼(2)로 이동시킬 필요가 있으며, 사용불가능 인스트럭션의 다음 인스트럭션이 독립적이거나 혹은 사용불가능인 경우에는 다음 기계 사이클동안 2개의 인스트럭션이 시프팅될 수 있기 때문이다. 또한, 본 발명은 모든 인스트럭션들을 순차적으로 실행하기 때문에, 인스트럭션 버퍼(4)가 다음 인스트럭션의 수신을 하도록 하는 것이 유리하다. 즉, 시스템이 사용불가능 인스트럭션의 실행을 기다려야 하는 경우, 버퍼(2)에서 그 불가능 인스트럭션을 대기토록 하고 버퍼(4)에서 후속하는 인스트럭션을 수신하는 것이 가장 효율적이다. 이러한 방식으로, 후속 인스트럭션은 인스트럭션 버퍼(4)로 이동될 수 있어, 파이프라인의 버블(bubble) 현상을 피할 수 있다. 자원이 사용가능하게 된 연후에 다중 실행 프로세서가 사용불가능 인스트럭션을 버퍼(2)상으로 시프팅해야 한다면, 하나의 사이클이 낭비될 것이다. 따라서, 버퍼(4)로부터 버퍼(2)로 사용불가능 인스트럭션이 시프팅된 후에 다음 후속 인스트럭션이 버퍼(4)에 놓일 수 있으므로, 인스트럭션의 계속적인 흐름이 보장된다.
단계 7의 조건이 만족되는 경우, 본 발명의 방법은 단계 11로 진행되어 단일 인스트럭션이 디코딩 및 실행을 위하여 다중 실행 프로세서로 시프팅된다. 본 명세서에서 하나의 인스트럭션의 시프팅은 인스트럭션 버퍼내의 인스트럭션을 실행장치(17)로 시프팅하는 것과 인스트럭션 버퍼(4)의 인스트럭션을 인스트럭션 버퍼(2)로 시프팅하는 것을 의미한다. 2개의 인스트럭션의 시프팅은 동시에 버퍼(2,4)로부터 2개의 인스트럭션을 실행장치(17,19)로 시프팅한다는 의미이다. 그러나, 제1인스트럭션이 독립적이지 않으며, 제2인스트럭션이 사용불가능이 아닌 경우, 단계 9에서, 제1인스트럭션이 독립적이며 제2인스트럭션이 종속적인지를 판정한다. 그러한 경우, 프로세스는 단계 11로 진행되어 독립적인 인스트럭션은 다중 실행 프로세서로(버퍼(2)로부터 실행장치(17)로) 시프팅되어 실행되고, 종속 인스트럭션은 인스트럭션 버퍼(4)로부터 인스트럭션 버퍼(2)로 시프팅된다. 종속 인스트럭션은 현재 이미 실행된 인스트럭션에 의존하고, 따라서, 더이상 종속적으로 간주되지 않는다는 사실에 유의하여야 한다. 단계 11에 후속하여, 프로세스는 단계 2로 다시 돌아가서 순환되며, 또다른(제2인스트럭션이 버스(8) 혹은 버퍼(14)에 의해 제공되고, 이들 두 인스트럭션은 단계, 2, 4, -7, 9 및 10의 판정기준에 따라 고려된다.
단계 9에서, 제1인스트럭션이 독립적이지 않고 제2인스트럭션이 종속적이 아닌 것으로 판정된 경우, 단계 10에서 제1인스트럭션이 사용불가능인지와, 제2인스트럭션이 종속적인지가 판정된다. 그러한 경우, 본 발명의 방법은 단계 11로 진행하여, 제1인스트럭션은 다중 실행 프로세서로 제공되고 제2인스트럭션은 제1인스트럭션 출력 버퍼로 시프팅된다(시프트 1).
본 발명의 판정단계(제4 내지 10단계),가 어떻게 최대수의 인스트럭션이 병렬로 실행되면서도 또한 순차적으로 실행되도록, 각 유형의 인스트럭션을 처리하는 지를 알 수 있을 것이다.
다음, 전형적인 인스트럭션 시퀀스가 본 발명의 동작의 예로서 사용된다.
다음의 인스트럭션이 버스 A, B, C, D로부터 버퍼(1)로 수신된다고 가정하자.
(1) LOAD R1, R31, R30
(2) LOAD R2, R29, R30
(3) ADD R22, R20, R21
(4) ADD R24, R22, R23
(5) ADD R3, R1, R2
(6) LOAD R6, R2, R22
(7) LOAD R25, R28, R29
(8) ADD R8, R6, R7
(9) LOAD R9, R27, R28
(10) LOAD R10, R31, R30
(11) ADD R11, R9, R3
(12) OR R11, R11, R20
(13) ADD R13, R11, R12
첫 2개의 인스트럭션(1) 및 (2)가 버퍼(2, 4)에 입력된다. 이들 인스트럭션은 레지스터화일 R31, R30과 R29, R30의 값으로부터 각각 계산된 주소를 근거로 하여 레지스터화일 R1과 R2의 값을 로드한다. 인스트럭션(1) 및 (2)는 다른 인스트럭션에 의존하지 않으므로 독립적이며 제3a도의 단계 4에 따라, 동시에 실행장치(17, 19)로 시프팅된다(시프트 2). 그 다음 인스트럭션(3) 및 (4)가 버퍼(2, 4)에 각각 입력된다. 인스트럭션(3)은 가산 인스트럭션으로 두개의 레지스터화일 R20, R21의 값을 합산하여 그 결과를 레지스터화일 R22에 입력한다. 인스트럭션(4)는 선행의 가산 인스트럭션(3)의 결과를 사용하여 행하는 또다른 가산 동작으로서, 즉 R22의 값이 R23의 값에 가산되어, 레지스터화일 R24에 입력된다. 인스트럭션 (3) 및 (4)는 레지스터화일 R20, R21 및 R23의 값을 가산한다. 본 발명의 3-포트 가산기(25)의 존재로 인하여, 이들 인스트럭션은 독립적으로 간주되어 본 발명에서 실행장치(17, 19)로 시프팅되어 동시 실행된다(제3a도의 단계 4).
다음, 인스트럭션(5) 및 (6)이 버퍼(2, 4)로 각각 이동된다. 인스트럭션(5)는 직전의 선행 인스트럭션이 아닌 인스트럭션(1) 및 (2)에 의존하므로, 인스트럭션(5)는 사용불가능으로 간주된다. 인스트럭션(6)은 실효 어드레스가 레지스터화일 R2 및 R22의 값들에 의존하는 로드 인스트럭션이다. 이들 값은 선해의 인스트럭션(5)에 의해 영향을 받지 않는다. 그러나, R2는 인스트럭션(로드 R2)에 의존하므로, 따라서, 인스트럭션(6)도 또한 사용불가능으로 정의된다.
본 발명(제3a도의 단계 5)에 따르면, 두개의 사용불가능 인스트럭션은 실행장치(17, 19)로 시프팅되어, 사용불가능 데이타를 액세스하기 위해 대기한다. 이로 인하여, 다음 두개의 인스트럭션이 버퍼(2, 4)로 이동할 수 있다.
인스트럭션(7)은 메모리의 값을 프로세서내의 레지스터화일 R25로 로드하는 로드 인스트럭션이다. 인스트럭션(7)은 다른 인스트럭션 혹은 레지스터에 독립적이다. 인스트럭션(8)은 레지스터화일 R6, R7의 값을 가산하여 그 합을 R8에 저장하는 가산 인스트럭션이다. 이 인스트럭션(8)은 인스트럭션(6)에 의존하므로 사용불가능이다. 이 경우, 즉, 제1인스트럭션이 독립적이고 제2인스트럭션이 사용불가능한 경우(제3a도의 단계 7), 단지 버퍼(2)내의 인스트럭션(7)만이 (실행장치(17)로) 시프팅되며, 인스트럭션(8)은 버퍼(4)에서 버퍼(2)로 이동된다. 다음 인스트럭션(9)는 버퍼(4)에 입력되고 인스트럭션(8)과 (9)가 고려된다. 인스트럭션(9)은 메모리로부터의 값을 프로세서내 레지스터화일 R9에 입력하며, 독립적인 것으로 간주된다. 따라서, 사용불가능 인스트럭션(8)은 버퍼(2)에, 독립적인 인스트럭션(9)는 버퍼(4)에 존재한다. 이 경우(제3a도, 단계 6), 이전의 인스트럭션이 실행되자마자 독립적 인스트럭션(8)과 (9)는 동시에 실행장치(17, 19)로 시프팅된다.
그후, 다음의 두 인스트럭션(10) 및 (11)이 버퍼(2, 4)에 각각 제공된다.
인스트럭션(10)은 독립적인 인스트럭션으로서 메모리내의 한 장소에서의 내용이 프로세서내 레지스터화일 R10에 로드된다. 인스트럭션(11)은 (직전의 선행 인스트럭션을 제외한)이전의 인스트럭션동안 결정된 레지스터화일 R의 값에 의존하므로 사용불가능이다. 이 경우(제3a도의 단계 7), 즉 첫 인스트럭션(10)은 독립적이고 두번째 인스트럭션(11)이 사용불가능인 경우, 첫 인스트럭션(10)은 버퍼(2)로부터 실행장치(17)로 시프팅되고, 두번째 인스트럭션(11)은 버퍼(4)로부터 버퍼(2)로 시프팅된다.
인스트럭션(12)는 2개의 레지스터화일의 내용에 대해 논리적 or 동작을 수행하는 OR 인스트럭션이고, 이때 R11과 R20은 그 결과를 레지스터화일 R11에 입력한다. 인스트럭션(12)는 레지스터화일 R11의 값을 결정할 이전의 인스트럭션에 의존한다. 따라서, 버퍼(2)내에 사용불가능한 인스트럭션(11)과 버퍼(4)내에 종속 인스트럭션(12)가 있다. 이러한 경우(단계 10, 제3b도), 단일 인스트럭션(11)이 실행장치(17)로 시프팅된다. 인스트럭션(12)는 R11의 값이 필요하므로 실행장치(19)로 시프팅될 수 없다, 인스트럭션(12)는 버퍼(2)로 시프팅되어, 인스트럭션(11)에 후속하여 실행된다. 레지스터화일 R11과 R2의 내용을 합산하여, 그 합을 레지스터화일 R13에 입력하는 인스트럭션(13)은 버퍼(4)로 이동된다. 인스트럭션(12)는 이 인스트럭션이 의존하는 인스트럭션(11)이 이미 실행되었으므로, 이제 독립적인 것으로 간주된다. 인스트럭션(13)은 직전의 선행 인스트럭션(12)에 의존하므로 종속적이다. 따라서, 버퍼(2) 내에 독립 인스트럭션(12)와 버퍼(4) 내에 종속 인스트럭션(13)이 존재한다. 이 경우(제3b도의 단계9), 독립 인스트럭션(12)는 실행장치(17)로 이동되고, 종속 인스트럭션(13)은 버퍼(2)로 시프팅된다.
제4도에는 로드 및 가산 인스트럭션이 독립적일 때(타이밍도 A)와 종속적일 때 (타이밍도 B), 그 로드 및 가산 인스트럭션을 실행하는데 필요한 기계 사이클의 수를 비교한 2개의 타이밍도 A 및 B가 도시되어 있다.
타이밍도 A에 있어서는, 사이클 1에서, 로드 및 가산 인스트럭션이 인스트럭션 버퍼(2, 4)에 각각 저장된다. 이들 두 인스트럭션은 독립적이므로(제3a도의 단계 4), 사이클 2동안 실행을 위해 그들은 모두 실행장치(13, 15)로 시프팅된다. 사이클 2의 종료시점에서, 가산 인스트럭션으로부터의 데이타는 레지스터화일 입력래치(10)로 래치된다. 또한, 사이클 3동안, 로드 인스트럭션에 대한 데이타가 캐시로부터 액세스되고, 레지스터화일 입력래치(10)로 래치된다. 또한, 사이클 3동안, 가산 인스트럭션에 대한 제어신호는 레지스터화일(7, 9)로의 되기록을 발생한다. 사이클 4에서, 입력레지스터(10)에 존재하였던 캐시의 데이타는 레지스터화일(7, 9)을 지나 레지스터(11)에 기록된다.
타이밍도 B는 사이클 1에서 인스트럭션 버퍼(역시 0과 1) 위치에서의 동일한 인스트럭션을 도시하지만, 이 경우, 가산 인스트럭션은 예를 들면, LOAD R1과 ADD R1 R2, R3에서 처럼 로드 인스트럭션에 의존한다. 이러한 경우(제3b도의 단계 9), 사이클 2동안 단지 로드 인스트럭션만이 실행제어장치로 시프팅된다. 또한, 사이클 2동안 단지 로드 인스트럭션만이 실행제어장치로 시프팅된다.
또한, 사이클 2 동안, 가산 인스트럭션을 인스트럭션 버퍼(4)로부터 버퍼(2)로 시프팅되어, 프로세서(19)가 아닌 프로세서(17)에 의해 실행되도록 한다. 이 경우, 로드 및 가산 인스트럭션은 프로세서(17)상에서 순서대로 실행된다는 것에 유의하여야 한다. 물론, 버스(8) 혹은 버퍼(14)로부터이 부가적인 인스트럭션이 사이클 2 내지 5동안 인스트럭션 버퍼(4)에 제공되며, 제3a 및 3b도의 프로세스에 따라 분석될 것이다. 그러나, 간결성을 위하여, 이 부가적인 인스트럭션은 타이밍도 A 및 B에 도시되지 않았다, 사이클 3 동안, 로드 인스트럭션에 의해 캐시가 액세스되어 요청된 데이타가 입력레지스터(10)에 로드되고, 실행장치 입력래치(11)로 우회된다. 또한, 가산 인스트럭션은 실행제어장치(13)로 이동하고, 데이타가 사용불가능하므로 이곳에서 멈춘다(stall). 그 다음, 사이클 4동안 가산 인스트럭션이 실행되고, 레지스터화일(7, 9)이 로드 데이타에 의해 기록된다. 마지막으로, 가산 인스트럭션 결과는 사이클 5동안 레지스터화일(7, 9)에 되기록된다.
동일한 독립 인스트럭션은 동일한 종속 인스트럭션의 사이클 수 보다 적은 사이클 수로 실행될 수 있다. 타이밍도 A 및 B는 직렬로(serially) 실행되어야 하는 종속 인스트럭션과는 달리, 독일 인스트럭션이 어떻게 상이한 실행장치상에서 병렬로 실행될 수 있는 가를 명백히 보여준다. 타이밍도 A의 가산 인스트럭션은, 독립적이므로, 로드 인스트럭션에 앞서 실행된다. 그러나, 타이밍도 B에서, 가산 인스트럭션은 종속성으로 인하여 로드 인스트럭션후에 실행된다.
당업자라면 본 발명이 종래의 시스템보다 사이클당 더 많은 인스트럭션을 실행하므로써 프로세서 성능을 향상시킨다는 것을 알 수 있을 것이다. 예를 들면, 독립적, 사용불가능, 독립적으로 정의되는 인스트럭션(I1, U, I2)이 종래의 이중실행장치 시스템에 제공되는 경우, I1 및 U는 장치 0과 장치 1에 제공된다. 프로세싱 시스템은 I1을 실행하고, 그 다음, (n 사이클 후) 자원이 사용가능하게 될 때 U인스트럭션을 실행한다. 따라서, 종래의 시스템에서, 2개의 인스트럭션은 n은 사이클로 실행된다. 그러나, 본 발명에서는 I1실행후에 U 인스트럭션을 실행장치 0으로 이동시키고, I2를 실행장치 1로 시프팅시킨다. 그 다음, 프로세싱 시스템은 (n 사이클 후)자원이 사용가능하게 될 때 U 및 I2를 실행한다. 물론, I2는 독립적이므로 U와 병렬로 실행될 수 있다. 따라서, 본 발명은 3개의 인스트럭션이 n사이클내에 실행될 수 있다. 또 다른 장점은 전술의 예에서 사용불가능인 인스트럭션 U2가 U에 이어질 때 나타난다. 이러한 경우, 순차적인 사용불가능 인스트럭션은 종종 동일한 자원에 의존하고, (n 사이클 후)일단 사용가능하게 되면 둘다 실행이 가능하므로, U와 U2의 병렬 실행이 가능할 확률은 높다.
따라서, 종래의 시스템에서 U2는 U의 실행을 기다려야 하므로, n 사이클내에서 단지 2개의 인스트럭션만을 실행할 수 있는데 반해, 본 발명에서는 n 사이클내에서 3개의 인스트럭션을 실행한다.
비록 바람직한 실시예가 도시되고 설명되었으나, 당업자라면 첨부된 특허청구 범위의 범주를 벗어나지 않고서도 다양한 변경 및 변형이 가능하다는 것을 알 것이다.

Claims (20)

  1. 제1 및 제2실행장치(execution units)를 포함하는 컴퓨터 프로세싱 시스템(a computer processing system)에 있어서, ① 인스트럭션 캐시로부터 인스트럭션들을 특정 시퀀스로 수신하며, 상기 제1 및 제2실행장치의 각각에 대응하여 상기 제1 및 제2실행장치에 상기 인스트럭션들을 제공하기 위한 제1 및 제2인스트럭션 버퍼(instruction buffers)와, ② 상기 제1 및 제2인스트럭션 버퍼내의 상기 인스트럭션들이 독립 인스트럭션(independent instructions)인지의 여부를 해석(interpret)하는 수단과, ③ 상기 제1 및 제2인스트럭션 버퍼내의 인스트럭션들이 독립적인 것으로 판정될 때, 상기 제1인스트럭션 버퍼 및 제2인스트럭션 버퍼내의 인스트럭션들을 각각 제1 및 제2실행장치에 병렬로 제공하는 수단과, ④ 상기 제2인스트럭션 버퍼내의 인스트럭션이 상기 제1인스트럭션 버퍼내의 인스트럭션에 종속적일 때, 상기 제1인스트럭션 버퍼내의 인스트럭션들 중 하나를 상기 제1실행장치에 제공하고 상기 제2인스트럭션 버퍼로부터의 상기 인스트럭션들 중 하나를 제1인스트럭션 버퍼로 그리고 상기 인스트럭션 캐시로부터의 인스트럭션들 중 다른 하나를 상기 제2인스트럭션 버퍼로 병렬로 이동시키는 수단을 포함하며, 상기 인스트럭션들의 특정 시퀀스는 순차적으로 유지 및 실행되는 컴퓨터 프로세싱 시스템.
  2. 제1항에 있어서, 상기 종속 인스트럭션은 종속 인스트럭션(dependent instructions) 및 사용불가능 인스트럭션(unavailable instructions)을 포함하고, 다른 비 종속 인스트럭션은 독립 인스트럭션을 포함하는 컴퓨터 프로세싱 시스템.
  3. 제2항에 있어서, 3개의 상이한 저장 장소(distinct storge locations)에 저장된 값을 병렬로 가산하는 데 사용되며, 상기 해석 수단으로 하여금 3개의 값들을 가산하는 인스트럭션을 임의의 다른 인스트럭션에 무관하게 독립적으로 실행될 수 있는 독립 인스트럭션으로 정의하도록 하는 3-포트 가산기(three port adder)를 더 포함하는 컴퓨터 프로세싱 시스템.
  4. 제3항에 있어서, 상기 독립 인스트럭션을 상기 제1 및 제2인스트럭션 버퍼로부터 제작기의 제1 및 제2실행장치로 병렬로 시프팅시키는 디코드 제어 회로가 상기 해석 수단내에 포함되는 컴퓨터 프로세싱 시스템.
  5. 제4항에 있어서, 상기 디코드 제어 회로는 상기 사용불가능 인스트럭션을 상기 제1 및 제2인스트럭션 버퍼로부터 제각기의 제1 및 제2실행장치로 병렬로 시프팅시키는 컴퓨터 프로세싱 시스템.
  6. 제5항에 있어서, 상기 디코드 제어 회로는 상기 제1인스트럭션 버퍼내의 상기 종속 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키고, 상기 제2인스트럭션 버퍼내의 상기 종속 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 컴퓨터 프로세싱 시스템.
  7. 제6항에 있어서, 상기 디코드 제어 회로는 상기 제1인스트럭션 버퍼내의 상기 사용불가능 인스트럭션들 중의 하나와 상기 제2인스트럭션 버퍼내의 상기 독립 인스트럭션들중의 하나를 제각기 제1 및 제2실행장치로 병렬로 시프팅시키는 컴퓨터 프로세싱 시스템.
  8. 제7항에 있어서, 상기 디코드 제어 회로는 상기 제1인스트럭션 버퍼내의 상기 독립 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키고, 상기 제2인스트럭션 버퍼내의 상기 사용불가능 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 컴퓨터 프로세싱 시스템.
  9. 제8항에 있어서, 상기 디코드 제어 회로는 상기 제1인스트럭션 버퍼내의 상기 독립 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키고, 상기 제2인스트럭션 버퍼 내의 상기 종속 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 컴퓨터 프로세싱 시스템.
  10. 제1 및 제2실행장치를 구비한 컴퓨터 프로세싱 시스템에서 인스트럭션을 실행하는 방법에 있어서, ①; 인스트럭션 캐시로부터 인스트럭션들을 특정 시퀀스로 수신하며, 상기 제1 및 제2실행장치의 각각에 대응하여 상기 제1 및 제2실행장치에 상기 인스트럭션들을 제공하기 위한 제1 및 제2인스트럭션 버퍼(oinstruction buffers)를 제공하는 단계와, ② 상기 제1 및 제2인스트럭션 버퍼내의 상기 인스트럭션들이 독립 인스트럭션(independent instructions)인지의 여부를 디코드 제어 회로가 해석(inter-pret)하는 단계와, ③ 디코드 제어 회로에 의해 상기 제1 및 제2인스트럭션 버퍼내의 인스트럭션들이 독립적인 것으로 판정될 때, 상기 제1인스트럭션 버퍼 및 제2인스트럭션 버퍼내의 인스트럭션들을 각각 제1 및 제2실행장치에 병렬로 제공하는 단계와, ④ 디코드 제어 회로에 의해 상기 제2인스트럭션 버퍼내의 인스트럭션이 상기 제1인스트럭션 버퍼내의 인스트럭션에 종속적인 것으로 판정될 때, 상기 제1인스트럭션 버퍼내의 인스트럭션들 중 하나를 상기 제1실행장치에 제공하고 상기 제2인스트럭션 버퍼로부터의 상기 인스트럭션들 중 하나늘 제1인스트럭션 버퍼로 그리고 상기 인스트럭션 캐시로부터의 인스트럭션들 중 다른 하나를 상기 제2인스트럭션 버퍼로 병렬로 이동시키는 단계를 포함하는 인스트럭션 실행방법.
  11. 제10항에 있어서, 상기 이동 단계는 상기 제2인스트럭션 버퍼로부터 상기 제1인스트럭션 버퍼로 상기 제1인스트럭션 버퍼와 제2인스트럭션 버퍼를 상호접속시키는 버스를 통해 인스트럭션을 전달하는 단계를 포함하는 인스트럭션 실행방법.
  12. 제11항에 있어서, 상기 종속 인스트럭션은 종속 인스트럭션 및 사용불가능 인스트럭션을 포함하고, 다른 비 종속 인스트럭션은 독립 인스트럭션을 포함하는 인스트럭션 실행방법.
  13. 제12항에 있어서, 3-포트 가산기(three port adder)를 사용하여 3개의 상이한 저장 장소(distince storage locations)에 저장된 값을 병렬로 가산하며, 상기 디코드 제어회로로 하여금 3개의 값들을 가산하는 인스트럭션을 임의의 다른 인스트럭션에 무관하게 독립적으로 실행될 수 있는 독립 인스트럭션으로 정의하도록 하는 단계를 더 포함하는 인스트럭션 실행방법.
  14. 제13항에 있어서, 상기 디코드 제어 회로에 의해 상기 독립 인스트럭션을 상기 제1 및 제2인스트럭션 버퍼로부터 제각기의 제1 및 제2실행장치로 병렬로 시프팅시키는 단계와, 상기 디코드 제어 회로에 의해 상기 사용불가능 인스트럭션을 상기 제1 및 제2인스트럭션 버퍼로부터 제각기의 제1 및 제2실행장치로 병렬로 시프팅시키는 단계를 더 포함하는 인스트럭션 실행방법.
  15. 제14항에 있어서, 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼내의 상기 종속 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키는 단계와, 상기 디코드 제어 회로에 의해 상기 제2인스트럭션 버퍼내의 상기 종속 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 단계를 더 포함하는 인스트럭션 실행방법.
  16. 제15항에 있어서, 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼내의 상기 사용불가능 인스트럭션들 중의 하나와 상기 제2인스트럭션 버퍼내의 상기 독립 인스트럭션들 중의 하나를 제각기의 제1 및 제2실행장치로 시프팅시키는 단계를 더 포함하는 인스트럭션 실행방법.
  17. 제16항에 있어서, 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼내의 상기 독립 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키는 단계와, 상기 디코드 제어 회로에 의해 상기 제2인스트럭션 버퍼내의 상기 사용불가능 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 단계를 더 포함하는 인스트럭션 실행방법.
  18. 제17항에 있어서, 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼내의 상기 독립 인스트럭션들 중의 하나를 상기 제1실행장치로 시프팅시키는 단계와, 상기 디코드 제어 회로에 의해 상기 제2인스트럭션 버퍼내의 상기 종속 인스트럭션들 중의 하나를 상기 제1인스트럭션 버퍼로 이동시키는 단계를 더 포함하는 인스트럭션 실행방법.
  19. 제9항에 있어서, 상기 제2인스트럭션 버퍼내의 현재 인스트럭션이 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼로 이동되는 것에 후속하여, 상기 제2인스트럭션 버퍼에 하나의 연속적인 인스트럭션(a single successive instructuon)을 입력하기 위한 수단과, 상기 제1 및 제2인스트럭션 버퍼내의 현재 인스트럭션이 각각 상기 디코드 제어 회로에 의해 상기 제1 및 제2실행장치로 병렬로 시프팅될 때, 상기 제1 및 제2인스트럭션 버퍼에 각각 제1 및 제2의 연속적인 인스트럭션을 입력하기 위한 수단을 더 포함하는 컴퓨터 프로세싱 시스템.
  20. 제18항에 있어서, 상기 제2인스트럭션 버퍼내의 현재 인스트럭션이 상기 디코드 제어 회로에 의해 상기 제1인스트럭션 버퍼로 이동되는 것에 후속하여, 상기 제2인스트럭션 버퍼에 하나의 연속적인 인스트럭션을 입력하기 위한 단계와, 상기 제1 및 제2인스트럭션 버퍼내의 현재 인스트럭션이 각각 상기 디코드 제어 회로에 의해 상기 제1 및 제2실행장치로 병렬로 시프팅될 때, 상기 제1 및 제2인스트럭션 버퍼에 각각 제1 및 제2의 연속적인 인스트럭션을 입력하기 위한 단계를 더 포함하는 인스트럭션 실행방법.
KR1019940023113A 1993-09-20 1994-09-14 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법 KR0133238B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12382893A 1993-09-20 1993-09-20
US08/123,828 1993-09-20
US08/123.828 1993-09-20

Publications (2)

Publication Number Publication Date
KR950009453A KR950009453A (ko) 1995-04-24
KR0133238B1 true KR0133238B1 (ko) 1998-04-24

Family

ID=22411140

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940023113A KR0133238B1 (ko) 1993-09-20 1994-09-14 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법

Country Status (11)

Country Link
US (1) US5613080A (ko)
EP (1) EP0644482B1 (ko)
JP (1) JP2788605B2 (ko)
KR (1) KR0133238B1 (ko)
CN (1) CN1047677C (ko)
AT (1) ATE209794T1 (ko)
BR (1) BR9403516A (ko)
CA (1) CA2123442A1 (ko)
DE (1) DE69429226T2 (ko)
ES (1) ES2165375T3 (ko)
TW (1) TW393622B (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5717882A (en) * 1994-01-04 1998-02-10 Intel Corporation Method and apparatus for dispatching and executing a load operation to memory
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
JP3180175B2 (ja) * 1995-02-13 2001-06-25 株式会社日立製作所 命令レベルの並列処理制御方法およびプロセッサ
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
GB9514433D0 (en) * 1995-07-14 1995-09-13 Sgs Thomson Microelectronics Computer instruction execution
US5930490A (en) * 1996-01-02 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to switch instruction sets upon detection of a plurality of consecutive instructions
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5796975A (en) * 1996-05-24 1998-08-18 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order
US6049864A (en) * 1996-08-20 2000-04-11 Intel Corporation Method for scheduling a flag generating instruction and a subsequent instruction by executing the flag generating instruction in a microprocessor
KR100222039B1 (ko) * 1996-12-20 1999-10-01 윤종용 수퍼 스칼라 프로세서의 명령 종속성 검증 장치 및 방법
US5963723A (en) * 1997-03-26 1999-10-05 International Business Machines Corporation System for pairing dependent instructions having non-contiguous addresses during dispatch
US5918034A (en) * 1997-06-27 1999-06-29 Sun Microsystems, Inc. Method for decoupling pipeline stages
US5928355A (en) * 1997-06-27 1999-07-27 Sun Microsystems Incorporated Apparatus for reducing instruction issue stage stalls through use of a staging register
US6035388A (en) 1997-06-27 2000-03-07 Sandcraft, Inc. Method and apparatus for dual issue of program instructions to symmetric multifunctional execution units
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6393551B1 (en) 1999-05-26 2002-05-21 Infineon Technologies North America Corp. Reducing instruction transactions in a microprocessor
US6490653B1 (en) * 1999-06-03 2002-12-03 International Business Machines Corporation Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
KR100473390B1 (ko) * 2002-05-24 2005-03-08 창 원 석 케이블티브이용 채널분배기
US20040128476A1 (en) * 2002-12-26 2004-07-01 Robert Nuckolls Scheme to simplify instruction buffer logic supporting multiple strands
US20080168260A1 (en) * 2007-01-08 2008-07-10 Victor Zyuban Symbolic Execution of Instructions on In-Order Processors
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US9122487B2 (en) * 2009-06-23 2015-09-01 Oracle America, Inc. System and method for balancing instruction loads between multiple execution units using assignment history
US9733941B2 (en) * 2012-10-09 2017-08-15 Advanced Micro Devices, Inc. Technique for translating dependent instructions
US9372695B2 (en) * 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US10417152B2 (en) * 2016-06-03 2019-09-17 International Business Machines Corporation Operation of a multi-slice processor implementing datapath steering
JP7032647B2 (ja) * 2018-04-17 2022-03-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN112559054B (zh) * 2020-12-22 2022-02-01 上海壁仞智能科技有限公司 用于同步指令的方法和计算系统

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3771141A (en) * 1971-11-08 1973-11-06 Culler Harrison Inc Data processor with parallel operations per instruction
JPS5140043A (ja) * 1974-10-01 1976-04-03 Nippon Telegraph & Telephone Hanyonyushutsuryokuseigyosochi
JPS5263038A (en) * 1975-10-01 1977-05-25 Hitachi Ltd Data processing device
US4130885A (en) * 1976-08-19 1978-12-19 Massachusetts Institute Of Technology Packet memory system for processing many independent memory transactions concurrently
US4232366A (en) * 1978-10-25 1980-11-04 Digital Equipment Corporation Bus for a data processing system with overlapped sequences
US4376976A (en) * 1980-07-31 1983-03-15 Sperry Corporation Overlapped macro instruction control system
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
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
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4630195A (en) * 1984-05-31 1986-12-16 International Business Machines Corporation Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
US4890218A (en) * 1986-07-02 1989-12-26 Raytheon Company Variable length instruction decoding apparatus having cross coupled first and second microengines
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPH0810430B2 (ja) * 1986-11-28 1996-01-31 株式会社日立製作所 情報処理装置
US4837678A (en) * 1987-04-07 1989-06-06 Culler Glen J Instruction sequencer for parallel operation of functional units
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5099421A (en) * 1988-12-30 1992-03-24 International Business Machine Corporation Variable length pipe operations sequencing
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JP2866421B2 (ja) * 1990-01-19 1999-03-08 株式会社日立製作所 複数パス並列処理方法
US5301341A (en) * 1990-11-28 1994-04-05 International Business Machines Corporation Overflow determination for three-operand alus in a scalable compound instruction set machine which compounds two arithmetic instructions
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
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
DE69123629T2 (de) * 1990-05-04 1997-06-12 Ibm Maschinenarchitektur für skalaren Verbundbefehlssatz
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5257354A (en) * 1991-01-16 1993-10-26 International Business Machines Corporation System for monitoring and undoing execution of instructions beyond a serialization point upon occurrence of in-correct results
US5283874A (en) * 1991-10-21 1994-02-01 Intel Corporation Cross coupling mechanisms for simultaneously completing consecutive pipeline instructions even if they begin to process at the same microprocessor of the issue fee
JPH05127903A (ja) * 1991-10-31 1993-05-25 Toshiba Corp 並列処理マイクロプロセツサ
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions

Also Published As

Publication number Publication date
CN1047677C (zh) 1999-12-22
ES2165375T3 (es) 2002-03-16
ATE209794T1 (de) 2001-12-15
EP0644482B1 (en) 2001-11-28
BR9403516A (pt) 1995-06-20
CN1120195A (zh) 1996-04-10
TW393622B (en) 2000-06-11
US5613080A (en) 1997-03-18
KR950009453A (ko) 1995-04-24
DE69429226T2 (de) 2002-08-08
CA2123442A1 (en) 1995-03-21
JPH07105002A (ja) 1995-04-21
DE69429226D1 (de) 2002-01-10
JP2788605B2 (ja) 1998-08-20
EP0644482A1 (en) 1995-03-22

Similar Documents

Publication Publication Date Title
KR0133238B1 (ko) 컴퓨터 프로세싱 시스템 및 인스트럭션 실행방법
KR930004214B1 (ko) 데이타 처리 시스템
US5450560A (en) Pointer for use with a buffer and method of operation
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US4507728A (en) Data processing system for parallel processing of different instructions
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
EP0682309A2 (en) Data processing system adapted for single instruction branching on multiple condition codes from plural processing elements
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
RU2142157C1 (ru) Способ функционирования системы обработки
US5778248A (en) Fast microprocessor stage bypass logic enable
EP0305639B1 (en) Vector computer
KR100309309B1 (ko) 단일클록사이클동안슈퍼스칼라프로세서에서복수의저장인스트럭션완료를용이하게하는방법및시스템
JP2620511B2 (ja) データ・プロセッサ
US6101596A (en) Information processor for performing processing without register conflicts
US5907693A (en) Autonomously cycling data processing architecture
JPH05506323A (ja) 機能停止キャッシュを提供する装置と方法
US4969117A (en) Chaining and hazard apparatus and method
EP0797803B1 (en) Chunk chaining for a vector processor
RU2150738C1 (ru) Система обработки и способ ее функционирования
EP0292188A2 (en) Cache system
US5828861A (en) System and method for reducing the critical path in memory control unit and input/output control unit operations
JPH10283178A (ja) 命令を発行するための方法及びシステム
JPS5844569A (ja) 命令処理同期制御方式
JPH07111683B2 (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: 20011010

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee