KR100859044B1 - 복수 레지스터 지정이 가능한 simd 연산방식 - Google Patents

복수 레지스터 지정이 가능한 simd 연산방식 Download PDF

Info

Publication number
KR100859044B1
KR100859044B1 KR1020010050643A KR20010050643A KR100859044B1 KR 100859044 B1 KR100859044 B1 KR 100859044B1 KR 1020010050643 A KR1020010050643 A KR 1020010050643A KR 20010050643 A KR20010050643 A KR 20010050643A KR 100859044 B1 KR100859044 B1 KR 100859044B1
Authority
KR
South Korea
Prior art keywords
register
data
result
registers
decoder
Prior art date
Application number
KR1020010050643A
Other languages
English (en)
Other versions
KR20020035739A (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 KR20020035739A publication Critical patent/KR20020035739A/ko
Application granted granted Critical
Publication of KR100859044B1 publication Critical patent/KR100859044B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/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/30098Register arrangements
    • 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/30109Register structure having multiple operands in a single register
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

SIMD 프로세서의 고속화에 있어서는 레지스터 내 데이터 정렬 등, SIMD 연산의 효과를 방해하는 요인을 경감할 필요가 있다.
레지스터 화일을 4개의 뱅크로 나누어, 1개의 오퍼런드에서 복수개의 레지스터를 지정할 수 있도록 하여, 4개의 레지스터를 동시에 액세스 할 수 있도록 함으로써, 데이터 정렬연산 파이프(211)에 다수의 데이터를 공급할 수 있고, 고속으로 데이터 정렬연산을 행할 수 있다. 또, 신규의 데이터 팩 명령, 데이터 언팩 명령, 데이터 병렬 교체명령을 정의함으로써, 그 다량으로 공급되는 데이터를 효율적으로 정렬시킬 수 있다. 더욱이, 상기의 특징에 의해, SIMD의 병렬성을 최대한으로 살린 적화연산명령의 정의가 가능하다.

Description

복수 레지스터 지정이 가능한 SIMD 연산방식{SIMD CALCULATION MODE CAPABLE OF DESIGNATING MULTIPLE REGISTERS}
도 1은 본 발명의 일례에 관계된 SIMD 프로세서의 CPU 블록도,
도 2는 본 발명의 일례에 관계된 SIMD 프로세서의 전체 블록도,
도 3은 상기 SIMD 프로세서의 레지스터 화일부 부근의 상세도,
도 4는 디코드부를 구성하는 논리회로의 진지치표를 나타내는 도면,
도 5는 도 3의 뱅크로부터의 데이터를 선택하는 셀렉터를 구성하는 논리회로의 진리치표를 나타낸 도면,
도 6은 뱅크(203) 내의 개개의 레지스터 상세도,
도 7은 범용버스 상의 연산결과를 어느 뱅크의 레지스터에 저장할 것인가의 장소를 셀렉트 하기 위한 셀렉터를 구성하는 논리회로의 진리치표를 나타내는 도면,
도 8은 버스(210)상의 연산결과를 어느 뱅크의 레지스터에 저장할 것인가의 장소를 셀렉트 하기 위한 셀렉터를 구성하는 논리회로의 진리치표를 나타내는 도면,
도 9는 데이터 팩 명령의 정의를 나타내는 도면,
도 10은 즉답(卽値)을 포함하는 데이터 팩 명령의 정의를 나타내는 도면,
도 11은 데이터 팩 명령을 실현하기 위한 기능구성도,
도 12는 데이터 언팩 명령의 정의를 나타내는 도면,
도 13은 8비트 데이터에 대한 언팩 명령의 정의를 나타내는 도면,
도 14는 데이터 언팩 명령을 실현하기 위한 구성도,
도 15는 병렬 교체명령의 정의를 나타내는 도면,
도 16은 병렬 교체명령의 구체적인 설명도,
도 17은 병렬 교체명령을 실현하기 위한 기능구성도,
도 18은 병렬 교체명령의 정의를 나타내는 도면,
도 19는 병렬 교체명령의 다른 정의를 나타내는 도면,
도 20은 병렬 교체명령의 구체적인 사용예를 나타내는 도면,
도 21은 도 20을 실현하기 위한 기능구성도,
도 22는 적화연산명령의 정의를 나타내는 도면,
도 23은 적화연산명령의 구체적인 설명도,
도 24는 도 23을 실현하기 위한 기능구성도,
도 25는 데이터 팩 명령도입의 효과를 나타내는 프로그램 예를 나타내는 도면,
도 26은 데이터 언팩 명령 도입의 효과를 나타내는 프로그램예를 나타내는 도면,
도 27은 병렬 교체 명령 도입의 효과를 나타내는 프로그램 예를 나타내는 도면이다.
<도면부호의 설명>
200...CPU 블록, 201...명령 코드,
202...레지스터 지정 디코더,
203...레지스터 화일을 분할한 뱅크의 하나,
204...4입력 3출력 셀렉터, 205...4입력 1출력 셀렉터,
206, 301...소스 데이터용 범용버스, 207...연산결과용 범용버스,
208...3입력 4출력 셀렉터, 209...1입력 4출력 셀렉터,
210...연산결과용 버스, 211...데이터 정렬연산 파이프,
212...곱셈파이프, 213...레지스타 화일,
302...우(右)산술 시프트용 배렐 시프터, 307,501...소스 데이터용 버스,
400...64비트 부호확장기,
700,701,702,703...16비트 곱셈기,
704,705,706,707...64비트 가산기,
708,709,710,711...1비트 우(右)시프트기.
본 발명은 SIMD(Single Instruction Multiple Data) 프로세서에 있어서 레지스터 지정방식 및 레지스터 내 데이터 정렬처리에 관한 것으로, SIMD의 병렬처리성능을 저하시키는 경향이 있는 레지스터 내 데이터 정렬을 고속으로 행하는 수단에 관한 것이다.
또 DSP(Digital Signal Processing) 명령으로서 표준적인 적화연산(積和演算)에 관하여, SIMD의 병렬성을 유지한 채로, 정밀도를 떨어뜨림 없이 연산시키는 것이 가능한 수단에 관한 것이다.
3차원 그래픽스 등에서 필요하게 되는 벡터 연산처리를 행할 때에 1개의 레지스터 지정 필드에서 연속한 복수개의 레지스터를 지정할 수 있도록 하여, 벡터연산을 행할 수 있는 것과 같은 방법이, 일본국 특개평10-124484 및 미국특허 USP 6038582)의 특허로 이미 공개되어 있다.
또, 레지스터 내 데이터 정렬명령으로서는 모토롤라사가 개발한 멀티미디어 명령셋트 Altivec의, 「AltiVec Programming Interface Manual」에 4 오퍼런드까지 지정가능한 각종 데이터 정렬명령이 기술되어 있다.
게다가 적화연산(積和演算)에 관하여는 SIMD의 병렬성을 4 병렬로부터 2 병렬로 반감시킨 형태로 실현하는 것 같은 정밀도 결점이 없는 적화연상명령이 히다치제작소와 ST 마이크로 일렉트로닉스가 공동개발한 SH5 아키텍쳐로 정의되어 있 다.
그러나, 일본국 특개평10-124484에 나타난 벡터 연산처리에서는, 복수의 레지스터 지정에 있어서 4의 배수의 번호 밖에 지정할 수 없는 구성으로 이루어지기 때문에 자유도가 모자라고, 또 Altivec의 데이터 정렬명령에서는, 연산장치가 대형으로 고가의 소스 레지스터로서 3개 밖에 지정할 수 없고, 데이터 팩(Pack)과 언팩(Unpack)이라는 SIMD 특유의 연산을 효율적으로 양호하게 행할 수 없다. 따라서, SIMD의 병렬성을 충분히 달성할 수 있다고 말할 수 없다.
본 발명의 주된 목적은 SIMD 명령의 효과를 최대한으로 올리기 위한 데이터 정렬에 관한 수단을 제공하는 것이다.
또 본 발명의 다른 목적은 DPS 명령으로서 표준적인 적화연산명령을 SIMD의 병렬성을 떨어뜨림 없이, 더구나 정밀도를 유지한 채로 실현하는 하나의 수단을 제공하는 것이다.
본원에서 개시되는 발명 중에 대표적인 것의 개요를 간단히 설명하면 아래와 같다.
본 발명은 명령코드와 적어도 1개의 레지스터 지정 필드로부터 이루어지는 연산명령을 가지고, 적어도 1개의 레지스터 지정 필드는 연속번호의 복수개의 레지스터를 지정 가능한 것을 특징으로 한다.
또한 본 발명은 임의의 수의 레지스터 지정 필드 내 1 필드에서 복수의 리드(read) 레지스터를 지정하는 디코더와, 디코더로부터의 출력에 따라서 연속번호의 복수개의 레지스터 내 데이터를 출력하는 레지스터 화일을 구비하는 것을 특징으로 한다.
또한 본 발명은 임의의 수의 레지스터 지정 필드 내 1 필드에서 복수의 라이트(write) 레지스터를 지정하는 디코더와, 디코더로부터의 출력에 따라서 연속번호의 복수개의 레지스터에 값을 기입할 수 있는 레지스터 화일을 구비하는 것을 특징으로 한다.
상기 레지스터 화일은 복수의 뱅크를 가지고, 복수의 뱅크로부터 리드(read) 또는 라이트(write)를 행함으로써 각 뱅크의 리드 또는 라이트 포트 수를 레지스터 지정 필드 수 이하로 제한하여, 필드 수보다 많은 리드 또는 라이트를 행하는 것에 의한 회로규모의 증대를 억제한 것이다.
상기 연속번호의 복수개의 레지스터 수는 2의 n승개(n은 자연수)로 한정하여, 레지스터 선택회로의 삭감을 가능하게 한 것이다.
또한 리드 레지스터 지정 필드 수보다 많은 수의 레지스터로부터 데이터를 리드(read)하기 때문에, 라이트 레지스터로의 기입 데이터 수보다 많은 리드 레지스터로부터의 독출(讀出) 데이터 수에 대응가능한 데이터 팩(Pack) 연산에 의해 라이트 레지스터 폭의 유효한 데이터를 생성하는 것이 실현가능한 것을 특징으로 한다.
또한 더욱이, 라이트 레지스터 지정 필드 수보다 많은 수의 레지스터에 라이트 할 수 있는 것이므로, 리드 레지스터의 독출 데이터 수보다 많은 라이트 레지스터로의 기입 데이터 수에 대응가능한 데이터 언팩(Unpack)연산을, 라이트를 복수회 로 나누는 것 없이 병렬적으로 실현가능한 것을 특징으로 한다.
또한 라이트 레지스터 지정 필드 수보다 많은 레지스터에 라이트할 수 있으므로, 입력 데이터 폭보다 넓은 데이터 폭의 출력을 행하는 연산에 의해, 리드 레지스터 폭의 입력 데이터를 이용해서 복수의 라이트 레지스터에 대응하는 데이터 폭의 넓은 데이터 생성을 실현가능한 것을 특징으로 한다.
또한 데이터 정렬을 행하는 파이프 등 레지스터 지정 필드의 수 이상의 데이터를 필요로 하는 파이프에 각각 데이터를 공급하기 위해서, 레지스터와 연산 파이프간에는 범용의 버스의 외에, 복수 자루의 데이터용 버스를 마련하고 있는 것을 특징으로 한다.
또한 데이터 언팩 명령, 병렬 교체명령, 행렬연산명령, 적화연산명령 등 복수개의 결과를 출력하는 파이프를 위해서, 레지스터와 연산 파이프간에 레지스터 기입용으로서 복수체의 데이터용 버스를 마련하고 있는 것을 특징으로 한다.
(발명의 실시형태)
이하, 도면을 참조하여 본 발명의 실시예를 상세히 설명한다. 또, 실시예를 설명하기 위한 모든 도면에서 동일 기능을 가지는 것은 동일 부호를 붙이고, 그 되풀이되는 설명은 생략한다.
도 1에는 본 발명의 실시예인 SIMD 프로세서의 CPU 블록도의 개략을 나타낸다. 다만, 이 CPU 블록부는 도 2에 나타내어지는 마이크로 컴퓨터의 레이아웃에서의 CPU(200)의 부분을 가리키는 것이다. 또, 도 2에서 FPU는 부동소수점 연산유 닛, CCN은 캐쉬 콘트롤러, BSC는 버스 스테이트 콘트롤러, TLB는 트랜스레이션 룩어사이드 버퍼를 나타내고, 이것들의 레이아웃은 주지의 구성이다.
동일 도 1에 나타내어지는 SIMD 프로세서는, 64 비트 RISC(Reduced Instruction Set Computer) 아키텍쳐를 예로서 채용하여, 오퍼런드를 3개 가지고, 32 비트 고정장명령(固定長命令)을 실행하는 것이다.
이 도 1의 예에서는, 연산 파이프로서, 데이터 정렬(ALN)ㆍ승산(MUL)ㆍ정수연산(INT)ㆍ로드/스토어(LD/ST)ㆍ분지(BRA)의 5가지를 가지는 것과 같은 SIMD 프로세서를 상정하고 있다.
도 3에는, 상기 SIMD 프로세서의 CPU 블록도 중, 명령 디코드부로부터 레지스터 화일(213)로의 액세스부에 관하여 상세히 나타나 있다.
명령 코드(201)의 레지스터 지정 필드의 1가지인 m에는 R0 ~ R63 까지의 어느 한가지의 레지스터 번호가 지정되고, 그 코드는 디코더(202)에 의해 디코드되어, 각 레지스타에 직접 액세스할 수 있다.
이 디코더(202)는, 도 4에 나타내는 진리치표를 만족시키는 논리회로로 구성된다. 도 4부터에서도 알 수 있는 바과 같이, 출력 64개 중 4개가 high로 되어 4개의 연속한 레지스터를 한번에 지정할 수 있다. 각 뱅크로부터 읽어낸 데이터는 셀렉터(204)와 셀렉터(205)로 출력된다. 셀렉터(205)에는 제어신호로서 오퍼런드 코드 m의 하위 2비트를 입력하고 입력용의 범용버스(206)로 출력하는 데이터를 결정한다.
셀렉터(204)에도 마찬가지로 각 뱅크로부터의 데이터가 입력되어, 범용 버스 로 출력되는 데이터를 제외한 나머지의 데이터를 출력하는 제어신호로서는 셀렉터(205)와 동일한 오퍼런드 코드 m의 하위 2비트를 사용한다.
도 5에 셀렉터(204 와 205)의 출력의 모양을 나타내는 진지치표를 나타낸다. 표 가운데의 a와 b는, 상기의 오퍼런드 코드 m의 하위 2비트를 의미하고, 셀렉터(205)의 출력이 「206으로 향해」로 대응하고, 셀렉터(204)의 출력이 「307로 향해」로 대응한다. 또, 이 진리치표의 「206으로 향해」란 및 「307로 향해」란의 출력치로서 표현되고 있는 X0 ~ X3의 「X」는 BNK(즉, 뱅크)를 나타내고 있다.
이들 셀렉터(204와 205)의 출력은 각 뱅크마다 서로 배타적이고, 이 도 5에 나타내어진 진리치표를 만족시키는 것과 같은 논리회로로 셀렉터(204와 205)는 구성된다.
각 뱅크에 관하여는, 뱅크 3(도 3내 203에 상당한다)의 상세도가 도 6에 나타내어지고 있지만, 뱅크 3(203)에 존재하는 각 레지스터는, 이 예에서는 1 비트 당 2리드(read)ㆍ1라이트(write)의 표준적인 것으로 구성된다.
도 3에서, 뱅크 0에는 R0ㆍR4ㆍ...ㆍR4n의 16개의 레지스터가 저장되고, 뱅크 1에는 R1ㆍR5ㆍ...ㆍ4n+1의 16개, 뱅크 2에는 R2ㆍR6ㆍ...ㆍR4n+2의 16개, 뱅크 3에는 R3ㆍRㆍ...ㆍR4n+3의 16개가 저장되고 있다.
도 1에 나타내는 것을 통해, 각 연산 파이프로 실행된 연산결과는 출력용의 범용버스(207)에 출력된다. 또 이 예에서는, 데이터 정렬연산 파이프와 승산 파이프로부터 출력이 4개 있기 때문에, 그 중 1개를 범용의 207의 버스로, 나머지의 3 개를 210의 버스로 출력하도록 한다. 210의 버스 상의 데이터는 셀렉터(208)에 입력된다.
셀렉터(208)는 3입력4출력의 셀렉터로, 도 7에 나타내어지는 진리치표를 만족하는 논리회로로 구성된다.
도 7중의 a와 b는 제어신호를 나타내고, 입력의 X,Y,Z는 입력치, 출력은 왼쪽으로부터 뱅크0,1,2,3으로의 출력을 나타낸다.
셀렉터(208)에 입력되는 제어신호는 데스티네이션 레지스터(destination register) 지정 필드(오퍼런드 코드 d)로 표시되는 코드의 하위 2비트를 사용한다. 또, 범용버스(207)로 출력된 데이터는 셀렉터(209)로 입력되고 저장되는 레지스터가 존재하는 뱅크로 선택,출력된다.
셀렉터(209)는 제어신호로서 셀렉터(208)와 마찬가지의 데스티네이션 레지스터 지정 필드로 표시되는 코드(오퍼런드 코드 d)의 하위 2비트를 사용하고, 도 8에 나타내는 진리치표를 만족하는 논리회로로 구성된다.
도 8중의 a와 b는 데스티네이션 레지스터 지정 필드(오퍼런드 코드 d)의 하위 2비트의 값으로, X는 입력치, 출력(Output)은 왼쪽부터 뱅크 0,1,2,3으로의 출력을 나타낸다.
이들 셀렉터(208)와 셀렉터(209)부터의 출력은 각 뱅크마다 서로 배타적이고, 한쪽의 셀렉터의 출력이 데이터이면, 다른 한쪽의 셀렉터부터의 출력은 0이 된다. 따라서, 이들 셀렉터(208과 209)부터의 출력은 각 뱅크마다 논리화를 가지고, 뱅크내의 레지스터로 기입되게 된다.
이상까지가 복수 레지스터를 지정할 수 있는 SIMD 프로세서의 설명이다.
다음에, 이 SIMD 프로세서의 특징을 살려 정의되는 SIMD 연산명령에 관하여 설명한다.
일반적으로 SIMD 프로세서에서는 레지스터 내의 데이터를 즉시 연산할 수 있는 순서로 정렬되어 있을 때에 그 병렬성을 최대한으로 발휘할 수 있지만, 많은 경우 데이터를 병렬 교체한 후에 주요한 연산을 행할 필요가 있다. 따라서, 그 병렬 교체하는 싸이클을 가능한 한 줄이는 것이 SIMD 프로세서의 성능향상으로 이어진다.
본 발명의 특징을 살려, 도 9, 도 10과 같은 데이터 팩(Pack) 명령을 정의한다.
도 9는 시프트 양(量)이 레지스터 내에 존재하는 경우이고, 도 10은 즉값(卽値)으로서 명령 코드 내에 시프트 양이 존재하는 경우이다.
도 9에서는 데이터 팩 명령의 시프트 양(Rn)을 레지스터로부터 읽어들이고 Rm 으로 나타내어지는 레지스터군 내의 데이터에 대하여 시프트 처리를 시작한 후 팩(Pack) 연산을 수행하는 오퍼레이션 코드를 나타내고 있고, 도 10에서는 도 9와 비교하여 시프트 양(s)이 즉 값인 경우의 오퍼레이션 코드를 나타내고 있다.
이 명령은 도 9 중의 동작설명으로부터도 알 수 있듯이, 4개의 레지스터 내 데이터를 1개의 데이터로 팩(압축)하여 저장하기 위한 것이다.
이 명령을 실현하기 위한 회로구성은 도 11에 나타내어진 것이다.
범용버스(206과 307)의 버스에는 레지스터 지정 필드 1(오퍼런드 코드 m)로 나타내어지는 4개의 레지스터 내 데이터가 운송된다. 또 레지스터 지정 필드 2(오퍼런드 코드 n)으로 나타내어지는 시프트 양은 범용버스(301)로부터 얻어진다. 이들 데이터와 시프트 양은 임의 비트의 시프트가 가능한 베렐 시프터(302)에 각각 입력된다. 이 베렐 시프터(302)에 의해 고정소수점의 나눗셈을 행할 수 있다.
이들 시프트된 결과의 하위 16비트만을 각각 얻어내어, 범용버스(207)로 출력하고, 64비트 폭 데이터로서 1개의 레지스터에 팩(Pack)할 수 있다.
다음으로 본 발명의 특징을 살려서, 도 12, 도 13에 나타내어지는 바와 같은 데이터 언팩(Unpack) 명령을 정의한다. 이 데이터 언팩 명령은 1개의 레지스터 내 SIMD 데이터를 복수의 레지스터로 분할하여 저장하는 명령이다. 도 12는 16비트 데이터를 취급하는 경우, 도 13은 8비트 데이터를 취급하는 경우를 고려하여 정의했다.
도 12에서는 64비트의 데이터를 16비트마다 분할, 분할된 데이터를 64비트로 부호확장하여 라이트 레지스터에 기입하는 오퍼레이션 코드를 나타내고 있다. 도 13에서는 도 12와 비교하여, 8비트 데이터를 취급하기 위해서, 기입 라이트 레지스터 수가 2배로 이루어지고 있다.
이 명령을 실현하기 위한 회로구성을 도 14를 이용하여 상세히 설명한다.
레지스터 지정 필드 1(오퍼런드 코드 m)로 나타내어지는 레지스터 내의 SIMD 데이터가 범용버스(206)를 통하여 전송된다.
이 도 14에서는 16비트 데이터로 분할하는 경우를 나타내어 있지만, 범용버스(206)를 통하여 보내어진 데이터는 16비트마다 분할되고, 각각 별도의 부호확장 기(400)에 입력되며, 64비트 데이터로 부호확장되어 버스(207과 210)로 출력된다. 이상의 조작으로 데이터 언팩 기능을 실현할 수 있다.
또한, 본 발명의 특징을 살려 도 15와 같은 교체명령을 정의한다. 도 15에서는 4개의 지정된 레지스터 내 SIMD 데이터를 읽어내고, 요소마다 지정된 병렬 교체를 행하며, 지정된 레지스터에 병렬 교체를 한 SIMD 데이터를 저장하기 위한 오퍼레이션 코드를 나타내고 있다.
일반적으로 「병렬 교체명령」은 행렬의 전치나 회전, FFT의 버터플라이(butterfly) 연산 등에 유효하고, 구체적인 동작은 도 16에 나타낸다.
종래의 병렬 교체명령에서는 예컨대 16 비트 X 4 개의 SIMD 데이터 2개에 대하여 병렬 교체 조작을 행하면 결과저장용에 64비트 폭 레지스터 2개를 필요로 하지만, 데스티네이션 레지스터로서 1개밖에 지정할 수 없기 때문에, 병렬 교체결과의 상위 비트 부분용과 하위 비트 부분용에 각각 별개의 명령을 준비하고 있다.
본 정의에 의한 병렬 교체명령은 1개의 레지스터 지정 필드에서 복수 레지스터를 지정할 수 있는 특징으로부터 도 16과 같이 4개의 소스 데이터에 대하여 한번에 상위 비트부와 하위 비트부의 병렬 교체조작을 행할 수 있어, 2조분을 동시에 연산할 수 있다.
도 17에 구체적인 기능구성도를 나타낸다. 범용버스(206과 307)의 버스를 통하여 전송되는 소스 데이터 2조는, 각각 16비트폭으로 분할 되고 병렬 교체조작이 행해지며 그 결과를 207과 210의 버스로 출력하여, 레지스터에 기입된다.
또, 복소수 데이터와 같은 경우, 로드한 데이터에는 실수와 허수가 번갈아서 존재하는 하는 것이 많고, 연산에는 실수 데이터만, 허수 데이터만의 데이터 열을 필요로 하는 것이 많다.
그와 같은 경우, 본 발명의 SIMD 프로세서이면, 본 실시예에서는, 최대로 8개의 SIMD 데이터를 동시에 읽어들일 수 있기 때문에, 16비트 데이터라면 32개의 데이터 사이에서 병렬 교체조작을 행하여, 한번에 16 데이터분의 결과를 구할 수 있다.
상기와 같이 복소수 데이터를 취급하는 처리를 행하기 위해서는, 도 18, 도 19로 나타내어진 바와 같은 명령을 정의하면 좋다.
도 18에서는 8개의 지정된 레지스터 내 SIMD 데이터를 읽어내어, 각 요소를 오른쪽 끝부터 세어서 1ㆍ2ㆍ3ㆍ4로 할 때, 1과 3의 데이터 요소만을 추출하여, 지정된 레지스터에 저장하는 처리를 나타내는 오퍼레이션 코드를 나타내고 있고, 도 19에서는 SIMD 데이터를 읽어낸 후, 2와 4의 데이터 요소만을 추출하여, 지정된 레지스터에 저장하는 처리를 나타내는 오퍼레이션 코드를 나타내고 있다.
구체적으로는 도 20에 나타내는 바와 같은 처리이고, 이 경우는 각 레지스터 내 데이터의 63비트 번째 ~ 48 비트 번째의 데이터와, 31 비트 번째 ~ 16 비트 번째의 데이터의 추출이다.
동작의 상세를 도 21의 회로구성도로 설명하면, 범용버스(206과301, 307과501)의 버스를 통하여 전송되는 SIMD 데이터 8조 32개는, 각각 필요한 16비트 데이터만 추출되어, 결과를 범용버스(207과 210)의 버스로 출력함으로서 실현한다.
최후로, 본 발명의 특징을 살리어, 도 22로 나타내어진 바와 같은 적화연산( 積和演算)을 정의한다.
도 22에서는 2개의 지정된 레지스터 내 SIMD 소스 데이터를 읽어내어 4개의 누적화의 기초로 되는 레지스터 내 데이터를 다시 읽어 내고, 누적화의 계산을 한 후, 지정된 4개의 레지스터에 SIMD 데이터를 저장하는 처리를 나타내는 오퍼레이션 코드를 나타내고 있다.
일반의 곱셈에서는 승수 및 피승수의 비트 폭에 대하여, 얻어지는 결과는 2배의 비트폭을 갖기 때문에 16 비트 폭의 데이터를 4개로 유지하고 있는 SIMD형 64 비트 데이터로서는 연산결과를 저장하기 위해서 128 비트폭의 레지스터가 필요하게 된다. 현실적 해결책으로서는 SIMD의 병렬성을 희생하여, 64 비트폭 레지스터의 하위 32 비트에만 유효한 데이터를 저장하고, 결과를 64 비트에 넣는 방법이 많이 이용되고 있다. 그러나 누적화를 취하는 경우, 다시 결과의 비트폭이 증가할 가능성이 있어 상기 방법에서도 연산정밀도가 떨어져 버린다.
DSP에서는 16비트 X 16비트의 적화연산으로써 저장용에 40비트 레지스터를 준비하는 등 하여 연산의 정밀도를 가지는 연구가 이루어지고 있다.
그러나 본 발명의 특징을 살리면, SIMD의 병렬성을 손상하는 것 없고, 정밀도의 떨어짐 없이 적화연산을 실행할 수 있다.
도 22에서 정의한 적화연산명령의 구체적인 설명도를 도 23에, 회로구성도를 도 24에 나타낸다.
16비트 데이터 4개를 포함하는 SIMD 데이터는, 범용버스(206)와 버스(307)를 통하여 전송된다. 그들의 SIMD 데이터는, 16비트 데이터마다 분할되어, 각각 곱셈 기(700~703)에 입력되어, 704~707의 가산기로 출력된다. 누적화의 데이터는 범용버스(301)와 버스(501)를 통하여 전송되어, 704~707의 가산기로 입력된다. 이들의 누적화 연산의 결과는 저장용의 범용버스(207)와 버스(210)로 출력된다. 이와 같은 수단을 이용하여 정밀도를 떨어뜨림 없이, 또한 병렬성을 유지한 채로, SIMD 데이터의 적화연산을 실현할 수 있다.
이상 본 발명자에 의해 이루어진 발명을 실시형태에 따라서 구체적으로 설명하였지만, 본 발명은 그것에 한정되는 것은 아니고, 그 요지를 일탈하지 않는 범위에서 다양한 변경 가능한 것은 말할 필요도 없다.
예를 들어 도 1에서 셀렉터(204)는 4 입력에 대하여 3 출력의 셀렉터이지만, 이들을 트라이 스테이트 버퍼로 하여도 어떠한 문제도 없다.
데이터 팩 명령의 경우, 도 11에서는 4 입력 1출력이지만, 입력은 몇 개라도 좋으며, 또 출력개수도 제한되는 것은 아니다.
더욱이 데이터 언팩 명령의 경우, 레지스터 내의 SIMD 데이터의 형에 의해 분할하는 수를 결정하기 때문에, 도 14와 같이 4 개로 한정되는 것도 아니다.
본원에서 개시된 발명 중 대표적인 것에 의해 얻어지는 효과를 간단히 설명하면 아래와 같다.
즉, 본 발명에 의한 SIMD 프로세서는, SIMD 연산의 효과를 방해하는 레지스터 내 데이터 정렬연산의 고속화를 실현할 수 있고, 더욱이 DSP 적인 적화연산을 실현할 수 있다.
구체적인 효과는 이하에 들은 점이다.
(1) 본 발명에 의해 정의된 데이터 팩 명령을 도입함으로서, 개별적으로 저장되어 있는 데이터를 모아, SIMD 명령으로 효율적으로 데이터 처리를 행할 수 있다.
본 실시예의 경우(16비트 데이터 4개의 팩)를 도 25에 나타낸다. 도면 중의 A는 현재모양의 경우의 프로그램예이고, B가 신규의 데이터 팩 명령을 채용한 경우이다.
B 중의 「pack. w」를 데이터 팩 명령의 니모닉(mnemonic)으로 한다. 이 A와 B의 프로그램예와 같이 데이터 팩 명령을 채용함으로써, 명령 스텝을 1/4로 삭감할 수 있다.
(2) 본 발명에 의해 정의된 데이터 언팩 명령을 도입함으로써, 빠른 레지스터의 초기화나, 데이터의 분할을 행하여 SIMD 처리가 효율적이지 않은 부분에 대하여도, 연산효율이 떨어지지 않도록 할 수 있다.
본 실시예의 경우(1개의 레지스터에 존재하는 16비트 데이터 4개를 4개의 레지스터에 언팩)를 도 26에 나타낸다.
도면 중의 A가 종래의 병렬 교체명령을 이용하여 데이터 팩하는 경우의 프로그램 예이며, B가 신규 데이터 언팩 명령을 채용한 경우의 것이다. 도 26부터도 알 수 있듯이, 신규 명령의 추가에 의해서, 명령 스텝 수를 1/6에까지 삭감할 수 있다.
(3) 본 발명에 의해 정의된 데이터 병렬 교체명령을 도입함으로써, 레지스터 내 SIMD 데이터의 병렬 교체를 고속으로 행할 수 있고, 적화연산 등의 SIMD 처리에 지체 없이 데이터를 공급할 수 있다.
본 실시예의 경우를 도 27에 나타낸다. 도면 중의 A가 종래의 병렬 교체명령을 이용한 경우의 프로그램예이고, 도면 중의 B가 신규의 병렬 교체명령을 채용한 경우의 프로그램 예이다. 이 도면 27로부터 분명한 바와 같이, 명령 스텝 수를 1/8에까지 삭감할 수 있다.

Claims (16)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 각각에 레지스터 번호가 부여되어 있는 복수의 레지스터로 구성되고, 각 레지스터가 오퍼랜드 데이터 및 연산결과 데이터중의 적어도 하나를 저장하는 레지스터 화일과,
    복수의 연산파이프이며, 각 연산파이프는, 복수의 오퍼랜드 데이터에 관해서 1 종류의 연산을 다른 것과 병행해서 실행하고, 연산결과 데이터를 생성하는 연산파이프와,
    명령코드의 제1의 레지스터 지정필드를 디코드하는 제1 디코더이며, 상기 제1의 레지스터 지정필드는 제1의 레지스터 번호를 지정하는 필드이고, 상기 제1 디코더는, 상기 제1의 레지스터 지정필드에 의거해서 연속번호로 되는 복수의 소스레지스터의 번호를 지정하는 신호를 생성하는 제1의 디코더와,
    상기 명령코드의 제2의 레지스터 지정필드를 디코드하는 제2디코더이며, 상기 제2의 레지스터 지정필드는 제2의 레지스터 번호를 지정하는 필드이며, 상기 제2디코더는, 상기 제2의 레지스터 지정필드에 의거해서 연속번호로 되는 복수의 결과레지스터의 번호를 지정하는 신호를 생성하는 제2 디코더와,
    지정된 소스레지스터 번호에 대응하는 소스레지스터에 저장되는 오퍼랜드 데이터를 적어도 하나의 상기 연산파이프에 보내고, 상기 적어도 하나의 연산파이프가 다른 것과 병행하여 연산을 실행시키고, 적어도 하나의 연산파이프로부터 얻어지는 연산결과 데이터를 지정된 결과레지스터 번호에 대응하는 결과레지스터로 보내는 제어회로를 포함하는 것을 특징으로 하는 프로세서.
  10. 제9항에 있어서,
    상기 복수의 레지스터는, 복수의 뱅크로 분할되어 있으며, 병렬하여 데이터를 리이드(read) 또는 라이트(write)를 하는 레지스터를 각 뱅크에 배치함으로써, 연속하는 상기 소스레지스터중의 상기 오퍼랜드 데이터 또는 연속하는 상기 결과레지스터로의 상기 연산결과 데이터를 병렬하여 리이드 또는 라이트를 하는 것을 특징으로 하는 프로세서.
  11. 제9항에 있어서,
    리이드 레지스터 지정 필드수보다 많은 수의 상기 소스 레지스터로부터 데이터를 리이드하기 위하여, 상기 결과레지스터로의 기록 데이터수보다 많은 상기 소스레지스터로부터의 판독 데이터수에 대응 가능한 데이터 팩 연산은, 상기 결과레지스터 폭의 데이터를 생성하는 것을 특징으로 하는 프로세서.
  12. 제9항에 있어서,
    더욱이, 라이트 레지스터 지정 필드수보다 많은 수의 상기 결과 레지스터에 라이트하기 위하여, 상기 소스레지스터의 판독 데이터수보다 많은 상기 결과레지스터로의 기록 데이터수에 대응 가능한 데이터 언팩 연산은, 라이트를 복수회로 나누지 않고 병렬적으로 실행하는 것을 특징으로 하는 프로세서.
  13. 제9항에 있어서,
    라이트 레지스터 지정 필드수보다 많은 수의 상기 결과 레지스터에 라이트하기 위하여, 상기 소스 레지스터 폭의 입력 데이터를 입력하여, 입력 데이터 폭보다 넓은 데이터 폭의 출력을 행하는 연산을 실행하는 것을 특징으로 하는 프로세서.
  14. 각각에 레지스터 번호가 부여되어 있는 복수의 레지스터로 구성되고, 각 레지스터가 오퍼랜드 데이터 및 연산결과 데이터 중의 적어도 하나를 저장하는 레지스터 화일과,
    복수의 연산파이프이며, 각 연산파이프는, 복수의 오퍼랜드 데이터에 관해서 1 종류의 연산을 다른 것과 병렬하여 실행하고, 연산결과 데이터를 생성하는 연산파이프와,
    명령코드의 제1의 레지스터 지정필드를 디코드하는 제1 디코더이며, 상기 제1의 레지스터 지정필드는 제1의 레지스터 번호를 지정하는 필드이고, 상기 제1 디코더는, 상기 제1의 레지스터 지정필드에 의거해서 연속번호로 되는 복수의 소스레지스터의 번호를 지정하는 신호를 생성하는 제1 디코더와,
    상기 명령코드의 제2의 레지스터 지정필드를 디코드하는 제2 디코더이며, 상기 제2의 레지스터 지정필드는 제2의 레지스터 번호를 지정하는 필드이고, 상기 제2 디코더는, 상기 제2의 레지스터 지정필드에 의거해서 연속번호로 되는 복수의 결과 레지스터의 번호를 지정하는 신호를 생성하는 제2 디코더와,
    지정된 소스레지스터 번호에 대응하는 소스 레지스터에 저장되는 오퍼랜드 데이터를 당해 오퍼랜드 데이터의 수만큼 병렬하여 상기 복수의 연산파이프에 보내고, 상기 복수의 연산파이프의 각각이 다른 것과 병행해서 연산을 실행시키고, 상기 복수의 연산파이프로부터 얻어지는 연산결과 데이터를 지정된 결과레지스터 번호에 대응하는 결과 레지스터로 당해 연산결과 데이터의 수만큼 병렬하여 보내는 제어회로를 포함하는 것을 특징으로 하는 프로세서.
  15. 제14항에 있어서,
    상기 프로세서는, 더욱이
    상기 명령코드의 제3의 레지스터 지정필드를 디코드하는 제3 디코더이며, 상기 제3의 레지스터 지정필드는 제3의 레지스터 번호를 지정하는 필드이며, 상기 제3 디코더는, 상기 제3의 레지스터 지정필드에 의거해서 연속번호로 되는 복수의 제2의 소스레지스터의 번호를 지정하는 신호를 생성하는 바의 제3 디코더를 구비하고,
    상기 제어회로는, 지정된 소스 레지스터 번호에 대응하는 소스 레지스터에 저장되는 오퍼랜드 데이터를 당해 오퍼랜드 데이터의 수만큼 병렬하여 상기 복수의 연산파이프에 보내고, 지정된 제2의 소스 레지스터 번호에 대응하는 상기 제2의 소스 레지스터에 저장되는 제2의 오퍼랜드 데이터를 당해 제2의 오퍼랜드 데이터의 수만큼 병렬하여 상기 복수의 연산파이프에 보내고, 상기 복수의 연산파이프의 각각이 다른 것과 병행하여 연산을 실행시키고, 상기 복수의 연산파이프로부터 얻어지는 연산결과 데이터를 지정된 결과 레지스터 번호에 대응하는 결과레지스터로 당해 연산 결과 데이터의 수만큼 병렬하여 보내는 제어회로를 포함하는 것을 특징으로 하는 프로세서.
  16. 제14항에 있어서,
    상기 복수의 레지스터는, 복수의 뱅크로 분할되어 있으며, 병렬하여 데이터를 리이드 또는 라이트하는 레지스터를 각 뱅크에 배치함으로써, 연속하는 상기 소스레지스터중의 상기 오퍼랜드 데이터 또는 연속하는 상기 결과레지스터로의 상기 연산결과 데이터를 병렬하여 리이드 또는 라이트하는 것을 특징으로 하는 프로세서.
KR1020010050643A 2000-11-08 2001-08-22 복수 레지스터 지정이 가능한 simd 연산방식 KR100859044B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2000-00340239 2000-11-08
JP2000340239A JP3779540B2 (ja) 2000-11-08 2000-11-08 複数レジスタ指定が可能なsimd演算方式

Publications (2)

Publication Number Publication Date
KR20020035739A KR20020035739A (ko) 2002-05-15
KR100859044B1 true KR100859044B1 (ko) 2008-09-17

Family

ID=18815189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010050643A KR100859044B1 (ko) 2000-11-08 2001-08-22 복수 레지스터 지정이 가능한 simd 연산방식

Country Status (4)

Country Link
US (1) US7043627B2 (ko)
JP (1) JP3779540B2 (ko)
KR (1) KR100859044B1 (ko)
TW (1) TWI229287B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
JP3985797B2 (ja) 2004-04-16 2007-10-03 ソニー株式会社 プロセッサ
US7257695B2 (en) * 2004-12-28 2007-08-14 Intel Corporation Register file regions for a processing system
JP4478050B2 (ja) * 2005-03-18 2010-06-09 株式会社リコー Simd型マイクロプロセッサ及びデータ処理方法
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
KR100800552B1 (ko) * 2005-06-13 2008-02-04 재단법인서울대학교산학협력재단 벡터 메모리, 이를 구비한 프로세서 및 그 데이터 처리방법
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
US8417922B2 (en) * 2006-08-02 2013-04-09 Qualcomm Incorporated Method and system to combine multiple register units within a microprocessor
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US7962718B2 (en) * 2007-10-12 2011-06-14 Freescale Semiconductor, Inc. Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values
US8700884B2 (en) * 2007-10-12 2014-04-15 Freescale Semiconductor, Inc. Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
KR20120077164A (ko) 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
KR101918464B1 (ko) * 2011-09-14 2018-11-15 삼성전자 주식회사 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9268571B2 (en) 2012-10-18 2016-02-23 Qualcomm Incorporated Selective coupling of an address line to an element bank of a vector register file
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
CN112214244A (zh) * 2016-08-05 2021-01-12 中科寒武纪科技股份有限公司 一种运算装置及其操作方法
WO2020084694A1 (ja) * 2018-10-23 2020-04-30 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060040597A (ko) * 2003-06-16 2006-05-10 에이알엠 리미티드 단일 명령 복수 데이터 처리 시스템 내의 결과 분할

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03260727A (ja) 1990-03-09 1991-11-20 Mitsubishi Electric Corp レジスタ指定装置
JP2616182B2 (ja) * 1990-08-29 1997-06-04 三菱電機株式会社 データ処理装置
EP0640912B1 (en) 1993-08-31 2000-05-10 Sun Microsystems, Inc. Memory addressing scheme for increasing the number of memory locations available in a computer for storing higher precision numbers
JPH07200542A (ja) 1993-12-28 1995-08-04 Fujitsu Ltd ベクトル処理装置
CN1326033C (zh) 1994-12-02 2007-07-11 英特尔公司 可以对复合操作数进行压缩操作的微处理器
JP3790307B2 (ja) 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US6463525B1 (en) * 1999-08-16 2002-10-08 Sun Microsystems, Inc. Merging single precision floating point operands

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060040597A (ko) * 2003-06-16 2006-05-10 에이알엠 리미티드 단일 명령 복수 데이터 처리 시스템 내의 결과 분할

Also Published As

Publication number Publication date
US7043627B2 (en) 2006-05-09
JP2002149400A (ja) 2002-05-24
KR20020035739A (ko) 2002-05-15
US20020026570A1 (en) 2002-02-28
TWI229287B (en) 2005-03-11
JP3779540B2 (ja) 2006-05-31

Similar Documents

Publication Publication Date Title
KR100859044B1 (ko) 복수 레지스터 지정이 가능한 simd 연산방식
US6922716B2 (en) Method and apparatus for vector processing
US6078941A (en) Computational structure having multiple stages wherein each stage includes a pair of adders and a multiplexing circuit capable of operating in parallel
US5864703A (en) Method for providing extended precision in SIMD vector arithmetic operations
EP1019805B1 (en) Data processing unit with digital signal processing capabilities
US7689811B2 (en) Method and apparatus for constant generation in SIMD processing
EP1692612B1 (en) A data processing apparatus and method for moving data between registers and memory
US7346881B2 (en) Method and apparatus for adding advanced instructions in an extensible processor architecture
KR20170109670A (ko) 엘리먼트 폭들을 변경시키는 명령들을 사용하여 가변 길이 벡터들에 대해 연산하도록 구성된 벡터 프로세서
WO2001035224A1 (en) Bit-serial memory access with wide processing elements for simd arrays
JPH04172533A (ja) 電子計算機
GB2411975A (en) Arithmetic data processing apparatus for returning the high half of a result after data processing
US7308559B2 (en) Digital signal processor with cascaded SIMD organization
US9965275B2 (en) Element size increasing instruction
KR20070026434A (ko) 듀얼 경로 프로세서에서 제어 프로세싱용 장치 및 방법
Lee et al. 64-bit and Multimedia Extensions in the PA-RISC 2.0 Architecture
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
US20020065860A1 (en) Data processing apparatus and method for saturating data values
JP2001501001A (ja) データ処理システムにおける入力オペランド制御
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
JP3186095B2 (ja) 演算処理装置

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: 20120821

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130822

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee