[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR100275608B1 - 복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system) - Google Patents

복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system) Download PDF

Info

Publication number
KR100275608B1
KR100275608B1 KR1019970044600A KR19970044600A KR100275608B1 KR 100275608 B1 KR100275608 B1 KR 100275608B1 KR 1019970044600 A KR1019970044600 A KR 1019970044600A KR 19970044600 A KR19970044600 A KR 19970044600A KR 100275608 B1 KR100275608 B1 KR 100275608B1
Authority
KR
South Korea
Prior art keywords
instruction
command
forward map
input
operand
Prior art date
Application number
KR1019970044600A
Other languages
English (en)
Other versions
KR19980019198A (ko
Inventor
마사토 모토무라
Original Assignee
가네꼬 히사시
닛본 덴기 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가네꼬 히사시, 닛본 덴기 가부시끼가이샤 filed Critical 가네꼬 히사시
Publication of KR19980019198A publication Critical patent/KR19980019198A/ko
Application granted granted Critical
Publication of KR100275608B1 publication Critical patent/KR100275608B1/ko

Links

Images

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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

비교기를 사용하지 않고, 회로 구성을 간단화하여 회로 규모를 삭감하고 또한 소비 전력을 감소할 수 있는 복수 명령 병렬 발행/실행 관리 장치를 제공한다.
소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는지를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼(1210)를 구비하여, 포워드 맵 버퍼(1210)가 소정의 명령에 대한 결과치가 실제로 생성되기 전에 결과치에 대한 포워드 맵 정보를 미리 격납하여, 명령에 대한 결과치가 실제로 생성되었을 때에, 미리 격납된 결과치에 대한 포워드 맵 정보를 사용하여, 결과치를 사용하는 입력 오퍼랜드를 특정하고, 명령이 소정의 입력 오퍼랜드 특정하는 상대 입력 오퍼랜드 번호를 설정하고, 상대 입력 오퍼랜드 번호에 근거하여 상기 명령의 결과치를 사용하는 입력 오퍼랜드를 지정한다.

Description

복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system)
본 발명은 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되어, 복수의 명령의 발행 및 실행을 관리하는 복수 명령 병렬 발행/실행 관리 장치에 관한다.
[종래의 기술]
범용 프로세서 특히 마이크로 프로세서의 고성능화 기술로서, 일반적으로 슈퍼 스칼라라고 불리는 기술이 넓게 사용되고 있다. 슈퍼 스칼라 기술은 명령열을 구성하는 각각의 명령을 순차 펫치하고 디코드하여 발행하며서, 복수의 명령을 병렬에 펫치 및 디코드하여, 디코드 종료의 복수의 실행 가능한 명령을 동적으로 특정하여, 그것들의 명령 실행하는 것에 있어서, 복수의 명령 중에서 복수의 연산 처리 장치라든지 메모리 액세스 장치에 병렬로 발행하여 병렬로 실행하는 기술이다. 종래의 슈퍼 스칼라 기술에 관하여서는, 예를 들면 Mike Johnson씨 저 "Superscalar Microprocessor Design" (Prentice Hall사간)에 자세한 해설이 있다.
슈퍼 스칼라 기술을 사용한 종래의 슈퍼 스칼라 마이크로 프로세서는 복수 명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 관리 장치가 상기의 병렬 처리를 실현하는 데에 있어서 극히 중요한 역할을 지고 있다. 복수 명령 병렬 발행 관리 장치는 일반적으로 리저베이션 스테이션(Reservation Station)이라고 불리고, 복수 명령 병렬 실행 관리 장치는 일반적으로 리오더 버퍼(Reorder Buffer)라고 불린다.
복수 명령 병렬 발행 관리 장치는 디코드 종료의 복수 명령을 일시적으로 유지하여 유지된 명령중 각각의 명령이 발행 가능한지 어떤지를 판단하여, 발행 가능한 명령 내의 및 개인가의 명령을 발행하는 동작을 행한다. 발행 불가능한 명령은 복수 명령 병렬 발행 관리 장치내에 그대로 계속하여 유지되고 다음 처리 사이클에서 재자 발행 가능한지 어떤지 검사된다.
도 30은 종래 기술의 복수 명령 병렬 발행 관리 장치의 기본 구성을 나타낸 블럭도이다. 도시하는 바와 같이, 복수 명령 병렬 발행 관리 장치는 복수의 미발행 명령 엔트리(2501)와 발행 제어 장치(2502)를 구비한다. 미발행 명령 엔트리(2501)는 명령 태그 필드(25011)와 명령 코드 필드(25012)와 제 1 오퍼랜드/태그 필드(25013)와 제 2 오퍼랜드/태그 필드(25014)와 비교기(25015)와 비교기(25016)를 구비한다. 또한, 복수 명령 병렬 발행 관리 장치는 명령 태그 입력 단자(2503) 와 명령 코드 입력 단자(2504)와 제 1 오퍼랜드/태그 등록 입력 단자(2505)와 제 1 태그 비교 입력 단자(2506)와 제 2 오퍼랜드/태그 등록 입력 단자(2507)와 제 2 태그 비교 입력 단자(2508)를 입출력 단자로서 가진다. 그리고, 1개의 미발행 명령 엔트리(2501)당 1명령이 일시적으로 유지된다.
어떤 명령이 발행 가능한지 어떤지를 판단하기 위해서는 그 명령이 필요로 하는 입력 오퍼랜드가 전부 갖추어져 있는지 어떤지를 조사할 필요가 있다. 종래 기술에 의한 복수 명령 병렬 발행 관리 장치는 필요한 입력 오퍼랜드가 모두 갖추어져 있는지 어떤지의 판정을 아래와 같이, 비교기(25015) 및 비교기(25016)를 사용한 병렬 비교 동작으로 실현하고 있다. 또한, 도시의 예로서는 1명령당 2개의 입력 오퍼랜드를 사용하는 것으로 한다.
필드 미발행 명령 엔트리(2501)의 명령 태그 필드(25011)에는 해당 명령에 고유의 명령 태그가 격납되어 있다. 또한, 제 1 오퍼랜드/태그 필드(25013), 제 2 오퍼랜드/태그 필드(25014)에는 입력 오퍼랜드가 이미 존재하는 경우는 각각 그 입력 오퍼랜드가 격납되고, 아직 입력 오퍼랜드가 존재하지 않은 경우에는 그 입력 오퍼랜드를 결과치로서 생성하는 명령의 명령 태그가 격납된다.
어떤 명령의 실행이 종료하면, 그 명령의 명령 태그가 제 1 태그 비교 입력 단자(2506)와 제 2 태그 비교 입력 단자(2508)를 통해, 모든 미발행 명령 엔트리(2501)의 비교기(25015)와 비교기(25016)에 주어진다. 각각의 비교기(25015)와 비교기(25016)는 각각의 제 1 오퍼랜드/태그 필드(25013) 및 제 2 오퍼랜드/태그필드(25014)에 격납되어 있는 값(입력 오퍼랜드 또는 명령 태그)과 입력된 명령 태그를 비교하여 일치하고 있는지 어떤지를 검사한다. 또한, 입력 오퍼랜드와 명령 태그가 일치하지 않도록 한다.
비교된 값이 일지한 경우는 그 실행을 종료한 명령의 결과치가 제 1 오퍼랜드/태그 필드 등록 입력 단자(2505)와 제 2 오퍼랜드/태그 필드 등록 입력 단자(2507)를 통해 주어지기 때문에 해당 결과치를 대응하는 제 1 오퍼랜드/태그 필드(25013) 또는 제 2 오퍼랜드/태그 필드(25014)에 등록한다. 발행 제어 장치(2502)는 비교기(25015) 및 비교기(25016)의 비교 결과를 받아, 각각 명령의 입력 오퍼랜드가 갖추어졌는지 어떤지를 판단한다.
상기와 같이, 종래 기술의 슈퍼 스칼라 마이크로 프로세서의 복수 명령 병렬발행 장치는 비교기(25015) 및 비교기(25016)를 사용한 병렬 비교 동작으로 명령의 발행 가능성을 판단한다. 또한, 도 30에서는 비교기(250l5) 및 비교기(25016)를 각 미발행 명령 엔트리(2501)당 각각 1개씩 설치하고 있지만, 실제는 동시에 병렬 실행되는 명령의 수만큼 각각 필요하다.
이것에 대하여, 복수 명령 벙렬 실행 관리 장치는 명령의 펫치/디코드 순서와는 다른 순서로 실행된 경우에 있어서의 해당 명령 사이의 순시성을 보증하기 위해서, 실행 종료로 또한 아직 실행이 확정하고 있지 않은 명령의 결과치(이하, 미확정 결과치라고 부른다)를 일시적으로 유지하여, 미발행 명령에 대하여 이것들의 미확정 결과치를 입력 오퍼랜드로서 주는 동작을 한다.
도 31은 종래 기술의 복수 명령 병렬 실행 관리 장치의 기본 구성을 나타낸 블럭도이다. 도 31에 있어서, 복수 명령 병렬 실행 관리 장치는 복수의 실행 후 명령 엔트리(2601)와 실행 제어 장치(2602)를 구비한다. 실행 후 명령 엔트리(2601)는 결과치 필드(26011)와 명령 태그 필드(26012)와 레지스터 번호 필드(26013)와 비교기(26014)와 비교기(26015)와 비교기(26016)를 구비한다. 또한, 복수 명령 병렬 실행 관리 장치는 결과치 입력 단자(2603)와 명령 태그 등록 입력 단자(2604) 명령 태그 비교 입력 단자(2605), 레지스터 번호 등록 입력 단자(2606)와 레지스터 번호 비교 제 1 입력 단자(26071)와 레지스터 번호 비교 제 2 입력 단자(26072)와 제 1 오퍼랜드/태그 출력 단자(26081)와 제 2 오퍼랜드/태그 출력 단자(26082)와 결과치 출력 단자(26091)와 레지스터 번호 출력 단자(26092)를 입출력 단자로서 가진다. 그리고, 1개의 실행 후 명령 엔트리(2601)당 1개의 실행을 종료한 명령의 미확정 결과지가 일시적으로 유지된다.
어떤 명령이 입력 오퍼랜드를 레지스터 파일 장치에 대하여 요구한 경우, 복수 명령 병렬 실행 관리 장치는 그 입력 오퍼랜드가 아직 레지스터 파일 장치에 기록되지 않고서 미확정 결과치로서 복수 명령 병렬 실행 관리 장치내에 일시적으로 유지되어 있는지 어떤지를 조사하여 필요에 따라서 그 미확정 결과치를 그 명령의 입력 오퍼랜드로서 부여한다. 종래 기술의 복수 명령 병렬 실행 관리 장치는 이것을 아래와 같이 비교기(26015)와 비교기(26016)를 사용한 병렬 비교 동작으로 실현하고 있다.
실행 후 엔트리(2601)의 결과치 필드(26011)에는 미확정 상태의 결과치가 격납되고, 명령 태그 필드(26012)에는 명령 태그가 격납되고, 레지스터 번호 필드(26013)에는 기록하는 레지스터 번호가 각각 격납되어 있다. 어떤 명령이 2개의 입력 오퍼랜드를 요구하면, 요구된 2개의 입력 오퍼랜드를 독해하는 레지스터 번호가 레지스터 번호 비교 제 1 입력 단자(26071)와 레지스터 번호 비교 제 2 입력 단자(26072)를 통해, 모든 비교기(26O157, 26O16)에 각각 입력된다. 비교기(26015)와 비교기(26016)와는 이것들의 입력된 레지스터 번호와 각각의 레지스터 번호 필드(26013)에 격납되어 있는 레지스터 번호를 비교한다.
실행 제어 장치(2602)는 비교의 결과 레지스터 번호의 일치가 검출된지 어떤지를 검사한다. 1개의 입력 오퍼랜드에 대하여 복수의 일치가 있는 경우는, 가장 시간적으로 새로운 명령을 격납한 실행 후 명령 엔트리(2601)가 일치한다고 판정한다. 그리고, 각각의 입력 오퍼랜드에 대하여 일치한다고 판정된 실행 후 명령 엔트리(2601)로부터 결과치와 명령 태그를 판독, 각각을 제 1 오퍼랜드/태그 출력 단자(26081), 제 2 오퍼랜드/태그 출력 단자(26082)로부터 출력한다.
비교기(26014)는 어떤 명령이 실행을 종료한 때에, 그 미확정 결과치를 어떤 실행 후 명령 엔트리(2601)에 격납하는지를 결정할 때에 사용된다. 이 결정은 실행 종료한 명령의 명령 태그와 미리 명령 태그 필드(26012)에 격납된 명령 태그를 비교기(26014)에서 병렬로 비교하고 일치하는 실행 후 명령 엔트리(2601)를 찾아내는 것으로 행하여진다. 또한, 어떤 명령의 실행이 추정하면, 그 명령의 결과치와 레지스터 번호가 복수 명령 병렬 실행 관리 장치에서 결과치 출력 단자(26091)와 레지스터 번호 출력 단자(26092)를 통해 출력되어 레지스터 파일에 주어진다.
상기와 같이, 종래 기술의 슈퍼 스칼라 마이크로 프로세서의 복수 명령 병렬실행 장치는 비교기(26015) 및 비교기(26016)를 사용한 병렬 비교 동작으로 어떤 미확정 결과치를 입력 오퍼랜드로서 미발행 명령에 주고받는지를 판단한다. 또한, 도 31에서는 비교기(26014), 비교기(26015), 및 비교기(26016)를 각 실행 후 명령엔트리(2601)당 1개씩 설치하고 있지만, 실제는 비교기(26014)는 동시에 실행 종료되는 명령의 수만큼 필요하며, 비교기(26015)와 비교기(26016)는 동시에 병렬 디코드되는 명령의 수만큼 필요하다.
상술한 바와 같이, 종래 기술에 의한 슈퍼 스칼라 기술을 사용한 마이크로프로세서는 복수의 명령을 병렬로 디코드하여 병렬로 발행하고 병렬로 실행하기 위해서, 복수 명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 장치의 양쪽에 있어서, 대량의 비교기를 사용할 필요가 있다.
예를 들면 3명령을 병렬로 발행하여, 3명령을 병렬로 실행 종료하는 종래 기술의 슈퍼 스칼라 기술을 사용한 마이크로 프로세서를 생각한다. 상기 정도 수의 비교기를 가지는 마이크로 프로세서는 설계가 상당히 복잡하다고 하는 문제는 있지만, 실제로 제조되어 사용되고 있다. 상기의 경우, 복수 명령 병렬 발행 관리 장치의 미발행 명령 엔트리(2501) 수는 예를 들면 8개정도, 복수 명령 병렬 실행 관리 장치의 실행 후 명령 엔트리(2601) 수는 예를 들면 16개정도 필요하게 된다. 상기의 경우 비교기의 수는 복수 명령 병렬 발행 관리 장치내에서, 48(=2×8×3)개 필요하고, 복수 명령 병렬 실행 관리 장치내에서, 144(=3×16×3)개 필요하다.
또한, 종래 기술의 슈퍼 스칼라 기술을 사용하여, 상기의 마이크로 프로세서의 3배의 9명령을 병렬로 발행하여, 9명령을 병렬로 실행 종료하는 마이크로 프로세서를 생각한다. 상기의 경우, 병렬로 발행하여 실행하는 명령의 수에 비례하여, 복수 명령 병렬 발행 관리 장치의 미발행 명령 엔트리(2501) 수와 복수 명령 병렬실행 관리-장치의 실행 후 명령 엔트리(2601)의 수를 늘릴 필요가 있다. 그리하여, 미발행 명령 엔트리(2501) 수는 예를 들면 24개정도 필요하게 되어, 실행 후 명령 엔트리(2601) 수는 예를 들면 48개정도 필요하게 된다. 상기의 경우 비교기의 수는 복수 명령 병렬 발행 관리 장치내에서 432(=2×24×9)개 필요하며, 복수 명령 병렬 실행 관리 장치내에서 1296(3×48×9)개 필요하다.
이와 같이, 복수 명령 병렬 발행 관리 장치 및 복수 명령 병렬 실행 관리 장치내의 비교기 수는 병렬로 발행하여 실행하고 실행 종료하는 명령의 수(이들은 같은 값 또는 거의 같은 값으로 취하여진다)의 거의 2승에 비례하여, 급속히 증가하는 성질이 있다.
상술한 바와 같이, 종래의 슈퍼 스칼라 기술을 사용한 마이크로 프로세서는 복수의 명령을 병렬로 디코드하여 병렬로 발행하고 병렬로 실행하기 위해서 복수명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 장치의 양쪽에 있어서, 대량의 비교기를 사용할 필요가 있었다. 따라서, 이들 대량의 비교기와 그 제어 회로 때문에, 종래 기술의 슈퍼 스칼라 기술을 사용한 마이크로 프로세서의 복수 명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 장치는 극히 복잡한 구성을 가지고 있고, 또한 회로 규모도 극히 크다고 하는 문제가 있었다.
또한, 동시 병렬로 대량의 비교 동작이 행하여지기 때문에, 대량의 전력을 소비한다고 하는 문제가 있었다.
또한, 복수 명령 병렬 발행 관리 장치 및 복수 명령 병렬 실행 관리 장치내의 비교기의 수는 병렬로 발행하여 실행하고, 실행 종료하는 명령의 수의 거의 2승에 비례하여, 급속히 증가하는 성질이 있기 때문에, 처리의 병렬강도를 향상시키려고 하면, 비교기 수의 증가에 따라서, 그 제어 회로라든지 배선의 복잡 정도도 급속히 증대하여, 그 지연 시간도 증대한다. 따라서, 이것들의 문제는 슈퍼 스칼라 기술을 사용한 마이크로 프로세서의 아키텍처를 고도화하여, 처리의 병렬 정도를 향상하고자 할 때의 심각한 장해로 되어 있었다.
처리의 병렬 정도를 높이는 것은 슈퍼 스칼라 기술에 의한 마이크로 프로세서의 처리 성능 향상에서 가장 중요한 팩터이지만, 상기한 바와 같은 문제점에 의해, 예를 들면 10명령 정도 이상을 병렬로 실행하는 프로세서를 제조하는 것은 곤란하였다.
본 발명의 목적은 비교기를 사용하지 않고서 복수 명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 장치를 구성함에 의해, 이것들의 장치의 구성을 간단화하여 회로 규모를 삭감하고 또한 소비 전력을 감소하는 것에 있다.
또한, 본 발명의 다른 목적은 장기의 목적에 첨가하여, 10명령 정도 이상 복수 명령을 동시에 디코드하여 발행하고 실행할 수 있는 복수 명령 병렬 발행/실행관리 장치를 제공하는 것에 있다.
[과제를 해결하기 위한 수단]
상기의 목적을 달성하는 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되어, 소정의 명령 실행 종료에 외해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는지를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼를 구비하여, 상기 포워드 맵 버퍼가 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에 해당 결과치에 대한 상기 포워드 맵 정보를 미리 격납하여, 상기 명령에 대한 결과치가 실제로 생성되었을 때에, 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여, 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하여, 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령어 복수의 입력 오퍼랜드중 소정의 입력 오퍼랜드를 특정하는 상대 입력 오퍼랜드 번호를 설정하여 해당 상대 입력 오퍼랜드 번호에 근거하여 상기 명령의 결과치를 사용하는 입력 오퍼랜드를 지정하는 것을 특징으로 한다.
청구항 제 2 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 소정의 상기 명령에 대한 상기 포워드 맵 정보를 결정할 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령의 다음 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령에 후속하는 다른 명령에 대한 입력 오퍼랜드의 상대 입력 오퍼랜드 번호를 정하는 것을 특징으로 한다.
청구항 제 3 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정할 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령보다도 전방에 위치하는 다른 명령을 기점으로서 해당 기점이 되는 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령의 부근에 위치하는 다른 명령에 대한 입력 오퍼랜드의 상대 입력 오퍼랜드 번호를 정하는 것을 특징으로 한다.
청구항 제 4 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되어, 소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는지를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼를 구비하여, 상기 포워드 맵 버퍼가 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에, 해당 결과치에 대한 상기 포워드 맵 정보를 미리 격납하여, 상기 명령에 대한 결과치가 실제로 생성되었을 때에 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여, 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하여, 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령이 복수의 입력 오퍼랜드중 소정의 입력 오퍼랜드를 특정하는 상대 명령 번호 및 입력 오퍼랜드 지정 정보를 설정하여 해당 상대 명령 번호 및 입력 오퍼랜드 지정 정보에 근거하여 상기 명령의 결과치를 사용하는 입력 오퍼랜드를 지정하는 것을 특징으로 한다.
청구항 제 5 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정할 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령의 다음 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령에 후속하는 다른 명령의 상기 상대 명령 번호를 정하는 것을 특징으로 한다.
청구항 제 6 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정할 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령보다도 전방에 위치하는 다른 명령을 기점으로서, 해당 기점이 되는 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령의 부근에 위치하는 다른 명령의 상기 상대 명령 번호를 정하는 것을 특징으로 한다.
청구항 제 7 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령이 연산 명령 또는 메모리 액세스 명령으로서 연산의 종류를 지정하는 명령 코드와 결과치를 기록하는 레지스터 및 입력 오퍼랜드를 독해하는 레지스터의 지정을 하는 필드와 상기 포워드 맵 정보를 지정하는 필드를 구비하여, 결과치를 기록하는 레지스터 및 입력 오퍼랜드를 독해하는 레지스터의 지정이 필요하지 않는 경우에, 이들을 지정하는 상기 필드에 상기 포워드 맵 정보를 격납함에 의해, 고정 길어의 명령 포맷으로 할지 또는 이들을 지정하는 상기 필드를 삭제함에 의해 가변 길이의 명령 포맷으로 하는 것을 특징으로 한다.
청구항 제 8 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령으로서 상기 연산 명령 또는 상기 메모리 액세스 명령의 명령 포맷을 상기 명령 코드와 상기 포워드 맵 정보를 지정하는 필드로 구성하여, 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령으로서 레지스터 액세스 명령의 명령 포맷을 상기 명령 코드와 상기 포워드 맵 정보와 기록 또는 독해를 행하는 상기 레지스터를 지정하는 필드로 구성하는 것을 특징으로 한다.
청구항 제 9 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 복수의 명령을 동적 또한 병렬로 발행하여 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되어, 소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는지를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼를 구비하여, 상기 포워드 맵 버퍼가 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에 해당 결과치에 대한 상기포워드 맵 정보를 미리 격납하여 상기 명령에 대한 결과치가 실제로 생성되었을 때에 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여, 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하고, 소정 개수 T개의 결과치와 소정 개수 S개의 입럭 오퍼랜드에 관한 상기 포워드 맵 정보를, 1비트의 포워드 피트 정보를 T행 S 열의 2차원 행렬 형상으로 나열한 T×S비트의 정보로서 구성하고, 상기 T행 S열의 포워드 맵 정보중 t행 s열째의 포워드 비트 정보에 특정한 값을 설정함에 의해, 상기 T개의 결과치중 t번째의 결과치를 상기 S개의 입력 오퍼랜드중 s번째의 입력 오퍼랜드로서 사용하는지 어떤지를 설정하여, 임의의 명령에 대하여 해당 명령을 디코드하였을 때에, 해당 명령의 포워드 맵 정보에 대하여 시프트 처리와 0확장 처리를 첨가하여, 그 결과 얻어지는 S비트의 포워드 맵 정보를 상기 포워드 맵 버퍼의 1행분의 포워드 맵 정보로서 상기 포워드 맵 버퍼에 격납하는 것을 특징으로한다.
청구항 제 10 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 디코드 종료의 명령과 해당 복수의 디코드 종료의 상기 명령이 사용하는 입력 오퍼랜드를 등록하는 명령 등록 엔트리를 T개 가지는 명령 등록 버퍼를 또한 구비하는 것을 특징으로 한다.
청구항 제 11 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 임의의 명령에 대하여7 해당 명령의 결과치가 생성되어 해당 결과치가 p번째인 장소에 상기 포워드 맵 버퍼로부터 p행째 상기 포워드 맵 정보를 판독하여, Q개의 상기 포워드 비트 정보 각각의 값에 근거하여, 해당 결과치를 사용하는 입력 오퍼랜드를 특정하여 상기 명령의 결과치가 생성된 때에 상기 포워드 맵 버퍼에 격납된 상기 포워드 맵 정보를 판독하는 것에 의해, 상기 명령의 결과치를 입력 오퍼랜드로서 사용하는 명령을 부정하여, 상기 특정된 명령이 상기 명령 등록 버퍼내의 상기 명령 등록 엔트리에 등록되어 있는 경우에, 상기 결과치를 상기 명령 등록 엔트리에 입력 오퍼랜드로서 등록하는 것을 특징으로 한다.
청구항 제 12 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 상기 포워드 맵 버퍼를 구성하는 S개 열의 각각에 대하여, 상기 명령 등록 버퍼내에 등록 가능한 S개의 입력 오퍼랜드를 1 대 1에 대응시켜, 상기 포워드 맵 버퍼로부터 S비트의 상기 포워드 맵 정보가 판독된 때에, 각각의 포워드 비트로 설정된 값에 의해, 상기 명령 등록 버퍼내에 등록된 모든 입력 오퍼랜드에 대하여, 결과치를 입력 오퍼랜드로서 등록할지 아닌지를 판정하여, 등록한다고 판정된 복수의 입력 오퍼랜드에 대하여, 결과치를 상기 명령 등록 버퍼내의 복수의 입력 오퍼랜드에 대응하는 상기 명령 등록 엔트리에 동시 병렬적으로 일팔해서 기록하는 것을 특징으로 한다.
청구항 제 13 항의 본 발명의 복수 명령 병렬 발행/실행 관리 장치는 상기 명령 등록 버퍼내의 상기 명령 등록 엔트리에 결과치를 기록하는 것에 의해, 소정 명령의 결과치를 다른 명령의 입력 오퍼랜드로서 주는 것을 특징으로 한다.
제1도는 본 발명의 한 실시예에 의한 프로세서의 구성을 나타내는 블럭도.
제2a도 및 제2b도는 본 실시예에서 사용하는 포워드 맵 정보를 나타내는 설명도.
제3a도 내지 제3c도는 본 실시예에서 사용하는 명령의 포맷을 나타내는 설명도.
제4a도 및 제4b도는 본 실시예에서 사용하는 한쪽 방향형의 상대 입력 오퍼랜드 번호와 상대 명령 번호의 관계를 나타내는 설명도.
제5a도 및 제5b도는 본 실시예에서 사용하는 양쪽 방향형의 상대 입력 오퍼랜드 번호와 상대 명령 번호의 관계를 나타내는 설명도.
제6도는 본 실시예에 의한 복수-명령 병렬 발행/실행 관리 장치의 구성을 나타내는 블럭도.
제7도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치 내부 구성에 대하여 간단화하여 나타낸 설명도.
제8도는 본 실시예에서 사용하는 발행 플래그부에 격납되는 값을 나타내는 약호의 일람과 그것들 약호의 의미를 나타내는 설명도.
제9도는 본 실시예에서 사용하는 실행 플래그부에 격납되는 값을 나타내는 약호의 일람과 그것들 약호의 의미를 나타내는 설명도.
제10도는 본 실시예에 의한 프로세서에 있어서의 파이프라인 동작 타이밍의 실시예를 나타내는 설명도.
제11도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작에 있어서의 파이프라인 동작 타이밍을 나타내는 설명도.
제12a도 내지 제12c도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, 레지스터상 데이터 의존 관계가 있는 2개의 명령에 관하는 파이프라인 동작 타이밍의 3개의 경우를 나타내는 설명도.
제13도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치에서 사용하는 명령 코드열의 예를 나타내는 설명도.
제14도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치에서 사용하는 레지스터 파일 장치내의 각 레지스터의 값을 나타내는 설명도.
제15도는 제13도의 명령 코드열에 있어서의 파이프라인 동작 타이밍을 나타내는 설명도.
제16도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=1인 경우의 동작을 나타내는 설명도.
제17도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=2인 경우의 동작을 나타내는 설명도.
제18도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=3인 경우의 동작을 나타내는 설명도.
제19도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=4인 경우의 동작을 나타내는 설명도.
제20도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=5인 경우의 동작을 나타내는 설명도.
제21도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=6인 경우의 동작을 나타내는 설명도.
제22도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=7인 경우의 동작을 나타내는 설명도.
제23도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=8인 경우의 동작을 나타내는 설명도.
제24도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 동작을 나타내는 설명도이고, t=9인 경우의 동작을 나타내는 설명도.
제25도는 복수 명령 병렬 발행/실행 관리 장치에서의 포워드 맵 버퍼의 실시예를 나타내는 블럭도.
제26도는 본 실시예에 의한 복수 명령 벙렬 발행/실행 관리 장치에서의 포워드 맵 프리펫치 버퍼의 실시예를 나타내는 블럭도.
제27도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치에서의 바이패스 맵 버퍼의 실시예를 나타내는 블럭도.
제28도는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치에서의 명령등록 버퍼내의 명령 등록 엔트리의 구성을 나타내는 블럭도.
제29도는 본 발명의 다른 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치의 구성을 나타내는 블럭도.
제30도는 종래 기술에 의한 슈퍼 스칼라 프로세서에 있어서의 복수 명령 병렬 발행 관리 장치의 구성예를 나타내는 블럭도.
제31도는 종래 기술에 의한 슈퍼 스칼라 프로세서에 있어서의 복수 명령 병렬 실행 관리 장치의 구성예를 나타내는 블럭도.
* 도면의 주요 부분에 대한 부호의 설명
10 : 프로세서 12 : 복수 명령 병렬 발행/실행 관리 장치
1200 : 명령등록버퍼 1210 : 포워드맵버퍼
1220 : 바이패스 맵 버퍼 1230 : 결과치 등록 버퍼
1240 : 명령 발행 버퍼 1250 : 명령 발행 제어 장치
1260 : 명령 실행 제어 장치 1270 : 오퍼랜드 포워딩 제어 장치
1280 : 시프터 121 : 디코드정보입력단자
123 : 레지스터 파일 기록 단자
124 : 레지스터 파일 판독 데이터 단자
125-1, 125-2, 125-3 : 명령 발행 단자
126 : 결과지 입력 단자 1201 : 명령 등록 엔트리 지정 입력 단자
1206 : 명령 코드 등록 단자 1207 : 명령 출력 단자
1208 : 오퍼랜드 포워드 입력 단자
1209 : 레지스터 오퍼랜드 입력 단자
1211 : 포워드 맵 등록/출력 제어 단자
1212 : 포워드 맵 출력/발행 플래그 입력 단자
1213 : 포워드 맵 등록 단자 1221 : 바이패스 맵 등록/출력제어 단자
1222 : 바이패스 맵 출력 단자
1223 : 바이패스 맵 등록 단자
1234 : 기록레지스터 지정 단자
1236 : 결과치 등록 단자 1237 : 결과치 출력 단자
1238 : 결과치 가출력 단자 1239 : 결과치 등록 엔트리 지정 입력 단자
1241 : 바이패스 맵 입력 단자
1246 : 명령 발행 단자
1247 : 명령 입력 단자 1248 : 오퍼랜드 바이패스 입력 단자
1251 : 포워드 맵 입력/발행 플래그 출력 단자
1252 : 명령 등록 엔트리 지정 출력 단자
1253 : 제어 정보 입출력 단자
1254 : 바이패스 맵 출력 단자
1256 : 명령 등록 제어 단자 1262 : 결과치 등록 엔트리 지정 출력 단자
1263 : 제어 정보 입출력 단자 1264 : 명령 실행 제어 단자
1265 : 결과치 등록 엔트리 지정 단자
1272 : 포워드 맵 등록/출력 지시 단자
1273 : 제어 정보 입출력 단자 1274 : 포워드 맵 등록 제어 단자
1276 : 시프트폭지정출력단자 1281 : 포워드맵정보입력단자
1282 : 포워드맵정보출력단자 1283 : 시프트폭지정입력단자
이하, 본 발명의 실시예에 대하여 도면을 참조하여 싱세히 설명한다.
도 1은 본 발명의 한 실시예에 의한 프로세서의 구성을 나타낸 블럭도이다.
또한, 이하의 설명으로서는 복수 명령 병렬 발행 관리 장치와 복수 명령 병렬 실행 장치를 1개의 장치로서 취급, 이것을 복수 명령 병렬 발행/실행 관리 장지라고 부른다.
도시하는 바와 같이, 본 실시예의 프로세서(10)는 명령 펫치/디코드 장치(11)와 명령 캐시 메모리(18)와 복수명령 병렬 발행/실행 관리-장치(12)와 레지스터 파일 장치(13)와 메모리 액세스 장치(14)와 연산 장치(15)와 데이터 캐시 메모리(16)와 결과 버스(17)를 구비한다.
메모리 액세스 장치(14) 및 연산 장치(15)는 각각 임의 개수를 설치하는 것이 가능하다. 또한, 복수의 연산 장치(15)는 각각의 내부 구성을 바꾸는 것에 따라, 각각의 연산 장치(15)가 다른 연산을 실행하는 구성을 취하고 것도 가능하다. 본 실시예로서는 메모리 액세스 장치(14)를 1개, 같은 구성의 연산 장치(15)를 2개 사용하여, 동시에 최대 3개의 명령을 병렬 실행 가능한 구성을 취하고 있다.
실시예에 있어서, 명령 캐시 메모리(11), 데이터 캐시 메모리(17)등은 반드시 필요 한것이 아니고, 직접 프로세서(10) 외부의 메모리 장치에 액세스하는 구성도 가능하다. 레지스터 파일 장치(13)는 내부에 복수의 레지스터(135)를 가지는 장치이다. 본 실시예로서는 레지스터(135)를 8개 가진다.
복수 명령 병렬 발행/실행 관리 장치(12)는 디코드 정보 입력 단자(121)와 레지스터 파일 기록 단자(123)와 레지스터 파일 판독 데이터 단자(124)와 3개의 명령 발행 단자(125-1, 125-2 및 125-3)와 결과치 입력 단자(126)를 입출력 단자로 하고 있다.
도 1에 나타내는 본 실시예의 프로세서(10)에 있어서, 명령 캐시 메모리(18)는 명령 어드레스 순서대로 나열된 명령열을 격납하고 있다. 프로세서(10)는 분기 명령에 의해 분기하는 때 이외는 상기 명령열을 그 명령 어드레스 순서대로 처리한다. 분기 명령에 의해 분기하는 때는 그 분기 명령의 지정하는 분기전 명령 어드레스로부터 시작되는 명령열을 마찬가지로 명령 어드레스 순서대로 처리한다. 또한, 이하에서는 이러한 미리 정해진 명령열의 처리 순서를 프로그램 순서라고 부른
다.
명령 펫치/디코드 장치(11)는 명령 캐시 메모리(18)로부터, 명령 어드레스 순서대로 열거한 복수의 명령을 동시에 펫치한다. 명령 펫치/디코드 장치(11)는 이것들의 복수의 명령을 디코드하여, 연산의 종류라든지 기록/판독을 행하는 레지스터(135)를 특정한다. 간단함을 위하여 본 실시예에 있어서는, 1개의 명령은 레지스터 파일 장치(13)내의 최대 1개의 레지스터(135)에 결과치의 기록을 행하고, 마찬가지로 1개의 명령은 레지스터 파일 장치(13)내의 최대 2개의 레지스터(135)로 부터 각각 입력 오퍼랜드의 판독을 행하는 것으로 한다. 또한, 본 실시예에서는 명령 펫치/디코드 장치(11)가 최대 3개의 명령을 병렬로 디코드 가능한 것으로 한다.
명령 팻치/디코드 장치(11)는 동시에 디코드한 3개의 명령에 관하여, 디코드된 명령 코드(명령 코드 정보라고 부른다), 기록을 행하는 레지스터(135)의 정보(레지스터 71록 정보라고 부른다) 및 포워드 맵 정보를 디코드 정보 입력 단자(121)를 통해 복수 명령 병렬 발행/실행 관리 장치(12)로 전송한다. 명령 펫치/디코드 장치(11)로부터 복수 명령 병렬 발행/실행 관리 장치(12)에 이송되어, 복수명령 병렬 발행/실행 장치(12)내에서 유지되는 각 명령에 관계하는 정보를 아울러 명령 동작 정보라고 부른다. 명령 펫치/디코드 장치(11)는 레지스터 기록 정보 및 레지스터 판독 정보(판독을 하는 레지스터에 관한 정보를 가리킨다)를 레지스터 파일 장치(13)에도 전송한다. 포워드 맵 정보에 관하여서는 후술한다.
복수 명령 병렬 발행/실행 관리 장치(12)는 명령 펫치/디코드 장치(11)로부터 디코드 정보 입력 단자(121)를 통해 전송된 복수의 명령에 관한 명령 동작 정보를 일시적으로 격납한다. 여기에서, 복수 명령 병렬 발행/실행 관리 장치(12)에 격납되어 있고, 아직 메모리 액세스 장치(14) 또는 연산 장치(15)에 발행되어 있지 않은 명령을 미발행 명령이라고 부른다. 복수 명령 병렬 발행/실행 관리 장치(12)는 미발행 명령중에서 이미 필요한 입력 오퍼랜드가 전부 갖추어져 있어 발행하는 것이 가능한 것을 복수개 선택하여, 선택된 복수의 발행 가능한 명령을 명령 발행 단자(125)로부터 메모리 액세스 장치(14) 및 연산 장치(15)에 동시에 발행하는 기능을 가진다. 본 실시예로서는 최대 3명령을 동시에 발행 가능하다.
여기에서, 메모리 액세스 장치(14)는 로드/스토아 명령 또는 메모리상의 변수를 입력치/출력치로 하는 임의의 명령 실행에 있어서 사용되는장치이고, 데이터 캐시 메모리(16)에 액세스를 한다. 연산 장치(15)는 산술 논리 연산 명령이라든 명령 등을 처리한다. 메모리 액세스 장치(14) 연산 장치(15)는 각각의 명령의 처리 결과인 결과치를 결과 버스(17)에 출력한다.
복수 명령 병렬 발행/실행 관리 장치(12)는 미발행 명령에 관한 명령 동작 정보를 유지할 뿐만 아니라, 발행 종료로 실행중의 명령(이하에서는 실행중 명령이 라고 부른다)과 실행 종료로 결과치가 아직 미확정인 명령(이하에서는 미확정 명령이라고 부른다)에 관한 명령 동작 정보도 내부에 유지한다. 즉, 명령 디코드 후 결과치가 확정할 때까지의 모든 명령에 관한 정보를 내부에 유지하고 있다.
복수 명령 병렬 발행/실행 관리 장치(12)는 결과 버스(17)를 통해 이송되는 최대 3개의 실행 종료 명령의 결과치를 결과치 입력 단자(126)를 통해 받아들이고 내부에서 이들 결과치가 확정할 때까지 일시적으로 유지한다. 결과치가 확정하면 이들 결과치를 레지스터 파일 기록 단자(123)를 통해 레지스터 파일 장치(13)로 기록한다. 미확정 상태의 결과치를 이하로서는 미확정 결과치라고 부른다. 미확정 결과치는 레지스터 파일 장치(13)에 기록되지 않고, 복수 명령 병렬 발행/실행 관리 장치(12)내에서 유지된다.
프로세서(10)에 있어서, 명령의 발행 및 실행은 입력 오퍼랜드가 전부 갖추어진 단계에서 행하여진다. 이 때문에, 명령 사이의 프로그램 순서와는 다른 순서로 명령의 발행 및 실행이 행하여지는 경우가 있다. 프로그램 순서와는 다른 순서로 명령의 실행이 종료한 경우, 그 명령의 실행과 그 결과치는 아직 미확정이다.
즉, 어떤 명령이 확정하는 또는 어떤 명령의 결과치가 확정한다고 하는 것은 그 명령의 실행이 종료하여 또한 그 명령보다도 프로그램 순서에서는 전에 실행되어야 하는 명령의 실행이 전부 종료하고, 연장, 예외, 분기 예측 실패등의 이유에 의해, 그 명령의 실행과 결과치가 취소되지 않게 된 것을 의미한다.
복수 명령 병렬 발행/실행 관리 장치(12)는 어떤 명령이 입력 오퍼랜드로서 레지스터 파일 장치(13)내의 레지스터(135)를 지정하고 있는 경우, 그 레지스터(l35)로부터 독해된 데이터를 레지스터 파일 판독 데이터 단자(124)를 통해 받는다. 또한, 임의의 명령에 대하여, 후술의 포워드 맵 정보에 따라서, 그 명령의 결과치를 필요로 하는 복수의 미발행 명령을 특정하여, 그것들의 복수의 미발행 명령에 결과치를 포워드하는 동작을 한다. 복수 명령 병렬 발행/실행 관리 장치(12)는 레지스터 파일 장치(13)로부터의 판독이라든지 미확정 결과지의 포워드에 의해, 각각의 명령의 입력 오퍼랜드가 모두 갖추어지는지 어떤지를 검사하여, 그것들이 갖추어진 명령을 발행 가능이라고 판단한다.
본 실시예에서는 각각의 명령중에 그 명령의 결과치를 사용하는 입력 오퍼랜드를 미리 지정해 둔다. 상기의 입력 오퍼랜드의 지정은 결과차를 생성하는 각 명령의 내부에 포워드 맵 정보를 가지는 것으로 실현된다. 도 1의 복수 명령 병렬 발행/실행 관리 장치(12)는 상기 포워드 맵 정보에 근거하여 복수 명령의 병렬 발행/실행의 관리를 행한다.
도 2(A) 및 2(B)는 포워드 맵 정보의 2개의 실시예를 나타내는 설명도이다. 포워드 맵 정보란, 어떤 명령의 결과치를 어떤 후속 명령이 입력 오퍼랜드로서 사용하는가를 나타내는 정보이다. 도 2(A)에 나타내는 포워드 맵 정보의 실시예를 입력 오퍼랜드 지정형이라고 부르고, 도 2(B)에 나타내는 포워드 맵 정보의 실시예를 명령 지정형이라고 부른다.
도 2(A)에 나타내는 입력 오퍼랜드 지정형의 포워드 맵 정보는, 1비트의 정보를 D개 열거하여 구성된다. D는 임의의 양의 정수이고, 상기 값은 최대로 몇 개까지의 입력 오퍼랜드에 대한 포워드 맵 정보를 지정하는지를 나타낸다. 도시의 예에서는 D=10으로 하고 있다. 상기 예에서는 포워드 맵 정보의 비트를 우측에서 제어, d번째의 비트가 값 「1」인 경우에, 포워드 맵 정보를 지정하고 있는 해당 명령으로부터 봐서 상대 입력 오퍼랜드 번호가 d의 입력 오퍼랜드가 해당 명령의 결과치를 사용하는 것을 나타낸다. 반대로, 포워드 맵 정보의 비트를 우측에서 제어, d번째의 비트가 값 「0」인 경우는, 포워드 맵 정보를 지정하고 있는 해당 명령으로부터 봐서 상대 입력 오퍼랜드 반호가 d의 입력 오퍼랜드가-해당 명령의 결과치를 사용하지 않는 것을 나타낸다. 상대 입력 오퍼랜드 번호에 관하여는 후술한다.
입력 오퍼랜드 지정형의 포워드 맵 정보를 도 2(A)에 준하여 구체적으로 설명한다. 도2(A)에 의하면, 상대 입력 오퍼랜드 번호가 3,5,7의입력오퍼랜드에 대응하는 위치의 비트가 각각 값 「1」 이 되어 있고, 그것 이외의 비트는 값 「0」 으로 되어있다. 따라서 상기 포워드 맵 정보는 상기 포워드 맵 정보를 포함하는 명령의 결과치를 상대 입력 오퍼랜드 번호가 3,5,7의 입력 오퍼랜드가 사용하여, 그것 이외의 상대 입력 오퍼랜드 번호를 가지는 입력 오퍼랜드는 사용하지 않는 것을 나타내고 있다.
도 2(B)에 나타나는 명령 지정형의 포워드 맵 정보는, 1비트의 정보를 p*D개 나열하여 구성된다. D는 임의의 양의 정수이고, 상기 값은 최대로 몇 개까지의 명령에 대하여 포워드 맵 정보를 지정하는지를 나타내고 있다. 또한, p는 임의의 양의 정수이고, 상기 값은 임의의 명령이 취하는 최대의 입력 오퍼랜드수이다. 도시의 예에서는, D=10, p=2로 하고 있다. 상기 예에서는 포워드 맵 정보의 비트를 우측에서 제어, p*d+q번째의 비트가 값 「1」 인 경우에, 포워드 맵 정보를 지정하고 있는 해당 명령으로부터 봐서 상대 명령 번호가 p의 명령의 q번째의 입력 오퍼랜드가 해당 명령의 결과치를 사용하는 것을 나타낸다. 반대로, 포워드 맵 정보의 비트를 우측에서 제어, p*d+q번째의 비트가 값 「0」 인 경우는, 포워드 맵 정보를 지정하고 있는 해당 명령으로부터 봐서 상대 명령 번호가 p의 명령의 q번째의 입력 오퍼랜드가 해당 명령의 결과치를 사용하지 않는 것을 나타내는 상대 명령 번호에 관하여는 후술한다.
명령 지정형의 포워드 맵 정보의 실시예를 도 2(B)에 준하여 구체적으로 설명한다. 도2(B)에 의하면, 각명령에 대한 2비트의 포워드맵 겅보를세로선「|」으로 구획지어 나타나고 있다. 동 도면에서는, 1개의 명령에 대응하는 상기 2비트를 간단히 하기 위해, L과 R의 문자 라벨을 사용하여 구별하고 있다. 이것은, 각 명령당 입력 오퍼랜드가 최대 2개이기 때문에, 각각을 좌측의 입력 오퍼랜드, 우측의 입력 오퍼랜드라고 부르는 것에 대응하고 있다. 도시의 예에서는 상대 명령 번호가 5, 7, 9의 명령의 문자 라벨이 각각 R, L, R의 입력 오퍼랜드에 대응하는 위치의 비트가 각각의 값 「1」로 되고 있고, 그것 이외의 비트는 값 「0」으로 되어 있다. 따라서, 상기 포워드 맵 정보는 이 포워드 맵 정보를 포함하는 명령의 결과치를 상대 명령 번호가 5, 7, 9의 명령의, 각각 우측, 좌측 우측의 입력 오퍼랜드가 사용하여, 그것 이외의 명령의 그것 이외의 입력 오퍼랜드는 사용하지 않는 것을 나타내고 있다.
상기와 같이, 본 실시예로써 자용하는 포워드 맵 정보는 헤당 명령의 결과치를 사용하는 입력 오퍼랜드를 복수개 지정하는 것이 가능하다.
도 3(A) 내지 3(C)은 본 실시예에 의한 명령 포맷을 설명한 설명도이다. 동 도면에서는 연산 명령과 메모리 액새스 명령에 대하여, 포워드 맵 정보를 포함한 명령 포맷에 관하여, 3개의 실시예를 나타내고 있다.
도 3(A)의 명령 포맷은 연산 명령, 메모리 액세스 명령에 대하여, 종래 기술의 명령 포맷에 존재하고 있었다. 명령 코드, 결과치 레지스터, 왼쪽 오퍼랜드 레지스터, 오른쪽 오퍼랜드 레지스터를 지정하는 각각의 필드에 첨가하여, 포워드 맵 정보를 지정하는 필드를 가지고 있다. 명령 코드 필드는 실행하는 명령의 종류를 지시하여, 결과치 레지스터는 결과치를 기록 레지스터의 레지스터 번호(이하 결과치 레지스터라고 부른다)를 지시하여, 왼쪽(오른쪽) 오퍼랜드 레지스터 필드는 왼쪽(오른쪽)측의 입력 오퍼랜드를 독해하는 레지스터의 레지스터 번호(이하 왼쪽(오른쪽) 오퍼랜드 레지스터라고 부른다)를 지시한다.
포워드 맵 필드는 상술의 포워드 맵 정보, 즉 해당 명령의 결과치를 후속 명령의 어떤 입력 오퍼랜드가 사용하는 지를 나타내는 정보를 격납한다. 포워드 맵 정보는 예를 들면, 증래 기술의 명령포맷을 사용한 명령열에 있어, 어떤 명령이 사용하는 결과치 레지스터를 어떤 후속 명령의 어떤 왼쪽 입력 오퍼랜드 또는 오른쪽 입력 오퍼랜드가 사용하고 있는지를 조사하는 것에 의해, 간단하게 얻을 수 있다.
후술과 같이, 본 실시예에 의한 복수 명령 병렬 발행/실행 방법은 포워드 맵 정보를 사용하여, 직접인 명령의 결과치를 다른 명령의 입력 오퍼랜드에 부여한다.
그 때문, 포워드 맵 정보의 지정을 한 것에 의해, 결과치 레지스터라든지 왼쪽 오퍼랜드 레지스터, 오른쪽 오퍼랜드 레지스터등의 지정이 필요 없게 되는 경우가 많이 존재한다. 도시의 명령 포맷으로서는 그와 같은 경우에는 대응하는 각 필드를 블랭크로 한다.
도 3(B)의 명령 포맷은 도 3(A)의 명령 포맷과 비교하여, 포워드 맵 정보 확장 플래그용의 필드를 가지고 있는 점이 다르다. 포워드 맵 정보 확장 플래그는 상술한 바와 같이, 결과치 레지스터라든지 왼쪽 오퍼랜드 레지스터등의 지정이 불필요한 경우에, 블랭크가 된 각각의 필드에 포워드 맵 정보를 격납하여, 이것들의 필드를 유효 활용하기 위해서 사용된다. 즉, 포워드 맵 정보 확장 플래그는 결과치 레지스터, 왼쪽 오퍼랜드 레지스터, 오른쪽 오퍼랜드 레지스터에 대한 각 필드가 각각 결과치 레지스터, 왼쪽 오퍼랜드 레지스터, 오른쪽 오퍼랜드 레지스터를 지정하고 있는지, 혹은 포워드 맵 정보를 격납하고 있는지를 나타내고 있다. 또한, 도면에는 나타나고 있지 않지만, 다른 실시예로서, 결과치 레지스터라든지 왼쪽 오퍼랜드 레지스터, 오른쪽 오퍼랜드 레지스터의 지정이 불필요한 경우에, 이것들의 필드를 삭제하는 것으로 가변 길이의 명령 포맷을 실현하는 방법도 있다.
도 3(C)의 명령 포맷은 연산 명령, 메모리 액세스 명령이 명령 코드와 포워드 맵 정보를 지정하는 2개의 필드애서 구성되어 있다. 즉, 상기 명령 포맷의 실시예에서는 연산 명령, 메모리 액세스 명령은 결과치 레지스터와 왼쪽 오퍼랜드 레지스터 오른쪽 오퍼랜드 레지스터의 지정을 하지 않는다. 이것들의 명령은 그 입력 오퍼랜드를 전부 다른 명령의 결과치를 포워드 맵 정보에 의한 지정을 통해 받고, 실행의 결과로서 생성되는 결과치를 전부 그 명령의 포워드 맵 정보에 의한 지정을 통해 다른 명령의 입력 오퍼랜드로 보낸다. 상기 명령 포맷의 실시예에서는 별도의 명령의 타입으로서 레지스터 액세스 명령을 설치한다. 상기 타입의 명령은 명령 코드, 레지스터, 포워드 맵 정보를 지정하는 3개의 필드로 구성되어 있고, 레지스터의 기록 혹은 레지스터로부터의 판독을 한다. 레지스터로부터 독해한 경우는 그 값을 사용하는 다른 명령의 입력 오퍼랜드를 포워드 맵 정보로 지정한다. 상기 명령 포맷의 실시예에서는 모든 레지스터 액세스는 레지스터 액세스 명령을 통해 행하여진다.
이상의 설명에서는 조건 분기, 무조건 분기 명령에 관하여는 서술하지 않았지만, 이것들의 명령은 결과치를 생성하지 않기 때문에 각각의 연산 명령에 대한 명령 포맷에 있어서, 포워드 맵 정보와 결과치 레지스터를 격납하는 필드로 분기전 명령 어드레스를 격납하면 좋다.
도 4(A) 및 4(B), 도 5(A) 및 5(B)는 본 실시예에서 사용하는 상대 입력 오퍼랜드 번호와 상대 명령 번호의 관계를 나타내는 도면이다. 상대 입력 오퍼랜드 번호와 상대 명령 번호의 각각 관하여 한쪽 방향형(도 4(A) 및 4(B))과 양쪽 방형(도 5(A) 및 5(B))의 2개의 예를 나타낸다.
여기에서, 한쪽 방향형이란, 명령 어드레스 순서대로 해당 명령의 다음 명령 또는 그 입력 오퍼랜드로부터 순서대로 번호를 매기는 방법을 취한 것을 가리킨다. 양쪽 방향형이란, 해당 명령보다도 명령 어드레스 순서대로, 앞에 위치하는 또는 그 입력 오퍼랜드로부터 순서대로 번호를 매기는 방법을 취하는 것을 가리킨다. 도 4(A) 및 4(B), 5에 있어서 사각 표시로 나타나고 있는 것은 명령, 동그라미 표시로 나타나고 있는 것은 각각의 명령의 입력 오퍼랜드이다. 동그라미 표시 속에 나타난 숫자는 각각의 입력 오퍼랜드를 지정하게 되는 포워드 맵 정보내의 비트 위치를 나타내고 있다. 상대 입력 오퍼랜드 번호를 사용하는 경우는 어떤 입력 오퍼랜드에 대한 포워드 맵 정보내의 비트 위치와 상대 입력 오퍼랜드 번호와는 일치한다.
도 4(A)에 나타나는 한쪽 방향형의 상대 입력 오퍼랜드 번호는 명령 어드레스에 따르는, 해당 명령의 다음 명령외 우측의 입력 오퍼랜드, 좌측의 입력 오퍼랜드, 그 다음 명령의 우측의 입력 오퍼랜드, 좌측의 입력 오퍼랜드의 순서대로 매겨 지고 있다. 상술한 바와 같이, 상대 입력 오퍼랜드를 사용하는 경우, 각 입력 오퍼랜드에 대한 포워드 맵 정보내에서의 비트 위치는 그대로 상대 인력 오퍼랜드 번호에 대응한다.
도 4(B)에 나타나는 한쪽 방향형의 상대 명령 번호는 명령 어드레스에 따라서, 해당 명령의 다음 명령, 그 다음 명령의 순서대로 매겨지고 있다. 상대 명령 번호는 사각 표시 속에 나타내고 있다. 상대 명령 번호를 사용한 경우에 있어서의 각 입력 오퍼랜드에 대한 포워드 맵 정보내에서의 비트 위치는 예를 들면 도 4(B)에 나타난 바와 같이 계산된다. 이와 같이, 상대 명령 번호를 사용한 포워드 맵 정보의 지정으로서는 입력 오퍼랜드의 수가 임의의 명령이 취하는 최대의 입력 오퍼랜드의 수보다, 작은 경우에 포워드 맵 정보내에 사용되지 않는 비트 위치가 생긴다. 도시의 예에서는 3번째 및 5번째의 비트 위치는 어떤 입력 오퍼랜드에도 대응하지 않는다.
도 5(A)에 나타나는 양쪽 방향형의 상대 입력 오퍼랜드 번호는 명령 어드레스 순서로서는 해당 명령보다도 전에 존재하는 명령을 기점으로서, 명령 어드레스에 따라서, 기점이 되는 명령의 우측의 입력 오퍼랜드, 좌측의 입력 오퍼랜드, 그 다음 명령의 우측의 입력 오퍼랜드, 좌측의 입력 오퍼랜드의 순서대로 매겨지고 있다. 상술한 바와 같이, 상대 입력 오퍼랜드를 사용하는 경우, 각 입력 오퍼랜드에 대한 포워드 맵 정보내에서의 비트 위치는 그대로 상대 입력 오퍼랜드 번호에 대응한다.
도 5(B)에 나타내는 양쪽 방향형의 상대 명령 번호는 명령 어드레스 순서로서는 해당 명령보다도 전에 존재하는 명령을 기점으로서 명령 어드레스에 따라서, 기점이 되는 명령, 다음 명령, 그 다음 명령의 순서대로 매겨지고 있다. 상대 명령 번호는 사각 표시의 속에 나타나고 있다. 상대 명령 번호를 사용한 경우에 있어서의 각 입력 오퍼랜드에 대한 포워드 맵 정보내에서의 비트의 위치는 예를 들면 도 5 (B)에 나타나는 바와 같이 계산된다. 이와 같이, 양쪽 방향형에 있어서도, 상대 명령 번호를 사용한 포워드 맵 정보의 지정으로서는 입력 오퍼랜드의 수가 임의의 명령이 취하는 최대의 입력 오퍼랜드의 수보다, 작은 경우에, 포워드 맵 정보 내에 사용되지 않은 비트 위치가 생긴다.
상기와 같이, 상대 입력 오퍼랜드 번호를 사용한 경우, 포워드 맵 정보내의 전 비트가 각각 입력 오퍼랜드에 대응한다. 한편, 상대 명령 번호를 사용한 경우, 포워드 맵 정보내에는 입력 오퍼랜드에 대응하지 않은 비트가 존재하는 경우가 있다. 정보 밀도의 점에서는 상대 입력 오퍼랜드 번호를 사용하는 쪽이 효율이 좋지만, 명령과, 입력 오퍼랜드 번호와의 대응 관계가 알기 쉽다고 하는 점에서는 상대 명령 번호를 사용하는 쪽의 경우가 좋다. 이하 실시예의 설명에서는 모두 상대 명령 번호를 사용한 경우에 대하여 설명한다.
또한, 한쪽 방향형의 상대 명령 번호 또는 상대 입력 오퍼랜드 번호를 사용한 포워드 맵 정보로서는 명령 어드레스 순서로, 후속하는 명령의 입력 오퍼랜드에 대한 포워드 맵 정보밖에 가지는 것은 할 수 없다. 이것에 대하여, 양쪽 방향형의 상대 명령 번호 또는 상대 입력 오퍼랜드 번호를 사용한 포워드 맵 정보로서는 전방 및 후속의 어느 쪽의 명령에 대한 포워드 맵 정보를 가질 수 있다. 이것은, 전방에의 분기 명령에 의해, 명령 어드레스 순서와 프로그램 순서가 다른 경우에 프로그램 순서를 따른 포워드 맵 정보를 가질 수 있다고 하는 점에서 유익하다. 어느 쪽의 형식을 사용할지는 명령마다 독자적으로 설정하는 것도 가능하다. 또한, 이하 실시예의 설명에서는 전부 한방 방향형의 포워드 맵 정보에 대하여 설명한다.
본 실시예에 의한 프로세서의 복수 명령 병령 발행/실행 관리 방법은 도 2(A) 및 2(B) 내지 도 5(A) 및 5(B)에 있어서 설명한 바와 같이, 포워드 맵 정보를 포함한 명령 포맷을 사용하여, 도 1의 복수 명령 병렬 발행/실행 관리 장치(12)에 의해 실현된다. 도 1의 프로세서(10)를 구성하는 다른 장치는 종래 기술의 슈퍼스칼라 기술에 의한 프로세서의 것과 거의 같다. 따라서, 이하에서는 주로 복수 명령 병렬 발행/실행 관리 장치(12)에 대하여 설명을 한다.
도 6은 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)의 구성을 나타낸 블럭도이다. 도 6의 참조하면, 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)는 명령 등록 버퍼(1200)와 포워드 맵 버퍼(1210)와 바이패스 맵 버퍼(1220)와 결과치 등록 버퍼(1230)와 명령 발행 버퍼(1240)와 명령 발행 제어 장치(1250)와 명령 실행 제어 장치(1260)와 오퍼랜드 포워딩 제어 장치(1270)와 시프터(1280)를 구비한다.
도 7은 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)의 동작을 설명하기 위한 설명도이고, 명령 등록 버퍼(1200), 포워드 맵 버퍼(1210), 바이패스 맵 버퍼(1220), 결과치 등록 버퍼(1230), 명령 발행 버퍼(1240), 명령 발행 제어 장치(1250)의 내부 구성에 대하여 간단화하여 나타내고 있다. 상기 도면에서는 동작의 설명을 알기 쉽게 하는 목적으로 블럭내외의 접속 관계에 관하여는 생략하고 있다. 이하 도 6 및 도 7을 인용하면서 복수 명령 병렬 발행/실행 관리 장치(12)의 구성과 동작을 설명한다.
명령 등록 버퍼(1200)는 미발행 명령, 실행중 명령 및 미확정 명령에 대하여, 명령 코드 정보와 2개의 입력 오퍼랜드를 유지하는 버퍼이다. 도 7에 나타나는 바와 같이, 명령 등록 엔트리(1205)를 N열 나열한 구성을 하고 있다. 여기에서, N은 복수 명령 병렬 발행/실행 관리 장치(12)내에 명령 동작-정보를 유지 가능한 미발행 명령, 실행중 명령 및 미확정 명령의 수의 총합을 나타내고 있다. 도 7의 예에서는 N이 10명령인 경우의 예를 나타내고 있다. 명령 등록 버퍼(1200)에서는 명령의 프로그램 순서에 따라서 디코드된 순서대로, 각각의 명령에 관한 명령 동작 정보가 명령 등록 엔트리(1205)에 등록된다. 도 7에서 일렬분의 명령 등록 엔트리(1205)에 첨가된 숫자는 작은 쪽이 프로그램 순서로 보다 전의 명령인 것을 나타내고 있다. 다만, 10열째의 명령 등록 엔트리(1205)까지 명령 동작 정보가 등록된 매는 순회적으로 다음 명령 동작 정보는 1열째로부터 등록된다. 또한, 이하에 x번째의 명령이라는 경우는, x열째의 명령 등록 엔트리(1205)에 격납된 명령을 의미한다. 명령 등록 버퍼(1200)에 새롭게 명령 동작 정보의 등록이 가능한 명령 등록 엔트리(1205)가 엾는 경우에는 명령 펫치/디코드 장치(11)는 명령 동작 정보의 전송을 정지한다.
1개의 명령 등록 엔트리(1205)는 명령 코드부(1202), 왼쪽 오퍼랜드부(1203) 및 오른쪽 오퍼랜드부(1204)로 구성되어 있다. 명령 코드부(1202)는 명령 코드 정보를 격납하여, 왼쪽 오퍼랜드부(1203), 오른쪽 오퍼랜드부(1204)는 1개의 명령당 최대 2개의 좌우의 입력 오퍼랜드를 격납한다. 1개의 입럭 오퍼랜드밖에 사용하지 않는 명령인 경우는 왼쪽 오퍼랜드부(1203)를 사용하는 것으로 한다.
명령 등록 버퍼(1200)는 입출력단자로서, 명령 등록 엔트리 지정 입력 단자(1201)와 명령 코드 등록 단자(1206)와 명령 출력 단자(1207)와 오퍼랜드 포워드 입력 단자(1208)와 레지스터 오퍼랜드 입력 단자(1209)를 가진다. 명령 등록 엔트리 지정 입력 단자(1201)는 N개의 명령 등록 엔트리(1205)예 대응하여, N개 존재한다.
포워드 맵 버퍼(1210)는 상술한 명령중에 지정된 포워드 맵 정보를 격납하는 장치이고, 포워드 비트부(1215)를 N×N의 2차원 사각행열 헝상으로 나열한 구성으로 하고 있다. 여기에서, N은 상기의 복수 명령 병렬 발행/실행 장치(12)의 최대 유지 명령수의 것이고, 도 7의 예에 있어서는, 상술한 바와 같이 N=10이다. 도 7에 도시한 바와 같이, 1행분의 포워드 비트부(1215)를 포워드원엔트리(1216)라고 부른다.
포워드원엔트리(1216)는 각 명령중의 포워드 맵 정보를 격납하는 부분이다. 1개의 포워드 비트부(1215)는 1개의 결과치인 명령의 입력 오퍼랜드 사이의 의존 관계를 나타내는 2비트의 포워드 맵 정보를 격납한다. 프워드원엔트리(1216)내의 포워드 비트부(1215)의 수, 즉 N은 명령내의 포워드 맵 정보로 지정 가능한 최대 후속 명령수, 즉 상술한 D보다도 큰 수가 아니면 안된다.
y행째의 포워드원엔트리(1216)는 복수 명령 병렬 발행/실행 관리 장치(12)내에 유지된 y번째의 명령의 포워드 맵-정보를 유지하고 있다. 따라서, 예를 들면, x열 y행째의 위치의 2비트 정보가 "ab" 라고 한다. 여기에서, a, b는 각각 1비트 정보이다. a가 값 「1」이면, y번째의 명령의 결과치를 x번째의 명령의 왼쪽 오퍼랜드로서 사용하는 것을 의미하며, 값 「0」이면 사용하지 않는 것을 의미한다. 또한, b가 값 「1」이면, y번째 명령의 결과치를 x번째 명령의 오른쪽 오퍼랜드로서 사용하는 것을 의미하며, 값「0」이면 사용하지 않는 것을 의미한다. 예를들면, 도 7에 도시한 바와 같이, x=7, y=5 위치의 플래그가 "11"인 경우는, 5번째 명령의 결과치를 7번째 명령의 왼쪽 오퍼랜드와 오른쪽 오퍼랜드의 양쪽 방향으로 사용하는 것을 나타내고 있다.
후에 설명하는 바와 같이, 포워드 맵 버퍼(1210)에 격납된 포워드 맵 정보는 미확정 결과치를 미발행 명령의 입력 오퍼랜드로 전송하는 기능을 실현하기 위해서 사용하고 있다. 상기 기능을 오퍼랜드 포워드라고 부른다. 여기에서, 오퍼랜드 포워드란, 구체적으로는 미발행 명령을 격납한 명령 등록 엔트리(1205)의 왼쪽 오퍼랜드부(1203) 또는 오른쪽 오퍼랜드부(1204)에 원하는 미확정 결과치를 기록하는 동작을 가리킨다.
포워드 맵 버퍼(1210)는 입출력 단자로서 포워드 맵 등록/ 출력 제어 단자(1211)와 포워드 맵 출력/발행 플래그 입력 단자(1212)와 포워드 맵 등록 단자(1213)를 가진다. 포워드 맵 등록/출력 제어 단자(1211), 포워드 맵 출력/발행 플래그 입력 단자 (1212) 및 포워드 맵 등록 단자(1213)는 N행, N열의 포워드 비트부(1215)에 대응하여 각각 N개씩 존재한다.
바이패스 맵 버퍼(1220)는 바이패스 비트부(1225)를 N행, N열 나열한 구성을 하고 있다. 여기에서, J는 동시에 실행을 종료하는 명령의 수이고, K는 동시에 발행 가능한 명령의 수이다. 도 7의 예에서는 J=3, K=3으로 하고 있다. 이것은, 도 1에 나타내는 프로세서(10)의 구성에 합친 것이다. 각각의 바이패스 비트부(1225)는 미확정 결과치를 명령 발행 버퍼(1240)중의 명령 발행 엔트리(1245)의 좌우 입력 오퍼랜드에 바이패스하는지 어떤지를 나타내는 2비트의 바이패스 맵 정보를 격납하고 있다. 1행분의 바이패스 비트부(1225)를 바이패스전엔트리(1226)라고 부른다.
바이패스 맵 버퍼(1220) 각각의 바이패스전엔트리(1226)는 각각의 메모리 액세스 장치(14) 또는 연산 장지(15)로부터 생성되는 결과치에 대응하고 있다. 예를 들면, 도 7의 실시예에서는, 각각 1행째의 바이패스전엔트리(1226)는 도 1의 메모리 액세스 장치(14)의 결과치에 대응하여, 2행째의 바이패스전엔트리(1226)는 도 1의 한 가운데의 연산 장치(15)의 결과지에 대응하여, 3행째의 바이패스전엔트리(1226)는 도 1의 우측의 연산 장치(15)의 결과치에 대응한다. 바이패스 맵 버퍼(1220) 각각의 열은 명령 발행 버퍼(1240)중 같은 열의 명령 발행 엔트리(1245)에 대응하고 있다. 따라서7 도 7에 도시한 바와 같이, 2행째, 3열째의 바이패스 비트부(1225)가 "10"인 경우는 한 가운데의 연산 장치(15)의 결과치를 명령 발행 버퍼(1240) 3열째의 명령 발행 엔트리(1245) 명령의 왼쪽 오퍼랜드부(1243)에 바이패스 하는 것을 나타내고 있다. 오퍼랜드 바이패스 동작에 관하여서는 후술한다.
바이패스 맵 버퍼(1220)는 입출력 단자로서 바이패스 맵 등록/출력 제어 단자(1221)와 바이패스 맵 출력 단자(1222)와 바이패스 맵 등록 단자(1223)를 가지고 있다. 바이패스 맵 출력 단자(1222)는 K개 존재하며, 바이패스 맵 등록 단자는 J개 존재한다.
결과치 등록 버퍼(1230)는 복수 명령 병렬 발행/실행 관리 장치(12)내에 유지된 N개의 명령의 미확정 결과치를 유지하는 버퍼이다. 결과치 등록 엔트리(1235)를 N개 가지며, y번째의 결과치 엔트리(1235)에 y번째의 명령에 대응하는 결과치를 격납한다. 결과치 엔트리(1235)는 실제로 결과치를 유지하는 결과치부(1232)와 각 명령의 실행 상태를 나타내는 실행 플래그를 격납하는 실행 플래그부(1231)와 레지스터 번호부(1233)로써 구성된다.
결과치 등록 버퍼(1230)는 입출력 단자로서 기록 레지스터 지정 단자(1234)와 결과치 등록 엔트리 지정 입력 단자(1239)와 결과치 등록 단자(1236)와 결과치 출력 단자(1237)를 가진다. 결과치 등록 엔트리 지정 입력 단자(1235)는 N개 존재한다.
명령 발행 버퍼(1240)는 다음 동작 사이클로 발행 가능한 미발행 명령을 일시적으로 유지하는 버퍼이다. 명령 발행 엔트리(1245)를 동시 발행 명령수, 즉 K열분만 나열한 구성으로 하고 있다. 도 7의 예에서는 도 1의 프로세서(10)에 따르고, 3개의 명령 발행 엔트리(1245)를 가지는 경우를 나타내고 있다. 각각의 명령 발행 엔트리(1245)는 명령 코드부(1242), 왼쪽 오퍼랜드부(1243), 오른쪽 오퍼랜드부(1244)로 이루어진다. 이들은 각각 발행하는 명령의 명령 코드 정보, 좌측의 입력 오퍼랜드, 우측의 입력 오퍼랜드를 일시적으로 유지한다.
명령 발행 버퍼(1240) 각각의 명령 발행 엔트리(1245)는 각각 명령을 발행하는 대상이 되는 메모리 액세스 장치(14) 또는 연산 장치(15)에 대응하고 있다. 예를 들면, 도 7의 실시예에서는 각각 1열째의 명령 발행 엔트리(1245)는 도 1의 메모리 액세스 장치(14)로 발행하는 명령을 유지하고, 2일째의 명령 발행 엔트리(1245)는 도 1의 한 가운데의 연산 장치(15)로 발행하는 명령을 유지하고, 3열째의 명령 발행 엔트리(1245)는 도 1의 우측의 연산 장치(15)로 발행하는 명령을 유지한다.
명령 발행 버퍼(1240)는 입출력 단자로서 바이패스 맵 입력 단자(1241)와 명령 발행 단자(1246)와 명령 입력 단자(1247)와 오퍼랜드 바이패스-입력 단자(1248)를 가진다. 바이패스 맵 입력 단자(1241)는 K개 존재한다.
명령 발행 제어 장치(1250)는 명령 등록 버퍼(1200)에 대하여, 어떤 명령 등록 엔트리(1205)에 새로운 명령을 등록할지, 어떤 명령 등록 엔트리(1205)에 미확정 결과치를 오퍼랜드 포워드할지, 혹은 어떤 명령 등록 엔트리(1205)의 명령을 명령 발행 버퍼(1240)로 전송할지 등의 처리를 관리하는 장치이다.
내부에 발행 플래그부(1255)와 포워드 맵 프리펫치 버퍼(1258)를 가지고 있다. 발행 플래그부(1255)는 N개 존재하여, 각각이 대웅하는 명령 등록 엔트리(1205)의 발행 상태를 나타내는 발행 플래그를 유지한다. 포워드 맵 프리펫치 버퍼(1258)는 포워드원엔트리(1216)의 정보를 J행분 일시적으로 유지할 수 있는 버퍼이고, N개의 포워드 비트부(12585)로 이루어지는 포워드원엔트리(12586)를 J행 나일한 구성으로 하고 있다. 포워드 비트부(12585)는 포워드 비트부(1215)의 2비트의 기억 내용을 그대로
일시적으로 유지한다. 여기에서, J는 상술한 바와 같이, 동시에 실행을 종료하는 명령의 최대수이고, 도 7의 예에서는 J=3이다. 포워드 맵 프리펫치 버퍼(1258) 각각의 포워드원엔트리(12586)는 바이패스원엔트리(l226)와 같이, 각각 고유의 메모리 액세스 장치(14) 또는 연산 장치(15)의 결과치에 대응하고 있다. 상기 대응 관계는 같은 행의 바이패스원엔트리(1226)와 동일하도록 정해진다.
명령 발행 제어 장치(1250)는 입출력 단자로서 포워드 맵 입력/발행 플래그 출력 단자(1251)와 명령 등록 엔트리 지정 출력 단자(1252)와 제어 정보 입출력 단자(1253)와 바이패스 맵 출력 단자(1254)와 명령 등록 제어 단자(1256)를 가진다.
포워드 맵 입력/발행 플래그 출력 단자(1251)와 명령 등록 엔트리 지정 출력 단자(1252)는 N개씩 존재한다. 또한, 바이패스 맵 출력 단자(1254)는 J개 존재한다.
명령 실행 제어 장치(1260)는 결과치 등록 버퍼(1230)의 어떤 결과치 등록 엔트리(1235)에 어떤 명령의 결과치와 그 레지스터 번호를 등록할지의 지정, 어떤 결과치 등록 엔트리(1235)의 결과치를 확정할지의 지정, 각각의 결과치 등록 엔트리(1235)의 실행 플래그부(1231)의 실행 플래그의 관리등을 하는 장치이다. 입출력 단자로서 결과치 등록 엔트리 지정 출력 단자(1262)와 제어 정보 입출력 단자(1263)와 명령 실행 제어 단자(1264)를 가진다. 결과치 등록 엔트리 지정 출력 단자(1262)는 N개 존재한다.
오퍼랜드 포워딩 제어 장치(1270)는 포워드 맵 정보의 등록의 관리라든지 미확정 결과치를 어떤 입력 오퍼랜드에 포워드할지의 제어등을 하는 장치이다. 입출력 단자로서 포워드 맵 등록/출력 지시 단자(1272)와 제어 정보 입출력 단자(1273)와 포워드 맵 등록 제어 단자(1274)와 시프트 폭 지정 출력 단자(1275)를 가진다. 포워드 맵 등록/출력 지시 단자(1272)는 N개 존재한다.
시프터(1280)는 명령중에 지정된 포워드 맵 정보를 왼쪽 순회 시프트 및 0확장하여 포워드 맵 버퍼(1210)에 격납하는 장치이다. 입출력 단자로서 포워드 맵 입력 단자(1281)와 포워드 맵 출력 단자(1282)와 시프트 폭 지정 입력 단자(1283)를 가진다.
복수 명령 병렬 발행/실행 관리 장치(12)에 의해서 그 명령 동작 정보를 관리되어 있는 임의의 명령(n번째의 명령으로 한다)을 인출하여, 그 정보가 어떠한 형식으로 격납되어 있는지를 정리하면 다음과 같이 된다.
1. n열째의 명령 등록 엔트리(1205)에 명령 코드 정보와 좌우의 입력 오퍼랜드가 격납된다.
2. n열째의 발행 플래그부(1255)에 발행 플래그가 격납된다.
3. n행째의 포워드원엔트리(1216)에 포워드 맵 정보가 격납된다.
4. n행째의 결과치 등록 엔트리(1235)에 결과치와 실행 플래그와 결과치를 기록하는 레지스터 번호가 격납된다.
이하, 이들을 정리하여, n번째의 명령에 대한 명령 동작 정보 관리 엔트리(1290)이라고 부른다. 예를 들면, 도 7중에 도시된 명령 동작 정보 관리 엔트리(1290)는, 6번째의 명령에 대한 것이다. 명령 펫치/디코드 장치(11)가 복수의 명령에 관한 명령 동작 정보를 복수 명령 병렬 발행/실행 관리 장치(12)로 전송한 때에는, 복수의 명령 동작 정보 관리 앤트리(1290)에 이것들의 명령 동작 정보가 기록된다. 또한, 기본적으로는 작은 번호를 가지는 명령 동작 정보 관리 엔트리(1290)가 보다 프로그램 순서로 빠른 명령에 대응하지만 명령 동작 정보 관리 엔트리(1290)는 순회적으로 사용되기 때문에, N열째의 명령 동작 정보 관리 엔트리(1290)의 다음은, 1열째의 명령 동작 정보 관리 엔트리(1290)에 명령 동작 정보가 등록된다.
도 8은 발행 플래그부(1255)에 격납되는 발행 플래그가 취하는 상태를 설명한 설명도이다. n열째의 발행 플래그부(1255)의 발행 플래그의 상태는 n번째의 명령 동작 정보 관리 엔트리(1290)에 격납된 n번째 명령의 발행에 관한 상태를 지시한다. 발행 플래그약호「em」로 나타나는 상태는 해당 명령 동작 정보관리 엔트리(1290)가 유효한 명령 동작 정보를 가지지 않는 빈 상태인 것을 나타낸다. 약호「-」로 나타나는 상태는 디코드된 명령을 받아 등록을 하였지만, 아직 발행 가능한지 어떤지의 검사를 하기 전의 상태인 것을 나타낸다. 약호 「rd」로 나타나는 상태는 입력 오퍼랜드가 갖추어 있고, 발행하는 것이 가능한 상태인 것을 나타낸다. 약호 「wa」로 나타나는 상대는 입력 오퍼랜드가 갖추어 있지 않고, 아직 발행할 수 없는 상태인 것을 나타낸다. 약호 「is」로 나타나는 상태는 발행을 한 후의 상태인 것을 나타낸다.
도 9는 실행 플래그부(1231)에 격납되는 실행 플래그가 취하는 상태를 설명한 설명도이다. n행째의 실행 플래그부(1231)의 실행 플래그의 상태는 n번째의 명령 동작 정보 관리 엔트리(1290)에 격납된 n번째의 명령의 실행에 관한 상태를 지시하는 것이다. 실행 플래그 약호 「em」로 나타나는 상태는 해당 명령 동작 정보관리 엔트리(1290)가 유효한 명령 동작 정보를 가지지 않는 빈 상태인 것을 나타낸다. 약호「ni」로 나타나는 상태는 해당 명령을 아직 발행하고 있지 않는 상태인 것을 나타낸다. 약호「ex」로 나타나는 상태는 해당명령을 발행 후, 메모리 액세스 장치(14)라든지 연산 장치(15)로 실행중의 상태인 것을 나타낸다. 약호 「es」로 나타나는 상태는 분기 예측에 근거하는 투기적 상태대로 해당 명령을 발행하여, 메모리 액세스 장치(14)라든지 연산 장치(15)에서 실행중의 상태인 것을 나타낸다.
약호 「do」로 나타나는 상태는 명령의 실행이 종료하여 미확정 결과치가 얻어진 상태인 것을나타낸다. 약호「ds」로 나타나는 상태는 분기 예측에 근거하는 투기적 상태대로 해당 명령의 실행이 종료하여 미확정 결과치가 얻어진 상태인 것을 나타낸다.
어떤 명령 동작 정보 관리 엔트리(1290)에 대한 발행 플래그가 「em」인 경우는 대응하는 실행 플래그도 반드시 「em」이다. 또한, 발행 플래그가 「-」,「rd」,「wa」중의 어느 한 경우는 실행 플래그는 「ni」이다. 실행 플래그가 「ex」, 「es」, 「do」, 「ds」중의 어느 경우는 발행 플래그는 「js」 이다. 지금까지 사용하여 온 미발행 명령, 실행중 명령, 미확정 명령의 정의와 대조하여 맞추면, 미발행 명령이란 발행 플래그가 「-」, 「rd」, 「wa」중의 어느 상태에 있는 명령이고, 실행중 명령이란 실행 플래그가 「ex」, 「es」중의 어느 상태에 있는 명령이고, 미확정 명령이란 실행 플래그가 「do」,「ds」중의 어느 상태에 있는 명령이다. 명령의 실행 결과의 확정은 그 명령의 상태가 「do」이고, 또한 그 명령보다도 시간적으로 전에 펫치/디코드된 명령의 상태가 모두 「do」인 경우에 행하여진다. 「es」,「ds」의 상태는 분기 예측이 정확하면 판명되고, 투기적 상태가 해결한 경우에는 「ex」, 「do」상태로 이동한다. 분기 예측이 틀리다고 판명된 경우, 해당 분기 예측 이후의 실행중 명령 및 미확정 명령의 미확정 결과 정도는 캔슬된다.
도 10은 도 1에 나타내는 프로세서(10)의 파이프라인 동작 타이밍의 실시예를 설명한 설명도이다. 상기 도면은 이하의 설명이 간단하도록, 가장 기본적인 파이프라인 타이밍을 예로서 나타낸 것이고 종래 기술에 있어서의 슈퍼 스칼라 프로세서에 있어서 전형적인 파이프라인 동작에 준한 것이다. 도 10에서는 메모리 액세스 명령은 6단의 파이프라인으로 동작하며, 연산 명령/분기 명령은 5단의 파이프 라인으로 동작한다. IF는 명령펫치를 하는 파이프라인 스테이지이고, ID는 명령 디코드를 햐는 파이프라인 스테이지이고, DP는 명령 발행(디스파치)을 하는 파이프 라인 스테이지이고, EX1 스테이지 및 EX2 스테이지는 연산 실행을 하는 파이프라인 스테이지이고, WB는 레지스터 또는 메모리에 의 기록하는 파이프라인 스테이지이다. 곧 발행할 수 없는 명령에 대해서는, DP 스테이지가 복수 사이클 반복된다. 또한 데이터 캐시 메모리(16)내에 원하는 데이터가 존재하지 않는 경우는 EX1 스테이지가 복수 사이클 계속된다.
도 11은 복수 명령 병렬 발행/실행 관리 장치(12)의 동작이 각 파이프라인 스테이지에서 어떻게 행하여지는지를 나타낸 설명도이다. 관계하는 ID, DP, EX2, WB의 각 파이프라인 스테이지를 사이클 전반과 사이클 후반의 2개로 나누어 나타내고 있다. ID스테이지 후반에서는 명령 등록동작을 행하여, DP스테이지 전반에서는 오퍼랜드 등록 동작을 행하여, DP 스테이지 후반에서는 명령 발행 동작을 행하다. EX2 스테이지 전반에서는 오퍼랜드 포워딩 예약 조작을 행하여, EX2 스테이지 후반에서는 오퍼랜드 바이퍼싱 동작을 행하여, WB 스테이지 전반에서는 실행 종료 동작을 행하여, WB 스테이지 후반에서는 오퍼랜드 포워딩 조작을 하고 있다.
이하, 도 6 내지 도 11을 참조하면서, 복수 명령 병렬 발행/실행 관리 장치(12)의 동작에 대하여, 상기의 명령 등록, 오퍼랜드 등록, 명령 발행, 오퍼랜드 포워딩 예약, 오퍼랜드 바이퍼싱, 실행 종료, 오퍼랜드 포워딩의 7개의 기본 동작으로 나누어 설명한다. 또한, 이하의 설명에로서는 어떤 1개의 망령에 관한 이것들의 동작에 대하여 서술하고 있지만, 실제로는 복수 명령 병렬 발행/실행 관리 장치(12)에 있어서, 복수의 명령이 동시에 동일한 또는 다른 동작의 대상이 된다. 또한, 여기에서 설명의 내용은 특히 주의한 부분을 제외하면 포워드 맵 정보를 포함한 명령의 명령 포맷 및 포워드 맵 정보에 관하여, 어떠한 구성을 취한 경우라도 동일하다.
우선, 명령 등록 동작에 대하여 설명한다. 명령 등록에서는 명령 펫치/디코드 장치(11)로부터 디코드 정보 입력 단자(121)를 통해 전송되는 복수의 명령에 관한 명령 동작 정보를 각각 비어 있는 명령, 동작 정보 관리 엔트리(1290)에 격납한다. 어떤 명령 동작 정보 관리 엔트리(1290)에 격납할지는 명령 발행 제어 장치(1250), 명령 실행 제어 장치(1260) 및 오퍼랜드 포워딩 제어 장치(1270)가 각각, 명령 등록 제어 단자(1256), 명령 실행 제어 단자(1264) 및 포워드 맵 등록 제어 단자(1274)로부터 어느 명령분의 등록을 행할지 지시를 받아, 각각의 제어 정보 입출력 단자(1253, 1263, 및 1273)를 통해 비어 있는 명령 동작 정보 관리 엔트리(1290)에 관하는 정보를 공유함에 의해, 프로그램 순서에 따라서 명령 동작 정보가 순번에 나열되도록 결정을 한다. 여기에서 비어 있다란, 발행 플래그 및 실행 플래그가 「em」상태인 것을 가리킨다. 등록된 명령 동작 정보 관리 엔트리(1290)의 발행 플래그는 「-」상태로, 실행 플래그는 「ni」상태로 설정된다.
명령 동작 정보 등록 엔트리(1290)는 순회적으로 사용된다. 즉, 10번의 명령 동작 정보 등록 엔트리(1290)에 있는 명령을 등록한 경우, 프로그램 순서로 다음 명령은 1번의 명령 동작 정보 등록 엔트리(1200)에 등록된다. 혹시 비어 있는 명령 동작 정보 등록 엔트리(1290)가 없으면, 명령 펫치 디코드 장치(11)는 동작 정보의 전송을 정지한다.
상술한 바와 같이, 명령 동작 정보는 명령 코드 정보, 레지스터 기록 정보 및 포워드 맵 정보로 이루어진다. 명령 코드 정보는 명령 코드 등록 단자(1206)를 통해 명령 등록 버퍼(1200)의 명령 코드부(1202)로 격납된다. 레지스터 기록 정보는 기록 레지스터 지정 단자(1234)를 통해 레지스터 맵 버퍼(1230)의 레지스터 번호부(1233)에 격납된다. 또한, 포워드 맵 정보는 시프터(1280)에 의해 왼쪽 시프트 및 0확장을 행하게 된 후, 포워드 맵 등록 단자(1213)를 통해 포워드 맵 버퍼(1210)내의 포워드원엔트리(1216)의 포워드 맵 정보로서 등록된다.
시프터(1280)에 의한 왼쪽 순회 시프트의 폭은 오퍼랜드 포워딩 제어 장치(1270)에 의해, 시프트 폭 제어 단자(1283)를 통해 제어된다. 여기에서, 예로서 어떤 명령의 포워드 맵 정보가 n행째의 포워드원엔트리(1216)에 등록된다고 하면, 해당 포워드 맵 정보는 2*n비트만 왼쪽 순회 시프트된다. 왼쪽 순회 시프트란, 해당 포워드-맵 정보가 포워드원엔트리(1216)의 좌측에 초과하는 경우에, 초과한 부분을 포워드원엔트리(1216)의 우측 끝으로부터 세트하여 사용하는 것을 의미한다. 포워드원엔트리(1226)의 내부, 이렇게하여 명령의 포워드 맵 정보를 왼쪽 순회 시프트하여 얻어진 포워드 맵 정보에서는 메워지지 않은 부분은, 값 「0」에 세트된다.
이와 같이, 시프터(1280)에 의해 좌측에 시프트를 행하는 이유는 명령중에 조정된 포워드 맵 정보가 해당 명령으로부터의 상대 명령 번호를 사용하고 있기 때문이다. 또한, 시프트 후 우측에서 순회시키는 이유는 상술한 바와 같이, 명령 동작 정보 관리 엔트리(1290)를 순회적으로 사용하고 있기 때문이다. 또한, 0확장을 하는 이유는 명령중에 지정된 포워드 맵 졍보가 커버하는 범위보다도 포워드맵원엔트리(1216)의 쪽이 보다 넓은 범위의 입력 오퍼랜드에 걸쳐서 포워드 맵 정보를 유지할 수 있는 경우에 그 자분의 입력 오퍼랜드에 대하여 오퍼랜드 포워드를 하지 않는 취지를 지시하기 때문이다.
또한, 포워드 맵 정보를 등록하는 것에 대해서는 포워드 맵 정보가 한쪽 방향형인 경우, 그 등록에 의해 있는 열의 포워드 비트부(1215)가 값 「1」을 포함하는 것이 되는 경우, 그 열에 대응하는 발행 플래그부(1255)가 등록을 행하기 전의 상태로, 「wa」, 「-」상태 이외의 발행 플래그를 가지고 있지 않으면 안된다. 상기 조건을 만족시키지 않는 경우는 명령 동작 정보 관리 엔트라(1290) 자체는 등록 가능하더라도 조건을 만족시킬 때까지 명령 등록 동작을 정지한다. 포워드 맵 버퍼(1210)는 포워드 맵 출력/발행 플래그 입력 단자(1212)를 통해 발행 플래그의 상태를 독해하는 것에 의해, 이러한 제어를 하는 한편, 양쪽 방향형의 포워드 맵 정보를 사용한 경우는 이러한 제어는 필요 없다.
다음에, 오퍼랜드 등록 동작에 대하여 설명한다. 상기 동작에서는 레지스터 파일 장치(13)로부터 독해한 입력 오퍼랜드를 명령 등록 버퍼(1200)에 등록한다. 입력 오퍼랜드는 레지스터 파일 판독 데이터 단자(124)로부터 주어지어, 레지스터 오퍼랜드 입력 단자(1209)로부터 명령 등록 버퍼(1200)에 입력된다. 어떤 왼쪽 오퍼랜드부(1203) 또는 오른쪽 오퍼랜드부(1204)에 입력 오퍼랜드로서 등록할지는 명령 등록 엔트리 지정 입력 단자(1201)를 통해 명령 발행 제어 장치(1250)에 의해 지정된다.
입력 오퍼랜드로서 지정된 레지스터(135)에 대한 미확정 결과치가 결과치 등록 버퍼(1230)내에 존재하는 때는 레지스터 파일 장치(13)로부터 입력 오퍼랜드를 독해하는 것은 할 수 없다. 상기의 경우, 본 실시예에서는 해당 미확정 결과치를 레지스터 파일 장치(13)에 기록할 때까지, 상기 명령은 입력 오퍼랜드의 등록을 행할수 없다. 따라서, 그 사이에 상기 명령은 DP 스테이지를 반복하여 실행한다. 여기에서, 레지스터 파일 장치(13)는 종래 기술에 있는 바와 같이, 각 레지스터(135)에 격납된 값이 입력 데이터로서 사용 가능한지 어떤지를 나타내는 레지스터 비지 정보를 기억하여 관리한다.
레지스터 파일 장치(13)로부터의 판독이라든지 후술의 오퍼랜드 포워딩 예약 동작에 의해, 입력 오퍼랜드가 전부 갖추어진 경우, 명령 발행 제어 장치(l250)는 해당 명령에 대응하는 발행 플래그부(1255)를 「rd」상태에 세트한다. 그것 이외인 경우는 「wa」상태로 한다.
다음에, 명령 발행 동작에 대하여 설명한다. 명령 등록 버퍼(1200)에 있어서, 「rd」상태의 명령 등록 엔트리(1205)를 찾고, 그것들의 「rd」상태의 명령 등록 엔트리(1205)의 중에서 실제로 명령을 발행하는 명령 등록 엔트리(1205)를 선택한다. 선택한 명령 등록 엔트리(1205)의 명령 동작 정보를 명령 출력 단자(1207)를 통해 명령 발행 엔트리(1245)로 전송한다. 여기에서, 상술한 바와 같이, 어떤 메모리 액세스 장치(14), 연산 장치(15)에 명령을 발행할지에 의해, 어떤 명령 발행 엔트리(1245)에 명령을 출력할지가 결정된다. 또한, 선택한 명령 등록 엔트리(1205)에 대응하는 열의 포워드 맵 프리펫치 버퍼(1258)의 정보를 바이패스 맵 출력 단자(1254)를 통해, 바이패스 맵 버퍼(1220)의 전송전의 명령 발행 엔트리(1245)와 같은 열로 전송하는 예를 들면, n 열째의 명령 등록 엔트리(1205)의 명령 동작 정보를 n열째의 명령 발행 엔트리(1245)로 전송하는 것으로 하면, 포워드 맵 프리펫치 버퍼(1258)의 n열째의 내용을 바이패스 맵 버퍼(1220)의 m열째로 전송한다.
상술한 바와 같이, 명령 발행 버퍼(1240)의 각각의 명령 발행 엔트리(1245)는 각각 명령을 발행하는 대상이 되는 메모리 액세스 장치(14) 또는 연산 장치(15)에 대응하고 있다. 예를들면, 도7의 실시예에서는 각각 1열째의 명령 발행 엔트리(1245)는 메모리 액세스 장치(14)로, 2열째의 명령 발행 엔트리(1245)는 연산 장치(15)로, 3열째의 명령 발행 엔트리(1245)는 연산 장치(15)로 발행하는 명령을 유지한다.
이 후, 다음 EX1 또는 EX2 스테이지의 선두에서, 실제로 명령 발행 버퍼(1240)로부터 메모리 액세스 장치(14) 또는 연산 장치(15)에 명령이 발행된다.
다음에, 오퍼랜드 포워딩 예약 동작에 대하여 설명한다. EX2 스테이지의 전반에서는 해당 명령이 다음 사이클로 실행 종료하는 것이 분명해진다. 그리하여, 복수 명령 병렬 발행/실행 관리 장치(12)는 그 명령의 결과치를 입력 오퍼랜드로서 사용하는 미발행 명령을 특정하여 그것들 특정된 명령의 입력 오퍼랜드가 갖추어졌는지 어떤지를 검사하여, 갖추어진 경우는 발행 플래그를 「rd」에 세트한다. 보다 구체적으로는 이하와 같은 동작이 행하여진다.
지금, n번째의 명령이 EX2 스톄이지로 들어갔다고 한다. 오퍼랜드 포워딩 제어 장치(1270)는 명령 실행 제어 장치(1260)로부터 제어 정보 입출력 단자(1273)를 통해 상기 정보를 받아, 포워드 맵 출력 지시 단자(1272)를 통해, 포워드 맵 버퍼(1210)의 n 행째의 포워드원엔트리(1216)에 액세스한다. n행째의 포워드원엔트리(1216)의 2N비트의 포워드 맵 정보는 N개의 포워드 맵 출력/발행 플래그 입력 단자(1212)를 통해 판독되어지고, 명령 발행 제어 장치(1250)에 입력된다. 상술한 바와 같이, 판독된 포워드원엔트리(1216)의 2N비트의 포워드 맵 정보는 n번째의 명령의 결과치를 어떤 명령이 그 좌측 또는 우측의 입력 오퍼랜드로서 사용하는지를 나타내고 있다. 명령 발행 제어 장치(1250)는 상기 포워드 맵 정보와 N개의 발행 플래그부(1255)의 상태를 검사하여, 발행 플래그가 「1」또는 「wa」의 명령 등록 엔트리(1205)의 중에서, n번째의 명령의 결과치를 포워드함에 의해 입력 오퍼랜드가 모두 갖추어지는 명령을 찾고, 그 발행 플래그를 「rd」상태로 한다.
예를 들면, 어떤 열의 포워드 맵 입력/발행 플래그 출력 단자(1251)로부터 주어진 포워드 맵 정보가 "11" 인 경우, 모든 입력 오퍼랜드가 갖추어지기 때문에, 그 열의 발행 플래그는 「rd」상태가 된다. 또한, 어떤 열의 포워드 맵 입력/발행 플래그 출력 단자(1251)로부터 주어진 포워드 맵 정보가 "10"으로, 해당 명령이 이미 우측의 입력 오퍼랜드를 받고있는 경우, 모든 입력 오퍼랜드가 갖추어지기 때문에 그 열의 발행 플래그는 「rd」상태가 된다.
명령 등록 버퍼(1200)에 입력된 포워드원엔트리(1216)의 정보는 명령 발행 제어 장치(1250)내의 포워드 맵 프리펫치 버퍼(1258)에 일시적으로 격납된다. 포워드 맵 프리펫치 버퍼(1258)의 각각의 포워드원엔트리(12586)는 어떤 메모리 액세스 장치(14)또는 연산 장치(15)로부터 생성되는 결과치에 대응하는지를 미리 정하여 둔다. 예를 들면, 1행째가 도 1에 나타나는 프로세서(10)의 메모리 액세스 장치(14), 2행째가 한 가운데의 연산 장치(15), 3행째가 우측의 연산 장치(16)의 결과치에 각각 대응하는 것으로 한다.
다음에, 오퍼랜드바이퍼싱 동작에 대하여 설명한다. 상술한 오퍼랜드포워딩 예약에 의해, 어떤 명령 등록 엔트리(1205)에 실제로 입력 오퍼랜드가 갖추어지기 전에 대응하는 발행 플래그부(1255)가 「rd」상태로 설정되는 경우가 있다. 따라서, 상술의 명령 발행 동작에 의해, 실제로 입력 오퍼랜드가 갖추어지기 전에
그 명령 등록 엔트리(1205)의 명령 동작 정보가 명령 발행 버퍼(1240)로 전송되어, 발행의 대상이 되는 경우가 있다. 오퍼랜드 바이퍼싱 동작으로서는 이러한 상황에 대응하기 위해서 필요한 입력 오퍼랜드를 결과 버스(17)로부터 명령 발행 버퍼(1240)에 직접 바이패스하는 동작을 한다. 보다 구체적으로는 이하와 같은 동작이 행하여진다.
EX2 스테이지의 후반에서는 메모리 액세스 장치(14) 또는 연산 장치(15)에 의해 결과치가 생성되어, 결과 버스(17)상에 전송된다. 상기 결과지를 결과치 입력 단자(126)와 오퍼랜드 바이패스 입력 단자(1248)를 통해 명령 발행 버퍼(1240)에 입력하고, 해당 결과치를 입력 오퍼랜드로서 필요로 하고 있는 명령 발행 엔트리(1245)가 있으면, 그 왼쪽 오퍼랜드부(1243) 또는 오른쪽 오퍼랜드부(1244)에 기록한다. 여기에서, 그와 같은 명령 발행 엔트리(1245)가 존재하는지 아닌지는 명령 발행 동작(1220)으로 바이패스 맵 버퍼(1220)에 등록된 바이패스 맵 정보에 의해, 바이패스 맵 입력 단자(1241)를 통해 지시된다.
바이패스 맵 버퍼(1220)의 각 행은 포워드 맵 프리펫치 버퍼(1258)와 같이 각 행이 어떤 메모리 액세스 장치(14) 또는 연산 장치(15)의 결과치에 대응하는 바이패스맵 정보를 유지하는지를 미리 정해져 있다. 예를들면, 1행째가 도 1에 나타내는 프로세서(10)의 메모리 액세스 장치(14), 2행째가 좌측의 연산 장치(15), 3행째가 우측의 연산 장치(16)의 결과치에 각각 대응하는 것으로 한다. 바이패스 맵 버퍼(1220)의 각 열은 명령 발행 버퍼(1240)의 각 열의 명령 발행 엔트리(1245)와 대응하고 있다.
다음에, 실행 종료 동작에 대하여 설명한다. 결과지 입력 단자(126)로부터 입력되는 결과치를 결과치 등록 단자(1236)를 통해, 결과치 등록 버퍼(1230)내의 해당 명령애 대응하는 결과치 등록 엔트리(1235)에 등록한다. 어떤 결과치 등록 엔트리(1235)에 등록할지는 명령 실행 제어 장치(1260)에 의해 결과치 등록 엔트리 지정 출력 단자(1262)를 통해 지정된다. 등록을 한 결과지 등록 엔트리(1235)의 실행 플래그부(1231)는 「do」또는 「ds」상태로 설정한다.
실행 종료 동작에 의해 기록된 결과치 또는 이미 기록되어 있는 미확정 결과치가 확정한 경우는 실행 종료 동작에서, 확정 결과치의 레지스터 파일 장치(13)에 기록한다. 어떤 결과치 등록 엔트리(1235)의 결과치를 확정할지는 명령 실행 제어장치(1260)에 의해 결과치 등록 엔트리 지정 출력 단자(1262)를 통해 지정된다. 확정한 결과치에 대응하는 명령 동작 정보 등록 엔트리(1290)는 「em」상태로 설정된다.
다음에, 오퍼랜드 포워딩 동작에 대하여 설명한다. 상술한 바와 같이, 어떤 명령에 대한 EX2 스테이지의 오퍼랜드 포워딩 예약의 동작에 의해, 그 명령의 결과치를 사용하는 명령의 특정이 행하여진다. 상기 명령에 대한 WB 스테어지에서의 오퍼랜드 포워딩의 동작에서는 실제로 얻어진 결과치를 명령 등록 버퍼(1200)내의 왼쪽 오퍼랜드부(1203), 오른쪽 오퍼랜드부(1204)에 등록하는 동작을 행한다.
어떤 왼쪽 오퍼랜드부(1203), 오른쪽 오퍼랜드부(1204)에 대하여 어떤 결과치를 등록할지는 해당 명령의 오퍼랜드 포워딩 예약의 동작에 의해, 포워드 맵 프리펫치 버퍼(1258)에 미리 유지된 포워드원엔트리(12586)의 내용에 의해 지시된다. 즉, 포워드원엔트리(12586)의 포워드 맵 정보의 값 「1」에 대응하는 왼쪽 오퍼랜드부(1203) 또는 오른쪽 오퍼랜드부(1204)에 결과치를 포워드하여 등록한다. 여기에서, 등록하는 결과치가 어떤 메모리 액세스 장치(14) 또는 연산 장치(15)의 결과일지에 의해, 어떤 포워드원엔트리(12586)의 포워드 맵 정보에 따라서 오퍼랜드 포워드를 행할지가 오로지 결정된다.
도 12(A) 내지 12(C)는 이상 각 동작에 관한 설명을 보충하기 위해서, 명령 A의 결과치를 명령 B가 입력 오퍼랜드로서 사용하는 경우의 2개 명령의 파이프라인 처리를 3개의 파이프라인 타이핑을 가정하여 설명한 것이다. 명령 A의 입력 오퍼랜드는 전부 레지스터 파일 장치(13)로부터 판독 가능하고, 명령 B의 입력 오퍼랜드는 명령 A에서의 오퍼랜드 포워딩에 의해 전부 갖추어지는 것으로 가정하고 있다.
도 12(A)는 명령 A와 명령 B를 동시에 펫치/디코드한 경우를 나타내고 있다. 명령 A는 DP 스테이지의 오퍼랜드 등록 동작에 있어서 필요로 하는 오퍼랜드가 전부 갖추어지기 위해서 발행 플래그가 「rd」로 되어, 명령 발행 동작에 의해 실제로 발행하는 명령으로서 선택되고, 다음 EX2 스테이지로 실행된다. 이것에 대하여, 명령 B는 우선 명령 등록 동작에서 등록되는 포워드 맵 정보가 명령 A의 결과치를 필요로 하는 것을 나타내고 있다. 따라서, 명령 B는 최초의 DP 스테이지의 오퍼랜드 등록 동작에 있어서 필요로 하는 오퍼랜드가 갖추어지지 않기 때문에, 발행 플래그가 「wa」로 된다. 명령 A의 EX2 스테이지의 오퍼앤드 포워딩 예약 동작에 의해, 명령 등록 동작에서 등록된 명령 B의 포워드 맵 정보를 사용하여, 다음 사이클에서 명령 B가 필요로 하는 입력 오퍼랜드가 명령 A의 결과치로서 생성되는 것이 알아지게 되기 때문에, 이것에 의해 명령 B의 발행 플래그는 「rd」로 된다. 따라서, 2사이클째의 DP 스테이지의 명령 발행 동작에서 명령 B가 발행의 대상으로서 선택됨과 동시에 오퍼랜드 바이퍼싱 동작으로 명령 발행 버퍼(1240)에 명령 A의 결과가 바이패스되어, 다음 사이클에서 명령 B가 실행된다. 명령 A의 결과치는 WB스테이지의 실행 종료 동작, 오퍼랜드 포워딩 동작에서 각각 결과치 버퍼(1230), 명령 등록 버퍼(1200)에 등록/포워드된다. 여기에서, 명령 등록 버퍼(1230)에 등록 때에는 명령 A의 EX2 스테이지의 오퍼랜드 포워딩 예약 동작으로서 포워드 맵 프리펫치 버퍼(1258)에 격납되어 있던 포워드 맵 정보가 사용된다.
도 12(B)는 명령 A와 명령 B를 1사이클 어긋난 타이밍으로 펫치/디코드한 경우를 나타내고 있다. 명령 A는 DP스테이지의 오퍼랜드 등록동작에 있어서 필요로 하는 오퍼랜드가 전부 갖추어지기 때문에, 발행 플래그가 「rd」로 되어, 명령 발행 동작에 의해 실제로 발행하는 명령으로서 선택되고, 다음 EX2 스테이지에서 실행된다. 한편, 명령 B는 명령 A의 EX2 스테이지의 오퍼랜드 포워딩 예약 동작에 의해, 다음 사이클에서 명령 B가 필요로 하는 입력 오퍼랜드가 명령 A의 결과치로서 생성되는 것을 인지하는 것이 가능하기 때문에, 발행 플래그가 「rd」로 된다.
따라서, 상기 DP 스테이지의 명령 발행 동작에서 명령 B가 발행의 대상으로서 선택됨과 동시에 오퍼랜드 바이퍼싱 동작으로 명령 발행 버퍼(1240)에 명령 A의 결과치가 바이패스되어, 다음 사이클로 명령 B가 실행된다. 명령 A의 결과치는 WB스테이지의 실행 종료 동작, 오퍼랜드 포워딩 동작으로, 각각 결과치 버퍼(1230), 명령 등록 버퍼(1200)에 등록/포워드된다.
도 12(C)는 명령 A와 명령 B를 2사이클 어긋난 타이밍으로 펫치/디코드하는 경우를 나타내고 있다. 상기의 경우, 명령 A의 EX2 스테이지와 명령 B의 ID스테이지, 명령 A의 WB 스테이지와 명령 B의 DP 스테이지가 각각 동일 파이프라인 타이밍으로 실행된다. 명령 A의 EX2 스테이지에서의 오퍼랜드 포워딩 예약 동작으로서는 명령 B는 아직 ID 스테이지에 있기 때문에 복수 명령 발행/실행 관리 장치(12)에 등록되어 있지 않았지만, 명령 A의 포워드 맵 정보에 의해, 명령 B가 등록되는 명령 동작 정보 등록 엔트리(1290)에 명령 A의 결과치가 포워드되는 것이 판명된다. 명령 A의 WB 스테이지에서는 실행 종료 동작, 오퍼랜드 포워드 동작에서, 각각 결과치를 결과치 버퍼(1230), 명령 등록 버퍼(1200)에 등록/포워드한다. 명령 B의 DP 스테이지의 오퍼랜드 등록 동작에서는, 상술의 오퍼랜드 포워팅 예약 동작에 의해 입력 오퍼랜드가 갖추어지는 것을 알 수 있기 때문에, 발행 상태를 「rd」에 세트한다. 명령 발행 동작에서는 명령 등록 버퍼(1200)에 오퍼랜드 포워드된 명령 A의 결과치를 명령 B의 입력 오퍼랜드로서 사용하여, 명령 코드 정보과 동시에 명령 발행 버퍼(1240)로 전송한다. 명령 B는 다음 사이클에서 실행된다. 이와 같이, 상기 파이프라인 타이밍으로서는, 오퍼랜드 바이퍼싱 동작을 통하지 않고서 입력 오퍼랜드가 얻어진다.
이하, 간단한 명령 코드열을 예로서 받아들여, 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)의 동작을 보다 구체적으로 설명한다.
도 13은 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 방법의 실시예의 동작을 설명하기 위해서 사용한 명령열의 예를 나타낸 설명도이다. 도 3(A) 내지 3(C)의 명령 포맷의 실시예 1에 따라서 명령 코드열을 기재하였다. r1, r2 둥은 레지스터(135)의 번호를 나타내고 있다. 각 명령은 명령 코드, 결과치를 기록하는 레지스터(135), 좌측의 입력 오퍼랜드를 독해하는 레지스터(135), 우측의 입력 오퍼랜드를 독해하는 레지스터(135), 포워드 맵 정보의 순서대로 구성되어 있다. 여기에서는, 상대 명령 번호를 사용한 한쪽 방향형의 포워드 맵 정보를 후속하는 5 명령분을 구비하는 것으로 하고 있다.
명령열의 우측에 각 명령의 동작 설명을 나타낸다. LnL, 또는 LnR이라는 기술은 명령 라벨 Ln의 명령(명령 라벨은 도면 중 가장 좌측에 나타나고 있다, n은 양의 정수)의 좌측 또는 우측의 입력 오퍼랜드의 오퍼랜드 포워딩을 의미하고 있다. 또한 블랭크 「-」로 나타난 부분은 오퍼랜드 포워딩에 의해 입력 오퍼랜를 받는 것을 나타내고 있다. 또한 각 명령의 처리에 의해 생성되는 결과치를 도면 중 가장 우측에 나타내었다.
본 실시예에 의한 복수 명령 병렬 발행/실행 관리 방법에서는 포워드 맵 정보를 사용하여, 어떤 명령의 결과치를 다른 명령이 입력 오퍼랜드로서 사용하는 것을 직접 각 명령내에 명시한다. 이 때문에, 결과치 또는 입력 오퍼랜드의 레지스터 지정이 필요가 없는 경우가 많다. 동 도면에서는 이러한 지정의 필요가 없는 부분은 공백으로서 나타내고 있다.
도 14는 이하의 설명에 사용한 레지스터 파일 장치(13)내의 각 레지스터(135)의 값을 나타낸 설명도이다. 8개의 레지스터(135)를 가지는 도 1의 실시예에 따르고 r0로부터 r7까지의 레지스터(135)의 값을 나타내고 있다.
도 15는 도 13의 명령 코드열의 예인 파이프라인 동작 타이밍을 나타내는 설명도이다. 도 15에 있어서, t는 파이프라인 사이클 수를 나타내는 변수이다. 도시의 예로서는, 3명령씩 동시에 펫치, 디코드하여 입력 오퍼랜드가 갖추어진 명령으로부터 최대 3명령 동시에 실행을 하고 있다. t=10의 사이클로, 최후의 명령이 실행을 종료하여 전체 명령의 결과치가 확정한다.
도 11로부터 도 25는 도 13 내지 도 15에 나타나는 예에 대응하여, 본 실시 예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)의 동작을 설명한 설명도이다. 이것들의 도면은 t=1에서 t=9까지의 9회 파이프라인 사이클에 있어서, 명령 등록 버퍼(1200), 포워드 맵 버퍼(l210), 바이패스 맵 버퍼(1220), 결과치 버퍼(1230), 명령 발행 버퍼(1240), 명령 발행 제어 장치(1250)의 내부 상태를 도 7에 따라서 나타내고 었다. 이것들의 도면과 이하의 설명으로 t=j의 상태로서 나타나고 있는 것은, j사이클째의 동작이 종료한 다음의 j+1사이클째의 동작을 시작하는 전의 시점에서의 상태이다. 또한, 이것들의 도면에서는, 도면이 번잡하게 되는 것을 피하기 위해서, 동작에 관계가 없는 내부 상태는 블랭크대로 하여 나타내고 있다.
t=1의 상태를 나타낸 도 16에서는 최초 3개의 명령이 ID 스테이지에 있고, 이들 3개 명령의 명령 등록 동작이 끝난 상태로 되어 있다. 명령 등록 버퍼(1200)에 있어서, 입력 오퍼랜드가 「?」로서 나타나고 있는 것은, 아직 오퍼랜드 등록이 행하여지고 있지 않기 때문이고, 「×」라고 나타나고 있는 것은, 1개밖에 오퍼랜드를 사용하지 않기 때문이다. 각각의 명령의 포워드 맵 정보가 왼쪽 시프트와 0확장을 행하고 포워드 맵 비퍼(1210)에 등록되어 있다. 아직 오퍼랜드 등록이 행하여지고 있지 않기 때문에, 3개의 명령의 발행 플래그는 「-」상태이다.
t=2의 상태를 나타낸 도 17에서는, 최초 3개의 명령이 DP 스테이지에 있고, 다음 3개의 명령이 ID 스테이지에 있다. 레지스터 파일 장치(13)로부터 필요한 입력 오퍼랜드를 전부 펫치함에 의해 「rd」상태로 된, 1번째와 2번째의 2개 명령이 명령 발행 동작보다, 명령의 타입에 따라서 명령 발행 버퍼(1240)의 소정의 명령 발행 엔트리(1245)로 전송되어 있다. 3번째의 명령은 입력 오퍼랜드가 갖추어지지 않기 때문에 「wa」상태로 된다.
t=3의 상태를 나타낸 도 18에서는 상기 2개의 명령이 발행되어, EX2 및 EX1 스테이지에 있다. 또한 4번째의 명령이 레지스터 파일 장치(13)로부터 2개의 입력 오퍼랜드를 펫치하는 것으로 「rd」상태로 되어, 명령 발행 버퍼(1240)로 전송된다. 1번째의 add 명령이 EX2 스테이지에 있기 때문에, 상기 명령의 오퍼랜드 포워딩 예약 동작이 행하여지고, 1행째의 포워드원엔트리(1216)의 포워드 맵 정보가 포워드 맵 프리펫치 버퍼(1258)의 2행째에 이송된다. 여기에서, 2행째로 지정되는 이유는 해당 add 명령이 발행때에 2열째의 명령 발행 엔트리(1245)로부터 발행되었기 때문이다. 도면 중, 포워드 맵 버퍼 1열째에 화살표와 동시에 나타난 숫자 2는 이것을 나타내고 있다. 상기 사이클은 오퍼랜드 포워딩 예약 동작에 의해 「rd」상태로 되는 명령은 존재하지 않는다. 7번째 명령의 명령 등록 동작에 의해, 7행째의 결과치 등록 엔트리(1235)의 래지스터 번호부(1233)에 결과치 기록전의 레지스터 번호가 등록되어 있다.
t=4의 상태를 나타낸 도 19에서는 7번째로부터 9번째의 명령이 DP 스테이지로 들어가, 명령 등록 동작이 행하여진다. 1번째의 add 명령이 WB 스테이지에 있으므로, 실행 종료 동작에 의해, 결과치가 결과치 등록 버퍼(1230)에 기록된다.
이것에 의해, 그 결과치가 확정하기 때문에, 1번째의 명령 동작 정보 관리 엔트리(1290)가 「em」상태가 된다. 또한, 오퍼랜드 포워딩 동작에 의해, 상기 결과치는 전의 사이클로 포워드 맵 프리팻지 버퍼(1258)에 일시적으로 유지되어 있던 포워드 맵 정보에 따르고, 5번째의 and 명령 우측의 입력 오퍼랜드에 포워드된다. 2번째의 명령과 4번째의 명령이 EX2 스테이지에 있으므로, 오퍼랜드 포워딩 예약 동작이 행하여지고, 각각의 포워드 맵 정보가 포워드 맵 프리펫치 버퍼(1258)의 1행째과 2행째로 전송됨과 동시에, 3번째 명령과 5번째 명령이 「rd」상태로 설정된다. 명령 발행 동작에 의해 이것들의 명령과 대응하는 포워드 맵 프리펫치 버퍼(1258)열의 포워드 맵 정보가(도 19에서는 이들을 사선으로 나타내었다) 명령 발행 버퍼(1240)와 바이패스 맵 버퍼(1220)의 2열째 및 3열째에 각각 전송된다. 오퍼랜드 바이패스 동작에 의해, 바이패스 맵 버퍼(1220)의 지시에 따르고, 2번째의 명령과 4번째의 명령의 결과치가 명령 발행 버퍼(l240)내의 2열째와 3열째의 오른쪽 오퍼랜드부(1244)에 바이패스된다.
t=5의 상태를 나타낸 도 20에서는, 2번째 명령의 실행이 종료하여 확정하기 때문에, 상기 명령 동작 정보 관리 엔트리(1290)가 「em」상태로 설정된다. 또한, 4번째 명령의 실행이 종료하지만, 확정은 하지 않기 때문에, 4번째의 결과치 등로 엔트리(1235)에 결과치가 기록되어, 실행 플래그가 「do」상태로 설정된다. 이것들의 명령 결과치는 오퍼랜드 포워딩 조작에 의해, 명령 등록 버퍼(1200)내에 포워드된다. 3번째와 5번째의 명령이 EX2 스테이지에 있으므로, 오퍼랜드 퍼워딩 예약 동작에 의해, 6번째와 7번째 명령의 발행 플래그가 「rd」상태가 된다. 이것들의 명령은 명령 발행 동작에 의해, 대응하는 바이패스 맵 정보와 동시에, 명령 발행 버퍼(1240)와 바이패스 맵 버퍼(1220)로 전송된다. 명령 발행 버퍼(1240)상에서 이것들의 명령의 입력 오퍼랜드에 대하여 2번째 및 4번째 명령의 결과치가 바이패스된다.
t=6의 상태를 나타낸 도 21에서는, 3번째와 5번째의 명령이 실행을 종료하여, 3번째로부터 5번째까지의 명령 실행 결과가 확정한다. 3번째와 5번째의 명령 실행 결과는 오퍼랜드 포워딩 동작에 의해, 명령 등록 버퍼(1200)내에 포워드된다. 상기 사이클로서는 7번째의 명령이 EX2 스테이지에 있지만 상기 명령의 포워드 맵 정보는 모두 0이기 때문에, 오퍼랜드 포워딩 예약 동작에 의해 발행 플래그가 「rd」상태로 되는 명령은 존재하지 않는다.
t=7의 상태를 나타낸 도 22에서는, 7번째의 명령이 실행을 종료하고 그 결과치가 결과치 등록 버퍼(1230)에 기록된다. 또한, 6번째의 명령이 EX2 스테이지에 있고 오퍼랜드 포워딩 예약 동작에 의해, 상기 명령의 포워드 맵 정보가 포워드 맵 프리펫치 버퍼(1258)에 판독된다. 8번째와 9번째 명령의 발행 플래그가 「rd」상태로 되기 때문에, 명령 발행 동작에 의해, 이것들의 명령과 대응하는 바이패스 맵 정보가 각각 명령 발행 버퍼(1240)와 바이패스 맵 버퍼(1220)로 전송된다. 명령 발행 버퍼(1240)는 오퍼랜드 바이패스 동작에 의해 결과치를 바이패스된다.
t=8의 상태를 나타낸 도 23에서는, 6번째 명령의 실행이 종료하여 그 때문 6번째와 7번째 명령의 결과치가 확정한다. 7번째 명령의 결과치는 결과치 등록 버퍼(1230)로부터 레지스터 파일 장치(13)로 되돌아간다. 또한, 오퍼랜드 포워딩 동작에 의해, 결과치가 명령 등록 버퍼(1200)내에 포워딩된다. 8번째와 9번째의 명령이 실행되지만, 8번째의 branch 명령이 아직 실행 종료하고 있지 않기 때문에, 9번째의 store 명령은 분기 불성립과의 분기 예측에 의한 투기적 실행 상태에 근거하여 실행되고 실행 플래그는 「es」로 된다.
t=9의 상태를 나타낸 도 24에서는, 8번째의 branch 명령의 실행이 종료하여, 분기가 불성립이라고 판명한다. 이 때문에, 9번째의 store 명령의 실행 플래그는 「es」상태로부터 「ex」상태로 된다. 또한, 8번째 명령의 실행이 확정하기 때문에, 그 명령 동작 정보 등록 엔트리(1290)는 「em」상태로 된다.
상기와 같이, 포워드 맵 정보를 사용하여 어떤 명령의 결과치를 다른 명령의 입력 오퍼랜드에 오퍼랜드 포워드 또는 오퍼랜드 바이패스하는 이에 의해서, 비교기를 사용하지 않고서, 입력 오퍼랜드가 갖추어진 명령으로부터 병렬로 발행하여 실행하고 실행을 종료할 수 있다.
도 25는 도 6에 나타내는 복수 명령 병렬 발행/실행 관리 장치(12)의 포워드 맵 버퍼(1210)의 구성을 나타낸 블럭도이다. 도 25는 상술한 동작의 설명에 대응하여, 1개의 명령에 관한 포워드 맵 정보의 등록과 1개의 결과치에 관한 포워드 맵 정보의 판독에 대해서만, 그 블럭 구성을 나타내고 있다. 또한, 상술한 바와 같이, 포워드 맵 정보의 등록은 명령 등록 동작에서 행하여져, 포워드 맵 정보의 판독은 오퍼랜드 포워딩 예약 동작으로 행하여진다.
도 25에 있어서, 포워드 맵 버퍼(1210)는 메모리셀(12105)을 N행, 2N열로 나열한 구성으로 하고 있다. 행방향의 인접하는 메모리셀(12105)의 2개분이 포워드 비트부(215)에 대응한다. 또한, 1행분의 메모리셀(12105)이 포워드원엔트리(1216)에 대응한다. 메모리셀(12105)은 워드선(12106)과 비트선(12107)에 접속되어 있다.
우선, 명령 등록 동작에 있어서의 포워드 맵 정보의 등록에 대하여 설명한다. 포워드 맵 등록 단자(1213)를 통해 시프터(1280)에서 왼쪽 순회 시프트와 0확장을 끝낸 포워드 맵 정보가 주어진다. 어떤 포워드원엔트리(1216), 즉 어떤 행에 이 포워드 맵 정보를 등록할지는 포워드 맵 등록/ 출력 제어 단자(1211)를 통해 지시된다. 각각의 포워드 맵 등록 단자(1213)로부터 주어진 2비트의 포워드 맵 정보 기록 회로(12102)에 주어진다. 기록 회로(12102)는 포워드 맵 출력/발행 플래그 입력 단자(1212)로부터 주어진 발행 플래그를 입력으로서 받는다. 상기 발행 플래그의 값이 「-」또는 「rd」이고, 또한 2비트의 포워드 맵 정보의 어느 것인가 또는 양쪽 방향이 값 「1」인 경우는, 포워드 맵 정보의 등록을 하지 않고서, 발행 플래그의 값이 「-」,「rd」이외로 될때까지 스톨한다. 그것 이외인 경우는, 기록 회로(12102)는 인접하는 2개의 비트선(12107)을 2비트의 포워드 맵 정보로 지정되는 각각의 신호치에 구동한다. 또한, 값 「1」이 주어진 포워드 맵 등록/ 출력 제어 단자(1211)에 접속된 워드선 드라이버(12101)에 의해, 신호치 「1」에 구동된 워드선에 세로 메모리셀(12105)이 기록 가능 상태로 되어, 각각의 비트선(12107)의 신호치가 기록된다.
다음에, 오퍼랜드 포워딩 예약 동작에 있어서의 포워드 맵 정보의 판독에 대하여 설명한다. 포워드 맵 등록/ 출력 제어 단자(1211)를 통해, 판독을 행하는 1행분의 메모리셀(12105)이 지정되어, 그 행에 대응하는 워드선(12106)만이 신호치「1」에 구동되어, 그 밖의 행에 대응하는 워드선(12106)은 신호치 「0」에 구동된
다. 신호치 「1」에 구동된 행의 메모리셀(12105)내에 기억된 포워드 맵 정보만이 비트선(12107)을 통해 판독되고 포워드 맵 출력/발행 플래그 입력 단자(1212)를 통해 판독된다.
도 25의 예에서는 워드선(12106)과 비트선(12107)과는 1개씩밖에 나타나지 않지만, 실제의 포워드 맵 버퍼(1210)로서는 이들은 복수 라인 존재한다. 구체적으로는, L명령을 동시에 디코드하여, K명령을 동시에 발행 가능하다고 가정하면, 워드선(12106)과 비트선(12107)은 L과 K중 보다 큰 쪽의 수와 같은 개수가 필요하게된다.
도 26은 명령 발행 제어 장치(1250)내의 포워드 맵 프리펫치 버퍼(1258)의 구성을 나타낸 블럭도이다. 도 26은 도 25와 같고, 1개의 결과치에 관한 포워드 맵 정보의 입력 및 출력, 1개의 발행 명령에 관한 바이패스 맵 정보의 출력에 대하여 블럭 구성을 나타내고 있다. 또한, 상술한 바와 같이, 포워드 맵 정보의 입력은 오퍼랜드 포워딩 예약 동작에서 행하여지고, 포워드 맵 정보의 출력은 오퍼랜드 포워딩 동작에서 행하여지고, 바이패스 맵 정보의 출력은 명령 발행 동작에서 행하여진다.
도 26에 있어서, 포워드 맵 프리펫치 버퍼(1258)는 메모리 셀(12585)을 J행 2N열 나열한 구성으로 하고 있다. J는 동시에 실행 종료 가능한 최대 명령수이다. 행방향이 인접하는 메모리셀(12584)의 2개분이 포워드 비트부(12585)에 대응한다.
또한, 1행분의 메모리셀(12584)이 포워드원엔트리(12586)에 대응한다. 메모리(12584)은 행방향 워드선(125861)과 열방향 워드선(125862)과 행방향 비트선(125871)과 열방향 비트선(125872)에 접속되어 있다. 상기와 같이 본 실시예에 있어서의 포워드 맵 프리펫치 버퍼(1258)는 워드선/비트선이 종횡 어느 쪽에도 통하고, 일반적으로 직교 메모리라고 불리는 구성을 가지고 있다.
우선, 오퍼랜드 포워딩 예약 동작에 있어서의 포워드 맵 정보의 입력에 대하여 설명한다. 포워드 맵 버퍼(1210)로부터 판독된 포워드 맵 정보는 명령 발행 제어 장치(1250)에 있어서 발행 플래그의 조작에 사용된 후, 포워드 맵 입력 단자(125801)에서 포워드 맵 프리펫치 버퍼(1258)에 입력되어, 열방향 비트선(125872)에 주어진다. 어떤 행에 포워드 맵 정보를 등록할지는, 명령 발행 제어 장치(1250)에 의해, 포워드 맵 입출력 제어 단자(125804)로부터 지시되어, 적당한 행방향 워드선(125861)을 구동함에 의해 지정된다.
다음에, 오퍼랜드 포워딩 동작에 있어서의 포워드 맵 정보의 출력 때에는, 포워드 맵 입출력 제어 단자(125804)로부터 적당한 앵방향 워드선(125861)을 구동하여, 이것에 의해 선택된 행의 포위드 맵 정보를 열방향 비트산(125872) 및 포워드 맵 출력 단자(125805)를 통해 출력한다.
명령 발행 동작에 있어서의 바이패스 맵 정보의 출력은 아래와 같이 하여 행하여진다. 어떤 열의 포워드 맵 졍보를 바이패스 맵으로서 출력할지는 명령 발행 제어 장치(1250)에 의해, 바이패스 맵 출력 제어 단자(125802)를 통해 지시된다.
여기에서, 지시되는 열은 명령 등록 버퍼(1200)내에서 발행되는 명령이 격납된 명령 등록 엔트리(1205)와 같은 열이다. 지시된 열의 열방향 워드선(125862)이 선택되어, 그 열의 포워드 맵 정보가 바이패스 맵 정보로서 행방향 비트선(125871), 바이패스 맵 출력 단자(125803)를 통해, 바이패스 맵 출력 단자(1254)에서 출력된다.
도 26의 예로서는 행방향 워드선(125861), 열방향 워드선(125862), 행방향 비트선(125871) 및 열방향 비트선(125872)은 각각 1개씩밖에 나타나고 있지 않지만, 실제의 포워드 맵 프리펫치 버퍼(1258)로서는 이들은 복수 라인 존재한다. 구체적으로는 K 명령을 동시에 발행하여 J명령이 동시에 실행 종료하면, 행방향 워드선(125861)과 열방향 비트선(l25872)이 J개씩, 열방향 워드선(12162)과 행방향 비트선(125871)이 2K개씩 필요하게 된다.
도 27은 바이패스 맵 버퍼(1220)의 구성을 나타낸 블럭도이다. 도 27은 도 26의 예와 같이 1개의 발행 명령에 관한 바이패스 맵 정보의 등록과 1개의 결과치에 관한 바이패스 맵 정보의 출력에 대하여 블럭 구성을 나타내고 있다. 또한, 상술한 바와 같이 바이패스 맵 정보의 등록은 명령 발행 동작에서 행하여지고 바이패스 맵 졍보의 출력은 오퍼랜드 바이퍼싱 동작에서 행하여진다.
도 27에 있어서, 바이패스 맵 버퍼(1220)는 메모리셀(12205)을 J행 K열 나열한 구성으로 하고 있다. J는 동시에 실행 종료 가능한 최대 명령수이고 K는 동시에 발행 가능한 최대 명령수이다. 행방향이 인접하는 메모리셀(12205)의 2개분이 바이패스 비트부(1225)에 대응한다. 또한, 1행분의 메모리셀(12205)이 바이패스원엔트리(1226)에 대응한다. 메모리셀(12205)은 행방향 워드선(12206)과 열방향 워드선(12208)과 행방향 비트선(12209)과 열방향 비트선(12207)에 접속되어 있다.
이와 같이, 본 실시예에 있어서의 바이패수 맵 버퍼(1220)는 워드선/비트선이 종횡 어느 쪽에도 통하여 일반적으로 직교 메모리라고 불리는 구성을 가지고 있다.
우선, 명령 발행 동작에 있어서의 바이패스 맵 정보의 등록에 대하여 설명한다. 포워드 맵 프리펫치 버퍼(1258)로부터 판독된 바이패스 맵 정보는 바이패스 맵 등록 단자(1223)로부터 입력되어 행방향 비트선(12209)에 주어진다. 어떤 열로 바이패스 맵 정보를 등록할지는 발행하는 명령에 따라서 명령 발행 제어 장치(1250)에서 바이패스 맵 등록/출력 제어 장치(1221)를 통해 지정된다. 선택된 열방향 워드선(12208)에 접속된 메모리셀(12205)에 바이패스 맵 정보가 등록된다.
다음에 오퍼랜드 바이퍼싱 동작에 있어서의 바이패스 맵 정보의 출력에 대하여 설명한다. 어떤 행의 바이패스 맵 정보를 출력할지는 생성된 결과치에 따라서, 명령 실행 제어 장치(1260)에서 바이패스 맵 등록/출력 제어 장치(1221)를 통해 지정된다. 선택된 행방향 워드선(12206)에 접속된 메모리셀(12205)의 바이패스 맵 정보가 일방향 비트선(12207)으로부터 독해되고, 바이패스 맵 출력 단자(1222)로부터 출력된다.
도 27의 예로서는 행방향 워드선(12206), 열방향 워드선(12208), 행방향 비트선(12209) 및 열방향 비트선(12207)은 각각 1 개씩밖에 나타나고 있지 않지만, 실제의 바이패스 맵 버퍼(1220)에서는 이들은 복수 라인 존재한다. 구체적으로는 K명령을 동시에 발행하여 J명령이 동시에 실행 종료한다고 하면, 행방향 워드선(12206)과 열방향 비트선(12207)이 J개씩, 열방향 워드선(1220)과 행방향 비트선(12209)이 2K개씩 필요하게 된다.
도 28은, 명령 등록 버퍼(1200)내의 1개의 명령 등록 엔트리(1205)의 구성을 간단화하여 나타낸 블럭도이다. 상기 도면은 명령 등록 버퍼(1200)의 입출력 단자와 명령 코드부(1202), 왼쪽 오퍼랜드부(1203) 및 오른쪽 오퍼랜드부(1204)의 접속관계도 나타내고 있다.
명령 등록 엔트리 지정 단자(1201)는 명령 코드 등록 지정선(12012)을 통하여 명령 코드부(1202)에 접속되고, 왼쪽 오퍼랜드 등록 지정선(12013)을 통하여 왼쪽 오퍼랜드부(1203)에 접속되어, 오른쪽 오퍼랜드 등록 지정선(12014)을 통하여 오른쪽 오퍼랜드브(1204)에 접속되고, 명령 동작 정보 출력 지정선(12011)을 통하여, 명령 코드부(1202), 왼쪽 오퍼랜드부(1203) 및 오른쪽 오퍼랜드부(1204)에 접속되어 있다. 이것들의 선은 각각 명령 코드부(1202), 왼쪽 오퍼랜드부(1203), 오른쪽 오퍼랜드부(1204)의 등록 또는 출력을 제어하는 신호선이다. 명령 코드의 등록 때에는 명령 코드 등록 단자(1206)로부터 주어진 명령 코드가 명령 등록 엔트리 지정 단자(1201)로부터 명령 코드 등록 지정선(12012)을 통해 등록을 지정된 명령 코드부(1202)에 등록된다. 좌우의 입력 오퍼랜드를 등록하는 때에는 레지스터 오퍼랜드 입력 단자(1209) 또는 오퍼랜드 포워드 입력 단자(1208)로부터 주어진 입력 오퍼랜드가 명령 등록 엔트리 지정 단자(1201)로부터, 왼쪽 오퍼랜드 등록 지정선(12013) 또는 오른쪽 오퍼랜드 등록 지정선(12014)을 통해 지정된 왼쪽 오퍼랜드부(1203) 또는 오른쪽 오퍼랜드부(1204), 혹은 그 양쪽에 등록된다. 여기에서, 왼쪽 오퍼랜드부(1203)에 등록되는 경우는 명령 등록 엔트리지정 단자(1201)메 주어지는 신호치는 "10"으로 되고, 오른쪽 오퍼랜드부(1204)에 등록되는 경우는, 명령 등록 엔트리 지정 단자(1201)에 주어지는 신호치는 "01"로 되어, 양쪽에 등록되는 경우는 명령 등록 엔트리 지정 단자(1201)에 주어지는 신호치 "11"로 된다. 명령 동작 정보를 출력하는 경우는 명령 등록 엔트리 지정 단자(1201)로부터, 명령 동작 정보 출력 지정선(12011)을 통해 선택된 명령 등록 엔트리(1205)의 명령 동작 정보를 명령 출력 단자(1207)로부터 출력한다.
오퍼랜드 퍼워딩 동작을 행하는 때는 명령 등록 엔트리 지정 단자(1201)로 부터는 2비트의 포워드 맵 정보가 입력된다. 상기 2비트의 포워드 맵 정보를 그대로 1비트씩 왼쪽 오퍼랜드 등록 지졍선(12013)과 오른쪽 오퍼랜드 등록 지정선(12014)에 주기만 해도, 상술한 바와 같은 왼쪽 오퍼랜드부(1203) 및 오른쪽 오퍼랜드부(1204)의 선택을 실현할 수 있다. 이 때문에, 오퍼랜드 포워딩 동작에 의해 입력 오퍼랜드를 등록하는 때에는, 명령 코드를 등록하는 경우와 달리, 1개의 입력 오퍼랜드를 임의 개수의 왼쪽 오퍼랜드부(1203) 및 오른쪽 오퍼랜드부(1204)에 등록하는 것이 가능하다.
도 29는 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치(12)의 다른 구성예를 나타낸 블럭도이다. 도 29에서는 도 6의 실시예와 비교하여, 명령 실행 제어 장치(1260)가 결과치 등록 엔트리 지정 단자(1265)를 구비하고 있고 상기 단자에 의해 레지스터 파일 판독 데이터 단자와 접속되어 있는 점과 결과치 등록 버퍼(1230)가 결과치 가출력 단자(1238)를 구비하고 있고 상기 단자에 의해 레지스터 오퍼랜드 입력 단자(1209)와 접속되어 있는 점이 다르다.
도 29의 복수 명령 병렬 발행/실행 관리 장치(12)는 어떤 명령이 입력 오퍼랜드로서 지정한 레지스터(135)에 기록되어야 하는 결과치가 아직 결과치 등록 버퍼(1230)내에 존재하고 있는 경우의 동작이 도 6의 복수 명령 병렬 발행/실행 관리 장치(12)와 다르다. 이러한 경우, 도 6의 복수 명령 병렬 발행/실행 관리 장치(12)에서는 해당 결과치가 레지스터(135)에 기록될 때까지, 해당 명령의 오퍼랜드 등록 동작을 스톨하고 있었다.
이것에 대하여, 도 29의 복수 명령 병렬 발행/실헹 관리 장치(12)에서는 이러한 경우, 레지스터 파일 판독 데이터 단자(124)를 통해 레지스터 파일 장치(13)로부터 해당 결과치를 가지는 결과치 등록 엔트리(1235)의 번호를 받아, 상기 번호를 결과치 등록 엔트리 지정 단자(1265)로부터 명령 실행 제어 장치(1260)에 입력한다. 명령 실행 제어 장치(1260)는 결과치 등록 버퍼(1230)의 해당 결과치 등록 엔트리(1235)로부터 결과치의 판독을 지시하여, 결과치 가출력 단자(1238)로부터 독해된 결과치가 레지스터 오퍼랜드 입력 단자(1209)로부터 명령 등록 버퍼(1200)에 등록된다.
도 6 및 도 29의 복수 명령 병렬 발행/실행 관리 장치(12)는 명령 동작 정보 관리 엔트리를 순회적으로 사용하는 것을 특징으로 한다. 이것은 순회형의 FIFO(First In First Out) 버퍼의 구성을 사용하는 것으로 실현되어 있다. 이것에 대하여 별도의 실시예로서 시프트형의 FIFO 버퍼의 구성으로 복수 명령 병렬 발행/실행 관리 장치(12)를 실현하는 실시예도 생각된다. 이러한 구성에서는 어떤 명령의 실행이 확정하여 그 명령의 명령 조작 정보가 제거되는 즉시, 빈 명령 동작 정보 관리 엔트리(1290)에 그 다음 명령의 명령 동작 정보 관리 엔트리(1290)의 기억 내용을 시프트한다. 이러한 실시예를 취한 경우, 시프터(1280)는 필요가 없어진다. 대신에 명령 등록 버퍼(1200) 및 명령 발행 제어 장치(1250)는 행방향의 오른쪽 시프트 기구를 구비하여, 포워드 맵 버퍼(1210)는 오른쪽 경사 아래 대각선 방향의 시프트 기구를 구비하여, 결과치 등록 버퍼(1230)는 열방향의 아래 시프트 기구를 구비하는 것이 필요하게 된다.
이상 설명한 본 실시예의 마이크로 프로세서를 구성하는 복수 명령 병렬 발행/실행 관리 장치에서는 명령내에 미리 포워드 맵 정보를 인코드하여 유지해 두고, 상기 포워드 맵 정보를 명령 디코드 후 포워드 맵 버퍼에 등록하여, 명령의 실행에 의해 결과치가 생성되기 직전에 포워드 맵 버퍼로부터 포워드 맵 정보를 판독하는 것에 의해, 결과치와 입력 오퍼랜드 사이의 의존 관계를 특정한다. 이와 같이, 결과치와 입력 오퍼랜드 사이의 의존 관계가 정적으로 미리 주어지고 있기 때문에, 종래 기술과 같이 대량의 비교기와 그 병렬 동작을 필요로 하지 않는다.
복수 명령 병렬 발행/실행 관리 장치를 구성하는 포워드 맵 버퍼는 상술한 바와 같이, 규칙적인 메모리셀 어레이 구조를 구비한다. 그리고, 어떤 결과치에 대응하는 포워드 맵 정보를 1개의 워드선에 접속된 1행분의 정보로서 유지함에 의하여, 포워드 맵 정보의 등록 및 판독을 통상의 메모리 장치에서의 기록과 판독 동작에 의해 간단하게 실현할 수 있다. 따라서, 1개 1개의 메모리셀에 다수의 비교기를 부가함에 의해 구성되는 종래 기술의 복수 명령 병렬 발행/실행 관리 장치의 미발행 명령 엔트리, 실행 후 명령 엔트리와 비교하여 복잡성, 회로 규모, 소비 전력등을 삭감할 수 있다.
종래 기술에 의한 복수 명령 병렬 발행/실행 관리 장치는 결과치와 입력 오퍼랜드 사이의 의존성 검출 및 결과치의 입력 오퍼랜드의 포워딩을 리엑티브(reactive)에 행하고 있다. 여기에서 리엑티브란, 입력 오퍼랜드측이 필요한 결과치가 생성되는 것을 기다리고 있고, 또한 생성된 시점에서 자기의 값으로서 받아들이는 방법을 취하고 있는 점을 가리킨다. 이러한 방법에서는, 상술한 바와 같이 비교기를 사용하여 레지스터 번호라든지 명령 태그의 비교를 할 필요가 생긴다.
이것에 대하여, 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치는 결과치와 입력 오퍼랜드 사이의 의존성 검출 및 결과치의 입력 오퍼랜드에 포워딩을 액티브(active)에 행하고 있다. 여기에서 액티브란, 결과치측이 자기를 필요로 하는 입력 오퍼랜드의 존재를 인식하고 있고, 그 정보에 따라서, 결과치가 생성된 시점에서 압력 오퍼랜드측에 결과치를 보내는 방법을 취하고 있는 점을 가리킨다. 이러한 방법에서는 상술한 바와 같이, 비교기를 사용한 명령 태그의 비교를 하는 필요성이 생기지 않는다.
또한, 레지스터 파일 장치의 동시 병행 다중 액세스는 대량의 비교기의 병렬동작과 더불어, 종래 기술의 슈퍼 스칼라 기술에 의해 복수의 명령을 병렬로 발행하여 실행할 때의 보틀넥으로 되어 있지만, 본 실시예에 의한 복수 명령 병렬 발행/실행 관리 장치는 상술의 오퍼랜드 포워딩 동작을 사용하여 직접적으로 결과치를 입력 오퍼랜드에 주는 것에 의해, 레지스터 파일 장치에 결과치의 기록과 레지스터 파일 장치로부터의 입력 오퍼랜드의 판독에 있어서의 레지스터 파일 장치 액세스 회수를 감소시키고 있다.
또한 본 실시예에 사용하는 포워드 맵 정보는 종래의 마이크로 프로세서의 명령 세트 아키텍처를 사용한 프로그램 코드로부터 오브젝트 변환등의 수법을 사용하여 간단히 생성할 수 있다. 이것은 결과치가 어떤 레지스터에 기록될지, 입력 오퍼랜드가 어떤 레지스터를 지정하고 있을지가 프로그램 코드중에 정적으로 명시되어 있기 때문에, 이것들의 정보를 해석하는 것으로 결과치와 입력 오퍼랜드 사이의 의존 관계를 정적으로 인식하는 것이 가능하기 때문이다. 또한, 같은 이유에 의해 고급 언어 프로그램으로부터의 컴파일도 문제없이 실행할 수 있다.
또한, 본 실시예에 사용하는 포워드 맵 정보는 어떤 명령의 결과치에 대하여, 그 명령의 후속의 부근 또는 전후의 부근 범위내에 위치하는 명령의 입력 오퍼랜드에 대한 의존 관계를 나타내고 있고, 그 범위내이면 임의 개수의 입력 오퍼랜드에 대한 의존 관계를 나타낼 수 있다. 프로세서가 처리하는 프로그램 코드에 있어서는, 1개의 명령의 결과치를 그 부근의 많은 명령이 입력 오퍼랜드로서 사용하는 패턴이 많이 발생하기 때문에, 이와 같은 포워드 맵 정보에 의해 유효한 복수 명령 병렬 발행/실행 관리 장치를 실현할 수 있다.
이상 바람직한 실시예를 들어 본 발명을 설명하였지만, 본 발명은 반드시 상기 실시예에 한정되지 않는다.
예를 들면 본 실시예의 복수 명령 병렬 발행/실행 관리 장치에 이하와 같은 점에서 변경을 첨가하는 것으로, 별도의 실시예를 춰하는 것도 가능하다. 예를 들면, 1개로 합쳐지고 있는 명령 발행 버퍼를 복수 대기, 발행하는 명령의 종류에 의해, 어떤 명령 발행 버퍼로부터 명령을 발행하는지를 구별한다.
또한, 발행 가능하다고 판단된 명령만이 명령 등록 비퍼로부터 명령 발행 버퍼로 전송되어 있는 것을 개선하여, 명령 발행 버퍼상에서 발행 가능성의 검사를 행한다. 상기의 경우, 발행 플래그부는 명령 발행 제어 장치로부터 명령 발행 버퍼로 옮겨진다.
또한, 지금까지의 실시예에서든 부동소수점 연산 장치를 포함하는 경우에 관하여는 설명하고 있지 않지만, 연산 장치가 부동소수점 연산 장치로 되는 것만 이기 때문에, 본 실시예를 그대로 사용할 수 있다.
또한, 포워드 맵 버퍼, 포워드 맵 프리펫치 버퍼 및 바이패스 맵 버퍼는 각각의 비트선을 1개의 신호선으로 구성하고 있지만, 실제로는 상보형의 신호선대를 가지는 비트선으로 하는 것도 가능하다.
상술한 바와 같이, 본 발명의 복수 명령 병렬 발행/실행 관리 장치를 사용한 프로세서에 의하면, 복수 명령 병렬/발행 실행 관리 장치에서 포워드 맵 버퍼를 구비하여, 결과치와 입력 오퍼랜드 사이의 의존 관계를 포워드 맵 정보로서 명령중에 정적으로 지정하여, 이것을 포워드 맵 버퍼내에 유지함에 의해, 비교기를 사용하지 않고서 결과치의 입력 오퍼랜드로의 포워딩을 실현할 수 있다. 또한, 메모리셀의 기록 동작 또는 판독 동작만으로 모든 복수 명령 병렬 발행/실행 관리에 필요한 동작을 실현하고 있기 때문에, 다수의 비교기와 그 대조 동작을 위한 제어 회로를 필요로 하지 않는다. 이 때문에, 복수 명령 병렬 발행/실행 관리 장치 및 프로세서의 회로 구성을 간단히 하여, 회로 규모를 축소할 수 있다고 하는 효과가 있다.
또한, 본 발명에 의하면 지정된 행방향 또는 열방향의 워드선에 접속되는 메모리 셀만이 부분적으로 활성화되기 때문에, 병렬 대조 동작을 위해 모든 비교기가 동시 병렬로 동작하고 있는 종래 기술의 동 장치와 비교하여 소비 전력의 삭감을 도모할 수 있다고 하는 효과가 있다.
또한, 본 발명에 의하면, 오퍼랜드 포워딩 동작에 의해 결과치를 입력 오퍼랜드로서 줄 수 있는 경우, 그 결과치를 레지스터 파일 장치에 기록하지 않는다. 따라서, 레지스터 파일 장치에 의 판독/기록 액세스 회수를 감소시킬 수 있고, 종래 기술의 프로세서에 있어서 문제로 되어 있던, 병렬로 실행하는 명령의 수를 증가시킴과 동시에, 레지스터 파일 장치의 동시 판독/기록 액세스 회수가 증대함에 의하고, 레지스터 파일 장치가 복잡화하는 것을 회피할 수 있다고 하는 효과가 있다.

Claims (13)

  1. 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼스칼라형의 프로세서에 탑재되며, 소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는지를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼를 구비하고, 상기 포워드 맵 버퍼가, 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에, 해당 결과지에 대한 상기 포워드 맵 정보를 미리 격납하고, 상기 명령에 대한 결과치가 실제로 생성된 때에, 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하고, 상기 포워드 맵 정보를 지정하는 필드를 갖는 명령은 복수의 입력 오퍼랜드중 소정의 입력 오퍼랜드를 특징하는 상대 입력 오퍼랜드 번호를 설정하여 해당 상대 인력 오퍼랜드 번호에 근거하여 상기 명령의 결과 치를 사용하는 입력 오퍼랜드를 지정하는 것을 특징으로 하는 복수 명령 병렬 발행 /실행 관리 장치.
  2. 제 1항에 있어서, 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정하는 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령의 다음 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령에 후속하는 다른 명령에 대한 입력 오퍼랜드의 상대 입력 오퍼랜드 번호를 정하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  3. 제 1항에 있어서, 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정하는 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령보다도 전빙에 위치하는 다른 명령으로 기점으로서, 해당 기점이 되는 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해 상기 명령의 부근에 위치하는 다른 명령에 대한 입력 오퍼랜드의 상대 입력 오퍼랜드 번호를 정하는 것을 특징으르 복수 명령 병렬 발행/실행 관리 장치.
  4. 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되며, 소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는가를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 버퍼를 구비하고, 상기 포워드 맵 버퍼가, 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에, 해당 결과치에 대한 상기 포워드 맵 정보를 미리 격납하고, 상기 명령에 대힌 결과치가 실제로 생성되었을 때에, 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여, 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하며 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령이, 복수의 입력 오퍼랜드중 소정의 입력 오퍼랜드를 특정하는 상대 명령 번호 및 입력 오퍼랜드 지정 정보를 설정하여, 해당 상대 명령 번호 및 입력 오퍼랜드 지정 정보에 근거하여 상기 명령의 결과치를 사용하는 입력 오퍼랜드를 지정하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  5. 제 4 항에 있어서, 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정하는 때에 정적으로 정해지는 명령 어드레스 순서에 따라서, 상기 명령의 다음 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해, 상기 명령에 후속하는 다른 명령의 상기 상대 명령 번호를 정하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  6. 제4항에 있어서, 소정의 상기 명령에 대한 상기 포워드 맵 정보를 정하는 때에, 정적으로 정해지는 명령 어드레스 순서에 따라서 상기 명령보다도 전방에 위치하는 다른 명령을 기점으로서 해당 기점이 되는 명령에 대한 입력 오퍼랜드로부터 순서대로 입력 오퍼랜드를 세는 것에 의해 상기 명령의 부근에 위지하는 다른 명령의 상기 상대 명령 번호를 정하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  7. 제 1 항 또는 제 4 항에 있어서, 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령이, 연산 명령 또는 메모리 액세스 명령으로서, 연산의 종류를 지정하는 명령 코드와 결과치를 기입하는 레지스터 및 입력 오퍼랜드를 독해하는 레지스터의 지정을 하는 필드와 상기 포워드 맵 정보를 지정하는 필드를 구비하고, 결과치를 기록하는 레지스터 및 입력 오퍼랜드를 독해하는 레지스터의 지정이 필요하지 않은 경우에, 이들을 지정하는 상기 필드에 상기 포워드 맵 정보를 격납함에 의해, 고정 길이의 명령 포맷으로 하거나 또는, 이들을 지정하는 상기 필드를 삭제함에 의해 가변 길이의 명령 포맷으로 하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  8. 제 1 항 또는 제 4 항에 있어서, 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령으로서, 상기 연산 명령 또는 상기 메모리 액세스 명령의 멍령 포맷을 상기 명령 코드와 상기 포워드 맵 정보를 지정하는 필드로 구성하고 상기 포워드 맵 정보를 지정하는 필드를 가지는 명령으로서 레지스터 액세스 명령의 명령 포맷을 상기 명령 코드와 상기 포워드 맵 정보와 기록 또는 판독을 하는 상기 레지스터를 지정하는 필드로 구성하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  9. 복수의 명령을 동적 또한 병렬로 발행하여, 병렬로 실행하는 슈퍼 스칼라형의 프로세서에 탑재되며, 소정의 명령 실행 종료에 의해 생성되는 결과치를 다른 어느 쪽의 명령이 입력 오퍼랜드로서 사용하는가를 나타내는 포워드 맵 정보를 격납하는 포워드 맵 정보를 구비하고, 상기 포워드 맵 버퍼가 포워드 맵 정보를 지정하는 필드를 가지는 소정의 명령에 대한 결과치가 실제로 생성되기 전에 해당 결과치에 대한 상기 포워드 맵 정보를 미리 격납하여, 상기 명령에 대한 결과치가 실제로 생성되었을 때에, 미리 격납된 상기 결과치에 대한 상기 포워드 맵 정보를 사용하여, 상기 결과치를 사용하는 상기 입력 오퍼랜드를 특정하고, 소정 개수 T개의 결과치와 소정 개수 S개의 입력 오퍼랜드에 관계하는 상기 포워드 맵 정보를, 1비트의 포워드 피트 정보를 T행 S열의 2차원 행렬 형상으로 나열한 T×S비트의 정보로서 구성하며, 상기 T행 S열의 포워드 맵 정보중의 t행 s열째의 포워드 비트 정보에 특정한 값을 설정함에 의해 상기 T개의 결과치중의 t번째의 결과치를 상기 S개의 입력 오퍼랜드중의 s번째의 입력 오퍼랜드로서 사용하는지 어떤지를 설정하고, 임의의 명령에 대하여, 해당 명령을 디코드하였을 때에 해당 명령의 포워드 맵 정보에 대하여 시프트 처리와 0확장 처리를 첨가하여, 그 결과 얻어지는 S비트의 포워드 맵 정보를 상기 포워드 맵 버퍼의 1행분의 포워드 맵 정보로서 상기 포워드 맵 버퍼에 격납하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  10. 제 9 항에 있어서, 디코드 종료의 명령과 해당 복수의 디코드 종료의 상기 명령이 사용하는 입력 오퍼랜드를 등록하는 명령 등록 엔트리를 T개 가지는 명령 등록 버퍼를 또한 구비하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  11. 제 10 항에 있어서, 임의의 명령에 대하여 해당 명령의 결과치가 생성되고, 해당 결과치가 p번째인 경우에, 상기 포워드 맵 버퍼로부더 p행 째의 상기 포워드 맵 정보를 판독, Q개의 상기 포워드 비트 정보의 각각과 값에 근거하여, 해당 결과치를 사용하는 입력 오퍼랜드를 특정하고, 상기 명령의 결과치가 생성되었을 때에, 상기 포워드 맵 버퍼에 격납된 상기 포워드 맵 정보를 판독하는 것에 의해, 상기 명령의 결과치를 입력 오퍼랜드로서 사용하는 명령을 특정하고, 상기 특정된 명령이 상기 명령 등록 버퍼내의 상기 밍령 등록 엔트리에 등록되어 있는 경우에, 상기 결과치를 상기 명령 등록 엔트리에 입력 오퍼랜드로서 등록하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  12. 제 11 항에 있어서, 상기 포워드 맵 버퍼를 구성하는 S개 열의 각각에 대하여, 상기 명령 등록 버퍼내에 등록 가능한 S개의 입력 오퍼랜드를 1대 1에 대응시켜, 상기 포워드 맵 버퍼로부터 S비트의 상기 포워드 맵 정보가 판독된 때에, 각각의 포워드 비트로 설정된 값에 의해, 상기 명령 등록 버퍼내에 등록된 모든 입력 오퍼랜드에 대하여, 결과치를 입력 오퍼랜드로서 등록하는지 아닌지를 판정하고, 등록한다고 판정된 복수의 입력 버퍼내의 복수의 입력 오퍼랜드에 대하여, 결과치를 상기 명령 등록 버퍼내의 복수의 입력 오퍼랜드에 대응하는 상기 명령 등록 엔트리에 동시 병렬적으로 일괄해서 기록하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
  13. 제12항에 있어서, 상기 명령 등록 버퍼내의 상기 명령 등록 엔트리에 결과치를 기록하는 것에 의해, 소정의 명령 결과치를 다른 명령의 입력 오퍼랜드로 하는 것을 특징으로 하는 복수 명령 병렬 발행/실행 관리 장치.
KR1019970044600A 1996-08-30 1997-08-30 복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system) KR100275608B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8249163A JP2933026B2 (ja) 1996-08-30 1996-08-30 複数命令並列発行/実行管理装置
JP96-249163 1996-08-30

Publications (2)

Publication Number Publication Date
KR19980019198A KR19980019198A (ko) 1998-06-05
KR100275608B1 true KR100275608B1 (ko) 2000-12-15

Family

ID=17188849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970044600A KR100275608B1 (ko) 1996-08-30 1997-08-30 복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system)

Country Status (4)

Country Link
US (1) US5958043A (ko)
JP (1) JP2933026B2 (ko)
KR (1) KR100275608B1 (ko)
GB (1) GB2317724B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6212626B1 (en) 1996-11-13 2001-04-03 Intel Corporation Computer processor having a checker
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US6418478B1 (en) * 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
GB0002848D0 (en) * 2000-02-08 2000-03-29 Siroyan Limited Communicating instruction results in processors and compiling methods for processors
GB0215028D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Microarchitecture description
US20070198812A1 (en) * 2005-09-27 2007-08-23 Ibm Corporation Method and apparatus for issuing instructions from an issue queue including a main issue queue array and an auxiliary issue queue array in an information handling system
US7350056B2 (en) * 2005-09-27 2008-03-25 International Business Machines Corporation Method and apparatus for issuing instructions from an issue queue in an information handling system
JP4809497B2 (ja) * 2010-02-25 2011-11-09 ファナック株式会社 複数の独立したシーケンスプログラムを並列実行するプログラマブルコントローラ
US9135014B2 (en) * 2012-02-15 2015-09-15 Freescale Semiconductor, Inc Data processing system with latency tolerance execution
US9442730B2 (en) * 2013-07-31 2016-09-13 Apple Inc. Instruction source specification
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
US9886418B2 (en) * 2015-04-28 2018-02-06 Intel Corporation Matrix operands for linear algebra operations
US9886377B2 (en) * 2015-10-05 2018-02-06 Intel Corporation Pipelined convolutional operations for processing clusters
US10552156B2 (en) * 2017-04-26 2020-02-04 Arm Limited Processing operation issue control

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
US5802386A (en) * 1996-11-19 1998-09-01 International Business Machines Corporation Latency-based scheduling of instructions in a superscalar processor

Also Published As

Publication number Publication date
GB2317724A (en) 1998-04-01
JP2933026B2 (ja) 1999-08-09
JPH1078871A (ja) 1998-03-24
GB9718521D0 (en) 1997-11-05
US5958043A (en) 1999-09-28
KR19980019198A (ko) 1998-06-05
GB2317724B (en) 2001-01-31

Similar Documents

Publication Publication Date Title
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US6029240A (en) Method for processing instructions for parallel execution including storing instruction sequences along with compounding information in cache
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
KR100275608B1 (ko) 복수 명령 병렬 발행/실행 관리 장치(Multiple Instruction parallel issue/execution management system)
US5511172A (en) Speculative execution processor
US5564056A (en) Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
US5881307A (en) Deferred store data read with simple anti-dependency pipeline inter-lock control in superscalar processor
CN113535423A (zh) 具有在预置未来时间执行指令的流水线控制的微处理器
US20120060015A1 (en) Vector Loads with Multiple Vector Elements from a Same Cache Line in a Scattered Load Operation
JPH04229326A (ja) スカラ命令の並列実行を得る方法およびシステム
US5604878A (en) Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path
KR19980069854A (ko) 슈퍼스칼라 프로세서에서 간단한 비의존성 파이프라인 인터록 제어로서 판독되는 지연된 저장 데이타
CN108287730A (zh) 一种处理器流水线结构
US10437594B2 (en) Apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
US5872947A (en) Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JP2933027B2 (ja) 複数命令並列発行/実行管理装置
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US20020116599A1 (en) Data processing apparatus
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US20080222392A1 (en) Method and arrangements for pipeline processing of instructions
US6704857B2 (en) Methods and apparatus for loading a very long instruction word memory
KR100241970B1 (ko) 파이프라인 처리를 수행하는 데이터 처리 장치

Legal Events

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

Payment date: 20120907

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130903

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee