KR20060056855A - 프로세서 - Google Patents

프로세서 Download PDF

Info

Publication number
KR20060056855A
KR20060056855A KR1020050107843A KR20050107843A KR20060056855A KR 20060056855 A KR20060056855 A KR 20060056855A KR 1020050107843 A KR1020050107843 A KR 1020050107843A KR 20050107843 A KR20050107843 A KR 20050107843A KR 20060056855 A KR20060056855 A KR 20060056855A
Authority
KR
South Korea
Prior art keywords
elements
vector
input
value
signal line
Prior art date
Application number
KR1020050107843A
Other languages
English (en)
Other versions
KR101202445B1 (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 KR20060056855A publication Critical patent/KR20060056855A/ko
Application granted granted Critical
Publication of KR101202445B1 publication Critical patent/KR101202445B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • 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
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Abstract

쿼터니언적(quaternion product)을 1명령에 의해 실행하는 SIMD형 프로세서를 공급한다.
2개의 4차원 벡터를 독출 오퍼랜드하는 쿼터니언적 명령에 있어서, 레지스터파일(140)로부터 독출된 한쪽의 4차원 벡터에 대하여 데이터 조작회로(170)는, 각 요소의 재배열 및 부호반전을 실시한다. 반복제어회로(150)는, 쿼터니언적명령에 있어서 지정된 사이즈에 따라 적화(積和)연산을 연산기(180)에 반복실행시킨다. 사이즈 처리회로(161 및 162)는, 지정된 사이즈(요소수)를 넘는 요소에 대하여 제로를 설정한다. 지정된 사이즈가 값 "4"이면 쿼터니언적이 산출되며, 지정된 사이즈가 값 "3"이면 외적(外積)이 산출된다.

Description

프로세서{Processor}
도 1은, 본 발명의 실시의 형태에 있어서의 SIMD형 컴퓨터 시스템의 구성예를 나타내는 도면이다.
도 2는, 본 발명의 실시의 형태에 있어서의 명령 포맷예를 나타내는 도면이다.
도 3은, 본 발명의 실시의 형태에 있어서의 기능코드(210)와 사이즈(220)와의 관계를 나타내는 도면이다.
도 4는, 본 발명의 실시의 형태에 있어서의 명령디코더(130)에 의한 디코드예를 나타내는 도면이다.
도 5는, 본 발명의 실시의 형태에 있어서의 반복제어회로(150)의 구성예를 나타내는 도면이다.
도 6은, 본 발명의 실시의 형태에 있어서의 쿼터니언적명령에 관하여 반복 제어회로(150)에 의해 행해지는 제어내용의 일례를 나타내는 도면이다.
도 7은, 본 발명의 실시의 형태에 있어서의 그 외의 연산명령에 관하여 반복 제어회로(150)에 의해 행해지는 제어내용의 일례를 나타내는 도면이다.
도 8은, 본 발명의 실시의 형태에 있어서의 그 외의 연산명령에 관하여 반복제어회로(150)에 의해 행해지는 제어 내용의 다른 예를 나타내는 도면이다.
도 9는, 본 발명의 실시의 형태에 있어서의 레지스터 파일(140)의 구성예를 나타내는 도면이다.
도 10은, 본 발명의 실시의 형태에 있어서의 사이즈 처리회로(161 또는 162)의 구성예를 나타내는 도면이다.
도 11은, 본 발명의 실시의 형태에 있어서의 사이즈 처리회로(161또는 162)에 있어서의 선택신호의 내용예를 나타내는 도면이다.
도 12는, 본 발명의 실시의 형태에 있어서의 데이터 조작회로(170)의 구성예를 나타내는 도면이다.
도 13은, 본 발명의 실시의 형태에 있어서의 연산기(180)의 구성예를 나타내는 도면이다.
*부호의 설명
100. 프로세서  110. 프로그램 카운터
130. 명령 디코더 131. 디코더
132. 실렉터  140. 레지스터 파일
150. 반복제어회로
161, 162 사이즈 처리회로  170. 데이터 조작회로
180. 연산기  200. 명령 메모리
210. 기능 코드  220. 사이즈
223. 기입 요소수 224. 제 1독출요소수
225. 제 2독출요소수  226. 반복수
230. 기입 오퍼랜드
231. 기록 레지스터 지정 232. 기록요소지정
240. 제 1독출 오퍼랜드
241. 제 1독출 레지스터 지정
250. 제 2독출 오퍼랜드  
251. 제 2독출 레지스터 지정 510. 반복 카운터
519. 반복 카운트 520. 연산제어회로
611~614, 621~624, 711~714, 731~734. 실렉터
721~724. 부호반전기 810. 연산회로군
820. 가산기
831~834. 연산결과 실렉터
본 발명은, SIMD(Single Instruction Multiple Data:단일 명령복수 데이터) 형 프로세서에 관하여, 특히 삼차원 벡터 또는 쿼터니언(4원수)을 취급하는 SIMD형 프로세서에 관한 것이다.
삼차원 그래픽스 처리에 있어서, 오브젝트의 회전이나 구면(球面)보간등을 행하기 위해 쿼터니언(Quaternion:4원수)이라고 하는 수가 이용된다. 이 쿼터니언이란, 삼차원 벡터에 스칼라(scalar)값을 부가한 것이며, 삼차원 공간내의 축과 그 축을 중심으로 하는 회전을 나타내는 것이다. 여기서, 쿼터니언(P)은, 스칼라값(p)과 삼차원 벡터(U)에 의하여,
P=[p;U]
와 같이 표현된다.
또, p=Aw, U=(Ax, Ay, Az)로서, 허수단위(i, j, k)를 이용하면,
P= Aw + Ax i + Ay j + Az k
과 같이도 표현된다. 여기서, 허수단위(i, j, k)는,
ii=jj=kk=ijk=-1
ij=k
ji=-k
라고 하는 관계에 있다.
동일하게, 쿼터니언(Q)을
Q=[q;V]
로 하고, q=Bw, V=(Bx, By, Bz)로 하면,
Q= Bw + Bx i + By j + Bz k
로 된다.
그리고, 이들 쿼터니언(P)과 쿼터니언(Q)과의 쿼터니언적(PQ)의 연산은,
PQ=(―AxBx-AyBy-AzBz+AwBw)
 +(AxBw+AyBz-AzBy+AwBx) i
 +(―AxBz+AyBw+AzBx+AwBy) j
 +(AxBy-AyBx+AzBw+AwBz) k
= Mw + Mx i + My j + Mz k
에 의해 얻어진다(식 1).
이와 같은 쿼터니언적에 있어서의 각 성분(Mw, Mx, My, Mz)을 요구하기 위해서는 16회의 승산과 12회의 가감산을 필요로 하고, 이들 전부를 동시에 행하는 것으로 하면 필요한 회로규모가 커질 우려가 있다.
여기서, 2개의 쿼터니언을 2개의 4차원 벡터로서 취급하면, 쿼터니언적에 있어서의 각 성분(Mw, Mx, My, Mz)은 2개의 4차원 벡터의 요소(Aw, Ax, Ay, Az 및 Bw, Bx, By, Bz)의 적화형식으로 부여된다. 단, 적화의 순서나 부호는 각각 다른 것으로 되어 있다. 따라서, 4차원 벡터의 요소의 재배열 및 부호반전을 적화연산과 동시에 실행할 수 있는 회로가 있으면, 4개의 적화연산으로 쿼터니언적을 실현할 수 있다.
그러나, 32비트의 명령코드에서는, 재배열 및 부호반전의 정보를 명령 필드에 포함되어 3오퍼랜드의 벡터 연산명령을 표현하려면 비트수가 부족하다. 그 때문에, 벡터의 재배열이나 부호반전을 다른 명령에 의해 실현되고, 재배열이나 부호반전의 처리를 한 새로운 벡터를 다른 레지스터에 격납하고 나서 그 레지스터를 이용하여 연산을 행한다라는 수단이 이용되는 것도 많다.
예를 들면, 인텔사가 개발한 멀티미디어용 명령세트 SSE(Streaming SIMD Extensions)나 모토로라사가 개발한 멀티미디어용 명령세트(AltiVec)등에 있어서, 그와 같은 벡터의 재배열 및 부호반전을 행하는 명령이 설치되어 있다(예를 들면, 비특허 문헌 1 및 비특허 문헌 2 참조.).
[비특허 문헌 1]「IA-32 Intel(R) Architecture Software Developer's Manual Volume 1: Basic Architecture」, Intel Corporation, 2004년
[비특허 문헌 2]「AltiVec Technology Programming Interface Manual」, Motorol a Inc., 1999년 6월
그렇지만, 쿼터니언적을 산출할 때, 상술한 바와 같은 벡터의 재배열 및 부호반전을 행하는 명령을 이용했을 경우에서도, 4개의 내적(內積)의 각각에 대하여 또한 벡터의 재배열 및 부호반전을 행하는 명령을 적용할 필요가 생기고, 프로그램 사이즈가 증대한다고 하는 문제가 있다.
그래서, 본 발명은, 쿼터니언적을 1 명령에 의해 실행하는 SIMD형 프로세서를 제공하는 것을 목적으로 한다.
본 발명은, 상기 과제를 해결하기 위해 이루어진 것이며, 그 제 1 측면은, 제 1의 입력벡터의 요소와 제 2의 입력벡터의 요소와의 임의의 조합을 생성하는 데이터 조작수단과, 상기 조합에 의한 적화연산을 행하는 연산수단과, 상기 제 1 및 제 2의 입력벡터의 요소수에 따라 상기 데이터 조작수단에 있어서의 상기 조합의 생성 및 상기 연산수단에 있어서의 상기 적화연산을 제어하는 반복제어수단을 구비하는 것을 특징으로 하는 프로세서이다. 이것에 의해, 제 1 및 제 2의 입력벡터의 각 요소의 임의의 조합에 대하여 적화연산을 반복 실행시킨다고 하는 작용을 초 래한다. 즉, 반복제어수단에 있어서 반복제어를 행함으로써, 예를 들면 쿼터니언적명령과 같이 벡터의 각 요소의 적화연산의 조합이 복잡한 경우라도, 1 명령에 대한 처리로서 완수할 수 있다.
또, 이 제 1의 측면에 있어서, 상기 데이터 조작수단은, 상기 반복제어수단에 의한 제어에 근거하여 상기 제 2의 입력벡터의 요소의 재배열을 행하는 재배열 수단과, 상기 반복제어수단에 의한 제어에 근거하여 상기 재배열수단에 의한 출력의 부호를 반전시키는 부호반전수단을 갖출 수 있다. 이것에 의해, 제 1 및 제 2의 입력벡터의 각 요소의 임의의 조합을 순서 및 부호에 대하여 유연하게 생성시킨다고 하는 작용을 초래한다.
여기서, 한층 더 상기 반복제어수단은, 상기 요소수에 따른 회수를 계수하는 계수수단과, 상기 계수수단에 의한 계수값에 따라서 상기 재배열수단 및 상기 부호반전수단에 대한 제어를 행하는 연산제어수단을 갖출 수 있다. 이것에 의해, 벡터 요소의 임의의 조합에 있어서 적화연산을 반복 실행시킨다고 하는 작용을 초래한다.
또, 이 제 1의 측면에 있어서, 상기 제 2의 입력벡터가 4개의 요소(Bx, By, Bz, Bw)를 갖추고, 상기 데이터 조작수단이 상기 반복제어수단에 의한 제어에 근거하여 제 1의 줄 순서(Bw, Bz,-By, Bx)와 제 2의 줄 순서(-Bz, Bw, Bx, By)와 제 3의 줄 순서(By,-Bx, Bw, Bz)와 제 4의 줄 순서(-Bx,-By,-Bz, Bw)를 차례차례 생성하는 것으로 할 수 있다. 이것에 의해, 쿼터니언적을 산출하기 위한 한편의 벡터를 공급시킨다고 하는 작용을 초래한다.
여기서, 한층 더 상기 제 1의 입력벡터가 4개의 요소(Ax, Ay, Az, Aw)를 갖추고, 상기 연산수단이 상기 반복제어수단에 의한 제어에 근거하여 제 1의 적화연산(AxBw+AyBz-AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(-AxBx-AyBy-AzBz+AwBw)을 차례로 행하는 것으로 할 수 있다. 이것에 의해, 쿼터니언적에 있어서의 각 요소를 공급시킨다고 하는 작용을 초래한다.
또, 이 제 1의 측면에 있어서, 상기 제 1 및 제 2의 입력벡터에 대하여 각각 상기 요소수를 넘는 요소에 제로를 설정하는 사이즈처리수단을 또한 구비할 수 있다. 이것에 의해, 제 1 및 제 2의 입력벡터에 있어서의 요소수가 짧은 경우에도 적정한 적화연산결과를 산출시킨다고 하는 작용을 초래한다.
또, 본 발명의 제 2의 측면은, 제 1 및 제 2의 입력벡터를 보관 유지하는 벡터 보관 유지수단과, 상기 제 1의 입력벡터의 요소와 상기 제 2의 입력벡터의 요소와의 임의의 조합을 생성하는 데이터 조작수단과, 상기 조합에 의한 적화연산을 행하는 연산수단과, 상기 제 1 및 제 2의 입력벡터의 요소수에 따라 상기 데이터 조작수단에 있어서의 상기 조합의 생성 및 상기 연산수단에 있어서의 상기 적화연산을 제어하고 그 적화연산결과를 상기 벡터 보관 유지 수단의 출력벡터에 있어서의 소정 요소로서 보관 유지시키는 반복제어수단을 구비하는 것을 특징으로 하는 프로세서이다. 이것에 의해, 벡터보관유지수단에 보관 유지된 제 1 및 제 2의 입력벡터의 각 요소의 임의의 조합에 대하여 적화연산을 반복 실행시킨다고 하는 작용을 초래한다.
또, 본 발명의 제 3의 측면은, 4개의 요소(Ax, Ay, Az, Aw)를 갖추는 제 1의 입력벡터와 4개의 요소(Bx, By, Bz, Bw)를 갖추는 제 2의 입력벡터를 보관 유지하는 벡터보관유지수단과, 상기 제 1의 입력벡터와 제 2의 입력벡터와의 사이의 연산을 행하는 명령에 있어서 상기 제 1 및 제 2의 입력벡터의 요소수를 추출하는 추출수단과, 상기 제 1의 입력벡터의 각 요소(Ax, Ay, Az, Aw)를 공급하는 제 1의 공급수단과, 상기 제 2의 입력벡터의 각 요소에 대하여 제 1의 줄 순서(Bw, Bz,-By, Bx)와 제 2의 줄 순서(-Bz, Bw, Bx, By)와 제 3의 줄 순서(By,-Bx, Bw, Bz)와 제 4의 줄 순서(-Bx,-By,-Bz, Bw)를 차례차례 공급하는 제 2의 공급수단과, 상기 요소수가 4인 경우에 상기 제 1 및 제 2의 공급수단으로부터 공급된 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 적화연산(AxBw+AyBz-AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(-AxBx-AyBy-AzBz+AwBw)을 차례로 행하여 상기 벡터보관유지수단에 보관 유지시키는 연산수단을 구비하는 것을 특징으로 하는 프로세서이다. 이것에 의해, 요소수를 4로 설정함으로써 쿼터니언적의 각 요소를 차례차례 생성시킨다고 하는 작용을 초래한다.
또, 이 제 3의 측면에 있어서, 상기 연산수단은, 상기 요소수가 3인 경우에 상기 제 1 및 제 2의 공급수단으로부터 공급된 상기 제 1 및 제 2의 입력벡터의 각 요소에 의거하여 제 1의 외적요소(AyBz-AzBy)와, 제 2의 외적요소(-AxBz+AzBx)와, 제 3의 외적요소(AxBy-AyBx)를 차례차례 생성하여 상기 벡터보관유지수단에 보관 유지시키도록 할 수 있다. 이것에 의해, 요소수를 3으로 설정함으로써 외적 의 각 요소를 차례차례 생성시킨다고 하는 작용을 초래한다.
또, 본 발명의 제 4의 측면은, 4개의 요소(Ax, Ay, Az, Aw)를 갖추는 제 1의 입력벡터와 4개의 요소(Bx, By, Bz, Bw)를 갖추는 제 2의 입력벡터와의 사이의 연산을 행하는 명령을 명령세트로서 갖추는 프로세서이며, 상기 제 1의 입력벡터와 제 2의 입력벡터와의 사이의 연산을 행하는 명령에 있어서 상기 제 1 및 제 2의 입력벡터의 요소수를 추출하는 추출수단과, 상기 요소수가 4인 경우에 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 적화연산(AxBw+AyBz-AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(-AxBx-AyBy-AzBz+AwBw)을 차례차례 생성하여 쿼터니언적을 산출하는 연산수단을 구비하는 것을 특징으로 하는 프로세서이다. 이것에 의해, 요소수를 4로 설정함으로써 쿼터니언적의 각 요소를 차례차례 생성시키는 명령을 프로세서에 실행시킨다고 하는 작용을 초래한다.
또, 이 제 4의 측면에 있어서, 상기 연산수단은, 상기 요소수가 3인 경우에 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 외적요소(AyBz-AzBy)와, 제 2의 외적요소(-AxBz+AzBx)와, 제 3의 외적요소(AxBy-AyBx)를 차례차례 생성하여 외적을 산출하도록 할 수 있다. 이것에 의해, 요소수를 3으로 설정함으로써 외적의 각 요소를 차례차례 생성시키는 명령을 프로세서에 실행시킨다고하는 작용을 초래한다.
다음에 본 발명의 실시형태에 대하여 도면을 참조하여 상세하게 설명한다.
도 1은, 본 발명의 실시의 형태에 있어서의 SIMD형 컴퓨터 시스템의 구성예 를 나타내는 도면이다. 이 SIMD형 컴퓨터 시스템은, 프로세서(100)와, 명령 메모리(200)를 갖춘다. 프로세서(100)는, 프로그램 카운터(110)와, 명령 디코더(130)와 레지스터 파일(140)과 반복제어회로(150)와 사이즈 처리회로(161 및 162)와 데이터 조작회로(170)와 연산기(180)를 갖춘다. 이 프로세서(100)는, 명령 메모리(200)에 접속하고, 혹은 그것을 내장한다.
프로그램 카운터(110)는, 명령 메모리(200)에 있어서의 명령의 독출 어드레스를 계수하는 카운터이다. 이 프로그램 카운터(110)에 의해 신호선(119)을 거쳐서 지시된 어드레스에 의하여 명령 메모리(200)로부터 명령의 독출이 행해지고, 신호선(209)을 거쳐서 명령디코더(130)에 공급된다. 명령디코더(130)는, 명령 메모리(200)로부터 독출된 명령을 디코드하고, 명령의 작동코드나 그 명령에 필요로 되는 오퍼랜드를 추출한다.
레지스터 파일(140)은, 명령디코더(130)로부터 신호선(139)을 거쳐서 부여된 오퍼랜드에 의해 액세스되며, 독출 및 기입이 행해진다. 레지스터 파일(140)은, 동시에 2조의 데이터를 읽어낼 수 있고, 각각 신호선(148 및 149)에 의해 사이즈 처리회로(161 및 162)에 공급된다.
반복제어회로(150)는, 디코드된 신호를 신호선(138)에 의해 수취하고, 이것에 따라, 신호선(151)에 의해 레지스터 파일(140)을 제어하고, 신호선(154 및 155)에 의해 데이터 조작회로(170)를 제어하고, 또, 신호선(156)에 의해 연산기(180)를 제어한다. 이 반복제어회로(150)는, 쿼터니언적과 같이 연산을 복수회 반복할 필요가 있는 경우에 그 반복을 제어하는 것이다.
사이즈 처리회로(161 및 162)는, 각각 레지스터 파일(140)로부터 독출된 오퍼랜드(데이터)를 받고, 입력된 데이터 가운데, 신호선(137)에 의해 부여되는 요소수(사이즈)를 넘는 부분에 대하여 값 "0"을 설정한다고 하는 사이즈처리를 행하는 것이다.
데이터 조작회로(170)는, 사이즈 처리회로(162)에 의해 사이즈 처리가 실시된 오페랜드를 신호선(169)에 의해 수취하고, 데이터 순서의 재배열이나 부호반전이라고 하는 데이터조작을 행하는 것이다. 이외 같은 데이터 조작이 실행된 오퍼랜드는 신호선(179)에 의해 연산기(180)에 공급된다.
연산기(180)는, 반복제어회로(150)로부터의 신호선(156)에 의한 제어에 근거하여, 신호선(168) 및 신호선(179)에 의해 부여된 오퍼랜드에 대하여 소정의 연산을 행한다. 이 연산기(180)에 의한 연산결과는, 반복제어회로(150)로부터의 신호선(156)에 의한 제어에 근거하여, 신호선(189)에 의해 레지스터 파일(140)에 기입된다.
도 2는, 본 발명의 실시의 형태에 있어서의 명령 포맷예를 나타내는 도면이다. 여기에서는, RISC(Reduced Instruction Set Computer) 아키텍쳐형 명령 세트로서, 3개의 오퍼랜드를 가지는 32비트 고정길이 명령을 상정한다. 프로세서(100)는 이 고정길이 명령에 근거하여 최대 4개의 연산을 동시에 수평 실행하는 SIMD형 프로세서로서 실현된다. 또한 여기에서는 일례로서 4연산의 동시 실행을 상정하여 이하 설명하지만, 이것에 한정되지 않고 임의의 수의 연산을 동시에 실행하도록 해도 상관없다.
이 명령 포맷은, 기능코드(210)와, 사이즈(220)와 기입 오퍼랜드(230)와 제 1독출 오퍼랜드(240)와 제 2독출 오퍼랜드(250)를 갖춘다. 기능코드(210)는, 명령의 작동코드를 나타내는 것이며, 본 발명의 실시의 형태에 있어서는 연산기(180)에 있어서의 연산의 종류를 나타내게 된다. 사이즈(220)는, 연산의 대상으로 되는 데이터 요소수를 나타내는 것이며, 기능코드(210)에 따라 각 부의 제어에 이용된다. 즉, 디코더(131)에 의한 디코드 결과에 의하여, 실렉터(132)에 있어서 사이즈(220)의 내용 또는 값 "1"의 어느 쪽인가가 선택되고, 기입 요소수(223), 제 1독출 요소수(224), 제 2독출 요소수(225) 및 반복수(226)가 결정된다. 여기서, 기입 요소수(223)는 레지스터 파일(140)에 데이터를 기입할 때의 요소수이며, 제 1독출 요소수(224) 및 제 2독출 요소수(225)는 각각 레지스터 파일(140)로부터 데이터를 읽어낼 때의 요소수이다. 또, 반복수(226)는 반복제어회로(150)에 있어서 반복제어를 행할 때의 반복수이다. 이 실렉터(132)에 있어서의 선택내용을 나타내는 것이 도 3이다.
도 3을 참조하면, 기능코드(210)에 대응하고, 기입 요소수(223), 제 1독출 요소수(224), 제 2독출 요소수(225) 및 반복수(226)의 선택내용이 나타내지고 있다. 여기에서는, 기능코드(210)로서 쿼터니언적(qmul), 내적(dot), 가산(add), 감산(sub), 승산(mul), 제산(div) 및 비교(cmp)를 들 수 있다.
예를 들면, 쿼터니언적의 경우, 기입 요소수(223)로서는 값 "1"이 부여되며, 제 1독출 요소수(224), 제 2독출 요소수(225) 및 반복수(226)로서는 사이즈(220)의 내용이 부여된다.
도 2를 다시 참조하면, 기록 오퍼랜드(230)는, 레지스터 파일(140)에 대한 기입 어드레스를 나타내는 것이며, 기입 레지스터지정(231) 및 기입요소지정(232)을 보관 유지한다. 레지스터 파일(140)에 있어서, 복수요소를 1조로 정리한 레지스터를 또한 복수 보관 유지하는 것으로 했을 경우, 기입 레지스터지정(231)에 의하여 기입대상으로 되는 레지스터를 지정하고, 또한 그 레지스터에 있어서의 어느 쪽의 요소인지를 기입 요소지정(232)에 의해 지정하는 것이다.
제 1독출 오퍼랜드(240) 및 제 2독출 오퍼랜드(250)는, 레지스터 파일(140)로부터의 독출 어드레스를 나타내는 것이며, 각각 제 1독출 레지스터지정(241) 및 제 2독출 레지스터지정(251)을 포함한다. 본 발명의 실시의 형태에 있어서는, 독출대상으로 되는 레지스터를 지정하면 충분하고, 그 레지스터에 있어서의 요소지정은 특히 필요하지 않기 때문에, 요소지정의 필드는 설치되어 있지 않다.
또한, 레지스터 파일(140)의 구성으로서 예를 들면 4요소를 1조로 정리한 레지스터를 32 워드 보관 유지하는 것으로 하면, 레지스터 지정에 5비트, 요소지정에 2비트 필요하게 된다. 각 오퍼랜드에 대하여 균등하게 필드 할당을 행하면, 기입 오퍼랜드(230), 제 1독출 오퍼랜드(240) 및 제 2독출 오퍼랜드(250)에는, 각각 7비트씩이 할당된다. 또, 사이즈(220)에 대해서도 레지스터에 있어서의 요소수이기 때문에, 2비트가 할당된다. 따라서, 이 경우, 32비트 중 9비트를 기능코드(210)에 할당할 수 있다.
도 4는, 본 발명의 실시의 형태에 있어서의 명령디코더(130)에 의한 디코드예를 나타내는 도면이다. 이 명령디코더(130)는, 명령 메모리(200)로부터 신호선 (209)에 의해 독출된 명령을 디코드하고, 이하의 각 필드를 추출한다. 즉, 기능코드(210), 기입 요소수(223), 기입요소지정(232) 및 반복수(226)를 신호선(138)에 출력한다. 또, 기입 레지스터지정(231), 제 1독출 레지스터지정(241) 및 제 2독출 레지스터지정(251)을 신호선(139)에 출력한다. 또한, 제 1독출 요소수(224) 및 제 2독출 요소수(225)를 신호선(137)에 출력한다.
도 5는, 본 발명의 실시의 형태에 있어서의 반복제어회로(150)의 구성예를 나타내는 도면이다. 이 반복제어회로(150)는, 반복 카운터(510)와 연산제어회로(520)를 갖추고 있다.
반복 카운터(510)는, 신호선(138)에 있어서의 반복수(226)를 수취하면, 초기값 "1"로부터 반복수(226)에 이를 때까지 1개씩 계수하고, 그 계수값을 신호선(519)에 의해 연산제어회로(520)에 공급하는 것이다.
연산제어회로(520)는, 신호선(138)에 있어서의 기능코드(210), 기입 요소수(223) 및 기입요소지정(232) 및 신호선(519)에 있어서의 반복 카운트에 근거하여, 신호선(151)에 기입 이네이블(enable)을 신호선(154)에 독출 재배열을, 신호선(155)에 독출 부호반전을, 그리고, 신호선(156)에 연산기 지정을 각각 출력하는 것이다.
신호선(151)에 있어서의 기록 이네이블은, 레지스터 파일(140)에 있어서의 요소 위치에 대응하여 1비트씩 설치된다. 예를 들면 레지스터 파일(140)의 구성으로서, 예를 들면 4 요소를 1조로 정리한 레지스터를 보관 유지하는 것으로 하면, 신호선(151)에 있어서의 기입 이네이블은, 1511 내지 1514의 4비트로부터 구성되 고, 레지스터 파일(140)에 공급되게 된다.
또, 신호선(154)에 있어서의 독출 재배열 및 신호선(155)에 있어서의 독출 부호반전은, 데이터 조작회로(170)에 공급된다. 그리고, 신호선(156)에 있어서의 연산기 지정은, 연산기(180)에 공급된다.
도 6은, 본 발명의 실시의 형태에 있어서의 쿼터니언적명령에 관하여 반복제어회로(150)에 의해 행해지는 제어 내용의 일례를 나타내는 도면이다. 기능코드(210)가 쿼터니언적(qmul)을 나타내는 경우, 연산제어회로(520)는 신호선(519)에 있어서의 반복 카운트에 따라 각 제어신호를 생성한다.
우선, 신호선(151)에 있어서의 기입 이네이블에 대하여, 신호선(519)에 있어서의 반복 카운트가 값 "1"을 나타낼 때는, 신호선(151)에 있어서의 제 1의 비트만이 값 "1"로 되고, 그 이외의 비트는 값 "0"으로 된다. 따라서, 반복 카운트가 값 "1"을 나타낼 때는, 연산기(180)에 있어서의 연산결과는 기입 레지스터에 있어서의 제 1번째의 요소에만 기입된다. 또, 신호선(519)에 있어서의 반복 카운트가 값 "2"를 나타낼 때는, 신호선(151)에 있어서의 제 2의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 따라서, 반복 카운트가 값 "2"를 나타낼 때는, 연산기(180)에 있어서의 연산결과는 기입 레지스터에 있어서의 제 2번째의 요소에만 기입된다. 이하 같이 반복 카운트가 값 "3"을 나타낼 때는 연산기(180)에 있어서의 연산결과는 기입 레지스터에 있어서의 제 3번째의 요소에만 기입되며, 반복 카운트가 값 "4"를 나타낼 때는 연산기(180)에 있어서의 연산결과는 기입 레지스터에 있어서의 제 4번째의 요소에만 기입된다.
또, 신호선(154)에 있어서의 독출 재배열은, 원래 상태를 "XYZW"로 했을 경우의 지정된 상태가 되도록 독출 데이터의 재배열을 행하는 것을 의미하고 있다. 신호선(519)에 있어서의 반복 카운트가 값 "1"을 나타낼 때는, 신호선(154)에 있어서의 독출 재배열은 "WZYX"를 나타내고 있고, 원래의 줄 순서로부터 역순이 되도록 재배열을 행하는 것을 의미하고 있다. 또, 신호선(519)에 있어서의 반복 카운트가 값 "2"를 나타낼 때는, 신호선(154)에 있어서의 독출 재배열은 "ZWXY"를 나타내고 있고, 제 1번째의 데이터가 제 3번째로 되며, 제 2번째의 데이터가 제 4번째로 되며, 제 3번째의 데이터가 제 1번째로 되며, 제 4번째의 데이터가 제 2번째로 되도록, 각각 재배열을 행하도록 하는 것을 의미하고 있다. 이하 동일하게, 신호선(519)에 있어서의 반복 카운트가 값 "3"을 나타낼 때는 "YXWZ"가 되도록 재배열이 행해지며, 신호선(519)에 있어서의 반복 카운트가 값 "4"를 나타낼 때는 "XYZW"로 되도록 (즉 입력이 그대로) 출력된다.
또, 신호선(155)에 있어서의 독출 부호반전은, 상술의 재배열을 거친 데이터에 대하여 대응하는 기호가 "P"이면 부호의 반전을 행하지 않고, "N"이면 부호의 반전을 행하는 것을 나타내는 것이다. 신호선(519)에 있어서의 반복 카운트가 값 "1"을 나타낼 때는, 신호선(155)에 있어서의 독출 부호반전은 "PPNP"를 나타내고 있고 제 3번째의 데이터에 대해서만 부호반전을 행하는 것을 의미하고 있다. 또, 신호선(519)에 있어서의 반복 카운트가 값 "2"를 나타낼 때는, 신호선(155)에 있어서의 독출 부호반전은 "NPPP"를 나타내고 있고, 제 1번째의 데이터에 대해서만 부호반전을 행하는 것을 의미하고 있다. 이하 동일하게, 신호선(519)에 있어서의 반복 카운트가 값 "3"을 나타낼 때는 제 2번째의 데이터에 대해서만 부호반전이 행해지며, 신호선(519)에 있어서의 반복 카운트가 값 "4"를 나타낼 때는 제 4번째 이외의 데이터에 대하여 부호반전이 행해진다.
이들 신호선(154)에 있어서의 독출 재배열 및 신호선(155)에 있어서의 독출 부호반전은, 상술의 식 1에 있어서의 쿼터니언적의 각 요소의 조합 순서 및 부호에 대응하고 있다.
또, 신호선(156)에 있어서의 연산기 지정으로서는, 내적을 나타내는 값 "5"가 출력된다. 이것은 신호선(519)에 있어서의 반복 카운트에는 의존하지 않는다.
도 7은, 본 발명의 실시의 형태에 있어서의 그 외의 연산명령에 관하여 반복제어회로(150)에 의해 행해지는 제어 내용의 일례를 나타내는 도면이다. 도 7a는, 기능코드(210)가, 가산(add), 감산(sub), 승산(mul), 제산(div), 또는, 비교(cmp)일 때의 신호선(151)에 있어서의 기입 이네이블의 내용을 나타내는 도면이다. 또, 도 7b는, 기능코드(210)가, 내적(dot)일 때의 신호선(151)에 있어서의 기입 이네이블의 내용을 나타내는 도면이다.
도 7a을 참조하면, 기능코드(210)가 가산등을 나타내는 경우, 신호선(138)에 있어서의 기입 요소수(223)가 값 "1"이면, 신호선(151)에 있어서의 기입 이네이블의 제 1번째의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 신호선(138)에 있어서의 기입 요소수(223)가 값 "2"이면, 신호선(151)에 있어서의 기입 이네이블의 제 1번째 및 제 2번째의 비트가 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 신호선(138)에 있어서의 기입 요소수(223)가 값 "3"이면, 신호 선(151)에 있어서의 기입 이네이블의 제 4번째의 비트만이 값 "0"으로 되며, 그 이외의 비트는 값 "1"로 된다. 그리고, 신호선(138)에 있어서의 기입 요소수(223)가 값 "4"이면, 신호선(151)에 있어서의 기입 이네이블의 모든 비트는 값 "1"로 된다.
도 7b를 참조하면, 기능코드(210)가 내적을 나타내는 경우, 신호선(138)에 있어서의 기입요소지정(232)이 값 "X"이면, 신호선(151)에 있어서의 기입 이네이블의 제 1번째의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 신호선(138)에 있어서의 기입요소지정(232)이 값 "Y"이면, 신호선(151)에 있어서의 기입 이네이블의 제 2번째의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 신호선(138)에 있어서의 기입요소지정(232)이 값 "Z"이면, 신호선(151)에 있어서의 기입 이네이블의 제 3번째의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다. 신호선(138)에 있어서의 기입요소지정(232)이 값 "W"이면, 신호선(151)에 있어서의 기입 이네이블의 제 4번째의 비트만이 값 "1"로 되며, 그 이외의 비트는 값 "0"으로 된다.
도 8은, 본 발명의 실시의 형태에 있어서의 그 외의 연산명령에 관하여 반복제어회로(150)에 의해 행해지는 제어내용의 다른 예를 나타내는 도면이다. 기능코드(210)가, 가산, 감산, 승산, 제산, 비교, 또는, 내적일 때, 신호선(519)에 있어서의 반복 카운트는 항상 값 "1"을 나타내고, 신호선(154)에 있어서의 독출 재배열은 "XYZW"를 나타내며, 또, 신호선(155)에 있어서의 독출 부호반전은 "PPPP" 를 나타낸다. 즉, 연산기(180)에 있어서의 복수회의 반복은 행해지지 않고, 독출 데 이터의 재배열이나 부호반전도 행해지지 않는 것을 의미한다.
단, 연산기(180)에 대한 신호선(156)에 의한 연산기 지정은 필요하고, 가산의 경우에는 값 "0", 감산의 경우에는 값 "1", 승산의 경우에는 값 "2", 제산의 경우에는 값 "3", 비교의 경우에는 값 "4", 내적의 경우에는 값 "5"가 각각 지정된다.
도 9는, 본 발명의 실시의 형태에 있어서의 레지스터 파일(140)의 구성예를 나타내는 도면이다. 레지스터 파일(140)은, 여기에서는 동시에 액세스되는 가로방향의 4 요소를 하나의 레지스터로서, 세로방향에 어드레스가 부여된다. 여기에서는, 왼쪽에서 제 1번째의 요소에는 쿼터니언의 x성분, 제 2번째의 요소에는 y성분, 제 3번째의 요소에는 z성분, 제 4번째의 요소에는 w성분(스칼라 성분)이, 각각 보관 유지되는 것을 상정하고 있다.
이 레지스터 파일(140)에 있어서의 액세스 어드레스는, 신호선(139)을 거쳐서 명령 디코더(130)에 의해 부여된다. 신호선(139)에 있어서, 제 1독출 레지스터지정(241) 및 제 2독출 레지스터지정(251)은 독출 어드레스를 나타내며, 기입 레지스터지정(231)은 기입 어드레스를 나타낸다. 제 1독출 레지스터지정(241)이 나타내는 어드레스에 보관 유지되어 있는 데이터는 신호선(148)으로부터 독출된다. 동일하게, 제 2독출 레지스터지정(251)이 나타내는 어드레스에 보관 유지되어 있는 데이터는 신호선(149)으로부터 독출된다.
또, 기입 레지스터지정(231)이 나타내는 어드레스에는 신호선(189)으로부터 공급되는 데이터가 보관 유지된다. 그 때, 신호선(151)에 있어서의 기입 이네이 블에 따라서, 대응하는 데이터가 보관 유지되는지 아닌지가 제어된다. 즉, 기입 이네이블의 제 1번째의 비트(1511)가 값 "1"을 나타내고 있으면 대응하는 제 1번째의 요소에 데이터의 기록이 행해지며, 값 "0"을 나타내고 있으면 대응하는 제 1번째의 요소로의 데이터의 기입은 행해지지 않는다. 다른 비트에 대해서도 동일하게, 기입 이네이블의 제 2 내지 4번째의 비트가 값 "1"을 나타내고 있으면 그 대응하는 요소에 데이터의 기입이 행해지며, 값 "0"을 나타내고 있는 요소에는 데이터의 기입은 행해지지 않는다.
도 10은, 본 발명의 실시의 형태에 있어서의 사이즈 처리회로(161또는 162)의 구성예를 나타내는 도면이다. 사이즈 처리회로(161또는 162)는, 각각 2입력 실렉터(611 내지 614 또는 621 내지 624)를 갖춘다.
2입력실렉터(611 내지 614)의 각각은, 신호선(148)에 의하여 레지스터 파일(140)로부터 공급된 4개의 데이터(1481 내지 1484) 또는 값 "0"의 어느 쪽인가를, 신호선(137)에 있어서의 제 1독출 요소수(224)에 따라 선택한다. 동일하게, 2입력실렉터(621 내지 624)의 각각은, 신호선(149)에 의하여 레지스터 파일(140)로부터 공급된 4개의 데이터(1491 내지 1494) 또는 값 "0"의 어느 쪽인지를, 신호선(137)에 있어서의 제 2독출 요소수(225)에 따라 선택한다. 이 때, 제 1독출 요소수(224) 및 제 2독출 요소수(225)와 2입력실렉터(611 내지 614 및 621 내지 624)에 대한 선택신호(독출 이네이블)와의 관계는 도 11과 같이 된다.
도 11은, 본 발명의 실시의 형태에 있어서의 사이즈 처리회로(161또는 162)에 있어서의 선택신호의 내용예를 나타내는 도면이다.
즉, 신호선(137)에 있어서의 제 1독출 요소수(224)가 값 "1"이면, 2입력실렉터(611)에 대한 독출 이네이블(2241)만이 값 "1"로 되며, 그 이외에 대해서는 값 "0"으로 된다. 이것에 의해, 신호선(1681)에는 신호선(1481)의 값이 출력되며, 신호선(1682 내지 1684)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 1독출 요소수(224)가 값 "2"이면, 2입력실렉터(611 및 612)에 대한 독출 이네이블(2241 및 2242)이 값 "1"로 되며, 그 이외에 대해서는 값 "0"으로 된다. 이것에 의해, 신호선(1681 및 1682)에는 각각 신호선(1481 및 1482)의 값이 출력되며, 신호선(1683 및 1684)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 1독출 요소수(224)가 값 "3"이면, 2입력실렉터(614)에 대한 독출 이네이블(2244)이 값 "0"으로 되며, 그 이외에 대해서는 값 "1"로 된다. 이것에 의해, 신호선(1681 내지 1683)에는 각각 신호선(1481 내지 1483)의 값이 출력되며, 신호선(1684)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 1독출 요소수(224)가 값 "4"이면, 2입력실렉터(611 내지 614)에 대한 모든 독출 이네이블(2241 내지 2244)이 값 "1"로 된다. 이것에 의해, 신호선(1681 내지 1684)에는 각각 신호선(1481 내지 1484)의 값이 그대로 출력되게 된다.
동일하게, 신호선(137)에 있어서의 제 2독출 요소수(225)가 값 "1"이면, 2입력실렉터(621)에 대한 독출 이네이블(2251)만이 값 "1"로 되며, 그 이외에 대해서는 값 "0"으로 된다. 이것에 의해, 신호선(1691)에는 신호선(1491)의 값이 출력되며, 신호선(1692 내지 1694)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 2독출 요소수(225)가 값 "2"이면, 2입력실렉터(621 및 622)에 대한 독출 이네이 블(2251 및 2252)이 값 "1"로 되며, 그 이외에 대해서는 값 "0"으로 된다. 이것에 의해, 신호선(1691 및 1692)에는 각각 신호선(1491 및 1492)의 값이 출력되며, 신호선(1693 및 1694)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 2독출 요소수(225)가 값 "3"이면, 2입력실렉터(624)에 대한 독출 이네이블(2254)이 값 "0"으로 되며, 그 이외에 대해서는 값 "1"로 된다. 이것에 의해, 신호선(1691 내지 1693)에는 각각 신호선(1491 내지 1493)의 값이 출력되며, 신호선(1694)에는 값 "0"이 출력된다. 신호선(137)에 있어서의 제 2독출 요소수(225)가 값 "4"이면, 2입력실렉터(621 내지 624)에 대한 모든 독출 이네이블(2251 내지 2254)이 값 "1"로 된다. 이것에 의해, 신호선(1691 내지 1694)에는 각각 신호선(1491 내지 1494)의 값이 그대로 출력되게 된다.
이와 같이 하여, 사이즈 처리회로(161 및 162)에 있어서 요소수(사이즈)를 넘는 부분에 대하여 값 "0"을 설정함으로써, 요소수가 4에 만족하지 않는 경우에서도 4요소의 승산결과의 총합이 내적을 나타내도록 할 수 있다. 또, 그와 같은 경우에 필요하지 않는 요소를 제로로 해 둠으로써, 불필요하게 연산기가 동작하는 것을 방지하여 소비전력을 저감 시킬 수 있다.
도 12는, 본 발명의 실시의 형태에 있어서의 데이터 조작회로(170)의 구성예를 나타내는 도면이다. 데이터 조작회로(170)는, 4개의 4입력실렉터(711 내지 714)와, 4개의 부호반전기(721 내지 724)와, 4개의 2입력실렉터(731 내지 734)를 갖추고 있다.
4입력실렉터(711 내지 714)의 각각은, 신호선(169)에 의하여 사이즈처리회로 (162)로부터 공급된 4개의 데이터(1691 내지 1694)의 어느 쪽인지를, 신호선(154)에 있어서의 독출 재배열(1541 내지 1544)에 따라 선택한다. 신호선(154)에 있어서의 독출하여 재배열(1541 내지 1544)은 반복제어회로(150)로부터 공급되는 것이며, 도 6 및 도 8에 의해 설명하는 바와 같이, 각각 어느 쪽의 성분을 선택해야 할 것인지를 나타내고 있다. 따라서, 4입력실렉터(711 내지 714)에 의해, 데이터의 재배열이 행해진다.
부호반전기(721 내지 724)는, 각각 4입력실렉터(711 내지 714)의 출력의 부호를 반전시키는 것이다. 그리고, 2입력실렉터(731 내지 734)에 있어서, 부호반전기(721 내지 724)를 거친 값 또는 부호반전기(721 내지 724)를 거치지 않은 그대로의 값의 어느 쪽인가가, 신호선(155)에 있어서의 독출 부호반전(1551 내지 1554)에 따라 선택된다. 신호선(155)에 있어서의 독출 부호반전(1551 내지 1554)은 반복제어회로(150)로부터 공급되는 것이며, 도 6 및 도 8에 의해 설명한 바와 같이, 각각 부호를 반전시키는지 아닌지를 나타내고 있다. 따라서, 부호반전기(721 내지 724) 및 2입력실렉터(731 내지 734)에 의해 데이터의 부호반전이 행해지며, 신호선(179)에 의하여 4개의 데이터(1791 내지 1794)가 출력된다.
도 13은, 본 발명의 실시의 형태에 있어서의 연산기(180)의 구성예를 나타내는 도면이다. 연산기(180)는, 4조의 연산회로군(810)과 가산기(820)와 4개의 연산결과 실렉터(831 내지 834)를 갖추고 있다.
연산회로군(810)은 4조의 입력오퍼랜드쌍에 대응하여 설치된다. 연산회로군(810)의 각각은, 예를 들면 가산기, 감산기, 승산기, 제산기, 비교기등을 갖추고 있다. 가산기(820)는, 4조의 연산회로군(810)에 있어서의 승산기의 각각의 출력을 받아, 4개의 승산결과의 총합을 계산한다. 즉, 이 가산기(820)의 출력이 적화연산결과를 나타내게 된다.
연산결과 실렉터(831 내지 834)는, 연산회로군(810) 및 가산기(820)에 의한 연산결과를, 반복제어회로(150)로부터 신호선(156)을 거쳐서 부여되는 연산기 지정에 따라 선택하고, 그 결과를 신호선(189)(1891 내지 1894)에 출력한다. 예를 들면, 연산기 지정이 「0」이면 연산회로군(810)에 의한 가산결과가 선택되며, 연산기 지정이 「1」이면 연산회로군(810)에 의한 감산결과가 선택되며, 연산기 지정이 「2」이면 연산회로군(810)에 의한 승산결과가 선택되며, 연산기 지정이 「3」이면 연산 회로군(810)에 의한 제산결과가 선택되며, 연산기 지정이 「4」이면 연산회로군(810)에 의한 비교결과가 선택되며, 연산기 지정이 「5」이면 가산기(820)에 의한 적화연산결과가 선택된다.
이상과 같은 구성을 가지는 SIMD형 컴퓨터 시스템에 있어서, 쿼터니언적명령(qmul)은 쿼터니언(P 및 Q)의 각 4성분을 각각 4차원 벡터의 요소에 할당하여 쿼터니언적(PQ)을 생성한다. 즉, Ax, Ay, Az, Aw의 차례로 레지스터 파일(140)에 있어서의 성분 X, Y, Z, W에 격납한 4차원 벡터를 제 1독출 오퍼랜드(240)에서 지정하고, Bx, By, Bz, Bw의 차례로 레지스터 파일(140)에 있어서의 성분 X, Y, Z, W에 격납한 4차원 벡터를 제 2독출 오퍼랜드(250)로 지정한 다음, 사이즈(220)를 값 "4"로 한다. 이것에 의해, 레지스터 파일(140)의 지정된 기록 오퍼랜드(230)의 성분(X, Y, Z, W)에 있어서, Mx, My, Mz, Mw의 순번으로 쿼터니언적(PQ)이 얻어진 다.
또, 쿼터니언(P)과 쿼터니언(Q)과의 곱(PQ)은, 3차원벡터(U, V)의 내적(內積)과 외적(外積)을 이용하면,
PQ=[pq―U·V; pV+qU+U×V]
로 나타낼 수 있다. 단, ·은 내적, ×은 외적이다.
여기서, p=0, q=0을 상정하면, 그 때의 쿼터니언(P와 Q)과의 곱은
PQ = [―U·V; U×V]
로 된다. 이 PQ의 각 성분은 U와 V의 외적 그 자체가 되는 것을 알수 있다. 즉,
PQ=(AyBz-AzBy) i
 +(―AxBz+AzBx) j
 +(AxBy-AyBx) k
= Nx i +Ny j + Nz k
이다.
즉, 사이즈(220)를 값 "3"으로서 쿼터니언적명령을 실행하면, 제 1독출하여 오퍼랜드(240)에 의한 레지스터 및 제 2독출 오퍼랜드(250)에 의한 레지스터는, 사이즈 처리회로(161 및 162)에 의해서 모두 성분(W)이 제로로 설정된다. 그리고, 반복수(226)에도 사이즈(220)의 값 "3"이 설정되기 때문에, 반복 카운터(510)에 의한 반복 카운트(519)는 "1","2","3"까지 되며, 성분(X, Y, Z)에 대해서의 3회, 각각의 설정으로 연산이 행해지고 Mx, My, Mz가 산출된다. 이 때의 계수(Nx, Ny, Nz)는, 성분(W)이 모두 제로이므로 p=0, q=0이며, 3차원 벡터(Ax, Ay, Az) 및 (Bx, By, Bz)의 외적을 계산한 것으로 된다.
이와 같이, 본 발명의 실시의 형태에 의하면, 2개의 4차원 벡터의 한편에 대하여 데이터 조작을 행하면서 반복제어회로(150)에 의하여 양벡터의 적화연산을 4회 반복함으로써, 쿼터니언적을 산출할 수 있다. 따라서, 복수의 명령을 조합하지 않고, 하나의 쿼터니언적명령만으로 쿼터니언적을 실행할 수 있고, 프로그램 사이즈를 단축시키고, 명령 캐쉬의 이용효율을 향상시킬 수 있다. 또, 재배열이나 부호반전을 실시한 중간 데이터를 보관 유지하는 레지스터를 설치할 필요가 없기 때문에, 레지스터의 이용효율을 향상시킬 수 있다.
또, 그 쿼터니언적을 산출하는 구성과 같은 구성에 있어서 삼차원 벡터를 적용함으로써, 외적을 산출할 수 있다. 즉, 기능코드(210)에 있어서 쿼터니언적명령(qmul)을 지정했을 경우, 사이즈(220)를 값 "4"로 함으로써 쿼터니언적을 산출할 수 있고, 사이즈(220)를 값 "3"으로 함으로써 외적을 산출할 수 있게 된다.
또한, 본 발명의 실시의 형태는 본 발명을 구현화하기 위한 일례를 나타낸 것이며, 이하에 나타내는 바와 같이 특허 청구의 범위에 있어서의 발명 특정 사항과 각각 대응 관계를 가지지만, 이것에 한정되지 않고 본 발명의 요지를 일탈하지 않는 범위에 있어서 여러 가지의 변형을 실시할 수 있다.
즉, 청구항 1에 있어서, 데이터 조작수단은 예를 들면 데이터 조작회로(170)에 대응한다. 또, 연산수단은 예를 들면 연산기(180)에 대응한다. 또, 반복제어수단은 예를 들면 반복제어회로(150)에 대응한다.
또, 청구항 2에 있어서, 재배열 수단은 예를 들면 실렉터(711 내지 714)에 대응한다. 또, 부호반전수단은 예를 들면 부호반전기(721 내지 724) 및 실렉터(731 내지 734)에 대응한다.
또, 청구항 3에 있어서, 계수수단은 예를 들면 반복 카운터(510)에 대응한다. 또, 연산제어수단은 예를 들면 연산제어회로(520)에 대응한다.
또, 청구항 6에 있어서, 사이즈처리수단은 예를 들면 사이즈 처리회로(161 및 162)에 대응한다.
또, 청구항 7에 있어서, 벡터보관유지수단은 예를 들면 레지스터 파일(140)에 대응한다. 데이터 조작수단은 예를 들면 데이터 조작회로(170)에 대응한다. 또, 연산수단은 예를 들면 연산기(180)에 대응한다. 또, 반복제어수단은 예를 들면 반복제어회로(150)에 대응한다.
또, 청구항 8에 있어서, 벡터보관유지수단은 예를 들면 레지스터 파일(140)에 대응한다. 또, 추출수단은 예를 들면 명령디코더(130)에 대응한다. 또, 제 1의 공급수단은 예를 들면 레지스터 파일(140)에 대응한다. 또, 제 2의 공급수단은 예를 들면 데이터 조작회로(170)에 대응한다. 또, 연산수단은 예를 들면 연산기(180)에 대응한다.
또, 청구항 10에 있어서, 추출수단은 예를 들면 명령디코더(130)에 대응한다. 또, 연산수단은 예를 들면 연산기(180)에 대응한다.
또한, 본 발명의 실시의 형태에 있어서 설명한 처리순서는, 이들 일련의 순서를 가지는 방법으로서 포착해도 좋고, 또, 이들 일련의 순서를 컴퓨터에 실행시 키기 위한 프로그램 내지 그 프로그램을 기억하는 기록 매체로서 포착해도 좋다.
본 발명에 의하면, 쿼터니언적을 1 명령에 의해 실행한다고 하는 뛰어난 효과를 얻을 수 있다.
본 발명의 활용예로서 예를 들면 벡터 연산을 행하는 SIMD형 프로세서에 본 발명을 적용할 수 있다.

Claims (11)

  1. 제 1의 입력벡터요소와 제 2의 입력벡터요소의 임의의 조합을 생성하는 데이터 조작수단과,
    상기 조합에 의한 적화연산을 행하는 연산수단과,
    상기 제 1 및 제 2의 입력벡터의 요소수에 따라 상기 데이터 조작수단에 있어서의 상기 조합의 생성 및 상기 연산수단에 있어서의 상기 적화연산을 제어하는 반복제어수단을 구비하는 것을 특징으로 하는 프로세서.
  2. 제 1항에 있어서,
    상기 데이터 조작수단은,
    상기 반복제어수단에 의한 제어에 의거하여 상기 제 2의 입력벡터의 요소 재배열을 행하는 재배열수단과,
    상기 반복제어수단에 의한 제어에 의거하여 상기 재배열수단에 의한 출력의 부호를 반전시키는 부호반전수단을 갖추는 것을 특징으로 하는 프로세서.
  3. 제 2항에 있어서,
    상기 반복제어수단은,
    상기 요소수에 따른 회수를 계수하는 계수수단과,
    상기 계수수단에 의한 계수값에 따라서 상기 재배열수단 및 상기 부호반전수 단에 대한 제어를 행하는 연산제어수단을 갖추는 것을 특징으로 하는 프로세서.
  4. 제 1항에 있어서,
    상기 제 2의 입력벡터는 4개의 요소(Bx, By, Bz, Bw)를 갖추고,
    상기 데이터 조작수단은 상기 반복제어수단에 의한 제어에 근거하여 제 1의 줄 순서(Bw, Bz,-By, Bx)와 제 2의 줄 순서(-Bz, Bw, Bx, By)와 제 3의 줄 순서(By,-Bx, Bw, Bz)와 제 4의 줄 순서(-Bx,-By,-Bz, Bw)를 차례차례 생성하는 것을 특징으로 하는 프로세서.
  5. 제 4항에 있어서,
    상기 제 1의 입력벡터는 4개의 요소(Ax, Ay, Az, Aw)를 갖추고,
    상기 연산수단은 상기 반복제어수단에 의한 제어에 근거하여 제 1의 적화연산(AxBw+AyBz-AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(-AxBx-AyBy-AzBz+AwBw)을 차례로 진행하는 것을 특징으로 하는 프로세서.
  6. 제 1항에 있어서,
    상기 제 1 및 제 2의 입력벡터에 대하여 각각 상기 요소수를 넘는 요소에 제로를 설정하는 사이즈처리수단을 또한 구비하는 것을 특징으로 하는 프로세서.
  7. 제 1 및 제 2의 입력벡터를 보관 유지하는 벡터보관유지수단과,
    상기 제 1의 입력벡터의 요소와 상기 제 2의 입력벡터의 요소와의 임의의 조합을 생성하는 데이터 조작수단과,
    상기 조합에 의한 적화연산을 행하는 연산수단과,
    상기 제 1 및 제 2의 입력벡터의 요소수에 따라 상기 데이터 조작수단에 있어서의 상기 조합의 생성 및 상기 연산수단에 있어서의 상기 적화연산을 제어하고 그 적화연산결과를 상기 벡터보관유지수단의 출력벡터에 있어서의 소정 요소로서 보관 유지시키는 반복제어수단을 구비하는 것을 특징으로 하는 프로세서.
  8. 4개의 요소(Ax, Ay, Az, Aw)를 갖추는 제 1의 입력벡터와 4개의 요소(Bx, By, Bz, Bw)를 갖추는 제 2의 입력벡터를 보관 유지하는 벡터보관유지수단과,
    상기 제 1의 입력벡터와 제 2의 입력벡터와의 사이의 연산을 행하는 명령에 있어서 상기 제 1 및 제 2의 입력벡터의 요소수를 추출하는 추출수단과,
    상기 제 1의 입력벡터의 각 요소(Ax, Ay, Az, Aw)를 공급하는 제 1의 공급수단과,
    상기 제 2의 입력벡터의 각 요소에 대하여 제 1의 줄 순서(Bw, Bz,-By, Bx)와 제 2의 줄 순서(-Bz, Bw, Bx, By)와 제 3의 줄 순서(By,-Bx, Bw, Bz)와 제 4의 줄 순서(-Bx,-By,-Bz, Bw)를 차례차례 공급하는 제 2의 공급수단과,
    상기 요소수가 4인 경우에 상기 제 1 및 제 2의 공급수단으로부터 공급된 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 적화연산(AxBw+AyBz- AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(-AxBx-AyBy-AzBz+AwBw)을 순차 행하고 상기 벡터보관유지수단에 보관 유지시키는 연산수단을 구비하는 것을 특징으로 하는 프로세서.
  9. 제 8항에 있어서,
    상기 연산수단은, 상기 요소수가 3인 경우에 상기 제 1 및 제 2의 공급수단으로부터 공급된 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 외적요소(AyBz-AzBy)와 제 2의 외적요소(-AxBz+AzBx)와 제 3의 외적요소(AxBy-AyBx)를 차례차례 생성하여 상기 벡터보관유지수단에 보관 유지시키는 것을 특징으로 하는 프로세서.
  10. 4개의 요소(Ax, Ay, Az, Aw)를 갖추는 제 1의 입력벡터와 4개의 요소(Bx, By, Bz, Bw)를 갖추는 제 2의 입력벡터와의 사이의 연산을 행하는 명령을 명령세트로서 갖추는 프로세서에 있어서,
    상기 제 1의 입력벡터와 제 2의 입력벡터와의 사이의 연산을 행하는 명령에 있어서 상기 제 1 및 제 2의 입력벡터의 요소수를 추출하는 추출수단과,
    상기 요소수가 4인 경우에 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 적화연산(AxBw+AyBz-AzBy+AwBx)과 제 2의 적화연산(-AxBz+AyBw+AzBx+AwBy)과 제 3의 적화연산(AxBy-AyBx+AzBw+AwBz)과 제 4의 적화연산(- AxBx-AyBy-AzBz+AwBw)을 차례차례 생성하여 쿼터니언적(quaternion product)을 산출하는 연산수단을 구비하는 것을 특징으로 하는 프로세서.
  11. 제 10항에 있어서,
    상기 연산수단은, 상기 요소수가 3인 경우에 상기 제 1 및 제 2의 입력벡터의 각 요소에 근거하여 제 1의 외적요소(AyBz-AzBy)와, 제 2의 외적요소(-AxBz+AzBx)와 제 3의 외적요소(AxBy-AyBx)를 차례차례 생성하고 외적을 산출하는 것을 특징으로 하는 프로세서.
KR1020050107843A 2004-11-22 2005-11-11 프로세서 KR101202445B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00337025 2004-11-22
JP2004337025A JP4349265B2 (ja) 2004-11-22 2004-11-22 プロセッサ

Publications (2)

Publication Number Publication Date
KR20060056855A true KR20060056855A (ko) 2006-05-25
KR101202445B1 KR101202445B1 (ko) 2012-11-16

Family

ID=36462173

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107843A KR101202445B1 (ko) 2004-11-22 2005-11-11 프로세서

Country Status (4)

Country Link
US (1) US7725520B2 (ko)
JP (1) JP4349265B2 (ko)
KR (1) KR101202445B1 (ko)
CN (1) CN100447777C (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8527742B2 (en) 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
JP5633122B2 (ja) * 2009-06-16 2014-12-03 富士通セミコンダクター株式会社 プロセッサ及び情報処理システム
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9189458B1 (en) * 2013-03-05 2015-11-17 Xilinx, Inc. Parameter estimation
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US20170335433A1 (en) 2014-11-10 2017-11-23 3M Innovative Properties Company Radiation shielding composition and method of making the same
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN112214244A (zh) * 2016-08-05 2021-01-12 中科寒武纪科技股份有限公司 一种运算装置及其操作方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809212A (en) * 1985-06-19 1989-02-28 Advanced Micro Devices, Inc. High throughput extended-precision multiplier
US4754421A (en) * 1985-09-06 1988-06-28 Texas Instruments Incorporated Multiple precision multiplication device
US6233597B1 (en) * 1997-07-09 2001-05-15 Matsushita Electric Industrial Co., Ltd. Computing apparatus for double-precision multiplication
US6523055B1 (en) * 1999-01-20 2003-02-18 Lsi Logic Corporation Circuit and method for multiplying and accumulating the sum of two products in a single cycle
JP3568861B2 (ja) 2000-01-27 2004-09-22 株式会社スクウェア・エニックス ビデオゲームにおける三次元オブジェクト変形方法及びビデオゲーム装置、並びにビデオゲーム用のプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2003016051A (ja) * 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
CN1142484C (zh) * 2001-11-28 2004-03-17 中国人民解放军国防科学技术大学 微处理器向量处理方法
JP4107043B2 (ja) * 2002-10-15 2008-06-25 株式会社デンソー 演算処理装置
US20040193838A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney Vector instructions composed from scalar instructions

Also Published As

Publication number Publication date
US7725520B2 (en) 2010-05-25
KR101202445B1 (ko) 2012-11-16
CN1783054A (zh) 2006-06-07
JP2006146644A (ja) 2006-06-08
JP4349265B2 (ja) 2009-10-21
US20060112159A1 (en) 2006-05-25
CN100447777C (zh) 2008-12-31

Similar Documents

Publication Publication Date Title
KR101202445B1 (ko) 프로세서
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
US8984043B2 (en) Multiplying and adding matrices
US6349318B1 (en) Arithmetic processor for finite field and module integer arithmetic operations
JP2020533691A (ja) Simd命令を用いた効率的な直接畳み込み
JP3750820B2 (ja) パック・データの乗加算演算を実行する装置
US6209078B1 (en) Accelerated multimedia processor
WO2018217359A1 (en) Tensor processor instruction set architecture
GB2474901A (en) Multiply-accumulate instruction which adds or subtracts based on a predicate value
JP2959104B2 (ja) 信号処理プロセッサ
JP7253492B2 (ja) データ処理装置における乗累算
CN111353126A (zh) 分块矩阵乘法运算系统
US7043627B2 (en) SIMD operation system capable of designating plural registers via one register designating field
JP3985797B2 (ja) プロセッサ
US11106465B2 (en) Vector add-with-carry instruction
CN110914800A (zh) 基于寄存器的复数处理
JP4696540B2 (ja) コンピュータ、データ処理方法およびプログラム
Damaj et al. Performance analysis of linear algebraic functions using reconfigurable computing
JP2654451B2 (ja) データ出力方法
JPH1063647A (ja) 行列演算装置
WO2008077803A1 (en) Simd processor with reduction unit
JPH0298777A (ja) 並列積和演算回路及びベクトル行列積演算方法
CN117762492A (zh) 数据处理方法、装置、计算机设备及可读存储介质
JPH09153030A (ja) 二次元離散コサイン変換回路
JPH117440A (ja) プロセッサ、コンパイラ、積和演算方法及び記録媒体

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J121 Written withdrawal of request for trial
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee