CN112602069A - 范围检查指令 - Google Patents
范围检查指令 Download PDFInfo
- Publication number
- CN112602069A CN112602069A CN201980055295.3A CN201980055295A CN112602069A CN 112602069 A CN112602069 A CN 112602069A CN 201980055295 A CN201980055295 A CN 201980055295A CN 112602069 A CN112602069 A CN 112602069A
- Authority
- CN
- China
- Prior art keywords
- address
- memory
- instruction
- entry
- processing circuitry
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 140
- 230000004044 response Effects 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 17
- 230000001960 triggered effect Effects 0.000 claims description 13
- 238000012360 testing method Methods 0.000 claims description 9
- 230000011664 signaling Effects 0.000 claims description 6
- 230000003068 static effect Effects 0.000 description 23
- 101100108191 Vibrio parahaemolyticus serotype O3:K6 (strain RIMD 2210633) add gene Proteins 0.000 description 11
- 101150060298 add2 gene Proteins 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000739 chaotic effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection 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/1425—Protection 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/1441—Protection 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Quality & Reliability (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种装置(2),包括:指令解码器(7),用于解码指令;处理电路系统(4),用于响应于由指令解码器解码的指令来执行数据处理;以及存储器属性检查电路系统(16),用于检查由处理电路系统发出的存储器存取请求是否满足在多个存储器属性条目中指定的存取许可,每个存储器属性条目指定针对地址空间内的可变大小的对应地址区域的存取许可。响应于用于识别第一地址和第二地址的地址识别参数的范围检查指令,指令解码器(7)控制处理电路系统,以在至少一个软件可存取的储存位置(12、13)中设定状态值,该状态值指示第一地址和第二地址是否对应于同一存储器属性条目。
Description
技术领域
本文的技术涉及数据处理的领域。
背景技术
数据处理装置可以具有存储器属性检查电路系统,该存储器属性检查电路系统用于检查存储器存取请求是否满足在多个存储器属性条目中的一者中所指定的存取许可。举例而言,存取许可以指定地址空间的对应区域的性质,例如,这些区域是限于只读存取还是可进行读取和写入两者;或指定处理电路系统的哪些操作模式能够存取该区域。这可用于在存取存储器系统内的某些数据时强制执行安全约束。
发明内容
至少一些示例提供一种装置,该装置包括:指令解码器,用于解码指令;处理电路系统,用于响应于由指令解码器解码的指令执行数据处理;以及存储器属性检查电路系统,用于检查由处理电路系统发出的存储器存取请求是否满足在多个存储器属性条目中所指定的存取许可,每个存储器属性条目指定针对地址空间内的可变大小的对应地址区域的存取许可;其中:响应于范围检查指令,该范围检查指令指定用于识别第一地址和第二地址的地址识别参数,指令解码器被配置为控制处理电路系统,以便在能够由指令解码器所支持的至少一种类型的指令存取的至少一个软件可存取的储存位置中设定状态值,该状态值指示第一地址和第二地址是否对应于同一存储器属性条目。
至少一些示例提供一种数据处理方法,该数据处理包括:使用指令解码器来解码范围检查指令,该范围检查指令指定用于识别第一地址和第二地址的地址识别参数;以及响应于解码范围检查指令,控制处理电路系统,以在能够由指令解码器所支持的至少一种类型的指令存取的至少一个软件可存取的储存位置中设定状态值,该状态值指示第一地址和第二地址是否对应于多个存储器属性条目中的同一存储器属性条目,每个存储器属性条目指定针对位置空间内的可变大小的对应地址区域的存取许可。
至少一些示例提供一种计算机程序,用于控制主机数据处理装置以提供用于执行目标代码的指令的指令执行环境;该计算机程序包括:指令解码程序逻辑,用于解码目标代码的指令,并控制主机数据处理装置以响应于经解码的指令来执行数据处理;以及存储器属性检查程序逻辑,用于检查由目标代码的经解码的指令所触发的存储器存取请求是否满足在多个存储器属性条目中所指定的存取许可,每个存储器属性条目指定针对仿真地址空间内的可变大小的对应地址区域的存取许可,该仿真地址空间是由指令执行环境仿真的;其中:响应于范围检查指令,该范围检查指令指定用于识别第一地址和第二地址的地址识别参数,指令解码程序逻辑被配置为控制主机数据处理装置,以在能够由指令解码程序逻辑的解码所支持的至少一种类型指令存取的至少一个软件可存取的储存位置中设定状态值,该状态值指示第一地址和第二地址是否对应于同一存储器属性条目。
至少一些示例提供一种储存上述计算机程序的计算机可读储存介质。储存介质可以为非暂时性储存介质。
附图说明
本发明技术的其他方面、特征和优点将通过以下结合附图阅读的示例的描述显而易见,在附图中:
图1图示具有存储器属性检查电路系统的数据处理装置的示例;
图2更详细地示出其中存储器属性检查电路系统包括存储器保护单元的示例,该存储器保护单元针对储存于存储器系统中的存储器保护表中所定义的存取许可来检查存储器存取;
图3示出由存储器保护单元和安全属性单元所设定的重叠许可的示例;
图4示出处理电路系统的不同操作状态的示例,包括不同的域、模式和特权级别;
图5A和图5B示出范围检查指令的示例;
图6示出储存至范围检查指令的目标寄存器(destination register)的信息的示例;
图7图示范围检查指令的多个变体;
图8示出使用比较器来查找第一地址和第二地址是否对应于同一存储器属性条目的示例;
图9图示处理范围检查指令的方法;以及
图10图示仿真器示例。
具体实施方式
一种装置具有用于解码指令的指令解码器,以及用于响应于指令解码器所解码的指令执行数据处理的处理电路系统。提供存储器属性检查电路系统以检查处理电路系统所发出的存储器存取请求是否满足在两个或更多个存储器属性条目中所指定的存取许可。每个存储器属性条目可指定针对地址空间内的可变大小的对应地址区域的存取许可。因而,因为每个存储器属性条目可对应于可变大小的地址区域,所以并未预定哪些地址映射至特定的存储器属性条目。对可变大小的条目的支持可有用于允许在单个存储器属性条目中覆盖相对较大的地址区域,因此减小了所需存储器属性条目的数量。
装置的指令解码器支持范围检查指令的解码,该范围检查指令指定用于识别第一地址和第二地址的地址识别参数。作为响应,指令解码器控制处理电路系统以在能够由指令解码器所支持的至少一种类型的指令存取的至少一个软件可存取的储存位置中设定状态值,该状态值指示第一地址或第二地址是否对应于同一存储器属性条目。因而,该指令允许软件深入了解到第一地址和第二地址两者均对应于同一存储器属性条目还是对应于不同存储器属性条目。这样的操作可被视为较不常见的,因为通常在针对指定给定目标地址的存储器存取检查存储器属性数据时,基于存储器属性检查对软件可见的唯一信息是对于成功执行了存储器存取还是由于未指定存取许可而触发了故障的指示。对于给定地址对应于哪个特定存储器属性条目通常不感兴趣。
然而,要认识到,关于第一地址和第二地址是否对应于同一存储器属性条目的信息可对某些安全检查操作有用,例如,允许软件进程检查由第一地址和第二地址界定的数组中的每个字是否可由特定软件进程存取。通过提供范围检查指令,该范围检查指令可使软件可存取对于第一地址和第二地址是否均对应于同一存储器属性条目的指示,这可以简化这样的安全检查。如果地址确实对应于同一存储器属性条目,则当该存储器属性条目指示地址空间的对应区域可由相关软件存取时,这可以暗示在第一地址和第二地址之间的所有地址均可存取,而不需个别地检查每个地址,这可以极大地改善执行许可检查的速度。这可能对于检查第一地址和第二地址是否对应于同一存储器属性条目有用的另一原因可能是:对于执行某些实时关键任务的系统而言,其中以确定性时延(latency)执行任务非常重要,因为如果可事先知晓由第一地址和第二地址界定的某一地址范围皆对应于同一存储器属性条目,则可预期将不会由于进入了尚未被定义存储器属性条目的不同地址区域中而在处理该地址范围的过程中触发故障。
检查两个地址是否对应于同一存储器属性条目的替代方式为在指令集架构中提供指定单一地址的指令,对于该单一地址而言该指令的执行产生以下指示:匹配该地址的特定存储器属性条目的条目编号被返回至软件可存取的储存位置。然而,如上所述的指定第一地址和第二地址的范围检查指令具有许多优点。举例而言,因为指令可简单地返回指示第一地址和第二地址是否对应于同一存储器属性条目的状态值,而不是返回识别匹配给定地址的特定条目的区域编号,所以这意指通过支持大量不同存储器属性条目的系统,储存指令结果所需的储存容量得以更好地放大,因为(例如)状态值可与单个位一样小并且与所提供的存储器属性条目的数量无关,而不需要具有根据条目的总数量而增大的大小的多位值。
另外,指定第一地址和第二地址的范围检查指令可以提供关于第一地址和第二地址是否对应于单个指令中的同一存储器属性条目的信息,而不需要两个单独指令来查询与第一地址和第二地址相关联的条目编号。提供范围检查指令还避免了需要比较指令来比较由两个单独区域编号查询指令所返回的条目编号。用于查找该组存储器属性条目以检查哪个条目对应于给定地址的查找进程可能耗费一定量的时间。尽管用于检查地址是否对应于同一存储器属性条目的这样的安全检查操作可能占程序总体执行时间的相对较小比例,但其仍处于一些时延敏感任务的关键路径上,因此在使得通过更少指令执行相关检查方面工作量的减少对于某些实时关键应用而言尤其有益。在一些应用中,可能必须在软件内的大量功能中执行许可检查。提供单个范围检查指令对于减小受约束环境中的代码大小可能是重要的。
所述的范围检查指令对如下系统可尤其有用:在该系统中存储器属性检查电路系统准许给定存储器属性条目的对应地址区域的可变大小是非2的幂的字节数量。举例而言,这可与阶层式页表形成对比,在阶层式页表中,每个页表条目可对应于2的固定幂的字节数量的页面,对于该页面而言,在经过页表移动(page table walk)操作中的一系列多级查找的一些情况下,地址的不同部分可索引至所需的特定页表条目中。在这样的阶层式页表中,相对不太可能的是数据数组可完全属于一个页表条目。相比之下,使用其中单个条目可对应于非2的幂的字节数量的存储器属性检查方法,这可允许在单个条目中定义任意大小的地址区域,例如,使用指定地址区域的起始地址和结束地址的信息(例如,使用明确识别的边界地址或使用基址和大小)来定义。因而,使用支持除了2的幂的字节数量以外的大小的可变区域大小的方法,更有可能的是,系统用户将倾向于定义其地址区域,以使得某些数据数组完全属于单个区域,且因而上述范围检查指令对于准许非2次幂字节大小的区域的这种系统尤其有用。
类似地,处理电路系统可准许由范围检查指令识别的第一地址与第二地址之间的差为除了2的幂以外的字节数量。
可以通过范围检查指令以多种不同方式来识别第一地址和第二地址。在一个示例中,地址识别参数可以指定第一地址的基址,并指定用于识别第一地址与第二地址之间的差的偏移量。可以在由范围检查指令识别的寄存器中指定基址和偏移量。替代地,可以在寄存器中指定基址,而可以将偏移量指定为立即值。
在另一示例中,可以将偏移量指定为倍数和大小值,当它们相乘时给出偏移量。倍数和大小值中的一者可以为由范围检查指令所指定的可变参数,其中可变参数(例如)由立即值识别,或由储存于由范围检查指令所指定的寄存器中的值识别。另一方面,倍数和大小值中的另一者可以被指定为固定值、由范围检查指令指定的立即值或储存在由范围检查指令指定的寄存器中的值中的任一者。
总体而言,经由基址指定第一地址并使用加到基址的偏移量来指定第二地址可能有用,因为这意指关于哪个地址为低地址和高地址并无歧义,这可使得执行查询以确定第一地址和第二地址映射至同一存储器属性条目上是否更易于实施。将偏移量指定为倍数与大小值的乘积可能有用,因为在一些情况下软件执行指令可能发现根据某一给定大小的元素的数量而不是根据地址空间中的总偏移量来指定数组的大小更为便利。因而,指令的倍数和/或大小指定的变体可用于使代码的程序化或编译更为简单。这也可以改善所产生的可执行代码的效能和大小。
替代地,识别地址识别参数的另一方式可为指定从中读取第一地址的第一寄存器以及从中读取第二地址的第二地址。因而,在该情况下,通过在执行范围检查指令之前将第一地址和第二地址写入至第一寄存器和第二寄存器,可以明确地指定第一地址和第二地址两者。
类似地,不同架构可提供不同选项,对于这些选项而言储存位置为响应于范围检查指令来写入状态值的软件可存取储存位置。在一些情况下,该软件可存取储存位置可以是储存在存储器中的储存位置。然而,对于实施方式而言可能有用的是提供软件可存取储存器为寄存器,因为这可使得状态值的后续读取更快,这可加速上述类型的安全检查操作。
因而,在一个示例中,至少一个软件可存取储存位置可以包括由范围检查指令指定的目标寄存器。举例而言,可以将目标寄存器指定为处理电路系统的多个通用寄存器中的任一者。可以接着将选定的目标寄存器用作后续指令的源寄存器,该后续指令用于以第一地址和第二地址是否对应于同一存储器属性条目为条件来执行动作。
替代地,或除了将状态值写入至目标寄存器以外,另一方法为通过更新控制寄存器中的至少一个条件状态指示来设定状态值。举例而言,控制寄存器可以储存至少一个条件状态指示,其指示先前条件状态指示符产生指令的结果的性质。举例而言,一些指令可以触发条件状态旗标的设定,所述条件状态旗标可以指示性质,例如:处理结果是否为零,处理结果为负数,或是否发生了有正负号或无正负号的溢出。指令解码器可以支持至少一个条件指令,所述至少一个条件指令以储存在控制寄存器中的至少一个条件状态指示是否满足测试条件为条件来触发处理电路系统以执行条件操作。因而,一些指令可以直接存取条件状态指示,以便以先前指令的结果为条件来触发执行一些动作。因而,通过使用条件状态指示来提供状态值(该状态值指示取决于第一地址和第二地址是否映射至同一存储器属性条目的信息),这可允许后续指令直接在单个指令中执行条件操作,而不是在具有取决于从比较指令所得的条件的后续条件指令之前需要干预指令来比较置于通用寄存器中的值。这可允许更快地执行安全检查操作。
在范围检查指令的一些示例中,指令可以仅更新目标寄存器而不更新任何条件状态指示,或反之亦然,其中仅设定条件状态指示而不设定通用目标寄存器中的值。其他变体可以更新两种类型的寄存器,以使得后续条件指令可以直接测试控制寄存器中的条件代码,以确定先前范围检查指令是否发现第一地址和第二地址映射至同一存储器属性条目,但其他信息也可从范围检查指令的目标寄存器导出。
响应于范围检查指令,至少当第一地址和第二地址两者均映射至同一存储器属性条目时,对于处理电路系统而言可能有用的是,将从对应于第一地址和第二地址的匹配存储器属性条目导出的属性信息储存于至少一个软件可存取的储存位置。举例而言,属性信息可以指示在处理电路系统的给定操作模式下是否将允许存取对应于匹配存储器属性条目的地址区域。除了第一地址和第二地址是否映射至同一存储器属性条目的指示以外(或与其组合),这样的属性信息可允许使用单个指令来执行某些形式的安全检查。
在一个示例中,可以将属性信息记录为与指示第一地址和第二地址是否映射至同一存储器属性条目的状态值分开的额外字段。
在其他示例中,属性信息的指示可以与指示第一地址和第二地址是否映射至同一存储器属性条目的状态值组合。举例而言,当满足以下两个条件时可以将单个状态指示符设定为第一值:(i)第一地址和第二地址两者均映射至同一存储器属性条目;以及(ii)匹配存储器属性条目指定将准许对由该条目限定的对应地址区域的存储器存取,且如果不满足这些条件中的任一者,则可以将状态指示符设定为第二值。因而,在这样的实施例中,同一状态指示符可以充当状态值和属性信息两者。
在一个示例中,处理电路系统可以具有多个不同操作状态(例如,不同模式、域或特权级别),处理电路系统可以在这些操作状态中操作。响应于范围检查指令的至少一个变体,处理电路系统可以基于存取许来导出将写入至软件可存取的储存位置的属性信息,当处于与处理电路系统的当前操作状态不同的操作状态时,该存取许将被强加于对匹配存储器属性条目的对应地址区域的存储器存取。因而,不检查在当前操作状态下是否准许存取,而是指令替代地给出如果系统处于不同操作状态则是否已准许存取的指示。范围检查指令的准许交叉操作状态检查的这样的变体可尤其有用于在以下情况下防止基于混乱代理人问题的安全攻击:具有不受信任软件的攻击者可能会试图通过向受信任软件传递指向(例如)越界的数组的指针来欺骗可信软件执行不当操作。范围检查指令的交叉操作状态变体可因此由受信任代码用于检查不受信任代码传递给它的值是否有效,例如,通过检查基于该值计算的地址是否映射至同一存储器属性条目,以及针对攻击者的操作状态导出的属性信息是否会指示将准许存取。
在一个特定示例中,处理电路系统可以具有多个操作域,包括安全域和较不安全域,并且在每个安全域内,处理电路系统可以以多个模式中的一者和多个特权级别中的一者来操作。一些模式可以与特定特权级别中的操作相关联。根据可储存在特定控制寄存器中的当前特权级别指示符,其他模式可以支持两种或更多种不同特权级别上的操作。为了允许多个不同类型的安全检查操作,对于指令解码器而言可能有用的是支持范围检查指令的以下变体中的至少一者:第一变体,该第一变体的属性信息指定当处理电路系统处于当前安全域时是否准许对第一地址与第二地址之间的范围中的地址的存储器存取,以及与当前模式相关联的特权级别;第二变体,该第二变体的属性信息指定当处理电路系统处于与当前域不同的安全域时是否准许对第一地址与第二地址之间的范围中的地址的存储器存取,以及当在不同安全域中操作时与当前模式相关联的特权级别;第三变体,该第三变体的属性信息指定在当前安全域中是否准许对第一地址与第二地址之间的范围中的地址的存储器存取,以及不同于与当前模式相关联的特权级别的特权级别;以及第四变体,该第四变体的属性信息指定当处理电路系统处于与当前域不同的安全域中时是否准许对第一地址与第二地址之间的范围中的地址的存储器存取,以及不同于与当前模式相关联的特权级别的特权级别。在一些实施例中,为了为程序设计师或编译者提供选择的灵活性,可以由指令解码器支持第一变体至第四变体中的至少两者。
因而,第一变体允许基于与当前域和模式相关联的属性的安全检查。
第二变体和第四变体准许交叉域检查以检查是否将允许与当前域不同的安全域存取第一地址和第二地址之间的地址范围。举例而言,一些系统可以支持分别为安全域和较不安全域维护存储器属性条目的不同集合,并且因此对于范围检查指令的第二变体和第四变体而言,经执行以导出属性信息的检查可以基于与用于当前域的存储器属性条目集合不同的存储器属性条目集合。当指令解码器支持范围检查指令的第二变体和第四变体中的至少一者时,对于不同安全域而言可能有用的是包括较不安全域。为了防止较不安全域探测安全许可,如果当在较不安全域中操作时存在执行指令的第二变体和第四变体中的一者的尝试,则处理电路系统可以触发故障的传讯(signalling)。因而,这些变体可允许更安全的域检查是否针对较不安全域已准许对第一地址与第二地址之间的地址的存取,这可有用于避免混乱代理人攻击。
类似地,对于第三变体和第四变体而言,属性信息可以基于是否在与处理电路系统的当前特权级别不同的特权级别中准许对第一地址和第二地址之间的范围中的地址的存储器存取。另外,如果该不同特权级别为比当前特权级别特权少的特权级别,则该类型的变体可尤其有用。在该情况下,如果当处理电路系统处于至少一个预定特权级别中时(对其而言,存在至少一个比该至少一个预定特权级别特权多的特权级别)存在执行范围检查指令的第三变体和第四变体中的一者的尝试,则可触发故障。指令的这些变体可有用于允许特权较高的代码检查是否可以信任由特权较低的代码传递至特权较高的代码的值。
应意识到,没必要使处理系统的给定实施支持所有四种变体。
在一些示例中,存储器属性检查电路系统可以针对给定存储器存取请求检查该存储器存取请求是否满足在第一存储器属性条目集合中指定的存取许可以及在第二存储器属性条目集合中指定的存取许可。举例而言,可以存在与不同功能相关联的多个不同类型的存储器属性条目,例如,提供存储器保护信息(例如,定义只读或可读取以及可写入区域,或指定哪些特权级别可存取对应地址区域)的第一条目集合,以及可以指定哪个安全域与给定地址区域相关联的第二存储器属性条目集合。
因而,在一些示例中,响应于范围检查指令,指令解码器可以控制处理电路系统以在至少一个软件可存取的储存位置处设定如下两者:第一状态值,该第一状态值指示第一地址和第二地址是否对应于第一存储器属性条目集合的同一条目;和第二状态值,该第二状态值指示第一地址和第二地址是否对应于第二存储器属性条目集合的同一条目。因而,在单个指令中,可以查找两个存储器属性条目集合,并且可以返回地址的整个范围是否映射至两个存储器属性条目集合中的同一条目的指示。
如上所述,存储器属性条目集合中的一者可以为存储器保护条目的集合。上述范围检查指令在如下实施方式中可尤其有用:其中存储器存取请求以给定存储器系统为目标,并且在存储器保护表中提供用于控制对存储器系统的存取的存储器保护条目,该存储器保护表本身被储存在存储器系统中。该方法相对不常见,但允许支持具有相对较大数量的存储器保护条目的存储器保护表,而不会极大地增加储存和管理这样的较大数量条目的硬件成本。在其中存储器保护表储存在存储器系统中以使得可增大所支持的存储器保护条目的数量的系统中,上述类型的范围检查指令可尤其有用,因为提供返回哪个特定条目编号与给定地址相关联的指令的替代方案可能难以随着存储器保护表的大小增加而扩展,尤其是在其中指令旨在返回关于如上所述的多个不同存储器属性条目集合中的地址映射的信息的实施方式中如此。另外,在其中将存储器保护条目储存在存储器系统中的系统中,可能有用的是提供存储器保护缓存储存器电路系统,以缓存从存储器系统获得的存储器保护表的至少一个存储器保护条目。如果使用了返回映射至给定地址的存储器保护条目的条目编号的替代指令,则这样的指令将暗示缓存储存器需要缓存与每个缓存条目相关联的条目编号,使得用于查询与给定地址相关联的条目编号的指令可以迅速地存取与缓存的存储器保护条目相关联的条目编号,而不需要搜寻存储器系统内的存储器保护表。相比之下,通过上述范围检查指令,条目编号的这种缓存并非必要的,因为可在不需要缓存条目编号自身的情况下确定第一地址或第二地址是否映射至同一条目上。这可尤其有用,因为存储器保护缓存储存器电路系统中的条目可以被实施为基于寄存器的储存,且因此通过消除对于缓存条目编号的需要,这可以在每个缓存的条目中节省大量位,这提供了明显的电路面积减小。
在使用基于存储器的存储器保护表的系统中,除了储存于存储器中的存储器保护表以外,也有可能在硬件中提供一些配置寄存器以储存至少存储器保护条目的子集合。不充当缓存(而替代地分配成提供定义地址空间的常用区域的某些性质的固定存储器保护条目)的一些静态分配的寄存器可有用于改善效能。因而,在一些情况下,范围检查指令也可以查询储存在这样的配置寄存器中的一些存储器保护条目。
替代地,在一种系统中可以支持范围检查指令,该系统不在存储器系统自身中储存任何存储器保护条目,而是使用配置寄存器实施整个存储器保护条目集合。
存储器属性条目集合的另一示例可以为安全属性条目,所述安全属性条目指定存取许可,所述存取许可以指示多个安全域中的哪些与对应地址区域相关联。除了上述存储器保护条目以外,还可以实施这些安全属性条目。举例而言,检查与给定地址区域相关联的安全域可有用于检查当从给定地址区域执行代码时处理电路系统应在哪个安全域中操作。另外,当从给定安全域发出存储器存取请求时,可以检查安全属性条目。举例而言,与较不安全域相关联的存储器地址区域可在安全域中存取,而与安全域相关联的区域可在安全域中存取,但当处于较不安全域中时可能为不可存取的。
响应于范围检查指令的至少一个变体,至少当第一地址和第二地址均对应于同一安全属性条目时,通过对应于第一地址和第二地址的匹配安全属性条目,可以从指定为与对应地址区域相关联的安全域导出在至少一个软件可存取的储存位置中提供的属性信息。
如上所述,在一些系统中,存储器属性检查电路系统可以支持上述存储器保护条目和安全属性条目。在该情况下,对于范围检查指令的至少一个变体而言可能有用的是,从对应于第一地址和第二地址的匹配存储器属性条目与对应于第一地址和第二地址的匹配安全属性条目的组合导出信息。举例而言,响应于范围检查指令的该变体,指令解码器可以将至少一个组合许可指示符储存至至少一个软件可存取的储存位置,所述至少一个组合许可指示符在单个指示符中指定匹配存储器保护条目中的存取许可以及匹配安全属性条目中的存取许可两者是否均指定允许给定类型的存储器存取。举例而言,可以将这种组合许可指示储存至如上所述的控制寄存器中的条件状态指示,以使得后续条件指令可直接测试该组合指示符,以确定是否可进行后续操作。
我们可以预期可相对缓慢地执行在单个指令中检查第一地址和第二地址两者是否均映射至同一存储器属性条目,尤其是在存储器地址区域可具有如上所述的任意非2的幂的大小时如此。然而,实际上,发明者认识到,实际上可以与查找操作类似的时延执行用于返回识别第一地址和第二地址是否映射至同一存储器属性条目的状态信息的范围检查操作,该查找操作经执行以识别对应于单个地址的存储器属性条目。实际上,存储器属性检查电路系统可以具有至少一组比较器,其中每一组比较器包括下限比较器,该下限比较器用于比较存储器存取请求的目标地址与给定存储器属性条目的下限地址;和上限比较器,该上限比较器用于比较存储器存取请求的目标地址与给定存储器属性条目的上限地址。对于常规存储器存取请求而言,如果下限比较器和上限比较器两者均提供正结果,则可以将给定存储器属性条目识别为匹配存储器存取请求的目标地址。举例而言,下限比较器可以确定目标地址是大于还是等于下限地址,并且上限比较器可以确定目标地址是小于还是等于上限地址。
我们可以预期对于范围检查指令而言,在两个单独查找中,必须将第一地址以及第二地址作为目标地址顺序地供应给每一组比较器。然而,发明者认识到,响应于范围检查指令,指令解码器可以控制处理电路系统以将第一地址作为目标地址供应给每一组比较器中的下限比较器,并且并行地将第二地址供应给每一组比较器中的上限比较器。因而,虽然对于常规存储器存取而言通常预期每个集合中的两个比较器分别将同一地址与下限和上限地址进行比较,但对于范围检查指令而言,这些比较器可以被调适为接收不同输入,以使得可并行地执行基于第一地址和第二地址的比较。如果比较器的集合中的任一者返回同一组比较器中的下限比较器和上限比较器两者均识别出比较的正结果,则可以产生命中信号以指示第一地址和第二地址映射至同一条目。因而,除了用于将第一地址和第二地址供应给下限和上限比较器而不是将目标地址供应给两个比较器的逻辑以外,用于查找存储器属性条目的剩余逻辑可以与通常已提供用于处置针对常规存储器存取操作的查找的逻辑相同,并且因而实际上可以以相对较小的额外面积负担来支持范围检查指令。这意指上述类型的范围检查指令可以具有优于其中两个单独指令单独地检查哪个存储器属性条目映射至单个地址的替代方案的明显效能改善。
下限比较器和上限比较器分别比较第一地址和第二地址的查找方法可能需要关于第一地址和第二地址中的哪一者为低地址的先验知识,使得低地址可被供应给下限比较器并且高地址可被供应给上限比较器。
不同架构实施可以使用不同方法来确保第一地址总是低于第二地址。在一些示例中,范围检查指令的编码自身可以约束第一地址低于第二地址。举例而言,上述指令的变体(对其而言,指定第二地址作为加至第一地址的偏移量)可以根据定义确保第二地址高于第一地址。在该情况下,不需要提供第一地址与第二地址的完全比较以检查哪一者较低。总体而言,可以假设第二地址高于第一地址,除非将偏移量加至第一地址导致溢出或回归(wraparound)。举例而言,如果第一地址在允许地址范围内相对较高,则加偏移量可导致第二地址回归地址范围中相对低的地址。对于导致这种回归的相加,可以传讯故障,或简单地返回具有指示第一地址和第二地址不对应于同一存储器属性条目的值的状态值。
替代地,其他方法可以允许对第一地址和第二地址的无约束指定,例如,在上述变体中在相应寄存器中指定两个地址以使得存在机会以使第二地址低于第一地址。在该情况下,一种方法可以为提供逻辑,该逻辑用于比较第一地址和第二地址,并接着确定哪一者较低,并且将第一地址和第二地址中的较低者供应给每个集合中的下限比较器并将另一地址供应给上限比较器(还可以可选地为具有第一地址和第二地址的受约束指定的变体提供该逻辑,尽管没必要)。然而,实际上,该逻辑在电路面积方面可能并不合理,而相反的实情是:如果以低于第一地址的第二地址来定义指令,则一些架构可以简单地定义指令的结果可能不可预测。
因而,为了在第二地址低于第一地址时通过阻止指令的任何执行来确保安全,如果试图执行第二地址低于第一地址的范围检查指令,则一些实施方式可以触发故障的传讯。替代地(或除了传讯故障以外),如果试图在第二地址低于第一地址的情况下执行范围检查指令,则处理电路系统可以返回指示第一地址和第二地址不对应于同一存储器属性条目的状态值(而无论是否由用于查找存储器属性条目的任何比较逻辑产生了任何命中信号)。
可以提供对应的计算机程序以用于控制主机数据处理装置以提供用于执行指令的指令执行环境。计算机程序可以包括在功能上对应于上述指令解码器和存储器属性检查电路系统的指令解码程序逻辑和存储器属性检查程序逻辑。因而,可以以与在硬件上执行的程序中的范围检查指令类似的方式来处置在由计算机程序仿真的指令执行环境内执行的程序中的范围检查指令,该硬件实际上包括上述指令解码器和存储器属性检查电路系统。仿真器计算机程序可以向在仿真器计算机程序上执行的软件呈现与可由实际硬件装置所提供的指令环境类似的指令环境,即使在执行仿真器计算机程序的主计算机中可能没有提供这些特征的任何实际硬件。可以通过提供程序逻辑(例如,指令或数据结构的集合)来仿真上述硬件架构的功能,这使得通用主计算机能够以与在实际上具有该硬件的装置上实现的结果兼容的方式,执行意欲在具有上述存储器属性检查支持的装置上执行的代码。可以将用于控制主机数据处理装置的仿真器计算机程序储存在储存介质上。该储存介质可以为非暂时性储存介质。
图1示意性地图示数据处理系统2,该数据处理系统2具有用于响应于指令执行数据处理的处理电路系统4。举例而言,处理电路系统4可以为CPU、DSP、GPU或数据处理系统的其他处理组件。处理电路系统4可以包括指令提取单元5,该指令提取单元5用于从存储器系统10提取指令以由处理电路系统进行处理;以及指令解码器7,该指令解码器7用于解码所提取的指令以产生控制信号,该控制信号用于控制执行单元6、8以响应于经解码指令来执行数据处理操作。举例而言,执行单元可以包括算术/逻辑单元(arithmetic/logic unit;ALU)6,该算术/逻辑单元(ALU)6用于对从寄存器12、14提取的操作数执行算术或逻辑运算,以产生可回写至寄存器的结果值。执行单元还可以包括加载/储存单元8,该加载/储存单元8用于执行加载/储存操作以便在寄存器12、14与存储器系统10之间传送数据。寄存器可包括多个不同类型的寄存器,包括用于储存整数值以供处理电路系统4处理的通用(整数)寄存器12,以及用于储存使用浮点表示法表示的值的浮点寄存器14。处理电路系统4可存取的寄存器还可以包括为了简洁而未在图1中示出的其他类型的寄存器,例如,用于储存包括多个独立数据元素的向量操作数的向量寄存器,和/或用于储存用于控制处理电路系统4的操作的各种控制参数的控制寄存器13,例如,可由条件指令检查以确定是否执行条件操作的条件旗标、储存表示当前执行点的地址的程序计数器、以及用于控制(例如)异常处置的控制寄存器。
存储器系统10可以包括一个或多个层级的缓存以及主存储器。存储器系统10可以由处理电路系统4通过执行加载指令或储存指令而存取,该加载指令触发加载/储存单元8以发出用于将数据从存储器系统10加载至寄存器12、14中的存储器存取请求,该储存指令用于触发加载/储存单元8以发出用于将来自寄存器12、14的数据储存至存储器系统10中的存储器存取请求。另外,指令提取单元5发出存储器存取请求以从存储器系统10提取指令。每个存储器存取请求可以指定待存取的位置的目标地址。在该示例中,目标地址为直接指定待存取的位置的实体地址,因而不需要地址转译。
提供存储器保护单元(memory protection unit;MPU)20以基于目标地址来检查是否准许存储器存取请求受存储器系统10服务。MPU 20可以储存或存取多个存储器保护条目,所述存储器保护条目定义针对地址空间的对应地址区域的存取许可。举例而言,存取许可可以指定地址空间的给定区域是只读区域还是可读取以及写入,和/或可以定义允许处理电路系统4的哪些特权级别存取对应地址区域。如图1中所示,在一些示例中,MPU20可以包括两个单独的MPU:分别对应于安全域和较不安全域的安全MPU 21和较不安全MPU 23。当处理电路系统4在安全域中操作时,则可以存取安全MPU 21,而当在较不安全域中操作时,可以存取较不安全MPU 23。
除了MPU 20以外,存储器属性检查电路系统16还可以包括安全属性单元(security attribute unit;SAU)42,该安全属性单元(SAU)42包括储存安全保护条目的存储器安全配置寄存器,该安全保护条目定义地址空间中的安全的和较不安全的区域。由SAU42对照安全保护条目的区域定义数据检查存储器存取请求的目标地址,并且仅当在安全操作域中操作时,处理电路系统4可被限制为存取地址空间的安全区域(地址空间的较不安全区域可在安全域中或在较不安全域中为可存取的)。由SAU 42的安全保护条目定义的存取许可可以应用与MPU 20在存储器保护条目中定义的许可正交的许可。即,由MPU 20准许的存取仍可能被SAU 42拒绝,或反之亦然。由指令提取单元5发起的存储器存取请求以及由加载/储存单元8发起的存储器存取请求两者均可经历MPU 20和SAU 42的检查。虽然在图1中将MPU 20和SAU 42示为按顺序地操作,但一些实施方式可以为由处理安全发出的存储器存取提供对MPU 20和SAU 42的并行查找,以改进效能。
MPU 20检查由处理电路系统发出的存储器存取请求是否满足在多个存储器保护条目中指定的存取许可。每个存储器保护条目可以对应于地址空间内的可变大小的特定地址区域。给定存储器保护条目的对应地址区域可以由开始地址和结束地址界定,该开始地址和结束地址是经由给定存储器保护条目的参数识别。与存储器管理单元(memorymanagement unit;MMU)所使用的页表不同,对于MPU而言,对应于存储器保护条目的区域可具有可变大小,该可变大小可被准许为除了2的幂以外的字节数量。通过该方法,可以保证可使用单个存储器保护条目定义任意(非2的幂)大小的存储器地址区域,以避免每当地址存取跨越页面地址边界时发生页面移动和页面故障的风险。这使得MPU更适合于被设计用于处理实时应用的系统。另外,MPU可以将存储器保护条目储存在本地提供于MPU内的寄存器内,这些寄存器可快速存取,再次辅助实时处理,并避免需要在存储器系统内储存具有阶层式结构的大页表,这对于具有有限RAM的系统而言可能是重要的。
在一个示例中,可以使用寄存器来指定针对MPU 20的存储器保护条目,当比较待存取的目标地址与储存于所述寄存器中的每个存储器保护条目的区域识别参数时,可以将所述寄存器直接连接至并行的一组比较器。该方法可适合于其中仅需要定义受限数量(例如,8个或16个)的存储器保护条目的系统。在具有单独的安全MPU 21和较不安全MPU 23的系统中,可以提供寄存器的单独集合,用于分别定义安全存储器保护条目和较不安全存储器保护条目,其中在查找MPU 20时选定针对当前操作域的相关条目集合。
然而,对于其中将所有存储器保护条目储存在寄存器中的MPU,如果MPU支持的存储器保护条目的数量增加,则与MPU相关联的功率和面积可能被急剧放大。对于需要海量存储器保护条目(例如,因为基于寄存器的MPU中的受限数量的存储器保护条目可能对效能或可提供的保护造成严重影响)的系统而言,可能有用的是扩展条目的数量,通过在存储器系统10内提供存储器保护表来支持该扩展。因而,通过在存取是由MPU20管辖的同一存储器系统中提供存储器保护表,这提供了灵活性,以用于提供比对于基于寄存器储存区域的典型MPU而言实用的数量更大数量的存储器保护条目,该寄存器储存区域定义并行地与目标地址比较的每个条目的数据。可能违反直觉的是,将存储器保护表移动至存储器系统中(其存取通常比寄存器慢)将提供改善的软件效能。然而,尽管存取来自存储器系统的个别存储器保护条目可能较慢,但通过避免了以下所述软件变通(software workarounds)方案而可改善总体效能,所述软件变通方案用于处理其中硬件中的MPU所支持的条目的数量不足以处理软件的要求的情况,否则会由于存取地址空间的未定义区域而遭遇频繁异常而导致巨大的效能成本。通过存储器中所提供的存储器保护表,硬件成本随着条目数量急剧下降。
另外,通过准许每个区域具有对应于除了2的幂以外的字节数量的任意大小,这意指每个区域可覆盖大量存储器,并且没必要将旨在具有相同存取许可的区域划分为多个单独条目,否则当地址跨越区域边界时将存在导致存储器保护故障的风险。这使得MPU在服务实时应用方面比MMU更佳,实时应用要求以快速和/或确定性响应时间处置关键操作。
使用存储器储存存储器保护条目的该方法可对多个目的有用。举例而言,一个软件可能需要通过不同存取许可定义更大数量的不同地址区域,所述存取许可在MPU的寄存器中所支持的保护条目数方面不同于硬件中所支持的存取许可。如果存储器中未提供存储器保护表,则在任何给定时间,该软件存取需要的地址空间的至少一些部分当前将不具有为其定义的对应存储器保护条目。这将意指存取地址空间的当前未定义区域中的地址将触发异常,该异常接着需要软件介入并重新配置MPU的寄存器,以便通过需要现在存取的区域所需的参数来覆写先前为不同区域定义的参数。如果后一指令接着存取已被覆写的先前定义区域,则这可接着导致MPU配置再次切换回来。MPU寄存器的内容的这种不断切换(每次均需要异常来触发切换)可能极大地损害效能。
另一示例可为其中处理器需要执行多个软件,这些软件互不信任,但需要在其间共享数据。为了能够共享数据,给定软件可能希望划分地址空间的部分,以使得其他进程仅可存取地址空间的受限部分,但提供对存取地址空间的此精细程度的控制,这可能需要定义其他地址区域,并且可能没有由硬件中的MPU所支持的足够备用存储器保护条目来允许这种细微控制。因而,实际上,同一数据可能最终被复制至地址空间的多个部分,一个复本在由第一软件存取的部分中,且另一复本在由第二软件存取的部分中,这导致浪费时间来执行复制和低效使用可用的存储器容量,这可能是具有受约束的存储器资源的系统中的特定问题。
可以通过在存储器中提供存储器保护表从而支持更大数量的单独存储器保护条目来避免这些问题,进而可以改善效能。
因而,图2示出处理系统2的第二示例,其中在存储器系统10中提供存储器保护表22以供MPU 20存取。通过该示例,可以由MPU 20以两种方式来定义用于控制是否允许处理电路系统4存取给定地址区域的存取许可。存储器保护表22可以储存在存储器系统内,包括多个条目,每个条目定义针对对应地址区域的存取许可。MPU 20具有MPU存储器存取电路系统24,用于发起对存储器系统10的存储器存取请求,以便从MPU表22获得信息。MPU存储器存取电路系统24具有表查找电路系统26,用于执行所需比较,以识别MPU表22是否包括针对包括目标地址的地址区域的条目,该目标地址是由从处理电路系统4接收的存储器存取请求指定的。存储器系统10可以储存一个以上的MPU表,每个表22与相应软件进程相关联。将活动表标识符储存在活动表标识符寄存器(或寄存器组)28中,该活动表识别符识别将使用MPU存储器存取电路系统24存取哪个特定MPU表。举例而言,活动表识别符寄存器28可以指定当前活动的MPU表的基址30,并且也可以可选地指定活动表的大小。在MPU内提供MPU缓存储存器32,以用于从存储器系统10缓存(一个或多个)MPU表的选定条目,以使得如果再次需要同一条目,则可较快被存取该条目。举例而言,MPU缓存储存器可以包括寄存器的集合,以用于本地储存MPU表的条目,与对存储器系统10中的MPU表22的后备储存相比较,这具有减小的存取时延。
提供用于控制对存储器系统10的存取的存取许可的另一方式可以为在静态MPU寄存器储存器36中静态地定义已配置的存储器保护条目。处理电路系统4可以支持用于配置静态MPU寄存器储存器36的内容的指令,诸如,专门用于存取静态MPU寄存器储存器的专用型指令,或可使用由加载/储存单元8执行的更一般储存操作,该加载/储存单元8将已映射至为静态MPU寄存器储存器36提供的存储器映射寄存器的地址指定为目标地址。总体而言,在没有导致损失静态寄存器储存器36中所储存的信息的重设或断电事件的情况下,一旦已执行MPU参数重新配置操作(例如,这些存储器映射加载/储存操作中的一者或专用型重新配置指令)以填充静态MPU寄存器储存器36的内容,以便定义对应于给定地址区域的给定存储器保护条目,则给定存储器保护条目保留在静态MPU储存器36中,直至另一MPU参数重新配置操作改变了该条目的内容为止。这与MPU缓存储存器32不同,对于MPU缓存储存器32而言,即使没有MPU参数重新配置操作来改变为给定地址区域设定的实际参数,MPU缓存储存器32的内容仍可根据缓存替换策略随时间变化。举例而言,MPU缓存储存器32可以与缓存控制器相关联,该缓存控制器使用最近最少使用的或类似的替换策略来驱逐预测在将来最不有用的条目,此时需要为存储器系统10中的存储器保护表22的最近存取条目留出空间。
虽然图2将静态MPU寄存器储存器36示为与MPU缓存储存器32分离开,但在其他示例中,这些可以为共同储存结构的相应部分。举例而言,可以用旗标来标记共同储存结构的一些条目,以指示它们应被视为不应经由缓存替换策略驱逐的静态条目。然而,实际上,提供单独的储存结构32、36可允许更高效地索引至缓存储存器32中。
MPU包括许可检查电路系统40,该许可检查电路系统40用于:读取存取许可数据,该存取许可数据是在存储器系统10中所储存(或在MPU缓存储存器32中所缓存)的存储器保护表22的查找条目中或在静态MPU寄存器储存器36中所指定的静态分配的MPU条目中指定的;以及确定处理电路系统4发出的存储器存取请求的性质是否符合由基于存储器存取请求的目标地址所选定的条目的存取许可指定的要求。举例而言,存取许可可以指定区域是只读区域(对其而言,应拒绝由处理电路系统4执行的储存指令所触发的任何写入请求)还是允许读取和写入。存取许可还可以指定是否允许提取单元5从对应地址区域提取指令。存取许可还可以将对对应地址区域的存取限制在处理电路系统4的某些异常级别或特权级别,并且许可检查电路40可以检查与存储器存取请求相关联的当前异常级别或特权级别是否符合在存取许可中所定义的限制。
虽然图2的示例未示出如图1中的安全MPU 21与较不安全MPU 23的分离,但将意识到,在该示例中仍可以提供这种分离的MPU,其中安全MPU和较不安全MPU中的每一者如图2中所示的示例20中那样配置。举例而言,安全MPU和较不安全MPU可以为存储器中的对应MPU表22指定不同基址,并且可以具有针对静态MPU寄存器储存器36和/或MPU缓存储存器32的单独寄存器。
图2的示例还具有如图1中的SAU 42,其包括存储器安全配置寄存器44,该存储器安全配置寄存器44定义安全属性条目,所述安全属性条目定义地址空间的安全/较不安全区域;以及安全检查电路系统46,该安全检查电路系统46用于对照安全属性条目来检查目标地址以确定是否可准许存储器存取。虽然在该示例中,安全属性条目纯粹基于寄存器,但其他示例可以在存储器10中提供类似于MPU表22的安全属性表,其中SAU包括与MPU 20的电路24、36、32、28等效的电路,但用于查找安全属性条目而不是存储器保护条目。
因而,如图3中所示,MPU(根据当前操作域而为安全的或较不安全的)和SAU 42两者均可以定义针对地址空间的不同区域的存取许可的正交集合。对于SAU 42而言,可以将区域定义为与安全域或较不安全域相关联。在MPU 20中,可以如图3中所示来定义区域A、B、C,其中每个区域具有一些已定义的性质(例如,只读或可读取/可写入状态、对可存取地址区域的特权级别的限制),或诸如为对应区域定义的区域类型的其他信息,例如,该区域是否为设备型区域,对于设备型区域而言可以限制存储器系统对存储器存取的重新排序。没必要使MPU 20或SAU 42为地址空间的每个部分定义存储器保护条目。举例而言,图3中可能存在标记为50的一些区域,对于该区域而言,尚未定义MPU条目。如果存在处理电路系统4对这些区域中的一者中的地址的存取,则可以拒绝存储器存取,并且可以触发故障。在图3的示例中,MPU 20和SAU 42两者均基于实体地址空间中的地址来定义存储器存取区域,该实体地址空间是基于直接识别存储器系统10中的对应位置的实体地址来存取的。然而,MPU20或SAU 42还有可能应用受限形式的地址转换,例如,将恒定偏移量加至处理电路系统4所提供的地址,以便获得待提供至存储器10的对应实体地址。
总体而言,可以预期MPU条目由软件定义为非重叠的。一些实施方式可以提供硬件逻辑,以用于在配置给定存储器属性条目时检查该条目是否与任何其他条目重叠,并当重叠时拒绝更新给定存储器属性条目。然而,该逻辑在硬件和效能方面可能是昂贵的(特别是对于具有在存储器中定义的MPU表22的图2的示例),因为其可能需要与在每个其他MPU条目中定义的地址范围进行比较。因此,其他实施方式可能认为提供该逻辑的成本过于昂贵,因此另一方法可以为,仅预期软件将存储器属性条目定义为已定义的非重叠存储器区域,并且如果软件不满足此要求,则该架构可以指定无法保证安全。
类似地,还可以预期SAU为非重叠的,这可通过硬件检查强制执行,或不通过硬件强制执行,其中预期软件符合此要求,并且如果软件不符合此要求,则将无法保证安全。
对于图2的实施例而言,可以预期给定MPU表的条目定义非重叠区域,但可以准许静态MPU寄存器储存器36中的静态MPU条目定义与MPU表22中的基于存储器的MPU条目所定义的地址区域重叠的区域。如果地址在静态MPU寄存器储存器36中和在基于存储器的MPU条目中均命中,则一些实施方式可以使用在来自静态MPU寄存器储存器36的静态MPU条目中定义的许可,这可否决在匹配的基于存储器的MPU条目中定义的任何冲突的许可。替代地,另一方法可以为:如果静态MPU条目准许存储器存取,则可准许该存储器存取,而无论匹配的基于存储器的MPU条目是否准许该存储器存取,但如果静态MPU条目不准许该存储器存取,则当匹配的基于存储器的MPU条目准许该存储器存取时仍可准许该存储器存取。然而,可以禁止与两个静态MPU条目相关联的区域之间的重叠,并且类似地可以禁止与两个基于存储器的MPU条目相关联的区域之间的重叠。
如图4中所示,处理电路系统4可以支持多个操作状态,可以在这些操作状态下执行指令。这些操作状态可以包括域、模式和特权级别。处理电路系统4可以支持至少两个安全操作域,包括至少安全域S和较不安全域LS。总体而言,在处理储存在由SAU 42定义的地址空间的安全区域中的一者中的程序代码时,系统在安全域中操作,并且当执行来自由SAU42定义的较不安全区域的代码时,系统在较不安全域中操作。在较不安全域中,地址空间的安全区域为不可存取的。
另外,处理电路系统4可以具有多个模式,包括用于后台处理的线程模式(threadmode)T以及用于异常处置的处置器模式(handler mode)H。可能有用的是,将线程模式与处置器模式分开,以简化对异常的处置,例如,对于哪些寄存器可由处理电路系统4存取的控制可取决于系统处于线程模式还是处置器模式。
另外,系统可以具有多个特权级别,包括至少特权较高的特权级别和特权较少的特权级别。为了简单,将在以下将这些级别描述为有特权的和无特权的,但将意识到,在其他示例中可存在三个或更多个不同特权级别,并且因此术语无特权的可以简单地代表特权较少的级别中的一者,对其而言,存在具有更大特权的至少一个其他特权级别。在处置器模式下,可以默认系统在特权状态下操作。在线程模式下,当前特权级别可以根据控制寄存器13中的一者中所维护的当前特权指示符而为有特权的或无特权的。可以分别为安全的和较不安全的域定义当前特权指示符的单独分组版本,使得(例如)当处于安全域中时可将线程模式定义为有特权的,而当处于较不安全域中时将其定义为无特权的。
图5A示出了可用于查询由MPU 20和SAU 42定义的存储器属性的范围检查指令(TT指令)的示例。TT指令指定目标寄存器Rd,将响应于该TT指令将状态值写入至该目标寄存器Rd。TT指令还指定定义第一地址#add1和第二地址#add2的参数。可以通过TT指令以多种方式定义第一地址和第二地址,例如,使用指示储存定义地址(例如,明确地识别相应寄存器中的地址,或经由基址和偏移量指定地址)的值的通用寄存器12的寄存器说明符。还可以定义地址以使得第一地址#add1在寄存器中识别,而第二地址被识别为大小值与乘数的乘积,其中乘数和大小值中的一者或两者为可变的。可变乘数和/或可变大小值可以通过立即值在寄存器中识别,或通过控制寄存器13中的一者中的配置指示符识别。总体而言,可以约束TT指令的编码以使得第一地址#add1被约束成小于第二地址#add2,或者,如果编码准许第二地址#add2小于第一地址#add1,则当对于TT指令的给定实例检测到第二地址#add2小于第一地址#add1时,处理电路系统4可以触发故障。
图5B示出了范围检查指令(TT指令)的另一示例,如上所述,该指令将状态值写入至由Rd指定的目标寄存器。然而,在该示例中,从由Rn参数指定的通用寄存器12读取第一地址。读取由Rm参数指定的另一通用寄存器12,并将从Rm读取的大小值(偏移量)加至第一地址,以产生第二地址。可选地,大小值可以向左移位由立即值#imm指定的量,从而有效地允许从由Rm参数指定的寄存器读取的大小值相乘(例如,移位1对应于乘以2,移位2对应于乘以4,以此类推)。因而,由Rm指定的寄存器中的值可以为数组的长度(元素的数量),并且对于共同数组元素大小而言(例如,32位字的数组的4个字节),TT指令可以在不需要任何额外指令的情况下计算第二地址(即,数组的结束地址)。
响应于TT指令,存储器属性检查电路系统16基于第一地址和第二地址来查找MPU20和SAU 42,并且将第一地址和第二地址是否映射至MPU 20的同一存储器保护条目以及第一地址和第二地址是否映射至SAU42的同一安全保护条目的指示记录在目标寄存器Rd中。另外,在第一地址和第二地址映射至同一条目的情况下,也可以用从MPU 20或SAU 42的匹配条目导出的信息来写入目标寄存器Rd。
举例而言,如图6中所示,可以用多条信息来写入目标寄存器Rd,信息包括以下各者:
·MVALID,其指示第一地址和第二地址两者是否均对应于MPU 20的同一存储器保护条目;
·SVALID,其指示第一地址和第二地址是否均对应于SAU 42的同一安全保护条目;
·读取许可旗标R,其(至少当第一地址和第二地址对应于同一MPU条目时)指定是否将准许对于对应于该匹配条目的地址区域的存储器存取;
·读取/写入许可旗标RW,其(至少当第一地址和第二地址对应于同一MPU条目时)指示匹配条目中的存取许可是否准许读取和写入存取;
·安全域旗标S,其指示第一地址和第二地址是否对应于安全区域或较不安全区域(至少当第一地址和第二地址对应于同一SAU条目时);
·组合指示符LSR,其在满足所有以下条件时被设定为1:安全旗标S指示第一地址和第二地址对应于较不安全域,读取旗标R指示准许读取存取,并且SVALID和MVALID指示符两者均等于1。如果不满足这些条件中的任一者,则LSR被设定为0。
·第二组合指示符LSRW,其在满足所有以下条件时被设定为1:与第一地址和第二地址相关联的安全域为较不安全域,读取/写入旗标RW为1,其指示准许读取和写入存取,并且SVALID和MVALID指示符两者均等于1。如果不满足这些条件中的任一者,则LSRW为0。
通过测试信息的单个位(而不是需要测试两个或更多个值的组合,否则会另外需要更多指令),在硬件中响应于TT指令设定组合指示符可有用于允许迅速地执行相对常见形式的安全检查。在一些情况下,除了将这些组合指示符写入至目标寄存器Rd以外,响应于TT指令,处理电路系统4还可以基于图6中所示的一条或多条信息(例如,基于组合指示符)更新控制寄存器13内的条件旗标,使得后续条件指令可以基于条件旗标是否满足某一测试条件而直接触发条件操作。对于至少一些形式的安全检查而言,这可避免需要后续比较指令来比较寄存器Rd中的参数以确定应执行何种条件操作,这可帮助改善代码密度。
将意识到,图6中所示的信息仅为一个示例,并且可以提供当第一地址和第二地址映射至同一条目时从MPU或SAU的匹配条目导出的其他信息组合。
举例而言,在一些实施方式中,可以完全省去SVALID和MVALID,并且组合指示符字段LSRW和LSR可充当状态值,该状态值指示第一地址和第二地址是否映射至同一属性条目,以及指示在所述地址确实映射至同一条目的情况下从匹配条目的属性导出的额外信息。举例而言,当LSRW或LSR=1时,可推断出所述地址映射至SAU以及MPU中的同一属性条目。在LSRW或LSR=0的情况下,在一些实施例中可能并不认为重要的是,区别这是因为地址映射至不同条目(且如果如此,则地址映射至MPU和SAU中的哪些不同条目),还是因为匹配条目指定了禁止存取对应区域的属性。
另外,状态值没必要返回只读或读取/写入许可的单独指示。在其他实施中,TT指令的指令编码中的参数可以指定是否将检查读取存取或写入存取的许可,并且单个许可指示符(替换RW/R)或组合指示符(替换LSRW和LSR)可接着指示在第一地址与第二地址之间的地址范围中是否将准许指定类型的存储器存取(读取或写入)。
当软件检查源自不受信任软件(例如,在较不安全域中操作的不安全软件,或在无特权级别处操作的无特权软件)的指针的许可时,该指令可能有用。这可以(例如)有用于避免混乱代理人攻击,其中较不安全的不受信任软件可能试图通过传递指向数组的不适当指针(该不适当指标将接着由更安全软件存取)来欺骗更安全的或特权更高的软件来执行对不适当的存储器区域(其可能无法由较不安全的不受信任软件存取)的存取。通过使用TT指令(其中第一地址和第二地址对应于存储器中的数组的开始和结束地址),受信任软件可检查(倘若软件尚未定义重叠的存储器属性区域)该数组中的每个字是否均可由不受信任软件存取,该不受信任软件将指向数组的指针传递给受信任软件。这种类型的指令可允许处理器迅速地检查是否在数组的边界内的任何指标皆可由不受信任软件存取。
图5和图6中所示的指令格式(其定义两个地址并检查两个地址是否在MPU和/或SAU的同一地址区域中)可尤其对图2中所示的实施方式(其中存储器保护表22储存在存储器系统10中)有用。通过在寄存器中指定MVALID或SVALID信息,而不是(例如)返回与给定地址相关联的区域编号,这可更佳地扩大至存储器保护表22,该存储器保护表22支持极大量的存储器保护条目。另外,返回指示第一地址和第二地址是否映射至同一条目的单个位旗标(而不是与给定地址相关联的区域编号)意指MPU缓存储存器32不需要在每个缓存条目内储存对应存储器保护条目(用于由TT指令查询)的完整区域编号。因为MPU缓存储存器32中的条目通常可以基于寄存器而非SRAM,所以避免在缓存储存器32内储存每个MPU条目的区域编号的需要可提供明显的面积减小。
如图7中所示,可以提供TT指令的多个变体,以用于检查由处理电路系统4的操作状态的不同组合定义的存取许可。在TT指令的第一变体中,可以基于当前安全域的存取许可和处理电路系统4的当前模式来查找MPU和SAU。因而,响应于TT指令,可以基于当前操作域来选择安全MPU 21和较不安全MPU 23中的有关者,并且可以基于系统的当前模式以及在当前模式中所使用的当前特权级别来选择是否在假设无特权存取或有特权存取的情况下查找相关MPU中的存取许可。举例而言,如果当前模式为处置器模式,则可以根据定义假设存取为有特权的,而如果当前模式为线程模式,则是否执行有特权的或无特权的查找可取决于储存在控制寄存器13中的一者中的参数。在无特权查找中,如果不允许区域被无特权代码存取,则R或RW旗标可以为0。
对于TT指令的第二变体(TTA)而言,如果当处于较不安全域中时试图执行指令,则处理电路系统4可以触发故障,并且如果在安全域中执行TTA指令,则不像第一变体指令那样查找安全MPU 21,可替代地对较不安全的MPU 23进行MPU查找。这可有用于允许在安全域中操作的软件检查是否已允许某些存储器存取(如果其已由较不安全代码执行),这可有用于清理由较不安全代码提供的指标以便防止混乱代理人攻击。对于第二变体而言,MPU查找可以基于特权级别,当系统在较不安全域中操作时,该特权级别与当前操作模式相关联。在一些情况下,在执行指令的TTA变体时,假设用于查找的特权级别可与当前特权级别不同。举例而言,如果在当前特权级别为有特权的时候,在安全域和线程模式中执行TTA指令,但较不安全域的线程模式特权指示符的分组版本定义线程模式应在较不安全域中为无特权的,则TTA指令可以基于与较不安全域中的线程模式相关联的无特权状态,而不是基于与安全域中的线程模式相关联的当前特权状态,触发较不安全MPU 23的查找。
图7还示出了指令的第三变体(TTT),其检查与当前安全域相关联的MPU 21、23,但基于无特权状态强迫MPU的查找,而与处理电路系统4的当前特权级别无关。因而,即使处理电路系统4当前处于有特权状态,仍可以设定图6中的参数R、RW等等,以指示在处理电路系统4当前已进入无特权状态时是否已准许读取或读取/写入操作。这可有用于允许特权较高的代码核查可由特权较少的代码存取的无特权许可,以使得可检查由无特权代码提供的指标。对于第三变体而言,如果在无特权状态下执行第三变体,则触发故障。
类似地,可以提供指令的第四变体(TTAT),其组合了指令的第二和第三变体的性质。对于第四变体而言,如果在无特权状态或较不安全域中执行第四变体,则触发故障。第四变体即使在安全域中执行时仍触发较不安全MPU 23的查找,且即使在当前有特权状态下执行时仍基于为无特权存储器存取定义的无特权许可来触发查找。
因而,第一变体至第四变体定义了多个指令,这些指令允许存储器存取许可的交叉操作状态检查,使得较受信任的代码可检查是否已允许较不受信任的代码来存取由第一地址和第二地址界定的地址,这可有用于检查由较不受信任的代码传递给较受信任的代码的指标。将意识到,在给定实施方式的指令集架构中并不需要支持指令的第一至第四变体中的全部。可以支持这些变体中的一者、两者或更多者的任何子集。可以以不同方式来区别指令的不同变体,例如,使用不同操作码,或者,如果所述变体共享同一操作码则使用在指令的指令编码中所定义的另一参数。举例而言,可以在指令编码中提供变体字段,以识别使用了哪个变体。在其他示例中,对于不同变体而言指令的编码可以相同,但储存在控制寄存器13中的参数可以被设定以指示TT指令应被视为第一、第二、第三还是第四变体。
我们可以预期,提供查找电路系统以用于查找第一地址和第二地址是否映射至同一存储器属性条目可在效能和硬件方面相对昂贵,因为其可能需要针对所述地址中每一者的两次单独查找。然而,实际上,这并非必需的,并且单个查找可识别是否两个地址映射至同一条目。如图8中所示,区域检查硬件通常可以包括比较器60、62的数组,其中静态寄存器36中或缓存储存器32中所支持的每个存储器属性条目可以与两个比较器60、62的集合相关联。这些比较器包括下限比较器60,该下限比较器60比较输入地址与对应地址区域的基址64,并输出命中信号66,该命中信号66在输入地址65大于或等于基址64时被确认。另外,对于在静态寄存器36或缓存储存器32中所提供的每个条目而言,可以提供第二上限比较器62,该第二上限比较器62比较输入地址67与定义对应地址区域的上限的极限地址68,并在输入地址67小于或等于极限地址68时确认命中信号69。区域命中信号70可以由AND门71产生,并且在下限命中信号66和上限信号69两者均被确认时被设定为1。
对于常规存储器存取而言,可以将存储器存取的目标地址#add供应至下限比较器60作为输入地址65以及供应至上限比较器62作为输入地址67。
为了实施需要比较两个单独地址的TT指令,有可能将第一地址#add1作为输入地址65供应至每个下限比较器60,并将第二地址#add2作为输入地址67供应至每个上限比较器62。倘若第一地址#add1小于第二地址#add2,则给定条目的命中信号70将指示是否第一地址和第二地址两者均映射至该条目上。如果第一地址和第二地址映射至不同条目,则相应条目的区域命中信号70皆不会被确认。如果第一地址和第二地址确实对应于同一条目,则将仅确认该匹配条目的命中信号70。因而,有可能在几乎没有额外效能和面积影响(且与单个地址查找相比较而言几乎没有额外查找时间)的情况下执行图5中所示的TT指令,因为指令可简单地重复使用通常已被提供用于检查现有存储器存取的比较器60、62。因为仅需要比较器网络的单次查找,所以与可触发返回与单个地址相关联的区域编号的替代示例相比较而言,图5和图6中所示的TT指令的形式具有额外益处,因为仅需要执行单个TT指令,而不是执行单独的指令以对照区域编号来检查第一地址和第二地址。因为可以预期TT指令在一些中断时延敏感任务(其中每个循环都重要)的关键路径上,所以这可以是明显优点。
图9图示处理范围检查指令的方法的流程图。在步骤100处,通过指令解码器7来解码范围检查指令。范围检查指令识别用于识别第一地址#add1和第二地址#add2的地址识别参数。在该示例中,范围检查指令具有约束第一地址#add1小于第二地址#add2的编码,但如果并非如此,则当对于特定指令而言地址识别参数识别出第二地址#add2小于第一地址#add1时,可以触发故障。
在步骤102处,解码器7识别出正在解码范围检查指令的哪个变体。这可以基于指令编码自身中的参数或储存在控制寄存器13中的参数。基于该变体,指令解码器7产生控制信号,以确定安全MPU 21和较不安全MPU 23中的哪一者应为用于响应于指令进行查找的选定MPU,且哪个特权级别应为假设用于检查相关MPU中的存取许可的选定特权级别。
如果指令属于第一变体,则在步骤104处,确定选定的MPU为安全MPU 21和较不安全MPU 23中对应于处理电路系统4的当前安全域的一者,并且选定的特权级别为处理电路系统4的当前特权级别。
如果该变体为第二变体,则在步骤106处,系统检查当前安全域是否为较不安全域,并且如果如此,则在步骤108处触发故障。因而,可以将第二变体的执行限制在安全域中的执行。如果当前域为安全域,则在步骤110处,当处理电路系统4在较不安全域中操作时,确定选定的MPU为较不安全MPU 23,并且选定的特权级别为与当前模式相关联的特权级别。
如果在步骤102处识别出所解码的范围检查指令的变体为第三变体,则在步骤112处,检查当前特权级别为无特权状态,并且如果如此,则再次在步骤108处触发故障。因而,将第三变体的执行限制在特权更高的状态。如果当前特权级别并非无特权状态,则在步骤114处,确定选定的MPU为安全MPU 21和较不安全MPU 23中与当前安全域相关联的一者,并强迫选定的特权级别为无特权的,而与处理电路系统4正在操作所处的当前特权级别无关。
如果指令的变体为第四变体,则在步骤116处,确定当前安全域是否为较不安全域和/或当前特权级别是否为无特权状态。如果当前域为较不安全域或当前特权级别为无特权状态,则在步骤118处,触发故障。因而,将第四变体的执行限制在处理电路系统处于安全域中和特权更高的状态中时。如果当前域并非较不安全域且当前特权级别并非无特权状态,则在步骤120处,确定选定的MPU为较不安全MPU 23,并确定选定的特权级别为无特权状态,而与处理电路系统4的当前特权级别无关。
无论遇到哪个变体,在步骤122处,控制存储器属性检查电路系统16以查找选定的MPU,其中将第一地址#add1与每个条目的下限地址相比较,并将第二地址#add2与每个条目的上限地址相比较。在图2的示例中,可以查找静态MPU寄存器储存器36和MPU缓存储存器32中的条目,并且如果第一地址或第二地址均未命中所述条目中的任一者,则可能需要执行表查找26,以便从存储器中的MPU表22获得存储器保护条目。此表查找可以基于第一地址或第二地址,因为可接着查询返回的任一条目以确定是否第一地址和第二地址中的另一者也匹配同一条目。对于在第一地址和第二地址中的一者匹配静态MPU寄存器储存器36或MPU缓存储存器32内的条目中的一者的情况下执行TT指令而言,不需要触发对存储器系统的表查找,因为将从本地储存在MPU 20内的条目知晓第二地址是否也匹配同一条目。
在步骤124处,确定第一地址和第二地址是否对应于选定的MPU的同一MPU条目。如果如此,则在步骤126处,将MPU状态值指示符MVALID设定为1,以指示第一地址和第二地址对应于同一存储器属性条目,而如果第一地址和第二地址不对应于同一条目,则在步骤128处将MVALID设定为0。如果MVALID等于1,则在步骤130处,假设选定的特权级别是在步骤104、110、114、120中的一者处选定,基于在匹配的MPU条目中所指定的信息来设定属性信息,例如R和RW旗标,其指示是否准许读取存取或是否准许读取和写入存取。如果在步骤124处第一地址和第二地址不对应于同一MPU条目,则可以省去步骤130。替代地,即使第一地址和第二地址不对应于同一MPU条目,仍可以执行步骤130,例如,基于来自对应于第一地址的条目的信息来设定属性信息,而无论第二地址是否也匹配同一条目。仅基于与第一地址相关联的条目来设定属性信息不成问题,因为其可由MVALID旗标量化,该MVALID旗标指示是否可将此信息视为也覆盖第二地址。因而,在一些实施中,在电路逻辑中可能较为简单的是,总是与第一地址和第二地址是否对应于同一MPU条目无关地来设定属性信息R、RW,而不是基于第一地址和第二地址是否对应于同一条目来提供用于抑制属性信息的更新的逻辑。在步骤128以后的两条替代虚线示出可实施的替代选项。
在步骤132处,查找SAU 42,其中再次将第一地址与每个安全保护(SAU)条目的下限地址相比较,并且将第二地址与每个安全保护条目的上限地址相比较。在步骤134处,处理电路系统确定第一地址和第二地址是否对应于同一SAU条目,并且如果如此,则在步骤136处将安全状态值SVALID设定为1,而如果第一地址和第二地址不对应于同一SAU条目,则在步骤138处将SVALID设定为0。在步骤140处,基于在匹配的SAU条目中所指定的信息来设定属性信息(例如,安全域旗标S,其指示是否将匹配的条目定义为地址空间的安全的或较不安全的区域)。至少在其中第一地址和第二地址对应于同一SAU条目的情况下执行步骤140,但(出于与MPU查找的原因类似的原因)在步骤138之后,可以执行步骤140或可以省去步骤140。虽然图9的示例示出步骤132至140是在步骤122至130之后按顺序地执行,但在其他示例中,SAU查找可以在MPU查找之前执行,或MPU和SAU查找可并行地执行。
在MVALID=1且SVALID=1的情况下,倘若软件尚未将SAU或MPU设定为在第一地址和第二地址之间的范围内具有重叠条目,则可保证的是,由S、R、RW参数指示的许可适用于第一地址和第二地址之间的整个范围。如果软件具有已定义的重叠区域,则无法保证此性质。如上所述,可能并不认为在提供硬件逻辑以强制MPU区域不重叠且SAU区域不重叠方面导致成本是合理的。
在步骤142处,处理电路系统可以基于从匹配的SAU条目导出的信息与从匹配的MPU条目导出的信息的组合产生组合许可指示符。另外,至少在MVALID为1且SVALID为1时,可以执行此步骤,但如果MVALID或SVALID为0则可以省去此步骤,或无论如何均执行此步骤(出于与上述原因类似的原因)。在该示例中,产生两个组合许可指示符:第一指示符LSR,其指示存取是否针对较不安全区域,并且当在选定的MPU中查找时是否准许在选定的特权状态下对该区域的读取存取;以及第二指示符LSRW,其指示匹配的地址区域是否为较不安全区域,并且当在选定的MPU中查找时是否准许在选定的特权级别下进行读取和写入。这些可以表示共同检查,执行该共同检查时常可为有用的,并且因此,通过提供单个位指示符来组合来自不同参数(从各种条目查找所述参数)的信息,这可允许迅速地执行后续检查。举例而言,如果当区域与安全域相关联时将安全旗标假设为1,并且当该区域与较不安全域相关联时将安全旗标假设为0,则可以基于(MVALID AND SVALID AND(NOT S)AND R)的结果来设定LSR,并且可基于(MVALID AND SVALID AND(NOT S)AND RW)的结果来设定LSRW。显然,有可能将替代映射用于这些参数中的一些(例如,S=0可以指示安全域,且S=1可以指示较不安全域),在此情况下,用于产生组合许可指示符的逻辑运算组合可变化。
在步骤144处,处理电路系统4至少将指示第一地址和第二地址是否对应于同一MPU条目的状态值MVALID、SVALID写入至软件可存取寄存器,例如,由范围检查指令所指定的目标寄存器Rd。还可以将在步骤130、140、142处确定的属性信息写入至寄存器。可选地,在步骤146处,指令还可以更新控制寄存器13中的一者中的条件旗标。可以响应于条件旗标设定指令来更新这些条件旗标以指定先前处理结果的各种条件,并且可以由条件指令来测试这些条件旗标,所述条件指令指定条件旗标将满足的测试条件,并有条件地根据条件旗标的当前值是否满足此测试条件来触发执行对应的条件操作。举例而言,可以将条件旗标中的一些设定为对应于组合许可指示符的值,以使得后续条件指令可以有条件地基于组合许可指示符的值而直接触发动作被执行。步骤144和146之间的虚线指示步骤146为可选的。然而,控制寄存器中的条件旗标可以表示软件可存取位置的另一示例,可以将指示第一地址和第二地址是否对应于同一条目的状态信息储存在该软件可存取位置处。在其他示例中,可以省去对目标寄存器的写入,并且指令的唯一结果可以为更新条件旗标(例如,省去步骤144)。在其他示例中,不将值写入至寄存器,而是可以将指示地址#add1、#add2是否对应于同一存储器属性条目的值写入至存储器。
在图9中所示的示例中,指令查询对应于MPU 20的第一组存储器属性条目以及对应于SAU 42的第二组属性条目。然而,TT指令还可以用于仅提供待检查的存储器属性条目的集合的系统中,因此没必要返回存储器属性条目的两个不同集合的值。
图10图示可使用的仿真器实施方式。虽然前述实施例在用于操作支持相关技术的特定处理硬件的装置和方法方面实施了本发明,但还有可能根据本文所述实施例来提供指令执行环境,该指令执行环境是经由使用计算机程序来实施的。可以时常将这些计算机程序称作仿真器,只要其提供硬件架构的基于软件的实施方式即可。仿真器计算机程序的种类包括仿真机、虚拟机、模型,以及二进制转译器,包括动态二进制转译器。通常,仿真器实施方式可以在主机处理器230上运行,该主机处理器230可选地运行主机操作系统220,该主机操作系统220支持仿真器程序210。在一些布置中,在硬件与所提供的指令执行环境和/或被提供在同一主机处理器上的多个相异的指令执行环境之间可能存在多个模拟层。从历史上看,需要强大的处理器提供以合理速度执行的仿真器实施方式,但在某些情境下此方法可能是合理的,例如,当出于兼容性或重复使用原因而期望运行原生于另一处理器的代码时。举例而言,仿真器实施方式可以提供具有额外功能(主机处理器硬件不支持该额外功能)的指令执行环境,或提供通常与不同硬件架构相关联的指令执行环境。在“一些高效的架构模拟技术(Some Efficient Architecture Simulation Techniques)”(RobertBedichek,1990年冬天的USENIX会议,第53-63页)中给出模拟的概述。
就先前已参考特定硬件构造或特征描述了实施例而言,在模拟实施例中,可以通过合适的软件构造或特征提供等效功能。举例而言,可以在模拟实施例中将特定电路系统实施为计算机程序逻辑。类似地,可以在仿真实施例中将诸如寄存器或缓存之类的存储器硬件实施为软件数据结构。另外,可以将用于存取硬件装置2中的存储器6的实体地址空间仿真为仿真地址空间202,该仿真地址空间202通过仿真器210映射至主机操作系统220所使用的虚拟地址空间上。在其中前述示例实施例中所引用的硬件组件中的一者或多者存在于主机硬件(例如,主机处理器230)上的布置中,一些模拟实施例可在适当情况下使用主机硬件。
可以将仿真器程序210储存在计算机可读储存介质(其可为非暂时性介质)上,并且该仿真器程序210提供至目标代码200(其可包括应用、操作系统和超管理器)的程序接口(指令执行环境),该程序接口与通过仿真器程序210模型化的硬件架构的应用接口相同。因此,可以使用仿真器程序210从指令执行环境内执行目标代码210的程序指令,以使得并不实际上具有上述装置2的硬件特征的主计算机230可以仿真这些特征。仿真器程序可以包括指令解码程序逻辑235,以及存储器存取检查程序逻辑240(包括MPU程序逻辑242和SAU程序逻辑244),其提供仿真图1的硬件装置2的指令解码器7和存储器存取检查电路系统22(包括MPU 26和SAU 24)的行为的功能。还可以使用由仿真器代码210维护的寄存器数据结构255来仿真系统2的架构寄存器14。因而,可以通过仿真器程序210以与上述技术对应的方式来执行存储器属性检查和对TT指令的支持。
在本申请中,词语“被配置为……”用于意指装置的组件具有能够执行所定义操作的配置。在此上下文中,“配置”意指硬件或软件的布置或互连方式。举例而言,装置可以具有提供已定义操作的专用硬件,或可经程序化以执行该功能的处理器或其他处理设备。“被配置为……”并不暗示装置组件需要以任何方式改变以提供已定义操作。
尽管本文中已参考附图详细描述了本发明的说明性实施例,但应理解,本发明并不限于那些精确实施例,并且本领域技术人员可以在不脱离如由所附权利要求所限定的本发明的范围和精神的情况下在其中进行各种改变和修改。
Claims (25)
1.一种装置,包括:
指令解码器,用于解码指令;
处理电路系统,用于响应于由所述指令解码器解码的指令而执行数据处理;以及
存储器属性检查电路系统,用于检查由所述处理电路系统发出的存储器存取请求是否满足在多个存储器属性条目中所指定的存取许可,每个存储器属性条目指定针对地址空间内的可变大小的对应地址区域的存取许可;其中:
响应于指定了地址识别参数的范围检查指令,所述指令解码器被配置为控制所述处理电路系统,以在至少一个软件可存取的储存位置中设定状态值,所述地址识别参数用于识别第一地址和第二地址,所述至少一个软件可存取的储存位置是能够由所述指令解码器所支持的至少一种类型的指令存取的,所述状态值指示所述第一地址和所述第二地址是否对应于同一存储器属性条目。
2.根据权利要求1所述的装置,其中,所述存储器属性检查电路系统被配置为准许所述可变大小为除了2的幂以外的字节数量。
3.根据权利要求1和2中任一项所述的装置,其中,所述处理电路系统被配置为准许所述第一地址与所述第二地址之间的差为除了2的幂以外的字节数量。
4.根据前述权利要求中任一项所述的装置,其中,所述地址识别参数识别基址寄存器和偏移量,所述第一地址要被从所述基址寄存器读取,所述偏移量用于识别所述第一地址与所述第二地址之间的差。
5.根据权利要求4所述的装置,其中,所述偏移量被指定为倍数和大小值,其中:
所述倍数和所述大小值中的一者为由所述范围检查指令指定的可变参数,并且
所述倍数和所述大小值中的另一者为如下各项中的一者:
固定值;
立即值,所述立即值由所述范围检查指令指定;以及
储存在由所述范围检查指令指定的寄存器中的值。
6.根据权利要求1至3中任一项所述的装置,其中,所述地址识别参数识别第一寄存器和第二寄存器,所述第一地址要被从所述第一寄存器读取,所述第二地址要被从所述第二寄存器读取。
7.根据前述权利要求中任一项所述的装置,其中,所述至少一个软件可存取的储存位置包括由所述范围检查指令指定的目标寄存器。
8.根据前述权利要求中任一项所述的装置,包括控制寄存器,所述控制寄存器用于储存至少一个条件状态指示,所述至少一个条件状态指示指示先前条件状态指示符产生指令的结果的性质;其中:
响应于条件指令,所述指令解码器被配置为控制所述处理电路系统,以便以储存在所述控制寄存器中的所述至少一个条件状态指示是否满足测试条件为条件来执行条件操作;并且
响应于所述范围检查指令,所述指令解码器被配置为控制所述处理电路系统,以便通过更新所述控制寄存器中的所述至少一个条件状态指示中的至少一者来设定所述状态值。
9.根据前述权利要求中任一项所述的装置,其中,响应于所述范围检查指令,至少当所述第一地址和所述第二地址两者均对应于同一存储器属性条目时,所述处理电路系统被配置为将属性信息储存至所述至少一个软件可存取的储存位置,所述属性信息是从对应于所述第一地址和所述第二地址的匹配的存储器属性条目导出的。
10.根据权利要求9所述的装置,其中,所述处理电路系统具有多个操作状态;并且
响应于所述范围检查指令的至少一个变体,所述处理电路系统被配置为基于存取许可导出所述属性信息,当处于与所述处理电路系统的当前操作状态不同的操作状态时,所述存取许可将被施加于对所述匹配的存储器属性条目的对应地址区域的存储器存取。
11.根据权利要求9所述的装置,其中,所述处理电路系统具有多个安全操作域,所述多个安全操作域包括安全域和较不安全域,并且在每个安全域内,所述处理电路系统被配置为在多个模式中的一者中并且在多个特权级别中的一者中操作;并且
所述指令解码器被配置为支持所述范围检查指令的以下变体中的至少一者:
第一变体,对于所述第一变体而言,所述属性信息指定当所述处理电路系统处于当前安全域中时在所述第一地址与所述第二地址之间的范围中的位置的存储器存取是否会被准许,以及与所述当前模式相关联的特权级别;
第二变体,对于所述第二变体而言,所述属性信息指定当所述处理电路系统处于与所述当前域不同的安全域中时在所述第一地址与所述第二地址之间的范围中的位置的存储器存取是否会被准许,以及当在此不同的安全域中操作时与所述当前模式相关联的特权级别;
第三变体,对于所述第三变体而言,所述属性信息指定当前安全域中在所述第一地址与所述第二地址之间的范围中的地址的存储器存取是否会被准许,以及与所述当前模式相关联的特权级别不同的特权级别;以及
第四变体,对于所述第四变体而言,所述属性信息指定当所述处理电路系统处于与所述当前域不同的安全域中时在所述第一地址与所述第二地址之间的范围中的位置的存储器存取是否会被准许,以及与所述当前模式相关联的特权级别不同的特权级别。
12.根据权利要求11所述的装置,其特征在于以下各项中的一者:
所述指令解码器被配置为支持所述第二变体和所述第四变体中的至少一者,所述不同的安全域包括所述较不安全域,并且所述处理电路系统被配置为:响应于在所述处理电路系统处于所述较不安全域中时对执行所述第二变体和所述第四变体中的所述至少一者的尝试,而触发故障的传讯;以及
所述指令解码器被配置为支持所述第三变体和所述第四变体中的至少一者,所述不同的特权级别包括比所述当前特权级别特权少的特权级别,并且所述处理电路系统被配置为:响应于在所述处理电路系统处于至少一个预定特权级别中时对执行所述第三变体和所述第四变体中的所述至少一者的尝试,而触发故障的传讯,其中,所述多个特权级别包括比所述至少一个预定特权级别特权多的至少一个特权级别。
13.根据前述权利要求中任一项所述的装置,其中,所述存储器属性检查电路系统被配置为检查由所述处理电路系统发出的存储器存取是否满足在第一多个存储器属性条目中指定的存取许可,并且检查所述存储器存取请求是否满足在第二多个存储器属性条目中指定的存取许可,并且
响应于所述范围检查指令,所述指令解码器被配置为控制该处理电路系统以在所述至少一个软件可存取的储存位置中设定以下项:
第一状态值,所述第一状态值指示所述第一地址和所述第二地址是否对应于所述第一多个存储器属性条目中的同一条目;以及
第二状态值,所述第二状态值指示所述第一地址和所述第二地址是否对应于所述第二多个存储器属性条目中的同一条目。
14.根据前述权利要求中任一项所述的装置,其中,所述多个存储器属性条目包括多个存储器保护条目,每个存储器保护条目指定指示以下各项中的至少一者的存取许可:
所述对应地址区域是只读的还是既可读取又可写入的;
允许所述处理电路系统的多个特权级别中的哪些特权级别存取所述对应地址区域。
15.根据权利要求14所述的装置,其中,所述存储器存取请求包括存取存储器系统的请求;并且
所述多个存储器保护条目包括存储器保护表,其中,所述存储器保护表储存在该存储器系统中。
16.根据权利要求15所述的装置,包括存储器保护缓存储存器电路系统,其用于缓存从所述存储器系统获得的所述存储器保护表的至少一个存储器保护条目。
17.根据前述权利要求中任一项所述的装置,其中,所述处理电路系统具有多个操作域,所述多个操作域包括安全域和较不安全域;并且
所述多个存储器属性条目包括多个安全属性条目,每个安全属性条目指定存取许可,所述存取许可指示所述多个域中的哪个域与所述对应地址区域相关联。
18.根据权利要求17所述的装置,其中,响应于所述范围检查指令的至少一个变体,至少当所述第一地址和所述第二地址两者均对应于同一安全属性条目时,所述处理电路系统被配置为:通过对应于所述第一地址和所述第二地址的匹配的安全属性条目,将属性信息储存至所述至少一个软件可存取的储存位置,所述属性信息是从指定为与所述对应地址区域相关联的安全域导出的。
19.根据权利要求17和18中任一项所述的装置,其中:
所述多个存储器属性条目还包括多个存储器保护条目,每个存储器保护条目指定指示以下各项中的至少一者的存取许可:
所述对应地址区域是只读的还是既可读取又可写入的;
允许所述处理电路系统的哪些特权级别存取所述对应地址区域;并且
响应于所述范围检查指令的至少一个变体,至少当所述第一地址和所述第二地址两者均对应于同一存储器属性条目时,所述处理电路系统被配置为将至少一个组合许可指示储存至所述至少一个软件可存取的储存位置,所述组合许可指示在单个指示符中指定以下二者是否均指定准许给定类型的存储器存取:对应于所述第一地址和所述第二地址的匹配的存储器保护条目中的存取许可、以及对应于所述第一地址和所述第二地址的匹配的安全属性条目中所指定的存取许可。
20.根据前述权利要求中任一项所述的装置,其中,所述存储器属性检查电路系统包括至少一组比较器,每一组比较器包括:
下限比较器,用于将存储器存取请求的目标地址与给定存储器属性条目的下限地址相比较;以及
上限比较器,用于将存储器存取请求的所述目标地址与所述给定存储器属性条目的上限地址相比较;并且
响应于所述范围检查指令,所述指令解码器被配置为控制所述处理电路系统,以将所述第一地址作为所述目标地址供应给每一组比较器中的所述下限比较器,并且将所述第二地址作为所述目标地址供应给每一组比较器中的所述上限比较器。
21.根据前述权利要求中任一项所述的装置,其中,所述范围检查指令的编码将所述第一地址约束为低于所述第二地址。
22.根据前述权利要求中任一项所述的装置,其中,响应于所述第二地址低于所述第一地址的范围检查指令,所述处理电路系统被配置为执行以下各项中的至少一者:
传讯故障;以及
返回状态值,所述状态值指示所述第一地址和所述第二地址不对应于同一存储器属性条目。
23.一种数据处理方法,包括以下步骤:
使用指令解码器来解码范围检查指令,所述范围检查指令指定用于识别第一地址和第二地址的地址识别参数;以及
响应于解码所述范围检查指令,控制处理电路系统以在至少一个软件可存取的储存位置中设定状态值,所述至少一个软件可存取的储存位置是能够由所述指令解码器所支持的至少一种类型的指令存取的,所述状态值指示所述第一地址和所述第二地址是否对应于多个存储器属性条目中的同一存储器属性条目,每个存储器属性条目指定针对地址空间内的可变大小的对应地址区域的存取许可。
24.一种计算机程序,用于控制主机数据处理装置以提供用于执行目标代码的指令的指令执行环境,所述计算机程序包括:
指令解码程序逻辑,用于解码所述目标代码的指令,并且控制所述主机数据处理装置以响应于经解码的指令来执行数据处理;以及
存储器属性检查程序逻辑,用于检查由所述目标代码的所述经解码的指令所触发的存储器存取请求是否满足在多个存储器属性条目中所指定的存取许可,每个存储器属性条目指定针对仿真地址空间内的可变大小的对应地址区域的存取许可,所述仿真地址空间是由所述指令执行环境仿真的;其中:
响应于指定了用于识别第一地址和第二地址的地址识别参数的范围检查指令,所述指令解码程序逻辑被配置为控制所述主机数据处理装置,以在至少一个软件可存取的储存位置中设定状态值,所述至少一个软件可存取的储存位置是能够由所述指令解码程序逻辑支持解码的至少一种类型的指令存取的,所述状态值指示所述第一地址和所述第二地址是否对应于同一存储器属性条目。
25.一种计算机可读储存介质,储存根据权利要求24所述的计算机程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1816957.3 | 2018-10-18 | ||
GB1816957.3A GB2578135B (en) | 2018-10-18 | 2018-10-18 | Range checking instruction |
PCT/GB2019/052336 WO2020079386A1 (en) | 2018-10-18 | 2019-08-20 | Range checking instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112602069A true CN112602069A (zh) | 2021-04-02 |
CN112602069B CN112602069B (zh) | 2024-09-06 |
Family
ID=64453697
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980055295.3A Active CN112602069B (zh) | 2018-10-18 | 2019-08-20 | 用于数据处理的装置、方法和计算机可读存储介质 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11720356B2 (zh) |
EP (1) | EP3867762B1 (zh) |
JP (1) | JP7449273B2 (zh) |
KR (1) | KR20210070974A (zh) |
CN (1) | CN112602069B (zh) |
GB (1) | GB2578135B (zh) |
IL (1) | IL280711B1 (zh) |
TW (1) | TWI835856B (zh) |
WO (1) | WO2020079386A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3557471B1 (en) * | 2018-04-20 | 2022-08-03 | ARM Limited | Power rail noise monitoring to detect attempted security tampering or side channel attacks |
FR3100901B1 (fr) * | 2019-09-12 | 2021-08-27 | Stmicroelectronics Grand Ouest Sas | Système de protection de la mémoire |
GB2587426B (en) * | 2019-09-30 | 2022-04-06 | Advanced Risc Mach Ltd | Atomic range compare and modify operations |
GB2589895B (en) * | 2019-12-11 | 2022-03-16 | Advanced Risc Mach Ltd | Intermodal calling branch instruction |
GB2600715B (en) * | 2020-11-05 | 2023-01-18 | Advanced Risc Mach Ltd | Technique for constraining access to memory using capabilities |
CN115312110A (zh) * | 2021-05-08 | 2022-11-08 | 瑞昱半导体股份有限公司 | 芯片验证系统及其验证方法 |
US11874776B2 (en) | 2021-06-25 | 2024-01-16 | Intel Corporation | Cryptographic protection of memory attached over interconnects |
US20230032586A1 (en) * | 2021-07-27 | 2023-02-02 | Intel Corporation | Scalable access control checking for cross-address-space data movement |
CN115729845A (zh) * | 2021-08-30 | 2023-03-03 | 华为技术有限公司 | 数据存储装置和数据处理方法 |
US11561898B1 (en) * | 2021-10-25 | 2023-01-24 | Arm Limited | Address expansion |
US20220197638A1 (en) * | 2022-03-14 | 2022-06-23 | Intel Corporation | Generating encrypted capabilities within bounds |
US12050784B2 (en) * | 2022-04-27 | 2024-07-30 | Micron Technology, Inc. | Data masking for memory |
GB2623986B (en) * | 2022-11-02 | 2024-10-30 | Advanced Risc Mach Ltd | Region identifier based on instruction fetch address |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805879A (en) * | 1996-02-23 | 1998-09-08 | Cyrix Corporation | In a pipelined processor, setting a segment access indicator during execution stage using exception handling |
US20130111181A1 (en) * | 2011-10-31 | 2013-05-02 | Lsi Corporation | Methods and apparatus for increasing device access performance in data processing systems |
CN103310163A (zh) * | 2012-02-08 | 2013-09-18 | Arm有限公司 | 使用安全域与次安全域的数据处理装置和方法 |
CN105980993A (zh) * | 2014-02-10 | 2016-09-28 | Arm 有限公司 | 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作 |
CN107924366A (zh) * | 2015-08-27 | 2018-04-17 | Arm 有限公司 | 用于控制指令执行行为的装置及方法 |
CN108292272A (zh) * | 2015-12-02 | 2018-07-17 | Arm有限公司 | 用于管理有界指针的装置和方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1524959A (en) * | 1974-12-21 | 1978-09-13 | Girling Ltd | Hydraulic reservoirs for vehicle braking systems |
US4087856A (en) * | 1976-06-30 | 1978-05-02 | International Business Machines Corporation | Location dependence for assuring the security of system-control operations |
US5889983A (en) * | 1997-01-21 | 1999-03-30 | Intel Corporation | Compare and exchange operation in a processing system |
US6009512A (en) * | 1997-10-27 | 1999-12-28 | Advanced Micro Devices, Inc. | Mechanism for forwarding operands based on predicated instructions |
US6516395B1 (en) * | 1997-11-20 | 2003-02-04 | Advanced Micro Devices, Inc. | System and method for controlling access to a privilege-partitioned address space with a fixed set of attributes |
US6343375B1 (en) * | 1998-04-24 | 2002-01-29 | International Business Machines Corporation | Method for optimizing array bounds checks in programs |
TW536684B (en) * | 2001-06-20 | 2003-06-11 | Sunplus Technology Co Ltd | Micro-controller architecture capable of increasing the code density by changeable instruction format |
US7287140B1 (en) * | 2003-07-28 | 2007-10-23 | Massachusetts Institute Of Technology | System and technique for fine-grained computer memory protection |
US7932912B1 (en) * | 2006-10-04 | 2011-04-26 | Nvidia Corporation | Frame buffer tag addressing for partitioned graphics memory supporting non-power of two number of memory elements |
JP4939382B2 (ja) | 2007-11-28 | 2012-05-23 | ルネサスエレクトロニクス株式会社 | 情報処理装置及びそのプログラム実行制御方法 |
JP5044387B2 (ja) | 2007-12-26 | 2012-10-10 | ルネサスエレクトロニクス株式会社 | 情報処理装置及びそのスタックポインタ更新方法 |
GB2517493A (en) | 2013-08-23 | 2015-02-25 | Advanced Risc Mach Ltd | Handling access attributes for data accesses |
US9229465B2 (en) * | 2014-03-26 | 2016-01-05 | Freescale Semiconductor, Inc. | Current-starved inverter circuit |
GB2543302B (en) * | 2015-10-14 | 2018-03-21 | Advanced Risc Mach Ltd | Vector load instruction |
-
2018
- 2018-10-18 GB GB1816957.3A patent/GB2578135B/en active Active
-
2019
- 2019-08-20 JP JP2021507901A patent/JP7449273B2/ja active Active
- 2019-08-20 US US17/271,373 patent/US11720356B2/en active Active
- 2019-08-20 EP EP19759687.7A patent/EP3867762B1/en active Active
- 2019-08-20 CN CN201980055295.3A patent/CN112602069B/zh active Active
- 2019-08-20 KR KR1020217004642A patent/KR20210070974A/ko active Search and Examination
- 2019-08-20 WO PCT/GB2019/052336 patent/WO2020079386A1/en unknown
- 2019-08-20 IL IL280711A patent/IL280711B1/en unknown
- 2019-09-12 TW TW108132919A patent/TWI835856B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805879A (en) * | 1996-02-23 | 1998-09-08 | Cyrix Corporation | In a pipelined processor, setting a segment access indicator during execution stage using exception handling |
US20130111181A1 (en) * | 2011-10-31 | 2013-05-02 | Lsi Corporation | Methods and apparatus for increasing device access performance in data processing systems |
CN103310163A (zh) * | 2012-02-08 | 2013-09-18 | Arm有限公司 | 使用安全域与次安全域的数据处理装置和方法 |
CN105980993A (zh) * | 2014-02-10 | 2016-09-28 | Arm 有限公司 | 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作 |
CN107924366A (zh) * | 2015-08-27 | 2018-04-17 | Arm 有限公司 | 用于控制指令执行行为的装置及方法 |
CN108292272A (zh) * | 2015-12-02 | 2018-07-17 | Arm有限公司 | 用于管理有界指针的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7449273B2 (ja) | 2024-03-13 |
GB201816957D0 (en) | 2018-12-05 |
GB2578135A (en) | 2020-04-22 |
CN112602069B (zh) | 2024-09-06 |
EP3867762A1 (en) | 2021-08-25 |
US11720356B2 (en) | 2023-08-08 |
US20210326134A1 (en) | 2021-10-21 |
JP2022503562A (ja) | 2022-01-12 |
IL280711A (en) | 2021-03-25 |
TW202030615A (zh) | 2020-08-16 |
WO2020079386A1 (en) | 2020-04-23 |
EP3867762B1 (en) | 2024-10-30 |
TWI835856B (zh) | 2024-03-21 |
IL280711B1 (en) | 2024-09-01 |
GB2578135B (en) | 2020-10-21 |
KR20210070974A (ko) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112602069B (zh) | 用于数据处理的装置、方法和计算机可读存储介质 | |
KR20210034027A (ko) | 메모리 시스템에 저장된 메모리 보호 테이블을 사용하는 메모리 보호 유닛 | |
CN110574009B (zh) | 用于管理对能力的使用的设备和方法 | |
EP3881189B1 (en) | An apparatus and method for controlling memory accesses | |
KR20210034618A (ko) | 메모리 시스템에 저장된 제어 테이블에 대한 이진 검색 절차 | |
CN111556996A (zh) | 控制存储器访问中的守卫标签检查 | |
JP2023526811A (ja) | タグチェック装置及び方法 | |
CN118339542A (zh) | 两阶段地址转换 | |
JP2023547065A (ja) | ケイパビリティを使用してメモリへのアクセスを制約するための技法 | |
JP7349437B2 (ja) | メモリ・アクセスにおける保護タグ・チェックの制御 | |
CN117222990A (zh) | 用于使用能力约束对存储器的访问的技术 | |
KR20240159950A (ko) | 메모리 어드레스 공간의 페이지에 대한 read-as-X 속성 | |
TW202403562A (zh) | 用於記憶體位址空間之頁面的「讀值只有x」性質 | |
WO2024175871A1 (en) | Address-dependent check | |
WO2024094956A1 (en) | Region identifier based on instruction fetch address |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |