KR20070067687A - 기능 유닛이 판독 포트를 공유하는 데이터 처리 회로 - Google Patents

기능 유닛이 판독 포트를 공유하는 데이터 처리 회로 Download PDF

Info

Publication number
KR20070067687A
KR20070067687A KR1020077006438A KR20077006438A KR20070067687A KR 20070067687 A KR20070067687 A KR 20070067687A KR 1020077006438 A KR1020077006438 A KR 1020077006438A KR 20077006438 A KR20077006438 A KR 20077006438A KR 20070067687 A KR20070067687 A KR 20070067687A
Authority
KR
South Korea
Prior art keywords
functional units
register
result
write
operand
Prior art date
Application number
KR1020077006438A
Other languages
English (en)
Other versions
KR101311187B1 (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 KR20070067687A publication Critical patent/KR20070067687A/ko
Application granted granted Critical
Publication of KR101311187B1 publication Critical patent/KR101311187B1/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
    • 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, 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

데이터 처리 회로는 판독 포트 및 기록 포트를 가지는 레지스터 파일을 포함한다. 복수의 기능 유닛(21a-c)은 판독 포트의 동일 결합으로부터 피연산자 데이터를 수신하기 위해 결합된다. 각 기능 유닛은 각 결과를 기록하는 기록 포트 중 각 하나 연결된다. 명령어 발행 슬롯은 상기 결합 포트 판독 포트 및 판독 포트의 각각에 레지스터 선택 정보를 인가하는 출력(11)을 갖는다. 발행 슬롯의 출력은 또한 연산 코드를 인가한다. 복수의 기능 유닛중에서 기능 유닛(21a-c)은 상기 동일 결합으로부터 동일 피연산자를 사용하여 각 동작을 각기 실행함으로써 연산 코드의 적어도 하나의 값에 응답하기 위해 배열되고, 각 기능 유닛은 기록 포트의 각각에서 각 결과를 산출한다.
데이터, 레지스터, 포트, 명령어, 피연산자

Description

기능 유닛이 판독 포트를 공유하는 데이터 처리 회로{DATA PROCESSING CIRCUIT WHEREIN FUNCTIONAL UNITS SHARE READ PORTS}
본 발명은 데이터 처리회로 및 이러한 데이터 처리 회로를 사용하는 프로그램을 실행하는 방법에 대한 것이다.
미국특허 제6,076,154호로부터 복수의 발행 슬롯을 구비하는 VLIW(Very Long Instruction Word) 데이터 처리 회로를 제공하는 것이 알려져 있다. VLIW 프로세서는 복수의 기능 유닛에 병렬로 복수 동작을 구성하는 명령어를 발행하는 명령 발행 회로를 사용한다. 각 동작을 특정하는 정보는 명령 발행 유닛의 각 발행 슬롯에서 발행된다. 각 발행 슬롯은 동작(operation)을 식별하는 연산 코드와 복수의 레지스터 선택 코드를 제공하며, 상기 선택코드는 지정된 동작의 피연산자가 로딩되어야 하고/하거나 지정된 동작의 결과가 기록되어야만 하는 레지스터 파일에서 레지스터의 위치를 지정한다. 레지스터 파일은 하나 이상의 독립적인 레지스터 파일 부분으로 구성될 수 있고, 이 부분은 당연히 각 레지스터 파일이다. 피연산자를 위한 레지스터 선택 코드는 레지스터 파일의 포트를 판독하기 위해 제공된다. 회답으로, 판독 포트는 피연산자를 제공한다. 연산 코드는 기능 유닛에 제공되며, 이 기능 유닛은 피연산자에 지정된 동작을 제공하고 레지스터 파일의 기록 포트에 동작의 결과를 제공한다. 발행 슬롯으로부터 레지스터 선택 코드는 결과가 기록되는 레지스터를 제어하기 위해 기록 포트에 제공된다.
많은 실제 VLIW 프로세서에서, 기능 유닛의 각 그룹은 각 발행 슬롯에 연결된다. 그룹 내에 있는 기능 유닛은 레지스터 파일의 동일한 판독 포트에 연결된 피연산자 입력 및 레지스터의 동일한 기록 포트에 연결된 결과 출력을 가진다. 한 그룹의 기능 유닛이 발행 슬롯에 부착된 경우, 연산 코드는 이 그룹으로부터 기능 유닛중의 어느 것이 동작을 실행하고 연산 코드에 응답하여 그 동작의 결과를 기록할 것인지를 결정한다. 만일 관련 기능 유닛이 상이한 동작을 실행할 수 있다면, 또한 연산 코드는 기능 유닛 내에서 동작을 선택한다.
VLIW 프로세서의 사용은 명령어가 병렬로 실행될 수 있으며, 프로그램을 실행하기 위해 필요한 시간을 감소시키는 이점을 갖는다. 그러나, 이는, 예를 들면 단일 명령어 발행 프로세서에 필요한 것보다, 복수 발행 슬롯을 실현하기 위해 더 많은 하드웨어를 희생하는 결과가 된다. VLIW 프로세서가 소정의 업무를 실행하는 프로그램의 실행을 위하여 소비하는 총전력양은 일반적으로 단일 명령어 발행 프로세서로 동일한 업무를 실행하기 위해 소비된 전력과 적어도 동일하다. 일반적으로, 프로그램 당 전력은 더 높은데, 이는 많은 명령어에서 일부의 발행 이슈가 사용되지 않은 채로 남아있기 때문이다. 더욱이, 소정 업무를 실행하는 VLIW 프로그램에 의해 점유된 메모리 공간은 일반적으로 단일 명령어 발행 프로세서를 위한 동일한 업무를 위한 프로그램용 메모리 공간과 적어도 동일하다. 일반적으로, 요구되는 메모리 공간은 사용되지 않는 코드 공간으로 인해, 더 크다.
다른 목적들 중에서, 본 발명의 목적은 프로그램 가능한 프로세서 회로가 소정 업무를 실행하도록 하는 프로그램을 저장하기 위해 요구되는 메모리 공간의 양을 감소시키는 것이다.
다른 목적들 중에서, 본 발명의 목적은 프로그램 가능한 프로세서 회로가 소정 업무를 실행하기 위해 필요로 하는 총 전력량을 감소시키는 것이다.
본 발명의 데이터 처리 회로는 청구항 1에 기술된다. 본 발명에 따르면, 하나의 발행-슬롯에 대응하는 복수의 기능 유닛은 레지스터 파일의 공유된 하나 이상의 판독 포트로부터 적어도 하나 및 바람직하게는 2개 이상의 피연산자를 수신한다. 복수의 기능 유닛은 레지스터 파일에 상이한 기록 포트에서 각 결과를 산출한다. 복수의 기능 유닛에 발행된 연산 코드는 복수의 기능 유닛이 공유된 판독 포트(들)로부터 연산자 또는 연산자들을 사용하여 동작을 동시에 실행할 지 및/또는 어느 결합에서 동시에 실행할 지를 제어한다. 그러므로, 단일 발행된 커맨드는 상이한 기능 유닛의 적어도 하나 및 바람직하게는 2개 이상의 공유된 피연산자를 위한 공유 레지스터 어드레스를 사용하여, 동시에 복수의 기능 유닛을 제어한다. 이러한 방식으로, 더 적은 수의 커맨드가 데이터 처리 회로용 프로그램에서 요구되며, 이는 프로그램을 저장할 필요가 있는 메모리양과 명령어의 결합을 실행하기 위해 요구된 소비전력을 둘 다 감소시킨다. 명령어는 입력 피연산자(들) 및 결과(들)를 위한 대응하는 레지스터 어드레스 및 연산 코드를 포함한다.
바람직하게는, 추가 기능 유닛은 복수의 기능 유닛과 병렬로 발행 슬롯에 연결되므로, 따라서 동일 피연산자를 사용하여 상이한 동작의 동시 실행과 관련된 동작에 부가하여, 다른 동작이 또한 선택될 수 있다. 바람직하게는, 연산 코드의 상이한 값은 기능 유닛의 그룹으로부터 반드시 비-중첩 복수성일 필요는 없지만, 동일 피연산자를 사용하여 상이한 동작의 동시 실행에 관련된 각기 상이한 복수를 선택한다. 이는 상이한 기능 유닛의 피연산자를 위한 공유 레지스터 어드레스를 사용하여 프로그램에서 복수의 기능 유닛을 제어하는 커맨드를 사용하기 위한 기회를 증가시킨다. 이는 프로그램에서 더 적은수의 커맨드를 초래한다.
바람직하게는, 기능 유닛의 단지 하나가 판독 포트 또는 판독 포트들로부터 피연산자를 사용하여 한번에 한 동작의 실행을 야기하는 제 1 연산 코드, 및 복수의 기능 유닛이 판독 포트 또는 판독 포트들로부터 공유 피연산자를 사용하여 동시에 한 동작의 실행을 야기하는 제 2 연산 코드 둘 다가 지원된다. 이는 만일 기능 유닛중 단지 하나로부터의 결과가 프로그램에서 필요하다면, 복수의 기능 유닛에 관련된 동작의 사용을 회피하는 것을 가능하게 한다. 또한, 이는 만일 독립적으로 필요하다면, 임의의 동작을 실행하기 위해 아래와 같은 가능성을 희생할 필요 없이도, 공유 피연산자를 사용하여 복수의 기능 유닛에 의해 결국 동시 실행이 되는 연산 코드의 갯수를 제한하는 것이 가능하다. 이러한 방식으로, 명령어의 총 갯수는, 가장 빈번하게 발생하는 결합에 대하여서만 결국 동일한 실행이 되는 연산 코드를 도입함으로써 적게 유지될 수 있다.
일실시예에서, 기록 포트는 각 상이한 결과 워드 크기를 갖는다. 그러므로, 곱 및 추가와 같은 동일 피연산자로부터 상이한 워드 사이즈를 산출하는 상이한 동작이 동일 피연산자를 사용하여 동시에 실행될 수 있다. 바람직하게는, 레지스터 파일은 기록 포트의 각각에 연결되는 복수의 부분을 포함하며, 각 부분은 상이한 결과를 수신하기 위해 각 워드 크기의 레지스터를 포함한다.
또 다른 실시예에서, 추가 기능 유닛은, 제 1 및 제 2 비트 크기를 갖는 동일한 결과를 나타내는 버전을 각기 제 1 및 제 2 기록 포트에 기록하기 위해 상호 상이한 워드 크기를 가지는 레지스터 파일 부분의 기록 포트에 연결된다. 이는 변환을 위한 추가 명령어를 요구할 필요없이, 동작의 결과를 사용하는 것을 가능하게 한다. 이는 프로그램에서 명령어의 갯수를 감소시킨다. 다른 실시예에서, 결과의 최상위 부분 및 최하위 부분은 상이한 기록 포트에 기록되고, 완전한 결과가 더 큰 워드 크기를 갖는 레지스터 파일의 제 3 기록 포트에 기록된다. 이는 변환을 위한 추가 명령어를 요구할 필요없이 동작의 결과를 사용하는 것을 가능하게 한다.
본 발명의 위 목적 및 다른 목적, 유리한 측면은 다음 도면을 사용하여, 비-제한적인 예로서 기술될 것이다.
도 1은 데이터 처리 회로를 도시한 도면.
도 2는 기능 유닛의 그룹을 도시한 도면.
도 3은 데이터 처리 회로를 도시한 도면.
도 4 내지 도 7은 기능 유닛의 부분을 도시한 도면.
도 1은 명령어 발행 회로(10), 기능 유닛의 그룹(12) 및 레지스터 파일(14)을 포함하는 데이터 처리 회로를 도시한다. 명령어 발행 회로(10)는 복수의 발행 슬롯을 가지며, 각 발행 슬롯은 기능 유닛그룹(12)의 각 하나 및 레지스터 파일(14)에 연결된 커맨드 라인(11)의 그룹을 포함한다.
레지스터 파일(14)은 복수의 레지스터(별도로 도시하지 않음)를 포함한다. 레지스터 파일(14)은 복수의 판독 포트 및 복수의 기록 포트(상세하게 도시 되지 않음)를 갖는다. 각 판독 포트는 어드레싱된 레지스터에 저장된 데이터의 비트를 반환하기 위한 레지스터 어드레스 및 연결을 수신하기 위한 연결을 포함한다. 각 기록 포트는 레지스터 어드레스를 수신하기 위한 연결 및 어드레싱된 레지스터 내에 저장되어야 하는 데이터의 비트를 수신하기 위한 연결을 포함한다. 명료를 위하여, 단일 라인은 각 레지스터 파일(14)로의 커맨드 라인(11)에서 도시되지만, 그러나 각 단일 라인은 복수의 레지스터를 어드레싱하기 위하여 각 판독 및/또는 기록 포트에 복수의 연결을 나타내는 것으로 이해하여야 할 것이다.
기능 유닛(12)의 각 그룹은 발행 슬롯의 각 하나에 연결된 커맨드 입력, 및 레지스터 파일(14)에 연결된 결과 출력을 갖는다. 비록 기능 유닛(12)의 2개 그룹이 명확하게 도시되어 있을 지라도, 각기 각 발행 슬롯에 연결된 더 많은 그룹이 존재할 수 있다. 명료를 위하여, 단일 라인은 각 레지스터 파일(14) 및 기능 유닛(12) 사이에 각 포트에 대하여 도시되지만, 어드레싱된 레지스터로부터 비트를 수신 또는/및 이 레지스터에 비트를 제공하기 위해, 각 판독 및 기록 포트로부터 및/또는 이들 포트로 복수의 연결을 나타냄을 이해하여야 한다.
명령어 발행 회로는 그 자체로 알려져 있다. 명령어 발행 회로(10)는 일반적으로 명령어 메모리(미도시)에 연결되고, 일반적으로 명령어 메모리에서 명령어의 어드레스를 산출하는 프로그램 카운터(미도시)를 포함한다. 명령어 발행 회로(10)는 이들 명령어를 수신하고, 명령어로부터 복수의 커맨드를 도출한다. 명령어 발행 회로(10)는 각 발행 슬롯(11)에서 병렬로 커맨드를 발행한다. 각 커맨드는 기능 유닛(12)의 그룹에 인가되는 연산 코드 및 레지스터 파일(14)에 인가되는 다수의 레지스터 선택 코드를 포함한다. 각 레지스터 선택 코드는 레지스터 선택 코드가 인가되는 레지스터 파일에서 선택된 레지스터를 나타낸다. 발행 슬롯으로부터의 이 레지스터 선택 코드는 레지스터의 레지스터 위치 및 동작을 위하여 입력으로 필요한 피연산자의 레지스터 위치를 선택하기 위해 도움이 되며, 동작의 결과가 저장될 것이다. 비록 이들 레지스터 선택 코드가 개념적으로 단일 커맨드에 속할 지라도, 실제 커맨드를 위한 상이한 레지스터 선택 코드는 서로에 대하여 시간 상 오프셋으로 발행되는데, 이는 이들 코드가 커맨드의 실행 동안 상이한 스테이지에서 필요할 수 있기 때문이다. 이는, 예를 들면, 동일 커맨드의 상이한 부분이 상이한 명령어 사이클에서 발행되는 경우, 파이프라인 동작동안 발생한다.
도 2의 (a)는 기능 유닛 그룹(12)의 예를 도시한 것이다. 그룹(12)은 2개의 기능 유닛(21a,b)을 포함한다. 레지스터 파일(미도시)로부터 각 피연산자를 수신하기 위한 2개의 입력 연결(20)이 도시된다. 입력 연결(20)은 양 쪽 기능 유닛(21a,b)에 연결된다. 제 1 레지스터 파일(미도시)에 결과를 인가하기 위한 2개의 출력 연결(26)이 도시된다. 각 출력 연결은 기능 유닛(21a,b)의 각 하나의 출력으로부터 연결된다. 비록 단일 라인이 연결을 나타내기 위해 사용될지라도, 각 연결은 일반적으로 각 전도체는 각 비트를 위한, 각 복수의 전도체를 포함하므로, 레지스터 파일에 대한 각 연결은 예를 들면 32개 전도체를 포함한다 것을 이해해야 한다.
동작에서, 도 2의 그룹을 위한 각 커맨드는 2개의 피연산자를 위한 레지스터 어드레스 및 2개의 결과를 위한 레지스터 어드레스를 포함한다. 명령어 발행 회로(10)가 커맨드를 가지는 명령어를 만나게 되는 경우, 명령어 발행 회로(10)는 기능 유닛 그룹(12)에 이러한 커맨드의 연산 코드, 레지스터 파일(14)의 판독 포트에 2개의 피연산자 레지스터 어드레스, 및 레지스터 파일(14)의 기록 포트에 2개의 결과 레지스터 어드레스를 발행한다. 응답에서, 레지스터 파일(14)은 2개의 피연산자를 획득한다. 레지스터 파일(14)은 자신의 판독 포트로부터 양쪽 기능 유닛(21a,b)으로 이들 피연산자를 인가한다.
커맨드의 연산 코드는 상이한 동작을 선택하는 상이한 값을 취한다. 적어도, 하나의 값은 양쪽 기능 유닛(21a,b)이 레지스터 파일(14)로부터 수신된 동일 피연산자에 관한 각 동작을 실행하도록 한다. 연산 코드의 이러한 값에 대한 응답으로, 기능 유닛(21a,b)은 각 기록 포트에 연결(26)에 대한 결과를 기록한다.
일실시예에서, 제 1 기능 유닛(21a)은 가산 회로를 포함하고, 제 2 기능 유닛(21b)은 감산 회로를 포함하므로, 피연산자의 합 및 차이는 각 결과로서 출력된다. 가산 및 감산 회로는 각 기능 유닛에서 각 프로그램 가능한 연산 회로(즉 연산 및 로직 유닛)의 일부가 된다. 이 경우, 기능 유닛(21a,b)은 동일 피연산자에 관한 연산 코드에 관한 응답으로 실행될 각 연산 동작을 선택하기 위해 배열될 수 있다.
다른 일실시예에서, 제 1 기능 유닛(21a)은 양쪽 피연산자의 최소 갯수를 나타내는 피연산자 중의 하나를 선택하고 출력하는 회로를 포함하고, 제 2 기능 유닛(21b)은 양쪽 피연산자의 최고 갯수를 나타내는 오퍼랜드를 선택하고 출력하는 회로를 포함하므로, 피연산자의 최소 및 최대는 각 결과로서 출력된다. 또 다른 실시예에서, 제 1 기능 유닛(21a)은 가산 회로를 포함하고 제 2 기능 유닛(21b)은 이동 회로를 포함하게 되므로, 피연산자 중 하나의 쉬프트된 버전과 피연산자의 합은 각 결과로서 출력된다.
물론, 본 발명은 도면에서 도시된 기능 유닛의 그룹의 특정 타입에 제한되지 않는다. 예를 들면, 3개 이상의 판독 포트는 기능 유닛(12)의 그룹에 연결되고, 그 그룹 내에 있는 기능 유닛(21a,b)의 각각에 연결될 수 있다. 이러한 방식으로, 기능 유닛은 연산 코드의 특정값에 응답하여 더 복잡한 동작을 실행하기 위해 배열될 수 있다.
도 2의 (b)는 레지스터 파일(미도시)의 판독 포트에 동일 연결(20)이 연결된 3개의 각 기능 유닛(21a-c)이 각기 연결되는 대안적인 실시예를 도시한 것이다. 이 그룹은 레지스터 파일(미도시)의 각 판독 포트에 대한 3개의 연결(26)을 갖는다. 모든 3개의 기능 유닛(21a 내지 21c)은 연산 코드를 수신하기 위해 발행 슬롯에 연결된다. 이러한 실시예에서, 기능 유닛을 위한 각 커맨드는 3개의 결과 레지스터 어드레스를 포함한다. 이 결과 레지스터 어드레스는 발행 슬롯(11)을 통하여 레지스터 파일의 3개의 각 기록 포트에 발행된다. 기능 유닛(21a 내지 21c)은 연결(20)로부터 동일 피연산자를 사용하여 각 동작을 실행함으로써 연산 코드의 적어도 하나 값에 응답한다. 기능 유닛의 임의의 더 큰 갯수는 연산 코드에 응답하여 각 동작을 실행하기 위해 동일 판독 포트 및 각 기록 포트에 연결될 수 있음을 이해하여야 한다.
도 2의 (c)는 기능 유닛(21a 내지 21c)의 결과 출력 사이에 3-2 다중 송신 회로(27)가 추가되는 실시예를 도시한다. 이러한 실시예에서, 그룹(12)은 레지스터 파일(미도시)의 각 기록 포트에 연결된 2개의 출력(26)을 갖는다. 이러한 실시예에서, 기능 유닛에 대한 각 커맨드는 2개의 결과 레지스터 어드레스를 포함하고, 연산 코드는 기능 유닛(21a 내지 21c) 중 어느 것으로부터 결과가 레지스터 파일에 기록될 것인지를 제어한다. 이 연산 코드는 연결(26)에 대한 선택된 기능 유닛(21a 내지 21c)으로부터 결과를 판독 포트에 인가하기 위해 다중 전송 회로(27)를 제어한다. 만일 연산 코드가 이 기능 유닛(21a 내지 21c)의 결과가 기록 포트에 인가되지 않는 것을 나타낸다면, 각 기능 유닛(21a 내지 21c)은 연산 코드에 대한 응답으로 그 자신을 디스에이블하도록 배열될 수 있다. 물론, 3개 기능 유닛(21a 내지21c) 이상의 더 큰 갯수(N)는 이러한 방식으로 결합될 수 있으며, 각 기록 포트에 대해 2 이상이고 N보다 적은 연결의 임의 갯수(M)가 사용될 수 있다. 다중 송신 회 로는 입력 및 출력 사이에서 임의 연결을 실현하기 위해 배열될 수 있다. 그러나, 실시예에서, 다중 송신 회로는, 예를 들면 항시 하나의 기능 유닛(21a)을 하나의 출력(26)에 연결하고 다른 기능 유닛(21b 내지 21c) 중 하나를 선택한 연산 코드를 다른 축력(26)에 연결함으로써, 단지 부분적인 연결을 제공하도록 배열될 수 있다.
이러한 실시예에서, 상이한 연산 코드는 동일 판독 포트로부터 적어도 부분적으로 피연산자를 사용하여 M개의 결과를 산출하기 위해 N개의 기능 유닛(21a 내지 21c(예를 들면, N=3)으로부터 상이한 복수의 M개 기능 유닛(예를 들면, M=2)을 선택하기 위해 사용될 수 있다.
그룹(12)이 복수의 판독 포트, 예를 들면 3개 이상의 판독 포트에 연결되는 일부 실시예에서, 모든 기능 유닛(21a,b)이 연산 코드의 특정값에 응답하여 모든 판독 포트로부터 피연산자를 반드시 사용할 필요는 없다. 예를 들면, 연산 코드의 특정값에 응답하여, 판독 포트로부터 단지 다수의 핵심 피연산자만이 모든 기능 유닛에 의해 사용될 수 있으며, 나머지 피연산자는 선택된 기능 유닛에 의해서만 사용된다.
더욱이, 모든 연산 코드 값이 복수의 기능 유닛이 결과를 산출하기 위해 동작하는 효과를 반드시 가질 필요는 없다. 연산 코드 값의 적어도 일부는 병렬로 결과를 기록할 수 있는 그룹(12)의 기능 유닛(21a 내지 21b) 중 단지 하나, 또는 갯수(M) 보다 적은 개수의 기능 유닛(21a 내지 21c)이 결과를 산출하기 위해 피연산자를 사용하기 위해 활성화되는 효과를 가질 수 있다. 이러한 목적으로, 더미 기능 유닛이 그룹으로 제공될 수 있으며, 이 더미 기능 유닛은 이러한 연산 코드 값에 응답하여 비사용 기록 포트에서 표준 결과를 출력하기 위해 설계된다.
도면은 연산 코드를 위한 그룹(12)의 입력이 상이한 기능 유닛(21a 내지 21c )에 직접 연결되는 실시예를 도시한다. 이러한 실시예에서, 각 기능 유닛(21a 내지 21c)(및 선택적으로 멀티플렉서(27))은 연산 코드를 피연산자를 처리하는 기능 유닛(21a 내지 21c)의 동작 회로(미도시)를 위한 제어 신호로 변환시키는 디코더 회로(미도시)를 포함한다. 다른 실시예에서, 연산 코드를 복수의 기능 유닛(21a 내지 21c)의 동작 회로(미도시)를 위한 제어 신호로 변환시키는 일반적인 디코더 회로가 사용될 수 있다.
실시예에서, 그룹의 상이한 기능 유닛(21a 내지 21c)은 각기 프로그램 가능하고, 즉 각각은 상이한 선택 가능한 동작을 실행할 수 있다. 이러한 실시예에서, 커맨드의 연산 코드는 상이한 필드를 포함할 수 있으며, 각 필드는 그룹에서 기능 유닛(21a 내지 21c) 중의 각 하나를 위한 선택 가능한 동작 중 어느 하나를 선택할 수 있는 연산 코드를 포함한다. 그러나, 이는 결국 상당한 크기의 동작코드가 되게 할 수 있다. 그러므로, 바람직하게는, 이용 가능한 연산 코드는 개별 기능 유닛(21a 내지 21c)의 선택 가능한 동작의 모든 가능한 결합 중 단지 선택된 결합만이 이용 가능하도록 선택된다. 예를 들면, 다른 기능 유닛(21a 내지 21c)을 수동적으로 남기면서, 개별 기능 유닛이 선택 가능한 동작 중 임의의 동작을 실행하도록 하는 제 1 연산 코드 값은 각각의 값이 동일 피연산자를 사용하여 상이한 동작을 실행하기 위해 기능 유닛(21a 내지 21c)의 결합을 활성화는 다수의 제 2 연산 코드 값을 더할 수 있다. 이러한 경우, 상이한 제 2 연산 코드의 갯수는 가능한 결합의 총 갯수보다 상당히 적을 수 있으며, 연산 코드는 예를 들면 일반적인 프로그램에서 빈번히 발생하는 결합에만 이용 가능하다.
비록 본 발명이 모든 레지스터가 동일 크기의 워드를 저장하는 레지스터 파일을 갖는 실시예에 대하여 기술하였을 지라도, 이는 반드시 필수적인 것은 아니다. 다른 실시예에서, 레지스터 파일(14)은 복수 부분(각각의 부분은 그 자체 내로 기록 및 판독 포트를 가진 레지스터 파일을 형성)을 구성한다. 각각의 부분은 각 워드 크기의 레지스터를 포함하고, 상이한 부분의 각 워드 크기는 상이할 수 있다.
도 3은 명령어 발행 회로(10), 그룹 기능 유닛(12) 및 제 1 및 제 2 레지스터 파일(14a,b)을 포함하는 데이터 처리 회로를 도시한다. 각 레지스터 파일(14a,b)은 복수의 레지스터(별도로 도시되지 않음)를 포함한다. 제 1 레지스터 파일(14a)에서 각 레지스터는 제 1 다수의 비트(예를 들면 32 비트)를 저장한다. 제 2 레지스터 파일(14b)에서 각 레지스터는 제 2 다수의 비트를 저장하며, 이 제 2 다수는 제 1 다수의 갯수보다 크다(예를 들면, 64 비트).
각 레지스터 파일(14a,b)은 복수의 판독 포트 및 복수의 기록 포트(상세히 도시되지 않음)를 갖는다. 각 판독 포트는 어드레싱된 레지스터 내에 저장된 데이터의 비트를 반환하기 위한 연결, 및 레지스터 어드레스를 수신하는 연결을 포함한다. 각 기록 포트는 어드레싱된 레지스터 내에 저장되어야 하는 데이터의 비트를 수신하기 위한 연결, 및 레지스터 어드레스를 수신하는 연결을 포함한다.
명료를 위하여, 단일 라인은 각 레지스터 파일(14a,b)에 대한 발행 슬롯(11)에서 도시되지만, 각 단일 라인은 복수의 레지스터를 어드레싱하기 위한 각 판독 및/또는 기록 포트에 복수의 연결을 나타내는 것으로 이해하여만 한다. 각 기능 유닛 그룹(12)은 발행 슬롯 각각에 연결된 커맨드 입력과 레지스터 파일(14a,b)에 연결된 피연산자 입력과 결과 출력을 가진다. 비록 기능 유닛(12)의 2개 그룹이 명확하게 도시되었을 지라도, 각각이 각 발행 슬롯에 연결되는 더 많은 그룹이 존재할 수 있다. 명료를 위하여, 단일 라인은 각 레지스터 파일(14a,b) 및 기능 유닛(12) 사이에 도시되지만, 각 단일 라인은 복수의 레지스터로 비트를 공급하고 및/또는 이 레지스터로부터 수신하기 위해, 각 판독 및 기록 포트에 및/또는 이 포트로부터의 복수의 연결을 나타내는 것으로 이해하여만 한다.
도 2의 (a) 내지 (c) 타입의 그룹(12)이 도 3의 회로에서 사용되는 경우, 기능 유닛(21a 내지 21c)의 상이한 유닛들은 상호 상이한 워드 크기를 갖는 결과를 산출하기 위해 배열될 수 있다. 예를 들면, 하나의 기능 유닛은 n-비트 피연산자 워드를 가지고 n-비트 결과 워드를 산출하는 연산 유닛이 될 수 있으며, 반면에 기능 유닛(21a 내지 21c)의 또 다른 하나는 n-비트 피연산자를 가지고 2n-비트 워드(예를 들면, n=32)를 산출하는 곱셈기일 수 있다.
도 4는 기능 유닛 그룹(12)의 예를 도시하며, 여기서 레지스터 파일(14a,b)(미도시)의 판독 포트로부터 각 피연산자를 인가하기 위한 연결은 별도로 도시된다. 4개의 입력 연결(20,24)은 피연산자를 수신하기 위해 도시된다. 3개의 제 1 입력 연결(20)은 제 1 레지스터 파일(14a)(미도시)에 연결되고, 하나의 제 2 입력 연결은 제 2 레지스터 파일(14b)에 연결된다. 2개의 제 1 출력 연결은 제 1 레지스터 파일(14a)에 연결되고, 하나의 제 2 출력 연결은 제 2 레지스터 파 일(14b)에 연결된다. 비록 단일 라인이 연결을 나타내기 위해 사용될지라도, 각 비트에 대하여 각 전도체인 각 복수의 도체를 각 연결이 통상적으로 포함하게 되므로, 제 1 레지스터 파일(14a)에 대한 각 연결은 예를 들면 32개의 전도체를 포함하고 제 2 레지스터 파일(14b)에 대한 각 연결은 예를 들면 64개의 전도체를 포함한다는 것이 이해되어야 한다.
일반적으로, 도 2의 (a) 내지 (c)에 관하여 기술된 바와 같이, 그룹(12)은 동일 피연산자 입력(20)에 적어도 부분적으로 연결되고 각 결과를 산출하기 위해 배열된 복수의 기능 유닛을 포함할 것이다.
도 5는 그룹(12)에서 기능 유닛 중 적어도 하나가 기능 유닛의 다른 하나에 의해 산출될 결과를 사용하는 실시예를 도시한다. 이 기능 유닛은 곱셈기(30), 가산기(32) 및 결과 분리기(34)를 포함한다. 제 1 레지스터 파일(14a)(미도시)의 제 1 및 제 2 판독 포트의 데이터 부분(20)은 곱셈기(30)의 각 입력에 연결된다. 입력의 각각은 병렬로 제 1 복수의 N개 비트(예를 들면, N=32)를 인가하기 위한 전도체를 포함한다. 제 2 레지스터 파일(14b, 미도시)로부터 판독 포트의 데이터 부분(24) 및 곱셈기(30)의 출력은 가산기(32)의 입력에 연결된다. 가산기(32)의 입력 각각은 병렬로 제 1 복수의 2*N개 비트(예를 들면, 2*N=64)를 인가하기 위한 전도체를 포함한다. 가산기(32)의 출력은 병렬로 가산 결과인 2*N 비트(예를 들면, 2*N=32)를 공급하기 위한 전도체를 포함한다. 가산기(32)의 출력은 제 2 레지스터 파일(14b)(미도시)에 대한 기록 포트의 데이터 부분(26)에 연결된다. 결과 분리기(34)는 곱셈기(30)로부터 출력의 전도체의 분기를 각각 N개의 최상위 비트 및 N 개의 최하위 비트인 2개의 그룹으로 분리한다. 이러한 MADD 명령어를 위한 커맨드는 다음식에 의해 표시된다.
MADD R1,R2,R3,R4,R5,R6
여기서 MADD는 연산 코드를 기호화한 것이고, R1, R2는 제 1 레지스터 파일(14a)의 판독 포트에 인가된 레지스터 어드레스를 기호화한 것이며, R3은 제 2 레지스터 파일(14b)의 판독 포트에 인가되는 레지스터 어드레스를 기호화한 것이며, R4와 R5는 제 1 레지스터 파일(14a)의 기록 포트에 인가된 레지스터 어드레스를 기호화한 것이며, R6은 제 2 레지스터 파일(14b)의 기록 포트에 인가된 레지스터 어드레스를 기호화한 것이다. 명령어 발행 회로(10)에 의해 획득된 커맨드는, 바람직하게는, 연산 코드 및 각 레지스터 어드레스를 나타내는 각 필드로 분할될 수 있는 복수의 비트를 포함한다.
이해할 수 있는 바와 같이, MADD 커맨드는 발행된 명령어에서 레지스터 어드레스에 의해 별도로 모두 선택된 3개의 결과 레지스터에 관련된다. 이 상이한 결과 레지스터는 결과(의 부분)를 사용하기 위해 나중 명령어에 의해 별도로 어드레싱될 수 있다. 다른 실시예에서, 2개의 N개 비트 출력은 2*N 비트 워드를 가진 레지스터 파일에 연결된 단일 2*N개 출력으로 병합될 수 있다.
추가 기능 유닛은 상이한 판독 포트에 다중 결과를 기록하는 그룹에서 존재할 수 있다. 이러한 경우, 곱셈기는, 동일 피연산자에 관해 동작하는 복수의 상이한 기능 유닛이 각 기록 포트에 연결되는지, 또는 다중 결과를 산출하는 하나의 기 능 유닛이 상이한 기록 포트에 연결되는 지를 선택하기 위해 제공될 수 있다. 물론, 이러한 추가 기능 유닛은 단독으로 사용될 수 있다(즉, 동일한 피연산자를 공유하는 상이한 기능 유닛이 연결되는 동일 기록 포트에 연결되지 않음). 동일한 피연산자를 공유하는 상이한 기능 유닛이 연결되는 동일 기록 포트에 연결된 결과 출력과 이러한 추가 기능 유닛의 결합은 기록 포트가 더 효율적인 사용될 수 있는 이점을 가진다.
도 6은 MADD(Multiply Add) 명령어의 다른 타입에 응답하여 활성화되는 기능 유닛의 일부를 도시한다. 기능 유닛은 곱셈기(30), 가산기(32) 및 결과 분리기(34)를 포함한다. 제 1 레지스터 파일(14a)(미도시)의 제 1 및 제 2 판독 포트의 데이터 부분(20)은 곱셈기(30)의 각 입력에 연결된다. 입력의 각각은 병렬로 제 1 복수의 N개 비트(예를 들면, N=32)를 인가하기 위한 전도체를 포함한다. 제 2 레지스터 파일(14b)(미도시)로부터 곱셈기(30)의 출력 및 판독 포트의 데이터 부분(24)은 가산기(32)의 입력에 연결된다. 가산기(32)의 입력 각각은 병렬로 제 1 복수의 2*N개 비트(예를 들면, 2*N=64)를 인가하기 위한 전도체를 포함한다. 가산기(32)의 출력은 병렬로 가산 결과의 2*N개 비트(예를 들면, 2*N=32)를 인가하기 위한 전도체를 포함한다. 가산기(32)의 출력은 제 2 레지스터 파일(14b)(미도시)에 대한 기록 포트의 데이터 부분(26) 및 제 2 레지스터 파일(14b)의 각 데이터 부분(22)에 연결되며, 이는 각기 결과의 N개 최하위 비트 및 N개의 최상위 비트를 수신한다. 결과 분리기(34)는 단지 가산기(32)로부터 출력의 전도체의 분기를 각기 N개의 최상위 비트 및 N개의 최하위 비트인 2개의 그룹으로 분리한다. 이러한 MADD 명령어를 위한 커맨드는 다음식에 의해 표시될 수 있다.
MADD R1,R2,R3,R4,R5,R6
여기서, MADD는 연산 코드를 기호화한 것이고, R1, R2는 제 1 레지스터 파일(14a)의 판독 포트에 인가된 레지스터 어드레스를 기호화한 것이며, R3은 제 2 레지스터 파일(14b)의 판독 포트에 인가되는 레지스터 어드레스를 기호화한 것이며, R4와 R5는 제 1 레지스터 파일(14a)의 기록 포트에 인가된 레지스터 어드레스를 기호화한 것이며, R6은 제 2 레지스터 파일(14b)의 기록 포트에 인가된 레지스터 어드레스를 기호화한 것이다. 명령어 발행 회로(10)에 의해 획득된 커맨드는, 바람직하게는, 연산 코드 및 각 레지스터 어드레스를 나타내는 각 필드로 분할될 수 있는 복수의 비트를 포함한다.
이해할 수 있는 바와 같이, MADD 커맨드는 동일 결과가 2회 기록된 효과를 가진다: 대체로 제 2 레지스터 파일(14b)에서 레지스터에 한 번, 제 1 레지스터 파일(14b)에서 각 레지스터에 대한 2개 부분에서 한 번. 이것은 발행될 명령어에서 레지스터 어드레스에 의해 개별적으로 선택되는 모두 3개의 결과 레지스터와 관련된다. 이는 레지스터 사용을 최적화하기 위해서 완전히 자유롭게 처리 회로를 위한 명령어의 프로그램을 컴파일하는 컴파일러에게 완전한 자유를 제공한다. 상이한 결과 레지스터는 사전 변환 필요없이도, 결과(의 부분)를 사용하기 위해 나 중 명령어에 의해 별도로 어드레싱될 수 있다. N-비트 결과 레지스터는, 예를 들면 기능 유닛의 하나의 그룹에서 사용될 수 있으며, 2*N개 비트 결과는, 예를 들면 기능 유 닛의 다른 그룹에서 사용될 수 있다.
MADD 커맨드는 발행 슬롯에 인가될 수 있는 커맨드의 단지 한 가지 예가 됨을 이해하여야 한다. 상이한 커맨드는 마찬가지로 사용 가능할 수 있다. 상이한 커맨드는 커맨드의 연산 코드 부분에 의해 식별된다(MADD 커맨드의 예에서 MADD에 의해 기호화됨). 지정 커맨드에 의존하여, 기능 유닛의 상이한 회로(도 3에 미도시)가 활성화될 수 있으며, 또는 동일 발행 슬롯에 연결된 기능 유닛의 그룹으로부터 상이한 기능 유닛이 활성화될 수 있다. 일반적으로, 기능 유닛(또는 기능 유닛의 그룹)은, 회로 출력중 어떤 출력이 기능 유닛에서 다른 회로 및/또는 기능 유닛의 출력에 인가되는지를 결정하기 위해 멀티플렉서(미도시)를 포함한다. 본 도면 6은 MADD 커맨드와 관련된 회로를 단지 도시하고 있다. 다른 커맨드는 피연산자 레지스터와 동수, 또는 더 적은 수, 또는 더 많은 수의 레지스터를 사용할 수 있으며, 및/또는 결과 레지스터와 동수, 또는 더 적은 수, 또는 더 많은 수의 레지스터를 사용할 수 있다. 더 적은 수의 레지스터가 사용되는 경우, 기본 레지스터 선택 코드가 발생될 수 있으며, 레지스터 파일(14a,b)은 이들 선택 코드에 응답하여 기본 데이터를 인가하기 위해, 또는 기본 선택 코드에 응답하여 임의의 레지스터의 콘텐츠의 변형을 방지하기 위해 배열될 수 있다.
도 7은 MSHADD 명령어(Multiply-Shift-Add)에 응답하여 활성화되는 기능 유닛의 대안적인 부분을 도시한다. 이 기능 유닛은 제 1 레지스터 파일(14a)의 판독 포트의 데이터 부분(20)으로부터 추가 피연산자에 의해 제어되는 다수의 비트 위치에 의해 곱을 시프팅하기 위해 곱셈기(30)와 가산기(32) 사이에서 원통 시프터(36) 를 포함한다. MSHADD 명령어는 발행 슬롯에 의해 허용된 입력 및 출력의 최대 갯수를 이용한다.
비록 본 발명이 특정 실시예에 대한 참조에 의해 기술되었을 지라도, 본 발명은 이들 실시예에 제한되지 않음을 이해하여야할 것이다. 예를 들면, 2개의 레지스터 파일(14a,b) 대신에, 더 많은 수의 레지스터 파일, 예를 들면 N개 비트 레지스터를 가진 레지스터 그룹 및 2*N 비트 레지스터를 가진 레지스터 파일의 그룹이 사용될 수 있다. 이러한 경우, 상이한 기능 유닛(의 그룹) 및 이들의 대응하는 발행 슬롯은 각 상이한 레지스터 파일에 연결될 수 있다. 기능 유닛의 단일 그룹은 N 비트 또는 2*N 비트 레지스터를 구비한 다중 레지스터 파일에 연결될 수 있다.
바람직하게는, 모든 발행 슬롯은 동일 폭을 가지며, 각 슬롯은 동일 개수의 피연산자 레지스터(각 상이한 피연산자 크기를 가짐) 및 동일 개수의 결과 레지스터(상이한 피연산자 크기를 가짐)를 지원한다. 이는 컴파일 동안, 상이한 발행 슬롯에 대한 명령어의 할당이 자유롭게 프로세서 속도를 최적화하기 위해 사용될 수 있는 이점이 있다. 바람직하게는, 각 발행 슬롯은 3개의 결과 레지스터를 지원하며, 이 중 2개는 N 비트 폭이고 하나는 2*N 비트 폭(예를 들면 N=32)이다. 이는 다중 발행 슬롯에서 동일 개수의 결과 레지스터를 갖는 프로그램성(programmability), 및 다중 결과에 관련된 오버헤드 사이에서의 좋은 절충안을 제공하는 것이 발견된다. 바람직하게는, 4개의 피연산자 레지스터가 사용되며, 이중 3개는 N 비트 폭이고 하나는 2*N 비트 폭이다. 이는 다중 발행 슬롯에서 결과 레지스터의 동일 갯수를 가지는 프로그램성, 및 다중 피연산자에 관련된 오버헤드 사이에서의 좋은 협상을 제공하는 것으로 발견된다.
다른 실시예에서, 3개 이상의 상이한 멀티-비트 피연산자 및/또는 결과 크기는 발행 슬롯에서 사용될 수 있다. 예를 들면, 32 비트 레지스터를 가지는 레지스터 파일 및 64 비트 레지스터를 가지는 레지스터에 덧붙여, 8 비트 레지스터를 가지는 레지스터 파일은 발행 슬롯에서 제공되고 어드레싱될 수 있다.
바람직하게는, 적어도 2개의 레지스터 파일은 동일 기능 유닛에 연결되어 사용되고 동일 발행 슬롯으로부터 제어되며, 여기서 하나의 레지스터 파일에서 레지스터 당 비트수(N)는 다른 레지스터 파일에서 레지스터 당 비트수(2N)의 반절이 된다. 이는 하나의 명령어의 결과로서 2배 정교한 결과 버전과 상호 동일한 크기를 갖는 결과의 2개의 단일 정밀 부분을 기록하는 것을 가능하게 한다. 그러나, 본 발명으로부터 벗어나지 않으면서도, 레지스터 크기가 상이한 인자 2가 아닌 레지스터 파일이 사용될 수 있다. 예를 들면, 레지스터의 각각에서 오버플로우를 나타내는 것이 가능하도록, 제 1 레지스터 파일에서 레지스터의 크기는 N+1개의 비트가 될 수 있고, 제 2 레지스터 파일에서 레지스터의 크기는 2*N+1개의 비트가 될 수 있다.
전술한 바와 같이, 본 발명은 데이터 처리회로 및 이러한 데이터 처리 회로를 사용하는 프로그램을 실행하는 방법에 이용 가능하다.

Claims (11)

  1. 데이터 처리 회로로서,
    판독 포트 및 기록 포트를 가지는 레지스터 파일(14);
    판독 포트의 적어도 하나를 포함하는 동일한 결합으로부터 적어도 피연산자 데이터를 수신하기 위해 각기 연결되는 복수의 기능 유닛(21a-c)으로서, 각 기능 유닛은 각 결과를 기록하기 위한 기록 포트 중 각 하나에 연결되는, 복수의 기능 유닛(21a-c); 및
    레지스터 선택 정보를 상기 결합 및, 기록 포트들 중 각각에 제공하기 위한 출력(11) 및 연산 코드를 위한 출력(11)을 가지는 적어도 하나의 명령어 발행 슬롯으로서, 상기 복수의 기능 유닛(21a-c)은 연산 코드를 위한 출력(11)에 연결되고, 상기 결합으로부터 동일 피연산자를 사용하여 각기 각 동작을 실행함으로써 연산 코드의 하나의 값에 적어도 응답하기 위해 배열되며, 상기 복수의 기능 유닛(21a-c) 각각은 기록 포트의 각 하나에서, 상기 동일 피연산자를 처리함으로써 획득된 각 결과를 산출하는, 적어도 하나의 명령어 발행 슬롯
    을 포함하는 데이터 처리 회로.
  2. 제 1 항에 있어서,
    적어도 하나의 추가 기능 유닛(21a-c) 및 상기 복수의 기능 유닛(21a-c)을 포함하는 기능 유닛(21a-c)의 그룹(12)을 포함하고, 기능 유닛(21a-c)의 상기 그 룹(12) 각각은 판독 포트의 적어도 하나의 상기 동일 결합으로부터 적어도 피연산자 데이터를 수신하기 위해 연결되며, 기능 유닛(21a-c)의 상기 그룹(12) 각각은 각 결과를 기록하기 위해 기록 포트 중 적어도 하나에 연결되고, 상기 그룹(12) 각각은 연산 코드를 인가하기 위한 출력(11)에 연결되고 연산 코드에 의해 선택된 동작을 각각 실행함으로써 연산 코드에 응답하도록 배열된, 데이터 처리 회로.
  3. 제 2 항에 있어서,
    N개의 기능 유닛(21a-c) 및 M개의 기록 포트를 포함하는 기능 유닛(21a-c)의 그룹(12) 사이에서 연결되는 다중화 회로(27)를 포함하며, 상기 N은 2 보다 더 큰 정수이고, M은 1 보다 크나 N보다는 작은 정수이고, 연산 코드의 상이한 값은, 반드시 그룹(12)으로부터 M개의 기능 유닛(21a-c)의 비-중첩 복수일 필요는 없지만, 각기 상이한 복수를 선택하며, 그룹(12)으로부터 기능 유닛(21a-c)은, 상기 복수(21a-c)의 각 하나로부터 M개의 기능 유닛(21a-c)이 판독 포트 및 기능 유닛(21a-c)의 상기 동일 결합으로부터 피연산자를 사용하여 동작을 실행하도록 연산 코드의 각각의 값, 연산 코드의 각 값들에 응답하도록 배열되며, 다중화 회로(27)는 연산 코드의 각 값에 의해 선택된 기능 유닛(21a-c)으로부터 기록 포트의 각각에 M개의 결과를 공급하도록 배열되는, 데이터 처리 회로.
  4. 제 1 항에 있어서,
    상기 복수의 기능 유닛중 기능 유닛(21a-c)은 각각의 연산 코드의 추가값에 응답하여, 기능 유닛(21a-c)의 각기 하나는 적어도 하나의 판독 포트의 상기 동일 결합으로부터 피연산자를 사용하여 각 동작을 실행하도록 연산 코드의 각 추가값에 응답하도록 배열되고, 기능 유닛(21a-c)의 상기 각각 이외의 다른 복수에서의 기능 유닛(21a-c)은 상기 각 추가값에 응답하여 기록 포트에서 결과를 산출하기 위해 판독 포트의 적어도 하나의 상기 동일 결합으로부터 피연산자를 사용하지 않는, 데이터 처리 회로.
  5. 제 1 항에 있어서,
    판독 포트의 적어도 하나의 결합은 적어도 2개의 피연산자가 연산 코드의 상기 적어도 하나 값에 응답하여 복수의 기능 유닛(21a-c)의 각각에 의해 사용되는 2개의 판독 포트를 포함하는, 데이터 처리 회로.
  6. 제 1 항에 있어서,
    상기 포트는 각 결과 워드 크기를 가지며, 판독 포트 중 적어도 하나는 적어도 추가적인 하나의 기록 포트의 결과 워드 크기와 다른 결과 워드 크기를 가지는, 데이터 처리 회로.
  7. 제 6 항에 있어서,
    레지스터 파일은 기록 포트의 각각에 연결된 복수의 부분(14a,b)을 포함하고, 각 부분은 상기 부분이 연결되는 기록 포트의 워드 크기에 대응하는 각 워드 크기의 레지스터를 포함하는, 데이터 처리 회로.
  8. 제 1 항에 있어서,
    레지스터 파일은 각기 상호 다른 비트 크기인 제 1 및 제 2의 레지스터를 가지는 제 1 및 제 2 레지스터 파일부분(14a,b)을 포함하며, 상기 기록 포트는 각기 제 1 및 제 2 레지스터 파일에 결과를 기록하기 위한 제 1 및 제 2 기록 포트를 포함하며; 상기 데이터 처리 회로로서, 명령어 발행 슬롯 및 제 1 및 제 2 기록 포트에 연결되는 추가 기능 유닛(32)을 포함하며, 상기 추가 기능 유닛은 특정 동작에 응답하여 결과를 산출하고 제 1 및 제 2 기록 포트 각각에 제 1 및 제 2 비트 크기를 갖는 결과를 나타내는 버전을 기록하기 위해 배열되는, 데이터 처리 회로.
  9. 제 8 항에 있어서,
    제 1 복수의 비트는 제 2 복수의 비트 보다 더 적은 비트로 구성되고, 제 1 레지스터 파일 부분(14a)은 추가 기록 포트를 가지며, 제 1 기록 포트 및 추가 기록 포트는 병렬로 발행 슬롯으로부터 각 레지스터 선택 코드를 수신하며, 기능 유닛(32)은 제 1 기록 포트 및 추가 기록 포트에 연결된 출력을 가지며, 상기 추가 기능 유닛(32)은 제 1 기록 포트 및 추가 기록 포트 각각에 결과의 최상위 부분 및 최하위 부분을 기록하도록 배열되는, 데이터 처리 회로.
  10. 제 8 항에 있어서,
    제 2 레지스터 파일의 레지스터는 제 1 레지스터 파일의 레지스터 비트 크기에 2배인, 데이터 처리 회로.
  11. 복수의 기능 유닛(21a-c)을 포함하는 처리 회로를 사용하여 컴퓨터 프로그램을 실행하는 방법으로서,
    결과 레지스터의 어드레스 및 피연산자 레지스터의 어드레스, 연산 코드를 나타내는 명령어를 발행하는 단계;
    상기 피연산자 레지스터의 어드레스를 사용하여 레지스터를 선택하고 선택된 레지스터로부터 피연산자를 제공하는 단계;
    각기 각 기능 유닛에서 복수의 동작을 동시에 실행함으로써 상기 연산 코드에 응답하는 단계로서, 각 동작은 상기 선택된 레지스터로부터 적어도 하나의 피연산자의 적어도 동일 결합을 사용하는, 응답하는 단계; 및
    각 기능 유닛으로부터 결과 레지스터의 어드레스에 의해 선택된 각 레지스터에 각 결과를 기록하는 단계
    을 포함하는 처리 회로를 사용하여 컴퓨터 프로그램을 실행하는 방법.
KR1020077006438A 2004-09-22 2005-09-21 기능 유닛이 판독 포트를 공유하는 데이터 처리 회로 KR101311187B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP04104582 2004-09-22
EP04104582.4 2004-09-22
PCT/IB2005/053102 WO2006033078A2 (en) 2004-09-22 2005-09-21 Data processing circuit wherein functional units share read ports

Publications (2)

Publication Number Publication Date
KR20070067687A true KR20070067687A (ko) 2007-06-28
KR101311187B1 KR101311187B1 (ko) 2013-09-26

Family

ID=34929596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077006438A KR101311187B1 (ko) 2004-09-22 2005-09-21 기능 유닛이 판독 포트를 공유하는 데이터 처리 회로

Country Status (8)

Country Link
US (1) US8108658B2 (ko)
EP (1) EP1794672B1 (ko)
JP (1) JP5346467B2 (ko)
KR (1) KR101311187B1 (ko)
CN (1) CN101027635A (ko)
AT (1) ATE456829T1 (ko)
DE (1) DE602005019180D1 (ko)
WO (1) WO2006033078A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8713286B2 (en) * 2005-04-26 2014-04-29 Qualcomm Incorporated Register files for a digital signal processor operating in an interleaved multi-threaded environment
US9402062B2 (en) * 2007-07-18 2016-07-26 Mediatek Inc. Digital television chip, system and method thereof
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
GB2488985A (en) * 2011-03-08 2012-09-19 Advanced Risc Mach Ltd Mixed size data processing operation with integrated operand conversion instructions
KR102177871B1 (ko) * 2013-12-20 2020-11-12 삼성전자주식회사 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
JP6237241B2 (ja) * 2014-01-07 2017-11-29 富士通株式会社 処理装置
JP2021166010A (ja) * 2020-04-08 2021-10-14 富士通株式会社 演算処理装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370623B1 (en) * 1988-12-28 2002-04-09 Philips Electronics North America Corporation Multiport register file to accommodate data of differing lengths
JPH0764789A (ja) * 1993-08-25 1995-03-10 Mitsubishi Electric Corp 並列処理プロセッサおよびそのプロセッシングユニットならびにこの並列処理プロセッサの動作方法
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
WO1999064954A2 (en) * 1998-06-08 1999-12-16 Koninklijke Philips Electronics N.V. Processor with memory and data prefetch unit
KR100345173B1 (ko) * 2000-06-12 2002-07-24 주식회사 테크라프 폐전지 처리방법
DE60143945D1 (de) * 2000-07-18 2011-03-10 Cornell Res Foundation Inc Medizinische verwendung von agonisten des mu-opioid rezeptors
US20040014848A1 (en) * 2000-09-11 2004-01-22 Kazuya Tanaka Organic Hydrophicizing agent for aluminiferous metals
JP3754418B2 (ja) * 2000-11-27 2006-03-15 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多くのオペランドを扱う命令を有するデータ処理装置
CN1214321C (zh) * 2000-12-11 2005-08-10 皇家菲利浦电子有限公司 信号处理设备
AU2003253159A1 (en) * 2002-09-24 2004-04-19 Koninklijke Philips Electronics N.V. Apparatus, method ,and compiler enabling processing of load immediate instructions in a very long instruction word processor
US20040128475A1 (en) * 2002-12-31 2004-07-01 Gad Sheaffer Widely accessible processor register file and method for use

Also Published As

Publication number Publication date
DE602005019180D1 (de) 2010-03-18
EP1794672A2 (en) 2007-06-13
ATE456829T1 (de) 2010-02-15
WO2006033078A2 (en) 2006-03-30
WO2006033078A3 (en) 2006-05-11
KR101311187B1 (ko) 2013-09-26
US8108658B2 (en) 2012-01-31
JP2008513878A (ja) 2008-05-01
EP1794672B1 (en) 2010-01-27
JP5346467B2 (ja) 2013-11-20
CN101027635A (zh) 2007-08-29
US20090070559A1 (en) 2009-03-12

Similar Documents

Publication Publication Date Title
KR101311187B1 (ko) 기능 유닛이 판독 포트를 공유하는 데이터 처리 회로
US6044451A (en) VLIW processor with write control unit for allowing less write buses than functional units
US6721884B1 (en) System for executing computer program using a configurable functional unit, included in a processor, for executing configurable instructions having an effect that are redefined at run-time
EP0968463B1 (en) Vliw processor processes commands of different widths
US8069337B2 (en) Methods and apparatus for dynamic instruction controlled reconfigurable register file
US6851041B2 (en) Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
US6948158B2 (en) Retargetable compiling system and method
US7124160B2 (en) Processing architecture having parallel arithmetic capability
KR101239304B1 (ko) Simd 명령을 지원하는 프로그램 가능한 데이터 처리회로
US7493474B1 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
EP1658559B1 (en) Instruction controlled data processing device and method
US7350055B2 (en) Tightly coupled accelerator
EP2015174B1 (en) Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
GB2414308A (en) Program instruction compression
JP2014216020A (ja) プロセッサのマルチ実行モード支援装置及び方法
KR100618247B1 (ko) 코드크기의축소화를지원하는정수복원형프로세서
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
EP1044407B1 (en) Vector data processor with conditional instructions
EP0729616B1 (en) A data processing system comprising data processing units and an expander
JP2006506727A (ja) コピーレジスタファイルを有するvliw
US20060206695A1 (en) Data movement within a processor

Legal Events

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

Payment date: 20160909

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170905

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180905

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190905

Year of fee payment: 7