CN116802638A - 上下文信息转换高速缓存 - Google Patents

上下文信息转换高速缓存 Download PDF

Info

Publication number
CN116802638A
CN116802638A CN202180088058.4A CN202180088058A CN116802638A CN 116802638 A CN116802638 A CN 116802638A CN 202180088058 A CN202180088058 A CN 202180088058A CN 116802638 A CN116802638 A CN 116802638A
Authority
CN
China
Prior art keywords
context information
cache
specified
context
translation
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
CN202180088058.4A
Other languages
English (en)
Inventor
安德鲁·布鲁克菲尔德·斯温
理查德·罗伊·格里森思怀特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 CN116802638A publication Critical patent/CN116802638A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Abstract

上下文信息相关指令致使基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作。上下文信息转换高速缓存10存储上下文信息转换条目,其各自指定未转换上下文信息和已转换上下文信息。查找电路14基于该指定上下文信息来执行该上下文信息转换高速缓存的查找,以识别该上下文信息转换高速缓存是否包括匹配上下文信息转换条目,该匹配上下文信息转换条目是有效的并且指定对应于该指定上下文信息的未转换上下文信息。当该匹配上下文信息转换条目被识别时,基于由该匹配上下文信息转换条目指定的该已转换上下文信息来执行该上下文信息相关操作。

Description

上下文信息转换高速缓存
本技术涉及数据处理领域。
数据处理装置可执行来自多个不同执行上下文中的一者的指令。例如,不同的应用程序、应用程序的子部分(诸如例如web浏览器内的标签)或处理的线程可被视为不同的执行上下文。给定的执行上下文可与指示该上下文的上下文信息(例如,可用于将该上下文与其他上下文区分开的上下文标识符)相关联。
至少一些示例提供了一种装置,包括:处理电路,所述处理电路响应于上下文信息相关指令而致使基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作;上下文信息转换高速缓存,所述上下文信息转换高速缓存存储多个上下文信息转换条目,其各自指定未转换上下文信息和已转换上下文信息;和查找电路,所述查找电路基于针对所述上下文信息相关指令指定的所述指定上下文信息来执行所述上下文信息转换高速缓存的查找,识别所述上下文信息转换高速缓存是否包括有效并且指定对应于所述指定上下文信息的所述未转换上下文信息的匹配上下文信息转换条目,并且当所述上下文信息转换高速缓存被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行所述上下文信息相关操作。
至少一些示例提供了一种装置,包括:用于处理的装置,所述装置响应于上下文信息相关指令而致使基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作;用于高速缓存上下文信息转换的装置,所述装置存储多个上下文信息转换条目,其各自指定未转换上下文信息和已转换上下文信息;和用于基于针对所述上下文信息相关指令指定的所述指定上下文信息来执行所述用于高速缓存的装置的查找的装置,所述装置识别所述用于高速缓存的装置是否包括有效并且指定对应于所述指定上下文信息的所述未转换上下文信息的匹配上下文信息转换条目,并且当所述用于高速缓存的装置被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行所述上下文信息相关操作。
至少一些示例提供了一种方法,包括:响应于由处理电路处理的上下文信息相关指令:基于针对所述上下文信息相关指令指定的指定上下文信息来执行上下文信息转换高速缓存的查找,所述指定上下文信息指示指定执行上下文,其中所述上下文信息转换高速缓存被配置为存储多个上下文信息转换条目,其各自指定未转换上下文信息和已转换上下文信息;基于所述查找,识别所述上下文信息转换高速缓存是否包括匹配上下文信息转换条目,所述匹配上下文信息转换条目是有效的并且指定对应于所述指定上下文信息的所述未转换上下文信息;以及当所述上下文信息转换高速缓存被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行上下文信息相关操作。
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
图1示意性地示出了具有上下文信息转换高速缓存的装置的示例;
图2示出了具有上下文信息转换高速缓存的数据处理系统的第一示例;
图3示出了处理电路可执行程序指令的多个不同权限级别;
图4示出了用于致使存储数据被写入存储器系统的上下文信息相关类型的存储指令的示例,其中存储数据的一部分包括上下文信息;
图5更详细地示出了上下文信息转换高速缓存和用于查找上下文信息转换高速缓存的查找电路的具体实施;
图6是示出上下文信息相关指令的处理的流程图;
图7是示出处理请求上下文信息的更新的指令的方法的流程图;
图8是示出处理请求存储在上下文信息转换高速缓存中的信息的更新的指令的方法的流程图;
图9示出了包括上下文信息转换高速缓存的数据处理系统的第二示例;并且
图10示出了用于转换上下文信息的上下文信息转换高速缓存的使用,该上下文信息用于控制由设备保持的高速缓存转换的无效。
在各种场景中,可能有用的是基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作。例如,这对于支持硬件设备的虚拟化可以是有用的,使得不同的执行上下文可共享相同的物理硬件设备但与该设备交互,如同它们具有其自身的专用设备一样,其中虚拟化硬件设备使用上下文信息来区分它从不同的执行上下文接收的请求。
特定软件过程(例如,操作系统)可负责分配与特定执行上下文(例如,在操作系统下运行的应用程序)相关联的上下文信息,但在支持虚拟化的系统中,设置上下文信息的过程本身可由管理程序或其他监督过程管理,并且可存在多个不同过程,其可各自设置其自身的用于执行上下文的上下文信息的值。监督过程可重新映射上下文信息以避免由在监督过程下操作的不同过程设置的上下文信息之间的冲突。用于处理该重新映射的一种方法是每当由监督过程管理的较低权限过程请求上下文信息的更新时,可发信号通知异常并且处理可对监督过程进行截获,该监督过程然后可将由较低权限过程选择的更新值重新映射到由监督过程选择的不同值。然而,此类例外降低了性能。
在下面讨论的技术中,提供上下文信息转换高速缓存以存储多个上下文信息转换条目,其各自指定未转换上下文信息和已转换上下文信息。当处理电路处理指定了指示指定执行上下文的指定上下文信息的上下文信息相关指令时,查找电路可基于针对上下文信息相关指令指定的指定上下文信息来执行上下文信息转换高速缓存的查找。查找识别上下文信息转换高速缓存是否包括匹配上下文信息转换条目,该匹配上下文信息转换条目是有效的并且指定对应于指定上下文信息的未转换上下文信息。当上下文信息转换高速缓存被识别为包括匹配上下文信息转换条目时,致使基于由匹配上下文信息转换条目指定的已转换上下文信息来执行上下文信息相关操作。因此,由于上下文信息转换高速缓存可高速缓存未转换上下文信息和已转换上下文信息之间的多个映射,因此这可帮助减小实现虚拟化所需的对监督过程的截获的数量。这可有助于提高性能。
上下文信息转换高速缓存充当高速缓存,使得尽管可能存在可分配到高速缓存中的上下文信息转换条目的未转换上下文信息的不同值的特定最大数量N,但在硬件中提供的上下文信息转换条目的总数量小于N。因此,不确定当查找电路针对指定上下文信息的特定值执行上下文信息转换高速缓存的查找时,在上下文信息转换高速缓存中将存在针对其的未转换上下文信息对应于指定上下文信息的对应条目。有时查找可识别高速缓存未命中。
换句话说,对于给定上下文信息转换条目,由该条目表示的未转换上下文信息是可变的(与使用固定映射来确定哪个特定条目识别指定上下文信息的给定值的转换的数据结构相反,使得在硬件中提供的给定条目将总是对应于未转换上下文信息的相同值)。对于上下文信息转换高速缓存,由查找电路执行的查找可基于内容可寻址存储器(CAM)查找,其中将指定上下文信息与上下文信息转换高速缓存的至少一个子集中的每个条目中的未转换上下文信息进行比较,以确定哪个条目是匹配上下文信息条目。在一些具体实施中,所查找的高速缓存的子集可以是整个高速缓存,使得当执行查找时,所有上下文信息转换条目将使其未转换上下文信息与指定上下文信息进行比较。其他具体实施可针对上下文信息转换高速缓存使用集合关联方案,使得取决于指定上下文信息,可选择高速缓存的条目的特定子集以用于在查找中进行比较,从而减小所需要的比较的数量。
上下文信息转换高速缓存可被实现为硬件管理的高速缓存或软件管理的高速缓存。
利用硬件管理的高速缓存,作为硬件电路逻辑设置的控制电路可负责控制未转换上下文信息的哪些特定值被分配到上下文信息转换高速缓存的上下文信息转换条目,而不要求执行指定要被分配到高速缓存中的未转换上下文信息的特定值的明确软件指令。例如,当上下文信息转换高速缓存的查找未命中时,控制电路可执行存储在存储器系统中的上下文信息转换数据结构的进一步查找以识别在上下文信息转换高速缓存中未命中的指定上下文信息的映射(类似于当在转换后备缓冲器中存在未命中时由存储器管理单元针对地址转换执行的页表行走)。如果使用硬件管理的高速缓存,则软件可负责维持存储器中的底层上下文信息转换数据结构,但不被要求执行用于指定要分配到上下文信息转换高速缓存的条目中的特定信息的指令。
然而,虽然这种硬件管理的高速缓存是可能的,但它可能招致更大的开销,既在实现用于管理上下文信息转换高速缓存的占用的控制电路的电路面积和功率成本的方面,又在由存储在存储器中的底层上下文信息转换数据结构占用的存储器占用面积的方面。在实践中,未转换上下文信息和已转换上下文信息之间的同时映射的数量可相对较小(与典型页表用于控制由存储器管理单元进行的地址转换的地址转换映射的数量相比)。此外,与通常对于每个存储器访问指令都需要的地址转换不同,可能存在相对有限数量的指令,这些指令需要对上下文信息进行转换,并且因此实现硬件管理的高速缓存的整个电路面积、功率和存储器占用成本可能不合理。
因此,在其他示例中,上下文信息转换高速缓存可以是软件管理的高速缓存。软件管理的高速缓存可在硬件方面包括用于存储上下文信息转换条目的存储电路和用于执行上下文信息转换高速缓存的查找的查找电路,但是不需要具有在硬件中实现的用于管理哪些特定未转换上下文信息值被分配到上下文信息转换高速缓存的条目的分配控制电路。相反,软件可通过将上下文信息转换高速缓存的新条目的信息写入用于提供对应上下文信息转换条目的特定存储位置来请求对上下文信息转换高速缓存的更新。例如,可使用一个或多个寄存器中的字段来实现每个上下文信息转换条目,其中提供的一个或多个寄存器的集合的数量对应于上下文信息转换条目的数量。因此,软件可请求更新特定寄存器以便更新特定上下文信息转换条目中的信息。查找电路仍可在硬件中设置以基于针对正执行的上下文信息相关指令指定的指定上下文信息来执行上下文信息转换高速缓存的查找,并且如果在上下文信息转换高速缓存中存在命中,则不需要软件介入并且改变上下文信息转换高速缓存的任何上下文。与先前描述的在对上下文信息的每次更新时发信号通知异常(其可能是频繁的,因为它可能在每次上下文切换时发生,并且对于性能而言也是差的)的方法或者硬件管理的高速缓存(其在电路面积、功率和存储器占用的方面可能是更昂贵的)的使用相比,软件管理的高速缓存可提供性能和硬件存储器成本之间的更好平衡。
对于其中上下文信息转换高速缓存被实现为软件管理的高速缓存的示例,当查找未能识别任何匹配上下文信息转换条目(即查找在上下文信息转换高速缓存中未命中)时,查找电路可触发异常的信令。异常可致使软件(诸如监督过程)介入并且改变上下文信息转换高速缓存的上下文以提供未转换上下文信息与已转换上下文信息之间的未命中映射。在应对异常之后,监督过程可然后返回到先前处理,并且当稍后重新执行上下文信息相关指令时,则现在可存在所需映射。应当注意,用未命中映射填充高速缓存所采取的特定步骤是正被执行的特定软件的设计选择,并且因此不是硬件装置或指令集架构的特征。
在上下文信息转换高速缓存中的未命中时触发的异常可与异常类型或综合信息相关联,该异常类型或综合信息将异常的原因识别为由于上下文信息转换高速缓存中的未命中。此外,可使得关于引起异常的上下文信息相关指令的信息可由响应于异常而执行的软件异常处理程序访问。例如,可使得引起异常的指令的地址和/或该指令的指定上下文信息可由异常处理程序访问,以允许异常处理机决定如何更新上下文信息转换高速缓存。
处理电路可以多个权限级别中的一者执行指令,该多个权限级别至少包括第一权限级别、具有比第一权限级别更大的权限的第二权限级别、以及具有比第二权限级别更大的权限的第三权限级别。例如,第一权限级别可旨供应用程序或用户级别代码使用,第二权限级别可用于以用户级别管理那些应用程序的客户操作系统,并且第三权限级别可用于管理在虚拟化系统中在其下运行的多个客户操作系统的管理程序或其他监督过程。较早描述的上下文信息转换高速缓存可用于支持这种环境中的虚拟化。
可允许以第一权限级别执行上下文信息相关指令。例如,可允许用户级别代码致使取决于指定上下文信息的特定操作被执行。然而,可能未必允许处于第一权限级别的代码读取或写入上下文信息本身,其可通过较高权限过程设置。
可从可响应于以第二权限级别执行的指令而更新的上下文信息存储位置(诸如寄存器或存储器位置)读取指定上下文信息。在一些示例中,可能不允许响应于以第一权限级别执行的指令而更新该上下文信息存储位置。
处理电路可允许响应于以第二权限级别执行的指令而更新上下文信息存储位置,而不需要对第三权限级别的截获。由于上下文信息转换高速缓存可管理将上下文信息存储位置中指定的上下文信息转换成已转换上下文信息,并且高速缓存中存在空间来同时存储未转换上下文信息与已转换上下文信息之间的多个映射,因此不需要每当更新上下文信息存储位置时(例如,在上下文切换时)的对第三权限级别的截获,如先前讨论的另选技术的情况。这有助于提高性能。
在处于第二权限级别的代码负责设置上下文信息存储位置中的指定上下文信息的情况下,可能有用的是,每个上下文信息转换条目还指定指示第二权限级别执行上下文的第二权限级别上下文标识符,其与由该上下文信息转换条目指定的未转换上下文信息与已转换上下文信息之间的映射相关联。在这种情况下,在上下文信息转换高速缓存的查找中,查找电路可将上下文信息转换条目识别为匹配上下文信息转换条目,该上下文信息转换条目是有效的,指定对应于指定上下文信息的未转换上下文信息,并且指定对应于与上下文信息相关指令相关联的当前第二权限级别上下文的第二权限级别上下文标识符。例如,相关联的第二权限级别上下文可以是管理执行上下文的客户操作系统,其中以第一权限级别执行上下文信息相关指令。在每个上下文信息转换条目中包括第二权限级别上下文标识符可帮助改进性能,因为这意味着当处于第三权限级别的过程在以第二权限级别操作的不同过程之间切换处理时,不必使处于第二权限级别的传出过程所选定的所有上下文信息映射无效,因为上下文信息转换高速缓存可高速缓存两个或更多个不同的第二权限级别过程的映射(即使其已限定未转换上下文信息的别名化值),其中第二权限级别执行上下文标识符区分当在与特定第二权限级别上下文相关联的执行上下文中执行上下文信息相关指令时应用哪个映射。这有助于减小当在处于第二权限级别的过程(诸如客户操作系统)之间切换时的以第三权限级别执行的管理程序或其他监督过程的开销,从而可有助于改进性能。
然而,在每个上下文信息转换条目中包括第二权限级别上下文标识符(例如,虚拟机标识符或客户操作系统标识符)不是必需的。其他具体实施可选择省略该标识符,并且在此情况下,当不同操作系统或处于第二权限级别的其他过程之间切换时,以第三权限级别处操作的管理程序或其他过程可能需要使与处于第二权限级别的传出过程相关联的任何条目无效以便确保处于第二权限级别的传入过程将不会无意地访问与传出过程相关联的旧映射中的任一者。
上下文信息转换高速缓存中的信息的设置可以是以第三权限级别操作的过程(诸如管理程序)的责任。因此,当上下文信息转换高速缓存的查找未能识别任何匹配上下文信息转换条目时,查找电路可触发将以第三权限级别处理的异常的信令。
上下文信息转换高速缓存的上下文信息转换条目可被允许响应于以第三权限级别执行的指令而被更新,但可被禁止响应于以第一权限级别或第二权限级别执行的指令而被更新。例如,上下文信息转换高速缓存的条目可由系统寄存器表示,该系统寄存器被限于仅由以第三权限级别或更高权限操作的指令更新。
上下文信息转换高速缓存可用于改进与任何上下文信息相关指令相关联的性能,该上下文信息相关指令在被执行时致使处理电路致使执行上下文信息相关操作。在一些情况下,上下文信息相关操作可由处理电路自身执行。对于其他类型的上下文信息相关指令,处理电路可发出对将由不同电路单元(诸如互连线、外围设备、系统存储器管理单元、硬件加速器、或存储器系统部件)执行的上下文信息相关操作的请求。
例如,上下文信息相关指令可以是指定目标地址和至少一个源寄存器的上下文信息相关类型的存储指令,针对其的上下文信息相关操作包括向存储器系统发出存储请求以请求将存储数据写入对应于目标地址的至少一个存储器系统位置,其中存储数据包括从至少一个源寄存器读取的源数据,其中源数据的一部分被由匹配上下文信息转换条目指定的已转换上下文信息替换。这种类型的指令可用于与硬件设备(诸如硬件加速器或外围设备)交互,该硬件设备可被虚拟化以使得在处理电路上执行的不同过程感知到它们使其自身的专用硬件设备被保留以供该过程使用,但实际上该硬件设备与其他虚拟化过程共享,其中上下文信息用于区分哪个过程请求将由虚拟化硬件设备执行的操作。被写入存储器系统的存储数据可例如表示对虚拟化设备的命令。通过用上下文信息替换源数据的一部分,这提供了用于向虚拟化设备传送哪个上下文已经发出命令的安全机制。在不支持上下文信息转换高速缓存的情况下,支持上下文信息相关类型的存储指令的装置可能由于在每个上下文切换时重新映射上下文信息的附加异常而经受增加的上下文切换延迟。因此,上下文信息转换高速缓存对于改进支持包括这种上下文信息相关类型的存储指令的指令集架构的装置中的性能而言可能特别有用。
更具体地,在一些具体实施中,上下文信息相关类型的存储指令可指定两个或更多个源寄存器以用于为该相同指令提供源数据。源数据的数据大小可大于存储在一个通用寄存器中的数据的大小。当配置硬件加速器时,提供用于将较大数据块转移到存储器系统且支持用上下文信息替换源数据的一部分的单个指令可以是极为有用的。
在一些示例中,响应于上下文信息相关类型的存储指令而发出的存储请求可以是基于存储数据的相应部分请求对多个存储器系统位置的原子更新的原子存储请求。如存储器系统位置的其他观察者观察的,此类原子更新可为不可分的。也就是说,如果另一个过程(不同于请求原子更新的过程)请求访问经受原子更新的存储器系统位置中的任一者,则原子更新确保了另一过程将看到两个或更多个存储器系统位置在原子存储请求所需的更新中的任一者之前的值,或看到那些存储器位置在已执行基于原子存储请求的更新中的每一者之后的新值。原子更新确保了更新的存储器系统位置的另一个观察者不可能看到部分更新,其中那些位置中的一些位置在更新之前具有先前值并且其他存储器位置在更新之后具有新值。此类原子存储请求可用于配置硬件加速器或其他虚拟化设备。例如,存储数据可被解释为将由设备作用于其上的命令,并且因此可能重要的是设备不会看到相关存储器系统位置的部分更新,因为这可能具有将命令不正确地解释为完全错误命令的风险。
响应于原子存储请求,处理电路可从存储器系统接收原子存储结果指示,其指示对存储器位置的原子更新是成功还是失败。这对于支持硬件加速器或其他设备的配置再次可以是有用的。例如,如果例如设备的命令队列没有空间来接受由原子存储请求的存储数据表示的命令,则设备可致使返回失败指示。
上下文信息相关指令的另一个示例可以是用于致使地址转换高速缓存无效请求被发出以请求来自至少一个地址转换高速缓存的地址转换数据的无效的指令,其中上下文信息相关操作包括发出地址转换高速缓存无效请求以请求与由查找电路进行的查找中识别的匹配上下文信息转换条目所指定的已转换上下文信息相关联的地址转换数据的无效。地址转换高速缓存可用上下文信息来标记高速缓存的转换数据以确保一个过程的转换不用于另一个过程,但当虚拟化被实现时,则此类上下文信息可能需要基于管理程序控制而被重新映射并且因此上下文信息转换高速缓存可通过减小在每个上下文切换时截获上下文信息的更新的需要而对于改进性能是有用的。
在地址转换无效要在与系统存储器管理单元(SMMU)相关联的外围设备中执行以代表该外围设备执行地址转换的情况下,上下文信息转换的使用可以是特别有用的。SMMU可具有用于高速缓存地址转换本身的转换后备缓冲器,并且可响应于从外围设备接收的请求对存储器的读取/写入的存储器访问请求而将由外围设备提供的虚拟地址转换成用于底层存储器系统的物理地址。
然而,一些SSMU还可支持提前地址转换功能(或“地址转换服务”),其中允许外围设备在实际需要访问对应存储器位置之前请求预转换地址,并且允许外围设备将那些预转换地址高速缓存在外围设备自身的地址转换高速缓存内。这种提前地址转换功能对于改进性能可能是有用的,因为在需要实际存储器访问时,获得已转换地址的延迟被减小,并且在延迟不处于关键路径上的时刻,而不是在实际需要存储器访问时,提前引起可能影响性能的对SMMU处的转换带宽的任何限制。
然而,支持这种提前地址转换功能的系统的问题在于,如果在处理电路上执行的软件使限定地址转换映射的页表信息无效,则在外围设备中高速缓存的与此类无效映射相关联的任何预转换地址本身可能需要被无效。因此,处理电路可使用上下文信息相关指令来触发SMMU以向外围设备发出地址转换高速缓存无效请求,从而从外围设备的地址转换高速缓存请求与匹配上下文信息转换条目所指定的已转换上下文信息相关联的任何预转换地址被无效。上下文信息转换高速缓存的使用可以是有用的,因为当使来自外围设备地址转换高速缓存的此类预转换地址无效时,设备可能已经高速缓存了针对可能与虚拟化外围设备交互的不同执行上下文的多个不同预转换地址集合,并且因此对于无效请求可能需要指定哪个上下文与要被无效的地址转换相关联,并且因此在缺少上下文信息转换高速缓存的情况下,每当操作系统执行应用程序级别过程之间的上下文切换并且因此更新上下文信息存储位置时,这可需要附加的管理程序截获。由于先前讨论的原因,通过提供上下文信息转换高速缓存,可避免许多此类截获。
当然,应当理解,上述上下文信息相关指令的两个示例不是穷尽的,并且上下文信息转换高速缓存也可用于取决于上下文信息的其他操作。
图1示意性地示出了具有用于响应于指令而执行数据处理的处理电路4的数据处理装置2的示例。尽管在图1的示例中未示出,但可提供指令解码器以对从存储器系统获取的指令进行解码并且控制处理电路4以执行对应操作。可支持的一种类型的指令是上下文信息相关指令,该上下文信息相关指令控制处理电路4以基于存储在上下文信息存储位置6内的指定上下文信息来执行上下文信息相关操作。例如,上下文信息可识别由处理电路4执行的应用程序、应用程序的一部分或处理的线程。存储在上下文信息存储位置6中的上下文信息可由操作系统设置,但可经受由管理程序进行的重新映射以支持虚拟化。为了加速这种重新映射,提供了上下文信息转换高速缓存10,该上下文信息转换高速缓存包括多个高速缓存条目12,每个高速缓存条目在有效时提供未转换上下文信息15和已转换上下文信息16之间的映射。当执行上下文信息相关指令时,这致使查找电路14执行上下文信息转换高速缓存10的查找以确定条目12中的任一者是否有效并且指定对应于存储在存储位置6中的指定上下文信息的未转换上下文信息15,并且如果是,则从匹配条目返回已转换上下文信息16。已转换上下文信息16然后可由处理电路4以用于上下文信息相关操作。通过支持在上下文信息转换高速缓存10内保留关于两个或更多个不同上下文信息转换映射的信息的能力,这减小了每当操作系统切换存储在上下文信息存储电路6中的信息时对管理程序的截获的需要,从而改进性能。
图2示出了使用此类上下文信息转换高速缓存10的处理系统2的更详细示例。系统包括多个处理元件,例如处理器核心或中央处理单元(CPU)20。应当理解,其他示例可具有其他类型的处理元件,诸如图形处理单元或GPU。
给定的CPU 20包括处理电路4和用于对将由处理电路4处理的指令进行解码的指令解码器22。CPU包括用于存储供处理电路处理的操作数并且存储由处理电路4生成的结果的寄存器24。寄存器24中的一者可以是充当先前描述的上下文信息存储位置6的上下文信息寄存器。如下文更详细讨论,寄存器24还可包括用于存储提供关于当前处理器状态的信息的其他标识符EL、ASID、VMID的其他状态寄存器或寄存器字段。CPU还包括用于管理从虚拟地址到物理地址的地址转换的存储器管理单元(MMU)26,其中虚拟地址从由处理电路4处理的存储器访问指令的操作数导出并且物理地址用以识别存储器系统内的物理存储器系统位置。
每个CPU 20可与用于高速缓存数据或指令以供CPU 20更快访问的一个或多个专用高速缓存28相关联。相应处理元件20经由互连线30耦接,该互连线可管理专用高速缓存28之间的一致性。互连线可包括在相应处理元件20之间共享的共享高速缓存32,其还可充当用于管理一致性的目标的探听过滤器。当在高速缓存28、32的任一者中不可获得所需数据时,则互连线30控制将在主存储器34中访问的数据。虽然存储器34在图2中被示为单个块,但它可被实现为不同类型的多个分离的不同存储器存储单元,例如使用动态随机存取存储器(DRAM)来实现的某种存储器和使用非易失性存储来实现的其他存储器。
在图2的示例中,未详细示出第二CPU 20的部件。第二CPU 20可具有与被示为包括处理电路4、指令解码器22等的CPU 20类似的部件。应当理解,系统2可具有为简明起见而未在图2中示出的许多其他元件。
在该示例中,系统包括硬件加速器40,该硬件加速器包括专门设计用于执行专用任务的定制处理电路42,其不同于包括在CPU 20中的通用处理电路4。例如,可提供硬件加速器40以用于加速密码操作、矩阵乘法操作或其他任务。硬件加速器40可具有某个本地存储装置44,诸如用于存储将由硬件加速器40的处理电路42处理的操作数的寄存器,并且可具有用于存储可由CPU 20发送到硬件加速器40的命令的命令队列46。例如,命令队列46的存储位置可以是可由CPU 20使用由处理电路4执行的加载/存储指令来访问的存储器映射寄存器,该加载/存储指令将映射到命令队列46中的位置的存储器地址指定为其目标地址。
在图2的示例中,CPU 20被设置有以上描述的上下文信息转换高速缓存10和查找电路14,以辅助改进虚拟化存储在上下文信息寄存器6中的上下文信息的性能,该上下文信息可用于与硬件加速器40交互的操作。
如图3所示,给定CPU 20中的处理电路4可支持以多个不同权限级别中的一者执行指令。在该示例中,存在至少三个不同的权限级别(也称为异常级别)EL0、EL1、EL2,其分别对应于第一权限级别、第二权限级别和第三权限级别。权限的级别从第一权限级别到第三权限级别增加,使得当处理电路正以较高权限级别执行指令时,则与以具有较低权限的权限级别操作时相比,处理电路可具有对寄存器24或存储器进行读取或写入的更大权利。如图2所示,CPU寄存器24可包括控制寄存器,该控制寄存器包括指示处理电路20的当前权限级别EL的字段46。权限级别之间的转变可在发生异常时或在从先前发生的异常返回时发生。
应当理解,用于图2所示的权限级别的标签EL0、EL1、EL2是任意的。在其他架构中,将可能使用具有较小权限级别编号的标签来指代与用较高权限编号标记的权限级别相比具有更大权限的权限级别。权限级别的数量不限于三个。一些具体实施可具有另外的权限级别,例如具有比第三权限级别更大的权限的第四权限级别、具有比第一权限级别更小的权限的另一权限级别、或图3所示的三个权限级别中的任两者之间的中间权限级别。
提供对不同权限级别的支持可用于支持虚拟化软件基础结构,其中使用用户级别代码来限定的多个应用程序可以第一权限级别EL0执行,那些应用程序可由以第二权限级别EL1操作的客户操作系统管理,并且以第三权限级别EL 2操作的管理程序可管理共存于相同硬件平台上的不同客户操作系统。
由管理程序实现的虚拟化的一个部分可以是控制由MMU 26执行地址转换的方式。以EL1操作的对应客户操作系统可针对特定应用程序限定虚拟到物理地址映射。客户操作系统可限定用于在其下操作的不同应用程序的不同页表映射集合,使得由不同应用程序指定的别名化虚拟地址可被映射到物理地址空间的不同部分。从客户操作系统的观点来看,这些已转换物理地址似乎为识别存储器系统28、32、34、40内的存储器系统位置的物理地址,但实际上这些地址为中间地址,其基于将中间地址映射到物理地址的另一页表集合(由处于EL2的管理程序设置)而经受进一步转换。
因此,MMU 26可支持两阶段地址转换,其中由MMU基于由处于EL1的客户操作系统设置的阶段1页表执行从虚拟地址到中间地址的阶段1转换,并且基于处于EL2的管理程序设置的阶段2页表在阶段2转换中将中间地址转换到物理地址。这意味着如果不同客户操作系统将它们的阶段1页表设置为将由不同应用程序使用的非共享变量的虚拟地址映射到相同中间地址,则这不是问题,因为管理程序阶段2映射然后可将这些别名化中间地址映射到不同物理地址,使得应用将访问存储器中的不同位置。应当注意,阶段1和阶段2转换作为两个单独步骤来执行不是必需的。MMU 26有可能包括组合的阶段1/阶段2转换后备缓冲器,其高速缓存直接从虚拟地址到物理地址的映射(基于阶段1和阶段2页表两者的查找而设置)。
为了辅助管理不同的阶段1转换上下文,需要阶段1页表的不同集合的每个应用程序或应用程序的一部分可由对应客户操作系统分配不同的地址空间标识符(ASID)。为了区分不同的级别2地址转换上下文,管理程序将虚拟机标识符(VMID)分配给相应的客户操作系统以指示当在该执行上下文中时应当使用哪种类型的级别2电缆。ASID和VMID的组合可唯一地标识要应用于给定软件过程的转换上下文。如图2所示,寄存器24可包括一个或多个控制寄存器,其包括用于指定与当前正在执行的执行上下文相关联的ASID 47和VMID 48的寄存器字段。这可在查找地址转换映射时使用以确保针对当前执行上下文获得正确的地址转换数据。
存储在上下文信息寄存器6中的上下文信息可从VMID或ASID导出,该VMID或ASID用于为了管理地址转换的目的而引用相关联的执行上下文。然而,在其他情况下,上下文信息寄存器可保持与特定执行上下文相关联的上下文标识符,该上下文标识符由处于EL1的操作系统在VMID或ASID处独立地设置。不管操作系统如何选择以限定上下文信息寄存器6,由于多个客户操作系统可共存并且可在寄存器6中设置上下文信息的别名化值,因此管理程序EL2可重新映射存储在上下文信息寄存器6中的信息以区分由不同操作系统管理的执行上下文。这对于处理取决于存储在寄存器6中的上下文信息的上下文信息相关操作可以是有用的。
图4示出了可用于例如与硬件加速器40交互的此类上下文信息相关操作的示例。提供了存储指令,该存储指令使用由指令指定的一个或多个地址操作数的集合来指定目标地址50,并且指定用于提供源数据56的一组源寄存器52,该源数据将用于形成要响应于存储指令而写入到存储器系统的存储数据54。地址操作数50可使用由存储指令指定的一个或多个另外的源寄存器24中存储的值和/或使用在存储指令的指令编码中直接指定的立即值来指定。指令支持指定多于一个源寄存器52以用于提供源数据56,使得要被写入存储器系统的存储数据54具有大于一个寄存器的宽度的大小。例如,在该示例中,存储是64字节存储指令并且假设每个寄存器存储64位(8字节),并且因此使用存储指令的源寄存器说明符52来指定八个单独的通用寄存器。当然,用于指令的特定具体实施的寄存器的数量可取决于每个寄存器的大小、待转移的数据块的大小,以及可以能够改变待转移的数据的大小的指令的任何其他参数而变化。
响应于存储指令,指令解码器22控制处理电路4以从由源寄存器说明符52识别的一组寄存器读取源数据56(在该示例中为64字节的数据)。指令假设源数据56的特定部分58将使用从上下文信息寄存器6读取的上下文信息60来替换(尽管如下所述,基于上下文信息转换高速缓存10将存在该值的重新映射)。存储数据54的剩余部分62与源数据56的对应部分相同。例如,在该具体实施中,使用上下文信息60来替换的源数据的部分58是存储数据的最低有效部分。例如,基于从上下文信息寄存器60读取的信息,从寄存器读取的源数据56的特定数量的最低有效位(例如,在此示例中为32位)被上下文信息60替换,以形成将在发送到存储器系统的存储器访问存储请求中指定的存储数据54。
在此示例中,针对上下文信息寄存器6中的上下文信息60指定的特定值(在此示例中标记为ACCDATA_EL1,以表示此寄存器提供可以权限级别EL1或更高级别写入的加速器数据)可由以EL1操作的操作系统任意地设置,因此不需要为了管理地址转换的目的而绑定到上下文标识符ASID、VMID。例如,操作系统可能希望将上下文标识符写入寄存器6以区分应用程序的不同子部分,这些子部分可共享相同的地址转换表并且因此可具有相同的ASID值,但仍然具有不同的上下文信息值。在其他示例中,寄存器6中的上下文信息60可从ASID导出。无论哪种方式,可能有用的是EL1代码设置可包括在要转移到存储器的数据中的上下文信息以提供安全机制,通过该安全机制,硬件加速器40可被给予与特定执行上下文相关联的命令或数据并且将这些命令或数据与从其他上下文提供的命令或数据区分开,使得硬件加速器40的相同硬件设备可被共享以用于以虚拟化方式在多个不同执行上下文之间使用。例如,存储数据54可表示要分配到硬件加速器的命令队列46中的命令,并且嵌入到存储数据中的上下文信息60因此可用于识别该命令涉及多个不同硬件加速处理流中的哪一者。
可能有用的是存储指令是原子存储指令,其中响应于存储指令而发送到存储器系统的请求指定了请求将被视为原子存储请求,这意味着将基于存储数据54更新的任何存储器系统位置应以原子方式更新,该原子方式由那些存储位置的其他观察者不可见地感知。这可使其他观察者(诸如硬件加速器40的其他执行上下文或控制逻辑)不可能看到由目标地址50识别的相关存储器系统位置的部分更新值(其中那些位置中的仅一些位置采用新值,而其他位置仍包含旧值)。用于实施该原子性的特定技术可以是具体实施相关的。例如,可存在用于阻止对特定位置的访问直到已经完成位置的原子组作为整体所需的所有更新的机制。另选地,可存在一种机制,其中允许读取对存储位置的更新,但如果在完成所有原子更新之前读取位置,则可设置危险检测位,并且危险检测位可用于检测原子性的失败并且因此反转先前的改变。用于实施对存储位置的原子访问的特定微架构技术可显著变化,但一般而言,可能有用的是对于如图4所示的存储指令,由处理电路4支持的指令集架构限定原子保证,使得需要符合该架构的任何微架构处理系统具体实施以提供存储数据54将被原子地写入对应存储器系统位置的保证。
指令集架构还可要求响应于存储指令而返回响应,该响应指示将存储数据原子更新到相关存储器系统位置是成功还是失败。例如,如果例如存储指令用于将命令写入硬件加速器40的命令队列46,但命令队列已经满了并且因此当前没有空间来容纳该命令,则失败响应的返回可能是有用的。此外,如果一些存储被部分更新并且然后在所有更新已经完成之前检测到对那些位置中的一者的外部请求,则可返回失败响应,使得失败响应可发信号通知失去原子性。其中返回失败响应的特定条件可取决于系统的特定微架构具体实施。
因此,可能有用的是,对于支持与硬件加速器40或使用存储器映射存储的其他设备的虚拟化交互的系统,支持可以原子方式转移相对大的数据块的存储请求,该原子方式具有对通过/失败响应消息的支持以及通过来自上下文信息寄存器6的上下文信息替换从寄存器读取的源数据的部分的能力。然而,在如图3所示的支持具有不同权限级别的虚拟化的系统中,虽然可能期望该上下文信息由处于EL1的操作系统设置,但管理程序可能希望重新映射由特定操作系统设置的上下文信息的值以避免与由其他操作系统设置的上下文信息值冲突。
用于处理该重新映射的一种方法是截获由处于EL1的软件尝试的对上下文信息寄存器6的任何更新以发信号通知异常,该异常然后致使以EL2操作的管理程序中的异常处理程序介入并且基于由处于EL1的客户操作系统指定的值来确定什么值实际上应当被存储到上下文信息寄存器6中。然而,在实践中,每当处于EL1的操作系统在不同的应用程序或应用程序的部分之间进行上下文切换时,该操作系统可更新上下文信息寄存器6,并且因此这可能在每个上下文切换需要对管理程序的附加截获,这可增加上下文切换延迟并且因此降低性能。
如图5所示,提供上下文信息转换高速缓存10和查找电路14可帮助减小寄存器6中的上下文信息的这种虚拟化重新映射的开销。上下文信息转换高速缓存10包括以硬件设置的一组寄存器,其被指定为表示上下文信息转换高速缓存的内容,使得每个条目12由一个或多个寄存器中的字段表示。寄存器可以是可由特定软件指令读取的架构上可访问的寄存器。存储上下文信息转换高速缓存10的内容的寄存器被限制进行访问,使得当处理电路4以EL2或更高的权限级别操作时它们可被写入,但当以EL0或EL1操作时它们是不可写入的。表示上下文信息转换高速缓存10的寄存器仍可以EL0或EL1进行读取(至少出于处理电路在以EL0或EL1执行上下文信息相关指令时的内部目的),但处于EL0或EL1的软件未必可以能够确定存储在上下文信息转换高速缓存10的寄存器中的值。在一些情况下,当处于EL0或EL1时对上下文信息转换高速缓存寄存器的读取可被限制为仅用于处理电路4生成已转换上下文信息的内部目的,但这可对处于EL0或EL1的软件可见的数据隐藏(例如,用于读取这些寄存器的内容的系统寄存器访问指令可被保留用于仅以EL2或更高EL执行)。
对于上下文信息转换高速缓存10的每个条目12,存在一个或多个寄存器的对应集合,该寄存器包括用于存储信息的多个字段,包括:有效字段70,其用于存储指示相应条目12是否有效的有效指示符;未转换上下文信息字段72,其指定对应于该条目12的未转换上下文信息;和已转换上下文信息字段74,其指定对应于未转换上下文信息的已转换上下文信息。在此示例中,每个条目12还包括虚拟机标识符(VMID)字段72,其指定与和该条目12的映射相关联的阶段2转换上下文相关联的VMID。
查找电路14包括内容可寻址存储器(CAM)搜索电路,其用于执行各种未转换上下文信息字段72与针对给定上下文信息相关指令指定的对应上下文信息的各种比较。因此,查找电路包括比较电路80和条目选择电路82。当执行上下文信息相关指令时,比较电路80将针对上下文信息相关指令指定的上下文信息60和当前VMID 84(分别从上下文信息寄存器6和寄存器24的相关VMID字段48读取)与上下文信息转换高速缓存10的至少一部分内的每个条目12的未转换上下文信息字段72和VMID字段76中的对应信息进行比较。在此示例中,每个条目12将其未转换上下文信息72和VMID 76与来自寄存器6和VMID 84的指定上下文信息60相比较,但在其他示例中,可使用集合关联高速缓存结构来限制多少条目12将其信息与当前指令的指定上下文信息60和VMID 84相比较。基于这些比较,比较电路80确定指定的上下文信息60和VMID 84是否匹配高速缓存10的任何条目12的对应未转换上下文信息72和VMID 76。基于这些匹配指示和每个条目的有效指示70,在高速缓存命中的情况下,条目选择电路82识别特定条目12,该特定条目为匹配上下文信息转换条目,其是有效的并且具有对应于指定上下文信息60和VMID 84的未转换上下文信息和VMID。在存在高速缓存命中的情况下,则不需要触发任何异常,而是返回从匹配条目读取的已转换上下文信息74,并且其由处理电路4出于上下文信息相关操作的目的使用。例如,来自匹配条目的已转换上下文信息74用于替换源数据56的部分58以形成如图4所示的用于存储指令的存储数据54。
另一方面,如果上下文信息转换高速缓存10的有效条目中没有一者具有与对应值60、84匹配的未转换上下文信息72和VMID 76两者,则检测到未命中,并且然后查找电路14发信号通知异常以致使将以EL2执行对异常处理程序的截获。异常处理硬件可设置识别关于异常原因的信息的异常综合信息,诸如区分异常是由上下文信息转换高速缓存10中的未命中引起的异常类型指示符,和/或引起异常的上下文信息相关指令的地址的指示。这些可由管理程序的异常处理例程使用以确定导致高速缓存中的未命中的未转换上下文信息并且确定对应于该未转换上下文信息的已转换上下文信息应当是什么。管理程序的软件可更新上下文信息转换高速缓存10的寄存器中的一些以分配新条目12来表示未转换上下文信息的所需值的上下文信息转换映射。如果不存在可用于接受该新映射的无效上下文信息转换高速缓存条目12,则处于EL2的异常处理程序的软件可选择要用未转换上下文信息60的新值的映射来替换的现有条目中的一者。一旦已经执行了为寄存器6中的未转换上下文信息提供映射所需的对上下文信息转换高速缓存10的任何所需更新,则管理程序可触发异常返回到以EL0或EL1执行的代码,该代码然后可重新尝试执行触发异常的指令,并且这次可预期存在高速缓存命中,使得可获得已转换上下文信息74并且将其用于处理上下文信息相关操作的处理(例如,如图4的示例所示的存储数据54的一部分的替换)。
因此,利用这种方法,不再需要截获对上下文信息寄存器6的更新,因此处于EL0的应用程序级别过程之间的上下文切换更快。尽管在上下文信息转换高速缓存10中尚未高速缓存上下文信息的所需重新映射时,当尝试执行上下文信息相关指令时,偶尔可能存在对EL2的截获,但这可较不频繁地发生。在许多情况下,在其间切换的同时上下文的数量可足够小以适合在特定大小(诸如16、32或64个条目)的上下文信息转换高速缓存10中提供的硬件条目12,使得可能需要相对少的管理程序截获。在任何情况下,即使在其间切换的不同上下文的映射的数量大于在硬件中提供的条目12的数量,管理程序EL2的截获的数量仍然可比在截获对上下文信息寄存器6的每个更新的方法中低得多。
虽然图5示出了其中每个高速缓存条目12用处于EL1的对应过程的VMID 76来标记的示例,但这不是必要的,并且其他具体实施可从高速缓存条目12中省略VMID字段76。在这种情况下,当在不同虚拟机或以EL1操作的其余操作系统之间切换时,管理程序的软件可能需要执行一些附加操作以使上下文信息转换高速缓存条目10无效。
图6是示出处理上下文信息相关指令(诸如图4所示的存储指令)的方法的流程图。在步骤S100,指令解码器22对下一指令进行解码并且检查它是否为上下文信息相关指令,并且如果不是,则指令解码器22控制处理电路4以执行另一个类型的操作并且行进到下一指令。如果已解码的指令是上下文信息相关指令,则指令解码器22控制处理电路4和查找电路14以执行图6所示的剩余步骤。在步骤S102处,处理电路4从上下文信息寄存器6读取指定上下文信息。在步骤S104处,查找电路14基于从寄存器6读取的指定上下文信息60(并且任选地基于上述示例中的VMID)来执行上下文信息转换高速缓存的查找。在步骤S106处,查找电路基于指定上下文信息与上下文信息转换高速缓存的至少一个子集中的每个条目12的未转换上下文信息字段72的比较来确定高速缓存查找中存在命中还是未命中。如果存在有效并且指定对应于指定上下文信息的未转换上下文信息72的匹配上下文信息转换条目(并且,如果支持VMID字段76,如果该条目的VMID字段76匹配与处于EL1的当前活动过程相关联的VMID,该当前活动过程与执行上下文信息相关指令的过程相关联),则检测到命中。如果没有找到此类匹配条目,则检测到未命中。
如果在查找中检测到命中,则在步骤S108处,查找电路从上下文信息转换高速缓存10的有效匹配条目返回已转换上下文信息74。在步骤S110处,处理电路4致使基于由匹配上下文信息转换条目指定的已转换上下文信息74来执行上下文信息相关操作。例如,该操作可以是通过已转换上下文信息替换存储指令的源数据56的部分58以形成用于原子存储请求的存储数据54,如以上相对于图4所描述的,但也可以是其他类型的上下文信息相关操作(例如,如以下第二示例所述的地址转换高速缓存无效)。
如果在步骤106处,在查找中检测到未命中,则在步骤S112处,查找电路14发信号通知将以第三权限级别EL2处理异常以应对所需的转换映射在上下文信息转换高速缓存10中不可用的事实。管理程序内的软件异常处理程序可例如通过更新上下文信息转换高速缓存10内的任何信息以提供未命中的上下文信息转换来响应于该异常,使得在从异常返回之后执行上下文信息相关指令的后续尝试可然后成功并且命中高速缓存。
因此,在该示例中,上下文信息转换高速缓存10是软件管理的高速缓存,其中用于管理哪些未转换上下文信息值被分配高速缓存10中的映射的责任在于管理程序的软件,该软件可执行用于更新高速缓存10的寄存器的指令。然而,其他实施方案可提供硬件管理的高速缓存,其中,除了查找电路14之外,上下文信息转换高速缓存还与在硬件电路逻辑中实现的高速缓存分配控制电路相关联,该高速缓存分配控制电路响应于查找中的未命中而控制上下文信息转换高速缓存10以通过指定上下文信息60的所需映射来更新,例如通过发起从存储在存储器系统中的映射数据结构的获取,该映射数据结构由与处于EL2的管理程序相关联的代码维护。然而,实际上,在上述示例中示出的软件管理的高速缓存可能是足够的,并且可提供硬件成本、存储器占用和性能之间的更好平衡。
在上述示例中,从寄存器6获得用于查找上下文信息转换高速缓存的指定上下文信息60,该寄存器是专用于为至少图4所示的存储指令提供上下文信息的专用系统寄存器。然而,在其他示例中,可从通用寄存器或从存储器中的位置获得将用于特定类型的指令的指定上下文信息。例如,将用于特定类型的指令的上下文信息最终可从存储在存储器34的一部分中的存储结构导出,该存储结构由以EL1操作的代码管理,并且当需要准备执行上下文信息相关指令时可被读取到通用寄存器中。在执行上下文信息相关指令时,处理电路4然后可从通用寄存器读取信息。在这种情况下,为了防止处于EL0的代码更新上下文信息,在存储器中存储底层上下文数据结构的页面的页表条目可限定属性以确保这些页面对于EL0不可访问但是可由EL1更新。因此,上下文信息不必存储在专用寄存器内。更一般地,可从可以EL1或更高级别更新的任何位置读取上下文信息。
图7示出了用于控制上下文信息的更新的程图。当在步骤S120处由指令解码器22对请求上下文信息的更新的指令进行解码时,则执行后续步骤S122-S126。如上所述,该指令可以是用于更新专用上下文信息寄存器6的系统寄存器更新指令,或者可以是存储指令,对于该存储指令,存储指令的目标地址被映射到通过EL1维护的上下文数据结构,其中该地址的页表条目指定访问限于EL1或更高。当遇到此类指令时,则在步骤S122处,确定当前权限级别是否为EL1或更高,并且如果是,则在步骤S124处,将由指令指定的上下文信息存储位置更新为新值,而不需要对EL2的任何截获,因为改为使用上下文信息转换高速缓存10在硬件中处理上下文信息的管理程序重新映射。另一方面,如果存在从以第一权限级别EL0操作的代码更新上下文信息存储位置的尝试,则在步骤S126处发信号通知异常以防止更新发生并且致使异常处理程序应对设置上下文信息的不适当尝试。
图8示出了说明处理更新上下文信息转换高速缓存的尝试的方法的流程图。如上所述,上下文信息转换高速缓存10可被实现为仅响应于以EL2或更高的指令执行而可更新的一组寄存器。当在步骤S130处指令解码器22对请求上下文信息转换高速缓存的更新的指令进行解码时,执行后续步骤S132-S136。例如,该指令可以是系统寄存器更新指令,其将用于存储上下文信息转换高速缓存10的内容的寄存器之一的标识符指定为要更新的寄存器。当此类指令被执行时,则在步骤S132处,处理电路检查当前权限级别是否为EL2或更高,并且如果是,则在步骤S134处,通过如由所执行的指令指定的至少一个字段的新值更新上下文信息转换高速缓存10。如果存在响应于以EL0或EL1执行的指令而更新上下文信息转换高速缓存的尝试,则在步骤S136处,禁止该更新并且发信号通知异常。
图9示出了处理系统2的第二示例,其中上下文信息转换高速缓存10可以是有用的。在该示例中,代替提供硬件加速器40,系统包括外围设备150和用于代表外围设备150管理地址转换的系统存储器管理单元(SMMU)152。例如,外围设备150可以是与系统2的其他部件分开的集成电路上的片外设备。图9所示的系统2的其他部件与先前相对于图2讨论的对应编号的部件相同。虽然图9示出了不具有先前描述的硬件加速器40的示例,但应当理解,也可包括硬件加速器40,并且在一些具体实施中,图9的系统仍然可支持先前参考图4描述的存储指令。虽然图9示出了耦接到SMMU 152的单个外围设备150,但其他示例可在多个不同外围设备之间共享SMMU 152。
SMMU 152包括转换电路154,其用于将由外围设备150发出的存储器访问所指定的虚拟地址转换成指代存储器系统中的存储器系统位置的物理地址。这些转换可基于由CPU20内的MMU 26使用的相同页表集合。SMMU 152可具有用于高速缓存在此类转换中使用的转换数据的一个或多个转换后备缓冲器(TLB)156。SMMU可具有用于存储控制数据的一组存储器映射寄存器158,该控制数据可配置SMMU 152的行为,并且可由在CPU 20上执行的软件通过执行以映射到那些寄存器158的存储器地址为目标的存储指令来设置。类似地,SMMU可具有命令队列160,其可使由CPU 20发出的SMMU命令排队以用于请求SMMU 152执行某些动作。CPU 20可通过执行指定映射到命令队列160的目标存储器地址的存储指令来发出此类命令,其中存储数据表示将由SMMU 152作用的命令的内容。如图9所示,SMMU 152还可包括先前描述的上下文信息转换高速缓存10和查找电路14,其用于转换上下文标识符的目的。
如图10所示,上下文信息转换高速缓存10可对于其有用的一种类型的SMMU命令可以是无效命令,该无效命令可致使SMMU 152向外围设备150发出无效请求,以从由外围设备150本地维护的地址转换高速缓存162请求使与指定上下文相关联的任何地址转换无效。外围设备150本身可不具有任何地址转换能力,这是为什么提供SMMU 152来管理外围设备150的转换的原因。然而,如果在多个外围设备150之间共享SMMU 152,则可能存在对转换电路154和TLB 156中可用的带宽和资源的竞争,这可导致由某些外围设备150发出的访问请求的延迟。因此,一些外围设备150可支持提前地址转换功能,其中允许外围设备150在外围设备实际想要针对特定地址访问存储器的时间之前请求该地址的预转换,并且然后可将由SMMU 152返回的预转换地址高速缓存在外围设备150本地的预转换地址高速缓存162内。这意味着在该延迟不在正由外围设备150执行的操作的关键定时路径上的点处发生对SMMU资源的任何竞争,因为转换是提前执行的。当外围设备实际上想要针对给定地址访问存储器时,如果预转换地址已经在外围设备的高速缓存162中可用,则它可简单地向SMMU 152发出指定先前接收的预转换地址的预转换访问请求,并且这避免了SMMU需要重复转换并且因此减小了在处理后续存储器访问时的SMMU处的延迟。当使用提前地址转换功能时提前执行的地址转换过程的部分可以是整个地址转换过程(包括阶段1和阶段2两者),或者可另选地可仅包括阶段1,返回中间地址,使得阶段2在执行实际存储器访问时仍然被完成。对提前地址转换功能的支持的任一方式有助于在从外围设备150访问存储器时减小延迟。
然而,当外围设备150可本地高速缓存预转换地址时,存在以下风险:如果在CPU20上执行的软件改变用于给定执行上下文的页表,则外围设备150可能仍然保持与当前过时的先前页表相关联的预转换的地址,并且因此CPU 20可能需要一种机制,通过该机制,其可强迫使用提前地址转换功能的任何外围设备150使与页表改变的执行上下文相关联的任何预转换地址无效。
因此,图10示出了无效命令指令,其可由CPU 20执行以致使外围设备150使此类预转换地址无效。指令是存储指令,其地址操作数170指定映射到SMMU 152的命令队列160的存储器地址,并且其数据操作数172指定信息作为存储数据174,该信息包括:命令编码176,其将命令的类型标识为地址转换无效命令;虚拟地址178,其指定来自外围设备150的高速缓存162的要针对其使预转换地址无效的单个地址或地址范围;以及流标识符(ID)180,其充当与要针对其使地址无效的执行上下文相关联的上下文信息。应当注意,这种形式的指令意味着充当要在上下文信息转换高速缓存10中查找的指定上下文的上下文信息180不一定是与当前活动上下文相关联的上下文信息,因为该上下文标识符实际上可指不再活动或使其页表改变的先前活动上下文。流ID 180可从存储在由处于EL1的操作系统管理的存储器中的数据结构导出,因此在执行充当图1所示的无效命令指令的存储指令时,可从通用寄存器24读取流ID 180,该流ID先前从存储器中的数据结构加载到该通用寄存器。流ID不需要从先前描述的ASID或VMID导出,而是可被设置为由处于EL1的操作系统分配到特定执行上下文的其他任意值。
如图10所示,当执行存储指令时,CPU 20向存储器系统发送存储请求,该存储器系统基于地址170识别该地址被映射到SMMU 152的命令队列160。因此,表示ATC命令的存储数据174被写入命令队列160。作为响应,SMMU 152从命令编码176中识别这是请求它向外围设备150发送请求以请求已预转换地址无效的命令。为了支持基于由处于EL2的管理程序控制的重新映射而以EL1设置的流ID 180的虚拟化,使用上下文信息转换高速缓存10来重新映射来自从CPU 20接收的命令174的指定流ID 180。由查找电路14在上下文信息转换高速缓存10中查找指定流ID 180。如果检测到未命中,则可发信号通知异常以引起对处于EL2的管理程序的截获,使得管理程序然后可更新上下文信息转换高速缓存10。这次因为上下文信息转换高速缓存在SMMU 152内而不是在CPU 20的系统寄存器内,所以要由处于EL2的管理程序执行以更新上下文信息转换高速缓存10的指令可以是指定映射到实现上下文信息转换高速缓存10的SMMU 152的内部寄存器的目标地址的存储指令,而不是如先前示例中的以CPU 20的内部寄存器24为目标的系统寄存器更新指令。
如果检测到命中,则返回已转换流识别信息182,并且SMMU 152向外围设备150发送无效请求184,其指定已转换流ID 182和识别针对其将使转换无效的地址或地址范围的虚拟地址信息178。响应于无效请求184,外围设备150在其预转换地址高速缓存162中查找已转换流ID 182和虚拟地址信息176,并且使与该流ID和虚拟地址信息相关联的任何高速缓存转换无效。因此,如在较早的实施方案中那样,上下文信息转换高速缓存10允许管理程序限定未转换和已转换的上下文信息之间的不同映射,使得上下文信息的虚拟化是可能的,而不需要每当遇到未转换上下文信息(流ID180)的不同值时的对管理程序的截获,以减小管理程序截获的频率并且因此改进虚拟化系统的性能。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化和修改。

Claims (18)

1.一种装置,所述装置包括:
处理电路,所述处理电路响应于上下文信息相关指令而致使基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作;
上下文信息转换高速缓存,所述上下文信息转换高速缓存存储多个上下文信息转换条目,所述多个上下文信息转换条目各自指定未转换上下文信息和已转换上下文信息;和
查找电路,所述查找电路基于针对所述上下文信息相关指令指定的所述指定上下文信息来执行所述上下文信息转换高速缓存的查找,识别所述上下文信息转换高速缓存是否包括有效并且指定对应于所述指定上下文信息的所述未转换上下文信息的匹配上下文信息转换条目,并且当所述上下文信息转换高速缓存被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行所述上下文信息相关操作。
2.根据权利要求1所述的装置,其中所述上下文信息转换高速缓存是软件管理的高速缓存。
3.根据权利要求1和2中任一项所述的装置,其中当所述上下文信息转换高速缓存的所述查找未能识别任何匹配上下文信息转换条目时,所述查找电路被配置为触发异常的信令。
4.根据任一前述权利要求所述的装置,其中所述处理电路被配置为以多个权限级别中的一者执行指令,所述多个权限级别至少包括:
第一权限级别,
具有比所述第一权限级别更大的权限的第二权限级别,和
具有比所述第二权限级别更大的权限的第三权限级别。
5.根据权利要求4所述的装置,其中允许以所述第一权限级别执行所述上下文信息相关指令。
6.根据权利要求4和5中任一项所述的装置,其中响应于所述上下文信息相关指令,所述处理电路被配置为从上下文信息存储位置读取所述指定上下文信息,所述上下文信息存储位置可响应于以所述第二权限级别执行的指令而更新。
7.根据权利要求6所述的装置,其中所述处理电路被配置为允许响应于以所述第二权限级别执行的所述指令而更新所述上下文信息存储位置,而不需要对所述第三权限级别的截获。
8.根据权利要求6和7中任一项所述的装置,其中每个上下文信息转换条目还指定第二权限级别上下文标识符,所述第二权限级别上下文标识符指示与所述未转换上下文信息和由该上下文信息转换条目指定的所述已转换上下文信息之间的映射相关联的第二权限级别执行上下文;并且
在所述上下文信息转换高速缓存的所述查找中,所述查找电路被配置为将上下文信息转换条目识别为所述匹配上下文信息转换条目,所述上下文信息转换条目是有效的,指定对应于所述指定上下文信息的所述未转换上下文信息,并且指定对应于与所述上下文信息相关指令相关联的当前第二权限级别上下文的所述第二权限级别上下文标识符。
9.根据权利要求4至8中任一项所述的装置,其中当所述上下文信息转换高速缓存的所述查找未能识别任何匹配上下文信息转换条目时,所述查找电路被配置为触发将以所述第三权限级别处理的异常的信令。
10.根据权利要求4至9中任一项所述的装置,其中所述上下文信息转换高速缓存的所述上下文信息转换条目被允许响应于以所述第三权限级别执行的指令而被更新,并且被禁止响应于以所述第一权限级别或所述第二权限级别执行的指令而被更新。
11.根据任一前述权利要求所述的装置,其中当所述上下文信息相关指令是指定目标地址和至少一个源寄存器的上下文信息相关类型的存储指令时,所述上下文信息相关操作包括向存储器系统发出存储请求以请求将存储数据写入对应于所述目标地址的至少一个存储器系统位置,所述存储数据包括从所述至少一个源寄存器读取的源数据,其中所述源数据的一部分被由所述匹配上下文信息转换条目指定的所述已转换上下文信息替换。
12.根据权利要求11所述的装置,其中所述上下文信息相关类型的存储指令指定用于提供所述源数据的多个源寄存器。
13.根据权利要求11和12中任一项所述的装置,其中所述存储请求是基于所述存储数据的相应部分请求对多个存储器系统位置的原子更新的原子存储请求。
14.根据权利要求13所述的装置,其中响应于所述响应于所述存储指令而发出的存储请求,所述处理电路被配置为从所述存储器系统接收原子存储结果指示,所述原子存储结果指示指示对所述多个存储器位置的所述原子更新是成功还是失败。
15.根据任一前述权利要求所述的装置,其中当所述上下文信息相关指令是用于致使地址转换高速缓存无效请求被发出以请求来自至少一个地址转换高速缓存的地址转换数据的无效的指令时,所述上下文信息相关操作包括发出所述地址转换高速缓存无效请求以请求与由所述匹配上下文信息转换条目指定的所述已转换上下文信息相关联的地址转换数据的无效。
16.根据权利要求15所述的装置,包括用于代表外围设备执行地址转换的系统存储器管理单元,其中所述系统存储器管理单元被配置为支持提前地址转换功能,其中允许所述外围设备将预转换地址高速缓存在所述外围设备的地址转换高速缓存内;并且
所述地址转换高速缓存无效请求是使来自所述外围设备的所述地址转换高速缓存的预转换地址无效的请求,所述预转换地址与由所述匹配上下文信息转换条目指定的所述已转换上下文信息相关联。
17.一种装置,所述装置包括:
用于处理的装置,所述装置响应于上下文信息相关指令而致使基于指示指定执行上下文的指定上下文信息来执行上下文信息相关操作;
用于高速缓存上下文信息转换的装置,所述装置存储多个上下文信息转换条目,所述多个上下文信息转换条目各自指定未转换上下文信息和已转换上下文信息;和
用于基于针对所述上下文信息相关指令指定的所述指定上下文信息来执行所述用于高速缓存的装置的查找的装置,所述装置识别所述用于高速缓存的装置是否包括有效并且指定对应于所述指定上下文信息的所述未转换上下文信息的匹配上下文信息转换条目,并且当所述用于高速缓存的装置被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行所述上下文信息相关操作。
18.一种方法,所述方法包括:
响应于由处理电路处理的上下文信息相关指令:
基于针对所述上下文信息相关指令指定的指定上下文信息来执行上下文信息转换高速缓存的查找,所述指定上下文信息指示指定执行上下文,其中所述上下文信息转换高速缓存被配置为存储多个上下文信息转换条目,所述多个上下文信息转换条目各自指定未转换上下文信息和已转换上下文信息;
基于所述查找,识别所述上下文信息转换高速缓存是否包括匹配上下文信息转换条目,所述匹配上下文信息转换条目是有效的并且指定对应于所述指定上下文信息的所述未转换上下文信息;以及
当所述上下文信息转换高速缓存被识别为包括所述匹配上下文信息转换条目时,致使基于由所述匹配上下文信息转换条目指定的所述已转换上下文信息来执行上下文信息相关操作。
CN202180088058.4A 2020-12-31 2021-11-25 上下文信息转换高速缓存 Pending CN116802638A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2020849.2A GB2602480B (en) 2020-12-31 2020-12-31 Context information translation cache
GB2020849.2 2020-12-31
PCT/GB2021/053062 WO2022144535A1 (en) 2020-12-31 2021-11-25 Context information translation cache

Publications (1)

Publication Number Publication Date
CN116802638A true CN116802638A (zh) 2023-09-22

Family

ID=74566401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180088058.4A Pending CN116802638A (zh) 2020-12-31 2021-11-25 上下文信息转换高速缓存

Country Status (5)

Country Link
US (1) US20240070071A1 (zh)
KR (1) KR20230127275A (zh)
CN (1) CN116802638A (zh)
GB (1) GB2602480B (zh)
WO (1) WO2022144535A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078597B2 (en) * 2015-04-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. System and method of distinguishing system management mode entries in a translation address cache of a processor
GB2563883B (en) * 2017-06-28 2019-10-09 Advanced Risc Mach Ltd Invalidation of a target realm in a realm hierarchy
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table

Also Published As

Publication number Publication date
GB2602480A (en) 2022-07-06
KR20230127275A (ko) 2023-08-31
US20240070071A1 (en) 2024-02-29
GB202020849D0 (en) 2021-02-17
WO2022144535A1 (en) 2022-07-07
GB2602480B (en) 2023-05-24

Similar Documents

Publication Publication Date Title
US8417915B2 (en) Alias management within a virtually indexed and physically tagged cache memory
CA2701086C (en) Dynamic address translation with frame management
EP0423453B1 (en) Address translation and copying process
US6430657B1 (en) Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
EP2229632A1 (en) Dynamic address translation with fetch protection
GB2550859B (en) Address translation within a virtualised system
WO2009087135A1 (en) Dynamic address translation with dat protection
WO2009087132A1 (en) Dynamic address translation with format control
EP0766177A1 (en) Information handling system including effective address translation for one or more auxiliary processors
US11474956B2 (en) Memory protection unit using memory protection table stored in memory system
US8458438B2 (en) System, method and computer program product for providing quiesce filtering for shared memory
EP3830719B1 (en) Binary search procedure for control table stored in memory system
CN112639750A (zh) 用于控制存储器存取的装置及方法
US20240070071A1 (en) Context information translation cache
EP3408749A1 (en) Memory address translation management
US11934320B2 (en) Translation lookaside buffer invalidation
WO2024094956A1 (en) Region identifier based on instruction fetch address
CN112585590A (zh) 存储器访问控制

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination