CN112528345A - 通信方法、装置、计算机可读存储介质和芯片 - Google Patents

通信方法、装置、计算机可读存储介质和芯片 Download PDF

Info

Publication number
CN112528345A
CN112528345A CN201910883765.7A CN201910883765A CN112528345A CN 112528345 A CN112528345 A CN 112528345A CN 201910883765 A CN201910883765 A CN 201910883765A CN 112528345 A CN112528345 A CN 112528345A
Authority
CN
China
Prior art keywords
security level
subsystem
interrupt
memory
initiator
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.)
Pending
Application number
CN201910883765.7A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910883765.7A priority Critical patent/CN112528345A/zh
Priority to EP20859621.3A priority patent/EP3835988A4/en
Priority to CA3111427A priority patent/CA3111427A1/en
Priority to AU2020343994A priority patent/AU2020343994A1/en
Priority to PCT/CN2020/105344 priority patent/WO2021052017A1/zh
Publication of CN112528345A publication Critical patent/CN112528345A/zh
Priority to US17/369,520 priority patent/US11941259B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/173Vehicle or other transportation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)

Abstract

本申请提供了通信方法、装置、计算机可读存储介质和芯片,涉及自动驾驶技术领域。该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,该第一子***的安全等级高于第二子***的安全等级,第一子***包括内存访问检查器,该方法包括:内存访问检查器接收来自内存访问发起者的内存访问请求,并根据预先配置的内存安全等级划分信息,确定内存访问发起者要访问的内存的安全等级与内存访问发起者的安全等级是否匹配,并在内存地址的安全等级与内存访问发起者的安全等级匹配时,允许内存访问发起者访问内存地址。本申请能够实现对计算机***的不同子***实现较好的隔离。

Description

通信方法、装置、计算机可读存储介质和芯片
技术领域
本申请涉及自动驾驶技术领域,并且更具体地,涉及一种通信方法、装置、计算机可读存储介质和芯片。
背景技术
随着计算机***的复杂程度越来越高,如何保证计算机***中各个子***的正常运行,并在其中的部分子***发生异常之后避免对其他正常工作的子***产生干扰是一个比较重要的问题。
以自动驾驶领域为例,为了对汽车的安全风险进行评估,一般会在汽车产品的设计阶段对自动驾驶***进行危害分析和风险评估,识别出不同***的危害,如果***的安全风险越大,则对应的安全要求级别也就越高。为了对汽车的安全等级进行评估,ISO26262《道路车辆功能安全》引入了车辆安全完整性等级(automotive safety integritylevel,ASIL)的概念,并定义了四种不同的ASIL:ASIL A、ASIL B、ASIL C和ASIL D。其中,ASIL D是最高的安全完整性,而ASIL A是最低的安全完整性。另外,若是识别为QM的风险,则不需要有对应的安全需求。
在自动驾驶领域中,这些具备安全等级的***必须可靠地保证人身安全,即使一个ASIL域***分区发生故障或事故的情况下也不能影响另一个ASIL域的***正常运行。这就要求不同的ASIL安全等级域之间要进行严格的隔离,如果隔离不干净就会造成灾难性的后果。同时还要确保不同功能安全分区之间的通信还有具有低时延和高可靠性。
一种方案是通过堆叠大量的电子控制单元(electronic control unit,ECU)将不同安全级别的安全域***分别部署在不同的硬件设备上,以达到资源隔离的目的,不同的安全域***分别CAN/UART低速总线进行通信。在这种方案中,不同安全域***相当于是由不同的设备单独来执行的,虽然实现了了资源的隔离,但是需要大量的硬件堆叠,并且不同安全域***之间进行通信的时延也比较高。
另一种方案是采用虚拟化技术将物理设备虚拟化,然后将不同安全级别的安全域***部署在不同的虚拟设备上,整个***的硬件采用虚拟机监视器(virtual machinemonitor,VMM)(也可以称为hypervisor)进行统一管理,硬件设备以共享或者直通的方式被某个虚拟机(virtual machine,VM)共享或者独占使用。在该方案中,不同安全域的***虽然被分配的是不同的虚拟机,但是这些虚拟机会共享一些底层硬件,因此,该方案并没有做到资源的彻底隔离,使得***的可靠性受到一定的影响。
发明内容
本申请提供一种通信方法、计算机***、装置、计算机可读存储介质和芯片,以实现计算机***中不同安全等级***的隔离。
第一方面,提供了一种通信方法,该方法应用于计算机***中,该计算机***包括第一子***和第二子***,第一子***的安全等级高于第二子***的安全等级,第一子***的CPU核、第二子***的CPU核以及所述内存访问检查器集成在同一芯片上。该计算机***包括中断控制器,该中断控制器由第一子***和第二子***共用,该中断控制器中的保存的中断路由配置信息是由第一子***的CPU核配置的,该中断路由配置信息用于指示响应每个中断的CPU核,第一子***还包括内存访问检查器,该通信方法具体包括:内存访问检查器接收来自内存访问发起者的内存访问请求;该内存访问检查器根据预先配置的内存安全等级划分信息,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级是否匹配;当内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级匹配时,允许内存访问发起者访问内存。
其中,上述内存访问请求携带内存访问发起者要访问的内存地址以及内存访问发起者的安全等级信息,上述内存安全等级划分信息用于指示计算机***中不同地址段的内存的安全等级。
可选地,上述计算机***为无人驾驶***中的***。
当上述计算机***为无人驾驶***中的***时,通过该计算机***能够控制无人驾驶***的行驶。
应理解,在本申请中,安全等级越高安全程度也就越高。
可选地,上述方法还包括:当内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配时,不允许内存访问发起者访问内存。
本申请中,通过将内存访问检查器设置在高安全等级的子***中,并将计算机***的内存按照安全等级进行划分,能够实现对计算机***的不同子***实现较好的隔离,尽可能的避免一个子***出现异常后影响其他子***的正常工作。
应理解,在本申请中,计算机***还可以包括第一子***和第二子***之外的其他子***,本申请中对计算机***中包含的子***的个数不做限定。当计算机***包含其他子***时,可以按照与第一子***或者第二子***类似的方式为其他子***进行安全等级的配置。
本申请中,还可以将第二子***再划分成至少两个微***,然后再采用配置第一子***和第二子***的方式对该至少两个微***进行配置。
例如,可以将第二子***再划分成第一微***和第二微***,并采用上述配置第一子***和第二子***的方式来配置第一微***和第二微***的安全等级,使得第一微***的安全等级高于第二微***的安全等级。
结合第一方面,在第一方面的某些实现方式中,上述方法还包括:IO设备接收来自访问设备的访问请求,该访问请求携带访问设备的安全等级信息;在访问设备的安全等级与IO设备的安全等级相匹配时,IO设备允许访问设备对IO设备的访问。
其中,上述IO设备为第一子***或者第二子***中的任意一个IO设备。
本申请中,只有在访问设备的安全等级与IO设备的安全等级匹配的情况下,IO设备才接受访问设备的访问,而如果访问设备的安全等级与IP设备不匹配时,IO设备不接受IO设备的访问,从而在访问设备与IO设备之间进行了一定程度的隔离,避免安全等级与IO设备不匹配的访问设备访问IO设备。
结合第一方面,在第一方面的某些实现方式中,上述访问设备的安全等级与IO设备的安全等级相匹配,包括:访问设备的安全等级大于或者等于IO设备的安全等级。
本申请中,当访问设备的安全等级高于或者等于IO设备的安全等级时,才允许访问设备访问IO设备,也就是说,安全等级高的设备可以访问安全等级相同或者安全等级较低的设备,使得安全等级较低的设备无法访问安全等级较高的设备,从而在访问设备和IO设备之间实现一定程度的隔离。
具体地,由于低安全等级的设备无法访问高安全等级的设备,从而能够避免低安全等级的设备出现异常时对高安全等级设备的影响。
结合第一方面,在第一方面的某些实现方式中,上述方法还包括:中断控制器接收来自中断发起者的中断请求,该中断请求携带中断发起者的安全等级信息;中断控制器根据配置的安全等级信息和中断请求,确定中断发起者的安全等级与中断发起者对应的中断接收者的安全等级是否匹配,并在中断发起者的安全等级与中断接收者的安全等级匹配的情况下,允许中断接收者接受中断请求。
本申请中,通过中断控制器能够实现对中断请求的处理,使得中断发起者的安全等级与中断接收者的安全等级的匹配下再由中断接收者接受该中断请求,能够在正常处理中断请求的情况下实现中断发起者和中断接收者之间的隔离。
结合第一方面,在第一方面的某些实现方式中,上述中断发起者的安全等级与中断接收者的安全等级匹配包括:中断发起者与中断接收者均属于第一子***;中断发起者与中断接收者均属于第二子***;或者,中断发起者属于第一子***,中断接收者属于第二子***。
当中断发起者的安全等级大于或者等于中断接收者的安全等级时,允许中断接收者接收中断发起者发起的中断请求,从而避免高安全等级的设备接收或者处理低安全等级设备发起的中断请求,从而尽可能的避免安全等级的设备出现异常时对高安全等级设备的影响。
结合第一方面,在第一方面的某些实现方式中,上述中断发起者的安全等级与中断接收者的安全等级不匹配包括:中断发起者属于第二子***,中断接收设备属于第一子***。
当中断发起者的安全等级低于中断接收者的安全等级时,中断接收者不接受中断发起者的中断请求,从而能够在低安全***的设备出现故障时尽可能的避免对高安全***中的设备产生干扰。
结合第一方面,在第一方面的某些实现方式中,上述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:内存访问发起者的安全等级高于或者等于内存访问发起者要访问的内存的安全等级。
由于内存访问发起者只能访问安全等级相同或者安全等级更低的内存,能够尽可能的避免低安全***的设备访问较高安全等级的内存,能够在一定程度上实现对内存的隔离。
结合第一方面,在第一方面的某些实现方式中,在内存访问发起者的安全等级低于内存访问发起者要访问的内存安全等级时,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配。
结合第一方面,在第一方面的某些实现方式中,上述第一子***包括分区管理器,方法还包括:分区管理器根据计算机***的安全等级配置文件为上述第一子***和上述第二子***中的设备进行安全等级的配置。
上述计算机***的安全等级配置文件用于指示上述第一子***和第二子***中的设备以及所使用的内存的安全等级。
通过分区管理器能够实现对第一子***和第二子***的安全等级的配置,从而实现对第一子***和第二子***的隔离。
应理解,分区管理器在对第一子***和第二子***进行安全等级的配置之前,可以先获取并解析计算机***的安全等级配置文件,在获取到第一子***和第二子***中的设备以及所使用的内存的安全等级之后,再对第一子***和第二子***进行安全等级的配置。
可选地,上述安全等级配置文件是预先配置好的文件。
具体地,上述安全等级配置文件可以是预先根据计算机***的设备情况和应用需求来确定的,在确定了该安全等级配置文件之后,可以将该安全等级配置文件写入到计算机***的缓存中,便于后续分区管理区获取并解析该安全等级配置文件。
可选地,上述安全等级配置文件是从云端获取的。
具体地,上述安全等级配置文件可以是计算机***从云端下载得到的。
另外,上述安全等级配置文件可以定期或者不定期进行更新或者升级。
结合第一方面,在第一方面的某些实现方式中,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级配置,包括:分区管理器在CPU核对应的安全等级配置模块写入CPU核的安全等级信息。
其中,上述CPU核的安全等级信息用于指示CPU核的安全等级。该CPU核对应的安全等级配置模块既可以位于CPU内部,也可以位于CPU外部。
上述CPU核对应的安全等级配置模块可以是硬件模块,具体可以由硬件电路实现,用于对CPU核输出的信号进行处理,使得处理后的信号包括CPU核的安全等级信息。
上述分区管理器在CPU核对应的安全等级配置模块写入CPU核的安全等级信息时,具体是可以将CPU核的安全等级信息写入到CPU核对应的安全等级模块所对应的寄存器中,写入完毕之后,CPU核对应的安全等级模块就可以从该寄存器中获取CPU核的安全等级信息。
结合第一方面,在第一方面的某些实现方式中,在上述计算机***中,CPU核与安全等级配置模块为一一对应关系,每个安全等级配置模块用于指示对应的CPU核的安全等级。
也就是说,每个CPU核可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU核的安全等级。当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
结合第一方面,在第一方面的某些实现方式中,CPU核对应的安全等级配置模块设置在CPU核的内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
结合第一方面,在第一方面的某些实现方式中,在上述计算机***中,CPU簇与安全等级配置模块为一一对应关系,CPU簇包括多个CPU核,安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
结合第一方面,在第一方面的某些实现方式中,上述CPU簇对应的安全等级配置模块设置在CPU簇对应的L3缓存的协议处理模块L3_TAG中。
结合第一方面,在第一方面的某些实现方式中,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级的配置,包括:分区管理器在内存访问检查器中写入内存安全等级划分信息。
通过分区管理器在内存访问检查器中写入内存安全等级划分信息,使得内存访问检查器能够根据写入的内存安全等级划分信息实现对内存访问的检查和管理,便于后续实现内存的隔离。
结合第一方面,在第一方面的某些实现方式中,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级配置,包括:分区管理器在IO设备对应的安全等级配置和检测模块写入IO设备的安全等级信息,该IO设备对应的安全等级配置和检测模块用于对IO设备接收到的访问请求进行检测,以确定发起访问请求的设备的安全等级与IO设备的安全等级是否匹配。
通过分区管理器将IO设备的安全等级信息写入到IO设备中,能够实现对IO设备的安全等级的配置,同时也能够实现配置后的IO设备的安全等级配置和检测模块实现对发起访问请求的设备的安全等级的检查,从而实现不同安全等级的设备之间的隔离。
结合第一方面,在第一方面的某些实现方式中,上述方法还包括:启动第一子***的第一个CPU核,以使得分区管理器在第一子***的第一个CPU核上运行;分区管理器启动第一子***的其他CPU核;在完成第一子***的CPU核启动之后,分区管理器依次启动第二子***的CPU核。
结合第一方面,在第一方面的某些实现方式中,上述第二子***的内存包括共享内存,共享内存用于第一子***和第二子***之间传输数据,上述方法还包括:第一子***的CPU核将第一子***产生的第一通信数据存入到共享内存中,并发起第一中断,以便第二子***的CPU核接收到第一中断之后,从共享内存中读取第一通信数据;或者,第二子***的CPU核将第一第二子***产生的第二通信数据存入到共享内存中,并发起第二中断,以便第一子***的CPU核接收到第二中断之后,从共享内存中读取第二通信数据。
本申请中,通过第二子***的共享内存能够实现在第一子***和第二子***之间传输数据,从而在对第一子***和第二子***隔离的同时保证第一子***和第二子***之间的正常、通信。
第二方面,提供了一种通信方法,该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,该第一子***的CPU核和第二子***的CPU核集成在同一芯片上,该通信方法包括:获取计算机***的安全等级配置文件;根据安全等级配置文件对第一子***和第二子***的安全等级进行配置,以使得第一子***的CPU核的安全等级高于第二子***的CPU核的安全等级,第一子***的IO设备的安全等级高于第二子***的IO设备的安全等级,第一子***使用的内存的安全等级高于第二子***的内存的安全等级。
其中,上述计算机***的安全等级配置文件用于指示第一子***和第二子***中的设备以及第一子***和第二***所使用的内存的安全等级。
上述第二方面的方法可以由计算机***中的分区管理器来执行,该分区管理器可以是计算机***中采用软件实现的一个模块(软件模块或者虚拟模块)。
可选地,上述计算机***为无人驾驶***中的***。
当上述计算机***为无人驾驶***中的***时,通过该计算机***能够控制无人驾驶***的行驶。
应理解,在本申请中,安全等级越高安全程度也就越高。
本申请中,在获取了计算机***的安全等级配置文件之后,能够根据计算机***的安全等级配置文件对第一子***和第二子***进行安全等级的配置,从而实现对第一子***和第二子***的安全隔离,能够尽量避免第二子***出现异常时影响第一子***的正常工作。
可选地,上述安全等级配置文件是预先配置好的文件。
上述安全等级配置文件可以是预先根据计算机***的设备情况和应用需求来确定的,在确定了该安全等级配置文件之后,可以将该安全等级配置文件写入到计算机***的缓存中,便于后续分区管理区获取并解析该安全等级配置文件。
可选地,上述安全等级配置文件是从云端获取的。
具体地,上述安全等级配置文件可以是计算机***从云端下载得到的。
另外,上述安全等级配置文件可以定期或者不定期进行更新或者升级。
结合第二方面,在第二方面的某些实现方式中,上述根据安全等级配置文件对第一子***和第二子***的安全等级进行配置,包括:在计算机***的CPU核对应的安全等级配置模块中写入该计算***的CPU核的安全等级信息。
其中,上述CPU核的安全等级信息用于指示CPU核的安全等级。该CPU核对应的安全等级配置模块既可以位于CPU内部,也可以位于CPU外部。
上述CPU核对应的安全等级配置模块可以是硬件模块,具体可以由硬件电路实现,用于对CPU核输出的信号进行处理,使得处理后的信号包括CPU核的安全等级信息。
上述在CPU核对应的安全等级配置模块写入CPU核的安全等级信息时,具体是可以将CPU核的安全等级信息写入到CPU核对应的安全等级模块所对应的寄存器中,写入完毕之后,CPU核对应的安全等级模块就可以从该寄存器中获取CPU核的安全等级信息。
结合第二方面,在第二方面的某些实现方式中,上述计算机***中的CPU核与安全等级配置模块为一一对应关系,每个安全等级模块用于指示对应的CPU核的安全等级。
当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
结合第二方面,在第二方面的某些实现方式中,计算机***中的每个CPU核对应的安全等级配置模块设置在每个CPU核的内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
结合第二方面,在第二方面的某些实现方式中,在上述计算机***中,CPU簇与安全等级配置模块为一一对应关系,CPU簇包括多个CPU核,每个安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
结合第二方面,在第二方面的某些实现方式中,每个CPU簇对应的安全等级配置模块设置在每个CPU簇对应的L3缓存的协议处理模块L3_TAG中。
结合第二方面,在第二方面的某些实现方式中,上述第一子***包括内存访问检查器,上述根据安全等级配置文件对第一子***和第二子***的安全等级进行配置,包括:在内存访问检查器中写入内存安全等级划分信息。
通过在内存访问检查器中写入内存安全等级划分信息,使得内存访问检查器能够根据写入的内存安全等级划分信息实现对内存访问的检查和管理,便于后续实现内存的隔离。
结合第二方面,在第二方面的某些实现方式中,其特征在于,根据安全等级配置文件对第一子***和第二子***的安全等级进行配置,包括:在IO设备对应的安全等级配置和检测模块写入IO设备的安全等级信息,该IO设备对应的安全等级配置和检测模块用于对IO设备接收到的访问请求进行检测,以确定发起访问请求的设备的安全等级与IO设备的安全等级是否匹配。
通过分区管理器将IO设备的安全等级信息写入到IO设备中,能够实现对IO设备的安全等级的配置,同时也能够实现配置后的IO设备的安全等级配置和检测模块实现对发起访问请求的设备的安全等级的检查,从而实现不同安全等级的设备之间的隔离。
第三方面,提供了一种通信方法,该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,第一子***的CPU核和第二子***的CPU核集成在同一芯片上,该通信方法包括:
接收第一子***和第二子***的安全等级配置信息,以实现对第一子***和第二子***的安全等级的配置,使得第一子***的CPU核的安全等级高于第二子***的CPU核的安全等级,第一子***的IO设备的安全等级高于第二子***的IO设备的安全等级,第一子***使用的内存的安全等级高于第二子***的内存的安全等级。
本申请中,在接收到第一子***和第二子***的安全等级配置信息之后,能够根据该安全等级配置信息实现对第一***和第二子***的安全等级的配置,从而实现对第一子***和第二子***的安全隔离,能够尽量避免第二子***出现异常时影响第一子***的正常工作。
结合第三方面,在第三方面的某些实现方式中,上述接收第一子***和第二子***的安全等级的配置信息,以实现对第一子***和第二子***的安全等级的配置,包括:接收计算机***中的每个CPU核的安全等级信息。
在接收到每个CPU核的安全等级信息之后,也就实现了对计算机***中的每个CPU核的安全等级的配置。
结合第三方面,在第三方面的某些实现方式中,上述计算机***中的CPU核与安全等级配置模块为一一对应关系,每个安全等级模块用于指示对应的CPU核的安全等级。
也就是说,每个CPU核可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU核的安全等级。当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
结合第三方面,在第三方面的某些实现方式中,每个CPU核对应的安全等级配置模块位于每个CPU核内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
结合第三方面,在第三方面的某些实现方式中,计算机***中的CPU簇与安全等级配置模块为一一对应关系,安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
结合第三方面,在第三方面的某些实现方式中,在计算机***中,任意一个CPU簇对应的安全等级配置模块设置在任意一个CPU簇对应的L3缓存的协议处理模块L3_TAG中。
结合第三方面,在第三方面的某些实现方式中,接收第一子***和第二子***的安全等级的配置信息,以实现对第一子***和第二子***的安全等级的配置,包括:接收内存安全等级划分信息,内存安全等级划分信息用于指示计算机***中不同地址段的内存的安全等级。
通过接收内存安全等级划分信息能够实现对计算机***中不同地址段的内存的安全等级的配置。
结合第三方面,在第三方面的某些实现方式中,接收第一子***和第二子***的安全等级的配置信息,以实现对第一子***和第二子***的安全等级的配置,包括:
接收计算机***中的IO设备的安全等级信息,并对该IO设备接收到的访问请求进行检测,以确定发起访问请求的访问设备的安全等级与该IO设备的安全等级是否匹配。
结合第三方面,在第三方面的某些实现方式中,上述方法还包括:接收中断发起者发起的中断请求,中断请求携带发起中断发起者的安全等级信息;
根据配置的安全等级信息和中断请求,确定中断发起者的安全等级与中断发起者对应的中断接收者的安全等级是否匹配,并在中断发起者的安全等级与中断接收者的安全等级匹配的情况下,允许中断接收者接受中断请求。
本申请中,通过中断控制器能够实现对中断请求的处理,使得中断发起者的安全等级与中断接收者的安全等级的匹配下再由中断接收者接受该中断请求,能够在正常处理中断请求的情况下实现中断发起者和中断接收者之间的隔离。
结合第三方面,在第三方面的某些实现方式中,根据第一子***和第二子***的安全等级的配置信息和中断请求,确定中断发起者的安全等级与中断设备要访问的中断目标设备的安全等级是否匹配,包括:
在中断发起者与中断目标设备均属于第一子***时,确定中断发起者的安全等级与中断目标设备的安全等级匹配;
在中断发起者与中断目标设备均属于第二子***时,确定中断发起者的安全等级与中断目标设备的安全等级匹配。
当中断发起者的安全等级大于或者等于中断接收者的安全等级时,允许中断接收者接收中断发起者发起的中断请求,从而避免高安全等级的设备接收或者处理低安全等级设备发起的中断请求,从而尽可能的避免安全等级的设备出现异常时对高安全等级设备的影响。
结合第三方面,在第三方面的某些实现方式中,在内存访问发起者的安全等级低于内存访问发起者要访问的内存安全等级时,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配。
结合第三方面,在第三方面的某些实现方式中,上述方法还包括:接收来自内存访问发起者的内存访问请求,内存访问请求携带内存访问发起者要访问的内存地址以及内存访问发起者的安全等级信息;在内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级匹配的情况下,允许内存访问发起者访问内存访问发起者要访问的内存地址,内存安全等级划分信息用于指示不同段的内存所属的安全等级。
结合第三方面,在第三方面的某些实现方式中,上述内存访问发起者要访问的内存的安全等级与内存访问发起者的安全等级匹配,包括:内存访问发起者的安全等级高于或者等于内存访问发起者要访问的内存的安全等级。
由于内存访问发起者只能访问安全等级相同或者安全等级更低的内存,能够尽可能的避免低安全***的设备访问较高安全等级的内存,能够在一定程度上实现对内存的隔离。
第四方面,提供了一种通信方法,该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,第一子***的CPU核和第二子***的CPU核集成在同一芯片上,该通信方法包括:IO设备接收来自访问设备的访问请求,访问请求携带访问设备的安全等级信息,其中,IO设备为第一子***或者第二子***中的任意一个IO设备;在访问设备的安全等级与IO设备的安全等级相匹配时,IO设备允许访问设备对IO设备的访问。
结合第四方面,在第四方面的某些实现方式中,上述访问设备的安全等级与IO设备的安全等级相匹配,包括:访问设备的安全等级大于或者等于IO设备的安全等级。
第五方面,提供了一种计算机***,该计算机***包括第一子***和第二子***,该第一子***和第二子***用于执行上述第一方面中的方法。
第六方面,提供了一种处理装置,该处理装置包括用于执行上述第二方面中的方法中的各个模块。
第七方面,提供了一种处理装置,该处理装置包括用于执行上述第三方面中的方法中的各个模块。
第八方面,提供了一种处理装置,该处理装置包括用于执行上述第四方面中的方法中的各个模块。
上述第六方面、第七方面以及第八方面中的处理装置可以是上述第一方面中的计算机***中的一个芯片。
第九方面,提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,该程序代码包括用于执行第二方面中的任意一种方法中的步骤的指令。
第十方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第二方面中的任意一种方法。
第十一方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第二方面中的任意一种方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述第二方面中的任意一种方法。
上述芯片具体可以是现场可编程门阵列FPGA或者专用集成电路ASIC。
附图说明
图1是自动驾驶***的示意图;
图2是本申请实施例的通信方法的示意性流程图;
图3是内存访问检查器的处理内存访问请求的过程的示意图;
图4是IO设备确定是否接受访问设备的访问的过程的示意图;
图5是IO设备访问内存的示意图;
图6是每个CPU核对应一个安全等级配置模块的示意图;
图7是每个CPU簇对应一个安全等级配置模块的示意图;
图8是本申请实施例的通信方法的示意性流程图;
图9是本申请实施例的通信方法的示意性流程图;
图10是本申请实施例的通信方法的示意性流程图;
图11是自动驾驶***的结构示意图;
图12是分区管理器配置内存访问检查器的过程的示意图;
图13是本申请实施例的计算机***的示意性框图;
图14是本申请实施例的处理装置的示意性框图;
图15是本申请实施例的处理装置的示意性框图;
图16是本申请实施例的处理装置的示意性框图;
图17是自动驾驶***中中断配置的示意图;
图18是中断处理过程的示意图;
图19是启动计算机***的示意图;
图20是不同的子***之间进行共享通信的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请中的计算机***具体可以位于自动驾驶***中,当计算机***位于自动驾驶***中时,对计算机***的不同子***的(分区)隔离实质上也就是对自动驾驶***中不同子***的隔离。
下面以自动驾驶***为例,对自动驾驶***的分区隔离进行说明。对于自动驾驶***来说,对于***内不同安全等级的子***来说,要实现不同安全等级的子***的彻底隔离,并且还要实现不同子***之间正常工作时的通信。下面结合图1对自动驾驶***的分区隔离进行说明。
如图1所示,自动驾驶***包括第一子***和第二子***,其中,第一子***用于识别物体,第二子***是用于控制车辆(控制车辆的刹车、加速和转弯等)。如果第一子***发现车辆前方有障碍物,则通知第二子***控制车辆进行刹车。当该通知命令发出后,如果第一子***出现故障,那么,该故障可能会导致第二子***无法正常工作,从而使得第二子***的刹车命令没有得到正确执行,最后很可能会导致车辆撞向障碍物,发生交通事故。
因此,在图1所示的自动驾驶***中,为了实现安全驾驶,需要将第一子***和第二子***隔离,使得当其中一个子***发生故障后,另一个子***还能够正常工作。
下面结合图2对本申请实施例的通信方法进行详细的介绍。图2所示的通信方法可以由计算机***中的设备来执行。图2所示的方法该方法可以应用于计算机***中,该计算机***包括第一子***和第二子***,其中,第一子***的安全等级高于第二子***的安全等级,第一子***的CPU核、第二子***的CPU核以及所述内存访问检查器集成在同一芯片上。该计算机***包括中断控制器,该中断控制器由第一子***和第二子***共用,该中断控制器中的保存的中断路由配置信息是由第一子***的CPU核配置的,该中断路由配置信息用于指示响应每个中断的CPU核,第一子***还包括内存访问检查器。
图2所示的方法包括步骤1001和1002,下面对步骤1001和1002进行详细的介绍。
1001、内存访问这向内存访问检查器发送内存访问请求,内存访问检查器接收来自内存访问发起者的内存访问请求。
其中,上述内存访问请求携带内存访问发起者要访问的内存地址以及内存访问发起者的安全等级信息。
1002、该内存访问检查器根据预先配置的内存安全等级划分信息,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级是否匹配,并根据匹配结果确定是否允许内存访问发起者进行访问。
具体地,当内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级匹配时,允许内存访问发起者访问内存;而当内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配时,不允许内存访问发起者访问内存。
上述内存安全等级划分信息用于指示计算机***中不同地址段的内存的安全等级。
可选地,上述计算机***为无人驾驶***中的***。
当上述计算机***为无人驾驶***中的***时,通过该计算机***能够控制无人驾驶***的行驶。
应理解,在本申请中,安全等级越高安全程度也就越高。
可选地,上述方法还包括:当内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配时,不允许内存访问发起者访问内存。
本申请中,通过将内存访问检查器设置在高安全等级的子***中,并将计算机***的内存按照安全等级进行划分,能够实现对计算机***的不同子***实现较好的隔离,尽可能的避免一个子***出现异常后影响其他子***的正常工作。
应理解,在本申请中,计算机***还可以包括第一子***和第二子***之外的其他子***,本申请中对计算机***中包含的子***的个数不做限定。当计算机***包含其他子***时,可以按照与第一子***或者第二子***类似的方式为其他子***进行安全等级的配置。
本申请中,还可以将第二子***再划分成至少两个微***,然后再采用配置第一子***和第二子***的方式对该至少两个微***进行配置。
例如,可以将第二子***再划分成第一微***和第二微***,并采用上述配置第一子***和第二子***的方式来配置第一微***和第二微***的安全等级,使得第一微***的安全等级高于第二微***的安全等级。
在上述计算机***中,除了对第一子***和第二子***访问的内存进行隔离之外,还可以将第一子***的设备和第二子***的设备进行隔离。
下面结合图3对内存访问检查器的处理内存访问请求的过程进行详细描述。
如图3所示,当CPU或者IO设备作为主设备访问内存时,CPU或者IO设备的访问请求会携带安全等级信号,该访问请求会先到达地址解码器中进行解码,从而得到内存访问地址和访问请求中携带的安全等级信号,接下来,内存访问检查器会对访问请求中携带的安全等级信号进行安全等级的校验,只有安全等级匹配的内存访问请求才允许访问内存,否则上报安全中断。
在本申请中,IO设备还可以根据访问设备的访问请求确定访问设备的安全等级与IO设备的安全等级是否匹配,并在匹配的情况下再允许访问设备的访问,下面结合图4进行具体说明。
如图4所示,IO设备确定是否接受访问设备的访问的过程具体包括步骤2001至2003,下面对这几个步骤进行介绍。
2001、IO设备接收来自访问设备的访问请求。
上述访问请求携带访问设备的安全等级信息,上述IO设备为第一子***或者第二子***中的任意一个IO设备。
2002、在访问设备的安全等级与IO设备的安全等级相匹配时,IO设备允许访问设备对IO设备的访问。
2003、在访问设备的安全等级与IO设备的安全等级相匹配时,IO设备允许访问设备对IO设备的访问。
应理解,在实际执行过程中,对于同一个访问设备,IO设备执行步骤2002或者2003。
进一步的,在上述步骤2002和2003之前,图4所示的过程还可以包括步骤2004。
2004、确定访问设备的安全等级与IO设备的安全等级是否匹配。
具体地,在步骤2004中,IO设备可以根据访问设备的访问请求来获取访问设备的安全等级,然后根据访问设备的安全等级和IO设备的安全等级来确定访问设备的安全等级和IO设备的安全等级是否匹配。
本申请中,只有在访问设备的安全等级与IO设备的安全等级匹配的情况下,IO设备才接受访问设备的访问,而如果访问设备的安全等级与IP设备不匹配时,IO设备不接受IO设备的访问,从而在访问设备与IO设备之间进行了一定程度的隔离,避免安全等级与IO设备不匹配的访问设备访问IO设备。
可选地,上述访问设备的安全等级与IO设备的安全等级相匹配,包括:访问设备的安全等级大于或者等于IO设备的安全等级。
本申请中,当访问设备的安全等级高于或者等于IO设备的安全等级时,才允许访问设备访问IO设备,也就是说,安全等级高的设备可以访问安全等级相同或者安全等级较低的设备,使得安全等级较低的设备无法访问安全等级较高的设备,从而在访问设备和IO设备之间实现一定程度的隔离。
具体地,由于低安全等级的设备无法访问高安全等级的设备,从而能够避免低安全等级的设备出现异常时对高安全等级设备的影响。
对于每个IO设备来说,可以增加一个配置寄存器,用于存放该IO设备的安全等级,如图5所示,当IO设备作为主设备访问内存的时候,该IO设备的安全等级信息会随着硬件信号在地址总线上面传输,当该硬件信号经过内存访问检查器时,内存访问检查器会对该硬件信号进行安全等级的检查。
同样的,如图5所示,当CPU核访问IO设备时,该IO设备会对CPU核的访问请求进行安全等级的检查,只有CPU核的安全等级与IO设备的安全等级匹配时,才允许CPU核访问该IO设备。
除了对第一子***和第二子***访问的内存以及第一子***的设备和第二子***的设备进行隔离之外,还可以对中断请求进行隔离。
可选地,图2所示的方法还包括:中断控制器接收来自中断发起者的中断请求,该中断请求携带中断发起者的安全等级信息;中断控制器根据配置的安全等级信息和中断请求,确定中断发起者的安全等级与中断发起者对应的中断接收者的安全等级是否匹配,并在中断发起者的安全等级与中断接收者的安全等级匹配的情况下,允许中断接收者接受中断请求。
本申请中,通过中断控制器能够实现对中断请求的处理,使得中断发起者的安全等级与中断接收者的安全等级的匹配下再由中断接收者接受该中断请求,能够在正常处理中断请求的情况下实现中断发起者和中断接收者之间的隔离。
可选地,上述中断发起者的安全等级与中断接收者的安全等级匹配包括:中断发起者与中断接收者均属于第一子***;中断发起者与中断接收者均属于第二子***;或者,中断发起者属于第一子***,中断接收者属于第二子***。
当中断发起者的安全等级大于或者等于中断接收者的安全等级时,允许中断接收者接收中断发起者发起的中断请求,从而避免高安全等级的设备接收或者处理低安全等级设备发起的中断请求,从而尽可能的避免安全等级的设备出现异常时对高安全等级设备的影响。
可选地,上述中断发起者的安全等级与中断接收者的安全等级不匹配包括:中断发起者属于第二子***,中断接收设备属于第一子***。
当中断发起者的安全等级低于中断接收者的安全等级时,中断接收者不接受中断发起者的中断请求,从而能够在低安全***的设备出现故障时尽可能的避免对高安全***中的设备产生干扰。
可选地,上述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:内存访问发起者的安全等级高于或者等于内存访问发起者要访问的内存的安全等级。
由于内存访问发起者只能访问安全等级相同或者安全等级更低的内存,能够尽可能的避免低安全***的设备访问较高安全等级的内存,能够在一定程度上实现对内存的隔离。
可选地,在内存访问发起者的安全等级低于内存访问发起者要访问的内存安全等级时,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配。
上述第一子***还包括分区管理器,图2所示的方法还包括:分区管理器根据计算机***的安全等级配置文件为上述第一子***和上述第二子***中的设备进行安全等级的配置。
上述计算机***的安全等级配置文件用于指示上述第一子***和第二子***中的设备以及所使用的内存的安全等级。
通过分区管理器能够实现对第一子***和第二子***的安全等级的配置,从而实现对第一子***和第二子***的隔离。
应理解,分区管理器在对第一子***和第二子***进行安全等级的配置之前,可以先获取并解析计算机***的安全等级配置文件,在获取到第一子***和第二子***中的设备以及所使用的内存的安全等级之后,再对第一子***和第二子***进行安全等级的配置。
可选地,上述安全等级配置文件是预先配置好的文件。
具体地,上述安全等级配置文件可以是预先根据计算机***的设备情况和应用需求来确定的,在确定了该安全等级配置文件之后,可以将该安全等级配置文件写入到计算机***的缓存中,便于后续分区管理区获取并解析该安全等级配置文件。
可选地,上述安全等级配置文件是从云端获取的。
具体地,上述安全等级配置文件可以是计算机***从云端下载得到的。
另外,上述安全等级配置文件可以定期或者不定期进行更新或者升级。
结合第一方面,在第一方面的某些实现方式中,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级配置,包括:分区管理器在CPU核对应的安全等级配置模块写入CPU核的安全等级信息。
其中,上述CPU核的安全等级信息用于指示CPU核的安全等级。该CPU核对应的安全等级配置模块既可以位于CPU内部,也可以位于CPU外部。
上述CPU核对应的安全等级配置模块可以是硬件模块,具体可以由硬件电路实现,用于对CPU核输出的信号进行处理,使得处理后的信号包括CPU核的安全等级信息。
上述分区管理器在CPU核对应的安全等级配置模块写入CPU核的安全等级信息时,具体是可以将CPU核的安全等级信息写入到CPU核对应的安全等级模块所对应的寄存器中,写入完毕之后,CPU核对应的安全等级模块就可以从该寄存器中获取CPU核的安全等级信息。
可选地,在上述计算机***中,CPU核与安全等级配置模块为一一对应关系,每个安全等级配置模块用于指示对应的CPU核的安全等级。
也就是说,每个CPU核可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU核的安全等级。当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
可选地,CPU核对应的安全等级配置模块设置在CPU核的内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
如图6所示,每个CPU核均设置有安全等级配置模块,这样在配置完成之后,每个CPU核的发出信号都携带相应的安全等级信息。
假设图6所示的CPU核是自动驾驶***中的CPU核,并且,图6左侧的CPU核的安全等级配置模块被配置为ASIL-D级别,图6右侧的CPU核的安全等级配置模块被配置为ASIL-B级别,那么,左侧的CPU的信号携带ASIL-D的高安全等级信息,右侧的CPU的信号携带ASIL-B的低安全等级信息。
应理解,每个CPU核对应的安全等级配置模块也可以位于CPU核的外部,此时CPU核发出的信号也可以经过该CPU核对应的安全等级模块,该CPU核对应的安全等级模块在CPU核发出的信号中添加CPU核的安全等级信息。
除了以CPU为单位来配置CPU的安全等级之外,还可以以CPU簇为粒度来配置CPU的安全等级。
可选地,在上述计算机***中,CPU簇与安全等级配置模块为一一对应关系,CPU簇包括多个CPU核,安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
可选地,上述CPU簇对应的安全等级配置模块设置在CPU簇对应的L3缓存的协议处理模块L3_TAG中。
可选地,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级的配置,包括:分区管理器在内存访问检查器中写入内存安全等级划分信息。
通过分区管理器在内存访问检查器中写入内存安全等级划分信息,使得内存访问检查器能够根据写入的内存安全等级划分信息实现对内存访问的检查和管理,便于后续实现内存的隔离。
在本申请中,可以在CPU簇(cluster)外面的L3缓存(L3 Cache)中的L3_TAG模块(L3_TAG是L3 Cache的协议处理模块,包含除数据存储外的其他所有的功能)中新增一个硬件模块,该模块可以对CPU簇内部的CPU进行安全等级的配置。
如图7所示,一个CPU簇对应一个L3_TAG,在L3_TAG中增加了安全等级配置模块。一个安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
例如,当图7中L3_TAG中的安全等级模块配置成ASIL-D级别时,每个CPU的信号经过该L3_TAG之后都会携带有ASIL-D的高安全等级信息;同样,当L3_TAG中的安全等级模块配置成ASIL-B或者QM时,每个CPU的信号经过该L3_TAG之后都会携带有ASIL-B或者QM的低安全等级信息。
可选地,上述分区管理器根据安全等级配置文件为第一子***和第二子***中的设备进行安全等级配置,包括:分区管理器在IO设备对应的安全等级配置和检测模块写入IO设备的安全等级信息,该IO设备对应的安全等级配置和检测模块用于对IO设备接收到的访问请求进行检测,以确定发起访问请求的设备的安全等级与IO设备的安全等级是否匹配。
通过分区管理器将IO设备的安全等级信息写入到IO设备中,能够实现对IO设备的安全等级的配置,同时也能够实现配置后的IO设备的安全等级配置和检测模块实现对发起访问请求的设备的安全等级的检查,从而实现不同安全等级的设备之间的隔离。
可选地,图2所示的方法还包括:启动第一子***的第一个CPU核,以使得分区管理器在第一子***的第一个CPU核上运行;分区管理器启动第一子***的其他CPU核;在完成第一子***的CPU核启动之后,分区管理器依次启动第二子***的CPU核。
可选地,上述第二子***的内存包括共享内存,共享内存用于第一子***和第二子***之间传输数据,上述方法还包括:第一子***的CPU核将第一子***产生的第一通信数据存入到共享内存中,并发起第一中断,以便第二子***的CPU核接收到第一中断之后,从共享内存中读取第一通信数据;或者,第二子***的CPU核将第一第二子***产生的第二通信数据存入到共享内存中,并发起第二中断,以便第一子***的CPU核接收到第二中断之后,从共享内存中读取第二通信数据。
本申请中,通过第二子***的共享内存能够实现在第一子***和第二子***之间传输数据,从而在对第一子***和第二子***隔离的同时保证第一子***和第二子***之间的正常、通信。
下面结合图8对本申请实施例的通信方法进行详细描述。
图8是本申请实施例的通信方法的示意性流程图。图8所示的该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,该第一子***的CPU核和第二子***的CPU核集成在同一芯片上。
图8所示的方法包括步骤3001和3002,下面对这两个步骤进行详细的介绍。
3001、获取计算机***的安全等级配置文件。
其中,上述计算机***的安全等级配置文件用于指示第一子***和第二子***中的设备以及第一子***和第二***所使用的内存的安全等级。
3002、根据安全等级配置文件对第一子***和第二子***的安全等级进行配置,以使得第一子***的CPU核的安全等级高于第二子***的CPU核的安全等级,第一子***的IO设备的安全等级高于第二子***的IO设备的安全等级,第一子***使用的内存的安全等级高于第二子***的内存的安全等级。
图8所示的方法可以由计算机***中的分区管理器来执行,该分区管理器可以是计算机***中采用软件实现的一个模块(软件模块或者虚拟模块)。
可选地,上述计算机***为无人驾驶***中的***。
当上述计算机***为无人驾驶***中的***时,通过该计算机***能够控制无人驾驶***的行驶。
应理解,在本申请中,安全等级越高安全程度也就越高。
本申请中,在获取了计算机***的安全等级配置文件之后,能够根据计算机***的安全等级配置文件对第一子***和第二子***进行安全等级的配置,从而实现对第一子***和第二子***的安全隔离,能够尽量避免第二子***出现异常时影响第一子***的正常工作。
可选地,上述安全等级配置文件是预先配置好的文件。
上述安全等级配置文件可以是预先根据计算机***的设备情况和应用需求来确定的,在确定了该安全等级配置文件之后,可以将该安全等级配置文件写入到计算机***的缓存中,便于后续分区管理区获取并解析该安全等级配置文件。
可选地,上述安全等级配置文件是从云端获取的。
具体地,上述安全等级配置文件可以是计算机***从云端下载得到的。
另外,上述安全等级配置文件可以定期或者不定期进行更新或者升级。
可选地,上述步骤3002具体包括:
3002a、在计算机***的CPU核对应的安全等级配置模块中写入该计算***的CPU核的安全等级信息。
其中,上述CPU核的安全等级信息用于指示CPU核的安全等级。该CPU核对应的安全等级配置模块既可以位于CPU内部,也可以位于CPU外部。
上述CPU核对应的安全等级配置模块可以是硬件模块,具体可以由硬件电路实现,用于对CPU核输出的信号进行处理,使得处理后的信号包括CPU核的安全等级信息。
上述在CPU核对应的安全等级配置模块写入CPU核的安全等级信息时,具体是可以将CPU核的安全等级信息写入到CPU核对应的安全等级模块所对应的寄存器中,写入完毕之后,CPU核对应的安全等级模块就可以从该寄存器中获取CPU核的安全等级信息。
可选地,上述计算机***中的CPU核与安全等级配置模块为一一对应关系,每个安全等级模块用于指示对应的CPU核的安全等级。
当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
可选地,上述计算机***中的每个CPU核对应的安全等级配置模块设置在每个CPU核的内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
可选地,在上述计算机***中,CPU簇与安全等级配置模块为一一对应关系,CPU簇包括多个CPU核,每个安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
可选地,每个CPU簇对应的安全等级配置模块设置在每个CPU簇对应的L3缓存的协议处理模块L3_TAG中。
可选地,上述第一子***包括内存访问检查器,上述步骤3002具体包括:
3002b、在内存访问检查器中写入内存安全等级划分信息。
通过在内存访问检查器中写入内存安全等级划分信息,使得内存访问检查器能够根据写入的内存安全等级划分信息实现对内存访问的检查和管理,便于后续实现内存的隔离。
可选地,上述步骤3002具体包括:
3002c、在IO设备对应的安全等级配置和检测模块写入IO设备的安全等级信息,该IO设备对应的安全等级配置和检测模块用于对IO设备接收到的访问请求进行检测,以确定发起访问请求的设备的安全等级与IO设备的安全等级是否匹配。
通过分区管理器将IO设备的安全等级信息写入到IO设备中,能够实现对IO设备的安全等级的配置,同时也能够实现配置后的IO设备的安全等级配置和检测模块实现对发起访问请求的设备的安全等级的检查,从而实现不同安全等级的设备之间的隔离。
下面结合图9对本申请实施例的通信方法进行详细描述。
图9是本申请实施例的通信方法的示意性流程图。图9所示的该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,该第一子***的CPU核和第二子***的CPU核集成在同一芯片上。
图9所示的方法包括步骤4001和4002,下面对这两个步骤进行详细的介绍。
4001、接收第一子***和第二子***的安全等级配置信息。
4002、根据第一子***和第二子***的安全等级配置信息实现对第一子***和第二子***的安全等级的配置。
应理解,经过步骤4002可以使得第一子***的CPU核的安全等级高于第二子***的CPU核的安全等级,第一子***的IO设备的安全等级高于第二子***的IO设备的安全等级,第一子***使用的内存的安全等级高于第二子***的内存的安全等级。
本申请中,在接收到第一子***和第二子***的安全等级配置信息之后,能够根据该安全等级配置信息实现对第一***和第二子***的安全等级的配置,从而实现对第一子***和第二子***的安全隔离,能够尽量避免第二子***出现异常时影响第一子***的正常工作。
可选地,上述步骤4001具体包括:
4001a、接收计算机***中的每个CPU核的安全等级信息。
在接收到每个CPU核的安全等级信息之后,也就实现了对计算机***中的每个CPU核的安全等级的配置。
可选地,上述计算机***中的CPU核与安全等级配置模块为一一对应关系,每个安全等级模块用于指示对应的CPU核的安全等级。
当每个CPU核对应一个安全等级配置模块时,能够较为灵活地为各个CPU核配置相应的安全等级。
可选地,每个CPU核对应的安全等级配置模块位于每个CPU核内部。
当CPU核对应的安全等级配置模块设置在CPU核的内部时,便于对CPU核输出的信号进行处理,使得处理后的信号包含该CPU核的安全等级信息。
可选地,计算机***中的CPU簇与安全等级配置模块为一一对应关系,安全等级配置模块用于指示对应的CPU簇中的多个CPU核的安全等级。
每个CPU簇可以对应一个安全等级配置模块,每个安全等级配置模块用于指示与其对应的CPU簇的安全等级。当每个CPU簇对应一个安全等级配置模块时,能够减少安全等级配置模块的数量,从而简化计算机***的复杂度。
可选地,在计算机***中,任意一个CPU簇对应的安全等级配置模块设置在任意一个CPU簇对应的L3缓存的协议处理模块L3_TAG中。
可选地,上述步骤4001具体包括:
4001b、接收内存安全等级划分信息,内存安全等级划分信息用于指示计算机***中不同地址段的内存的安全等级。
通过接收内存安全等级划分信息能够实现对计算机***中不同地址段的内存的安全等级的配置。
可选地,上述步骤4001具体包括:
4001c、接收计算机***中的IO设备的安全等级信息,并对该IO设备接收到的访问请求进行检测,以确定发起访问请求的访问设备的安全等级与该IO设备的安全等级是否匹配。
可选地,图9所示的方法还包括:
4003、接收中断发起者发起的中断请求,中断请求携带发起中断发起者的安全等级信息;
4004、根据配置的安全等级信息和中断请求,确定中断发起者的安全等级与中断发起者对应的中断接收者的安全等级是否匹配,并在中断发起者的安全等级与中断接收者的安全等级匹配的情况下,允许中断接收者接受中断请求。
本申请中,通过中断控制器能够实现对中断请求的处理,使得中断发起者的安全等级与中断接收者的安全等级的匹配下再由中断接收者接受该中断请求,能够在正常处理中断请求的情况下实现中断发起者和中断接收者之间的隔离。
应理解,上述步骤4004中配置的安全等级信息包括第一子***和第二***的这两个子***的安全等级信息。
可选地,上述步骤4004具体包括:
4004a、在中断发起者与中断目标设备均属于第一子***时,确定中断发起者的安全等级与中断目标设备的安全等级匹配;
4004b、在中断发起者与中断目标设备均属于第二子***时,确定中断发起者的安全等级与中断目标设备的安全等级匹配。
当中断发起者的安全等级大于或者等于中断接收者的安全等级时,允许中断接收者接收中断发起者发起的中断请求,从而避免高安全等级的设备接收或者处理低安全等级设备发起的中断请求,从而尽可能的避免安全等级的设备出现异常时对高安全等级设备的影响。
可选地,在内存访问发起者的安全等级低于内存访问发起者要访问的内存安全等级时,确定内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级不匹配。
可选地,图9所示的方法还包括:
4005、接收来自内存访问发起者的内存访问请求,内存访问请求携带内存访问发起者要访问的内存地址以及内存访问发起者的安全等级信息;
4006、在内存访问发起者要访问的内存安全等级与内存访问发起者的安全等级匹配的情况下,允许内存访问发起者访问内存访问发起者要访问的内存地址,内存安全等级划分信息用于指示不同段的内存所属的安全等级。
可选地,上述内存访问发起者要访问的内存的安全等级与内存访问发起者的安全等级匹配,包括:内存访问发起者的安全等级高于或者等于内存访问发起者要访问的内存的安全等级。
由于内存访问发起者只能访问安全等级相同或者安全等级更低的内存,能够尽可能的避免低安全***的设备访问较高安全等级的内存,能够在一定程度上实现对内存的隔离。
下面结合图10对本申请实施例的通信方法进行详细描述。
图10是本申请实施例的通信方法的示意性流程图。图10所示的该通信方法应用于计算机***,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,该第一子***的CPU核和第二子***的CPU核集成在同一芯片上。
图10所示的方法包括步骤5001和5002,下面对这两个步骤进行详细的介绍。
5001、IO设备接收来自访问设备的访问请求
其中,上述访问请求携带访问设备的安全等级信息,上述IO设备为第一子***或者第二子***中的任意一个IO设备。
5002、在访问设备的安全等级与IO设备的安全等级相匹配时,该IO设备允许访问设备对IO设备的访问。
进一步的,图10所示的方法还可以包括步骤5003。
5003、在访问设备的安全等级与IO设备的安全等级不匹配时,该IO设备不允许访问设备对IO设备的访问。
可选地,上述访问设备的安全等级与IO设备的安全等级相匹配,包括:访问设备的安全等级大于或者等于IO设备的安全等级。
本申请实施例的通信方法应用的计算机***具体可以是自动驾驶***(或者也可以认为该计算机***位于自动驾驶***中),下面结合图11对自动驾驶***的具体结构进行详细的介绍。
图11是自动驾驶***的结构示意图。
如图11所示,自动驾驶***在软件上可以分为高安全操作子***和低安全操作子***,其中,高安全操作子***的ASIL高于低安全子***的ASIL,例如,高安全子***的ASIL可以是ASIL-D,低安全子***的ASIL可以是QM,ASIL-A,ASIL-B和ASIL-C中的任意一个。
其中,本申请实施例中的第一子***可以相当于图11所示的高安全操作***,第二子***可以相当于图11所示的第二子***。
图11所示的自动驾驶***可以分为硬件层和软件层。其中,硬件层提供了安全属性配置,安全检测和安全错误上报等,软件层基于该平台提供了资源隔离划分和中断管理的分区管理器。下面分别对硬件层和软件层进行详细的介绍。
硬件层:
硬件层中增加了安全配置和检测的逻辑,用于检测操作***软件和设备直接内存存取(direct memory access,DMA)访问是否合法。这些安全配置和检测的逻辑包括CPU核的安全等级配置,内存访问检查器对内存访问的安全检测,输入输出(input output,IO)设备的安全配置和检查,中断配置安全检查。下面对这些安全配置和检测的逻辑分别进行详细的介绍。
CPU核的安全等级配置:用于为CPU核配置相应的安全等级(高安全子***中的CPU核配置成高安全等级,低安全子***中的CPU核配置成低安全等级),在为CPU核配置了相应的安全等级后,CPU核发出的信号可以携带相应的安全等级信息并在总线上面进行传输。
具体地,在对CPU核的安全等级进行配置时,可以通过为CPU核对应的安全等级配置模块配置安全等级信息来实现。
内存访问检查器:对发到内存DDR的地址访问进行安全检查,只有安全等级匹配才允许访问,否则拒绝。
中断配置安全检查:对中断的安全等级进行检查,确保只有高安全级别的CPU才能操作高安全的中断配置,否则拒绝访问。
IO设备的安全配置和检查:用于将对应的IO设备配置成不同的安全等级,在完成安全等级的配置后,IO设备发出去的地址访问会携带有安全等级的信号,另外,该模块还可以对其他设备发起的对当前设备的访问请求进行安全等级检查,以确认安全等级是否匹配。
软件层:
软件层主要增加了分区管理器,用于进行资源的隔离和划分以及不同功能安全分区之间的共享内存通信。分区管理器中主要包括以下模块:CPU核的隔离划分、内存资源的隔离划分、IO设备安全等级配置、中断资源的隔离和配置、多操作***的安全启动、基于共享内存的数据通信。下面对每个模块的作用进行详细介绍。
安全核的隔离划分:该模块用于对每个操作***所使用的CPU核进行安全等级的划分,具体地,可以将高安全操作***和低安全操作***使用的CPU在配置文件里写好,彼此不共享(一个CPU核不会同时属于高安全***又属于低安全***)。例如,在***启动过程中,可以把高安全操作***使用的CPU配置成锁步模式且功能安全级别为ASIL-D,低安全操作***使用的CPU配置成普通模式且功能安全级别为ASIL-B或者QM级别。
内存资源的隔离划分:该模块用于对不同操作***使用的内存进行划分,彼此不共享。高安全的操作***使用ASIL-D级别内存,低安全操作***使用ASIL-B或者QM级别的内存。另外,还模块还可以把内存布局信息(内存分配信息)通过寄存器写到内存访问检查器里面。
IO设备安全等级配置:用于配置每个IO设备的功能安全等级,例如ASIL-D、ASIL-B或者QM级别。
中断资源的隔离和配置:用于对全局共享和关键的高安全中断配置进行管理,同时还可以处理低安全操作***发过来的对高中断配置的操作请求,如果该请求合法,则代为进行操作,否则拒绝。
多操作***的安全启动:该模块用于在高安全的CPU和低安全的CPU上面分别拉起对应功能安全等级的操作***。
多操作***之间的数据通信:在低功能安全的内存里面开辟一段共享内存,用来做不同功能安全等级的操作***之间的数据传输,当数据放在共享内存之后,利用中断的方式通知对方来取数据,高功能安全的***会检验低功能安全***发过来的共享内存数据的合法性。
应理解,图11中的安全设备的安全配置和检查具体可以是安全配置和检测模块,CPU核的安全等级配置具体可以是CPU核的安全等级配置模块。上述安全配置和检测模块,安全等级配置模块,中断控制器和内存访问检查器可以集成在同一芯片(图中未示出该芯片)中。
下面再结合图12对分区管理器配置内存访问检查器的过程进行描述。
图12示出了分区管理器对内存访问检查器进行配置的示意图。图12所示的过程包括步骤6001至步骤6003,下面对这些步骤进行详细的介绍。
6001、获取内存配置文件。
以ARM64平台为例,上述内存配置文件可以携带在设备树源码(device treesource,DTS)文件中。上述内存配置文件可以划分不同安全等级的子***使用的内存地址范围,例如,上述内存配置文件可以包含以下配置信息:
Figure BDA0002206681720000211
上述配置信息表示0~0x40000000范围内的内存被划分给了ASIL-D安全级别的子***,0x40000000~0x80000000范围内的内存被划分给了ASIL-B安全级别的子***。
6002、根据内存配置文件确定内存划分信息。
分区管理器在获取到了内存配置文件之后,通过解析该内存配置文件确定内存划分信息。
6003、根据内存划分信息对内存访问检查器进行配置。
例如,分区管理器通过解析配置信息,确定0~0x40000000范围内的内存被划分给了ASIL-D安全级别的子***,0x40000000~0x80000000范围内的内存被划分给了ASIL-B安全级别的子***。接下来,分区管理器可以将内存的划分情况配置给内存访问检查器,从而使得内存访问检查器能够第各个操作***或者其他的IO设备发起的内存地址访问进行安全检查。
具体地,当低安全操作***要访问高安全操作***的ASIL-D的内存,内存访问检查器就会检查出安全等级不匹配,对内存地址访问进行拦截,并上报安全(Safety)中断,通知应用软件现在已经发生了越界访问的安全(Safety)错误。
上文结合附图对本申请实施例的通信方法进行详细介绍,下面结合附图对本申请实施例的计算机***和处理装置进行描述,应理解,下文中介绍的计算机***和处理装置能够执行本申请实施例的通信方法的相应步骤,下文在介绍本申请实施例的计算机***和处理装置时适当省略重复的描述。
图13是本申请实施例的计算机***的示意性框图。图13所示的计算机***8000包括第一子***8010和第二子***8020,第一子***8010包括内存访问检查器8011。
第一子***8010的安全等级高于第二子***8020的安全等级,第一子***8010的CPU核、第二子***8020的CPU核以及内存访问检查器8011集成在同一芯片上。
所述内存访问检查器8011用于接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
所述内存访问检查器8011还用于根据预先配置的内存安全等级划分信息,确定所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级是否匹配,并在所述内存地址的安全等级与所述内存访问发起者的安全等级匹配时,允许所述内存访问发起者访问所述内存地址,其中,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
可选地,所述计算机***8000还包括:
IO设备,用于接收来自访问设备的访问请求,所述访问请求携带所述访问设备的安全等级信息,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备;
所述IO设备还用于在所述访问设备的安全等级与所述IO设备的安全等级相匹配时,允许所述访问设备对所述IO设备的访问。
可选地,所述访问设备的安全等级与所述IO设备的安全等级相匹配,包括:所述访问设备的安全等级大于或者等于所述IO设备的安全等级。
可选地,上述计算机***8000还包括:
中断控制器,其中,所述第一子***和所述第二子***共用所述中断控制器,所述中断控制器中的保存的中断路由配置信息是由第一子***的CPU核配置的,所述中断路由配置信息用于指示响应每个中断的CPU核
所述中断控制器用于:
接收来自中断发起者的中断请求,所述中断请求携带所述中断发起者的安全等级信息;
根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
可选地,上述所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
可选地,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
可选地,所述第一子***还包括:
分区管理器,所述分区管理器用于:
根据所述计算机***的安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级的配置,所述计算机***的安全等级配置文件用于指示所述第一子***和第二子***中的设备以及所使用的内存的安全等级。
可选地,所述分区管理器用于:
在所述计算机***的CPU核对应的安全等级配置模块写入所述计算机***的CPU核的安全等级信息,所述计算机***的CPU核的安全等级信息用于指示所述计算机***的CPU核的安全等级。
可选地,所述分区管理器用于在所述内存访问检查器中写入所述内存安全等级划分信息。
可选地,所述分区管理器用于:
在IO设备对应的安全等级配置和检测模块写入所述IO设备的安全等级信息,所述IO设备对应的安全等级配置和检测模块用于对所述IO设备接收到的访问请求进行检测,以确定发起所述访问请求的设备的安全等级与所述IO设备的安全等级是否匹配,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备。
可选地,所述计算机***还包括:
初始启动模块,用于启动所述第一子***的第一个CPU核,以使得所述分区管理器在所述第一子***的第一个CPU核上运行;
所述分区管理器用于启动所述第一子***的其他CPU核;
在完成所述第一子***的CPU核启动之后,所述分区管理器还用于依次启动所述第二子***的CPU核。
可选地,其特征在于,所述第二子***的内存包括共享内存,所述共享内存用于第一子***和第二子***之间传输数据,所述第一子***的CPU核用于将第一子***产生的第一通信数据存入到所述共享内存中,并发起第一中断,以便所述第二子***的CPU核接收到所述第一中断之后,从所述共享内存中读取第一通信数据;或者
所述第二子***的CPU核用于将所述第二子***产生的第二通信数据存入到所述共享内存中,并发起第二中断,以便所述第一子***的CPU核接收到所述第二中断之后,从所述共享内存中读取第二通信数据。
图14是本申请实施例的处理装置的示意性框图。图14所示的处理装置9000包括存储器9001和处理器9002。
图14所示的处理装置9000可以应用于计算机***中,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,第一子***的CPU核和第二子***的CPU核集成在同一芯片上,处理装置位于第一子***中。
上述存储器9001用于存储程序,当存储器9001存储的程序被处理器9002执行时,处理9002用于图8所示的方法中的各个步骤。
图15是本申请实施例的处理装置的示意性框图。图15所示的处理装置10000包括存储器10001和处理器10002。
图15所示的处理装置10000可以应用于计算机***中,所述处理装置10000应用于计算机***中,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在所述处理装置10000上,所述处理装置10000位于所述第一子***中,所述处理装置10000包括:
安全等级配置模块10001,用于接收所述第一子***和所述第二子***的安全等级配置信息;
所述安全等级配置模块10001,还用于根据接收到的安全等级配置文件,对所述第一子***和所述第二子***的安全等级的配置,所述第一子***使用的内存的安全等级高于所述第二子***的内存的安全等级。
上述处理装置10000可以是计算机***中的一个芯片。
可选地,所述安全等级配置模块10001用于:
接收所述计算机***中的每个CPU核的安全等级信息,以实现对所述计算机***中的每个CPU核的安全等级的配置。
可选地,所述处理装置还包括:
内存访问检查器10002,用于接收内存安全等级划分信息,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
可选地,所述处理装置还包括:
安全等级配置和检测模块10003,用于接收所述计算机***中的IO设备的安全等级信息;
所述安全等级配置和检测模块10003还用于对所述计算机***中的IO设备接收到的访问请求进行检测,以确定发起所述访问请求的访问设备的安全等级与所述计算机***中的IO设备的安全等级是否匹配。
可选地,所述处理装置还包括:
中断控制器10004,用于根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
可选地,所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
可选地,所述安全等级配置模块10001用于:
接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
在所述内存访问发起者要访问的内存安全等级与所述内存访问发起者的安全等级匹配的情况下,允许所述内存访问发起者访问所述内存访问发起者要访问的内存地址,所述内存安全等级划分信息用于指示不同段的内存所属的安全等级。
可选地,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
图16是本申请实施例的处理装置的示意性框图。图16所示的处理装置11000包括接收器11001和处理器11002。
图16所示的处理装置11000可以应用于计算机***中,该计算机***包括第一子***和第二子***,第一子***的操作***与第二子***的操作***不同,第一子***的CPU核和第二子***的CPU核集成在同一芯片上,该处理装置11000位于第一子***中。
上述处理装置11000中的接收器11001和处理器11002可以用于执行图10所示的方法中的各个步骤。
上述装置11000可以是计算机***中的一个设备,例如,IO设备。
为了对本申请实施例的通信方法和相关装置有进一步的理解,下面以自动驾驶***为例对相关的通信过程进行详细的介绍。
如图17所示,在自动驾驶***的硬件设计的时候,可以把中断控制器配置分成了两部分,核心以及共享的中断配置设计成ASIL-D等级,只有安全锁步核才能操作,这样也是避免非锁步核上面的低安全操作***在失效的时候对中断的恶意更改,从而避免对高安全操作***的影响。其中的中断配置包括中断的使能,中断的关闭,中断的路由等。如果普通的CPU核(非锁步核)想操作该配置,必须把请求发给锁步核,让锁步核代为进行操作。Per-Core的配置以及部分低安全配置不区分安全等级,每个CPU都可以操作,包括低安全操作***所在的普通CPU,因为高安全操作***不会使用这部分配置,即使低安全操作***出了问题,也不会对高安全操作***的运行产生影响。
其中,图17中的GIC_STREAMBUS表示总线,GICD表示中断分发器(distrubitor),GICR表示中断重分发器(REdistrubitor),ITS表示中断转发服务组件(interrupttranslation service components,ITS)。DEVICE_ASILD表示一个安全等级为ASILD的设备,DEVICE_ASILB表示一个安全等级为ASILB的设备,DEVICE_QM表示一个安全等级为QM的设备,OS ASILD表示安全等级为ASILD的操作***,OS ASILB表示安全等级为ASILB的操作***。
上文结合图17对中断配置进行了介绍,下面结合图18对分区管理器以及中断处理过程进行介绍。
分区管理器位于高安全操作***中,***启动过程中会根据高安全操作***配置文件配置情况,调用中断控制器驱动,把全局共享的ASIL-D资源配置好,也包括高安全操作***所使用的非ASIL-D的资源(配置)。
低安全操作***启动过程中,解析中断的配置文件,By-pass对ASIL-D中断配置的操作,把对ASIL-D中断的操作转换为对高安全操作***的中断操作请求,让高安全操作***代为进行操作。高安全操作***收到该请求后,会检查该操作是否合法,比如要操作的中断号属于高安全操作***管理的设备,高安全操作***会拒绝。因为两个操作***的所管理的设备是独立的,没有共享。同样对于已经初始化好的全局共享的ASIL-D中断配置,高安全操作***也会拒绝,因为高安全操作***启动过程中,已经被分区管理初始化过了,不需要重新初始化,上述过程如图18所示。出于性能方面的考虑,低安全操作***会减少在运行时操作ASIL-D的中断配置。
高功能安全操作***隔离使用的CPU,在配置文件里面提前配置好,例如对于ARM64平台,其配置文件为DTS(Device Tree Source),OS kernel解析DTS配置文件就能够知道要使用哪几个CPU,并建立CPU拓扑结构,在SMP boot的时候,分区管理器根据配置文件,依次通知BIOS或者ATF(ARM64平台),把即将要启动的CPU配置成锁步状态还是普通状态,并拉起对应的CPU运行,过程如图19所示。
高安全操作***本地的SMP启动完成后,分区管理器会拉起低安全操作***的第一个核,低安全操作***的第一个核被拉起后,跳入到低安全操作***的内部kernel入口地址,然后进行初始化,低安全操作***使用哪几个CPU,也是在配置文件里面提前划分好的,低安全操作***根据自身配置文件里面的CPU划分,依次拉起划分给他的CPU。因为是低安全的操作***,所以不需要把属于他的CPU配置锁步状态。
下面结合图20对不同的子***之间进行共享通信的过程进行详细介绍。
如图20所示,内存可以被分为不同的功能安全区域,例如ASIL-D和ASIL-B,不同的功能安全OS用不同级别的内存区域,例如高安全OS用ASIL-D的内存,低功能安全OS用ASIL-B的内存。当在两者进行共享内存通信的时候,在低功能安全内存区域开辟一段内存,这样两个OS都可以进行读写访问该区域,下面我们分别来阐述图20所示的各个模块的作用。
IRQ Notifier/Handler:当一个OS把数据放在共享内存之后,调用IRQ Notifier通知另一个OS去共享内存里面取数据,另一个OS收到中断后,进入IRQ Handler,在该Handler里面查看需要从哪块共享内存里面取数据,并通知目标app去取数据。
驱动hmem driver:该驱动提供了分配共享内存区的功能,把映射之后的内存给用户态去使用。
接口1为Libshmem,是对上层用户态提供的封装接口,通过类似open,mmap等接口完成对共享内存的操作。
当低安全OS上面通过Hypervisor运行Guest OS的时候,Guest OS上面提供了跟低安全Host OS进行通信的shmem FE driver,该驱动与shemem BE driver进行通信,完成Guest OS对共享内存的读写。
Shmem FE driver:共享内存前端程序,提供了Guest OS自身的Stage1的地址映射功能,同时与Host OS Shmem BE driver后端驱动进行对接。
Shmem BE driver:共享内存后端程序,处理共享内存前端程序的退出,调用libshmem完成Stage2的映射,并调用IRQ Notifier通知对方OS去接收数据;当收到对端OS发过来的数据时,该共享内存后端程序注入中断给Guest OS,共享内存前端程序收到注入的中断后,通知Guest内的对应App去读取数据。
端到端(E2E):端到端保护,当数据从高安全操作***传向低安全的操作***的时候,通过CRC校验数据的完整性以及正确性。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (51)

1.一种通信方法,其特征在于,所述方法应用于计算机***,所述计算机***包括第一子***和第二子***,所述第一子***的安全等级高于所述第二子***的安全等级;
所述第一子***包括内存访问检查器,其中,所述第一子***的CPU核、所述第二子***的CPU核以及所述内存访问检查器集成在同一芯片上,所述方法包括:
内存访问检查器接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
所述内存访问检查器根据预先配置的内存安全等级划分信息,确定所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级是否匹配,并在所述内存地址的安全等级与所述内存访问发起者的安全等级匹配时,允许所述内存访问发起者访问所述内存地址,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
IO设备接收来自访问设备的访问请求,所述访问请求携带所述访问设备的安全等级信息,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备;
在所述访问设备的安全等级与所述IO设备的安全等级相匹配时,所述IO设备允许所述访问设备对所述IO设备的访问。
3.如权利要求2所述的方法,其特征在于,所述访问设备的安全等级与所述IO设备的安全等级相匹配,包括:
所述访问设备的安全等级大于或者等于所述IO设备的安全等级。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述计算机***还包括中断控制器,所述第一子***和所述第二子***共用所述中断控制器,所述中断控制器中的保存的中断路由配置信息是由第一子***的CPU核配置的,所述中断路由配置信息用于指示响应每个中断的CPU核,所述方法还包括:
所述中断控制器接收来自中断发起者的中断请求,所述中断请求携带所述中断发起者的安全等级信息;
所述中断控制器根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
5.如权利要求4所述的方法,其特征在于,所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
7.如权利要求1-6中任一项所述的方法,其特征在于,所述第一子***包括分区管理器,所述方法还包括:
所述分区管理器根据所述计算机***的安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级的配置,所述计算机***的安全等级配置文件用于指示所述第一子***和第二子***中的设备以及所使用的内存的安全等级。
8.如权利要求7所述的方法,其特征在于,所述分区管理器根据所述安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级配置,包括:
所述分区管理器在所述计算机***的CPU核对应的安全等级配置模块写入所述计算机***的CPU核的安全等级信息,所述计算机***的CPU核的安全等级信息用于指示所述计算机***的CPU核的安全等级。
9.如权利要求7或8所述的方法,其特征在于,所述分区管理器根据所述安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级的配置,包括:
所述分区管理器在所述内存访问检查器中写入所述内存安全等级划分信息。
10.如权利要求7-9中任一项所述的方法,其特征在于,所述分区管理器根据所述安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级配置,包括:
所述分区管理器在IO设备对应的安全等级配置和检测模块写入所述IO设备的安全等级信息,所述IO设备对应的安全等级配置和检测模块用于对所述IO设备接收到的访问请求进行检测,以确定发起所述访问请求的设备的安全等级与所述IO设备的安全等级是否匹配,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备。
11.如权利要求7-10中任一项所述的方法,其特征在于,所述方法还包括:
启动所述第一子***的第一个CPU核,以使得所述分区管理器在所述第一子***的第一个CPU核上运行;
所述分区管理器启动所述第一子***的其他CPU核;
在完成所述第一子***的CPU核启动之后,所述分区管理器依次启动所述第二子***的CPU核。
12.如权利要求1-11中任一项所述的方法,其特征在于,所述第二子***的内存包括共享内存,所述共享内存用于第一子***和第二子***之间传输数据,所述方法还包括:
所述第一子***的CPU核将第一子***产生的第一通信数据存入到所述共享内存中,并发起第一中断,以便所述第二子***的CPU核接收到所述第一中断之后,从所述共享内存中读取第一通信数据;或者
所述第二子***的CPU核将所述第二子***产生的第二通信数据存入到所述共享内存中,并发起第二中断,以便所述第一子***的CPU核接收到所述第二中断之后,从所述共享内存中读取第二通信数据。
13.一种通信方法,其特征在于,所述方法应用于计算机***,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在同一芯片上,所述方法包括:
获取所述计算机***的安全等级配置文件,所述计算机***的安全等级配置文件用于指示所述第一子***和第二子***中的设备以及所使用的内存的安全等级;
根据所述计算机***的安全等级配置文件对所述第一子***和所述第二子***的安全等级进行配置,以使得所述第一子***的CPU核的安全等级高于所述第二子***的CPU核的安全等级,所述第一子***的IO设备的安全等级高于所述第二子***的IO设备的安全等级,所述第一子***使用的内存的安全等级高于所述第二子***的内存的安全等级。
14.如权利要求13所述的方法,其特征在于,所述根据所述安全等级配置文件对所述第一子***和所述第二子***的安全等级进行配置,包括:
在所述计算机***的CPU核对应的安全等级配置模块中写入所述计算机***的CPU核的安全等级信息,所述计算机***的CPU核的安全等级信息用于指示所述计算机***的CPU核的安全等级。
15.如权利要求13或14所述的方法,其特征在于,所述第一子***包括内存访问检查器,所述根据所述安全等级配置文件对所述第一子***和所述第二子***的安全等级进行配置,包括:
在所述内存访问检查器中写入所述内存安全等级划分信息。
16.如权利要求13-15中任一项所述的方法,其特征在于,所述根据所述安全等级配置文件对所述第一子***和所述第二子***的安全等级进行配置,包括:
在所述IO设备对应的安全等级配置和检测模块写入所述IO设备的安全等级信息,所述IO设备对应的安全等级配置和检测模块用于对所述IO设备接收到的访问请求进行检测,以确定发起所述访问请求的访问设备的安全等级与所述IO设备的安全等级是否匹配,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备。
17.一种通信方法,其特征在于,所述方法应用于计算机***,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在同一芯片上,所述方法包括:
接收所述第一子***和所述第二子***的安全等级配置信息,以实现对所述第一子***和所述第二子***的安全等级的配置,使得所述第一子***的CPU核的安全等级高于所述第二子***的CPU核的安全等级,所述第一子***的IO设备的安全等级高于所述第二子***的IO设备的安全等级,所述第一子***使用的内存的安全等级高于所述第二子***的内存的安全等级。
18.如权利要求17所述的方法,其特征在于,所述接收所述第一子***和所述第二子***的安全等级的配置信息,以实现对所述第一子***和所述第二子***的安全等级的配置,包括:
接收所述计算机***中的每个CPU核的安全等级信息,以实现对所述计算机***中的每个CPU核的安全等级的配置。
19.如权利要求17或18所述的方法,其特征在于,所述接收所述第一子***和所述第二子***的安全等级的配置信息,以实现对所述第一子***和所述第二子***的安全等级的配置,包括:
接收内存安全等级划分信息,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
20.如权利要求17-19中任一项所述的方法,其特征在于,所述接收所述第一子***和所述第二子***的安全等级的配置信息,以实现对所述第一子***和所述第二子***的安全等级的配置,包括:
接收所述计算机***中的IO设备的安全等级信息,并对所述计算机***中的IO设备接收到的访问请求进行检测,以确定发起所述访问请求的访问设备的安全等级与所述计算机***中的IO设备的安全等级是否匹配。
21.如权利要求17-20中任一项所述的方法,其特征在于,所述方法还包括:
接收中断发起者发起的中断请求,所述中断请求携带发起所述中断发起者的安全等级信息;
根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
22.如权利要求21所述的方法,其特征在于,所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
23.如权利要求17-22中任一项所述的方法,其特征在于,所述方法还包括:
接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
在所述内存访问发起者要访问的内存安全等级与所述内存访问发起者的安全等级匹配的情况下,允许所述内存访问发起者访问所述内存访问发起者要访问的内存地址,所述内存安全等级划分信息用于指示不同段的内存所属的安全等级。
24.如权利要求23所述的方法,其特征在于,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
25.一种通信方法,其特征在于,所述方法应用于计算机***,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在同一芯片上,所述方法包括:
IO设备接收来自访问设备的访问请求,所述访问请求携带所述访问设备的安全等级信息,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备;
在所述访问设备的安全等级与所述IO设备的安全等级相匹配时,所述IO设备允许所述访问设备对所述IO设备的访问。
26.如权利要求25所述的方法,其特征在于,所述访问设备的安全等级与所述IO设备的安全等级相匹配,包括:
所述访问设备的安全等级大于或者等于所述IO设备的安全等级。
27.一种计算机***,其特征在于,包括:
第一子***,所述第一子***包括内存访问检查器;
第二子***,其中,所述第一子***的安全等级高于所述第二子***的安全等级,所述第一子***的CPU核、所述第二子***的CPU核以及所述内存访问检查器集成在所述计算机***中的同一芯片上;
所述内存访问检查器用于接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
所述内存访问检查器还用于根据预先配置的内存安全等级划分信息,确定所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级是否匹配,并在所述内存地址的安全等级与所述内存访问发起者的安全等级匹配时,允许所述内存访问发起者访问所述内存地址,其中,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
28.如权利要求27所述的计算机***,其特征在于,所述计算机***还包括:
IO设备,用于接收来自访问设备的访问请求,所述访问请求携带所述访问设备的安全等级信息,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备;
所述IO设备还用于在所述访问设备的安全等级与所述IO设备的安全等级相匹配时,允许所述访问设备对所述IO设备的访问。
29.如权利要求28所述的计算机***,其特征在于,所述访问设备的安全等级与所述IO设备的安全等级相匹配,包括:
所述访问设备的安全等级大于或者等于所述IO设备的安全等级。
30.如权利要求27-29中任一项所述的计算机***,其特征在于,所述计算机***还包括:
中断控制器,其中,所述第一子***和所述第二子***共用所述中断控制器,所述中断控制器中的保存的中断路由配置信息是由第一子***的CPU核配置的,所述中断路由配置信息用于指示响应每个中断的CPU核
所述中断控制器用于:
接收来自中断发起者的中断请求,所述中断请求携带所述中断发起者的安全等级信息;
根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
31.如权利要求30所述的计算机***,其特征在于,所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
32.如权利要求27-31中任一项所述的计算机***,其特征在于,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
33.如权利要求27-32中任一项所述的计算机***,其特征在于,所述第一子***包括分区管理器,所述分区管理器用于:
根据所述计算机***的安全等级配置文件为所述第一子***和所述第二子***中的设备进行安全等级的配置,所述计算机***的安全等级配置文件用于指示所述第一子***和第二子***中的设备以及所使用的内存的安全等级。
34.如权利要求33所述的计算机***,其特征在于,所述分区管理器用于:
在所述计算机***的CPU核对应的安全等级配置模块写入所述计算机***的CPU核的安全等级信息,所述计算机***的CPU核的安全等级信息用于指示所述计算机***的CPU核的安全等级。
35.如权利要求33或34所述的计算机***,其特征在于,所述分区管理器用于在所述内存访问检查器中写入所述内存安全等级划分信息。
36.如权利要求33-35中任一项所述的计算机***,其特征在于,所述分区管理器用于:
在IO设备对应的安全等级配置和检测模块写入所述IO设备的安全等级信息,所述IO设备对应的安全等级配置和检测模块用于对所述IO设备接收到的访问请求进行检测,以确定发起所述访问请求的设备的安全等级与所述IO设备的安全等级是否匹配,其中,所述IO设备为所述第一子***或者第二子***中的任意一个IO设备。
37.如权利要求33-36中任一项所述的计算机***,其特征在于,所述计算机***还包括:
初始启动模块,用于启动所述第一子***的第一个CPU核,以使得所述分区管理器在所述第一子***的第一个CPU核上运行;
所述分区管理器用于启动所述第一子***的其他CPU核;
在完成所述第一子***的CPU核启动之后,所述分区管理器还用于依次启动所述第二子***的CPU核。
38.如权利要求27-37中任一项所述的计算机***,其特征在于,所述第二子***的内存包括共享内存,所述共享内存用于第一子***和第二子***之间传输数据,所述第一子***的CPU核用于将第一子***产生的第一通信数据存入到所述共享内存中,并发起第一中断,以便所述第二子***的CPU核接收到所述第一中断之后,从所述共享内存中读取第一通信数据;或者
所述第二子***的CPU核用于将所述第二子***产生的第二通信数据存入到所述共享内存中,并发起第二中断,以便所述第一子***的CPU核接收到所述第二中断之后,从所述共享内存中读取第二通信数据。
39.一种处理装置,其特征在于,所述处理装置应用于计算机***中,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在同一芯片上,所述处理装置位于所述第一子***中,所述处理装置包括存储器和处理器,所述存储器用于存储程序,当所述存储器存储的程序被所述处理器执行时,所述处理器用于:
获取所述计算机***的安全等级配置文件,所述计算机***的安全等级配置文件用于指示所述第一子***和第二子***中的设备以及所使用的内存的安全等级;
根据所述计算机***的安全等级配置文件对所述第一子***和所述第二子***的安全等级进行配置,以使得所述第一子***使用的内存的安全等级高于所述第二子***的内存的安全等级。
40.一种处理装置,其特征在于,所述处理装置应用于计算机***中,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在所述处理装置上,所述处理装置位于所述第一子***中,所述处理装置包括:
安全等级配置模块,用于接收所述第一子***和所述第二子***的安全等级配置信息;
所述安全等级配置模块,还用于根据接收到的安全等级配置文件,对所述第一子***和所述第二子***的安全等级的配置,所述第一子***使用的内存的安全等级高于所述第二子***的内存的安全等级。
41.如权利要求40所述的处理装置,其特征在于,所述安全等级配置模块用于:
接收所述计算机***中的每个CPU核的安全等级信息,以实现对所述计算机***中的每个CPU核的安全等级的配置。
42.如权利要求40或41所述的处理装置,其特征在于,所述处理装置还包括:
内存访问检查器,用于接收内存安全等级划分信息,所述内存安全等级划分信息用于指示所述计算机***中不同地址段的内存的安全等级。
43.如权利要求40-42中任一项所述的处理装置,其特征在于,所述处理装置还包括:
安全等级配置和检测模块,用于接收所述计算机***中的IO设备的安全等级信息;
所述安全等级配置和检测模块还用于对所述计算机***中的IO设备接收到的访问请求进行检测,以确定发起所述访问请求的访问设备的安全等级与所述计算机***中的IO设备的安全等级是否匹配。
44.如权利要求40-43中任一项所述的处理装置,其特征在于,所述处理装置还包括:
中断控制器,用于根据配置的安全等级信息和所述中断请求,确定所述中断发起者的安全等级与所述中断发起者对应的中断接收者的安全等级是否匹配,并在所述中断发起者的安全等级与所述中断接收者的安全等级匹配的情况下,允许所述中断接收者接受所述中断请求。
45.如权利要求44所述的处理装置,其特征在于,所述中断发起者的安全等级与所述中断接收者的安全等级匹配包括:
所述中断发起者与所述中断接收者均属于所述第一子***;
所述中断发起者与所述中断接收者均属于所述第二子***;或者,
所述中断发起者属于第一子***,所述中断接收者属于第二子***。
46.如权利要求40-45中任一项所述的处理装置,其特征在于,所述安全等级配置模块用于:
接收来自内存访问发起者的内存访问请求,所述内存访问请求携带所述内存访问发起者要访问的内存地址以及所述内存访问发起者的安全等级信息;
在所述内存访问发起者要访问的内存安全等级与所述内存访问发起者的安全等级匹配的情况下,允许所述内存访问发起者访问所述内存访问发起者要访问的内存地址,所述内存安全等级划分信息用于指示不同段的内存所属的安全等级。
47.如权利要求46所述的处理装置,其特征在于,所述内存访问发起者要访问的内存的安全等级与所述内存访问发起者的安全等级匹配,包括:
所述内存访问发起者的安全等级高于或者等于所述内存访问发起者要访问的内存的安全等级。
48.一种处理装置,其特征在于,所述处理装置应用于计算机***中,所述计算机***包括第一子***和第二子***,所述第一子***的操作***与所述第二子***的操作***不同,所述第一子***的CPU核和所述第二子***的CPU核集成在同一芯片上,所述处理装置位于所述第一子***中,所述处理装置包括:
接收器,用于接收来自访问设备的访问请求,所述访问请求携带所述访问设备的安全等级信息;
处理器,用于在所述访问设备的安全等级与所述处理装置的安全等级相匹配时,允许所述访问设备对所述处理装置的访问。
49.如权利要求48所述的处理装置,其特征在于,所述访问设备的安全等级与所述处理装置的安全等级相匹配,包括:
所述访问设备的安全等级大于或者等于所述处理装置的安全等级。
50.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如权利要求13-16中任一项所述的方法。
51.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求13-16中任一项所述的方法。
CN201910883765.7A 2019-09-18 2019-09-18 通信方法、装置、计算机可读存储介质和芯片 Pending CN112528345A (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201910883765.7A CN112528345A (zh) 2019-09-18 2019-09-18 通信方法、装置、计算机可读存储介质和芯片
EP20859621.3A EP3835988A4 (en) 2019-09-18 2020-07-29 COMMUNICATION PROCESS AND DEVICE, COMPUTER-READABLE STORAGE MEDIUM AND CHIP
CA3111427A CA3111427A1 (en) 2019-09-18 2020-07-29 Communication method, apparatus, computer-readable storage medium, and chip
AU2020343994A AU2020343994A1 (en) 2019-09-18 2020-07-29 Communication method, apparatus, computer-readable storage medium, and chip
PCT/CN2020/105344 WO2021052017A1 (zh) 2019-09-18 2020-07-29 通信方法、装置、计算机可读存储介质和芯片
US17/369,520 US11941259B2 (en) 2019-09-18 2021-07-07 Communication method, apparatus, computer-readable storage medium, and chip

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910883765.7A CN112528345A (zh) 2019-09-18 2019-09-18 通信方法、装置、计算机可读存储介质和芯片

Publications (1)

Publication Number Publication Date
CN112528345A true CN112528345A (zh) 2021-03-19

Family

ID=74883989

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910883765.7A Pending CN112528345A (zh) 2019-09-18 2019-09-18 通信方法、装置、计算机可读存储介质和芯片

Country Status (6)

Country Link
US (1) US11941259B2 (zh)
EP (1) EP3835988A4 (zh)
CN (1) CN112528345A (zh)
AU (1) AU2020343994A1 (zh)
CA (1) CA3111427A1 (zh)
WO (1) WO2021052017A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190854A (zh) * 2021-04-19 2021-07-30 亚信科技(成都)有限公司 一种资源隔离方法及电子设备
WO2022267656A1 (zh) * 2021-06-23 2022-12-29 华为技术有限公司 组件访问方法和装置、计算机可读存储介质以及芯片

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116635858A (zh) * 2020-12-29 2023-08-22 华为技术有限公司 一种安全隔离装置和方法
CN114143046B (zh) * 2021-08-30 2024-02-23 统信软件技术有限公司 一种用户隔离方法、数据传输方法、计算设备及存储介质
US12013931B2 (en) * 2021-12-14 2024-06-18 Texas Instruments Incorporated Method and system for freedom from interference (FFI)
CN115328825A (zh) * 2022-08-09 2022-11-11 地平线(上海)人工智能技术有限公司 用于内存访问的集成电路、处理方法、电子设备和介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1578946A (zh) * 2001-10-31 2005-02-09 先进微装置公司 用基于物理地址的安全配置确定对象安全的方法及装置
US20070011419A1 (en) * 2005-07-07 2007-01-11 Conti Gregory R Method and system for a multi-sharing security firewall
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种***级芯片及其内存访问管理方法
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式***内存安全访问控制的技术实现方法
CN106445702A (zh) * 2016-09-21 2017-02-22 乐视控股(北京)有限公司 多***通信方法及终端
CN109669884A (zh) * 2017-10-16 2019-04-23 华为技术有限公司 一种处理器***和终端芯片

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101925806B1 (ko) * 2011-12-02 2018-12-07 삼성전자 주식회사 보안 방법 및 장치
US8959576B2 (en) 2013-03-14 2015-02-17 Intel Corporation Method, apparatus, system for qualifying CPU transactions with security attributes
DE102014201682A1 (de) * 2014-01-30 2015-07-30 Robert Bosch Gmbh Verfahren zur Koexistenz von Software mit verschiedenen Sicherheitsstufen in einem Multicore-Prozessorsystem
CN103810422B (zh) 2014-02-20 2017-05-17 东莞中国科学院云计算产业技术创新与育成中心 一种基于镜像智能管理的安全虚拟化隔离方法
CN104573565B (zh) * 2015-01-23 2017-11-17 宇龙计算机通信科技(深圳)有限公司 一种TrustZone上的内存管理方法及装置
CN107358129A (zh) * 2016-05-09 2017-11-17 恩智浦美国有限公司 安全的数据存储设备和方法
US10482289B2 (en) * 2017-08-24 2019-11-19 Qualcomm Incorporated Computing device to provide access control to a hardware resource
US11036887B2 (en) * 2018-12-11 2021-06-15 Micron Technology, Inc. Memory data security
CN110210214A (zh) * 2019-06-03 2019-09-06 成都海光集成电路设计有限公司 处理器核心隔离方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1578946A (zh) * 2001-10-31 2005-02-09 先进微装置公司 用基于物理地址的安全配置确定对象安全的方法及装置
US20070011419A1 (en) * 2005-07-07 2007-01-11 Conti Gregory R Method and system for a multi-sharing security firewall
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种***级芯片及其内存访问管理方法
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式***内存安全访问控制的技术实现方法
CN106445702A (zh) * 2016-09-21 2017-02-22 乐视控股(北京)有限公司 多***通信方法及终端
CN109669884A (zh) * 2017-10-16 2019-04-23 华为技术有限公司 一种处理器***和终端芯片

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190854A (zh) * 2021-04-19 2021-07-30 亚信科技(成都)有限公司 一种资源隔离方法及电子设备
WO2022267656A1 (zh) * 2021-06-23 2022-12-29 华为技术有限公司 组件访问方法和装置、计算机可读存储介质以及芯片

Also Published As

Publication number Publication date
CA3111427A1 (en) 2021-03-18
US11941259B2 (en) 2024-03-26
US20210334018A1 (en) 2021-10-28
EP3835988A1 (en) 2021-06-16
EP3835988A4 (en) 2021-11-10
AU2020343994A1 (en) 2021-04-01
WO2021052017A1 (zh) 2021-03-25

Similar Documents

Publication Publication Date Title
CN112528345A (zh) 通信方法、装置、计算机可读存储介质和芯片
US7234037B2 (en) Memory mapped Input/Output operations
US9703727B2 (en) Method of secure management of a memory space for microcontroller
US7552436B2 (en) Memory mapped input/output virtualization
US10592270B2 (en) Safety hypervisor function
US7890669B2 (en) Computer system for sharing I/O device
US8527666B2 (en) Accessing a configuration space of a virtual function
US10257166B2 (en) Guest netfilter protection by virtual machine function
US8495274B2 (en) Address translation table to enable access to virtual functions
EP3436947B1 (en) Secure driver platform
US10402576B2 (en) Safe physical function passthrough using virtual machine functions
US20110161644A1 (en) Information processor
KR20220141674A (ko) PCIe 디바이스 및 그 동작 방법
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
EP4241164A1 (en) Data processing systems
US9146863B2 (en) Address translation table to enable access to virtualized functions
CN111213144B (zh) 单芯片***,用于运行单芯片***的方法及机动车
US9558364B2 (en) Computing machine, access management method, and access management program
US20240004767A1 (en) Data processing systems
WO2023020069A1 (zh) 虚拟机管理方法及相关***、存储介质
CN111522692A (zh) 一种基于虚拟机的多操作***输入及输出设备冗余保障***

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