KR20050084107A - 하드 실시간 시스템에서의 소프트웨어 구성요소의 풀스케줄링 - Google Patents

하드 실시간 시스템에서의 소프트웨어 구성요소의 풀스케줄링 Download PDF

Info

Publication number
KR20050084107A
KR20050084107A KR1020057009968A KR20057009968A KR20050084107A KR 20050084107 A KR20050084107 A KR 20050084107A KR 1020057009968 A KR1020057009968 A KR 1020057009968A KR 20057009968 A KR20057009968 A KR 20057009968A KR 20050084107 A KR20050084107 A KR 20050084107A
Authority
KR
South Korea
Prior art keywords
time
component
components
output
earliest
Prior art date
Application number
KR1020057009968A
Other languages
English (en)
Inventor
알베르티나 드 분제
시몬 티. 디케르
Original Assignee
코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20050084107A publication Critical patent/KR20050084107A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Multi Processors (AREA)
  • General Factory Administration (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

본 발명은, 구성요소가 데이터 요소의 시간 종속 스트림을 처리하기 위해 하드 실시간 시스템에서 스케줄가능할 때를 결정하는 방법에 관한 것이다. 구성요소의 수는 상기 구성요소를 처리하기 위해 이용가능한 프로세서의 수보다 더 크고, 각 구성요소는 적어도 하나의 입력 및 적어도 하나의 출력을 갖는다. 구성요소는, 구성요소가 시스템의 출력에 기여할 수 있는 가장 이른 시간을 결정함으로써, 그리고 가장 이른 시간에 출력에 기여할 수 있는 구성요소를 스케줄링함으로써 스케줄링된다. 본 발명은 또한 상기 스케줄링을 수행하는 수단을 이용하여 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템에 관한 것이다.

Description

하드 실시간 시스템에서의 소프트웨어 구성요소의 풀 스케줄링{PULL SCHEDULING OF SOFTWARE COMPONENTS IN HARD REAL-TIME SYSTEMS}
본 발명은 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템(hard real time system)에서 구성요소(component)를 스케줄링(scheduling)하는 방법에 관한 것이다. 본 발명은 추가로 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템에 관한 것이다.
구성요소의 수가 이용가능한 프로세서의 수보다 큰 실시간 소프트웨어 시스템에서, 구성요소들은 처리 시간에 대해 경합하고, 구성요소의 스케줄링은 신뢰가능하고 빠른 것이 요구된다. 본 정황에서, 출력이 발생되는 시간이 중요한 임의의 소프트웨어 시스템은 실시간 소프트웨어 시스템이라 언급된다. 실시간 소프트웨어 시스템의 입력 시간으로부터 그 출력 시간까지의 랙(lag), 즉 지연은 허용가능한 적시(timeliness)에 충분히 작아야 한다. 하드 실시간 소프트웨어 시스템은 제한된 시간 간격 내에 외부적으로 생성된 입력에 응답해야 한다. 본 정황에서의 소프트웨어 시스템은 일반적으로 다수의 상호 연결된 구성요소로부터 구성되고, 구성요소간의 유일한 상호 동작은 구성요소의 인터페이스를 통해 이루어지고, 구성요소는 상태 정보를 공유하지 않는다.
이러한 종류의 시스템에서, 스케줄러는, 시스템 레벨 상의 실시간 제약이 충족되는 방식으로 처리 간격을 구성요소에 할당한다. 구성요소의 스케줄링은 시간에 걸쳐 연속적으로 반복되는 2개의 단계(phase)로 구성된다. 먼저, 스케줄가능한 구성요소 세트가 결정되고, 그 다음에 이러한 세트로부터 그리고 몇몇 우선 순위 구성(prioritization scheme)에 따라, 실제로 프로세서 상에서 실행될 구성요소의 서브셋이 선택된다(하나의 구성요소는 각 프로세서 상에서 실행된다).
다수의 우선 순위 구성이 알려져 있다.
- 라운드 로빈 구성(Round Robin Scheme)- 스냅샷(snapshot)은 스케줄가능한 구성요소 세트로 이루어진다. 이 세트는 임의적으로 순서가 정해지고, 구성요소는 하나씩 선택된다. 모든 스케줄가능한 구성요소가 처리된 후에, 스케줄가능한 구성요소 세트는 갱신된다.
- 고정된 우선 순위 구성(Fixed Priority Scheme)- 각 구성요소는 특정한 고정된 우선 순위를 가질 것이다. 스케줄가능한 구성요소 세트로부터, 가장 높은 우선 순위를 갖는 구성요소가 선택된다. 다음으로, 스케줄가능한 구성요소 세트는 갱신되고, 이러한 새로운 세트로부터 가장 높은 우선 순위를 갖는 구성요소가 선택되고, 나머지도 이와 같이 이루어진다.
- 융통성있는 우선 순위 구성(Flexible Priority Scheme)- 각 구성요소는 시간에 걸쳐 변화할 우선 순위를 취할 것이다. 스케줄가능한 구성요소 세트로부터, 그 때 가장 높은 우선 순위를 갖는 구성요소가 선택된다. 다음으로, 스케줄가능한 구성요소 세트는 갱신되고, 구성요소의 우선 순위는 다시 계산된다. 이러한 새로운 세트로부터, 가장 높은 우선 순위를 갖는 구성요소가 선택되고, 나머지도 이와 같이 이루어진다.
- 우선 순위-기반의 선취 스케줄링(Priority-based Pre-emptive Scheduling)- 스케줄링에 대한 이러한 접근법은 고정되거나 융통성있는 우선 순위와 조합될 수 있다. 더 높은 우선 순위를 갖는 구성요소가 낮은 우선 순위를 갖는 구성요소의 처리 동안 스케줄링가능하면, 낮은 우선 순위를 갖는 구성요소의 처리는 먼저 더 높은 우선 순위를 갖는 구성요소가 처리되도록 중단될 수 있다.
- 파이프라인 또는 푸쉬 스케줄링(Pipeline or Push Scheduling)- 구성요소의 유도된 그래프의 소스는 임의적으로 순서가 정해진다. 스케줄가능한 소스는 하나씩 처리되지만, 각 스텝 이후에, 스케줄가능한 세트는 갱신되고, 그 데이터는 그래프를 통해 가능한 한 멀리 푸쉬된다. 소스의 처리로 인해 어떠한 구성요소도 더 이상 스케줄링될 수 없으면, 다음 스케줄가능한 소스가 처리된다.
여기서 고려된 문제는 스케줄가능한 구성요소 세트로부터 스케줄가능한 구성요소를 최적으로 선택하게 하는 효과적인 우선 순위 결정(prioritization) 구성을 찾는 것이다. 최적화는 최소의 포트간(port-to-port) 지연을 의미한다.
US2002/0062435는, 다수의 쓰레드(thread)를 처리하기 위해 다수의 스트림을 갖는 멀티-스트리밍 프로세서와, 하나 이상의 스트림에 대한 우선 순위 코드의 우선 순위 리코드를 갖는 지령 스케줄러를 설명한다. 우선 순위 코드는 몇몇 실시예에서 리소스로의 상대적인 액세스 뿐 아니라 어떤 스트림이 시간적으로 임의의 지점에서 액세스하는지를 결정한다. 다른 실시예에서, 우선 순위는 극적으로 결정되고 진행 중에(on-the-fly) 변경되는데, 이것은 온-칩(on-chip) 처리 통계와 같은 다양한 기준에 의해, 하나 이상의 우선 순위 알고리즘을 실행함으로써, 스트림 로딩에 따라 오프-칩으로부터의 입력에 의해, 또는 이들의 조합에 의해 이루어질 수 있다.
US 6,195,701은 다중 데이터 스트림 및 실시간 작업의 동기화 및 스케줄링 방법을 설명한다. 스케줄 기준은 예를 들어 스트리밍 프로세스 상태에 관해 트리거 조건에 의해 결정된다. 이 때 그러한 상태는 다시 스트림의 시간 마크 및 시스템 시간에 관련된다. 이 특허는 구성요소의 스케줄링을 수행함으로써 하나의 프로세서를 이용하여 스트리밍 및 스트리밍의 제어를 수행하는 문제를 해결하지 않는다.
한편, 전술한 데이터 처리가 시스템에 대해 이용가능한 가장 높은 출력 속도에 따르지 않는다는 것이 발견된다. 종래 기술은 일반적으로 이용가능한 처리 리소스를 데이터 큐에서 다음의 데이터에 할당할 수 있다. 이것은, 처리 파이프라인에서 동일한 처리 우선 순위로 할당된 2개의 데이터 스트림이 처리 리소스를 기다리면, 라인에서 처음의 데이터 스트림은 첫 번째로 처리된다는 것을 의미한다. 이것은 몇몇 응용에서 불편할 수 있는데, 그 이유는 처리 트리 구조에서의 처리 동작이 출력이 생성되기 전에 상당한 양의 시간 동안 차단될 수 있기 때문이다. 이러한 불편함은 처리 트리의 깊이에 따라 단계적으로 현저히 확대될 수 있다.
도 1은 2개의 구성요소 사이의 연결기를 도시한 도면.
도 2는 구성요소의 스케줄 능력(scheduleability)을 한정하고 스케줄링된 구성요소를 실행하는 프로세스를 일반적인 단계로 도시한 도면.
도 3은 특정한 구성요소에 대해 현재 시간 박스를 할당할 수 있는지를 결정하는 방법을 도시한 흐름도.
도 4는 각 연결기에 대한 현재 시간 박스의 변위를 도시한 도면.
도 5는 구성요소의 스케줄 능력을 결정할 때 스케줄러가 시간-박스를 어떻게 사용하는지를 도시한 도면.
도 6은 스케줄가능한 구성요소의 스케줄링을 설명하는데 사용되는 하드 실시간 시스템을 도시한 도면.
도 7a 내지 도 7g는 도 6의 시스템에서 구성요소의 스케줄링을 단계별로 도시한 도면.
본 발명의 목적은, 시스템의 하드 실시간 동작을 달성하는데 적합한 스케줄링 방법을 제공하고, 전술한 문제를 해결하는 것이다.
이것은, 데이터 요소의 시간 종속 스트림을 처리하기 위해 하드 실시간 시스템에서 스케줄가능한 구성요소를 스케줄링하는 방법에 의해 달성되며, 여기서 스케줄가능한 구성요소의 수는 상기 구성요소를 처리하기 위한 이용가능한 프로세서의 수보다 더 크고, 상기 구성요소 각각은 적어도 하나의 입력 및 하나의 출력을 갖고, 상기 방법은,
- 각 스케줄가능한 구성요소에 대해 상기 구성요소가 상기 하드 실시간 시스템의 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계와;
- 전반적인 가장 이른 시간에서 상기 실시간 시스템의 출력에 기여할 수 있는 스케줄가능한 구성요소를 스케줄링하는 단계를 연속적으로 포함하는 것을 특징으로 한다.
이것은, 스케줄가능한 구성요소가 출력에 기여하는 경우, 출력의 생성에 기여하지 않는 스케줄가능한 구성요소에 어떠한 처리 시간도 소비되지 않는다는 것을 의미한다.
일실시예에서, 다수의 스케줄가능한 구성요소가 동일한 전반적인 가장 이른 시간에서 상기 실시간 시스템의 출력에 기여하는 경우, 상기 다수의 구성요소의 스케줄링은 푸쉬 스케줄링을 이용하여 수행된다. 푸쉬 스케줄링은 다른 스케줄링 방식보다 이 경우에 적은 정황 전환(context switch)을 초래한다. 정황 전환을 최소화하는 것은 또한 낮은 포트간 지연을 지원한다.
다른 실시예에서, 미리 한정된 시간 간격의 길이는 각 구성요소에 대해 규정되고, 구성요소는, 시간 스탬핑된(time stamped) 데이터 요소의 상기 시간 종속 스트림의 미리 한정된 시간 간격으로부터 시간 스탬핑된 데이터 요소가 상기 구성요소의 모든 입력에서 이용가능할 때 스케줄링된다. 시간박스-스케줄링(timebox-scheduling)과의 조합은 얼마간 출력에의 가장 이른 기여를 결정하는 것을 허용하고, 이것은 다시 계산하기 용이하다.
특정한 실시예에서, 상기 시간 스탬핑된 데이터 요소의 상기 미리 한정된 시간 간격의 이용가능성은, 상기 미리 한정된 시간 간격의 시작 시간 및 종료 시간을 한정하고, 데이터가 이전 구성요소에 의해 처리되는 시간이 상기 미리 한정된 시간 간격의 종료 시간보다 더 최근일 때를 체크함으로써 결정된다. 이것은, 구성요소가 스케줄가능한지를 체크하는 용이한 방식을 허용한다.
일실시예에서, 상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계는,
- 데이터 요소가 상기 구성요소로부터 상기 시스템의 출력에 도달하기 위해 처리되어야 하는 후속적인 구성요소의 가능한 경로를 식별하는 것과;
- 상기 경로에서 상기 후속적인 구성요소 각각에 대해 규정되는 상기 미리 한정된 시간 간격 각각의 길이를 상기 미리 한정된 시간 간격의 시작 시간으로부터 감산함으로써 각 가능한 경로에 대한 가장 이른 기여 시간을 결정하는 것과;
상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 가장 이른 결정된 기여 시간으로서 결정하는 것에 의해 수행된다.
이것은, 선호도를 임의의 출력, 또는 출력에 도달할 임의의 경로에 제공하지 않는 방식으로 '가장 이른 기여'를 정의하는 방식이다.
특정한 실시예에서, 상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계는,
- 상기 구성요소로부터 상기 시스템의 출력에 도달하기 위해 데이터 요소가 처리되어야 하는 후속적인 구성요소의 경로를 식별하는 것과;
- 상기 경로에서 상기 후속적인 구성요소 각각에 대해 규정되는 상기 미리 한정된 시간 간격 각각의 길이를 상기 미리 한정된 시간 간격의 시작 시간으로부터 감산함으로써 각 가능한 경로에 대한 가장 이른 기여 시간을 결정하는 것으로서, 여기서 상기 미리 한정된 시간 간격의 적어도 몇몇은 변위값이 감산되는, 가장 이른 기여 시간을 결정하는 것과;
- 상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 상기 가장 이른 결정된 기여 시간으로서 선택하는 것에 의해 수행된다.
이것은, 시스템에 데이터 흐름이 통과하도록 하는데 변위가 사용되는 경우에, 어떤 스케줄가능한 구성요소가 시간적으로 가장 이른 지점에서 출력에 기여할 수 있는지를 결정하는 용이한 방식을 허용한다.
본 발명은 또한 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템에 관한 것으로, 상기 시스템은 다수의 구성요소와, 구성요소를 처리하기 위한 다수의 프로세서를 포함하고, 상기 구성요소의 수는 프로세서의 수보다 크고, 상기 구성요소 각각은 적어도 하나의 입력 및 적어도 하나의 출력을 갖고, 상기 시스템은, 각 스케줄가능한 구성요소에 대해, 상기 구성요소가 상기 하드 실시간 시스템의 출력에 기여할 수 있는 가장 이른 시간을 결정하는 수단과, 전반적인 가장 이른 시간에서 상기 실시간 시스템의 출력에 기여할 수 있는 스케줄가능한 구성요소를 스케줄링하는 수단을 포함한다.
본 발명은 처리되고(MPEG2, MPEG4) 처리되지 않은 영역에서 비디오 및 오디오 처리 시스템과 같은 실시간 시스템에 사용될 수 있다. 추가로 실시간 시스템은 이미지 처리, 이미지 인식, 산업 자동화, 패턴 인식, 및 레이더 및 원격 통신일 수 있다.
다음 설명에서, 본 발명의 바람직한 실시예는 도면을 참조하여 설명될 것이다.
다음 설명에서, 스트림 처리를 위해 하드 실시간 시스템에서 소프트웨어 구성요소의 시간 박스 구동 스케줄링에 사용되는 본 발명이 설명될 것이다. 먼저, 시간 박스 구동 스케줄링이 설명될 것이며, 이것은 본 발명에 따라 스케줄가능한 구성요소가 어떻게 스케줄링될 수 있는지에 대한 설명 이후에 올 것이다.
시스템은, 이 작업을 수행하는 방식이 관리 및 제어에 의해 영향을 받을 수 있는 특정한 작업을 수행하는 장치이다. 바람직한 실시예에서, 특정한 작업은 스트리밍 데이터의 하드 실시간 처리에 제약될 것이다. 구성요소는, '원자(atomic)'적인 더 이상 세분하는 것이 유용하지 않는 것으로 고려되는 하위-작업(sub-task)을 수행하는 시스템의 독립적인 부분이다. 하위-작업을 추가로 나누거나 나누지 않는 것에 대한 동기 부여(motivation)는 재멀티플렉서(remultiplexer), 인코더 등의 응용 영역에서의 경험에 근거한다. 시간 스탬핑된 데이터 요소는 스트림에서 데이터의 표시(representation)이다. 스트리밍 데이터가 데이터 컨텐트 및 시간 정보를 갖는다고 가정된다. 이러한 시간 정보는 요소의 순서를 정하고, 데이터를 시간에 관련시키는데 사용된다. 시간-박스는 시간 스탬핑된 데이터 요소의 미리 한정된 시간 간격이다.
본 발명에 따른 시스템 내에서, 알고리즘적 시간이 사용된다. 결국, 출력 스트림에 대해 생성된 시간 정보는 다시 실시간에 관련된다. 시스템 시간으로부터 알고리즘적 시간으로의 변환은, 예를 들어 시스템 입력 및 시스템 출력에 위치한 종래의 시간 필터에 의해 수행될 수 있다.
도 1은 2가지 구성요소 사이의 연결기를 도시하는데, 연결기는 시스템의 독립적인 부분이다. 소스 구성요소(101)는 연결기(105)에 의해 싱크(sink) 구성요소(103)에 연결된다. 연결기(105)의 동적 상태는 데이터 요소를 포함하는 연결기(105) 상의 다수의 요소, 및 생성될 때까지의(produced-until) 시간(spC)(데이터가 소스 구성요소에 의해 생성되는 시간)으로 구성된다. 데이터 요소는 알고리즘적 시간(si)으로 마킹되고, 연결기의 소스 측에서 소스 구성요소의 스케줄링으로 인해 연결기에 첨부될 수 있다. 소스 구성요소의 스케줄링은 또한 특정 연결기에 대한 생성될 때까지의 시간을 갱신한다. 연결기의 싱크 측에서의 구성요소는 데이터 요소의 처리에 의해 스케줄링될 때 데이터 요소를 제거할 수 있다. 각 구성요소에 대해, 현재 시간 박스는 한정되고, 시간 박스는 시작 시간 및 종료 시간을 갖는다. 구성요소를 스케줄링하기 위해, 시간 박스는 구성요소의 입력에서의 모든 연결기에 대해 완전히 채워져야 하며, 이것은 시간 박스의 시작 시간과 종료 시간 사이의 시간 간격에서 시간 스탬프(si)를 갖는 모든 데이터 요소가 준비/존재(ready/present)한다는 것, 또는 달리 말하면, 생성될 때까지의 시간이 현재 시간 박스의 종료 시간보다 더 최근이라는 것을 의미한다.
도 2는 구성요소의 스케줄 능력을 한정하고 스케줄링된 구성요소를 실행하는 프로세스를 일반적인 단계로 설명한다. 이 프로세스는 구성요소의 각 연결기에 시간 박스를 할당하고 스케줄링된 구성요소를 실행하는 단계를 포함한다. 단계(201)에서, 현재 시간-박스는 구성요소에 할당된다. 이것은, 구성요소에 의해 처리될 다음 데이터 요소의 시간 간격의 시작 시간 및 종료 시간을 한정함으로써 이루어진다. 스케줄러는 예를 들어 현재 시간-박스의 할당을 수행할 수 있다. 특정한 연결기 상의 데이터 요소가 준비될 때, 이것은 데이터 요소가 소스 구성요소에 의해 처리되었다는 것을 의미하며, 현재 시간-박스 내의 데이터는 준비된다. 현재 시간-박스는 구성요소가 스케줄가능하기 위해 구성요소의 각 입력 연결기에 대해 완전히 채워져야 한다. 단계(203)에서, 구성요소는 스케줄링되고, 현재 시간-박스의 경계 내에 있는 모든 연결기에서의 데이터 요소는 구성요소에 의해 소비되고 처리된다. 처리된 데이터 요소는 이제 구성요소의 출력에서 준비되고, 각 출력 연결기에 대한 생성될 때까지의 시간(spC)은 갱신된다. 단계(201)에서, 새로운 현재 시간-박스는 구성요소에 할당된다. 이것은 구성요소에 대해 이전 시간-박스의 종료 시간과 같아지는 새로운 시작 시간을 한정함으로써 이루어진다.
도 3은 특정 구성요소에 대해 현재 시간 박스를 할당할 수 있는지를 어떻게 결정하는지를 도시한 흐름도이다. 결정은 구성요소의 유형에 따른 2가지 시나리오에 따라 이루어질 수 있다. 제 1 유형은 △s 구성요소이고, 제 2 유형은 #n 구성요소이다. 구성요소가 △s 구성요소이면(301), 현재 알고리즘적 시간(CS)이, 현재 시간 박스의 시작 시간(BS)과 시간 박스의 길이인 미리 한정된 시간 간격(△s)을 더한 값보다 큰지를 체크한다(303). 현재 시간 박스의 시작 시간은 이전의 시간 박스의 종료 시간과 동일하다. 만약 예(true)이면, 시간 박스는 한정될 수 있고 구성요소에 할당될 수 있고(305), 만약 아니오(false)이면, 구성요소가 시간-박스에서 데이터 요소를 마지막으로 처리한 이후로 충분한 시간이 아직 경과하지 않았으므로 어떠한 시간-박스(!TB)도 한정되지 않고 할당되지 않는다(307). 구성요소가 #n 성분이면(309), 특정한 연결기 #n 연결기에 대해 이용가능한 미리 한정된 수의 데이터 요소가 있는지를 먼저 체크한다(311). 만약 예이면, 시간 박스(TB)는 한정될 수 있으며(305), 여기서 시작 시간은 이전 시간-박스의 종료 시간이고, 종료 시간은 특정한 연결기에서 이용가능한 가장 최근의 데이터 요소의 시간 스탬프이다. 만약 아니오이면, 현재 알고리즘적 시간이, 변위값(d)을 더한 현재 시간 박스의 시작 시간보다 더 큰지를 체크한다(313). 만약 예이면, 데이터 요소는 준비되고 시간 박스는 한정될 수 있으며(305), 만약 아니오이면, 충분한 데이터 요소가 n번째 연결기에서 아직 존재하지 않으므로 어떠한 시간-박스(!TB)도 한정될 수 없다. 일반적으로, △s 구성요소는 현재 시간-박스에서 약간 변화하는 데이터 양을 처리할 수 있는 한편, #n 구성요소는 #n 연결기로서 규정되는 입력으로부터 동일한 양의 데이터를 취할 것이다.
일실시예에서, 구성요소가 할당된 현재 시간 박스는 도 4에 도시된 바와 같이 각 연결기에 대해 시간적으로 변위될 수 있다. 401에서, 다수의 입력(I1..In) 및 3개의 출력(Q1, Q2, Q3)을 갖는 구성요소가 도시된다. 시간-박스(TB)는 403에 의해 도시된 바와 같이 시작 시간(BS) 및 종료 시간(ES)을 갖는 구성요소에 할당된다. 이 예에서, 출력(Q1)은 어떠한 변위도 갖지 않고; Q2는 양의 변위를 갖고, Q3는 음의 변위를 갖는다. 특정한 출력 연결기에 대한 생성될 때까지의 시간은 출력의 변위를 더함으로써 시간 박스의 종료 시간에 직접 링크된다:
spCQ=ES(TB)+△dQ
여기서 CQ는 구성요소의 출력(Q)에 부착된 연결기이고, spCQ는 연결기(CQ)의 생성될 때까지의 시간이고, ES(TB)는 구성요소(401)가 스케줄링된 시간 박스(TB)의 종료 시간이고, △dQ는 구성요소의 출력(Q)의 변위이다.
도 5를 이용하여, 구성요소의 스케줄 능력을 결정할 때 스케줄러가 시간-박스를 어떻게 이용하는지가 설명된다. 스케줄 능력은 구성요소의 각 입력 연결기를 체크함으로써 결정되고, 연결기에 대한 생성될 때까지의 시간(spC)이 구성요소의 시간 박스의 종료 시간(ES) 이상이면, 이러한 연결기는 구성요소가 스케줄링되도록 권한 받게 한다(503). 그렇지 않으면, 구성요소는 스케줄링되도록 준비되지 않는다(505). 처음에 언급한 바와 같이, 구성요소의 각 입력 연결기는 구성요소에게 스케줄링되도록 권한을 주기 위해 권한을 받아야 한다.
시간 박스 구동 스케줄링에 따라 구성요소가 어떻게 스케줄링가능한지에 대해 설명되었고, 다음 설명에서, 본 발명의 일실시예에 따라 스케줄링될 구성요소를 선택하는 방법과, 스케줄링가능한 구성요소가 융통성있는 우선 순위 구성에서 어떻게 순서가 정해지는지를 설명할 것이다.
모든 스케줄가능한 구성요소는, 구성요소의 스케줄링이 출력에 기여할 수 있고 가장 높은 우선 순위가 가장 이른 시간에 출력에 기여할 수 있는 구성요소에 제공되는 시간의 지점에 기초하여 융통성있는 우선 순위를 취한다. 각 단계 이후에, 스케줄링가능한 구성요소의 세트는 갱신되고, 스케줄링가능한 구성요소의 우선 순위는 다시 계산된다. 이를 통해 데이터는 그래프를 통해 풀링되는데, 여기서 더 이른 것을 최종 결과에 더 일찍 기여하는 구성요소가 먼저 처리된다. 하나를 초과하는 구성요소가 가장 높은 우선 순위를 갖는다면, 푸쉬 스케줄링은 상기 구성요소들에 적용된다.
특정한 구성요소가 출력에 기여할 수 있는 시간적으로 가장 이른 순간을 계산하는 한가지 방법은, 구성요소로부터 출력까지의 경로를 이용하고, 그 다음에 구성요소로부터 출력까지의 경로 상에 모든 시간 박스의 시간 길이만큼 감산된 새로운 시간 박스의 시작 시간으로서 시간에서의 가장 이른 순간을 계산하는 것이다. 이러한 계산을 수행함으로써, 가장 이른 가능한 시간이 계산된다. 구성요소가 스케줄링될 때 처리되는 시간 박스에서의 처음 시간 스탬핑된 데이터 요소가 경로에서의 다음 구성요소에 대한 시간 박스에서의 손실된 시간 스탬핑된 데이터 요소와 같다고 간주된다. 이러한 가정은 출력으로의 경로에서의 각 구성요소에 대해 수행되어, 이에 의해 구성요소가 출력에 기여할 수 있는 시간에서의 가장 이른 순간이 발견될 수 있다.
다수의 구성요소가 스케줄링가능할 때, 다음 수학식은, 어떤 구성요소가 가장 이른 시간에 출력에 기여할 수 있어서, 어떤 구성요소가 스케줄링되는지를 찾는데 사용된다:
Min{spX-△sXp|p는 구성요소(X)로부터의 출력까지의 경로이다}
spX는 구성요소(X)의 현재 시간 박스의 시작 시간과 동일한 구성요소(X)의 생성될 때까지의 시간이고, △sXp는, 구성요소(X)로부터 출력까지의 경로(p)에서 구성요소의 각 시간-박스와 연관된 각 미리 한정된 시간 간격의 길이의 합이다. 특정한 실시예에서, 시간 지연이 있을 수 있어서, 이를 통해 경로에서 2개 이상의 구성요소 사이의 연결에서 시간 변위가 있다. 이 경우에, 경로(p)를 따른 총 변위(△dXp)는 다음과 같이 감산되어야 한다:
Min{spX-(△sXp-△dXp)}
2개의 구성요소가 상기 설명에 따라 스케줄링되어야 하는 경우에, 즉 이들 2개의 구성요소의 스케줄링이 동일한 가장 이른 시간에 출력에 기여할 수 있는 경우에, 풀 스케줄링은 어떤 구성요소가 스케줄링되는지를 결정하는데 사용된다.
도 6에서, 하드 실시간 시스템의 일례가 도시되며, 상기 설명에 따라 시스템에서 스케줄가능한 구성요소의 스케줄링을 설명하는데 사용된다. 시스템은 모두 △s 구성요소인 4개의 구성요소(A, B, C, D)로 구성되며, 여기서 구성요소(A)는 연결기(601)를 통해 구성요소(B)에 연결된 입력 구성요소이고, 구성요소(B)는 연결기(603)를 통해 출력 구성요소인 구성요소(C)에 연결되고, 구성요소(D)는 연결기(605)를 통해 출력 구성요소(C)에 연결되는 입력 구성요소이다. 각 연결기에서, 시간-박스(607, 609, 611 및 613)가 도시되고, 각 시간-박스 간격(△sA, △sB, △sC. △sD)과 함께, 각 시간-박스와 연관된 미리 한정된 시간 간격의 길이가 도시된다. 입력 구성요소(A 및 D)는 일정한 데이터 스트림을 수신하므로, 시간-박스(607) 및 시간-박스(611)를 채우기에 충분한 데이터 요소가 항상 존재한다. 이것은 또한 구성요소(A 및 D)가 항상 스케줄가능하다는 것을 의미한다.
다음 설명에서, 구성요소(A, B, C, D)의 스케줄링은 도 7a 내지 도 7f를 이용하여 설명된다. 모든 도면에서, 각 구성요소(A, B, C, D)는 구성요소(A, B, C, D)에 연관된 미리 한정된 시간 간격의 시간 간격(△sA, △sB, △sC. △sD)과 함께 도시된다. 더욱이, 시간 라인(700)은 알고리즘적 시간(s)을 도시하고, 각 구성요소(A, B, C, D)에 대해, 생성될 때까지의 시간은 각각 spA, spB, spC, spD으로서 도시되고, 시간 박스 스케줄링의 일반적인 특성에 따라, 각 구성요소에 대한 생성될 때까지의 시간은 구성요소와 연관된 현재 시간 박스의 시작 시간과 동일하다. 초기에, 모든 시간 박스의 시작 시간은 동일하고, 점으로서 표시된다.
도 7a에서, 구성요소(A)는 처음에 스케줄링되고, A 및 D 모두는 스케줄가능하고, 푸쉬 스케줄링을 이용함으로써, A가 선택된다.
시간 간격(701)에서의 데이터 요소는 구성요소(A)에 의해 처리되고, 생성될 때까지의 시간(spA)은 증가한다. 스케줄링된 구성요소(A)를 처리한 후에, 구성요소(A), 구성요소(B) 및 구성요소(D)를 스케줄링하는데 충분한 데이터가 이용가능하다. 어떤 구성요소를 스케줄링할지는 최소 수 또는 가장 이른 수를 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
이 경우에, B 및 D 모두가 동일한 가장 이른 시간에서 출력에 기여할 수 있으므로, 푸쉬 스케줄링이 사용되고, 구성요소(B)는 스케줄링된다.
스케줄링된 구성요소(B)가 B의 시간축에서 시간 간격(702)에 의해 도시된 후에, 생성될 때까지의 시간(spB)은 증가한다. 구성요소(A), 구성요소(B) 및 구성요소(D)를 스케줄링하는데 충분한 데이터가 이용가능하다. 어떤 구성요소가 스케줄링되는지는 최소의 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(D)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(D)는 시간 간격(703)에 의해 도시된 바와 같이 스케줄링된다. D의 시간축에서, 생성될 때까지의 시간(spD)은 증가한다.
도 7b에서, 충분한 데이터는 구성요소(A, B, D)를 스케줄링하는데만 여전히 사용가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
이러한 시간 구성요소(B)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(B)는 시간 간격(704)에 의해 도시된 바와 같이 스케줄링된다.
그 다음에, 다시 구성요소(A, B, D)는 스케줄링될 수 있고, 상기 계산을 이용함으로써, 구성요소(D)는 시간 간격(705)에 의해 도시된 바와 같이 다시 스케줄링된다.
도 7c에 도시된 바와 같이, 이제 구성요소(C)를 스케줄링하는데 충분한 데이터가 이용가능하므로, 구성요소(A, B, C, D) 모두 스케줄링가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(C): spC
구성요소(C)는 가장 이른 시간에 기여할 수 있으므로, 구성요소(C)는 시간 간격(706)에 의해 도시된 바와 같이 스케줄링된다.
도 7d에서 알 수 있듯이, 이들 구성요소가 스케줄가능하게 하는 구성요소(A, B, D)를 스케줄링하는데만 충분한 데이터가 이용가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(B)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(B)는 시간 간격(707)에 의해 도시된 바와 같이 스케줄링된다.
도 7e에서, 그러한 구성요소가 스케줄링가능하게 하는 구성요소(A, B, D)를 스케줄링하는데 충분한 데이터가 이용가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(D)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(D)는 시간 간격(708)에 의해 도시된 바와 같이 스케줄링된다.
도 7f에서, 그러한 구성요소가 스케줄링가능하게 하는 구성요소(A, B, D)를 스케줄링하는데 충분한 데이터가 이용가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(B)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(B)는 시간 간격(709)에 의해 도시된 바와 같이 스케줄링된다.
도 7g에서, 이제 구성요소(C)를 스케줄링하는데 충분한 데이터가 이용가능하므로, 구성요소(A, B, C, D) 모두가 스케줄가능하다. 어떤 구성요소가 스케줄링되는지는 최소 수 또는 가장 이른 시간을 산출하는 계산에 의해 결정된다:
구성요소(A): spA-(△sB+△sC)
구성요소(B): spB-△sC
구성요소(D): spD-△sC
구성요소(C): spC
구성요소(C)는 가장 이른 시간에 출력에 기여할 수 있으므로, 구성요소(C)는 시간 간격(710)에 의해 도시된 바와 같이 스케줄링된다.
스케줄링은 상기 설명과 유사하게 계속될 수 있다.
상술한 바와 같이, 본 발명은 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템에서 구성요소를 스케줄링하는 방법 등에 이용된다.

Claims (7)

  1. 데이터 요소의 시간 종속 스트림을 처리하기 위해 하드 실시간 시스템(hard real time system)에서 스케줄가능한 구성요소를 스케줄링하는 방법으로서, 스케중가능한 구성요소의 수는 상기 구성요소를 처리하기 위해 이용가능한 프로세서의 수보다 크고, 상기 구성요소 각각은 적어도 하나의 입력 및 하나의 출력을 갖는, 스케줄가능한 구성요소를 스케줄링하는 방법에 있어서,
    - 각 스케줄가능한 구성요소에 대해, 상기 구성요소가 상기 하드 실시간 시스템의 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계와;
    - 전반적으로 가장 이른 시간에 상기 실시간 시스템의 출력에 기여할 수 있는 상기 스케줄가능한 구성요소를 스케줄링하는 단계를
    연속적으로 포함하는 것을 특징으로 하는, 스케줄가능한 구성요소를 스케줄링하는 방법.
  2. 제 1항에 있어서, 다수의 스케줄가능한 구성요소가 동일한 전반적인 가장 이른 시간에 상기 실시간 시스템의 출력에 기여한다면, 상기 다수의 구성요소의 스케줄링은 푸쉬 스케줄링을 이용하여 수행되는, 스케줄가능한 구성요소를 스케줄링하는 방법.
  3. 제 1항 또는 제 2항에 있어서, 미리 한정된 시간 간격의 길이는 각 구성요소에 대해 규정되고, 구성요소는, 시간 스탬핑된(stamped) 데이터 요소의 상기 시간 종속 스트림의 상기 미리 한정된 시간 간격으로부터 시간 스탬핑된 데이터 요소가 상기 구성요소의 모든 입력에 이용가능할 때 스케줄가능한, 스케줄가능한 구성요소를 스케줄링하는 방법.
  4. 제 3항에 따라, 상기 시간 스탬핑된 데이터 요소의 상기 미리 한정된 시간 간격의 이용가능성은 상기 미리 한정된 시간 간격의 시작 시간 및 종료 시간을 한정하고, 데이터가 이전 구성요소에 의해 처리될 때까지의 시간이 상기 미리 한정된 시간 간격의 종료 시간보다 더 최근일 때를 체크함으로써 결정되는, 스케줄가능한 구성요소를 스케줄링하는 방법.
  5. 제 3항 또는 제 4항에 있어서, 상기 구성요소가 상기 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계는,
    - 상기 구성요소로부터 상기 시스템의 출력에 도달하기 위해 데이터 요소가 처리되어야 하는 후속적인 구성요소의 가능한 경로를 식별하고,
    - 상기 미리 한정된 시간 간격의 시작 시간으로부터, 상기 경로에서 상기 후속적인 구성요소 각각에 대해 규정된 미리 한정된 시간 간격 각각의 길이를 감산함으로써 각 가능한 경로에 대해 가장 이른 기여 시간을 결정하고,
    - 상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 상기 가장 이른 결정된 기여 시간으로서 결정함으로써
    수행되는, 스케줄가능한 구성요소를 스케줄링하는 방법.
  6. 제 3항 또는 제 4항에 있어서, 상기 구성요소가 상기 출력에 기여할 수 있는 가장 이른 시간을 결정하는 단계는,
    - 상기 구성요소로부터 상기 시스템의 출력에 도달하기 위해 데이터 요소가 처리되어야 하는 후속적인 구성요소의 경로를 식별하고,
    - 미리 한정된 시간 간격의 적어도 몇몇은 변위값(displacement value)이 감산되며, 상기 미리 한정된 시간 간격의 시작 시간으로부터, 상기 경로에서 상기 후속적인 구성요소 각각에 대해 규정된 미리 한정된 시간 간격 각각의 길이를 감산함으로써 각각의 가능한 경로에 대한 가장 이른 기여 시간을 결정하고,
    - 상기 구성요소가 출력에 기여할 수 있는 가장 이른 시간을 상기 가장 이른 결정된 기여 시간으로서 결정함으로써
    수행되는, 스케줄가능한 구성요소를 스케줄링하는 방법.
  7. 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템으로서,
    다수의 구성요소와, 구성요소를 처리하기 위한 다수의 프로세서를 포함하며, 상기 구성요소의 수는 프로세서의 수보다 크고, 상기 구성요소 각각은 적어도 하나의 입력 및 적어도 하나의 출력을 갖고, 상기 시스템은, 각 스케줄가능한 구성요소에 대해, 상기 구성요소가 상기 하드 실시간 시스템의 출력에 기여할 수 있는 가장 이른 시간을 결정하는 수단과, 전반적인 가장 이른 시간에 상기 실시간 시스템의 출력에 기여할 수 있는 스케줄가능한 구성요소를 스케줄링하는 수단을 포함하는, 데이터 요소의 시간 종속 스트림을 처리하는 하드 실시간 시스템.
KR1020057009968A 2002-12-03 2003-10-31 하드 실시간 시스템에서의 소프트웨어 구성요소의 풀스케줄링 KR20050084107A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP02080058.7 2002-12-03
EP02080058 2002-12-03

Publications (1)

Publication Number Publication Date
KR20050084107A true KR20050084107A (ko) 2005-08-26

Family

ID=32405743

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057009968A KR20050084107A (ko) 2002-12-03 2003-10-31 하드 실시간 시스템에서의 소프트웨어 구성요소의 풀스케줄링

Country Status (10)

Country Link
US (1) US20060059483A1 (ko)
EP (1) EP1573537B1 (ko)
JP (1) JP2006509285A (ko)
KR (1) KR20050084107A (ko)
CN (1) CN100449491C (ko)
AT (1) ATE418101T1 (ko)
AU (1) AU2003274578A1 (ko)
DE (1) DE60325416D1 (ko)
ES (1) ES2319890T3 (ko)
WO (1) WO2004051460A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60315264T2 (de) * 2002-03-01 2008-02-14 Koninklijke Philips Electronics N.V. Durch timebox angesteuertes scheduling von softwarekomponenten in hard-echtzeitsystemen
KR100881275B1 (ko) * 2006-12-08 2009-02-05 한국전자통신연구원 Sca 멀티 컴포넌트 및 멀티 포트 환경에서의 우선 순위제어 장치 및 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640563A (en) * 1992-01-31 1997-06-17 International Business Machines Corporation Multi-media computer operating system and method
JP2950432B2 (ja) * 1994-03-16 1999-09-20 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 複数データ・ストリームおよび実時間タスクの同期およびスケジューリングの方法および装置
EP0817016A3 (en) * 1996-07-03 2003-10-22 Siemens Aktiengesellschaft Software ICS for high level application frameworks
US6178542B1 (en) * 1997-02-24 2001-01-23 Lucent Technologies Inc. Hardware-software co-synthesis of embedded system architectures using quality of architecture metrics
US6374405B1 (en) * 1999-02-17 2002-04-16 Opentv, Corp. Module scheduling with a time interval and ending time
JP3473687B2 (ja) * 2000-03-29 2003-12-08 日本電気株式会社 分散パイプラインスケジューリング方法および方式
US7150017B1 (en) * 2000-08-29 2006-12-12 International Business Machines Corporation System and method for scheduling digital information transmission and retransmission on a network during time slots
US7140016B2 (en) * 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service

Also Published As

Publication number Publication date
ES2319890T3 (es) 2009-05-14
JP2006509285A (ja) 2006-03-16
ATE418101T1 (de) 2009-01-15
AU2003274578A8 (en) 2004-06-23
CN100449491C (zh) 2009-01-07
US20060059483A1 (en) 2006-03-16
CN1720504A (zh) 2006-01-11
DE60325416D1 (de) 2009-01-29
AU2003274578A1 (en) 2004-06-23
EP1573537A2 (en) 2005-09-14
EP1573537B1 (en) 2008-12-17
WO2004051460A3 (en) 2005-05-26
WO2004051460A2 (en) 2004-06-17

Similar Documents

Publication Publication Date Title
Casini et al. Response-time analysis of ROS 2 processing chains under reservation-based scheduling
Strosnider et al. The deferrable server algorithm for enhanced aperiodic responsiveness in hard real-time environments
Henriksson et al. TrueTime: Real-time control system simulation with MATLAB/Simulink
Buttazzo Rate monotonic vs. EDF: Judgment day
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
US20020073129A1 (en) Integrated multi-component scheduler for operating systems
US20080022288A1 (en) Signal Processing Appatatus
KR20020022049A (ko) 태스크 스케줄링 및 메시지 패싱
Årzén et al. Integrated control and scheduling
EP1459179A2 (en) Data processing system having multiple processors and task scheduler and corresponding method therefor
Cucinotta et al. QoS control for pipelines of tasks using multiple resources
KR20050084107A (ko) 하드 실시간 시스템에서의 소프트웨어 구성요소의 풀스케줄링
Fadahunsi et al. Edge scheduling framework for real-time and non real-time tasks
JP4326963B2 (ja) ハードリアルタイムシステムにおけるソフトウェアコンポーネントのタイムボックス駆動型のスケジューリング
Rhodes et al. Overhead effects in real-time preemptive schedules
CN117234695B (zh) 用于自动驾驶系统的处理任务的调度方法及其装置
Kim et al. Scheduling techniques to integrate MPEG-based multimedia applications in hard real-time systems
Liu et al. A server-based approach for overrun management in multi-core real-time systems
Afshar et al. Resource sharing under global scheduling with partial processor bandwidth
Park et al. Integration of preemption threshold and quantum-based scheduling for schedulability enhancement of fixed priority tasks
Rhodes et al. RAGS-real-analysis ALAP-guided synthesis
Moitra Voluntary preemption: A tool in the design of hard real-time systems
van den Heuvel et al. Optimal and fast composition of resource-sharing components in hierarchical real-time systems
Ranjan et al. Operating System Concerns for Multimedia
Bavier The Tyche CPU Scheduler

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application