首页> 中国专利> 用于通过较少位来表示处理器上下文的方法和装置

用于通过较少位来表示处理器上下文的方法和装置

摘要

本发明的各实施方式总体上涉及用于通过较少位来表示处理器上下文的方法和装置。具体地,根据至少一个示例实施方式,一种方法和对应处理器器件包括维护将未压缩的进程上下文标识符映射到对应压缩的标识符的翻译表,所述未压缩的进程上下文标识符和所述对应压缩的标识符与地址空间或对应计算机进程相关联。所述压缩的标识符被用于探测或访问执行与计算机进程相关联的操作时所述处理器器件的一个或多个结构。

著录项

  • 公开/公告号CN104636203A

    专利类型发明专利

  • 公开/公告日2015-05-20

    原文格式PDF

  • 申请/专利权人 凯为公司;

    申请/专利号CN201410641566.2

  • 申请日2014-11-13

  • 分类号G06F9/50(20060101);G06F12/08(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-18 08:59:18

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-15

    专利权的转移 IPC(主分类):G06F9/50 登记生效日:20200424 变更前: 变更后: 申请日:20141113

    专利申请权、专利权的转移

  • 2018-12-25

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/50 变更前: 变更后: 申请日:20141113

    专利权人的姓名或者名称、地址的变更

  • 2018-05-04

    授权

    授权

  • 2015-06-17

    实质审查的生效 IPC(主分类):G06F9/50 申请日:20141113

    实质审查的生效

  • 2015-05-20

    公开

    公开

说明书

技术领域

本发明的各实施方式总体上涉及计算机领域,具体地涉及用于通过较少位来表示处理器上下文的方法和装置。

背景技术

尽管在微处理器架构和设计中取得的显著优势在微处理器速度和功耗效率方面产生了显著改进,但是微处理器技术领域中正在研究的工作仍然在寻找进一步改进微处理器芯片的性能和速度的方式。

发明内容

许多微处理器支持处理多个进程,并且在其之间切换而不使处理器存储器中存储的对应软件上下文数据无效或冲洗。通常,与对应计算机进程相关联的软件上下文标识符被用于引用并访问与对应计算机进程相关联的存储器空间。根据至少一个示例实施方式,压缩的软件上下文标识符(下文还被称作压缩的进程上下文标识符)被用于访问与对应计算机进程相关联的存储器空间。

根据至少一个示例实施方式,一种方法和对应处理器器件包括维护将未压缩的进程上下文标识符映射到对应压缩的标识符的翻译表,所述未压缩的进程上下文标识符和所述对应压缩的标识符与地址空间或对应计算机进程相关联。所述压缩的标识符被用于探测或访问执行与计算机进程相关联的操作时所述处理器器件的一个或多个结构。

该操作与未压缩的软件上下文标识符相关联,并且翻译数据结构在每次处理器器件的一个或多个结构被访问时被探测。备选地,与处理器器件中当前运行的计算机进程相关联的压缩的软件上下文标识符被存储在一个或多个寄存器中。如此,仅当一个或多个寄存器中存储的压缩的软件上下文标识符无效时,翻译数据结构才被探测。

当执行该操作时,针对对应压缩的软件上下文标识符搜索处理器器件的存储器组件(例如,存储器寄存器)。在找到压缩的标识符时,确定压缩的标识符是否有效,并且在确定找到的压缩的标识符有效之后,该有效的压缩的标识符被用于访问执行该操作时处理器器件的一个或多个结构。然而,如果找到的压缩的标识符被确定无效,则针对被映射到与该操作相关联的未压缩的进程上下文标识符的其他压缩的标识符搜索该翻译数据结构。如果在翻译数据结构中找到匹配压缩的标识符,则该匹配压缩的标识符被用于访问处理器器件的一个或多个结构。该匹配标识符还可以被存储在处理器器件的存储器组件(例如,存储器寄存器)中以促进将来访问。如果在翻译数据结构中没有找到匹配压缩的标识符,则新的压缩的标识符被映射到与操作相关联的未压缩的进程上下文标识符,并且用于访问执行操作时处理器器件的一个或多个结构。

处理器器件可以是多核处理器。翻译数据结构可以在该多核处理器内的两个或更多内核处理器之间共享。备选地,该多核处理器内的每个内核处理器独立于任何其他内核处理器来维护翻译数据结构。

根据至少一个示例实施方式,未压缩的进程上下文标识符包括一个或多个未压缩的字段。所述未压缩的进程上下文标识符内的至少一个未压缩的字段被翻译成对应压缩的标识符内的对应压缩的字段。基于忽略所述至少一个未压缩的字段的指示,未压缩的进程上下文标识符内的至少一个未压缩的字段不被翻译成对应压缩的标识符内的压缩的字段。

附图说明

上述将在下面如附图中所展示的对示例实施方式的更具体的描述中变得清楚,在附图中类似参考符号指代所有不同视图中的相同组件。这些图不必是按比例的,相反,下文讨论的重点放在展示本发明的实施方式上。

图1A是根据至少一个示例实施方式图示软件上下文标识符的框图;

图1B是根据至少一个示例实施方式图示将标识运行程序的软件上下文标识符链接到对应存储器空间或其中存储的数据的示图;

图2A至图2C是图示硬件结构中压缩软件上下文标识符的翻译表和使用的示例实现方式的示图;以及

图3是图示采用压缩软件上下文标识符的方法的流程图。

具体实施方式

本发明示例实施方式的详细描述如下。

许多微处理器支持处理多个进程,并且在其之间切换而不使处理器存储器中存储的对应软件上下文数据无效或冲洗。此外,许多微处理器实现同时允许支持多个软件环境的虚拟扩展。通过物理处理器支持多个软件环境和/或多个进程使得处理器能够处理复杂的软件应用。

微处理器通常利用特定标识符来在不同的计算机进程以及不同的软件环境之间进行区分。例如,许多操作系统使用地址空间标识符(ASID)来标识与运行程序相关联的存储器空间。虚拟机标识符(VMID)还可以被用于标识虚拟机。这种标识符或等同物以及其他潜在的标识符或参数通常用于标识软件上下文。

图1A是根据至少一个示例实施方式图示软件上下文标识符集的框图。该软件上下文标识符集包括地址空间标识符(ASID)116和虚拟机标识符(VMID)118。该软件上下文标识符集可以进一步包括安全状态112。该安全状态112指示例如对应软件上下文的非安全或安全(NS/S)状态。该软件上下文标识符集还可以包括异常级别(EL)114。该EL 114还可以被称为特权级别、优先权级别等,指示对应软件进程的优先权。在ARM架构中,例如,安全状态112可以是一位参数,异常级别(EL)114可以是两位参数,ASID 116可以是16位标识符,以及VMID可以是16位标识符。本领域技术人员应当理解该软件上下文标识符集可以被不同地设计。例如,与图1A所示的标识符或参数的组合相比,该软件上下文标识符集可以包括标识符或参数的不同组合。同样,与图1A中所述的标识符/参数相比,该标识符/参数可以具有不同的名称、不同的大小或者以不同的顺序。

图1B是根据至少一个示例实施方式图示将标识运行程序的软件上下文标识符链接到对应存储器空间或其中存储的数据的示图。现代微处理器通常使用软件上下文标识符(例如,ASID和VMID)在硬件结构中标识与特定程序相关联的存储器空间190或其中存储的数据195。硬件结构160可以是数据高速缓存(D-Cache),指令高速缓存(I-Cache),翻译后援缓冲器(TLB),微TLB(μTLB),页表步行器(walker)高速缓存等或其组合。根据至少一个示例实施方式,硬件结构160针对每个运行程序存储一个或多个软件上下文标识符,例如,ASID 116和VMID 118。对应于运行程序的软件上下文标识符被链接至指示存储器位置空间190中存储与该运行程序相关联的数据195的存储器地址175。对应于给定运行程序的软件上下文标识符以及对应存储器地址175可以根据数据结构170(例如,表、链表、树等)存储在硬件结构160中。例如,数据结构可以是表,其中该表的每行或每列存储与相同运行程序相关联的软件上下文标识符和存储器地址175。备选地,与给定运行程序相关联的软件上下文标识符可以通过链表或本领域普通技术人员已知的任意其他适当的数据结构链接至对应存储器地址175。

软件上下文标识符的使用允许多个软件上下文同时驻留在相同微处理器或内核存储器中。在硬件结构160中缺少这种软件上下文标识符的情况下,硬件结构160需要在出现软件上下文变化时被完全冲洗。换言之,如果硬件结构160存储了仅与当前运行程序相关联的存储器地址175,则在软件上下文变化时此存储器地址175被删除,并且新的存储器地址被存储。随着软件上下文的每次变化而冲洗硬件结构160降低了性能。例如,当控制被返回先前软件上下文时,如果对应软件上下文标识符存储在硬件结构160中则可以避免冲洗硬件结构160以参考对应存储器位置空间190。

内容可寻址存储器(CAM)结构通常具有标签,诸如高速缓存标签,其用于探测微处理器的硬件结构。在CAM结构中,软件上下文标识符可以被并入标签中。如此,标签之间的匹配指示硬件结构的成功探测。在随机访问存储器(RAM)中,查找操作通常基于存储器地址执行。如此,在RAM中,标签可以用于静态地指派随机访问存储器中被分配给特定软件上下文的特定区域。换言之,存储器地址可以被分组成多个区域,并且每个区域可以被指派特定软件上下文。

虽然在微处理器或内核处理器中同时维护多个软件上下文增强了处理器性能,但是存储对应软件上下文标识符在微处理器或内核处理器内的存储器使用方面表现出负担。例如,考虑到图1A中所述的软件上下文标识符,ASID 116和VMID 118通常各自使用16位表示,EL 114使用两位表示,以及安全状态使用一位限定。如此,35位用于在单个硬件结构160中存储与单个运行程序相关联的软件上下文标识符。通过35位,总共235或者320亿种不同的软件上下文可以被限定。然而,现代微处理器通常同时运行显著较少的软件上下文。此外,针对给定软件上下文,对应软件上下文标识符可以被存储在微处理器的多个硬件结构160中,例如,D-Cache、I-Cache、页表步行器高速缓存、TLB和μTLB。事实上,软件上下文标识符的存储引发了显著的硬件成本,其可以表示处理器内核区域中的显著部分。

根据至少一个示例实施方式,软件上下文标识符被翻译成通过较少位表示的压缩标识符,从而产生处理器空间区域的更有效使用。翻译表(TT)用于将与给定运行程序相关联的未压缩软件上下文标识符(例如,ASID 116、VMID 118等)映射至对应的压缩软件上下文标识符。微处理器采用压缩的软件上下文标识符来表示硬件结构160中的对应软件上下文。例如,给定安全状态112、EL 114、ASID116和VMID 118的组合,对应压缩的软件上下文标识符可以被存储在翻译表中。如果翻译表内不存在对应压缩的软件上下文标识符,则处理器分配新压缩的软件上下文标识符并且将其映射至翻译表内软件上下文标识符的给定组合。

图2A至图2C是图示硬件结构160中压缩的软件上下文标识符的翻译表210和使用的示例实现方式的示图。根据图2A中所示的示例实现方式,翻译表210的每行将与给定运行程序相关联的一个或多个未压缩的软件上下文标识符(例如,安全状态112、EL 114、ASID 116和VMID 118)映射到对应压缩的软件上下文标识符215。在硬件结构160内,每个压缩的软件上下文标识符215被链接到与该相同压缩的软件上下文标识符215引用的运行程序相关联的存储器空间的存储器地址175。即,在硬件结构160内采用对应压缩的软件上下文标识符215而不是使用未压缩的软件上下文标识符来引用给定运行程序的软件上下文。

在图2B中所示的示例实现方式中,压缩的软件上下文标识符215不存储在翻译表210内,而是由翻译表210内对应未压缩的软件上下文标识符的索引表示。换言之,压缩的软件上下文标识符基于对应未压缩的软件上下文标识符在翻译表210内存储的位置进行定义。在硬件结构160中,将指示与给定运行程序相关联的存储器空间的存储器地址175与对应压缩的软件上下文标识符215链接。

在图2C中,采用了两个翻译表210a和210b或者数据结构。根据示例实现方式,一个或多个未压缩的软件上下文标识符被分别压缩。例如,针对每个软件上下文的ASID 116被压缩成对应压缩的ASID 117,例如,ASID_MAP,并且VMID 118被压缩成对应压缩的VMID 119,例如,VMID_MAP。

翻译表210a包括与对应软件上下文相关联的ASID 116的值。针对每个ASID 116,对应压缩的参数ASID_MAP 117被限定为翻译表210a内对应ASID 116的索引。翻译表210b包括与对应软件上下文相关联的VMID 118的值。针对每个VMID 118,对应压缩的参数VMID_MAP 119被限定为翻译表210b内对应VMID 118的索引。压缩的软件上下文标识符215继而根据对应压缩的参数ASID_MAP117和VMID_MAP 119被限定为例如两者的串联。在硬件结构160中,将指示与给定运行程序相关联的存储器空间的存储器地址175与对应压缩的软件上下文标识符215链接。

根据示例实现方式,表210a具有64个条目,其中压缩的ASID标识符117从0运行至63。同样,表210b具有16个条目,其中压缩的VMID标识符119从0运行至15。例如,假设在给定时间点,表210a只有头四行(例如,索引0至3)具有有效ASID标识符116,并且表210b只有三行(例如,索引0至2)包括有效VMID标识符118。当针对给定软件上下文指派新压缩的标识符时,对应未压缩的ASID 116被添加在表210a的下一可用行(例如,第五行)中,并且对应压缩的ASID标识符117是000100。同样,对应未压缩的VMID116被添加在表210b的下一可用行(例如,第四行)中,并且对应压缩的VMID标识符119是0011。压缩的ASID 117和压缩的VMID119可用通过简单地增加指示具有表210a和210b的有效未压缩的标识符的最后一行的索引的计数器来进行限定。通过将压缩的ASID117与压缩的VMID 119连在一起,对应压缩的标识符215被限定为0001000011。

本领域技术人员应当理解未压缩的软件上下文标识符(例如,116和118)与对应压缩的软件上下文标识符(例如,117、119和/或215)之间的映射可以通过不同于翻译表210、210a或210b的其他数据结构实现。例如,未压缩的软件上下文标识符(例如,116和118)可以通过一个或多个指针被映射到对应压缩的软件上下文标识符(例如,117、119和/或215)。通常,微处理器或内核处理器维护未压缩的软件上下文标识符(例如,116和118)与对应压缩的软件上下文标识符(例如,117、119和/或215)之间的映射。维护所述映射包括生成、更新和存储所述映射。在执行与对应标识的软件上下文相关联的操作时,与给定软件上下文相关联的压缩的软件上下文标识符被用于探测微处理器或内核处理器的一个或多个硬件结构160。

访问与软件上下文相关联的地址空间可以从提取、加载、存储或相同软件上下文内执行的其他操作开始。当基于压缩的软件上下文标识符215访问地址空间时,一个选项是基于例如每个此类地址空间访问上的翻译表将与软件上下文相关联的未压缩的软件上下文标识符查找或翻译成对应压缩的软件上下文标识符。这种翻译通常涉及CAM查找,由此,频繁的CAM查找导致高功耗。备选方式是针对特定寄存器中的当前软件上下文保持压缩的软件上下文标识符的表示。换言之,针对当前运行的程序,对应压缩的软件上下文标识符被存储在特定寄存器中。对应未压缩的软件上下文标识符(例如,ASID 116和/或VMID 118)还存储在其他特定寄存器中。因此,对地址空间的任何访问利用特定寄存器中存储的当前压缩的标识符和/或其他特定寄存器中存储的对应未压缩的标识符以使用此标识符来探测任何相关硬件结构。特定寄存器还可以包括指示所存储的压缩的上下文标识符是否有效的一个或多个位。

随着软件上下文变化,特定寄存器的内容被修改以存储与微处理器或内核处理器中运行的新程序相关联的压缩和未压缩的软件上下文标识符。换言之,每当软件上下文变化或无效时,新的软件上下文的未压缩的软件上下文标识符在特定寄存器中生成和/或存储。每次新的软件上下文被创建(例如,新的程序在微处理器或内核处理器中运行),执行未压缩的软件上下文标识符的生成和/或存储。根据示例实施方式,当与新的软件上下文相关联的第一提取、存储或其他指令开始时,在特定寄存器中生成和/或存储新的未压缩的软件上下文标识符。

根据至少一个示例实施方式,为了减少特定寄存器中新的压缩和未压缩的软件上下文标识符的频繁加载或生成,操作系统考虑向不同软件进程指派ASID 116的方法。例如,ASID 116可以通过与用户空间和操作系统空间相同的方式进行指派。如此,响应于系统调用,ASID可以不变化。因此,响应于系统调用,特定寄存器中存储的对应压缩的软件上下文标识符215被无效。

根据至少一个示例实施方式,压缩的标识符生成的方式取决于相同压缩的标识符如何限定。例如,考虑如图2C所示的两个翻译表,例如,210a指示压缩的ASID 117并且210b指示压缩的VMID 119,操作系统可以指定待在多个进程之间共享的相同地址。在此情况下,共享的地址与指示符(例如,全局位)相关联。如果指示符被设置,则在探测具有上下文标识符的处理器内核结构方面忽略ASID。同样,如图2C中所示,针对不同未压缩的软件上下文标识符使用不同的翻译表允许标识未压缩的标识符215对应于ASID 116的一部分。

根据至少一个示例实施方式,当操作系统使得超级调用或控制转移到管理程序或安全状态时,微处理器中运行的软件上下文由于VMID变化而变化。然而,如果管理程序或安全状态被实现为单个软件上下文,则微处理器中运行的软件上下文可以基于特权或异常级别114进行确定。如此,特定寄存器中存储的压缩的软件上下文标识符在操作系统切换到管理程序或安全状态之后无效。相反,与管理程序和安全状态相关联的预定和固定压缩的软件上下文标识符被采用而不需要无效特定寄存器中先前存储的压缩的软件上下文标识符。当操作系统切换回操作系统时,仍然存储在特定寄存器中的压缩的软件上下文标识符继而被用于访问存储器空间。

根据至少一个示例实施方式,当翻译表满并且其中没有更多空间可用于新的软件上下文标识符时,该翻译表的条目、特定寄存器和任意相关联的硬件结构被无效。这种条目的无效还可以例如通过微处理器或内核处理器中运行的软件从外部开始。

图3是根据至少一个示例实施方式图示分配并采用压缩软件上下文标识符的方法的流程图。在块310,加载与进程相关联的指令。该进程(以及对应加载的指令)与对应未压缩的软件上下文标识符(例如,安全状态112、异常级别114、ASID 116、VMID 118或其组合)相关联。在块320,检验特定寄存器中存储的当前压缩的软件上下文标识符215的有效性。例如,在检测特定寄存器中存储的当前压缩的软件上下文标识符215的有效性方面,检测对应指示符。备选地,当前压缩的软件上下文标识符的有效性基于当前压缩的软件上下文标识符的值或者对应压缩的ASID 117和对应压缩的VMID119的值进行确定,例如,当对应压缩的ASID 117和对应压缩的VMID 119均等于0时,当前压缩的软件上下文标识符被确定为无效。

如果在块320当前压缩的软件上下文标识符被确定为有效,则在块360基于当前压缩的软件上下文标识符被确定为有效访问存储器空间作为执行操作的一部分。根据示例实现方式,针对其中进程指示虚拟机或安全状态(例如,EL=2或3)的情况限定预定压缩的软件上下文标识符。此预定压缩的软件上下文标识符分别从翻译表存储。如此,如果在块320内容压缩的软件上下文标识符被确定为无效,则在块330检测对应于该进程的异常级别114。如果异常级别114被确定指示管理程序或进程运行安全监视器,则在块334对应预定压缩的软件上下文标识符被确定为待用于访问存储器空间的压缩的软件上下文标识符215。在块360,存储器空间继而使用预定压缩的软件上下文标识符进行访问。如果异常级别114被确定指示用户或操作系统进程(例如,EL=0或1),则对应于所加载指令的未压缩的软件上下文标识符在块338被读取并且用于在块340针对对应压缩的软件上下文标识符215探测翻译表。

当在块340探测翻译表时,针对对应于加载指令的软件上下文标识符检测翻译表。如果在块340在翻译表中找到对应于加载指令的软件上下文标识符,则从翻译表确定对应压缩的软件上下文标识符215,并且在360该压缩的软件上下文标识符215被获取并用于访问存储器空间。如果采用多个翻译表(例如,如图2C所示),则在块取得或获取压缩的软件上下文标识符215可以包括将多个压缩的标识符(例如,117和119)连接成压缩的软件上下文标识符215。

然而,如果在块340在翻译表中没有找到对应于加载指令的未压缩的软件上下文标识符,未压缩的软件上下文标识符和对应压缩的软件上下文标识符(例如,215或117和119)被分配在翻译表中。在块350,针对可用空间检测翻译表(例如,210、210a、210b)以分配对应于加载指令的软件上下文标识符。如果在块350发现翻译表已满,则在块354冲洗翻译表(例如,删除对应内容),并且在经冲洗的翻译表中加载对应于加载指令的未压缩的软件上下文标识符并且对应压缩的标识符被指派给加载的未压缩的软件上下文标识符。一旦对应压缩的软件上下文标识符(例如,215、117或119)被指派,则在块360压缩的软件上下文标识符215用于访问存储器空间。如果发现翻译表未满,则在块358在翻译表中加载对应于加载指令的未压缩的软件上下文标识符并且将对应压缩的标识符指派给经加载的未压缩的软件上下文标识符。继而,在块360,压缩的软件上下文标识符215用于访问与其进程或经加载的指令相关联的存储器空间。

翻译表中的软件上下文标识符可以通过若干不同方式被无效。当翻译表已满时,由于所有条目已被分配或者许多表中对应于字段的一个表已满,翻译表被冲洗,其自动无效翻译表中的所有条目。备选地,特定处理器内核操作可以使得软件上下文标识符被无效。例如,在ARM处理器芯片中,处理器内核可以发布针对特定VMID的TLB击落指令。因此,对应于特定VMID的所有地址翻译从内核处理器移除。如此,对应于被无效的特定VMID的所有压缩的标识符被无效。经无效的压缩的标识符不被重用,直到或除非整个翻译表被冲洗。如此,避免了翻译表中与经无效的压缩的标识符有关的任何正确性问题。同样,当无效翻译表中的压缩标识符时,如果经无效的压缩的标识符存储在存储器寄存器中,也在存储器寄存器中无效该相同的压缩的标识符。因此,经无效的压缩的软件上下文标识符不用于探测微处理器的硬件结构(例如,存储器)。

本领域技术人员应当理解,针对图3所述方法的实施方式可以通过不同方式实现,取决于限定的未压缩的软件上下文标识符以及实现从未压缩的标识符翻译成压缩的标识符的方式。

虽然本发明已经针对其示例实施方式具体示出并描述,但是本领域技术人员应当理解可以对形式和细节进行各种修改,而不脱离所附权利要求书包括的本发明的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号