数据处理系统中的安全推测性指令执行的制作方法

文档序号:18901290发布日期:2019-10-18 21:58阅读:138来源:国知局
数据处理系统中的安全推测性指令执行的制作方法

本公开大体上涉及数据处理,且更具体地说,涉及在数据处理系统中安全地执行推测性指令执行。



背景技术:

为了实现更快的指令执行,处理器可使用例如分支预测和推测性执行。分支指令允许根据条件执行不同代码部分。可能的情况是评估条件所必需的所有数据尚不可用。举例来说,可能需要计算数据或可能需要从存储器提取数据。在此情况下,接下来将执行哪一程序部分可能并不确定。为了取得速度优势,处理器可启动执行程序的可能路径中的一个。处理器通过预测接下来可能执行哪一路径而启动且开始执行。此类执行可被称为推测性执行。

许多系统中的高速缓存设计以不安全方式与推测性执行的指令交互。不幸的是,在被称为spectre和meltdown的最新一类攻击中,攻击者已得知如何采用高速缓冲存储器与推测性执行之间的交互。通常,此类攻击使用各种技术来通过测量贯穿推测性执行的访问时序恢复高速缓存中存储的机密。对这些攻击的现有对策不会抵抗每个变化。而且,现有对策通常实施于会降低处理器性能的软件中。

因此,需要一种防止推测性执行用于从高速缓存发现机密数据,同时仍提供推测性执行的性能优点的对策。



技术实现要素:

根据本发明的第一方面,提供一种用于数据处理系统中的推测性执行的方法,所述方法包括:

接收待由所述数据处理系统的处理器执行的指令,其中所述指令用于访问存储器以根据所述指令读取或写入数据;

确定访问是推测性的;

确定所述数据不在所述数据处理系统的高速缓冲存储器中;

从主存储器检索所述数据;

将所述数据存储在推测性高速缓存中,其中所述推测性高速缓存用于仅存储推测性指令和与所述推测性指令相关的数据;和

执行所述推测性指令。

在一个或多个实施例中,访问存储器以读取或写入进一步包括访问所述存储器以读取数据,且进一步包括将所述数据传送到寄存器。

在一个或多个实施例中,访问存储器以读取或写入进一步包括访问所述存储器以写入数据,且进一步包括通过来自寄存器的新数据覆写所述推测性高速缓存中的所述数据。

在一个或多个实施例中,所述方法进一步包括收回所述推测性指令。

在一个或多个实施例中,所述方法进一步包括:

收回所述推测性指令;

确定所述推测性高速缓存存在改变;和

将数据从所述推测性高速缓存传送到所述高速缓冲存储器。

在一个或多个实施例中,访问存储器以读取或写入进一步包括访问所述存储器以读取数据,且其中确定所述数据不在高速缓冲存储器中进一步包括确定所述数据不在所述高速缓冲存储器或所述推测性高速缓存中。

在一个或多个实施例中,所述方法进一步包括防止在所述推测性执行期间对所述高速缓冲存储器的写入操作。

根据本发明的第二方面,提供一种数据处理系统,包括:

处理器,其用于执行指令;

高速缓冲存储器,其耦合到所述处理器以用于存储所述指令和相关数据;

推测性高速缓存,其耦合到所述处理器以用于仅存储推测性指令和相关数据;和

控制电路,其耦合到所述处理器、所述高速缓冲存储器和所述推测性高速缓存,所述控制电路用于响应于从所述处理器接收到指示而使所述推测性指令存储在所述推测性高速缓存中。

在一个或多个实施例中,所述处理器进一步包括分支预测器,其中推测性执行响应于来自所述分支预测器的关于推测性指令的预测而被执行。

在一个或多个实施例中,所述处理器的指令收回电路响应于所述预测被确定为正确而收回所述推测性指令。

在一个或多个实施例中,推测性高速缓存和所述高速缓冲存储器是同一存储器阵列的单独部分。

在一个或多个实施例中,所述处理器进一步包括用于在推测性指令被执行之后收回所述推测性指令的指令收回电路。

在一个或多个实施例中,所述控制电路防止在所述推测性执行期间对所述高速缓冲存储器的写入操作且仅允许在所述推测性执行期间对所述推测性高速缓存的写入操作。

根据本发明的第三方面,提供一种用于数据处理系统中的推测性执行的方法,所述方法包括:

接收待由所述处理器执行的指令,其中所述指令用于访问存储器以根据所述指令读取或写入数据;

确定访问是推测性的;

防止在所述推测性执行期间对所述高速缓冲存储器的写入操作;

确定所述数据不在所述数据处理系统的高速缓冲存储器中;

从主存储器检索所述数据;

将所述数据存储在推测性高速缓存中,其中所述推测性高速缓存用于仅存储推测性指令和与所述推测性指令相关的数据;和

执行所述推测性指令。

在一个或多个实施例中,所述指令用于读取访问,且其中所述数据被传送到所述处理器的寄存器。

在一个或多个实施例中,所述指令用于写入访问以将来自所述处理器的寄存器的数据写入到所述推测性高速缓存,且进一步包括用来自所述寄存器的所述数据覆写所述推测性高速缓存中的数据,和将所述推测性高速缓存中的所述数据标记为无效。

在一个或多个实施例中,所述方法进一步包括收回所述推测性指令。

在一个或多个实施例中,所述方法进一步包括:

确定所述推测性高速缓存中的所述数据存在改变;和

将数据从所述推测性高速缓存传送到所述高速缓冲存储器。

在一个或多个实施例中,访问存储器以读取或写入进一步包括访问所述存储器以读取数据,且其中确定所述数据不在高速缓冲存储器中进一步包括确定所述数据不在所述高速缓冲存储器或所述推测性高速缓存中。

在一个或多个实施例中,确定所述数据不在高速缓冲存储器中进一步包括确定所述数据不在所述高速缓冲存储器或所述推测性高速缓存中。

本发明的这些和其它方面将根据下文中所描述的实施例显而易见,且参考这些实施例予以阐明。

附图说明

本发明借助于例子示出且不受附图的限制,在附图中的类似标记指示类似元件。图式中的元件为简单和清楚起见被示出并且不必按比例绘制。

图1示出根据一实施例的数据处理系统。

图2示出根据一实施例的一种用于从存储器读取数据的方法。

图3示出根据一实施例的一种用于将数据写入到存储器的方法。

图4示出根据一实施例的一种用于推测性指令收回的方法。

具体实施方式

通常,提供一种数据处理系统和数据处理系统中用于安全推测性指令执行的方法。除普通高速缓冲存储器之外,数据处理系统还包括推测性高速缓冲存储器。推测性高速缓冲存储器功能像普通高速缓冲存储器,除了推测性高速缓存仅用于执行推测性指令之外。在处理器提交推测性指令后,推测性高速缓存的内容可被传送到普通高速缓冲存储器。

所述方法和数据处理系统允许处理器中的推测性执行,同时不会在普通高速缓冲存储器中留下可能被攻击者采用的痕迹,同时仍提供由推测性执行提供的速度增益。

根据一实施例,提供一种用于数据处理系统中的推测性执行的方法,所述方法包括:接收待由数据处理系统的处理器执行的指令,其中所述指令用于访问存储器以根据所述指令读取或写入数据;确定访问是推测性的;确定数据不在数据处理系统的高速缓冲存储器中;从主存储器检索数据;将所述数据存储在推测性高速缓存中,其中所述推测性高速缓存用于仅存储推测性指令和与推测性指令相关的数据;和执行推测性指令。访问存储器以读取或写入可进一步包括访问存储器以读取数据,且进一步包括将数据传送到寄存器。访问存储器以读取或写入可进一步包括访问存储器以写入数据,且可进一步包括通过来自寄存器的新数据覆写推测性高速缓存中的数据。所述方法可进一步包括收回推测性指令。所述方法可进一步包括:收回推测性指令;确定推测性高速缓存存在改变;和将数据从推测性高速缓存传送到高速缓冲存储器。访问存储器以读取或写入可进一步包括访问存储器以读取数据,且其中确定数据不在高速缓冲存储器中可进一步包括确定数据不在高速缓冲存储器或推测性高速缓存中。所述方法可进一步包括防止在推测性执行期间对高速缓冲存储器的写入操作。

在另一实施例中,提供一种数据处理系统,所述数据处理系统包括:处理器,其用于执行指令;高速缓冲存储器,其耦合到处理器以用于存储指令和相关数据;推测性高速缓存,其耦合到处理器以用于仅存储推测性指令和相关数据;和控制电路,其耦合到处理器、高速缓冲存储器和推测性高速缓存,所述控制电路用于响应于从处理器接收到指示而使推测性指令存储在推测性高速缓存中。处理器可进一步包括预测器,其中推测性执行可响应于来自分支预测器的关于推测性指令的预测被执行。处理器的指令收回电路可响应于预测被确定为正确而收回推测性指令。推测性高速缓存和高速缓冲存储器可为同一存储器阵列的单独部分。处理器可进一步包括指令收回电路,所述指令收回电路用于在推测性指令被执行之后收回推测性指令。控制电路可防止在推测性执行期间对高速缓冲存储器的写入操作且仅允许在推测性执行期间对推测性高速缓存的写入操作。

在又一实施例中,提供一种用于数据处理系统中的推测性执行的方法,所述方法包括:接收待由处理器执行的指令,其中所述指令用于访问存储器以根据所述指令读取或写入数据;确定访问是推测性的;防止在推测性执行期间对高速缓冲存储器的写入操作;确定数据不在数据处理系统的高速缓冲存储器中;从主存储器检索数据;将数据存储在推测性高速缓存中,其中所述推测性高速缓冲存储器用于仅存储推测性指令和与推测性指令相关的数据;和执行推测性指令。指令可用于读取访问,且其中数据可被传送到处理器的寄存器。指令可用于写入访问以将来自处理器的寄存器的数据写入到推测性高速缓存,且进一步包括用来自寄存器的数据覆写推测性高速缓存中的数据,和将推测性高速缓冲存储器中的数据标记为无效。所述方法可进一步包括收回推测性指令。所述方法可进一步包括:确定推测性高速缓存中的数据存在改变;和将数据从推测性高速缓存传送到高速缓冲存储器。访问存储器以读取或写入可进一步包括访问存储器以读取数据,且其中确定数据不在高速缓冲存储器中可进一步包括确定数据不在高速缓冲存储器或推测性高速缓存中。确定数据不在高速缓冲存储器中可进一步包括确定数据不在高速缓冲存储器或推测性高速缓存中。

图1示出根据一实施例的数据处理系统10的简化框图。数据处理系统10可实施于单个集成电路(ic)或多个ic上。数据处理系统10包括处理器14、普通高速缓存16、推测性高速缓存18和控制电路20。数据处理系统10连接到主存储器12。在另一实施例中,主存储器12可实施为数据处理系统10的部分。处理器14可为用于执行指令的任何类型的处理电路。举例来说,处理器14可为一个或多个微处理器(mpu)、微控制器(mcu)、数字信号处理器(dsp)或另一类型的处理器或处理器核心。另外,处理器14可为用于控制外围单元的外围装置或专用处理器,所述外围单元例如直接存储器访问(dma)外围设备。用适用于描述所示出的实施例的各种功能和方面的块示出处理器14。举例来说,处理器14包括分支预测器22、无序执行电路24、指令收回电路26和寄存器28。应理解,处理器将具有图1中未示出的其它功能块。其它功能块的例子包括但不限于随机存取存储器(ram)的存储器页面、闪存存储器和其它类型的非易失性存储器(nvm)、算术逻辑单元(alu)、调试接口、例如串行外围接口(spi)等外围单元、模/数转换器(adc)、控制器局域网(can)、以太网功能块和dma。还可存在系统控制功能,例如功率管理和系统时钟调节、额外系统核心和协处理器等。寄存器28可包括多个寄存器,所述多个寄存器可由程序员指定来存储各种数据和指令。

普通高速缓冲存储器16和推测性高速缓冲存储器18两者彼此双向连接且连接到控制电路20。在一个实施例中,普通高速缓冲存储器16和推测性高速缓冲存储器18可为同一存储器阵列的单独部分。在另一实施例中,可存在具有多于一层高速缓存的分级存储器系统。高速缓冲存储器16存储待由处理器14执行的指令和相关数据。推测性高速缓存18用于仅存储待由处理器14执行的推测性指令和相关推测性数据。控制电路20双向连接到处理器14和主存储器12以传输和接收数据和控制信号。另外,控制电路20从处理器14接收控制信号以指示指令是推测性指令还是非推测性指令。

推测性指令可响应于来自分支预测器22的预测被执行。可替换的是,推测性执行可响应于由无序执行电路24控制的无序执行。在一个实施例中,响应于控制电路20接收到控制信号,控制电路20使推测性指令和相关数据仅存储在推测性高速缓存中。而且,仅执行来自推测性高速缓存18的推测性指令且仅允许对推测性高速缓存18的写入操作。防止在执行推测性指令的同时对普通高速缓存16和主存储器12的写入操作。

图2示出根据一实施例的用于从存储器读取数据的方法30。所述方法可由数据处理系统10在推测性执行期间执行。在步骤32处,从存储器接收读取指令。被读取的存储器可为高速缓冲存储器16、推测性高速缓存18或主存储器12中的任一个。读取指令可用以从存储器读取寄存器28的特定寄存器的地址。在决策步骤34处,确定读取指令是否是推测性的。从处理器14提供到控制电路20的控制信号提供所述指示。如果读取指令不是推测性的,那么采取从决策步骤34到决策步骤36的“不”路径。在决策步骤36处,确定所请求的数据是否在普通高速缓冲存储器16中。如果数据在高速缓冲存储器16中,那么采取到步骤38的“是”路径且将所请求的数据传送到寄存器28的特定寄存器。如果在决策步骤36处数据不在普通高速缓存16中,那么采取到步骤40的“不”路径。在步骤40处,从主存储器12检索数据且将其存储在高速缓冲存储器16中。应注意,允许对高速缓冲存储器16写入,因为已确定指令不是推测性的。接着在步骤38处,将数据从高速缓冲存储器16传送到处理器14中的特定寄存器。然而,如果在决策步骤34处确定指令是推测性的,那么采取到决策步骤42的“是”路径。在决策步骤42处,确定数据是否在任何高速缓存中。在所示出的实施例中,存在推测性高速缓存18和普通高速缓存16。在其它实施例中,可用高速缓存可不同。如果数据在高速缓存16和18中的一个中,那么将数据传送到寄存器。应注意,当推测性执行在进行中时不允许对普通存储器16写入。推测性指令完全在推测性高速缓存18内执行以防止攻击者从普通高速缓冲存储器16检索信息。

图3示出根据一实施例的用于将数据写入到存储器的方法50。方法50可由数据处理系统10在推测性执行期间执行。在步骤52处,接收写入指令。被写入的存储器可为高速缓冲存储器16、推测性高速缓存18或主存储器12中的任一个。写入指令可被提供以将寄存器28的特定寄存器的内容写入到存储器中的地址。在决策步骤54处,确定写入指令是否是推测性的。如果写入指令不是推测性的,那么采取到决策步骤56的“不”路径。在决策步骤56处,确定数据是否在高速缓冲存储器16中。如果数据在高速缓冲存储器16中,那么在必要时通过来自特定寄存器的数据覆写所述数据。在决策步骤56处,如果确定数据不在高速缓冲存储器16中,那么采取到步骤60的“不”路径。在步骤60处,从主存储器12检索数据且将其存储在高速缓冲存储器16中。在步骤58处,通过来自特定寄存器的数据覆写所述数据。在步骤62处,将高速缓冲存储器16中的对应高速缓存线标记为无效。

如果在决策步骤54处确定指令是推测性的,那么采取到决策步骤64的“是”路径。在决策步骤64处,确定数据是否已经在推测性高速缓存18中。如果数据已经在推测性高速缓存18中,那么采取到步骤66的“是”路径。在步骤66处,通过来自寄存器的数据覆写推测性高速缓存18中的数据。应注意,如上文所论述,不允许在推测性执行继续进行的同时对普通高速缓冲存储器16的写入操作。在步骤70处,将推测性高速缓存18中的对应线标记为无效。如果在决策步骤64处,确定数据不在推测性高速缓存18中,那么采取到步骤68的“不”路径。在步骤68处,将来自主存储器12的数据存储在推测性高速缓存18中。接着方法50进行到步骤66和70,在所述步骤66和70中通过寄存器28的预定寄存器中的数据覆写推测性高速缓冲存储器18中的数据且将对应推测性高速缓存线标记为无效。

图4示出根据一实施例的用于推测性指令收回的方法74。取决于指令是读取指令还是写入指令,方法74可在方法30或方法50中的任一个之后执行。在步骤76处,执行推测性指令。在步骤78处,收回指令,同时允许任何存储器访问,因为推测性执行已经完成且分支预测器22的预测正确。另一方面,当处理器14以推测性方式执行指令且指令执行由于不正确预测而被证明是不必要的时,那么舍弃推测性执行的所有结果。在另一实施例中,就无序执行而言,指令收回指示指令已被提交。在决策步骤80处,确定是否已对推测性高速缓存18作出任何修改。如果未作修改,那么采取到步骤82的“不”路径。在步骤82处,无需关于推测性高速缓存18的另外的动作。如果在决策步骤80处确定推测性高速缓存18已被修改,那么采取到步骤84的“是”路径。在步骤84处,将由被收回的指令使用的数据从推测性高速缓存18传送到高速缓冲存储器16。

所公开的方法和数据处理系统允许处理器中的推测性执行,同时不会在普通高速缓冲存储器中留下可能被攻击者采用的痕迹,同时仍提供由推测性执行提供的速度增益。

各种实施例或实施例的部分可实施于硬件中或实施为非暂时性机器可读存储介质上的指令,所述非暂时性机器可读存储介质包括用于以例如个人计算机、膝上型计算机、文件服务器、智能电话或其它计算装置等机器可读的形式存储信息的任何机构。非暂时性机器可读存储介质可包括易失性和非易失性存储器,例如只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光学存储介质、闪存存储器等。非暂时性机器可读存储介质不包括暂时性信号。

尽管本文中参考具体实施例描述了本发明,但可在不脱离如所附权利要求书中所阐述的本发明的范围的情况下进行各种修改和改变。因此,说明书和图应视为说明性而不是限制性意义,且预期所有这些修改都包括在本发明的范围内。举例来说,本文中所描述的实施例可应用到ic具有若干层高速缓冲存储器的情况,且每一层可具有推测性高速缓存。而且,现有高速缓存逐出算法中的任一个可与推测性和普通高速缓存一起使用。另外,用于高速缓存管理的任何现有机构可与推测性和普通高速缓存两者一起使用。并不意图将本文中相对于具体实施例所描述的任何优势、优点或针对问题的解决方案理解为任何或所有权利要求书的关键、必需或必不可少的特征或元件。

此外,如本文中所使用,术语“一”被定义为一个或多于一个。而且,权利要求书中例如“至少一个”和“一个或多个”等介绍性短语的使用不应被解释为暗示由不定冠词“一”导入的另一权利要求要素将含有此导入的权利要求要素的任何特定权利要求书限于仅含有一个此类要素的发明,甚至是在同一权利要求书包括介绍性短语“一个或多个”或“至少一个”和例如“一”等不定冠词时。定冠词的使用也是如此。

除非另有陈述,否则例如“第一”和“第二”等术语用于任意地区别此类术语所描述的元件。因此,这些术语未必意图指示此类元件的时间上的优先级或其它优先级。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1