KR20070022260A - 다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택 - Google Patents

다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택 Download PDF

Info

Publication number
KR20070022260A
KR20070022260A KR1020067023589A KR20067023589A KR20070022260A KR 20070022260 A KR20070022260 A KR 20070022260A KR 1020067023589 A KR1020067023589 A KR 1020067023589A KR 20067023589 A KR20067023589 A KR 20067023589A KR 20070022260 A KR20070022260 A KR 20070022260A
Authority
KR
South Korea
Prior art keywords
result data
register
register file
issue
identifier
Prior art date
Application number
KR1020067023589A
Other languages
English (en)
Other versions
KR101147190B1 (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 KR20070022260A publication Critical patent/KR20070022260A/ko
Application granted granted Critical
Publication of KR101147190B1 publication Critical patent/KR101147190B1/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
    • 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
    • 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
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

처리 장치가 다중-명령어 워드를 실행하기 위해 배열되고, 각 다중-명령어 워드는 복수의 명령어를 가진다. 상기 처리 장치는 복수의 명령어의 병렬 실행을 위해 배열된 복수의 이슈 슬롯(IS1, IS2); 복수의 이슈 슬롯에 의해 액세스 가능한 레지스터 파일(RF1, RF2); 및 상기 복수의 이슈 슬롯과 상기 레지스터 파일을 연결하기 위한 통신 네트워크(CN)를 포함한다. 상기 처리 장치는 제1 이슈 슬롯(IS1)에 의해 생성된 제1 결과 데이터(RD1)의 유효성에 관한 제1 식별자(OV1)와 제2 이슈 슬롯(IS2)에 의해 생성된 제2 결과 데이터(RD2)의 유효성에 관한 제2 식별자(OV2)를 생성하기 위해 더 배열된다. 상기 통신 네트워크는 제1 식별자와 제2 식별자를 사용함으로서 단일 프로세서 사이클 내에 제1 결과 데이터 또는 제2 결과 데이터의 상기 레지스터 파일의 레지스터로의 전송을 동적으로 제어하기 위해 배열된 적어도 하나의 선택 회로(SC1)를 포함한다.

Description

다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택{RUN-TIME SELECTION OF FEED-BACK CONNECTIONS IN A MULTIPLE-INSTRUCTION WORD PROCESSOR}
본 발명은 다중-명령어 워드를 실행하기 위해 배열된 처리 장치에 관한 것으로서, 다중-명령어 워드는 복수의 명령어를 가지며, 상기 처리 장치는 복수의 명령어의 병렬 실행을 위해 배열된 복수의 이슈 슬롯과, 복수의 이슈 슬롯에 의해 액세스 가능한 레지스터 파일과, 상기 복수의 이슈 슬롯과 상기 레지스터 파일을 연결하기 위한 통신 네트워크를 포함한다.
프로세서는 범용 프로세서이거나 애플리케이션-특정 명령어-세트 프로세서일 수 있다. 이 프로세서는 음향, 이미지 또는 비디오를 포함하는 다른 유형의 정보를 처리하기 위해 사용될 수 있다. 애플리케이션-특정 명령어-세트 프로세서의 경우에는, 프로세서 아키텍처와 명령어 세트가 커스터마이징(customizing)되는데, 이는 시스템의 비용과 전력 손실을 상당히 감소시킨다. 프로세서 아키텍처는 일반적으로 제어 워드의 집합에 의해 제어되는 고정된 데이터 경로로 이루어진다. 각 제어 워드는 데이터 경로의 일부분을 제어하고, 이 일부분은 레지스터 어드레스와, 산술 논리 유닛(ALU) 또는 다른 기능 유닛을 위한 연산 코드를 포함할 수 있다. 각 명령어 세트는 일반적으로 명령어의 이진 포맷을 대응 제어 워드로 변환하는 명령어 디 코더 또는 마이크로 저장소, 즉, 제어 워드를 직접적으로 포함하는 메모리에 의해 새로운 세트의 제어 워드를 생성한다. 일반적으로, 제어 워드는 연산 코드, 두 개의 피연산자 레지스터 인덱스와, 결과 레지스터 인덱스를 포함하는 RISC와 유사한 연산을 나타낸다. 피연산자 레지스터 인덱스와 결과 레지스터 인덱스는 레지스터 파일 내의 레지스터를 참조한다.
초대형 명령어 워드(Very Large Word: VLIW) 프로세서의 경우에는, 다중 명령어가 소위 VLIW 명령어라고 불리는 하나의 긴 명령어로 패키징된다. VLIW 프로세서는 이러한 다중 명령어를 병렬로 실행하기 위한 다중의 독립적인 기능 유닛을 사용한다. 이 프로세서는 프로그램에서 명령어-수준의 병렬성을 활용하고, 따라서 한번에 두 개 이상의 명령어를 실행하는 것을 허용한다. 이러한 형태의 병렬 처리 때문에, 프로세서의 성능이 증가된다. 소프트웨어 프로그램이 VLIW 프로세서상에서 실행되기 위해, 이 프로그램은 VLIW 명령어 세트로서 변환되어야 한다. 컴파일러는 병렬성을 최적화함으로써 프로그램을 실행시키는데 소요되는 시간을 최적화하려고 시도한다. 컴파일러는 제약하에서 명령어를 VLIW 명령어로 조합하여, 단일 VLIW 명령어에 할당된 명령어가 병렬로 그리고 데이터 종속 제약하에서 실행될 수 있다. 아무런 의미있는 처리도 하나 이상의 기능 유닛에 대해 소정의 클록 사이클에서 발생할 수 없는 경우에, 소위 비연산(no-operation: NOP) 명령어는 그 특정 기능 유닛을 위해 VLIW 명령어에서 인코딩된다. 코드 크기를 감소시키고, 요구되는 메모리 크기와 요구되는 메모리 대역폭의 견지에서 비용을 절감하기 위해, 데이터 상주의(stationary) VLIW 프로세서에서 비연산(NOP) 명령어의 컴팩트한 표현이 사용될 수 있는데, 예를 들면, NOP 연산은 VLIW 명령어의 앞부분에 부착된 특별 헤더내의 단일 비트에 의해 인코딩되어, 압축된 VLIW 명령어를 야기시킨다.
프로세서의 데이터 파이프라인에서의 동작을 제어하기 위해, 두 개의 다른 매커니즘: "Embedded Software in real-time signal processing systems: design technologies", G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem and P. Paulin, Proceedings of the IEEE, vol. 85, no. 3, March 1997에서 개시된 데이터-정주(data-stationary)와 시간-정주(time-stationary)가 컴파일러 아키텍처에서 공통적으로 사용된다. 데이터-정주 인코딩의 경우에서는, 특정 데이터 항목이 데이터 파이프라인을 통과하면서, 프로세서의 명령어-세트의 부분인 모든 명령어가 이 특정 데이터 항목에 대해 실행되어야 할 연산의 완벽한 시퀀스를 제어한다. 일단 명령어가 프로그램 메모리로부터 페칭(fetching)되고 디코딩되었으면, 프로세서 제어기 하드웨어는 합성 연산이 정확한 머신(machine) 주기로 실행되는 것을 확실하게 할 수 있다. 시간-상주 코딩의 경우에는, 프로세서의 명령어-세트의 일부인 모든 명령어는 단일 머신 사이클에서 실행되어야 할 완벽한 세트의 연산을 제어한다. 이 연산은 데이터 파이프라인을 통과하는 다수의 다른 데이터 항목에 적용될 수 있다. 이 경우에, 데이터 파이프라인을 설정하고 유지하는 것은 프로그래머 또는 컴파일러의 책임이다. 야기된 파이프라인 일정은 머신 코드 프로그램에서 완전히 보인다. 시간-정주 인코딩은 애플리케이션-특정 프로세서 내에서 종종 사용되는데, 그 이유는 이 인코딩은 보다 큰 코드 사이즈를 희생하여, 명령어에 존재하는 제어 정보를 지연시키기 위해 필요한 하드웨어의 오버헤드를 절감하기 때문 이다.
EP1.113.356은 복수의 기능 유닛과 레지스터 파일을 구비한 VLIW 프로세서를 설명하는 것이다. 디코딩된 명령어는 기능 유닛에 제공되고, 입력 데이터는 레지스터 파일로부터 제공되고, 결과 데이터는 레지스터 파일에 기록된다.
결과 데이터가 무효한지가 런-타임에서 결정되는 경우, 즉, 결과 데이터가 레지스터 파일에 다시 기록될 필요가 없는 경우에, 결과 데이터가 정적으로, 즉, 컴파일 타임에 이 결과 데이터가 유효할지 아닐지에 대해 모르므로, 기능 유닛으로부터 레지스터 파일로의 통신 경로가 여전히 이용가능해야만 한다는 것이 종래 프로세서의 단점이다.
본 발명의 목적은 단일 프로세서 사이클 이내에 두 개의 다른 동작에 의해 생성된 결과 데이터의 레지스터 파일의 동일 레지스터로의 재기록을 정적으로 스케줄링하는 것을 허용하는 처리 장치를 제공하는 것이다. 본 발명의 추가적인 목적은 공유된 통신 채널상에서 이러한 결과 데이터의 재기록을 정적으로 스케줄링하는 것이다.
이 목적은 설명된 종류의 처리 장치를 가지고 달성되는데, 이 처리 장치는 제1 이슈 슬롯에 의해 생성된 제1 결과 데이터의 유효성에 관한 제1 식별자와 제2 이슈 슬롯에 의해 생성된 제2 결과 데이터의 유효성에 관한 제2 식별자를 생성하기 위해 더 배열되고, 상기 통신 네트워크는 상기 제1 식별자와 상기 제2 식별자를 사용함으로써 단일 프로세서 사이클에서 제1 결과 데이터 또는 제2 결과 데이터의 상기 레지스터 파일의 레지스터로의 전송을 동적으로 제어하기 위해 배열되는 적어도 하나의 선택 회로를 포함하는 것을 특징으로 한다. 적어도 결과 데이터의 유효성에 관한 제1 또는 제2 식별자가 런-타임에 대응 결과 데이터가 레지스터 파일의 레지스터에 기록될 필요가 없는 것을 지시하는 것이 정적으로 알려진 경우에, 제1 및 제2 결과 데이터의 재기록은 단일 프로세서 사이클에 스케줄링될 수 있다. 선택 회로는 레지스터 파일에 기록될 유효 결과 데이터를 동적으로 선택하기 위한 식별자를 사용한다. 결과적으로, 두 개의 다른 동작에 의해 생성된 결과 데이터의 레지스터 파일의 동일 레지스터로의 재기록은 단일 프로세서 사이클내에 스케줄링될 수 있다.
본 발명에 따른 처리 장치의 실시예는 상기 적어도 하나의 선택 회로가 제1 및 제2 식별자를 사용함으로써 단일 프로세서 사이클내에 아무런 결과 데이터도 상기 레지스터 파일의 레지스터로 전송되지 않는 것을 동적으로 제어하기 위해 더 배열되는 점에 특징이 있다. 제1 및 제2 결과 데이터 모두가 무효인 경우에, 아무런 결과 데이터도 레지스터 파일에 다시 기록되지 않는다.
본 발명에 따른 처리 장치의 실시예는 상기 적어도 하나의 선택 회로가 제1 및 제2 이슈 슬롯에 제각기 연결되는 것을 특징으로 한다. 어느 결과 데이터가 레지스터 파일에 다시 기록되는 가에 대한 선택은 이슈 슬롯의 출력에서 직접적으로 행해진다.
본 발명에 따른 처리 장치의 실시예는, 통신 네트워크가 공유된 통신 채널을 거쳐 제1 결과 데이터 또는 제2 결과 데이터를 전송하기 위해 배열되는 것을 특징으로 한다. 이 실시예의 이점은, 다른 이슈 슬롯이 레지스터 파일에 결과 데이터를 전송하기 위해 다른 통신 채널이 이용 가능하다는 것이다.
본 발명에 따른 처리 장치의 실시예는 상기 적어도 하나의 선택 회로가, 선택 회로의 이슈 슬롯의 출력으로의 연결을 위한 대안을 제공하면서, 상기 레지스터 파일의 입력에 연결되는 것을 특징으로 한다.
본 발명에 따른 처리 장치의 실시예는, 제1 결과 데이터는 제1 조건 연산에 대응하고, 제2 결과 데이터는 제2 조건 연산에 대응하고, 제1 및 제2 조건 연산은 상호 배타적인 조건을 가지며, 제1 식별자는 제1 조건 연산의 조건의 평가에 따라 설정되고, 제2 식별자는 제2 조건 동작의 조건의 평가에 따라 설정되는 것을 특징으로 한다. 상호 배타적인 조건의 경우에, 단일 프로세서 사이클내에서 결과 데이터 양쪽 모두의 동일 레지스터로의 기록을 정적으로 스케줄링하는 것을 허용하면서, 식별자들중의 많아도 하나가 대응 결과 데이터가 무효한 것을 나타내는 것이 보장된다.
본 발명에 다른 처리 장치의 실시예는, 제1 및 제2 이슈 슬롯이 상기 결과 데이터의 유효성에 대한 제1 및 제2 식별자를 생성하기 위해 배열되는 것을 특징으로 한다. 이 실시예는 조건 동작의 가드(guard)의 결과를 레지스터 파일에 저장하는 것과, 제1 및 제2 식별자의 값을 제각기 결정하기 위해 이 결과들을 이슈 슬롯의 추가적인 입력 값으로서 사용하는 것을 허용한다.
본 발명에 따른 처리 장치의 실시예는, 상기 선택 회로는 다중-명령어 워드로부터 유도된 제어 정보를 이용해서 제1 이슈 슬롯으로부터의 제1 결과 데이터 또는 제2 이슈 슬롯으로부터의 제2 결과 데이터의 상기 레지스터 파일로의 전송을 정적으로 제어하기 위해 더 배열된다. 제어 정보를 사용해서, 어느 통신 채널을 거쳐 결과 데이터가 기록될 것인지가 선택될 수 있고, 비연산(no-operation) 명령어의 경우에, 결과 데이터의 레지스터 파일로의 재기록이 방지될 수 있다.
본 발명에 따른 처리 장치의 실시예는, 통신 네트워크가 상기 레지스터 파일의 입력에 연결된 제2 선택 회로를 더 포함하는 것을 특징으로 한다. 이 실시예의 이점은 부분적으로 연결된 네트워크의 경우에 명령어를 스케줄링하는 데에 있어서 보다 높은 유연성을 제공한다는 것이다.
본 발명에 따른 처리 장치의 실시예는, 레지스터 파일이 분산된 레지스터 파일인 것을 특징으로 한다. 분산된 레지스터 파일의 이점은, 레지스터 파일 세그먼트 당 보다 적은 읽기 및 쓰기 포트를 요구하여서 실리콘 영역의 견지에서 더 작은 레지스터 파일을 야기시키고, 레지스터 파일의 동작 속도를 증가시키는 것이다. 또한, 분산된 레지스터 파일 내의 레지스터의 어드레스 지정은 중앙집중적 레지스터 파일과 비교할 때 보다 적은 비트들을 요구한다.
본 발명에 따른 처리 장치의 실시예는, 통신 네트워크가 부분적으로 연결된 통신 네트워크라는 것을 특징으로 한다. 부분적으로 연결된 통신 네트워크는 종종 완전하게 연결된 통신 네트워크, 특별히 많은 수의 이슈 슬롯의 경우와 비교할 때, 코드 크기, 영역 및 전력 소모의 견지에서 종종 보다 덜 시간적으로 중대하고(critical), 비용이 덜 든다.
본 발명에 따른 처리 장치의 실시예는, 상기 적어도 하나의 선택 회로는 상기 결과 데이터의 유효성에 대한 대응하는 식별자를 사용함으로써 단일 프로세서 사이클 내에 적어도 제3 결과 데이터의 상기 레지스터 파일의 레지스터로의 전송을 동적으로 제어하기 위해 더 배열되는 것을 특징으로 한다. 선택 회로는 결과 데이터를 수신하기 위한 3개 이상의 입력 포트를 갖는 것과, 최대 하나의 결과 데이터가 유효할 것이 정적으로 알려진 한, 레지스터 파일에 다시 기록되도록 최대 하나의 결과 데이터를 동적으로 선택하는 것을 허용한다.
도 1은 본 발명에 따른 VLIW 프로세서의 개략적 블록도.
도 2는 선택 회로의 실시예의 개략적 블록도.
도 3은 본 발명에 따른 대안적인 VLIW 프로세서의 개략도.
도 4는 본 발명에 따른 다른 대안적인 VLIW의 개략도.
도 5는 본 발명에 따른 다른 대안적인 VLIW의 개략적 블록도.
도 6은 선택 회로의 대안적 실시예의 개략적 블록도.
도 1, 3 및 5을 참조하면, 개략 블록도가, 두 개의 레지스터 파일(RF1, RF2)과 두 개의 이슈 슬롯(IS1, IS2)을 포함하는 VLIW 프로세서를 설명한다. 인수(ID1, ID2)를 제각기 재생하기 위해, 레지스터 파일(RF1)은 이슈 슬롯(IS1)에 의해 액세스 가능하고, 레지스터 파일(RF2)은 이슈 슬롯(IS2)에 의해 액세스 가능하다. 이슈 슬롯(IS1, IS2)은 연결 네트워크(CN)을 통해 레지스터 파일(RF1, RF2)에 더 연결된다. 연결 네트워크(CN)는 두 개의 선택 회로(SC1, SC2)(도 1과 도 3에서만), 두 개의 멀티플렉서(MP1, MP2)(도 1에서만), 두 개의 멀티플렉서(MP3, MP4)(도 5에서만), 두 개의 선택 회로(SC3, SC4)(도 3과 5에서만)와 두 개의 통신 채널(CC1, CC2)을 포함한다. 통신 채널(CC1, CC2)은 예를 들면 결과 데이터(RD)를 위해 32 비트 값을, 예를 들면 결과 유효 신호(RV)를 위해 하나의 비트 값을 운반한다. 이슈 슬롯(IS1, IS2)은 적어도 하나의 기능 유닛을 포함하고, 예를 들면, 이슈 슬롯(IS1)은 산술/논리 유닛과 승산 유닛을 포함하고, 이슈 슬롯(IS2)은 산술/논리 유닛과 부하/저장 유닛을 포함한다. 산술/논리 유닛은 내부적으로 0의 파이프라인 단계를 가지고 있으며, 제각기의 연산 코드에 의해 제어되는 7개의 다른 연산: 승산, 감산, 논리곱, 논리합, 논리 XOR, 논리 좌측 이동과 논리 우측 이동을 포함할 수 있다. 승산 유닛은 내부적으로 하나의 파이프라인을 가지고 있으며, 제각기의 연산 코드에 의해 또한 제어되는 4개의 다른 연산: 부호있는 승산 하부 절반 결과(signed multiply lower half result), 부호있는 승산 상부 절반 결과(signed multiply upper half result), 부호없는 승산 하부 절반 결과(unsigned multiply lower half result), 부호없는 승산 상부 절반 결과(unsigned multiply upper half result)를 수행할 수 있다. 동작중에, VLIW 명령어 워드는 도 1, 3 및 5에서 도시되지 않은 프로그램 메모리로부터 재생되고, 이 명령어 워드가 디코딩된다. 일반적으로, VLIW 명령어 워드에서 인코딩된 명령어는 두 개의 피연산자를 필요로 하고 하나의 결과를 생성하는 RISC 유형의 연산과, 3개 이상의 피연산자를 소모하고, 2개 이상의 결과를 생성할 수 있는 맞춤형(custom) 연산을 포함할 수 있다. 어떤 명령어는 피연산자 데이터로서 인접값(immediate value)을 필요로 할 수 있다. 디코 딩 단계의 결과는 선택 신호(s1, s2)(도 1에서만), 선택 신호(s3, s4)(도 5에서만), 선택 신호(c1, c2, c3, c4)(도 1과 3에서만), 선택 신호(c5, c6, c7, c8)(도 3과 5에서만)이다. 디코딩 단계의 추가적인 결과는 대응 이슈 슬롯에 의해 수행되야할 연산을 정의하는, 이슈 슬롯(IS1, IS2)에 대한 연산 코드(도 1, 3 및 5에서 미도시), 대응 이슈 슬롯에 의해 수행될 연산에 대한 인자가 판독되야 할 레지스터 파일(RF1, RF2)로부터의 레지스터를 지시하는 레지스터 인덱스(도 1, 3 및 5에서 미도시), 결과 데이터가 기록될 레지스터 파일(RF1, RF2)로부터의 레지스터 인덱스(도 1, 3 및 5에서 미도시)이다. 연산 코드와 인수(ID1, ID2)는 이슈 슬롯(IS1, IS2)에 제각기 제공된다. 이슈 슬롯(IS1, IS2)은 그 연산 코드에 의해 정의된 연산을 수행하고, 결과 데이터(RD1, RD2)를 제각기 생성하고, 대응하는 결과 데이터의 유효성을 지시하는 유효 신호(OV1, OV2)를 출력한다. 출력 유효 신호는 예를 들면 1 비트 값이다. 결과 데이터가 유효하지 않은, 즉, 결과 데이터가 레지스터 파일(RF1 또는 RF2)에 다시 기록될 필요가 없는 경우에, 대응하는 출력 유효 신호는 이 결과 데이터를 생성하는 이슈 슬롯에 의해 거짓(false)이라고 설정된다. 도 1과 도 3을 참조하면, 결과 데이터(RD1), 출력 유효 신호(OV1), 결과 데이터(RD2)와 출력 유효 신호(OV2)가 선택 회로(SC1, SC2) 모두에 제공된다. 더 설명되듯이, 출력 유효 신호(OV1, OV2)와 선택 신호(c1, c2)의 제어 하에, 결과 데이터(RD)와 결과 유효 신호(RV)로서 통신 채널(CC2)을 거쳐 멀티플렉서(MP1, MP2)(도 1) 또는 선택 회로(SC3, SC4)(도 3)로의 전송을 위해 결과 데이터(RD1)와 출력 유효 신호(OV1), 또는 결과 데이터(RD2)와 출력 유효 신호(OV2)를 선택한다. 유사하게, 출력 유효 신 호(OV1, OV2)와 선택 신호(c3, c4)의 제어 하에, 결과 데이터(RD)와 결과 유효 신호(RV)로서 통신 채널(CC1)을 거쳐 멀티플렉서(MP1, MP2)(도 1), 또는 선택 회로(SC3, SC4)(도 3)로의 전송을 위해 결과 데이터(RD1)와 출력 유효 신호(OV1), 또는 결과 데이터(RD2)와 출력 유효 신호(OV2)를 선택한다. 도 5을 참조하면, 선택 신호(s3, s4)의 제어하에, 통신 채널(CC1, CC2)은 결과 데이터(RD)와 결과 유효 신호(RV)로서 선택 회로(SC3, SC4)에, 결과 데이터(RD1)와 대응하는 출력 유효 신호(OV1)를 기록하기 위해서, 또는 결과 데이터(RD2)와 대응하는 출력 유효 신호(OV2)를 기록하기 위해 멀티플렉서(MP3, MP4)에 의해 제각기 선택된다. 대안적인 실시예에서 도 1, 3 및 5를 다시 참조하면서, 이슈 슬롯(IS1, IS2)의 하나 이상의 기능 유닛은 가드(guard)된 연산을 지원하는데, 예를 들면, 추가적인 인자가 가드로서 사용된다. 조건 연산을 지원하는 시간-상주 다중-명령어 워드 프로세서는 출원자에 의해 출원된 이전의 유럽 특허 출원 03101038.2(대리인 관리번호 PHNL030384EPP)에서 설명된다. 조건 연산의 경우에서, 가드 값이 결정되고, 레지스터 파일(RF1 또는 RF2) 내에 추가적인 인자로서 저장된다. 조건 연산을 실행할 때, 가드의 값은 대응하는 출력 유효 신호(OV1 또는 OV2)의 값을 설정하기 위해 사용된다. 가드의 값이 참(true)인 경우, 출력 유효 신호가 대응하는 출력 유효 신호에 의해 다르게 설정되지 않으면, 대응 출력 유효 신호는 참이라고 설정된다. 가드의 값이 거짓인 경우, 대응 출력 유효 신호는 거짓이라고 설정되는데, 즉, 대응 결과 데이터가 무효화되고, 그러므로 레지스터 파일(RF1 또는 RF2)에 기록되지 않는다. 대안적으로, 가드는 이 연산을 수행할 때 추가적인 인자라고 간주되지 않지만, 대응 기능 유닛 의 파이프라인에 따라 지연되고, 이 기능 유닛의 출력 유효 신호와 논리곱 연산된다. 결과적으로, 가드가 거짓인 경우에, 가드와 출력 유효 신호의 논리곱 연산된 값도 또한 거짓이고, 대응 결과 데이터를 무효화하기 위해 사용된다.
도 1을 참조하면, 선택 신호(s2)의 제어하에, 멀티플렉서(MP1)는 결과 데이터(RD)의 레지스터 파일(RF1)로의 기록을 위해 통신 채널(CC1 또는 CC2)을 선택한다. 결과 유효 신호(RV)가 참인 경우, 결과 데이터(RD)의 레지스터 파일(RF1)로의 기록이 가능하게 되고, 그렇치 않으면, 결과 데이터(RD)의 레지스터 파일(RF1)로의 기록은 가능하지 않게 되는데, 즉, 결과 데이터(RD)는 레지스터 파일(RF1)에 다시 기록되지 않는다. 결과 유효 신호(RV)가 참인 경우, 결과 데이터(RD)는 VLIW 명령어 워드로부터 유도된 레지스터 어드레스의 제어하에 선택된 레지스터 파일(RF1)의 레지스터에 기록된다. 유사하게, 선택 신호(s1)의 제어하에, 멀티플렉서(MP2)는 결과 데이터(RD)의 레지스터 파일(RF2)로의 기록을 위해 통신 채널(CC1 또는 CC2)을 선택한다. 결과 유효 신호(RV)가 참인 경우, 결과 데이터(RD)의 레지스터 파일(RF2)로의 기록이 가능하게 되고, 그렇치 않으면, 결과 데이터(RD)의 레지스터 파일(RF2)으로의 기록은 가능하지 않게 된다. 결과 유효 신호(RV)가 참인 경우, 결과 데이터(RD)는 VLIW 명령어 워드로부터 유도된 레지스터 어드레스의 제어하에 선택된 레지스터 파일(RF2)의 레지스터에 기록된다.
선택 회로(SC1, SC2)의 실시예가 도 2에 도시된다. 선택 회로(SC3, SC4)는 동일한 실시예를 갖는다. 출력 유효 신호(OV1)와 선택 신호(c1)는 AND 게이트(201)로의 입력이다. 출력 유효 신호(OV2)와 선택 신호(c2)는 AND 게이트(203)로의 입력 이다. AND 게이트(201)의 출력과 결과 데이터(RD1)는 AND 게이트(205)로 입력된다. AND 게이트(203)의 출력과 결과 데이터(RD2)는 AND 게이트(207)로의 입력이다. AND 게이트(201)와 AND 게이트(203)의 출력들은 또한 OR 게이트(209)로의 입력이고, OR 게이트(209)는 결과 유효 신호(RV)를 출력한다. AND 게이트(205)와 AND 게이트(207)의 출력은 OR 게이트(211)로의 입력이고, OR 게이트(211)는 결과 데이터(RD)를 출력한다. 예를 들면, 출력 유효 신호(OV1, OV2), 선택 신호(c1, c2)와 결과 유효 신호는 1 비트 값들이고, 반면, 예를 들면, 결과 데이터(RD1, RD2, RD)는 32 비트 값들이다. 결과 데이터(RD1 또는 RD2)가 무효화된 경우, 선택 회로는 그 결과 데이터가 OR 게이트(211)에 의해 출력되는 것을 방지한다. 만약 출력 유효 신호(OV1) 또는 선택 신호(c1) 또는 양쪽 모두가 거짓이라면, 결과 데이터(RD1)가 무효화된다. 만약 출력 유효 신호(OV2) 또는 선택 신호(c2) 또는 양쪽 모두가 거짓이라면, 결과 데이터(RD2)가 무효화된다. 그러므로, 만약 출력 유효 신호(OV1)가 이슈 슬롯(IS1)에 의해 거짓으로 설정되면, 결과 데이터(RD1)는 동적으로 무효화된다. 만약 출력 유효 신호(OV2)가 이슈 슬롯(IS2)에 의해 거짓으로 설정되면, 결과 데이터(RD2)는 동적으로 무효화된다. 결과적으로, 결과 데이터(RD1) 또는 결과 데이터(RD2)가 레지스터 파일에 다시 기록되거나 아무런 결과 데이터도 레지스터 파일에 다시 기록되지 않는다. 만약 이 결과 데이터중에 기껏해야 하나가 유효하다는 것이 정정으로 알려지면, VLIW 명령어의 인코딩 동안에, 두 개의 결과 데이터 값의 레지스터 파일(RF1 또는 RF2)의 동일 레지스터로의 재기록이 단일 프로세서 사이클 내에서 안전하게 인코딩될 수 있다. 이러한 조건이 성취되는 한 예는 "if-then-else" 구문의 경우이다. 아래의 프로그램 단편:
if(조건) {
x = a + b;
}
else {
x = a - b;
}
두 연산 "x = a + b"와 "x= a - b"의 조건은 상호 배타적이고, 이러한 연산들은 이슈 슬롯(IS1)과 이슈 슬롯(IS2) 제각각의 기능 유닛에 의해 수행된다. 제1 또는 제2 연산의 결과는 변수(x)에 의해 참조되는 레지스터 파일(RF1)의 동일 레지스터에 기록되야 한다. 조건은 분리적인 명령어에서 평가되고, 가드의 값은 레지스터 파일(RF1)에서 저장되고, 그 보수(complement)는 레지스터 파일(RF2)에 저장된다. VLIW 명령어가 인코딩되어, 그 결과 양쪽 모든 연산이 동일 VLIW 명령어 워드에서 인코딩되고, 선택 신호(c1과 c2) 모두는 참으로 설정되고, 선택 신호(c3와 c4) 모두는 거짓으로 설정된다. 결과적으로, 연산 "x = a + b"는 이슈 슬롯(IS1)에 의해 실행되고, 연산 "x = a - b"는 이슈 슬롯(IS2)에 의해 실행된다. 참인 대응 출력 유효 신호(OV1)와 함께, 가드, 즉, 조건의 평가가 참이라는 것을 가정하면서, 이슈 슬롯(IS1)은 결과 데이터(RD1)를 출력한다. 거짓인 대응 출력 유효 신호(OV2)와 함께, 이슈 슬롯(IS2)은 결과 데이터(RD2)를 출력한다. 결과 데이터(RD2)는 선택 회로(SC1)에 의해 무효화되고, 한편 결과 데이터(RD1)는 유효하고, 선택 회로 (SC1)는 참인 대응 결과 유효 신호(RV)와 함께, 통신 채널(CC2)을 통해 결과 데이터(RD)로서 결과 데이터(RD1)를 출력한다. 선택 신호(c3, c4) 모두가 거짓이므로, 선택 회로(SC2)는 아무런 유효 결과 데이터(RD)를 출력하지 않는다. 도 1을 참조하면, 선택 신호(s2)를 사용해서, 통신 채널(CC2)이 멀티플렉서(MP1)에 의해 선택되고, 결과 데이터(RD1)는 레지스터 파일(RF1)의 적절한 레지스터에 다시 기록된다. 도 3과 5를 참조하면, 선택 신호(c6)를 참으로 설정하고, 선택 신호(c5, c7, c8)를 거짓으로 설정함으로써, 결과 데이터(RD1)가 레지스터 파일(RF1)의 적절한 레지스터에 기록되는데, 그 이유는 통신 채널(CC2)에 대응하는 결과 데이터(RD)가 유효하고, 즉, 대응 결과 유효 신호(RV)가 참이고, 한편, 통신 채널(CC1)에 대응하는 결과 데이터(RD)가 무효하고, 또한 선택 신호(c5)가 거짓으로 설정되기 때문이다. 선택 회로(SC1)는 결과 데이터(RD1, RD2) 중의 적어도 하나를 무효화하기 위해 출력 유효 신호(OV1, OV2)를 사용함으로써 단일 프로세서 사이클 내에 상기 프로그램 단편에서 도시된 연산 모두로부터의 결과 데이터의 재기록을 스케줄링하는 것을 허용한다. 결과적으로, 연산 양쪽 모두로부터의 재기록은, 선택 회로(SC2) 대신에 종래의 멀티플렉서가 사용된 경우에서처럼, 두 개의 다른 프로세서 사이클에서 스케줄링될 필요가 없다. 또한, 만약 예를 들면, 통신 채널(CC1)에 연결된 제3 이슈 슬롯이 존재한다면, 다른 통신 채널(CC1)을 결과 데이터의 재기록을 위해 자유롭게 남게 두면서, 결과 데이터(RD1, RD2)의 기록이 공유된 통신 채널(CC2) 상에서 스케줄링된다. 대안적인 실시예에서, 선택 신호(c1, c4)의 값이 참으로 설정되고, 선택 신호(c2, c3)의 값은 거짓으로 설정된다. 상기 예에서, 결과 데이터(RD1)는 유효하 고, 참인 대응 결과 유효 신호(RV)와 함께, 통신 채널(CC2)을 거쳐 결과 데이터(RD)로서 출력된다. 선택 신호(c2)가 거짓이므로, 결과 데이터(RD2)는 선택 회로(SC1)에 의해 무효화된다. 선택 신호(c3)가 거짓으로 설정되고, 결과 데이터(RD2)가 거짓인 출력 유효 신호(OV2)에 의해 무효화되기 때문에, 선택 회로(SC2)는 아무런 유효 결과 데이터(RD)도 출력하지 않는다. 도 1, 3 또는 5에 따른 VLIW 프로세서에 의해 실행될 VLIW 명령어를 인코딩할 때, 두 개의 결과 데이터의 레지스터 파일(RF1 또는 RF2)의 동일 레지스터로의 재기록은 단일 프로세서 사이클에서 스케줄링될 수 있다. 만약 이러한 결과 데이터중의 기껏해야 하나가 유효하다는 것이 정적으로 증명된다면, 재기록은 심지어 공유된 통신 채널(CC1 또는 CC2)상에서 스케줄링될 수 있지만, 두 개의 유효 결과 데이터가 단일 프로세서 사이클에서 레지스터 파일(RF1 또는 RF2)의 동일 레지스터에 기록되는 것이 정적으로 방지되어야 한다. 선택 신호(c1 - c4)의 값은 정적으로, 즉, 컴파일 시간에 결정되고, 결과 데이터를 레지스터 파일(RF1, RF2)에 다시 기록하기 위해 통신 채널(CC1 및/또는 CC2)을 선택하기 위해 사용된다. 도 1과 3에 따른 VLIW 프로세서의 다른 이점은 명령어 세트에서 전용(dedicated) 비연산(no-operation) 명령어를 인코딩하는 것이 필요치 않다는 것이다. 비연산 명령어가 이슈 슬롯(IS1)상에 스케줄링되는 경우에, 예를 들면, 이슈 슬롯(IS1)에 의해 생성된 모든 결과 데이터는 선택 신호(c1과 c3)를 사용해서 무효화되고, 비연산 명령어를 인코딩하기 위한 임의의 연산 코드가 사용될 수 있다. 이롭게, 만약 아무런 비연산 명령어가 스케줄링되지 않으면, 비연산 명령어를 나타내는 필드를 인코딩하기 위해 사용된 값들이 동일한 이슈 슬롯을 위한 인 접 명령어로부터 가능한 한 많이 반복되도록, 명령어가 인코딩된다. 결과적으로, VLIW 프로세서에서 대응 논리 조합은 선행 또는 후발 사이클에서와 동일한 값을 가지게 되며, 결과적으로 데이터 전이의 보다 덜한 리플링(rippling)과 따라서 불필요한 전력 소모가 발생하게 된다. 유사하게, 도 5를 참조해서, 이 이슈 슬롯을 위해 스케줄링된 비-연산 명령어의 경우에, 선택 신호(c5, c7)가 이 이슈 슬롯(IS1)에 의해 생성된 모든 결과 데이터를 무효화하기 위해 사용될 수 있다.
도 3을 참조하면, 이슈 슬롯의 출력에서의 선택 회로, 즉, 선택 회로(SC1, SC2)와 레지스터 파일의 입력에서의 선택 회로, 즉, 선택 회로(SC3, SC4)의 존재는부분적으로 연결된 통신 네트워크의 경우에 명령어를 스케줄링하는 데 있어서 보다 많은 유연성을 제공하는 이점을 지닌다. 많은 개수의 이슈 슬롯의 경우에, 완전하게 연결된 통신 네트워크의 오버헤드는 실리콘 영역, 지연과 전력 소모의 견지에서 고려될 수 있을 것이다. VLIW 프로세서의 설계 동안에, 실행되어야할 애플리케이션의 범위에 따라, 이슈 슬롯이 레지스터 파일에 어느 정도까지 연결되는지가 결정된다. 도 4를 참조하면, 부분적으로 서로 연결된 VLIW 프로세서가 도시된다. VLIW 프로세서는, 이슈 슬롯(IS1, IS2, IS3) 제각기에 의해 액세스 가능한 3개의 레지스터 파일(RF1, RF2, RF3)을 포함한다. 간략성을 위해, 연결 네트워크(CN)는 선택 회로 없이 도시되는데, 이 선택 회로는 레지스터 파일(RF1), 레지스터 파일(RF2)과 레지스터(RF3)의 입력뿐만 아니라, 이슈 슬롯(IS1), 이슈 슬롯(IS2)과 이슈 슬롯(IS3)의 출력에 실제적으로 연결된다. 이슈 슬롯(IS1)은 단지 결과 데이터를 통신 채널(CC2)을 거쳐 레지스터 파일에 다시 기록할 수 있고, 이슈 슬롯(IS3)은 단지 결과 데이터를 통신 채널(CC1)을 거쳐 레지스터 파일에 다시 기록할 수 있는데, 즉, VLIW 프로세서는 부분적으로 연결된 네트워크를 가지고 있다. 다시 간략성 때문에, 통신 채널(CC1, CC2)은 단일 선으로 도시되어 있지만, 실제적으로 결과 데이터(RD)와 결과 유효 신호(RV) 모두의 값을 이송한다. 아래의 프로그램 단편이 VLIW에 의해 실행되어야 하는 것이 가정된다:
if(조건) {
x = a + b;
}
else
{
x = a - b;
}
z = y*y
가드된 연산이 이슈 슬롯(IS1, IS2, IS3)에 의해 실행될 수 있다는 것을 가정하면, 이 연산은 세 개의 연산으로서 스케줄링될 수 있다:
연산1: if(조건) { x = a + b; }
연산2: if(!조건) { x = a - b;}
연산3: z=y*y
연산1은 이슈 슬롯(IS1)에 의해 실행되고, 연산2는 이슈 슬롯(IS2)에 의해 실행되고, 연산3은 이슈 슬롯(IS3)에 의해 실행된다. 연산1과 연산2의 변수 x는 레지스터 파일(RF1) 또는 레지스터 파일(RF2)의 동일 레지스터를 참조한다. 이슈 슬롯(IS1, IS2)은 통신 채널(CC2)과 고유 채널을 사용해서 그 제각기의 결과 데이터를 단일 프로세서 사이클에서 적절한 레지스터 파일에 기록할 수 있다. 동일 프로세서 사이클에서, 이슈 슬롯(IS3)은 그 결과 데이터를 통신 채널(CC1)을 거쳐 적절한 레지스터 파일에 기록할 수 있다. 대안적으로, 이슈 슬롯(IS2)이 연산으로서 가산 및 감산을 제공하지 않는다면, 연산1은 이슈 슬롯(IS1)에 의해 실행될 수 있고,연산2는 이슈 슬롯(IS3)에 의해 실행될 수 있다. 하지만, 이슈 슬롯(IS1, IS3)이 공통 통신 채널에 연결되지 않으므로, 제각기의 결과 데이터는 제각기 통신 채널(CC2, CC1)을 거쳐 적절한 레지스터 파일에 기록되어야 한다. 레지스터 파일(RF1, RF2)이 단일 포트 레지스터 파일인 것을 가정하면, 즉, 단지 하나의 값만이 단일 프로세서 사이클에 레지스터 파일에 기록될 수 있는 것을 가정하면, 이슈 슬롯(IS1, IS3)의 결과 데이터의 재기록은 단일 프로세서 사이클에서 여전히 스케줄링 될 수 있는데, 그 이유는 레지스터 파일(RF1, RF2, RF3)의 입력에서의 선택 회로는 대응 결과 유효 신호의 값을 사용해서 유효 결과 데이터를 동적으로 선택할 것이기 때문이다. 선택 회로 대신에 멀티플렉서가 레지스터 파일(RF1, RF2, RF3)의 입력에서 존재한다면, 통신 채널(CC1 또는 CC2)의 선택이 정적으로 이루어져야 하고, 그러면 이슈 슬롯(IS1, IS3)으로부터의 결과 데이터의 재기록은 단일 프로세서 사이클 대신에 두 개의 분리적인 프로세서 사이클에서 스케줄링 되어야 할 것이다. 따 라서, 이슈 슬롯의 출력에서 그리고 적절한 경우, 레지스터 파일의 입력 모두에서 선택 회로를 갖는 것은 명령어의 스케줄링에서의 유연성을 증가시키고, 그러므로, 보다 엄격한 명령어 스케줄을 허용한다.
도 5를 참조하면, 대안적인 실시예에서, 결과 데이터(RD1 또는 RD2)를 레지스터 파일(RF1, RF2)에 기록하기 위한 통신 채널(CC1 또는 CC2)의 선택은 선택 신호(s3 또는 s3)를 사용해서 멀티플렉서(MP3와 MP4)를 거쳐 수행된다. 선택 신호(c5, c6, c7 및 C8)의 제어 하에 선택 회로(SC3, SC4)를 사용해서, 단지 유효 결과 데이터(RD1 또는 RD2)만이 레지스터 파일(RF1 또는 RF2)에서 레지스터에 기록된다. 제1 프로그램 단편을 참조하면, 양쪽 모든 연산으로부터의 결과 데이터의 재기록은 단일 프로세서 사이클에서 스케줄링될 수 있다. 이슈 슬롯(IS1)에 대한 제1 연산과 이슈 슬롯(IS2)에 대한 제2 연산을 제각기 실행시키고, 통신 채널(CC2)과 통신 채널(CC1) 제각기를 거쳐 동일 프로세서 사이클에서 결과 데이터를 레지스터 파일(RF1)의 레지스터에 재기록하는 것을 스케줄링함으로써, 결과 데이터(RD1) 또는 결과 데이터(RD2)에 대응하는 결과 데이터(RD)가 선택 회로(SC3)에 의해 무효화된다. 그러므로, 단지 유효 결과 데이터(RD)만이 레지스터 파일(RF1)의 레지스터에 기록된다.
도 6을 참조하면, 선택 회로(SC1)의 대안적인 실시예가 도시된다. 선택 회로(SC1)는 멀티플렉서(605)를 포함하는데, 이 멀티플레서(605)는 AND 게이트(603)에 의해 제공되는 신호의 제어하에 결과 데이터(RD)로서 레지스터 파일(RF1 및/또는 RF2)에 다시 기록될 결과 데이터(RD1 또는 RD2)를 선택한다. 출력 유효 신호(OV1) 와 선택 신호(c1)는 AND 게이트(601)로의 입력이다. 출력 유효 신호(OV2)와 선택 신호(c2)는 AND 게이트(603)로의 입력이다. AND 게이트(601)와 AND 게이트(603) 양쪽 모두의 출력은 OR 게이트(607)로의 입력이다. AND 게이트(603)의 출력은 또한 레지스터 파일에 결과 데이터(RD)로서 기록될 결과 데이터(RD1 또는 RD2)의 선택을 제어하기 위한 멀티플렉서(605)로의 입력이다. OR 게이트(607)는 결과 유효 신호(RV)를 출력한다. 결과 데이터(RD2)는 선택 신호(c2)와 출력 유효 신호(OV2)가 참인 경우에 결과 데이터(RD)로서 다시 기록되기 위해 선택되며, 그렇치 않을 경우에 결과 데이터(RD2)는 결과 데이터(RD)로서 다시 기록되기 위해 선택된다. 결과 유효 신호(RV)의 값은, AND 게이트(601, 603)와 OR 게이트(607)를 사용해서, 선택 신호(c1, c2)의 값과 출력 유효 신호(OV1, OV2)의 값에 의해 결정된다. 결과 유효 신호(RV)가 거짓인 경우에, 대응 결과 데이터(RV)는 실제적으로 레지스터 파일에 기록되지 않을 것이다. 유사하게, 선택 회로(SC2, SC3 및 SC3)는 이 대안적인 실시예를 가질 수 있다.
다른 대안적인 실시예에서, 선택 회로(SC1, SC2, SC3 또는 SC4)는 레지스터 파일에 다시 기록될 세 개 이상의 결과 데이터로부터의 결과 데이터를 동적으로 선택하는 것을 허용하는 세 개 이상의 입력 포트를 포함할 수 있다. 각 결과 데이터는 대응 출력 유효 신호를 가진다. 컴파일 타임에 출력 유효 신호들 중의 기껏해야 하나가 런-타임에 유효할 것이고, 결과 데이터의 기록은 단일 프로세서 사이클에서 안전하게 스케줄링될 수 있다.
다른 실시예에서, 프로세서는 레지스터 파일(RF0, RF1)을 포함하는 분산된 레지스터 파일 대신에, 단일 레지스터 파일을 포함한다. VLIW 프로세서의 이슈 슬롯의 수가 상대적으로 작은 경우에, 단일 레지스터 파일의 오버헤드도 또한 상대적으로 작다.
다른 하나의 실시예에서, VLIW 프로세서는 다른 개수의 이슈 슬롯을 포함할수 있고/있거나 이슈 슬롯은 다른 개수의 기능 유닛을 포함할 수 있다. 기능 유닛의 개수는 여러 인자들 중에, VLIW가 실행해야 할 애플리케이션의 유형에 달려 있다. 프로세서는 상기 이슈 슬롯에 연결된 다른 개수의 레지스터 파일을 또한 가질 수 있다.
다른 실시예에서, 이슈 슬롯(IS0, IS1)은 이슈 슬롯이 수행해야 할 연산들, 즉, 두 개 이상의 피연산자를 요구하고/하거나 하나 이상의 결과들을 생성하는 연산들의 유형에 따라, 다른 개수의 입력 및/또는 출력 포트를 가질 수 있다. 레지스터 파일(RF0 및/또는 RF1)은 다른 개수의 판독 및/또는 기록 포트를 또한 가질 수 있다.
상기 언급된 실시예는 본 발명을 제한하기보다는 설명하는 것이고, 당업자는 첨부된 청구항들의 범위를 벗어나지 않고 많은 대안적인 실시예들을 설계할 수 있다는 것이 주목되어야 한다. 청구항들에서, 괄호 안에 기재된 임의의 참조 기호는 본 발명을 제한하는 것으로 해석되지 말아야 한다. 용어 "포함하는"은 청구항에 요소들이나 단계들의 존재를 배제하지 않는다. 단수형 요소는 이러한 요소들의 복수형의 존재를 배제하지 않는다. 다수의 수단들을 열거하는 장치 청구항에서, 다수의 이러한 수단은 단일 항목의 하드웨어에 의해 구현될 수 있다. 특정 조치가 배타적 으로 다른 종속항들에서 열거되었다는 사실은 이러한 조치들의 결합이 이득을 얻기 위해 사용될 수 없다는 것을 지정하지 않는다.
본 발명은 다중-명령어 워드를 실행하기 위해 배열된 처리 장치에 이용 가능하다.

Claims (12)

  1. 복수의 명령어를 가지는 다중-명령어 워드를 실행하기 위해 배열된 처리 장치로서,
    - 복수의 명령어의 병렬 실행을 위해 배열된 복수의 이슈 슬롯(IS1, IS2);
    - 복수의 이슈 슬롯에 의해 액세스 가능한 레지스터 파일(RF1, RF2);
    - 상기 복수의 이슈 슬롯과 상기 레지스터 파일을 연결하기 위한 통신 네트워크(CN)을 포함하는, 처리 장치에 있어서,
    상기 처리 장치는 제1 이슈 슬롯(IS1)에 의해 생성된 제1 결과 데이터(RD1)의 유효성에 관한 제1 식별자(OV1)와 제2 이슈 슬롯(IS2)에 의해 생성된 제2 결과 데이터(RD2)의 유효성에 관한 제2 식별자(OV2)를 생성하기 위해 더 배열되고,
    상기 통신 네트워크는 상기 제1 식별자와 상기 제2 식별자를 사용함으로써 단일 프로세서 사이클에서 상기 제1 결과 데이터 또는 상기 제2 결과 데이터의 상기 레지스터 파일의 레지스터로의 전송을 동적으로 제어하기 위해 배열되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  2. 제1항에 있어서, 상기 적어도 하나의 선택 회로는 상기 제1 및 제2 식별자를 사용함으로써 단일 프로세서 사이클내에 아무런 결과 데이터도 상기 레지스터 파일의 레지스터로 전송하지 않는 것을 동적으로 제어하기 위해 더 배열된, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  3. 제1항에 있어서, 상기 적어도 하나의 선택 회로는 제1 및 제2 이슈 슬롯에 제각기 연결되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  4. 제3항에 있어서, 상기 통신 네트워크는 공유된 통신 채널(CC1, CC2)을 거쳐 상기 제1 결과 데이터 또는 상기 제2 결과 데이터를 전송하기 위해 배열되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  5. 제1항에 있어서, 상기 적어도 하나의 선택 회로는 상기 레지스터 파일의 입력에 연결되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  6. 제1항에 있어서, 상기 제1 결과 데이터는 제1 조건 연산에 대응하고, 상기 제2 결과 데이터는 제2 조건 연산에 대응하고, 제1 및 제2 조건 연산은 상호 배타적인 조건을 가지며, 제1 식별자는 제1 조건 동작의 조건의 평가에 따라 설정되고, 제2 식별자는 제2 조건 연산의 조건의 평가에 따라 설정되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  7. 제6항에 있어서, 제1 및 제2 이슈 슬롯은 상기 결과 데이터의 유효성에 대한 제1 및 제2 식별자를 제각기 생성하기 위해 배열되는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  8. 제1항에 있어서, 상기 선택 회로는 다중-명령어 워드로부터 유도된 제어 정보(c1, c2)를 이용해서 제1 이슈 슬롯으로부터의 제1 결과 또는 제2 이슈 슬롯으로부터의 제2 결과 데이터의 상기 레지스터 파일로의 전송을 정적으로 제어하기 위해 더 배열되는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  9. 제3항에 있어서, 상기 통신 네트워크는 상기 레지스터 파일의 입력에 연결된 제2 선택 회로(SC3, SC4)를 더 포함하는 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  10. 제1항에 있어서, 상기 레지스터 파일은 분산된 레지스터 파일인 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  11. 제1항에 있어서, 상기 통신 네트워크는 부분적으로 연결된 통신 네트워크인 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
  12. 제1항에 있어서, 상기 적어도 하나의 선택 회로는 상기 결과 데이터의 유효성에 대한 대응하는 식별자를 사용함으로써 단일 프로세서 사이클 내에 적어도 제3 결과 데이터의 상기 레지스터 파일의 레지스터로의 전송을 동적으로 제어하기 위해 더 배열된 것을 특징으로 하는, 다중-명령어 워드를 실행하기 위해 배열된 처리 장치.
KR1020067023589A 2004-05-13 2005-05-09 다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택 KR101147190B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP04102109.8 2004-05-13
EP04102109 2004-05-13
PCT/IB2005/051502 WO2005111793A2 (en) 2004-05-13 2005-05-09 Run-time selection of feed-back connections in a multiple-instruction word processor

Publications (2)

Publication Number Publication Date
KR20070022260A true KR20070022260A (ko) 2007-02-26
KR101147190B1 KR101147190B1 (ko) 2012-05-25

Family

ID=34966680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067023589A KR101147190B1 (ko) 2004-05-13 2005-05-09 다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택

Country Status (6)

Country Link
US (1) US7937572B2 (ko)
EP (1) EP1751655A2 (ko)
JP (1) JP5989293B2 (ko)
KR (1) KR101147190B1 (ko)
CN (1) CN1950797A (ko)
WO (1) WO2005111793A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
US10802754B2 (en) * 2018-03-12 2020-10-13 Micron Technology, Inc. Hardware-based power management integrated circuit register file write protection
US10423218B1 (en) 2018-03-12 2019-09-24 Micron Technology, Inc. Power management integrated circuit with in situ non-volatile programmability

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0474297B1 (en) * 1990-09-05 1998-06-10 Koninklijke Philips Electronics N.V. Very long instruction word machine for efficient execution of programs with conditional branches
US5668985A (en) * 1994-03-01 1997-09-16 Intel Corporation Decoder having a split queue system for processing intstructions in a first queue separate from their associated data processed in a second queue
US5581717A (en) * 1994-03-01 1996-12-03 Intel Corporation Decoding circuit and method providing immediate data for a micro-operation issued from a decoder
US5673427A (en) * 1994-03-01 1997-09-30 Intel Corporation Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
JPH1124929A (ja) * 1997-06-30 1999-01-29 Sony Corp 演算処理装置およびその方法
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
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
JP3472504B2 (ja) * 1998-03-11 2003-12-02 松下電器産業株式会社 命令解読方法、命令解読装置及びデータ処理装置
US6535984B1 (en) * 1998-11-25 2003-03-18 Texas Instruments Incorporated Power reduction for multiple-instruction-word processors with proxy NOP instructions
US6442678B1 (en) * 1998-12-31 2002-08-27 Intel Corporation Method and apparatus for providing data to a processor pipeline
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
JP3664473B2 (ja) * 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
US7269719B2 (en) * 2002-10-30 2007-09-11 Stmicroelectronics, Inc. Predicated execution using operand predicates
US7159103B2 (en) * 2003-03-24 2007-01-02 Infineon Technologies Ag Zero-overhead loop operation in microprocessor having instruction buffer
US20040210886A1 (en) * 2003-04-15 2004-10-21 Sverre Jarp Optimized switch statement code employing predicates

Also Published As

Publication number Publication date
US20070174590A1 (en) 2007-07-26
CN1950797A (zh) 2007-04-18
KR101147190B1 (ko) 2012-05-25
JP2007537529A (ja) 2007-12-20
WO2005111793A3 (en) 2006-08-17
EP1751655A2 (en) 2007-02-14
JP5989293B2 (ja) 2016-10-05
US7937572B2 (en) 2011-05-03
WO2005111793A2 (en) 2005-11-24

Similar Documents

Publication Publication Date Title
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
US6826674B1 (en) Program product and data processor
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US7313671B2 (en) Processing apparatus, processing method and compiler
US7779240B2 (en) System and method for reducing power consumption in a data processor having a clustered architecture
JPH10105402A (ja) パイプライン方式のプロセッサ
KR101147190B1 (ko) 다중-명령어 워드 프로세서에서 피드백 접속의 런타임 선택
JP4828409B2 (ja) タイムステーショナリプロセッサにおける条件動作のためのサポート
JP5122277B2 (ja) データ処理方法、処理装置、多重命令ワードセット生成方法、コンパイラプログラム
CN113703845B (zh) 一种基于risc-v的可重构嵌入式处理器微架构及其工作方法
KR101099828B1 (ko) 프로세싱 시스템, 이 프로세싱 시스템에 의해서 인스트럭션의 집합을 실행하는 vliw 프로세서, 방법 및 컴퓨터 판독가능한 저장 매체
WO2005036384A2 (en) Instruction encoding for vliw processors
US20230120860A1 (en) Graph instruction processing method and apparatus
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee