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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Abstract
Description
본 발명은 프로세서간 통신(inter-processor communication; IPC) 기술에 관한 것으로, 보다 상세하게는 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간 통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를 구동하기 위한 디바이스 드라이버에 관한 것이다.BACKGROUND OF THE
프로세서간 통신(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
제 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
프로세서간 통신 장치(400)는 제 1 프로세서(200)와 제 2 프로세서(300) 사이에서 전송되는 데이터 패킷들이 저장되는 공유 저장 영역 및 제 1 프로세서(200)와 제 2 프로세서(300) 사이에서 전송되는 메시지를 저장하는 메일박스(mailbox) 영역을 포함한다. 상기 공유 저장 영역은 제 1 프로세서(200) 또는 제 2 프로세 서(300)에 의해 선택적으로 억세스 된다. 예를 들어, 제 1 프로세서(200)가 상기 공유 저장 영역에 대한 소유권(ownership)을 가진 동안 제 2 프로세서(300)는 상기 공유 저장 영역을 억세스 하지 않을 수 있다. 상기 메일박스 영역은 제 1 프로세서(200)로부터 제 2 프로세서(300)로 전송되는 메시지를 저장하기 위한 제 1 메일박스 및 제 2 프로세서(300)로부터 제 1 프로세서(200)로 전송되는 메시지를 저장하기 위한 제 2 메일박스를 포함할 수 있다. 제 1 프로세서(200)가 상기 제 1 메일박스에 메시지를 기입하면, 제 2 프로세서(300)는 제 1 인터럽트 신호(INT1)를 수신하여 제 1 메일박스에 메시지가 기입된 것을 알 수 있다. 또한, 제 2 프로세서(300)가 상기 제 2 메일박스에 메시지를 기입하면, 제 1 프로세서(200)는 제 2 인터럽트 신호(INT2)를 수신하여 제 2 메일박스에 메시지가 기입된 것을 알 수 있다.The
예를 들어, 제 1 프로세서(200)에서 제 2 프로세서(300)로 데이터를 전송할 경우, 제 1 프로세서(200)는 상기 메일박스 영역을 활용한 메시지 전송을 통하여 상기 공유 저장 영역에 대한 소유권을 획득할 수 있다. 제 1 프로세서(200)는 상기 공유 저장 영역에 데이터 패킷들을 기입하고, 상기 제 1 메일박스에 데이터 전송 커맨드를 기입하여 제 2 프로세서(300)에 상기 데이터 패킷들이 기입된 것을 알릴 수 있다. 또한, 제 1 프로세서(200)는 상기 제 1 메일박스에 상기 데이터 전송 커맨드와 함께 상기 기입된 데이터 패킷들이 저장된 위치, 패킷 수 등의 정보를 기입함으로써, 제 2 프로세서(300)가 상기 데이터 패킷들에 대한 별도의 분석 없이 상기 데이터 패킷들을 독출할 수 있다. 또한, 제 1 프로세서(200)는 상기 제 1 포트 에 연결된 복수의 신호선들을 통하여 상기 데이터 패킷들을 프로세서간 통신 장치(400)에 병렬로 송신하고, 제 2 프로세서(300)는 상기 제 2 포트에 연결된 복수의 신호선들을 통하여 상기 데이터 패킷들을 프로세서간 통신 장치(400)에 병렬로 수신함으로써, 제 1 프로세서(200)와 제 2 프로세서(300) 사이의 데이터 전송 속도가 향상된다. 게다가, 프로세서간 통신 장치(400)는 제 1 프로세서(200)가 상기 공유 저장 영역에 대한 소유권을 가지는 동안 상기 공유 저장 영역에 다수의 데이터 패킷들을 기입하고, 제 2 프로세서(300)가 상기 소유권을 가지는 동안 상기 공유 저장 영역으로부터 다수의 데이터 패킷들을 독출할 수 있는 버스트 전송(burst transfer)을 지원한다. 이에 따라, 소유권 교환의 오버헤드를 줄임으로써 데이터 전송 속도가 더욱 향상될 수 있다.For example, when data is transmitted from the
도 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
제 1 포트(431)는 도 1의 제 1 프로세서(200)에 연결되고, 제 2 포트(432)는 도 1의 제 2 프로세서(300)에 연결된다. 또한, 제 1 포트(431)는 프로세서간 통신 장치(400a) 내에서 제 1 전용 저장 영역(411) 및 공유 저장 영역(412)에 연결되고, 제 2 포트(432)는 프로세서간 통신 장치(400a) 내에서 제 2 전용 저장 영역(413, 414) 및 공유 저장 영역(412)에 연결된다. 이에 따라, 도 1의 제 1 프로세서(200) 는 제 1 포트(431)를 통하여 제 1 전용 저장 영역(411) 및 공유 저장 영역(412)을 억세스 할 수 있고, 도 1의 제 2 프로세서(300)는 제 2 포트(432)를 통하여 제 2 전용 저장 영역(413, 414) 및 공유 저장 영역(412)을 억세스 할 수 있다.The
제 1 전용 저장 영역(411)은 제 1 포트(431)를 통하여 도 1의 제 1 프로세서(200)에 연결되고, 도 1의 제 1 프로세서(200)에서 실행되는 어플리케이션의 코드 및/또는 데이터를 저장할 수 있다. 제 2 전용 저장 영역(413, 414)은 제 2 포트(432)를 통하여 도 1의 제 2 프로세서(300)에 연결되고, 도 1의 제 2 프로세서(300)에서 실행되는 프로그램의 코드 및/또는 데이터를 저장할 수 있다. 이에 따라, 도 1의 제 1 프로세서(200)에 대한 제 1 전용 저장 영역(411)이 도 1의 제 1 프로세서(200)가 실행하는 프로그램의 코드 및/또는 데이터를 저장하기 위한 추가적인 메모리를 대체하고, 도 1의 제 2 프로세서(300)에 대한 제 2 전용 저장 영역(413, 414)이 도 1의 제 2 프로세서(300)가 실행하는 프로그램의 코드 및/또는 데이터를 저장하기 위한 추가적인 메모리를 대체함으로써, 전체 시스템에서 요구되는 메모리 장치의 수를 줄일 수 있고, 전력 소모를 줄일 수 있다.The first
공유 저장 영역(412)은 제 1 포트(431) 또는 제 2 포트(432)를 통하여 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)에 선택적으로 연결된다. 즉, 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300) 중 공유 저장 영역(412)에 대한 소유권을 가진 어느 하나의 프로세서 만이 공유 저장 영역(412)을 억세스 할 수 있다. 공유 저장 영역(412)은 도 1의 제 1 프로세서(200)와 도 1의 제 2 프로세서(300) 사이에서 전송되는 복수의 데이터 패킷들을 저장할 수 있다. 실시예에 따라, 공유 저장 영역(412)은 복수의 채널들로 구분될 수 있고, 상기 복수의 채널들 각각은 복수의 버퍼들로 구분될 수 있다. 상기 복수의 버퍼들 각각에는 하나의 데이터 패킷이 저장될 수 있다. 공유 저장 영역(412)이 복수의 채널들로 구분되고, 데이터 패킷들이 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)에서 실행되는 어플리케이션에 따라 각 채널에 기입 및 독출됨으로써, 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)는 상기 데이터 패킷들 각각의 헤더를 분석하는 복잡한 처리를 수행하지 않을 수 있다.The shared
일 실시예에서, 제 1 전용 저장 영역(411), 제 2 전용 저장 영역(413, 414), 공유 저장 영역(412)은 각각 하나 또는 그 이상의 메모리 뱅크들일 수 있고, 프로세서간 통신 장치(400a)는 동적 랜덤 억세스 메모리(DRAM)일 수 있다. 예를 들어, 제 1 전용 저장 영역(411)은 제 1 메모리 뱅크(BANK A)를 포함하고, 제 2 전용 저장 영역(413, 414)은 제 3 및 제 4 메모리 뱅크들(BANK C, BANK D)을 포함하며, 공유 저장 영역(412)은 제 2 메모리 뱅크(BANK B)를 포함할 수 있고, 제 1 내지 제 4 메모리 뱅크들(BANK A, BANK B, BANK C, BANK D) 각각은 행과 열의 매트릭스 형태로 배치되는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 하나의 억세스 트랜지스터 및 스토리지 커패시터로 이루어진 동적 랜덤 억세스 메모리 셀일 수 있다. 예를 들어, 제 1 내지 제 4 메모리 뱅크들(BANK A, BANK B, BANK C, BANK D) 각각은 16MB, 64MB, 128MB, 256MB, 512MB 등의 메모리 용량을 가질 수 있다.In one embodiment, the first
실시예에 따라, 프로세서간 통신 장치(400a)는 도 1의 제 1 프로세서(200) 또는 도 1의 제 2 프로세서(300)로부터 수신된 제어 신호들에 응답하여 공유 저장 영역(412)을 제 1 포트(431) 또는 제 2 포트(432)에 선택적으로 연결하는 억세스 경로 형성부를 포함할 수 있다. 일 실시예에서, 상기 억세스 경로 형성부는 상기 제어 신호들을 논리 조합하여 경로 결정 신호를 생성하는 경로 결정부, 상기 경로 결정 신호에 응답하여 제 1 포트(431) 또는 제 2 포트(432)를 통해 인가되는 로우 및 컬럼 어드레스들 중 하나의 로우 및 컬럼 어드레스를 선택하여 공유 저장 영역(412)과 연결되어 있는 로우 디코더 및 컬럼 디코더에 인가하는 로우 및 컬럼 어드레스 멀티플렉서들, 상기 경로 결정 신호에 응답하여 공유 저장 영역(412)의 글로벌 입출력 라인쌍을 제 1 데이터 입출력 라인쌍 또는 제 2 데이터 입출력 라인쌍에 선택적으로 연결하는 제 1 및 제 2 글로벌 멀티플렉서들, 및 제 1 및 제 2 글로벌 멀티플렉서들과 제 1 및 제 2 포트들(431,432) 사이에 각각 설치된 제 1 및 제 2 입출력 회로들을 포함할 수 있다.According to an embodiment, the
세마포어 영역(421)은 공유 저장 영역(412)의 소유권에 관한 정보를 저장할 수 있다. 일 실시예에서, 세마포어 영역(421)의 특정 비트가 로직 “1”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 1 프로세서(200)가 가지고, 세마포어 영역(421)의 특정 비트가 로직 “0”인 경우 공유 저장 영역(412)의 소유권을 도 1의 제 2 프로세서(300)가 가질 수 있다. 실시예에 따라, 공유 저장 영역(412)이 복수의 뱅크들을 포함하는 경우, 세마포어 영역(421)은 복수의 비트들을 저장할 수 있다.The
메일박스 영역(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
실시예에 따라, 세마포어 영역(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
예를 들어, 도 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
도 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
복수의 채널들(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
일 실시예에서, 복수의 채널들(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
도 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
커맨드 저장 영역(441)은 메시지의 종류를 나타내는 커맨드가 저장되는 영역이다. 메시지의 종류에 따라, 상기 메시지는 상기 커맨드만을 포함할 수 있고, 상기 커맨드와 추가적인 정보를 포함할 수 있다. 예를 들어, 커맨드 저장 영역(441)에 저장되는 커맨드는 다음 표 1과 같은 커맨드들 중 어느 하나의 커맨드 일 수 있다.The
예를 들어, 표 1에 기재된 바와 같이, 커맨드 저장 영역(441)에는 소유권 요청 커맨드, 소유권 해제 커맨드, 전송 보류 커맨드, 전송 재개 커맨드, 전송 완료 커맨드, 채널 상태 커맨드, 전송 완료 및 소유권 요청 커맨드, 요청 취소 커맨드, 에러 커맨드 등이 저장될 수 있다. 상기 소유권 요청 커맨드는 어느 프로세서가 다른 프로세서에 공유 저장 영역에 대한 소유권을 요청하는 커맨드이고, 상기 소유권 해제 커맨드는 상기 소유권 요청 커맨드에 응답하여 상기 소유권을 해제하였음을 알리는 커맨드이며, 전송 보류 커맨드는 데이터 패킷들을 수신하는 프로세서의 데이터 큐에 일정 수준 이상의 데이터 패킷들이 저장되어 데이터 패킷들을 송신하는 프로세서에 데이터 전송의 보류를 요청하는 커맨드이고, 전송 재개 커맨드는 상기 전송 보류 커맨드에 응답하여 중지된 데이터 전송을 재개할 것을 요청하는 커맨드이며, 전송 완료 커맨드는 프로세서에서 전송할 데이터 패킷들을 공유 저장 영역에 기입하는 것이 완료되었음을 나타내는 커맨드이고, 채널 상태 커맨드는 공유 저장 영역의 각 채널의 상태를 알리는 커맨드이며, 전송 완료 및 소유권 요청 커맨드는 데이터 패킷들의 기입의 완료와 함께 상기 기입된 데이터 패킷들의 독출 후 공유 저장 영역에 대한 소유권을 해제해 줄 것을 요청하는 커맨드이며, 요청 취소 커맨드는 전송된 커맨드를 취소하는 커맨드이고, 에러 커맨드는 프로세서간 통신 도중 에러가 발생하였음을 알리는 커맨드이다. 표 1에는 9개의 커맨드들이 기재되어 있으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상기 커맨드들 외에 다른 커맨드가 사용되거나, 상기 커맨드들 중 일부가 사용될 수 있음을 이해할 수 있을 것이다. 일 실시예에서, 커맨드 저장 영역(441)은 8bit의 용량을 가질 수 있다.For example, as shown in Table 1, the
프로세서들간에 전송되는 메시지는 메시지의 종류, 즉 커맨드에 따라 추가적인 정보를 더 포함할 수 있다. 예를 들어, 상기 전송 완료 커맨드를 포함하는 메시지의 경우, 상기 메시지는 상기 전송 완료 커맨드와 함께 데이터 패킷들이 기입된 채널의 인덱스 및/또는 데이터 패킷들의 개수를 포함할 수 있다.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
패킷 개수 저장 영역(443)은 채널에 기입된 복수의 데이터 패킷들의 개수가 저장될 수 있다. 예를 들어, 상기 제 1 프로세서가 상기 제 2 프로세서로 복수의 데이터 패킷들을 전송하는 경우, 상기 제 1 프로세서는 상기 공유 저장 영역의 특정 채널에 상기 복수의 데이터 패킷들을 기입하고, 커맨드 저장 영역(441)에 상기 전송 완료 커맨드를 기입하며, 채널 인덱스 저장 영역(442)에 상기 특정 채널에 대한 인덱스를 기입하며, 패킷 개수 저장 영역(443)에 상기 복수의 데이터 패킷들의 개수를 기입할 수 있다. 상기 제 2 프로세서는 상기 복수의 데이터 패킷들 각각의 헤더를 추출하여 연관된 어플리케이션, 패킷 개수 등을 분석하는 처리를 수행하지 않을 수 있다. 이에 따라, 프로세서간 통신을 위한 처리가 간단하게 구현될 수 있다.The packet
도 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
제 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
도 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
제 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
도 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
제 1 프로세서(200a)에서 실행되는 어플리케이션(230)은 도 1의 제 2 프로세서(200)에서 실행되는 어플리케이션과 데이터 통신이 필요한 어플리케이션일 수 있다. 예를 들어, 어플리케이션(230)은 데이터를 복조하여 도 1의 제 2 프로세서(200)에서 실행되는 어플리케이션에 제공하는 모뎀 기능을 제공하는 프로그램일 수 있다.The
IPC 드라이버(220)는 어플리케이션(230)과 디바이스 드라이버(210)를 연결하는 기능을 수행할 수 있다. 예를 들어, 어플리케이션(230)이 IPC 드라이버(220)의 함수를 직접 또는 커널(240)을 통하여 호출하고, IPC 드라이버(220)가 디바이스 드라이버(210)의 함수를 호출할 수 있다. 실시예에 따라, IPC 드라이버(220) 없이 제 1 프로세서(200a)가 어플리케이션(230) 및 디바이스 드라이버(210)만을 실행할 수 있으며, 어플리케이션(230)은 디바이스 드라이버(210)의 함수를 직접 호출하거나 커널(240)을 통하여 호출할 수 있다. 또한, IPC 드라이버(220)는 내부 스레드(thread)를 통하여 데이터 패킷 큐를 관리할 수 있다.The
디바이스 드라이버(210)는 IPC 드라이버(220) 또는 어플리케이션(230)에 응용 프로그램 인터페이스(application programming interface; API)를 제공하고, 도 1의 프로세서간 통신 장치(400)를 제어한다. 실시예에 따라, 디바이스 드라이버(210)는 라이브러리(library)로 구현될 수 있다. 예를 들어, 디바이스 드라이버(210)는 IPC 드라이버(220) 또는 어플리케이션(230)에 다음 표 2와 같은 API를 제공할 수 있다.The
표 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
이하, 도 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
도 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
싱글 모드에서 제 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
제 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
또한, 제 1 프로세서(200a)은 상술한 방법으로 공유 저장 영역(412)에 대한 소유권을 다시 획득하고, 상기 제 2 데이터 패킷을 전송한다. 이와 같이, 싱글 모드에서는, 하나의 프로세서에서 다른 프로세서로 하나 데이터 패킷을 전송할 때마다, 소유권의 교환을 위한 통신을 필요로 한다. 본 발명의 일 실시예에 따른 시스템에서는 이러한 싱글 모드의 데이터 전송 외에 버스트 모드의 데이터 전송을 지원한다.In addition, the
도 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
제 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
제 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
이와 같이, 버스트 모드에서는, 한번의 소유권 교환을 위한 통신을 통하여 복수의 데이터 패킷들을 한번에 하나의 프로세서에서 다른 프로세서로 전송할 수 있다. 이에 따라, 이와 같은 버스트 전송을 통하여 소유권 교환의 오버헤드 없이 대용량의 데이터를 전송할 수 있으며, 시스템의 데이터 전송 속도가 향상될 수 있다.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
제 1 프로세서(910) 및 제 2 프로세서(920)는 프로세서간 통신 장치(930)에 각각 연결된다. 도 10에는 프로세서간 통신 장치(930)에 각각 연결된 두개의 프로세서들(910, 920)을 포함하는 시스템(900)이 도시되어 있으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 프로세서간 통신 장치(930)에 세 개 이상의 프로세서들이 연결될 수 있음을 이해할 수 있을 것이다.The
일 실시예에서, 제 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
일 실시예에서, 제 1 프로세서(910)는 프로세서간 통신 장치(930) 외에 별도의 저장 장치와 연결되지 않을 수 있다. 즉, 제 1 프로세서(910)에서 실행되는 프로그램의 코드 및 데이터는 프로세서간 통신 장치(930)의 상기 제 1 전용 저장 영역에 저장될 수 있다. 예를 들어, 제 1 프로세서(910)에서 실행되는 프로그램의 코드는 시스템 부팅 시 제 2 프로세서(920)에 연결된 플래시 메모리(950) 또는 파일 시스템(미도시)로부터 제 2 프로세서(920)를 통하여 상기 제 1 전용 저장 영역에 저장될 수 있다. 이 경우, 제 2 프로세서(920)는 시스템 부팅 시에 상기 제 1 전용 저장 영역을 억세스 하고, 부팅이 완료된 후에는 상기 제 1 전용 저장 영역을 억세스 하지 않을 수 있다. 이와 같이, 시스템(900)이 제 1 프로세서(910)를 위한 별도의 저장 장치를 포함하지 않음으로써, 시스템(900)의 사이즈가 작아질 수 있다.In one embodiment, the
제 2 프로세서(920)는 플래시 메모리(950)에 연결될 수 있다. 플래시 메모리(950)는 제 2 프로세서(920)의 부트 코드, 또는 제 1 프로세서(910) 및 제 2 프로세서(920)의 부트 코드를 저장할 수 있다. 제 2 프로세서(920)의 어플리케이션 코드 및/또는 데이터는 프로세서간 통신 장치(930)의 상기 제 2 전용 저장 영역에 저장될 수 있다. 이에 따라, 시스템(900)은 제 2 프로세서(920)의 어플리케이션 데이터 저장을 위한 별도의 DRAM을 포함하지 않음으로써, 시스템(900)의 사이즈가 더욱 작아질 수 있다.The
또한, 제 2 프로세서(920)는 버스(990)를 통하여 액정 표시 장치(960), 스피커(970) 및 입력 장치(980)에 연결될 수 있다. 제 2 프로세서(920)는 제 1 프로세서(910) 및 프로세서간 통신 장치(930)를 통하여 제공받은 통신 데이터 및/또는 입력 장치(980)로부터 제공받은 입력 데이터에 기초하여 액정 표시 장치(930) 및/또는 스피커(970)에 영상 데이터 및/또는 음성 데이터를 제공할 수 있다.In addition, the
이와 같이, 본 발명의 일 실시예에 따른 시스템(900)은 전용 저장 영역 및 공유 저장 영역을 가지는 프로세서간 통신 장치(930)를 포함하여 전체 시스템의 사이즈를 줄일 수 있고, 전력 소모를 줄일 수 있다. 또한, 프로세서간 통신 장치(930)는 공유 저장 영역을 통하여 데이터를 전송하고, 메일박스를 통하여 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 프로세서간 통신 장치(930)는 버스트 전송을 지원하여 데이터 전송 속도를 더욱 향상시킬 수 있다.As such, the
상술한 바와 같이, 본 발명의 실시예들에 따른 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 채널들을 포함하는 공유 저장 영역을 통하여 채널 별로 데이터 패킷들을 전송하고, 메일박스를 통하여 데이터 전송 정보를 포함하는 메시지를 전송함으로써 데이터 전송을 효율적으로 수행할 수 있다. 게다가, 본 발명의 실시예들에 따른 프로세서간 통신 장치, 시스템 및 디바이스 드라이버는 버스트 전송을 지원하여 소유권 교환의 오버헤드를 줄임으로써 데이터 전송 속도를 더욱 향상시킬 수 있다.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)
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)
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 |
-
2008
- 2008-06-11 KR KR1020080054432A patent/KR20090128605A/en not_active Application Discontinuation
Cited By (3)
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 |