KR20070031307A - 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 - Google Patents

신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 Download PDF

Info

Publication number
KR20070031307A
KR20070031307A KR1020067024668A KR20067024668A KR20070031307A KR 20070031307 A KR20070031307 A KR 20070031307A KR 1020067024668 A KR1020067024668 A KR 1020067024668A KR 20067024668 A KR20067024668 A KR 20067024668A KR 20070031307 A KR20070031307 A KR 20070031307A
Authority
KR
South Korea
Prior art keywords
task
tasks
processing
execution
time
Prior art date
Application number
KR1020067024668A
Other languages
English (en)
Inventor
마르코 제이 지 베쿠이즈
Original Assignee
코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리즈케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리즈케 필립스 일렉트로닉스 엔.브이.
Priority to KR1020067024668A priority Critical patent/KR20070031307A/ko
Publication of KR20070031307A publication Critical patent/KR20070031307A/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/46Multiprogramming arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

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

Abstract

신호 스트림 처리 작업은, 각각 스트림으로부터 데이터 청크를 처리하는 동작의 반복 실행에 의해 수행되는 태스크(100)를 포함한다. 각 작업은 서로와의 스트림 통신에 있어서 복수의 태스크(100)를 포함한다. 신호 스트림의 통신을 위해 상호 연결된 복수의 처리 유닛(10)이 태스크를 실행한다. 태스크의 실행을 시작하기 위한 기회가 고작해야 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에 있어서 작업의 각 태스크가 실행되는 경우, 요구된 최소 스트림 처리 속도를 지원하도록 작업에 대해 요구되는 실행 파라미터를 결정하기 위해서, 개별적으로 각 작업에 대하여 예비 계산이 수행된다. 실행 시간에, 작업의 조합이 실행을 위해 선택된다. 각 특정 처리 유닛에 대하여, 특정 처리 유닛에 할당된 태스크에 대한 최악 실행 시간의 합계가 특정 처리 유닛에 할당된 소정의 태스크에 대해 정의된 소정의 주기 시간(T)을 초과하지 검사하여, 처리 유닛의 각 하나에 선택된 작업의 조합의 태스크의 그룹이 할당된다. 처리 유닛은 동시에 선택된 작업의 조합을 실행하고, 각 처리 유닛은 그 처리 유닛에 할당된 태스크의 그룹을 시간-다중화 실행한다.

Description

신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치 및 시스템, 실행 파라미터를 계산하는 방법 및 장치, 컴퓨터 프로그램 제품{SIGNAL PROCESSING APPARATUS}
본 발명은 신호 스트림을 처리하기 위한 장치, 이러한 장치를 동작시키는 방법 및 이러한 장치를 제조하는 방법에 관한 것이다.
텔레비전/인터넷 액세스 장치, 그래픽 프로세서, 카메라, 오디오 장치 등과 같은 미디어 액세스를 위한 장치에 있어서 신호 스트림 처리가 요구된다. 현대의 장치는 더욱 더 막대한 수의 스트림 처리 계산이 수행되는 것을 필요로 한다. 스트림 처리는, (적어도 원칙적으로) 신호 유닛의 도착과 동시에 이러한 신호 유닛의 무한 스트림의 연속하는 신호 유닛을 처리하는 것을 수반한다.
이러한 타입의 장치에 있어서, 스트림 처리 계산의 구현은 바람직하게는 다수의 요구를 충족시켜야 한다. 즉, 스트림 처리 계산의 구현은, 실시간 신호 스트림 처리 제약을 만족시켜야 하고, 작업의 유연한(flexible) 조합을 실행하는 것이 가능하여야 하고, 초당 막대한 양의 계산을 실행할 수 있어야 한다. 실시간 스트림 처리 요건은 예를 들어 오디오 렌더링에서 힉-업(hick-up), 프로즌(frozen) 디스플레이 이미지, 또는 버퍼 오버플로우로 인해 폐기된 입력 오디오나 비디오 데이터를 방지하는 것을 필요로 한다. 항상 실시간 제약을 만족시키는, 동시에 실행되어야 하는 신호 처리 작업의 임의의 조합을 사용자가 실행 시간에 선택할 수 있어야 하기 때문에, 유연성 요건이 요구된다. 통상적으로, 막대한 양의 계산의 요건은, 신호 처리 작업의 일부인 상이한 태스크를 수행하며 병렬 동작하는 복수의 프로세서의 시스템에서 모든 요건이 실현되어야 하는 것을 내포한다.
이러한 유연한 분산 시스템에 있어서, 실시간 제약을 충족시키는 것을 보증하기는 극도로 어려울 수 있다. 데이터 생성에 필요한 시간은 실제 계산 시간뿐만 아니라, 프로세서가, 데이터 입력을 대기하는데 소비한 대기 시간, 출력 데이터를 기록하기 위해 버퍼 스페이스가 이용가능하게 되는 것을 대기하는데 소비한 대기 시간, 프로세서가 이용가능할 때까지 대기하는데 소비한 대기 시간에 종속한다. 예측할 수 없는 대기는 실시간 성능을 예측할 수 없게 할 수 있다. 프로세서가 서로 데이터를 생성하고/하거나 리소스를 자유롭게 하는 것을 진행하기 위해 대기하는 경우에, 대기는 심지어 교착상태(deadlock)를 야기할 수 있다.
대기가 정상 상황 하에서 실시간 성능을 방해하는 것처럼 보이지 않는 경우에도, 실시간 제약을 충족시키는 것에 대한 실패는 특별 상황 하에서만 표면화될 수도 있는데, 이 때 신호 데이터는 몇몇 계산 태스크로 하여금 스트림 청크(chunk of stream)에 대해 보통과는 달리 (그러나, 오류 없이) 짧은 시간 또는 긴 시간에 완료되도록 한다. 물론, 사용자로 하여금 장치가 항상 작업의 조합을 지원할 수 있 는지 여부를 시험하도록 내버려둘 수도 있다. 그러나, 이는, 나중에 비디오 신호의 일부가 기록되지 않은 것을, 또는 시스템이 예측할 수 없는 때에 고장나는 것을 이용자가 발견해야 할 수도 있는 결과를 가질 수도 있다. 몇몇 시스템에서 소비자가 이러한 종류의 성능을 용인하는 것을 강요했음에도 불구하고, 물론 이는 매우 불만족스럽다.
동기식 데이터 흐름(SDF)(Synchronous Data Flow) 그래프로 지칭되는 이론적 프레임워크의 이용은 개별 작업에 대하여 이러한 문제점에 대한 해결책을 제공하였다. SDF 그래프 이면의 이론은, 실시간 제약 또는 다른 처리 요건이, 스트림-처리 작업의 태스크가 복수의 프로세서에 걸쳐 분산 구현되는 때에 모든 상황 하에서 만족되는 것이 보증될 수 있는지 여부를 미리 계산하는 것을 가능하게 한다. SDF 그래프 이론의 기본 접근법은, 모든 태스크를 병렬 실행하는 이론적 프로세서의 세트에 대하여 실행 시간이 계산된다는 것이다. SDF 그래프 이론은 소정의 조건 하에서 이러한 이론적 프로세서의 세트에 대하여 계산되는 처리 속도(throughput speed)(스트림의 연속하는 부분의 생성 사이에 필요한 시간)가 항상 태스크의 실제 구현의 처리 속도보다 느리다는 증거를 제공한다. 그에 따라, 태스크의 조합이 이론적 프로세서의 세트에 대하여 실시간으로 작업되는 것이 입증되는 경우, 실제 구현에 대하여 실시간 성능이 보증될 수 있다.
SDF 그래프는 실행되어야 하는 작업을 태스크로 분리함으로써 작성된다. 태스크는 SDF 그래프 내의 노드에 대응한다. 통상적으로, 다른 태스크로부터 또는 다른 태스크로 입력 데이터의 하나 또는 그 이상의 스트림 청크를 입력 및/또는 출력 하는 동작을 반복적으로 수행함으로써, 각 태스크가 수행된다. SDF 그래프의 노드들 사이의 에지는 태스크들 사이의 스트림의 통신을 나타낸다. 이론적 프로세서의 세트에 있어서, 각 태스크의 동작은 이들 프로세서 중 각 하나에 의해 실행된다. 이론적 프로세서는 동작의 실행을 시작하기 전에 충분한 데이터에 대해 대기한다. SDF 모델에 있어서, 각 스트림은 "토큰(tokens)"의 연속으로 이루어지는 것으로 가정되는데, 여기서 토큰은 각각 스트림으로부터의 각 데이터 청크에 대응한다. 특정 수의 토큰이 그 입력에서 이용가능한 경우, 프로세서는, 즉각 처리, 그 입력으로부터 토큰의 입력(제거) 및 그 출력에서 토큰을 생성하기 전에 소정의 시간 간격을 취하는 것을 시작하는 것으로 가정된다. 이 이론적 모델에 대하여, 토큰이 출력되는 시점이 계산될 수 있다.
이들 계산된 이론적 시점을 실제 프로세서의 세트에 대한 최악(worst case) 시점으로 변환할 수 있도록, 먼저 이론적 프로세서에 의해 요구되는 소정의 시간 간격의 지속 시간이 실제 프로세서에 의해 요구되는 최악 시간 간격과 같게(또는 보다 크게) 선택되어야 한다.
두번째로, 이론적 모델은 실제 프로세서의 다수의 제약을 "인식하게 되어야 한다". 예를 들어, 실제, 이전의 토큰에 대한 동작이 처리 중인 경우에 프로세서는 동작의 실행을 시작할 수 없다. 이 제약은 SDF 그래프에서 노드로부터 자신으로 "자기-에지(self-edge)"를 추가함으로써 표현될 수 있다. 그 노드에 대응하는 프로세서는, 실행을 시작하기 전에 이러한 자기-에지로부터 토큰을 요구하도록, 또한 실행의 종료시 토큰을 출력하도록 모델링된다. 물론, 각 실행 중에, 프로세서의 정 기 입력으로부터의 토큰도 처리된다. 자기-에지는 하나의 토큰을 포함하도록 초기화된다. 이와 같이, 이론적 프로세서의 세트에, 하나의 토큰에 대한 태스크의 실행의 시작이 이전의 토큰에 대한 실행의 완료까지 대기해야 하는 실제 특성이 부여된다. 유사하게, SDF 그래프는 버퍼 용량으로 인한 실제 제약을 인식하게 될 수 있는데, 이는 출력 버퍼에 이용가능한 스페이스가 없는 경우에 프로세서로 하여금 대기하도록 할 수도 있다.
실제 프로세서의 다른 제약은 종종 각 프로세서가 통상적으로 시간-다중화 방식으로 복수의 상이한 태스크의 동작을 실행한다는 사실에 기인한다. 이는, 실제 동작의 실행의 시작이 토큰의 이용가능성 뿐만 아니라, 동일한 프로세서에 의해 실행되는 다른 태스크의 동작의 완료에 대해 대기해야 한다는 것을 의미한다. 소정의 조건 하에서, 이 제약은 SDF 그래프에 표현될 수 있다. 특히, 다중화 태스크가 실행되는 소정의 순서가 있는 경우, 이는 소정의 순서에 따라 하나의 다중화 태스크로부터 다음의 다중화 태스크까지 SDF 그래프에 에지의 루프를 추가함으로써, 또한 이 루프의 제1 에지 상에 하나의 최초 토큰(initial token)을 추가함으로써 표현될 수 있다. 이와 같이, 이론적 프로세서의 세트에, 루프 내의 각 태스크의 실행의 시작은 이전의 태스크의 완료에 대해 대기한다는 실제 특성이 부여된다.
SDF 그래프 모델로 하여금 실제 구현의 제약을 알아채도록 하는 이러한 방식은 모든 가능한 제약에 대해 적용가능하지 않다는 것이 주목되어야 한다. 예를 들어, 시간-다중화 태스크가 프로세서에 의해 실행되는 순서가 미리 결정되지 않은 경우, 타이밍에 대한 결과가 SDF 그래프에 표현될 수 없다. 따라서, 예를 들어, 특 정 태스크를 시작하기 위한 토큰이 불충분한 경우에 프로세서가 특정 태스크를 스킵하도록(다음의 태스크로 진행하도록) 구성되면, SDF 그래프에 그 결과가 표현될 수 없다. 실제, 이는, 이 경우에 실시간 처리를 보증하는 것이 가능하지 않다는 것을 의미한다. 그 결과, 실시간 보증은 비교적 고비용으로 이루어지고, 단지 소정의 구현만이 이용될 수 있다. 일반적으로, SDF 그래프 이론에 적합하게 되기 위해서, 그 구현은 "일률성(또는 단조성)(monotonicity) 조건"을 만족시켜야 하고, 태스크의 보다 신속한 실행은 소정의 다른 태스크의 더 늦은 실행을 결코 야기해서는 안 된다고 진술될 수 있다.
또한, SDF 그래프 이론을 복수의 작업의 유연한 조합의 병렬 실행에 대해 적용하는 것은 어렵다는 것이 주목되어야 한다. 원칙적으로, 이는 동일한 SDF 그래프에 포함될 병렬 실행되는 모든 상이한 작업의 태스크를 필요로 한다. 이는, 서로의 타이밍에 대해 태스크의 상호 영향을 표현하는 것을 요구한다. 그러나, 상이한 작업의 입력 및/또는 출력 데이터 전송율(data rate)이 동기화되지 않은 경우, 이와 같이 실시간 보증을 제공하는 것은 불가능하게 된다. 더욱이, 병렬로 실행되어야 하는 작업의 세트로/로부터 작업이 추가 또는 제거되는 때마다 처리 시간(throughput times)의 신규 계산을 수행하는 것은 상당한 부하를 제공한다.
그 중에서도 특히, 본 발명의 목적은, 부하 없이 실행 시간에 적용될 수 있는 SDF 그래프 이론 기술을 이용하여 실시간 보증을 제공하는 것이다.
그 중에서도 특히, 본 발명의 목적은, 작업의 유연한 조합이 프로세서의 세트로 실행되어야 하는 경우, SDF 그래프 이론 기술을 이용하여 실시간 보증을 제공하는데 요구되는 계산량을 감소시키는 것이다.
그 중에서도 특히, 본 발명의 목적은, 비동기화된 작업의 유연한 조합이 프로세서의 세트로 실행되어야 하는 경우에 실시간 보증을 제공하는 것이다.
그 중에서도 특히, 본 발명의 목적은, 불충분한 입력 데이터가 이전의 태스크에 대하여 이용가능한 경우에 라운드 로빈 시퀀스에서 다음의 태스크로 진행하는, 라운드 로빈에 기초하여 프로세서가 복수의 태스크를 실행하는 멀티프로세서 회로에서 실시간 보증을 제공하는 것이 가능하도록 하는 것이다.
그 중에서도 특히, 본 발명의 목적은, 보다 적은 리소스를 소모하면서, SDF 그래프 이론 기술을 이용하여 실시간 보증을 제공하는 것이다.
본 발명은 청구범위 제 1 항에 따른 장치 및 청구범위 제 4 항에 따른 방법을 제공한다. 본 발명에 따르면, 동시에 실행되는 복수의 스트림 처리 작업에 대한 실시간 처리는 2-단계 프로세스를 이용함으로써 보증된다. 제 1 단계에 있어서, 개별 작업은 분리하여 고려되고, 예를 들어 태스크들 사이의 스트림으로부터 데이터를 버퍼링하기 위한 버퍼 크기와 같은 이들 작업에 대한 실행 파라미터는, 태스크의 실행을 시작하기 위한 기회가 고작해야 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 가정한 환경(context)에 대하여 선택된다. 바람직하게는, 요구된 실시간 요건에 따라 작업이 실행될 수 있는지 여부, 즉 최대 특정 지연으로 연속하는 데이터 청크를 생성하는지 여부가 또한 검사된다. 제 1 단계에 있어서, 스트림 처리 작업의 조합이 동시에 실행되어야 한다고 알려질 필요는 없다.
제 2 단계에 있어서, 동시에 실행되는 처리 작업의 조합이 고려된다. 이 단계에서, 복수의 처리 유닛의 각각에는 작업의 선택된 조합으로부터의 태스크의 그룹이 할당된다. 할당 중에, 각 특정 처리 유닛에 대하여, 특정 처리 유닛에 할당된 태스크에 대한 최악 실행 시간(worst case execution times)의 합계가 특정 처리 유닛에 할당된 소정의 태스크에 대하여 정의된 소정의 주기 시간(cycle time)(T)을 초과하지 여부가 검사된다. 합계는, 태스크에 대하여 처리 유닛에 의해 이용되는 스케줄링 알고리즘이 주어지면(예를 들어, 라운드 로빈 스케줄링(Round Robin scheduling)), 실행할 연속하는 기회들 사이의 최대 가능한 지연에 최악 실행 시간이 어떻게 영향을 미치는지를 반영한다. 마지막으로, 작업의 선택된 조합이 동시에 실행되는데, 이 때 각 처리 유닛에 대한 태스크 주기의 시간-다중화 실행이 이루어진다. 통상적으로, 태스크가 실행될 수 있을 때까지 처리 유닛이 대기하는 것이 요구되지는 않는다. 실시간 성능을 보증하기 위한 본 발명에 따른 프로세스가 이용되는 경우, 입력 및/또는 출력 버퍼 스페이스의 부족으로 인해 태스크가 진행될 수 없다면 처리 유닛은 다음의 태스크로 스킵할 수도 있다. 특히, 이는 서로 비동기화된 데이터 스트림을 처리하는 상이한 작업의 성능을 용이하게 하는 이점이 있다.
주기 시간(T)은 모든 태스크에 대해 동일하게 선택되는 것이 바람직하다. 이는 제2 단계에서 동작을 단순화한다. 그러나, 본 발명의 제2 실시예에 따르면, 선택된 태스크의 주기 시간은, 실시간 요건이 충족될 수 없는 때에 조정된다. 특정 태스크에 대한 주기 시간을 감소시킴으로써, 보다 적은 태스크가 특정 태스크와 동일한 처리 장치에서 효과적으로 실행되는 것을 허용하고, 그에 따라 성능을 향상시키게 된다. 주기 시간의 조정은, 제 1 단계에서, 즉 병렬로 실행되어야 하는 태스크의 조합이 알려지지 않을 수도 있는 경우에, 가능한 실시간 구현을 검색하는 것을 가능하게 한다.
가정한 환경에서 필요한 최소 버퍼 크기는 SDF 그래프 기술을 이용하여 계산될 수도 있다. 일실시예에 있어서, 실제 태스크를 위한 노드의 앞에 프로세스의 SDF 그래프에 대한 가상 노드를 추가함으로써, 버퍼 크기가 계산된다. 이들 가상 노드의 최악 실행 시간은, 태스크의 주기가 실행되는 때에 처리 유닛이 태스크에 도달하는 때까지의 대기로 인한 최악 지연을 나타내도록 설정된다. 다음에, 데이터 스트림을 생성하는 하나의 노드로부터 데이터 스트림을 소모하는 또다른 노드까지 SDF 그래프를 통하는 모든 경로를 고려하고, 각 경로를 따르는 노드의 최악 실행 시간의 합계를 결정함으로써, 버퍼 크기가 결정된다. 이들 합계 중 최고는 버퍼 크기를 결정하는데 이용되는데, 이는 실시간 처리 요건에 의해 결정되는 바와 같이 연속하는 토큰들 사이의 최대 허용가능한 시간으로 합계 중 최고를 제산함으로써 결정된다.
본 발명의 이들 및 다른 목적과 바람직한 측면은 실시예들의 비-제한적 예들을 예시하는 후속하는 도면을 사용하여 보다 자세히 설명될 것이다.
도 1은 멀티프로세서 회로의 예를 도시한 도면.
도 1a 내지 도 1c는 단순한 작업의 SDF 그래프를 도시한 도면.
도 2는 실시간 성능을 보증하기 위한 프로세스의 흐름도.
도 3은 실시간 성능을 보증하기 위한 2-단계 프로세스의 흐름도.
도 4는 실시간 성능을 보증하기 위한 2-단계 프로세스에서 소정의 단계의 흐름도.
도 5는 단순한 작업의 복잡한 SDF 그래프를 도시한 도면.
도 6은 본 발명을 구현하기 위한 통상적인 시스템을 도시한 도면.
도 1은 멀티프로세서 회로의 예를 도시한 도면이다. 회로는 상호접속 회로(12)를 통해 상호접속된 복수의 처리 유닛(10)을 포함한다. 단지 3개의 처리 유닛(10)만이 도시되었지만, 보다 많은 또는 보다 적은 수의 처리 유닛이 제공될 수도 있다는 것이 이해되어야 한다. 각 처리 유닛은, 프로세서(14), 명령어 메모리(15), 버퍼 메모리(16) 및 상호접속 인터페이스(17)를 포함한다. 비록 도시되어 있지는 않지만, 처리 유닛(10)이, 데이터 메모리, 캐시 메모리 등과 같은 다른 구성요소를 포함할 수도 있다는 것이 이해되어야 한다. 각 처리 유닛에 있어서, 프로세서(14)는, 명령어 메모리(15)에, 또한 버퍼 메모리(16) 및 상호접속 인터페이스(17)를 통해 상호접속 회로(12)에 연결된다. 상호접속 회로(12)는 예를 들어 처리 유닛들(10) 사이에 데이터를 전송하기 위한 네트워크 또는 버스 등을 포함한다.
동작에 있어서, 멀티프로세서 회로는 병렬로 복수의 신호 처리 작업을 실행 할 수 있다. 신호 처리 작업은 각각 복수의 태스크를 포함하는데, 작업의 상이한 태스크는 상이한 처리 유닛(10)에 의해 실행될 수도 있다. 신호 처리 애플리케이션의 일례는, 2개의 MPEG 스트림의 MPEG 복호화 및 스트림의 비디오 부분으로부터의 데이터의 믹싱을 포함하는 애플리케이션이다. 이러한 애플리케이션은 2번의 MPEG 비디오 복호화 작업, 오디오 복호화 작업, 비디오 믹싱 작업 및 콘트라스트 보정 작업과 같이 작업으로 분할될 수 있다. 다음에, 각 작업은 하나 또는 그 이상의 반복적으로 실행되는 작업을 포함한다. MPEG 복호화 작업은 예를 들어 가변 길이 복호화 태스크, 코사인 블록 변환 태스크 등을 포함한다.
작업의 상이한 태스크는 상이한 처리 유닛(10)에 의해 병렬로 실행된다. 이는 예를 들어 충분한 처리를 실현하기 위해서 수행된다. 상이한 처리 유닛으로 태스크를 실행하기 위한 또다른 이유는, 몇몇 처리 유닛(10)은 소정의 태스크를 효과적으로 수행하는데 전문일 수도 있는 반면, 다른 처리 유닛은 다른 태스크를 효과적으로 수행하는데 전문일 수도 있기 때문이다. 각 태스크는 신호 데이터의 하나 또는 그 이상의 스트림을 입력 및/또는 출력한다. 신호 데이터의 스트림은 소정의 최대 크기의 청크로 그룹화되는데(통상적으로 소정의 시간 간격 동안의 신호 데이터, 또는 이미지의, 바람직하게는 소정의 크기의 소정의 부분을 나타냄), 이는 예를 들어 시간 간격 동안의 오디오 샘플의 세트, 오디오 샘플, 픽셀의 프레임, 픽셀의 8×8 블록, 픽셀의 라인에 대한, 또는 단일 픽셀에 대한 데이터, 송신 패킷 등으로 구성된다.
작업의 실행 중에, 각 태스크에 대하여 태스크에 대응하는 동작이 반복적으 로 실행되는데, 이 때 각각 입력으로서 소정수의 스트림 청크를 이용하고, 출력으로서 소정수의 청크를 생성한다. 태스크의 입력 데이터 청크는 일반적으로 다른 태스크에 의해 생성되고, 출력 데이터 청크는 일반적으로 다른 태스크에 의해 이용된다. 제1 태스크가 제2 태스크에 의해 이용되는 스트림 청크를 출력하는 경우, 출력 이후에 또한 이용 이전에 스트림 청크는 버퍼 메모리(16)에 버퍼링된다. 제1 및 제2 태스크가 상이한 처리 유닛(10)에 의해 실행되는 경우, 스트림 청크는 상호접속 회로(12)를 통해 입력으로서 스트림 청크를 이용하는 처리 유닛(10)의 버퍼 메모리(16)로 전송된다.
SDF 그래프 이론
멀티프로세서 회로의 성능은 SDF 그래프 이론에 기초하여 관리된다. SDF 그래프 이론은 이미 종래기술에서 널리 알려져 있다.
도1a는 SDF 그래프의 예를 도시한 도면이다. 개념적으로, SDF 그래프 이론은 상이한 태스크에 대응하는 "노드"(100)를 갖는 그래프로서 애플리케이션을 묘사한다. 노드는, 각 쌍의 노드를 연결하고, 또한 스트림 청크가 그 쌍의 제1 노드에 대응하는 태스크에 의해 출력되고, 그 쌍의 제2 노드에 대응하는 태스크에 이용된다는 것을 나타내는 방향지정된 "에지"(102)에 의해 연결된다. 스트림 청크는 "토큰"으로 표시된다. 각 노드에 대하여, 대응하는 태스크가 실행될 수 있기 전에 그 인입 링크 상에 얼마나 많은 토큰이 존재해야 하는지, 또한 실행되는 경우에 태스크가 얼마나 많은 토큰을 출력하는지가 정의된다. 스트림 청크의 생성 이후에, 또한 스트림 청크가 이용되기 전에, 에지 상에 토큰이 존재한다. 이는 버퍼 메모리(16) 내의 스트림 청크의 저장(storage)에 대응한다. 에지 상의 토큰의 존재 또는 부재는 SDF 그래프의 상태를 정의한다. 그 상태는, 노드가 하나 또는 그 이상의 토큰을 "소모"하고/하거나 하나 또는 그 이상의 토큰을 생성하는 때에 변한다.
기본적으로, SDF 그래프는 하나의 동작으로 처리될 수 있는 데이터 스트림 청크에 대응하는 토큰인 작업의 실행 중의 처리 동작 및 데이터 흐름을 도시한다. 그러나, 버퍼 크기에 대한 제약, 실행 병렬 계산량(execution parallelism)에 대한 제약, 버스 액세스 조정(bus access arbitration) 등과 같은 다양한 양태도 또한 SDF 그래프에서 표현될 수 있다.
예를 들어, 버스 또는 네트워크를 통한 전송은 (소정의 시간 내의 액세스를 보증하는 버스 또는 네트워크 액세스 메커니즘이 이용되는 것을 가정하여) 전송 태스크를 나타내는 노드를 추가함으로써 모델링될 수 있다. 또다른 예로서, 원칙적으로 그래프 내의 소정의 노드는, 충분한 입력 토큰이 이용가능하게 되자마자 태스크의 실행을 시작한다고 가정된다. 이는, 이전의 태스크의 실행이 실행의 시작을 방해하지 않는다는 가정을 내포한다. 이는, 병렬로 동일한 태스크에 대해 무제한의 프로세서를 제공함으로써 보장될 수 있다. 실제, 프로세서의 수는 물론 제한되고, 종종 겨우 하나뿐인데, 이는 이전의 실행이 종료되기 전에 다음의 태스크의 실행이 시작될 수 없다는 것을 의미한다. 도1b는, 각각 하나의 노드로부터 자신으로, 초기에 병렬로 수행될 수 있는 실행의 횟수에 대응하는 자기-에지 상의 다수의 토큰(106)(예를 들어, 하나의 토큰(106))을 갖는 "자기-에지"(104)를 SDF 그래프에 추가함으로써 이것이 어떻게 모델링될 수 있는지를 도시한 도면이다. 이는, 초기에 토큰을 소모함으로써 태스크가 시작될 수 있지만, 태스크가 종료되어, 그에 따라 토큰을 교체할 때까지 태스크가 다시 시작될 수 없다는 것을 나타낸다. 실제, 선택된 노드에만 이러한 자기-에지를 추가하는 것이 충분할 수도 있는데, 그 이유는 하나의 노드의 태스크의 제한된 시작 가능성(starting possibilities)이 종종 연결된 노드의 태스크가 시작되는 횟수에 관한 제약을 자동적으로 내포하기 때문이다.
도 1c는, 제1 태스크로부터 제 2 태스크로의 통신을 위한 버퍼 크기에 관한 제약이, 제 2 태스크를 위한 노드로부터 제1 태스크를 위한 노드로 역-에지(back edge)(108)를 추가함으로써, 또한 초기에 이 역 에지(108) 상에 버퍼에 저장될 수 있는 스트림 청크의 수에 대응하는 다수의 토큰(110)을 배치함으로써 표현되는 예를 도시한 도면이다. 이는, 제 1 태스크가 초기에 최초 토큰에 대응하는 횟수를 실행할 수 있고, 제 2 태스크가 실행이 종료되고, 그에 따라 토큰을 교체하는 경우에만 후속 실행이 가능하다는 것을 표현한다.
SDF 그래프는 소정의 특정 구현으로부터 추출된 태스크들 사이의 데이터 통신을 표현한다. 시각화를 위해서, 각 노드는, 대응하는 태스크를 실행하는데 전용인 프로세서에 대응하는 것으로 생각될 수 있고, 각 에지는 한 쌍의 프로세서 사이에 FIFO 버퍼를 포함하는 통신 커넥션에 대응하는 것으로 생각될 수 있다. 그러나, SDF 그래프는, 동일한 프로세서에 의해 상이한 태스크가 실행되고, 버스 또는 네트워크와 같은 공유 커넥션을 통해 상이한 태스크에 대한 스트림 청크가 전달되는 경우를 나타내는 것으로부터 추출된다.
SDF 그래프 이론의 주요 매력 중 하나는, 그 이론이 SDF 그래프를 구현하는 프로세서를 통하여 최악 처리의 예측을 지원한다는 것이다. 이 예측의 시작점은 자기-타이밍(self-timed) 처리 유닛으로 SDF 그래프의 이론적 구현인데, 여기서 처리 유닛은 각각 특정 태스크에 전용이고, 또한 각각은 일단 태스크를 실행하기에 충분한 입력 토큰을 수신하면 즉시 태스크의 실행을 시작하도록 구성된다. 이 이론적 구현에 있어서, 각 처리 유닛은 그 대응하는 태스크의 각 실행을 위한 소정의 실행 시간을 필요로 한다고 가정된다.
이 구현에 대하여, (부호("v")로 구분되는) 태스크의 (부호(k=0, 1, 2, …)의 상이한 값으로 구분되는) 각 실행의 시작 시간(start times)(s(v,k))은 손쉽게 계산될 수 있다. 유한한 계산량으로, k 값의 무한수에 대한 시작 시간(s(v,k))이 결정될 수 있는데, 그 이유는 이 구현이 시작 시간(s(v,k))의 반복 패턴을 야기한다고 종래기술이 SDF 그래프 이론으로 입증하였기 때문이다.
Figure 112006086307239-PCT00001
여기서, N은 패턴이 반복되는 이후의 실행 횟수이고, λ는 주기에서 2개의 연속하는 실행들 사이의 평균 지연이다, 즉 1/λ는 단위 시간마다 생성되는 스트림 청크의 평균 수인 평균 처리 속도(throughput rate)이다.
종래기술의 SDF 그래프 이론은, SDF 그래프에서 단순 주기(여기서, 단순 주기는 고작해야 한번 노드를 포함하는 에지를 따르는 폐쇄 루프이다)를 식별함으로써 λ가 결정될 수 있다는 것을 나타낸다. 이러한 각 주기 "c"에 대하여, 공칭 평 균 실행 시간(CM(c))이 계산될 수 있는데, 이는 주기에서 초기에 에지 상에 있는 토큰의 수로 제산된, 주기에서 노드의 실행 시간의 합계이다. λ는 최장 평균 실행 시간을 갖는 주기(cmax)의 평균 실행 시간(CM(cmax))이다. 유사하게, 종래기술의 SDF 그래프 이론은, 주기 내의 실행 횟수인 N을 계산하는 방법을 제공하였다. 실제 환경에 있어서, 그래프는 적어도 하나의 주기를 포함하는데, 그 이유는 그렇지 않으면 그래프가 병렬로 무한 횟수의 태스크를 실행할 수 있는 무한수의 프로세서에 대응하여, 그에 따라 무한 처리 속도를 야기하게 되기 때문이라는 것이 주목될 수도 있다.
이론적 구현에 대해 취득된 결과는 SDF 그래프의 실제 구현을 위한 최소 처리 속도를 결정하는데 이용될 수 있다. 기본 사상은, 실제 구현에 있어서 각 태스크에 대한 최악 실행 시간을 결정한다는 것이다. 그런 다음, 이 최악 실행 시간은 실행 시간으로서 이론적 구현에서의 태스크에 대응하는 노드에 할당된다. SDF 그래프 이론은 최악 실행 시간을 갖는 이론적 구현에 대한 시작 시간(sth(v,k))를 계산하는데 이용된다. 소정의 조건 하에서, 이들 최악 시작 시간은 적어도 실제 구현에 있어서 실행의 시작(simp(v,k))만큼 항상 늦지 않는다는 것이 보증된다.
Figure 112006086307239-PCT00002
이는, 데이터가 이용가능하게 되기 전에 최악 처리 속도 및 최대 지연을 보증하는 것을 가능하게 한다. 그러나, 이 보증은, 태스크의 실행을 지연할 수 있는 모든 구현 상세가 SDF 그래프에서 모델링되는 경우에만 제공될 수 있다. 이는, 모델링되지 않은 양태가 단조로운 결과를 갖는 구현으로 그 구현을 제한하는데, 여기서 태스크의 실행 시간의 감소는 소정의 태스크의 시작 시간의 지연을 결코 야기할 수 없다.
태스크의 소정의 조합의 스케줄링
도 2는 SDF 그래프 이론을 이용하여 도1에 도시된 바와 같은 처리 회로의 태스크의 조합을 스케줄링하기 위한 프로세스의 흐름도이다. 제 1 단계(21)에 있어서, 프로세스는 태스크들 사이의 통신 및 태스크의 조합의 사양을 수신한다. 제 2 단계(22)에 있어서, 프로세스는 상이한 처리 유닛(10)으로 특정 태스크의 실행을 할당한다. 실제 회로 내의 처리 유닛의 수가 통상적으로 태스크의 수보다 훨씬 적기 때문에, 처리 유닛(10) 중 적어도 하나에는 복수의 태스크가 할당된다.
제 3 단계(23)에 있어서, 프로세스는, 태스크가 실행되는 상대 빈도수(relative frequency) 및 시퀀스를 스케줄링한다(여기서, 시퀀스의 실행은 실행 시간 내에서 무기한으로 반복된다). 이 시퀀스는 교착상태의 부재를 보증해야만 하는데, 여기서 처리 유닛(10)의 시퀀스에서의 소정의 특정 태스크는 직접적으로 또는 간접적으로 처리 유닛(10)에 의해 실행되는 다른 태스크로부터의 스트림 청크를 요구하고, 다른 태스크는 특정 태스크를 시작하기에 충분한 스트림 청크를 생성하도록 특정 태스크 이전에 종종 스케줄링되어야 한다. 이는 모든 프로세서에 대해 유지되어야 한다.
제 4 단계(24)에 있어서, 프로세스는 스트림 청크를 저장하기 위한 버퍼 크기를 선택한다. 동일한 처리 유닛(10) 상에서 구현되는 태스크에 대하여, 버퍼 크기에 대한 최소값이 스케줄의 결과로서 일어나는데, 여기서 또다른 태스크가 데이터를 이용하기 전에 또는 스케줄이 반복되기 전에 태스크에 의해 생성되는 데이터를 저장하는 것이 가능해야만 한다. 상이한 처리 유닛 상에서 실행될 수 있는 태스크들 사이의 버퍼 크기는 임의로 선택될 수 있는데, 후술되는 바와 같이 제6 및 제7 단계(26, 27)의 결과에 영향을 받기 쉽다.
제 5 단계(25)에 있어서, 프로세스는 노드와 에지를 발생시키기 위해서 특정 태스크 및 그 종속성을 이용하여 SDF 그래프의 표현을 효과적으로 실행한다. 비록 프로세스가 SDF 그래프를 작성하고, 소정의 방식으로 이 그래프를 수정하는 것이 일반적일 지라도, 이는, 적어도 SDF 그래프에 등가인 정보를 나타내는 데이터가 생성되는 것, 즉 이 SDF 그래프의 관련 특성이 명백하게 도출될 수 있는 정보를 나타내는 데이터가 생성되는 것을 의미하는 것으로 이해되어야 한다.
프로세스는 상이한 처리 유닛(10) 상에 스케줄링된 태스크를 위한 노드들 사이의 에지들, 및 태스크의 실행의 수가 병렬로 수행될 수 있고, 버퍼 크기에 관한 제약을 표현하는 추가적인 에지들 상에 "통신 프로세서(communication processor)" 노드를 추가한다. 또한, 프로세스는 각 특정 노드와 각 실행 시간(ET)를 연관시키는데, 이는 특정 노드에 대응하는 특정 태스크로 동일한 처리 유닛(10) 상의 동일한 시퀀스에서 스케줄링되는 태스크의 최악 실행 시간(WCET)의 합계에 대응한다. 이는 실행의 완료까지 입력 데이터의 가능한 도달로부터의 최악 대기 시간에 대응 한다.
제 6 단계(26)에 있어서, 통상적으로 전술한 평균 처리 지연(λ) 및 반복 빈도수(N)의 계산을 포함하여, SDF 그래프에 대한 최악 시작 시간(sth(v,k))를 계산하기 위해서, 프로세스는 SDF 그래프의 분석을 수행한다. 제7 단계(27)에 있어서, 프로세스는, 계산된 최악 시작 시간(sth(v,k))이 태스크의 조합을 위해 특정된 실시간 요건을 충족하는지 여부(즉, 이들 시작 시간이, 스트림 청크가 이용가능한 것이 틀림없는 특정 시점에서 또는 그 이전에 놓이는지 여부로서, 여기서 특정 시점은 통상적으로 비디오 프레임을 출력하기 위한 시점과 같이 주기적으로 반복하는 시점임)를 시험한다. 실시간 요건을 충족하는 경우에는, 프로세스는, 태스크가 스케줄링되는 처리 유닛(10)으로 스케줄을 실시하기 위한 정보 및 태스크를 위한 프로그램 코드를 로딩하거나, 또는 적어도 나중에 로딩에 이용되는 정보를 출력하는 제8 단계(28)를 실행한다. 스케줄이 실시간 요건을 충족하지 않는다고 제7 단계가 나타내는 경우에는, 프로세스는 처리 유닛(10)에 대한 태스크의 상이한 할당 및/또는 상이한 처리 유닛(10)에서 실행되는 태스크들 사이의 상이한 버퍼 크기에 대해 제2 단계(22)를 반복한다.
스케줄링된 태스크의 실행 중에, 스케줄 내의 태스크의 전환(turn)이 있는 경우, 충분한 입력 데이터 및 출력 버퍼 스페이스가 태스크를 실행하는데 이용가능하게 될 때까지 관련 처리 유닛(10)은 대기한다(또는 등가적으로 일단 태스크 자신이 시작되면 대기한다). 즉, 태스크가 아직 실행될 수 없고, 스케줄 내의 후속 태 스크가 실행될 수 있는 것이 명백한 경우에도, 스케줄로부터의 변경(또는 편이)(deviations)이 허용되지 않는다. 그 이유는, 이러한 스케줄로부터의 편이가 실시간 제약의 위반을 야기할 수 있기 때문이다.
태스크의 유연한 실행 시간 조합
도3은 처리 유닛(10)에 대해 복수의 작업의 태스크를 동적으로 할당하기 위한 또 다른 프로세스의 흐름도이다. 이 프로세스는 복수의 작업의 사양을 수신하는 제 1 단계(31)를 포함한다. 작업이 조합되어 실행되어야 하는 것이 제 1 단계(31)에서 반드시 특정되지는 않는다. 각 작업은, 조합되어 실행될 복수의 통신 태스크를 포함할 수도 있다. 제 2 단계(32)에 있어서, 프로세스는 개별적으로 각 작업에 대한 예비 버퍼 크기 선택하는 것을 포함한다. 제 1 및 제 2 단계는, 실제 실행 시간 동작 이전에, 오프라인으로 수행될 수도 있다.
실행 시간에, 프로세스는 동적으로 작업의 조합을 스케줄링한다. 통상적으로, 작업이 하나씩 추가되고, 프로세스는, 멀티프로세서 회로에 의해 실행되는 작업들에 작업을 추가하기 위한 요구를 수신하는 제 3 단계(33)를 실행한다. 제 4 단계(34)에 있어서, 실행 시간에, 프로세스는 처리 유닛(10)에 태스크를 할당한다. 제 5 단계(35)에 있어서, 추가적인 작업의 태스크가 처리 유닛(10)으로 로딩되어, 시작된다(또는, 미리 이들이 로딩된 경우에는 단지 시작되기만 한다).
바람직하게는, 제4 단계(34)에서 선택된 할당은 각 처리 유닛(10)에 대한 태스크의 각 시퀀스를 특정한다. 특정된 태스크의 실행 중에, 블로킹-방지(non- blocking) 실행이 이용된다. 즉, 처리 유닛(10)이, 처리 유닛(10)에 대해 선택된 시퀀스에서의 태스크에 대해 충분한 토큰이 이용가능한지 여부를 시험함에도 불구하고, 충분한 토큰이 이용가능하지 않은 경우에는 처리 유닛(10)은 태스크의 실행을 스킵하고, 충분한 토큰이 이용가능한 선택된 시퀀스에서의 다음의 태스크를 실행할 수도 있다. 이와 같이, 실행 시퀀스는, 토큰의 이용가능성에 대한 시험에 이용되는 선택된 시퀀스에 대응할 필요가 없다. 이는, 신호 스트림이 동기화되지 않은 작업을 실행하는 것을 가능하게 한다.
예비 버퍼 크기 선택 단계(32)는 각 태스크에 대한 입력 버퍼 크기를 계산한다. 이 계산은, 동일한 처리 유닛(10) 상에서 다른 작업을 실행하기 위한 최악 시간의 가정 하에서, 개별 작업에 대한 SDF 그래프 이론 계산에 기초한다.
도 4는 도 3의 예비 버퍼 크기 선택 단계(32)의 상세한 흐름도이다. 제 1 단계(41)에 있어서, 프로세스는 작업을 선택한다. 제 2 단계(42)에 있어서, 작업의 최초 SDF의 표현은 작업에서 호출되는 태스크를 포함하여 구성된다. 제 3 단계(43)에 있어서, 프로세스는, 각 태스크가 처리 유닛(10)에 의해 시간-다중화 방식으로 아직 미지의 다른 태스크와 함께 실행될 것이라는 가정 하에서 실제 구현 특성을 나타내기 위해 노드 및 에지를 추가하는데, 이들의 조합된 최악 실행 시간은 소정값을 초과하지 않는다.
제 4 단계(44)에 있어서, 프로세스는 태스크들 사이에 요구되는 버퍼 크기를 계산하기 위해서 SDF 그래프의 분석을 수행한다. 선택적으로, 프로세스는 통상적으로 전술한 평균 처리 지연(λ) 및 반복 빈도수(N)의 계산을 포함하여, SDF 그래프 에 대한 최악 시작 시간(sth(v,k))도 계산한다. 제 5 단계(45)에 있어서, 프로세스는, 계산된 최악 시작 시간(sth(v,k))이 태스크의 조합에 대해 특정된 실시간 요건을 충족하는지 여부(즉, 이들 시작 시간이, 스트림 청크가 이용가능한 것이 틀림없는 특정 시점에 또는 그 이전에 놓이는지 여부로서, 여기서 특정 시점은 통상적으로 비디오 프레임을 출력하기 위한 시점과 같이 주기적으로 반복하는 시점임)를 시험한다. 실시간 요건을 충족하는 경우에는, 프로세스는, 나중에 로딩에 이용되는 예비 시간 및 선택된 버퍼 크기를 포함하는 정보를 출력하는 제 6 단계(46)를 실행한다. 그런 다음, 프로세스는 또다른 작업에 대하여 제 1 단계(41)부터 반복한다.
도5는 이러한 목적을 위해 이용될 수 있는 가상 SDF 그래프의 예를 도시한 도면이다. 가상 SDF 그래프는, 각 특정 태스크(100)의 앞에 가상 태스크(50)를 위한 노드를 추가함으로써 도 1b에 도시된 그래프로부터 획득될 수 있다. 가상 태스크(50)는 실행 중의 소정의 실제 태스크에 대응하지 않지만, 가상 태스크(50)의 다음에 오는 특정 태스크(100)와 동일한 처리 유닛에 할당되는 (아직 미지의) 다른 태스크로 인한 지연을 나타낸다. 또한, 제1 추가 에지(54)가 각 원시 노드(100)로부터 가상 태스크(50)를 위한 그 이전의 노드로 추가되었다. 그래프의 최초 상태에 있어서, 이들 제 1 추가 에지는 각각 하나의 토큰을 포함한다. 이들 제1 추가 에지(54)는, 특정 노드(100)에 대응하는 태스크의 완료가 가상 태스크(50)를 위한 노드에 의해 표현되는 지연 시간 간격을 시작하는 것을 나타낸다.
또한, 각 특정 원시 노드(100)로부터, 특정 원시 노드(100)를 향하는 에지를 갖는 공급 노드(100)의 이전에 있는 가상 태스크(50)를 위한 노드로 제 2 추가 에지(52)가 추가된다. 제 2 추가 에지(52)는 각각 결정되어야 하는 각각의 수의 토큰(N1, N2, N3)으로 초기화되는 것으로 고려된다. 제 2 추가 에지(52)는, 호출된 태스크들 사이의 버퍼 용량의 영향을 나타낸다. 제 2 추가 에지(52) 상의 토큰(N1, N2, N3)의 수는, 적어도 이들 버퍼에 저장될 수 있는 신호 스트림 청크의 수를 나타낸다. 제 2 추가 에지(52)는, 다운스트림 태스크에 신호 데이터를 공급하기 위한 버퍼 메모리가 가득 차 있기 때문에 태스크가 스킵되는 경우에, 처리 유닛(10) 상의 태스크의 전체 주기의 대기 시간이 발생할 수도 있는 사실을 표현하기 위해서, 가상 태스크(50)를 위한 노드에 역으로 연결된다.
버퍼의 용량이 다음의 [수학식 3]의 값과 같거나 그 이상의 최근접 정수를 이용하여, 도5에 도시된 타입의 가상 그래프로부터 계산될 수도 있다는 것이 증명될 수 있다고 알려졌다.
Figure 112006086307239-PCT00003
여기서, MCM은 요구되는 실시간 처리 시간(연속하는 스트림 청크의 생성 사이의 최대 시간)이고, WCETi는 (i로 표시되는) 태스크의 최악 실행 시간이다. 호출되는 태스크는, 용량이 계산되는 버퍼에 종속하고, 또는 SDF 그래프의 관점에서, 버퍼를 나타내는 제2 추가 에지(52)의 종단 노드와 시작 노드 사이에 발생하는 노드(100, 50)에 종속한다. 합계는, 종단 노드로부터 시작 노드까지 SDF 그래프를 통해 최악 경로에서 발생하는 태스크(i)의 선택된 수에 걸쳐 취해진다. 단지 "단순" 경로만이 고려되어야 하는데, 그래프가 주기를 포함하는 경우, 다만 한번 소정의 노드를 통과하는 단일 경로가 고려되어야 한다.
예를 들어, 도 5에 도시된 예에서, 태스크(A3)로부터 가상 태스크(W1)로의 제2 추가 에지(52)를 고려한다. N3(아직 미지수) 토큰이 초기에 이 에지 상에 존재하는데, 이는 태스크(A1)로부터 태스크(A3)로의 데이터 스트림의 전송을 위한 N3 스트림 청크의 버퍼 크기를 나타낸다. W1(N3 토큰을 갖는 에지의 종단점)으로부터 A3(이 에지의 시작점)까지 그래프를 통해 경로를 찾음으로써 버퍼 크기(N3)가 계산될 수 있다. 이러한 2개의 경로가 있다, 즉 W1-A1-W2-A2-W3-A3, W1-A1-W3-A3이다. 루프로 인해, 다른 경로도 존재하지만(예를 들어, W1-A1-W2-A2-W1-A2 등-W3-A3, 또는 W1-A1-W2-A2-W1-A21-W3-A2), 이들은 고려되어서는 안 되는데, 그 이유는 이들 경로가 소정의 노드를 통하여 2번 지나가기 때문이다. 그럼에도 불구하고, 보다 복잡한 그래프에 있어서, 이들이 단순한 경로인 한, 역-에지를 통하는 경로가 기여할 수도 있다. 2개의 단순한 경로, 즉 W1-A1-W2-A2-W3-A3, W1-A1-W3-A3의 각각에 대하여, 이들 경로를 따르는 노드(100, 50)에 의해 표현되는 태스크의 최악 실행 시간의 합계가 결정되어야 하고, 이들 합계 중 최고는 토큰(N3)의 수를 계산하는데 이용된다.
여기서, 최악 실행 시간은 가상 태스크(50)와 연관된다. 이들 최악 실행 시간은 T-Ti로 설정된다. 여기서, T는 주기 시간이다. 특정 태스크의 주기 시간(T)은, 특정 태스크와 함께 동일한 처리 유닛(10)에 할당되는 태스크의 최악 실행 시간의 최대 허용가능한 합계에 대응한다(특정 태스크의 실행 시간이 이 합계에 포함 된다). 바람직하게는, 동일한 소정의 주기 시간(T)이 각 태스크에 할당된다.
특정 태스크가 다시 한 번 실행될 수 있기 이전의 최악 대기 시간은 T-Ti이고, 여기서 Ti는 특정 태스크의 최악 실행 시간이다.
유사한 계산이 다른 버퍼 크기에 대해 수행되는데, 여기서 N1을 계산하기 위해서는 경로 W1-A1-W2-A2 및 W1-A1-W3-A3-W2-A2를 이용하여, N2를 계산하기 위해서는 경로 W2-A2-W3-A3 및 W2-A2-W1-A1-W3-A3을 이용하여, 도면의 예에서 수 N1 및 N2를 계산한다.
이와 같이, 충분한 데이터 및 출력 버퍼 용량이 이용가능한 경우, 순환 방식으로 수행될 기회가 태스크에 부여되면, 태스크들 사이에 버퍼링을 위한 최소 버퍼 용량이, 각 태스크가 아직 미지의 다른 태스크와 함께 처리 유닛(10)에 의해 실행되는 경우에 대하여 결정될 수 있다.
도 3의 제 4 단계(34)에 있어서, 실행 시간에, 프로세스가 처리 유닛(10)에 태스크를 할당하는 경우, 프로세스는, 각 처리 유닛에 대하여, 동일한 프로세서에 할당되는 태스크의 최악 실행 시간의 합계가, 버퍼 크기의 오프라인 계산 중에 소정의 할당된 태스크에 대해 가정한 주기 시간(T)를 초과하지 않는지 여부를 시험한다. 할당된 태스크가 이 주기 시간을 초과하는 경우에는, 할당이 가정한 주기 시간(T)을 초과하지 않는다고 알려질 때까지, 처리 유닛에 대한 태스크의 상이한 할당이 선택된다. 이러한 할당이 발견될 수 없는 경우에는, 프로세스는 실시간 보증이 제공될 수 없다고 보고한다.
도 4의 제 5 단계(45)가, 오프라인으로 실시간 요건이 충족될 수 없다는 나 타내는 경우에는, 몇몇 노드(100)에 대해 가정한 주기 시간(T)이 선택적으로 감소될 수도 있다. 한편, 이는, 가상 태스크(50)를 위한 대응 노드에 의해 안내된 지연이 감소되어, 그에 따라 실시간 요건을 충족하는 것이 보다 용이하게 되는 효과를 갖는다. 다른 한편, 이는, 도3의 제4 단계(34) 중에 가정한 주기 시간(T)이 감소되면서 이러한 태스크와 함께 태스크를 스케줄링하기 위한 보다 적은 여유가 존재하는 효과를 갖는다.
도 6은 본 발명을 구현하기 위한 통상적인 시스템을 도시하고 있다. 컴퓨터(60)가 도 3의 예비 단계(32)를 수행하기 위해 제공된다. 컴퓨터(60)는 최악 실행 시간 및 작업의 태스크 구조에 대한 정보를 수신하기 위한 입력을 갖는다. 실행 시간 제어 컴퓨터(62)는 작업을 조합하기 위해 제공된다. 사용자 인터페이스(64)는 사용자로 하여금 작업을 추가 또는 제거할 수 있게 하기 위해서 제공된다(통상적으로, 이는 홈 비디오 시스템과 같은 장치의 기능을 활성화 및 비활성화시킴으로써 암시적으로 이루어진다). 사용자 인터페이스(64)는 실행 시간 제어 컴퓨터(62)에 연결되는데, 이는 컴퓨터(60)에 의해 선택된 작업의 실행 파라미터를 수신하기 위해 컴퓨터(60)에 연결된 입력을 갖는다. 실행 시간 제어 컴퓨터(62)는, 태스크가 활성화되고, 치리 유닛(10) 상에서 버퍼 크기와 같은 실행 파라미터가 이용되는 것을 제어하기 위해서 처리 유닛(10)에 연결된다.
컴퓨터(60) 및 실행 시간 제어 컴퓨터(62)는 동일한 컴퓨터일 수도 있다. 대안적으로, 컴퓨터(60)는, 컴퓨터(60)에 의해 계산된 파라미터가 실행 시간 제어 컴퓨터(62)에 저장되거나 프로그램되기 때문에, 이들 컴퓨터들(60, 62) 사이에 영구 링크를 필요로 하지 않고, 실행 시간 제어 컴퓨터(62)에 단지 명목적으로만 연결된 분리된 컴퓨터일 수도 있다. 실행 시간 제어 컴퓨터(62)는 동일한 집적 회로로 처리 유닛(10)과 함께 집적될 수도 있고, 또는 실행 시간 제어 컴퓨터(62) 및 처리 유닛(10)을 위해 분리된 회로가 제공될 수도 있다. 대안적으로, 처리 유닛(10) 중 하나가 실행 시간 제어 컴퓨터(62)로서 기능할 수도 있다.
추가 실시예
본 발명이 신호 데이터의 무한 스트림을 잠재적으로 처리하는 작업의 조합의 동시 실행에 대해 실시간 보증을 제공하도록 한다는 것이 실현된다. 이는 2 단계 프로세스에 의해 수행된다. 제 1 단계는 버퍼 크기와 같은 실행 파라미터를 계산하고, 개별 작업에 대한 실시간 능력을 검증한다. 이는, 처리 유닛에 의해 태스크가 실행되는 동안의 전체 주기 시간이 가정한 주기 시간(T)을 초과하지 않는 경우에는, 작업의 태스크가, 시간-다중화를 이용하여, 작업의 태스크와 직렬로 아직 특정되지 않은 다른 태스크와 같이, 다른 태스크를 실행하는 처리 유닛(10)에 의해 실행된다는 가정 하에서 이루어진다. 제 2 단계는 작업을 조합하고, 동일한 처리 유닛(10)에 할당되는 태스크의 최악 실행 시간이 소정의 이들 태스크에 대해 가정한 주기 시간(T)을 초과하지 않는다는 것에 주의한다.
종래의 SDF 그래프 기술과 비교하여 볼 때, 다수의 차이점이 있다, 즉 (a) 2-단계 프로세스가 이용되는 차이점, (b) 먼저 실시간 보증이 개별 작업에 대해 계산되는 차이점, (c) 작업의 실행된 조합에 대하여, 실시간 보증의 완전한 계산이 필요하지 않은 차이점 - 여기서, 처리 유닛(10)에 할당되는 태스크의 시퀀스의 최악 실행 시간의 합계가 소정의 할당된 태스크의 가정한 주기 시간을 초과하지 않는지 여부를 계산하기에 충분함 -, (d) 종래의 SDF 그래프 기술에 요구되는 바와 같이, 충분한 입력 데이터 및 출력 버퍼 스페이스에 대해 대기하기보다는 오히려, 처리 유닛(10)이 할당된 태스크의 주기에서 태스크의 실행을 스킵할 수도 있는 차이점이 있다.
이는 다수의 이점을 갖는다, 즉 관계가 없는 작업의 조합에 대해 실시간 보증이 제공될 수 있고, 이러한 조합의 스케줄링은 보다 적은 오버헤드를 요구하고, 작업의 데이터 공급 및 생성이 동기화될 필요가 없다.
본 발명이 이러한 개시된 실시예에 제한되지는 않는다는 것이 인식되어야 한다. 먼저, 본 발명이 SDF 그래프를 이용하여 설명되었음에도 불구하고, 프로세스가 머신에 의해 실행되는 때에 물론 명시적 그래프가 생성될 필요는 없다. 본 발명은 그래프의 본질적인 특성을 나타내는 데이터가 생성 및 처리되는 것을 만족시킨다. 이를 위해 다수의 대안적인 표현이 이용될 수도 있다. 이러한 환경에 있어서, 그래프에 대해 대기 태스크의 추가는 단지 편리한 메타포어로서 개시되었다는 것이 인식된다. 실제 태스크가 추가되지 않고, 이러한 개념적인 대기 태스크의 효과와 동일한 효과를 설명하는 다수의 실제 방식이 존재한다.
두번째로, 개별 작업에 대한 버퍼 크기를 선택하는 예비 단계가 오프라인으로 수행되는 것이 바람직함에도 불구하고, 물론 이는 작업이 실행되는 작업들에 추가되기 전에 단지 하나의 작업에 대하여 온라인으로 수행될 수도 있다. 버퍼 크기 의 계산은 계산될 수도 있는 실행 파라미터의 계산의 단 하나의 예이다. 전술한 바와 같이, 태스크에 이용된 주기 시간은 제1 단계에서 결정될 수도 있는, 또한 계산될 수도 있는 또다른 파라미터이다. 또다른 예로서, 스트림의 연속하는 청크에 대하여 동일한 태스크를 수행할 수도 있는 처리 유닛의 수가 실시간 능력을 보증하기 위해서 제1 단계에서 결정될 수도 있는 또 다른 실행 파라미터이다. 이는 예를 들어 연속하는 프로세서에 걸쳐 주기적으로 스트림 청크를 분산시키기 위해서 SDF 그래프에 태스크를 추가함으로써, 분산된 스트림의 상이한 청크를 처리하기 위해서 태스크의 사본을 추가함으로써, 사본의 결과를 조합된 출력 스트림으로 조합하기 위해서 조합 태스크를 추가함으로써 실현될 수도 있다. 사본의 수에 종속하여, 실시간 처리 조건을 갖는 신뢰성이 가정한 환경에서 보장될 수 있다.
더욱이, 처리 유닛(10)으로의 할당에 대한 보다 복잡한 형태가 이용될 수도 있다. 예를 들어, 일실시예에 있어서, 예비 단계는 또한 작업의 태스크의 그룹이 동일한 처리 유닛(10)에 의해 실행되어야 하는 제약의 부과를 수반할 수도 있다. 이 경우에, (그룹 내의 태스크가 연속적으로 스케줄링되면) 대기 시간을 위한 보다 적은 가상 태스크(50)가 추가될 필요가 있고, 또는 대기 시간을 위한 가상 태스크(50)는 보다 적은 대기 시간을 가질 수도 있는데, 이는 그룹으로부터 태스크들 사이에 나중에 스케줄링될 수도 있는 (알려진) 다른 태스크의 일부의 최악 실행 시간을 나타낸다. 효과적으로, 그룹 내의 태스크의 앞에 가상 태스크(50)의 조합된 대기 시간은, 동일한 처리 유닛(10)에 의해 실행되어야 하는 제약 없이 n 태스크가 고려되는 경우에 요구되는 n 주기 시간(T) 대신에, 하나의 주기 시간(T)에 대응하 는 것만 필요하다. 이는, 실시간 제약이 충족될 수 있다는 보증을 보다 용이하게 할 수도 있다. 더욱이, 이와 같이 요구된 몇몇 버퍼의 크기가 감소될 수 있다.
더욱이, 상이한 작업의 데이터 스트림의 동기화의 몇몇 형태가 가능한 경우, 실행 중에 태스크의 스킵을 이용하는 것이 필요하지 않다. 이 동기화는 SDF 그래프에서 표현될 수 있다.
더욱이, 본 발명이 소정의 태스크를 실행할 수 있는 범용 처리 유닛(10)에 대해 설명하였음에 불구하고, 몇몇 처리 유닛은 단지 선택된 태스크를 실행할 수 있는 전용 유닛일 수도 있다. 인식되는 바와 같이 이는 본 발명의 원칙에 영향을 끼치지 않을 뿐만 아니라, 처리 유닛에 대한 태스크의 할당의 궁극적인(final) 가능성에 대한 제약을 내포한다. 또한, 명쾌함을 위해 통신 태스크가 그래프로부터 삭제(또는 태스크에 포함되도록 고려)되었음에도 불구하고, 실제 대응하는 타이밍 및 대기 관계를 갖는 통신 태스크가 추가될 수도 있다.
더욱이, 본 발명이, 각 처리 유닛(10)이 태스크에 고정 시퀀스로 실행하기 위한 기회가 제공되는 라운드 로빈 스케줄링 방식을 이용하는 실시예에 대해 설명하였음에도 불구하고, 처리 유닛(10)에 의해 실행되는 (특정되지 않은) 태스크의 최악 실행 시간에 관한 소정의 제약이 제공되는 소정의 스케줄링 방식에 대하여, 태스크가 실행 기회를 얻기 전에 최대 대기 시간이 계산될 수 있는 한, 이 소정의 스케줄링 방식이 이용될 수도 있다는 것이 이해되어야 한다. 명백하게도, 태스크가 실행될 충분한 기회를 얻는지 여부를 판정하는데 이용되는 최악 실행 시간의 합계의 타입은 스케줄링의 타입에 종속한다.
바람직하게는, 처리 시스템으로 작업이 실행되는데, 여기서 작업은 실행 시간에 유연하게 추가 및/또는 제거될 수 있다. 이 경우, 작업의 태스크를 위한 프로그램 코드가, 요구된 버퍼 크기 및 가정한 주기 시간(T)에 대한 계산 정보와 조합하여 공급될 수도 있다. 이 정보는 또다른 처리 시스템으로부터 공급될 수도 있고, 또는 작업을 실행하는 처리 시스템에서 국부적으로 생성될 수도 있다. 그런 다음, 이 정보는 실행 시간에 작업을 추가하는데 이용될 수 있다. 대안적으로, 작업의 스케줄링 실행을 위해 요구되는 정보는, 작업을 실행하기 위한 다수의 처리 유닛을 갖는 신호 처리 집적 회로에 영구적으로 저장될 수도 있다. 심지어, 이는 정적으로 작업의 소정의 조합을 실행하도록 프로그램되는 집적 회로에 적용될 수도 있다. 후자의 경우에, 프로세서에 대한 태스크의 할당은 실행 시간에 동적으로 수행될 필요가 없다.
그에 따라, 그 구현에 종속하여, 작업의 조합을 실행하는 실제 장치는, 버퍼 크기를 결정하기 위한 충분한 능력, 및 실행 시간에 처리 유닛으로 태스크를 할당하기 위한 충분한 능력을 갖출 수도 있고, 또는 단지 실행 시간에 처리 유닛으로 태스크를 할당하기 위한 능력만을, 또는 심지어 소정의 할당만을 갖출 수도 있다. 이들 능력은, 적합한 프로그램으로 장치를 프로그래밍함으로써 구현될 수도 있는데, 이 프로그램은 프로그램을 나타내는 인터넷 신호 또는 디스크와 같은 컴퓨터 프로그램 제품으로부터 공급되거나 상주한다. 선택적으로, 전용 배선에 의한(hard-wired) 회로가 이들 능력을 지원하는데 이용될 수도 있다.

Claims (20)

  1. 태스크(100)를 포함하는 신호 스트림 처리 작업의 조합을 실행하기 위한 시스템에 있어서,
    각 태스크(100)는, 상기 태스크(100)가 수신하는 스트림으로부터의 데이터 청크(chunk of data)를 처리하고/하거나 상기 태스크(100)가 생성하는 스트림으로부터 청크를 출력하는 동작의 반복 실행에 의해 수행되고,
    각 작업은 서로 스트림 통신하는 복수의 태스크(100)를 포함하며,
    상기 시스템은 실시간 요건이 충족되는지 여부를 판정하기 위한 검사를 수행하도록 구성되고, 상기 시스템은,
    신호 스트림의 통신을 위해 상호 연결된 복수의 처리 유닛(10)과,
    상기 태스크의 실행을 시작하기 위한 기회가 최대 상기 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에서 상기 작업의 각 태스크가 실행되는 경우, 개별적으로 각 작업에 대하여 예비 결정을 수행하여 요구된 최소 스트림 처리 속도(throughput rate)를 지원하도록 상기 작업에 대해 요구되는 실행 파라미터를 결정하도록 구성된 예비 계산 유닛(60)과,
    병렬로 실행되어야 하는 작업의 조합을 실행 시간 동안 선택하기 위한 제어 유닛(62)과,
    각각의 특정 처리 유닛(10)에 대하여, 상기 특정 처리 유닛(10)에 할당된 상기 태스크에 대한 최악 실행 시간(worst case execution times)의 합계가 상기 특 정 처리 유닛(10)에 할당된 임의의 태스크(100)에 대해 정의된 주기 시간(T)을 초과하지 않는지 검사하여, 상기 처리 유닛(10)의 각 하나에 상기 선택된 작업의 조합의 태스크의 그룹을 할당하도록 구성된 할당 유닛(62) - 상기 처리 유닛(10)은 상기 선택된 작업의 조합을 동시에 실행하고, 각 처리 유닛(10)은 그 처리 유닛(10)에 할당된 상기 태스크(100)의 그룹을 시간-다중화 실행함 -
    을 포함하는 시스템.
  2. 제 1 항에 있어서,
    상기 예비 계산 유닛(62)은, 버퍼 크기가 상기 처리 속도가 충족되는 것을 보증하기에 충분하도록, 각 태스크(100) 쌍 사이에 상기 데이터 청크를 버퍼링하기 위한 버퍼의 버퍼 메모리 크기를 계산하도록 구성되고,
    적어도 상기 계산된 크기의 버퍼 메모리 스페이스는 실행 중에 상기 태스크 (100) 쌍 사이에 버퍼링을 위해서 예비되는
    시스템.
  3. 제 1 항에 있어서,
    상기 처리 유닛(10) 중 적어도 하나는, 상기 태스크(100)의 동작을 수행하는데 충분한 데이터 청크가 이용가능하지 않고/않거나 상기 동작의 결과 청크를 기록 하는데 충분한 버퍼 스페이스가 이용가능하지 않은 경우, 상기 처리 유닛(10)에 할당된 상기 태스크의 그룹의 실행을 스킵하도록 구성되는
    시스템.
  4. 실시간 요건이 충족되는지 여부를 판정하기 위한 검사를 수행하는 단계를 포함하는 신호 스트림 처리 작업의 조합을 처리하는 방법에 있어서,
    각각 태스크(100)가 수신하는 스트림으로부터의 데이터 청크를 처리하고/하거나 태스크(100)가 생성하는 스트림으로부터 청크를 출력하는 동작의 반복 실행에 의해 수행되는 처리 태스크(100)를 정의하는 단계와,
    각각 서로 스트림 통신하는 복수의 상기 처리 태스크(100)를 포함하는 복수의 작업을 정의하는 단계와,
    상기 태스크의 실행을 시작하기 위한 기회가 최대 상기 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에서 상기 작업의 각 태스크(100)가 실행되는 경우, 개별적으로 각 작업에 대하여 예비 결정을 수행하여 요구된 최소 스트림 처리 속도를 지원하도록 상기 작업에 대해 요구되는 실행 파라미터를 결정하는 단계와,
    병렬 실행을 위한 작업의 조합을 선택하는 단계와,
    각각의 특정 처리 유닛(10)에 대하여, 상기 특정 처리 유닛(10)에 할당된 상기 태스크에 대한 최악 실행 시간의 합계가 상기 특정 처리 유닛(10)에 할당된 임 의의 태스크(100)에 대해 정의된 주기 시간(T)을 초과하지 않는지 검사하여, 각 처리 유닛(10)에 대해 상기 선택된 작업의 조합의 태스크(100)의 그룹을 할당하는 단계와,
    상기 태스크의 그룹을 시간-다중화 실행하는 상기 처리 유닛(10)을 이용하여 상기 선택된 작업의 조합을 동시에 실행하는 단계
    를 포함하는 방법.
  5. 제 4 항에 있어서,
    상기 예비 결정을 수행하는 단계는, 버퍼 크기가 상기 처리 속도가 충족되는 것을 보증하기에 충분하도록, 각 태스크(100) 쌍 사이에 상기 데이터 청크를 버퍼링하기 위한 버퍼의 버퍼 메모리 크기를 계산하는 단계를 포함하고,
    적어도 상기 계산된 크기의 버퍼 메모리 스페이스는 실행 중에 상기 태스크(100) 쌍 사이에 버퍼링을 위해서 예비되는
    방법.
  6. 제 5 항에 있어서,
    제 1 태스크와 제 2 태스크 사이에 데이터를 버퍼링하기 위한 상기 버퍼 크기 중 적어도 하나는,
    상기 작업의 연속하는 태스크(100)의 경로를 식별하는 단계 - 각 경로에 있어서, 그 경로에서 각 연속하는 태스크(100)는 동작을 시작하기 위한 그 경로에서의 선행 태스크(100)의 성능에 종속하고, 각 경로는 상기 제 1 태스크(100)로부터 시작하여, 상기 제 2 태스크(100)에서 끝남 -와,
    각 식별된 경로에 대하여, 상기 태스크(100)의 실행을 시작하기 위한 기회가 최대 상기 태스크(100)에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에서 실행되는 경우, 상기 태스크(100)에 실행하기 위한 기회가 제공되기 이전의 최대 대기 시간에 더하여, 상기 경로를 따라 상기 태스크(100)의 최악 실행 시간의 합계에 대한 정보를 계산하는 단계와,
    연속하는 데이터 청크들 사이에 요구된 최대 처리 시간(throughput time) 및 임의의 식별된 경로에 대한 상기 합계 중 최고의 비율로부터 버퍼 크기를 결정하는 단계에 의해 계산되는
    방법.
  7. 제 4 항에 있어서,
    상기 예비 결정을 수행하는 단계는 상기 처리 유닛 중 공통적인 하나에 의한 시간-다중화시 실행을 위한 상기 작업의 태스크(100)의 서브-그룹을 선택하는 단계를 포함하고,
    상기 태스크(100)의 서브-그룹의 실행을 시작하기 위한 기회가 최대 상기 서 브-그룹에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에서 상기 작업의 각 태스크(100)가 실행되는 경우, 상기 요구되는 실행 파라미터가 상기 요구된 최소 스트림 처리 속도를 지원하는지 여부가 판정되는
    방법.
  8. 제 4 항에 있어서,
    상기 그룹 내의 태스크(100)의 실행은, 상기 태스크의 동작을 수행하는데 충분한 청크가 이용가능하지 않고/않거나 상기 동작의 결과 청크를 기록하는데 충분한 버퍼 스페이스가 이용가능하지 않은 경우에 스킵되는
    방법.
  9. 제 4 항에 있어서,
    상기 예비 결정을 수행하는 단계는, 상기 환경에 있어서 항상 처리 속도가 충족되는 것을 보증하는 것이 가능한지 여부의 판정을 수행하는 단계를 포함하는
    방법.
  10. 제 9 항에 있어서,
    상기 처리 속도가 항상 충족되는 것이 보증될 수 없는 경우에 상기 태스크(100) 중 적어도 하나에 대해 정의된 주기 시간을 감소시키고, 상기 감소된 주기 시간을 이용하여 상기 예비 결정을 수행하는 단계를 반복하는 단계
    를 더 포함하는 방법.
  11. 제 4 항에 있어서,
    동기식 데이터 흐름(SDF)(Synchronous Data Flow) 그래프의 표현에 등가인 정보를 생성하고, 상기 그래프 분석 등가 기술을 이용하여 상기 파라미터를 계산하는 단계
    를 더 포함하는 방법.
  12. 태스크(100)를 포함하는 신호 스트림 처리 작업의 조합을 실행하기 위한 장치에 있어서,
    각 태스크(100)는, 상기 태스크(100)가 수신하는 스트림으로부터의 데이터 청크를 처리하고/하거나 상기 태스크(100)가 생성하는 스트림으로부터 청크를 출력하는 동작의 반복 실행에 의해 수행되고,
    각 작업은 서로 스트림 통신하는 복수의 처리 태스크를 포함하고,
    상기 장치는 실시간 요건이 충족되는지 여부를 판정하기 위한 검사를 수행하 도록 구성되고, 상기 장치는,
    신호 스트림의 통신을 위해 연결된 복수의 처리 유닛(10)과,
    병렬로 실행되어야 하는 작업의 조합을 실행 시간 동안 선택하기 위한 제어 유닛(62)과,
    각각의 특정 처리 유닛(10)에 대하여, 상기 특정 처리 유닛(10)에 할당된 상기 태스크에 대한 최악 실행 시간의 합계가 상기 특정 처리 유닛(10)에 할당된 임의의 태스크에 대해 정의된 주기 시간(T)을 초과하지 않는지 검사하여, 상기 처리 유닛(10)의 각 하나에 상기 선택된 작업의 조합의 태스크의 그룹을 할당하도록 구성된 회로(62) - 상기 처리 유닛(10)은 상기 선택된 작업의 조합을 동시에 실행하고, 각 처리 유닛(10)은 그 처리 유닛에 할당된 상기 태스크의 그룹을 시간-다중화 실행함 -
    를 포함하는 장치.
  13. 태스크를 포함하는 작업에 대해 요구되는 실행 파라미터를 계산하기 위한 장치에 있어서,
    각 태스크(100)는, 상기 태스크(100)가 수신하는 스트림으로부터의 데이터 청크를 처리하고/하거나 상기 태스크(100)가 생성하는 스트림으로부터 청크를 출력하는 동작의 반복 실행에 의해 수행되고,
    각 작업은 서로 스트림 통신하는 복수의 처리 태스크를 포함하고,
    상기 장치는, 상기 태스크의 실행을 시작하기 위한 기회가 최대 상기 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 있는 각각의 환경에서 상기 작업의 각 태스크가 실행되는 경우, 개별적으로 각 작업에 대하여 예비 계산을 수행하여 요구된 최소 스트림 처리 속도를 지원하도록 상기 작업에 대해 요구되는 실행 파라미터를 결정하도록 구성되는
    장치.
  14. 제 13 항에 있어서,
    상기 예비 계산의 수행은, 버퍼 크기가 상기 처리 속도가 충족되는 것을 보증하기에 충분하도록, 각 태스크(100) 쌍 사이에 상기 데이터 청크를 버퍼링하기 위한 버퍼의 버퍼 메모리 크기를 계산하는 것을 포함하고,
    적어도 상기 계산된 크기의 버퍼 메모리 스페이스는 실행 중에 상기 태스크 쌍 사이에 버퍼링을 위해서 예비되는
    장치.
  15. 제 14 항에 있어서,
    제 1 태스크와 제 2 태스크 사이에 데이터를 버퍼링하기 위한 상기 버퍼 크기 중 적어도 하나는,
    상기 작업의 연속하는 태스크(100)의 경로를 식별하고 - 각 경로에 있어서, 각 연속하는 태스크(100)는 동작을 시작하기 위한 그 경로에서의 선행 태스크(100)의 성능에 종속하고, 각 경로는 상기 제 1 태스크(100)로부터 시작하여, 상기 제 2 태스크(100)에서 끝남 -,
    각 식별된 경로에 대하여, 상기 태스크(100)의 실행을 시작하기 위한 기회가 최대 상기 태스크에 대해 정의된 주기 시간(T)만큼 떨어져 발생하는 각각의 환경에서 실행되는 경우, 상기 태스크(100)에 실행하기 위한 기회가 제공되기 이전의 최대 대기 시간에 더하여, 상기 경로를 따라 상기 태스크(100)의 최악 실행 시간의 합계에 대한 정보를 계산하며,
    연속하는 청크들 사이에 요구된 최대 처리 시간 및 임의의 식별된 경로에 대한 상기 합계 중 최고의 비율로부터 버퍼 크기를 결정함으로써 계산되는
    장치.
  16. 제 14 항에 있어서,
    상기 예비 계산의 수행은, 상기 환경에서 항상 처리 속도가 충족되는 것을 보증하는 것이 가능한지 여부의 판정을 수행하는 단계와, 상기 처리 속도가 항상 충족되는 것이 보증될 수 없는 경우에 상기 태스크(100) 중 적어도 하나에 대해 정의된 주기 시간을 감소시키고, 상기 감소된 주기 시간을 이용하여 상기 예비 계산을 수행하는 것을 반복하는 단계를 포함하는
    장치.
  17. 실시간 요건이 충족되는지 여부를 판정하기 위한 검사를 수행하는 단계를 포함하는 신호 스트림 처리 작업의 조합을 처리하는 방법에 있어서,
    각각 태스크(100)가 수신하는 스트림으로부터의 데이터 청크를 처리하고/하거나 태스크(100)가 생성하는 스트림으로부터 청크를 출력하는 동작의 반복 실행에 의해 수행되는 처리 태스크(100)를 정의하는 단계와,
    각각 서로 스트림 통신하는 복수의 상기 처리 태스크(100)를 포함하는 복수의 작업을 정의하는 단계와,
    병렬 실행을 위한 작업의 조합을 선택하는 단계와,
    각각의 특정 처리 유닛(10)에 대하여, 상기 특정 처리 유닛(10)에 할당된 상기 태스(100)크에 대한 최악 실행 시간의 합계가 상기 특정 처리 유닛(10)에 할당된 임의의 태스크에 대해 정의된 주기 시간(T)을 초과하지 않는지 검사하여, 상기 처리 유닛(10)의 각 하나에 상기 선택된 작업의 조합의 태스크(100)의 그룹을 할당하는 단계와,
    상기 태스크의 그룹을 시간-다중화 실행하여, 동시에 상기 선택된 작업의 조합을 실행하는 단계
    를 포함하는 방법.
  18. 신호 스트림 처리 작업의 조합을 실행하기 위한 실행 파라미터를 계산하는 방법에 있어서,
    각각 태스크(100)가 수신하는 스트림으로부터의 데이터 청크를 처리하고/하거나 태스크(100)가 생성하는 스트림으로부터 데이터 청크를 출력하는 동작의 반복 실행에 의해 수행되는 처리 태스크(100)를 정의하는 단계와,
    각각 서로 스트림 통신하는 복수의 상기 처리 태스크(100)를 포함하는 복수의 작업을 정의하는 단계와,
    상기 태스크(100)의 실행을 시작하기 위한 기회가 최대 상기 태스크에 대해 정의된 주기 시간(T)만큼 분리되는 각각의 환경에 있어서 상기 작업의 각 태스크(100)가 실행되는 경우, 개별적으로 각 작업에 대하여 예비 계산을 수행하여 요구된 최소 스트림 처리 속도를 지원하도록 상기 작업에 대해 요구되는 실행 파라미터를 결정하는 단계
    를 포함하는 방법.
  19. 프로그램가능 프로세서로 하여금 제 17 항의 방법을 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 프로그램 제품.
  20. 프로그램가능 프로세서로 하여금 제 18 항의 방법을 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 프로그램 제품.
KR1020067024668A 2004-05-27 2005-05-20 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품 KR20070031307A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067024668A KR20070031307A (ko) 2004-05-27 2005-05-20 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP04102350.8 2004-05-27
KR1020067024668A KR20070031307A (ko) 2004-05-27 2005-05-20 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품

Publications (1)

Publication Number Publication Date
KR20070031307A true KR20070031307A (ko) 2007-03-19

Family

ID=43655667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067024668A KR20070031307A (ko) 2004-05-27 2005-05-20 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품

Country Status (1)

Country Link
KR (1) KR20070031307A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150140708A (ko) * 2013-04-09 2015-12-16 크로노-세이프 임계 실시간 시스템에서 태스크의 실행 방법
CN110567122A (zh) * 2019-09-16 2019-12-13 珠海格力电器股份有限公司 空调区域控制方法、装置及系统
KR20210092689A (ko) * 2020-01-15 2021-07-26 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150140708A (ko) * 2013-04-09 2015-12-16 크로노-세이프 임계 실시간 시스템에서 태스크의 실행 방법
CN110567122A (zh) * 2019-09-16 2019-12-13 珠海格力电器股份有限公司 空调区域控制方法、装置及系统
KR20210092689A (ko) * 2020-01-15 2021-07-26 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 그래프 데이터베이스의 순회 방법, 장치, 설비 및 저장매체
US11734076B2 (en) 2020-01-15 2023-08-22 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for traversing graph database based on allocation of threads to operators

Similar Documents

Publication Publication Date Title
US20080022288A1 (en) Signal Processing Appatatus
Xiao et al. {AntMan}: Dynamic scaling on {GPU} clusters for deep learning
Stuijk et al. A predictable multiprocessor design flow for streaming applications with dynamic behaviour
RU2771008C1 (ru) Способ и устройство для обработки задач на основе нейронной сети
JP2772304B2 (ja) 並列処理の負荷均一化方法
JP4781089B2 (ja) タスク割り当て方法およびタスク割り当て装置
KR100628492B1 (ko) 실시간 동작 수행방법 및 시스템
JP2019079526A (ja) マルチタイル、マルチチップ処理構成における同期
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
KR20050011689A (ko) 실시간 동작 수행방법 및 시스템
KR20050016170A (ko) 실시간 동작 수행방법 및 시스템
US9471387B2 (en) Scheduling in job execution
CN111861412A (zh) 面向完成时间优化的科学工作流调度方法及系统
Biedert et al. A Task-Based Parallel Rendering Component For Large-Scale Visualization Applications.
Yang et al. Deeprt: A soft real time scheduler for computer vision applications on the edge
US20130125131A1 (en) Multi-core processor system, thread control method, and computer product
Stavrinides et al. The impact of input error on the scheduling of task graphs with imprecise computations in heterogeneous distributed real-time systems
KR20070031307A (ko) 신호 스트림 처리 작업의 조합을 실행하기 위한 방법, 장치및 시스템, 실행 파라미터를 계산하는 방법 및 장치,컴퓨터 프로그램 제품
US20230123634A1 (en) Dynamic, low-latency, dependency-aware scheduling on simd-like devices for processing of recurring and non-recurring executions of time-series data
JP2006099579A (ja) 情報処理装置及び情報処理方法
KR101421054B1 (ko) 버퍼를 이용한 연산 분산 방법 및 이를 이용한 연산 분산시스템
Heath et al. Development, analysis, and verification of a parallel hybrid dataflow computer architectural framework and associated load-balancing strategies and algorithms via parallel simulation
EP2132630A1 (en) Multiprocessing system and method
Pang et al. Efficient CUDA stream management for multi-DNN real-time inference on embedded GPUs
Kumar et al. Global analysis of resource arbitration for MPSoC

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Withdrawal due to no request for examination