CN112068970B - 基于异构多核处理器的rpc实现方法及介质 - Google Patents

基于异构多核处理器的rpc实现方法及介质 Download PDF

Info

Publication number
CN112068970B
CN112068970B CN202010795912.8A CN202010795912A CN112068970B CN 112068970 B CN112068970 B CN 112068970B CN 202010795912 A CN202010795912 A CN 202010795912A CN 112068970 B CN112068970 B CN 112068970B
Authority
CN
China
Prior art keywords
call
core
rpc
function
data
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN202010795912.8A
Other languages
English (en)
Other versions
CN112068970A (zh
Inventor
曹子龙
曾治金
黄少锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allwinner Technology Co Ltd
Original Assignee
Allwinner Technology Co Ltd
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 Allwinner Technology Co Ltd filed Critical Allwinner Technology Co Ltd
Priority to CN202010795912.8A priority Critical patent/CN112068970B/zh
Publication of CN112068970A publication Critical patent/CN112068970A/zh
Application granted granted Critical
Publication of CN112068970B publication Critical patent/CN112068970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/547Remote procedure calls [RPC]; Web services
    • 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/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • 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/544Buffers; Shared memory; Pipes

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)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种基于异构多核处理器的RPC实现方法及介质,包括:任意处理核心作为请求方发起调用请求时,创建第一代理线程将调用数据进行序列化打包,并通过Mailbox寄存器或共享内存进行发送;被调方创建第二代理线程进行实时监控,接收到调用数据时进行读取和反序列化处理,获取被调用参数信息,通过第二代理线程根据参数信息进行调用,返回调用结果。本发明的有益效果为:对性能依赖度低,可以在低成本异构平台上实现;操作系统不限;不区分主从核,可以实现双向RPC调用。

Description

基于异构多核处理器的RPC实现方法及介质
技术领域
本发明涉及嵌入式领域,具体涉及了一种基于异构多核处理器的RPC实现方法及介质。
背景技术
随着芯片工艺越来越接近摩尔定律的极限,以往依赖增加单位面积晶体管数目来提高芯片性能的方法已经难以为继,定制化芯片的设计方法越来越受到重视。通过把不同ISA架构的处理器核心集成到一个系统中,可以将不同类型的计算任务分配到不同的处理器核心并行处理,从而为产品提供更加灵活,高效的处理机制,是定制化芯片的发展方向之一。
由于ISA的差异,异构多核系统一般采用AMP结构部署软件方案,后者的特点是每个核心运行独立的操作系统或者同一操作系统的独立实例,彼此之间不共享代码和内核对象等系统资源。
在AMP工作模型下,核心之间是功能互补和互相依赖的,但由于ISA,二进制ABI标准和执行环境的不同,彼此之间无法直接调用对方提供的服务。为了实现异构核心之间任务协同和功能互访,基础系统需要提供远程过程调用(RPC)机制满足此种需求。通过双向RPC,可以屏蔽不同核心ISA指令集的差异,使远端代码如同在本地一样被执行。为BSP开发,驱动和应用开发者提供一致的系统接口和开发界面。
目前,业内在异构多核RPC方面并未有标准协议和标准接口。一些是基于共享内存查询的方式实现。共享数据中存有被调函数的标识和参数信息,目标核查询到数据后,根据核间事先约定的私有协议对数据进行解析,得到远端调用接口和参数信息,然后通过代理线程转化为本地调用。但这种实现由于采用查询方式,执行效率较低。
发明内容
本发明的目的在于至少解决现有技术中存在的技术问题之一,提供了一种基于异构多核处理器的RPC实现方法及介质,通过串口命令与系统控制处理器进行交互,支持内存和寄存器访问、应用处理器状态监测、支持交互式调试,操作简便,成本低廉。
本发明的技术方案包括一种基于异构多核处理器的RPC实现方法,所述异构多核处理器包括至少两个处理核心,其特征在于:S100,任意处理核心作为请求方发起调用请求时,创建第一代理线程将调用数据进行序列化打包,并通过Mailbox寄存器或共享内存进行发送;S200,被调方创建第二代理线程进行实时监控,接收到所述调用数据时进行读取和反序列化处理,获取被调用参数信息,通过所述第二代理线程根据所述参数信息进行调用,返回调用结果。
根据所述的基于异构多核处理器的RPC实现方法,其中任意所述处理核心均可以作为请求方或被调方。
根据所述的基于异构多核处理器的RPC实现方法,其中调用数据包括函数标识、函数参数列表及数据包体积。
根据所述的基于异构多核处理器的RPC实现方法,其中S100包括:S110,对所述函数标识及函数参数列表进行打包,具体地,对所述参数列表中非指针参数进行直接打包,对指针参数进行深度拷贝,生成函数调用闭包;S120,根据所述函数调用闭包的数据包体积,对数据包体积小于设定值的数据包写入所述Mailbox寄存器,对数据包体积不小于设定值的数据包写入所述共享内存;S130,发送IPI核间请求至被调方处理核心。
根据所述的基于异构多核处理器的RPC实现方法,其中深度拷贝具体包括:对所述指针参数进行深度遍历,获取所述指针参数的树形结构,并对所述树形结构进行扁平化处理,生成对应的闭包,其中,闭包包括所述指针参数的层级、依赖关系及偏移。
根据所述的基于异构多核处理器的RPC实现方法,其中S200包括:S210,被调方接收到所述IPI核间请求唤醒所述第二代理线程,通过所述第二代理线程读取所述Mailbox寄存器或所述共享内存的所述调用数据,解析得到被调用的所述函数标识及函数参数列表;S220,根据所述函数标识获取对应的函数入口,将所述函数参数列表传入所述函数入口执行调用,得到调用结果;S230,将所述调用结果通过所述Mailbox寄存器或所述共享内存,并通过所述第二代理线程发送IPI中断信号,请求方处理核心根据所述IPI中断信号获取调用结果。
根据所述的基于异构多核处理器的RPC实现方法,其中该方法还包括:所述第一代理线程及第二代理线程每次完成调用后,自动挂起并实施监控对应处理核心的调用请求。
根据所述的基于异构多核处理器的RPC实现方法,其中第二代理线程的数量根据所述调用数据的大小进行自定义增减。
根据所述的基于异构多核处理器的RPC实现方法,其中任意所述处理核心之间的传输方式及参数信息可自定义设置。
本发明的技术方案还包括一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一的方法步骤。
本发明的有益效果为:对性能依赖度低,可以在低成本异构平台上实现;操作系统不限;不区分主从核,可以实现双向RPC调用。
附图说明
下面结合附图和实施例对本发明进一步地说明;
图1所示为根据本发明实施方式的方法流程图;
图2所示为根据本发明实施方式的处理核心交互示意图;
图3所示为根据本发明实施方式的一次RPC调用的时序图;
图4a,图4b,图4c所示为根据本发明实施方式的深度拷贝示意图。
具体实施方式
本部分将详细描述本发明的具体实施例,本发明之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本发明的每个技术特征和整体技术方案,但其不能理解为对本发明保护范围的限制。
在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
术语解释:
RPC调用:远程过程调用。
本发明的描述中,除非另有明确的限定,设置等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
图1所示为根据本发明实施方式的方法流程图,具体地:S100,任意处理核心作为请求方发起调用请求时,创建第一代理线程将调用数据进行序列化打包,并通过Mailbox寄存器或共享内存进行发送;S200,被调方创建第二代理线程进行实时监控,接收到调用数据时进行读取和反序列化处理,获取被调用参数信息,通过第二代理线程根据参数信息进行调用,返回调用结果。
图2所示为根据本发明实施方式的处理核心交互示意图,本地核心(如图2的发起方处理核心)首先将RPC访问请求进行序列化打包,被打包数据包括函数标识(ID),函数参数信息,然后根据数据包长度的大小,选择通过mailbox寄存器机制或者共享内存方式传递给被调方,接着本地核触发核间中断,通知远程核有待处理的RPC请求,完成上述操作后,请求线程进入Pending(挂起)状态,等待远程核RPC结束通知。
远端方面(如2图中的被调方处理核心),核心创建1个或者多个代理线程,在RPC请求未到达时,代理线程一直处于Pending(挂起)状态,直到接收到远程RPC的中断请求。远端线程首先从共享内存或者Mailbox寄存器中读取数据包,获取被调接口标识信息,然后进行参数反序列化,获取被调参数信息。得到以上信息后,代理线程负责执行函数调用,调用结束后,将返回数据通过Mailbox寄存器或所述共享内存发送给RPC发起方,然后触发核间中断通知RPC过程已完成。之后代理线程进入挂起状态等候下一个RPC请求。
调用发起方接收到RPC结束中断信号后立即唤醒调用线程,后者从共享内存中拿到RPC返回信息后,返回到上一级,完成一次RPC过程。
图3所示为根据本发明实施方式的一次RPC调用的时序图,如图3所示:系统初始化阶段,系统将可以进行远程RPC调用的函数统一分组,并为每一个RPC服务函数统一分配ID号用于区分不同的RPC服务。其中的步骤a-j如下所示:
a.RPC调用发起方的第一代理线程将目标函数ID和参数列表打包,对于非指针参数(目标函数不会对齐进行间接引用的参数),可对非指针参数直接打包,但对于指针参数,需要进行深拷贝操作,保证RPC目标所需要的所有数据对象都被打包在内,形成一个函数调用闭包(Closure).
b.根据闭包的大小,数据量较小的写入MailBox寄存器,如果数据量较大,则写入共享内存,保证对于RPC的被调方处理核心可访问。
c.请求方处理核心发送IPI核间中断给另一个内核,通知被调方处理核心有新的RPC服务请求,唤醒被调方处理核心.
d.被调方处理核心收到IPI中断信号(IPI通知),唤醒第二代理线程。
e.唤醒后的第二代理线程读取Mailbox或者共享内存的RPC服务请求数据,对其解析后获取函数ID和参数信息。
f.根据上一步得到的函数ID获取函数入口,传参并跳入入口执行实际的RPC调用,得到返回值。
g.返回值回写进Mailbox寄存器或者共享内存。
h.发送IPI中断信号,通知请求方处理核心RPC过程已完成。
i.请求方处理核心收到中断信号,唤醒RPC发起线程。
j.RPC发起线程读取MailBox寄存器或者共享内存中的返回值信息,退出RPC过程,完成RPC调用。
由于本设计不分主从核,所有异构核心之间地位平等,所以请求方处理核心和被调方处理核心的角色可以互换,每个提供RPC服务的核心都需要创建至少一个代理线程。为了提高RPC调用服务请求的吞吐量,第二代理线程可以创建多个。
图4a,图4b,图4c所示为根据本发明实施方式的深度拷贝示意图。对于图4a,具体通过以下示例介绍:
以一个带结构体指针的复杂函数调用为例:
函数原型:int feed_foo_bar(char*name,struct feed*material);
参数说明:
1.Char*name;
2.struct feed{
struct water*water;
struct food*food;
struct girl*beauty;
};
其中,water,food,girl三种类型大小分别为N1,N2,N3。
对于图4b,参数之间的组织关系可以由多叉树结构标识,其中,第二层节点为一级参数节点,代表参数列表中的参数,下级节点可以有很多层,表示由一级参数引入的指针参数指向关系,这个树形结构直到所有叶子参数节点不存在指针成员才会结束。
序列化生成闭包的过程,即使将上述树形结构扁平化的过程,通过扁平化操作,对每个指针成员进行深拷贝,生成如图4c格式的参数闭包内容。
对于图4c,闭包结构中存有参数的层级和依赖关系,虚线中的指针值计算是基于整个参数包的偏移。远端收到RPC后,保证可以复原出和RPC调用发起端一模一样的参数信息,可以完成RPC调用。本发明的技术方案不限制参数的传输个数和传输形式,可以像调用本地函数一样调用远端函数。
上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

Claims (7)

1.一种基于异构多核处理器的RPC实现方法,所述异构多核处理器包括至少两个处理核心,其特征在于:
S100,任意处理核心作为请求方发起调用请求时,创建第一代理线程将调用数据进行序列化打包,并通过Mailbox寄存器或共享内存进行发送;所述调用数据包括函数标识、函数参数列表及数据包体积;
S200,被调方创建第二代理线程进行实时监控,接收到所述调用数据时进行读取和反序列化处理,获取被调用参数信息,通过所述第二代理线程根据所述参数信息进行调用,返回调用结果;
所述S100包括:
S110,对所述函数标识及函数参数列表进行打包,具体地,对所述参数列表中非指针参数进行直接打包,对指针参数进行深度拷贝,生成函数调用闭包;
S120,根据所述函数调用闭包的数据包体积,对数据包体积小于设定值的数据包写入所述Mailbox寄存器,对数据包体积不小于设定值的数据包写入所述共享内存;
S130,发送IPI核间请求至被调方处理核心;
所述S200包括:
S210,被调方接收到所述IPI核间请求唤醒所述第二代理线程,通过所述第二代理线程读取所述Mailbox寄存器或所述共享内存的所述调用数据,解析得到被调用的所述函数标识及函数参数列表;
S220,根据所述函数标识获取对应的函数入口,将所述函数参数列表传入所述函数入口执行调用,得到调用结果;
S230,将所述调用结果通过所述Mailbox寄存器或所述共享内存,并通过所述第二代理线程发送IPI中断信号,请求方处理核心根据所述IPI中断信号获取调用结果。
2.根据权利要求1所述的基于异构多核处理器的RPC实现方法,其特征在于,任意所述处理核心均可以作为请求方或被调方。
3.根据权利要求1所述的基于异构多核处理器的RPC实现方法,其特征在于,所述深度拷贝具体包括:
对所述指针参数进行深度遍历,获取所述指针参数的树形结构,并对所述树形结构进行扁平化处理,生成对应的闭包,其中,闭包包括所述指针参数的层级、依赖关系及偏移。
4.根据权利要求1所述的基于异构多核处理器的RPC实现方法,其特征在于,该方法还包括:
所述第一代理线程及第二代理线程每次完成调用后,自动挂起并实施监控对应处理核心的调用请求。
5.根据权利要求1所述的基于异构多核处理器的RPC实现方法,其特征在于,所述第二代理线程的数量根据所述调用数据的大小进行自定义增减。
6.根据权利要求1所述的基于异构多核处理器的RPC实现方法,其特征在于,任意所述处理核心之间的传输方式及参数信息可自定义设置。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一所述的方法步骤。
CN202010795912.8A 2020-08-10 2020-08-10 基于异构多核处理器的rpc实现方法及介质 Active CN112068970B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010795912.8A CN112068970B (zh) 2020-08-10 2020-08-10 基于异构多核处理器的rpc实现方法及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010795912.8A CN112068970B (zh) 2020-08-10 2020-08-10 基于异构多核处理器的rpc实现方法及介质

Publications (2)

Publication Number Publication Date
CN112068970A CN112068970A (zh) 2020-12-11
CN112068970B true CN112068970B (zh) 2024-04-19

Family

ID=73661025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010795912.8A Active CN112068970B (zh) 2020-08-10 2020-08-10 基于异构多核处理器的rpc实现方法及介质

Country Status (1)

Country Link
CN (1) CN112068970B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114691380A (zh) * 2020-12-29 2022-07-01 深圳云天励飞技术股份有限公司 一种数据流水编排方法、装置、存储介质及终端设备
CN114153783B (zh) * 2021-11-23 2022-11-08 珠海海奇半导体有限公司 多核通信机制的实现方法、系统、计算机设备及存储介质
CN114595186B (zh) * 2022-05-09 2022-08-12 深圳比特微电子科技有限公司 一种多核处理器的核间通信方法、通信装置
WO2024036463A1 (en) * 2022-08-16 2024-02-22 Qualcomm Incorporated Remote procedure call virtualization

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870588A (en) * 1995-10-23 1999-02-09 Interuniversitair Micro-Elektronica Centrum(Imec Vzw) Design environment and a design method for hardware/software co-design
CN1811717A (zh) * 2006-01-10 2006-08-02 杭州东信灵通电子实业公司 通用进程间通信实现方法
CN101354693A (zh) * 2008-09-11 2009-01-28 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
CN101901207A (zh) * 2010-07-23 2010-12-01 中国科学院计算技术研究所 异构共享存储多处理机系统的操作系统及其工作方法
KR20140140790A (ko) * 2013-05-30 2014-12-10 엠디에스테크놀로지 주식회사 Rtos 기반 임베디드 시스템 소프트웨어 모니터링을 위한 타겟 에이젼트 운용 방법
CN105718796A (zh) * 2016-01-21 2016-06-29 西安电子科技大学 一种安卓用户隐私数据访问的系统调用级监控方法
CN105893320A (zh) * 2016-03-29 2016-08-24 浙江大学 一种面向多核处理器的远程任务函数调用方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191789B2 (en) * 2016-08-18 2019-01-29 Crowdstrike, Inc. Tracing system operations across remote procedure linkages to identify request originators

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870588A (en) * 1995-10-23 1999-02-09 Interuniversitair Micro-Elektronica Centrum(Imec Vzw) Design environment and a design method for hardware/software co-design
CN1811717A (zh) * 2006-01-10 2006-08-02 杭州东信灵通电子实业公司 通用进程间通信实现方法
CN101354693A (zh) * 2008-09-11 2009-01-28 重庆邮电大学 一种异构多核处理器的核间通信调度系统及方法
CN101901207A (zh) * 2010-07-23 2010-12-01 中国科学院计算技术研究所 异构共享存储多处理机系统的操作系统及其工作方法
KR20140140790A (ko) * 2013-05-30 2014-12-10 엠디에스테크놀로지 주식회사 Rtos 기반 임베디드 시스템 소프트웨어 모니터링을 위한 타겟 에이젼트 운용 방법
CN105718796A (zh) * 2016-01-21 2016-06-29 西安电子科技大学 一种安卓用户隐私数据访问的系统调用级监控方法
CN105893320A (zh) * 2016-03-29 2016-08-24 浙江大学 一种面向多核处理器的远程任务函数调用方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种基于异构双核处理器的嵌入式操作系统构架设计;蒋建春;曾素华;岑明;;计算机应用(10);全文 *
支持多核架构的微内核操作系统设计;张荫芾;应忍冬;周玲玲;;计算机工程(23);全文 *

Also Published As

Publication number Publication date
CN112068970A (zh) 2020-12-11

Similar Documents

Publication Publication Date Title
CN112068970B (zh) 基于异构多核处理器的rpc实现方法及介质
CN109426574B (zh) 分布式计算系统,分布式计算系统中数据传输方法和装置
JP3251800B2 (ja) ネットワーク内のコンピュータ間でデータを交換するための通信システム
Kafura et al. ACT++: building a concurrent C++ with actors
US6272559B1 (en) Deferred reconstruction of objects and remote loading for event notification in a distributed system
EP0899659B1 (en) An apparatus and method for simulating multiple nodes on a single machine
CN116243995B (zh) 通信方法、装置、计算机可读存储介质以及电子设备
JPH0283627A (ja) インタプリタ
CN113032166A (zh) 核间通信的方法、处理器、核间通信系统及计算机可读存储介质
CN116795647A (zh) 一种数据库异构资源管理与调度方法、装置、设备及介质
CN108829530B (zh) 一种图像处理方法及装置
US6128679A (en) Computer for executing I/O instructions, by emulation, in a foreign application program wherein the emulator result thread is blocked from running between processes
US6289391B1 (en) System and method for performing external procedure calls from a server program to a client program while both are running in a heterogeneous computer
CN107329842B (zh) 基于Qt信号槽机制的获取数据的方法及终端
Bertolotti et al. Modular design of an open-source, networked embedded system
CN109669793B (zh) 中间件进程内对象调用方法
CN116680209A (zh) 基于wasm的多智能合约实例管理方法
CN115617407A (zh) 一种嵌入式操作系统的硬件驱动方法
CN115827285A (zh) 一种跨平台通信方法、系统、装置、设备及介质
US8276165B2 (en) Continuation-based runtime callback invocation
CN116225702A (zh) 一种异构加速任务处理系统、方法、设备及存储介质
CN111596962A (zh) 一种基于高速协议通道的实时微内核系统及其初始化方法
CN113312031A (zh) 一种软件通信体系结构的命名服务接口
CN110908665B (zh) jenkins构建插件开发优化方法及系统
KR20010040971A (ko) 분산 시스템에서 오브젝트의 지연된 재구성 및 이벤트통지를 위한 원격 로딩

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant