KR20060046338A - 신호처리장치 - Google Patents

신호처리장치 Download PDF

Info

Publication number
KR20060046338A
KR20060046338A KR1020050046374A KR20050046374A KR20060046338A KR 20060046338 A KR20060046338 A KR 20060046338A KR 1020050046374 A KR1020050046374 A KR 1020050046374A KR 20050046374 A KR20050046374 A KR 20050046374A KR 20060046338 A KR20060046338 A KR 20060046338A
Authority
KR
South Korea
Prior art keywords
signal processing
graph
plug
input
instruction
Prior art date
Application number
KR1020050046374A
Other languages
English (en)
Other versions
KR101126255B1 (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 KR20060046338A publication Critical patent/KR20060046338A/ko
Application granted granted Critical
Publication of KR101126255B1 publication Critical patent/KR101126255B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)

Abstract

신호처리지연을 방지하여, 효율이 좋은 신호처리를 가능하게 하는 신호처리장치를 제공한다. 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치이다. 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개를 접속하여 회로를 구성하고, 그 회로구성정보를, 회로구성정보 격납관리부에 유지하여 관리한다. 신호처리순서결정수단은, 초기경로탐색과 루프탐색을 실행하여, 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 신호처리순서를, 루프를 구성하는 신호모듈군(群)은, 신호처리순서로서는, 국소화(局所化)하여, 일괄적으로 되도록 결정한다. 신호처리실행수단은, 결정된 신호처리순서대로, 상기 신호처리모듈의 각각을 순차적으로 실행시켜 신호처리를 실행한다.

Description

신호처리장치{Signal processing apparatus}
도 1은, 이 발명에 의한 신호처리장치의 실시형태의 주요부의 기능 블록도이다.
도 2는, 이 발명에 의한 신호처리장치의 실시형태를 설명하기 위한 도면이다.
도 3은, 이 발명에 의한 신호처리장치의 실시형태를 설명하기 위한 도면이다.
도 4는, 이 발명에 의한 신호처리장치의 실시형태를 설명하기 위한 도면이다.
도 5는, 이 발명에 의한 신호처리장치의 실시형태를 설명하기 위한 도면이다.
도 6은, 이 발명에 의한 신호처리장치의 실시형태의 플러그인의 구성을 설명하기 위한 도면이다.
도 7은, 이 발명에 의한 신호처리장치의 실시형태의 그래프의 구성을 설명하기 위한 도면이다.
도 8은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성의 일례를 설명하기 위한 도면이다.
도 9는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성 순서의 예를 설명하기 위한 도면이다.
도 10은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성 순서의 예를 설명하기 위한 도면이다.
도 11은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성 순서의 예를 설명하기 위한 도면이다.
도 12는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성 순서의 예를 설명하기 위한 도면이다.
도 13은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알고리즘을 설명하기 위한 플로차트이다.
도 14는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알고리즘의 일부를 구성하는 초기경로탐색 알고리즘을 설명하기 위한 플로차트이다.
도 15는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알고리즘의 일부를 구성하는 초기경로탐색 알고리즘을 설명하기 위한 도면이다.
도 16은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알고리즘의 일부를 구성하는 초기경로탐색 알고리즘의 탐색결과의 예를 나타내는 도면이다.
도 17은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알고리즘의 일부를 구성하는 루프 서치 알고리즘을 설명하기 위한 플로차트이다.
도 18은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 경로탐색 알 고리즘의 일부를 구성하는 루프 서치 알고리즘을 설명하기 위한 도면이다.
도 19는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 AV동기 처리를 설명하기 위한 플로차트이다.
도 20은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 회로구성의 동적 변경처리를 설명하기 위한 플로차트이다.
도 21은, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 파라미터의 설정방법의 예를 나타내는 도면이다.
도 22는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 파라미터의 설정방법의 다른 예를 나타내는 도면이다.
도 23은, 도 22의 파라미터의 설정방법의 다른 예를 설명하기 위한 플로차트이다.
도 24는, 도 22의 파라미터의 설정방법의 다른 예를 설명하기 위한 플로차트이다.
도 25는, 이 발명에 의한 신호처리장치의 실시형태에 있어서의 리얼타임 분산처리를 설명하기 위한 도면이다.
*부호의 설명
1. 지시입력접수기능부, 2. 플러그인 생성삭제기능부
3. 플러그인간 결선처리기능부, 4. 회로구성정보 격납관리기능부
5. 경로탐색기능부, 6. 신호처리 순서관리기능부
7. 신호처리실행기능부, 8. 신호처리함수격납부
이 발명은, 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치에 관한 것이다.
근래 시판한 컴퓨터는 성능이 현저하게 향상되고, 종래에는 어려웠던 동영상이나 음악의 컴퓨터상에서의 재생이 가능하게 되었다. 특히, 동영상이나 음성의 신호처리를 실행하는 애플리케이션에 관해서는, 종래의 DSP(Digital Signal Processor) 등의 전용 신호처리 디바이스나 전용 하드웨어를 이용하지 않아도, 소프트웨어 처리로, 용이하게 리얼타임 신호처리가 가능하게 되었다.
이러한 신호처리 애플리케이션을 지지하는 기술로서, 각종의 신호처리 미들 웨어가 존재하고 있다. 예를 들면, Microsoft(등록상표)사제(社製)의 DirectShow(비특허 문헌 1 참조)나, The MathWorks(등록상표)사제의 MATLAB(비특허 문헌 2 참조), Cycling‘74사제의 Max/MSP(비특허 문헌 3 참조) 등이 있다.
신호처리 애플리케이션은, 이러한 미들 웨어를 이용함으로써, 고도의 기능을 비교적 용이하게 실현할 수 있다. 예를 들면, 음성에 대해 말하자면, 녹음ㆍ재생, 입출력, 믹싱, 특수 효과 등이, 신호처리 애플리케이션에 의해 실현되고 있다. 또한, 동영상에 대해 말하자면, 논리니아 편집 등 고도의 편집 기능을 가지는 신호처리 애플리케이션이 실현되고 있다.
또, 이런 종류의 미들 웨어로서 플러그인 구조를 가지는 것도 제안되고 있다 (특허 문헌 1(특개2001-109628 공보) 및 특허 문헌 2(특개평7-302195호 공보) 참조). 여기서, 플러그인이란, 기능을 모듈화한 것으로, 소프트웨어 애플리케이션이다. 또한 이 명세서에서는, 신호처리를 취급하므로, 플러그인, 신호처리모듈을 구성하는 소프트웨어 애플리케이션을 나타낸다.
이 플러그인을 이용함으로써, 사용자는, 필요한 때에 필요한 신호처리모듈을 애드 온(add-on) 하여 이용할 수 있다. 플러그인은, 단체로 사용되는 것이 많지만, 근래, 이러한 플러그인을 복수 편성하여, 복합적인 기능을 만들어 낼 수 있는 새로운 시스템이 몇 개인가 존재해 오고 있다. 이 복합 플러그인 시스템은, 새로운 부가가치를 낳는 시스템으로서 향후 주류가 되어갈 것으로 예상된다.
상기의 특허 문헌은 이하와 같다. 또, 비특허 문헌은, 다음에 나타내는 주소의 사이트에서 설명되고 있다.
[특허 문헌 1]특개2001-109628 공보
[특허 문헌 2]특개평7-302195호 공보
[비특허문헌1]http://msdn.microsoft.com/library/defalt.asp?url=/library/en-us/directx9_c/directX/htm/directshow.asp
[비특허 문헌 2]http://www.mathworks.com/
[비특허 문헌 3]http://www.cycling74.com/products/maxmsp.html
그렇지만, 현재 존재하고 있는 복합 플러그인 시스템에는, 이하와 같은 몇 개인가의 결점이 있다.
(a) 플러그인을 다단에 결선하면 처리지연(레이텐시)이 비례하여 증대한다.
(b) 플러그인간의 결선에 제한이 있고, 피드백 루프의 결선을 할 수 없다.
(c) 신호처리 동작중에 플러그인간의 결선상태를 변경할 수 없다.
(d) 처리 속도가 늦기 때문에 많은 기능을 리얼타임으로 실시하는 것이 어렵다.
(e) 음성과 화상의 동기나 파라미터의 변경에 있어서 샘플 정밀도에서의 제어를 할 수 없다.
(f) 1대의 컴퓨터상에서 닫힌 형태로밖에 신호를 처리할 수 없다.
지금까지, 상기 결점을 부분적으로 해결하는 미들 웨어는 몇 개인가 존재했지만, 모두의 결점을 동시에 해결할 수 있는 미들 웨어는 존재하지 않았다. 왜냐하면, 상반되는 문제(어느 하나의 문제를 해결하면 다른 문제에 악영향을 주는 문제)를 포함되고 있기 때문이다. 예를 들면, 상기(b)와 (d)를 동시에 해결하는 것은 매우 어렵다.
이러한 결점이 존재함으로써, 종래의 미들 웨어의 제품으로의 편입 이용에 있어서 치명적인 장벽이 되고 있는 케이스도 적지 않다.
이 발명은, 상기의 문제점에 감안하여, 상기 결점을 해결할 수 있는 신호처리장치를 제공하는 것을 목적으로 한다.
상기의 과제를 해결하기 위해서, 청구항 1의 발명은, 
복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치에 있어서, 
상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와,
사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리모듈의 입출력의 가상적인 접속상태를 설정하는 신호처리모듈간 접속수단과, 
상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와,
초기경로탐색과 루프탐색을 실행하여, 상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 결정하는 신호처리순서결정수단과,
 상기 신호처리순서결정수단에서 결정된 신호처리순서대로, 상기 신호처리모듈을 순차적으로 실행시켜 상기 신호처리를 실행하는 신호처리실행수단을 갖추고,
상기 신호처리순서결정수단에 있어서는, 
상기 초기경로탐색에 의해, 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 탐색하고,
상기 루프탐색에 의해, 상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈로 이루어지는 회로구성에 있어서, 폐(閉)루프를 구성하는 상기 신호처리모듈을 탐색하고, 
상기 루프탐색에 의해 상기 폐루프를 구성하는 상기 신호처리모듈이 검출되며, 동시에 상기 초기경로탐색에서, 상기 폐루프의 선두의 상기 신호처리모듈의 처리 순위와 최후미의 상기 신호처리모듈의 처리 순위와의 사이의 처리 순위에 상기 폐루프를 구성하지 않는 상기 신호처리모듈이 포함되어 있을 때는, 상기 폐루프를 구성하지 않는 상기 신호처리모듈의 처리 순위를, 상기 폐루프의 선두의 상기 신호처리모듈보다 앞의 처리순위가 되도록, 상기 초기경로탐색에 의해 정한 상기 신호처리순서를, 변경하는 것을 특징으로 하는 신호처리장치를 제공한다.
이 청구항 1의 발명에 의하면, 신호처리순서를 정하고, 복수의 신호처리모듈에 의한 소프트웨어 신호처리를 순차적으로 행하므로, 각 신호처리모듈에서는, 비동기 버퍼에 일단 격납하여 처리하는 등의 불필요한 처리지연을 방지할 수 있다.
또, 청구항 1의 발명에 의하면, 신호처리순서에 있어서는, 폐루프를 구성하는 신호처리모듈 혹은 신호처리모듈군과, 그 외의 신호모듈 혹은 신호처리모듈군은, 완전히 별도가 되도록 되어 있다. 즉, 폐루프를 구성하는 신호처리모듈은, 신호처리순서로서 일괄적으로 취급할 수 있다.
이 때문에, 폐루프를 구성하지 않는 신호처리모듈군에서는, 피드포워드(feed forward)형의 회로로서, 일괄처리 하여도 신호처리의 인과성을 충족시킬 수 있다. 예를 들면 패킷단위 등의 샘플군 단위에서, 함수 콜 및 계산처리를 할 수 있으므로, 전체적으로 신호처리의 속도가 향상된다.
청구항 2의 발명은, 
복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치에 있어서, 
상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와, 
사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리모듈의 입출력의 가상적인 접속상태를 설정하는 신호처리모듈간 접속수단과,
상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와, 
상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 결정하는 신호처리순서결정수단과,
상기 신호처리순서결정수단에서 결정된 신호처리 순서대로, 상기 신호처리모듈을 순차적으로 실행시켜 상기 신호처리를 실행하는 신호처리실행수단을 갖추며,
상기 신호처리실행수단에서 상기 신호처리를 실행중에, 사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및/또는 상기 사용자로부터의 상기 복수개의 신호처리모듈의 입출력의 접속지시에 의거하는 회로구성의 변경 요구가 있었을 때에, 상기 신호처리순서결정수단을 실행하여 새로운 신호처리순서를 탐색하고, 상기 신호처리실행수단은, 상기 새로운 신호처리순서대로 상기 신호처리를 실행하는 것을 특징으로 하는 신호처리장치를 제공한다.
상기 구성의 청구항 2의 발명에 있어서는, 사용자로부터 회로구성의 변경 요구가 있었을 때에, 신호처리순서결정수단을 실행하여 새로운 신호처리순서를 탐색하고, 신호처리실행수단은, 새로운 신호처리순서대로 상기 신호처리를 실행한다.
따라서, 청구항 2의 발명에 의하면, 신호처리 동작중이어도, 회로구성을 변경할 수 있고, 변경한 회로구성에 의해, 신호처리 동작을 계속할 수 있다.
이하, 이 발명에 의한 신호처리장치의 실시형태를, 도면을 참조하면서 설명한다.
이 발명에 의한 신호처리장치의 실시형태는, 범용 신호처리 미들 웨어이며, 이하, 이 미들 웨어를 SSP(Software Signal Processor)라고 부른다. 또한 이하의 실시형태의 설명에 있어서는, 신호처리로서 음성신호처리의 경우를 예로 든다.
SSP는, 도 2에 나타내는 바와 같이, 범용 OS(Operating System)와 애플리케이션 소프트웨어와의 사이에 위치하는 것으로, 애플리케이션은, SSP를 이용하는 것으로, 용이하게 고도의 신호처리기능을 실현할 수 있다. 또, SSP는 GUI(Graphical User Interface)를 가지는 것을 필요로 하지 않는 미들 웨어이므로, 표시장치를 가지지 않는 편입 기기용의 신호처리 엔진용으로서도 이용할 수 있다.
[실시형태의 신호처리장치의 개요]
이 발명에 의한 신호처리장치의 실시형태의 SSP는, 그래프 구조를 가지는 미들 웨어이며, 기본적으로는, 하나의 컴퓨터에 실현되지만, 다음에 설명하는 바와 같이, 네트워크를 통해서 접속된 복수대의 컴퓨터에 있어서, 실현될 수도 있다.
SSP로서의 실시형태의 신호처리장치는, 이 예에 있어서는, 소프트웨어로 구성되는 그래프 모듈(이하, 단지 그래프라고 한다)과 소프트웨어로 구성되는 플러그인 모듈(이하, 단지 플러그인이라고 한다)과의 2대 요소에 의해 구성되어 있다.
플러그인 모듈은, 신호처리의 단위요소, 예를 들면, 필터, 이퀼라이저, 게인 제어 등을 실시하는 신호처리모듈(소프트웨어)이다.
플러그인은, 이 예에서는, 복수의 입력포트 및 복수의 출력포트를 가지는 것이 가능하고, 입력포트로부터 입력된 음성신호에 대해서, 상기 플러그인 고유의 신호처리를 실시하고, 출력포트로부터 출력하는 기능을 가진다.
플러그인의 출력포트를 다른 플러그인의 입력포트에 접속(하드웨어적으로 결선접속되는 것이 아니라, 어느 플러그인의 출력신호가, 다른 플러그인에 입력되는 것을 의미하는 가상적인 접속상태가 되는 것. 이하, 단지 접속이라고 적는다) 함으로써, 복수개의 플러그인을 접속하여, 복합적인 신호처리기능을 실현하는 것이 가능하다. 여기서, 플러그인은, 입력포트와 출력포트의 조합에서만 접속할 수 있고, 입력포트끼리나 출력포트끼리를 접속할 수 없다.
그래프는, SSP의 시스템으로서의 역할을 담당되고 있는 부분이며, 복수의 플러그인을 포함하는 기능을 가진다. 그리고, 그래프는, 사용자로부터의 조작입력을 받고, 플러그인의 생성, 삭제, 포트간의 결선을 실시하고, 그 결과의 회로구성 정보를 유지한다. 따라서, 그래프 내부에는, 플러그인으로 이루어지는 임의의 회로를 구성할 수 있다.
그리고, 그래프는, 상기 그래프의 신호처리함수가 콜 되면, 스스로 수취했을 때 각 정보 첨부의 음성데이터를 내포하는 플러그인에 순서대로 전해 간다. 플러그인에 음성데이터나 부수 정보의 입출력을 실시하는 것도 그래프의 역할이다.
또, 그래프는, 플러그인의 성질을 가지고 있다. 이 때문에, 그래프는, 플러그인과 동일하게 입출력포트를 가지고, 다른 플러그인과 서로 접속할 수도 있다. 그리고, 그래프는 복수의 플러그인을 포함할 수 있기 때문에, 그래프를 작성함으로써, 복수의 플러그인으로 이루어지는 회로블록(그래프)을 하나의 플러그인으로서 취급할 수 있다. 이 경우의 플러그인으로서 다루어지는 그래프는, 복수의 회로를 정리하여 하나의 부품으로서 처리할 수 있는 기능을 가지게 된다.
[그래프의 예]
도 3에, 내부에 복수개의 플러그인을 포함하는 그래프의 일례를 나타낸다. 또한 실시형태의 신호처리장치에서는, 퍼스널 컴퓨터로 구성할 수 있고, 사용자의 입출력을 접수하여, 이 퍼스널 컴퓨터의 표시부에, 사용자 지시에 따라, 그래프나 플러그인, 그러한 접속상태를 그래픽 표시할 수 있도록 되어 있다.
이 도 3의 예에서는, 사용자는, 먼저, 최초로 기본이 되는 루트 그래프(200)를 만들고 나서, 이 그래프(200) 내에, 복수의 플러그인(201~204)으로 이루어지는 회로를 작성하도록 한다. 플러그인(201~204)의 각각은, 미리, 퍼스널 컴퓨터에 격납되어 있는 것을 선택하여 이용할 수 있다. 여기서 말하는 격납 상태란 오브 젝트 지향에 있어서의 클래스라고 하는 템플릿(template) 상태이며, 아직 실제의 오브젝트는 생성되어 있지 않은 상태를 나타낸다.
사용자는, 예를 들면, 플러그인(201~204)의 각각을, 퍼스널 컴퓨터의 격납부에 격납되어 있는 플러그인으로부터 선택하여, 그래프(200) 내에 동적으로 생성(설치) 한다. 여기서 처음으로 오브젝트 지향에 있어서의 오브젝트가 생성된다. 그리고, 사용자는, 플러그인(201~204)의 출력포트와 입력포트와의 결선, 또, 그래프(200)와 플러그인(201, 204)과의 결선 등의 지시를 하여, 도 3에 나타내는 회로를 구성한다.
그래프(200)는, 내부의 플러그인(201~204)의 회로구성정보를 유지한다. 그리고, 사용자가, 루트 그래프(200)의 신호처리함수를 1회 콜 하는 것만으로, 루트 그래프의 신호처리함수 내로부터, 순서대로, 내포하는 플러그인의 신호처리함수가 재귀적으로 콜 되며, 신호처리에 관한 계산처리가 순서대로 실시되어 간다. 이 재귀적인 신호처리함수 콜의 전파가, SSP 시스템 그 자체이다.
도 4는, 내부에 복수개의 플러그인을 포함하는 그래프의 다른 예를 나타낸다. 상술한 바와 같이, 그래프는, 플러그인이기도 하다. 따라서, 그래프는, 내부에 그래프 이외의 플러그인과, 그래프 자체(자그래프)를 포함할 수 있는 재귀적인 구조를 취할 수 있다. 또한, 다른 플러그인과 동일하게 입출력포트도 가지고 있다. 그래프의 내부는, 그래프 외부에서 보면 블랙 박스로 되어 있다. 그래프 내부에는, 복수의 플러그인으로 이루어지는 회로블록이 형성되어 있다.
도 4에 있어서, 그래프(400)가 모그래프이다. 이 모그래프(400)의 내부 에, 자그래프의 그래프(401)와 플러그인(405)을 유지하고 있다. 게다가, 자그래프(401)는 내부에 플러그인(402), 플러그인(403), 플러그인(404)을 유지하고 있다. 모그래프(400)로부터는, 자그래프(401) 내부의 플러그인(402), 플러그인(403), 플러그인(404)은 보이지 않고 , 자그래프(401)가 하나의 플러그인으로서 보인다.
사용자는, 우선, 최초로, 루트가 되는 루트 그래프(모그래프(400))를 하나 만든다. 사용자는, 이 루트 그래프(400)의 플러그인 생성삭제 함수를 호출함으로써, 루트 그래프 내부에 자그래프(401)나 플러그인(405)을 생성할 수 있다.
또한 사용자는, 자그래프(401)의 플러그인 생성삭제 함수를 호출함으로써, 동일하게, 플러그인(402), 플러그인(403), 플러그인(404)을 생성할 수 있다.
신호처리실행을 실시하기 위해서는, 사용자는, 우선, 이 루트 그래프(400)의 신호처리함수를 콜 한다. 그러면, 루트 그래프(400)의 신호처리함수 내로부터 순서대로 내포하는 플러그인로서의 자그래프(401), 플러그인(405)의 신호처리함수가 재귀적으로 콜 되며, 합산처리가 순서대로 실시되어 간다. 이 재귀적인 신호처리함수 콜의 차례를 결정하는 것도 그래프의 기능이다.
자그래프(401)에서는, 이 자그래프(401)의 신호처리함수가 최초로 콜 된다. 그리고, 상기 자그래프(401)의 신호처리함수 내로부터, 순서대로 내포하는 플러그인(402, 403, 404)의 신호처리함수가 재귀적으로 콜 되어 계산처리가 순차적으로 실시되어 간다.
SSP 시스템이란, 이상과 같은 그래프의 기능 그 자체이다. 플러그인의 생성삭제처리, 플러그인간의 결선처리, 플러그인간의 데이터의 수수처리, 플러그인에 대한 시각정보ㆍ음성정보와 영상정보와의 동기부여처리, 각 플러그인의 신호처리함수의 순차적인 호출과 그 호출순서의 결정 등, 시스템에 필요한 기능을 이 그래프라고 하는 플러그인 스스로가 처리하고 있다.
이하의 설명에 있어서, 시스템이라고 하는 말을 이용하는 경우에 있어서의 상기 「시스템」이라고 하는 말은, 그래프 그 자체 및 그래프가 가지는 기능을 나타낸다.
도 5는, 실장 예로서의 SSP 미들 웨어의 전체 구조를 나타내는 UML(UnifiedModeling Language) 클래스 도면이다. 오브젝트 지향으로 표현되고 있으며, 클래스와 인터페이스(API(Application Programming Interface))가 정의되어 있다.
플러그인 클래스(CPlugin)는, 플러그인 인 인터페이스(IPlugin)를 계승하고 있고, 플러그인 고유의 인터페이스를 실장하는 것이다. 플러그인 클래스는, 복수의 입력포트 클래스(CInputPort) 및 출력포트클래스(COutputPort)를 유지하고 있다.
또, 플러그인 클래스는, 그 기능에 따라 복수의 종류가 존재하고 있다. 예를 들면, 덧셈을 실시하는 플러그인 클래스는, 가산기-플러그인(AdderPlugin) 클래스이며, 곱셈을 실시하는 플러그인 클래스는, 멀티플레이어 플러그인(Multiplier Plugin) 클래스이다. 이러한 클래스는, 자작(自作) 플러그인(CMyPlugin) 클래스로서 분류된다. 자작 플러그인 클래스는, 플러그인 클래스를 계승하고 있다. 이 예의 미들 웨어 사용자는, 플러그인 템플릿을 사용함으로써, 용이하게 자작 플 러그인을 작성할 수 있다.
다음에, 그래프 클래스에 대해서 설명한다. 그래프 클래스(CGraph)는, 복수의 플러그인 클래스를 포함하는 것이다. 그래프 클래스도 플러그인 클래스와 동일하게, 플러그인 인터페이스(Plugin Interface(IPlugin))를 계승하고 있고, 그래프 클래스 자체도 플러그인 클래스의 하나이다.
그 때문에, 그래프 내부에 더욱 다른 그래프, 플러그인을 포함한다고 하는 재귀적인 계층구조를 구성할 수 있다. 이것은, 일반적인 오브젝트 지향 설계 수법인 「디자인패턴」의 콤퍼짓 패턴(Composite Pattern)으로 불리는 구조에 해당한다.
또한, 그래프는 플러그인의 성질도 겸비하고 있기 때문에, 다른 플러그인과 동일하게, 입출력포트를 가지고, 다른 플러그인과 서로 결선할 수 있다. 그래프 오브젝트를 작성함으로써, 복수의 플러그인 오브젝트로 이루어지는 회로블록을 하나의 부품 오브젝트로서 취급할 수 있다.
그래프 클래스, 플러그인 클래스 모두, 인터페이스(API)가 정의되어 있고, SSP 미들 웨어의 클라이언트가 되는 애플리케이션에서는, 이 API를 콜 함으로써, 이 오브젝트를 제어할 수 있다. 사용자가 SSP 시스템에 대해서 실시하는 조작이란, 이 2개의 오브젝트에 대한 조작을 말한다.  
[플러그인의 구성에 대해]
도 6은, 플러그인의 구성의 일례를 나타내는 도면이다. 위에서도 기술한 바와 같이, 플러그인은, 소프트웨어 신호처리모듈이므로, 이 도 6의 구성의 각부 는, 하드웨어로서 갖추는 것이 아니라, 소프트웨어의 기능으로서 갖추는 것이다.
도 6에 나타내는 바와 같이, 플러그인(600)은, 신호처리부(601)를 갖추는 동시에, 0개 이상의 입력포트(602)와 0개 이상의 출력포트(603)를 가지는 것이 가능하고, 이 입력포트(602) 및 출력포트(603)를 통하여, 다른 플러그인과 신호의 교환, 이 예에서는 음성데이터의 교환을 할 수 있다. 이 예에 대해서는, 1 포트 당 1 채널 분의 음성신호를 입출력한다.
플러그인(600)에 대해서 입력포트(602) 및 출력포트(603)의 추가ㆍ삭제를, 사용자가 지시함으로써, 플러그인(600)이 가지는 입력포트(602) 및 출력포트(603)의 수를 신호처리 중에서도 동적으로 변경할 수 있도록 구성되어 있다. 입력포트(602) 및 출력포트(603)에는, 추가한 차례에 의해 0~N(N는 임의의 자연수) 및 0~M(M는 임의의 자연수)의 식별번호가 부여되며, 사용자는, 이 식별번호에, 입력포트(602)의 1개 및 출력포트(603)의 1개를 지정할 수 있다.
또, 플러그인(600)은, 내부에 0개 이상의 파라미터 유지부(파라미터 버퍼) (604)를 갖추며, 상기 파라미터 유지부(604)에 0개 이상의 파라미터를 가지는 것이 가능이다. 여기서, 파라미터란, 신호처리에 있어서의 효과의 양 등을 설정하는 가변치를 말하며, 사용자에 의해 입력 설정된다. 예를 들면, 플러그인(600)이 앰프의 경우를 예로 들면, 증폭 게인 값 등이 그것에 상당한다. 플러그인(600)을 사용하는 사용자는, 플러그인(600)의 파라미터 값을 변경함으로써, 신호처리의 효과를 바꿀 수 있다.
이 예에서는, 파라미터에는, 0~K(K는 임의의 자연수)의 식별번호가 할당되어 있다. 사용자는, 임의의 파라미터의 식별번호를 지정함으로써, 임의의 타이밍에서 파라미터 버퍼의 내용을 변경할 수 있다. 플러그인(600)의 기구로서, 사용자로부터 주어진 파라미터는, 일단, 플러그인(600) 내부의 파라미터 버퍼(604)에 유지된다. 그리고, 시스템(그래프)으로부터 주어지는 샘플 데이터에 동기한 시각정보에 의거하여 파라미터가 독출되어, 신호처리부(601)에 보내져서, 그 신호처리에 이용된다.
또, 플러그인(600)에는, 시각정보의 레지스터부(605)를 갖추며 이 레지스터부(605)에는, SSP 시스템(그래프를 말한다)으로부터, 항상, 시각정보가 입력되고 있다. 이 시각정보란, SSP 시스템을 개시한 시점(그래프의 신호처리함수를 개시한 시점)을 기점으로 하는 음성입출력데이터 샘플의 누계 카운트 수이다. 이 누계 카운트 수가 SSP 시스템에서 가장 기본이 되는 시각정보이다.
이 실시형태의 SSP 시스템에서는, 시각정보와 음성입출력데이터는 완전하게 동기하고 있다. 즉, SSP 시스템은, 플러그인(600)에 대해서 음성데이터와 동시에 시각정보를 부여한다. 따라서, 시각정보는, 플러그인(600)에 입력되는 음성데이터의 데이터샘플의 타임스탬프 역할을 하고 있다. 이 때문에, 플러그인(600) 자체는, 지금부터 신호처리의 대상이 되는 입력 데이터가, 절대시각에서 몇 샘플째일까 라고 하는 상세한 시각정보를 알 수 있다. SSP 시스템 내에 존재하는 모든 플러그인은, 이 절대시각을 참조하여 동기하고 있기 때문에, SSP 시스템 내의 회로 전체에서, 샘플 정밀도의 동기 신호처리를 실현할 수 있다.
플러그인(600)은, 내부에 신호처리부(601)를 가지고 있다. 다른 플러그인 으로부터 입력된 음성데이터는, 입력포트(602)를 통해서 신호처리부(601)에 보내진다. 신호처리부(601)에서는, 입력포트(602)로부터 얻은 음성데이터에 대해서, 시각정보나 신호처리부(601)에 보내져 온 파라미터 값을 참조하면서, 그 플러그인 고유의 신호처리를 실시한다. 신호처리부(601)에서 처리된 음성데이터는, 출력포트(603)를 거쳐 다른 플러그인에 송신된다.
플러그인(600)에서의 처리는, 시각정보에 동기함으로써, 1 샘플 단위만이 아닌, 복수 샘플 단위, 예를 들면 패킷단위로 행할 수 있다. 플러그인에서는, 처리 단위마다, 신호처리함수의 콜을 실시한다. 따라서, 패킷단위로 신호처리를 하는 경우에는, 신호처리함수의 콜이 1 패킷으로 1회가 되어, 함수 콜이 적어지는 만큼, 신호처리 속도가 빨라진다.
또, 이 실시형태에서는, 음성데이터와 함께 영상데이터를 처리하는 경우에 있어서, 음성데이터의 처리를, 영상데이터의 영상프레임에 동기(이하, AV동기라고 한다)시킬 수 있도록 되어 있다. 이 AV동기 처리에 대해서는, 다음에 상술하겠지만, 음성데이터의 처리를, 영상데이터의 영상프레임에 동기시키도록 하는 경우에는, 시스템으로부터, 시각정보와 함께, 영상데이터의 수직동기정보(Vs)를 플러그인(600)에 보내도록 한다.
그리고, 플러그인(600)에서는, 시스템으로부터의 시각정보에 동기하는 수직동기정보(Vs)를 체크하여, 수직동기정보(Vs)의 타이밍이라고 판별했을 때에, 영상과 음성에서 동기를 취하고 있는 처리, 예를 들면, 파라미터 버퍼(604)로부터 신호처리부(601)에 보내는 파라미터의 변경처리를, 이 수직동기정보(Vs)의 타이밍에 동 기하여 실시한다. 이 구조에 의해, 그래프 내에 구성된 회로 내의 모든 플러그인의 모든 파라미터가, 수직동기정보(Vs)에 동기하여 동시에 갱신되며, AV동기를 취할 수 있다.
[그래프의 구성 예]
도 7은, 그래프의 일례를 나타내는 구성도이다. 위에서도 기술한 바와 같이, 그래프는, 소프트웨어 처리 모듈이므로, 이 도 7에 있어서의 그래프(700)의 구성의 각부는, 하드웨어로서 갖추는 것이 아니라, 소프트웨어의 기능으로서 갖추는 것이다.
상술한 바와 같이, 그래프는 플러그인으로서의 성질도 가지는 것이며, 신호처리부(701)와 입력포트(702)와 출력포트(703)와 파라미터 버퍼(704)와 시각정보의 레지스터부(705)를 갖추고 있다. 신호처리부(701)는, 상기 그래프 내에 포함되는 플러그인을 독출하는 처리를 실시하는 것이다. 입력포트(702)와 출력포트(703)와 파라미터 버퍼(704)와 시각정보의 레지스터부(705)의 기능은, 도 6을 이용하여 설명한 플러그인(600)의, 대응하는 부위와 동일하므로, 여기에서는, 그 설명(은)은 생략한다. 또한 파라미터 버퍼(704)의 파라미터는, 그래프(700)에 대한 파라미터인 것은 말할 필요도 없다.
다음에, 그래프 특유의 기능에 대해 설명한다.
그래프(700)는, 내부에 플러그인 생성ㆍ유지부(706)를 갖추고 있다. 그래프(700)는, 0개 이상의 플러그인을 내부에 포함할 수 있다. 사용자는, 그래프에 대해서 플러그인의 추가ㆍ삭제를 지시함으로써, 신호처리 중에서도 동적으로 플러 그인을 생성ㆍ삭제할 수 있다. 신호처리중의 동적인 플러그인의 생성ㆍ삭제에 대해서는 다음에, 상술한다.
그래프(700)에 있어서는, 생성한 플러그인에는 추가한 차례에 의해 0~J(J는 임의의 자연수)의 식별번호가 주어진다. 이 때문에, 사용자는, 이 식별번호에 의해 플러그인을 식별할 수 있다. 단, 그래프(700)는, 플러그인 생성ㆍ유지부(706)에는, 이 식별번호의 순서대로 플러그인을 유지하고 있는 것은 아니다. 그래프(700) 내의 플러그인은, 후술하는 순차계산순서의 순서대로 정렬된 상태로, 플러그인 생성ㆍ유지부(706)에 유지되고 있다.
사용자는, 그래프(700)에 대해서, 상기 그래프(700)가 내포하는 플러그인간의 결선도 지시할 수 있다. 임의의 플러그인의 출력포트와 임의의 플러그인의 입력포트의 결선상태를, 신호처리 중에서도 동적으로 변경하는 것이 가능하다. 이것들은, 사용자가 그래프(700)에 대해서 플러그인의 식별번호와 포트의 식별번호를 지정함으로써 실행할 수 있다. 그래프(700)는, 사용자로부터의 결선변경지시에 의해, 플러그인의 결선상태를 변경하는 처리를 실시한다.
사용자는, 그래프(700)에 대해서, 신호처리의 개시를 지시한다. 사용자가, 그래프(700)의 신호처리함수를 콜 하면, 그래프(700)의 신호처리함수 내로부터 순서대로, 상기 그래프(700)가 내포하는 플러그인의 신호처리함수가 재귀적으로 콜 된다. 신호처리함수가 콜 되면, 플러그인 생성ㆍ유지부(706)에, 순차계산순서의 순서대로 정렬된 상태로 유지되고 있는, 그래프(700)가 내포하는 그래프나 플러그인의 신호처리부가, 상기 순차계산순서에 따라서, 순차적으로, 실행 처리된다. 그래프(700)가 내포하는 그래프나 플러그인의 계산처리가 순차적으로 실시되어 가는 것으로, 그래프(700) 내에 구성된 회로 전체의 복합적인 신호처리가 실현된다. 이 순차계산순서는, 플러그인간의 결선구조에 의해, 시스템(그래프(700))이 결정된다.
사용자의 지시에 의해 플러그인의 추가ㆍ삭제ㆍ입력포트ㆍ출력포트의 결선상태의 변경 등, 회로 상태에 변경이 있는 경우, 그래프(700)는, 후술하는 경로탐색을 실시함으로써, 자기가 내포하는 플러그인 및 자그래프에 대해 최적인 순차계산순서를 자동적으로 요구한다. 자그래프가 내포하는 플러그인에 대한 최적인 순차계산순서는, 해당자 그래프가, 경로탐색을 실시함으로써 자동적으로 요구한다.
상기의 그래프에서 행해지는 경로탐색의 결과, 플러그인 생성ㆍ유지부(706)의 플러그인군(群)(플러그인으로서의 자그래프를 포함한다)은, 이 최적인 순차계산순서의 순서대로 정렬된 상태로 유지되고 있다. 그래프가 갖추는 경로탐색의 알고리즘에 대해서는, 다음에 상세하게 설명한다.
[그래프의 기능 블록도]
도 1은, 그래프가 갖추는 기능을 블록화하여 나타낸 그래프 구성의 기능 블록도이다. 즉, 그래프는, 지시입력접수기능부(1)와 플러그인 생성삭제기능부(2)와 플러그인간 결선처리기능부(3)와 회로구성정보 격납관리기능부(4)와 경로탐색기능부(5)와 신호처리 순서관리기능부(6)와 신호처리실행기능부(7)와 신호처리함수격납부(8)를 갖춘다.
지시입력접수기능부(1)는, 사용자로부터의 플러그인 생성 혹은 삭제지시, 입 출력포트의 결선지시, 파라미터 입력지시 등을 접수하며, 플러그인 생성 혹은 삭제지시는, 플러그인 생성삭제기능부(2)에 전하고, 입출력포트의 결선지시는, 플러그인간 결선처리기능부(3)에 전한다. 또, 플러그인 생성 혹은 삭제지시, 또, 입출력포트의 결선지시가 있으면, 지시입력접수기능부(1)는, 경로탐색기능부(5)를 기동시켜서, 경로탐색을 실행시키도록 한다. 또, 지시입력접수기능부(1)는, 파라미터 입력지시를 접수했을 때에는, 파라미터 버퍼에 입력된 파라미터를 유지하는 기능을 갖추고 있다.
플러그인 생성삭제기능부(2)는, 지시입력접수기능부(1)로부터의 플러그인 생성 혹은 삭제지시를 받아서, 플러그인의 생성 혹은 삭제 처리를 실시한다. 즉, 플러그인 생성시에는, 생성된 플러그인에 식별번호를 부여하고, 회로구성정보 격납관리기능부(4)에, 상기 식별번호를 포함한 플러그인의 생성정보를 전한다. 또, 플러그인 삭제시에는, 삭제된 플러그인의 식별번호와 그 삭제 의뢰를 포함한 삭제정보를 회로구성정보 격납관리기능부(4)에 전한다.
플러그인간 결선처리기능부(3)는, 지시입력접수기능부(1)로부터의 플러그인간의 결선지시를 받아, 상기 결선지시에 의해 지정된 플러그인의 출력포트와 입력포트와의 결선정보를 회로구성정보 격납관리기능부(4)에 전한다.
회로구성정보 격납관리기능부(4)는, 플러그인 생성삭제기능부(2)나 플러그인간 결선처리기능부(3)로부터의 플러그인의 생성정보, 삭제정보, 결선정보로부터, 그래프 내에 구성되는 회로정보를 기억하고, 관리한다.
경로탐색기능부(5)는, 지시입력접수기능부(1)로부터의, 플러그인 생성 혹은 삭제지시, 또, 입출력포트의 결선지시에 의거하는 기동 의뢰를 받아, 후술하는 경로탐색의 알고리즘을, 기동하여 실행한다. 이 경로탐색의 알고리즘의 실행의 결과, 정해진 플러그인의 순차계산순서(신호처리순서)의 정보를, 신호처리 순서관리기능부(6)에 보낸다. 신호처리 순서관리기능부(6)는, 상술한 바와 같이, 플러그인 생성ㆍ유지부에, 상기 신호처리순서의 순서대로 플러그인의 식별 정보를 배열하여 유지하도록 한다.
신호처리실행기능부(7)는, 도 1에 나타내는 바와 같이, 데이터수수처리부(71)와 신호처리함수호출부(72)와 신호처리시각관리부(73)와 신호처리동기관리부(74)를 갖추고 있다.
신호처리실행기능부(7)는, 지시입력접수기능부(1)를 통해서 입력되는 신호처리 개시 지시에 의거하여, 그래프 내에 구성된 회로에 의한 신호처리를 개시한다. 사용자가, 그래프(700)의 신호처리함수의 콜을 지시하면, 신호처리함수호출부(72)가, 신호처리함수격납부(8)로부터 지시받은 그래프의 신호처리함수를 독출한다. 신호처리함수호출부(72)는, 그래프의 신호처리함수는, 사용자 지시에 의해 독출을 행하지만, 그래프 내의 각 플러그인의 신호처리함수는, 상기 그래프의 신호처리함수 내로부터 순서대로, 각각의 플러그인의 신호처리함수를 재귀적으로 호출한다.
그리고, 신호처리실행기능부(7)의 데이터수수처리부(71)는, 회로구성정보 격납관리기능부(4)의 격납회로정보를 참조하고, 회로구성에 따라서, 이 예에서는, 음성데이터를 순차적으로 플러그인에 전해가도록 한다.
신호처리시각관리부(73)는, 이 데이터수수처리부(71)에 의한 데이터 샘플 단 위의 시각을 관리한다. 신호처리동기관리부(74)는, 패킷단위의 신호처리시의 패킷동기처리(예를 들면 패킷의 선두의 관리)나, 상술한 음성데이터의 처리 타이밍을, 영상데이터의 프레임에 동기시키는 AV동기 등을 관리한다.
경로탐색기능부(5)는, 신호처리실행기능부(7)에 의한 신호처리 중이어도, 지시입력접수부(1)로부터의 그래프 내의 회로구성의 변경 요구를 받아들이고, 변경된 회로구성에 대한 경로탐색을 실행하고, 그 탐색결과를 회로구성정보 격납관리기능부(4) 및 신호처리순서관리기능(6)에 전한다. 이것에 의해, 신호처리실행기능부(7)는, 그 다음은, 변경된 회로구성에 있어서, 변경 후의 경로탐색결과에 의거한 신호처리순서대로 신호처리가 실행된다.
[그래프 구조를 가지는 회로작성처리]
다음에, 이 발명의 실시형태에 의한 신호처리회로의 작성처리의 흐름을, 도 8의 회로구성을 그래프 내에 작성하는 경우를 예를 들어 설명한다. 이하의 설명에 있어서는, 그래프나 플러그인을 총칭해 오브젝트라고 부른다. 오브젝트란, 오브젝트 지향에 있어서의 인스탠스를 나타내고, 그래프나 플러그인의 실체 그 자체이다.
오브젝트 생성시의 각 그래프나 각 플러그인의 디폴트 입출력포트수(초기값)는 아래에 기술한 바와 같다. 또한 사용자는, 오브젝트 생성 후에 입력포트 및/또는 출력포트를 추가 또는 삭제하는 것이 가능하다.
모그래프(800):입력포트수 0, 출력포트수 0
플러그인(801):입력포트수 0, 출력포트수 1
플러그인(802):입력포트수 1, 출력포트수 0
자그래프(803):입력포트수 1, 출력포트수 1
플러그인(804):입력포트수 1, 출력포트수 1
플러그인(805):입력포트수 2, 출력포트수 2
플러그인(806):입력포트수 1, 출력포트수 1
또한, 이하의 설명에 있어서, 입력포트 및 출력포트 뒤의 숫자는, 포트 번호이며, 0, 1, 2가 이용되고 있다.
[회로작성순서]
다음에, 도 8의 회로의 작성순서를, 도 9~도 12의 플로차트를 참조하면서 설명한다. 또한 도 9~도 12는, 설명의 이해를 용이하게 하기 위해, 사용자의 지시와 실시형태의 신호처리장치에 있어서의 처리를 대응시켜 나타낸 것이다. 도시는, 생략했지만, 실시형태의 신호처리장치는, 표시화면에, 사용자의 지시입력에 따른 표시를 실시해 가는 것이며, 사용자는, 그 표시화면을 보면서 조작입력을 할 수 있는 것이다.
먼저, 사용자는, 그래프(800)(모그래프)의 오브젝트의 작성 지시를 한다(사용자 지시(1)). 그러면, 신호처리장치에서는, 루트 오브젝트로서 모그래프(800)를 생성하여, 등록한다(스텝 S101).
다음에, 사용자는, 그래프(800)의 오브젝트에 대해서 플러그인(801) 오브젝트의 작성을 지시한다(사용자 지시(2)). 그러면, 신호처리장치에서는, 작성된 그래프(800)의 플러그인 생성삭제 기능에 의해, 그래프(800) 내에 플러그인(801)이 생성되어 등록된다(스텝 S102). 그래프(800) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S103).
다음에, 사용자는, 그래프(800)의 오브젝트에 대해서 플러그인(802) 오브젝트의 작성을 지시한다(사용자 지시(3)). 그러면, 신호처리장치에서는, 그래프(800)의 플러그인 생성삭제 기능에 의해, 그래프(800) 내에 플러그인(802)이 생성되어 등록된다(스텝 S104). 그래프(800) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S105).
다음에, 사용자는, 그래프(800)의 오브젝트에 대해서 그래프(803) 오브젝트(자그래프)의 작성을 지시한다(사용자 지시(4)). 그러면, 그래프(800)에서는, 플러그인 생성삭제 기능에 의해, 그래프(800) 내에 자그래프(803)를 플러그인으로서 생성하여 등록한다(스텝 S106). 그래프(800) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S107).
다음에, 사용자는, 그래프(803)의 오브젝트에 대해서 입력포트(0)(밖)의 작성을 지시한다(사용자 지시(5)). 그러면, 신호처리장치에서는, 생성된 자그래프(803)의 기능으로서 입력포트(0)(밖)가 생성되어 자그래프(803) 내에 등록된다(스텝S111). 그리고, 자그래프(803)에서는, 입력포트(0)(밖)에 대응하는 내부의 출력포트(0)(안)를 자동적으로 생성한다(스텝 S112). 그리고, 자그래프(803) 내의 경로탐색기능부는, 이 포트 작성 지시에 의거하여, 경로탐색을 실행한다(스텝 S113).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 출력포트(0)(밖)의 작성을 지시한다(사용자 지시(6)). 그러면, 신호처리장치에서는, 생성된 자그래프(803)의 기능으로서 출력포트(0)(밖)가 생성되어 자그래프(803) 내에 등록된다(스텝 S114). 그리고, 자그래프(803)에서는, 출력포트(0)(밖)에 대응하는 내부의 입력포트(0)(안)를 자동적으로 생성한다(스텝 S115). 그리고, 자그래프(803) 내의 경로탐색기능부는, 이 포트 작성 지시에 의거하여, 경로탐색을 실행한다(스텝 S116).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(804) 오브젝트의 작성을 지시한다(사용자 지시(7)). 그러면, 자그래프(803)의 플러그인 생성삭제 기능에 의해, 자그래프(803) 내에 플러그인(804)이 생성되어서 등록된다(스텝 S117). 자그래프(803) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S118).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(805) 오브젝트의 작성을 지시한다(사용자 지시(8)). 그러면, 자그래프(803)의 플러그인 생성삭제 기능에 의해, 자그래프(803) 내에 플러그인(805)이 생성되어서 등록된다(스텝 S119). 자그래프(803) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S120).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(806) 오브젝트의 작성을 지시한다(사용자 지시(9)). 그러면, 자그래프(803)의 플러그인 생성삭제 기능에 의해, 자그래프(803) 내에 플러그인(806)이 생성되어서 등록된다(스텝 S131). 자그래프(803) 내의 경로탐색기능부는, 이 플러그인의 생성지시에 의거하여, 경로탐색을 실행한다(스텝 S132).
다음에, 사용자는, 그래프(800)의 오브젝트에 대해서, 플러그인(801)의 출력포트(0)와 자그래프(803)의 입력포트(0)(밖)의 결선을 지시한다(사용자 지시(10)). 그러면, 그래프(800)에서는, 플러그인간 접속처리기능부에 의해, 플러그인(801)의 출력포트(0)와 자그래프(803)의 입력포트(0)(밖)를 결선하여, 상기 그래프(800) 내에 등록한다(스텝 S133). 그래프(800) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S134).
다음에, 사용자는, 그래프(800)의 오브젝트에 대해서, 자그래프(803)의 출력포트(0)(밖)와 플러그인(802)의 입력포트(0)의 결선을 지시한다(사용자 지시(11)). 그러면, 그래프(800)에서는, 플러그인간 접속처리기능부에 의해, 자그래프(803)의 출력포트(0)(밖)와 플러그인(802)의 입력포트(0)를 결선하여, 상기 그래프(800) 내에 등록한다(스텝 S135). 그래프(800) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S136).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 자그래프(803)의 내부의 출력포트(0)(안)와 플러그인(804)의 입력포트(0)와의 결선을 지시한다(사용자 지시(12)). 그러면, 자그래프(803)에서는, 플러그인간 접속처리기능부에 의해, 자그래프(803)의 내부의 출력포트(0)(안)와 플러그인(804)의 입력포트(0)를 결선하여, 상기 자그래프(803) 내에 등록한다(스텝 S137). 자그래프(803) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S138).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(804)의 출 력포트(0)와 플러그인(805)의 입력포트(0)와의 결선을 지시한다(사용자 지시(13)). 그러면, 자그래프(803)에서는, 플러그인간 접속처리기능부에 의해, 플러그인(804)의 출력포트(0)와 플러그인(805)의 입력포트(0)를 결선하여, 상기 자그래프(803) 내에 등록한다(스텝 S141). 자그래프(803) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S142).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(805)의 출력포트(1)와 플러그인(806)의 입력포트(0)와의 결선을 지시한다(사용자 지시(14)). 그러면, 자그래프(803)에서는, 플러그인간 접속처리기능부에 의해, 플러그인(805)의 출력포트(1)와 플러그인(806)의 입력포트(0)를 결선하여, 상기 자그래프(803) 내에 등록한다(스텝 S143). 자그래프(803) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S144).
다음에, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(806)의 출력포트(0)와 플러그인(805)의 입력포트(1)와의 결선을 지시한다(사용자 지시(15)). 그러면, 자그래프(803)에서는, 플러그인간 접속처리기능부에 의해, 플러그인(806)의 출력포트(0)와 플러그인(805)의 입력포트(1)를 결선하여, 상기 자그래프(803) 내에 등록한다(스텝 S145). 자그래프(803) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S146).
마지막으로, 사용자는, 자그래프(803)의 오브젝트에 대해서, 플러그인(805)의 출력포트(0)와 자그래프(803)의 내부의 입력포트(0)(안)와의 결선을 지시한다(사용자 지시(16)). 그러면, 자그래프(803)에서는, 플러그인간 접속처리기능부에 의해, 플러그인(805)의 출력포트(0)와 자그래프(803)의 내부의 입력포트(0)(안)를 결선하여, 상기 자그래프(803) 내에 등록한다(스텝 S147). 자그래프(803) 내의 경로탐색기능부는, 포트 접속지시에 의거하여, 경로탐색을 실행한다(스텝 S148).
이상의 순서에 의해, 도 8의 회로가, 그래프(800) 내에 구성된다. 그리고, 사용자가, 그래프(800)에 대해서, 신호처리 개시의 지시를 하면, 상술한 바와 같이 하여, 경로탐색에 의해 정해진 신호처리순서에 따라서, 각 플러그인으로의 신호처리가 순서대로 실행된다.
상술한 바와 같이, 이 실시형태의 신호처리장치에 있어서는, 사용자의, 상술한 예의 경우의 합계(16) 순서는, 그래프 오브젝트에 대한 조작이므로, 상기 조작할 때 회로의 그래프 구조가 변화하기 때문에, 각 순서마다 경로탐색 알고리즘이, 시스템(그래프)에 의해 자동적으로 실행된다. 그리고, 회로구성의 생성처리가 완료되었을 때에는, 경로탐색도 완료되어, 신호처리순서도 정해진 상태가 된다.
다음에, 도 8의 예에서 작성한 회로의 신호처리실행의 흐름을 설명한다.
그래프(800) 내의 플러그인 생성ㆍ유지부에는, 경로탐색 알고리즘에 의해, 최적인 순차계산순서로 정렬된 상태로 플러그인이 유지되고 있다. 도 8의 예에 있어서, 이미 최적인 순서대로 플러그인이 유지되고 있는 것으로 가정하여, 이하에 신호처리실행의 흐름을 설명한다.
(1) 사용자는, 먼저, 그래프(800)에 대해서 신호처리의 개시를 지시한다.
(2) 그러면, 그래프(800)의 신호처리함수가 실행된다.
(3) 다음에, 그래프(800)의 신호처리함수 내로부터 플러그인(801)의 신호처 리함수가 실행된다.
(4) 다음에, 그래프(800)의 신호처리함수 내로부터 자그래프(803)의 신호처리함수가 실행된다.
(4-1) 다음에, 자그래프(803)의 신호처리함수 내로부터 플러그인(806)의 신호처리함수가 실행된다.
(4-2) 다음에, 자그래프(803)의 신호처리함수 내로부터 플러그인(804)의 신호처리함수가 실행된다.
(4-3) 다음에, 자그래프(803)의 신호처리함수 내로부터 플러그인(805)의 신호처리함수가 실행된다.
(5) 다음에, 그래프(800)의 신호처리함수 내로부터 플러그인(802)의 신호처리함수가 실행된다.
상기의 순서에 있어서, 최초의 그래프(800)에 대한 신호처리의 개시 지시의 순서(1)만이, 사용자의 지시에 의한 것이며, 그 후의 순서(2)~(5)는, 그래프(800) 및 자그래프(803)에 의해 자동적으로 실행되는 것이다.
또한 각 플러그인의 신호처리함수 내에서는, 아래와 같은 동작이 행해진다.
(1) 입력포트로부터 입력 데이터를 접수한다.  
(2) 입력 데이터에 대해서 신호처리를 실시한다.
(3) 신호처리한 입력 데이터를 출력포트에 출력한다.
[실시형태의 경로탐색 알고리즘]
다음에, 이 실시형태에 있어서, 그래프의 처리 기능으로 되어 있는 경로탐색 알고리즘에 대해 설명한다.
이하에 설명하는 경로탐색 알고리즘은, 실시형태의 시스템의 주요부를 구성하는 것이며, 이 경로탐색 알고리즘에 의해, 그래프가 내포하는 플러그인이, 최적인 순서대로 정렬된다. 신호처리시는, 이 정렬된 순서로, 각 플러그인이 가지는 고유의 신호처리함수가 순차적으로 호출되어 실행된다.
일반적으로, 신호처리를 DSP(Digital Signal Processor) 등의 신호처리 디바이스로 실시하는 경우, DSP 내부의 ALU(Arithmetic Logical Unit) 등의 연산 회로부에 있어서 순차적으로 계산처리를 실시함으로써, 소망의 신호처리를 실현하고 있다. 이 DSP등에 의한 순서처리방법은, 이 실시형태의 미들 웨어의 CPU에 의한 연산에 대해서도 동일하다.
즉, 이 실시형태에서는, 주어진 회로를 시그널 플로우 그래프라고 간주하고, 그 그래프로부터 순차계산순서를 탐색하고, 탐색결과에 의거한 순서로, 순차적으로 계산처리를 실시하도록 한다. 이 실시형태의 미들 웨어인 SSP는, 이 독자적인 경로탐색 알고리즘을 가지고 있는 것도 특징으로 하고 있다.
이 경로탐색 알고리즘을 이용함으로써, 피드백 루프를 포함한 임의의 디지털 회로구성을, 완전하게 에뮬레이트 할 수 있다. 또, 현실의 하드웨어 회로의 세계에서는 불가능한 동적인 회로구성의 변경을 실현할 수 있다.
이 실시형태에 있어서, 이 경로탐색 알고리즘은, 그래프형에 결선된 플러그인으로 이루어지는 회로의 신호처리를 실현하기 위해서, 어느 플러그인으로부터 순서대로 신호처리하면 좋을까라고 하는 순차계산순서를 요구하는 알고리즘이다. 여기서, 경로탐색의 대상이 되는, 그래프 내에 구성되는 회로는, 피드백 루프 모양의 회로구성을 포함되고 있어도 좋다.
이 경로탐색 알고리즘은, 그래프가 유지되고 있고, 그래프 중의 플러그인 생성ㆍ유지부가, 이 경로탐색 알고리즘을 실행한다.
사용자로부터, 그래프에 대해서, 그래프 구조를 변경하는 조작이 행해진 경우에, 그래프 스스로가 자동적으로 경로탐색을 실행하고, 새로운 순차계산순서를 요구한다. 회로 내에 복수의 그래프가 존재하고 있는 경우에는, 경로탐색은, 각 그래프 단위로 독립하여 행해지며, 변경이 있는 그래프만 경로탐색이 실행된다. 이 경로탐색은, 매우 간단하기 때문에, 단시간에 완료된다.
이 실시형태의 경로탐색 알고리즘의 상세를 이하에 설명한다.
이 실시형태의 경로탐색 알고리즘에서는, 그래프형으로 형성되어 있는 회로의 요소로 플러그인을 노드라고 간주한다. 노드란, 그래프 이론에 있어서의 마디가 되는 요소를 말한다. 이 실시형태에서는, 회로는, 노드간이 방향을 가지는 화살표로 결합되는 유향선분(有向線分) 그래프로 표현할 수 있다. 노드로 향하는 화살표를 노드로의 입력, 노드로부터 밖으로 향하는 화살표를 노드로부터의 출력이라고 정의한다. 이 실시형태의 경로탐색 알고리즘은, 그래프형에 결선된 노드를 순서대로 둘러싸고, 신호순서를 정해간다. 이하, 이 실시형태의 경로탐색 알고리즘을 노드 스캔 알고리즘이라고 칭한다.
이 노드 스캔 알고리즘은, 경로탐색의 베이스가 되는 초기경로탐색 알고리즘(프라이머리 노드 스캔 알고리즘)과 경로의 루프 정보를 가미하는 탐색을 실시하는 루프 서치 알고리즘으로 이루어진다.
그리고, 이 실시형태에 대해서는, 도 13에 나타내는 바와 같이, 노드 스캔 알고리즘에 있어서는, 먼저, 초기경로탐색 알고리즘을 실시한다(스텝 S151). 그리고, 초기경로탐색 알고리즘을 종료하면(스텝 S152), 루프 서치 알고리즘을 실행하도록 한다(스텝 S153).
[초기경로탐색 알고리즘에 대해]
이 초기경로탐색 알고리즘은, 다음과 같은 「해결해야 할 명제」를 설정하고, 후술과 같은 「탐색 조건」아래에서, 실시하는 것이다.
「해결해야할 명제」
그래프형에 결선된 노드를 순서대로 찾는 것을 상정한다. 1회의 순회 또한 아래와 같은 조건하에서, 모든 노드를 한 번에 통과하고 싶다. 그것이 가능해지는 순회 순서를 구하자. 단, 순회하는 노드간이 그래프에서 직접 결선되어 있을 필요는 없고, 노드를 건너뛰며 순회해도 상관없다.
「탐색 조건」
(a) 입력이 없는 노드는 무조건 통과할 수 있다.  
(b) 지연소자가 되는 플러그인의 노드는, 무조건 통과할 수 있다.
(c) 통과한 노드는 출력이 확정된다.  
(d) 노드 A의 입력에 접속되어 있는 전단의 노드 B의 출력이 확정되면, 노드 A의 입력이 확정된다.  
(e) 노드의 전 입력이 확정되면 그 노드를 통과할 수 있다.
또한 노드의 식별자로서 미리 순서대로 고유 번호가 할당되어 있다. 이 번호를 노드번호(노드 No.)라고 부른다. 이것은 임의의 번호여도 좋고, 예를 들면 플러그인의 오브젝트의 생성순서대로 노드 넘버를 할당해 두면 좋다. 또한 플러그인에는, LTP(Latency Type Plugin)와 NLTP(Non Latency Type Plugin)의 종류의 타입이 있다. LTP는, 지연소자가 되는 플러그인이며, 1 샘플 이상의 지연이 발생한다. NLTP는, 게이트 소자가 되는 플러그인이며, 지연은 발생하지 않는다.
이상의 초기경로탐색 알고리즘은, 도 14의 플로차트에 의해 실행할 수 있다.
먼저, 최초의 노드를 체크하고(스텝 S161), 상기 노드에 대해서 노드순서번호(이하, 노드 인덱스라고 부른다)가 부여가 끝난 상태인지의 여부를 판별한다(스텝 S162). 부여가 끝난 상태라면, 모든 노드에 노드 인덱스가 부여되어 있는지의 여부를 판별하고(스텝 S169), 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
또, 스텝 S169에서, 모든 노드에는, 노드 인덱스를 부여하고 있지 않다고 판별했을 때에는, 다음의 노드를 체크하고(스텝 S165), 그 후, 스텝 S162로 돌아오고, 스텝 S162 이후를 반복한다.
스텝 S162에서, 노드 인덱스가 부여가 끝난 상태가 아니다 라고 판별했을 때에는, 무조건 통과할 수 있는 노드인지 아닌지, 즉, 플러그인이 LTP인지 아닌지 판별한다(스텝 S163).
이 스텝 S163에서, 무조건 통과할 수 있는 노드는 아니다 라고 판별했을 때 에는, 그 노드의 모든 입력이 확정되어 있는지의 여부를 판별한다(스텝 S164). 이 스텝 S164에서, 모든 입력은 확정되어 있지 않다고 판별했을 때에는, 다음의 노드를 체크하고(스텝 S165), 그 후, 스텝 S162로 돌아오고, 스텝 S162 이후를 반복한다.
스텝 S163에서, 무조건 통과할 수 있는 노드라고 판별했을 때, 또, 스텝 S164에서, 그 노드의 전 입력이 확정되어 있다고 판별했을 때에는, 상기 노드를 통해 상기 노드의 출력을 확정한다(스텝 S166). 그리고, 상기 노드가 접속되어 있는 노드의 입력을 확정한다(스텝 S167). 그리고, 상기 노드에, 노드 인덱스를 부여한다(스텝 S168).
다음에, 모든 노드에 노드 인덱스가 부여되어 있는지의 여부를 판별하고(스텝 S169), 모든 노드에 노드 인덱스가 부여되어 있다고 판별했을 때에는, 이 처리 루틴을 종료한다.
이상과 같은 초기경로탐색 알고리즘에 의한 노드 인덱스 부여의 구체적인 예를, 도 15의 플라그의 회로구성의 경우를 예로 설명한다. 도 15에 있어서는, 대상이 되는 노드는, 노드 No.0~No.6의 7개이다. 노드 No.4와 노드 No.6은 LTP로 한다. 이 경우의 초기경로탐색 알고리즘은, 아래와 같이 된다. 즉, 노드No.0에서 노드 No.6까지, 순서대로 아래와 같은 체크를 실시한다. 노드 No.0에서 노드 No.6까지를 한 바퀴로 하여, 전 노드를 통과할 수 있을 때까지, 아래와 같은 체크를 몇 바퀴라도 반복한다.
(1) 노드 No.0은, 입력이 없기 때문에 통과 OK. 따라서, 노드 No.0의 출 력(0) 확정.
(2) 노드 No.1은, 입력(1)이 확정되어 있지 않기 때문에 패스.
(3) 노드 No.2는, 입력이 없기 때문에 통과 OK. 따라서, 노드 No.2의 출력(0) 확정.
(4) 노드 No.3은, 모든 입력(0, 1, 2)이 확정되어 있지 않기 때문에 패스.
(5) 노드 No.4는, LTP이므로 통과 OK. 따라서, 노드 No.4의 출력(0) 확정.
(6) 노드 No.5는, 입력(0)이 확정되어 있지 않기 때문에 패스.
(7) 노드 No.6은, LTP이므로 통과 OK. 따라서, 노드 No.6의 출력(0) 확정.
이상으로, 1바퀴째를 종료한다. 다음에, 통과하지 못하고 출력이 확정되어 있지 않은 노드에 대해서, 다음과 같이 하여, 2바퀴째의 탐색을 실시한다.
(1) 노드 No.1은, 모든 입력(0, 1)이 확정되었으므로 통과 OK. 따라서, 노드 No.1의 출력(0) 확정.
(2) 노드 No.3은, 모든 입력(0, 1, 2)이 확정되었으므로 통과 OK. 따라서, 노드 No.3의 출력(0, 1, 2) 확정.
(3) 노드 No.5는, 입력(0)이 확정되었으므로 통과 OK. 따라서 확정.
이상과 같이 하여, 모든 노드를 통과해 출력이 확정되었으므로, 이상으로 탐색이 완료가 된다. 이 경우, 2바퀴째로 탐색이 완료된 것이 된다.
[초기경로탐색 알고리즘에 의한 탐색결과]
상기의 초기경로탐색 알고리즘의 탐색순서에 있어서, 출력이 확정한 순서대로 노드에 번호를 매겨 가면, 경로탐색결과가 구해진다. 이 새로운 노드의 순서 번호가 노드 인덱스이다. 도 15의 그래프의 회로구성 예의 경우의 탐색결과를 도 16에 나타낸다.
그래프 내에서는, 플러그인은 노드 인덱스 순서대로, 플러그인 작성ㆍ유지부에 격납되어 있다. 경로탐색 알고리즘이 실행될 때마다, 플러그인 작성ㆍ유지부에 있어서의, 상기 플러그인의 격납순서가 갱신된다. 신호처리시는, 그래프가 노드 인덱스 순서대로 각 플러그인의 신호처리함수를 콜 함으로써, 소망한 신호처리를 실현하고 있다.
이상 설명한 바와 같이, 초기경로탐색 알고리즘에 대해서는, 2바퀴째, 3바퀴째로 반복하면서, 상기 명제의 해답이 구해질 때까지, 노드의 체크를 행하지만, 1바퀴의 탐색에 있어서, 통과 가능한 노드가 반드시 하나는 발견된다고 하는 성질이 있다.
단, 하나 예외가 있다. 피드백 루프 내에 지연소자인 LTP가 포함되어 있지 않은 경우는, 1바퀴의 탐색에 있어서, 통과 가능한 노드를 단 하나도 찾아낼 수 없다. 이것은, 회로구성상, 비정상적인 케이스이다.
일반적인 디지털 신호처리 이론에서는, 인과율을 채우기 위해서, 피드백 루프 내에 반드시 하나 이상의 지연소자를 포함할 필요가 있다. 이 실시형태에 있어서의 초기경로탐색 알고리즘에서는, 사용자가, 이 기본 원칙을 지키지 않는 회로를 작성했을 경우는, 상기 예외가 발생한다고 하는 성질이 있다.
그래서, 이 실시형태의 초기경로탐색 알고리즘에 대해서는, 이 예외 발생을 에러경고에 이용할 수 있다. 즉, 사용자가 지연소자를 포함하지 않는 피드백회로를 작성했을 경우에는, 초기경로탐색 알고리즘에 있어서, 상술과 같은 경로탐색의 예외발생이 생기므로, 그 경우를 검출했을 때에는, 회로를 재구성하도록, 시스템으로부터 사용자에게 경고를 알리도록 한다.
[루프 서치 알고리즘에 대해]
다음에, 루프 서치 알고리즘에 대해 설명한다. 이것은 신호처리 실행시에 있어서의 CPU 부하의 개선을 제공하는 알고리즘이다. 신호처리의 리얼타임성을 확보하기 위해서는, 중요한 기술이다.
상기의 본 초기경로탐색 알고리즘에서 요구한 탐색결과에 의해서도, 소망한 회로의 신호처리는 실현할 수 있다. 그러나, 초기경로탐색 알고리즘에서 요구한 탐색결과에서는, 피드백 루프를 포함한 회로구성에 있어서는, 반드시 속도 성능적으로는 유리하다라고는 말할 수 없다고 하는 문제가 있다.
피드백 루프를 포함한 회로구성에 있어서는, 「입력이 확정되지 않은 상태에서 출력을 확정할 수 없다」라고 하는 디지털 신호처리 이론에 있어서의 인과율을 충족시킬 필요가 있다. 그 때문에, 피드백 루프를 포함한 회로에 있어서는, 1 샘플 단위로 순차적으로 각 플러그인의 신호처리를 행할 필요가 있다. 즉, 1 샘플 단위로 플러그인에 대해 음성데이터의 입출력 및 신호처리를 행할 필요가 있다고 하는 것이다.
여기서, 문제가 되는 것은, 신호처리할 때마다 발생하는 함수 콜이다. 일 반적으로, 소프트웨어 처리에 있어서, 함수 콜은 CPU 부하가 높다(고비용이다)라고 하는 성질이 있다. 소프트웨어의 리얼타임 신호처리에 있어서는, 이 함수 콜 회수를 1회라도 줄인다고 하는 것이, 처리속도성능의 향상으로 연결된다. 그래서, 함수 콜 회수를 삭감하는 방법이, 처리속도성능의 향상을 고안할 경우에 바람직하다.
함수 콜 회수를 줄이는 일반적인 수법으로서는, 복수 데이터 샘플을 1단위로 하는, 예를 들면 패킷단위의 처리를 들 수 있다. 1 샘플씩 처리하는 것이 아니라, 소정수의 복수 데이터 샘플을 블록화하여 정리해서 일괄처리 하는 방법이다. 예를 들면, 패킷사이즈가 1024 샘플의 경우는, 1024 샘플의 음성데이터를 정리하여 블록화하고, 1회의 함수 콜로 처리한다. 이렇게 함으로써, 함수 콜의 회수를 줄일 수 있다.
그렇지만, 회로에 피드백 루프가 포함되는 경우는, 상술한 바와 같이, 1 샘플 단위로 함수 콜 할 필요가 있다. 이 때문에, 패킷 처리를 행할 수 없다.
그래서, 이 실시형태의 경로탐색 알고리즘에서는, 초기경로탐색 알고리즘의 뒤에, 이하에 설명하는 루프 서치 알고리즘을 실시함으로써, 이 문제를 해결하는 것이다.
일반적으로, 피드백 루프를 포함한 회로에 있어서, 루프를 형성하는 노드는, 회로 전체의 일부인 것이 많다. 이 실시형태에 있어서의 루프 서치 알고리즘은, 이점을 이용하여, 루프를 구성하는 노드의 군(群)과 루프를 구성하지 않는 노드의 군을, 신호처리순서상에서, 구분하여, 루프를 구성하지 않는 노드의 군에서는, 패 킷 처리를 가능하게 함으로써, 신호처리 전체적으로, 고속화를 도모하는 것이다.
예를 들면, 도 15에 나타낸 회로구성의 경우, 루프를 구성하는 노드는, 노드 No.3, 노드 No.4, 노드 No.6, 의 3개이며, 전체의 노드수 7개에 대해서 반 이하이다.
그래서, 루프를 형성하는 노드만 1 샘플 단위로 처리하고, 그 이외의 노드를 패킷단위로 처리함으로써, 속도 열화를 필요 최소한으로 억제할 수 있다. 전체의 회로구성에 있어서, 루프를 형성하는 노드의 비율이 작으면 작을수록, 보다 효과적으로 속도 열화를 억제할 수 있다.
도 17에, 이 루프 서치 알고리즘의 처리의 플로차트를 나타낸다. 먼저, 폐로탐색 알고리즘을 이용하여, 루프를 구성하는 노드를 요구한다(스텝 S171). 폐로탐색 알고리즘은, 일반적인 그래프 이론의 폐로 탐색 알고리즘을 이용할 수 있다. 이 일반적인 그래프 이론의 폐로 탐색 알고리즘은 잘 알려져 있으므로, 여기에서는 그 상세한 설명은 생략한다.
다음에, 초기경로탐색 알고리즘으로 정해진 신호처리순서에서는, 루프를 구성하는 노드 사이에, 신호처리순서로서 루프를 구성하지 않는 노드가 들어가 있는지를 체크 한다(스텝 S172).
그리고, 루프를 구성하는 노드 사이에, 신호처리순서로서 루프를 구성하지 않는 노드가 들어가 있다고 판별했을 때에는(스텝 S173), 루프를 구성하지 않는 노드를, 루프를 구성하는 노드의 앞이 되도록, 신호처리순서를 바꿔 넣는다(스텝 S174). 즉, 노드 인덱스의 다시 매김을 실시한다.
스텝 S173에서, 루프를 구성하는 노드 사이에, 신호처리순서로서 루프를 구성하지 않는 노드가 들어 있지 않다고 판별했을 때에는, 그대로, 이 루프 서치 알고리즘을 종료한다.
이 루프 서치 알고리즘을, 도 15에 나타낸 회로구성의 경우에 적용한 경우를 예로, 구체적인 예를 이하에 설명한다.
도 15에 나타낸 회로구성에 대해서, 초기경로탐색 알고리즘을 실행한 결과는, 도 16에 나타낸 대로이다. 이 도 16의 탐색결과에 대해서, 폐로 탐색 알고리즘의 탐색결과인, 루프를 구성하는 노드, 즉, 노드 No.3, 노드 No.4, 노드No.6을, 사선으로 교부해 나타내면, 도 18의 좌측과 같이 된다.
이 도 18의 좌측의 도면에서 알 수 있는 바와 같이, 초기경로탐색 알고리즘의 탐색결과에서는, 신호처리순서로서 루프를 구성하는 노드 사이에, 루프를 구성하지 않는 노드인 노드 No.1이 존재하는 것을 알 수 있다. 그 때문에, 이대로의 신호처리순서에서는, 본래 1 샘플 단위로 처리를 행할 필요가 없는 노드 No.1도, 1 샘플 단위로 처리를 행할 필요가 있다.
그러나, 루프 서치 알고리즘을 적용했을 때에는, 상기 스텝 S174에 있어서, 루프를 구성하지 않는 노드는, 루프를 구성하는 노드의 앞이 되도록, 신호처리순서를 변경한다.
이 경우에, 신호처리순서가 변경되어도, 초기경로탐색 알고리즘의 해결 명제를 충족시키는 것이 필요하다. 그래서, 루프 서치 알고리즘에 대해서는, 신호처리순서를 변경할 때에는, 변경 후도 초기경로탐색 알고리즘의 해결 명제를 충족시 킬지의 체크를 행하도록 해도 좋지만, 이 예에서는, 루프의 선두의 노드보다, 루프를 구성하지 않는 노드를 앞의 신호처리순서가 되도록 변경함으로써, 이러한 체크를 필요로 하지 않는다. 즉, 상술의 순서 변경 방법은 신호처리의 순서성을 올바르게 유지한다고 하는 성질이 있다.
도 15의 예의 경우라면, 노드 No.4와 노드 No.6은, LTP이므로, 입력이 확정되지 않고서도 출력이 확정된다고 하는 성질을 가지고 있다. 이 성질을 이용하면, 노드 No.4와 노드 No.6은, 노드 No.1보다 뒤의 처리가 되어도 상관없다.
이 예에서는, 루프 서치 알고리즘에 의해, 도 18의 우측으로 나타내는 바와 같이, 루프를 구성하지 않는 노드인 노드 No.1은, 신호처리순서를 3번으로 하여, 루프를 구성 노드의 선두의 노드 No.4보다 앞이 되도록, 신호처리순서가 변경된다.
이와 같이 되면, 루프를 구성하는 노드는, 도 18의 우측에 있어서 사선을 교부하여 나타내는 바와 같이, 일괄적으로 된다. 즉, 루프를 구성하는 노드군은, 신호처리순서로서 국소화되어 있게 된다.
이 도 18의 우측에 나타내는 바와 같은 신호처리순서대로 신호처리를, 이하와 같이 하여, 실시함으로써 함수 콜을 필요 최소한으로 억제하는 것이 가능하다.
즉,
(1) 노드 인덱스가 1번에서 3번의 노드는, 루프 외이므로, 패킷단위로 처리한다.
(2) 노드 인덱스가 4번에서 6번의 노드는, 루프 내이므로, 1 샘플 단위로 처리한다.
(3) 노드 인덱스가 7번의 노드는, 루프 외이므로, 패킷단위로 처리한다.
이상과 같이 하여 신호처리를 실행하면, 함수 콜을 적게 하여, 신호처리 속도의 열화를 방지할 수 있다. 다음에, 패킷 사이즈를 1024 샘플로 했을 경우의 예를 아래와 같이 든다.
(1) 노드 No.0에, 1024 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(2) 노드 No.2에, 1024 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(3) 노드 No.1에, 1024 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(4) 아래와 같이 조작(4-1)~(4-3)을 1024회 반복한다.(함수 콜 3×1024회)
(4-1) 노드 No.4에, 1 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(4-2) 노드 No.6에, 1 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(4-3) 노드 No.3에, 1 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜 1회)
(5) 노드 No.5에 1024 샘플의 데이터를 전하여 처리를 실행한다.(함수 콜1회) 
따라서, 이상의(1)~(5)의 신호처리에 의해서, 1024 샘플 신호처리 하기 위해 필요한 함수 콜 회수의 합계는, 3076회가 된다.
만일, 상술의 예에 있어서, 모든 노드를 1 샘플씩 처리했을 경우의 함수 콜회수의 합계는, 7168회가 된다. 따라서, 이 실시형태의 노드 스캔 알고리즘을 실행하여, 루프를 구성하는 노드군을 국소화 시켜서, 상기 노드군만은 1 샘플마다 함수 콜을 실행하고, 그 외의 루프를 구성하지 않는 노드는, 패킷단위로 1회 함수 콜 하도록 함으로써, 상술한 예의 경우에는, 약 57%의 함수 콜 수가 삭감되게 된다.
또한 이 실시형태의 시스템에서는, 패킷 사이즈는, 고정값이 아니라 동적으로 그 사이즈를 변경하는 것이 가능하다.
[AV동기에 대해]
위에 기술한 바와 같이, 이 실시형태의 신호처리장치는, 샘플 정밀도로 연산할 수 있다. 또, 샘플 정밀도로 AV동기를 취할 수 있다. 종래의 미들 웨어에 있어서는, 복수의 플러그인을 다단 접속하면 접속 수에 비례한 지연이 발생하기 때문에, 모든 플러그인을 동기하여 처리하는 것은 곤란하다.
이것에 대해서, 이 실시형태에서는, 어떠한 접속에 있어서도 지연의 증가가 발생하지 않으므로, 샘플 정밀도로 각 플러그인이 동기하여 동작하는 것이 가능하고, 샘플 정밀도로 AV동기를 취할 수 있다.
이 AV동기를 위해서, 이 실시형태에서는, 시각정보에 관련된 형태로, 영상데이터의 수직동기정보(Vs)로서, 시스템(그래프)으로부터, V동기 플라그가 부가되어 있다. 시각정보가 샘플 단위로 갱신되므로, 이 V동기 플라그는, 모든 샘플에 대 해 첨부가 되는 것이다. 그리고, V동기 플라그는, 프레임의 선두의 시각 타이밍에서만, 예를 들면 「1」이 되며, 그 외에는 모두 「0」이 되어 있다.
V동기 플라그는, 영상의 프레임과 음성데이터의 샘플을 대응시키는 동기 펄스 정보이다. 예를 들면, 영상정보가 30 프레임/초, 음성데이터의 샘플링 주파수가 48kHz의 경우, 영상정보의 1 프레임당 음성데이터의 샘플 수는, 48000÷30=1600[샘플/프레임]이다. 음성데이터를 패킷단위로 처리하는 경우에, 1 패킷당 샘플 수가, 상술한 바와 같이 예를 들면 1024인 경우에는, 패킷과 프레임과는 일치되고 있지 않다. 그래서, 이 예에서는, V동기 플라그를 이용하여 AV동기를 취하도록 한다.
시스템(그래프)은, 영상정보의 1 프레임당 음성데이터 샘플 수를, 미리 산출해 둔다. 시스템(그래프)은, 음성데이터를 플러그인에 대해서 부여할 때에, 그 음성데이터의 샘플시각정보와 함께, 상기 샘플시각이, 영상프레임의 선두인지 아닌지의 정보로서 상기 V동기 플라그를, 플러그인에 동시에 부여한다.
각 플러그인은, 입력된 음성데이터가 영상정보의 1 프레임의 선두인 것을, V동기 플라그로부터 검출했을 경우에, 내부 유지 파라미터를, 이 영상프레임의 선두에 동기하여 변경함으로써, AV동기 처리를 실현한다.
다만, 전제 조건으로서 시스템(그래프)으로부터의 샘플 단위의 시각정보와 영상프레임의 V동기 플라그가 어떠한 방법에 의해 대응시킬 수 있을지가 필요하다. 그래서, 이 예에서는, 이 실시형태의 신호처리장치에서, 신호처리가 개시된 기점 시각을 영상프레임의 선두라고 정의하고, 시스템(그래프)이 미리 산출되어 있는 영 상정보의 1 프레임당 음성데이터 샘플 수를 이용하여, 기점 시각 이후의 시각정보와 V동기 플라그를 대응시키도록 되어 있다.
도 19에, 이 AV동기를 위한 플러그인에서도 처리의 플로차트를 나타낸다.
우선, 음성데이터 샘플의 플러그인으로의 입력에 동기하여, 상기 플러그인에 시스템(그래프)으로부터 입력되는 시각정보로서의 절대시각 카운트값(t)을 취득한다(스텝 S181). 즉, 시스템으로부터의 샘플 단위의 시각정보를 판독한다. 이때 , 시스템에서는, 시각정보에 부가되어 있는 V동기 플라그도 취득한다.
플러그인에서는, 샘플 단위의 V동기 플라그가 「1」인지에 의해, V동기 플라그가 「진짜」, 즉, 영상프레임의 선두인지를 체크 한다(스텝S182). V동기 플라그가 「진짜」라고 판별했을 때에는, AV동기 처리로서, 이 예에서는, 파라미터의 갱신을 실시한다(스텝 S183). 그리고, 상기 시각(t)에 있어서의 신호처리를 실행한다(스텝 S184).
스텝 S182에서, V동기 플라그가 「진짜」는 아니다 라고 판별했을 때에는, 파라미터를 변경하지 않고 , 상기 시각(t)에 있어서의 신호처리를 실행한다(스텝 S184). 그리고, 다음의 음성데이터 샘플의 플러그인으로의 입력에 동기하여 변경되는 다음의 절대시각 카운트값(t+1)을 취득하고(스텝 S185), 상술한 스텝 S182~184과 동일한 처리 동작을 반복한다(스텝 S186~188). 이하, 순차적으로, 샘플 입력에 동기하여, 이상의 처리를 반복한다.
[동적인 회로구성의 변경처리]
이 실시형태의 신호처리장치에서는, 상술한 바와 같이, 신호처리 중이어도, 사용자로부터의 그래프의 변경 지시에 따라, 그래프 구조를 동적으로 변경할 수 있다. 그리고, 신호처리 중이어도, 재차, 이 실시형태의 경로탐색 알고리즘(노드 스캔 알고리즘)을 실시함으로써, 회로구성의 변경에 대응할 수 있다.
이 기능에 의해, 예를 들면, 실시형태의 신호처리장치에서 처리되어 출력된 음성을 사용자가 들으면서도, 실시형태의 신호처리장치를 새로운 회로구성으로 변경할 수 있다. 이 때문에, 용도로서 라이브 연주 장치 등에, 이 실시형태를 활용할 수 있다고 하는 메리트가 있다.
도 20에, 이 동적인 변경처리의 플로차트를 나타낸다. 이 플로차트의 실행 주체는, 그래프이다.
우선, 시각(t)에서의 신호처리를 실시한다(스텝 S191). 그리고, 신호처리 중이어도, 플러그인 생성 혹은 삭제지시나, 입력포트, 출력포트의 생성 혹은 결선지시 등, 그래프 변경 요구가 있는지의 여부를 판별한다(스텝 S192).
그리고, 스텝 S192에서, 그래프 변경 요구가 있다고 판별했을 때에는, 그래프는, 경로탐색의 재실행을 실시함과 동시에, 그래프의 회로구성의 재구성을 실시한다(스텝 S193). 그리고, 다음의 시각(t+1)에서의 신호처리로 이행한다(스텝 S194). 또, 스텝 S192에서, 그래프 변경 요구가 없다고 판별했을 때에는, 그대로, 다음의 시각(t+1)에서의 신호처리로 이행한다(스텝 S194).
이 스텝 S194 이후는, 스텝 S192~스텝 S193와 같은 처리를 반복한다(스텝 S195~196).
[플러그인에서의 파라미터 설정의 다른 방법]
상술한 바와 같이, 이 실시형태의 신호처리장치에 있어서의 신호처리에 있어서는, 파라미터 속성을 갖게 하는 것이 가능하다. 여기서, 파라미터란, 예를 들면 승산기의 경우에는, 곱셈 계수에 해당하는 것이다.
통상의 미들 웨어에서는, 이 파라미터는, 사용자로부터의 파라미터 설정 함수에 의해 단속적으로 설정 변경하는 구조로 되어 있다. 이 실시형태의 신호처리장치에 있어서도, 상술한 예에서는, 도 21에 나타내는 바와 같이, 종래와 같은 구성이 되어 있다. 즉, 도 6에 나타낸 바와 같이, 플러그인(600)은 파라미터 유지부(604)를 갖추고 있지만, 이 파라미터 유지부(604)에는, 사용자로부터의 파라미터 설정 함수에 의해 단속적으로 설정 변경하는 구조로 되어 있다. 도 21의 예는, 신호처리부(6010)가 게인 컨트롤 앰프이며, 상기 앰프(6010)의 게인이, 파라미터 유지부(604)에 유지되고 있는 파라미터에 의해, 제어되는 것이다.
이 도 21의 구성의 경우에는, 예를 들면 1 샘플 단위로 연속적이고 정확하게 파라미터를 변화시킬 수 없다. 이것은, 음성데이터 샘플의 1 샘플 시간(약 20 마이크로초(秒))에 대해서, 일반적인 0S에서는, 리얼타임성의 확보가 어렵고, 함수 콜의 간격이, 수십 밀리 세컨드로 꽤 커져 버리기 때문이다. 통상의 OS상에서는 리얼타임성을 확보했다고 해도, 수밀리 세컨드~수십 밀리 세컨드의 정밀도가 한계이다. 게다가, 소프트웨어적인 시간의 불균일이 있기 때문에, 샘플 정밀도의 마이크로 세컨드 오더에서, 파라미터 변경함수의 호출 타이밍을 제어할 수 없다.
그래서, 이 실시형태에서는, 이하에 설명하는 바와 같이, 파라미터의 설정방법을 궁리함으로써, 파라미터를 1 샘플 정밀도로 정확하게 변화시킬 수 있도록 한 다. 즉, 이 예에 대해서는, 플러그인 내부에 유지하는 파라미터를, 사용자가 함수 콜로 설정하는 것이 아니라, 플러그인의 입력포트에 할당하여 설정한다고 하는 기능을, 그래프에 설정함으로써, 새로운 파라미터의 설정방법을 실현하는 것이다. 이하, 이 새로운 파라미터의 설정방법을, 파라미터 바인드라고 부른다.
도 22에, 이 파라미터 바인드의 예를 나타낸다. 즉, 플러그인에 새로운 입력포트(1)를 설정하고, 상기 입력포트(1)를 파라미터 유지부(604)에 접속한다. 그리고, 새롭게 설정한 입력포트(1)에 음성데이터 값을 할당한다.
이것에 의해, 플러그인 내부의 파라미터는, 사용자로부터의 설정 함수 콜에 의해 갱신되는 것이 아니라, 입력포트(1)에 입력되는 음성데이터 값에 의해 갱신된다. 음성 데이터 값이, 그대로 파라미터 값이 되어, 샘플 단위로 갱신된다.
이 경우, 파라미터와 음성데이터는 특히 구별이 없다. 이 실시형태에서는, 음성데이터는, 모두 샘플 정밀도로 동기되어 있기 때문에, 파라미터 변경과 음성데이터의 동기성을 유지할 수 있다. 예를 들면, 사용자는, 음성데이터에 동기하는 파라미터 신호를 동시에 생성하여, 소망한 플러그인의 파라미터 유지부에 접속된 입력포트에 입력함으로써, 음성데이터와 샘플 정밀도로 동기하는 파라미터 변경을 실현할 수 있다.
다음에, 그래프에 대한 파라미터 바인드의 등록 순서를 도 23에 나타낸다. 즉, 먼저, 파라미터 바인드를 실시하는 플러그인에, 파라미터 바인드를 위한 입력포트를 추가한다(스텝 S201). 다음에, 지정한 파라미터가 유지되어야 할 파라미터 유지부를, 스텝 S201에서 추가한 입력포트에 접속한다(스텝 S202).
그리고, 추가한 입력포트에, 파라미터로서 기능하는 음성데이터를 입력한다(스텝 S203). 이상으로, 파라미터 바인드의 그래프로의 등록을 종료한다.
다음에, 등록되어 있는 파라미터 바인드의 해제 순서를, 도 24에 나타낸다. 먼저, 소정의 플러그인에 추가한 파라미터 바인드를 위한 입력포트로의 데이터 입력을 정지한다(스텝 S211). 그리고, 데이터 입력을 정지한 입력포트를, 지정한 파라미터가 유지되어야 할 파라미터 유지부로부터 분리한다(스텝 S212). 그 후, 데이터 입력을 정지한 입력포트를 삭제한다(스텝 S213). 이상으로, 등록되어 있던 파라미터 바인드의 그래프로부터의 해제 처리 순서를 종료한다.
또한 파라미터 바인드의 등록 및 해제는, 신호처리 중이어도, 임의의 타이밍에서 행할 수 있다.
[리얼타임 분산처리]
이상 설명한 실시형태의 신호처리장치는, 통상은, 1대의 컴퓨터에 의해 실현되며, 신호처리는, 상기 1대의 컴퓨터상에서 처리된다. 이 처리를, 네트워크를 통해 접속되는 복수대의 컴퓨터로 확장함으로써, 리얼타임에 CPU 부하의 분산처리를 행할 수 있다.
이 분산처리는, 일반적인 컴퓨팅 기술인 분산 오브젝트 기술을 이용함으로써 실현 가능하다. COM/DCOM(Component Object Model/Distributed Component Object Model), CORBA(Common Object Request Broker Architecture)라고 하는 기술이 거기에 해당한다.
이하, 주로 Windows(등록상표) 계의 OS에서 이용되는 COM/DCOM라고 하는 기 술을 이용했을 경우의 예를 나타낸다. 우선, 이 실시형태의 미들 웨어의 플러그인의 오브젝트를, 모두 COM 오브젝트로서 실장한다. 여기서, COM 오브젝트란 오브젝트 지향에 있어서의 컴퍼넌트 모델이며, 위치 투과성을 특징으로 한다. 위치 투과성이란, 마치, 예를 들면 로컬 컴퓨터상에, COM 오브젝트를 생성하는 것처럼, 리모트 컴퓨터상에 COM 오브젝트를 생성할 수 있다고 하는 기능이다.
따라서, 위치 투과성을 이용함으로써, 로컬 컴퓨터상, 리모트 컴퓨터상의 어느 쪽인지를 묻지 않고, 같은 조작으로, 오브젝트의 생성을 행할 수 있다. 이것은 COM 오브젝트인 플러그인의 오브젝트를, 네트워크를 의식하지 않고도, 복수의 컴퓨터상에 통일적으로 생성할 수 있다고 하는 것이다. 플러그인의 생성에 한정하지 않고, 그 외의 조작도 로컬 컴퓨터상, 리모트 컴퓨터상을 불문하고, 통일된 조작성으로 실현할 수 있다.
예를 들면, 로컬 컴퓨터상에, 음성 입출력 플러그인 오브젝트를 배치하고, 리모트 컴퓨터상에, 에코 플러그인 오브젝트를 배치하여, 전체적으로 하나의 회로를 구성할 수도 있다.
도 25에, 리얼타임 분산처리되는 경우의 그래프의 구성 예를 나타낸다. 이 도 25의 예는, 네트워크(3000)를 통해서 로컬 컴퓨터(1000)와 리모트 컴퓨터(2000)가 접속되어 있는 상황에 있어서, 루트 그래프(2500)가 정의되어, 회로가 작성되는 경우이다.
이 도 25를 참조하여, 이 예의 회로작성의 흐름을 설명한다. 사용자는, 로컬 컴퓨터(1000)만으로, 회로를 작성하는 경우와 거의 동일하게 하여, 회로작성 을 실시한다. 리모트 컴퓨터(2000)를 의식하는 것은, 일부뿐이다.
(1) 사용자가, 그래프(2500)의 오브젝트를 작성한다. 이 그래프(2500) 오브젝트는, 로컬 컴퓨터(1000)에 생성된다.
(2) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2501) 오브젝트의 작성을 지시한다.
(3) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2502) 오브젝트의 작성을 지시한다.
(4) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2503) 오브젝트의 작성을 지시한다. 이 경우, 플러그인 생성 함수에, 리모트 컴퓨터(2000)의 식별자를 부여한다.
(5) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2504) 오브젝트의 작성을 지시한다.
(6) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2501)의 출력포트(0)와 플러그인(2502)의 입력포트(0)의 결선을 지시한다.
(7) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2502)의 출력포트(0)와 플러그인(2503)의 입력포트(0)의 결선을 지시한다.
(8) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2503)의 출력포트(0)와 플러그인(2504)의 입력포트(0)의 결선을 지시한다.
(9) 사용자가, 그래프(2500)의 오브젝트에 대해서, 플러그인(2504)의 출력포트(0)와 플러그인(2502)의 입력포트(1)의 결선을 지시한다.
이상으로 회로가 완성이다. 리모트 컴퓨터를 의식하는 부분은 순서(4)만이다. 또한 신호처리의 실행에 관해서도 로컬 컴퓨터(1000)만의 경우와 특별히 차이는 없다.
이상 설명한 실시형태에 의하면, 이하와 같은 효과를 얻을 수 있다.
즉, 상기의 실시형태에 의하면, 소프트웨어 디지털 신호처리에 있어서, 신호처리회로를 다단에 결선해도 처리지연이 증가하지 않는 회로를 작성할 수 있다. 또, 피드백 구조를 포함한 임의의 디지털 신호처리회로를 작성할 수 있다.
또한, 디지털 신호처리회로의 회로구성을 동적으로 변경할 수 있다. 이 경우에, 동적으로 갱신 가능한 회로 요소는,
ㆍ플러그인의 추가ㆍ삭제
ㆍ플러그인간의 결선상태
ㆍ플러그인의 입출력포트의 추가ㆍ삭제
ㆍ플러그인의 파라미터 변경 및 파라미터 바인드
ㆍ신호처리시의 패킷 사이즈ㆍ샘플링 주파수 등, 신호처리에 관련하는 파라미터이다.
또한, 이 실시형태의 신호처리장치의 미들 웨어를 편입함으로써, 회로구성을 동적으로 변경 가능한 제품을 만들 수 있다.
또한, 작성한 신호처리회로를 파일에 보존함으로써, 다음에, 신호처리회로를 복원할 수 있다. 게다가 그 파일을 교환함으로써, 회로의 교환이나 재이용을 용이하게 행할 수 있다.
또한, 신호처리회로 안에 피드백 루프를 포함하는 회로구성을 포함하고 있어도, 신호처리함수의 호출 회수를 필요 최소한으로 억제할 수 있다. 그 결과, 리얼타임 신호처리실행에 필요한 CPU 부하를 경감할 수 있다.
또한, 회로의 파라미터의 갱신이나 음성데이터와의 동기성을 샘플 정밀도로 제어할 수 있다. 게다가 음성데이터를 이용해 파라미터 값을 갱신할 수 있다(파라미터 바인드기능).
또한, 네트워크를 사용하여, 리얼타임에 분산처리를 행할 수 있다. 네트워크상에 존재하는 복수의 회로를 리얼타임에 동기하여 동작시킬 수 있다.
이 발명에 의하면, 신호처리모듈을 다단에 결선하여도 신호처리지연이 증가하지 않는 신호처리장치를 실현할 수 있다. 또, 폐루프를 포함한 신호처리를, 소프트웨어처리에 의해 실현할 수 있다. 또, 신호처리 동작중이어도, 회로구성을 동적으로 변경할 수 있다.

Claims (7)

  1. 복수의 신호처리요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치에 있어서,
    상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와,
    사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
    상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리모듈의 입출력의 가상적인 접속형태를 설정하는 신호처리모듈간 접속수단과,
    상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와,
    초기경로탐색과 루프탐색을 실행하여, 상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각 신호처리순서를 결정하는 신호처리순서결정수단과,
    상기 신호처리순서결정수단에서 결정된 신호처리순서대로, 상기 신호처리모듈의 각각을 순차적으로 실행시켜서 상기 신호처리를 실행하는 신호처리실행수단을 갖추고,
    상기 신호처리순서결정수단에 있어서는,
    상기 초기경로탐색에 의해, 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 탐색하고,
    상기 루프탐색에 의해, 상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈로 이루어지는 회로구성에 있어서, 폐루프를 구성하는 상기 신호처리모듈을 탐색하고,
    상기 루프탐색에 의해 상기 폐루프를 구성하는 상기 신호처리모듈이 검출되는 동시에 상기 초기경로탐색에서, 상기 폐루프의 선두의 상기 신호처리모듈의 처리순위와 최후미의 상기 신호처리모듈의 처리순위와의 사이의 처리순위에 상기 폐루프를 구성하지 않는 상기 신호처리모듈의 처리순위를, 상기 폐루프의 선두의 상기 신호처리모듈보다도 앞의 처리순위가 되도록, 상기 초기경로탐색에 의해 정한 상기 신호처리순서를, 변경하도록 구성된 것을 특징으로 하는 신호처리장치.
  2. 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치이며,
    상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와,
    사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
    상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리모듈의 입출력의 가상적인 접속상태를 설정하는 신호처리모듈간 접속수단과,
    상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와,
    상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 결정하는 신호처리순서결정수단과,
    상기 신호처리순서결정수단에서 결정된 신호처리순서대로, 상기 신호처리모듈의 각각을 순차적으로 실행시켜 상기 신호처리를 실행하는 신호처리실행수단을 갖추며,
    상기 신호처리실행수단에서 상기 신호처리를 실행중에, 사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및/또는 상기 사용자로부터의 상기 복수개의 신호처리모듈의 입출력의 접속지시에 의거하는 회로구성의 변경 요구가 있었을 때에, 상기 신호처리순서결정수단을 실행하여 새로운 신호처리순서를 탐색하고, 상기 신호처리실행수단은, 상기 새로운 신호처리순서에서 상기 신호처리를 실행하도록 구성된 것을 특징으로 하는 신호처리장치.
  3. 제 1항에 있어서,
    상기 신호처리실행수단에서 상기 신호처리를 실행중에, 사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및/또는 상기 사용자로부터의 상기 복수개의 신호처리모듈의 입출력의 접속지시에 의거하는 상기 복수의 회로의 구성 변경 요구가 있었을 때에, 상기 신호처리순서결정수단을 실행하여 새로운 신호처리순서를 탐 색하고, 상기 신호처리실행수단은, 상기 새로운 신호처리순서대로 상기 신호처리를 실행하도록 구성된 것을 특징으로 하는 신호처리장치.
  4. 제 1항 또는 제 3항에 있어서,
    상기 폐루프를 구성하는 상기 신호처리모듈에서는, 대상이 되는 신호의 1 샘플 단위에서 신호처리하고,
    상기 루프를 구성하지 않는 상기 신호처리모듈에서는, 상기 신호의 샘플의 복수개로 이루어지는 블록 단위에서 신호처리 하도록 구성된 것을 특징으로 하는 신호처리장치.
  5. 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치이며,
    상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와,
    사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
    상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리모듈의 입출력의 가상적인 접속상태를 설정하는 신호처리모듈간 접속수단과,
    상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와,
    상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 결정하는 신호처리순서결정수단과,
    상기 신호처리순서결정수단에서 결정된 신호처리순서대로, 상기 신호처리모듈을 순차적으로 실행시켜 상기 신호처리를 실행하는 신호처리실행수단을 갖추며,
    상기 신호처리모듈은, 사용자에 의해 설정되는 신호처리용 파라미터를 유지하는 파라미터 유지 수단을 갖추는 동시에,
    상기 파라미터 유지 수단으로부터의 상기 신호처리용 파라미터의 독출은, 처리 대상 신호의 샘플에 동기시키는 것을 특징으로 하는 신호처리장치.
  6. 복수의 신호처리 단위요소로 이루어지는 신호처리를 소프트웨어 처리에 의해 실시하는 신호처리장치이며,
    상기 신호처리 단위요소를 소프트웨어 처리에 의해 각각 실시하는 신호처리모듈의 복수개와,
    사용자로부터의 상기 신호처리모듈의 생성 또는 삭제지시 및 상기 사용자로부터의 상기 신호처리모듈의 입출력의 접속지시를 접수하는 지시입력 접수수단과,
    상기 지시입력 접수수단에서 접수된 상기 사용자로부터의 지시에 따라 복수개의 상기 신호처리 모듈의 입출력의 가상적인 접속상태를 설정하는 신호처리모듈간 접속수단과, 
    상기 설정된 상기 복수개의 신호처리모듈의 입출력의 가상적인 접속상태를 기억하여 관리하는 회로구성정보 격납관리부와,
    상기 회로구성정보 격납관리부에 격납되어 있는 상기 복수개의 신호처리모듈의 각각의 신호처리순서를 결정하는 신호처리순서결정수단과,
    상기 신호처리순서결정수단에서 결정된 신호처리순서대로, 상기 신호처리모듈을 순차적으로 실행시켜 상기 신호처리를 실행하는 신호처리실행수단을 갖추며,
    신호처리용 파라미터가 신호 입력으로서 상기 신호처리모듈에 공급하는 수단을 갖추는 동시에, 상기 신호처리모듈에는, 상기 신호처리용 파라미터는, 처리 대상의 신호샘플에 동기하여 입력되도록 구성된 것을 특징으로 하는 신호처리장치.
  7. 제 1항 ~ 제 6항의 어느 한 항에 있어서,
    네트워크를 통해 접속되는 복수개의 신호처리부로 이루어지며,
    상기 복수의 신호처리모듈은, 상기 복수개의 신호처리부에 분산되어서 설치 되도록 구성된 것을 특징으로 하는 신호처리장치.
KR1020050046374A 2004-06-09 2005-05-31 신호처리장치 KR101126255B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004170692A JP4296421B2 (ja) 2004-06-09 2004-06-09 信号処理装置
JPJP-P-2004-00170692 2004-06-09

Publications (2)

Publication Number Publication Date
KR20060046338A true KR20060046338A (ko) 2006-05-17
KR101126255B1 KR101126255B1 (ko) 2012-06-12

Family

ID=34981373

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050046374A KR101126255B1 (ko) 2004-06-09 2005-05-31 신호처리장치

Country Status (5)

Country Link
US (1) US7752189B2 (ko)
EP (1) EP1605350A3 (ko)
JP (1) JP4296421B2 (ko)
KR (1) KR101126255B1 (ko)
CN (1) CN100383732C (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4273973B2 (ja) * 2004-01-15 2009-06-03 ソニー株式会社 情報通信システム、送信装置及び送信方法、並びにコンピュータ・プログラム
JP4348546B2 (ja) 2005-01-20 2009-10-21 ソニー株式会社 信号処理装置、信号処理プログラムおよび記録媒体
JP4622611B2 (ja) * 2005-03-24 2011-02-02 ソニー株式会社 信号処理装置
US7870562B1 (en) * 2005-06-24 2011-01-11 Apple Inc. Media rendering hierarchy
JP2008097498A (ja) * 2006-10-16 2008-04-24 Olympus Corp プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法
US20080218470A1 (en) * 2007-03-09 2008-09-11 Citizen Electronics Co., Ltd. Display apparatus
TWI334569B (en) * 2007-05-15 2010-12-11 Ind Tech Res Inst System and method of dual-screen interactive digital television
JP2010033555A (ja) * 2008-06-30 2010-02-12 Olympus Corp コントロール・ユニット、分散処理システム及び分散処理方法
US8161074B2 (en) 2009-09-15 2012-04-17 Oracle International Corporation Operationally complete hierarchical repository in a relational database
CN102752533B (zh) * 2011-11-15 2017-09-12 新奥特(北京)视频技术有限公司 一种基于图方式的特效节点的编辑方法
US20140282019A1 (en) * 2013-03-14 2014-09-18 thePlatform Media, Inc. Systems And Methods For Generating Software Components
US9413854B1 (en) * 2013-07-15 2016-08-09 Amazon Technologies, Inc. Network-accessible signal processing service
US9421382B2 (en) 2013-12-13 2016-08-23 Medtronic, Inc. Method and apparatus for monitoring of patient medication compliance
US10133827B2 (en) 2015-05-12 2018-11-20 Oracle International Corporation Automatic generation of multi-source breadth-first search from high-level graph language
US10614126B2 (en) 2015-05-21 2020-04-07 Oracle International Corporation Textual query editor for graph databases that performs semantic analysis using extracted information
US10127025B2 (en) 2015-07-22 2018-11-13 Oracle International Corporation Optimization techniques for high-level graph language compilers
US9575736B2 (en) * 2015-07-22 2017-02-21 Oracle International Corporation Advanced interactive command-line front-end for graph analysis systems
US10810257B2 (en) 2015-08-27 2020-10-20 Oracle International Corporation Fast processing of path-finding queries in large graph databases
US9971570B2 (en) 2015-12-15 2018-05-15 Oracle International Corporation Automated generation of memory consumption aware code
US10540398B2 (en) 2017-04-24 2020-01-21 Oracle International Corporation Multi-source breadth-first search (MS-BFS) technique and graph processing system that applies it
US10585945B2 (en) 2017-08-01 2020-03-10 Oracle International Corporation Methods of graph-type specialization and optimization in graph algorithm DSL compilation
CA3089911A1 (en) * 2018-01-29 2019-08-01 Rubikloud Technologies Inc. Method and system for flexible pipeline generation
US10795672B2 (en) 2018-10-31 2020-10-06 Oracle International Corporation Automatic generation of multi-source breadth-first search from high-level graph language for distributed graph processing systems
US11327802B2 (en) * 2019-07-31 2022-05-10 Microsoft Technology Licensing, Llc System and method for exporting logical object metadata

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4796179A (en) * 1986-08-20 1989-01-03 Integrated Systems, Inc. Multirate real time control system code generator
US5331111A (en) * 1992-10-27 1994-07-19 Korg, Inc. Sound model generator and synthesizer with graphical programming engine
US5999906A (en) * 1997-09-24 1999-12-07 Sony Corporation Sample accurate audio state update
US6370682B1 (en) 1999-09-15 2002-04-09 Siemens Atkiengesellschaft System and method for developing reusable flexible and platform independent software using components
US6829290B1 (en) * 1999-09-28 2004-12-07 Texas Instruments Incorporated Wireless communications system with combining of multiple paths selected from correlation to the primary synchronization channel
DE60140878D1 (de) 2001-11-29 2010-02-04 Sony Deutschland Gmbh System und Verfahren zur Steuerung der Anpassung von adaptiven verteilten Multimedia-Anwendungen
KR100966925B1 (ko) 2002-07-31 2010-06-29 톰슨 라이센싱 패킷 신호 프로세싱 아키텍쳐

Also Published As

Publication number Publication date
US7752189B2 (en) 2010-07-06
JP2005352618A (ja) 2005-12-22
CN100383732C (zh) 2008-04-23
CN1707431A (zh) 2005-12-14
JP4296421B2 (ja) 2009-07-15
KR101126255B1 (ko) 2012-06-12
US20050278451A1 (en) 2005-12-15
EP1605350A3 (en) 2007-05-16
EP1605350A2 (en) 2005-12-14

Similar Documents

Publication Publication Date Title
KR101126255B1 (ko) 신호처리장치
KR101260295B1 (ko) 신호처리장치
JP2710896B2 (ja) 通信オートマトンセットの開発を支援する方法
US20160239477A1 (en) Persisting the state of visual control elements in uniform resource locator (url)-generated web pages
KR101182262B1 (ko) 신호처리장치, 신호처리방법 및 기록 매체
US10802806B1 (en) Generating vectorized control flow using reconverging control flow graphs
Lauwereins et al. Geometric parallelism and cyclo-static data flow in GRAPE-II
Spinellis et al. Extending unix pipelines to dags
US20070006121A1 (en) Development activity recipe
CN113485686B (zh) 信息系统程序的生成方法、装置、电子设备及存储介质
Limet et al. Coherence and performance for interactive scientific visualization applications
US20020143511A1 (en) Method and computer program product for system design support
WO2023273622A1 (zh) 输出特效的运行数据的方法及装置
US7581214B2 (en) Live set transmission in pipelining applications
JP2815073B2 (ja) 並行プログラムに対する試験手順生成方法
WO2023063365A1 (ja) 設計実行装置、設計実行システム、および設計実行方法
Khosravi et al. Using coordinated actors to model families of distributed systems
WO2023125163A1 (zh) 一种图像特效处理方法、装置、设备及介质
JP2990084B2 (ja) 演算装置合成方法
US8635055B1 (en) Composite signal configuration element for modeling environments
JP2023059237A (ja) 設計実行装置、設計実行システム、および設計実行方法
Peterson et al. aether: Distributed system emulation in Common Lisp
CN118245043A (zh) 一种可视化编程系统、方法、介质及设备
KR20220014230A (ko) 인공지능 기반 워크플로우 프로세스 시스템 및 장치
CN115114554A (zh) 一种拖拽组件的方法、装置、终端设备以及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee