WO2022021446A1 - 一种内存保护方法及保护代理控制装置 - Google Patents

一种内存保护方法及保护代理控制装置 Download PDF

Info

Publication number
WO2022021446A1
WO2022021446A1 PCT/CN2020/106451 CN2020106451W WO2022021446A1 WO 2022021446 A1 WO2022021446 A1 WO 2022021446A1 CN 2020106451 W CN2020106451 W CN 2020106451W WO 2022021446 A1 WO2022021446 A1 WO 2022021446A1
Authority
WO
WIPO (PCT)
Prior art keywords
protection
physical page
page table
data stream
physical
Prior art date
Application number
PCT/CN2020/106451
Other languages
English (en)
French (fr)
Inventor
刘君龙
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2020/106451 priority Critical patent/WO2022021446A1/zh
Priority to EP20946738.0A priority patent/EP4180976A4/en
Priority to CN202080104550.1A priority patent/CN116249972A/zh
Publication of WO2022021446A1 publication Critical patent/WO2022021446A1/zh
Priority to US18/162,114 priority patent/US20230176984A1/en

Links

Images

Classifications

    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present application provides a memory protection method and a protection agent control device, which are used to check the memory access authority when an accelerator or an IO device directly uses a physical address to access the system memory, thereby effectively ensuring the security of the system memory.
  • a corresponding protection table cache is set for the physical page table protection table corresponding to a data stream, which is used to cache the authority information of the physical page table in the physical page table protection table.
  • the protection agent control device needs to obtain the data stream
  • the permission information of a certain physical page table it can be searched in the corresponding protection table cache first, and when it cannot be found, it can be searched in the physical page table protection table, so that the search efficiency of the permission information can be effectively improved.
  • the protection flow table includes a protection flow table entry corresponding to the at least one data flow, and the protection flow table entry corresponding to each data flow stores the control configuration information of the data flow; the physical page table corresponding to each data flow
  • the protection table stores permission information corresponding to at least one physical page table, and the permission information corresponding to each physical page table is used to indicate whether the data stream has read permission and/or write permission in the physical page table.
  • the structure of the apparatus includes a processing module and a transceiver module, and the processing module is configured to support the apparatus to perform the corresponding functions in the first aspect or any design of the first aspect.
  • the transceiver module is used to support the communication between the device and other communication devices (such as accelerators or IO devices).
  • the apparatus may also include a storage module coupled with the processing module, which stores necessary program instructions and data for the apparatus.
  • the processing module may be a processor
  • the communication module may be a transceiver
  • the storage module may be a memory.
  • the memory may be integrated with the processor, or may be provided separately from the processor, which is not limited in this application.
  • FIG. 2 is a schematic structural diagram of a protection proxy control device according to an embodiment of the present application.
  • the technical solutions provided in this application can be applied to a system on chip (SoC) system integrated with a third-party accelerator.
  • SoC system on chip
  • the SoC system includes a system memory, a CPU, an accelerator (accel) from an untrusted third party, and the PAC device, wherein the PAC device is integrated between the system memory and the third-party accelerator, Has the effect of protecting system memory.
  • the SoC system also includes modules such as a memory management unit (MMU), a translation lookaside buffer (TLB), and an address translation service (ATS), which are respectively matched with the CPU and third-party accelerators.
  • MMU memory management unit
  • TLB translation lookaside buffer
  • ATS address translation service
  • the control configuration information may include one or more of first control information, second control information, third control information, fourth control information, and fifth control information.
  • first control information is used to indicate whether the global authority information of the physical page table protection table corresponding to the data stream is unreadable or writable
  • second control information is used to indicate the boundary range of the physical page table protection table corresponding to the data stream
  • third control information is used to indicate the protection granularity of the protection flow table corresponding to the data stream
  • the fourth control information is used to indicate whether to enable the function of checking memory access permissions for the data stream
  • the fifth control information is used to indicate whether to control
  • the accelerator or IO device to which the data stream belongs can only initiate virtual address access.
  • the control configuration information corresponding to the data stream may be stored in the protection flow table entry corresponding to the data stream; or , the description information of the sub-protection flow table of the data flow may be stored in the protection flow table entry corresponding to the data flow, and the description information of the sub-protection flow table points to the sub-protection flow table of the data flow, but the sub-protection flow table of the data flow
  • the protection flow table includes only one sub-protection flow table entry, in which control configuration information applicable to the sub-data flows of all processes of the data flow is stored.
  • the permission check is passed.
  • allowing the memory access request to access the first physical address by the PAC device refers to allowing the data stream of the accelerator or the IO device to read the information stored in the first physical address, and also allowing the accelerator or the IO device to read the information stored in the first physical address.
  • the data stream writes new information in the first physical address, ie allows read and write operations to be performed at the first physical address.
  • the translation proxy unit may also send the address translation result synchronously to the PAC device, where the address translation result includes the first physical address, and simultaneously sends the identifier of the data stream of the accelerator or the IO device, the accelerator or the IO address Access information such as permission information of the first physical page table where the first physical address is located.
  • the PAC apparatus may receive page table invalidation information from the page table management module, where the page table invalidation information includes the identifier of the data flow of the accelerator or the IO device, the data in the accelerator or the IO device The identifier of the sub-data stream of a certain process, and the indication information of the global invalidation of the physical page table related to the sub-data stream.
  • the accelerator/IO device initiates memory access after obtaining the physical address. At this time, all memory access requests will be checked by the PAC device in this application for access rights. If it is found at this time that the check switch bit in the flow table entry of the protection table corresponding to the flow accessed this time is not turned on (that is, the EN field indicates that the access is completely new without checking), then the access is directly routed forward.

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)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种内存保护方法及保护代理控制装置。当加速器或IO设备请求直接物理地址访问系统内存时,该保护代理控制装置可以根据加速器或IO设备的数据流的标识,获取该数据流请求访问的物理地址所在的物理页表的权限信息,并根据该权限信息对内存访问请求进行权限检查,在权限检查通过时才允许加速器或IO设备进行直接物理地址访问,从而保证系统内存的安全性。

Description

一种内存保护方法及保护代理控制装置 技术领域
本申请涉及计算机处理技术领域,尤其涉及一种内存保护方法及保护代理控制装置。
背景技术
近年来,硬件加速器(accelerator)的使用越来越广泛。通过利用一些接口技术,加速器可以和中央处理单元(central processor unit,CPU)从逻辑上更紧密地结合在一起。例如,在异构系统架构(heterogeneous system architecture,HSA)中,通过利用共享虚拟内存(shared virtual memory,SVM)技术,加速器和CPU之间可以共享虚拟地址空间和缓存(cache),从而带来软件编程的一致性。
但是,这些接口技术在带来性能提升和功耗降低的同时,也会带来严重的安全和隔离的风险。特别是当加速器或者输入输出(input-output,IO)设备是由第三方生产商设计生产时,如果允许加速器或IO设备直接物理地址访问系统内存,可能会给系统内存带来诸多风险。例如,如果访问其没有读权限的物理地址空间,则会威胁系统内存的保密性;如果访问其没有写权限的物理地址空间,则会威胁系统内存的正确性。
为此,现有技术中存在一种ARM架构下的信任空间(TrustZone)机制,该机制将软件和硬件的系统资源划分为安全世界(secure world)和一般世界(normal world)两部分,从而阻止不安全的加速器/IO设备访问到属于操作系统(operation system,OS)的系统内存。在该机制下,一般世界的进程只能访问一般世界的系统资源,安全世界的进程可以访问一般世界的系统资源以及安全世界的系统资源。由于仅仅将系统资源划分为安全世界和一般世界两部分,该机制对于系统内存的保护颗粒度很粗,而且该机制也不能为同属于一般世界的进程之间提供有效保护。
发明内容
本申请提供一种内存保护方法及保护代理控制装置,用于在加速器或IO设备直接使用物理地址访问系统内存时检查内存访问权限,从而有效保证系统内存的安全。
第一方面,本申请提供一种内存保护方法,该方法可以由保护代理控制装置执行,该方法包括:接收来自加速器或输入输出IO设备的内存访问请求,该内存访问请求中包括所述加速器或IO设备的数据流的标识以及请求访问的第一物理地址;根据所述加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权限信息,该第一物理页表对应的权限信息用于指示所述数据流在第一物理页表是否具有读权限和/或写权限;根据第一物理页表对应的权限信息对内存访问请求进行权限检查,若权限检查通过,则允许所述内存访问请求访问第一物理地址。
采用上述技术方案,当加速器或IO设备请求直接物理地址访问系统内存时,保护代理控制装置可以根据所述加速器或IO设备的数据流的标识,获取该数据流访问第一物理地址所在的第一物理页表的权限信息,并根据该权限信息对内存访问请求进行权限检查,在权限检查通过时才允许加速器或IO设备的直接物理地址访问,从而保证系统内存的安全性。
在第一方面的一种可能的设计中,所述根据所述加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权限信息,可以包括:根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表和保护表缓存,该物理页表保护表中存储有至少一个物理页表对应的权限信息,该保护表缓存为物理页表保护表的缓存;根据第一物理页表的标识,判断保护表缓存中是否存在第一物理页表对应的权限信息,若存在,则从保护表缓存中读取第一物理页表对应的权限信息;若不存在,则从物理页表保护表中读取第一物理页表对应的权限信息,并将该第一物理页表对应的权限信息加载到保护表缓存中。
采用上述技术方案,通过为一个数据流对应的物理页表保护表设置相应的保护表缓存,用来缓存物理页表保护表中物理页表的权限信息,当保护代理控制装置需要获取该数据流在某一物理页表的权限信息时,可以先在对应的保护表缓存中查找,当查找不到时,再到物理页表保护表中查找,如此,可有效提高权限信息的查找效率。
在第一方面的一种可能的设计中,所述保护表缓存的一个条目中存储有一个或多个物理页表对应的权限信息,且每个物理页表对应的权限信息在保护表缓存中所处的条目根据物理页表的标识的哈希值进行索引。如此,可在保证查找效率的前提下,充分利用保护表缓存的存储空间,提高资源利用率。
在第一方面的一种可能的设计中,所述根据所述加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权限信息,可以包括:根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表,该物理页表保护表中存储有至少一个物理页表对应的权限信息;根据第一物理页表的标识,从所述物理页表保护表中读取第一物理页表对应的权限信息。
在第一方面的一种可能的设计中,所述根据所述加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权限信息之前,该方法还包括:读取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目,该保护流表条目中包括第一控制信息和第二控制信息,其中,第一控制信息用于指示所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,第二控制信息用于指示所述物理页表保护表的边界范围;若根据第一控制信息和第二控制信息,确定所述物理页表保护表的全局权限信息不是不可读不可写,且第一物理地址位于所述物理页表保护表的边界范围内,则读取第一物理地址所在的第一物理页表对应的权限信息。
采用上述技术方案,通过在保护流表中建立所述数据流对应的保护流表条目,可以针对该数据流设置多种控制配置信息,从而实现访问控制功能。
在第一方面的一种可能的设计中,所述保护流表条目中还包括第三控制信息,该第三控制信息用于指示所述物理页表保护表的保护颗粒度;所述读取第一物理地址所在的第一物理页表对应的权限信息之前,该方法还包括:根据所述物理页表保护表的边界范围和保护颗粒度,确定第一物理地址所在的第一物理页表。
在第一方面的一种可能的设计中,所述保护流表条目中还包括第四控制信息,该第四控制信息用于指示是否针对所述数据流开启检查内存访问权限的功能;所述获取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目之后,该方法还包括:根据第四控制信息,确定针对所述数据流检查内存访问权限的功能已开启。
在第一方面的一种可能的设计中,该方法还包括:从翻译代理单元接收所述加速器或 IO设备的数据流的标识、第一物理地址以及所述加速器或IO设备访问第一物理地址的权限信息;若所述数据流对应的保护表缓存中存在第一物理地址所在的第一物理页表对应的权限信息,且保护表缓存中的第一物理页表对应的权限信息与从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息不一致,则根据从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息,对所述数据流对应的物理页表保护表和保护表缓存中的第一物理页表对应的权限信息进行更新。
在第一方面的一种可能的设计中,该方法还包括:若所述数据流对应的保护表缓存中不存在第一物理地址所在的第一物理页表对应的权限信息,则将从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息作为第一物理地址所在的第一物理页表对应的权限信息,分别写入所述数据流对应的物理页表保护表和/或保护表缓存中。
采用上述技术方案,在加速器或IO设备使用从翻译代理单元得到的物理地址发起直接物理地址访问之前,保护代理控制装置可以根据从翻译代理单元得到的物理地址和相应的权限信息,对保护表缓存和物理页表保护表中对应的物理页表的权限信息进行刷新,从而确保后续能够使用准确的权限信息对加速器或IO设备的内存访问请求进行权限检查,以保证系统内存的安全。
在第一方面的一种可能的设计中,该方法还包括:从页表管理模块接收页表无效信息,该页表无效信息包括所述加速器或IO设备的数据流的标识以及被无效的一个或多个物理页表的标识;将所述数据流对应的保护表缓存和物理页表保护表中所述被无效的一个或多个物理页表对应的权限信息更新为不可读不可写。
在第一方面的一种可能的设计中,该方法还包括:从页表管理模块接收页表无效信息,该页表无效信息包括所述加速器或IO设备的数据流的标识以及对所述数据流有关的物理页表进行全局无效化的指示信息;将保护流表中所述数据流的标识对应的保护流表条目中存储的所述数据流对应的物理页表保护表的全局权限信息设置为不可读不可写。
采用上述技术方案,保护代理控制装置可以在加速器或IO设备的数据流相关的物理页表被无效化时,做出相应的处理,使得被无效的物理页表的权限信息可以及时被更新为不可读不可写,从而避免后续对这部分无效的物理页表的访问,保证系统内存的安全。
第二方面,本申请提供一种保护代理控制装置,所述保护代理控制装置中设置有保护流表和至少一个数据流对应的物理页表保护表,该保护代理控制装置通过所述保护流表和至少一个数据流对应的物理页表保护表,来实现对第三方的加速器或IO访问系统内存的访问控制。
其中,保护流表中包括所述至少一个数据流对应的保护流表条目,每个数据流对应的保护流表条目中存储有该数据流的控制配置信息;每个数据流对应的物理页表保护表中存储有至少一个物理页表对应的权限信息,每个物理页表对应的权限信息用于指示该数据流在该物理页表是否具有读权限和/或写权限。
在第二方面的一种可能的设计中,所述保护代理控制装置还包括每个物理页表保护表的保护表缓存,该保护表缓存用于缓存该物理页表保护表中的物理页表对应的权限信息。
在第二方面的一种可能的设计中,所述控制配置信息中包括下列信息中的一项或多项:第一控制信息、第二控制信息、第三控制信息、第四控制信息和第五控制信息,其中,第一控制信息用于指示所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,第二控制信息用于指示所述数据流对应的物理页表保护表的边界范围,第三控制信 息用于指示所述数据流对应的物理页表保护表的保护颗粒度,第四控制信息用于指示是否针对所述数据流开启检查内存访问权限的功能,第五控制信息用于指示是否控制所述数据流所属的加速器或IO设备只能发起虚拟地址访问。
第三方面,本申请实施例提供一种保护代理控制装置,该装置具有实现上述第一方面或第一方面的任一种可能的设计中的功能。该装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。
在一种可能的设计中,所述装置的结构中包括处理模块和收发模块,所述处理模块被配置为支持该装置执行上述第一方面或第一方面的任一种设计中相应的功能。所述收发模块用于支持该装置与其他通信设备(如加速器或IO设备)之间的通信。所述装置还可以包括存储模块,所述存储模块与处理模块耦合,其保存有装置必要的程序指令和数据。作为一种示例,处理模块可以为处理器,通信模块可以为收发器,存储模块可以为存储器,存储器可以和处理器集成在一起,也可以和处理器分离设置,本申请并不限定。
在另一种可能的设计中,该装置的结构中包括处理器,还可以包括存储器。处理器与存储器耦合,可用于执行存储器中存储的计算机程序指令,以使装置执行上述第一方面、或第一方面的任一种可能的设计中的方法。可选地,该装置还包括通信接口,处理器与通信接口耦合。该通信接口可以是收发器或输入/输出接口,或者当该装置的具体实现形式为芯片时,该通信接口可以是芯片的输入/输出接口。可选地,收发器可以为收发电路,输入/输出接口可以是输入/输出电路。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述第一方面或第一方面的任一种可能的设计中的方法。
可选地,该芯片系统还包括接口电路,该接口电路用于交互代码指令至所述处理器。
可选地,该芯片系统中的处理器可以为一个或多个,该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
第五方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序或指令,当该计算机程序或指令被执行时,使得计算机执行上述第一方面或第一方面的任一种可能的设计中的方法。
第六方面,本申请实施例提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述第一方面或第一方面的任一种可能的设计中的方法。
第七方面,本申请实施例提供一种计算机系统,该计算机系统包括本申请中所述的保护代理控制装置,以及与该保护代理控制装置耦合的CPU、至少一个第三方的加速器或IO设备。
附图说明
图1a至图1d为本申请实施例适用的系统架构的示意图;
图2为本申请实施例提供的一种保护代理控制装置的结构示意图;
图3a为本申请实施例提供的一种保护流表的示意图;
图3b为本申请实施例提供的一种二级保护流表的示意图;
图3c为本申请实施例提供的一种进程级的保护流表的示意图;
图4为本申请实施例提供的一种物理页表保护流的示意图;
图5为本申请实施例提供的一种保护表缓存的示意图;
图6为本申请实施例中提供的一种内存保护方法的示意图;
图7为本申请实施例中系统软件直接控制PAC装置的示意图;
图8a至图8d为本申请实施例中的内存保护方法涉及的总体流程的示意图;
图9为本申请实施例提供的一种保护代理控制装置的另一结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
需要说明的是,本申请中方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个。例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C,A和B,A和C,B和C,或A和B和C。同理,对于“至少一种”等描述的理解,也是类似的。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度,并且“第一”、“第二”的描述也并不限定对象一定不同。
本申请实施例所提供的内存保护方法可以由保护代理控制(protection agent control,PAC)装置执行,用于实现对来自第三方的加速器或者IO设备的直接物理地址访问系统内存的访问请求进行访问权限的检查。
具体的,该PAC装置可以作为一个标准的地址访问保护模块,集成到现有的输入输出内存管理单元(input-output memory management unit,IOMMU)/系统内存管理单元(system memory management unit,SMMU)系统中,或者也可以仅作为一个代理模块,集成到加速器与系统内存之间或IO设备与系统内存之间。通过设置该PAC装置,可以使得所有来自加速器/IO设备直接物理地址访问系统内存的访问请求都经过该PAC模块检查其是否具有相应的访问权限,从而保证系统内存的安全。
举例来说,本申请提供的技术方案可以应用于集成了第三方加速器的系统芯片(system on chip,SoC)系统中。如图1a所示,该SoC系统中包括系统内存、CPU、来自不被信任 的第三方的加速器(accel),以及所述PAC装置,其中,PAC装置集成在系统内存与第三方加速器之间,具有保护系统内存的效果。该SoC系统中还包括分别与CPU、第三方加速器配套的内存管理单元(memory management unit,MMU)、翻译查找缓存(translation lookaside buffer,TLB)、地址翻译服务(address translation service,ATS)等模块。
本申请提供的技术方案也可以应用于通过PCI Express总线扩展的计算网络系统中。如图1b所示,CPU通过PCI Express总线和外部的IO设备对接,组成一个计算网络系统。其中,主机中集成了所述PAC装置,PCI Express总线的IO设备实现了PCI Express协议的ATS功能,并且IO设备在本地实现有地址翻译快取(address translation cache,ATC)功能。IO设备可以通过ATS机制从主机中提前获取需要直接内存访问的物理地址,然后缓存到本地的ATC模块。这样,IO设备在需要直接内存访问的时候,可以直接发起物理地址访问主机内存,不再需要IOMMU/SMMU查页表,只需要通过PAC的权限检查即可安全访问系统内存。
本申请提供的技术方案还可以应用于非PCI Express总线扩展的计算网络系统中。如图1c所示,CPU通过非PCI Express总线对接外部的IO设备,组成一个计算网络系统。主机集成了本申请的所述PAC装置,总线支持类似PCI Express总线的ATS机制,可以实现IO设备提前获取需要直接内存访问时的系统内存空间的物理地址,然后缓存到本地的ATC模块。这样,IO设备在需要直接内存访问的时候,可以直接发起物理地址访问主机内存,此时不再需要IOMMU/SMMU查页表,只需要通过PAC的权限检查即可安全访问系统内存。
本申请提供的技术方案还可以应用于混合的高性能计算系统架构中。如图1d所示,在该计算系统中,CPU通过PCI Express总线连接外部的多个IO设备,此外CPU还通过非PCI Express总线连接了外部的加速器,这些IO设备/加速器都支持ATS或者类似ATS的机制,可以提前获取需要直接内存访问的系统内存空间的物理地址。在这些IO设备/外部加速器与系统内存之间都实现了本申请的所述PAC装置。另外,CPU内部集成了第三方的加速器(例如第三方加速器IP),其和系统内存之间也实现了本申请的PAC装置。通过在IO设备/加速器UI系统内存之间设置本申请的PAC装置,可以实现IO设备/加速器访问系统内存的安全保护。
请参考图2,为本申请实施例提供的一种保护代理控制(PAC)装置的结构示意图。该PAC装置中包括保护流表(protection stream table,PST)和至少一个数据流对应的物理页表保护表(physical page protection table,PPPT)。可选的,为提高查表性能,该PAC装置中还可以包括每个物理页表保护表的保护表缓存(protection table cache,PTC)。
下面分别对PAC装置中实现的保护流表、物理页表保护表、保护表缓存进行详细说明。
一、保护流表
保护流表中包括至少一个数据流对应的保护流表条目(protection stream table entry,PSTE),每个数据流对应的保护流表条目中存储有该数据流对应的控制配置信息。
对于一个数据流来说,所述控制配置信息可以包括第一控制信息、第二控制信息、第三控制信息、第四控制信息和第五控制信息中的一种或多种。其中,第一控制信息用于指示该数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,第二控制信息用于指示该数据流对应的物理页表保护表的边界范围,第三控制信息用于指示该数据流对应的保护流表的保护颗粒度,第四控制信息用于指示是否针对该数据流开启检查内存访问权限的功能,第五控制信息用于指示是否控制该数据流所属的加速器或IO设备只能发起虚 拟地址访问。
需要说明的是,本申请实施例中,所述保护流表可以对外提供软件编程接口,通过该软件编程接口,系统软件可以针对不同的数据流分别设置控制配置信息。由于不同的数据流对应的控制配置信息是分别设置的,彼此之间相互独立,因此,不同数据流对应的控制配置信息中包含的信息内容可以相同,也可以不相同,本申请并不限定。
本申请实施例中,所述保护流表基于数据流的标识来索引。如此,对于一个数据流来说,可以根据该数据流的标识定位到该数据流对应的保护流表条目,进而可以从对应的保护流表条目中获取该数据流对应的控制配置信息。如前所述,控制配置信息中的第二控制信息用于指示该数据流对应的物理页表保护表的边界范围,所述物理页表保护表的边界范围也可以理解为该物理页表保护表中涉及的所有物理页表的物理地址的区间范围。例如,第二控制信息中可以包括物理页表保护表的基地址和大小等信息。
所述数据流的标识用于区分不同加速器或IO设备的数据流,而且数据流的标识可以与加速器或IO设备的设备标识一一映射。所述数据流的标识也可以称为流身份号(stream ID),所述设备标识也可以称为设备身份号(device ID)。例如,数据流的标识可以是ARM架构下的SMMU中的流标识(Stream ID),设备标识可以是PCI Express总线中的请求者标识(Requester ID),Requester ID与Stream ID一一映射,这样在ARM架构下也可以实现PCI Express总线。
请参考图3a,为本申请实施例提供的一种保护流表的示意图。该保护流表中包括PSTE0,PSTE1,PSTE2,PSTE3,...,等多个保护流表条目。该保护流表通过数据流的标识(stream ID)来索引,即一个数据流与一个保护流表条目相对应,根据不同数据流的标识可以索引到不同的保护流表条目。例如,数据流0可以与图3a中所示的PSTE0相对应,根据数据流0的标识可以索引到该PSTE0;数据流1可以与图3a中所示的PSTE1相对应,根据数据流1的标识可以索引到该PSTE1;数据流2可以与图3a中所示的PSTE2相对应,根据数据流2的标识可以索引到该PSTE2;数据流3可以与图3a中所示的PSTE3相对应,根据数据流3的标识可以索引到该PSTE3。
以保护流表条目PSTE0为例,保护流表条目中可包括下列控制配置信息的字段:
1)EN字段,用于指示是否使能保护代理控制(PAC)机制,即是否检查该数据流直接使用物理地址访问系统内存的权限。该EN即为上文中的第四控制信息,表示是否针对该数据流开启检查内存访问权限的功能。
举例来说,该EN字段可以用一个比特位表示。当该EN字段的取值为1时,可表示使能PAC机制,需要对来自该数据流的所有内存访问请求进行内存访问权限的检查。当该EN字段的取值为0时,可表示不使能PAC机制,不对来自该数据流的内存访问请求进行内存访问权限的检查。
2)Zero字段,用于指示该数据流对应的物理页表保护表是否处于初始化时期,若处于初始化时期,则该数据流对应的物理页表保护表中所有物理页表的权限信息均为不可读不可写。该Zero字段即为上文中的第一控制信息,用于指示该数据流对应的物理页表保护表的全局权限信息是否为不可读不可写。
3)OU字段,用于指示是否控制该数据流所属的加速器或IO设备只能发起虚拟地址访问,不能发起物理地址访问。该OU字段即为上文中的第五控制信息,用于指示是否控制该数据流所属的加速器或IO设备只能发起虚拟地址访问。
举例来说,该OU字段可以用一个比特位表示,当该比特位的取值为1时,可表示只允许该数据流所属的加速器或IO设备发起虚拟地址访问,不允许发起物理地址访问;当该比特位的取值为0时,可表示允许该数据流所属的加速器或IO设备发起物理地址访问。如此,若PAC装置接收到来自某一加速器或IO设备的内存访问请求,请求直接使用物理地址访问系统内存中的某一块地址空间,那么PAC装置可根据该加速器或IO设备的数据流的标识,在保护流表中查询到其对应的保护流表条目,此时,若该保护流表条目中的OU字段的取值为1,则PAC装置可确定需要控制该数据流所属的加速器或IO设备只能发起虚拟地址访问,进而拒绝该内存访问请求。
4)PGS字段,用于指示对该数据流进行内存访问权限检查时的检查粒度。本申请实施例中,PAC装置可以以物理页表为单位进行内存访问权限的检查,因此,所述检查粒度是指每个物理页表的大小,也就是物理页表保护表的保护颗粒度。该PGS字段即为上文中的第三控制信息,用于指示该数据流对应的物理页表保护表的保护颗粒度。
5)(PAC基地址_H字段,PAC基地址_L字段),用于指示该数据流对应的物理页表保护表的基地址。其中,PAC基地址_H字段(即PAC base address_H字段)表示该物理页表保护表的基地址的高N位,PAC基地址_L字段(即PAC base address_L字段)表示该物理页表保护表的基地址的低N位。所述N值例如可以是32,即PAC基地址_H字段和PAC基地址_L字段分别用来指示物理页表保护表的基地址的高32位和低32位。
6)PAT边界(boundary)字段,用于指示该数据流对应的物理页表保护表的大小。
所述(PAC基地址_H字段,PAC基地址_L字段)和PAT边界字段即为上文中的第二控制信息,通过这几个字段可以唯一确定出该数据流对应的物理页表保护表的边界范围,即物理页表保护表中的物理页表涉及到的物理地址的区间范围,从而便于后续根据物理地址或物理页表的标识查询物理页表保护表,确定数据流的内存访问权限。
需要说明的是,上述几个字段是保护流表条目中的控制配置信息的几种示例,保护流表条目中还可以包含其它的控制配置信息,本申请并不限定。进一步地,由于保护流表可以对外提供软件编程接口,通过该软件编程接口,系统软件可以在保护流表条目中扩展更多其它的控制配置信息,从而增强访问控制的安全性和可扩展性。
在一种可能的实施方式中,本申请实施例中的保护流表还可以是二级保护流表,所述二级保护流表也可以理解为二级索引的保护流表。如图3b所示,为本申请实施例提供的一种二级保护流表的示意图。具体的,所述二级保护流表是指保护流表分为两级,上一级保护流表中的每个条目(Desc)中存储有子保护流表的描述信息,不同的子保护流表的描述信息指向下一级不同的保护流表,下一级保护流表的每个条目(PSTE)中存储有对应数据流的控制配置信息。
两级保护流表均可以通过数据流的标识进行索引。在上一级保护流表中,根据数据流的标识,可以在上一级保护流表中索引不同的条目。但应注意,一个数据流的标识可以与上一级保护流表中的一个条目对应,但是上一级保护流表中的一个条目可以与一个或多个数据流的标识对应,或者与一个数据流标识的区间对应。也就是说,在上一级保护流表中,数据流的标识与条目之间可以是一对一或多对一的关系,根据一个数据流的标识可以在上一级数据流表中索引到唯一的条目,但是不同的数据流的标识可能在上一级数据流表中索引到相同的条目。
在下一级保护流表中,根据数据流的标识可以在下一级保护流表中索引不同的条目, 而且数据流的标识与下一级保护流表中的条目一一对应。根据一个数据流的标识可以在下一级保护流表中可以索引到唯一的条目,该条目中存储有该数据流对应的控制配置信息。
本申请实施例中,通过将数据流表设置为二级保护流表的形式,可以在当数据流的数量较多时,提高数据流表的查询效率,从而更可以高效地查找到数据流对应的保护流表条目,获取对应的控制配置信息。
在又一种可能的实施方式中,本申请实施例中的保护流表还可以为进程级的保护流表。具体来说,本申请在上文中所提及的保护流表可以理解为设备级的保护流表,是指不同加速器/IO设备的数据流对应保护流表中的不同保护流表条目,这样可以针对不同加速器/IO设备的数据流分别设置控制配置信息,并且不同加速器/IO设备的数据流可以对应不同的物理页表保护表,从而可以针对不同的加速器/IO设备的数据流分别进行访问控制。
而进程级的保护流表是指进一步区分一个加速器/IO设备的数据流中不同进程的子数据流,相应的,在设备级的保护流表下为数据流创建进程级的子保护流表。该子保护流表中包括至少一个子数据流对应的子保护流表条目,不同进程的子数据流对应子保护流表中不同的子保护流表条目,这样可以针对该数据流中的不同的进程的子数据流分别设置控制配置信息,并且不同进程的子数据流可以对应不同的物理页表保护表,从而可以针对一个数据流中不同进程的子数据流分别进行访问控制,有效提高访问控制的精细度。
图3c为本申请实施例提供的一种进程级的保护流表的示意图,如图3c所示,在设备级的保护流表中,包括至少一个数据流对应的保护流表条目。一个加速器或IO设备的数据流与一个保护流表条目相对应,不同的保护流表条目基于数据流的标识来索引,数据流的标识与加速器或IO设备的设备标识一一映射。
需要说明的是,该保护流表中涉及的所述至少一个数据流中,可以包括需要针对数据流中不同进程的子数据流分别进行访问控制的数据流(即从进程的层级进行访问控制的数据流),也可以包括不需要针对数据流中不同进程的子数据流分别进行访问控制的数据流,(即从数据流的层次进行访问控制的数据流)。鉴于此,在设备级的保护流表中,每个数据流对应的保护流表条目中还可以包括一个用于指示该数据流是否为需要针对其中的不同进程的子数据流分别进行访问控制的指示信息,该指示信息可以用一个比特位表示。
对于一个数据流来说,如果需要对该数据流中不同进程的子数据流分别进行访问控制,则该数据流对应的保护流表条目中可存储有该数据流的子保护流表的描述信息,该子保护流表的描述信息指向该数据流的子保护流表。
进一步的,在该数据流的子保护流表中,包括至少一个子数据流对应的子保护流表条目。一个子数据流与一个子保护流表条目相对应,不同的子保护流表条目基于子数据流的标识来索引,子数据流的标识用于区分一个加速器或IO设备的数据流中不同进程的子数据流,并且该子数据流的标识可以与进程的标识一一映射。对于一个子数据流来说,该子数据流对应的子保护流表条目中存储有该子数据流对应的控制配置信息。所述子数据流对应的控制配置信息中包括的具体信息内容可参考上文中关于数据流对应的控制配置信息的描述,在此不再重复。
对于一个数据流来说,如果不需要对该数据流中不同进程的子数据流分别进行访问控制,则该数据流对应的保护流表条目中可以存储有该数据流对应的控制配置信息;或者,该数据流对应的保护流表条目中可以存储有该数据流的子保护流表的描述信息,该子保护流表的描述信息指向该数据流的子保护流表,但是该数据流的子保护流表中只包括一个子 保护流表条目,其中存储有该数据流的所有进程的子数据流均适用的控制配置信息。
二、物理页表保护表
每个数据流对应的物理页表保护表用于存储至少一个物理页表对应的权限信息。具体的,对于一个数据流来说,其对应的物理页表保护表中包括至少一个物理页表对应的物理页表保护表条目,每个物理页表对应的物理页表保护表条目中存储有该数据流在该物理页表的权限信息,所述权限信息用于指示所述数据流在该物理页表是否具有读权限和/或写权限。例如,所述权限信息可以用2个比特位来表示,其中1个比特位(R)的取值用于指示是否具有读权限,另1个比特位(W)的取值用于指示是否具有写权限。可以理解,所述读权限是指所述数据流在该物理页表是否具有执行读操作的权限,所述写权限是指所述数据流在该物理页表是否具有执行写操作的权限。
所述物理页表保护表可以基于按照保护颗粒度的大小对齐后的物理地址来索引,例如物理页表的标识、物理页表号(physical page number,PPN)等。如此,如果一个加速器或IO设备想要直接使用物理地址访问一块内存空间,则PAC装置可以根据该加速器或IO设备的数据流的标识,在该数据流在保护流表中定位到该数据流对应的保护流表条目,通过该保护流表条目中存储的该数据流的控制配置信息的指示,确定所述加速器或IO设备请求访问的内存空间的物理地址所在的物理页表的物理页表号,然后根据该物理页表的物理页表号定位到该物理页表在物理页表保护表中对应的物理页表保护表条目,进而从该物理页表保护表条目中获取该数据流在该物理页表的权限信息,确定该数据流在该物理页表是否具有读权限,以及是否具有写权限。
请参考图4,为本申请实施例提供的一种物理页表保护流表的示意图。该物理页表保护表是一个基于物理地址空间的扁平化的表(flated table),其中存储有用于指示数据流在各个物理页表的访问权限的信息,即上文中所提到的权限信息。作为一种示例,所述访问权限包括读权限和写权限,相应的,该物理页表保护表中的每个物理页表可以具有2比特的权限信息。其中,2比特权限信息中的1比特权限信息可以称为权限信息R,用于指示数据流在该数据页表是否具有读权限,例如,当该权限信息R的取值为1时可表示具有读权限(即可以读),当该权限信息R的取值为0时可表示不具有读权限(即不可读)。另1比特权限信息可以称为权限信息W,用于指示数据流在该数据页表是否具有写权限,例如,当该权限信息R的取值为1时可表示具有写权限(即可以写),当该权限信息W的取值为0时可表示不具有写权限(即不可写)。
如此,当得到加速器或IO设备所要访问的物理地址后,可以根据该物理地址和该物理页表保护表的保护颗粒度,确定该物理地址所在的物理页表的物理页表号,然后根据该物理页表号查询物理页表保护表,定位到该物理页表对应的物理页表保护表条目,进而根据该物理页表条目中存储的物理页表的权限信息,确定该加速器或IO设备的数据流在该物理页表是否具有访问权限。
三、保护表缓存
每个物理页表保护表可以具有一个相应的保护表缓存,用于缓存该物理页表保护表中的物理页表对应的权限信息。所述保护表缓存也可以称为保护表快取,或者也可以将其称为物理页表保护表的缓存或物理页表保护表的快取,本申请并不限定。
作为物理页表保护表的高速缓存,保护表缓存中通常会存储有最近访问过的或是访问频率比较高的权限信息,因此该保护表缓存的命中率可能会比较高。当需要在物理页表保护表中查找一个数据流在某一物理页表对应的权限信息时,可先在物理页表保护表的保护表缓存中查找,如果在保护表缓存中查找不到,再去物理页表保护表中查找,从而有效提高权限信息的查找效率。
可以理解,本申请实施例中,可以采用某种快取替换算法将物理页表保护表中的权限信息加载到保护表缓存中来,并根据性能需求对保护表缓存中缓存的利用率较低或访问时间比较长的权限信息进行删除,因此,物理页表保护表的快取中缓存有哪些物理页表的权限信息是动态变化的。
具体的,对于一个物理页表保护表来说,该物理页表保护表的保护表缓存也可以包括多个条目,并且不同的条目也可以基于物理地址来索引,例如物理地址号或物理页表的标识(如物理页表号PPN)等。在一种可能的实施方式中,保护表缓存中的一个条目可以仅存储一个物理页表对应的权限信息,此时一个条目中仅存在2比特的有用信息。
在另一种可能的实施方式中,考虑到一个物理页表对应的权限信息只有2比特,而保护表缓存的每个条目占据的比特数是固定的且通常会大于2比特,例如可能是8比特,这样将每个物理页表的权限信息单独存储在一个条目中会造成存储资源的浪费。鉴于此,为了高效利用保护表缓存中的存储空间,如图5中所示,可以将一个或多个物理页表对应的权限信息(page permissions)存储在保护表缓存的同一个条目中,此时不同的条目可以通过物理页表的标识的哈希值来索引,即此时保护表缓存的每个条目的标签(tag)为物理页表的标识的哈希值。作为一种示例,所述哈希值可以是将物理页表号除以保护表缓存的一个条目中能够存储的物理页表的权限信息的最大数量得到的除数,表示物理页表号连续的多个物理页表的权限信息可以存储在保护表缓存的同一个条目中。应注意,本申请对根据物理页表的标识计算哈希值时采用的哈希算法不作具体限定。
需要说明的是,上述物理页表保护表和保护表缓存是以保护流表为设备级的保护流表,针对不同加速器或IO设备的数据流分别进行访问控制的情形下的数据流对应的物理页表保护表、保护表缓存为例进行说明的。可以理解,本申请实施例中,不同的数据流可以对应保护流表中的不同保护流表条目,并且不同的数据流可以对应不同的物理页表保护表和保护表缓存。这表示可以针对不同的数据流分别设置访问权限,分别进行访问控制。
在一种可能的实施方式中,不同的数据流也可以对应保护流表中的同一个保护流表条目,并不同的数据流可以对应同一个物理页表保护表和保护表缓存。这表示所有的加速器/IO设备的数据流的访问权限是一致的,可以对所有数据流执行统一的权限控制。应注意,在这种情形下,不再需要根据数据流的标识来索引保护流表条目了,因为保护流表中仅包括一个保护流表条目,所有加速器或IO设备的数据流对应的控制配置信息是相同的,可以通过查找同一个物理页表保护表和保护表缓存来检查内存访问权限。
还应理解,在保护流表为进程级的保护流表,在区分不同加速器或IO设备的数据流的基础上,还针对同一数据流中不同进程的子数据流分别进行访问控制的情况下,子数据流对应的物理页表保护表、保护表缓存可以采用与上文中的描述类似的方法实现,本申请不再赘述。
基于上述系统架构和PAC装置,请参考图6,为本申请实施例提供的一种内存保护方 法的流程示意图,该方法包括:
步骤S601、PAC装置接收来自加速器或IO设备的内存访问请求,该内存访问请求中包括该加速器或IO设备的数据流的标识,以及该加速器或IO设备请求访问的第一物理地址。
步骤S602、PAC装置根据加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权限信息,该第一物理页表对应的权限信息用于指示该数据流在第一物理页表是否具有读权限和/或写权限。
可选的,PAC装置在读取第一物理地址所在的第一物理页表对应的权限信息之前,可根据该第一物理地址、配置的所述数据流对应的物理页表保护表的边界范围、以及该物理页表保护表的保护颗粒度,确定该第一物理地址所在的第一物理页表的标识,例如可以是该第一物理页表的物理页表号。
本申请实施例中,PAC装置可以通过下列两种可能的实施方式来读取第一物理地址所在的第一物理页表的权限信息:
在一种可能的实施方式中,PAC装置可以根据加速器或IO设备的数据流的标识,确定该加速器或IO设备的数据流对应的物理页表保护表,然后根据第一物理页表的标识,从该物理页表保护表中与第一物理页表的标识对应的物理页表保护表条目中,读取第一物理页表的权限信息。
在另一种可能的实施方式中,PAC装置可以根据加速器或IO设备的数据流的标识,确定该加速器或IO设备的数据流对应的物理页表保护表和该物理页表保护表的保护表缓存。然后根据第一物理页表的标识,在保护表缓存中查找该第一物理页表的权限信息,如果在该保护表缓存中查找到第一物理页表的权限信息,则从该保护表缓存中读取第一物理页表的权限信息。否则,如果在该保护表缓存中查找不到该第一物理页表的权限信息,则根据第一物理页表的标识,从物理页表保护表中读取该第一物理页表的权限信息,并将该第一物理页表的权限信息加载到保护表缓存中。
步骤S603、PAC装置根据第一物理页表对应的权限信息对该内存访问请求进行权限检查,若权限检查通过,则允许该内存访问请求访问该第一物理地址。否则,则拒绝该内存访问请求访问该第一物理地址。
具体的,PAC装置根据第一物理页表对应的权限信息对该内存访问请求进行权限检查可包括:如果该内存访问请求请求在第一物理地址执行读操作,且第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表具有读权限,即可以读,则权限检查通过。相应的,此时PAC装置允许该内存访问请求访问第一物理地址是指,允许该加速器或IO设备的数据流读取该第一物理地址中存储的信息,即允许在该第一物理地址执行读操作。
如果该内存访问请求请求在第一物理地址执行读操作,但是第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表不具有读权限,即不可读,则权限检查不通过,PAC装置应拒绝该内存访问请求访问第一物理地址。
如果该内存访问请求请求在第一物理地址执行写操作,且第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表具有写权限,即可以写,则权限检查通过。相应的,此时PAC装置允许该内存访问请求访问第一物理地址是指,允许该加速器或IO设备的数据流在该第一物理地址中写入新的信息,即允许在该第一物理地址执行 写操作。
如果该内存访问请求请求在第一物理地址执行写操作,但是第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表不具有写权限,即不可写,则权限检查不通过,PAC装置应拒绝该内存访问请求访问第一物理地址。
如果该内存访问请求请求在第一物理地址执行读操作和写操作,且第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表同时具有读权限和写权限,即可以读可以写,则权限检查通过。相应的,此时PAC装置允许该内存访问请求访问第一物理地址是指,允许该加速器或IO设备的数据流读取该第一物理地址中存储的信息,同时也允许该加速器或IO设备的数据流在该第一物理地址中写入新的信息,即允许在该第一物理地址执行读操作和写操作。
如果该内存访问请求请求在第一物理地址执行读操作和写操作,但是第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表不具有读权限(即不可读),或者,第一物理页表对应的权限信息指示所述加速器或IO设备的数据流在第一物理页表不具有写权限(即不可写),则权限检查不通过,PAC装置应拒绝该内存访问请求访问第一物理地址。
可选的,PAC装置在执行步骤S602读取第一物理地址所在的第一物理页表的权限信息之前,还可以读取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目。如前所述,该保护流表条目中存储有该加速器或IO设备的数据流的控制配置信息,其中包括用于指示所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写的第一控制信息、用于指示所述物理页表保护表的边界范围的第二控制信息、用于指示所述物理页表保护表的保护颗粒度的第三控制信息、用于指示是否针对所述数据流开启检查内存访问权限的功能的第四控制信息等。
如此,PAC装置读取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目后,可首先根据其中的第四控制信息的指示,判断针对该数据流检查内存访问权限的功能是否已开启。如果已开启,则表示需要针对该数据流检查内存访问权限,PAC装置可以继续后面检查内存访问权限的流程。如果没有开启,则表示不针对该数据流检查内存访问权限,此时PAC装置可以直接向前路由这次访问。
PAC装置确定针对该数据流检查内存访问权限的功能已开启后,可根据第五控制信息的指示,判断是否需要控制该数据流只能发起虚拟地址访问,不能发起物理地址访问。如果该第五控制信息指示该数据流只能发起虚拟地址访问,不能发起物理地址访问,则PAC装置可以直接拒绝此次访问。如果第五控制信息指示该数据流可以发起物理地址访问,则PAC装置可以继续后面检查内存访问的流程。
随后,PAC装置可以根据第一控制信息的指示,判断所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,并根据第二控制信息指示的所述数据流对应的物理页表保护表的边界范围,判断第一物理地址是否位于该物理页表保护表的边界范围内。
如果第一控制信息指示的所述数据流对应的物理页表保护表的全局权限信息为不可读不可写,则表示所述物理页表保护表所涉及的所有物理页表均不可以访问,即所有物理页表的权限信息均为不可读不可写。这种情形可能是因为内存访问请求在物理页表保护表的初始化之前到来,此时PAC装置可以直接拒绝此次访问。类似的,如果第一物理地址位于第二控制信息指示的所述物理页表保护表的边界范围之外,则表示该加速器或IO设备 的数据流试图访问其权限范围之外或对其不可见或未知的地址空间,此时PAC装置也可以直接拒绝此次访问。
如果第一控制信息指示的所述数据流对应的物理页表保护表的全局权限信息不是不可读不可写,且第一物理地址位于第二控制信息指示的所述物理页表保护表的边界范围之内,则PAC装置可以去读取第一物理地址所在的第一物理页表的权限信息。
可选的,PAC装置在读取第一物理地址所在的第一物理页表的权限信息之前,可以根据第一物理地址、第二控制信息中指示的所述数据流对应的物理页表保护表的边界范围、以及第三控制信息中指示的所述数据流对应的物理页表保护表的保护颗粒度,确定第一物理地址所在的第一物理页表的标识,例如得到该第一物理页表的物理页表号,然后再执行步骤S602,从该物理页表保护表中或者从该物理页表保护表的保护表缓存中,读取所述数据流在第一物理页表的权限信息。
可选的,PAC装置在执行步骤S601之前,还可以执行保护表刷新的流程。具体的,PAC装置可以从翻译代理单元接收所述加速器或IO设备的数据流的标识、所述数据流请求访问的第一物理地址以及所述加速器或IO设备访问第一物理地址的权限信息。
本申请实施例中,所述翻译代理单元为用于将虚拟地址翻译成对应的物理地址的功能单元。该翻译代理单元可以从加速器或IO设备处接收地址翻译请求,该地址翻译请求中包括所述加速器或IO设备的数据流的标识、所述加速器或IO设备请求翻译的第一虚拟地址。翻译代理单元接收到该地址翻译请求后,可将第一虚拟地址翻译成对应的第一物理地址,然后将该第一物理地址携带在地址翻译结果中发送给所述加速器或IO设备。此外,翻译代理单元还可以将该地址翻译结果同步发送给PAC装置,该地址翻译结果中包括第一物理地址,并同时发送所述加速器或IO设备的数据流的标识、所述加速器或IO地址访问第一物理地址所在的第一物理页表的权限信息等相关信息。
PAC装置从翻译代理单元接收到所述加速器或IO设备的数据流的标识和所述加速器或IO设备请求访问第一物理地址之后,可根据该加速器或IO设备的数据流的标识,从保护流表中确定该数据流的标识对应的保护流表条目,并从对应的保护流表条目中读取所述数据流的控制配置信息。进而,PAC装置根据所述数据流的控制配置信息,确定所述加速器或IO设备的数据流对应的物理页表保护表,以及第一物理地址所在的第一物理页表的标识。
进一步的,PAC装置可判断所述加速器或IO设备的数据流对应的物理页表保护表中存储的第一物理页表的权限信息,与从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息是否一致,即判断所述加速器或IO设备的数据流对应的物理页表保护表中是否存储有所述数据流在该第一物理页表准确的访问权限。
具体的,如果所述数据流对应的物理页表保护表的保护表缓存中存储有第一物理页表对应的权限信息,且所述保护表缓存中存储的第一物理页表对应的权限信息与PAC装置从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息不一致,则PAC装置可以根据从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息,对所述数据流对应的物理页表保护表和保护表缓存中的存储的第一物理页表对应的权限信息进行更新。
也就是说,PAC装置可以认为从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息,为所述加速器或IO设备在第一物理页表处准确的访问权限。如果 所述数据流对应的物理页表保护表和保护表缓存中存储的权限信息与此访问权限不一致,则用从翻译代理单元接收到的准确的权限信息去刷新物理页表保护表和保护表缓存中存储的第一物理页表的权限信息,从而确保PAC装置在使用物理页表保护表或保护表缓存中存储的权限信息来检查内存访问权限时,使用的是准确的权限信息。
如果所述数据流对应的物理页表保护表的保护表缓存中存储有第一物理页表对应的权限信息,且所述保护表缓存中存储的第一物理页表对应的权限信息与PAC装置从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息一致,则PAC装置可以不用做什么。
若所述数据流对应的物理页表保护表的保护表缓存中未存储有第一物理页表对应的权限信息,则PAC装置可将从翻译代理单元接收的所述加速器或IO设备访问第一物理地址的权限信息作为第一物理页表对应的权限信息,分别写入所述数据流对应的物理页表保护表和/或所述物理页表保护表的保护表缓存中。
具体的,PAC装置可以在所述数据流对应的物理页表保护表中新建一个物理页表保护表条目,并建立该物理页表保护表条目与第一物理页表的标识之间的映射关系,然后将所述加速器或IO设备访问第一物理地址的权限信息存储到该物理页表保护表条目中。PAC装置将所述加速器或IO设备访问第一物理地址的权限信息写入保护表缓存中的方法与此类似,不再赘述。
可选的,在加速器或IO设备运行的过程中,相关的物理页表可能会更新。例如,可能有新的物理页表要建立,或者虚拟地址到物理地址之间的映射发生了变化。此时,系统软件可能会选择无效化部分物理页表,或者选择无效化该加速器或IO设备中的某个进程相关的所有物理页表,甚至还可能选择无效化该加速器或IO设备相关的所有物理页表。无论是哪种情况,系统软件中的页表管理模块知道具体哪些物理页表会被无效化,并将被无效化的物理页表的信息发送给PAC装置,以使PAC装置做出相应处理,包括对保护流表中存储的该加速器或IO设备的数据流对应的控制配置信息,以及物理页表保护表中存储的被无效化的物理页表的权限信息进行刷新等。
具体的,在一种可能的实施方式中,PAC装置可以从页表管理模块接收页表无效信息,该页表无效信息包括所述加速器或IO设备的数据流的标识以及被无效的一个或多个物理页表的标识。进而,PAC装置可以将所述数据流对应的物理页表保护表和相应的保护表缓存中所述被无效的一个或多个物理页表对应的权限信息更新为不可读不可写。
在另一种可能的实施方式中,PAC装置可以从页表管理模块接收页表无效信息,该页表无效信息包括所述加速器或IO设备的数据流的标识以及对所述数据流相关的物理页表进行全局无效化的指示信息。进而,PAC装置可以将保护流表中所述数据流对应的物理页表保护表的全局权限信息设置为不可读不可写。如果该数据流相关的物理页表的数量较少,PAC装置也可以选择将该数据流对应的物理页表保护表和/或保护表缓存中的物理页表进行遍历,逐一将各个物理页表的权限信息设置为不可读不可写,本申请并不限定。该实施方式可以称为是基于流标识(stream ID)的全局无效化。
在又一种可能的实施方式中,PAC装置可以从页表管理模块接收页表无效信息,该页表无效信息中包括所述加速器或IO设备的数据流的标识、所述加速器或IO设备中的某个进程的子数据流的标识,以及对所述子数据流相关的物理页表进行全局无效化的指示信息。在这种场景下,如果保护流表为进程级的保护流表,所述加速器或IO设备中的每个进程 的子数据流都具有对应的物理页表保护表,那么PAC装置可以将所述数据流的子保护流表中所述子数据流对应的物理页表保护表的全局权限信息设置为不可读不可写。或者,如果该子数据流相关的物理页表的数量较少,PAC装置也可以选择将该子数据流对应的物理页表保护表和/或保护表缓存中的物理页表进行遍历,逐一将各个物理页表的权限信息设置为不可读不可写。该实施方式可以称为是基于子流标识(sub-stream ID)的全局无效化。
需要说明的是,本申请实施例中,PAC装置中的物理页表保护表和保护表缓存可以通过硬件的方式来进行自动的维护和刷新。但应注意,该方式需要加速器或IO设备支持地址翻译服务(address translation service,ATS)机制或其他类似的机制,例如ARM架构下的分布式翻译接口(distributed translation interface,DTI)机制。所述ATS机制是指,加速器或者IO设备携带自身的数据流的标识和子数据流的标识(如果有需要)、虚拟地址空间的起始地址和空间大小等信息,向系统翻译代理(translation agent,TA)申请对应虚拟地址空间的物理地址空间,以便在加速器或IO设备访问系统内存之前获取对应的地址空间和相关的地址空间属性等信息。
或者,PAC装置中的物理页表保护表和保护表缓存也可以由系统软件通过软件的方式来维护和刷新。具体的,请参考图7所示,系统软件(如操作系统(operation system,OS))可以直接控制PAC装置,在对应加速器或IO设备的驱动(driver)开始业务工作之前,系统软件为其分配好相关资源,在保护流表中建立对应的保护流表条目,设置好控制配置信息。此外,系统软件还在PAC装置中建立好对应加速器或IO设备的物理页表保护表,并在对应物理页表保护表中配置好相关的物理地址的访问权限。
下面通过图8a至图8d中的流程图来对本申请实施例提供的内存保护方法涉及的总体流程进行详细说明。
一、初始化
请参考图8a,首先系统管理软件发现加速器/IO设备,系统软件使能ATS机制。系统软件根据加速器/IO设备的流标识或设备标识(如stream ID或requesterID),为此加速器/IO设备建立对应的保护流表条目,并且初始化保护流表条目。然后系统软件启动加速器开始工作。
在进行初始化时,系统软件不需要遍历整个物理页表保护表,将各个物理页表的权限比特位逐一设置为00b(表示无读权限和写权限)。而是可以在初始化该加速器/IO设备对应的保护流表条目时,将其中的Zero比特位置为1,表示对应流标识的加速器/IO设备没有读权限和写权限,即对应物理页表保护表的全局权限为不可读不可写。
系统软件还可以在初始化时,设置该加速器/IO设备对应的物理页表保护表在内存中的基地址和边界大小等其他控制配置信息。
二、保护表刷新
请参考图8b,当加速器/IO设备本地的ATC发生缺失时,该加速器/IO设备可以通过ATS机制向IOMMU/SMMU请求进行地址翻译。地址翻译完成后,IOMMU/SMMU可以将对应的地址翻译结果返回给加速器/IO设备,此外,IOMMU/SMMU还可以将地址翻译结果和相关信息同步发送给本申请中的PAC装置。其中,所述地址翻译结果包括加速器/IO设备所请求访问的地址空间的物理地址,所述相关信息可以包括加速器/IO设备的流标识和对应物理页表的权限信息。
随后,PAC装置可以判断其本地的与加速器/IO设备的流标识对应的保护表缓存是否有对的访问权限。如果保护表缓存中存在对应物理页表的权限信息,并且保护表缓存中的权限信息与IOMMU/SMMU提供的权限信息一致,则PAC装置不用做什么;如果保护表缓存中存在对应物理页表的权限信息,但是保护表缓存中的权限信息与IOMMU/SMMU提供的权限信息不一致,此时PAC装置刷新保护表缓存中对应物理页表的权限信息,并且将该权限信息写回到对应的物理页表保护表(Physical Page Protection Table,PPPT)中去;如果保护表缓存不存在对应物理页表的权限信息,此时PAC装置在保护表缓存中建立一个对应物理页表的条目缓存,并且将此该物理页表的权限信息写到对应的物理页表保护表中。
三、内存访问
请参考图8c,加速器/IO设备获得物理地址后发起内存访问,此时所有的内存访问请求都会经过本申请中的PAC装置进行访问权限的检查。如果此时发现这次访问的流对应的保护表流表条目中的检查开关比特位没有打开(即EN字段指示不检查访问全新啊),那么直接向前路由这次访问。否则,如果加速器/IO设备使用物理地址访问系统内存的访问请求在物理页表保护表初始化之前到来(即ZERO字段指示全局权限信息为不可读不可写,或者认为ZERO字段无效),或者此次访问的物理地址颗粒度对齐后的值大于物理页表保护表的边界范围,那么直接阻止此次访问,并且上报事件给系统软件。否则,判断此时PAC装置中的保护表缓存中是否有对应物理页表的权限信息,如果没有,则从物理页表保护表中加载对应物理页表的权限信息到保护表缓存中,然后进行权限检查;否则,直接读取保护表缓存中对应物理页表的权限信息进行权限检查。如果权限检查通过,则可以向前路由这次访问,否则,阻止此次访问,并且上报事件给软件。
四、保护表的无效化
请参考图8d,在进程的进行过程中,对应的物理页表可能会更新。如果有新的物理页表要建立或者之前的虚拟地址到物理地址之间的映射有变化,那么本申请的PAC装置也要做相应的处理。此时,系统软件可选择无效化部分页表映射或者将全部属于这个进程的页表都无效化。不管哪种情况,系统的页表管理模块需要知道具体的物理页表有哪些页表需要被无效化。这时候这些信息都会同步到PAC装置,然后PAC装置可以将保护表缓存中无效页表对应的缓存条目标记为脏(dirty)状态,对物理页表保护表中相关的无效页表的权限信息进行刷新,以及对保护流表中对应的保护流表条目或者子保护流表条目进行刷新。
所述无效化还可以是基于sub-StreamID的全局无效化,或者基于StreamID的全局无效化,其中,基于sub-StreamID的全局无效化是指无效化操作将影响这个SubstreamID下的所有相关的物理页表,基于StreamID的全局无效化是指无效化操作将影响这个streamID下的所有相关的物理页表。
本申请实施例还提供一种保护代理控制装置,请参考图9,为本申请实施例提供的一种保护代理控制装置的结构示意图,该保护代理控制装置900包括:通信模块910和处理模块920。该保护代理控制装置可用于实现上述任一方法实施例。
示例性的,当该保护代理控制装置执行图6中所示的方法实施例时,通信模块910用于,接收来自加速器或输入输出IO设备的内存访问请求,该内存访问请求中包括所述加速器或IO设备的数据流的标识以及请求访问的第一物理地址;处理模块920用于,根据所述加速器或IO设备的数据流的标识,读取第一物理地址所在的第一物理页表对应的权 限信息,该第一物理页表对应的权限信息用于指示所述数据流在第一物理页表是否具有读权限和/或写权限;以及,根据第一物理页表对应的权限信息对内存访问请求进行权限检查,若权限检查通过,则允许所述内存访问请求访问第一物理地址。
该保护代理控制装置中涉及的处理模块920可以由处理器或处理器相关电路组件实现,通信模块910可以由收发器或收发器相关电路组件实现。该保护代理控制装置中的各个模块的操作和/或功能分别为了实现图6、图7、图8a、图8b、图8c或图8d中所示方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供一种芯片系统,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片系统实现上述任一方法实施例中的方法。
可选地,该芯片系统中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片系统中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性的,该芯片系统可以是现场可编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
应理解,上述方法实施例中的各步骤可以通过处理器中的逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请实施例还提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述方法实施例中的方法。
本申请实施例还提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述方法实施例中的方法。
本申请实施例提供一种计算机系统,该计算机系统包括本申请中所述的保护代理控制装置,以及与该保护代理控制装置耦合的CPU、至少一个第三方的加速器或IO设备。
应理解,本申请实施例中提及的处理器可以是CPU,还可以是其他通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM, EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中涉及的各种数字编号仅为描述方便进行的区分,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等 各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (25)

  1. 一种内存保护方法,其特征在于,所述方法包括:
    接收来自加速器或输入输出IO设备的内存访问请求,所述内存访问请求中包括所述加速器或IO设备的数据流的标识以及请求访问的第一物理地址;
    根据所述加速器或IO设备的数据流的标识,读取所述第一物理地址所在的第一物理页表对应的权限信息,所述第一物理页表对应的权限信息用于指示所述数据流在所述第一物理页表是否具有读权限和/或写权限;
    根据所述第一物理页表对应的权限信息对所述内存访问请求进行权限检查,若权限检查通过,则允许所述内存访问请求访问所述第一物理地址。
  2. 根据权利要求1所述的方法,其特征在于,所述根据所述加速器或IO设备的数据流的标识,读取所述第一物理地址所在的第一物理页表对应的权限信息,包括:
    根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表和保护表缓存,所述物理页表保护表中存储有至少一个物理页表对应的权限信息,所述保护表缓存为所述物理页表保护表的缓存;
    根据所述第一物理页表的标识,判断所述保护表缓存中是否存在所述第一物理页表对应的权限信息,若存在,则从所述保护表缓存中读取所述第一物理页表对应的权限信息;
    若不存在,则从所述物理页表保护表中读取所述第一物理页表对应的权限信息,并将所述第一物理页表对应的权限信息加载到所述保护表缓存中。
  3. 根据权利要求2所述的方法,其特征在于,所述保护表缓存的一个条目中存储有一个或多个物理页表对应的权限信息,且每个物理页表对应的权限信息在所述保护表缓存中所处的条目根据所述物理页表的标识的哈希值进行索引。
  4. 根据权利要求1所述的方法,其特征在于,所述根据所述加速器或IO设备的数据流的标识,读取所述第一物理地址所在的第一物理页表对应的权限信息,包括:
    根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表,所述物理页表保护表中存储有至少一个物理页表对应的权限信息;
    根据所述第一物理页表的标识,从所述物理页表保护表中读取所述第一物理页表对应的权限信息。
  5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述加速器或IO设备的数据流的标识,读取所述第一物理地址所在的第一物理页表对应的权限信息之前,所述方法还包括:
    读取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目,所述保护流表条目中包括第一控制信息和第二控制信息,所述第一控制信息用于指示所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,所述第二控制信息用于指示所述物理页表保护表的边界范围;
    若根据所述第一控制信息和所述第二控制信息,确定所述物理页表保护表的全局权限信息不是不可读不可写,且所述第一物理地址位于所述物理页表保护表的边界范围内,则读取所述第一物理地址所在的第一物理页表对应的权限信息。
  6. 根据权利要求5所述的方法,其特征在于,所述保护流表条目中还包括第三控制信息,所述第三控制信息用于指示所述物理页表保护表的保护颗粒度;
    所述读取所述第一物理地址所在的第一物理页表对应的权限信息之前,还包括:
    根据所述物理页表保护表的边界范围和保护颗粒度,确定所述第一物理地址所在的第一物理页表。
  7. 根据权利要求5或6所述的方法,其特征在于,所述保护流表条目中还包括第四控制信息,所述第四控制信息用于指示是否针对所述数据流开启检查内存访问权限的功能;
    所述获取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目之后,所述方法还包括:
    根据所述第四控制信息,确定针对所述数据流检查内存访问权限的功能已开启。
  8. 根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
    从翻译代理单元接收所述加速器或IO设备的数据流的标识、所述第一物理地址以及所述加速器或IO设备访问所述第一物理地址的权限信息;
    若所述数据流对应的保护表缓存中存在所述第一物理地址所在的第一物理页表对应的权限信息,且所述保护表缓存中的所述第一物理页表对应的权限信息与从所述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息不一致,则根据从所述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息,对所述数据流对应的物理页表保护表和所述保护表缓存中的所述第一物理页表对应的权限信息进行更新。
  9. 根据权利要求8所述的方法,其特征在于,所述方法还包括:
    若所述数据流对应的保护表缓存中不存在所述第一物理地址所在的第一物理页表对应的权限信息,则将从所述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息作为所述第一物理地址所在的第一物理页表对应的权限信息,分别写入所述数据流对应的物理页表保护表和/或所述保护表缓存中。
  10. 根据权利要求1至9中任一项所述的方法,其特征在于,所述方法还包括:
    从页表管理模块接收页表无效信息,所述页表无效信息包括所述加速器或IO设备的数据流的标识以及被无效的一个或多个物理页表的标识;
    将所述数据流对应的保护表缓存和所述物理页表保护表中所述被无效的一个或多个物理页表对应的权限信息更新为不可读不可写。
  11. 根据权利要求1至9中任一项所述的方法,其特征在于,所述方法还包括:
    从页表管理模块接收页表无效信息,所述页表无效信息包括所述加速器或IO设备的数据流的标识以及对所述数据流有关的物理页表进行全局无效化的指示信息;
    将保护流表中所述数据流的标识对应的保护流表条目中存储的所述数据流对应的物理页表保护表的全局权限信息设置为不可读不可写。
  12. 一种保护代理控制装置,其特征在于,所述装置包括处理器和通信接口;其中,
    所述通信接口,用于接收来自加速器或输入输出IO设备的内存访问请求,所述内存访问请求中包括所述加速器或IO设备的数据流的标识以及请求访问的第一物理地址;
    所述处理器,用于根据所述加速器或IO设备的数据流的标识,读取所述第一物理地址所在的第一物理页表对应的权限信息,所述第一物理页表对应的权限信息用于指示所述数据流在所述第一物理页表是否具有读权限和/或写权限;
    以及,根据所述第一物理页表对应的权限信息对所述内存访问请求进行权限检查,若权限检查通过,则允许所述内存访问请求访问所述第一物理地址。
  13. 根据权利要求12所述的装置,其特征在于,所述处理器具体用于:
    根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表和保护表缓存,所述物理页表保护表中存储有至少一个物理页表对应的权限信息,所述保护表缓存为所述物理页表保护表的缓存;
    根据所述第一物理页表的标识,判断所述保护表缓存中是否存在所述第一物理页表对应的权限信息,若存在,则从所述保护表缓存中读取所述第一物理页表对应的权限信息;
    若不存在,则从所述物理页表保护表中读取所述第一物理页表对应的权限信息,并将所述第一物理页表对应的权限信息加载到所述保护表缓存中。
  14. 根据权利要求13所述的装置,其特征在于,所述保护表缓存的一个条目中存储有一个或多个物理页表对应的权限信息,且每个物理页表对应的权限信息在所述保护表缓存中所处的条目根据所述物理页表的标识的哈希值进行索引。
  15. 根据权利要求12所述的装置,其特征在于,所述处理器具体用于:
    根据所述加速器或IO设备的数据流的标识,确定所述数据流对应的物理页表保护表,所述物理页表保护表中存储有至少一个物理页表对应的权限信息;
    根据所述第一物理页表的标识,从所述物理页表保护表中读取所述第一物理页表对应的权限信息。
  16. 根据权利要求12至15中任一项所述的装置,其特征在于,所述处理器还用于:
    读取保护流表中所述加速器或IO设备的数据流的流标识对应的保护流表条目,所述保护流表条目中包括第一控制信息和第二控制信息,所述第一控制信息用于指示所述数据流对应的物理页表保护表的全局权限信息是否为不可读不可写,所述第二控制信息用于指示所述物理页表保护表的边界范围;
    若根据所述第一控制信息和所述第二控制信息,确定所述物理页表保护表的全局权限信息不是不可读不可写,且所述第一物理地址位于所述物理页表保护表的边界范围内,则读取所述第一物理地址所在的第一物理页表对应的权限信息。
  17. 根据权利要求16所述的装置,其特征在于,所述保护流表条目中还包括第三控制信息,所述第三控制信息用于指示所述物理页表保护表的保护颗粒度;
    所述处理器还用于,根据所述物理页表保护表的边界范围和保护颗粒度,确定所述第一物理地址所在的第一物理页表。
  18. 根据权利要求16或17所述的装置,其特征在于,所述保护流表条目中还包括第四控制信息,所述第四控制信息用于指示是否针对所述数据流开启检查内存访问权限的功能;
    所述处理器还用于,根据所述第四控制信息,确定针对所述数据流检查内存访问权限的功能已开启。
  19. 根据权利要求12至18中任一项所述的装置,其特征在于,所述通信接口还用于:
    从翻译代理单元接收所述加速器或IO设备的数据流的标识、所述第一物理地址以及所述加速器或IO设备访问所述第一物理地址的权限信息;
    所述处理器还用于:
    若所述数据流对应的保护表缓存中存在所述第一物理地址所在的第一物理页表对应的权限信息,且所述保护表缓存中的所述第一物理页表对应的权限信息与从所述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息不一致,则根据从所 述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息,对所述数据流对应的物理页表保护表和所述保护表缓存中的所述第一物理页表对应的权限信息进行更新。
  20. 根据权利要求19所述的装置,其特征在于,所述处理器还用于:
    若所述数据流对应的保护表缓存中不存在所述第一物理地址所在的第一物理页表对应的权限信息,则将从所述翻译代理单元接收的所述加速器或IO设备访问所述第一物理地址的权限信息作为所述第一物理地址所在的第一物理页表对应的权限信息,分别写入所述数据流对应的物理页表保护表和/或所述保护表缓存中。
  21. 根据权利要求12至20中任一项所述的装置,其特征在于,所述通信接口还用于:
    从页表管理模块接收页表无效信息,所述页表无效信息包括所述加速器或IO设备的数据流的标识以及被无效的一个或多个物理页表的标识;
    所述处理器还用于:
    将所述数据流对应的保护表缓存和所述物理页表保护表中所述被无效的一个或多个物理页表对应的权限信息更新为不可读不可写。
  22. 根据权利要求12至20中任一项所述的装置,其特征在于,所述通信接口还用于:
    从页表管理模块接收页表无效信息,所述页表无效信息包括所述加速器或IO设备的数据流的标识以及对所述数据流有关的物理页表进行全局无效化的指示信息;
    所述处理器还用于:
    将保护流表中所述数据流的标识对应的保护流表条目中存储的所述数据流对应的物理页表保护表的全局权限信息设置为不可读不可写。
  23. 一种通信装置,其特征在于,所述通信装置包括:
    存储器,用于存储指令;
    至少一个处理器,用于从所述存储器中调用并运行所述指令,使得所述通信装置实现如权利要求1~11中任意一项所述的方法。
  24. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1~11中任意一项所述的方法。
  25. 一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行如权利要求1~11中任意一项所述的方法。
PCT/CN2020/106451 2020-07-31 2020-07-31 一种内存保护方法及保护代理控制装置 WO2022021446A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/CN2020/106451 WO2022021446A1 (zh) 2020-07-31 2020-07-31 一种内存保护方法及保护代理控制装置
EP20946738.0A EP4180976A4 (en) 2020-07-31 2020-07-31 MEMORY PROTECTION METHOD AND PROXY PROTECTION CONTROL DEVICE
CN202080104550.1A CN116249972A (zh) 2020-07-31 2020-07-31 一种内存保护方法及保护代理控制装置
US18/162,114 US20230176984A1 (en) 2020-07-31 2023-01-31 Memory protection method and protection proxy control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/106451 WO2022021446A1 (zh) 2020-07-31 2020-07-31 一种内存保护方法及保护代理控制装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/162,114 Continuation US20230176984A1 (en) 2020-07-31 2023-01-31 Memory protection method and protection proxy control apparatus

Publications (1)

Publication Number Publication Date
WO2022021446A1 true WO2022021446A1 (zh) 2022-02-03

Family

ID=80037424

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/106451 WO2022021446A1 (zh) 2020-07-31 2020-07-31 一种内存保护方法及保护代理控制装置

Country Status (4)

Country Link
US (1) US20230176984A1 (zh)
EP (1) EP4180976A4 (zh)
CN (1) CN116249972A (zh)
WO (1) WO2022021446A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484531A (zh) * 2016-09-18 2017-03-08 上海顺久电子科技有限公司 内存访问仲裁方法、电路及装置
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN109739806A (zh) * 2018-12-28 2019-05-10 安谋科技(中国)有限公司 内存访问方法、内存访问控制器和片上系统
US10402106B2 (en) * 2013-12-12 2019-09-03 Memory Technologies Llc Channel optimized storage modules
CN111124814A (zh) * 2019-12-05 2020-05-08 珠海市杰理科技股份有限公司 Soc内存访问监控方法、装置和计算机设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10878859B2 (en) * 2017-12-20 2020-12-29 Micron Technology, Inc. Utilizing write stream attributes in storage write commands

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402106B2 (en) * 2013-12-12 2019-09-03 Memory Technologies Llc Channel optimized storage modules
CN106484531A (zh) * 2016-09-18 2017-03-08 上海顺久电子科技有限公司 内存访问仲裁方法、电路及装置
CN106502926A (zh) * 2016-09-26 2017-03-15 华为技术有限公司 一种内存监控方法、内存访问控制器及SoC系统
CN107220189A (zh) * 2017-03-14 2017-09-29 晨星半导体股份有限公司 内存空间管理及内存访问控制方法及装置
CN109739806A (zh) * 2018-12-28 2019-05-10 安谋科技(中国)有限公司 内存访问方法、内存访问控制器和片上系统
CN111124814A (zh) * 2019-12-05 2020-05-08 珠海市杰理科技股份有限公司 Soc内存访问监控方法、装置和计算机设备

Also Published As

Publication number Publication date
EP4180976A4 (en) 2023-09-06
CN116249972A (zh) 2023-06-09
US20230176984A1 (en) 2023-06-08
EP4180976A1 (en) 2023-05-17

Similar Documents

Publication Publication Date Title
US10509736B2 (en) Controlling access by IO devices to pages in a memory in a computing device
US10241931B2 (en) Controlling access to pages in a memory in a computing device
US10169244B2 (en) Controlling access to pages in a memory in a computing device
JP5680642B2 (ja) 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
US7873770B2 (en) Filtering and remapping interrupts
US9146879B1 (en) Virtual memory management for real-time embedded devices
US20130013889A1 (en) Memory management unit using stream identifiers
JP6067928B2 (ja) 属性フィールドのマルチコアページテーブルセット
JP2017517040A (ja) 格納されたアドレス変換の無効化
CN113486410B (zh) 一种保护数据安全的方法、cpu核、cpu芯片和电子设备
US20220308756A1 (en) Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory
JP2021507362A (ja) 間接アクセスメモリコントローラ向けの保護機能を追加するための機器
WO2022200962A1 (en) Migrating pages of memory accessible by input-output devices
US20220206700A1 (en) Migrating Pages of Memory Accessible by Input-Output Devices
WO2022021446A1 (zh) 一种内存保护方法及保护代理控制装置
US20190102321A1 (en) Techniques to provide access protection to shared virtual memory
US20230109295A1 (en) Controlling memory access in a data processing systems with multiple subsystems
US11188477B2 (en) Page protection layer
WO2023064590A1 (en) Software indirection level for address translation sharing
WO2023064609A1 (en) Translation tagging for address translation caching
US20180307623A1 (en) Memory-side memory controller interpreting capabilities

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20946738

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020946738

Country of ref document: EP

Effective date: 20230210

NENP Non-entry into the national phase

Ref country code: DE