KR100472706B1 - 복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서 - Google Patents

복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서 Download PDF

Info

Publication number
KR100472706B1
KR100472706B1 KR10-2002-7007756A KR20027007756A KR100472706B1 KR 100472706 B1 KR100472706 B1 KR 100472706B1 KR 20027007756 A KR20027007756 A KR 20027007756A KR 100472706 B1 KR100472706 B1 KR 100472706B1
Authority
KR
South Korea
Prior art keywords
processor
digital signal
data
processors
register
Prior art date
Application number
KR10-2002-7007756A
Other languages
English (en)
Other versions
KR20020059763A (ko
Inventor
바브로데이비드케이.
미첼제임즈에이.
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20020059763A publication Critical patent/KR20020059763A/ko
Application granted granted Critical
Publication of KR100472706B1 publication Critical patent/KR100472706B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • 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/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

디지털 신호 프로세서(10)는 마스터 프로그래머블 컨트롤러(18)에 의해 제어될 수 있는 다수의 독립 서브 프로세서(14,20,24,28,30)를 사용한다. 예를 들어, 특정 입력 프로세서(14)는 입력 신호를 처리할 수 있고, 특정 출력 프로세서(20)는 출력 신호를 처리할 수 있다. 또한 이러한 프로세서의 각각은 입력 및 출력 처리가 필요하지 않을 때 수학적 기능을 달성할 수 있다. 다양한 프로세서는 데이터를 수신하여 시스템내의 임의의 프로세서에 데이터를 제공하는 범용 레지스터(16)를 통해 서로 통신할 수 있다. 수학적 프로세서(26)는 요구되는 수학적 기능을 달성하는데 필요한 대로 추가될 수 있다. 또한, RAM 프로세서(24)는 본 발명의 일실시예에서 중간 계산 결과를 유지하기 위해 사용될 수 있다. 이러한 방법으로, 모든 구성요소를 재설계할 필요 없이 다양한 상이한 연산을 수용하는 적용가능하고 스케일러블한 설계를 구현할 수 있다.

Description

복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서{DIGITAL SIGNAL PROCESSOR HAVING A PLURALITY OF INDEPENDENT DEDICATED PROCESSORS}
본 발명은 일반적으로 디지털 신호 처리에 관한 것이고, 특히 디지털 신호 프로세서에 대한 구조에 관한 것이다.
디지털 신호 프로세서는 일반적으로 수의 이산 시퀀스와 같이 측정된 정보를 수정 또는 분석한다. 디지털 신호 프로세서는 예로서, 텔레비전, 멀티미디어, 오디오, 디지털 화상 처리 및 텔레포니와 같은 다양한 신호 처리 애플리케이션에 대해 사용된다. 이러한 애플리케이션의 대부분은 특정 양의 수학적 조작, 보통 신호의 승산 및 가산을 포함한다.
다수의 디지털 신호 프로세서는 다수의 판매자로부터 입수가능하다. 일반적으로, 이러한 프로세서의 각각은 특정 기능을 구비하여 나온다는 의미에서 고정되어 있다. 사용자는 그들의 필요와 비용에 가장 잘 맞는 프로세서를 얻을려고 한다. 그러나, 디지털 신호 프로세서의 전체 구조를 수정하는 사용자의 능력은 상대적으로 제한되어 있다. 따라서, 이러한 제품은 고정되고 변경되지 않는 세트의 기능을 갖는 유닛으로서 패키지화된다.
다수의 경우에, 풀어야 할 특정 문제에 특별히 적용되는 복잡한 기능을 실행하는 디지털 신호 프로세서를 생산하는 능력을 갖는 것이 바람직하다. 따라서, 디지털 신호 프로세서의 하드웨어 및 소프트웨어는 특정 기능에 적용되는 것이 바람직하다. 그러나, 그러한 디지털 신호 프로세서는 상대적으로 제한된 시장을 가질 것이다. 실리콘 프로세싱에 투자가 이루어질 때, 상대적으로 특정 필요를 만족시키도록 설계된 디지털 신호 프로세서를 제공하는 것은 실행가능하지 않을 수 있다. 그러나, 그러한 디바이스의 필요성은 매우 높다. 이것은 필요한 특징만을 제공하기 때문에, 발생되는 비용에 대해 가장 큰 성능을 제공하게 된다. 더욱이, 부당하게 비용이 증가되는 일 없이 최고의 성능을 내는 특징을 제공할 수 있다. 따라서, 스케일러블하고 다양한 구성에서 다양한 특정 애플리케이션을 구현하기 위해 적용될 수 있는 디지털 신호 프로세서가 필요하게 되었다.
도 1은 본 발명의 일 실시예의 블록도,
도 2는 도 1에 도시된 마스터 프로그램 컨트롤러의 일실시예에 대한 블록도,
도 3은 도 1에 도시된 프로그래머블 입력 프로세서의 일실시예에 대한 블록도,
도 4는 도 1에 도시된 프로그래머블 출력 프로세서의 일실시예에 대한 블록도,
도 5 및 도 6은 도 1에 도시된 범용 레지스터와 관련하여 사용되는 체이닝 프로세스를 도시하는 개략도,
도 7은 본 발명의 일 실시예에 따른 프로그래머블 RAM 프로세서의 일실시예를 도시하는 블록도,
도 8은 가산 및 감산을 실현하는 본 발명의 일 실시예에 따른, 도 1에 도시된 프로그래머블 수학적 프로세서의 일실시예에 대한 블록도,
도 9는 곱셈누산을 실현하는 본 발명의 일실시예에 따른, 도 1에 도시된 프로그래머블 수학적 프로세서의 일실시예에 대한 블록도,
도 10, 도 11 및 도 12는 본 발명의 실현과 관련하여 사용될 수 있는 데이터 경로 인터페이스 방법을 도시하는 도면, 및
도 13은 본 발명의 일실시예에 대한 순서도.
일 태양에 따르면, 디지털 신호 프로세서는 수학적 프로세서, 입력 프로세서 및 출력 프로세서를 포함한다. 입력 프로세서는 상기 디지털 신호 프로세서로의 입력 신호를 처리한다. 출력 프로세서는 디지털 신호 프로세서로부터의 출력 신호를처리한다. 마스터 프로세서는 수학적 프로세서, 입력 프로세서 및 출력 프로세서를 제어한다. 기억장치는 상기 프로세서의 각각에 의해 선택적으로 액세스가능하다.
다른 태양은 첨부된 상세한 설명 및 청구항에 제시되어 있다.
디지털 신호 프로세서(10)는 각각 자체 명령 세트를 가질 수 있는 복수의 마이크로프로세서(14,18,20,24,26)를 포함할 수 있다. 개별적인 프로세서는 서로 직접 통신할 필요가 없고 대신에 레지스터(16)의 일부인 범용 레지스터(GPR; 32)와 관련된 기억 레지스터를 통하여 통신할 수 있다. 따라서, 프로세서중 하나에 의해 실행된 연산의 결과는 또 다른 프로세서에 의해 액세스되기 위해 GPR(32)에 저장될 수 있다.
각각의 프로세서는 자체 코드 세트로 별개로 프로그램될 수 있다. 본 발명의 일실시예에서, 각각의 프로세서에 대한 명령 세트는 그 프로세서에 대한 특정 기능을 수행하는 로직을 제공할 수 있고, 그래서 서브 프로세서를 실현하는 별개의 하드웨어 로직에 대한 필요를 제거할 수 있다.
마스터 프로그래머블 컨트롤러(MPC; 18)는 또 다른 프로세서에 대한 타이밍을 제공할 수 있고 명령 실행 컨트롤러와 같이 동작할 수 있다. 소정의 프로세서내의 소정의 명령을 실행하는 타임을 알고 있어서, MPC(18)는 소정의 프로세서로부터의 응답을 기다린다. 실제로, MPC(18)는 매 사이클마다 다른 MPC가 동작하는 것을 돕도록 이네이블하는 명령 세트를 갖는다. 일반적으로, 사이클당 하나의 명령이 실행된다.
각각의 프로세서가 독립적으로 프로그램될지라도, 명령 세트는 하나의 프로세서에 대한 명령이 다른 프로세서에 사용되기 위해 수정될 수 있도록 충분히 유사할 수 있다. 이로 인해, 각각의 프로세서를 프로그램하는 시간이 감소될 수 있다.
프로그래머블 입력 프로세서(PIP; 14)는 선입 선출(FIFO) 레지스터(12)와 같은 수신 버퍼로부터 입력을 수신한다. PIP(14)는 본 발명의 임의의 실시예에서, 입력 신호의 스케일링 또는 정밀 변화를 제공할 수 있다. PIP(14)는 입력 신호가 유용할 때 입력 데이터 처리를 제공할 수 있고 다른 타임에 수학적 연산을 제공할 수 있기 때문에 유익할 수 있다. MPC(18)는 PIP(14)가 소정의 연산을 완료하기를 기다릴 수 있기 때문에 입력 데이터는 시스템(10)과 동기화될 필요가 없다. 따라서, 실제로, MPC(18)는 다양한 비동기화된 서브프로세서 유닛에 대하여 동기화를 제공한다.
프로그래머블 출력 프로세서(POP; 20)는 선입 선출(FIFO)레지스터와 같은 전송 버퍼(22)에 출력을 제공한다. 또한 POP(20)는 전송 버퍼(22)에 전송할 입력 데이터가 아무것도 유용하지 않을 때 수학적 연산을 행할 수 있다.
프로그래머블 랜덤 액세스 메모리(RAM) 프로세서(PRP; 24)는 기본적으로 데이터를 저장하고 검색한다. 이것은 캐시와 유사한 방식으로 중간 결과치를 저장하는데 있어 유익할 수 있다. 이것은 특히 2차원 이미지 프로세싱에 적용될 수 있다.
본 발명의 특정 실시예는 정상 길이의 워드를 사용할 수 있지만, 다른 실시예는 소위 초장형 명령어(very long instruction word; VLIW)를 사용할 수 있다. VLIW는 로직이 명령내에 실제로 포함될 수 있고 다양한 서브 프로세서를 조정하는 글루 로직이 불필요할 수 있기 때문에 임의의 실시예에서 유익할 수 있다.
각각의 명령이 데이터에 독립적인 소정의 실행 시간을 가질 수 있기 때문에, MPC(18)는 한 사이클씩 다양한 프로세서 연산을 제어할 수 있다. 각각의 프로세서는 모든 다른 프로세서와 병행하여 연산할 수 있다. 따라서, 실제로, 도 1에 도시된 구조는 병렬 프로세서이지만, 이 구조는 일반적인 순환 기능에 기초하여 크게 고장나는 그러한 구조이다.
수많은 수학적 프로세서는 특정 응용에 대한 특정한 필요에 의해 유닛(16)내에 제공될 수 있다. 설명된 실시예에서, 한 쌍의 동일한 가산 및 감산 프로그래머블 수학적 프로세서(PMP; 28a,28b)는 한 쌍의 곱셈누산(MAC) 프로그래머블 수학적 프로세서(PMP; 30a,30b)와 조합된다. 그러나, 다양한 다른 수학적 프로세서는 임의의 그들 또는 모든 도시된 PMPs에 더하여 또는 대신하여 디지털 신호 프로세서(10)에 플러그 인될 수 있다.
본 발명의 일실시예에서, 각각의 프로세서(14,18,20,24,28,30)는 프로그램가능하고, 자체 랜덤 액세스 메모리를 포함하며, 랜덤 액세스 메모리 콘텐츠를 명령으로 디코딩할 수 있다. 프로그래머블 프로세서의 제어는 MPC(18)에 의해 이루어진다. MPC(18)는 소정의 명령이 임의의 프로그래머블 프로세서에 의해 실행될 때 제어한다.
따라서, MPC(18)는 명령의 실행의 시간을 제어하고 클록 사이클 액티브한 명령의 유일한 프로바이더이다. 나머지 프로그래머블 프로세서는 동시에 실행한다.
레지스터 모듈(16)은 데이터를 저장하고 프로그래머블 프로세서에 의해 데이터의 액세스를 허용하는 범용 레지스터를 포함한다. 프로그래머블 랜덤 액세스 메모리 프로세서(24), 프로그래머블 입력 프로세서(14) 및 프로그래머블 출력 프로세서(20)를 포함하여 입력, 출력 및 데이터 조작/기억 연산이 수학적 연산과 병행하여 매우 수월하게 일어날 수 있다.
MPC(18)
MPC(18)는 MPC(18)에 대해 슬레이브 프로세서로 여겨질 수 있는 프로세서(14,20,24,28,30)를 제어한다. 따라서, MPC(18)는 도 2에 도시된 바와 같이, 명령 메모리(40) 및 명령 디코드(38)를 포함한다. MPC(18)는 슬레이브 프로세서가 명령을 실행할 수 있는 때를 결정하고 이 슬레이브 프로세서는 외부 데이터 버스(19)에 대한 데이터 판독 또는 데이터 기록이 완료될 때를 통신한다. 또한, MPC(18)는 사이클 종속 신호 또는 명령 종속 신호를 발생할 수 있다. 그러한 신호의 예는 인터럽트, 데이터 태그등을 포함한다.
본 발명의 특정 실시예에서, MPC(18)는 슬레이브 프로세서 타이밍에 관련된 유일한 프로세서일 수 있다. MPC(18)는 제어 신호를 미터링하는 능력을 가질 수 있고 전체적으로 이러한 미터링된 신호의 상태에 기초하여 슬레이브 프로세서에 영향을 줄 수 있다. 또한 MPC(18)는 언제 프로세서가 소정의 명령을 실행하는 지를 제어할 수 있다. 이러한 모듈은 클록 사이클이 정확하고 VLIW를 사용하여 일 실시예의 병령 연산을 제어하도록 사용될 수 있다. MPC(18)는 각각의 다른 프로세서에 대한 명령 이네이블을 포함한다. 이러한 명령 이네이블은 슬레이브 프로세서가 그의 다음 명령을 처리하는 때를 제어하도록 사용된다. 널 연산은 특정 클록 사이클 동안 이네이블을 발생시키지 않음으로써 실행될 수 있다.
MPC(18)는 본 발명의 일실시예에서 아래의 명령 타입을 디코딩할 수 있다.
ENABLE 모든 슬레이브 프로세서의 독립 제어 이네이블에 대한 명령
RESET_PC 각각의 슬레이브 프로세서의 명령 메모리에 대한 프로그램 카운터를 리셋하는 명령
WAITONX PIP 및 POP로부터의 외부 데이터에 MPC 및 이 MPC의 모든 슬레이브 프로세서를 동기화시키기 위해 사용되는 명령
REPEAT_N 2 종류의 반복 분기 즉, REPEAT N 타임 또는 REPEAT 포에버를 제공하는 명령
JUMP_IF 점프 조건부 명령
JUMPN 3종류의 점프 분기 즉, JUMP N 타임, JUMP 포에버 및 기능 콜에 대한 JUMP RETURN을 제공하는 명령
RETURN JUMP RETURN 명령 플러스 원으로 다시 프로그램 카운터를 리셋 하는 명령, 이것은 기능 콜에 대해 사용될 수 있다.
본 발명의 일 실시예에서, 명령 디코드는 아래의 표를 사용하여 실현될 수 있다(괄호 안은 명령당 비트의 수).
상기 명령 디코드 표에서, USR_DEF는 예를 들어 인터럽트일 수 있는 스페어 출력을 제공한다. 이러한 출력은 등록되고 일단 세트되면 동일한 명령에 의해 리셋될 때까지 세트상태로 남아 있게 된다. TAG는 전송 FIFO 레지스터(22)에 대한 태그를 발생하도록 사용된다. 이 태그는 순환 데이터와 같은 항목에 대해 사용될 수 있다. 순환 데이터의 일 예는 이미지 프로세싱 애플리케이션에서의 RGB 화소이다. 이러한 출력은 등록되고 일단 세트되면, 동일한 명령에 의해 리셋될 때까지 세트로 남는다.
PIP, POP, PRP, PMP0-3은 1로 세트될 때 각각의 슬레이브 프로세서에 대한 명령의 실행을 이네이블하는 비트이다. ITYPE는 상기 명령 디코드 표내에 정의된 과 같은 명령 타입이다. RMPC, RPIP, RPOP, RPRP, RPMP0-3은 1로 세트될 때 각각의 프로세서에 대한 상응하는 프로그램 카운터를 리셋하는 비트이다. 이 프로그램 카운터는 각각의 프로세서에 의해 실행되는 명령의 현 로케이션을 기억하기 위해 사용된다.
WAIT_POP 및 WAIT_PIP는 하나의 1이 상응하는 POP 또는 PIP 슬레이브 프로세서로부터 겸출될 때까지 MPC(18)가 대기하게 한다. 이러한 기능은 연산되는 데이터 블록을 트리거 업하거나 데이터 블록을 내보내기 위해 사용될 수 있다. REPEAT_N은 마지막 명령이 N+1 번 반복되게 하는 값이다. 0은 한번 반복을 나타내고, 1은 2번 반복을 나타내며, 나머지도 이와 같다. RETURN_N이 최대이면, REPEAT 포에버가 나타날 것이다. 최대값은 필드내에 사용될 수 있는 최대값으로서 정의된다(예를 들어, REPEAT_N(5)는 "11111"이고 십진법으로는 31이 된다). 반복 명령은 클록 사이클의 실행을 요하지 않는다.
JUMP_IF 명령은 다음 방식으로 동작한다. 제1 단계에서, JUMP_IF의 제1 인카운터 명령은 비교기를 활성화시킨다. 제2 단계에서, 이전 것과 동일한 JUMP_IF의 제2 인카운터 명령은 비교기가 제1 단계에서 활성화된 것과 같이 태그의 검출된 매치를 가지고 있다면 어드레스로의 점프를 야기하게 된다. 점프후에, JUMP_IF는 활성화해제된다. 제3 단계에서, 태그가 제1 단계와 상이한 JUMP_IF명령의 임의의 제2 인카운터는 비교기를 변화시키고 JUMP_IF 명령을 재활성화시킨다.
INST_ADDR은 명령 어드레스로의 점프이다. 점프 명령은 일반적으로 한 사이클을 취한다. JUMP_CNT는 INST_ADDR로의 점프 횟수이다. 예를 들어, 0는 하나의 점프이고 1은 2번의 점프일 수 있다. JUMP_CNT가 최대이면, JUMP 포에버가 발생될 것이다. JUMP_CNT가 최대값 마이너스 원이라면, JUMP_RETURN이 발생될 것이다.
STOP_EN은 1로 세트될 때 리셋 때까지 또는 유닛이 오프로부터 온으로 돌아올 때까지 MPC(18)를 정지시키는 비트이다. 오프 상태로부터 온 상태로 변화될 때, MPC(18)는 제1 명령으로 리셋될 수 있다. STOP_DEBUG는 MPC(18)가 오프 상태로부터 온 상태로 토글이 일어날 때까지 정지할 것이라는 것을 나타낸다. 이 포인트에서, 연산은 다음 명령에서 재시작한다. 이러한 모드는 디버깅을 위해 사용될 수 있다. 모든 프로세서는 정지될 수 있고 그다음 레지스터(32) 또는 모든 프로세서 RAMs의 콘텐츠는 판독될 수 있다.
MPC(18)는 슬레이브 프로세서의 연산을 제어하는 단일 중앙 마스터 프로세서를 제공한다. 이것은 다양한 프로세서를 만들기 위해 사용된 상이한 프로세서 기술에 대한 보다 용이한 이식성을 가능하게 한다. 슬레이브 프로세서가 상이한 처리량에 대해 타이밍을 맞추기 위해 가산, 제거, 수정 또는 재설계됨에 따라, 오직 마스터 프로세서 프로그램만이 변할 수 있다. 이것은 전체 디지털 신호 프로세서(10)를 완전히 재설계할 필요를 제거한다. 마스터 제어 프로세서에 대한 머신 코드를 발생시키는 명령 어셈블러로 인하여, 이러한 프로세스는 상대적으로 빨라지고 용이해질 수 있다. 사이클 애큐레이트 신호 또는 프로그램 종속 신호의 용이한 발생은 MPC(18)로써 얻을 수 있다. 슬레이브 프로세서는 용이하게 제거되거나 더해지고, 그래서 상이한 성능을 갖는 주문형 디지털 신호 프로세서를 생산할 수 있다.
PIP(14)
도 3에 도시된 바와 같이, PIP(14)는 명령 메모리(46), 명령 디코더(44) 및 수학적 커퍼빌리티(48)를 포함한다. PIP(14)는 본 발명의 일실시예 따라 내부 데이터는 물론 입력 데이터에 가산, 감산 및 시프트 레프트 기능을 실행할 수 있다. MPC(18)는 PIP(14)에 의한 명령의 실행을 제어한다. PIP(14)는 입력 데이터 판독이 완료되었을 때 MPC(18)에 신호를 보낸다. PIP(14)는 명령 및 수학적 기능을 실행하는 자체 타이밍된 수학적 모듈을 사용한다.
PIP(14)는 수신 FIFO 레지스터(12)로부터 입중계 데이터를 GPR(32)로 보낼 수 있다. PIP(14)는 완전 부호달린(full signed) 16 비트 오프셋을 더하고 입중계 데이터 또는 내부 데이터를 시프트 레프트함으로서 스케일 업하는 능력을 가지고 있다. 또한, PIP(14)는 데이터에 대해 무엇을 해야할지를 결정하기 위해 다른 엔티티에 의해 사용될 수 있는 언더플로우 에러 플래그 및 오버플로우를 가지고 있다. 내부 데이터에 대해 연산을 행할 때, PIP(14)는 GPR(32)로부터 데이터를 판독하거나 기록할 수 있고 이러한 모드는 클록 사이클 애큐레이트이다.
입력 FIFO 레지스터(12)로부터의 데이터에 대해 연산을 행할 때, PIP(14)는 임의의 GPR(32)에 데이터를 기록할 수 있다. PIP(14)는 사용중의/유효한 프로토콜로 수신 FIFO 레지스터(12)와 인터페이스한다. 명령을 행하는 신호는 수신 FIFO 레지스터(12) 명령이 완료될 때마다 MPC(18)에 전송될 수 있다.
또한, PIP(14)는 GPR(32)내에 레지스터 체인을 설정할 수 있다. 예를 들어, 체인 모드에서, 레지스터 0에 기록된 데이터는 레지스터 0내의 데이터를 파괴하지 않는다. 대신에 엔드 오브 체인(EOC)에 도달할 때까지 레지스터 0로부터의 데이터는 자동적으로 레지스터 1에 기록되고 레지스터 1으로부터의 데이터는 레지스터 2에 자동적으로 기록되며, 나머지도 이와 같다. 따라서, 레지스터 0는 이제 PIP(14)가 레지스터 0에 기록하고 있기 때문에 스타트 오브 체인(SOC)으로서 정의된다. 이것은 모두 하나의 클록 사이클에서 일어날 수 있고, 그래서 1차원 및 2차원 모두에서 고속 슬라이딩 필터 연산을 가능하게 한다.
글로벌 EOC 비트가 1로 세트되면, GPR(32)로의 임의의 기록은 유효한 SOC를 정의할 수 있다. 글로벌 EOC가 0로 세트되면, 오직 GPR(32)로의 PIP(14)기록만이 유효한 SOC로 정의되게 된다. 글로벌 EOC 모드는 무한 충격 응답(IIR) 필터 애플리케이션에서 사용될 수 있다.
PIP(14)는 본 발명의 일실시예에서 아래의 명령 타입을 디코드할 수 있다.
RXFIFO 외부 소스로부터 데이터를 얻기 위해 사용되는 명령
INTERNAL 외부 소스 또는 내부 소스로부터 데이터를 루팅하기 위해 사용되는 명령
OFFSET 입중계 데이터에 오프셋을 더할 수 있는 명령
SHIFTLEFT 입중계 데이터 비트를 시프트 레프트할 수 있는 명령
EOC 엔드 오브 체인이 어디에 위치되었는지를 말하기 위해 글로벌 체이닝에 대해 사용되는 명령
REPEATN 반복 분기의 2종류, 즉, REPEAT N 타임 또는 REPEAT 포에버를 제공하는 명령
JUMP_IF 점프 조건부 명령
JUMP_N 반복 분기의 3종류, 즉, JUMP N 타임, JUMP 포에버 및 기능 콜에 대한 JUMP RETURN을 제공하는 명령
RETURN 프로그램 카운터를 다시 점프 리턴 명령 플러스 원으로 리셋하는 명령
아래의 명령 디코드 표는 본 발명의 일실시예에서 사용될 수 있다.
QUANTY는 입중계 데이터 소스로부터 페칭되는 워드의 수를 제어하는 카운터이다. 0로 세트되면, 하나의 워드가 페칭되고, 1로 세트되면 2개의 워드가 페칭되고 나머지도 이와 같다. 전체 양의 페칭이 완료되었을 때에, PIP(14)는 명령이 실행되었음을 알리는 신호를 MPC(18)에 보낸다. 이러한 명령은 다음 명령이 이네이블될 때까지 표명된 상태로 남는다.
DEST는 GPR로의 수신 어드레스이다. ITYPE는 명령 디코드 표에서 정의된 바와 같은 명령 타입이다. SUBEN은 세트가 1일 때 DEST=SOURCE_A-SOURCE_B의 감산을 이네이블하는 비트이다. 0로 세트될 때, SUBEN은 DEST=SOURCE_A+SOURCE_B의 가산을 이네이블한다. SOURCE_A는 가산기/감산기로의 A 입력의 어드레스이다. SOURCE_B는 가산기/감산기로의 B의 어드레스이다.
OFFSET는 DEST_GPR=입력 데이터+오프셋과 같이 입력 데이터에 가산된 부호 달린 포맷에서의 양이다. 값이 음이라면 감산이 일어난다. SHIFT_L은 입력 데이터에 실행되는 시프트 레프트의 양이다. 디코딩은 다음과 같을 수 있다: 0000은 전혀 레프트 시프트가 없는 것을 의미하고, 0001은 하나의 레프트 시프트를 의미하고, . . . ,1000-1111은 8개의 레프트 시프트를 의미한다.
GLOBAL_EOC는 1로 세트될 때 글로벌 EOC 모드를 이네이블하는 비트이다. 이러한 모드에서, GPR 0 레지스터에 기록하는 프로세서는 SOC로 여겨질 것이다. 이러한 모드가 액티브가 아니라면, 오직 GPR에 기록하는 PIP(14)만이 SOC를 정의한다. EOC는 GPR에 대한 엔드 오브 체인 어드레스이다. SOC는 GPR를 번지지정하는 경우에 DEST_GPR 또는 DEST로서 항상 정의된다. EOC가 000000이라면 GPR의 아무런 체이닝도 일어나지 않는다. EOC가 SOC보다 작거나 동일하다면, 아무런 체이닝도 일어나지 않는다. EOC가 SOC보다 클 때, 레지스터 체이닝이 일어난다.
REPEAT_N,JUMP-CNT,INST-ADDR 및 RETURN은 모두 MPC(18)에 대해 정의된 바와 같다.
PIP(14)를 사용함으로써, 데이터는 작동 레지스터로부터 프로그램가능한 방식으로 전송될 수 있다. 데이터 입력 및 다른 슬레이브 연산이 서로에 대해 독립적으로 일어날 수 있다. PIP(14)는 데이터에 준비될 수 없는 수신 어드레스로의 데이터 기록을 가능하게 한다. 데이터 전송을 실행하지 않는 동안, PIP(14)는 내부 수학적 기능을 실행하기 위해 사용될 수 있다.
POP(20)
POP(20)는 도 4에 도시된 바와 같이, 명령 메모리(54), 명령 디코드(52) 및 수학적 유닛(56)을 구비한다. POP(20)는 본 발명의 일실시예에 따라 내부 데이터에 가산, 감산, 시프트 라이트, 실링, 플로어링, 절대값 및 라운드 기능을 구현할 수 있다. 또한, POP(20)는 오버플로우 플래그 및 언더플로우 플래그를 구비한다. MPC(18)는 POP(20)에 의한 명령의 실행을 제어한다. POP(20) 출력 데이터 기록이 완료되었을 때 MPC(18)에 신호를 준다. POP(20)은 명령 및 수학적 기능을 실행하기 위해 수학적 모드를 사용한다.
POP(20)는 연산의 전송 데이터 모드에 있는 동안에 임의의 GPR(16) 레지스터로부터 전송 버퍼(22)로 데이터를 전송할 수 있다. 내부 모드에 있는 동안에, POP(20)는 임의의 GPR(16) 레지스터로부터 데이터를 전송하고 수신할 수 있다. 연산의 내부 모드는 POP가 전송 FIFO 레지스터(22)에 데이터를 송신하고 있지 않을 때 일어날 수 있다.
연산의 전송 데이터 모드는 연산의 내부 모드가 클록 사이클 애큐레이트일 경우에 클록 사이클 애큐레이트가 아닐 수 있다. 전송 FIFO 레지스터(22)로의 전송은 레지스터(22)가 가득차 있을 수 있기 때문에 클록 사이클 애큐레이트가 아닐 수 있다. 그러나, POP(20)은 명령의 실행이 완료되었을 때 MPC(18)에 신호를 보낼 수 있다.
본 발명의 일실시예에서, POP(20)은 라운딩, 최대값 클램핑, 최소값 클램핑 및 절대값 결정과 함께 16 비트 부호 달린 가산, 감산, 시프트 라이트 연산을 실행할 수 있다. 이 시프트 라이트 연산은 최하위 비트로 라운드할 수 있다. 예를 들어, 16 비트가 우측으로 8 비트 시프트된다면, 라운딩은 하위 8 비트에 일어나고, 상위 8 비트에 영향을 주게 된다. 라운딩은 라운딩이 오리지널 16 비트 부호 달린 데이터의 오버플로우 또는 언더플로우를 야기한다면 일어나지 않을 것이다. 데이터에 대한 연산의 순서는 다음과 같을 수 있다: 가산/감산, 라운드/시프트, 최대값 클램프/최소값 클램프, 절대값.
구성 레지스터는 절대값 기능, 최소값 임계값 및 최대값 임계값을 이네이블한다. 2개의 16 비트 구성 레지스터는 부호달린 최대값 및 최소값 임계값을 기억한다. 이러한 구성 레지스터는 펌웨어 또는 명령에 의해 변화될 수 있다.
POP(20)은 본 발명의 일실시예에서 아래의 명령 타입을 사용할 수 있다:
TXFIFO 데이터를 외부 소스에 전송하기 위해 사용되는 명령
INTERNAL 데이터를 루팅하는데 사용되는 명령
OFFSET 입중계 데이터에 오프셋을 더하는 명령
SHIFT RIGHT 출중계 데이터 비트를 시프트 라이트하기 위해 사용되는 명령
MAX 허용되는 최대값 데이터를 클램프하는 명령
MIN 허용되는 최소값 데이터를 클램프하는 명령
REPEAT N 앞서 설명된 바와 같이 2 타입의 반복 분기에 대한 명령
JUMP_IF 조건부 점프에 대한 명령
JUMP_N 3 타입의 점프 분기에 대한 명령
RETURN 프로그램 카운터를 리셋하는 명령
아래의 예는 본 발명의 일 실시예내의 명령 디코드를 도시한다:
QUANTY는 PIP(14)와 관련하여 정의된 것과 같은 카운터이다. SOURCE_GPR은 GPR(16)로의 스타트 어드레스이다. 수량 N의 데이터는 SOURCE_GPR 어드레스에서 시작하여 페칭되고 수량 N이 전송 FIFO 레지스터(22)에 전송될 때까지 자동적으로 증가하게 된다. 결과적으로, N 데이터의 행은 하나의 명령과 함께 전송될 수 있다.
ITYPE는 상기 제시된 명령 디코드 표에 정의된 것과 같은 명령 타입이다. OFFSET,SUBEN,SOURCE_A,SOURCE_B는 PIP(14)에 대하여 앞서 나타낸 것과 같은 동일한 정의를 갖고 있다. SHIFT_R은 8개의 라이트 시프트에까지 입력 데이터에 실행되는 시프트 라이트의 양이다. 디코딩은 아래와 같다: 0000은 라이트 시프트가 전혀 아니고, 0001은 하나의 라이트 시프트이고, 1000 내지 1111은 8개의 라이트 시프트이다. 시프트 라이트의 결과로서 떨어지는 비트의 라운딩이 또한 실행된다.
CLAMP_MAX는 최대 16 부호 달린 값 출력이고 CLAMP_MIN은 최소 16 비트 부호 달린 출력이다. REPEAT_N,INST_ADDR,RETURN 및 JUMP_CNT는 PIP(14)와 관련하여 정의된 것과 같다. ABS_EN은 1로 세트될 때 클램핑 기능 후에 최종 출력상에 실행되는 절대값 기능을 이네이블하는 비트이다.
POP(20)에서, 데이터는 프로그램가능한 방식으로 작동 레지스터로부터 전송될 수 있다. 데이터 출력 및 다른 슬레이브 동작은 서로에 대하여 독립적으로 일어날 수 있다. 또한 POP(20)은 데이터에 대해 준비되지 않은 수신 레지스터에 데이터가 기록될 수 있게 한다. 데이터 전송을 실행하지 않을 때, POP(20)는 내부 수학적 기능을 실행하도록 사용될 수 있다.
레지스터(16)
레지스터(16)는 동시에 수많은 프로세서로부터 일어날 수 있는 독립적인 판독 및 기록 연산은 물론 체이닝 및 글로벌 체이닝 모드를 허용하도록 구성된 N 범용 레지스터(32) 및 버스 인터페이스(34)를 포함한다. GPR(32)은 임의의 다른 프로세서로부터 그리고 그것으로 독립적으로 데이터 전송이 될 수 있게 한다. GPR(32)은 임의의 프로세서 모듈에 의해 기록될 수 있는 각각의 프로세서에 대한 레지스터를 포함한다. 2개의 프로세서 모듈이 동일한 레지스터에 기록하려고 한다면, 에러 플래그가 세트된다.
체이닝 모드에서, GPR(32)은 하나의 레지스터의 출력을 또 다른 레지스터의 출력에 체이닝하도록 구성될 수 있다. PIP(14)로부터 레지스터 0으로 기록된 데이터는 레지스터 0내의 데이터를 파괴하지 않지만, 대신에 프로그래머블 EOC에 도달할 때까지 하나의 클록 사이클에서 레지스터 0으로부터의 데이터는 레지스터 1에 중복하여 자동적으로 기록되고 레지스터 1로부터의 데이터는 레지스터 2에 중복하여 자동적으로 기록되며 나머지도 이와 마찬가지다. 따라서, 도 5에 도시된 바와 같이, 데이터가 58로 표시된 GPR 0내에 기록될 때 데이터는 60으로 표시된 GPR 1로 자동적으로 전송되고 나머지도 이와 마찬가지다.
SOC는 PIP(14)가 기록하고 있는 현 GPR 로케이션으로서 정의된다. 이것은 1 차원 및 2차원 모두에서 고속 슬라이딩 필터 연산은 물론 고속 유한 임펄스 응답(FIR) 필터를 허용한다. 예로서, SOC가 6으로 세트되면, 이러한 예에서의 PIP(14)로부터 GPR 6으로의 기록은 아무런 체이닝도 생성하지 않는다. 오직 PIP(14)만이 SOC를 정의할 수 있게 하면, 레지스터간 이동 명령을 사용하지 않고 마지막 세트가 온으로 동작되는 동안 데이터의 다음 세트를 순서대로 페칭할 수 있게 된다. 경합이 일어날 때, 프로세서에 의한 임의의 GPR로의 임의의 기록은 이전 레지스터로부터의 체이닝 라이트보다 우선이 될 수 있다.
도 6에 도시된 글로벌 데이터 체이닝을 사용하면 IIP 필터를 구현할 때 보다 효율적으로 데이터를 처리할 수 있다. 글로벌 데이터 체이닝은 내부 수학적 모듈이 SOC를 형성할 수 있게 하는 것으로 정의된다. 이것은 오직 PIP(14)만이 데이터 체인을 형성할 수 있게 하는 것과 반대되는 것으로서 계산된 데이터가 SOC를 발생시킬 수 있게 한다. 글로벌 체이닝 모드에서, PIP(14)는 SOC를 정의할 수 없다. 글로벌 체이닝 모드가 액티브라면, PIP(14)를 제외한 임의의 프로세서로부터 GPR로의 임의의 기록은 유효한 SOC를 정의할 수 있다. IIR 필터링을 실행할 때, SOC는 입력 데이터가 체인내에 삽입되기 전에 온으로 동작될 수 있기 때문에 다른 프로세서에 의해 정의될 수 있다. 경합이 일어날 때, 프로세서에 의한 GPR로의 임의의 기록은 이전의 레지스터로부터의 체이닝 라이트보다 우선이 된다.
도 13에서, MPC(18)와 관련하여 기억될 수 있는 체이닝 코드(106)는 글로벌 체이닝이 판정블록(107)에서 나타난 대로 선택되었는지를 결정함으로써 시작한다. 글로벌 체이닝이 선택되었다면, 체크는 판정블록(108)내에 나타난 대로 PIP(14)가 범용 레지스터 0에 기록하였는지를 결정한다. PIP(14)가 범용 레지스터 0에 기록하였다면, GPR 0은 새로운 워드와 동일하게 세트되고 아무런 체이닝도 표시되지 않는다. PIP가 GPR 0에 기록하지 않았다면, 판정블록(112)에서의 체크는 레지스터 GPR 0로의 임의의 다른 프로세서 기록이 있는지를 결정한다. 레지스터 GPR 0로의 임의의 다른 프로세서 기록이 있다면, SOC는 0와 동일하게 세트되고 EOC는 SOC와 동일하거나 보다 큰 프로그래머블 값과 동일하게 세트된다. 블록(114)내에 나타낸 바와 같이 GPR 0은 새로운 워드와 동일하게 세트되고 GPR 1은 GPR 0과 동일하게 세트되고, GPR 2은 GPR 1과 동일하게 세트되고, GPR(EOC)는 GPR(EOC-1)와 동일하게 세트된다. GPR(EOC)는 GPR 0과 동일하다면, 아무런 체이닝도 일어나지 않는다. GPR로의 기록은 항상 일어난다.
글로벌 체이닝이 선택되지 않았다면, 판정블록(116)에서의 체크는 PIP(14) 레지스터 X(GPR(X))에 기록하였는지를 결정한다. PIP(14) 레지스터 X(GPR(X))에 기록하지 않았다면, 판정블록(120)에서의 체크는 레지스터 X로의 임의의 다른 기록이 있는지를 결정한다. 레지스터 X로의 임의의 다른 기록이 있다면, 레지스터 X는 블록(122)에 나타낸 바와 같이, 새로운 워드와 동일하게 세트되고 아무런 체이닝도 일어나지 않는다.
PIP가 레지스터 GPR(X)에 기록하였다면, SOC는 블록(118)에 나타낸 바와 같이 GPR(X)과 동일하게 세트된다. EOC는 SOC와 동일하거나 보다 큰 프로그래머블 값과 동일하게 세트된다. GPR(X)는 새로운 워드와 동일하게 세트되고 GPR(X+1)은 GPR(X)와 동일하게 세트되고, GPR(X+2)는 GPR(X+1)과 동일하게 세트되고 GPR(EOC)는 레지스터 GPR(EOC-1)와 동일하게 세트된다. 레지스터 GPR(EOC)가 GPR(X)와 동일하거나 작으면, 아무런 체이닝도 일어나지 않고 GPR(X)로의 기록만이 항상 일어나게 된다.
하나의 레지스터로부터 다른 레지스터로의 시프트는 하나의 클록 사이클에서 일어날 수 있다. 예를 들어, 레지스터 1로부터 레지스터 0으로의 시프트, 레지스터 2로부터 레지스터 1으로의 시프트 및 레지스터 3로부터 레지스터 2로의 시프트등은 모두가 본 발명의 일실시예에서 하나의 클록 사이클에서 일어날 수 있다.
체이닝 및 글로벌 체이닝 모드를 사용하면 임의의 프로세서에서 일어나는 독립적인 데이터 프로세싱을 할 수가 있게 된다. 또한, 체이닝 및 글로벌 체이닝 모드를 사용하면 수많은 레지스터간의 명령의 필요없이, 보다 빠른 IIR 필터, FIR 필터, 슬라이딩 N 차원 필터 및 벡터 프로덕트를 가능하게 할 수 있다.
PRP(24)
PRP(24)는 도 7에 도시된 바와 같이, 수많은 랜덤 액세스 메모리(RAM) 모듈(74)을 포함한다. 모듈(74)의 수는 PRP(24)를 사용하는 서브 프로세서의 수와 동일하다. 따라서, N RAMs(74)은 차례로 명령 RAM(76)에 연결된 명령 디코드 유닛(72)에 연결된다. N RAMs(74)은 명령 메모리(76)내에 포함된 명령에 기초하여 판독하고 기록하도록 프로그램될 수 있다. 각각의 RAM(74)은 서로 독립적으로 판독하고 기록할 수 있다.
PRP(24)는 본 발명의 일실시예에서 N 16 비트 데이터 블록의 내부 기억을 가능하게 할 수 있다. PRP(24)는 데이터가 순환적으로 사용되거나 데이터 플로우가 실행에 있어서 너무 제한적인 경우에, 필터 연산에 대해 사용될 수 있다. 예로 2차원 이산 코사인 변환(DCT)의 실행에서, 8개의 열 그리고 그다음 8개의 행에 필터링이 실행된다. 또 다른 예는 지그재그 연산 및 양자화가 동시에 일어날 수 있는 메모리 및 양자화 테이블의 다이렉트 기억장치내에 있다.
PRP(24)는 임의의 GPR(16) 레지스터에 판독 또는 기록할 수 있다. PRP(24)가 N개의 별개의 메모리(74)를 포함하고 있기 때문에 N개의 판독 또는 기록 또는 믹스가 동시에 일어날 수 있다. 펌웨어는 N RAM 메모리(74)의 모두에 직접 액세스한다.
PRP(26)는 본 발명의 일실시예에서 아래의 명령 타입을 디코딩할 수 있다. RD/WR은 복수의 RAMs(74)의 독립적인 판독/기록 제어를 제공하는 명령이다. JUMPN은 앞서 서술된 바와 같이 점프 분기의 3 타입을 제공하는 명령이고 이와 마찬가지로, RETURN은 다른 프로세서에 관련하여 앞서 서술된 바와 같이 동작한다.
본 발명의 일 실시예의 일 예로서, 아래의 명령 디코드 표가 PRP(24)에 대하여 제공된다:
상기 명령 디코드 표에서, B_EN은 1로 세트될 때 RAM B으로부터의 판독 또는 기록을 이네이블하는 비트이다. 0로 세트될 때는 RAM B으로의 판독 또는 기록을 디스에이블한다. B_WREN은 B_EN이 1이면 1로 세트될 때 RAM B에 기록하게 하는 비트이다. 비트 B_WREN가 0으로 세트될 때, B_WREN은 B_EN이 1로 세트되면 RAM B로의 판독을 허용하게 된다.
B_ADDR은 RAM 판독에 대한 수신 어드레스 그리고 RAM 기록에 대한 소스 어드레스이다. 이와 마찬가지로, A_EN은 1로 세트되면 RAM A으로부터의 판독 또는 기록을 이네이블하고 0로 세트되면 RAM A로부터의 판독 또는 기록을 디스에이블하는 비트이다. A_WREN,A_ADDR 및 A_RAMADDR은 RAM A에 적용되는 것을 제외하고는 B_WREN,B_ADDR 또는 B_RAMADDR과 동일하다.
ITYPE는 2개의 최하위 비트를 사용하여 정의된 명령 타입이다. JUMP_CNT,INST_ADDR, 및 RETURN은 다른 프로세서와 관련하여 앞서 서술된 것과 동일하다.
PRP(24)는 계수 및 데이터가 로컬 RAM내에 기억될 수 있게 하고, 그래서 외부 디바이스로부터 데이터 또는 계수를 판독함 없이 데이터 프로세싱에 대해 유용하게 된다. 이로 인하여, 신호 처리 동안 입력/출력 실행 열화를 감소시킬 수 있다.
다량의 계수를 기억하는 RAM을 사용하게 되면 레지스터를 사용하는 것보다 작은 영역을 사용하게 된다. 본 발명의 일실시예에서, 모든 RAM 판독 및 기록은 명령에 의해 제어되고 다른 슬레이브 프로세서 연산과 독립적으로 연산될 수 있다. 이로 인해 고속 신호 처리가 가능해진다.
PMPs(28,30)
PMPs(28)은 도 8에 도시된 바와 같이 명령 디코드 유닛(80), 가산기/감산기(84) 및 명령 RAM(82)을 포함한다. PMP(28)은 2개의 입력값의 가산 또는 감산을 행하여 그 결과를 GPR(32)에 전송한다. 소스 및 수신 어드레스는 명령에 의해 정의된다. 프로세서는 자체 타이밍된 수학적 모듈을 사용하여 명령을 실행한다.
본 발명의 일실시예에서, PMP(28)에 의해 지원되는 주요 기능은 2개의 부호달린 16 비트 수들을 가산 또는 감산하여 16 비트 부호달린 결과치를 출력하는 것이다. 또한 PMP(28)는 오버플로우 및 언더플로우를 갖는다. PMP(28)는 임의의 GPR(32) 레지스터로부터 데이터를 수신할 수 있고 데이터를 임의의 GPR(32) 레지스터에 제공할 수 있다.
본 발명의 일실시예에서, PMP(28)는 임의의 아래 타입의 명령을 디코드할 수 있다. 가산/감산 명령은 어디로부터 가산기/감산기로의 2개의 입력이 오는지 및 어디로 그 결과치가 가는지 그리고 프로세서가 가산 모드 또는 감산 모드에 있는지에 대한 제어를 제공한다. REPEAT N,JUMPN 및 RETURN 명령 타입은 앞서 설명된 바와 같다.
PMP(28)에 대한 명령 디코드 세트의 예로서, 아래의 표가 제공되었다:
SUBEN,SOURCE_A,SOURCE_B,ITYPE,REPEAT_N,JUMP_CNT,INST_ADDR 및 RETURN은 모두 예를 들어, PIP(14)와 관련하여 앞서 설명된 바와 같다.
PMP(28)를 사용하면 가산 및 감산 연산이 다른 프로세서에 독립적으로 일어날 수 있게 된다. PMP(28)가 설계에 있어서 완전히 모듈형이기 때문에, 전체 디지털 신호 프로세서(10)의 확장성을 가능하게 한다.
PMP(30)은 자체 명령 메모리(90), 명령 디코드(88), 및 수학적 모듈(92)을 구비한 곱셈누산(MAC) 프로세서이다. 프로세서는 곱셈누산 연산을 행하여 그 연산 결과치를 GPR(32) 레지스터에 전송한다. 소스 및 수신 어드레스는 명령에 의해 정의된다. 프로세서는 자체 타이밍된 수학적 모듈을 사용하여 명령을 실행할 수 있다.
PMP(30)가 주로 지원하는 기능은 2개의 부호달린 16 비트 수를 곱셈하여 32 비트의 결과치를 생성시키는 것이다. 이 결과치는 이전 32 비트 결과치로부터 가산될 수 있고 그래서 곱셈누산(MAC) 기능을 행하게 된다. 누산기 크기는 내부 확장 정밀 연산을 가능하게 하는 32+N 비트이다. 누산기의 결과치는 16비트로 라운드되고 16비트 시프트 라이트되어 부호달린 16 비트 결과치를 생성하게 된다. 또한, PMP(30)는 오버플로우 및 언더플로우 플래그를 갖는다. PMP(30)는 임의의 GPR(32)로부터 데이터를 수신할 수 있고 임의의 GPR(32)에 데이터를 제공할 수 있다.
PMP(30)는 본 발명의 일실시예에서 아래 타입의 명령을 디코드한다. MAC 명령은 클리어 비트는 물론 어디로부터 곱셈누산 슬레이브 프로세서로의 입력이 오는지 및 그 결과치가 어디로 가는지에 대한 제어를 제공한다. REPEATN,JUMPN 및 RETURN은 앞서 설명한 바와 같다.
상기 명령 타입의 구현예가 아래의 명령 디코드 표에 제시되어 있다:
상기 표에서, CLR은 0으로 세트될 때 32+N 비트 누산기의 피드백 루프를 강제로 0으로 하는 비트이다. 이러한 비트는 보통 누산기를 초기화하기 위해 누산 계산의 세트의 시작에서 표명된다. 비트가 N 멀티 사이클에 대하여 1로 세트되면, MAC은 곱셈기로서 동작하게 된다. DEST는 소스 및 수신 메모리 맵에 의해 정의된 바와 같은 누산의 수신 어드레스이다. SOURCE_A는 곱셈기로의 A 입력의 어드레스이고 SOURCE_B는 곱셈기로의 B 입력의 어드레스이다.
ITYPE,REPEAT_N,JUMP_CNT,INST_ADDR 및 RETURN은 앞서 설명된 바와 같다.
PMP(30)는 곱셈 또는 곱셈누산 연산이 다른 프로세서에 독립적이게 할 수 있다. 프로세서는 완전한 모듈형이고 그래서 디지털 신호 프로세서(10)의 확장성을 가능하게 한다.
데이터 경로 인터페이스
도 10에서, 디지털 신호 프로세서(10)에서 사용되는 데이터 경로 인터페이스 방법은 자체 타이밍된 단일 사이클 또는 멀티-사이클 수학적 프로세서가 명령 디코드에 영향을 주는 일 없이 상호교환될 수 있게 한다. 이것은 상이한 프로세스 기술로의 프로세서(10)의 보다 큰 이식성을 가능하게 한다. 또한 인터페이스는 수학적 프로세서 타이밍 지연에만 종속된 자체 타이밍된 명령의 구현을 가능하게 한다.
(PMP(28 또는 30)과 같은) 산수 소자(94)로의 모든 데이터 입력값은 다른 데이터 값이 나타날 때까지 출력값으로 등록되어 안정화하게 된다. 유효한 입력 신호(IN_VALID)는 새로운 데이터가 공급될 때 제공된다. 산수 소자(94)로부터의 사용중인 신호가 표명되지 않으면 새로운 데이터만이 공급되어진다.
도 11에 도시된 파이프라인 소자(96)에서, 사용중인 신호는 데이터가 계속 산수 소자(96)에 공급될 수 있기 때문에 항상 로우일 수 있다. 지연 소자(100)는 하나의 클록 사이클 만큼 산수 소자의 연산을 지연시키기 위해 사용될 수 있다. 예를 들어, 수학적 프로세서는 유닛(102,104)으로 구분될 수 있는데, 그 사이에는 지연 소자(100)가 있다. 이와 마찬가지로, 입력 유효한 신호(IN_VALID)는 하나의 사이클 만큼 지연될 수 있고 그래서 출력 유효한 신호(OUT_VALID)를 하나의 사이클 만큼 지연시킬 수 있게 된다. 이와 마찬가지로, 데이터가 어디로 가는지를 말하는 데이터 방향 신호(IN_DEST_ADDR)는 지연될 수 있다.
도 12에 도시된 멀티 사이클 산수 소자(98)에서, 사용중인 신호는 새로운 데이터가 산수 소자(98)에 소스되는 것을 막기 위해 사용될 수 있다. 모드 변화 신호 및 수학적 연산의 결과치에 대한 수신 어드레스는 새로운 데이터가 나타날 때까지 산수 소자(98)에 공급되어 이 산수 소자(98)를 안정화시키는 것을 도울 수 있다.
산수 소자(98)는 산수 소자의 대기시간을 매칭하기 위해 내부 지연을 제공하고 그래서 멀티 사이클 연산이 일어나게 된다. 연산은 2개 이상의 클록 사이클로 퍼질 수 있다. 입력 데이터 유효한 신호(IN_VALID) 및 입력 수신 어드레스(IN_DEST_ADDR) 신호는 또한 필요한 수의 사이클(N) 만큼 지연될 수 있다. 에러 플래그 신호는 산수 소자에 의해 제공되어 등록된다. 입력 데이터를 식별하는 입력 데이터 유효한 신호 및 산수 소자(98)로의 모드 또는 제어 신호는 산수 소자에 전송되는 새로운 데이터에 대해 표명된다.
이러한 인터페이스 방법은 디지털 신호 프로세서가 상이한 프로세스 기술을 수용할 수 있게 한다. 특정 경우에 새로운 기능에 대하여 필요한 단 하나의 재설계는 수학적 모듈을 재설계하는 것이 될 수 있다. 명령 디코드 로직내의 명령 세트는 상이한 산수 소자 타이밍 변화를 수용하기 위해 변화될 필요가 없다. 이것은 상이한 프로세스 기술 변화에 수정가능한 보다 큰 이식성이 있는 설계를 가능하게 한다.
파이프라인되거나 멀티사이클된 프로세서의 사용을 통해서, 상이한 수학적 프로세서는 교체하는 프로세서보다 많은 시간을 요하는지 또는 적은 시간을 요하는지에 상관없이 전체 프로세서에 추가될 수 있다. 따라서, 보다 느린 수학적 프로세서가 보다 빠른 수학적 프로세서를 대신하는 경우에, 파이프라인되거나 멀티사이클된 구조는 추가 지연 시간을 보상하기 위해 사용될 수 있다. 반대로, 새로운 수학적 프로세서가 교체하려는 것보다 빠르다면, 보다 빠른 수학적 프로세서가 이후에 설명되는 것을 제외하고는 변화 없이 사용될 수 있다.
각각의 경우에, MPC(18)는 새로운 수학적 프로세서의 저속 또는 고속 타이밍에 적응하기 위해 재컴파일된다. 새로운 타이밍이 보다 길든지 또는 짧든지에 상관없이, 필요한 모든 것은 MPC(18)를 재컴파일하는 것이다. 그다음 MPC(18)는 새로운 타이밍으로 동작하게 된다. 따라서, 시스템은 상이한 프로세스 기술로 만들어지고 시스템이 처음에 설계되었던 프로세서보다 빠르거나 느릴 수 있는 새로운 프로세서에 용이하게 그리고 신속하게 적응할 수 있게 된다.
본 발명이 제한된 수의 실시예에 관하여 설명되었지만, 당업자는 이로부터 발생되는 수많은 수정 및 변형을 이해할 것이다. 첨부된 청구항은 본 발명의 정신 및 범위내에 있는 모든 그러한 수정 및 변형을 포함하도록 의도되었다.

Claims (20)

  1. 수학적 프로세서;
    디지털 신호 프로세서로의 입력 신호를 처리하는 입력 프로세서;
    상기 디지털 신호 프로세서로부터의 출력 신호를 처리하는 출력 프로세서;
    상기 수학적 프로세서, 상기 입력 프로세서 및 상기 출력 프로세서를 제어하는 마스터 프로세서; 및
    상기 프로세서의 각각에 의해 선택적으로 액세스가능한 기억장치;를 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  2. 제 1 항에 있어서, 중간 계산 결과치를 기억하는 랜덤 액세스 메모리 프로세서를 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  3. 제 2 항에 있어서, 상기 기억장치에 상기 프로세서의 각각을 연결시키는 버스를 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  4. 제 1 항에 있어서, 상기 입력 프로세서 및 출력 프로세서는 또한 수학적 연산을 구현하는 것을 특징으로 하는 디지털 신호 프로세서.
  5. 제 1 항에 있어서, 상기 프로세서의 각각은 자체 명령 세트를 갖는 것을 특징으로 하는 디지털 신호 프로세서.
  6. 제 1 항에 있어서, 상기 프로세서는 상기 기억장치를 통하여 서로 통신하는 것을 특징으로 하는 디지털 신호 프로세서.
  7. 제 1 항에 있어서, 상기 프로세서의 각각은 초장형 명령어를 사용하는 것을 특징으로 하는 디지털 신호 프로세서.
  8. 제 1 항에 있어서, 상기 마스터 프로세서는 다른 프로세서에 대한 타이밍을 제공하는 것을 특징으로 하는 디지털 신호 프로세서.
  9. 제 1 항에 있어서, 상기 마스터 프로세서는 상기 입력 프로세서가 소정의 연산을 완료하기를 기다리는 것을 특징으로 하는 디지털 신호 프로세서.
  10. 제 1 항에 있어서, 상기 프로세서의 각각은 자체 랜덤 액세스 메모리를 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  11. 제 1 항에 있어서, 상기 기억장치는 복수의 레지스터를 포함하고, 상기 레지스터는 새로운 데이터가 제1 레지스터에 기록되고 있을 때 상기 제1 레지스터로부터 제2 레지스터로 기존의 데이터를 자동적으로 전송하는 것을 특징으로 하는 디지털 신호 프로세서.
  12. 제 11 항에 있어서, 상기 입력 프로세서는 데이터를 자동적으로 전송시키는 것을 특징으로 하는 디지털 신호 프로세서.
  13. 제 11 항에 있어서, 상기 수학적 프로세서는 상기 데이터가 하나의 레지스터로부터 다른 레지스터로 전송되게 하는 것을 특징으로 하는 디지털 신호 프로세서.
  14. 제 1 항에 있어서, 상기 디지털 신호 프로세서는 파이프라인된 수학적 프로세서를 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  15. 제 1 항에 있어서, 상기 수학적 프로세서는 멀티 사이클된 수학적 프로세서인 것을 특징으로 하는 디지털 신호 프로세서.
  16. 디지털 신호 프로세서로의 입력 신호를 처리하기 위해 제1 프로세서를 사용하는 단계;
    상기 디지털 신호 프로세서로부터의 출력 신호를 처리하기 위해 제2 프로세서를 사용하는 단계;
    수학적 연산을 위해 제3 프로세서를 사용하는 단계;
    제4 프로세서를 사용하여 상기 제1 프로세서, 제2 프로세서 및 제3 프로세서를 제어하는 단계; 및
    상기 프로세서의 각각이 선택적으로 기억장치에 액세스하도록 이네이블하는 단계;를 포함하는 것을 특징으로 하는 디지털 신호 처리 방법.
  17. 제 16 항에 있어서, 다른 프로세서의 각각에 대하여 상기 제4 프로세서로부터의 타이밍을 제공하는 단계를 포함하는 것을 특징으로 하는 디지털 신호 처리 방법.
  18. 제 16 항에 있어서, 새로운 데이터가 제1 레지스터내에 기록되고 있을 때 상기 기억장치내의 상기 제1 레지스터로부터 상기 기억장치내의 제2 레지스터로 데이터를 자동적으로 전송하는 단계를 포함하는 것을 특징으로 하는 디지털 신호 처리 방법.
  19. 제 18 항에 있어서, 상기 제1 프로세서에 의한 동작에 응답하여 상기 데이터를 자동적으로 전송하는 단계를 포함하는 것을 특징으로 하는 디지털 신호 처리 방법.
  20. 제 18 항에 있어서, 상기 제3 프로세서에 의한 동작에 응답하여 상기 데이터를 자동적으로 전송하는 단계를 포함하는 것을 특징으로 하는 디지털 신호 처리 방법.
KR10-2002-7007756A 1999-12-17 2000-10-16 복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서 KR100472706B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/465,634 US7793076B1 (en) 1999-12-17 1999-12-17 Digital signals processor having a plurality of independent dedicated processors
US09/465,634 1999-12-17

Publications (2)

Publication Number Publication Date
KR20020059763A KR20020059763A (ko) 2002-07-13
KR100472706B1 true KR100472706B1 (ko) 2005-03-10

Family

ID=23848555

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-7007756A KR100472706B1 (ko) 1999-12-17 2000-10-16 복수의 독립 전용 프로세서를 갖는 디지털 신호 프로세서

Country Status (8)

Country Link
US (2) US7793076B1 (ko)
EP (1) EP1238343B1 (ko)
JP (1) JP4391053B2 (ko)
KR (1) KR100472706B1 (ko)
AT (1) ATE523847T1 (ko)
AU (1) AU7879800A (ko)
TW (1) TW513638B (ko)
WO (1) WO2001044964A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7032223B2 (en) 2000-03-01 2006-04-18 Realtek Semiconductor Corp. Transport convergence sub-system with shared resources for multiport xDSL system
JP2002149402A (ja) * 2000-11-14 2002-05-24 Pacific Design Kk データ処理装置およびその制御方法
JP4783527B2 (ja) 2001-01-31 2011-09-28 株式会社ガイア・システム・ソリューション データ処理システム、データ処理装置およびその制御方法
JP4865960B2 (ja) 2001-06-25 2012-02-01 株式会社ガイア・システム・ソリューション データ処理装置およびその制御方法
US6993674B2 (en) 2001-12-27 2006-01-31 Pacific Design, Inc. System LSI architecture and method for controlling the clock of a data processing system through the use of instructions
US7714870B2 (en) * 2003-06-23 2010-05-11 Intel Corporation Apparatus and method for selectable hardware accelerators in a data driven architecture
US8145879B2 (en) * 2005-11-29 2012-03-27 Xmtt Inc. Computer memory architecture for hybrid serial and parallel computing systems
US9702305B2 (en) 2013-04-17 2017-07-11 Micron Technology, Inc. Multiple engine sequencer

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083204A (en) 1984-10-01 1992-01-21 Hughes Aircraft Company Signal processor for an imaging sensor system
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
JPS62168260A (ja) 1986-01-20 1987-07-24 Mitsubishi Electric Corp ワンチツプマイクロコンピユ−タ
JPH0337723A (ja) * 1989-07-05 1991-02-19 Hitachi Ltd 情報処理装置
US5197140A (en) * 1989-11-17 1993-03-23 Texas Instruments Incorporated Sliced addressing multi-processor and method of operation
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5397321A (en) * 1993-07-30 1995-03-14 Ep Technologies, Inc. Variable curve electrophysiology catheter
KR100186916B1 (ko) 1994-02-14 1999-05-01 모리시다 요이치 신호처리장치
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
GB2311882B (en) * 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
JPH11261958A (ja) 1998-03-09 1999-09-24 Sony Corp 映像編集装置及び映像編集方法
JP2000057122A (ja) * 1998-08-06 2000-02-25 Yamaha Corp デジタル信号処理装置

Also Published As

Publication number Publication date
WO2001044964A2 (en) 2001-06-21
JP2003517684A (ja) 2003-05-27
KR20020059763A (ko) 2002-07-13
JP4391053B2 (ja) 2009-12-24
US8019972B2 (en) 2011-09-13
EP1238343B1 (en) 2011-09-07
TW513638B (en) 2002-12-11
AU7879800A (en) 2001-06-25
ATE523847T1 (de) 2011-09-15
WO2001044964A3 (en) 2002-04-25
US7793076B1 (en) 2010-09-07
EP1238343A2 (en) 2002-09-11
US20100306502A1 (en) 2010-12-02

Similar Documents

Publication Publication Date Title
JP6243935B2 (ja) コンテキスト切替方法及び装置
US8019972B2 (en) Digital signal processor having a plurality of independent dedicated processors
USRE34850E (en) Digital signal processor
US6289434B1 (en) Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
US6912638B2 (en) System-on-a-chip controller
US5752071A (en) Function coprocessor
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
CN101093577A (zh) 图像处理引擎及包含图像处理引擎的图像处理系统
US5958000A (en) Two-bit booth multiplier with reduced data path width
JP3702184B2 (ja) データ処理装置
EP1065586A2 (en) Computer system comprising a plurality of parallel processors
US6728741B2 (en) Hardware assist for data block diagonal mirror image transformation
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
KR20010072490A (ko) 레지스터 스택을 포함하는 데이터 프로세서, 그 처리방법, 컴퓨터 프로그램 제품 및 멀티미디어 장치
Wirth Experiments in computer system design
Guttag TMS320C8x family architecture and future roadmap
US20090287860A1 (en) Programmable Direct Memory Access Controller
Witte et al. Multipurpose audio signal compander
JPH05173778A (ja) データ処理装置
CRC Hardware Acceleration
GB2430052A (en) CPU with a buffer memory directly available to an arithmetic logic unit
JPH1173315A (ja) 可変長命令プロセサ
JPH02100136A (ja) 情報処理装置

Legal Events

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

Payment date: 20130212

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140203

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee