KR102589876B1 - 단계 지원 작업 흐름을 위한 방법 및 장치 - Google Patents

단계 지원 작업 흐름을 위한 방법 및 장치 Download PDF

Info

Publication number
KR102589876B1
KR102589876B1 KR1020217029265A KR20217029265A KR102589876B1 KR 102589876 B1 KR102589876 B1 KR 102589876B1 KR 1020217029265 A KR1020217029265 A KR 1020217029265A KR 20217029265 A KR20217029265 A KR 20217029265A KR 102589876 B1 KR102589876 B1 KR 102589876B1
Authority
KR
South Korea
Prior art keywords
task
workflow
processing
tasks
data
Prior art date
Application number
KR1020217029265A
Other languages
English (en)
Other versions
KR20210125559A (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 KR20210125559A publication Critical patent/KR20210125559A/ko
Application granted granted Critical
Publication of KR102589876B1 publication Critical patent/KR102589876B1/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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Strategic Management (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • General Engineering & Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시의 양태들은 작업 흐름의 작업 흐름 정보를 수신하도록 구성된 프로세싱 회로를 포함하는 장치 및 방법을 제공한다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 제1 버퍼링 태스크 및 제1 프로세싱 태스크와 제2 프로세싱 태스크를 포함하는 복수의 프로세싱 태스크들을 포함하는 작업 흐름을 생성한다. 제1 프로세싱 태스크는 입력 데이터의 서브세트가 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 된다. 제1 버퍼링 태스크 내의 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크는 실행 상태로부터 비실행 상태로 전환하게 된다. 후속적으로, 제2 프로세싱 태스크는 제1 버퍼링 태스크 내의 제1 프로세싱된 서브세트 데이터가 프로세싱되는 실행 상태에 진입하게 된다.

Description

단계 지원 작업 흐름을 위한 방법 및 장치
참조에 의한 포함
본 출원은, 2019년 9월 28일에 출원된, 발명의 명칭이 "Step-Enabled Stateless Workflows for Cloud Computing"인 미국 가출원 제62/907,627호 및 2019년 9월 28일에 출원된, 발명의 명칭이 "Indexed FIFO Functions for Segmented Processing in Cloud"인 미국 가출원 제62/907,625호에 대한 우선권의 이익을 주장하는, 2020년 9월 17일에 출원된, 발명의 명칭이 "Method and Apparatus for a Step-Enabled Workflow"인 미국 특허 출원 제17/024,193호에 대한 우선권의 이익을 주장한다. 선행 출원의 전체 개시는 이로써 그 전체가 참고로 포함된다.
기술 분야
본 개시는 하나 이상의 작업 흐름의 프로세싱을 포함하는 데이터 프로세싱에 일반적으로 관련된 실시예를 기술한다.
본 명세서에서 제공되는 배경기술 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 현재 기명된 발명자들의 연구가 이 배경기술 섹션에 기술되어 있는 한, 이 연구는 물론, 출원 당시에 선행 기술로서 달리 자격이 없을 수 있는 설명의 양태들은 명시적으로든 암시적으로든 본 개시에 대한 선행 기술로서 인정되지 않는다.
작업 흐름은 데이터 프로세싱 시스템에서, 미디어 데이터와 같은, 데이터를 프로세싱하기 위한 데이터 프로세싱에서 사용될 수 있다. 일부 예에서, 작업 흐름은 많은 수의 프로세싱 태스크들을 포함한다. 많은 수의 태스크들이 데이터를 프로세싱하기 위해 병렬로 실행될 때, 데이터 프로세싱 시스템은 많은 양의 리소스들을 전용해야 한다.
본 개시의 양태들은 하나 이상의 작업 흐름을 프로세싱하기 위한 방법 및 장치를 제공한다. 이 장치는 작업 흐름의 작업 흐름 정보를 수신하도록 구성된 프로세싱 회로를 포함한다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름을 생성한다. 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함한다. 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함한다. 프로세싱 회로는 제1 프로세싱 태스크로 하여금 입력 데이터의 서브세트가 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 한다. 프로세싱 회로는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크로 하여금 실행 상태로부터 비실행 상태로 전환하게 한다. 제1 프로세싱 태스크가 비실행 상태로 전환된 후에, 프로세싱 회로는 제2 프로세싱 태스크로 하여금 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 한다.
일 실시예에서, 제2 프로세싱 태스크는 실행 상태에서 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력하도록 구성된다. 프로세싱 회로는 (i) 제2 버퍼링 태스크에 저장된 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공되는 것 중 하나에 기초하여 제2 프로세싱 태스크로 하여금 실행 상태로부터 비실행 상태로 전환하게 한다.
일 실시예에서, 복수의 프로세싱 태스크들은 각자의 태스크 세그먼트 지속기간(TSD)으로 구성된다. 복수의 프로세싱 태스크들 각각은 TSD를 벗어난 데이터와 독립적으로 각자의 TSD와 동일한 크기를 갖는 데이터 양을 프로세싱하도록 구성된다. 프로세싱 회로는 작업 흐름 세그먼트 지속기간(WSD)을 TSD들의 최소 공배수로 결정한다. 제1 임계치는 (i) TSD들, (ii) WSD, 및 (iii) WSD와 제1 프로세싱 태스크가 연속적으로 실행되도록 구성된 단계들의 개수를 나타내는 파라미터 S 중 하나에 기초할 수 있다.
일 실시예에서, 제1 버퍼링 태스크는 iFIFO(indexed first-in-first-out) 버퍼로 구성된 iFIFO 태스크이다. iFIFO 태스크는 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성된다. 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱될 수 있다. iFIFO 버퍼 크기는 길이 및 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초할 수 있다. iFIFO 태스크는 iFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. iFIFO 태스크는 iFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
일 실시예에서, 제1 버퍼링 태스크는 복수의 iFIFO 버퍼들로 구성된 MiFIFO(multi-index first-in-first-out) 태스크이다. MiFIFO 태스크는 제1 프로세싱 태스크에 대한 하나 이상의 출력을 제공하도록 구성된다. 복수의 iFIFO 버퍼들 각각은 하나 이상의 출력의 각자의 출력으로부터의 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성될 수 있다. 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱될 수 있다. 각각의 iFIFO 버퍼의 버퍼 크기는 길이 및 각자의 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초할 수 있다. MiFIFO 태스크는 MiFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. MiFIFO 태스크는 MiFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
일 실시예에서, 제1 프로세싱 태스크가 비실행 상태에 있을 때 제1 프로세싱 태스크의 상태 정보가 저장되지 않는다. 비실행 상태는 유휴 상태와 소멸 상태 중 하나를 포함한다.
일 실시예에서, 작업 흐름은 iFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이고, 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
일 실시예에서, 입력 데이터는 입력 데이터의 서브세트 및 입력 데이터의 다른 서브세트를 포함한다. 작업 흐름은 iFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이다. 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 서브세트를 순차적으로 프로세싱할 수 있다. 입력 데이터의 서브세트가 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 다른 서브세트를 순차적으로 프로세싱한다. 복수의 프로세싱 태스크들 중 나머지 프로세싱 태스크들은 비실행 상태들에 있을 수 있다. 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
일 실시예에서, 작업 흐름은 MiFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이고, 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
일 실시예에서, 입력 데이터는 입력 데이터의 서브세트 및 입력 데이터의 다른 서브세트를 포함한다. 작업 흐름은 MiFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이다. 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 서브세트를 순차적으로 프로세싱할 수 있다. 입력 데이터의 서브세트가 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 프로세싱 회로는 복수의 프로세싱 태스크들에 의해 입력 데이터의 다른 서브세트를 순차적으로 프로세싱할 수 있다. 복수의 프로세싱 태스크들 중 나머지 프로세싱 태스크들은 비실행 상태들에 있을 수 있다. 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
프로세싱 회로는 복수의 작업 흐름들의 작업 흐름 정보를 수신하도록 구성될 수 있다. 프로세싱 회로는, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 복수의 작업 흐름들을 생성한다. 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함한다. 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함한다. 프로세싱 회로는 제1 작업 흐름으로 하여금 입력 데이터의 서브세트가 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 한다. 프로세싱 회로는 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 제1 작업 흐름으로 하여금 실행 상태로부터 비실행 상태로 전환하게 한다. 제1 작업 흐름이 비실행 상태로 전환된 후에, 프로세싱 회로는 제2 작업 흐름으로 하여금 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 한다.
일 실시예에서, 제1 작업 흐름의 비실행 상태는 유휴 상태 및 소멸 상태 중 하나를 포함한다. 제1 작업 흐름이 비실행 상태에 있을 때 제1 작업 흐름의 상태 정보가 저장되지 않는다. 제1 작업 흐름은 입력 데이터의 서브세트 이외의 나머지 서브세트들과 독립적으로 입력 데이터의 서브세트를 프로세싱하도록 구성된다.
일 실시예에서, 버퍼링 태스크는 iFIFO 버퍼로 구성된 iFIFO 태스크이다. iFIFO 태스크는 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성된다. 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱될 수 있다. iFIFO 버퍼 크기는 길이 및 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초할 수 있다. iFIFO 태스크는 iFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. iFIFO 태스크는 iFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
일 실시예에서, 버퍼링 태스크는 복수의 iFIFO 버퍼들로 구성된 MiFIFO 태스크이다. MiFIFO 태스크는 제1 작업 흐름에 대한 하나 이상의 출력을 제공하도록 구성된다. 복수의 iFIFO 버퍼들 각각은 하나 이상의 출력의 각자의 출력으로부터의 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성된다. 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱된다. 각각의 iFIFO 버퍼의 버퍼 크기는 길이 및 각자의 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초할 수 있다. MiFIFO 태스크는 MiFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트를 생성하도록 구성된다. MiFIFO 태스크는 MiFIFO 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성된다.
본 개시의 양태들은 또한 컴퓨터에 의해 실행될 때 컴퓨터로 하여금 하나 이상의 작업 흐름을 프로세싱하기 위한 방법들 중 임의의 것을 수행하게 하는 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체를 제공한다.
개시된 주제의 추가의 특징, 본질 및 다양한 장점은 이하의 상세한 설명 및 첨부 도면으로부터 더 명백해질 것이다.
도 1은 본 개시의 실시예에 따른 예시적인 데이터 프로세싱 시스템을 도시한다.
도 2a 내지 도 2c는 본 개시의 실시예들에 따른 작업 흐름들의 예들을 도시한다.
도 2d는 본 개시의 실시예에 따른 복수의 작업 흐름들의 예를 도시한다.
도 3은 본 개시의 실시예에 따른 태스크에 대한 태스크 세그먼트 지속기간(TSD)의 예를 도시한다.
도 4a는 본 개시의 실시예에 따른 프로세싱 태스크의 예시적인 태스크 수명 주기를 도시한다.
도 4b는 본 개시의 실시예에 따른 작업 흐름의 예시적인 태스크 수명 주기를 도시한다.
도 5는 본 개시의 실시예에 따른 작업 흐름의 예를 도시한다.
도 6은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 7은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 8은 본 개시의 실시예에 따른 프로세스를 개략적으로 나타내는 플로차트를 도시한다.
도 9는 실시예에 따른 컴퓨터 시스템의 개략적 예시를 도시한다.
본 개시의 양태들은 데이터 프로세싱(예를 들면, 네트워크에서의 미디어 프로세싱)에 관한 것이다. 데이터 프로세싱 소스(예를 들면, 네트워크 기반 미디어 프로세싱(NBMP) 소스)는 요청된 데이터 프로세싱(예를 들면, 요청된 미디어 프로세싱)을 기술하고 프로세싱될 데이터(예를 들면, 미디어 데이터)에 대한 제어 정보를 제공할 수 있다. 그에 따라, 작업 흐름 관리자(예를 들면, NBMP 작업 흐름 관리자)는 작업 흐름(예를 들면, 미디어 프로세싱 작업 흐름, NBMP 작업 흐름)을 확립할 수 있고 작업 흐름이 준비 완료되었으며 따라서 데이터 프로세싱이 시작될 수 있다는 것을 데이터 프로세싱 소스(예를 들면, NBMP 소스)에 통보할 수 있다. 데이터 소스(들)(예를 들면, 미디어 소스(들))는 이어서 데이터를, 예를 들어, 프로세싱을 위해 네트워크로 전송하기 시작할 수 있다.
일반적으로, 작업 흐름은 프로세싱 태스크들 또는 태스크들(예를 들면, 미디어 프로세싱 태스크들)을 포함할 수 있다. 연결 그래프는 프로세싱 태스크들 간의 입력/출력 관계들을 나타내기 위해 연결들을 사용하여 작업 흐름을 나타낼 수 있다. 따라서, 작업 흐름은 프로세싱 태스크들의 연결 그래프로서 간주될 수 있다. 각각의 태스크는, 비디오 디코딩, 비디오 스티칭, 비디오 인코딩 등과 같은, 동작(예를 들면, 미디어 프로세싱 동작)을 수행할 수 있다. 작업 흐름 관리자는 각각의 태스크와 작업 흐름 출력을 구성하고 모니터링하는 것에 의해 작업 흐름의 올바른 동작을 보장할 수 있다. 작업 흐름 관리자는 프로세싱 기능들(예를 들면, 미디어 프로세싱 기능들)을 선택하고, 예를 들어, 데이터 프로세싱 소스(예를 들면, NBMP 소스)로부터 수신되는 작업 흐름 설명에 기초하여 프로세싱 기능들(예를 들면, 미디어 프로세싱 기능들)을 각자의 태스크들로서 인스턴스화하도록 구성될 수 있다.
프로세싱 태스크들을 실행하도록 구성된 프로세싱 엔티티들(예를 들면, 미디어 프로세싱 엔티티들)이 확립되고, 로딩되며, 인스턴스화되고 모니터링될 수 있다. 애플리케이션 프로그래밍 인터페이스들(API들)과 같은 인터페이스들이 데이터 프로세싱 소스와 작업 흐름 관리자 사이에, 작업 흐름 관리자와 프로세싱 태스크(들) 사이에 정의될 수 있고, 적절한 기능(들)을 발견하기 위한 API가 정의될 수 있다. 일반적으로, 데이터 프로세싱 시스템 또는 플랫폼(예를 들면, NBMP 플랫폼)은 데이터 형식(예를 들면, 미디어 형식) 및 프로토콜에 무관(agnostic)할 수 있다. 데이터 프로세싱 시스템은 데이터 소스(예를 들면, 미디어 소스), 작업 흐름 관리자 및 태스크들 간에 교환되는 데이터(예를 들면, 미디어 데이터), 메타데이터 및 데이터에 대한 보조 정보 형식들을 식별하고 시그널링할 수 있다.
데이터 프로세싱 프레임워크(예를 들면, NBMP 프레임워크)는 데이터 프로세싱을 위해 디지털 네트워크들을 통해 연결된 다양한 엔티티들 간의 데이터 형식들 및 API들 둘 모두를 포함한 인터페이스들을 정의할 수 있다. 사용자들은 효율적이고 지능적인 프로세싱을 위해 원격으로 사용자 동작들에 액세스하여 이를 구성할 수 있다. 데이터가, 예를 들어, 네트워크에 업로드될 수 있고, 프로세싱 태스크들이 인스턴스화될 수 있으며, 프로세싱 태스크들이 추가로 구성될 수 있다. 데이터 프로세싱 프레임워크는 데이터 프로세싱 파이프라인들(예를 들면, 미디어 프로세싱 파이프라인들)의 동적 생성은 물론 프로세싱된 데이터 및 메타데이터에 대한 실시간 또는 지연된 방식의 액세스를 가능하게 할 수 있다. 데이터 프로세싱 파이프라인에서 데이터 소스, 작업 흐름 관리자 및 데이터 프로세싱 엔티티들 간에 사용되는 데이터 및 메타데이터 형식들이 명시될 수 있다.
데이터 프로세싱 프레임워크는 클라이언트들(예를 들면, 디지털 미디어의 제작자들, 서비스 제공업체들 및 소비자들)이, 예를 들어, 네트워크 내의 데이터 프로세싱 엔티티들에 의해 수행될 데이터 프로세싱 동작들을 기술할 수 있게 할 수 있다. 작업 흐름은 인터페이스들(예를 들면, NBMP API들)을 통해 액세스 가능한 데이터 프로세싱 기능들의 세트를 구성하는 것에 의해 기술될 수 있다. 데이터 프로세싱 엔티티(예를 들면, 미디어 프로세싱 엔티티(MPE))는 데이터 소스(들) 또는 다른 태스크들로부터 수신되는 데이터 및 관련 메타데이터에 적용되는 프로세싱 태스크들을 실행할 수 있다. 데이터 프로세싱 엔티티(예를 들면, MPE)는 프로세싱 태스크들을 구성, 관리 및 모니터링하기 위한 능력을 제공할 수 있다. 데이터 프로세싱 태스크는 데이터 및 메타데이터 입력(들)에 적용되어, 데이터 싱크(예를 들면, 미디어 싱크) 또는 다른 데이터 프로세싱 태스크들(예를 들면, 미디어 프로세싱 태스크들)에 의해 소비될 데이터 및 관련 메타데이터 출력(들)을 생성하는 프로세스일 수 있다.
데이터 프로세싱 프레임워크는 스트리밍, 파일 전달, 푸시 기반 점진적 다운로드, 하이브리드 전달, 다중 경로 및 이종 네트워크 환경들과 같은 다양한 전달 방법들을 지원할 수 있다.
도 1은 본 개시의 실시예에 따른 예시적인 데이터 프로세싱 시스템(예를 들면, NBMP 시스템, NBMP 참조 아키텍처, NBMP 아키텍처)(100)을 도시한다. 데이터 프로세싱 시스템(100)은, 데이터 소스(예를 들면, NBMP 소스, NBMP 소스 엔티티)(101), 작업 흐름 관리자(예를 들면, NBMP 작업 흐름 관리자)(103), 기능 리포지토리(105), 데이터 소스 또는 데이터 소스 엔티티(예를 들면, 미디어 소스, 미디어 소스 엔티티)(111), 데이터 프로세싱 엔티티(예를 들면, MPE)(113), 데이터 싱크 또는 데이터 싱크 엔티티(예를 들면, 미디어 싱크 또는 미디어 싱크 엔티티)(115), 제3자 엔티티 등과 같은, 복수의 엔티티들을 포함할 수 있다. 데이터 프로세싱 시스템(100)은 추가적인 데이터 소스(들), 데이터 싱크(들) 및/또는 데이터 프로세싱 엔티티들을 포함할 수 있다. 데이터 프로세싱 시스템(100)은 네트워크 내의 하나 이상의 프로세싱 엔티티에 걸쳐 데이터를 프로세싱할 수 있다. 다양한 데이터 및 데이터에 대한 제어 정보(또는 제어 데이터)와 같은 정보가 데이터 프로세싱 시스템(100) 내의 복수의 엔티티들 간에 통신될 수 있다.
논의를 위한 맥락을 제공하기 위해, 데이터 프로세싱 시스템(100)은 아래에서 NBMP 시스템(100)으로서 기술된다. 이 설명들은 임의의 데이터 프로세싱 시스템에 적합하게 적응될 수 있다.
NBMP 소스(101)는 네트워크에서의 미디어 프로세싱을 기술하거나 달리 나타낼 수 있다. 기능 리포지토리(105)는 다양한 NBMP 기능들의 NBMP 기능 설명들을 포함할 수 있다. NBMP 소스(101) 및 작업 흐름 관리자(103)는 기능 리포지토리(105)로부터 NBMP 기능 설명들 또는 기능들을 검색할 수 있다. NBMP 기능은 독립형(standalone) 및 자기 완비적(self-contained) 미디어 프로세싱 동작의 구현 및/또는 동작의 대응하는 설명을 지칭할 수 있다.
프로세싱 태스크 또는 태스크는 MPE(113)에 의해 실행되는 NBMP 기능의 런타임 인스턴스를 지칭할 수 있다. NBMP 작업 흐름 또는 작업 흐름은 요청된 미디어 프로세싱을 달성하는 하나 이상의 연결된 태스크(들)의 그래프(예를 들면, 유향 비순환 그래프(directed acyclic graph, DAG))에 의해 표현될 수 있다. 작업 흐름 관리자(103)는, 예를 들어, 작업 흐름 설명 문서(workflow description document, WDD)에 기초하여, 작업 흐름을 생성, 제어, 관리 및 모니터링하기 위한 태스크(들)를 프로비저닝하고 태스크(들)를 연결시킬 수 있다.
미디어 소스(111)는 작업 흐름에 의해 프로세싱될 미디어 콘텐츠(예를 들면, 미디어 데이터, 보충 정보)를 제공할 수 있다. 보충 정보는 미디어 데이터에 관련된 메타데이터 또는 보조 정보를 포함할 수 있다. 미디어 소스(111)는 작업 흐름에 입력을 제공할 수 있다. 미디어 싱크(115)는 작업 흐름의 출력을 소비할 수 있다. MPE(113)는 미디어 콘텐츠를 프로세싱하기 위해 하나 이상의 미디어 프로세싱 태스크(들)를 실행할 수 있다.
NBMP 시스템(100) 내의 상이한 엔티티들(예를 들면, NBMP 소스(101), 작업 흐름 관리자(103) 및 MPE(113))은 API들을 사용하여 미디어 서비스 요청들을 호출하고 그에 응답할 수 있다. API들은 NBMP 작업 흐름 API 또는 작업 흐름 API, 기능 발견 API 및 태스크 API를 포함할 수 있다. 작업 흐름 API는 NBMP 소스(101)와 작업 흐름 관리자(103) 사이의 인터페이스를 제공할 수 있다. 태스크 API는 작업 흐름 관리자(103)와 미디어 프로세싱 태스크들 사이의 인터페이스를 제공할 수 있다. 기능 발견 API는 작업 흐름 관리자(103)/NBMP 소스(101)와 기능 리포지토리(105) 사이의 인터페이스를 제공할 수 있다.
위에서 기술된 NBMP 인터페이스들은 네트워크에서의 미디어 프로세싱 작업 흐름들을 생성하고 제어하는 데 사용될 수 있다. NBMP 시스템(100)은 제어 평면과 미디어 평면(또는 미디어 데이터 평면)으로 분할될 수 있다. 제어 평면은 작업 흐름 API, 기능 발견 API 및 태스크 API를 포함할 수 있다.
작업 흐름 API는 미디어 프로세싱 작업 흐름을 생성하고 제어하기 위해 NBMP 소스(101)에 의해 사용될 수 있다. NBMP 소스(101)는 네트워크에서의 미디어 프로세싱을 구성하고 제어하기 위해 작업 흐름 관리자(103)와 통신하는 데 작업 흐름 API를 사용할 수 있다. NBMP 소스(101)가 작업 흐름 API의 동작에 작업 흐름 리소스(WR)를 포함시키는 것에 의해 요청을 작업 흐름 관리자(103)로 송신할 때, 작업 흐름 관리자(103)는 WR, 포함된 WDD 및 대응하는 디스크립터들을 파싱하고, 요청된 동작에 따라 적절한 액션들을 취할수 있다. 이어서, 작업 흐름 관리자(103)는 응답으로 요청을 확인응답할 수 있다. 작업 흐름 API 동작들은 작업 흐름을 생성하는 것(예를 들면, CreateWorkflow), 작업 흐름을 업데이트하는 것(예를 들면, UpdateWorkflow), 작업 흐름을 삭제하는 것(예를 들면, DeleteWorkflow), 작업 흐름을 검색하는 것(예를 들면, RetrieveWorkflow) 등을 포함할 수 있다.
기능 발견 API는 작업 흐름 관리자(103) 및/또는 NBMP 소스(101)가 미디어 프로세싱 작업 흐름의 일부로서 로딩될 수 있는 미디어 프로세싱 기능들을 발견하기 위한 수단을 제공할 수 있다.
태스크 API는 런타임에서 태스크(들)(예를 들면, MPE(113)에 의해 실행되는 태스크 1 및 태스크 2)를 구성하고 모니터링하기 위해 작업 흐름 관리자(103)에 의해 사용될 수 있다. 태스크 API는, 예를 들어, 태스크에 대한 리소스들이 MPE(113)에 할당된 후에, 작업 흐름 관리자(103)에 의한 미디어 프로세싱 태스크들의 구성을 위한 인터페이스(들)를 정의할 수 있다. 태스크 API 동작들은 태스크를 생성하는 것(예를 들면, CreateTask), 태스크를 업데이트하는 것(예를 들면, UpdateTask), 태스크를 가져오는 것(예를 들면, GetTask), 태스크를 삭제하는 것(예를 들면, DeleteTask) 등을 포함할 수 있다.
미디어 평면에서, NBMP 소스(111)와 태스크(들) 사이는 물론 태스크들 사이의 미디어 형식들, 메타데이터 및 보충 정보 형식들이 정의될 수 있다.
작업 흐름 설명(WD)은 NBMP 소스(101)로부터 작업 흐름 관리자(103)로 전달될 수 있다. WD는 작업 흐름에 대한 입력 데이터 및 출력 데이터, 기능들 및 다른 요구사항들과 같은 정보를 기술할 수 있다.
작업 흐름 관리자(103)는 NBMP 소스(101)로부터 WDD를 수신할 수 있고 요청된 미디어 프로세싱을 위한 작업 흐름을 구축할 수 있다. 작업 흐름 절차에서, 미디어 프로세싱 기능들이, 예를 들어, 기능 리포지토리(105)로부터 선택될 수 있으며, 이어서 대응하는 미디어 프로세싱 태스크들이 구성되고 하나 이상의 MPE(예를 들면, MPE(113)를 포함함)의 세트에 분배될 수 있다.
기능 리포지토리(105)에 의해 제공되는 기능들의 세트는 NBMP 소스(101) 및 작업 흐름 관리자(103)에 의해 판독될 수 있다. 일 실시예에서, NBMP 소스(101)는 기능 리포지토리(105)에 있는 기능들의 세트를 사용한 작업 흐름의 생성을 요청한다. 그에 따라, NBMP 소스(101)는 작업 흐름에 대한 기능들을 선택하도록 구성된다. NBMP 소스(101)는 아래에서 기술되는 바와 같이 작업 흐름의 생성을 요청할 수 있다. NBMP 소스(101)는 작업 흐름을 생성하는 데 이용되는 미디어 프로세싱 태스크들의 설명을 사용할 수 있으며, 미디어 프로세싱 태스크들의 입력들과 출력들의 연결을 정의하기 위한 연결 맵을 명시할 수 있다. 작업 흐름 관리자(103)가 NBMP 소스(101)로부터 상기 정보를 수신할 때, 작업 흐름 관리자(103)는 각자의 기능 이름들에 기초하여 미디어 프로세싱 태스크들을 인스턴스화할 수 있고 연결 맵에 따라 미디어 프로세싱 태스크들을 연결시킬 수 있다.
대안적으로, NBMP 소스(101)는 작업 흐름 관리자(103)가 작업 흐름을 구성하는 데 이용할 수 있는 키워드들의 세트를 사용하여 작업 흐름의 생성을 요청할 수 있다. 그에 따라, NBMP 소스(101)는 작업 흐름에 삽입될 기능들의 세트를 인식하지 못할 수 있다. NBMP 소스(101)는 아래에서 기술되는 바와 같이 작업 흐름의 생성을 요청할 수 있다. NBMP 소스(101)는 작업 흐름 관리자(103)가 적절한 기능들을 찾는 데 이용할 수 있는 키워드들의 세트를 사용할 수 있으며 적합한 작업 흐름 설명을 사용하여 작업 흐름의 요구사항들을 명시할 수 있다.
작업 흐름 관리자(103)가 NBMP 소스(101)로부터 상기 정보(예를 들면, 키워드들의 세트)를 수신할 때, 작업 흐름 관리자(103)는, 예를 들어, 프로세싱 디스크립터에 명시된 키워드들을 사용하여 적절한 기능들을 탐색하는 것에 의해 작업 흐름을 생성할 수 있다. 이어서 작업 흐름 관리자(103)는 미디어 프로세싱 태스크들을 프로비저닝하고 미디어 프로세싱 태스크들을 연결시켜 최종 작업 흐름을 생성하기 위해 작업 흐름 설명 내의 다른 디스크립터들을 사용할 수 있다.
작업 흐름 관리자(103)의 프로세싱 모델은 아래와 같이 기술될 수 있다.
작업 흐름 관리자(103)는 아래와 같이 이용 가능한 미디어 프로세싱 기능들을 발견할 수 있다. NBMP 기능 리포지토리(105)는 요청된 프로세싱을 수행할 수 있는 미디어 프로세싱 기능에 대해 외부 엔티티가 질의할 수 있게 하기 위한 기능 발견 인터페이스(또는 API)를 제공할 수 있다. 작업 흐름 관리자(103)는 탐색 가능한 미디어 프로세싱 기능들의 목록을 제공하는 디렉토리 서비스에 액세스할 수 있다. 작업 흐름 관리자(103)는 작업 흐름에 대한 적절한 기능들을 찾기 위해 작업 흐름 설명 내의 미디어 프로세싱 태스크들의 설명을 사용할 수 있다.
작업 흐름에 대한 미디어 프로세싱 태스크들의 선택은 아래에서 기술될 수 있다. 미디어 프로세싱에 대한 요청이 NBMP 소스(101)로부터 수신될 때, 작업 흐름 관리자(103)는 작업 흐름을 수행할 수 있는 모든 이용 가능한 기능들의 목록을 찾기 위해 기능 리포지토리(105)를 탐색할 수 있다. NBMP 소스(101)로부터의 작업 흐름 설명을 사용하여, 작업 흐름 관리자(103)는, NBMP 소스(101)로부터의 미디어 프로세싱에 대한 정보에 의존할 수 있는, 작업 흐름을 구현할 기능들을 기능 리포지토리(105)로부터 찾을 수 있다. 미디어 프로세싱에 대한 정보는 입력 및 출력 설명, 요청된 프로세싱의 설명, 및 기능 디렉토리(105)에 있는 기능들에 대한 다른 디스크립터들 내의 정보를 포함할 수 있다. 작업 흐름에 포함될 적절한 미디어 프로세싱 태스크들에 소스 요청들을 매핑하는 것은 네트워크에서의 NBMP의 구현의 일부일 수 있다. 태스크 생성 시에 입력 포트 이름들 및 출력 포트 이름들을 사용하여 입력 소스들을 참조하고 링크시키기 위해, 입력 포트들 및 출력 포트들이 입력 스트림들을 참조하는 데 사용될 수 있다.
태스크들로서 인스턴스화될 적절한 기능들에 대한 탐색은 기능 발견 API를 사용하여 작업 흐름 관리자(103)에 의해 수행될 수 있다. 대안적으로, 작업 흐름 관리자(103)는 기능 발견 API를 사용하여 기능 리포지토리(105)에서 일부 또는 모든 적합한 기능들의 상세 정보를 검색할 수 있다. 작업 흐름 관리자(103)는 이어서 NBMP 소스(101)로부터의 미디어 프로세싱에 대한 정보를 각각의 기능의 상이한 디스크립터들과 비교할 수 있다.
선택된 미디어 프로세싱 태스크들이 작업 흐름에 구성될 수 있다. 작업 흐름에 포함될 기능들이 식별될 때, NBMP 작업 흐름 관리자(103)는 해당 기능들을 각자의 태스크들로서 인스턴스화하고 태스크들이 작업 흐름에 추가될 수 있도록 태스크들을 구성할 수 있다. NBMP 작업 흐름 관리자(103)는 NBMP 소스(101)로부터 수신되는 미디어 프로세싱 정보로부터 구성 데이터를 추출하고 대응하는 태스크들을 구성할 수 있다. 태스크들의 구성은 태스크 API(예를 들면, NBMP 태스크 API)를 사용하여 수행될 수 있다.
태스크 할당 및 분배는 아래에서 기술될 수 있다. 작업 흐름 관리자(103)는 프로세싱 배포를 수행하고 미디어 프로세싱 엔티티들을 구성하기 위해 작업 흐름을 사용할 수 있다. 일 예에서, 계산 집약적인 미디어 프로세싱 요청들의 경우, 작업 흐름 관리자(103)는 다수의 계산 인스턴스들을 셋업하고 다수의 계산 인스턴스들 간에 작업 부하를 분배할 수 있다. 따라서, 작업 흐름 관리자(103)는 필요에 따라 다수의 계산 인스턴스들을 연결시켜 구성할 수 있다. 일 예에서, 작업 흐름 관리자(103)는 동일한 태스크를 다수의 인스턴스들에 할당하고, 선택된 스케줄링 메커니즘을 사용하여 다수의 인스턴스들 간에 작업 부하를 분배하기 위해 로드 밸런서(load balancer)를 프로비저닝한다. 대안적인 예에서, 작업 흐름 관리자(103)는 동일한 태스크의 상이한 동작들을 상이한 인스턴스들(예를 들면, 병렬 동작들)에 할당한다. 위에서 기술된 2개의 예 모두에서, 작업 흐름 관리자(103)는 인스턴스들 간의 작업 흐름 경로들을 셋업할 수 있고, 따라서 적절한 작업 부하가 성공적으로 실현될 수 있다. 작업 흐름 관리자(103)는 프로세싱된 미디어 데이터/스트림들을 작업 흐름 그래프에서의 다음 태스크로 푸시하도록(또는 이들이 풀 메커니즘을 통해 이용 가능하게 되도록) 태스크들을 구성할 수 있다.
작업 흐름 관리자(103)가 NBMP 소스(101)로부터 WDD를 수신할 때, 작업 흐름 관리자(103)는 작업 흐름에 삽입될 미디어 프로세싱 기능들의 선택을 수행할 수 있다. 작업 흐름에 포함할 태스크들의 목록이 작성될 때, 작업 흐름 관리자(103)는 이어서 작업 흐름을 준비하기 위해 태스크들을 연결시킬 수 있다.
작업 흐름 관리자(103)는, 예를 들어, WDD로부터의 그래프(예를 들면, DAG)에 의해 표현된 바와 같이, 작업 흐름을 생성할 수 있다. 도 2a는 본 개시의 실시예에 따른 그래프(예를 들면, DAG)(200A)의 예를 도시한다. DAG(200A)는 복수의 노드들(T1 내지 T6) 및 복수의 링크들(또는 연결들)(202 내지 208)을 포함할 수 있다. 일 예에서, DAG(200A)는 작업 흐름(200A)을 나타낸다.
DAG(200A)의 각각의 노드는 작업 흐름(200A)에서의 미디어 프로세싱 태스크를 나타낼 수 있다. 미디어 프로세싱에 제한되지 않는 다양한 유형의 프로세싱 태스크들이 다른 실시예들에서 구현될 수 있다. DAG(200A)에서 제1 노드(예를 들면, 노드(T1))를 제2 노드(예를 들면, 노드(T2))에 연결시키는 링크(예를 들면, 링크(202))는 제1 노드(예를 들면, 노드(T1))의 출력을 제2 노드(예를 들면, 노드(T2))에 대한 입력으로서 전송하는 것을 나타낼 수 있다.
일반적으로, 작업 흐름은 임의의 적합한 수의 입력(들)(또는 작업 흐름 입력(들)) 및 임의의 적합한 수의 출력(들)(또는 작업 흐름 출력(들))을 포함할 수 있다. 작업 흐름 입력(들)은 미디어 소스(111), 다른 작업 흐름(들) 등에 연결될 수 있고, 작업 흐름 출력(들)은 미디어 싱크(115), 다른 작업 흐름(들) 등에 연결될 수 있다. 작업 흐름(200A)은 입력(201)과 출력들(209 및 210)을 갖는다. 일부 실시예에서, 작업 흐름(200A)은 중간 노드들로부터의 하나 이상의 출력을 가질 수 있다.
도 4a는 본 개시의 실시예에 따른 미디어 프로세싱 태스크의 예시적인 태스크 수명 주기(400)를 도시한다. 태스크 수명 주기(400)는 다른 유형의 프로세싱 태스크들에 적용될 수 있다. 미디어 프로세싱 태스크는 미디어 프로세싱 태스크의 실행의 상이한 지점들에서 상이한 상태들을 통해 전환할 수 있다. 태스크 수명 주기(400)에서의 상이한 상태들은 인스턴스화(instantiated) 상태(401), 유휴(idle) 상태(402), 실행(running) 상태(403), 에러(error) 상태(404), 소멸(destroyed) 상태(405) 등을 포함할 수 있다.
인스턴스화 상태(401): 미디어 프로세싱 태스크가, 예를 들어, onInstantiation 전환을 사용하여 표현된 바와 같이 인프라스트럭처 관리자의 서비스들을 통해 작업 흐름 관리자(103)에 의해 인스턴스화될 때 미디어 프로세싱 태스크는 인스턴스화 상태(401)에 있다. 미디어 프로세싱 태스크가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 구성될 때, 인스턴스화 상태(401)는 유휴 상태(402)로 전환(또는 변경)될 수 있다. 대안적으로, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
유휴 상태(402): 미디어 프로세싱 태스크가 인스턴스화 상태(401)에 있고 작업 흐름 관리자(103)가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 태스크 구성을 수행할 수 있을 때, 미디어 프로세싱 태스크는 유휴 상태(402)로 이동할 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크는 적합한 프로세싱으로 구성된다. 미디어 프로세싱 태스크가 (예를 들면, onStart 전환을 사용하여 표현된 바와 같이) 시작될 때, 미디어 프로세싱 태스크는 실행 상태(403)로 이동할 수 있다. 대안적으로, 유휴 상태(402)에서, 미디어 프로세싱 태스크는 재구성되어 유휴 상태(402)에 머물 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다. 유휴 상태(402)에서, 미디어 프로세싱 태스크가 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋되는 경우, 미디어 프로세싱 태스크는 인스턴스화 상태(401)로 이동할 수 있다.
실행 상태(403): 미디어 프로세싱 태스크가 유휴 상태(402)에 있고 미디어 프로세싱 태스크가 (예를 들면, onStart 전환을 사용하여) 시작되는 동안, 미디어 프로세싱 태스크는 유휴 상태(402)로부터 실행 상태(403)로 이동할 수 있다. 실행 상태(403)에서, MPE(113)에 할당된 미디어 프로세싱 태스크는 미디어 프로세싱 태스크가 작업 흐름 내의 이전 미디어 프로세싱 태스크 또는 NBMP 소스(101)로부터 수신하는 데이터(예를 들면, 미디어 소스(111)로부터의 미디어 데이터)를 프로세싱할 수 있다. 대안적으로, 실행 상태(403)에서, 작업 흐름 관리자(103)가 (예를 들면, onTaskConfiguration 전환을 사용하여 표현된 바와 같이) 미디어 프로세싱 태스크의 재구성을 수행할 수 있는 경우 및 재구성이 미디어 프로세싱 태스크에 대한 현재 미디어/메타데이터 스트림들에 대한 실행과 함께 재구성을 프로세싱하는 것을 결과하는 경우, 미디어 프로세싱 태스크는 실행 상태(403)에 머물 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onStop 전환을 사용하여 표현된 바와 같이) 정지되거나 또는 (예를 들면, onCompletion 전환을 사용하여 표현된 바와 같이) 완료되는 경우, 미디어 프로세싱 태스크는 유휴 상태(402)로 이동할 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onError 전환을 사용하여 표현된 바와 같이) 에러를 만나는 경우, 미디어 프로세싱 태스크는 에러 상태(404)로 이동할 수 있다. 실행 상태(403)에서, 미디어 프로세싱 태스크가 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
에러 상태(404): 미디어 프로세싱 태스크가 에러를 만나고 미디어 데이터 또는 메타데이터를 프로세싱할 수 없을 때 미디어 프로세싱 태스크는 에러 상태(404)에 있을 수 있다. (예를 들면, onErrorHandling 전환을 사용하여 표현된 바와 같이) 에러를 핸들링할 때, 미디어 프로세싱 태스크는 유휴 상태(402)로 돌아갈 수 있다. 대안적으로, 에러 상태(404)에 있는 동안, 미디어 프로세싱 태스크가 인스턴스화 상태(401)로 이동할 수 있도록 미디어 프로세싱 태스크는 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋될 수 있다. 에러 상태(404)에서, 미디어 프로세싱 태스크가 종료되는 경우, 미디어 프로세싱 태스크는 소멸 상태(405)로 이동할 수 있다.
소멸 상태(405): 미디어 프로세싱 태스크가 작업 흐름 관리자(103)에 의해 종료될 때 미디어 프로세싱 태스크는 소멸 상태(405)에 있을 수 있다. 미디어 프로세싱 태스크는 폐기될 수 있으며 재사용될 수 없다.
미디어 프로세싱 태스크의 상태는 일반 디스크립터의 '상태' 파라미터에 반영될 수 있다. 일부 예에서, onError 전환을 제외한 위의 전환들 각각은 작업 흐름 관리자(103)에 의해 개시되는 태스크 동작에 의해 발생할 수 있다. OnError 전환은 미디어 프로세싱 태스크의 내부 상태 변화로 인해 발생할 수 있다.
도 4b는 본 개시의 실시예에 따른 작업 흐름의 예시적인 작업 흐름 수명 주기(410)를 도시한다. 작업 흐름은 작업 흐름의 실행의 상이한 지점들에서 상이한 상태들을 통해 전환할 수 있다. 작업 흐름 수명 주기(410)에서의 상이한 상태들은 인스턴스화 상태(411), 유휴 상태(412), 실행 상태(413), 에러 상태(414), 소멸 상태(415) 등을 포함할 수 있다.
인스턴스화 상태(411): (예를 들면, onInstantiation 전환을 사용하여 표현된 바와 같이), 예를 들어, 인프라스트럭처 관리자의 서비스들를 통해, 작업 흐름 관리자(103)에 의해 작업 흐름이 인스턴스화 상태(411)에 놓일 수 있다. (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름이 구성될 때, 작업 흐름이 유휴 상태(412)로 이동할 수 있다. 대안적으로, 인스턴스화 상태(411)에 있는 동안 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
유휴 상태(412): 작업 흐름이 인스턴스화 상태(412)에 있고 작업 흐름 관리자(103)가 (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름 구성을 수행할 때, 작업 흐름은 유휴 상태(412)로 이동할 수 있다. 유휴 상태(412)에서, 하나 이상의 MPE가 (예를 들면, 인프라스트럭처 관리자를 통해) 셋업되고 MPE들에서 실행 중인 태스크들이 프로비저닝되고 구성된다. 작업 흐름이 (예를 들면, onStart 전환을 사용하여 표현된 바와 같이) 시작될 때, 작업 흐름은 실행 상태(413)로 이동할 수 있다. 대안적으로, 유휴 상태(412)에서, 작업 흐름이 재구성될 수 있다. 작업 흐름은 미디어 데이터 또는 메타데이터가 도착하기를 기다리면서 유휴 상태(412)에 머물 수 있다. 유휴 상태(412)에서, 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다. 유휴 상태(412)에서, 작업 흐름이 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋되는 경우, 작업 흐름은 인스턴스화 상태(411)로 이동할 수 있다.
실행 상태(413): 작업 흐름이 유휴 상태(412)에 있고 작업 흐름이 (예를 들면, onStart 전환을 사용하여) 시작되는 동안, 작업 흐름은 유휴 상태(412)로부터 실행 상태(413)로 이동할 수 있다. 실행 상태(413)에서, NBMP 소스(101)로부터의 데이터는 작업 흐름 내의 MPE들에 의해 프로세싱될 수 있다. 대안적으로, 실행 상태(413)에서, 작업 흐름 관리자(103)가 (예를 들면, onWorkflowConfig 전환을 사용하여 표현된 바와 같이) 작업 흐름의 재구성을 수행하는 경우 및 재구성이 현재 미디어/메타데이터 스트림들에 대한 실행과 함께 재구성을 프로세싱하는 것을 결과하는 경우, 작업 흐름은 실행 상태(413)에 머물 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onStop 전환을 사용하여 표현된 바와 같이) 정지되거나 또는 프로세싱이 (예를 들면, onComplete 전환을 사용하여 표현된 바와 같이) 완료되는 경우, 작업 흐름이 유휴 상태(412)로 이동할 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onError 전환을 사용하여 표현된 바와 같이) 에러를 만나는 경우, 작업 흐름은 에러 상태(414)로 이동할 수 있다. 실행 상태(413)에서, 작업 흐름이 (예를 들면, onTermination 전환을 사용하여 표현된 바와 같이) 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
에러 상태(414): 작업 흐름이 에러를 만나고 작업 흐름 프로세싱을 계속할 수 없을 때 작업 흐름은 에러 상태(414)에 있다. (예를 들면, onErrorHandling 전환을 사용하여 표현된 바와 같이) 에러를 핸들링할 때, 작업 흐름은 유휴 상태(412)로 돌아갈 수 있다. 대안적으로, 에러 상태(414)에 있는 동안, 작업 흐름이 인스턴스화 상태(411)로 이동할 수 있도록 작업 흐름은 (예를 들면, onReset 전환을 사용하여 표현된 바와 같이) 리셋될 수 있다. 에러 상태(414)에서, 작업 흐름이 종료되는 경우, 작업 흐름은 소멸 상태(415)로 이동할 수 있다.
소멸 상태(415): 작업 흐름이 작업 흐름 관리자(103)에 의해 종료될 때 작업 흐름은 소멸 상태(415)에 있다. 작업 흐름이 또다시 사용되기 위해 작업 흐름이 인스턴스화될 수 있다.
일부 예에서, onError 전환을 제외한 위의 전환들 각각은 NBMP 소스(101)에 의해 개시되는 작업 흐름 동작에 의해 발생할 수 있다. OnError 전환은 작업 흐름의 내부 상태 변화로 인해 발생할 수 있다.
일 예에서, 클라우드에서 미디어를 프로세싱하는 개념은 NBMP 프로젝트에 의해 개발되었다. 그렇지만, NBMP 설계는 모니터링, 보고 및 통지를 위한 단일 방법을 제공하지 않는다. 일부 예에서, 보고 또는 통지를 위한 메시지 형식은 정의되어 있지 않다.
일부 예에서, NBMP 작업 흐름의 부분 실행은 허용되지 않으며, 따라서 작업 흐름이 동작하기 위해서는 작업 흐름 내의 모든 태스크들이 인스턴스화되어야 하고 모든 태스크들이 동시에 작동해야 한다. 따라서, 기본 플랫폼은 리소스들(예를 들면, 계산 리소스들, 메모리 리소스들, 대역폭들)을 작업 흐름 내의 모든 태스크들에 동시에 할당해야 한다. 리소스들의 실질적인 할당이 이용 가능하지 않을 수 있거나 또는 이용 가능할 수는 있지만 높은 비용이 든다.
미디어 프로세싱 효율, 미디어 서비스들의 더 빠르고 더 낮은 비용의 배포, 및 공공, 사설 또는 하이브리드 클라우드 서비스들을 활용하여 대규모 배포를 제공하는 능력을 증가시키기 위해, 본 개시의 양태들은 작업 흐름 내의 태스크가 한 번에 한 단계씩 및/또는 한 번에 한 그룹의 단계들씩 동작되거나 실행될 수 있게 하는 방법들 및 장치들을 제공한다. 위의 기능 또는 단계별(step-by-step) 모드는, 예를 들어, 전체 작업 흐름을 동시에 실행하기에 충분한 리소스들(예를 들면, 메모리 리소스들, 계산 리소스들)이 없을 때 유리하다. 본 개시에 개시된 방법들 및 실시예들은 클라우드 컴퓨팅에서 또는 작업 흐름(들)을 활용하는 임의의 적합한 플랫폼에서의 임의의 적합한 작업 흐름 구현에서 사용될 수 있다.
본 개시의 양태들에 따르면, 버퍼링 기능(예를 들면, 아래에서 기술되는 바와 같은 선입 선출 기능, 선입선출 기능의 변형들)과 같은, 단계 모드 기능이 작업 흐름에 추가될 수 있다. 단계 모드 기능은 작업 흐름 내의 태스크들 또는 복수의 작업 흐름들 내의 작업 흐름들에 대한 단계 기반 동작 또는 단계별 동작을 가능하게 할 수 있다. 그에 따라, 데이터를 프로세싱하는 데 다수의 단계들이 사용된다. 단계 모드를 사용하면, 작업 흐름이 태스크들을 개별적으로 실행할 수 있으며, 따라서 작업 흐름 내의 태스크들의 서브세트가 동시에 실행될 수 있는 반면 나머지 태스크(들)는 실행되지 않는다. 일 예에서, 작업 흐름이 6개의 태스크를 포함한다. 일 예에서, 태스크들의 서브세트는 하나의 태스크를 포함하고, 따라서 하나의 태스크는 실행 상태에서 데이터를 프로세싱할 수 있는 반면 다른 5개의 태스크는 실행되지 않는다. 다른 5개의 태스크는 비실행 상태들(예를 들면, 아래에서 기술되는 바와 같은 유휴 상태(들) 및/또는 소멸 상태(들))에 있을 수 있으며 데이터를 프로세싱하지 않는다. 다른 예에서, 태스크들의 서브세트는 2개의 태스크를 포함하며, 따라서 2개의 태스크는 동시에 실행될 수 있는 반면 다른 4개의 태스크는 실행되지 않는다.
다른 예에서, 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함한다. 제1 작업 흐름이 데이터를 프로세싱하기 위해 실행 중일 때, 제2 작업 흐름은 비실행 상태(예를 들면, 아래에서 기술되는 바와 같은 유휴 상태 또는 소멸 상태)에 있으며 데이터를 프로세싱하지 않는다.
일 실시예에서, 작업 흐름 내의 태스크들에 의해 프로세싱되는 미디어 데이터는 미디어 데이터의 복수의 서브세트들을 포함할 수 있다. 본 개시의 양태들에 따르면, 미디어 데이터는 복수의 서브세트들 중 하나 이상의 서브세트의 유닛으로 프로세싱될 수 있고, 단계 모드로(또는 단계별로) 프로세싱될 수 있다. 단계 크기는 복수의 서브세트들 중 하나 이상일 수 있다.
가장 큰 단계 크기는 전체 미디어 데이터일 수 있으며 미디어 데이터는 단일 단계에서 프로세싱된다. 일 예에서, 미디어 데이터는 100개의 프레임을 포함하고 10개의 서브세트를 포함한다. 각각의 서브세트는 10개의 프레임을 포함한다. 미디어 데이터는 100개의 프레임의 단계 크기를 갖는 단일 단계에서 프로세싱될 수 있다. 대안적으로, 미디어 데이터는 10개의 프레임의 단계 크기를 갖는 10개의 단계에서 프로세싱될 수 있다. 일부 실시예에서, 단계 크기는 고정될 필요가 없다. 예를 들어, 마지막 단계는 작업 흐름 내의 다른 단계들보다 작은 단계 크기를 가질 수 있다.
각각의 태스크는 하나 이상의 단계에서 실행될 수 있으며, 미디어 데이터의 복수의 서브세트들 중 하나를 하나의 단계에서 프로세싱할 수 있다. 특정 태스크(들)는 다른 단계(들)가 프로세싱하거나 실행되기 시작할 수 있기 전에 다수의 단계들을 실행할 수 있다.
태스크 실행의 각각의 단계에서, 미디어 데이터(예를 들면, 100개의 프레임)의 일 부분(예를 들면, 10개의 프레임과 같은, 복수의 서브세트들 중 하나)이 프로세싱될 수 있으며, 제한된 지속기간(또는 제한된 길이, 제한된 크기)을 갖는 태스크의 출력(태스크 출력이라고도 지칭됨)이 생성될 수 있다. 이어서 태스크가 정지될 수 있다(예를 들어, 태스크가 아래에서 기술되는 바와 같이 유휴 상태 또는 소멸 상태와 같은 비실행 상태로 전환된다). 본 개시의 양태들에 따르면, 태스크는 비실행 상태인 태스크의 상태 정보(예를 들면, 내부 상태들 및 데이터)가 저장되지 않는 상태 비저장 모드(stateless mode)에서 실행되도록 허용된다. 예를 들어, 비실행 상태에 있는 태스크는 종료되거나 유휴 상태에 놓일 수 있다. 일 예에서, 비실행 상태는 유휴 상태 또는 소멸 상태이다.
일부 예에서, 태스크를 위해 할당된 리소스들이 해제(free)될 수 있다. 이어서 다음 태스크는 다음 태스크의 입력에 있는 데이터를 프로세싱하여 제한된 지속기간을 갖는 출력을 생성하기 위해 비실행 상태로부터 실행 상태로 전환할 수 있다. 후속적으로, 다음 태스크는 다음 태스크의 상태 정보(예를 들면, 내부 상태들 및 데이터)가 저장되지 않은 비실행 상태로 전환할 수 있으며, 프로세스는 다른 태스크로 계속된다.
작업 흐름의 단계 프로세스(또는 단계 기반 프로세스)의 이점들은 아래에서 기술될 수 있다. 작업 흐름 내의 단지 하나 또는 몇개의 태스크가 동시에 동작(또는 실행)되고 작업 흐름 내의 다른 태스크들이 정지되기 때문에, 작업 흐름이 제한된 리소스들 또는 감소된 리소스들로 실행될 수 있다. 클라우드 서비스들을 사용하기 위해 하루 중 고 트래픽 시간 및/또는 고 비용 시간 동안 작업 흐름을 중지하는 것에 의해 운영 비용이 감소될 수 있다. 예를 들어, 고 트래픽 시간에, 예컨대, 인터넷 상에 많은 트래픽이 있는 동안, 작업 흐름이 정지될 수 있다. 작업 흐름은 완전히 직렬화될 수 있으며, 예를 들어, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안 전체 미디어 데이터(예를 들면, 영화)를 프로세싱하기 위해 초기 태스크를 실행하고, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안 전체 미디어 데이터를 프로세싱하기 위해 다음 태스크로 이동한다. 예를 들어, 단계의 크기(또는 하나의 단계에서 프로세싱할 데이터의 양)가 전체 미디어 데이터일 수 있다. 그에 따라, 초기 태스크(T1)는 하나의 단계에서 전체 영화를 실행하거나 프로세싱할 수 있다. 다양한 계산 복잡도들을 갖는 태스크들이 동일한 하드웨어에서 실행될 수 있다. 더 간단한 태스크의 단계는 더 빠르게 실행될 수 있는 반면, 더 복잡한 태스크들의 단계의 실행은 더 많은 시간이 걸릴 수 있다. 상태 비저장 모드의 사용은 태스크들의 상태 정보(예를 들어, 내부 상태들)를 저장할 필요 없이 태스크들이 비실행 상태에 놓일 수 있는, 클라우드 플랫폼들과 같은, 특정 컴퓨팅 플랫폼들에서 유리할 수 있다.
본 개시의 양태들은 위에서 기술된 단계 모델에 기초한 기능들 및 실행 태스크들을 위한 세그먼트 프로세싱 모드를 제공한다. 기능들 또는 대응하는 태스크들이, 예를 들어, 특정 양의 데이터를 프로세싱하기 위해 세그먼트 프로세싱 모드를 지원하도록 설계될 수 있다.
본 개시의 양태들은 버퍼링 기능(예를 들면, iFIFO(indexed first-in-first-out (FIFO)) 기능)을 기술한다. 버퍼는 버퍼링 기능을 위해 구성될 수 있으며, 예를 들어, iFIFO 버퍼는 iFIFO 기능을 위해 구성된다. 일 실시예에서, 버퍼링 기능(예를 들면, iFIFO 기능)은 세그먼트들(버퍼 세그먼트들이라고도 지칭됨)에 대해 동작할 수 있고, 따라서 세그먼트 프로세싱 모드를 가능하게 할 수 있다. 본 개시에 따르면, iFIFO 기능은, 비트스트림과 같은, 데이터의 인덱싱된 버퍼 세그먼트들(엔트리들이라고도 지칭됨)을 저장할 수 있다. iFIFO 기능은 이하의 속성들: (i) FIFO 버퍼에 저장되는 첫 번째 엔트리가 FIFO 버퍼로부터 판독되는 첫 번째 엔트리인 FIFO 버퍼 및 (ii) FIFO에서의 동작 단위(unit of operation)가 엔트리인 것을 가질 수 있다. 각각의 엔트리는 이하의 어트리뷰트들: 시작 시간(si)(예를 들면, 단위: 밀리초(ms)), 지속기간(di)(예를 들면, 단위: ms) 및 길이(li)(예를 들면, 단위: 바이트)를 가지며, 여기서 정수 i는 iFIFO 버퍼에서의 엔트리의 위치를 나타낸다. 일 예에서, 각각의 엔트리(또는 각각의 버퍼 세그먼트)는 대응하는 시작 시간(si), 지속기간(di), 및 길이(li)를 사용하여 (si, di, li)로서 인덱싱된다. iFIFO 태스크의 구성 파라미터는 FIFO 버퍼의 총 크기(예를 들면, 단위: 엔트리의 개수) 및 각각의 엔트리의 최대 크기(예를 들면, 단위: 바이트)를 포함할 수 있다. 일 예에서, iFIFO에 저장될 수 있는 최대 데이터 양은 FIFO 버퍼의 총 크기와 각각의 엔트리의 최대 크기를 곱한 것과 동일하며, 버퍼 크기라고 지칭될 수 있다.
일 예에서, iFIFO 기능 또는 iFIFO 태스크는 iFIFO 태스크에 저장된 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트(예를 들어, 충만 이벤트, 부분 충만 이벤트)를 생성하도록 구성된다. iFIFO 기능 또는 iFIFO 태스크는 iFIFO 태스크에 저장된 데이터의 양이 비어 있거나 또는 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트(예를 들어, 공백 이벤트)를 생성하도록 구성된다.
iFIFO 버퍼의 인덱싱된 입력 또는 인덱싱된 출력은 iFIFO 버퍼의 입력 또는 출력에서 다음 버퍼 세그먼트의 시작 시간, 지속기간 및 길이를 제공할 수 있으며, 따라서 각각의 버퍼 세그먼트가 인덱싱된다.
본 개시에 따르면, 버퍼링 기능은, 예를 들어, 다수의 비트스트림들을 프로세싱하기 위한 MiFIFO(multi-index FIFO) 기능일 수 있다. MiFIFO 기능은 다수의 FIFO 버퍼들을 포함할 수 있다. 다수의 FIFO 버퍼들 각각은 위에서 기술된 iFIFO 버퍼와 동일하거나 유사할 수 있다. 다수의 FIFO 버퍼들에 걸친 대응하는 버퍼 세그먼트들은 시간 도메인에서 정렬될 수 있다. 일 예에서, MiFIFO는 제1 iFIFO와 제2 iFIFO를 포함한다. 제1 iFIFO는 각자의 제1 시작 시간들 및 제1 지속기간들을 갖는 제1 버퍼 세그먼트 0 내지 제1 버퍼 세그먼트 4를 포함한다. 제2 iFIFO는 각자의 제2 시작 시간들 및 제2 지속기간들을 갖는 제2 버퍼 세그먼트 0 내지 제2 버퍼 세그먼트 4를 포함한다. 일 예에서, 제1 버퍼 세그먼트 0 내지 제1 버퍼 세그먼트 4의 제1 시작 시간들은, 제각기, 제2 버퍼 세그먼트 0 내지 제2 버퍼 세그먼트 4의 제2 시작 시간들과 동일하고, 제1 버퍼 세그먼트 0 내지 제1 버퍼 세그먼트 4의 제1 지속기간들은, 제각기, 제2 버퍼 세그먼트 0 내지 제2 버퍼 세그먼트 4의 제2 지속기간들과 동일하다. 태스크가 다수의 입력들 또는 다수의 출력들을 가질 때 MiFIFO 기능이 사용될 수 있다.
일 예에서, MiFIFO 기능 또는 MiFIFO 태스크는 MiFIFO 태스크에 저장된 데이터의 양이 임계치와 동일하다는 것을 나타내는 이벤트(예를 들어, 충만 이벤트, 부분 충만 이벤트)를 생성하도록 구성된다. MiFIFO 기능 또는 MiFIFO 태스크는 MiFIFO 태스크에 저장된 데이터의 양이 비어 있거나 또는 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트(예를 들어, 공백 이벤트)를 생성하도록 구성된다.
버퍼링 기능(예를 들면, iFIFO 기능, MiFIFO 기능)은, 아래에서 기술되는 바와 같은 공백 이벤트 및 충만 이벤트와 같은, 이벤트들을 지원할 수 있다. 버퍼(예를 들면, iFIFO 버퍼)가 비어 있거나 또는 다수의 버퍼들(예를 들면, MiFIFO 기능 내의 iFIFO 버퍼들)이 비어 있을 때(예를 들면, 버퍼에 저장된 데이터가 대응하는 태스크에 의해 판독되거나 대응하는 태스크에 제공될 때) 공백 이벤트가 생성될 수 있다. 버퍼(예를 들면, iFIFO 버퍼)가 채워져 있거나 또는 다수의 버퍼들(예를 들면, MiFIFO 기능 내의 iFIFO 버퍼들) 각각이 채워져 있을 때 충만 이벤트가 생성될 수 있다. 일부 예에서, 버퍼링 기능은 X%(또는 %X) 이벤트를 지원할 수 있다. X는, 0보다 크고 100보다 작거나 같은 값과 같은, 구성 파라미터일 수 있다. 일 예에서, X는 100보다 작으며, X% 이벤트는 부분 충만 이벤트(partial full event)라고 지칭될 수 있다. 각각의 iFIFO 버퍼가 X% 채워져 있을 때 X% 이벤트가 생성될 수 있다. iFIFO 버퍼가 X% 채워져 있을 때, 이벤트(또는 X% 이벤트)가 생성될 수 있다. X에 대한 하나 또는 다수의 값이 구성 파라미터로서 설정될 수 있다. 버퍼링 기능(예를 들면, iFIFO 기능, MiFIFO 기능)을 구현하기 위해 버퍼링 태스크(예를 들면, iFIFO 태스크, MiFIFO 태스크)가 인스턴스화될 수 있다.
버퍼링 기능의 이점들은 아래에서 기술될 수 있다. 버퍼링 기능은, 캐시 메모리, 랜덤 액세스 메모리, 솔리드 스테이트 및 하드 디스크들과 같은 장기 스토리지를 포함하여, 버퍼를 제공하는 임의의 적합한 플랫폼에서 구현될 수 있는 간단한 기능이다. 이벤트들(예를 들면, 공백 이벤트, 충만 이벤트)는 버퍼(들)의 공백(emptiness) 및 충만(fullness)에 기초하여 생성될 수 있다. 따라서 버퍼링 태스크는 효율적으로 버퍼링 태스크의 상태를 작업 흐름 관리자(103)에게 통보할 수 있다.
본 개시의 양태들에 따르면, 작업 흐름은 작업 흐름에 하나 이상의 버퍼링 태스크(예를 들면, iFIFO 태스크들, MiFIFO 태스크들)를 추가하는 것에 의해 단계 지원(step-enabled) 작업 흐름(또는 단계 기반 작업 흐름, 단계별 작업 흐름, 단계형(step-able) 작업 흐름)으로 변환될 수 있다. 단계 지원 작업 흐름은 단계 모드 동작에서 동작할 수 있다. 2개의 태스크 사이에 버퍼링 태스크가 제공될 수 있다. 2개의 태스크는 태스크 A와 태스크 B를 포함할 수 있으며, 여기서 태스크 A의 출력이 태스크 B의 입력에 제공된다.
도 2a 및 도 2b를 참조하면, 작업 흐름(200A)은 정규 작업 흐름(200A)이라고 지칭될 수 있다. 일 예에서, 정규 작업 흐름(200A)은 단계 기반 작업 흐름이 아니다. 적어도 하나의 버퍼링 태스크를 정규 작업 흐름(200A)에 삽입하는 것에 의해 정규 작업 흐름(200A)이 단계 기반 작업 흐름(예를 들면, 작업 흐름(200B))으로 변환될 수 있다. 일반적으로, 단계 기반 작업 흐름 내의 태스크는 프로세싱될 데이터를 태스크에 제공하는 제1 개수의 입력 버퍼링 태스크 및 태스크에 의해 프로세싱되는 데이터를 저장하는 제2 개수의 출력 버퍼링 태스크를 가질 수 있다. 제1 개수는, 0, 1, 2 등과 같은, 임의의 적합한 음이 아닌 정수일 수 있다. 제2 개수는, 0, 1, 2 등과 같은, 임의의 적합한 음이 아닌 정수일 수 있다. 도 2b에 도시된 것과 같은 일부 예에서, 단계 기반 작업 흐름에 대한 각각의 작업 흐름 입력(예를 들면, 201)을 위해 버퍼링 태스크가 제공되지 않는다. 일부 예에서, 단계 기반 작업 흐름에 대한 작업 흐름 입력(들)을 위해 적어도 하나의 버퍼링 태스크가 제공된다. 도 2b에 도시된 것과 같은 일부 예에서, 단계 기반 작업 흐름으로부터의 각각의 작업 흐름 출력(예를 들면, 209 또는 210)을 위해 버퍼링 태스크가 제공되지 않는다. 일부 예에서, 단계 기반 작업 흐름으로부터의 작업 흐름 출력(들)을 위해 적어도 하나의 버퍼링 태스크가 제공된다.
도 2b에 도시된 예에서, 각자의 링크들(202 내지 208)을 위해, 제각기, 버퍼링 태스크들(예를 들면, iFIFO 태스크들)(231 내지 237)이 제공된다. 예를 들어, 태스크(T1)는 작업 흐름 입력에 연결되고 입력 버퍼링 태스크에 연결되지 않는다. 태스크(T1)는 하나의 출력 버퍼링 태스크(231)에 연결된다. 태스크(T2)는 하나의 입력 버퍼링 태스크(231) 및 2개의 출력 버퍼링 태스크(232, 233)에 연결된다. 태스크(T5)는 2개의 입력 버퍼링 태스크(233 및 235)에 연결되고 하나의 출력 버퍼링 태스크(237)에 연결된다.
각각의 링크(예를 들면, 링크(202))는 작업 흐름(200B)의 2개의 태스크(예를 들면, 태스크(T1)와 태스크(T2)) 사이의 연결이다. 링크(예를 들면, 202)는 2개의 태스크 중 하나(예를 들면, T1)로부터 2개의 태스크 중 다른 하나(예를 들면, T2)로의 데이터 전송을 나타낼 수 있다. 버퍼링 태스크들(231 내지 237)은 위에서 기술된 버퍼링 기능으로부터 인스턴스화될 수 있다. 일 예에서, 버퍼링 태스크들(231 내지 237)은 iFIFO 기능으로부터 인스턴스화되는 iFIFO 태스크들을 포함한다.
일반적으로, 버퍼링 태스크에 연결되는 태스크 쌍(또는 2개의 태스크)은 버퍼링 태스크에 대한 "연결 시작(connect from)" 태스크와 "연결 대상(connect to)" 태스크를 포함할 수 있다. 버퍼링 태스크(231) 및 버퍼링 태스크(231)에 의해 연결되는 태스크 쌍(T1 및 T2)을 참조하면, 버퍼링 태스크(231)에 대해 태스크(T1)는 "연결 시작" 태스크라고 지칭되고 태스크(T2)는 "연결 대상" 태스크라고 지칭된다. 작업 흐름(200B)은 7개의 버퍼링 태스크(231 내지 237)에 대응하는 7개의 태스크 쌍을 포함한다.
태스크 쌍("연결 시작" 태스크와 "연결 대상" 태스크를 포함함) 사이에 버퍼링 태스크를 추가하는 것은 "연결 대상" 태스크가 실행되고 있지 않는 동안 "연결 시작" 태스크가 실행되고, 출력을 생성하며, 버퍼링 태스크를 위해 구성된 버퍼(또는 각각의 버퍼)를 채울 수 있게 할 수 있다. 버퍼(또는 각각의 버퍼)가 채워져 있거나 부분적으로 채워지고(예를 들면, X% 채워지고) "연결 시작" 태스크가 "연결 시작" 태스크의 입력(들)에 연결된 버퍼(들)로부터 프로세싱하기 위한 충분한 데이터를 가질 수 있을 때까지 "연결 시작" 태스크가 실행될 수 있다.
태스크(예를 들면, T1)가 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T2 내지 T6)과 독립적으로 실행될 수 있는 시간의 양은 태스크의 입력(들) 및 출력(들)에 연결된 버퍼링 태스크들에 의해 정의될 수 있다. 태스크 입력(들)에 연결된 버퍼링 태스크(들)는 입력 버퍼링 태스크들(또는 입력 버퍼들)이라고 지칭될 수 있고, 태스크 출력(들)에 연결된 버퍼링 태스크(들)는 출력 버퍼링 태스크(들)(또는 출력 버퍼(들))라고 지칭될 수 있다. 일반적으로, 버퍼의 크기 및 충만 레벨(예컨대, X%로 기술됨)은 태스크가 실행할 수 있는 단계의 최대 크기(또는 길이)(또는 최대 단계 크기)를 정의할 수 있다.
일 예에서, 작업 흐름(200B) 내의 태스크(예를 들면, T2)에 대해, 태스크의 입력 버퍼(들)(예를 들면, 231) 중 어느 것도 비어 있지 않고 태스크의 출력 버퍼(들)(예를 들면, 232 및 233) 중 어느 것도 채워져 있지 않을 때, 태스크(예를 들면, T2)는 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T1 및 T3 내지 T6)과 독립적으로 실행될 수 있다. 일 예에서, 태스크의 입력 버퍼(들) 중 어느 것도 비어 있지 않고 태스크의 출력 버퍼(들) 중 어느 것도 X% 채워져 있지 않을 때(X는 100보다 작은 미리 구성된 값임), 태스크(예를 들면, T2)는 작업 흐름(200B) 내의 다른 태스크들(예를 들면, T1 및 T3 내지 T6)과 독립적으로 실행될 수 있다.
예를 들어, 단계 지원 작업 흐름 내의 나머지 태스크들이 실행되지 않는 동안 단계 지원 작업 흐름 내의 하나 이상의 태스크가 데이터를 프로세싱하기 위해 실행될 수 있다. 도 2b를 참조하면, 버퍼링 태스크(231)가 생략되는 경우, 태스크들(T3 내지 T6)이 실행되지 않고 비실행 상태들(예를 들면, 유휴 상태들 및/또는 소멸 상태들)에 있는 동안 태스크들(T1 및 T2)이 동시에 데이터를 프로세싱하기 위해 실행될 수 있다. 예를 들어, 태스크(T1)는 다음 데이터를 프로세싱하기 위해 실행되고 태스크(T2)는 태스크(T1)에 의해 프로세싱된 데이터를 추가로 프로세싱하기 위해 실행된다. 일부 예에서, 버퍼링 태스크(231)가 생략될 때, 예를 들어, 태스크(T2)가 입력 데이터를 갖지 않을 때 또는 태스크(T2)가 실행 상태에 있지 않을 때, 태스크들(T1 및 T2)이 동시에 실행되지 않는다.
정규(비단계 기반(non-step-based)) 작업 흐름을 단계 기반 작업 흐름으로 변환하는 것의 장점들은 아래와 같이 기술된다. 변환은 상대적으로 간단하고 작업 흐름의 토폴로지 또는 복잡도에 의존하지 않으며, 따라서 비지도 방식으로 수행될 수 있다.
프로세싱 태스크는 파라미터 태스크 세그먼트 지속기간(TSD)(태스크 프로세싱 세그먼트 지속기간이라고도 지칭됨)으로 구성될 수 있다. 프로세싱 태스크의 출력(들)에 있는 출력 데이터가 프로세싱 태스크의 입력(들) 중 임의의 것에 있는 데이터의 길이 또는 지속기간을 벗어난 데이터와 독립적일 수 있도록 프로세싱 태스크에 대한 TSD는 데이터의 길이 또는 시간 도메인에서의 지속기간을 참조할 수 있다. 예를 들어, 프로세싱 태스크에 대한 입력 데이터는 제1 서브세트, 제2 서브세트 및 제3 서브세트를 가지며, 그 각각은 TSD의 지속기간을 갖는다. 프로세싱 태스크는 제1 서브세트, 제2 서브세트 및 제3 서브세트를 서로 독립적으로 프로세싱할 수 있다. 프로세싱 태스크가 제2 서브세트를 프로세싱할 때, 대응하는 출력 데이터는 데이터의 제2 서브세트에만 의존하며 제1 세트 및 제3 세트와는 독립적이다. 시간(예를 들어, ms), 바이트, 비트 등과 같은, 임의의 적합한 단위가 TSD에 대해 사용될 수 있다. 프로세싱 태스크의 출력(들)에서 생성되는 출력 데이터는 시간 도메인에서의 지속기간 또는 데이터의 길이 내에 있다.
도 3은 본 개시의 실시예에 따른 태스크(301)를 위해 구성된 TSD의 예를 도시한다. 태스크(301)는, 예를 들어, 기능 리포지토리(105)에 있는 대응하는 기능으로부터 인스턴스화될 수 있다. 태스크(301)는, 비디오 스티칭 또는 다른 미디어 프로세싱 방법과 같은, 임의의 프로세싱 방법을 구현할 수 있다. 예를 들어, 제1 카메라로부터의 비디오 1과 제2 카메라로부터의 비디오 2는 메타데이터에 기초하여 태스크(301)에 의해 스티칭된다. 태스크(301)는 스티칭된 비디오인 비디오 3과 비디오 4를 출력할 수 있다. 비디오 4는 인덱싱과 같은 상이한 동작에 대응할 수 있다. 일부 예에서, 비디오 4는 비디오 3과 동일하다.
본 개시에 따르면, 태스크(301)는, TSD에 의해 설정된 시간 창(예를 들어, 도 3에서의 지속기간 T) 내에서, 실행되고 입력(들)으로부터의 입력 데이터를 프로세싱하여 출력(들)에 출력 데이터를 생성할 수 있으며 여기서 TSD로 설정된 지속기간을 갖는 출력(들)은 TSD 내의 입력 데이터에만 의존할 수 있다. 출력(들)은 시간 창을 벗어나 있는 입력 데이터와 독립적일 수 있다. 후속적으로, 태스크(301)는 각각의 TSD의 끝에서 정지 또는 소멸될 수 있으며 다음 TSD의 시작에서 인스턴스화되거나 시작될 수 있다.
도 3에 도시된 예에서, 태스크(301)에 대한 TSD는 T이다. 비디오 1은 제1 미디어 데이터의 복수의 서브세트들(302)을 포함한다. 제1 미디어 데이터의 각각의 서브세트는 제1 크기를 가질 수 있으며 여기서 제1 미디어 데이터의 3개의 서브세트(302)는 TSD T 내에 있다. 비디오 2는 제2 미디어 데이터의 복수의 서브세트들(303)을 포함한다. 제2 미디어 데이터의 각각의 서브세트(303)는 TSD T인 제2 크기를 가질 수 있다. 메타데이터는 메타데이터의 복수의 서브세트들(304)을 포함할 수 있다. 메타데이터의 각각의 서브세트(304)는 메타데이터 크기를 가질 수 있으며 여기서 메타데이터의 6개의 서브세트(304)는 TSD T 내에 있다.
예를 들어, 제1 미디어 데이터의 3개의 서브세트(302) 및 제2 미디어 데이터의 서브세트(303)를 포함하는 입력 데이터는, 예를 들어, 메타데이터의 6개의 서브세트(304)에 기초하여, 태스크(301)에 의해 프로세싱되어 출력들을 생성한다. 출력들은 비디오 3에 대한 제3 미디어 데이터의 서브세트(305) 및 비디오 4에 대한 제4 미디어 데이터의 2개의 서브세트(306)를 포함한다. 태스크(301)의 출력들(예를 들면, 비디오 3 및 비디오 4)은 TSD와 동일한 지속기간(예를 들면, T)을 갖는 시간 창 내에서 독립적으로 생성될 수 있다. 후속적으로, 태스크(301)는 시간 창의 끝에서 정지되거나 소멸되어 비실행 상태로 전환할 수 있다. 비실행 상태는 유휴 상태(402) 또는 소멸 상태(405)일 수 있다. 본 개시에 따르면, 태스크(301)가 비실행 상태에 있을 때, 입력 데이터가 지속기간 TSD를 갖는 시간 창 내에서 프로세싱될 때 태스크(301)가 사전 데이터(prior data)를 사용하지 않고 입력 데이터를 프로세싱할 수 있기 때문에 태스크에 대한 상태 정보가 저장될 필요가 없다. 따라서, 이전 프로세싱에 대한 메모리가 필요하지 않으며 이전 상태 정보가 필요하지 않다. 태스크(301)는 TSD와 동일한 지속기간을 갖는 다음 시간 창의 시작에서 인스턴스화되거나 시작될 수 있다. 도 3에 도시된 예에서, 비디오 4 출력은 T/2의 지속기간을 갖는 독립적인 세그먼트들(태스크 세그먼트들이라고도 지칭됨)에서 동작할 수 있다.
도 2b를 참조한 상기 설명은 비단계 기반 작업 흐름을 단계 기반 작업 흐름으로 변환하기 위해 비단계 기반 작업 흐름에서 하나 이상의 MiFIFO 태스크를 제공하도록 적합하게 적응될 수 있다. 도 2a 및 도 5를 참조하면, 작업 흐름(200A)은 하나 이상의 MiFIFO 태스크를 작업 흐름(200A)에 삽입하는 것에 의해 단계 기반 작업 흐름(예를 들어, 작업 흐름)(500)으로 변환될 수 있다. 일 예에서, 태스크가 다수의 출력들을 포함할 때, MiFIFO 태스크가 사용된다.
도 5를 참조하면, 버퍼링 태스크들은 iFIFO 태스크들(531, 536 및 537) 및 2개의 MiFIFO 태스크(예를 들면, MiFIFO1 및 MiFIFO2)를 포함할 수 있다. 예를 들어, 태스크(T1)와 태스크(T2) 사이에 iFIFO 태스크(531)가 제공된다. 태스크(T4)는 iFIFO 태스크(536)에 연결된다. 태스크(T5)는 iFIFO 태스크(537)에 연결된다. iFIFO 태스크들(531, 536 및 537)은 위에서 기술된 iFIFO 버퍼링 기능으로부터 인스턴스화될 수 있다.
태스크(T2)는 2개의 출력을 가지며, 따라서 MiFIFO 태스크(MiFIFO1)에 연결될 수 있다. MiFIFO1 태스크는 링크들(203 및 204)에 제각기 대응하는 2개의 iFIFO 버퍼(MiFIFO1-1 및 MiFIFO1-2)로 구성될 수 있다. 태스크(T3)는 2개의 출력을 가지며, 따라서 MiFIFO 태스크(MiFIFO2)에 연결될 수 있다. MiFIFO2 태스크는 링크들(205 및 206)에 제각기 대응하는 2개의 iFIFO 버퍼(MiFIFO2-1 및 MiFIFO2-2)로 구성될 수 있다. MiFIFO 태스크들(MiFIFO1 및 MiFIFO2)은 위에서 기술된 MiFIFO 버퍼링 기능으로부터 인스턴스화될 수 있다.
MiFIFO 태스크(예를 들면, MiFIFO1)를 추가하는 것은, "연결 대상" 태스크(들)(예를 들면, T3 및 T5)가 실행되지 않는 동안, "연결 시작" 태스크(예를 들면, T2)가 실행되고 출력을 생성하며 MiFIFO 태스크(예를 들면, MiFIFO1)를 위해 구성된 iFIFO 버퍼들(예를 들면, MiFIFO1-1 및 MiFIFO1-2)을 채울 수 있게 할 수 있다. iFIFO 버퍼들이 채워지고 "연결 시작" 태스크가 "연결 시작" 태스크의 입력(들)에 연결된 버퍼(들)로부터 프로세싱하기 위한 충분한 데이터를 가질 수 있을 때까지 "연결 시작" 태스크가 실행될 수 있다.
일부 예에서, iFIFO 태스크들(531, 536 및 537)은 MiFIFO 태스크들로 대체되고, 따라서 작업 흐름(500)은 MiFIFO 태스크들로 구성된다.
일 예에서, 태스크가 다수의 입력들을 포함할 때, MiFIFO 태스크가 입력들에 제공되고 상기 설명이 적합하게 적응될 수 있다.
작업 흐름들(200B 및 500)은 TSD들로 구성된 프로세싱 태스크들을 사용하여 상태 비저장 모드에서 동작하도록 구성될 수 있다. 도 2b를 참조하면, 각각의 iFIFO 태스크의 iFIFO 태스크 지속기간(또는 iFIFO 태스크에 저장할 수 있는 최대 데이터 양)이 iFIFO 태스크에 연결되는 프로세싱 태스크(또는 "연결 대상" 태스크)의 TSD 크기 이상으로 설정될 때, "연결 대상" 태스크가 하나의 TSD 동안 동작하고 출력(들)을 생성할 수 있다. 위에서 기술된 바와 같이, "연결 대상" 태스크는 출력들에 다음 태스크 세그먼트를 생성하기 위한 상태 정보를 전달하거나 저장할 필요가 없으며, 따라서 상태 정보가 저장되지 않는다. 프로세싱 태스크(예를 들면, "연결 대상" 태스크)는 상태 비저장 단계 지원 프로세싱 태스크라고 지칭될 수 있다. 상태 비저장 단계 지원 프로세싱 태스크들을 포함하는 작업 흐름(200B)은 상태 비저장 모드에서 동작하도록 구성될 수 있으며 상태 비저장 단계 지원 작업 흐름이라고 지칭될 수 있다. 상기 설명은 MiFIFO 태스크들 및 MiFIFO 태스크(들)를 포함하는 작업 흐름(예를 들면, 작업 흐름(500))에 적합하게 적응될 수 있다.
하나의 TSD 내에 생성된 데이터(예를 들면, 태스크 세그먼트)는 TSD를 벗어난 데이터(예를 들면, 다른 태스크 세그먼트들)와 독립적이지만, 데이터의 시작과 끝이 중요할 수 있다. 예를 들어, 인코더가 인코딩을 시작하는 경우, (예를 들어, 헤더들로 인해) 인코더가 생성하는 비트스트림의 시작이 이후에 생성되는 다른 세그먼트들과 상이하다. 따라서, iFIFO 버퍼는, 위에서 기술된 바와 같이, 시작 시간, 지속기간 및 길이와 같은, 추가적인 정보를 저장하도록 구성될 수 있다.
도 6은 본 개시의 실시예에 따른 프로세스(600)를 개략적으로 나타내는 플로차트를 도시한다. 프로세스(600)는 임의의 적합한 개수의 작업 흐름 입력(들) 및 임의의 적합한 개수의 작업 흐름 출력(들)을 갖는 임의의 적합한 단계 지원 작업 흐름의 동작들에 적용될 수 있다. 단계 지원 작업 흐름은 임의의 적합한 개수의 프로세싱 태스크 및 태스크들 중 2개를 연결시키는 임의의 적합한 링크(또는 연결)를 포함할 수 있다. 단계 지원 작업 흐름은 버퍼링 태스크(들)(예를 들면, iFIFO 태스크(들), MiFIFO 태스크(들) 또는 iFIFO 태스크(들)와 MiFIFO 태스크(들)의 조합)를 포함할 수 있으며 버퍼링 태스크(들)는 각자의 링크들에서 제공될 수 있다. 단계 지원 작업 흐름은 작업 흐름(200B 또는 500)일 수 있다.
일 예에서, 단계 지원 작업 흐름은 도 5에서의 작업 흐름(500)이다. 작업 흐름(500)은 MiFIFO 태스크들을 포함할 수 있고 여기서 버퍼링 태스크들(531, 536 및 537)은 MiFIFO 태스크들이다. 태스크들(T1 내지 T6) 각각은 도 4a를 참조하여 기술된 태스크 수명 주기(400), 상이한 상태들(401 내지 405) 및 대응하는 전환들을 가질 수 있다. 작업 흐름의 단계별(또는 단계 기반, 단계 지원) 동작은 아래에서 기술되는 바와 같이 구현될 수 있다. 임의의 적합한 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)은 작업 흐름의 단계별 동작을 구현할 수 있다. 데이터 프로세싱 시스템(100)에 대한 이하의 설명이 제공되고 임의의 적합한 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)에 적합하게 적응될 수 있다.
S605에서, 아래에서 기술되는 바와 같이 작업 흐름이 초기화될 수 있다. TSD(k)가 초기 작업 흐름의 프로세싱 태스크들(T(k))의 TSD들을 나타내는 것으로 하고, 여기서 k는 0부터 L-1까지의 음이 아닌 정수이고 L은 초기 작업 흐름 내의 프로세싱 태스크들의 개수이다. 초기 작업 흐름은 비단계 지원 작업 흐름일 수 있다.
작업 흐름 세그먼트 지속기간(WSD)은 TSD들에 기초하여 결정될 수 있다. 예를 들어, WSD는 TSD들의 최소 공배수(LCM)에 기초하여 계산된다. 일 예에서, WSD는 아래와 같은 수학식 1을 사용하여 계산된다:
작업 흐름(또는 단계 지원 작업 흐름)은 각각의 프로세싱 태스크의 출력(들)에 MiFIFO 태스크를 제공하는 것에 의해 생성될 수 있으며 여기서 출력(들)로부터의 데이터가 작업 흐름 내의 다른 태스크(들)에 대한 입력(들)이다. 예를 들어, 도 5를 참조하면, 태스크(T2)의 2개의 출력에 대해 MiFIFO 태스크(MiFIFO1)가 제공된다. MiFIFO 태스크들은 파라미터 S 및 WSD에 기초한 길이(또는 크기)를 가질 수 있으며, 여기서 파라미터 S는 단계 지원 작업 흐름의 단계 크기를 나타내는 정수(예를 들면, 1, 2 등)이다. 일 예에서, 단계 크기는 S와 WSD를 곱한 것일 수 있다. 일 예에서, 파라미터 S는 프로세싱 태스크(예를 들면, T2)가 연속적으로 실행되도록 구성되는 단계들의 개수를 나타낸다.
각각의 MiFIFO 태스크는 대응하는 시퀀스 번호가 0인 상태로 비어 있도록 리셋될 수 있다.
S610에서, 작업 흐름 내의 프로세싱 태스크들 중 초기 태스크(들)가, 예를 들어, 작업 흐름 관리자(103)에 의해 식별될 수 있다. 초기 태스크(들) 각각의 입력(들)은 작업 흐름 입력(들)일 수 있다. 예를 들어, 초기 태스크(들)의 모든 입력(들)은 데이터 소스(예를 들면, 미디어 소스)(111)에 연결된다. 초기 태스크(들)는 Ti0, Ti1, ..., TiN으로 레이블링될 수 있고 여기서 N은 음이 아닌 정수이다. 도 5를 참조하면, 작업 흐름(500)에서 식별된 초기 태스크(들)는 태스크(T1)를 포함하며, 여기서 Ti0은 T1이고 N은 0이다.
S620에서, 식별된 초기 태스크(들)(Ti0, Ti1, ..., TiN)가 순차적으로 실행될 수 있다. 도 5에 도시된 예를 참조하면, 초기 태스크는 T1을 포함한다. 각각의 식별된 초기 태스크에 대해 이하의 설명이 적용될 수 있다.
작업 흐름 관리자(103)는 요청을 초기 태스크(T1)로 송신하고 태스크(T1)를 실행 상태(403)로 이동시킬 수 있다.
초기 태스크(T1)는 S개(예를 들어, 1개, 2개 등)의 단계에 대해 실행되고 각각의 단계에서 입력 데이터의 일 부분을 프로세싱할 수 있다. 예를 들어, 입력 데이터의 부분은 WSD에 기초하여 결정되는 지속기간 또는 길이를 갖는다. 일 예에서, 지속기간(또는 길이)은 각각의 단계에서의 WSD와 동일하다.
MiFIFO 태스크에 대한 초기 태스크(T1)에 의해 출력되는 데이터의 양이, S x WSD의 총 지속기간(또는 총 크기)과 같은, 제1 임계치에 도달하거나 접근할 때, MiFIFO 태스크(예를 들면, MiFIFO 태스크(531))가 채워진다(또는 X% 충만으로 부분적으로 채워짐, 여기서 X는 100 미만임). 제1 임계치는 임의의 적합한 지속기간 또는 크기일 수 있으며 임의의 적합한 단위를 사용하여 표현될 수 있다. 제1 임계치는 TSD, WSD 및/또는 파라미터 S에 기초할 수 있다.
그에 따라, MiFIFO 태스크는 충만 이벤트(또는, 예를 들어, S x WSD의 총 지속기간이 X% 충만인 경우 부분 충만 이벤트)를 작업 흐름 관리자(103)로 송신할 수 있다. 예를 들어, S는 2이고, 태스크(T1)에 의해 출력되는 데이터의 양이 2WSD에 도달할 때, MiFIFO 태스크(531)는 충만 이벤트(또는 부분 충만 이벤트)를 생성하고 통지를 작업 흐름 관리자(103)로 송신할 수 있다.
작업 흐름 관리자(103)는 요청을 태스크(T1)로 송신하여, 태스크(T1)를 실행 상태(403)로부터, 유휴 상태(402) 또는 소멸 상태(405)와 같은, 비실행 상태로 이동시킬 수 있다. 비실행 상태(예를 들면, 유휴 상태(402) 또는 소멸 상태(405))에서, 태스크(T1)의 상태 정보(예를 들면, 내부 기능들의 상태 및 값들)는 유지되거나 저장될 필요가 없으며, 따라서 일부 예에서, 비실행 상태에 상태 정보가 저장되지 않으며 태스크(T1)는 상태 비저장 모드에서 실행될 수 있다.
S620은 초기 태스크(들) 각각에 대해 반복될 수 있다. T1에 대한 상기 설명이 다른 초기 태스크(들)에 대해 적합하게 적응될 수 있다. 일 예에서, 초기 태스크(들)는 제1 임계치를 포함한 상이한 임계치들을 갖는다. 대안적으로, 초기 태스크(들)는 동일한 제1 임계치를 갖는다.
S630에서, 작업 흐름 관리자(103)는 후속 태스크(들)를 식별할 수 있으며, 여기서 후속 태스크(들)의 모든 입력들은 비어 있지 않은 버퍼링 태스크(들)(예를 들면, iFIFO 태스크(들), MiFIFO 태스크(들))에 연결된다. 후속 태스크(들)는 Tj0, Tj1, ..., TjM으로서 레이블링될 수 있으며, 여기서 M은 음이 아닌 수이다. 도 5를 참조하면, 비어 있지 않은 버퍼링 태스크(들)는 태스크(T1)에 의해 프로세싱되는 데이터 양을 저장하는 버퍼링 태스크(531)를 포함한다. S630에서 식별된 후속 태스크(들)는 T2를 포함하며, 따라서 Tj0 = T2이고 M은 0이다.
S640에서, 식별된 후속 태스크(들)(Tj0, Tj1, ..., TjM)는 순차적으로 실행될 수 있다. 도 5에 도시된 예를 참조하면, 후속 태스크는 T2를 포함한다. 각각의 식별된 후속 태스크에 대해 이하의 설명이 적용될 수 있다.
작업 흐름 관리자(103)는 요청을 후속 태스크(T2)로 송신하고 태스크(T2)를 실행 상태(403)로 이동시킬 수 있다.
후속 태스크(T2)는 S개(예를 들면, 1개, 2개 등)의 단계에 대해 실행될 수 있으며, 예를 들어, 각각의 단계에서 WSD에 기초하여 결정되는 지속기간 또는 길이를 갖는 버퍼링 태스크(531)에 저장된 데이터를 프로세싱할 수 있다. 일 예에서, 지속기간(또는 길이)은 각각의 단계에서의 WSD와 동일하다.
후속 태스크(T2)에 의해 출력되는 데이터의 양이, S x WSD의 총 지속기간(또는 총 크기)과 같은, 제2 임계치에 도달하거나 접근할 때, MiFIFO 태스크가 채워질 수 있다(또는 X% 충만으로 부분적으로 채워질 수 있음, 여기서 X는 100 미만임). 그에 따라, MiFIFO 태스크(예를 들면, MiFIFO 태스크(MiFIFO-1))는 충만 이벤트(또는 부분 충만 이벤트)를 작업 흐름 관리자(103)로 송신할 수 있다. 예를 들어, S는 2이고, 태스크(T2)에 의해 출력되는 데이터의 양이 2WSD에 도달할 때, MiFIFO 태스크(MiFIFO-1)는 충만 이벤트(또는, 예를 들어, S x WSD의 총 지속기간이 X% 채워져 있는 경우 부분 충만 이벤트)를 생성하고 통지를 작업 흐름 관리자(103)로 송신할 수 있다. 제2 임계치는 임의의 적합한 지속기간 또는 크기일 수 있으며 임의의 적합한 단위를 사용하여 표현될 수 있다. 제2 임계치는 TSD, WSD 및/또는 파라미터 S에 기초할 수 있다.
작업 흐름 관리자(103)는 요청을 태스크(T2)로 송신하여, 태스크(T2)를 실행 상태(403)로부터, 유휴 상태(402) 또는 소멸 상태(405)와 같은, 비실행 상태로 이동시킬 수 있다. 비실행 상태(예를 들면, 유휴 상태(402) 또는 소멸 상태(405))에서, 태스크(T2)의 상태 정보(예를 들면, 내부 기능들의 상태 및 값들)는 유지되거나 저장될 필요가 없으며, 따라서 일부 예에서, 비실행 상태에 상태 정보가 저장되지 않으며 태스크(T2)는 상태 비저장 모드에서 실행될 수 있다.
S640은 후속 태스크(들) 각각에 대해 반복될 수 있다. T2에 대한 상기 설명이 다른 후속 태스크(들)에 대해 적합하게 적응될 수 있다. 일 예에서, 후속 태스크(들)는 제2 임계치를 포함한 상이한 임계치들을 갖는다. 대안적으로, 후속 태스크(들)는 동일한 제2 임계치를 갖는다. 일 예에서, 작업 흐름 내의 복수의 프로세싱 태스크들은, S x WSD와 같은, 동일한 임계치를 갖는다.
S650에서, 프로세싱될 나머지 태스크가 후속 태스크인지 여부가 결정될 수 있다. 위에서 기술된 바와 같이, 후속 태스크의 모든 입력(들)은 비어 있지 않은 버퍼링 태스크들(예를 들면, MiFIFO 태스크들)이다. 나머지 태스크가 후속 태스크인 것으로 결정될 때, 프로세스(600)는 S630으로 되돌아가며, 따라서 새로 식별된 후속 태스크(들)에 대해 S630과 S640이 반복된다. 나머지 태스크가 후속 태스크가 아닌 것으로 결정될 때, 프로세스(600)는 S660으로 진행한다.
예를 들어, 태스크(T3)는 새로 식별된 후속 태스크이고, 태스크(T3)에 대해 S640이 반복된다. 후속적으로, S650과 S630이 반복되고, 따라서 태스크(T4 및 T5)는 새로운 후속 태스크로서 식별되며, T4 및 T5에 대해 S640이 반복된다. 마지막으로, T6이 식별되고, T6에 대해 S640이 반복된다.
일반적으로, 작업 흐름(500) 내의 모든 태스크들이 데이터를 프로세싱하기 위해 실행될 때까지 비어 있지 않은 버퍼링 태스크(들)에 연결된 입력(들)을 갖는 나머지 후속 태스크(들)에 대해 S630 및 S640이 반복될 수 있다. 따라서, 나머지 태스크가 후속 태스크가 아닌 것으로 결정될 때, 프로세스(600)는 S660으로 진행한다.
S660에서, 프로세싱될 추가적인 입력 데이터가 남아 있는지 여부가 결정된다. 프로세싱될 추가적인 입력 데이터가 없다고 결정될 때, 프로세스(600)는 S699로 진행하여 종료된다. 프로세싱될 추가적인 입력 데이터가 있는 것으로 결정될 때, 프로세스(600)는 S610으로 돌아가서 입력 데이터의 (예를 들면, S x WSD의 지속기간을 갖는) 다른 서브세트에 대해 S610, S620, S630, S640, 및 S650을 반복한다.
일 예에서, 작업 흐름 내의 프로세싱 태스크들은 상태 비저장 모드에서 실행되며, 따라서 프로세싱 태스크(들)가 비실행 상태에 있을 때 비실행 상태들에 있는 프로세싱 태스크(들)에 대한 상태 정보가 저장되지 않는 상태 비저장 모드에서 작업 흐름이 실행될 수 있다.
프로세스(600)가 적절하게 적응될 수 있다. 프로세스(600)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다. 위에 기술된 예에서, 하나의 단계에서, 하나의 태스크가 실행될 때, 작업 흐름(500) 내의 다른 태스크들은 실행되지 않는다. 다른 예에서, 작업 흐름 내의 다른 태스크들이 실행되지 않는 동안 하나 이상의 태스크가 하나의 단계에서 동시에 실행될 수 있다.
일 예에서, 단계 지원 작업 흐름에 의해 프로세싱될 입력 데이터는 복수의 버퍼 세그먼트들로 분할되고 여기서 각각의 버퍼 세그먼트는 인덱싱된다. 따라서, 입력 데이터는 입력 데이터의 복수의 서브세트들을 포함할 수 있으며, 여기서 각각의 서브세트는 다수의 인덱싱된 버퍼 세그먼트들을 포함한다. 각각의 서브세트의 크기 또는 길이는 프로세싱 태스크들의 TSD들 및/또는 파라미터 S에 기초하여 결정될 수 있다. 일 예에서, 각각의 서브세트의 길이는 S x WSD(예를 들면, WSD, 2WSD, 3WSD)이고, 각각의 프로세싱 태스크는 비실행 상태로 전환하기 전에 S x WSD의 길이를 갖는 입력 데이터의 서브세트를 프로세싱할 수 있다. 일 예에서, TSD들은 동일하며, 따라서 WSD는 각각의 프로세싱 태스크의 TSD와 동일하고, 따라서 각각의 서브세트의 길이는 S x TSD, 예컨대, TSD, 2TSD, 3TSD 등이다.
프로세스(600)는 MiFIFO 태스크들을 갖는 작업 흐름(500)을 사용하여 기술된다. 프로세스(600)는, 작업 흐름(200B)과 같은, iFIFO 태스크들을 갖는 단계 지원 작업 흐름에 적합하게 적응될 수 있다. 프로세스는 iFIFO 태스크(들) 및 MiFIFO 태스크(들)를 갖는 단계 지원 작업 흐름에 적합하게 적응될 수 있다.
프로세스(600) 및/또는 단계별 작업 흐름(500)의 이점들은 아래와 같이 기술될 수 있다. 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)(예를 들면, 작업 흐름 관리자(103))이 프로세스(600)를 실행하기 위한 로직은 간단하다. 전파 모델(propagation model)은 작업 흐름 입력(들)으로부터 시작하여 각각의 태스크의 하나의 단계를 실행할 수 있고, 뒤이어서 태스크의 출력(들)에 연결된 태스크(들)를 실행할 수 있다. 프로세스(600) 및/또는 작업 흐름(500)은 복수의 단계들에서 작업 흐름의 출력(들)을 생성할 수 있다. 단계들이 이벤트들에 의해 트리거링될 수 있으며, 따라서 작업 흐름 관리가 매우 효율적일 수 있다. 단계 크기(S)는 임의의 적합한 수로 선택될 수 있다.
본 개시에 따르면, 상태 비저장 단계 지원 프로세싱 태스크를 구현하기 위해, 프로세싱 태스크를 생성하기 위해 인스턴스화될 수 있는 대응하는 기능이 구성 파라미터(들) 및 입력 파라미터(들)로 구성될 수 있다. 구성 파라미터들은 위에서 기술된 바와 같은 TSD 파라미터를 포함할 수 있다. TSD는 프로세싱 태스크가 프로세싱될 데이터 내의 다른 태스크 세그먼트들과 독립적으로 프로세싱할 수 있는 태스크 세그먼트의 지속기간을 결정할 수 있다. 일부 예에서, TSD 파라미터는 프로세싱 태스크에 대한 다른 구성 파라미터들에 의존한다. 구성 파라미터들은 프로세싱 태스크가 상태 비저장 모드에서 동작할 수 있는 TSD(들)의 개수를 지칭하는 동작 샘플들을 포함할 수 있다. 예를 들어, 출력(들)은 N1개의 입력 샘플을 프로세싱하는 것에 기초하여 생성되고, 여기서 N1은 TSD와 연관된 정수일 수 있다. 입력 파라미터는, 메타데이터와 같은, 추가적인 입력들을 포함할 수 있다. 추가적인 입력(들)은 입력 데이터 내의 입력 태스크 세그먼트의 시작 시간, 지속기간 등을 나타낼 수 있다. 입력 태스크 세그먼트의 지속기간은 TSD일 수 있다.
일 예에서, 프로세싱될 입력 데이터는 복수의 버퍼 세그먼트들로 분할되고 각각의 버퍼 세그먼트는 버퍼 세그먼트의 시작 시간, 지속기간 및 길이를 제공하기 위해 인덱싱될 수 있다.
단계 기반 작업 흐름의 상기 설계는 전체 작업 흐름에 적용될 수 있으며, 예를 들면, 작업 흐름 입력(들) 및/또는 작업 흐름 출력(들)에서 버퍼링 태스크들(예를 들면, iFIFO 태스크, MiFIFO 태스크)을 구현하는 것에 의해 작업 흐름이 단계별로 실행될 수 있다. 상기 접근법의 이점은 작업 흐름의 개별 태스크들이 단계 지원이 아닐 수 있지만, 작업 흐름들이 단계적으로 프로세싱될 수 있다는 것이다. 따라서, 작업 흐름이 단계별로 실행될 수 있다. 따라서, 플랫폼 리소스들이 하나의 단계에서 전체 세션을 계속 실행하는 데 이용 가능하지 않을 때, 나머지 작업 흐름들이 실행되지 않는 동안(예를 들면, 유휴 상태 또는 소멸 상태에 있는 동안) 하나 이상의 작업 흐름이 실행될 수 있다. 작업 흐름이 다중 작업 흐름 셋업의 일부이고 각각의 작업 흐름이 단계별로 실행될 수 있을 때, 모든 작업 흐름들이 동시에 실행되는 것은 아니다.
도 2c는 본 개시의 실시예에 따른 작업 흐름(200C)의 예를 도시한다. 작업 흐름(200C)은 프로세싱 태스크들(또는 태스크들)(T4 내지 T9)을 포함한다. 일 예에서, 프로세싱 태스크들(T4 내지 T9) 중 2개 사이에 버퍼링 태스크들이 삽입되지 않고, 프로세싱 태스크들(T4 내지 T9)이 데이터를 프로세싱하기 위해 동시에 실행될 수 있으며 단계 지원이 아니다. 하나 이상의 버퍼링 태스크가 작업 흐름 입력(들) 및/또는 작업 흐름 출력(들)에 삽입될 수 있으며, 따라서 작업 흐름(200C)은 단계 모드에서 또는 한 번에 하나의 단계씩 실행될 수 있다. 일 예에서, 버퍼링 태스크(271)가 작업 흐름 입력(255)에 제공되고, 버퍼링 태스크(272)가 작업 흐름 출력(263)에 제공된다. 일 예에서, 작업 흐름(200C)은 다음 조건들: (i) 버퍼링 태스크(271)에 저장된 데이터가 작업 흐름(200C)에 제공되는 것(예를 들면, 버퍼링 태스크(271)가 비어 있는 것), 및 (ii) 버퍼링 태스크(272)가 채워져 있는 것 중 하나가 충족될 때까지 데이터를 프로세싱하기 위해 실행된다. 작업 흐름이 단계 지원 태스크(들)를 포함할 때 작업 흐름(200C)에 대한 상기 설명이 적합하게 적응될 수 있다. 버퍼링 태스크(271)는 iFIFO 태스크, MiFIFO 태스크 등일 수 있다. 버퍼링 태스크(272)는 iFIFO 태스크, MiFIFO 태스크 등일 수 있다. 일 예에서, 링크들(263 및 264)에 대해 MiFIFO 태스크가 제공된다.
도 2d는 본 개시의 실시예에 따른 복수의 작업 흐름들(280)의 예를 도시한다. 복수의 작업 흐름들(280)은 작업 흐름(200C) 및 작업 흐름(200D)를 갖는 작업 흐름들의 캐스케이드를 포함할 수 있다. 작업 흐름(200C)은 도 2c에 기술되어 있다. 작업 흐름(200D)은 입력 데이터를 태스크(T1)에 제공하는 작업 흐름 입력(251) 및 입력 데이터를 작업 흐름(200C)에 제공하는 작업 흐름 출력(255)을 갖는 프로세싱 태스크들(T1 내지 T3)을 포함한다. 따라서, 작업 흐름(200D)의 작업 흐름 출력(255)은 작업 흐름(200C)의 작업 흐름 입력(255)이다.
버퍼링 태스크(271)는 작업 흐름(200C)과 작업 흐름(200D) 사이에 삽입되며, 따라서 복수의 작업 흐름들(280)이 단계 모드에서 실행되며 여기서 작업 흐름(200D)은 데이터를 프로세싱하기 위해 실행되는 반면 작업 흐름(200C)은 비실행 상태에 있고 데이터를 프로세싱하기 위해 실행되지 않는다. 버퍼링 태스크(271)는 iFIFO 태스크, MiFIFO 태스크 등을 포함할 수 있다.
버퍼링 태스크가 작업 흐름 입력 또는 작업 흐름 출력에 제공될 때 작업 흐름이 단계 모드에서 실행될 수 있다.
본 개시의 양태들에 따르면, 간단한 버퍼링 기능(또는 버퍼링 태스크)을 사용하는 것에 의해 비단계형(non-step-able) 태스크들을 포함하는 정규 작업 흐름(또는 비단계 지원(non-step-enabled) 작업 흐름)이 단계형 태스크(들)를 포함하는 단계형 작업 흐름으로 변환될 수 있다. 버퍼링 기능(예를 들면, iFIFO 기능, MiFIFO 기능) 또는 대응하는 태스크(예를 들면, iFIFO 태스크, MiFIFO 태스크)는 모든 적합한 플랫폼들에서 구현하기에 효율적일 수 있다. 이벤트(예를 들면, 공백 이벤트, 충만 이벤트, 부분 충만 이벤트) 기반 단계 프로세스는 설계를 단순화하고 작업 흐름의 관리를 효율적으로 만들 수 있다. 태스크 당 한 단계 실행(one step per task execution)을 통해 작업 흐름을 전파하기 위한 작업 흐름 알고리즘은 간단하다. 작업 흐름의 출력(들)이 단계적으로 생성될 수 있다. 단계 크기는 작업 흐름 내의 프로세싱 태스크들에 대한 파라미터 S 및 TSD들에 기초할 수 있으며, 따라서, 예를 들어, 파라미터 S를 변화시키는 것에 의해 구성 가능하다. 단계 지원 작업 흐름 내의 프로세싱 태스크가 실행 상태로부터 비실행 상태로 전환할 때, 프로세싱 태스크의 상태 정보가 저장될 필요가 없다. 따라서, 다양한 예에서, 프로세싱 태스크의 상태 정보 없음은 상태 비저장 단계 지원 프로세싱 태스크이고 상태 비저장 태스크 동작을 구현한다. 상태 비저장 태스크 동작은, 클라우드 플랫폼들과 같은, 특정 컴퓨팅 플랫폼들에서 유리할 수 있다.
본 개시의 양태들에 따르면, 작업 흐름 입력, 작업 흐름 출력을 위해 또는 작업 흐름 내의 2개의 태스크 사이에 버퍼링 태스크가 제공될 때 작업 흐름은 단계 모드에서 실행될 수 있다. 작업 흐름이 단계별로 실행될 수 있으며, 따라서 데이터가 작업 흐름에 입력될 때 데이터(예를 들면, 미디어 데이터)를 프로세싱하기 위해 작업 흐름이 연속적으로 실행되지 않는다. 그 대신에, 작업 흐름은 제1 단계에서 데이터의 제1 서브세트를 프로세싱할 수 있다. 데이터의 프로세싱된 제1 서브세트를 출력한 후에, 작업 흐름은 제2 단계에서 데이터의 제2 서브세트를 프로세싱할 수 있다.
단계별 작업 흐름이 임의의 적합한 방법을 사용하여 수행될 수 있다. 일 예에서, 작업 흐름은, 도 2b 및 도 5에 도시된 바와 같이, 작업 흐름 내의 태스크들 사이에 제공되는 버퍼링 태스크(들)(예를 들면, iFIFO 태스크(들), MiFIFO 태스크(들))를 포함할 수 있다. 다른 태스크들이 비실행 상태(들)에 있는 동안 작업 흐름 내의 하나 이상의 태스크가 실행 상태(들)에서 동시에 실행될 수 있으며, 따라서 모든 태스크들을 동시에 실행하는 데 사용되는 리소스들(예를 들면, 계산 리소스들, 메모리 리소스들)을 감소시킨다.
도 7은 본 개시의 실시예에 따른 프로세스(700)를 개략적으로 나타내는 플로차트를 도시한다. 일 예에서, 프로세스(700)는, 미디어 데이터와 같은, 입력 데이터를 프로세싱하기 위해 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)을 사용하여 구현된다. 일부 실시예에서, 프로세스(700)는 소프트웨어 명령어들로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어들을 실행할 때, 프로세싱 회로는 프로세스(700)를 수행한다. 프로세스는 S701에서 시작되고 S710으로 진행한다.
S710에서, 작업 흐름의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 일 예에서, 작업 흐름 정보는 데이터 프로세싱 소스(예를 들면, NBMP 소스(101))로부터 작업 흐름 관리자(예를 들면, 작업 흐름 관리자(103))에 의해 수신된다.
S720에서, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 작업 흐름이 생성될 수 있다. 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함할 수 있다. 일 예에서, 복수의 프로세싱 태스크들은 대응하는 TSD들로 구성된다. 복수의 프로세싱 태스크들 각각은 TSD를 벗어난 데이터와 독립적으로 각자의 TSD와 동일한 크기를 갖는 데이터 양을 프로세싱하도록 구성될 수 있다. 따라서, 각각의 프로세싱 태스크는 TSD의 지속기간을 갖는 시간 창 내에서 데이터를 독립적으로 프로세싱할 수 있으며 시간 창 내에서 프로세싱 태스크에 의해 생성된 출력은 시간 창을 벗어난 다른 데이터와 독립적이다. 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함할 수 있다. 작업 흐름은, 도 2b 및 도 5에 기술된 것과 같은, 단계 지원 작업 흐름일 수 있다. 제1 버퍼링 태스크는 위에서 기술된 바와 같이 대응하는 버퍼링 기능으로부터 인스턴스화될 수 있다. 제1 버퍼링 태스크는 iFIFO 태스크, MiFIFO 태스크 등일 수 있다. 일 예에서, 입력 데이터는 입력 데이터의 서브세트를 갖는 입력 데이터의 복수의 서브세트들을 포함한다.
S730에서, 제1 프로세싱 태스크는 입력 데이터의 서브세트가 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 위에서 기술된 바와 같이, 제1 프로세싱 태스크가 입력 데이터의 서브세트를 프로세싱하기 위해 실행 상태에 있을 때, 제2 프로세싱 태스크는 비실행 상태(예를 들면, 유휴 상태 또는 소멸 상태)에 있다. 제1 버퍼링 태스크는 제1 프로세싱된 서브세트 데이터를 저장하고 제1 프로세싱된 서브세트 데이터를 제2 프로세싱 태스크에 제공하도록 구성될 수 있다.
S740에서, 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 제1 프로세싱 태스크는 실행 상태로부터 비실행 상태(예를 들면, 유휴 상태 또는 소멸 상태)로 전환하게 될 수 있다. 일 예에서, 비실행 상태에서 제1 프로세싱 태스크의 상태 정보가 저장되지 않는다. 제1 임계치는 (i) 복수의 프로세싱 태스크들의 TSD들, (ii) 작업 흐름의 WSD, 또는 (iii) WSD와 제1 프로세싱 태스크가 연속적으로 실행되도록 구성된 단계들의 개수를 나타내는 파라미터 S에 기초할 수 있다. 일 예에서, 제1 임계치는 S x WSD이다.
일 예에서, 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일할 때, 이벤트(예를 들면, 위에서 기술된 충만 이벤트)가, 예를 들어, 제1 버퍼링 태스크에 의해 생성될 수 있고, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 프로세싱 태스크로 송신하고 제1 프로세싱 태스크로 하여금 실행 상태로부터 비실행 상태로 전환하게 할 수 있다.
일 예에서, 버퍼링 태스크(입력 버퍼링 태스크라고 지칭됨)가 제1 프로세싱 태스크에 대한 입력을 제공하고 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공될 때, 제1 프로세싱 태스크는 실행 상태로부터 비실행 상태로 전환하게 될 수 있다. 예를 들어, 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공될 때 버퍼링 태스크는 공백 이벤트를 생성할 수 있으며, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 프로세싱 태스크로 송신하고 제1 프로세싱 태스크로 하여금 실행 상태로부터 비실행 상태로 전환하게 할 수 있다.
일 예에서, 입력 버퍼링 태스크에 저장된 데이터가 제1 프로세싱 태스크에 제공되거나 또는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일할 때, 제1 프로세싱 태스크는 실행 상태로부터 비실행 상태로 전환하게 될 수 있다.
S750에서, 제1 프로세싱 태스크가 비실행 상태로 전환된 후에, 제2 프로세싱 태스크는 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 제1 프로세싱 태스크는 비실행 상태에 있는 반면 제2 프로세싱 태스크는 제1 프로세싱된 서브세트 데이터를 프로세싱하기 위해 실행된다. 따라서, 제1 프로세싱 태스크와 제2 프로세싱 태스크는 동시에 실행되지 않고 순차적으로 실행된다.
프로세스(700)가 적절하게 적응될 수 있다. 프로세스(700)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다.
일 예에서, 실행 상태에 있는 제2 프로세싱 태스크는 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력한다. 제2 버퍼링 태스크는 제2 프로세싱된 서브세트 데이터를 저장하고 제2 프로세싱된 서브세트 데이터를 복수의 프로세싱 태스크들 중 제3 프로세싱 태스크에 제공하도록 구성될 수 있다. S750 이후에, 제2 프로세싱 태스크는 (i) 제2 버퍼링 태스크에 저장된 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 제1 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 제2 프로세싱 태스크에 제공되는 것(예를 들면, 제1 버퍼링 태스크를 위해 구성된 버퍼가 비어 있는 것) 중 하나에 기초하여 실행 상태로부터 비실행 상태로 전환하게 될 수 있다. 일 예에서, 비실행 상태에서 제2 프로세싱 태스크의 상태 정보가 저장되지 않는다. 제2 임계치는 (i) 복수의 프로세싱 태스크들의 TSD들, (ii) 작업 흐름의 WSD, 또는 (iii) WSD와 제1 프로세싱 태스크가 연속적으로 실행되도록 구성된 단계들의 개수를 나타내는 파라미터 S에 기초할 수 있다. 일 예에서, 제2 임계치는 S x WSD이다. 제1 임계치와 제2 임계치는 동일하거나 상이할 수 있다.
일 예에서, 작업 흐름은 제1 버퍼링 태스크(예를 들면, iFIFO 태스크 또는 MiFIFO)를 갖는 복수의 버퍼링 태스크들을 추가로 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이고, 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
일 예에서, 입력 데이터는 입력 데이터의 서브세트 및 입력 데이터의 다른 서브세트를 포함한다. 작업 흐름은 제1 버퍼링 태스크(예를 들어, iFIFO 태스크, MiFIFO 태스크)를 포함하는 복수의 버퍼링 태스크들을 포함한다. 복수의 프로세싱 태스크들의 각각의 입력은 복수의 버퍼링 태스크들 중 하나 이상과 입력 데이터 중 하나로부터의 것이다. 입력 데이터의 서브세트는 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱될 수 있다. 입력 데이터의 서브세트가 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 복수의 프로세싱 태스크들 내의 나머지 프로세싱 태스크들이 비실행 상태들에 있는 동안 입력 데이터의 다른 서브세트가 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱될 수 있다. 임의의 시점에서 복수의 프로세싱 태스크들 중 하나만이 실행 상태에 있도록 허용된다.
도 8은 본 개시의 실시예에 따른 프로세스(800)를 개략적으로 나타내는 플로차트를 도시한다. 일 예에서, 프로세스(800)는, 미디어 데이터와 같은, 입력 데이터를 프로세싱하기 위해 데이터 프로세싱 시스템(예를 들면, NBMP 시스템)(100)을 사용하여 구현된다. 일부 실시예에서, 프로세스(800)는 소프트웨어 명령어들로 구현되고, 따라서 프로세싱 회로가 소프트웨어 명령어들을 실행할 때, 프로세싱 회로는 프로세스(800)를 수행한다. 프로세스는 S801에서 시작되고 S810으로 진행한다.
S810에서, 복수의 작업 흐름들의 작업 흐름 정보가 프로세싱 회로에 의해 수신될 수 있다. 일 예에서, 작업 흐름 정보는 데이터 프로세싱 소스(예를 들면, NBMP 소스(101))로부터 작업 흐름 관리자(예를 들면, 작업 흐름 관리자(103))에 의해 수신된다.
S820에서, 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 복수의 작업 흐름들이 생성될 수 있다. 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함할 수 있다. 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함할 수 있다. 제1 작업 흐름과 제2 작업 흐름 중 적어도 하나는 도 2c에서 위에서 기술된 바와 같이 입력 버퍼링 태스크 또는 출력 버퍼링 태스크를 갖는다.
S830에서, 제1 작업 흐름은 입력 데이터의 서브세트가 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 위에서 기술된 바와 같이, 제1 작업 흐름이 입력 데이터의 서브세트를 프로세싱하기 위해 실행 상태에 있을 때, 제2 작업 흐름은 비실행 상태(예를 들면, 유휴 상태 또는 소멸 상태)에 있다. 일 예에서, 버퍼링 태스크는 제1 프로세싱된 서브세트 데이터를 저장하고 제1 프로세싱된 서브세트 데이터를 제2 작업 흐름에 제공하도록 구성될 수 있다. 버퍼링 태스크는 위에서 기술된 바와 같이 대응하는 버퍼링 기능으로부터 인스턴스화될 수 있다. 버퍼링 태스크는 iFIFO 태스크, MiFIFO 태스크 등일 수 있다.
S840에서, 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 제1 작업 흐름은 실행 상태로부터 비실행 상태로 전환하게 될 수 있다.
일 예에서, 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일할 때, 이벤트(예를 들면, 위에서 기술된 충만 이벤트)가, 예를 들어, 버퍼링 태스크에 의해 생성될 수 있고, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 작업 흐름으로 송신하고 제1 작업 흐름으로 하여금 실행 상태로부터 비실행 상태로 전환하게 할 수 있다.
일 예에서, 버퍼링 태스크(입력 버퍼링 태스크라고 지칭됨)가 제1 작업 흐름에 대한 입력을 제공하고 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공될 때, 제1 작업 흐름은 실행 상태로부터 비실행 상태로 전환하게 될 수 있다. 예를 들어, 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공될 때 입력 버퍼링 태스크는 공백 이벤트를 생성할 수 있으며, 통지가 작업 흐름 관리자로 송신될 수 있다. 후속적으로, 작업 흐름 관리자는 요청을 제1 작업 흐름으로 송신하고 제1 작업 흐름으로 하여금 실행 상태로부터 비실행 상태로 전환하게 할 수 있다.
일 예에서, 입력 버퍼링 태스크에 저장된 데이터가 제1 작업 흐름에 제공되거나 또는 버퍼링 태스크(또는 출력 버퍼링 태스크)에 저장된 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일할 때, 제1 작업 흐름은 실행 상태로부터 비실행 상태로 전환하게 될 수 있다.
S850에서, 제1 작업 흐름이 비실행 상태로 전환된 후에, 제2 작업 흐름은 버퍼링 태스크에 저장된 제1 프로세싱된 서브세트 데이터가 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 될 수 있다. 일 예에서, 제1 작업 흐름은 비실행 상태에 있는 반면 제2 작업 흐름은 제1 프로세싱된 서브세트 데이터를 프로세싱하기 위해 실행된다. 따라서, 제1 작업 흐름과 제2 작업 흐름은 동시에 실행되지 않고 순차적으로 실행된다.
프로세스(800)가 적절하게 적응될 수 있다. 프로세스(800)에서의 단계(들)는 수정 및/또는 생략될 수 있다. 추가적인 단계(들)가 추가될 수 있다. 임의의 적합한 구현 순서가 사용될 수 있다. 예를 들어 제1 작업 흐름의 비실행 상태에는 유휴 상태 또는 소멸 상태가 포함된다. 제1 작업 흐름이 비실행 상태에 있을 때 제1 작업 흐름의 상태 정보가 저장되지 않는다. 제1 작업 흐름은 입력 데이터의 서브세트 이외의 나머지 서브세트들과 독립적으로 입력 데이터의 서브세트를 프로세싱하도록 구성된다.
위에서 설명된 기술은 컴퓨터 판독 가능 명령어들을 사용하여 컴퓨터 소프트웨어로서 구현될 수 있으며 하나 이상의 컴퓨터 판독 가능 매체에 물리적으로 저장될 수 있다.
본 개시에서의 방법들 및 실시예들은 개별적으로 사용되거나 임의의 순서로 조합될 수 있다. 게다가, 방법들(또는 실시예들), 기능들 또는 태스크들 각각은 프로세싱 회로(예를 들면, 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 일 예에서, 하나 이상의 프로세서는 비일시적 컴퓨터 판독 가능 매체에 저장된 프로그램을 실행한다.
위에서 설명된 기술은 컴퓨터 판독 가능 명령어들을 사용하여 컴퓨터 소프트웨어로서 구현될 수 있으며 하나 이상의 컴퓨터 판독 가능 매체에 물리적으로 저장될 수 있다. 예를 들어, 도 9은 개시된 주제의 특정 실시예들을 구현하기에 적합한 컴퓨터 시스템(900)을 도시한다.
컴퓨터 소프트웨어는 하나 이상의 컴퓨터 중앙 프로세싱 유닛(CPU), 그래픽 프로세싱 유닛(GPU) 등에 의해 직접 또는 인터프리테이션(interpretation), 마이크로 코드 실행 등을 통해 실행될 수 있는 명령어들을 포함하는 코드를 생성하기 위해 어셈블리, 컴파일, 링킹 또는 유사한 메커니즘들을 거칠 수 있는 임의의 적합한 머신 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있다.
명령어들은, 예를 들어, 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰, 게이밍 디바이스, 사물 인터넷 디바이스 등을 포함한, 다양한 유형의 컴퓨터들 또는 그 컴포넌트들에서 실행될 수 있다.
컴퓨터 시스템(900)에 대해 도 9에 도시된 컴포넌트들은 본질적으로 예시적인 것이며, 본 개시의 실시예들을 구현하는 컴퓨터 소프트웨어의 사용 또는 기능성의 범위에 대한 어떠한 제한도 암시하도록 의도되지 않는다. 컴포넌트들의 구성이 컴퓨터 시스템(900)의 예시적인 실시예에 예시된 컴포넌트들 중 임의의 것 또는 이들의 임의의 조합에 관련된 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(900)은 특정 인간 인터페이스 입력 디바이스들을 포함할 수 있다. 그러한 인간 인터페이스 입력 디바이스는, 예를 들어, 촉각적 입력(예컨대: 키스트로크, 스와이프, 데이터 글러브 움직임), 오디오 입력(예컨대: 음성, 박수), 시각적 입력(예컨대: 제스처), 후각적 입력(묘사되지 않음)을 통한 한 명 이상의 인간 사용자에 의한 입력에 응답할 수 있다. 인간 인터페이스 디바이스들은 또한, 오디오(예컨대: 음성, 음악, 주변 소리), 이미지들(예컨대: 스캔된 이미지들, 정지 이미지 카메라로부터 획득된 사진 이미지들), 비디오(예컨대, 2차원 비디오, 입체 비디오를 포함한 3차원 비디오)와 같은, 인간에 의한 의식적인 입력에 반드시 직접 관련되지는 않는 특정 미디어를 캡처하는 데 사용될 수 있다.
입력 인간 인터페이스 디바이스들은 키보드(901), 마우스(902), 트랙패드(903), 터치 스크린(910), 데이터 글러브(도시되지 않음), 조이스틱(905), 마이크로폰(906), 스캐너(907), 카메라(908) 중 하나 이상(각각이 하나만 묘사되어 있음)을 포함할 수 있다.
컴퓨터 시스템(900)은 특정 인간 인터페이스 출력 디바이스들을 또한 포함할 수 있다. 그러한 인간 인터페이스 출력 디바이스들은, 예를 들어, 촉각적 출력, 소리, 빛 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 그러한 인간 인터페이스 출력 디바이스들은 촉각적 출력 디바이스들(예를 들어, 터치 스크린(910), 데이터 글러브(도시되지 않음) 또는 조이스틱(905)에 의한 촉각적 피드백, 그러나 입력 디바이스들로서 역할하지 않는 촉각적 피드백 디바이스들도 있을 수 있음), 오디오 출력 디바이스들(예컨대: 스피커들(909), 헤드폰들(묘사되지 않음)), 시각적 출력 디바이스들(예컨대, CRT 화면, LCD 화면, 플라스마 화면, OLED 화면을 포함하는 화면(910), 각각이 터치 스크린 입력 능력을 갖거나 갖지 않고, 각각이 촉각적 피드백 능력을 갖거나 갖지 않음 - 그 일부는 2차원 시각적 출력 또는 입체 출력과 같은 수단을 통한 3차원 초과의 출력을 출력할 수 있음 -; 가상 현실 안경(묘사되지 않음), 홀로그래픽 디스플레이 및 연기 탱크(smoke tank)(묘사되지 않음)), 및 프린터(묘사되지 않음)를 포함할 수 있다.
컴퓨터 시스템(900)은 CD/DVD 또는 유사한 매체(921)를 갖는 CD/DVD ROM/RW(920)를 포함한 광학 매체, 썸 드라이브(922), 이동식 하드 드라이브 또는 솔리드 스테이트 드라이브(923), 테이프 및 플로피 디스크(묘사되지 않음)와 같은 레거시 자기 매체, 보안 동글(묘사되지 않음)과 같은 특수 ROM/ASIC/PLD 기반 디바이스 등과 같은 인간 액세스 가능 저장 디바이스들 및 이들과 연관된 매체를 또한 포함할 수 있다.
본 기술 분야의 통상의 기술자는 또한 현재 개시된 주제와 관련하여 사용되는 바와 같은 "컴퓨터 판독 가능 매체"라는 용어가 전송 매체, 반송파 또는 다른 일시적인 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(900)은 하나 이상의 통신 네트워크에 대한 인터페이스를 또한 포함할 수 있다. 네트워크는, 예를 들어, 무선, 유선, 광학일 수 있다. 네트워크는 또한 로컬, 광역, 대도시, 차량용 및 산업용, 실시간, 지연 허용 등일 수 있다. 네트워크의 예는 이더넷, 무선 LAN과 같은 로컬 영역 네트워크, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 TV 유선 또는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량용 및 산업용 등을 포함한다. 특정 네트워크는 통상적으로 (예를 들어, 컴퓨터 시스템(900)의 USB 포트와 같은) 특정 범용 데이터 포트 또는 주변 버스(949)에 연결된 외부 네트워크 인터페이스 어댑터를 필요로 하며; 다른 네트워크는 통상적으로 아래에 기술된 바와 같이 시스템 버스에 연결되는 것에 의해 컴퓨터 시스템(900)의 코어에 통합된다(예를 들면, 이더넷 인터페이스가 PC 컴퓨터 시스템에 통합되거나 셀룰러 네트워크 인터페이스가 스마트 폰 컴퓨터 시스템에 통합됨). 이러한 네트워크들 중 임의의 것을 사용하여, 컴퓨터 시스템(900)은 다른 엔티티들과 통신할 수 있다. 그러한 통신은 단방향, 수신 전용(예를 들어, 방송 TV), 단방향 송신 전용(예를 들어, CANbus로부터 특정 CANbus 디바이스들로) 또는 양방향(예를 들어, 로컬 영역 또는 광역 디지털 네트워크들을 사용하여 다른 컴퓨터 시스템들로)일 수 있다. 위에서 기술된 바와 같이 특정 프로토콜들 및 프로토콜 스택들은 해당 네트워크들 및 네트워크 인터페이스들 각각에서 사용될 수 있다.
전술한 인간 인터페이스 디바이스들, 인간 액세스 가능 저장 디바이스들 및 네트워크 인터페이스들은 컴퓨터 시스템(900)의 코어(940)에 연결될 수 있다.
코어(940)는 하나 이상의 중앙 프로세싱 유닛(CPU)(941), 그래픽 프로세싱 유닛(GPU)(942), FPGA(Field Programmable Gate Arrays)(943) 형태의 특수 프로그래밍 가능 프로세싱 유닛, 특정 태스크를 위한 하드웨어 가속기(944) 등을 포함할 수 있다. 판독 전용 메모리(ROM)(945), 랜덤 액세스 메모리(946), 내부 비-사용자 액세스 가능 하드 드라이브, SSD 등과 같은 내부 대용량 스토리지(947)와 함께, 이러한 디바이스들은 시스템 버스(948)를 통해 연결될 수 있다. 일부 컴퓨터 시스템들에서, 시스템 버스(948)는 추가적인 CPU, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리적 플러그의 형태로 액세스 가능할 수 있다. 주변 디바이스들은 코어의 시스템 버스(948)에 직접 연결되거나 주변 버스(949)를 통해 연결될 수 있다. 주변 버스에 대한 아키텍처들은 PCI, USB 등을 포함한다.
CPU(941), GPU(942), FPGA(943) 및 가속기(944)는, 조합하여, 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령어들을 실행할 수 있다. 해당 컴퓨터 코드는 ROM(945) 또는 RAM(946)에 저장될 수 있다. 과도적인 데이터가 또한 RAM(946)에 저장될 수 있는 반면, 영구적인 데이터는, 예를 들어, 내부 대용량 스토리지(947)에 저장될 수 있다. 하나 이상의 CPU(941), GPU(942), 대용량 스토리지(947), ROM(945), RAM(946) 등과 밀접하게 연관될 수 있는 캐시 메모리를 사용하여 메모리 디바이스들 중 임의의 것에 대한 빠른 저장 및 검색이 가능할 수 있다.
컴퓨터 판독 가능 매체는 다양한 컴퓨터 구현 동작들을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구성된 것일 수 있거나, 컴퓨터 소프트웨어 분야의 통상의 기술자에게 잘 알려져 있고 이용 가능한 종류일 수 있다.
제한이 아닌 예로서, 아키텍처를 갖는 컴퓨터 시스템(900), 특히 코어(940)는 프로세서(들)(CPU, GPU, FPGA, 가속기 등을 포함함)가 하나 이상의 유형적인 컴퓨터 판독 가능 매체에 구현된 소프트웨어를 실행한 결과로서 기능을 제공할 수 있다. 그러한 컴퓨터 판독 가능 매체는 위에서 소개된 바와 같은 사용자 액세스 가능 대용량 스토리지는 물론, 코어 내부 대용량 스토리지(947) 또는 ROM(945)과 같은, 비일시적 특성을 갖는 코어(940)의 특정 스토리지와 연관된 매체일 수 있다. 본 개시의 다양한 실시예들을 구현하는 소프트웨어는 그러한 디바이스들에 저장되고 코어(940)에 의해 실행될 수 있다. 컴퓨터 판독 가능 매체는, 특정 요구에 따라, 하나 이상의 메모리 디바이스 또는 칩을 포함할 수 있다. 소프트웨어는 코어(940) 및 특히 그 내부의 프로세서들(CPU, GPU, FPGA 등을 포함함)로 하여금, RAM(946)에 저장되는 데이터 구조들을 정의하는 것 및 소프트웨어에 의해 정의되는 프로세스들에 따라 그러한 데이터 구조들을 수정하는 것을 포함하여, 본 명세서에서 기술되는 특정 프로세스들 또는 특정 프로세스들의 특정 부분들을 실행하게 할 수 있다. 추가적으로 또는 대안으로서, 컴퓨터 시스템은, 본 명세서에 기술된 특정 프로세스들 또는 특정 프로세스들의 특정 부분들을 실행하기 위해 소프트웨어 대신에 또는 소프트웨어와 함께 동작할 수 있는, 회로(예를 들어: 가속기(944))에 고정 배선되거나 다른 방식으로 구현되는 로직의 결과로서 기능을 제공할 수 있다. 소프트웨어에 대한 언급은 로직을 포함할 수 있으며, 적절한 경우, 그 반대의 경우도 마찬가지이다. 컴퓨터 판독 가능 매체에 대한 언급은 실행을 위한 소프트웨어를 저장하는 회로(예컨대, 집적 회로(IC)), 실행을 위한 로직을 구체화하는 회로, 또는, 적절한 경우, 둘 모두를 포함할 수 있다. 본 개시는 하드웨어와 소프트웨어의 임의의 적합한 조합을 포함한다.
본 개시가 여러 예시적인 실시예들을 기술하였지만, 본 개시의 범위 내에 속하는 변경, 치환 및 다양한 대체 등가물이 있다. 따라서, 본 기술 분야의 통상의 기술자가, 본 명세서에서 명시적으로 도시되거나 기술되지는 않았지만, 본 개시의 원리들을 구체화하고 따라서 본 개시의 사상 및 범위 내에 있는 수많은 시스템들 및 방법들을 고안할 수 있다는 것이 이해될 것이다.

Claims (20)

  1. 프로세싱 회로에 의해 작업 흐름을 프로세싱하기 위한 방법으로서,
    상기 작업 흐름의 작업 흐름 정보를 수신하는 단계;
    상기 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 상기 작업 흐름을 생성하는 단계 - 상기 작업 흐름은 복수의 프로세싱 태스크들 및 제1 버퍼링 태스크를 포함하고, 상기 복수의 프로세싱 태스크들은 제1 프로세싱 태스크 및 제2 프로세싱 태스크를 포함함 -;
    상기 제1 프로세싱 태스크로 하여금 상기 입력 데이터의 서브세트가 상기 제1 프로세싱 태스크에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 상기 제1 버퍼링 태스크에 출력되는 실행 상태에 진입하게 하는 단계;
    상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 양이 제1 임계치와 동일한 것에 기초하여 상기 제1 프로세싱 태스크로 하여금 상기 실행 상태로부터 비실행 상태로 전환하게 하는 단계; 및
    상기 제1 프로세싱 태스크가 상기 비실행 상태로 전환된 후에, 상기 제2 프로세싱 태스크로 하여금 상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터가 상기 제2 프로세싱 태스크에 의해 프로세싱되는 실행 상태에 진입하게 하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 제2 프로세싱 태스크는 상기 실행 상태에서 상기 프로세싱된 제1 프로세싱된 서브세트 데이터를 제2 프로세싱된 서브세트 데이터로서 제2 버퍼링 태스크에 출력하도록 구성되고;
    상기 방법은:
    상기 제2 프로세싱 태스크로 하여금 (i) 상기 제2 버퍼링 태스크에 저장된 상기 제2 프로세싱된 서브세트 데이터의 양이 제2 임계치와 동일한 것 및 (ii) 상기 제1 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 프로세싱 태스크에 제공되는 것 중 하나에 기초하여 상기 실행 상태로부터 비실행 상태로 전환하게 하는 단계
    를 추가로 포함하는, 방법.
  3. 제1항에 있어서,
    상기 복수의 프로세싱 태스크들은 각자의 태스크 세그먼트 지속기간(TSD)으로 구성되고;
    상기 복수의 프로세싱 태스크들 각각은 상기 TSD를 벗어난 데이터와 독립적으로 상기 각자의 TSD와 동일한 크기를 갖는 데이터 양을 프로세싱하도록 구성되며;
    작업 흐름 세그먼트 지속기간(WSD)은 상기 TSD들의 최소 공배수로 결정되며, 상기 제1 임계치는 (i) 상기 TSD들, (ii) 상기 WSD, 및 (iii) 상기 WSD와 상기 제1 프로세싱 태스크가 연속적으로 실행되도록 구성된 단계들의 개수를 나타내는 파라미터 S 중 하나에 기초하는, 방법.
  4. 제3항에 있어서,
    상기 제1 버퍼링 태스크는 iFIFO(indexed first-in-first-out) 버퍼로 구성된 iFIFO 태스크이고;
    상기 iFIFO 태스크는:
    상기 입력 데이터의 버퍼 세그먼트들을 저장하고 - 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱되고, iFIFO 버퍼 크기는 상기 길이 및 상기 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초함 -;
    상기 iFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하며;
    상기 iFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  5. 제3항에 있어서,
    상기 제1 버퍼링 태스크는 복수의 iFIFO 버퍼들로 구성된 MiFIFO(multi-index first-in-first-out) 태스크이고;
    상기 MiFIFO 태스크는:
    상기 제1 프로세싱 태스크에 대한 하나 이상의 출력을 제공하고 - 상기 복수의 iFIFO 버퍼들 각각은 상기 하나 이상의 출력의 각자의 출력으로부터의 상기 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성되고, 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱되며, 각각의 iFIFO 버퍼의 버퍼 크기는 상기 길이 및 상기 각자의 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초함 -;
    상기 MiFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제1 임계치와 동일하다는 것을 나타내는 이벤트를 생성하고;
    상기 MiFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 프로세싱 태스크에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  6. 제1항에 있어서, 상기 제1 프로세싱 태스크가 상기 비실행 상태에 있을 때 상기 제1 프로세싱 태스크의 상태 정보가 저장되지 않고, 상기 비실행 상태는 유휴 상태와 소멸 상태 중 하나를 포함하는, 방법.
  7. 제4항에 있어서,
    상기 작업 흐름은 상기 iFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하고,
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이고,
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  8. 제4항에 있어서,
    상기 입력 데이터는 상기 입력 데이터의 상기 서브세트 및 상기 입력 데이터의 다른 서브세트를 포함하고;
    상기 작업 흐름은 상기 iFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하며;
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이고;
    상기 입력 데이터의 상기 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고;
    상기 입력 데이터의 상기 서브세트가 상기 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 상기 입력 데이터의 상기 다른 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고, 상기 복수의 프로세싱 태스크들 내의 나머지 프로세싱 태스크들은 비실행 상태들에 있고;
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  9. 제5항에 있어서,
    상기 작업 흐름은 상기 MiFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하고,
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이며,
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  10. 제5항에 있어서,
    상기 입력 데이터는 상기 입력 데이터의 상기 서브세트 및 상기 입력 데이터의 다른 서브세트를 포함하고;
    상기 작업 흐름은 상기 MiFIFO 태스크를 포함하는 복수의 버퍼링 태스크들을 포함하며;
    상기 복수의 프로세싱 태스크들의 각각의 입력은 상기 복수의 버퍼링 태스크들 중 하나 이상과 상기 입력 데이터 중 하나로부터의 것이고;
    상기 입력 데이터의 상기 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고;
    상기 입력 데이터의 상기 서브세트가 상기 복수의 프로세싱 태스크들에 의해 프로세싱된 후에, 상기 입력 데이터의 상기 다른 서브세트는 상기 복수의 프로세싱 태스크들에 의해 순차적으로 프로세싱되고, 상기 복수의 프로세싱 태스크들 내의 나머지 프로세싱 태스크들은 비실행 상태들에 있고;
    임의의 시점에서 상기 복수의 프로세싱 태스크들 중 하나만이 상기 실행 상태에 있도록 허용되는, 방법.
  11. 프로세싱 회로에 의해 복수의 작업 흐름들을 프로세싱하기 위한 방법으로서,
    상기 복수의 작업 흐름들의 작업 흐름 정보를 수신하는 단계;
    상기 작업 흐름 정보에 기초하여, 입력 데이터를 프로세싱하기 위한 상기 복수의 작업 흐름들을 생성하는 단계 - 상기 복수의 작업 흐름들 중 적어도 하나는 복수의 프로세싱 태스크들을 포함하고, 상기 복수의 작업 흐름들은 제1 작업 흐름 및 제2 작업 흐름을 포함함 -;
    상기 제1 작업 흐름으로 하여금 상기 입력 데이터의 서브세트가 상기 제1 작업 흐름에 의해 프로세싱되고 제1 프로세싱된 서브세트 데이터로서 버퍼링 태스크에 출력되는 실행 상태에 진입하게 하는 단계;
    상기 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 양이 임계치와 동일한 것에 기초하여 상기 제1 작업 흐름으로 하여금 상기 실행 상태로부터 비실행 상태로 전환하게 하는 단계; 및
    상기 제1 작업 흐름이 상기 비실행 상태로 전환된 후에, 상기 제2 작업 흐름으로 하여금 상기 버퍼링 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터가 상기 제2 작업 흐름에 의해 프로세싱되는 실행 상태에 진입하게 하는 단계
    를 포함하는, 방법.
  12. 제11항에 있어서,
    상기 제1 작업 흐름의 상기 비실행 상태는 유휴 상태 및 소멸 상태 중 하나를 포함하고;
    상기 제1 작업 흐름이 상기 비실행 상태에 있을 때 상기 제1 작업 흐름의 상태 정보가 저장되지 않으며;
    상기 제1 작업 흐름은 상기 입력 데이터의 상기 서브세트 이외의 나머지 서브세트들과 독립적으로 상기 입력 데이터의 상기 서브세트를 프로세싱하도록 구성되는, 방법.
  13. 제11항에 있어서,
    상기 버퍼링 태스크는 iFIFO 버퍼로 구성된 iFIFO 태스크이고;
    상기 iFIFO 태스크는:
    상기 입력 데이터의 버퍼 세그먼트들을 저장하고 - 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱되고, iFIFO 버퍼 크기는 상기 길이 및 상기 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초함 -;
    상기 iFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 임계치와 동일하다는 것을 나타내는 이벤트를 생성하며;
    상기 iFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  14. 제11항에 있어서,
    상기 버퍼링 태스크는 복수의 iFIFO 버퍼들로 구성된 MiFIFO(multi-index first-in-first-out) 태스크이고;
    상기 MiFIFO 태스크는:
    상기 제1 작업 흐름에 대한 하나 이상의 출력을 제공하고 - 상기 복수의 iFIFO 버퍼들 각각은 상기 하나 이상의 출력의 각자의 출력으로부터의 상기 입력 데이터의 버퍼 세그먼트들을 저장하도록 구성되고, 각각의 버퍼 세그먼트는 시작 시간, 지속기간 및 길이로 인덱싱되며, 각각의 iFIFO 버퍼의 버퍼 크기는 상기 길이 및 상기 각자의 iFIFO 버퍼 내의 버퍼 세그먼트들의 개수에 기초함 -;
    상기 MiFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 임계치와 동일하다는 것을 나타내는 이벤트를 생성하고;
    상기 MiFIFO 태스크에 저장된 상기 제1 프로세싱된 서브세트 데이터의 상기 양이 상기 제2 작업 흐름에 제공된다는 것을 나타내는 다른 이벤트를 생성하도록 구성되는, 방법.
  15. 작업 흐름을 프로세싱하기 위한 장치로서, 상기 장치는 제1항 내지 제14항 중 어느 한 항의 방법을 수행하도록 구성된 프로세싱 회로를 포함하는, 장치.
  16. 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 명령어들은 컴퓨터에 의해 실행될 때 상기 컴퓨터로 하여금 제1항 내지 제14항 중 어느 한 항의 방법을 수행하게 하는, 비일시적 컴퓨터 판독 가능 매체.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020217029265A 2019-09-28 2020-09-25 단계 지원 작업 흐름을 위한 방법 및 장치 KR102589876B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962907627P 2019-09-28 2019-09-28
US201962907625P 2019-09-28 2019-09-28
US62/907,625 2019-09-28
US62/907,627 2019-09-28
US17/024,193 US11789771B2 (en) 2019-09-28 2020-09-17 Method and apparatus for a step-enabled workflow
US17/024,193 2020-09-17
PCT/US2020/052675 WO2021062123A1 (en) 2019-09-28 2020-09-25 Method and apparatus for a step-enabled workflow

Publications (2)

Publication Number Publication Date
KR20210125559A KR20210125559A (ko) 2021-10-18
KR102589876B1 true KR102589876B1 (ko) 2023-10-16

Family

ID=75162022

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217029265A KR102589876B1 (ko) 2019-09-28 2020-09-25 단계 지원 작업 흐름을 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US11789771B2 (ko)
EP (1) EP4034987A4 (ko)
JP (1) JP7176129B2 (ko)
KR (1) KR102589876B1 (ko)
CN (1) CN114467076A (ko)
WO (1) WO2021062123A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768984B2 (en) * 2015-06-11 2020-09-08 Honeywell International Inc. Systems and methods for scheduling tasks using sliding time windows
TWI769773B (zh) * 2021-04-06 2022-07-01 鼎新電腦股份有限公司 業務流程管理系統及業務流程管理方法
WO2022224058A1 (en) * 2021-04-19 2022-10-27 Nokia Technologies Oy A method and apparatus for enhanced task grouping
US11489898B1 (en) * 2021-07-07 2022-11-01 Tencent America LLC Method and apparatus for segment-based split and merge functions for parallel processing of media

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117316A1 (en) 2004-11-24 2006-06-01 Cismas Sorin C Hardware multithreading systems and methods
US20170052824A1 (en) 2015-08-19 2017-02-23 Tata Consultancy Services Limited Method and system for process automation in computing
US20210055948A1 (en) 2019-08-23 2021-02-25 Red Hat, Inc. Fast thread execution transition

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793168A (ja) * 1993-09-21 1995-04-07 Fuji Electric Co Ltd タスク管理方式
JPH11143727A (ja) * 1997-11-05 1999-05-28 Nec Mobile Commun Ltd 入出力管理装置および方法
JP3983394B2 (ja) 1998-11-09 2007-09-26 株式会社ルネサステクノロジ 幾何学処理プロセッサ
US7096481B1 (en) 2000-01-04 2006-08-22 Emc Corporation Preparation of metadata for splicing of encoded MPEG video and audio
JP3840045B2 (ja) 2000-08-04 2006-11-01 株式会社東芝 データ処理方法及びデータ処理装置
JP2007200106A (ja) 2006-01-27 2007-08-09 Canon Inc データ処理装置、制御方法、及びプログラム
US8068541B2 (en) 2006-01-30 2011-11-29 Jan Harding Thomsen Systems and methods for transcoding bit streams
JP4519082B2 (ja) 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US7996782B2 (en) 2007-06-08 2011-08-09 National Instruments Corporation Data transfer indicator icon in a diagram
KR100907156B1 (ko) * 2007-10-22 2009-07-09 주식회사 동부하이텍 이미지 센서 및 그 제조방법
US8621475B2 (en) 2007-12-06 2013-12-31 International Business Machines Corporation Responsive task scheduling in cooperative multi-tasking environments
JP5393059B2 (ja) 2008-06-04 2014-01-22 キヤノン株式会社 ワークフロー処理装置及びワークフロー処理方法
US8442827B2 (en) * 2010-06-18 2013-05-14 At&T Intellectual Property I, L.P. System and method for customized voice response
US8849950B2 (en) 2011-04-07 2014-09-30 Qualcomm Incorporated Network streaming of video data using byte range requests
US9055136B2 (en) 2011-10-13 2015-06-09 Qualcomm Incorporated Controlling streaming delay in networks
US10419524B2 (en) * 2012-09-07 2019-09-17 Oracle International Corporation System and method for workflow orchestration for use with a cloud computing environment
US9342063B1 (en) * 2013-09-19 2016-05-17 Amazon Technologies, Inc. Determining capacities of work buffers
US11275590B2 (en) 2015-08-26 2022-03-15 Huawei Technologies Co., Ltd. Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
JP7003749B2 (ja) 2018-03-09 2022-01-21 富士通株式会社 生成プログラム、生成装置、および、生成方法
US11516152B2 (en) 2019-09-28 2022-11-29 Tencent America LLC First-in first-out function for segmented data stream processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060117316A1 (en) 2004-11-24 2006-06-01 Cismas Sorin C Hardware multithreading systems and methods
US20170052824A1 (en) 2015-08-19 2017-02-23 Tata Consultancy Services Limited Method and system for process automation in computing
US20210055948A1 (en) 2019-08-23 2021-02-25 Red Hat, Inc. Fast thread execution transition

Also Published As

Publication number Publication date
CN114467076A (zh) 2022-05-10
JP7176129B2 (ja) 2022-11-21
US20210096903A1 (en) 2021-04-01
US11789771B2 (en) 2023-10-17
EP4034987A1 (en) 2022-08-03
US20230418660A1 (en) 2023-12-28
KR20210125559A (ko) 2021-10-18
WO2021062123A1 (en) 2021-04-01
JP2022524745A (ja) 2022-05-10
EP4034987A4 (en) 2023-11-08

Similar Documents

Publication Publication Date Title
KR102589876B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
KR102622820B1 (ko) 세그먼트화된 데이터 스트림 프로세싱을 위한 선입 선출 기능
KR102601576B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
JP7293393B2 (ja) コンピューティングプラットフォーム上の機能実施のための計算リソース推定
KR102516231B1 (ko) 네트워크 기반 미디어 처리(nbmp)에서의 미디어 처리 함수를 대한 구성 파라미터의 그래프 표현 및 설명
US11734016B2 (en) Method and apparatus for stateless parallel processing of tasks and workflows
JP2023522160A (ja) エッジコンピューティングによるメディアストリーミング
JP7285945B2 (ja) クラウドサービスのための方法、装置、および、コンピュータプログラム
KR102636992B1 (ko) 클라우드 서비스를 위한 방법 및 장치
KR102668137B1 (ko) 태스크들 및 작업 흐름들의 상태 비저장 병렬 프로세싱 방법 및 장치

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