KR20040064713A - 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법 - Google Patents

프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법 Download PDF

Info

Publication number
KR20040064713A
KR20040064713A KR10-2004-7007937A KR20047007937A KR20040064713A KR 20040064713 A KR20040064713 A KR 20040064713A KR 20047007937 A KR20047007937 A KR 20047007937A KR 20040064713 A KR20040064713 A KR 20040064713A
Authority
KR
South Korea
Prior art keywords
instructions
instruction
execution units
dispatch
dedicated
Prior art date
Application number
KR10-2004-7007937A
Other languages
English (en)
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 KR20040064713A publication Critical patent/KR20040064713A/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control 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
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Dc-Dc Converters (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Power Sources (AREA)
  • Multi Processors (AREA)

Abstract

프로세서(100)는 복수의 실행 유닛(160)에 의해 실행되는 인스트럭션을 저장하는 복수의 레지스터(120)를 구비한다. 복수의 레지스터(120)는 분배 수단(140)을 이용하여 복수의 실행 유닛(160)에 접속된다. 분배 수단(140)은 복수의 실행 유닛(160)에 접속된 복수의 디스패치 유닛(144)과 복수의 실행 유닛(120)을 복수의 디스패치 유닛(dispatch units)(144)에 접속시키는 재라우팅 가능한(reroutable) 네트워크(예를 들면, 데이터 통신 버스(142) 등)를 포함한다. 데이터 통신 버스(142)는 제어 유닛(148)에 의해 제어된다. 디스패치 유닛(144)은 인스트럭션 흐름(instruction flow) 내의 전용 인스트럭션을 검출하도록 구성되고, 이 전용 인스트럭션은 복수의 실행 유닛(160)에서 실행 유닛(160a, 160b, 160c, 160d)의 불활성 주기(inactive period)의 시작점에 대해 신호를 전송한다. 후속하여, 제어 유닛(148)은 통지를 받고, 복수의 레지스터(120)로부터 복수의 디스패치 유닛(144)으로의 인스트럭션 흐름은 전용 인스트럭션의 검출의 결과로서 재라우팅된다.

Description

프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및 컴파일링 방법{WLIM ARCHITECTURE WITH POWER DOWN INSTRUCTION}
미국 특허 제 6,219,796 호는 전용 인스트럭션에 의해 구성 가능한 프로세서에 대해서 개시한다.
고성능 계산에 대한 요구의 계속적인 증가는 소정 형태의 동시적 처리, 예를 들면 병렬 처리를 프로세서 아키텍처에 도입하게 하는 수 개의 해결책을 도입하게 하였다. 고성능을 당성하기 위해 널리 사용되는 개념은 인스트럭션 레벨 병렬 처리(instruction level parallelism)의 도입으로서, 이 개념에는 프로세서 아키텍처 내에 다수의 프로세싱 유닛이 존재하여 다수의 인스트럭션을 거의 동시에 실행한다. 2개의 주요 개념을 채택하였는데, 이 2개의 개념은 프로세싱 유닛에 의해서 프로그램의 수 개의 스레드(thread)를 액세스할 수 있는 멀티스레딩(multithreading) 개념과, 실행 유닛의 기능에 대응되는 인스트럭션의 번들이 인스트럭션 세트 내에 존재하는 VLIW(very large instruction word) 개념이다.
상술된 개념과 연관된 문제점은 병렬 처리의 증가로 인해서 더 많은 수의 실행 유닛이 동시에 활성화되는 것에 기인한 전력 소모의 증가 및 그와 관련된 동시적 데이터 트래픽(data traffic)의 증가 등과 같은 몇 개의 문제가 유발된다는 것이다.
미국 특허 제 6,219,796 호의 VLIW 프로세서는 전용 인스트럭션, 예를 들면 SLEEP 또는 REST 인스트럭션에 응답하도록 이루어져 있는 프로세싱 유닛을 갖고, 이는 적어도 부분적으로 관련된 실행 유닛의 전력을 감소시킨다. 또한 실행 유닛은 다른 전용 인스트럭션, 예를 들면 토글(toggle)로서 작동하는 WAKE 인스트럭션 또는 제 2 SLEEP/REST 인스트럭션에 의해서 활성화되거나, 활성 인스트럭션, 예를 들면 SLEEP/REST 인스트럭션이 아닌 인스트럭션의 수신에 의해서 활성화된다. 결과적으로, 프로세서의 활성 구조는 VLIW의 인스트럭션 흐름 내에 존재하는 전용 인스트럭션에 의해서 변경될 수 있고, 이 결과로 활성 프로세서에 의한 전력 소모가 감소된다. 전용 인스트럭션은 컴파일러(compiler)에 의해서 VLIW 내에 삽입되며,이는 먼저 제공된 기능성 유닛을 위한 불활성 인스트럭션(inactive instruction)의 세그먼트(segment)를 검출하고, 그 후에 가장 처음의 불활성 인스트럭션을 불활성 주기의 지속 기간에 따라서 SLEEP 또는 REST 인스트럭션으로 대체하고, 가장 마지막의 불활성 인스트럭션을 WAKE 인스트럭션으로 대체하는 것에 의해서 구현된다.
종래 기술에 의한 프로세서의 단점은 전용 인스트럭션이 단지 스위치 오프를 위해서만 사용되고, 프로세서의 부분에서만 사용된다는 것이다.
본 발명은 전용 인스트럭션에 의해 구성 가능한 프로세서에 관한 것이다.
본 발명은 또한 이러한 인스트럭션을 포함하는 인스트럭션 세트에 관한 것이다.
본 발명은 또한 저장 장치로부터의 인스트럭션 번들(instruction bundles)을 이러한 구성 가능한 프로세서의 복수의 실행 유닛에 분배하는 방법에 관한 것이다.
본 발명은 또한 이러한 전용 인스트럭션을 포함하는 복수의 인스트럭션 번들을 컴파일링(compiling)하는 방법에 관한 것이다.
도 1은 본 발명에 따른 프로세서의 부분에 대한 실시예를 도시하는 도면,
도 2는 본 발명에 따른 프로세서의 부분에 대한 다른 실시예를 도시하는 도면,
도 3은 본 발명에 따른 분배 방법을 나타내는 흐름도,
도 4는 본 발명에 따른 컴파일링 방법을 나타내는 흐름도,
도 5는 본 발명에 따른 컴파일링 방법을 이용하여 생성된 복수의 인스트럭션 번들의 예를 도시하는 도면.
특히, 본 발명의 목적은 전용 인스트럭션에 의해 보다 더 다양한 방식으로 구성될 수 있는, 도입 다락에서 설명된 종류의 프로세서를 제공하는 것이다.
본 발명의 다른 목적은 보다 다양한 구성 방안을 활성화하는, 도입 단락에서 설명된 종류의 인스트럭션 세트를 제공하는 것이다.
본 발명의 또 다른 목적은 인스트럭션 레벨 병렬 처리를 사용하여 프로세서를 보다 다양하게 재구성할 수 있는, 도입 단락에서 설명된 종류의 분배 방법을 제공하는 것이다.
본 발명의 다른 목적은 보다 다양한 구성 방안을 활성화하는 소프트웨어 코드 모듈을 생성하는, 도입 단락에서 설명된 종류의 컴파일링 방법을 제공하는 것이다.
본 발명은 독립항에 의해 정의되어 있다. 종속항은 유용한 실시예를 정의한다.
다음으로, 제 1의 목적은 분배 수단이 전용 인스트럭션에 따라서 복수의 인스트럭션을 복수의 실행 유닛에 분배하도록 구성되는 것에 의해 구현된다. 전용 인스트럭션은 제공된 실행 유닛의 유휴 주기(idle period)의 개시를 나타낸다. 분배 수단이 전용 인스트럭션에 응답하게 함으로써, 분배 수단에 의한 전용 인스트럭션의 평가에 따라서 인스트럭션 흐름은 나머지 활성 실행 유닛으로 다시 라우팅(routed)될 수 있다. 결과적으로, 제공된 실행 유닛을 위한 무동작 인스트럭션(do nothing instruction), 즉 무작동(no-operation : NOP) 인스트럭션의 스트링(string)은 연관된 인스트럭션 번들, 즉, 스레드 또는 인스트럭션 워드(instruction word)에서 생략될 수 있고, 단일 전용 인스트럭션에 의해 대체될 수 있는데, 이는 분배 수단이 인스트럭션을 적절한 활성 실행 유닛으로 다시 라우팅할 수 있기 때문이다. 이것은 데이터 통신의 강도가 감소된 경우에 특히 유리한데, 이는 인스트럭션 메모리로부터 인출되는 인스트럭션 번들이 매우 감소된 수의 유휴 인스트럭션을 포함하고, 인스트럭션과 연관된 프로그램을 실행하기 위해서는 메모리로부터의 더 적은 수의 인출이 요구되기 때문이다. 이는 시간 소모적 인스트럭션 메모리 액세스의 횟수가 감소되기 때문에 프로세서 성능의 향상뿐만 아니라 전력 소모가 감소되는 결과를 초래한다.
프로세서가 복수의 인스트럭션을 저장하기 위해서 분배 수단에 접속된 복수의 레지스터를 더 포함하는 것이 유리하다. 이러한 레지스터의 존재로 인해서 인스트럭션 버퍼링(buffering)이 가능해진다. 결과적으로, 데이터 전송에서의 더 큰 융통성이 획득되고, 이는 프로세서 성능의 증가에 기여한다.
바람직한 실시예에서, 분배 수단은 복수의 인스트럭션을 복수의 실행 유닛에 분배하는 복수의 디스패치 노드(dispatch nodes)를 포함하는데, 복수의 디스패치 노드 중 각각의 디스패치 노드는 복수의 레지스터 중 소정의 타겟 레지스터로부터 인스트럭션을 인출하고 평가하도록 구성되고, 제어 수단은 복수의 디스패치 노드에 응답하며, 접속 수단은 제어 수단에 응답하여 복수의 레지스터 파일을 복수의 디스패치 노드에 접속시킨다. 구성 가능한 접속 수단을 도입하면 임의의 디스패치 노드에 의해서 접속 수단에 접속된 모든 레지스터의 액세스가 용이해진다. 제어 수단은 디스패치 노드에 의한 전용 인스트럭션의 검출을 등록하고, 그에 따라 레지스터로부터 디스패치 노드로의 인스트럭션 흐름을 조정할 수 있다. 결과적으로, 단일 레지스터 내에 저장된 인스트럭션은 복수의 실행 유닛에 분배될 수 있고, 이는 또한 인스트럭션 메모리로부터 인출된 인스트럭션 번들이 대응되는 인스트럭션 실행 리소스에 일치될 필요가 없다는 것을 의미한다. 사실상, 단일 번들은 서로 다른 클록 사이클에서 단일 실행 유닛에 의해서 실행되는 인스트럭션들을 포함할 수 있다.
바람직한 실시예의 이점은 전용 인스트럭션의 평가에 따라 복수의 디스패치 노드로부터의 디스패치 노드가 적어도 부분적으로 비활성화(deactivated)되는 것이다.
전용 인스트럭션은 연관된 디스패치 노드에 대한 비활성화 개시자(deactivation trigger)로서 작용할 수 있다. 전용 인스트럭션은 디스패치 노드와 연관되는 실행 유닛에 대한 유휴 주기의 신호를 전송하므로, 디스패치 노드그 자체도 또한 유휴 주기로 들어간다. 그러므로, 노드는 적어도 부분적으로 스위치 오프될 수 있으며, 이는 전력 소모의 관점에서 볼 때 유리하다. 예를 들어, 디스패치 유닛 내에서 유일하게 활성화된 상태로 유지되는 것은, 디스패치 유닛이 불활성 상태에 있는 클록 사이클의 개수를 모니터링하는 것으로서, 이는 적절한 순간에 디스패치 유닛 자신을 재활성화(reactivate)시키기 위한 것이다.
바람직한 실시예의 다른 이점은 디스패치 노드가 전용 인스트럭션의 평가에 따라 복수의 실행 유닛 중 소정의 실행 유닛을 비활성화시키도록 구성된다는 것이다.
전용 인스트럭션은 제공된 실행 유닛에 대한 불활성 주기를 나타내기 때문에, 이 실행 유닛은 디스패치 유닛에 의해서 스위치 오프될 수 있다. 이는 프로세서에 의한 전력 소모가 더욱 감소되게 한다.
바람직한 실시예의 또 다른 이점은 디스패치 노드가 제어 수단으로부터의 재활성화 신호(reactivation signal)의 수신에 따라 재활성화된다는 것이다.
자신의 불활성 클록 사이클(inactive clock cycle)의 개수를 모니터링하여 적절한 재활성화 순간을 판정하는 것 대신에, 제어 수단에 의해 디스패치 노드를 또한 재활성화할 수 있다. 이 방식에 의하면, 디스패치 유닛은 자신의 재활성화를 추적할 필요가 없기 때문에 디스패치 유닛을 완전히 스위치 오프할 수 있다.
바람직한 실시예의 또 다른 이점은 제어 수단이 복수의 실행 유닛 중 소정의 실행 유닛으로부터의 신호에 응답하여 재활성화 신호를 생성하도록 구성된다는 것이다. 이는 분기 인스트럭션 등의 조건식에 의해서 디스패치 노드가 스위치 오프되는 경우에 특히 유리한데, 조건이 충족되었다는 것을 나타내는 신호가 실행 유닛으로부터 수신되면, 제어 유닛은 적절한 디스패치 유닛을 재활성화한다. 이는 예를 들면, 매우 작은 중복 인스트럭션을 포함하는 소형 인스트럭션 번들을 사용하여 루프 실행(loop executions)을 용이하게 한다.
바람직한 실시예의 다른 이점은 제어 수단이 복수의 도전체를 포함한다는 것으로서, 복수의 도전체 중 소정의 도전체는 복수의 디스패치 노드에서 소정의 디스패치 노드를 평가자에 접속시키며, 제어 유닛은 평가자에 응답하여 복수의 디스패치 노드 중 활성 디스패치 노드에 타겟 레지스터 선택 정보를 제공한다. 디스패치 유닛이 전용 인스트럭션을 검출하면, 디스패치 유닛은 평가자에게 검출 신호를 제공한다. 평가자에 의해서 수집된 다수의 검출 신호는 제어 유닛에 공급되고, 이것으로 이 데이터로부터의 오프셋(offset)을 구성할 수 있으며, 이 오프셋을 사용하여 활성 디스패치 유닛을 적절한 레지스터에 접속시킨다.
바람직한 실시예의 접속 수단은 데이터 통신 버스를 포함하는 것이 유리하다.
데이터 통신 버스를 사용하여 레지스터와 디스패치 유닛간의 빠른 통신을 제공할 수 있고, 이는 이 장치의 높은 처리 성능에 기여한다.
이와 다르게, 바람직한 실시예의 접속 수단은 복수의 레지스터에 접속된 복수의 디멀티플렉서(demultiplexers) 및 복수의 디스패치 노드에 접속된 복수의 멀티플렉서를 포함하고, 복수의 디멀티플렉서 중 각 디멀티플렉서는 복수의 멀티플렉서 중 각 멀티플렉서에 접속되어 있다. 멀티플렉서 및 디멀티플렉서의 세트를 이용하여 레지스터를 디스패치 유닛에 접속시키는 것은 제어 수단에 의한 접속 수단의 제어가 비교적 간단하다는 이점을 갖는데, 이는 비교적 적은 비용 및 비교적 적은 면적을 소모하면서 구현될 수 있다는 것을 의미한다.
본 발명의 다른 목적은 인스트럭션 세트가 분배 수단에 의한 복수의 인스트럭션의 복수의 실행 유닛으로의 분배를 제어하는 전용 인스트럭션을 더 포함하는 것에 의해서 구현될 수 있다. 이러한 인스트럭션 세트는 본 발명에 따른 프로세서와 함께 사용될 수 있으므로, 인스트럭션의 재라우팅을 가능하게 하고 보다 소형의 인스트럭션 번들을 사용할 수 있게 한다.
본 발명의 또 다른 목적은 디스패치 방법이 전용 인스트럭션의 검출에 따라 복수의 실행 유닛으로부터 실행 유닛을 선택하는 단계를 포함하게 함으로써 구현된다. 이러한 방법은 인스트럭션의 동적인 재라우팅을 가능하게 하여, 복수의 실행 유닛의 서브셋(subset)만이 유용한 인스트럭션을 실행하도록 스케쥴링되는 경우에 단지 인스트럭션 번들을 고정된 크기로 재조정하기 위해서 무동작 인스트럭션을 사용할 필요성을 없앤다.
본 발명의 다른 목적은 제 1 무동작 인스트럭션을 전용 인스트럭션-분배 수단에 의해 복수의 인스트럭션을 복수의 실행 유닛에 분배하는 것을 제어함-으로 대체하는 단계에 의해 구현된다. 소프트웨어 코드 모듈 내에 전용 인스트럭션이 존재하여, 본 발명에 따른 프로세서 내의 분배 수단에 의해서 인스트럭션이 재스케쥴링되게 한다.
본 발명의 이점은 컴파일링 방법이 복수의 인스트럭션 번들에서 복수의 무동작 인스트럭션 중 남아있는 무동작 인스트럭션을 제거하는 추가적인 단계를 포함하는 것이다. 인스트럭션 번들에서 무동작 인스트럭션을 제거하면, 인스트럭션 번들마다 유용한 인스트럭션, 예를 들면 무동작 인스트럭션을 제외한 인스트럭션의 증가된 밀도를 갖는 소프트웨어 코드 모듈을 획득할 수 있다. 이는 전체 코드 크기의 관점에서 특히 유리하다.
본 발명의 다른 이점은 컴파일링 방법이 복수의 인스트럭션 번들을 다른 복수의 인스트럭션 번들로 재그룹화(regrouping)하는 추가적인 단계를 포함한다는 것이다. 복수의 인스트럭션 번들을 다른 복수의 인스트럭션 번들-바람직하게는 고정된 크기를 갖는 복수의 인스트럭션 번들-로 재그룹화하는 것은, 소프트웨어 코드 모듈 내에서 순서화된 인스트럭션의 복잡성을 감소시킨다. 결과적으로, 재형성된 인스트럭션 번들은 단일 실행 유닛에 의해서 실행되는 다수의 인스트럭션을 포함할 수 있고, 다수의 인스트럭션은 전용 인스트럭션의 평가에 따라 적절한 순서대로 해당 유닛에 대해 디스패치될 수 있다. 이는 코드 모듈(code module)을 실행하는 데 있어서 더 적은 메모리 액세스만을 필요로 한다는 것을 의미하며, 이는 연관된 프로세서의 전력 소모의 감소에 기여한다.
본 발명의 또 다른 이점은 컴파일링 방법이 제거된 무동작 인스트럭션의 개수를 나타내는 정보를 전용 인스트럭션에 추가하는 단계를 포함한다는 것이다. 이는 본 발명에 따른 프로세서의 분배 수단이 프로세서의 대응되는 실행 유닛의 불활성 주기를 나타내는 정보를 전용 인스트럭션으로부터 추출할 수 있게 하고, 이는 동일한 시간 동안에 프로세서의 부분을 비활성화하는 데에도 이용될 수 있다.
본 발명의 다른 이점은 컴파일링 방법이 복수의 무동작 인스트럭션이 존재하는 원인을 나타내는 정보를 전용 인스트럭션에 추가하는 단계를 포함한다는 것이다. 이는 프로세서의 실행 유닛의 불활성 주기가 조건적 이벤트, 예를 들면 루프 인스트럭션의 종료점을 표시하는 분기 인스트럭션의 발생 등에 의해 야기될 때 특히 유용하다. 이 정보를 사용하여 조건이 만족되었다는 것을 나타내는 인터럽트 신호가 소정 시점에서 발생될 것이라는 사실을 분배 수단에 경고할 수 있고, 분배 수단은 이를 이용하여 프로세서의 비활성 부분을 일시적으로 재활성화할 수 있다.
본 발명은 첨부된 도면을 참조하여 제한적이지 않은 예시에 의해 보다 세부적으로 설명될 것이다.
도 1에서, 프로세서(100)의 부분은 분배 유닛(140)에 접속된 복수의 레지스터(120)를 구비한다. 분배 유닛(140)의 출력단은 복수의 실행 유닛(160)에 접속되어 있다. 바람직한 실시예에서, 분배 유닛(140)은 복수의 레지스터(120)를 복수의 디스패치 유닛(144)에 접속시키는 데이터 통신 버스(142)를 구비한다. 디스패치 유닛(144a, 144b, 144c, 144d)은 디스패치 유닛(144a, 144b, 144c, 144d)이 접속되어 있는 실행 유닛(160a, 160b, 160c, 164d)의 유휴 주기의 개시점을 표시하는 인스트럭션 흐름 내의 전용 인스트럭션을 검출하도록 구성된다. 도 1에서, 각 디스패치 유닛(144a, 144b, 144c, 144d)은 실행 유닛(160a, 160b, 160c, 160d)에 접속되어 있다.
프로세서(100)의 모든 실행 유닛이 분배 유닛(140)을 거쳐 레지스터에 접속되어야 하는 것이 아니라는 것을 강조하고자 하며, 당업자라면 본 발명의 내용을 벗어나지 않으면서 오직 실행 유닛의 서브셋만이 분배 유닛(140)을 거쳐 레지스터에 접속되는 혼합 구성도 가능하다는 것을 이해할 수 있을 것이다. 이러한 혼합 구성은 소정의 실행 유닛이 전용의 작업을 수행하도록 구성되는 경우에, 인스트럭션 스케쥴링의 문제점에 의한 영향을 비교적 받지 않게 하므로 유용할 수 있다. 추가하여, 4개의 레지스터, 디스패치 유닛 및 실행 유닛의 개수는 오직 예시로서 선택된 것이며, 본 발명의 개시 내용을 벗어나지 않으면서 이들 소자를 다른 개수로 제공할 수 있다는 것을 언급하고자 한다.
데이터 통신 버스(142)는 제어 유닛(148)에 의해 제어된다. 본 명세서에서제시된 실시예에서, 제어 유닛(148)은 평가자(146) 및 복수의 도전체(150)를 거쳐 복수의 디스패치 유닛(144)에 접속된다. 복수의 도전체(150)에서 각각의 도전체는 복수의 디스패치 유닛(144) 중 디스패치 유닛(144a, 144b, 144c, 144d)에 접속되어 있다. 평가자(146)는 전용 인스트럭션이 검출될 때 디스패치 유닛(144a, 144b, 144c, 144d)으로부터 신호를 수신하도록 구성된다. 평가자(146)는 복수의 도전체(150)로부터 제공된 신호를 수집하고, 적절한 레지스터(120a, 120b, 120c, 120d)를 활성 디스패치 유닛(144a, 144b, 144c, 144d)에 접속시키는 것을 제어하는데 필요한 정보를 제어 유닛(148)에 제공한다. 제어 유닛(148)은 디스패치 유닛(144a, 144b, 144c, 144d)에 레지스터 어드레스 선택 정보를 제공하지만, 본 기술 분야에서 알려져 있는 다른 데이터 액세스 제어 메커니즘도 또한 사용될 수 있다. 이러한 관점에서, 당업자들에게 있어서, 별도의 평가자(146)가 반드시 존재할 필요는 없다는 것은 명확할 것이다. 평가자(146)는 제어 유닛(148) 내에 집적될 수 있고, 추가하여, 본 발명의 범주를 벗어나지 않으면서 제어 유닛(148)은 적어도 하나의 디스패치 유닛(144a, 144b, 144c, 144d)에 분배될 수 있다.
결과적으로, 전용 인스트럭션의 검출은 레지스터(120a, 120b, 120c, 120d)를 다른 실행 유닛(160a, 160b, 160c, 160d)으로 재라우팅시킬 것이므로, 분배 유닛(140)은 전용 인스트럭션에 따라서 복수의 인스트럭션을 복수의 실행 유닛(160)에 분배하도록 구성될 수 있다.
제어 유닛(148) 및 복수의 레지스터(120)는 추가적인 데이터 통신 버스(110)에 접속된다. 추가적인 데이터 버스(110)를 사용하여 도시하지 않은 인스트럭션메모리에 액세스하며, 제어 유닛(148)은 나중에 복수의 레지스터(120)에 저장되는 인스트럭션 번들을 인스트럭션 메모리로부터 인출하는 것을 제어한다. 제어 유닛(148) 및 복수의 레지스터(120)에 의해서 추가적인 데이터 버스(110)를 사용하는 것은 제한하기 위해 설명된 것이 아니고, 본 발명의 범주를 벗어나지 않으면서 제어 유닛(148) 및 복수의 레지스터(120)가 서로 다른 통신 수단을 사용하는 다른 구성도 용이하게 사용될 수 있다.
전력 감소를 달성하기 위해서 전용 인스트럭션의 수신 및 평가에 따라 디스패치 유닛(144a, 144b, 144c, 144d)이 적어도 부분적으로 스위치 오프되도록 구성되는 것이 바람직하다. 전용 인스트럭션이 클록 사이클의 개수와 관련된 정보를 포함한다면, 디스패치 유닛(144a, 144b, 144c, 144d)은 클록 사이클을 모니터링함으로써 자신의 재활성화를 제어하는 간단한 비교기 회로(도시하지 않음)를 가지고 확장될 수 있을 것이다. 이와 다르게, 제어 유닛(148)이 이러한 비교기로 확장될 수 있는데, 이 경우에는 비활성화된 디스패치 유닛(144a, 144b, 144c, 144d)의 재활성화를 제어할 수 있도록 제어 유닛(148)이 상술된 정보를 공급받는다. 이 정보는 복수의 도전체(150)를 통해 제어 유닛(148)에 공급될 수 있다. 예를 들면 데이터 통신 버스(142)를 거쳐 디스패치 유닛(144a, 144b, 144c, 144d)에 재활성화 신호를 공급함으로써 재활성화를 달성할 수 있다.
전용 인스트럭션은 수신 디스패치 유닛(144a, 144b, 144c, 144d)이 접속되어 있는 실행 유닛(160a, 160b, 160c, 160d)에 대한 유휴 주기의 개시를 나타내기 때문에, 전력 감소의 관점에서 디스패치 유닛(144a, 144b, 144c, 144d)이 연관된 실행 유닛(160a, 160b, 160c, 160d)을 스위치 오프하도록 구성되는 것이 또한 바람직할 것이다. 이는 예를 들면 연관된 실행 유닛(160a, 160b, 160c, 160d)에 클록 게이팅 신호(clock gating signal)를 공급하거나, 비동기적인 아키텍처에서는, 디스패치 유닛(144a, 144b, 144c, 144d)이 적어도 부분적으로 스위치 오프되어 있는 한 인에이블 신호(enable signal)를 보류하여 연관된 실행 유닛(160a, 160b, 160c, 160d)의 클록을 통과시키거나 신호 변경 요청 신호(handshake request signal)가 존재하지 않는 것에 기인하여 연관된 실행 유닛(160a, 160b, 160c, 160d)이 유휴 상태가 되게 하는 것으로 실행 유닛(160a, 160b, 160c, 160d)을 정지(stalling)시키는 것에 의해서 이뤄질 수 있다. 디스패치 유닛(144a, 144b, 144c, 144d)이 다시 재활성화되자마자, 연관된 실행 유닛(160a, 160b, 160c, 160d)의 정지는 해제되고 연관된 실행 유닛(160a, 160b, 160c, 160d)이 다시 활성 상태가 된다.
선택적으로, 제어 유닛(148)은 복수의 실행 유닛(160)에 응답할 수 있다. 이는 실행 유닛(160a, 160b, 160c, 160d)의 정의되지 않은 유휴 주기, 예를 들면, 조건식의 평가에 따른 유휴 주기의 검출에 따라서 인스트럭션의 재라우팅을 활성화한다. 이는 루프가 실행되는 동안에 루프의 종료점을 표시하기 위해서 조건식을 사용하는 경우에 특히 유리하다. 조건이 만족되자마자, 실행 유닛(160a, 160b, 160c, 160d)은 제어 유닛(148)에 신호하고, 제어 유닛(148)을 개시하여 복수의 레지스터(120)와 복수의 디스패치 유닛(144) 사이의 원래의 라우팅을 복원한다. 전형적으로, 분기 인스트럭션을 취하는 경우에 항상 그러하듯이, 복수의 레지스터(120)의 컨텐츠도 제거된다. 제거 동작은 복수의 레지스터(120)와의 접속부(도시하지 않음)를 이용하여 제어 유닛(148)에 의해 제어되거나 복수의 실행 유닛(160)에 응답하는 다른 하드웨어에 의해 제어될 수 있다.
이러한 관점에서, 본 발명은 광범위한 프로세서 아키텍처에 적용될 수 있고, 예를 들면 본 발명에서는 동기화 또는 비동기화 아키텍처뿐만 아니라 VLIW 또는 멀티스레딩 프로세서를 채택할 수도 있으며, 다른 아키텍처도 용이하게 고려 대상이 될 수 있다는 것은 당업자들에게 있어서 명확할 것이다.
다음으로, 도 1의 상세한 설명을 참조하여 이하의 도면을 설명한다. 도 1에서 사용된 참조 번호는, 그와 다르게 명확히 언급되지 않으면 이하의 도면에서 동일한 의미를 가질 것이다.
도 2에서는 프로세서(100)의 다른 바람직한 실시예가 도시되어 있다. 도1에 도시된 프로세서(100)에 있어서, 데이터 통신 버스(142)는 데이터 통신 네트워크(242)로 대체되었다. 데이터 통신 네트워크(242)는 복수의 디멀티플렉서(244)를 구비하는데, 각각의 디멀티플렉서(244a, 244b, 244c, 244d)는 레지스터(120a, 120b, 120c, 120d)에 접속되고 제어 유닛(148)에 의해 제어된다. 데이터 통신 네트워크(242)는 복수의 멀티플렉서(246)를 더 구비하는데, 각각의 멀티플렉서(246a, 246b, 246c, 246d)는 디스패치 유닛(144a, 144b, 144c, 144d)에 접속되고, 제어 유닛(148)에 의해 제어된다. 각각의 디멀티플렉서(244a, 244b, 244c, 244d)는 복수의 멀티플렉서(246)에서 모든 멀티플렉서에 접속되고, 그에 의해서 복수의 레지스터 파일(120) 및 복수의 디스패치 노드(144)사이에 완전한 접속성을 제공한다. 도 2에는 오직 디멀티플렉서(244a)로부터 복수의 멀티플렉서(246)에서 모든 멀티플렉서로의 접속만이 명확하게 도시되어 있다. 이는 단지 명료성을 위한 것이고, 디멀티플렉서(244b, 244c, 244d)로부터 복수의 멀티플렉서(246)에서 모든 멀티플렉서로의 접속을 제외하는 것이 아니다. 도 1에 도시된 실시예와의 중요한 차이점은 제어 수단(148)이 각 개별적인 디스패치 유닛(144a, 144b, 144c, 144d)에 레지스터 액세스 정보를 제공할 필요가 없다는 것이다.
제어 유닛(148)은 각 디멀티플렉서(244a, 244b, 244c, 244d)와 각 멀티플렉서(246a, 246b, 246c, 246d)에 적절한 제어 신호를 제공함으로써 복수의 레지스터(120)와 복수의 디스패치 유닛(144)사이의 라우팅을 완전히 제어한다. 제어 유닛(148)은 인스트럭션 메모리로부터의 복수의 레지스터(120) 내에 저장되는 새로운 인스트럭션 번들의 인출을 또한 제어하는 것이 바람직하다. 결과적으로, 복수의 디멀티플렉서(244)에 공급되는 라우팅 신호는 또한 연관된 복수의 레지스터(120)에 대한 액세스 인에이블 신호로서 사용될 수 있다. 다시 말해, 레지스터(120a, 120b, 120c, 120d)는 오직 디멀티플렉서(244a, 244b, 244c, 244d)가 제어 유닛(148)으로부터 라우팅 신호를 수신할 때에만 액세스된다.
도 2에는 모두 존재하고 있으나, 데이터 통신 네트워크(242)에서 복수의 디멀티플렉서(244) 또는 복수의 멀티플렉서(246)의 어느 하나를 생략할 수 있다. 그러나 이는 나머지 상호 접속부에 용량성 부하(capacitive loads)의 큰 부담을 부과하여 처리 성능의 열화를 쉽게 초래할 수 있기 때문에 바람직하지 않다. 또한, 당업자라면 본 발명의 개시 내용을 벗어나지 않으면서 데이터 통신 네트워크(242)의 다른 알려진 구현을 사용할 수 있다는 것이 명백할 것이다.
도 3은 프로세서(100) 등과 같은 프로세서 내에서 분배와 관련된 작동 방법 및 인스트럭션을 재라우팅하는 것과 관련된 작동 방법을 나타내는 방법(300)의 흐름도를 도시하고 있다. 제 1 단계(310)는 복수의 레지스터(120) 등과 같은 인스트럭션 소스로부터 인스트럭션 번들 등과 같은 복수의 제 1 인스트럭션을 인출하는 것을 포함한다.
다음 단계(320)는 복수의 실행 유닛(160)으로 인스트럭션을 디스패치하기 전에 복수의 인스트럭션에서 소정의 인스트럭션을 평가함으로써 전용 인스트럭션의 검출을 처리한다. 이러한 인스트럭션의 검출은 대응되는 실행 유닛(160a, 160b, 160c, 160d)의 불활성 주기에 대해 신호하고, 이는 다음으로 인출되는 복수의 인스트럭션 중 적어도 일부의 인스트럭션이 재라우팅되어야 한다는 것을 의미한다.
결과적으로, 단계(330)에서 적어도 일부의 실행 유닛(160a, 160b, 160c, 160d)을 위한 인스트럭션이 이제는 상이한 저장 위치에서 생성된다는 사실에 기인하여 실행 유닛(160a, 160b, 160c, 160d)이 복수의 레지스터(120)로 재접속되는 것에 의해 분배 수단(140)은 재구성된다. 당업자라면 단계(330)가 다음의 모든 인출되는 복수의 인스트럭션에 대해 반복되어야 한다는 것을 이해할 것이다. 이는 도 5의 상세한 설명에서 보다 세부적으로 설명될 것이다.
도 4에는 압축된 인스트럭션 번들을 형성하는 컴파일링 방법(400)이 제시되어 있다. 제 1 단계(410)에서, 복수의 실행 유닛(160)에서 소정의 실행 유닛(160a, 160b, 160c, 160d)에 대해 인스트럭션을 매핑(mapping)하고, 인스트럭션을 인스트럭션 번들로 번들링(bundling)하는 작업을 수행한다. 일반적으로 이단계는 소프트웨어 코드 모듈의 컴파일링이 적어도 부분적으로 완료될 때까지 반복된다. 다음으로, 단계(420)는 실행 유닛에 의한 연속적인 실행을 위해 인스트럭션 번들에서 복수의 무동작 인스트럭션의 검색을 실행한다. 이러한 복수의 무동작 인스트럭션은 제공된 실행 유닛에 있어서 불활성 주기의 연장을 나타내고, 이는 보다 소형인 소프트웨어 코드 모듈을 생성하는 기회를 제공한다.
그러므로, 이러한 복수의 무동작 인스트럭션이 검출되면, 단계(430)에서는 복수의 무동작 인스트럭션 중에서 제 1 무동작 인스트럭션을 연관된 실행 유닛의 불활성 주기의 시작을 신호하는 전용 인스트럭션으로 대체함으로써 복수의 인스트럭션 번들을 수정한다.
선택적으로, 인스트럭션 번들에서 제거된 무동작 인스트럭션의 개수, 즉 불활성 상태가 되도록 스케쥴링된 실행 유닛의 사이클 수를 나타내는 정보를 전용 인스트럭션에 추가하거나, 실행 유닛(160a, 160b, 160c, 160d)의 불활성 주기가 발생되게 하는 이벤트, 예를 들면, 분기 인스트럭션 또는 다른 조건적 인스트럭션에 대한 정보를 전용 인스트럭션에 추가하는 하부 단계를 이용하여 단계(430)를 확장할 수 있다.
다음 단계(440)에서, 복수의 무동작 인스트럭션 중에서 남아있는 무동작 인스트럭션을 복수의 인스트럭션 번들에서 제거하고, 복수의 인스트럭션 번들을 다른 복수의 인스트럭션 번들로 재그룹화하는 단계(450) 이후에, 다른 복수의 인스트럭션 번들에서 각각의 인스트럭션 번들은 고정된 크기를 가진다. 실행 유닛(160a, 160b, 160c, 160d)의 연장된 불활성 주기와 관련된 모든 복수의 무동작 인스트럭션이 확실히 소프트웨어 코드 모듈에서 제거될 때까지 단계(420) 내지 단계(440)를 반복할 수 있고, 이는 단계(440, 450)를 수행하기 전에 단계(420, 430)를 반복함으로써 단일 사이클 내에서 이뤄지는 것이 바람직하다(아래의 내용 참조). 당업자라면 단계(450)에서 형성된 적어도 일부의 인스트럭션 번들이 단일 실행 유닛을 위한 복수의 인스트럭션을 포함할 수 있다는 것이 명확할 것이다.
이는 도 5에 도시되어 있는데, 여기에는 도 4에 도시된 컴파일링 방법(400)의 예시적인 실행이 제공되어 있다. 그러므로, 도 5는 도 4의 상세한 설명을 다시 참조한다. 소프트웨어 코드 모듈(510)은 프로세서(100)에서 실행되는 5개의 인스트럭션 번들(510a∼510e)을 포함한다. 소프트웨어 코드 모듈(510)은 컴파일링 방법(400)의 단계(410)에서 생성되고, 4개의 인스트럭션 열(columns)을 포함하는데, 가장 좌측의 열은 실행 유닛(160a)에서 실행되도록 구성되고, 제 2 열은 실행 유닛(160b)에서 실행되도록 구성되고, 제 3 열은 실행 유닛(160c)에서 실행되도록 구성되고, 가장 우측의 열은 실행 유닛(160d)에서 실행되도록 구성된다. 소프트웨어 코드 모듈(510) 내에는 2가지 타입의 인스트럭션이 존재하는데, INSx(x는 양의 정수임)로 표시된 가용 인스트럭션(useful instructions)과, NOP로 표시된 무동작 인스트럭션이 존재한다.
소프트웨어 코드 모듈(510)은 실행 유닛(160a, 160b, 160c, 160d)에 의한 연속적인 실행을 위해 복수의 무동작 인스트럭션을 포함하는데, NOP 인스트럭션으로 시작되는 첫 번째 실행 유닛은 인스트럭션 번들(510a) 내의 실행 유닛(160c)이고, NOP 인스트럭션으로 시작되는 두 번째 실행 유닛은 인스트럭션 번들(510c) 내의 실행 유닛(160b)이다. 다음에 컴파일링 방법(400)의 단계(420∼450)를 실행하면 수정된 인스트럭션 번들(520a∼520e)로 이루어진 소프트웨어 코드 모듈(520)이 된다. 실행 유닛(160c)에서의 복수의 제 1 무동작 인스트럭션은 제거되고 인스트럭션 번들(520a) 내에 단일 전용 인스트럭션(D.INS)으로 대체되어 있다. 결과적으로, 인스트럭션의 열이 프로세서(100) 내에서 그의 의도된 목적지와 더 이상 일치되지는 않고, 삽입된 전용 인스트럭션(D.INS)에 기초하여 분배 유닛(140)에 의해 재스케쥴링되어야 하기는 하지만, 소프트웨어 코드 모듈(520) 내의 가용 인스트럭션의 밀도는 소프트웨어 코드 모듈(510)보다 더 높아진다. 다음 단계로, 단계(420∼440)를 반복하여 복수의 제 2 무동작 인스트럭션을 제거한다. NOP 인스트럭션들이 더 이상 단일 열 내에 위치되지 않기 때문에, 이것은 더욱 어려워진다. 그러므로, 바람직한 코드 압축, 즉 단계(440, 450)가 수행되기 전에, 모든 대상이 되는 복수의 무동작 인스트럭션이 발견될 때까지 단계(420, 430)를 반복하는 것이 바람직하다.
복수의 제 2 무동작 인스트럭션의 제거와, 그 다음의 코드 압축을 수행하여 인스트럭션 번들(530a∼530d)로 구성된 소프트웨어 코드 모듈(530)을 획득한다. 또한 인스트럭션 번들(530d)은 적절한 크기를 갖고, 최우측 열의 3개의 점은 단지 그곳에 위치된 인스트럭션이 무동작 인스트럭션, 가용 인스트럭션 또는 전용 인스트럭션 중의 어느 하나일 수 있다는 것을 나타낸다. 당업자라면 각각의 인스트럭션 번들(530a∼530d)이 단일 실행 유닛(160a, 160b, 160c, 160d)을 위한 복수의 인스트럭션을 포함한다는 것이 명확할 것이다. 그러므로, 접속 수단(142, 242)의 재구성은 일반적으로 수회 수행되어 단일 인스트럭션 번들 내의 모든 인스트럭션이정확히 분배될 수 있어야 한다. 다시 말해, 전형적으로 단일 전용 인스트럭션의 검출에 의해 분배 수단(140)에 의한 다수의 재구성이 이뤄지게 된다.
상술된 실시예는 본 발명을 제한하는 것이라기보다는 예시하는 것이고, 당업자라면 첨부된 청구항의 범주를 벗어나지 않으면서 이와 다른 여러 실시예를 설계할 수 있다는 것을 주지하라. 청구항에서, 괄호를 씌운 임의의 참조 부호는 청구항을 제한하는 것으로 해석되어서는 안 된다. "포함한다"라는 단어는 청구항에 열거된 요소 또는 단계 이외의 요소 또는 단계의 존재를 배제하는 것이 아니다. 단수로 표현된 요소는 복수의 이러한 요소가 존재하는 것을 배제하지 않는다. 본 발명은 수 개의 별개의 요소를 포함하는 하드웨어 및 적절하게 프로그래밍된 컴퓨터에 의해서 구현될 수 있다. 수 개의 수단을 열거하는 장치항에서, 이러한 수 개의 수단은 하드웨어의 동일한 아이템에 의해 구체화될 수 있다. 소정의 방법이 서로 상이한 종속항에서 언급되었다는 사실만으로 이 방법을 조합하여 유용하게 사용될 수 없다는 것을 의미하지는 않는다.

Claims (17)

  1. 전용 인스트럭션에 의해 구성 가능한 프로세서(100)로서,
    복수의 인스트럭션을 실행하는 복수의 실행 유닛(160)과,
    상기 복수의 인스트럭션을 상기 복수의 실행 유닛(160)에 분배하는 분배 수단(140)
    을 포함하고,
    상기 분배 수단(140)은 상기 전용 인스트럭션에 따라서 상기 복수의 인스트럭션을 상기 복수의 실행 유닛에 분배하도록 구성되는
    프로세서(100).
  2. 제 1 항에 있어서,
    상기 복수의 인스트럭션을 저장하는 복수의 레지스터(120)를 더 포함하되, 상기 복수의 레지스터(120)는 상기 분배 수단(140)에 접속되어 있는 프로세서(100).
  3. 제 2 항에 있어서,
    상기 분배 수단(140)은,
    상기 복수의 인스트럭션을 상기 복수의 실행 유닛(160)에 분배하는 복수의 디스패치 노드(144)-상기 복수의 디스패치 노드(144) 중 각 디스패치 노드(144a; 144b; 144c; 144d)는 상기 복수의 레지스터(120) 중 타겟 레지스터(120a, 120b, 120c, 120d)로부터 인스트럭션을 인출하고 평가하도록 구성됨-와,
    상기 복수의 디스패치 노드(144)에 응답하는 제어 수단(146, 148, 150)과,
    상기 제어 수단에 응답하여 복수의 레지스터 파일(120)을 상기 복수의 디스패치 노드(144)에 접속시키는 접속 수단(142, 242)
    을 포함하는 것을 특징으로 하는 프로세서(100).
  4. 제 3 항에 있어서,
    상기 복수의 디스패치 노드(144) 중 디스패치 노드(144a, 144b, 144c, 144d)는 상기 전용 인스트럭션의 평가에 따라 적어도 부분적으로 비활성화(deactivated)되는 프로세서(100).
  5. 제 3 항에 있어서,
    상기 복수의 디스패치 노드(144) 중 디스패치 노드(144a, 144b, 144c, 144d)는 상기 전용 인스트럭션의 평가에 따라 상기 복수의 실행 유닛(160) 중 실행 유닛(160a, 160b, 160c, 160d)을 비활성화하도록 구성되는 프로세서(100).
  6. 제 4 항에 있어서,
    상기 디스패치 노드(144a, 144b, 144c, 144d)는 상기 제어 수단(146, 148, 150)으로부터 재활성화 신호(reactivation signal)를 수신하는 것에 따라 재활성화되는 프로세서(100).
  7. 제 6 항에 있어서,
    상기 제어 수단(146, 148, 150)은 상기 복수의 실행 유닛(160) 중 실행 유닛(160a, 160b, 160c, 160d)으로부터의 신호에 응답하여 상기 재활성화 신호를 생성하도록 구성되는 프로세서(100).
  8. 제 3 항에 있어서,
    상기 제어 수단(146, 148, 150)은,
    복수의 도전체(150)-상기 복수의 도전체 중 소정의 도전체는 상기 복수의 디스패치 노드(144) 중 디스패치 노드(144a, 144b, 144c, 144d)를 평가자(evaluator)(146)에 접속시킴-와,
    상기 평가자(146)에 응답하여, 상기 복수의 디스패치 노드(144) 중 활성 디스패치 노드(144a, 144b, 144c, 144d)에 타겟 레지스터 선택 정보를 제공하는 제어유닛(148)
    을 포함하는 프로세서(100).
  9. 제 3 항에 있어서,
    상기 접속 수단(142)은 데이터 통신 버스(142)를 포함하는 프로세서(100).
  10. 제 3 항에 있어서,
    상기 접속 수단(242)은,
    상기 복수의 레지스터(120)에 접속된 복수의 디멀티플렉서(demultiplexers)(244)와,
    상기 복수의 디스패치 노드(144)에 접속된 복수의 멀티플렉서(multiplexers)(246)-상기 복수의 디멀티플렉서(244) 중 각각의 디멀티플렉서(244a; 244b; 244c; 244d)는 상기 복수의 멀티플렉서(246) 중 각 멀티플렉서(246a; 246b; 246c; 246d)에 접속되어 있음-
    를 포함하는 프로세서(100).
  11. 청구항 1에 기재된 프로세서에 의해서 실행되는 복수의 인스트럭션을 포함하는 인스트럭션 세트로서,
    상기 분배 수단(140)에 의해 상기 복수의 인스트럭션을 상기 복수의 실행 유닛(160)에 분배하는 것을 제어하는 전용 인스트럭션
    을 더 포함하는 인스트럭션 세트.
  12. 프로세서(100)의 복수의 실행 유닛(160)에 인스트럭션을 분배하는 방법(300)으로서,
    상기 프로세서(100)를 구성하는 전용 인스트럭션을 검출하는 단계(320)와,
    상기 복수의 실행 유닛(160) 중 실행 유닛(160a, 160b, 160c, 160d)에 대해 다른 인스트럭션을 디스패치(dispatch)하는 단계
    를 포함하되,
    상기 전용 인스트럭션의 검출에 따라 상기 복수의 실행 유닛(160) 중에서 상기 실행 유닛(160a, 160b, 160c, 160d)을 선택(330)하는
    인스트럭션 분배 방법(300).
  13. 청구항 1에 기재된 프로세서에 의해 실행될 복수의 인스트럭션을 포함하는 소프트웨어 코드 모듈을 컴파일링(compiling)하는 방법(400)으로서,
    상기 복수의 인스트럭션을 복수의 인스트럭션 번들(instructionbundles)(410)로 번들링(bundling)하는 단계와,
    상기 복수의 실행 유닛(160) 중 실행 유닛(160a, 160b, 160c, 160d)에 의해 연속적으로 실행하기 위한 복수의 무동작 인스트럭션(do nothing instruction)을 검출하는 단계(420)와,
    상기 복수의 무동작 인스트럭션 중 제 1 무동작 인스트럭션을 전용 인스트럭션으로 대체함으로써 상기 복수의 인스트럭션을 수정하는 단계(430)
    를 포함하되,
    상기 제 1 무동작 인스트럭션을 상기 전용 인스트럭션으로 대체(430)함으로써 상기 분배 수단(140)에 의해 상기 복수의 인스트럭션을 상기 복수의 실행 유닛(160)에 분배하는 것을 제어하는
    컴파일링 방법(400).
  14. 제 13 항에 있어서,
    상기 복수의 무동작 인스트럭션 중에서 상기 남아있는 무동작 인스트럭션을 상기 복수의 인스트럭션 번들로부터 제거하는 단계(440)를 더 포함하는 컴파일링 방법(400).
  15. 제 14 항에 있어서,
    상기 복수의 인스트럭션 번들을 다른 복수의 인스트럭션 번들로 재그룹화하는 단계(450)를 더 포함하는 컴파일링 방법(400).
  16. 제 14 항에 있어서,
    제거된 무동작 인스트럭션의 개수를 나타내는 정보를 상기 전용 인스트럭션에 추가하는 단계를 더 포함하는 컴파일링 방법(400).
  17. 제 13 항 또는 제 14 항에 있어서,
    상기 복수의 무동작 인스트럭션이 존재하는 원인을 나타내는 정보를 상기 전용 인스트럭션에 추가하는 단계를 더 포함하는 컴파일링 방법(400).
KR10-2004-7007937A 2001-11-26 2002-11-20 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법 KR20040064713A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP01204543.1 2001-11-26
EP01204543 2001-11-26
PCT/IB2002/004891 WO2003046712A2 (en) 2001-11-26 2002-11-20 Wlim architecture with power down instruction

Publications (1)

Publication Number Publication Date
KR20040064713A true KR20040064713A (ko) 2004-07-19

Family

ID=8181304

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-7007937A KR20040064713A (ko) 2001-11-26 2002-11-20 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법

Country Status (9)

Country Link
US (1) US7472257B2 (ko)
EP (1) EP1451678B1 (ko)
JP (1) JP2005510792A (ko)
KR (1) KR20040064713A (ko)
CN (1) CN100541421C (ko)
AT (1) ATE554441T1 (ko)
AU (1) AU2002348842A1 (ko)
TW (1) TW200409019A (ko)
WO (1) WO2003046712A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100090110A (ko) * 2009-02-05 2010-08-13 삼성전자주식회사 전력 소모 감소를 위한 재구성 가능 프로세서 및 그 동작 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095715A1 (en) * 2002-12-30 2006-05-04 Koninklijke Philips Electronics N.V. Very long instruction word processor
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7428645B2 (en) * 2003-12-29 2008-09-23 Marvell International, Ltd. Methods and apparatus to selectively power functional units
FR2867873A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
FR2867872A1 (fr) * 2004-03-18 2005-09-23 St Microelectronics Sa Dispositif et procede de gestion d'un etat d'attente d'un microprocesseur
US7302554B2 (en) 2004-04-22 2007-11-27 Sony Computer Entertainment Inc. Methods and apparatus for multi-processor pipeline parallelism
US20060015855A1 (en) * 2004-07-13 2006-01-19 Kumamoto Danny N Systems and methods for replacing NOP instructions in a first program with instructions of a second program
JP4986431B2 (ja) * 2005-09-29 2012-07-25 ルネサスエレクトロニクス株式会社 プロセッサ
US7549085B2 (en) * 2006-04-28 2009-06-16 Hewlett-Packard Development Company, L.P. Method and apparatus to insert special instruction
US8174532B2 (en) * 2006-12-10 2012-05-08 Apusone Technology Inc. Programmable video signal processor for video compression and decompression
CN102117197B (zh) * 2011-03-04 2012-08-15 中国电子科技集团公司第三十八研究所 高性能通用信号处理器指令分配装置
US9928094B2 (en) 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
CN106293627B (zh) * 2016-07-27 2019-01-11 珠海市杰理科技股份有限公司 寄存器调用及调用指令编码的方法、装置
JP7208448B2 (ja) * 2019-02-01 2023-01-19 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11829196B2 (en) * 2019-10-22 2023-11-28 Advanced Micro Devices, Inc. Ring transport employing clock wake suppression

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
US6167503A (en) 1995-10-06 2000-12-26 Compaq Computer Corporation Register and instruction controller for superscalar processor
EP1291765B1 (en) * 1996-08-27 2009-12-30 Panasonic Corporation Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream
US5991884A (en) * 1996-09-30 1999-11-23 Intel Corporation Method for reducing peak power in dispatching instructions to multiple execution units
US5951689A (en) * 1996-12-31 1999-09-14 Vlsi Technology, Inc. Microprocessor power control system
EP0924603A3 (en) * 1997-12-16 2001-02-07 Lucent Technologies Inc. Compiler controlled dynamic scheduling of program instructions
US6219796B1 (en) * 1997-12-23 2001-04-17 Texas Instruments Incorporated Power reduction for processors by software control of functional units
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
US6092175A (en) 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6477654B1 (en) * 1999-04-06 2002-11-05 International Business Machines Corporation Managing VT for reduced power using power setting commands in the instruction stream
US6826704B1 (en) * 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
JP2002366351A (ja) * 2001-06-06 2002-12-20 Nec Corp スーパースカラ・プロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100090110A (ko) * 2009-02-05 2010-08-13 삼성전자주식회사 전력 소모 감소를 위한 재구성 가능 프로세서 및 그 동작 방법

Also Published As

Publication number Publication date
ATE554441T1 (de) 2012-05-15
US20040268091A1 (en) 2004-12-30
CN100541421C (zh) 2009-09-16
EP1451678A2 (en) 2004-09-01
TW200409019A (en) 2004-06-01
WO2003046712A3 (en) 2003-10-02
JP2005510792A (ja) 2005-04-21
AU2002348842A1 (en) 2003-06-10
CN1596396A (zh) 2005-03-16
US7472257B2 (en) 2008-12-30
WO2003046712A2 (en) 2003-06-05
AU2002348842A8 (en) 2003-06-10
EP1451678B1 (en) 2012-04-18

Similar Documents

Publication Publication Date Title
KR20040064713A (ko) 프로세서, 인스트럭션 세트, 인스트럭션 분배 방법 및컴파일링 방법
CN111414197B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
US7904905B2 (en) System and method for efficiently executing single program multiple data (SPMD) programs
JP4476267B2 (ja) プロセッサ及びデータ転送ユニット
JP3871458B2 (ja) コンピュータ・システム
US8549258B2 (en) Configurable processing apparatus and system thereof
JP2022539844A (ja) 静止再構成可能データ・プロセッサ
KR101622266B1 (ko) 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
US20020083253A1 (en) Digital signal processing apparatus
US7577874B2 (en) Interactive debug system for multiprocessor array
GB2381610A (en) Multi-thread execution method and parallel processor system
US6675289B1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JPS62159268A (ja) マルチプロセツサシステム
US5625834A (en) Information processing section and system for operating a plurality of vector pipeline sets in two different modes
WO2009115779A1 (en) Pipeline processors
KR100863080B1 (ko) 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템
US20060090062A1 (en) Reconfigurable processor
JP2001249807A (ja) データ処理装置
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US7287151B2 (en) Communication path to each part of distributed register file from functional units in addition to partial communication network
JP2005508029A (ja) リコンフィギュアラブルアーキテクチャのためのプログラム変換方法
US8095806B2 (en) Method of power simulation and power simulator
KR20020081038A (ko) 정보 처리 장치 및 컴퓨터 시스템
JPH08235149A (ja) 単一命令・多データ型並列計算機の命令生成・分配装置
JP2008225710A (ja) コンピュータシステム及び該システムで用いられるプロセス切替え方法

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid