KR102566622B1 - 멀티코어 통신방법, 장치, 전자기기 및 저장매체 - Google Patents
멀티코어 통신방법, 장치, 전자기기 및 저장매체 Download PDFInfo
- Publication number
- KR102566622B1 KR102566622B1 KR1020210074810A KR20210074810A KR102566622B1 KR 102566622 B1 KR102566622 B1 KR 102566622B1 KR 1020210074810 A KR1020210074810 A KR 1020210074810A KR 20210074810 A KR20210074810 A KR 20210074810A KR 102566622 B1 KR102566622 B1 KR 102566622B1
- Authority
- KR
- South Korea
- Prior art keywords
- core
- communication
- layer
- topic
- announcement
- Prior art date
Links
- 230000006854 communication Effects 0.000 title claims abstract description 170
- 238000004891 communication Methods 0.000 title claims abstract description 169
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000004044 response Effects 0.000 claims abstract description 22
- 239000000872 buffer Substances 0.000 claims description 104
- 230000007246 mechanism Effects 0.000 abstract description 10
- 230000005540 biological transmission Effects 0.000 abstract description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 20
- 238000012545 processing Methods 0.000 description 13
- 230000001133 acceleration Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Microcomputers (AREA)
- Computer And Data Communications (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Mobile Radio Communication Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 발명은 멀티코어 통신방법, 장치, 전자기기 및 저장매체에 관한 것이다. 상기 방법은, 멀티코어가 운행하도록 제어하는 단계; 상기 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 단계; 상기 멀티코어에서의 발표 코어는 상기 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계; 상기 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 단계를 포함한다. 본 발명의 방법을 사용하면, 서로 배합하는 발표 구독층과 통신층에 기반하여 멀티미디어 사이의 통신 연결 및 토픽 메시지가 멀티코어 사이에서의 전송을 구현할 수 있다. 효과적인 멀티코어 사이의 메시지의 구독과 발표 메커니즘을 구축하여 멀티코어 사이의 데이터 공유가 더 편리하고 신속하도록 한다.
Description
본 발명은 통신분야에 관한 것으로, 특히 멀티코어 통신방법, 장치, 전자기기 및 저장매체에 관한 것이다.
임베디드 시스템은 휴대폰, 사물 인터넷(IOT) 기기 등 전자기기에 널리 사용된다. 기술의 발전과 더불어 임베디드 시스템은 단일 코어에서 멀티코어로 발전하여 전자기기의 성능을 향상시킨다. 멀티코어 임베디드 시스템의 발전과 더불어 멀티코어 사이에는 통신과 인터랙티브가 필요하다. 특히 단일 칩 멀티코어 시스템의 경우, 칩 멀티코어 통신은 멀티코어 시스템이 직면한 문제로 되었다. 통신 메커니즘의 우열은 멀티코어 시스템의 성능에 직접적인 영향을 미치고 효율적인 통신 메커니즘은 멀티코어 시스템의 동일한 고성능을 발휘하는 중요한 보증이다.
관련 기술에서 멀티코어 사이의 통신은 예를 들어 QMI(Qualcomm Messaging Interface) 구조를 사용할 수 있다. QMI 구조의 각 애플리케이션은 대응되는 Client API를 사용하여 외부 Service와 통신 인터랙티브를 진행하고 QMI 구조의 중간 어셈블리는 데이터 패키지, 전달 및 패키지 해제 기능을 제공한다.
관련 기술에서의 방식은, QMI가 관련 플랫폼의 독점 기술로서 완전히 개방되지 않고 홍보 및 적용이 불가능한 기술적 과제가 존재한다. 따라서, 관련 기술에는 멀티코어 사이에서 효과적인 통신 및 데이터 공유를 구현할 수 있는 방법이 결여하다.
관련 기술에 존재하는 문제점을 극복하기 위하여 본 발명은 멀티코어 통신방법, 장치, 전자기기 및 저장매체를 제공한다.
본 발명의 실시예의 제1 양태에 따르면, 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티코어 통신 시스템에 응용되는 멀티코어 통신방법을 제공하는데, 상기 방법은,
멀티코어가 운행하도록 제어하는 단계;
상기 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 단계;
상기 멀티코어에서의 발표 코어는 상기 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계;
상기 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 단계를 포함한다.
선택적으로, 상기 통신층은 openAMP 프레임워크 모드이고, 상기 발표 구독층은 uORB 모드이다.
선택적으로, 멀티코어가 운행하도록 제어하는 단계는,
멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 상기 통신층에 기반하여 멀티코어에서의 원격 코어가 작동하도록 제어하는 단계;
상기 원격 코어가, 상기 마스터 코어에 의해 정의되고 코어 사이의 버퍼 영역의 영역 구획 원칙을 포함하는 리소스 테이블을 획득하는 단계;
상기 마스터 코어와 상기 원격 코어가 상기 리소스 테이블에 따라 동일한 배치 조목을 수행하는 단계를 포함한다.
선택적으로, 상기 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 단계는,
상기 통신층에 기반하여 상기 발표 코어와 상기 수신 코어에서 각각 포트를 작성하는 단계;
상기 발표 코어의 포트 이름과 상기 수신 코어의 포트 이름이 동일한 것에 응답하여 상기 발표 코어와 상기 수신 코어가 통신 연결을 구축하는 단계를 포함한다.
선택적으로, 상기 멀티코어에서의 발표 코어는 상기 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계는,
상기 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출하고 제1 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 버퍼 영역에 송신하는 단계;
중단방식으로 상기 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지하는 단계를 포함한다.
선택적으로, 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출할 경우, 상기 방법은,
상기 발표 코어와 상기 수신 코어에 각각 버퍼 공간을 구축하되, 상기 버퍼 공간은 모두 상기 토픽 이름에 대응되는 단계를 더 포함한다.
선택적으로, 상기 멀티코어에서의 발표 코어는 상기 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계는,
상기 발표 코어가 상기 발표 구독층의 제2 설정 인터페이스를 호출하고 제2 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 상기 버퍼 영역에서 상기 토픽 메시지를 발표하는 단계를 포함한다.
선택적으로, 상기 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 단계는,
상기 수신 코어가 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 상기 버퍼 영역에서 상기 토픽 메시지를 획득하되; 상기 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함하는 단계;
상기 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장하는 단계를 포함한다.
선택적으로, 상기 제1 설정 인터페이스는 orb_advertise이고 상기 제2 설정 인터페이스는 orb_publish이며; 상기 미리 설정된 인터페이스는 rpmsg_send_message이다.
본 발명의 실시예의 제2 양태에 따르면, 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티코어 통신 시스템에 응용되는 멀티코어 통신장치를 제공하는데, 상기 장치는,
멀티코어가 운행하도록 제어하는 제어 모듈;
상기 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 연결 모듈;
상기 멀티코어에서의 발표 코어는 상기 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 발표 모듈;
상기 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 구독 모듈을 포함한다.
선택적으로, 상기 제어 모듈은 구체적으로,
멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 상기 통신층에 기반하여 멀티코어에서의 원격 코어가 작동하도록 제어하며;
상기 원격 코어가, 상기 마스터 코어에 의해 정의되고 코어 사이의 버퍼 영역의 영역 구획 원칙을 포함하는 리소스 테이블을 획득하고;
상기 마스터 코어와 상기 원격 코어가 상기 리소스 테이블에 따라 동일한 배치 조목을 수행한다.
선택적으로, 상기 연결 모듈은 구체적으로,
상기 통신층에 기반하여 상기 발표 코어와 상기 수신 코어에서 각각 포트를 작성하고;
상기 발표 코어의 포트 이름과 상기 수신 코어의 포트 이름이 동일한 것에 응답하여 상기 발표 코어와 상기 수신 코어가 통신 연결을 구축한다.
선택적으로, 상기 발표 모듈은 구체적으로,
상기 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출하고 제1 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 버퍼 영역에 송신하고;
중단방식으로 상기 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지한다.
선택적으로, 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출할 경우, 상기 발표 모듈은,
상기 발표 코어와 상기 수신 코어에 각각 버퍼 공간을 구축하되, 상기 버퍼 공간은 모두 상기 토픽 이름에 대응되는데 더 사용된다.
선택적으로, 상기 발표 모듈은,
상기 발표 코어가 상기 발표 구독층의 제2 설정 인터페이스를 호출하고 제2 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 상기 버퍼 영역에서 상기 토픽 메시지를 발표하는데 더 사용된다.
선택적으로, 상기 구독 모듈은 구체적으로,
상기 수신 코어가 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 상기 버퍼 영역에서 상기 토픽 메시지를 획득하되; 상기 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함하고;
상기 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장한다.
본 발명의 실시예의 제3 양태에 따르면, 전자기기를 제공하는데,
프로세서;
프로세서의 실행 가능 명령을 저장하기 위한 메모리를 포함하고;
상기 프로세서는 상기 임의의 한 항에 따른 멀티코어 통신방법을 수행하도록 배치된다.
본 발명의 실시예의 제4 양태에 따르면, 비 일시적 컴퓨터 판독 가능 저장 매체를 제공하는데, 상기 저장매체에서의 명령이 전자기기의 프로세서에 의해 실행될 경우, 전자기기로 하여금 상기 임의의 한 항에 따른 멀티코어 통신방법을 수행하도록 한다.
이상의 일반적인 설명과 아래 문장의 세부절차의 설명은 단지 예시적이고 해석적인 것일 뿐 본 발명을 한정하기 위한 것이 아님을 이해해야 한다.
본 발명의 실시예에서 제공하는 기술적 해결수단은 아래와 같은 유리한 효과를 포함할 수 있다. 본 발명의 방법을 사용하면, 서로 배합하는 발표 구독층과 통신층에 기반하여 멀티미디어 사이의 통신 연결 및 토픽 메시지가 멀티코어 사이에서의 전송을 구현할 수 있다. 효과적인 멀티코어 사이의 메시지의 구독과 발표 메커니즘을 구축하여 멀티코어 사이의 데이터 공유가 더 편리하고 신속하도록 한다.
여기의 도면은 명세서에 병합되어 본 명세서의 일부를 구성하고 본 발명에 부합되는 실시예를 도시하며 명세서와 함께 본 발명의 원리를 설명하는데 사용된다.
도 1은 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 2는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 3은 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 4는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 5는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 6은 일 예시적인 실시예에 따라 도시한 시스템 프레임 워크의 개략도이다.
도 7은 일 예시적인 실시예에 따라 도시한 멀티코어 구조 개략도이다.
도 8은일 예시적인 실시예에 따라 도시한 구독 메커니즘 원리 개략도이다.
도 9는 일 예시적인 실시예에 따라 도시한 장치의 블록도이다.
도 10은 일 예시적인 실시예에 따라 도시한 전자기기의 블록도이다.
도 1은 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 2는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 3은 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 4는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 5는 일 예시적인 실시예에 따라 도시한 방법의 흐름도다.
도 6은 일 예시적인 실시예에 따라 도시한 시스템 프레임 워크의 개략도이다.
도 7은 일 예시적인 실시예에 따라 도시한 멀티코어 구조 개략도이다.
도 8은일 예시적인 실시예에 따라 도시한 구독 메커니즘 원리 개략도이다.
도 9는 일 예시적인 실시예에 따라 도시한 장치의 블록도이다.
도 10은 일 예시적인 실시예에 따라 도시한 전자기기의 블록도이다.
여기서 예시적인 실시예를 상세히 설명하고 이를 도면에 예시적으로 나타낸다. 아래의 설명이 도면과 관련될 경우, 별도로 나타내지 않는 한 상이한 도면에서의 동일한 숫자는 동일하거나 유사한 요소를 나타낸다. 아래의 예시적인 실시예에서 설명한 실시형태는 본 발명과 일치한 모든 실시형태를 대표하지 않는다. 반대로, 이들은 단지 첨부된 청구범위에서 상세히 설명한 본 발명의 일부 양태와 일치한 장치 및 방법의 예이다.
임베디드 시스템은 휴대폰, 사물 인터넷(IOT) 기기 등 전자기기에 널리 사용된다. 기술의 발전과 더불어 임베디드 시스템은 단일 코어에서 멀티코어로 발전하여 전자기기의 성능을 향상시킨다. 멀티코어 임베디드 시스템에서, 다수의 코어(core)를 동일한 칩(chip)에 패키징 할 수 있다. 예를 들어, AP, Modem DSP, Audio DSP 및 Sensor DSP 등이다. 또한 단일코어를 포함하는 다수의 칩이 동일한 보드 레이어의 board에 디자인될 수도 있다. 또는 상기 두 가지 방식의 결합일 수도 있다.
멀티코어 임베디드 시스템은 비대칭 멀티코어 처리(Asymmetric Multi-Processing, AMP)와 대칭 멀티코어 처리(Symmetric Multi-Processing, SMP)와 같은 두 가지 형식이 있을 수 있다.
AMP 구조는 통상적으로 다수의 CPU를 포함하고 각 CPU는 상이한 구조이다. 각 CPU는 독립적인 주소 공간을 구비하고 각 CPU는 모두 자신의 운영체제(OS)를 운행할 수 있다. 또한 AMP 구조는 다수의 CPU에 서로 통신하는 하드웨어 리소스를 제공한다. 예를 들어 휴대폰 SOC(System on chip, 시스템 온 칩)이 바로 AMP 구조이고, SOC 내부에는 다수의 DSP와 애플리케이션 프로세서AP가 존재할 수 있으며 각각 각자의 OS를 운행할 수 있다.
SMP 구조는 통상적으로 다수의 CPU를 포함하고 각 CPU는 동일한 시스템 구조로서 서로 메모리(memory) 공간을 공유한다. SMP는 하나의 OS를 구비하여 다수의 CPU에 임무를 배치하고, CPU 사이는 메모리를 공유하는 것을 통해 서로 통신한다. 예를 들어 데스크탑 컴퓨터가 바로 SMP 구조이고, 각 CPU는 병행되게 임무를 수행하여 성능을 향상시킨다.
멀티코어 임베디드 시스템의 발전과 더불어 멀티코어 사이에는 통신과 인터랙티브가 필요하다. 특히 단일 칩 멀티코어 시스템의 경우, 칩 멀티코어 통신은 멀티코어 시스템이 직면한 문제로 되었다. 통신 메커니즘의 우열은 멀티코어 시스템의 성능에 직접적인 영향을 미치고 효율적인 통신 메커니즘은 멀티코어 시스템의 동일한 고성능을 발휘하는 중요한 보증이다.
관련 기술에서 멀티코어 사이의 통신은 예를 들어 QMI(Qualcomm Messaging Interface) 구조를 사용할 수 있다. QMI 구조의 각 애플리케이션은 대응되는 Client API를 사용하여 외부 Service와 통신 인터랙티브를 진행하고 QMI 구조의 중간 어셈블리는 데이터 패키지, 전달 및 패키지 해제 기능을 제공한다.
관련 기술에서의 방식은, QMI가 관련 플랫폼의 독점 기술로서 완전히 개방되지 않고 홍보 및 적용이 불가능한 기술적 과제가 존재한다. 따라서, 관련 기술에는 멀티코어 사이에서 효과적인 통신 및 데이터 공유를 구현할 수 있는 방법이 결여하다.
관련 기술에서의 기술적 과제를 해결하기 위하여 본 발명은 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티 코어 통신 시스템에 응용되는 멀티코어 통신방법을 제공한다. 방법은, 멀티코어가 운행하도록 제어하는 단계를 포함한다. 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 단계를 포함한다. 멀티코어에서의 발표 코어는 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계를 포함한다. 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 토픽 메시지를 구독하거나 획득하는 단계를 포함한다. 본 발명의 방법을 사용하면, 서로 배합하는 발표 구독층과 통신층에 기반하여 멀티미디어 사이의 통신 연결 및 토픽 메시지가 멀티코어 사이에서의 전송을 구현할 수 있다. 효과적인 멀티코어 사이의 메시지의 구독과 발표 메커니즘을 구축하여 멀티코어 사이의 데이터 공유가 더 편리하고 신속하도록 한다.
하나의 예시적인 실시예에서, 본 실시예의 멀티코어 통신방법은 멀티코어 통신 시스템에 응용된다. 멀티코어 통신 시스템은 다수의 코어, 발표 구독층 및 통신층을 포함한다. 멀티코어 통신 시스템은 AMP 구조에 기반할 수도 있고 SMP 구조에 기반할 수도 있는데 본 실시예는 AMP 구조에 기반하는 것으로 설명한다.
다수의 코어에는 마스터 코어(Mater Core)와 원격 코어(remote core)가 포함될 수 있고, 다수의 코어는 예를 들어 동일한 칩에 집적될 수 있다.
발표 구독층은 예를 들어 uORB(Micro Object Request Broker, 마이크로 오브젝트 요청 브로커) 모드 일 수 있다. uORB는 비동기 통신 메커니즘을 사용하여 멀티코어 사이의 메시지의 발표 및 구독을 구현하여 코어 사이의 데이터 공유를 구현할 수 있다.
통신층은 예를 들어 TCP/IP 모델 또는 블루투스 모드를 사용하여 IPC(Inter Processor Communication, 프로세서 간 통신) 기능을 구현할 수 있다. 본 실시예에서, 통신층은 OpenAMP(오픈 AMP) 구조 모드를 사용한다. OpenAM 구조 모드의 통신층은 Remoteproc, Virtio, Rpmsg 와 같은 3개의 서브 레이어를 포함할 수 있다.
도 1에 도시된 바와 같이, 본 실시예의 방법은 아래와 같은 단계를 포함한다.
단계S110, 멀티코어가 운행하도록 제어한다.
단계S120, 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축한다.
단계S130, 멀티코어에서의 발표 코어는 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송한다.
단계S140, 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 토픽 메시지를 구독하거나 획득한다.
단계S110에서, OpenAMP 구조 모드의 통신층에서의 Remoteproc 서브 레이어는 원격 프로시저 부팅(boot remote proc) 기능을 구현할 수 있다. 예를 들어 먼저 멀티코어에서의 마스터 코어를 부팅한 다음 원격 코어를 부팅할 수 있다.
단계S120에서, OpenAMP 구조 모드의 통신층의 Rpmsg 서브 레이어는 멀티코어 사이의 통신 연결, 즉 IPC 기능을 구현할 수 있다. 발표 코어는 예를 들어 멀티코어에서의 임의의 한 코어일 수 있는 바, 토픽 메시지를 발표하는 코어를 말한다. 수신 코어는 예를 들어 멀티코어에서 발표 코어를 제외한 적어도 하나의 코어 일 수 있다.
단계S130에서, 미리 설정된 인터페이스는 예를 들어 Rpmsg 인터페이스 일 수 있다. 토픽 메시지는 예를 들어 토픽 이름, 메시지 콘텐츠 및 발표 유형 등을 포함할 수 있다. 토픽 정보는 예를 들어 가속도계 데이터, 오디오 데이터, 블루투스wifi 상태 및 시스템이 생성한 임의의 중간 변수 일 수 있다, 각각의 토픽 메시지는 유일한 이름 및 대응되는 구성체를 구비하되, 구성체는 토픽 상태의 설명, 예를 들어 가속도 데이터를 포함하고, x, y, x 3축 가속도 벡터와 타임스탬프 메시지를 포함한다.
발표 코어는 토픽 메시지에 토픽 메시지의 방송, 즉 토픽 이름을 방송 및 토픽 메시지의 발표와 같은 두 가지 동작을 수행할 수 있다.
발표 코어가 토픽 메시지를 방송하거나 발표할 경우, 이는 우선 발표 구독층 uORB의 설정 인터페이스(API)를 호출한 다음 uORB의 설정 인터페이스 내부에서 통신층(openAMP)의 미리 설정된 인터페이스를 호출함으로써 토픽 메시지의 방송 또는 발표를 구현할 수 있다. uORB의 설정 인터페이스 내부는 예를 들어 Rpmsg에 기반한 등록 정보 또는 호출 명령을 포함할 수 있다. 설정 인터페이스는 제1 설정 인터페이스, 제2 설정 인터페이스 및 제3 설정 인터페이스를 포함할 수 있다.
본 단계에서, Rpmsg 서브 레이어는 Virtio 서브 레이어에 위치하는 기기 유형과 버스이다. Rpmsg 인터페이스를 호출하는 것을 통해 Virtio 서브 레이어를 액세스함으로써 메시지를 송수신할 수 있다. 통신층에는 공유 메모리 모듈이 더 구비되는데 두 개의 코어마다 하나의 공유 메모리 모듈을 공유할 수 있다.
도 6과 결부하면, Virtio 서브 레이어에는 공유 메모리 모듈에 집적되는 메시지 송수신을 위한 buffer 엔티티(버퍼 영역)가 집적되고, buffer 엔티티는 TX buffer와 RX buffer를 포함하며, 메시지의 송신은 TX buffer를 거칠 수 있고, 메시지의 수신은 RX buffer를 거칠 수 있다.
본 실시예에서, 멀티코어는 상기 코어 인터페이스와 일치한 uORB의 API를 사용하고, OpenAMP 구조 모드의 통신층은 발표 구독층(uORB)의 후단으로서 멀티코어 IPC 기능을 제공한다. API 인터페이스는 비교적 적어 개발 이용에 유리하다.
단계S140에서, 설정 인터페이스는 예를 들어 uORB의 제3 설정 인터페이스를 가리킬 수 있다. 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함하고, 발표된 토픽 메시지를 구독하거나 획득하는데 사용될 수 있다. 멀티코어 사이의 메시지 전송 또는 공유를 구현한다.
하나의 예시적인 실시예에서, 도 2에 도시된 바와 같이, 본 실시예의 방법은 구체적으로 아래와 같은 단계를 포함할 수 있다.
단계S111, 멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 통신층에 기반하여 멀티코어에서의 원격 코어가 작동하도록 제어한다.
단계S112, 원격 코어가 리소스 테이블을 획득한다.
단계S113, 마스터 코어와 원격 코어가 리소스 테이블에 따라 동일한 배치 조목을 수행한다.
단계S111에서, 통신층에서의 Remoteproc 서브 레이어는 remote system에 대한 생명 주기와 리소스 관리를 제공할 수 있다. 예를 들어, remote system image를 고정된 위치에 로딩하여 remote proc(원격 프로그램)를 부팅할 수 있고; remote system(원격 시스템)리소스를 작성하고 관리할 수 있으며, remote system에 대해 suspend(일시 정지), resume(다시 시작) 및 shutdown(셧 다운) 등 제어를 진행할 수 있다.
본 단계에서, 마스터 코어(Master core)에 먼저 전기가 공급되어 부팅되고, 부팅된 후, remote system image를 로딩하고 해석할 수 있다. 점프하여 원격 코어(remote core)를 부팅한다.
단계S112에서, 마스터 코어가 부팅 및 초기화를 완료한 후, ELF 파일 형태의 리소스 테이블(resource table)을 대응되는 주소 공간에 로딩 할 수 있다. 원격 코어가 상기 주소 공간으로부터 리소스 테이블을 획득하여 원격 코어와 마스터 코어에서의 리소스 테이블이 일치하도록 한다. 리소스 테이블은 마스터 코어에 의해 정의되는 바, 코어 사이의 버퍼 영역(버퍼 영역은 공유 메모리 모듈에 집적됨)의 영역 구획 원칙 등 여러 가지 배치 조목을 포함한다.
하나의 예시에서, 멀티코어 통신 시스템은 오디오 칩을 예로 한다. 칩은 3개의 코어를 가지는데, 2개는 Cortex M4 코어이고 1개는 Cortex A53 코어이다. 여기서 Cortex M4 DSP는 센서 데이터 수집과 알고리즘 처리를 담당하고, Cortex M4 DSP는 오디오 데이터 수집과 알고리즘 처리를 담당하며, Cortex M53은 AI 알고리즘 가속과 사용자 UI 인터랙티브를 담당한다. 두 개의 Corte M4는 각각 sensor와 오디오 주파수의 데이터를 수집하여 융합 필터링과 코덱 동작을 진행하고, Cortex A53 칩은 기타 두 코어의 어떠한 데이터를 사용하여 AI 알고리즘 학습과 연역을 진행하며, UI에서 디스플레이 하도록 담당한다.
본 예시에서, Cortex A53은 AP프로세서로서 제일 먼저 전기가 공급되어 부팅한다. 부팅된 후, 기타 두 개의 코어에 점핑하여 부팅한다. Cortex A53은 Linux OS를 운행하고, Cortex M4는 RTOS(실시간 멀티캐스팅 운영 체제)를 운행한다.
단계S113에서, 마스터 코어와 원격 코어의 리소스 테이블은 일치하고, 마스터 코어와 원격 코어에서는 리소스 테이블의 배치 조목에 따라 상응한 로딩을 진행할 수 있다.
예를 들어, 리소스 테이블에는 코어 사이의 버퍼 영역의 영역 구획 원칙이 포함된다. 버퍼 영역이 공유 메모리 모듈의 buffer 엔티티에 위치하면 마스터 코어와 원격 코어가 리소스 테이블에 따라 버퍼 영역에 대해 동일한 형식의 구획을 진행한다.
또 예를 들어, 리소스 테이블에는 버퍼 영역의 저장 바이트 유닛이 더 포함된다. 이렇게 되면 마스터 코어와 원격 코어가 리소스 테이블에 따라 버퍼 영역에 대해 유닛 정렬을 진행, 즉 버퍼 영역에 동일한 저장 바이트 유닛을 설치한다.
통신층은 리소스 테이블에 따라 vring을 작성 할 수 있고, vring은 buffer 엔티티의 수량, 크기 및 정렬 방식과 같은 파라미터를 포함할 수 있다는 것을 이해할 수 있다.
본 실시예에서, openAMP 및 uORB의 플랫폼은 연관성이 작고 이식이 용이한 바, 예를 들어, 이의 각각의 기존 플랫폼으로부터 휴대폰의 운영체에 플랫폼에 이식할 수 있다. 멀티코어 사이에는 협의된 리소스 테이블을 배치하여 버퍼 영역에 대한 구획과 유닛 정렬을 진행하면 되고, 나머지 메커니즘은 openAMP에 의거하여 통일적으로 구현된다.
하나의 예시적인 실시예에서, 도 3에 도시된 바와 같이, 본 실시예의 단계S120은 구체적으로 아래와 같은 단계를 포함할 수 있다.
단계S121, 통신층에 기반하여 발표 코어와 수신 코어에서 각각 포트를 작성한다.
단계S122, 발표 코어의 포트 이름과 수신 코어의 포트 이름이 동일한 것에 응답하여 발표 코어와 수신 코어를 통신 연결한다.
단계S121에서, 통신층의 Rpmsg 서브 레이어에는 앞자리가 rpmsg인 API가 설치된다. 발표 코어와 수신 코어는 발표 구독층(uORB)을 통해 rpmsg의 API를 호출하여 포트를 작성 할 수 있다. 본 실시예에서, 발표 구독층이 rpmsg의 API를 호출하고 rpmsg의 API 내에 "포트 작성"이라는 함수 또는 명령이 포함될 경우, 발표 코어와 수신 코어로 하여금 각각 포트를 작성하도록 할 수 있다.
단계S122에서, 포트 이름이란 포트가 허용하는 프로세스의 이름이다. 하나의 예시에서, 발표 코어와 수신 코어가 통신 연결되어 uORB의 프로세스를 구현할 경우, 발표 코어에 작성 된 포트는 예를 들어 orb_transmit 일 수 있고, 수신 코어에 작성 된 포트는 예를 들어 orb_receive 일 수 있다. 두 개의 포트의 이름, 즉 앞자리의 "orb"에 있어서, 이 이름이 동일할 경우 두 개의 코어는 바인딩, 즉 이름에 의해 멀티코어 사이의 인식 및 통신 연결을 진행할 수 있다.
발표 코어와 수신 코어의 포트 사이에 형성된 것은 가상 channel이고, 상이한 프로세스 메시지의 발표와 수신은 실제적으로 여전히 buffer 엔티티의 TX buffer 및 RX buffer를 거쳐야 한다는 것을 이해할 수 있다. 발표자의 발표와 구독자의 수신은 완전히 분리된 buffer를 사용함으로써 발표와 구독이 서로 영향을 미치거나 대기하지 않도록 한다. Rpmsg 서브 레이어 내부에는 Name Service가 더 포함되어 포트의 이름(name)을 port number(포트 번호)로 전환시킬 수 있으며, name은 Rpmsg 상층 가상 channel의 이름일 수도 있다.
발표 코어와 수신 코어 사이의 통신에 있어서, 통신층에는 하나의 버퍼 영역, 즉 하나의 TX buffer 및 RX buffer가 구비된다. 그러나 통신하는 프로세스의 상이함에 따라 코어에는 다수의 포트가 존재할 수 있고, 코어 사이는 다수의 가상 channel을 포함되어 ORB 프로세스를 제외한 다수의 프로세스를 진행할 수 있다.
멀티코어에서 마스터 코어가 발표 코어이고 나머지 모든 코어가 모두 수신 코어일 경우, 마스터 코어와 임의의 수신 코어 사이에는 모두 독립적인 가상 channel이 작성된다. 이로써 마스터 코어와 임의의 수신 코어는 모두 메시지의 발표 및 구독을 구현할 수 있다.
하나의 예시적인 실시예에서, 본 실시예의 방법은 발표 코어가 메시지를 방송하는 시나리오, 즉 방송 토픽 메시지의 토픽 이름에 적용된다.
도 4에 도시된 바와 같이, 단계S130은 구체적으로 아래와 같은 단계를 포함한다.
단계S131, 발표 코어가 발표 구독층의 제1 설정 인터페이스를 호출하고 제1 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 버퍼 영역에 송신한다.
단계S132, 중단방식으로 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지한다.
단계S133, 발표 코어와 수신 코어에 각각 버퍼 공간을 구축하되, 버퍼 공간은 모두 토픽 이름에 대응된다.
단계S131에서, 제1 설정 인터페이스는 예를 들어 uORB(발표 구독층)의 API: orb_advertise 일 수 있다. 미리 설정된 인터페이스는 예를 들어 openAMP(통신층)의 Rpmsg 서브 레이어의 API: rpmsg_send_message 일 수 있다.
본 단계에서, 발표 코어가 orb_advertise를 호출할 경우, orb_advertise 내부는 rpmsg_send_message를 호출하여 토픽 정보를 버퍼 영역에 송신한다.
단계S132에서는, openAMP 자체가 구비한 중단방식(IRQ)을 이용하여 수신 코어에 방송 토픽 메시지의 토픽 이름을 알린다. 수신 코어로 하여금 버퍼 영역에 토픽 메시지를 저장하도록 알린다.
단계S133에서, 발표 코어는 orb_advertise를 호출할 때 또는 그 전에 코어 내의 버퍼 공간(buffer)을 구축한다. 본 단계에서는 발표 코어에 버퍼 공간이 존재하는 것을 가리킬 뿐 버퍼 공간을 구축하는 시기를 한정하지 않는다. 수신 코어는 방송 메시지를 수신한 후 코어 내의 버퍼 공간을 구축할 수 있다.
본 단계에서, 발표 코어 또는 수신 코어에서의 버퍼 공간은 모두 관련된 토픽 이름과 서로 대응된다. 이는 아래의 두 가지 측면에서 구현된다.
제1 측면, 발표 코어 또는 수신 코어에서의 버퍼 공간의 수량은 토픽 이름의 수량(발표와 구독 총 수량)과 동일하다. 즉 하나의 토픽 이름이 존재할 때마다 발표 코어 또는 수신 코어에 상기 토픽 이름에 대응되게 버퍼 공간이 존재한다.
제2 측면, 발표 코어 또는 수신 코어에서 버퍼 공간의 이름은 토픽 이름과 동일하다. 즉 발표 코어 또는 수신 코어에서 이름에 대응되는 버퍼 공간에는 토픽 이름에 대응되는 토픽 메시지가 버퍼된다.
하나의 예시에서, 도 7에 도시된 바와 같이, 본 예시는 CPU1, CPU2 및 CPU3와 같은 세 개의 코어(CPU)를 포함한다. 두 개의 코어 사이마다 모두 공유 메모리 모듈(share memory)이 설치, 즉 두 개의 코어 사이마다 버퍼 영역이 구비된다. 각 코어마다 모두 토픽 메시지(topic)를 발표하여 중단방식(IRQ line)을 이용하여 기타 코어를 방송할 수 있다.
CPU1은 topic A와 topic B를 발표할 수 있고, CPU2에서의 topic 1과 CPU3에서의 topic a를 구독한다. CPU1에는 topic A, topic B, topic 1 및 topic a와 같은 네 개의 버퍼 공간이 대응되게 포함된다.
CPU2는 topic 1과 topic 2를 발표할 수 있고, CPU1에서의 topic A와 CPU3에서의 topic a를 구독한다. CPU2에는 topic 1, topic 2, topic A 및 topic a와 같은 네 개의 버퍼 공간이 대응되게 포함된다.
CPU3은 topic a와 topic b를 발표할 수 있고, 잠시 구독이 없을 수 있다. CPU3에는 topic a와 topic b와 같은 두 개의 버퍼 공간이 대응되게 포함된다.
하나의 예시적인 실시예에서, 본 실시예의 방법은 발표 코어가 토픽 메시지를 발표하는 시나리오에 적용된다.
본 실시예는 도 4에 도시된 바와 같은 실시예의 기초상에 진행한 것일 수 있다. 단계S130은 구체적으로 아래와 같은 단계를 더 포함한다.
단계S134, 발표 코어가 발표 구독층의 제2 설정 인터페이스를 호출하고 제2 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 버퍼 영역에서 토픽 메시지를 발표한다.
제2 설정 인터페이스는 예를 들어 uORB(발표 구독층)의 API 인터페이스: orb_publish 일 수 있다. 미리 설정된 인터페이스는 예를 들어 openAMP(통신층)의 Rpmsg 서브 레이어의 API: rpmsg_send_message 일 수 있다.
본 단계에서는, 발표 코어가 orb_publish를 호출하고, orb_publish 내부에서 rpmsg_send_message를 호출하여 버퍼 영역에서 토픽 메시지를 발표하도록 할 수 있다.
발표 코어는 동시에 제1 설정 인터페이스(orb_advertise)와 제2 설정 인터페이스(orb_publish)를 호출하여 메시지의 방송과 발표를 진행할 수 있다는 것을 이해할 수 있다.
하나의 예시적인 실시예에서, 발표 코어가 토픽 메시지를 발표하는 시나리오에서, 도 5에 도시된 바와 같이, 단계S140은 구체적으로 아래와 같은 단계를 포함한다.
단계S141, 수신 코어가 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 버퍼 영역에서 토픽 메시지를 획득한다.
단계S142, 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장한다.
단계S141에서, 제3 설정 인터페이스는 uORB(발표 구독층)의 orb_subscribe와 orb_copy를 포함한다.
수신 코어는 토픽 이름에 따라 메시지 구독 여부를 결정할 수 있다. 수신 코어가 제3 설정 인터페이스(orb_subscribe, orb_copy)를 호출하면 수신 코어는 구독자라는 것을 표징한다. orb_subscribe를 호출함으로써 토픽 메시지를 구독할 수 있고 버퍼 영역에서의 토픽 메시지의 리프레쉬 상태를 모니터링 할 수 있다. 토픽 메시지가 업데이트 할 경우, 수신 코어는 orb_copy를 추가로 호출하여 버퍼 영역에서 토픽 메시지의 구체적인 콘텐츠를 획득할 수 있다.
토픽 메시지의 토픽 이름은 유일한 것으로서, 구독 수요가 있는 임의의 수신 코어는 약정된 토픽 이름을 통해서만 상응한 토픽 메시지를 획득할 수 있다.
단계S142에서, 수신 코어는 토픽 메시지를 획득한 후, 자신의 코어 내의 버퍼 공간에 토픽 메시지를 저장할 수 있다.
Rpmsg의 통신방식은 비동기 통신방식이다. 상술한 실시예와 결부하면, 발표 코어와 수신 코어 사이의 통신에서: 발표 코어는 uORB를 통해 통신층의 미리 설정된 인터페이스 rpmsg_send_message를 호출한 후 openAMP 구조의 통신층에 기반하여 수신측(수신 코어)의 수신 콜백을 수신하여 이번 통신, 즉 openAMP통신에서의 중단방식(IRQ)에 응답한다. 발표 코어와 수신 코어 사이의 매 차례의 전송에서는 중단방식을 통해 발표 코어가 수신 코어에 토픽 메시지의 존재를 알리고, 수신 코어는 발표 코어에 토픽 메시지의 획득이 완료됨을 알릴 수 있다.
하나의 예시적인 실시예에서, 발표 코어가 마스터 코어(Master Core)이고 수신 코어가 원격 코어(Remote core)인 것을 예로 하여 설명한다.
(1)마스터 코어는 orb_advertise와 orb_publish를 호출하고 토픽 메시지를 발표 및 방송할 수 있다.
토픽 정보의 발표: Master Core는 토픽 메시지를 발표하되, 토픽 메시지를 마스터 코어 내의 상기 토픽의 버퍼 공간에 저장할 수 있다. 이와 동시에 마스터 코어가 uORB 인터페이스를 호출하는 방식, uORB 인터페이스 내부에서 rpmsg 인터페이스를 호출하는 방식을 통해 토픽 메시지 패키지를 공유 메모리 모듈의 virtio층 buffer 엔티티(코어 사이의 버퍼 영역)에 송신한다.
토픽 정보의 방송: 중단의 방식을 이용하여 Remote core에 유효한 정보가 존재하여 판독 가능하다는 것을 알린다.
(2)토픽 정보의 구독: Remote core가 중단을 수신한 후, 방송 정보(토픽 메시지의 토픽 이름)을 판독한다. Remote core는 orb_subscribe를 호출하여 토픽 메시지를 구독하고 토픽 메시지를 모니터링한다. 토픽 메시지가 업데이트 될 경우, orb_copy를 호출하여 버퍼 영역에서 새로운 토픽 메시지를 획득하고 메시지 패키지를 해제한다. 버퍼 영역의 대응되는 메시지를 해제하여 비우고 중단 통지 Master core를 사용하여 응답하며 전송을 완료한다.
발표자가 orb_advertise를 호출할 경우, 발표자 내부에 버퍼 공간(buffer)을 작성한다. 발표자는 매 차례의 orb_publish에서 모두 버퍼 공간에 인덱스 값을 충진하고 증가하는 과정을 진행하게 된다. 도 8에 도시된 바와 같이, 각 구독자는 토픽 데이터(orb_copy)를 획득할 경우, 모두 자체의 버퍼 공간의 인덱스 값과 발표자의 버퍼 공간의 인덱스 값을 비교한다. 만약 구독자의 버퍼 공간의 인덱스 값이 발표자의 버퍼 공간의 인덱스 값보다 작으면 업데이트된 토픽 정보, 예를 들어 구독자1과 구독자 2가 존재한다는 것을 나타낸다. 그렇지 않으면 업데이트, 예를 들어 구독자3이 존재하지 않는다는 것을 나타낸다.
이하 몇 개의 예시를 제공하여 설명하되, 본 발명의 실시예는 이에 한정되지 않는다.
하나의 예시적인 실시예에서: 멀티코어는 두 개의 코어를 포함하는데 하나의 코어는 발표 코어이고 다른 하나의 코어는 수신 코어이다.
본 예시는 멀티코어 사이에 가속도 토픽 메시지를 발표하거나 획득하는 것을 예로 들어 설명하는 바, Sensor DSP는 가속도 데이터를 발표 코어로 수집하고; Cortex A53는 가속도 데이터를 수신 코어로 수요한다.
하나의 Sensor DSP가 가속도 데이터를 수집할 경우, 가속도의 x, y, z축 데이터와 타임스탬프를 포함하는 토픽 메시지 "sensor_accel"을 발표할 수 있다. 발표할 경우, uORB의 API: orb_advertise와 orb_publish를 호출하고, uORB의 API는 내부에서 openAMP의 rpmsg 인터페이스를 호출하여 가속도 토픽 메시지를 발표한다. 발표하는 동시에 중단 방식으로 토픽 메시지를 방송한다.
Cortex A53이 가속도 데이터를 획득하고자 할 경우, orb_subscribe를 호출하여 리턴된 fd의 판독 여부를 구독 및 모니터링 할 수 있는데, 만약 판독 가능(업데이트 데이터가 존재함을 표시)하면 orb_copy를 호출하여 토픽이 제일 새로운 데이터를 획득한다.
하나의 예시적인 실시예에서: 멀티코어는 A 코어, B 코어 및 C 코어와 같은 세 개의 코어를 포함하되, A 코어를 발표 코어로 하고, B 코어와 C 코어를 수신 코어로 한다.
A 코어가 데이터를 수집할 경우, uORB의 API: orb_advertise와 orb_publish를 호출할 수 있고, uORB의 API 내부는 openAMP의 rpmsg 인터페이스를 호출하여 토픽 메시지를 버퍼 영역까지 발표할 수 있다. 발표하는 동시에 중단하는 방식으로 토픽 메시지를 방송한다.
B 코어, C 코어는 방송 메시지를 수신한다. 방송 메시지의 토픽 이름을 각각 조회하는 것을 통해 만약 B 코어가 이의 토픽 메시지에 흥미가 없으면 구독하지 않는다. 만약 C 코어에서 이 토픽 메시지를 획득하고자 하면 orb_subscribe를 호출하여 이 토픽 메시지를 구독한다. C 코어는 실시간으로 A 코어와 C 코어 사이 버퍼 영역의 메시지가 업데이트 상태를 모니터링하는데 토픽 메시지 업데이트가 존재하면 orb_copy를 호출하여 토픽이 제일 새로운 데이터를 획득한다.
하나의 예시적인 실시예에서: 멀티코어는 A 코어, B 코어 및 C 코어와 같은 세 개의 코어를 포함하되, A 코어와 B 코어를 발표 코어로 하고, C 코어를 수신 코어로 한다.
A 코어와 B 코어가 각각 데이터를 수집하고 발표하고자 할 경우, 각각의 코어에서 uORB의 API: orb_advertise와 orb_publish를 호출하고, uORB의 AP는 내부에서 openAMP의 rpmsg 인터페이스를 호출하여 각각 토픽 메시지를 발표한다. 발표하는 동시에 중단하는 방식으로 토픽 메시지를 방송한다.
C 코어는 A 코어와 B 코어의 방송 메시지를 수신한다. 방송 메시지의 토픽 이름을 각각 조회하는 것을 통해, 만약 C 코어의 수요가 나머지 두 코어의 메시지를 모두 구독하는 것이면 C 코어는 orb_subscribe를 각각 호출하여 A 코어와 B코어의 토픽 메시지를 구독한다. C 코어는 실시간으로 A 코어와 C 코어 사이의 버퍼 영역의 메시지 업데이트 상태 및 B 코어와 C 코어 사이의 버퍼 영역의 메시지 업데이트 상태를 모니터링한다. 토픽 메시지의 업데이트가 존재할 경우, C 코어는 orb_copy를 호출하여 각각 토픽이 제일 새로운 데이터를 획득한다. C 코어 내에는, 구독된 A 코어와 B 코어의 토픽 메시지에 대하여 모두 버퍼 공간이 존재한다.
하나의 예시적인 실시예에서: 멀티코어는 A 코어, B 코어, C 코어 및 D 코어와 같은 네 개의 코어를 포함하되, A 코어와 B 코어를 발표 코어로 하고, C 코어와 D 코어를 수신 코어로 한다.
A 코어와 B 코어가 각각 데이터를 수집하고 발표하고자 할 경우, 각각의 코어에서 uORB의 API: orb_advertise와 orb_publish를 호출하고, uORB의 API는 내부에서 openAMP의 rpmsg 인터페이스를 호출하여 토픽 메시지를 발표한다. 발표하는 동시에 중단의 방식을 사용하여 토픽 메시지를 송신한다.
C 코어와 D 코어는 모두 A 코어와 B 코어의 방송 메시지를 수신할 수 있다. 방송 메시지의 토픽 이름을 각각 조회하는 것을 통해 C코어와 D 코어가 모두 A 코어와 B 코어의 메시지를 구독한다. 각각의 구독 코어는 orb_subscribe를 호출하여 각각 발표 코어의 토픽 메시지를 구독한다. C 코어는 실시간으로 A 코어와 C 코어 사이의 버퍼 영역의 메시지의 업데이트 상태 및 B 코어와 C 코어 사이의 버퍼 영역의 메시지의 업데이트 상태를 모니터링한다. D 코어는 실시간으로 A 코어와 D 코어 사이의 버퍼 영역의 메시지 업데이트 상태 및 B 코어와 D 코어 사이의 버퍼 영역의 메시지 업데이트 상태를 모니터링한다. 토픽 메시지의 업데이트가 존재할 경우, 구독 코어는 orb_copy를 호출하여 토픽이 제일 새로운 데이터를 획득하도록 한다.
상기 실시예에서는 주요하게 토픽 메시지의 구독과 발표를 설명하였으나 동일한 프레임워크 및 원리에 기반하면 본 발명에서의 멀티코어 통신 방법은 메시지의 구독, 원격 광고 취소/광고 토픽 메시지 취소 등 통신 프로세스를 더 구현할 수 있다는 것을 이해할 수 있다.
하나의 예시적인 실시예에서, 본 발명은 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티코어 통신 시스템에 응용되는 멀티코어 통신장치를 더 제공한다. 도 9에 도시된 바와 같이, 본 실시예의 장치는 제어 모듈(110), 연결 모듈(120), 발표 모듈(130) 및 구독 모듈(140)을 포함한다. 본 실시예의 장치는 도 1에 도시된 바와 같은 방법을 구현하기 위한 것이다. 제어 모듈(110)은 멀티코어가 운행하도록 제어하기 위한 것이다. 연결 모듈(120)은 통신층에 기반하여 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하기 위한 것이다. 발표 모듈(130)은 멀티코어에서의 발표 코어는 발표 구독층을 통해 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하기 위한 것이다. 구독 모듈(140)은 수신 코어가 발표 구독층의 설정 인터페이스를 호출하는 것에 응답하여 토픽 메시지를 구독하거나 획득하기 위한 것이다.
하나의 예시적인 실시예에서, 여전히 도 9를 참조하면, 제어 모듈(110)은 구체적으로, 멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 통신층에 기반하여 멀티코어에서의 원격 코어가 작동하도록 제어하며; 원격 코어가 리소스 테이블을 획득하되; 리소스 테이블은 마스터 코어에 의해 정의되고, 리소스 테이블은 코어 사이의 버퍼 영역의 영역 구획 원칙을 포함하며; 마스터 코어와 원격 코어가 리소스 테이블에 따라 동일한 배치 조목을 수행한다. 연결 모듈(120)은 구체적으로, 통신층에 기반하여 발표 코어와 수신 코어에서 각각 포트를 작성; 발표 코어의 포트 이름과 수신 코어의 포트 이름이 동일한 것에 응답하여 발표 코어와 수신 코어가 통신 연결을 구축한다.
하나의 예시적인 실시예에서, 여전히 도 9를 참조하면, 발표 모듈(130)은 구체적으로, 발표 코어가 발표 구독층의 제1 설정 인터페이스를 호출하고 제1 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 버퍼 영역에 송신하고; 중단방식으로 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지한다. 발표 코어가 발표 구독층의 제1 설정 인터페이스를 호출할 경우, 발표 모듈(130)은 발표 코어와 수신 코어에 각각 버퍼 공간을 구축하되, 버퍼 공간은 모두 토픽 이름에 대응되도록 하는데 더 사용된다.
하나의 예시적인 실시예에서, 여전히 도 9를 참조하면, 발표 모듈(130)은 발표 코어가 발표 구독층의 제2 설정 인터페이스를 호출하고 제2 설정 인터페이스가 통신층의 미리 설정된 인터페이스를 호출하여 버퍼 영역에서 토픽 메시지를 발표하는데 더 사용된다. 구독 모듈(140)은 구체적으로, 수신 코어가 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 버퍼 영역에서 토픽 메시지를 획득하되; 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함하고; 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장하는데 사용된다.
도 10에 도시된 바와 같은 것은 전자기기의 블록도이다. 본 발명은 전자기기를 더 제공하는데, 예를 들어 기기(500)는 이동 전화, 컴퓨터, 디지털 방송 단말기, 메시지 송수신 기기, 게임 콘솔, 태블릿 기기, 의료 기기, 피트니스 기기, 개인 휴대 정보 단말기 등일 수 있다.
기기(500)는 처리 어셈블리(502), 메모리(504), 전력 어셈블리(506), 멀티미디어 어셈블리(508), 오디오 어셈블리(510), 입력/출력(I/O) 인터페이스(512), 센서 어셈블리(514) 및 통신 어셈블리(516)와 같은 하나 또는 다수의 어셈블리를 포함할 수 있다.
처리 어셈블리(502)는 통상적으로 디스플레이, 전화 호출, 데이터 통신, 카메라 동작 및 동작과 관련된 동작을 기록하는 것과 같은 기기(500)의 전체 동작을 제어할 수 있다. 처리 어셈블리(502)는 하나 또는 다수의 프로세서(520)를 포함하여 명령을 실행함으로써 상술한 방법의 전부 또는 일부 단계를 완성할 수 있다. 이 밖에, 처리 어셈블리(502)는 하나 또는 다수의 모듈을 포함하여 처리 어셈블리(502)와 기타 어셈블리 사이의 인터랙티브를 용이하게 할 수 있다. 예를 들어, 처리 어셈블리(502)는 멀티미디어 모듈을 포함하여 멀티미디어 어셈블리(508)와 처리 어셈블리(502) 사이의 인터랙티브를 용이하게 할 수 있다.
메모리(504)는 여러 가지 유형의 데이터를 저장하여 기기(500)에서의 동작을 지지하도록 배치된다. 이러한 데이터의 예시는 기기(500)에서 작동하는 임의의 애플리케이션 프로그램 또는 방법의 명령, 연락인 데이터, 전화번호부 데이터, 메시지, 사진, 동영상 등을 포함한다. 메모리(504)는 임의의 유형의 휘발성 또는 비휘발성 저장 기기 또는 이들의 조합, 예를 들어 정적 랜덤 액세스 메모리(SRAM), 전기적 소거 및 프로그램 가능 읽기 전용 기억 장치(EEPROM), 소거 및 프로그램 가능 읽기용 기억 장치(EPROM), 프로그램 가능 읽기용 기억 장치(PROM), 읽기 전용 메모리(ROM), 자기 메모리, 플래시 메모리, 디스크 또는 시디롬에 의해 구현될 수 있다.
전력 어셈블리(506)는 기기(500)의 여러 가지 어셈블리에 전력을 제공한다. 전력 어셈블리(506)는 전력 관리 시스템, 하나 또는 다수의 전원 및 기타 기기(500)에 전력을 생성, 관리 및 분배하는 것과 관련되는 어셈블리를 포함할 수 있다.
멀티미디어 어셈블리(508)는 기기(500)와 사용자 사이에서 하나의 출력 인터페이스를 제공하는 스크린을 포함한다. 일부 실시예에서, 스크린은 액정 디스플레이(LCD)와 터치 패널(TP)을 포함할 수 있다. 만약 스크린이 터치 패널을 포함하면 스크린은 터치 스크린으로 구현되어 사용자로부터 입력 신호를 수신할 수 있다. 터치 패널은 하나 또는 다수의 터치 센서를 포함하여 터치, 슬라이딩 및 터치 패널에서의 제스처를 감지할 수 있다. 상기 터치 센서는 터치 또는 슬라이딩 동작의 경계를 감지할 수 있을 뿐만 아니라 상기 터치 또는 슬라이딩 동작과 관련되는 지속 시간과 압력을 더 검출할 수 있다. 일부 실시예에서, 멀티미디어 어셈블리(508)는 하나의 프론트 카메라 및/또는 리어 카메라를 포함한다. 기기(500)가 동작 모드, 예를 들어 촬영 모드 또는 동영상 모드에 놓일 경우, 프론트 카메라 및/또는 리어 카메라는 외부의 멀티미디어 데이터를 수신할 수 있다. 각각의 프론트 카메라와 리어 카메라는 하나의 고정된 광학 렌즈 시스템이거나 또는 초점 거리와 광학 줌 능력을 가질 수 있다.
오디오 어셈블리(510)는 오디오 신호를 출력 및/또는 입력하도록 배치된다. 예를 들어, 오디오 어셈블리(510)는 하나의 마이크(MIC)를 포함할 수 있고, 기기(500)가 동작 모드, 예를 들어 호출 모드, 기록 모드 및 음성 인식 모드에 놓일 경우, 마이크는 외부 오디오 신호를 수신하도록 배치된다. 수신된 오디오 신호는 메모리(504)에 추가로 저장되거나 또는 통신 어셈블리(516)를 거쳐 송신될 수 있다. 일부 실시예에서, 오디오 어셈블리(510)는 하나의 스피커를 더 포함하여 오디오 신호를 출력할 수 있다.
I/O 인터페이스(512)는 처리 어셈블리(502)와 외부 인터페이스 모듈 사이에 인터페이스를 제공하는데, 상기 외부 인터페이스 모듈은 키보드, 클릭 휠, 버튼 등 일 수 있다. 이러한 버튼은 홈 버튼, 볼륨 버튼, 시작 버튼 및 잠금 버튼을 포함할 수 있으나 이에 한정되지 않는다.
센서 어셈블리(514)는 하나 또는 다수의 센서를 포함하여 기기(500)에 여러 측면의 상태 평가를 제공한다. 예를 들어, 센서 어셈블리(514)는 기기(500)의 오픈/오프 상태, 어셈블리의 상대 측위를 검출할 수 있고는 바, 예를 들어, 상기 어셈블리는 기기(500)의 디스플레이와 키 패드이고, 센서 어셈블리(514)는 기기(500) 또는 기기(500)의 하나의 어셈블리의 위치 변화, 사용자와 기기(500)의 접촉 여부, 기기(500) 방위 또는 가속/감속 및 기기(500)의 온도 변화를 더 검출할 수 있다. 센서 어셈블리(514)는 그 어떤 물리적인 접촉이 존재하지 않을 경우, 주변의 물체의 존재를 검출하기 위한 근접 센서를 포함할 수 있다. 센서 어셈블리(514)는 CMOS 또는 CCD이미지 센서와 같이 이미징 애플리케이션에 사용되는 광 센서를 더 포함할 수 있다. 일부 실시예에서, 상기 센서 어셈블리(514)는 가속도 센서, 자이로스코프 센서, 자기 센서, 압력 센서 또는 온도 센서를 더 포함할 수 있다.
통신 어셈블리(516)는 전자기기(500)와 기타 기기 사이의 유선 또는 무선방식의 통신에 용이하도록 배치된다. 전자기기(500)는 통신 표준에 기반한 무선 네트워크, 예를 들어 WI-FI, 2G 또는 6G, 또는 이들의 조합에 액세스할 수 있다. 하나의 예시적인 실시예에서, 통신 어셈블리(516)는 방송 채널을 거쳐 외부 방송 관리 시스템으로부터 방송 신호 또는 방송 관련 정보를 수신할 수 있다. 하나의 예시적인 실시예에서, 통신 어셈블리(516)는 근거리 통신(NFC) 모듈을 더 포함하여 단거리 통신을 촉진한다. 예를 들어, NFC 모듈은 무선 주파수 인식(RFID) 기술, 적외선 데이터 통신(IrDA) 기술, 초광대역(UWB) 기술, 블루투스(BT) 및 기타 기술에 기반하여 구현될 수 있다.
예시적인 실시예에서, 기기(1200)는 하나 또는 다수의 응용 주문형 집적 회로(ASIC), 디지털 신호 프로세서(DSP), 디지털 신호 처리 기기(DSPD), 프로그램 가능 논리 소자(PLD), 필드 프로그램 가능 게이트 어레이(FPGA), 제어기, 마이크로 제어기, 마이크로 프로세서 또는 기타 전자소자에 의해 구현되어 상술한 방법을 수행할 수 있다.
본 발명의 다른 한 예시적인 실시예에서는 비 일시적 컴퓨터 판독 가능 저장 매체, 예를 들어 명령을 포함하는 메모리(504)를 제공하는데, 상기 명령은 기기(500)의 프로세서(520)에 의해 실행되어 상기 방법을 완성한다. 예를 들어, 컴퓨터 판독 가능 저장매체는 ROM, 랜덤 액세스 메모리(RAM), CD-ROM, 자기 테이프, 플로피 디스크 및 광학 데이터 저장 기기 등 일 수 있다. 저장매체에서의 명령이 전자기기의 프로세서에 의해 실행될 경우 전자기기는 상술한 방법을 수행할 수 있다.
본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들은 명세서 및 여기서 개시한 발명을 실천하는 것을 고려한 후, 본 발명의 기타 실시형태를 쉽게 생각할 수 있다. 본 발명은 본 발명의 임의의 변형, 용도 또는 적합한 변화를 포함하는 것을 말하는데 이러한 변형, 용도 또는 적합한 변화는 본 발명의 일반성 원리를 준수하고 본 발명이 개시하지 않은 본 기술분야에서 공지된 상식 또는 관용적인 기술수단을 포함한다. 명세서와 실시예는 단지 예시적인 것으로서, 본 발명의 진정한 범위와 정신은 아래의 청구범위에 의해 지적된다.
본 발명은 이상에서 이미 설명하고 도면에서 도시한 정확한 구조에 한정되지 않고 이의 범위를 벗어나지 않는 전제하에 여러 가지 수정과 변화가 가능하다는 것을 이해해야 한다. 본 발명의 범위는 단지 첨부된 청구범위에 의해 한정된다.
110: 제어 모듈 120: 연결 모듈
130: 발표 모듈 140: 구독 모듈
130: 발표 모듈 140: 구독 모듈
Claims (18)
- 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티코어 통신 시스템에 응용되는 멀티코어 통신방법에 있어서,
멀티코어가 운행하도록 제어하는 단계;
상기 통신층에 기반하여 상기 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 단계;
상기 멀티코어에서의 상기 발표 코어는 상기 발표 구독층을 통해 상기 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 토픽 메시지의 토픽 이름을 방송하는 단계; 및
상기 수신 코어가 상기 발표 구독층의 상기 미리 설정된 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 단계를 포함하고,
상기 멀티코어가 운행하도록 제어하는 단계는
상기 멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 상기 통신층에 기반하여 상기 멀티코어에서의 원격 코어가 작동하도록 제어하는 단계;
상기 원격 코어가, 상기 마스터 코어에 의해 정의되고 상기 코어 사이의 버퍼 영역의 영역 구획 원칙을 포함하는 리소스 테이블을 획득하는 단계; 및
상기 마스터 코어와 상기 원격 코어가 상기 리소스 테이블에 따라 동일한 배치 조목을 수행하는 단계를 포함하는
것을 특징으로 하는 멀티코어 통신방법.
- 제1항에 있어서,
상기 통신층은 openAMP 프레임워크 모드이고, 상기 발표 구독층은 uORB 모드인
것을 특징으로 하는 멀티코어 통신방법.
- 제1항에 있어서,
상기 통신층에 기반하여 상기 멀티코어에서의 상기 발표 코어와 상기 수신 코어의 통신 연결을 구축하는 단계는,
상기 통신층에 기반하여 상기 발표 코어와 상기 수신 코어에서 각각 포트를 작성하는 단계; 및
상기 발표 코어의 포트 이름과 상기 수신 코어의 포트 이름이 동일한 것에 응답하여 상기 발표 코어와 상기 수신 코어가 통신 연결을 구축하는 단계를 포함하는
것을 특징으로 하는 멀티코어 통신방법.
- 제1항에 있어서,
상기 멀티코어에서의 상기 발표 코어는 상기 발표 구독층을 통해 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 토픽 메시지를 발표하거나 또는 상기 토픽 메시지의 상기 토픽 이름을 방송하는 단계는,
상기 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출하고 상기 제1 설정 인터페이스가 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 토픽 메시지를 상기 버퍼 영역에 송신하는 단계;
중단방식으로 상기 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지하는 단계를 포함하는
것을 특징으로 하는 멀티코어 통신방법.
- 제4항에 있어서,
상기 발표 코어가 상기 발표 구독층의 상기 제1 설정 인터페이스를 호출할 경우, 상기 멀티코어 통신방법은,
상기 발표 코어와 상기 수신 코어에 각각 버퍼 공간을 구축하는 단계를 더 포함하고, 상기 버퍼 공간은 모두 상기 토픽 이름에 대응되는
것을 특징으로 하는 멀티코어 통신방법.
- 제5항에 있어서,
상기 멀티코어에서의 상기 발표 코어는 상기 발표 구독층을 통해 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 토픽 메시지를 발표하거나 또는 상기 토픽 메시지의 상기 토픽 이름을 방송하는 단계는,
상기 발표 코어가 상기 발표 구독층의 제2 설정 인터페이스를 호출하고, 상기 제2 설정 인터페이스가 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 버퍼 영역에서 상기 토픽 메시지를 발표하는 단계를 포함하는
것을 특징으로 하는 멀티코어 통신방법.
- 제6항에 있어서,
상기 수신 코어가 상기 발표 구독층의 상기 미리 설정된 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 단계는,
상기 수신 코어가 상기 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 상기 버퍼 영역에서 상기 토픽 메시지를 획득하는 단계 - 상기 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함함 -; 및
상기 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장하는 단계를 포함하는
것을 특징으로 하는 멀티코어 통신방법.
- 제6항에 있어서,
상기 제1 설정 인터페이스는 orb_advertise이고, 상기 제2 설정 인터페이스는 orb_publish이며; 상기 미리 설정된 인터페이스는 rpmsg_send_message인 것을 특징으로 하는 멀티코어 통신방법.
- 다수의 코어, 발표 구독층 및 통신층을 포함하는 멀티코어 통신 시스템에 응용되는 멀티코어 통신장치에 있어서,
멀티코어가 운행하도록 제어하는 제어 모듈;
상기 통신층에 기반하여 상기 멀티코어에서의 발표 코어와 수신 코어의 통신 연결을 구축하는 연결 모듈;
상기 멀티코어에서의 상기 발표 코어는 상기 발표 구독층을 통해 상기 통신층의 미리 설정된 인터페이스를 호출하여 토픽 메시지를 발표하거나 또는 상기 토픽 메시지의 토픽 이름을 방송하는 발표 모듈; 및
상기 수신 코어가 상기 발표 구독층의 상기 미리 설정된 인터페이스를 호출하는 것에 응답하여 상기 토픽 메시지를 구독하거나 획득하는 구독 모듈을 포함하고,
상기 제어 모듈은 구체적으로,
상기 멀티코어에서의 마스터 코어가 작동 운행하도록 제어하고, 상기 통신층에 기반하여 상기 멀티코어에서의 원격 코어가 작동하도록 제어하며;
상기 원격 코어가, 상기 마스터 코어에 의해 정의되고 상기 코어 사이의 버퍼 영역의 영역 구획 원칙을 포함하는 리소스 테이블을 획득하고;
상기 마스터 코어와 상기 원격 코어가 상기 리소스 테이블에 따라 동일한 배치 조목을 수행하는
것을 특징으로 하는 멀티코어 통신장치.
- 제9항에 있어서,
상기 연결 모듈은 구체적으로,
상기 통신층에 기반하여 상기 발표 코어와 상기 수신 코어에서 각각 포트를 작성하고;
상기 발표 코어의 포트 이름과 상기 수신 코어의 포트 이름이 동일한 것에 응답하여 상기 발표 코어와 상기 수신 코어가 통신 연결을 구축하는
것을 특징으로 하는 멀티코어 통신장치.
- 제9항에 있어서,
상기 발표 모듈은 구체적으로,
상기 발표 코어가 상기 발표 구독층의 제1 설정 인터페이스를 호출하고 제1 설정 인터페이스가 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 토픽 메시지를 상기 버퍼 영역에 송신하며;
중단방식으로 상기 수신 코어에 방송 토픽 메시지의 토픽 이름을 통지하는 것을 특징으로 하는 멀티코어 통신장치.
- 제11항에 있어서,
상기 발표 코어가 상기 발표 구독층의 상기 제1 설정 인터페이스를 호출할 경우, 상기 발표 모듈은,
상기 발표 코어와 상기 수신 코어에 각각 버퍼 공간을 구축하는데 더 사용되고, 상기 버퍼 공간은 모두 상기 토픽 이름에 대응되는
것을 특징으로 하는 멀티코어 통신장치.
- 제12항에 있어서,
상기 발표 모듈은,
상기 발표 코어가 상기 발표 구독층의 제2 설정 인터페이스를 호출하고, 상기 제2 설정 인터페이스가 상기 통신층의 상기 미리 설정된 인터페이스를 호출하여 상기 버퍼 영역에서 상기 토픽 메시지를 발표하는데 더 사용되는
것을 특징으로 하는 멀티코어 통신장치.
- 제13항에 있어서,
상기 구독 모듈은 구체적으로,
상기 수신 코어가 상기 발표 구독층의 제3 설정 인터페이스를 호출하는 것에 응답하여 상기 버퍼 영역에서 상기 토픽 메시지를 획득하는데 사용되고;
상기 제3 설정 인터페이스는 orb_subscribe와 orb_copy를 포함하고;
상기 토픽 메시지를 미리 설정된 코어의 버퍼 공간에 저장하는
것을 특징으로 하는 멀티코어 통신장치.
- 전자기기에 있어서,
프로세서; 및
프로세서의 실행 가능 명령을 저장하기 위한 메모리를 포함하고;
상기 프로세서는 제1항 내지 제8항 중 어느 한 항에 따른 멀티코어 통신방법을 수행하도록 배치되는
것을 특징으로 하는 전자기기.
- 비 일시적 컴퓨터 판독 가능 저장 매체에 있어서,
상기 저장매체에서의 명령이 전자기기의 프로세서에 의해 실행될 경우, 전자기기로 하여금 제1항 내지 제8항 중 어느 한 항에 따른 멀티코어 통신방법을 수행하도록 하는
것을 특징으로 하는 비 일시적 컴퓨터 판독 가능 저장 매체.
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110270991.5 | 2021-03-12 | ||
CN202110270991.5A CN112882987A (zh) | 2021-03-12 | 2021-03-12 | 多核通信方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220128237A KR20220128237A (ko) | 2022-09-20 |
KR102566622B1 true KR102566622B1 (ko) | 2023-08-14 |
Family
ID=76041518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210074810A KR102566622B1 (ko) | 2021-03-12 | 2021-06-09 | 멀티코어 통신방법, 장치, 전자기기 및 저장매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220291929A1 (ko) |
EP (1) | EP4057145A1 (ko) |
JP (1) | JP7220254B2 (ko) |
KR (1) | KR102566622B1 (ko) |
CN (1) | CN112882987A (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113505007A (zh) * | 2021-07-12 | 2021-10-15 | 北京鲸鲮信息***技术有限公司 | 基于Linux***的协议栈数据传输方法、计算机设备和存储介质 |
CN114153783B (zh) * | 2021-11-23 | 2022-11-08 | 珠海海奇半导体有限公司 | 多核通信机制的实现方法、***、计算机设备及存储介质 |
CN114363425B (zh) * | 2021-11-30 | 2023-06-13 | 岚图汽车科技有限公司 | 一种some/ip服务管理方法及相关设备 |
CN114866499B (zh) * | 2022-04-27 | 2024-02-23 | 曙光信息产业(北京)有限公司 | 片上多核***的同步广播通信方法、装置和存储介质 |
CN115862788B (zh) * | 2022-12-29 | 2023-08-29 | 中国科学院福建物质结构研究所 | 一种电子结构拓扑分析的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190332449A1 (en) * | 2018-04-27 | 2019-10-31 | Nasdaq Technology Ab | Publish-subscribe framework for application execution |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6668275B1 (en) * | 1999-12-17 | 2003-12-23 | Honeywell International Inc. | System and method for multiprocessor management |
AU2603901A (en) * | 1999-12-29 | 2001-07-09 | Johns Hopkins University, The | System, method, and computer program product for high speed backplane messaging |
GB0426846D0 (en) * | 2004-12-08 | 2005-01-12 | Ibm | Method and system for administration of a broker-based publish/subscribe messaging system |
CN101667202A (zh) * | 2009-10-19 | 2010-03-10 | 浙江大学 | 一种多核架构下基于语义的发布订阅***中并行匹配方法 |
JP5610773B2 (ja) | 2010-01-06 | 2014-10-22 | キヤノン株式会社 | メッセージ処理装置およびメッセージ処理方法 |
JP2011211650A (ja) * | 2010-03-30 | 2011-10-20 | Oki Electric Industry Co Ltd | 告知放送サーバ及び告知端末 |
US8578203B2 (en) * | 2010-08-31 | 2013-11-05 | Autonomy, Inc. | Providing a backup service from a remote backup data center to a computer through a network |
US8954721B2 (en) * | 2011-12-08 | 2015-02-10 | International Business Machines Corporation | Multi-chip initialization using a parallel firmware boot process |
CN103729329B (zh) * | 2012-10-12 | 2018-01-19 | 深圳市中兴微电子技术有限公司 | 核间通信装置及方法 |
JP2017073688A (ja) * | 2015-10-08 | 2017-04-13 | 学校法人 京都産業大学 | 通信ネットワークシステム |
US10289785B1 (en) * | 2016-09-15 | 2019-05-14 | Xilinx, Inc. | Platform architecture creation for a system-on-chip |
US10572405B1 (en) * | 2018-12-28 | 2020-02-25 | Didi Research America, Llc | Writing messages in a shared memory architecture for a vehicle |
WO2021143190A1 (zh) * | 2020-01-19 | 2021-07-22 | 华为技术有限公司 | 消息通信方法、计算机***及代理装置 |
CN111745651B (zh) * | 2020-06-15 | 2022-04-05 | 哈工大机器人(合肥)国际创新研究院 | 一种智能机器人操作***结构及其运作方法 |
CN112351068A (zh) * | 2020-09-29 | 2021-02-09 | 苏宁云计算有限公司 | 信息同步方法、***、装置、计算机设备和存储介质 |
-
2021
- 2021-03-12 CN CN202110270991.5A patent/CN112882987A/zh active Pending
- 2021-06-09 KR KR1020210074810A patent/KR102566622B1/ko active IP Right Grant
- 2021-06-22 JP JP2021103214A patent/JP7220254B2/ja active Active
- 2021-06-22 US US17/354,587 patent/US20220291929A1/en active Pending
- 2021-06-29 EP EP21182493.3A patent/EP4057145A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190332449A1 (en) * | 2018-04-27 | 2019-10-31 | Nasdaq Technology Ab | Publish-subscribe framework for application execution |
Also Published As
Publication number | Publication date |
---|---|
JP2022140216A (ja) | 2022-09-26 |
US20220291929A1 (en) | 2022-09-15 |
CN112882987A (zh) | 2021-06-01 |
KR20220128237A (ko) | 2022-09-20 |
EP4057145A1 (en) | 2022-09-14 |
JP7220254B2 (ja) | 2023-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102566622B1 (ko) | 멀티코어 통신방법, 장치, 전자기기 및 저장매체 | |
JP6068736B2 (ja) | アプリケーションプログラムの実行方法および装置 | |
KR101744183B1 (ko) | 호스트 디바이스의 능력들의 증강 | |
US20220400137A1 (en) | Widget display method and apparatus | |
RU2652452C2 (ru) | Устройство и способ представления информации о состоянии сети | |
US9170842B2 (en) | Information processing terminal and resource release method | |
JP7100154B6 (ja) | プロセッサコアのスケジューリング方法、装置、端末及び記憶媒体 | |
EP4344180A1 (en) | Incoming-call reminding method and electronic device | |
CN106027631B (zh) | 一种数据传输方法及装置 | |
CN111614549A (zh) | 交互处理方法、装置、计算机设备及存储介质 | |
CN109861966B (zh) | 处理状态事件的方法、装置、终端及存储介质 | |
CN110888683B (zh) | 操作***的性能优化方法、装置及可读介质 | |
CN108874554B (zh) | 信息通信方法及装置 | |
CN114222003A (zh) | 服务调用方法、***、装置、设备及存储介质 | |
WO2023179183A1 (zh) | 子程序同步处理 | |
CN112839065A (zh) | 信息处理方法、装置、第一设备及存储介质 | |
CN115225966A (zh) | 应用启动方法、装置、终端设备和存储介质 | |
CN115437719A (zh) | 跨操作***的调用方法、装置及电子设备 | |
CN115190158A (zh) | 信息交互方法、信息交互装置、***及存储介质 | |
WO2020001450A1 (zh) | 省电管理方法、图形用户界面以及终端 | |
CN111726848A (zh) | 设备绑定方法、目标启动装置、固定终端及存储介质 | |
CN113392120A (zh) | 获取SQLite的执行信息的方法及装置 | |
WO2023169157A1 (zh) | 子应用程序的运行方法、装置、电子设备、程序产品及存储介质 | |
CN116841702A (zh) | 外壳shell命令跨核执行方法、装置、电子设备及存储介质 | |
WO2023173896A1 (zh) | 通信方法、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |