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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
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
본 발명은 프로세서간 통신(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
제 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
실시예에 따라, 제 1 프로세서(200)는 모뎀 프로세서일 수 있고, 제 2 프로세서(300)는 어플리케이션 프로세서이거나, 멀티미디어 프로세서일 수 있다. 실시예에 따라, 제 1 프로세서(200) 및 제 2 프로세서(300)는 각각 별도의 칩으로 구현될 수 있고, 제 1 프로세서(200) 및 제 2 프로세서(300)는 하나의 칩으로 구현될 수 있다.According to an embodiment, the
프로세서간 통신 장치(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
예를 들어, 제 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
도 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
도 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
디바이스 드라이버(210)는 IPC 드라이버(220)에 디바이스 응용 프로그램 인터페이스(application programming interface; API)를 제공한다. IPC 드라이버(220)가 상기 디바이스 API를 통하여 디바이스 드라이버(210)에 데이터 패킷 또는 메시지의 기입 또는 독출을 요청하면, 디바이스 드라이버(210)는 데이터 패킷 또는 메시지를 도 1의 프로세서간 통신 장치(400)에 기입하거나, 도 1의 프로세서 간 통신 장치(400)로부터 독출한다. 실시예에 따라, 디바이스 드라이버(210)는 라이브러리(library)로 구현될 수 있다.The
IPC 드라이버(220)는 어플리케이션(230)에 IPC API를 제공하고, 디바이스 드라이버(210)의 상기 디바이스 API를 호출함으로써, 어플리케이션(230)과 디바이스 드라이버(210)를 연결하는 기능을 수행할 수 있다. 예를 들어, 어플리케이션(230)이 상기 IPC API로 제공된 IPC 드라이버(220)의 함수를 직접 또는 커널(240)을 통하여 호출하고, IPC 드라이버(220)가 상기 디바이스 API로 제공된 디바이스 드라이버(210)의 함수를 호출함으로써 어플리케이션(230)의 데이터 패킷이 도 1의 프로세서간 통신 장치(400)에 기입될 수 있다.The
IPC 드라이버(220)는 복수의 IPC 채널들을 포함하고, 어플리케이션(230) 마다 적어도 하나 이상의 IPC 채널을 제공할 수 있다. 이에 따라, 어플리케이션(230) 각각의 데이터 패킷이 어플리케이션(230)에 상응하는 IPC 채널을 통하여 도 1의 프로세서간 통신 장치(400)에 기입되고, 도 1의 프로세서간 통신 장치(400)로부터 독출된 데이터 패킷이 상응하는 IPC 채널을 통하여 어플리케이션(230)에 전송됨으로써, 어플리케이션(230) 별로 독립적인 데이터 전송을 지원하여 도 1의 시스템(100)의 데이터 전송 속도를 향상시킬 수 있다.The
어플리케이션(230)은 도 1의 제 1 프로세서(200)에서 실행되는 경우, 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션과 데이터 통신이 필요한 어플리케이션일 수 있다. 예를 들어, 어플리케이션(230)은 데이터를 복조하여 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션에 제공하는 모뎀 기능을 제공하는 프로 세스일 수 있다.The
도 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
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
도 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
도 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
도 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 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 채널들(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 스레드(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
도 6을 참조하면, IPC API(221a)는 데이터 전송 관련 함수들 및 기타 함수들 을 포함할 수 있다. 예를 들어, IPC API(221a)는 데이터 패킷 송신 함수, 데이터 패킷 수신 함수, 채널 오픈 함수, 채널 클로즈 함수, 설정 변경 함수 등을 포함할 수 있다.Referring to FIG. 6, the
상기 데이터 패킷 송신 함수는 어플리케이션(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 채널(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
도 7을 참조하면, IPC 채널(223a)은 데이터 패킷 송신 큐(224) 및 데이터 패킷 수신 큐(225)를 포함한다. 데이터 패킷 송신 큐(224)는 제 1 송신버퍼(2241), 제 2 송신버퍼(2242) 및 제 3 송신버퍼(2243)를 포함하고, 데이터 패킷 수신 큐(225)는 제 1 수신버퍼(2251), 제 2 수신버퍼(2252) 및 제 3 수신버퍼(2253)를 포함한다.Referring to FIG. 7, the
데이터 패킷 송신 큐(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
이와 같이, IPC 채널(223a)의 데이터 패킷 송신 큐(224) 및 데이터 패킷 수신 큐(225)에 데이터 패킷들이 저장되지 않고, 상기 데이터 패킷들의 포인터들 및/또는 길이들이 저장됨으로써, 상기 데이터 패킷들에 대한 복사 동작이 수행되지 않을 수 있다. 이에 따라, 도 1의 시스템(100)의 데이터 전송 속도가 향상될 수 있다.As such, data packets are not stored in the data
도 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
제 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
제 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
공유 저장 영역(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
일 실시예에서, 제 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
실시예에 따라, 프로세서간 통신 장치(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
세마포어 영역(421)은 공유 저장 영역(412)의 소유권에 관한 정보를 저장할 수 있다. 일 실시예에서, 세마포어 영역(421)의 특정 비트가 로직 “1”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 1 프로세서(200)가 가지고, 세마포어 영역(421)의 특정 비트가 로직 “0”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 2 프로세서(300)가 가질 수 있다. 다른 실시예에서, 세마포어 영역(421)의 특정 비트는 임의의 프로세서가 공유 저장 영역(412)을 점유하고 있는지 여부만을 나타 낼 수 있다. 실시예에 따라, 공유 저장 영역(412)이 복수의 뱅크들을 포함하는 경우, 세마포어 영역(421)은 복수의 비트들을 저장할 수 있다.
메일박스 영역(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
일 실시예에서, 도 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
실시예에 따라, 세마포어 영역(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
예를 들어, 도 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
도 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
복수의 채널들(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 (
일 실시예에서, 공유 저장 영역(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
공유 저장 영역(412)이 복수의 채널들(CH1, CH2, CHN)을 포함하고, 각각의 프로세서에서 실행되는 IPC 드라이버가 복수의 IPC 채널들을 포함함으로써, 어플리 케이션 또는 어플리케이션의 서비스에 따라 상응하는 IPC 채널 및 공유 저장 영역(412)의 상응하는 채널을 통하여 데이터 패킷을 효율적으로 전송하는 어플리케이션 또는 어플리케이션의 서비스 별 병렬 통신이 가능하다. 또한, 어플리케이션 또는 어플리케이션의 서비스 별로 하나 이상의 IPC 채널 및 공유 저장 영역(412)의 하나 이상의 채널을 지정함으로써 데이터 패킷의 헤더를 추출하고, 추출된 헤더를 분석하는 등의 처리 없이 데이터 패킷을 전송할 수 있어 시스템의 데이터 전송 속도를 향상시킬 수 있다.The shared
도 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
실시예에 따라, 제 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
도 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
도 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
커맨드 저장 영역(441)은 프로세서들 사이에서 전송되는 메시지의 종류를 나타내는 커맨드가 저장되는 영역이다. 메시지의 종류에 따라, 상기 메시지는 상기 커맨드만을 포함할 수 있고, 상기 커맨드와 추가적인 정보를 포함할 수 있다.The
도 12 및 도 13을 참조하면, 커맨드 저장 영역(441)에 저장되는 커맨드는 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개 커맨드, 전송 완료 커맨드, 채널 상태 커맨드, 전송 완료 및 소유권 요청 커맨드, 요청 취소 커맨드, 에러 커맨드 중 어느 하나의 커맨드일 수 있다.12 and 13, the command stored in the
예를 들어, 상기 소유권 요청 커맨드는 어느 프로세서가 다른 프로세서에 공유 저장 영역에 대한 소유권을 요청하는 커맨드이고, 상기 소유권 해제 커맨드는 상기 소유권 요청 커맨드에 응답하여 상기 소유권을 해제하였음을 알리는 커맨드이며, 전송 보류 커맨드는 데이터 패킷들을 수신하는 프로세서의 데이터 패킷 큐, 즉 도 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
프로세서들간에 전송되는 메시지는 메시지의 종류, 즉 커맨드에 따라 추가적인 정보를 더 포함할 수 있다. 예를 들어, 상기 전송 완료 커맨드를 포함하는 메시지의 경우, 상기 메시지는 상기 전송 완료 커맨드와 함께 데이터 패킷들이 기입된 채널의 인덱스 및/또는 데이터 패킷들의 개수를 포함할 수 있다.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
패킷 개수 저장 영역(443)은 채널에 기입된 복수의 데이터 패킷들의 개수가 저장될 수 있다. 예를 들어, 상기 제 1 프로세서가 상기 제 2 프로세서로 복수의 데이터 패킷들을 전송하는 경우, 상기 제 1 프로세서는 상기 공유 저장 영역의 특정 채널에 상기 복수의 데이터 패킷들을 기입하고, 커맨드 저장 영역(441)에 상기 전송 완료 커맨드를 기입하며, 채널 인덱스 저장 영역(442)에 상기 특정 채널에 대한 인덱스를 기입하고, 패킷 개수 저장 영역(443)에 상기 복수의 데이터 패킷들의 개수를 기입할 수 있다. 상기 제 2 프로세서는 상기 복수의 데이터 패킷들 각각의 헤더를 추출하여 연관된 IPC 채널, 연관된 어플리케이션, 패킷 개수 등을 분석하는 처리를 수행하지 않을 수 있다. 이에 따라, 프로세서간 통신을 위한 처리가 간단하게 구현될 수 있고, 시스템의 데이터 전송 속도가 향상될 수 있다.The number-of-
도 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
도 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
제 2 프로세서(300)가 공유 저장 영역(412)에 대한 소유권을 가지고 있는 경우(단계 S213: NO), 제 1 프로세서(200)는 제 1 메일박스(422)에 소유권 요청 커맨드를 기입한다(단계 S215). 일 실시예에서, 제 1 프로세서(200)에서 실행되는 IPC 드라이버가 디바이스 API의 메시지 기입 함수를 상기 소유권 요청 커맨드를 나타내는 파라미터와 함께 호출함으로써 제 1 메일박스(422)에 상기 소유권 요청 커맨드를 기입할 수 있다.If the
제 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
제 1 프로세서(200)로부터 소유권을 넘겨주기를 요청 받은 제 2 프로세서(300)는 상기 소유권 요청 커맨드에 대한 응답으로서 제 2 메일박스(423)에 소유권 해제 커맨드를 기입한다(단계 S223). 일 실시예에서, 제 2 프로세서(300)에서 실행되는 IPC 드라이버가 디바이스 API의 메시지 기입 함수를 상기 소유권 해제 커맨드를 나타내는 파라미터와 함께 호출함으로써 제 2 메일박스(423)에 상기 소유권 해제 커맨드를 기입할 수 있다.The
일 실시예에서, 제 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
제 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
도 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
제 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
제 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
상기 채널의 인덱스 및 상기 데이터 패킷들의 개수에 기초하여 제 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
이와 같이, 제 2 프로세서(300)는 상기 데이터 패킷들에 대한 정보를 제 1 메일박스(422)를 통하여 전송되는 메시지를 통하여 제공받음으로써, 상기 데이터 패킷들에 대한 별도의 처리 없이 지정된 어플리케이션에 상기 데이터 패킷들을 제공할 수 있다. 또한, 복수의 IPC 채널들 및 공유 저장 영역의 복수의 채널들을 통하여 프로세서간 데이터 통신을 수행함으로써, 어플리케이션 또는 어플리케이션의 서비스 별로 하나 이상의 IPC 채널 및 공유 저장 영역의 하나 이상의 채널을 전용할 수 있어, 데이터 전송 속도가 더욱 향상될 수 있다.In this manner, the
도 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
프로세서(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 드라이버(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
상기 다른 프로세서에서 프로세서(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
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
이하, 도 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
도 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
도 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
데이터 패킷 수신 큐(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
도 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
채널(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
이와 같이, 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
도 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
싱글 모드에서, 도 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
싱글 모드에서, 제 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
이와 같이, 싱글 모드에서는, 프로세서들 사이에서 하나의 데이터 패킷이 전송될 때마다, 소유권의 교환을 위한 통신을 필요로 한다. 본 발명의 일 실시예에 따른 시스템에서는 이러한 싱글 모드의 데이터 패킷 전송 외에 버스트 모드의 데이터 패킷 전송을 지원한다.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
버스트 모드에서, 도 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
이와 같이, 버스트 모드에서는, 소유권 교환을 위한 통신을 한번 이하로 수행할 수 있고, 복수의 데이터 패킷들을 한번에 하나의 프로세서에서 다른 프로세서로 전송할 수 있다. 이에 따라, 이와 같은 버스트 전송을 통하여 소유권 교환의 오버헤드 없이 대용량의 데이터를 전송할 수 있으며, 시스템의 데이터 전송 속도를 향상시킬 수 있다.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
도 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
제 1 프로세서(910) 및 제 2 프로세서(920)는 프로세서간 통신 장치(930)에 각각 연결된다. 도 21에는 프로세서간 통신 장치(930)에 각각 연결된 두개의 프로세서들(910, 920)을 포함하는 시스템(900)이 도시되어 있으나, 실시예에 따라 프로세서간 통신 장치(930)에 세 개 이상의 프로세서들이 연결될 수 있다.The
일 실시예에서, 제 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
일 실시예에서, 제 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
제 2 프로세서(920)는 플래시 메모리(950)에 연결될 수 있다. 플래시 메모리(950)는 제 2 프로세서(920)의 부트 코드, 또는 제 1 프로세서(910) 및 제 2 프 로세서(920)의 부트 코드를 저장할 수 있다. 제 2 프로세서(920)의 어플리케이션 코드 및/또는 데이터는 프로세서간 통신 장치(930)의 상기 제 2 전용 저장 영역에 저장될 수 있다. 이에 따라, 시스템(900)은 제 2 프로세서(920)의 어플리케이션 데이터 저장을 위한 별도의 DRAM을 포함하지 않음으로써, 시스템(900)의 사이즈가 더욱 작아질 수 있다.The
또한, 제 2 프로세서(920)는 버스(990)를 통하여 액정 표시 장치(960), 스피커(970) 및 입력 장치(980)에 연결될 수 있다. 제 2 프로세서(920)는 제 1 프로세서(910) 및 프로세서간 통신 장치(930)를 통하여 제공받은 통신 데이터 및/또는 입력 장치(980)로부터 제공받은 입력 데이터에 기초하여 액정 표시 장치(930) 및/또는 스피커(970)에 영상 데이터 및/또는 음성 데이터를 제공할 수 있다.The
이와 같이, 본 발명의 일 실시예에 따른 시스템(900)은 전용 저장 영역 및 공유 저장 영역을 가지는 프로세서간 통신 장치(930)를 포함하여 전체 시스템의 사이즈를 줄일 수 있고, 전력 소모를 줄일 수 있다. 또한, 프로세서간 통신 장치(930)는 공유 저장 영역을 통하여 데이터를 전송하고, 메일박스를 통하여 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 프로세서간 통신 장치(930)는 버스트 전송을 지원하여 데이터 전송 속도를 더욱 향상시킬 수 있다.As described above, the
상술한 바와 같이, 본 발명의 실시예들에 따른 프로세서, 시스템 및 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)
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)
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)
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 |
-
2008
- 2008-08-04 KR KR1020080076129A patent/KR101517835B1/en not_active IP Right Cessation
Patent Citations (1)
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 |