KR100267091B1 - 비대칭싱글-칩이중멀티프로세서의정합및동기화 - Google Patents

비대칭싱글-칩이중멀티프로세서의정합및동기화 Download PDF

Info

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
Application number
KR1019970012763A
Other languages
English (en)
Other versions
KR19980018070A (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 KR19980018070A publication Critical patent/KR19980018070A/ko
Application granted granted Critical
Publication of KR100267091B1 publication Critical patent/KR100267091B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

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 명령어 세트 확장자
Figure kpo00001
표 A2 는 ARM7 예외 목록을 보여주고 있다. 이들은 잘못된 명령어(faulting instruction)를 실행하기 전에 검출 및 기록된다. 예외 벡터 어드레스는 16진법으로 주어진다.
[표 A2]
ARM 예외
Figure kpo00002
다음은 ARM7 명령어 세트에 대한 확장자 구문을 설명하는 것이다. ARM7 구조는 코-프로세서 인터페이스를 위한 3개의 명령어 형식을 제공한다:
1. 코-프로세서 데이터(CDP)형식
2. 코-프로세서 데이터 전송(LDC/STC)형식
3. 코-프로세서 레지스터 전송(MRC/MCR)형식
CDP형식 명령어들은 ARM7 프로세서로서, 백(back) 통신하지 않는 작업들에 사용된다. 표 A3 은 상기 CDP 형식 명령어의 필드를 정의하고 있다.
[표 A3]
CDP 필드
Figure kpo00003
코-프로세서 데이터 전송 형식(LDC/STC)은 코-프로세서 레지스터의 서브세트를 메모리로부터 또는 메모리에 직접적으로 적재 또는 저장한다. ARM7 프로세서는 단어주소를 공급하며, 상기 코-프로세서는 데이터를 공급 또는 받아들이고, 전송되는 단어의 수를 제어한다. 표 A4 는 LDC/STC 형식 내의 필드들을 정의하고 있다.
[표 A4]
LDC/STC 형식
Figure kpo00004
코-프로세서 레지스터 전송 형식(MRC, MCR)은 ARM7 레지스터와 코-프로세서 레지스터 사이에 직접적으로 정보를 통신시키기 위해 사용된다. 표 A5는 MRC/MCR 형식을 갖는 명령어의 필드들을 정의하고 있다.
[표 A5]
MRC, MCR 형식
Figure kpo00005
확장 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 정의
Figure kpo00006
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)
Figure kpo00007
예외: 이용자 모드 중에 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 레지스터에게로의 매핑
Figure kpo00008
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 형식
Figure kpo00009
어셈블러 구문:
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 형식
Figure kpo00010
어셈블러 구문:
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 형식
Figure kpo00011
어셈블러 구문:
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]
그룹 필드 정의
Figure kpo00012
표 B4 에서, 레지스터 그룹의 표기는 다음과 같다:
VR: 가동중인 뱅크 벡터 레지스터
VRA: 대체 뱅크 벡터 레지스터
SR: 스칼라 레지스터
SP: 특수용 레지스터
RASR: 복귀 어드레스 스택(stack)레지스터
VAC: 벡터 어큐뮬레이터 레지스터(표 B. 5참조)
벡터 레지스터는 명령어 VMOV에 의해 스칼라 레지스터로 이동할 수 없으나, 명령어 VEXTRT에 의해서는 이동할 수 있다.
표 B5 는 VAC레지스터의 수 엔코딩을 정의하고 있다.
[표 B5]
Figure kpo00013
작동:
Rd = Rb
예외; VCSR 또는 VISRC에 예외 상태 비트를 세팅하는 것은 대응 예외를 야기시킬 수 있다.
프로그램밍 노트:
명령어 VMOV는 요소 마스크(element mask)에 영향을 받지 않는다. 상기 대체 뱅크 개념이 VEC64 모드 내에 있지 않기 때문에, 명령어 VMOV는 VEC64 모드 내의 대체 뱅크 레지스터로 또는 데체 뱅크 레지스터로부터 이동하는 것에는 사용되지 않는다.
내용없음

Claims (14)

  1. 제 1 프로세서;
    프로그램 명령어들의 시퀀스를 실행하기 위한 제 1 상태 및 유휴 상태로 되는 제 2 상태로 작동 가능한 제 2 프로세서; 및
    상기 제 1 및 제 2 프로세서가 접근할 수 있도록 상기 제 1 및 제 2 프로세서에 결합되고, 상기 제 2 프로세서가 상기 제 1 상태에 있는지 제 2 상태에 있는지를 나타내는 값을 저장하는 레지스터를 구비하는 것을 특징으로 하는 통합 멀티 프로세서.
  2. 제 1 항에 있어서,
    상기 제 1 프로세서는 제 1 최대 폭을 초과하지 않는 소정의 폭을 갖는 오퍼랜드를 조작할 수 있도록 하는 제 1 실행 데이터 경로를 포함하고, 상기 제 2 프로세서는 제 2 최대 폭을 초과하지 않는 소정의 폭을 갖는 오퍼랜드를 조작할 수 있도록 하는 제 2 실행 데이터 경로를 포함하고, 상기 제 2 최대 폭은 상기 제 1 최대 폭 보다 큰 것을 특징으로 하는 통합 멀티 프로세서.
  3. 제 2 항에 있어서,
    상기 제 2 프로세서는 병렬 작동되는 다수개의 처리 장치를 포함하는 것을 특징으로 하는 통합 멀티 프로세서.
  4. 제 3 항에 있어서,
    상기 제 2 프로세서는 단일 명령 복수 데이터 방식을 갖는 것을 특징으로 하는 통합 멀티 프로세서.
  5. 멀티 프로세서를 작동시키는 방법으로서, 제 1 프로세서에 제 1 프로그램 스레드를 실행하는 단계;
    상기 제 1 프로세서에 의해 실행되는 명령에 대응하여 제 2 프로세서에 제 2 프로그램 스레드를 개시시키는 단계;
    상기 제 1 프로그램 스레드 내의 루프를 실행시키는 단계로서, 루프 내에서 상기 제 1 및 제 2 프로세서에 의해 접근 가능한 레지스터를 상기 제 1 프로세서로 읽는 단계;
    상기 제 2 프로세서가 상기 제 2 프로그램 스레드의 적어도 제 1 부분을 완료하였음을 나타내는 값을 상기 레지스터에 기록하는 단계; 및
    상기 제 2 프로세서가 상기 제 2 프로그램 스레드의 상기 제 1 부분을 완료하였음을 나타내는 상기 값을 상기 제 1 프로세서가 읽는 것에 대응하여 상기 루프를 빠져나오는 단계를 구비하는 것을 특징으로 하는 방법.
  6. 제 5 항에 있어서,
    상기 루프를 빠져나간 이후, 상기 제 2 프로그램 스레드의 상기 제 1 부분이 미리 완료되었을 경우 상기 제 1 프로그램 스레드의 일부분을 실행시키는 단계를 추가로 구비하는 것을 특징으로 하는 방법.
  7. 제 5 항에 있어서,
    상기 레지스터는 상기 제 2 프로세서가 작동 상태인지 유휴 상태 인지의 여부를 나타내는 값을 저장하는 것을 특징으로 하는 방법.
  8. 제 7 항에 있어서,
    상기 제 2 프로세서는, 상기 제 2 프로그램 스레드의 실행을 정지시키고 상기 제 2 프로세서를 유휴 상태로 하는 명령어를 실행하는 과정에서, 상기 값을 상기 레지스터에 기록하는 것을 특징으로 하는 방법.
  9. 제 5 항에 있어서,
    상기 제 2 프로세서는 상기 값을 상기 레지스터에 기록한 후에 상기 제 2 프로그램 스레드를 계속적으로 실행하는 것을 특징으로 하는 방법.
  10. 제 5 항에 있어서,
    상기 제 1 프로세서는 상기 제 2 프로세서 보다 좁은 데이터 경로를 구비하는 것을 특징으로 하는 방법.
  11. 제 10 항에 있어서,
    상기 제 2 프로세서는 단일 명령 복수 데이터 방식을 갖는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 제 1 프로세서는 일반적인 용도의 구조를 갖는 것을 특징으로 하는 방법.
  13. 제 5 항에 있어서,
    상기 루프를 실행하는 것에 선행하여 상기 값을 기록하는 것을 특징으로 하는 방법.
  14. 제 5 항에 있어서,
    상기 루프의 실행은, 상기 값을 기록하기 전에 일차적으로 실행되며, 상기 값을 기록한 후 까지 반복되는 것을 특징으로 하는 방법.
KR1019970012763A 1996-08-19 1997-04-07 비대칭싱글-칩이중멀티프로세서의정합및동기화 KR100267091B1 (ko)

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 1996-08-26
US08/703,434 US5978838A (en) 1996-08-19 1996-08-26 Coordination and synchronization of an asymmetric, single-chip, dual multiprocessor

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) TW366455B (ko)

Families Citing this family (229)

* Cited by examiner, † Cited by third party
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
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
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
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
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
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
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
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
US6226738B1 (en) * 1997-08-01 2001-05-01 Micron Technology, Inc. Split embedded DRAM processor
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
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
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
WO1999048025A2 (en) 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
US6041404A (en) * 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
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
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
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
US6282554B1 (en) * 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
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
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
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
US20080016318A1 (en) * 1999-04-09 2008-01-17 Dave Stuttard Parallel data processing apparatus
US8762691B2 (en) 1999-04-09 2014-06-24 Rambus Inc. Memory access consolidation for SIMD processing elements using transaction identifiers
US20080008393A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
AU3829500A (en) * 1999-04-09 2000-11-14 Clearspeed Technology Limited Parallel data processing apparatus
US20080007562A1 (en) * 1999-04-09 2008-01-10 Dave Stuttard Parallel data processing apparatus
US7802079B2 (en) * 1999-04-09 2010-09-21 Clearspeed Technology Limited Parallel data processing apparatus
US7627736B2 (en) * 1999-04-09 2009-12-01 Clearspeed Technology Plc Thread manager to control an array of processing elements
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
US7526630B2 (en) 1999-04-09 2009-04-28 Clearspeed Technology, Plc Parallel data processing apparatus
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
US8174530B2 (en) 1999-04-09 2012-05-08 Rambus Inc. Parallel date processing apparatus
US7966475B2 (en) 1999-04-09 2011-06-21 Rambus Inc. Parallel data processing apparatus
US7506136B2 (en) * 1999-04-09 2009-03-17 Clearspeed Technology Plc Parallel data processing apparatus
US20070294510A1 (en) * 1999-04-09 2007-12-20 Dave Stuttard Parallel data processing apparatus
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
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
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
AU7099000A (en) * 1999-09-01 2001-03-26 Intel Corporation Branch instruction for processor
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
US6307789B1 (en) 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
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
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6701424B1 (en) 2000-04-07 2004-03-02 Nintendo Co., Ltd. Method and apparatus for efficient loading and storing of vectors
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
US7599981B2 (en) * 2001-02-21 2009-10-06 Mips Technologies, Inc. Binary polynomial multiplier
US7711763B2 (en) * 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7181484B2 (en) * 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
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
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
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
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
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
WO2002073230A2 (en) * 2001-03-14 2002-09-19 Mercury Computer Systems, Inc. Wireless communications methods and systems for short-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
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
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
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
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7181594B2 (en) 2002-01-25 2007-02-20 Intel Corporation Context pipelines
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
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and 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
US7793084B1 (en) 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US7971030B2 (en) * 2002-08-07 2011-06-28 Mmagix Technology Limited Method for using multiple processing resources which share multiple co-processor resources
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
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
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
US7739479B2 (en) 2003-10-02 2010-06-15 Nvidia Corporation Method for providing physics simulation data
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
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
GB2409068A (en) * 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
GB2409061B (en) * 2003-12-09 2006-09-13 Advanced Risc Mach Ltd Table lookup operation within a data processing system
GB2409065B (en) * 2003-12-09 2006-10-25 Advanced Risc Mach Ltd Multiplexing operations in SIMD processing
GB2409063B (en) * 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
GB2411974C (en) * 2003-12-09 2009-09-23 Advanced Risc Mach Ltd Data shift operations
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
GB2409062C (en) * 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing 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
GB2409060B (en) * 2003-12-09 2006-08-09 Advanced Risc Mach Ltd Moving data between registers of different register data stores
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
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
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
GB2409067B (en) * 2003-12-09 2006-12-13 Advanced Risc Mach Ltd Endianess compensation within a SIMD data processing system
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
KR101084806B1 (ko) * 2004-11-15 2011-11-21 엔비디아 코포레이션 비디오 처리
US9111368B1 (en) 2004-11-15 2015-08-18 Nvidia Corporation Pipelined L2 cache for memory transfers for 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
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
GB2426083A (en) * 2005-05-09 2006-11-15 Sony Comp Entertainment Europe Software emulation of a pipeline processor
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
US9223751B2 (en) * 2006-09-22 2015-12-29 Intel Corporation Performing rounding operations responsive to an instruction
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
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
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
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处理器装置及其模拟浮点栈操作的方法
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) * 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video 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
WO2013095637A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved permute instructions
US9619236B2 (en) * 2011-12-23 2017-04-11 Intel Corporation Apparatus and method of improved insert instructions
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
WO2013095648A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications
US9588764B2 (en) 2011-12-23 2017-03-07 Intel Corporation Apparatus and method of improved extract instructions
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
WO2013101222A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Reconfigurable device for repositioning data within 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 富士通株式会社 試験方法、試験装置及びプログラム
US9710275B2 (en) * 2012-11-05 2017-07-18 Nvidia Corporation System and method for allocating memory of differing properties to shared data objects
US9804839B2 (en) 2012-12-28 2017-10-31 Intel Corporation Instruction for determining histograms
US20140289498A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced macroscalar vector operations
US20140289497A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced macroscalar comparison operations
US20140289502A1 (en) * 2013-03-19 2014-09-25 Apple Inc. Enhanced vector true/false predicate-generating instructions
US9817663B2 (en) * 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9477477B2 (en) * 2014-01-22 2016-10-25 Nvidia Corporation System, method, and computer program product for executing casting-arithmetic instructions
US9772848B2 (en) 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772849B2 (en) 2014-11-14 2017-09-26 Intel Corporation Four-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
US11762794B2 (en) * 2021-05-26 2023-09-19 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)

* Cited by examiner, † Cited by third party
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
DE69428466T2 (de) * 1993-11-23 2002-05-23 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
EP0681236B1 (en) * 1994-05-05 2000-11-22 Conexant Systems, Inc. Space vector data path
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

Also Published As

Publication number Publication date
CN1180864A (zh) 1998-05-06
TW358313B (en) 1999-05-11
JPH10134036A (ja) 1998-05-22
DE19735350A1 (de) 1998-03-12
KR19980018070A (ko) 1998-06-05
FR2752630A1 (fr) 1998-02-27
FR2752630B1 (fr) 2004-11-05
US6058465A (en) 2000-05-02
CN1112635C (zh) 2003-06-25
TW366455B (en) 1999-08-11
US5978838A (en) 1999-11-02
DE19735350B4 (de) 2006-12-07

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
US5197138A (en) Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching
US6944850B2 (en) Hop method for stepping parallel hardware threads
US4729094A (en) Method and apparatus for coordinating execution of an instruction by a coprocessor
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) ベクター処理システムの命令を実行する方法及び装置
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
US4821231A (en) Method and apparatus for selectively evaluating an effective address for 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) 멀티미디어신호프로세서의단일명령다중데이터처리
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing

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