在多核环境中实现由不交错的有向无环图定义的软件模块的方法技术

技术编号:39518561 阅读:15 留言:0更新日期:2023-11-25 18:57
用于实现由有向无环元图

【技术实现步骤摘要】
【国外来华专利技术】在多核环境中实现由不交错的有向无环图定义的软件模块的方法


[0001]本专利技术涉及用于实现由不交错的有向无环图定义的软件模块的方法,所述软件模块包括分发给多个核的可执行程序


技术介绍

[0002]在车载系统领域,计算机如今使用具有多个计算单元或核的微处理器

这使得能够并行地同时执行多个软件单元

[0003]就功能性
(
例如控制热力发动机
)
和安全性
(
例如中断热力发动机的喷射以通过使车辆停止来确保安全性
)
而言,车载系统通常是实时系统,对于这样的系统,软件的响应时间是关键因素

[0004]车载实时系统执行用于操控各种致动器的控制功能,如泵

喷射器

阀门等

实现这些控制功能的算法通常必须以非常准确的顺序执行,使得一个算法计算的结果在最短的延迟内被下一算法计算在内,从而确保更好的系统响应时间

[0005]这些算法在称为可执行程序的功能中实现,所述可执行程序由在系统事件上同步的软件任务执行,这些软件任务可以以时间为基础
(1ms、5ms、10ms、100ms
等等
)
或以事件
(
发动机位置

接收到消息等等
)
提供的信号为基础循环计时

[0006]这些控制算法最初被开发为由单核微处理器执行,在这种情况下,执行只能顺序进行

如今,同样的算法也用在多核微处理器上,在这种情况下,执行可以并行进行

[0007]最好保证这些算法具有相同的实时行为,无论它们是由单核还是多核微处理器执行

利用各核带来的功率是有利的,但是必须保留计算链条

功能响应时间和共享数据一致性

如今,微处理器包括多个核,通常3到
10
个核

预计在不久的将来,它们将包括数百个核

[0008]用于描述并行算法的一个有利范例是“分叉和汇合”(
英语为“Fork and Join”)
或“分而治之”(
英语为“Divide and Conquer”)。
该范例使得能够将如图1所示的线性执行方案转换成如图2所示的并行方案,图1示出了在单个核上依次执行包括
42
个可执行单元
E
的软件模块,图2示出了通过分叉
f
将执行分到多个核上,并通过汇合
j
来汇合执行

图3示出了各可执行单元
E
在三个核
C1

C3
上的最终实现

[0009]借助于这种范式,可以借助于不交错的有向无环图
G
来定义软件模块的结构,如图
4、
图6至图9和图
13
所示


G
的每个点或节点都是一个可执行单元
E。
可执行单元
E
由其代码定义,代码必须是顺序的,并且可在单个核
C1

C4
上执行

所述代码存储在图
G
中或通过图
G
进行索引


G
还包括每个可执行单元
E
到核
C1

C4
之一的分发信息,即该可执行单元
E
拟在其上执行的核
C1

C4。
[0010]本专利技术提出了定义实现软件模块的方法,该软件模块是这样由不交错的有向无环图
G
并且由可执行单元
E
的代码定义的


技术实现思路

[0011]为此,本专利技术的一个主题是用于实现由有向无环元图
(graphe
é
l
é
mentaire)
定义的软件模块的基础方法,所述软件模块包括可执行单元,这些可执行单元排布成四个序列,每个序列分发给一个核,初始序列可在第一核上执行,接下来分叉为可在第二核上执行的第一并行序列和可在不同于第二核的第三核上与第一并行序列并行执行的第二并行序列,这两个并行序列之后汇合为可在第四核上执行的最后序列,该方法包括以下步骤:复制初始序列的代码,在初始序列的末端添加分叉函数,复制并行序列的代码,在所述并行序列的末端添加汇合标志函数,复制另一并行序列的代码,在另一并行序列的末端添加汇合等待函数

[0012]可单独使用或组合使用的特定特征或实施例有:
[0013]‑
分叉函数能够:在第一并行序列的核不同于初始序列的核的情况下发起第一并行序列的执行,以及在第二并行序列的核不同于初始序列的核的情况下发起第二并行序列的执行,以及将标志初始化为低状态,
[0014]‑
汇合标志函数能够升起标志,
[0015]‑
汇合等待函数能够:在标志为低时等待,以及当标志升起时在最后序列的核不同于包括汇合等待函数的并行序列的核的情况下发起最后序列的执行,
[0016]‑
接收分叉函数的序列是初始序列,
[0017]‑
在最后序列的核与并行序列的核相同的情况下,所述并行序列接收汇合等待函数,
[0018]‑
在最后序列的核不同于并行序列的核的情况下,接收汇合等待函数的并行序列是这两个并行序列中响应性较低的并行序列,即具有较高响应时间的序列,
[0019]‑
汇合等待函数通过调用预约点来等待

[0020]在本专利技术的第二方面,用于实现由不交错的有向无环图定义的软件模块的全局方法,所述软件模块包括可执行单元,每个可执行单元分发给一个核,该方法包括以下步骤:标识所有分叉,分叉包括至少两个下游可执行单元;标识所有汇合,汇合包括至少两个上游可执行单元;标识序列,序列是既不包括分叉也不包括汇合且分发给了同一个核的一连串可执行单元;通过将多分叉替换为
n
‑1个二分叉来简化多分叉,所述多分叉包括一个上游序列和数量
n
个下游序列,
n
严格大于2,所述二分叉包括2个下游序列,这样创建的附加分叉分发给该上游序列的核;通过将多汇合替换为
n
‑1个二汇合来简化多汇合,所述多汇合包括一个下游序列和数量
n
个上游序列,
n
严格大于2,所述二汇合包括2个上游序列,这样创建的附加汇合分发给该下游序列的核;将每个汇合与双分叉配对:对于每个汇合,回溯其上游序列直到找到这些上游序列再次汇合的可能分叉,将找到的分叉与该汇合相关联;在汇合孤立
(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.
用于实现由有向无环元图
(Ge)
定义的软件模块的基础方法,所述软件模块包括可执行单元
(E)
,这些可执行单元
(E)
排布成四个序列
(Si

S1p

S2p

Sf)
,每个序列分发给一个核
(C1

C4)
,初始序列
(Si)
可在第一核
(C1)
上执行,接下来分叉
(f

f1

f2)
为可在第二核
(C2)
上执行的第一并行序列
(S1p)
和可在不同于第二核
(C2)
的第三核
(C3)
上与第一并行序列
(S1p)
并行执行的第二并行序列
(S2p)
,这两个并行序列
(S1p

S2p)
之后汇合
(j)
为可在第四核
(C4)
上执行的最后序列
(Sf)
,其特征在于,该方法包括以下步骤:

复制初始序列
(Si)
的代码,

在初始序列
(Si)
的末端添加分叉函数
(F)


复制并行序列
(S1p

S2p)
的代码,

在所述并行序列
(S1p

S2p)
的末端添加汇合标志函数
(Jf)


复制另一并行序列
(S2p

S1p)
的代码,

在另一并行序列
(S2p

S1p)
的末端添加汇合等待函数
(Jw)。2.
根据前一权利要求所述的基础方法,其中,分叉函数
(F)
能够:在第一并行序列
(S1p)
的核
(C2)
不同于初始序列
(Si)
的核
(C1)
的情况下发起第一并行序列
(S1p)
的执行,以及在第二并行序列
(S2p)
的核
(C3)
不同于初始序列
(Si)
的核
(C1)
的情况下发起第二并行序列
(S2p)
的执行,以及将标志初始化为低状态
。3.
根据前述权利要求中的任一项所述的基础方法,其中,汇合标志函数
(Jf)
能够升起标志
。4.
根据前述权利要求中的任一项所述的基础方法,其中,汇合等待函数
(Jw)
能够:在标志为低时等待,以及当标志升起时在最后序列
(Sf)
的核
(C4)
不同于包括汇合等待函数
(Jw)
的并行序列
(S2p

S1p)
的核
(C3)
的情况下发起最后序列
(Sf)
的执行
。5.
根据前述权利要求中的任一项所述的基础方法,其中,接收分叉函数
(F)
的序列是初始序列
(Si)。6.
根据前述权利要求中的任一项所述的基础方法,其中,在最后序列
(Sf)
的核
(C4)
与并行序列
(S1p

S2p)
的核
(C2

C3)
相同的情况下,所述并行序列
(S1p

S2p)
接收汇合等待函数
(Jw)。7.
根据前述权利要求中的任一项所述的基础方法,其中,在最后序列
(Sf)
的核
(C4)
不同于并行序列
(S1p

S2p)
的核
(C2

C3)
的情况下,接收汇合等待函数
(Jw)
的并行序列
(S1p

S2p)
是这两个并行序列
(S1p

S2p)
中响应性较低的并行序列,即具有较高响应时间的序列
。8.
根据前述权利要求中的任一项所述的基础方法,其中,汇合等待函数
(Jw)
通过调用预约点来等待
。9.
用于实现由不交错的有向无环图
(G)
定义的软件模块的全局方法,所述软件模块包括可执行单元
(E)
,每个可执行单元
(E)
分发给一个核
(C1

C4)
,其特征在于,该方法包括以下步骤:

标识所有分叉
(f

f1

f2)
,分叉
(f

f1

f2)
包括至少两个下游可执行单元
(E)


标识所有汇合
(j

j1
,<...

【专利技术属性】
技术研发人员:N
申请(专利权)人:纬湃科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1