KR101154077B1 - 시간 고정형 프로세서 및 그의 제어 방법 - Google Patents

시간 고정형 프로세서 및 그의 제어 방법 Download PDF

Info

Publication number
KR101154077B1
KR101154077B1 KR1020057019563A KR20057019563A KR101154077B1 KR 101154077 B1 KR101154077 B1 KR 101154077B1 KR 1020057019563 A KR1020057019563 A KR 1020057019563A KR 20057019563 A KR20057019563 A KR 20057019563A KR 101154077 B1 KR101154077 B1 KR 101154077B1
Authority
KR
South Korea
Prior art keywords
register file
identifier
time
execution unit
processor
Prior art date
Application number
KR1020057019563A
Other languages
English (en)
Other versions
KR20060004941A (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 KR20060004941A publication Critical patent/KR20060004941A/ko
Application granted granted Critical
Publication of KR101154077B1 publication Critical patent/KR101154077B1/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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

시간 고정형 인코딩(time-stationary encoding)의 경우에, 프로세서의 인스트럭션 세트의 일부분이 되는 모든 인스트럭션은 단일 머신 사이클 내에서 실행되어야 하는 전체 연산의 세트를 제어한다. 이러한 연산은 데이터 파이프라인(data pipeline)을 통과하는 여러 상이한 데이터 항목의 처리일 수 있다. 시간 고정형 인코딩은 때때로 애플리케이션 지정 프로세서에서 이용되는데, 더 큰 코드 크기를 감수하면 인스트럭션 내에 존재하는 제어 정보를 지연하기 위해 필요한 하드웨어의 오버헤드가 절약되기 때문이다. 시간 고정형 인코딩의 단점은 조건부 연산(conditional operations)을 지원하지 않는다는 것이다. 본 발명은 프로그램에 의해 획득되는 제어 정보를 이용하여 시간 고정형 프로세서의 레지스터 파일(register file)에 대해 결과 데이터를 되기록(write back)하는 것을 동적으로 제어하는 것을 제안한다. 실시간으로 데이터의 되기록을 제어함으로써, 시간 고정형 프로세서를 이용하여 조건부 연산을 구현할 수 있다.

Description

시간 고정형 프로세서 및 그의 제어 방법{SUPPORT FOR CONDITIONAL OPERATIONS IN TIME-STATIONARY PROCESSORS}
본 발명은 프로그램을 실행하도록 구성된 시간 고정형 프로세서(time-stationary processor)에 관한 것으로, 이러한 프로세서는, 복수의 실행 유닛(execution units)과, 실행 유닛에 의해 액세스 가능한 레지스터 파일과, 실행 유닛과 레지스터 파일을 접속하는 통신 네트워크와, 프로그램으로부터 도출된 제어 정보에 기초하여 프로세서를 제어하도록 구성된 제어기를 포함한다.
또한 본 발명은 프로그램을 실행하도록 구성된 시간 고정형 프로세서를 제어하는 방법에 관한 것으로서, 이러한 시간 고정형 프로세서는, 복수의 실행 유닛과, 실행 유닛에 의해 액세스 가능한 레지스터 파일과, 실행 유닛과 레지스터 파일을 접속하는 통신 네트워크와, 프로그램으로부터 도출된 제어 정보에 기초하여 프로세서를 제어하도록 구성된 제어기를 포함한다.
디지털 신호 처리는 원격 통신, 멀티미디어 및 소비 가전 산업계에서 중요한 역할을 하고 있다. 디지털 신호 처리에 포함된 연산을 실행하기 위해서, 디지털 신호 프로세서로서 지칭되는 특수한 타입의 프로세서를 설계할 수 있다. 디지털 신호 프로세서는 프로그래밍 가능형 프로세서이거나 애플리케이션 특정 인스트럭션-세트 프로세서일 수 있다. 프로그래밍 가능형 프로세서는 범용 프로세서(general-purpose processors)이고, 음향, 이미지 및 비디오를 포함하는 여러 타입의 정보를 처리하는 데 있어서 이용될 수 있다. 애플리케이션 특정 인스트럭션-세트 프로세서의 경우에, 프로세서 아키텍처 및 인스트럭션 세트는 주문형(customized)이 되고, 이것은 시스템의 비용 및 전력 손실을 크게 감소시킨다. 후자는 휴대형 및 네트워크 전력 공급형 장치에 있어서 매우 중요하다.
디지털 신호 프로세서 아키텍처는 고정된 데이터 경로로 이루어지고, 이것은 제어 워드의 세트에 의해 제어된다. 각각의 제어 워드는 데이터 경로의 일부분을 제어하고, 이러한 부분은 ALU(arithmetic logic units) 또는 다른 기능 유닛을 위한 레지스터 어드레스 및 연산 코드(operation codes)를 포함할 수 있다. 각각의 인스트럭션 세트는, 일반적으로 인스트럭션의 이진 포맷(binary format)을 대응하는 제어 워드로 변환하는 인스트럭션 디코더를 이용하거나, 제어 워드를 직접적으로 포함하는 마이크로 저장 장치(micro store) 즉, 메모리를 이용하여 새로운 세트의 제어 워드를 생성한다. 전형적으로, 제어 워드는 연산 코드, 2개의 오퍼랜드 레지스터 인덱스(operand register indices) 및 결과 레지스터 인덱스를 포함하는 RISC 유사 연산을 나타낸다. 오퍼랜드 레지스터 인덱스 및 결과 레지스터 인덱스는 레지스터 파일 내의 레지스터를 지칭한다.
VLIW(Very Large Instruction Word) 프로세서는 때때로 디지털 신호 처리를 위해 이용된다. VLIW 프로세서의 경우에, 다수의 인스트럭션은 하나의 긴 인스트럭션으로 패키징(packaged)되어, 소위 VLIW 인스트럭션이 된다. VLIW 프로세서는 다수의, 독립적인 실행 유닛을 이용하여 이러한 다수의 인스트럭션을 병렬로 실행한다. 프로세서는 프로그램 내에서 인스트럭션 레벨 병렬화(parallelism)의 이용을 가능하게 하고, 그에 따라 한번에 하나 이상의 인스트럭션을 실행한다. 이러한 형태의 동시적 처리에 기인하여, 프로세서의 성능이 증가된다. 소프트웨어 프로그램이 VLIW 프로세서 상에서 실행될 수 있게 하기 위해서, 이러한 소프트웨어 프로그램은 VLIW 인스트럭션의 세트로 변환되어야 한다. 컴파일러(compiler)는 병렬화를 최적화함으로써 프로그램을 실행하는 데 필요한 시간을 최소화하려고 시도한다. 컴파일러는 단일 VLIW 인스트럭션에 할당된 인스트럭션이 병렬로 실행될 수 있다는 한계 및 데이터 의존성 한계 하에서 인스트럭션들을 VLIW 인스트럭션으로 결합한다. VLIW 인스트럭션 내에서 병렬 인스트럭션의 인코딩은 코드 크기의 상당한 증가를 초래한다. 큰 코드 크기는 요구되는 메모리 크기 및 요구되는 메모리 대역폭에 모두 관련하여 프로그램 메모리 비용의 증가를 초래한다. 현대의 VLIW 프로세서에서, 코드 크기를 감소시키기 위해 여러 방법을 이용한다. 중요한 일례로는 데이터 고정형 VLIW 프로세서 내에서 NOP(no operation) 연산의 간결한 표현이 있는데, 다시 말해서, NOP 연산은 VLIW 인스트럭션의 전방(front)에 부착된 특수 헤더(special header) 내의 단일 비트에 의해 인코딩되어, 압축된 VLIW 인스트럭션을 생성한다.
프로세서의 데이터 파이프라인 내의 연산을 제어하기 위해서, 컴퓨터 아키텍 처 내에서는 통상적으로 2개의 서로 다른 메커니즘이 이용되는데, 이러한 2개의 서로 다른 메커니즘은 G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem 및 P. Paulin에 의한 "Embedded software in real-time signal processing systems: design technologies"라는 제목의 문헌(Proceedings of the IEEE, vol. 85, no. 3, March 1997)에 개시된 바와 같이 데이터-고정형(data-stationary) 및 시간 고정형(time-stationary) 인코딩이다. 데이터-고정형 인코딩의 경우에, 프로세서의 인스트럭션 세트의 일부분이 되는 모든 인스트럭션은, 그 인스트럭션이 데이터 파이프라인을 통과할 때 특정 데이터 항목에 대해 실행되어야 하는 연산의 완전한 시퀀스를 제어한다. 인스트럭션이 프로그램 메모리로부터 인출(fetched)되고 디코딩되면, 프로세서 제어기 하드웨어는 정확한 머신 사이클(correct machine cycle) 내에서 구성 연산이 실행될 수 있도록 보장할 것이다. 시간 고정형 코딩의 경우에, 프로세서의 인스트럭션 세트의 일부분이 되는 모든 인스트럭션은, 단일 머신 사이클 내에서 실행되어야 하는 연산의 완전한 세트를 제어한다. 이러한 연산은 데이터 파이프라인을 통과하는 여러 서로 다른 데이터 항목에 적용될 수 있다. 이러한 경우에, 데이터 파이프라인을 셋업하고 관리하는 것은 프로그래머 또는 컴파일러(compiler)의 책임 하에서 이루어진다. 결과적인 파이프라인 스케쥴은 머신 코드 프로그램 내에서 완전히 볼 수 있게 된다. 시간 고정형 인코딩은 때때로 코드 크기가 더 커지는 것을 감수하고 인스트럭션 내에 존재하는 제어 정보를 지연시키기 위해 필요한 하드웨어의 오버헤드를 절약하기 때문에, 애플리케이션 특정 프로세서 내에서 이용된다.
조건부 연산, 즉 실시간으로 계산된 조건에 기초한 결과를 복귀시키는 연산을 지원할 수 없다는 것이 시간 고정형 프로세서의 단점이다. 시간 고정형 인코딩은 레지스터 파일에 대한 결과의 되기록(write back)을 포함하는 모든 제어 정보가, 컴파일 시간에 정적으로 결정되고, 프로그램으로 인코딩되는 것을 요구한다.
본 발명의 목적은 시간 고정형 인코딩의 이점을 유지하면서, 점프 연산을 이용하지 않고 시간 고정형 프로세서 내의 연산들의 조건부 실행을 이용할 수 있게 하는 것이다.
이러한 목적은 개시된 바와 같은 프로세서에 의해 이루어질 수 있는데, 이러한 프로세서는 제어 정보에 기초하여 복수의 실행 유닛 중 하나의 실행 유닛으로부터 레지스터 파일로 결과 데이터를 전달하는 것을 동적으로 제어하도록 추가적으로 구성되는 것을 특징으로 한다. 레지스터 파일에 대한 결과 데이터의 되기록을 동적으로 제어함으로써, 연산의 결과 데이터가 레지스터 파일에 되기록되어야 하는지 여부를 판정할 수 있다. 결과적으로, 연산의 조건부 실행은 점프 연산을 이용하지 않고서 시간 고정형 프로세서 상에서 실행될 수 있다.
본 발명의 일실시예는 제어 정보가 연산의 유효성(validity)에 대한 제 1 식별자(identifier)를 포함하고, 시간 고정형 프로세서가 제 1 식별자에 기초하여 연산에 대응하는 결과 데이터를 레지스터 파일에 기록하는 것을 동적으로 제어하도록 구성된다는 것을 특징으로 한다. 무효 연산(invalid operation)의 경우에, 다시 말해서 소위 NOP 연산의 경우에, 레지스터 파일에는 결과 데이터가 되기록될 필요가 없다. 식별자를 이용함으로써, 무효 연산의 경우에 결과 데이터의 되기록은 직접적으로 디스에이블된다.
본 발명의 일실시예는 제 1 식별자가 연산을 실행하도록 구성된 대응하는 실행 유닛의 파이프라인(pipeline)에 따라서 지연되는 것을 특징으로 한다. 실행 유닛의 파이프라인에 따라서 식별자를 지연시킴으로써, 결과 데이터의 되기록을 판정하는 데 요구되는 정보는 결과 데이터 그 자체와 동시에 실행 유닛의 출력에서 이용 가능하게 된다.
본 발명의 일실시예는 실행 유닛이 실행 유닛의 대응하는 출력 포트(output port)의 출력 결과의 유효성에 대한 제 2 식별자를 생성하도록 구성되고, 시간 고정형 프로세서가 제 1 식별자 및 제 2 식별자에 기초하여 연산에 대응하는 결과 데이터를 레지스터 파일에 기록하는 것을 동적으로 제어하도록 추가적으로 구성되는 것을 특징으로 한다. 결과적으로, 실행 유닛에 의해 실행될 연산은 하나 이상의 유효 출력을 잠재적으로 생성하도록 허용된다.
본 발명의 일실시예는 이러한 프로세서가 제 1 식별자, 제 2 식별자 및 입력 데이터에 기초하여 연산에 대응하는 결과 데이터를 레지스터 파일에 기록하는 것을 동적으로 제어하도록 추가적으로 구성되는 것을 특징으로 한다. 입력 데이터는 참 조건(true condition) 또는 거짓 조건(false condition)을 나타낼 수 있는데, 이것은 별도의 실행 유닛으로 결정될 수 있고, 그 후에 보호형 연산(guarded operation)을 효과적으로 실행하기 위해서 다른 기능 유닛 내에서 이용될 수 있다.
본 발명의 일실시예는 레지스터 파일이 분산형 레지스터 파일인 것을 특징으로 한다. 분산형 레지스터 파일의 이점은 레지스터 파일 세그먼트 당 더 적은 개수의 판독 및 기록 포트를 필요로 하기 때문에, 실리콘 영역에 대한 레지스터 파일의 크기가 더 작아지게 한다. 또한, 분산형 레지스터 파일 내에서 레지스터의 어드레싱은 중앙 레지스터 파일에 비해서 더 적은 비트를 필요로 한다.
본 발명의 일실시예는 통신 네트워크가 부분 접속형 통신 네트워크인 것을 특징으로 한다. 부분 접속형 통신 네트워크는 때때로 전체 접속형 통신 네트워크에 비교할 때(특히, 많은 수의 실행 유닛이 존재하는 경우), 타이밍이 더 중요하지는 않고, 코드 크기, 면적 및 전력 소모와 관련된 비용이 더 적다.
본 발명에 따르면, 프로세서의 제어 방법은 제어 정보를 이용하여 복수의 실행 유닛 중 하나의 실행 유닛으로부터 레지스터 파일로 결과 데이터를 전달하는 것을 동적으로 제어하는 단계를 포함하는 것을 특징으로 한다. 실행 유닛에 대한 결과 데이터의 전달을 동적으로 제어함으로써, 결과 데이터가 레지스터 파일에 되기록되어야 하는지 여부를 실시간으로 결정함으로써, 시간 고정형 인코딩에 의해 보호된 연산의 구현을 가능하게 한다.
도 1은 본 발명에 따른 제 1 VLIW 프로세서를 도시하는 개략적인 블록도.
도 2는 본 발명에 따른 제 2 VLIW 프로세서를 도시하는 개략적인 블록도.
도 1 및 도 2를 참조하면, 복수의 실행 유닛(EX1, EX2)과, 레지스터 파일 세그먼트(RF1, RF2)를 포함하는 분산형 레지스터 파일을 포함하는 VLIW 프로세서에 대한 개략적인 블록도가 도시된다. 레지스터 파일 세그먼트(RF1, RF2)는 레지스터 파일에서 입력 데이터(ID)를 검색하기 위해 제각기 실행 유닛(EX1, EX2)에 의해 액세스 가능하다. 실행 유닛(EX1, EX2)은 또한 상기 실행 유닛으로부터 분산형 레지스터 파일로 결과 데이터(RD1, RD2)를 전달하기 위해서 통신 네트워크(CN) 및 멀티플렉서(MP1, MP2)를 통해 레지스터 파일 세그먼트(RF1, RF2)에 결합되어 있다. 제어기(CTR)는 프로그램 메모리(PM)에서 인스트럭션을 검색하고, 이러한 인스트럭션을 디코딩한다. 일반적으로, 이러한 인스트럭션은 오로지 2개의 오퍼랜드(operands)만을 필요로 하며, 오로지 하나의 결과만을 생성하는 RISC 유사 연산(RISC like operation)과, 2개 이상의 오퍼랜드를 소모하고/또는 하나 이상의 결과를 생성할 수 있는 커스텀 연산(custom operations)을 포함한다. 몇몇 인스트럭션은 오퍼랜드 데이터로서 더 작거나 더 큰 순간 값(immediate values)을 요구할 수 있다. 디코딩 단계의 결과로는 기록 선택 인덱스(WS1, WS2), 기록 레지스터 인덱스(WR1, WR2), 판독 레지스터 인덱스(RR1, RR2), 연산 유효 인덱스(operation valid indices)(OPV1, OPV2) 및 연산 코드(opcodes)(OC1, OC2)가 있다. 제어기(CTR)와 멀티플렉서(MP1, MP2) 사이의 커플링을 이용하여, 기록 선택 인덱스(WS1, WS2)를 제각기 멀티플렉서(MP1, MP2)에 제공한다. 기록 선택 인덱스(WS1, WS2)는 레지스터 파일 세그먼트(RF1, RF2)에 각각 기록되어야 하는 데이터(WD1, WD2)에 대 한 통신 네트워크(CN)에서 요구되는 입력 채널을 선택하기 위해 대응하는 멀티플렉서에 의해서 이용된다. 기록 선택 인덱스(WS1, WS2)는 또한 대응하는 레지스터 파일 세그먼트(RF1, RF2)에 대해 데이터(WD1, WD2)의 실제 기록을 인에이블 또는 디스에이블하기 위해 이용되는 기록 인에이블 인덱스(WE1, WE2)에 대한 통신 네트워크(CN)로부터의 입력 채널을 선택하기 위해서 대응하는 멀티플렉서에 의해 이용된다. 제어기(CTR)는 데이터가 기록될 대응하는 레지스터 파일 세그먼트 중에서 하나의 레지스터를 선택하기 위해서, 각각 기록 레지스터 인덱스(WR1, WR2)를 제공하는 레지스터 파일 세그먼트(RF1, RF2)에 결합된다. 또한, 제어기(CTR)는 각각의 실행 유닛(EX1, EX2)에 의해 입력 데이터(ID)가 판독되어야 하는 대응하는 레지스터 파일 세그먼트 중에서 하나의 레지스터를 선택하기 위해서, 레지스터 파일 세그먼트(RF1, RF2)에 대해 각각 판독 레지스터 인덱스(RR1, RR2)를 제공한다. 제어기(CTR)는 대응하는 입력 데이터(ID)에 대해 실행 유닛(EX1 또는 EX2)이 실행하여야 하는 연산의 타입을 규정하는 연산 코드(opcodes)(OC1, OC2)를 각각 제공하기 위해서 실행 유닛(EX1, EX2)에도 또한 결합되어 있다. 연산 유효 인덱스(OPV1, OPV2)는 또한 실행 유닛(EX1, EX2)에 각각 제공되고, 이러한 인덱스는 유효 연산이 대응하는 연산 코드(OC1 또는 OC2)에 의해 규정되어야 하는지 여부를 나타낸다. 연산 유효 인덱스(OPV1, OPV2)의 값은 VLIW 인스트럭션의 디코딩 동안에 결정된다. 종래 기술의 시간 고정형 프로세서에서, 실행 유닛으로부터 레지스터 파일로의 데이터 기록을 인에이블 또는 디스에이블하는 데 이용되는 기록 인에이블 인덱스를 정적으로 결정하는데, 왜냐하면 이들은 컴파일 시간에 프로그램으로 인코딩되기 때문 이다. 제어기는 디코딩 이후에 프로그램으로부터 기록 인에이블 인덱스를 획득하고, 레지스터 파일에 기록 인에이블 인덱스를 직접적으로 제공한다.
도 1을 참조하면, 제어기(CTR)는 레지스터(105)에 결합된다. 제어기(CTR)는 디코딩 단계 동안에 프로그램으로부터 연산 유효 인덱스(OPV1, OPV2)를 도출하고, 이러한 연산 유효 인덱스는 레지스터(105)에 제공된다. 인코딩된 연산이 NOP 연산인 경우에, 연산 유효 인덱스는 거짓(false)으로 설정되고, 인코딩된 연산이 NOP 연산이 아닌 경우에 연산 유효 인덱스는 참(true)으로 설정된다. 연산 유효 인덱스(OPV1, OPV2)는 레지스터(105, 107, 109)를 이용하여 대응하는 실행 유닛(EX1, EX2)의 파이프라인에 따라서 지연된다. 연산 코드(opcodes)(OC1, OC2)에 의해 각각 규정된 바와 같이 실행 유닛(EX1, EX2)에 의해 연산을 실행한 후에, 대응하는 출력 유효 인덱스(OV1, OV2)뿐만 아니라 대응하는 결과 데이터(RD1, RD2)를 생성한다. 대응하는 결과 데이터(RD1 또는 RD2)가 유효한 경우에 출력 유효 인덱스(OV1 또는 OV2)는 참이 되고, 유효하지 않다면 거짓이 된다. 유닛(unit)(101)은 지연된 연산 유효 인덱스(OPV1) 및 출력 유효 인덱스(OV1)에 대해 로직 AND를 실행하여, 결과 유효 인덱스(RV1)를 생성한다. 유닛(103)은 지연된 연산 유효 인덱스(OPV2) 및 출력 유효 인덱스(OV2)에 대해 로직 AND를 실행하여, 결과 유효 인덱스(RV2)를 생성한다. 유닛(101, 103)은 모두 결과 유효 인덱스(RV1, RV2)를 멀티플렉서(MP1, MP2)에 전달하기 위해서 부분 접속형 네트워크(CN)를 통해 멀티플렉서(MP1, MP2)에 결합되어 있다. 기록 선택 인덱스(WS1, WS2)는 결과 데이터가 대응하는 레지스터 파일 세그먼트에 기록되어야 하는 접속 네트워크(CN)로부터 채널을 선택하기 위해 대응하는 멀티플렉서(MP1, MP2)에 의해 이용된다. 결과 데이터 채널이 멀티플렉서에 의해 선택되는 경우에, 결과 유효 인덱스(RV1, RV2)는 결과 데이터(RD1, RD2)를 레지스터 파일 세그먼트(RF1, RF2)에 각각 기록하는 것을 제어하도록 기록 인에이블 인덱스(WE1, WE2)를 설정하는 데 이용된다. 멀티플렉서(MP1 또는 MP2)가 결과 데이터(RD1)에 대응하는 입력 채널을 선택한 경우에, 결과 유효 인덱스(RV1)를 이용하여 해당 멀티플렉서에 대응하는 기록 인에이블 인덱스를 설정하고, 결과 데이터(RD2)에 대응하는 입력 채널이 선택된 경우에, 결과 유효 인덱스(RV2)를 이용하여 대응하는 기록 인에이블 인덱스를 설정한다. 결과 유효 인덱스(RV1 또는 RV2)가 참이면, 대응하는 멀티플렉서(MP1, MP2)에 의해 적절한 기록 인에이블 인덱스(WE1 또는 WE2)를 참으로 설정한다. 기록 인에이블 인덱스(WE1 또는 WE2)가 참인 경우에, 결과 데이터(RD1 또는 RD2)는 레지스터 파일 세그먼트에 대응하는 기록 레지스터 인덱스(WR1 또는 WR2)에 의해 선택된 레지스터 내의 레지스터 파일 세그먼트(RF1 또는 RF2)에 기록된다. 기록 인에이블 인덱스(WE1 또는 WE2)가 거짓으로 설정되는 경우에, 대응하는 기록 선택 인덱스(WS1 또는 WS2)를 이용하여 대응하는 레지스터 파일 세그먼트(RF1 또는 RF2)에 데이터를 기록하는 입력 채널을 선택한다고 해도 해당 레지스터 파일 세그먼트에는 어떤 데이터도 기록되지 않을 것이다. 레지스터 파일 세그먼트(RF1, RF2) 각각의 주어진 기록 포트를 통해 임의의 결과 데이터(RD1 또는 RD2)의 되기록을 디스에이블하기 위해서, 해당 레지스터 파일 세그먼트에 대응하는 기록 선택 인덱스(WS1 또는 WS2)를 이용하여 대응하는 멀티플렉서(MP1 또는 MP2)로부터 디폴트 입력(111)을 선택할 수 있고, 이러한 경우에 어떤 결과 데이터도 해당 레지스터 파일 세그먼트에 기록되지 않을 것이다.
도 2를 참조하면, 제어기(CTR)는 로직 유닛(201, 205)에 결합된다. 제어기(CTR)는 디코딩 단계 동안에 프로그램에서 연산 유효 인덱스(OPV1, OPV2)를 검색하고, 이러한 연산 유효 인덱스는 로직 유닛(201, 205)에 각각 제공된다. 인코딩된 연산이 NOP 연산인 경우에, 연산 유효 인덱스는 거짓으로 설정되고, NOP 연산이 아니라면 연산 유효 인덱스는 참으로 설정된다. 레지스터 파일 세그먼트(RF1, RF2)는 유닛(201, 205)에 각각 결합되고, 대응하는 가드(guards)(GU1, GU2)는 레지스터 파일 세그먼트(RF1, RF2)로부터 유닛(201, 205)으로 각각 기록될 수 있다. 가드(GU1, GU2)는 가드의 값을 결정하는 연산의 산출 결과(outcome)에 따라서 참 또는 거짓이 될 수 있다. 유닛(201, 205)은 대응하는 연산 유효 인덱스(OPV1 또는 OPV2) 및 대응하는 가드(GU1 또는 GU2)에 대해 로직 AND를 수행한다. 결과적인 인덱스는 레지스터(209, 211, 213)를 이용하는 대응하는 실행 유닛(EX1, EX2)의 파이프라인에 따라서 지연된다. 연산 코드(OC1 또는 OC2)에 의해 규정되는 연산이 각각 실행 유닛(EX1, EX2)에 의해 실행된 후에, 대응하는 출력 유효 인덱스(OV1, OV2)뿐만 아니라 대응하는 결과 데이터(RD1, RD2)가 생성된다. 대응하는 결과 데이터(RD1 또는 RD2)가 유효 출력 데이터이면 출력 유효 인덱스(OV1, OV2)는 참이 되고, 대응하는 결과 데이터(RD1 또는 RD2)가 유효 출력 데이터가 아니면 거짓이 된다. 유닛(203)은 가드(GU1) 및 연산 유효 인덱스(OPV1)에 의해 생성된 지연된 인덱스와 출력 유효 인덱스(OV1)에 대해 로직 AND를 실행하여, 결과 유효 인덱스(RV1)를 생성한다. 유닛(207)은 가드(GU2) 및 연산 유효 인덱스(OPV2)에 의해 생성된 지연된 인덱스와 출력 유효 인덱스(OV2)에 대해 로직 AND를 실행하여, 결과 유효 인덱스(RV2)를 생성한다. 유닛(203, 207)은 결과 유효 인덱스(RV1, RV2)를 멀티플렉서(MP1, MP2)에 전달하기 위해서 부분 접속형 네트워크(CN)를 통해 각각 멀티플렉서(MP1, MP2)에 결합되어 있다. 결과 데이터(RD1 또는 RD2)를 레지스터 파일 세그먼트(RF1, RF2)에 기록하는 것을 제어하기 위해서 결과 유효 인덱스(RV1, RV2)를 이용하여 기록 인에이블 인덱스(WE1 또는 WE2)를 설정한다. 기록 선택 인덱스(WS1, WS2)는 결과 데이터가 대응하는 레지스터 파일 세그먼트에 기록되어야 하는 접속 네트워크(CN)로부터 채널을 선택하는 데 있어서 대응하는 멀티플렉서(MP1, MP2)에 의해 이용된다. 결과 데이터 채널이 멀티플렉서에 의해 선택되는 경우에, 결과 유효 인덱스(RV1, RV2)는 결과 데이터(RD1, RD2)를 레지스터 파일 세그먼트(RF1, RF2)에 각각 기록하는 것을 제어하도록 기록 인에이블 인덱스(WE1, WE2)를 설정하는 데 이용된다. 멀티플렉서(MP1 또는 MP2)가 결과 데이터(RD1)에 대응하는 입력 채널을 선택한 경우에, 결과 유효 인덱스(RV1)를 이용하여 해당 멀티플렉서에 대응하는 기록 인에이블 인덱스를 설정하고, 결과 데이터(RD2)에 대응하는 입력 채널이 선택된 경우에, 결과 유효 인덱스(RV2)를 이용하여 대응하는 기록 인에이블 인덱스를 설정한다. 결과 유효 인덱스(RV1 또는 RV2)가 참이면, 대응하는 멀티플렉서(MP1, MP2)에 의해 적절한 기록 인에이블 인덱스(WE1 또는 WE2)를 참으로 설정한다. 기록 인에이블 인덱스(WE1 또는 WE2)가 참인 경우에, 결과 데이터(RD1 또는 RD2)는 레지스터 파일 세그먼트에 대응하는 기록 레지스터 인덱스(WR1 또는 WR2)에 의해 선택된 레지스터 내의 레지스터 파일 세그먼트(RF1 또는 RF2)에 기록된다. 기록 인에이블 인덱스(WE1 또는 WE2)가 거짓으로 설정되는 경우에, 대응하는 기록 선택 인덱스(WS1 또는 WS2)를 이용하여 대응하는 레지스터 파일 세그먼트(RF1 또는 RF2)에 데이터를 기록하는 입력 채널을 선택한다고 해도 해당 레지스터 파일 세그먼트에는 어떤 데이터도 기록되지 않을 것이다. 레지스터 파일 세그먼트(RF1, RF2) 각각의 주어진 기록 포트를 통해 임의의 결과 데이터(RD1 또는 RD2)의 되기록을 디스에이블하기 위해서, 해당 레지스터 파일 세그먼트에 대응하는 기록 선택 인덱스(WS1 또는 WS2)를 이용하여 대응하는 멀티플렉서(MP1 또는 MP2)로부터 디폴트 입력(111)을 선택할 수 있고, 이러한 경우에 어떤 결과 데이터도 해당 레지스터 파일 세그먼트에 기록되지 않을 것이다.
도 1 및 도 2에 따른 시간 고정형 VLIW 프로세서는 레지스터 파일에 대한 결과 데이터의 되기록을 동적으로 제어할 수 있게 한다. 실행된 연산의 결과 데이터가 레지스터 파일에 되기록되어야 하는 경우에 실행 시간 동안에 결정될 수 있다. 결과적으로, 조건부 연산은 인스트럭션의 시간 고정형 인코딩을 이용하는 프로세서에 의해 구현될 수 있다.
이하에서 프로그램 코드의 일부분에 대한 예가 도시되어 있는데, 이것은 본 발명에 따른 시간 고정형 프로세서에 의해 실행되어야 한다. 이러한 프로그램 코드에서, A, B0, B1, B2, C0, C1 및 D라는 문자는 명령문(statements)을 지칭하고, X는 거짓 또는 참이 될 수 있는 조건을 지칭한다.
Figure 112005058126427-pct00001
프로그램 코드는 도 2에 따른 프로세서에 의해서 다음과 같이 실행될 수 있다. 프로그램 코드는 "if 변환(if conversion)"으로 지칭되는 잘 알려진 기법을 이용하여 컴파일러에 의해 변환될 수 있는데, 이 기법은 비용이 소요되는 브랜칭(branching)을 필요로 하지 않으면서 if-then-else 바디(bodies)의 실행을 가능하게 한다. 그 때문에, 이것은 "then" 및 "else" 바디 내의 인스트럭션(들)을 위한 가드로서 이용되는 "if" 조건 또는 그의 보수(complement)에 기초한 결과를 리턴(returns)하게 하도록 보장함으로써 "if-then-else" 바디의 병렬 실행이 또한 가능하게 한다. "if 변환"을 이용하면 앞서 나타낸 프로그램 코드의 일부분은 다음과 같이 변환된다.
Figure 112005058126427-pct00002
도 2를 참조하면, 인스트럭션은 어느 하나의 실행 유닛(EX1 또는 EX2)에 의해 실행되어 조건 X의 값을 결정한다. 이러한 인스트럭션은 "참"의 결과를 생성하고, 이 결과는 레지스터 파일 세그먼트(RF1)에 저장되고, 그의 보수, 즉 "거짓"의 결과는 레지스터 파일 세그먼트(RF2) 내에 저장된다. 다음에, 실행 유닛(EX1)은 명령문(B0, B1, B2)을 포함하는 인스트럭션을 실행하고, 실행 유닛(EX2)은 명령문(C0, C1)을 포함하는 인스트럭션을 실행한다. 일반적으로 점프 연산을 이용하여 구현되고 그에 따라 순차적 특성을 갖는 if 변환형 프로그램 내에서 제어 흐름이 제거되기 때문에, 데이터 의존도 및 리소스 이용 가능성이 그것을 허용한다면 오리지널 프로그램의 "then" 및 "else" 바디 내의 연산은 병렬로 스케쥴링될 수 있다. 제어기(CTR)는 VLIW 인스트럭션을 디코딩하고, 결과적인 기록 선택 인덱스(WS1, WS2)를 대응하는 멀티플렉서(MP1, MP2)에 전달하고, 기록 레지스터 인덱스(WR1, WR2) 및 판독 레지스터 인덱스(RR1, RR2)를 대응하는 레지스터 파일 세그먼트(RF1, RF2)에 전달하며, 연산 코드(OC1, OC2)를 대응하는 실행 유닛(EX1, EX2)에 전달하고, 연산 유효 인덱스(OPV1, OPV2)를 대응하는 유닛(201, 205)에 전달한다. 이러한 연산 유효 인덱스(OPV1, OPV2)는 "참"이 된다. 유닛(201, 205)은 또한 명령문(X)의 평가 결과 또는 그의 보수를 대응하는 가드(GU1, GU2)로서 각각 수신하고, 가드 및 연산 유효 인덱스에 대한 로직 AND를 실행한다. 유닛(201)의 경우에, 로직 AND는 결과적으로 "참"을 생성하는 한편 유닛(205)의 경우에 로직 AND는 결과적으로 "거짓"을 생성하게 되는데, 왜냐하면 가드(GU1, GU2)가 각각 참 및 거짓이기 때문이다. 명령문(B0, B1, B2, C1 또는 C2)이 실행 유닛(EX1, EX2)에 의해 각각 실행되지만, 로직 AND의 결과는 레지스터(209, 211, 213)에 의해 클로킹된다. 실행 유닛(EX1, EX2) 모두에 있어서 대응하는 출력 유효 인덱스(OV1, OV2)는 참이 된다. 유닛(203)은 출력 유효 인덱스(OV1) 및 유닛(201)에 의해 실행된 로직 AND의 결과에 대한 로직 AND를 실행할 것이다. 이러한 로직 AND의 결과는 참이 될 것이고, 그에 따라 결과 유효 인덱스(RV1)는 참이 된다. 부분 접속형 네트워크(CN)를 이용하면, 결과 유효 인덱스(RV1)의 값 및 대응하는 결과 데이터(RD1)는 멀티플렉서(MP1, MP2)로 전달된다. 기록 선택 인덱스(WS1)를 이용하면, 멀티플렉서(MP1)는 결과 데이터(RD1)에 대응하는 입력 채널을 선택한다. 그 후에 기록 인에이블 인덱스(WE1)는 결과 유효 인덱스(RV1)를 이용하여 참으로 설정되고, 결과 데이터(RD1)는 데이터(WD1)로서 레지스터 파일 세그먼트(RF1)에 기록된다. 유닛(207)은 출력 유효 인덱스(OV2) 및 유닛(205)에 의해 실행된 로직 AND의 결과에 대해 로직 AND를 수행할 것이다. 이러한 로직 AND의 결과는 거짓이 되고, 그에 따라서 결과 유효 인덱스(RV2)는 거짓이 된다. 부분 접속형 네트워크(CN)를 통해서, 결과 유효 인덱스(RV2)의 값과 결과 데이터(RD2)는 멀티플렉서(MP1, MP2)로 전달된다. 기록 선택 인덱스(WS2)를 이용하여, 멀티플렉서(MP2)는 결과 데이터(RD2)에 대응하는 채널을 선택한다. 그 후에 기록 인에이블 인덱스(WE2)는 결과 유효 인덱스(RV2)를 이용하여 거짓으로 설정되고, 그에 따라 결과 데이터(RD2)는 레지스터 파일 세그먼트(RF2)에 기록되지 않는다. 이와 다르게, 가드(X)의 값 및 그의 보수를 레지스터 파일 세그먼트(RF1) 및 레지스터 파일 세그먼트(RF2)에 모두 저장할 수 있다. 여기에서 명령문(B0, B1, B2, C0, C1)은 실행 유닛(EX1) 및 실행 유닛(EX2) 모두에 의해 실행될 수 있다. 실행 유닛(EX1 또는 EX2)이 명령문(B0, B1 또는 B2)을 실행하면, X의 값은 각각 가드(GU1 또는 GU2)를 위해 이용된다. 실행 유닛(EX1 또는 EX2)이 명령문(C0 또는 C1)을 실행하면, X의 보수는 각각 가드(GU1 또는 GU2)를 위해 이용된다. 결과적으로, 명령문(B0, B1 또는 B2)을 실행할 때 결과 데이터(RD1 또는 RD2)가 레지스터 파일 세그먼트(RF1 및/또는 RF2)에 기록된다. 명령문(C0 또는 C1)이 실행된다면, 결과 데이터(RD1 또는 RD2)는 레지스터 파일 세그먼트(RF1 및/또는 RF2)에 기록되지 않는다.
이하에서는 프로그램 코드의 일부분에 대한 다른 예가 도시되어 있는데, 이 프로그램 코드는 본 발명에 따른 시간 고정형 프로세서에 의해 실행될 수 있어야 한다. 이러한 프로그램 코드에서, Z, P 및 Q라는 문자는 변수를 지칭하고, X는 거짓 또는 참이 될 수 있는 조건을 지칭한다. 이러한 프로그램 부분을 실행할 때, 조건 X가 참과 같다면 P 및 Q의 값이 추가되고, 결과는 Z에 할당된다.
Figure 112005058126427-pct00003
프로그램 코드는 다음과 같이 도 1에 따른 프로세서에 의해 실행될 수 있다. 프로그램 코드는 컴파일러에 의해 변환되고, 덧셈 연산은 조건부 덧셈 연산(cadd)으로 대체되며, 조건 X의 값을 추가적인 독립 변수(argument)로 고려하면 다음과 같다.
Figure 112005058126427-pct00004
도 1을 참조하면, 인스트럭션은 어느 하나의 실행 유닛(EX1 또는 EX2)에 의해 실행되어 조건 X의 값을 결정한다. 이러한 인스트럭션은 "참" 결과를 생성하고, 이러한 결과는 레지스터 파일 세그먼트(RF1)에 저장된다. 파라미터(P, Q)의 값은 또한 레지스터 파일 세그먼트(RF1) 내에 저장된다. cadd 인스트럭션은 실행 유닛(EX1)에 의해 실행된다. 조건 X의 값 및 파라미터(P, Q)의 값은 실행 유닛(EX1)에 의해 입력 데이터(ID)로서 수신된다. 인스트럭션(cadd)의 실행 동안에, 조건 X의 값은 실행 유닛(EX1)에 의해 실행되고, 이 값이 참이면, 출력 유효 인덱스(OV1)는 참과 같게 설정된다. 조건 X의 값이 거짓인 경우에, 출력 유효 인덱스(OV1)는 거짓으로 설정된다. 이러한 예에서, 조건 X의 값은 참과 같고, 그에 따라서 출력 유효 인덱스(OV1)의 값도 또한 참과 같도록 설정된다. 또한, 실행 유닛(EX1)은 파라미터(Z)의 값을 계산한다. 유닛(101)은 인스트럭션(cadd) 및 출력 유효 인덱스(OV1)에 대응하는 연산 유효 인덱스(OPV1)에 대해 로직 AND를 실행한다. 연산 유효 인덱스(OPV1)는 참과 같기 때문에, 결과적인 결과 유효 인덱스(RV1)도 또한 참과 같게 된다. 파라미터 Z의 값의 형태를 갖는 결과 유효 인덱스(RV1) 및 결과 데이터(RD1)는, 부분 접속형 네트워크(CN)를 통해 멀티플렉서(MP1, MP2)로 전달된다. 기록 선택 인덱스(WS1)를 이용하여, 멀티플렉서(MP1)는 결과 데이터(RD1)에 대응하는 채널을 입력 채널로서 선택한다. 멀티플렉서(MP1)는 결과 유효 인덱스(RV1)를 이용하여 기록 인에이블 인덱스(WE1)를 참과 같게 되도록 설정하고, 파라미터 Z의 값은 기록 데이터(WD1)로서 레지스터 파일 세그먼트(RF1)에 기록된다. 조건 X가 거짓과 같은 경우에, 출력 유효 인덱스(OV1)는 실행 유닛(EX1)에 의해 거짓으로 설정된다. 유닛(101)에 의해 실행된 로직 AND는 결과 유효 인덱스(RV1)가 거짓과 같게 되게 한다. 결과적으로, 기록 인에이블 인덱스(WE1)는 거짓으로 설정된다. 이러한 경우에 파라미터 Z의 값은 레지스터 파일 세그먼트(RF1)에 기록되지 않는다.
상술된 예는 실행 유닛으로부터 레지스터 파일로 결과 데이터를 전달하는 것을 동적으로 제어함으로써 점프 연산을 이용하지 않는 시간 고정형 프로세서 내에서의 연산에 대한 조건부 실행이 구현될 수 있게 하는 것을 나타낸다.
다른 실시예에서, 통신 네트워크(CN)는 부분 접속형 통신 네트워크일 수 있는데, 다시 말해서 모든 실행 유닛(EX1, EX2)이 모든 레지스터 파일 세그먼트(RF1, RF2)에 접속되지 않은 통신 네트워크일 수 있다. 다수의 실행 유닛이 존재하는 경우에, 전체 접속형 통신 네트워크의 오버헤드는 실리콘 면적, 지연 및 전력 소모에 비해서 상당히 커질 것이다. VLIW 프로세서의 설계 동안에, 실행되어야 하는 애플리케이션의 범위에 기초하여 실행 유닛이 레지스터 파일 세그먼트에 결합되어야 하는 규모가 결정된다.
또 다른 실시예에서, 레지스터 파일 세그먼트(RF1, RF2)를 포함하는 분산형 레지스터 파일은 단일 레지스터 파일이다. VLIW 프로세서의 실행 유닛의 개수가 비교적 적은 경우에, 단일 레지스터 파일의 오버헤드도 또한 비교적 작다.
다른 실시예에서, VLIW 프로세서는 더 많은 실행 유닛을 가질 수 있다. 실행 유닛의 개수는 특히 VLIW 프로세서가 실행해야 하는 애플리케이션의 타입에 의존한다. 또한, 프로세서는 상기 실행 유닛에 접속된 더 많은 레지스터 파일 세그먼트를 구비할 수 있다.
다른 실시예에서, 실행 유닛(EX1, EX2)은 실행 유닛이 실행하여야 하는 연산의 종류, 다시 말해 2개 이상의 오퍼랜드를 필요로 하는 연산 및/또는 하나 이상의 결과를 생성하는 연산인지에 따라서 다수의 입력단 및/또는 다수의 출력단을 가질 수 있다. 레지스터 파일은 또한 레지스터 파일 세그먼트마다 다수의 판독 및/또는 기록 포트를 가질 수 있다.
상술된 실시예는 본 발명을 한정하는 것이 아니라 예시하는 것이고, 당업자라면 첨부된 청구항의 범주를 벗어나지 않으면서 여러 다른 실시예를 구성할 수 있을 것임을 유의하라. 청구항에서, 괄호가 씌워진 어떠한 참조부호도 청구항을 한정하는 것으로 간주되어서는 안 된다. "포함한다"라는 단어는 청구항 내에 열거된 구성 요소 또는 단계 이외의 구성 요소 또는 단계의 존재를 배제하지 않는다. 단수로 표현된 구성 요소는 해당 구성 요소가 복수 개 존재하는 것을 배제하지 않는다. 여러 수단을 열거하는 장치항에서, 이러한 여러 수단은 하드웨어의 동일한 아이템에 의해 구현될 수 있다. 소정의 수단이 서로 상이한 종속항 내에서 언급되었다는 사실만으로, 이러한 수단의 조합이 유리하게 이용될 수 없다는 것을 의미하지는 않는다.

Claims (8)

  1. 프로그램의 실행을 위해 구성된 시간 고정형(time-stationary) VLIW(Very Large Instruction Word) 프로세서로서,
    복수의 실행 유닛(execution units)과,
    상기 실행 유닛에 의해 액세스 가능한 레지스터 파일과,
    상기 실행 유닛과 상기 레지스터 파일을 결합시키는 통신 네트워크와,
    상기 프로그램으로부터 도출되는 제어 정보에 기초하여 상기 시간 고정형 VLIW 프로세서를 제어하도록 구성되는 제어기를 포함하고,
    상기 시간 고정형 VLIW 프로세서는 또한 상기 제어 정보에 기초하여 상기 복수의 실행 유닛 중 하나의 실행 유닛으로부터 상기 레지스터 파일로 결과 데이터를 전달하는 것을 동적으로 제어하도록 구성되고,
    상기 제어 정보는 연산의 유효성(validity)에 대한 제 1 식별자(identifier)를 포함하고,
    상기 제 1 식별자는 상기 연산을 실행하도록 구성된 해당 실행 유닛의 파이프라인(pipeline)에 따라서 지연되며,
    상기 실행 유닛은 상기 실행 유닛의 대응하는 출력 포트(output port)의 출력 결과의 유효성에 대한 제 2 식별자를 생성하도록 구성되고,
    상기 시간 고정형 VLIW 프로세서는 상기 지연된 제 1 식별자 및 상기 제 2 식별자 모두에 기초하여 상기 연산에 대응하는 결과 데이터를 상기 레지스터 파일에 기록하는 것을 동적으로 제어하도록 구성되며,
    상기 시간 고정형 VLIW 프로세서는 상기 지연된 제 1 식별자가 거짓이거나 상기 제 2 식별자가 거짓인 경우 결과 데이터를 기록할 수 없게 하는
    시간 고정형 VLIW 프로세서.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제 1 항에 있어서,
    상기 시간 고정형 VLIW 프로세서는 또한 상기 제 1 식별자, 상기 제 2 식별자 및 입력 데이터에 기초하여 상기 연산에 대응하는 결과 데이터를 상기 레지스터 파일에 기록하는 것을 동적으로 제어하도록 구성되는
    시간 고정형 VLIW 프로세서.
  6. 제 1 항에 있어서,
    상기 레지스터 파일은 분산형 레지스터 파일인
    시간 고정형 VLIW 프로세서.
  7. 제 1 항에 있어서,
    상기 통신 네트워크는 부분 접속형 통신 네트워크인
    시간 고정형 VLIW 프로세서.
  8. 프로그램의 실행을 위해 구성된 시간 고정형 VLIW 프로세서를 제어하는 방법으로서,
    상기 시간 고정형 VLIW 프로세서는,
    복수의 실행 유닛과,
    상기 실행 유닛에 의해 액세스 가능한 레지스터 파일과,
    상기 실행 유닛과 상기 레지스터 파일을 결합시키는 통신 네트워크와,
    상기 프로그램으로부터 도출되는 제어 정보에 기초하여 상기 시간 고정형 VLIW 프로세서를 제어하도록 구성되는 제어기를 포함하되,
    상기 제어 방법은,
    상기 제어 정보를 이용하여 상기 복수의 실행 유닛 중 하나의 실행 유닛으로부터 상기 레지스터 파일로 결과 데이터를 전달하는 것을 동적으로 제어하는 단계 - 상기 제어 정보는 연산의 유효성에 대한 제 1 식별자를 포함함 - 와,
    상기 실행 유닛이 상기 실행 유닛의 대응하는 출력 포트의 출력 결과의 유효성에 대한 제 2 식별자를 생성하는 단계와,
    상기 연산을 실행하도록 구성된 해당 실행 유닛의 파이프라인에 따라서 상기 제 1 식별자를 지연시키는 단계와,
    상기 시간 고정형 VLIW 프로세서가 상기 지연된 제 1 식별자 및 상기 제 2 식별자 모두에 기초하여 상기 연산에 대응하는 결과 데이터를 상기 레지스터 파일에 기록하는 것을 동적으로 제어하는 단계를 포함하고,
    상기 시간 고정형 VLIW 프로세서는 상기 지연된 제 1 식별자가 거짓이거나 상기 제 2 식별자가 거짓인 경우 결과 데이터를 기록할 수 없게 하는
    시간 고정형 VLIW 프로세서의 제어 방법.
KR1020057019563A 2003-04-16 2004-04-09 시간 고정형 프로세서 및 그의 제어 방법 KR101154077B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP03101038 2003-04-16
EP03101038.2 2003-04-16
PCT/IB2004/050416 WO2004092950A2 (en) 2003-04-16 2004-04-09 Support for conditional operations in time-stationary processors

Publications (2)

Publication Number Publication Date
KR20060004941A KR20060004941A (ko) 2006-01-16
KR101154077B1 true KR101154077B1 (ko) 2012-06-11

Family

ID=33185937

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057019563A KR101154077B1 (ko) 2003-04-16 2004-04-09 시간 고정형 프로세서 및 그의 제어 방법

Country Status (6)

Country Link
US (1) US20070063745A1 (ko)
EP (1) EP1627299A2 (ko)
JP (1) JP4828409B2 (ko)
KR (1) KR101154077B1 (ko)
CN (1) CN1816799A (ko)
WO (1) WO2004092950A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005111792A2 (en) * 2004-05-13 2005-11-24 Koninklijke Philips Electronics N.V. Lower power vltw
DE602007006215D1 (de) * 2006-09-06 2010-06-10 Silicon Hive Bv Datenverarbeitungsschaltung mit mehreren anweisungchaltung und scheduling-verfahren für eine solche datenschaltung
CN101551748B (zh) * 2009-01-21 2011-10-26 北京海尔集成电路设计有限公司 一种优化的编译方法
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
US11809871B2 (en) * 2018-09-17 2023-11-07 Raytheon Company Dynamic fragmented address space layout randomization
US11243905B1 (en) * 2020-07-28 2022-02-08 Shenzhen GOODIX Technology Co., Ltd. RISC processor having specialized data path for specialized registers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061478A2 (en) * 2000-02-16 2001-08-23 Koninklijke Philips Electronics N.V. System and method for reducing write traffic in processors
US20020056034A1 (en) * 1999-10-01 2002-05-09 Margaret Gearty Mechanism and method for pipeline control in a processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5031096A (en) * 1988-06-30 1991-07-09 International Business Machines Corporation Method and apparatus for compressing the execution time of an instruction stream executing in a pipelined processor
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
EP0650116B1 (en) * 1993-10-21 1998-12-09 Sun Microsystems, Inc. Counterflow pipeline processor
US5854929A (en) * 1996-03-08 1998-12-29 Interuniversitair Micro-Elektronica Centrum (Imec Vzw) Method of generating code for programmable processors, code generator and application thereof
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
JP3442225B2 (ja) * 1996-07-11 2003-09-02 株式会社日立製作所 演算処理装置
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020056034A1 (en) * 1999-10-01 2002-05-09 Margaret Gearty Mechanism and method for pipeline control in a processor
WO2001061478A2 (en) * 2000-02-16 2001-08-23 Koninklijke Philips Electronics N.V. System and method for reducing write traffic in processors

Also Published As

Publication number Publication date
WO2004092950A3 (en) 2006-03-16
JP4828409B2 (ja) 2011-11-30
KR20060004941A (ko) 2006-01-16
WO2004092950A2 (en) 2004-10-28
JP2006523885A (ja) 2006-10-19
CN1816799A (zh) 2006-08-09
EP1627299A2 (en) 2006-02-22
US20070063745A1 (en) 2007-03-22

Similar Documents

Publication Publication Date Title
US6826674B1 (en) Program product and data processor
US20030079114A1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
US7313671B2 (en) Processing apparatus, processing method and compiler
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
KR101154077B1 (ko) 시간 고정형 프로세서 및 그의 제어 방법
JP5989293B2 (ja) 多重命令語処理装置におけるフィードバック接続の実行時間選択
US9201657B2 (en) Lower power assembler
KR101099828B1 (ko) 프로세싱 시스템, 이 프로세싱 시스템에 의해서 인스트럭션의 집합을 실행하는 vliw 프로세서, 방법 및 컴퓨터 판독가능한 저장 매체
US20050091478A1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
US20060282647A1 (en) Parallel processing system
WO2005036384A2 (en) Instruction encoding for vliw processors

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
N231 Notification of change of applicant
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
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