KR20150058618A - 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치 - Google Patents

실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치 Download PDF

Info

Publication number
KR20150058618A
KR20150058618A KR1020130140114A KR20130140114A KR20150058618A KR 20150058618 A KR20150058618 A KR 20150058618A KR 1020130140114 A KR1020130140114 A KR 1020130140114A KR 20130140114 A KR20130140114 A KR 20130140114A KR 20150058618 A KR20150058618 A KR 20150058618A
Authority
KR
South Korea
Prior art keywords
interrupt
compensation
processing
compensation timer
value
Prior art date
Application number
KR1020130140114A
Other languages
English (en)
Inventor
손정호
최윤원
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020130140114A priority Critical patent/KR20150058618A/ko
Priority to US14/270,631 priority patent/US20150143010A1/en
Publication of KR20150058618A publication Critical patent/KR20150058618A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Bus Control (AREA)

Abstract

실시간 임베디드 시스템에서, 처리되고 있는 인터럽트보다 우선 순위가 높은 상위 인터럽트가 발생하면 처리되고 있던 하위 인터럽트를 중단하고 상위 인터럽트를 처리한다. 상위 인터럽트의 처리가 종료되면, 하위 인터럽트에 대응하는 제보상 타이머 레지스터에 하위 인터럽트의 지연 정보를 기록하고, 중단된 하위 인터럽트의 처리를 재개한다. 이후 하위 인터럽트의 처리가 종료되면, 보상 타이머 레지스터에 기록된 지연 정보를 토대로 하위 인터럽트의 다음 발생 주기를 조절하여 지연을 보상한다.

Description

실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치{Method and apparatus for compensating delay in real-time embedded system}
본 발명은 실시간 임베디드 시스템에서 발생하는 지연을 보상하기 위한 방법 및 그 장치에 관한 것이다.
실시간 임베디드 시스템(real-time embedded system)에서는 정확한 동작 시간을 제공하는 실시간성이 보장되어야 하며, 이를 위하여, 인터럽트 지연의 최소화, 고정밀 타이머, 실시간 동기화 기법 등이 사용되고 있다. 특히, 실시간 우선 순위 기반 인터럽트 모듈을 사용하여 실시간성을 제공하는 방법이 있는데, 이 경우 한번 지연된 시간으로 인해 주기적으로 수행되어야 하는 작업에서 지속적인 지연누적이 발생하므로 실시간성을 회복하기 어렵다.
종래의 기술에서는 인터럽트 발생으로 인한 지연은 미리 설계 및 프로그램 단계에서 '불확실한 예측' 형태로 고려되었으며, 이로 인해 프로그램의 실행에서 발생하는 예측되지 않은 동작에 대한 추적이 어려웠다. 또, 주기적인 동작을 요하는 많은 작업에서 의도하지 않게 발생되는 지연은 결국 간헐적으로 나타나는 시스템의 오동작/오류로 나타나고 추적이 불가능하게 된다.
본 발명이 해결하고자 하는 기술적 과제는 실시간 임베디드 시스템에서 발생하는 인터럽트간 중첩으로 인한 지연을 최소화하기 위한 방법 및 그 장치를 제공하는 것이다.
위의 기술적 과제를 위한 본 발명의 특징에 따른 실시간 임베디드 시스템에서의 지연 보상 방법은, 처리되고 있는 인터럽트보다 우선 순위가 높은 상위 인터럽트가 발생하면 처리되고 있던 하위 인터럽트를 중단하고, 상기 상위 인터럽트를 처리하는 단계; 상기 상위 인터럽트의 처리가 종료되면, 상기 하위 인터럽트에 대응하는 제1 보상 타이머 레지스터에 상기 하위 인터럽트의 지연 정보를 기록하는 단계; 상기 중단된 하위 인터럽트의 처리를 재개하는 단계; 및 상기 하위 인터럽트의 처리가 종료되면, 상기 제1 보상 타이머 레지스터에 기록된 지연 정보를 토대로 상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계를 포함한다.
상기 상위 인터럽트를 처리하는 단계는 상기 상위 인터럽트에 대응하는 제2 보상 타이머 레지스터에 보상 타이머의 현재 시간값을 인터럽트 발생 시점으로 해서 기록하는 단계를 더 포함할 수 있다.
상기 지연 정보를 기록하는 단계는 상기 상위 인터럽트의 처리가 종료될 때의 상기 보상 타이머의 현재 시간값에서 상기 제2 보상 타이머 레지스터에 기록된 값을 감산한 값을 상기 지연 정보로 하여 상기 제1 보상 타이머 레지스터에 기록할 수 있다.
한편 상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계는 상기 하위 인터럽트의 발생 주기를 상기 지연 정보만큼 감소시킬 수 있다. 이 경우, 상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계는 상기 하위 인터럽트의 이전 발생 주기에서 상기 지연 정보를 감산한 값을 다음 발생 주기를 위한 타이머의 값으로 설정할 수 있다.
본 발명의 다른 특징에 따른 실시간 임베디드 시스템에서의 지연 보상 장치는, 보상 타이머; 인터럽트별로 지연 정보가 기록되는 보상 타이머 레지스터를 포함하는 메모리부; 인터럽트를 우선 순위별로 처리하고, 처리되고 있는 인터럽트보다 우선 순위가 높은 상위 인터럽트가 발생하면 처리되고 있던 하위 인터럽트를 중단하고 상기 상위 인터럽트를 처리하며, 상기 상위 인터럽트 처리가 종료되면 상기 하위 인터럽트의 처리를 재개하고, 상기 보상 타이머 레지스터에 기록된 지연 정보를 토대로 상기 하의 인터럽트의 발생 주기를 조절하는 인터럽트 제어부를 포함한다.
상기 보상 타이머 레지스터는 상기 하위 인터럽트에 대응하고 상기 하위 인터럽트의 지연 정보가 저장되는 제1 보상 타이머 레지스터; 및 상기 상위 인터럽트에 대응하고, 상기 상위 인터럽트가 발생할 때의 상기 보상 타이머의 현재 시간값인 인터럽트 발생 시점이 저장되는 제2 보상 타이머 레지스터를 포함할 수 있다.
상기 지연 정보는 상기 상위 인터럽트의 처리가 종료될 때의 상기 보상 타이머의 현재 시간값에서 상기 제2 보상 타이머 레지스터에 기록된 값을 감산한 값일 수 있다. 이때 상기 인터럽트 제어부는 상기 하위 인터럽트의 이전 발생 주기에서 상기 지연 정보를 감산한 값을 다음 발생 주기로 설정할 수 있다.
본 발명의 실시 예에 의하면, 과제는 실시간 임베디드 시스템에서 발생하는 인터럽트간 중첩으로 인한 지연을 최소화할 수 있다.
또한 상위 우선순위의 인터럽트로 인한 지연 시간을 획득하고 이를 토대로 하위 인터럽트의 다음 주기 설정에 활용함으로써, 예측가능한 실시간 시스템을 구성할 수 있다.
도 1은 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 장치의 구조를 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 인터럽트 처리 예를 나타낸 도이다.
도 3은 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 방법의 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
이제 본 발명의 실시 예에 따른 실시간 임베디드 시스템((real-time embedded system)에서의 지연 보상 방법 및 그 장치에 대하여 설명한다.
도 1은 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 장치의 구조를 나타낸 도이다.
첨부한 도 1에서와 같이, 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 장치(100)는 보상 타이머(110), 메모리부(120), 인터럽트 제어부(130), 연산 처리부(140), 내부 타이머(150)를 포함한다.
보상 타이머(110)는 자율(Autonomous) 타이머로 동작하며, 하드웨어 타이머로 이루어진다. 임베디드 시스템에서는 일반적으로 임계 영역 등의 코드 즉, 인터럽트 금지 문구를 통해 인터럽트가 금지될 수 있다. 인터럽트 금지 문구에 의하여 타이머의 동작까지 멈출 수 있으므로, 본 발명의 실시 예에 따른 보상 타이머(110)는 인터럽트 금지 문구에 영향을 받지 않는 하드웨어 타이머로 구성된다. 보상 타이머(110)는 도 1과 같이 별도의 모듈 형태로 구현되거나 내부 타이머(150)에 포함되는 형태로 구현될 수 있다.
메모리부(120)는 인터럽트 지연 보상을 위한 보상 타이머 레지스터를 포함한다. 즉, 인터럽트별로 보상 타이머 레지스터를 포함하며, 보상 타이머 레지스터에는 인터럽트 지연을 위한 보상 값이 저장된다. 보상 값은 인터럽트 수행 중에 다른 인터럽트(예를 들어, 우선 순위가 높은 인터럽트)에 의하여 해당 인터럽트가 중지된 경우, 인터럽트가 지연된 시간에 대응하는 시간 값을 포함하며, 이 시간 값은 지연 정보라고 명명될 수 있다. 지연 정보는 하나의 인터럽트가 다른 인터럽트에 의하여 처리가 지연된 시간에 대한 정보로서, 현재 시간 값에서 우선 순위가 높은 인터럽트의 보상 타이머 레지스터의 값을 감산한 값을 토대로 산출될 수 있다. 이외에도, 보상 값은 보다 높은 우선 순위의 인터럽트가 발생할 때의 시간(인터럽트 발생 시점)을 포함한다. 처리가 지연된 인터럽트에 대응하는 보상 타이머 레지스터에 지연 정보가 저장되며, 처리가 지연된 인터럽트보다 우선 순위가 높아서 먼저 처리된 인터럽트에 대응하는 보상 타이머 레지스터에는 해당 인터럽트의 발생 시점이 저장될 수 있다. 처리가 지연된 인터럽트의 보상 타이머 레지스터에 저장된 정보는 추후에 해당 인터럽트의 발생 시간을 조절하는데 사용된다.
또한 보상 값은 처리가 지연된 인터럽트의 발생 시간을 더 포함할 수 있다. 우선 순위가 다른 인터럽트가 동시에 발생한 경우, 처리가 지연된 우선 순위가 낮은 인터럽트의 발생 시점을 보상 타이머 레지스터에 기록하여 위에 기술된 바와 같이, 다음 인터럽트의 발생 주기를 조절하는데 사용할 수 있다.
위에 기술된 바와 같은 보상 값을 이용한 처리에 대해서는 추후에 보다 구체적으로 설명하기로 한다.
인터럽트 제어부(130)는 실시간 임베디드 시스템에서 우선 순위 기반 인터럽트 제어를 수행한다. 동시에 둘 이상의 인터럽트가 발생하면 우선 순위에 따라 보다 높은 우선 순위를 가지는 인터럽트가 먼저 처리되도록 한다. 이 경우, 인터럽트에 대한 우선 순위를 결정할 수도 있으며, 또는 낮은 우선 순위의 인터럽트가 처리되고 있을 경우에 높은 순위의 인터럽트를 발생시킬 수도 있다.
인터럽트 제어부(130)는 각 인터럽트를 처리하기 위한 인터럽트 핸들러를 포함하며, 각 인터럽트 핸들러는 보상 타이머(110)에서 카운트되는 시간 값을 토대로 인터럽트의 발생 시점과 해당 인터럽트의 종료 시점을 별도로 저장할 수 있다. 인터럽트 문맥 전환(context switching)이 발생할 때, 상위 인터럽트(우선 순위가 높은 인터럽트)에 의하여 하위 인터럽트(우선 순위가 낮은 인터럽트) 처리가 지연된 정보가 제공되어, 하위 인터럽트에서 다음 주기를 설정하는데 지연된 정보가 사용되게 된다. 여기서 지연된 정보는 하위 인터럽트의 보상 타이머 레지스터에 저장된 값(지연 정보)을 나타내며, 작업이 지연된 인터럽트에 대응하는 인터럽트 핸들러는 지연 정보를 토대로 해당 인터럽트가 다음에 발생할 주기를 재설정한다.
예를 들어, 하나의 인터럽트가 다른 상위 인터럽트에 의하여 작업이 지연된 경우, 보상 타이머 레지스터에 저장된 값을 토대로 획득되는 지연 정보에 따라 다음 인터럽트가 발생할 주기를 재설정한다. 인터럽트 발생 주기는 다음과 같이 설정될 수 있다.
Figure pat00001
한편 연산 처리부(140)는 인터럽트에 대한 연산 처리를 수행한다. 내부 타이머(150)는 인터럽트에 영향을 받지 않고 자율적으로 동작하는 하드웨어 타이머이며, 실시간 임베디드 시스템에서 수행되는 각종 처리를 위한 타이머로서 기능한다.
다음에는 이러한 구조를 토대로 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 방법에 대하여 설명한다.
본 발명의 실시 예에서는 주기적으로 발생되는 인터럽트 처리에 대하여 우선 순위 기반 인터럽트 처리에 따라 발생되는 지연 즉 인터럽트간 중첩으로 인한 지연을 보상하기 위하여, 보상 타이머부(1110)를 이용하여 인터럽트 처리에 관련된 시간 정보를 메모리부(120)의 보상 타이머 레지스터에 기록하고, 기록된 시간 정보를 이용하여 인터럽트가 다음에 발생하는 주기를 보정하여, 지연 처리가 보상되도록 한다.
인터럽트들은 주기적으로 발생되며, 미리 설정된 인터럽트 발생 주기에 따라 반복적으로 발생될 수 있다. 인터럽트에 대하여 처리되는데 소요되는 시간 즉, 처리 시간이 미리 설정될 수 있으며, 인터럽트가 발생하면 발생 시점부터 처리 시간 동안 처리된 다음에 인터럽트가 종료된다. 인터럽트는 우선 순위를 기반으로 처리되며, 우선 순위 기반의 처리에 따라 임의 인터럽트 처리시에 보다 높은 우선 순위를 가지는 인터럽트가 발생되면, 처리되고 있던 인터럽트 처리가 중단되고 높은 우선 순위를 가지는 인터럽트가 처리된다.
도 2는 본 발명의 실시 예에 따른 인터럽트 처리 예를 나타낸 도이다.
도 2에서는 인터럽트 발생 주기가 "10"이고, 우선 순위가 "4"이고 처리 시간이 "5"인 인터럽트 A가 발생하여 처리되고 있는 상태에서, 우선 순위가 "5"(여기서는 높은 숫자일수록 우선 순위가 높은 것을 나타내는 것으로 가정함)이고, 처리 시간이 "3"인 인터럽트 B가 발생된 것을 예로 들어서 설명한다. 여기서 인터럽트 발생 주기 및 처리 시간은 시간 단위를 기반으로 한다.
인터럽트 A가 처리되는 도중에 보다 높은 우선 순위를 가지는 다른 인터럽트 B가 발생되면, 우선 순위 인터럽트 처리에 따라, 인터럽트 A의 처리가 중단되고 보다 높은 우선 순위를 가지는 인터럽트 B가 처리된다. 이에 따라 인터럽트 A의 작업 처리에 대하여 "3"의 지연이 발생된다. 즉, 인터럽트 B의 처리에 소요되는 시간(처리 시간 "3")만큼 인터럽트 A에 대한 적업 처리가 지연되어 "3"의 지연이 발생된다.
이후, 인터럽트 B에 대한 작업이 종료된 다음에 인터럽트 A 작업이 재개되어 처리되고, 인터럽트 A의 작업 말미에 다시 발생 주기 "10"에 따라 새로운 인터럽트 A가 발생한다. 이에 따라 이전 인터럽트 A에 대해서 발생된 "3"의 지연이 다음에 발생된 새로운 인터럽트 A에도 영향을 주게 되며, 이러한 과정이 누적되어 실시간 임베디드 시스템에서의 실시간성의 기대결과와 다른 결과가 나타날 수 있다. 그러므로, 본 발명의 실시 예에서는 인터럽트 지연을 보상하기 위하여, 상위 우선 순위를 가지는 인터럽트에 의하여 처리가 중단된 하위 인터럽트의 다음 발생 주기를 조절하여, 위와 같이 발생하는 인터럽트 처리 지연을 보상한다.
이를 위하여, 본 발명의 실시 예에서는 보상 타이머(110)와, 보상 타이머의 시간값을 토대로 인터럽트에 대한 정보를 저장하는 보상 타이머 레지스터를 이용한다. 예를 들어, 도 2의 (a)에서와 같이, 보상 타이머(110)는 0, 1, 2, 3, …, 10, …로 시간값을 카운트하며, 인터럽트 A에 대하여 보상 타이머 레지스터(R1)가 할당되고 인터럽트 B에 대하여 보상 타이머 레지스터(R2)가 할당된다.
도 2의 (b)에서와 같이, 인터럽트 A가 발생하면, 인터럽트 A가 처리된다. 이때, 각 인터럽트에 대한 보상 타이머 레지스터(R1, R2)에는 도 2의 (a)에서와 같이, 인터럽트 A의 발생 시점에 대한 시간 값으로 "0"이 보상 타이머 레지스터(R1)에 저장되고, 인터럽트 B에 대응하는 보상 타이머 레지스터(R2)에는 초기값으로 "0"이 저장될 수 있다.
인터럽트 A가 처리되고 있는 상태에서 보다 높은 우선 순위의 인터럽트 B가 발생하면 인터럽트 A의 처리가 중단되고, 인터럽트 B가 처리된다. 이때, 인터럽트 B의 보상 타이머 레지스터(R2)에 보상 타이머(110)의 현재 시간 값을 토대로 인터럽트 B의 발생 시점을 저장한다. 여기서는 보상 타이머(110)의 시간값 "3"이 인터럽트 B의 발생 시점으로 보상 타이머 레지스터(R2)에 기록된다.
이후, 처리 시간 "3"을 가지는 인터럽트 B가 처리된 다음에 종료되면, 인터럽트 B에 대응하는 보상 타이머 레지스터(R2)에 저장된 값과 보상 타이머(110)의 현재 시간값을 토대로 인터럽트 A에 대한 처리 지연을 보상하기 위한 보상 값을 산출하여, 인터럽트 A의 보상 타이머 레지스터(R1)에 저장한다. 인터럽트 A에 대한 처리 지연을 보상하기 위한 보상 값(인터럽트 중지 시간)은 [현재 시간 값- 인터럽트 B의 보상 타이머 레지스터의 값]을 토대로 산출된다. 여기서는 도 2의 (b)에서와 같이, 보상 타이머(110)의 현재 시간값 "6"에서 인터럽트 B의 보상 타이머 레지스터(R2)에 기록되어 있는 값 "3"을 감산한 값인 "3"이 보상값으로 산출되어, 인터럽트 A의 보상 타이머 레지스터(R1)에 기록된다. 이러한 인터럽트 A에 대한 보상값 기록이 종료된 다음에, 인터럽트 B의 보상 타이머 레지스터(R2)에는 인터럽트 B가 종료된 시간 값 "6"이 기록될 수 있다.
인터럽트 B의 종료 후에, 처리가 중단되었던 인터럽트 A에 대한 처리가 도 2의 (b)와 같이 재개되면, 인터럽트 A에 나머지 처리 시간 즉, 5-3=2의 시간 동안 처리된 다음에 종료된다. 그리고 본 발명의 실시 예에서는 인터럽트 A 처리에 따라 발생된 지연이 이후에 새로이 발생되는 인터럽트 A에 대해서 영향을 주지 않도록, 인터럽트 A에 대한 보상 처리를 수행한다. 구체적으로 인터럽트 A에 대한 보상 타이머 레지스터(R1)에 저장된 값을 토대로 인터럽트 A에 대한 발생 주기를 조절한다. 위의 수학식 1을 토대로, 도 2의 (b)에서와 같이, 인터럽트 A에 대한 다음 발생 주기의 타이머 값(Tv) 대하여 "설정값 t=(A' interval)-R1의 값"와 같은 연산처리가 수행되어, "7"의 값이 산출된다. 즉, 인터럽트 A의 기존 주기는 "10"이지만, 다음에 발생할 인터럽트 A에 대한 발생 주기가 "7"로 설정되어, 위와 같이 발생된 처리 지연이 보상되도록 한다. 한편, 발생 주기 "7"에 따라 새로운 인터럽트 A가 발생한 경우, 위와 같은 상위 인터럽트에 의한 처리 지연이 발생하지 않을 경우에는, 다시 인터럽트 A에 대한 발생 주기가 "10"으로 재설정될 수 있다.
이와 같이, 인터럽트 B에 의하여 발생한 지연 3을 보상하여 인터럽트 A의 다음 주기 설정에서 -3(B로 인한 지연시간)을 보상하여 주기를 재설정함으로써, 인터럽트 A의 주기를 항상 만족시키고 기대한 시간에 정확하게 동작이 가능하도록 할 수 있다.
도 3은 본 발명의 실시 예에 따른 실시간 임베디드 시스템에서의 지연 보상 방법의 흐름도이다.
첨부한 도 3에서와 같이, 지연 보상 장치(100)는 인터럽트가 발생하면 해당 인터럽트를 처리한다(S100, S110). 인터럽트가 발생한 현재 시간(Tc )을 해당 인터럽트에 대한 발생 시점의 시간 값으로 하여 해당하는 보상 타이머 레지스터(Ir1)에 저장하고(Ir1 <- Tc), 발생된 인터럽트를 처리한다.
발생된 인터럽트가 처리되는 도중에 보다 높은 우선 순위를 가지는 인터럽트 즉, 상위 인터럽트가 발생되면(S120), 처리되고 있던 보다 낮은 우선 순위의 인터럽트 즉, 하위 인터럽트 처리를 중단한다. 이때, 지연 보상 장치(100)는 하위 인터럽트에 해당하는 보상 타이머 레지스터(Ir1)에 큐잉(queing) 지연 값을 저장할 수 있다(Ir1 <- Tc - Ir1)(S130). 큐잉 지연값은 현재 시간값에서 보상 타이머 레지스터(Ir1)에 저장되었던 값을 감산한 값이 된다.
그리고 지연 보상 장치(100)는 상위 인터럽트에 대응하는 보상 타이머 레지스터에 보상 타이머(110)의 현재 시간 값을 토대로 상위 인터럽트의 인터럽트 발생 시점을 기록한다(Ir2 <- Tc)(S140).
지연 보상 장치(100)는 상위 인터럽트를 처리하며(S150), 상위 인터럽트가 종료되면(S160) 일전에 중단되었던 하위 인터럽트에 대응하는 보상 타이머 레지스터에 지연 정보를 기록한다. 즉, 보상 타이머(110)의 현재 시간 값에서 상위 인터럽트의 보상 타이머 레지스터에 현재 기록되어 있는 값(상위 인터럽트의 인터럽트 발생 시점)을 감산한 값을 산출하여, 하위 인터럽트에 대응하는 보상 타이머 레지스터에 지연 정보로서 기록한다(S170).
이후, 지연 보상 장치(100)는 중단되었던 하위 인터럽트에 대한 처리를 재개한다(S180). 하위 인터럽트의 처리가 종료되면, 지연 보상 장치(100)는 하위 인터럽트에 대한 발생 주기를 재설정한다(S190). 구체적으로, 하위 인터럽트의 발생 주기에서 하위 인터럽트의 보상 타이머 레지스터에 현재 저장되어 있는 값(지연 정보)를 감산하고 그 값을 하위 인터럽트의 다음 발생 주기로 재설정한다.
이와 같이, 보상 타이머의 값을 기반으로 각 인터럽트의 문맥 전환 과정에서 보상 타이머 레지스터의 값을 체크하고 이를 다음 주기를 설정하는 타이머 설정에 적용하여, 해당 인터럽트의 다음 발생 주기가 정확한 시간에 이루어질 수 있도록 한다.
한편, 하위 인터럽트가 처리되고 있는 상태에서 상위 인터럽트가 선점되어 처리되는 경우에는, 하위 인터럽트의 보상 타이머 레지스터에 상위 인터럽트의 처리 시간을 누적시킬 수 있다. 구체적으로, 하위 인터럽트의 보상 타이머 레지스터에 저장된 큐잉 지연값(Ir1 )에 상위 인터럽트의 처리 시간(Nr2 )를 더하여, 하위 인터럽트에 대한 보상 타이머 레지스터에 저장할 수 있다(Nr1 <- NR2 + Ir1). 여기서, Nr1은 하위 인터럽트의 처리 시간(Nr2 )을 나타낸다. 이 경우, 하위 인터럽트의 발생 주기(IN )와, 현재 시간값(Tc) 그리고 하위 인터럽트의 처리 시간(Nr2 ) 및 상위 인터럽트의 처리 시간(Nr1 )을 토대로(Tc + IN -(Nr2 + Nr1)), 하위 인터럽트의 다음 발생 시간을 산출할 수 있다.
이러한 본 발명의 실시 예에서, 인터럽트 핸들러 내에서 인터럽트의 다음 주기를 설정하는 방법으로, 특별한 연산코드(OP-CODE)를 사용하여 타이머 레지스터에 값을 기록하고, 각 인터럽트 우선 순위에 할당된 레지스터 혹은 메모리에 저장된 값을 토대로 다음 인터럽트 발생 주기를 설정할 수 있다. 그러나, 연산 코드 이외의 인터럽트 핸들러의 문맥 전환 코드를 수정하여 위와 같이 발생 주기를 설정할 수도 있다.
또한 위의 실시 예는 인터럽트를 처리하는데 있어서 지연 보상을 수행하는 것에 대하여 기술하였으나, 본 발명의 실시 예에 따른 지연 보상 방법은 인터럽트 이외에도 태스크(task) 전환시에도 적용할 수 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 사업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다.

Claims (11)

  1. 실시간 임베디드 시스템에서의 지연 보상 방법에서
    처리되고 있는 인터럽트보다 우선 순위가 높은 상위 인터럽트가 발생하면 처리되고 있던 하위 인터럽트를 중단하고, 상기 상위 인터럽트를 처리하는 단계;
    상기 상위 인터럽트의 처리가 종료되면, 상기 하위 인터럽트에 대응하는 제1 보상 타이머 레지스터에 상기 하위 인터럽트의 지연 정보를 기록하는 단계;
    상기 중단된 하위 인터럽트의 처리를 재개하는 단계; 및
    상기 하위 인터럽트의 처리가 종료되면, 상기 제1 보상 타이머 레지스터에 기록된 지연 정보를 토대로 상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계
    를 포함하는, 지연 보상 방법.
  2. 제1항에 있어서
    상기 상위 인터럽트를 처리하는 단계는
    상기 상위 인터럽트에 대응하는 제2 보상 타이머 레지스터에 보상 타이머의 현재 시간값을 인터럽트 발생 시점으로 해서 기록하는 단계를 더 포함하는, 지연 보상 방법.
  3. 제2항에 있어서
    상기 지연 정보를 기록하는 단계는
    상기 상위 인터럽트의 처리가 종료될 때의 상기 보상 타이머의 현재 시간값에서 상기 제2 보상 타이머 레지스터에 기록된 값을 감산한 값을 상기 지연 정보로 하여 상기 제1 보상 타이머 레지스터에 기록하는, 지연 보상 방법.
  4. 제1항에 있어서
    상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계는 상기 하위 인터럽트의 발생 주기를 상기 지연 정보만큼 감소시키는, 지연 보상 방법.
  5. 제4항에 있어서
    상기 하위 인터럽트의 다음 발생 주기를 조절하는 단계는 상기 하위 인터럽트의 이전 발생 주기에서 상기 지연 정보를 감산한 값을 다음 발생 주기를 위한 타이머의 값으로 설정하는, 지연 보상 방법.
  6. 실시간 임베디드 시스템에서의 지연 보상 장치에서,
    보상 타이머;
    인터럽트별로 지연 정보가 기록되는 보상 타이머 레지스터를 포함하는 메모리부;
    인터럽트를 우선 순위별로 처리하고, 처리되고 있는 인터럽트보다 우선 순위가 높은 상위 인터럽트가 발생하면 처리되고 있던 하위 인터럽트를 중단하고 상기 상위 인터럽트를 처리하며, 상기 상위 인터럽트 처리가 종료되면 상기 하위 인터럽트의 처리를 재개하고, 상기 보상 타이머 레지스터에 기록된 지연 정보를 토대로 상기 하의 인터럽트의 발생 주기를 조절하는 인터럽트 제어부
    를 포함하는, 지연 보상 장치.
  7. 제6항에 있어서
    상기 보상 타이머 레지스터는
    상기 하위 인터럽트에 대응하고 상기 하위 인터럽트의 지연 정보가 저장되는 제1 보상 타이머 레지스터; 및
    상기 상위 인터럽트에 대응하고, 상기 상위 인터럽트가 발생할 때의 상기 보상 타이머의 현재 시간값인 인터럽트 발생 시점이 저장되는 제2 보상 타이머 레지스터
    를 포함하는, 지연 보상 장치.
  8. 제7항에 있어서
    상기 지연 정보는 상기 상위 인터럽트의 처리가 종료될 때의 상기 보상 타이머의 현재 시간값에서 상기 제2 보상 타이머 레지스터에 기록된 값을 감산한 값인, 지연 보상 장치.
  9. 제6항에 있어서
    상기 인터럽트 제어부는 상기 하위 인터럽트의 이전 발생 주기에서 상기 지연 정보를 감산한 값을 다음 발생 주기로 설정하는, 지연 보상 장치.
  10. 제6항에 있어서
    상기 보상 타이머는 하드웨어 타이머로 이루어지는, 지연 보상 장치.
  11. 제7항에 있어서
    상기 제1 보상 타이머 레지스터는 하위 인터럽트의 발생 시점을 더 포함하는, 지연 보상 장치.










KR1020130140114A 2013-11-18 2013-11-18 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치 KR20150058618A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130140114A KR20150058618A (ko) 2013-11-18 2013-11-18 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치
US14/270,631 US20150143010A1 (en) 2013-11-18 2014-05-06 Method and apparatus for compensating for delay in real-time embedded system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130140114A KR20150058618A (ko) 2013-11-18 2013-11-18 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR20150058618A true KR20150058618A (ko) 2015-05-29

Family

ID=53174465

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130140114A KR20150058618A (ko) 2013-11-18 2013-11-18 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치

Country Status (2)

Country Link
US (1) US20150143010A1 (ko)
KR (1) KR20150058618A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802843A (zh) * 2015-12-22 2017-06-06 中国电子科技集团公司第二十研究所 一种cpci中断丢失的补偿方法
CN110192183B (zh) * 2017-01-25 2023-07-07 三菱电机株式会社 计算机装置、任务启动方法以及计算机可读的存储介质

Also Published As

Publication number Publication date
US20150143010A1 (en) 2015-05-21

Similar Documents

Publication Publication Date Title
JP2007226802A (ja) 優先順位によるフラッシュメモリの演算処理装置及び方法
KR20080064610A (ko) 실시간 운영체제를 위한 스케쥴링 방법 및 장치
JP2008532171A (ja) パイプラインスループットを促進するための方法及び装置
KR20150058618A (ko) 실시간 임베디드 시스템에서의 지연 보상 방법 및 그 장치
CN100511155C (zh) 无积累误差和自适应定时器实现方法
JP2000330785A (ja) 実時間プロセッサおよび命令実行方法
JP4697314B2 (ja) 二重化フィールド制御装置
KR101290785B1 (ko) 분산 제어 시스템의 시간 동기화 장치 및 방법
CN103823711A (zh) 在Java虚拟机中提供相对定时的方法及装置
US9223573B2 (en) Data processing device and method of controlling the same
KR101290784B1 (ko) 분산 제어 시스템에서 태스크 동기화 장치 및 방법
JP2011108140A (ja) データ処理装置
JP2016173750A (ja) 電子制御装置
CN103455402A (zh) 一种无累计误差的定时器控制方法
US20100180279A1 (en) Field control device and field control method
JP6377659B2 (ja) 半導体装置及びその制御方法
US11055163B2 (en) Method and device for error handling in a communication between distributed software components
JP7153731B2 (ja) コミット・ウィンドウ移動要素
CN104809024A (zh) 推测中断信号
US20180113827A1 (en) Deterministic control system for the operation of data transfer means by direct memory access
US11048575B2 (en) Method and device for error handling in a communication between distributed software components
TWI463406B (zh) 具搶占功能的即時中斷處理系統及其方法
JP2010128514A (ja) プラントコントロールシステム
KR20230167901A (ko) 멀티 스레드 프로그램의 실행 주기 보정 방법
JP2008077184A (ja) 割り込み制御回路

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid