KR100289746B1 - 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법 - Google Patents

벡터 데이타 처리용 컴퓨터 시스템 및 그 방법 Download PDF

Info

Publication number
KR100289746B1
KR100289746B1 KR1019940025652A KR19940025652A KR100289746B1 KR 100289746 B1 KR100289746 B1 KR 100289746B1 KR 1019940025652 A KR1019940025652 A KR 1019940025652A KR 19940025652 A KR19940025652 A KR 19940025652A KR 100289746 B1 KR100289746 B1 KR 100289746B1
Authority
KR
South Korea
Prior art keywords
vector
register
data
processing unit
registers
Prior art date
Application number
KR1019940025652A
Other languages
English (en)
Other versions
KR950012256A (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 KR950012256A publication Critical patent/KR950012256A/ko
Application granted granted Critical
Publication of KR100289746B1 publication Critical patent/KR100289746B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length

Abstract

다수의 특정 다중 엘레멘트 레지스터, 여기서는 벡터 레지스터라 한다, 는 스칼라 컴퓨터에 삽입된다. 이 벡터 레지스터는 전체 벡터 데이타 어레이가 처리 완료될 때까지 한번에 하나의 엘레멘트를 발생시키도록 메인 메모리와 처리 유니트간의 벡터 데이타의 순차 전송을 위해 제어된다. 이 벡터 레지스터는 처리 유니트 및 메인 메모리와 함께 동작한다. 벡터 레지스터와 스칼라 레지스터 사이에 공통의 어드레스 구조가 이용됨으로서 벡터 레지스터가 스칼라 레지스터 어드레스 공간에서 가시 가능해진다. 포인터는 벡터 레지스터에서 처리동안 어레이 엘레멘트의 오더 트랙(order track)을 유지하는데 이용된다. 벡터 레지스터는 벡터 처리 동작의 중간 결과를 저장하는데 이용된다.

Description

벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
제1도는 본 발명의 컴퓨터 시스템의 블록도.
제2도는 제1도의 컴퓨터 시스템의 어드레스 공간에 벡터 및 스칼라 레지스터 어드레스의 맵핑을 나타내는 개략도.
제3도는 벡터 및 스칼라 레지스터와 제1도의 컴퓨터 시스템의 나머지 구성 요소와의 접속 방법을 나타내는 블록도.
제4도는 벡터 레지스터로 및 벡터 레지스터로부터 벡터 데이타를 순차 전송 하기 위해 벡터 레지스터를 제어하는 방법을 나타내는 개략도.
제5도는 하나의 벡터 레지스터와 그것의 부속 제어 회로의 블록도.
* 도면의 주요부분에 대한 부호의 설명
100 : CPU 107 : 버스 제어 유닛
108 : 직접 메모리 액세스(DMA) 제어기
111 : 부동 소숫점 유닛(FPU) 208 : 멀티플렉서
본 발명은 벡터 데이타의 고속 처리에 관한 것으로, 더욱 상세히 말하자면, 벡터 처리 동작을 향상시키기 위해 "벡터 레지스터"로 칭해지는 특수한 다중 성분 레지스터를 이용하는 컴퓨터 시스템 및 방법에 관한 것이다.
데이타 처리 동작은 스칼라, 벡터 및 이들을 혼합한 것으로 분류될 수 있다. 스칼라 처리에서는, 스칼라 데이타의 성분은 그들의 성질 및 실행될 계산 또는 연산에 대해 서로 독립적이다. 벡터 처리에서는, 벡터 데이타의 성분은 어레이로 배열된다. 한 어레이의 성분은 사실상 동일하고 일반적으로 각각 동일한 계산 또는 연산에 따른다. 벡터 처리는 일반적으로 대량의 데이타 처리후 그 결과에 도달한다. 대표적인 벡터 데이타의 예로는 수학적으로 연산되는 매트릭스가 있다.
벡터 처리의 하나의 중요한 응용 분야는 컴퓨터 그래픽 분야이다 대표적인 응용 장치에는 레이저 프린터, 디지탈 복사기, 비디오 게임 및 의료 진단용 3차원 영상 처리기 등이 있다. 예컨대, 이러한 장치에서, 매트릭스에 대한 벡터 연산은 좌표 변환 실행에 이용될 수 있다.
벡터 연산을 위해 스칼라 데이타를 처리하도록 설계된 컴퓨터를 이용하게 되면, 처리가 지연되어 전체적인 처리 속도가 늦어지게 된다. 한가지 일을 위해, 프로세서는 대량의 벡터 데이타 어레이가 컴퓨터의 처리 유닛 및 메인 메모리 사이에서 한 성분씩 전송되는 동안 상당한 시간을 기다려야 한다. 또 다른 작업을 위해, 프로세서는 메인 메모리로 전송될 벡터 데이타의 모든 성분에 대한 어드레스를 발생시키는데 상당한 시간을 소비한다. 더욱이, 벡터 연산을 고급 언어로 실행하도록 스칼라 컴퓨터를 프로그램하는 것도 쉽지 않다. 따라서, 많은 시간을 소비하게 되는 수동 코딩 작업이 필요로 된다. 이러한 이유로, 벡터 데이타를 처리하기 위해 전용 컴퓨터를 이용하는 것이 공통 과제였다.
본 발명에 따르면, 복수의 특수한 다중 성분 레지스터(이후 "벡터 레지스터" 라 한다)가 스칼라 컴퓨터에 제공된다. 이 벡터 레지스터는 전체 벡터 데이타 어레이가 처리될 때까지 한번에 하나의 성분을 발생시키도록 컴퓨터의 메인 메모리와 처리 유닛간의 벡터 데이타의 전송이 순차 제어된다.
본 발명의 특징은 벡터 레지스터를 처리 유닛 및 메인 메모리와 동시에 작동 하도록 사용하는 것이다. 구체적으로, 벡터 데이타는 한 그룹의 벡터 레지스터와 처리 유닛 사이에서 전송되어 포어그라운드(foreground)로 처리 유닛의 벡터 데이타에 대해 동작하게 되는 한편 벡터 데이타는 다른 그룹의 벡터 레지스터와 메인 메모리 사이에서 전송되어 백그라운드의 유효한 벡터 데이타를 형성하게 된다. 그 결과, 처리 유닛이 메인 메모리로부터 벡터 데이타를 수신하거나 메인 메모리로 벡터 데이타를 전송하기 위해 대기해야 하는 시간이 매우 짧아져 전체 처리 능력이 향상된다.
본 발명의 다른 특징은 컴퓨터의 벡터 레지스터가 스칼라 레지스터 어드레스 공간에서 볼 수 있도록 벡터 레지스터와 스칼라 레지스터 사이에 공통 어드레스 구조를 이용하는 것이다. 상세하게는, 벡터 레지스터에는 스칼라 레지스터의 일부와 동일한 레지스터가 할당된다. 벡터 처리 중에, 이들 어드레스는 스칼라 처리 중에 사용되지 않는 벡터 레지스터에 맵핑된다. 스칼라 처리 중에, 이들 어드레스는 벡터 처리 중에 사용되지 않는 스칼라 레지스터에 맵핑된다. 그 결과, 고급 언어를 기계 판독 가능 언어로 자동적으로 변환하는 컴파일러로부터 어드레스가 지정될 수 있기 때문에, 컴퓨터 시스템은 고급 언어로 보다 쉽게 프로그램될 수 있다.
본 발명의 또 다른 특징은 처리 중에 어레이 성분의 순서(order)의 트랙을 유지하도록 벡터 레지스터에 지시기를 이용하는 것이다. 결과적으로, 벡터 데이타는 벡터 레지스터에 저장된 전체 어레이 또는 어레이의 일부가 처리 완료될 때까지 벡터 레지스터에 유지되고, 완전히 처리된 때, 그러한 벡터 페이타는 저장되는 경우 메인 메모리로 전송될 수 있다. 그 결과, 프로세서는 개개의 벡터 데이타 성분에 대한 메인 메모리 어드레스를 발생시키는 작업의 부담을 덜 수 있다.
본 발명의 또 다른 특징은 백터 처리 연산의 중간 결과를 저장하도록 벡터 레지스터를 사용하는 것이다. 구체적으로, 제1, 제2 및 제3 벡터 레지스터가 메인 메모리와 처리 유닛 사이에 접속되어 이들간에 벡터 데이타 어레이를 전송한다. 먼저, 처리되지 않은 벡터 데이타는 제1 레지스터로부터 처리 유닛으로 전송된다. 두 번째로, 처리된 벡터 데이타는 처리 유닛으로부터 제2 레지스터로 전송된다. 세 번째로, 처리된 벡터 데이타는 제2 레지스터로부터 처리 유닛으로 전송된다. 끝으로, 재처리된 벡터 데이타는 처리 유닛으로부터 제2 레지스터와는 다른 레지스터들중 하나로 전송된다. 따라서, 제2 레지스터는 동작의 중간 결과를 저장하는데 이용되어 메인 메모리 저장 동작을 생략할 수 있게 된다.
제1도에서, 메인 프레임 컴퓨터, 워크 스테이션, 또는 퍼스널 컴퓨터와 같은 컴퓨터 시스템은 단일 반도체 칩으로 실행되는 것이 바람직한 CPU(100), 메인 메모리(101) 및 주변 장치(102)를 갖는다. 본 발명의 논의 및 이해를 용이하게 하기 위해 CPU(100)는 참고 문헌("The Sparc Architecture Manual", Version 8, by SPARC International, Inc., Prentice Hall, 1992)에 기술되어 있는 SPARC 구조를 갖는 것으로 한다. 상기 참고 문헌의 내용은 참고로 본 명세서에 통합되어 있다.
CPU(100)는 정수 유닛(lU)(103), 명령 캐시(104), 데이타 캐시(106), 직접 메모리 액세스(DMA) 제어기(108), 버스 제어 유닛(107), 외부 인터페이스(109, 110) 및 부동 소숫점 유닛(FPU)(111)을 포함한다. 하드웨어와 같은 이들 구성 요소는 상업적으로 시판되고 있는 CPU에 포함되어 있다. 외부 인터페이스(109)는 CPU (100)와 메인 메모리(101) 사이에 연결되어 메모리 버스 인터페이스로 이용된다. 외부 인터페이스(110)는 CPU(100)와 주변 장치(102) 사이에 접속되어 주변 버스 인터페이스로 이용된다. 논의의 목적상, CPU(100)는 32 비트 워드로 동작하고, CPU(100), 메인 메모리(100)와 주변 장치간의 데이타 경로는 64 비트로 확장된다. 그러나, 이들 값은 바람직한 실시예에서의 선택일 뿐으로서, 본 발명의 용이한 이해를 위한 것이므로 본 발명을 제한하는 것으로 해석되어서는 안된다.
CPU(100)는 버스 제어 유닛(BCU)(107), 명령 캐시(104) 및 IU(103)에 접속되는 명령 버스(113)와, BCU(107), lU(103) 및 FPU(111)에 접속되는 데이타 버스(114)를 갖는다.
BCU(107)는 메모리 동작을 위한 여러 가지 요구(명령 페치, 오퍼랜드 로드/저장 DMA 요구 등)를 조정하도록 동작한다. 잘 공지되어 있는 방식으로, BCU(109)는 어떤 요구를 어떠한 순서로 처리할 것인가를 결정하고, 또한 버스 인터페이스[즉, 주변 버스 인터페이스(110) 또는 메모리 버스 인터페이스(109)]가 요구를 서비스할 것인가를 결정한다. 메모리 버스의 폭(64 비트)이 컴퓨터 워드의 폭(32 비트)의 2배이기 때문에, 메모리 버스는 메모리 액세스 동작을 실행하기 위해 2 채널, 즉 32 비트 채널 0과 32 비트 채널 1로 분할될 수 있다.
메모리는 DMA 제어기(108)의 제어에 의해 통상의 직접 메모리 액세스를 통해 동작될 수 있다. DMA 제어기(108)는 메모리 채널에 대한 DMA 동작이 완료될 때 세트되는 각 메모리 채널에 대한 상태 비트를 갖는다. 이 비트는 각 채널에 제공되는 DMA 상태 레지스터의 일부이다. 바람직한 실시예에서, 상태 레지스터는 각각 ASR(보조 상태 레지스터)(18)과 ASR(19)의 SPARC ASR 어드레스로 할당된다.
DMA(108)는 또한 버퍼 연쇄 직접 메모리 액세스 동작을 지원한다. 버퍼 연쇄 DMA는 응용 프로그램이 하나의 긴 벡터에 대한 한세트의 동작 초기에 하나 이상의 DMA를 셋업되게 한다. 버퍼 연쇄 DMA 동작은 DMA 동작의 파라미터를 하나의 연결된 리스트에 기록함으로서 실행되고, 현재의 DMA 동작의 파라미터를 지시하기 위해 지시기가 제공된다. 하나의 DMA 동작이 종료할 때, 상기 지시기는 리스트 상의 다음 DMA 동작을 실행하도록 전진된다.
상기 상태 레지스터에 부가하여, 각각의 DMA 채널은 연결된 리스트의 다음 성분을 지시하도록 연쇄 모드로 사용되는 디스크립터 지시기를 갖는다. 바람직한 실시예에서, 채널 0의 상기 디스크립터 지시기의 ASI 부는 SPARC 어드레스 공간 ASI = 0×1 어드레스 0×180으로 맵핑되고, 채널 1의 디스크립터 지시기는 SPARC 어드레스 공간 ASI = 0×1 어드레스 0×1A0으로 맵핑된다. 상기에 부가하여, 각 DMA 채널은 DMA에 대해 SPARC 어드레스 공간을 지정하기 위한 소스/목적지 ASI 레지스터, 소스 어드레스 레지스터, 목적지 어드레스 레지스터, 바이트 카운트 어드레스 및 채널 제어 어드레스를 갖는다. 이들 레지스터는 또한 서로 다른 메모리 위치로 맵핑된다. 예컨데, 채널 0과 채널 1에 대한 "소스/목적지 ASI" 레지스터는 각각 SPARC ASI 0×1 위치 0×180 및 0×1A0으로 맵핑되고, "소스 어드레스" 레지스터는 ASI 0×1 위치 0×184 및 0×1A4로 맵핑되며, "목적지 어드레스" 레지스터는 ASI 0×1 위치 0×18C 및 0×1A8로 맵핑되고, "바이트 카운트" 레지스터는 ASI 0×1 위치 0×18C 및 0×1AC로 맵핑되며, 채널 제어 레지스터는 ASI 0×l 위치 0×194 및 0×1B4로 맵핑된다. 디스크립터 지시기의 어드레스부는 ASI 0×l 위치 0×190 및 0×1B0으로 맵핑된다.
IU(103)는 정수 산술 명령의 실행을 책임진다. IU(103)는 또한 정수, 논리 및 부동 소숫점 명령의 실행을 포함하는 CPU(100)의 모든 동작을 제어한다(물론, CPU(100)는 부동 소숫정 명령을 실행하지 않을 수도 있다). 예컨대, IU(103)는 어드레스의 발생 및 CPU(100)에 의해 실행될 메모리의 명령 페치, 뿐 만 아니라 메모리로부터/메모리 내로 오퍼랜드의 로드 및 저장 명령을 실행하는 동안 오퍼랜드 페치의 개시를 책임진다.
명령은 명령 캐시(104) 또는 메인 메모리(101)로부터 명령 버스(103)를 통해 IU(103)에 의해 페치된다. 바람직한 실시예에서, 명령 캐시(104)는 각각 개별적으로 록킹될 수 있는 8 워드 라인을 갖는 8 킬로바이트 양방향 세트 연상 캐시(2-way set associative cache)이고, 명령 버스(103)의 폭은 32 비트이다. 데이타는 데이타 캐시(106)로부터 데이타 버스(105)를 통해 IU(103)에 의해 페치된다. 바람직한 실시예에서, 데이타 캐시(106)는 4 워드 라인을 갖는 양방향 세트 연상 캐시이고, 데이타 버스는 64 비트로 확장된다.
명령 캐시(104)와 데이타 캐시(106)는 모두 개별적으로 록킹될 수 있다. 필요한 명령 또는 데이타가 캐시로부터 생략되어 있는 경우, 그 필요한 명령 또는 데이타를 포함하는 4 워드가 메인 메모리로부터 페치되어 캐시의 선택된 엔트리를 교체한다. 그러나, 엔트리가 록킹된 경우에는 캐시의 생략 부분으로 교체되지 않는다. 이것에 의해 사용자는 캐시의 임계 코드를 록킹할 수 있다. 데이타 캐시 엔트리가 록킹된 경우, 그 데이타 캐시 엔트리는 이들 위치로의 어떠한 기입도 메인 메모리로 전송되지 못하기 때문에 국소 메모리로서 작용한다.
부동 소숫점 연산은 FPU(111)에 의해 실행되고, 데이타 포맷 변환, 이동, 제곱근, 덧셈, 뺄셈, 곱셈 나눗셈 및 비교 연산을 포함한다. SPARC 구조에 따라, 부동 소숫점 계산은 부동 소숫점 레지스터에서 동작하는 레지스터 대 레지스터 동작이다. 또한 SPARC 구조에 따라, FPU(111)에는 32개의 32 비트 부동 소숫점 레지스터(f0∼f31)가 제공된다. 단일 정밀값이 하나의 레지스터를 점유하고, 2중 정밀값이 짝수 홀수쌍의 레지스터를 점유하고, 그리고 4중 정밀값이 4중 정렬된 그룹의 4 레지스터를 점유한다. 하나 이상의 워드가 한번에 처리될 수 있기 때문에, 용어 "성분"은 본 명세서에서 CPU(100)에 의해 처리되는 최하위의 데이타 유닛을 나타내는데 이용된다. 예컨대, 단일 정밀 연산에서 성분은 32 비트 워드이고, 이중 정밀 연산에서 성분은 64 비트 유닛이다. SPARC 구조는 CPU(100)의 "코 프로세서(co-processor)" 동작을 지원하기 위해 코프로세서 명령 세트를 제공한다. 이들 코프로세서 동작은 CPU(100)의 설계자에 의해 한정될 수 있다. 예컨대, 코프로세서 명령 세트는 코프로세서 레지스터와 메인 메모리 사이에서 데이타를 이동시키는 로드 및 저장 명령을 포함할 수 있다. 코프로세서 명령 세트는 한세트의 코프로세서 레지스터에 액세스하기 위한 어드레스 공간을 갖는다. 코프로세서 레지스터의 구조 또한 컴퓨터 설계자에 의해 한정될 수 있다.
전술한 바와 같이, 컴퓨터 시스템은 통상적인 것이다. 본 발명에 따르면 본 명세서에서는 "벡터 레지스터"로 칭해지는 복수(예컨대, 6게)의 특정 레지스터(115)가 벡터 데이타를 조절하기 위해 CPU(100)에 일체화되어 있다. 실재로, 각 벡터 레지스터는 기입되거나 판독될 성분 위치를 표시하기 위한 지시기를 갖는 2차원(64×32) 단일 포트 RAM 어레이일 수 있다. 지시기는 한 어레이에 대한 동작의 초기에 "벡터 레지스터의 선두"에서 개시하고, 어레이 성분의 트랙을 유지하기 위해 성분이 기입되거나 vks독될 때마다 하나의 성분 위치씩 전진한다. 지시기는 최후의 성분 위치에 도달한 후 벡터 레지스터의 선두로 복귀한다. 메모리 버스(117)는 BCU(107)와 벡터 레지스터(115)에 접속된다.
벡터 데이타는 성분 어레이로 정렬된다(단일 정밀용 32 비트 워드). 바람직하게는, 벡터 연산은 스칼라 부동 소숫점 명령과 동일한 포맷을 갖는 한 세트의 명령에 의해 실행된다. 어떠한 경우에도, 2세트의 명령은 명령의 유형, 즉 벡터 또는 스칼라를 식별하기 위해 코딩된 필드와, 벡터 연산 중에 벡터 레지스터로 스칼라 연산 중에 부동 소숫점 레지스터(이하, 벡터 레지스터와의 구별을 위해 "스칼라 레지스터"로 기술함)로 맵핑되는 후술되는 어드레스를 갖는다. 그 결과, 범용 스칼라 처리 및 벡터 처리는 동일한 포맷을 갖는 명령 및 필요한 경우 동일한 하드웨어로 연속적으로 실행될 수 있다. 바람직하게는, 부동 소숫점 명령 세트의 일부의 연산 코드는 벡터형 연산용의 명령을 실행하는데 이용된다. 통상, 그러한 벡터 연산은 2 벡터의 덧셈, 하나의 벡터와 스칼라 수의 곱셈 및/또는 하나의 벡터와 다른 벡터의 곱셈 등과 같은 계산적인 연산이다.
하드웨어를 감소시키기 위해, 바람직하게는, FPU(111)에 벡터형 연산을 실행하기 위한 회로가 일체화되어 있다. 이러한 목적으로, 벡터 레지스터(115)가 버스(116)에 의해 FPU(111)에 접속된다(상기 벡터형 연산은 본 발명의 범위로부터 벗어나지 않는 범위내에서 부동 소숫점 유닛과는 별개의 회로에 의해 실행될 수도 있다). 예컨대, FPU(111)의 스칼라 레지스터(f0∼f19)는 벡터형 연산을 실행하는데 사용될 수 있는 것이 바람직하다. 이들 20개의 스칼라 레지스터는 예컨대, 상수 또는 임시적인 변수를 저장하기 위한 범용 레지스터로 작용할 수도 있다.
벡터 레지스터(115)와 CPU(100)간의 상호 관계가 제2도에 도시되어 있다. 스칼라 모드로 연산하는 32개의 부동 소숫점(스칼라) 레지스터, 즉 레지스터(f0∼f31)가 열(130)에 표시되어 있다. 벡터 모드에서, 스칼라 레지스터(f20, f22, f24, f26, f28, f30)는 대응하는 스칼라 레지스터와 동일한 어드레스가 할당되는 즉, 벡터 레지스터(F20)에는 스칼라 레지스터(f20)와 동일한 어드레스가 할당되는 벡터 레지스터(F20, F22, F24, F26, F28, F30)로 교체된다. 이것은 스칼라 레지스터 (f0∼f19, f21,f23,f25,f27,f29,f31)가 열(130)에 도시된 것과 동일한 레지스터인 열(132)에 도시되어 있다. 스칼라 산술 또는 로드 명령이 실행될 때, FPU(111)는 명령 어드레스가 맵핑되는 스칼라 레지스터(f0∼f31)에 액세스한다. 벡터 산술 명령이 실행될 때 FPU(111)는 명령 어드레스가 맵핑되는 벡터 레지스터(F20, F22, F24, F26 F28, F30)와 스칼라 레지스터(f0∼f19, f21, f23, f25, f27, f29, f31)에 액세스한다.
두 동작 모드에서 동일한 어드레스가 사용되기 때문에, 벡터 레지스터는 "스칼라 레지스터 어드레스 공간에서 볼 수 있다"고 할 수 있고, 이것은 컴파일러가 벡터 연산 중에 벡터 레지스터 어드레스를 지정할 수 있기 때문에 고급 언어로 컴퓨터를 프로그램하기 쉽게 한다.
2개의 예시적 명령이 제2도에 도시되어 있다. 예 (1)은 규칙적인 것을 나타내는, 즉 레지스터(f19)로부터 레지스터(f20)로의 단일 정밀 데이타의 스칼라 연산 이동을 나타내는 "fmovs" 명령이다 예 (2)는 향상된 것을 나타내는, 즉 레지스터(f19)로부터 레지스터(F20)으로의 단일 정밀 데이타의 벡터 연산 이동을 나타 내는 "efmovs" 명령이다. 벡터 모드에서 FPU(111)가 현재의 벡터 명령의 어드 레스가 맵핑되는 스칼라 및 벡터 레지스터, 즉 열(132)의 레지스터의 데이타에 대해, 소위 "포어그라운드"에서 동작하는 등안, DMA 제어기(108)는 하나 이상의 벡터 레지스터로부터 메모리 버스(117), BCU(107) 및 외부 인터페이스(109)를 통해 메인 메모리(101)로의 이전의 산술 연산의 벡터 데이타 결과의 전송을 모니터하거나, 동일한 루트를 통해, 소위 "백그라운드"에서, 메인 메모리(101)로부터 하나 이상의 벡터 레지스터로의 다음 산술 연산을 위한 새로운 데이타의 전송을 모니터 한다. 벡터 레지스터와 메인 메모리(101)간의 데이타의 직접 전송은 DMA 제어기 (108)에 저장된 명령에 의해 제어된다. DMA 전송이 완료될 때, 상태 레지스터(134)가 세트된다. FPU(111) 또는 lU(103)는 상태 레지스터(134)를 모니터하고, 동작 완료후 상태 레지스터가 동시에 DMA 전송이 완료되었음을 나타낼 때까지 정지한다. 새로운 DMA 전송이 시작될 때, 상태 레지스터(134)가 리세트된다.
처리될 벡터 데이타 어레이가 벡터 레지스터보다 큰 경우, 벡터 레지스터중의 일부는 벡터 레지스터의 성분 용량, 즉 깊이(depth)와 동일한 어레이의 일부에 대해 포어그라운드로 산술 연산을 실행할 수 있는 반면에, 나머지 벡터 레지스터는 통상의 공지된 DMA 전송 기술을 이용하여 메인 메모리(101)로 또는 메인 메모리(101)로부터 어레이의 다른 일부의 DMA 전송을 위해 백그라운드로 사용된다. 상기 포어그라운드 및 백그라운드의 동시 연산은 FPU(111)가 벡터 데이타가 처리되기를 대기해야 하는 시간을 크게 감소시켜 처리되는 벡터 데이타의 처리 능력을 향상시킨다.
이제 벡터 모드에서의 컴퓨터 연산에 대한 여러 가지 예를 설명한다.
제1예에서, 산술 연산 Z=A*X+Y가 실행되며, 여기에서 A는 단일 상수값 이고, X, Y 및 Z는 벡터 데이타의 어레이이다. 벡터 데이타 어레이 X, Y 및 Z의 길이는 수백 워드로서, 단일 벡터 레지스터의 용량을 초과하는 것으로 가정한다. 먼저, 스칼라값 A가 스칼라 레지스터(f0)내에서 판독된다. 벡터 레지스터의 길이는 이들 레지스터의 깊이인 64 워드로 세트된다. 벡터 데이타 어레이 X 및 Y의 제1의 64 워드가 DMA 전송을 이용하여 각각 벡터 레지스터(F20, F22)내에서 판독된다.
포어그라운드에서, 64 벡터 길이와 등가인 벡터 곱셈(A*X)이 연장된 단일 정밀 부동 소숫점 곱셈 명령(EFMULs)을 이용하여 64회 연속적으로 실행되고, 그 결과가 벡터 레지스터(F30)에 저장된다. 동시에, 백그라운드에서, 벡터 데이타 어레이 X 및 Y의 다음 64 워드가 DMA 전송을 이용하여 각갈 벡터 레지스터(F24, F26)내로 판독된다.
EFMULs %f0, %F20, %F30
EFMULs %f0, %F20, %F30
EFMULs %f0, %F20, %F30
.
.
EFMULs %f0, %F20, %F30
EFMULs %f0, %F20, %F30
다음에, 64 벡터 길이와 등가인 벡터 덧셈(A*X+Y)이 연장된 단일 정밀 부동 소숫점 덧셈 명령(EFADDs)을 이용하여 64회 연속적으로 실행되고, 그 결과가 벡터 레지스터(F20)에 저장된다.
EFADDs %F30, %F22 %F20
EFADDs %F30, %F22,%F20
EFADDs %F30, %F22,%F20
.
.
EFADDs %F30, %F22,%F20
EFADDs %F30, %F22,%F20
다음에, 백그라운드 DMA의 종료 확인후, 다음 64 벡터 길이와 등가인 벡터 곱셈(A*X)이 포어그라운드에서 연장된 단일 정밀 부동 소숫점 곱셈 명령을 이용하여 64회 연속적으로 실행되고, 그 결과가 벡터 레지스터(F30)에 저장된다. 동시에, 백그라운드에서, 이전의 결과를 포함하는 벡터 레지스터(F20)는 DMA를 이용하여 벡터 Z의 최상부내에 기입되고, 벡터 X 및 Y의 다음의 64 워드가 각각 벡터 레지스터(F20, F22)내에서 판독된다.
EFMULs %f0, %F24, %F30
EFMULs %f0, %F24, %F30
EFMULs %f0, %F24, %F30
.
.
EFMULs %f0 ,%F24, %F30
EFMULs %f0 ,%F24, %F30
다음에, 다음 벡터 길이와 등가인 벡터 덧셈(A*X+Y)이 연장된 단일 정밀 부동 소숫점 덧셈 명령을 이용하여 64회 연속적으로 실행된다.
EFADDs %F30, %F26, %F24
EFADDs %F30, %F26, %F24
EFADDs %F30, %F26, %F24
.
.
EFADDs %F30, %F26, %F24
EFADDs %F30, %F26, %F24
이 동작은 전체 어레이를 완전히 처리하는데 필요한 회수만큼 반복된다.
상기 인터리브는 다음과 같이 요약될 수 있다.
(1) 포어그라운드 : FPU F30 = f0*F20, F20=F30+F22
(AX = A*X) , (Z=AX+Y)
백그라운드 : DMA F24 → 메모리, F24 ← 메모리, F26 ← 메모리
(2) 포어그라운드 : FPU F30 = f0*F24, F24=F30+F26
(AX=A*X), (Z=AX+Y)
백그라운드 : DMA F20 → 메모리, F20 ← 메모리, F22 ← 메모리
상기 (1)과 (2)는 벡터 데이타 어레이 X 및 Y의 모든 성분을 처리하는데 필요한 회수만큼 반복된다. 별법으로는, 상기 계산의 결과는 다른 벡터 레지스터에 저장될 수도 있을 것이다.
다른 예는 하나의 컨벌루션(convolution)을 계산하기 위해 하나의 벡터 레지스터를 이용한다. 처리는 벡터 프로세서와 결합된 벡터 레지스터가 아니라 벡터 레지스터와 스칼라 프로세서를 결합함으로써 원활하게 실행된다.
선형 컨벌루션은 다음과 같이 실행된다.
o[t] = k[0]*i[t] + k[l]*i[t-1] + … + k[n]*i[t-n]
여기에서, k는 컨벌루션의 커널이고 n+1의 깊이를 가지며, i[t]는 특정 시간 t에서의 입력이고, o[t]는 이 특정 시간 t에서의 출력이다. 완성의 정도를 변화하는데는 다수의 출력이 있다. 시간 t(즉, o[t])에서 출력은 입력 i[t]가 처리되자마자 완성된다. 이 때, 즉 시간 t에서 시간 t+n, 즉 o[t+n]에서의 출력이 즉시 개시된다. 이식은 다음과 같이 표시된다.
O[t] = k[0]*i[t] + o[t]
O[t+1] = k[1]*i[t] + o[t+1]
.
.
.
o[t+n-1] =k[n-1]*i[t] + o[t+n-1]
o[t+n] = k[n]*i[t]
특정 시간에서 입력 i[t]는 스칼라 레지스터(f0)내에서 판독되는 것으로 가정한다. 특정 시간에서 출력 o[t]는 스칼라 레지스터(f2)로부터 기입되는 것으로 가정한다. 또한, 커널은 벡터 레지스터(F30)내에서 판독 완료된 것으로 가정한다.
벡터 레지스터(F20, F22)는 o[t]로부터 o[t+n-1]로 인터리브된 방식으로 이용된다. 처리 결과는 다음과 같다.
(1) 로드 f0
f2 = F30*f0 + F20
F22 = F30*f0 + F20
F22 = F30*f0 + F20
.
.
F22 = F30*f0 + F20
F22 = F30*f0
저장 f2
(2) 로드 f0
f2 = F30*f0 + F22
F20 = F30*f0 + F22
F20 = F30*f0 + F22
.
.
F20 = F30*f0 + F22
F20 = F30*f0
저장 f2
상기 처리 (1)과 (2)는 필요한 횟수만큼 반복된다. 여기에서, 백그라운드 DMA는 처리의 개시 시에 커널 벡터를 벡터 레지스터에 로드하는데만 이용된다. 다른 벡터 레지스터는 누산된 컨벌루션 값을 유지하는데 이용된다.
제3도는 벡터 레지스터(115)가 포어그라운드로 동작하는 컴퓨터(100)의 나머지 부분과 FPU(111)에 어떻게 전기적으로 상호 접속되는지를 나타낸다. 벡터 레지스터(115)의 포어그라운드 동작은 도시하지 않았다. 스칼라 레지스터(f0∼f19, f21, f23, f25, f27, f29, f31)는 블록(201)으로 표시된다 스칼라 레지스터(f20 f22, f24, f26, f28, f30)는 각각 블록(206a… 206f)으로 표시된다. 6개의 벡터 레지스터(115)는 각각 블록(204a… 204f)으로 표시된다. 데이타 버스(114)는 스칼라 레지스터(fO∼f19, f21, f23, f25, f27, f29 f21), 즉 블록(201)
의 입력에 접속된다. 또한, 데이타 버스(114)는 스칼라 레지스터(f20… f30),
즉 블록(206a… 206f)의 입력 및 벡터 레지스터(F20∼F30), 즉 블록(204a‥‥ 204f)의 입력에 스위치(218a‥‥ ,218f)를 통해 교대로 결합된다. 동일한 어드레스를 갖는 스칼라 및 벡터 레지스터쌍의 출력은 각각의 멀티플렉서 (MUX)(208a…, 208f)에 접속된다. 즉, 스칼라 레지스터(f20)와 벡터 레지스터
(f20)의 출력은 MUX(208a)에 접속되고, 스칼라 레지스터(f30)와 벡터 레지스터 (F30)의 출력은 MUX(208f)에 접속된다. 이들의 실행 중에, 스칼라형 및 벡터형 명령은 IU(103)에 존재할 수도 있는 명령 레지스터(210)에 일시적으로 저장된다.
레지스터(210)내의 어드레스 필드의 내용은 어드레스 디코더(212)에 결합되며, 이 디코더(212)는 각 스칼라 레지스터(f0∼f19, f21, f23, f25, f27, f29, f31)와 각 쌍의 스칼라 및 벡터 레지스터(f20, F20 ∼ f30, F30)에 대하여 개별적인 인에이블 라인(214)을 갖는다. 예컨대, 하나의 라인(214)은 양(양(兩))레지스터(f20, F20)를 제어하고, 다른 라인(214)은 양레지스터(f22, F22)를 제어한다. 다시 말해, 동일한 어드레스가 각 쌍의 스칼라 및 벡터 레지스터(f20, F20 ∼ f30, F30)로 맵핑 된다. 스칼라 데이타를 운반하는 MUX(208)의 출력은 FPU(111)의 입력(A)에 접속되고, 벡터 데이타를 운반하는 MUX(208)의 출력은 FPU(111)의 입력(B)에 접속된다. FPU(111)의 출력은 스위치(216a…, 216f)를 통해 스칼라 레지스터 (f0∼f30)와 벡터 레지스터(F20∼F30)의 입력에 선택적으로 루프 백(loop back)된다. 레지스터(210)내의 오퍼레이터 필드의 내용은 MUX(208a,…, 208f) 및 스위치(214a,…, 214f)에 결합된다. 명령 레지스터(210)는 MUX(208a,…, 208f), 스위치(216a,…, 216f) 및 스위치(218a,…, 218f)의 상태를 제어한다.
레지스터(210)에 정상적인 명령이 로드되는 경우 MUX(208a… 208f)는 데이타를 FPU(111)의 입력(A)에 전송하고, 스위치(216a,…, 216f)는 FPU(111)의 출력을 스칼라 레지스터(f2o,…,f30)에 접속시키고, 스위치(218a,…, 218f)는 데이타 버스(114)를 스칼라 레지스터(f20,…, f30)의 입력에 접속시킨다 향상된 명령이 레지스터(210)에 로드되는 경우, MUX(208a,…, 208f)는 데이타를 FPU(111)의 입력(B)에 전송하고, 스위치(216a,…, 216f)는 FPU(111)의 출력을 벡터 레지스터(F20,…, F30)에 접속시키며, 스위치(218a,…, 218f)는 데이타 버스(114)를 벡터 레지스터(F2O… F3O)의 입력에 접속시킨다.
제4(a)도∼제4(f)도는 "efmovs" 명령에 따라 벡터 레지스터(F20, F22) 사이에서 벡터 데이타 성분의 이동 중에 지시기에 의해 벡터 레지스터(115)의 순서화를 제어하는 것을 나타낸다. 설명을 위해, 벡터 레지스터(F2O)의 깊이는 4개의 성분(워드)이고 벡터 레지스터(F22)와 깊이는 3개의 성분(워드)인 것으로 가정한다. 실제의 경우에 벡터 레지스터의 깊이는 더 클 것이다. 제4(a)도에 도시된 바와 같이, 벡터 연산의 개시 시에 지시기는 레지스터(F20, F22)의 선두에 있다. 벡터 데이타 성분이 하나의 레지스터로부터 다른 레지스터로 이동할 때마다 양(兩)레지스터의 지시기는 전진한다. 제4(b)도, 제4(e)도 및 제4(f)도에서 F20은 소스 레지스터 이고, F22는 목적지 레지스터이다. 제4(c)도 및 제4(d)도에서, F22는 소스 레지스터 이고, F20은 목적지 레지스터이다. 제4(c)도에서, F22의 지시기는 레지스터의 종단에 있으며, 그에 따라 데이타가 이동하는 다음 시간, 즉 제4(d)도에서의 레지스터의 선두로 복귀한다. 제4(e)도에서, F20의 지시기는 레지스터의 종단에 있으며, 그에 따라 데이타가 이동하는 다음 시간, 즉 제4(f)도에서의 레지스터의 선두로 복귀한다. 각 경우에, 전송된 데이타 성분은 원으로 표시된다.
제5도는 각 벡터 레지스터의 논리적인 설계를 나타내는 블록도이다. 벡터 레지스터는 항상 지정된 벡터 레지스터의 선두, 즉 제1 위치(워드)를 지시하는 벡터 연산 명령에 의해 지정된 어드레스 필드에 의존하여 개별적으로 어드레스 가능 하다. 또한, 벡터 레지스터의 셀 또는 위치의 성분 크기, 즉 비트의 수는 FPU(111)에 의해 연산되는 성분의 비트의 수와 동일하다. 후술되는 바와 같이, 벡터 레지스터는 다른 벡터 레지스터 위치에 액세스하기 위한 어드레스를 내부적으로 발생시켜, 이 목적으로 IU(103)의 용량을 부가적으로 사용할 필요가 없거나 부가적인 시간이 필요하지 않게 된다.
각 벡터 레지스터는 64 워드 깊이의 예컨대, 앞서 언급된 RAM 어레이와 같은 버퍼(301)를 갖는다. 버퍼(301)는 메모리 버스(117)를 통해 DMA 제어기(108) 및 메인 메모리(101)에 결합되어 메인 메모리(101)로 데이타를 전송하고 메인 메모리(101)로부터 데이타를 수신한다. 지시기(302)는 각 벡터 레지스터에 제공되어 현명령에 대한 데이타가 얻어질 버퍼(301)의 위치 또는 FPU(111)로부터의 결과가 저장되는 버퍼(301)의 위치를 지시한다. 지시기는 미리 정해진 버퍼 위치로 맵핑되어 벡터 레지스터의 선두에 결합된 벡터 레지스터내에 내부 어드레스를 발생시킨다. 예컨대, 바람직한 실시예에서 벡터 레지스터(206a∼206f)의 지시기는 각각 SPARC 어드레스 공간 ASI=0×1 어드레스 0×0500, 0×0504, 0×0508, 0×050C, 0×0510 및 0×0514로 맵핑된다.
각 벡터 레지스터는 자체의 깊이 레지스터(306)를 갖는다. 벡터 레지스터에 결합된 지시기(302)가 깊이 레지스터(306)에 저장된 값을 초과할 때, 지시기의 값은 0(영)으로, 즉 레지스터의 선두로 복귀한다. 깊이 레지스터(376)는 개개의 메모리 위치로 맵핑된다. 바람직한 실시예에서, 벡터 레지스터(206a∼ 206f)에 대한 깊이 레지스터(306)는 각각 SPARC 어드레스 공간 ASI=0×l 어드레스 0×0518, 0×051C, 0×0520, 0×0524, 0×0528, 0×052C로 맵핑된다. 효율적으로는, 깊이 레지스터(306)는 벡터 레지스터(206)의 크기를 프로그래밍하기 위한 수단으로서 작용한다. 예컨대 벡터 레지스터가 벡터 연산을 위한 소스/목적지로서 이용되고, 조합된 오퍼랜드의 길이가 64워드 보다 작은 경우(예컨대, 32워드인 경우), 깊이 레지스터(306)는 32워드로 세트될 수 있다. 판독 또는 기입 동작을 위해, 지시기(302)는 0(영)으로 초기화된다. 판독 또는 기록 동작 처리를 위해 지시기(302)는 전진한다. 지시기(302)가 깊이 레지스터(306)의 값을 초과할 때(즉, 최대 인덱스 31 또는 32 워드일 때), 지시기의 값은 0으로 복귀하고 다시 레지스터의 선두를 지시한다.
별법으로는, 각 벡터 레지스터의 지시기(302)는 모듈로(modulo) N 카운터에 의해 실행될 수 있다. 이 특징은 하나의 벡터가 벡터 레지스터에 적합하도록 충분히 작을 때 큰 도움이 된다.
참조 부호 308은 벡터 레지스터의 판독 동작을 제어하기 위한 판독 제어 논리를 나타낸다. 벡터 레지스터가 벡터형 연산의 소스로서 사용될 때마다, 판독 제어 논리(308)는 지시기(302)에 의해 지정된 버퍼(301)의 데이타를 멀티플렉서(208)(제2도)로 출력하고 지시기(302)를 전진시키도록 동작한다. 만일 대응하는 판독 동작이 단일 정밀 동작인 경우, 판독 지시기(302)는 한 위치 전진한다. 만일 대응하는 판독 동작이 2중 정밀 동작이라면, 판독 지시기(302)는 2위치 전진한다. 동일한 것은 백그라운드에서 메인 메모리로의 DMA 전송에 대해 참(true)이다.
참조 부호 310은 벡터 레지스터의 기입 동작을 제어하기 위한 기입 제어 논리(304)를 나타낸다. 벡터 레지스터가 벡터형 연산의 목적지로서 이용될 때마다, 기입 제어 논리(310)는 지시기(302)에 의해 지정된 위치에 있는 버퍼(301)에 입력 되는 데이타를 저장하고 지시기(302)를 전지시키도록 동작한다. 만일 대응하는 기입 동작이 단일 정밀 동작인 경우 지시기(302)는 한 위치 전진한다. 만일 대응하는 기입 동작이 2중 정밀 동작인 경우 지시기(302)는 2위치 전진한다. EHD일한 것은 백그라운드에서 메인 메모리로부터의 DMA 전송에 대해 참이다.
버퍼(301)는 메모리 버스(117)에 결합된다. 데이타는 메모리 버스(117)를 통해 직접 메모리 액세스에 의해 버퍼(301)와 메인 메모리(101) 사이에서 전송된다. 벡터 레지스터는 메인 메모리로부터 벡터 레지스터로 DMA를 실행함으로써 로드된다. 이 동작이 실행될 때, IU(103)는 DMA 제어 레지스터를 셋업한다. 예컨대, ASI 및 벡터 레지스터의 선두의 위치는 "소스/목적지 ASI 레지스터"와 "소스 어드레스" 레지스터내에 기입되고, 지정된 벡터 레지스터의 선두의 어드레스는 "목적지 어드레스" 레지스터에 기입되며, 어레이의 크기는 "바이트 카운트" 레지스터에 기입된다. 이들 레지스터가 셋업된 후, lU(103)는 DMA 전송을 실행하도록 DMA 제어기(108)에 신호를 보낸다. IU(103)는 그 후 다음 명령을 실행하도록 자유롭게 되고, DMA 전송은 벡터 레지스터의 기입 제어 논리(310)와 협력하여 DMA 제어기(108)에 의해 실행된다. 벡터 레지스터의 언로딩은 벡터 레지스터 어드레스의 선두가 "소스 어드레스" 레지스터에 기입되고, 메모리 어드레스가 "목적지 어드레스" 레지스터에 기입되며, DMA 제어기가 판독 제어 논리(308)와 협력한다는 것을 제외하고 유사한 방식으로 실행될 수 있다.
상기 설명된 실시예는 단지 본 발명의 이해를 돕기 위한 것으로 본 발명을 한정하고자 하는 것이 아니며, 당업자에 의해 다수의 변경 및 수정이 본 발명의 범위내에서 이루어 질 수 있다.

Claims (21)

  1. 스칼라형 데이타 처리용의 제1 세트의 명령, 벡터형 데이타 처리용의 제2세트의 명령, 제1 세트의 명령으로 동작하는 개개의 스칼라 데이타 성분 및 제 2 세트의 명령으로 동작하는 벡터 데이타 성분 어레이를 저장하며, 상기 제1 및 제2 세트의 명령이 각각 유형 지정 필드와 레지스터 지정 필드를 갖는 메모리 수단과; 상기 메모리 수단에 저장된 명령에 응답하여 개개의 데이타 성분에 대해 연산하는 처리 유닛과; 각 명령의 유형 지정 필드와 레지스터 지정 필드를 차례로 모니터하는 수단과; 상기 명령의 레지스터 지정 필드에 저장된 어드레스가 지정되며, 하나의 성분의 깊이 보다 작은 깊이를 각각 갖는 복수의 스칼라 레지스터와; 상기 메모리 수단과 상기 처리 유닛 사이에 상기 스칼라 레지스터를 접속시켜 그 사이에서 데이타를 전송하는 수단과; 상기 스칼라 레지스터의 일부와 동일하고, 상기 명령의 레지스터 지정 필드에 저장된 어드레스가 지정되어 벡터 레지스터가 상기 스칼라 레지스터 어드레스 공간에서 볼 수 있으며, 복수의 성분의 깊이를 각각 갖는 복수의 벡터 레지스터와; 상기 메모리 수단과 상기 처리 유닛 사이에 상기 벡터 레지스터를 접속시켜 그 사이에서 데이타를 전송하는 수단과; 상기 모니터 수단에 응답하여 스칼라형 명령의 존재 시에 상기 처리 유닛의 상기 스칼라 데이타에 대해 동작하도록 상기 명령에 의해 지정된 하나 이상의 레지스터를 통해 상기 메모리 수단과 상기 처리 유닛 사이에 개개의 스칼라 데이타 성분을 전송하는 수단과; 상기 모니터 수단에 응답하여 벡터형 명령의 존재 시에 상기 처리 유닛의 상기 벡터 데이타에 대해 동작하도록 상기 명령에 의해 지정된 하나 이상의 벡터 레지스터를 통해 상기 메모리 수단과 상기 처리 유닛 사이에 전체 벡터 데이타 어레이를 전송하는 수단을 구비하며, 상기 지정된 벡터 레지스터의 깊이는 M 성분 길이이고, 상기 어레이는 X*M+N 성분 길이이며, 여기에서 M은 N보다 크고, 상기 전체 어레이 전송 수단은 X배의 M 성분을 전송하는 수단과 1배의 N 성분을 전송하는 수단을 포함하며; 상기 전체 어레이가 처리 완료될 때까지 한번에 하나의 성분을 발생시키도록 상기 메모리와 상기 처리 유닛 사이에서 벡터 데이타를 순차 전송하기 위해 상기 벡터 레지스터를 제어하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제1항에 있어서, 상기 제어 수단은 각각의 지정된 벡터 레지스터에 대하여 처리될 벡터 레지스터의 성분을 지정하는 지시기를 생성하는 수단과, 깊이 레지스터와, 벡터 데이타 어레이를 벡터 레지스터로 또는 그 벡터 레지스터로부터 전송하기 전에 상기 어레이의 크기를 상기 깊이 레지스터에 로딩하고 개시 성분에서 상기 벡터 레지스터에 지시기를 세팅하는 수단과, 데이타를 상기 벡터 레지스터로 또는 그 벡터 레지스터로부터 전송하기 위해 상기 지시기에 의해 지정된 상기 벡터 레지스터의 성분에 액세스하는 수단과, 성분이 상기 벡터 데이타로 또는 그 벡터 데이타로부터 전송될 때마다 지시기를 전진시키는 수단과, 데이타의 모든 성분이 전송 완료된 때를 결정하기 위해 상기 지시기 위치를 상기 깊이 레지스터의 크기와 비교하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  3. 데이타 성분의 어레이를 포함하는 벡터 데이타를 저장하는 메모리 수단과; 상기 메모리 수단에 저장된 상기 벡터 데이타에 대해 한번에 한 성분씩 연산 하는 처리 유닛과; 상기 메모리 수단과 상기 처리 유닛 사이에 접속되어 그 사이에서 벡터 데이타의 어레이를 전송하고, 복수의 성분의 깊이를 각각 갖는 복수의 벡터 레지스터와; 상기 처리 유닛의 벡터 데이타에 대해 포어그라운드에서 동작하도록 하나 이상의 상기 벡터 레지스터와 상기 처리 유닛 사이에 벡터 데이타를 전송하는 제1 수단과; 백그라운드에서 유효한 벡터 데이타를 생성하도록 하나 이상의 상기 벡터 레지스터와 상기 메모리 수단 사이에 상기 제1 수단과 동시에 벡터 데이타를 전송하는 제2 수단과; 상기 메모리 수단과 상기 처리 유닛 사이에 상기 벡터 데이타를 순차 전송하여 전체 어레이가 처리 완료될 때까지 한번에 하나의 성분을 발생시키도록 상기 벡터 레지스터를 제어하는 수단과; 상기 처리 유닛의 동작 중에 데이타를 저장하는 복수의 어드레스 가능 스칼라 레지스터와; 각 벡터와 스칼라 레지스터에 상기 스칼라 및 벡터 명령 모두에 적용 가능한 어드레스를 맵핑하는 수단과; 상기 스칼라 및 벡터 명령의 실행 중에 상기 레지스터에 액세싱하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제3항에 있어서, 상기 복수의 벡터 레지스터는 제1, 제2 및 제3 레지스터를 구비하고, 상기 제1 전송 수단은 다음에 열거한 순서에 따라 상기 제1 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하고, 상기 처리 유닛으로부터 상기 제2 레지스터로 처리된 데이타를 전송하며, 상기 제2 레지스터로부터 상기 처리 유닛으로 중간 처리된 벡터 데이타를 전송하고, 상기 제3 레지스트로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하며, 상기 처리 유닛 으로부터 상기 제2 및 제3의 레지스터와 다른 레지스터중 하나로 처리된 벡터 데이타를 전송하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제4항에 있어서, 상기 제1 전송 수단은 상기 제1 레지스터로부터의 미처리 벡터 데이타와 함께 상기 처리 유닛으로 스칼라 데이타 성분을 전송하여 상기 처리 유닛에서 상기 스칼라 데이타 성분과 상기 미처리 벡터 데이타를 곱셈함으로써 중간처리 벡터 데이타를 형성하는 수단을 더 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제4항에 있어서, 상기 복수의 레지스터는 제4, 제5 및 제6 레지스터를 더 구비하고, 상기 제 2 전송 수단은 다음에 열거한 순서에 따라 상기 제4 레지스터로부터 상기 메모리 수단으로 처리된 벡터 데이타를 전송하고, 상기 메모리 수단으로부터 상기 제4, 제5 또는 제6 레지스터중 하나로 미처리 벡터 데이타를 전송하며, 상기 메모리 수단으로부터 상기 제4, 제5 또는 제6 레지스터중 다른 하나로 미처리 벡터 데이타를 전송하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  7. 제3항에 있어서, 상기 복수의 벡터 레지스터는 제1, 제2, 제3 및 제4 레지스터를 구비하고, 상기 어레이는 상기 벡터 레지스터의 깊이보다 더 크므로 상기 벡터 레지스터가 완전히 채워지도록 포어그라운드와 백그라운드 사이에서 순환하며, 상기 제1 전송 수단은 홀수 싸이클동안 상기 제1 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하고 상기 처리 유닛으로부터 상기 제2레지스터로 처리된 데이타를 전송하는 수단을 구비하고, 짝수 싸이클동안 상기 제3 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하고 상기 처리 유닛으로부터 상기 제4 레지스터로 처리된 벡터 데이타를 전송하는 수단을 구비하며, 상기 제2 전송 수단은 흘수 싸이클동안 상기 제4 레지스터로부터 상기 메모리 수단으로 처리된 데이타를 전송하고 상기 메모리 수단으로부터 상기 제3 레지스터로 미처리 데이타를 전송하는 수단을 구비하고, 짝수 싸이클동안 상기 제2 레지스트로부터 상기 메모리 수단으로 처리된 데이타를 전송하고 상기 메모리 수단으로부터 상기 제1 레지스터로 미처리 데이타를 전송하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제7항에 있어서, 상기 벡터 레지스터의 깊이는 m 성분이고, 상기 어레이는 x*m+n 성분 깊이이고, 여기에서 m은 n 보다 길며, 상기 제1 및 제2 전송 수단은 상기 어레이의 모든 성분을 처리하도록 x+1회 순환하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 데이타 성분의 어레이를 포함하는 벡터 데이타를 저장하는 메모리 수단과; 상기 메모리 수단에 저장된 상기 벡터 데이타에 대해 한번에 한 성분씩 연산 하는 처리 유닛과; 상기 메모리 수단과 상기 처리 유닛 사이에 접속되어 그 사이에서 벡터 데이타의 어레이를 전송하고, 복수의 성분의 깊이를 각각 갖는 제1, 제2 및 제3 벡터 레지스터와; 상기 제1 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하는 제1 전송 수단과; 상기 제1 전송후 상기 처리 유닛으로부터 상기 제2 레지스터로 처리된 벡터 데이타를 전송하는 제2 전송 수단과; 상기 제2 전송후 상기 제2 레지스터로부터 상기 처리 유닛으로 처리된 벡터 데이타를 전송하고 상기 제3 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하는 제3 전송 수단과; 상기 제3 전송후 상기 처리 유닛으로부터 상기 제3 레지스터와 다른 레지스터중 하나로 처리된 벡터 데이타를 전송하는 제4 전송 수단과; 상기 메모리 수단과 상기 처리 유닛 사이에 벡터 데이타를 순차 전송하여 상기 전체 어레이가 처리 완료될 때까지 한번에 하나의 성분을 발생시키도록 상기 벡터 레지스터를 제어하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  10. 데이타 성분의 어레이를 포함하는 벡터 데이타를 저장하는 메모리 수단과; 상기 메모리 수단에 저장된 상기 벡터 데이타에 대해 한번에 한 성분씩 연산 하는 처리 유닛과; 상기 메모리 수단과 상기 처리 유닛 사이에 접속되어 그 사이에서 벡터 데이타의 어레이를 전송하고, 복수의 성분의 깊이를 각각 갖는 제1 및 제2 벡터 레지스터와; 상기 제1 레지스터로부터 상기 처리 유닛으로 미처리 벡터 데이타를 전송하는 제1 전송 수단과; 상기 제1 전송후 상기 처리 유닛으로부터 상기 제2 레지스터로 처리된 벡터 데이타를 전송하는 제2 전송 수단과; 상기 제2 전송후 상기 제2 레지스터로부터 상기 처리 유닛으로 처리된 벡터 데이타를 전송하는 제3 전송 수단과; 상기 제3 전송후 상기 처리 유닛으로부터 상기 제2 레지스터와는 다른 레지스터중 하나로 처리된 벡터 데이타를 전송하는 제4 전송 수단과; 상기 메모리 수단과 상기 처리 유닛 사이에 벡터 데이타를 순차 전송하여 상기 전체 어레이가 처리 완료될 때까지 한번에 하나의 성분을 발생시키도록 상기 벡터 레지스터를 제어하는 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
  11. 오프랜드로서 데이타 성분을 갖는 스칼라형 명령 및 오프랜드로서 데이타 성분의 어레이 및 데이타 성분을 갖는 벡터형 명령을 실행하는 컴퓨터 시스템으로서, 스칼라형 명령 및 벡터형 명령은 필드를 지정하는 명령 유형 및 필드를 지정하는 오프랜드 레지스터를 각각 갖고, 상기 명령들 및 데이타 성분들은 메인 메모리에 저장되는 컴퓨터 시스템에 있어서, 상기 명령들의 필드를 지정하는 상기 오프랜드 레지스터에 저장되는 어드레스에 의해 식별되며, 하나의 데이타 성분의 깊이를 각각 갖는 복수의 스칼라 레지스터와; 상기 스칼라 레지스터의 일부와 동일한 어드레스인 상기 명령들의 필드를 지정하는 상기 오프랜드 레지스터에 저장되는 어드레스에 의해 식별되며, 상기 스칼라 레지스터 어드레스 공간에서 볼 수 있고, 복수의 데이타 성분의 깊이를 각각 갖는 복수의 벡터 레지스터와; 상기 스칼라형 명령과 상기 벡터형 명령을 실행하는 처리 수단을 포함하며, 상기 처리 유닛은 상기 명령이 스칼라형 명령일 때 오프랜드로서 적어도 하나의 스칼라 레지스터를 선택하고 상기 명령이 벡터형 명령일 때 적어도 하나의 벡터 레지스터를 선택하도록 각 명령의 필드를 지정하는 상기 오프랜드 레지스터와 필드를 지정하는 상기 명령 유형을 디코딩하는 수단과; 상기 복수의 벡터 레지스터중 선택된 하나의 벡터형 명령의 중간 처리 결과를 저장하는 수단과; 상기 메인 메모리, 상기 복수의 스칼라 레지스터 및 상기 복수의 벡터 레지스터에 결합되어 상기 복수의 스칼라 레지스터와 상기 메인 메모리 사이에 데이타 성분을 전송하고, 상기 복수의 벡터 레지스터와 상기 메인 메모리 사이에 데이타 성분의 전체 어레이를 전송하며, 상기 복수의 스칼라 레지스터로/로부터 및 상기 복수의 벡터 레지스터로/로부터의 데이타 전송은 명령을 실행하는 상기 처리 수단과 동시에 실행되며; 상기 명령 유형 지정 필드는 상기 복수의 스칼라 레지스터로부터 또는 상기 복수의 벡터 레지스터로부터의 데이타 성분을 사용하여 산술 연산 사이의 구별을 위해 사용되는 것을 특징으로 하는 컴퓨터 시스템.
  12. 제11항에 있어서, 상기 처리 수단은 상기 복수의 벡터 레지스터중의 하나에 저장된 데이타 성분의 어레이의 연속적인 성분에 대해 상이한 산술 연산을 실행하는 것을 특징으로 하는 컴퓨터 시스템.
  13. 제11항에 있어서, 상기 처리 수단은 상기 복수의 벡터 레지스터중의 적어도 2개에 저장된 데이타 성분의 상이한 크기의 어레이에 대한 산술 연산을 실행하는 것을 특징으로 하는 컴퓨터 시스템.
  14. 제11항에 있어서, 상기 명령의 필드를 지정하는 오프랜드 레지스터는 상기 복수의 벡터 레지스터중 선택된 하나 및 상기 복수의 스칼라 레지스터중의 선택된 하나를 특정하는 것을 특징으로 하는 컴퓨터 시스템.
  15. 제11항에 있어서, 상기 복수의 벡터 레지스터중의 각각의 하나는 소정수의 데이타 성분의 최대 깊이를 갖는 선입 선출(FIFO) 큐우인 것을 특징으로 하는 컴퓨터 시스템.
  16. 제11항에 있어서, 상기 복수의 벡터 레지스터중의 각각의 하나는 상기 벡터 레지스터내의 상기 복수의 데이타 성분을 모두 참조하는 단일 지시기를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  17. 제11항에 있어서, 상기 벡터형 명령은 상기 메인 메모리로부터 벡터 레지스터로 복수의 데이타 성분을 단일 명령으로 기입하도록 로드 백터 레지스터 명령과, 벡터 레지스터로부터 상기 메인 메모리로 복수의 데이타 성분을 단일 명령으로 판독하도록 저장 벡터 레지스터 명령을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  18. 제11항에 있어서, 상기 복수의 벡터 레지스터중의 각각의 하나는: 버스 제어 수단에 결합되어 데이타 성분의 어레이를 저장하는 버퍼 수단과; 상기 버퍼 수단에 결합되어 데이타 성분의 저장 또는 복구를 위해 상기 버퍼 수단내의 선택된 위치를 참조하는 지시기 수단과; 상기 버퍼 수단에 저장된 데이타 성분의 수를 특정하는 수단과; 상기 버퍼 수단으로부터의 데이타 전송을 제어하는 판독 제어 수단과; 상기 버퍼 수단으로의 데이타 전송을 제어하는 기입 제어 수단을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  19. 제18항에 있어서, 상기 버퍼 수단은 FIFO 큐우인 것을 특징으로 하는 컴퓨터 시스템.
  20. 복수의 성분의 깊이를 각각 갖는 복수의 벡터 레지스터에 의해 처리 유닛에 결합된 메인 메모리를 갖는 컴퓨터 시스템에서, 벡터 데이타를 처리하는 방법에 있어서, 상기 메인 메모리내에 벡터 데이타로서 데이타 성분의 어레이를 저장하는 단계와; 상기 메인 메모리로부터 제1 벡터 레지스터를 통해 상기 처리 유닛으로 제1세트의 미처리 벡터 데이타를 전송하는 단계와; 상기 제1 세트의 미처리 벡터 데이타를 제1 세트의 처리된 벡터 데이타로 한 번에 하나의 데이타 성분씩 처리하는 단계와; 상기 처리 유닛으로부터 제2 벡터 레지스터로 상기 제1 세트의 처리된 벡터 데이타를 전송하는 단계와; 상기 메인 메모리로부터 제3 벡터 레지스터로 제2 세트의 미처리 벡터 데이타를 전송하는 단계와; 상기 제2 벡터 레지스터로부터의 상기 제1 세트의 처리된 벡터 데이타와 상기 제3 벡터 레지스터로부터의 상기 제2 세트의 미처리 벡터 데이타를 상기 처리 유닛으로 전송하는 단계와; 상기 제2 벡터 레지스터 및 상기 제3 벡터 레지스터로부터의 상기 벡터 데이타를 제2 세트의 처리된 벡터 데이타로 한 번에 하나의 데이타 성분씩 처리 하는 단계와; 상기 처리 유닛으로부터 상기 제3 벡터 레지스터와 다른 벡터 레지스터로 상기 제2 세트의 처리된 벡터 데이타를 전송하는 단계를 포함하는 것을 특징으로 하는 벡터 데이타 처리 방법.
  21. 복수의 성분의 깊이를 각각 갖는 복수의 벡터 레지스터에 의해 처리 유닛에 결합된 메인 메모리를 갖는 컴퓨터 시스템에서, 벡터 데이타를 처리하는 방법에 있어서, 상기 메인 메모리내에 벡터 데이타로서 데이타 성분의 어레이를 저장하는 단계와; 상기 메인 메모리로부터 제1 벡터 레지스터를 통해 상기 처리 유닛으로 제1 세트의 미처리 벡터 데이타를 전송하는 단계와; 상기 제1 세트의 미처리 벡터 데이타를 제1 세트의 처리된 벡터 데이타로 한 번에 하나의 데이타 성분씩 처리하는 단계와; 상기 처리 유닛으로부터 제2 벡터 레지스터로 상기 제1 세트의 처리된 벡터 데이타를 전송하는 단계와; 상기 제2 벡터 레지스터로부터 상기 처리 유닛으로 상기 제1 세트의 처리된 벡터 데이타를 전송하는 단계와; 상기 제2 벡터 레지스터로부터의 상기 벡터 데이타를 제2 세트의 처리된 벡터 데이타로 한 번에 하나의 데이타 성분씩 처리하는 단계와; 상기 처리 유닛으로부터 상기 제2 벡터 레지스터와 다른 벡터 레지스터로 상기 제2 세트의 처리된 벡터 데이타를 전송하는 단계를 포함하는 것을 특징으로 하는 벡터 데이타 처리 방법.
KR1019940025652A 1993-10-05 1994-10-05 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법 KR100289746B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13175893A 1993-10-05 1993-10-05
US8/131758 1993-10-05
US08/131.758 1993-10-05

Publications (2)

Publication Number Publication Date
KR950012256A KR950012256A (ko) 1995-05-16
KR100289746B1 true KR100289746B1 (ko) 2001-05-15

Family

ID=22450894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940025652A KR100289746B1 (ko) 1993-10-05 1994-10-05 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법

Country Status (5)

Country Link
US (1) US5669013A (ko)
EP (1) EP0646877B1 (ko)
JP (1) JPH07152733A (ko)
KR (1) KR100289746B1 (ko)
DE (1) DE69424115T2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180100551A (ko) * 2016-01-20 2018-09-11 캠브리콘 테크놀로지스 코퍼레이션 리미티드 행렬 연산 장치 및 방법
KR20190073593A (ko) * 2016-01-20 2019-06-26 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940859A (en) * 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5729724A (en) * 1995-12-20 1998-03-17 Intel Corporation Adaptive 128-bit floating point load and store operations for quadruple precision compatibility
JP2874710B2 (ja) * 1996-02-26 1999-03-24 日本電気株式会社 三次元位置計測装置
US5838984A (en) * 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
KR100267089B1 (ko) * 1996-08-19 2000-11-01 윤종용 스칼라/벡터연산이조합된단일명령복수데이터처리
US6061521A (en) * 1996-12-02 2000-05-09 Compaq Computer Corp. Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle
US5909572A (en) 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
US6173366B1 (en) 1996-12-02 2001-01-09 Compaq Computer Corp. Load and store instructions which perform unpacking and packing of data bits in separate vector and integer cache storage
US5941938A (en) * 1996-12-02 1999-08-24 Compaq Computer Corp. System and method for performing an accumulate operation on one or more operands within a partitioned register
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
EP0918290A1 (en) * 1997-11-19 1999-05-26 Interuniversitair Micro-Elektronica Centrum Vzw Method for transferring data structures from and to vector registers of a processor
US5946496A (en) * 1997-12-10 1999-08-31 Cray Research, Inc. Distributed vector architecture
US5913069A (en) * 1997-12-10 1999-06-15 Cray Research, Inc. Interleaving memory in distributed vector architecture multiprocessor system
US6023738A (en) * 1998-03-30 2000-02-08 Nvidia Corporation Method and apparatus for accelerating the transfer of graphical images
US6304963B1 (en) * 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
WO1999061997A1 (en) * 1998-05-27 1999-12-02 Arm Limited Recirculating register file
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
EP1365385B1 (en) 1998-11-09 2012-06-13 Broadcom Corporation Graphics display system with processing of graphics layers, alpha blending and composition with video data
US6044030A (en) * 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
US6300935B1 (en) * 1999-04-20 2001-10-09 Agilent Technologies, Inc. Image interpolation circuit architecture and method for fast bi-cubic interpolation of image information
US6654819B1 (en) * 1999-07-15 2003-11-25 Texas Instruments Incorporated External direct memory access processor interface to centralized transaction processor
US6574683B1 (en) * 1999-07-15 2003-06-03 Texas Instruments Incorporated External direct memory access processor implementation that includes a plurality of priority levels stored in request queue
US6591361B1 (en) 1999-12-28 2003-07-08 International Business Machines Corporation Method and apparatus for converting data into different ordinal types
US6665790B1 (en) * 2000-02-29 2003-12-16 International Business Machines Corporation Vector register file with arbitrary vector addressing
US7308559B2 (en) * 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
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
GB2382673B (en) * 2001-10-31 2005-10-26 Alphamosaic Ltd A vector processing system
JP3855270B2 (ja) * 2003-05-29 2006-12-06 ソニー株式会社 アンテナ実装方法
US7610466B2 (en) * 2003-09-05 2009-10-27 Freescale Semiconductor, Inc. Data processing system using independent memory and register operand size specifiers and method thereof
US7107436B2 (en) * 2003-09-08 2006-09-12 Freescale Semiconductor, Inc. Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect
US7275148B2 (en) * 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US7315932B2 (en) 2003-09-08 2008-01-01 Moyer William C Data processing system having instruction specifiers for SIMD register operands and method thereof
US8253750B1 (en) * 2004-02-14 2012-08-28 Nvidia Corporation Digital media processor
US20060101210A1 (en) * 2004-10-15 2006-05-11 Lance Dover Register-based memory command architecture
US7617338B2 (en) * 2005-02-03 2009-11-10 International Business Machines Corporation Memory with combined line and word access
US20090119460A1 (en) * 2007-11-07 2009-05-07 Infineon Technologies Ag Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space
US7849294B2 (en) * 2008-01-31 2010-12-07 International Business Machines Corporation Sharing data in internal and memory representations with dynamic data-driven conversion
US7877582B2 (en) * 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
CN101763244B (zh) * 2010-01-21 2013-09-18 龙芯中科技术有限公司 存储器与寄存器之间的数据传输装置和方法
US9411585B2 (en) 2011-09-16 2016-08-09 International Business Machines Corporation Multi-addressable register files and format conversions associated therewith
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US9342479B2 (en) 2012-08-23 2016-05-17 Qualcomm Incorporated Systems and methods of data extraction in a vector processor
US9965512B2 (en) 2013-06-25 2018-05-08 Sap Se Operators for constants in aggregated formulas

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
DE3585972D1 (de) * 1984-07-02 1992-06-11 Nec Corp Rechner-vektorregisterverarbeitung.
US5226171A (en) * 1984-12-03 1993-07-06 Cray Research, Inc. Parallel vector processing system for individual and broadcast distribution of operands and control information
US4745547A (en) * 1985-06-17 1988-05-17 International Business Machines Corp. Vector processing
US4760518A (en) * 1986-02-28 1988-07-26 Scientific Computer Systems Corporation Bi-directional databus system for supporting superposition of vector and scalar operations in a computer
JPS63253468A (ja) * 1987-04-10 1988-10-20 Hitachi Ltd ベクトル処理装置
US5261113A (en) * 1988-01-25 1993-11-09 Digital Equipment Corporation Apparatus and method for single operand register array for vector and scalar data processing operations
JP3095393B2 (ja) * 1988-05-10 2000-10-03 クレイ・リサーチ・インコーポレイテッド ベクトルレジスタを備えたコンピュータにおけるベクトルテールゲーティング
JPH0792779B2 (ja) * 1988-10-08 1995-10-09 日本電気株式会社 データ転送制御装置
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5530881A (en) * 1991-06-06 1996-06-25 Hitachi, Ltd. Vector processing apparatus for processing different instruction set architectures corresponding to mingled-type programs and separate-type programs
US5437043A (en) * 1991-11-20 1995-07-25 Hitachi, Ltd. Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180100551A (ko) * 2016-01-20 2018-09-11 캠브리콘 테크놀로지스 코퍼레이션 리미티드 행렬 연산 장치 및 방법
KR20190073593A (ko) * 2016-01-20 2019-06-26 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
KR20200058562A (ko) * 2016-01-20 2020-05-27 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
KR102123633B1 (ko) * 2016-01-20 2020-06-16 캠브리콘 테크놀로지스 코퍼레이션 리미티드 행렬 연산 장치 및 방법
KR102185287B1 (ko) * 2016-01-20 2020-12-01 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 연산 장치
KR102304216B1 (ko) * 2016-01-20 2021-09-23 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Also Published As

Publication number Publication date
EP0646877A3 (en) 1995-11-02
DE69424115T2 (de) 2001-02-01
KR950012256A (ko) 1995-05-16
EP0646877B1 (en) 2000-04-26
US5669013A (en) 1997-09-16
EP0646877A2 (en) 1995-04-05
JPH07152733A (ja) 1995-06-16
DE69424115D1 (de) 2000-05-31

Similar Documents

Publication Publication Date Title
KR100289746B1 (ko) 벡터 데이타 처리용 컴퓨터 시스템 및 그 방법
US4873629A (en) Instruction processing unit for computer
US10768933B2 (en) Streaming engine with stream metadata saving for context switching
US5375216A (en) Apparatus and method for optimizing performance of a cache memory in a data processing system
US7581084B2 (en) Method and apparatus for efficient loading and storing of vectors
US7908460B2 (en) Method and apparatus for obtaining a scalar value directly from a vector register
US5418973A (en) Digital computer system with cache controller coordinating both vector and scalar operations
US5123095A (en) Integrated scalar and vector processors with vector addressing by the scalar processor
US4740893A (en) Method for reducing the time for switching between programs
US5890222A (en) Method and system for addressing registers in a data processing unit in an indirect addressing mode
US4229801A (en) Floating point processor having concurrent exponent/mantissa operation
EP0380850B1 (en) Method and digital computer for preproccessing multiple instructions
US4745547A (en) Vector processing
US11269638B2 (en) Exposing valid byte lanes as vector predicates to CPU
US6779102B2 (en) Data processor capable of executing an instruction that makes a cache memory ineffective
JP2011023037A (ja) 並列データ処理装置
JPH10124391A (ja) マージされたストア・オペレーションによってストア集束を行うためのプロセッサ及び方法
GB2037041A (en) Cache unit
US5913054A (en) Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle
GB2399900A (en) Data reordering processor and method for use in an active memory
JP2531648B2 (ja) メモリ装置
US5832533A (en) Method and system for addressing registers in a data processing unit in an indexed addressing mode
JPS59114677A (ja) ベクトル処理装置
EP0292188B1 (en) Cache system
US20230004391A1 (en) Streaming engine with stream metadata saving for context switching

Legal Events

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

Payment date: 20090209

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee