KR20010030593A - 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛 - Google Patents

디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛 Download PDF

Info

Publication number
KR20010030593A
KR20010030593A KR1020007002645A KR20007002645A KR20010030593A KR 20010030593 A KR20010030593 A KR 20010030593A KR 1020007002645 A KR1020007002645 A KR 1020007002645A KR 20007002645 A KR20007002645 A KR 20007002645A KR 20010030593 A KR20010030593 A KR 20010030593A
Authority
KR
South Korea
Prior art keywords
register
word
registers
data
words
Prior art date
Application number
KR1020007002645A
Other languages
English (en)
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 KR20010030593A publication Critical patent/KR20010030593A/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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Abstract

본 발명은 레지스터 파일, 상기 레지스터 파일에 연결된 레지스터 로드 및 저장 버퍼, 단일 메모리, 및 상기 단일 메모리와 상기 레지스터 로드 및 저장 버퍼를 연결시키는 2 배 워드 폭 버스를 형성하기 위해 적어도 제 1 및 제 2 워드 라인들을 가지는 버스를 포함하는 데이터 프로세싱 유닛에 관련된다.
상기 레지스터 파일은 적어도 2 세트의 레지스터들을 포함하는데, 제 1 세트의 레지스터들은 워드 라인들 중 하나와 연결될 수 있으며, 제 2 세트의 레지스터들은 다른 워드 라인들과 연결될 수 있으며, 로드 및 저장 유닛은 메모리와의 데이터 전달을 위한 것이다.

Description

디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛{DATA PROCESSING UNIT WITH DIGITAL SIGNAL PROCESSING CAPABILITIES}
마이크로 제어부는 당업계에 공지되어 있으며, 로 엔드(low end;저가의) 장치들(예를 들면, 4/8 비트 제어부)에서 하이 엔드 장치들(예를 들면, 32 비트 제어부)까지의 다양한 장치들이 상용화되어 있다. 일반적으로 마이크로 프로세서는 복잡 명령 세트 컴퓨터(complex instuction set computer;CISC) 또는 축소 명령 세트 컴퓨터(reduced instruction set computer;RISC)와 같은 범용 프로세서와 디지털 신호 처리 프로세서(DSP)와 같은 특정 목적을 위해 설계된 특수한 마이크로 프로세서의 2 개의 그룹으로 나뉜다.
RISC 및 CISC 프로세서는 일반적으로 다수의 레지스터 또는 레지스터 파일, 및 소정의 데이터를 처리하기 위해 설계된 소정의 소정 크기의 단일 메모리를 포함한다. RISC 및 CISC 프로세서는 확장이 가능하나 DSP 프로세서의 높은 속도의 프로세싱으로는 부족하다.
DSP 프로세서는 일반적으로 누산기 및 크기가 제한된 특정 메모리를 가진다. 이들은 예를 들면 샘플링된 신호를 처리하기 위해 매우 빨리 그리고 정확하게 데이터를 계산하도록 설계된다. 상기 메모리는 한 사이클에 2 개의 다른 데이터에 대한 액세스를 허용하기 위하여 X-메모리 및 Y-메모리로 양분되기도 한다. 이것은 완전한 비 직교형(orthogonal) 동작을 가져오고, 어드레스 모드에 있어서 심가한 제한을 가져오며, 상기와 같은 메모리는 충돌없이 컴파일되지 않는다. 특정한 데이터가 잘못된 메모리에 존재할 경우, X-메모리에서 Y-메모리 또는 그 반대로 로딩되어야 한다. 레지스터 파일의 부족은 상기와 같은 프로세서를 "C"로 프로그램하는 것을 어렵게 만든다. 더우기, 좁은 고정된 명령 폭은 상기와 같은 아키텍쳐(architecture)를 확장하는 것을 불가능하게 한다.
다른 시스템들은 동작 속도를 빠르게 하기 위하여 코프로세서(coprocessor)를 사용한다. 상기 코프로세서들은 주 중앙 처리 장치(CPU)의 어떠한 레지스터들도 공유하지 않는다. 따라서, 상기 코프로세서의 레지스터들은 CPU 에 의해 로딩되어야만 하는데, 이것은 동작 속도를 현저히 감소시키고 레지스터의 사용을 제한한다.
본 발명은 데이터 프로세싱 유닛, 특히 마이크로 컴퓨터 또는 마이크로 제어부와 같은 중앙 처리 장치(CPU)에 관한 것이다.
도 1 은 본 발명에 따른 데이터 프로세싱 유닛의 실행 유닛들 및 단일 메모리에 연결된 레지스터 파일의 기본 블록 다이어그램을 도시한다.
도 2 는 상기 레지스터 파일과 단일 메모리 사이 연결의 실시예를 도시한다.
도 3 은 상기 레지스터 파일의 레지스터들에 대한 링크 및 동작부(operator)를 포함하는 제 1 실시예를 도시한다.
도 4 는 상기 레지스터 파일의 레지스터들에 대한 링크 및 동작부를 포함하는 제 2 실시예를 도시한다.
도 5 는 상기 레지스터 파일의 레지스터들에 링크 및 동작부를 포함하는 제 3 실시예를 도시한다.
도 6 은 포화(saturation) 유닛 및 플래그(flag)의 운용을 도시한다.
도 7 은 순환(circular) 버퍼 모드를 가진 메모리 액세스를 도시한다.
도 8 은 비트 리버스(reverse)된 어드레스 모드를 도시한다.
도 9 는 FIR 필터 기능을 수행하기 위한 데이터 프로세싱 유닛의 구현을 도시한다.
본 발명의 목적은 DSP 특성 및 코프로세서가 필요 없는 CISC 및 RISC 프로세서의 다기능을 가진 데이터 프로세서를 제공하는 것이다.
상기 목적은 레지스터 파일, 상기 레지스터 파일에 연결된 레지스터 로드(load) 및 저장 버퍼, 단일 메모리, 및 상기 단일 메모리와 상기 레지스터 로드 및 저장 버퍼를 연결하는 2 배 워드(double word) 폭 버스를 형성하는 적어도 제 1 및 제 2 워드 라인을 가지는 버스를 포함하는 데이터 프로세싱 유닛에 의해 달성된다. 상기 레지스터는 적어도 2 개 세트의 레지스터들을 파일하는데, 상기에서 제 1 세트의 레지스터는 워드 라인들 중 하나와 연결될 수 있고, 제 2 세트의 레지스터는 다른 워드 라인들, 메모리와 데이터를 전달하기 위한 로드 및 저장 제어 유닛과 연결될 수 있다.
실시예에서, 상기 로드 및 저장 제어 유닛은 상기 제 1 및 제 2 세트의 레지스터들과 상기 메모리 사이에서 병렬로 2 개의 연속적인 워드들을 로드하거나 저장하는 수단을 가진다. 다른 실시예에서, 상기 메모리에서의 한 워드는 2개의 1/2-워드들로 분할되어 상기 제 1 세트의 레지스터들에서의 제 1 레지스터 및 제 2 세트의 레지스터들에서의 제 2 레지스터에 저장될 수 있다. 상기 1/2-워드들은 1/2-레지스터로 저장될 수 있고, 다른 1/2-레지스터는 부호 또는 0 으로 채워질 수 있다.
다른 실시예에서, 상기 버스는 다수-워드 폭 버스를 형성하는 다수의 워드 라인들을 가지고, 상기 레지스터 파일은 다수 세트의 레지스터들을 가지는데, 상기에서 각 세트의 레지스터는 상기 다수의 워드 라인들중 한 워드 라인과 연결된다. 예를 들면, 64 비트 데이터 프로세싱 유닛에서, 2 개의 32 비트 1/2-워드 또는 4 개의 16 1/4 워드가 한 사이클동안 액세스될 수 있다. 상기 데이터 프로세싱의 로드 및 저장 제어 유닛은 그러므로 상기 다수 세트의 레지스터들과 상기 메모리 사이에서 병렬로 다수의 연속적인 워드들을 로드하거나 저장하는 수단을 가질 수 있다. 상기 수단들은 모든 세트의 레지스터들 중 어떠한 레지스터라도 메모리내의 모든 위치와 연결되도록 한다.
다른 실시예에서, 데이터 프로세싱 유닛의 로드 및 저장 제어 유닛은, 상기 메모리에서 한 워드를 로딩하고 다수의 일부-워드들로 나누어 각 일부 워드가 각 세트의 레지스터들중 한 상기 레지스터에 저장되는 수단을 포함할 수 있다.
본 발명에 따른 데이터 운용 유닛은 표준 레지스터를 데이터 및 어드레스 레지스터와 함께 사용하는 이점을 가진다. 따라서, 어드레스 레지스터는 예를 들면, 무제한 스택 사이즈를 가능하게 하는 스택 포인터(pointer)로서 사용될 수 있는데, 상기에서 디지털 신호 처리부는 종종 제한된 크기의 하드웨어 스택만을 가진다. "C" 코드는 기계 코드로 용이하게 번역될 수 있어, 모든 레지스터들로 직교 동작들을 할 수 있게 된다. 디지털 신호 프로세서에 대한 것이므로 메모리에 대한 누산기의 일정하지 않은 움직임이 필요하다. 레지스터들이 재사용될 수 있기 때문에, 이것은 적은 전력 소비를 가져온다.
도 1 은 레지스터 파일[2]에 연결된 메모리 유닛[1]을 포함하는 기본 다이어그램을 도시한다. 명세서 전반을 통해, 1 워드는 32 비트를 의미하고, 1/2-워드는 16 비트를 의미하고 1 바이트는 8 비트를 의미한다. 물론 본 발명은 32 비트 워드를 가지는 실시예에 한정되지 않는다. 그러므로 한 워드는 어떠한 크기라도 될 수 있다.
레지스터 파일[2]을 메모리[1]와 연결하기 위하여, 버퍼/선택 로직[2a]이 제공된다. 상기 실시예에서, 번호 [2b]는 레지스터를 지시한다. 16 레지스터들 D0 에서 D15 가 제공되고, 상기에서 각 레지스터는 예를 들면 32 비트를 가지는 한 워드의 비트 폭을 가진다. 상기 레시스터들은 홀수 및 짝수 레지스터의 2 그룹으로 구성되낟. 상기 예에서 레지스터들은 데이터 레지스터이지만, 어드레스 또는 데이터 레지스터들일 수 있다. 레지스터들의 제 2 세트는 어드레스 레지스터들에 대해 동일한 방식으로 제공될 수 있다. 메모리 유닛[1] 및 버퍼/선택 로직[2a] 사이의 버스는 64 비트 폭이므로, 메모리내의 2 개의 연속적인 워드들이 어드레스될 수 있다. 레지스터 파일[2] 에서 메모리 유닛[1]로의 또는 그 반대의 전달 동안 로드/저장 제어 유닛[2d]은 메모리 유닛[1]을 어드레싱하고 각 레지스터들[2b]을 선택한다. 상기 레지스터 파일[2]은 또한 다수의 실행 유닛들[4, 5 및 6]을 연결하는 제 2 버퍼/선택 로직[2c]을 포함한다. 제 2 버스[3]는 버퍼/선택 로직[2c] 및 실행 유닛[4, 5 및 6] 사이의 링크로서 제공된다. 적어도 2 개의 레지스터에서의 각 버퍼/선택 로직[2a] 또는 [2c]을 통해, 각 그룹내의 레지스터 예를 들면 홀수 및 짝수 레지스터가 동시에 액세스될 수 있다.
도 2 는 레지스터[2b] 및 메모리[1] 사이의 연결을 더욱 자세히 도시한다. 메모리[1]는 예를 들면, 워드[1e] 및 워드[1f]에 대해 또는 워드[1f] 및 [1g]에 대해 동시에 2 개의 연속적인 워드들에 액세스를 제공하는 2 배 워드들로 구성된다. 상기 실시예에서 32 비트를 가지는 제 1 세트의 데이터 출력 라인들은, 상기 라인들[1a]을 얼라이먼트(alignment) 유닛들[12] 또는 [13] 혹은 홀수 레지스터[D1, D3, D5,... D15] 또는 짝수 레지스터[D2, D4, D6,... D14]를 통해 연결하는 멀티플렉서/분할(split) 유닛[8]에 연결된다. 제 2 세트의 데이터 출력 라인들[1d] 은, 상기 라인들[1d]을 얼라이먼트(alignment) 유닛들[13] 또는 [12] 혹은 짝수 레지스터[D2, D4, D6,... D14] 또는 홀수 레지스터[D1, D3, D5,... D15]를 통해 연결하는 멀티플렉서/분할(split) 유닛[9]에 연결된다. 다른 방향으로 상기 홀수 레지스터[D1, D3, D5,... D15] 및 짝수 레지스터[D2, D4, D6,... D14]는, 레지스터 그룹들중 하나를 선택하거나 각 레지스터 그룹들의 1/2-워드들을 한 워드에 연관시키는 선택/연관(concatenation) 유닛[11]에 각각 연결된다. 상기 선택되거나 연관된 워드는 제 3 멀티플렉서[7]로 공급되어, 메모리[1]를 연결하는 제 1 또는 제 2 세트의 데이터 입력 라인들[1b] 및 [1c]와 연결된다.
본 발명에 따른 데이터 프로세싱 유닛은 한 사이클내에 2 개의 데이터 워드들을 판독하도록 하는 특수한 명령들을 지원한다. 2 개의 별도의 메모리 유닛들을 가지는 DSP 와 비교하면, 본 발명에 따른 데이터 프로세싱 유닛은 단일 메모리 유닛을 가진다. 2 개의 메모리를 가진 DSP 는, 데이터가 잘못된 메모리에 저장되어 있을 경우에는 그 데이터를 다른 메모리로 전달하여야만 한다. 이것은 본 발명에 따른 데이터 프로세싱 유닛에서는 불필요한 것이다. 2 데이터 워드들에 대한 액세스는 상기 데이터 워드들이 연속적인 순서로 저장되어야만 한다는 점에서만 제한적일 뿐이다. 한편, 단일 메모리 만을 사용하는 것은 데이터 프로세싱 유닛에게 RISC 및 CISC 프로세서의 장점 및 다기능을 제공한다. 따라서, 데이터는 예를 들면 "C" 프로그래밍에 있어서 매우 편리한 메모리내 어느 곳이라도 저장될 수 있다.
특수 명령들은 "레지스터에 2 배 워드 로드" 명령을 제공한다. 2 배 워드는 데이터 출력 라인들[1a] 및 [1d]를 통해 메모리에서 멀티플렉서 유닛들[8] 및 [9]로 로딩된다. 상기 모드에서, 유닛[12] 및 [13]은, 데이터 라인[1a]을 홀수 레지스터 또는 짝수 레지스터와, 그리고 데이터 라인[1d]을 짝수 레지스터 또는 홀수 레지스터와 각각 연결하는 멀티플렉서로서 동작한다. 상기 데이터 프로세싱 유닛은 각 그룹내의 모든 레지스터을 상기 명령내에서 선택하도록 해주는 특수 선택 유닛을 가질수 있다. 단순화된 실시예는 오직 1 개의 레지스터만을 선택하고 제 2 레지스터는 자동적으로 선택된 하나에 인접한 레지스터이다. 예를 들면, 짝수 레지스터 D4 가 선택될 경우, 인접 홀수 레지스터는 레지스터 D5 가 될 것이고, 짝수 레지스터 D7 이 선택될 경우, 인접 짝수 레지스터는 D6 가 될 것이다. 메모리내의 2 배 워드는 정렬된 어드레스, 예를 들면 워드[1e] 및 연속 워드[1f]에 위치될 수 있거나, 정렬되지 않은 어드레스 예를 들면 워드[1f] 및 연속 워드[1g]에 액세스될 수 있다. 멀티플렉서[7, 8, 9 및 10]는 각 데이터를 정렬하고 이것들은 각각의 레지스터 또는 메모리 셀들에 분포시킨다.
전술한 바와 같이, 상기 실시예에서, 메모리는 제 1 데이터 출력 라인들[1a](정렬된) 또는 제 2 데이터 출력 라인들[1d](비정렬된)에서 시작하는 어드레스로 어드레스될 수 있다. 하기에서 단순화된 실시예가 가정된다. 언제나 연속적인 어드레스가 사용되므로, 상기 명령이 예를 들면, 데이터 출력 라인들[1a]을 어드레싱하고 홀수 레지스터[D9]를 타겟으로 표시하는 소스 어드레스를 포함할 경우, 메모리 셀[1e]은 라인[1a] 및 유닛[8 및 12]을 통해 레지스터 D9과 연결되고, 연속적인 메모리 셀[1f]은 라인[1d] 및 유닛[9 및 13]을 통해 레지스터 D8 과 연결된다. 상기 명령이 데이터 출력 라인[1d]을 어드레싱하고 홀수 레지스터 D9 을 타켓으로 표시하는 소스 어드레스를 포함할 경우에는, 메모리 셀[1f]는 라인[1d] 및 유닛[9 및 12]을 통해 레지스터 D9 과 연결되고, 연속적인 메모리 셀[1g]은 라인[1a] 및 유닛[8 및 13]을 통해 레지스터 D8 과 연결된다. 상기 명령이 데이터 출력 라인[1a]을 어드레싱하고 짝수 레지스터 D2 을 타켓으로 표시하는 소스 어드레스를 포함할 경우에는, 메모리 셀[1e]는 라인[1a] 및 유닛[8 및 13]을 통해 레지스터 D2 과 연결되고, 연속적인 메모리 셀[1f]은 라인[1d] 및 유닛[9 및 12]을 통해 레지스터 D3 과 연결된다. 상기 명령이 데이터 출력 라인[1d]을 어드레싱하고 짝수 레지스터 D2 을 타켓으로 표시하는 소스 어드레스를 포함할 경우에는, 메모리 셀[1f]는 라인[1d] 및 유닛[9 및 13]을 통해 레지스터 D2 과 연결되고, 메모리 셀[1g]은 라인[1d] 및 유닛[9 및 12]을 통해 레지스터 D3 과 연결된다. 레지스터들이 자유롭게 선택될 수 있다면, 연결 과정은 상응하게 이루어진다.
본 발명에 따라 실행될 수 있는 제 2 타입의 명령은 소위 "2개의 1/2-워드(팩형(packed)) 로드" 명령이다. 상기 명령으로, 데이터 라인들 [1a] 또는 [1d]중 하나에서의 한 워드가 로딩되고 한 워드의 각 하부 1/2에 위치한 유닛[8] 또는 [9]에 의해 1/2-워드로 분할된다. 선택적으로 유닛[12] 또는 [13]은 워드들에 대해 각 1/2-워드들을 부호-확장 또는 0-확장시킬 수 있다. 바꾸어 말하면, 상기 실시예에서 16 비트 1/2-워드들은 32 비트로 확장된다. 유닛[8] 또는 유닛[9]는 라인[1a] 또는 [1d]에서 수신된 워드를 2 개의 1/2-워드로 분할하고 이것들을 유닛[12] 및 [13]을 통해 각 짝수 및 홀수 레지스터들의 하부 1/2로 분포시킨다. 유닛[12] 및 [13]에서, 상기 1/2-워드들은 상부 1/2 를 0 들로 채우거나 상부 1/2를 부호 확장시킴으로써 워드들로 확장될 수 있다. 한 1/2-워드의 부호가 음일 경우, 각 레지스터의 상부 1/2는 "0" 대신 "1"로 채워진다. 유닛[12] 및 [13]은 비활성될 경우, 상기 1/2워드들은 상부 1/2 를 변화시키지 않고 각 짝수 및 홀수 레지스터의 하부 1/2로 저장된다. 단순한 변형에서, 적어도 최하위(least significant) 메모리 1/2-워드는 항상 짝수 레지스터에 저장되고, 최상위(most significant) 1/2-워드는 상기 짝수 레지스터에 인접한 홀수 레지스터로 저장된다.
본 발명에 따라 실행될 수 있는 제 3 타입의 명령은 소위 "2개의 부호 소수(signed fraction)들 로드"이다. 상기 명령으로, 데이터 라인[1a] 또는 [1d]에서의 한 워드가 로딩되고 각 워드의 상부 1/2에 위치한 유닛[8] 또는 [9]에 의해 1/2-워드로 분할된다. 선택적으로 유닛[12] 또는 [13]은 워드들에 대해 각 1/2-워드들을 0-확장시킬 수 있다. 유닛[8] 또는 유닛[9]는 라인[1a] 또는 [1d]에서 수신된 워드를 상기 워드의 상부 및 하부 1/2를 나타내는 2 개의 1/2-워드로 분할하고 이것들을 유닛[12] 및 [13]을 통해 각 짝수 및 홀수 레지스터들의 상부 1/2로 분포시킨다. 유닛[12] 및 [13]에서, 상기 1/2-워드들은 하부 1/2 를 0 들로 채우거나 상부 1/2를 부호 확장시킴으로써 워드들로 확장될 수 있다. 유닛[12] 및 [13]이 비활성될 경우, 상기 1/2워드들은 하부 1/2 를 변화시키지 않고 각 짝수 및 홀수 레지스터의 상부 1/2로 저장된다. 단순한 변형에서, 적어도 최하위(least significant) 메모리 1/2-워드는 항상 짝수 레지스터에 저장되고, 최상위(most significant) 1/2-워드는 상기 짝수 레지스터에 인접한 홀수 레지스터로 저장된다.
본 발명에 따라 실행될 수 있는 제 4 타입의 명령은 소위 "2개의 1/2-워드(팩형) 저장" 명령이다. 상기 명령으로 짝수 및 홀수 레지스터의 하부 1/2-워드들은 연관 유닛[11] 또는 [14]중 하나로 공급된다. 상기 2 개의 1/2-워드들은 하나의 워드로 조합되고 멀티플렉서[7] 또는 [10]과 데이터 입력 라인[1b] 또는 [1c]를 통해 메모리에 저장된다.
본 발명에 따라 실행될 수 있는 제 5 타입의 명령은 소위 "부호 소수들 저장" 명령이다. 상기 명령으로, 짝수 및 홀수 레지스터의 상부 1/2-워드들은 연관 유닛[11] 또는 [14]로 공급된다. 상기 2개의 1/2-워드들은 하나의 워드로 조합되고 멀티플렉서[7] 또는 [10]과 데이터 입력 라인[1b] 또는 [1c]를 통해 메모리 유닛[1]에 저장된다.
본 발명에 따라 실행될 수 있는 제 6 타입의 명령은 소위 "데이터 레지스터에서 2 배 워드 저장" 명령이다. 상기 명령으로, 짝수 및 홀수 레지스터의 내용이멀티플렉서 유닛[7] 또는 [10]에 공급되고 데이터 입력 라인[1b] 또는 [1c]를 통해 메모리 유닛에 저장된다. 상기 명령은 전술한 2 배 워드를 레지스터로 로드" 명령과 동일한 방식으로 작동한다. 유닛[7] 및 [10]은 각 레지스터의 내용을 데이터 입력 라인[1b] 또는 [1c]로 분포시키는 멀티플렉서로서 동작한다. 유닛[11] 및 [14]는 불활성화되어 유닛[7] 및 [10]은 각각 입력으로 짝수 또는 홀수 레지스터에 저장된 풀 워드를 수신한다.
메모리 및 레지스터 파일을 배치하는 상기 원리는 용이하게 확장될 수 있다. 예를 들면, 4 개의 다른 세트들의 레지스터가 제공될 수 있으며, 메모리의 어드레싱은 4 개의 워드 폭 버스에 의해 확장될 수 있어 한 반에 4 개의 연속적인 워드들을 로드 하고 저장할 수 있다.
제 2 버퍼/선택 로직[2c]을 통해, 레지스터 파일은 승산 누산기(multiplier accumulator;MAC), 산술 논리 장치(ALU), 퓨넬 시프터(funnel shifter), 비트 조절 유닛(bit manipulaton unit) 등과 같은 다수의 실행 유닛들과 연결된다. 도 3 내지 5 는 상기 유닛들이 레지스터 파일과 연결되는 방법 및 동작하는 방법을 도시한다.
도 3 에서, 한 워드로서 32 비트를 가지는 2 개의 레지스터[17] 및 [18]이 2 개의 동작 유닛들[15] 및 [16]과 연결된다. 상기 동작부 유닛들은 동일하고 각 실행 유닛에 의해 제공된 모든 기능을 수행할 수 있다. 예를 들면, 상기 동작부 유닛들은 가산기, 승산기(multiplier), 시프터(shifter) 및 비교기, AND/OR-동작부 등과 같은 모든 종류의 논리 유닛들일 수 있다. 입력으로서 각 동작부가 1/2-워드 예를 들면 16 비트 폭을 수신한다. 따라서, 레지스터의 상부 1/2 는 동작부 유닛[15]의 제 1 입력에 연결되고 레지스터의 하부 1/2 는 동작부 유닛[16]의 제 1 입력에 연결된다. 한편, 레지스터[18]의 상부 1/2는 동작부 유닛[15]의 제 2 입력에 연결되고, 레지스터[18]의 하부 1/2 는 동작부 유닛[16]의 제 2 입력에 연결된다. 동작부 유닛은 적어도 1/2-워드 폭의 출력을 포함한다. 동작부 유닛[15]의 출력은 제 3 레지스터[19]의 상부 1/2 과 연결되고, 동작부 유닛[16]의 출력은 레지스터[19]의 하부 1/2-워드와 연결된다.
도 4 는 제 2 타입의 팩형 산술 또는 논리적 동작들을 도시한다. 3개의 레지스터[20, 25 및 26]은 4 개의 부분으로 분할된다. 상기 실시예에서, 각 부분은 8 비트를 포함한다. 4 개의 동작부 유닛들[21, 22, 23 및 24]이 제공되고 레지스터[20, 25 및 26]의 각 8 비트 부분과 관련된다. 레지스터[20] 및 [25]의 4 부분들은 각 동작부 유닛[21, 22, 23 및 24]에 대한 입력 값들을 제공하는데 상기에서 각 동작부 유닛[21, 22, 23 및 24]의 출력 신호들은 레지스터[26]의 각 부분들로 공급된다.
도 5 는 도 3 에 따른 실시예를 도시하는데, 상기에서 각 동작부 유닛은 승산기[29] 및 [30]이다. 상기 승산기[29] 및 [30]은 예를 들면, 32 비트 결과를 생성하는 16 비트 승산기일 수 있다. 각 결과의 상부 1/2-워드는 결과 레지스터[19]로 공급된다.
모든 레지스터들은 레지스터 파일의 일부이며, 모든 짝수 또는 홀수 레지스터로 할당될 수 있다. 모든 3 레지스터들은 또한 단일 레지스터로 할당될 수 있다. 도 1 은 버스[3], 및 각 입력 및 출력 데이터를 각 실행 유닛[4, 5 및 6]에 제공하기 위해 필요한 각 입력 및 출력 라인들을 도시한다.
상기 소위 팩형 산술 또는 논리적 명령들은 상기 실시예에서 32 비트 워드를 다수의 동일한 객체들로 분할하고, 이것은 병렬로 인출(fetch), 저장 및 동작될 수 있다. 특히, 상기 명령들은 DSP 적용예들에서 본 발명에 따른 데이터 프로세싱 유닛의 32 비트 워드의 완전한 사용을 가능하게 한다.
상기 실시예에서, 2 개의 팩형 포맷들이 구현될 수 있다. 제 1 포맷은 32 비트 워드를 2 개의 16 비트 1/2-워드 값들로 분할한다. 제 2 팩형 포맷은 32 비트 워드를 4 개의 8 비트(바이트) 값들로 분할한다.
팩형 값들을 데이터 및 어드레스 레지스터들로 로딩하고 저장하는 것은 전술한 각 로드 및 저장 명령들에 의해 지원된다. 상기 팩형 객체들은 그후, 가산, 감산, 승산, 나눗셈등과 같은 산술 동작들을 수행하는 특수 팩형 산술 명령들의 셋트에 의해 병렬로 조절될 수 있다. 예를 들면, 승산 명령은 도 5 에 도시된 바와 같이 병렬로 2 개의 16 비트 승산을 수행한다.
도 6은 동작이 CPU 내의 상태 플래그를 영향주는 방식 및 다른 동작들의 포화가 달성되는 방식을 도시한다. 동작부[40]은 결과를 소정의 레지스터[42]로 기록한다. 비교 유닛[41]은 상기 동작부에의해 수행된 결과를 비교하고 플래그 레지스터[43]내의 각 플래그들을 셋팅한다. 예를 들면, 캐리(carry) 비트, 오브플로우(overflow) 비트, 스티키(sticky) 오버플로우 비트, 어드밴스드(advanced) 오버플로우 비트, 스티키 어드밴스드 오버플로우 비트 및 다른 플래그들이 세팅될 수 있다. 어드밴스드 오버플로우 비트는 산술 명령 "거의(almost)"명령이 다른 워드들과 오브플로우를 야기할 때 셋팅된다. 비교 유닛은 결과 레지스터[42]의 내용과, 가장 최대의 양 및/또는 음 번호 보다는 작은 사전 지정된 값과 비교한다. 상기 플래그는 매 산술 명령마다 갱신된다. 스티키 오버플로우 비트는 상기 오버플로우 비트들과 병렬로 세팅된다. 상기 두 플래그는 명백하게 각각의 리셋 명령의 의해 리셋될 때까지 세팅된 채로 존재한다.
가산은 각각의 가산 명령들을 사용하여 개별 팩형 바이트들 또는 1/2-워드들에 대해 수행된다. 이것은 개별 바이트들 또는 1/2-워드들 내의 오버플로부 또는 언더플로우를 무시하는 포화 유닛[44]에 의해 확장될 수 있다. 상기 포화 유닛[44]은 각 가산에, 개별 언더플로우에 대해 최고의 음의 값 또는 개별 오버플로우에 대해 최고의 양의 값으로 개별 바이트들 또는 1/2-워드들을 포화시키는 기능을 제공한다. 예를 들면, 비교 유닛[41]은 결과 레지스터[42]의 내용과 사전 정의된 포화 값을 비교할 수 있다. 상기 내용이 사전 정의된 양/음 포화 값보다 클 경우에는, 이것은 포화 유닛[44]에 표시되고 포화 유닛[44]은 결과 레지스터[42]의 내용을 각각 양 또는 음의 포화 값으로 세팅한다. 포화는 다양한 산술 명령들에 제공될 수 있다.
다수의 DSP-관련 동작들은 소위 순환 버퍼(circular buffer)를 운용할 필요가 있다. 상기와 같은 버퍼는 일반적으로 포인터(pointer)에 의해 어드레스되고 CPU 는 상기 포인터가 버퍼의 끝에 도달할 때마다 포인터를 버퍼의 시작으로 다시 세팅해야만 한다. 상기 순환 버퍼의 길이가 다수의 2 바이트들과 다를 경우, 일부 계산들은 순환 버퍼의 시작으로 스위칭하도록 만들어져야 한다. 2n의 길이를 가질 경우, 적어도 하나의 마스킹(masking) 명령이 버퍼에 대한 액세스를 제어하는데 필요하다. 본 발명에 따른 상기 데이터 프로세싱 유닛은 순환 버퍼 어드레싱을 지원하기 위하여 특수한 메커니즘을 제공한다.
도 7 은 2 배 워드 폭 버스를 통해 레지스터 파일[2]에 연결된 메모리[1]를 도시한다. 상기 데이터 프로세싱 유닛은 베이스 어드레스[31c], 버퍼 길이[31a] 및 버퍼 인덱스(index)[31b]를 저장하는 저장 수단[31]을 포함한다. 상기 파라미터들은 어드레스 레지스터를 포함하는 제 2 레지스터 파일에 저장될 수 있는데, 상기에서 베이스 어드레스[31c]는 한 어드레스 레지스터에 저장되고, 버퍼 길이[31a] 및 버퍼 인덱스[31b]는 제 2 어드레스 레지스터의 상부 및 하부 부분들에 각각 저장된다.
순환 버퍼 제어 유닛[32]은 상기 레지스터[31a, 31b 및 31c]에 연결된다. 순환 버퍼[33]을 위한 로드/저장 제어 유닛은 상기 제어 유닛[32]와 연결되고, 메모리[1] 및 레지스터 파일과 연결된다. 또한 버퍼 저장 장치[31]에 대한 액세스를 가진다. 상기 CPU 의 명령 실행 유닛은 [34]로 표시되고 후술하는 바와 같이 소정의 제어 입력들을 수신한다.
순환 어드레싱은 필터 계산을 수행하는 동안 순환 버퍼들내의 데이터 값들을 액세스하는데 주로 사용된다. 베이스 어드레스[31c]는 바람직하게, 데이터 레지스터 파일[2]과 유사한 어드레스 레지스터 파일의 짝수 레지스터내에 저장된다. 따라서, 파라미터[31a] 및 [31b]는 바람직하게 홀수 어드레스 레지스터에 저장되어 동시에 모든 파라미터들에 대한 액세스를 제공한다. 상기 인덱스 파라미터[31b]는 오프셋에 의해 증가될 수 있다. 인덱스 파라미트[31b]를 베이스 어드레스 파라미터[31c]에 가산함으로써 유효한 어드레스는 순환 버퍼 제어 유닛[32]에 의해 정의도니다. 상기 순환 버퍼는 예를 들면 "베이스 어드레스"+"인덱스" 어드레스에서부터 메모리를 차지한다. 순환 버퍼 제어 유닛[32]는 액세스된 워드 크기에 의해, 예를 들면 워드 액세스에 대해서는 "1"에 의해 그리고 2 배 워드 액세스에 대해서는 "2"에 의해 자동적으로 인덱스 레지스터[31b]를 증가시키며, 인덱스 레지스터[31b]를 길이 레지스터[31a]와 비교한다. 만일 양자가 동일하다면, 인덱스는 0 으로 리셋된다. 오프셋이 가산되어 결과로 발생하는 인덱스가 상기 길이보다 클 경우에는, 상기 길이는 인덱스 파라미터에서 감산되어 정확한 위치(랩 어라운드(wrap around;순환) 함수)를 지시한다. 따라서, 어드레스 메카니즘은 자동적으로 상기 버퍼를 추가 명령없이 랩 어라운드시킨다.
도 6 은 메모리 셀 b1, b2,..b8 로 구성된 상기와 같은 순환 버퍼를 도시한다. 상기 순환 버퍼 제어 유닛이 시작 인덱스 "0"으로 시작하는 상기 버퍼의 액세스를 시작할 경우, 제 1 의 2 개의 셀들 b1 및 b2 그리고 연속적인 셀들은 정렬된 것으로 액세스되고 제어 활동은 필요치 않다. 예를 들면 "1" 의 시작 인덱스가 사용되었을 경우에는, 또는 오프셋이 홀수일 경우에는, 워드 b8 에서 시작하는 2 배 워드 액세스는 반드시 제 2 워드로서 워드 b1 을 액세스해야 한다. 워드 b1 이 워드 b8 에 대해 연속적으로 저장되지 않으므로, 로드/저장 제어 유닛[33]은 제 2 명령을 명령 실행 유닛[34]으로 보내어 워드 b8 을 제 1 사이클동안 액세스하고 워드 b1 을 다음 사이클 동안 액세스 한다. 상기 경우에서, 2 개의 액세스 사이클들이 상기 순환 버퍼의 경계를 가로지르는 데이터를 로딩 또는 저장하는데 필요하다. 순환 버퍼들은 일반적으로 크기 때문에, 상기와 같은 액세스들은 "일반" 비-경계-횡단 액세스에 비해 매우 드물다.
소위 비트 역 어드레싱인 제 2 어드레싱 모드는 도 8 에 도시되어 있으며, 도 8 은 주로 빠른 퓨리어 변환(fast fourier transformation;FAT)에 사용되는 것이다. 이전 도면들에서 도시된 바와 같이 메모리[1]는 레지스터 파일[2]과 연결된다. 데이터 프로세싱 유닛은 베이스 어드레스[35c]와 같은 비트 역 파라미터들, 변경자(modifier)[35a], 및 인덱스[35b]를 저장하기 위해 저장 수단[35]을 포함한다. 순환 버퍼 어드레싱과 관련된 기술된 바와 같이 모든 파라미터들은 어드레스 레지스터에 바람직하게 저장된다. 베이스 어드레스는 바람직하게는 짝수 어드레스 레지스터, 및 제 2 홀수 어드레스 레지스터의 상부 부분의 변경자 및 하부 부분의 인덱스에 저장되어 병렬 액세스를 가능하게 한다.
유효 어드레스는 번호[39]로 표시되고 자동적으로 가산부[36], [38] 및 역 함수 유닛[37]에 의해 계산된다. 메모리[1]에 대한 액세스 후, 인덱스 파라미터[35b]는 가산기[36]에 의해 변경자[35a]로 후-증가된다. 상기 인덱스는 비트 n {n=0,...,m} 을 비트 (m-n)와 교환하는 역 함수 유닛[37]에 공급된다. 상기에서 m 은 인덱스 파라미터[35b]의 길이를 표시한다. 유닛[37]에 의해 실행된 함수는 레지스터의 중심에서의 인덱스 레지스터[35b]의 내용을 단순히 반영한다. 비트 0,...15를 가진 16 비트 레지스터에서, 중심은 비트 7 과 8 사이일 것이다. 상기 역으로 된 인덱스 파라미터는 베이스 어드레스[35c]에 가산시키는 가산기[38]에 공급된다. 결과[39]는 메모리[1]에 대한 어드레스로서 사용되고, 필요한 것들은 각 메모리 셀의 물리적 어드레스로 변환된다.
예시적으로, 16 비트 값을 가진 1024 포인트 리얼(real) FFT를 사용하면, 버퍼 사이즈는 2048 바이트가 된다. 비트 역 인덱스를 사용하여 상기 어래이를 통한 스테핑(stepping)은 바이트 인덱스들의 시퀀스(sequence), 0, 1034, 512, 1536, 256 ... 을 제공할 것이다. 상기 시퀀스는 인덱스 35b 를 0 으로 그리고 변경자를 0x0020 으로 초기화함으로서 달성될 수 있다.
일반적으로, 필요한 변경자의 값은 버퍼 크기/2 의 역 함수에 의해 주어진다. 상기에서 버퍼 크기는 바이트로 주어진다. 상기 메커니즘은 실행 시간 및 메모리 공간을 감소시킨다. 또한 FFT-알고리즘을 기록하기 더욱 용이하게 만든다. 비트 역 어드레싱 모드 없이는, 상기 FFT 를 마치기 위해 1 이상의 상기 데이터의 통과가 필요할 것이다. 필요한 여분 사이클의 갯수는 데이터 포인트들의 갯수에 비례한다. 사이클 카운트의 전체 증가는 소프트웨어로 비트 역(reverse)을 구현하는데 사용된 알고리즘에 좌우된다.
도 9 는 FIR 필터 기능을 수행하기 위한 본 발명에 따른 데이터 운용 유닛의 구성도의 예를 도시한 블록 다이어그램이다. 메모리[1]는 데이터 0 내지 데이터 N-1 및 계수 COE 0 내지 COE N-1 을 포함한다. 상기 메모리는, 각 포인터들을 포함하고 로드/저장 어드레스 산술부에 연결된 어드레스 레지스터 파일[45]에 의해 어드레싱된다. 상기 메모리[1]는 또한 64 비트 버스를 통해, 계산되는 실제 계수 및 데이터를 포함하는 데이터 레지스터 파일[2]과 연결된다. 상기 데이터 프로세싱 유닛은, 다른 산술 유닛들에서의 실행을 위해 다른 데이터를 운용하는 다수의 버스들[47, 48, 49 및 50]을 포함한다. 입력들이 버스[47]을 통해 데이터 레지스터 파일에 연결되는 2개의 승산부[51 및 52]가, 2 개의 승산을 병렬로 수행하기 우해 제공된다. 더우기, 2 개의 16 비트 가산부[53 및 54]가 제공되는데 이것은 버스[50]을 통해 승산부[51 및 52]의 결과들과 연결된다. 버스[48]은 가산부[53 및 54]의 출력과 연결된다. 2 개의 추가적 가산부[55 및 56]가 제공되는데 입력들은 버스 [48]과 연결되고 출력들은 버스[49]와 연결된다. 버스[47] 및 데이터 레지스터 파일[2]은 다수의 라인들을 통해 버스[48 및 49]와 연결된다. 버스[50] 및 버스[49]는 추가적으로 버스[48]과 연결된다.
양 어드레싱 모드들은 메모리 액세스 메카니즘과 무관하게 모든 데이터 프로세싱 유닛으로 구현될 수 있다. 전술한 바와 같이, 본 발명은 모든 비트 크기에 적용된다. 1/2-워드가 8 비트로 형성될 때, 16 비트 워드 크기를 가지는 데이터 프로세싱 유닛으로 구현될 수 있다. 또한 64 비트 워드 크기를 가지는 데이터 프로세싱으로 구현될 수도 있다. 상기에서 1/2-워드는 32 비트로 형성되고 1/4 워드는 16 비트로 형성된다.

Claims (19)

  1. 적어도 2 세트의 레지스터들을 가지는 레지스트 파일;
    상기 레지스터 파일에 연결된 레지스터 로드(load) 및 저장 버퍼;
    메모리;
    상기 레지스터 로드 및 저장 버퍼를 상기 메모리와 연결시키는 2 배 워드 폭 버스를 형성하기 위하여 적어도 제 1 및 제 2 워드 라인들을 가지는 버스;
    상기 제 1 세트의 레지스터들은 상기 워드 라인 중 하나와 연결될 수 있고 상기 제 2 세트의 레지스터들은 다른 각 워드 라인들과 연결될 수 있도록 하는 결합 수단; 및
    상기 메모리와의 데이터 전달을 위한 로드 및 저장 제어 유닛을 포함하는 것을 특징으로 하는 데이터 프로세싱 유닛.
  2. 제 1 항에 있어서, 상기 로드 및 저장 제어 유닛은, 상기 제 1 및 제 2 세트의 레지스터들과 상기 메모리 사이에서 병렬로 2 개의 연속적인 워드들을 로딩하거나 저장하기 위한 수단을 가지는 것을 특징으로 하는 데이터 프로세싱 유닛.
  3. 제 1 항에 있어서, 상기 로드 및 저장 제어 유닛은, 상기 메모리에서 한 워드를 로딩하고, 상기 한 워드를 상기 제 1 세트의 레지스터들에서의 제 1 레지스터 및 제 2 세트의 레지스터들에서의 제 2 레지스터 수단에 저장되는 2 개의 1/2-워드들로 분할하는 수단을 가지는 것을 특징으로 하는 데이터 프로세싱 유닛.
  4. 제 1 항에 있어서, 상기 로드 및 저장 제어 유닛은, 상기 제 1 세트의 레지스터들의 제 1 레지스터에서 제 1 1/2-워드, 및 상기 제 2 세트의 레지스터들의 제 2 레지스터에서 제 2 1/2-워드를 로딩하며, 상기 양 1/2-워드를 한 단어로 연관시키고 상기 워드를 상기 데이터 버스를 통해 상기 메모리에 저장하는 수단을 가지는 것을 특징으로 하는 데이터 프로세싱 유닛.
  5. 제 3 항에 있어서, 상기 로드 및 저장 제어 유닛은, 상기 1/2-워드들을 한 레지스터의 1/2 로 로딩하고 상기 레지스터의 나머지 1/2 을 0 들로 채우는 수단을 더 포함하는 것을 특징으로 하는 데이터 프로세싱 유닛.
  6. 제 3 항에 있어서, 상기 로드 및 저장 제어 유닛은, 상기 1/2-워드들은 한 레지스터의 하부 1/2로 로딩하고 상기 레지스터의 상부 1/2을 부호로 채우는 것을 특징으로 하는 데이터 프로세싱 유닛.
  7. 제 1 항에 있어서, 소정의 레지스터 길이를 가지는 레지스터의 내용을 상기 레지스터 길이보다 작은 사전 지정된 데이터 길이로 정의된 최대치까지로 제한하기 위해 상기 레지스터 파일과 연결된 포화(saturation) 유닛을 더 포함하는 것을 특징으로 하는 데이터 프로세싱 유닛.
  8. 제 1 항에 있어서, 다수의 동일한 산술 동작부들을 가지는 상기 레지스터 파일에 연결된 산술 유닛을 더 포함하는데, 각 레지스터는 다수의 데이터 바이트들을 포함하며, 각 산술 동작부는 상기 레지스터의 상기 데이터 바이트들 중 하나에 의해 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  9. 제 1 항에 있어서, 적어도 2 개의 동일한 산술 동작부들을 가지는 상기 레지스터 파일에 연결된 산술 유닛을 더 포함하는데, 각 레지스터는 적어도 2 개의 데이터 1/2-워드들을 포함하며, 각 산술 동작부는 상기 레지스터의 상기 데이터 1/2-워드들 중 하나에 의해 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  10. 제 1 항에 있어서, 다수의 동일한 논리적 동작부들을 가지는 상기 레지스터 파일에 연결된 논리적 유닛을 더 포함하는데, 각 레지스터는 다수의 데이터 바이트들을 포함하며, 각 논리적 동작부는 상기 레지스터의 상기 데이터 바이트들 중 하나에 의해 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  11. 제 1 항에 있어서, 적어도 2 개의 동일한 논리적 동작부들을 가지는 상기 레지스터 파일에 연결된 논리적 유닛을 더 포함하는데, 각 레지스터는 적어도 2 개의 데이터 1/2-워드들을 포함하며, 각 논리적 동작부는 상기 레지스터의 상기 데이터 1/2-워드들 중 하나에 의해 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  12. 제 1 항에 있어서, 적어도 2 개의 승산(multiply) 동작부들을 가지는 상기 레지스터 파일에 연결된 승산 누산부(accumulator)를 더 포함하는데, 각 레지스터는 적어도 2 개의 데이터 1/2-워드들을 포함하며, 제 1 승산 동작부는 제 1 레지스터의 제 1 1/2-워드 및 제 2 레지스터의 제 1 1/2-워드에 의해 공급되고, 제 2 승산 동작부는 제 1 레지스터의 제 2 1/2-워드 및 제 2 레지스터의 제 2 1/2-워드에 의해 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  13. 제 1 항에 있어서, 상기 버스는, 다중-워드 폭 버스를 형성하기 위하여 다수 세트의 워드 라인들을 가지며, 상기 레지스터 파일은, 각 세트의 레지스터들이 상기 세트의 워드 라인들 중 하나와 연결되어 정렬된(aligned) 및 비정렬된 다중-워드 액세스를 허용하는 다수 세트의 레지스터들을 가지는 것을 특징으로 하는 데이터 프로세싱 유닛.
  14. 제 1 항에 있어서, 상기 메모리내의 버퍼 베이스(base) 어드레스 및 버퍼 종료(end) 어드레스를 가지는 순환 버퍼를 정의하기 위한 수단을 포함하는 것을 특징으로 하는 데이터 프로세싱 유닛.
  15. 제 14 항에 있어서, 일부는 상기 버퍼 종료 어드레스에 저장되고 일부는 상기 버퍼 베이스 어드레스에 저장되는 다중-워드를 액세스하기 위한 수단을 더 포함하는 것을 특징으로 하는 데이터 프로세싱 유닛.
  16. 제 14 항에 있어서, 상기 버퍼 베이스 어드레스 및 버퍼 종료 어드레스는 어드레스 레지스터에 저장되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  17. 제 1 항에 있어서, 베이스 어드레스, 변경자(modifier) 및 인덱스(index)에 대한 저장 수단을 가지는 비트 역 어드레싱(bit reverse addressing) 수단을 더 포함하는데, 상기 비트 역 어드레싱 수단은, 비트 역 유닛에 상기 색인을 공급하기 위한 수단 및 각 액세스후 상기 변경자를 상기 색인들에 가산하는 수단을 더 포함하며, 상기 비트 역 유닛의 결과는 상기 메모리를 어드레싱하기 위해 상기 베이스 어드레스에 상기 결과를 가산하는 가산 수단에 공급되는 것을 특징으로 하는 데이터 프로세싱 유닛.
  18. 제 17 항에 있어서, 상기 저장 수단은 어드레스 레지스터인 것을 특징으로 하는 데이터 프로세싱 유닛.
  19. 제 1 항에 있어서, 상기 로드 및 저장 저장 유닛은, 한 워드를 상기 메모리에서 로딩하고 상기 워드를 다수의 일부-워드들로 분할하는 수단을 가지는데, 상기 일부-워드는 각 세트의 레지스터들의 상기 레지스터들 중 하나에 각각 저장되는 것을 특징으로 하는 데이터 프로세싱 유닛.
KR1020007002645A 1997-09-12 1998-09-04 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛 KR20010030593A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/928,764 1997-09-12
US08/928,764 US6260137B1 (en) 1997-09-12 1997-09-12 Data processing unit with digital signal processing capabilities
PCT/US1998/018574 WO1999014663A2 (en) 1997-09-12 1998-09-04 Data processing unit with digital signal processing capabilities

Publications (1)

Publication Number Publication Date
KR20010030593A true KR20010030593A (ko) 2001-04-16

Family

ID=25456710

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007002645A KR20010030593A (ko) 1997-09-12 1998-09-04 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛

Country Status (7)

Country Link
US (1) US6260137B1 (ko)
EP (1) EP1019805B1 (ko)
JP (1) JP2001516916A (ko)
KR (1) KR20010030593A (ko)
DE (1) DE69824193T2 (ko)
IL (1) IL134362A0 (ko)
WO (1) WO1999014663A2 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US7395298B2 (en) * 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
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
US6803989B2 (en) 1997-07-15 2004-10-12 Silverbrook Research Pty Ltd Image printing apparatus including a microcontroller
US7724282B2 (en) 1997-07-15 2010-05-25 Silverbrook Research Pty Ltd Method of processing digital image to correct for flash effects
US6879341B1 (en) 1997-07-15 2005-04-12 Silverbrook Research Pty Ltd Digital camera system containing a VLIW vector processor
AUPO850597A0 (en) 1997-08-11 1997-09-04 Silverbrook Research Pty Ltd Image processing method and apparatus (art01a)
AUPO802797A0 (en) 1997-07-15 1997-08-07 Silverbrook Research Pty Ltd Image processing method and apparatus (ART54)
US6985207B2 (en) 1997-07-15 2006-01-10 Silverbrook Research Pty Ltd Photographic prints having magnetically recordable media
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
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
AUPP702098A0 (en) 1998-11-09 1998-12-03 Silverbrook Research Pty Ltd Image creation method and apparatus (ART73)
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US7107302B1 (en) * 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
WO2000068783A2 (en) 1999-05-12 2000-11-16 Analog Devices, Inc. Digital signal processor computation core
US6859872B1 (en) 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
AUPQ056099A0 (en) 1999-05-25 1999-06-17 Silverbrook Research Pty Ltd A method and apparatus (pprint01)
GB2352065B (en) * 1999-07-14 2004-03-03 Element 14 Ltd A memory access system
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
FR2802321A1 (fr) * 1999-12-09 2001-06-15 Ass Pour La Promotion De La Mi Processeur configurable par l'utilisateur
US6829696B1 (en) * 1999-12-30 2004-12-07 Texas Instruments Incorporated Data processing system with register store/load utilizing data packing/unpacking
US6453405B1 (en) * 2000-02-18 2002-09-17 Texas Instruments Incorporated Microprocessor with non-aligned circular addressing
GB2363869B (en) * 2000-06-20 2004-06-23 Element 14 Inc Register addressing
US7120781B1 (en) * 2000-06-30 2006-10-10 Intel Corporation General purpose register file architecture for aligned simd
US7430578B2 (en) * 2001-10-29 2008-09-30 Intel Corporation Method and apparatus for performing multiply-add operations on packed byte data
WO2003100600A2 (en) 2002-05-24 2003-12-04 Koninklijke Philips Electronics N.V. An address generation unit for a processor
JP3958662B2 (ja) 2002-09-25 2007-08-15 松下電器産業株式会社 プロセッサ
EP1701249A1 (en) * 2005-03-11 2006-09-13 Interuniversitair Microelektronica Centrum Vzw Ultra low power ASIP (Application-Domain specific Instruction-set Processor) microcomputer
US7788420B2 (en) * 2005-09-22 2010-08-31 Lsi Corporation Address buffer mode switching for varying request sizes
US20100141668A1 (en) * 2006-10-26 2010-06-10 Nxp, B.V. Address calculation unit
JP5327432B2 (ja) * 2008-08-11 2013-10-30 セイコーエプソン株式会社 信号処理プロセッサ及び半導体装置
JP5311008B2 (ja) * 2008-08-11 2013-10-09 セイコーエプソン株式会社 信号処理プロセッサ及び半導体装置
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8935468B2 (en) * 2012-12-31 2015-01-13 Cadence Design Systems, Inc. Audio digital signal processor
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US20170249144A1 (en) * 2016-02-26 2017-08-31 Qualcomm Incorporated Combining loads or stores in computer processing
US11593117B2 (en) 2018-06-29 2023-02-28 Qualcomm Incorporated Combining load or store instructions
US11442726B1 (en) 2021-02-26 2022-09-13 International Business Machines Corporation Vector pack and unpack instructions

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JP2816248B2 (ja) * 1989-11-08 1998-10-27 株式会社日立製作所 データプロセッサ
US6070003A (en) * 1989-11-17 2000-05-30 Texas Instruments Incorporated System and method of memory access in apparatus having plural processors and plural memories
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
EP0473805A1 (en) 1990-09-03 1992-03-11 International Business Machines Corporation Computer system with improved performance
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5590352A (en) 1994-04-26 1996-12-31 Advanced Micro Devices, Inc. Dependency checking and forwarding of variable width operands
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
DE69519449T2 (de) * 1994-05-05 2001-06-21 Conexant Systems Inc Raumzeigersdatenpfad
EP1265132A3 (en) 1994-12-02 2005-02-09 Intel Corporation Microprocessor with packing operation of composite operands
US5659700A (en) * 1995-02-14 1997-08-19 Winbond Electronis Corporation Apparatus and method for generating a modulo address
US5721892A (en) * 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
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
US5896543A (en) * 1996-01-25 1999-04-20 Analog Devices, Inc. Digital signal processor architecture
US5864713A (en) * 1996-02-12 1999-01-26 Hewlett-Packard Company Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer
US5752271A (en) * 1996-04-29 1998-05-12 Sun Microsystems, Inc. Method and apparatus for using double precision addressable registers for single precision data
US5812147A (en) * 1996-09-20 1998-09-22 Silicon Graphics, Inc. Instruction methods for performing data formatting while moving data between memory and a vector register file
US5913054A (en) * 1996-12-16 1999-06-15 International Business Machines Corporation Method and system for processing a multiple-register instruction that permit multiple data words to be written in a single processor cycle

Also Published As

Publication number Publication date
WO1999014663A3 (en) 1999-08-05
EP1019805A2 (en) 2000-07-19
WO1999014663A2 (en) 1999-03-25
DE69824193T2 (de) 2005-05-19
JP2001516916A (ja) 2001-10-02
IL134362A0 (en) 2001-04-30
US6260137B1 (en) 2001-07-10
DE69824193D1 (de) 2004-07-01
EP1019805B1 (en) 2004-05-26

Similar Documents

Publication Publication Date Title
EP1019805B1 (en) Data processing unit with digital signal processing capabilities
KR100325430B1 (ko) 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US6061779A (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
CN111353126A (zh) 分块矩阵乘法运算系统
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
JPH0760379B2 (ja) ワンチップディジタル信号プロセッサ
US7308559B2 (en) Digital signal processor with cascaded SIMD organization
JP2002149400A (ja) 複数レジスタ指定が可能なsimd演算方式
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
JP2002507789A (ja) デジタル信号プロセッサ
EP2267596A2 (en) Processor core for processing instructions of different formats
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JPS62134763A (ja) 3アドレス・コ−ドの指標づけ装置
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
JP2001501001A (ja) データ処理システムにおける入力オペランド制御
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US5655139A (en) Execution unit architecture to support X86 instruction set and X86 segmented addressing
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6275925B1 (en) Program execution method and program execution device
US6484194B1 (en) Low cost multiplier block with chain capability
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
US6321319B2 (en) Computer system for allowing a two word jump instruction to be executed in the same number of cycles as a single word jump instruction

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid