KR20090128605A - 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 - Google Patents

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 Download PDF

Info

Publication number
KR20090128605A
KR20090128605A KR1020080054432A KR20080054432A KR20090128605A KR 20090128605 A KR20090128605 A KR 20090128605A KR 1020080054432 A KR1020080054432 A KR 1020080054432A KR 20080054432 A KR20080054432 A KR 20080054432A KR 20090128605 A KR20090128605 A KR 20090128605A
Authority
KR
South Korea
Prior art keywords
processor
data packets
command
storage area
data
Prior art date
Application number
KR1020080054432A
Other languages
Korean (ko)
Inventor
박영은
조철민
이상현
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020080054432A priority Critical patent/KR20090128605A/en
Priority to US12/336,039 priority patent/US8230180B2/en
Publication of KR20090128605A publication Critical patent/KR20090128605A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Abstract

PURPOSE: An inter-processor communication system capable of performing burst transfer, a system including the same, and a device driver for executing the same are provided to reduce the number of memories needed for the system by offering an exclusive storage region to each processor. CONSTITUTION: A first port(431) is connected to a first processor. A second port(432) is connected to a second processor. A share storage region(412) is selectively accessed by the first or second processor through the first or second port. The share storage region stores a plurality of data packets transferred between the first processor and the second processor. Mailbox regions(422,423) store a command and data transfer information for the data packets, which are transferred between the first processor and the second processor.

Description

버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간 통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를 구동하기 위한 디바이스 드라이버{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}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}

본 발명은 프로세서간 통신(inter-processor communication; IPC) 기술에 관한 것으로, 보다 상세하게는 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간 통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를 구동하기 위한 디바이스 드라이버에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to inter-processor communication (IPC) technology, and more particularly, to a system including an interprocessor communication device capable of burst transmission, an interprocessor communication device, and a device for driving an interprocessor communication device. It's about the driver.

프로세서간 통신(inter-processor communication; IPC)을 위해서는 프로세서들을 연결하여 데이터를 전송하기 위한 수단이 필요한데, 이러한 기능을 수행하는 것이 인터페이스(interface)이다. 통상적으로, IPC를 위한 인터페이스로 범용 비동기 송수신기(universal asynchronous receiver transmitter; UART), 직렬 주변장치 인터페이스(serial peripheral interface; SPI), 범용 직렬 버스(universal serial bus; USB) 등의 직렬 인터페이스가 사용된다.Inter-processor communication (IPC) requires a means for connecting data by connecting processors, and performing such a function is an interface. Typically, a serial interface such as a universal asynchronous receiver transmitter (UART), a serial peripheral interface (SPI), a universal serial bus (USB), or the like is used as an interface for the 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의 데이터 전송 속도를 가진다.Since the conventional serial interface converts parallel data into serial data, only one bit of data between processors is transmitted in one clock. Accordingly, the serial interface has a limitation of the data transfer rate. For example, an IPC using SPI has a data transfer rate of about 16 Mbps, an IPC using UART has a data transfer rate of about 1.5 Mbps, and a data transfer rate of about 5 Mbps even with an IPC using a high-speed UART. Have In addition, IPC using full-speed USB has a data transfer rate of up to 12 Mbps, and actually a data transfer rate of about 6 Mbps because of the high packet overhead required for the USB protocol.

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

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 execution code. Accordingly, the size of the system utilizing the DPRAM is increased, and the data processing speed is deteriorated due to the memory access latency. In addition, due to the limitation of DPRAM capacity, there is a problem in that the data transfer rate is lowered when transferring large amounts of data between processors.

상기와 같은 문제점을 해결하기 위하여, 본 발명의 일 목적은 버스트 전송을 통하여 데이터 전송 속도를 향상시킬 수 있는 프로세서간 통신 장치를 제공하는 것이다.In order to solve the above problems, an object of the present invention is to provide an inter-processor communication apparatus that can improve the data transmission speed through burst transmission.

본 발명의 다른 목적은 상기 프로세서간 통신 장치를 포함하는 시스템을 제공하는 것이다.Another object of the present invention is to provide a system including the interprocessor communication apparatus.

본 발명의 또 다른 목적은 상기 프로세서간 통신 장치를 구동하는 디바이스 드라이버를 제공하는 것이다.It is still another object of the present invention to provide a device driver for driving the interprocessor communication apparatus.

상기한 본 발명의 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 프로세서간 통신 장치는 제 1 포트, 제 2 포트, 공유 저장 영역 및 메일박스 영역을 포함한다.In order to achieve the above object of the present invention, an interprocessor communication apparatus according to an embodiment of the present invention includes a first port, a second port, a shared storage area, and a mailbox area.

상기 제 1 포트는 제 1 프로세서에 연결되고, 상기 제 2 포트는 제 2 프로세서에 연결된다. 상기 공유 저장 영역은 상기 제 1 포트 또는 상기 제 2 포트를 통하여 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 복수의 데이터 패킷들을 저장한다. 상기 메일박스 영역은 상기 제 1 포트 및 상기 제 2 포트에 연결되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장한다.The first port is connected to a first processor and the second port is connected to a second processor. The shared storage area is selectively accessed by the first processor or the second processor through the first port or the second port, and stores a plurality of data packets transmitted between the first processor and the second processor. Save it. The mailbox area is connected to the first port and the second port, and stores a command transmitted between the first processor and the second processor and data transmission information for the plurality of data packets.

일 실시예에서, 상기 공유 저장 영역은 복수의 채널들을 포함하고, 상기 복수의 데이터 패킷들은 상기 복수의 채널들 중 어느 하나의 채널에 저장될 수 있다. 일 실시예에서, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 버퍼들을 포함하고, 상기 복수의 버퍼들 각각은 상기 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장할 수 있다. 다른 실시예에서, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 제 1 버퍼들 및 복수의 제 2 버퍼들을 포함하고, 상기 복수의 제 1 버퍼들은 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장하고, 상기 복수의 제 2 버퍼들은 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장할 수 있다.In one embodiment, the shared storage area may include a plurality of channels, and the plurality of data packets may be stored in any one of the plurality of channels. In one embodiment, the one channel in which the plurality of data packets are stored may include a plurality of buffers, and each of the plurality of buffers may store one of the plurality of data packets. In another embodiment, the one channel in which the plurality of data packets are stored includes a plurality of first buffers and a plurality of second buffers, wherein the plurality of first buffers are configured from the first processor to the second processor. A data packet of any one of a first plurality of data packets transmitted to the second plurality of buffers, wherein the plurality of second buffers of the second plurality of data packets transmitted from the second processor to the first processor Data packets can be stored.

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

일 실시예에서, 상기 메일박스 영역은, 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 커맨드 및 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 복수의 데이터 패킷들에 대한 제 1 데이터 전송 정보를 저장하는 제 1 메일박스, 및 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 커맨드 및 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 복 수의 데이터 패킷들에 대한 제 2 데이터 전송 정보를 저장하는 제 2 메일박스를 포함할 수 있다.In one embodiment, the mailbox area is a first command sent from the first processor to the second processor and a first for first plurality of data packets sent from the first processor to the second processor. A first mailbox for storing data transmission information, a second command transmitted from the second processor to the first processor, and a second plurality of data packets transmitted from the second processor to the first processor; It may include a second mailbox for storing the second data transmission information.

일 실시예에서, 상기 커맨드는, 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개커맨드, 전송 완료 커맨드, 또는 전송 완료 및 소유권 요청 커맨드 중 어느 하나일 수 있다. 상기 데이터 전송 정보는, 상기 복수의 데이터 패킷들이 저장된 채널의 인덱스, 및 상기 복수의 데이터 패킷들의 개수를 포함할 수 있다.In one embodiment, the command may be any one of a ownership request command, a release ownership command, a transfer pending command, a transfer resume command, a transfer complete command, or a transfer complete and ownership request command. The data transmission information may include an index of a channel in which the plurality of data packets are stored, and the number of the plurality of data packets.

일 실시예에서, 상기 프로세서간 통신 장치는 상기 공유 저장 영역의 소유권에 대한 정보를 저장하는 세마포어 영역을 더 포함할 수 있다. 또한, 상기 프로세서간 통신 장치는 상기 제 1 포트를 통하여 상기 제 1 프로세서에 의해 접근되는 제 1 전용 저장 영역, 및 상기 제 2 포트를 통하여 상기 제 2 프로세서에 의해 접근되는 제 2 전용 저장 영역을 더 포함할 수 있다.In an embodiment, the interprocessor communication device may further include a semaphore area that stores information about ownership of the shared storage area. The interprocessor communication device further includes a first dedicated storage area accessed by the first processor through the first port, and a second dedicated storage area accessed by the second processor through the second port. It may include.

일 실시예에서, 상기 공유 저장 영역은 행과 열의 매트릭스 형태로 배치되는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 하나의 억세스 트랜지스터 및 스토리지 커패시터로 이루어진 동적 랜덤 억세스 메모리(DRAM) 셀일 수 있다.In one embodiment, the shared storage region includes a plurality of memory cells arranged in a matrix of rows and columns, each of the plurality of memory cells being a dynamic random access memory (DRAM) cell consisting of one access transistor and a storage capacitor. Can be.

상기한 본 발명의 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 시스템은 제 1 프로세서, 제 2 프로세서 및 프로세서간 통신 장치를 포함한다.In order to achieve the above object of the present invention, a system according to an embodiment of the present invention includes a first processor, a second processor and an interprocessor communication device.

상기 제 1 프로세서는 제 1 태스크를 수행하기 위한 제 1 어플리케이션을 실행한다. 상기 제 2 프로세서는 제 2 태스크를 수행하기 위한 제 2 어플리케이션을 실행한다. 상기 프로세서간 통신 장치는 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 복수의 데이터 패킷들을 저장하고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장한다.The first processor executes a first application to perform a first task. The second processor executes a second application for performing a second task. The interprocessor communication device stores a plurality of data packets that are selectively accessed by the first processor or the second processor and are transmitted between the first processor and the second processor, and wherein the first processor and the first processor are stored. A command transmitted between two processors and data transmission information for the plurality of data packets are stored.

일 실시예에서, 상기 제 1 프로세서 및 상기 제 2 프로세서 각각은, 상기 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 채널 별로 기입하고, 상기 프로세서간 통신 장치로부터 상기 복수의 데이터 패킷들을 채널 별로 독출하며, 상기 프로세서간 통신 장치에 상기 커맨드 및 상기 데이터 전송 정보를 기입하고, 상기 프로세서간 통신 장치로부터 상기 커맨드 및 상기 데이터 전송 정보를 독출하는 디바이스 드라이버를 더 실행할 수 있다.In one embodiment, each of the first processor and the second processor writes the plurality of data packets for each channel to the interprocessor communication device, and reads the plurality of data packets for each channel from the interprocessor communication device. The device driver may be further configured to write the command and the data transmission information into the interprocessor communication device and to read the command and the data transmission information from the interprocessor communication device.

일 실시예에서, 상기 디바이스 드라이버는, 상기 제 1 어플리케이션 또는 상기 제 2 어플리케이션에 상기 복수의 데이터 패킷들의 기입 처리, 상기 복수의 데이터 패킷들의 독출 처리, 상기 커맨드 및 상기 데이터 전송 정보의 기입 처리, 및 상기 커맨드 및 상기 데이터 전송 정보의 독출 처리를 위한 응용 프로그램 인터페이스(application programming interface; API)를 제공할 수 있다. 상기 API는, 상기 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 데이터 패킷 기입 함수, 상기 프로세서간 통신 장치로부터 상기 복수의 데이터 패킷들을 독출하는 데이터 패킷 독출 함수, 상기 프로세서간 통신 장치에 상기 커맨드 및 상기 데이터 전송 정보를 기입하는 메시지 기입 함수, 및 상기 프로세서간 통신 장치로부터 상 기 커맨드 및 상기 데이터 전송 정보를 독출하는 메시지 독출 함수를 포함할 수 있다.In one embodiment, the device driver may be configured to write the plurality of data packets to the first application or the second application, to read the plurality of data packets, to write the command and the data transmission information, and An application programming interface (API) for reading the command and the data transmission information may be provided. The API may include: a data packet write function for writing the plurality of data packets to the interprocessor communication device; a data packet read function for reading the plurality of data packets from the interprocessor communication device; A message writing function for writing a command and the data transmission information, and a message reading function for reading the command and the data transmission information from the interprocessor communication device.

일 실시예에서, 상기 프로세서간 통신 장치는, 상기 제 1 프로세서에 연결되는 제 1 포트, 상기 제 2 프로세서에 연결되는 제 2 포트, 상기 제 1 포트 또는 상기 제 2 포트를 통하여 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 복수의 데이터 패킷들을 채널 별로 저장하는 공유 저장 영역, 및 상기 제 1 포트 및 상기 제 2 포트에 연결되고, 상기 커맨드 및 상기 데이터 전송 정보를 저장하는 메일박스 영역을 포함할 수 있다. 상기 공유 저장 영역은 복수의 채널들을 포함하고, 상기 복수의 데이터 패킷들은 상기 복수의 채널들 중 어느 하나의 채널에 저장될 수 있다.In an embodiment, the interprocessor communication device may include a first port connected to the first processor, a second port connected to the second processor, the first processor or the second port through the first port or the second port; A shared storage region selectively accessed by the second processor and storing the plurality of data packets for each channel, and connected to the first port and the second port and storing the command and the data transmission information It may include a box area. The shared storage area may include a plurality of channels, and the plurality of data packets may be stored in any one of the plurality of channels.

일 실시예에서, 상기 프로세서간 통신 장치는, 상기 제 1 포트를 통하여 상기 제 1 프로세서에 의해 억세스 되고, 상기 제 1 어플리케이션의 코드 및 데이터를 저장하는 제 1 전용 저장 영역, 및 상기 제 2 포트를 통하여 상기 제 2 프로세서에 의해 억세스 되고, 상기 제 2 어플리케이션의 코드 및 데이터를 저장하는 제 2 전용 저장 영역을 더 포함할 수 있다.In an embodiment, the interprocessor communication device may include a first dedicated storage area that is accessed by the first processor through the first port and stores code and data of the first application, and the second port. The second processor may further include a second dedicated storage area that is accessed by the second processor and stores code and data of the second application.

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

상기한 본 발명의 일 목적을 달성하기 위해, 본 발명의 일 실시예에 따른 컴퓨터로 판독 가능한 기록매체에 기록된 디바이스 드라이버는, 공유 저장 영역에 프로세서들 사이에서 전송되는 복수의 데이터 패킷들을 기입하는 데이터 패킷 기입 기능, 상기 공유 저장 영역으로부터 상기 복수의 데이터 패킷들을 독출하는 데이터 패킷 독출 기능, 메일박스 영역에 프로세서들 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 기입하는 메시지 기입 기능, 및 상기 메일박스 영역으로부터 상기 커맨드 및 상기 데이터 전송 정보를 독출하는 메시지 독출 기능을 제공한다.In order to achieve the above object of the present invention, a device driver recorded on a computer-readable recording medium according to an embodiment of the present invention writes a plurality of data packets transmitted between processors in a shared storage area. A data packet writing function, a data packet reading function for reading the plurality of data packets from the shared storage area, a command transmitted between processors in a mailbox area, and writing data transmission information for the plurality of data packets A message writing function and a message reading function for reading the command and the data transmission information from the mailbox area are provided.

상기와 같은 본 발명의 실시예들에 따른 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 프로세서들간의 버스트 전송을 지원하여 데이터 전송 속도를 향상시킬 수 있다.The interprocessor communication apparatus, system, and device driver according to the embodiments of the present invention as described above may improve the data transmission speed by supporting burst transmission between processors.

또한 본 발명의 실시예들에 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 각 프로세서에 전용 저장 영역을 제공함으로써 시스템에 필요한 메모리들의 수를 줄이고, 시스템 사이즈를 줄일 수 있다.In addition, in embodiments of the present invention, the interprocessor communication apparatus, system, and device driver may provide a dedicated storage area for each processor, thereby reducing the number of memories required by the system and reducing the system size.

본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.With respect to the embodiments of the present invention disclosed in the text, specific structural to functional descriptions are merely illustrated for the purpose of describing embodiments of the present invention, embodiments of the present invention may be implemented in various forms and It should not be construed as limited to the embodiments described in.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.As the inventive concept allows for various changes and numerous modifications, particular embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to a specific disclosed form, it should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.Terms such as first and second 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 component. For example, without departing from the scope of the present invention, the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.

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

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "comprise" or "having" are intended to indicate that there is a feature, number, step, action, component, part, or combination thereof that is described, and that one or more other features or numbers are present. It should be understood that it does not exclude in advance the possibility of the presence or addition of steps, actions, components, parts or combinations thereof.

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

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

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, with reference to the accompanying drawings, it will be described in detail a preferred embodiment of the present invention. The same reference numerals are used for the same elements in the drawings, and duplicate descriptions of the same 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, the system 100 includes a first processor 200, a second processor 300, and an interprocessor communication device 400. Although FIG. 1 illustrates a system 100 including two processors 200 and 300 respectively connected to an interprocessor communication device 400, those of ordinary skill in the art will appreciate interprocessor communication. It will be appreciated that three or more processors may be connected to the device 400.

제 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 포트 사이에 연결될 수 있다. 실시예에 따라, 제 1 프로세서(200)는 모뎀 프로세서일 수 있고, 제 2 프로세서(300)는 어플리케이션 프로세서이거나, 멀티미디어 프로세서일 수 있다. 실시예에 따라, 제 1 프로세서(200) 및 제 2 프로세서(300)는 각각 별도의 칩으로 구현될 수 있고, 제 1 프로세서(200) 및 제 2 프로세서(300)는 하나의 칩으로 구현될 수 있다.The first processor 200 and the second processor 300 are respectively connected to the interprocessor communication device 400. The first processor 200 can access the interprocessor communication device 400 through the first port of the interprocessor communication device 400, and the second processor 300 is the second of the interprocessor communication device 400. The interprocessor communication device 400 may be accessed through the port. In one embodiment, the first processor 200 and the second processor 200 may be connected 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 through 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. 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, respectively, and the first processor 200 and the second processor 300 may be implemented as one 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 interprocessor communication device 400 may transmit a shared storage area in which data packets transmitted between the first processor 200 and the second processor 300 are stored and between the first processor 200 and the second processor 300. It contains a mailbox area for storing messages. 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 mailbox area stores a first mailbox for storing a message transmitted from the first processor 200 to the second processor 300 and a message transmitted from the second processor 300 to the first processor 200. It may include a second mailbox for. When the first processor 200 writes a message in the first mailbox, the second processor 300 may receive the first interrupt signal INT1 to know that the message is written in the first mailbox. In addition, when the second processor 300 writes a message in the second mailbox, the first processor 200 may receive the second interrupt signal INT2 to know 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 is transmitted from the first processor 200 to the second processor 300, the first processor 200 acquires ownership of the shared storage area through message transmission using the mailbox area. can do. The first processor 200 may write 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 are written. In addition, the first processor 200 writes information, such as a location, number of packets, and the like, in which the written data packets are stored, together with the data transfer command, to the first mailbox, whereby the second processor 300 receives the data packets. The data packets may be read without further analysis. In addition, the first processor 200 transmits the data packets in parallel to the interprocessor communication device 400 through a plurality of signal lines connected to the first port, and the second processor 300 is connected to the second port. By receiving the data packets in parallel to the interprocessor 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 interprocessor communication device 400 writes a plurality of data packets to the shared storage area while the first processor 200 has ownership of the shared storage area, and the second processor 300 acquires the ownership. Support burst transfer that can read multiple data packets from the shared storage area while the device is in operation. Accordingly, the data transfer rate can be further improved by reducing the overhead of ownership exchange.

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

도 2를 참조하면, 프로세서간 통신 장치(400a)는 제 1 포트(431), 제 2 포트(432), 제 1 전용 저장 영역(411), 제 2 전용 저장 영역(413, 414), 공유 저장 영역(412), 세마포어 영역(421) 및 메일박스 영역(422, 423)을 포함한다.Referring to FIG. 2, the interprocessor 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, and shared storage. Region 412, semaphore region 421, and mailbox regions 422, 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 connected to the first processor 200 of FIG. 1, and the second port 432 is connected to the second processor 300 of FIG. 1. In addition, the first port 431 is connected to the first dedicated storage area 411 and the shared storage area 412 in the interprocessor communication device 400a, and the second port 432 is connected to the interprocessor communication device 400a. Are connected to the second dedicated storage area 413, 414 and the shared storage area 412. Accordingly, the first processor 200 of FIG. 1 may access the first dedicated storage area 411 and the shared storage area 412 through the first port 431 and the second processor 300 of FIG. 1. ) May access the second dedicated storage areas 413 and 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 the first port 431, and stores code and / or data of an application executed in the first processor 200 of FIG. 1. Can be stored. The second dedicated storage regions 413, 414 are connected to the second processor 300 of FIG. 1 through the second port 432 and / or code of a program executed in the second processor 300 of FIG. Data can be saved. Accordingly, the first dedicated storage area 411 for the first processor 200 of FIG. 1 replaces additional memory for storing code and / or data of a program executed by the first processor 200 of FIG. 1. In addition, second dedicated storage areas 413 and 414 for the second processor 300 of FIG. 1 may provide additional memory for storing code and / or data of a program executed by the second processor 300 of FIG. 1. By substituting, 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)는 상기 데이터 패킷들 각각의 헤더를 분석하는 복잡한 처리를 수행하지 않을 수 있다.The shared storage area 412 is selectively connected to the first processor 200 of FIG. 1 or the second processor 300 of FIG. 1 through 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 or the second processor 300 of FIG. 1 may 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. 1. According to an embodiment, the shared storage area 412 may be divided into a plurality of channels, and each of the plurality of channels may 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 each channel according to an application executed by the first processor 200 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 a header of each of the data packets.

일 실시예에서, 제 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 interprocessor 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 may have a row. The memory cells may include a plurality of memory cells arranged in an over-column matrix, and each of the plurality of memory cells may be a dynamic random access memory cell including 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 memory capacities of 16MB, 64MB, 128MB, 256MB, and 512MB.

실시예에 따라, 프로세서간 통신 장치(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 입출력 회로들을 포함할 수 있다.According to an embodiment, the interprocessor communication device 400a may access the shared storage area 412 in response to control signals received from the first processor 200 of FIG. 1 or the second processor 300 of FIG. 1. An access path forming unit may be selectively connected to the port 431 or the second port 432. In one embodiment, the access path forming unit is a path determining unit for logically combining the control signals to generate a path determination signal, applied through a first port 431 or a second port 432 in response to the path determination signal. Row and column address multiplexers which select one row and column address among the row and column addresses to be applied to the row decoder and the column decoder connected to the shared storage area 412, and the shared storage in response to the path determination signal. First and second global multiplexers selectively connecting the global input / output line pair in the region 412 to the first data input / output line pair or the second data input / output line pair, and the first and second global multiplexers and the first and second global multiplexers. The first and second input / output circuits may be disposed between the second ports 431 and 432, respectively.

세마포어 영역(421)은 공유 저장 영역(412)의 소유권에 관한 정보를 저장할 수 있다. 일 실시예에서, 세마포어 영역(421)의 특정 비트가 로직 “1”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 1 프로세서(200)가 가지고, 세마포어 영역(421)의 특정 비트가 로직 “0”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 2 프로세서(300)가 가질 수 있다. 실시예에 따라, 공유 저장 영역(412)이 복수의 뱅크들을 포함하는 경우, 세마포어 영역(421)은 복수의 비트들을 저장할 수 있다.The semaphore area 421 may store information about ownership of the shared storage area 412. In one embodiment, when the specific bit of semaphore area 421 is logic “1”, the first processor 200 of FIG. 1 has ownership of the shared storage area 412, and the specific bit of semaphore area 421 In the case of logic “0”, the second processor 300 of FIG. 1 may have ownership of the shared storage area 412. According to an embodiment, when 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. 1. For example, a message transmitted between the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 may include a message about ownership of the shared storage area 412, a message about data transmission, and a shared storage area. It may be any one of the messages regarding the channel state of 412. In addition, when the transmitted message is a message about data transmission, the transmitted message is a data transmission information indicating a command indicating that the transmitted message is a message about data transmission and information on currently transmitted data packets. It may include. In one embodiment, the mailbox areas 422 and 423 include a first mailbox 422 and a diagram for storing messages sent from the first processor 200 of FIG. 1 to the second processor 300 of FIG. It may include a second mailbox 423 for storing a message transmitted from the second processor 300 of the first to the first processor 200 of FIG. When the message is written to the first mailbox 422, the first interrupt signal INT1 is transmitted to the second processor 300 of FIG. 1, and when 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 receive the first interrupt signal INT1 and the second interrupt signal INT2, respectively, the first processor 200 and FIG. The second processor 300 of FIG. 1 reads messages stored in the first mailbox 422 and the second mailbox 423, respectively.

실시예에 따라, 세마포어 영역(421) 및 메일박스 영역(422, 423)은 프로세서간 통신 장치(400a)의 내부 레지스터로서 구현될 수 있다. 일 실시예에서, 세마포어 영역(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 an embodiment, the semaphore region 421 and the mailbox regions 422, 423 may be implemented as internal registers of the interprocessor communication device 400a. In one embodiment, semaphore region 421 and mailbox regions 422 and 423 may each be implemented as separate registers. In another embodiment, the semaphore area 421 and the mailbox area 422, 423 may be implemented with one register. In one embodiment, the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1 are the semaphore area 421 and the mailbox area 422 in a manner similar to that of accessing the shared storage area 412. , 423). 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 area 422, 423. That is, when a specific address, for example, an address between 1FFF800h and 1FFFFFFh is applied, the semaphore area 421 and the mailbox areas 422 and 423 may be enabled instead of the row of the shared storage area 412. According to an embodiment, the interprocessor communication device 400a further includes a register access circuit for preventing access of the memory cells corresponding to the specific address and enabling the semaphore area 421 and the mailbox areas 422 and 423. It may include.

예를 들어, 도 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. Ownership of the shared storage area 412 can be obtained by sending a message. The first processor 200 of FIG. 1 writes data packets to a channel of the shared storage area 412 and writes the data transfer command and the data transfer information to the first mailbox 422, thereby providing the first processor of FIG. The processor 300 may read the data packets based on the data transmission command and the data transmission information without further analyzing the data packets. In addition, data transmission speed between processors may be improved through burst transmission that may minimize ownership exchange between the first processor 200 of FIG. 1 and the second processor 300 of FIG. 1.

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

도 3을 참조하면, 공유 저장 영역(412a)은 복수의 채널들(CH1, CH2, CHN)을 포함한다. 복수의 채널들(CH1, CH2, CHN) 각각은 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN) 및 제 2 버퍼들(RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN)을 포함한다. 복수의 채널들(CH1, CH2, CHN) 각각에 포함된 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN)의 수 및 제 2 버퍼들(RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN)의 수는 실시예에 따라 다양하게 변경될 수 있고, 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN) 및 제 2 버퍼들(RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN) 각각의 사이즈 또한 실시예에 따라 다양하게 변경될 수 있다. 복수의 채널들(CH1, CH2, CHN)의 수 및 사이즈 또한 실시예에 따라 다양하게 변경될 수 있다.Referring to FIG. 3, the shared storage area 412a includes a plurality of channels CH1, CH2, and CHN. Each of the plurality of channels CH1, CH2, and CHN includes first buffers TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN and second buffers RX_BUF1, RX_BUF2, RX_BUF2, and RX_BUFN. The number of first buffers TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN and the number of second buffers RX_BUF1, RX_BUF2, RX_BUF2, and RX_BUFN included in each of the plurality of channels CH1, CH2, and CHN are embodiments. The size of each of the first buffers TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN and the second buffers RX_BUF1, RX_BUF2, RX_BUF2, and RX_BUFN may also vary. The number and size of the plurality of channels CH1, CH2, and CHN may also vary in some embodiments.

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

일 실시예에서, 복수의 채널들(CH1, CH2, CHN) 각각은 도 1의 제 1 프로세서(200)에서 도 1의 제 2 프로세서(300)로 송신되는 데이터 패킷들을 저장하는 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN) 및 도 1의 제 2 프로세서(300)에서 도 1의 제 1 프로세서(200)로 송신되는 데이터 패킷들을 저장하는 제 2 버퍼들(RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN)을 포함할 수 있다. 즉, 복수의 데이터 패킷들이 저장되는 위치가 전송 방향에 따라 결정되어 있으므로, 프로세서간 통신을 위한 처리를 위한 알고리즘이 더욱 간단하게 구현될 수 있다. 실시예에 따라, 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN) 및 제 2 버퍼들(RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN)의 사이즈가 고정될 수 있고, 각 데이터 패킷의 최대 사이즈는 각 버퍼의 사이즈 보다 작거나 같을 수 있다. 각 버퍼의 사이즈가 고정됨으로써, 각 프로세서는 임의의 패킷이 저장된 버퍼의 어드레스를 용이하게 파악할 수 있다. 예를 들어, 패킷의 최대 사이즈는 2KB일 수 있고, 버퍼의 사이즈 또한 2KB일 수 있다. 실시예에 따라, 각 패킷은 전체 유효 패킷 또는 유효 데이터의 사이즈가 저장되는 고정된 크기의 헤더 및 유효 데이터가 저장되는 데이터 영역을 포함할 수 있다.In one embodiment, each of the plurality of channels CH1, CH2, CHN includes first buffers for storing data packets transmitted from the first processor 200 of FIG. 1 to the second processor 300 of FIG. TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN) and second buffers RX_BUF1, RX_BUF2, RX_BUF2, and RX_BUFN, which store data packets transmitted from the second processor 300 of FIG. 1 to the first processor 200 of FIG. It may include. That is, since the location where the plurality of data packets are stored is determined according to the transmission direction, an algorithm for processing for inter-processor communication can be more simply implemented. According to an embodiment, the sizes of the first buffers TX_BUF1, TX_BUF2, TX_BUF2, TX_BUFN and the second buffers RX_BUF1, RX_BUF2, RX_BUF2, RX_BUFN may be fixed, and the maximum size of each data packet may be It may be less than or equal to the size. By fixing the size of each buffer, each processor can easily grasp the address of the buffer in which any packet is stored. For example, the maximum size of a packet may be 2 KB, and the size of the buffer may also be 2 KB. According to an embodiment, each packet may include a header of a fixed size in which the entire valid packet or the size of the valid data is stored and a data area in which the valid data is stored.

도 4는 도 2의 프로세서간 통신 장치에 포함된 메일박스를 나타내는 블록도이다.4 is a block diagram illustrating a mailbox included in the interprocessor communication device of FIG. 2.

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

커맨드 저장 영역(441)은 메시지의 종류를 나타내는 커맨드가 저장되는 영역이다. 메시지의 종류에 따라, 상기 메시지는 상기 커맨드만을 포함할 수 있고, 상기 커맨드와 추가적인 정보를 포함할 수 있다. 예를 들어, 커맨드 저장 영역(441)에 저장되는 커맨드는 다음 표 1과 같은 커맨드들 중 어느 하나의 커맨드 일 수 있다.The command storage area 441 is an area in which a command indicating a type of message is stored. Depending on the type of message, the message may include only the command and may include the command and additional information. For example, the command stored in the command storage area 441 may be any one command among the commands shown in Table 1 below.

Figure 112008041484104-PAT00001
Figure 112008041484104-PAT00001

예를 들어, 표 1에 기재된 바와 같이, 커맨드 저장 영역(441)에는 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개 커맨드, 전송 완료 커맨드, 채널 상태 커맨드, 전송 완료 및 소유권 요청 커맨드, 요청 취소 커맨드, 에러 커맨드 등이 저장될 수 있다. 상기 소유권 요청 커맨드는 어느 프로세서가 다른 프로세서에 공유 저장 영역에 대한 소유권을 요청하는 커맨드이고, 상기 소유권 해제 커맨드는 상기 소유권 요청 커맨드에 응답하여 상기 소유권을 해제하였음을 알리는 커맨드이며, 전송 보류 커맨드는 데이터 패킷들을 수신하는 프로세서의 데이터 큐에 일정 수준 이상의 데이터 패킷들이 저장되어 데이터 패킷들을 송신하는 프로세서에 데이터 전송의 보류를 요청하는 커맨드이고, 전송 재개 커맨드는 상기 전송 보류 커맨드에 응답하여 중지된 데이터 전송을 재개할 것을 요청하는 커맨드이며, 전송 완료 커맨드는 프로세서에서 전송할 데이터 패킷들을 공유 저장 영역에 기입하는 것이 완료되었음을 나타내는 커맨드이고, 채널 상태 커맨드는 공유 저장 영역의 각 채널의 상태를 알리는 커맨드이며, 전송 완료 및 소유권 요청 커맨드는 데이터 패킷들의 기입의 완료와 함께 상기 기입된 데이터 패킷들의 독출 후 공유 저장 영역에 대한 소유권을 해제해 줄 것을 요청하는 커맨드이며, 요청 취소 커맨드는 전송된 커맨드를 취소하는 커맨드이고, 에러 커맨드는 프로세서간 통신 도중 에러가 발생하였음을 알리는 커맨드이다. 표 1에는 9개의 커맨드들이 기재되어 있으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상기 커맨드들 외에 다른 커맨드가 사용되거나, 상기 커맨드들 중 일부가 사용될 수 있음을 이해할 수 있을 것이다. 일 실시예에서, 커맨드 저장 영역(441)은 8bit의 용량을 가질 수 있다.For example, as shown in Table 1, the command storage area 441 includes an ownership request command, an ownership release command, a transfer pending command, a transfer resume command, a transfer complete command, a channel status command, a transfer complete and ownership request command, and a request. Cancel commands, error commands, and the like may be stored. The ownership request command is a command for requesting ownership of a shared storage area by another processor, the release command is a command indicating that the ownership is released in response to the ownership request command, and the transfer pending command is data. A data packet of a predetermined level or more is stored in a data queue of a processor receiving the packets, and the processor requesting the suspension of the data transmission to the processor transmitting the data packets, and the resume transmission command stops the data transmission stopped in response to the suspension transmission command. Command to request resumption, the transfer completion command is a command indicating that the processor has completed writing data packets to be transmitted to the shared storage area, and a channel status command indicates a status of each channel of the shared storage area. The transfer completion and ownership request commands are commands for requesting to release ownership of the shared storage area after reading the written data packets together with completion of writing the data packets, and the cancel request command cancels the transmitted command. Command, and an error command is a command for informing that an error has occurred during interprocessor communication. Although nine commands are described in Table 1, those skilled in the art will understand that other commands may be used in addition to the above commands, or some of the commands may be used. In one embodiment, the command storage area 441 may have a capacity of 8 bits.

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

채널 인덱스 저장 영역(442)은 공유 저장 영역에 포함된 채널의 인덱스가 저장될 수 있다. 예를 들어, 제 1 프로세서가 제 2 프로세서로 복수의 데이터 패킷들을 전송하는 경우, 상기 제 1 프로세서는 상기 공유 저장 영역의 특정 채널에 상기 복수의 데이터 패킷들을 기입하고, 상기 제 1 프로세서는 커맨드 저장 영역(441)에 상기 전송 완료 커맨드를 기입하며, 채널 인덱스 저장 영역(442)에 상기 복수의 데이터 패킷들이 기입된 상기 특정 채널에 대한 인덱스를 기입할 수 있다. 상기 제 2 프로세서는 상기 특정 채널에 대한 인덱스에 기초하여 상기 복수의 데이터 패킷들이 저장된 위치, 즉 어드레스들을 알 수 있다. 또한, 일 실시예에서, 상기 공유 저장 영역의 채널들이 상기 제 2 프로세서에서 실행되는 어플리케이션에 연관된 경우, 상기 제 2 프로세서에서 실행되는 프로세서간 통신 장치에 대한 디바이스 드라이버는 상기 복수의 데이터 패킷들을 독출한 후 연관된 어플리케이션을 지정하기 위한 별도의 분석을 하지 않을 수 있다. 일 실시예에서, 채널 인덱스 저장 영역(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 sends a plurality of data packets to a second processor, the first processor writes the plurality of data packets to a specific channel of the shared storage area, and the first processor stores a command. The transfer completion command may be written in an area 441, and an index for the specific channel in which the plurality of data packets are written may be written in a channel index storage area 442. The second processor may know a location, that is, addresses, in which the plurality of data packets are stored, based on an index for the specific channel. Further, in one embodiment, when the channels of the shared storage area are associated with an application running on the second processor, the device driver for the interprocessor communication device running on the second processor reads the plurality of data packets. After that, no separate analysis can be done to specify the associated application. In an embodiment, the index for one channel may be stored in the channel index storage area 442. In another embodiment, each bit of the channel index storage area 442 may be associated with a corresponding channel and 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 프로세서는 상기 복수의 데이터 패킷들 각각의 헤더를 추출하여 연관된 어플리케이션, 패킷 개수 등을 분석하는 처리를 수행하지 않을 수 있다. 이에 따라, 프로세서간 통신을 위한 처리가 간단하게 구현될 수 있다.The packet number storage area 443 may store the number 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 in a specific channel of the shared storage area, and the command storage area 441. ), The transmission completion command may be written, the index for the specific channel may be written in the channel index storage area 442, and the number of the plurality of data packets may be written in the packet number storage area 443. The second processor may not perform a process of extracting headers of each of the plurality of data packets to analyze an associated application, the number of packets, and the like. Accordingly, the process for interprocessor communication can be simply implemented.

도 5는 도 1의 시스템에서 도 2의 프로세서간 통신 장치에 포함된 공유 저장 영역에 대한 소유권을 획득하는 방법을 나타내는 순서도이다.5 is a flowchart illustrating a method of acquiring ownership of a shared storage area included in the interprocessor communication device of FIG. 2 in the system of FIG. 1.

도 1, 도 2 및 도 5를 참조하면, 제 1 프로세서(200)는 세마포어 영역(421)에 저장된 공유 저장 영역(412)의 소유권에 관한 정보를 독출함으로써, 공유 저장 영역(412)의 소유권을 가진 프로세서를 확인할 수 있다. 제 2 프로세서(300)가 공유 저장 영역(412)에 대한 소유권을 가지고 있는 경우, 제 1 프로세서(200)는 제 1 메일박스(422)에 소유권 요청 커맨드를 기입한다(단계 S511). 제 1 메일박스(422)에 상기 소유권 요청 커맨드가 기입되면, 프로세서간 통신 장치(400, 400a)는 제 1 메일박스(422)에 메시지가 기입되었음을 알리는 제 1 인터럽트 신호(INT1)를 생성한다. 제 2 프로세서(300)가 제 1 인터럽트 신호(INT1)를 수신하면(단계 S513), 제 2 프로세서(300)는 제 1 메일박스(422)로부터 상기 소유권 요청 커맨드를 독출한다(단계 S515).1, 2, and 5, the first processor 200 reads information about ownership of the shared storage area 412 stored in the semaphore area 421, thereby obtaining ownership of the shared storage area 412. You can see which processor you have. When the second processor 300 has ownership of the shared storage area 412, the first processor 200 writes a ownership request command to the first mailbox 422 (step S511). When the ownership request command is written to the first mailbox 422, the interprocessor communication device 400 or 400a generates a first interrupt signal INT1 indicating that the message has been written to the first mailbox 422. When the second processor 300 receives the first interrupt signal INT1 (step S513), the second processor 300 reads the ownership request command from the first mailbox 422 (step S515).

제 1 프로세서(200)로부터 소유권을 넘겨주기를 요청 받은 제 2 프로세서(300)는 상기 소유권 요청 커맨드에 대한 응답으로서 제 2 메일박스(423)에 소유권 해제 커맨드를 기입한다(단계 S517). 또한, 제 2 메일박스(423)는 세마포어 영역(421)을 억세스 하여 세마포어 영역(421)에 저장된 소유권에 관한 정보를 변경할 수 있다. 실시예에 따라, 제 2 프로세서(300)가 공유 저장 영역(412)을 계속해서 억세스 할 필요가 있는 경우, 제 2 프로세서(300)가 제 2 메일박스(423)에 소유권 해제 불가 커맨드를 기입하거나, 제 1 프로세서(200)가 일정 시간 대기 후 제 1 메일박스(422)에 요청 취소 커맨드를 기입하거나, 또는 별다른 메시지 전송 없이 제 1 프로세서(200)가 제 1 메일박스(422)에 소유권 요청 커맨드를 재기입할 수 있다. 제 2 메일박스(423)에 상기 소유권 해제 커맨드가 기입되면, 프로세서간 통신 장치(400, 400a)는 제 2 메일박스(423)에 메시지가 기입되었음을 알리는 제 2 인터럽트 신호(INT2)를 생성한다. 제 1 프로세서(200)가 제 2 인터럽트 신호(INT2)를 수신하면(단계 S519), 제 1 프로세서(200)는 제 2 메일박스(423)로부터 상기 소유권 해제 커맨드를 독출한다(단계 S521). 이에 따라, 제 1 프로세서(200)는 제 2 프로세서로(300)부터 공유 저장 영역(412)에 대한 소유권을 넘겨 받을 수 있다.The second processor 300, which is requested to transfer ownership from the first processor 200, writes an ownership release command to the second mailbox 423 in response to the ownership request command (step S517). In addition, the second mailbox 423 may access the semaphore area 421 and 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 non-release command to the second mailbox 423 or The first processor 200 writes a request cancel command to the first mailbox 422 after waiting a predetermined time, or the first processor 200 requests a ownership command to the first mailbox 422 without transmitting a message. Can be rewritten. When the ownership release command is written to the second mailbox 423, the interprocessor communication device 400 or 400a generates a second interrupt signal INT2 indicating that the message has been written to the second mailbox 423. When the first processor 200 receives the second interrupt signal INT2 (step S519), the first processor 200 reads the ownership release command from the second mailbox 423 (step S521). Accordingly, the first processor 200 may transfer ownership of the shared storage area 412 from the second processor 300.

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

도 1 내지 도 4 및 도 6을 참조하면, 제 1 프로세서(200)는 세마포어 영역(421)을 통하여 공유 저장 영역(412)의 소유권을 가진 프로세서를 확인할 수 있다. 제 2 프로세서(300)가 공유 저장 영역(412)의 소유권을 가지고 있는 경우, 제 1 프로세서(200)는 도 5에 도시된 방법을 통하여 상기 소유권을 획득한다(단계 S610). 제 1 프로세서(200)가 상기 소유권, 즉 공유 저장 영역(412)에 대한 접근 권한을 획득한 경우, 제 1 프로세서(200)는 공유 저장 영역(412)에 데이터 패킷들을 기입한다(단계 S620). 일 실시예에서, 제 1 프로세서(200)는 상기 데이터 패킷들을 하나의 채널의 버퍼들, 예를 들어 제 1 채널(CH1)의 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF3, TX_BUFN)에 기입한다. 제 1 버퍼들(TX_BUF1, TX_BUF2, TX_BUF3, TX_BUFN) 각각에는 하나의 데이터 패킷이 기입될 수 있다. 제 1 프로세서(200)가 상기 데이터 패킷들을 공유 저장 영역(412)에 기입한 후, 제 1 프로세서(200)는 제 1 메일박스(422, 422a)에 전송할 데이터가 있음을 알리는 메시지, 즉 데이터 전송 커맨드 및 데이터 전송 정보를 기입한다(단계 S630). 즉, 제 1 프로세서(200)는 커맨드 저장 영역(441)에 데이터 전송 커맨드를 기입하고, 채널 인덱스 저장 영역(442)에 상기 데이터 패킷들이 기입된 채널의 인덱스를 기입하며, 패킷 개수 저장 영역(443)에 상기 데이터 패킷들의 개수를 기입한다. 제 1 메일박스(422, 422a)에 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보가 기입되면, 프로세서간 통신 장치(400, 400a)는 제 1 인터럽트 신호(INT1)를 생성한다.1 through 4 and 6, the first processor 200 may identify a processor having ownership of the shared storage area 412 through the semaphore area 421. If the second processor 300 has ownership of the shared storage area 412, the first processor 200 acquires the ownership through the method shown in FIG. 5 (S610). When the first processor 200 acquires the ownership, that is, the access right to the shared storage area 412, the first processor 200 writes data packets to the shared storage area 412 (S620). In an embodiment, the first processor 200 writes the data packets to buffers of one channel, for example, first buffers TX_BUF1, TX_BUF2, TX_BUF3, TX_BUFN of the first channel CH1. One data packet may be written in each of the first buffers TX_BUF1, TX_BUF2, TX_BUF3, and TX_BUFN. After the first processor 200 writes the data packets to the shared storage area 412, the first processor 200 indicates that there is data to be transmitted to the first mailboxes 422 and 422a, that is, data transmission. The command and data transfer information are written (step S630). That is, the first processor 200 writes a data transfer command in the command storage area 441, writes an index of the channel in which the data packets are written in the channel index storage area 442, and stores the packet number storage area 443. ) The number of data packets. When the data transfer command and the data transfer information are written to the first mailboxes 422 and 422a, the interprocessor communication apparatus 400 or 400a generates a first interrupt signal INT1.

제 2 프로세서(300)가 프로세서간 통신 장치(400, 400a)로부터 제 1 인터럽트 신호(INT1)를 수신하면, 제 2 프로세서(300)는 제 1 메일박스(422, 422a)로부터 상기 데이터 전송 커맨드 및 상기 데이터 전송 정보를 독출한다(단계 S640). 즉, 제 2 프로세서(300)는 커맨드 저장 영역(441)으로부터 상기 데이터 전송 커맨드를 독출하고, 채널 인덱스 저장 영역(442)으로부터 상기 데이터 패킷들이 기입된 채널의 인덱스를 독출하며, 패킷 개수 저장 영역(443)으로부터 상기 데이터 패킷들의 개수를 독출한다. 상기 채널의 인덱스 및 상기 데이터 패킷들의 개수에 기초하여 제 2 프로세서(300)는 공유 저장 영역(412)으로부터 상기 데이터 패킷들을 독출한다(단계 S650). 이에 따라, 제 2 프로세서(300)는 상기 복수의 데이터 패킷들에 대한 정보를 제 1 메일박스(422, 422a)를 통하여 전송되는 메시지를 통하여 제공받음으로써, 상기 복수의 데이터 패킷들에 대한 별도의 처리 없이 지정된 어플리케이션에 상기 복수의 데이터 패킷들을 제공할 수 있다.When the second processor 300 receives the first interrupt signal INT1 from the interprocessor communication device 400 or 400a, the second processor 300 may transmit the data transfer command from the first mailboxes 422 and 422a. The data transmission information is read (step S640). 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, and stores the packet count storage area ( The number of data packets is read from 443. 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 S650). Accordingly, the second processor 300 receives the information on the plurality of data packets through a message transmitted through the first mailboxes 422 and 422a, so that the second processor 300 separates the plurality of data packets. The plurality of data packets may be provided to a designated application without processing.

도 7은 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들을 나타내는 블록도이다.7 is a block diagram illustrating modules executed in a processor included in the system of FIG. 1.

도 7을 참조하면, 제 1 프로세서(200a)는 디바이스 드라이버(210), IPC 드라이버(220) 및 어플리케이션(230)을 실행한다. 일 실시예에서, 디바이스 드라이버(210) 및 IPC 드라이버(220)은 커널 드라이버로서 커널(240)에 등록될 수 있다. 일실시예에서, 디바이스 드라이버(210) 및 IPC 드라이버(220)는 각각 별개의 커널 드라이버로 구현될 수 있다. 다른 실시예에서, 디바이스 드라이버(210) 및 IPC 드라이버(220)는 하나의 커널 드라이버로 구현될 수 있다.Referring to FIG. 7, the first processor 200a executes the device driver 210, the IPC driver 220, and the application 230. In one embodiment, device driver 210 and IPC driver 220 may be registered with kernel 240 as a kernel driver. In one embodiment, device driver 210 and 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 one kernel driver.

제 1 프로세서(200a)에서 실행되는 어플리케이션(230)은 도 1의 제 2 프로세서(200)에서 실행되는 어플리케이션과 데이터 통신이 필요한 어플리케이션일 수 있다. 예를 들어, 어플리케이션(230)은 데이터를 복조하여 도 1의 제 2 프로세서(200)에서 실행되는 어플리케이션에 제공하는 모뎀 기능을 제공하는 프로그램일 수 있다.The application 230 executed in the first processor 200a may be an application requiring data communication with an application executed in the second processor 200 of FIG. 1. For example, the application 230 may be a program that provides a modem function for demodulating data and providing the application to the application executed in the second processor 200 of FIG. 1.

IPC 드라이버(220)는 어플리케이션(230)과 디바이스 드라이버(210)를 연결하는 기능을 수행할 수 있다. 예를 들어, 어플리케이션(230)이 IPC 드라이버(220)의 함수를 직접 또는 커널(240)을 통하여 호출하고, IPC 드라이버(220)가 디바이스 드라이버(210)의 함수를 호출할 수 있다. 실시예에 따라, IPC 드라이버(220) 없이 제 1 프로세서(200a)가 어플리케이션(230) 및 디바이스 드라이버(210)만을 실행할 수 있으며, 어플리케이션(230)은 디바이스 드라이버(210)의 함수를 직접 호출하거나 커널(240)을 통하여 호출할 수 있다. 또한, IPC 드라이버(220)는 내부 스레드(thread)를 통하여 데이터 패킷 큐를 관리할 수 있다.The IPC driver 220 may perform a function of connecting the application 230 and the device driver 210. For example, the application 230 may call a function of the IPC driver 220 directly or through the kernel 240, and the IPC driver 220 may call a function of the device driver 210. According to an embodiment, the first processor 200a may execute only the application 230 and the device driver 210 without the IPC driver 220, and the application 230 may directly call a function of the device driver 210 or may execute a kernel. Call through 240. In addition, the IPC driver 220 may manage the data packet queue through an internal thread.

디바이스 드라이버(210)는 IPC 드라이버(220) 또는 어플리케이션(230)에 응용 프로그램 인터페이스(application programming interface; API)를 제공하고, 도 1의 프로세서간 통신 장치(400)를 제어한다. 실시예에 따라, 디바이스 드라이버(210)는 라이브러리(library)로 구현될 수 있다. 예를 들어, 디바이스 드라이버(210)는 IPC 드라이버(220) 또는 어플리케이션(230)에 다음 표 2와 같은 API를 제공할 수 있다.The device driver 210 provides an application programming interface (API) to the IPC driver 220 or the application 230, and controls the interprocessor communication device 400 of FIG. 1. According to an embodiment, the device driver 210 may be implemented as a library. For example, the device driver 210 may provide an API as shown in Table 2 below to the IPC driver 220 or the application 230.

Figure 112008041484104-PAT00002
Figure 112008041484104-PAT00002

표 2에 기재된 바와 같이, 디바이스 드라이버(210)는 IPC 드라이버(220) 또는 어플리케이션(230)에 메시지 전송 관련 함수들, 데이터 전송 관련 함수들 및 기타 함수들을 제공할 수 있다. 예를 들어, 디바이스 드라이버(210)는 메시지 기입 함수, 메시지 독출 함수, 데이터 패킷 기입 함수, 데이터 패킷 독출 함수, 초기화 함수, 소유권 확인 함수, 에러 확인 함수, 채널 어드레스 검색 함수 등을 가질 수 있다. 상기 메시지 기입 함수는 도 2의 제 1 메일박스(422)에 메시지를 기입하는 함수이고, 상기 메시지 독출 함수는 도 2의 제 2 메일박스(423)로부터 메시지를 독출하는 함수이며, 상기 데이터 패킷 기입 함수는 공유 저장 영역(412)에 하나 이상의 데이터 패킷을 기입하는 함수이고, 상기 데이터 패킷 독출 함수는 공유 저장 영역(412)으로부터 하나 이상의 데이터 패킷을 독출하는 함수이며, 상기 초기화 함수는 디바이스 드라이버(210)를 초기화하는 함수이고, 상기 소유권 확인 함수는 도 2의 세마포어 영역(421)에 억세스 하여 공유 저장 영역(412)의 소유권을 어느 프로세서가 가지고 있는지 확인하는 함수이고, 상기 에러 확인 함수는 마지막에 발생된 디바이스 드라이버(210)의 에러를 코드 또는 메시지로 반환시키는 함수이고, 상기 채널 어드레스 검색 함수는 파라미터로 제공되는 채널의 어드레스를 반환시키는 함수이다. IPC 드라이버(220) 또는 어플리케이션(230)는 디바이스 드라이버(210)의 위와 같은 API를 통하여 도 1의 프로세서간 통신 장치(400)에 접근할 수 있다.As described in Table 2, the device driver 210 may provide message transfer related functions, data transfer related functions, and other functions to the IPC driver 220 or the application 230. For example, the device driver 210 may have a message write function, a message read function, a data packet write function, a data packet read function, an initialization function, a ownership check function, an error check function, a channel address search function, and the like. The message writing function is a function of writing a message to the first mailbox 422 of FIG. 2, and the message reading function is a function of reading a message from the second mailbox 423 of FIG. 2, and the data packet. The write function is a function that writes one or more data packets to the shared storage area 412, and the data packet read function is a function that reads one or more data packets from the shared storage area 412, and the initialization function is a device driver. 210 is a function for initializing the ownership verification function, which accesses the semaphore area 421 of FIG. 2 and checks which processor has ownership of the shared storage area 412. Is a function of returning an error of the device driver 210 generated in a code or a message, the channel address search function is para Is a function that returns the address of the channel that provides teoro. The IPC driver 220 or the application 230 may access the interprocessor communication device 400 of FIG. 1 through the above API of the device driver 210.

이하, 도 2, 도 8 및 도 9를 참조하여, 디바이스 드라이버(210a, 310a)가 제공하는 API를 통하여 싱글 모드의 데이터 전송 및 버스트 모드의 데이터 전송을 설명한다.Hereinafter, single data transmission and burst data transmission will be described with reference to FIGS. 2, 8, and 9 through the API provided by the device drivers 210a and 310a.

도 8은 도 1의 시스템에서 싱글 모드의 데이터 전송 방법을 나타내는 흐름도이다.8 is a flowchart illustrating a single mode data transmission method in the system of FIG. 1.

도 2 및 도 8을 참조하면, 제 1 프로세서(200a)는 제 1 디바이스 드라이버(210a) 및 제 1 IPC 드라이버(220a)를 실행한다. 일 실시예에에서, 제 1 프로세서(200a)는 제 1 IPC 드라이버(220a)를 호출하는 도 7의 어플리케이션(230)을 더욱 실행할 수 있다. 다른 실시예에서, 제 1 IPC 드라이버(220a) 대신 도 7의 어플리케이션(230)이 실행될 수 있다. 또한, 제 2 프로세서(300a)는 제 2 디바이스 드라이버(310a) 및 제 2 IPC 드라이버(320a)를 실행한다. 일 실시예에에서, 제 2 프로세서(300a)는 제 2 IPC 드라이버(320a)를 호출하는 도 7의 어플리케이션(230)을 더욱 실행할 수 있다. 다른 실시예에서, 제 2 IPC 드라이버(320a) 대신 도 7의 어플리케이션(330)이 실행될 수 있다.2 and 8, the first processor 200a executes the first device driver 210a and the first IPC driver 220a. In one embodiment, the first processor 200a may further execute the application 230 of FIG. 7 that calls the first IPC driver 220a. In another embodiment, the application 230 of FIG. 7 may be executed instead of the first IPC driver 220a. In addition, the second processor 300a executes the second device driver 310a and the second IPC driver 320a. In one embodiment, the second processor 300a may further execute the application 230 of FIG. 7 calling the second IPC driver 320a. In another embodiment, the application 330 of FIG. 7 may be executed instead of the second IPC driver 320a.

싱글 모드에서 제 1 프로세서(200a)가 공유 저장 영역(412)에 대한 소유권을 획득하기 위하여, 제 1 IPC 드라이버(220a)는 소유권 요청 커맨드를 파라미터로 제공하여 제 1 디바이스 드라이버(210a)의 메시지 기입 함수를 호출한다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 소유권 요청 커맨드를 제 1 메일박스(422)에 기입한다. 프로세서간 통신 장치(400a)는 제 1 인터럽트 신호를 생성하고, 상기 제 1 인터럽트 신호를 제 2 프로세서(300a)에 송신한다. 일 실시예에서, 제 2 프로세서(300a)의 커널은 상기 제 1 인터럽트 신호를 수신하여 제 2 IPC 드라이버(320a)의 인터럽트 핸들러(interrupt handler)를 호출할 수 있다. 이에 따라, 제 2 IPC 드라이버(320a)는 제 1 메일박스(422)에 메시지가 기입된 것을 알 수 있고, 제 2 IPC 드라이버(320a)는 제 2 디바이스 드라이버(310a)의 메시지 독출 함수를 호출한다. 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 상기 소유권 요청 커맨드를 제 1 메일박스(422)로부터 독출한다. 제 2 디바이스 드라이버(310a)는 상기 소유권 요청 커맨드에 응답하여 소유권 해제 커맨드를 파라미터로 제공하여 제 2 디바이스 드라이버(310a)의 메시지 기입 함수를 호출한다. 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 상기 소유권 해제 커맨드를 제 2 메일박스(423)에 기입한다. 프로세서간 통신 장치(400a)는 제 2 인터럽트 신호를 생성하고, 상기 제 2 인터럽트 신호를 제 1 프로세서(200a)에 송신한다. 일 실시예에서, 제 1 프로세서(200a)의 커널은 상기 제 2 인터럽트 신호를 수신하여 제 1 IPC 드라이버(220a)의 인터럽트 핸들러(interrupt handler)를 호출할 수 있다. 이에 따라, 제 1 IPC 드라이버(220a)는 제 2 메일박스(423)에 메시지가 기입된 것을 알 수 있고, 제 1 IPC 드라이버(220a)는 제 1 디바이스 드라이버(210a)의 메시지 독출 함수를 호출한다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 소유권 해제 커맨드를 제 2 메일박스(423)로부터 독출한다. 제 1 디바이스 드라이버(210a)는 독출된 소유권 해제 커맨드를 제 1 IPC 드라이버(220a)에 제공함으로써 제 1 IPC 드라이버(220a)는 공유 저장 영역(412)에 대한 소유권이 획득되었음을 알 수 있다.In order for the first processor 200a to acquire ownership of the shared storage area 412 in the single mode, the first IPC driver 220a may provide an ownership request command as a parameter to write a message of the first device driver 210a. Call the function The first device driver 210a writes the ownership request command to the first mailbox 422 in response to the call. The interprocessor communication device 400a generates a first interrupt signal and transmits the first interrupt signal to the second processor 300a. In an embodiment, the kernel of the second processor 300a may call the interrupt handler of the second IPC driver 320a by receiving the first interrupt signal. Accordingly, the second IPC driver 320a may know that a message is written in the first mailbox 422, and the second IPC driver 320a calls a message read function of the second device driver 310a. . The second device driver 310a reads the ownership request command from the first mailbox 422 in response to the call. The second device driver 310a calls the message writing function of the second device driver 310a by providing the ownership release command as a parameter in response to the ownership request command. The second device driver 310a writes the ownership release command to the second mailbox 423 in response to the call. The interprocessor communication device 400a generates a second interrupt signal and transmits the second interrupt signal to the first processor 200a. In an embodiment, the kernel of the first processor 200a may call the interrupt handler of the first IPC driver 220a by receiving the second interrupt signal. Accordingly, the first IPC driver 220a may know that a message is written in the second mailbox 423, and the first IPC driver 220a calls the message read function of the first device driver 210a. . The first device driver 210a reads the ownership release command from the second mailbox 423 in response to the call. The first device driver 210a may provide a read ownership release command to the first IPC driver 220a so that the first IPC driver 220a may know that ownership of the shared storage area 412 is obtained.

제 1 프로세서(200a)에서 제 2 프로세서(300a)로 전송할 제 1 데이터 패킷 및 제 2 데이터 패킷이 있는 경우, 상기 소유권을 획득한 제 1 프로세서(200a)의 제 1 IPC 드라이버(220a)는 데이터 전송을 위하여 채널 식별자, 예를 들어 채널 인덱스 또는 채널 핸들과 함께 상기 제 1 데이터 패킷 또는 상기 제 1 데이터 패킷의 포인터를 파라미터로 제공하여 제 1 디바이스 드라이버(210a)의 데이터 패킷 기입 함수를 호출할 수 있다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 제 1 데이터 패킷을 상기 채널 식별자에 상응하는 공유 저장 영역(412)의 채널에 기입한다. 상기 제 1 데이터 패킷의 기입이 완료된 후, 제 1 IPC 드라이버(220a)는 전송 완료 커맨드, 채널 인덱스를 파라미터로 제공하여 제 1 디바이스 드라이버(210a)의 메시지 기입 함수를 호출한다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 전송 완료 커맨드 및 상기 채널 인덱스를 제 1 메일박스(422)에 기입한다. 제 2 IPC 드라이버(320a)는 제 2 디바이스 드라이버(310a)의 메시지 독출 함수를 호출하고, 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 상기 전송 완료 커맨드 및 상기 채널 인덱스를 제 1 메일박스(422)로부터 독출한다. 제 2 디바이스 드라이버(310a)는 상기 전송 완료 커맨드에 상기 채널 인덱스에 상응하는 채널에 저장된 상기 제 1 데이터 패킷을 독출하도록, 상기 채널 인덱스를 파라미터로 제공하여 제 2 디바이스 드라이버(310a)의 데이터 패킷 독출 함수를 호출한다. 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 공유 저장 영역(412)의 상기 채널에 저장된 상기 제 1 데이터 패킷을 독출한다. 이에 따라, 제 1 프로세서(200a)의 상기 제 1 데이터 패킷은 제 2 프로세서(300a)로 전송된다.When there is a first data packet and a second data packet to be transmitted from the first processor 200a to the second processor 300a, the first IPC driver 220a of the acquired first processor 200a transmits data. For example, a data packet write function of the first device driver 210a may be called by providing a pointer to the first data packet or the first data packet together with a channel identifier, for example, a channel index or a channel handle. . The first device driver 210a writes the first data packet to a channel in the shared storage area 412 corresponding to the channel identifier in response to the call. After the writing of the first data packet is completed, the first IPC driver 220a calls a message writing function of the first device driver 210a by providing a transmission completion command and a channel index as parameters. The first device driver 210a writes the transfer completion command and the channel index into the first mailbox 422 in response to the call. The second IPC driver 320a calls a message reading function of the second device driver 310a, and the second device driver 310a receives the transmission completion command and the channel index in response to the call. 422). The second device driver 310a reads the data packet of the second device driver 310a by providing the channel index as a parameter to read the first data packet stored in the channel corresponding to the channel index in the transfer completion command. Call the function The second device driver 310a reads the first data packet stored in the channel of the shared storage area 412 in response to the call. Accordingly, the first data packet of the first processor 200a is transmitted to the second processor 300a.

또한, 제 1 프로세서(200a)은 상술한 방법으로 공유 저장 영역(412)에 대한 소유권을 다시 획득하고, 상기 제 2 데이터 패킷을 전송한다. 이와 같이, 싱글 모드에서는, 하나의 프로세서에서 다른 프로세서로 하나 데이터 패킷을 전송할 때마다, 소유권의 교환을 위한 통신을 필요로 한다. 본 발명의 일 실시예에 따른 시스템에서는 이러한 싱글 모드의 데이터 전송 외에 버스트 모드의 데이터 전송을 지원한다.In addition, the first processor 200a regains ownership of the shared storage area 412 and transmits the second data packet in the manner described above. Thus, in single mode, each time one data packet is sent from one processor to another, communication for exchange of ownership is required. The system according to an embodiment of the present invention supports data transmission in burst mode in addition to data transmission in single mode.

도 9는 도 1의 시스템에서 버스트 모드의 데이터 전송 방법을 나타내는 흐름도이다.9 is a flowchart illustrating a data transmission method in burst mode in the system of FIG. 1.

도 2 및 도 9를 참조하면, 제 1 프로세서(200a)는 제 1 디바이스 드라이버(210a) 및 제 1 IPC 드라이버(220a)를 실행한다. 일 실시예에에서, 제 1 프로세서(200a)는 제 1 IPC 드라이버(220a)를 호출하는 도 7의 어플리케이션(230)을 더욱 실행할 수 있다. 다른 실시예에서, 제 1 IPC 드라이버(220a) 대신 도 7의 어플리케이션(230)이 실행될 수 있다. 또한, 제 2 프로세서(300a)는 제 2 디바이스 드라이버(310a) 및 제 2 IPC 드라이버(320a)를 실행한다. 일 실시예에에서, 제 2 프로세서(300a)는 제 2 IPC 드라이버(320a)를 호출하는 도 7의 어플리케이션(230)을 더욱 실행할 수 있다. 다른 실시예에서, 제 2 IPC 드라이버(320a) 대신 도 7의 어플리케이션(330)이 실행될 수 있다.2 and 9, the first processor 200a executes the first device driver 210a and the first IPC driver 220a. In one embodiment, the first processor 200a may further execute the application 230 of FIG. 7 that calls the first IPC driver 220a. In another embodiment, the application 230 of FIG. 7 may be executed instead of the first IPC driver 220a. In addition, the second processor 300a executes the second device driver 310a and the second IPC driver 320a. In one embodiment, the second processor 300a may further execute the application 230 of FIG. 7 calling the second IPC driver 320a. In another embodiment, the application 330 of FIG. 7 may be executed instead of the second IPC driver 320a.

제 1 프로세서(200a)에서 제 2 프로세서(300a)로 전송할 복수의 데이터 패킷들, 예를 들어 제 1 데이터 패킷 및 제 2 데이터 패킷이 있는 경우, 제 1 프로세서(200a)는 도 8의 싱글 모드에서의 소유권 획득과 유사한 방법으로 공유 저장 영역(412)에 대한 소유권을 획득한다. 상기 소유권을 획득한 제 1 프로세서(200a)의 제 1 IPC 드라이버(220a)는 데이터 전송을 위하여 채널 식별자, 예를 들어 채널 인덱스 또는 채널 핸들과 함께 상기 제 1 및 제 2 데이터 패킷들 또는 상기 제 1 및 제 2 데이터 패킷들의 포인터, 및 패킷 개수를 파라미터로 제공하여 제 1 디바이스 드라이버(210a)의 데이터 패킷 기입 함수를 호출할 수 있다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 제 1 및 제 2 데이터 패킷들을 상기 채널 식별자에 상응하는 공유 저장 영역(412)의 채널에 기입한다. 상기 제 1 및 제 2 데이터 패킷들의 기입이 완료된 후, 제 1 IPC 드라이버(220a)는 전송 완료 커맨드, 채널 인덱스, 패킷 개수를 파라미터로 제공하여 제 1 디바이스 드라이버(210a)의 메시지 기입 함수를 호출한다. 제 1 디바이스 드라이버(210a)는 상기 호출에 응답하여 상기 전송 완료 커맨드, 상기 채널 인덱스 및 상기 채널 개수를 제 1 메일박스(422)에 기입한다.When there are a plurality of data packets to be transmitted from the first processor 200a to the second processor 300a, for example, the first data packet and the second data packet, the first processor 200a is in the single mode of FIG. 8. Take ownership of the shared storage area 412 in a manner similar to taking ownership of. The first IPC driver 220a of the acquiring first processor 200a acquires the first and second data packets or the first together with a channel identifier, for example a channel index or channel handle, for data transmission. And a data packet write function of the first device driver 210a by calling the second data packets and the number of packets as parameters. The first device driver 210a writes the first and second data packets to the channel of the shared storage area 412 corresponding to the channel identifier in response to the call. After the writing of the first and second data packets is completed, the first IPC driver 220a calls the message writing function of the first device driver 210a by providing the transmission completion command, the channel index, and the number of packets as parameters. . The first device driver 210a writes the transfer completion command, the channel index, and the number of channels in the first mailbox 422 in response to the call.

제 2 IPC 드라이버(320a)는 제 2 디바이스 드라이버(310a)의 메시지 독출 함수를 호출하고, 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 상기 전송 완료 커맨드, 상기 채널 인덱스 및 상기 패킷 개수를 제 1 메일박스(422)로부터 독출한다. 제 2 디바이스 드라이버(310a)는 상기 전송 완료 커맨드에 상기 채널 인덱스에 상응하는 채널에 저장된 상기 제 1 및 제 2 데이터 패킷들을 독출하도록, 상기 채널 인덱스 및 상기 패킷 개수를 파라미터로 제공하여 제 2 디바이스 드라이버(310a)의 데이터 패킷 독출 함수를 호출한다. 제 2 디바이스 드라이버(310a)는 상기 호출에 응답하여 공유 저장 영역(412)의 상기 채널에 저장된 상기 제 1 및 제 2 데이터 패킷들을 독출한다. 이에 따라, 제 1 프로세서(200a)의 상기 제 1 및 제 2 데이터 패킷들이 제 2 프로세서(300a)로 전송된다.The second IPC driver 320a calls the message read function of the second device driver 310a, and the second device driver 310a resets the transmission completion command, the channel index, and the number of packets in response to the call. 1 Read out from the mailbox 422. The second device driver 310a provides the channel index and the number of packets as parameters to read the first and second data packets stored in the channel corresponding to the channel index in the transfer completion command, thereby providing a second device driver. Call the data packet read function of 310a. The second device driver 310a reads the first and second data packets stored in the channel of the shared storage area 412 in response to the call. Accordingly, the first and second data packets of the first processor 200a are transmitted to the second processor 300a.

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

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

도 10을 참조하면, 시스템(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, 네비게이션, 휴대용 게임기 등일 수 있다.Referring to FIG. 10, the system 900 includes a first processor 910, a second processor 920, an interprocessor communication device 930, an antenna 940, a flash memory 950, and a liquid crystal display 960. , Speaker 970, input device 980, and bus 990. In one embodiment, 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 smartphone, a mobile TV, navigation, a portable game machine, or the like. .

제 1 프로세서(910) 및 제 2 프로세서(920)는 프로세서간 통신 장치(930)에 각각 연결된다. 도 10에는 프로세서간 통신 장치(930)에 각각 연결된 두개의 프로세서들(910, 920)을 포함하는 시스템(900)이 도시되어 있으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 프로세서간 통신 장치(930)에 세 개 이상의 프로세서들이 연결될 수 있음을 이해할 수 있을 것이다.The first processor 910 and the second processor 920 are connected to the interprocessor communication device 930, respectively. 10 illustrates a system 900 including two processors 910 and 920 respectively coupled to an interprocessor communication device 930, those of ordinary skill in the art will appreciate It will be appreciated that three or more processors may be connected to the device 930.

일 실시예에서, 제 1 프로세서(200)는 안테나(940)로부터 수신된 통신 신호를 복조하여 제 2 프로세서(920)에 제공하고, 제 2 프로세서(920)로부터 수신된 데이터를 변조하여 안테나(940)를 통하여 외부에 제공하는 모뎀 기능을 수행하는 프로세서일 수 있다. 또한, 제 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 200 demodulates the communication signal received from the antenna 940 and provides it to the second processor 920, and modulates the data received from the second processor 920 to antenna 940. It may be a processor that performs a modem function provided to the outside through). In addition, the second processor may be an application processor or a multimedia processor that executes applications that provide an internet browser, a 3D map, a game, a video, and the like. The interprocessor communication device 930 may include a shared storage area for data transmission between the first processor 910 and the second processor 920, and a first code and data of a program executed in the first processor 910. It may include a dedicated storage area, a second dedicated storage area in which code and data of a program executed in the second processor 920 are stored. In one embodiment, the interprocessor communication device 930 may be dynamic random access memory (DRAM). In some embodiments, each of the first processor 910, the second processor 920, and the interprocessor communication device 930 may be implemented as a separate chip or 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 connected to a separate storage device other than the interprocessor communication device 930. That is, codes and data of a program executed in the first processor 910 may be stored in the first dedicated storage area of the interprocessor communication device 930. For example, the code of a program executed in the first processor 910 may be transferred from the flash memory 950 or the file system (not shown) connected to the second processor 920 through the second processor 920 at system boot. It may be stored in the first dedicated storage area. In this case, the second processor 920 may access the first dedicated storage area during system booting, and may not access the first dedicated storage area after booting is completed. As such, since the system 900 does not include a separate storage device for the first processor 910, the size of the system 900 may be reduced.

제 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 connected to the flash memory 950. The flash memory 950 may store boot codes of the second processor 920 or boot codes 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 interprocessor communication device 930. Accordingly, the system 900 may not include a separate DRAM for storing the application data of the second processor 920, so that the size of the system 900 may be further reduced.

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

이와 같이, 본 발명의 일 실시예에 따른 시스템(900)은 전용 저장 영역 및 공유 저장 영역을 가지는 프로세서간 통신 장치(930)를 포함하여 전체 시스템의 사이즈를 줄일 수 있고, 전력 소모를 줄일 수 있다. 또한, 프로세서간 통신 장치(930)는 공유 저장 영역을 통하여 데이터를 전송하고, 메일박스를 통하여 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 프로세서간 통신 장치(930)는 버스트 전송을 지원하여 데이터 전송 속도를 더욱 향상시킬 수 있다.As such, the system 900 according to an embodiment of the present invention may include an interprocessor 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 interprocessor communication device 930 may efficiently transmit data by transmitting data through the shared storage area and transmitting a message through a mailbox. In addition, the interprocessor communication device 930 may support burst transmission to further improve the data transmission speed.

상술한 바와 같이, 본 발명의 실시예들에 따른 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 채널들을 포함하는 공유 저장 영역을 통하여 채널 별로 데이터 패킷들을 전송하고, 메일박스를 통하여 데이터 전송 정보를 포함하는 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 본 발명의 실시예들에 따른 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 버스트 전송을 지원하여 소유권 교환의 오버헤드를 줄임으로써 데이터 전송 속도를 더욱 향상시킬 수 있다.As described above, the interprocessor communication apparatus, system, and device driver according to embodiments of the present invention transmit data packets for each channel through a shared storage area including channels, and include data transmission information through a mailbox. By sending a message, data transmission can be performed efficiently. In addition, the interprocessor communication apparatus, system, and device driver according to embodiments of the present invention may further improve data transmission speed by supporting burst transfer to reduce 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. In particular, the present invention is more useful for portable devices such as personal digital assistants (PDAs), portable multimedia players (PMPs), mobile phones, smart phones, mobile TVs, navigation, portable game machines, and the like. Can be used.

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

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

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

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

도 4는 도 2의 프로세서간 통신 장치에 포함된 메일박스를 나타내는 블록도이다.4 is a block diagram illustrating a mailbox included in the interprocessor communication device of FIG. 2.

도 5는 도 1의 시스템에서 도 2의 프로세서간 통신 장치에 포함된 공유 저장 영역에 대한 소유권을 획득하는 방법을 나타내는 순서도이다.5 is a flowchart illustrating a method of acquiring ownership of a shared storage area included in the interprocessor communication device of FIG. 2 in the system of FIG. 1.

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

도 7은 도 1의 시스템에 포함된 프로세서에서 실행되는 모듈들을 나타내는 블록도이다.7 is a block diagram illustrating modules executed in a processor included in the system of FIG. 1.

도 8은 도 1의 시스템에서 싱글 모드의 데이터 전송 방법을 나타내는 흐름도이다.8 is a flowchart illustrating a single mode data transmission method in the system of FIG. 1.

도 9는 도 1의 시스템에서 버스트 모드의 데이터 전송 방법을 나타내는 흐름도이다.9 is a flowchart illustrating a data transmission method in burst mode in the system of FIG. 1.

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

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

100, 900: 시스템100, 900: system

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

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

412, 412a: 공유 저장 영역412, 412a: shared storage

Claims (20)

제 1 프로세서에 연결되는 제 1 포트;A first port coupled to the first processor; 제 2 프로세서에 연결되는 제 2 포트;A second port coupled to a second processor; 상기 제 1 포트 또는 상기 제 2 포트를 통하여 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 복수의 데이터 패킷들을 저장하는 공유 저장 영역; 및Shared storage area for storing a plurality of data packets selectively accessed by the first processor or the second processor through the first port or the second port, and transmitted between the first processor and the second processor ; And 상기 제 1 포트 및 상기 제 2 포트에 연결되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장하는 메일박스 영역을 포함하는 프로세서간 통신 장치.An interprocessor connected to the first port and the second port and including a mailbox area for storing a command transmitted between the first processor and the second processor and data transmission information for the plurality of data packets Communication device. 제 1 항에 있어서,The method of claim 1, 상기 공유 저장 영역은 복수의 채널들을 포함하고,The shared storage area includes a plurality of channels, 상기 복수의 데이터 패킷들은 상기 복수의 채널들 중 어느 하나의 채널에 저장되는 것을 특징으로 하는 프로세서간 통신 장치.And wherein the plurality of data packets are stored in any one of the plurality of channels. 제 2 항에 있어서,The method of claim 2, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 버퍼들을 포함하고,The one channel in which the plurality of data packets are stored comprises a plurality of buffers, 상기 복수의 버퍼들 각각은 상기 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장하는 것을 특징으로 하는 프로세서간 통신 장치.And each of the plurality of buffers stores one data packet of the plurality of data packets. 제 2 항에 있어서,The method of claim 2, 상기 복수의 데이터 패킷들이 저장된 상기 어느 하나의 채널은 복수의 제 1 버퍼들 및 복수의 제 2 버퍼들을 포함하고,The one channel in which the plurality of data packets are stored comprises a plurality of first buffers and a plurality of second buffers, 상기 복수의 제 1 버퍼들은 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장하고,The plurality of first buffers store a data packet of any one of a first plurality of data packets transmitted from the first processor to the second processor, 상기 복수의 제 2 버퍼들은 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 복수의 데이터 패킷들 중 어느 하나의 데이터 패킷을 저장하는 것을 특징으로 하는 프로세서간 통신 장치.And the plurality of second buffers store one of the second plurality of data packets transmitted from the second processor to the first processor. 제 1 항에 있어서, 상기 메일박스 영역은,The method of claim 1, wherein the mailbox area, 상기 커맨드를 저장하는 커맨드 저장 영역;A command storage area for storing the command; 상기 복수의 데이터 패킷들의 상기 공유 저장 영역 내의 위치에 대한 정보를 저장하는 채널 인덱스 저장 영역; 및A channel index storage area for storing information about a location 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. 제 1 항에 있어서, 상기 메일박스 영역은,The method of claim 1, wherein the mailbox area, 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 커맨드 및 상기 제 1 프로세서로부터 상기 제 2 프로세서로 전송되는 제 1 복수의 데이터 패킷들에 대한 제 1 데이터 전송 정보를 저장하는 제 1 메일박스; 및 A first mailbox for storing first data transmission information for the first command transmitted from the first processor to the second processor and the first plurality of data packets transmitted from the first processor to the second processor; And 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 커맨드 및 상기 제 2 프로세서로부터 상기 제 1 프로세서로 전송되는 제 2 복수의 데이터 패킷들에 대한 제 2 데이터 전송 정보를 저장하는 제 2 메일박스를 포함하는 것을 특징으로 하는 프로세서간 통신 장치.A second mailbox for storing second data transmission information for a second command transmitted from the second processor to the first processor and for a second plurality of data packets transmitted from the second processor to the first processor; Interprocessor communication device comprising a. 제 1 항에 있어서, 상기 커맨드는,The method of claim 1, wherein the command is: 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개커맨드, 전송 완료 커맨드, 또는 전송 완료 및 소유권 요청 커맨드 중 어느 하나인 것을 특징으로 하는 프로세서간 통신 장치.An ownership request command, a release ownership command, a transfer hold command, a transfer resume command, a transfer complete command, or a transfer complete and ownership request command. 제 1 항에 있어서, 상기 데이터 전송 정보는,The method of claim 1, wherein the data transmission information, 상기 복수의 데이터 패킷들이 저장된 채널의 인덱스; 및An index of a channel in which the plurality of data packets are stored; And 상기 복수의 데이터 패킷들의 개수를 포함하는 것을 특징으로 하는 프로세서간 통신 장치.And a number of the plurality of data packets. 제 1 항에 있어서,The method of claim 1, 상기 공유 저장 영역의 소유권에 대한 정보를 저장하는 세마포어 영역을 더 포함하는 것을 특징으로 하는 프로세서간 통신 장치.And a semaphore area for storing information about ownership of the shared storage area. 제 9 항에 있어서,The method of claim 9, 상기 제 1 포트를 통하여 상기 제 1 프로세서에 의해 접근되는 제 1 전용 저장 영역; 및A first dedicated storage area accessed by the first processor through the first port; And 상기 제 2 포트를 통하여 상기 제 2 프로세서에 의해 접근되는 제 2 전용 저장 영역을 더 포함하는 것을 특징으로 하는 프로세서간 통신 장치.And a second dedicated storage area accessed by the second processor through the second port. 제 1 항에 있어서,The method of claim 1, 상기 공유 저장 영역은 행과 열의 매트릭스 형태로 배치되는 복수의 메모리 셀들을 포함하고,The shared storage area includes a plurality of memory cells arranged in a matrix of rows and columns, 상기 복수의 메모리 셀들 각각은 하나의 억세스 트랜지스터 및 스토리지 커패시터로 이루어진 동적 랜덤 억세스 메모리(DRAM) 셀인 것을 특징으로 하는 프로세서간 통신 장치.And each of the plurality of memory cells is a dynamic random access memory (DRAM) cell consisting of one access transistor and a storage capacitor. 제 1 태스크를 수행하기 위한 제 1 어플리케이션을 실행하는 제 1 프로세서;A first processor executing a first application to perform a first task; 제 2 태스크를 수행하기 위한 제 2 어플리케이션을 실행하는 제 2 프로세서; 및A second processor executing a second application to perform a second task; And 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 복수의 데이터 패킷들을 저장하고, 상기 제 1 프로세서와 상기 제 2 프로세서 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 저장하는 프로세서간 통신 장치를 포함하는 시스템.Is selectively accessed by the first processor or the second processor, stores a plurality of data packets transmitted between the first processor and the second processor, and is transmitted between the first processor and the second processor. And an interprocessor communication device for storing a command and data transmission information for the plurality of data packets. 제 12 항에 있어서, 상기 제 1 프로세서 및 상기 제 2 프로세서 각각은,The processor of claim 12, wherein each of the first processor and the second processor includes: 상기 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 채널 별로 기입하고, 상기 프로세서간 통신 장치로부터 상기 복수의 데이터 패킷들을 채널 별로 독출하며, 상기 프로세서간 통신 장치에 상기 커맨드 및 상기 데이터 전송 정보를 기입하고, 상기 프로세서간 통신 장치로부터 상기 커맨드 및 상기 데이터 전송 정보를 독출하는 디바이스 드라이버를 더 실행하는 것을 특징으로 하는 시스템.Write the plurality of data packets for each channel to the interprocessor communication device, read the plurality of data packets for each channel from the interprocessor communication device, write the command and the data transmission information to the interprocessor communication device, and And a device driver for reading the command and the data transmission information from the interprocessor communication device. 제 13 항에 있어서, 상기 디바이스 드라이버는,The device driver of claim 13, wherein the device driver comprises: 상기 제 1 어플리케이션 또는 상기 제 2 어플리케이션에 상기 복수의 데이터 패킷들의 기입 처리, 상기 복수의 데이터 패킷들의 독출 처리, 상기 커맨드 및 상기 데이터 전송 정보의 기입 처리, 및 상기 커맨드 및 상기 데이터 전송 정보의 독출 처리를 위한 응용 프로그램 인터페이스(application programming interface; API)를 제공하는 것을 특징으로 하는 시스템.Writing processing of the plurality of data packets to the first application or the second application, reading processing of the plurality of data packets, writing processing of the command and the data transmission information, and reading processing of the command and the data transmission information. System for providing an application programming interface (API) for. 제 14 항에 있어서, 상기 API는,The method of claim 14, wherein the API, 상기 프로세서간 통신 장치에 상기 복수의 데이터 패킷들을 기입하는 데이터 패킷 기입 함수;A data packet write function that writes the plurality of data packets to the interprocessor communication device; 상기 프로세서간 통신 장치로부터 상기 복수의 데이터 패킷들을 독출하는 데이터 패킷 독출 함수;A data packet read function that reads the plurality of data packets from the interprocessor communication device; 상기 프로세서간 통신 장치에 상기 커맨드 및 상기 데이터 전송 정보를 기입하는 메시지 기입 함수; 및A message writing function for writing the command and the data transmission information to the interprocessor communication device; And 상기 프로세서간 통신 장치로부터 상기 커맨드 및 상기 데이터 전송 정보를 독출하는 메시지 독출 함수를 포함하는 것을 특징으로 하는 시스템.And a message read function for reading the command and the data transfer information from the interprocessor communication device. 제 12 항에 있어서, 상기 프로세서간 통신 장치는,The apparatus of claim 12, wherein the interprocessor communication device comprises: 상기 제 1 프로세서에 연결되는 제 1 포트;A first port coupled to the first processor; 상기 제 2 프로세서에 연결되는 제 2 포트;A second port coupled to the second processor; 상기 제 1 포트 또는 상기 제 2 포트를 통하여 상기 제 1 프로세서 또는 상기 제 2 프로세서에 의해 선택적으로 억세스 되고, 상기 복수의 데이터 패킷들을 채널 별로 저장하는 공유 저장 영역; 및A shared storage area selectively accessed by the first processor or the second processor through the first port or the second port, and storing the plurality of data packets for each channel; And 상기 제 1 포트 및 상기 제 2 포트에 연결되고, 상기 커맨드 및 상기 데이터 전송 정보를 저장하는 메일박스 영역을 포함하는 것을 특징으로 하는 시스템.And a mailbox area coupled to the first port and the second port, the mailbox area storing the command and the data transmission information. 제 16 항에 있어서,The method of claim 16, 상기 공유 저장 영역은 복수의 채널들을 포함하고,The shared storage area includes a plurality of channels, 상기 복수의 데이터 패킷들은 상기 복수의 채널들 중 어느 하나의 채널에 저 장되는 것을 특징으로 하는 시스템.And the plurality of data packets are stored in any one of the plurality of channels. 제 17 항에 있어서, 상기 프로세서간 통신 장치는,The apparatus of claim 17, wherein the interprocessor communication device comprises: 상기 제 1 포트를 통하여 상기 제 1 프로세서에 의해 억세스 되고, 상기 제 1 어플리케이션의 코드 및 데이터를 저장하는 제 1 전용 저장 영역; 및A first dedicated storage area accessed by the first processor through the first port and storing code and data of the first application; And 상기 제 2 포트를 통하여 상기 제 2 프로세서에 의해 억세스 되고, 상기 제 2 어플리케이션의 코드 및 데이터를 저장하는 제 2 전용 저장 영역을 더 포함하는 것을 특징으로 하는 시스템.And a second dedicated storage area accessed by the second processor through the second port and storing code and data of the second application. 제 12 항에 있어서,The method of claim 12, 상기 프로세서간 통신 장치는 동적 랜덤 억세스 메모리(DRAM)인 것을 특징으로 하는 시스템.And said interprocessor communication device is dynamic random access memory (DRAM). 공유 저장 영역에 프로세서들 사이에서 전송되는 복수의 데이터 패킷들을 기입하는 데이터 패킷 기입 기능;A data packet write function for writing a plurality of data packets transmitted between processors in a shared storage area; 상기 공유 저장 영역으로부터 상기 복수의 데이터 패킷들을 독출하는 데이터 패킷 독출 기능;A data packet read function for reading the plurality of data packets from the shared storage area; 메일박스 영역에 프로세서들 사이에서 전송되는 커맨드 및 상기 복수의 데이터 패킷들에 대한 데이터 전송 정보를 기입하는 메시지 기입 기능; 및A message writing function for writing a command transmitted between processors and data transmission information for the plurality of data packets in a mailbox area; And 상기 메일박스 영역으로부터 상기 커맨드 및 상기 데이터 전송 정보를 독출 하는 메시지 독출 기능을 제공하는 디바이스 드라이버를 기록한 것을 특징으로 하는 컴퓨터로 판독 가능한 기록매체.And a device driver for providing a message reading function for reading the command and the data transmission information from the mailbox area.
KR1020080054432A 2008-06-11 2008-06-11 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 KR20090128605A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080054432A KR20090128605A (en) 2008-06-11 2008-06-11 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
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
KR1020080054432A KR20090128605A (en) 2008-06-11 2008-06-11 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

Publications (1)

Publication Number Publication Date
KR20090128605A true KR20090128605A (en) 2009-12-16

Family

ID=41688795

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080054432A KR20090128605A (en) 2008-06-11 2008-06-11 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

Country Status (1)

Country Link
KR (1) KR20090128605A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190103880A (en) * 2018-02-28 2019-09-05 에스케이하이닉스 주식회사 Data processing system and operating method thereof
KR20210099534A (en) * 2014-09-26 2021-08-12 유니버시티 테크놀로지 말레이시아 A homogeneous device access method which removes physical device drivers in a computer operating system
US11263166B2 (en) 2020-06-08 2022-03-01 Samsung Electro-Mechanics Co., Ltd. OIS circuit, OIS data sharing device, and operating method thereof

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210099534A (en) * 2014-09-26 2021-08-12 유니버시티 테크놀로지 말레이시아 A homogeneous device access method which removes physical device drivers in a computer operating system
KR20190103880A (en) * 2018-02-28 2019-09-05 에스케이하이닉스 주식회사 Data processing system and operating method thereof
US11263166B2 (en) 2020-06-08 2022-03-01 Samsung Electro-Mechanics Co., Ltd. OIS circuit, OIS data sharing device, and operating method thereof

Similar Documents

Publication Publication Date Title
CN110647480B (en) Data processing method, remote direct access network card and equipment
US8230180B2 (en) Shared memory burst communications
CN109564545B (en) Method and apparatus for compressing addresses
US20100318725A1 (en) Multi-Processor System Having Function of Preventing Data Loss During Power-Off in Memory Link Architecture
US20100185811A1 (en) Data processing system and method
US20190171392A1 (en) Method of operating storage device capable of reducing write latency
US20150143045A1 (en) Cache control apparatus and method
TW201135469A (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
JP2012520533A (en) On-die system fabric block control
US20110035537A1 (en) Multiprocessor system having multi-command set operation and priority command operation
US20070168583A1 (en) Endpoint control apparatus and method thereof
CN110858188A (en) Multiprocessor system with distributed mailbox structure and communication method thereof
US20130054885A1 (en) Multiport memory element and semiconductor device and system including the same
US9274860B2 (en) Multi-processor device and inter-process communication method thereof
CN112214157A (en) Executing device and method for host computer output and input command and computer readable storage medium
US11093418B2 (en) Memory device, processing system, and method of controlling the same
CN114780465B (en) Creation method and device for sharable remote direct data access link
KR20070122228A (en) External device access device
WO2022032990A1 (en) Command information transmission method, system, and apparatus, and readable storage medium
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
US20070198879A1 (en) Method, system, and medium for providing interprocessor data communication
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
US20090216961A1 (en) Multi-port semiconductor memory device for reducing data transfer event and access method therefor
JP6249117B1 (en) Information processing device
US8244929B2 (en) Data processing apparatus

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application