KR20160068633A - 메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법 - Google Patents
메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법 Download PDFInfo
- Publication number
- KR20160068633A KR20160068633A KR1020150083668A KR20150083668A KR20160068633A KR 20160068633 A KR20160068633 A KR 20160068633A KR 1020150083668 A KR1020150083668 A KR 1020150083668A KR 20150083668 A KR20150083668 A KR 20150083668A KR 20160068633 A KR20160068633 A KR 20160068633A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- data
- physical memory
- buffer area
- communication system
- 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
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Mathematical Physics (AREA)
Abstract
메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법에 대하여 개시된다. 멀티-프로세서 통신 시스템은, 상호간에 데이터를 전송하고 수신하는 복수개의 프로세서들과 복수개의 물리적 메모리 블락들로 분할되는 물리적 메모리 블락을 포함한다. 복수개의 물리적 메모리 블락들 각각은 하나의 전용 물리적 메모리 블락을 갖는다. 복수개의 프로세서들 중 데이터를 전송하는 전송 프로세서는 복수개의 프로세서들 중 데이터를 수신하는 수신 프로세서의 전용 물리적 블락으로 데이터를 전송하고, 수신 프로세서는 수신 프로세서의 전용 물리적 블락으로부터 데이터를 읽는다.
Description
본 발명은 멀티-프로세서 통신 시스템의 설계에 관한 것으로, 상세하게는 물리적 메모리를 공유하는 다수개의 프로세서들간의 통신을 수행하는 통신 시스템과 그에 관한 통신 방법에 관한 것이다.
멀티-프로세서 시스템에서, 다수개의 프로세서들은 예를 들어, UART, USB, SPI 등과 같은 시리얼 통신 인터페이스를 통하여 서로 데이터를 통신한다. 시리얼 통신 인터페이스가 통신에 이용될 때, 주변 회로들이 복잡해지고 전송 속도는 느려진다. 이 때문에, 대용량의 데이터를 포함하거나 다수개 프로세서들 사이의 고속 통신을 요구하는 통신을 수행하기가 어려운 문제점이 있다.
본 발명의 일 목적은 메모리 사용 효율과 데이터 전송 속도를 향상시키기 위하여, 물리적 메모리를 공유하는 다수개의 프로세서들간의 통신을 수행하는 멀티-프로세서 통신 시스템을 제공하는 것이다.
본 발명의 다른 목적은 상기 멀티-프로세서 통신 시스템의 통신 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위하여, 본 발명의 일면에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템은, 데이터를 전송하고 수신하는 복수개의 프로세서들과 복수개의 물리적 메모리 블락들로 분할되는 물리적 메모리 블락을 포함한다. 복수개의 물리적 메모리 블락들 각각은 하나의 전용 물리적 메모리 블락을 갖는다. 복수개의 프로세서들 중 데이터를 전송하는 전송 프로세서는 복수개의 프로세서들 중 데이터를 수신하는 수신 프로세서의 전용 물리적 블락으로 데이터를 전송하고, 수신 프로세서는 수신 프로세서의 전용 물리적 블락으로부터 데이터를 읽는다.
상기 다른 목적을 달성하기 위하여, 본 발명의 다른 면에 따른 데이터를 전송 및 수신하는 복수개의 프로세서들과 물리적 메모리로 구성되고 상기 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법은, 물리적 메모리를 복수개의 물리적 메모리 블락들로 분할하여 복수개의 물리적 메모리 블락들 각각이 하나의 전용 물리적 메모리 블락을 갖도록 하는 단계, 복수개의 프로세서들 중 데이터를 전송하는 전송 프로세서에 의해 상기 복수개의 프로세서들 중 상기 데이터를 수신하는 수신 프로세서의 전용 물리적 블락으로 상기 데이터를 전송하는 단계, 및 수신 프로세서에 의해 수신 프로세서의 전용 물리적 블락으로부터 데이터를 읽는 단계를 포함한다.
본 발명의 실시예들에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법은, 글로벌 공유 메모리 영역을 준비할 것이 요구되지 않고, 다수개의 프로세서들 각각이 전용 물리 메모리 블락들을 통하여 서로 데이터를 전송할 수 있으므로, 메모리의 사용 효율과 데이터 전송 속도를 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템을 설명하는 블락 다이어그램이다.
도 2는 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법을 설명하는 플로우챠트이다.
도 3은 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신을 설명하는 도면이다.
도 4는 본 발명의 다른 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법을 설명하는 플로우챠트이다.
도 5는 본 발명의 실시예에 따른 메시지 박스를 설명하는 도면이다.
도 6은 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 7a는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다.
도 7b는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
도 8은 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 9a 및 도 9b는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다.
도 9c 및 도 9d는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
도 2는 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법을 설명하는 플로우챠트이다.
도 3은 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신을 설명하는 도면이다.
도 4는 본 발명의 다른 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법을 설명하는 플로우챠트이다.
도 5는 본 발명의 실시예에 따른 메시지 박스를 설명하는 도면이다.
도 6은 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 7a는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다.
도 7b는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
도 8은 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 9a 및 도 9b는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다.
도 9c 및 도 9d는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다. 본 발명의 실시예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
물리적 메모리를 공유하는 멀티-프로세서 시스템에서, 다수개의 프로세서들이 서로 데이터를 통신할 때, 주변 회로들이 요구되지 않는다. 게다가, 억세스 속도는 빠르고 실시간 성능도 좋다. 특히, 다수개의 프로세서들이 물리적 메모리를 공유하면서 서로 통신하는 시스템에서, 물리적 메모리는 복수개의 전용 물리적 메모리 블락들로 분할되어, 각각의 프로세서들이 하나의 전용 물리적 메모리 블락을 개별적으로 독점하여 전용 소프트웨어 시스템을 수행하도록 한다. 더욱이, 프로세서들 사이의 데이터 통신에 관하여, 물리적인 메모리 블락은 다수개 프로세서들 사이의 통신 데이터를 저장하는 데이터 공유 버퍼 영역과 데이터 공유 버퍼 영역의 상태를 저장하고 업데이트하는 상태 공유 버퍼 영역을 포함하는 글로벌 공유 메모리 영역으로서 물리적 메모리 내에 준비될 수 있다(reserved).
일반적으로, 물리적 메모리를 공유하는 멀티-프로세서 시스템에서 통신하기 위하여, 상대적으로 큰 글로벌 공유 메모리 영역이 요구되고, 메모리 스페이스의 이부분은 해당 사용 계획, 예를 들어, 제품 설계 사향, 실제적인 프로세서들의 수, 프로세서들 각각의 어플리케이션 시나리오 등과 같은 특정 하드웨어 시스템에 따라 구성될 것이 요구된다. 이러한 접근 방식에는 몇가지 문제들이 있을 수 있다.
첫번째로, 글로벌 공유 메모리 영역이 장시간 준비되는 경우, 메모리의 낭비를 초래한다. 일단 글로벌 공유 메모리 영역이 고정적으로 계획되면, 결정된 데이터 공유 버퍼 영역과 상태 공유 버퍼 영역은 다이나믹하게 해제되면서 재활용되지 않기 때문에, 다른 목적으로 사용될 수 없다.
두번째로, 글로벌 공유 메모리 영역의 사용 계획이 유연하지 않다. 어떤 이유로 메모리 레이아웃이 변경될 것이 요구되는 경우, 각각의 프로세서들의 소프트웨어 시스템 내 파라미터들을 계산하고 변경할 것이 요구되는 데, 이는 번거롭고 오류 발생이 쉽다.
세번째로, 데이터 복사 동작이 다수개 프로세서들 사이의 데이터 통신 과정에서 두 번 수행될 것이 요구된다. 즉, 전송 프로세서로부터 글로벌 공유 메모리 영역으로 데이터를 복사하고, 이 후 글로벌 공유 메모리 영역으로부터 수신 프로세서로 데이터를 복사하는 것이 요구된다.
다수개의 프로세서들이 물리적 메모리를 공유하면서 서로 통신하는 시스템에서 데이터가 전송될 때, 물리적 메모리의 사용 효율이 떨어지고 데이터 전송 속도가 느려질 수 있다. 본 발명의 실시예들에서는 메모리 사용 효율과 데이터 전송 속도를 향상시키기 위하여, 물리적 메모리를 공유하는 다수개의 프로세서들간의 통신을 수행하는 통신 시스템 및 통신 방법을 제안한다.
도 1은 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템을 설명하는 블락 다이어그램이다.
도 1을 참조하면, 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 (이하, `멀티-프로세서 통신 시스템` 이라 칭한다)은 다수개의 프로세서들(100)과 물리적 메모리(200)를 포함한다. 멀티-프로세서 통신 시스템은 하나의 칩 시스템 내에 집적화될 수 있다. 실시예에 따라, 멀티-프로세서 통신 시스템은 멀티-포트 물리적 메모리를 공유하는 멀티-프로세서 시스템 내에 집적화될 수 있다. 프로세서(100)는 센트럴 프로세서, 마이크로프로세서, 물리적 프로세서, 디지털 시그널 프로세서 등일 수 있다. 물리적 메모리(200)는 랜덤 억세스 메모리 (RAM)일 수 있다.
복수개의 프로세서들(100)은 예를 들어, 제1 프로세서(100-1), 제2 프로세서(100-2), … , 제N 프로세서(100-N)를 포함하고, 데이터를 서로 전송 및 수신한다.
물리적 메모리 (200)는 복수개의 물리적 메모리 블락들로 분할되어, 각각의 프로세서들이 하나의 전용 물리적 메모리 블락을 갖도록 한다. 물리적 메모리(200)는 제1 프로세서(100-1)의 제1 전용 물리적 메모리 블락(200-1), 제2 프로세서(100-2)의 제2 전용 물리적 메모리 블락(200-2), … , 제N 프로세서(100-N)의 제N 전용 물리적 메모리 블락(200-N)으로 분할될 수 있다.
복수개의 프로세서들(100) 중에서 데이터를 전송하는 전송 프로세서는 복수개의 프로세서들(100) 중에서 데이터를 수신하는 수신 프로세서의 전용 물리적 메모리 블락으로 데이터를 전송하고, 수신 프로세서는 자신의 전용 물리적 메모리 블락으로부터 데이터를 읽는다.
설명의 편의를 위하여, 제1 프로세서(100-1)는 데이터를 전송하는 전송 프로세서라고 가정하고, 제2 프로세서(100-2)는 데이터를 수신하는 수신 프로세서라고 가정한다. 전송 프로세서와 수신 프로세서는 제1 프로세서(100-1)와 제2 프로세서(100-2)에 한정되지 않고, 복수개의 프로세서들(100) 중 다른 프로세서들 일 수 있다. 또한, 어느 하나의 프로세서는 데이터를 전송하는 것 뿐아니라 데이터를 수신하는 것으로 사용될 수 있다. 즉, 프로세서는 데이터를 전송할 때는 전송 프로세서로 사용되고, 데이터를 수신할 때는 수신 프로세서로 사용될 수 있다.
제1 프로세서(100-1)는 제2 프로세서의 제2 전용 물리적 메모리 블락(200-2)으로 데이터를 전송할 수 있고, 제2 프로세서(100-2)는 제2 전용 물리적 메모리 블락(200-2)으로부터 데이터를 읽을 수 있다.
상술한 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템에서, 글로벌 공유 메모리 영역을 준비할 것이 요구되지 않고, 복수개의 프로세서들은 대응하는 전용 물리적 메모리 블락을 통하여 서로 데이터를 전송할 수 있으므로, 메모리의 사용 효율과 데이터 전송 속도를 향상시킬 수 있다.
도 2는 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법 (이하, `멀티-프로세서 통신 방법`이라 칭한다)을 설명하는 플로우챠트이다. 멀티-프로세서 통신 시스템은 복수개의 프로세서들과 물리적 메모리를 포함하고, 복수개의 프로세서들은 서로 데이터를 전송하고 수신한다. 예를 들어, 프로세서들은 센트럴 프로세서, 마이크로프로세서, 물리적 프로세서, 디지털 시그널 프로세서 등 일 수 있다. 물리적 메모리는 랜덤 억세스 메모리 (RAM)일 수 있다. 멀티-프로세서 통신 시스템은 하나의 칩 시스템 내에 집적화될 수 있다. 실시예에 따라, 멀티-프로세서 통신 시스템은 멀티-포트 물리적 메모리를 공유하는 멀티-프로세서 시스템 내에 집적화될 수 있다.
도 2를 참조하면, S100 단계에서, 물리적 메모리는 복수개의 물리적 메모리 블락들로 분할된다. 각각의 프로세서들은 하나의 전용 물리적 메모리 블락을 갖는다.
S200 단계에서, 복수개의 프로세서들 중에서 데이터를 전송하는 전송 프로세서는 복수개의 프로세서들 중에서 데이터를 수신하는 수신 프로세서의 전용 물리적 메모리 블락으로 데이터를 전송한다.
S300 단계에서, 수신 프로세서는 자신의 전용 물리적 메모리 블락으로부터 데이터를 읽는다. 예를 들어, 어느 하나의 프로세서는 데이터를 전송하는 것 뿐아니라 데이터를 수신하는 것으로 사용될 수 있다. 즉, 프로세서는 데이터를 전송할 때는 전송 프로세서로 사용되고, 데이터를 수신할 때는 수신 프로세서로 사용될 수 있다.
상술한 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법에서, 글로벌 공유 메모리 영역을 준비할 것이 요구되지 않고, 복수개의 프로세서들은 대응하는 전용 물리적 메모리 블락을 통하여 서로 데이터를 전송할 수 있으므로, 메모리의 사용 효율과 데이터 전송 속도를 향상시킬 수 있다.
도 3은 본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신을 설명하는 도면이다.
도 3을 참조하면, 복수개의 프로세서들(100)은 전송 프로세서 (즉, 제1 프로세서(100-1))와 수신 프로세서 (즉, 제2 프로세서(100-2))를 포함한다. 제1 프로세서(100-1)는 제2 프로세서(100-2)가 제2 전용 물리적 메모리 블락(200-2) 내 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역(B)을 할당하도록 요청하고, 제2 프로세서(100-2)는 제1 프로세서(100-1)에 의한 요청에 응답하여 임시 데이터 버퍼 영역(B)을 할당할 수 있다. 임시 데이터 버퍼 영역(B)은 전송 프로세서가 수신 프로세서로 전송하고자 하는 데이터를 일시적으로 저장하는데 사용될 수 있다.
도 4는 본 발명의 다른 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법을 설명하는 플로우챠트이다.
도 4를 참조하면, S100 단계에서, 물리적 메모리는 복수개의 물리적 메모리 블락들로 분할된다. 각각의 프로세서들은 하나의 전용 물리적 메모리 블락을 갖는다.
S400 단계에서, 전송 프로세서는 수신 프로세서로 수신 프로세서의 전용 물리적 메모리 블락 내 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역을 할당할 것을 요청할 수 있다.
S500 단계에서, 수신 프로세서는 전송 프로세서에 의한 요청에 응답하여 임시 데이터 버퍼 영역을 할당할 수 있다.
S200 단계에서, 전송 프로세서는 할당된 임시 데이터 버퍼 영역으로 데이터를 전송할 수 있다.
S300 단계에서, 수신 프로세서는 할당된 임시 데이터 버퍼 영역으로부터 데이터를 읽을 수 있다.
여기에서, 임시 데이터 버퍼 영역을 할당하고 해제하기 위한 실제 어플리케이션 시나리오와 계획에 따라, 멀티-프로세서 통신 시스템 내 다수개의 프로세서들간에 통신되는 데이터는 버스트 데이터와 스트림 데이터를 포함할 수 있다.
또한, 멀티-프로세서 통신 시스템은 완전한 관계들(semantemes, 이하 `시맨팀`이라 칭한다)을 갖는 다수개의 메시지들을 일시적으로 저장하는 메시지 박스를 더 포함할 수 있다. 본 발명의 실시예에 따른 멀티-프로세서 통신 시스템 내 프로세서들 각각은 메시지 박스를 억세스할 수 있다. 예로서, 메시지 박스는 물리적 메모리에서 분할된 전용 영역, 즉 물리적 메모리의 일부일 수 있다. 실시예에 따라, 메시지 박스는 멀티-프로세서 통신 시스템에서 제공되는 전용 하드웨어 레지스터일 수 있다. 메시지 박스(210)는 도 3에서 설명된 물리적 메모리에서 분할된 전용 영역, 즉 물리적 메모리(200)의 일부분일 수 있다. 이하에서, 본 발명의 실시예에 따른 메시지 박스(210)는 도 5와 연계하여 설명될 것이다.
도 5에 도시된 바와 같이, 메시지 박스는 X 유닛 슬롯들로 분할될 수 있다. X 유닛 슬롯들 각각은 고정된 동일 사이즈를 갖도록 설정될 수 있다. 일반적으로, 실제 어플리케이션에 따라, X는 16, 32, 64 또는 다른 정수일 수 있다. 유닛 슬롯들 각각에는 완전한 시맨팀을 갖는 하나의 메시지가 실린다.
메시지는 데이터 통신을 하고 있는 일측이 다른 일측에게 어떤 동작을 수행할 것을 요청하는, 예를 들면, 전송 프로세서가 수신 프로세서에게 임시 데이터 버퍼 영역을 할당할 것을 요청하는 커맨드일 수 있다. 실시예에 따라, 메시지는 커맨드가 수행된 후의 응답, 예를 들면, 수신 프로세서가 전송 프로세서로부터의 커맨드에 응답하여 임시 데이터 버퍼 영역을 할당한 후의 응답일 수 있다.
메시지들 각각은 데이터 통신을 하고 있는 양측의 메시지 전송자와 메시지 수신자를 나타내는 프로세서 식별자들을 포함할 수 있다. 게다가, 유닛 슬롯들 각각은 영구 메시지를 실을 수 있다. 영구 메시지를 싣는 유닛 슬롯은 상대적으로 장시간 사용되고 아이들 및 사용가능한 상태로 셋팅되지 않도록 됨에 따라, 통신 중인 양측은 영구 메시지를 실은 유닛 슬롯을 우선적으로 사용할 수 있다. 이에 따라, 메시지 전송 효율이 향상될 수 있다.
도 6은 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 6을 참조하면, 예를 들어, 전송 프로세서가 수신 프로세서로 전송하고자하는 데이터가 버스트 데이터인 경우, 버스트 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역(B)은 싱글 버퍼 영역(B1)을 포함할 수 있다.
버스트 데이터는 데이터 통신 동안 버스트 모드로 전송되는 데이터를 나타내는 것으로 이해될 수 있다. 버스트 데이터 전송 이벤트를 나타내는 타입 정보를 포함하는 버스트 데이터 메시지는 메시지 박스(210)에 일시적으로 저장될 수 있다. 예로서, 버스트 데이터 전송 이벤트는 임시 데이터 버퍼 영역의 할당이 요청되는 이벤트, 임시 데이터 버퍼 영역이 할당되는 이벤트, 임시 데이터 버퍼 영역에서 읽힐 데이터를 저장하는 이벤트, 그리고 임시 데이터 버퍼 영역에 저장된 데이터를 읽는 이벤트 중 적어도 하나의 이벤트를 포함할 수 있다.
버스트 데이터 전송 이벤트가 임시 데이터 버퍼 영역의 할당이 요청되는 이벤트일 때, 버스트 데이터 메시지는 임시 데이터 버퍼 영역의 할당 요청에 관한 요청 파라미터를 포함할 수 있다. 요청 파라미터는 요청된 싱글 버퍼 영역(B1)의 크기, 동일한 프로세서의 다른 요청들과의 식별을 위한 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
버스트 데이터 전송 이벤트가 임시 데이터 버퍼 영역이 할당되는 이벤트일 때, 버스트 데이터 메시지는 임시 데이터 버퍼 영역의 할당에 관한 할당 파라미터를 포함할 수 있다. 할당 파라미터는 실제적으로 할당된 싱글 버퍼 영역(B1)의 크기와 위치, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
버스트 데이터 전송 이벤트가 임시 데이터 버퍼 영역에서 읽힐 데이터를 저장하는 이벤트일 때, 버스트 데이터 메시지는 임시 데이터 버퍼 영역에서 읽힐 데이터의 저장에 관한 파라미터를 저장할 수 있다. 데이터 저장에 관한 파라미터는 싱글 버퍼 영역의 어드레스, 읽힐 데이터의 길이, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
버스트 데이터 전송 이벤트가 임시 데이터 버퍼 영역에 저장된 데이터를 읽는 이벤트일 때, 버스트 데이터 메시지는 임시 데이터 저장 버퍼에서의 데이터 읽기에 관한 파라미터를 저장할 수 있다. 데이터 읽기에 관한 파라미터는 싱글 버퍼 영역의 어드레스, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
본 발명의 실시예에 따른 버스트 데이터에 대한 멀티-프로세서 통신 시스템의 통신 방법은 도 7a 및 도 7b와 연계하여 설명된다. 도 7a는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다. 도 7b는 본 발명의 실시예에 따른 버스트 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
도 7a의 S101 단계에서, 전송 프로세서인 제1 프로세서(100-1)는 초기화를 수행한다. 도 7b의 S201 단계에서, 수신 프로세서인 제2 프로세서(100-2)는 초기화를 수행한다.
도 7a를 참조하면, S102 단계에서, 제1 프로세서(100-1)는 하나의 버스트 데이터 메시지를 구성하고, 구성된 버스트 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 버스트 데이터 메시지는 임시 데이터 버퍼 영역의 할당이 요청되었다는 버스트 데이터 전송 이벤트를 나타내는 타입 정보와 해당 요청 파라미터를 포함할 수 있다. 타입 정보는 버스트 데이터 전송 이벤트를 나타내기 위하여 사용된다. 해당 요청 파라미터는 요청되어 할당될 버퍼 영역의 크기, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자를 포함할 수 있다.
S103 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송한다.
도 7b를 참조하면, S202 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)에 의해 전송되는 인터럽트를 기다린다. 제1 프로세서(100-1)로부터 인터럽트를 수신하면, S203 단계에서 제2 프로세서(100-2)는 메시지 박스로부터 버스트 데이터 메시지를 읽고 타입 정보를 인식한다. S204 단계에서, 제2 프로세서(100-2)는 어떤 종류의 버스트 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 버스트 데이터 전송 이벤트는 임시 데이터 버퍼 영역의 할당이 요청되었다는 이벤트로 판단되는 경우, S205 단계에서, 제2 프로세서(100-2)는 임시 데이터 버퍼 영역의 할당에 관한 요청 파라미터를 인식한다.
S206 단계에서, 제2 프로세서(100-2)는 요청 파라미터에 따라 싱글 버퍼 영역을 할당한다.
S207 단계에서, 제2 프로세서(100-2)는 하나의 버스트 데이터 메시지를 구성하고, 구성된 버스트 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 하나의 버스트 데이터 메시지는 임시 데이터 버퍼 영역이 할당되었다는 버스트 데이터 전송 이벤트를 나타내는 타입 정보와 해당 할당 파라미터를 포함할 수 있다. 해당 할당 파라미터는 실제적으로 할당된 싱글 버퍼 영역의 크기와 위치, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자 등을 포함할 수 있다.
S208 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)로 인터럽트를 전송한다. 이 후, 제2 프로세서(100-2)는 S202 단계를 다시 수행한다.
다시, 도 7a를 참조하면, S104 단계에서, 제2 프로세서(100-2)에 의해 전송된 인터럽트를 기다린다. 제2 프로세서(100-2)로부터 인터럽트를 수신하게 되면, S105 단계에서 제1 프로세서(100-1)는 메시지 박스로부터 버스트 데이터 메시지를 읽고, 타입 정보를 인식한다. S106 단계에서, 제1 프로세서(100-1)는 어떤 종류의 버스트 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 버스트 데이터 전송 이벤트는 임시 데이터 버퍼 영역의 할당이 요청되었다는 이벤트로 판단되는 경우, S107 단계에서, 제1 프로세서(100-1)는 할당된 임시 데이터 버퍼 영역에 관한 할당 파라미터를 인식한다.
S108 단계에서, 할당 파라미터에 따라 데이터가 싱글 버퍼 영역에 기입된다.
S109 단계에서, 제1 프로세서(100-1)는 하나의 버스트 데이터 메시지를 구성하고, 구성된 버스트 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 버스트 데이터 메시지는 읽힐 데이터가 임시 데이터 버퍼 영역에 저장되었다는 버스트 데이터 전송 이벤트를 나타내는 타입 정보와 해당 데이터 저장 파라미터를 포함할 수 있다. 해당 데이터 저장 파라미터는 싱글 버퍼 영역의 어드레스, 읽힐 데이터의 길이, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자 등을 포함할 수 있다.
S110 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송한다. 이 후, 제1 프로세서(100-1)는 S104 단계를 다시 수행한다.
다시, 도 7b를 참조하면, 제1 프로세서(100-1)로부터 인터럽트를 수신하면, S203 단계에서 제2 프로세서(100-2)는 메시지 박스로부터 버스트 데이터 메시지를 읽고, 타입 정보를 인식한다. S204 단계에서, 제2 프로세서(100-2)는 어떤 종류의 버스트 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 버스트 데이터 전송 이벤트는 읽힐 데이터가 임시 데이터 버퍼 영역에 저장되었다는 이벤트로 판단되는 경우, S209 단계에서, 제1 프로세서(100-1)에 의해 기입된 데이터는 싱글 데이터 버퍼로부터 읽힌다.
S210 단계에서, 싱글 버퍼 영역은 해제된다.
S211 단계에서, 제2 프로세서(100-2)는 하나의 버스트 데이터 메시지를 구성하고, 구성된 버스트 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 하나의 버스트 데이터 메시지는 임시 데이터 버퍼 영역 내 데이터가 읽혀졌음을 나타내는 타입 정보와 해당 데이터 읽기 파라미터를 포함한다. 해당 데이터 읽기 파라미터는 싱글 버퍼 영역의 어드레스, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자 등을 포함할 수 있다.
S212 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)로 인터럽트를 전송한다.
S213 단계에서, 제2 프로세서(100-2)는 현재 데이터 통신을 종료할지 여부를 판단한다. 만약 데이터 통신을 종료하는 것으로 판단되면, 제2 프로세서(100-2)는 현재 데이터 통신을 종료한다. 만약 데이터 통신을 종료하는 것이 아닌 것으로 판단되면, 제2 프로세서(100-2)는 S202 단계를 다시 수행한다.
다시, 도 7a를 참조하면, S104 및 S105 단계에서, 제2 프로세서(100-2)로부터 인터럽트르 수신하면, 제1 프로세서(100-1)는 메시지 박스로부터 버스트 데이터 메시지를 읽고, 타입 정보를 인식한다. S106 단계에서, 제1 프로세서(100-1)는 어떤 종류의 버스트 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 버스트 데이터 전송 이벤트는 임시 데이터 버퍼 영역의 데이터가 읽혀졌다는 이벤트로 판단되는 경우, S111 단계에서, 모든 데이터가 전송되었는지 여부를 판단한다. 만약 모든 데이터가 전송되었다면, 제1 프로세서(100-1)는 현재 데이터 통신을 종료한다. 만약 모든 데이터가 전송되지 않았다면, 제1 프로세서(100-1)는 S102 단계를 다시 수행한다.
상술한 방식을 통하여 버스트 데이터를 전송할 때, 전송 방법은 단순하다. 또한, 일단 요청이 되면, 버스트 데이터에 요청된 싱글 버퍼 영역이 할당되고, 길지 않게 요청되면 해제될 수 있으므로, 메모리 누출(leak)을 방지할 수 있다. 싱글 버퍼 영역을 할당하고 해제하기 위해서는 어느 정도의 시스템 부하가 요구되기 때문에, 바람직하게, 이 통신 방식은 가끔 발생하는 적은 양의 데이터 통신을 수반하는 데이터 통신 시나리오에 맞춰질 수 있다.
도 8은 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 예를 설명하는 도면이다.
도 8을 참조하면, 예를 들어, 전송 프로세서가 수신 프로세서로 전송하고자하는 데이터가 스트림 데이터인 경우, 스트림 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역(B)은 복수개의 프래그먼트들(fragments, B2-1, B2-2, …, B2-K)로 구성되는 사이클 버퍼 영역(B2)을 포함할 수 있다.
스트림 데이터는 연속적으로 전송되는 데이터 시퀀스를 나타내는 것으로 이해될 수 있다. 스트림 데이터 전송 이벤트를 나타내는 타입 정보를 포함하는 스트림 데이터 메시지는 메시지 박스(210)에 일시적으로 저장될 수 있다. 예로서, 스트림 데이터 전송 이벤트는 스트림 링크의 설정(establishment)이 요청되는 이벤트, 스트림 링크가 설정되었다는 이벤트, 프래그먼트의 상태가 변하는 이벤트, 스트림 링크의 분리(disconnection)가 요청되는 이벤트 그리고 스트림 링크가 분리되었다는 이벤트 중 적어도 하나의 이벤트를 포함할 수 있다.
스트림 데이터 전송 이벤트가 스트림 링크의 설정이 요청되는 이벤트일 때, 스트림 데이 메시지는 스트림 링크 설정 요청에 관한 요청 파라미터를 포함할 수 있다. 요청 파라미터는 요청된 사이클 버퍼 영역(B2)을 구성하는 프래그먼트들의 수, 각 프래그먼트들의 크기, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
스트림 데이터 전송 이벤트가 스트림 링크가 설정되었다는 이벤트일 때, 스트림 데이터 메시지는 설정된 스트림 링크를 글로벌하게 및 유니크하게 식별하는 데 이용되는 스트림 링크에 관한 고유 식별자(unique identifier)와 할당 파라미터를 포함할 수 있다. 할당 파라미터는 할당된 사이클 버퍼 영역(B2)을 구성하는 프래그먼트들의 수, 각 프래그먼트들의 크기, 위치 및 수, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
스트림 데이터 전송 이벤트가 스트림 링크의 분리가 요청되는 이벤트일 때, 스트림 데이터 메시지는 스트림 링크의 분리에 관한 요청 파라미터를 포함할 수 있다. 스트림 링크 분리 요청에 관한 파라미터는 스트림 링크의 고유 식별자, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함할 수 있다.
스트림 데이터 전송 이벤트가 스트림 링크가 분리되었다는 이벤트일 때, 스트림 데이터 메시지는 스트림 링크의 고유 식별자, 어플리케이션 식별자, 전송 프로세서의 식별자 그리고 수신 프로세서의 식별자를 포함하는 스트림 링크의 분리에 관한 파라미터를 포함할 수 있다.
메시지 박스(210)는 사이클 버퍼 영역(B2)의 각각의 프래그먼트들의 상태를 나타내는 영구 메시지를 일시적으로 저장할 수 있다. 예를 들어, 영구 메시지는 읽힐 데이터가 사이클 버퍼 영역(B2)의 각각의 프래그먼트들에 저장되었는지 여부와 읽힐 데이터의 길이를 나타낼 수 있다. 달리 말하면, 영구 메시지는 사이클 버퍼 영역(B2)의 각각의 프래그먼트들에 버퍼된 데이터가 있는지 여부, 즉 `데이터 있음` 또는 `데이터 없음`를 나타내는 정보와 `데이터 있음`를 나타낼 때 읽혀질 데이터의 길이를 보관할 수 있다.
본 발명의 실시예에 따른 스트림 데이터에 대한 멀티-프로세서 통신 시스템의 통신 방법은 도 9a 내지 도 9d와 연계하여 설명된다. 도 9a 및 도 9b는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 전송 프로세서의 동작을 설명하는 플로우챠트이다. 도 9c 및 도 9d는 본 발명의 실시예에 따른 스트림 데이터에 대한 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 내 수신 프로세서의 동작을 설명하는 플로우챠트이다.
도 9a의 S301 단계에서, 전송 프로세서인 제1 프로세서(100-1)는 초기화를 수행한다. 도 9c의 S401 단계에서, 수신 프로세서인 제2 프로세서(100-2)는 초기화를 수행한다.
도 9a를 참조하면, S302 단계에서, 제1 프로세서(100-1)는 하나의 스트림 데이터 메시지를 구성하고, 구성된 스트림 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 스트림 데이터 메시지는 스트림 링크의 설정이 요청되었다는 스트림 데이터 전송 이벤트를 나타내는 타입 정보와 해당 요청 파라미터를 포함할 수 있다. 타입 정보와 해당 요청 파라미터를 포함할 수 있다. 여기에서, 타입 정보는 스트림 데이터 전송 이벤트를 나타내기 위하여 이용된다. 해당 요청 파라미터는 요청된 사이클 버퍼 영역의 프래그먼트들의 수, 각 프래그먼트들의 크기, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자를 포함할 수 있다.
S303 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송한다.
도 9c를 참조하면, S402 단계에서 제2 프로세서(100-2)는 제1 프로세서(100-1)에 의해 전송되는 인터럽트를 기다린다.
제1 프로세서(100-1)로부터 인터럽트를 수신하면, S403 단계에서 제2 프로세서(100-2)는 메시지 박스로부터 스트림 데이터 메시지를 읽고 타입 정보를 인식한다.
S404 단계에서, 제2 프로세서(100-2)는 어떤 종류의 스트림 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 스트림 데이터 전송 이벤트는 스트림 링크의 설정이 요청되었다는 이벤트로 판단되는 경우, S405 단계에서 스트림 링크 설정에 관한 요청 파라미터를 인식한다.
S406 단계에서, 요청 파라미터에 따라 복수개의 프래그먼트들을 포함하는 사이클 버퍼 영역이 할당된다.
S407 단계에서, 제2 프로세서(100-2)는 해당 할당 파라미터 뿐아니라 스트림 링크에 관한 고유 식별자, 스트림 링크가 설정되었음을 나타내는 타입 정보, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자 그리고 제2 프로세서(100-2)의 식별자를 포함하는 하나의 스트림 데이터 메시지를 구성하고, 구성된 스트림 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 할당 파라미터는 실제적으로 할당된 사이클 버퍼 영역의 프래그먼트들의 수, 각 프래그먼트들의 크기, 위치 및 수를 포함할 수 있다.
S408 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)로 인터럽트를 전송하고, S402 단계를 다시 수행할 수 있다.
다시, 도 9a를 참조하면, S304 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)에 의해 전송되는 인터럽트를 기다린다.
제2 프로세서(100-2)로부터 인터럽트를 수신하면, S305 단계에서 제1 프로세서(100-1)는 메시지 박스로부터 스트림 데이터 메시지를 읽고 타입 정보를 인식한다.
S306 단계에서, 제1 프로세서(100-1)는 어떤 종류의 스트림 데이터 전송 이벤트인지를 나타내는 타입 정보를 판단한다.
타입 정보가 스트림 데이터 전송 이벤트는 스트림 링크가 설정되었다는 이벤트로 판단되는 경우, S307 단계에서 스트림 링크의 고유 식별자, 어플리케이션 식별자 그리고 인시 데이터 버퍼 영역의 실제 할당에 관한 할당 파라미터가 인식되고, 프래그먼트들의 수, 각 프래그먼트들의 크기, 위치 및 수가 획득된다. 제1 프로세서(100-1)는 다시 사이클 버퍼 영역의 각각의 프래그먼트들의 상태 정보를 포함하는 하나의 영구 메시지를 구성한 후, 제1 프로세서(100-1)는 구성된 영구 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입할 수 있다. 영구 메시지는 스트림 링크의 전체 데이터 전송 사이클 동안에 영구 메시지가 속하는 슬롯 내에 항상 상주하고, 영구 메시지는 필요한 것이 아니라 선택적이다. 제1 프로세서(100-1)와 제2 프로세서(100-2)는 영구 메시지를 가지고 데이터 전송 동안 사이클 버퍼 영역의 각각의 프래그먼트들의 상태 정보를 빠르게 서로 교환할 수 있다.
도 9b의 S308 단계에서, 제1 프로세서(100-1)는 데이터가 전송될 때까지 기다린다.
S309 단계에서, 모든 데이터가 전송되었는지 여부를 판단한다.
모든 데이터가 전송되지 않았으면, S310 단계에서 제1 프로세서(100-1)는 프래그먼트들의 상태 정보를 순차적으로 읽고 `데이터 없음` 플래그먼트가 있는지 여부를 판단한다.
`데이터 없음` 플래그먼트가 있는 경우, S311 단계에서 사이클 버퍼 영역의 `데이터 없음` 플래그먼트로 데이터가 순차적으로 기입된다.
S312 단계에서, 메시지 박스 내 영구 메시지는 프래그먼트 내 읽혀질 데이터의 길이를 포함하는 프래그먼트 자신의 상태가 변화된 플래그먼트 상태로 업데이트하고, 읽혀질 데이터가 프래그먼트에 저장되었음을 나타내기 위하여 플래그먼트의 상태가 변화되었음을 나타내는 타입 정보를 업데이트한다.
S313 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송하고, S306 단계를 다시 수행한다. S310 단계에서, `데이터 없음` 프래그먼트가 없는 경우, 제1 프로세서(100-1)는 S304 단계를 다시 수행한다.
S311 단계에서, 제1 프로세서(100-1)가 하나의 `데이터 없음` 프래그먼트(B2-1)에 데이터를 기입한 후에, S312 단계에서 제1 프로세서(100-1)는 영구 메시지에 일시적으로 저장된 프래그먼트(B2-1)의 상태 정보를 프래그먼트 내 읽혀지는 데이터의 길이를 일시적으로 저장하는 것을 포함한 `데이터 있음` 상태로 변경한다.
S313 단계에서 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송한다.
S309 및 S310 단계에서, 만약 제1 프로세서(100-1)가 프래그먼트에 기입될 데이터를 여전히 가지고 있고 `데이터 없음` 프래그먼트가 있다면, 데이터는 프래그먼트로 연속적으로 기입될 수 있다. 만약 모든 프래그먼트들이 `데이터 있음` 상태인 동안 제1 프로세서(100-1)가 프래그먼트에 기입될 데이터를 여전히 가지고 있다면, 제1 프로세서(100-1)에 의한 프래그먼트로의 데이터 기입 프로세스가 중단되고, 제1 프로세서(100-1)는 S304 단계로 돌아가서 제2 프로세서(100-2)에 의해 제1 프로세서(100-1)로 전송되는 인터럽트를 기다린다.
모든 데이터가 전송된 경우, S314 단계에서 제1 프로세서(100-1)는 스트림 링크가 분리되었는지 여부를 판단한다.
스트림 링크가 분리된 경우, S315 단계에서 제1 프로세서(100-1)는 `스트림 링크의 분리 요청`을 나타내는 타입 정보와 스트림 링크의 고유 식별자, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자, 제2 프로세서(100-2)의 식별자 등이 포함된 해당 요청 파라미터를 포함하는 하나의 스트림 데이터 메시지를 구성하고, 구성된 스트림 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입한다. 만약 영구 메시지가 데이터 전송 프로세서 내에 사용된다면, 이 때 영구 메시지는 더 이상 요구되지 않고, 영구 메시지가 속하는 슬롯이 전송된 메시지를 일시적으로 저장하기 위해 사용될 수 있다.
S316 단계에서, 제1 프로세서(100-1)는 제2 프로세서(100-2)로 인터럽트를 전송하고, S304 단계를 다시 수행한다.
다시, 도 9c로 돌아가서, S402 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)에 의해 전송되는 인터럽트를 기다린다.
제1 프로세서(100-1)로부터 인터럽트를 수신하면, S403 단계에서 제2 프로세서(100-2)는 메시지 박스로부터 스트림 데이터 메시지를 읽고 타입 정보를 인식한다.
S404 단계에서, 제2 프로세서(100-2)는 타입 정보가 어떤 종류의 스트림 데이터 전송 이벤트를 나타내는지를 판단한다.
타입 정보에 따라 스트림 데이터 전송 이벤트가 읽혀질 데이터가 프래그먼트에 저장되어 프래그의 상태가 변화되었다는 이벤트인 경우, S409 단계에서 제2 프로세서(100-2)는 메시지 박스 내 영구 메시지로부터 읽혀질 데이터를 갖는 프래그먼트가 있는지 여부를 순차적으로 판단한다. 여기에서, 제2 프로세서(100-2)가 영구 메시지로부터 읽혀질 데이터를 갖는 프래그먼트가 있다고 판단할 때, 제2 프로세서(100-2)는 처음부터 각 프래그먼트들의 상태를 판단하기 보다는, 마지막으로 읽은 데이터의 프래그먼트부터 시작하여 순차적인 프래그먼트의 상태를 판단할 수 있다.
`데이터 있음` 프래그먼트가 있는 경우, 도 9d의 S410 단계에서 제2 프로세서(100-2)는 `데이터 있음` 프래그먼트에서 데이터를 읽고 프래그먼트를 비운다.
S411 단계에서, 메시지 박스 내 영구 메시지는 프래그먼트 내 데이터가 없다는 것을 나타내기 위하여 `프래그먼트의 상태가 변화되었음`을 나타내는 타입 정보와 상태가 변화된 프래그먼트의 상태로 업데이트된다.
S412 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)로 인터럽트를 전송하고, S409 단계를 다시 수행한다. 즉, 제2 프로세서(100-2)는 제1 프로세서(100-1)로부터 읽혀질 데이터가 프래그먼트에 저장되어있다는 것을 알려주는 인터럽트를 수신할 때마다, 제2 프로세서(100-2)는 읽을 수 있는 데이터가 없을 때까지, 즉, `데이터 없음` 프래그먼트가 읽혀질 때까지 `데이터 있음` 프래그먼트에서 데이터를 순차적으로 읽을 것이다. 이 경우, 제2 프로세서(100-2)는 데이터 읽기를 멈추고, 제1 프로세서(100-1)가 인터럽트를 추후 다시 전송하기를 기다리기 위해 S402 단계를 다시 수행한다.
S404 단계에서 판단된 타입 정보에 따라 스트림 데이터 전송 이벤트가 스트림 링크의 분리가 요청되었다는 이벤트인 경우, S413 단계에서 제2 프로세서(100-2)는 스트림 링크의 분리에 관한 요청 파라미터를 인식한다.
S414 단계에서, 스트림 링크의 분리에 관한 요청 파라미터에 따라 할당된 사이클 버퍼 영역을 해제한다.
S415 단계에서, 제2 프로세서(100-2)는 `스트림 링크가 분리되었음`을 나타내는 타입 정보와 스트림 링크의 고유 식별자, 어플리케이션 식별자, 제1 프로세서(100-1)의 식별자, 제2 프로세서(100-2)의 식별자 등을 포함한 해당 파라미터를 포함하는 하나의 스트림 데이터 메시지를 구성하고, 구성된 스트림 데이터 메시지를 메시지 박스 내 특정 아이들 슬롯에 기입한다.
S416 단계에서, 제2 프로세서(100-2)는 제1 프로세서(100-1)로 인터럽트를 전송한다. 최종적으로, 현재 데이터 통신은 종료된다.
다시, 도 9a를 참조하면, S304 단계에서 제1 프로세서(100-1)는 제2 프로세서(100-2)에 의해 전송되는 인터럽트를 기다린다.
제2 프로세서(100-2)로부터 인터럽트를 수신하면, S305 단계에서 제1 프로세서(100-1)는 스트림 데이터 메시지를 읽고 타입 정보를 인식한다.
S306 단계에서, 제1 프로세서(100-1)는 타입 정보가 어떤 종류의 스트림 데이터 전송 이벤트를 나타내는지를 판단한다. S306 단계의 판단된 타입 정보에 따라 스트림 데이터 전송 이벤트가 프래그먼트 내 데이터가 읽혀졌다는 이벤트인 경우, S309 단계가 수행된다. S306 단계의 판단된 타입 정보에 따라, 스트림 데이터 전송 이벤트가 스트림 링크가 분리되었다는 이벤트인 경우, 현재 데이터 통신은 종료된다.
상술한 방식을 통하여 전송되는 스트림 데이터는 사이클 버퍼 영역에 순환적으로 그리고 반복적으로 저장되므로, 버퍼 영역을 할당하고 해제하는 동작을 자주 수행할 것을 요구하지 않기 때문에, 통신 효율이 향상된다. 이러한 종류의 통신 방식은 큰 용량의 데이터 전송이 빈번히 일어나는 데이터 전송 시나리오에 적합하다. 스트림 링크의 관리 전략은 메모리 누출을 효과적으로 방지할 수 있다. 예를 들어, 통신 중인 일 측이 더 이상 통신할 필요가 없을 때, 통신 중인 다른 측은 스트림 링크를 분리할 것을 요청할 수 있고, 이에 따라 버퍼 영역 할당에 응답하는 데이터 수신 프로세서는 즉시 사이클 버퍼 영역을 해제할 수 있으므로, 메모리 누출을 방지하고, 데이터 수신 프로세서의 시스템 충돌과 같은 에러를 방지한다.
본 발명의 실시예에 따른 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법은 글로벌하게 공유되는 메모리 영역을 준비할 것을 요구하지 않고 다수개의 프로세서들은 해당하는 전용 물리적 메모리 블락들을 통해 상호 데이터를 전송할 수 있으므로, 메모리의 사용 효율을 높인다. 뿐만 아니라, 데이터 전송 동안, 데이터가 복사되는 횟수가 감소되어, 데이터 전송 속도를 높인다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
Claims (10)
- 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템에 있어서,
상호간에 데이터를 전송하고 수신하는 복수개의 프로세서들; 및
복수개의 물리적 메모리 블락들로 분할되는 상기 물리적 메모리를 포함하고,
상기 복수개의 물리적 메모리 블락들 각각은 하나의 전용 물리적 메모리 블락을 갖고, 상기 복수개의 프로세서들 중 데이터를 전송하는 전송 프로세서는 상기 복수개의 프로세서들 중 상기 데이터를 수신하는 수신 프로세서의 전용 물리적 블락으로 상기 데이터를 전송하고, 상기 수신 프로세서는 상기 수신 프로세서의 상기 전용 물리적 블락으로부터 데이터를 읽는 멀티-프로세서 통신 시스템. - 제1항에 있어서,
상기 전송 프로세서는 상기 수신 프로세서에게 상기 수신 프로세서의 상기 전용 물리적 메모리 블락에 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역을 할당할 것을 요청하고,
상기 수신 프로세서는 상기 전송 프로세서에 의한 요청에 응답하여 상기 임시 데이터 버퍼 영역을 할당하는 멀티-프로세서 통신 시스템. - 제2항에 있어서,
상기 데이터는 버스트 데이터이고,
상기 버스트 데이터를 버퍼링하기 위한 상기 임시 데이터 버퍼 영역은 싱글 버퍼 영역을 포함하는 멀티-프로세서 통신 시스템. - 제2항에 있어서,
상기 데이터는 스트림 데이터이고,
상기 스트림 데이터를 버퍼링하기 위한 상기 임시 데이터 버퍼 영역은 복수개의 프래그먼트들로 구성되는 사이클 버퍼 영역을 포함하는 멀티-프로세서 통신 시스템. - 제3항에 있어서, 상기 멀티-프로세서 통신 시스템은
버스트 데이터 전송 이벤트를 나타내는 타입 정보를 포함하는 버스트 데이터 메시지를 일시적으로 저장하기 위한 메시지 박스를 더 포함하는 멀티-프로세서 통신 시스템. - 제5항에 있어서,
상기 메시지 박스는 상기 물리적 메모리로부터 분할된 전용 영역 또는 상기 멀티-프로세서 통신 시스템 내에 제공된 전용 하드웨어 레지스터인 멀티-프로세서 통신 시스템. - 제4항에 있어서, 상기 멀티-프로세서 통신 시스템은
스트림 데이터 전송 이벤트를 나타내는 타입 정보를 포함하는 스트림 데이터 메시지를 일시적으로 저장하기 위한 메시지 박스를 더 포함하는 멀티-프로세서 통신 시스템. - 제7항에 있어서,
상기 메시지 박스는 상기 물리적 메모리로부터 분할된 전용 영역 또는 상기 멀티-프로세서 통신 시스템 내에 제공된 전용 하드웨어 레지스터인 멀티-프로세서 통신 시스템. - 제1항에 있어서,
상기 멀티-프로세서 통신 시스템은 싱글 칩 시스템 내에 집적화되거나 멀티-포트 물리적 메모리를 공유하는 멀티-프로세서 시스템 내에 집적화되는 멀티-프로세서 통신 시스템. - 데이터를 전송 및 수신하는 복수개의 프로세서들과 물리적 메모리로 구성되고 상기 물리적 메모리를 공유하는 멀티-프로세서 통신 시스템의 통신 방법에 있어서,
상기 물리적 메모리를 복수개의 물리적 메모리 블락들로 분할하여, 상기 복수개의 물리적 메모리 블락들 각각이 하나의 전용 물리적 메모리 블락을 갖도록 하는 단계;
상기 복수개의 프로세서들 중 상기 데이터를 전송하는 전송 프로세서에 의해, 상기 복수개의 프로세서들 중 상기 데이터를 수신하는 수신 프로세서의 전용 물리적 메모리 블락 내 상기 데이터를 버퍼링하기 위한 임시 데이터 버퍼 영역의 할당을 요청하는 단계;
상기 수신 프로세서에 의해, 상기 전송 프로세서의 요청에 응답하여 상기 임시 데이터 버퍼 영역을 할당하는 단계;
상기 전송 프로세서에 의해, 상기 할당된 임시 데이터 버퍼 영역으로 상기 데이터를 전송하는 단계; 및
상기 수신 프로세서에 의해, 상기 할당된 임시 데이터 버퍼 영역으로부터 상기 데이터를 읽는 단계를 포함하는 멀티-프로세서 통신 시스템의 통신 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/959,520 US20160162199A1 (en) | 2014-12-05 | 2015-12-04 | Multi-processor communication system sharing physical memory and communication method thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410734202.9A CN104462008A (zh) | 2014-12-05 | 2014-12-05 | 共享物理内存的多处理器通信系统及其通信方法 |
CN201410734202.9 | 2014-12-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160068633A true KR20160068633A (ko) | 2016-06-15 |
Family
ID=52908083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150083668A KR20160068633A (ko) | 2014-12-05 | 2015-06-12 | 메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR20160068633A (ko) |
CN (2) | CN106980595B (ko) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368449A (zh) * | 2016-05-13 | 2017-11-21 | 展讯通信(上海)有限公司 | 一种处理器间的通信系统及方法 |
CN106383742B (zh) * | 2016-09-23 | 2019-10-18 | 郑州云海信息技术有限公司 | 一种基于linux的IO调度方法 |
CN109117268A (zh) * | 2018-07-20 | 2019-01-01 | 首钢集团有限公司 | 一种轧机控制系统通信中间件的实现方法和装置 |
CN109254860A (zh) * | 2018-09-28 | 2019-01-22 | 中国科学院长春光学精密机械与物理研究所 | 一种异构多核平台的数据处理系统及终端设备 |
CN109542830B (zh) * | 2018-11-21 | 2022-03-01 | 北京灵汐科技有限公司 | 一种数据处理系统及数据处理方法 |
CN109933438B (zh) * | 2019-01-31 | 2022-12-20 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 高速共享内存数据收发系统 |
CN110445578B (zh) * | 2019-07-29 | 2020-06-23 | 广芯微电子(广州)股份有限公司 | 一种spi数据传输方法及装置 |
CN112015692A (zh) * | 2020-07-21 | 2020-12-01 | 华东理工大学 | 一种面向Simulink自动生成多线程代码的核间通信优化方法 |
CN116010332B (zh) * | 2023-03-28 | 2023-06-16 | 苏州旗芯微半导体有限公司 | 多核SoC系统及其内存通信方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0926910A (ja) * | 1995-07-11 | 1997-01-28 | Canon Inc | 情報処理装置及びその方法及び情報処理システム及びその制御方法 |
US6633960B1 (en) * | 2000-08-31 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Scalable directory based cache coherence protocol |
CN1222882C (zh) * | 2002-12-05 | 2005-10-12 | 华为技术有限公司 | 一种任务间通信的实现方法 |
US8099777B1 (en) * | 2004-08-26 | 2012-01-17 | Rockwell Collins, Inc. | High security, multi-level processor and method of operating a computing system |
CN100458757C (zh) * | 2005-07-28 | 2009-02-04 | 大唐移动通信设备有限公司 | 嵌入式实时操作系统中多核处理器的核间通信方法及装置 |
US7447846B2 (en) * | 2006-04-12 | 2008-11-04 | Mediatek Inc. | Non-volatile memory sharing apparatus for multiple processors and method thereof |
US8286188B1 (en) * | 2007-04-27 | 2012-10-09 | Marvell Israel (M.I.S.L.) Ltd. | Method and apparatus for advanced interprocess communication |
CN101178701B (zh) * | 2007-12-11 | 2010-07-21 | 华为技术有限公司 | 一种多处理器间通信的方法及系统 |
CN102567275B (zh) * | 2010-12-08 | 2014-01-08 | 中国科学院声学研究所 | 一种多核处理器上多个操作系统间内存访问的方法及系统 |
US9251108B2 (en) * | 2012-11-05 | 2016-02-02 | International Business Machines Corporation | Managing access to shared buffer resources |
-
2014
- 2014-12-05 CN CN201710207715.8A patent/CN106980595B/zh active Active
- 2014-12-05 CN CN201410734202.9A patent/CN104462008A/zh active Pending
-
2015
- 2015-06-12 KR KR1020150083668A patent/KR20160068633A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
CN106980595A (zh) | 2017-07-25 |
CN104462008A (zh) | 2015-03-25 |
CN106980595B (zh) | 2019-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160068633A (ko) | 메모리를 공유하는 멀티-프로세서 통신 시스템 및 통신 방법 | |
CN101115054B (zh) | 用于网络接口控制器的存储器映射的缓冲器 | |
CN109933438B (zh) | 高速共享内存数据收发系统 | |
CN100353349C (zh) | 通讯处理器的总线结构和共享总线判优方法 | |
CN109376197B (zh) | 一种数据同步方法、服务器及计算机存储介质 | |
CN106648896B (zh) | 一种Zynq芯片在异构称多处理模式下双核共享输出外设的方法 | |
TW594476B (en) | Apparatus and method for allocating buffer space | |
CN103034616B (zh) | 一种多个操作系统访问存储介质的方法、计算机 | |
US5606666A (en) | Method and apparatus for distributing control messages between interconnected processing elements by mapping control messages of a shared memory addressable by the receiving processing element | |
CN103003808A (zh) | 用于访问PCI Express 兼容设备的资源的系统和方法 | |
TW201710922A (zh) | 可組態之郵箱資料緩衝器裝置 | |
CN108280041A (zh) | 一种内部集成电路主机的通信方法和装置 | |
CN103324599A (zh) | 处理器间通信方法与系统级芯片 | |
CN103455371A (zh) | 用于优化的管芯内小节点间消息通信的方法和系统 | |
JP2017501492A (ja) | インフィニバンド(IB)上で仮想ホストバスアダプタ(vHBA)を管理およびサポートするためのシステムおよび方法、ならびに単一の外部メモリインターフェイスを用いてバッファの効率的な使用をサポートするためのシステムおよび方法 | |
CN100476775C (zh) | 用于总线通信设备的主机控制器以及总线通信设备 | |
CN115576716A (zh) | 一种基于多进程的内存管理方法 | |
US9146693B2 (en) | Storage control device, storage system, and storage control method | |
JP5209535B2 (ja) | Usbホストコントローラ及びusbホストコントローラの制御方法 | |
JP2007503053A (ja) | 共有メモリを用いるプロセッサ間通信方法及び装置 | |
JP5518143B2 (ja) | 仮想マシンの移行方法、サーバ、プログラム、及び、仮想マシンシステム | |
US20160162199A1 (en) | Multi-processor communication system sharing physical memory and communication method thereof | |
CN102546347A (zh) | 基于proc技术的虚拟串口热插拔的实现方法及系统 | |
CN108241770B (zh) | 一种基于反射内存网的消息响应分布式仿真方法 | |
WO2010119932A1 (ja) | マルチプロセッサシステム、マルチプロセッサシステムにおけるメモリ管理方法及び通信プログラム |