CN115298655A - 控制具有多个子系统的数据处理系统中的存储器访问 - Google Patents

控制具有多个子系统的数据处理系统中的存储器访问 Download PDF

Info

Publication number
CN115298655A
CN115298655A CN202180022688.1A CN202180022688A CN115298655A CN 115298655 A CN115298655 A CN 115298655A CN 202180022688 A CN202180022688 A CN 202180022688A CN 115298655 A CN115298655 A CN 115298655A
Authority
CN
China
Prior art keywords
memory
subsystem
memory transaction
identifier
address
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
CN202180022688.1A
Other languages
English (en)
Inventor
T·C·格罗卡特
A·B·斯温
A·D·C·查德威克
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.)
ARM Ltd
Original Assignee
ARM 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 ARM Ltd filed Critical ARM Ltd
Publication of CN115298655A publication Critical patent/CN115298655A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/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/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
    • 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/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • 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/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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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

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)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

公开了用于控制数据处理系统中的存储器访问的装置、方法和技术。操作数据处理系统包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备。存储器事务控制电路接收包括指示发出外围设备的流标识符的存储器事务的存储器事务信息。主控制寄存器指示具有多个条目的流表的地址,每个条目包括自有子系统标识符。对应于多个子系统中的每个子系统的至少一个子系统控制寄存器存储存储器访问检查配置信息。在接收到存储器事务信息时,根据流标识符选择流表的条目。选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器。然后导致根据存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则。

Description

控制具有多个子系统的数据处理系统中的存储器访问
本技术涉及数据处理。更具体地,它们涉及对包括多个子系统的数据处理系统中的存储器访问的控制。
在包括多个子系统的数据处理系统中,这多个子系统可能相互不信任。然而,这些多个子系统可能需要共享对数据处理系统的各个部件的访问,特别是对存储器部件和一些控制寄存器的访问,使得对从多个子系统中的设备接收的存储器访问的控制必须被仔细地协调,以便保护这些子系统彼此免受影响。
至少一些示例提供了一种用于控制数据处理系统中的存储器访问的装置,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该装置包括:
存储器事务控制电路,该存储器事务控制电路用以接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备的流标识符;
主控制寄存器,该主控制寄存器用以存储指示流表的地址的值,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;以及
对应于多个子系统中的每个子系统的至少一个子系统控制寄存器,至少一个子系统控制寄存器用以存储存储器访问检查配置信息,
其中存储器事务控制电路响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器;并且
导致根据所述存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的所述存储器访问检查配置信息来执行存储器访问规则。
至少一些示例提供了一种控制数据处理系统中的存储器访问的方法,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该方法包括:
接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备的流标识符;
将指示流表的地址的值存储在主控制寄存器中,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;
将存储器访问检查配置信息存储在对应于多个子系统中的每个子系统的至少一个子系统控制寄存器中;以及
响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器;以及
导致根据存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则。
至少一些示例提供了一种用于控制数据处理系统中的存储器访问的装置,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该装置包括:
用于接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息的构件,其中存储器事务信息包括指示外围设备的流标识符;
用于将指示流表的地址的值存储在主控制寄存器中的构件,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;
用于将存储器访问检查配置信息存储在对应于多个子系统中的每个子系统的至少一个子系统控制寄存器中的构件;
用于响应于存储器事务信息的接收而根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目的构件;
用于选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器的构件;以及
用于导致根据传入存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则的构件。
至少一些示例提供了一种计算机程序,该计算机程序用于控制主机数据处理装置来提供指令执行环境,其包括:
存储器访问控制逻辑,该存储器访问控制逻辑用于控制数据处理系统中的存储器访问,其中数据处理系统在操作时包括多个子系统,每个子系统包括处理元件逻辑的至少一个实例和外围设备逻辑的至少一个实例,存储器访问控制逻辑包括:
存储器事务检查逻辑,该存储器事务检查逻辑用以接收由数据处理系统的外围设备逻辑的实例发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备逻辑的实例的流标识符;
主控制寄存器逻辑,该主控制寄存器逻辑用以存储指示流表的地址的值,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;以及
对应于多个子系统中的每个子系统的子系统控制寄存器逻辑的至少一个实例,子系统控制寄存器逻辑的至少一个实例用以存储存储器访问检查配置信息,
其中存储器事务检查逻辑响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的子系统控制寄存器逻辑的至少一个实例;并且
导致根据所述存储器事务信息和存储在所选择的子系统控制寄存器逻辑的至少一个实例中的所述存储器访问检查配置信息来执行存储器访问规则。
将参考如附图所示的本发明的实施方案,结合以下描述阅读,仅以举例的方式进一步描述本技术,其中:
图1示意性地示出了根据一些实施方案的包括多个子系统的数据处理系统;
图2示意性地示出了根据一些实施方案的使用与存储器事务相关联的流ID来在流表中查找自有子系统标识符,并在此基础上访问对应的子系统控制寄存器,并且访问存储器访问规则信息和存储器访问检查配置信息;
图3示意性地示出了根据一些实施方案的数据处理系统,该数据处理系统包括多个子系统并且包括多种样式的系统存储器保护单元(SMPU);
图4示意性地示出了根据一些实施方案的使用来自传入存储器事务的存储器事务信息和由全局控制寄存器和子系统控制寄存器提供的信息来控制包括对应传出存储器事务的各种存储器访问的装置;
图5示意性地示出了根据一些实施方案的用于在具有活动模式和非活动模式的数据处理系统中控制存储器访问的装置;
图6是示出根据一些实施方案的方法所采取的步骤序列的流程图,其中存储器事务信息被接收并用于确定存储器访问检查配置信息并导致执行对应存储器访问规则;
图7示意性地示出了根据一些实施方案的级联查找过程,通过该级联查找过程,存储器事务的流ID选择流表中的条目,并且流表的条目选择上下文描述符表,并且子流ID选择上下文描述符表中的条目以便确定页表分级结构中的存储器访问权限;
图8A示意性地示出了根据一些实施方案的级联查找过程,其中存储器事务的流ID选择流表中的条目,子流ID选择上下文描述符表中的条目,并且上下文描述符表中的条目提供MPU区域表基地址和大小;
图8B示意性地示出了根据一些示例性实施方案的方式,其中定义存储器访问权限集合的配置数据可以以分级方式被收集,因为全局控制寄存器、流表、上下文描述符和MPU区域属性表被按顺序访问;
图8C示意性地示出了在一些实施方案中使用存储器映射子系统控制寄存器地址来控制高速缓存维护操作;
图9示意性地示出了根据一些实施方案的存储器事务处理电路,其使用传入存储器事务的流ID来确定要应用于传出存储器事务的自有子系统ID;
图10示意性地示出了根据一些实施方案的全局控制寄存器;
图11示意性地示出了根据一些实施方案的定位在系统互连器和存储器设备之间的防火墙设备;并且
图12示出了可使用的模拟器具体实施。
在本文的一个示例中,存在一种用于控制数据处理系统中的存储器访问的装置,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该装置包括:
存储器事务控制电路,该存储器事务控制电路用以接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备的流标识符;
主控制寄存器,该主控制寄存器用以存储指示流表的地址的值,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;以及
对应于多个子系统中的每个子系统的至少一个子系统控制寄存器,至少一个子系统控制寄存器用以存储存储器访问检查配置信息,其中存储器事务控制电路响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器;并且
导致根据所述存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的所述存储器访问检查配置信息来执行存储器访问规则。
由存储器事务控制电路用来确定存储器访问检查配置信息以访问存储器事务信息的给定集合的控制寄存器的分级布置提供了一种布置,其中可以向每个子系统提供对其自有存储器访问配置的单独控制,然而其中该布置的总体控制由系统中的可信实体保留并且由存储器事务控制电路本身来执行(例如,尽管不是必须的,但作为系统MPU(存储器保护单元)的一部分)。这是因为主控制寄存器用于定义流表将被访问的位置(例如,通过提供基地址或指示流表的地址的其他值),并且该主控制寄存器处于可信实体的控制下并且不能被(可能相互不信任的)子系统修改。因此,这意味着可以信任流表中的条目。此外,流表中的条目各自包括自有子系统标识符,使得存储器事务控制电路可以可靠地确定自有子系统以与从外围设备接收的每个存储器事务相关联。自有子系统的标识符然后用于确定对应于子系统的至少一个子系统控制寄存器,并且子系统控制寄存器(直接或间接)给出所需的存储器访问检查配置信息。因此,在存储器事务信息包括指示存储器事务源自的外围设备的流标识符的情况下,这提供了可靠的机制以确保从外围设备接收的存储器事务正确地与它们所属的子系统相关联,并且在此基础上,可以检索正确的存储器访问检查配置信息并将其用于执行适合于存储器事务和生成它的外围设备的存储器访问规则。
为了执行适当的存储器访问规则所需的信息可以采取多种形式。在一些实施方案中,存储器访问检查配置信息可以相对直接地向存储器事务控制电路提供该所需信息。在一些实施方案中,可以采用另外的查找层来导出配置存储器访问规则所需的另外信息。因此,在一些实施方案中,存储器访问规则的执行进一步依赖于附加存储器访问检查配置信息,其中附加存储器访问检查配置信息包括:
上下文描述符表,其中所述上下文描述符表具有多个上下文描述符,每个上下文描述符包括指示存储器区域属性表的所述地址的值;以及
存储器区域属性定义,所述存储器区域属性定义由所述存储器事务控制电路根据指示存储器区域属性表的所述地址的所述值来访问,
其中所述上下文描述符表的所述地址是根据以下中的一项来确定的:
流表的所选择条目中的另外值;以及
所选择的至少一个子系统控制寄存器中的另外值。
因此,上下文描述符表可用于允许访问所需的配置信息,特别是通过提供指示存储器区域属性表的地址的值。因此,该值可以直接是地址本身,它可以仅指示地址的一部分(足以唯一地标识它),或者它可以例如指示要找到所需地址信息的另外位置。此外,上下文描述符表的地址可以从不同的源确定,并且实施方案规定该地址可以根据以下中的一项来确定:流表的所选择条目中的另外值;以及所选择的至少一个子系统控制寄存器中的另外值。
可以在流表中找到的信息的控制下以各种方式访问上下文描述符表,但是在一些实施方案中,存储器事务信息还包括指示存储器事务的外围设备中的始发上下文的子流标识符,并且其中根据指示上下文描述符表的地址的值来访问附加存储器访问检查配置信息包括:
根据子流标识符从由指示上下文描述符表的地址的值标识的上下文描述符表中选择上下文描述符;
从所选择的上下文描述符中检索指示存储器区域属性表的地址的值;以及
访问由指示存储器区域属性表的地址的值标识的存储器区域属性表以检索存储器区域属性定义中的至少一个存储器区域属性定义。
因此,在这样的布置中,在存储器事务信息提供指示存储器事务的外围设备中的始发上下文的子流标识符的情况下,这允许在外围设备中的任一者中支持多个上下文,并且在存储器访问控制方面在该多个上下文之间进行区分。因此,可以根据该子流标识符从上下文描述符表中选择上下文描述符。然后可以访问对应的存储器区域属性表以检索适合于始发上下文的至少一个存储器区域属性定义。这提供了给定外围设备代表其操作的多个上下文之间的另外隔离级别。
存储在上下文描述符表中的上下文描述符可以保存与控制存储器访问相关的各种信息,并且在一些实施方案中,在上下文描述符表中选择的上下文描述符还存储指示存储器区域属性表大小的值,并且访问存储器区域属性表包括访问由指示存储器区域属性表的地址的值和指示存储器区域属性表大小的值定义的存储器区域。因此,这提供了从如此定义的存储器区域属性表中访问适当的存储器区域属性的灵活且可配置的方式。应当理解,存储器区域属性表的大小可以以各种方式编码,例如,它可以在上下文描述符中的字段中直接指定,或者上下文描述符中的字段可用于间接导出大小(例如,通过将2提高到该字段的值的幂)。在一些实施方案中,上下文描述符的多个字段可一起指示存储器区域属性表的大小。例如,上下文描述符可以包含存储器区域属性表的高位地址(或极限地址),当与存储器区域属性表基地址组合时,该高位地址指示存储器区域属性表的大小。在其他实施方案中,存储器区域属性表的大小可以是固定的,因此不需要在上下文描述符中存储指示存储器区域属性表大小的值。
可以以各种方式来定义存储器区域属性定义,但是在一些实施方案中,所检索的至少一个存储器区域属性定义包括包含权限信息的附加存储器访问规则信息,并且所检索的至少一个存储器区域属性定义还包括指示存储器区域的开始和结束地址的值。因此,这些值例如可以是显式的开始和结束地址,它们可以是开始地址和长度,或者是允许定义所需存储器块的任何其他等效机制。
可以以各种方式提供存储器区域属性表,但是在一些实施方案中,由指示存储器区域属性表的地址的值标识的存储器区域属性表形成页表分级结构的一部分,并且附加存储器访问规则信息包括在页表分级结构中定义的权限信息。
在其中存储器事务信息还包括指示存储器事务的外围设备中的始发上下文的子流标识符的一些实施方案中,可以在存储器事务信息中提供另外的信息以指示存储器事务信息中的这种子流标识符的有效性(或相反,无效性)。在其他实施方案中,可以通过使用子流标识符的无效值来编码子流标识符的无效性,例如可以选择值0来编码子流标识符无效。因此,在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息中的子流标识符有效性标记,当子流标识符有效性标记指示子流标识符的无效性时,根据预先确定的子流标识符来执行上下文描述符表中条目的选择。因此,不是使用形成存储器事务信息的一部分的子流标识符,而是使用替代(预先确定的)子流标识符来执行上下文描述符表中条目的选择。因此,该默认选择可以允许存储器事务继续进行,但是其中它限于由存储器区域属性表所允许的访问,然后导致该存储器区域属性表被访问。因此,提供了对数据处理系统中的外围设备的存储器访问的控制的另外方面。
在一些实施方案中,该装置自身可以接收传入存储器事务,然后其自身根据存储器事务信息和存储器访问检查配置信息来执行相关的存储器访问规则。在其他实施方案中,该装置可以提供控制机制,用于根据存储器事务信息和存储器访问检查配置信息来确定相关的存储器访问规则,而其自身不接收传入存储器事务。例如,另外的系统部件可接收传入存储器事务并将相关存储器事务信息引用到该装置。
此外,该装置可被配置为发出传出存储器事务。因此,在一些实施方案中,该装置还包括存储器事务传输接口以发出以数据处理系统的数据存储设备为目标的传出存储器事务,其中传出存储器事务包括所指派的自有子系统标识符。存储器事务传输接口可用于转发通过相关存储器访问规则的传入事务。存储器事务传输接口可用于将由存储器事务控制电路生成的事务传输到各种存储器表(例如,流表、上下文描述符表或存储器区域属性表)。这然后意味着这些传出存储器事务的接收方然后可以参考所指派的自有子系统标识符来确定正确的访问(并且相反地拒绝访问)。在这样的接收方仅需要基于子系统标识符进行滤波的情况下,这简化了其配置,因为它不需要知道外围设备与其自有子系统的关系。此外,它减少了需要在系统互连器上承载的位数。在一些实施方案中,单个存储器事务传输接口既可用于转发传入事务,也可用于由存储器事务控制电路生成的事务。在其他实施方案中,可使用单独的存储器事务传输接口,其中接口用于转发传入事务,作为系统中从外围设备接收传入事务的另一部件的一部分。
在流表自身可存储在存储器中并因此通过存储器事务访问的情况下,存储器事务控制电路可以发出它自有存储器事务,以便在导致执行存储器访问规则时检索流表的相关内容(如上所述)。此类流表访问然后可以以各种方式被标记以确保它们的安全性,并且在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息的接收:使存储器事务传输接口发出第一传出存储器事务以访问流表,其中第一传出存储器事务中的第一指派的自有子系统标识符是以下中的一项:指示有效子系统的预先确定的值;以及指示第一传出存储器事务不具有相关联的自有子系统标识符的值。
此外,当随后的存储器访问然后被用于根据上下文描述符表的地址来访问存储器访问检查配置信息时,此类随后的存储器访问事务也可以由其自有子系统来标记。因此,在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息的接收:使存储器事务传输接口发出第二传出存储器事务以根据上下文描述符表的地址来访问存储器访问检查配置信息,其中根据流表的所选择条目的自有子系统标识符来确定第二传出存储器事务中的第二指派的自有子系统标识符。
以类似的方式,然后可使用另外的随后存储器访问来访问存储器区域属性表,并且该存储器访问事务也可由其自有子系统来标记。因此,在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息的接收:使存储器事务传输接口发出第三传出存储器事务以根据指示存储器区域属性表的地址的值来访问存储器区域属性表,其中根据流表的所选择条目的自有子系统标识符来确定第三传出存储器事务中的第三指派的自有子系统标识符。
存储器事务控制电路可以被布置为以多种不同的模式操作。例如,它可以被布置成具有非活动模式,其中上述对主控制寄存器中的流表和对至少一个子系统控制寄存器的访问不响应于接收到的存储器事务信息而发生。然而,在这样的状态下,该装置可能不是完全非活动的,并且在一些实施方案中,当装置被设置为处于非活动模式时,存储器事务控制电路进一步响应于存储器事务信息的接收,使得由存储器事务传输接口发出的所有传出存储器事务具有以下中的一项:指示有效子系统作为指派的自有子系统标识符的预先确定的值;以及指示事务不具有相关联的自有子系统标识符的值。
主控制寄存器和流表的条目中的任一者或两者还可用于提供用于配置传出存储器事务的另外配置参数(诸如,通过接收存储器事务信息触发的那些配置参数,例如以访问存储器中的各种配置数据)。因此,在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息的接收,使得由存储器事务传输接口发出的与所接收的存储器事务信息相关联的至少一个传出存储器事务根据以下中的至少一项来配置:主控制寄存器中的另外配置参数;以及流表的所选择的条目中的另外配置参数。类似地,子系统控制寄存器还可用于提供用于配置传出存储器事务的另外配置参数(诸如,通过接收存储器事务信息触发的那些配置参数,例如以访问存储器中的各种配置数据)。因此,在一些实施方案中,存储器事务控制电路进一步响应于存储器事务信息的接收,使得由存储器事务传输接口发出的与所接收的存储器事务信息相关联的至少一个传出存储器事务根据对应于多个子系统中的每个子系统的至少一个子系统控制寄存器中的另外配置参数来配置。存储器事务控制电路可以使用此类配置参数来引起对传入存储器事务的修改,该传入存储器事务在它们被转发之前通过它们的存储器访问规则检查。
某些子系统控制寄存器可用于控制对相应子系统执行的操作。此类子系统控制寄存器可被配置为存储子系统可读和可写数据(其可以包括子系统配置参数),但是也可被配置为使得对目标子系统控制寄存器内的至少一个地址的写入将代表该子系统触发一定的存储器相关操作。因此,在一些实施方案中,当寄存器写入事务指定对目标子系统控制寄存器内的至少一个地址的写入时,存储器事务控制电路进一步响应于寄存器写入事务的接收,使得作为对目标子系统控制寄存器内的至少一个地址的写入的结果而发起的所有操作受到与寄存器写入事务相关联的自有子系统标识符的限制。因此,无论由对该目标子系统控制寄存器的写入所触发的操作的性质如何,该操作然后都受到自有子系统标识符的约束,即,使得该操作可能仅对自有子系统造成影响,并被防止对任何其他子系统造成(直接)影响。在一些实施方案中,子系统控制寄存器可以是存储器映射的,并且寄存器写入事务可以包括以寄存器的地址为目标的存储器写入事务。在其他实施方案中,寄存器写入事务可包括可被不同地编码为存储器写入事务的寄存器专用写入事务。
如上所述,作为对目标子系统控制寄存器内的至少一个地址的写入的结果而发起的操作可以采取多种形式,但是在一些实施方案中,作为对目标子系统控制寄存器内的至少一个地址的写入的结果而发起的操作是高速缓存无效操作,并且其中该装置还包括高速缓存,并且高速缓存无效操作被限制为与自有子系统标识符相关联的高速缓存内容。因此,在该示例中,只有属于自有子系统的高速缓存内容将被无效化,而属于其他子系统的高速缓存内容将保持不被修改。在一些实施方案中,高速缓存可以包括用于高速缓存来自上下文描述符表的条目的上下文描述符高速缓存。替代地或附加地,一些实施方案可以包括用于高速缓存来自存储器区域属性表的条目的存储器区域属性表条目高速缓存。
在一些实施方案中,每个外围设备仅与单个流标识符相关联,该流标识符用于标记其生成的所有存储器事务。然而,其他实施方案规定,给定外围设备可与多个流标识符相关联。具有与一个外围设备相关联的多个流标识符允许外围设备在其代表例如完全分离(并且不相互信任)的系统部件执行的操作之间进行区分(在其发出的存储器事务方面),并且这因此支持这两个世界之间的分离和安全隔离。因此,在一些实施方案中,数据处理系统的至少一个外围设备是与多于一个流标识符相关联的多流标识符外围设备,其中多流标识符外围设备的多于一个流标识符与多流标识符外围设备的相互独立的操作相关联。例如,用于执行加密的外围设备(诸如专用密码加速器)可以代表各种系统部件,特别是代表不同的子系统来执行加密操作。因此,多个流标识符的这种使用支持该硬件的那些“用户”之间的安全隔离。
外围设备的相互独立的操作可以与相同子系统相关联,但也可以与不同子系统相关联。因此,在一些实施方案中,多流标识符外围设备的相互独立的操作各自与数据处理系统的多个子系统中的不同子系统相关联。
可以采用各种技术来保护主控制寄存器的完整性,但是在一些实施方案中,主控制寄存器还包括用以存储锁定位的锁定位存储装置,其中当锁定位具有预先确定的锁定位值时,不允许修改主控制寄存器的内容。因此,一旦锁定位具有预先确定的锁定位值,就确保主控制寄存器的内容的完整性。例如,在系统启动时,可信软件可以配置包括主控制寄存器的内容的系统配置,并且一旦它被正确配置,则可以最终将锁定位设置为预先确定的锁定位值。这可能意味着在启动时运行可信软件的处理元件(CPU)随后可用于运行不可信软件,而对主控制寄存器的内容的完整性没有任何风险。
存储器访问规则的执行可以以各种方式提供。例如,在一些实施方案中,存储器事务控制电路可以执行存储器访问规则,仅允许批准的存储器事务继续,并且阻止违反存储器访问规则的那些存储器事务。然而,在其他实施方案中,可提供一个或多个另外部件来进行该执行。因此,当存储器事务控制电路确定给定的存储器事务的适用存储器规则时,那些适用存储器规则由一个或多个另外部件执行。例如,在一些实施方案中,该装置还包括存储器事务滤波电路,其响应于存储器事务的接收,从存储器事务信息和存储器访问检查配置信息中确定是否批准存储器事务,并且当批准存储器事务时,存储器事务滤波电路被布置为修改存储器事务以包括自有子系统标识符。在存储器事务然后用其自有子系统标识符来标记的情况下,这然后为存储器事务的接收方提供了有效的机制来确定存储器事务是否应当继续进行。例如,该效率由流标识符不再需要由存储器事务携带的事实支持。
因此,根据此类布置,该装置可以是包括另外部件的数据处理系统的一部分,其中这些另外部件中的至少一个部件响应于其接收的存储器事务,来基于自有子系统标识符值对存储器事务进行滤波。例如,这种滤波可以保护给定的目标存储器设备,且部件由此充当防火墙。该另外部件然后还可以根据其在数据处理系统中的定位而具有其自身的配置数据集,对照该配置数据集来比较自有子系统标识符值,并确定是否应当允许其继续进行到目标存储器设备。因此,在一些实施方案中,存在一种数据处理系统,该数据处理系统包括如上所述的装置,并且还包括:用以在装置已修改存储器事务之后接收存储器事务的另外滤波设备,其中另外滤波设备包括:用以接收存储器事务的存储器事务接收接口,其中存储器事务指定指示存储器地址的至少一部分的值,以及指示自有子系统的自有子系统标识符值;访问配置存储装置;以及另外的存储器事务滤波电路,其响应于由存储器事务接收接口接收到存储器事务:当访问配置存储装置的内容指示具有指示自有子系统的自有子系统标识符值的存储器事务被批准访问与指示存储器地址的至少一部分的值相关联的存储器位置时,将存储器事务转发到目标存储器设备;以及当访问配置存储装置的内容不指示具有指示自有子系统的自有子系统标识符值的存储器事务被批准访问与指示存储器地址的至少一部分的值相关联的存储器位置时,阻止存储器事务进入目标存储器设备。
可根据系统要求以多种方式配置访问配置存储装置,但在一些实施方案中,访问配置存储装置的内容包括对目标存储器设备的每个自有子系统的访问权限。在一些实施方案中,访问配置存储装置的内容包括对每个自有子系统的目标存储器设备内的存储器区域的访问权限。
由存储器访问检查电路和防火墙执行的滤波的组合可以提供子系统内不同上下文的有效隔离和不同子系统之间的有效隔离。
在本文的一个示例中,存在一种控制数据处理系统中的存储器访问的方法,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该方法包括:
接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备的流标识符;
将指示流表的地址的值存储在主控制寄存器中,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;
将存储器访问检查配置信息存储在对应于多个子系统中的每个子系统的至少一个子系统控制寄存器中;以及
响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器;以及
导致根据存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则。
在本文的一个示例中,存在一种用于控制数据处理系统中的存储器访问的装置,其中数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,该装置包括:
用于接收由数据处理系统的外围设备发出的存储器事务的存储器事务信息的构件,其中存储器事务信息包括指示外围设备的流标识符;
用于将指示流表的地址的值存储在主控制寄存器中的构件,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;
用于将存储器访问检查配置信息存储在对应于多个子系统中的每个子系统的至少一个子系统控制寄存器中的构件;
用于响应于存储器事务信息的接收而根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目的构件;
用于选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器的构件;以及
用于导致根据传入存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则的构件。
在本文的一个示例中,存在一种计算机程序,该计算机程序用于控制主机数据处理装置来提供指令执行环境,其包括:
存储器访问控制逻辑,该存储器访问控制逻辑用于控制数据处理系统中的存储器访问,其中数据处理系统在操作时包括多个子系统,每个子系统包括处理元件逻辑的至少一个实例和外围设备逻辑的至少一个实例,存储器访问控制逻辑包括:
存储器事务检查逻辑,该存储器事务检查逻辑用以接收由数据处理系统的外围设备逻辑的实例发出的存储器事务的存储器事务信息,其中存储器事务信息包括指示外围设备逻辑的实例的流标识符;
主控制寄存器逻辑,该主控制寄存器逻辑用以存储指示流表的地址的值,其中流表包括多个条目,并且其中多个条目各自包括自有子系统标识符;以及
对应于多个子系统中的每个子系统的子系统控制寄存器逻辑的至少一个实例,子系统控制寄存器逻辑的至少一个实例用以存储存储器访问检查配置信息,
其中存储器事务检查逻辑响应于存储器事务信息的接收:
根据流标识符选择由指示流表的地址的值标识的流表的多个条目中的条目;
选择与由条目的自有子系统标识符标识的子系统相对应的子系统控制寄存器逻辑的至少一个实例;并且
导致根据所述存储器事务信息和存储在所选择的子系统控制寄存器逻辑的至少一个实例中的所述存储器访问检查配置信息来执行存储器访问规则。
现在将参考附图描述一些具体实施方案。
图1示意性地示出了一些示例性实施方案中的数据处理系统10。数据处理系统包括两个数据处理元件(即,处理器或CPU)12、14,它们经由系统互连器16连接到数据处理系统的其余部分。该系统互连器16通常提供互连,特别是向诸如SRAM 18和闪存存储器20之类的存储器设备提供对处理元件的访问。需注意,图1还示出了一组外围控制寄存器22,它们是存储器映射控制寄存器,并且因此可以由数据处理系统中的主设备(诸如处理元件)使用它们所映射到的存储器地址来寻址。在图1所示的示例中,这些存储器设备中的每一者经由防火墙设备24、26、28与系统互连器分离,该防火墙设备被布置为以下面将更详细描述的方式对试图访问相应连接的存储器设备的存储器事务进行滤波。闪存存储器设备20被示出为具有相关联的高速缓存30。处理元件12、14中的每一者被示出为还具有其自身的存储器保护单元(MPU)32、34,该存储器保护单元对照所定义的存储器访问规则检查由在相应处理元件上执行的软件生成的存储器事务。在图1中还示出了形成数据处理系统10的一部分的三个外围设备36、38、40。这些外围设备通过I/O互连器42连接。然后,I/O互连器42经由系统存储器保护/管理单元(SMPU/SMMU)44连接到系统互连器16。因此,SMPU/SMMU 44检查来自多个外围设备的存储器事务。这些外围设备的所有权和控制可以属于多个(可能相互不信任的)子系统。在图1的示例说明中,示出了两个子系统,一个(“子系统0”)基于处理元件12,而另一个(“子系统1”)基于处理元件14。如虚线46所示,子系统0包括处理元件12、外围设备36和外围设备38。如虚线48所示,子系统1包括处理元件14、外围设备40和外围设备38。因此,外围设备38由两个子系统共享。类似地,SRAM设备18、高速缓存30和闪存设备20以及外围控制寄存器22也由两个子系统共享。如下文将参考附图更详细地描述,从外围设备36、38、40进入SMPU/SMMU 44的存储器事务具有指示事务源自哪个外围设备的流ID。在一些情况下,例如在子系统之间共享外围设备的情况下(如在外围设备38的情况下),外围设备可具有与其相关联的多个流ID,使得可在每个相应子系统内的该外围设备的操作之间进行区分。应当认识到,数据处理数据系统10的所定义的子系统是数据处理系统在操作时的特征,在这种意义上,在数据处理系统启动之前,外围设备可以不必与任何特定子系统相关联,而是作为数据处理系统的启动的一部分,可以(通过可信软件)强加配置,该配置将外围设备分配给数据处理系统的子系统中的一个或多个子系统。
SMPU/SMMU 44使用与从外围设备中的一个外围设备接收的存储器事务相关联的流ID和存储器中的一系列表来确定适用于存储器事务的存储器访问规则。这些存储器映射表包括主控制寄存器,从该主控制寄存器确定在哪里找到流表,并且使用与存储器事务相关联的流ID来参考流表内的条目以导出与存储器事务相关联的自有子系统标识符。然后,自有子系统标识符还用于选择对应于该子系统的至少一个子系统控制寄存器,其中存储了与该存储器事务的存储器访问检查相关的各种配置信息。该配置信息可以(至少部分地)直接用于提供用于检查存储器事务的规则,并且可以(至少部分地)间接地使用,即通过指向用于检查存储器事务的规则被存储的另外存储位置。通过改变流表中的条目的自有子系统标识符,可以将相关联的流ID指派给不同的子系统。由于不同的外围设备与不同的流ID相关联,所以自有子系统标识符可以控制外围设备由哪个子系统拥有和控制。
图2示意性地示出了根据一些实施方案使用上面相对于图1提及的信息和表中的一些并使其交互的方式。传入存储器事务60(例如,如由图1的示例性配置中的SMPU/SMMU44接收)包含流ID 62。全局控制寄存器64(也可称为主控制寄存器)提供流表的存储器中的位置。如图2所示,这可以通过显式地保存流表基地址66的全局控制寄存器64来实现。然而,将认识到,流表的存储器中的位置可以以其他方式由全局控制寄存器64中的值提供,例如由缩写地址(但仍足以唯一地标识流表位置)或由指示将在何处找到流表的地址的指针提供。替代地,全局控制寄存器64可指定存储器中的流表的高位地址。然后访问存储在存储器中的流表68,由此与传入存储器事务60一起提供的流ID 62用于选择流表的多个条目中的一个条目。在图2所示的示例中,选择流表(“STE1”)的条目70。流表中的条目提供自有子系统标识符(“OSI”),其指示与生成传入存储器事务的外围设备相关联的子系统。基于该自有子系统标识符,然后访问子系统控制寄存器72(在数据处理系统中为每个子系统提供不同的子系统控制寄存器,并且实际上一些子系统可以具有多于一个子系统控制寄存器)。然后,子系统控制寄存器72提供配置信息,该配置信息定义必须针对存储器事务60进行的存储器访问检查。因此,该存储器访问检查配置信息74可以至少部分地由子系统控制寄存器72直接提供,但是也可以至少部分地通过参考存储在存储器中的存储器访问规则信息76来提供。该存储器访问规则信息76可以通过在存储器中给出其起始点的基地址来访问。图2示出了用于提供该基地址的两个替代方案。在第一示例中,基地址(“BA”)也被存储在被访问的流表68的流表条目70中。在第二示例中,基地址(“BA”)被存储在子系统控制寄存器72中。将再次认识到,存储器访问规则信息76的存储器中的位置可以以其他方式由除显式地址之外的值提供,例如由缩写地址(但仍足以唯一地标识存储器位置),由指示将在何处找到信息的地址的指针,或者由指定表的高位地址的值来提供。
执行上述SMMU/SMPU的作用的装置可以采取多种形式,其中一些形式在图3中示意性地示出。图3示意性地示出了异构数据处理系统100。示出了通常经由互连器104访问存储器102的一系列不同设备。复杂设备110包含其自有的内置存储器访问检查能力,包括嵌入式SMPU 112。两个外围设备114、116经由I/O互连器118连接到“独立”(单片)SMPU 120,它们生成的所有存储器事务经由该SMPU传递以便到达系统互连器104。外围设备122、124、126、128经由分布式SMPU 130连接到系统互连器104。SMPU 130的关键部件是控制和区域查找硬件132以及至少一个区域检查器134、136。区域检查器134和136在控制和区域查找硬件132的控制下,但是可以独立地执行一些存储器事务检查,其中这先前已经由控制和区域查找硬件132协调。先前检索的存储器访问规则和权限可存储在区域检查器134、136的相应高速缓冲存储器144、146中以促进将来对类似存储器事务的更快处理。因此,当区域检查器134、136中的一者接收到其已经具有可用的所需规则和权限的存储器事务时,它可以处理存储器事务检查,而无需进一步参考控制和区域查找硬件132。然而,对于其不具有可用的所需规则和权限的“新”存储器事务,必要的信息(特别是存储器事务的流ID和寻求访问的存储器地址)被传递到控制和区域查找硬件132,该控制和区域查找硬件然后以本文描述的方式参考一个或多个主控制寄存器和子系统控制寄存器以便导出所需的规则和权限,然后可以将该规则和权限传递回区域检查器以独立使用。外围设备122、124、126经由I/O互连器138连接到区域检查器134。外围设备128连接到区域检查器136。另外的“智能”设备140包括其自有的区域检查器142,该区域检查器仍然还与控制和区域查找硬件132相关联(并在其控制下)。因此,图3所示的数据处理系统100中的一系列不同外围设备共享对存储器102以及对存储器映射设备控制寄存器150的访问。所示SMPU的各种配置提供存储器访问检查能力,以确保正确地检查和控制由外围设备生成的有效存储器事务,即使相应外围设备属于数据处理系统中的多个子系统。外围设备到子系统的显式分配在图3中未示出,但是原则上可以为所示的操作数据处理系统定义任何数量的子系统,并且每个外围设备可以被分配给那些子系统中的一个或多个子系统。
如上面参考图3所提到的,本文所描述的技术可以由通常称为SMPU的系统部件以各种方式来执行。图3给出了可以提供这种SMPU的方式的各种示例,尤其包括分布式SMPU130。根据该布置,SMPU基本上有两个部分,第一部分具有对过程的总体控制(例如,控制和区域查找硬件130),第二部分被布置为执行特定存储器访问检查任务(例如区域检查器134、136、142)。图4提供了以这种方式实现任务的细分的示例性实施方案。传入存储器事务200(包括流ID 202)由存储器访问检查电路204接收。存储器访问检查电路204包括高速缓存206,其中存储了先前所需的存储器访问检查参数。参考传入存储器事务的参数,特别是其流ID 202和访问寻求的存储器地址,存储器访问检查电路204首先在其高速缓存206中查找所需的存储器访问检查参数当前是否存储在那里。当它们存储在那里时,存储器访问检查电路204执行由相对于输入存储器事务的那些参数定义的存储器访问规则。因此,如果传入存储器事务200违反了那些存储器访问规则,则该传入存储器事务可被阻止,或者如果该传入存储器事务满足那些存储器访问规则,则该传入存储器事务可被允许通过。来自存储器访问检查电路204的传出存储器事务208包括子系统标识符210(最初如下所述由存储器事务控制电路214的动作确定)。当存储器访问检查电路204及其高速缓存206的查找导致未命中时,存储器访问检查电路204将存储器事务信息212传递到存储器事务控制电路214。存储器事务信息212包括要确定的存储器访问检查参数的必要信息,并且因此包括流ID 202和传入存储器事务200正寻求访问的地址。响应于存储器事务信息212的接收,存储器事务控制电路参考全局控制寄存器216以便确定流表的基地址。然后,存储器事务控制电路214生成其自身的存储器事务,以便提取流表的条目的内容。所提取的特定条目由流ID 202确定。然后根据返回的信息(包括自有子系统标识符),存储器事务控制电路214然后参考所选择的子系统控制寄存器218,以便检索适用于所接收的存储器事务200的存储器访问检查配置信息。在一些实施方案中,该配置信息可以提供定义所需的存储器访问规则220所需的所有信息,该信息然后可以被传递回存储器访问检查电路204(并存储在高速缓存206中)。然而,在图4所示的实施方案中,所选择的子系统控制寄存器218提供存储在存储器中的上下文描述符表的基地址。因此,存储器事务控制电路214然后再次生成其自身的存储器事务,以便从上下文描述符表中提取特定上下文描述符的内容。实际上,在图4的示例中,所接收的上下文描述符的内容提供两个参数:MPU区域属性表基地址和属性表大小。因此,该信息定义了为了检索这些所需属性而应当访问的存储器块。这也是通过存储器事务控制电路214生成另一存储器事务以便检索这些属性来完成的。一旦这样检索,这些属性就定义了存储器访问规则220,其被传递回存储器访问检查电路204并存储在其高速缓存206中。还需注意,由存储器事务控制电路214生成的存储器事务222还包括子系统标识符224。虽然存在与数据处理系统中的每个定义的子系统相关联的唯一的子系统标识符,但是也存在特定子系统标识符,该特定子系统标识符被系统用来标识与比与子系统中的任一个子系统相关联的系统特权级别更高的系统特权级别相关联的存储器事务。在诸如图4所示的一些示例性实施方案中,这是为零的子系统ID。因此,对由存储器事务控制电路214生成的流表的访问具有为零的子系统标识符。在流表由数据处理系统中具有上述比子系统中的任一个子系统更高的系统特权级别的实体拥有和保护的情况下,那些子系统(其仅能使具有与它们相关联的其自有子系统标识符的存储器访问请求被转发)不能修改流表,这可以通过滤波并且仅允许具有零的子系统标识符的写入事务到达它来保护。随后,上述对上下文描述符表和MPU区域属性表的访问利用具有根据从所接收的存储器事务的流表导出的自有子系统标识符的子系统标识符的存储器事务来进行。
图5示意性地示出了一些示例性实施方案中的装置。此处,存储器事务控制电路被体现为SMPU 250。SMPU 250被布置为接收传入的存储器事务252(具有相关联的流标识符254)。SMPU 250如何处理该传入存储器事务252取决于其当前操作模式。SMPU 250具有两种模式:活动模式和非活动模式。SMPU 250以哪种模式操作是由SMPU 250接收的信号(“活动/非活动”)定义的,并且源自可信系统实体(诸如全局控制寄存器64)。该信号可替代地被认为是启用/禁用信号。然而,重要的是需注意,当SMPU 250处于其非活动模式(或“禁用”)时,这并不意味着它对于传入存储器事务252是完全透明的。具体地,当SMPU 250处于其非活动模式时,通过它的所有存储器事务被给予零的子系统标识符。如在相对于图4描述的示例性实施方案中,该子系统标识符与数据处理系统中的实体相关联,该实体在比子系统中的任一个子系统更高的特权级别下操作。因此,应当理解,SMPU 250的非活动模式是特殊配置,当SMPU 250活动时,该配置不提供随后的子系统之间的通常保护。SMPU 250包括SMPU控制电路256,该SMPU控制电路接收活动/非活动信号,并在此基础上控制传入存储器事务通过设备采取两个路径中的哪一个路径。当启用SMPU 250时,传入存储器事务252由存储器事务控制电路258处理,该存储器事务控制电路例如可以以图4的存储器事务控制电路214的上述方式来操作。相反,当SMPU 250被禁用时,传入存储器事务252经由非活动模式控制电路260传递,该非活动模式控制电路重新格式化传入存储器事务以使子系统标识符为零(而不是其在接收时所具有的流ID 254中的任何一个)。应当理解,可以使用不同于零的另一预先确定的值,因为该值本身不是关键的。因此,当SMPU 250活动时,存储器事务控制电路258生成具有根据本文所述的技术(通过参考流表、上下文描述符表等)确定的相关联子系统标识符264的传出存储器事务262,并且当SMPU 250处于非活动模式时,控制260致使通过SMPU的存储器事务映射到零的子系统标识符,使得传出存储器事务266进一步通过,其中将子系统标识符268设置为零。应当理解,在一些实施方案中,当SMPU 250是活动的和非活动的时,可以有一条通过SMPU 250的路径,并且事务可以通过存储器事务控制电路258。在这样的实施方案中,当SMPU为非活动的时,可以禁用存储器事务控制电路258,使得不应用存储器访问规则,并且所指派的子系统ID默认为零,而不是从流表中的条目导出。因此,虽然电路的组织可以不同,但是当SMPU 250为活动和非活动时处理事务的方式可以与图5所示的相同。
图6是示出根据本技术的示例性方法实施方案的步骤序列的流程图。当接收到存储器事务信息时,流程开始于步骤300。从以上对图3和4的讨论中可以理解,接收该存储器事务信息的实体也可以是存储器事务本身的接收方,但这不是必须的情况,并且单独的实体可能已经接收了存储器事务并传递了相关的存储器事务信息。在接收到存储器事务信息之后,在步骤302处,访问主(全局)控制寄存器以便确定流表的基地址。由于该信息存储在全局控制寄存器中,所以它不能被(可能相互不信任的)子系统改变。类似地,与流表68相关联的存储器地址可能不可由(可能相互不信任的)子系统写入。这又意味着流表的条目中的值也可以被信任。因此,在步骤304处,根据形成所接收的存储器事务信息的一部分的流ID来访问流表,以便选择其中的特定条目。流表条目包括定义作为存储器事务的起源的外围设备所属的子系统的自有子系统字段。然后,该自有子系统字段用于确定应该使用哪个子系统控制寄存器来管理剩余的事务检查。因此,在步骤306处,根据所选择的流表条目中的自有子系统标识符来访问所选择的子系统控制寄存器。该选择的子系统控制寄存器的内容提供所需存储器访问检查配置信息的至少一部分,并且这在步骤308处检索。如本文别处所述,这可以包括定义由所选择的子系统控制寄存器的内容直接提供的所需存储器访问规则的一些信息,但是也可以包括经由例如对上下文描述符表和MPU区域属性表的进一步访问而导出的所需信息。因此,在图6的最后步骤310中,实施对存储器事务的对应存储器访问规则的执行。再次提到,存储器事务的接收方可以是或者可以不是执行上述步骤300-308的实体,并且因此存储器访问规则的执行可以由执行步骤300-308的相同实体来进行,或者一旦确定了相关的存储器规则,就可以将它们发信号通知回存储器事务的单独接收方以便执行。
图7示意性地示出了根据一些实施方案的为了导出存储器访问规则信息并且然后访问指定的存储器地址(当存储器访问规则如此允许时)而进行的级联查找过程。基于流表基地址(由全局控制寄存器直接或间接提供),对流表400进行访问。根据存储器事务的流ID,选择流表400中的条目,其在图7所示的示例中是条目401(STE 1)。流表条目提供自有子系统标识符(OSI),并且在图7所示的替代方案之一中提供上下文描述符表的基地址。在其他实施方案中,上下文描述符表的位置可由指定表的顶部的地址的条目或仍唯一地标识表的位置的部分地址来标识。然而,图7还示出了替代方案(虚线),根据该替代方案,由子系统控制寄存器402提供上下文描述符表基地址(或标识上下文描述符表的位置的其他值)(该特定子系统控制寄存器已经基于STE1所指示的OSI而被选择)。然后访问上下文描述符表,其中根据形成所接收的存储器事务的一部分的子流标识符来选择上下文描述符表中的条目403(上下文描述符CD)。外围设备使用子流标识符来区分它们可以生成存储器事务的不同上下文。在图7所示的示例中,选择上下文描述符403(CD1)。此处所选择的上下文描述符的内容提供页目录基地址,通过该地址可以访问页表分级结构。以类似于其他存储器位置指定值的方式,替代地可指定页目录顶部的地址,并且/或者可使用仍唯一地识别页目录的部分地址。然后以通常的方式遍历页表分级结构,由此使用所接收的存储器地址的部分,以便确定通过页表分级结构所采取的“路径”。因此,如图7所示,存储器地址的第一部分405用于从页目录406确定页目录条目409,其中页目录条目指向页表408中的页表条目。(虚拟)存储器地址的第二部分408用于从页表条目410中选择权限数据集,并且页表条目410进一步指示4kB页411,由此存储器地址的最终部分412用于在该4kB页内选择给出地址转换的条目(即,要访问的物理地址413,假定权限允许该存储器事务继续进行)。为清楚起见,图7示出了仅具有两个查找级别的简化页表分级结构,并且应当理解,较深页表分级结构可用于处理较宽存储器地址。
图8A示意性地示出了根据一些实施方案的为了导出存储器访问规则信息而进行的级联查找过程。基于流表基地址(由全局(主)控制寄存器直接或间接提供),对流表450进行访问。根据存储器事务的流ID,选择流表450中的条目,其在图8A所示的示例中是条目451(STE 1)。流表条目提供自有子系统标识符(OSI),并且在图8A所示的替代方案之一中提供上下文描述符表的基地址(或唯一地标识存储器中的位置的其他值)。然而,图8A示出了替代方案(虚线),根据该替代方案,由子系统控制寄存器452提供上下文描述符表基地址(或唯一地标识存储器中的位置的其他值)(该特定子系统控制寄存器已经基于STE1所指示的OSI而被选择)。然后访问上下文描述符表460,其中根据存储器事务的子流标识符来选择上下文描述符表中的条目461(上下文描述符CD)。在图8A所示的示例中,选择上下文描述符461(CD1)。此处所选择的上下文描述符的内容提供MPU区域表基地址462和表大小463(或标识表的位置和大小的其他值,例如底部和顶部地址)。使用该信息,访问MPU区域属性表465,从中导出两个数据项:指定的MPU区域基地址寄存器(RBAR)有效载荷和指定的MPU区域限制地址寄存器(RLAR)有效载荷。根据此处使用的方案,单个MPU区域由从RBAR导出的低位地址以及从RLAR导出的高位地址定义。在一些实施方案中,RBAR和RLAR有效载荷还可以包含应用于由基地址和极限地址指定的存储器区域的权限信息。这样,RBAR和RLAR值的组合可以指定存储器区域和与其相关联的权限。如何执行MPU区域查找的更多细节可以在英国专利公布2575878中找到。
图8B示意性地示出了根据一些示例性实施方案的方式,其中定义存储器访问规则集合的配置数据可以以分级方式被收集,因为全局(主)控制寄存器、流表、子系统控制寄存器、上下文描述符和MPU区域属性表被按顺序访问。因此,当访问全局控制寄存器500时(为了确定流表的基地址),全局控制寄存器500还可提供将应用于所有存储器事务的其他全局配置参数501。接下来,当基于流标识符访问流表中的流表条目502时,流表条目还可以提供将在该子系统的控制下应用于所有存储器事务的另外子系统配置参数503。此后,当基于子流标识符访问上下文描述符504时,上下文描述符还可以提供应用于来自外围设备的该子流的所有存储器事务的另外的子流特定配置参数505。根据从流表条目获得的自有子系统标识符,可以从子系统控制寄存器509访问附加的子系统特定配置参数510。最后,访问MPU区域属性表506,从而提供适用于存储器事务的权限信息507。因此,要应用于存储器事务的存储器访问权限的完整集合508可以从多个源导出,其中这些源是分级布置的。这种收集配置参数的方式的分级性质可以确定在分级结构中何处提供配置信息的特定项是适当的。通过使用全局配置参数501获得了大部分存储效率,但是由于应用于所有存储器事务,这些参数具有最小的粒度。在频谱的另一端,特定权限信息507具有最精细的粒度,但是这需要更大的存储,因为这样的权限数据507是为每个定义的MPU区域存储的。
图8C示意性地示出了在一些实施方案中使用存储器映射子系统控制寄存器地址来控制高速缓存维护操作。这被布置为由处理元件(CPU)520发出的到存储器映射子系统控制寄存器的存储器事务由SMPU 521接收。SMPU用作其存储器访问控制活动的一部分的存储器映射子系统控制寄存器中的一者是子系统1控制寄存器524(即,其被额定为控制数据处理系统的子系统1内的设备)。子系统1控制寄存器524内的一些存储器地址用于控制与子系统1相关的各种存储器操作。在图8C所示的示例中,一个这样的地址(高速缓存无效525)被布置成触发该子系统的高速缓存无效操作。具体地,当对该地址进行写入时(与名义上与该写入相关联的任何“写入数据”无关),触发高速缓存操作。该过程在图8C中示出,其中处理元件520发送指定此子系统1高速缓冲存储器无效地址525的写入存储器事务。子系统1控制寄存器524处理该存储器事务,并且被转发到高速缓存526的存储器事务用标识子系统1的自有子系统标识符来标记(因为存储器事务以与子系统1相关联的存储器映射寄存器的地址为目标)。高速缓存526被示为保存与子系统0相关联的条目528,与子系统1相关联的条目529以及与子系统2相关联的条目530。然后,高速缓存526的高速缓存控制电路527确保只有与子系统1相关联的那些条目529被无效化。在一些实施方案中,如果访问不是源自与子系统1或另一可信处理实体相关联的处理元件,则系统的其他部分(例如图1中的防火墙设备28)可以阻止对子系统1的子系统控制寄存器的访问。
图9示意性地示出了一些实施方案中的电路处理可以与存储器事务一起提供的子流ID的方式。示出了事务处理电路550,其可以是独立的设备并形成另一设备的一部分,或者可以是本文描述的SMPU的任何形式的一部分(例如如图3所示)。传入存储器事务552被示为包括流ID 553、子流ID 554和子流ID有效性位555。这些信息项由存储器事务处理电路550的流ID和子流ID处理电路560接收。所执行的流ID处理通常如本文别处所述,即,存储器事务处理电路550参考使用流ID 553来选择特定流表条目的流表,这为该存储器事务提供自有子系统标识符。此处,流ID和子流ID处理电路560还接收子流ID 554和子流ID有效性位555。因此,子流ID有效性位555可以被系统用来控制子流ID 554对于该存储器事务是否应当被认为是有效的。当子流ID有效性位555指示子流ID 554有效时,则不修改它,而当子流ID有效性位555指示子流ID 554无效时,则替换固定子流ID 561(其在一些实施方案中为零)。因此,传出存储器事务570包括自有子系统标识符571和子流ID 572,其中子流ID 572可以与子流ID 554相同(子流ID是有效的),其可以被设置为预先确定的值(子流ID是无效的)。在一些实施方案中,修改的子流ID值可能仅在存储器事务处理电路内部需要,以便执行对存储器访问规则的检查。在此类实施方案中,子流ID可以从传出存储器事务中剥离,以减少系统互连器16中所需的信号数量。
图10示意性地示出了根据一些实施方案的全局(主)控制寄存器600的配置。在该示例中,全局控制寄存器600被示为保存流表基地址601和全局配置参数602的集合。如图所示,流表基地址提供了对流表的访问,而全局配置参数可以应用于SMPU 44处理的存储器事务,或者以其他方式影响SMPU的操作。全局控制寄存器600进一步被示出为包括锁定位603。该锁定位与全局控制寄存器的任何(尝试的)内容修改相关联地使用,无论该修改是试图修改流表基地址601还是全局配置参数602。通常,全局控制寄存器的内容的修改仅在全局控制寄存器形成其一部分的数据处理系统最初由在高系统特权级别下操作的数据处理系统内的可信实体配置时发生。需注意,锁定位603用于选通任何尝试的内容修改,在图10中由与门604表示。因此,只有当锁定位603具有预先确定的值(例如,比方说0)时,才可以修改全局控制寄存器的内容,该锁定位被布置为在数据处理系统被首次初始化时具有该预先确定的值。还需注意,设置锁定位603的路径来自全局配置参数602中的一者。该配置规定,最初可信系统实体可以为期望的数据处理系统的后续操作适当地配置流表基地址601和全局配置参数602,但是作为对全局配置参数的最终修改,作为其初始化配置动作的一部分,可信系统实体修改锁定位603。具体地,它将其重写为具有其“锁定”值(例如,1以继续上述示例)。因此,这意味着不可能进一步修改流表基地址601和全局配置参数602(并且实际上修改锁定位603)。改变这些参数的唯一方式是重新启动完整的系统初始化。这提供了一种机制,通过该机制,即使最初设置全局控制寄存器600的处理元件随后用于执行不可信软件,全局控制寄存器600的内容在数据处理系统的操作期间在使用中也可以被信任。
图11示意性地示出了根据一些实施方案的数据处理系统中的防火墙设备的配置。系统互连器650被示出为经由防火墙设备660连接到存储器设备670。因此,防火墙设备660相对于由系统互连器650传送的访问来保护存储器设备670。参考图1,防火墙设备24、26、28中的任一者可以根据针对防火墙设备660示出的示例布置来配置。由防火墙设备660从系统互连器650接收的存储器事务661包括存储器地址662(将在存储器装置670内找到)和自有子系统标识符663。在一些实施方案中,由防火墙设备660接收的存储器地址是(由系统互连器650)从先前由处理元件或SMPU呈现给系统互连器650的存储器地址导出的。该导出可包括执行地址解码以及从地址移除不再需要的位。因此,防火墙接收的所得地址可以相对于存储器设备670的基地址,而不是完全物理地址。防火墙设备660的滤波电路665利用这两个数据项来确定是否应该允许存储器事务661进行到存储器设备670。滤波设备665使该确定基于存储在访问配置存储装置666中的信息。因此,该访问配置存储装置666可以定义可以由某些自有子系统访问(并且可以不由其他子系统访问)的存储器地址的范围。访问配置存储装置还可以(替代或附加地)存储每个子系统的权限,即简单地定义哪些子系统可以(完全)访问存储器设备670。因此,滤波电路665确定对于自有子系统663是否允许对存储器地址662的访问,并且在此基础上,滤波电路控制选通668,该选通阻止存储器事务或允许它继续到存储器设备670。因此需注意,防火墙设备660仅需要基于子系统标识符进行滤波,而不需要知道外围设备与其自有子系统的关系。这简化了该部件的配置并减少了需要在系统互连上承载的位数。
图12示出了可使用的模拟器具体实施。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可在支持模拟器程序710的主机处理器730上运行,该主机处理器任选地运行主机操作系统720。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。在一些实施方案中,模拟器还可以模拟系统以伴随模拟的处理器,其中模拟的系统可以包括系统互连器、存储器、外围设备和SMPU或SMMU,它们要么不存在于主机硬件730中,要么不具有在模拟环境中运行客户操作系统和/或应用程序700所需的所有特征。模拟概述在以下文献中给出:“Some EfficientArchitecture Simulation Techniques”,Robert Bedichek,Winter 1990 USENIXConference,第53-63页。
就先前已参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能可由合适的软件构造或特征提供。例如,特定电路可在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存可在模拟的实施方案中被实现为软件数据结构。在先前描述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器730)上的布置中,在合适的情况下,一些模拟的实施方案可利用主机硬件。
模拟器程序710可存储在计算机可读存储介质(其可以是非暂态介质)上,并且向目标代码700(其可包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与由模拟器程序710建模的硬件架构的接口相同。因此,可以使用模拟器程序710从指令执行环境内执行目标代码700的程序指令,包括导致从如上所述的(模拟的)外围设备生成存储器事务的那些程序指令,使得实际上不具有上述装置(例如,SMPU)的硬件特征的主机计算机730可以模拟这些特征。
简而言之,公开了用于控制数据处理系统中的存储器访问的装置、方法和技术。操作数据处理系统包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备。存储器事务控制电路接收包括指示发出外围设备的流标识符的存储器事务的存储器事务信息。主控制寄存器指示具有多个条目的流表的地址,每个条目包括自有子系统标识符。对应于多个子系统中的每个子系统的至少一个子系统控制寄存器存储存储器访问检查配置信息。在接收到存储器事务信息时,根据流标识符选择流表的条目。选择与由条目的自有子系统标识符标识的子系统相对应的至少一个子系统控制寄存器。然后导致根据存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的存储器访问检查配置信息来执行存储器访问规则。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征一起进行各种组合。

Claims (24)

1.一种用于控制数据处理系统中的存储器访问的装置,其中所述数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,所述装置包括:
存储器事务控制电路,所述存储器事务控制电路用以接收由所述数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中所述存储器事务信息包括指示所述外围设备的流标识符;
主控制寄存器,所述主控制寄存器用以存储指示流表的地址的值,其中所述流表包括多个条目,并且其中所述多个条目各自包括自有子系统标识符;以及
对应于所述多个子系统中的每个子系统的至少一个子系统控制寄存器,所述至少一个子系统控制寄存器用以存储存储器访问检查配置信息,
其中所述存储器事务控制电路响应于所述存储器事务信息的接收:
根据所述流标识符选择由指示所述流表的所述地址的所述值标识的所述流表的所述多个条目中的条目;
选择与由所述条目的所述自有子系统标识符标识的所述子系统相对应的至少一个子系统控制寄存器;以及
导致根据所述存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的所述存储器访问检查配置信息来执行存储器访问规则。
2.根据权利要求1所述的装置,其中所述存储器访问规则的所述执行进一步依赖于附加存储器访问检查配置信息,其中所述附加存储器访问检查配置信息包括:
上下文描述符表,其中所述上下文描述符表具有多个上下文描述符,每个上下文描述符包括指示存储器区域属性表的所述地址的值;以及
存储器区域属性定义,所述存储器区域属性定义由所述存储器事务控制电路根据指示存储器区域属性表的所述地址的所述值来访问,
其中所述上下文描述符表的所述地址是根据以下中的一项来确定的:
所述流表的所选择条目中的另外值;以及
所选择的至少一个子系统控制寄存器中的另外值。
3.根据权利要求2所述的装置,其中所述存储器事务信息还包括指示所述存储器事务的所述外围设备中的始发上下文的子流标识符,并且其中根据指示上下文描述符表的所述地址的所述值来访问所述附加存储器访问检查配置信息包括:
根据所述子流标识符从由指示上下文描述符表的所述地址的所述值标识的所述上下文描述符表中选择上下文描述符;
从所选择的上下文描述符中检索指示存储器区域属性表的所述地址的所述值;以及
访问由指示所述存储器区域属性表的所述地址的所述值标识的存储器区域属性表以检索所述存储器区域属性定义中的至少一个存储器区域属性定义。
4.根据权利要求3所述的装置,其中在所述上下文描述符表中选择的所述上下文描述符还存储指示存储器区域属性表大小的值,并且访问所述存储器区域属性表包括访问由指示存储器区域属性表的所述地址的所述值和指示所述存储器区域属性表大小的所述值定义的存储器区域。
5.根据权利要求4所述的装置,其中所检索的至少一个存储器区域属性定义包括包含权限信息的附加存储器访问规则信息,并且所检索的至少一个存储器区域属性定义还包括指示所述存储器区域的开始和结束地址的值。
6.根据权利要求3至5中任一项所述的装置,其中由指示存储器区域属性表的所述地址的所述值标识的所述存储器区域属性表形成页表分级结构的一部分,并且所述附加存储器访问规则信息包括在所述页表分级结构中定义的权限信息。
7.根据权利要求3至6中任一项所述的装置,其中所述存储器事务控制电路进一步响应于所述存储器事务信息中的子流标识符有效性标记,当所述子流标识符有效性标记指示所述子流标识符的无效性时,根据预先确定的子流标识符来执行所述上下文描述符表中所述条目的选择。
8.根据任一项前述权利要求所述的装置,还包括存储器事务传输接口以发出以所述数据处理系统的数据存储设备为目标的传出存储器事务,
其中所述传出存储器事务包括所指派的自有子系统标识符。
9.根据权利要求8所述的装置,其中所述存储器事务控制电路进一步响应于所述存储器事务信息的接收:
使所述存储器事务传输接口发出第一传出存储器事务以访问所述流表,其中所述第一传出存储器事务中的第一指派的自有子系统标识符是以下中的一项:
指示有效子系统的预先确定的值;以及
指示所述第一传出存储器事务不具有相关联的自有子系统标识符的值。
10.根据权利要求8所述的装置,其中所述存储器事务控制电路进一步响应于所述存储器事务信息的接收:
使所述存储器事务传输接口发出第二传出存储器事务以根据所述上下文描述符表的所述地址来访问所述存储器访问检查配置信息,其中根据所述流表的所选择条目的所述自有子系统标识符来确定所述第二传出存储器事务中的第二指派的自有子系统标识符。
11.根据权利要求8所述的装置,其中当所述装置被设置为处于非活动模式时,所述存储器事务控制电路进一步响应于所述存储器事务信息的接收,使得由所述存储器事务传输接口发出的所有传出存储器事务具有以下中的一项:
指示有效子系统作为所指派的自有子系统标识符的预先确定的值;以及
指示所述事务不具有相关联的自有子系统标识符的值。
12.根据权利要求8至11中任一项所述的装置,其中所述存储器事务控制电路进一步响应于所述存储器事务信息的接收,使得由所述存储器事务传输接口发出的与所接收的存储器事务信息相关联的至少一个传出存储器事务根据以下中的至少一项来配置:
所述主控制寄存器中的另外配置参数;以及
所述流表的所选择条目中的另外配置参数。
13.根据任一项前述权利要求所述的装置,其中当寄存器写入事务指定对目标子系统控制寄存器内的至少一个地址的写入时,所述存储器事务控制电路进一步响应于所述寄存器写入事务的接收,使得作为对所述目标子系统控制寄存器内的所述至少一个地址的所述写入的结果而发起的所有操作受到与所述目标子系统控制寄存器相关联的所述自有子系统标识符的限制。
14.根据权利要求13所述的装置,其中作为对所述目标子系统控制寄存器内的所述至少一个地址的所述写入的结果而发起的操作是高速缓存无效操作,并且其中所述装置还包括高速缓存,并且所述高速缓存无效操作被限制为与所述自有子系统标识符相关联的高速缓存内容。
15.根据任一项前述权利要求所述的装置,其中所述数据处理系统的至少一个外围设备是与多于一个流标识符相关联的多流标识符外围设备,其中所述多流标识符外围设备的所述多于一个流标识符与所述多流标识符外围设备的相互独立的操作相关联。
16.根据权利要求15所述的装置,其中所述多流标识符外围设备的所述相互独立的操作各自与所述数据处理系统的所述多个子系统中的不同子系统相关联。
17.根据任一项前述权利要求所述的装置,其中所述主控制寄存器还包括用以存储锁定位的锁定位存储装置,其中当所述锁定位具有预先确定的锁定位值时,不允许修改所述主控制寄存器的内容。
18.根据任一项前述权利要求所述的装置,还包括存储器事务滤波电路,所述存储器事务滤波电路响应于所述存储器事务的接收,从所述存储器事务信息和所述存储器访问检查配置信息中确定是否批准所述存储器事务,并且
当批准所述存储器事务时,所述存储器事务滤波电路被布置为修改所述存储器事务以包括所述自有子系统标识符。
19.一种数据处理系统,所述数据处理系统包括根据权利要求18所述的装置,还包括:
用以在所述装置已修改所述存储器事务之后接收所述存储器事务的另外滤波设备,其中所述另外滤波设备包括:
用以接收所述存储器事务的存储器事务接收接口,其中所述存储器事务指定指示存储器地址的至少一部分的值,以及指示自有子系统的自有子系统标识符值;
访问配置存储装置;以及
另外的存储器事务滤波电路,所述另外的存储器事务滤波电路响应于由所述存储器事务接收接口接收到所述存储器事务:
当所述访问配置存储装置的内容指示具有指示所述自有子系统的所述自有子系统标识符值的存储器事务被批准访问与指示存储器地址的至少一部分的所述值相关联的存储器位置时,将所述存储器事务转发到目标存储器设备;以及
当所述访问配置存储装置的所述内容不指示具有指示所述自有子系统的所述自有子系统标识符值的存储器事务被批准访问与指示存储器地址的至少一部分的所述值相关联的所述存储器位置时,阻止所述存储器事务进入所述目标存储器设备。
20.根据权利要求19所述的装置,其中所述访问配置存储装置的所述内容包括对所述目标存储器设备的每个自有子系统的访问权限。
21.根据权利要求19或权利要求20所述的装置,其中所述访问配置存储装置的所述内容包括对每个自有子系统的所述目标存储器设备内的存储器区域的访问权限。
22.一种控制数据处理系统中的存储器访问的方法,其中所述数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,所述方法包括:
接收由所述数据处理系统的外围设备发出的存储器事务的存储器事务信息,其中所述存储器事务信息包括指示所述外围设备的流标识符;
将指示流表的地址的值存储在主控制寄存器中,其中所述流表包括多个条目,并且其中所述多个条目各自包括自有子系统标识符;
将存储器访问检查配置信息存储在对应于所述多个子系统中的每个子系统的至少一个子系统控制寄存器中;以及
响应于所述存储器事务信息的接收:
根据所述流标识符选择由指示所述流表的所述地址的所述值标识的所述流表的所述多个条目中的条目;
选择与由所述条目的所述自有子系统标识符标识的所述子系统相对应的至少一个子系统控制寄存器;以及
导致根据所述存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的所述存储器访问检查配置信息来执行存储器访问规则。
23.一种用于控制数据处理系统中的存储器访问的装置,其中所述数据处理系统在操作时包括多个子系统,每个子系统包括至少一个处理元件和至少一个外围设备,所述装置包括:
用于接收由所述数据处理系统的外围设备发出的存储器事务的存储器事务信息的构件,其中所述存储器事务信息包括指示所述外围设备的流标识符;
用于将指示流表的地址的值存储在主控制寄存器中的构件,其中所述流表包括多个条目,并且其中所述多个条目各自包括自有子系统标识符;
用于将存储器访问检查配置信息存储在对应于所述多个子系统中的每个子系统的至少一个子系统控制寄存器中的构件;
用于响应于所述存储器事务信息的接收而根据所述流标识符选择由指示所述流表的所述地址的所述值标识的所述流表的所述多个条目中的条目的构件;
用于选择与由所述条目的所述自有子系统标识符标识的所述子系统相对应的至少一个子系统控制寄存器的构件;以及
用于导致根据所述传入存储器事务信息和存储在所选择的至少一个子系统控制寄存器中的所述存储器访问检查配置信息来执行存储器访问规则的构件。
24.一种计算机程序,所述计算机程序用于控制主机数据处理装置来提供指令执行环境,并且包括:
存储器访问控制逻辑,所述存储器访问控制逻辑用于控制数据处理系统中的存储器访问,其中所述数据处理系统在操作时包括多个子系统,每个子系统包括处理元件逻辑的至少一个实例和外围设备逻辑的至少一个实例,所述存储器访问控制逻辑包括:
存储器事务检查逻辑,所述存储器事务检查逻辑用以接收由所述数据处理系统的外围设备逻辑的实例发出的存储器事务的存储器事务信息,其中所述存储器事务信息包括指示外围设备逻辑的所述实例的流标识符;
主控制寄存器逻辑,所述主控制寄存器逻辑用以存储指示流表的地址的值,其中所述流表包括多个条目,并且其中所述多个条目各自包括自有子系统标识符;以及
对应于所述多个子系统中的每个子系统的子系统控制寄存器逻辑的至少一个实例,子系统控制寄存器逻辑的所述至少一个实例用以存储存储器访问检查配置信息,
其中所述存储器事务检查逻辑响应于所述存储器事务信息的接收:
根据所述流标识符选择由指示所述流表的所述地址的所述值标识的所述流表的所述多个条目中的条目;
选择与由所述条目的所述自有子系统标识符标识的所述子系统相对应的子系统控制寄存器逻辑的至少一个实例;以及
导致根据所述存储器事务信息和存储在所选择的子系统控制寄存器逻辑的至少一个实例中的所述存储器访问检查配置信息来执行存储器访问规则。
CN202180022688.1A 2020-03-31 2021-02-08 控制具有多个子系统的数据处理系统中的存储器访问 Pending CN115298655A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2004671.0A GB2593716B (en) 2020-03-31 2020-03-31 Controlling memory access in a data processing systems with multiple subsystems
GB2004671.0 2020-03-31
PCT/GB2021/050278 WO2021198635A1 (en) 2020-03-31 2021-02-08 Controlling memory access in a data processing systems with multiple subsystems

Publications (1)

Publication Number Publication Date
CN115298655A true CN115298655A (zh) 2022-11-04

Family

ID=70553433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180022688.1A Pending CN115298655A (zh) 2020-03-31 2021-02-08 控制具有多个子系统的数据处理系统中的存储器访问

Country Status (7)

Country Link
US (1) US12067263B2 (zh)
EP (1) EP4127949B1 (zh)
JP (1) JP2023519843A (zh)
KR (1) KR20220158831A (zh)
CN (1) CN115298655A (zh)
GB (1) GB2593716B (zh)
WO (1) WO2021198635A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210095B2 (en) * 2018-08-24 2021-12-28 Texas Instruments Incorporated Resource allocation in a multi-processor system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8055827B2 (en) * 2009-01-26 2011-11-08 Advanced Micro Devices, Inc. Guest interrupt controllers for each processor to aid interrupt virtualization
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US10037288B2 (en) * 2016-04-01 2018-07-31 Intel Corporation Memory protection at a thread level for a memory protection key architecture
GB2575878B (en) 2018-07-27 2021-06-09 Advanced Risc Mach Ltd Binary search procedure for control table stored in memory system
US10761996B2 (en) * 2018-09-28 2020-09-01 Intel Corporation Apparatus and method for secure memory access using trust domains
US10969980B2 (en) * 2019-03-28 2021-04-06 Intel Corporation Enforcing unique page table permissions with shared page tables
US11520705B1 (en) * 2019-11-27 2022-12-06 Rockwell Collins, Inc. Input/output (I/O) memory management unit (IOMMU) multi-core interference mitigation

Also Published As

Publication number Publication date
EP4127949B1 (en) 2024-10-16
EP4127949A1 (en) 2023-02-08
WO2021198635A1 (en) 2021-10-07
JP2023519843A (ja) 2023-05-15
GB202004671D0 (en) 2020-05-13
GB2593716A (en) 2021-10-06
US20230109295A1 (en) 2023-04-06
KR20220158831A (ko) 2022-12-01
GB2593716B (en) 2022-08-10
US12067263B2 (en) 2024-08-20

Similar Documents

Publication Publication Date Title
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
JP5636501B2 (ja) コンピュータシステムにおけるリソースアクセス制御を実行する方法、システムオンチップ、及び、コンピュータシステム
US20110208935A1 (en) Storing secure mode page table data in secure and non-secure regions of memory
EP4127948B1 (en) Apparatus and method using plurality of physical address spaces
EP4136536A1 (en) Data integrity check for granule protection data
JP2023526000A (ja) 変換テーブルアドレス記憶回路
US12067263B2 (en) Controlling memory access in a data processing systems with multiple subsystems
US20240193260A1 (en) Apparatus and method for handling stashing transactions
EP4127945B1 (en) Apparatus and method using plurality of physical address spaces
CN114077496A (zh) 命中时读取的前popa请求

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