KR100572945B1 - 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기 - Google Patents

효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기 Download PDF

Info

Publication number
KR100572945B1
KR100572945B1 KR1019990003638A KR19990003638A KR100572945B1 KR 100572945 B1 KR100572945 B1 KR 100572945B1 KR 1019990003638 A KR1019990003638 A KR 1019990003638A KR 19990003638 A KR19990003638 A KR 19990003638A KR 100572945 B1 KR100572945 B1 KR 100572945B1
Authority
KR
South Korea
Prior art keywords
data
memory
coprocessor
digital signal
signal processor
Prior art date
Application number
KR1019990003638A
Other languages
English (en)
Other versions
KR19990072400A (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 KR19990072400A publication Critical patent/KR19990072400A/ko
Application granted granted Critical
Publication of KR100572945B1 publication Critical patent/KR100572945B1/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
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Abstract

데이터 처리 시스템이 디지탈 신호 처리기 코어(110) 및 보조 처리기(140)를 포함한다. 보조 처리기(140)는, 상기 디지탈 신호 처리기 코어(110)의 어드레스 공간 내에 국부 메모리(141, 145, 147)를 포함한다. 보조 처리기(140)는 디지탈 신호 처리기 코어(110)로부터의 명령에 응답한다. 직접 메모리 액세스 회로(120)는 보조 처리기(140)의 국부 메모리(141, 145, 147)로부터/로 데이터를 자율적으로(autonomously) 전송한다. 보조 처리기 명령은 소정의 메모리 어드레스에 맵핑된 명령 FIFO 메모리(141)에 저장된다. 제어 명령은, 국부 메모리(141, 145, 147)로의 메모리 전송이 완결될 때까지, 보조 처리기(140)를 정지시키는 수신 데이터 동기화 명령을 포함한다. 전송 데이터 동기화 명령은, 보조 처리기가 직접 메모리 액세스 회로(120)에 신호를 보내 국부 메모리(141, 145, 147)로부터의 메모리 전송을 트리거링하게 한다. 인터럽트 명령은, 보조 처리기가 디지탈 신호 처리기 코어(110)를 인터럽트하게 한다.
디지탈 신호 처리기, 재구성, 보조 처리기, 필터, 동기화

Description

효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는 디지탈 신호 처리기{DIGITAL SIGNAL PROCESSOR WITH EFFICIENTLY CONNECTABLE HARDWARE CO-PROCESSOR}
도 1은 본 발명에 따른 디지탈 신호 처리기 코어와 재구성 가능한 하드웨어 보조 처리기의 결합을 도시하는 도면.
도 2는 본 발명의 디지탈 신호 처리기 코어와 재구성 가능한 하드웨어 보조 처리기 간의 메모리 맵 논리 결합을 도시하는 도면.
도 3은 재구성 가능한 하드웨어 보조 처리기 메모리를 사용하는 방법을 도시하는 도면.
도 4는 필터 알고리즘에 적절한 메모리 관리 기술을 도시하는 도면.
도 5는 전용 버스로 연결된 두 개의 보조 처리기를 포함하는 도 1의 결합에 대한 대안적인 실시예를 도시하는 도면.
도 6은 다양한 필터 동작을 수행하도록 재구성 가능한 하드웨어 보조 처리기의 구성을 도시하는 도면.
도 7은 도 6에 도시된 재구성 가능한 하드웨어 보조 처리기의 입력 포맷터(input formatter)를 도시하는 도면.
도 8은 도 6에 도시된 재구성 가능한 하드웨어 보조 처리기의 재구성 가능한 데이터 경로 코어를 도시하는 도면.
도 9는 도 6에 도시된 재구성 가능한 하드웨어 보조 처리기의 출력 포맷터를 도시하는 도면.
도 10은 실수 유한 임펄스 응답 필터를 수행하기 위한 데이터 경로 코어를 통한 데이터 흐름 접속을 도시하는 도면.
도 11은 복소수 유한 임펄스 응답 필터를 수행하기 위한 데이터 경로 코어를 통한 데이터 흐름 접속을 도시하는 도면.
도 12는 계수 갱신 기능을 수행하기 위한 데이터 경로 코어를 통한 데이터 흐름 접속을 도시하는 도면.
도 13은 고속 푸리에 변환을 수행하기 위한 데이터 경로 코어를 통한 데이터 흐름 접속을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
110 : 디지탈 신호 처리기 코어
120 : 액세스 회로
140 : 재구성 가능한 하드웨어 보조 처리기
본 발명은 디지탈 신호 처리에 관한 것으로, 더 상세하게는 코어 데이터 처리기 및 재구성 가능한 보조 처리기를 구비한 디지탈 신호 처리기에 관한 것이다.
오디오 및 비디오 처리에 있어서, 디지탈 신호 처리는 점점 더 일반화되어 가고 있다. 많은 경우에서, 하나의 디지탈 처리기가 종래의 다수의 분리된 아날로그 소자들을 대체할 수 있다. 디지탈 신호 처리에 의한 처리 용량의 증가는 종래 기술에 비해 보다 다양한 유형의 장치 및 기능을 가능하게 했다. 이러한 처리는 현재의 장치들보다 복잡한 기능 및 특성을 요구하게 했으며, 새로운 유형의 장치들을 요구하게 한다. 몇몇 경우에서, 이러한 요구는 풀 프로그램 가능(full programmable) 디지탈 신호 처리기에 원하는 기능성을 효과적으로 부여하는 능력을 능가했다.
이러한 필요에 대한 하나의 해결책은 디지탈 신호 처리기와 ASIC(Application Specific Integrated Circuit)을 결합하는 것이다. 디지탈 신호 처리기는 제어 기능 및 몇 가지 신호 처리를 조절하도록 프로그래밍된다. 디지탈 신호 처리기의 풀 프로그램 가능성(full programmability)은 상이한 프로그래밍을 통한 제품 차별화를 가능하게 한다. ASIC은 공통적으로 수행되고 시간 임계인 일정한 코어 기능을 위해 처리 하드웨어를 제공하도록 구성된다. 집적 회로의 집적도가 증가함에 따라, 동일한 칩 상에 디지탈 신호 처리기 및 ASIC 하드웨어 보조 처리기를 배치하는 것이 가능해지고 있다.
이러한 접근 방법은 두 가지 문제점을 가진다. 이러한 접근 방법은 하드웨어 보조 처리기 ASIC와 디지탈 신호 처리기 간에 효율적인 접속을 거의 제공하지 못한다. 전형적으로, 대부분의 인터페이스는 디지탈 신호 처리기를 프로그래밍함으로써 관리된다. 많은 경우에서, 데이터 처리기는, 하드웨어 보조 처리기가 동작할 때, 실시간으로 데이터 포인터 및 명령을 제공해야만 한다. 안전한 설계를 위해, 전형적으로 디지탈 신호 처리기에 여분의 시간을 제공하여 하드웨어 보조 처리기를 서비스한다. 이것은 하드웨어 보조 처리기가 완전히 사용되지 않음을 의미한다. 두번째 문제점은 설계에 소비되는 시간 상의 문제이다. 다른 기능을 설계하는 기술이 발달함에 따라, 제품 싸이클이 감소되어 왔다. 이것은 새로운 기능을 신속하게 설계하는 것을 중요하게 한다. 프로그램 및 인터페이스를 재사용하는 능력은 설계 싸이클의 단축에서 도움이 될 것이다. 그러나, ASIC 하드웨어 보조 처리기 내에서 구현되는 고정된 기능은 용이하게 재사용될 수 없다. 전형적인 ASIC 하드웨어 보조 처리기는 좁은 범위의 문제에 적절한 일련의 한정된 기능을 가진다. 이러한 설계는 밀접하게 관련된 기능을 구현하는 경우에서도 신속하게 재사용될 수 없다. 더욱이, 디지탈 신호 처리기와 ASIC 하드웨어 보조 처리기 간의 인터페이스는 특정 제품에 특별한 기술을 사용하는 경향이 있다.
본 발명은 디지탈 신호 처리기 코어 및 보조 처리기를 포함하는 데이터 처리 시스템이다. 보조 처리기는 상기 디지탈 신호 처리기 코어의 어드레스 공간 내에 국부 메모리를 가진다. 보조 처리기는 디지탈 신호 처리기 코어로부터의 명령에 응답하여, 디지탈 신호 처리기 코어와 함께, 상기 국부 메모리에 저장되어 있는 데이터에 대해 소정의 데이터 처리 동작을 수행한다. 데이터 처리 시스템은 디지탈 신호 처리기 코어의 제어에 따르는 직접 메모리 액세스 회로(direct memory access circuit)를 포함한다. 직접 메모리 액세스 회로는 보조 처리기의 국부 메모리로/로부터 데이터를 자율적으로(autonomously) 전송한다.
보조 처리기는 명령에 대한 응답으로 그에 대응하도록 자신을 구성하여, 일련의 관련된 데이터 처리 동작을 수행한다. 보조 처리기 명령은 명령 선입선출 메모리(command first in first out memory)에 저장된다. 명령 선입선출 메모리는 소정의 메모리 어드레스에 맵핑되어 있다.
보조 처리기는 다양한 제어 명령에 응답한다. 수신 데이터 동기 명령은, 메모리의 직접 메모리 액세스 회로가 국부 메모리로의 메모리 전송 완료를 시그날링(signalling)할 때까지 처리 명령을 중단시킨다. 전송 데이터 동기 명령은, 보조 처리기가 직접 메모리 액세스 회로에 신호를 보내 국부 메모리로부터의 소정의 메모리 전송을 트리거링한다. 인터럽트 명령은, 보조 처리기가 디지탈 신호 처리기 코어를 인터럽트하게 한다.
각각의 명령은 국부 메모리 내의 데이터 입력 위치 지시를 포함한다. 보조 처리기는, 지시된 데이터 입력 위치에서 시작하여 국부 메모리로부터의 데이터를 재호출(recall)한다. 각각의 명령은 국부 메모리 내의 데이터 출력 위치 지시를 포함한다. 보조 처리기는, 결과 데이터를 지시된 데이터 입력 위치에서 시작하여 국부 메모리에 저장한다. 입력 데이터는 입력 버퍼로서의 역할을 하는 순환 구조 메모리 영역 내에 저장된다. 결과 데이터는 출력 버퍼로서의 역할을 하는 순환 구조 메모리 영역에 저장될 수 있다.
도 1은 디지탈 신호 처리기 코어(110) 및 재구성 가능한 하드웨어 보조 처리기(140)를 포함하는 회로(100)를 도시한다. 본 발명의 바람직한 실시예에 따르면, 이러한 부분들은 하나의 집적 회로 내에 형성된다. 디지탈 신호 처리기 코어(110)는 종래의 구조일 수 있다. 바람직한 실시예에서, 디지탈 신호 처리기 코어(110)는, 디지탈 신호 처리기 코어(110)와 독립된 자율적 데이터 전송을 위해 직접 메모리 액세스 회로(120)를 제어하도록 변경(adapting)된다. 외부 메모리 인터페이스(130)는 내부 데이터 버스(101) 및 어드레스 버스(103)를 대응 외부 데이터 버스(131) 및 외부 어드레스 버스(133)에 각각 인터페이스시키는 역할을 한다. 외부 메모리 인터페이스(130)는 종래의 인터페이스의 구조를 가진다. 집적 회로(100)는, 종래의 특징 및 회로들을 선택적으로 추가할 수 있다. 집적 회로(100)에 캐시 메모리를 추가하면, 실질적으로 성능이 향상됨에 유의한다. 도 1에 도시된 부분은 다른 종래의 부품 설비를 배제하기 위한 것은 아니다. 도 1에 도시된 종래의 부품들은 단지 재구성 가능한 하드웨어 보조 처리기(140)의 추가에 의해 가장 영향을 많이 받는 부분들이다.
재구성 가능한 하드웨어 보조 처리기(140)는 데이터 버스(101) 및 어드레스 버스(103)를 지나 집적 회로(100)의 다른 부분에 결합된다. 재구성 가능한 하드웨어 보조 처리기(140)는 명령 메모리(141), 보조 처리기 논리 코어(143), 데이터 메모리(145) 및 계수 메모리(coefficient memory)(147)를 포함한다. 명령 메모리(141)는 콘딧(conduit)의 역할을 하며, 이것에 의해 디지탈 신호 처리기 코어(110)는 재구성 가능한 하드웨어 보조 처리기(140)의 동작을 제어한다. 이러한 특징은 도 2에 더 도시될 것이다. 보조 처리기 논리 코어(143)는 명령 메모리(141) 내에 저장된 명령에 응답하여, 보조 처리 연산을 수행한다. 이러한 보조 처리 기능은 보조 처리기 논리 코어(143)와 데이터 메모리(145) 및 계수 메모리(147) 간의 데이터 교환을 포함한다. 데이터 메모리(145)는 재구성 가능한 하드웨어 보조 처리기(140)에 의해 처리된 입력 데이터를 저장하며, 재구성 가능한 하드웨어 보조 처리기(140)의 연산 결과도 저장한다. 이 데이터를 저장하는 방법은 도 2와 관련하여 아래에 상세하게 설명될 것이다. 계수 메모리(147)는, 보조 처리기 논리 코어(143)에 의해 사용되며 불변 또는 상대적으로 불변인 처리 파라미터-'계수'라 칭함-를 저장한다. 데이터 메모리(145) 및 계수 메모리(147)가 분리된 부분들로 도시되었지만, 이들을 하나의 일체형 메모리의 다른 부분으로서 채용하는 것도 용이할 것이다. 아래에 설명되는 바와 같이, 다수의 승산 누산 보조 처리기(multiply accumulate co-processor)에 있어서, 이러한 하나의 일체형 메모리 데이터 및 계수를 위한 두 개의 판독 포트와 출력 데이터를 기입하기 위한 두 개의 기입 포트를 갖는 것이 가장 양호하다. 재구성 가능한 하드웨어 보조 처리기(140)에 의해 액세스 가능한 메모리는, 동일 집적 회로 상에서 보조 처리기 논리 코어(143)에 물리적으로 인접하여 배치되는 것이 가장 바람직할 것으로 생각된다. 이러한 물리적 인접은, 보조 처리기 논리 코어(143)가 원하는 데이터 처리 능력을 갖는 데 필요한 넓은 메모리 버스들을 수용하기 위해 필요한 것이다.
도 2는 디지탈 신호 처리기 코어(110)와 재구성 가능한 하드웨어 보조 처리기(140) 간의 메모리 맵핑된 인터페이스를 도시한다. 디지탈 신호 처리기 코어(11)는 명령 메모리(141)를 통해 재구성 가능한 하드웨어 보조 처리기(140)를 제어한다. 바람직한 실시예에서, 명령 메모리는 선입선출(FIFO) 메모리이다. 명령 메모리(141)의 기입 포트는 디지탈 신호 처리기 코어(110)의 어드레스 공간 내에서 하나의 메모리 위치에 맵핑된 메모리이다. 따라서, 디지탈 신호 처리기 코어(110)는, 명령 메모리(141)로의 입력으로서의 역할을 하는 어드레스에 명령을 기입함으로써 재구성 가능한 하드웨어 보조 처리기(140)를 제어한다. 명령 메모리(141)는 두 개의 전방향 포인터(circularly oriented pointer)를 포함하는 것이 바람직하다. 기입 포인터(151)는, 명령 메모리(141) 내에서 다음에 수신되는 명령이 저장될 위치를 포인팅한다. 명령 메모리(141)의 소정의 어드레스에 기입이 있을 때마다, 기입 포인터는 데이터를 수신하는 물리적 위치를 선택한다. 이러한 데이터 기입 후, 기입 포인터(151)는 명령 메모리(141) 내의 다음 위치를 포인팅하도록 갱신된다. 기입 포인터(151)는, 최종 위치로부터 최초 위치를 포괄한다는 점에서 전방향이다. 재구성 가능한 하드웨어 보조 처리기(140)는, 판독 포인터(153)를 사용하여, 명령 메모리(141)로부터의 명령을 수신된 순서대로(선입선출) 판독한다. 판독 포인터(153)는 명령 메모리(141) 내에서 다음에 판독될 명령을 저장하는 위치를 포인팅한다. 판독 포인터(153)는 이러한 각각의 판독 후 명령 메모리(141) 내의 다음 위치를 참조하도록 갱신된다. 판독 포인터(153)도 전방향이며, 최종 위치에서 최초 위치까지 포괄한다는 것에 유의한다. 명령 메모리(141)는, 기입 포인터(151)가 판독 포인터(153)를 패싱(passing)하는 것을 방지하는 특성을 포함한다. 이것은, 예를 들어 기입 포인터(151)와 판독 포인터(153)가 동일한 위치를 참조할 때, 기입을 거절하고 메모리 오류 신호를 디지탈 신호 처리기 코어(110)에 전송함으로서 구현될 수 있다. 따라서, 명령 메모리(141)의 FIFO 버퍼는 풀 상태일 수 있으며, 이에 추가의 명령을 수용하지 않을 수 있다.
데이터 메모리(145) 및 계수 메모리(147)는 둘 다 디지탈 신호 처리기 코어(110)의 데이터 어드레스 공간 내에 맵핑된다. 도 2에 도시된 바와 같이, 데이터 버스(101)는 메모리(149)에 양방향으로 결합된다. 전술한 대안적인 실시예에 따라, 데이터 메모리(145) 및 계수 메모리(147)는 메모리(147)의 일부로서 형성된다. 메모리(147)도 보조 처리기 논리 코어(143)에 의해 액세스 가능하다(도 2에는 도시되지 않음). 도 2는 메모리(149) 내에 있는 세 개의 제한된 영역의 메모리를 도시한다. 아래에 더 상세하게 설명될 바와 같이, 재구성 가능한 하드웨어 보조 처리기(140)는 상이한 메모리 영역을 사용하는 수 개의 기능을 수행하는 것이 바람직하다.
집적 회로(100)는 다음과 같이 동작한다. 디지탈 신호 처리기 코어(110)는, 데이터를 데이터 메모리(145)에 로딩하고, 계수를 계수 메모리(147)에 로딩함으로써, 재구성 가능한 하드웨어 보조 처리기에 의해 사용되는 데이터 및 계수를 제어한다. 대안적으로, 디지탈 신호 처리기 코어(110)는 데이터 및 계수를 일체형 메모리(149)에 로딩한다. 디지탈 신호 처리기 코어(110)는 이러한 데이터 전송을 직접 수행하도록 프로그래밍될 수 있다. 대안적으로, 디지탈 신호 처리기 코어(110)는 직접 메모리 액세스 회로(120)를 제어하여 이러한 데이터 전송을 수행하게 하도록 프로그래밍될 수 있다. 특히, 오디오 또는 비디오 처리 응용에 있어서, 데이터 스트림은 예측 가능한 입력 장치로부터 예측 가능한 속도로 수신된다. 따라서, 디지탈 신호 처리기 코어(110)에 있어서, 직접 메모리 액세스 회로(120)가 외부 메모리로부터 재구성 가능한 하드웨어 보조 처리기(140)에 의해 액세스 가능한 메모리로의 전송을 수행하도록 제어하는 것이 효율적이다.
처리될 데이터의 전송 후, 디지털 신호 처리기 코어(110)는 재구성 가능한 하드웨어 보조 처리기(140)에 원하는 신호 처리 알고리즘에 관한 명령을 보낸다. 전술한 바와 같이, 명령은 소정의 어드레스로의 메모리 기입에 의해, 재구성 가능한 하드웨어 보조 처리기(140)에 전송된다. 수신된 명령은 선입선출 체계로 명령 메모리 내에 저장된다.
재구성 가능한 하드웨어 보조 처리기의 각각의 계산 명령은 각각의 수행될 기능을 지정하는 방식을 포함하는 것이 바람직하다. 바람직한 실시예에서, 재구성 가능한 하드웨어 보조 처리기(140)는 재구성 가능하도록 구성된다. 재구성 가능한 하드웨어 보조 처리기(140)는, 승산기 및 가산기와 같이, 상이하지만 관련된 기능을 수행하기 위해 상이한 방식으로 함께 접속될 수 있는 일련의 기능 단위를 가진다. 각각의 재구성 가능한 하드웨어 보조 처리기에 대해 선택된 일련의 관련 기능은 기능의 수학적 유사성에 기초할 것이다. 이러한 수학적 유사성은 유사한 하드웨어가 복수의 기능에 대해 재구성되는 것을 가능하게 한다. 명령은 데이터 처리기 명령 방식의 연산 코드를 통해 각각의 계산을 지시한다.
각각의 계산 명령은 계산에서 사용될 데이터의 위치를 지정하는 방식을 포함한다. 데이터 공간을 지정하는 방법으로는 여러 가지 적절한 방법이 있다. 예를 들어 명령은, 블록 내에서 개시 어드레스 및 데이터 워드 또는 샘플의 수를 지정할 수 있다. 데이터 크기는 파라미터로서 지정되고, 또는 계산 유형을 한정하는 연산 코드에 의해 지정될 수 있다. 또 다른 예로서, 명령은 입력 데이터의 데이타 크기, 개시 어드레스 및 종료 어드레스를 지정할 수 있다. 입력 데이터가 저장된 위치를 지정하는 공지된 간접적인 방법도 사용될 수 있음에 유의한다. 명령은, 개시 어드레스, 데이터 크기 및 데이터 블록 내의 샘플의 수와 종료 어드레스와 같은 파라미터 중 어느 하나를 저장하는 메모리 위치 또는 레지스터로의 포인터를 포함할 수 있다.
각각의 계산 명령은 각각의 명령을 위한 데이터를 저장하는 메모리 어드레스 범위를 지정해야만 한다. 이러한 지정은 입력 데이터를 저장하는 위치에 관해 상기에 언급된 방법들 중 어느 하나를 이용하여 실현될 수 있다. 많은 경우에서, 계산 기능은 필터 기능일 수 있으며, 처리에 따른 출력 데이터의 양은 입력 데이터의 양과 거의 동등할 것이다. 다른 경우에서, 출력 데이터의 양은 입력 데이터의 양보다 많거나 적을 것이다. 어떤 경우에서도, 결과 데이터의 양은 입력 데이터의 양 및 요구되는 계산 기능의 유형으로부터 알 수 있다. 따라서, 단순히 개시 어드레스를 지정하는 것은 모든 출력 데이터가 저장될 위치를 지정하는 데 충분한 정보를 제공하는 것이다. 처리 동안 입력 데이터에 중복 기입(overwrite)하는 방식으로 출력 데이터를 저장하는 것도 가능하다. 대안적으로, 출력 데이터는 메모리의 다른 부분에 기입될 수 있으며, 입력 데이터는 적어도 일시적으로 보존될 수 있다. 입력 데이터가 재사용될 지의 여부에 따라 이러한 대안들 중에서 선택한다.
도 3은 두 개의 메모리 영역을 대안적으로 포함하는 하나의 유용한 기술을 도시한다. 하나의 메모리 영역(144)은 보조 처리기 기능에 필요한 입력 데이터를 저장한다. 상대적으로 일정한 계수는 계수 메모리(147) 내에 저장된다. 이 데이터는 보조 처리기 논리 코어(143)에 의해 사용되기 위해 재호출된다(1 판독). 출력 데이터는 제2 메모리 영역(146)에 기입된다(1 기입). 데이터 메모리 영역(144)의 사용 후, 직접 메모리 액세스 회로(120)는 전에 사용된 데이터 위에 다음 블록을 위한 데이터를 중복 기입한다(2 기입). 동시에, 직접 메모리 액세스 회로(120)는, 재구성 가능한 하드웨어 보조 처리기(140)에 의해 중복 기입되어 있는 메모리로부터 데이터를 판독한다(2 판독). 입력 데이터 및 결과 데이터를 위한 이러한 두 개의 메모리 영역은 순환 버퍼로 구성될 수 있다. 복수의 관련 기능을 필요로 하는 제품에서, 순환 버퍼로 정의되는 분리 메모리 영역이 사용될 수 있다. 순환 버퍼로서 구성되는 하나의 메모리 영역이 각각의 개별적인 기능에 할당될 것이다.
계산 명령의 포맷은 고급 언어로 된 서브루틴 호출 명령의 포맷과 거의 유사한 것이 바람직하다. 즉, 명령은 수행될 각각의 계산 기능을 지정하는 서브루틴 명칭과 기능면에서 유사한 명령 명칭을 포함하는 것이 바람직하다. 또한, 각각의 명령은 명령 유형 내에서 유효한 선택을 지정하는 일련의 파라미터를 포함한다. 이러한 파라미터들은 직접적인 양(direct quantity) 또는 변수의 형태를 취할 수 있으며, 이들은 원하는 양을 저장하는 레지스터 또는 메모리 위치로의 포인터이다. 이러한 파라미터의 수 및 유형은 명령 유형에 의존한다. 이 서브루틴 호출 포맷은 디지탈 신호 처리기 코어(110)에 기입된 프로그램을 재사용하는 데 중요하다. 사용시, 프로그래머 또는 컴파일러는 재구성 가능한 하드웨어 보조 처리기(140)를 활성화하기 위한 스터브 서브루틴(stub subroutine)을 제공한다. 이러한 스터브 서브루틴은 단순히 서브루틴 파라미터를 수신하고, 이 파라미터를 사용하여 해당하는 보조 처리기 명령을 형성한다. 그 다음, 스터브 서브루틴은 이러한 명령을, 재구성 가능한 하드웨어 보조 처리기(140)에 전송된 명령을 위해 보존된 소정의 메모리 어드레스에 기입한 후, 복귀한다. 본 발명은 디지탈 신호 처리기 코어의 계산 용량이 시간에 따라 일정하게 증가할 것을 예상한다. 따라서, 특정 제품의 처리 조건은 일정 시점에서 디지탈 신호 처리기 코어(110)와 재구성 가능한 하드웨어 보조 처리기(140)의 조합을 필요로 할 수 있다. 보다 나중의 시점에서, 명령 집합 호환 가능한 디지탈 신호 처리기 코어의 유효한 계산 용량은 증가하여, 재구성 가능한 하드웨어 보조 처리기를 필요로 하는 기능이 디지탈 신호 처리기 코어에 의한 소프트웨어 내에서 수행되게 될 수 있다. 제품에 대한 종래의 프로그램 코드는, 새롭고 보다 성능 좋은 디지탈 신호 처리기로 용이하게 변환될 수 있다. 이것은, 대체된 재구성 가능한 하드웨어 보조 처리기에 의해 지원되는 각각의 명령에 대해 독립적인 서브루틴을 제공함으로써 성취된다. 그 다음, 본래의 프로그램에서, 재구성 가능한 하드웨어 보조 처리기에 명령을 전송하기 위해 서브루틴 스터브를 채용하는 각각의 위치는 대응 서브루틴 호출에 의해 대체된다. 따라서, 광범위한 재프로그래밍은 방지된다.
하나의 데이터 블록에 대한 처리가 완결된 후, 데이터는 데이터 메모리(145) 또는 일체형 메모리(149)로부터 전송될 수 있다. 이러한 2차 전송은, 출력 메모리 위치에 저장된 데이터를 판독하는 디지탈 신호 처리기 코어(110)의 직접 작용 또는 직접 메모리 액세스 회로(120)의 도움에 의해 수행될 수 있다. 이러한 출력 데이터는 처리 출력을 나타낼 수 있다. 이러한 경우에, 데이터는 유틸라이제이션 장치에 전송된다. 대안적으로, 재구성 가능한 하드웨어 보조 처리기(140)의 출력 데이터는 진행 중인 작업을 나타낼 수 있다. 이러한 경우, 전형적으로 데이터는 나중의 검색 및 다른 처리를 위해 집적 회로(100) 외부의 메모리에 일시적으로 저장될 것이다.
재구성 가능한 하드웨어 보조 처리기(140)는 다른 사용을 준비한다. 이러한 다른 사용은 동일한 기능의 추가적인 처리일 수 있다. 이 경우에서, 전술한 처리는 새로운 데이터 블록에 대해 동일한 방식으로 반복된다. 이러한 다른 사용은, 다른 기능의 처리일 수 있다. 이러한 경우에서, 새로운 데이터는 재구성 가능한 하드웨어 보조 처리기(140)에 의해 액세스 가능한 메모리에 로딩되어야 하며, 새로운 명령이 로딩되고, 처리된 데이터 출력 또는 다른 처리를 위해 판독된다.
재구성 가능한 하드웨어 보조 처리기(140)는 하나 이상의 제품 알고리즘 기능을 수행할 수 있는 것이 바람직하다. 많은 디지탈 신호 처리 작업은 다수의 유사한 기능예를 사용할 것이다. 예를 들어, 처리는 다수의 유사한 필터 기능을 포함할 수 있다. 재구성 가능한 하드웨어 보조 처리기(140)는 모든 필터 기능을 실시간으로 수행하는 데 충분한 능력을 가지는 것이 바람직하다. 재구성 가능한 하드웨어 보조 처리기(140)가 이러한 시스템에서 동작할 때, 개별 샘플보다 데이터 블록에 대해 동작을 수행하는 것이 유리함을 알 수 있을 것이다. 예를 들어, 재구성 가능한 하드웨어 보조 처리기(140)가 기능 A, B 및 C를 수행하는 것으로 가정하 자. 이러한 기능들은 순차적일 수 있고, 디지탈 신호 처리기 코어(110)에 의해 수행되는 기능과 인터리빙될 수 있다. 재구성 가능한 하드웨어 보조 처리기(140)는 우선 데이터 블록 상에 기능 A를 수행한다. 이 기능은 전술한 바와 같이 수행된다. 디지탈 신호 처리기 코어(110)는 직접적으로 또는 직접 메모리 액세스 회로(120)의 제어 하에, 데이터를 메모리(149)의 메모리 영역(155)에 로딩한다. 처리될 데이터의 양을 지정하는 기능 A를 위한 구성에 관한 명령이 생성되면, 재구성 가능한 하드웨어 보조 처리기(140)는 기능 A를 수행하고 그 명령에 의해 지정된 메모리 영역(155)의 한 부분에 결과 데이터를 저장한다. 유사한 처리가 수행되어, 재구성 가능한 하드웨어 보조 처리기(140)가 메모리 영역(157)에 저장되어 있는 데이터에 기능 B를 수행하고 그 결과를 메모리 영역(157)에 복귀시키게 한다. 기능 수행은 기능 B를 위한 데이터 블록의 크기와 무관한 크기를 가지는 블록에 대해 발생할 수 있다. 최종적으로, 재구성 가능한 하드웨어 보조 처리기(140)는 메모리 영역(159) 내의 데이터에 기능 C를 수행하고 그 결과를 메모리 영역(159)에 복귀시키게 된다. 기능 C를 수행하기 위한 블록 크기는 기능 A 및 B에 대해 선택된 블록 크기와 무관하다.
블록 처리의 유용성은 본 예시로부터 알 수 있다. 세 개의 기능 A, B 및 C는 전형적으로 서로 독립적이며 반드시 동일할 필요는 없는 데이터 흐름 속도를 가진다. 각각의 기능에 대한 특정한 하드웨어 설비는 기능의 일반성과 재구성 가능한 하드웨어의 재사용 가능성을 손상시킨다. 또한, 하드웨어 내에서 각각의 기능에 할당된 자원들을 매칭시켜, 하드웨어의 균형과 효율적인 사용을 제공하기가 어 려워진다. 재구성한 하드웨어가 사용되는 경우, 구성 요소들 간의 스위칭을 위한 간접 비용이 추가된다. 세 개의 기능을 통한 흐름에 대해 샘플 바이 샘플 체계(sample by sample basis)로 동작하는 것은 이러한 재구성 스위치의 수가 최대화될 것을 요구한다. 이것은 명백하게 최적보다 적을 것이다. 따라서 기능들 간의 스위칭에 대해 재구성하기 전에 데이터 블록 상에 각각의 기능을 수행하면, 이러한 간접 비용은 절감될 것이다. 또한, 각각의 기능에 소비되는 시간의 양을 선택함으로써 기능들 간의 자원을 할당하기가 상대적으로 쉬워진다. 마지막으로, 이러한 블록 처리는 일반적으로 샘플 레벨에서 기능들 간의 스위칭보다 디지탈 신호 처리기 코어로부터의 제어 간접 비용이 더 적게 들 것이다.
다양한 기능 A, B 및 C에 대해 선택된 블록 크기는 필요한 상대 데이터 속도 및 데이터 크기에 의존할 것이다. 또한, 디지탈 신호 처리기 코어(110)에 할당된 작업 및 그들 각각의 계산 조건도 고려되어야만 한다. 이상적으로, 디지탈 신호 처리기 코어(110) 및 재구성 가능한 하드웨어 보조 처리기(140)가 거의 완전하게 로딩된다. 이것은 자원에 대한 최적의 사용을 가능하게 한다. 디지탈 신호 처리기 코어(110) 및 재구성 가능한 하드웨어 보조 처리기(140)의 이러한 균형잡힌 로딩은 재구성 가능한 하드웨어 보조 처리기(110)를 계산의 50%에 대해 사용할 수 있는 제품 알고리즘에 의해 성취될 수 있다. 재구성 가능한 하드웨어 보조 처리기(110)가 최소로 요구되는 계산의 절반 이상을 수행할 수 있는 경우, 디지탈 신호 처리기 코어(140) 상에 구현되는 추가의 특징은 로딩을 매칭시키기 위해 제품에 추가될 수 있다. 이것은 디지탈 신호 처리기 코어(140) 내에 여분의 계산 자원 을 사용하게 한다. 계산 처리의 로딩은 정적으로 결정될 것이다. 이러한 정적인 계산 할당은, 디지탈 신호 처리기 코어(140) 및 재구성 가능한 하드웨어 보조 처리기(110)가 둘 다 고정되고 알려진 기능을 수행할 때 최상으로 수행될 수 있다. 계산 로드가 시간에 따라 변하는 것으로 예상되는 경우, 디지탈 신호 처리기 코어(140) 및 재구성 가능한 하드웨어 보조 처리기(110) 간에 계산 자원을 동적으로 할당하는 것이 바람직하다. 재구성 가능한 하드웨어 보조 처리기(110)에 의해 수행되는 처리는 상대적으로 안정적으로 유지되고, 디지탈 신호 처리기 코어(140)에 의해 수행되는 처리만이 변할 것으로 예상된다.
도 4는 보다 양호한 동작의 인터럽트를 가능하게 하는 메모리 관리 기술을 나타낸다. 블록(401, 402 및 403)으로 구성된 데이터(400)는 유한 임펄스 필터(finite impulse filter)의 윈도우(410)를 패싱한다. 처리 A, B 및 C는 데이터 메모리(145) 내의 순환 버퍼(421, 431 및 441)에 각각 응답하여 동작한다. 이러한 순환 버퍼는 이력(history)이 보관될 수 있게 한다. 따라서, 다른 처리에 후속하는 다음 블록을 처리할 때, 이력 데이터는 사용될 예측 가능한 어드레스에서 유효하다. 이 이력 데이터는 다음 블록을 위해 새롭게 기입된 데이터 바로 앞에 위치한다.
이러한 기술은, 메모리 공간이 다른 작업을 수행하기 위해 클리어될 필요가 있을 때 유효하다. 그러한 경우에서, 이력 데이터는 필터 처리의 복귀시 플러시(flush)되고 재로딩될 것이다. 대안적으로, 다음 블록에 필요한 이력 데이터는 메모리(145)의 다른 영역 또는 외부 메로리 인터페이스(130)에 접속된 외부 메모리로 이동될 수 있다. 이러한 방법들 중 어느 것이라도 데이터를 이동시키기 위한 시간이 필요하므로 불리하다. 이것은 인터럽트 서비스 또는 본래 작업으로의 복귀를 지연시킨다.
바람직한 대안이 도 4에 개략적으로 도시되어 있다. 메모리 내의 위치에 결과 데이터를 기입하는 동안, 현재 샘플은 메모리의 더 작은 영역에 기입된다. 예를 들어, 순환 버퍼(421)로부터의 입력 데이터는 이력 버퍼(423)에 기입되고, 순환 버퍼(431)로부터의 입력 데이터는 이력 버퍼(433)에 기입되며, 순환 버퍼(441)로부터의 입력 데이터는 이력 버퍼(443)에 기입된다. 이력 버퍼(423, 433, 443) 각각은 필터 윈도우(410)와 같은 대응 필터 윈도우의 폭에 따라 이력을 저장하는 데 필요한 크기를 갖는다. 데이터 블록의 처리 완료시, 이 제한된 영역 내에 가장 최근의 이력이 저장된다. 보조 처리기가 인터럽트되어야만 하는 경우, 순환 버퍼(421, 431 및 441) 내의 데이터는 이력 버퍼(423, 433 및 443) 내에 저장된 이력 데이터를 소거하지 않고 클리어될 수 있다. 이 기술은, 인터럽트 작업을 시작하기 전에 데이터를 재로딩하거나 또는 데이터를 저장할 필요를 없앤다. 많은 필터 작업에서, 충분한 기입 메모리 대역폭은 여분의 싸이클없이 이력 버퍼에의 기입을 성취하는 데 유효하다. 이러한 기술의 다른 이점은 전술한 것들보다 순환 버퍼(421, 431 및 441)에 할당될 필요가 있는 메모리가 적다는 것이다. 전술한 기술들에서, 순환 버퍼는 데이터 블록 전체 및 필요한 이력 데이터와 동일한 추가양을 포함하도록 충분히 커야만 한다. 도 4에 도시된 기술은 순환 버퍼(421, 431 및 441)의 크기를 한 블록의 데이터만 저장할 만큼 감소시킬 수 있다.
오디오 및 비디오 신호 처리에 유용한 많은 알고리즘은 조절 계수를 포함한다. 즉, 시간에 따라 수행되는 기능을 변화시키는 몇몇의 피드백 경로가 존재한다. 이러한 알고리즘의 일례는, 채용된 특정 라인 및 원격 모뎀(far end modem)의 동작에 조절되는 데 시간을 필요로 하는 모뎀이다. 초기에, 블록 모드에서 이러한 조절 가능을 수행하는 것은 이들 조절 기능의 수렴에 악영향을 끼치는 것으로 보인다. 이러한 많은 기능들에 포함된 수학적 처리를 검토해보면 다른 것들을 알 수 있다. 특정 시간에서 수행될 수 있는 조절의 양은 일반적으로 조절 계산에 유효한 데이터의 양에 의존한다. 이 유효한 데이터의 양은 데이터가 샘플 바이 샘플 체계로 처리되는지 또는 샘플 블록 체계로 처리되는지의 여부에 의존하지 않는다. 실제로, 조절 속도는 거의 동일할 것이다. 샘플 바이 샘플 체계 상의 조절은 많은 작은 스텝에서 완전 조절된 계수를 향한 수렴을 유발할 것이다. 데이터 블록 체계 상의 조절은 더 적은 스텝 및 더 많은 스텝 내의 수렴을 유발할 것이다. 이것은 블록 처리의 경우에서, 더 많은 양의 유효 데이터가 정정에 대해 더 큰 에러항을 유도하기 때문이다. 그러나, 평균 수렴 경사는 두 경우에 대해 동일하다. 전술한 모뎀의 경우에서와 같이, 대부분의 조절이 초기화 스텝에서 수행되고, 안정된 상태에서 처리가 수행되는 경우, 실질적인 차이는 거의 없을 것이다. 조절 필터가 이동 타겟을 추적해야만 하는 경우, 샘플 바이 샘플 체계의 조절이 블록 체계의 조절보다 양호함이 명백할 것이다. 예를 들어, 후속하는 처리가 블록 크기의 시간의 역수보다 큰 주파수로 변하는 경우, 블록 체계의 조절이 샘플 바이 샘플 체계 조절에 비해 작은 스텝에서 불필요한 헌팅(hunting)을 예방할 수 있다. 따라서, 블록 체계의 조절 필터링은 샘플 바이 샘플 체계의 조절 필터링에 비해 일반적인 단점은 갖지 않는다.
재구성 가능한 하드웨어 보조 처리기(140)의 명령 집합은 제어 기능을 위한 수 개의 비계산 명령을 포함하는 것이 바람직하다. 이러한 조절 기능은 디지탈 신호 처리기 코어(110)와 재구성 가능한 하드웨어 보조 처리기(140) 간의 협동에서 유용할 것이다. 이러한 비계산 명령의 제1은 수신 데이터 동기화 명령이다. 이 명령은 전형적으로 직접 메모리 액세스 회로(120)에 의해 관리되는 데이터 전송과 함께 사용될 것이다. 디지탈 신호 처리기 코어(110)는 직접 메모리 액세스 회로(120)를 통한 입력 데이터 전송의 설정에 의해 처리를 제어한다. 디지탈 신호 처리기 코어(110)는 재구성 가능한 하드웨어 보조 처리기(140)에 두 개의 명령을 보낼 것이다. 첫번째 명령은 수신 데이터 동기화 명령이다. 두 번째 명령은 원하는 계산 명령이다.
재구성 가능한 하드웨어 보조 처리기(140)는 선입선출 기초 상의 명령 메모리(141)에 저장되어 있는 명령에 따라 동작한다. 수신 데이터 동기화 명령이 도달하면, 재구성 가능한 하드웨어 보조 처리기는 중지될 것이다. 재구성 가능한 하드웨어 보조 처리기는, 직접 메모리 액세스 회로(120)로부터 입력 데이터 전송 완료를 지시하는 제어 신호를 수신할 때까지 아이들 상태(idle)로 유지된다. 이러한 입력 데이터 전송의 완료시, 다음 블록을 위한 데이터가 데이터 메모리(145) 또는 일체형 메모리(149)에 저장됨에 유의한다. 직접 메모리 액세스 회로(120)는 복수의 대기 데이터 전송을 관리할 수 있다. 이것은 본 기술 분야에서 복수의 DMA 채 널로서 공지되어 있다. 이러한 경우에서, 수신 데이터 동기화 명령은, 수신 데이터 동기화 명령의 전송 전에 디지탈 신호 처리기 코어(110)에 알려진 대응 DMA 채널임을 유의한다. 직접 메모리 액세스 회로(120)는 완결된 데이터 전송 각각의 채널 번호를 전송할 수 있다. 이것은 재구성 가능한 하드웨어 보조 처리기(140)가, 완결된 직접 메모리 액세스와 대응하는 수신 데이터 동기화 명령을 매칭시킬 수 있게 한다. 재구성 가능한 하드웨어 보조 처리기는, 완결된 직접 메모리 액세스 신호가 수신 데이터 동기화 명령 내에서 지정된 것과 동일한 DMA 채널에 의해 지시되기만 하면 다음 명령으로 진행한다.
이 완결 신호에 후속하여, 재구성 가능한 하드웨어 보조 처리기(140)는 명령 메모리(141) 내의 다음 명령으로 진행한다. 이러한 경우에서, 이 다음 명령은 방금 로딩된 데이터를 사용하는 계산 명령이다. 이 계산 명령은 앞의 수신 데이터 동기화 명령이 완결될 때까지 개시되지 않기 때문에, 정확한 데이터가 로딩되는 것을 보장한다.
수신 데이터 동기화 명령과 계산 명령의 조합은 디지탈 신호 처리기 코어(110) 상의 제어 부담을 감소시킨다. 디지탈 신호 처리기 코어(110)는 입력 데이터 전송을 수행하기 위한 직접 메모리 액세스 회로(120)를 설정하고, 명령 쌍을 재구성 가능한 하드웨어 보조 처리기(140)로 전송하기만 하면 된다. 이것은 입력 데이터 전송이 계산 동작에 앞서 완결되는 것을 보장한다. 이것은 디지탈 신호 처리기 코어(110)가 재구성 가능한 하드웨어 보조 처리기(140)의 기능을 제어하는 데 필요로 하는 소프트웨어 간접 비용을 절감시킨다. 그렇지 않으면, 디지탈 신호 처리기 코어는 입력 데이터 로딩 동작의 완결 신호를 보내는 직접 메모리 액세스 회로(120)로부터의 인터럽트를 수신할 필요가 있을 수 있다. 인터럽트 서비스 루틴은 인터럽트를 서비스하기 위해 기입되어야만 한다. 게다가, 이러한 인터럽트는 보조 처리기 명령을 명령 메모리로 전송하기 위한 문맥 스위치(context switch) 및 인터럽트로부터 복귀하기 위한 다른 문맥 스위치를 필요로 한다. 결과적으로, 수신 데이터 동기화 명령은 디지탈 신호 처리기 코어 내의 상당한 공간이 보다 생산적으로 사용될 수 있게 한다.
다른 비계산 명령은 전송 데이터 동기화 명령이다. 전송 데이터 동기화 명령은 수신 데이터 동기화 명령의 역과 거의 동일하다. 전송 데이터 동기화 명령의 도달시, 재구성 가능한 하드웨어 보조 처리기(140)는 직접 메모리 액세스 동작을 트리거링한다. 이 직접 메모리 액세스 동작은 다른 시스템 위치에서의 저장을 위한 데이터 메모리(145) 또는 일체형 메모리(149)로부터 데이터를 판독한다. 이 직접 메모리 액세스 동작은 디지탈 신호 처리기에 의해 프리셋될 수 있고, 전송 데이터 동기화 명령의 도달시 재구성 가능한 하드웨어 보조 처리기(140)로부터의 신호 수신과 함께 시작될 수 있다. 직접 메모리 액세스 회로(120)가 복수의 DMA 채널을 지원하는 경우에서, 전송 데이터 동기화 명령은 트리거링되는 DMA 채널을 지정해야만 한다. 대안적으로, 전송 데이터 동기화 명령은, 둘 이상의 채널이 지원되는 경우 DMA 채널을 포함하여 직접 메모리 액세스 회로(120)를 위한 제어 파라미터를 지정할 수 있다. 이러한 전송 데이터 동기화 명령의 수신시, 재구성 가능한 하드웨어 보조 처리기는 직접 메모리 액세스 회로(120)와 직접 통신하여 적절한 직접 메 모리 액세스 동작을 설정하고 개시한다.
다른 가능한 비계산 명령은 동기화 완료 명령이다. 동기화 완료 명령의 수신시, 재구성 가능한 하드웨어 보조 처리기(140)는 인터럽트를 디지탈 신호 처리기 코어(110)에 보낸다. 이러한 인터럽트를 수신하면, 디지탈 신호 처리기 코어(110)는 재구성 가능한 하드웨어 보조 처리기에 미리 보내진 모든 명령이 완료되었음을 확인한다. 응용에 따라서는, 전송 및 수신 데이터 동기화 명령보다 인터럽트에 의해 제어하는 것이 더 양호할 수 있다. 전송 및 수신 데이터 동기화 명령을 이용하여 재구성 가능한 하드웨어 보조 처리기(140)를 위한 수 개의 명령을 대기시키고, 대기 종료시 디지탈 신호 처리기 코어(100)를 인터럽트하는 것도 양호할 수 있다. 이것은, 재구성 가능한 하드웨어 보조 처리기에 의해 대기된 동작에 후속하는, 디지탈 신호 처리기 코어(110)에 의한 보다 높은 레벨의 제어 기능에 유용할 것이다.
도 5는 회로(100)의 다른 가능한 배열을 나타낸다. 도 5에 도시된 회로(100)는 두 개의 재구성 가능한 하드웨어 보조 처리기를 나타낸다. 디지탈 신호 처리기 코어(110)는 제1 재구성 가능한 하드웨어 보조 처리기(140) 및 제2 재구성 가능한 하드웨어 보조 처리기(180)를 이용하여 동작한다. 전용 버스(185)가 제1 재구성 가능한 하드웨어 보조 처리기(140)와 제2 재구성 가능한 하드웨어 보조 처리기(180)를 연결한다. 이 보조 처리기들은 디지탈 신호 처리기 코어(110)의 메모리 공간을 공유하는 전용 메모리를 가진다. 데이터는 전용 버스(185)를 지나 하나의 보조 처리기 기입에 의해 다른 보조 처리기의 전용 메모리에 포함되는 어드레스 범위로 전송될 수 있다. 대안적으로, 각각의 보조 처리기는 다른 보조 처리기 의 입력 포트를 향하는 출력 포트를 가질 수 있으며, 전용 버스(185) 내에 포함되는 보조 처리기들 사이에 링크도 포함할 수 있다. 이러한 구성은 데이터가, 하나의 보조 처리기에 의해 관리되는 한 유형의 동작에서 제2 보조 처리기에 의해 관리되는 다른 유형의 동작으로 흐르는 제품의 경우에 유용하다. 이 전용 버스는 디지탈 신호 처리기 코어(110)가 직접적으로 또는 직접 메모리 액세스 회로(120)를 통해 데이터 핸드 오프를 관리할 필요를 없앤다.
도 6 내지 도 9는 재구성 가능한 하드웨어 보조 처리기의 예시적인 구성을 도시한다. 이 특정 보조 처리기는 다중 승산-누산기(multiple multiply-accumulator)로 언급된다. 복수의 승산에 대한 합산이 형성되는 승산-누산 연산은 신호 처리에서 많이 사용된다. 많은 필터 알고리즘은 이러한 기능에 근거하여 구성된다.
도 6은 다중 승산-누산기(140)의 일반적인 전체 구성을 도시한다. 데이터 메모리(145) 및 계수 메모리(147)는 128 비트 워드로 기입될 수 있다. 이 기입 동작은 디지탈 신호 처리기 코어(110) 또는 직접 메모리 액세스 회로(120)에 의해 제어된다. 어드레스 생성기(150)는 보조 처리기에 의해 사용되는 데이터 및 계수의 재호출을 위한 어드레스를 생성한다. 이 판독 동작은 각각의 메모리로부터 128 비트의 데이터 워드 상에 수행된다.
이 재호출된 데이터 워드들은 입력 포맷터(160)에 공급된다. 입력 포맷터(160)는, 일반적으로 128 비트 워드를 원하는 계산에 필요한 순서로 배열하기 위한 다양한 시프트 및 정렬 동작을 수행한다. 입력 포맷터는 128 비트(8×16 비트) Data X, 128 비트(8×16 비트) Data Y 및 64비트(2×32 비트) Data Z를 출력한다.
이들 세 개의 데이터 스트림은 데이터 경로(170)에 공급된다. 데이터 경로(170)는 보조 처리기의 연산 부분이다. 아래에 설명될 바와 같이, 데이터 경로(170)는, 다양한 방법으로 접속될 수 있는 복수의 하드웨어 승산기 및 가산기를 포함하여, 다양한 승산-누산 연산을 수행한다. 데이터 경로(170)는 두 개의 가산기 데이터 스트림을 출력한다. 이들 각각은 432 비트 데이터 워드이다.
이들 두 개의 데이터 스트림은 입력을 출력 포맷터(180)에 공급한다. 출력 포맷터(180)는, 두 개의 데이터 스트림을 두 개의 메모리에 재기입하기 위해 두 개의 128 비트 데이터 워드로 재배열한다. 이들 기입 동작을 위한 어드레스는 어드레스 생성기(150)에 의해 계산된다. 이러한 재배열은 메모리 워드 경계 상의 배열을 관리할 수 있다.
보조 처리기(140)의 동작은 제어 유닛(190)의 제어 하에 있다. 제어 유닛(190)은 명령 메모리(141)로부터의 명령을 재호출하고, 보조 처리기(140) 내에 대응하는 제어를 제공한다.
입력 포맷터(160)의 구조가 도 7에 도시된다. 128 비트의 두 개의 데이터 스트림 각각은 멀티플렉서(205 및 207) 각각의 입력에 공급된다. 각각의 멀티플렉서는 독립적으로 대응 레지스터(215 및 217) 내의 저장을 위한 하나의 입력을 선택한다. 멀티플렉서(205)는 레지스터(215)의 내용뿐만 아니라 데이터 스트림을 재싸이클링하도록 선택할 수 있다. 멀티플렉서(207)는 단지 입력 데이터 스트림 중 하 나만을 선택할 수 있다. 멀티플렉서(201 및 203)는 레지스터(215)의 내용을 선택할 수 있거나 또는 그들 각각의 레지스터(211 및 213)의 내용을 재싸이클링하도록 선택할 수 있다. 멀티플렉서(209)는 시프터(221)의 상위 비트에 공급하기 위해 레지스터(211 또는 213)의 내용 중 하나를 선택한다. 더 낮은 비트가 레지스터(215)로부터 공급된다. 이들 128 비트는 복제/교환 유닛(223)에 공급된다. 복제/교환 유닛(223)은 입력의 일부를 완전 128 비트로 복제할 수 있고, 또는 데이터 순서를 재배열할 수 있다. 따라서, 데이터는 일시적으로 레지스터(225) 내에 저장된다. 이것은 데이터 경로(170)에 입력되는 Data X를 형성한다. 멀티플렉서(207)의 출력은 멀티플렉서(233)에 직접적으로 공급되고, 레지스터(217)를 통해서도 공급된다. 멀티플렉서(233)는 자신에게 공급된 비트로부터 192 비트를 선택한다. 상위 128 비트는 데이터 경로(170)에 입력되는 Data Y를 형성한다. 이들 비트는 멀티플렉서(235)를 통해 재순환될 수 있다. 하위 64 비트는 데이터 경로(170)에 입력되는 Data Z를 형성한다.
도 8은 데이터 경로(170)의 구조를 블록도의 형태로 도시하고 있다. 입력 포맷터로부터 공급된 Data X 및 Data Y 입력의 다양한 세그먼트가 이중 승산 가산기(dual multiply adder)(310, 320, 330 및 340)에 공급된다. 도시된 바와 같이, 제1 및 제2의 16비트 데이터 워드 Data X[0:1] 및 Data Y[0:1]는 이중 승산 가산기(310)에 결합되고, 제3 및 제4의 16비트 데이터 워드 Data X[2:3] 및 Data Y[2:3]는 이중 승산 가산기(320)에 결합되며, 제5 및 제6의 16비트 데이터 워드 Data X[4:5] 및 Data Y[4:5]는 이중 승산 가산기(330)에 결합되고, 제7 및 제8의 16비트 데이터 워드 Data X[6:7] 및 Data Y[6:7]는 이중 승산 가산기(340)에 결합된다. 이러한 각각의 유닛은 동일하므로, 이중 승산 가산기(310)만이 상세하게 설명된다. 최하위 16 Data X 및 Data Y 비트는 승산기(311)로의 입력을 공급한다. 승산기(311)는 16비트 입력쌍을 수신하여, 32비트 곱을 생성한다. 이러한 곱은 한 쌍의 파이프라인 출력 레지스터에 저장된다. 32비트 출력은 부호 확장 유닛(313) 및 8비트 좌측 레지스터(314)에 공급된다. 부호 확장 유닛(313)은 최상위 비트인 곱의 부호 비트를 40비트로 반복한다. 8비트 좌측 시프터(314)는 32비트 곱을 좌측으로 시프트시키고, 빈 최하위 비트들은 제로로 채워진다. 이러한 두 개의 40비트 양은 40비트 가산기(319)의 제1 입력의 응용에 대해 멀티플렉서(316)에서 선택된다. 유사한 형태로, 그 다음 최상위의 16 Data X 및 Data Y 비트가 승산기(312)의 각각의 입력에 공급된다. 승산기(312)는 두 개의 16비트 입력을 수신하여, 32비트 곱을 생성한다. 이 곱은 한쌍의 파이프라인 레지스터에 저장된다. 8비트 우측 시프터(315)는 곱을 우측으로 8비트 시프트시키고, 빈 최상위 비트는 제로로 채워진다. 멀티플렉서(317)는 이들 세 개의 값 중에서 선택한다. 제1 양은 입력에서의 16 Data X 비트와 16 Data Y 비트의 연결이다. 이 입력은 승산기(312)가 바이패스될 수 있게 한다. (부호 확장 유닛(318)에 의해 부호 확장된) 선택된 32비트는 승산기(311)에 의해 생성된 곱에 가산된다. 제2 양은 승산기(312)에 의해 제공되는 곱이다. 제3 양은 8비트 우측 시프터(315)의 시프트된 출력이다. 멀티플렉서(317)로부터 선택된 양은 부호 확장 유닛(318)에 의해 40비트로 부호 확장된다. 부호 확장된 40비트 양은 40비트 가산기(319)로의 제2 입력이다. 16비트 입력 인자가 32비트만을 생성하는 경우에도 가산기(319)에는 40비트가 제공되어 복수의 승산 누산에 동적 범위를 제공한다.
각각의 이중 승산 가산기 유닛(310, 320, 330 및 340) 내의 가산기(319)의 출력은 제1 가산기 스테이지 출력 adder_st1_outp으로서 제공된다. 32의 최상위 가산기 출력 비트만이 출력에 접속된다. 이것은 4×32비트 또는 128비트만을 제공한다.
40비트 가산기의 제2 스테이지는 가산기(353 및 355)를 포함한다. 가산기(353)는 이중 승산 가산기 유닛(310 및 320)의 출력을 가산한다. 가산기(355)는 이중 승산 가산기 유닛(330 및 340)의 출력을 가산한다. 2개의 다른 데이터 경로는 제2 가산기 스테이지에서 합류된다. Data Z 입력의 최하위 32비트는 파이프라인 레지스터(351)에 일시적으로 저장된다. 32비트의 양은 부호 확장 유닛(352)에서 40비트로 부호 확장된다. 유사한 형태로, Data Z 입력의 최상위 비트는 파이프라인 레지스터(357)에 일시적으로 저장된다. 이러한 양은 부호 확장 유닛(358)에 의해 40비트로 확장된다.
제3 가산기 스테이지는 가산기(361, 363, 367 및 368)를 포함한다. 가산기(361)는 40비트 폭이다. 이것은 가산기(353)의 출력과 부호 확장된 최하위 Data Z 비트를 가산한다. 이 합의 최상위 32 비트는 제3 스테이지 출력 adder_st3_outp의 일부로서 공급된다. 유사하게, 가산기(363)는 40비트 폭이며, 가산기(355)의 출력과 부호 확장된 최상위 Data Z 비트를 가산한다. 이 합 중 최상위 32비트는 제3 스테이지 출력 adder_st3_outp의 일부로서 공급된다. 가산기(367 및 368)로의 접속은 훨씬 더 복잡하다. 가산기(367)로의 제1 입력은 제2 스테이지의 가산기(353)의 출력 또는 멀티플렉서(364)에 의해 선택된 재순환된 출력이다. 멀티플렉서(371)는 재순환 양에 따라 8개의 파이프라인 레지스터 중에서 선택을 한다. 가산기(367)로의 제2 입력은 멀티플렉서(365)에 의해 선택된다. 이것은 부호 확장 유닛(353)에 의해 보호 확장된 최하위 Data Z 입력, 가산기(368)의 직접 출력, 가산기(355)의 출력, 또는 고정된 라운딩 양 rnd_add이다. 고정된 라운딩 양 rnd_add의 가산은 가산기가 다른 입력에서 그 양을 라운딩하게 한다. 가산기(367)의 출력은 입력을 가변 우측 시프터(375)에 공급한다. 가변 우측 시프터(375)는 합을 0 내지 15비트 중 선택된 양만큼 우측 시프트시킨다. 그 출력 중 최상위 32비트는 제3 스테이지 출력의 일부를 형성한다. 가산기(368)로의 제1 입력은 가산기(355)의 출력이다. 가산기(368)로의 제2 입력은 멀티플렉서(366)에 의해 선택된다. 멀티플렉서(366)는 가산기(353)의 출력, 부호 확장 유닛(358)에 의해 부호 확장된 최상위 Data Z 입력, 재순환 입력 또는 고정된 라운딩 양 rnd_add중에서 하나를 선택한다. 멀티플렉서(373)는 가산기(368)의 출력에서 8개의 파이프라인 레지스터 중 재순환 양을 선택한다. 가산기(368)의 출력은 입력을 가변 우측 시프터(377)로 공급한다. 가변 우측 시프터(377)는 합을 0 내지 15비트 중 선택된 양만큼 우측 시프트시킨다. 그 출력의 최상위 32비트는 제3 스테이지 출력 adder_st3_outp의 다른 부분을 형성한다.
도 9는 도 6에 도시된 출력 포맷터의 구조를 도시한다.
도 10 내지 도 13은 다수의 승산 누산 보조 처리기(160)가 구성될 수 있는 수 개의 방식을 도시한다. 이러한 예시들에서의 데이터 흐름은 데이터 경로(170) 내의 멀티플렉서의 적절한 선택에 의해 성취된다. 아래의 설명은, 원하는 데이터 흐름의 성취와 관련있을 때의 대응하는 멀티플렉서 선택을 설명한 것이다.
도 10은 실수 유한 임펄스 필터(real finite impulse filter)(FIR) 내의 데이터 흐름을 도시한 것이다. 데이터(D0 내지 D7) 및 계수(C0 내지 C7)는 각각의 승산기(311, 312, 321, 322, 331, 332, 341 및 342)에 공급된다. 이러한 경우에서, 이중 승산 가산기 유닛(310) 내의 멀티플렉서(317)에 대응하는 멀티플렉서들은 각각의 승산기(312, 322, 332 및 342)의 곱을 선택한다. 곱의 쌍들은 가산기(319, 329, 339 및 349) 내에서 합산된다. 이러한 합의 쌍들은 가산기(353 및 355) 내에서 더 합산된다. 가산기(353 및 355)에 의해 형성된 합은 가산기(368) 내에서 가산된다. 이러한 경우에서, 멀티플렉서(366)는 가산기(368)로의 제2 입력에 대해 가산기(353)에 의해 생성된 합을 선택한다. 가산기(367)는 누산 연산을 수행한다. 멀티플렉서(364)는 재순환을 위한 파이프라인 레지스터를 선택하는 멀티플렉서(371)의 출력을 가산기(363)로의 제1 입력으로서 선택한다. 멀티플렉서(365)는 가산기(368)의 출력 및 가산기(363)로의 제2 입력을 선택한다. 가산기(367)는 필터 출력을 생성한다. 이러한 데이터 흐름은 미리 합산된 곱을 이용하여 형성된 8개의 곱의 합을 생성한다. 이러한 연산은 일반적으로 승산 누산으로 공지되어 있으며, 필터 기능에서 폭넓게 사용된다. 도 7에 도시된 것과 같은 데이터 경로(170)의 구조는 8 곱의 누산된 합 계산을 허용한다. 이것은, 디지탈 신호 처리기 코어(110)에 의해 제공되는 전형적인 단일 곱 누산에 비해 이 데이터 흐름 내의 처리 능력을 현저히 향상시킨다.
도 11은 복소수 FIR 필터(complex FIR filter)의 데이터 흐름을 도시한다. 이 데이터 흐름은 도 7에 도시된 실수 FIR 필터와 유사하다. 데이터 및 계수는 각각의 승산기(311, 312, 321, 322, 331, 332, 341 및 342)에 공급된다. 이중 승산 가산기 유닛(310) 내의 멀티플렉서(317)에 대응하는 멀티플렉서들은 각각의 승산기(312, 322, 332 및 342)의 곱을 선택한다. 곱의 쌍들은 가산기(319, 329, 339 및 349)에서 합산된다. 이러한 합들의 쌍은 가산기(353 및 355)에서 다시 합산된다. 실수 및 허수 부분은 가산기(367 및 368)에 의해 개별적으로 관리된다. 멀티플렉서(365)는 가산기(367)로의 제2 입력을 위해 가산기(353)의 합을 선택한다. 멀티플렉서(364)는 재순환을 위해 파이프라인 레지스터들을 선택하는 멀티플렉서(371)의 출력을 가산기(363)로의 제1 입력으로서 선택한다. 가산기(368)는 가산기(355)의 합을 제1 입력으로서 수신한다. 멀티플렉서(366)는 가산기(368)로의 제2 입력을 위해 멀티플렉서(373)의 재순환 출력을 선택한다. 따라서 가산기(367 및 368)의 쌍은 승산 가산 연산의 실수 및 허수 부분을 생성한다.
도 12는 계수 갱신 동작 내에서의 데이터 흐름을 도시한다. 에러 항(E0 내지 E3)은, 승산기(311, 321, 331 및 341) 내에서 대응 가중항(W0 내지 W3)에 의해 승산된다. C0 내지 C3로 갱신될 현재 계수는 멀티플렉서(317, 327, 337 및 347)에 의해 선택된 가산기(319, 329, 339 및 349)에 의해 직접적으로 입력된다. 각각의 곱은 가산기(319, 329, 339 및 349) 내의 현재값에 가산된다. 이러한 경우에서, 출력은 가산기 스테이지 1 출력 adder_st1_outp을 지나 가산기(319, 329, 339 및 349)에 의해 생성된다.
도 13은 고속 푸리에 변환(FFT) 연산 내에서의 데이터 흐름을 도시한다. FFT 동작은 16비트×16비트 승산 연산에서 출발한다. 이것은 다음과 같이 성취된다. 각각의 이중 승산 가산기(310, 320, 330 및 340)는 쌍을 이룬 승산기(311과 312, 321과 322, 331과 332, 341과 342) 각각의 입력에서 각각의 16비트 양(A0 내지 A3)을 수신한다. 승산기(311, 321, 331 및 341)는 32비트 양(B0H 내지 B3H) 중 최상위 16비트를 수신한다. 승산기(312, 322, 332 및 342)는 32비트 양(B0L 내지 B3L) 중 최하위 16비트를 수신한다. 시프터(314, 315, 324, 325, 334, 335, 344, 345)는 곱을 정렬하는 데 사용된다. 멀티플렉서(316, 326, 336 및 346)는 각각의 가산기(319, 329, 339 및 349)로의 제1 입력에 대해 각각의 8비트 우측 시프터(314, 324, 334 및 344)를 선택한다. 멀티플렉서(317, 327, 337 및 347)는 각각의 가산기(319, 329, 339 및 349)에 대한 제2 입력으로서 각각의 8비트 우측 시프터(315, 325, 335 및 345)로부터의 우측 시프트된 양을 선택한다. 이렇게 반대 방향으로 향하는 두 개의 8비트 시프트는 16비트×32비트 승산에 대한 부분적인 곱들을 정렬하기 위한 효율적인 16비트 시프트를 제공한다. 이러한 합들의 쌍은 가산기(353 및 355) 내에서 합산된다. 가산기(361)는 Data Z0 입력을 가산기(353)로부터의 출력에 가산한다. 멀티플렉서(364)는 가산기(367)로의 제1 입력으로서 가산기(353)의 합을 선택한다. 멀티플렉서(365)는 Data Z0 입력을 가산기(367)로의 제2 입력으로서 선택한다. 가산기(368)는 가산기(355)의 합을 제1 입력으로서 수신한다. 멀티플렉서(366)는 Data Z1 입력을 가산기(366)에의 제2 입력으로서 선택한다. 가산기(363)는 가산기(355)의 합과 Data Z1 입력을 합산한다. FFT 동작의 출력은 가산기(361, 367, 368 및 363)의 합 출력에 의해 제공된다.
아래의 목록은 도 3 내지 도 6에 도시된 다수의 승산 누산 유닛(140)의 데이터 결로(170)에 의해 수행될 수 있는 몇몇 명령의 부분적인 목록이다.
vector_add_16b(len, pdata, pcoeff, pout)
vector_add_32b(len, pdata, pcoeff, pout)
vector_mpy_16b(len, pdata, pcoeff, pout)
vector_mpy_1632b(len, pdata, pcoeff, pout)
vector_mpy_32b(len, pdata, pcoeff, pout)
scalar_vector_add_16b(len, pdata, pcoeff, pout)
scalar_vector_add_32b(len, pdata, pcoeff, pout)
scalar_vector_mpy_16b(len, pdata, pcoeff, pout)
scalar_vector_mpy_1632b(len, pdata, pcoeff, pout)
scalar_vector_mpy_32b(len, pdata, pcoeff, pout)
이러한 동작에 대해, 동작 명칭은 데이터 크기를 지시한다. "len" 파라미터 필드는 함수의 길이를 나타낸다. "pdata" 파라미터 필드는 입력 데이터를 포함하는 시작 메모리 어드레스로의 포인터이다. "pcoeff" 파라미터 필드는 필터를 위한 계수를 포함하는 시작 메모리 어드레스로의 포인터이다. "pout" 파라미터 필드는 출력을 수신하기 위한 시작 메모리 어드레스로의 포인터이다. 전술한 바와 같이, 이러한 포인터는 데이터 메모리(145) 및 계수 메모리(147) 또는 일체형 메모리(149) 내의 각각의 위치를 포인팅하는 것이 바람직하다.
FFT_real(fft_size, pdata, pcoeff, pout)
FFT_complex(fft_size, pdata, pcoeff, pout)
도 10과 관련하여 설명한 바와 같이, 고속 푸리에 변환 연산은 32비트 데이터 및 16비트 계수를 모두 포함하는 것이 바람직하다. fft_size 파리미터 필드는 함수의 크기를 한정한다. 나열된 다른 파라미터 필드들은 상기에 설명한 것과 같다.
FIR_real(us, ds, len, blocksize, pdata, pcoeff, pout)
FIR_complex_real(us, ds, len, blocksize, pdata, pcoeff, pout)
FIR_complex_real_sum(us, ds, len, blocksize, pdata, pcoeff, pout)
FIR_complex(us, ds, len, blocksize, pdata, pcoeff, pout)
유한 임펄스 응답 필터 연산은 데이터 및 계수의 형태에서 상이하다. FIR_real 연산은 실수 데이터 및 실수 계수를 채용한다. FIR_complex_real 연산은 복소수 데이터 및 실수 계수를 사용한다. FIR_complex_real_sum 연산은 복소수 데이터 및 실수 계수를 채용하여 복소수 및 실수 부분을 개별적으로 합산한다. FIR_complex 연산은 복소수 데이터 및 복소수 계수를 채용한다. us 파라미터 필드는 업샘플링 속도를 지시한다. ds 파라미터 필드는 다운 샘플링 속도를 지시한다. 블록크기 파라미터 필드는 채용되는 연산 블록의 크기를 지시한다. 다른 파라미터 필드는 전술한 바와 같다.
이러한 모든 명령들의 파라미터는 직접값(immediate value)일 수 있으며, 또는 데이터, 계수 및 출력 위치를 위한, 보조 처리기 메모리로의 16비트 어드레스 포인터일 수 있다. 이러한 선택은 최장의 유한 임펄스 명령이 약 5개의 16비트 명령 워드를 요구할 것임을 의미한다. 이것은 적은 양의 버스 트래픽이다. 대안적으로, 파라미터 필드는 각각의 파라미터에 대해 제한된 레지스터 집합으로부터의 레지스터를 지시할 수 있다. 각각의 파라미터에 대해 8개 레지스터의 집합이 존재할 수 있으며, 이들은 명령 워드 내에서 각각 3비트만을 필요로 한다. 이것은, 한정된 수의 특정 필터 설정만이 요구되기 때문에 가능한 것이다.
본 발명에 따르면, 하드웨어 보조 처리기와 디지탈 신호 처리기 간에 효율적인 접속을 제공할 수 있으며, 새로운 기능에 따라 프로그램 및 인터페이스를 재사용하여 설계 싸이클을 단축시킬 수 있다.

Claims (13)

  1. 하나의 집적 회로 상에 배치된 데이터 처리 시스템에 있어서,
    데이터 버스;
    어드레스 버스;
    상기 데이터 버스 및 상기 어드레스 버스에 접속되고, 보조 처리기 명령을 생성하도록 동작할 수 있는 디지탈 신호 처리기 코어;
    상기 데이터 버스, 상기 어드레스 버스 및 상기 디지탈 신호 처리기 코어에 접속되는 보조 처리기 -상기 보조 처리기는 상기 디지탈 신호 처리기 코어의 어드레스 공간 내에 국부 메모리를 가지며, 상기 디지탈 신호 처리기 코어에 의해 생성되는 명령에 응답하여, 상기 디지탈 신호 처리기 코어와 함께 상기 국부 메모리 내에 저장된 데이터에 대해 소정의 데이터 처리 동작을 수행하며, 소정의 메모리 어드레스에 기입된 데이터에 응답하는 입력 및 상기 보조 처리기의 동작을 제어하는 출력을 가지는 명령 선입선출(first in first out) 메모리를 포함함- ; 및
    상기 디지탈 신호 처리기 코어의 제어 하에, 상기 보조 처리기의 상기 국부 메모리로부터의 데이터 전송 및 상기 국부 메모리로의 데이터 전송을 포함하여, 메모리 내의 선정된 어드레스들 간에 데이터를 자율적으로 전송할 수 있는 직접 메모리 액세스 회로
    를 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 보조 처리기는 수신 데이터 동기화 명령에 응답하여, 상기 직접 메모리 액세스 회로가 상기 국부 메모리로의 데이터의 소정의 메모리 전송 완결을 시그날링할 때까지 처리 명령들을 중지시키는 데이터 처리 시스템.
  3. 제1항에 있어서,
    상기 보조 처리기는 전송 데이터 동기화 명령에 응답하여, 상기 직접 메모리 액세스 회로를 시그날링하여, 상기 직접 메모리 액세스 회로가 상기 국부 메모리로부터의 데이터의 소정의 메모리 전송을 트리거링하도록 하는 데이터 처리 시스템.
  4. 삭제
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 보조 처리기는 상기 명령들에 응답하여 자신을 그에 대응하도록 구성함으로써, 일련의 관련된 데이터 처리 동작을 수행하도록 동작할 수 있는 데이터 처리 시스템.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 보조 처리기는 인터럽트 명령에 응답하여, 인터럽트 신호를 상기 디지탈 신호 처리기 코어에 전송하는 데이터 처리 시스템.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서,
    각각의 명령은 상기 국부 메모리 내의 데이터 입력 위치의 표시를 포함하고,
    상기 보조 처리기는 상기 명령들에 응답하여, 상기 표시된 데이터 입력 위치에서 시작하는 상기 국부 메모리로부터의 데이터를 재호출(recall)하는 데이터 처리 시스템.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    각각의 명령은 상기 국부 메모리 내의 데이터 입력 위치의 표시를 포함하고,
    상기 보조 처리기는 상기 명령들에 응답하여, 상기 명령에 대응하는 데이터 처리 동작으로부터의 결과 데이터를 상기 표시된 데이터 입력 위치에서 시작하여 상기 국부 메모리 내에 저장하는 데이터 처리 시스템.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
KR1019990003638A 1998-02-04 1999-02-03 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기 KR100572945B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7366898P 1998-02-04 1998-02-04
US60/073,668 1998-02-04

Publications (2)

Publication Number Publication Date
KR19990072400A KR19990072400A (ko) 1999-09-27
KR100572945B1 true KR100572945B1 (ko) 2006-04-24

Family

ID=22115061

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990003638A KR100572945B1 (ko) 1998-02-04 1999-02-03 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기

Country Status (5)

Country Link
US (1) US6256724B1 (ko)
EP (1) EP0945788B1 (ko)
JP (1) JPH11272631A (ko)
KR (1) KR100572945B1 (ko)
DE (1) DE69919059T2 (ko)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US6339819B1 (en) * 1997-12-17 2002-01-15 Src Computers, Inc. Multiprocessor with each processor element accessing operands in loaded input buffer and forwarding results to FIFO output buffer
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US6789183B1 (en) * 1999-09-28 2004-09-07 Texas Instruments Incorporated Apparatus and method for activation of a digital signal processor in an idle mode for interprocessor transfer of signal groups in a digital signal processing unit
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
WO2001086432A2 (en) * 2000-05-11 2001-11-15 Netoctave, Inc. Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
JP2004506261A (ja) 2000-06-13 2004-02-26 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト パイプラインctプロトコルおよびct通信
US7075565B1 (en) * 2000-06-14 2006-07-11 Landrex Technologies Co., Ltd. Optical inspection system
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7152151B2 (en) * 2002-07-18 2006-12-19 Ge Fanuc Embedded Systems, Inc. Signal processing resource for selective series processing of data in transit on communications paths in multi-processor arrangements
US7657877B2 (en) * 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
DE10139610A1 (de) 2001-08-11 2003-03-06 Daimler Chrysler Ag Universelle Rechnerarchitektur
US7996827B2 (en) * 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US20030041300A1 (en) * 2001-08-23 2003-02-27 Koninklijke Philips Electronics N.V. Universal device for processing Reed-Solomon forward error-correction encoded messages
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
US7234144B2 (en) 2002-01-04 2007-06-19 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
EP1514193B1 (de) 2002-02-18 2008-07-23 PACT XPP Technologies AG Bussysteme und rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
GB0215033D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US7802108B1 (en) * 2002-07-18 2010-09-21 Nvidia Corporation Secure storage of program code for an embedded system
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7394284B2 (en) 2002-09-06 2008-07-01 Pact Xpp Technologies Ag Reconfigurable sequencer structure
AU2003287319B2 (en) * 2002-10-31 2010-06-24 Lockheed Martin Corporation Pipeline coprocessor
US7386704B2 (en) 2002-10-31 2008-06-10 Lockheed Martin Corporation Pipeline accelerator including pipeline circuits in communication via a bus, and related system and method
US8667252B2 (en) * 2002-11-21 2014-03-04 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
JP2004355049A (ja) * 2003-05-26 2004-12-16 Sony Corp プロセッサシステム
JP4700611B2 (ja) 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US7130967B2 (en) * 2003-12-10 2006-10-31 International Business Machines Corporation Method and system for supplier-based memory speculation in a memory subsystem of a data processing system
US8892821B2 (en) * 2003-12-10 2014-11-18 International Business Machines Corporation Method and system for thread-based memory speculation in a memory subsystem of a data processing system
JP2005202767A (ja) * 2004-01-16 2005-07-28 Toshiba Corp プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路
US7619541B2 (en) 2004-10-01 2009-11-17 Lockheed Martin Corporation Remote sensor processing system and method
US7920584B2 (en) 2005-05-04 2011-04-05 Arm Limited Data processing system
WO2006117504A1 (en) 2005-05-04 2006-11-09 Arm Limited Use of a data engine within a data processing apparatus
US7630388B2 (en) 2005-05-04 2009-12-08 Arm Limited Software defined FIFO memory for storing a set of data from a stream of source data
US7281118B2 (en) * 2005-08-05 2007-10-09 International Business Machines Corporation Sending thread message generated using DCR command pointed message control block storing message and response memory address in multiprocessor
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
JP4493626B2 (ja) * 2006-05-25 2010-06-30 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
KR20090039761A (ko) * 2006-07-14 2009-04-22 인터디지탈 테크날러지 코포레이션 심볼 레이트 하드웨어 가속기
JP4967555B2 (ja) * 2006-09-13 2012-07-04 富士通株式会社 マルチプロセッサシステム
US7949801B2 (en) * 2007-01-31 2011-05-24 Pitney Bowes Inc. Main processor initiating command timing signal via DMA to coprocessor in order to synchronize execution of instructions
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
DE102009037158B4 (de) * 2009-08-04 2016-01-21 Lenze Automation Gmbh Steuervorrichtung zur Steuerung eines elektrischen Antriebs
KR101867336B1 (ko) * 2011-07-11 2018-06-15 삼성전자주식회사 다중 프로세서를 지원하는 인터럽트 발생을 위한 장치 및 방법
JP6115564B2 (ja) * 2012-03-13 2017-04-19 日本電気株式会社 データ処理システム、半導体集積回路およびその制御方法
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
DE102013212842A1 (de) * 2013-07-02 2015-01-08 Robert Bosch Gmbh Verfahren zum Betreiben eines Steuergeräts sowie Steuergerät mit einer Modellberechnungseinheit
US9785444B2 (en) 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
JP5949977B1 (ja) * 2015-02-19 2016-07-13 日本電気株式会社 情報処理装置、情報処理方法、メインプロセッサコア、プログラム、情報処理方法、サブプロセッサコア
CN105824706B (zh) * 2015-12-31 2020-11-06 华为技术有限公司 一种配置加速器的方法和装置
CN108446096B (zh) * 2018-03-21 2021-01-29 杭州中天微系统有限公司 数据计算系统
US11593001B1 (en) 2021-08-02 2023-02-28 Nvidia Corporation Using per memory bank load caches for reducing power use in a system on a chip
US11836527B2 (en) 2021-08-02 2023-12-05 Nvidia Corporation Accelerating table lookups using a decoupled lookup table accelerator in a system on a chip
US11954496B2 (en) 2021-08-02 2024-04-09 Nvidia Corporation Reduced memory write requirements in a system on a chip using automatic store predication
US11593290B1 (en) 2021-08-02 2023-02-28 Nvidia Corporation Using a hardware sequencer in a direct memory access system of a system on a chip
US12099439B2 (en) 2021-08-02 2024-09-24 Nvidia Corporation Performing load and store operations of 2D arrays in a single cycle in a system on a chip
US11704067B2 (en) 2021-08-02 2023-07-18 Nvidia Corporation Performing multiple point table lookups in a single cycle in a system on chip
US11636063B2 (en) 2021-08-02 2023-04-25 Nvidia Corporation Hardware accelerated anomaly detection using a min/max collector in a system on a chip
US11573795B1 (en) 2021-08-02 2023-02-07 Nvidia Corporation Using a vector processor to configure a direct memory access system for feature tracking operations in a system on a chip
US11573921B1 (en) 2021-08-02 2023-02-07 Nvidia Corporation Built-in self-test for a programmable vision accelerator of a system on a chip
US12118353B2 (en) 2021-08-02 2024-10-15 Nvidia Corporation Performing load and permute with a single instruction in a system on a chip

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930022207A (ko) * 1992-04-17 1993-11-23 이헌조 마스터/슬레이브 메모리 공유장치와 공유 제어방법
US5420989A (en) * 1991-06-12 1995-05-30 Cyrix Corporation Coprocessor interface supporting I/O or memory mapped communications
EP0758123A2 (en) * 1994-02-16 1997-02-12 Qualcomm Incorporated Block normalization processor
KR970071310A (ko) * 1996-04-25 1997-11-07 김광호 로칼 버스 제어 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01226066A (ja) * 1988-03-04 1989-09-08 Hitachi Ltd ディジタル信号処理プロセッサ
KR940011504B1 (ko) * 1991-12-07 1994-12-19 삼성전자주식회사 2채널 음장재생 장치 및 방법
TW243568B (en) * 1993-11-16 1995-03-21 At & T Corp Digital signal processor with an embedded viterbi co-processor
US5706013A (en) * 1996-08-09 1998-01-06 The United States Of America As Represented By The Secretary Of The Air Force Nonhomogeneity detection method and apparatus for improved adaptive signal processing
US5805536A (en) * 1996-11-07 1998-09-08 Eastman Kodak Company Method for bandwidth reduction in writeable optical data storage apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420989A (en) * 1991-06-12 1995-05-30 Cyrix Corporation Coprocessor interface supporting I/O or memory mapped communications
KR930022207A (ko) * 1992-04-17 1993-11-23 이헌조 마스터/슬레이브 메모리 공유장치와 공유 제어방법
EP0758123A2 (en) * 1994-02-16 1997-02-12 Qualcomm Incorporated Block normalization processor
KR970071310A (ko) * 1996-04-25 1997-11-07 김광호 로칼 버스 제어 장치

Also Published As

Publication number Publication date
KR19990072400A (ko) 1999-09-27
DE69919059D1 (de) 2004-09-09
JPH11272631A (ja) 1999-10-08
EP0945788A3 (en) 2002-06-26
DE69919059T2 (de) 2005-01-27
US6256724B1 (en) 2001-07-03
EP0945788A2 (en) 1999-09-29
EP0945788B1 (en) 2004-08-04

Similar Documents

Publication Publication Date Title
KR100572945B1 (ko) 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기
US6298366B1 (en) Reconfigurable multiply-accumulate hardware co-processor unit
US10409765B2 (en) Method for providing subapplications to an array of ALUs
US5045993A (en) Digital signal processor
US6029242A (en) Data processing system using a shared register bank and a plurality of processors
US5206940A (en) Address control and generating system for digital signal-processor
US6205459B1 (en) Digital signal processor and digital signal processing system incorporating same
CA1204516A (en) Data flow type information processing stystem
US5680641A (en) Multiple register bank system for concurrent I/O operation in a CPU datapath
US6526430B1 (en) Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US5247627A (en) Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
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
EP0061096B1 (en) Data processing system for parallel processing
US6754809B1 (en) Data processing apparatus with indirect register file access
GB2395811A (en) Reconfigurable integrated circuit
US20060015701A1 (en) Arithmetic node including general digital signal processing functions for an adaptive computing machine
EP0163740A1 (en) Pipeline control system
US6327648B1 (en) Multiprocessor system for digital signal processing
EP0935189B1 (en) Reconfigurable co-processor with multiple multiply-accumulate units
WO1995032464A1 (en) A parallel processing circuit and a digital signal processor including same
US5822609A (en) Processing circuit for performing a convolution computation
JP4123884B2 (ja) 信号処理回路
WO1998055932A2 (en) Processor interfacing to memory mapped computing engine
JP2545798B2 (ja) デイジタル信号処理回路
Masera et al. A microprogrammable parallel architecture for DSP

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: 20120329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20130329

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 13

EXPY Expiration of term