KR101264195B1 - 태스크 로드를 측정하기 위한 방법 및 시스템 - Google Patents

태스크 로드를 측정하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101264195B1
KR101264195B1 KR1020117000565A KR20117000565A KR101264195B1 KR 101264195 B1 KR101264195 B1 KR 101264195B1 KR 1020117000565 A KR1020117000565 A KR 1020117000565A KR 20117000565 A KR20117000565 A KR 20117000565A KR 101264195 B1 KR101264195 B1 KR 101264195B1
Authority
KR
South Korea
Prior art keywords
task
audio
cycles
processor
audio task
Prior art date
Application number
KR1020117000565A
Other languages
English (en)
Other versions
KR20110030550A (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 KR20110030550A publication Critical patent/KR20110030550A/ko
Application granted granted Critical
Publication of KR101264195B1 publication Critical patent/KR101264195B1/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
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Abstract

실시간으로 태스크 로드를 결정하기 위한 방법. 상기 방법은 실시간으로 태스크 실행 전에 프리 러닝 카운터로부터 제 1 카운트 값 및 상기 태스크가 작동을 멈춘 후에 제 2 카운트 값 사이의 차를 취한다. 상기 태스크 로드는 그 다음에 레퍼런스 간격에 걸쳐 상기 제 1 카운트 값 및 상기 제 2 카운트 값 사이의 차를 누산하기 위해 누산기를 사용하고, 구성가능한 레퍼런스 간격에 의해 그 합을 나눔으로써 결정될 수 있다. 실시간으로 계산된 개별적인 태스크 로드는 오디오 태스크의 스케줄링에 사용될 수 있다.

Description

태스크 로드를 측정하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR MEASURING TASK LOAD}
본 출원은 METHOD AND SYSTEM FOR MEASURING TASK LOAD라는 명칭으로 2008년 6월 11일 출원인 미국 임시 특허 출원 제61/060,532호에 관한 것으로서 그 우선권을 주장하고, 상기 미국 임시 특허 출원은 레퍼런스로서 본 명세서에 전체가 결합된다.
설명된 실시예들은 일반적으로 실시간 컴퓨팅에 관한 것이다. 더 구체적으로, 설명된 실시예들은 시스템상에서 애플리케이션의 로드를 조정하기 위해 이용될 수 있는 하나 이상의 태스크 로드들을 측정하는 것에 관한 것이다.
도 1은 일반적으로 실시간 컴퓨팅 시스템의 종래의 기술을 설명한다. 실시간 컴퓨팅 시스템은 애플리케이션 프로그램들을 제어하고 시스템 하드웨어 및 유틸리티들과 인터페이스한다. 실시간 컴퓨팅 시스템(103)은 프로세서 또는 디지털 신호 프로세서와 같은 전자적 하드웨어(101) 상에서 관리될 수 있다. 일 실시예로서, 하드웨어는 임베딩된 소프트웨어 또는 펌웨어를 가지는 임의의 디바이스상의 하드웨어 또는 모바일 전화상의 하드웨어일 수 있다. 유틸리티들(105)은 입력/출력 디바이스들의 제어 및 파일들의 관리에서 컴퓨팅 시스템을 지원하는 공통적인 프로그램들이다.
이러한 애플리케이션들에서, 시스템 설계 고려들을 위해 또는 태스크 로드 정보를 이용할 수 있는 다른 애플리케이션들(107)에 대한 입력 파라미터로서 하나 이상의 개별적인 태스크들로부터 실시간 컴퓨팅 시스템상의 로드를 인지하는 것은 유용한다. 태스크의 로딩을 결정하기 위한 종래의 기술 접근은 로직 분석기를 사용하여 태스크 실행 데이터를 캡처하고 특정 개별적인 태스크상에서 실행되는 명령들을 카운트하는 것이다. 이 접근은 실시간이 아니므로 태스크 로드가 정보를 효율적으로 사용할 수 있는 다른 애플리케이션에 대한 입력으로 사용될 수 없도록 한다. 예를 들어, MIDI(Musical Instrument Digital Interface) 애플리케이션은 미래의 프레임에 대하여 프로세싱되는 MIDI 보이스들을 감소시킬 것인지 여부를 결정하기 위해 실-시간 태스크 로드를 사용할 수 있다.
발명의 상세한 설명에서 개시된 실시예들은 태스크 로드를 계산하기 위해 태스크 실행 사이클들의 수를 결정하는 것을 포함한다. 태스크 실행 사이클들의 수를 결정하는 것은 태스크 실행 전에 프리 러닝 카운터로부터 제 1 카운트 값을 판독하고, 태스크 작동을 멈춘 후에 프리 러닝 카운터로부터 제 2 카운트 값을 판독하고, 상기 제 1 카운트 값 및 상기 제 2 카운트 값 사이의 차를 실시간으로 취하는 것을 포함한다. 태스크 실행 사이클들은 레퍼런스 간격에 걸쳐 누산될 수 있다. 레퍼런스 간격은 구성가능한 값일 수 있다. 태스크 로드는 레퍼런스 간격에 걸쳐 제 1 카운트 값 및 제 2 카운트 값 사이의 차들을 누산하기 위해 누산기를 이용하고 레퍼런스 간격에 의해 합을 나눔으로써 결정될 수 있다.
다른 실시예는 오디오 태스크를 스케줄링하는 것을 포함한다. 오디오 태스크의 스케줄링은 현재의 프레임에서 오디오 태스크를 프로세싱할 레퍼런스 간격을 설정하는 것을 포함하고, 오디오 태스크를 사이클들의 실제 수 및 레퍼런스 간격에서 사이클들의 수 사이의 차를 계산하고, 미래의 오디오 태스크에 대한 파라미터들을 스케줄링하는 것을 포함한다. 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수는 오디오 태스크의 태스크 로드에 기반하여 그리고 오디오 태스크를 프로세싱할 사이클들의 실제 수에 기반하여 계산될 수 있다. 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수는 레퍼런스 간격에서 사이클들의 수(MaxCycles)를 취하고, 현재의 오디오 태스크를 프로세싱하는데 사용되는 사이클들의 수(ActualCycles)를 감산하고, 현재 프레임에서 레퍼런스 간격 내에서 오디오 태스크를 프로세싱하는 데 사용되는 사이클들의 수(누산된 태스크 실행 사이클들)를 더함으로써 계산될 수 있다. 예시적인 실시예는 스케줄링 파라미터들이 오디오 프레임에서 합성 보이스 파라미터들인 경우이다. 레퍼런스 간격은 하드웨어 또는 소프트웨어를 통해 구성가능할 수 있다. 계산된 차는 시간 및 사이클들 사이의 변환에 기반한다. 스케줄링의 예시적인 실시예들은 현재 오디오 태스크에 비해 미래의 오디오 태스크에 대하여 더 적은 오디오 프레임 파라미터들을 프로세싱하거나 또는 현재의 오디오 태스크에 비해 미래의 오디오 태스크에 대하여 더 많거나 같은 오디오 프레임 파라미터들을 프로세싱하는 것을 포함한다. 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수는 오디오 프레임 파라미터들의 최대 수가 프로세싱될 때 0일 수 있고, 프로세서의 파워-온 동안 0일 수 있다.
다른 실시예는 오디오 태스크를 프로세싱할 실제 시간 및 레퍼런스 간격에서 사이클들의 수 사이에서 차를 계산하고 계산된 차에 기반하여 미래의 오디오 태스크를 스케줄링하기 위한 프로세서를 포함하는 장치이다. 메모리는 스케줄링 파라미터들을 저장하고 프리 러닝 카운터는 오디오 태스크의 실제 시간을 계산하기 위해 프로세서에 적어도 두 개의 카운트 값들을 제공한다.
다른 실시예는 현재 프레임에서 오디오 태스크를 프로세싱할 레퍼런스 간격을 리트리브하기 위한 수단, 오디오 태스크를 프로세싱할 사이클들의 실제 수 및 레퍼런스 간격에서 사이클들의 수 사이의 차를 계산하기 위한 수단 및 미래의 태스크에 대하여 파라미터들을 스케줄링하기 위한 수단을 포함하는 장치이다.
다른 실시예는 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체이다. 컴퓨터-판독가능한 매체는 오디오 태스크를 프로세싱할 레퍼런스 간격을 리트리브하기 위한 코드, 오디오 태스크를 프로세싱할 사이클들의 실제 수 및 레퍼런스 간격에서 사이클들의 수 사이의 차를 계산하기 위한 코드 및 미래의 오디오 태스크에 대한 파라미터들을 스케줄링하기 위한 코드를 포함한다.
도 1은 실시간 컴퓨팅 시스템의 블록도 도시이다.
도 2는 실시간으로 태스크 로드를 측정하는 실시간 컴퓨팅 시스템의 블록도 예시적인 실시예이다.
도 3은 호스트 프로세서상에서 실행될 수 있는 방법을 도시하는 흐름도이다.
도 4는 애플리케이션 태스크들의 프로세싱 동안 실시간 컴퓨팅 시스템 내에서 발생할 수 있는 다양한 타이밍 시나리오들의 그래픽 도시이다.
도 5는 멀티-프로세서 시스템의 일 예시적인 실시예의 블록도이다.
도 6은 오디오 디바이스의 일 예시적인 도시의 블록도이다.
도 7은 다음 프래임에서 오디오 태스크들의 프로세싱을 위해 이용가능한 시간 또는 사이클들을 추정하기 위한 계산들에서 태스크 로드를 이용하는 오디오 태스크의 일 예시적인 실시예의 타이밍의 그래픽 도시이다.
도 8은 태스크 로드를 결정하는 방법을 도시하는 흐름도이다.
도 9는 오디오 태스크를 스케줄링하는 방법을 도시하는 흐름도이다.
다양한 실시예들이 아래의 설명 및 관련 도면들에 본 명세서에서 개시된다. 대안적인 실시예들은 발명의 사상에 벗어남이 없이 고안될 수 있다. 부가적으로, 본 발명의 일부 잘 알려진 구성요소들은 상세히 설명되지 않을 수 있거나 또는 본 발명의 관련 세부사항들을 모호하게 하지 않도록 생략될 수 있다.
용어 "예시적인"은 본 명세서에서 "예시, 예 또는 실례로서 작용하는" 것을 의미한다. "예시적인" 것으로서 본 명세서에 설명된 임의의 실시예들은 다른 실시예들보다 선호되거나 또는 이로운 것으로 해석될 필요가 없다. 마찬가지로, 용어 "본 발명의 실시예들"은 본 발명의 모든 실시예들이 설명된 특징, 이점 또는 동작의 모드를 포함할 것을 요구하지 않는다.
용어 "실시간 컴퓨팅 시스템"은 본 명세서에서 스케줄링 시스템을 사용하여 실시간으로 적어도 하나의 태스크를 프로세싱하는 것을 의미하지만, 이에 제한되지 않는다.
도 2는 실시간 컴퓨팅 시스템(230)을 작동시키는 호스트 프로세서(210)의 일 예시적인 실시예이다. 컴퓨팅 시스템(230)은 특정 인터벌들에서 프리 러닝 카운터(225)로부터 출력되는 값을 판독 및 저장한다. 용어 "프리 러닝 카운터"는 본 명세서에서 카운터를 의미하며, 즉 저 전력 모드 및/또는 호스트 프로세서 슬립 상태 동안 작동 상태를 유지하는 카운터를 의미하는 것이다. 당업자는 소프트웨어 카운터 또는 하드웨어 카운터가 대표적인 실시예들의 사상 및 범위를 벗어남이 없이 사용될 수 있음을 인식할 것이다. 프리 러닝 카운터(225)는 물리적으로 프로세서 내부 또는 외부에 위치될 수 있다.
실시간 컴퓨팅 시스템(230)을 작동시키는 호스트 프로세서(210)는 애플리케이션 태스크들(205)을 프로세싱한다. 태스크들은 프로세서(210)가 이용가능할 때 및 태스크가 프로세싱할 준비가 될 때를 결정하는 태스크 스케줄러(215)에 의해 프로세싱된다. 중단 처리기(220)는 현재 프로세서(210)에 의해 실행되고 있는 태스크들(205)을 중단하기 위해 이용될 수 있다. 중단된 태스크들(205)은 태스크 스케줄러에 의해 관리된다.
도 3은 호스트 프로세서(210)상에서 작동될 수 있는 일 예시적인 방법을 도시하는 흐름도이다. 태스크들의 스케줄링(340)은 많은 방식들을 통해 구현될 수 있다. 이러한 방식들은 선점(preemptive) 방식들 및 시간 공유 방식들을 포함할 수 있지만, 이에 제한되지 않는다. 선점 방식들은 최고 할당된 우선순위를 가진 태스크를 먼저 실행하도록 할 수 있다. 선점 방식은 높은 우선순위 태스크를 실행하기 위해, 프로세싱되고 있는 다른 낮은 우선순위 태스크를 중단할 수 있다. 시간 공유 설계들은 프로세싱을 위한 시간 조각들이 모든 태스크들이 완료될 때까지 각 태스크에 할당되는 경우 클록 중단(interrupt) 스케줄상에서 태스크들을 실행한다.
동작될 수 있는 임의의 태스크들이 존재하면(블록(330) 참조), 태스크는 스케줄링되고(340) 예를 들어, 호스트 프로세서(210)에 프로세싱되기 위해 송신(345)될 수 있다. 다른 태스크들이 실행할 준비가 될 때 그리고 호스트 프로세서가 현재 태스크를 실행하기에 바쁠 때, 태스크 스케줄러(340)는 현재 태스크를 선점(preempt)할지를 결정할 것이다. 중단들은 스케줄링 방식에 기반하여 또는 다른 고려들에 대하여 결정될 수 있다.
현재 태스크가 중단되지 않는 경우, 호스트 프로세서는 태스크가 완료될 때까지(360) 현재 태스크(345)를 계속 실행한다. 완료된 태스크가 오디오 태스크(358)가 아니면, 호스트 프로세서는 블록(330)에서 다음 태스크를 프로세싱하기 시작한다. 완료된 태스크가 오디오 태스크(358)이면, 그 다음에 미래의 오디오 태스크의 스케줄링이 수행될 수 있다(359). 블록(359)의 완료시 또는 대안적으로 블록(359)의 실행과 동시에, 호스트 프로세서는 블록(330)에서 다음 태스크를 프로세싱하기 시작한다. 오디오 태스크의 스케줄링은 이후에 논의된다.
중단이 발생할 때(350), 중단은 프로세싱된다(355). 당업계의 일반적인 기술 중 하나는 일 예시로서, 중단된 태스크를 중지하기 전에, 프로세싱되고 있는 태스크의 상태를 저장하거나, 기타 클린-업을 수행하도록 시스템을 설계할 수 있다. 그러므로, 중단된 태스크는 중단을 수신하자마자 프로세싱을 중지하거나 또는 중지하지 않을 수 있다. 태스크 스케줄러(340)는 실행을 완료하지 않은 태스크들을 계속 관리한다. 현재 태스크가 중지되고 호스트 프로세서가 이용가능하면, 호스트 프로세서는 다음 스케줄링된 태스크를 실행하기 시작한다.
블록(330)이 작동될 준비가 된 태스크들이 존재하지 않는다고 검출하고 블록(345)이 프로세싱되고 있는 태스크들이 존재하지 않음을 검출할 때, 컴퓨팅 시스템은 블록(335)에서 슬립 상태로 진입할 수 있다. 슬립 상태 동안, 호스트 프로세서는 유휴이고 자신의 전력 소비를 감소 또는 디스에이블할 수 있다. 프리 러닝 카운터(225)는 슬립 상태 동안 계속 카운트할 수 것이다. 중단의 수신시, 프로세서들의 슬립 상태가 중단되고(365), 그러므로 슬립 상태로부터 깨어나고 자신의 전력 소비를 증가시킨다. 태스크 스케줄러(340)는 실행할 준비가 된 태스크들을 스케줄링하고, 태스크는 프로세싱된다(345).
도 4에서, 시간선들(400, 405 및 410)은 애플리케이션 태스크들의 프로세싱 동안 실시간 컴퓨팅 시스템 내에서 발생할 수 있는 다양한 타이밍 시나리오들의 도시이다. 이러한 도시들에서, 시간은 도 4에서 TX로부터 TY로 증가한다.
용어 "레퍼런스 간격(reference interval)"은 프리 러닝 카운터(225)에 의해 측정되는 사이클들의 대응하는 수로서 설명되거나 시간의 기간으로서 정의될 수 있다. 레퍼런스 간격은 변수들 X 및 Y에 의해 설명될 수 있고, 여기서, X는 레퍼런스 간격의 시작점을 표시하고, Y는 기간에 걸쳐 레퍼런스 간격(420)의 종료점을 표시한다.
레퍼런스 간격 = TY - TX (식 1)
도 4에서, 구성요소(400)는 컴퓨팅 시스템상에서 작동하는 태스크 로드를 측정하는 일 예시적인 방법을 도시한다. 스케줄링된 태스크의 실행 전에, 컴퓨팅 시스템은 프리 러닝 카운터(225)로부터 값을 판독할 수 있고, 상기 값은 Tstart로서 정의된다. 스케줄링된 태스크는 그 다음에 중지될 때까지 실행된다. 태스크는 자신의 실행의 완료시 또는 다른 태스크에 의해 선점될 때 중지된다. 태스크가 중지되면, 실시간 컴퓨팅 시스템은 프리 러닝 카운터로부터 값을 판독할 수 있고, 상기 값은 Tend로서 정의된다. Tstart 및 Tend의 예시들은 구성요소(400)에 도시된다. 용어 "태스크 실행 사이클들"은 Tend 및 Tstart 사이의 차이를 취함으로써 정의되고, 이는 식 2에 도시된다. 당업자는 소프트웨어 또는 하드웨어를 통해 이러한 차이를 얻는 것을 수행할 수 있다.
태스크 실행 사이클들 = Tend - Tstart (식 2)
태스크 실행 사이클들은 식 3에 도시된 바와 같이 간격 X, Y(420)에 걸쳐 이전에 정의된 레퍼런스 간격에 걸쳐 누산될 수 있다. 태스크 실행 사이클들을 누산하기 위한 일 예시적인 실시예는 레퍼런스 간격 동안 오버플로를 회피하기에 충분한 비트들을 가진 하드웨어 또는 소프트웨어 누산기 구성요소를 사용하는 것이다. 이 하드웨어 또는 소프트웨어 누산기는 본 명세서에서 "누산기(accumulator)"로 지칭된다. 추가적인 예시적인 실시예로서, 누산기는 컴퓨팅 시스템에서 구현될 수 있거나 또는 컴퓨팅 시스템의 외부의 누산기일 수 있다.
누산된 태스크 실행 사이클들 =
Figure 112012066740077-pct00001
(식 3)
각 태스크의 로드는 식 4에 도시된 바와 같이 레퍼런스 간격으로 누산된 태스크 실행 사이클들을 나눔으로써 결정될 수 있다. 당업자들은 이 계산이 자신의 로드를 계산하기 위해 임의의 태스크에 적용될 수 있음을 인식할 것이다.
태스크 로드 =
Figure 112012066740077-pct00002
(식 4)
도 8은 태스크 로드를 결정하는 방법을 도시하는 흐름도이다. 레퍼런스 간격은 810에서 구성되고, 저장된다. 이전에 논의된 바와 같이, 구성의 예시적인 도시들은 소프트웨어를 통해 레퍼런스 간격을 구성하고 메모리에 값을 저장하거나 또는 하드웨어 구성을 통해 구성된다. 태스크 실행 전에, 제 1 카운트 값은 프리 러닝 카운터로부터 판독된다(820). 태스크가 작동을 멈춘 후에, 제 2 카운트 값은 프리 러닝 카운터로부터 판독된다(830). 프로세서는 제 1 카운트 값 및 제 2 카운트 값 사이의 실시간 차를 취할 수 있다(840). 제 1 및 제 2 카운트 값들 사이의 실시간 차를 취하는 예시적인 도시가 식 2에 보여지고, 여기서 차는 하드웨어 또는 소프트웨어 방법들을 통해 취해질 수 있다. 누산기는 구성된 레퍼런스 간격에 걸쳐 제 1 카운트 값 및 제 2 카운트 값 사이의 차를 누산할 수 있다(850). 카운트 값들 사이의 차를 누산하는 예시적인 도시가 식 3에 보여지고, 누산기는 하드웨어 또는 소프트웨어로 구현될 수 있다. 태스크 로드는 레퍼런스 간격으로 누산된 차를 나눔으로써 계산될 수 있다(860). 태스크 로드의 계산의 예시적인 도시는 식 4에 보여지고, 상기 계산은 하드웨어 또는 소프트웨어에서 발생할 수 있다.
당업자는 결정된 태스크 로드가 셋 톱 박스, 음악 재생기, 비디오 재생기, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, PDA(personal digital assistant), 고정 위치 데이터 유닛 및 컴퓨터로 이루어진 그룹으로부터 선택된 태스크 로드를 결정하는 방법이 통합되는 전자 장치에 적용될 수 있음을 이해할 것이다.
당업자는 시스템 설계 고려들 또는 태스크 로드 정보를 사용할 수 있는 다른 애플리케이션들에 대한 입력 파라미터와 같은 다양한 목적들을 위해 태스크 로드를 사용할 수 있다. 예를 들어, 높은 우선순위 태스크가 실행될 때, 다른 애플리케이션은 컴퓨팅 시스템의 로드를 제한하기 위해 태스크 로드 정보를 사용할 수 있다. 태스크 로드를 사용하기 위한 예시적인 실시예는 이 문서에서 나중에 논의될 것이다.
레퍼런스 간격이 구성될 수 있고, 저장될 수 있다. 레퍼런스 간격은 레퍼런스 간격에 걸쳐 태스크 실행 사이클들을 정확히 누산하기 위해 충분한 분해능을 가지도록 구성될 수 있다. 예시로서, 레퍼런스 간격은 누산기의 최대 카운트 값이 곱하여진 프리 러닝 카운터의 기간 미만인 값으로 구성될 수 있다. 구성가능한 레퍼런스 간격은 소프트웨어 또는 하드웨어를 통해 구성될 수 있다. 예를 들어, 레퍼런스 간격은 소프트웨어에 의해 구성될 수 있고, 프로세서에 의해 판독되는 메모리에 저장된다. 대안적으로, 레퍼런스 간격은 하드웨어에서 구성될 수 있다. 하드웨어 구성의 예시적인 도시는 레퍼런스 간격의 값으로 래치 또는 플립 플롭을 설정한다.
부가적으로, 225에서 도시된 바와 같은 프리 러닝 카운터는 당업자에 의해, 정확하게 태스크 실행 사이클들을 캡처하기에 충분히 큰 주파수로 설정될 수 있다.
도 5는 멀티-프로세서 시스템의 예시적인 실시예이다. 멀티-프로세서 시스템은 개별 또는 공유 프리 러닝 카운터에 접속될 수 있다. 개별 태스크 로드는 식들 1-4를 사용함으로써 논의된 바와 같이 계산될 수 있다. 일예로서, 도 5의 프로세서들 중 임의의 프로세서에서 작동하는 임의의 태스크는 태스크 로드를 계산할 수 있다.
도 6은 오디오 디바이스(600)의 일 예시적인 도시이다. 오디오 디바이스는 예를 들어, 보이스 또는 MIDI 파일들과 같은 오디오 또는 비디오 파일들의 임의의 타입을 프로세싱할 수 있는 디바이스일 수 있다. 오디오 디바이스(600)는 MIDI 파일들 및 다른 타입들의 데이터를 저장하는 오디오 저장 유닛(605)을 포함할 수 있다. 오디오 저장 유닛(605)은 프로세서(610)에 커플링된 휘발성 또는 비-휘발성 메모리 또는 스토리지의 임의의 타입을 포함할 수 있다.
오디오 디바이스(600)는 또한 종단 사용자를 위해 오디오 정보를 발생시키기 위해 오디오 파일들을 함께 프로세싱하도록 동작하는 제 1 프로세서(610) 및 제 2 프로세서(630)를 포함한다. 도 6은 제 1 프로세서(610) 및 제 2 프로세서(630) 상에서 오디오 태스크들을 분리하는 아키텍처를 도시한다. 당업자는 하나의 프로세서가 구성요소들(610 및 630)의 기능성을 수행하도록 단일 유닛으로 구성요소들(610 및 630)을 결합하는 것과 같은 다른 대안적인 구현들을 인식할 수 있다. 일예로서, 제 1 프로세서(610)는 ARM 프로세서일 수 있고 제 2 프로세서(630)는 디지털 신호 프로세서(DSP)일 수 있다. 다른 예시로서, 단일 프로세서가 610 및 630)의 결합된 기능성을 수행하는 경우, 단일 프로세서는 프로세싱 및 디지털 신호 프로세싱 모두를 수행할 수 있다.
일 예시적인 실시예에서, 제 1 프로세서(610) 및 제 2 프로세서(630)는 레퍼런스 간격에 걸쳐 오디오 태스크들을 프로세싱한다. 본 명세서에서 사용된 구문 "오디오 프레임"은 시간의 블록 또는 클록 또는 카운터 사이클들의 대응하는 수를 지칭한다. 오디오 프레임은 오디오 태스크가 프로세싱되는 레퍼런스 간격일 수 있다.
레퍼런스 간격은 10 ms 간격과 동일하게 선택될 수 있다. 레퍼런스 간격은 48KHz의 샘플링 레이트로 동작하는 디바이스에 대하여 480 샘플들을 가질 수 있다. 당업자는 오디오 웨이브가 하나의 샘플링 레이트가 48KHz일 수 있는 상이한 레이트들로 샘플링될 수 있음을 인지할 것이다. 하나의 오디오 태스크를 프로세싱하기 위해 프로세서에 대하여 요구되는 사이클들의 최대 수는 본 명세서에서 MaxCycles로서 지칭될 것이다. MaxCycles은 본질적으로 사이클들로 변환된 레퍼런스 간격 시간이다. 이 값은 아래 식 5에서 계산된다.
MaxCycles = (클록 주파수) X (레퍼런스 간격) (식 5)
클록 주파수=19.2MHz인 경우 샘플 계산은:
MaxCycles=(19.2MHz) X (10 미리세컨드(ms))= 192,000 사이클들
프로세서(610)은 오디오 스토리지(605)로부터 데이터를 판독하고, 오디오 스토리지(605)에 데이터를 기록할 수 있다. 부가적으로, 프로세서(610)는 메모리 유닛(615)으로부터 데이터를 판독하고 메모리 유닛(615)에 데이터를 기록할 수 있다. 예시로서, 프로세서(610)는 오디오 스토리지(605)로부터 MIDI 파일들을 판독하고 메모리 유닛(615)에 MIDI 파일들을 기록할 수 있다. 각 오디오 프레임에 대하여, 프로세서(610)는 하나 이상의 MIDI 파일들을 리트리브할 수 있고, 하나 이상의 MIDI 명령들을 추출하기 위해 MIDI 파일들을 파싱(parse)할 수 있다. MIDI 명령들은 프로세싱을 요구하는 MIDI 보이스들을 포함하는 다양한 파라미터들을 포함한다. MIDI 명령 파라미터들은 애프터터치(aftertouch) 효과들, 호흡 제어 효과들, 프로그램 변경들, 피치 벤드(pitch bend) 효과들, 팬 레프트 또는 라이트와 같은 제어 메시지들, 서스테인 페달 효과들, 주 볼륨 제어, 타이밍 파라미터들과 같은 시스템 메시지들, 조명 효과 큐들 및/또는 다른 음향 효과들과 관련하여 시작 또는 정지하기 위해 특정 MIDI 보이스를 명령할 수 있다. "보이스" 또는 "MIDI 보이스"은 임의의 특성 음향일 수 있다.
MIDI 명령들의 타이밍에 기반하여, 제 1 프로세서(610)는 제 2 프로세서(630)에 의해 프로세싱하기 위한 MIDI 명령들을 스케줄링한다. 제 1 프로세서(610)는 제 2 프로세서(630)가 MIDI 명령들을 프로세싱할 수 있도록 제 2 프로세서(630)에 의해 액세스하기 위해 메모리 유닛(615)에 MIDI 명령들의 스케줄링을 제공할 수 있다. 대안적으로, 제 1 프로세서(610)는 시간 동기화 방식으로 제 2 프로세서(630)에 직접 MIDI 명령들을 디스팻칭함으로써 스케줄링을 실행할 수 있다. 일 예시적인 모델에서, 제 1 프로세서(610)는 메모리 유닛(650)에서 합성된 펄스 코드 변조(PCM) 오디오 샘플들을 프로세싱 및 저장한다. 디지털-투-아날로그 변환기(DAC)(625)는 650으로부터 PCM 샘플들을 취하고 스피커(640)에 샘플들을 재생한다.
제 2 프로세서(630)는 제 1 프로세서(610)에 의해 생성된 스케줄링에 따라 MIDI 명령들을 프로세싱한다. 하지만, 제 2 프로세서(630)는 또한 MIDI 명령들을 실행하기 전에 프로세싱을 요구할 수 있는 다른 더 높은 순위 태스크들을 가질 수 있고, 그러므로, 오디오 태스크의 프로세싱은 MaxCycles 또는 레퍼런스 간격보다 더 길 수 있다. 이러한 타입들의 중단들은 또한 미래의 오디오 태스크가 MaxCycles 또는 레퍼런스 간격을 초과하도록 할 수 있다. 제 1 프로세서(610)는 미래의 오디오 태스크가 MaxCycles 또는 레퍼런스 간격보다 더 길지 않도록 다음 또는 미래의 오디오 태스크를 스케줄링하는 방법을 사용할 수 있다. 예시로서, 이는 프로세싱되는 보이스들의 수를 감소시킴으로써 달성될 수 있다. 감소되는 보이스들의 수는 이전 오디오 태스크를 프로세싱할 때 초과되는 사이클들의 수에 비례한다. 이는 식 12에서 추가적으로 논의된다.
도 7은 오디오 태스크(710)의 예시적인 프로세싱 및 태스크 N(700) 또는 태스크 N+1(705)과 같은 더 높은 우선순위 태스크들이 현재 실행하는 오디오 태스크를 중단하는 경우 오디오 프로세싱의 중단을 도시한다. 오디오 태스크(710)는 다음 프레임에서 오디오 태스크들의 프로세싱의 스케줄링에 도움을 주기 위해 아래에 논의된 계산들에서 태스크 로드(식 4)를 이용할 수 있다.
훌륭한 음향 품질을 위해 더 높은 수의 MIDI 보이스들을 합성하기 위해, 단일 오디오 태스크의 프로세싱을 하나의 레퍼런스 간격(420) 내에 완료하는 것이 바람직하다. 오디오 프로세싱이 다른 더 높은 우선순위 태스크들의 프로세싱을 위해 중단되는 기간들 동안, 오디오 태스크의 프로세싱은 MaxCycles 또는 레퍼런스 간격에서 완료되지 않을 수 있지만, 이후의 레퍼런스 간격에서 계속 프로세싱될 수 있다. 이 부가적인 시간을 오프셋하기 위해, 보이스들의 수는 다음 오디오 태스크가 레퍼런스 간격 내에서 프로세싱을 완료하도록 프로세싱될 다음 오디오 태스크로부터 감소될 수 있다. 당업자는 이 실시예가 이 예시적인 실시예의 사상 및 범위로부터 벗어남이 없이 임의의 미래 오디오 태스크로부터 보이스들의 수를 감소시키기 위해 사용될 수 있음을 인지할 것이다.
미래의 오디오 태스크에 대한 파라미터들의 스케줄링이 구축될 수 있다. 즉, 현재 오디오 태스크의 프로세싱이 레퍼런스 간격 또는 MaxCycles을 초과하면, 즉, 다음 레퍼런스 간격으로 "캐리-오버" 프로세싱이 존재하면, 다음 오디오 태스크 또는 미래의 오디오 태스크에서 프로세싱되는 보이스들의 수가 감소될 수 있다. 여기서, 용어 "캐리-오버"는 오디오 태스크의 사이클들의 수가 MaxCycles을 초과함을 나타내기 위해 사용된다. 하지만, 본 명세서에서, "캐리-오버"는 또한 오디오 태스크가 MaxCycles에 도달하기 전에 프로세싱을 완료할 때 이용가능한 사이클들의 수를 나타낼 수 있다. 다른 시간들에서, "캐리-오버" 값은 예를 들어, 이 방법을 이용하는 디바이스의 파워-온 시에 0일 수 있다. 파워-온은 전형적으로 정상 상태에 도달하기 위해 오디오 애플리케이션에 대하여 임의의 시간을 취할 수 있는 것을 의미한다. "캐리-오버" 값은 또한 오디오 태스크가 MaxCycles 기간과 동일한 수의 사이클들 내에서 프로세싱될 때 0일 수 있다.
캐리-오버 사이클들을 결정하기 위해, MaxCycles은 MaxCycles값이 식 5를 사용하여 계산될 수 있는 경우, 식 6에 도시된 바와 같이 프로세싱하기 위해 취해지는 오디오 태스크의 사이클들의 실제 수로부터 감산될 수 있다. ActualCycles은 중단 시간을 포함하는 오디오 태스크의 프로세싱을 완료하기 위해 걸리는 사이클들의 총 수이다. 당업자는 시간의 단위들이 시간의 단위를 카운터 또는 클록 주파수에 곱함으로써 사이클들로 변환될 수 있고, 사이클들의 단위들은 사이클들의 수에 카운터 또는 클록 주파수의 역을 곱함으로써 시간의 단위들로 변환될 수 있음을 인지할 것이다. 그러므로, 중단 시간은 프로세서가 다른 태스크들 또는 동일한 수의 사이클들을 프로세싱하는 동안 오디오 태스크의 프로세싱이 중단되는 시간이다. 당업자는 또한 CarryOverCycles이 이 예시적인 실시예의 사상으로부터 벗어남이 없이 다른 방법들에 의해 결정될 수 있음을 인지할 것이다. 예를 들어, CarryOverCycles은 또한 식 6의 변형에 의해 즉, MaxCycles로부터 ActualCycles을 감산함으로써 계산될 수 있다. 간략화를 위해, 식 6이 이 문서에서 사용될 수 있다.
CarryOverCycles= ActualCycles-MaxCycles (식 6)
예시로서, ActualCycles은 주어진 오디오 태스크에 대한 프로세싱 시작 및 종료점들을 측정하기 위해 프리 러닝 카운터(225)를 사용함으로써 그리고 이들의 차를 취함으로써 결정될 수 있다. 이 개념은 식 7에 도시된다. 당업자는 이 예시적인 실시예의 사상으로부터 벗어남이 없이 ActualCycles을 측정하기 위한 다른 방법들을 인식할 것이다.
ActualCycles=Tprocessing _ end - Tprocessing _ start (식 7)
MaxCycles = 192,000 사이클들 및 오디오 태스크에 대한 Actual Cycles이 249,000 사이클들 또는 13 미리세컨드(ms)인 경우 샘플 계산은:
CarryOverCycles=249,600 사이클들 - 192,000 사이클들 = 57,600 사이클들
식 6에서, CarryOverCycles 값이 0 또는 0 미만인 경우, 오디오 태스크의 프로세싱은 MaxCycles을 초과하지 않고, 그러므로, 다음 오디오 태스크 또는 미래 오디오 태스크는 프로세싱을 위해 보이스들을 감소시킴이 없이 프로세싱될 수 있거나 또는 프로세싱을 위해 보이스들을 감소시킬 수 있다. CarryOverCycles 값이 0 초과일 때, 오디오 태스크를 프로세싱하기 위해 이용되는 사이클들의 수는 레퍼런스 간격(420) 또는 대응하는 MaxCycles을 초과하고, 보이스들은 상기 오디오 태스크가 자신의 레퍼런스 간격 또는 MaxCycles 내에서 완료될 수 있도록 다음 또는 미래의 오디오 프로세싱으로부터 감소될 수 있다.
캐리-오버가 0 초과인 경우, 현재 태스크가 레퍼런스 간격(420) 또는 MaxCycles에 의해 정의된 기간보다 실행하기에 더 오래 걸리면, 다음 또는 미래의 오디오 태스크의 프로세싱 시 감소될 보이스들의 수는 현재 태스크로부터의 파라미터들을 사용하여 계산 또는 스케줄링될 수 있다. 다음 또는 미래의 오디오 태스크의 프로세싱을 위해 이용가능한 사이클들의 수를 결정하기 위해, 현재 오디오 태스크로부터의 특정 파라미터들은 다음 또는 미래의 오디오 태스크에 대한 MaxCycles의 값에 감산 또는 부가될 수 있다. 이러한 파라미터들은 프로세서가 오디오 태스크 외의 더 높은 우선순위 태스크들을 프로세싱하기 위해 소비하는 시간 또는 사이클들의 수 및 CarryOverCycles을 포함한다. 여기서, 프로세서가 오디오 태스크 외의 태스크들을 프로세싱하기 위해 소비하는 사이클들의 수는 "OtherTasks"로 지칭될 수 있다. 식 8은 다음 오디오 태스크 또는 미래 오디오 태스크의 프로세싱을 위해 이용가능한 사이클들의 수를 도시한다.
NumCyclesAvailable=Maxcycles - OtherTasks - CarryOverCycles (식 8)
OtherTasks을 계산하기 위한 예시적인 도시는 ActualCycles로부터 식 7에 주어진 CarryOverCycles 및 식 3에 주어진 누산된 태스크 실행 사이클들을 감산하는 것이다. 당업자는 이 예시적인 실시예의 사상으로부터 벗어남이 없이 OtherTasks을 결정하기 위해 다른 방법들을 인지할 것이다.
OtherTasks = ActualCycles- CarryOverCycles - 누산된 태스크 실행 사이클들 (식 9)
당업자는 식 8 및 식 9가 식 10으로 간략화될 수 있음을 이해할 것이다.
NumCyclesAvailable = MaxCycles - ActualCycles + 누산된 태스크 실행 사이클들 (식 10)
본 명세서에서 "MaxVoiceCount"로 지칭되는 다음 또는 미래의 오디오 태스크에 대하여 지원될 수 있는 보이스들의 수는 프로세서가 이전 오디오 태스크를 합성 또는 디코딩하는 데 소비하는 사이클들의 수에 의해 나누어지는 보이스 카운트에 의해 곱해지는 다음 또는 미래의 오디오 태스크에 대하여 이용가능한 사이클들의 수와 동일하다. 이 개념은 식 11에 도시된다. 파라미터 "보이스 카운트"는 오디오 태스크 내에 포함될 수 있다. 파라미터 "tsynth"는 주어진 오디오 태스크에 대하여 보이스 합성을 시작하는 시간으로부터 보이스 합성이 완료되는 시간까지 임의의 카운터에 의해 측정될 수 있다.
MaxVoiceCount = NumCyclesAvailable x (보이스 카운트/tsynth) (식 11)
이전에 논의된 바와 같이, 프로세싱 로드로부터 감소되는 보이스들의 수가 계산될 수 있다. 감소되는 보이스들의 수는 이전 오디오 태스크의 프로세싱 시 초과되는 사이클들의 수에 비례한다. 예를 들어, 감소되는 보이스들의 수를 계산하기 위해, CarryOverCycles은 tsynth에 의해 나누어지는 보이스 카운트에 의해 곱해진다. 당업자는 이전에 언급된 계산이 보이스들의 전체 수가 감소되도록 모아질 수 있다.
NumVoicesReduced = CarryOverCycles x (보이스 카운트/tsynth) 식 12
도 9는 오디오 태스크를 스케줄링하는 방법을 도시하는 흐름도이다. 레퍼런스 간격이 리트리브된다(910). 이전에 도시된 바와 같이, 레퍼런스 간격은 소프트웨어 또는 하드웨어를 통해 저장되고 구성될 수 있다. 또한, 레퍼런스 간격은 태스크 실행 사이클들을 정확히 누산하기 위해 분해능을 제공하는 값으로 구성될 수 있다. 오디오 태스크를 프로세싱하기 위한 사이클들의 실제 수와 레퍼런스 간격의 사이클들의 수 사이의 차가 계산된다(920). 오디오 태스크를 프로세싱하기 위한 사이클들의 실제 수 및 레퍼런스 간격의 사이클들의 수 사이의 차를 계산하는 일 예시는 CarryOverCycles이 계산되는 경우 식 6에 보여진다. 계산된 차(예를 들어, CarryOverCycles)는 미래의 오디오 태스크에 대한 스케줄링 파라미터들을 결정하기 위해 이용될 수 있다(930). 예를 들어, 미래의 오디오 태스크에서 프로세싱될 보이스들의 수는 현재 프레임에서 오디오 태스크를 프로세싱하기 위한 실제 사이클들의 수가 레퍼런스 간격에서 사이클들의 수보다 크면 감소될 수 있다.
당업자는 오디오 태스크를 스케줄링하기 위한 방법이 셋 톱 박스, 음악 재생기, 비디오 재생기, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, PDA, 고정 위치 데이터 유닛 및 컴퓨터로 이루어진 그룹으로부터 선택되는, 오디오 태스크를 스케줄링하는 방법이 통합되는 전자 디바이스에 적용될 수 있음을 이해할 것이다.
본 명세서에 개시된 방법들, 방식들 및 기술들의 구현들은 또한 일련의 논리 구성요소들(예를 들어, 프로세서, 마이크로프로세서, 마이크로컨트롤러 또는 다른 유한 상태 머신)을 포함하는 머신에 의해 판독가능 및/또는 실행가능한 하나 이상의 세트들의 명령들로서 실재적으로 구현될 수 있다(예를 들어, 본 명세서에 리스팅된 하나 이상의 컴퓨터-판독가능 매체). 하나 이상의 예시적인 실시예들에서, 본 명세서에서 설명되는 동작들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 이러한 동작들은 하나 이상의 명령들 또는 코드로서 컴퓨터-판독가능한 매체에 저장되고 컴퓨터-판독가능한 매체를 통해 전송될 수 있다. 용어 "컴퓨터-판독가능한 매체"는 하나의 위치로부터 다른 위치로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 컴퓨터 저장 매체 및 통신 매체 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한이 아닌 예시로서, 이러한 컴퓨터-판독가능한 매체는 반도체 메모리(제한 없이 동적 또는 정적 RAM, ROM, EEPROM 및/또는 플래시 RAM을 포함할 수 있음) 또는 강유전체, 자기저항, 오보닉 장치, 중합체 또는 위상-변경 메모리; CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기적 스토리지 디바이스들, 또는 컴퓨터에 의해 액세스될 수 있고 명령들 또는 데이터 구조들의 형태로 요구되는 프로그램 코드를 저장하기 위해 사용될 수 있는 임의의 다른 매체와 같은 일련의 스토리지 구성요소들을 포함할 수 있다. 본 명세서에 사용되는, disk 및 disc은 컴팩트 disc(CD), 레이저 disc , 광 disc, DVD, 플로피 disk, 및 블루-레이 disc를 포함하며, 여기서 disk는 데이터를 자기적으로 재생하지만, disc은 레이저를 통해 광학적으로 데이터를 재생한다. 상기 조합들 역시 컴퓨터 판독가능한 매체의 범위 내에 포함될 수 있다.

Claims (33)

  1. 프로세서에 대해 오디오 보이스들을 스케줄링하는 방법으로서, 상기 오디오 보이스들은 임의의 사운드에 해당하며, 상기 방법은,
    상기 프로세서 상에서 제 1 오디오 태스크 실행 전에 프리 러닝 카운터(free running counter)로부터 제 1 카운트 값을 판독하는 단계;
    상기 제 1 오디오 태스크가 상기 프로세서 상의 실행을 완료할 때, 상기 프리 러닝 카운터로부터 제 2 카운트 값을 판독하는 단계;
    상기 제 1 오디오 태스크를 완료하기 위한 프로세서 사이클들의 전체 수를 나타내는 제 1 값을 제공하기 위해, 상기 제 1 카운트 값과 상기 제 2 카운트 값 사이의 차를 취하는 단계 ― 상기 프로세서 사이클들의 전체 수는 상기 제 1 오디오 태스크 동안 상기 프로세서의 중단(interrupt)들을 포함함 ―;
    캐리-오버(carry-over) 값을 제공하기 위해, 오디오 태스크를 프로세싱할 상기 프로세서에 대한 요구되는 사이클들의 최대 수를 나타내는 제 2 값을 상기 제 1 값에서 감산하는 단계; 및
    제 3 값에 상기 캐리-오버 값을 곱셈함으로써, 제 2 오디오 태스크에 대한 상기 프로세서에 의한 프로세싱을 위해 스케줄링되는 보이스들의 수를 감소시키는 단계를 포함하고, 상기 제 3 값은 보이스 카운트를 보이스 합성 시간을 나타내는 제 4 값으로 나누는 것에 기반하고, 상기 제 2 오디오 태스크는 상기 제 1 오디오 태스크에 시간적으로 후속하는,
    프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  2. 제 1 항에 있어서,
    상기 보이스들의 수를 감소시키는 단계는, 상기 제 3 값과 상기 캐리-오버 값의 곱셈을 정수로 반올림하는 단계를 포함하는,
    프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  3. 제 1 항에 있어서,
    스케줄링된 오디오 보이스들은 셋 톱 박스, 음악 재생기, 비디오 재생기, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, PDA(personal digital assistant), 및 컴퓨터로 구성되는 그룹으로부터 선택되는 전자 디바이스에 적용되는, 프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  4. 제 1 항에 있어서,
    상기 제 1 값, 제 2 값, 제 4 값, 및 캐리-오버 값은 프로세서 사이클 단위 값인,
    프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  5. 제 1 항에 있어서,
    상기 제 1 오디오 태스크의 태스크 로드에 기반하여 그리고 상기 제 1 값에 기반하여 상기 제 2 오디오 태스크를 프로세싱하기 위해 이용가능한 프로세서 사이클들의 수를 계산하는 단계
    를 더 포함하는, 프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  6. 삭제
  7. 삭제
  8. 제 1 항에 있어서,
    상기 오디오 태스크를 프로세싱할 프로세서에 대한 요구되는 사이클들의 최대 수는 하드웨어 또는 소프트웨어를 통해 구성가능한,
    프로세서에 대해 오디오 보이스들을 스케줄링하는 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 오디오 태스크를 스케줄링하기 위한 장치로서,
    오디오 태스크를 프로세싱할 실제 시간과 레퍼런스 간격내의 사이클들의 수 사이의 차를 계산하고, 상기 오디오 태스크의 태스크 로드에 기반하여 그리고 상기 오디오 태스크를 프로세싱할 사이클들의 실제 수에 기반하여 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수를 계산하고, 그리고 계산된 차에 기반하여 미래의 오디오 태스크를 스케줄링하기 위한 프로세서;
    스케줄링 파라미터들을 저장하기 위한 메모리; 및
    상기 오디오 태스크의 실제 시간을 계산하기 위해 상기 프로세서에 적어도 두 개의 카운트 값들을 제공하기 위한 프리 러닝 카운터
    를 포함하는, 오디오 태스크를 스케줄링하기 위한 장치.
  13. 제 12 항에 있어서,
    상기 프로세서는 실시간 컴퓨팅 시스템을 작동시키도록 구성되는, 오디오 태스크를 스케줄링하기 위한 장치.
  14. 제 12 항에 있어서,
    상기 오디오 태스크를 프로세싱할 실제 시간은 하나 이상의 태스크 실행 시간들 및 하나 이상의 다른 태스크들을 프로세싱하는 데 소비된 시간에 기반하는, 오디오 태스크를 스케줄링하기 위한 장치.
  15. 제 12 항에 있어서,
    스케줄링된 오디오 태스크 사이클들은 상기 오디오 태스크에 비해 미래의 오디오 태스크에 대하여 더 적은, 오디오 태스크를 스케줄링하기 위한 장치.
  16. 제 12 항에 있어서,
    스케줄링된 오디오 태스크 사이클들은 상기 오디오 태스크에 비해 상기 미래의 오디오 태스크에 대하여 더 많거나 같은 수의 사이클들인, 오디오 태스크를 스케줄링하기 위한 장치.
  17. 제 12 항에 있어서,
    음악 재생기, 비디오 재생기, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, PDA(personal digital assistant), 및 컴퓨터로 구성되는 그룹으로부터 선택되는 디바이스에 통합되는, 오디오 태스크를 스케줄링하기 위한 장치.
  18. 태스크를 스케줄링하기 위한 장치로서,
    태스크의 태스크 로드를 결정하기 위한 수단; 및
    상기 태스크의 결정된 태스크 로드에 기반하여 그리고 상기 태스크를 프로세싱할 사이클들의 실제 수에 기반하여 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수를 계산하기 위한 수단을 포함하고,
    상기 태스크의 태스크 로드를 결정하기 위한 수단은,
    태스크 실행 전에, 프리 러닝 카운터로부터 제 1 카운트 값을 판독하기 위한 수단;
    상기 태스크가 작동을 멈춘 후에 상기 프리 러닝 카운터로부터 제 2 카운트 값을 판독하기 위한 수단;
    상기 제 1 카운트 값과 상기 제 2 카운트 값 사이의 차를 취하기 위한 수단;
    레퍼런스 간격에 걸쳐 상기 제 1 카운트 값과 상기 제 2 카운트 값 사이의 차를 누산하기 위해 누산기를 사용하기 위한 수단; 및
    상기 레퍼런스 간격으로 상기 누산된 차를 나누기 위한 수단
    을 포함하는, 태스크를 스케줄링하기 위한 장치.
  19. 제 18 항에 있어서,
    상기 레퍼런스 간격은 상기 누산기의 최대 카운트 값이 곱해진 상기 프리 러닝 카운터의 기간 이하인 값으로 구성되는, 태스크를 스케줄링하기 위한 장치.
  20. 오디오 태스크를 스케줄링하기 위한 장치로서,
    현재 프레임에서 오디오 태스크를 프로세싱할 레퍼런스 간격을 리트리브하기 위한 수단;
    상기 오디오 태스크를 프로세싱할 사이클들의 실제 수와 상기 레퍼런스 간격에서 사이클들의 수 사이의 차를 계산하기 위한 수단;
    상기 오디오 태스크의 태스크 로드에 기반하여 그리고 상기 오디오 태스크를 프로세싱할 사이클들의 실제 수에 기반하여 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수를 계산하기 위한 수단; 및
    상기 미래의 오디오 태스크에 대한 파라미터들을 스케줄링하기 위한 수단
    을 포함하는, 오디오 태스크를 스케줄링하기 위한 장치.
  21. 삭제
  22. 삭제
  23. 제 20 항에 있어서,
    상기 스케줄링한 파라미터들은 오디오 프레임에서 합성 보이스 파라미터들인, 오디오 태스크를 스케줄링하기 위한 장치.
  24. 제 20 항에 있어서,
    상기 레퍼런스 간격은 하드웨어 또는 소프트웨어를 통해 구성가능한, 오디오 태스크를 스케줄링하기 위한 장치.
  25. 제 20 항에 있어서,
    상기 스케줄링하기 위한 수단은 상기 오디오 태스크에서 프로세싱되는 것보다 상기 미래의 오디오 태스크에 대하여 더 적은 사이클들을 프로세싱하기 위한 수단을 포함하는, 오디오 태스크를 스케줄링하기 위한 장치.
  26. 제 20 항에 있어서,
    상기 스케줄링하기 위한 수단은 상기 오디오 태스크에 비해 상기 미래의 오디오 태스크에 대하여 더 많은 수의 오디오 태스크 사이클들을 프로세싱하기 위한 수단을 포함하는, 오디오 태스크를 스케줄링하기 위한 장치.
  27. 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체로서,
    오디오 태스크를 프로세싱할 레퍼런스 간격을 리트리브하기 위한 코드;
    상기 오디오 태스크를 프로세싱할 사이클들의 실제 수와 상기 레퍼런스 간격내의 사이클들의 수 사이의 차를 계산하기 위한 코드;
    상기 오디오 태스크의 태스크 로드에 기반하여 그리고 상기 오디오 태스크를 프로세싱할 사이클들의 실제 수에 기반하여 미래의 오디오 태스크를 프로세싱하기 위해 이용가능한 사이클들의 수를 계산하기 위한 코드; 및
    상기 미래의 오디오 태스크에 대한 파라미터들을 스케줄링하기 위한 코드
    를 포함하는, 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  28. 삭제
  29. 삭제
  30. 제 27 항에 있어서,
    상기 스케줄링한 파라미터들은 오디오 프레임내의 합성 보이스 파라미터들인, 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  31. 제 27 항에 있어서,
    상기 레퍼런스 간격을 누산기의 최대 카운트 값이 곱해진 프리 러닝 카운터의 기간 이하인 값으로 구성하기 위한 코드를 더 포함하는, 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  32. 제 27 항에 있어서,
    상기 스케줄링하기 위한 코드는 상기 오디오 태스크에서 프로세싱되는 것보다 상기 미래의 오디오 태스크에 대하여 더 적은 오디오 태스크 사이클들을 프로세싱하기 위한 코드를 포함하는, 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체.
  33. 제 27 항에 잇어서,
    상기 스케줄링하기 위한 코드는 상기 오디오 태스크에 비해 상기 미래의 오디오 태스크에 대하여 더 많거나 같은 수의 오디오 태스크 사이클들을 프로세싱하기 위한 코드를 포함하는, 하나 이상의 프로세서들에 의해 실행가능한 명령들의 세트를 포함하는 컴퓨터-판독가능한 매체.
KR1020117000565A 2008-06-11 2009-06-11 태스크 로드를 측정하기 위한 방법 및 시스템 KR101264195B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US6053208P 2008-06-11 2008-06-11
US61/060,532 2008-06-11
PCT/US2009/047005 WO2009152305A1 (en) 2008-06-11 2009-06-11 Method and system for measuring task load

Publications (2)

Publication Number Publication Date
KR20110030550A KR20110030550A (ko) 2011-03-23
KR101264195B1 true KR101264195B1 (ko) 2013-05-14

Family

ID=41415495

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117000565A KR101264195B1 (ko) 2008-06-11 2009-06-11 태스크 로드를 측정하기 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US8594816B2 (ko)
EP (1) EP2313827B1 (ko)
JP (1) JP5275457B2 (ko)
KR (1) KR101264195B1 (ko)
CN (1) CN102057356A (ko)
WO (1) WO2009152305A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8453146B2 (en) * 2009-12-23 2013-05-28 Intel Corporation Apportioning a counted value to a task executed on a multi-core processor
JP4905597B1 (ja) * 2011-03-15 2012-03-28 オムロン株式会社 コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体
JP5799797B2 (ja) * 2011-12-21 2015-10-28 富士通株式会社 算出方法、算出プログラム及びコンピュータ
KR102237373B1 (ko) * 2014-07-02 2021-04-07 삼성전자 주식회사 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
US9785473B2 (en) 2014-07-14 2017-10-10 Nxp Usa, Inc. Configurable per-task state counters for processing cores in multi-tasking processing systems
KR102356702B1 (ko) * 2015-11-24 2022-01-27 삼성전자주식회사 호스트 cpu 지원형 오디오 프로세싱 방법 및 이를 수행하는 컴퓨팅 시스템
CN106095558B (zh) * 2016-06-16 2019-05-10 Oppo广东移动通信有限公司 一种音效处理的方法及终端

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937780A (en) 1986-05-30 1990-06-26 Bull Nh Information Systems, Inc. Single instruction updating of processing time field using software invisible working registers
JP3169597B2 (ja) * 1990-05-16 2001-05-28 エヌイーシーソフト株式会社 マルチタスク実行時間アカウント方法とその機構
JPH05181688A (ja) * 1991-05-24 1993-07-23 Internatl Business Mach Corp <Ibm> タスクの進行を予測する方法、プログラム製品及びワークステーシヨン
JPH0512040A (ja) 1991-07-04 1993-01-22 Mitsubishi Electric Corp タスクの実行制御方式
JP2671690B2 (ja) 1992-01-08 1997-10-29 ヤマハ株式会社 電子楽器
US5628013A (en) 1992-09-30 1997-05-06 Apple Computer, Inc. Apparatus and method for allocating processing time in a frame-based computer system
JP2969138B2 (ja) 1992-12-21 1999-11-02 ヤマハ株式会社 ピッチ検出装置
JP3285986B2 (ja) 1993-01-12 2002-05-27 ローランド株式会社 電子楽器のアサイン装置
US5596159A (en) 1995-11-22 1997-01-21 Invision Interactive, Inc. Software sound synthesis system
SG67993A1 (en) 1996-08-30 1999-10-19 Yamaha Corp Sound source system based on computer software and method of generating acoustic waveform data
DE69841526D1 (de) * 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US6301603B1 (en) * 1998-02-17 2001-10-09 Euphonics Incorporated Scalable audio processing on a heterogeneous processor array
JP3873160B2 (ja) 1998-11-20 2007-01-24 カシオ計算機株式会社 楽音発生装置及び楽音発生処理のプログラムを記録した記録 媒体
WO2002015564A1 (en) 2000-08-16 2002-02-21 Koninklijke Philips Electronics N.V. Method of playing multimedia applications
US6782350B1 (en) * 2001-04-27 2004-08-24 Blazent, Inc. Method and apparatus for managing resources
EP1459549A2 (en) * 2001-12-12 2004-09-22 Koninklijke Philips Electronics N.V. Processing a media signal on a media system
DE10238575A1 (de) * 2002-08-22 2004-03-04 Siemens Ag Verfahren zur Messung der Nettolaufzeit eines Datenverarbeitungsprogramms
JP4146375B2 (ja) 2004-03-19 2008-09-10 日本電信電話株式会社 処理制御装置、処理制御方法及び処理制御プログラム
US20060155543A1 (en) * 2005-01-13 2006-07-13 Korg, Inc. Dynamic voice allocation in a vector processor based audio processor
CN101116135B (zh) * 2005-02-10 2012-11-14 皇家飞利浦电子股份有限公司 声音合成
US7877752B2 (en) * 2005-12-14 2011-01-25 Broadcom Corp. Method and system for efficient audio scheduling for dual-decode digital signal processor (DSP)
GB2440216A (en) * 2006-05-19 2008-01-23 Ibm Computer program for calculating the (accumulated) processing time for tasks
CN100504808C (zh) 2006-09-11 2009-06-24 中兴通讯股份有限公司 一种测量多任务操作系统任务cpu占用率的方法

Also Published As

Publication number Publication date
JP2011524574A (ja) 2011-09-01
EP2313827A1 (en) 2011-04-27
US20090312856A1 (en) 2009-12-17
KR20110030550A (ko) 2011-03-23
EP2313827B1 (en) 2019-07-24
WO2009152305A1 (en) 2009-12-17
JP5275457B2 (ja) 2013-08-28
CN102057356A (zh) 2011-05-11
US8594816B2 (en) 2013-11-26

Similar Documents

Publication Publication Date Title
KR101264195B1 (ko) 태스크 로드를 측정하기 위한 방법 및 시스템
US8962965B2 (en) Musical sound generation device, storage medium, and musical sound generation method
US20130053993A1 (en) Recording and playback device, storage medium, and recording and playback method
KR101166735B1 (ko) 악기 디지털 인터페이스 하드웨어 명령
JP2002351466A5 (ko)
US9000284B2 (en) Musical sound generation device, musical sound generation method, and storage medium
CN105702240A (zh) 智能终端调整歌曲伴奏音乐的方法和装置
KR101120968B1 (ko) 악기 디지털 인터페이스 하드웨어 명령 세트
JP4948531B2 (ja) コンテンツ再生装置
KR20040095725A (ko) 데이터 프로세서, 데이터 처리 방법, 데이터 프로세서용프로그램, 및 프로그램 기록매체
KR20050040800A (ko) 오디오 신호 프로세서
JP2005316716A (ja) データ処理プログラムおよびデータ処理装置
JP2011181129A (ja) 半導体集積回路およびそれを使用したディスクドライブ記録再生装置
JP4063286B2 (ja) 音源装置
JP3693045B2 (ja) 楽音発生装置
JP2956550B2 (ja) 楽音発生装置および楽音発生方法
JP5904601B2 (ja) 記録装置、記録方法、及び記録制御用のコンピュータプログラム
JP3693046B2 (ja) 楽音発生装置
JP6105779B2 (ja) 記録装置、記録方法、及び記録制御用のコンピュータプログラム
KR100899530B1 (ko) 재생 시간 계측 회로 및 디지털 데이터 재생 장치
JP2006098859A (ja) 楽音発生装置および楽音発生処理のプログラム
JP2006139158A (ja) 音響信号の合成装置および合成再生装置
JP2004280973A (ja) 圧縮音楽データ処理装置および圧縮音楽データ再生装置

Legal Events

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

Payment date: 20160330

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee