KR100267091B1 - 비대칭싱글-칩이중멀티프로세서의정합및동기화 - Google Patents
비대칭싱글-칩이중멀티프로세서의정합및동기화 Download PDFInfo
- Publication number
- KR100267091B1 KR100267091B1 KR1019970012763A KR19970012763A KR100267091B1 KR 100267091 B1 KR100267091 B1 KR 100267091B1 KR 1019970012763 A KR1019970012763 A KR 1019970012763A KR 19970012763 A KR19970012763 A KR 19970012763A KR 100267091 B1 KR100267091 B1 KR 100267091B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- register
- vector
- instruction
- general purpose
- Prior art date
Links
- 230000009977 dual effect Effects 0.000 title abstract description 5
- 238000000034 method Methods 0.000 claims abstract description 40
- 238000012545 processing Methods 0.000 claims description 19
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 15
- 239000013256 coordination polymer Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000001343 mnemonic effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Image Processing (AREA)
- Multi Processors (AREA)
Abstract
다중 처리 장치의 동기화를 단순화시키는 통합 멀티 프로세서 구조가 개시되었다. 상기 다중 처리 장치는 일반용 프로세서 및 단일 명령 복수 데이터 방식을 갖는 벡터 프로세서로 구성되어 있다. 상기 벡터 프로세서 내의 모든 다중 병렬 처리 장치들은 명령을 동시적으로 처리하며 소프트웨어 동기화를 필요로 하지 않는다. 상기 일반용 프로세서는 상기 벡터 프로세서를 제어하며, 또한 상기 벡터 프로세서를 작동시키므로써 프로그램 플로우 내에 포크를 형성시킨다. 상기 두 개의 프로세서들은 제어 프로세서가 벡터 프로세서를 정지시킬 때까지 또는 예외 사항이 발생할 때까지, 또는 상기 벡터 프로세서가 그 프로그램을 완성하고 유휴 상태에 들어갈 때까지 병렬적으로 분리된 프로그램을 실행한다. 상기 양 프로세서가 접근할 수 있도록 상기 양 프로세서에 결합되어 있는 레지스터는 상기 벡터 프로세서가 작동 상태인지 유휴 상태인지를 나타내는 상태 비트를 저장한다. 일반용 프로세서는 상기 상태 비트를 폴링하는 루프를 실행하므로써 분리된 프로그램들을 동기화 시킨다. 상기 상태 비트가 상기 벡터 프로세서의 유휴 상태를 나타낼 때, 상기 일반용 프로세서는 벡터 프로세서로부터 나타난 결과들을 처리하며 상기 벡터 프로세서를 재가동 시킨다.
Description
본 발명은 1996년 8월 19일 자로 미합중국에 출원되어 현재 계류 중인 "멀티미디어 신호 프로세서의 단일 명령 복수 데이터 처리"의 부분연속출원이다. 본 발명은 멀티 프로세서에 관한 것으로서, 특히, 병렬적으로 실행되는 별개 프로그램 스레드(program thread)들을 정합화 또는 동기화 시키기 위한 시스템 및 방법에 관한 것이다.
멀티 프로세서들은 작업을 완성하기 위해 서로 협력 작동하는 복수의 프로세서들을 포함한다. 상대적으로 단순한 멀티 프로세서 시스템은 80386 프로세서와 같은 코-프로세서(co-processor) 및 80387 수학 코-프로세서와 같은 플로팅 포인트 프로세서(floating point process)를 포함하고 있다. 이러한 시스템에 있어서, 프로세서가 플로팅 포인트 작동을 필요로 하는 명령을 받았을 때, 상기 프로세서는 상기 명령을 실행하는 코-프로세서를 가동시킨다. 80387 프로세서와 같은 수학 코-프로세서들은 명령을 지시 받거나 플로팅 포인트 명령들 사이에서 유휴 상태에 있을 경우 단일 명령을 실행하는 데 많은 한계가 있다. 또한, 상기 코-프로세서들에 의해 제공되는 처리능력(processing power)을 증대시키는 데에도 많은 한계가 있다.
분리되어 실행되지만 프로그램 스레드들을 정합 시키는 두 개 또는 그 이상의 동일한 프로세서들을 포함하고 있는 다른 멀티 프로세서 방식도 사용되고 있다. 그러나, 이러한 멀티 프로세서 방식은 프로그램 스레드의 한 부분을 완성하기 위해 필요로 하는 시간들이 가변적이기 때문에 프로그램 스레드들을 정합 또는 동기화 상태로 유지하는 것, 예컨대, 프로그램 스레드들 사이에 결과들을 통과시키는 것이 어렵게 된다.
예컨대, 캐시 히트(cache hit) 및 미스(misses) 그리고 명령 종속 등의 변수들이 실행 경로를 지연시킬 수 있으며 명령을 완성하는 데 필요한 사이클의 수를 변화시킬 수 있다. 따라서, 다른 프로그램 스레드들에서의 명령 시퀀스가 종종 서로 동기화 되지 않는 문제가 발생한다.
적절한 동기화를 유지하기 위해서, 프로그램 스레드들이 서로 동기화될 수 있도록 프로세서 사이에 연결된 하드웨어가 프로세서들을 지연시키거나 유휴시키게 된다. 복수 개의 동일 프로세서를 갖는 시스템들에 있어서, 각각의 프로그램 스레드들은 스스로를 지연시키거나 다른 프로그램들을 지연시키는 역할을 한다. 이러한 시스템들은 복잡한 동기화 하드웨어를 가지고 있는 경우가 많으며, 프로그램 스레드의 동기화 및 정합을 유지하기 위해 복잡한 소프트웨어를 필요로 한다. 이러한 복잡한 동기화 방식을 갖는 하드웨어는 통합 시스템 내의 칩의 크기를 대형화시킨다. 또한 복잡한 동기화는 소프트웨어의 발전을 더욱 장기화시키고 어렵게 만든다.
따라서, 고도의 처리 동력을 제공하며, 내장된 다수의 분리된 프로그램 스레드들이 호환성을 가질 수 있고, 단순한 방식으로 프로그램들을 동기화 또는 정합시킬 수 있는 멀티 프로세서 시스템에 대한 요청이 있어 왔다.
본 발명의 일 실시예에 따라, 두 개의 프로세서를 포함하는 비대칭 프로그램 제어형 통합 멀티 프로세서가 제공된다. 제어 프로세서로 명명되는 제 1 프로세서는 연속적으로 프로그램 스레드를 실행하며, 코-프로세서로서 명명되는 제 2 프로세서 상의 제 2 프로그램 스레드를 실행 또는 정지시킨다.
양 프로세서들은 동기화를 위한 통신을 용이하게 하는 확장 레지스터 세트를 공용한다. 상기 제어 프로세서는 나중에 가동되는 프로그램 스레드를 위하여 코-프로세서를 초기화할 수 있도록 코-프로세서의 레지스터들에 접근한다. 상기 코-프로세서는 회로를 가지지 않으며, 또한 제 1 프로세서의 제어 또는 접근을 위해 회로를 필요로 하지 않는다.
상기 프로세서들은 비대칭 명령 세트 및 구조들을 갖는다. 예컨대, 제어 프로세서는 코-프로세서의 레지스터를 판독하거나 기록하기 위한 명령어들, 상기 확장 레지스터들에 접근하기 위한 명령어들, 코-프로세서를 시동시키기 위한 명령어, 및 상기 코-프로세서를 중단시키기 위한 명령어를 실행한다. 상기 코-프로세서는 상기 확장 레지스터들에 접근하기 위한 명령들을 실행하지만, 상기 제어 프로세서의 레지스터들에는 접근할 수 없다. 프로그램 스레드를 종결하는 코-프로세서 명령은, 상기 확장 레지스터들 내에 상기 코-프로세서가 유휴 상태에 있다는 것을 나타내는 상태 플래그를 세팅시키므로써, 프로그램 스레드의 완성 신호를 인터럽트를 통해 상기 제어 프로세서에게 전송한다.
상기 제어 프로세서는 상기 확장 레지스터들을 폴링(polling)하거나, 상기 코-프로세서가 완성된 태스크(task)를 갖는 때를 판단하기 위하여 인터럽트 메카니즘(interrupt mechanism)을 사용한다. 또한, 상기 확장 레지스터 내의 동기화 플래그는 상기 제어 프로세서 또는 상기 코-프로세서에 의해 폴링되므로써, 다른 프로세서가 프로그램 스레드를 연속적인 실행하기 위한 필요 조건들을 갖추고 있는 지의 여부를 판단할 수 있게 한다.
폴링을 사용하므로써, 상기 제어 프로세서 및 코-프로세서는 상기 코-프로세서를 정지시키지 않고도 동기화될 수 있다. 확장 레지스터 내의 플래그를 테스트 및 세팅시킬 수 있는 특별 제어 프로세서 명령은 동기화를 위한 폴링을 용이하게 한다.
본 발명의 일 실시예에 따르면, 상기 제어 프로세서는 일반용 프로세서이고 상기 코-프로세서는 단일 명령 복수 데이터 방식을 갖는 벡터 프로세서이다. 본 발명은, 동기화 기능을 실행할 때 비효율적으로 나타났던 계산 능력을 상기 벡터 프로세서에 의해 고도화시킬 수 있으며, 동기화를 실현시키는 제어 프로세서가 벡터 프로세서가 갖고 있는 데이터 경로 보다 좁은 데이터 경로를 가질 수 있기 때문에 매우 효율적이다.
본 발명에 따른 실시예의 이중 프로세서 구조는, 벡터 프로세서 내의 다중 처리장치를 사용하여 광범위한 데이터 경로도 처리할 수 있는 고도의 처리 능력을 제공하며, 두 개의 별개 프로그램 스레드가 호환성을 가질 수 있고, 제어 프로세서를 통해 우선적으로 공급되는 소프트웨어 동기화를 단순화시킬 수 있다.
도1 은 본 발명의 일 실시예에 따른 멀티 프로세서의 블록 다이어그램.
도2 는 본 발명의 일 실시예에 따른 제어 프로세서와 벡터 프로세서 사이의 인터페이스를 나타내는 블록 다이어그램.
도3 은 본 발명의 일 실시예에 따른 병렬 프로그램 스레드들을 동기화시키는 방법을 나타내는 플로우 다이어그램.
도4 는 본 발명의 일 실시예에 따른, 병렬 프로그램 스레드들 동기화시키는 다른 방법을 나타내는 플로우 다이어그램.
도 5a, 5b, 및 5c 는 도 1 의 멀티 프로세서용 병렬 소프트웨어 방식 및 순차 소프트웨어 방식을 나타내는 도면.
*도면의 주요 부분에 대한 부호의 설명*
100; 멀티 프로세서110: 일반용 프로세서
115; 확장 레지스터120; 벡터 프로세서
130; 캐시 서브시스템140: 시스템 버스
142; 시스템 타이머146: 비트 스트림 프로세서
148; 인터럽트 콘트롤러150; 시스템 버스
154; DMA콘트롤러156; 로컬 버스 인터페이스
180: 캐시 콘트롤244; 벡터 레지스터
245; 특수용 레지스터246; 병렬 처리장치
260; 명령 디코더270; 실행 데이터 경로
272; 레지스터 파일276; 처리장치
280; 기록 레지스터290; 판독 레지스터
이하, 첨부한 도면을 참조로 하여 본 발명의 바람직한 실시예를 상술하며, 도면 전체를 통하여 동일한 부분에는 동일한 도면부호를 사용하기로 한다.
본 발명의 일 실시예에 따른 멀티 프로세서는 병렬적으로 각각 분리된 프로그램 스레드를 실행하는 한 쌍의 프로세서를 포함한다. 실행의 제어 및 동기화는 비대칭적으로 이루어지며, 한 프로세서는 주 프로세서 또는 제어 프로세서로 되고 다른 프로세서는 종 프로세서 또는 피제어 프로세서로 된다. 상기 제어 프로세서는 연속적인 프로그램 스레드를 실행하는데, 상기 연속적인 프로그램 스레드는 상기 피제어 프로세서 상의 제 2 병렬 프로그램 스레드를 실행시키므로써 병렬 처리 명령을 내리게 된다.
상기 피제어 프로세서가 제 2 프로그램 스레드를 완료하고 유휴 상태에 있을 때, 상기 제 2 프로그램 스레드는 상기 프로그램 스레드에 조합된다. 상기 피제어 프로세서의 명령 세트는, 실행시 제 2 프로그램 스레드를 종료하고 중단 신호를 제어 프로세서에 전송하므로써 제 2 프로그램 스레드가 완료되었음을 나타내는 명령을 포함한다.
정보는 유통 경로를 통해 프로그램 스레드 사이를 통과할 수 있다. 상기 유통 경로는 다음과 같다: 프로세서들의 공용 어드레스 공간 및 메모리, 피제어 프로세서가 유휴 상태에 있을 때 제어 프로세서가 접근할 수 있는 피제어 프로세서의 레지스터 세트, 및 양 프로세서들에 접근할 수 있는 "확장" 레지스터.
상기 확장 레지스터의 일 예로는, 상기 피제어 프로세서에 의해 세팅되어 고유의 작동이 완료되었음을 나타내는 하나 이상의 플래그 비트가 있다. 또 다른 플래그 비트는 상기 피제어 프로세서가 우선적으로 시작된 태스크를 실행 중에 있는지 아니면 유휴 상태에 있는 지를 나타낸다. 상기 플래그 비트들을 사용하므로써, 상기 제어 프로세서의 프로그램 스레드는 대기 루프(wait loop)를 포함할 수 있다. 상기 대기 루프는 상기 피제어 프로세서로부터의 결과가 준비되어 있는 지의 여부를 판단하기 위하여 플래그 비트를 폴링한다. 상기 피제어 프로세서는 일반적으로 자신의 고유 프로그램 스레드 내에 소프트웨어 동기화를 필요로 하지 않는다. 따라서, 소프트웨어의 동기화는 매우 작은 오버 헤드(overhead) 만이 필요시 된다.
도 1 은 본 발명의 일 실시예에 따른 멀티 프로세서(100)의 블록 다이어그램을 보여주고 있다. 멀티 프로세서(100)는 일반용 프로세서(110) 및 모놀리틱(monolithic) 반도체 칩에 통합되는 벡터 프로세서(120)를 포함한다. 일반용 프로세서(110)와 벡터 프로세서(120)는 SRAM(160, 190), ROM(170) 및 캐시 제어부(180)를 갖는 캐시 서브시스템(130)을 통해 멀티 프로세서(100)의 다른 온칩(on-chip) 요소에 연결되어 있다. 멀티 프로세서(100)는 SRAM(160)을 일반용 프로세서(110)용 명령 캐시(162) 및 데이터 캐시(164)의 형태로 배열하며, SRAM(190)을 벡터 프로세서(120)용 192 및 194로서 배열한다. SRAM(160, 190)의 부품들은 스크래치 패드 메모리를 일반용 프로세서(110) 및 벡터 프로세서(120)의 공용 어드레스 공간 내에 교차적으로 형성시킨다.
온칩 ROM(170)은 일반용 프로세서(110) 및 벡터 프로세서(120)를 위한 데이터 및 펌웨어(firmware)를 가지며, 캐시로서 접근될 수 있다. ROM(170)은 일반적으로 리셋 및 초기화 절차, 셀프-테스트 진단 절차, 그리고 인터럽트 및 예외 처리물들을 포함하고 있다. 본 발명의 일 실시예에 있어서, 멀티 프로세서(100)는 멀티미디어에서 신호 처리를 위해 사용되는 것이며, 본 명세서에서는 멀티미디어 신호 프로세서 또는 MSP로서 명명되기도 할 것이다.
본 발명의 일 실시예에 따르면, ROM(170)은 사운드 카드 에뮬레이션을 위한 서브루틴, 모뎀 신호 처리를 위한 서브루틴, 일반 전화 기능을 위한 서브루틴, 2-D 및 3-D 그래픽 서브루틴 라이브러리, 및 MPEG-1, MPEG-2, H. 261, H. 263, G. 728, 그리고 G. 723 등과 같은 오디오 및 비디오 엔코딩 및 디코딩 규격을 위한 서브루틴 라이브러리를 추가로 포함한다.
1996년 8월 19일 미합중국 특허청에 출원된 "멀티 미디어 신호 프로세서에서의 멀티 프로세서 작동"이라는 제하의 발명은 멀티 미디어에서 멀티 프로세서를 사용하는 것을 추가로 기재하고 있다. 상기 발명의 전체적인 내용은 본 명세서에 참조로 기재된다.
캐시 서브시스템(130)은 일반용 프로세서(110)와 벡터 프로세서(120)를 두 개의 시스템 버스(140,150)에 연결하며, 일반용 프로세서(110), 벡터 프로세서(120), 및 상기 두 개의 시스템 버스(140,150)에 결합된 장치를 위한 캐시 및 스위칭 스테이션으로서 작동한다. 시스템 버스(150)는 시스템 버스(140)보다 높은 클럭 주파수로 작동한다. 시스템 버스(150)는 각각 외부 로컬 메모리를 위한 인터페이스를 제공하는 메모리 콘트롤러(158), 로컬 버스 인터페이스(156), DMA(direct memory access) 콘트롤러(154), 및 장치 인터페이스(152), 그리고 호스트 컴퓨터의 로컬 버스, 직접 메모리 접근, 및 A/D, D/A 변환기 등과 같은 고속 장치들에 연결되어 있다. 시스템 타이머(142), UART(universal asynchronous receiver transceiver)(144), 비트 스트림 프로세서(146), 및 인터럽트 콘트롤러(148)와 같은 저속 장치들은 시스템 버스(140)에 연결되어 있다. 본 발명에 참조로 기재되는 "멀티 미디어 신호 프로세서에서의 멀티 프로세서 작동"이라는 제목의 발명에는, 상기 캐시 서브시스템(130)의 작동 그리고 일반용 프로세서(110) 및 벡터 프로세서(120)가 캐시 서브시스템(130)과 시스템 버스(140) 및 시스템 버스(150)를 통해 접근하는 예시 장치들에 대하여 상세히 기술되어 있다.
1996년 8월 9일 미합중국에 출원된 "비디오 데이터 처리용 장치 및 방법"이라는 제하의 발명은 MPEG 규격에 일치하여 가변적인 길이를 갖는 비트 스트림을 엔코딩 및 디코딩하기 위한 비트 스트림 프로세서(146)을 개시하고 있다. 상기 발명 역시 그 전체적인 내용이 본 명세서에 참조로서 기재된다.
일반용 프로세서(110) 및 벡터 프로세서(120)는 분리된 프로그램 스레드를 실행하며, 고유한 태스크를 보다 효과적으로 실행할 수 있도록 서로 다른 구조를 가지고 있다. 일반용 프로세서(110)는 실시간(real-time) 작동 시스템, 일반용 프로세서(110) 및 벡터 프로세서(120)를 위한 예외 루틴, 및 많은 반복 계산이 필요치 않는 공정들을 우선적으로 실행한다. 일반용 프로세서(110)는 또한 벡터 프로세서(120)의 초기화, 시작, 및 정지를 제어한다. 벡터 프로세서(120)는 멀티 미디어 공정에 상용되는 데이터 블록 상에서 반복 처리하는 것을 포함하는 수처리 작업을 주로 실행한다.
도 2 는 일반용 프로세서(110)와 벡터 프로세서(120)사이의 상호작용을 예시하는 블록 다이어그램을 보여주고 있다. 일반용 프로세서(110)는 제어 로직을 갖는 명령 디코더(260), 실행 데이터 경로(270), 기록 레지스터(280), 및 판독 레지스터(290)를 포함한다. 일반용 프로세서(110)는 일반적인 스칼라 데이터 값을 갖는다. 도 2 의 실행 데이터 경로(270)에서, 레지스터 파일(272)은 32비트 데이터 레지스터 세트 및 상태 레지스터 세트를 포함하며, 처리 장치(276)는 32비트까지의 크기를 갖는 오퍼랜드를 조작하기 위한 32비트 버스를 갖는다.
실시예에 있어서, 일반용 프로세서(110)는 40MHz에서 작동하며 ARM7 프로세서의 구조에 부합하는 32비트 RISC 프로세서이다. ARM7 RISC 프로세서의 구조 및 명령 세트는 어드밴스 리스크 머쉰 주식회사(Advance RISC Machines Ltd.)로부터 입수 가능한 문서번호 ARM DDI 0010G인 "ARM7DM 데이터 시트"에 자세히 기재되어 있다. 상기 ARM7DM 데이터 시트는 본 명세서에 참조로서 기재된다. 별첨 A는 일반용 프로세서(110)와 벡터 프로세서(120)사이의 상호 작용 또는 실시예에 기재된 캐시 서브시스템(130)을 위한 ARM7 명령의 확장자를 나타내고 있다.
도 2 의 실시예에서, 벡터 프로세서(120)는 SIDM(single instruction multiple data) 구조를 가지며, 명령 인출 장치(instruction fetch unit)(210), 디코더(220), 스케줄러(230), 실행 데이터 경로(240), 및 적재/저장 장치(LSU)(250)를 포함한다. 명령 인출 장치(210)는 명령들 및 브랜치와 같은 프로세스 플로우 제어 명령을 인출한다. 디코더(220)는 명령 인출 장치(210)로부터 도착하는 순서에 따라 사이클 당 하나의 명령을 디코드하며, 스케줄러(230)내의 FIFO(234)에 전달되는 명령에 의해 디코드되는 필드값을 기록한다. 스케줄러(230)내의 이슈 콘트롤 로직(232)은 작동을 완료하기 위하여 실행 데이터 경로(240) 및 적재/저장 장치(LSU; 250)에 기록되는 필드값을 선별한다. 실행 데이터 경로(240)는 벡터 데이터 또는 스칼라 데이터를 조작하는 논리/산술 명령을 실행한다. 적재/저장 장치(LSU)(250)는 일반용 프로세서(110) 및 벡터 프로세서(120)의 공용 어드레스 공간에 접근하는 적재/저장 명령을 실행한다. 예외 콘트롤 로직(215)은 명령 인출 장치(210), 디코더(220), 및 스케줄러(230)에 결합되어 있으며, 벡터 프로세서 명령의 디코딩 또는 실행이 예외사항을 야기하는 경우 일반용 프로세서(110)에 인터럽트를 인가한다.
실시예에 있어서, 실행 데이터 경로(240)는 8개의 32비트 플로팅 포인트 장치, 8개의 36비트 정수 승산기, 및 8개의 36비트 산술 논리 장치(ALUs)를 포함하는 병렬 처리 장치(246)를 갖는다. 각각의 36비트 정수 승산기는, 36비트 데이터 요소 상에서 한번의 연산을 수행할 수 있으며, 16비트 데이터 요소 상에서 두 번의 연산을 동시적으로 수행할 수 있고, 8비트 또는 9비트 데이터 요소 상에서 네 번의 연산을 동시적으로 수행할 수 있다. 병렬 처리 장치(246)는 288비트 벡터 오퍼랜드 및 32비트 스칼라 오퍼랜드를 처리한다. 실행 데이터 경로(240)를 위한 레지스터 파일(242)은 벡터 레지스터(244)를 가지고 있다. 벡터 프로세서(120)내의 대부분의 데이터 경로는, 32개의 8비트 또는 9비트 데이터 요소들, 16개의 16비트 요소들 또는 8개의 32비트 요소들의 동시적인 조작을 지지하기 위하여 288 또는 576 비트의 폭을 갖는다. SIMD 구조에 의해, 벡터 프로세서(120)내의 병렬 처리 장치(246)는 동일한 명령을 동시적으로 실행하고 완료할 수 있다.
벡터 프로세서(120)는 실시예에서 80MHz로 작동하는 파이프 라인식 RISC엔진으로 구성되어 있다. 벡터 프로세서(120)의 레지스터들은, 특수용 레지스터(245), 복귀 어드레스 스택(도시안됨), 32비트 스칼라 레지스터(243), 두 뱅크로된 벡터 레지스터(244), 및 두 개의 더블-사이즈(즉, 576비트) 벡터 어큐물레이터 레지스터(도시안됨)를 포함한다. 레지스터 파일(242)은 0 내지 31의 범위를 갖는 5비트 레지스터의 수에 의해 명령어들 내에서 식별되는 32개의 스칼라 레지스터, 및 32개의 벡터 레지스터의 두개의 뱅크 내로 편제되는 64개의 288비트 벡터 레지스터를 포함한다.
각각의 벡터 레지스터는 1비트 뱅크 수(0 또는 1) 및 0 내지 31의 범위를 갖는 5비트 벡터 레지스터 수에 의해 식별된다. 대부분의 명령어들은 벡터 프로세서(120)의 특수용 레지스터(VCSR)에 저장되어 있는 제어 비트(CBANK)에 의해 표시되는 바와 같이 가동 중인 뱅크 내의 벡터 레지스터에만 접근할 수 있다.
제 2 제어 비트(VEC64)는 설정값(default)에 의한 레지스터 수가 각각의 뱅크로부터 하나의 레지스터를 포함하는 더블 사이즈 벡터 레지스터를 나타내고 있는 지의 여부를 표시한다. 명령어 구문들은 벡터 레지스터를 나타내는 레지스터 수를 스칼라 레지스터를 나타내는 레지스터 수로부터 구별한다. 또한 명령어 구문들은 벡터 레지스터를 나타내는 레지스터 수를 특수용 레지스터를 나타내는 레지스터 수로부터 구별한다.
벡터 레지스터(244)는 각각 프로그래밍할 수 있는 크기의 데이터 요소로 분할될 수 있다. 예컨대, 288비트 벡터 레지스터는 32개의 8비트 또는 9비트 정수 데이터 요소, 16개의 32비트 정수 데이터 요소, 또는 8개의 32비트 정수 데이터 요소, 또는 32개의 플로팅 포인트 데이터 요소를 보유할 수 있다. 더블-사이즈 레지스터의 형태로 논리 결합되어 있는 두개의 벡터 레지스터는 2배 정도의 데이터 요소를 갖는 벡터를 저장할 수 있다.
본 발명의 실시예에 따르면, 세팅 제어 비트 VEC64는 벡터 프로세서(120)를 더블 사이즈(576비트)가 벡터 레지스터용 설정값으로 되는 모드 VEC64에 위치시킨다. 1996년 8월 19일 미합중국 특허청에 출원된 "멀티미디어 신호 프로세서에서의 단일 명령 복수 데이터 처리방식"이라는 제목의 발명은 본 실시예의 벡터 프로세서(120)에 관련된 구조 및 명령어 세트를 추가로 설명하고 있다. 상기 발명은 본 명세서에서 참고로 기재될 것이다.
멀티 프로세서(100)는 또한 일반용 프로세서(110)와 벡터 프로세서(120)에 접근 가능한 32비트 확장 레지스터(115) 세트를 포함한다. 확장 레지스터(115)는 특권 확장 레지스터 및 사용자 확장 레지스터를 포함한다. 상기 특권 확장 레지스터는 멀티 프로세서(100)를 위한 일반적인 작동모드를 제어하거나 또는 표시해 준다. 상기 사용자 확장 레지스터는 일반용 프로세서(110) 및 벡터 프로세서(120)에 의해 실행되는 프로그램 스레드를 동기화시키는 레지스터를 포함한다. 실시예에 있어서, 상기 사용자 확장 레지스터는 벡터 프로세서 상태 플래그(VPSTATE) 및 동기화 플래그(VASYNC)를 포함한다.
상기 상태 플래그(VPSTATE)는 두개의 값(VP_RUN 및 VP_IDLE)을 가지며 벡터 프로세서(120)가 프로그램 스레드를 실행하고 있는지 유휴 상태인지의 여부를 나타낸다. 실시예에 있어서, 벡터 프로세서(120)는 확장 레지스터(VASYNC)를 그 자신의 특수용 레지스터로서 보며, 벡터 프로세서 명령어들, 예컨대 VMOV와 같은 명령어는 레지스터(VASYNC)를 판독 또는 기록하기 위한 접근을 가능하게 한다. 다른 명령어들은 특수용 확장 레지스터에 반드시 접근하도록 되어 있다.
예컨대, VCINT 또는 VCJOIN와 같은 명령어, 또는 예외(exception)를 발생시키는 여타의 명령어들은 예외를 위해 프로그램 스레드가 완료되거나 또는 정지되었을 경우, 상태 플래그(VPSTATE)를 VP_IDLE 상태로 변화시킨다. 확장 레지스터의 벡터 프로세서 상태 플래그(VPSTATE) 및 동기화 플래그(VASYNC)는 일반용 프로세서(110) 및 벡터 프로세서(120)가 레지스터를 동시적으로 판독할 수 있도록 두개의 포트를 가지고 있다.
벡터 프로세서(120)가 VP_IDLE 상태에 있을 때, 일반용 프로세서(110)는 벡터 프로세서(120)의 스칼라 레지스터 및 특수용 레지스터를 판독 또는 기록할 수 있다. 그러나, 벡터 프로세서(120)가 VP_RUN 상태에 있는 동안, 벡터 프로세서(120)의 레지스터를 판독 또는 기록하는 일반용 프로세서(110)의 결과값들은 명확하지 않다. 일반용 프로세서(110)용 ARM7 명령어 세트의 확장자는 확장 레지스터(115)에 접근하는 명령어(MFER 및 MTER) 및 벡터 프로세서(120)의 스칼라 레지스터 및 특수용 레지스터에 접근하는 명령어(MFVP 및 MTVP)를 포함한다.
조건 명령어(TESTSET)는 확장 레지스터를 판독하며, 기존의 조건이 만족된 상태일 경우, 확장 레지스터의 비트 30을 1로 세팅한다. 명령어(TESTSET)는, 동기화 포인트를 나타낼 수 있도록 벡터 프로세서(120)에 의해 소거되는 값을 판독하고, 다음 동기화 포인트를 준비할 수 있도록 비트 30을 리세팅시키므로써, 사용자/생산자 동기화를 용이하게 한다.
일반용 프로세서(110)는 명령어 STARTVP 및 INTVP를 실행하여 벡터 프로세서(120)를 가동 및 정지시킬 수 있으며, 상기 언급되었던 바와 같이, 벡터 프로세서(120)의 스칼라 레지스터 및 특수용 레지스터에 접근할 수 있다. 이와는 대조적으로, 벡터 프로세서(120)는 일반용 프로세서(110)를 가동 및 정지시킬 수 없으며, 일반용 프로세서(110)의 레지스터에 접근할 수 없다. 이러한 일반용 프로세서(110) 및 벡터 프로세서(120) 사이의 비대칭적 제어 분할은 일반용 프로세서(110) 및 벡터 프로세서(120)의 동기화를 단순하게 만든다.
본 발명의 일면에 따르면, 벡터 프로세서(120)는 유휴상태로 될 때마다 일반용 프로세서(110)에 인터럽트 요청신호를 발생시킨다. 예컨대, 일반적인 프로그램 스레드의 말미에서, 벡터 프로세서(120)는, 인터럽트 요청신호를 발생시키며 벡터 프로세서(120)를 VP_IDLE 상태로 만드는 명령어(VCJOIN 또는 VCINT)를 실행한다. 일반용 프로세서(110)는 결과를 전송하고 벡터 프로세서(120)를 재가동시키기 위하여 인터럽트 조작 루틴을 사용할 수 있다. 따라서, 인터럽트 조작자는 일반용 프로세서(110) 및 벡터 프로세서(120)를 동기화시킬 수 있다.
1996년 8월 19일자로 미합중국 특허청에 출원된 "인수의 수수(Argument Passing) 및 소프트웨어 인터럽트를 조종하기 위한 시스템 및 방법" 이라는 제목의 발명과 "비대칭 멀티 프로세서에서 인터럽트 및 예외 사상(event)을 조종하기 위한 시스템 및 방법" 이라는 제목의 발명은 본 발명의 실시예에 기재되어 있는 바와 같은 예외 및 인터럽트의 처리에 대해 기술하고 있다. 상기 발명의 전체적인 내용은 본 명세서에서 참조로 기재된다.
폴링 프로세스는 인터럽트 조작을 대신하여 동기화하는데 사용된다. 도 3 은 본 발명의 일 실시예에 따른 이중 스레드 프로세스 300의 일례를 보여주는 흐름도이다. 벡터 프로세서(120)에서 프로그램 스레드를 시작하기 전에 상기 일반용 프로세서(110)는, 레지스터(VPSTATE)의 값을 결정하는 단계 310 및 320을 구비하는 대기 루프 315를 실행함으로써 상기 벡터 프로세서(120)가 작동 상태에 있는지 또는 유휴 상태에 있는지를 결정한다. 상기 멀티 프로세서(100)가 작동되기 시작하거나 리셋된 후에 그리고 상기 벡터 프로세서(120)가 예외 상황을 발생시키는 명령을 실행한 후에 상기 벡터 프로세서(120)는 유휴 상태가 된다.
"멀티 프로세서에서 효과적으로 내용을 저장 및 복구하는 방법"이란 명칭으로 1996년 8월 19일에 미합중국에 특허 출원된 발명은 프로세서(110,120)에서 사용 가능한 내용 변경 방법을 개시하며, 전체적으로 본원에서 참조된다. 상기 내용 저장 방법에서, 벡터 프로세서(120)는 확장 레지스터(VIMSK)의 플래그 비트(CSE)가 세팅되면 내용 저장 서브루틴으로 넘어가는 조건부 내용 저장 명령어(VCCS)를 주기적으로 실행한다. 상기 내용 저장 서브루틴이 종결될 때, 상기 벡터 프로세서(120)는 명령어(VSCINT 또는 VCJOIN)를 실행하고 VP_IDLE 상태로 들어갈 수 있다. 따라서, 바람직한 내용 저장 방법에서는 일반용 프로세서(110)가 플래그 비트(CSE)를 세팅하고 벡터 프로세서(120)가 대기 루프 315에서와 마찬가지로 유휴 상태가 되기를 기다린다.
일반용 프로세서(110)는 대기 루프 315에서 대기하며, 상기 벡터 프로세서(120)가 유휴 상태가 될 때까지 확장 레지스터(VPSTATE)를 계속하여 폴링한다. 일단 상기 벡터 프로세서(120)가 유휴상태가 되면, 일반용 프로세서(110)는 단계 330을 실행하여 새로운 프로그램 스레드용의 벡터 프로세서(120)를 셋업한다. 단계 330에서, 상기 일반용 프로세서(110)는 상기 벡터 프로세서의 프로그램 카운터인 특수 레지스터(VPC)에 프로그램 어드레스를 기록한다. 상기 프로세서(110)는 또한 패러미터를 벡터 프로세서(120)에 보내기 위하여 벡터 프로세서(120)의 다른 스칼라 레지스터 및 특수 레지스터에 기록할 수 있다. 상기 벡터 프로세서(120)가 초기화되면, 상기 일반용 프로세서(110)는 명령어(STARTVP)가 단계 345에서 프로그램 스레드를 실행하는 벡터 프로세서(120)를 작동시키는 단계 340을 실행한다. 명령어(STARTVP)는 레지스터(VPSTATE)를 VP_RUN상태로 세팅하고, 상기 벡터 프로세서(120)는 VP_RUN 값을 판독하여 명령들을 인출하고 실행한다. 이때, 일반용 프로세서(110)는 상기 프로세서(110,120)가 병렬로 작동할 수 있도록 계속하여 그 프로그램 스레드를 실행한다.
과정 300에서, 일반용 프로세서(110)는 계속하여 그 프로그램 스레드를 실행하나, 단계 380은 벡터 프로세서(120)로부터의 결과와 동기화되어야 한다. 그 프로그램 스레드를 실행하는 벡터 프로세서(120)는 단계 355에서의 결과를 완료하고 단계 375에서의 실행을 중지시키는 단계 365에서의 명령어(VCINT 또는 VCJOIN)를 실행한다. 단계 355뒤에 단계 380이 발생할 수 있도록 하기 위하여, 상기 일반용 프로세서(110)는 단계들 360 및 370을 포함하는 대기 루프를 실행하고 벡터 프로세서(120)가 유휴 상태가 될 때까지 대기한다. 상기 벡터 프로세서(120)가 단계 365를 실행하기 전에 상기 일반용 프로세서(110)가 단계 360에 이르는 것도 하나의 가능한 순서이다. 이 경우에, 상기 일반용 프로세서(110)는 상기 벡터 프로세서(120)가 유휴 상태가 될 때까지 반복적으로 명령들 360 및 370을 실행한다. 또한, 상기 일반용 프로세서(110)가 단계 360에 이르기 전에 상기 프로세서(120)가 단계 365를 수행하는 것도 가능한 순서이다. 이 경우에는, 상기 일반용 프로세서(110)가 단계 360 및 370을 동시에 수행한다.
단계 380에서는, 상기 일반용 프로세서(110)가 결과를 조작하며, 다른 STARTVP 명령으로서 상기 벡터 프로세서(120)를 단순히 초기화하고 다시 시작시킨다. 이전의 프로그램 스레드용의 내용 스위치가 있는 경우에는, 상기 일반용 프로세서(110)는 이전에 저장된 내용을 복구하고 인터럽트된 프로그램 스레드를 다시 시작시키는 서브루틴의 주소로서 상기 벡터 프로세서(120)를 초기화할 수 있다.
도 4 는 본 발명의 일 실시예에 따라 동기화를 위하여 폴링을 사용하는 이중 스레드 과정 400의 또 다른 예를 도시한다. 상기 과정 400은 도 3 에 도시된 과정 300에서 기재된 바와 같이 시작된다. 특히, 일반용 프로세서(110)는 상기 벡터 프로세서(120)가 유휴 상태가 될 때까지 대기 루프(315)에서 대기하며, 어느 벡터 프로세서(120)가 단계 345에서 프로그램 스레드를 실행시키기 시작하는가에 따라 단계 340에서 상기 벡터 프로세서(120)를 시작시킨다. 과정 400에서, 상기 일반용 프로세서(110)는 상기 일반용 프로세서(110)가 단계 480을 실행하기 전에 상기 벡터 프로세서(120)가 단계 355에서의 결과를 완성할 것을 요한다. 과정 400은 상기 벡터 프로세서(120)가 단계 455의 실행에 뒤따르는 유휴 상태에 들어가지 않고 레지스터(VPSTATE)가 동기화에 사용되지 않는 점에서 과정 300과는 다르다. 대신에, 루프 460는 단계 480 및 355를 동기화하기 위하여 확장 레지스터(VASYNC)를 폴링한다.
루프 460에서, 제 1 단계 462는 확장 레지스터(VASYNC)를 판독한다. 바람직한 실시예에서, 상기 일반용 프로세서(110)는 확장 레지스터를 판독하고 상기 레지스터의 플래그 비트(비트<30>)를 세팅하는 명령(TESTSET)을 이용하여 확장 레지스터를 판독할 수 있다. 레지스터 수(15)가 명령(TESTSET)의 수신지로서 이용될 때, 상기 플래그 비트는 상기 일반용 프로세서(110)의 상태 레지스터에 있는 Z 비트(제로 비트)로 전송된다. 과정 400은 단계 355가 완료되었음을 알리기 위하여 상기 플래그 비트를 소거하는 벡터 프로세서에 의존하므로, 단계 355는 명령 468이 상태 비트(Z)가 영(zero)이 아닐 때 단계 462로 다시 브랜칭하므로써 완료되었는지를 결정한다. 상기 플래그 비트가 영인 경우에는, 상기 일반용 프로세서(110)는 단계 480으로 이동하여 계속하여 과정을 수행한다.
단계 462에서 명령어(TESTSET)를 이용하면, 확장 레지스터(VASYNC)내의 플래그 비트가 루프 460과 동일한 장래의 동기화 루프를 위하여 자동으로 리셋되는 장점이 있다.
제어 프로세서 명령어(VPSTART)와 벡터 프로세서 명령어(VCJOIN)를 이용하여, 도 1 의 멀티 프로세서(100)는 전형적인 병렬 실행과 순차 실행 프로그래밍을 지지한다. 도 5A 및 도 5B 는 전형적인 병렬 실행의 두가지 경우를 보여준다. 도 5A 에서, 일반용 프로세서(110)는 벡터 프로세서(120)용 실행 스레드 520을 분기시키는 명령 스트림 510을 실행한다. 명령어(STARTVP; 512)는 상기 벡터 프로세서(120)가 명령의 인출을 시작하는 타겟 어드레스를 규정한다. 따라서, 벡터 프로세서(120)에 의하여 실행되는 제 1 명령 522가 명령 512의 뒤를 따르고 일반용 프로세서(110)에 의하여 실행되는 명령에 대하여 병렬로 수행된다. 일반용 프로세서(110)는 도 3 및 도 4 를 참조하여 상술된 바와 같은 대기 루프 514에 도착할 때까지, 그 명령 스트림을 계속하여 실행한다. 상기 벡터 프로세서(120)는 레지스터(VASYNC)를 클리어하고 상기 벡터 프로세서(120)를 유휴 상태에 놓는 명령(VCJOIN; 524)에 도착할 때까지 그 명령 스트림을 실행한다. (또 다른 실시예에서), 상기 벡터 프로세서(120)는 상기 일반용 프로세서(110)에 인터럽트를 요청하고, 상기 일반용 프로세서(110)에 의하여 실행되는 인터럽트 핸들러는 레지스터(VPSTATE)를 클리어한다. 도 5a 에서, 상기 일반용 프로세서(110)는 상기 벡터 프로세서(120)가 명령어 VCJOIN(524)에 도달하기 전에 대기 루프 514에 도달하며, 상기 일반용 프로세서(110)의 스핀은 상기 벡터 프로세서(120)가 그 주어진 일을 완료할 때까지 대기한다.
선택적으로, 도 5b 에 도시된 바와 같이, 상기 벡터 프로세서(120)는 명령 스트림 540을 완료하며, 상기 일반용 프로세서(110)가 대기 루프 534에 도달하기 전에, 명령 542로 시작하여 명령 VCJOIN으로 종결한다. 이 경우에, 일반용 프로세서(110)는 스핀 대기하는데 시간을 소비하나, 대신에 대기 루프 524를 통과한다. 하지만, 상기 벡터 프로세서(120)는 상기 일반용 프로세서(110)가 다시 벡터 프로세서를 시작시킬 때 명령 VCJOIN(564)이 대기 루프 524후에 실행될 때로부터 유휴 상태가 된다.
병렬 프로그래밍 패러다임은, 상기 일반용 프로세서(110)상에서 스칼라 부분에 대해 병렬로 계산을 실행하는 동안, 멀티 스레드형 병렬 프로그램이 벡터 프로세서(120)의 힘을 이용하기 때문에 고도의 성능을 제공한다. 프로세서(110,120)사이의 데이터 교환은 상기 일반용 프로세서(110)에 의하여 수행되는 대기 루프에 의하여 표시되는 동기화 포인트에서 발생한다. 상기 벡터 프로세서(120)에 스핀 대기는 요구되지 않는다.
도 5C 는 도 1 의 멀티 프로세서(100)용의 전형적인 순차 실행 프로그래밍을 보여준다. 전형적인 순차 실행 프로그래밍에서는, 일반용 프로세서(110)가 명령어 STARTVP(552)로서 실행 스레드를 분기하고 즉시 대기 루프 554로 들어간다. 상기 일반용 프로세서(110)는 상기 벡터 프로세서(120)가 명령 562로부터 명령 VCJOIN (564)으로의 프로그램 시퀀스(560)를 완료할 때까지 루프 554에서 대기한다. 상기 벡터 프로세서(120)가 명령 VCJOIN(564)을 수행하고 유휴 상태가 되면, 상기 일반용 프로세서(110)는 대기 루프 554를 빠져 나와 명령 562로부터 명령 564로 순차로 따르는 실행 명령을 시작한다. 상기 전형적인 순차 실행 프로그래밍은 전형적인 병렬 실행 프로그래밍에 비하여 효과적이지 않으나 논리적으로 더 간단하다.
도 5c 의 전형적인 순차 실행 프로그래밍 또는 도 5B 의 전형적인 병렬 실행 상의 변화는, 상기 일반용 프로세서(110)의 유일한 기능이 상기 벡터 프로세서(120)를 시작시키고 인터럽트와 예외 상황을 조작하는 반면, 상기 벡터 프로세서(120)가 전 프로그램을 실행할 수 있게 한다. 이러한 변화는 상기 벡터 프로세서(120)가 상기 일반용 프로세서(110)의 두배의 작동 주파수에서 작동하며 상기 일반용 프로세서(110)보다 훨씬 강력한 전형적인 실시예에서 유용할 수 있다.
본 발명을 특정의 바람직한 실시예에 관련하여 도시하고 설명하였지만, 이하의 특허청구의 범위에 의해 마련되는 본 발명의 정신이나 분야를 이탈하지 않는 한도내에서 본 발명이 다양하게 개조 및 변화될 수 있다는 것을 당업계에서 통상의 지식을 가진 자는 용이하게 알 수 있다.
부록 A
실시예에 있어서, 프로세서(110)는 ARM7 프로세서용 표준규격에 적합한 일반용 프로세서이다. ARM7 프로세서의 상세한 내용 및 명령어 세트에 간해서는 ARM7 데이터 시트(문서번호 ARM7 DDI 0020C, 1994년 12월 발간)를 참조한다. ARM7 명령어 세트에 대한 확장자는, 벡터 프로세서(120)를 가동 및 정지시키고; 동기화를 위한 상태 등과 같은 벡터 프로세서의 상태를 테스트 하고; 벡터 프로세서(120)내의 레지스터 사이에 있는 데이터를 일반용 프로세서(110)내의 레지스터 또는 확장 레지스터로 전송하므로써, 일반용 프로세서(110)를 벡터 프로세서(120)와 상호작용하게 한다.
일반 레지스터와 벡터 레지스터 사이의 전송을 가능하게 하기 위해서는, 로컬 메모리 등과 같은 매개 저장소가 필요로 된다.
표 A1 은 벡터 프로세서(120) 및 캐시 서브시스템(130)과의 상호 작용을 개시하기 위한 일반용 프로세서(110)용 ARM7 명령어 세트에 대한 확장자를 나타내고 있다.
[표 A1]
ARM7 명령어 세트 확장자
표 A2 는 ARM7 예외 목록을 보여주고 있다. 이들은 잘못된 명령어(faulting instruction)를 실행하기 전에 검출 및 기록된다. 예외 벡터 어드레스는 16진법으로 주어진다.
[표 A2]
ARM 예외
다음은 ARM7 명령어 세트에 대한 확장자 구문을 설명하는 것이다. ARM7 구조는 코-프로세서 인터페이스를 위한 3개의 명령어 형식을 제공한다:
1. 코-프로세서 데이터(CDP)형식
2. 코-프로세서 데이터 전송(LDC/STC)형식
3. 코-프로세서 레지스터 전송(MRC/MCR)형식
CDP형식 명령어들은 ARM7 프로세서로서, 백(back) 통신하지 않는 작업들에 사용된다. 표 A3 은 상기 CDP 형식 명령어의 필드를 정의하고 있다.
[표 A3]
CDP 필드
코-프로세서 데이터 전송 형식(LDC/STC)은 코-프로세서 레지스터의 서브세트를 메모리로부터 또는 메모리에 직접적으로 적재 또는 저장한다. ARM7 프로세서는 단어주소를 공급하며, 상기 코-프로세서는 데이터를 공급 또는 받아들이고, 전송되는 단어의 수를 제어한다. 표 A4 는 LDC/STC 형식 내의 필드들을 정의하고 있다.
[표 A4]
LDC/STC 형식
코-프로세서 레지스터 전송 형식(MRC, MCR)은 ARM7 레지스터와 코-프로세서 레지스터 사이에 직접적으로 정보를 통신시키기 위해 사용된다. 표 A5는 MRC/MCR 형식을 갖는 명령어의 필드들을 정의하고 있다.
[표 A5]
MRC, MCR 형식
확장 ARM 명령어
확장 ARM 명령어들은 다음과 같다:
캐시(캐시 작업)
형식: LDC/STC
L=0; CRn=Opc; CP#=1111.
어셈블러 구문:
STC{cond}p15, cOpc, <Address>
캐시{cond}Opc, <Address>
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}이고, Opc={0, 1, 2, 3}이다. 명령 캐시를 위하여, LDC/STC 형식의 필드 CRn은 오페코드(opcode; Opc)를 지정한다. 따라서, 상기 오페코드의 십진법 표기를 제 1 구문 내에서 할 경우에는 문자 'c' 가 숫자 앞에 첨가된다(즉, 0 대신에 c0를 사용). 이에 대해서는, 어드레스 모드 구문용 ARM7 데이터 시트를 참조하면 될 것이다.
설명:
명령 캐시는 Cond가 참(true)일 경우에만 실행된다. 필드 Opc<3:0>은 다음 작업을 나타낸다.
[표 A7]
캐시 명령 Opc 정의
EA의 계산법에 대해서는 ARM7 데이터 시트를 참조한다.
예외: ARM7 보호 위반
INTVP(Interrupt Vector Porcessor; 인터럽트 벡터 프로세서)
형식: CDP
여기서, Opc = 0001; 0; CP# = 0111; 그리고 CRn, CRd, CP, 및 CRm은 사용되지 않는다.
어셈블러 구문:
CDP{cond} p7, 1, c0, c0, c0
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}이다. 비트 19:12, 7:15, 및 3:0은 리저브된다.
설명:
Cond가 참일 경우, 명령 INTVP는 벡터 프로세서에 정지 명령을 전달한다. 일 실시예에 있어서, 명령 INTVP는 비트 CSE를 세팅시킨다. 이러한 비트 CSE의 세팅은, 벡터 프로세서가 그 현재 문맥을 저장한 후 정지하고 이어서 벡터 프로세서가 조건 문맥 저장 명령 VCCS를 실행해야 한다는 것을 나타내는 것이다. ARM7 프로세서는 벡터 프로세서의 정지상태를 기다림이 없이, 계속적으로 다음 명령을 실행한다. ARM7 프로세서는 MFER 사용-대기 루프를 실행하므로써 벡터 프로세서가 상기 INTVP 명령 이후 정지되었는지의 여부를 판단한다. 상기 INTVP 명령은 벡터 프로세서가 이미 VP_IDLE상태에 있을 경우에는 아무런 영향을 미치지 않는다.
예외: 벡터 프로세서의 사용불능
MFER(확장 레지스터로부터의 이동)
형식: MRC
여기서, Opc = 010; L = 1 CRn = CP; CP# = 0111; CP는 사용되지 않음; CRm = ER.
어셈블러 구문:
MRC{cond} p7, 2, Rd, cP, cER, 0
MFER{cond} Rd, RNAME
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0.....r15}, P{0, 1}, ER = {0,......,15}, 그리고 RNAME은 확장 레지스터를 언급한다.
설명:
명령어 MFER은 Cond가 참일 경우에만 실행된다. 이하, 표 A9 에 기재된 P : ER <3 : 0>에 의해 정의되는 확장 레지스터(ER)에서 출력되는 데이터는 ARM7 레지스터(Rd)로 이동된다.
[표 A9]
ER, 확장 레지스터에 대한 P 매핑(mapping)
예외: 이용자 모드 중에 PERx로 접근하려 할 때의 보호 위반
MFVP(벡터 레지스터로부터의 이동)
형식: MRC/MCR
여기서, Opc = 001; L = 1; CP# = 0111; 그리고 CP는 사용되지 않음.
어셈블러 구문:
MRC{cond} p7, 1, Rd, Crn, cRm, 0
MFVP{cond} Rd, RNAME
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0.....r15}, CRn = {c0,....,c15}, CRm = {c0,......,c15}, 그리고 RNAME은 벡터 프로세서 내의 스칼라 또는 특수용 레지스터를 언급한다.
설명:
명령어 MFVP는 Cond가 참일 경우에만 실행된다. CRn <1 : 0> : CRm <3 : 0>에 의해 정의되는 벡터 프로세서의 스칼라 레지스터 또는 특수용 레지스터로부터 출력되는 데이터는 ARM7 레지스터(Rd)로 이동된다. 비트 CRn<1 : 0> : CRm<3 : 0>은 리저브된다. 표 A10 은, CRn<1 : 0> : CRm<3 : 0>으로부터 벡터 프로세서 내의 스칼라 레지스터(SR0-SR15) 및 특수용 레지스터(SP0-SP15)에게로의 매핑을 보여주고 있다.
[표 A10]]
CRn : CRm으로부터 VP 레지스터에게로의 매핑
SR0는 항상 32비트의 제로를 판독하며, SR0에 기록하는 것은 무시된다.
예외: 벡터 프로세서 사용불능
MTER(확장 레지스터로의 이동)
형식: MRC/MCR
여기서, Opc = 010; L = 0; CRn = cP; CP# = 0111; CP는 사용되지 않음, CRm = ER.
어셈블러 구문:
MRC{cond} p7, 2, Rd, Cp, cER, 0
MFER{cond} Rd, RNAME
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0.....r15}, P = {0, 1}, ER = {0,......,15}, 그리고 RNAME은 레지스터 연상기호(즉, PER0)를 언급한다.
설명:
명령어 MTER은 Cond가 참일 경우에만 실행된다. ARM7 레지스터(Rd)로부터의 데이터는, 상기 표 A9 에 나타난 바와 같이, P ; ER<3:0>에 의해 정의되는 확장 레지스터(ER)로 이동한다.
예외: 이용자 모드 중에 PERx로 접근하려 할 때의 보호 위반
MTVP(벡터 레지스터로의 이동)
형식: MRC/MCR
여기서, Opc = 1; L = 0; CP# = 0111; 그리고 CP는 사용되지 않음.
어셈블러 구문:
MRC{cond} p7, 1, Rd, cRn, cRm, 0
MFVP{cond} RNAME, Rd
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0.....r15}, CRn = {c0,....,c15}, CRm = {c0,......,c15}, 그리고 RNAME은 레지스터 연상기호(즉, SP0 또는 VCSR)을 언급한다.
설명:
명령어 MTVP는 Cond가 참일 경우에만 실행된다. ARM7 레지스터(Rd)로부터의 데이터는 벡터 프로세서의 스칼라/특수용 레지스터 CRn<1:0> : CRm<3:0>으로 이동된다. CRn : CRm으로부터 벡터 프로세서의 스칼라 및 특수용 레지스터에게로의 매핑은 상기 표 A10 에 도시되어 있다.
예외; 벡터 프로세서 사용불능
PFTCH (프리페치)
형식: LDC/STC
여기서, N = 0; L = 1; CRn = 0010; CP# = 1111
어셈블러 구문:
LDC{cond} p15, 2, <어드레스>
PFTCH{cond} <어드레스>
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}. 어드레스 모드 구문에 대해서는 ARM7 데이터 시트를 참조한다.
설명:
명령어 PFTCH는 Cond가 참일 경우에만 실행된다. EA에 의해 지정되는 캐시라인은 ARM7 데이터 캐시로 프리페치된다. EA의 계산법에 대해서는 ARM7 데이터 시트를 참조한다.
예외: 없음
STARTVP(시작 벡터 프로세서)
형식: CDP형식
여기서, Opc = 0000; CP# = 0111; 그리고 CRn, CRd, CP, 및 CRm들은 사용되지 않는다.
어셈블러 구문:
CDP{cond} p7, 0, c0, c0, c0
STARTVP{cond}
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}. 어드레스 모드 구문에 대해서는 ARM7 데이터 시트를 참조한다.
설명:
명령어 STARTVP는 Cond가 참일 경우에만 실행된다. 명령어 STARTVP는 벡터 프로세서에세 실행 개시 신호를 전달하며, 자동으로 VISRC<vjp> 및 VISRC<vip>를 소거한다. ARM7 프로세서는 벡터 프로세서의 실행시작을 기다리지 않고 다음 명령어를 연속적으로 실행한다. 상기 벡터 프로세서는 이러한 명령어가 실행되기 전에 바람직한 상태로 초기화된다. 명령어 STARTVP는 벡터 프로세서가 이미 VP_RUN 상태에 있을 경우에는 영향을 미치지 않는다.
예외: 벡터 프로세서 사용불능
TESTSET(테스트 및 세트)
형식: MRC/MCR형식
여기서, Opc = 000; L = 1; CRn = 0; CP# = 0111; CRm = ER; 그리고 CP는 사용되지 않는다.
어셈블러 구문:
MRC{cond} p7, 0, Rd, c0, cER, 0
TESTSET{cond} Rd, RNAME
여기서, cond = {eq, ne, cs, cc, mi, pl, vs, vc, hi, ls, ge, lt, gt, le, al, nv}, Rd = {r0.....r15}, ER = {0,....,15}, 그리고 RNAME은 레지스터 연상기호(즉, UER1 또는 VASYNC)를 언급한다.
설명:
명령어 TESTSET는 Cond가 참일 경우에만 실행된다. 명령어 TESTSET는 확장 레지스터(UERx)의 내용을 일반용 레지스터(RD)로 복귀시키며, 상기 확장 레지스터(UERx<30>)를 1로 세팅시킨다. 만약 ARM7 레지스터(15)가 수신 레지스터로서 지정된다면, 짧은 대기루프가 공급될 수 있도록, UERx<30>이 레지스터(CPSR)의 비트(Z)으로 복귀한다.
예외; 없음
부록 B
본 부록은 명령어 VCINT, VCJOIN, ALC VMOV에 대해 기술하고 있다. 본 발명의 실시예에서, 이들 명령어는 벡터 프로세서가 제어 프로세서에 대한 동기화를 지지하기 위해 사용하는 것이다. 관련 출원으로서 상기 언급된 바 있는, 1996년 8월 19일자로 미합중국에 출원된 "멀티 미디어 신호 프로세서에서의 단일 명령 복수 데이터 처리"에서는 벡터 프로세서를 위한 전체적인 명령어 세트가 기술되어 있다. 명령 작업은 C프로그래밍 언어로서 정의되는 구조를 사용하는 것으로서 정의된다.
VCINT (조건적 인터럽트 ARM7)
[표 B1]
VCINT 형식
어셈블러 구문:
VCINT. cond #ICODE
여기서, cond = {un, lt, eq, le, gt, ne, ge, ov}
설명:
만약 Cond가 참이면, 실행을 정지하고, 인터럽트가 가능하게 된다면 ARM7 프로세서를 인터럽트 시킨다.
작동:
조건: ( (Cond == VCSR[SO, GT, EQ, LT]) | (Cond == un) )
{VISR<vip> = 1;
VIINS = [VCINT. cond #ICODE 명령];
VEPC = VPC;
(VIMSK<vie> == 1) 신호 ARM7 인터럽트;
VP_STATE -- VP_IDLE;}
다른 VPC = VPC + 4;
예외; VCINT 인터럽트
VCJOIN (ARM7 태스크와의 조건적인 연합)
[표 B2]
VCJOIN 형식
어셈블러 구문:
VCJOIN. cond #Offset
여기서, cond = {un, lt, eq, le, gt, ne, ge, ov}
설명:
만약 Cond가 참이면, 실행을 정지하고, 인터럽트가 가능하게 된다면 ARM7 프로세서를 인터럽트 시킨다.
작동:
조건: ( (Cond == VCSR[SO, GT, EQ, LT]) | (Cond == un) )
{VISR<vjp> = 1;
VIINS = [VC. JOIN. cond #Offste 명령];
VEPC = VPC;
(VIMSK<vje> == 1) 신호 ARM7 인터럽트;
VP_STATE -- VP_IDLE;}
다른 VPC = VPC + 4;
예외; VCJOIN 인터럽트
VMOV (이동)
[표 B3]
VMOV 형식
어셈블러 구문:
VMOV. dtRd, Rd
여기서, dt = {b, b9, h, w, f}, Rd 및 Rb는 레지스터의 명칭을 나타낸다. 접미어 .w 및 .f는 동일한 작업을 나타낸다.
보조 모드:
int8 (b), int9(b9), int16(h), 및 int32(w)
설명:
레지스터(Rb)의 내용은 레지스터(Rd)로 이동된다. 필드 그룹은 표 B4 에 정의되어 있는 바와 같은 소스 및 수신 레지스터를 나타낸다.
[표 B4]
그룹 필드 정의
표 B4 에서, 레지스터 그룹의 표기는 다음과 같다:
VR: 가동중인 뱅크 벡터 레지스터
VRA: 대체 뱅크 벡터 레지스터
SR: 스칼라 레지스터
SP: 특수용 레지스터
RASR: 복귀 어드레스 스택(stack)레지스터
VAC: 벡터 어큐뮬레이터 레지스터(표 B. 5참조)
벡터 레지스터는 명령어 VMOV에 의해 스칼라 레지스터로 이동할 수 없으나, 명령어 VEXTRT에 의해서는 이동할 수 있다.
표 B5 는 VAC레지스터의 수 엔코딩을 정의하고 있다.
[표 B5]
작동:
Rd = Rb
예외; VCSR 또는 VISRC에 예외 상태 비트를 세팅하는 것은 대응 예외를 야기시킬 수 있다.
프로그램밍 노트:
명령어 VMOV는 요소 마스크(element mask)에 영향을 받지 않는다. 상기 대체 뱅크 개념이 VEC64 모드 내에 있지 않기 때문에, 명령어 VMOV는 VEC64 모드 내의 대체 뱅크 레지스터로 또는 데체 뱅크 레지스터로부터 이동하는 것에는 사용되지 않는다.
내용없음
Claims (14)
- 제 1 프로세서;프로그램 명령어들의 시퀀스를 실행하기 위한 제 1 상태 및 유휴 상태로 되는 제 2 상태로 작동 가능한 제 2 프로세서; 및상기 제 1 및 제 2 프로세서가 접근할 수 있도록 상기 제 1 및 제 2 프로세서에 결합되고, 상기 제 2 프로세서가 상기 제 1 상태에 있는지 제 2 상태에 있는지를 나타내는 값을 저장하는 레지스터를 구비하는 것을 특징으로 하는 통합 멀티 프로세서.
- 제 1 항에 있어서,상기 제 1 프로세서는 제 1 최대 폭을 초과하지 않는 소정의 폭을 갖는 오퍼랜드를 조작할 수 있도록 하는 제 1 실행 데이터 경로를 포함하고, 상기 제 2 프로세서는 제 2 최대 폭을 초과하지 않는 소정의 폭을 갖는 오퍼랜드를 조작할 수 있도록 하는 제 2 실행 데이터 경로를 포함하고, 상기 제 2 최대 폭은 상기 제 1 최대 폭 보다 큰 것을 특징으로 하는 통합 멀티 프로세서.
- 제 2 항에 있어서,상기 제 2 프로세서는 병렬 작동되는 다수개의 처리 장치를 포함하는 것을 특징으로 하는 통합 멀티 프로세서.
- 제 3 항에 있어서,상기 제 2 프로세서는 단일 명령 복수 데이터 방식을 갖는 것을 특징으로 하는 통합 멀티 프로세서.
- 멀티 프로세서를 작동시키는 방법으로서, 제 1 프로세서에 제 1 프로그램 스레드를 실행하는 단계;상기 제 1 프로세서에 의해 실행되는 명령에 대응하여 제 2 프로세서에 제 2 프로그램 스레드를 개시시키는 단계;상기 제 1 프로그램 스레드 내의 루프를 실행시키는 단계로서, 루프 내에서 상기 제 1 및 제 2 프로세서에 의해 접근 가능한 레지스터를 상기 제 1 프로세서로 읽는 단계;상기 제 2 프로세서가 상기 제 2 프로그램 스레드의 적어도 제 1 부분을 완료하였음을 나타내는 값을 상기 레지스터에 기록하는 단계; 및상기 제 2 프로세서가 상기 제 2 프로그램 스레드의 상기 제 1 부분을 완료하였음을 나타내는 상기 값을 상기 제 1 프로세서가 읽는 것에 대응하여 상기 루프를 빠져나오는 단계를 구비하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 루프를 빠져나간 이후, 상기 제 2 프로그램 스레드의 상기 제 1 부분이 미리 완료되었을 경우 상기 제 1 프로그램 스레드의 일부분을 실행시키는 단계를 추가로 구비하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 레지스터는 상기 제 2 프로세서가 작동 상태인지 유휴 상태 인지의 여부를 나타내는 값을 저장하는 것을 특징으로 하는 방법.
- 제 7 항에 있어서,상기 제 2 프로세서는, 상기 제 2 프로그램 스레드의 실행을 정지시키고 상기 제 2 프로세서를 유휴 상태로 하는 명령어를 실행하는 과정에서, 상기 값을 상기 레지스터에 기록하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 제 2 프로세서는 상기 값을 상기 레지스터에 기록한 후에 상기 제 2 프로그램 스레드를 계속적으로 실행하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 제 1 프로세서는 상기 제 2 프로세서 보다 좁은 데이터 경로를 구비하는 것을 특징으로 하는 방법.
- 제 10 항에 있어서,상기 제 2 프로세서는 단일 명령 복수 데이터 방식을 갖는 것을 특징으로 하는 방법.
- 제 11 항에 있어서,상기 제 1 프로세서는 일반적인 용도의 구조를 갖는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 루프를 실행하는 것에 선행하여 상기 값을 기록하는 것을 특징으로 하는 방법.
- 제 5 항에 있어서,상기 루프의 실행은, 상기 값을 기록하기 전에 일차적으로 실행되며, 상기 값을 기록한 후 까지 반복되는 것을 특징으로 하는 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/699,597 US6058465A (en) | 1996-08-19 | 1996-08-19 | Single-instruction-multiple-data processing in a multimedia signal processor |
US8/703,434 | 1996-08-26 | ||
US08/703,434 US5978838A (en) | 1996-08-19 | 1996-08-26 | Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor |
US08/703,434 | 1996-08-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980018070A KR19980018070A (ko) | 1998-06-05 |
KR100267091B1 true KR100267091B1 (ko) | 2000-11-01 |
Family
ID=24810031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019970012763A KR100267091B1 (ko) | 1996-08-19 | 1997-04-07 | 비대칭싱글-칩이중멀티프로세서의정합및동기화 |
Country Status (7)
Country | Link |
---|---|
US (2) | US6058465A (ko) |
JP (1) | JPH10134036A (ko) |
KR (1) | KR100267091B1 (ko) |
CN (1) | CN1112635C (ko) |
DE (1) | DE19735350B4 (ko) |
FR (1) | FR2752630B1 (ko) |
TW (2) | TW358313B (ko) |
Families Citing this family (229)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295599B1 (en) * | 1995-08-16 | 2001-09-25 | Microunity Systems Engineering | System and method for providing a wide operand architecture |
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5953241A (en) * | 1995-08-16 | 1999-09-14 | Microunity Engeering Systems, Inc. | Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction |
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6643765B1 (en) * | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US6786420B1 (en) | 1997-07-15 | 2004-09-07 | Silverbrook Research Pty. Ltd. | Data distribution mechanism in the form of ink dots on cards |
US6618117B2 (en) | 1997-07-12 | 2003-09-09 | Silverbrook Research Pty Ltd | Image sensing apparatus including a microcontroller |
US6948794B2 (en) | 1997-07-15 | 2005-09-27 | Silverbrook Reserach Pty Ltd | Printhead re-capping assembly for a print and demand digital camera system |
US6690419B1 (en) | 1997-07-15 | 2004-02-10 | Silverbrook Research Pty Ltd | Utilising eye detection methods for image processing in a digital image camera |
US6879341B1 (en) | 1997-07-15 | 2005-04-12 | Silverbrook Research Pty Ltd | Digital camera system containing a VLIW vector processor |
US7110024B1 (en) | 1997-07-15 | 2006-09-19 | Silverbrook Research Pty Ltd | Digital camera system having motion deblurring means |
US6624848B1 (en) | 1997-07-15 | 2003-09-23 | Silverbrook Research Pty Ltd | Cascading image modification using multiple digital cameras incorporating image processing |
US6226738B1 (en) * | 1997-08-01 | 2001-05-01 | Micron Technology, Inc. | Split embedded DRAM processor |
US6760833B1 (en) | 1997-08-01 | 2004-07-06 | Micron Technology, Inc. | Split embedded DRAM processor |
US8489861B2 (en) * | 1997-12-23 | 2013-07-16 | Round Rock Research, Llc | Split embedded DRAM processor |
US5864703A (en) * | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US7197625B1 (en) * | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
FR2770659A1 (fr) * | 1997-10-31 | 1999-05-07 | Sgs Thomson Microelectronics | Processeur de traitement perfectionne |
US6161166A (en) * | 1997-11-10 | 2000-12-12 | International Business Machines Corporation | Instruction cache for multithreaded processor |
KR100538605B1 (ko) | 1998-03-18 | 2005-12-22 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 데이터 처리 장치, 행렬 변환 방법 및 컴퓨터 판독가능한 매체 |
US6041404A (en) * | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6282554B1 (en) * | 1998-04-30 | 2001-08-28 | Intel Corporation | Method and apparatus for floating point operations and format conversion operations |
US6247116B1 (en) | 1998-04-30 | 2001-06-12 | Intel Corporation | Conversion from packed floating point data to packed 16-bit integer data in different architectural registers |
US6263426B1 (en) | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
US6292815B1 (en) * | 1998-04-30 | 2001-09-18 | Intel Corporation | Data conversion between floating point packed format and integer scalar format |
US6266769B1 (en) | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
AUPP702098A0 (en) | 1998-11-09 | 1998-12-03 | Silverbrook Research Pty Ltd | Image creation method and apparatus (ART73) |
US6269435B1 (en) * | 1998-09-14 | 2001-07-31 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector |
US7100026B2 (en) * | 2001-05-30 | 2006-08-29 | The Massachusetts Institute Of Technology | System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values |
US6487606B1 (en) * | 1998-11-18 | 2002-11-26 | Nortel Networks Limited | System and method for delivering messages through a totem communications system |
US7020879B1 (en) * | 1998-12-16 | 2006-03-28 | Mips Technologies, Inc. | Interrupt and exception handling for multi-streaming digital processors |
US7529907B2 (en) * | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6496902B1 (en) * | 1998-12-31 | 2002-12-17 | Cray Inc. | Vector and scalar data cache for a vector multiprocessor |
US6209078B1 (en) * | 1999-03-25 | 2001-03-27 | Lsi Logic Corporation | Accelerated multimedia processor |
US20080007562A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
US7627736B2 (en) * | 1999-04-09 | 2009-12-01 | Clearspeed Technology Plc | Thread manager to control an array of processing elements |
US8171263B2 (en) | 1999-04-09 | 2012-05-01 | Rambus Inc. | Data processing apparatus comprising an array controller for separating an instruction stream processing instructions and data transfer instructions |
US8169440B2 (en) * | 1999-04-09 | 2012-05-01 | Rambus Inc. | Parallel data processing apparatus |
US20080016318A1 (en) * | 1999-04-09 | 2008-01-17 | Dave Stuttard | Parallel data processing apparatus |
US7966475B2 (en) | 1999-04-09 | 2011-06-21 | Rambus Inc. | Parallel data processing apparatus |
US20080008393A1 (en) * | 1999-04-09 | 2008-01-10 | Dave Stuttard | Parallel data processing apparatus |
US20070294510A1 (en) * | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
US7802079B2 (en) * | 1999-04-09 | 2010-09-21 | Clearspeed Technology Limited | Parallel data processing apparatus |
US20080184017A1 (en) * | 1999-04-09 | 2008-07-31 | Dave Stuttard | Parallel data processing apparatus |
US7506136B2 (en) * | 1999-04-09 | 2009-03-17 | Clearspeed Technology Plc | Parallel data processing apparatus |
US7526630B2 (en) | 1999-04-09 | 2009-04-28 | Clearspeed Technology, Plc | Parallel data processing apparatus |
JP5285828B2 (ja) * | 1999-04-09 | 2013-09-11 | ラムバス・インコーポレーテッド | 並列データ処理装置 |
US8762691B2 (en) | 1999-04-09 | 2014-06-24 | Rambus Inc. | Memory access consolidation for SIMD processing elements using transaction identifiers |
US8174530B2 (en) | 1999-04-09 | 2012-05-08 | Rambus Inc. | Parallel date processing apparatus |
AUPQ056099A0 (en) | 1999-05-25 | 1999-06-17 | Silverbrook Research Pty Ltd | A method and apparatus (pprint01) |
CN1378665A (zh) | 1999-06-10 | 2002-11-06 | Pact信息技术有限公司 | 编程概念 |
US6334180B1 (en) * | 1999-06-27 | 2001-12-25 | Sun Microsystems, Inc. | Processor coupled by visible register set to modular coprocessor including integrated multimedia unit |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
WO2001016714A1 (en) * | 1999-09-01 | 2001-03-08 | Intel Corporation | Fast write instruction for micro engine used in multithreaded parallel processor architecture |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6574725B1 (en) * | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6631430B1 (en) | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6591361B1 (en) | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US6307789B1 (en) | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6976095B1 (en) | 1999-12-30 | 2005-12-13 | Intel Corporation | Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6857061B1 (en) * | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US7343602B2 (en) * | 2000-04-19 | 2008-03-11 | Hewlett-Packard Development Company, L.P. | Software controlled pre-execution in a multithreaded processor |
US6615281B1 (en) * | 2000-05-05 | 2003-09-02 | International Business Machines Corporation | Multi-node synchronization using global timing source and interrupts following anticipatory wait state |
US6728866B1 (en) * | 2000-08-31 | 2004-04-27 | International Business Machines Corporation | Partitioned issue queue and allocation strategy |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
US7003450B2 (en) * | 2000-10-20 | 2006-02-21 | Pts Corporation | Methods and apparatus for efficient vocoder implementations |
WO2002067137A1 (en) * | 2001-02-01 | 2002-08-29 | Honeywell International Inc. | Vector and scalar signal processing |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
US7711763B2 (en) * | 2001-02-21 | 2010-05-04 | Mips Technologies, Inc. | Microprocessor instructions for performing polynomial arithmetic operations |
US7599981B2 (en) * | 2001-02-21 | 2009-10-06 | Mips Technologies, Inc. | Binary polynomial multiplier |
US7162621B2 (en) | 2001-02-21 | 2007-01-09 | Mips Technologies, Inc. | Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration |
US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US9552047B2 (en) | 2001-03-05 | 2017-01-24 | Pact Xpp Technologies Ag | Multiprocessor having runtime adjustable clock and clock dependent power supply |
US9436631B2 (en) | 2001-03-05 | 2016-09-06 | Pact Xpp Technologies Ag | Chip including memory element storing higher level memory data on a page by page basis |
US9141390B2 (en) | 2001-03-05 | 2015-09-22 | Pact Xpp Technologies Ag | Method of processing data with an array of data processors according to application ID |
US9411532B2 (en) | 2001-09-07 | 2016-08-09 | Pact Xpp Technologies Ag | Methods and systems for transferring data between a processing device and external devices |
US9250908B2 (en) | 2001-03-05 | 2016-02-02 | Pact Xpp Technologies Ag | Multi-processor bus and cache interconnection system |
AU2002250356A1 (en) * | 2001-03-14 | 2002-09-24 | Mercury Computer Systems, Inc. | Wireless communications methods and systems for long-code and other spread spectrum waveform processing |
JP4529063B2 (ja) * | 2001-03-30 | 2010-08-25 | ルネサスエレクトロニクス株式会社 | システムシミュレータ、シミュレーション方法及びシミュレーションプログラム |
US6832338B2 (en) * | 2001-04-12 | 2004-12-14 | International Business Machines Corporation | Apparatus, method and computer program product for stopping processors without using non-maskable interrupts |
US10031733B2 (en) | 2001-06-20 | 2018-07-24 | Scientia Sol Mentis Ag | Method for processing data |
US7246220B1 (en) * | 2001-07-27 | 2007-07-17 | Magnum Semiconductor, Inc. | Architecture for hardware-assisted context switching between register groups dedicated to time-critical or non-time critical tasks without saving state |
US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
CN1241106C (zh) * | 2001-10-09 | 2006-02-08 | 佳能株式会社 | 打印装置及其控制方法 |
US7032215B2 (en) * | 2001-10-11 | 2006-04-18 | Intel Corporation | Method and system for type demotion of expressions and variables by bitwise constant propagation |
JP3496009B2 (ja) | 2001-10-22 | 2004-02-09 | キヤノン株式会社 | 記録装置及びその制御方法及びプログラム |
US7818356B2 (en) * | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
GB2382673B (en) * | 2001-10-31 | 2005-10-26 | Alphamosaic Ltd | A vector processing system |
US7158964B2 (en) * | 2001-12-12 | 2007-01-02 | Intel Corporation | Queue management |
US20030126520A1 (en) * | 2001-12-31 | 2003-07-03 | Globespanvirata | System and method for separating exception vectors in a multiprocessor data processing system |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US7500240B2 (en) * | 2002-01-15 | 2009-03-03 | Intel Corporation | Apparatus and method for scheduling threads in multi-threading processors |
US6934951B2 (en) | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US7181594B2 (en) | 2002-01-25 | 2007-02-20 | Intel Corporation | Context pipelines |
US7610451B2 (en) * | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7035331B2 (en) * | 2002-02-20 | 2006-04-25 | Intel Corporation | Method and apparatus for performing a pixel averaging instruction |
US9170812B2 (en) | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US20110161977A1 (en) * | 2002-03-21 | 2011-06-30 | Martin Vorbach | Method and device for data processing |
US7346881B2 (en) * | 2002-05-13 | 2008-03-18 | Tensilica, Inc. | Method and apparatus for adding advanced instructions in an extensible processor architecture |
US7937559B1 (en) | 2002-05-13 | 2011-05-03 | Tensilica, Inc. | System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes |
US7376812B1 (en) * | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US7793084B1 (en) | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
WO2004015572A1 (en) * | 2002-08-07 | 2004-02-19 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
US7337275B2 (en) * | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US6961888B2 (en) * | 2002-08-20 | 2005-11-01 | Flarion Technologies, Inc. | Methods and apparatus for encoding LDPC codes |
AU2003289844A1 (en) | 2002-09-06 | 2004-05-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
US6978399B2 (en) * | 2002-09-12 | 2005-12-20 | International Business Machines Corporation | Debug thread termination control points |
US20040128485A1 (en) * | 2002-12-27 | 2004-07-01 | Nelson Scott R. | Method for fusing instructions in a vector processor |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7126991B1 (en) * | 2003-02-03 | 2006-10-24 | Tibet MIMAR | Method for programmable motion estimation in a SIMD processor |
US20040193837A1 (en) * | 2003-03-31 | 2004-09-30 | Patrick Devaney | CPU datapaths and local memory that executes either vector or superscalar instructions |
US7392399B2 (en) | 2003-05-05 | 2008-06-24 | Sun Microsystems, Inc. | Methods and systems for efficiently integrating a cryptographic co-processor |
KR101005718B1 (ko) * | 2003-05-09 | 2011-01-10 | 샌드브리지 테크놀로지스, 인코포레이티드 | 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛 |
JP3855270B2 (ja) * | 2003-05-29 | 2006-12-06 | ソニー株式会社 | アンテナ実装方法 |
JP4699685B2 (ja) * | 2003-08-21 | 2011-06-15 | パナソニック株式会社 | 信号処理装置及びそれを用いた電子機器 |
US7496921B2 (en) * | 2003-08-29 | 2009-02-24 | Intel Corporation | Processing block with integrated light weight multi-threading support |
US7895411B2 (en) * | 2003-10-02 | 2011-02-22 | Nvidia Corporation | Physics processing unit |
US20050086040A1 (en) * | 2003-10-02 | 2005-04-21 | Curtis Davis | System incorporating physics processing unit |
US7739479B2 (en) | 2003-10-02 | 2010-06-15 | Nvidia Corporation | Method for providing physics simulation data |
US7793072B2 (en) * | 2003-10-31 | 2010-09-07 | International Business Machines Corporation | Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands |
US8200945B2 (en) * | 2003-11-07 | 2012-06-12 | International Business Machines Corporation | Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers |
GB2409064B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
GB2409068A (en) * | 2003-12-09 | 2005-06-15 | Advanced Risc Mach Ltd | Data element size control within parallel lanes of processing |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
GB2411973B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
GB2411976B (en) * | 2003-12-09 | 2006-07-19 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409067B (en) * | 2003-12-09 | 2006-12-13 | Advanced Risc Mach Ltd | Endianess compensation within a SIMD data processing system |
GB2409061B (en) * | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | Table lookup operation within a data processing system |
GB2409059B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2409062C (en) * | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
GB2409060B (en) * | 2003-12-09 | 2006-08-09 | Advanced Risc Mach Ltd | Moving data between registers of different register data stores |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
GB2410097B (en) * | 2004-01-13 | 2006-11-01 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing data processing operations on floating point data elements |
GB2411978B (en) * | 2004-03-10 | 2007-04-04 | Advanced Risc Mach Ltd | Inserting bits within a data word |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7302627B1 (en) * | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US20050251644A1 (en) * | 2004-05-06 | 2005-11-10 | Monier Maher | Physics processing unit instruction set architecture |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US9557994B2 (en) | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
GB0415851D0 (en) * | 2004-07-15 | 2004-08-18 | Imagination Tech Ltd | Microprocessor output ports and control of instructions provided therefrom |
US8624906B2 (en) | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US7475001B2 (en) * | 2004-11-08 | 2009-01-06 | Nvidia Corporation | Software package definition for PPU enabled system |
EP1812928A4 (en) * | 2004-11-15 | 2010-03-31 | Nvidia Corp | VIDEO PROCESSING |
US8416251B2 (en) | 2004-11-15 | 2013-04-09 | Nvidia Corporation | Stream processing in a video processor |
US7620530B2 (en) * | 2004-11-16 | 2009-11-17 | Nvidia Corporation | System with PPU/GPU architecture |
US7565279B2 (en) * | 2005-03-07 | 2009-07-21 | Nvidia Corporation | Callbacks in asynchronous or parallel execution of a physics simulation |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
GB2426083A (en) * | 2005-05-09 | 2006-11-15 | Sony Comp Entertainment Europe | Software emulation of a pipeline processor |
US7650266B2 (en) * | 2005-05-09 | 2010-01-19 | Nvidia Corporation | Method of simulating deformable object using geometrically motivated model |
US7543136B1 (en) * | 2005-07-13 | 2009-06-02 | Nvidia Corporation | System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits |
US7328330B2 (en) * | 2005-08-16 | 2008-02-05 | International Business Machines Corporation | Queue design supporting dependency checking and issue for SIMD instructions within a general purpose processor |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US20070150904A1 (en) * | 2005-11-15 | 2007-06-28 | International Business Machines Corporation | Multi-threaded polling in a processing environment |
US7873953B1 (en) * | 2006-01-20 | 2011-01-18 | Altera Corporation | High-level language code sequence optimization for implementing programmable chip designs |
US8307196B2 (en) * | 2006-04-05 | 2012-11-06 | Freescale Semiconductor, Inc. | Data processing system having bit exact instructions and methods therefor |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US9223751B2 (en) * | 2006-09-22 | 2015-12-29 | Intel Corporation | Performing rounding operations responsive to an instruction |
US7627744B2 (en) * | 2007-05-10 | 2009-12-01 | Nvidia Corporation | External memory accessing DMA request scheduling in IC of parallel processing engines according to completion notification queue occupancy level |
DE102007025397B4 (de) * | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb |
US8683126B2 (en) * | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US20090049323A1 (en) * | 2007-08-14 | 2009-02-19 | Imark Robert R | Synchronization of processors in a multiprocessor system |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
CN101216756B (zh) * | 2007-12-28 | 2011-03-23 | 中国科学院计算技术研究所 | 一种risc处理器装置及其模拟浮点栈操作的方法 |
US8681861B2 (en) * | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8102884B2 (en) * | 2008-10-15 | 2012-01-24 | International Business Machines Corporation | Direct inter-thread communication buffer that supports software controlled arbitrary vector operand selection in a densely threaded network on a chip |
US8489851B2 (en) * | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
GB0909701D0 (en) * | 2009-06-08 | 2009-07-22 | Young Arthur P | Testing completion of concurrent logical operations |
US20110055838A1 (en) * | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
US9092213B2 (en) | 2010-09-24 | 2015-07-28 | Intel Corporation | Functional unit for vector leading zeroes, vector trailing zeroes, vector operand 1s count and vector parity calculation |
US8667042B2 (en) * | 2010-09-24 | 2014-03-04 | Intel Corporation | Functional unit for vector integer multiply add instruction |
US20120110303A1 (en) * | 2010-10-28 | 2012-05-03 | International Business Machines Corporation | Method for Process Synchronization of Embedded Applications in Multi-Core Systems |
CN102012803B (zh) * | 2010-11-25 | 2014-09-10 | 中国人民解放军国防科学技术大学 | 支持多宽度simd和多粒度simt的可配置矩阵寄存器单元 |
JP5664198B2 (ja) * | 2010-12-14 | 2015-02-04 | 富士通株式会社 | 演算処理装置 |
US8423343B2 (en) * | 2011-01-24 | 2013-04-16 | National Tsing Hua University | High-parallelism synchronization approach for multi-core instruction-set simulation |
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 |
US9411585B2 (en) | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US20140195817A1 (en) * | 2011-12-23 | 2014-07-10 | Intel Corporation | Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications |
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
CN111831334B (zh) | 2011-12-23 | 2024-05-24 | 英特尔公司 | 经改进的***指令的装置和方法 |
WO2013095630A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of improved extract instructions background |
CN107220029B (zh) | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
WO2013095637A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of improved permute instructions |
EP2798429A4 (en) * | 2011-12-30 | 2016-07-27 | Intel Corp | RECONFIGURABLE DEVICE FOR REPOSITIONING DATA IN A DATA WORD |
US10289412B2 (en) * | 2012-02-09 | 2019-05-14 | Qualcomm Incorporated | Floating point constant generation instruction |
US20130227238A1 (en) * | 2012-02-28 | 2013-08-29 | Thomas VIJVERBERG | Device and method for a time and space partitioned based operating system on a multi-core processor |
JP5900061B2 (ja) * | 2012-03-19 | 2016-04-06 | 富士通株式会社 | 試験方法、試験装置及びプログラム |
US9436475B2 (en) * | 2012-11-05 | 2016-09-06 | Nvidia Corporation | System and method for executing sequential code using a group of threads and single-instruction, multiple-thread processor incorporating the same |
US9804839B2 (en) * | 2012-12-28 | 2017-10-31 | Intel Corporation | Instruction for determining histograms |
US20140289502A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced vector true/false predicate-generating instructions |
US20140289497A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced macroscalar comparison operations |
US9817663B2 (en) * | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US20140289498A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced macroscalar vector operations |
US9477477B2 (en) * | 2014-01-22 | 2016-10-25 | Nvidia Corporation | System, method, and computer program product for executing casting-arithmetic instructions |
US9772849B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772848B2 (en) | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
CN105808497B (zh) * | 2014-12-30 | 2018-09-21 | 华为技术有限公司 | 一种数据处理方法 |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US9817791B2 (en) | 2015-04-04 | 2017-11-14 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word |
US11847427B2 (en) * | 2015-04-04 | 2023-12-19 | Texas Instruments Incorporated | Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor |
US9952865B2 (en) | 2015-04-04 | 2018-04-24 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file |
US20170177354A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Vector-Based Bit Manipulation |
US10503474B2 (en) | 2015-12-31 | 2019-12-10 | Texas Instruments Incorporated | Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US10564989B2 (en) * | 2017-11-28 | 2020-02-18 | Microsoft Technology Licensing | Thread independent parametric positioning for rendering elements |
US10424041B2 (en) | 2017-12-11 | 2019-09-24 | Microsoft Technology Licensing, Llc | Thread independent scalable vector graphics operations |
CN108984426B (zh) * | 2018-08-03 | 2021-01-26 | 北京字节跳动网络技术有限公司 | 用于处理数据的方法和装置 |
US11366663B2 (en) | 2018-11-09 | 2022-06-21 | Intel Corporation | Systems and methods for performing 16-bit floating-point vector dot product instructions |
EP4095704B1 (en) * | 2021-05-26 | 2023-08-23 | STMicroelectronics Application GmbH | Processing system, related integrated circuit, device and method |
CN113741567B (zh) * | 2021-11-08 | 2022-03-29 | 广东省新一代通信与网络创新研究院 | 矢量加速器及其控制方法、装置 |
CN115167933B (zh) * | 2022-09-08 | 2022-12-02 | 深圳市恒运昌真空技术有限公司 | 一种双处理器设备及其控制方法和处理器 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5975365A (ja) * | 1982-10-22 | 1984-04-28 | Hitachi Ltd | ベクトル処理装置 |
JPS60134974A (ja) * | 1983-12-23 | 1985-07-18 | Hitachi Ltd | ベクトル処理装置 |
CA1233260A (en) * | 1985-03-13 | 1988-02-23 | Chuck H. Ngai | High performance parallel vector processor having a modified vector register/element processor configuration |
CN85106496A (zh) * | 1985-08-29 | 1987-04-29 | 日本电气株式会社 | 向量处理*** |
JPH0622035B2 (ja) * | 1985-11-13 | 1994-03-23 | 株式会社日立製作所 | ベクトル処理装置 |
US4916657A (en) * | 1985-12-12 | 1990-04-10 | Alcatel Usa, Corp. | Single instruction multiple data (SIMD) cellular array processing apparatus employing multiple state logic for coupling to data buses |
US5146592A (en) * | 1987-09-14 | 1992-09-08 | Visual Information Technologies, Inc. | High speed image processing computer with overlapping windows-div |
JPH02291073A (ja) * | 1989-04-19 | 1990-11-30 | Koufu Nippon Denki Kk | ベクトルデータ処理装置 |
US5001662A (en) * | 1989-04-28 | 1991-03-19 | Apple Computer, Inc. | Method and apparatus for multi-gauge computation |
US5327541A (en) * | 1989-10-13 | 1994-07-05 | Texas Instruments Inc. | Global rotation of data in synchronous vector processor |
JP2526691B2 (ja) * | 1990-03-02 | 1996-08-21 | 三菱電機株式会社 | プログラマブルコントロ―ラの制御方法 |
JP2651267B2 (ja) * | 1990-07-26 | 1997-09-10 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
JP2791236B2 (ja) * | 1991-07-25 | 1998-08-27 | 三菱電機株式会社 | プロトコル並列処理装置 |
US5218211A (en) * | 1991-10-23 | 1993-06-08 | The United States Of America As Represented By The Secretary Of Commerce | System for sampling the sizes, geometrical distribution, and frequency of small particles accumulating on a solid surface |
FR2693287B1 (fr) * | 1992-07-03 | 1994-09-09 | Sgs Thomson Microelectronics Sa | Procédé pour effectuer des calculs numériques, et unité arithmétique pour la mise en Óoeuvre de ce procédé. |
US5361385A (en) * | 1992-08-26 | 1994-11-01 | Reuven Bakalash | Parallel computing system for volumetric modeling, data processing and visualization |
EP0651321B1 (en) * | 1993-10-29 | 2001-11-14 | Advanced Micro Devices, Inc. | Superscalar microprocessors |
US5495588A (en) * | 1993-11-18 | 1996-02-27 | Allen-Bradley Company, Inc. | Programmable controller having joined relay language processor and general purpose processor |
DE69424626T2 (de) * | 1993-11-23 | 2001-01-25 | Hewlett-Packard Co., Palo Alto | Parallele Datenverarbeitung in einem Einzelprozessor |
DE69519449T2 (de) * | 1994-05-05 | 2001-06-21 | Conexant Systems, Inc. | Raumzeigersdatenpfad |
US5706478A (en) * | 1994-05-23 | 1998-01-06 | Cirrus Logic, Inc. | Display list processor for operating in processor and coprocessor modes |
US5832290A (en) * | 1994-06-13 | 1998-11-03 | Hewlett-Packard Co. | Apparatus, systems and method for improving memory bandwidth utilization in vector processing systems |
US5513366A (en) * | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
US5706514A (en) * | 1996-03-04 | 1998-01-06 | Compaq Computer Corporation | Distributed execution of mode mismatched commands in multiprocessor computer systems |
-
1996
- 1996-08-19 US US08/699,597 patent/US6058465A/en not_active Expired - Lifetime
- 1996-08-26 US US08/703,434 patent/US5978838A/en not_active Expired - Lifetime
-
1997
- 1997-04-07 KR KR1019970012763A patent/KR100267091B1/ko not_active IP Right Cessation
- 1997-08-14 DE DE19735350A patent/DE19735350B4/de not_active Expired - Lifetime
- 1997-08-18 FR FR9710441A patent/FR2752630B1/fr not_active Expired - Lifetime
- 1997-08-19 CN CN97117404A patent/CN1112635C/zh not_active Expired - Lifetime
- 1997-08-19 TW TW086111969A patent/TW358313B/zh not_active IP Right Cessation
- 1997-08-19 JP JP9222416A patent/JPH10134036A/ja active Pending
- 1997-08-19 TW TW086111963A patent/TW366455B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN1112635C (zh) | 2003-06-25 |
TW358313B (en) | 1999-05-11 |
TW366455B (en) | 1999-08-11 |
KR19980018070A (ko) | 1998-06-05 |
FR2752630B1 (fr) | 2004-11-05 |
DE19735350A1 (de) | 1998-03-12 |
FR2752630A1 (fr) | 1998-02-27 |
DE19735350B4 (de) | 2006-12-07 |
JPH10134036A (ja) | 1998-05-22 |
CN1180864A (zh) | 1998-05-06 |
US6058465A (en) | 2000-05-02 |
US5978838A (en) | 1999-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100267091B1 (ko) | 비대칭싱글-칩이중멀티프로세서의정합및동기화 | |
US5752071A (en) | Function coprocessor | |
US6865663B2 (en) | Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode | |
KR100236527B1 (ko) | 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리 | |
US6671827B2 (en) | Journaling for parallel hardware threads in multithreaded processor | |
US5822606A (en) | DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word | |
US5179530A (en) | Architecture for integrated concurrent vector signal processor | |
US6003129A (en) | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
US5996058A (en) | System and method for handling software interrupts with argument passing | |
EP1846820B1 (en) | Methods and apparatus for instruction set emulation | |
WO1993002414A2 (en) | Data processing system with synchronization coprocessor for multiple threads | |
JPH11154144A (ja) | プロセッサをコプロセッサにインタフェースするための方法および装置 | |
JPH0215369A (ja) | ベクター処理システムの命令を実行する方法及び装置 | |
US4731736A (en) | Method and apparatus for coordinating execution of an instruction by a selected coprocessor | |
US5021991A (en) | Coprocessor instruction format | |
EP0525831B1 (en) | Method and apparatus for enabling a processor to coordinate with a coprocessor in the execution of an instruction which is in the intruction stream of the processor. | |
US4758950A (en) | Method and apparatus for selectively delaying an interrupt of a coprocessor | |
US7761688B1 (en) | Multiple thread in-order issue in-order completion DSP and micro-controller | |
US4914578A (en) | Method and apparatus for interrupting a coprocessor | |
US7237088B2 (en) | Methods and apparatus for providing context switching between software tasks with reconfigurable control | |
KR100267092B1 (ko) | 멀티미디어신호프로세서의단일명령다중데이터처리 | |
US4994961A (en) | Coprocessor instruction format | |
Kawano et al. | Fine-grain multi-thread processor architecture for massively parallel processing | |
US4758978A (en) | Method and apparatus for selectively evaluating an effective address for a coprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130701 Year of fee payment: 14 |
|
FPAY | Annual fee payment |
Payment date: 20140630 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20150630 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20160630 Year of fee payment: 17 |
|
EXPY | Expiration of term |