KR20100075116A - 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치 - Google Patents

복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치 Download PDF

Info

Publication number
KR20100075116A
KR20100075116A KR1020080133735A KR20080133735A KR20100075116A KR 20100075116 A KR20100075116 A KR 20100075116A KR 1020080133735 A KR1020080133735 A KR 1020080133735A KR 20080133735 A KR20080133735 A KR 20080133735A KR 20100075116 A KR20100075116 A KR 20100075116A
Authority
KR
South Korea
Prior art keywords
processor
state
command
processes
received
Prior art date
Application number
KR1020080133735A
Other languages
English (en)
Other versions
KR101085393B1 (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 KR1020080133735A priority Critical patent/KR101085393B1/ko
Publication of KR20100075116A publication Critical patent/KR20100075116A/ko
Application granted granted Critical
Publication of KR101085393B1 publication Critical patent/KR101085393B1/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

호스트 프로세서에서 실행되는 복수의 프로세스를 멀티태스킹하기 위해, 각각의 프로세스마다 대응되는 상태를 설정하여 복수의 프로세스에 대응되는 명령들을 실행하는 전용 프로세스의 명령 처리 방법 및 장치가 개시된다.
프로세스, 멀티태스킹, 단일 코어, DSP

Description

복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및 장치{Method and apparatus for executing command to multitasking a plurality of process}
본 발명은 호스트 프로세서가 실행하고 있는 복수의 프로세스를 멀티태스킹하기 위한 전용 프로세서의 명령 실행 방법 및 장치에 관한 것이고, 보다 상세히는 단일 코어의 프로세서가 외부의 호스트 프로세서로부터 복수의 프로세스에 대응되는 명령들을 수신하여 실행하는 방법 및 장치에 관한 것이다.
최근 대부분의 멀티미디어 기기들은 멀티미디어와 관련된 프로세스의 처리를 위한 전용 프로세서인 DSP(Digital Signal Processor)를 구비한다. 음성, 영상 등과 같은 멀티미디어와 관련된 프로세스의 전용 처리를 위해 호스트 프로세서 이외에 별도의 전용 프로세서를 구비한다.
DSP의 경우 비용상의 문제로 인해 단일 코어로 구성하는 경우가 있으며, 이 경우 호스트 프로세서가 복수의 프로세스를 멀티태스킹할 때, 단일 코어 DSP는 멀티태스킹을 할 수 없어 전체 시스템의 성능이 저하되는 경우가 있다. 도 1을 참조하여 상세히 설명한다.
도 1은 종래 기술에 따른 호스트 프로세서 및 단일 코어 DSP를 이용한 복수 의 프로세스를 실행하는 시스템을 도시한다.
도 1을 참조하면, 호스트 프로세서(120)에서 실행 중인 복수의 프로세스(130 내지 134)에 대응되는 명령들은 단일 코어 DSP(110)에서 실행된다. 이 경우 호스트 프로세서(120)가 복수의 프로세스(130 내지 134)를 멀티태스킹할 때, 단일 코어 DSP(110)는 명령들을 멀티태스킹할 수 없다. DSP(110)에 타이머(timer)가 존재하여 멀티태스킹 동작이 가능하도록 지원하거나, RTOS(real time Operating System) 등의 멀티태스킹을 지원하는 OS가 있는 경우에는 단일 코어 DSP(110)도 복수의 프로세스에 대응되는 명령들을 동시에 처리할 수 있으나, 비용 상의 이유로 타이머가 존재하지 않고 RTOS를 운영 시스템으로 사용하지도 못하는 경우에 단일 코어 DSP(110)는 하나의 프로세스에 대응되는 명령들을 모두 처리하고, 다 처리된 후에 다음 프로세스에 대응되는 명령들을 처리하는 방식으로 순차적으로 프로세스를 실행할 수 있을 뿐이며, 동시에 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 없다.
따라서, 호스트프로세서(120)의 DSP제어부(122)는 제1 프로세스(130)을 처리하는 동안에는 제2 프로세스(132) 및 제 n 프로세스(134)은 대기하도록 하여 순차적으로 프로세스를 실행한다.
이 경우 DSP(110) 하나 때문에 시스템 전체의 성능이 저하되며, 멀티태스킹이 적절히 수행되지 못함에 따라 시스템 사용자가 느끼는 서비스의 질(QoS : Quality of Service)도 현저히 저하될 수 있다.
본 발명이 해결하고자 하는 과제는 제2 프로세서, 즉 호스트 프로세서에서 실행되는 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 있는 제1 프로세서의 명령 실행 방법 및 장치를 제공하는데 있고, 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제1 프로세서가 명령을 실행하는 방법은 제2 프로세서부터 명령을 수신하는 단계; 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 단계; 상기 수신된 명령을 실행하는 단계; 및 상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 단계를 포함한다.
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서는 단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 한다.
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서의 상태는 상기 제1 프로세서의 내부 메모리의 상태 및 상기 명령과 관련된 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함한다.
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서의 상태를 복원하는 단계는 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기 초해 상기 수신된 명령과 관련된 제2 프로세서의 프로세스가 이전에 실행된 명령과 관련된 프로세스와 동일한지 판단하는 단계; 및 상기 판단 결과에 기초해 선택적으로 상기 수신된 명령을 실행하기 위한 제1 프로세서의 상태를 복원하는 단계를 포함한다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제2 프로세서가 복수의 프로세스를 실행하는 방법은 상기 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식별하기 위한 식별자들을 부가하는 단계; 및 상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 단계를 포함하고, 상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제1 프로세서는 제2 프로세서부터 명령을 수신하고, 수신된 명령을 큐잉하는 명령큐; 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 상태제어부; 및 상기 수신된 명령을 실행하는 명령실행부를 포함하고, 상기 상태제어부는 상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제2 프로세서는 복수의 프로세스를 실행하는 프로세스실행부; 및 상기 제2 프로세서에서 실행되는 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식 별하기 위한 식별자들을 부가하고, 상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 제1프로세서제어부를 포함하고, 상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위해 본 발명은 상기된 명령 실행 방법 및 프로세스 실행 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
본 발명에 따르면, RTOS를 OS로 이용하지 않고, 타이머도 구비하지 않는 전용 프로세서가 호스트 프로세서로부터 수신되는 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 있어 보다 저렴한 비용으로 효율적으로 멀티태스킹이 가능한 시스템을 구성할 수 있다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 제1 프로세서를 도시한다.
도 2를 참조하면, 본 발명에 따른 제1 프로세서(200)는 명령큐(210), 상태제어부(220) 및 명령실행부(230)를 포함한다. 제1 프로세서(200)는 호스트 프로세서인 제2 프로세서로부터 명령(command)들을 수신하여 처리하는 프로세서이며, 멀티 미디어와 관련된 프로세스같이 특정 종류의 프로세스와 관련된 명령들을 처리하는 전용 프로세서일 수 있다. 본 발명의 일 실시예에 따르면, 제1 프로세서(200)는 단일 코어 DSP(Digital Signal Processor)로서 타이머(Timer) 또는 RTOS(Real Time Operating System)와 같이 멀티태스킹을 위한 별도의 기능들을 구비하지 아니한 프로세서일 수 있다.
명령큐(210)는 제2 프로세서로부터 복수의 프로세스에 대응되는 명령들을 수신하여, 큐잉(queing)한다. 명령들을 수신하는 순서는 프로세스의 순서에 따르지 않는다. 예를 들어, 제1 프로세스에 대응되는 명령들을 모두 수신하고, 제2 프로세스에 대응되는 명령들을 수신하는 것이 아니라, 제1 프로세스에 대응되는 명령들을 전부 수신하기 이전에 제2 프로세스 또는 제3 프로세스에 대응되는 명령들을 수신할 수 있다. 도 3을 참조하여 상세히 설명한다.
도 3은 본 발명의 일 실시예에 따른 제2 프로세서 및 제2 프로세서의 명령 전송 방법을 도시한다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 제2 프로세서(300)는 프로세스실행부(310) 및 프로세서제어부(320)를 포함한다. 제2 프로세서(300)는 호스트 프로세서로서 예를 들어, ARM(Advanced RISC Machine) 프로세서일 수 있다. 프로세스실행부(310)는 복수의 프로세스를 실행한다. 복수의 프로세스를 멀티태스킹하여 동시에 실행한다.
프로세서제어부(320)는 복수의 프로세스(330 내지 334)에 대응되는 명령어들을 제1 프로세서(200)에 전송한다. 프로세스실행부(310)에서 멀티태스킹 중인 복 수의 프로세스에 대응되는 명령들을 제1 프로세서에 전송한다. 명령들을 전송하는 순서는 실행 중인 복수의 프로세스의 실행 순서에 따르지 아니한다.
도 3에 도시된 바와 같이, 제1 프로세스(330)에 대응되는 명령어 중 명령1 및 명령2를 먼저 전송하고, 그 다음 제2 프로세스(332)에 대응되는 명령어 중 명령 1 및 명령2를 전송한다. 제1 프로세스(330)에 대응되는 명령어들을 모두 전송한 후에 다음 프로세스인 제2 프로세스(332)에 대응되는 명령어들을 전송하는 것이 아니기 때문에 제1 프로세스(330)를 실행하는 동안 제2 프로세스(332)가 대기할 필요가 없다.
프로세서제어부(320)는 명령들을 제1 프로세서(200)에 전송함에 있어, 각각의 명령에 부가한다. 제1 프로세서(200)가 프로세스(330 내지 334)에 따라 구별하여 명령을 실행하게 하기 위해 식별자가 부가한다. 각각의 명령이 어떤 프로세스에 대응되는 명령인지를 나타내는 프로세스 식별자를 부가한다. 도 4a 및 4b를 참조하여 상세히 설명한다.
도 4a는 본 발명의 일 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.
도 4a를 참조하면, 프로세서제어부(320)는 제1 프로세서(200)에 명령을 전송할 때 각각의 명령(410)이 어떠한 프로세스에 대응되는 명령인지를 나타내는 식별자(420)를 부가하여 전송한다. 제2 프로세서(300)에서 실행 중인 복수의 프로세스들 각각에 식별자들을 할당하고, 할당된 식별자들을 각각의 프로세스에 대응되는 명령들에 부가한다.
도 4b는 본 발명의 또 다른 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.
도 4b를 참조하면, 프로세서제어부(320)가 각각의 명령(410)에 식별자(420)를 부가함에 있어, 보다 세분화된 복수의 식별자(422 및 424)를 부가할 수 있다. 복수의 식별자(422 및 424)를 이용해 명령과 관련된 프로세스를 보다 용이하게 식별할 수 있다.
제1 프로세서(200)가 DSP인 경우에 호스트 프로세서에서 실행 중인 프로세스들(330 내지 334)이 상이한 프로세스라 하더라도 DSP의 동일한 하드웨어 자원을 이용할 수 있다. 예를 들어, DSP의 동일한 하드웨어 자원 즉, 동일한 코덱을 이용하는 복수의 멀티미디어 프로세스가 있는 경우에 복수의 프로세스를 프로세스의 실행을 위해 이용되는 코덱을 기준으로 우선 식별하고, 다음으로 제1 프로세서(200)가 프로세스를 처리하기 위해 할당한 타임 슬롯(time slot)을 기준으로 프로세스를 식별할 수 있다. 이 경우 제1 식별자(422)는 타임 슬롯에 대한 식별자일 수 있고, 제2 식별자(424)는 코덱에 대한 식별자일 수 있다. 이와 같이 복수의 식별자를 사용하면, 동일한 코덱을 이용하는 복수의 프로세스일 경우에도 타임 슬롯이 상이하면 상이한 프로세스로 식별할 수 있고, 이러한 식별을 기초해 대응되는 제1 프로세서(200)의 상태를 설정하여 각각의 프로세스를 실행할 수 있게 된다.
다시 도 2를 참조하면, 제2 프로세서(300)의 프로세서제어부(320)로부터 프로세스를 식별하기 위한 식별자가 부가된 명령들을 수신한 제1 프로세서(200)는 수신된 명령들을 명령큐(210)에 큐잉한다. 명령들이 수신된 순서에 따라 차례로 명 령을 실행하기 위해 스택 등과 같은 내부 메모리에 명령들을 큐잉한다.
상태제어부(220)는 명령큐(210)에 큐잉된 명령들을 하나씩 수신하고, 수신된 명령에 부가된 식별자에 기초해 수신된 명령을 실행하기 위한 상태를 설정한다. 수신된 명령에 부가된 식별자에 기초해 현재 제1 프로세서(200)의 상태와 다른 제1 프로세서(200)의 상태를 설정할지 판단하고, 판단 결과에 기초해 선택적으로 제1 프로세서(200)의 상태를 재설정한다. 본 발명의 일 실시예에 따르면, 필요한 경우 외부메모리(400)에 저장된 제1 프로세서(200)의 상태에 대한 정보를 참조하여 수신된 명령을 실행하기 위한 제1 프로세서(200)의 상태를 설정할 수 있다.
수신된 명령이 이전 실행된 명령과 동일한 프로세스를 구별하기 위한 식별자가 동일한 경우 즉, 동일한 프로세스와 관련된 명령인 경우 제1 프로세서(200)의 현재 상태를 그대로 이용하여 명령을 실행하면 된다. 그러나, 수신된 명령이 이전 실행된 명령과 다른 프로세스와 관련된 명령인 경우 다른 상태를 설정할 필요가 있다.
제1 프로세서(200)의 상태는 명령을 처리하기 위해 참조하는 제1 프로세서(200)의 내부 메모리의 상태 및 프로세스를 처리하기 위한 제1 프로세서(200)의 설정값들을 포함할 수 있다. 제1 프로세서(200)가 수신된 명령을 처리하기 위해서 내부 메모리에 저장된 데이터를 참조하는 경우, 이러한 내부 메모리의 데이터가 제1 프로세서(200)가 설정해야 하는 내부 메모리의 상태일 수 있다. 또한, 제1 프로세서(200)의 실행 환경은 프로세스에 따라 상이할 수 있으므로, 현재 수신된 명령을 처리하기 위해 프로세스의 실행 환경을 설정하기 위한 설정값이 제1 프로세 서(200)의 상태일 수 있다.
예를 들어, H.264 코덱을 이용한 동영상의 인코딩 또는 디코딩과 관련하여 제1 프로세서의 내부 메모리에는 참조 픽처 또는 참조 블록에 대한 데이터가 존재해야 하므로, 이러한 참조 픽처 또는 참조 블록에 대한 데이터를 내부 메모리에 복원한다. 또한, H.264 코덱을 이용한 인코딩 또는 디코딩의 실행 환경을 설정하는데 필요한 영상의 해상도(resolution), 프레임율(frame rate)과 같은 설정값들도 복원한다.
이러한 제1 프로세서(200)의 상태는 프로세스마다 상이하다. 상이한 프로세스에 대응되는 명령들은 대응되는 제1 프로세서(200)의 상태를 기초로 제1 프로세서(200)에서 실행된다. 따라서, 도 1에 도시된 바와 같은 종래 기술에 따르면, 이미 실행 중인 프로세스(130)가 모두 실행될 때까지 나머지 프로세스들(132 내지 134)이 대기해야 한다. 다른 프로세스의 우선 순위가 이미 실행 중인 프로세스(130)보다 높은 경우에는 실행 중인 프로세스(130)의 실행을 위한 단일 코어 DSP(110)의 상태를 모두 초기화하고 새로운 프로세스를 실행시켜야 했다. 따라서, 우선 순위가 높은 프로세스를 모두 실행할 이후 실행 중이었던 프로세스(130)를 다시 실행하는 경우에 프로세스를 처음부터 다시 시작해야 했다.
그러나, 본 발명의 일 실시예에 따르면, 명령 단위로 대응되는 제1 프로세서(200)의 상태를 외부메모리(400)로부터 가져와 설정할 수 있기 때문에 실행 중이었던 프로세스를 중지하더라도, 처음부터 실행하지 아니하고, 중지된 이후의 명령부터 이어서 프로세스를 실행할 수 있다. 외부메모리(400)는 제1 프로세서(200)의 상태를 저장하는 저장소의 예시일 뿐이며, 제1 프로세서(200)의 상태를 저장하는 저장소는 이에 한정되지 아니한다. 예를 들어, 제1 프로세서(200)의 내부 메모리 일부를 제1 프로세서(200)의 상태를 저장하는데 이용할 수도 있다.
또한, 상태제어부(220)는 명령실행부(230)의 명령 실행 결과 제1 프로세서(200)의 상태를 저장할 필요가 있는 경우에 제1 프로세서(200)의 상태를 저장한다. 내부 메모리에 별도의 저장 공간을 할당하고 할당된 공간에 저장할 수도 있고, 도 2에 도시된 바와 같이 외부메모리(400)에 저장할 수도 있다. 저장되는 상태가 어떠한 프로세스에 대한 상태인지를 식별할 수 있도록 도 4a 또는 4b에 도시된 바와 같은 식별자와 함께 상태를 저장할 수 있다. 각각의 명령을 실행하여 상태의 변경이 생길 때마다 제1 프로세서(200)의 상태를 저장할 수도 있고, 수신된 명령을 실행하기 전에 이전 명령과 관련된 프로세스와 수신된 명령과 관련된 프로세스가 동일한지 판단하여 제1 프로세서(200)의 상태를 저장할 수도 있다.
명령실행부(230)는 상태제어부(220)에서 설정된 제1 프로세서(200)의 상태에 기초해 명령을 실행한다.
도 5a는 본 발명의 일 실시예에 따른 제1 프로세서(200)의 명령 실행 방법을 설명하기 위한 흐름도이다.
도 5a를 참조하면, 단계 510에서 제1 프로세서(200)는 제2 프로세서(300)로부터 명령을 수신한다. 제2 프로세서(300)에서 실행 중인 복수의 프로세스에 대응되는 명령들을 하나씩 수신한다. 명령들을 수신하는 순서는 도 3과 관련하여 전술하였다. 제2 프로세서(300)에서 실행되는 복수의 프로세스를 식별하기 위해 각각 의 프로세스에 부가된 식별자도 명령과 함께 수신한다. 제1 프로세서(200)는 단일 코어 DSP와 같은 전용 프로세서일 수 있으며, 제2 프로세서는 ARM 프로세서와 같은 호스트 프로세서일 수 있음은 전술하였다.
단계 512에서 제1 프로세서(200)는 단계 510에서 수신된 식별자에 기초해 수신된 명령을 실행하기 위한 제1 프로세서의 상태를 설정한다. 식별자는 단계 510에서 수신된 각각의 명령을 프로세스에 따라 구분하기 위한 식별자이다. 따라서, 식별자에 기초해 프로세스마다 대응되는 제1 프로세서(200)의 상태를 설정하며, 필요한 경우 외부 메모리(400)에 저장된 상태 정보를 참조할 수 있다.
단계 514에서 제1 프로세서(200)는 수신된 명령을 단계 512에서 복원된 제1 프로세서(200)의 상태에 기초해 실행한다.
단계 516에서 제1 프로세서(200)는 수신된 명령의 실행에 따라 변경된 제1 프로세서(200)의 상태를 저장한다, 소정의 외부 메모리에 현재 제1 프로세서(200)의 상태를 저장한다.
도 5b는 본 발명의 또 다른 일 실시예에 따른 제1 프로세서(200)의 명령 실행 방법을 설명하기 위한 흐름도이다.
도 5b를 참조하면, 단계 520에서 제1 프로세서(200)는 제2 프로세서(300)로부터 명령을 수신한다. 도 5a에 도시된 단계 510에 대응되는 단계이다.
단계 522에서 제1 프로세서(200)는 단계 520에서 수신된 명령이 새로운 프로세스의 최초 명령인지 판단한다. 이전에 실행한 프로세스가 아닌 새로운 프로세스의 최초 명령인지 판단한다.
단계 522의 판단결과 수신된 명령이 새로운 프로세스의 최초 명령으로 판단되면, 단계 524에서 제1 프로세서(200)는 현재 제1 프로세서의 상태를 저장한다. 최초 명령이므로 제1 프로세서(200)의 상태의 복원이 아닌 초기화가 수행된다. 이를 위해 우선 이전 처리된 명령과 관련된 프로세스를 나중에 다시 실행하기 위해 현재 제1 프로세서(200)의 상태를 외부 메모리(400)에 저장한다. 그런 다음, 단계 526에서 제1 프로세서(200)는 새로운 프로세스의 식별자를 등록하고, 제1 프로세서(200)의 상태를 초기화한다. 새로운 프로세스를 실행하기 위한 상태로 초기화한다.
단계 522의 판단결과 수신된 명령이 새로운 프로세스의 최초 명령이 아닌 것으로 판단되면, 단계 528 내지 532를 통해 제1 프로세스의 상태를 복원한다.
단계 528에서 제1 프로세서(200)는 수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일한지 판단한다. 수신된 명령에 부가된 프로세스 식별자와 이전 명령의 프로세스 식별자를 비교하여 동일한지 판단한다.
수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일하다면, 현재 제1 프로세서(200)의 상태를 그대로 이용해 명령을 실행하면 되므로, 제1 프로세서(200)의 상태를 복원할 필요는 없으며, 단계 534에서 수신된 명령을 실행한다.
그러나, 수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일하지 않다면, 단계 530에서 현재 제1 프로세서(200)의 상태를 외부 메모리(400)에 저장한다. 그런 다음 단계 532에서 수신된 명령을 실행하기 위한 상태 를 복원한다. 수신된 명령에 부가되어 있는 프로세스 식별자에 기초해 외부 메모리(400)에 저장되어 있는 제1 프로세서(200)의 상태를 복원한다. 상태가 복원되면 단계 534에서 복원된 상태에 기초해 수신된 명령을 실행한다.
수신된 명령의 실행이 모두 완료되면, 제1 프로세서(200)는 단계 536에서 실행된 명령이 프로세스의 최후 명령인지 판단한다. 최후 명령이 아닌 것으로 판단되면, 단계 520에서 다시 제2 프로세서로부터 명령을 수신한다.
단계 536에서 수신된 명령이 프로세스의 최후 명령인 것으로 판단되면, 단계 538에서 제1 프로세서(200)는 종료되지 않은 다른 프로세스가 있는지 판단한다. 다른 프로세스가 있다면, 종료되지 않은 다른 프로세스에 대응되는 명령을 제2 프로세서로부터 수신하여 실행을 계속한다.
도 6은 본 발명의 일 실시예에 따른 제2 프로세서(300)가 제1 프로세서에 명령을 전송하는 방법을 설명하기 위한 흐름도이다.
도 6을 참조하면, 단계 610에서 제2 프로세서(300)는 실행 중인 프로세스에 대응되는 명령들 각각에 프로세스 식별자들을 부가한다. 제1 프로세스에 대응되는 명령에는 제1 프로세스의 프로세스 식별자를 부가하고, 제2 프로세스에 대응되는 명령에는 제2 프로세스의 프로세스 식별자를 부가한다. 프로세스 식별자와 관련하여서는 도 4a 및 4b와 관련하여 전술하였다.
단계 620에서 제2 프로세서(300)는 프로세스 식별자들이 부가된 명령들을 제1 프로세서에 전송한다. 명령들을 소정의 순서에 따라 제1 프로세서(200)에 전송하는데 이 순서는 프로세스의 우선 순위와 일치하지 않음은 전술하였다. 예를 들 어, 제1 프로세스에 대응되는 명령들을 모두 전송하기 이전에 제2 프로세스에 대응되는 명령들을 전송할 수 있다. 이와 관련된 상세한 설명은 도 3과 관련하여 전술하였다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다. 또한, 본 발명에 따른 시스템은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
도 1은 종래 기술에 따른 호스트 프로세서 및 단일 코어 DSP를 이용한 복수의 프로세스를 실행하는 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른 제1 프로세서를 도시한다.
도 3은 본 발명의 일 실시예에 따른 제2 프로세서 및 제2 프로세서의 명령 전송 방법을 도시한다.
도 4a는 본 발명의 일 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.
도 4b는 본 발명의 또 다른 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.
도 5a는 본 발명의 일 실시예에 따른 제1 프로세서의 명령 실행 방법을 설명하기 위한 흐름도이다.
도 5b는 본 발명의 또 다른 일 실시예에 따른 제1 프로세서의 명령 실행 방법을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 제2 프로세서가 제1 프로세서에 명령을 전송하는 방법을 설명하기 위한 흐름도이다.

Claims (16)

  1. 제1 프로세서가 명령을 실행하는 방법에 있어서,
    제2 프로세서부터 명령을 수신하는 단계;
    상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 단계;
    상기 수신된 명령을 실행하는 단계; 및
    상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 단계를 포함하는 것을 특징으로 하는 명령 실행 방법.
  2. 제 1 항에 있어서, 상기 제1 프로세서는
    단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 하는 명령 실행 방법.
  3. 제 2 항에 있어서, 상기 제1 프로세서의 상태는
    상기 제1 프로세서의 내부 메모리의 상태 및 상기 명령과 관련된 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함하는 것을 특징으로 하는 명령 실행 방법.
  4. 제 2 항에 있어서, 상기 프로세스 식별자는
    상기 제2 프로세서에서 실행 중인 복수의 프로세스를 각각 식별하기 위한 식별자인 것을 특징으로 하는 명령 실행 방법.
  5. 제 2 항에 있어서, 상기 제1 프로세서의 상태를 복원하는 단계는
    상기 수신된 명령이 새로운 프로세스의 최초 명령인지 판단하는 단계; 및
    상기 판단 결과에 따라 선택적으로 상기 제1 프로세서의 상태를 복원하는 단계를 포함하는 것을 특징으로 하는 명령 실행 방법.
  6. 제 2 항에 있어서, 상기 제1 프로세서의 상태를 복원하는 단계는
    상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초하여, 상기 수신된 명령과 관련된 제2 프로세서의 프로세스가 이전에 실행된 명령과 관련된 프로세스와 동일한지 판단하는 단계; 및
    상기 판단 결과에 기초해 선택적으로 상기 수신된 명령을 실행하기 위한 제1 프로세서의 상태를 복원하는 단계를 포함하는 것을 특징으로 하는 명령 실행 방법.
  7. 제2 프로세서가 복수의 프로세스를 실행하는 방법에 있어서,
    상기 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식별하기 위한 식별자들을 부가하는 단계; 및
    상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 단계를 포함하고,
    상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 하는 프로세스 실행 방법.
  8. 제 7 항에 있어서, 상기 제1 프로세서는
    단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 하는 프로세스 실행 방법.
  9. 제 8 항에 있어서, 상기 제1 프로세서의 상태는
    상기 제1 프로세서의 내부 메모리의 상태 및 상기 각각의 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함하는 것을 특징으로 하는 프로세스 실행 방법.
  10. 제1 프로세서에 있어서,
    제2 프로세서부터 명령을 수신하고, 수신된 명령을 큐잉하는 명령큐;
    상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 상태제어부; 및
    상기 수신된 명령을 실행하는 명령실행부를 포함하고,
    상기 상태제어부는 상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 것을 특징으로 하는 프로세서.
  11. 제 10 항에 있어서, 상기 제1 프로세서는
    단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 하는 프로세서.
  12. 제 11 항에 있어서, 상기 제1 프로세서의 상태는
    상기 제1 프로세서의 내부 메모리의 상태 및 상기 명령과 관련된 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함하는 것을 특징으로 하는 프로세서.
  13. 제2 프로세서에 있어서,
    복수의 프로세스를 실행하는 프로세스실행부; 및
    상기 제2 프로세서에서 실행되는 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식별하기 위한 식별자들을 부가하고, 상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 프로세서제어부를 포함하고,
    상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 하는 프로세서.
  14. 제 13 항에 있어서, 상기 제1 프로세서는
    단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 하는 프로세서.
  15. 제 14 항에 있어서, 상기 제1 프로세서의 상태는
    상기 제1 프로세서의 내부 메모리의 상태 및 상기 명령과 관련된 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함하는 것을 특징으로 하는 프로세서.
  16. 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1020080133735A 2008-12-24 2008-12-24 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치 KR101085393B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080133735A KR101085393B1 (ko) 2008-12-24 2008-12-24 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080133735A KR101085393B1 (ko) 2008-12-24 2008-12-24 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치

Publications (2)

Publication Number Publication Date
KR20100075116A true KR20100075116A (ko) 2010-07-02
KR101085393B1 KR101085393B1 (ko) 2011-11-21

Family

ID=42637552

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080133735A KR101085393B1 (ko) 2008-12-24 2008-12-24 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치

Country Status (1)

Country Link
KR (1) KR101085393B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160076896A (ko) * 2014-12-23 2016-07-01 삼성전자주식회사 선점 방식을 선택하는 방법 및 장치.
KR20190111714A (ko) * 2018-03-22 2019-10-02 도시바 메모리 가부시키가이샤 스토리지 디바이스 및 컴퓨터 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4063651B2 (ja) 2002-12-12 2008-03-19 富士通株式会社 ジョブスケジューリング方法および装置
US20070083870A1 (en) 2005-07-29 2007-04-12 Tomochika Kanakogi Methods and apparatus for task sharing among a plurality of processors
JP2007047968A (ja) 2005-08-09 2007-02-22 Olympus Corp マルチプロセッサシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160076896A (ko) * 2014-12-23 2016-07-01 삼성전자주식회사 선점 방식을 선택하는 방법 및 장치.
KR20190111714A (ko) * 2018-03-22 2019-10-02 도시바 메모리 가부시키가이샤 스토리지 디바이스 및 컴퓨터 시스템

Also Published As

Publication number Publication date
KR101085393B1 (ko) 2011-11-21

Similar Documents

Publication Publication Date Title
US10810051B1 (en) Autoscaling using file access or cache usage for cluster machines
US11294714B2 (en) Method and apparatus for scheduling task, device and medium
US8863123B2 (en) Apparatus and method for virtualizing input/output devices using shared memory in host-based mobile terminal virtualization environment
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
US10846124B2 (en) Communication method, apparatus and system for virtual machine and host machine
US8352946B2 (en) Managing migration ready queue associated with each processor based on the migration ready status of the tasks
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
US8886862B2 (en) Virtualization of interrupts
US20170329655A1 (en) Method and apparatus of unloading out of memory processing flow to user space
CN111274019A (zh) 一种数据处理方法、装置及计算机可读存储介质
US11210127B2 (en) Method and apparatus for processing request
US10523746B2 (en) Coexistence of a synchronous architecture and an asynchronous architecture in a server
US9055129B2 (en) Automation framework to remotely control devices and process asynchronous events
KR101085393B1 (ko) 복수의 프로세스를 멀티태스킹하기 위한 명령 실행 방법 및장치
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN111310638A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN114138371B (zh) 配置动态加载方法、装置及计算机设备、存储介质
US8762615B2 (en) Dequeue operation using mask vector to manage input/output interruptions
US8099531B2 (en) Information processing method and computer program comprising network card wherein a plurality of processors switches use of network card related to setting of resource flag
CN113032098B (zh) 一种虚拟机调度方法、装置、设备及可读存储介质
US11307974B2 (en) Horizontally scalable distributed system for automated firmware testing and method thereof
CN110764710A (zh) 低延迟高iops的数据访问方法与存储系统
CN112748883A (zh) 一种io请求流水线处理设备、方法、系统及存储介质
CN113296972A (zh) 一种信息的注册方法、计算设备及存储介质
US20120296951A1 (en) System and method to execute steps of an application function asynchronously

Legal Events

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

Payment date: 20141007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160602

Year of fee payment: 5

R401 Registration of restoration
FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee