KR100242617B1 - 파이프 라인 컴퓨터 시스템 - Google Patents

파이프 라인 컴퓨터 시스템 Download PDF

Info

Publication number
KR100242617B1
KR100242617B1 KR1019910015485A KR910015485A KR100242617B1 KR 100242617 B1 KR100242617 B1 KR 100242617B1 KR 1019910015485 A KR1019910015485 A KR 1019910015485A KR 910015485 A KR910015485 A KR 910015485A KR 100242617 B1 KR100242617 B1 KR 100242617B1
Authority
KR
South Korea
Prior art keywords
branch
condition
computer system
jump
pipeline
Prior art date
Application number
KR1019910015485A
Other languages
English (en)
Other versions
KR920006845A (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 KR920006845A publication Critical patent/KR920006845A/ko
Application granted granted Critical
Publication of KR100242617B1 publication Critical patent/KR100242617B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3842Speculative instruction execution

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)
  • Multi Processors (AREA)

Abstract

다수의 산술 및 로직 유닛(ALUS)를 가지는 병렬 및 파이프 라인 컴퓨터 처리기는 컴퓨터 동작 속도에 대해 병렬로 컴퓨터 동작을 처리한다. 브랜치 지연 주기동안 조건 점프 동작에 따라 이슈된 동작은 브랜치 제어 유닛에 의해 발생된 통로 정보에 대한 동작시 필드 매칭으로, 명령 이슈 파이프 라인을 통해 실행되지 않는 조건 점프 동작의 조건 평가 결과의 상태이다. 동작은 계속 허용되고 진행되며 연속이 아닌 동작의 실행은 디스에이블된다. 이는 다수의 병렬 기능 유닛을 가지는 VLIW 처리기에 대해 유도되는 조건 브랜치후에 룩-어헤이드 계산을 허용하며 브랜치 지연 주기에서 실행되는 유용한 작업을 허용한다. 임의로, 상기 컴퓨터의 프로그래머 가시 상태를 실해하는 동작은, 메모리 기억 동작, 프로그램 흐름 제어 동작 및 예외 조건을 유발하는 동작의 상태이다. 상기 매칭 알고리즘은 동작이 단일 통로 또는 통로의 임의 셋에서 가능해지는 방법으로 실행된다.

Description

파이프 라인 컴퓨터 시스템
제1도는 본 발명의 조건 브랜칭 기술이 사용된 매우 긴 워드 처리기와 같은 고 병렬 컴퓨터 처리기의 일반적인 블럭 다이어그램.
제2도는 제1도의 처리기에 적절한 일반적인 매우 긴 명령 워드 포맷을 도시하며, 점프 제어 필드가 4-웨이 브랜치 용량을 가진 머신에 대해 멀티플 점프 제어 서브필드로 어떻게 재구성되는가를 보여주며, 브랜치 제어 유닛의 동작을 위해 통로 표시 필드의 존재를 보여주는 도면.
제3도는 제1도 처리기에 적절한 일반적인 매우 긴 명령 워드 부분 포맷을 도시하며, 산술 및 로직 제어 필드가 통로 표시 필드를 보여주기 위해 어떻게 재구성되는가를 도시하는 도면.
제4도는 제1도 처리기에 적절한 일반적인 매우 긴 명령 워드 부분 포맷을 도시하며, 메모리 제어 필드가 통로 표시 필드를 보여주기 위해 어떻게 재구성 되는가를 도시하는 도면.
제5도는 제1도의 병렬 처리기에 사용하기 위해 본 발명에 따른 브랜치 제어 유닛의 도시도.
제6도는 본 발명에 따른 고 병렬 처리기 메모리에 대한 억세스 상태로 통로 표시 필드를 사용하는 메모리 인터페이스 제어 회로의 도시도.
제7도는 본 발명에 따른 고 병렬 처리기 메모리에 대한 억세스 상태로 통로 셋 필드를 사용하는 메모리 인터페이스 제어 회로의 도시도.
〈도면의 주요부분에 대한 부호의 설명〉
15 : 제어 유닛 21 : 명령 레지스터
30-36 : 필드 63 : 인코더
67 : 카운터
본 발명은 머신 싸이클에서 적어도 하나의 브랜칭 동작과 적어도 하나의 난 브랜칭 동작 초기화를 위해 구성되고, 적어도 하나의 머신 싸이클의 브랜치 지연을 표시하는 파이프 라인 시스템과 같은 컴퓨터에 관한 것이다.
많은 비-수(non-numeric) 프로그램에 존재하는 대응은 프로그램의 상당히 작은 부분에 대해 제한되거나, 상당히 로칼하게 된다. 다른말로 하면 병렬 처리 장치는, 상당히 큰 범위의 프로그램을 핸들링할때 가장 양호해지며, 복잡한 그레인 대동이 충분한 길이의 처리 단계 이상으로 연장되므로서, 많은 과학적 문제와 통신 처리에서 알수 있다. 이 이유로, 병렬 처리 구조는 많은 비-수 또는 알고리즘 프로그램의 실행 속도에 대해 덜 적당함이 증명되어 왔다.
매우 긴 명령 워드(VLIW)로 불리는 하나의 고-병렬 컴퓨터 구조는 원래의 고 레벨 언어 프로그램으로 현대의 고유 파인-그레인 대등을 설명하기 위해 1983년 6월 Proceeding of the 10th Annual Symposium on Computer Architecture의 J.A.Fisher 에 의해 "매우 긴 명령 워드 구조 및 ELI-512"에서 제안 되어왔다. VLIW 머신은 매우 긴 명령 워드(100 이상의 비트)에 의해 싸이클 바이 싸이클 바이어스상에서 제어된 멀티플 독립 기능 유닛으로 구성된다. 모든 기능 유닛은 임의의 파이프 라인이 되며, 즉, 매 싸이클당 새로운 동작을 시작하며 동작을 완성하기 위해 고정된 싸이클 넘버를 수행하며 완성을 위한 다수의 싸이클은 하나의 기능 유닛에서 다른 유닛까지 변화한다. 모든 유닛의 파이프 라인 스테이지는 로크 단계에서 동작하며 단일-구형 클럭에 의해 제어된다. 상기 VLIW 명령은 다수의 서브필드 동작의 연쇄이며, 각각의 기능 유닛에 대해 하나가 제어된다.
모든 기능 유닛은 그들의 오퍼랜드를 수행하고 그들의 결과를 기록하는 공유된 멀티포트 레지스터에 접속된다. 어떤 이전에 계산된 결과는 그러므로 어떤 기능 유닛에 대한 오퍼랜드로서 사용된다. VLIW 명령은 매 싸이클당 로드된다. 각각의 기능 유닛은 멀티포트 레지스터 파일에서 소스 및 목적지 위치를 확인하는 그 자신의 제어 필드에 의한 싸이클 동안 제어되며 동작이 시작된다. 일반적인 구조는 다수의 산술 및 로직 유닛, 다수의 메모리 인터페이스 유닛 및 브랜칭 제어 유닛을 포함한다. 이들 형태의 기능 유닛중 3 개는 모든 동작 속도를 최소화 하기 위함이다. 임의 형태의 기능유닛이 제공되며, 따라서, 특별한 응용을 위해 요구된 기능에 의존한다. 배럴 시프트, 멀티플라이어, 및 다른 기능 유닛은 그들이 매머신 싸이클당 초기화 되는 동작을 허용하는 파이프 라인 구성을 가지고 포함된다. VLIW 머신에서 "동작"은 상기 VLIW 명령의 대응 필드 제어하에 단일 기능 유닛에 의해 수행된 원초적인 동작이다. 따라서 VLIW "명령"은 병렬 구조로 기능 유닛 모두의 동작을 제어하기 위한 다수의 동작 필드의 연쇄이다. VLIW 머신과 같은 고 병렬 머신 프로그램을 효과적으로 하기 위해, 트레이스 계획으로 불리는 컴파일러 기술이 1987년 Proceeding of ASPLOS, 의 "트레이스 계획 컴파일러용 ALIW 구조"에서 R.P. Colwell 등에 의한 생각으로서 사용되어 왔다. 트레이스 계획 컴파일러는 프로그램의 명령 입력으로서 프로그램에서 각각 다른 통로 실행의 인접을 표시하는 실행 프로필로서 실행된다. 상기 트레이스 계획 컴파일러는 실행될 비슷한 명령 통로의 "트레이스"를 구성하기 위해 이들 입력을 사용한다. 이들 트레이스는 그때, 가능한 많이 병렬을 실행하기 위해 계획되며, VLIW 머신에서 이용할 수 있는 모든 산술 및 제어 유닛을 사용한다.
고 수행 파이프 라인 처리기에 대해서는, VLIW 머신을 포함하며 소위 "브랜치 지연"에 대한 솔루션이 요구된다. 시스템이 점진적 파이프 라인에 의해 빠르게 만들어지는 것처럼, 명령 메모리 잠복이 증가한다. 이 잠복은 명령 메모리에 대한 명령 어드레스 전송과 실행용 명령 메모리로부터의 명령 수신 사이에서, 머신 싸이클에서는 시간이다. 조건 점프 동작에 대해서, 브랜칭 조건을 평가하기 위해 요구된 시간은 이 잠복 시간에 가산되어야만 한다. 상기 전체 시간은 "브랜치 지연"으로 불린다. 상기 브랜치 지연은 명령 실행이 점프 동작 출력에 의해 실행되지 않는 동안 점프 동작에 따라 다수의 머신 싸이클을 표시한다. 고속 파이프 라인 구조에서, 상기는 명령 실행을 계속하기전에 단순히 대기하는 것은 매우 바람직한 일이다.
브랜치 지연 문제에 대한 하나의 솔루션은 1986년 우바나-챔피건에서의 일리노이 유니버시트, P. Y-T HSU, 티시스에 의해 "고 콘커런트 스케일러 처리"에서 제안된다. 그의 솔루션은 브랜치지연 주기동안, 병령(기능 유닛의 제한 넘버에 의해 허용된)로 모든 가능한 프로그램 통로를 실행하며, 보레인 식에 의해 "가드" 각각 동작에 대해 실행된다. 단지 보레인식을 만족하는 동작은 VLIW 머신 상태 실행을 위해 허용된다. 그러한 보레인 식은 의도된 프로그램 통로상의 이들 동작이 실행되는 것을 보증하는 방법으로 컴파일러에 의해 구성된다. 하드웨어로 정상을 평가하기 위해 각각의 기능 유닛에 설치된 목적은 고정된 계수넘버, 예로 3 을 가진 보레인 식을 형성한다. 이는형성의 식평가를 허용하며, 여기서 계수 a, b 및 c는 3 개의 다른 점프 조건 평가의 결과이다. 그러한 식을 평가하기 위한 하드웨어는 상당히 단순하다. 그러므로 각각의 기능 유닛에 대한 모든 계수를 억세스하는 것이 필요한 판독 포트를 가진 멀티포트 레지스터 파일을 연장하는 비용은 비싸다.
따라서, 이 문제는 충분한 브랜치 지연의 존재시, VLIW 구조와 같은, 고 파이프 라인 컴퓨터 처리기 구조를 최소로 하기 위함이다. 특히, 브랜치 지연 문제에 대한 보레인 가드식 솔루션의 종래의 주된 문제는 큰 멀티포트 레지스터 파일의 비싼 비용이다.
본 발명에 따르면, 위에서 상술된 문제는 이슈된 모든 브랜치 조건 평가 결과를 표시하여 인코드된 브랜치 제어 유닛을 컴퓨터 중앙 처리기에 내장함으로서 극복될 수 있다. 이 인코드된 표시는 "통로 정보"로 불리며 처리기내의 모든 기능 유닛에 대해 분포되며, 브랜치 제어 유닛 그 자체를 포함한다. 상기 통로 정보는 동작 실행을 인에이블 또는 디스에이블 하기 위해 각각 선택된 동작과 관련하여 통로식 필드에 대하여 매치된다. 이 통로식 필드를 적당히 사용하여, 프로그래머 또는 컴파일러는 정정 프로그램 통로상의 동작이 머신 상태를 실행하는 것을 보증하게 된다. 따라서 유용한 동작은 조건 브랜치의 브랜치 지연 간격에 위치되며, 정정 프로그램을, 보증하며, 따라서 이들 동작은 실행되는 처리 허용은 하면서 상기 조건과 매치된다.
본 발명의 하나의 양상에 따르면, 이들 동작은 통로식 필드를 가지고 머신의 프로그래머 가시 상태에 대해 변화를 발생한다. 그러한 동작은 여러가지(VLIW 머신내의 멀티포트 레지스터 파일에 포함되는)상태, 예외조건을 유발하는 조건 점프 동작에 대한 활당을 포함한다. 다른 동작은 머신의 마지막 상태를 실행하지 않고 실행된다.
본 발명의 다른 양상에 따르면, 상기 통로식 필드는 모든 가능한 활성 프로그램 통로중 하나 및 단지 하나를 동작하는 것이 가능하게 하거나 또는 모든 가능한 활성 프로그램 통로의 임의의 서브셋으로 동작하는 것이 가능하게 하는 것중 하나를 인코드한다. 후자의 경우는, 상기 통로식 필드를 패쓰셋 필드로 불린다.
본 발명을 완전히 이해하는 것은 첨부한 도면을 참고로 아래의 상세한 설명에 의해 고려될 수 있다.
본 발명의 기술은 1 싸이클 이상의 브랜치 지연을 가지는 어떤 파이프 라인 컴퓨터에 제공된다. 그러므로, 설명을 목적으로 매우 긴 명령 워드(VLIW)와 협력하여 기술되어 있다. 이 실시예는 어떤 관계에 제한되는 것이 아니며 본 발명의 기술은 본 발명의 사상 및 정신에서 이탈하지 않고 기술에 숙련된 사람에 의해 많은 다른 컴퓨터 구조에 제공된다.
제 1 도는 매우 긴 명령 워드(VLIW) 컴퓨터 구조에 대해 중앙 처리 유닛의 일반적인 블럭 다이어그램을 도시한다. 제 1 도의 중앙 처리 유닛은 다수의 처리기 기능 유닛(11) 내지 (15)사이에서 전달하기 위해 사용된 멀티포트 레지스터 파일(10)을 구비한다. 레지스터-파일(10)은 머신 싸이클 사이의 값을 기억하기 위한 기억용량을 가지는 유닛(11-15)에 대해 유니버샬 억세스 상호 접속 장치이다. 그러한 레지스터 파일은 기술로 공지되어 있으며, 상기는 에스.보카르 등에 의해 iWarp. 즉, 1988년 IEEE Proceedings on Supercomputing. 페이지 330에서 339 까지(IEEE 카타로그 #88 CH2617-9)"고 속 병렬 컴퓨팅"에 기술되어 있다. 매우 긴 명령 워드 명령 레지스터(21)는 각각의 기능 유닛(11-15)의 동작을 제어하기 위해 제어 필드를 가진다. 명령 레지스터(21)에 위치한 명령은 명령 이슈 파이프 라인(22)에서 유도된다.
상기 기능 유닛(11-15)은 다수의 N 산술 및 로직 유닛(ALUs)(11,......12)를 구비한다. 그러한 ALU 의 넘버는 특별한 응용을 편리하게 하는 대응의 양에 의해 결정되며 일반적으로 2 및 8 사이의 순서로 된다. N ALUs각각의 제어 필드는 명령 레지스터(21)내의 각 명령에 포함된다. 따라서, 제어 필드(16)는 ALU(11)를 제어하고 제어 필드(17)는 ALU(12)를 제어한다. ALU (11-12) 각각은 레지스터 파일(10)로부터 ALU 공급에 의존하여 다수의 상이한 산술 및 로직 동작을 수행하기 위해 표준 및 공지된 회로를 구비한다. 따라서, 그러한 ALU 의 구조 및 동작은 잘 공지되 있으며 본 발명의 부분을 형성하지 않으며, 또한 여기에 기술되지도 않았다.
또한 기능 유닛(11-15)에 포함된 것은 다수의 K 데이타 메모리 인터페이스(DMI) 회로(13,......14)이다. 그러한 PMI 의 넘버는 다른 기능 유닛의 활성화를 편리하게 하기 위해 각각의 머신 싸이클로 만들어져야만 하는 메모리 억세스의 넘버에 의해 결정되며, 일반적으로 1:5 의 순서로 만들어진다. 상기 K DMI 회로 각각의 제어 필드는 명령 레지스터(21)내의 각각의 명령에 포함된다. 따라서, 제어 필드(18)는 데이타 메모리 인터페이스(13)를 제어하며 제어 필드(19)는 PMI(14)를 제어한다. DMIs(13-14)가 제 1 도의 중앙 처리기 외부 데이타를 기억하기 위해 사용된 랜덤 억세스 메모리(RAM)에 대해 억세스 포트를 표시하는 것은 주목할 만한 일이다. DMI(13-14) 각각은 다른 데이타 RAM에 간섭되며, 각각의 단일 데이타 RAM 의 다른 포트와 간섭되거나, DMI(13-14)는 명령 이슈 파이프 라인(22)과 공통으로 단일 또는 멀티플 RAM 에 대해 억세스를 공유한다. 이들 RAM 메모리 각각은 멀티블랭킹, 인터리빙 등과 같은 공지된 메모리 기술을 사용하여 복소, 고수행 컴퓨터 메모리 시스템 구성을 포함하며 본 발명의 부분과는 동떨어져 있다. 명령 레지스터(21)내의 각각의 명령은 기억 또는 억세싱 데이타를 위해 데이타 메모리를 참고로 하는 K 까지의 동작을 포함한다. 그러한 데이타 메모리 인터페이스의 동작은 제 6 도 및 제 7 도를 참고로하여 아래에서 잘 설명되어 있다.
상기 셋(11-15)의 마지막 기능 유닛은 브랜치 제어 유닛(B(U)(15)이다. 브랜치 제어 유닛(15)은 명령 레지스터(21)내의 명령의 점프 제어 필드(20)에서 점프 동작에 응답한다. VLIW 명령의 점프 제어 필드(20)에 포함된 점프 동작은 브랜치 제어 유닛(15)에 보내지고, 그들이 사용되어 제 1 도의 중앙 처리기에서 실행되는 프로그램내의 명령의 다른 통로에 대해 브랜칭 상태를 제어하기 위해 제 5 도와 협력하여 아래에서 기술된다. 결국, 브랜치 제어 유닛(15)은 다수의 명령 통로를 결정하는 것에 의해 명령 이슈 파이프 라인(22)에 기입되는 어드레스를 발생하며 제 1 도의 중앙 처리기는 상태 점프 동작으로 표시된 조건에 의해 결정된다. 브랜치 제어 유닛(15)은 제 5 도를 참고로하여 아래에서 더욱 상세히 기술되어진다.
제 1 도의 중앙 처리 유닛은 다수의 기능 유닛(11-15)을 포함하기 때문에 매우 긴 명령 워드(VLIW) 처리기이며, 상기 모두는 단일 명령 레지스터(21)의 내용에 의해 동시에 제어된다. 이는 유닛(11-15)에 대응하고 제어되는 다수의 필드(16-20)를 가진다. 상기 멀티포트 레지스터 파일(10)은 유닛(11-15) 사이에 상호 접속을 허용하며 필요할때 오퍼랜드 값에 대해 버퍼 기억을 제공한다. 특정한 머신 싸이클동안에 특정 기능 유닛(11-15)에 대해 계획되지 않은 경우에, NOP(동작안됨) 코드는 기능 유닛의 코드에 대해 제어 필드내로 기입된다.
제 1 도에 도시된 것과 같은 VLIW 처리기 구조는 컴퓨터의 작업 처리량을 최적화 하는 방법으로 매우 긴 명령 워드를 발생하는 컴파일러에 의해 프로그램된다. 그러한 종래의 기술은 1967년 1월 R.M. Tomasulo 등에 의해 보고 및 개선의 IBM 저널 11 권 페이지 25-33 까지의 "멀티플 산술 유닛 개발용 효과적 알고리즘"에 기술되어 있다.
고 파이프 라인 컴퓨터 처리기 프로그램시 직면되는 하나의 문제는 그러한 구조시 고유의 조건 브랜치 지연이다. 조건(a 〉 b 로 말함)이 STATEMNT 1 및 STATEMENT 2 와 같이, 프로그램에서 2 개의 통로 사이의 선택을 결정하는 경우, 중앙 처리 유닛은 STATEMENT 1 또는 STATEMENT 2 에 대해 기억 코드에 대해 조건 점프를 실행하여야만 한다. 본래, 점프가 직렬로 2 개의 지연을 포함하는 것 처럼, 조건(a 〉 b)을 평가하고, 결정의 결과가 공지되고, 2) 명령 이슈 파이프 라인(22)으로 STATEMENT 1 또는 STATEMENT 2 의 명령 어드레스를 보내고, 여기서 어떤 명령 이슈 잠복이 초래한다. 현대의 집적 칩의 방법은 상기 조건을 매우 빠르게 평가한다. 과중한 파이프 라인과 함께, 멀티플 칩 명령 이슈 파이프 라인, 머신 싸이클에서의 잠복은 명령 메모리에 대해 명령 어드레스의 전송과 명령 레지스터에 대한 대응 명령의 유도 사이에서, 여러가지 명령 실행 싸이클이된다. 따라서 전달 명령은 이 브랜치 지연 주기동안 이용할 수 없게되고, 어렵게되며, 불가능한 경우는, 브랜치 지연 주기 동안에 작업을 유용하게 한다. 상기는 본 발명에 관계하여 이 문제를 경감할 수 있다.
병렬, 멀티플 기능 유닛 컴퓨터 처리기 구조를 상당히 많이 프로그램할때, 필요한 동작은 프로그래머에 의해 직렬 형태로 표현된다. 그러한 머신에 대한 컴파일러는 위치를 찾는 병렬 처리양을 최적화하고 전체 작업 처리량을 최적화 하기 위해 단일 명령 워드로 그러한 많은 동작을 폴드한다. 이를 달성하기 위해, 각각의 명령 워드에 관련한 동작은 프로그램의 직렬 형태로 연속적인 동작과 일치하는 것이 필요치 않는다. 실로, 이용가능한 이전의 동작 결과를 가지고 의존하는 동작은 차후의 머신 싸이클에 계획되어야만 한다. 그럼에도 불구하고 충분한 시간은 서로의 출력에 의존하지 않는 다수의 동작을 동시에 수행하는 것에 의해 제공된다.
특별한 계획 문제는 조건 점프 동작의 브랜치 지연으로 인해 발생한다. 여러 명령은 점프 동작이 조건 점프를 지정하는 시간과 개별 명령이 명령 레지스터에 대해 유도되는 시간 사이에서 실행된다. 이전에 상술한 바와 같이 이는 점프 조건을 평가하기 위해 요구된 시간과 명령 파이프 라인의 잠복시간, 즉 명령 어드레스 유도 시간 때문이며 상기 어드레스 명령 시간은 명령 레지스터에 대해 유도된다. 본 발명의 특정 목적은 이 브랜치 지연 시간 동안에 수행되는 작업량을 최소화 하기 위함이다. 단순함을 목적으로, 본 발명의 자세한 상술한 브랜치 지연이 2 개의 머신 싸이클을 취하며, 본 발명은 단순한 확장으로 다른 브랜치 지연에 대해 쉽게 실행된다.
처음에, 그들이 브랜치 제어에 관련되는 것처럼 VLIW 명령의 자세한 구조를 논의할 것이다.
제 2 도는 일반적인 VLIW 명령(50)의 구조를 재구성한 도면이다. 명령(50)은 다수의 필드(30) 내지 (36)을 구비하며 각각은 제 1 도의 중앙 처리기의 다른 기능 유닛에 대해 분리 동작 제어 코드를 포함한다. 따라서, 필드(30) 내지 (32)는 제 1 도의 산술 및 로직 유닛(11) 내지 (12)를 각각 제어한다. 필드(34) 내지 (36)은 제 1 도의 데이타 메모리 인터페이스(13-14)에 대한 액세스를 제어한다. 필드(33)는 정상 프로그램 실행 순서로 점프를 제어한다. 필드(33)는 다수의 서브 필드를 구성하며, 여러 방법에 대한 각각중 하나는 특정한 처리기 구조로 브랜치를 허용한다. 설명을 목적으로, 3 개의 점프 제어 서브필드(37-39)는 제 2 도에 도시되어 있다. 각각의 점프 제어 서브 필드(서브 필드(38)와 같이)는, 교대로, 5 개의 서브 필드(44-48)를 구성한다. 상기 OPCODE 서브필드(44)는 상기 DESTINATION ADDRESS 서브필드(48)에 의해 지정된 어드레스 점프 발생하에서 상기 조건을 지정한다. 일반적으로, 소모에도 불구하고, 점프동작 코드셋은 표 1 에 도시되어 있다.
본 발명에 따르면, 제 2 도의 PATH EXPRESSION 서브필드(45)는 이 점프 동작이 인에이블되는 통로를 지정한다. 즉, 상기 점프동작이 실행되고 상기 지정된 점프는 실제로 OPCODE 조건이 부합되고 PATH EXPRESSION 필드(45)가 제 5 도와 협력하여 기술된 통로 정보와 매치될때 실제 발생한다. 필드(37-39)에서 3 개의 점프 동작이 전체적으로 2 개 조건에서 발생하지 않을때 점프가 발생하지 않으며 상기 다음의 순서적 명령이 실행된다. 따라서, 각각의 브랜칭 동작은 (j+1) 웨이 브랜치를 결정하는 실제의 브랜치를 명백하게 하는 i 를 지정하며, 여기서, 익스트라 행선지는 다음 순차의 명령이다.
SELECT 서브 필드(46,47)는 상기 OPCODE 비교 조건이 부합하는 경우를 결정하기 위해 비교되는 2 개의 오퍼랜드 위치를 확인한다. 일반적으로 서브필드(46,47)의 내용은 요구된 오퍼랜드가 기억된 제 1 도의 레지스터 파일(10)에서 레지스터의 어드레스를 포함한다. 상기 마지막 서브필드(48)는 전달이 수행되는 명령의 목적이 어드레스를 지정한다. 이 목적지는 절대 어드레스, 관련 어드레스, 간접 어드레스, 인덱스 어드레스 등으로서 지정된다.
제 3 도는 VLIW 명령 워드 부분을 형성하는 산술 및 로직 제어 유닛 동작 필드(51)의 재구성을 도시한다. 상기 ALU 제어 필드(51)는 산술 및 로직 유닛이 수행되는 동작을 지정하는 동작 코드 서브필드(52)로 재구성된다. 상기 통로 표시 필드(53)는 다소후에 상술되지만, 일반적으로 통로 선택 표준에 기초한 동작의 실행 조건은 아래에서 설명되며, 제 2 도의 통로 표시 필드(45)와 유사하다. 서브필드(54,55)는 서브필드(52)내에서 동작 코드에 의해 지정된 동작시 사용하는 2 개의 오퍼랜드의 레지스터 파일(10)(제 1 도)에서의 위치를 지정한다. 마지막으로, 서브필드(56)는 동작의 결과가 작동되는 레지스터 파일(10)에서 목적지를 확인한다.
제 4 도는 VLIW 명령 워드 부분을 형성하는 일반적인 메모리 제어 필드(120)의 재구성을 도시한다. 상기 필드(120)는 판독 또는 기록 동작을 지정하는 동작 코드 서브필드(121)로 재구성된다. 상기 통로 표시 서브필드(122)는 제 2 도 제 3 도에서 통로 표시 필드(45,53)와 유사한 기능을 수행하며 아래에 설명될 것이다. 서브필드(123)는 데이타가 수행(판독) 되거나 데이타가 유도(기록)되는 것으로부터 메모리내의 어드레스를 지정한다. 서브필드(123)는 제 2 도의 서브필드(48)와 유사하며, 많은 방법으로 어드레스를 확인한다. 서브필드(124)는 데이타가 유도(판독)되거나 데이타가 수행(기록)되는 것으로부터 레지스터 파일(10)(제 1 도)에서 레지스터를 확인한다. 판독 동작을 위해, 데이타는 RAM 데이타 메모리로부터 실행되고 레지스터 파일(10)에 대해서는 유도된다. 기록 동작을 위해서는, 데이타는 레지스터 파일(10)에서는 실행되고 RAM 데이타 메모리에 대해서는 유도된다.
제 2 도 내지 제 4 도에 도시된 VLIW 명령 워드 구성 뿐 아니라 제 1 도에 도시된 VLIW 구성은 단순하고 쉽게 이해할 수 있도록 본 발명은 설명하기 위해 선택된다. 그러므로, 배럴 시프트 및 멀티플라이어 유닛과 같은 기능 유닛의 다른 형태 가산과 ALU 동작 및 DMI 동작 사이의 필드를 공유하는 것과 같이, 가능해진다. 그러한 다른 구성은 본 발명의 사용에 대해 쉽게 구성되며 이 명세서에서는 극히 복잡하게 되어 있다.
제 5 도는 제 1 도의 브랜치 제어 유닛(15)의 블럭 다이어그램이다. 상기는 제 2 도에 도시된 바와 같이 조건 점프 동작을 실행하기 위해 필요한 모든 제어 기능을 수행한다. 단순함을 목적으로, 제 2 도의 4 웨이 브랜치는 편리하게 되어 있으며 "브랜치 지연"은 다시 2 개의 머신 싸이클이다.
따라서 3 개의 목적지 및 3 개의 OPCODE 조건은 제 2 도의 조건 랜치 동작(33)에서 지정되며, 3 개의 비교기 유닛(60,61,62)은 브랜치 조건을 평가하기 위해 필요한 3 개의 비교를 만들도록 제공된다. 조건 브랜치 동작의 조건부의 A-선택 및 B-선택 필드(46,47)는 비교기 유닛(60-62)의 적당한 하나에서 제 1 도의 레지스터 파일(10)로부터 위치 및 게이트의 A1,A2,A3,B1,B2 및 B3 값을 제공한다. 비교기 유닛(60-62)은 표 1 (즉, 〈,, = 및)에 주어진 기본 비교 조건의 실행을 가능하게 하며 제 2 도의 서브필드(44)에서 OPCODE 에 인코드된다. 상기 코드된 조건은 이 특별한 조건 브랜치 통로에 대해 적당한 비교를 선택하기 위해 비교기(60-62)에 공급된다. 모든 3 개의 비교의 결과는 각각 이전의 인코더 회로(63)에 대해 AND 게이트(70,71,72)를 통해 전달된다. AND 게이트(70-72)는 통로 정보 매치의 결과를 가진 점프 조건 평가의 결과를 조합하며, 아래에 상술되어 있다. 게이트(70-72)의 하나(또는 그이상)의 TRUE 출력은 점핑을 초래한다. 상기는 3 개의 점프 조건이 항상 상호 배타적으로 되도록 컴파일러를 설계하는게 가능해진다. 본 실시예에서, 점프 조건이 상호 배타적인 것이 아니며, 이전의 인코더(63)는 가장 높은 우선 점프를 선택한다. 인코더(63)는 프로그램 카운터 레지스터(67)에 대해 적당한 입력을 접속시키기 위해 멀티플렉서(66)에 도입되는 2 비트 출력 신호를 발생한다. 우선 인코더(63)와 멀티플렉서(66)의 동작은 아래의 표 2 에 자세히 설명되어 있다.
표에 표시된 바와 같이, 상기 프로그램 카운터(67)로 로드된 새로운 값은 바람직한 결과이다. 상기 가장높은 우선 점프의 조건 평가는 참이고, 상기의 통로 정보는 매치되고, 상기 프로그램 카운터 레지스터(67)에 래치된 어드레스를 가진다. 상기 점프가 비교 조건을 만족하지 않을때 프로그램 카운터(67)는 다음 순차의 어드레스에 로드된다. 프로그램 카운터(67)의 출력은 명령 이슈 파이프 라인(22)에 제공되며(제 1 도에 도시된 바와 같이), 2 개의 싸이클 잠복 주기후, 명령 레지스터(21)로 로드된 적당한 명령을 발생한다. 소자(22)는 어드레스가 매 싸이클당 소자(22)로 보내지는 견지에서 파이프 라인이며 대응 명령은 2 개 싸이클 잠복후 소자(22,23) 조합밖으로 나온다. 상기 명령 이슈 파이프 라인(22)은 명령-전용 메모리를 지정하며 높은 판독 전용 메모리(ROM) 또는 랜덤 억세스 메모리(RAM) 성분으로 구성되며, 제 1 도의 데이타 메모리 인터페이스에 사용된 포트와 공통으로 공유된 메모리 시스템에 대해 또다른 부분이 된다.
우선 인코더(63)의 출력은 레지스터(64,65)에 의해 2 개의 연속 싸이클 동안 지연된다. 상기 레지스터(64,65)의 연쇄된 출력(여기서는 4 비트)은 통로정보, 즉, 2 개의 대부분 최근 점프의 인코드된 출력을 형성하며, 상기의 효과는 소자(22,21)로 구성되는 명령 파이프 라인을 통해 실행되지 않는다. 이 통로 정보는 통로 표시 매칭 동작을 실행하기 위해 브랜치 제어 유닛 그 자체를 포함하는 모든 기능 유닛에서 사용된다.
상기 'EQUALS" 비교기(73-75)는 제 2 도의 3 개의 점프 제어 동작에 대해 본 발명(여기서 동작은 단일 프로그램 통로에 대해 통로 표시 코드를 지정하기 위해 허용된다)의 제 1 실시예에 따른 매칭 동작을 실행한다. 상기 양호한 비교기(73-75)는 레지스터(64,65)의 통로 정보 출력이 대응 점프 제어 서브필드의 통로 표시 필드(45)(제 2 도)와 매치되는 경우 참 출력을 발생한다.
양호한 비교기로 구성하는 회로는 제 7 도를 참고로하여 아래에 기술된 바와같이, 비교기(73-75)대신에 3개의 16 대 1 멀티플렉서 사용에 의해 본 발명(동작은 실행되는 통로셋을 지정할 수 있다)의 제 2 실시예에 따라 매칭을 조작하기 위해 수정된다.
제 5 도의 브랜치 제어 유닛은 매조건 점프 동작의 출력을 결정하고 통로 정보로서 비교의 결과를 인코드하기 위해 모든 필요한 비교를 미리 형성한다. 동시에, 브랜치 제어 유닛은 조건 점프 동작에 따라 "다음" 명령을 적절히 하기위에 억세스를 허용하도록 프로그램 카운터에서 적절한 어드레스를 발생한다. 상기 프로그램 브랜치 통로중 하나를 완전하게 동작 실행을 보증하기 위해 매카니즘은 제 6 도 및 제 7 도를 참고로하여 기술된다. 그러므로, 상기 매카니즘은 조건 점프 동작 그 자체의 실행 조건을 위해 제 5 도의 것과 유사하다.
상기 2 개 이상의 조건 브랜치 동작은 프로그램의 연속적 명령 싸이클로 서로 직접 따르며, 점프 실패의 결과 또는 실제 발생하는 점프의 결과중 하나이다. 조건 점프 동작이 연속적인 명령 싸이클로 서로에 따르는 경우, 2 개의 명령 싸이클 브랜치 지연이 제 2 조건 점프 동작시 가능한 목적지의 넘버에 의해 멀티플된 제 1 조건 점프 동작으로 가능한 목적지 넘버의 생산후 목적지의 가능한 넘버가 된다. 레지스터(64,65)로 부터 통로 정보는 이틀 가능성 모두를 인코드하며 따라서 이들 통로 정보는 2 개의 대부분 최근 명령의 점프 출력 결과를 표시한다.
제 5 도의 브랜치 제어 유닛으로부터 통로 정보는 점프 동작에 의해 선택되는 가능한 통로 모두의 동작 실행 조건에 대해 사용된다. 그러므로, 상기는 프로그래머에 대해 볼수 있는 결과를 발생하는 동작 실행 조건에 대해서만 필요하다.
제 4 도에 도시된 바와 같이, 메모리 기억 동작은 그러한 동작중 하나가되며 그러므로 각각 그러한 메모리 기억 동작은 통로 표시 필드(제 4 도의 서브필드(122))를 구비한다. 그러므로, 다른 조건 점프 동작은 또한 계산의 프로그래머-가시상태를 실행하며 또한 제 2 도에 도시된 바와 같이, 통로 표시 서브필드(45)를 구비한다. 명백하지는 않지만, 질적으로 중요하며, 산술 오버플로어와 같은 "에외 라이징" 동작이라 불리며, 상기는 프로그램 제어 흐름을 또한 변화시킨다. 심지어 ALU 동작은 제 3 도에 도시된 바와 같이, 통로 선택을 허용하기 위해 통로 표시 서브필드(53)를 구비한다. 상기 통로 정보 코드는 조건 점프 동작에 의해 선택된 프로그램 통로에 일치하여 이들 동작을 인에이블하기 위해 사용되며 상기 효과는 명령 이슈 파이프 라인을 통해 통과하지 않는다.
명백하게, 브랜치 지연이 n 머신 싸이클이고 각각의 조건 브랜칭 동작에서 점프 제어 서브필드의 최대 넘버가 K 인 경우, 상기 브랜치 통로중 선택된 하나의 확인을 인코드하기 위해 필요한 비트 넘버는 아래와 같이 주어진다.
n·log2(k + 1)
여기서 log 2는 밑수 2 에 대한 상용대수이다. 제 5 도의 2 개의 싸이클 브랜치 지연 및 3개의 점프 제어 서브필드에 대해, 4 비트가 프로그램 통로의 확인을 인코드하기 위해 요구된다. 이 코드는 통로 표시로 불리며 따라서 상기는 2 개의 연속적인 조건 점프 동작의 결과로서 선택된 16 개의 가능한 프로그램 통로중 하나의 출력을 확인한다.
상기는 때때로 하나이상의 통로에 의해 공유된 동작을 계획하는 것이 가능하다. 이 경우, 가능한 통로의 2 개 이상이 선택되는 경우에 동작을 가능하게 하는 것이 바람직하다. 상기 가능한 통로(단지 1 보다는)모두를 지정하기 위해, 요구된 비트 넘버는 아래와 같이 주어진다.
2n·log2(k + 1)
여기서 n 및 k는 위에서처럼 한정된다. 2 개의 싸이클 브랜치 지연 및 4-웨이 점프 동작에 대해서, 16 개 비트는 16 개 다른 통로까지 확인 및 서브셋에 대해 요구된다. 이 코드는 "패쓰 셋" 코드로 불리며 이 코드의 2 개 이상의 비트는 2 개 이상의 다른 통로의 특정 동작을 가능하게 하기 위해 셋된다. 제 6 도 및 제 7 도를 참고로하여 기술된 본 발명의 실시예는 통로 표시 코드 및 패쓰 셋 코드로 활용된다.
제 6 도는 제 1 도의 데이타 메모리 인터페이스(13-14)의 메모리 억세스 회로를 표시한다. 전의 상술처럼, 제 1 도의 데이타 메모리 인터페이스(13-14)로 실행된 기록 동작은 프로그래머에 대해 볼수있는 시스템 상태를 수정하는 것이 가능하다. 이들 기록 동작의 실행은 이전의 2 개의 머신 싸이클로부터 수집된 통로 정보에 의해 인에이블(디스에이블) 되어야만 한다. 제 6 도는 제 1 도의 유닛(13-14)과 같은 데이타 메모리 인터페이스 기능 유닛과 관계하여 명령 레지스터(21)로 명령의 필드(121-124)를 도시한다. 이들 필드는 동작 코드 필드(121)를 포함하며, 상기는 판독 또는 기록중 하나를 지정하며, 통로 표시 필드(122)는 프로그램 통로 동작이 인에이블하는 것을 확인하며, 어드레스 선택 필드(123)는 메모리 어드레스를 지정하며 데이타가 실행되거나(판독) 데이타가 유도(기록)된다. 제 6 도의 실시예에서, 상기 어드레스 선택 필드(123)는 어드레스를 포함하는 레지스터 파일(10)에서 레지스터를 확인한다. 또한 명령 레지스터(21)에 포함된 것은 데이타가 유도되는 것으로부터 또는 레지스터 파일내의 레지스터를 확인하는 데이타 소스/목적 서브필드(124)이다.
제 6 도에서, 실제 RAM 메모리 포트는 데이타 메모리(87)처럼 도시된다. 어드레스는 리드(91)에 의해 메모리(87)에 공급되며 반면 데이타가 박스(87)의 상부에서 메모리(87)로부터 공급되거나 실행된다. 라인(89)상의 제어 입력은 판독 동작이 메모리로부터 발생되거나 또는 메모리에 대한 기록 동작에 대해 발생되는지를 결정한다. 제 5 도로부터 통로 정보는 대등 비교 회로(86)에 대해 리드(88)상에 공급된다. 또한 대등 회로(86)에 공급된 것은 명령 레지스터(21)의 메모리 제어 동작의 통로 표시 서브필드(122)의 내용이다. 통로 표시 필드의 내용이 통로 정보와 동일한 경우에, 메모리 기록 동작은 인에이블된다. 결국, 비교 회로(86)의 출력은 제어 로직 회로(81)의 하나의 입력에 공급되며 다른 입력은 명령 레지스터(21)내의 메모리 제어 동작의 필드(121)로부터의 동작 코드이다. 제어 로직 회로(81)의 하나의 출력은 리드(89)상의 신호를 인에이블하는 판독 또는 기록이된다. 제어 로직 회로(81)는 멀티포트 레지스터 파일(10)에 대해 데이타 이동 방향을 제어하는 리드(90)상에 제어 신호를 공급한다. 제어 로직 회로(81)는 리드(90,91)상의 제어 신호에 대해서 타이밍 요구에 의존하며 제 6 도에 도시되지 않았다.
제 6 도의 특정예에 대해서, 필드(123)는 메모리 동작의 어드레스가 발견되는 레지스터 파일(10)내의 레지스터를 지정한다. 필드(123)는 리드(92)상의 멀티포트 레지스터 파일(10)의 판독포트(i)에 대해 어드레스를 직접 형성한다. 판독포트(i)의 출력은 리드(91)위의 데이타 메모리(87)에 대해 어드레스를 형성한다. 필드(124)는 레지스터 파일(10)내의 레지스터를 확인하며 여기서 데이타가 실행되거나(판독 동작) 기록(기록 동작)된다. 따라서 필드(124)는 레지스터 파일(10)의 판독/기록 포트(i+1)에 대해 어드레스로서 사용된다. 메모리에서 포트(i+1)까지 또는 포트(i+1)에서 메모리까지의 데이타는 데이타 메모리(87)의 상부에 도시된 리드위에 전달된다. 제 6 도의 회로는 다른 어드레싱 기술에 활용하기 위해 확장된다. 제 6 도의 회로 동작은 메모리 기록 동작(요구된 경우, 또한 메모리 판독 동작)은 판독 또는 기록 동작의 통로 표시 필드(122)의 매치에 의한 상태이며 상기 통로 정보는 리드(88)상에서 제 5 도의 브랜치 제어 유닛으로부터 공급된다.
제 7 도의 변화는 주어진 시간에서 동작하는 하나 이상의 통로상에서 동작을 인에이블한다. 제 7 도는 대등 비교기(86)가 멀티플렉서(94)에 의해 대체된 것을 제외하고는 제 6 도의 것과 같은 회로이다. 상기 패쓰 셋 필드(122)는 메모리 동작이 인에이블되는 통로의 임의의 서브 셋을 지정하는 16 개의 비트 필드이다. 상기 회로는 패쓰 셋 필드(122)에서 멀티플렉서(94)의 출력가지 16 개 입력중 하나와 접속하는 멀티플렉서(94)에 의한 이 결과를 이루기 위해 동작하며, 통로 정보 리드(88)상의 코드에 의존한다. 상기 패쓰 셋 필드(122)에서의 특정 위치에서 "1" 비트의 존재는 동작이 특정 패쓰 셋 코드에 대해 인에이블되는지 아닌지를 결정한다. 상기 패쓰셋 코드 비트 셋팅의 선택에 의해, 모든 가능한 활성 통로(빈 서브 셋 및 가득찬 셋을 포함하는)중 어떤 서브 셋이 선택된다.
조건 브랜치 동작에 따른 동작시 통로 표시 필드 또는 패쓰 셋 필드는 명령 이슈 시스템을 통해 실행되지 않고 이슈되는 브랜치 조건의 주어진 출력에 대해 그러한 동작이 실제로 실행되는지 아닌지를 결정하는 것을보여준다. 특히, 2 개 싸이클 브랜티 지연과 4-웨이 브랜칭 능력을 가진 실시예를 설명하기 위해 싸이클 i 로 계획된 동작은 싸이클(i-2)에서의 점프가 방향 "1"이고(2 진 "이")싸이클 (i-1)에서의 점프가 방향 "3"인 경우(2 "11") 2 진 통로 표시값 "0111"(방향 "3"에 대해 2 진 코드에 의한 방향 "1"에 대한 2 진 코드)양도에 의해 실행하는 상태이다. 이는 싸이클(i+2)에서 그들 위치를 갖는 대신에 싸이클 i 에 대해 브랜치 동작(i-1)의 목적에서 동작이 의도되는 것과 같이 이동하도록 컴파일러를 허용한다. 따라서 머신의 프로그래머-가시 상태상의 어떤 실행을 발생하는 프로그램이 같은 시간이 보증되는 동안 브랜치 지연 싸이클 시간을 활용하는 것이 가능하다. 본 발명의 회로 비용은 최소이며, 즉, 2 개 비트 각각의 2 개의 레지스터는 제 5 도의 브랜치 제어 유닛에 첨가되며, 덧붙이면, 많은 2 진 대등 검출기가 필요하므로서 상기 머신은 병렬 동작을 가진다. 상기 다른 비용은 제 5 도의 AND 게이트(70-72) 및 제 6 도 또는 제 7 도의 로직 회로(81)를 포함한다.

Claims (9)

  1. 파이프라인 컴퓨터 시스템의 각각의 머신 사이클에서 적어도 하나의 브랜칭 동작과 적어도 하나의 난 브랜칭 동작을 시작하는데 적합하며 상기 머신 사이클중 적어도 하나의 브랜치 지연을 갖는 파이프 라인 컴퓨터 시스템에 있어서, 상기 브랜치 지연동안 조건 브랜치 동작의 통로 확인 결과를 인코딩하기 위한 브랜치 제어 회로와, 상기 브랜치 동작에 이어지는 적어도 하나의 동작에서 상기 브랜치 동작이 실행되는 프로그램 경로를 확인하는 제어 필드 및 상기 브랜칭 동작에 이어지는 동작을 인에이블시키기 위해 상기 통로 확인과 상기 제어 필드를 활용하는 수단을 구비하는 것을 특징으로 하는 파이프라인 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 제어 필드는 상기 컴퓨터 시스템에 의해 실행되는 각각의 동작 및 모든 동작에서 나타나는 것을 특징으로 하는 파이프라인 컴퓨터 시스템.
  3. 제1항에 있어서, 상기 제어 필드는 상기 컴퓨터 시스템의 프로그래머-가시 상태에 영향을 주는 동작에만 나타나는 것을 특징으로 하는 파이프라인 컴퓨터 시스템.
  4. 제1항 내지 제3항중 어느 한 항에 있어서, 상기 제어 필드는 실행을 위해 하나 이상의 프로그램의 임의의 서브셋을 지정하는 것을 특징으로 하는 파이프라인 컴퓨터 시스템.
  5. 디지탈 컴퓨터 처리기에 있어서, 병렬로 동작하도록 접속된 다수의 기능 유닛과, 상기 기능 유닛 모두의 동작을 동시에 시작할수 있게 하는 명령을 저장하는 명령 레지스터 수단과, 조건 브랜칭 동작에서 브랜칭 조건을 테스트하는 조건 브랜칭 제어 수단과, 통로 식별기를 생성하기 위해 상기 테스트 결과를 인코딩하는 수단, 및 상기 식별기와 매치하는 않는 제어 필드를 포함하는 상기 조건 브랜칭 동작에 이어지는 실행동작을 금지하는 수단을 포함하는 것을 특징으로 하는 디지탈 컴퓨터 처리기.
  6. 제5항에 있어서, 상기 브랜칭 동작에 이어지는 모든 동작은 상기 통로 식별기와 매치하는 필드를 포함하는 것을 특징으로 하는 디지탈 컴퓨터 처리기.
  7. 제5항에 있어서, 상기 디지탈 컴퓨터의 프로그래머-가시 상태에 영향을 주는 동작만이 상기 통로 식별기와 매치하는 필드를 포함하는 것을 특징으로 하는 디지탈 컴퓨터 처리기.
  8. 제6항 또는 제7항에 있어서, 상기 인코딩 수단은 하나 이상의 지정 통로를 식별하는 코드에서 상기 통로 식별기를 인코딩하는 수단을 포함하는 것을 특징으로 하는 디지탈 컴퓨터 처리기.
  9. 제1항 내지 제3항중 어느 한 항에 있어서, 상기 브랜치 지연은 적어도 두개의 머신 사이클인 것을 특징으로 하는 파이프라인 컴퓨터 시스템.
KR1019910015485A 1990-09-05 1991-09-05 파이프 라인 컴퓨터 시스템 KR100242617B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US57897690A 1990-09-05 1990-09-05
US578,976 1990-09-05

Publications (2)

Publication Number Publication Date
KR920006845A KR920006845A (ko) 1992-04-28
KR100242617B1 true KR100242617B1 (ko) 2000-08-01

Family

ID=24315095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910015485A KR100242617B1 (ko) 1990-09-05 1991-09-05 파이프 라인 컴퓨터 시스템

Country Status (5)

Country Link
US (1) US5450556A (ko)
EP (1) EP0474297B1 (ko)
JP (1) JP3098071B2 (ko)
KR (1) KR100242617B1 (ko)
DE (1) DE69129569T2 (ko)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
US5832202A (en) * 1988-12-28 1998-11-03 U.S. Philips Corporation Exception recovery in a data processing system
JPH05233281A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 電子計算機
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
JP3212213B2 (ja) * 1994-03-16 2001-09-25 株式会社日立製作所 データ処理装置
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5581776A (en) * 1995-02-03 1996-12-03 Nokia Mobile Phones Limited Branch control system for rom-programmed processor
JP3547139B2 (ja) * 1995-03-17 2004-07-28 株式会社 日立製作所 プロセッサ
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5815701A (en) * 1995-06-29 1998-09-29 Philips Electronics North America Corporation Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
KR100445542B1 (ko) * 1995-09-01 2004-11-20 필립스 일렉트로닉스 노쓰 아메리카 코포레이션 프로세서의커스텀오퍼레이션들을위한방법및장치
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
US6374346B1 (en) 1997-01-24 2002-04-16 Texas Instruments Incorporated Processor with conditional execution of every instruction
US6055628A (en) * 1997-01-24 2000-04-25 Texas Instruments Incorporated Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
JP3412462B2 (ja) * 1997-07-30 2003-06-03 松下電器産業株式会社 プロセッサ
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6105051A (en) * 1997-10-23 2000-08-15 International Business Machines Corporation Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6112299A (en) * 1997-12-31 2000-08-29 International Business Machines Corporation Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
US6216223B1 (en) 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6178495B1 (en) * 1998-04-30 2001-01-23 International Business Machines Corporation Processor E-unit to I-unit interface instruction modification with E-unit opcode computer logic in the unit
US6260138B1 (en) 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6453407B1 (en) 1999-02-10 2002-09-17 Infineon Technologies Ag Configurable long instruction word architecture and instruction set
US6405300B1 (en) * 1999-03-22 2002-06-11 Sun Microsystems, Inc. Combining results of selectively executed remaining sub-instructions with that of emulated sub-instruction causing exception in VLIW processor
US6654870B1 (en) * 1999-06-21 2003-11-25 Pts Corporation Methods and apparatus for establishing port priority functions in a VLIW processor
US7007156B2 (en) * 2000-12-28 2006-02-28 Intel Corporation Multiple coprocessor architecture to process a plurality of subtasks in parallel
WO2003034201A2 (en) * 2001-10-12 2003-04-24 Pts Corporation Late resolving instructions
US7200738B2 (en) * 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
WO2005111793A2 (en) * 2004-05-13 2005-11-24 Koninklijke Philips Electronics N.V. Run-time selection of feed-back connections in a multiple-instruction word processor
US8190669B1 (en) 2004-10-20 2012-05-29 Nvidia Corporation Multipurpose arithmetic functional unit
US8037119B1 (en) 2006-02-21 2011-10-11 Nvidia Corporation Multipurpose functional unit with single-precision and double-precision operations
JP2007272353A (ja) * 2006-03-30 2007-10-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US7818552B2 (en) * 2007-12-20 2010-10-19 The United States Of America As Represented By The Secretary Of The Army Operation, compare, branch VLIW processor
US9928074B2 (en) * 2013-09-06 2018-03-27 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with token-based very long instruction word architecture

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3611306A (en) * 1969-02-05 1971-10-05 Burroughs Corp Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
US3781814A (en) * 1971-10-07 1973-12-25 Raytheon Co Method and apparatus for applying source language statements to a digital computer
US4920538A (en) * 1985-06-28 1990-04-24 International Business Machines Corporation Method of checking the execution of microcode sequences
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
US4943912A (en) * 1987-10-13 1990-07-24 Hitachi, Ltd. Parallel processor system having control processor and array control apparatus for selectively activating different processors
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5313551A (en) * 1988-12-28 1994-05-17 North American Philips Corporation Multiport memory bypass under software control
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor

Also Published As

Publication number Publication date
KR920006845A (ko) 1992-04-28
EP0474297A2 (en) 1992-03-11
EP0474297A3 (en) 1993-09-01
JP3098071B2 (ja) 2000-10-10
JPH04245540A (ja) 1992-09-02
DE69129569T2 (de) 1999-02-04
DE69129569D1 (de) 1998-07-16
US5450556A (en) 1995-09-12
EP0474297B1 (en) 1998-06-10

Similar Documents

Publication Publication Date Title
KR100242617B1 (ko) 파이프 라인 컴퓨터 시스템
RU2109333C1 (ru) Цифровой компьютер с возможностью параллельного выполнения двух и более команд
US4860197A (en) Branch cache system with instruction boundary determination independent of parcel boundary
US7725687B2 (en) Register file bypass with optional results storage and separate predication register file in a VLIW processor
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
US4594682A (en) Vector processing
KR0149658B1 (ko) 데이터 처리장치 및 데이터 처리방법
US4760519A (en) Data processing apparatus and method employing collision detection and prediction
EP0407911B1 (en) Parallel processing apparatus and parallel processing method
US6542985B1 (en) Event counter
KR100309566B1 (ko) 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
JP2750311B2 (ja) データ処理装置内のデータ・オペレーションの実行を制御する装置及び方法
US5313551A (en) Multiport memory bypass under software control
US6112299A (en) Method and apparatus to select the next instruction in a superscalar or a very long instruction word computer having N-way branching
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
US5131086A (en) Method and system for executing pipelined three operand construct
US4541045A (en) Microprocessor architecture employing efficient operand and instruction addressing
US5771377A (en) System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage
US6145074A (en) Selecting register or previous instruction result bypass as source operand path based on bypass specifier field in succeeding instruction
EP1261914B1 (en) Processing architecture having an array bounds check capability
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
CN106610817A (zh) 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法
US5293499A (en) Apparatus for executing a RISC store and RI instruction pair in two clock cycles
KR20010007093A (ko) 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치
US5737561A (en) Method and apparatus for executing an instruction with multiple brancing options in one cycle

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

Year of fee payment: 12

EXPY Expiration of term