KR102606224B1 - 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법 - Google Patents

프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법 Download PDF

Info

Publication number
KR102606224B1
KR102606224B1 KR1020230067717A KR20230067717A KR102606224B1 KR 102606224 B1 KR102606224 B1 KR 102606224B1 KR 1020230067717 A KR1020230067717 A KR 1020230067717A KR 20230067717 A KR20230067717 A KR 20230067717A KR 102606224 B1 KR102606224 B1 KR 102606224B1
Authority
KR
South Korea
Prior art keywords
mailbox
context
core
receiving
data
Prior art date
Application number
KR1020230067717A
Other languages
English (en)
Inventor
한성주
김도훈
김주현
Original Assignee
메티스엑스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 메티스엑스 주식회사 filed Critical 메티스엑스 주식회사
Priority to KR1020230067717A priority Critical patent/KR102606224B1/ko
Application granted granted Critical
Publication of KR102606224B1 publication Critical patent/KR102606224B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4498Finite state machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

본 개시의 한 측면으로서, 전자 장치가 개시된다. 상기 장치는, 복수의 클러스터(cluster)들 - 상기 복수의 클러스터들 각각은 복수의 코어(core)들을 포함함 -; 상기 복수의 클러스터들 각각에 고유하게 대응하는 메일박스(mailbox); 및 시스템 버스(system bus)를 포함하고, 상기 프로세스 간 통신은 상기 복수의 코어들 중 송신 코어와 수신 코어 사이에서 수행되고, 상기 송신 코어와 상기 수신 코어가 동일한 클러스터에 포함될 경우, 상기 동일한 클러스터에 대응하는 메일박스가 상기 시스템 버스를 거치지 않고 상기 프로세스 간 통신을 수행하도록 구성되고, 상기 송신 코어와 상기 수신 코어가 상이한 클러스터들에 포함될 경우, 상기 상이한 클러스터들 각각에 대응하는 메일박스들이 상기 시스템 버스를 거쳐서 상기 프로세스 간 통신을 수행하도록 구성될 수 있다.

Description

프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법{ELECTRONIC DEVICE INCLUDING HARDWARE ARCHITECTURE FOR SUPPORTING INTER-PROCESS COMMUNICATION AND METHOD FOR PERFORMING INTER-PROCESS COMMUNICATION}
본 개시는 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법에 관한 것이다.
프로세스 간 통신(Inter-Process Communication; IPC)이란 프로세스들 사이에서 서로 데이터를 주고받는 동작을 말한다. 운영체제(operating system)는 다양한 방식으로 IPC를 구현한다.
운영체제에 의해 구현되는 다양한 방식의 IPC를 동작시키기 위해서는 하드웨어 아키텍처에 의한 적절한 지원이 필요하다. 일반적으로 임베디드 멀티코어 아키텍처(embedded multi-core architecture)에서는 IPC를 수행하기 위하여 시스템 버스와 같은 경로를 통해 코어(core)들이 데이터를 직접 주고받는 방식으로 하드웨어 아키텍처가 설계된다. 코어가 시스템 버스를 거쳐서 다른 코어와 직접 통신하도록 구성된 하드웨어 아키텍처는 가장 범용적인 구조이다. 이러한 하드웨어 아키텍처는 범용성을 갖기 때문에 여러 운영체제가 구현하는 다양한 방식의 IPC를 지원할 수 있다.
그러나, 코어들이 시스템 버스를 통해 데이터를 직접 주고받는 방식은 IPC 작업을 수행하는 동안 이들 코어가 다른 작업을 수행할 수 없게 한다. 따라서 IPC를 수행하는 동안 코어들 각각의 성능은 저하된다.
또한, 코어들 사이에서 송수신할 데이터가 많으면 시스템 버스의 부하가 증가하는 문제도 있다. 시스템 버스의 부하가 증가하면 시스템 버스를 사용하는 다른 구성요소들 사이의 트래픽에도 영향을 주며, 이러한 영향은 컴퓨팅 시스템 전체의 성능 저하를 초래할 수 있다.
게다가, 최근에는 매니코어 프로세서(manycore processor)가 고성능 컴퓨팅에 광범위하게 사용되고 있다. 매니코어 프로세서는 높은 수준의 병렬 처리를 위하여 설계된 특수한 종류의 멀티코어 프로세서이다. 매니코어 아키텍처에서는 독립적인 프로세서 코어가 수십 내지 수천 개에 이르기 때문에 IPC 동작이 더욱 빈번하게 이루어질 수 있다. 따라서 IPC가 컴퓨팅 시스템 전체에 미치는 영향력도 더욱 크고, 시스템 버스를 이용하여 IPC를 구현함으로 인한 성능 저하 문제도 더욱 심각할 수 있다.
예를 들어, 본원에 대한 선행 문헌으로는 대한민국 등록특허 제10-1714659호가 있다.
본 개시는 IPC 작업의 효율성을 높일 수 있는 하드웨어 아키텍처를 구현함으로써, 전체적인 컴퓨팅 성능의 개선을 가져오는 전자 장치를 제공하는 것을 기술적 과제로 한다.
본 개시는 메일박스라고 지칭되는 코프로세서(coprocessor)를 통해 IPC를 수행함으로써, 프로세서 코어의 성능을 향상시킬 수 있는 전자 장치를 제공하는 것을 기술적 과제로 한다.
본 개시는 메일박스 내의 저장소를 활용하여 IPC를 수행함으로써, 시스템 버스의 부하를 저감할 수 있는 전자 장치를 제공하는 것을 기술적 과제로 한다.
본 개시는 SRAM(Static Random Access Memory)을 이용하여 메일박스 내의 저장소를 구현함으로써, 상대적으로 저렴한 가격으로 효과적으로 IPC 성능 개선을 이룰 수 있는 전자 장치를 제공하는 것을 기술적 과제로 한다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 한 측면으로서, 프로세스 간 통신(Inter-Process Communication)을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치가 개시된다. 상기 장치는, 복수의 클러스터(cluster)들 - 상기 복수의 클러스터들 각각은 복수의 코어(core)들을 포함함 -; 상기 복수의 클러스터들 각각에 고유하게 대응하는 메일박스(mailbox); 및 시스템 버스(system bus)를 포함하고, 상기 프로세스 간 통신은 상기 복수의 코어들 중 송신 코어와 수신 코어 사이에서 수행되고, 상기 송신 코어와 상기 수신 코어가 동일한 클러스터에 포함될 경우, 상기 동일한 클러스터에 대응하는 메일박스가 상기 시스템 버스를 거치지 않고 상기 프로세스 간 통신을 수행하도록 구성되고, 상기 송신 코어와 상기 수신 코어가 상이한 클러스터들에 포함될 경우, 상기 상이한 클러스터들 각각에 대응하는 메일박스들이 상기 시스템 버스를 거쳐서 상기 프로세스 간 통신을 수행하도록 구성될 수 있다.
일 실시예에서, 상기 메일박스는 컨트롤러(controller)와 저장소(storage)를 포함할 수 있다.
일 실시예에서, 상기 저장소는 데이터 영역(data area)과 컨텍스트 영역(context area)을 포함할 수 있다.
일 실시예에서, 상기 저장소는 SRAM(Static Random Access Memory)을 포함할 수 있다.
일 실시예에서, 상기 컨트롤러는 FSM(Finite State Machine)을 포함할 수 있다.
일 실시예에서, 상기 송신 코어는, IPC 커맨드를 생성하고, 상기 송신 코어를 포함하는 제1 클러스터에 대응하는 제1 메일박스에 상기 IPC 커맨드를 송신함으로써 상기 프로세스 간 통신을 개시하도록 구성될 수 있다.
일 실시예에서, 상기 IPC 커맨드는 데이터(data) 및 컨텍스트 인덱스(context index)를 포함할 수 있다.
일 실시예에서, 상기 제1 메일박스의 상기 컨트롤러는, 상기 송신 코어로부터 상기 IPC 커맨드를 수신할 경우 상기 제1 메일박스의 상기 저장소의 상기 컨텍스트 영역으로부터 상기 컨텍스트 인덱스에 대응하는 컨텍스트를 판독하도록 구성될 수 있다.
일 실시예에서, 상기 제1 메일박스의 상기 컨트롤러는, 상기 판독된 컨텍스트에 적어도 부분적으로 기초하여, 상기 수신 코어를 포함하는 클러스터에 대응하는 수신측 메일박스를 식별하기 위한 목적지(destination) 값을 산출하도록 구성될 수 있다.
일 실시예에서, 상기 컨텍스트 영역에 기록된 상기 컨텍스트는 적어도 포인터(pointer), 수신자(receiver), 주소(address)를 포함하고, 상기 목적지 값은 상기 포인터, 상기 수신자, 상기 주소에 기초하여 산출될 수 있다.
일 실시예에서, 상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 동일한 경우, 상기 제1 메일박스의 상기 컨트롤러는, 상기 IPC 커맨드에 포함된 상기 데이터를 상기 제1 메일박스의 상기 저장소의 상기 데이터 영역에 기록하고, 상기 제1 메일박스의 상기 저장소의 상기 컨텍스트 영역에 저장된 컨텍스트의 포인터를 갱신하고, 상기 수신 코어에 인터럽트를 발생시키도록 구성될 수 있다.
일 실시예에서, 상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 상이한 제2 메일박스인 경우, 상기 제1 메일박스의 상기 컨트롤러는, 상기 IPC 커맨드에 포함된 상기 데이터를 상기 시스템 버스를 거쳐서 상기 제2 메일박스로 전송하도록 구성될 수 있다.
일 실시예에서, 상기 제2 메일박스의 상기 컨트롤러는, 상기 IPC 커맨드에 포함된 상기 데이터를 상기 제2 메일박스의 상기 저장소의 상기 데이터 영역에 기록하고, 상기 제2 메일박스의 상기 저장소의 상기 컨텍스트 영역에 저장된 컨텍스트의 포인터를 갱신하고, 상기 수신 코어에 인터럽트를 발생시키도록 구성될 수 있다.
일 실시예에서, 상기 데이터 영역에 기록된 데이터와 상기 컨텍스트 영역에 기록된 컨텍스트는 큐(queue)를 구현하도록 구성될 수 있다.
일 실시예에서, 상기 컨텍스트 영역에 대한 1차 판독과 상기 데이터 영역에 대한 2차 판독을 통해 상기 큐를 조작하도록 구성될 수 있다.
일 실시예에서, 상기 컨텍스트 영역에 기록된 상기 컨텍스트는 적어도 포인터를 포함하고, 상기 포인터를 조작함으로써 상기 큐에 대한 조작을 수행하도록 구성될 수 있다.
일 실시예에서, 상기 큐는 상기 송신 코어에 대응하는 송신측 메일박스의 상기 컨텍스트 영역에 기록된 제1 컨텍스트와 상기 수신 코어에 대응하는 수신측 메일박스의 상기 컨텍스트 영역에 기록된 제2 컨텍스트가 쌍을 이루도록 구성될 수 있다.
일 실시예에서, 상기 제1 컨텍스트 및 상기 제2 컨텍스트는 각각 적어도 상기 큐의 구조를 표현하기 위한 포인터를 포함하고, 상기 제1 컨텍스트의 상기 포인터가 변경되면 상기 제2 컨텍스트의 상기 포인터를 동일하게 변경하고, 상기 제2 컨텍스트의 상기 포인터가 변경되면 상기 제1 컨텍스트의 상기 포인터를 동일하게 변경하도록 구성될 수 있다.
일 실시예에서, 상기 큐의 구현에 있어서 데이터는 수신측 메일박스에만 저장되도록 구성될 수 있다.
본 개시의 다른 일 측면에 따르면, 프로세스 간 통신을 수행하는 방법이 개시된다. 상기 방법은, 복수의 코어들 중 송신 코어와 수신 코어 사이의 프로세스 간 통신을 위해 IPC 커맨드를 생성하는 단계; 상기 송신 코어를 포함하는 클러스터에 대응하는 제1 메일박스에 상기 IPC 커맨드를 전송하는 단계; 상기 제1 메일박스에 의해, 상기 IPC 커맨드에 적어도 부분적으로 기초하여 수신측 메일박스를 식별하는 목적지 값을 산출하는 단계; 및 상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 동일하면 시스템 버스를 거치지 않고 상기 프로세스 간 통신을 수행하고, 상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 상이한 제2 메일박스이면 상기 시스템 버스를 거쳐서 상기 프로세스 간 통신을 수행하는 단계를 포함할 수 있다.
본 개시의 다양한 실시예들에 의하면, IPC 작업의 효율성을 높일 수 있는 하드웨어 아키텍처를 구현할 수 있다.
본 개시의 다양한 실시예들에 의하면, IPC 작업의 능률을 향상시킴으로써 전체적인 컴퓨팅 성능을 개선할 수 있다.
본 개시의 다양한 실시예들에 의하면, 메일박스라고 지칭되는 코프로세서를 통해 IPC를 수행할 수 있다.
본 개시의 다양한 실시예들에 의하면, 메일박스 내의 저장소를 활용하여 IPC를 수행함으로써, 시스템 버스의 부하를 저감할 수 있다.
본 개시의 다양한 실시예들에 의하면, 메일박스 내의 저장소를 SRAM(Static Random Access Memory)으로 구현함으로써, 상대적으로 저렴한 가격으로 IPC 성능 개선을 효과적으로 이룰 수 있다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
본 명세서에 첨부되는 다음의 도면들은 본 개시의 바람직한 실시예를 예시하는 것이며, 발명의 상세한 설명과 함께 본 개시의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 개시는 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.
도 1은 본 개시의 일 실시예에 따른 전자 장치에 포함되는 하드웨어 아키텍처를 개념적으로 도시한 블록도이다.
도 2는 본 개시의 일 실시예에 따른 전자 장치의 메일박스를 개념적으로 도시한 블록도이다.
도 3A 및 도 3B는 본 개시의 일 실시예에 따른 전자 장치의 메일박스에 포함된 저장소를 개념적으로 도시한 예시도이다.
도 4는 본 개시의 일 실시예에 따라 동일한 클러스터 내의 코어들 사이에서 프로세스 간 통신이 수행되는 동작을 설명하기 위한 도면이다.
도 5는 본 개시의 일 실시예에 따라 상이한 클러스터 내의 코어들 사이에서 프로세스 간 통신이 수행되는 동작을 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시예에 따라 프로세스 간 통신을 수행하는 방법에 관한 순서도이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 전자 장치에 포함되는 하드웨어 아키텍처를 개념적으로 도시한 블록도이다. 도 1을 참조하면, 본 개시의 일 실시예에 따른 전자 장치의 하드웨어 아키텍처는 복수의 코어들을 포함하는 멀티코어 아키텍처 또는 매니코어 아키텍처일 수 있다. 매니코어 프로세서는 높은 수준의 병렬 처리를 위해 설계된 특수한 종류의 멀티코어 프로세서로 볼 수 있다. 따라서 본 개시는 매니코어 아키텍처와 멀티코어 아키텍처를 특별히 구별하여 한정적인 의미로 사용하지 않는다. 다만, 설명의 편의를 위해, 본 개시의 예시적인 실시예들은 통상적으로 매니코어 아키텍처로 알려진 구조에 기초하여 설명된다.
또한, 본 개시에서 사용된 코어(core)라는 용어는 컴퓨팅 시스템의 명령어를 처리하기 위한 논리회로로서 프로세서(processor)와 같은 의미로 사용된다. 각각의 코어는 하나의 CPU(Central Processing Unit)일 수 있다. 대안적으로, 하나의 CPU가 여러 개의 코어들을 포함할 수 있으며, 하나의 CPU 내의 각각의 코어는 운영체제에게는 독립된 프로세서로 인식될 수 있다. 따라서 본 개시는 복수의 CPU를 포함하는 하드웨어 아키텍처, 복수의 프로세서를 포함하는 하드웨어 아키텍처, 및 복수의 코어를 포함하는 하드웨어 아키텍처를 특별히 구별하거나 한정하여 실시예를 설명하지 않는다. 다만, 설명의 편의를 위해, 본 개시의 예시적인 실시예들은 통상적으로 복수의 코어를 포함하는 하드웨어 아키텍처에 기초하여 설명된다.
프로세스(process)는 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행되는 단위를 의미할 수 있다. 다시 말해, 프로세스는 소프트웨어 측면의 용어이다. 반면에 프로세서 또는 코어는 하드웨어 측면의 용어이다. 운영체제는 소프트웨어 계층에서 요청된 프로세스 간 통신(Inter-Process Communication; IPC)을 수행하기 위해 하드웨어 아키텍처로 하여금 프로세서들 사이에서의 데이터 전달이 이루어지도록 한다. 운영체제는 하드웨어 아키텍처에 따라 IPC를 처리하는 방식을 적절히 구현할 수 있다. 본 개시에 따르면 메일박스라는 코프로세서를 이용한 새로운 하드웨어 아키텍처를 구현하기 때문에, 운영체제로 하여금 종래의 기술보다 개선된 IPC 처리 방식을 수행할 수 있도록 지원한다. 다만, 본 개시에 따른 하드웨어 아키텍처와 운영체제 사이의 인터페이싱 방식은 운영체제의 커널 설계 방식에 따라 적절히 구현될 수 있으므로, 본 개시에서 운영체제의 커널을 어떻게 설계할 것인지에 대해서는 그 설명을 생략한다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 전자 장치에 포함되는 하드웨어 아키텍처(100)는 복수의 클러스터들(110-1, 110-2 내지 110-n)과, 메일박스(120-1, 120-2 내지 120-n)와, 시스템 버스(130)를 포함할 수 있다. 본 개시에서 사용되는 전자 장치라는 용어는 이러한 하드웨어 아키텍처(100)를 포함하는 컴퓨팅 장치(예: 퍼스널 컴퓨터, 스마트폰, 태블릿, 랩탑 등)일 수 있다. 대안적으로, 본 개시에서 사용되는 전자 장치라는 용어는 이들 컴퓨팅 장치에 포함되는 컴포넌트(예: 시스템온칩(SoC), 임베디드 시스템 등)일 수 있다.
도 1을 참조하면, 복수의 클러스터들(110-1, 110-2 내지 110-n)은 각각 복수의 코어들을 포함한다. 예를 들어, 제1 클러스터(110-1)는 x개의 코어들(코어 1-1 내지 코어 1-x)을 포함할 수 있고, 제2 클러스터(110-2)는 y개의 코어들(코어 2-1 내지 코어 2-y)을 포함할 수 있고, 제n 클러스터(110-n)는 z개의 코어들(코어 n-1 내지 코어 n-z)을 포함할 수 있다. 일반적으로 매니코어 프로세서는 복잡한 병렬 처리를 수행하기 위해 설계되며, 간단하고 독립적인 프로세서 코어들을 수십 개 내지 수천 개를 포함할 수 있다. 또한, 인공지능(AI)과 머신러닝(ML) 애플리케이션을 위한 대규모 병렬 컴퓨팅이 부상하면서 거의 백만 개에 달하는 코어를 갖는 하드웨어 아키텍처도 등장하였다. 따라서 도 1에 도시된 예시에서 n, x, y, z는 예시적인 값일 뿐, 특정 정수 값 범위로 한정되지 않는다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 하드웨어 아키텍처(100)는 복수의 클러스터들(110-1, 110-2 내지 110-n) 각각에 고유하게 대응하는 메일박스(120-1, 120-2 내지 120-n)를 포함할 수 있다. 예를 들어, 제1 클러스터(110-1)는 제1 메일박스(120-1)와 대응하고, 제2 클러스터(110-2)는 제2 메일박스(120-2)와 대응하고, 제n 클러스터(110-n)는 제n 메일박스(120-n)와 대응할 수 있다. 고유하게(uniquely) 대응한다는 것은 각각의 클러스터가 단일의 메일박스에 대응한다는 의미이다. 다시 말해, 하나의 메일박스와 하나의 클러스터가 서로 대응하도록 구성된다.
메일박스(120-1, 120-2 내지 120-n)는 여러 개의 코어들로 구성된 클러스터(110-1, 110-2 내지 110-n)마다 공유하는 구조로서, 동일한 클러스터 안에 있는 코어들 간의 통신은 시스템 버스(130)를 통하지 않고 메일박스(120-1, 120-2 내지 120-n) 내부의 저장소(122)에 데이터를 판독/기록함으로써 처리할 수 있다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 하드웨어 아키텍처(100)는 시스템 버스(130)를 포함할 수 있다. 시스템 버스(130)는 메일박스가 전자 장치 내의 다른 컴포넌트(예: 다른 메일박스)와 데이터를 송수신 할 수 있도록 하는 경로이다. 예컨대 시스템 버스(130)는 데이터 버스(data bus)일 수 있다. 데이터 버스는 프로세서가 메모리 또는 I/O 장치 등과 데이터를 송수신하기 위한 신호선들의 집합인데, 데이터 선의 수는 이들 컴포넌트들 사이에서 한 번에 전송할 수 있는 비트 수를 결정한다. 예를 들어, 데이터 버스의 폭이 32비트(bit)이면, 데이터 전송은 한 번에 32비트씩 가능하다. 다만, 시스템 버스의 폭이 32비트라는 것은 예시적인 값일 뿐이며 본 개시의 범위를 제한하지 않는다.
비록 도 1에 도시된 예시에서는 코어들과 시스템 버스(130) 사이에 직접 통신하는 경로(화살표)가 표시되어 있지는 않으나 이는 생략된 것일 뿐이다. 코어들(코어1-1 내지 코어n-z)이 시스템 버스(130)를 이용하여 다른 컴포넌트와 통신할 수 있음은 당연하다. 그러나, 본 개시의 실시예들에 따라 IPC를 구현함에 있어서 코어들은 시스템 버스(130)를 직접 사용하지 않게 되므로(본 개시의 실시예들에서는 시스템 버스(130)가 사용되는 경우에도 코어가 아닌 메일박스에 의해 시스템 버스(130)가 사용됨), 본 개시의 이해를 돕기 위해 도 1에서는 이러한 통신 경로를 표기하지 않았을 뿐이다.
본 개시의 실시예들에 따르면, IPC는 복수의 코어들 중 송신 코어와 수신 코어 사이에서 수행된다. 송신 코어와 수신 코어는 동일한 클러스터에 포함될 수도 있고, 상이한 클러스터에 포함될 수도 있다. 예를 들어, 도 1을 참조하면, 제1 클러스터에 포함된 코어들 사이의 IPC(예: 코어 1-1 내지 코어 1-x 사이의 IPC), 제2 클러스터에 포함된 코어들 사이의 IPC(예: 코어 2-1 내지 코어 2-y 사이의 IPC), 제n 클러스터에 포함된 코어들 사이의 IPC(예: 코어 n-1 내지 코어 n-z 사이의 IPC)는 송신 코어와 수신 코어가 동일한 클러스터에 포함되는 경우이다. 반면에, 도 1을 참조하면, 제1 클러스터에 포함된 코어로부터 제2 내지 제n 클러스터에 포함된 코어들 사이의 IPC(예: 코어 1-1로부터 코어 2-y)로의 IPC 등)는 송신 코어와 수신 코어가 상이한 클러스터에 포함되는 경우이다.
본 개시의 일 실시예에 따르면, 송신 코어와 수신 코어가 동일한 클러스터에 포함될 경우, 동일한 클러스터에 대응하는 메일박스가 시스템 버스를 거치지 않고 IPC를 수행하도록 구성된다. 이에 대해서는 도 4를 참조하여, 더욱 상세히 후술하기로 한다.
본 개시의 일 실시예에 따르면, 송신 코어와 수신 코어가 상이한 클러스터들에 포함될 경우, 상이한 클러스터들 각각에 대응하는 메일박스들이 시스템 버스를 거쳐서 IPC를 수행하도록 구성된다. 이에 대해서는 도 5를 참조하여, 더욱 상세히 후술하기로 한다.
도 2는 본 개시의 일 실시예에 따른 전자 장치의 메일박스를 개념적으로 도시한 블록도이다. 도 2를 참조하면, 본 개시의 일 실시예에 따른 전자 장치의 메일박스는 컨트롤러(121)와 저장소(122)를 포함할 수 있다. 컨트롤러(121)와 저장소(122)는 결합하여 코프로세서로서 동작할 수 있으며, 이는 코어들 사이의 IPC를 처리하기 위한 보조적인 논리 회로의 일종으로 이해될 수 있다.
도 2를 참조하면, 컨트롤러(121)는 FSM(Finite State Machine)을 포함할 수 있다. FSM은 컴퓨터 프로그램과 전자 논리 회로를 설계하는 데에 쓰이는 수학적 모델로서, 유한 상태 기계라고 부를 수 있다. FSM은 유한한 개수의 상태를 가질 수 있는 오토마타, 즉 추상 기계일 수 있다. 이러한 기계는 한 번에 오로지 하나의 상태만을 가지게 되며, 입력 값에 의해 이벤트(event)가 발생하면 한 상태에서 다른 상태로 변화하는 전이(transition)가 이루어지며, 이러한 전이 과정에서 출력 값을 생성할 수 있다. 본 개시의 일 실시예에 따른 하드웨어 아키텍처(100)의 메일박스(120)는, 도 4 및 도 5 등을 참조하여 후술하는 바와 같이 이벤트의 유형이나 상태의 종류가 복잡하지 않기 때문에 컨트롤러(121)를 FSM으로 구현함으로써 효율성을 높일 수 있다. 예를 들어, 컨트롤러(121)는 FSM으로 동작하며 IPC 작업을 처리할 수 있는데, 저장소(122)에 데이터를 기록하거나 판독할 때마다 포인터를 체크하여 데이터를 수신해야 할 코어에 즉시 인터럽트를 전달하도록 구성될 수 있다.
도 2를 참조하면, 저장소(122)는 데이터 영역(123)과 컨텍스트 영역(124)을 포함할 수 있다. 데이터 영역(123)에는 프로세서 코어가 처리하는 대상, 즉 데이터를 저장할 수 있다. 컨텍스트 영역(124)에는 포인터(pointer)나 주소(address)와 같은 정보를 포함하는 컨텍스트(context)를 저장할 수 있다. 컨텍스트의 포인터는 큐 포인터(queue pointer)일 수 있으며, 이러한 큐 포인터는 큐의 연결 구조를 설정할 수 있다. 저장소(122)에 저장되는 데이터와 컨텍스트의 구체적인 예는 이하 도 3A 및 도 3B를 참조하여 설명된다.
도 3A 및 도 3B는 본 개시의 일 실시예에 따른 전자 장치의 메일박스에 포함된 저장소를 개념적으로 도시한 예시도이다. 도 3A 및 도 3B를 참조하면, 데이터 영역(123)은 적어도 하나의 데이터(D1, D2, D3)를 저장하고, 컨텍스트 영역(124)은 적어도 하나의 컨텍스트(C1, C2, C3)를 저장할 수 있다. 도 3A 및 도 3B에 명시적으로 도시되지는 않았으나, 도면에 나타난 데이터와 컨텍스트 외에 추가적인 데이터 및/또는 컨텍스트가 더 포함될 수 있다.
본 개시의 실시예들에 따른 하드웨어 아키텍처(100)에서 메일박스(120) 내의저장소(122)는 IPC를 위한 큐를 구현하는 목적으로 사용될 수 있다. 큐는 데이터의 입력 순서에 따라 출력 순서가 정해지는 선입선출(FIFO) 데이터 구조(data structure)이다. 본 개시의 실시예들에 따르면, 다수의 코어들 사이에서 다량의 IPC가 병렬적으로 이루어질 수 있기 때문에, IPC를 누락하지 않고 순차적으로 처리하기 위하여 큐 형태의 데이터 구조가 사용될 수 있다. 이러한 기술적 배경 하에, 데이터 영역(123)은 큐의 데이터를 저장하고, 컨텍스트 영역(124)은 큐의 연결 구조 및 IPC와 관련된 기타 정보를 저장하도록 구성될 수 있다.
컨텍스트(C1, C2, C3)는 포인터(pointer), 송신자(sender), 수신자(receiver), 주소(address) 중 적어도 일부를 포함할 수 있다.
도 3A을 참조하여 설명될 본 개시의 일 실시예에 따르면, 포인터는 헤드(head) 포인터 및 테일(tail) 포인터를 포함할 수 있다. 구체적으로, 헤드 포인터는 큐의 선단(front)을 가리키는 정보이고, 테일 포인터는 큐의 후단(rear)을 가리키는 정보일 수 있다. 큐의 헤드 포인터를 통해 출력 연산, 예컨대 디큐(dequeue) 연산을 수행할 수 있다. 큐의 테일 포인터를 통해 입력 연산, 예컨대 인큐(enqueue) 연산을 수행할 수 있다. 송신자는 데이터를 송신한 코어, 즉 송신 코어와 관련된 정보를 식별하는 값일 수 있다. 수신자는 데이터를 수신할 코어, 즉 수신 코어와 관련된 정보를 식별하는 값일 수 있다. 주소는 그 컨텍스트에 대응하는 데이터가 저장된 위치를 식별하는 값일 수 있다. 포인터, 송신자, 수신자, 주소는 각각 하나의 데이터 단위만 포함하는 정보일 수도 있으나, 이들이 각각 복수의 데이터 단위를 포함하는 정보일 수도 있다. 이를테면, 포인터가 헤드 포인터와 큐 포인터를 포함하는 것처럼, 송신자, 수신자, 주소도 복수의 데이터 단위를 포함할 수 있다. 포인터를 통해 큐의 연결구조를 확인할 수 있으며, 송신자와 수신자를 통해 IPC에 관한 정보 중 송신 코어와 수신 코어에 관한 정보를 확인할 수 있고, 주소를 통해 데이터가 저장된 위치(즉 데이터의 어드레스)를 확인할 수 있다.
예를 들어, 도 3A에 도시된 컨텍스트 C1이 하나의 큐를 표현하고, 이러한 큐에 각각 데이터 D1, D2, D3이 포함된 경우를 가정하자. 만약 D1, D2, D3가 D1->D2->D3의 순서로 연결된 큐를 구성하고 있다면, C1의 포인터의 헤드 포인터는 D1이 저장된 주소를 나타낼 수 있고, C1의 포인터의 테일 포인터는 D3가 저장된 주소를 나타낼 수 있다. 또한, 큐의 사이즈를 표현하기 위하여, 컨텍스트는 큐 사이즈에 관한 정보를 더 포함할 수도 있다.
도 3B를 참조하여 설명될 본 개시의 다른 일 실시예에 따르면, 포인터는 큐 포인터일 수 있다. 구체적으로, 큐 포인터는 특정 큐 노드에 대한 선행 노드 또는 후행 노드를 가리키는 주소 값을 포인터로서 저장할 수 있다. 일반적으로 큐 포인터는 후행 큐 노드를 가리키는 주소 값을 포인트로 저장한다. 송신자는 데이터를 송신한 코어, 즉 송신 코어와 관련된 정보를 식별하는 값일 수 있다. 수신자는 데이터를 수신할 코어, 즉 수신 코어와 관련된 정보를 식별하는 값일 수 있다. 주소는 그 컨텍스트에 대응하는 데이터가 저장된 위치를 식별하는 값일 수 있다. 포인터, 송신자, 수신자, 주소는 각각 하나의 데이터 단위만 포함하는 정보일 수도 있으나, 이들이 각각 복수의 데이터 단위를 포함하는 정보일 수도 있다. 포인터를 통해 큐의 연결구조를 확인할 수 있으며, 송신자와 수신자를 통해 IPC에 관한 정보 중 송신 코어와 수신 코어에 관한 정보를 확인할 수 있고, 주소를 통해 데이터가 저장된 위치(즉 데이터의 어드레스)를 확인할 수 있다.
예를 들어, 도 3에 도시된 컨텍스트 C1, C2, C3가 각각 데이터 D1, D2, D3를 참조하는 경우를 가정하자. 이러한 예시적인 상황에서, C1에 저장된 주소 필드는 D1이 저장된 주소 값일 수 있고, C2에 저장된 주소 필드는 D2가 저장된 주소 값일 수 있으며, C3에 저장된 주소 필드는 D3가 저장된 주소 값일 수 있다. 만약 D1, D2, D3가 D2->D1->D3의 순서로 연결된 큐를 구성하고 있다면, C2에 저장된 포인터 필드는 후속 큐 노드의 컨텍스트에 해당하는 C1이 저장된 주소 값일 수 있고, C1에 저장된 포인터 필드는 후속 큐 노드의 컨텍스트에 해당하는 C3가 저장된 주소 값일 수 있으며, C3에 저장된 포인터 필드는 후속 큐 노드가 없다는 의미에서 NULL 값을 저장할 수 있다.
한편, 본 개시의 일 실시예에 따르면 저장소(122)는 SRAM(Static Random Access Memory)을 포함할 수 있다. SRAM은 DRAM에 비하여 고속이므로 CPU 내부의 기억 장치(예: 파이프라인, 프로세서 레지스터, CPU 캐시 등)와 같이 속도를 중요시하는 영역에서 주로 활용된다. 또한, 저속의 저용량 SRAM은 저전력과 낮은 비용이 중요한 영역에서 주로 활용된다. 다시 말해, IPC를 처리하기 위한 메일박스(120) 내의 저장소(122)를 구현함에 있어서 SRAM은 유효 적절한 저비용의 고효율 구조이다. 다만, 저장소(122)를 SRAM으로 구현하는 것은 본 개시의 예시적인 일 실시예에 불과하므로, 본 개시의 범주가 이에 제한되는 것은 아니다. 예컨대, SRAM이 아니라 플립플롭(flip-flop)과 같은 구조로도 저장소(122)를 구현할 수 있다.
이하에서는 도 4 및 도 5를 참조하여, 본 개시의 실시예들에 따라 송신 코어와 수신 코어 사이에서 IPC를 수행하는 동작에 대해 설명한다.
도 4는 본 개시의 일 실시예에 따라 동일한 클러스터 내의 코어들 사이에서 프로세스 간 통신이 수행되는 동작을 설명하기 위한 도면이다. 도 5는 본 개시의 일 실시예에 따라 상이한 클러스터 내의 코어들 사이에서 프로세스 간 통신이 수행되는 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 송신 코어(예: 코어 i-1)로부터 수신 코어(예: 코어 i-2)로의 IPC를 수행하는 동작을 가정할 수 있다. 이 경우 송신 코어(예: 코어 i-1)와 수신 코어(예: 코어 i-2)는 동일한 클러스터(110-i)에 속한다.
도 4를 참조하면, 송신 코어(코어 i-1)가 IPC 커맨드를 생성하면서 IPC 동작이 개시된다. 여기서 IPC 커맨드는 데이터(data) 및 컨텍스트 인덱스(context index)를 포함할 수 있다. 데이터는 수신 코어(코어 i-2)로 전달할 데이터를 나타내고, 컨텍스트 인덱스는 해당 IPC 동작과 관련하여 판독할 컨텍스트가 저장된 위치를 식별한다.
생성된 IPC 커맨드는 송신 코어(코어 i-1)로부터 송신 코어가 속한 클러스터(110-i)에 대응하는 메일박스(120-i)로 전송된다. 메일박스(120-i) 내의 컨트롤러(121)는 전송된 IPC 커맨드를 수신하여, 메일박스(120-i) 내의 저장소(122)로부터 컨텍스트를 판독한다. 구체적으로, 메일박스(120-i) 내의 컨트롤러(121)는 IPC 커맨드에 포함된 컨텍스트 인덱스에 대응하는 컨텍스트(Ci)를 저장소(122)의 컨텍스트 영역(124)으로부터 판독하도록 구성될 수 있다.
다음으로, 메일박스(120-i)의 컨트롤러(121)는, 판독된 컨텍스트(Ci)에 적어도 부분적으로 기초하여 목적지(destination) 값을 산출하도록 구성될 수 있다. 목적지 값은 수신 코어(코어 i-2)를 포함하는 클러스터(110-i)에 대응하는 수신측 메일박스(120-i)를 식별하기 위한 값일 수 있다.
본 개시의 일 실시예에 따르면, 컨텍스트는 적어도 포인터, 수신자, 주소를 포함할 수 있다. 목적지 값은 컨텍스트 영역으로부터 판독한 컨텍스트(Ci)에 저장된 포인터, 수신자, 주소에 기초하여 산출될 수 있다. 예를 들어, 목적지 값을 산출하기 위한 함수 f에 대하여 수신자, 주소, 포인터를 매개변수로 전달함으로써 목적지 값이 계산될 수 있다. 다시 말해, Destination = f(receiver, address, pointer)의 함수에 의해 목적지 값이 계산될 수 있다.
도 4에 도시된 예시는 앞서 설명한 바와 같이 목적지 값에 의해 식별되는 수신측 메일박스(120-i)가 송신측 메일박스(120-i)와 동일한 경우이다. 이 경우, 송신측 메일박스(수신측 메일박스이기도 함)의 컨트롤러(121)는, IPC 커맨드에 포함된 데이터(Di)를 그 메일박스(120-i)의 저장소(122)의 데이터 영역(123)에 기록한다.
다음으로, 송신측 메일박스(120-i)의 컨트롤러(121)는, 저장소(122)의 컨텍스트 영역(124)에 저장된 컨텍스트의 포인터를 갱신함으로써 큐의 연결구조를 설정할 수 있다. 예를 들어, 큐의 헤드 포인터 및/또는 테일 포인터를 포함하는 포인터에 관한 정보를 수정함으로써 큐의 연결구조를 설정할 수 있다.
다음으로, 송신측 메일박스(120-i)의 컨트롤러(121)는, 수신 코어(코어 i-2)에 인터럽트를 발생시켜서 수신 코어(코어 i-2)로 하여금 큐로부터 데이터(Di)를 가져올 수 있도록 구성된다.
도 4를 참조하여 설명된 전술된 IPC 동작에 따르면, 시스템 버스(130)를 전혀 사용하지 않고도 송신 코어(코어 i-1)로부터 수신 코어(코어 i-2)로 IPC 작업을 수행할 수 있다. 이처럼, 본 개시의 실시예에 따르면, 송신측 메일박스(120-i)와 수신측 메일박스(120-i)가 동일한 경우 해당 메일박스(120-i)에 의해 IPC 작업을 수행할 수 있으므로 시스템 버스의 부하를 줄일 수 있는 이점이 있다.
도 5를 참조하면, 송신 코어(예: 코어 i-1)로부터 수신 코어(예: 코어 j-1)로의 IPC를 수행하는 동작을 가정할 수 있다. 이 경우 송신 코어(코어 i-1)는 제i 클러스터(110-i)에 속하는 반면, 수신 코어(코어 j-1)는 제j 클러스터(110-j)에 속하므로, 서로 상이한 클러스터에 속한다고 할 수 있다.
도 5를 참조하면, 송신 코어(코어 i-1)가 IPC 커맨드를 생성하면서 IPC 동작이 개시된다. 여기서 IPC 커맨드는 데이터 및 컨텍스트 인덱스를 포함할 수 있다. 데이터는 수신 코어(코어 j-1)로 전달할 데이터를 나타내고, 컨텍스트 인덱스는 해당 IPC 동작과 관련하여 판독할 컨텍스트가 저장된 위치를 식별한다.
생성된 IPC 커맨드는 송신 코어(코어 i-1)로부터 송신 코어가 속한 클러스터(110-i)에 대응하는 메일박스(120-i)로 전송된다. 메일박스(120-i) 내의 컨트롤러(121)는 전송된 IPC 커맨드를 수신하여, 메일박스(120-i) 내의 저장소(122)로부터 컨텍스트를 판독한다. 구체적으로, 메일박스(120-i) 내의 컨트롤러(121)는 IPC 커맨드에 포함된 컨텍스트 인덱스에 대응하는 컨텍스트(Ci)를 저장소(122)의 컨텍스트 영역(124)으로부터 판독하도록 구성될 수 있다.
다음으로, 메일박스(120-i)의 컨트롤러(121)는, 판독된 컨텍스트(Ci)에 적어도 부분적으로 기초하여 목적지 값을 산출하도록 구성될 수 있다. 목적지 값은 수신 코어(코어 j-1)를 포함하는 클러스터(110-j)에 대응하는 수신측 메일박스(120-j)를 식별하기 위한 값일 수 있다.
앞서 도 4를 참조하여 설명된 바와 유사하게, 본 개시의 일 실시예에 따르면, 컨텍스트는 적어도 포인터, 수신자, 주소를 포함할 수 있다. 목적지 값은 컨텍스트 영역으로부터 판독한 컨텍스트(Ci)에 저장된 포인터, 수신자, 주소에 기초하여 산출될 수 있다. 예를 들어, 목적지 값을 산출하기 위한 함수 f에 대하여 수신자, 주소, 포인터를 매개변수로 전달함으로써 목적지 값이 계산될 수 있다. 다시 말해, Destination = f(receiver, address, pointer)의 함수에 의해 목적지 값이 계산될 수 있다.
도 5에 도시된 예시는 앞서 설명한 바와 같이 목적지 값에 의해 식별되는 수신측 메일박스(120-j)가 송신측 메일박스(120-i)와 상이한 경우이다. 이 경우, 송신측 메일박스(120-i)의 컨트롤러(121)는, IPC 커맨드에 포함된 데이터(Dj)를 시스템 버스(130)를 거쳐서 수신측 메일박스(120-j)로 전송하도록 구성될 수 있다.
다음으로, 수신측 메일박스(120-j)의 컨트롤러(121)는, IPC 커맨드에 포함된 데이터(Dj)를 수신측 메일박스(120-j)의 저장소(122)의 데이터 영역(123)에 기록한다.
다음으로, 수신측 메일박스(120-j)의 컨트롤러(121)는, 저장소(122)의 컨텍스트 영역(124)에 저장된 컨텍스트의 포인터를 갱신함으로써 큐의 연결구조를 설정할 수 있다. 예를 들어, 도 3A를 참조하여 설명된 본 개시의 일 실시예에 따르면, 헤드 포인터 및/또는 테일 포인터를 포함하는 포인터에 관한 정보를 수정함으로써 큐의 연결구조를 설정할 수 있다. 구체적으로, 새로운 데이터가 입력될 경우 테일 포인터를 수정하고, 기존에 큐에 저장된 데이터를 출력할 경우 헤드 포인터를 수정할 수 있다. 또는, 도 3B를 참조하여 설명된 본 개시의 다른 일 실시예에 따르면, 큐의 마지막 노드(rear)를 가리키는 포인터가 지시하는 곳의 컨텍스트의 포인터를 수정할 수 있다. 예컨대, 해당 컨텍스트의 포인터를 데이터(Dj)에 대응하는 컨텍스트(Cj)를 가리키도록 수정할 수 있다. 그리고 큐의 마지막 노드를 가리키는 포인터에 컨텍스트(Cj)의 주소를 할당하여 새롭게 추가된 마지막 노드로 처리함으로써 후속 입력에 대비할 수 있다.
다음으로, 수신측 메일박스(120-j)의 컨트롤러(121)는, 수신 코어(코어 j-1)에 인터럽트를 발생시켜서 수신 코어(코어 j-1)로 하여금 큐로부터 데이터(Dj)를 가져올 수 있도록 구성된다.
본 개시의 실시예들에 의하면, 메일박스(120) 내의 저장소(122)의 컨텍스트 영역(124)과 데이터 영역(123)을 하나의 쌍으로 처리함으로써 큐를 구현할 수 있음은 앞서 살펴본 바와 같다. 예를 들어, 도 3A를 참조하여 설명한 바와 같이, 데이터 영역(123)에 기록된 데이터(D1, D2, D3)와 컨텍스트 영역(124)에 기록된 컨텍스트 하나가 매핑되어 큐를 구현할 수 있다. 또는, 도 3B를 참조하여 설명한 바와 같이, 데이터 영역(123)에 기록된 데이터(D1, D2, D3)와 컨텍스트 영역(124)에 기록된 컨텍스트(C1, C2, C3)는 쌍을 이루어 큐를 구현할 수 있다. 이들 방식으로 큐를 구현할 때 메일박스(120) 내의 저장소(122)를 SRAM으로 구현하면, 총 2회의 판독(read) 동작을 통해 큐 조작이 가능하다. 예컨대, 컨텍스트 영역에 대한 1차 판독을 수행하여 큐의 연결 구조에 관한 정보를 나타내는 포인터 값과 데이터가 저장된 위치를 나타내는 주소 값을 획득하고, 이에 기초하여 데이터 영역에 대한 2차 판독을 수행함으로써 큐를 간접적으로 조작할 수 있다.
한편 큐의 연결 구조에 대한 조작은 컨텍스트(C1, C2, C3)에 포함된 포인터를 조작함으로써 수행될 수 있다. 도 3A를 통해 설명된 바와 같이 특정 컨텍스트의 헤드 포인터 및 테일 포인터를 수정함으로써 큐의 연결 구조를 수정하도록 조작할 수도 있으며, 또는 도 3B를 통해 설명된 바와 같이 큐의 마지막 노드를 나타내는 컨텍스트의 포인터를 수정함으로써 새로 추가되는 큐 노드를 처리할 수도 있다.
본 개시의 일 실시예에 의하면, 큐는 송신 코어에 대응하는 송신측 메일박스의 컨텍스트 영역에 기록된 제1 컨텍스트와 수신 코어에 대응하는 수신측 메일박스의 컨텍스트 영역에 기록된 제2 컨텍스트가 쌍을 이루도록 구성될 수 있다. 보다 구체적으로, 본 개시의 일 실시예에 의하면, 제1 컨텍스트 및 제2 컨텍스트는 각각 적어도 큐의 구조를 표현하기 위한 포인터(예: 헤드 포인터 및/또는 테일 포인터)를 포함하고, 제1 컨텍스트의 포인터가 변경되면 제2 컨텍스트의 포인터를 동일하게 변경하고, 제2 컨텍스트의 포인터가 변경되면 제1 컨텍스트의 포인터를 동일하게 변경하도록 구성될 수 있다. 이는 하나의 큐에 대해 서로 다른 코어가 문제없이 데이터를 송신/수신할 수 있도록 하기 위해 제1 컨텍스트와 제2 컨텍스트가 쌍을 이루어서 포인터를 동일하게 유지하는 것으로 이해될 수 있다.
예컨대, 도 4를 참조하여 설명된 바와 같이 송신측 메일박스(120-i)와 수신측 메일박스(120-i)가 동일한 경우이든, 도 5를 참조하여 설명된 바와 같이 송신측 메일박스(120-i)와 수신측 메일박스(120-j)가 상이한 경우이든 무관하게 큐에 대한 포인터의 조작은 다음과 같이 진행될 수 있다.
송신측 메일박스 관점에서 일련의 동작을 먼저 살펴본다. 송신측 메일박스(120-i)가 송신 코어로부터 IPC 커맨드를 수신하면, 이어서 송신측 메일박스(120-i)는 저장소(122)에서 컨텍스트 판독 및 목적지(예: 수신측 메일박스의 데이터 주소 및 컨텍스트 주소) 계산을 수행한다. 송신측 메일박스(120-i)는 그 후 컨텍스트를 수정하여 저장소(122)에 기록한다. 이 경우 테일 포인터를 증가시켜서 컨텍스트를 수정함으로써, 큐에 새로운 데이터가 추가되었음을 나타낼 수 있다. 그리고 송신측 메일박스(120-i)는 수신측 메일박스(120-i 또는 120-j)에 데이터를 전송한다. 수신측 메일박스(120-i 또는 120-j)는 수신한 데이터를 자신의 저장소(122)에 기록한다. 이 때, 큐의 구현에 있어서 데이터는 수신측 메일박스의 데이터 영역에만 저장되고, 수신측 메일박스에는 저장되지 않을 수 있다. 송신측 메일박스(120-i)는 수신측 메일박스(120-i 또는 120-j)에 컨텍스트를 전송하는데, 이때 전송되는 컨텍스트는 앞서 설명된 바와 같이 테일 포인터가 증가된 컨텍스트이다. 따라서 수신측 메일박스(120-i 또는 120-j)가 이러한 컨텍스트를 자신의 저장소(122)에 기록하게 되면 테일 포인터가 증가된 상태의 컨텍스트를 저장할 수 있게 되며, 그에 따라 제1 컨텍스트와 제2 컨텍스트는 서로 동일한 포인터를 유지할 수 있다. 수신측 메일박스(120-i 또는 120-j)는 수신 코어에 인터럽트 발생시켜 수신 코어로 하여금 IPC를 수행하도록 할 수 있다.
이어서, 수신측 메일박스 관점에서 일련의 동작을 설명한다. 수신측 메일박스(120-i 또는 120-j)는 수신 코어로부터 커맨드를 수신한다. 그 후 수신측 메일박스(120-i 또는 120-j)는 자신의 저장소(122)로부터 커맨드와 연관된 컨텍스트를 판독하고 목적지(예: 수신측 메일박스의 데이터 주소 및 송신측 메일박스의 컨텍스트 주소)를 계산한다. 수신측 메일박스(120-i 또는 120-j)는 컨텍스트를 수정하여 메모리에 기록하는데, 이때 헤드 포인터를 증가시켜서 컨텍스트를 수정함으로써, 큐에서 데이터가 삭제됨을 나타낼 수 있다. 수신측 메일박스(120-i 또는 120-j)는 저장소(122)로부터 데이터를 판독하여 코어에 전달한다. 그 후 수신측 메일박스(120-i 또는 120-j)는 송신측 메일박스(120-i)에 컨텍스트를 전송하는데, 이때 전송되는 컨텍스트는 앞서 설명된 바와 같이 헤드 포인터가 증가된 컨텍스트이다. 따라서 송신측 메일박스(120-i)가 이러한 컨텍스트를 자신의 저장소(122)에 기록하게 되면 헤드 포인터가 증가된 상태의 컨텍스트를 저장할 수 있게 되며, 그에 따라 제1 컨텍스트와 제2 컨텍스트는 서로 동일한 포인터를 유지할 수 있다.
도 6은 본 개시의 일 실시예에 따라 프로세스 간 통신을 수행하는 방법에 관한 순서도이다. 도 6을 참조하면, 도 1 내지 도 5에 기초하여 설명된 본 개시의 예시적인 실시예들에 따른 하드웨어 아키텍처(100)를 포함하는 전자 장치에서 IPC를 수행하는 방법(200)이 예시된다.
본 개시의 일 실시예에 따른 예시적인 방법(200)은, 복수의 코어들 중 송신 코어와 수신 코어 사이의 프로세스 간 통신을 위해 IPC 커맨드를 생성하는 단계(S210)와, 송신 코어를 포함하는 클러스터에 대응하는 제1 메일박스(송신측 메일박스)에 IPC 커맨드를 전송하는 단계(S220)와, 제1 메일박스(송신측 메일박스)에 의해 IPC 커맨드에 적어도 부분적으로 기초하여 수신측 메일박스를 식별하는 목적지 값을 산출하는 단계(S230)와, 목적지 값에 기초한 소정의 판별 과정을 통해 IPC를 수행하는 단계(S240)를 포함할 수 있다.
단계 S210 내지 S230은 도 4 및 도 5를 참조하여 설명된 실시예들, 즉 동일한 클러스터 내의 코어들 사이에서 IPC가 수행되는 동작과 상이한 클러스터 내의 코어들 사이에서 IPC가 수행되는 동작에서 공통적으로 수행되는 단계일 수 있다.
단계 S240는 목적지 값에 의해 식별되는 수신측 메일박스가 제1 메일박스(송신측 메일박스)와 동일한지 여부에 따라 실행 경로가 분기될 수 있다. 예컨대, 목적지 값으로 식별되는 수신측 메일박스가 제1 메일박스(송신측 메일박스)와 동일한지 판단하고(S241), 만약 동일하면 시스템 버스(130)를 사용하지 않고 IPC를 수행하고(S242), 만약 동일하지 않으면 시스템 버스(130)를 사용하여 IPC를 수행할 수 있다(S243). 예를 들어, 단계 S242의 동작은 도 4를 참조하여 설명된 본 개시의 일 실시예에 따라 동일한 클러스터 내의 코어들 사이에서의 IPC 동작의 후속 동작일 수 있다. 예를 들어, 단계 S243의 동작은 도 5를 참조하여 설명된 본 개시의 일 실시예에 따라 상이한 클러스터 내의 코어들 사이에서의 IPC 동작의 후속 동작일 수 있다. 이들 동작에 대해서는 도 4 및 도 5를 참조하여 설명되었으므로, 여기에서는 자세한 설명을 생략한다.
한편, 도 6의 예시적인 실시예에 따른 방법(200)에는 구체적으로 도시되지 않은 동작 또는 단계라고 할지라도 앞서 도 1 내지 도 5를 참조하여 설명된 실시예들에 따른 전자 장치를 통해 구현할 수 있는 것들(예: 큐 조작 등)은 도 6의 실시예에 추가하여 실행될 수 있음은 당연하다. 이들 동작에 대해서는 도 1 내지 도 5를 참조하여 설명되었으므로, 여기에서는 자세한 설명을 생략한다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 하드웨어 아키텍처(100)를 포함하는 전자 장치일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (20)

  1. 프로세스 간 통신(Inter-Process Communication)을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치로서,
    복수의 클러스터(cluster)들 - 상기 복수의 클러스터들 각각은 복수의 코어(core)들을 포함함 -;
    복수의 메일박스(mailbox) - 상기 복수의 메일박스 각각은 상기 복수의 클러스터들 각각에 고유하게 대응하고, 상기 복수의 메일박스 각각은 컨트롤러 및 저장소를 포함하고, 상기 컨트롤러는 상기 저장소에 데이터를 기록 또는 판독할 때마다 상기 데이터를 수신할 코어에 인터럽트를 전달함 -; 및
    시스템 버스(system bus)
    를 포함하고,
    상기 프로세스 간 통신은 상기 복수의 코어들 중 송신 코어와 수신 코어 사이에서 수행되고,
    상기 송신 코어와 상기 수신 코어가 동일한 클러스터에 포함될 경우, 상기 동일한 클러스터에 대응하는 메일박스가 상기 시스템 버스를 거치지 않고 상기 프로세스 간 통신을 수행하도록 구성되고,
    상기 송신 코어와 상기 수신 코어가 제1 클러스터 및 상기 제1 클러스터와 상이한 제2 클러스터에 각각 포함될 경우, 상기 제1 클러스터에 대응하는 제1 메일박스 및 상기 제2 클러스터에 대응하는 제2 메일박스가 상기 시스템 버스를 거쳐서 상기 프로세스 간 통신을 수행하도록 구성된, 전자 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 저장소는 데이터 영역(data area)과 컨텍스트 영역(context area)을 포함하는, 전자 장치.
  4. 제3항에 있어서,
    상기 저장소는 SRAM(Static Random Access Memory)을 포함하는, 전자 장치.
  5. 제3항에 있어서,
    상기 컨트롤러는 FSM(Finite State Machine)을 포함하는, 전자 장치.
  6. 제3항에 있어서,
    상기 송신 코어는,
    IPC 커맨드를 생성하고,
    상기 송신 코어를 포함하는 제1 클러스터에 대응하는 상기 제1 메일박스에 상기 IPC 커맨드를 송신함으로써 상기 프로세스 간 통신을 개시하도록 구성된, 전자 장치.
  7. 제6항에 있어서,
    상기 IPC 커맨드는 데이터(data) 및 컨텍스트 인덱스(context index)를 포함하는, 전자 장치.
  8. 제7항에 있어서,
    상기 제1 메일박스의 상기 컨트롤러는, 상기 송신 코어로부터 상기 IPC 커맨드를 수신할 경우 상기 제1 메일박스의 상기 저장소의 상기 컨텍스트 영역으로부터 상기 컨텍스트 인덱스에 대응하는 컨텍스트를 판독하도록 구성된, 전자 장치.
  9. 제8항에 있어서,
    상기 제1 메일박스의 상기 컨트롤러는, 상기 판독된 컨텍스트에 적어도 부분적으로 기초하여, 상기 수신 코어를 포함하는 클러스터에 대응하는 수신측 메일박스를 식별하기 위한 목적지(destination) 값을 산출하도록 구성된, 전자 장치.
  10. 제9항에 있어서,
    상기 컨텍스트 영역에 기록된 상기 컨텍스트는 적어도 포인터(pointer), 수신자(receiver), 주소(address)를 포함하고,
    상기 목적지 값은 상기 포인터, 상기 수신자, 상기 주소에 기초하여 산출되는, 전자 장치.
  11. 제9항에 있어서,
    상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 동일한 경우,
    상기 제1 메일박스의 상기 컨트롤러는,
    상기 IPC 커맨드에 포함된 상기 데이터를 상기 제1 메일박스의 상기 저장소의 상기 데이터 영역에 기록하고,
    상기 제1 메일박스의 상기 저장소의 상기 컨텍스트 영역에 저장된 컨텍스트의 포인터를 갱신하고,
    상기 수신 코어에 인터럽트를 발생시키도록 구성된, 전자 장치.
  12. 제9항에 있어서,
    상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 상이한 제2 메일박스인 경우,
    상기 제1 메일박스의 상기 컨트롤러는,
    상기 IPC 커맨드에 포함된 상기 데이터를 상기 시스템 버스를 거쳐서 상기 제2 메일박스로 전송하도록 구성된, 전자 장치.
  13. 제12항에 있어서,
    상기 제2 메일박스의 상기 컨트롤러는,
    상기 IPC 커맨드에 포함된 상기 데이터를 상기 제2 메일박스의 상기 저장소의 상기 데이터 영역에 기록하고,
    상기 제2 메일박스의 상기 저장소의 상기 컨텍스트 영역에 저장된 컨텍스트의 포인터를 갱신하고,
    상기 수신 코어에 인터럽트를 발생시키도록 구성된, 전자 장치.
  14. 제3항에 있어서,
    상기 데이터 영역에 기록된 데이터와 상기 컨텍스트 영역에 기록된 컨텍스트는 큐(queue)를 구현하도록 구성된, 전자 장치.
  15. 제14항에 있어서,
    상기 컨텍스트 영역에 대한 1차 판독과 상기 데이터 영역에 대한 2차 판독을 통해 상기 큐를 조작하도록 구성된, 전자 장치.
  16. 제15항에 있어서,
    상기 컨텍스트 영역에 기록된 상기 컨텍스트는 적어도 포인터를 포함하고,
    상기 포인터를 조작함으로써 상기 큐에 대한 조작을 수행하도록 구성된, 전자 장치.
  17. 제14항에 있어서,
    상기 큐는 상기 송신 코어에 대응하는 송신측 메일박스의 상기 컨텍스트 영역에 기록된 제1 컨텍스트와 상기 수신 코어에 대응하는 수신측 메일박스의 상기 컨텍스트 영역에 기록된 제2 컨텍스트가 쌍을 이루도록 구성된, 전자 장치.
  18. 제17항에 있어서,
    상기 제1 컨텍스트 및 상기 제2 컨텍스트는 각각 적어도 상기 큐의 구조를 표현하기 위한 포인터를 포함하고,
    상기 제1 컨텍스트의 상기 포인터가 변경되면 상기 제2 컨텍스트의 상기 포인터를 동일하게 변경하고, 상기 제2 컨텍스트의 상기 포인터가 변경되면 상기 제1 컨텍스트의 상기 포인터를 동일하게 변경하도록 구성된, 전자 장치.
  19. 제17항에 있어서,
    상기 큐의 구현에 있어서 데이터는 수신측 메일박스에만 저장되는, 전자 장치.
  20. 프로세스 간 통신을 수행하는 방법으로서, 상기 방법은 전자 장치에 의해 수행되고,
    복수의 코어들 중 송신 코어와 수신 코어 사이의 프로세스 간 통신을 위해 IPC 커맨드를 생성하는 단계;
    상기 송신 코어를 포함하는 클러스터에 고유하게 대응하는 제1 메일박스에 상기 IPC 커맨드를 전송하는 단계;
    상기 제1 메일박스에 의해, 상기 IPC 커맨드에 적어도 부분적으로 기초하여 수신측 메일박스를 식별하는 목적지 값을 산출하는 단계; 및
    상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 동일하면 시스템 버스를 거치지 않고 상기 프로세스 간 통신을 수행하고, 상기 목적지 값에 의해 식별되는 상기 수신측 메일박스가 상기 제1 메일박스와 상이한 제2 메일박스이면 상기 시스템 버스를 거쳐서 상기 프로세스 간 통신을 수행하는 단계
    를 포함하되,
    상기 제2 메일박스는 상기 수신 코어를 포함하는 클러스터에 고유하게 대응하며, 상기 제1 메일박스 및 상기 제2 메일박스 각각은 컨트롤러 및 저장소를 포함하고, 상기 컨트롤러는 상기 저장소에 데이터를 기록 또는 판독할 때마다 상기 데이터를 수신할 코어에 인터럽트를 전달하는, 프로세스 간 통신을 수행하는 방법.
KR1020230067717A 2023-05-25 2023-05-25 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법 KR102606224B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230067717A KR102606224B1 (ko) 2023-05-25 2023-05-25 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230067717A KR102606224B1 (ko) 2023-05-25 2023-05-25 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법

Publications (1)

Publication Number Publication Date
KR102606224B1 true KR102606224B1 (ko) 2023-11-29

Family

ID=88969134

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230067717A KR102606224B1 (ko) 2023-05-25 2023-05-25 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법

Country Status (1)

Country Link
KR (1) KR102606224B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007233976A (ja) * 2006-03-03 2007-09-13 Tokyo Denki Univ Ipコア間の通信方法及びそれを使用する集積回路
KR20080067799A (ko) * 2007-01-17 2008-07-22 삼성전자주식회사 메일박스 영역을 가지는 멀티 패스 액세스블 반도체 메모리장치 및 그에 따른 메일박스 액세스 제어방법
JP2013525872A (ja) * 2010-02-26 2013-06-20 エンパイア テクノロジー ディベロップメント エルエルシー マルチコアプロセッサにおけるプロセッサコア通信
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
CN114185830A (zh) * 2020-09-15 2022-03-15 珠海格力电器股份有限公司 基于mailbox的多处理器通信方法、设备、系统和存储介质
US20220121451A1 (en) * 2019-10-29 2022-04-21 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Inter-core data processing method, system on chip and electronic device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007233976A (ja) * 2006-03-03 2007-09-13 Tokyo Denki Univ Ipコア間の通信方法及びそれを使用する集積回路
KR20080067799A (ko) * 2007-01-17 2008-07-22 삼성전자주식회사 메일박스 영역을 가지는 멀티 패스 액세스블 반도체 메모리장치 및 그에 따른 메일박스 액세스 제어방법
JP2013525872A (ja) * 2010-02-26 2013-06-20 エンパイア テクノロジー ディベロップメント エルエルシー マルチコアプロセッサにおけるプロセッサコア通信
KR101426341B1 (ko) * 2010-02-26 2014-08-06 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 멀티 코어 프로세서에서의 프로세서 코어 통신
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
US20220121451A1 (en) * 2019-10-29 2022-04-21 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Inter-core data processing method, system on chip and electronic device
CN114185830A (zh) * 2020-09-15 2022-03-15 珠海格力电器股份有限公司 基于mailbox的多处理器通信方法、设备、系统和存储介质

Similar Documents

Publication Publication Date Title
US11886353B2 (en) Hybrid victim cache and write miss buffer with fence operation
US20150186068A1 (en) Command queuing using linked list queues
CN100555216C (zh) 一种数据处理方法及处理器
US11762597B2 (en) Memory system and control method controlling nonvolatile memory in accordance with command issued by processor
US7185179B1 (en) Architecture of a parallel computer and an information processing unit using the same
CN107025130B (zh) 处理节点、计算机系统及事务冲突检测方法
US11093245B2 (en) Computer system and memory access technology
US11921634B2 (en) Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host
US11061676B2 (en) Scatter gather using key-value store
US10101963B2 (en) Sending and receiving data between processing units
KR102606224B1 (ko) 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법
US10740029B2 (en) Expandable buffer for memory transactions
US20180089141A1 (en) Data processing device
US20070180155A1 (en) Method and apparatus for implementing transfer ordering using hardware linked list
CN109508241B (zh) 一种进程间数据交换方法
US20120110594A1 (en) Load balancing when assigning operations in a processor
CN107133184B (zh) 可配置状态机的实现方法、可配置状态机及终端设备
CN115840654A (zh) 消息的处理方法、系统、计算设备及可读存储介质
US20040019764A1 (en) System and method for processing data in an integrated circuit environment
US20070266375A1 (en) Optimizing code motion with delayed exception handling
US5638538A (en) Turbotable: apparatus for directing address and commands between multiple consumers on a node coupled to a pipelined system bus
JP2016062513A (ja) プロセッサおよびプロセッサシステム
EP3588319B1 (en) Memory module
JPH10275078A (ja) 命令をディスパッチする方法及びシステム
KR102619406B1 (ko) 메모리 액세스 장치 및 이를 이용하여 코어를 프로그래밍 엔진에 할당하기 위한 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant