CN113239348B - 多核冗余*** - Google Patents
多核冗余*** Download PDFInfo
- Publication number
- CN113239348B CN113239348B CN202110432568.0A CN202110432568A CN113239348B CN 113239348 B CN113239348 B CN 113239348B CN 202110432568 A CN202110432568 A CN 202110432568A CN 113239348 B CN113239348 B CN 113239348B
- Authority
- CN
- China
- Prior art keywords
- core
- data
- data packet
- module
- memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种多核冗余***,包括:主核,被配置为接收来自可编程逻辑组件的第一数据,并在预设定时到期时对第一数据进行打包,得到第一数据包;第一副核,被配置为接收来自可编程逻辑组件的第二数据,并在预设定时到期时对第二数据进行打包,得到第二数据包;第一内存,连接至主核和第一副核,被配置为存储第二数据包;其中,主核还被配置为:从第一内存读取第二数据包;基于第一数据包和第二数据包进行判决得到判决结果;响应于确定判决结果指示判决成功,确定正确的数据包;将正确的数据包发送至应用层。根据本公开,实现了数据的高效通信,且通过主核对所有数据进行判决后传输正确的数据,保证了数据传输的可靠性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及多核冗余***。
背景技术
随着电子技术的飞速发展,大规模集成电路及嵌入式计算机在电子产品中得到广泛应用,已成为现代电子设备正常运转的基石。然而,随着电子产品的普及,黑客攻击的日益猖狂和各种漏洞后门的存在,使原本安全性较低的电子***变得更加脆弱。这使电子产品对嵌入式控制***的效率、可靠性、安全性提出了更高的要求。在提高***可靠性和安全性的方面,***的避错和容错都是比较关键的环节。现有技术中,存在嵌入式***结构单一,抗风险性,安全性较低的技术问题。
发明内容
有鉴于此,本公开的目的在于提出一种多核冗余***。
基于上述目的,本公开提供了一种多核冗余***,包括:
主核,被配置为接收来自可编程逻辑组件的第一数据,并在预设定时到期时对所述第一数据进行打包,得到第一数据包;
第一副核,被配置为接收来自所述可编程逻辑组件的第二数据,并在所述预设定时到期时对所述第二数据进行打包,得到第二数据包;
第一内存,连接至所述主核和所述第一副核,被配置为存储所述第二数据包;
其中,所述主核还被配置为:
从所述第一内存读取所述第二数据包;
基于所述第一数据包和所述第二数据包进行判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至应用层。
可选地,所述主核包括:主定时器模块、主核接收模块、主数据库模块、主核打包模块、判决模块和传输模块,其中,
所述主核接收模块接收所述第一数据,并将所述第一数据存储于所述主数据库模块中;
当所述主定时器模块的所述预设定时到期时,所述主核打包模块将所述主数据库模块中的所述第一数据打包为所述第一数据包;
所述主核接收模块还从所述第一内存读取所述第二数据包;
所述判决模块基于所述第一数据包和所述第二数据包进行判决以得到所述判决结果,且响应于确定所述判决结果指示判决成功,确定正确的数据包;
所述传输模块将所述正确的数据包发送至所述应用层。
可选地,所述第一副核包括:第一定时器模块、第一数据库模块和第一打包模块,其中,
所述第一数据接收模块接收所述第二数据,并将所述第二数据存储于所述第一数据库模块中;
当所述第一定时器模块的所述预设定时到期时,所述第一打包模块将所述第一数据库模块中的所述第二数据打包为所述第二数据包,并将所述第二数据包存发送至所述第一内存。
可选地,所述第一副核包括至少一个第一核,所述第一内存包括至少一个第一数据存储子区域和至少一个第一标志位子区域;
对于每个第一核,所述第一数据存储子区域对应存储所述第一核的第二数据包,所述第一标志位子区域对应存储所述第一核的第二数据包的标志位。
可选地,所述基于所述第一数据包和所述第二数据包进行判决得到判决结果;且响应于确定所述判决结果指示判决成功,确定正确的数据包,包括:
确定进行所述判决的所有数据包中出现次数最多,且出现次数大于或等于预设值的数据包为所述正确的数据包。
可选地,所述***还包括:
第二副核,与所述第一副核不同,被配置为接收来自所述可编程逻辑组件的第三数据,并在所述预设定时到期时对所述第三数据进行打包,得到第三数据包;
所述主核还被配置为:
基于所述第一数据包、所述第二数据包和所述第三数据包进行所述判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至所述应用层。
可选地,所述第二副核包括至少一个第二核,所述第一内存还包括至少一个第二数据存储区域和至少一个第二标志位区域;其中,对于每个第二核,所述第二数据存储子区域对应存储所述第二核的第三数据包,所述第二标志位子区域对应存储所述第二核的第三数据包的标志位。
可选地,所述第二副核包括至少一个第二核,所述***还包括:第二内存,连接至所述主核和所述第二副核,包括至少一个第三数据存储区域和至少一个第三标志位区域;其中,
对于每个第二核,所述第三数据存储子区域对应存储所述第二核的第三数据包,所述第三标志位子区域对应存储所述第二核的第三数据包的标志位。
可选地,所述第二副核包括:第二定时器模块、第二数据库模块和第二打包模块,其中,
所述第二数据接收模块接收所述第三数据,并将所述第三数据存储于所述第二数据库模块中;
当所述第二定时器模块的所述预设定时到期时,所述第二打包模块将所述第二数据库模块中的所述第三数据打包为所述第三数据包。
可选地,所述主核还通过多个并行线程从所述第一内存和所述第二内存中读取所述第二数据包和所述第三数据包,其中,每个所述线程分别读取每个所述第一副核的第二数据包或每个所述第二副核的第三数据包。
从上面所述可以看出,根据本公开实施例的多核冗余***,通过多核以及共享的内存的结构实现了数据的高效通信,且通过主核对所有数据进行判决后传输正确的数据,保证了数据传输的可靠性。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本公开实施例的多核冗余***的示意性框图;
图2为根据本公开实施例的主核的示意性框图;
图3为根据本公开实施例的第一内存的示例的示意图;
图4为根据本公开实施例的第一内存的示例的示意图;
图5为根据本公开实施例的主核从第一内存读取第二数据包的过程的示例流程图;
图6为了根据本公开实施例的大数判决的过程的示例流程图;
图7为根据本公开实施例的第二内存的示例的示意图;
图8为根据本公开实施例的多核冗余***的示例的示意性框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
传统的嵌入式***结构单一,抗风险性,安全性较低,而且由于各种漏洞和后门的存在,和黑客木马的猖獗,使得电子***变得更加脆弱。随着技术的发展,用户对电子产品的要求不断增加,这就对嵌入式控制***的效率、可靠性、安全性提出了更高的要求。同时,现有的防御体系,也是基于威胁特征感知的精确防御。例如常见的防火墙、入侵检测、态势感知等防御措施,是建立在获得已知攻击模型、攻击机制、攻击特征等先验知识的前提下,才能有效实施。在整个攻防体系中,防守方往往处于“发现攻击、发现漏洞、修复漏洞”的亡羊补牢式的被动局面。如此,传统的嵌入式***无法保证复杂信息***或网络空间生态环境“无漏洞无后门”或者“无毒无菌”,其安全性只能期待“后天获得性免疫”,即获得新型攻击特征、最新漏洞补丁来完善防御体系,无法从自身结构来克服。
此外,传统的嵌入式***的数据传输过程是选取一个Arm核,周期性从可编程逻辑(Progarmmable Logic,PL)获取信息和数据,然后进行上报。这样有可能导致在传输过程中黑客或木马对以太网数据包进行截获或修改,最终导致信息传输错误。
基于上述考虑,本公开实施例提供了一种多核冗余***,能够从***结构上增强抗风险和主动防御的能力,加强数据传输的安全性和可靠性。参见图1,图1示出了根据本公开实施例的多核冗余***的示意性框图。如图1所示,多核冗余***100,包括:
主核110,被配置为接收来自可编程逻辑组件的第一数据,并在预设定时到期时对所述第一数据进行打包,得到第一数据包;
第一副核120,被配置为接收来自所述可编程逻辑组件的第二数据,并在所述预设定时到期时对所述第二数据进行打包,得到第二数据包;
第一内存130,连接至所述主核110和所述第一副核120,被配置为存储所述第二数据包;
其中,所述主核110还被配置为:
从所述第一内存130读取所述第二数据包;
基于所述第一数据包和所述第二数据包进行判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至应用层。
其中,本公开实施例的多核冗余***,利用主核和第一副核共同实现数据的传输,主核和第一副核分别从可编程逻辑组件接收的数据,每隔预设时间就将接收到的数据进行打包,得到第二数据包;第一副核将第二数据存入第一内存;主核从第一内存读取第二数据包,并和自身打包的第一数据包共同进行判决,将判决出的正确数据包发送到应用层,从而基于主核与第一副核、第一内存形成多核冗余的***结构,从***结构上增强抗风险和主动防御的能力,加强数据传输的安全性和可靠性。传统的***结构数据出错的原因主要在于核从PL查询获取数据时,被病毒或木马所攻击篡改导致数据出错。与传统的***结构相比,根据本公开的多核冗余***,多个核从PL获取数据,增加准确性,克服了***结构单一,***安全性较差,容易出现数据传输错误的问题。
在一些实施例中,多核冗余***100可以基于ZCU102开发板实现。目前,Arm处理器种类丰富多样,主要有Arm7,Arm9,Arm9E,Arm10E,Arm10,Cortex、SecureCore、Xscale、StrongArm ARM 11系列。但在市场上应用较多的Arm处理器可分为5类:Cortex-A(Advanced)、Cortex-R(Real-time)、Cortex-M(微处理器)、Machine Learning(机器学习)、SecurCore(安全内核)。其中,Cortex-A为“先进的处理器”,也是使用最广泛的处理器。Cortex-A性能和效率均衡,以最佳功耗实现最高性能。Cortex-A53是Cortex-A系列中典型的处理器。它支持高线程和FPU/NEON性能的选择;支持汽车和网络各种应用;也是最广泛部署的64位Cortex-A处理器。Cortex-R处理器为实时处理器,提供无缝,实时的性能和安全性。Cortex-R5是其中的一个代表。Cortex-R5双核的配置性能是以前Cortex-R处理器的两倍,非常适合开发安全关键产品,常用于大批量深度嵌入式SOC应用。Cortex-M是微处理器,是嵌入式设备中最节能的处理器,因此常应用于智能卡、智能设备、传感器等。其他处理器,如Machine-learning和Secure-core也以各自的特点应用于机器学习、边缘计算、SIM卡等领域。Xilinx Zynq UltraScale ZCU102开发板在单一器件内集成了功能丰富的64位四核Arm Cortex-A53,双核Arm Cortex-R5的处理***(Processing System,PS)和赛灵思可编程逻辑(Progarmmable Logic,PL)。ZCU102开发板中Cortex-A53核处于PS中的APU(加速处理器)单元中。Cortex-R5核处于PS中的RPU(实时处理单元)单元中。
可选地,主核110可以基于任意一个Cortex-A53核,或任意一个Cortex-R5核实现。
可选地,参见图2,图2示出了根据本公开实施例的主核的示意性框图。如图2所示,主核110包括:主定时器模块111、主核接收模块112、主数据库模块113、主核打包模块114、判决模块115和传输模块116,其中,
所述主核接收模块112接收所述第一数据,并将所述第一数据存储于所述主数据库模块113中;
当所述主定时器模块112的所述预设定时到期时,所述主核打包模块114将所述主数据库模块113中的所述第一数据打包为所述第一数据包;
所述主核接收模块112还从所述第一内存读取所述第二数据包;
所述判决模块115基于所述第一数据包和所述第二数据包进行判决以得到所述判决结果,且响应于确定所述判决结果指示判决成功,确定正确的数据包;
所述传输模块116将所述正确的数据包发送至所述应用层。
在一些实施例中,主核110还可以包括初始化模块,被配置为对主核110进行初始化。进一步地,初始化模块可以对主定时器模块、主数据库模块、传输模块进行初始化。
在一些实施例中,传输模块116基于lwip函数传输所述正确的数据包。
可选地,所述预设定时可以是100ms。应了解,预设定时可以根据需要进行设置,在此不做限制。
可选地,第一副核120包括:第一定时器模块、第一数据库模块和第一打包模块,其中,
所述第一数据接收模块接收所述第二数据,并将所述第二数据存储于所述第一数据库模块中;
当所述第一定时器模块的所述预设定时到期时,所述第一打包模块将所述第一数据库模块中的所述第二数据打包为所述第二数据包,并将所述第二数据包存发送至所述第一内存。
在一些实施例中,所述第一副核还可以包括:第一类初始化模块,被配置为对第一副核进行初始化。进一步地,第一类初始化模块还可以对第一定时器模块、第一数据库模块进行初始化。
在一些实施例中,所述第一定时器模块与所述主定时器模块的时间同步。
可选地,第一内存130可以是主核110与第一副核120的共享内存。
其中,共享内存指(shared memory)在嵌入式***中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。参见图3,图3示出了根据本公开实施例的第一内存的示例的示意图。如图3所示,在ZCU102开发板中,共享内存主要包括DDR SDRAM(Double Data Rate SDRAM,双倍速率同步动态随机存储器)和OCM(On Chip Memory,片上存储器)两部分。其中DDR可以进一步包括:DDR0和DDR1。DDR1内存大小为256MB,只可以供Cortex-A53核之间通信使用。OCM内存大小为32KB,既可以供Cortex-A53核通信使用,也可以供Cortex-R5核之间通信使用。
在一些实施例中,参见图3,第一内存130可以包括DDR1和/或OCM。
可选地,主核110可以与第一副核120属于同一类型的核,也可以是不同类型的核。
在一些实施例中,主核110与第一副核120属于同一类型的核,可以是Cortex-A53核或Cortex-R5核。
进一步地,在一些实施例中,主核110与第一副核120都是Cortex-A53核时,第一内存130可以是DDR1和/或OCM。
进一步地,在一些实施例中,主核110与第一副核120都是Cortex-R5核时,第一内存130可以是OCM。
在一些实施例中,主核110与第一副核120属于不同类型的核,可以包括:主核110是Cortex-A53核而第一副核为Cortex-R5核,或,主核110是Cortex-R5核而第一副核为Cortex-A53核。
进一步地,在一些实施例中,主核110与第一副核120属于不同类型的核时,第一内存130可以是OCM。
可选地,第一副核120可以包括至少一个第一核。进一步地,所述第一核可以是Cortex-A53核或Cortex-R5核。
相应地,可选地,所述第一内存130包括至少一个第一数据存储子区域和至少一个第一标志位子区域;
对于每个第一核,所述第一数据存储子区域对应存储所述第一核的第二数据包,所述第一标志位子区域对应存储所述第一核的第二数据包的标志位。
在一些实施例中,可以根据第一副核所包括的第一核的数量对第一内存进行分区。其中,主核与第一副核共享第一内存。由此,通过对共享的第一内存的存储区域进行分割,可以保证多核之间能够高效通信。
在一些实施例中,参见图4,图4示出了根据本公开实施例的第一内存的示例的示意图。如图4所示,以主核为core0,第一副核包括core1、core2、core3,则可以将第一内存按照起始地址分为6份,包括3个内存地址空间(例如10KB)作为第一数据存储子区域,以及3个内存地址空间(例如5KB)作为第一标志位子区域,各个内存区域内存地址连续。具体来说,3个作为第一数据存储子区域的内存地址空间的起始地址可以依次标记为Share_Base1,Share_Base2,Share_Base3,Share_Base1表示存储core1的数据包,Share_Base2表示存储core2的数据包,Share_Base3表示存储core3的数据包,主核core0可以访问Share_Base1,Share_Base2,Share_Base3中任意一个。3个作为第一标志位子区域的内存地址空间的起始地址可以依次标记为LEN_1,LEN_2,LEN_3,LEN_1表示存储core1的数据包的标志位,LEN_2表示存储core2的数据包的标志位,LEN_3表示存储core3的数据包的标志位,主核core0可以访问LEN_1,LEN_2,LEN_3中任意一个。Share_Base1,Share_Base2,Share_Base3和LEN_1,LEN_2,LEN_3的地址空间连续。
可选地,主核110从所述第一内存130读取所述第二数据包可以进一步包括:主核110通过多个并行线程从所述第一内存中读取所述第二数据包,其中,每个所述线程分别读取每个所述第一副核的第二数据包。
具体地,参见图5,图5示出了根据本公开实施例的主核从第一内存读取第二数据包的过程的流程图。如图5所示,步骤S510,为第一副核设置标志位send_id。具体地,针对每个第一副核core1、core2、core3设置一个标志位send_id,表示该核向第一内存的相应地址写入数据的次数,send_id的初始值为0;例如,在上述实施例中,第一副核core1、core2、core3的send_id分别为send_id1、send_id2、send_id3。
步骤S520,为主核设置与第一副核相对应的标志位recv_id。具体地,在主核core0中对应地设置3个标志位recv_id1、recv_id2、recv_id3,表示core0从core1-core3核接收数据包的次数,recv_id1、recv_id2、recv_id3的初始值为0。在主核core0中还设置一个变量count,初始值为0,表示主定时器模块的预设时间到期后(即主核core0完成对自身数据的打包后),从core1-core3核接收数据包的总次数。可以设置当变量count不等于循环阈值,例如3(即第一副核的数量)时,循环如下过程:
步骤S530,各核(包括主核和第一副核)在预设定时到期后,把数据写入第一内存中对应的第一数据存储子区域;标志位send_id++后写入第一内存中对应的第一标志位子区域。具体地,对于第一副核core1-core3,每当各自的第一定时器模块的预设时间到期后,可以调用各自核中的第一打包模块(如package函数),将各自从PL接收的数据进行打包,形成各自核的第二数据包,其中,第二数据包可以是字符串类型。在打包完成后,第一副核core1-core3将各自的第二数据包写入第一内存中对应的第一数据存储子区域Share_Base1,Share_Base2,Share_Base3;然后各自的send_id++,写入第一内存中对应的第一标志位子区域LEN_1,LEN_2,LEN_3。
步骤S540,主核开启多线程读取第一内存中的标志位,等待标志位发生变化。具体地,此时,由于主定时器模块与第一定时器模块同步计时,主核core0也在主定时器模块的预设时间到期后,完成了对自身对从PL接收到的数据的打包,得到第一数据包;主核core0可以通过主核接收模块(即调用recv函数)读取第一内存中各个第一副核的数据。具体来说,主核core0建立多个线程,例如3个。
步骤S550,第一标志位子区域中的标志位发生变化,则开始读取第一内存中对应的数据包。具体地,对于每个线程,利用waitID()函数检测(即循环读取)各个对应第一标志位子区域中的标志位,该读取结果记为compID,则读取第一标志位子区域LEN_1,LEN_2,LEN_3中的标志位的读取结果分别为compID1,compID2,compID3。如果compID==recv_id+1,表示第一内存中该区域对应的第一核有新数据写入,退出waitID1()函数;并从对应的第一数据存储子区域中读取该新写入的第二数据包,count加1。
步骤S560,等待所有第一副核的数据包读取完毕后,进入判决。具体地,当count等于3时,说明core0已经对第一副核core1-core3的所有第二数据包接收完成,可以进入判决模块进行判决。
可见,根据本公开实施例,在主核里设置多个并行线程和轮询的方式来捕获标志位状态的变化,等到标志位发生变化,才会读取共享的第一内存中的数据,从而避免了采用传统的中断方式造成多个核同时触发core0核中断,导致中断冲突的情况,以及接收数据不同步的问题。也解决了定时器延时和主核接受数据无序性的问题。
可选地,主核100基于第一数据包和第二数据包进行判决以得到正确的数据包中,所述判决为大数判决,包括确定进行所述判决的所有数据包中出现次数最多,且出现次数大于或等于预设值的数据包为所述正确的数据包。
其中,正常情况下,各核返回的数据都正确,判决时的各个核的数据都一致;异常情况下,各核从PL返回的数据可能不全都一致,但仍可通过判决算法判决出正确的数据,找到错误的核。
在一些实施例中,主核100基于第一数据包和第二数据包进行判决以得到正确的数据包中,所述判决还可以包括基于信任度的判决方法。其中,信任度可以包括每个核的成功攻击次数和异构程度。成功攻击次数即每个核在整个历史过程中错误评估的次数记录,成功攻击次数越高,信任度越低。异构程度即每个核在整个***中的异构程度,异构程度越高,该核的信任度越就高。可以通过信任度指标,使用贝叶斯算法估计获得***概率意义上的最佳结果,作为所述正确的数据包。
在一些实施例中,预设值可以根据需要进行设置,在此不做限制。
具体地,参见图6,图6示出了根据本公开实施例的判决的过程的示例流程图。如图6所示,步骤S610,在主核core0中设置一个数组char*str[]存放来自第一副核core1-core3的数据包,以及设置数组b[i]表示每个str[i]出现的总次数。具体地,对core0~core3核对自身数据进行打包后所得到的数据包可以依次标记为comparebuf0,comparebuf1,comparebuf2,comparebuf3。可以在core0的判决模块中设置一个char*str[],存放comparebuf0~comparebuf3的字符串,以及设置一个int类型的数组b[i],初始值设为0,b[i]表示每个str[i](0<=i<=3)在整个str数组出现的总次数(包括该数组str[i]本身)。
步骤S620,找出数组b[i]中的最大值Flag,Flag对应的字符串为finalbuf。具体地,判决模块中还设置一个标志位Flag,初始值为0,表示b[i](0<=i<=3)中的最大值。比较str[i]和str[j]是否相等(0<=i<=3,0<=j<=3),若二者相等,则b[i]的值加1;依次遍历str[i]数组,直到找到各个b[i]值,例如b[i]=[b0,b1,b2,b3]。依次遍历b[i]数组(0<=i<=3)中的值,找到其中的最大值,记为Flag;如遍历b0,b1,b2,b3得到最大值b2,则flag=b2。
步骤S630,判断Flag是否大于或等于预设值。
步骤S640,若Flag>=预设值(例如3),则表示判决成功,b2对应的str[i]表示出现次数最多的字符串,记为finalbuf。还可以将finalbuf通过传输模块发送至给应用层。同时,将count值、flag置为0,并将数组b[]、str[]、finalbuf均清空,以被配置为下一轮判决。
步骤S650,若0<=flag<预设值,则表示判决失败,可以向上层汇报该错误。
可见,根据本公开实施例的多核冗余***,基于多核结构来处理数据,并采用大数判决机制对多个核的数据进行判决,以保证最终发送数据的正确性,提高了数据传输过程中的可靠性和安全性。
应了解,上述第一副核中核的个数仅为示例,并不旨在对其进行限制,第一副核中核的数量可以根据需要进行设置,在此不做限制。
可选地,根据本公开实施例的多核冗余***,还可以包括:
第二副核,与所述第一副核不同,被配置为接收来自所述可编程逻辑组件的第三数据,并在所述预设定时到期时对所述第三数据进行打包,得到第三数据包;
所述主核还被配置为:
基于所述第一数据包、所述第二数据包和所述第三数据包进行所述判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至所述应用层。
在一些实施例中,所述第二副核包括:第二定时器模块、第二数据库模块和第二打包模块,其中,
所述第二数据接收模块接收所述第三数据,并将所述第三数据存储于所述第二数据库模块中;
当所述第二定时器模块的所述预设定时到期时,所述第二打包模块将所述第二数据库模块中的所述第三数据打包为所述第三数据包。
在一些实施例中,所述第二副核还可以包括:第二类初始化模块,被配置为对第二副核进行初始化。进一步地,第二类初始化模块还可以对第二定时器模块、第二数据库模块进行初始化。
在一些实施例中,所述第一定时器模块与所述定时器模块的时间同步。
在一些实施例中,第一副核为Cortex-A53核时,第二副核可以是Cortex-R5核。
在一些实施例中,第一副核为Cortex-R5核时,第二副核可以是Cortex-A53核。
在一些实施例中,所述第二副核包括至少一个第二核。
在一些实施例中,第一内存为OCM时,所述主核、所述第一副核与所述第二副核可以共享第一内存。
在一些实施例中,所述第一内存还包括至少一个第二数据存储区域和至少一个第二标志位区域;其中,对于每个第二核,所述第二数据存储子区域对应存储所述第二核的第三数据包,所述第二标志位子区域对应存储所述第二核的第三数据包的标志位。
此时,在一些实施例中,可以根据第一副核所包括的第一核的数量与所述第二副核所包括的第二核的数量之和对第一内存进行分区。其中,主核、第一副核、以及第二副核共享该第一内存。由此,通过对共享的第一内存的存储区域进行分割,可以保证多核之间能够高效通信。
具体地,参见图7,图7示出了根据本公开实施例的第二内存的示例的示意图。结合图4和图7,主核为core0,第一副核包括core1、core2、core3,第二副核包括core4、core5,则可以将第一内存按照起始地址分为10份,包括5个内存地址空间(例如10KB)作为第一数据存储子区域和第二数据存储子区域,以及5个内存地址空间(例如5KB)作为第一标志位子区域和第二标志位子区域,各个内存区域内存地址连续。具体来说,3个作为第一数据存储子区域的内存地址空间的起始地址可以依次标记为Share_Base1,Share_Base2,Share_Base3,Share_Base1表示存储core1的数据包,Share_Base2表示存储core2的数据包,Share_Base3表示存储core3的数据包;2个作为第二数据存储子区域的内存地址空间的起始地址可以依次标记为Share_Base4,Share_Base5,Share_Base4表示存储core4的数据包,Share_Base5表示存储core5的数据包,主核core0可以访问Share_Base1至Share_Base5中任意一个。3个作为第一标志位子区域的内存地址空间的起始地址可以依次标记为LEN_1,LEN_2,LEN_3,LEN_1表示存储core1的数据包的标志位,LEN_2表示存储core2的数据包的标志位,LEN_3表示存储core3的数据包的标志位;2个作为第二标志位子区域的内存地址空间的起始地址可以依次标记为LEN_4,LEN_5,LEN_4表示存储core4的数据包的标志位,LEN_5表示存储core5的数据包的标志位,主核core0可以访问LEN_1至LEN_3中任意一个。Share_Base1,至Share_Base5和LEN_1至LEN_5的地址空间连续。
在一些实施例中,所述***还可以包括:第二内存,连接至所述主核和所述第二副核,包括至少一个第三数据存储区域和至少一个第三标志位区域;其中,
对于每个第二核,所述第三数据存储子区域对应存储所述第二核的第三数据包,所述第三标志位子区域对应存储所述第二核的第三数据包的标志位。
在一些实施例中,第二内存可以包括DDR1或OCM。进一步地,所述第二内存与所述第一内存不同。
在一些实施例中,参见图8,图8示出了根据本公开实施例的多核冗余***的示例的示意性框图。如图8所示,第一副核为Cortex-A53核,其中一个Cortex-A53核可以为主核,第二副核为Cortex-R5核,则第一内存为DDR1,第二内存为OCM。
在一些实施例中,第一副核为Cortex-R5核,第二副核为Cortex-A53核,则第一内存为OCM,第二内存为DDR1。
可选地,主核从所述第一内存读取所述第三数据包可以进一步包括:主核通过多个并行线程从所述第一内存中读取所述第三数据包,其中,每个所述线程分别读取每个所述第二副核的第三数据包。
可选地,主核从所述第二内存读取所述第三数据包可以进一步包括:主核通过多个并行线程从所述第一内存中读取所述第三数据包,其中,每个所述线程分别读取每个所述第二副核的第三数据包。
需要说明的是,主核从所述第一内存读取所述第三数据或主核从所述第二内存读取所述第三数据的过程与图5中所示的过程类似,区别仅在于主核获取数据包来源于不同数量的核(其中变量count的循环阈值为第一副核中的第一核与第二副核中第二核的数量之和),均是从每个核所对应的存储区域和标志区域进行数据读取,在此不再赘述。
可选地,此时,主核基于第一数据包、第二数据包和第三数据包进行判决以得到正确的数据包中,所述判决为大数判决,包括确定进行所述判决的所有数据包中出现次数最多,且出现次数大于或等于预设值的数据包为所述正确的数据包。
应了解,主核基于第一数据包、第二数据包和第三数据包进行大数判决以得到正确的数据包的过程与图6中所示的过程类似,区别仅在于参与判决的数据包数量不同,其他具体过程均相同,在此不再赘述。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (8)
1.一种多核冗余***,包括:
主核,被配置为接收来自可编程逻辑组件的第一数据,并在预设定时到期时对所述第一数据进行打包,得到第一数据包;
第一副核,被配置为接收来自所述可编程逻辑组件的第二数据,并在所述预设定时到期时对所述第二数据进行打包,得到第二数据包;
第一内存,连接至所述主核和所述第一副核,被配置为存储所述第二数据包;
其中,所述主核还被配置为:
从所述第一内存读取所述第二数据包;
基于所述第一数据包和所述第二数据包进行判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至应用层;
其中,所述主核包括:主定时器模块、主核接收模块、主数据库模块、主核打包模块、判决模块和传输模块,其中,
所述主核接收模块接收所述第一数据,并将所述第一数据存储于所述主数据库模块中;
当所述主定时器模块的所述预设定时到期时,所述主核打包模块将所述主数据库模块中的所述第一数据打包为所述第一数据包;
所述主核接收模块还从所述第一内存读取所述第二数据包;
所述判决模块基于所述第一数据包和所述第二数据包进行判决以得到所述判决结果,且响应于确定所述判决结果指示判决成功,确定正确的数据包;
所述传输模块将所述正确的数据包发送至所述应用层;
所述第一副核包括:第一定时器模块、第一数据库模块和第一打包模块,其中,
所述第一数据接收模块接收所述第二数据,并将所述第二数据存储于所述第一数据库模块中;
当所述第一定时器模块的所述预设定时到期时,所述第一打包模块将所述第一数据库模块中的所述第二数据打包为所述第二数据包,并将所述第二数据包存发送至所述第一内存。
2.根据权利要求1所述的***,其中,所述第一副核包括至少一个第一核,所述第一内存包括至少一个第一数据存储子区域和至少一个第一标志位子区域;
对于每个第一核,所述第一数据存储子区域对应存储所述第一核的第二数据包,所述第一标志位子区域对应存储所述第一核的第二数据包的标志位。
3.根据权利要求1所述的***,其中,所述基于所述第一数据包和所述第二数据包进行判决得到判决结果;且响应于确定所述判决结果指示判决成功,确定正确的数据包,包括:
确定进行所述判决的所有数据包中出现次数最多,且出现次数大于或等于预设值的数据包为所述正确的数据包。
4.根据权利要求1-3中任一项所述的***,还包括:
第二副核,与所述第一副核不同,被配置为接收来自所述可编程逻辑组件的第三数据,并在所述预设定时到期时对所述第三数据进行打包,得到第三数据包;
所述主核还被配置为:
基于所述第一数据包、所述第二数据包和所述第三数据包进行所述判决得到判决结果;
响应于确定所述判决结果指示判决成功,确定正确的数据包;
将所述正确的数据包发送至所述应用层。
5.根据权利要求4所述的***,其中,所述第二副核包括至少一个第二核,所述第一内存还包括至少一个第二数据存储子区域和至少一个第二标志位子区域;其中,对于每个第二核,所述第二数据存储子区域对应存储所述第二核的第三数据包,所述第二标志位子区域对应存储所述第二核的第三数据包的标志位。
6.根据权利要求4所述的***,其中,所述第二副核包括至少一个第二核,所述***还包括:第二内存,连接至所述主核和所述第二副核,包括至少一个第三数据存储子区域和至少一个第三标志位子区域;其中,
对于每个第二核,所述第三数据存储子区域对应存储所述第二核的第三数据包,所述第三标志位子区域对应存储所述第二核的第三数据包的标志位。
7.根据权利要求4所述的***,其中,所述第二副核包括:第二定时器模块、第二数据库模块和第二打包模块,其中,
所述第二数据接收模块接收所述第三数据,并将所述第三数据存储于所述第二数据库模块中;
当所述第二定时器模块的所述预设定时到期时,所述第二打包模块将所述第二数据库模块中的所述第三数据打包为所述第三数据包。
8.根据权利要求6所述的***,其中,所述主核还通过多个并行线程从所述第一内存和所述第二内存中读取所述第二数据包和所述第三数据包,其中,每个所述线程分别读取每个所述第一副核的第二数据包或每个所述第二副核的第三数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110432568.0A CN113239348B (zh) | 2021-04-21 | 2021-04-21 | 多核冗余*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110432568.0A CN113239348B (zh) | 2021-04-21 | 2021-04-21 | 多核冗余*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113239348A CN113239348A (zh) | 2021-08-10 |
CN113239348B true CN113239348B (zh) | 2023-01-10 |
Family
ID=77128850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110432568.0A Active CN113239348B (zh) | 2021-04-21 | 2021-04-21 | 多核冗余*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113239348B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114710513B (zh) * | 2022-03-30 | 2024-03-08 | 广州导远电子科技有限公司 | 一种网络数据的处理***及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414896B (zh) * | 2013-07-30 | 2018-04-27 | 复旦大学 | 一种基于多核实现的运动估计方法 |
CN107801224B (zh) * | 2016-09-01 | 2020-02-14 | 深圳市中兴微电子技术有限公司 | 一种wcdma***双天线测量方法和装置 |
CN108334736B (zh) * | 2017-09-18 | 2021-12-17 | 山东正心医疗科技有限公司 | 一种数据交互方法 |
US10395722B2 (en) * | 2017-09-29 | 2019-08-27 | Intel Corporation | Reading from a mode register having different read and write timing |
CN109756328B (zh) * | 2018-12-11 | 2020-09-25 | 北京捷安通科技有限公司 | 基于误码率参数自适应调整的密钥生成方法及客户端 |
-
2021
- 2021-04-21 CN CN202110432568.0A patent/CN113239348B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113239348A (zh) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461017B2 (en) | Systems and methods for improving efficiencies of a memory system | |
US10892003B2 (en) | Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes | |
US10950292B1 (en) | Method and apparatus for mitigating row hammer attacks | |
US7636813B2 (en) | Systems and methods for providing remote pre-fetch buffers | |
US9766820B2 (en) | Arithmetic processing device, information processing device, and control method of arithmetic processing device | |
US20160373475A1 (en) | Method and apparatus for service traffic security using dimm channel distribution in multicore processing system | |
CN113239348B (zh) | 多核冗余*** | |
US11809290B2 (en) | Storage system and storage queue processing following port error | |
US11544063B2 (en) | Memory system and data processing system including the same | |
KR20230022188A (ko) | 동적 다중 뱅크 메모리 커맨드 병합 | |
CN111625199B (zh) | 提升固态硬盘数据通路可靠性的方法、装置、计算机设备及存储介质 | |
CN117631980A (zh) | 用于存储器***的读取数据路径 | |
US20070186035A1 (en) | Content-addressable-memory device and method of controlling content addressable memory | |
CN116092547A (zh) | 存储器装置、存储器***及该存储器装置的操作方法 | |
US9652232B2 (en) | Data processing arrangement and method for data processing | |
CN101957781A (zh) | 远程协助测试内存的方法 | |
US12039333B2 (en) | Memory system and data processing system including the same | |
US20230282258A1 (en) | Finite time counting period counting of infinite data streams | |
US11386008B1 (en) | False hit detection in ternary content-addressable memory | |
CN116543824A (zh) | 无限数据流的有限时间计数周期计数 | |
CN117992273A (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
CN117631979A (zh) | 读取数据路径 | |
KR20230081562A (ko) | Can 트래픽 모니터링을 이용한 공격 ecu 탐지 방법 및 장치 |
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 |