KR100447294B1 - 임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 - Google Patents
임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 Download PDFInfo
- Publication number
- KR100447294B1 KR100447294B1 KR10-2001-0009726A KR20010009726A KR100447294B1 KR 100447294 B1 KR100447294 B1 KR 100447294B1 KR 20010009726 A KR20010009726 A KR 20010009726A KR 100447294 B1 KR100447294 B1 KR 100447294B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- entry
- vector
- pointer array
- data file
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 217
- 238000000034 method Methods 0.000 claims abstract description 24
- 239000011159 matrix material Substances 0.000 claims description 8
- 238000003672 processing method Methods 0.000 claims 2
- 238000004364 calculation method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8092—Array of vector units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 각각 복수의 데이터 요소를 포함하는 데이터 벡터들을 이용하는 동작을 처리하기 위한 시스템 및 방법으로서, 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소를 포함하는 벡터 데이터 파일을 포함한다. 포인터 어레이는 벡터 데이터 파일에 버스를 통해 결합된다. 포인터 어레이는 각각 벡터 데이터 파일의 적어도 하나의 기억 요소를 식별하는 복수의 엔트리를 포함한다. 적어도 하나의 기억 요소는 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하며, 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 특정 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 벡터 데이터 파일에 임의 시작 어드레스를 갖는다.
Description
본 발명은 디지털 처리 예컨대, 멀티미디어 프로세서, 단일 명령 다중 데이터(Single Instruction Multiple Data:SIMD) 프로세서, SIMD(벡터) 처리 능력을 갖는 디지털 신호 프로세서 또는 유사한 장치로 제한되지 않고 이용될 수 있는 처리에 관한 것으로서, 구체적으로는 계산(computations)의 입력 및 출력을 일시적으로 저장하기 위해 디지털 처리에서 이용되는 벡터 레지스터 파일에 관한 것이다.
SIMD 처리는 미디어 데이터 또는 디지털 신호 처리 알고리즘을 포함하는 계산에 폭넓게 수용할 수 있는 강력한 아키텍처 상의 개념이다. 이는 단일 명령으로 일차원 벡터로서 배열되는 데이터값들의 하나 이상의 스트림에 대한 계산을 지정할 수 있도록 해준다. 데이터는 메모리로부터 또는 통상 일차원적인 순차순으로 벡터를 유지하는 레지스터 파일로부터 나올 때 계산을 위해 지정된다. 벡터의 요소들은 계산을 위해 순차적으로(즉, 요소 1, 2, 3...) 또는 스트라이드(stride)(즉, 고정 증분)로 액세스된다. 그러나, 많은 알고리즘은 벡터 요소들에 불규칙적으로 액세스하는 것을 요구하는데, 이는 테이블-검색(table-lookup) 같은 알고리즘이거나 벡터 요소들이 비트 반전과 같이 일부 어드레스 치환(permutation)을 요구하기 때문이다. 통상적으로, 이러한 유형의 액세스는 순차적으로 액세스되는 새로운 벡터를 파일에 형성하기 위해서 한번에 하나의 요소가 수행된다. 이러한 방식으로 실행되어야 하는 알고리즘의 성능은 실제 SIMD 처리에 대해 가능하리라 생각되는 것보다는 현저히 낮다.
그러므로, 동일한 구조에서 모든 이러한 동작 모드들이 성능을 최적화시킬 수 있는 벡터 레지스터 구조에 대한 요구가 있다.
본 발명은 각각 복수의 데이터 요소를 포함하는 데이터 벡터들을 이용하는 동작(operation)을 처리하기 위한 시스템 및 방법으로서, 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소를 포함하는 벡터 데이터 파일을 포함한다. 포인터 어레이는 벡터 데이터 파일에 버스를 통해 결합된다. 포인터 어레이는 각각 벡터 데이터 파일의 적어도 하나의 기억 요소를 식별하는 복수의 엔트리를 갖는다. 적어도 하나의 기억 요소는 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하기 위한 것이고, 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 특정 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 벡터 데이터 파일에 임의 시작 어드레스를 갖는다.
다른 실시예에 있어서, 포인터 어레이의 임의의 주어진 엔트리에 대하여, 임의의 주어진 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 벡터 데이터 파일이 임의 시작 어드레스를 포함할 수도 있다. 포인터 어레이는 벡터 데이터 파일의 적어도 하나의 데이터 요소로부터 독출된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함할 수도 있다. 포인터 어레이는 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터를 증분하여 생성된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함할 수도 있다. 포인터 어레이는 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터에 대한 증분 동작을 수행하여 생성된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함할 수도 있다. 포인터 어레이는 동일한 논리 동작의 일부로서 갱신되는 적어도 2개의 엔트리를 더 포함할 수도 있다. 증분 동작은 모듈로 동작과 스트라이드 동작 중 적어도 하나를 포함할 수도 있다. 포인터 어레이의 각 엔트리는 벡터 데이터 파일의 적어도 하나의 기억 요소의 시작 어드레스를 포함할 수도 있다.
또 다른 실시예에 있어서, 벡터 데이터 파일의 기억 요소들은 로우 및 컬럼의 매트릭스에 논리적으로 편성되고, 포인터 어레이의 각 엔트리는 벡터 데이터 파일의 적어도 하나의 요소의 로우 및 컬럼을 나타내는 어드레스를 포함할 수도 있다. 벡터 파일 데이터의 기억 요소들은 로우 및 컬럼의 매트릭스에 논리적으로 편성되고, 포인터 어레이의 각 엔트리는 벡터 데이터 파일의 단일 요소의 로우 및 컬럼을 나타내는 어드레스를 포함할 수도 있다. 포인터 어레이의 임의의 주어진 엔트리에 대하여, 임의의 주어진 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 포인트 어레이의 다른 엔트리에 의해 식별되는 적어도 하나의 기억 요소에 대하여 독립적일 수도 있다.
각각 복수의 데이터 요소들을 포함하는 데이터 벡터들을 이용하는 동작을 처리하기 위한 방법에 있어서, 이 방법은 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소들을 포함하는 벡터 데이터 파일을 제공하는 단계와, 복수의 엔트리를 갖는 포인터 어레이를 제공하는 단계를 포함한다. 각 엔트리는 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하기 위한 벡터 데이터 파일의 적어도 하나의 기억 요소를 식별하며, 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 특정 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 벡터 데이터 파일에 임의 시작 어드레스를 갖는다.
다른 방법에 있어서, 포인터 어레이의 임의의 주어진 엔트리에 대하여, 임의의 주어진 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 벡터 데이터 파일에 임의 시작 어드레스를 가질 수도 있다. 이 방법은 벡터 데이터 파일의 적어도 하나의 데이터 요소로부터 독출된 데이터에 기초하여 포인터 어레이의 복수의 엔트리 중 적어도 하나의 엔트리를 갱신하는 단계를 더 포함할 수도 있다. 또한, 상기 방법은 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터를 증분하여 생성된 데이터로부터 독출된 데이터에 기초하여 포인터 어레이의 엔트리들 중 적어도 하나의 엔트리를 갱신하는 단계를 포함할 수도 있다. 또한, 상기 방법은 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터에 대한 증분 동작을 수행하여 생성된 데이터에 기초하여 포인터 어레이의 엔트리들 중 적어도 하나의 엔트리를 갱신하는 단계를 포함할 수도 있다. 포인터 어레이의 적어도 2개의 엔트리들은 동일한 논리 동작의 일부로서 갱신될 수도 있다.
또 다른 방법에 있어서, 증분 동작은 포인터 엔트리의 적어도 하나의 어레이로부터 판독된 데이터에 대한 모듈로 동작과 스트라이드 동작 중 적어도 하나를 더 포함할 수도 있다. 포인터 어레이의 각 엔트리는 벡터 데이터 파일에 적어도 하나의 기억 요소의 시작 어드레스를 기억할 수도 있다. 벡터 데이터 파일의 기억 요소들은 로우 및 컬럼의 매트릭스에 논리적으로 편성되고, 포인터 어레이의 각 엔트리는 벡터 데이터 파일의 적어도 하나의 요소의 로우 및 컬럼을 나타내는 어드레스를 기억할 수도 있다. 벡터 파일 데이터의 기억 요소들은 로우 및 컬럼의 매트릭스에 논리적으로 편성되고, 포인터 어레이의 각 엔트리는 벡터 데이터 파일의 단일 요소의 로우 및 컬럼을 나타내는 어드레스를 기억할 수도 있다. 포인터 어레이의 임의의 주어진 엔트리에 대하여, 임의의 주어진 엔트리에 의해 식별되는 적어도 하나의 기억 요소는 포인트 어레이의 다른 엔트리에 의해 식별되는 적어도 하나의 기억 요소에 대하여 독립적일 수도 있다. 상기 방법은 각각 복수의 데이터 요소를 포함하는 데이터 벡터들을 이용하는 동작을 처리하기 위한 방법을 수행하기 위해서 장치에 의해 실행될 수 있는 명령 프로그램을 명백히 구현하는 장치로 판독 가능한 프로그램 기억 장치에 의해 실행될 수도 있다.
본 발명의 이러한 목적 및 또 다른 목적, 특징 및 이점은 다음의 예시적인 실시예에 대한 상세한 설명에 의해 분명해질 것이며, 첨부되는 도면에 의해 설명한다.
도 1은 본 발명에 따라 SIMD 디지털 신호 프로세서(DSP) 또는 미디어 프로세서를 나타내는 개략도.
도 2는 본 발명에 따라 8 엔트리 포인터 어드레스 파일, 512 엔트리 벡터 데이터 파일 및 4개의 요소로 이루어진 하나의 임의 서브벡터에 대한 액세스를 포함하는 16비트 요소들의 벡터들에 대한 벡터 데이터 파일의 일 실시예를 나타내는 개략도.
도 3은 본 발명에 따라 3개의 벡터를 포함하는 데이터 레지스터 분할의 예시적인 예를 나타내는 도면.
도 4는 본 발명에 따라 벡터에 대한 데이터 레지스터 분할의 예시적인 예를 나타내는 도면.
도 5는 본 발명에 따라 새로운 어드레스 멀티플렉서와 스트라이드 및 모듈로 어드레싱 기능을 보여주는 어드레스 증분기의 다른 실시예의 개략도.
〈도면의 주요부분에 대한 부호의 설명〉
101 : 명령 메모리
102 : 명령 유닛
103 : 벡터 레지스터 화일
104 : 벡터 산술 유닛
105 : 데이터 메모리
106 : 데이터 어드레스 장치
201 : 워드 어드레스 디코더
202 : 벡터 어드레스 포인터 어레이
204 : 증분기
205 : 멀티플렉서
206 : 벡터 데이터 파일
230 : 요소 어드레스
501 : 스트라이드(stride) 레지스터
502 : 종점(endpoint) 레지스터
503 : 시점(startpoint) 레지스터
본 발명은 바람직하게는 SIMD 처리를 위해 벡터 데이터를 포함하는 벡터 레지스터 파일을 제공한다. 또한, 본 발명은 그곳에 포함된 벡터들의 임의 서브벡터에 액세스하기 위한 레지스터 파일을 제공한다. 본 발명은 미리 결정된 수의 요소, 어드레스선을 갖는 콤포넌트나 주어진 사이즈의 콤포넌트를 갖는 프로세서 회로에 관하여 설명될 것이다. 콤포넌트들 또는 벡터들, 어드레스의 이러한 사이즈들, 입력들의 수, 출력들의 수, 요소들의 수 등은 단지 예시적인 것이며, 본 발명을 제한하는 것으로서 해석되어서는 안된다.
본 발명의 예시적인 일 실시예에 있어서, 벡터 레지스터 파일은 512개의 요소보다 작거나 같은 전체 사이즈의 하나 이상의 벡터를 유지하도록 편성되며, 매 액세스마다 16비트의 4개 요소를 판독 또는 기록한다. 벡터는 수를 나타내는 요소들의 선형 어레이로 이루어진 데이터 구조이다. 벡터 레지스터 파일에 액세스하기 위한 어드레스들은 일체적이지만 개별적으로 액세스된 포인터 어레이에 포함된 어드레스 포인터들에 의해 지정된다. 각 포인터는 각 액세스 포트 상에 매 액세스 사이클마다 판독 또는 기록될 수 있는 4개의 요소들 중 하나의 요소에 대한 어드레스를 지정한다. 어드레스 포인터 파일은 다수의 포인터를 포함한다. 매 액세스마다 필요한 포인터들의 수, 예컨대 4개의 포인터가 SIMD 처리 프로그램을 제어하는 명령에 포함되는 정보에 의해 선택된다. 그러므로, 벡터 레지스터 파일은 간접적으로 어드레싱되는 형태이다. 그 파일의 벡터 데이터 어레이부에 대한 액세스 어드레스를 결정하는데 이용된 후에 포인터 어레이부의 내용은 예컨대, 증분된 값(벡터의 순차 액세스를 위해) 또는 판독된 벡터의 내용(테이블 검색 액세스 또는 데이터 수집 액세스를 위해) (명령 제어 하에)으로 갱신될 수도 있다. 또한, 본 발명의 다른 실시예들은 스트라이드(stride) 액세스, 모듈로(modulo) 액세스 또는 다른 액세스 방법에 대한 갱신을 제공한다. 본 발명의 프로그램은 어드레스 값의 계산이나 그 갱신된 값을 포인터 어드레스 파일에 로딩하는데 사용된다.
도 1 내지 5에 도시된 요소들은 여러 형태의 하드웨어, 소프트웨어 또는 그들의 조합으로 실행될 수도 있다. 이러한 요소들은 프로세서 및 메모리와 입력/출력 인터페이스를 갖는 하나 이상의 적절히 프로그래밍된 범용 디지털 컴퓨터 또는 기억 장치상의 소프트웨어로 구현될 수 있다. 또한, 본 발명은 하드웨어로 구현될 수도 있다. 하드웨어로 구현될 때, 어드레스 갱신을 포함하는 계산은 최고 파이프라인 속도의 파이프라인형 동작과 같이 유리하게 처리될 수도 있다.
동일한 번호가 도면 전반에 걸쳐 동일하거나 유사한 요소들을 나타내는데, 우선 도 1은 예시적인 프로세서(100)를 보여준다. 프로세서(100)는 미디어 프로세서, SIMD 프로세서 또는 디지털 신호 프로세서(DSP)를 포함할 수 있고, 바람직하게는 명령 유닛(102)에 명령들을 제공하는 명령 메모리(101)를 포함한다. 명령 유닛(102)은 예컨대, 명령 메모리(101)에 저장된 프로그램을 시퀀싱(squencing)하여 프로세서(100)의 다른 요소들 또는 콤포넌트들에게 디코딩된 제어 수단을 제공한다. 처리될 데이터는 예컨대, 2개의 판독 데이터 포트(153, 154)와 2개의 기록 데이터 포트(151, 152)를 갖는 다중 포트형 데이터 메모리(105)에 유지되며, 각각의 포트는 데이터 어드레스 장치(106)에 의해 제공되는 어드레스로 액세스된다. 데이터는 데이터 메모리(105)로부터 판독 포트(154)를 통해 벡터 레지스터 파일(103)의 기록 포트(133)로 이동되고, 기록 포트(132)를 통해 벡터 레지스터 파일(103)에서 이용되고 벡터 산술 유닛(104)에서 이용된다. 계산된 결과는 기록 포트(132)를 통해 벡터 레지스터 파일(103)에 저장된다. 벡터 레지스터 파일(103)에 저장된 파일은 다른 계산을 위해 이용되거나, 판독 포트(131)를 통해, 버스(111) 및 기록 포트(152)를 이용하여 데이터 메모리(105)로 이동될 수도 있다. 프로세서(100)용 입력 데이터 및 프로그램은 외부 메모리나 입력/출력 장치로부터 입력 버스(110)를 통해 제공되고, 결과는 출력 버스(109)를 통해 외부 메모리나 입력/출력 장치로 전송된다.
각 산술 유닛(141-144)은 판독 포트(134, 135)를 통해 벡터 레지스터 파일(103)로부터 판독된 2개의 서브벡터 각각의 하나의 요소에 작용하며, 각 산술 유닛(141-144)은 다른 요소들에 대해 동일한 기능을 수행할 수도 있다. 결과적인 4개의 요소의 서브벡터가 생성되어 기록 포트(132)를 통해 벡터 레지스터 파일(103)에 재기록된다. 희망 서브벡터가 각 포트(132, 134, 135)를 통해 더 용이하게 선택된다면, 벡터 산술 유닛(104)에서 수행된 계산은 더 빠르게 진행될 수 있다.
도 2를 참조하면, 벡터 레지스터 파일(도 1의 103)이 더욱더 상세히 설명된다. 벡터 레지스터 파일(103)은 액세스 포트(도 1의 131-135) 중 하나에 대한 논리를 포함한다. 도 2의 데이터 버스(207)는 도면의 복잡성을 피하기 위해서 도 1의 108로 도시된 2개의 데이터 버스 중 하나를 나타낸다는 것에 주의해야 한다. 또한, 입력 포트(210)는 도 1에 도시된 2개의 입력 포트(131, 132) 중 하나이다. 벡터 어드레스 포인터 어레이(202)는 예시적으로 예컨대, 각각 9비트의 4개의 필드로 이루어진 8개의 워드로 이루어진다. 벡터 어드레스 포인터 어레이(202)는 워드 디코더(201)에 의한 8개의 워드 중 하나의 워드를 선택하는 프로세서(도1의 100)의 명령 유닛(102)에 의해 생성되는 3비트 어드레스(포인터 셀렉트)에 의해 어드레싱된다. 벡터 데이터는 일 실시예에 있어서 각각 16비트로 이루어진 512개의 요소를 포함하는 벡터 데이터 파일(206)에 포함된다. 버스(210)는 포인터 워드와 데이터 메모리(105)로부터의 데이터 파일이나 벡터 산술 유닛(도 1의 104)으로부터의 벡터 산술 계산 결과를 로딩하는데 이용된다. 벡터 데이터 파일(206)로부터 판독된 데이터는 벡터 산술 유닛(도 1의 104)에서 이용하거나 데이터 메모리(도 1의 105)에 저장하기 위해 판독 데이터 버스(207)상에 배치되는 4개의 연결된 벡터 요소(R1, R2, R3, R4)로 이루어진다. 또한, 벡터 데이터 파일(206)로부터 판독된 64비트 중 36비트는 어드레스 갱신에 이용하기 위해 이하에 설명될 36 멀티플렉서(예컨대, 9개 멀티플렉서의 4개 그룹으로 예시적으로 도시됨)의 제1 입력에 결합된다.
벡터 데이터 파일(206)의 각 판독 또는 기록 동작(operation)을 구성하는 4개의 벡터 요소(R1-R4)의 각각 하나를 선택하는데 이용되는 어드레스는 판독 버스(203)를 통해 벡터 어드레스 포인터 어레이(202)로부터 판독된 벡터 포인터 워드의 필드 중 하나로부터 나온다. 각 필드는 벡터 데이터 파일(206)에 액세스하는데 이용되는 어드레스를 형성하기 위해 명령 유닛(도 1의 102)에 의해 생성된 적절한 인에이블(208)과 논리적으로 앤드(AND)된다. 인에이블된 어드레스들은 4개 단위의 증분(increment-by-4) 어레이(204)의 입력에 동시에 결합된다. 증분된 어드레스는 멀티플렉서(205)의 제2 입력에 연결된다. 멀티플렉서(205)의 제1 입력과 제2 입력 사이의 선택은 멀티플렉서 제어 신호(211)에 의해 이루어진다. 멀티플렉서(205)의 출력은 그 출력이 벡터 어드레스 포인터 어레이(202)에 기록될 수 있도록 어드레스 포인터 어레이(202)의 입력에 접속된다. 포인터 어레이(202)로부터 판독된 포인터 데이터 워드는 버스(209)를 통해 데이터 메모리(도 1의 105)에 전송될 수도 있다. 상기와 같이 데이터 어레이를 어드레싱하는데 이용한 후에 어드레스 포인터 값을 증분하는 구성(사후 증분)은 증분기 어레이(204)를 판독 버스(203)의 출력에 직접 결합하고 그 출력을 어드레스 인에이블단(230)에 접속함으로써 이용하기 전에 증분(사전 증분)하도록 변형될 수 있음은 어레이 논리 설계 분야의 당업자에게 인지될 수 있다.
벡터 데이터 파일(206)의 요소 공간(예컨대, 512개의 워드)은 실행되고 있는 특정 알고리즘에 의해 요구되는 데이터 벡터들에게 바람직하게는 소프트웨어에 의해 세분되어 할당된다. 포인터 어레이(202)에 저장된 벡터 포인터 파일에 배치되는 값들은 8개의 벡터까지 각각의 시작 어드레스를 정의한다. 그 값들은 바람직하게는 프로그램 명령, 예컨대 VPTRLOAD를 이용하여 포인터 어레이(202)에 로딩된다. 도 2를 참고하면, 명령 VPTRLOAD를 실행함으로써, 값들은 버스(210)에 로드되고 포인터 워드의 어드레스는 워드 어드레스 디코더(201)의 "포인터 셀렉트" 입력에 로드된다. 버스(210)에 배치된 값은 데이터 메모리(105)로부터 나오거나, 산술 또는 논리 계산 유닛(도 1의 104)의 결과 출력을 할 수 있다.
도 3은 3개의 작은 벡터를 유지하고 있는 벡터 데이터 파일(206)의 일 실시예의 예시적인 분할을 보여준다. 각 요소의 9비트 어드레스는 6비트의 로우 어드레스(64 로우)와 3비트의 컬럼 어드레스(8 컬럼)로 이루어진다. 이 예의 제1 벡터(303)는 로우 3, 컬럼 3에 위치한 제1 요소를 시작으로 하여 4개의 요소로 이루어진다. 제2 요소는 로우 3, 컬럼 4에, 제3 요소는 로우 3, 컬럼 5에, 제4 요소는 로우 3, 컬럼 6에 위치한다. 벡터(303)를 어드레싱하기 위해서, 벡터 포인터 어레이(202)는 바람직하게는 소프트웨어 프로그램에 의해 설정된다. 그 프로그램은 벡터(303)의 4개의 요소를 지정하는 벡터 포인터 어레이를 워드 어드레스 "1"로 설정하였다. 벡터 어드레스 포인터 파일(202)에 있어서, 워드 어드레스 "1"의 36비트는 도 3에 도시된 바와 같이 초기화된 9비트의 4개의 필드(305)로 나누어진다. 그 포인터의 각 필드(305)의 값은 예시적으로 로우, 컬럼 값으로 도시되었지만, 실제로는 9비트의 이진수(또는 다르게 크기화된 워드)가 저장된다. 예컨대, (3,3)에 위치한 요소의 요소 어드레스는 실제로 이진수 000011011로서 저장된다. 제2 벡터(307)는 (8,1)에서 시작하는 12개의 요소를 갖는다. 도시된 값을 갖는 제2 벡터(307)의 처음 4개의 요소를 어드레싱하는데 포인터 워드 어드레스 "4"가 이용된다. 제3 벡터(309)는 위치(11,5)에 제1 요소, 위치(11,6)에 제2 요소, 위치(11,7)에 제3 요소가 위치된 3개의 요소로 이루어진다. 제4 요소는 없기 때문에, 그것이 무관(don't care)할지라도 제4 포인터 필드는 (0,0)으로 설정된다.
도 2에 예시적으로 도시된 실시예에 대하여, 벡터 데이터 파일(206)에 대한 기본 동작으로는 예컨대, 순차 판독, 순차 기록, 간접 판독 및 간접 기록이 있다. 간접 액세스 모드는 본 발명의 중요한 특징 중 하나이며, 서브벡터들을 형성하기 위해 벡터 데이터 파일(206) 내의 요소들의 임의의 집합을 어드레싱할 수 있다. 이러한 서브벡터들은 예컨대, 벡터 값의 테이블 검색이나, 서브벡터에 요소들을 수집하여 SIMD 처리를 위해 이용된다. 본 발명의 다른 용도는 예컨대, 벡터의 스트립-마이닝(strip-mining)을 포함할 수도 있다. 벡터의 스트립-마이닝은 간접 판독을 통해 서브벡터들을 어셈블하는 단계와 그 결과 얻어진 서브벡터를 후속의 프로그램 단계, 예컨대 필터링에서 나중에 이용하기 위해서 데이터 메모리(105)에 재기록(저장)하는 것을 포함한다.
벡터 레지스터 파일(도 1의 103)에 대한 동작의 주어진 논리 사이클 동작 동안에, 다음의 동작이 수행될 수도 있다: 포인터 어레이(202)에 대한 동작(판독 또는 기록 동작)이 지정되고, 포인터 어레이(202)에 지표(어드레스, 예컨대 0과 7 사이의 워드 어드레스)가 제공되며, 제공된 지표에 대응하는 포인터 어레이(202)의 4개의 엔트리가 포인터 어레이(202)로부터 판독되고, 포인터 어레이(202)로부터 판독된 4개의 엔트리가 벡터 데이터 파일(206)에 (도시된 4개의) 어드레스들의 세트를 생성하는데 이용되며[이는 도시된 바와 같이 4개의 어드레스 인에이블 신호군(208)에 의해 트리거되는 것이 바람직함], 제공된 어드레스들의 세트에 대응하는 벡터 데이터 파일(206)의 요소들이 벡터 데이터 파일(206)로부터 판독되고, 제공된 지표에 대응하는 포인터 어레이에 있는 엔트리의 갱신을 선택적으로 제어하기 위한 제어 신호들이 제공된다. 이들 제어 신호는 적어도 "예" 또는 "아니오" 값을 지정하는 "풋어웨이 제어(putaway control)" 신호를 포함하는데, 그 값이 "예"인 경우에는 버스(250)상에서의 멀티플렉서(205)의 출력값은 기록 포트(251)를 통해 포인터 어드레스 어레이(202)에 재기록된다. 또한, 제어 신호들은 어드레스 인에이블 신호(208)의 공급된 세트에 대응하는 포인터 파일(202)로부터 판독된 증분된 어드레스 또는 벡터 데이터 레지스터 파일(206)로부터 판독된 데이터가 버스(250)에 결합되어야 하는 지의 여부를 결정하기 위해, 멀티플렉서 제어 신호(211)를 포함한다.
도 2를 다시 참조하면, (증분 동작, 스트라이드 동작 또는 증분-모듈로 어드레싱 동작과 같은) 다른 동작이 벡터 어드레스 포인터 파일(202)에 의해 제공된 어드레스들의 세트에 수행될 수도 있으며, 멀티플렉서 회로(205)는 그러한 동작으로부터 생기는 데이터 결과나 벡터 데이터 파일(206)의 요소들로부터 판독된 데이터를 선택적으로 출력하는데 이용될 수도 있다. 이러한 경우에 있어서, 멀티플렉서 회로(205)에 의해 선택적으로 출력된 데이터를 이용하여 제공된 지표에 대응하는 포인터 어레이(202)에 있는 엔트리를 갱신할 수도 있다.
이러한 동작들은 벡터 레지스터 파일(103)에 있는 벡터 데이터에 대한 동작을 포함하는 명령들에 의해 트리거된다. 또한, 버스(210)상의 데이터의 소스 및 버스(209, 207)상의 데이터의 목적지에 대한 지정은 그 명령 스트림으로부터 유도된다.
순차 벡터 판독은 포인터 어레이(202)의 8개의 어드레스 워드(0-7) 중 하나에 있는 시작 어드레스에서 시작된다. 설명을 위해, 도 3에 도시된 벡터 파일(206) 분할을 이용할 것이며, 본 발명의 특징들 및 상세한 설명을 예시적으로 설명하기 위해서 제2 벡터(307)에 대한 판독이 기재될 것이다.
도 1, 2 및 3을 참조하여, 제1 사이클 동작은 포인터 어레이(202)의 워드 어드레스 "4"에 대한 판독, 4개의 어드레스 모두에 대한 인에이블, 벡터 데이터 파일(206)에 대한 판독, 멀티플렉서 제어(211)값 1(예컨대, 멀티플렉서의 왼쪽 다리를 선택) 및 풋어웨이값 "예"를 지정한다. 풋어웨이값은 멀티플렉서(205)의 출력이 포인터 어드레스 어레이(202)에 재기록되어야 하는 지의 여부를 지정하는 명령으로부터의 한 비트이다. 풋어웨이값은 버스(250)상의 값이 기록 포트(251)를 통해 포인터 어레이(202)에 재기록되어야 하는 지의 여부를 결정하는 제어 신호로서 구현된다. 그 결과로서, 벡터 포인터 워드 어드레스 "4"의 첫번째 9비트가 벡터 데이터 파일(206)로부터 판독되는 제1 서브벡터 요소의 어드레스가 될 것이다. 벡터 데이터 파일(206)에서 (8,1)에 위치한 요소가 판독되어 버스(207)의 R1상에 배치된다. 마찬가지로, 포인터 워드 "4"의 두번째 필드는 벡터 데이터 파일의 (8,2)에 위치한 요소를 판독하고, 버스(207)의 R2에 배치함을 지정하며, 세번째 및 네번째 요소들에 대해서도 유사하다. 판독된 4개의 16비트 데이터값(R1-R4)은 판독 데이터 버스(207)를 통해 데이터 메모리(105)나 벡터 산술 유닛(104)으로 전달된다. 동시에, 포인터 워드 "4"로부터 판독된 값들은 증분기(204)에 의해 (4개의 요소가 한번에 진행되어 4가 가산됨으로써) 다음 순차값으로 증분된다.
멀티플렉서 제어(211)가 증분된 값을 선택하고 풋어웨이 제어가 갱신된 값이 포인터 어레이(202)에 재배치되어야 함을 지정하기 때문에, 값 (8,5), (8,6), (8,7) 및 (8,8)이 멀티플렉서(205)를 통해 포인터 파일 워드 어드레스 4에 재저장된다. 당업자는 로우 8, 컬럼 1을 나타내는 값(이진수 001000001)에 4(이진수 000000100)를 가산한 결과로서, 로우 8, 컬럼 5(8,5)를 나타내는 이진수 001000101이 되며, 다른 3개의 값들에 대해서도 동일하다는 것을 알 수 있다.
동작의 다음 사이클의 제어값은 제1 사이클과 동일하지만, 이는 갱신된 포인터 값들이 벡터 데이터 파일(206)을 액세스하는데 이용되기 때문에 그 벡터의 다음 4개의 요소들이 어셈블되고, 버스(207)에 전송된다. 그 동일한 제어값이 추가적인 사이클(이 예에서는 총 3회) 동안 반복되어, 전체 요소 벡터(이 경우에는 12개의 요소)를 순차적으로 판독하여 버스(207)상에 그 벡터를 배치한다.
벡터에 대한 순차 기록 또는 로딩은 판독과 매우 유사하다. 다시 예로서 도 3의 제2 벡터를 이용하여, 벡터 데이터 파일(206)에 있는 데이터에 액세스하는 제1 사이클 동작은 포인터 어레이(202)의 워드 어드레스 4에 대한 판독, 4개의 어드레스 모두에 대한 인에이블(208), 벡터 데이터 파일(206)에 대한 기록, 멀티플렉서 제어(211)값 1(예컨대, 멀티플렉서의 왼쪽 다리를 선택) 및 풋어웨이 제어값 "예"를 지정한다. 그 결과로서, 벡터 포인터 워드 어드레스 "4"의 첫번째 9비트가 벡터 데이터 파일(206)에 기록되는 제1 서브벡터 요소의 어드레스가 될 것이다. 버스(210)의 첫번째 16비트가 벡터 데이터 파일(206)의 (8,1)에 위치한 요소에 기록된다. 유사하게, 포인터 워드 어드레스 "4"에 있는 두번째 필드는 벡터 데이터 파일(206)의 (8,2)에 위치한 요소가 버스(210)로부터 두번째 16비트로 기록되어야 함을 지정한다. 세번째 및 네번째 요소들에 대해서도 유사하다. 버스(210)상의 64비트로부터 취해진 4개의 16비트 데이터값이 벡터 데이터 파일(206)에 기록된다. 동시에, 포인터 워드 어드레스 "4"로부터 판독된 값들은 증분기(204)에 의해 (4개의 요소가 한번에 처리되어 4가 가산됨으로써) 다음 순차값으로 증분된다.
멀티플렉서 제어(211)가 증분된 값을 선택하고 풋어웨이 제어값이 갱신된 값이 포인터 어레이(202)에 재배치되어야 함을 지정함으로써, 값 (8,5), (8,6), (8,7) 및 (8,8)이 멀티플렉서(205)를 통해 포인터 파일 워드 어드레스 "4"에 재저장된다. 동일한 제어 워드가 두번 더 반복되고 버스(210)상의 다음 2개의 값이 벡터 데이터 파일에 저장되어 12 요소 벡터를 구성한다.
간접 어드레싱 동작 모드(간접 판독 및 간접 기록)는 다음과 같은 동작을 위해서 예시적으로 이용될 수도 있다:
1) 벡터 데이터 파일(206)에 벡터로서 저장된 어드레스 목록에 의한 임의 서브벡터 액세스;
2) 신호 샘플이 포인터 레지스터(202)에 배치될 때 데이터 직접(directed) 액세스, 이러한 경우에는 각 신호 값은 필터 계수를 선택하기 위해 여러 알고리즘에서 요구되는 벡터 요소에 액세스할 수도 있다;
3) 분산된 데이터를 순차적으로 SIMD 처리 가능한 데이터로 전환하는 데이터 수집 동작.
이는 간접 명령이 다른 태스크를 위해서도 사용될 수 있기 때문에 소모적인 목록이 아니다.
도 2를 계속 참조하면서 도 4에 도시된 예시적인 분할을 이용하여 간접 판독을 설명할 것이다. 4개 요소의 제1 벡터(403)는 벡터 데이터 파일(206)의 어드레스 (8,3), (8,5) (9,2) 및 (9,3)과 등가인 이진수 요소 값을 포함한다.
벡터 레지스터 데이터 파일(206)의 데이터에 액세스하는 제1 사이클 동작의 제어는 포인터 어레이(202)의 워드 어드레스 "1"에 대한 판독, 모든 4개의 어드레스에 대한 인에이블(208), 벡터 데이터 파일(206)에 대한 판독, 멀티플렉서 제어값(211) 0(예컨대, 멀티플렉서의 오른쪽 다리를 선택) 및 풋어웨이 제어값 "예"를 지정한다. 그 결과로서, 벡터 데이터 파일(206)의 (8,3)에 위치한 16비트의 요소가 벡터 데이터 파일(206)로부터 판독되어 버스(207)의 R1상에 배치될 것이다. 또한, 이 값의 9비트는 첫번째 멀티플렉서(205)에 결합된다. 전술한 바와 같이, 이 9비트는 벡터 데이터 파일(206)의 요소의 어드레스와 등가인 이진수 값을 갖는다. 유사하게, 다른 3개의 요소에 있는 각 값의 9비트는 멀티플렉서(205)에 결합된다. 멀티플렉서 선택 제어(211)가 오른쪽을 선택하고 풋어웨이 제어가 "예"를 지정함으로써, 위치 (8,3), (8,5), (9,2) 및 (9,3)에 포함된 값이 포인터 워드 어드레스 "1"의 4개의 필드에 기록된다.
제2 사이클의 제어는 포인터 어레이(202)의 워드 어드레스 "1"에 대한 판독, 4개의 어드레스 모두에 대한 인에이블(208), 벡터 데이터 파일(206)에 대한 판독, 멀티플렉서 제어값(211) 0(예컨대, 멀티플렉서의 오른쪽 다리를 선택) 및 풋어웨이 제어값 "아니오"를 지정한다. 제2 사이클 동작의 결과로서, 어드레스가 포인터 파일 워드 어드레스 "1"에 있는 4개의 요소가 벡터 데이터 파일(206)로부터 판독되어 버스(207)상에 배치된다. 벡터 데이터 파일(206)에서 4개의 요소의 위치는 벡터 데이터 파일(206)에서 위치 (8,3), (8,5), (9,2) 및 (9,3)의 낮은 순서로 9비트의 값들에 대응한다.
간접 기록["데이터 분산(data scatter)"] 동작은 유사한 시퀀스에 따라 제어된다. 데이터 분산 동작을 실행하기 위해서는 각 요소 어드레스(230)가 벡터 데이터 파일(206)의 임의의 16비트 데이터 요소에 대한 기록을 지정할 수 있도록 64비트 기록 포트(도 2의 261)를 4개의 16비트 포트로 분할해야 함을 유의해야 한다. 이러한 능력에 의해, 요소 1 어드레스는 64비트 버스(210)의 첫번째 16비트의 벡터 요소 R1을 벡터 데이터 파일(206)의 어느 곳에 기록해야 하는 지를 지정하고, 요소 2의 어드레스는 64비트 버스(210)의 두번째 16비트의 벡터 요소 R2를 벡터 데이터 파일(206)의 어느 곳에 기록해야 하는 지를 지정하며, R3 및 R4에 대해서도 유사하다. 간략화된 실시예는 하드웨어 비용 문제상 그러한 능력을 생략할 수도 있다. 설명된 실시예에 있어서, 벡터 레지스터 데이터 파일(206)에 있는 데이터에 액세스하는 제1 사이클 동작 동안의 제어는 포인터 어레이(202)의 워드 어드레스 "1"에 대한 판독, 4개의 어드레스 모두에 대한 인에이블(208), 벡터 데이터 파일(206)에 대한 판독, 멀티플렉서 제어값(211) 0(예컨대, 멀티플렉서의 오른쪽 다리를 선택) 및 풋어웨이 제어값 "예"를 지정한다. 이는 지정된 4개의 요소에 있는 값들을 판독하여 포인터 어레이 워드 어드레스 "1"에 그 값들을 재기록한다. 제2 사이클의 제어는 포인터 어레이(202)의 워드 어드레스 "1"에 대한 판독, 4개의 어드레스 모두에 대한 인에이블(208), 벡터 데이터 파일(206)에 대한 기록, 멀티플렉서 제어값(211) 0(예컨대, 멀티플렉서의 오른쪽 다리를 선택) 및 풋어웨이 제어값 "아니오"를 지정한다. 이는 버스(210)상의 4개의 요소를 취해서 그것들을 제1 사이클에서 판독된 어드레스에 의해 지정된 벡터 데이터 파일(206)의 4개의 요소에 배치한다.
임의 포인터를 이용하여 벡터 데이터 파일에서의 계산의 개시점(startpoint)을 지정할 수 있는 능력은 필터링 및 컨볼루션과 같은 계산을 위해서 하나의 벡터를 다른 벡터 또는 그 자체로 매우 쉽고 빠르게 "슬라이드(slide)"시킬 수 있다.
당업자는 도 2에 도시된 어드레스 생성 및 사용을 위한 논리가 벡터 데이터 파일(206)에 대한 다중 포트 액세스를 위해서 반복될 수 있음을 이해할 것이다. 다중 포트 동작을 위한 도 2의 실시예에 대한 첫번째 확장은 동시 동작 가능한 벡터 데이터 파일(206),즉 한 포트는 판독 전용이고 다른 포트는 기록 전용인 판독 및 기록 포트(각각 262 및 261)를 만드는 것이다. 그러한 구조에 의해, 오래된 데이터가 판독 포트(262)에 의해 판독되어 버스(207)상에 배치되며 처리되고, 그 결과가 데이터 메모리(105)에 재기록될 때, 새로운 데이터가 기록 포트(261)를 통해 버스(210)로부터 벡터 데이터 파일(206)로 로딩될 수 있다. 이는 임의 크기의 벡터가 처리 장치를 통하여 흐르는 것을 가능케 한다.
도 5를 참조하면, 다른 어드레싱 모드, 즉 스트라이드(stride) 및 모듈로(modulo) 어드레싱을 제공한 도 2의 실시예의 변형예가 도시되어 있다. 또한 적절한 논리 또는 소프트웨어를 이용하여 다른 어드레싱 모드를 구현할 수도 있다. 도 2의 어드레스 증분기(204) 및 멀티플렉서(205)는 도 5에 도시된 하드웨어로 대체될 수도 있다. 증분기(504) 및 멀티플렉서(505)가 포함된다. 그 입력은 포인터 파일(202)로부터 판독된 요소 어드레스(508)와 벡터 레지스터 파일(206)로부터의 벡터 데이터를 포함하며, 그 출력은 포인터 파일(202)에 저장되는 갱신된 어드레스 버스(250)이다. 스트라이드 액세스의 경우, 스트라이드 값은 바람직하게는 프로그램에 의해 스트라이드 레지스터(501)에 저장되며, 그 스트라이드 액세스는 상술한 순차 액세스에 대해 설명된 바와 같이 진행된다. 그러나, 스트라이드 값은 고정된 값 4 대신에 포인터 파일 값에 가산(또는 감산)된다. 모듈로(순환) 어드레싱은 예컨대, 개시점(startpoint) 레지스터(503) 및 포인터 파일(도 2의 202)에 순환 버퍼의 시작 어드레스를 로딩하는 프로그램에 의해서 수행된다. 벡터의 마지막은 종점(endpoint) 레지스터(502)에 로딩된다. 동작은 상술한 같이 스트라이드 레지스터(501)의 값을 이용하여 어드레스를 증분시키며 진행된다. 각 사이클마다, 비교 일치(equal) 회로(506)는 갱신된 어드레스를 종점 어드레스와 비교하여 벡터의 마지막이 도착되었는지를 확인한다. 벡터의 마지막이 도착되면, 멀티플렉서(505)는 갱신된 어드레스 대신에 새로운 어드레스로서 개시점 어드레스 레지스터(503)로부터 개시점 어드레스를 포인터 파일(202)에 제공하도록 조절된다.
임의 벡터 어드레싱을 구비한 벡터 레지스터 화일의 바람직한 실시예(예시적이며 그것으로 제한되지 않음)를 설명하였지만, 상술한 가르침에 의해 본 기술 분야의 통상의 지식을 습득한 자에 의해서 변형되고 변화될 수 있다. 그러므로, 첨부된 청구 범위에서 규정된 본 발명의 범위 및 정신 내에서 개시된 본 발명의 특정 실시예는 변경될 수도 있다. 지금까지 특허법에서 요구되는 바와 같이 상세하게 본 발명을 설명한 바에 따라, 청구되어 특허증에 의해 보호받고자 희망하는 것들이 첨부된 청구 범위에 기재되어 있다.
본 발명은 종래 기술보다 많은 이점을 제공한다. 예컨대, 본 발명에 의해 제공되는 유연성있는 어드레싱은 데이터 메모리(105)의 어드레싱을 간소하게 한다. 다른 이점들은 다음을 포함할 수도 있다. 복잡한 루프 및 테이블 검색을 위한 데이터의 어드레싱은 적은 명령으로 용이하게 지정될 수 있으며, 본 발명으로 인해 프로그램의 크기를 더 작게 할 수 있으므로, 명령 메모리(101)의 효율성을 증가시킨다. 본 발명은 벡터 어드레스 파일(206)의 각 요소가 벡터 어드레스 파일(206)의 임의의 다른 요소의 내용에 관계없이 데이터 어레이(202)에 있는 임의의 요소의 임의의 어드레스를 포함할 수 있는 능력을 제공한다. 예컨대, 어드레스가 데이터 파일에 있는 순차 데이터 요소들을 참조해야 하는 요건이 제거되고 2개의 요소는 동일한 어드레스를 가질 수 있다. 본 발명에 의해 다른 이점 및 이득이 실현될 수도 있다.
Claims (23)
- 복수의 데이터 요소들을 각각 포함하는 데이터 벡터들을 이용하는 동작들을 처리하기 위한 시스템에 있어서,상기 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소들을 포함하는 벡터 데이터 파일과,버스에 의해 상기 벡터 데이터 파일에 결합되고, 복수의 엔트리들을 포함하는 포인터 어레이를 포함하며,각각의 엔트리는 상기 벡터 데이터 파일 내의 적어도 하나의 기억 요소를 식별하고,상기 적어도 하나의 기억 요소는 상기 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하기 위한 것이고,상기 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 상기 특정 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일 내의 임의 시작 어드레스를 갖고,상기 포인터 어레이의 임의의 주어진 엔트리에 대하여, 상기 임의의 주어진 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일의 임의 시작 어드레스를 포함하는, 동작 처리 시스템.
- 삭제
- 제1항에 있어서, 상기 포인터 어레이는 상기 벡터 데이터 파일 내의 적어도 하나의 데이터 요소로부터 독출된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 포인터 어레이는 상기 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터를 증분하여 생성된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 포인터 어레이는 상기 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터에 대한 증분 동작을 수행하여 생성된 데이터에 기초하여 갱신되는 적어도 하나의 엔트리를 포함하는, 동작 처리 시스템.
- 제5항에 있어서, 상기 포인터 어레이는 동일한 논리 동작의 일부로서 갱신되는 적어도 2개의 엔트리들을 포함하는, 동작 처리 시스템.
- 제5항에 있어서, 상기 증분 동작은 모듈로 동작과 스트라이드 동작 중 적어도 하나를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일 내의 적어도 하나의 기억 요소의 시작 어드레스를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 벡터 데이터 파일의 상기 기억 요소들은 로우들 및 컬럼들의 매트릭스에 논리적으로 편성되고, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일 내의 적어도 하나의 요소의 로우 및 컬럼을 나타내는 어드레스를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 벡터 파일 데이터의 상기 기억 요소들은 로우들 및 컬럼들의 매트릭스에 논리적으로 편성되고, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일 내의 단일 요소의 로우 및 컬럼을 나타내는 어드레스를 포함하는, 동작 처리 시스템.
- 제1항에 있어서, 상기 포인터 어레이의 임의의 주어진 엔트리에 대하여, 상기 임의의 주어진 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 포인트 어레이의 다른 엔트리들에 의해 식별되는 상기 적어도 하나의 기억 요소에 대하여 독립적인, 동작 처리 시스템.
- 복수의 데이터 요소들을 각각 포함하는 데이터 벡터들을 이용하는 동작을 처리하기 위한 방법에 있어서,상기 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소들을 포함하는 벡터 데이터 파일을 제공하는 단계와,복수의 엔트리를 갖는 포인터 어레이를 제공하는 단계를 포함하고,상기 각 엔트리는 상기 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하기 위한 상기 벡터 데이터 파일의 적어도 하나의 기억 요소를 식별하고,상기 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 상기 특정 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일에 임의 시작 어드레스를 갖고,상기 포인터 어레이의 임의의 주어진 엔트리에 대하여, 상기 임의의 주어진 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일에 임의 시작 어드레스를 갖는, 동작 처리 방법.
- 삭제
- 제12항에 있어서, 상기 벡터 데이터 파일의 적어도 하나의 데이터 요소로부터 독출된 데이터에 기초하여 상기 포인터 어레이의 복수의 엔트리들 중 적어도 하나를 갱신하는 단계를 더 포함하는, 동작 처리 방법.
- 제12항에 있어서, 상기 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터를 증분하여 생성된 데이터로부터 독출된 데이터에 기초하여 상기 포인터 어레이의 엔트리들 중 적어도 하나를 갱신하는 단계를 더 포함하는, 동작 처리 방법.
- 제12항에 있어서, 상기 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터에 대한 증분 동작을 수행하여 생성된 데이터에 기초하여 상기 포인터 어레이의 엔트리들 중 적어도 하나를 갱신하는 단계를 더 포함하는, 동작 처리 방법.
- 제16항에 있어서, 상기 포인터 어레이의 적어도 2개의 엔트리들은 동일한 논리 동작의 일부로서 갱신되는 것인 동작 처리 방법.
- 제16항에 있어서, 상기 증분 동작은 상기 포인터 어레이의 적어도 하나의 엔트리로부터 판독된 데이터에 대한 모듈로 동작과 스트라이드 동작 중 적어도 하나를 더 포함하는, 동작 처리 방법.
- 제12항에 있어서, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일 내의 적어도 하나의 기억 요소의 시작 어드레스를 기억하는, 동작 처리 방법.
- 제12항에 있어서, 상기 벡터 데이터 파일의 상기 기억 요소들은 로우들 및 컬럼들의 매트릭스에 논리적으로 편성되고, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일의 적어도 하나의 요소의 로우 및 컬럼을 나타내는 어드레스를 기억하는, 동작 처리 방법.
- 제12항에 있어서, 상기 벡터 파일 데이터의 상기 기억 요소들은 로우들 및 컬럼들의 매트릭스에 논리적으로 편성되고, 상기 포인터 어레이의 각각의 엔트리는 상기 벡터 데이터 파일의 단일 요소의 로우 및 컬럼을 나타내는 어드레스를 기억하는 것인 동작 처리 방법.
- 제12항에 있어서, 상기 포인터 어레이의 임의의 주어진 엔트리에 대하여, 상기 임의의 주어진 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 포인트 어레이의 다른 엔트리들에 의해 식별되는 상기 적어도 하나의 기억 요소에 대하여 독립적인, 동작 처리 방법.
- 복수의 데이터 요소들을 각각 포함하는 데이터 벡터들을 이용하는 동작들을 처리하기 위한 방법을 수행하기 위해서 장치에 의해 실행될 수 있는 명령들의 프로그램을 구체적으로 구현하는 장치로 판독 가능한 프로그램 기억 장치에 있어서, 상기 방법은,상기 데이터 벡터들의 데이터 요소들을 저장하기 위한 복수의 기억 요소를 포함하는 벡터 데이터 파일을 제공하는 단계와,복수의 엔트리를 갖는 포인터 어레이를 제공하는 단계를 포함하고,각각의 엔트리는 상기 데이터 벡터들의 적어도 하나의 데이터 요소를 저장하기 위한 상기 벡터 데이터 파일의 적어도 하나의 기억 요소를 식별하고,상기 포인터 어레이의 적어도 하나의 특정 엔트리에 대하여, 상기 특정 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일의 임의 시작 어드레스를 갖고,상기 포인터 어레이의 임의의 주어진 엔트리에 대하여, 상기 임의의 주어진 엔트리에 의해 식별되는 상기 적어도 하나의 기억 요소는 상기 벡터 데이터 파일에 임의 시작 어드레스를 갖는, 프로그램 기억 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/514,497 US6665790B1 (en) | 2000-02-29 | 2000-02-29 | Vector register file with arbitrary vector addressing |
US09/514,497 | 2000-02-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010085614A KR20010085614A (ko) | 2001-09-07 |
KR100447294B1 true KR100447294B1 (ko) | 2004-09-07 |
Family
ID=24047424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0009726A KR100447294B1 (ko) | 2000-02-29 | 2001-02-26 | 임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6665790B1 (ko) |
JP (1) | JP3940269B2 (ko) |
KR (1) | KR100447294B1 (ko) |
CA (1) | CA2337784A1 (ko) |
GB (1) | GB2365588B (ko) |
TW (1) | TW484074B (ko) |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
US7010004B2 (en) * | 2001-08-03 | 2006-03-07 | Optibase Ltd. | Method for multiplexing data for packet networks |
US6931400B1 (en) | 2001-08-21 | 2005-08-16 | At&T Corp. | Method and system for identifying representative trends using sketches |
GB2382674B (en) * | 2001-10-31 | 2005-11-16 | Alphamosaic Ltd | Data access in a processor |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US20030221086A1 (en) * | 2002-02-13 | 2003-11-27 | Simovich Slobodan A. | Configurable stream processor apparatus and methods |
DE10206830B4 (de) * | 2002-02-18 | 2004-10-14 | Systemonic Ag | Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden |
US6915411B2 (en) * | 2002-07-18 | 2005-07-05 | International Business Machines Corporation | SIMD processor with concurrent operation of vector pointer datapath and vector computation datapath |
US7793084B1 (en) | 2002-07-22 | 2010-09-07 | Mimar Tibet | Efficient handling of vector high-level language conditional constructs in a SIMD processor |
US7580482B2 (en) | 2003-02-19 | 2009-08-25 | Endres Thomas J | Joint, adaptive control of equalization, synchronization, and gain in a digital communications receiver |
US7017028B2 (en) * | 2003-03-14 | 2006-03-21 | International Business Machines Corporation | Apparatus and method for updating pointers for indirect and parallel register access |
JP2004302647A (ja) * | 2003-03-28 | 2004-10-28 | Seiko Epson Corp | ベクトルプロセッサおよびレジスタのアドレス指定方法 |
US20040236920A1 (en) * | 2003-05-20 | 2004-11-25 | Sheaffer Gad S. | Methods and apparatus for gathering and scattering data associated with a single-instruction-multiple-data (SIMD) operation |
US7313788B2 (en) * | 2003-10-29 | 2007-12-25 | International Business Machines Corporation | Vectorization in a SIMdD DSP architecture |
US7945760B1 (en) * | 2004-04-01 | 2011-05-17 | Altera Corporation | Methods and apparatus for address translation functions |
US7302627B1 (en) * | 2004-04-05 | 2007-11-27 | Mimar Tibet | Apparatus for efficient LFSR calculation in a SIMD processor |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7850400B2 (en) * | 2004-11-25 | 2010-12-14 | Freyssinet International (Stup) | Stabilized soil structure and facing elements for its construction |
US20060149938A1 (en) * | 2004-12-29 | 2006-07-06 | Hong Jiang | Determining a register file region based at least in part on a value in an index register |
TWI277876B (en) * | 2005-10-28 | 2007-04-01 | Via Tech Inc | Data storage and transfer method |
TW200739363A (en) * | 2006-04-04 | 2007-10-16 | Nat Univ Chung Cheng | Flexible load and storage device for multimedia applications |
US8135897B2 (en) | 2006-05-16 | 2012-03-13 | St-Ericsson Sa | Memory architecture |
US7788471B2 (en) * | 2006-09-18 | 2010-08-31 | Freescale Semiconductor, Inc. | Data processor and methods thereof |
US7441099B2 (en) * | 2006-10-03 | 2008-10-21 | Hong Kong Applied Science and Technology Research Institute Company Limited | Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit |
FR2918190B1 (fr) * | 2007-06-26 | 2009-09-18 | Thales Sa | Dispositif d'adressage pour processeur parallele. |
US8122229B2 (en) * | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
US8561037B2 (en) | 2007-08-29 | 2013-10-15 | Convey Computer | Compiler for generating an executable comprising instructions for a plurality of different instruction sets |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8095735B2 (en) | 2008-08-05 | 2012-01-10 | Convey Computer | Memory interleave for heterogeneous computing |
US9015399B2 (en) | 2007-08-20 | 2015-04-21 | Convey Computer | Multiple data channel memory module architecture |
US10020037B2 (en) * | 2007-12-10 | 2018-07-10 | Intel Corporation | Capacity register file |
US8051226B2 (en) | 2008-06-13 | 2011-11-01 | Freescale Semiconductor, Inc. | Circular buffer support in a single instruction multiple data (SIMD) data processor |
US8755515B1 (en) | 2008-09-29 | 2014-06-17 | Wai Wu | Parallel signal processing system and method |
US8205066B2 (en) * | 2008-10-31 | 2012-06-19 | Convey Computer | Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor |
US20100115233A1 (en) * | 2008-10-31 | 2010-05-06 | Convey Computer | Dynamically-selectable vector register partitioning |
US8423745B1 (en) | 2009-11-16 | 2013-04-16 | Convey Computer | Systems and methods for mapping a neighborhood of data to general registers of a processing element |
US8635431B2 (en) | 2010-12-08 | 2014-01-21 | International Business Machines Corporation | Vector gather buffer for multiple address vector loads |
KR20120134549A (ko) | 2011-06-02 | 2012-12-12 | 삼성전자주식회사 | Simd 프로세서를 이용한 병렬 연산 처리 장치 및 방법 |
SE537423C2 (sv) | 2011-12-20 | 2015-04-21 | Mediatek Sweden Ab | Digital signalprocessor och förfarande för adressering av ett minne i en digital signalprocessor |
US20130332701A1 (en) * | 2011-12-23 | 2013-12-12 | Jayashankar Bharadwaj | Apparatus and method for selecting elements of a vector computation |
US10430190B2 (en) | 2012-06-07 | 2019-10-01 | Micron Technology, Inc. | Systems and methods for selectively controlling multithreaded execution of executable code segments |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9575755B2 (en) | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9632777B2 (en) | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9003160B2 (en) | 2012-08-03 | 2015-04-07 | International Business Machines Corporation | Active buffered memory |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9268571B2 (en) * | 2012-10-18 | 2016-02-23 | Qualcomm Incorporated | Selective coupling of an address line to an element bank of a vector register file |
US8972782B2 (en) | 2012-11-09 | 2015-03-03 | International Business Machines Corporation | Exposed-pipeline processing element with rollback |
US9639503B2 (en) * | 2013-03-15 | 2017-05-02 | Qualcomm Incorporated | Vector indirect element vertical addressing mode with horizontal permute |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
US9785437B2 (en) * | 2014-12-23 | 2017-10-10 | Intel Corporation | Method and apparatus for performing a vector bit reversal and crossing |
GB2540940B (en) * | 2015-07-31 | 2018-01-03 | Advanced Risc Mach Ltd | An apparatus and method for transferring a plurality of data structures between memory and one or more vectors of data elements stored in a register bank |
CN111580865B (zh) * | 2016-01-20 | 2024-02-27 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
US10762164B2 (en) | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN111651205B (zh) * | 2016-04-26 | 2023-11-17 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
JP2017228213A (ja) * | 2016-06-24 | 2017-12-28 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10776118B2 (en) * | 2016-09-09 | 2020-09-15 | International Business Machines Corporation | Index based memory access using single instruction multiple data unit |
KR102659495B1 (ko) | 2016-12-02 | 2024-04-22 | 삼성전자주식회사 | 벡터 프로세서 및 그 제어 방법 |
JP6500266B2 (ja) * | 2016-12-13 | 2019-04-17 | 株式会社アクセル | ディジタル信号処理装置 |
US11042375B2 (en) * | 2017-08-01 | 2021-06-22 | Arm Limited | Counting elements in data items in a data processing apparatus |
US11175915B2 (en) * | 2018-10-10 | 2021-11-16 | Micron Technology, Inc. | Vector registers implemented in memory |
US12112167B2 (en) * | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
US11782871B2 (en) | 2021-04-27 | 2023-10-10 | Microchip Technology Inc. | Method and apparatus for desynchronizing execution in a vector processor |
DE112022000529T5 (de) * | 2021-04-27 | 2023-11-16 | Microchip Technology Inc. | Verfahren und vorrichtung für gather/scatter-vorgänge in einem vektorprozessor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
US5247695A (en) * | 1989-07-10 | 1993-09-21 | Hitachi, Ltd. | Vector processor with byte access of memory |
US5669013A (en) * | 1993-10-05 | 1997-09-16 | Fujitsu Limited | System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions |
US5742786A (en) * | 1993-03-31 | 1998-04-21 | Motorola, Inc. | Method and apparatus for storing vector data in multiple non-consecutive locations in a data processor using a mask value |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6123275A (ja) | 1984-07-11 | 1986-01-31 | Nec Corp | ベクトル処理装置 |
JPS62120574A (ja) | 1985-11-20 | 1987-06-01 | Fujitsu Ltd | ベクトル処理装置 |
US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
US5392443A (en) * | 1991-03-19 | 1995-02-21 | Hitachi, Ltd. | Vector processor with a memory assigned with skewed addresses adapted for concurrent fetching of a number of vector elements belonging to the same vector data |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5528550A (en) * | 1993-05-28 | 1996-06-18 | Texas Instruments Incorporated | Apparatus, systems and methods for implementing memory embedded search arithmetic logic unit |
US5689653A (en) * | 1995-02-06 | 1997-11-18 | Hewlett-Packard Company | Vector memory operations |
US6016395A (en) * | 1996-10-18 | 2000-01-18 | Samsung Electronics Co., Ltd. | Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6288723B1 (en) * | 1998-04-01 | 2001-09-11 | Intel Corporation | Method and apparatus for converting data format to a graphics card |
US6266759B1 (en) * | 1998-12-14 | 2001-07-24 | Cray, Inc. | Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor |
US6308252B1 (en) * | 1999-02-04 | 2001-10-23 | Kabushiki Kaisha Toshiba | Processor method and apparatus for performing single operand operation and multiple parallel operand operation |
US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
-
2000
- 2000-02-29 US US09/514,497 patent/US6665790B1/en not_active Expired - Fee Related
- 2000-12-29 TW TW089128215A patent/TW484074B/zh not_active IP Right Cessation
-
2001
- 2001-02-14 GB GB0103558A patent/GB2365588B/en not_active Expired - Lifetime
- 2001-02-15 CA CA002337784A patent/CA2337784A1/en not_active Abandoned
- 2001-02-26 KR KR10-2001-0009726A patent/KR100447294B1/ko not_active IP Right Cessation
- 2001-02-27 JP JP2001051897A patent/JP3940269B2/ja not_active Expired - Fee Related
-
2003
- 2003-11-15 US US10/713,502 patent/US7467288B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247695A (en) * | 1989-07-10 | 1993-09-21 | Hitachi, Ltd. | Vector processor with byte access of memory |
JPH0444165A (ja) * | 1990-06-12 | 1992-02-13 | Nec Corp | 対称連立一次方程式の求解方式 |
US5742786A (en) * | 1993-03-31 | 1998-04-21 | Motorola, Inc. | Method and apparatus for storing vector data in multiple non-consecutive locations in a data processor using a mask value |
US5669013A (en) * | 1993-10-05 | 1997-09-16 | Fujitsu Limited | System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions |
Also Published As
Publication number | Publication date |
---|---|
CA2337784A1 (en) | 2001-08-29 |
JP3940269B2 (ja) | 2007-07-04 |
US20040103262A1 (en) | 2004-05-27 |
TW484074B (en) | 2002-04-21 |
JP2001273277A (ja) | 2001-10-05 |
GB2365588A (en) | 2002-02-20 |
GB2365588B (en) | 2004-08-25 |
GB0103558D0 (en) | 2001-03-28 |
US7467288B2 (en) | 2008-12-16 |
US6665790B1 (en) | 2003-12-16 |
KR20010085614A (ko) | 2001-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100447294B1 (ko) | 임의 벡터 어드레싱을 이용한 벡터 레지스터 파일 | |
US5487159A (en) | System for processing shift, mask, and merge operations in one instruction | |
US6052766A (en) | Pointer register indirectly addressing a second register in the processor core of a digital processor | |
US7308559B2 (en) | Digital signal processor with cascaded SIMD organization | |
US7437532B1 (en) | Memory mapped register file | |
US5299321A (en) | Parallel processing device to operate with parallel execute instructions | |
US6779102B2 (en) | Data processor capable of executing an instruction that makes a cache memory ineffective | |
US7017028B2 (en) | Apparatus and method for updating pointers for indirect and parallel register access | |
US5881263A (en) | Non-instruction base register addressing in a data processing apparatus | |
US5881259A (en) | Input operand size and hi/low word selection control in data processing systems | |
US7546442B1 (en) | Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions | |
US4484272A (en) | Digital computer for executing multiple instruction sets in a simultaneous-interleaved fashion | |
JPH0260026B2 (ko) | ||
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
WO2008043287A1 (en) | Configurable single instruction multiple data unit | |
JP2002529847A (ja) | ビットfifoを有するディジタル信号プロセッサ | |
EP0927390B1 (en) | Processing of conditional select and move instructions | |
EP1188112A2 (en) | Digital signal processor computation core | |
EP0227900A2 (en) | Three address instruction data processing apparatus | |
US20050278514A1 (en) | Condition bits for controlling branch processing | |
US7107302B1 (en) | Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units | |
JP2001501001A (ja) | データ処理システムにおける入力オペランド制御 | |
US20120260062A1 (en) | System and method for providing dynamic addressability of data elements in a register file with subword parallelism | |
US20040128475A1 (en) | Widely accessible processor register file and method for use | |
US11630668B1 (en) | Processor with smart cache in place of register file for providing operands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |