KR100940465B1 - 디지털 신호처리기 - Google Patents

디지털 신호처리기 Download PDF

Info

Publication number
KR100940465B1
KR100940465B1 KR1020007010577A KR20007010577A KR100940465B1 KR 100940465 B1 KR100940465 B1 KR 100940465B1 KR 1020007010577 A KR1020007010577 A KR 1020007010577A KR 20007010577 A KR20007010577 A KR 20007010577A KR 100940465 B1 KR100940465 B1 KR 100940465B1
Authority
KR
South Korea
Prior art keywords
data
instruction
register
command
memory
Prior art date
Application number
KR1020007010577A
Other languages
English (en)
Other versions
KR20010082524A (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
Priority claimed from US09/044,088 external-priority patent/US6496920B1/en
Priority claimed from US09/044,086 external-priority patent/US6425070B1/en
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Priority to KR1020067005979A priority Critical patent/KR100896674B1/ko
Priority to KR1020067005980A priority patent/KR100835148B1/ko
Publication of KR20010082524A publication Critical patent/KR20010082524A/ko
Application granted granted Critical
Publication of KR100940465B1 publication Critical patent/KR100940465B1/ko

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Abstract

디지털 신호처리회로는 가변 길이 명령집합의 사용을 필요로 한다. 전형적인 DSP 는 데이터가 레지스터 뱅크 (120) 및 3개의 데이터 메모리 (102, 103, 104) 와 교환될 수 있는 일군의 3개의 데이터버스 (108, 110, 112) 를 포함한다. 적어도 2개의 처리부 (128, 130) 에 의해 액세스가능한 레지스터를 갖는 레지스터 뱅크 (120) 가 사용될 수 있다. 명령 메모리 (152) 에 저장된 가변 길이의 명령을 수신하는 명령인출부 (156) 가 포함될 수 있다. 명령 메모리 (152) 는 상기 일군의 3개의 데이터 메모리 (102, 103, 104) 로부터 분리될 수 있다.
Figure R1020007010577
디지털 신호처리기, 가변 길이 명령

Description

디지털 신호처리기{A DIGITAL SIGNAL PROCESSOR}
본 발명은 디지털 신호 처리기에 관한 것이다. 특히, 본 발명은 유일한 것은 아니지만, 고 병렬, 고 파이프라인 처리 기술을 이용한 디지털 신호 처리의 응용에 관한 것이다.
일반적으로, 디지털 신호 처리기 (digital signal processor; 이하, DSP 라 칭함) 는 디지털 신호의 실시간 처리에 사용된다. 디지털 신호는 통상적으로 대응하는 아날로그 신호를 나타내는데 사용되는 일련번호 또는 디지털 값이다. DSP 는 소형 디스크 플레이어와 같은 오디오 시스템, 및 셀룰라 전화기와 같은 무선 통신 시스템을 포함하는 다양한 응용에 사용된다.
DSP 는 종종 마이크로프로세서의 특정화된 형상으로 고려된다. 마이크로프로세서와 마찬가지로, DSP는 실리콘 기재의 반도체 집적회로 상에서 일반적으로 구현된다. 또한, 마이크로프로세서와 같이, DSP의 계산능력은 축소명령세트 (reduced instruction set; RISC) 계산기술을 사용함으로써 증대된다. RISC 계산기술은 각각의 명령이 동일한 양의 시간에서 실행되는 DSP의 동작을 제어하기 위하여 다수의 같은 크기의 명령을 사용하는 것을 포함한다. RISC 계산기술의 사용은 명령이 수행되는 속도, 클럭속도를 증가시킬 뿐만 아니라, DSP 내의 명령 파 이프라이닝 (pipelining) 의 양을 증가시킨다. 이것은 DSP의 전체 계산능력을 증대시킨다.
RISC 계산기술을 사용한 DSP 의 구성은 원치않는 특성도 발생시킨다. 특히, RISC 기반의 DSP는 다수의 명령을 실행하여 주어진 태스크를 수행한다. RISC 기반의 DSP 의 향상된 클럭속도에 의해 이들 명령을 실행하는 시간이 감소되더라도, 부가명령의 실행은 DSP 의 전력소모를 증가시킨다. 또한, 다수 명령의 사용은 DSP 내의 온-칩 (on-chip) 명령 메모리의 크기를 증가시킨다. 메모리 구성은 DSP 내의 실질적 회로 영역을 요구하여 (종종 전체영역의 50% 이상), DSP 의 크기 및 비용을 증가시킨다. 이와 같이, RISC 기반의 DSP 의 사용은 저비용, 저전력, 디지털 셀룰라 전화기 또는 다른 형태의 배터리 동작 무선 통신 시스템과 같은 응용에 대하여 이상적이지 못하다.
도 1은 종래기술에 따라 구성된 디지털 신호 처리기의 간략화된 블록도이다. 산술논리장치 (arithmetic logic unit; ALU; 16) 가 ALU 레지스터 뱅크 (ALU resister bank; 17) 에 접속되고, 멀티플라이 어큐뮬레이트 회로 (multiply accumulate circuit; MAC; 26) 가 MAC 레지스터 뱅크 (27) 에 접속된다. 데이터 버스 (20) 는 MAC 레지스터 뱅크 (27), ALU 레지스터 (17), 및 (온-칩) 데이터 메모리 (10) 를 접속시킨다. 명령버스 (22) 는 MAC 레지스터 뱅크 (27), (온-칩) 명령 메모리 (12), MAC 레지스터 뱅크 (27), 및 ALU 레지스터 뱅크 (17) 를 접속시킨다. 명령 디코드 (18) 는 MAC (26) 및 ALU (16) 에 접속되며, 몇몇의 종래 기술 시스템에서는 명령 디코드 (18) 가 명령 메모리 (12) 에 직접 접속된다. 또한, 데이터 메모리 (10) 는 데이터 인터페이스 (11) 에 접속되며, 명령 메모리 (12) 는 명령 인터페이스 (13) 에 접속된다. 데이터 인터페이스 (12) 및 명령 인터페이스 (13) 는 오프-칩 (off-chip) 메모리 (6) 와 데이터 및 명령을 교환한다.
동작시, 명령 메모리 (12) 에서의 명령이 명령 디코드 (18) 에 의해 디코드된다. 이에 대하여, 명령 디코드 (18) 는 ALU (16) 및 MAC (26) 에 가해지는 내부 제어신호를 발생한다. 제어신호들은 ALU 로 (16) 로 하여금 일반적으로 ALU 레지스터 뱅크 (17) 및 데이터 메모리 (10) 또는 명령 메모리 (12) 사이에서 교환된 데이터를 갖게 한다. 또한, 제어신호들은 ALU (16) 및 MAC (26) 로 하여금 ALU 레지스터 뱅크 (17) 및 MAC 레지스터 뱅크 (27) 각각에 저장된 데이터에 응답하고, 이 데이터 상에서 다양한 동작을 수행하게 한다.
예시 동작에서, 명령 메모리 (12) 는 ALU (16) 및 MAC (26) 에 의한 사용을 위한 계수 데이터를 포함할 수 있고, 데이터 메모리 (10) 는 처리될 데이터 (신호 데이터) 를 포함할 수 있다. 계수 데이터는 공통실행인, DSP 를 사용하는 주파수 필터를 구현하기 위함이다. 필터링이 수행될 때, 데이터 메모리 (10) 로부터의 신호 데이터 및 명령 메모리 (12) 로부터의 계수 데이터 모두가 MAC 레지스터 (27) 에서 판독된다. 또한, 명령 메모리 (12) 내의 부가 명령 데이터는 데이터 버스 (22) 또는 직접접속을 통하여 명령 디코드 (18) 에 인가된다. 부가 명령 데이터는 MAC (26) 에 의해 수행되는 동작을 지정한다. 통상적으로, MAC (26) 에 의해 발생되는 결과는 다시 판독되어 데이터 메모리 (10) 로 입력된다.
이러한 종래 기술의 처리로부터 많은 처리 비효율이 초래된다. 이러한 처리 비효율은, MAC 레지스터 (26) 및 명령 디코드 (18) 모두에 명령 데이터를 공급해야 하는, 명령 메모리 (12) 에 대한 예컨대, 버스 또는 액세스 경합 (contention) 을 포함할 뿐만 아니라, 신호 데이터를 판독하고 출력 데이터에 기록해야 하는 데이터 메모리 (10) 에 대한 버스 또는 액세스 경합을 포함한다. 또한, 많은 경우에서, 출력 데이터 상에서의 부가적인 처리가 ALU (16) 에 의해서 수행된다. 이것은 출력 데이터가 MAC 레지스터 뱅크 (27) 로부터 데이터 메모리 (10) 로 기입된 다음, ALU 레지스터 (17) 에서 판독되어야 하기 때문에, 데이터 메모리 (10) 에 대한 처리를 더욱더 악화시켜, 데이터 버스 (20) 에 대한 경합을 발생시킨다. 이러한 판독 및 기록 동작은 버스 (20) 상에서 수행되므로, 부가적인 버스 사이클을 소모한다. 이러한 비효율은 DSP 의 처리성능을 감소시킨다.
본 발명은 상술한 문제 및 비효율을 제기함으로써 DSP의 성능 및 유용성을 향상시킬 뿐만 아니라, 응용을 통하여 설명된 다른 특징 및 활용을 제공한다.
본 발명은 새롭고 개선된 디지털 신호 처리방법 및 회로를 제공하는 데 목적이 있다.
본 발명의 일태양에 따라, 메모리 및 처리 장치 사이의 가변 길이 데이터의 전송이 최적화되도록 선택되는 복수개의 제 2 선택가능 버스를 통하여 메모리가 복수개의 제 1 처리장치와 접속할 수 있는 디지털 신호 처리기가 제공된다.
본 발명의 여러 다른 태양은 여기에 첨부된 청구범위에 정의된다.
본 발명은 가변 길이 명령 집합의 사용에 의해 실현될 수 있다. 가변 길이 명령의 일부는 메모리 워드 경계 (memory word boundary) 에 걸쳐 발생하는 명령의 시작과 종료에 의해 메모리 공간 내의 인접한 위치에 저장될 수 있다. 본 발명의 부가적인 태양은 가변 수의 명령 프래그먼트를 포함하는 명령을 가지는 것에 의해 실현될 수 있다. 각각의 명령 프래그먼트는 특정 동작, 또는 동작들로 하여금 각각의 클럭 사이클 동안 다중 동작을 허용하여 수행되게 한다. 이와 같이, 다중 동작이 각각의 클럭 사이클 동안 수행되어, 태스크를 수행하는데 필요한 클럭 사이클의 전체수를 감소시킨다.
예시의 DSP는 데이터가 레지스터 뱅크 및 3개의 데이터 메모리와 교환될 수 있는 일군의 3 개의 데이터 버스를 포함한다. 2 개 이상의 데이터 버스, 특히 3 개의 데이터 버스의 사용은, 버스 경합이 현저하게 감소되는 본 발명의 또 다른 태양을 실현한다. 본 발명의 일 실시예는 하나의 넓은 버스와 2 개의 좁은 버스를 포함하는 데이터 버스를 요구한다. 넓은 버스는 넓은 데이터 메모리에 접속되고, 2 개의 좁은 버스는 2 개의 좁은 데이터 메모리에 접속된다.
본 발명의 실시예의 일태양은 적어도 2 개의 처리부에 의해 액세스할 수 있는 레지스터를 갖는 레지스터 뱅크의 사용이다. 이것은 메모리로의 데이터 판독 및 메모리로의 데이터 기록 없이, 다중 처리부에 의해 특정의 일군의 데이터 상에서 수행되는 다중 동작을 허용한다. 본 발명의 예시 실시예의 처리부는 산술논리장치 (ALU) 및 멀티플라이 어큐뮬레이트 (MAC) 장치를 포함한다. 다중 버스 구조의 사용, 고병렬 명령, 또는 이들 모두가 병합될 때, 본 발명의 부가적 태 양은 고 파이프라인, 다중-동작, 처리가 수행되는 곳에서 실현된다.
본 발명의 다른 태양은 명령 메모리에 저장된 가변 길이의 명령을 받는 명령 인출부를 포함하는 것에 의해 실현된다. 또한, 본 발명의 또 다른 태양은 상기 일군의 3 개의 데이터 메모리와 이격된 명령 메모리에 의해 실현된다. 명령 디코더는 제어신호로 하여금 명령 메모리로부터의 명령을 디코드하여, 다양한 레지스터, 데이터 메모리, 및 각각의 클럭 사이클 동안 수행되는 다중 동작을 허용하는 기능부 사이에서 교환되는 데이터를 발생시킨다.
본 발명의 다양한 태양은 상승적으로 병합하여, 예기치 못한 바람직한 결과를 제공한다. 예컨대, 메모리 내에 연속적으로 저장된 가변 길이 명령의 사용은 DSP 의 필수 회로 영역을 감소시킨다. 이러한 감소는 DSP 에 다중 데이터 버스를 부가하는 것을 용이하게 할 뿐만 아니라, 다중 처리부에 의해 액세스할 수 있는 레지스터의 부가를 용이하게 하여, DSP 의 전체 성능을 증가시킨다. 본 발명의 다양한 태양의 병합에 의해 제공되는 다른 상승적인 이익은 하기에서 명백해지며, 더욱더 상세하게 설명된다.
본 발명의 상기 특징 및 또 다른 특징은 특히 첨부된 청구범위에서 설명되며 본 발명의 장점은 첨부된 도면을 참조하여 주어진 다음의 본 발명의 예시적인 실시예의 상세한 설명의 고려로부터 명백해질 것이다.
본 발명의 특징, 목적 및 장점은 동일한 참조번호가 전체를 통하여 대응하여 동일시되는 도면과 함께 주어진 하기에서 설명되는 본 발명의 예시적인 실시예의 상세한 설명으로부터 더욱더 명백해질 것이다.
도 1은 종래 기술에 따라 구성된 디지털 신호 처리기의 블록도;
도 2는 본 발명을 실시하는 디지털 신호 처리기의 블록도;
도 3은 레지스터 뱅크의 레지스터와 입력 포트 사이의 접속에 대한 블록도;
도 4는 레지스터 뱅크의 출력 포트와 레지스터 사이의 접속에 대한 블록도;
도 5는 본 발명의 실시예에 따른 메모리 공간에 저장된 가변 길이 명령 집합의 다이어그램;
도 6은 명령 인출부의 동작을 설명하는 흐름도;
도 7은 본 발명의 실시예에 따라 구성된 경우 명령 인출부의 블록도;
도 8은 본 발명의 실시예에 따라 구성된 경우 MAC 부의 블록도;
도 9는 본 발명의 실시예에 사용된 명령 계층구성의 블록도.
본 발명은 신규하고 향상된 디지털 신호 처리 방법 및 회로이다. 응용 내내 다양한 신호, 명령 및 데이터에 대해 언급한다. 이들 신호, 명령 및 데이터는 대전, 광학 또는 자기 입자나 이들의 어떤 병합을 포함하는 전류축적, 전기적 전압, 전류에 의해 표시되는 것이 바람직하며, 이러한 사용은 공지되었다. 일반적으로, 이러한 신호, 명령 및 데이터를 나타내는 다양한 화학적 생물학적 합성물은 이러한 항목을 사용하고, 제어하고, 조종하는데의 어려움으로 인하여 바람직하지 않더라도, 본 발명의 사용과 마찬가지로 잘 일관된다.
또한, 본 발명의 다양한 태양, 이익, 특징, 또는 장점이 언급된다 (특별하게 언급하지 않은 경우, 여기에서는 총괄하여 태양으로서 칭함). 본 발명의 몇몇 실시예에서는, 발명의 어떠한 다른 태양의 존재 없이도, 이러한 다른 태양들만이 실현될 수 있다. 그러나, 본 발명의 다른 실시예에서는, 2 이상의 발명의 태양이 함께 실현되어, 발명의 2 이상의 접속 태양의 단지 하나의 태양만을 실현하는 발명의 실시예에 의해 제공되는 것보다 큰 상승적이고 예기치 못한 장점을 유도한다.
Ⅰ. DSP 동작 및 명령저장
도 2는 본 발명의 예시적인 실시예에 따라 구성된 디지털 신호 처리기 (DSP) 회로의 일부분에 대한 블록도이다. 데이터 메모리 (102∼104) 가 어드레스 발생부 (address generation units; AGU; 105∼107) 를 통하여 데이터 버스 (A, B, C) 에 각각 접속됨과 더불어 데이터 인터페이스 (100) 에 접속된다. 데이터 버스 (A, B, C) 는 멀티플렉서 (122∼126)를 통하여 레지스터 뱅크 (120) 의 출력포트 (PO1, PO2, PO3) 에 각각 접속됨과 더불어, 레지스터 뱅크 (120) 의 입력포트 (PI1, PI2, PI3) 에 각각 접속된다. 바람직하게, 데이터 버스 (A, B, C) 는 데이터 메모리 (102∼104) 와 레지스터 뱅크 (120) 내의 레지스터 사이에서 데이터를 판독하고 기록한다.
3 개의 데이터 버스 및 3 개의 데이터 메모리의 사용은 버스 경합의 발생없이 레지스터 뱅크와 데이터 메모리 사이에서 교환되는 더 많은 데이터를 허용한다. 예컨대, 3 개의 인출동작은 3 개의 데이터 버스 (A, B, C) 를 사용하여 3 개의 메모리 (102∼104) 로부터 동시에 수행될 수 있다. 유사하게, 3 개의 기록 동작 도 수행될 수 있고, 이에 따라 3 개의 인출 및 기록 동작의 어떠한 병합도 수행될 수 있다.
4 번째의 데이터 버스의 부가는 수행되는 동작의 더욱더 많은 수를 허용하며, 본 발명의 몇몇 실시예와 일관된다. 그러나, 3 개의 버스가 필터링과 같은 DSP 에 의해서 일반적으로 수행되는 많은 태스크들의 수행을 용이하게 하기 때문에, 3 개의 데이터 버스만을 사용하는 것은 특별한 장점을 갖는다. 이와 같이, 4 번째 데이터 버스의 부가는 3 번째 데이터 버스와 동일한 증가성능 향상을 제공하지는 않으며, 동일한 양의 부가적인 회로영역을 요구하지 않는다. 이에 따라, 4 번째 데이터 버스의 부가는 3 번째 버스의 부가보다는 적은 이익을 제공한다. 그래서, 본 발명의 많은 실시예에서는 단지 3 개의 데이터 버스만은 사용하는 것이 바람직하다.
레지스터 뱅크 (120) 의 출력포트 (PO4, PO5, PO6) 가 멀티플라이 어큐뮬레이트 장치 (MAC; 128) 에 접속되며, MAC (128) 의 출력은 레지스터 뱅크 (120) 의 입력포트 (PI4) 에 차례로 접속된다. 레지스터 뱅크 (120) 의 출력포트 (PO7, PO8) 는 산술논리장치 (ALU; 130) 에 접속되고, ALU (130) 의 출력은 레지스터 뱅크 (120) 의 입력포트 (PI5) 에 접속된다.
명령 메모리 (152) 는 명령 인출부 (156) 및 명령 인터페이스 (150) 에 접속된다. 명령 디코더 (158) 는 명령 인출부 (156) 에 접속됨과 더불어, 즉시 버스 (immediate bus) (ImALU) 뿐만 아니라 즉시 버스 (Im1), 즉시 버스 (Im2) 및 즉시 버스 (Im3) 에 접속된다. 즉시 버스 (Im1, Im2, Im3) 는 멀티플렉서 (122, 124, 126) 에 접속된다. 즉시 버스 (ImALU) 는 ALU (130) 에 접속된다. 상술한 데이터 접속에 부가하여, 디코더 (158) 가 제어 접속 (도면에 도시되지 않음) 에 의해 나타낸 여러 하위시스템에 접속된다.
레지스터 뱅크 (120) 는 L0∼L3 및 D0∼D3 로 표시된 8 개의 레지스터를 포함한다. 레지스터 (L0∼L3) 는 40 비트의 넓은 레지스터이며 또한, 고 워드 레지스터 (L0h∼L3h) 및 저 워드 레지스터 (L0l∼L3l)를 통하여 16 비트 프래그먼트에서 액세스될 수 있다. 레지스터 (D0∼D3) 는 32 비트 와이드이며, 하위레지스터 (R0∼R7) 를 통하여 16 비트 프래그먼트에서 액세스될 수 있다. 일반적으로, 레지스터 및 하위레지스터는 제공된 특정 레지스터 개수에 의해 명백해지는 레지스터의 특별한 특징을 갖는, 간단하게 "레지스터" 로 칭한다.
발명의 일 태양은 다중 입력 및 출력 포트에 접속되어 이들에 의해 액세스될 수 있는 몇몇의 레지스터를 가지는 것에 의해 실현된다. 일 실시예에서, 이러한 다중 접속은 각각의 레지스터의 입력에 접속됨과 더불어, 각각의 출력포트에 접속된 멀티플렉서를 사용하는 것에 의해 제공된다. 다중접속을 제공하는 다른 방법이 명백해질 것이며, 예컨대, 데이터 버스 및 어드레스가능한 메모리의 사용을 포함하는 본 발명의 몇몇 태양의 사용과 일관된다. 그러나, 멀티플렉서는 여러 레지스터 및 포트에 빠르고 제어가능한 액세스를 제공하기 때문에, 멀티플렉서의 사용은 몇몇 실시예에서 바람직하다.
본 발명의 다른 태양은 즉시 데이터 버스 (immediate data bus) 를 사용하는 발명의 실시예에서 실현되며, 이 실시예는 여기에서 제공되는 예시적인 실시예의 경우이다. 예컨대, 명령 데이터에 포함된 데이터는 메모리 (102∼105) 와 인터페이스할 필요없이 레지스터 뱅크 (120) 로 판독될 수 있다. 이와 같이, 부가적인 데이터가 데이터 메모리와 인터페이스 없이 명령 처리 시스템으로부터 제공될 수 있어서, 버스 경합을 더욱 더 감소시킨다.
도 3은 레지스터 뱅크 (120) 내의 레지스터 집합과 입력포트 (PI1∼PI5) 집합 사이의 접속을 나타내는 블록도이다. 레지스터는 L0h∼L3h, L0l∼L3l, 및 R0∼R7 로서 정의된다. 레지스터 (L0) 는 레지스터 (L0h, L0l) 로 구성된다. 도 3 및 도 4의 관계에 있어서, 레지스터 (L0h∼L3h) 는 24 비트이고, 레지스터 (L0l∼L3l, R0∼R7) 는 16 비트이어서, 레지스터 (L0∼L3)를 40 비트 와이드로 만든다. 유사하게, 입력포트 (PI3∼PI5) 는 총 40 비트에 대하여 24 비트의 입력포트 (PI3h∼PI5h) 및 16 비트의 입력포트 (PI3l∼PI5l) 로 구성된다. 입력포트 (PI1, PI2)는 단지 16 비트이며, 레지스터 (LOh∼L3h)에 기록하는 데 사용되는 경우, 24 비트 중 적어도 중요한 16 비트에만 기록하는 것이 유용하다.
도 3에 도시된 바와 같이, 몇몇의 레지스터는 모든 입력포트로부터 데이터를 받지만, 다른 레지스터는 입력포트의 단지 몇 개 또는 일부로부터 데이터를 받는다. 특히, 모든 레지스터 (L0∼L3) 는 멀티플렉서 (500∼514) 로부터 레지스터 (L0∼L3) 내의 고 레지스터 및 저 레지스터 모두에 기록할 수 있는 16 비트 입력 포트에 의해, 모든 입력포트 (PI1∼PI5) 로부터 데이터를 받는다. 이와 같이, 레지스터 (L0∼L3) 는 (입력포트 PI0∼PI3 에 대응하는) 소정의 버스 (A∼C) 로부터 입력을 받음과 더불어 (입력포트 PI4 및 PI5 에 대응하는) MAC 부 (128) 및 ALU (130) 로부터 입력을 받는다. 레지스터 (R0∼R7) 는 멀티플렉서 (516∼530) 를 통하여 버스 (A∼C) 로부터 입력 데이터를 받는다. 그러나, 레지스터 (RO∼R7) 의 어떠한 레지스터도 MAC 부 (128; 입력포트 PI4) 로부터 입력 데이터를 받지 않는다. 또한, 레지스터 (R0∼R3) 는 멀티플렉서 (516, 518, 524, 526) 를 통하여 ALU 부 (130) 로부터 입력 데이터를 받는다.
도 3에 도시된 실시예는 여러 가지 장점을 갖는다. 특히, 이 실시예는 입력포트와 레지스터 사이에 충분한 접속성을 제공하여 대부분의 일반적인 동작을 용이하게 하지만, 전체 접속성은 최소로 유지되어 회로를 구현하는 데 요구되는 전체 회로영역을 감소시킨다. 예컨대, MAC 부 (128) 의 출력은 긴 레지스터 (L0∼L3) 에만 접속된다. 이것은 멀티플라이 및 어큐뮬레이트 동작의 결과가 일반적으로 32 비트를 초과하기 때문에 이익이며, 그래서 레지스터 (D0∼D3) 에 MAC 부 (128) 에 출력을 접속하는 것이 최소의 이익을 제공한다. 또 다른 예에서, ALU 부 (130) 는 레지스터 (L0∼L3, R0∼R3) 로 출력할 수 있다. 이것은 ALU 부 (130) 로부터의 데이터가 여러 레지스터에 기록될 수 있는 융통성을 증가시키며, ALU 부 (130) 가 많은 레지스터로 데이터를 출력하는데 유용한 많은 여러 동작을 수행하기 때문에 유용하다. 그러나, ALU 부 (130) 는 모든 레지스터에 접속되지 않으며, 이에 따라 불필요하고 과도한 접속성이 방지된다.
도 4는 본 발명의 일 실시예에 따라 수행되는 경우 레지스터 뱅크 (120) 의 출력포트를 레지스터에 접속하는 것을 나타내는 블록도이다. 도시된 바와 같이, 버스 (A) 로 출력하는 출력포트 (PO1) 는 멀티플렉서 (540) 를 통하여, 하위 레지스터로서 액세스되는 경우 모든 유용한 레지스터를 포함하는 레지스터 (L0h∼L3h, L0l∼L3l, R0∼R7) 에 접속된다. 유사하게, 버스 (B) 로 출력하는 출력포트 (P02) 는 멀티플렉서를 통하여 레지스터 (L0h∼L3h, L0l∼L3l, R0∼R7) 에 접속된다. 40 비트 와이드 버스 (C) 로 출력하는 출력포트 (P03) 는 멀티플렉서 (530) 에 의해, 완전한 레지스터로서 액세스되는 경우 모든 유용한 레지스터를 포함하는 레지스터 (L0∼L3, D0∼D3) 에 접속된다.
MAC 부 (128) 의 40-비트 입력으로 접속된 출력포트 (PO4) 는 멀티플렉서 (532)를 통하여 레지스터 (L0∼L3) 로 접속된다. MAC (128) 에 누산된 값은 수행된 연산을 곱셈하고 누산하는 특성으로 인하여 크게 되기 때문에, 출력포트 (PO4) 를 40 비트의 "긴" 레지스터 (L0∼L3) 로만 접속하는 것은, 다양한 곱셈 연산의 누산이 전형적으로 32 비트를 초과하게 되면, 레지스터 (D0∼D3) 로의 추가의 접속을 제공함으로써 얻어진 유용성이 낮기 때문에 최적화 된 접속 배치를 제공한다.
MAC 부 (128) 의 하나의 16 비트 입력에 접속된 출력포트 (PO5) 는 멀티플렉서 (534) 에 의해 레지스터 (LOh∼L3h, R0, R2, R4 및 R6) 로 접속된다. MAC 부 (128) 의 제 2 의 16 비트 입력포트로 접속된 출력포트 (PO6) 는 레지스터 (LOh∼L3h, L01∼L31 및 R0∼R7) 로 접속된다. MAC 부 (128) 의 하나의 16 비트 입력을 모든 사용가능한 레지스터로 접속시킴으로써, 제 2 의 16 비트 입력포트를 사용가능한 레지스터의 서브세트로 접속시키면서도, 유용한 절충이 얻어진다. 특히, 레지스터 공간이 제한될 때, 처리되어야 하는 데이터의 적어도 한 부분이 어느 사용가능한 레지스터에 위치될 수 있다. 반면, 다른 입력에 접속되는 레지스터의 수를 제한함으로써, 접속 회로의 총량이 줄어들며, 이는 다른 레지스터, 입력포트, 및 출력포트 사이의 연결성을 높이는 등의 또 다른 기능과 특성을 제공하게 한다.
ALU (130) 의 입력으로 접속된 출력포트 (PO7) 는 멀티플렉서 (546) 에 의해 레지스터 (L0∼L3, L0h∼L3h, 및 R0∼R3) 로 접속되는데, 여기서 L0h∼L03h 및 R0∼R3 은 논리 0 의 집합과 연관하여 출력된다. 즉, 레지스터 (L0h∼L03h 및 R0∼R3) 는 PO7 비트의 비트 31∼16 (0∼39 의 번호의 비트) 으로 출력되는데, 비트 0∼15 는 논리 0 으로, 비트 39∼32 는 비트 31 을 사용하여 부호 확장된다. ALU (130) 의 또 다른 입력으로 접속된 출력포트 (PO8) 는 멀티플렉서 (548) 에 의해 일련의 논리 0 과 연관하여 레지스터 (L0∼L3), 및 레지스터 (R0∼R7) 로 접속된다. 이러한 방식으로 ALU(130) 의 입력을 접속함으로써 모든 사용가능한 긴 레지스터 (L0∼L3) 에 대하여, 따라서, 큰 수에 대한 논리 연산 수행이 가능하도록 하여, 평균화 (normalizing) 및 스케일링 (scaling) 과 같은 유용한 많은 유형의 신호처리연산에서 유용하도록 한다. 또한, 레지스터 (R0∼R7 및 L0h∼L3h 및 R0∼R7) 사이에서 산술연산이 수행될 수 있어, 필요한 접속수를 제한하여 이에 의해 필요한 회로면적을 제한하면서도, 사용할 수 있는 레지스터 집합의 면에서 높은 수준의 유동성을 제공한다. 이해해야 할 것은, 가능한 논리 및 산술 연산은 전술한 것에 제한되지 않는다는 것이다.
다중 데이터 버스와 다중 처리부 모두에 의해 액세스 될 수 있는 레지스터를 사용함으로써, 다양한 이점을 얻을 수 있다. 예컨대, 레지스터는 데이터 버스와 처리부 사이에 인터페이스를 제공하여, 각 데이터 버스를 각 처리부로 라우트 할 필요성을 감소시킨다. 데이터버스 라우팅을 줄임으로써, 회로면적에 여유를 주고 칩가격을 낮춘다.
더욱이, 적어도 몇몇 (일군)의 레지스터를 다중 처리부로 접속함으로써, 데이터 버스 상의 데이터를 판독하고 메모리에 기입할 필요없이, 다중 처리부를 사용하여 동일한 데이터상에서 다중 연산이 수행되도록 한다. 이것은 버스 사이클에 여유를 주어, 버스 경합을 감소시킨다. 제 1 명령 사이클 동안 제 1 처리부에 의해 처리되는 데이터는 동일한 레지스터내에서 바로 제 2 처리 사이클 동안 제 2 처리부에 의해 처리될 수 있으므로, 명령 처리 파이프라이닝 (pipelining) 이 또한 채용될 수 있다.
반면, 전형적으로 모든 데이터가 다중 처리부에 의해 처리될 필요는 없기 때문에, 다른 레지스터 (레지스터 집합) 는 하나의 처리부에 의해 또는 두 개보다 많은 처리부가 존재하는 경우에는 처리부의 총 수보다 작은 처리부에 의해 액세스 될 수 있다. 이러한 다른 레지스터 집합을 사용함으로써 접속의 수을 줄이고, 회로면적으로 줄여, 레지스터 접속성과 회로면적 사이의 (따라서, 성능과 효율성 사이의) 최적화된 균형이 제공된다.
더욱이, 본 발명의 일 실시예에서는, 레지스터 뱅크 (128) 내에 2-위상 클록 레지스터를 사용함으로써 파이프라이닝이 더욱 향상된다. 2-위상 클록 레지스터는 동일한 전 클록 ("처리") 사이클내에서, 클록의 제 1 위상에서 판독된 다음, 클록의 제 2 위상에서 기입된다. 따라서, 특정의 처리 사이클중, MAC (128) 등의 제 1 처리부에 의해 이미 처리된 데이터는 제 1 클록 위상중 판독된 다음, 처리 사이클의 나머지 부분 내에 ALU (130) 등의 제 2 처리부에 의해 처리될 수 있다.
또한, 처리 사이클의 제 2 위상중, MAC (128) 에 의해 바로 처리된 새로운 데이터가 동일한 레지스터로 기입되어, 하나의 처리 사이클동안 2 개의 처리부 사이의 완벽한 파이프라인 처리를 가능하게 한다. 다시 말하면, 이러한 동작은 어느 내부 버스에 대하여도 데이터를 이동하지 않고 수행되므로, 버스 경합의 증가를 막는다.
도 2 를 참조하면, 연산중, 명령 인출부 (156) 는 명령 메모리 (152) 로부터, 또는 명령 메모리 (152) 내에서 없으면 외부에 위치한 메모리로부터 2 진 명령을 검색한다. 외부 메모리는 종래 기술에서 잘 알려진 바와 같이, DRAM 및 SRAM 또는 이를 활용한 장치, 자기 또는 광 하드디스크 메모리 또는 공지된 다른 데이터 기억매체 일 수 있다.
본 발명의 실시예에 따르면, 명령은 가변길이형이며, 명령 인출부는 명령의 길이와 각 처리 또는 클록 사이클중 인출되어야 할 추가의 명령량을 결정한다. 또한, 명령은 내부 메모리 및 외부 메모리내의 연속적인 메모리 위치내에 저장된다. 이하, 인출부 (156) 와 메모리 및 외부 메모리 내의 명령 데이터의 동작을 설명한다.
명령 디코더 (158) 는 명령 인출부 (156) 에 의해 검색된 명령을 수신하여, 명령을 데이터 메모리, 레지스터 뱅크, MAC 및 ALU를 포함한 DSP를 구성하는 하나 이상의 하부시스템으로 인가되는 제어신호로 변환한다. 또한, 명령 디코더 (158) 는 수신 명령내에 포함된 즉시 데이터를 라우트하여, 즉시 버스 (Im1, Im2, Im3, 또는 ImALU) 를 통하여 적절한 시스템으로 라우트시킬 수 있다. 즉시 데이터는 전형적으로 데이터 메모리 (102 ∼ 106∏) 내에 저장된 데이터 상에서 연산을 수행하거나, 어드레스를 지정 또는 변경하는 데 사용되는 명령 데이터내에 저장된 산술값이다.
도 2 의 DSP 에 의해 수행되는 연산은 데이터 버스중 하나를 통하여 데이터 메모리로부터 레지스터 위치로 데이터를 로드하는 것을 포함한다. 또한, MAC (128) 또는 ALU (130) 는 레지스터 뱅크 (120) 내의 하나 이상의 레지스터 내에 저장된 데이터에 대하여 연산을 수행할 수 있으며, 그 결과는 전형적으로 레지스터 뱅크 (120) 내의 레지스터로 재기입된다.
전술한 DSP 아키텍쳐는 많은 이점을 제공한다. 예컨데, 3 개의 데이터버스를 사용함으로써 데이터의 파이프라인 처리가 인터럽트 되지 않게 한다. 예를 들어, DSP 에 의해 수행되는 필터링 중, 필터링되어야 할 데이터 (신호 데이터) 는 하나의 데이터 메모리에 저장되며, 데이터로 인가되어야할 계수는 다른 데이터 메모리에 저장된다. 연산의 결과는 전형적으로 피연산자보다 많은 비트수를 요구하므로, 두 개의 좁은 메모리에 신호 데이터와 계수 데이터를 저장하는 것이 바람직하다. 다음, 계수 및 신호 데이터는 레지스터 뱅크 (120) 로 판독되어, MAC 부 (128) 에 의해 곱셈되고, 누산된다. 이러한 연산의 결과는 레지스터 뱅크 (120) 내의 제 2 레지스터에 저장되거나, 입력 데이터가 이미 저장된 레지스터 뱅크로 중복 기입될 수 있다. 어떤 결과라도 전형적으로 제 3 버스 (BUS C) 의 레지스터에서 더 넓은 (메모리 C) 데이터 메모리로 기입된다.
출력 데이터는 제 3 버스를 통하여 제 3 메모리로 기입되고, 입력 데이터 집합은 제 1 및 제 2 데이터 버스를 통하여 제 1 및 제 2 데이터 메모리로부터 판독되므로, 메모리 액세스 충돌 또는 버스 경합이 거의 발생하지 않는다. 따라서, 데이터의 처리는 인터럽트 되지 않고 진행되어, 내부 버스 또는 기타 하부시스템 보다 고속도로 어떤 메모리 시스템 또는 데이터 버스를 클록시킬 필요성을 감소시킨다. 이것은 처리 속도를 유지 또는 증가시키면서도, 전력소비를 감소시킨다.
또한, 인터럽트 없이 DSP를 통하는 데이터를 처리함으로써, 주어진 시간에 다수의 다른 데이터 값들이 DSP 내의 서로 다른 스테이지에서 따로 처리되는 데이터의 파이프라인 처리를 가능하게 한다. 또한, 전술한 바와 같이 병렬 명령의 사용이 병행될 때, 이러한 고 효율의 파이프라인 처리와 연관하여 상당한 처리 유동성을 얻을 수 있으며, 따라서, 높은 다목적성, 효율성을 갖는 파워풀한 DSP 시스템을 제공할 수 있다.
이해해야할 것은, 다중 버스의 사용은 버스 충돌을 줄이는 다양한 추가의 방법으로 DSP 주위로 데이터를 이동시키는 능력을 향상시킨다는 것이다. 예컨데, 나눗셈 되어야 할 데이터가 데이터 버스 C를 통하여 메모리 C 로부터, 메모리 A 및 데이터 버스 A 등의 또 다른 메모리 및 버스에 의해 제공되는 제수와 함께, 입력 데이터로 인가될 수 있다. 그 결과는 나머지 버스 (데이터 버스 B)를 통 하여 나머지 메모리 (메모리 B) 에 저장될 수 있다.
예를 들어, 다중 데이터 버스 및 메모리를 제공함으로써 가능한 연산에서는, MAC 부 (130) 에 의해 누산되어야 할 데이터가 제 1 메모리 및 제 1 버스 (예컨데, 메모리 A 및 데이터 버스 A)를 통하여 제공된다. 일련의 누산 연산이 수행된 후, 그 결과의 데이터가 데이터 버스 (C)를 통하여 메모리 (C) 로 기입될 수 있다. 동시에, 논리적으로 시프트되어야 할 데이터가, 데이터 버스 C 가 MAC 부 (128) 로부터 결과 데이터를 이송하지 않는 처리 사이클 중에, 데이터 버스 (C)를 통하여 메모리 C 로부터 ALU 부 (130) 로 제공되며, 이는 일련의 누산 연산이 수행된 후 그 결과 데이터가 가용화되는 대부분의 시간이 된다. 논리적으로 시프트 된 데이터는 데이터 버스 B를 통하여 메모리 B 로 동시에 기입된다. 따라서, 다중 데이터 버스 및 메모리를, 일반적으로, 특히 다중 처리부와 병행하여 사용함으로써, DSP 내의 데이터 이동 가능성을 더 많이 제공하여 다중 연산을 수행 가능하게 한다.
전술한 바와 같이, 본 발명의 다른 이용예는 다중 처리부, 예컨데, MAC 부 (128) 및 ALU 부 (130) 에 의해 액세스 가능한 레지스터를 사용함으로써 실현된다. 다중 처리부에 의해 액세스 가능한 레지스터는 처리부에 의해 처리되어야 할 데이터가 어떤 내부 데이터 버스도 경유하여 데이터를 이동시키지 않고도, 액세스될 수 있게 한다. 예컨대, 제 1 처리부에 의해 데이터가 레지스터로 기입된 다음, 그 레지스터를 액세스 할 수 있는 제 2 처리부에 의해 더 처리될 수 있다. 이것은 버스 경합과 충돌을 완화시켜 데이터 처리량을 향상시킨다.
또한, 이하 상술되는 바와 같이, 병렬 연산 명령 및 병렬 처리 기능과 병행될 때, 고효율로 데이터를 파이프라인, 다중연산, 및 데이터 처리하는 능력이 더욱 향상된다. 이와 비교하여, 전형적인 파이프라이닝은 일련의 연산의 서로 다른 위상 (즉, 인출, 디코드, 처리)을 스태거링하여, 각 명령의 시작간의 처리시간이 감소된다. 다중연산 파이프라이닝은 데이터가 일련의 다른 연산을 통과하도록 하는 추가의 이점을 제공하며, 여기서 상기 연산은 다른 데이터 집합에 대하여 동시에 수행된다. 이러한 다중 연산 파이프라이닝은 종래의 명령 파이프라이닝에 비해 사이클당 수행되는 명령의 수를 더욱 증가시킨다.
이하, 전술한 아키텍쳐의 시너지 효과를 다음의 처리예를 통하여 나타낸다. 필터링 동작을 예로 들면 (전술한 바와 같은), MAC (26) 에 의해 발생된 결과는, 누산이 수행된 산물의 수가 증가하는 만큼 크기 (값을 나타내는데 사용되는 비트 수 및 절대값의 면에서) 가 증가한다. 결국, 결과는 스케일 되거나 "정규화" 되며, 이는 전형적으로 ALU 부 (130) 에 의한 논리 시프트 연산을 요구한다.
전술한 시스템에서, 스케일링 동작은 필터링의 멀티플라이 및 어큐뮬레이트 연산과 동시에 수행될 수 있다. 상기 동시 처리가 수행되는 처리 사이클중, 처리되지 않은 신호 데이터 및 필터링 계수는 데이터 메모리 (102 및 103) 로부터 판독되어, 레지스터 뱅크 (120) 내의 레지스터 (예컨대, L0h 및 L01) 로 간다. 동시에, MAC 부 (128) 는 상기 레지스터 (L0h 및 L01) 에 미리 저장된 값을 판독하여, 멀티플라이 및 어큐뮬레이트 연산을 수행하며, 그 출력은 제 2 레지스터 (예컨대, L1) 로 기입된다. 또한, 동시에, ALU 부 (130) 는 제 2 레지스터 (L1) 에 미리 저장된 데이터를 판독하여, 스케일 연산을 수행하여, 스케일 된 값을 제 3 레지스터 (예컨대, L2) 로 기입한다. 또한, 동일한 처리 사이클중, 제 3 레지스터 (D0) 에 미리 저장된 값은 버스 C (112)를 사용하여 데이터 메모리 (104) 로 기입된다. 전술한 바에서 알 수 있듯이, 특정한 연산은 수행되는 특정의 작업에 따라 변할 수 있다. 전술한 바에서 알 수 있듯이, 다중연산이 더욱더 고효율로 수행되도록 하는 병렬 명령을 사용함으로써 더욱 더 고효율의 파이프라인 다중명령 연산이 가능하게 된다. 고효율의 병렬 명령은 각 처리 사이클중 파이프라인 되어야할 연산을 다르게 지정할 수 있도록 한다.
전술한 예와 같은, 2 위상 판독-기입 연산을 사용함으로써, 그 처리가 하나의 처리 사이클중에 모두 수행될 수 있으며, 여기서 데이터는 제 1 클록 위상중 각 레지스터로부터 판독되어, 처리부에 의해 처리되고, 제 2 클록 위상중 그 결과는 구 데이터에 대한 레지스터로 기입된다. 이해해야할 것은, 단일 클록 사이클중 이러한 처리의 모든 단계에 동일한 값이 해당되는 것은 아니며, DSP 를 통해 일련의 값들이 파이프라인 되어, 처리가 수행됨에 따라 다음 단계로 각각 이동한다는 것이다.
이하 설명된 바와 같이, 본 발명의 다양한 변형예에 의해 많은 다른 연산이 가능하다. 예를 들어, 보코딩 (vocoding) 은 음성 데이터를 코드화하는 처리이다. 보코딩은 수행되어야 할 많은 다른 형태의 수행 연산을 요구하는데, 그 중 어떤 것은 독립적으로 수행될 수 있으며, 따라서 동시에 수행될 수 있다. 다중 데이터 버스 및 다중 처리부를 사용함으로써 이러한 연산을 수행하는 것이 가능하 게 된다.
분리형의 명령 메모리 및 명령 디코더를 사용함으로써 더욱 더 이점이 제공된다. 예를 들어, 전술한 데이터 처리와 동시에, 명령 인출 (156) 에 의해 명령 메모리 (152) 로부터 명령이 판독되고, 이어서, 명령 디코더 (158) 가 DSP 내의 다른 많은 하부시스템의 연산을 제어하는 제어신호를 발생시킨다. 다시 말하면, 데이터 버스가 명령데이터를 이송할 필요는 없으며, 따라서, 신호 데이터는 명령 데이터로부터 인터럽트 없이 이송 및 처리 될 수 있다. 따라서, 데이터 처리로부터 명령 처리를 분리함으로써 성능이 더욱 더 향상되며, 이는 명령 데이터 이동에 대한 데이터 버스 사이클의 소모 필요성을 제거한다.
도 5 는 본 발명의 일 실시예에 따른 도 2 의 명령 메모리 (152) 의 어드레싱 가능한 메모리 공간의 일부분내의 일련의 가변길이명령의 패킹을 나타낸다. 본 발명의 몇몇 실시예에서, 가변길이명령이 도 2 에 도시된 바와 같이 외부 메모리 시스템내에 저장되어 부가의 메모리 효율성을 실현할 수 있다. 메모리 (275) 의 중간 및 우측 칼럼에 도시된, 32 비트 워드를 지정한 각 어드레스와 함께, 본 실시예의 어드레스가 좌측 컬럼에 도시되었다. 각 데이터 워드의 중간 칼럼은 16 비트 고순위 서브워드를 나타내며, 맨 우측 칼럼은 16 비트 하순위 서브워드를 나타낸다. 본 발명의 바람직한 실시예에 있어서는, 필요한 어드레스 논리의 량을 줄이기 위하여, 고순위 및 하순위의 서브워드는 개별적으로 어드레싱 할 수 있지는 않다.
메모리 (275) 내에서, 가변길이명령 (A∼L) 은 도시된 패킹 형태로 저장된 다. 명령 A 는 어드레스 워드 (0x0000) 에 저장된 제 1 의 2 개의 더블-바이트 (A(1) 및 A(2)) 및 어드레스 (0x0001) 의 고순위 서브워드에 저장된 제 3 의 더블-바이트 (A(3))를 갖는 48 비트 명령이다. 명령 A 에 이은, 명령 B 는 어드레스 (0x0001) 의 하순위 워드에 저장된 제 1 의 더블-바이트 (B(1)) 및 어드레스 (0x0002) 의 고순위 서브워드에 저장된 제 2 의 더블-바이트 (B(2))를 갖는 32 비트 명령이다. 명령 C 는 어드레스 (0x0002) 의 하순위 서브워드에 저장된 제 1 의 유일한 더블-바이트 (C(1))를 갖는 16-비트 명령이다.
명령 A∼C 의 저장위치에서 명백한 바와 같이, 본 발명은 동일한 어드레스 워드내에 다른 명령 부분들을 저장함으로써 일련의 명령을 저장하는데 필요한 메모리 (275) 크기나 양을 줄인다. 예컨대, 명령 A 의 제 3 의 더블-바이트 (A(3)) 는 명령 B 의 제 1 의 더블-바이트 (B(1)) 와 함께 저장된다.
워드 경계를 넘어, 또는 더 자세하게는 메모리 어드레스 공간내에 연속된 위치내에, 가변길이명령을 저장함으로써, 본 발명은 주어진 명령의 수를 저장하는데 요구되는 명령 메모리의 양을 감소시킨다. 명령 메모리의 양을 줄임으로써, 주어진 명령 캐쉬 용량을 DSP 에 부여하는데 필요한 틀 (die) 의 크기와 용량을 감소시킨다. 도 3 에 도시된 바와 같이, 메모리 (275) 내에 가변길이명령 (D∼L) 을 더 위치시킴으로써, 명령의 패킹이 더 표현된다.
이해해야할 것은, 전술한 바와 같이 연속된 위치에 모든 명령을 패킹하는 것은 본 발명의 몇몇 실시예에서는 필요치 않다는 것이다. 예컨데, 본 발명의 다른 실시예에서는 메모리 공간내의 연속된 위치에 명령의 본질적인 부분 (예컨데, 약 90% 이상) 만을 패킹한다. 본 발명의 다른 실시예에서는, 바람직하게도, 명령의 주요 부분 (25 ∼ 50 %) 만이 연속된 메모리 공간내에 패킹된다. 본 발명의 다른 실시예에서는 또 다른 퍼센티지 패킹된 명령을 사용할 수 있다.
또한, 연속된 위치의 사용이 필요치는 않다. 명령은, 명령 데이터의 총량보다 기본적으로 크지 않는 총 메모리 공간내에 쉽게 위치되어야 한다. 이것은 메모리 공간내 인접한 위치에 명령을 위치시킴으로써 얻어지는 것이 바람직하지만, 명령이 의도된 실행 순서로 읽혀질 수 있는 한, 메모리 공간 전체를 통해 혼합배분 (suffled) 될 수 있다. 당업자라면, 메모리 공간의 재매핑 (remapping) 과 같은 이러한 유형의 소정의 혼합배분 (suffling) 은 바람직하지 않은 복잡함을 부가하지 않으며, 본 발명의 연산에 영향을 주지 않는다는 것을 인식할 것이다.
유사하게는, 큰 명령 집합에 대하여 패킹 구조가 채용되도록하는 것이 바람직하다. 예컨대, 적어도 열 개의 명령에 대하여 패킹 구조를 채용하는 것이 본 발명의 몇몇 실시예에서 바람직하다.
또한, 본 발명의 실시예에 사용된 특정의 패킹 구조는 본 발명의 몇몇 다른 실시예에서는 필요치 않다. 예컨데, 본 발명의 몇몇 다른 실시예는 연속된 메모리 위치내에 명령을 가지지 않을 수 있다. 더욱이, 명령은 명령 분리기 코드 (instruction seperator code) 의 사용을 포함하여, 몇몇 소량의 메모리 공간에 의해 분리될 수 있다. 소량의 메모리 공간은 메모리 워드 경계상의 명령 경계를 유지하는데 필요한 메모리 공간량보다 작은 것이 바람직하다. 전술한 패킹은 그 간소함, 완전성 및 효율성으로 인하여, 많은 예에서 선호된다. 일반적으로, 패킹의 완전성과 패킹구조의 복잡함 사이의 트레이드오프의 선택은 본 발명의 각종 실시예에서 다를 수 있다.
또한, 전술한 바와 같이, 본 발명의 몇몇 실시예는 전체 가용한 일련의 명령에 대해서가 아니라, 명령의 일부분에 대하여만 패킹구조를 채용한다. 예컨대, 특정의 작업 또는 서브루틴을 수행하는데 필요한 일련의 명령에 대해서만 명령 패킹이 수행될 수 있다.
주지해야할 것은, 가변길이명령은 요구되는 연산을 요청하는데 필요한 데이터량만을 소모하며, 고효율로 패킹된 명령 저장장치는 가변길이명령의 집합에 의해 소모되는 것과 같도록, 따라서 최소로 총 메모리를 유지하므로, 가변길이명령을 사용하여 고효율로 패킹된 명령 저장장치를 병행시킴으로써, DSP 의 메모리 요구량을 줄일 수 있다는 것이다.
감소된 DSP 크기 및 이에 의한 DSP 가격절감의 이점에 더하여, 고효율로 패킹된 명령 및 가변길이명령은 전술한 아키텍쳐의 다른 특징과 병행될 때 뜻하지 않던 추가의 이점을 제공한다. 예컨데, 명령 메모리의 크기를 줄임으로써, DSP 내의 3 개 데이터 버스의 사용을 위한 추가의 회로 면적이 사용가능하며, 이것은 인터럽트 되지 않고, 고효율로 파이프라인된 데이터 처리 및 DSP 내에서 동시에 다중 연산을 수행하는 능력을 포함한 전술한 이점을 제공한다. 따라서, 조밀하게 패킹된 명령은 다중 버스 아키텍쳐와 병행하여, 추가의 뜻하지 않은 이점을 제공하여, 성능 및 효율의 향상을 가져온다.
메모리 공간의 연속된 위치내에 가변길이명령을 저장하는 능력은 그러한 구 성에 저장된 가변길이명령을 인출하고 처리할 수 있는 DSP를 제공함으로써 가능해 질 수 있다. 도 6 은 본 발명의 일실시예에 따라 명령 메모리 (152) 로부터 명령을 인출할 때 명령 인출부 (156) 의 연산의 흐름도이다. 단계 (200)에서 처리가 시작되며, 단계 (202)에서 제 1 명령 데이터 집합이 명령 메모리 (152) 로부터 판독된다. 본 발명의 실시예에서, 2 개의 32-비트 워드, 또는 64 비트의 명령 데이터가 단계 (202) 에서 검색된다.
단계 (204)에서, 검색된 명령 데이터중 64 비트에 포함된 제 1 명령이 명령 디코더 (158) 에 의해 처리된다. 본 발명의 실시예에서, 명령은 16, 32, 또는 48 비트의 길이일 수 있다. 명령 길이는 이하 상술되는 바와 같이 명령 길이를 나타내는 각 명령에 포함된 일련의 헤더 비트에 의해 결정된다. 분명하게는, 2 개의 명령의 구분하여 분리하는 코드의 사용, 또는 이어 오는 몇몇 명령 집합의 길이를 지정하도록 하는 수퍼 헤더 명령의 사용을 포함한, 명령 길이를 지정하기 위한 각종 다른 방법이 있다. 헤더 비트의 사용은, 명령 길이 정보가 명령에 근접하게 유지되어, 명령 처리에 관한 상태 정보를 저장 또는 유지할 필요를 줄이므로, 몇몇 예에서 선호된다.
검색된 명령 데이터의 64 비트내에 포함된 제 1 명령이 처리된 후, 단계 206에서, 48 비트 또는 그 이상의 처리되지 않은 명령 데이터가 64 비트의 검색된 명령 데이터에 남아있는지 결정된다. 48 비트 또는 그 이상의 처리되지 않은 명령 데이터가 남아있다면, 나머지 48 비트의 처리되지 않은 데이터 내에 포함된 다음 명령이 단계 204에서 다시 처리된다.
단계 (206)에서, 48 비트 이하의 처리되지 않은 데이터 명령이 검색된 명령 데이터에 남아있다면, 명령 메모리 (152) 로부터 추가의 명령 데이터가 로드된다. 추가의 명령을 로드하기 위한 다양한 방법이 고려된다. 본 발명의 실시예에서는, 명령 메모리로부터 충분한 추가의 명령 데이터가 로드되어, 명령 인출부에 저장된 처리되지 않는 데이터 량을 48 비트로 리턴한다. 48 비트의 처리되지 않은 데이터가 명령 인출부내에 저장되도록 함으로써, 적어도 하나의 완전한 명령이 명령 디코더 (158) 에서 사용가능 하도록 보장한다.
본 발명의 바람직한 실시예에서, 명령 인출 부는 처리된 특정 양의 데이타에 따라서 48 비트 미만의 처리되지 않은 데이타가 남아 있을 때, 가변량의 데이타를 검색한다. 특히, 처리된 데이타의 양이 데이타 워드 (32 비트) 와 같거나 크다면, 새로운 명령 데이타의 추가적인 데이타 워드 (32 비트) 가 검색된다. 만약, 미리 처리된 데이타의 양이 2 개의 데이타 워드 (64) 비트와 같거나 크면, 2 개의 새로운 데이타 워드가 명령 인출 부에 의해서 검색된다.
처리된 데이타의 워드 수에 기초하여 검색된 데이타의 양을 결정하는 것은, 그것이 충분한 양의 처리되지 않은 데이타를 명령 디코더 (158) 에 유용하도록 하는 한편, 더 효율적인 워드-길이 (word-length) 접근을 명령 메모리를 구성하는 메모리 뱅크에 허용하기 때문에, 바람직한 것이다. 일단, 추가적인 처리되지 않은 명령 데이타가 단계 (206) 에서 검색되면, 다음 명령이 현재 가용한 처리되지 않은 명령 데이타 전체 내에서 처리된다.
도 7 은 본 발명의 일실시예에 따라 구성된 명령 인출 부 (156) 및 명령 메 모리 (152) 의 블록도이다. 명령 메모리 (152) 는 짝수 메모리 뱅크 (302; RAM0) 및 홀수 메모리 뱅크 (300; RAM1) 으로 구성되며, 이들 각각은 32 비트 데이타 워드를 판독하고 기입한다. 메모리 뱅크는 홀수와 짝수로 라벨링되는데, 이것은 그 양자 모두가 동일한 어드레스 공간 내에서 어드레싱되지만 짝수 어드레스는 짝수 메모리 뱅크 (302) 로 향하고 홀수 어드레스는 홀수 메모리 뱅크 (300) 로 향하기 때문이다.
8, 16, 24, 48 및 64 비트 워드를 포함한 다른 워드 사이즈를 판독하고 기입하는 메모리 뱅크는 본 발명의 또다른 실시예에서 사용될 수 있다. 추가적으로 다른 수의 메모리 뱅크가, 1 -8 메모리 뱅크를 포함해서, 사용될 수 있다. 그러나, 32 비트 워드로 된 2 개의 메모리 뱅크의 사용이 바람직한데, 이것은 전체적인 복잡성을 감소시키는 한편, 명령 데이타가 제어하기 쉬운 양으로 어드레싱되도록 허용하기때문이다.
제어 논리 (304) 는 데이타 워드가 메모리 뱅크 (300 및 302) 로부터 명령 레지스터 (106 및 107) 로 판독되게 한다. 판독된 특정한 기억 장소가 어드레스 선 (310 및 314) 에 의해 특정되고, 명령의 판독이 이네이블 선 (enable lines; 332, 315, 316 및 318) 에 의해 제어된다. 명령 레지스터 (306 및 307) 의 32 비트 출력은 16 비트 부분으로 로테이터 (308) 의 입력 (A, B, C, 및 D) 으로 인가된다. 로테이터 (308) 는 48 비트의 명령 데이타 (324) 를 출력한다. 48 비트의 명령 데이타 (324) 는, 이하에서 더 자세히 설명하는 바와 같이, 각 입력 세트가 16 비트를 포함하고 있는 4 개의 입력(A, B, C 및 D) 중의 3 개 입력 (3:4) 으로 구성된다.
동작하는 동안, 제어 논리 (304) 는 도 5 를 참조하여 설명한 방법에 따라 명령 메모리 뱅크 (300 및 302) 로부터 명령 데이타를 로드 (load) 한다. 특히, 제어 논리 (304) 는 우선, 홀수 메모리 뱅크 (302) 및 짝수 메모리 뱅크 (300) 양자 모두로부터의 32 비트 데이타 워드를 판독함으로써 64 비트의 처리되지 않은 명령 데이타 전체를 명령 레지스터 (306 및 307) 로 로드한다. 16 비트 명령이 처리된다면, 명령 레지스터 (306 및 307) 가 아직도 48 비트의 처리되지않은 명령 데이타를 포함하기 때문에, 새로운 데이타는 로드되지 않는다. 32 비트 명령이 처리된다면, 48 비트 미만의 처리되지 않은 명령 데이타가 남아있기 때문에, 명령 레지스터 (306) 는 32 비트 워드의 추가적인 명령 데이타로 로드된다. 일단 다시, 32 비트 명령 워드를 로드하는 것은, 16 비트의 처리되지 않은 것은 레이스터 (307) 로, 다음의 32 비트는 레지스터 (306) 로 위치시켜면서, 48 비트의 처리되지 않은 명령 데이타를 레지스터 (306 및 307) 에 위치시킨다.
그 다음, 48 비트 명령이 처리되면, 처리되지 않은 명령 데이타는 남아있지 않게 되어, 레지스터 (306 및 307) 양자 모두는 32 비트 워드의 명령 데이타로 로드되며, 그것은 64 비트의 처리되지 않은 명령 데이타이며, 명령 데이타의 48 비트보다 더 큰 것이다. 64 비트의 명령 데이타 모두를 로드하는 것이 특별히 필요한 것이 아니지만, 그것은 유용한데, 이유는 본 산업 분야에서 일반적인 2 개의 32 비트 워드 명령 메모리 및 레지스터의 사용을 허용하기 때문이다. 충분한 양의 처리되지 않은 명령 데이타를 유지하는 다른 방법의 사용은 본 발명의 양상을 사용 하는 것과 양립한다.
일단, 64 비트의 새로운 명령 데이타가 명령 레지스터 (306 및 307) 로 로드되면, 제어 논리 (304) 는 또한, 1) 명령 어드레스 공간 내에서의 명령 데이타의 위치, 2) 처리된 명령 데이타의 세트, 및 3) 이전의 처리된 명령의 길이에 기초하여, 입력 (A, B, C 및 D) 상에서 검색된 다음 48 비트의 명령 데이타를 출력하는 제어 신호 (320) 를 사용하여 로테이터 (308) 를 구성한다. 특히, 로테이터 (308) 는 다음 인 라인 비트 (the next-in-line) 의 명령 데이타를 가장 중요한, 또는 맨 왼쪽의, 위치에 놓아서, 처리될 다음 인 라인의 48 비트의 명령 데이타 세트를 출력하도록 구성된다.
예를 들어, 첫째의 2 개 워드, 또는 64 비트의 명령 데이타를 레지스터 (306 및 307) 로 로딩할 때, 짝수 명령 레지스터 (307) 에서의 명령 데이타가 다음 인 라인이면, 로데이터 (308) 의 출력은 입력 (A, B 및 C (ABC)) 상에 이 순서대로 검색된 명령 데이타로 구성된다. 홀수 명령 레지스터 (306) 내의 명령 데이타가 다음 인 라인이면, 로테이터 (308) 는 입력 (C, D 및 A (CDA)) 상에 이 순서대로 검색된 명령 데이타를 출력하도록 구성된다.
명령이 처리됨에 따라, 전술한 바와 같이, 새로운 명령 데이타가 데이타 레지스터 (306 및 307) 로 로드되고, 로테이터 (307) 는 이전에 처리된 명령의 사이즈에 기초하여 출력 (324) 상에 다음 인 라인 명령 데이타를 이어서 출력하도록 구성된다. 이전에 처리된 명령의 사이즈는 출력 (324) 의 처음 5 비트의 복사에 해당되는 헤더 데이타 (322) 에 의해서 제어 논리 (304) 로 전달된다. 앞에서 언급한 바와 같이, 명령 길이가 명령 데이타로부터 직접 결정되는 것을 허용하기 때문에 처음 5 비트의 사용이 바람직하다하더라도, 명령 길이를 제어 논리 (304) 로 특정화하기 위한 어떠한 소정의 방법도 본 발명의 실시와 양립한다.
본 발명의 일 실시예에서, 이전의 명령의 사이즈는 표 1 에 따라 2 비트의 상태 정보 (I1 및 I0) 로 코딩된다.
I1 I0 명령 크기
0 0 브랜치/스톨 (stall)/리세트
0 1 16 비트
1 0 32 비트
1 1 48 비트

전 명령 포맷 (full instruction format)
이에 더하여, 로테이터 (308) 의 구성은, 표 2 에 표시된 바와 같이 코딩된 제어 (320) 을 이루는 2 개의 선택 비트 (S1 및 S0) 에 의해서 제어된다.
S1 S0 로테이터 출력
0 0 ABC
0 1 BCD
1 0 CDA
1 1 DAB

로테이터 선택 제어 비트 및 출력
분명하게 알 수 있는 바와 같이, S1 및 S0 의 상태가 증가함에 따라, 로테이터 (308) 의 출력은 좌측-회전 (left-rotated), 또는 배럴 시프트된다 (barrel- shift). 좌측-회전은 각각의 입력 그룹 (A, B, C 및 D) 가 출력 상에 좌측으로 시프트되도록 하는 것이다. 출력의 맨 좌측 위치에 있는 입력 그룹은 제거된다. 이전에 출력에서 표명되지 않은 입력 그룹은 다음에 맨 우측 위치에서 출력된다.
S1 및 S1 의 상태와 그에 따른 로테이터 (308) 의 구성은 다양한 길이의 명령에 응답하여 변하는 양에 의해서 갱신되거나 회전된다. 특히, 처리되는 명령의 길이를 나타내는 값 (I1 I0) 은 제어 비트 (S1 및 S0) 에 더해지고, 어떤 실행 값 (carryout value) 도 버려진다 (discard). 즉,
S1(t+1),S0 (t+1) = S1(t),S0 (t) + I0, I1
브랜치 또는 리세트 조건에 대해서, S1 및 S0 의 값은 프로세싱이 브랜치되거나 리세트되는 특정 명령에 기초하여 리세트되어, 수학식 1 이 이용되지 않는다. 브랜치, 리세트 및 스톨 명령을 프로세싱하기 위한 다양한 방법들이 본 기술분야에서 잘 알려져 있고, 이 프로세싱은 본 발명과 특별히 관련되지 않기때문에 더이상 설명하지 않겠다.
예시적인 프로세싱에서, 로테이터 (308) 는 ABC 의 출력과 00 에서의 신호 비트 (S1 및 S0) 로 시작된다. 16 비트 명령이 수신되면, I1 및 I0 의 해당하는 명령 길이 비트가 S1 및 S0 에 더해져서, 01 의 S1 및 S0 을 산출하고, 이것은 BCD 의 로테이터 (308) 로부터의 출력 (324) 에 해당한다. BCD 의 출력은 처음 16 비트의 명령 데이타 (입력 A) 가 처리된 후에 다음 인 라인 세트의 명령이 된다.
다음 명령이 32 비트 명령이면, 명령 길이 (I1 및 I0) 는 01 인 현재 S1 및 S2 상태에 더해져서, 11 을 산출한다. 결과적인 출력은 DAB 가 되고, 이것은 처리되지 않은 다음 48 비트의 명령 데이타에 해당하여, 입력 D 상에 수신된 다음 인 라인 명령 데이타가 가장 중요한, 또는 맨 좌측의 위치에 위치하도록 구성된다. 그 이전에, 입력 (B 및 C) 로부터 명령 데이타가 이미 처리된 상태이다. 이전의 32 비트 명령의 처리동안에 새로운 데이타가 전술한 명령 데이타를 로딩하는 프로세스에 따라서 명령 레지스터 (307) 로 로드된다는 것에 유의하여야 한다.
48 비트 명령이 처리되면, 선택 비트 (S1 및 S0) 의 상태는 11 의 명령 길이 (I0 및 I1) 에 의해서 증가되어, 10 의 S1 및 S0 을 산출하고, 이것은 로테이터 (308) 를 출력 (CDA) 로 구성한다. CDA 의 출력은 처리될 다음 48 비트의 명령 데이타에 해당하고 다음 인 라인 비트는 가장 중요한 위치로 배치된다. 그 전에, 입력 (D, A 및 B) 상의 명령 데이타가 처리되었다. 이전의 명령이 처리되는 동안에 새로운 명령 데이타가 레지스터 (306) 으로 판독된다는 것에 또한번 다시 유의하여야 한다. 관련된 명령 데이타 프로세싱을 수행하는 전술한 논리는 실시에의 목적으로 제공된 것이며, 전술한 명령 데이타 프로세싱을 수행하는 다른 논리의 사용은 분명하고 본 발명의 사용과 양립한다.
따라서, 실시예에서, 제어 논리는 로테이터 (308) 를 명령 레지스터 (306 및 307) 로부터 수신된 다음 48 비트의 명령 데이타를 출력하도록 구성되어, 처리될 다음 명령 비트가 맨 좌측 위치에 위치하게 된다. 처리될 다음 세트의 명령 데이타가 확인될 수 있는 소정의 배치로 명령 데이타를 명령 프로세싱 부 (158) 에 제공하는 것은 또한 본 발명의 사용과 양립한다는 사실을 본 기술 분야의 당업자들은 알수 있다.
전술한 바와 같이, 처리되지 않은 다음 48 비트의 명령 데이타를 출력하는 것에 더하여, 로테이터 (308) 는 또한 처리될 다음 명령의 사이즈를 제어 논리 (304) 에 지시한다. 특히, 로테이터 (308) 는 처리될 다음 5 비트의 명령 데이타의 부가적인 복사를 논리 제어 (304) 에 출력한다. 본 발명의 바람직한 실시예에서, 명령의 길이는 명령의 처음 5 비트에 의해서 특정된다.
도 8 은 본 발명의 일 실시예에 따라 구성될 때의 MAC 부 (128) 의 블록도이다. 시프트 라이트 (shift right; 900) 는 누산될 40 비트 입력을 수신하고 0 또는 16 비트만큼 값을 시프트하여, 출력이 멀티플렉서 (901) 의 하나의 입력으로 인가된다. 멀티플렉서 (901) 의 다른 입력은 0 ×800 값을 수신한다. 곱셈기 (멀티플라이어; 902) 는 각 입력에 대한 총 17 비트에 대해 명령 디코더 (158) 로부터의 신호 비트와 함께 곱하여질 2 개의 16 비트 값을 수신한다.
곱셈기 (902) 의 출력은 시프트 레프트 (shift left; 904) 에 의해 수신되는데, 이것은 명령 디코더 (158) 에 의해서 특정되는 바와 같이, 0, 1, 2 또는 3 비트만큼 출력을 시프트한다. 가산회로/감산회로 (906) 는 명령 디코더 (158) 에 의해 지시되는 대로 2 개의 입력 값의 가산 또는 감산을 수행하고 그 결과를 출력하며, 이것은 본 발명의 일례에서의 레지스터 뱅크 입력 포트 (PI4) 로 인가된다.
본 발명의 실시예에서 MAC 부 (128) 내의 시프트 라이트 16 유닛 (900) 의 사용은 다른 형태의 MAC 부에 대한 추가적인 이용을 제공한다. 더 자세하게 말해서, 시프트 라이트 16 유닛 (900) 의 사용은 감소된 수의 클럭 사이클 에서의 2 배 정밀도 동작을 수행하는 것을 용이하게 한다. 예를 들어, 32 비트 수 (A) 가 16 비트 수 (B) 와 곱해지는 2 배 정밀도 동작을 수행하기 위해서, 32 비트 수의 아래 16 비트 (Al) 가 먼저 제 1 클럭 사이클 동안에 16 비트 수 (B) 와 곱해져서, 레지스터 뱅크 (120) 내에 저장된 중간값 (I) 을 산출한다. 제 2 클럭 사이클 동안에, 중간값 (I) 은 시프트 라이트 16 유닛 (900) 으로 입력되고 16 비트만큼 우측으로 시프트된다. 이에 더하여, 16 비트 수 (B) 와 32 비트 수 (A) 의 위 16 비트 (Ah) 가 곱해지고, 그 결과는 시프트 라이트 16 유닛 (900) 으로부터온 우측으로 시프트된 중간값 (I) 과 가산된다. 따라서, 2 배 정밀도 곱하기는 3 이라기 보다 2 개의 클럭 사이클에서 수행된다. 일반적으로, 많은 2 배 정밀도 동작은 하나 또는 그 이상의 변수가 다른 변수에 대해 시프트되도록 요구하며, 멀티플라이 또는 어큐뮬레이트 동작의 하나로서 동일한 클럭 사이클동안에 수행되는 시프팅 단계를 허용하는 것은 2 배 정밀도 동작을 수행하는 데 필요한 사이클의 수를 감소시킨다.
보통, 3 개 클럭 사이클이 요구되는데, 이는 제 1 곱하기 동작, 시프트 동작, 및 제 2 곱하기 동작 각각은 전형적으로 클럭 사이클이 요구되기 때문이다. 따라서, 시프트 회로의 사용은 2 배 정밀도 곱하기를 수행하는 데 요구되는 클럭의 수를 감소시킨다. 다른 크기의 피연산자 (operands) 에 관련된 다른 2 배 정밀도 동작은 또한, 시프트 라이트 부 (900) 의 사용에 의해서 용이하게 된다.
Ⅱ. 명령 구성 (INSTRUCTION CONFIGURATION)
A. 개관.
도 9 는 본 발명의 실시예에서 사용된 명령 체계를 설명하는 블록도이다. 블록 (402) 은 DSP 의 동작을 제어하는 16, 32 또는 48 비트로 이루어진 가변 길이 전 명령 (variable length full instruction)을 나타낸다. 가변 길이 명령은 블록 (403) 에 나타난 바와 같이, 메모리 무브 및 프로그램 플로우 (memory move and program flow) MMPE 와 일반 명령 프래그먼트를 포함하는 명령 프래그먼트로 구성된다. 본 발명의 실시예에서 사용된 일반 명령 프래그먼트는 MAC8, MAC16, ALU8, ALU16, DMOV16, DMOV24 및 DL40 명령 프래그먼트를 포함한다. MMPF 명령 프래그먼트는 OneMem11, TwoMem19, TwoMov19 및 TreeMem24 명령 프로그래먼트를 포함한다. MMPF 명령 프래그먼트는 블록 (406) 에 나타난 MMPF 명령 서브프래그먼트로 구성된다. MMPF 명령 서브프래그먼트는 LD(A), LD(B), ST(A), ST(B), LS(C), DMOVA, DMOVB, 및 PF8 을 포함한다. 다양한 전 명령, 명령 프래그먼트 및 명령 서브프래그먼트는 아래에서 더 자세히 설명되어있다.
B. 전 명령 (Full Instruction)
본 발명의 바람직한 실시예에서, DSP 는 16, 32 및 48 비트의 길이를 갖는 전 명령을 사용하여 제어된다. 전 명령은 하나 또는 그 이상의 명령 프래그먼트를 조합하여 형성된다. 전 명령은 명령 메모리 (152) 내에서의 연속적인 저장 및 DSP 에 의한 프로세싱을 감안하도록 구성된다. 전 명령의 포맷 (format) 및 구성은 아래 설명되어있고, 그 다음에 명령 프래그먼트의 포맷과 구성이 뒤따른다. 동작동안, DSP 는 전 명령의 각각의 클럭 사이클을 처리한다. 따라서, 곱하기 동작은, 개별적인 동작이 개별적인 세트의 선택된 명령 프래그먼트에 의해 결정되면서, 각각의 전 명령의 프로세싱동안에 수행될 수 있다.
본 발명의 실시예에서 사용된 3 개의 전 명령의 포맷은 표 3 에 나타나 있다.
43 0
헤더 43명령 비트

27 0
해더 27명령 비트

11 0
헤더 11명령 비트

전 명령 포맷
각각의 전 명령에 사용된 5 비트 헤더는 전 명령의 길이를 지시하고, 어떤 추가적인 포맷은 전체 포맷의 내용에 관한 것이다. 본 발명의 실시예에서 사용된 헤더의 포맷은 표 4 에 제공되어 있다.
5비트 헤더 명령 길이
0 0 0 0 X 16비트 명령 (2 타입;2 types)
0 0 0 1 X 32비트 명령 (2 타입)
0 0 1 X X 48비트 명령 (4 타입)
0 1 X X X 32비트 명령 (8 타입)
1 X X X X 48비트 명령 (16 타입)

전 명령 헤더 포맷
각각의 전 명령 (16, 32 및 48 비트 길이) 은 하나 또는 그 이상의 명령 프래그먼트를 포함한다. 표 5 는 본 발명의 실시예에서의 이용 가능한 명령 프래그먼트의 목록을 제공한다. 명령 프래그먼트의 포맷 및 동작의 더 자세한 설명은 전 명령에 대한 논의 후에 제공된다.
필드(Field) 설명 폭(Width)
MAC8* 8비트 MAC 동작 8
ALU8* 8비트 ALU 동작 8
OneMem11* 1 메모리 동작 11
MAC16* 16비트 MAC 동작 16
ALU16* 16비트 ALU 동작 16
DMOV16* 조건부 Reg 무브(Conditional Reg Move)/Inport/Outport 16
TwoMem19 2 메모리 동작 19
TwoMov19* 2 메모리/데이타 무브 동작 19
DMOV24 로드(Load)/Store Direct/Load Addr/Jump 24
TreeMem27 3 메모리 동작 27
DL40 듀얼 로드(Dual-Load) 40

* 는 필드가 어떤 비트 패턴을 사용하여 놉 (nop'ed; 무연산) 될 수 있다는 것을 지시한다.
표 5. 명령 프래그먼트
표 6 - 8 은 본 발명의 실시예에 따른 48, 32 및 16 비트 전 명령 내에서 사용될 수 있는 명령 프래그먼트의 다양한 조합을 제공한다. 명령 프래그먼트의 다른 조합이 본 발명의 사용 및 동작과 양립하지만, 여기에 개시된 조합의 일정한 특징들은 아래 설명하고 있는 바와 같이 바람직하다. 이에 더하여, 전 명령의 전부 또는 일부가 "예약된 (reserved)" 이라고 나타나 있는 곳에서는, 설명된 실시예에서 개별적인 명령 조합이 특정되거나 사용되지 않았지만, 이러한 전 명령 조합의 추후의 사용이 예상된다.
표 6 은 본 발명의 실시예에 따라 수행될 때 16비트 전 명령 포맷을 제공한다. 전 명령은 11개의 명령 비트가 뒤따르는 5개의 비트 헤더로 구성된다.
Figure 112006021538166-pct00001

16비트 전 명령 포맷
주 : 16비트 NOP 는 MAC8 의 NOP 를 이용하여 얻어진다.
헤더 비트는 명령의 타입에 대한 일부 정보 뿐만 아니라 명령 길이를 나타낸다. 00000 의 헤더용으로, 3 개의 최하위 테일 비트는 수행되는 동작을 더 특정화하는 데 사용된다. 특히, 000 의 테일 비트는 나머지 8개 비트가 MAC8 명령 프래그먼트를 포함하는 것을 나타낸다. 001 의 테일 비트는 나머지 8개 비트가 ALU8 명령 프래그먼트를 포함하는 것을 나타낸다. 다른 테일 비트 조합을 위하여, 어떠한 명령도 특정화되지 않는다. 가장 짧은 명령은 저장하기에 최소량의 메모리를 요구하기에, 상기한 16비트 전 명령 사용은 특정한 집합의 동작을 수행하는 데 필요한 명령 메모리 양을 감소시킨다. 따라서, DSP 의 전체 크기 및 이에 따른 비용 및 전력 소모가 또한 감소된다.
16비트 명령은 특히 한 개 또는 감소된 개수의 동작이 수행될 수 있는 상태일 때 사용된다. 특히, 한 개의 동작만을 특정화하기에 필요한 명령 크기가 감소될 수 있고, 따라서 절반 워드 사용, 또는 한 개 동작을 수행하기 위한 16비트 명령이 감소될 수 있다. 또한, 16비트 명령은, 수행될 것으로 예상되는 거의 모든 동작을 포함하는 MAC, ALU, 메모리 이동 또는 프로그램 흐름 동작용으로 사용될 수 있다.
표 7 은 본 발명의 실시예에 따라 구성될 때 명령 프래그먼트 조합 및 32 비트 전 명령의 관련된 포맷을 도시한다.
Figure 112006021538166-pct00002

32비트 전 명령 포맷
상기한 바와 같이, 5개의 헤더 비트는 명령 프래그먼트의 특정한 조합 뿐만 아니라 전 명령 길이를 나타낸다. 예를 들어, 00010 헤더는 나머지 27 명령 비트가 ThreeMem27 명령 프래그먼트를 포함하는 것을 나타내며, 00011 헤더는 나머지 27 명령 비트가 TwoMem19 명령 프래그먼트가 뒤따르는 ALU8 명령 프래그먼트를 포함하는 것을 나타낸다.
01111 헤더용으로, 최하위 테일 비트는 명령 프래그먼트의 조합을 또한 나타낸다. 예를 들어, 0 의 최하위 테일 비트용으로, 그 다음 2개의 최하위 비트는 나머지 24비트가 DMOV24, MAC8 이 뒤따르는 ALU16, 또는 ALU8 명령 프래그먼트가 뒤따르는 MAC16 를 포함하는지 여부를 나타낸다. 다른 테일 비트 상태, 1의 최하위 테일 비트는 예약된 조합을 특정화한다.
32개의 비트 명령으로 인하여 대부분의 수행 동작이 동시에 수행될 수 있고, 이것은 명령 크기를 줄이는 한편 파이프라인을 용이하게 한다. 예를 들어, 필터링과 같은 응용을 위하여 2개의 인출 동작 및 멀티플라이/어큐뮬레이트 동작을 수행하는 것은 흔한 일이다. 32비트 명령으로 인하여 상기와 같은 동작이 필 (fill) 48비트 명령 공간을 필요로 하지 않고 파이프라인 형식으로 수행될 수 있다.
또한, 32비트 명령으로 인하여 가장 큰 명령 크기를 사용하지 않고도 MAC 및 ALU 동작이 프로그램 점프 및 콜 (call) 동작뿐만 아니라 동시에 수행될 수 있다.
표 8 은 본 발명의 실시예에 따라 수행될 때 명령 프래그먼트 조합 및 48 비트 전 명령용 포맷을 나타낸다.
Figure 112006021538166-pct00003

48비트 전 명령 포맷
5개의 헤더 비트는 특정한 명령 프래그먼트 조합뿐만 아니라 명령 길이를 특정화한다. 예를 들어, 00100 헤더 비트는 43개의 나머지 명령 비트가 DMOV24, MAC8, OneMem11 명령 프래그먼트로 구성된 것을 나타낸다. 10011 헤더 비트는 43개의 나머지 비트가 ALU16, MAC8, 및 TwoMem19 명령 프래그먼트로 구성된 것을 나타낸다.
11111 헤더 비트용으로, 3개의 최하위 테일 비트는 나머지 명령 비트에 포함된 명령 프래그먼트를 또한 나타낸다. 000 테일 비트는 나머지 40 명령 비트가 MAC16 및 DMOV24 명령 프래그먼트를 포함하는 것을 나타낸다. 001 테일 비트는 나머지 40 개의 명령 비트가 MAC8, ALU8, 및 DMOV24 명령 프래그먼트를 포함하는 것을 나타낸다. 110 테일 비트는 나머지 40개 명령 비트가 DL40 명령 프래그먼트를 포함하는 것을 나타낸다.
48비트 전 명령내에 제공되는 명령 프래그먼트 조합으로 인하여 많은 동작이 동시에 수행될 수 있고 따라서 직렬로 수행되는 것보다 빠르게 수행될 수 있다. 예를 들어, 여러 개의 48비트 전 명령으로 인하여 ALU 동작, MAC 동작 및 메모리 동작이 동시에 수행될 수 있다. 메모리 동작은 로드, 저장, 및 데이터 이동 동작을 포함하며, 흔히 다중 메모리 위치가 한번에 액세스될 수 있게 한다.
48비트 명령으로 인하여 승산 동작이 ALU 동작, 데이터 인출, 및 프로그램 흐름 동작과 함께 파이프라인 형식으로 수행될 수 있다. 이것은, (시프팅과 같은) ALU 동작이 뒤따르는 MAC 동작을 수행함으로써 흔히 수행되는 스케일링 동작과 조합될 때 필터링에 유용할 수 있다. MAC 및 ALU 를 사용하는 다른 응용에는 3개 이상의 데이터 스트림을 조합하는 것이 포함된다. 특히 3개의 버스 아키텍처를 사용시 48비트 명령은 이러한 경우에 파이프라인 동작을 용이하게 한다.
이것은 단일 48비트 전 명령 내지 5 개 (MAC, ALU, FETCH1, FETCH2, 및 STORE) 로 수행될 수 있는 동작 수를 효율적으로 증가시킨다. DSP 에서 다중 명령을 동시에 수행할 수 있는 기능은, 일반적으로, DSP 내부의 다양한 처리 시스템을 접속하기 위한 다중 내부 버스와 함께 DSP 를 사용함으로써 더 향상된다. 상이한 세트의 데이터가 상이한 버스를 사용하여 동시에 이동 및 액세스될 수도 있다.
수행될 수 있는 동작 수에 의거하여 명령 길이를 변경함으로써 명령 메모리가 사용되는 효율을 더 증가시킨다. 어떤 특정한 태스크는 다중 동작이 동시에 수행될 수 있는 주기, 및 보다 적은, 또는 한개의, 동작이 수행될 수 있는 다른 주기를 갖는다. 동시에 수행될 수 있는 동작 수에 따라 명령 길이를 조절함으로써, 명령 메모리 양이 감소된다.
상기한 방법이 타이트한 (tight) 명령 패킹과 결합되어 함께 사용될 때, 필요한 명령 메모리가 더 감소된다. 가변 길이 명령 또는 타이트하게 패킹된 명령 또는 두 명령을 함께 사용함으로써 다중 버스 아키텍처 및 다중 액세스 레지스터 뱅크 사용이 용이해지며, 보다 많은 회로 영역이 이용가능해진다. 따라서, 이러한 본 발명의 태양은 향상된 성능 및 향상된 효율을 동시에 제공하기 위해 결합된다.
C. 명령 프래그먼트
상기한 바와 같이, 전 명령은 한 개 또는 소정의 방식으로 그룹화된 그 이상의 명령 프래그먼트의 세트로 구성된다. 본 발명의 실시예에서 이용가능한 명령 프래그먼트 세트가 표 5 에 도시된다. 본 발명의 실시예에서 제공된 전 명령을 사용하여 이용가능한 조합 및 명령 프래그먼트는 동작 세트가 결합되어 함께 수행될 수 있도록 설계되어 주어진 동작을 수행하는 데 필요한 명령 메모리의 양이 감소된다. 본 발명의 실시예에서 사용되는 다양한 명령 프래그먼트의 포맷 및 동작이 아래에 뒤따른다.
C.1 명령 프래그먼트 명명법
다음의 명령 프래그먼트 및 서브프래그먼트에서, 다음의 약어는 표 9 및 10 에 도시된 레지스터를 언급하는 데 사용된다. 또한, 본 발명의 실시예에서 사용되는 특정한 비트 코드 (매핑) 는 좌측에 도시된다.
Figure 112006021538166-pct00004

명령 프래그먼트 명명법 및 코드
주 : L3 는 조건문을 갖지 않는다.
Figure 112006021538166-pct00005

명령 프래그먼트 명명법 및 코드
regA 는 A 메모리에 저장될 수 있는/A 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
regB 는 B 메모리에 저장될 수 있는/B 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
regC 는 C 메모리에 저장될 수 있는/C 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
C.2 명령 프래그먼트 설명
일련의 명령 프래그먼트들은 MAC8과 MAC16의 2가지 유형의 MAC 명령 프래그먼트들을 포함한다. MAC8명령 프래그먼트들은 부호화된-부호화되지 않은 것과 부호화-부호화된 곱셈형을 지원하고 그 결과는 어큐뮬레이터 (L0 또는 L1)에 저장된다. MAC8 명령 프래그먼트는 16 비트 전(full) 명령을 이용하는 MAC 동작을 허용하고, MAC 동작들을 요하는 많은 병렬 명령 조합들이 48비트 명령 대신에 32비트 명령으로 인코드되도록 함으로써 명령 RAM을 절약한다. 일반적으로, MAC8 명령들에 의해 수행되는 절차는 다음 수학식을 따른다.
Figure 112006021538166-pct00006

수학식 2 에서 나타난 바와 같이, MAC8 명령 프래그먼트는 레지스터 (L0 는 L1) 의 내용이 레지스터 (R0, R2, R4 및 R6) 와 (R0, R1, R3 및 R5) 의 곱으로 합계가 되도록 하거나 레지스터들의 곱으로 직접 설정되도록 한다. 게다가, 부호화되거나 부호화되지 않은 곱셈들이 명기될 수 있다. MAC 연산이 MAC8 명령을 이용하여 수행될 수 있는 레지스터들의 수를 제한함으로써, 명령의 길이는 8비트로 유지될 수 있어 더 짧은 8비트 명령 프래그먼트를 이용하여 MAC 연산이 수행되도록 한다.
MAC8 명령에 의해 수행된 특정 동작이 표 11 에 설명된 명령을 구성하는 8비트의 값에 의해 구체화된다.
Figure 112006021538166-pct00007

MAC8 명령 프래그먼트 포맷
SU/SS 는 부호화된 또는 부호화되지 않은 곱셈을 명기한다. MAC8 명령 프래그먼트 내의 다양한 동작들을 명기하는 코드들이 표 12 에 나열되어 있다.
Figure 112006021538166-pct00008

MAC8 명령 프래그먼트 코드
그러므로, 0×99의 MAC8 명령은 레지스터 R0 와 R3 의 부호화되지 않은 곱과 함께 레지스터 (L0) 의 내용의 합을 레지스터 L0 로 이동시킨다.
MAC16 명령 프래그먼트는 추가의 레지스터들이 멀티플라이-어큐뮬레이트 동작에서 이용되도록 함으로써 부가적인 유연성을 제공한다. 수학식 3 은 MAC16 명령 프래그먼트를 이용하여 수행될 수 있는 동작들을 설명한다.
Figure 112006021538166-pct00009

예컨대, 모든 어큐뮬레이터 (L0-L3) 는 비록 어큐뮬레이터들의 모든 조합들이 멀티플라이-어큐뮬레이터 명령들에서 허용되지 않을지라도 수신지로 이용될 수 있다. CPS 필드는 코프로세서가 특정 동작을 병렬로 수행해야 함을 신호한다. MAC16 명령에 의해 수행된 특정 동작은 표 13 에 나타낸 명령을 구성하는 16비트의 값들에 의해 특정된다.
Figure 112006021538166-pct00010

MAC16 명령 프래그먼트 포맷
MAC16 명령 프래그먼트 내의 다양한 동작들을 명기하는 코드들이 표 14 에 나열되어 있다.
Figure 112006021538166-pct00011

MAC16 명령 프래그먼트 코드
주 : 명령 L0=R0*R0(SU)<<0 은 NOP로 디코드된다.
mtype 11 은 부호화-부호화 멀티플라이/어큐뮬레이트 명령에 대해 스트레이트(straight) 곱셈과 16만큼 오른쪽으로 어큐뮬레이터를 시프트하는 것에 대한 RND로 이용된다.
mtype SU 및 macOp1=macOp2 를 갖는 MAC 명령은 허용되지 않는다.
MAC16 명령 프래그먼트는 3까지의 좌측 시프트를 허용하여 스트레이트 곱셈(누산 없음) 동안에 라운드 동작을 수행할 수 있는데, 이 라운드는 시프트 후에 일어난다. 누산이 수행될 때, 가산될 어큐뮬레이터는 부호화-부호화된 곱셈과 병렬로 16만큼 시프트 다운될 수 있다. CPS 비트는 MAC 동작에서 이용된 데이터가 코프로세서에 전송되어야함을 가리키기 위한 코프로세서 스트로브 비트이다.
MAC8 명령 프래그먼트는 MAC16에 의해 수행될 수 있는 동작들의 서브세트를 수행한다는 점을 주목한다. MAC8 명령 프래그먼트에 대해 선택된 특정 집합의 명령들은 MAC16 명령 프래그먼트를 이용하여 수행될 수 있는 상기 집합의 동작들로부터 가장 흔히 수행된다. 이는 MAC8 명령 프래그먼트를 이용하여 MAC 연산들의 대부분이 수행될 수 있도록 허용함으로써 프로그램 메모리를 절약한다.
8비트 ALU8 명령 프래그먼트는 MAC 연산 (MAC8과 MAC16)과 병행하여 가장 흔하며 즉시 데이터를 포함하지 않는 ALU 동작들로 구성된다. 모든 ALU8 시프트 동작들은 명령 인코딩 비트들을 절약하기 위해 내부 시프트 레지스터 (SR) 를 이용하는 산술 시프트이다. ALU8 명령 프래그먼트를 이용하여 수행된 동작들은 표 15 에 나타나 있다.
Figure 112006021538166-pct00012

ALU8 명령 프래그먼트 동작
LS 는 로드 소스(L0-L3)이고 LD는 로드 수신지(L0-L3)이다.
ALU8 명령 프래그먼트에 의해 수행된 특정 동작들이 표 16 에 설명되는 명령 프래그먼트로 이루어지는 8비트의 값들로 명기되어 있다.
Figure 112006021538166-pct00013

ALU8 명령 프래그먼트 동작
ALU8 명령 프래그먼트를 이용하여 수행된 동작들을 명기하기 위해 이용된 특정 코드들이 표 17 에 설명되어 있다.
Figure 112006021538166-pct00014

ALU8 명령 프래그먼트 동작
주: 올(all)-제로 명령 L0=DETNORM(L0) 은 NOP로 디코드된다.
LD=DETNORM(LD)인 명령은 허용되지 않는다.
ALU8 클리어(clear) 어큐뮬레이터 명령은 LD=LD-LD이다.
ALU16 명령 프래그먼트는 산술과 논리 시프트를 둘다 허용한다. ALU16 명령 프래그먼트에 의해 수행된 특정 동작들이 표 18 에 설명되어 있다.
<< 표시는 산술 시프트를 나타내고, <<< 는 논리 시프트를 나타낸다.
Figure 112006021538166-pct00015

ALU16 명령 프래그먼트 동작
명령 L0=SET(L0) 은 NOP로 디코드된다.
ALU16 명령 프래그먼트의 포맷이 표 19 에 개시된다.
Figure 112006021538166-pct00016

16 비트 ALU 명령 프래그먼트 포맷 및 코드
ALU16 명령 프래그먼트에 의해 수행되는 특별한 동작들이, 표 20 에 개시된 것과 같이 명령 프래그먼트를 구성하는 비트들의 값들로서 구체화된다.
Figure 112006021538166-pct00017

주 : 올 제로 (all zeros) 명령 L0=SET(L0) 이 NOP로서 디코드된다.
BIT 명령 (h,i,j) 에 있어, 어셈블러는 제로 신호를 immediate5 에 부가함으로써 immediate6 을 인코드한다(이는 디코딩을 단순화시킨다).
표 20. ALU16 명령 프래그먼트 코드
DMOV16 명령 프래그먼트는 표 21에서 개시된 바와 같은 데이터 입력포트 및 데이터 출력포트 동작들의 상이한 데이터 무브 (move)를 수행하기 위한 16 비트 명령 프래그먼트이다.
Figure 112006021538166-pct00018

DMOV16 명령 프래그먼트를 유용하게 이용하는 동작들을 수행하는 데 사용되는 포맷 및 코드들이 표 22 에 개시된다.
Figure 112006021538166-pct00019

주 : 명령 LC=0 은 NOP로서 디코드된다.
immediate10 이 표시되고 immediate11 이 표시되지 않는다.
표 22. DMOV16 명령 프래그먼트 포맷
명령 OUTPORTA(port_addr) 는 Abus 상의 값을 판독하고, 그 값을 지정된 포트로 출력시킨다. 동시에 메모리 A 로부터 값을 판독함으로써, 명령은 값을 직접적으로 메모리 A에서 포트로 보내는데 사용될 수 있다. OTUPORTB(port_addr) 도 유사하게 동작한다.
DMOV24 명령 프래그먼트는 표 23에 개시된 것과 같은 상이한 로드/저장 레지스터 다이렉트 (load/store register direct) 또는 로드 레지스터 이미디어트 (load register immediate) 동작들을 수행하기 위한 24 비트 명령 프래그먼트이다.
Figure 112006021538166-pct00020

시작 레지스터들은 AGU 장치에 위치된다.
표 23. DMOV24 명령 프래그먼트 동작
표 24 는 본 발명의 바람직한 실시예에 따르는 DMOV24 명령을 유용하게 이용하는 다양한 동작을 수행하는데 사용되는 포맷 및 몇몇 코드들을 제공한다.
Figure 112006021538166-pct00021

주 : Address14 및 Address17 은 부화화되지 않고 (unsigned), immediate16 은 부호화된다 (signed).
표 24. DMOV24 명령 프래그먼트 포맷 및 코드
다른 명령 프래그먼트들 뿐만 아니라 DMOV24에 있어서, 어떤 동작들은 두 번 인코드된다는 것에 주목하여야 한다. 예를 들어, 행 (i) 및 (j)에서 지정된 형태들은 동일한 동작을 인코드하고, 하나는 immediate bus (Im1) 의 사용을 특정하고 다른 하나는 immediate bus (Im2) 의 사용을 특정한다. 두 번의 인코딩은 명령 프래그먼트가 매우 다양한 다른 명령 프래그먼트들로 결합되게 하고, 이는 Immediate bus 1 은 물론 Immediate bus 2 의 사용을 요할 수 있다.
40-bit 듀얼 로드 명령 프래그먼트 (DL40) 은 immediate load 또는 address load 동작들을 수행하기 위한 40 비트 명령 프래그먼트이다. 본 발명의 바람직한 실시예에서 수행되는 특별한 동작들이 표 25 에 도시된다.
Figure 112006021538166-pct00022

표 25. DL40 명령 프래그먼트 포맷
각 동작을 위한 DL40 명령 프래그먼트의 형태는 표 26에서 제공된다.
Figure 112006021538166-pct00023

주 : Address14 는 부호화되지 않고 (unsigned), immediate16 및 immediate32 는 부호화된다 (signed).
표 26. DL40 명령 프래그먼트 포맷 및 코드
표 5 에서도 도시된 바와 같이, 메모리 무브 및 프로그램 플로우 프래그먼트들의 4가지 유형들이 본 발명의 바람직한 실시예에서 제공되며, 그 리스트는 표 27에서 제공된다.
Figure 112006021538166-pct00024

표 27. 메모리 무브 및 프로그램 플로우 명령 프래그먼트
각 메모리 무브 및 프로그램 플로우 명령 (MMPF) 프래그먼트는 표 28 에 열거된 MMPF 서브프래그먼트들의 집합으로 구성된다.
Figure 112006021538166-pct00025

표 28. 조합 데이터 무브 및 프로그램 플로우 명령 서브프래그먼트
MMPF 명령 프래그먼트들의 포맷 및 동작이 우선 설명되고, MMPF 서브프래그먼트들의 포맷 및 동작의 보다 상세한 설명이 뒤따를 것이다.
OneMem11 MMPF 명령 프래그먼트가 단일 메모리 로드 및 저장 동작들, 데이터 무브 동작들 및 프로그램 플로우 동작들을 수행하는데 사용된다. 여기에 제공된 바람직한 실시예로서, 8가지의 상이한 동작들이 표 29 에 도시된 것과 같은 11 비트 프래그먼트 중에서 제 1에서 제 3 비트들에 의해 지시된 특정한 동작과 함께, OneMem11 MMPF 명령 프래그먼트를 사용하여 수행되며, 표 29 는 OneMem11 데이터 무브 명령 프래그먼트를 사용하여 수행될 수 있는 동작들을 열거한다.
Figure 112006021538166-pct00026

표 29. OneMem11 명령 프래그먼트 포맷
TwoMem19 MMPF 명령 프래그먼트는 표 30 에 개시된 것과 같이 수행되는 메모리 로드 및 저장 동작들의 8개의 상이한 조합들을 가능케하는 19 비트 명령 프래그먼트이다.
Figure 112006021538166-pct00027

TwoMov19 MMPF 명령 프래그먼트는 표 31에 도시된 바와 같이 데이터 무브 동작들에 따른 메모리 로드 및 기억 동작들의 8 개의 상이한 결합을 허용하는 19 비트 명령 프래그먼트이다.
Figure 112006021538166-pct00028

ThreeMem27 MMPF 명령 프래그먼트는 표 32에서 도시된 바와 같이 수행되는 데이터 동작들, 메모리 기억, 메모리 로드에 대한 8 개의 상이한 결합을 허용하는 27 비트 명령 프래그먼트이다.
Figure 112006021538166-pct00029

수학식 4 는 LD(A) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112006021538166-pct00030

표 33은 본 발명의 예시적인 실시예에 따른 LD(A) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112006021538166-pct00031

수학식 5는 LD(B) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112006021538166-pct00032

표 34는 본 발명의 예시적인 실시예에 따른 LD(B) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112006021538166-pct00033

수학식 6 은 ST(A) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112006021538166-pct00034

표 35는 본 발명의 예시적인 실시예에 따른 ST(A) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112006021538166-pct00035

수학식 7은 ST(B) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112006021538166-pct00036

표 36 은 본 발명의 예시적인 실시예에 따른 ST(B) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112006021538166-pct00037

표 37 은 DMOVA 명령 서브프래그먼트에 의해 수행되는 동작들을 나타낸다.
Figure 112006021538166-pct00038

표 38은 본 발명의 예시적인 실시예에 따른 DMOVA 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112006021538166-pct00039

이와 같이, 하나 이상의 명령 서브프래그먼트를 포함할 수 있는 MMPF 명령 프래그먼트들을 제공함에 의해, 전 명령을 사용하여 수행될 수 있는 동작들의 수는 더 증가된다. 예를 들어, 전 명령은 산술 및 MAC 동작들이 일군의 3개의 메모리 무브 및 프로그램 플로우 동작들에 따라 수행되게 할 수 있다. 단일 명령을 사용하여 이러한 많은 동작들을 수행하는 능력은 소정의 동작을 수행할 필요가 있는 전 명령들의 수를 더 감소시켜 DSP 상에서 요청되는 전 명령 메모리를 감소시킨다. 명령 메모리를 감소시키면 다이(die)크기, DSP의 비용 및 소비 전력이 감소되어, 이러한 DSP를 이동 무선 전화를 포함하는 많은 다양한 애플리케이션에 더 적합하게 한다.
이와 같이, 고도의 평행 변수 길이 명령 집합을 사용하여 DSP를 제어하는 시스템 및 방법이 기술되었다. 임의의 상기 기술에 숙련된 자들에게 본 발명을 제작 또는 사용할 수 있는 바람직한 실시예에 대한 설명이 이전에 제공되었다. 이러한 실시예들에 대한 다양한 변경들은 용이하게도 상기 기술에 숙련된 자들에게 명백하며, 본원에서 규정된 일반적인 원리들은 본 발명의 기능을 사용하지 않고 다른 실시예들에 적용될 수 있다. 예를 들어, 상기 시스템 및 방법이 DSP의 내용에 기술되지만, 그것의 다양한 특성들은 일반적인 컴퓨팅 시스템 및 장치들에 적용가능하다.
이와 같이 바람직한 실시예들를 참조하여 본 발명이 기술되었으므로, 당면된 실시예들은 단지 예시적이며 적절한 지식 및 기술을 가진 자들에게 일어날 수 있는 이와 같은 그러한 변경 및 수정이 첨부된 청구범위 및 그와 동등한 것에 기술된 바와 같이 본 발명의 사상 및 범위를 이탈하지 않고 행해질 수 있다.
전 명령 포맷 (full instruction format)
이에 더하여, 로테이터 (308) 의 구성은, 표 2 에 표시된 바와 같이 코딩된 제어 (320) 을 이루는 2 개의 선택 비트 (S1 및 S0) 에 의해서 제어된다.
S1 S0 로테이터 출력
0 0 ABC
0 1 BCD
1 0 CDA
1 1 DAB
로테이터 선택 제어 비트 및 출력
분명하게 알 수 있는 바와 같이, S1 및 S0 의 상태가 증가함에 따라, 로테이터 (308) 의 출력은 좌측-회전 (left-rotated), 또는 배럴 시프트된다 (barrel- shift). 좌측-회전은 각각의 입력 그룹 (A, B, C 및 D) 가 출력 상에 좌측으로 시프트되도록 하는 것이다. 출력의 맨 좌측 위치에 있는 입력 그룹은 제거된다. 이전에 출력에서 표명되지 않은 입력 그룹은 다음에 맨 우측 위치에서 출력된다.
S1 및 S1 의 상태와 그에 따른 로테이터 (308) 의 구성은 다양한 길이의 명령에 응답하여 변하는 양에 의해서 갱신되거나 회전된다. 특히, 처리되는 명령의 길이를 나타내는 값 (I1 I0) 은 제어 비트 (S1 및 S0) 에 더해지고, 어떤 실행 값 (carryout value) 도 버려진다 (discard). 즉,
S1(t+1),S0 (t+1) = S1(t),S0 (t) + I0, I1
브랜치 또는 리세트 조건에 대해서, S1 및 S0 의 값은 프로세싱이 브랜치되거나 리세트되는 특정 명령에 기초하여 리세트되어, 수학식 1 이 이용되지 않는다. 브랜치, 리세트 및 스톨 명령을 프로세싱하기 위한 다양한 방법들이 본 기술분야에서 잘 알려져 있고, 이 프로세싱은 본 발명과 특별히 관련되지 않기때문에 더이상 설명하지 않겠다.
예시적인 프로세싱에서, 로테이터 (308) 는 ABC 의 출력과 00 에서의 신호 비트 (S1 및 S0) 로 시작된다. 16 비트 명령이 수신되면, I1 및 I0 의 해당하는 명령 길이 비트가 S1 및 S0 에 더해져서, 01 의 S1 및 S0 을 산출하고, 이것은 BCD 의 로테이터 (308) 로부터의 출력 (324) 에 해당한다. BCD 의 출력은 처음 16 비트의 명령 데이타 (입력 A) 가 처리된 후에 다음 인 라인 세트의 명령이 된다.
다음 명령이 32 비트 명령이면, 명령 길이 (I1 및 I0) 는 01 인 현재 S1 및 S2 상태에 더해져서, 11 을 산출한다. 결과적인 출력은 DAB 가 되고, 이것은 처리되지 않은 다음 48 비트의 명령 데이타에 해당하여, 입력 D 상에 수신된 다음 인 라인 명령 데이타가 가장 중요한, 또는 맨 좌측의 위치에 위치하도록 구성된다. 그 이전에, 입력 (B 및 C) 로부터 명령 데이타가 이미 처리된 상태이다. 이전의 32 비트 명령의 처리동안에 새로운 데이타가 전술한 명령 데이타를 로딩하는 프로세스에 따라서 명령 레지스터 (307) 로 로드된다는 것에 유의하여야 한다.
48 비트 명령이 처리되면, 선택 비트 (S1 및 S0) 의 상태는 11 의 명령 길이 (I0 및 I1) 에 의해서 증가되어, 10 의 S1 및 S0 을 산출하고, 이것은 로테이터 (308) 를 출력 (CDA) 로 구성한다. CDA 의 출력은 처리될 다음 48 비트의 명령 데이타에 해당하고 다음 인 라인 비트는 가장 중요한 위치로 배치된다. 그 전에, 입력 (D, A 및 B) 상의 명령 데이타가 처리되었다. 이전의 명령이 처리되는 동안에 새로운 명령 데이타가 레지스터 (306) 으로 판독된다는 것에 또한번 다시 유의하여야 한다. 관련된 명령 데이타 프로세싱을 수행하는 전술한 논리는 실시에의 목적으로 제공된 것이며, 전술한 명령 데이타 프로세싱을 수행하는 다른 논리의 사용은 분명하고 본 발명의 사용과 양립한다.
따라서, 실시예에서, 제어 논리는 로테이터 (308) 를 명령 레지스터 (306 및 307) 로부터 수신된 다음 48 비트의 명령 데이타를 출력하도록 구성되어, 처리될 다음 명령 비트가 맨 좌측 위치에 위치하게 된다. 처리될 다음 세트의 명령 데이타가 확인될 수 있는 소정의 배치로 명령 데이타를 명령 프로세싱 부 (158) 에 제공하는 것은 또한 본 발명의 사용과 양립한다는 사실을 본 기술 분야의 당업자들은 알수 있다.
전술한 바와 같이, 처리되지 않은 다음 48 비트의 명령 데이타를 출력하는 것에 더하여, 로테이터 (308) 는 또한 처리될 다음 명령의 사이즈를 제어 논리 (304) 에 지시한다. 특히, 로테이터 (308) 는 처리될 다음 5 비트의 명령 데이타의 부가적인 복사를 논리 제어 (304) 에 출력한다. 본 발명의 바람직한 실시예에서, 명령의 길이는 명령의 처음 5 비트에 의해서 특정된다.
도 8 은 본 발명의 일 실시예에 따라 구성될 때의 MAC 부 (128) 의 블록도이다. 시프트 라이트 (shift right; 900) 는 누산될 40 비트 입력을 수신하고 0 또는 16 비트만큼 값을 시프트하여, 출력이 멀티플렉서 (901) 의 하나의 입력으로 인가된다. 멀티플렉서 (901) 의 다른 입력은 0 ×800 값을 수신한다. 곱셈기 (멀티플라이어; 902) 는 각 입력에 대한 총 17 비트에 대해 명령 디코더 (158) 로부터의 신호 비트와 함께 곱하여질 2 개의 16 비트 값을 수신한다.
곱셈기 (902) 의 출력은 시프트 레프트 (shift left; 904) 에 의해 수신되는데, 이것은 명령 디코더 (158) 에 의해서 특정되는 바와 같이, 0, 1, 2 또는 3 비트만큼 출력을 시프트한다. 가산회로/감산회로 (906) 는 명령 디코더 (158) 에 의해 지시되는 대로 2 개의 입력 값의 가산 또는 감산을 수행하고 그 결과를 출력하며, 이것은 본 발명의 일례에서의 레지스터 뱅크 입력 포트 (PI4) 로 인가된다.
본 발명의 실시예에서 MAC 부 (128) 내의 시프트 라이트 16 유닛 (900) 의 사용은 다은 형태의 MAC 부에 대한 추가적인 이용을 제공한다. 더 자세하게 말해서, 시프트 라이트 16 유닛 (900) 의 사용은 감소된 수의 클럭 사이클 에서의 2 배 정밀도 동작을 수행하는 것을 용이하게 한다. 예를 들어, 32 비트 수 (A) 가 16 비트 수 (B) 와 곱해지는 2 배 정밀도 동작을 수행하기 위해서, 32 비트 수의 아래 16 비트 (Al) 가 먼저 제 1 클럭 사이클 동안에 16 비트 수 (B) 와 곱해져서, 레지스터 뱅크 (120) 내에 저장된 중간값 (I) 을 산출한다. 제 2 클럭 사이클 동안에, 중간값 (I) 은 시프트 라이트 16 유닛 (900) 으로 입력되고 16 비트만큼 우측으로 시프트된다. 이에 더하여, 16 비트 수 (B) 와 32 비트 수 (A) 의 위 16 비트 (Ah) 가 곱해지고, 그 결과는 시프트 라이트 16 유닛 (900) 으로부터온 우측으로 시프트된 중간값 (I) 과 가산된다. 따라서, 2 배 정밀도 곱하기는 3 이라기 보다 2 개의 클럭 사이클에서 수행된다. 일반적으로, 많은 2 배 정밀도 동작은 하나 또는 그 이상의 변수가 다른 변수에 대해 시프트되도록 요구하며, 멀티플라이 또는 어큐뮬레이트 동작의 하나로서 동일한 클럭 사이클동안에 수행되는 시프팅 단계를 허용하는 것은 2 배 정밀도 동작을 수행하는 데 필요한 사이클의 수를 감소시킨다.
보통, 3 개 클럭 사이클이 요구되는데, 이는 제 1 곱하기 동작, 시프트 동작, 및 제 2 곱하기 동작 각각은 전형적으로 클럭 사이클이 요구되기 때문이다. 따라서, 시프트 회로의 사용은 2 배 정밀도 곱하기를 수행하는 데 요구되는 클럭의 수를 감소시킨다. 다른 크기의 피연산자 (operands) 에 관련된 다른 2 배 정밀도 동작은 또한, 시프트 라이트 부 (900) 의 사용에 의해서 용이하게 된다.
Ⅱ. 명령 구성 (INSTRUCTION CONFIGURATION)
A. 개관.
도 9 는 본 발명의 실시예에서 사용된 명령 체계를 설명하는 블록도이다. 블록 (402) 은 DSP 의 동작을 제어하는 16, 32 또는 48 비트로 이루어진 가변 길이 전 명령 (variable length full instruction)을 나타낸다. 가변 길이 명령은 블록 (403) 에 나타난 바와 같이, 메모리 무브 및 프로그램 플로우 (memory move and program flow) MMPE 와 일반 명령 프래그먼트를 포함하는 명령 프래그먼트로 구성된다. 본 발명의 실시예에서 사용된 일반 명령 프래그먼트는 MAC8, MAC16, ALU8, ALU16, DMOV16, DMOV24 및 DL40 명령 프래그먼트를 포함한다. MMPF 명령 프래그먼트는 OneMem11, TwoMem19, TwoMov19 및 TreeMem24 명령 프로그래먼트를 포함한다. MMPF 명령 프래그먼트는 블록 (406) 에 나타난 MMPF 명령 서브프래그먼트로 구성된다. MMPF 명령 서브프래그먼트는 LD(A), LD(B), ST(A), ST(B), LS(C), DMOVA, DMOVB, 및 PF8 을 포함한다. 다양한 전 명령, 명령 프래그먼트 및 명령 서브프래그먼트는 아래에서 더 자세히 설명되어있다.
B. 전 명령 (Full Instruction)
본 발명의 바람직한 실시예에서, DSP 는 16, 32 및 48 비트의 길이를 갖는 전 명령을 사용하여 제어된다. 전 명령은 하나 또는 그 이상의 명령 프래그먼트를 조합하여 형성된다. 전 명령은 명령 메모리 (152) 내에서의 연속적인 저장 및 DSP 에 의한 프로세싱을 감안하도록 구성된다. 전 명령의 포맷 (format) 및 구성은 아래 설명되어있고, 그 다음에 명령 프래그먼트의 포맷과 구성이 뒤따른다. 동작동안, DSP 는 전 명령의 각각의 클럭 사이클을 처리한다. 따라서, 곱하기 동작은, 개별적인 동작이 개별적인 세트의 선택된 명령 프래그먼트에 의해 결정되면서, 각각의 전 명령의 프로세싱동안에 수행될 수 있다.
본 발명의 실시예에서 사용된 3 개의 전 명령의 포맷은 표 3 에 나타나 있 다.
43 0
헤더 43명령 비트
27 0
해더 27명령 비트
11 0
헤더 11명령 비트
전 명령 포맷
각각의 전 명령에 사용된 5 비트 헤더는 전 명령의 길이를 지시하고, 어떤 추가적인 포맷은 전체 포맷의 내용에 관한 것이다. 본 발명의 실시예에서 사용된 헤더의 포맷은 표 4 에 제공되어 있다.
5비트 헤더 명령 길이
0 0 0 0 X 16비트 명령 (2 타입;2 types)
0 0 0 1 X 32비트 명령 (2 타입)
0 0 1 X X 48비트 명령 (4 타입)
0 1 X X X 32비트 명령 (8 타입)
1 X X X X 48비트 명령 (16 타입)
전 명령 헤더 포맷
각각의 전 명령 (16, 32 및 48 비트 길이) 은 하나 또는 그 이상의 명령 프래그먼트를 포함한다. 표 5 는 본 발명의 실시예에서의 이용 가능한 명령 프래그먼트의 목록을 제공한다. 명령 프래그먼트의 포맷 및 동작의 더 자세한 설명 은 전 명령에 대한 논의 후에 제공된다.
필드(Field) 설명 폭(Width)
MAC8* 8비트 MAC 동작 8
ALU8* 8비트 ALU 동작 8
OneMem11* 1 메모리 동작 11
MAC16* 16비트 MAC 동작 16
ALU16* 16비트 ALU 동작 16
DMOV16* 조건부 Reg 무브(Conditional Reg Move)/Inport/Outport 16
TwoMem19 2 메모리 동작 19
TwoMov19* 2 메모리/데이타 무브 동작 19
DMOV24 로드(Load)/Store Direct/Load Addr/Jump 24
TreeMem27 3 메모리 동작 27
DL40 듀얼 로드(Dual-Load) 40
* 는 필드가 어떤 비트 패턴을 사용하여 놉 (nop'ed; 무연산) 될 수 있다는 것을 지시한다.
표 5. 명령 프래그먼트
표 6 - 8 은 본 발명의 실시예에 따른 48, 32 및 16 비트 전 명령 내에서 사용될 수 있는 명령 프래그먼트의 다양한 조합을 제공한다. 명령 프래그먼트의 다른 조합이 본 발명의 사용 및 동작과 양립하지만, 여기에 개시된 조합의 일정한 특징들은 아래 설명하고 있는 바와 같이 바람직하다. 이에 더하여, 전 명령의 전부 또는 일부가 "예약된 (reserved)" 이라고 나타나 있는 곳에서는, 설명된 실시예에서 개별적인 명령 조합이 특정되거나 사용되지 않았지만, 이러한 전 명령 조합의 추후의 사용이 예상된다.
표 6 은 본 발명의 실시예에 따라 수행될 때 16비트 전 명령 포맷을 제공한 다. 전 명령은 11개의 명령 비트가 뒤따르는 5개의 비트 헤더로 구성된다.
Figure 112000528873535-pct00001
16비트 전 명령 포맷
주 : 16비트 NOP 는 MAC8 의 NOP 를 이용하여 얻어진다.
헤더 비트는 명령의 타입에 대한 일부 정보 뿐만 아니라 명령 길이를 나타낸다. 00000 의 헤더용으로, 3 개의 최하위 테일 비트는 수행되는 동작을 더 특정화하는 데 사용된다. 특히, 000 의 테일 비트는 나머지 8개 비트가 MAC8 명령 프래그먼트를 포함하는 것을 나타낸다. 001 의 테일 비트는 나머지 8개 비트가 ALU8 명령 프래그먼트를 포함하는 것을 나타낸다. 다른 테일 비트 조합을 위하여, 어떠한 명령도 특정화되지 않는다. 가장 짧은 명령은 저장하기에 최소량의 메모리를 요구하기에, 상기한 16비트 전 명령 사용은 특정한 집합의 동작을 수행하는 데 필요한 명령 메모리 양을 감소시킨다. 따라서, DSP 의 전체 크기 및 이에 따른 비용 및 전력 소모가 또한 감소된다.
16비트 명령은 특히 한 개 또는 감소된 개수의 동작이 수행될 수 있는 상태 일 때 사용된다. 특히, 한 개의 동작만을 특정화하기에 필요한 명령 크기가 감소될 수 있고, 따라서 절반 워드 사용, 또는 한 개 동작을 수행하기 위한 16비트 명령이 감소될 수 있다. 또한, 16비트 명령은, 수행될 것으로 예상되는 거의 모든 동작을 포함하는 MAC, ALU, 메모리 이동 또는 프로그램 흐름 동작용으로 사용될 수 있다.
표 7 은 본 발명의 실시예에 따라 구성될 때 명령 프래그먼트 조합 및 32 비트 전 명령의 관련된 포맷을 도시한다.
Figure 112000528873535-pct00002
32비트 전 명령 포맷
상기한 바와 같이, 5개의 헤더 비트는 명령 프래그먼트의 특정한 조합 뿐만 아니라 전 명령 길이를 나타낸다. 예를 들어, 00010 헤더는 나머지 27 명령 비트가 ThreeMem27 명령 프래그먼트를 포함하는 것을 나타내며, 00011 헤더는 나머지 27 명령 비트가 TwoMem19 명령 프래그먼트가 뒤따르는 ALU8 명령 프래그먼트를 포함하는 것을 나타낸다.
01111 헤더용으로, 최하위 테일 비트는 명령 프래그먼트의 조합을 또한 나타낸다. 예를 들어, 0 의 최하위 테일 비트용으로, 그 다음 2개의 최하위 비트는 나머지 24비트가 DMOV24, MAC8 이 뒤따르는 ALU16, 또는 ALU8 명령 프래그먼트가 뒤따르는 MAC16 를 포함하는지 여부를 나타낸다. 다른 테일 비트 상태, 1의 최하위 테일 비트는 예약된 조합을 특정화한다.
32개의 비트 명령으로 인하여 대부분의 수행 동작이 동시에 수행될 수 있고, 이것은 명령 크기를 줄이는 한편 파이프라인을 용이하게 한다. 예를 들어, 필터링과 같은 응용을 위하여 2개의 인출 동작 및 멀티플라이/어큐뮬레이트 동작을 수행하는 것은 흔한 일이다. 32비트 명령으로 인하여 상기와 같은 동작이 필 (fill) 48비트 명령 공간을 필요로 하지 않고 파이프라인 형식으로 수행될 수 있다.
또한, 32비트 명령으로 인하여 가장 큰 명령 크기를 사용하지 않고도 MAC 및 ALU 동작이 프로그램 점프 및 콜 (call) 동작뿐만 아니라 동시에 수행될 수 있다.
표 8 은 본 발명의 실시예에 따라 수행될 때 명령 프래그먼트 조합 및 48 비트 전 명령용 포맷을 나타낸다.
Figure 112000528873535-pct00003
48비트 전 명령 포맷
5개의 헤더 비트는 특정한 명령 프래그먼트 조합뿐만 아니라 명령 길이를 특정화한다. 예를 들어, 00100 헤더 비트는 43개의 나머지 명령 비트가 DMOV24, MAC8, OneMem11 명령 프래그먼트로 구성된 것을 나타낸다. 10011 헤더 비트는 43개의 나머지 비트가 ALU16, MAC8, 및 TwoMem19 명령 프래그먼트로 구성된 것을 나타낸다.
11111 헤더 비트용으로, 3개의 최하위 테일 비트는 나머지 명령 비트에 포함된 명령 프래그먼트를 또한 나타낸다. 000 테일 비트는 나머지 40 명령 비트 가 MAC16 및 DMOV24 명령 프래그먼트를 포함하는 것을 나타낸다. 001 테일 비트는 나머지 40 개의 명령 비트가 MAC8, ALU8, 및 DMOV24 명령 프래그먼트를 포함하는 것을 나타낸다. 110 테일 비트는 나머지 40개 명령 비트가 DL40 명령 프래그먼트를 포함하는 것을 나타낸다.
48비트 전 명령내에 제공되는 명령 프래그먼트 조합으로 인하여 많은 동작이 동시에 수행될 수 있고 따라서 직렬로 수행되는 것보다 빠르게 수행될 수 있다. 예를 들어, 여러 개의 48비트 전 명령으로 인하여 ALU 동작, MAC 동작 및 메모리 동작이 동시에 수행될 수 있다. 메모리 동작은 로드, 저장, 및 데이터 이동 동작을 포함하며, 흔히 다중 메모리 위치가 한번에 액세스될 수 있게 한다.
48비트 명령으로 인하여 승산 동작이 ALU 동작, 데이터 인출, 및 프로그램 흐름 동작과 함께 파이프라인 형식으로 수행될 수 있다. 이것은, (시프팅과 같은) ALU 동작이 뒤따르는 MAC 동작을 수행함으로써 흔히 수행되는 스케일링 동작과 조합될 때 필터링에 유용할 수 있다. MAC 및 ALU 를 사용하는 다른 응용에는 3개 이상의 데이터 스트림을 조합하는 것이 포함된다. 특히 3개의 버스 아키텍처를 사용시 48비트 명령은 이러한 경우에 파이프라인 동작을 용이하게 한다.
이것은 단일 48비트 전 명령 내지 5 개 (MAC, ALU, FETCH1, FETCH2, 및 STORE) 로 수행될 수 있는 동작 수를 효율적으로 증가시킨다. DSP 에서 다중 명령을 동시에 수행할 수 있는 기능은, 일반적으로, DSP 내부의 다양한 처리 시스템을 접속하기 위한 다중 내부 버스와 함께 DSP 를 사용함으로써 더 향상된다. 상이한 세트의 데이터가 상이한 버스를 사용하여 동시에 이동 및 액세스될 수도 있 다.
수행될 수 있는 동작 수에 의거하여 명령 길이를 변경함으로써 명령 메모리가 사용되는 효율을 더 증가시킨다. 어떤 특정한 태스크는 다중 동작이 동시에 수행될 수 있는 주기, 및 보다 적은, 또는 한개의, 동작이 수행될 수 있는 다른 주기를 갖는다. 동시에 수행될 수 있는 동작 수에 따라 명령 길이를 조절함으로써, 명령 메모리 양이 감소된다.
상기한 방법이 타이트한 (tight) 명령 패킹과 결합되어 함께 사용될 때, 필요한 명령 메모리가 더 감소된다. 가변 길이 명령 또는 타이트하게 패킹된 명령 또는 두 명령을 함께 사용함으로써 다중 버스 아키텍처 및 다중 액세스 레지스터 뱅크 사용이 용이해지며, 보다 많은 회로 영역이 이용가능해진다. 따라서, 이러한 본 발명의 태양은 향상된 성능 및 향상된 효율을 동시에 제공하기 위해 결합된다.
C. 명령 프래그먼트
상기한 바와 같이, 전 명령은 한 개 또는 소정의 방식으로 그룹화된 그 이상의 명령 프래그먼트의 세트로 구성된다. 본 발명의 실시예에서 이용가능한 명령 프래그먼트 세트가 표 5 에 도시된다. 본 발명의 실시예에서 제공된 전 명령을 사용하여 이용가능한 조합 및 명령 프래그먼트는 동작 세트가 결합되어 함께 수행될 수 있도록 설계되어 주어진 동작을 수행하는 데 필요한 명령 메모리의 양이 감소된다. 본 발명의 실시예에서 사용되는 다양한 명령 프래그먼트의 포맷 및 동작이 아래에 뒤따른다.
C.1 명령 프래그먼트 명명법
다음의 명령 프래그먼트 및 서브프래그먼트에서, 다음의 약어는 표 9 및 10 에 도시된 레지스터를 언급하는 데 사용된다. 또한, 본 발명의 실시예에서 사용되는 특정한 비트 코드 (매핑) 는 좌측에 도시된다.
Figure 112000528873535-pct00004
명령 프래그먼트 명명법 및 코드
주 : L3 는 조건문을 갖지 않는다.
Figure 112000528873535-pct00005
명령 프래그먼트 명명법 및 코드
regA 는 A 메모리에 저장될 수 있는/A 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
regB 는 B 메모리에 저장될 수 있는/B 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
regC 는 C 메모리에 저장될 수 있는/C 메모리로부터 로드될 수 있는 모든 레지스터를 포함한다.
C.2 명령 프래그먼트 설명
일련의 명령 프래그먼트들은 MAC8과 MAC16의 2가지 유형의 MAC 명령 프래그 먼트들을 포함한다. MAC8명령 프래그먼트들은 부호화된-부호화되지 않은 것과 부호화-부호화된 곱셈형을 지원하고 그 결과는 어큐뮬레이터 (L0 또는 L1)에 저장된다. MAC8 명령 프래그먼트는 16 비트 전(full) 명령을 이용하는 MAC 동작을 허용하고, MAC 동작들을 요하는 많은 병렬 명령 조합들이 48비트 명령 대신에 32비트 명령으로 인코드되도록 함으로써 명령 RAM을 절약한다. 일반적으로, MAC8 명령들에 의해 수행되는 절차는 다음 수학식을 따른다.
Figure 112000528873535-pct00006
수학식 2 에서 나타난 바와 같이, MAC8 명령 프래그먼트는 레지스터 (L0 는 L1) 의 내용이 레지스터 (R0, R2, R4 및 R6) 와 (R0, R1, R3 및 R5) 의 곱으로 합계가 되도록 하거나 레지스터들의 곱으로 직접 설정되도록 한다. 게다가, 부호화되거나 부호화되지 않은 곱셈들이 명기될 수 있다. MAC 연산이 MAC8 명령을 이용하여 수행될 수 있는 레지스터들의 수를 제한함으로써, 명령의 길이는 8비트로 유지될 수 있어 더 짧은 8비트 명령 프래그먼트를 이용하여 MAC 연산이 수행되도록 한다.
MAC8 명령에 의해 수행된 특정 동작이 표 11 에 설명된 명령을 구성하는 8비트의 값에 의해 구체화된다.
Figure 112000528873535-pct00007
MAC8 명령 프래그먼트 포맷
SU/SS 는 부호화된 또는 부호화되지 않은 곱셈을 명기한다. MAC8 명령 프래그먼트 내의 다양한 동작들을 명기하는 코드들이 표 12 에 나열되어 있다.
Figure 112000528873535-pct00008
MAC8 명령 프래그먼트 코드
그러므로, 0×99의 MAC8 명령은 레지스터 R0 와 R3 의 부호화되지 않은 곱과 함께 레지스터 (L0) 의 내용의 합을 레지스터 L0 로 이동시킨다.
MAC16 명령 프래그먼트는 추가의 레지스터들이 멀티플라이-어큐뮬레이트 동작에서 이용되도록 함으로써 부가적인 유연성을 제공한다. 수학식 3 은 MAC16 명령 프래그먼트를 이용하여 수행될 수 있는 동작들을 설명한다.
Figure 112000528873535-pct00009
예컨대, 모든 어큐뮬레이터 (L0-L3) 는 비록 어큐뮬레이터들의 모든 조합들이 멀티플라이-어큐뮬레이터 명령들에서 허용되지 않을지라도 수신지로 이용될 수 있다. CPS 필드는 코프로세서가 특정 동작을 병렬로 수행해야 함을 신호한다. MAC16 명령에 의해 수행된 특정 동작은 표 13 에 나타낸 명령을 구성하는 16비트의 값들에 의해 특정된다.
Figure 112000528873535-pct00010
MAC16 명령 프래그먼트 포맷
MAC16 명령 프래그먼트 내의 다양한 동작들을 명기하는 코드들이 표 14 에 나열되어 있다.
Figure 112000528873535-pct00011
MAC16 명령 프래그먼트 코드
주 : 명령 L0=R0*R0(SU)<<0 은 NOP로 디코드된다.
mtype 11 은 부호화-부호화 멀티플라이/어큐뮬레이트 명령에 대해 스트레이트(straight) 곱셈과 16만큼 오른쪽으로 어큐뮬레이터를 시프트하는 것에 대한 RND로 이용된다.
mtype SU 및 macOp1=macOp2 를 갖는 MAC 명령은 허용되지 않는다.
MAC16 명령 프래그먼트는 3까지의 좌측 시프트를 허용하여 스트레이트 곱셈(누산 없음) 동안에 라운드 동작을 수행할 수 있는데, 이 라운드는 시프트 후에 일어난다. 누산이 수행될 때, 가산될 어큐뮬레이터는 부호화-부호화된 곱셈과 병렬로 16만큼 시프트 다운될 수 있다. CPS 비트는 MAC 동작에서 이용된 데이터가 코프로세서에 전송되어야함을 가리키기 위한 코프로세서 스트로브 비트이다.
MAC8 명령 프래그먼트는 MAC16에 의해 수행될 수 있는 동작들의 서브세트를 수행한다는 점을 주목한다. MAC8 명령 프래그먼트에 대해 선택된 특정 집합의 명령들은 MAC16 명령 프래그먼트를 이용하여 수행될 수 있는 상기 집합의 동작들로부터 가장 흔히 수행된다. 이는 MAC8 명령 프래그먼트를 이용하여 MAC 연산들의 대부분이 수행될 수 있도록 허용함으로써 프로그램 메모리를 절약한다.
8비트 ALU8 명령 프래그먼트는 MAC 연산 (MAC8과 MAC16)과 병행하여 가장 흔하며 즉시 데이터를 포함하지 않는 ALU 동작들로 구성된다. 모든 ALU8 시프트 동작들은 명령 인코딩 비트들을 절약하기 위해 내부 시프트 레지스터 (SR) 를 이용하는 산술 시프트이다. ALU8 명령 프래그먼트를 이용하여 수행된 동작들은 표 15 에 나타나 있다.
Figure 112000528873535-pct00012
ALU8 명령 프래그먼트 동작
LS 는 로드 소스(L0-L3)이고 LD는 로드 수신지(L0-L3)이다.
ALU8 명령 프래그먼트에 의해 수행된 특정 동작들이 표 16 에 설명되는 명령 프래그먼트로 이루어지는 8비트의 값들로 명기되어 있다.
Figure 112000528873535-pct00013
ALU8 명령 프래그먼트 동작
ALU8 명령 프래그먼트를 이용하여 수행된 동작들을 명기하기 위해 이용된 특정 코드들이 표 17 에 설명되어 있다.
Figure 112000528873535-pct00014
ALU8 명령 프래그먼트 동작
주: 올(all)-제로 명령 L0=DETNORM(L0) 은 NOP로 디코드된다.
LD=DETNORM(LD)인 명령은 허용되지 않는다.
ALU8 클리어(clear) 어큐뮬레이터 명령은 LD=LD-LD이다.
ALU16 명령 프래그먼트는 산술과 논리 시프트를 둘다 허용한다. ALU16 명령 프래그먼트에 의해 수행된 특정 동작들이 표 18 에 설명되어 있다.
<< 표시는 산술 시프트를 나타내고, <<< 는 논리 시프트를 나타낸다.
Figure 112000528873535-pct00015
ALU16 명령 프래그먼트 동작
명령 L0=SET(L0) 은 NOP로 디코드된다.
ALU16 명령 프래그먼트의 포맷이 표 19 에 개시된다.
Figure 112000528873535-pct00016
16 비트 ALU 명령 프래그먼트 포맷 및 코드
ALU16 명령 프래그먼트에 의해 수행되는 특별한 동작들이, 표 20 에 개시된 것과 같이 명령 프래그먼트를 구성하는 비트들의 값들로서 구체화된다.
Figure 112000528873535-pct00017
주 : 올 제로 (all zeros) 명령 L0=SET(L0) 이 NOP로서 디코드된다.
BIT 명령 (h,i,j) 에 있어, 어셈블러는 제로 신호를 immediate5 에 부가함으로써 immediate6 을 인코드한다(이는 디코딩을 단순화시킨다).
표 20. ALU16 명령 프래그먼트 코드
DMOV16 명령 프래그먼트는 표 21에서 개시된 바와 같은 데이터 입력포트 및 데이터 출력포트 동작들의 상이한 데이터 무브 (move)를 수행하기 위한 16 비트 명령 프래그먼트이다.
Figure 112000528873535-pct00018
DMOV16 명령 프래그먼트를 유용하게 이용하는 동작들을 수행하는 데 사용되는 포맷 및 코드들이 표 22 에 개시된다.
Figure 112000528873535-pct00019
주 : 명령 LC=0 은 NOP로서 디코드된다.
immediate10 이 표시되고 immediate11 이 표시되지 않는다.
표 22. DMOV16 명령 프래그먼트 포맷
명령 OUTPORTA(port_addr) 는 Abus 상의 값을 판독하고, 그 값을 지정된 포트로 출력시킨다. 동시에 메모리 A 로부터 값을 판독함으로써, 명령은 값을 직접적으로 메모리 A에서 포트로 보내는데 사용될 수 있다. OTUPORTB(port_addr) 도 유사하게 동작한다.
DMOV24 명령 프래그먼트는 표 23에 개시된 것과 같은 상이한 로드/저장 레지스터 다이렉트 (load/store register direct) 또는 로드 레지스터 이미디어트 (load register immediate) 동작들을 수행하기 위한 24 비트 명령 프래그먼트이다.
Figure 112000528873535-pct00020
시작 레지스터들은 AGU 장치에 위치된다.
표 23. DMOV24 명령 프래그먼트 동작
표 24 는 본 발명의 바람직한 실시예에 따르는 DMOV24 명령을 유용하게 이용하는 다양한 동작을 수행하는데 사용되는 포맷 및 몇몇 코드들을 제공한다.
Figure 112000528873535-pct00021
주 : Address14 및 Address17 은 부화화되지 않고 (unsigned), immediate16 은 부호화된다 (signed).
표 24. DMOV24 명령 프래그먼트 포맷 및 코드
다른 명령 프래그먼트들 뿐만 아니라 DMOV24에 있어서, 어떤 동작들은 두 번 인코드된다는 것에 주목하여야 한다. 예를 들어, 행 (i) 및 (j)에서 지정된 형태들은 동일한 동작을 인코드하고, 하나는 immediate bus (Im1) 의 사용을 특정하고 다른 하나는 immediate bus (Im2) 의 사용을 특정한다. 두 번의 인코딩은 명령 프래그먼트가 매우 다양한 다른 명령 프래그먼트들로 결합되게 하고, 이는 Immediate bus 1 은 물론 Immediate bus 2 의 사용을 요할 수 있다.
40-bit 듀얼 로드 명령 프래그먼트 (DL40) 은 immediate load 또는 address load 동작들을 수행하기 위한 40 비트 명령 프래그먼트이다. 본 발명의 바람직한 실시예에서 수행되는 특별한 동작들이 표 25 에 도시된다.
Figure 112000528873535-pct00022
표 25. DL40 명령 프래그먼트 포맷
각 동작을 위한 DL40 명령 프래그먼트의 형태는 표 26에서 제공된다.
Figure 112000528873535-pct00023
주 : Address14 는 부호화되지 않고 (unsigned), immediate16 및 immediate32 는 부호화된다 (signed).
표 26. DL40 명령 프래그먼트 포맷 및 코드
표 5 에서도 도시된 바와 같이, 메모리 무브 및 프로그램 플로우 프래그먼트들의 4가지 유형들이 본 발명의 바람직한 실시예에서 제공되며, 그 리스트는 표 27에서 제공된다.
Figure 112000528873535-pct00024
표 27. 메모리 무브 및 프로그램 플로우 명령 프래그먼트
각 메모리 무브 및 프로그램 플로우 명령 (MMPF) 프래그먼트는 표 28 에 열거된 MMPF 서브프래그먼트들의 집합으로 구성된다.
Figure 112000528873535-pct00025
표 28. 조합 데이터 무브 및 프로그램 플로우 명령 서브프래그먼트
MMPF 명령 프래그먼트들의 포맷 및 동작이 우선 설명되고, MMPF 서브프래그먼트들의 포맷 및 동작의 보다 상세한 설명이 뒤따를 것이다.
OneMem11 MMPF 명령 프래그먼트가 단일 메모리 로드 및 저장 동작들, 데이터 무브 동작들 및 프로그램 플로우 동작들을 수행하는데 사용된다. 여기에 제공된 바람직한 실시예로서, 8가지의 상이한 동작들이 표 29 에 도시된 것과 같은 11 비트 프래그먼트 중에서 제 1에서 제 3 비트들에 의해 지시된 특정한 동작과 함께, OneMem11 MMPF 명령 프래그먼트를 사용하여 수행되며, 표 29 는 OneMem11 데이터 무브 명령 프래그먼트를 사용하여 수행될 수 있는 동작들을 열거한다.
Figure 112000528873535-pct00026
표 29. OneMem11 명령 프래그먼트 포맷
TwoMem19 MMPF 명령 프래그먼트는 표 30 에 개시된 것과 같이 수행되는 메모리 로드 및 저장 동작들의 8개의 상이한 조합들을 가능케하는 19 비트 명령 프래그먼트이다.
Figure 112000528873535-pct00027
TwoMov19 MMPF 명령 프래그먼트는 표 31에 도시된 바와 같이 데이터 무브 동작들에 따른 메모리 로드 및 기억 동작들의 8 개의 상이한 결합을 허용하는 19 비트 명령 프래그먼트이다.
Figure 112000528873535-pct00028
ThreeMem27 MMPF 명령 프래그먼트는 표 32에서 도시된 바와 같이 수행되는 데이터 동작들, 메모리 기억, 메모리 로드에 대한 8 개의 상이한 결합을 허용하는 27 비트 명령 프래그먼트이다.
Figure 112000528873535-pct00029
수학식 4 는 LD(A) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112000528873535-pct00030
표 33은 본 발명의 예시적인 실시예에 따른 LD(A) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112000528873535-pct00031
수학식 5는 LD(B) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112000528873535-pct00032
표 34는 본 발명의 예시적인 실시예에 따른 LD(B) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112000528873535-pct00033
수학식 6 은 ST(A) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112000528873535-pct00034
표 35는 본 발명의 예시적인 실시예에 따른 ST(A) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112000528873535-pct00035
수학식 7은 ST(B) 명령 서브프래그먼트에 의해 수행되는 동작들을 제공한다.
Figure 112000528873535-pct00036
표 36 은 본 발명의 예시적인 실시예에 따른 ST(B) 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112000528873535-pct00037
표 37 은 DMOVA 명령 서브프래그먼트에 의해 수행되는 동작들을 나타낸다.
Figure 112000528873535-pct00038
표 38은 본 발명의 예시적인 실시예에 따른 DMOVA 명령 서브프래그먼트의 포맷을 제공한다.
Figure 112000528873535-pct00039
이와 같이, 하나 이상의 명령 서브프래그먼트를 포함할 수 있는 MMPF 명령 프래그먼트들을 제공함에 의해, 전 명령을 사용하여 수행될 수 있는 동작들의 수는 더 증가된다. 예를 들어, 전 명령은 산술 및 MAC 동작들이 일군의 3개의 메모리 무브 및 프로그램 플로우 동작들에 따라 수행되게 할 수 있다. 단일 명령을 사용하여 이러한 많은 동작들을 수행하는 능력은 소정의 동작을 수행할 필요가 있는 전 명령들의 수를 더 감소시켜 DSP 상에서 요청되는 전 명령 메모리를 감소시킨다. 명령 메모리를 감소시키면 다이(die)크기, DSP의 비용 및 소비 전력이 감소되어, 이러한 DSP를 이동 무선 전화를 포함하는 많은 다양한 애플리케이션에 더 적합하게 한다.
이와 같이, 고도의 평행 변수 길이 명령 집합을 사용하여 DSP를 제어하는 시스템 및 방법이 기술되었다. 임의의 상기 기술에 숙련된 자들에게 본 발명을 제작 또는 사용할 수 있는 바람직한 실시예에 대한 설명이 이전에 제공되었다. 이러한 실시예들에 대한 다양한 변경들은 용이하게도 상기 기술에 숙련된 자들에게 명백하며, 본원에서 규정된 일반적인 원리들은 본 발명의 기능을 사용하지 않고 다른 실시예들에 적용될 수 있다. 예를 들어, 상기 시스템 및 방법이 DSP의 내용에 기술되지만, 그것의 다양한 특성들은 일반적인 컴퓨팅 시스템 및 장치들에 적용가능하다.
이와 같이 바람직한 실시예들를 참조하여 본 발명이 기술되었으므로, 당면된 실시예들은 단지 예시적이며 적절한 지식 및 기술을 가진 자들에게 일어날 수 있는 이와 같은 그러한 변경 및 수정이 첨부된 청구범위 및 그와 동등한 것에 기술된 바와 같이 본 발명의 사상 및 범위를 이탈하지 않고 행해질 수 있다.

Claims (84)

  1. 가변 수의 명령 프래그먼트를 포함하는 가변 길이 명령에 응답하여 디지털 신호처리를 수행하는 디지털 신호처리기로서,
    하나 이상의 최대길이 완전 명령에 대하여 충분한, 상기 가변 길이 명령을 포함하는 명령 데이터를 인출하는 명령 인출부;
    상기 명령을 디코딩하고 제어신호를 생성하는 명령 디코더;
    처리될 데이터를 저장하는 레지스터 뱅크;
    제 1 데이터를 저장하는 제 1 메모리 뱅크;
    제 2 데이터를 저장하는 제 2 메모리 뱅크;
    제 3 데이터를 저장하는 제 3 메모리 뱅크;
    상기 제 1 데이터를 판독하여 상기 레지스터 뱅크내의 제 1 레지스터로 입력하는 제 1 데이터 버스;
    상기 제 2 데이터를 판독하여 상기 레지스터 뱅크내의 제 2 레지스터로 입력하는 제 2 데이터 버스;
    상기 제 1 레지스터 및 상기 제 2 레지스터내에서 처리될 데이터를 처리하고 결과를 상기 레지스터 뱅크내의 제 3 레지스터로 기입하는 제 1 처리부; 및
    상기 결과를 상기 제 3 레지스터로부터 상기 제 3 메모리 뱅크로 기입하는 제 3 데이터 버스
    를 포함하는 것을 특징으로 하는 디지털 신호처리기.
  2. 제 1 항에 있어서,
    상기 결과를 처리하여 더 처리된 결과를 생성하고 상기 더 처리된 결과를 상기 레지스터 뱅크내의 포스 (forth) 레지스터내에 저장하는 제 2 처리부를 더 포함하고,
    상기 제 3 데이터 버스는 상기 더 처리된 결과를 상기 포스 레지스터로부터 상기 제 3 메모리로 더 기입하는 것을 특징으로 하는 디지털 신호처리기.
  3. 제 1 항에 있어서,
    상기 제 3 데이터 버스는 상기 제 1 데이터 버스 및 상기 제 2 데이터 버스보다 더 넓은 것을 특징으로 하는 디지털 신호처리기.
  4. 제 2 항에 있어서,
    상기 레지스터 뱅크내의 제 1 군의 레지스터는 상기 제 1 처리부 및 상기 제 2 처리부 모두에 기입할 수 있고, 상기 레지스터 뱅크내의 제 2 군의 레지스터는 상기 제 1 처리부 또는 상기 제 2 처리부 집합 중의 하나에 기입할 수 있는 것을 특징으로 하는 디지털 신호처리기.
  5. 제 2 항에 있어서,
    상기 레지스터 뱅크내의 제 1 군의 레지스터는 상기 제 1 처리부 및 상기 제 2 처리부 모두로부터 판독할 수 있고, 상기 레지스터 뱅크내의 제 2 군의 레지스터 는 상기 제 1 처리부 또는 상기 제 2 처리부 집합 중의 하나로부터 판독할 수 있는 것을 특징으로 하는 디지털 신호처리기.
  6. 명령 데이터에 응답하여 디지털신호를 처리하는 디지털 신호처리기로서, 상기 디지털신호처리기는,
    처리되는 데이터를 저장하는 레지스터 뱅크;
    제 1 데이터를 저장하는 제 1 메모리 뱅크;
    제 2 데이터를 저장하는 제 2 메모리 뱅크;
    제 3 데이터를 저장하는 제 3 메모리 뱅크;
    상기 레지스터 뱅크의 제 1 레지스터로 상기 제 1 데이터를 판독하는 제 1 데이터 버스;
    상기 레지스터 뱅크의 제 2 레지스터로 상기 제 2 데이터를 판독하는 제 2 데이터 버스;
    상기 제 1 레지스터 및 상기 제 2 레지스터에서 처리되는 데이터를 처리하고, 그리고 상기 레지스터 뱅크의 제 3 레지스터로 결과를 기입하는 제 1 처리부; 및
    상기 제 3 레지스터로부터 상기 제 3 메모리 뱅크로 상기 결과를 기입하는 제 3 데이터 버스를 포함하고,
    상기 제 1, 제 2 및 제 3 데이터 버스는 동시에 동작가능하고 상기 레지스터 뱅크와 상기 제 1, 제 2 및 제 3 메모리 뱅크 사이에서 각각 데이터를 교환하는 것을 특징으로 하는 디지털 신호처리기.
  7. 제 6 항에 있어서,
    상기 결과를 처리함으로써 더 처리된 결과를 생성하고, 상기 결과를 상기 레지스터 뱅크의 제 4 레지스터에 저장하는 제 2 처리부를 더 포함하고,
    상기 제 3 데이터 버스는 상기 제 4 레지스터로부터 상기 제 3 메모리로 상기 더 처리된 결과를 더 기입하는 것을 특징으로 하는 디지털 신호처리기.
  8. 명령 데이터에 응답하여 디지털신호를 처리하는 디지털 신호처리기로서, 상기 디지털신호는,
    제 1 메모리와 레지스터 뱅크 사이에 데이터를 판독 및 기입하기 위한 제 1 데이터 버스;
    제 2 메모리와 상기 레지스터 뱅크 사이에 데이터를 판독 및 기입하기 위한 제 2 데이터 버스;
    제 3 메모리와 상기 레지스터 뱅크 사이에 데이터를 판독 및 기입하기 위한 제 3 데이터 버스를 포함하는 군을 포함하고,
    가변 길이의 명령을 인출하는 명령 인출부로서, 상기 가변 길이 명령은 일군의 동작을 요청하는, 명령 인출부; 및
    상기 가변 길이의 명령을 디코딩하고 상기 일군의 동작이 수행되게 하는 명령 디코더를 더 포함하며,
    상기 제 1 데이터 버스, 상기 제 2 데이터 버스, 및 상기 제 3 데이터 버스는 동시에 동작하는 것을 특징으로 하는 디지털 신호처리기.
  9. 제 6 항에 있어서,
    상기 제 3 데이터 버스는 상기 제 1 데이터 버스 및 상기 제 2 데이터 버스보다 넓은 것을 특징으로 하는 디지털 신호처리기.
  10. 제 1 메모리 뱅크로부터 제 1 데이터 버스를 통해 제 1 데이터를 수신하는 단계;
    상기 제 1 데이터를 제 1 레지스터에 저장하는 단계;
    제 2 메모리 뱅크로부터 제 2 데이터 버스를 통해 제 2 데이터를 수신하는 단계;
    상기 제 2 데이터를 제 2 레지스터에 저장하는 단계;
    상기 제 1 데이터 및 상기 제 2 데이터를 사용하여 결과를 생성하는 단계;
    상기 결과를 제 3 레지스터에 저장하는 단계;
    상기 결과를 제 3 데이터 버스를 통해 제 3 메모리 뱅크로 기입하는 단계를 포함하고,
    상기 제 1, 제 2 및 제 3 데이터 버스는 동시에 동작가능하고 상기 레지스터들과 상기 제 1, 제 2 및 제 3 메모리 뱅크 사이에서 각각 데이터를 교환하는 것을 특징으로 하는 데이터 처리방법.
  11. 제 10 항에 있어서,
    상기 제 1 데이터는 제 1 데이터값을 포함하고, 그리고
    상기 제 2 데이터는 제 2 데이터 값을 포함하는 것을 특징으로 하는 데이터 처리방법.
  12. 제 10 항 또는 제 11 항에 있어서,
    상기 제 3 데이터 버스는 상기 제 1 데이터 버스보다 넓은 것을 특징으로 하는 데이터 처리방법.
  13. 제 10 항 또는 제 11 항에 있어서,
    상기 제 3 데이터 버스는 상기 제 1 데이터 버스 및 상기 제 2 데이터 버스보다 넓은 것을 특징으로 하는 데이터 처리방법.
  14. 제 10 항에 있어서,
    제 1 처리부를 사용하여 상기 결과를 생성하는 단계; 및
    상기 제 3 레지스터에 접속된 제 2 처리부를 사용하여 상기 제 1 결과로부터 제 2 결과를 생성하는 단계를 더 포함하는 것을 특징으로 하는 데이터 처리방법.
  15. 제 7 항에 있어서,
    상기 레지스터 뱅크의 제 1 세트의 레지스터는 상기 제 1 처리부 및 상기 제 2 처리부 모두로 기입할 수 있고, 그리고
    상기 레지스터 뱅크의 제 2 세트의 레지스터는 상기 제 1 처리부 또는 상기 제 2 처리부의 어느 하나로 기입할 수 있는 것을 특징으로 하는 디지털 신호처리기.
  16. 제 7 항에 있어서,
    상기 레지스터 뱅크의 제 1 세트의 레지스터는 상기 제 1 처리부 및 상기 제 2 처리부 모두로부터 판독할 수 있고, 그리고
    상기 레지스터 뱅크의 제 2 세트의 레지스터는 상기 제 1 처리부 또는 상기 제 2 처리부의 어느 하나로부터 판독할 수 있는 것을 특징으로 하는 디지털 신호처리기.
  17. 제 6 항, 제 7 항, 제 9 항 또는 제 15 항 중 어느 한 항에 있어서,
    상기 명령 데이터는 가변 길이 명령을 포함하고, 상기 가변 길이 명령은 가변 개수의 명령 프래그먼트를 포함하며,
    상기 디지털 신호처리기는, 하나 이상의 최대길이 완전 명령에 대하여 충분한, 상기 가변 길이 명령을 포함하는 명령 데이터를 인출하는 명령 인출부; 및 상기 명령을 디코딩하고 제어 신호를 생성하는 명령 디코더를 더 포함하는 것을 특징으로 하는 디지털 신호처리기.
  18. 제 6 항에 있어서,
    상기 제 1 데이터 버스는 상기 제 1 메모리 뱅크와 상기 레지스터 뱅크 사이에서 데이터를 더 기입하고;
    상기 제 2 데이터 버스는 상기 제 2 메모리 뱅크와 상기 레지스터 뱅크 사이에서 데이터를 더 기입하고;
    상기 제 3 데이터 버스는 상기 제 3 메모리 뱅크와 상기 레지스터 뱅크 사이에서 데이터를 더 기입하며,
    상기 제 1 데이터 버스, 상기 제 2 데이터 버스, 및 상기 제 3 데이터 버스는 동시에 동작하는 것을 특징으로 하는 디지털 신호처리기.
  19. 제 18 항에 있어서,
    가변 길이의 명령을 인출하는 명령 인출부로서, 상기 가변 길이 명령은 일군의 동작을 요청하는, 명령 인출부;
    상기 가변 길이의 명령을 디코딩하고 상기 일군의 동작이 수행되도록 하는 명령 디코더를 더 포함하는 것을 특징으로 하는 디지털 신호처리기.
  20. 제 18 항에 있어서,
    상기 제 1 처리부와 동시에 상기 레지스터 뱅크의 데이터를 프로세싱하는 제 2 처리부를 더 포함하는 것을 특징으로 하는 디지털 신호처리기.
  21. 제 6 항에 있어서,
    상기 제 1 데이터 버스는 상기 제 3 데이터 버스보다 좁은 것을 특징으로 하는 디지털 신호처리기.
  22. 제 6 항에 있어서,
    상기 제 1 데이터 버스, 상기 제 2 데이터 버스, 및 상기 제 3 데이터 버스를 제어하는 제어 시스템을 더 포함하는 것을 특징으로 하는 디지털 신호처리기.
  23. 제 7 항에 있어서,
    상기 제 1 처리부는 곱셈-누산 유닛 (Multiply-Accumulate Unit; MAC) 이고,
    상기 제 2 처리부는 산술 논리 유닛 (Arithmetic Logic Unit; ALU) 인 것을 특징으로 하는 디지털 신호처리기.
  24. 제 7 항에 있어서,
    상기 처리부들은 각각의 데이터 버스로부터 데이터를 수신하도록 동작가능한 것을 특징으로 하는 디지털 신호처리기.
  25. 제 7 항에 있어서,
    제 1 세트의 레지스터는 상기 제 1 처리부 및 상기 제 2 처리부 모두로 데이터를 기입하도록 동작가능하고;
    제 2 세트의 레지스터는 상기 제 1 처리부로 데이터를 기입하지만, 상기 제 2 처리부로는 데이터를 기입하지 않도록 동작가능한 것을 특징으로 하는 디지털 신호처리기.
  26. 각각이 동작을 요청하는 일군의 명령 프래그먼트를 갖는 가변 길이 명령을 사용하여 디지털 신호처리기를 동작시키는 방법으로서,
    a) 제 1 클록사이클의 제 1 클록위상 동안, 제 1 레지스터로부터 사전에 처리된 데이터를 판독하여 제 1 처리부로 입력하는 단계;
    b) 상기 일군의 명령 프래그먼트로부터의 제 1 명령 프래그먼트에 기초하여 상기 사전에 처리된 데이터를 처리하고, 상기 제 1 클록사이클 동안, 2 배의 처리된 데이터를 산출하는 단계;
    c) 상기 일군의 명령 프래그먼트로부터의 제 2 명령 프래그먼트에 기초하여 새로운 데이터를 처리하고, 상기 제 1 클록사이클 동안, 새로운 처리된 데이터를 산출하는 단계;
    d) 상기 제 1 클록사이클의 제 2 위상 동안, 상기 새로운 처리된 데이터를 상기 제 1 레지스터로 기입하는 단계; 및
    e) 상기 제 1 클록사이클의 상기 제 2 위상 동안, 상기 2 배의 처리된 데이터를 제 2 레지스터로 기입하는 단계
    를 포함하는 것을 특징으로 하는 디지털 신호처리기를 동작시키는 방법.
  27. 제 26 항에 있어서,
    단계 b) 는 제 1 처리부에 의해 수행되고, 단계 c) 는 제 2 처리부에 의해 수행되는 것을 특징으로 하는 디지털 신호처리기를 동작시키는 방법.
  28. 제 26 항에 있어서,
    상기 가변 길이 명령을 포함하는 명령 데이터를 판독하는 단계;
    다음 명령 길이를 결정하는 단계; 및
    상기 다음 명령 길이와 동일한 상기 명령 데이터 내의 데이터양을 디코딩하는 단계를 더 포함하는 것을 특징으로 하는 디지털 신호처리기를 동작시키는 방법.
  29. 제 1 입력 데이터 및 제 2 입력 데이터에 응답하여 결과 데이터를 생성하는 복수의 처리부;
    상기 제 1 및 제 2 입력 데이터를 상기 복수의 처리부 중 적어도 제 1 및 제 2 처리부로 각각 전송하는 제 1 데이터 버스 및 제 2 데이터 버스;
    상기 결과 데이터를 상기 복수의 처리부 중 적어도 제 3 처리부로 전송하는 제 3 데이터 버스; 및
    상기 복수의 처리부 중 적어도 상기 제 1 및 제 2 처리부에 의하여 액세스가능한 레지스터들을 가지고, 상기 복수의 처리부 중 2 이상에 의하여 동시에 수행되는 다중 데이터 동작을 용이하게 하는, 레지스터 뱅크를 포함하고,
    상기 제 1 및 제 2 데이터 버스 중 하나 이상은 상기 제 3 데이터 버스보다 좁고, 그리고
    단일 명령 및 연관된 레지스터의 데이터에 응답하여, 상기 제 1, 제 2 및 제 3 데이터 버스는 대응하는 상기 복수의 처리부 중 적어도 제 1, 제 2, 및 제 3 처리부에 통신가능하게 접속되는 것을 특징으로 하는 디지털 신호처리기.
  30. 제 29 항에 있어서,
    상기 제 1, 제 2 및 제 3 데이터 버스의 통신가능한 접속을 제어하는 제어 로직을 더 포함하는 것을 특징으로 하는 디지털 신호처리기.
  31. 제 29 항에 있어서,
    상기 복수의 처리부 중 상기 제 1 처리부는 곱셈-누산 유닛 (MAC) 인 것을 특징으로 하는 디지털 신호처리기.
  32. 제 31 항에 있어서,
    상기 복수의 처리부 중 상기 제 2 처리부는 산술 논리 유닛 (ALU) 인 것을 특징으로 하는 디지털 신호처리기.
  33. 제 29 항에 있어서,
    상기 복수의 처리부는 하나 이상의 산술 논리 유닛 (ALU) 및 하나의 곰셉-누산 유닛 (MAC) 을 포함하는 것을 특징으로 하는 디지털 신호처리기.
  34. 제 29 항에 있어서,
    상기 레지스터 뱅크는 상기 복수의 처리부 중 적어도 제 1 및 제 2 처리부에 의해 데이터의 인터럽트되지 않은 파이프라인 처리를 더 용이하게 하는 것을 특징으로 하는 디지털 신호처리기.
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 디지털 신호처리기를 동작시키는 방법으로서,
    제 1 클록사이클의 제 1 클록위상 동안, 레지스터로부터의 처리된 데이터를 판독하여 제 1 처리부로 입력하는 단계;
    상기 제 1 클록사이클 동안, 상기 제 1 처리부를 사용하여 상기 처리된 데이터를 처리하고 더 처리된 데이터를 산출하는 단계;
    상기 제 1 클록사이클 동안, 제 2 처리부 내의 다른 데이터를 처리하여 새로운 처리된 데이터를 산출하는 단계;
    상기 제 1 클록사이클의 제 2 위상 동안, 상기 새로운 처리된 데이터를 상기 레지스터에 기입하는 단계
    를 포함하는 것을 특징으로 하는 디지털 신호처리기를 동작시키는 방법.
  40. 제 39 항에 있어서,
    상기 제 1 클록사이클의 상기 제 2 위상 동안, 상기 더 처리된 데이터를 제 2 레지스터에 기입하는 단계를 더 포함하는 것을 특징으로 하는 디지털 신호처리기를 동작시키는 방법.
  41. 삭제
  42. 삭제
  43. 어드레스 공간을 갖는 메모리내에 저장된 명령을 사용하여 디지털 신호처리기를 제어하는 방법으로서,
    제 1 명령의 제 1 부분을 포함하는 상기 메모리의 제 1 데이터 워드를 기입하는 단계; 및
    상기 제 1 명령의 제 2 부분 및 제 2 명령의 제 1 부분을 포함하는 상기 메모리의 제 2 데이터 워드를 기입하는 단계를 포함하고,
    상기 제 1 명령 및 상기 제 2 명령은 일군의 명령 프래그먼트로 구성되고, 각 명령 프래그먼트는 특정 동작을 수행하기 위한 것임을 특징으로 하는 디지털 신호처리기를 제어하는 방법.
  44. 어드레스 공간을 갖는 메모리내에 저장된 명령을 사용하여 디지털 신호처리기를 제어하는 방법으로서,
    제 1 명령의 제 1 부분을 포함하는 상기 메모리의 제 1 데이터 워드를 기입하는 단계; 및
    상기 제 1 명령의 제 2 부분 및 제 2 명령의 제 1 부분을 포함하는 상기 메모리의 제 2 데이터 워드를 기입하는 단계를 포함하고,
    상기 제 1 명령은 복수의 명령 프래그먼트로 구성되고, 각 명령 프래그먼트는 특정 동작을 수행하는 것을 특징으로 하는 디지털 신호처리기를 제어하는 방법.
  45. 제 43 항에 있어서,
    상기 제 1 명령 및 상기 제 2 명령은 상이한 길이인 것을 특징으로 하는 디지털 신호처리기를 제어하는 방법.
  46. 삭제
  47. 제 43 항에 있어서,
    상기 명령 프래그먼트는 제 1 명령 프래그먼트 및 제 2 명령 프래그먼트를 포함하고, 상기 제 1 명령 프래그먼트는 상기 제 2 명령 프래그먼트에 의해 수행된 일군의 동작의 서브세트인 일군의 동작을 요청하는 것을 특징으로 하는 디지털 신호처리기를 제어하는 방법.
  48. 제 47 항에 있어서,
    상기 제 1 명령 프래그먼트는 상기 제 2 명령 프래그먼트보다 더 짧은 것을 특징으로 하는 디지털 신호처리기를 제어하는 방법.
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
KR1020007010577A 1998-03-18 1999-03-04 디지털 신호처리기 KR100940465B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020067005979A KR100896674B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기
KR1020067005980A KR100835148B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US4410898A 1998-03-18 1998-03-18
US4410498A 1998-03-18 1998-03-18
US4408798A 1998-03-18 1998-03-18
US4408998A 1998-03-18 1998-03-18
US09/044,087 1998-03-18
US09/044,088 US6496920B1 (en) 1998-03-18 1998-03-18 Digital signal processor having multiple access registers
US09/044,086 US6425070B1 (en) 1998-03-18 1998-03-18 Variable length instruction decoder
US09/044,086 1998-03-18
US09/044,088 1998-03-18
US09/044,089 1998-03-18
US09/044,104 1998-03-18
US09/044,108 1998-03-18
PCT/US1999/004887 WO1999047999A1 (en) 1998-03-18 1999-03-04 A digital signal processor

Related Child Applications (2)

Application Number Title Priority Date Filing Date
KR1020067005980A Division KR100835148B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기
KR1020067005979A Division KR100896674B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기

Publications (2)

Publication Number Publication Date
KR20010082524A KR20010082524A (ko) 2001-08-30
KR100940465B1 true KR100940465B1 (ko) 2010-02-04

Family

ID=27556460

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020067005979A KR100896674B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기
KR1020007010577A KR100940465B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기
KR1020067005980A KR100835148B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020067005979A KR100896674B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067005980A KR100835148B1 (ko) 1998-03-18 1999-03-04 디지털 신호처리기

Country Status (12)

Country Link
EP (2) EP1457876B1 (ko)
JP (4) JP2002507789A (ko)
KR (3) KR100896674B1 (ko)
CN (2) CN1279435C (ko)
AR (5) AR026081A2 (ko)
AT (1) ATE297567T1 (ko)
AU (1) AU2986099A (ko)
CA (1) CA2324219C (ko)
DE (1) DE69925720T2 (ko)
DK (1) DK1066559T3 (ko)
HK (2) HK1035594A1 (ko)
WO (1) WO1999047999A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1457876B1 (en) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systems for and method of controlling a digital signal processor using a variable length instruction set, method of generating and storing said instructions and memory comprising said instructions
JP4100300B2 (ja) * 2003-09-02 2008-06-11 セイコーエプソン株式会社 信号出力調整回路及び表示ドライバ
JP4661169B2 (ja) * 2003-11-14 2011-03-30 ヤマハ株式会社 ディジタルシグナルプロセッサ
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
US7246218B2 (en) * 2004-11-01 2007-07-17 Via Technologies, Inc. Systems for increasing register addressing space in instruction-width limited processors
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
FR3021427B1 (fr) * 2014-05-22 2016-06-24 Kalray Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions
WO2016016730A1 (en) * 2014-07-30 2016-02-04 Linear Algebra Technologies Limited Low power computational imaging
EP4116819A1 (en) * 2014-07-30 2023-01-11 Movidius Limited Vector processor
JP7384374B2 (ja) * 2019-02-27 2023-11-21 株式会社ウーノラボ 中央演算処理装置
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099229A (en) * 1977-02-14 1978-07-04 The United States Of America As Represented By The Secretary Of The Navy Variable architecture digital computer
US5293611A (en) * 1988-09-20 1994-03-08 Hitachi, Ltd. Digital signal processor utilizing a multiply-and-add function for digital filter realization
JP2791086B2 (ja) * 1989-03-15 1998-08-27 富士通株式会社 命令プリフェッチ装置
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
JP2682761B2 (ja) * 1991-06-18 1997-11-26 松下電器産業株式会社 命令プリフェッチ装置
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
JPH06103068A (ja) * 1992-09-18 1994-04-15 Toyota Motor Corp データ処理装置
JPH06250854A (ja) * 1993-02-24 1994-09-09 Matsushita Electric Ind Co Ltd 命令プリフェッチ装置
JP3168845B2 (ja) * 1994-10-13 2001-05-21 ヤマハ株式会社 ディジタル信号処理装置
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US5710914A (en) * 1995-12-29 1998-01-20 Atmel Corporation Digital signal processing method and system implementing pipelined read and write operations
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
EP1457876B1 (en) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systems for and method of controlling a digital signal processor using a variable length instruction set, method of generating and storing said instructions and memory comprising said instructions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018012828A1 (ko) * 2016-07-13 2018-01-18 김태형 다기능 연산 장치 및 고속 푸리에 변환 연산 장치
US10949493B2 (en) 2016-07-13 2021-03-16 Tae Hyoung Kim Multi-functional computing apparatus and fast fourier transform computing apparatus

Also Published As

Publication number Publication date
JP6152558B2 (ja) 2017-06-28
AU2986099A (en) 1999-10-11
KR100835148B1 (ko) 2008-06-04
HK1035594A1 (en) 2001-11-30
AR026081A2 (es) 2002-12-26
JP2015028793A (ja) 2015-02-12
CN1523491A (zh) 2004-08-25
DK1066559T3 (da) 2005-10-03
HK1094608A1 (en) 2007-04-04
KR20010082524A (ko) 2001-08-30
AR026078A2 (es) 2002-12-26
AR026082A2 (es) 2002-12-26
CA2324219A1 (en) 1999-09-23
AR026080A2 (es) 2002-12-26
KR100896674B1 (ko) 2009-05-14
EP1457876A3 (en) 2006-11-02
JP2002507789A (ja) 2002-03-12
KR20060040749A (ko) 2006-05-10
EP1066559A1 (en) 2001-01-10
JP2010282637A (ja) 2010-12-16
CN1279435C (zh) 2006-10-11
JP5677774B2 (ja) 2015-02-25
CN1301363A (zh) 2001-06-27
CA2324219C (en) 2011-05-10
EP1457876B1 (en) 2017-10-04
DE69925720T2 (de) 2006-03-16
EP1066559B1 (en) 2005-06-08
DE69925720D1 (de) 2005-07-14
WO1999047999A1 (en) 1999-09-23
KR20060040748A (ko) 2006-05-10
ATE297567T1 (de) 2005-06-15
AR026079A2 (es) 2002-12-26
EP1457876A2 (en) 2004-09-15
JP6300284B2 (ja) 2018-03-28
JP2016146189A (ja) 2016-08-12

Similar Documents

Publication Publication Date Title
JP5677774B2 (ja) デジタル信号プロセッサ
US6615341B2 (en) Multiple-data bus architecture for a digital signal processor using variable-length instruction set with single instruction simultaneous control
US20070186079A1 (en) Digital signal processor with variable length instruction set
JP2016146189A5 (ko)
US5922066A (en) Multifunction data aligner in wide data width processor
US6002880A (en) VLIW processor with less instruction issue slots than functional units
US7308559B2 (en) Digital signal processor with cascaded SIMD organization
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
EP2267596B1 (en) Processor core for processing instructions of different formats
JP2002529847A (ja) ビットfifoを有するディジタル信号プロセッサ
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
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
EP0472025A2 (en) A microprocessor
US5862399A (en) Write control unit
JPH05173778A (ja) データ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121227

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170706

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee