KR101085393B1 - Method and apparatus for executing command to multitasking a plurality of process - Google Patents
Method and apparatus for executing command to multitasking a plurality of process Download PDFInfo
- Publication number
- KR101085393B1 KR101085393B1 KR1020080133735A KR20080133735A KR101085393B1 KR 101085393 B1 KR101085393 B1 KR 101085393B1 KR 1020080133735 A KR1020080133735 A KR 1020080133735A KR 20080133735 A KR20080133735 A KR 20080133735A KR 101085393 B1 KR101085393 B1 KR 101085393B1
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- state
- processes
- command
- instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 206
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction 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
호스트 프로세서에서 실행되는 복수의 프로세스를 멀티태스킹하기 위해, 각각의 프로세스마다 대응되는 상태를 설정하여 복수의 프로세스에 대응되는 명령들을 실행하는 전용 프로세스의 명령 처리 방법 및 장치가 개시된다. In order to multitask a plurality of processes executed in a host processor, a method and apparatus for processing instructions for a dedicated process for executing instructions corresponding to a plurality of processes by setting a state corresponding to each process is disclosed.
프로세스, 멀티태스킹, 단일 코어, DSP Process, Multitasking, Single Core, DSP
Description
본 발명은 호스트 프로세서가 실행하고 있는 복수의 프로세스를 멀티태스킹하기 위한 전용 프로세서의 명령 실행 방법 및 장치에 관한 것이고, 보다 상세히는 단일 코어의 프로세서가 외부의 호스트 프로세서로부터 복수의 프로세스에 대응되는 명령들을 수신하여 실행하는 방법 및 장치에 관한 것이다.The present invention relates to a method and an apparatus for executing instructions of a dedicated processor for multitasking a plurality of processes executed by a host processor. More particularly, a single core processor may execute instructions corresponding to a plurality of processes from an external host processor. A method and apparatus for receiving and executing.
최근 대부분의 멀티미디어 기기들은 멀티미디어와 관련된 프로세스의 처리를 위한 전용 프로세서인 DSP(Digital Signal Processor)를 구비한다. 음성, 영상 등과 같은 멀티미디어와 관련된 프로세스의 전용 처리를 위해 호스트 프로세서 이외에 별도의 전용 프로세서를 구비한다. Recently, most multimedia devices have a DSP (Digital Signal Processor), which is a dedicated processor for processing a multimedia related process. A separate dedicated processor is provided in addition to the host processor for dedicated processing of multimedia related processes such as audio and video.
DSP의 경우 비용상의 문제로 인해 단일 코어로 구성하는 경우가 있으며, 이 경우 호스트 프로세서가 복수의 프로세스를 멀티태스킹할 때, 단일 코어 DSP는 멀티태스킹을 할 수 없어 전체 시스템의 성능이 저하되는 경우가 있다. 도 1을 참조하여 상세히 설명한다. In the case of DSP, there is a case in which a single core is configured due to a cost problem. In this case, when a host processor multitasks a plurality of processes, the single core DSP cannot multitask and thus degrades the performance of the entire system. have. This will be described in detail with reference to FIG. 1.
도 1은 종래 기술에 따른 호스트 프로세서 및 단일 코어 DSP를 이용한 복수 의 프로세스를 실행하는 시스템을 도시한다.1 illustrates a system for executing a plurality of processes using a host processor and a single core DSP according to the prior art.
도 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)는 하나의 프로세스에 대응되는 명령들을 모두 처리하고, 다 처리된 후에 다음 프로세스에 대응되는 명령들을 처리하는 방식으로 순차적으로 프로세스를 실행할 수 있을 뿐이며, 동시에 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 없다.Referring to FIG. 1, instructions corresponding to a plurality of processes 130 to 134 running in the
따라서, 호스트프로세서(120)의 DSP제어부(122)는 제1 프로세스(130)을 처리하는 동안에는 제2 프로세스(132) 및 제 n 프로세스(134)은 대기하도록 하여 순차적으로 프로세스를 실행한다. Accordingly, the
이 경우 DSP(110) 하나 때문에 시스템 전체의 성능이 저하되며, 멀티태스킹이 적절히 수행되지 못함에 따라 시스템 사용자가 느끼는 서비스의 질(QoS : Quality of Service)도 현저히 저하될 수 있다.In this case, the performance of the entire system is degraded due to one
본 발명이 해결하고자 하는 과제는 제2 프로세서, 즉 호스트 프로세서에서 실행되는 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 있는 제1 프로세서의 명령 실행 방법 및 장치를 제공하는데 있고, 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 있다.An object of the present invention is to provide a method and apparatus for executing instructions of a first processor capable of multitasking instructions corresponding to a plurality of processes executed in a second processor, that is, a host processor. A computer readable recording medium having recorded thereon a program is provided.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제1 프로세서가 명령을 실행하는 방법은 제2 프로세서부터 명령을 수신하는 단계; 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 단계; 상기 수신된 명령을 실행하는 단계; 및 상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 단계를 포함한다.According to an aspect of the present invention, there is provided a method of executing a command by a first processor, the method comprising: receiving a command from a second processor; Setting a state of the first processor to execute the received command based on an identifier for identifying a process added to the received command; Executing the received command; And storing a state of the first processor changed as the command is executed.
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서는 단일 코어 DSP(Digital Signal Processor)인 것을 특징으로 한다.According to a more preferred embodiment of the present invention, the first processor is characterized in that the single core DSP (Digital Signal Processor).
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서의 상태는 상기 제1 프로세서의 내부 메모리의 상태 및 상기 명령과 관련된 프로세스를 처리하기 위한 상기 제1 프로세서의 설정값 중 적어도 하나를 포함한다.According to a more preferred embodiment of the present invention, the state of the first processor includes at least one of a state of an internal memory of the first processor and a setting value of the first processor for processing a process related to the instruction.
본 발명의 보다 바람직한 실시예에 따르면, 상기 제1 프로세서의 상태를 복원하는 단계는 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기 초해 상기 수신된 명령과 관련된 제2 프로세서의 프로세스가 이전에 실행된 명령과 관련된 프로세스와 동일한지 판단하는 단계; 및 상기 판단 결과에 기초해 선택적으로 상기 수신된 명령을 실행하기 위한 제1 프로세서의 상태를 복원하는 단계를 포함한다.According to a more preferred embodiment of the present invention, restoring the state of the first processor is based on an identifier for distinguishing a process added to the received instruction, whereby a process of a second processor associated with the received instruction is transferred. Determining whether it is the same as a process associated with an instruction executed in a; And restoring a state of a first processor to selectively execute the received instruction based on the determination result.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제2 프로세서가 복수의 프로세스를 실행하는 방법은 상기 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식별하기 위한 식별자들을 부가하는 단계; 및 상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 단계를 포함하고, 상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 한다.According to an embodiment of the present disclosure, a method for executing a plurality of processes by a second processor includes adding identifiers for identifying each of the plurality of processes to each of the instructions corresponding to the plurality of processes. Making; And transmitting the instructions to which the identifiers are added to a first processor in a predetermined order, wherein the first processor sets a state of a first processor corresponding to each process based on the identifiers, And execute the received commands based on the set state.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제1 프로세서는 제2 프로세서부터 명령을 수신하고, 수신된 명령을 큐잉하는 명령큐; 상기 수신된 명령에 부가된 프로세스를 구별하기 위한 식별자에 기초해 상기 수신된 명령을 실행하기 위한 상기 제1 프로세서의 상태를 설정하는 상태제어부; 및 상기 수신된 명령을 실행하는 명령실행부를 포함하고, 상기 상태제어부는 상기 명령을 실행함에 따라 변경된 상기 제1 프로세서의 상태를 저장하는 것을 특징으로 한다.According to an aspect of the present invention, there is provided a first processor including an instruction queue configured to receive a command from a second processor and to queue the received instruction; A state controller configured to set a state of the first processor to execute the received command based on an identifier for identifying a process added to the received command; And a command execution unit that executes the received command, wherein the state control unit stores the state of the first processor changed as the command is executed.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 제2 프로세서는 복수의 프로세스를 실행하는 프로세스실행부; 및 상기 제2 프로세서에서 실행되는 복수의 프로세스에 대응되는 명령들 각각에 상기 복수의 프로세스 각각을 식 별하기 위한 식별자들을 부가하고, 상기 식별자들이 부가된 명령들을 소정의 순서에 따라 제1 프로세서에 전송하는 제1프로세서제어부를 포함하고, 상기 제1 프로세서는 상기 식별자들에 기초해 각각의 프로세스마다 대응되는 제1 프로세서의 상태를 설정하고, 설정된 상태에 기초해 상기 수신된 명령들을 실행하는 것을 특징으로 한다.According to an aspect of the present invention, there is provided a second processor including a process execution unit configured to execute a plurality of processes; And an identifier for identifying each of the plurality of processes to each of instructions corresponding to the plurality of processes executed in the second processor, and transmitting the instructions with the identifiers to the first processor in a predetermined order. And a first processor controller configured to set a state of a first processor corresponding to each process based on the identifiers, and execute the received instructions based on the set state. do.
상기 기술적 과제를 해결하기 위해 본 발명은 상기된 명령 실행 방법 및 프로세스 실행 방법을 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다. In order to solve the above technical problem, the present invention provides a computer-readable recording medium having recorded thereon a program for executing the above-described command execution method and process execution method.
본 발명에 따르면, RTOS를 OS로 이용하지 않고, 타이머도 구비하지 않는 전용 프로세서가 호스트 프로세서로부터 수신되는 복수의 프로세스에 대응되는 명령들을 멀티태스킹할 수 있어 보다 저렴한 비용으로 효율적으로 멀티태스킹이 가능한 시스템을 구성할 수 있다.According to the present invention, a dedicated processor that does not use an RTOS as an OS and does not have a timer can multitask instructions corresponding to a plurality of processes received from a host processor, thereby enabling efficient multitasking at a lower cost. Can be configured.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 2는 본 발명의 일 실시예에 따른 제1 프로세서를 도시한다.2 illustrates a first processor according to an embodiment of the present invention.
도 2를 참조하면, 본 발명에 따른 제1 프로세서(200)는 명령큐(210), 상태제어부(220) 및 명령실행부(230)를 포함한다. 제1 프로세서(200)는 호스트 프로세서인 제2 프로세서로부터 명령(command)들을 수신하여 처리하는 프로세서이며, 멀티 미디어와 관련된 프로세스같이 특정 종류의 프로세스와 관련된 명령들을 처리하는 전용 프로세서일 수 있다. 본 발명의 일 실시예에 따르면, 제1 프로세서(200)는 단일 코어 DSP(Digital Signal Processor)로서 타이머(Timer) 또는 RTOS(Real Time Operating System)와 같이 멀티태스킹을 위한 별도의 기능들을 구비하지 아니한 프로세서일 수 있다. 2, the
명령큐(210)는 제2 프로세서로부터 복수의 프로세스에 대응되는 명령들을 수신하여, 큐잉(queing)한다. 명령들을 수신하는 순서는 프로세스의 순서에 따르지 않는다. 예를 들어, 제1 프로세스에 대응되는 명령들을 모두 수신하고, 제2 프로세스에 대응되는 명령들을 수신하는 것이 아니라, 제1 프로세스에 대응되는 명령들을 전부 수신하기 이전에 제2 프로세스 또는 제3 프로세스에 대응되는 명령들을 수신할 수 있다. 도 3을 참조하여 상세히 설명한다.The
도 3은 본 발명의 일 실시예에 따른 제2 프로세서 및 제2 프로세서의 명령 전송 방법을 도시한다. 3 illustrates a second processor and a method of transmitting a command of a second processor according to an embodiment of the present invention.
도 3을 참조하면, 본 발명의 일 실시예에 따른 제2 프로세서(300)는 프로세스실행부(310) 및 프로세서제어부(320)를 포함한다. 제2 프로세서(300)는 호스트 프로세서로서 예를 들어, ARM(Advanced RISC Machine) 프로세서일 수 있다. 프로세스실행부(310)는 복수의 프로세스를 실행한다. 복수의 프로세스를 멀티태스킹하여 동시에 실행한다. Referring to FIG. 3, the
프로세서제어부(320)는 복수의 프로세스(330 내지 334)에 대응되는 명령어들을 제1 프로세서(200)에 전송한다. 프로세스실행부(310)에서 멀티태스킹 중인 복 수의 프로세스에 대응되는 명령들을 제1 프로세서에 전송한다. 명령들을 전송하는 순서는 실행 중인 복수의 프로세스의 실행 순서에 따르지 아니한다. The
도 3에 도시된 바와 같이, 제1 프로세스(330)에 대응되는 명령어 중 명령1 및 명령2를 먼저 전송하고, 그 다음 제2 프로세스(332)에 대응되는 명령어 중 명령 1 및 명령2를 전송한다. 제1 프로세스(330)에 대응되는 명령어들을 모두 전송한 후에 다음 프로세스인 제2 프로세스(332)에 대응되는 명령어들을 전송하는 것이 아니기 때문에 제1 프로세스(330)를 실행하는 동안 제2 프로세스(332)가 대기할 필요가 없다. As shown in FIG. 3,
프로세서제어부(320)는 명령들을 제1 프로세서(200)에 전송함에 있어, 각각의 명령에 부가한다. 제1 프로세서(200)가 프로세스(330 내지 334)에 따라 구별하여 명령을 실행하게 하기 위해 식별자가 부가한다. 각각의 명령이 어떤 프로세스에 대응되는 명령인지를 나타내는 프로세스 식별자를 부가한다. 도 4a 및 4b를 참조하여 상세히 설명한다. The
도 4a는 본 발명의 일 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.4A illustrates an identifier for identifying processes that are multitasking in accordance with one embodiment of the present invention.
도 4a를 참조하면, 프로세서제어부(320)는 제1 프로세서(200)에 명령을 전송할 때 각각의 명령(410)이 어떠한 프로세스에 대응되는 명령인지를 나타내는 식별자(420)를 부가하여 전송한다. 제2 프로세서(300)에서 실행 중인 복수의 프로세스들 각각에 식별자들을 할당하고, 할당된 식별자들을 각각의 프로세스에 대응되는 명령들에 부가한다.Referring to FIG. 4A, when transmitting a command to the
도 4b는 본 발명의 또 다른 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.4B illustrates an identifier for identifying processes that are multitasking in accordance with another embodiment of the present invention.
도 4b를 참조하면, 프로세서제어부(320)가 각각의 명령(410)에 식별자(420)를 부가함에 있어, 보다 세분화된 복수의 식별자(422 및 424)를 부가할 수 있다. 복수의 식별자(422 및 424)를 이용해 명령과 관련된 프로세스를 보다 용이하게 식별할 수 있다. Referring to FIG. 4B, when the
제1 프로세서(200)가 DSP인 경우에 호스트 프로세서에서 실행 중인 프로세스들(330 내지 334)이 상이한 프로세스라 하더라도 DSP의 동일한 하드웨어 자원을 이용할 수 있다. 예를 들어, DSP의 동일한 하드웨어 자원 즉, 동일한 코덱을 이용하는 복수의 멀티미디어 프로세스가 있는 경우에 복수의 프로세스를 프로세스의 실행을 위해 이용되는 코덱을 기준으로 우선 식별하고, 다음으로 제1 프로세서(200)가 프로세스를 처리하기 위해 할당한 타임 슬롯(time slot)을 기준으로 프로세스를 식별할 수 있다. 이 경우 제1 식별자(422)는 타임 슬롯에 대한 식별자일 수 있고, 제2 식별자(424)는 코덱에 대한 식별자일 수 있다. 이와 같이 복수의 식별자를 사용하면, 동일한 코덱을 이용하는 복수의 프로세스일 경우에도 타임 슬롯이 상이하면 상이한 프로세스로 식별할 수 있고, 이러한 식별을 기초해 대응되는 제1 프로세서(200)의 상태를 설정하여 각각의 프로세스를 실행할 수 있게 된다. When the
다시 도 2를 참조하면, 제2 프로세서(300)의 프로세서제어부(320)로부터 프로세스를 식별하기 위한 식별자가 부가된 명령들을 수신한 제1 프로세서(200)는 수신된 명령들을 명령큐(210)에 큐잉한다. 명령들이 수신된 순서에 따라 차례로 명 령을 실행하기 위해 스택 등과 같은 내부 메모리에 명령들을 큐잉한다. Referring to FIG. 2 again, the
상태제어부(220)는 명령큐(210)에 큐잉된 명령들을 하나씩 수신하고, 수신된 명령에 부가된 식별자에 기초해 수신된 명령을 실행하기 위한 상태를 설정한다. 수신된 명령에 부가된 식별자에 기초해 현재 제1 프로세서(200)의 상태와 다른 제1 프로세서(200)의 상태를 설정할지 판단하고, 판단 결과에 기초해 선택적으로 제1 프로세서(200)의 상태를 재설정한다. 본 발명의 일 실시예에 따르면, 필요한 경우 외부메모리(400)에 저장된 제1 프로세서(200)의 상태에 대한 정보를 참조하여 수신된 명령을 실행하기 위한 제1 프로세서(200)의 상태를 설정할 수 있다. The
수신된 명령이 이전 실행된 명령과 동일한 프로세스를 구별하기 위한 식별자가 동일한 경우 즉, 동일한 프로세스와 관련된 명령인 경우 제1 프로세서(200)의 현재 상태를 그대로 이용하여 명령을 실행하면 된다. 그러나, 수신된 명령이 이전 실행된 명령과 다른 프로세스와 관련된 명령인 경우 다른 상태를 설정할 필요가 있다. When the received command is the same identifier for distinguishing the same process as the previously executed command, that is, the command related to the same process, the command may be executed using the current state of the
제1 프로세서(200)의 상태는 명령을 처리하기 위해 참조하는 제1 프로세서(200)의 내부 메모리의 상태 및 프로세스를 처리하기 위한 제1 프로세서(200)의 설정값들을 포함할 수 있다. 제1 프로세서(200)가 수신된 명령을 처리하기 위해서 내부 메모리에 저장된 데이터를 참조하는 경우, 이러한 내부 메모리의 데이터가 제1 프로세서(200)가 설정해야 하는 내부 메모리의 상태일 수 있다. 또한, 제1 프로세서(200)의 실행 환경은 프로세스에 따라 상이할 수 있으므로, 현재 수신된 명령을 처리하기 위해 프로세스의 실행 환경을 설정하기 위한 설정값이 제1 프로세 서(200)의 상태일 수 있다. The state of the
예를 들어, H.264 코덱을 이용한 동영상의 인코딩 또는 디코딩과 관련하여 제1 프로세서의 내부 메모리에는 참조 픽처 또는 참조 블록에 대한 데이터가 존재해야 하므로, 이러한 참조 픽처 또는 참조 블록에 대한 데이터를 내부 메모리에 복원한다. 또한, H.264 코덱을 이용한 인코딩 또는 디코딩의 실행 환경을 설정하는데 필요한 영상의 해상도(resolution), 프레임율(frame rate)과 같은 설정값들도 복원한다. For example, in relation to encoding or decoding a video using the H.264 codec, data for a reference picture or a reference block must exist in the internal memory of the first processor. Therefore, the data for the reference picture or the reference block is stored in the internal memory. To restore. In addition, settings such as resolution and frame rate of an image required to set an execution environment of encoding or decoding using the H.264 codec are also restored.
이러한 제1 프로세서(200)의 상태는 프로세스마다 상이하다. 상이한 프로세스에 대응되는 명령들은 대응되는 제1 프로세서(200)의 상태를 기초로 제1 프로세서(200)에서 실행된다. 따라서, 도 1에 도시된 바와 같은 종래 기술에 따르면, 이미 실행 중인 프로세스(130)가 모두 실행될 때까지 나머지 프로세스들(132 내지 134)이 대기해야 한다. 다른 프로세스의 우선 순위가 이미 실행 중인 프로세스(130)보다 높은 경우에는 실행 중인 프로세스(130)의 실행을 위한 단일 코어 DSP(110)의 상태를 모두 초기화하고 새로운 프로세스를 실행시켜야 했다. 따라서, 우선 순위가 높은 프로세스를 모두 실행할 이후 실행 중이었던 프로세스(130)를 다시 실행하는 경우에 프로세스를 처음부터 다시 시작해야 했다.The state of the
그러나, 본 발명의 일 실시예에 따르면, 명령 단위로 대응되는 제1 프로세서(200)의 상태를 외부메모리(400)로부터 가져와 설정할 수 있기 때문에 실행 중이었던 프로세스를 중지하더라도, 처음부터 실행하지 아니하고, 중지된 이후의 명령부터 이어서 프로세스를 실행할 수 있다. 외부메모리(400)는 제1 프로세서(200)의 상태를 저장하는 저장소의 예시일 뿐이며, 제1 프로세서(200)의 상태를 저장하는 저장소는 이에 한정되지 아니한다. 예를 들어, 제1 프로세서(200)의 내부 메모리 일부를 제1 프로세서(200)의 상태를 저장하는데 이용할 수도 있다.However, according to an embodiment of the present invention, since the state of the
또한, 상태제어부(220)는 명령실행부(230)의 명령 실행 결과 제1 프로세서(200)의 상태를 저장할 필요가 있는 경우에 제1 프로세서(200)의 상태를 저장한다. 내부 메모리에 별도의 저장 공간을 할당하고 할당된 공간에 저장할 수도 있고, 도 2에 도시된 바와 같이 외부메모리(400)에 저장할 수도 있다. 저장되는 상태가 어떠한 프로세스에 대한 상태인지를 식별할 수 있도록 도 4a 또는 4b에 도시된 바와 같은 식별자와 함께 상태를 저장할 수 있다. 각각의 명령을 실행하여 상태의 변경이 생길 때마다 제1 프로세서(200)의 상태를 저장할 수도 있고, 수신된 명령을 실행하기 전에 이전 명령과 관련된 프로세스와 수신된 명령과 관련된 프로세스가 동일한지 판단하여 제1 프로세서(200)의 상태를 저장할 수도 있다.In addition, the
명령실행부(230)는 상태제어부(220)에서 설정된 제1 프로세서(200)의 상태에 기초해 명령을 실행한다. The
도 5a는 본 발명의 일 실시예에 따른 제1 프로세서(200)의 명령 실행 방법을 설명하기 위한 흐름도이다.5A is a flowchart for describing a method of executing an instruction of the
도 5a를 참조하면, 단계 510에서 제1 프로세서(200)는 제2 프로세서(300)로부터 명령을 수신한다. 제2 프로세서(300)에서 실행 중인 복수의 프로세스에 대응되는 명령들을 하나씩 수신한다. 명령들을 수신하는 순서는 도 3과 관련하여 전술하였다. 제2 프로세서(300)에서 실행되는 복수의 프로세스를 식별하기 위해 각각 의 프로세스에 부가된 식별자도 명령과 함께 수신한다. 제1 프로세서(200)는 단일 코어 DSP와 같은 전용 프로세서일 수 있으며, 제2 프로세서는 ARM 프로세서와 같은 호스트 프로세서일 수 있음은 전술하였다. Referring to FIG. 5A, in
단계 512에서 제1 프로세서(200)는 단계 510에서 수신된 식별자에 기초해 수신된 명령을 실행하기 위한 제1 프로세서의 상태를 설정한다. 식별자는 단계 510에서 수신된 각각의 명령을 프로세스에 따라 구분하기 위한 식별자이다. 따라서, 식별자에 기초해 프로세스마다 대응되는 제1 프로세서(200)의 상태를 설정하며, 필요한 경우 외부 메모리(400)에 저장된 상태 정보를 참조할 수 있다. In
단계 514에서 제1 프로세서(200)는 수신된 명령을 단계 512에서 복원된 제1 프로세서(200)의 상태에 기초해 실행한다. In
단계 516에서 제1 프로세서(200)는 수신된 명령의 실행에 따라 변경된 제1 프로세서(200)의 상태를 저장한다, 소정의 외부 메모리에 현재 제1 프로세서(200)의 상태를 저장한다.In
도 5b는 본 발명의 또 다른 일 실시예에 따른 제1 프로세서(200)의 명령 실행 방법을 설명하기 위한 흐름도이다.5B is a flowchart illustrating a method of executing an instruction of the
도 5b를 참조하면, 단계 520에서 제1 프로세서(200)는 제2 프로세서(300)로부터 명령을 수신한다. 도 5a에 도시된 단계 510에 대응되는 단계이다. Referring to FIG. 5B, in operation 520, the
단계 522에서 제1 프로세서(200)는 단계 520에서 수신된 명령이 새로운 프로세스의 최초 명령인지 판단한다. 이전에 실행한 프로세스가 아닌 새로운 프로세스의 최초 명령인지 판단한다. In
단계 522의 판단결과 수신된 명령이 새로운 프로세스의 최초 명령으로 판단되면, 단계 524에서 제1 프로세서(200)는 현재 제1 프로세서의 상태를 저장한다. 최초 명령이므로 제1 프로세서(200)의 상태의 복원이 아닌 초기화가 수행된다. 이를 위해 우선 이전 처리된 명령과 관련된 프로세스를 나중에 다시 실행하기 위해 현재 제1 프로세서(200)의 상태를 외부 메모리(400)에 저장한다. 그런 다음, 단계 526에서 제1 프로세서(200)는 새로운 프로세스의 식별자를 등록하고, 제1 프로세서(200)의 상태를 초기화한다. 새로운 프로세스를 실행하기 위한 상태로 초기화한다. If it is determined in
단계 522의 판단결과 수신된 명령이 새로운 프로세스의 최초 명령이 아닌 것으로 판단되면, 단계 528 내지 532를 통해 제1 프로세스의 상태를 복원한다. If it is determined in
단계 528에서 제1 프로세서(200)는 수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일한지 판단한다. 수신된 명령에 부가된 프로세스 식별자와 이전 명령의 프로세스 식별자를 비교하여 동일한지 판단한다. In
수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일하다면, 현재 제1 프로세서(200)의 상태를 그대로 이용해 명령을 실행하면 되므로, 제1 프로세서(200)의 상태를 복원할 필요는 없으며, 단계 534에서 수신된 명령을 실행한다. If the process related to the received command is the same as the process related to the previous command, the command may be executed using the current state of the
그러나, 수신된 명령과 관련된 프로세스가 이전 명령과 관련된 프로세스와 동일하지 않다면, 단계 530에서 현재 제1 프로세서(200)의 상태를 외부 메모리(400)에 저장한다. 그런 다음 단계 532에서 수신된 명령을 실행하기 위한 상태 를 복원한다. 수신된 명령에 부가되어 있는 프로세스 식별자에 기초해 외부 메모리(400)에 저장되어 있는 제1 프로세서(200)의 상태를 복원한다. 상태가 복원되면 단계 534에서 복원된 상태에 기초해 수신된 명령을 실행한다. However, if the process associated with the received instruction is not the same as the process associated with the previous instruction, in
수신된 명령의 실행이 모두 완료되면, 제1 프로세서(200)는 단계 536에서 실행된 명령이 프로세스의 최후 명령인지 판단한다. 최후 명령이 아닌 것으로 판단되면, 단계 520에서 다시 제2 프로세서로부터 명령을 수신한다. When the execution of the received command is completed, the
단계 536에서 수신된 명령이 프로세스의 최후 명령인 것으로 판단되면, 단계 538에서 제1 프로세서(200)는 종료되지 않은 다른 프로세스가 있는지 판단한다. 다른 프로세스가 있다면, 종료되지 않은 다른 프로세스에 대응되는 명령을 제2 프로세서로부터 수신하여 실행을 계속한다.If it is determined that the command received in
도 6은 본 발명의 일 실시예에 따른 제2 프로세서(300)가 제1 프로세서에 명령을 전송하는 방법을 설명하기 위한 흐름도이다.6 is a flowchart illustrating a method of transmitting a command to the first processor by the
도 6을 참조하면, 단계 610에서 제2 프로세서(300)는 실행 중인 프로세스에 대응되는 명령들 각각에 프로세스 식별자들을 부가한다. 제1 프로세스에 대응되는 명령에는 제1 프로세스의 프로세스 식별자를 부가하고, 제2 프로세스에 대응되는 명령에는 제2 프로세스의 프로세스 식별자를 부가한다. 프로세스 식별자와 관련하여서는 도 4a 및 4b와 관련하여 전술하였다.Referring to FIG. 6, in
단계 620에서 제2 프로세서(300)는 프로세스 식별자들이 부가된 명령들을 제1 프로세서에 전송한다. 명령들을 소정의 순서에 따라 제1 프로세서(200)에 전송하는데 이 순서는 프로세스의 우선 순위와 일치하지 않음은 전술하였다. 예를 들 어, 제1 프로세스에 대응되는 명령들을 모두 전송하기 이전에 제2 프로세스에 대응되는 명령들을 전송할 수 있다. 이와 관련된 상세한 설명은 도 3과 관련하여 전술하였다. In
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명이 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이와 균등하거나 또는 등가적인 변형 모두는 본 발명 사상의 범주에 속한다 할 것이다. 또한, 본 발명에 따른 시스템은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.As described above, although the present invention has been described by way of limited embodiments and drawings, the present invention is not limited to the above-described embodiments, which can be variously modified and modified by those skilled in the art to which the present invention pertains. Modifications are possible. Accordingly, the spirit of the invention should be understood only by the claims set forth below, and all equivalent or equivalent modifications will fall within the scope of the invention. In addition, the system according to the present invention can be embodied as computer readable codes on a computer readable recording medium. The computer-readable recording medium includes all kinds of recording devices in which data that can be read by a computer system is stored. Examples of the recording medium include a ROM, a RAM, a CD-ROM, a magnetic tape, a floppy disk, an optical data storage device, and the like, and also include a carrier wave (for example, transmission through the Internet). The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion.
도 1은 종래 기술에 따른 호스트 프로세서 및 단일 코어 DSP를 이용한 복수의 프로세스를 실행하는 시스템을 도시한다.1 illustrates a system for executing a plurality of processes using a host processor and a single core DSP according to the prior art.
도 2는 본 발명의 일 실시예에 따른 제1 프로세서를 도시한다.2 illustrates a first processor according to an embodiment of the present invention.
도 3은 본 발명의 일 실시예에 따른 제2 프로세서 및 제2 프로세서의 명령 전송 방법을 도시한다. 3 illustrates a second processor and a method of transmitting a command of a second processor according to an embodiment of the present invention.
도 4a는 본 발명의 일 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.4A illustrates an identifier for identifying processes that are multitasking in accordance with one embodiment of the present invention.
도 4b는 본 발명의 또 다른 실시예에 따른 멀티태스킹 중인 프로세스들을 식별하기 위한 식별자를 도시한다.4B illustrates an identifier for identifying processes that are multitasking in accordance with another embodiment of the present invention.
도 5a는 본 발명의 일 실시예에 따른 제1 프로세서의 명령 실행 방법을 설명하기 위한 흐름도이다.5A is a flowchart illustrating a method of executing an instruction of a first processor according to an embodiment of the present invention.
도 5b는 본 발명의 또 다른 일 실시예에 따른 제1 프로세서의 명령 실행 방법을 설명하기 위한 흐름도이다.5B is a flowchart illustrating a method of executing an instruction of a first processor, according to another exemplary embodiment.
도 6은 본 발명의 일 실시예에 따른 제2 프로세서가 제1 프로세서에 명령을 전송하는 방법을 설명하기 위한 흐름도이다.6 is a flowchart illustrating a method for transmitting a command to a first processor by a second processor according to an embodiment of the present invention.
Claims (16)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080133735A KR101085393B1 (en) | 2008-12-24 | 2008-12-24 | Method and apparatus for executing command to multitasking a plurality of process |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080133735A KR101085393B1 (en) | 2008-12-24 | 2008-12-24 | Method and apparatus for executing command to multitasking a plurality of process |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100075116A KR20100075116A (en) | 2010-07-02 |
KR101085393B1 true KR101085393B1 (en) | 2011-11-21 |
Family
ID=42637552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080133735A KR101085393B1 (en) | 2008-12-24 | 2008-12-24 | Method and apparatus for executing command to multitasking a plurality of process |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101085393B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102224844B1 (en) * | 2014-12-23 | 2021-03-08 | 삼성전자주식회사 | Method and apparatus for selecting a preemption technique |
JP6968016B2 (en) * | 2018-03-22 | 2021-11-17 | キオクシア株式会社 | Storage devices and computer systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004192400A (en) | 2002-12-12 | 2004-07-08 | Fujitsu Ltd | Job scheduling method and system |
JP2007047968A (en) | 2005-08-09 | 2007-02-22 | Olympus Corp | Multiprocessor system |
US20070083870A1 (en) | 2005-07-29 | 2007-04-12 | Tomochika Kanakogi | Methods and apparatus for task sharing among a plurality of processors |
-
2008
- 2008-12-24 KR KR1020080133735A patent/KR101085393B1/en not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004192400A (en) | 2002-12-12 | 2004-07-08 | Fujitsu Ltd | Job scheduling method and system |
US20070083870A1 (en) | 2005-07-29 | 2007-04-12 | Tomochika Kanakogi | Methods and apparatus for task sharing among a plurality of processors |
JP2007047968A (en) | 2005-08-09 | 2007-02-22 | Olympus Corp | Multiprocessor system |
Also Published As
Publication number | Publication date |
---|---|
KR20100075116A (en) | 2010-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
US10846124B2 (en) | Communication method, apparatus and system for virtual machine and host machine | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
CN111274019A (en) | Data processing method and device and computer readable storage medium | |
US10013288B2 (en) | Data staging management system | |
KR20150001146A (en) | Storage system and Operating method thereof | |
CN111569417A (en) | Peripheral data transmission method and system for cloud games | |
US9055129B2 (en) | Automation framework to remotely control devices and process asynchronous events | |
US10523746B2 (en) | Coexistence of a synchronous architecture and an asynchronous architecture in a server | |
CN111831408A (en) | Asynchronous task processing method and device, electronic equipment and medium | |
KR101085393B1 (en) | Method and apparatus for executing command to multitasking a plurality of process | |
CN116301568A (en) | Data access method, device and equipment | |
CN111310638A (en) | Data processing method and device and computer readable storage medium | |
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 | |
CN114138371B (en) | Configuration dynamic loading method and device, computer equipment and storage medium | |
US8869171B2 (en) | Low-latency communications | |
US8762615B2 (en) | Dequeue operation using mask vector to manage input/output interruptions | |
JP4218034B2 (en) | Data communication system, data communication method, and data communication program | |
CN110764710A (en) | Data access method and storage system of low-delay and high-IOPS | |
CN113032098A (en) | Virtual machine scheduling method, device, equipment and readable storage medium | |
CN112748883A (en) | IO request pipeline processing device, method, system and storage medium | |
CN113296972A (en) | Information registration method, computing device and storage medium | |
US20120296951A1 (en) | System and method to execute steps of an application function asynchronously | |
JP4285307B2 (en) | Data processing apparatus and method |
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 |