KR20140021433A - 프로세서간 메시지처리장치 및 방법 - Google Patents

프로세서간 메시지처리장치 및 방법 Download PDF

Info

Publication number
KR20140021433A
KR20140021433A KR1020120087992A KR20120087992A KR20140021433A KR 20140021433 A KR20140021433 A KR 20140021433A KR 1020120087992 A KR1020120087992 A KR 1020120087992A KR 20120087992 A KR20120087992 A KR 20120087992A KR 20140021433 A KR20140021433 A KR 20140021433A
Authority
KR
South Korea
Prior art keywords
message
thread
priority
polling
processing
Prior art date
Application number
KR1020120087992A
Other languages
English (en)
Other versions
KR101915198B1 (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 삼성테크윈 주식회사
Priority to KR1020120087992A priority Critical patent/KR101915198B1/ko
Priority to PCT/KR2013/006558 priority patent/WO2014025145A1/en
Priority to US14/420,713 priority patent/US9448864B2/en
Publication of KR20140021433A publication Critical patent/KR20140021433A/ko
Application granted granted Critical
Publication of KR101915198B1 publication Critical patent/KR101915198B1/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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • 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/22Handling requests for interconnection or transfer for access to input/output bus using successive scanning, e.g. polling
    • 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
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

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

Abstract

본원 발명의 바람직한 일 실시예로서 프로세서간 메시지처리장치는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 폴링쓰레드와 커널 모듈을 이용하여 인터럽트 내지 폴링방식으로 메시지를 처리시 발생되던 문제점을 해결하여 시스템에 부하를 가하지 않으면서도 우선순위에 따라 메시지를 처리하는 방법을 개시한다.

Description

프로세서간 메시지처리장치 및 방법{Method and Apparatus for processing the message between processors}
본 발명은 멀티프로세서에서 프로세서간 메시지 통신 처리방법에 관한 것이다.
일반적으로, 공유메모리를 가지고 있는 멀티프로세서에서 프로세서간 메시지 통지 이벤트는 비동기적 프로세서간 인터럽트인 IPI(inter-processor interrupt) 를 통해 이루어진다. 일 예로, 프로세서 A가 프로세서 B로 메시지를 전달하는 경우, 프로세서 A는 공유 메모리에 전달하고자 하는 메시지를 기록한 후 프로세서 B로 IPI를 발생시킨다. 인터럽트가 발생한 B는 기존 실행 흐름을 멈추고 메시지 도착 이벤트 및 메시지를 수신하여 메시지 통지가 이루어진다.
일반적으로 프로세서에서는 인터럽트를 가장 높은 우선순위로 최우선으로 처리하기 위해 예외상황(exception)을 발생시키고, 이로 인해 예외 처리 진입과 복귀 비용이 요구된다. 또한 예외상황을 발생시키는 과정에서 내부의 파이프라인, 캐시, 분기 예측 모듈 등의 성능 향상을 수행하기 위해 프로세서 내부의 데이터 구조 내용이 훼손되어, 일시적으로 수십 % ~ 수백 % 정도의 성능 저하가 발생되는 문제가 있다.
이 외에 프로세서간 메시지를 처리하는 방법으로 한국 공개 2006-0126065 등에는 슬레이브와 호스트간 폴링 메시지를 처리하는 구성등이 개시되어 있다. 그러나 프로세서 간 커널 서비스로 폴링 방식을 구현하여 메시지 통신 처리를 수행하는 경우 커널 전체가 블로킹되어 지연되는 문제점 등이 있다.
인터럽트 기반으로 수행되는 프로세서간 통신은 빈번하게 시스템의 실행 흐름을 멈추게 하여 과도한 오버헤드를 발생시킬 수 있다는 문제점을 가지고 있으며, 커널 서비스로 폴링 방식을 구현하는 경우에도 커널 전체가 블로킹될 수 있는 문제점 등이 있다.
본 발명에서는 프로세서간 메시지 처리, 메시지 통신 처리에 있어 이상의 문제점을 해결하고자 한다.
본원 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리장치는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 임시로 저장하는 메시지대기큐; 폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 메시지폴링쓰레드; 상기 메시지폴링쓰레드로부터 메시지 처리요청이 있으면 상기 우선순위대로 상기 메시지폴링쓰레드로부터 메시지를 수신하여 처리하고, 메시지 처리가 끝나면 쓰레드풀(thread pool)로 복귀하여 다음 메시지 처리요청까지 대기하는 메시지핸들링쓰레드;및 커널이 호출될때 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은 경우 상기 메시지핸들링쓰레드를 이용하여 상기 가장 높은 우선순위를 지닌 메시지를 처리하는 우선순위메시지 처리부;를 포함하는 것을 특징으로 한다.
본 발명의 또 다른 바람직한 일 실시예로서, 공유메모리를 사용하는 송신 및 수신 프로세서간 메시지처리 방법은 상기 공유메모리 내의 메시지대기큐에 송신프로세서에서 수신프로세서로 전송할 메시지에 우선순위를 설정하여 저장하는 단계; 상기 수신프로세서의 메시지폴링쓰레드에서 폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 단계; 커널모듈에서 커널이 호출될때 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은지 판단하여 우선순위가 높으면 해당 메시지를 수신하는 단계; 상기 우선순위대로 상기 수신한 메시지를 추출한 후 쓰레드풀(thread pool)로부터 메시지핸들링쓰레드를 할당받아 상기 수신한 메시지를 상기 할당받은 메시지핸들링쓰레드에 전달하는 단계; 및 상기 메시지핸들링쓰레드에서 상기 전달받은 메시지를 처리한 후 상기 쓰레드풀로 복귀하는 단계;를 포함한다.
본 발명의 또 다른 바람직한 일 실시예로서, 프로세서간 메시지처리장치는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 임시로 저장하는 메시지대기큐; 상기 수신 프로세서의 유휴시간(idle time)에는 폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 메시지폴링쓰레드; 상기 수신 프로세서에서 커널이 호출될때는 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은 경우 상기 가장 높은 우선순위를 지닌 메시지를 수신하는 동기적이벤트수신커널모듈;및 상기 메시지폴링쓰레드 또는 상기 동기적이벤트수신커널모듈로부터 수신한 메시지를 상기 우선순위대로 처리하고, 메시지 처리가 끝나면 쓰레드풀(thread pool)로 복귀하여 다음 메시지 처리요청까지 대기하는 메시지핸들링쓰레드;를 포함한다.
본 발명의 바람직한 일 실시예로서 프로세서간 메시지처리장치는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 폴링쓰레드와 커널 모듈을 이용함으로써 인터럽트 기반으로 수행되는 프로세서간 통신은 빈번하게 시스템의 실행 흐름을 멈추게 하여 과도한 오버헤드를 발생시키던 문제 및 커널 서비스로 폴링 방식을 구현하는 경우에도 커널 전체가 블로킹될 수 있는 문제점 을 해결하는 효과가 있다.
도 1 은 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지 처리를 수행하는 시스템도를 도시한다.
도 2 는 프로세서 간 커널 서비스로 폴링 방식을 구현하여 메시지 통신 처리를 수행하는 일 예를 도시한다.
도 3 은 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리장치의 내부 구성을 도시한다.
도 4는 본 발명의 바람직한 일 실시예로서, 프로세서 내의 메시지 폴링 쓰레드의 실행 흐름을 의사코드로 표현한 예를 도시한다.
도 5. 본 발명의 바람직한 일 실시예로서, 프로세서 내의 메시지 핸들링 쓰레드의 실행 흐름을 의사코드로 표현한 예를 도시한다.
도 6은 본 발명의 바람직한 일 실시예로서, 프로세서 내의 우선순위메시지 처리부의 실행 흐름을 의사코드로 표현한 예를 도시한다.
도 7은 본 발명의 또 다른 바람직한 일 실시예로서, 프로세서간 메시지처리장치의 내부 구성 상세도를 도시한다.
도 8은 본 발명의 또 다른 바람직한 일 실시예로서,. 메시지 폴링 쓰레드의 실행 흐름을 의사코드로 표현한 예를 도시한다.
도 9는 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리방법의 흐름도를 도시한다.
이하에서, 도면을 참조하여 본 발명의 실시예에 대하여 상세히 설명하기로 한다. 도면들 중 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 참조번호들 및 부호들로 나타내고 있음에 유의해야 한다.
하기에서 본 발명을 설명함에 있어, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
또한, 본 발명에 보다 더 충실하도록 하기 위해서, 본 발명의 취지를 벗어나지 않는 범위 내에서 당업자 수준의 변경이나 변형이 있을 수 있음을 명기하는 바이다.
도 1 은 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지 처리를 수행하는 시스템도를 도시한다.
본 발명의 바람직한 일 실시예로서, 메시지를 처리하는 시스템은 적어도 두 개의 프로세서(100, 110)를 사용할 수 있다. 메시지를 처리하는 시스템에서는 프로세서A(100)에서는 입출력 서비스 태스크를 실행하고, 프로세서B(110)에서는 영상처리 태스크를 실행하는 것으로 가정할 수 있다.
이 경우, 프로세서B(110)에서 실행되고 있는 영상처리 태스크는 처리가 끝난 이후에는 저장장치에 저장되어 기록되어야 한다. 이를 위해 프로세서B(110)는 입출력 처리를 전담하는 프로세서A(100)에 기록을 요청하는 메시지를 생성하여 프로세서A(100)에 전송한다.
본원 발명의 바람직한 일 실시예에서는, 이와 같이 각 프로세서가 특정 서비스 또는 특정 태스크를 수행할 때, 임의의 프로세서에서 다른 프로세서에서 수행하는 서비스를 요청하고자 할 때 송수신하는 메시지 통신 처리 방법에 대해 개시한다.
도 2 는 프로세서 간 커널 서비스로 폴링 방식을 구현하여 메시지 통신 처리를 수행하는 일 예를 도시한다.
프로세서간 메시지 통신처리를 수행하는 방법으로는 크게 인터럽트 방식과 폴링 방식이 있다. 인터럽트 방식은 프로세서의 성능을 저하시키는 문제점으로 인한 문제점이 있어, 도 1에 도시된 바와 같이 커널 서비스로 폴링 방식을 구현하여 시스템 보호 및 하드웨어 추상화를 실현할 수 있다.
도 2 을 참고하면, 커널 서비스에서는 메시지 수신을 검사한 후 처리할 메시지가 있는 경우, 해당 메시지를 처리한 후 다시 메시지 수신을 검사하는 과정을 반복한다.
그러나, 도 2와 같은 커널 서비스로 폴링 방식을 구현하는 경우 크게 세 가지 문제점이 발생할 수 있다.
첫째, 메시지 처리 루프의 실행주기에 따라 나머지 커널 서비스와 응용 태스크의 응답성이 심각하게 저하될 수 있다.
둘째, 커널 내부에서 블록킹 메시지를 처리하는 경우 커널 전체가 블록킹될 수 있는 위험성을 내포한다. 프로세서간 전송되는 메시지는 크게 블록킹 메시지(blocking message)와 비블록킹 메시지(non-blocking message)로 나눌 수 있다. 블로킹 메시지는 메시지 처리를 수행하기 위해 특정 이벤트 송수신이 완료될 때까지의 대기해야 하는 메시지를 의미한다. 비블록킹 메시지는 메시지 처리에 특정 이벤트 송수신 대기시간이 필요없는 메시지를 의미한다.
일 예로, 블로킹 메시지의 내용이 외부 입출력장치로부터 입력 값을 수신 받아야 되는 경우, 해당 입력값을 외부 입출력장치로부터 수신 받을 때까지 메시지 처리는 블로킹되어야 한다. 블로킹 메시지를 수신하여야 하는 경우, 메시지 내용이 수신될 때까지 메시지 처리가 블로킹되어야 하므로, 커널 전체가 블록킹 될 수 있는 위험이 있다.
셋째로, 커널 내부에서 폴링 기반의 단순 메시지 처리 방식은 빈번한 우선순위 역전현상(priority inversion)을 발생시킬 수 있다. 일 예로, 프로세서 간에 우선 순위 기반의 이벤트/메시지 처리 정책에 따라 현재 실행중인 블록킹 메시지의 내용이 외부 입출력 장치로부터 입력 값을 수신받는 것을 요구하는 경우, 해당 메시지 실행 직후 도착한 더 높은 우선순위를 가지는 메시지들은 예측할 수 없는 시간 동안 대기하여야 하는 문제점이 발생한다.
본 발명에서는 인터럽트 기반으로 수행되는 프로세서간 메시지 통신의 문제점 및 커널 서비스로 폴링 방식을 구현하여 프로세서간 메시지 통신의 문제점을 해결하고자 한다.
도 3 은 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리장치의 내부 구성을 도시한다.
본원 발명의 바람직한 일 실시예로서 메시지처리장치(300)는 공유 메모리를 사용하는 멀티프로세서의 프로세서간 통신에서 프로세서의 유휴시간(idle time)에는 폴링쓰레드를 이용하여 공유 메모리를 주기적으로 체크함으로써 커널 서비스로 폴링 방식을 구현하는 경우 발생했던 커널 서비스와 응용 태스크의 응답성 저하의 문제와 커널 내부에서 블록킹 메시지를 처리하는 경우 커널 전체가 블록킹될 수 있는 위험성의 문제를 해결한다.
또한, 본원 발명의 바람직한 일 실시예로서 메시지처리장치(300)는 커널이 호출될때에는 폴링쓰레드를 대신하여 커널모듈(320)을 실행시켜 우선순위 기반에 따라 메시지를 처리함으로써 기존의 우선순위전복현상의 문제를 해결한다.
본원 발명의 바람직한 일 실시예에서 사용하는 쓰레드는 블록킹 메시지 처리를 위해 실행상태(running), 대기상태(waiting), 준비상태(ready) 등을 구비할 수 있으며, 우선순위 기반의 스케줄러에 의해 실행되는 것을 가정한다.
도 3 을 참고하면, 본원 발명의 바람직한 일 실시예로서 메시지처리장치(300)는 메시지대기큐(310), 메시지폴링쓰레드(320), 우선순위메시지처리부(330), 메시지핸들링쓰레드(340) 및 쓰레드풀(350)을 포함한다.
메시지대기큐(310)는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는 메시지를 저장한다. 이 경우, 메시지대기큐(310)는 각 프로세서(예, 도 1의 100 및 110)가 접근할 수 있는 공유 메모리에 존재하는 자료 구조로서, 송신 프로세서에서는 메시지에 우선순위를 할당하여 메시지대기큐(310)에 삽입하고, 이 후 수신 프로세서에서 메시지대기큐(310) 내에서 메시지를 꺼내간다.
수신 프로세서의 메시지 폴링 쓰레드(320)는 폴링방식으로 메시지대기큐(310)를 지속적으로 검색 또는 모니터링하여 메시지대기큐(310) 내의 메시지를 우선순위대로 수신한다.
메시지 폴링 쓰레드(320)는 도 4와 같이 메시지대기큐(310)에 처리할 메시지가 있는지 확인하여 메시지가 있는 경우, 가장 높은 우선순위의 메시지를 추출한다. 그 후 쓰레드풀(350)에서 메시지핸들링쓰레드(340)를 할당받아 추출한 메시지를 처리하기 위해 해당 메시지핸들링쓰레드에 메시지를 전달한다.
메시지 폴링 쓰레드(320)는 예를 들어, 도 1과 같은 시스템에서 가장 낮은 우선순위를 가지며, 그에 따라 실행 가능한 쓰레드 또는 프로세스가 없는 유휴 시간(idle time)에 실행된다.
메시지 핸들링 쓰레드(340)는 메시지폴링쓰레드(320)로부터 메시지 처리요청이 있는 경우, 메시지대기큐(310)에 저장된 메시지들 중 가장 높은 우선순위의 메시지를 선택한다. 그 후 쓰레드풀(350)에서 메시지핸들링쓰레드(340)를 할당 받아 메시지가 처리되도록 한다.
메시지 핸들링 쓰레드(340)의 실행 흐름은 도 5를 참고하면, 메시지 폴링 쓰레드(320)로부터 메시지를 수신하면서, 메시지의 우선순위를 함께 상속하여 우선순위대로 메시지를 처리하고, 메시지 처리가 완료되면 쓰레드풀(350)로 복귀하여 다음 메시지 처리 요청이 올 때까지 대기한다. 시스템에 더 이상 실행 가능한 쓰레드가 없다면 다시 메시지 폴링 쓰레드가 실행되어 위 과정을 반복한다.
폴링 방식을 사용하는 메세지 폴링 쓰레드(320)만을 사용할 경우 우선순위 전복의 문제점이 발생할 수 있기 때문에, 본원 발명의 바람직한 일 실시예로 우선순위메시지 처리부(330)는 커널이 호출될 때 메시지폴링쓰레드(320)를 대신하여 메시지대기큐(310)를 검색한다. 커널이 호출될 때는 쓰레드가 대기 상태에서 준비상태가 되는 경우, 쓰레드가 실행 상태에서 종료 상태가 되는 경우, 쓰레드가 실행 상태에서 대기상태가 되는 경우, 새로운 쓰레드가 도착하는 경우 및 인터럽트가 발생한 경우를 포함한다.
폴링 방식을 사용하는 메시지 폴링 쓰레드(320)는 가장 낮은 우선순위를 지님으로 메시지 폴링 쓰레드(320)의 실행이 과도하게 지연되어, 메시지 대기큐(310)에 대기중인 높은 우선순위 메시지 처리가 상당히 지연될 수 있다.
예를 들어 블록킹에서 해제되는 다수의 낮은 우선순위 쓰레드들이 대기 상태에서 준비 상태로 깨어나 실행되는 경우 메시지 폴링 쓰레드(320)의 실행은 다른 모든 실행 가능한 쓰레드들이 자신의 실행을 종료할 때까지 지연된다. 따라서 메시지 폴링 쓰레드(320)의 이전 실행 이후에 도착한 높은 우선순위 메시지는 낮은 우선순위 메시지 처리가 모두 완료될 때까지 처리가 지연된다.
이러한 문제점을 해결하기 위해, 본 발명의 바람직한 일 실시예에서 우선순위 메시지 처리부(330)는 커널이 호출될 때 메시지대기큐(310) 내의 가장 높은 우선순위를 지닌 메시지의 우선순위와 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위를 비교하여, 메시지대기큐(310) 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 더 높은 경우 메시지핸들링쓰레드(340)를 이용하여 가장 높은 우선순위를 지닌 메시지를 처리한다.
우선순위 메시지 처리부(330)는 도 6 과 같이 현재 실행 가능한 쓰레드들 중 가장 높은 우선 순위 쓰레드와 수신된 메시지 중 가장 높은 우선순위 메시지를 비교하여 메시지의 우선순위가 더 높을 경우, 메시지 폴링 쓰레드(320)를 대신하여 쓰레드풀(350)로부터 메시지핸들링쓰레드(340)를 할당받아 메시지가 해당 쓰레드에 의해 처리될 수 있도록 한다.
본원 발명의 바람직한 일 실시예에서 우선순위 메시지 처리부(330)는 위의 방법을 통해 메시지 대기큐에 도착한 임의의 메시지가 더 낮은 우선순위 메시지에 의해 지연되는 횟수를 최대 1번만 허용되도록 제한할 수 있으며, 그로써 지연 시간도 예측할 수 있게 된다.
도 7은 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리장치의 내부 구성 상세도를 도시한다.
메시지대기큐(710)는 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 임시로 저장한다. 메시지폴링쓰레드(320)에서는 수신 프로세서의 유휴시간(idle time)에 폴링방식으로 메시지대기큐(710)를 검색하여 메시지를 우선순위대로 수신한다.
동기적이벤트수신커널모듈(730)에서는 수신 프로세서에서 커널이 호출될때 메시지폴링쓰레드(720)를 대신하여 메시지대기큐(710)를 검색하고, 메시지대기큐(710) 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은 경우 상기 가장 높은 우선순위를 지닌 메시지를 수신한다.
메시지핸들링쓰레드(740)는 메시지폴링쓰레드(720) 또는 동기적이벤트수신커널모듈(730)로부터 수신한 메시지를 우선순위대로 처리하고, 메시지 처리가 끝나면 쓰레드풀(750)로 복귀하여 다음 메시지 처리요청까지 대기한다.
본 발명의 또 다른 바람직한 일 실시예로서, 메시지폴링쓰레드(720)는 메시지대기큐(710) 내의 메시지가 비블록킹 메시지인 경우, 직접 해당 메시지를 처리하도록 구현이 가능하다.
도 8을 참고하면, 메시지폴링쓰레드(720)는 수신된 메시지가 비블록킹 메시지인 경우 별도로 메시지 핸들링 쓰레드를 할당 받아 처리하지 않고 메시지 폴링 쓰레드가 직접 해당 메시지를 처리할 수 있다. 다만, 메시지폴링쓰레드(720)에서 수신된 메시지가 블록킹 메시지인 경우에는 위에서 기술한 바와 마찬가지 방식으로 쓰레드 풀에서 메시지 핸들링 쓰레드를 할당 받아 수신 메시지를 처리한다.
도 9는 본 발명의 바람직한 일 실시예로서, 프로세서간 메시지처리방법의 흐름도를 도시한다.송신 프로세서는
도 1 에 도시된 일 실시예와 같이 공유메모리를 사용하는 송신 및 수신 프로세서간에 메시지를 처리하기 위해서 공유메모리 내의 메시지대기큐에 수신프로세서로 전송할 메시지를 저장한다. 이 경우, 메시지를 저장할 때 우선순위를 함께 설정하여 저장한다(S910).
수신프로세서의 메시지폴링쓰레드에서는 수신프로세서의 폴링방식으로 메시지대기큐를 검색하거나 모니터링하여 메시지대기큐 내의 메시지를 우선순위를 기초로 수신한다(S920).
동기적이벤트수신커널모듈(도 7 참고)에서는 커널이 호출될때 메시지폴링쓰레드를 대신하여 메시지대기큐를 검색하고, 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은지 판단하여 우선순위가 높으면 해당 메시지를 수신한다(S930).
메시지폴링쓰레드 또는 동기적이벤트수신커널모듈로부터 우선순위대로 수신한 메시지를 추출한 후 쓰레드풀(thread pool)로부터 메시지핸들링쓰레드를 할당받아 수신한 메시지를 할당받은 메시지핸들링쓰레드에 전달한다(S940).
메시지핸들링쓰레드에서 전달받은 메시지를 처리한 후 쓰레드풀로 복귀한다(S950).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플라피 디스크, 광데이터 저장장치 등의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상 도면과 명세서에서 최적 실시예들이 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다.
그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 임시로 저장하는 메시지대기큐;
    폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 메시지폴링쓰레드;
    상기 메시지폴링쓰레드로부터 메시지 처리요청이 있으면 상기 우선순위대로 상기 메시지폴링쓰레드로부터 메시지를 수신하여 처리하고, 메시지 처리가 끝나면 쓰레드풀(thread pool)로 복귀하여 다음 메시지 처리요청까지 대기하는 메시지핸들링쓰레드;및
    커널이 호출될때 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은 경우 상기 메시지핸들링쓰레드를 이용하여 상기 가장 높은 우선순위를 지닌 메시지를 처리하는 우선순위메시지 처리부;를 포함하는 것을 특징으로 하는 프로세서간 메시지처리장치.
  2. 제 1 항에 있어서, 상기 메시지폴링쓰레드는
    상기 수신 프로세서의 유휴시간(idle time)에 실행되며, 상기 유휴 시간에는 실행 가능한 쓰레드가 없는 것을 특징으로 하는 프로세서간 메시지처리장치.
  3. 제 1 항에 있어서, 상기 커널이 호출될 때는
    쓰레드가 대기 상태에서 준비상태가 되는 경우, 쓰레드가 실행 상태에서 종료 상태가 되는 경우, 쓰레드가 실행 상태에서 대기상태가 되는 경우, 새로운 쓰레드가 도착하는 경우 및 인터럽트가 발생한 경우를 포함하는 것을 특징으로 하는 프로세서간 메시지처리장치.
  4. 제 1 항에 있어서,
    상기 메시지대기큐 내의 메시지가 비블록킹(non-blocking) 메시지인 경우, 상기 메시지 폴링 쓰레드가 해당 비블록킹 메시지를 처리하는 것을 특징으로 하는 프로세서간 메시지처리장치.
  5. 제 1 항에 있어서,
    상기 수신 프로세서는 입출력처리를 전담하고, 상기 송신 프로세서는 영상처리를 전담하는 것을 특징으로 하는 프로세서간 메시지처리장치.
  6. 공유메모리를 사용하는 송신 및 수신 프로세서간 메시지처리 방법으로서,
    상기 공유메모리 내의 메시지대기큐에 송신프로세서에서 수신프로세서로 전송할 메시지에 우선순위를 설정하여 저장하는 단계;
    상기 수신프로세서의 메시지폴링쓰레드에서 폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 단계;
    커널모듈에서 커널이 호출될때 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은지 판단하여 우선순위가 높으면 해당 메시지를 수신하는 단계;
    상기 우선순위대로 상기 수신한 메시지를 추출한 후 쓰레드풀(thread pool)로부터 메시지핸들링쓰레드를 할당받아 상기 수신한 메시지를 상기 할당받은 메시지핸들링쓰레드에 전달하는 단계;
    상기 메시지핸들링쓰레드에서 상기 전달받은 메시지를 처리한 후 상기 쓰레드풀로 복귀하는 단계;를 포함하는 것을 특징으로 하는 프로세서간 메시지처리방법.
  7. 제 6 항에 있어서, 상기 메시지폴링쓰레드는
    상기 수신 프로세서의 유휴시간(idle time)에 실행되며, 상기 유휴 시간에는 실행 가능한 쓰레드가 없는 것을 특징으로 하는 프로세서간 메시지처리방법.
  8. 제 6 항에 있어서, 상기 커널이 호출될 때는
    쓰레드가 대기 상태에서 준비상태가 되는 경우, 쓰레드가 실행 상태에서 종료 상태가 되는 경우, 쓰레드가 실행 상태에서 대기상태가 되는 경우, 새로운 쓰레드가 도착하는 경우 및 인터럽트가 발생한 경우를 포함하는 것을 특징으로 하는 프로세서간 메시지처리방법.
  9. 공유메모리를 사용하는 송신 및 수신 프로세서간에 전송되는, 우선순위가 설정된 메시지를 임시로 저장하는 메시지대기큐;
    상기 수신 프로세서의 유휴시간(idle time)에는 폴링방식으로 상기 메시지대기큐를 검색하여 상기 메시지를 우선순위대로 수신하는 메시지폴링쓰레드;
    상기 수신 프로세서에서 커널이 호출될때는 상기 메시지폴링쓰레드를 대신하여 상기 메시지대기큐를 검색하고, 상기 메시지대기큐 내의 가장 높은 우선순위를 지닌 메시지의 우선순위가 상기 수신 프로세서 내의 실행가능한 쓰레드들 중 가장 높은 우선순위를 지닌 쓰레드의 우선순위보다 높은 경우 상기 가장 높은 우선순위를 지닌 메시지를 수신하는 동기적이벤트수신커널모듈;및
    상기 메시지폴링쓰레드 또는 상기 동기적이벤트수신커널모듈로부터 수신한 메시지를 상기 우선순위대로 처리하고, 메시지 처리가 끝나면 쓰레드풀(thread pool)로 복귀하여 다음 메시지 처리요청까지 대기하는 메시지핸들링쓰레드;를 포함하는 것을 특징으로 하는 프로세서간 메시지처리장치.
  10. 제 9 항에 있어서, 상기 메시지폴링쓰레드는
    상기 메시지대기큐에서 수신한 메시지가 비블록킹 메시지인 경우, 해당 메시지를 직접 처리하는 것을 특징으로 하는 프로세서간 메시지처리장치.
KR1020120087992A 2012-08-10 2012-08-10 프로세서간 메시지처리장치 및 방법 KR101915198B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020120087992A KR101915198B1 (ko) 2012-08-10 2012-08-10 프로세서간 메시지처리장치 및 방법
PCT/KR2013/006558 WO2014025145A1 (en) 2012-08-10 2013-07-23 Method and apparatus for processing message between processors
US14/420,713 US9448864B2 (en) 2012-08-10 2013-07-23 Method and apparatus for processing message between processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120087992A KR101915198B1 (ko) 2012-08-10 2012-08-10 프로세서간 메시지처리장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140021433A true KR20140021433A (ko) 2014-02-20
KR101915198B1 KR101915198B1 (ko) 2018-11-05

Family

ID=50068330

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120087992A KR101915198B1 (ko) 2012-08-10 2012-08-10 프로세서간 메시지처리장치 및 방법

Country Status (3)

Country Link
US (1) US9448864B2 (ko)
KR (1) KR101915198B1 (ko)
WO (1) WO2014025145A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101974091B1 (ko) * 2018-11-14 2019-04-30 (주)시큐레이어 머신러닝 기반 쓰레드풀을 관리하는 방법 및 이를 사용한 컴퓨팅 장치
US10310917B2 (en) 2015-06-09 2019-06-04 Hanwha Aerospace Co., Ltd. Apparatus and method for processing data
KR20190085391A (ko) * 2018-01-10 2019-07-18 성균관대학교산학협력단 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치
KR20200045639A (ko) 2018-10-23 2020-05-06 삼성에스디에스 주식회사 큐 관리 장치 및 방법
KR102240996B1 (ko) * 2019-10-14 2021-04-16 성균관대학교산학협력단 가상화 시스템에서의 입출력 완료 처리 방법 및 장치

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6574558B2 (ja) * 2014-10-14 2019-09-11 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
US9953006B2 (en) * 2015-06-23 2018-04-24 International Business Machines Corporation Lock-free processing of stateless protocols over RDMA
US9959143B1 (en) * 2015-07-21 2018-05-01 Amazon Technologies, Inc. Actor and thread message dispatching
CN107948224B (zh) * 2016-10-12 2021-07-06 北京京东尚科信息技术有限公司 客户端请求的超时处理方法和装置
CN108073545A (zh) * 2016-11-17 2018-05-25 联芯科技有限公司 一种多处理器通信装置及方法
JP6908840B2 (ja) * 2017-07-10 2021-07-28 富士通株式会社 情報処理装置、プログラムおよびドライバ切り替え方法
GB201721734D0 (en) * 2017-12-22 2018-02-07 Nordic Semiconductor Asa Inter-processor communication
JP6955163B2 (ja) * 2017-12-26 2021-10-27 富士通株式会社 情報処理装置、情報処理方法及びプログラム
CN109117260B (zh) * 2018-08-30 2021-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
CN109669724B (zh) * 2018-11-26 2021-04-06 许昌许继软件技术有限公司 一种基于Linux系统的多命令并发式代理服务方法及系统
CN109785077A (zh) * 2019-01-30 2019-05-21 北京互金新融科技有限公司 订单的处理方法和装置
CN110377436B (zh) * 2019-07-12 2021-04-27 清华大学 持久性内存的数据存储访问方法、设备及装置
CN111639044B (zh) * 2020-05-22 2022-05-03 中国人民解放军国防科技大学 一种支持中断优先级轮询仲裁派发的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06318191A (ja) 1993-05-10 1994-11-15 Fujitsu Ltd マルチスレッド処理方式
JPH0969053A (ja) 1995-08-31 1997-03-11 Toshiba Corp メッセージ受信機構に於けるマルチスレッド制御方式及びキューイング方式
US6058460A (en) 1996-06-28 2000-05-02 Sun Microsystems, Inc. Memory allocation in a multithreaded environment
KR20010035652A (ko) 1999-10-01 2001-05-07 박종섭 통신 시스템에서의 프로세서간 통신을 위한 에이치디엘씨 제어장치 및 방법
JP2006309512A (ja) * 2005-04-28 2006-11-09 Nec Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
KR101133592B1 (ko) 2005-06-03 2012-04-05 삼성전자주식회사 폴링 메시지 처리 장치 및 그 방법
CN101305353B (zh) 2006-11-27 2013-04-24 英特尔公司 集中式中断控制器
JP5485055B2 (ja) 2010-07-16 2014-05-07 パナソニック株式会社 共有メモリシステム及びその制御方法
JP2012053817A (ja) 2010-09-03 2012-03-15 Renesas Electronics Corp マルチプロセッサシステムと制御方法
JP2012108576A (ja) 2010-11-15 2012-06-07 Toyota Motor Corp マルチコアプロセッサ、処理実行方法、プログラム
KR101686010B1 (ko) 2010-12-21 2016-12-13 삼성전자주식회사 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
JP2012009063A (ja) 2011-09-05 2012-01-12 Intel Corp 中央化された割り込みコントローラ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10310917B2 (en) 2015-06-09 2019-06-04 Hanwha Aerospace Co., Ltd. Apparatus and method for processing data
KR20190085391A (ko) * 2018-01-10 2019-07-18 성균관대학교산학협력단 Gpu 커널 트랜잭션화 방법 및 컴퓨팅 장치
KR20200045639A (ko) 2018-10-23 2020-05-06 삼성에스디에스 주식회사 큐 관리 장치 및 방법
KR101974091B1 (ko) * 2018-11-14 2019-04-30 (주)시큐레이어 머신러닝 기반 쓰레드풀을 관리하는 방법 및 이를 사용한 컴퓨팅 장치
KR102240996B1 (ko) * 2019-10-14 2021-04-16 성균관대학교산학협력단 가상화 시스템에서의 입출력 완료 처리 방법 및 장치

Also Published As

Publication number Publication date
US9448864B2 (en) 2016-09-20
US20150242254A1 (en) 2015-08-27
WO2014025145A1 (en) 2014-02-13
KR101915198B1 (ko) 2018-11-05

Similar Documents

Publication Publication Date Title
KR20140021433A (ko) 프로세서간 메시지처리장치 및 방법
Brandenburg et al. Optimality results for multiprocessor real-time locking
US20210216368A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US8595743B2 (en) Network aware process scheduling
US20150058858A1 (en) Dynamic task prioritization for in-memory databases
JPH1055284A (ja) スレッドをスケジュールする方法及びそのシステム
US9798582B2 (en) Low latency scheduling on simultaneous multi-threading cores
KR20120070303A (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US9507633B2 (en) Scheduling method and system
US9311142B2 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US9047121B2 (en) System and method for scheduling jobs in a multi-core processor
Zhao et al. Resource synchronization and preemption thresholds within mixed-criticality scheduling
US10102037B2 (en) Averting lock contention associated with core-based hardware threading in a split core environment
US8122167B1 (en) Polling in a virtualized information handling system
Horowitz A run-time execution model for referential integrity maintenance
CN112486638A (zh) 用于执行处理任务的方法、装置、设备和存储介质
US11494228B2 (en) Calculator and job scheduling between jobs within a job switching group
US9081630B2 (en) Hardware-implemented semaphore for resource access based on presence of a memory buffer in a memory pool
Hu et al. Real-time schedule algorithm with temporal and spatial isolation feature for mixed criticality system
US8706923B2 (en) Methods and systems for direct memory access (DMA) in-flight status
Souto et al. Overhead-aware schedulability evaluation of semi-partitioned real-time schedulers
Han et al. Resource-aware partitioned scheduling for heterogeneous multicore real-time systems
Lee et al. Interrupt handler migration and direct interrupt scheduling for rapid scheduling of interrupt-driven tasks
Rothberg Interrupt handling in Linux
Erciyes et al. Real-Time Operating Systems

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
N231 Notification of change of applicant
GRNT Written decision to grant