KR101517835B1 - Processor, system and recording medium including ipc driver for inter-processor communication - Google Patents

Processor, system and recording medium including ipc driver for inter-processor communication Download PDF

Info

Publication number
KR101517835B1
KR101517835B1 KR1020080076129A KR20080076129A KR101517835B1 KR 101517835 B1 KR101517835 B1 KR 101517835B1 KR 1020080076129 A KR1020080076129 A KR 1020080076129A KR 20080076129 A KR20080076129 A KR 20080076129A KR 101517835 B1 KR101517835 B1 KR 101517835B1
Authority
KR
South Korea
Prior art keywords
processor
ipc
data packets
data
driver
Prior art date
Application number
KR1020080076129A
Other languages
Korean (ko)
Other versions
KR20100015190A (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 KR1020080076129A priority Critical patent/KR101517835B1/en
Priority to US12/336,039 priority patent/US8230180B2/en
Publication of KR20100015190A publication Critical patent/KR20100015190A/en
Application granted granted Critical
Publication of KR101517835B1 publication Critical patent/KR101517835B1/en

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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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

Abstract

프로세서간 통신을 위한 IPC 드라이버를 포함하는 프로세서, 시스템 및 기록 매체가 개시된다. 프로세서는 어플리케이션, IPC 드라이버 및 디바이스 드라이버를 포함한다. IPC 드라이버는 어플리케이션에 복수의 데이터 패킷들에 대한 전송 경로를 제공하도록 복수의 IPC 채널들 중 어느 하나의 IPC 채널에 복수의 데이터 패킷들에 대한 정보를 저장한다. 디바이스 드라이버는 복수의 데이터 패킷들에 대한 정보에 기초하여 프로세서간 통신 장치에 복수의 데이터 패킷들을 기입한다. 프로세서들간의 버스트 전송을 지원하여 데이터 전송 속도를 향상시킬 수 있다.A processor, system, and recording medium including an IPC driver for inter-processor communication are disclosed. The processor includes an application, an IPC driver, and a device driver. The IPC driver stores information about a plurality of data packets in an IPC channel of one of a plurality of IPC channels to provide an application with a transmission path for a plurality of data packets. The device driver writes a plurality of data packets to the inter-processor communication device based on information on the plurality of data packets. It is possible to improve the data transfer rate by supporting the burst transfer between the processors.

버스트 전송, 프로세서간 통신 Burst transmission, interprocessor communication

Description

프로세서간 통신을 위한 아이피씨 드라이버를 포함하는 프로세서, 시스템 및 기록 매체{PROCESSOR, SYSTEM AND RECORDING MEDIUM INCLUDING IPC DRIVER FOR INTER-PROCESSOR COMMUNICATION}TECHNICAL FIELD [0001] The present invention relates to a processor, a system, and a recording medium including an IP address driver for inter-processor communication.

본 발명은 프로세서간 통신(inter-processor communication; IPC) 기술에 관한 것으로, 보다 상세하게는 프로세서간 통신을 위한 복수의 IPC 채널들을 제공하는 IPC 드라이버, 이를 포함하는 프로세서 및 시스템에 관한 것이다.The present invention relates to inter-processor communication (IPC) technology, and more particularly, to an IPC driver providing a plurality of IPC channels for inter-processor communication, a processor and a system including the same.

프로세서간 통신(inter-processor communication; IPC)을 위해서는 프로세서들을 연결하여 데이터를 전송하기 위한 수단이 필요한데, 이러한 기능을 수행하는 것이 인터페이스(interface)이다. 통상적으로, IPC를 위한 인터페이스로 범용 비동기 송수신기(universal asynchronous receiver transmitter; UART), 직렬 주변장치 인터페이스(serial peripheral interface; SPI), 범용 직렬 버스(universal serial bus; USB) 등의 직렬 인터페이스가 사용된다.For inter-processor communication (IPC), there is a need for a means for connecting processors to transfer data, and an interface is one that performs this function. Typically, a serial interface such as a universal asynchronous receiver transmitter (UART), a serial peripheral interface (SPI), or a universal serial bus (USB) is used as an interface for IPC.

이러한 종래의 직렬 인테페이스는 병렬 데이터를 직렬로 변환하여 전송하므로, 프로세서들간의 데이터가 한 클록에 한 비트만이 전송된다. 이에 따라, 직렬 인터페이스는 데이터 전송 속도의 한계를 가진다. 예를 들어, SPI를 이용한 IPC는 약 16 Mbps의 데이터 전송 속도를 가지고, UART를 이용한 IPC는 약 1.5 Mbps의 데이터 전송 속도를 가지며, 고속 UART를 이용한 IPC의 경우에도 약 5 Mbps의 데이터 전송 속도를 가진다. 또한, 전속 USB(full-speed USB)를 이용한 IPC는 최대 12 Mbps의 데이터 전송 속도를 가지고, USB 프로토콜에 필요한 높은 패킷 오버헤드(overhead) 때문에 실제로 약 6 Mbps의 데이터 전송 속도를 가진다.Such a conventional serial interface converts parallel data to serial data and transmits it, so that only one bit of data between processors is transmitted in one clock. As a result, the serial interface has a limitation in data transmission speed. For example, IPC using SPI has a data transfer rate of about 16 Mbps, IPC using UART has a data transfer rate of about 1.5 Mbps, and IPC using high-speed UART has a data transfer rate of about 5 Mbps I have. In addition, IPC using full-speed USB has a data transfer rate of up to 12 Mbps and actually has a data transfer rate of about 6 Mbps due to the high packet overhead required for the USB protocol.

이와 같은 직렬 인터페이스를 활용한 시스템이 가지는 데이터 전송 속도의 한계를 극복하기 위하여, 듀얼 포트 랜덤 억세스 메모리(dual port random access memory; DPRAM)를 이용한 통신 방법이 개발되었다.A communication method using a dual port random access memory (DPRAM) has been developed in order to overcome the limitation of the data transmission speed of the system utilizing the serial interface.

DPRAM을 활용한 시스템에서, 각 프로세서는 어플리케이션 데이터 저장을 위한 별도의 동적 랜덤 억세스 메모리(DRAM) 및 어플리케이션 실행 코드 저장을 위한 별도의 플래시 메모리를 필요로 한다. 이에 따라, DPRAM을 활용한 시스템의 사이즈가 커지고, 메모리 억세스 레이턴시로 인하여 데이터 처리 속도가 악화된다. 또한, DPRAM 용량의 한계로 인하여 프로세서들간에 대용량 데이터를 전송할 때 데이터 전송 속도가 낮아지는 문제가 있다.In a system utilizing DPRAM, each processor requires a separate dynamic random access memory (DRAM) for storing application data and a separate flash memory for storing application executable code. As a result, the size of the system utilizing the DPRAM increases, and the data processing speed deteriorates due to the memory access latency. Also, due to the limitation of the capacity of the DPRAM, there is a problem that the data transmission speed is lowered when large capacity data is transmitted between the processors.

상기와 같은 문제점을 해결하기 위하여, 본 발명의 일 목적은 프로세서간 통신 속도를 향상시킬 수 있는 프로세서를 제공하는 것이다.In order to solve the above problems, it is an object of the present invention to provide a processor capable of improving communication speed between processors.

본 발명의 다른 목적은 프로세서간 통신 속도를 향상시킬 수 있는 시스템을 제공하는 것이다.It is another object of the present invention to provide a system capable of improving the communication speed between processors.

본 발명의 또 다른 목적은 프로세서간 통신 속도를 향상시킬 수 있는 IPC(inter-processor communication) 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 것이다.It is still another object of the present invention to provide a computer-readable recording medium on which an inter-processor communication (IPC) driver capable of improving inter-processor communication speed is recorded.

상기한 본 발명의 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 프로세서는 하나 이상의 어플리케이션, IPC 드라이버 및 디바이스 드라이버를 포함한다.According to an aspect of the present invention, a processor includes at least one application, an IPC driver, and a device driver.

상기 어플리케이션은 프로세서간 통신을 통하여 복수의 데이터 패킷들을 송수신한다. 상기 IPC 드라이버는 상기 어플리케이션에 상기 복수의 데이터 패킷들에 대한 전송 경로를 제공하도록 복수의 IPC(inter-processor communication) 채널들 중 어느 하나의 IPC 채널에 상기 복수의 데이터 패킷들에 대한 정보를 저장한다. 상기 디바이스 드라이버는 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 정보에 기초하여 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입한다.The application transmits and receives a plurality of data packets through inter-processor communication. The IPC driver stores information on the plurality of data packets in any one of a plurality of IPC channels to provide a transmission path for the plurality of data packets to the application . The device driver writes the plurality of data packets to the inter-processor communication device based on information on the plurality of data packets stored in the one IPC channel.

일 실시예에서, 상기 IPC 드라이버는, 상기 어플리케이션에 제공되어 상기 복수의 데이터 패킷들에 대한 전송을 요청받는 IPC API(application programming interface), 상기 IPC API를 통하여 전송을 요청 받은 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 상기 어느 하나의 IPC 채널을 포함하는 상기 복수의 IPC 채널들, 및 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 정보를 상기 디바이스 드라이버에 제공하는 IPC 스레드를 포함할 수 있다. 상기 어느 하나의 IPC 채널은 상기 복수의 데이터 패킷들의 포인터들 및 길이들을 저장할 수 있다.In one embodiment, the IPC driver includes an application programming interface (IPC API) provided to the application and requested to transmit the plurality of data packets, a plurality of data packets And an IPC thread for providing the device driver with information on the plurality of data packets stored in any one of the IPC channels, . The one IPC channel may store pointers and lengths of the plurality of data packets.

일 실시예에서, 상기 어느 하나의 IPC 채널은, 상기 어플리케이션에서 상기 프로세서간 통신 장치로 전송되는 제 1 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 송신 큐, 및 상기 프로세서간 통신 장치에서 상기 어플리케이션으로 전송되는 제 2 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 수신 큐를 포함할 수 있다. 상기 IPC 스레드는, 상기 데이터 패킷 수신 큐에 포인터들 및 길이들이 저장된 상기 제 2 복수의 데이터 패킷들의 수가 중지 임계치 이상인 경우, 상기 디바이스 드라이버를 통하여 상기 데이터 패킷 수신 큐에 대한 데이터 패킷 전송의 중지를 요청하고, 상기 데이터 패킷 전송의 중지를 요청한 후, 상기 데이터 패킷 수신 큐에 포인터들 및 길이들이 저장된 상기 제 2 복수의 데이터 패킷들의 수가 재개 임계치 이하인 경우, 상기 디바이스 드라이버를 통하여 상기 데이터 패킷 수신 큐에 대한 데이터 패킷 전송의 재개를 요청할 수 있다.In one embodiment, the one of the IPC channels comprises a data packet transmission queue storing pointers and lengths of a first plurality of data packets transmitted from the application to the inter-processor communication device, And a data packet reception queue for storing pointers and lengths of a second plurality of data packets transmitted to the application. The IPC thread requests to stop the data packet transmission to the data packet reception queue through the device driver when the number of the second plurality of data packets storing pointers and lengths in the data packet reception queue is equal to or greater than the stop threshold And if the number of the second plurality of data packets storing pointers and lengths in the data packet reception queue is less than a resume threshold after requesting the suspension of the data packet transmission, Requesting the resumption of data packet transmission.

일 실시예에서, 상기 IPC API는, 상기 어느 하나의 IPC 채널에 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 데이터 패킷 송신 함수, 상기 어플리케이션에 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 정보를 제공하는 데이터 패킷 수신 함수, 상기 어플리케이션에 상기 어느 하나의 IPC 채널의 핸들을 제공하는 채널 오픈 함수, 및 상기 어플리케이션에 제공된 상기 어느 하나의 IPC 채널의 핸들을 해제하는 채널 클로즈 함수를 포함할 수 있다.In one embodiment, the IPC API includes a data packet transmission function for storing information on the plurality of data packets in any one of the IPC channels, a data packet transmission function for storing the plurality of data packets A channel open function for providing a handle of one of the IPC channels to the application and a channel close function for canceling a handle of one of the IPC channels provided to the application, .

일 실시예에서, 상기 어플리케이션은 제 1 복수의 데이터 패킷들을 송수신하는 제 1 어플리케이션 및 제 2 복수의 데이터 패킷들을 송수신하는 제 2 어플리케이션을 포함하고, 상기 IPC 드라이버는, 상기 복수의 IPC 채널들 중 제1 IPC 채널에 상기 제 1 어플리케이션의 상기 제 1 복수의 데이터 패킷들에 대한 정보를 저장하고, 상기 복수의 IPC 채널들 중 제 2 IPC 채널에 상기 제 2 어플리케이션의 상기 제 2 복수의 데이터 패킷들에 대한 정보를 저장할 수 있다.In one embodiment, the application comprises a first application for transmitting and receiving a first plurality of data packets and a second application for transmitting and receiving a second plurality of data packets, Storing information on the first plurality of data packets of the first application on a first IPC channel and storing information on the second plurality of data packets of the second application on a second one of the plurality of IPC channels Can be stored.

일 실시예에서, 상기 디바이스 드라이버는, 상기 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 데이터 패킷 기입 함수, 상기 프로세서간 통신 장치로부터 상기 복수의 데이터 패킷들을 독출하는 데이터 패킷 독출 함수, 상기 프로세서간 통신 장치에 메시지를 기입하는 메시지 기입 함수, 및 상기 프로세서간 통신 장치로부터 상기 메시지를 독출하는 메시지 독출 함수를 포함하는 디바이스 API를 상기 IPC 드라이버에 제공할 수 있다.In one embodiment, the device driver includes a data packet write function for writing the plurality of data packets to the inter-processor communication device, a data packet read function for reading the plurality of data packets from the inter-processor communication device, A message writing function that writes a message to the inter-processor communication device, and a device API that includes a message read function to read the message from the inter-processor communication device.

상기한 본 발명의 다른 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 시스템은 복수의 프로세서들 및 프로세서간 통신 장치를 포함한다.According to another aspect of the present invention, there is provided a system according to an embodiment of the present invention includes a plurality of processors and an inter-processor communication device.

상기 복수의 프로세서들 각각은 프로세서간 통신을 통하여 복수의 데이터 패킷들을 송수신하는 하나 이상의 어플리케이션, 상기 어플리케이션에 상기 복수의 데이터 패킷들에 대한 전송 경로를 제공하도록 복수의 IPC(inter-processor communication) 채널들 중 어느 하나의 IPC 채널에 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장하는 IPC 드라이버, 및 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들에 기초하여 프로 세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 디바이스 드라이버를 포함한다. 상기 프로세서간 통신 장치는 상기 복수의 프로세서들에 의해 선택적으로 억세스 되고, 상기 복수의 프로세서들 각각에 포함된 상기 디바이스 드라이버로부터 수신된 상기 복수의 데이터 패킷들을 저장하고, 상기 복수의 프로세서들 사이에서 전송되는 커맨드 및 상기 저장된 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장한다.Each of the plurality of processors comprising: one or more applications for transmitting and receiving a plurality of data packets through interprocessor communication; a plurality of inter-processor communication channels (IPC) for providing a transmission path for the plurality of data packets to the application; An IPC driver for storing pointers and lengths for the plurality of data packets on any one of the IPC channels, and an IPC driver for, based on the pointers and lengths for the plurality of data packets stored in the one IPC channel And a device driver for writing the plurality of data packets to the interprocessor communication device. Wherein the inter-processor communication device is selectively accessed by the plurality of processors and stores the plurality of data packets received from the device driver included in each of the plurality of processors, And data transmission information for the stored plurality of data packets.

일 실시예에서, 상기 프로세서간 통신 장치는, 상기 복수의 프로세서들에 연결되는 복수의 포트들, 상기 복수의 포트들을 통하여 상기 복수의 프로세서들에 의해 선택적으로 억세스 되고, 상기 복수의 데이터 패킷들을 복수의 채널들 중 어느 하나의 채널에 저장하는 공유 저장 영역, 및 상기 복수의 포트들에 연결되고, 상기 커맨드 및 상기 데이터 전송 정보를 저장하는 메일박스 영역을 포함할 수 있다.In one embodiment, the inter-processor communication device further comprises a plurality of ports coupled to the plurality of processors, a plurality of ports selectively accessed by the plurality of processors through the plurality of ports, And a mailbox area connected to the plurality of ports, the mailbox area storing the command and the data transmission information.

일 실시예에서, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 버퍼들을 포함하고, 상기 복수의 버퍼들 각각은 상기 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장할 수 있다.In one embodiment, the one channel in which the plurality of data packets are stored includes a plurality of buffers, and each of the plurality of buffers may store any one of the plurality of data packets.

일 실시예에서, 상기 메일박스 영역은, 상기 커맨드를 저장하는 커맨드 저장 영역, 상기 복수의 데이터 패킷들의 상기 공유 저장 영역 내의 위치에 대한 정보를 저장하는 채널 인덱스 저장 영역, 및 상기 복수의 데이터 패킷들의 개수에 대한 정보를 저장하는 패킷 개수 저장 영역을 포함할 수 있다.In one embodiment, the mailbox area includes a command storage area for storing the command, a channel index storage area for storing information about locations in the shared storage area of the plurality of data packets, And a number-of-packets storage area for storing information on the number of packets.

일 실시예에서, 상기 프로세서간 통신 장치는, 상기 공유 저장 영역의 소유권에 대한 정보를 저장하는 세마포어 영역을 더 포함할 수 있다. 상기 프로세서간 통신 장치는, 상기 복수의 포트들을 통하여 상기 복수의 프로세서들에 의해 각각 억세스 되고, 상기 어플리케이션의 코드 및 데이터를 저장하는 복수의 전용 저장 영역들을 더 포함할 수 있다.In one embodiment, the inter-processor communication device may further include a semaphore area storing information on ownership of the shared storage area. The inter-processor communication device may further include a plurality of dedicated storage areas, which are respectively accessed by the plurality of processors through the plurality of ports, and store the code and data of the application.

일 실시예에서, 상기 프로세서간 통신 장치는 동적 랜덤 억세스 메모리(DRAM)일 수 있다.In one embodiment, the inter-processor communication device may be a dynamic random access memory (DRAM).

일 실시예에서, 상기 IPC 드라이버는, 상기 어플리케이션에 제공되어 상기 복수의 데이터 패킷들에 대한 전송을 요청받는 IPC API(application programming interface), 상기 IPC API를 통하여 전송을 요청 받은 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장하는 상기 어느 하나의 IPC 채널을 포함하는 상기 복수의 IPC 채널들, 및 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 상기 디바이스 드라이버에 제공하는 IPC 스레드를 포함할 수 있다. 상기 어느 하나의 IPC 채널은, 상기 어플리케이션에서 상기 프로세서간 통신 장치로 전송되는 제 1 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 송신 큐, 및 상기 프로세서간 통신 장치에서 상기 어플리케이션으로 전송되는 제 2 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 수신 큐를 포함할 수 있다.In one embodiment, the IPC driver includes an application programming interface (IPC API) provided to the application and requested to transmit the plurality of data packets, a plurality of data packets And a plurality of IPC channels for storing the pointers and lengths for the plurality of data packets stored in any one of the IPC channels, Lt; RTI ID = 0.0 > IPC < / RTI > Wherein the one IPC channel comprises a data packet transmission queue for storing pointers and lengths of a first plurality of data packets transmitted from the application to the inter-processor communication device, And a data packet reception queue for storing pointers and lengths of a second plurality of data packets.

일 실시예에서, 상기 어플리케이션은 제 1 복수의 데이터 패킷들을 송수신하는 제 1 어플리케이션 및 제 2 복수의 데이터 패킷들을 송수신하는 제 2 어플리케이션을 포함하고, 상기 IPC 드라이버는, 상기 복수의 IPC 채널들 중 제 1 IPC 채널에 상기 제 1 어플리케이션의 상기 제 1 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장하고, 상기 복수의 IPC 채널들 중 제 2 IPC 채널에 상기 제 2 어플리케이션의 상기 제 2 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장할 수 있다.In one embodiment, the application comprises a first application for transmitting and receiving a first plurality of data packets and a second application for transmitting and receiving a second plurality of data packets, 1 pointers and lengths for the first plurality of data packets of the first application on a first IPC channel and storing the pointers and lengths of the second plurality of data of the second application on a second one of the plurality of IPC channels And may store pointers and lengths for packets.

상기한 본 발명의 또 다른 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 IPC(inter-processor communication) API(application programming interface), 복수의 IPC 채널들 및 IPC 스레드를 포함한다.According to another aspect of the present invention, there is provided a computer-readable recording medium on which an IPC driver is recorded, including an inter-processor communication (API) application programming interface (API) IPC channels and IPC threads.

상기 IPC API는 복수의 어플리케이션들에 제공되고, 상기 복수의 어플리케이션들 각각으로부터 복수의 데이터 패킷들에 대한 전송을 요청 받는다. 상기 복수의 IPC 채널들은 상기 복수의 어플리케이션들 각각에 상기 복수의 데이터 패킷들에 대한 적어도 하나의 전송 경로를 제공하도록 상기 복수의 데이터 패킷들의 포인터들 및 길이들을 저장한다. 상기 IPC 스레드는 상기 복수의 IPC 채널들에 저장된 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들에 기초하여 디바이스 드라이버를 통하여 상기 복수의 데이터 패킷들을 프로세서간 통신 장치에 기입한다.The IPC API is provided to a plurality of applications, and is requested to transmit a plurality of data packets from each of the plurality of applications. The plurality of IPC channels storing pointers and lengths of the plurality of data packets to provide at least one transmission path for the plurality of data packets to each of the plurality of applications. The IPC thread writes the plurality of data packets to the inter-processor communication device through a device driver based on pointers and lengths for the plurality of data packets stored in the plurality of IPC channels.

일 실시예에서, 상기 복수의 IPC 채널들 각각은 상기 복수의 어플리케이션들 중 상응하는 어플리케이션의 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장할 수 있다.In one embodiment, each of the plurality of IPC channels may store pointers and lengths for the plurality of data packets of a corresponding one of the plurality of applications.

상기와 같은 본 발명의 실시예들에 따른 프로세서, 시스템 및 IPC(inter-processor communication) 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 어플리케이션/서비스 마다 하나 이상의 IPC 채널을 제공하여 데이터 전송 속도를 향상시킬 수 있다.The computer-readable recording medium on which the processor, the system and the inter-processor communication (IPC) driver are recorded according to the embodiments of the present invention can provide one or more IPC channels per application / .

또한 본 발명의 실시예들에 프로세서간 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 데이터 패킷 복사 동작을 최소화하여 데이터 전송 속도를 더욱 향상시킬 수 있다.In addition, the computer-readable recording medium in which the inter-processor processor, the system and the IPC driver are recorded in the embodiments of the present invention minimizes the data packet copy operation, thereby further improving the data transfer rate.

또한 본 발명의 실시예들에 프로세서간 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 IPC 채널 및 상응하는 공유 저장 영역의 채널의 데이터 패킷 오버플로우(overflow)를 방지할 수 있고, 데이터 전송 속도를 유지하면서 안정적인 데이터 패킷 전송을 지원할 수 있다.In addition, the computer-readable recording medium in which the inter-processor processor, the system and the IPC driver are recorded in the embodiments of the present invention can prevent the data packet overflow of the channel of the IPC channel and the corresponding shared storage area , It is possible to support stable data packet transmission while maintaining the data transmission speed.

또한 본 발명의 실시예들에 프로세서간 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 프로세서들간의 버스트 전송을 지원하여 데이터 전송 속도를 더욱 향상시킬 수 있다.Also, in the embodiments of the present invention, a computer-readable recording medium in which an inter-processor processor, a system and an IPC driver are recorded can support burst transfer between processors to further improve data transfer speed.

또한 본 발명의 실시예들에 프로세서간 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 각 프로세서에 전용 저장 영역을 제공함으로써 시스템에 필요한 메모리들의 수를 줄이고, 시스템 사이즈를 줄일 수 있다.In addition, in the embodiments of the present invention, a computer-readable recording medium in which an inter-processor processor, a system and an IPC driver are recorded provides a dedicated storage area for each processor, thereby reducing the number of memories required for the system, have.

본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.For the embodiments of the invention disclosed herein, specific structural and functional descriptions are set forth for the purpose of describing an embodiment of the invention only, and it is to be understood that the embodiments of the invention may be practiced in various forms, The present invention should not be construed as limited to the embodiments described in Figs.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.The present invention is capable of various modifications and various forms, and specific embodiments are illustrated in the drawings and described in detail in the text. It is to be understood, however, that the invention is not intended to be limited to the particular forms disclosed, but on the contrary, is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms may be used for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between. Other expressions that describe the relationship between components, such as "between" and "between" or "neighboring to" and "directly adjacent to" should be interpreted as well.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것 으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprise", "having", and the like are intended to specify the presence of stated features, integers, steps, operations, elements, components, or combinations thereof, , Steps, operations, components, parts, or combinations thereof, as a matter of principle.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries should be construed as meaning consistent with meaning in the context of the relevant art and are not to be construed as ideal or overly formal in meaning unless expressly defined in the present application .

한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.On the other hand, if an embodiment is otherwise feasible, the functions or operations specified in a particular block may occur differently from the order specified in the flowchart. For example, two consecutive blocks may actually be performed at substantially the same time, and depending on the associated function or operation, the blocks may be performed backwards.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. The same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

도 1은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a system according to an embodiment of the present invention.

도 1을 참조하면, 시스템(100)은 제 1 프로세서(200), 제 2 프로세서(300) 및 프로세서간 통신 장치(400)를 포함한다. 도 1에는 프로세서간 통신 장치(400)에 각각 연결된 두개의 프로세서들(200, 300)을 포함하는 시스템(100)이 도시되어 있으나, 실시예에 따라 프로세서간 통신 장치(400)에 세 개 이상의 프로세서들이 연결될 수 있다.Referring to FIG. 1, a system 100 includes a first processor 200, a second processor 300, and an inter-processor communication device 400. 1 illustrates a system 100 including two processors 200 and 300 connected to an inter-processor communication device 400, it is contemplated that the inter-processor communication device 400 may include three or more processors Lt; / RTI >

제 1 프로세서(200) 및 제 2 프로세서(300)는 프로세서간 통신 장치(400)에 각각 연결된다. 제 1 프로세서(200)는 프로세서간 통신 장치(400)의 제 1 포트를 통하여 프로세서간 통신 장치(400)를 억세스 할 수 있고, 제 2 프로세서(300)는 프로세서간 통신 장치(400)의 제 2 포트를 통하여 프로세서간 통신 장치(400)를 억세스 할 수 있다. 일 실시예에서, 제 1 프로세서(200) 및 제 2 프로세서(200)는 버스를 통하여 상기 제 1 포트 및 상기 제 2 포트에 각각 연결될 수 있다. 다른 실시예에서, 제 1 프로세서(200) 및 제 2 프로세서(200)는 별도의 중재 장치 없이 복수의 신호선들을 통하여 상기 제 1 포트 및 상기 제 2 포트에 각각 직접 연결될 수 있다. 예를 들어, 제 1 프로세서(200)와 상기 제 1 포트는 16개 또는 32개의 데이터 신호선들을 통하여 연결될 수 있고, 또한 복수개의 어드레스/제어 신호선들이 제 1 프로세서(200)와 상기 제 1 포트 사이에 연결될 수 있다.The first processor 200 and the second processor 300 are connected to the inter-processor communication device 400, respectively. The first processor 200 may access the inter-processor communication device 400 through the first port of the inter-processor communication device 400 and the second processor 300 may access the inter-processor communication device 400 through the first port of the inter- Lt; RTI ID = 0.0 > 400 < / RTI > In one embodiment, the first processor 200 and the second processor 200 may be coupled to the first port and the second port, respectively, via a bus. In another embodiment, the first processor 200 and the second processor 200 may be directly connected to the first port and the second port, respectively, through a plurality of signal lines without a separate arbitration device. For example, the first processor 200 and the first port may be connected via 16 or 32 data signal lines, and a plurality of address / control signal lines may be connected between the first processor 200 and the first port Can be connected.

실시예에 따라, 제 1 프로세서(200)는 모뎀 프로세서일 수 있고, 제 2 프로세서(300)는 어플리케이션 프로세서이거나, 멀티미디어 프로세서일 수 있다. 실시예에 따라, 제 1 프로세서(200) 및 제 2 프로세서(300)는 각각 별도의 칩으로 구현될 수 있고, 제 1 프로세서(200) 및 제 2 프로세서(300)는 하나의 칩으로 구현될 수 있다.According to an embodiment, the first processor 200 may be a modem processor and the second processor 300 may be an application processor or a multimedia processor. According to an embodiment, the first processor 200 and the second processor 300 may be implemented as separate chips, and the first processor 200 and the second processor 300 may be implemented as a single chip. have.

프로세서간 통신 장치(400)는 제 1 프로세서(200)와 제 2 프로세서(300) 사이에서 전송되는 데이터 패킷들이 저장되는 공유 저장 영역 및 제 1 프로세서(200)와 제 2 프로세서(300) 사이에서 전송되는 메시지를 저장하는 메일박스(mailbox) 영역을 포함한다. 상기 공유 저장 영역은 제 1 프로세서(200) 또는 제 2 프로세서(300)에 의해 선택적으로 억세스 된다. 예를 들어, 제 1 프로세서(200)가 상기 공유 저장 영역에 대한 소유권(ownership)을 가진 동안 제 2 프로세서(300)는 상기 공유 저장 영역을 억세스 하지 않을 수 있다. 상기 메일박스 영역은 제 1 프로세서(200)로부터 제 2 프로세서(300)로 전송되는 메시지를 저장하기 위한 제 1 메일박스 및 제 2 프로세서(300)로부터 제 1 프로세서(200)로 전송되는 메시지를 저장하기 위한 제 2 메일박스를 포함할 수 있다. 제 1 프로세서(200)가 상기 제 1 메일박스에 메시지를 기입하면, 제 2 프로세서(300)는 제 1 인터럽트 신호(INT1)를 수신하여 제 1 메일박스에 메시지가 기입된 것을 알 수 있다. 또한, 제 2 프로세서(300)가 상기 제 2 메일박스에 메시지를 기입하면, 제 1 프로세서(200)는 제 2 인터럽트 신호(INT2)를 수신하여 제 2 메일박스에 메시지가 기입된 것을 알 수 있다.The inter-processor communication device 400 includes a shared storage area in which data packets transmitted between the first processor 200 and the second processor 300 are stored and a shared storage area in which data is transmitted between the first processor 200 and the second processor 300 And a mailbox area for storing the received message. The shared storage area is selectively accessed by the first processor 200 or the second processor 300. For example, the second processor 300 may not access the shared storage area while the first processor 200 has ownership of the shared storage area. The mail box area stores a first mail box for storing a message transmitted from the first processor 200 to the second processor 300 and a second mail box for storing a message transmitted from the second processor 300 to the first processor 200 Lt; RTI ID = 0.0 > mailbox. ≪ / RTI > When the first processor 200 writes a message in the first mailbox, the second processor 300 receives the first interrupt signal INT1 and recognizes that the message is written in the first mailbox. Also, when the second processor 300 writes a message in the second mailbox, the first processor 200 receives the second interrupt signal INT2 and recognizes that the message is written in the second mailbox .

예를 들어, 제 1 프로세서(200)에서 제 2 프로세서(300)로 데이터 패킷들을 전송할 경우, 제 1 프로세서(200)는 상기 메일박스 영역을 활용한 메시지 전송을 통하여 상기 공유 저장 영역에 대한 소유권을 획득할 수 있다. 제 1 프로세서(200)는 상기 공유 저장 영역에 상기 데이터 패킷들을 기입하고, 상기 제 1 메일박스에 데이터 전송 커맨드를 기입하여 제 2 프로세서(300)에 상기 데이터 패킷들이 기입된 것을 알릴 수 있다. 또한, 제 1 프로세서(200)는 상기 제 1 메일박스에 상기 데이터 전송 커맨드와 함께 상기 기입된 데이터 패킷들이 저장된 위치, 패킷 수 등의 정보를 기입함으로써, 제 2 프로세서(300)가 상기 데이터 패킷들에 대한 별도의 분석 없이 상기 데이터 패킷들을 독출할 수 있다. 또한, 제 1 프로세서(200)는 상기 제 1 포트에 연결된 복수의 신호선들을 통하여 상기 데이터 패킷들을 프로세서간 통신 장치(400)에 병렬로 송신하고, 제 2 프로세서(300)는 상기 제 2 포트에 연결된 복수의 신호선들을 통하여 상기 데이터 패킷들을 프로세서간 통신 장치(400)에 병렬로 수신함으로써, 제 1 프로세서(200)와 제 2 프로세서(300) 사이의 데이터 전송 속도가 향상된다. 게다가, 프로세서간 통신 장치(400)는 제 1 프로세서(200)가 상기 공유 저장 영역에 대한 소유권을 가지는 동안 상기 공유 저장 영역에 다수의 데이터 패킷들을 기입하고, 제 2 프로세서(300)가 상기 소유권을 가지는 동안 상기 공유 저장 영역으로부터 다수의 데이터 패킷들을 독출할 수 있는 버스트 전송(burst transfer)을 지원한다. 이에 따라, 소유권 교환의 오버헤드를 줄임으로써 데이터 전송 속도가 더욱 향상될 수 있다.For example, when data packets are transmitted from the first processor 200 to the second processor 300, the first processor 200 transmits ownership of the shared storage area through a message transmission using the mailbox area Can be obtained. The first processor 200 may write the data packets to the shared storage area and write a data transfer command to the first mailbox to inform the second processor 300 that the data packets have been written. In addition, the first processor 200 writes information such as the position, the number of packets, and the like in which the written data packets are stored together with the data transfer command in the first mailbox, The data packets can be read without further analysis. In addition, the first processor 200 transmits the data packets to the inter-processor communication device 400 in parallel through a plurality of signal lines connected to the first port, and the second processor 300 transmits the data packets in parallel to the inter- By receiving the data packets in parallel to the inter-processor communication device 400 through a plurality of signal lines, the data transmission speed between the first processor 200 and the second processor 300 is improved. In addition, the inter-processor communication device 400 writes a plurality of data packets to the shared storage area while the first processor 200 owns the shared storage area, and the second processor 300 writes the ownership And supports burst transfer which can read a plurality of data packets from the shared storage area during its lifetime. Accordingly, the data transfer rate can be further improved by reducing the overhead of ownership exchange.

도 2a는 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들의 일 예를 나타내는 블록도이고, 도 2b는 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들의 다른 예를 나타내는 블록도이다.FIG. 2A is a block diagram illustrating an example of modules executing in a processor included in the system of FIG. 1, and FIG. 2B is a block diagram illustrating another example of modules executing in a processor included in the system of FIG.

도 2a를 참조하면, 프로세서(200a)는 디바이스 드라이버(210), IPC 드라이버(220) 및 어플리케이션(230)을 포함한다. 일 실시예에서, 디바이스 드라이 버(210), IPC 드라이버(220) 및 어플리케이션(230) 각각은 전용 하드웨어로 구현될 수 있다. 다른 실시예에서, 디바이스 드라이버(210), IPC 드라이버(220) 및 어플리케이션(230) 각각은 범용 하드웨어에서 실행되는 소프트웨어로 구현될 수 있다. 실시예에 따라, 디바이스 드라이버(210) 및 IPC 드라이버(220)는 각각 커널 드라이버로서 커널(240)에 등록될 수 있다. 일 실시예에서, 디바이스 드라이버(210) 및 IPC 드라이버(220)는 각각 별개의 커널 드라이버로 구현될 수 있다. 다른 실시예에서, 디바이스 드라이버(210) 및 IPC 드라이버(220)는 하나의 커널 드라이버로 구현될 수 있다.Referring to FIG. 2A, a processor 200a includes a device driver 210, an IPC driver 220, and an application 230. In one embodiment, each of device driver 210, IPC driver 220, and application 230 may be implemented in dedicated hardware. In another embodiment, the device driver 210, the IPC driver 220, and the application 230, respectively, may be implemented in software running on general purpose hardware. According to the embodiment, the device driver 210 and the IPC driver 220 may each be registered in the kernel 240 as a kernel driver. In one embodiment, the device driver 210 and the IPC driver 220 may each be implemented as separate kernel drivers. In another embodiment, the device driver 210 and the IPC driver 220 may be implemented as a single kernel driver.

도 2a의 프로세서(200a)는 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)일 수 있다. 예를 들어, 도 1의 제 1 프로세서(200) 및 도 1의 제 2 프로세서(300) 각각은 데이터 전송을 요청하는 적어도 하나 이상의 어플리케이션(230), 어플리케이션(230)에 대한 IPC 채널을 관리하는 IPC 드라이버(220), 및 IPC 드라이버(220)로부터 데이터 패킷 또는 메시지를 도 1의 프로세서간 통신 장치(400)에 기입 또는 도 1의 프로세서간 통신 장치(400)로부터 독출할 것을 요청받는 디바이스 드라이버(210)를 실행할 수 있다.The processor 200a of FIG. 2A may be the first processor 200 of FIG. 1 or the second processor 300 of FIG. For example, each of the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 includes at least one application 230 requesting data transmission, an IPC managing an IPC channel for the application 230, Driver 220 and the IPC driver 220 to the inter-processor communication device 400 of FIG. 1 or to read from the inter-processor communication device 400 of FIG. 1 ).

디바이스 드라이버(210)는 IPC 드라이버(220)에 디바이스 응용 프로그램 인터페이스(application programming interface; API)를 제공한다. IPC 드라이버(220)가 상기 디바이스 API를 통하여 디바이스 드라이버(210)에 데이터 패킷 또는 메시지의 기입 또는 독출을 요청하면, 디바이스 드라이버(210)는 데이터 패킷 또는 메시지를 도 1의 프로세서간 통신 장치(400)에 기입하거나, 도 1의 프로세서 간 통신 장치(400)로부터 독출한다. 실시예에 따라, 디바이스 드라이버(210)는 라이브러리(library)로 구현될 수 있다.The device driver 210 provides a device application program interface (API) to the IPC driver 220. When the IPC driver 220 requests the device driver 210 to write or read a data packet or a message through the device API, the device driver 210 transmits a data packet or a message to the inter-processor communication device 400 of FIG. Or reads from the inter-processor communication device 400 of Fig. According to an embodiment, the device driver 210 may be implemented as a library.

IPC 드라이버(220)는 어플리케이션(230)에 IPC API를 제공하고, 디바이스 드라이버(210)의 상기 디바이스 API를 호출함으로써, 어플리케이션(230)과 디바이스 드라이버(210)를 연결하는 기능을 수행할 수 있다. 예를 들어, 어플리케이션(230)이 상기 IPC API로 제공된 IPC 드라이버(220)의 함수를 직접 또는 커널(240)을 통하여 호출하고, IPC 드라이버(220)가 상기 디바이스 API로 제공된 디바이스 드라이버(210)의 함수를 호출함으로써 어플리케이션(230)의 데이터 패킷이 도 1의 프로세서간 통신 장치(400)에 기입될 수 있다.The IPC driver 220 may provide an IPC API to the application 230 and perform a function of connecting the application 230 and the device driver 210 by calling the device API of the device driver 210. [ For example, when the application 230 calls the function of the IPC driver 220 provided in the IPC API directly or through the kernel 240, and the IPC driver 220 calls the function of the device driver 210 provided in the device API By calling the function, the data packet of the application 230 can be written to the inter-processor communication device 400 of FIG.

IPC 드라이버(220)는 복수의 IPC 채널들을 포함하고, 어플리케이션(230) 마다 적어도 하나 이상의 IPC 채널을 제공할 수 있다. 이에 따라, 어플리케이션(230) 각각의 데이터 패킷이 어플리케이션(230)에 상응하는 IPC 채널을 통하여 도 1의 프로세서간 통신 장치(400)에 기입되고, 도 1의 프로세서간 통신 장치(400)로부터 독출된 데이터 패킷이 상응하는 IPC 채널을 통하여 어플리케이션(230)에 전송됨으로써, 어플리케이션(230) 별로 독립적인 데이터 전송을 지원하여 도 1의 시스템(100)의 데이터 전송 속도를 향상시킬 수 있다.The IPC driver 220 may include a plurality of IPC channels and may provide at least one IPC channel for each application 230. Accordingly, the data packets of each of the applications 230 are written to the inter-processor communication device 400 of FIG. 1 through the IPC channel corresponding to the application 230, The data packet is transmitted to the application 230 through the corresponding IPC channel, thereby supporting independent data transmission for each application 230, thereby improving the data transmission speed of the system 100 of FIG.

어플리케이션(230)은 도 1의 제 1 프로세서(200)에서 실행되는 경우, 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션과 데이터 통신이 필요한 어플리케이션일 수 있다. 예를 들어, 어플리케이션(230)은 데이터를 복조하여 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션에 제공하는 모뎀 기능을 제공하는 프로 세스일 수 있다.The application 230 may be an application that requires data communication with an application executed by the second processor 300 of FIG. 1 when executed by the first processor 200 of FIG. For example, application 230 may be a process that provides modem functionality to demodulate data and provide it to applications running on second processor 300 of FIG.

도 2b를 참조하면, 프로세서(200b)는 디바이스 드라이버(210), IPC 드라이버(220), 제 1 어플리케이션(230) 및 제 2 어플리케이션(250)을 포함한다. 일 실시예에서, 디바이스 드라이버(210), IPC 드라이버(220), 제 1 어플리케이션(230) 및 제 2 어플리케이션(250) 각각은 전용 하드웨어로 구현될 수 있다. 다른 실시예에서, 디바이스 드라이버(210), IPC 드라이버(220) , 제 1 어플리케이션(230) 및 제 2 어플리케이션(250) 각각은 범용 하드웨어에서 실행되는 소프트웨어로 구현될 수 있다. 도 2b의 프로세서(200b)는, 도 2a의 프로세서(200a)와 달리, 데이터 전송을 필요로 하는 2개의 어플리케이션(230, 250)을 실행한다. 도 2a에서는 프로세서(200a)가 하나의 어플리케이션(230)을 실행하는 예가 도시되어 있고, 도 2b에서는 프로세서(200b)가 2개의 어플리케이션(230, 250)을 실행하는 예가 도시되어 있으나, 실시예에 따라 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)는 각각 데이터 전송을 필요로 하는 3개 이상의 어플리케이션들을 실행할 수 있다.Referring to FIG. 2B, the processor 200b includes a device driver 210, an IPC driver 220, a first application 230, and a second application 250. In one embodiment, the device driver 210, the IPC driver 220, the first application 230, and the second application 250, respectively, may be implemented with dedicated hardware. In another embodiment, the device driver 210, the IPC driver 220, the first application 230, and the second application 250, respectively, may be implemented as software running on general purpose hardware. The processor 200b of Fig. 2b executes two applications 230 and 250 that require data transfer, unlike the processor 200a of Fig. 2a. In FIG. 2A, an example in which the processor 200a executes one application 230 is shown, and in FIG. 2B, an example in which the processor 200b executes two applications 230 and 250 is shown. However, The first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 may each execute three or more applications that require data transfer.

IPC 드라이버(220)는 복수의 IPC 채널들을 포함하고, 제 1 및 제 2 어플리케이션(230, 250) 각각에 적어도 하나 이상의 IPC 채널을 제공할 수 있다. 예를 들어, 제 1 어플리케이션(230)은 제 1 IPC 채널을 통하여 데이터 패킷을 전송할 수 있고, 제 2 어플리케이션(250)은 제 2 IPC 채널 및 제 3 IPC 채널을 통하여 데이터 패킷을 전송할 수 있다. 제 1 어플리케이션(230) 및 제 2 어플리케이션(250)은 서로 다른 IPC 채널을 통하여 데이터 패킷을 도 1의 프로세서간 통신 장치(400)에 기입, 또는 도 1의 프로세서간 통신 장치(400)로부터 독출함으로써, 어플리케이 션(230, 250) 별로 독립적으로 데이터 패킷을 전송하여 도 1의 시스템(100)의 데이터 전송 속도가 향상될 수 있다.The IPC driver 220 may include a plurality of IPC channels and may provide at least one IPC channel to each of the first and second applications 230 and 250. For example, the first application 230 may transmit data packets over the first IPC channel and the second application 250 may transmit data packets over the second IPC channel and the third IPC channel. The first application 230 and the second application 250 write data packets to and from the inter-processor communication device 400 of FIG. 1 through different IPC channels or by reading from the inter-processor communication device 400 of FIG. 1 The data transmission rate of the system 100 of FIG. 1 can be improved by transmitting data packets independently for each of the applications 230 and 250.

도 3은 도 2a 또는 도 2b에 도시된 디바이스 드라이버를 나타내는 블록도이고, 도 4는 도 3에 도시된 디바이스 API의 일 예를 나타내는 도면이다.FIG. 3 is a block diagram showing the device driver shown in FIG. 2A or FIG. 2B, and FIG. 4 is a diagram showing an example of the device API shown in FIG.

도 3을 참조하면, 디바이스 드라이버(210)는 디바이스 API(211)를 포함한다. 일 실시예에서, 디바이스 API(211)는 도 2a 또는 도 2b의 IPC 드라이버(220)에 제공될 수 있다. 다른 실시예에서, 디바이스 API(211)는 도 2a의 어플리케이션(230) 또는 도 2b의 제 1 및 제 2 어플리케이션들(230, 250)에 제공될 수 있다. 실시예에 따라, 디바이스 드라이버(210)는 라이브러리로 구현될 수 있다.Referring to FIG. 3, the device driver 210 includes a device API 211. In one embodiment, the device API 211 may be provided to the IPC driver 220 of FIG. 2A or 2B. In another embodiment, the device API 211 may be provided in the application 230 of FIG. 2A or the first and second applications 230, 250 of FIG. 2B. According to an embodiment, the device driver 210 may be implemented as a library.

도 4를 참조하면, 디바이스 API(211a)는 메시지 전송 관련 함수들, 데이터 전송 관련 함수들 및 기타 함수들을 포함할 수 있다. 예를 들어, 디바이스 API(211a)는 메시지 기입 함수, 메시지 독출 함수, 데이터 패킷 기입 함수, 데이터 패킷 독출 함수, 초기화 함수, 소유권 확인 함수, 에러 확인 함수, 채널 어드레스 검색 함수 등을 포함할 수 있다. 상기 메시지 기입 함수는 도 1의 프로세서간 통신 장치(400)의 메일박스 영역에 메시지를 기입하는 함수이고, 상기 메시지 독출 함수는 상기 메일박스 영역으로부터 메시지를 독출하는 함수이며, 상기 데이터 패킷 기입 함수는 도 1의 프로세서간 통신 장치(400)의 공유 저장 영역에 하나 이상의 데이터 패킷을 기입하는 함수이고, 상기 데이터 패킷 독출 함수는 상기 공유 저장 영역으로부터 하나 이상의 데이터 패킷을 독출하는 함수이며, 상기 초기화 함수는 디바이스 드라이버(210)를 초기화하는 함수이고, 상기 소유권 확인 함수는 도 1의 프 로세서간 통신 장치(400)를 억세스 하여 상기 공유 저장 영역의 소유권을 어느 프로세서가 가지고 있는지 확인하는 함수이고, 상기 에러 확인 함수는 마지막에 발생된 디바이스 드라이버(210)의 에러를 코드 또는 메시지로 반환시키는 함수이고, 상기 채널 어드레스 검색 함수는 파라미터로 제공되는 상기 공유 저장 영역의 채널에 상응하는 어드레스를 반환시키는 함수이다. IPC 드라이버(220) 또는 어플리케이션(230)은 디바이스 드라이버(210)의 위와 같은 API를 통하여 도 1의 프로세서간 통신 장치(400)에 접근할 수 있다.Referring to FIG. 4, the device API 211a may include message transmission related functions, data transmission related functions, and other functions. For example, the device API 211a may include a message writing function, a message reading function, a data packet writing function, a data packet reading function, an initialization function, an ownership verification function, an error verification function, a channel address search function, The message write function is a function to write a message to a mailbox area of the inter-processor communication device 400 of FIG. 1, the message read function is a function to read a message from the mailbox area, 1 is a function of writing one or more data packets to a shared storage area of the inter-processor communication device 400 of FIG. 1, the data packet reading function is a function of reading one or more data packets from the shared storage area, Function is a function for initializing the device driver 210. The ownership confirmation function is a function for accessing the inter-processor communication device 400 of FIG. 1 to check which processor owns the ownership of the shared storage area, The error checking function may be used to code the last generated device driver 210 error code or message And the channel address search function is a function that returns an address corresponding to a channel of the shared storage area provided as a parameter. The IPC driver 220 or the application 230 can access the inter-processor communication device 400 of FIG. 1 through the API of the device driver 210 as described above.

도 5는 도 2a 또는 도 2b에 도시된 IPC 드라이버를 나타내는 블록도이고, 도 6은 도 5에 도시된 IPC API의 일 예를 나타내는 도면이며, 도 7은 도 5에 도시된 IPC 채널의 일 예를 나타내는 도면이다.5 is a block diagram showing the IPC driver shown in FIG. 2A or 2B, FIG. 6 is a diagram showing an example of the IPC API shown in FIG. 5, FIG. 7 is a diagram showing an example of the IPC channel shown in FIG. 5 Fig.

도 5를 참조하면, IPC 드라이버(220)는 IPC API(221), 복수의 IPC 채널들(223) 및 IPC 스레드(222)를 포함한다.Referring to FIG. 5, the IPC driver 220 includes an IPC API 221, a plurality of IPC channels 223, and an IPC thread 222.

IPC API(221)는 도 2a의 어플리케이션(230) 또는 도 2b의 제 1 및 제 2 어플리케이션들(230, 250)에 제공될 수 있고, 도 2a의 어플리케이션(230) 또는 도 2b의 제 1 및 제 2 어플리케이션들(230, 250)은 IPC API(221)의 함수들을 호출함으로써 데이터 패킷을 전송할 수 있다. 예를 들어, 도 2a의 어플리케이션(230)이 IPC API(221)의 함수를 직접 또는 도 2a의 커널(240)을 통하여 호출하고, IPC 드라이버(220)가 도 3의 디바이스 API의 함수를 호출함으로써 어플리케이션(230)의 데이터 패킷이 도 1의 프로세서간 통신 장치(400)에 기입될 수 있다.The IPC API 221 may be provided to the application 230 of FIG. 2A or the first and second applications 230 and 250 of FIG. 2B and may be provided to the application 230 of FIG. 2 applications 230 and 250 may transmit data packets by calling functions of the IPC API 221. [ For example, if the application 230 of FIG. 2A calls the function of the IPC API 221 directly or through the kernel 240 of FIG. 2A, and the IPC driver 220 calls the function of the device API of FIG. 3 The data packet of application 230 may be written to inter-processor communication device 400 of FIG.

복수의 IPC 채널들(223)은 도 2a의 어플리케이션(230) 또는 도 2b의 제 1 및 제 2 어플리케이션들(230, 250)에서 도 1의 프로세서간 통신 장치(400)로 전송되는 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들을 일시적으로 저장할 수 있고, 도 1의 프로세서간 통신 장치(400)에서 도 2a의 어플리케이션(230) 또는 도 2b의 제 1 및 제 2 어플리케이션들(230, 250)로 전송되는 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들을 일시적으로 저장할 수 있다. 또한, 복수의 IPC 채널들(223)은 어플리케이션들(230, 250) 각각에 하나 이상의 IPC 채널(223)을 제공할 수 있다. 이에 따라, 어플리케이션(230, 250) 별로 서로 다른 IPC 채널(223)을 통하여 독립적으로 데이터 패킷을 전송하여 도 1의 시스템(100)의 데이터 전송 속도가 향상될 수 있다.The plurality of IPC channels 223 may be data packets transmitted to the inter-processor communication device 400 of FIG. 1 in the application 230 of FIG. 2A or the first and second applications 230 and 250 of FIG. The interprocessor communication apparatus 400 of FIG. 1 may temporarily store pointers of the data packets and may transmit data to the application 230 of FIG. 2A or to the first and second applications 230 and 250 of FIG. Packets or pointers of the data packets. In addition, the plurality of IPC channels 223 may provide one or more IPC channels 223 to each of the applications 230, 250. Accordingly, the data transmission rate of the system 100 of FIG. 1 can be improved by independently transmitting data packets through the different IPC channels 223 for each of the applications 230 and 250.

IPC 스레드(222)는 복수의 IPC 채널들(223)을 관리할 수 있다. 실시예에 따라, IPC 스레드(222)는 단일 스레드(single thread)를 가질 수 있고, 두개 이상의 스레드들을 가질 수 있다. 예를 들어, 도 2a의 어플리케이션(230)이 IPC API(221)를 호출하여 상응하는 IPC 채널(223)에 데이터 패킷들 또는 데이터 패킷들의 포인터들을 기입하고, 상기 데이터 패킷들의 송신을 요청하는 경우, IPC 스레드(222)는 IPC 채널(223)에 기입된 상기 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들에 기초하여 도 3의 디바이스 API(211)의 데이터 패킷 기입 함수를 호출할 수 있다. 일 실시예에서, IPC 스레드(222)는, 도 1의 프로세서간 통신 장치(400)에서 인터럽트 신호(INT1, INT2)가 발생된 경우, 도 3의 디바이스 API(211)의 메시지 독출 함수를 호출할 수 있다.The IPC thread 222 may manage a plurality of IPC channels 223. According to an embodiment, the IPC thread 222 may have a single thread and may have more than two threads. For example, when the application 230 of FIG. 2A calls the IPC API 221 to write pointers to data packets or data packets to the corresponding IPC channel 223 and requests transmission of the data packets, The IPC thread 222 may call the data packet write function of the device API 211 of FIG. 3 based on the data packets written to the IPC channel 223 or pointers to the data packets. In one embodiment, the IPC thread 222 calls the message read function of the device API 211 of FIG. 3 when the interrupt signal INT1, INT2 is generated in the inter-processor communication device 400 of FIG. 1 .

도 6을 참조하면, IPC API(221a)는 데이터 전송 관련 함수들 및 기타 함수들 을 포함할 수 있다. 예를 들어, IPC API(221a)는 데이터 패킷 송신 함수, 데이터 패킷 수신 함수, 채널 오픈 함수, 채널 클로즈 함수, 설정 변경 함수 등을 포함할 수 있다.Referring to FIG. 6, the IPC API 221a may include data transfer related functions and other functions. For example, the IPC API 221a may include a data packet transmission function, a data packet reception function, a channel open function, a channel close function, a configuration change function, and the like.

상기 데이터 패킷 송신 함수는 어플리케이션(230)의 하나 이상의 데이터 패킷 또는 상기 하나 이상의 데이터 패킷의 포인터를 IPC 채널(223)에 저장한다. 일 실시예에서, 상기 데이터 패킷 송신 함수는 IPC 스레드(222)에 송신 이벤트를 제공할 수 있고, IPC 스레드(222)는 IPC 채널(223)에 저장된 데이터 패킷들 또는 데이터 패킷들의 포인터들에 기초하여 디바이스 드라이버(210)를 통하여 도 1의 프로세서간 통신 장치(400)에 상기 데이터 패킷들을 기입할 수 있다. 상기 데이터 패킷 수신 함수는 IPC 채널(223)에 저장된 하나 이상의 데이터 패킷 또는 상기 하나 이상의 데이터 패킷의 포인터를 어플리케이션(230)에 제공한다. 일 실시예에서, IPC 스레드(222)는 디바이스 드라이버(210)를 통하여 도 1의 프로세서간 통신 장치(400)로부터 데이터 패킷들을 독출할 수 있고, IPC 스레드(222)는 상기 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들을 IPC 채널(223)에 저장할 수 있다. IPC 스레드(222)는 어플리케이션(230)에 수신 이벤트를 제공하고, 어플리케이션(230)은 상기 데이터 패킷 수신 함수를 호출함으로써 IPC 채널(223)에 저장된 상기 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들을 수신할 수 있다. 일 실시예에서, 상기 데이터 패킷 수신 함수가 IPC 드라이버(220)에 등록된 어플리케이션(230)의 함수를 호출함으로써 상기 데이터 패킷들 또는 상기 데이터 패킷들의 포인터들이 어플리케이션(230)에 제공될 수 있다.The data packet transmission function stores in the IPC channel 223 one or more data packets of the application 230 or a pointer to the one or more data packets. In one embodiment, the data packet transmission function may provide a transmission event to the IPC thread 222, and the IPC thread 222 may send a transmission event to the IPC thread 222 based on pointers to data packets or data packets stored in the IPC channel 223 The device driver 210 may write the data packets to the inter-processor communication device 400 of FIG. The data packet receive function provides the application 230 with one or more data packets stored in the IPC channel 223 or a pointer to the one or more data packets. In one embodiment, the IPC thread 222 may read data packets from the inter-processor communication device 400 of FIG. 1 through the device driver 210 and the IPC thread 222 may read the data packets or the data And may store pointers of packets in the IPC channel 223. The IPC thread 222 provides a receive event to the application 230 and the application 230 receives the data packets stored in the IPC channel 223 or pointers to the data packets by calling the data packet receive function . In one embodiment, the data packets or pointers to the data packets may be provided to the application 230 by calling the function of the application 230 that the data packet receive function registers with the IPC driver 220.

상기 채널 오픈 함수는 IPC 채널(223)의 핸들(handle)을 반환한다. 일 실시예에서, IPC 드라이버(220)는 상기 채널 오픈 함수가 호출될 때 상응하는 IPC 채널(223)을 메모리, 예를 들어 도 1의 프로세서간 통신 장치(400)의 전용 저장 영역에 할당할 수 있다. 다른 실시예에서, IPC 드라이버(220)는 초기화될 때 복수의 IPC 채널들(223)을 할당하고, 상기 채널 오픈 함수가 호출될 때 미사용 중인 IPC 채널(223)의 핸들을 반환할 수 있다. 상기 채널 클로즈 함수는 IPC 채널(223)의 핸들을 해제한다. 일 실시예에서, IPC 드라이버(220)는 상기 채널 클로즈 함수가 호출될 때 메모리 에서 IPC 채널(223)을 해제할 수 있다. 다른 실시예에서, IPC 드라이버(220)는 상기 채널 클로즈 함수가 호출될 때 사용 여부를 나타내는 플래그 만을 변경할 수 있다. 상기 설정 변경 함수는 IPC 드라이버(220)의 설정 값을 변경한다. 예를 들어, 상기 설정 변경 함수는 IPC 채널들(223)의 수, IPC 채널(223)의 버퍼들의 수 등을 변경할 수 있다.The channel open function returns a handle of the IPC channel 223. In one embodiment, the IPC driver 220 may assign the corresponding IPC channel 223 to a memory, for example, a dedicated storage area of the inter-processor communication device 400 of FIG. 1, when the channel open function is called have. In another embodiment, the IPC driver 220 may allocate a plurality of IPC channels 223 when initialized and return a handle of the unused IPC channel 223 when the channel open function is called. The channel close function releases the handle of the IPC channel 223. In one embodiment, the IPC driver 220 may release the IPC channel 223 in memory when the channel close function is called. In another embodiment, the IPC driver 220 may change only flags indicating whether to use or not when the channel close function is called. The setting change function changes the setting value of the IPC driver 220. [ For example, the configuration change function may change the number of IPC channels 223, the number of buffers of the IPC channel 223, and the like.

도 7을 참조하면, IPC 채널(223a)은 데이터 패킷 송신 큐(224) 및 데이터 패킷 수신 큐(225)를 포함한다. 데이터 패킷 송신 큐(224)는 제 1 송신버퍼(2241), 제 2 송신버퍼(2242) 및 제 3 송신버퍼(2243)를 포함하고, 데이터 패킷 수신 큐(225)는 제 1 수신버퍼(2251), 제 2 수신버퍼(2252) 및 제 3 수신버퍼(2253)를 포함한다.Referring to FIG. 7, the IPC channel 223a includes a data packet transmission queue 224 and a data packet reception queue 225. The data packet transmission queue 224 includes a first transmission buffer 2241, a second transmission buffer 2242 and a third transmission buffer 2243. The data packet reception queue 225 includes a first reception buffer 2251, A second reception buffer 2252, and a third reception buffer 2253.

데이터 패킷 송신 큐(224) 및 데이터 패킷 수신 큐(225)는 각각 선입선출(first-in first-out; FIFO)로 동작할 수 있다. 제 1 송신버퍼(2241), 제 2 송신버퍼(2242) 및 제 3 송신버퍼(2243) 각각에는 어플리케이션(230)에서 디바이스 드 라이버(210)를 통하여 도 1의 프로세서간 통신 장치(400)로 전송되는 하나의 데이터 패킷에 대한 정보, 즉 상기 데이터 패킷의 포인터 및 상기 데이터 패킷의 길이가 저장될 수 있다. 또한, 제 1 수신버퍼(2251), 제 2 수신버퍼(2252) 및 제 3 수신버퍼(2253) 각각에는 도 1의 프로세서간 통신 장치(400)에서 디바이스 드라이버(210)를 통하여 어플리케이션(230)으로 전송되는 하나의 데이터 패킷에 대한 정보, 즉 상기 데이터 패킷의 포인터 및 상기 데이터 패킷의 길이가 저장될 수 있다.The data packet transmit queue 224 and the data packet receive queue 225 may each operate as a first-in first-out (FIFO). To the inter-processor communication apparatus 400 of FIG. 1 through the device driver 210 in the application 230, to the first transmission buffer 2241, the second transmission buffer 2242, and the third transmission buffer 2243, respectively. Information on one data packet, i.e., the pointer of the data packet and the length of the data packet can be stored. 1 to the application 230 through the device driver 210 in the inter-processor communication device 400 of FIG. 1 to the first reception buffer 2251, the second reception buffer 2252 and the third reception buffer 2253 Information on one data packet to be transmitted, that is, the pointer of the data packet and the length of the data packet can be stored.

이와 같이, IPC 채널(223a)의 데이터 패킷 송신 큐(224) 및 데이터 패킷 수신 큐(225)에 데이터 패킷들이 저장되지 않고, 상기 데이터 패킷들의 포인터들 및/또는 길이들이 저장됨으로써, 상기 데이터 패킷들에 대한 복사 동작이 수행되지 않을 수 있다. 이에 따라, 도 1의 시스템(100)의 데이터 전송 속도가 향상될 수 있다.As such, data packets are not stored in the data packet transmission queue 224 and the data packet reception queue 225 of the IPC channel 223a, and the pointers and / or lengths of the data packets are stored, The copy operation may not be performed. Accordingly, the data transmission rate of the system 100 of FIG. 1 can be improved.

도 8은 도 1의 시스템에 포함된 프로세서간 통신 장치를 나타내는 블록도이다.8 is a block diagram illustrating an inter-processor communication device included in the system of FIG.

도 8을 참조하면, 프로세서간 통신 장치(400a)는 제 1 포트(431), 제 2 포트(432), 제 1 전용 저장 영역(411), 제 2 전용 저장 영역(413, 414), 공유 저장 영역(412), 세마포어 영역(421) 및 메일박스 영역(422, 423)을 포함한다.8, the inter-processor communication device 400a includes a first port 431, a second port 432, a first dedicated storage area 411, a second dedicated storage area 413 and 414, An area 412, a semaphore area 421, and mailbox areas 422 and 423.

제 1 포트(431)는 도 1의 제 1 프로세서(200)에 연결되고, 제 2 포트(432)는 도 1의 제 2 프로세서(300)에 연결된다. 또한, 제 1 포트(431)는 프로세서간 통신 장치(400a) 내에서 제 1 전용 저장 영역(411) 및 공유 저장 영역(412)에 연결되고, 제 2 포트(432)는 프로세서간 통신 장치(400a) 내에서 제 2 전용 저장 영역(413, 414) 및 공유 저장 영역(412)에 연결된다. 이에 따라, 도 1의 제 1 프로세서(200)는 제 1 포트(431)를 통하여 제 1 전용 저장 영역(411) 및 공유 저장 영역(412)을 억세스 할 수 있고, 도 1의 제 2 프로세서(300)는 제 2 포트(432)를 통하여 제 2 전용 저장 영역(413, 414) 및 공유 저장 영역(412)을 억세스 할 수 있다.The first port 431 is coupled to the first processor 200 of FIG. 1 and the second port 432 is coupled to the second processor 300 of FIG. Also, the first port 431 is connected to the first dedicated storage area 411 and the shared storage area 412 in the inter-processor communication device 400a, and the second port 432 is connected to the inter-processor communication device 400a (413, 414) and the shared storage area (412) within the first dedicated storage area (413, 414). Accordingly, the first processor 200 of FIG. 1 can access the first dedicated storage area 411 and the shared storage area 412 via the first port 431, and the second processor 300 May access the second dedicated storage area 413, 414 and the shared storage area 412 through the second port 432. [

제 1 전용 저장 영역(411)은 제 1 포트(431)를 통하여 도 1의 제 1 프로세서(200)에 연결되고, 도 1의 제 1 프로세서(200)에서 실행되는 어플리케이션의 코드 및/또는 데이터를 저장할 수 있다. 제 2 전용 저장 영역(413, 414)은 제 2 포트(432)를 통하여 도 1의 제 2 프로세서(300)에 연결되고, 도 1의 제 2 프로세서(300)에서 실행되는 프로그램의 코드 및/또는 데이터를 저장할 수 있다. 이에 따라, 도 1의 제 1 프로세서(200)에 대한 제 1 전용 저장 영역(411)이 도 1의 제 1 프로세서(200)가 실행하는 프로그램의 코드 및/또는 데이터를 저장하기 위한 추가적인 메모리를 대체하고, 도 1의 제 2 프로세서(300)에 대한 제 2 전용 저장 영역(413, 414)이 도 1의 제 2 프로세서(300)가 실행하는 프로그램의 코드 및/또는 데이터를 저장하기 위한 추가적인 메모리를 대체함으로써, 전체 시스템에서 요구되는 메모리 장치의 수를 줄일 수 있고, 전력 소모를 줄일 수 있다.The first dedicated storage area 411 is connected to the first processor 200 of FIG. 1 through a first port 431 and stores code and / or data of an application executed by the first processor 200 of FIG. 1 Can be stored. The second dedicated storage area 413 and 414 are connected to the second processor 300 of FIG. 1 through a second port 432 and are coupled to the code of the program executed by the second processor 300 of FIG. 1 and / Data can be stored. Accordingly, the first dedicated storage area 411 for the first processor 200 of FIG. 1 replaces the additional memory for storing the code and / or data of the program executed by the first processor 200 of FIG. And the second dedicated storage area 413, 414 for the second processor 300 of FIG. 1 is an additional memory for storing the code and / or data of the program executed by the second processor 300 of FIG. 1 By replacing, the number of memory devices required in the whole system can be reduced, and power consumption can be reduced.

공유 저장 영역(412)은 제 1 포트(431) 또는 제 2 포트(432)를 통하여 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)에 선택적으로 연결된다. 즉, 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300) 중 공유 저장 영역(412)에 대한 소유권을 가진 어느 하나의 프로세서 만이 공유 저장 영역(412)을 억세스 할 수 있다. 공유 저장 영역(412)은 도 1의 제 1 프로세서(200)와 도 1의 제 2 프로세서(300) 사이에서 전송되는 복수의 데이터 패킷들을 저장할 수 있다. 실시예에 따라, 공유 저장 영역(412)은 복수의 채널들로 구분될 수 있고, 상기 복수의 채널들 각각은 복수의 버퍼들로 구분될 수 있다. 상기 복수의 버퍼들 각각에는 하나의 데이터 패킷이 저장될 수 있다. 공유 저장 영역(412)이 복수의 채널들로 구분되고, 데이터 패킷들이 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션에 따라 각 채널에 기입 및 독출됨으로써, 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)는 상기 데이터 패킷들 각각의 헤더를 분석하는 복잡한 처리를 수행하지 않을 수 있다. 이에 따라, 도 1의 시스템(100)의 데이터 전송 속도가 더욱 향상될 수 있다.The shared storage area 412 is selectively connected to either the first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 via the first port 431 or the second port 432. That is, only one processor having ownership of the shared storage area 412 among the first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 can access the shared storage area 412. The shared storage area 412 may store a plurality of data packets transmitted between the first processor 200 of FIG. 1 and the second processor 300 of FIG. According to an embodiment, the shared storage area 412 can be divided into a plurality of channels, and each of the plurality of channels can be divided into a plurality of buffers. One data packet may be stored in each of the plurality of buffers. The shared storage area 412 is divided into a plurality of channels and data packets are written to and read from the respective channels according to the application executed in the first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 , The first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 may not perform a complicated process of analyzing the header of each of the data packets. Accordingly, the data transmission rate of the system 100 of FIG. 1 can be further improved.

일 실시예에서, 제 1 전용 저장 영역(411), 제 2 전용 저장 영역(413, 414) 및 공유 저장 영역(412)은 각각 하나 또는 그 이상의 메모리 뱅크들일 수 있고, 프로세서간 통신 장치(400a)는 동적 랜덤 억세스 메모리(DRAM)일 수 있다. 예를 들어, 제 1 전용 저장 영역(411)은 제 1 메모리 뱅크(BANK A)를 포함하고, 제 2 전용 저장 영역(413, 414)은 제 3 및 제 4 메모리 뱅크들(BANK C, BANK D)을 포함하며, 공유 저장 영역(412)은 제 2 메모리 뱅크(BANK B)를 포함할 수 있고, 제 1 내지 제 4 메모리 뱅크들(BANK A, BANK B, BANK C, BANK D) 각각은 행과 열의 매트릭스 형태로 배치되는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 하나의 억세스 트랜지스터 및 스토리지 커패시터로 이루어진 동적 랜덤 억세스 메모리 셀일 수 있다. 예를 들어, 제 1 내지 제 4 메모리 뱅크들(BANK A, BANK B, BANK C, BANK D) 각각은 16MB, 64MB, 128MB, 256MB, 512MB 등의 메모리 용량을 가 질 수 있다.In one embodiment, the first dedicated storage area 411, the second dedicated storage area 413, 414 and the shared storage area 412 may each be one or more memory banks, and the inter-processor communication device 400a, May be a dynamic random access memory (DRAM). For example, the first dedicated storage area 411 includes a first memory bank BANK A and the second dedicated storage areas 413 and 414 include third and fourth memory banks BANK C and BANK D ), And the shared storage area 412 may include a second memory bank (BANK B), and each of the first to fourth memory banks (BANK A, BANK B, BANK C, and BANK D) And a plurality of memory cells arranged in a matrix of columns, each of the plurality of memory cells being a dynamic random access memory cell consisting of one access transistor and a storage capacitor. For example, each of the first to fourth memory banks BANK A, BANK B, BANK C, and BANK D may have a memory capacity of 16 MB, 64 MB, 128 MB, 256 MB, and 512 MB.

실시예에 따라, 프로세서간 통신 장치(400a)는 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)로부터 수신된 제어 신호들에 응답하여 공유 저장 영역(412)을 제 1 포트(431) 또는 제 2 포트(432)에 선택적으로 연결하는 억세스 경로 형성부를 포함할 수 있다. 일 실시예에서, 상기 억세스 경로 형성부는 상기 제어 신호들을 논리 조합하여 경로 결정 신호를 생성하는 경로 결정부, 상기 경로 결정 신호에 응답하여 제 1 포트(431) 또는 제 2 포트(432)를 통해 인가되는 로우 및 컬럼 어드레스들 중 하나의 로우 및 컬럼 어드레스를 선택하여 공유 저장 영역(412)과 연결되어 있는 로우 디코더 및 컬럼 디코더에 인가하는 로우 및 컬럼 어드레스 멀티플렉서들, 상기 경로 결정 신호에 응답하여 공유 저장 영역(412)의 글로벌 입출력 라인쌍을 제 1 데이터 입출력 라인쌍 또는 제 2 데이터 입출력 라인쌍에 선택적으로 연결하는 제 1 및 제 2 글로벌 멀티플렉서들, 및 제 1 및 제 2 글로벌 멀티플렉서들과 제 1 및 제 2 포트들(431,432) 사이에 각각 설치된 제 1 및 제 2 입출력 회로들을 포함할 수 있다.In accordance with an embodiment, the inter-processor communication device 400a may communicate the shared storage area 412 to the first processor 200 in response to control signals received from the first processor 200 of FIG. 1 or the second processor 300 of FIG. And an access path forming part for selectively connecting to the port 431 or the second port 432. In one embodiment, the access path forming unit includes a path determining unit for generating a path determining signal by logically combining the control signals, and a path determining unit for determining whether or not the path determining signal is input through the first port 431 or the second port 432 Row and column address multiplexers for selecting one of the row and column addresses to be applied to a row decoder and a column decoder connected to the shared storage area 412, First and second global multiplexers for selectively coupling the global input / output line pair of region 412 to a first data input / output line pair or a second data input / output line pair, and first and second global multiplexers, And first and second input / output circuits provided between the second ports 431 and 432, respectively.

세마포어 영역(421)은 공유 저장 영역(412)의 소유권에 관한 정보를 저장할 수 있다. 일 실시예에서, 세마포어 영역(421)의 특정 비트가 로직 “1”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 1 프로세서(200)가 가지고, 세마포어 영역(421)의 특정 비트가 로직 “0”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 2 프로세서(300)가 가질 수 있다. 다른 실시예에서, 세마포어 영역(421)의 특정 비트는 임의의 프로세서가 공유 저장 영역(412)을 점유하고 있는지 여부만을 나타 낼 수 있다. 실시예에 따라, 공유 저장 영역(412)이 복수의 뱅크들을 포함하는 경우, 세마포어 영역(421)은 복수의 비트들을 저장할 수 있다.Semaphore area 421 may store information about ownership of shared storage area 412. In one embodiment, the first processor 200 of FIG. 1 has ownership of the shared storage area 412 when a particular bit of the semaphore area 421 is a logic " 1 " The second processor 300 of FIG. 1 may have ownership of the shared storage area 412 if it is a logic " 0 ". In another embodiment, a particular bit in the semaphore area 421 may only indicate whether or not any processor occupies the shared storage area 412. According to an embodiment, if the shared storage area 412 includes a plurality of banks, the semaphore area 421 may store a plurality of bits.

메일박스 영역(422, 423)은 도 1의 제 1 프로세서(200)와 도 1의 제 2 프로세서(300) 사이에서 전송되는 메시지를 저장한다. 예를 들어, 도 1의 제 1 프로세서(200)와 도 1의 제 2 프로세서(300) 사이에서 전송되는 메시지는 공유 저장 영역(412)의 소유권에 관한 메시지, 데이터 전송에 관한 메시지, 공유 저장 영역(412)의 채널 상태에 관한 메시지 중 어느 하나일 수 있다. 또한, 상기 전송되는 메시지가 데이터 전송에 관한 메시지인 경우, 상기 전송되는 메시지는 상기 전송되는 메시지가 데이터 전송에 관한 메시지임을 표시하는 커맨드 및 현재 전송되는 데이터 패킷들에 대한 정보를 표시하는 데이터 전송 정보를 포함할 수 있다. 일 실시예에서, 메일박스 영역(422, 423)은 도 1의 제 1 프로세서(200)로부터 도 1의 제 2 프로세서(300)로 전송되는 메시지를 저장하기 위한 제 1 메일박스(422) 및 도 1의 제 2 프로세서(300)로부터 도 1의 제 1 프로세서(200)로 전송되는 메시지를 저장하기 위한 제 2 메일박스(423)를 포함할 수 있다. 제 1 메일박스(422)에 메시지가 기입되면, 도 1의 제 2 프로세서(300)로 제 1 인터럽트 신호(INT1)가 송신되고, 제 2 메일박스(423)에 메시지가 기입되면, 도 1의 제 1 프로세서(200)로 제 2 인터럽트 신호(INT2)가 송신된다. 도 1의 제 1 프로세서(200) 및 도 1의 제 2 프로세서(300)가 제 1 인터럽트 신호(INT1) 및 제 2 인터럽트 신호(INT2)를 각각 수신하면, 도 1의 제 1 프로세서(200) 및 도 1의 제 2 프로세서(300)는 제 1 메일박스(422) 및 제 2 메일박스(423)에 저장된 메시지들을 각각 독출한다.The mailbox areas 422 and 423 store messages transmitted between the first processor 200 of FIG. 1 and the second processor 300 of FIG. For example, messages transmitted between the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 may include messages relating to ownership of the shared storage area 412, messages relating to data transfer, And the channel state of the second channel 412. In addition, when the transmitted message is a message related to data transmission, the transmitted message includes a command indicating that the transmitted message is a message related to data transmission and data transmission information indicating information on currently transmitted data packets . ≪ / RTI > In one embodiment, the mailbox areas 422 and 423 include a first mailbox 422 for storing messages sent from the first processor 200 of FIG. 1 to the second processor 300 of FIG. 1, 1 for storing a message sent from the second processor 300 of FIG. 1 to the first processor 200 of FIG. When a message is written to the first mailbox 422, the first interrupt signal INT1 is transmitted to the second processor 300 of FIG. 1 and the message is written to the second mailbox 423, The second interrupt signal INT2 is transmitted to the first processor 200. [ When the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 respectively receive the first interrupt signal INT1 and the second interrupt signal INT2, the first processor 200 and the second processor 300 of FIG. The second processor 300 of FIG. 1 reads the messages stored in the first mailbox 422 and the second mailbox 423, respectively.

일 실시예에서, 도 1의 제 1 프로세서(200)로 제 2 인터럽트 신호(INT2)가 송신되면, 도 2a의 커널(240)은 등록된 인터럽트 핸들러를 호출할 수 있다. 예를 들어, 도 2a의 IPC 드라이버(220)는 도 2a의 커널(240)에 제 2 인터럽트 신호(INT2)에 대한 상기 인터럽트 핸들러를 등록할 수 있고, 도 2a의 커널(240)은 제 2 인터럽트 신호(INT2)를 수신하면 상기 인터럽트 핸들러를 호출할 수 있다. 상기 인터럽트 핸들러를 통하여 도 2a의 IPC 드라이버(220)가 제 2 메일박스(423)에 메시지가 기입된 것을 알게 되면, 도 5의 IPC 스레드(222)는 도 3의 디바이스 API(211)의 메시지 독출 함수를 호출함으로써, 제 2 메일박스(423)에 기입된 메시지를 독출할 수 있다.In one embodiment, when the second interrupt signal INT2 is sent to the first processor 200 of FIG. 1, the kernel 240 of FIG. 2A may call the registered interrupt handler. For example, the IPC driver 220 of FIG. 2A may register the interrupt handler for the second interrupt signal INT2 in the kernel 240 of FIG. 2A, and the kernel 240 of FIG. When the signal INT2 is received, the interrupt handler can be called. When the IPC driver 220 of FIG. 2A learns that a message has been written to the second mailbox 423 through the interrupt handler, the IPC thread 222 of FIG. 5 reads the message of the device API 211 of FIG. 3 Function, the message written in the second mailbox 423 can be read.

실시예에 따라, 세마포어 영역(421) 및 메일박스 영역(422, 423)은 프로세서간 통신 장치(400a)의 내부 레지스터(420)로 구현될 수 있다. 일 실시예에서, 세마포어 영역(421) 및 메일박스 영역(422, 423)은 각각 별개의 레지스터로 구현될 수 있다. 다른 실시예에서, 세마포어 영역(421) 및 메일박스 영역(422, 423)은 하나의 레지스터로 구현될 수 있다. 일 실시예에서, 도 1의 제 1 프로세서(200) 및 도 1의 제 2 프로세서(300)는 공유 저장 영역(412)을 억세스 하는 방식과 유사한 방식으로 세마포어 영역(421) 및 메일박스 영역(422, 423)를 억세스 할 수 있다. 예를 들어, 공유 저장 영역(412)의 임의의 행(row)에 상응하는 로우 어드레스가 세마포어 영역(421) 및 메일박스 영역(422, 423)에 할당될 수 있다. 즉, 특정 어드레스, 예를 들어 1FFF800h 내지 1FFFFFFh 사이의 어드레스가 인가될 때, 공유 저장 영역(412)의 행 대신 세마포어 영역(421) 및 메일박스 영역(422, 423)이 인에이블 될 수 있 다. 실시예에 따라, 프로세서간 통신 장치(400a)는 상기 특정 어드레스에 대응하는 메모리 셀들의 억세스를 방지하고 세마포어 영역(421) 및 메일박스 영역(422, 423)를 인에이블 하기 위한 레지스터 억세스 회로를 더 포함할 수 있다.According to the embodiment, the semaphore area 421 and the mailbox areas 422 and 423 may be implemented as an internal register 420 of the inter-processor communication device 400a. In one embodiment, semaphore area 421 and mailbox areas 422 and 423 may each be implemented as separate registers. In another embodiment, semaphore area 421 and mailbox areas 422 and 423 may be implemented as a single register. In one embodiment, the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 access the semaphore area 421 and the mailbox area 422 in a similar manner to accessing the shared storage area 412 , And 423 can be accessed. For example, a row address corresponding to any row of the shared storage area 412 may be assigned to the semaphore area 421 and the mailbox areas 422 and 423. That is, the semaphore area 421 and the mailbox areas 422 and 423 may be enabled instead of the row of the shared storage area 412 when an address between a specific address, for example, 1FFF800h to 1FFFFFFh is applied. According to the embodiment, the inter-processor communication device 400a further includes a register access circuit for preventing access to the memory cells corresponding to the specific address and for enabling the semaphore area 421 and the mailbox areas 422 and 423 .

예를 들어, 도 1의 제 1 프로세서(200)에서 도 1의 제 2 프로세서(300)로 데이터를 전송할 경우, 도 1의 제 1 프로세서(200)는 메일박스 영역(422, 423)을 활용한 메시지 전송을 통하여 공유 저장 영역(412)에 대한 소유권을 획득할 수 있다. 도 1의 제 1 프로세서(200)는 공유 저장 영역(412)의 채널에 데이터 패킷들을 기입하고, 제 1 메일박스(422)에 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보를 기입함으로써, 도 1의 제 2 프로세서(300)가 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보에 기초하여 상기 데이터 패킷들에 대한 별도의 분석 없이 상기 데이터 패킷들을 독출할 수 있다. 또한, 도 1의 제 1 프로세서(200)와 도 1의 제 2 프로세서(300) 사이의 소유권 교환을 최소화할 수 있는 버스트 전송을 통하여 프로세서간 데이터 전송 속도가 향상될 수 있다.For example, when data is transmitted from the first processor 200 of FIG. 1 to the second processor 300 of FIG. 1, the first processor 200 of FIG. 1 utilizes the mailbox areas 422 and 423 It is possible to acquire ownership of the shared storage area 412 through message transmission. 1 writes data packets to the channel of the shared storage area 412 and writes the data transfer command and the data transfer information in the first mailbox 422, 2 processor 300 may read the data packets without further analysis of the data packets based on the data transfer command and the data transfer information. In addition, the inter-processor data transfer rate can be improved through the burst transfer which can minimize the ownership exchange between the first processor 200 of FIG. 1 and the second processor 300 of FIG.

도 9는 도 8의 프로세서간 통신 장치에 포함된 공유 저장 영역을 나타내는 블록도이다.9 is a block diagram illustrating a shared storage area included in the inter-processor communication device of FIG.

도 9를 참조하면, 공유 저장 영역(412)은 복수의 채널들(CH1, CH2, CHN)을 포함한다. 복수의 채널들(CH1, CH2, CHN) 각각은 제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L, TX_BUF21, TX_BUF22, TX_BUF23, TX_BUF2L, TX_BUFN1, TX_BUFN2, TX_BUFN3, TX_BUFNL) 및 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M, RX_BUF21, RX_BUF22, RX_BUF23, RX_BUF2M, RX_BUFN1, RX_BUFN2, RX_BUFN3, RX_BUFNM)을 포함한다.Referring to FIG. 9, the shared storage area 412 includes a plurality of channels CH1, CH2, and CHN. Each of the plurality of channels CH1, CH2 and CHN includes first buffers TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L, TX_BUF21, TX_BUF22, TX_BUF23, TX_BUF2L, TX_BUFN1, TX_BUFN2, TX_BUFN3, TX_BUFNL and second buffers RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M, RX_BUF21, RX_BUF22, RX_BUF23, RX_BUF2M, RX_BUFN1, RX_BUFN2, RX_BUFN3, RX_BUFNM.

복수의 채널들(CH1, CH2, CHN) 각각에 포함된 제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L, TX_BUF21, TX_BUF22, TX_BUF23, TX_BUF2L, TX_BUFN1, TX_BUFN2, TX_BUFN3, TX_BUFNL)의 수 및 사이즈와, 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M, RX_BUF21, RX_BUF22, RX_BUF23, RX_BUF2M, RX_BUFN1, RX_BUFN2, RX_BUFN3, RX_BUFNM)의 수 및 사이즈는 실시예에 따라 다양하게 변경될 수 있다. 복수의 채널들(CH1, CH2, CHN)의 수 및 사이즈 또한 실시예에 따라 다양하게 변경될 수 있다.The number and size of the first buffers (TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L, TX_BUF21, TX_BUF22, TX_BUF23, TX_BUF2L, TX_BUFN1, TX_BUFN2, TX_BUFN3, TX_BUFNL) included in each of the plurality of channels CH1, CH2, The number and size of the second buffers RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M, RX_BUF21, RX_BUF22, RX_BUF23, RX_BUF2M, RX_BUFN1, RX_BUFN2, RX_BUFN3, RX_BUFNM may be variously changed according to the embodiment. The number and size of the plurality of channels (CH1, CH2, CHN) may also be variously changed according to the embodiment.

복수의 채널들(CH1, CH2, CHN) 각각에는 복수의 데이터 패킷들이 저장된다. 실시예에 따라, 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션에 따라 상기 어플리케이션이 송신 또는 수신하는 복수의 데이터 패킷들이 저장되는 채널(CH1, CH2, CHN)이 결정될 수 있다. 즉, 복수의 데이터 패킷들이 저장되는 위치가 결정되어 있으므로, 상기 복수의 데이터 패킷들을 송신하는 프로세서는 각 데이터 패킷에 저장되는 위치, 수신하는 어플리케이션의 지정 등의 헤더를 추가하는 처리를 할 필요가 없고, 상기 복수의 데이터 패킷들을 수신하는 프로세서는 각 데이터 패킷을 분석하여 지정된 어플리케이션을 확인하는 등의 처리를 할 필요가 없다. 이에 따라, 프로세서간 통신을 위한 처리가 간단하게 구현될 수 있다.Each of the plurality of channels (CH1, CH2, CHN) stores a plurality of data packets. According to an embodiment of the present invention, a channel (CH 1, CH 2, CH 3) in which a plurality of data packets transmitted or received by the application is stored according to an application executed in the first processor 200 of FIG. 1 or the second processor 300 of FIG. CHN) can be determined. In other words, since a position where a plurality of data packets are stored is determined, the processor that transmits the plurality of data packets does not need to add a header such as a location stored in each data packet, designation of an application to be received , The processor that receives the plurality of data packets does not need to perform processing such as analyzing each data packet to identify a specified application. Thus, processing for interprocessor communication can be implemented simply.

일 실시예에서, 공유 저장 영역(412)의 복수의 채널들(CH1, CH2, CHN)은 도 5의 IPC 드라이버(200)의 복수의 IPC 채널들(223)과 각각 상응할 수 있다. 예를 들 어, 공유 저장 영역(412)의 제 1 채널(CH1)은 도 5의 IPC 드라이버(200)의 제 1 채널(IPC CH1)과 상응하고, 공유 저장 영역(412)의 제 2 채널(CH2)은 도 5의 IPC 드라이버(200)의 제 2 채널(IPC CH2)과 상응할 수 있다. 이 경우, 도 5의 IPC 드라이버(200)의 제 1 채널(IPC CH1)로부터 공유 저장 영역(412)에 저장되는 복수의 데이터 패킷들은 제 1 채널(CH1)에 기입될 수 있고, 도 5의 IPC 드라이버(200)의 제 2 채널(IPC CH2)로부터 공유 저장 영역(412)에 저장되는 복수의 데이터 패킷들은 제 2 채널(CH2)에 기입될 수 있다. 또한, 제 1 채널(CH1)에 저장된 복수의 데이터 패킷들이 독출될 때, 도 5의 IPC 드라이버(200)의 제 1 채널(IPC CH1)에 상기 복수의 데이터 패킷들 또는 상기 복수의 데이터 패킷들의 포인터들이 저장될 수 있다. 일 실시예에서, 도 1의 제 1 프로세서(200)에서 실행되는 제 1 어플리케이션은 IPC 채널을 오픈 함으로써 제 1 IPC 채널을 지정할 수 있고, 상기 제 1 IPC 채널은 공유 저장 영역(412)의 복수의 채널들(CH1, CH2, CHN) 중 어느 하나의 채널에 상응하도록 지정될 수 있으며, 도 2의 제 2 프로세서(300)에서 실행되는 제 2 어플리케이션 또한 공유 저장 영역(412)의 상기 어느 하나의 채널에 상응하는 제 2 IPC 채널을 오픈 할 수 있다. 이에 따라, 상기 제 1 어플리케이션에서 송신되는 복수의 데이터 패킷들은 별도의 데이터 패킷에 대한 분석 없이 상기 제 2 어플리케이션이 수신할 수 있고, 상기 제 2 어플리케이션에서 송신되는 복수의 데이터 패킷들은 별도의 데이터 패킷에 대한 분석 없이 상기 제 1 어플리케이션이 수신할 수 있다.In one embodiment, the plurality of channels (CH1, CH2, CHN) of the shared storage area 412 may correspond to a plurality of IPC channels 223 of the IPC driver 200 of FIG. For example, the first channel CH1 of the shared storage area 412 corresponds to the first channel IPC CH1 of the IPC driver 200 of FIG. 5, and the second channel CH1 of the shared storage area 412 corresponds to the first channel CH2 may correspond to the second channel (IPC CH2) of the IPC driver 200 of FIG. In this case, a plurality of data packets stored in the shared storage area 412 from the first channel (IPC CH1) of the IPC driver 200 of FIG. 5 may be written to the first channel CH1, A plurality of data packets stored in the shared storage area 412 from the second channel (IPC CH2) of the driver 200 can be written to the second channel (CH2). When a plurality of data packets stored in the first channel CH1 are read out, the first channel (IPC CH1) of the IPC driver 200 of FIG. 5 stores the plurality of data packets or the pointer of the plurality of data packets Can be stored. In one embodiment, a first application running in the first processor 200 of FIG. 1 may specify a first IPC channel by opening an IPC channel, A second application executed in the second processor 300 of FIG. 2 may also be designated to correspond to any one of the channels CH1, CH2, CHN, Lt; RTI ID = 0.0 > IPC < / RTI > Accordingly, the plurality of data packets transmitted in the first application can be received by the second application without analyzing a separate data packet, and the plurality of data packets transmitted in the second application can be received in a separate data packet Can be received by the first application without being analyzed.

공유 저장 영역(412)이 복수의 채널들(CH1, CH2, CHN)을 포함하고, 각각의 프로세서에서 실행되는 IPC 드라이버가 복수의 IPC 채널들을 포함함으로써, 어플리 케이션 또는 어플리케이션의 서비스에 따라 상응하는 IPC 채널 및 공유 저장 영역(412)의 상응하는 채널을 통하여 데이터 패킷을 효율적으로 전송하는 어플리케이션 또는 어플리케이션의 서비스 별 병렬 통신이 가능하다. 또한, 어플리케이션 또는 어플리케이션의 서비스 별로 하나 이상의 IPC 채널 및 공유 저장 영역(412)의 하나 이상의 채널을 지정함으로써 데이터 패킷의 헤더를 추출하고, 추출된 헤더를 분석하는 등의 처리 없이 데이터 패킷을 전송할 수 있어 시스템의 데이터 전송 속도를 향상시킬 수 있다.The shared storage area 412 includes a plurality of channels CH1, CH2, CHN, and the IPC driver executing in each processor includes a plurality of IPC channels, so that the corresponding IPC Service-parallel communication of an application or an application that efficiently transmits data packets through a channel and a corresponding channel of the shared storage area 412 is possible. In addition, one or more IPC channels and one or more channels of the shared storage area 412 may be designated for each service of an application or an application, so that a data packet can be transmitted without extracting a header of the data packet and analyzing the extracted header The data transmission speed of the system can be improved.

도 10는 도 9의 공유 저장 영역에 포함된 채널을 나타내는 블록도이고, 도 11은 도 10의 채널에 포함된 버퍼에 저장되는 데이터 패킷을 나타내는 도면이다.FIG. 10 is a block diagram illustrating a channel included in the shared storage area of FIG. 9, and FIG. 11 is a diagram illustrating a data packet stored in a buffer included in the channel of FIG.

도 10을 참조하면, 채널(CH1)은 제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L) 및 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M)을 포함한다.Referring to FIG. 10, the channel CH1 includes first buffers TX_BUF11, TX_BUF12, TX_BUF13, and TX_BUF1L and second buffers RX_BUF11, RX_BUF12, RX_BUF13, and RX_BUF1M.

제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L)은 도 1의 제 1 프로세서(200)에서 도 1의 제 2 프로세서(300)로 전송되는 복수의 데이터 패킷들이 저장되는 버퍼들일 수 있고, 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M)은 도 1의 제 2 프로세서(300)에서 도 1의 제 1 프로세서(200)로 전송되는 복수의 데이터 패킷들이 저장되는 버퍼들일 수 있다. 즉, 복수의 데이터 패킷들이 저장되는 위치가 전송 방향에 따라 결정됨으로써 프로세서간 통신을 위한 처리를 위한 알고리즘이 더욱 간단하게 구현될 수 있다.The first buffers TX_BUF11, TX_BUF12, TX_BUF13 and TX_BUF1L may be buffers in which a plurality of data packets transmitted from the first processor 200 of FIG. 1 to the second processor 300 of FIG. 1 are stored, The buffers RX_BUF11, RX_BUF12, RX_BUF13, and RX_BUF1M may be buffers in which a plurality of data packets transmitted from the second processor 300 of FIG. 1 to the first processor 200 of FIG. 1 are stored. That is, the location where a plurality of data packets are stored is determined according to the transmission direction, so that an algorithm for processing for inter-processor communication can be implemented more simply.

실시예에 따라, 제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L) 및 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M)의 사이즈가 고정될 수 있 고, 각 데이터 패킷(450)의 최대 사이즈는 각 버퍼의 사이즈 보다 작거나 같을 수 있다. 예를 들어, 데이터 패킷(450)의 최대 사이즈는 2K+4 Byte일 수 있고, 버퍼의 사이즈 또한 2K+4 Byte일 수 있다. 각 버퍼의 사이즈가 고정됨으로써, 각 프로세서는 임의의 데이터 패킷(450)이 저장된 버퍼의 어드레스를 용이하게 파악할 수 있다. 즉, 복수의 데이터 패킷들이 제 1 버퍼들(TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L) 또는 제 2 버퍼들(RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M)에 저장된 경우에도, 저장된 복수의 데이터 패킷들 중 임의의 데이터 패킷이 저장된 위치의 시작점이 각 버퍼의 시작점이므로, 임의의 데이터 패킷의 위치를 용이하게 알 수 있다.The sizes of the first buffers TX_BUF11, TX_BUF12, TX_BUF13 and TX_BUF1L and the second buffers RX_BUF11, RX_BUF12, RX_BUF13 and RX_BUF1M can be fixed and the maximum size of each data packet 450 May be less than or equal to the size of each buffer. For example, the maximum size of the data packet 450 may be 2K + 4 bytes, and the size of the buffer may also be 2K + 4 bytes. By fixing the size of each buffer, each processor can easily grasp the address of the buffer in which any data packet 450 is stored. That is, even when a plurality of data packets are stored in the first buffers TX_BUF11, TX_BUF12, TX_BUF13, TX_BUF1L or the second buffers RX_BUF11, RX_BUF12, RX_BUF13, RX_BUF1M, Since the starting point of the stored position is the starting point of each buffer, the position of any data packet can be easily known.

도 11을 참조하면, 데이터 패킷(450)은 헤더(PCK_SZ) 및 데이터 영역(PCK_DATA)을 포함할 수 있다. 일 실시예에서, 헤더(PCK_SZ)는 고정된 크기를 가질 수 있고, 데이터 영역(PCK_DATA)은 가변적인 크기를 가질 수 있다. 예를 들어, 헤더(PCK_SZ)의 크기는 4 Byte일 수 있고, 데이터 영역(PCK_DATA)의 크기는 유효 데이터의 크기와 같고, 최대 2K Byte일 수 있다. 일 실시예에서, 헤더(PCK_SZ)에는 전체 패킷 데이터 또는 유효 데이터의 크기가 저장될 수 있다. 데이터 영역(PCK_DATA)에는 유효 데이터가 저장될 수 있다. 일 실시예에서, 헤더(PCK_SZ)에는 별도의 목적 프로세서의 지정, 목적 어플리케이션의 지정, 목적 서비스의 지정 등에 대한 정보의 저장 없이 전체 패킷 데이터 또는 유효 데이터의 크기만이 저장될 수 있다. 이에 따라, 데이터 패킷(450) 처리를 위한 알고리즘이 더욱 간단하게 구현될 수 있다.Referring to FIG. 11, the data packet 450 may include a header PCK_SZ and a data area PCK_DATA. In one embodiment, the header (PCK_SZ) can have a fixed size, and the data area (PCK_DATA) can have a variable size. For example, the size of the header PCK_SZ may be 4 bytes, the size of the data area PCK_DATA may be equal to the size of the valid data, and the maximum size may be 2K bytes. In one embodiment, the size of the entire packet data or the valid data may be stored in the header (PCK_SZ). Valid data can be stored in the data area PCK_DATA. In one embodiment, only the size of the entire packet data or valid data can be stored in the header (PCK_SZ) without storing information on designation of a separate destination processor, designation of a target application, designation of an objective service, and the like. Accordingly, the algorithm for processing the data packet 450 can be implemented more simply.

도 12는 도 2의 프로세서간 통신 장치에 포함된 메일박스를 나타내는 블록도이고, 도 13은 도 12의 메일박스에 포함된 커맨드 저장 영역에 저장되는 커맨드들의 예를 나타내는 도면이다.FIG. 12 is a block diagram showing a mail box included in the inter-processor communication apparatus of FIG. 2, and FIG. 13 is a diagram showing an example of commands stored in the command storage area included in the mail box of FIG.

도 12를 참조하면, 메일박스(422)는 커맨드 저장 영역(441), 채널 인덱스 저장 영역(442) 및 패킷 개수 저장 영역(443)을 포함한다. 예를 들어, 도 12의 메일박스(422)는 도 1의 제 1 프로세서(200)에서 도 1의 제 2 프로세서(300)로 전송되는 메시지가 저장되는 도 2의 제 1 메일박스(422)일 수 있다. 실시예에 따라, 메일박스(422)는 커맨드 저장 영역(441), 채널 인덱스 저장 영역(442) 및 패킷 개수 저장 영역(443) 외에 별도의 저장 영역을 더 포함할 수 있다.Referring to FIG. 12, the mailbox 422 includes a command storage area 441, a channel index storage area 442, and a packet number storage area 443. For example, the mailbox 422 of FIG. 12 may be a first mailbox 422 of FIG. 2 in which a message sent from the first processor 200 of FIG. 1 to the second processor 300 of FIG. 1 is stored. . According to the embodiment, the mailbox 422 may further include a separate storage area in addition to the command storage area 441, the channel index storage area 442, and the packet number storage area 443.

커맨드 저장 영역(441)은 프로세서들 사이에서 전송되는 메시지의 종류를 나타내는 커맨드가 저장되는 영역이다. 메시지의 종류에 따라, 상기 메시지는 상기 커맨드만을 포함할 수 있고, 상기 커맨드와 추가적인 정보를 포함할 수 있다.The command storage area 441 is an area where a command indicating the type of a message transmitted between processors is stored. Depending on the type of message, the message may only include the command and may include the command and additional information.

도 12 및 도 13을 참조하면, 커맨드 저장 영역(441)에 저장되는 커맨드는 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개 커맨드, 전송 완료 커맨드, 채널 상태 커맨드, 전송 완료 및 소유권 요청 커맨드, 요청 취소 커맨드, 에러 커맨드 중 어느 하나의 커맨드일 수 있다.12 and 13, the command stored in the command storage area 441 includes a command for requesting ownership, a command for releasing ownership, a command for holding a transfer pending, a command for resuming transmission, a command for transmission completion, a command for channel status, , A request cancellation command, and an error command.

예를 들어, 상기 소유권 요청 커맨드는 어느 프로세서가 다른 프로세서에 공유 저장 영역에 대한 소유권을 요청하는 커맨드이고, 상기 소유권 해제 커맨드는 상기 소유권 요청 커맨드에 응답하여 상기 소유권을 해제하였음을 알리는 커맨드이며, 전송 보류 커맨드는 데이터 패킷들을 수신하는 프로세서의 데이터 패킷 큐, 즉 도 7의 IPC 채널(223a)의 데이터 패킷 수신 큐(225)에 일정 수준 이상의 데이터 패킷들이 저장되어 데이터 패킷들을 송신하는 프로세서에 데이터 전송의 보류를 요청하는 커맨드이고, 전송 재개 커맨드는 상기 전송 보류 커맨드에 응답하여 중지된 데이터 전송을 재개할 것을 요청하는 커맨드이며, 전송 완료 커맨드는 프로세서에서 전송할 데이터 패킷들을 공유 저장 영역에 기입하는 것이 완료되었음을 나타내는 커맨드이고, 채널 상태 커맨드는 공유 저장 영역의 각 채널의 상태를 알리는 커맨드이며, 전송 완료 및 소유권 요청 커맨드는 데이터 패킷들의 기입의 완료와 함께 상기 기입된 데이터 패킷들의 독출 후 공유 저장 영역에 대한 소유권을 해제해 줄 것을 요청하는 커맨드이며, 요청 취소 커맨드는 전송된 커맨드를 취소하는 커맨드이고, 에러 커맨드는 프로세서간 통신 도중 에러가 발생하였음을 알리는 커맨드이다. 도 13에는 9개의 커맨드들이 기재되어 있으나, 실시예에 따라 상기 커맨드들 외에 다른 커맨드가 사용되거나, 상기 커맨드들 중 일부가 사용될 수 있다. 일 실시예에서, 커맨드 저장 영역(441)은 8bit의 용량을 가질 수 있다.For example, the ownership request command is a command that requests a processor to request ownership of the shared storage area by another processor, and the ownership release command is a command informing that the ownership has been released in response to the ownership request command, The hold command is stored in the data packet queue of the processor that receives the data packets, that is, the data packet queue 225 of the IPC channel 223a of FIG. 7, The resume transmission command is a command requesting to resume the suspended data transmission in response to the transmission suspend command, and the transmission complete command indicates that writing of data packets to be transmitted in the processor to the shared storage area is completed And the channel The TA command is a command to inform the status of each channel of the shared storage area, and the transmission completion and ownership request command releases ownership of the shared storage area after reading of the written data packets with completion of writing of data packets The request cancellation command is a command for canceling the transmitted command, and the error command is a command for notifying that an error has occurred during inter-processor communication. In Fig. 13, nine commands are described. However, according to the embodiment, other commands than the above commands may be used, or some of the commands may be used. In one embodiment, the command storage area 441 may have a capacity of 8 bits.

프로세서들간에 전송되는 메시지는 메시지의 종류, 즉 커맨드에 따라 추가적인 정보를 더 포함할 수 있다. 예를 들어, 상기 전송 완료 커맨드를 포함하는 메시지의 경우, 상기 메시지는 상기 전송 완료 커맨드와 함께 데이터 패킷들이 기입된 채널의 인덱스 및/또는 데이터 패킷들의 개수를 포함할 수 있다.A message transmitted between processors may further include additional information depending on the type of message, i.e., a command. For example, in the case of a message including the transmission complete command, the message may include the index of the channel in which the data packets are written together with the transmission completion command and / or the number of data packets.

채널 인덱스 저장 영역(442)은 공유 저장 영역에 포함된 채널의 인덱스가 저장될 수 있다. 예를 들어, 제 1 프로세서가 제 2 프로세서로 복수의 데이터 패킷들을 전송하는 경우, 상기 제 1 프로세서는 상기 공유 저장 영역의 특정 채널에 상기 복수의 데이터 패킷들을 기입하고, 상기 제 1 프로세서는 커맨드 저장 영역(441)에 상기 전송 완료 커맨드를 기입하며, 채널 인덱스 저장 영역(442)에 상기 복수의 데이터 패킷들이 기입된 상기 특정 채널에 대한 인덱스를 기입할 수 있다. 상기 제 2 프로세서는 상기 특정 채널에 대한 인덱스에 기초하여 상기 복수의 데이터 패킷들이 저장된 위치, 즉 어드레스들을 알 수 있다. 또한, 일 실시예에서, 제 2 프로세서에서 실행되는 IPC 드라이버는 채널 인덱스 저장 영역(442)에 저장된 상기 특정 채널에 대한 인덱스에 기초하여 상기 복수의 데이터 패킷들이 저장된 위치를 알 수 있다. 이에 따라, 상기 IPC 드라이버는 상기 복수의 데이터 패킷들을 독출한 후 연관된 IPC 채널 및 어플리케이션을 지정하기 위한 별도의 분석을 수행하지 않을 수 있다. 일 실시예에서, 채널 인덱스 저장 영역(442)에는 하나의 채널에 대한 인덱스가 저장될 수 있다. 다른 실시예에서, 채널 인덱스 저장 영역(442)의 각 비트가 상응하는 채널에 연관되고, 각 비트의 값에 따라 상응하는 채널에 복수의 데이터 패킷들이 저장되어 있는 지 여부를 나타낼 수 있다.The channel index storage area 442 may store an index of a channel included in the shared storage area. For example, when a first processor transmits a plurality of data packets to a second processor, the first processor writes the plurality of data packets to a particular channel of the shared storage area, and the first processor stores a command The transmission completion command is written in the area 441 and the index for the specific channel in which the plurality of data packets are written in the channel index storage area 442 can be written. The second processor may know the locations, i.e., addresses, of the plurality of data packets stored based on the index for the particular channel. Further, in one embodiment, the IPC driver running on the second processor may know the location where the plurality of data packets are stored based on the index for the particular channel stored in the channel index storage area 442. [ Accordingly, the IPC driver may not perform a separate analysis to designate the associated IPC channel and application after reading the plurality of data packets. In one embodiment, the channel index storage area 442 may store an index for one channel. In another embodiment, each bit of the channel index storage area 442 is associated with a corresponding channel, and may indicate whether a plurality of data packets are stored in the corresponding channel according to the value of each bit.

패킷 개수 저장 영역(443)은 채널에 기입된 복수의 데이터 패킷들의 개수가 저장될 수 있다. 예를 들어, 상기 제 1 프로세서가 상기 제 2 프로세서로 복수의 데이터 패킷들을 전송하는 경우, 상기 제 1 프로세서는 상기 공유 저장 영역의 특정 채널에 상기 복수의 데이터 패킷들을 기입하고, 커맨드 저장 영역(441)에 상기 전송 완료 커맨드를 기입하며, 채널 인덱스 저장 영역(442)에 상기 특정 채널에 대한 인덱스를 기입하고, 패킷 개수 저장 영역(443)에 상기 복수의 데이터 패킷들의 개수를 기입할 수 있다. 상기 제 2 프로세서는 상기 복수의 데이터 패킷들 각각의 헤더를 추출하여 연관된 IPC 채널, 연관된 어플리케이션, 패킷 개수 등을 분석하는 처리를 수행하지 않을 수 있다. 이에 따라, 프로세서간 통신을 위한 처리가 간단하게 구현될 수 있고, 시스템의 데이터 전송 속도가 향상될 수 있다.The number-of-packets storage area 443 may store the number of the plurality of data packets written in the channel. For example, when the first processor transmits a plurality of data packets to the second processor, the first processor writes the plurality of data packets to a specific channel of the shared storage area, and the command storage area 441 Write the index of the specific channel in the channel index storage area 442 and write the number of the plurality of data packets in the packet number storage area 443. The second processor may not perform processing for extracting a header of each of the plurality of data packets and analyzing an associated IPC channel, an associated application, a number of packets, and the like. Thus, the processing for inter-processor communication can be simply implemented, and the data transmission speed of the system can be improved.

도 14는 도 1의 시스템에 포함된 제 1 프로세서에서 제 2 프로세서로 메시지가 전송되는 방법을 나타내는 순서도이다.14 is a flow chart illustrating how a message is transferred from a first processor to a second processor included in the system of FIG.

도 1, 도 8 및 도 14를 참조하면, 제 1 프로세서(200)에서 제 2 프로세서(300)로 커맨드 및 데이터 전송 정보를 포함하는 메시지, 또는 커맨드만을 포함하는 메시지를 전송하는 경우, 제 1 프로세서(200)는 제 1 메일박스(422)에 커맨드 및/또는 데이터 전송 정보를 기입한다(단계 S110). 일 실시예에서, 제 1 프로세서(200)에서 실행되는 IPC 드라이버가 디바이스 API의 메시지 기입 함수를 호출함으로써, 제 1 메일박스(422)에 메시지를 기입할 수 있다. 프로세서간 통신 장치(400)는 제 1 메일박스(422)에 메시지가 기입 또는 저장된 메시지가 변경되는 경우, 제 1 인터럽트 신호(INT1)를 생성한다(단계 S130). 제 2 프로세서(300)는 프로세서간 통신 장치(400)로부터 제 1 인터럽트 신호(INT1)를 수신한다(단계 S150). 제 2 프로세서(300)가 제 1 인터럽트 신호(INT1)를 수신하면, 제 2 프로세서(300)는 제 1 메일박스(422)에 저장된 메시지를 독출한다(단계 S170). 일 실시예에서, 제 2 프로세서(300)에서 실행되는 커널은 제 1 인터럽트 신호(INT1)에 상응하는 IPC 드라이버의 인터럽트 핸들러를 호출하고, 상기 IPC 드라이버는 디바이스 API의 메시지 독출 함수를 호출함으로써 제 1 메일박스(422)에 저장된 메시지를 독출할 수 있다.1, 8, and 14, when a message including command and data transmission information or a message including only a command is transmitted from the first processor 200 to the second processor 300, The controller 200 writes the command and / or data transmission information in the first mailbox 422 (step S110). In one embodiment, the IPC driver running on the first processor 200 can write a message to the first mailbox 422 by calling the message writing function of the device API. The inter-processor communication device 400 generates a first interrupt signal INT1 when a message written to or stored in the first mailbox 422 is changed (step S130). The second processor 300 receives the first interrupt signal INT1 from the inter-processor communication device 400 (step S150). When the second processor 300 receives the first interrupt signal INT1, the second processor 300 reads the message stored in the first mailbox 422 (step S170). In one embodiment, the kernel executing in the second processor 300 calls the interrupt handler of the IPC driver corresponding to the first interrupt signal INT1, and the IPC driver calls the message read function of the device API, The message stored in the mailbox 422 can be read.

도 15는 도 1의 시스템에 포함된 제 1 프로세서가 도 8의 프로세서간 통신 장치에 포함된 공유 저장 영역에 대한 소유권을 획득하는 방법을 나타내는 순서도이다.FIG. 15 is a flowchart illustrating a method for a first processor included in the system of FIG. 1 to acquire ownership of a shared storage area included in the inter-processor communication apparatus of FIG.

도 1, 도 8 및 도 15를 참조하면, 제 1 프로세서(200)는 세마포어 영역(421)에 저장된 공유 저장 영역(412)의 소유권에 관한 정보를 독출함으로써, 공유 저장 영역(412)의 소유권을 가진 프로세서를 확인할 수 있다(단계 S211). 일 실시예에서, 제 1 프로세서(200)에서 실행되는 IPC 드라이버가 디바이스 API의 소유권 확인 함수를 호출함으로써 세마포어 영역(421)에 저장된 소유권 정보를 독출할 수 있다. 제 1 프로세서(200)가 공유 저장 영역(412)에 대한 소유권을 가지고 있는 경우(단계 S213: YES), 제 1 프로세서(200)는 공유 저장 영역(412)의 소유권 획득에 대한 추가적인 처리가 불필요하다.Referring to FIGS. 1, 8 and 15, the first processor 200 reads the ownership of the shared storage area 412 stored in the semaphore area 421, thereby obtaining ownership of the shared storage area 412 (Step S211). In one embodiment, the IPC driver running in the first processor 200 may read the ownership information stored in the semaphore region 421 by calling the device API's ownership validation function. If the first processor 200 has ownership of the shared storage area 412 (step S213: YES), the first processor 200 does not need to further process the ownership of the shared storage area 412 .

제 2 프로세서(300)가 공유 저장 영역(412)에 대한 소유권을 가지고 있는 경우(단계 S213: NO), 제 1 프로세서(200)는 제 1 메일박스(422)에 소유권 요청 커맨드를 기입한다(단계 S215). 일 실시예에서, 제 1 프로세서(200)에서 실행되는 IPC 드라이버가 디바이스 API의 메시지 기입 함수를 상기 소유권 요청 커맨드를 나타내는 파라미터와 함께 호출함으로써 제 1 메일박스(422)에 상기 소유권 요청 커맨드를 기입할 수 있다.If the second processor 300 has ownership of the shared storage area 412 (step S213: NO), the first processor 200 writes the ownership request command to the first mailbox 422 S215). In one embodiment, the IPC driver running on the first processor 200 writes the ownership request command to the first mailbox 422 by calling the message writing function of the device API with a parameter representing the ownership request command .

제 1 메일박스(422)에 상기 소유권 요청 커맨드가 기입되면, 프로세서간 통신 장치(400, 400a)는 제 1 메일박스(422)에 메시지가 기입되었음을 알리는 제 1 인터럽트 신호(INT1)를 생성한다(단계 S217). 제 2 프로세서(300)가 제 1 인터럽트 신호(INT1)를 수신하면(단계 S219), 제 2 프로세서(300)는 제 1 메일박스(422)로부터 상기 소유권 요청 커맨드를 독출한다(단계 S221). 일 실시예에서, 제 2 프로세서(300)에서 실행되는 커널은 제 1 인터럽트 신호(INT1)에 상응하는 IPC 드라이버의 인터럽트 핸들러를 호출하고, 제 2 프로세서(300)에서 실행되는 상기 IPC 드라이버는 디바이스 API의 메시지 독출 함수를 호출함으로써 제 1 메일박스(422)에 저장된 상기 소유권 요청 커맨드를 독출할 수 있다.When the ownership request command is written in the first mailbox 422, the inter-processor communication device 400 or 400a generates a first interrupt signal INT1 indicating that a message has been written in the first mailbox 422 Step S217). When the second processor 300 receives the first interrupt signal INT1 (step S219), the second processor 300 reads the ownership request command from the first mailbox 422 (step S221). In one embodiment, the kernel executed in the second processor 300 calls the interrupt handler of the IPC driver corresponding to the first interrupt signal INT1, and the IPC driver executed in the second processor 300 calls the device API To read the ownership request command stored in the first mailbox 422 by calling the message read function of the first mailbox 422. [

제 1 프로세서(200)로부터 소유권을 넘겨주기를 요청 받은 제 2 프로세서(300)는 상기 소유권 요청 커맨드에 대한 응답으로서 제 2 메일박스(423)에 소유권 해제 커맨드를 기입한다(단계 S223). 일 실시예에서, 제 2 프로세서(300)에서 실행되는 IPC 드라이버가 디바이스 API의 메시지 기입 함수를 상기 소유권 해제 커맨드를 나타내는 파라미터와 함께 호출함으로써 제 2 메일박스(423)에 상기 소유권 해제 커맨드를 기입할 수 있다.The second processor 300, which is requested to transfer ownership from the first processor 200, writes the ownership release command in the second mailbox 423 as a response to the ownership request command (step S223). In one embodiment, the IPC driver running on the second processor 300 writes the ownership release command to the second mailbox 423 by calling the message write function of the device API with a parameter indicating the ownership release command .

일 실시예에서, 제 2 프로세서(300)는 세마포어 영역(421)을 억세스 하여 세마포어 영역(421)에 저장된 소유권에 관한 정보를 변경할 수 있다. 실시예에 따라, 제 2 프로세서(300)가 공유 저장 영역(412)을 계속해서 억세스 할 필요가 있는 경우, 제 2 프로세서(300)가 제 2 메일박스(423)에 소유권 해제 불가 커맨드를 기입하거나, 제 1 프로세서(200)가 일정 시간 대기 후 제 1 메일박스(422)에 요청 취소 커맨드를 기입하거나, 또는 별다른 메시지 전송 없이 제 1 프로세서(200)가 제 1 메일박스(422)에 소유권 요청 커맨드를 재기입할 수 있다. 다른 실시예에서, 상기 소유권 해제 커맨드를 수신한 제 2 프로세서(300)는 강제적으로 공유 저장 영 역(412)에 대한 억세스를 중지하고, 제 1 프로세서(200)에 상기 소유권 해제 커맨드를 전송할 수 있다.In one embodiment, the second processor 300 may access the semaphore area 421 to change information about ownership stored in the semaphore area 421. [ According to an embodiment, when the second processor 300 needs to continuously access the shared storage area 412, the second processor 300 writes a command to disable ownership in the second mailbox 423 , The first processor 200 writes a request cancellation command to the first mailbox 422 after waiting for a certain period of time or the first processor 200 writes the ownership request command to the first mailbox 422 without any message transmission, Can be rewritten. In another embodiment, the second processor 300 that has received the deallocation command may forcibly stop access to the shared storage area 412 and send the deallocation command to the first processor 200 .

제 2 메일박스(423)에 상기 소유권 해제 커맨드가 기입되면, 프로세서간 통신 장치(400, 400a)는 제 2 메일박스(423)에 메시지가 기입되었음을 알리는 제 2 인터럽트 신호(INT2)를 생성한다(단계 S225). 제 1 프로세서(200)가 제 2 인터럽트 신호(INT2)를 수신하면(단계 S227), 제 1 프로세서(200)는 제 2 메일박스(423)로부터 상기 소유권 해제 커맨드를 독출한다(단계 S229). 일 실시예에서, 제 1 프로세서(200)에서 실행되는 커널은 제 2 인터럽트 신호(INT2)에 상응하는 IPC 드라이버의 인터럽트 핸들러를 호출하고, 제 1 프로세서(200)에서 실행되는 상기 IPC 드라이버는 디바이스 API의 메시지 독출 함수를 호출함으로써 제 2 메일박스(423)에 저장된 상기 소유권 해제 커맨드를 독출할 수 있다. 일 실시예에서, 제 1 프로세서(200)는 세마포어 영역(421)을 억세스 하여 세마포어 영역(421)에 저장된 소유권에 관한 정보를 변경할 수 있다. 이에 따라, 제 1 프로세서(200)는 공유 저장 영역(412)에 대한 소유권을 획득할 수 있다.When the ownership release command is written in the second mailbox 423, the inter-processor communication device 400 or 400a generates a second interrupt signal INT2 indicating that the message has been written in the second mailbox 423 Step S225). When the first processor 200 receives the second interrupt signal INT2 (step S227), the first processor 200 reads the ownership release command from the second mailbox 423 (step S229). In one embodiment, the kernel executed in the first processor 200 calls the interrupt handler of the IPC driver corresponding to the second interrupt signal INT2, and the IPC driver, which is executed in the first processor 200, Can read the ownership release command stored in the second mailbox 423 by calling the message read function of the second mailbox 423. In one embodiment, the first processor 200 may access the semaphore area 421 to change information about ownership stored in the semaphore area 421. [ Accordingly, the first processor 200 can acquire ownership of the shared storage area 412. [

도 16은 도 1의 시스템에서 프로세서간 데이터 전송 방법을 나타내는 순서도이다.16 is a flowchart showing a method of transferring data between processors in the system of FIG.

도 1 내지 도 16을 참조하면, 제 1 프로세서(200)는 도 15에 도시된 방법을 통하여 공유 저장 영역(412)에 대한 소유권을 획득한다(단계 S310). 제 1 프로세서(200)가 상기 소유권, 즉 공유 저장 영역(412)에 대한 접근 권한을 획득한 후, 제 1 프로세서(200)는 공유 저장 영역(412)에 데이터 패킷들을 기입한다(단계 S620). 예를 들어, 제 1 프로세서(200)의 제 1 어플리케이션(230)과 제 2 프로세서(300)의 제 2 어플리케이션 사이에서 데이터 통신이 수행되는 경우, 제 1 프로세서(200)의 제 1 어플리케이션(230)은 제 1 IPC API(221)의 채널 오픈 함수를 호출하여 제 1 IPC 채널(IPC CH1)을 사용할 수 있고, 제 2 프로세서(300)의 제 2 어플리케이션은 제 2 IPC API의 채널 오픈 함수를 호출하여 제 2 IPC 채널을 사용할 수 있다. 또한, 제 1 프로세서(200)의 제 1 어플리케이션(230)은 제 1 IPC API(221)의 데이터 패킷 송신 함수를 호출하여 데이터 패킷들을 공유 저장 영역(412)에 기입할 수 있다. 제 1 IPC API(221)의 데이터 패킷 송신 함수를 호출되면, 제 1 IPC 채널(IPC CH1)에 상기 데이터 패킷들에 대한 정보, 즉 상기 데이터 패킷들의 포인터들 및 길이들이 저장되고, 제 1 IPC 스레드(222)는 제 1 IPC 채널(IPC CH1)에 저장된 상기 데이터 패킷들에 대한 정보에 기초하여 제 1 디바이스 API(211)의 데이터 패킷 기입 함수를 호출함으로써, 공유 저장 영역(412)에 상기 데이터 패킷들을 기입할 수 있다. 예를 들어, 상기 데이터 패킷들은 공유 저장 영역(412) 중 제 1 IPC 채널(IPC CH1)에 상응하는 제 1 채널(CH1)에 저장될 수 있다.Referring to FIGS. 1 to 16, the first processor 200 acquires ownership of the shared storage area 412 through the method shown in FIG. 15 (step S310). After the first processor 200 acquires the ownership, that is, access to the shared storage area 412, the first processor 200 writes the data packets in the shared storage area 412 (step S620). For example, when data communication is performed between the first application 230 of the first processor 200 and the second application of the second processor 300, the first application 230 of the first processor 200, The second application of the second processor 300 may use the channel open function of the first IPC API 221 to use the first IPC channel IPC CH1 and the second application of the second processor 300 may call the channel open function of the second IPC API 221 A second IPC channel can be used. In addition, the first application 230 of the first processor 200 may call the data packet transmission function of the first IPC API 221 to write the data packets to the shared storage area 412. When the data packet transmission function of the first IPC API 221 is called, information on the data packets, i.e., pointers and lengths of the data packets, are stored in the first IPC channel (IPC CH1) (222) accesses the shared storage area (412) by calling the data packet writing function of the first device API (211) based on the information about the data packets stored in the first IPC channel (IPC CH1) Can be written. For example, the data packets may be stored in a first channel (CH1) corresponding to a first IPC channel (IPC CH1) of the shared storage area 412.

제 1 프로세서(200)가 상기 데이터 패킷들을 공유 저장 영역(412)에 기입한 후, 제 1 프로세서(200)는 제 1 메일박스(422)에 데이터가 있음을 알리는 메시지, 즉 데이터 전송 커맨드 및 데이터 전송 정보를 기입한다(단계 S330). 즉, 제 1 프로세서(200)는 커맨드 저장 영역(441)에 데이터 전송 커맨드를 기입하고, 채널 인덱스 저장 영역(442)에 상기 데이터 패킷들이 기입된 채널의 인덱스를 기입하며, 패킷 개수 저장 영역(443)에 상기 데이터 패킷들의 개수를 기입한다. 예를 들어, 제 1 프로세서(200)의 제 1 IPC 스레드(222)는 제 1 디바이스 API(211)의 메시지 기입 함수를 호출함으로써, 제 1 메일박스(422)에 상기 데이터 전송 커맨드, 제 1 채널(CH1)의 인덱스, 및 상기 데이터 패킷들의 개수를 기입할 수 있다.After the first processor 200 writes the data packets to the shared storage area 412, the first processor 200 sends a message indicating that there is data in the first mailbox 422, i.e., a data transfer command and data The transmission information is written (step S330). That is, the first processor 200 writes the data transfer command in the command storage area 441, writes the index of the channel in which the data packets are written in the channel index storage area 442, ) Of the data packets. For example, the first IPC thread 222 of the first processor 200 calls the message write function of the first device API 211 to send the data transfer command to the first mailbox 422, (CH1), and the number of data packets.

제 1 메일박스(422)에 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보가 기입되면, 프로세서간 통신 장치(400)는 제 1 인터럽트 신호(INT1)를 생성한다(단계 S340). 제 2 프로세서(300)가 프로세서간 통신 장치(400)로부터 제 1 인터럽트 신호(INT1)를 수신하면(단계 S350), 제 2 프로세서(300)는 제 1 메일박스(422)로부터 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보를 독출한다(단계 S360). 즉, 제 2 프로세서(300)는 커맨드 저장 영역(441)으로부터 상기 데이터 전송 커맨드를 독출하고, 채널 인덱스 저장 영역(442)으로부터 상기 데이터 패킷들이 기입된 채널의 인덱스를 독출하며, 패킷 개수 저장 영역(443)으로부터 상기 데이터 패킷들의 개수를 독출한다. 예를 들어, 제 2 프로세서(300)가 제 1 인터럽트 신호(INT1)를 수신하면, 제 2 프로세서(300)의 제 2 IPC 스레드는 제 2 디바이스 API의 메시지 독출 함수를 호출하여 제 1 메일박스(422)로부터 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보를 독출할 수 있다.When the data transfer command and the data transfer information are written in the first mailbox 422, the inter-processor communication device 400 generates the first interrupt signal INT1 (step S340). When the second processor 300 receives the first interrupt signal INT1 from the inter-processor communication device 400 in step S350, the second processor 300 receives the data transfer command and the data transfer command from the first mailbox 422, And reads the data transmission information (step S360). That is, the second processor 300 reads the data transfer command from the command storage area 441, reads the index of the channel in which the data packets are written from the channel index storage area 442, 443). ≪ / RTI > For example, when the second processor 300 receives the first interrupt signal INT1, the second IPC thread of the second processor 300 calls the message read function of the second device API to call the first mailbox 422 to read the data transfer command and the data transfer information.

상기 채널의 인덱스 및 상기 데이터 패킷들의 개수에 기초하여 제 2 프로세서(300)는 공유 저장 영역(412)으로부터 상기 데이터 패킷들을 독출한다(단계 S370). 예를 들어, 제 2 IPC 스레드는 채널 인덱스 저장 영역(442)으로부터 독출된 제 1 채널(CH1)의 인덱스 및 패킷 개수 저장 영역(443)으로부터 독출된 상기 데이터 패킷들의 개수를 파라미터로 하여 제 2 디바이스 API의 데이터 패킷 독출 함수 를 호출함으로써, 제 1 채널(CH1)에 저장된 상기 데이터 패킷들을 독출할 수 있다. 일 실시예에서, 제 2 디바이스 API는 상기 데이터 패킷들을 독출할 때, 공유 저장 영역(412)에 저장된 상기 데이터 패킷들을 제 2 전용 저장 영역(413, 414)에 복사할 수 있다. 또한, 제 2 프로세서(300)의 상기 제 2 IPC 스레드는 제 2 프로세서(300)의 상기 제 2 IPC 채널에 제 2 전용 저장 영역(413, 414)에 저장된 상기 데이터 패킷들에 대한 정보, 즉 제 2 전용 저장 영역(413, 414)에 저장된 상기 데이터 패킷들의 포인터들 및 길이들을 기입할 수 있다. 또한, 상기 제 2 어플리케이션은 상기 제 2 IPC API의 데이터 패킷 수신 함수를 통하여 상기 제 2 IPC 채널의 포인터들 및 길이들을 제공받을 수 있다. 상기 제 2 어플리케이션은 제공받은 상기 포인터들 및 상기 길이들을 이용하여 상기 데이터 패킷들을 처리할 수 있다. 예를 들어, 상기 제 2 어플리케이션은 디스플레이를 통하여 상기 데이터 패킷들에 상응하는 영상을 출력하거나, 스피커를 통하여 상기 데이터 패킷들에 상응하는 음성을 출력할 수 있다. 상기 제 2 어플리케이션은 상기 데이터 패킷들을 더 이상 접근할 필요가 없을 때, 제 2 전용 저장 영역(413, 414)에서 상기 데이터 패킷들에 대한 공간을 해제할 수 있다.Based on the index of the channel and the number of data packets, the second processor 300 reads the data packets from the shared storage area 412 (step S370). For example, the second IPC thread may use the index of the first channel CH1 read from the channel index storage area 442 and the number of the data packets read from the packet number storage area 443 as parameters, By reading the data packet read function of the API, the data packets stored in the first channel (CH1) can be read out. In one embodiment, the second device API may copy the data packets stored in the shared storage area 412 to the second dedicated storage area 413, 414 when reading the data packets. The second IPC thread of the second processor 300 may also store information about the data packets stored in the second dedicated storage area 413 and 414 in the second IPC channel of the second processor 300, 2 dedicated storage areas 413 and 414, as shown in FIG. Also, the second application may receive pointers and lengths of the second IPC channel through the data packet reception function of the second IPC API. The second application may process the data packets using the provided pointers and the lengths. For example, the second application may output an image corresponding to the data packets through a display or output a voice corresponding to the data packets through a speaker. The second application may release the space for the data packets in the second dedicated storage area (413, 414) when it is no longer necessary to access the data packets.

이와 같이, 제 2 프로세서(300)는 상기 데이터 패킷들에 대한 정보를 제 1 메일박스(422)를 통하여 전송되는 메시지를 통하여 제공받음으로써, 상기 데이터 패킷들에 대한 별도의 처리 없이 지정된 어플리케이션에 상기 데이터 패킷들을 제공할 수 있다. 또한, 복수의 IPC 채널들 및 공유 저장 영역의 복수의 채널들을 통하여 프로세서간 데이터 통신을 수행함으로써, 어플리케이션 또는 어플리케이션의 서비스 별로 하나 이상의 IPC 채널 및 공유 저장 영역의 하나 이상의 채널을 전용할 수 있어, 데이터 전송 속도가 더욱 향상될 수 있다.In this manner, the second processor 300 receives the information on the data packets through the first mailbox 422, and transmits the data packets to the designated application without any processing on the data packets. Data packets. Further, by performing inter-processor data communication through a plurality of IPC channels and a plurality of channels of the shared storage area, one or more IPC channels and one or more channels of the shared storage area can be dedicated for each application or application service, The transmission speed can be further improved.

도 17은 도 1의 시스템에 포함된 프로세서에서 데이터 송수신시 모듈들의 동작을 나타내는 도면이다.17 is a diagram showing operations of modules in data transmission and reception in a processor included in the system of FIG.

도 17을 참조하면, 프로세서(200)는 디바이스 드라이버(210), IPC 드라이버(220) 및 어플리케이션(230)을 실행한다. 도 17에는 설명의 편의상 프로세서간 통신 장치(400)에 하나의 프로세서(200)만이 연결된 시스템이 도시되어 있으나, 프로세서간 통신 장치(400)에는 하나 이상의 프로세서가 더 연결되고, 더 연결된 프로세서는 프로세서(200)와 실질적으로 동일한 구성을 가질 수 있다.Referring to FIG. 17, the processor 200 executes the device driver 210, the IPC driver 220, and the application 230. 17 shows a system in which only one processor 200 is connected to the inter-processor communication device 400 for convenience of explanation, however, the inter-processor communication device 400 is further connected to one or more processors, 200). ≪ / RTI >

프로세서(200)에서 다른 프로세서로 데이터 패킷을 전송할 경우, 어플리케이션(230)이 할당한 제 1 어플리케이션 버퍼(511)에 저장된 데이터 패킷의 포인터를 파라미터로 하여 IPC 드라이버(220)의 IPC API(221)의 데이터 패킷 송신 함수를 호출한다. 예를 들어, 어플리케이션(230)은 도 8의 제 1 전용 저장 영역(411)에 제 1 어플리케이션 버퍼(511)를 할당할 수 있다. IPC 드라이버(220)는 제 1 IPC 버퍼(513)에 상기 데이터 패킷의 포인터, 즉 제 1 어플리케이션 버퍼(511)의 포인터를 저장할 수 있다. 예를 들어, 제 1 IPC 버퍼(513)는 도 7의 데이터 패킷 송신 큐(224)의 제 1 송신버퍼(2241)일 수 있고, IPC 드라이버(220)는 도 7의 데이터 패킷 송신 큐(224)의 제 1 송신버퍼(2241)에 상기 데이터 패킷의 포인터 및/또는 상기 데이터 패킷의 길이를 저장할 수 있다. IPC 드라이버(220)가 상기 데이터 패킷의 포인터를 저장함으로써, 어플리케이션(230)에서 IPC 드라이버(220)로 상기 데이 터 패킷이 전송될 때 상기 데이터 패킷에 대한 복사(copy) 동작이 수행되지 않아 데이터 패킷 송수신 처리 속도가 향상될 수 있다.The IPC API 221 of the IPC driver 220 uses the pointer of the data packet stored in the first application buffer 511 allocated by the application 230 as a parameter to transmit the data packet from the processor 200 to another processor. Call the data packet transmission function. For example, the application 230 may allocate a first application buffer 511 to the first dedicated storage area 411 of FIG. The IPC driver 220 may store the pointer of the data packet in the first IPC buffer 513, that is, the pointer of the first application buffer 511. [ For example, the first IPC buffer 513 may be the first transmit buffer 2241 of the data packet transmit queue 224 of FIG. 7, and the IPC driver 220 may transmit the data packet transmit queue 224 of FIG. The length of the data packet and / or the pointer of the data packet may be stored in the first transmission buffer 2241 of FIG. The IPC driver 220 stores the pointer of the data packet so that when the data packet is transmitted from the application 230 to the IPC driver 220, the copy operation for the data packet is not performed, The transmission / reception processing speed can be improved.

IPC 드라이버(220)는 제 1 IPC 버퍼(513)에 저장된 상기 데이터 패킷의 포인터를 파라미터로 하여 디바이스 드라이버(230)의 디바이스 API(211)의 데이터 패킷 기입 함수를 호출한다. 디바이스 드라이버(230)는 상기 데이터 패킷을 프로세서간 통신 장치(400)의 제 1 버퍼(517)에 기입한다. 예를 들어, 디바이스 드라이버(230)는 도 8의 제 1 전용 저장 영역(411)에 저장된 상기 데이터 패킷을 도 8의 공유 저장 영역(412)으로 복사할 수 있다. 예를 들어, 프로세서간 통신 장치(400)의 제 1 버퍼(517)는 도 9의 제 1 채널(CH1)의 제 1 버퍼(TX_BUF11)일 수 있다. 상기 다른 프로세서가 프로세서간 통신 장치(400)의 공유 저장 영역(412)에 저장된 상기 데이터 패킷을 독출함으로써, 프로세서(200)의 어플리케이션(230)에서 상기 다른 프로세서의 어플리케이션으로 상기 데이터 패킷이 전송될 수 있다.The IPC driver 220 calls the data packet write function of the device API 211 of the device driver 230 with the pointer of the data packet stored in the first IPC buffer 513 as a parameter. The device driver 230 writes the data packet to the first buffer 517 of the inter-processor communication device 400. For example, the device driver 230 may copy the data packet stored in the first dedicated storage area 411 of FIG. 8 to the shared storage area 412 of FIG. For example, the first buffer 517 of the inter-processor communication device 400 may be the first buffer TX_BUF11 of the first channel CH1 of FIG. The other processor reads the data packet stored in the shared storage area 412 of the inter-processor communication device 400 so that the data packet can be transferred from the application 230 of the processor 200 to the application of the other processor have.

상기 다른 프로세서에서 프로세서(200)로 데이터 패킷을 전송할 경우, 디바이스 드라이버(230)는 프로세서간 통신 장치(400)의 제 2 버퍼(521)에 저장된 데이터 패킷을 독출한다. 예를 들어, 프로세서간 통신 장치(400)의 제 2 버퍼(521)는 도 9의 제 1 채널(CH1)의 제 2 버퍼(RX_BUF11)일 수 있다. 예를 들어, IPC 드라이버(220)의 IPC 스레드(222)는 도 8의 제 2 전용 저장 영역(413, 414)에 상기 데이터 패킷을 위한 저장 공간인 제 2 IPC 버퍼(525)를 할당하고, 디바이스 드라이버(230)의 디바이스 API(211)의 데이터 패킷 독출 함수를 호출할 수 있다. 디바이스 드라이버(230)는 도 8의 공유 저장 영역(412)에 저장된 상기 데이터 패킷을 제 2 IPC 버퍼(525), 즉 도 8의 제 2 전용 저장 영역(413, 414)으로 복사할 수 있다. 또한, IPC 드라이버(220)는 도 7의 데이터 패킷 수신 큐(225)의 제 1 수신버퍼(2251)에 상기 데이터 패킷의 포인터(제 2 IPC 버퍼(525)의 포인터) 및/또는 상기 데이터 패킷의 길이를 저장할 수 있다.The device driver 230 reads the data packet stored in the second buffer 521 of the inter-processor communication device 400. In this case, For example, the second buffer 521 of the inter-processor communication device 400 may be the second buffer RX_BUF11 of the first channel CH1 of FIG. For example, the IPC thread 222 of the IPC driver 220 may allocate a second IPC buffer 525, which is a storage space for the data packet, to the second dedicated storage areas 413 and 414 of FIG. 8, The data packet read function of the device API 211 of the driver 230 can be called. The device driver 230 may copy the data packet stored in the shared storage area 412 of FIG. 8 to the second IPC buffer 525, that is, the second dedicated storage area 413 and 414 of FIG. The IPC driver 220 also receives a pointer to the data packet (a pointer to the second IPC buffer 525) and / or a pointer to the data packet in the first receive buffer 2251 of the data packet receive queue 225 of FIG. You can store the length.

IPC 드라이버(220)는 어플리케이션(230)에 상기 데이터 패킷의 포인터를 전송한다. 예를 들어, IPC 드라이버(220)는 도 7의 데이터 패킷 수신 큐(225)의 제 1 수신버퍼(2251)에 저장된 상기 데이터 패킷의 포인터, 즉 제 2 IPC 버퍼(525)의 포인터를 어플리케이션(230)에 전송할 수 있다. 일 실시예에서, 어플리케이션(230)은 IPC 드라이버(220)의 IPC API(221)의 데이터 패킷 수신 함수를 호출하고, IPC 드라이버(220)는 상기 데이터 패킷 수신 함수의 반환 값으로 상기 데이터 패킷의 포인터를 어플리케이션(230)에 전송할 수 있다. 다른 실시예에서, 어플리케이션(230)은 함수 포인터를 파라미터로 하여 IPC 드라이버(220)의 IPC API(221)의 데이터 패킷 수신 함수를 호출하고, IPC 드라이버(220)는 상기 어플리케이션(230)의 함수를 호출하여 상기 데이터 패킷의 포인터를 어플리케이션(230)에 전송할 수 있다. 또 다른 실시예에서, IPC 드라이버(220)는 상기 어플리케이션(230)에 이벤트 또는 메시지를 전송함으로써 상기 데이터 패킷의 포인터를 어플리케이션(230)에 전송할 수 있다. 상기 다른 프로세서의 어플리케이션에서 프로세서(200)의 어플리케이션으로 상기 데이터 패킷이 전송될 수 있다. 이와 같이, IPC 드라이버(220)가 어플리케이션(230)에 상기 데이터 패킷의 포인터를 전송함으로써, IPC 드라이버(220)에서 어플리케이션(230)로 상기 데이터 패킷이 전송될 때 상기 데이터 패킷에 대한 복 사(copy) 동작이 수행되지 않아 데이터 패킷 송수신 처리 속도가 향상될 수 있다.The IPC driver 220 transfers the pointer of the data packet to the application 230. For example, the IPC driver 220 may send a pointer to the data packet stored in the first receive buffer 2251 of the data packet receive queue 225 of FIG. 7, that is, a pointer of the second IPC buffer 525, ). In one embodiment, the application 230 calls the data packet receive function of the IPC API 221 of the IPC driver 220, and the IPC driver 220 receives the pointer of the data packet as the return value of the data packet receive function To the application (230). In another embodiment, the application 230 calls the data packet receive function of the IPC API 221 of the IPC driver 220 with the function pointer as a parameter, and the IPC driver 220 calls the function of the application 230 And send a pointer to the data packet to the application 230 by calling. In another embodiment, the IPC driver 220 may send a pointer to the data packet to the application 230 by sending an event or message to the application 230. The data packet may be transmitted from the application of the other processor to the application of the processor 200. [ As described above, when the IPC driver 220 transmits the pointer of the data packet to the application 230, when the data packet is transmitted from the IPC driver 220 to the application 230, ) Operation is not performed, so that the data packet transmission / reception processing speed can be improved.

이하, 도 1의 시스템(100)에서 IPC 채널 및 상응하는 공유 저장 영역의 채널 별로 데이터 패킷 전송을 제어하는 오버플로우(overflow) 방지 기능을 설명한다.Hereinafter, an overflow prevention function for controlling data packet transmission for each channel of the IPC channel and the corresponding shared storage area in the system 100 of FIG. 1 will be described.

도 18a는 도 1의 시스템에서 데이터 패킷들이 전송될 때 전송 중지 동작을 나타내는 도면이고, 도 18b는 도 1의 시스템에서 데이터 패킷들이 전송될 때 전송 재개 동작을 나타내는 도면이다.FIG. 18A is a diagram showing a transmission stop operation when data packets are transmitted in the system of FIG. 1, and FIG. 18B is a diagram showing a transmission restart operation when data packets are transmitted in the system of FIG.

도 18a를 참조하면, 제 1 프로세서(200)의 제 1 IPC 드라이버(220)의 데이터 패킷 송신 큐(224a)에는 제 2 프로세서(300)로 송신할 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)의 포인터들이 저장되어 있고, 제 2 프로세서(300)의 제 2 IPC 드라이버(320)의 데이터 패킷 수신 큐(325a)에는 제 1 프로세서(200)로부터 수신된 제 1 및 제 2 데이터 패킷들(PCK1, PCK2)의 포인터들이 저장되어 있다(단계 S400). 제 1 프로세서(200)는 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)을 제 2 프로세서(300)로 송신하기 위하여 도 8의 공유 저장 영역(412)에 대한 소유권을 획득한다(단계 S410). 예를 들어, 제 1 IPC 드라이버(220)는 디바이스 API로 제공된 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422a)에 소유권 요청 커맨드를 기입할 수 있고, 제 2 IPC 드라이버(320)는 디바이스 API로 제공된 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422a)에 저장된 상기 소유권 요청 커맨드를 독출할 수 있다. 또한, 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 기입 함수를 호출하여 제 2 메일박스(423a)에 소유권 해제 커맨드를 기입할 수 있고, 제 1 IPC 드 라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 독출 함수를 호출하여 제 2 메일박스(423a)에 저장된 상기 소유권 해제 커맨드를 독출할 수 있다.18A, the third to fifth data packets PCK3 and PCK4 to be transmitted to the second processor 300 are transmitted to the data packet transmission queue 224a of the first IPC driver 220 of the first processor 200, And the first and second data packets received from the first processor 200 are stored in the data packet reception queue 325a of the second IPC driver 320 of the second processor 300, (PCK1, PCK2) are stored (step S400). The first processor 200 obtains ownership of the shared storage area 412 of FIG. 8 to transmit the third to fifth data packets PCK3, PCK4, PCK5 to the second processor 300 S410). For example, the first IPC driver 220 may write the ownership request command to the first mailbox 422a by calling the message writing function of the first device driver 210 provided in the device API, The driver 320 can read the ownership request command stored in the first mailbox 422a by calling the message read function of the second device driver 310 provided in the device API. Also, the second IPC driver 320 may write a command for releasing ownership to the second mailbox 423a by calling the message write function of the second device driver 310, and the first IPC driver 220 may write It is possible to read the ownership release command stored in the second mailbox 423a by calling the message read function of the first device driver 210. [

도 8의 공유 저장 영역(412)에 대한 소유권을 획득한 제 1 프로세서(200)는 제 2 프로세서(300)에 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)을 전송한다(단계 S420). 예를 들어, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 데이터 패킷 기입 함수를 호출하여 도 8의 공유 저장 영역(412)의 채널(CH1a)에 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)을 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422b)에 전송 완료 커맨드 및 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)에 대한 데이터 전송 정보를 기입할 수 있다. 상기 데이터 전송 정보는 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)이 저장된 채널(CH1a)의 인덱스 및 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)의 개수를 포함할 수 있다. 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422a)에 저장된 상기 전송 완료 커맨드 및 상기 데이터 전송 정보를 독출할 수 있다. 제 2 IPC 드라이버(320)는 상기 데이터 전송 정보에 기초하여 제 2 디바이스 드라이버(310)의 데이터 패킷 독출 함수를 호출함으로써, 채널(CH1a)에 저장된 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)을 수신할 수 있다. 제 2 프로세서(300)가 제 3 내지 제 5 데이터 패킷들(PCK3, PCK4, PCK5)을 수신하면, 제 2 IPC 드라이버(320)의 데이터 패킷 수신 큐(325b)에 제 1 내지 제 5 데이터 패킷들(PCK1, PCK2, PCK3, PCK4, PCK5)의 포인터들이 저장될 수 있다. 제 2 IPC 드라이버(320)의 데이터 패킷 수신 큐(325b)에 수신버퍼들의 수를 넘는 데이터 패킷들 또는 데이터 패킷들의 포인터들이 저장되는 경우 데이터 패킷이 유실되거나, 데이터 패킷 수신이 지연될 수 있다. 이를 방지하기 위하여 데이터 패킷 수신 큐(325b)에 중지 임계치를 초과하는 데이터 패킷들 또는 데이터 패킷들의 포인터들이 저장되면 데이터 패킷 수신 큐(325b)에 상응하는 채널(CH1a)을 통한 데이터 패킷 전송은 일시 중지될 수 있다.The first processor 200 acquiring ownership of the shared storage area 412 of FIG. 8 transmits the third to fifth data packets PCK3, PCK4 and PCK5 to the second processor 300 (step S420 ). For example, the first IPC driver 220 calls the data packet writing function of the first device driver 210 to write the third to fifth data packets (CH1a) to the channel CH1a of the shared storage area 412 (PCK3, PCK4, PCK5) can be written. The first IPC driver 220 calls the message write function of the first device driver 210 to transmit the transfer complete command and the third to fifth data packets PCK3, PCK4, PCK5 to the first mailbox 422b It is possible to write the data transmission information for the data. The data transmission information may include the index of the channel CH1a storing the third to fifth data packets PCK3, PCK4 and PCK5 and the number of the third to fifth data packets PCK3, PCK4 and PCK5 have. The second IPC driver 320 may read the transmission completion command and the data transmission information stored in the first mailbox 422a by calling the message reading function of the second device driver 310. [ The second IPC driver 320 calls the data packet read function of the second device driver 310 based on the data transmission information to transmit the third to fifth data packets PCK3, PCK4, PCK5). When the second processor 300 receives the third to fifth data packets PCK3, PCK4 and PCK5, the data packet reception queue 325b of the second IPC driver 320 receives the first to fifth data packets (PCK1, PCK2, PCK3, PCK4, PCK5) can be stored. If data packets or pointers of data packets exceeding the number of reception buffers are stored in the data packet reception queue 325b of the second IPC driver 320, data packets may be lost or data packet reception may be delayed. To prevent this, when data packets or pointers to data packets exceeding the stop threshold are stored in the data packet reception queue 325b, the data packet transmission through the channel CH1a corresponding to the data packet reception queue 325b is suspended .

데이터 패킷 수신 큐(325b)에 상기 중지 임계치를 초과하는 제 1 내지 제 5 데이터 패킷들(PCK1, PCK2, PCK3, PCK4, PCK5)의 포인터들이 저장된 경우, 제 2 프로세서(300)는 제 1 프로세서(200)에 채널(CH1a)에 대한 데이터 패킷 전송의 일시 중지를 요청할 수 있다(단계 S430). 예를 들어, 데이터 패킷 수신 큐(325b)의 중지 임계치는 4일 수 있다. 데이터 패킷 수신 큐(325b)에 5개의 데이터 패킷들(PCK1, PCK2, PCK3, PCK4, PCK5)의 포인터들이 저장되어 상기 중지 임계치를 초과한 경우, 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 기입 함수를 호출하여 제 2 메일박스(423b)에 전송 보류 커맨드 및 채널(CH1a)의 인덱스를 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 독출 함수를 호출하여 제 2 메일박스(423b)에 저장된 상기 전송 보류 커맨드 및 채널(CH1a)의 인덱스를 독출할 수 있다. 이에 따라, 제 1 프로세서(200)는 데이터 패킷 수신 큐(325b)에 상응하는 채널(CH1a)에 대한 데이터 패킷 전송의 일시 중지를 요청 받을 수 있고, 데이터 패킷 송신 큐(224c)에 제 2 프로세서(300)로 전송될 제 6 및 제 7 데이터 패킷들(PCK6, PCK7)의 포인터들이 저장된 경우에도, 제 1 프로세 서(200)는 제 6 및 제 7 데이터 패킷들(PCK6, PCK7)의 전송을 일시 중지할 수 있다.The pointers of the first to fifth data packets PCK1, PCK2, PCK3, PCK4 and PCK5 exceeding the stop threshold are stored in the data packet reception queue 325b, 200 to suspend the transmission of the data packet to the channel CH1a (step S430). For example, the stop threshold of the data packet receive queue 325b may be four. When the pointers of the five data packets PCK1, PCK2, PCK3, PCK4 and PCK5 are stored in the data packet reception queue 325b and the stop threshold is exceeded, the second IPC driver 320 transmits the second device driver 310 to write the transmission hold command and the index of the channel CH1a in the second mailbox 423b. The first IPC driver 220 may read the index of the transmission hold command and the channel CH1a stored in the second mailbox 423b by calling the message read function of the first device driver 210. [ Accordingly, the first processor 200 can be requested to suspend the transmission of the data packet to the channel CH1a corresponding to the data packet reception queue 325b, and the second processor The first processor 200 transmits the sixth and seventh data packets PCK6 and PCK7 even if pointers to the sixth and seventh data packets PCK6 and PCK7 to be transmitted to the first processor 200 are stored You can pause.

도 18b를 참조하면, 도 18a의 데이터 패킷 수신 큐(325b)에서 제 1 내지 제 5 데이터 패킷들(PCK1, PCK2, PCK3, PCK4, PCK5) 중 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)이 상응하는 어플리케이션에 전송되어 제거되는 경우, 데이터 패킷 수신 큐(325c)에는 제 4 및 제 5 데이터 패킷들(PCK4, PCK5)의 포인터들이 저장되어 있을 수 있다. 데이터 패킷 수신 큐(325c)에 재개 임계치 이하의 데이터 패킷들의 포인터들이 저장되는 경우, 제 2 프로세서(300)는 제 1 프로세서(200)에 채널(CH1a)에 대한 데이터 패킷 전송의 재개를 요청할 수 있다(단계 S440). 예를 들어, 데이터 패킷 수신 큐(325c)의 상기 재개 임계치는 2일 수 있다. 데이터 패킷 수신 큐(325b)에 2개의 데이터 패킷들(PCK4, PCK5)의 포인터들이 저장되어 상기 재개 임계치 이하인 경우, 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 기입 함수를 호출하여 제 2 메일박스(423c)에 전송 재개 커맨드 및 채널(CH1a)의 인덱스를 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 독출 함수를 호출하여 제 2 메일박스(423c)에 저장된 상기 전송 재개 커맨드 및 채널(CH1a)의 인덱스를 독출할 수 있다. 이에 따라, 제 1 프로세서(200)는 데이터 패킷 수신 큐(325c)에 상응하는 채널(CH1a)에 대한 데이터 패킷 전송의 재개를 요청 받을 수 있다.18B, the first to third data packets PCK1, PCK2, PCK3, PCK4 and PCK5 of the first to fifth data packets PCK1, PCK2, PCK3, PCK4 and PCK5 in the data packet reception queue 325b of FIG. PCK3 are transferred to and removed from the corresponding application, the data packet reception queue 325c may store pointers to the fourth and fifth data packets PCK4 and PCK5. The second processor 300 may request the first processor 200 to resume the transmission of data packets to the channel CH1a if the pointers of data packets below the resume threshold are stored in the data packet reception queue 325c (Step S440). For example, the resume threshold of the data packet receive queue 325c may be two. The second IPC driver 320 calls the message write function of the second device driver 310 when the pointers of the two data packets PCK4 and PCK5 are stored in the data packet reception queue 325b and are below the resume threshold , The transmission resume command and the index of the channel CH1a can be written in the second mailbox 423c. The first IPC driver 220 may call the message read function of the first device driver 210 to read the transfer resume command stored in the second mailbox 423c and the index of the channel CH1a. Accordingly, the first processor 200 may be requested to resume transmission of data packets to the channel CH1a corresponding to the data packet reception queue 325c.

채널(CH1a)에 대한 데이터 패킷 전송의 재개를 요청 받은 제 1 프로세서(200)는 도 18a에 도시된 데이터 패킷 수신 큐(224c)의 제 6 및 제 7 데이터 패 킷들(PCK6, PCK7)을 제 2 프로세서(300)로 전송할 수 있다(단계 S450). 예를 들어, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 데이터 패킷 기입 함수를 호출하여 도 8의 공유 저장 영역(412)의 채널(CH1b)에 제 6 및 제 7 데이터 패킷들(PCK6, PCK7)을 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422c)에 전송 완료 커맨드, 채널(CH1b)의 인덱스 및 데이터 패킷의 개수를 기입할 수 있다. 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422a)에 저장된 상기 전송 완료 커맨드, 채널(CH1b)의 인덱스 및 데이터 패킷의 개수를 독출할 수 있다. 제 2 IPC 드라이버(320)는 상기 채널(CH1b)의 인덱스 및 데이터 패킷의 개수에 기초하여 제 2 디바이스 드라이버(310)의 데이터 패킷 독출 함수를 호출함으로써, 채널(CH1b)에 저장된 제 6 및 제 7 데이터 패킷들(PCK6, PCK7)을 수신할 수 있다. 또한, 데이터 패킷 수신 큐(325d)에 제 4 내지 제 7 데이터 패킷들(PCK4, PCK5, PCK6, PCK7)의 포인터들이 저장될 수 있다.The first processor 200 requesting the resumption of the data packet transmission to the channel CH1a transmits the sixth and seventh data packets PCK6 and PCK7 of the data packet reception queue 224c shown in FIG. To the processor 300 (step S450). For example, the first IPC driver 220 calls the data packet write function of the first device driver 210 to write the sixth and seventh data packets (CH1b) in the channel CH1b of the shared storage area 412 of FIG. 8 (PCK6, PCK7) can be written. The first IPC driver 220 may call the message write function of the first device driver 210 to write the transmission complete command, the index of the channel CH1b, and the number of data packets in the first mailbox 422c . The second IPC driver 320 calls the message reading function of the second device driver 310 to read the transmission completion command stored in the first mailbox 422a and the index of the channel CH1b and the number of data packets . The second IPC driver 320 calls the data packet read function of the second device driver 310 based on the index of the channel CH1b and the number of data packets, And receive data packets PCK6 and PCK7. In addition, pointers of the fourth to seventh data packets PCK4, PCK5, PCK6 and PCK7 may be stored in the data packet reception queue 325d.

이와 같이, IPC 채널 및 상응하는 공유 저장 영역의 채널 별로 데이터 패킷 전송을 제어함으로써, IPC 채널 및 상응하는 공유 저장 영역의 채널의 데이터 패킷 오버플로우(overflow)를 방지할 수 있고, 데이터 전송 속도를 유지하면서 안정적인 데이터 패킷 전송을 지원할 수 있다.By controlling the data packet transmission for each channel of the IPC channel and the corresponding shared storage area, it is possible to prevent data packet overflow of the channel of the IPC channel and the corresponding shared storage area, And can support stable data packet transmission.

이하, 도 1의 시스템(100)에서 싱글 모드의 데이터 패킷 전송 및 버스트 모드의 데이터 패킷 전송을 설명한다.Hereinafter, the transmission of a single mode data packet and the burst mode data packet transmission in the system 100 of FIG. 1 will be described.

도 19a는 도 1의 시스템에서 싱글 모드의 데이터 패킷 전송 방법을 나타내는 도면이고, 도 19b는 도 1의 시스템에서 버스트 모드의 데이터 패킷 전송 방법을 나타내는 도면이다.FIG. 19A is a diagram showing a data packet transmission method in a single mode in the system of FIG. 1, and FIG. 19B is a diagram showing a data packet transmission method in a burst mode in the system of FIG.

도 19a를 참조하면, 제 1 프로세서(200)의 제 1 IPC 드라이버(220)의 데이터 패킷 송신 큐(224e)에는 제 2 프로세서(300)로 송신할 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)의 포인터들이 저장되어 있다(단계 S500). 제 1 프로세서(200)는 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)을 제 2 프로세서(300)로 송신하기 위하여 도 8의 공유 저장 영역(412)에 대한 소유권을 획득한다(단계 S510). 예를 들어, 제 1 IPC 드라이버(220)는 디바이스 API로 제공된 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422e)에 소유권 요청 커맨드를 기입할 수 있고, 제 2 IPC 드라이버(320)는 디바이스 API로 제공된 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422e)에 저장된 상기 소유권 요청 커맨드를 독출할 수 있다. 또한, 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 기입 함수를 호출하여 제 2 메일박스(423e)에 소유권 해제 커맨드를 기입할 수 있고, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 독출 함수를 호출하여 제 2 메일박스(423e)에 저장된 상기 소유권 해제 커맨드를 독출할 수 있다.19A, the first to third data packets PCK1 and PCK2 to be transmitted to the second processor 300 are transmitted to the data packet transmission queue 224e of the first IPC driver 220 of the first processor 200, , PCK3) are stored (step S500). The first processor 200 obtains ownership of the shared storage area 412 of FIG. 8 to transmit the first to third data packets PCK1, PCK2, PCK3 to the second processor 300 S510). For example, the first IPC driver 220 may write the ownership request command to the first mailbox 422e by calling the message writing function of the first device driver 210 provided in the device API, The driver 320 can read the ownership request command stored in the first mailbox 422e by calling the message read function of the second device driver 310 provided in the device API. Also, the second IPC driver 320 can write the ownership release command in the second mailbox 423e by calling the message write function of the second device driver 310, and the first IPC driver 220 1 device driver 210 to read the ownership release command stored in the second mailbox 423e.

싱글 모드에서, 도 8의 공유 저장 영역(412)에 대한 소유권을 획득한 제 1 프로세서(200)는 제 2 프로세서(300)로 제 1 데이터 패킷(PCK1)을 전송한다(단계 S520). 예를 들어, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 데이터 패킷 기입 함수를 호출하여 도 8의 공유 저장 영역(412)의 채널(CH1c)에 제 1 데이터 패킷(PCK1)을 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422f)에 전송 완료 커맨드 및 제 1 데이터 패킷(PCK1)에 대한 데이터 전송 정보를 기입할 수 있다. 상기 데이터 전송 정보는 제 1 데이터 패킷(PCK1)이 저장된 채널(CH1c)의 인덱스를 포함할 수 있다. 일 실시예에서, 상기 데이터 전송 정보는 데이터 패킷 개수를 더욱 포함할 수 있고, 싱글 모드에서 상기 데이터 패킷 개수의 값은 1일 수 있다. 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422f)에 저장된 상기 전송 완료 커맨드 및 상기 데이터 전송 정보를 독출할 수 있다. 제 2 IPC 드라이버(320)는 상기 데이터 전송 정보에 기초하여 제 2 디바이스 드라이버(310)의 데이터 패킷 독출 함수를 호출함으로써, 채널(CH1c)에 저장된 제 1 데이터 패킷(PCK1)을 수신할 수 있다. 제 2 프로세서(300)가 제 1 데이터 패킷(PCK1)을 수신하면, 제 1 IPC 드라이버(220)의 데이터 패킷 송신 큐(224f)에 제 2 및 제 3 데이터 패킷들(PCK2, PCK3)의 포인터들이 저장되어 있고, 제 2 IPC 드라이버(320)의 데이터 패킷 수신 큐(325f)에 제 1 데이터 패킷(PCK1)의 포인터가 저장될 수 있다.In the single mode, the first processor 200 acquiring ownership of the shared storage area 412 of FIG. 8 transmits the first data packet PCK1 to the second processor 300 (step S520). For example, the first IPC driver 220 calls the data packet write function of the first device driver 210 to write the first data packet PCK1 in the channel CH1c of the shared storage area 412 in FIG. 8 Can be written. The first IPC driver 220 may call the message write function of the first device driver 210 to write the transfer complete command and the data transfer information for the first data packet PCK1 in the first mailbox 422f have. The data transmission information may include an index of a channel CH1c in which the first data packet PCK1 is stored. In one embodiment, the data transmission information may further include a data packet number, and in a single mode, the value of the data packet number may be one. The second IPC driver 320 may read the transmission completion command and the data transmission information stored in the first mailbox 422f by calling the message reading function of the second device driver 310. [ The second IPC driver 320 can receive the first data packet PCK1 stored in the channel CH1c by calling the data packet read function of the second device driver 310 based on the data transmission information. When the second processor 300 receives the first data packet PCK1, the pointers of the second and third data packets PCK2 and PCK3 are transmitted to the data packet transmission queue 224f of the first IPC driver 220 And the pointer of the first data packet PCK1 may be stored in the data packet reception queue 325f of the second IPC driver 320. [

싱글 모드에서, 제 1 데이터 패킷(PCK1)을 전송한 제 1 프로세서(200)는 제 2 데이터 패킷(PCK2)을 전송하기 위하여 도 8의 공유 저장 영역(412)에 대한 소유권을 다시 획득한다(단계 S530). 상기 소유권을 획득한 제 1 프로세서(200)는 제 2 프로세서(300)로 제 2 데이터 패킷(PCK2)을 전송한다(단계 S540). 또한, 제 2 데이터 패킷(PCK2)을 전송한 제 1 프로세서(200)는 제 3 데이터 패킷(PCK3)을 전송하기 위하여 상기 소유권을 다시 획득한다(단계 S550). 상기 소유권을 획득한 제 1 프로세서(200)는 제 2 프로세서(300)로 제 3 데이터 패킷(PCK3)을 전송한다(단계 S560).In the single mode, the first processor 200 that has transmitted the first data packet PCK1 reacquires ownership of the shared storage area 412 of FIG. 8 to transmit the second data packet PCK2 S530). The first processor 200 having acquired the ownership transmits the second data packet PCK2 to the second processor 300 (step S540). In addition, the first processor 200 that has transmitted the second data packet PCK2 obtains the ownership again to transmit the third data packet PCK3 (step S550). The first processor 200 having acquired the ownership transmits the third data packet PCK3 to the second processor 300 (step S560).

이와 같이, 싱글 모드에서는, 프로세서들 사이에서 하나의 데이터 패킷이 전송될 때마다, 소유권의 교환을 위한 통신을 필요로 한다. 본 발명의 일 실시예에 따른 시스템에서는 이러한 싱글 모드의 데이터 패킷 전송 외에 버스트 모드의 데이터 패킷 전송을 지원한다.As described above, in the single mode, whenever one data packet is transmitted between processors, communication for exchange of ownership is required. The system according to an embodiment of the present invention supports data packet transmission in a burst mode in addition to data packet transmission in the single mode.

도 19b를 참조하면, 제 1 프로세서(200)의 제 1 IPC 드라이버(220)의 데이터 패킷 송신 큐(224i)에는 제 2 프로세서(300)로 송신할 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)의 포인터들이 저장되어 있다(단계 S600). 제 1 프로세서(200)는 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)을 제 2 프로세서(300)로 송신하기 위하여 도 8의 공유 저장 영역(412)에 대한 소유권을 획득한다(단계 S610). 예를 들어, 제 1 IPC 드라이버(220)는 디바이스 API로 제공된 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422i)에 소유권 요청 커맨드를 기입할 수 있고, 제 2 IPC 드라이버(320)는 디바이스 API로 제공된 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422i)에 저장된 상기 소유권 요청 커맨드를 독출할 수 있다. 또한, 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 기입 함수를 호출하여 제 2 메일박스(423i)에 소유권 해제 커맨드를 기입할 수 있고, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 독출 함수를 호출하여 제 2 메일박스(423i)에 저장된 상기 소유권 해제 커맨드를 독출할 수 있다.19B, the first to third data packets PCK1 and PCK2 to be transmitted to the second processor 300 are transmitted to the data packet transmission queue 224i of the first IPC driver 220 of the first processor 200, , PCK3) are stored (step S600). The first processor 200 obtains ownership of the shared storage area 412 of FIG. 8 to transmit the first to third data packets PCK1, PCK2, PCK3 to the second processor 300 S610). For example, the first IPC driver 220 may write the ownership request command to the first mailbox 422i by calling the message writing function of the first device driver 210 provided in the device API, The driver 320 may read the ownership request command stored in the first mailbox 422i by calling the message read function of the second device driver 310 provided in the device API. Also, the second IPC driver 320 can write the ownership release command to the second mailbox 423i by calling the message write function of the second device driver 310, and the first IPC driver 220 1 device driver 210 to read the ownership release command stored in the second mailbox 423i.

버스트 모드에서, 도 8의 공유 저장 영역(412)에 대한 소유권을 획득한 제 1 프로세서(200)는 제 2 프로세서(300)로 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)을 전송한다(단계 S620). 예를 들어, 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 데이터 패킷 기입 함수를 호출하여 도 8의 공유 저장 영역(412)의 채널(CH1i)에 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)을 기입할 수 있다. 제 1 IPC 드라이버(220)는 제 1 디바이스 드라이버(210)의 메시지 기입 함수를 호출하여 제 1 메일박스(422j)에 전송 완료 커맨드 및 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)에 대한 데이터 전송 정보를 기입할 수 있다. 상기 데이터 전송 정보는 채널(CH1i)의 인덱스 및 데이터 패킷 개수를 포함할 수 있다. 제 2 IPC 드라이버(320)는 제 2 디바이스 드라이버(310)의 메시지 독출 함수를 호출하여 제 1 메일박스(422j)에 저장된 상기 전송 완료 커맨드 및 상기 데이터 전송 정보를 독출할 수 있다. 제 2 IPC 드라이버(320)는 상기 데이터 전송 정보에 기초하여 제 2 디바이스 드라이버(310)의 데이터 패킷 독출 함수를 호출함으로써, 채널(CH1i)에 저장된 제 1 내지 제 3 데이터 패킷들(PCK1, PCK2, PCK3)을 수신할 수 있다.In the burst mode, the first processor 200 acquiring ownership of the shared storage area 412 of FIG. 8 transmits the first to third data packets PCK1, PCK2 and PCK3 to the second processor 300 (Step S620). For example, the first IPC driver 220 may call the data packet write function of the first device driver 210 to write the first to third data packets < RTI ID = 0.0 > (PCK1, PCK2, PCK3) can be written. The first IPC driver 220 calls the message write function of the first device driver 210 to send the transfer complete command and the first to third data packets PCK1, PCK2, PCK3 to the first mailbox 422j It is possible to write the data transmission information for the data. The data transmission information may include an index of the channel CH1i and the number of data packets. The second IPC driver 320 may read the transmission completion command and the data transmission information stored in the first mailbox 422j by calling the message reading function of the second device driver 310. [ The second IPC driver 320 calls the data packet reading function of the second device driver 310 based on the data transmission information to transmit the first to third data packets PCK1, PCK2, PCK3).

이와 같이, 버스트 모드에서는, 소유권 교환을 위한 통신을 한번 이하로 수행할 수 있고, 복수의 데이터 패킷들을 한번에 하나의 프로세서에서 다른 프로세서로 전송할 수 있다. 이에 따라, 이와 같은 버스트 전송을 통하여 소유권 교환의 오버헤드 없이 대용량의 데이터를 전송할 수 있으며, 시스템의 데이터 전송 속도를 향상시킬 수 있다.As such, in burst mode, communication for ownership exchange can be performed less than once and multiple data packets can be transferred from one processor to another at a time. Accordingly, it is possible to transmit a large amount of data without the overhead of ownership exchange through such burst transmission, and to improve the data transmission speed of the system.

도 20은 싱글 모드 및 버스트 모드에서 도 1의 시스템의 데이터 전송 속도를 나타내는 도면이다.20 is a diagram showing a data transfer rate of the system of FIG. 1 in the single mode and the burst mode.

도 20을 참조하면, 버스트 모드에서의 데이터 전송 속도(720, 730)는 싱글 모드에서의 데이터 전송 속도(710) 보다 고속인 것을 알 수 있다. 도 20에는, 도 1의 제 1 프로세서(200)의 동작 주파수가 약 282MHz, 도 1의 제 2 프로세서(300)의 동작 주파수가 약 533MHz인 경우의 도 1의 시스템(100)의 데이터 전송 속도의 예가 도시되어 있다. 예를 들어, 싱글 모드에서, 1024 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 1.4 Mbps이고, 1500 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 2.3 Mbps이고, 2048 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 3.0 Mbps일 수 있다. 예를 들어, 버스트 모드에서, 10개의 데이터 패킷들을 버스트 전송, 즉 한번의 소유권 획득 후 추가적인 소유권 획득 없이 10개의 데이터 패킷들을 전송할 때, 1024 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 13.7 Mbps이고, 1500 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 21.7 Mbps이고, 2048 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 26.7 Mbps일 수 있다. 또한, 예를 들어, 버스트 모드에서, 20개의 데이터 패킷들을 버스트 전송, 즉 한번의 소유권 획득 후 추가적인 소유권 획득 없이 20개의 데이터 패킷들을 전송할 때, 1024 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 20.0 Mbps이고, 1500 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 28.7 Mbps이고, 2048 Byte의 데이터 패킷을 전송하는 경우 데이터 전송 속도는 약 36.7 Mbps일 수 있다. 도 20에 도시된 바와 같이, 버스트 전송을 통하여 시스템의 데이터 전송 속도를 향상시킬 수 있다.Referring to FIG. 20, it can be seen that the data transfer rates 720 and 730 in the burst mode are higher than the data transfer rate 710 in the single mode. 20 shows the data transfer rate of the system 100 of FIG. 1 when the operating frequency of the first processor 200 of FIG. 1 is about 282 MHz and the operating frequency of the second processor 300 of FIG. 1 is about 533 MHz. An example is shown. For example, in a single mode, when a data packet of 1024 bytes is transmitted, the data transmission speed is about 1.4 Mbps. When transmitting a 1500 byte data packet, the data transmission speed is about 2.3 Mbps. When transmitting, the data transmission rate may be about 3.0 Mbps. For example, in burst mode, when bursting 10 data packets, that is 10 data packets without acquiring additional ownership after acquiring ownership once, when transmitting a 1024 Byte data packet, the data transfer rate is about 13.7 Mbps . When the data packet of 1500 bytes is transmitted, the data transmission speed is about 21.7 Mbps. When the data packet of 2048 bytes is transmitted, the data transmission speed may be about 26.7 Mbps. Also, for example, in the burst mode, when transmitting 20 data packets with burst transfer, that is, after acquiring ownership once, without additional ownership acquisition, when the data packet of 1024 Byte is transmitted, the data transfer rate is about 20.0 Mbps, and a data packet of 1500 bytes is transmitted at a data transmission speed of about 28.7 Mbps. When a data packet of 2048 bytes is transmitted, a data transmission speed may be about 36.7 Mbps. As shown in FIG. 20, the data transmission rate of the system can be improved through burst transmission.

도 21은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.21 is a block diagram illustrating a system in accordance with an embodiment of the present invention.

도 21을 참조하면, 시스템(900)은 제 1 프로세서(910), 제 2 프로세서(920), 프로세서간 통신 장치(930), 안테나(940), 플래시 메모리(950), 액정 표시 장치(960), 스피커(970), 입력 장치(980) 및 버스(990)를 포함한다. 일 실시예서, 시스템(900)은 휴대용 장치일 수 있다. 예를 들어, 시스템(900)은 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 휴대폰(mobile phone), 스마트 폰, 모바일TV, 네비게이션, 휴대용 게임기 등일 수 있다.21, a system 900 includes a first processor 910, a second processor 920, an inter-processor communication device 930, an antenna 940, a flash memory 950, a liquid crystal display 960, A speaker 970, an input device 980, and a bus 990. In one embodiment, the system 900 may be a portable device. For example, the system 900 may be a personal digital assistant (PDA), a portable multimedia player (PMP), a mobile phone, a smart phone, a mobile TV, a navigation device, .

제 1 프로세서(910) 및 제 2 프로세서(920)는 프로세서간 통신 장치(930)에 각각 연결된다. 도 21에는 프로세서간 통신 장치(930)에 각각 연결된 두개의 프로세서들(910, 920)을 포함하는 시스템(900)이 도시되어 있으나, 실시예에 따라 프로세서간 통신 장치(930)에 세 개 이상의 프로세서들이 연결될 수 있다.The first processor 910 and the second processor 920 are connected to the inter-processor communication device 930, respectively. 21 shows a system 900 that includes two processors 910 and 920 connected to an inter-processor communication device 930, respectively, but in accordance with an embodiment, the inter-processor communication device 930 may include three or more processors Lt; / RTI >

일 실시예에서, 제 1 프로세서(910)는 안테나(940)로부터 수신된 통신 신호를 복조하여 제 2 프로세서(920)에 제공하고, 제 2 프로세서(920)로부터 수신된 데이터를 변조하여 안테나(940)를 통하여 외부에 제공하는 모뎀 기능을 수행하는 프로세서일 수 있다. 예를 들어, 제 1 프로세서(910)는 GSM, GPRS, WCDMA, HSxPA 등의 통신을 지원하는 모뎀 프로세서일 수 있다. 또한, 제 2 프로세서는 인터넷 브라우저, 3차원 지도, 게임, 동영상 등을 제공하는 어플리케이션들이 실행되는 어플리 케이션 프로세서 또는 멀티미디어 프로세서일 수 있다. 프로세서간 통신 장치(930)는 제 1 프로세서(910)와 제 2 프로세서(920) 사이의 데이터 전송을 위한 공유 저장 영역, 제 1 프로세서(910)에서 실행되는 프로그램의 코드 및 데이터가 저장되는 제 1 전용 저장 영역, 제 2 프로세서(920)에서 실행되는 프로그램의 코드 및 데이터가 저장되는 제 2 전용 저장 영역을 포함할 수 있다. 일 실시예에서, 프로세서간 통신 장치(930)는 동적 랜덤 억세스 메모리(DRAM)일 수 있다. 실시예에 따라, 제 1 프로세서(910), 제 2 프로세서(920) 및 프로세서간 통신 장치(930)는 각각 별도의 칩으로 구현될 수 있고, 하나의 칩으로 구현될 수 있다.In one embodiment, the first processor 910 demodulates and provides the communication signal received from the antenna 940 to the second processor 920, modulates the data received from the second processor 920, ) To the outside via a modem. For example, the first processor 910 may be a modem processor supporting communication such as GSM, GPRS, WCDMA, HSxPA, and the like. In addition, the second processor may be an application processor or a multimedia processor in which applications providing an Internet browser, a three-dimensional map, a game, a moving picture, and the like are executed. The inter-processor communication device 930 includes a shared storage area for data transfer between the first processor 910 and the second processor 920, a first storage area for data transmission between the first processor 910 and the second processor 920, A dedicated storage area, a code of a program executed in the second processor 920, and a second dedicated storage area in which data is stored. In one embodiment, the inter-processor communication device 930 may be a dynamic random access memory (DRAM). According to an embodiment, the first processor 910, the second processor 920, and the inter-processor communication device 930 may be implemented as separate chips and may be implemented as a single chip.

일 실시예에서, 제 1 프로세서(910)는 프로세서간 통신 장치(930) 외에 별도의 저장 장치와 연결되지 않을 수 있다. 즉, 제 1 프로세서(910)에서 실행되는 프로그램의 코드 및 데이터는 프로세서간 통신 장치(930)의 상기 제 1 전용 저장 영역에 저장될 수 있다. 예를 들어, 제 1 프로세서(910)에서 실행되는 프로그램의 코드는 시스템 부팅 시 제 2 프로세서(920)에 연결된 플래시 메모리(950) 또는 파일 시스템(미도시)로부터 제 2 프로세서(920)를 통하여 상기 제 1 전용 저장 영역에 저장될 수 있다. 이 경우, 제 2 프로세서(920)는 시스템 부팅 시에 상기 제 1 전용 저장 영역을 억세스 하고, 부팅이 완료된 후에는 상기 제 1 전용 저장 영역을 억세스 하지 않을 수 있다. 이와 같이, 시스템(900)이 제 1 프로세서(910)를 위한 별도의 저장 장치를 포함하지 않음으로써, 시스템(900)의 사이즈가 작아질 수 있다.In one embodiment, the first processor 910 may not be coupled to a separate storage device in addition to the inter-processor communication device 930. That is, the code and data of the program executed in the first processor 910 may be stored in the first dedicated storage area of the inter-processor communication device 930. [ For example, the code of the program executed by the first processor 910 may be transferred from the flash memory 950 or the file system (not shown) connected to the second processor 920 at the time of system boot to the second processor 920 via the second processor 920 And may be stored in the first dedicated storage area. In this case, the second processor 920 may access the first dedicated storage area at the time of booting the system, and may not access the first dedicated storage area after booting is completed. As such, system 900 can be reduced in size by not including a separate storage device for first processor 910.

제 2 프로세서(920)는 플래시 메모리(950)에 연결될 수 있다. 플래시 메모리(950)는 제 2 프로세서(920)의 부트 코드, 또는 제 1 프로세서(910) 및 제 2 프 로세서(920)의 부트 코드를 저장할 수 있다. 제 2 프로세서(920)의 어플리케이션 코드 및/또는 데이터는 프로세서간 통신 장치(930)의 상기 제 2 전용 저장 영역에 저장될 수 있다. 이에 따라, 시스템(900)은 제 2 프로세서(920)의 어플리케이션 데이터 저장을 위한 별도의 DRAM을 포함하지 않음으로써, 시스템(900)의 사이즈가 더욱 작아질 수 있다.The second processor 920 may be coupled to the flash memory 950. The flash memory 950 may store the boot code of the second processor 920 or the boot code of the first processor 910 and the second processor 920. The application code and / or data of the second processor 920 may be stored in the second dedicated storage area of the inter-processor communication device 930. Accordingly, the system 900 does not include a separate DRAM for application data storage of the second processor 920, so that the size of the system 900 can be further reduced.

또한, 제 2 프로세서(920)는 버스(990)를 통하여 액정 표시 장치(960), 스피커(970) 및 입력 장치(980)에 연결될 수 있다. 제 2 프로세서(920)는 제 1 프로세서(910) 및 프로세서간 통신 장치(930)를 통하여 제공받은 통신 데이터 및/또는 입력 장치(980)로부터 제공받은 입력 데이터에 기초하여 액정 표시 장치(930) 및/또는 스피커(970)에 영상 데이터 및/또는 음성 데이터를 제공할 수 있다.The second processor 920 may also be connected to the liquid crystal display 960, the speaker 970 and the input device 980 via a bus 990. The second processor 920 is connected to the liquid crystal display 930 and the second processor 930 based on the communication data provided through the first processor 910 and the inter-processor communication device 930 and / / RTI > and / or audio data to the speaker 970. In this way,

이와 같이, 본 발명의 일 실시예에 따른 시스템(900)은 전용 저장 영역 및 공유 저장 영역을 가지는 프로세서간 통신 장치(930)를 포함하여 전체 시스템의 사이즈를 줄일 수 있고, 전력 소모를 줄일 수 있다. 또한, 프로세서간 통신 장치(930)는 공유 저장 영역을 통하여 데이터를 전송하고, 메일박스를 통하여 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 프로세서간 통신 장치(930)는 버스트 전송을 지원하여 데이터 전송 속도를 더욱 향상시킬 수 있다.As described above, the system 900 according to an embodiment of the present invention includes the inter-processor communication device 930 having a dedicated storage area and a shared storage area, thereby reducing the size of the entire system and reducing power consumption . In addition, the inter-processor communication device 930 can transmit data through the shared storage area and transmit the message through the mailbox, thereby efficiently performing data transmission. In addition, the inter-processor communication device 930 may support burst transmission to further improve the data transfer rate.

상술한 바와 같이, 본 발명의 실시예들에 따른 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 어플리케이션/서비스 별로 하나 이상의 IPC 채널 및 공유 저장 영역의 채널을 제공하여 데이터 전송을 효율적으 로 수행할 수 있다. 또한, 본 발명의 실시예들에 따른 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 데이터 패킷 복사 동작을 최소화하고, IPC 채널 및 상응하는 공유 저장 영역의 채널의 데이터 패킷 오버플로우(overflow)를 방지할 수 있어, 데이터 전송 속도를 유지하면서 안정적인 데이터 패킷 전송을 지원할 수 있다. 게다가, 본 발명의 실시예들에 따른 프로세서, 시스템 및 IPC 드라이버가 기록된 컴퓨터로 읽을 수 있는 기록 매체는 버스트 전송을 지원하여 소유권 교환의 오버헤드를 줄임으로써 데이터 전송 속도를 더욱 향상시킬 수 있다.As described above, the processor, the system, and the computer readable recording medium on which the IPC driver is recorded according to the embodiments of the present invention provide one or more channels of IPC channels and shared storage areas per application / service, Can be efficiently performed. In addition, a computer-readable recording medium on which a processor, a system and an IPC driver are recorded according to embodiments of the present invention minimizes a data packet copying operation and minimizes a data packet overflow of an IPC channel and a channel of a corresponding shared storage area it is possible to prevent overflow of data packets and to support stable data packet transmission while maintaining a data transmission rate. In addition, the processor, system, and computer readable recording medium on which the IPC driver is written according to embodiments of the present invention can support burst transmission, thereby further improving the data transfer rate by reducing the overhead of ownership exchange.

본 발명은 복수의 프로세서들을 포함하는 임의의 시스템에 유용하게 이용될 수 있다. 특히, 본 발명은 개인 정보 단말기(personal digital assistant; PDA), 휴대형 멀티미디어 플레이어(portable multimedia player; PMP), 휴대폰(mobile phone), 스마트 폰, 모바일TV, 네비게이션, 휴대용 게임기 등과 같은 휴대용 장치에 더욱 유용하게 이용될 수 있다.The present invention can be usefully used in any system including a plurality of processors. Particularly, the present invention is more useful for portable devices such as a personal digital assistant (PDA), a portable multimedia player (PMP), a mobile phone, a smart phone, a mobile TV, a navigation device, Lt; / RTI >

상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.While the present invention has been described with reference to the preferred embodiments thereof, it will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit and scope of the invention as defined in the appended claims. It will be understood.

도 1은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.1 is a block diagram illustrating a system according to an embodiment of the present invention.

도 2a는 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들의 일 예를 나타내는 블록도이고, 도 2b는 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들의 다른 예를 나타내는 블록도이다.FIG. 2A is a block diagram illustrating an example of modules executing in a processor included in the system of FIG. 1, and FIG. 2B is a block diagram illustrating another example of modules executing in a processor included in the system of FIG.

도 3은 도 2a 또는 도 2b에 도시된 디바이스 드라이버를 나타내는 블록도이고, 도 4는 도 3에 도시된 디바이스 API의 일 예를 나타내는 도면이다.FIG. 3 is a block diagram showing the device driver shown in FIG. 2A or FIG. 2B, and FIG. 4 is a diagram showing an example of the device API shown in FIG.

도 5는 도 2a 또는 도 2b에 도시된 IPC 드라이버를 나타내는 블록도이고, 도 6은 도 5에 도시된 IPC API의 일 예를 나타내는 도면이며, 도 7은 도 5에 도시된 IPC 채널의 일 예를 나타내는 도면이다.5 is a block diagram showing the IPC driver shown in FIG. 2A or 2B, FIG. 6 is a diagram showing an example of the IPC API shown in FIG. 5, FIG. 7 is a diagram showing an example of the IPC channel shown in FIG. 5 Fig.

도 8은 도 1의 시스템에 포함된 프로세서간 통신 장치를 나타내는 블록도이다.8 is a block diagram illustrating an inter-processor communication device included in the system of FIG.

도 9는 도 8의 프로세서간 통신 장치에 포함된 공유 저장 영역을 나타내는 블록도이다.9 is a block diagram illustrating a shared storage area included in the inter-processor communication device of FIG.

도 10는 도 9의 공유 저장 영역에 포함된 채널을 나타내는 블록도이고, 도 11은 도 10의 채널에 포함된 버퍼에 저장되는 데이터 패킷을 나타내는 도면이다.FIG. 10 is a block diagram illustrating a channel included in the shared storage area of FIG. 9, and FIG. 11 is a diagram illustrating a data packet stored in a buffer included in the channel of FIG.

도 12는 도 2의 프로세서간 통신 장치에 포함된 메일박스를 나타내는 블록도이고, 도 13은 도 12의 메일박스에 포함된 커맨드 저장 영역에 저장되는 커맨드들의 예를 나타내는 도면이다.FIG. 12 is a block diagram showing a mail box included in the inter-processor communication apparatus of FIG. 2, and FIG. 13 is a diagram showing an example of commands stored in the command storage area included in the mail box of FIG.

도 14는 도 1의 시스템에 포함된 제 1 프로세서에서 제 2 프로세서로 메시지 가 전송되는 방법을 나타내는 순서도이다.14 is a flow chart illustrating how a message is transferred from a first processor to a second processor included in the system of FIG.

도 15는 도 1의 시스템에 포함된 제 1 프로세서가 도 8의 프로세서간 통신 장치에 포함된 공유 저장 영역에 대한 소유권을 획득하는 방법을 나타내는 순서도이다.FIG. 15 is a flowchart illustrating a method for a first processor included in the system of FIG. 1 to acquire ownership of a shared storage area included in the inter-processor communication apparatus of FIG.

도 16은 도 1의 시스템에서 프로세서간 데이터 전송 방법을 나타내는 순서도이다.16 is a flowchart showing a method of transferring data between processors in the system of FIG.

도 17은 도 1의 시스템에 포함된 프로세서에서 데이터 송수신시 모듈들의 동작을 나타내는 도면이다.17 is a diagram showing operations of modules in data transmission and reception in a processor included in the system of FIG.

도 18a는 도 1의 시스템에서 데이터 패킷들이 전송될 때 전송 중지 동작을 나타내는 도면이고, 도 18b는 도 1의 시스템에서 데이터 패킷들이 전송될 때 전송 재개 동작을 나타내는 도면이다.FIG. 18A is a diagram showing a transmission stop operation when data packets are transmitted in the system of FIG. 1, and FIG. 18B is a diagram showing a transmission restart operation when data packets are transmitted in the system of FIG.

도 19a는 도 1의 시스템에서 싱글 모드의 데이터 패킷 전송 방법을 나타내는 도면이고, 도 19b는 도 1의 시스템에서 버스트 모드의 데이터 패킷 전송 방법을 나타내는 도면이다.FIG. 19A is a diagram showing a data packet transmission method in a single mode in the system of FIG. 1, and FIG. 19B is a diagram showing a data packet transmission method in a burst mode in the system of FIG.

도 20은 싱글 모드 및 버스트 모드에서 도 1의 시스템의 데이터 전송 속도를 나타내는 도면이다.20 is a diagram showing a data transfer rate of the system of FIG. 1 in the single mode and the burst mode.

도 21은 본 발명의 일 실시예에 따른 시스템을 나타내는 블록도이다.21 is a block diagram illustrating a system in accordance with an embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명>Description of the Related Art

100, 900: 시스템100, 900: System

200, 200a, 200b, 300, 910, 920: 프로세서200, 200a, 200b, 300, 910, 920:

400, 400a, 930: 프로세서간 통신 장치400, 400a, 930: interprocessor communication device

412: 공유 저장 영역412: Shared Storage

Claims (20)

프로세서간 통신을 통하여 복수의 데이터 패킷들을 송수신하는 하나 이상의 어플리케이션;One or more applications for transmitting and receiving a plurality of data packets through inter-processor communication; 상기 어플리케이션에 상기 복수의 데이터 패킷들에 대한 전송 경로를 제공하도록 복수의 IPC(inter-processor communication) 채널들 중 어느 하나의 IPC 채널에 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 IPC 드라이버; 및An IPC driver for storing information on the plurality of data packets in any one of a plurality of IPC channels to provide a transmission path for the plurality of data packets to the application; And 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 정보에 기초하여 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 디바이스 드라이버를 포함하고,And a device driver for writing the plurality of data packets to the inter-processor communication device based on the information on the plurality of data packets stored in the one IPC channel, 상기 어플리케이션은 상기 복수의 데이터 패킷들을 송수신하는 제 1 어플리케이션 및 상기 복수의 데이터 패킷들을 송수신하는 제 2 어플리케이션을 포함하고,Wherein the application comprises a first application for transmitting and receiving the plurality of data packets and a second application for transmitting and receiving the plurality of data packets, 상기 IPC 드라이버는, 상기 복수의 IPC 채널들 중 제1 IPC 채널에 상기 제 1 어플리케이션의 상기 복수의 데이터 패킷들에 대한 정보를 저장하고, 상기 복수의 IPC 채널들 중 제 2 IPC 채널에 상기 제 2 어플리케이션의 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 것을 특징으로 하는 프로세서.Wherein the IPC driver stores information on the plurality of data packets of the first application on a first one of the plurality of IPC channels and transmits the second IPC channel to the second one of the plurality of IPC channels, And stores information about the plurality of data packets of the application. 제 1 항에 있어서, 상기 IPC 드라이버는,The IPC driver according to claim 1, 상기 어플리케이션에 제공되어 상기 복수의 데이터 패킷들에 대한 전송을 요청받는 IPC API(application programming interface);An IPC API (application programming interface) provided to the application and requested to transmit the plurality of data packets; 상기 IPC API를 통하여 전송을 요청 받은 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 상기 어느 하나의 IPC 채널을 포함하는 상기 복수의 IPC 채널들; 및The plurality of IPC channels including any one of the IPC channels storing information on the plurality of data packets requested to be transmitted through the IPC API; And 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 정보를 상기 디바이스 드라이버에 제공하는 IPC 스레드를 포함하는 것을 특징으로 하는 프로세서.And an IPC thread for providing the device driver with information on the plurality of data packets stored in any one of the IPC channels. 삭제delete 제 2 항에 있어서, 상기 어느 하나의 IPC 채널은,3. The method of claim 2, wherein the one of the IPC channels comprises: 상기 어플리케이션에서 상기 프로세서간 통신 장치로 전송되는 제 1 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 송신 큐; 및A data packet transmission queue for storing pointers and lengths of a first plurality of data packets transmitted from the application to the inter-processor communication device; And 상기 프로세서간 통신 장치에서 상기 어플리케이션으로 전송되는 제 2 복수의 데이터 패킷들의 포인터들 및 길이들을 저장하는 데이터 패킷 수신 큐를 포함하는 것을 특징으로 하는 프로세서.And a data packet reception queue for storing pointers and lengths of a second plurality of data packets transmitted from the inter-processor communication device to the application. 제 4 항에 있어서, 상기 IPC 스레드는,5. The method of claim 4, 상기 데이터 패킷 수신 큐에 포인터들 및 길이들이 저장된 상기 제 2 복수의 데이터 패킷들의 수가 중지 임계치 이상인 경우, 상기 디바이스 드라이버를 통하여 상기 데이터 패킷 수신 큐에 대한 데이터 패킷 전송의 중지를 요청하고,Requesting the device driver to suspend transmission of a data packet to the data packet reception queue if the number of the second plurality of data packets storing pointers and lengths in the data packet reception queue is equal to or greater than a suspend threshold, 상기 데이터 패킷 전송의 중지를 요청한 후, 상기 데이터 패킷 수신 큐에 포인터들 및 길이들이 저장된 상기 제 2 복수의 데이터 패킷들의 수가 재개 임계치 이하인 경우, 상기 디바이스 드라이버를 통하여 상기 데이터 패킷 수신 큐에 대한 데이터 패킷 전송의 재개를 요청하는 것을 특징으로 하는 프로세서.If the number of the second plurality of data packets storing pointers and lengths in the data packet reception queue is less than or equal to the resume threshold after requesting the suspension of the data packet transmission, Requesting the resumption of transmission. 삭제delete 삭제delete 삭제delete 프로세서간 통신을 통하여 복수의 데이터 패킷들을 송수신하는 하나 이상의 어플리케이션, 상기 어플리케이션에 상기 복수의 데이터 패킷들에 대한 전송 경로를 제공하도록 복수의 IPC(inter-processor communication) 채널들 중 어느 하나의 IPC 채널에 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들을 저장하는 IPC 드라이버, 및 상기 어느 하나의 IPC 채널에 저장된 상기 복수의 데이터 패킷들에 대한 포인터들 및 길이들에 기초하여 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 디바이스 드라이버를 각각 포함하는 복수의 프로세서들; 및One or more applications for transmitting and receiving a plurality of data packets through inter-processor communications, one or more applications for transmitting data packets to one of the plurality of inter-processor communication (IPC) channels to provide a transmission path for the plurality of data packets to the application An IPC driver for storing pointers and lengths for the plurality of data packets; and an IPC driver for storing the plurality of data packets in the interprocessor communication device based on pointers and lengths for the plurality of data packets stored in the one IPC channel. A plurality of processors each including a device driver for writing data packets of data; And 상기 복수의 프로세서들에 의해 선택적으로 억세스 되고, 상기 복수의 프로세서들 각각에 포함된 상기 디바이스 드라이버로부터 수신된 상기 복수의 데이터 패킷들을 저장하고, 상기 복수의 프로세서들 사이에서 전송되는 커맨드 및 상기 저장된 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장하는 상기 프로세서간 통신 장치를 포함하고,Storing the plurality of data packets selectively received by the plurality of processors and received from the device driver included in each of the plurality of processors, and receiving commands transmitted between the plurality of processors and the stored plurality The interprocessor communication device storing data transmission information for the data packets of the interprocessor, 상기 어플리케이션은 상기 복수의 데이터 패킷들을 송수신하는 제 1 어플리케이션 및 상기 복수의 데이터 패킷들을 송수신하는 제 2 어플리케이션을 포함하고,Wherein the application comprises a first application for transmitting and receiving the plurality of data packets and a second application for transmitting and receiving the plurality of data packets, 상기 IPC 드라이버는, 상기 복수의 IPC 채널들 중 제1 IPC 채널에 상기 제 1 어플리케이션의 상기 복수의 데이터 패킷들에 대한 정보를 저장하고, 상기 복수의 IPC 채널들 중 제 2 IPC 채널에 상기 제 2 어플리케이션의 상기 복수의 데이터 패킷들에 대한 정보를 저장하는 것을 특징으로 하는 시스템.Wherein the IPC driver stores information on the plurality of data packets of the first application on a first one of the plurality of IPC channels and transmits the second IPC channel to the second one of the plurality of IPC channels, And stores information about the plurality of data packets of the application. 제 9 항에 있어서, 상기 프로세서간 통신 장치는,10. The inter-processor communication device according to claim 9, 상기 복수의 프로세서들에 연결되는 복수의 포트들;A plurality of ports coupled to the plurality of processors; 상기 복수의 포트들을 통하여 상기 복수의 프로세서들에 의해 선택적으로 억세스 되고, 상기 복수의 데이터 패킷들을 복수의 채널들 중 어느 하나의 채널에 저장하는 공유 저장 영역; 및A shared storage area that is selectively accessed by the plurality of processors through the plurality of ports and stores the plurality of data packets in one of the plurality of channels; And 상기 복수의 포트들에 연결되고, 상기 커맨드 및 상기 데이터 전송 정보를 저장하는 메일박스 영역을 포함하는 것을 특징으로 하는 시스템.And a mailbox area connected to the plurality of ports and storing the command and the data transmission information. 제 10 항에 있어서,11. The method of claim 10, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 버퍼들을 포함하고,Wherein the one of the plurality of data packets includes a plurality of buffers, 상기 복수의 버퍼들 각각은 상기 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장하는 것을 특징으로 하는 시스템.Wherein each of the plurality of buffers stores any one of the plurality of data packets. 제 10 항에 있어서, 상기 메일박스 영역은,11. The information processing apparatus according to claim 10, 상기 커맨드를 저장하는 커맨드 저장 영역;A command storage area for storing the command; 상기 복수의 데이터 패킷들의 상기 공유 저장 영역 내의 위치에 대한 정보를 저장하는 채널 인덱스 저장 영역; 및A channel index storage area for storing information on locations in the shared storage area of the plurality of data packets; And 상기 복수의 데이터 패킷들의 개수에 대한 정보를 저장하는 패킷 개수 저장 영역을 포함하는 것을 특징으로 하는 시스템.And a packet number storage area for storing information on the number of the plurality of data packets. 제 10 항에 있어서, 상기 프로세서간 통신 장치는,11. The inter-processor communication device according to claim 10, 상기 공유 저장 영역의 소유권에 대한 정보를 저장하는 세마포어 영역을 더 포함하는 것을 특징으로 하는 시스템.Further comprising a semaphore area for storing information about ownership of the shared storage area. 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete 삭제delete
KR1020080076129A 2008-06-11 2008-08-04 Processor, system and recording medium including ipc driver for inter-processor communication KR101517835B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080076129A KR101517835B1 (en) 2008-08-04 2008-08-04 Processor, system and recording medium including ipc driver for inter-processor communication
US12/336,039 US8230180B2 (en) 2008-06-11 2008-12-16 Shared memory burst communications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080076129A KR101517835B1 (en) 2008-08-04 2008-08-04 Processor, system and recording medium including ipc driver for inter-processor communication

Publications (2)

Publication Number Publication Date
KR20100015190A KR20100015190A (en) 2010-02-12
KR101517835B1 true KR101517835B1 (en) 2015-05-07

Family

ID=42088358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080076129A KR101517835B1 (en) 2008-06-11 2008-08-04 Processor, system and recording medium including ipc driver for inter-processor communication

Country Status (1)

Country Link
KR (1) KR101517835B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160036795A (en) * 2014-09-26 2016-04-05 유니버시티 테크놀로지 말레이시아 A homogeneous device access method which removes physical device drivers in a computer operating system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100781974B1 (en) * 2006-11-15 2007-12-06 삼성전자주식회사 Multi-path accessible semiconductor memory device having register access circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100781974B1 (en) * 2006-11-15 2007-12-06 삼성전자주식회사 Multi-path accessible semiconductor memory device having register access circuit

Also Published As

Publication number Publication date
KR20100015190A (en) 2010-02-12

Similar Documents

Publication Publication Date Title
US11573915B2 (en) Storage device for interfacing with host and method of operating the host and the storage device
US9734085B2 (en) DMA transmission method and system thereof
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
TWI420302B (en) Method, system, and computing device for hybird memory device with single interface, and computer readable medium for recording related instructions thereon
US20120290763A1 (en) Method and system of complete mutual access of multiple-processors
US5964859A (en) Allocatable post and prefetch buffers for bus bridges
US20050198416A1 (en) Two channel bus structure to support address information, data, and transfer qualifiers
US20150143045A1 (en) Cache control apparatus and method
CN110858188A (en) Multiprocessor system with distributed mailbox structure and communication method thereof
US20070168583A1 (en) Endpoint control apparatus and method thereof
WO2020168522A1 (en) System on chip, routing method for access command and terminal
US8184110B2 (en) Method and apparatus for indirect interface with enhanced programmable direct port
US7925819B2 (en) Non-volatile memory storage system and method for reading an expansion read only memory image thereof
US7409486B2 (en) Storage system, and storage control method
US8037254B2 (en) Memory controller and method for coupling a network and a memory
US7774513B2 (en) DMA circuit and computer system
KR101517835B1 (en) Processor, system and recording medium including ipc driver for inter-processor communication
CN117472815A (en) Storage module conversion interface under AXI protocol and conversion method thereof
US7861007B2 (en) Method and apparatus for multimedia display in a mobile device
US20080016296A1 (en) Data processing system
KR20090128605A (en) Inter-processor communication device having burst transfer function, system including the inter-processor communication device, and device driver for operating the inter-processor communication device
CN116340203A (en) Data pre-reading method and device, processor and prefetcher
US7024523B1 (en) Host adapter integrated data FIFO and data cache and method for improved host adapter sourcing latency
RU2475817C1 (en) Apparatus for buffering data streams read from ram
US20030126345A1 (en) Method and apparatus for converting an external memory access into a local memory access in a processor core

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
LAPS Lapse due to unpaid annual fee