当前位置: 首页 > 专利查询>ARM有限公司专利>正文

在具有安全域和次安全域的数据处理设备中的异常处理制造技术

技术编号:10557943 阅读:148 留言:0更新日期:2014-10-22 13:14
提供了一种用于处理异常的数据处理设备和方法,所述数据处理设备具有被配置成响应于程序代码而执行数据处理操作的处理电路,所述处理电路包括用于控制异常处理的异常控制电路。多个寄存器被提供来存储数据,所述寄存器包括寄存器的第一子集和寄存器的第二子集,并且数据存储装置同样被提供来存储数据,所述数据存储装置包括包括安全区和次安全区在内的多个区,其中,安全区用于存储可由处理电路在安全域中操作时访问并且不可由处理电路在次安全域中操作时访问的数据。响应于来自由处理电路所执行的后台处理的初始异常,异常控制电路在触发处理电路执行与异常相对应的异常处理例程之前执行对来自寄存器的第一子集的数据的状态保存,其中,异常处理例程负责执行对来自寄存器的第二子集的数据的状态保存。响应于引起从安全域到次安全域的转变的第一异常,在后台处理由处理电路在安全域中执行的情况下,异常控制电路在触发处理电路在次安全域中执行异常处理例程之前执行额外的对来自寄存器的第二子集的数据的状态保存。本发明专利技术的硬件机制使得能够实现安全异常的有效处理,而无需通过异常处理程序进行代理。

【技术实现步骤摘要】
【国外来华专利技术】在具有安全域和次安全域的数据处理设备中的异常处理

涉及数据处理的领域,并且特别地涉及敏感数据和代码的处理。
技术介绍
许多数据处理系统和架构提供了隔离并且保护敏感数据和代码段以免于由未授权的人或进程访问的方式。尽管重要的是能够提供安全性,但是在与这种保护相关联的性能和电路面积中存在开销。在诸如微控制器之类的小型系统中,使这些开销保持在低值是非常重要的,并且因此可能需要做出在安全性的级别与性能之间的某种权衡。使数据和代码保持安全的一个方式由英国剑桥的用其Trustzone架构提供,其中存在安全状态和非安全状态(也被称为安全域和非安全域),并且异常指令被用来在状态之间转变,异常处理程序保护安全侧的安全性。尽管这种方式提供高度的安全性,但是需要软件异常处理程序形式的大量的软件干预来改变安全性状态,这既降低了系统的性能又增加了为安全软件开发外部应用程序接口API所需要的努力量,因为所有调用都必须通过异常处理程序来代理。类似地,需要在非安全域中处理的在安全域中发生的异常同样需要通过安全异常处理程序来代理,这允许安全状态在控制传递给非安全异常处理程序之前得以保护。US7966466和US2008/0250216公开了可替代的安全系统,其中数据存储装置具有安全侧和非安全侧,并且当前正被执行的代码在数据存储装置内的位置确定处理器正在操作的域,以及因此确定被允许访问的数据。
技术实现思路
从第一方面看,本专利技术提供了一种数据处理设备,其包括:被配置成响应于程序代码而执行数据处理操作的处理电路,处理电路包括用于控制异常处理的异常控制电路;被配置成存储数据的数据存储装置,数据存储装置包括包括安全区和次安全区在内的多个区,其中,安全区用于存储可由处理电路当在安全域中操作时访问并且不可由处理电路当在次安全域中操作时访问的数据;以及被配置成存储数据的多个寄存器,寄存器包括寄存器的第一子集和寄存器的第二子集,寄存器能够被在处理电路上执行的程序代码访问,并且,响应于异常,需要将来自寄存器的数据的状态保存至数据存储装置,以允许之后在该异常已经被处理的情况下将数据恢复至寄存器;其中:响应于来自由处理电路所执行的后台处理的初始异常,异常控制电路被配置成在触发处理电路执行与异常相对应的异常处理例程之前执行将来自寄存器的第一子集的数据的状态保存至数据存储装置,其中,异常处理例程负责执行将来自寄存器的第二子集的数据的状态保存至数据存储装置;并且响应于引起从安全域到次安全域的转变的第一异常,在后台处理由处理电路在安全域中执行的情况下,异常控制电路被配置成在触发处理电路在次安全域中执行异常处理例程之前执行额外的将来自寄存器的第二子集的数据的状态保存至数据存储装置。当在后台处理期间发生异常时,后台处理可能已将数据值放入寄存器,并且以便允许这些数据值在异常结束时被保持和存储,系统可以执行数据从寄存器到数据存储装置(典型地,到在数据存储装置中提供的堆栈)的状态保存。如上面所讨论的那样,对于一些系统来说,重要的是实现在所实现的安全性级别与处理性能之间的权衡。这在响应于异常而执行状态保存时同样成立。由于性能原因,执行寄存器的第一子集和第二子集中的数据的状态保存可能是有用的。依照本专利技术,对来自第一子集的数据的状态保存能够由硬件中的异常控制电路在触发异常处理例程之前执行。相比之下,异常处理例程(即软件)可以负责执行对来自寄存器的第二子集的数据的状态保存。然而,从安全性观点看,在异常处理例程的控制下的寄存器的第二子集的状态保存有时是有问题的。如果异常引起从安全域到次安全域的转变,则紧跟在安全域中执行的后台处理之后,异常处理例程能够修改在安全域中位于寄存器的第二子集的安全数据。为了防止这种安全性漏洞,依照本专利技术,如果在后台处理是在安全域中的情况下发生引起从安全域到次安全(在本文中也被称为非安全)域的转变的第一异常,则异常控制电路在次安全域中触发异常处理例程之前,除了第一子集之外,还执行额外的对来自寄存器的第二子集的数据的状态保存。通过提供用于在触发异常处理例程之前保存寄存器的第二子集的状态的硬件机制,能够防止数据被次安全域中的软件修改。因此,本技术能够在响应于异常而执行状态保存时实现安全性与性能之间的改进的平衡。本专利技术的硬件机制使得能实现次安全异常的有效处理,而无需通过安全异常处理程序进行代理。响应于第一异常,异常控制电路在一个实施例中被配置成在触发处理电路执行异常处理例程之前清除寄存器的第二子集。这意味着,在次安全域中的异常处理例程不能够访问当在安全域中时放入寄存器的第二子集的任何数据。进一步地,在一个实施例中,响应于第一异常,在异常控制电路触发处理电路执行异常处理例程之前,数据处理设备被配置成确保寄存器的第一子集不包含安全数据。存在能够实现此情况的许多方式。例如,硬件或软件都可以确保寄存器的第一子集被清除使得那些寄存器不包含任何安全数据。可替代地,可以是寄存器的第一子集能够被巧妙地设计以便仅在处理电路被触发执行异常处理例程之前包括非安全数据,在这种情况下可以没有必要清除寄存器的第一子集。在本申请中,术语“调用寄存器”和“被调用寄存器”可以被用来分别指示寄存器的第一子集和第二子集。虽然异常处理例程负责执行对来自寄存器的第二子集(被调用寄存器)的数据的状态保存,但是异常处理例程实际地执行对来自第二子集的数据的状态保存不总是必要的。例如,如果异常控制电路已经执行额外的对寄存器的第二子集的状态保存,则异常处理例程能够省略对这些寄存器的状态保存。可替代地,更简单的方式可以是即使额外的状态保存已经由硬件执行了,异常处理例程也总是执行对来自被调用寄存器的数据的状态保存。因为寄存器可能已经被硬件清除,所以异常处理例程无论如何都将不能够访问在被调用寄存器中预先保持的安全数据值,并且与将已清除数据值保存到数据存储装置的次安全区以及之后(在异常完成时)恢复已清除数据值相关联的开销可能小于与提供用于允许异常处理例程检测硬件是否已经执行了额外的状态保存的机制相关联的开销。关于寄存器的第一子集(调用寄存器)和寄存器的第二子集(被调用寄存器),在一个实施例中寄存器的第一子集有可包括零个寄存器,使得需要在异常处理程序附近保持的全部寄存器都是在第二子集中。在这种情况下,对于大多数异常,没有状态保存将由异常控制电路来执行,异常处理例程负责第二子集中的所有寄存器的保存。然而,响应于引起从安全域到次安全域的转变的第一异常,额外的状态保存可以使用异常控制电路将第二子集(需要被保持的所有寄存器)保存在硬件中,以防止通过异常处理例程在次安全域中对这种数据的访问。另外的异常有可能在在当前异常已完成的时刻是待决的。在这种情况下,处理电路可以在返回到在当前异常之前正被执行的后台处理之前向另外的异常提供服务。这种情形被称为“尾链”,并且另外的异常被称为“尾链化”异常。触发额外的状态保存的第一异常可以是当处理电路正在执行后台处理时发生的初始异常。可替代地,第一异常它本身可以是在初始异常之后但在返回到后台处理之前被处理的尾链化异常。在本申请中,术语“后台处理”被用来指示被更高优先级的异常中断的处理。如果异常处理例程它本身被更高优先级异常(在本文中被称为占先异常)中断,则对于占先异常来说,被中断的异常处本文档来自技高网...
在具有安全域和次安全域的数据处理设备中的异常处理

【技术保护点】
一种数据处理设备,其包括:被配置成响应于程序代码而执行数据处理操作的处理电路,所述处理电路包括用于控制异常处理的异常控制电路;被配置成存储数据的多个寄存器,所述寄存器包括寄存器的第一子集和寄存器的第二子集;以及被配置成存储数据的数据存储装置,所述数据存储装置包括包括安全区和次安全区在内的多个区,其中,安全区用于存储可由处理电路当在安全域中操作时访问并且不可由处理电路当在次安全域中操作时访问的数据;其中:响应于来自由处理电路所执行的后台处理的初始异常,异常控制电路被配置成在触发处理电路执行与异常相对应的异常处理例程之前执行对来自寄存器的第一子集的数据的状态保存,其中,异常处理例程负责执行对来自寄存器的第二子集的数据的状态保存;并且响应于引起从安全域到次安全域的转变的第一异常,在后台处理由处理电路在安全域中执行的情况下,异常控制电路被配置成在触发处理电路在次安全域中执行异常处理例程之前执行额外的对来自寄存器的第二子集的数据的状态保存。

【技术特征摘要】
【国外来华专利技术】2012.10.01 GB 1217531.1;2012.11.19 GB 1220771.8;201.一种数据处理设备,其包括:被配置成响应于程序代码而执行数据处理操作的处理电路,所述处理电路包括用于控制异常处理的异常控制电路;被配置成存储数据的数据存储装置,所述数据存储装置包括包括安全区和次安全区在内的多个区,其中,安全区用于存储可由处理电路当在安全域中操作时访问并且不可由处理电路当在次安全域中操作时访问的数据;以及被配置成存储数据的多个寄存器,所述寄存器包括寄存器的第一子集和寄存器的第二子集,所述寄存器能够被在所述处理电路上执行的程序代码访问,并且,响应于异常,需要将来自所述寄存器的数据的状态保存至所述数据存储装置,以允许之后在该异常已经被处理的情况下将数据恢复至所述寄存器;其中:响应于来自由处理电路所执行的后台处理的初始异常,异常控制电路被配置成在触发处理电路执行与异常相对应的异常处理例程之前执行将来自寄存器的第一子集的数据的状态保存至所述数据存储装置,其中,异常处理例程负责执行将来自寄存器的第二子集的数据的状态保存至所述数据存储装置;并且响应于引起从安全域到次安全域的转变的第一异常,在后台处理由处理电路在安全域中执行的情况下,异常控制电路被配置成在触发处理电路在次安全域中执行异常处理例程之前执行额外的将来自寄存器的第二子集的数据的状态保存至所述数据存储装置。2.根据权利要求1所述的数据处理设备,其中,响应于所述第一异常,异常控制电路被配置成在触发处理电路执行异常处理例程之前清除寄存器的第二子集。3.根据权利要求2所述的数据处理设备,其中,响应于所述第一异常,数据处理设备被配置成在异常控制电路触发处理电路执行异常处理例程之前确保寄存器的第一子集不包含安全数据。4.根据任何前述权利要求所述的数据处理设备,其中,如果异常控制电路已在触发处理电路执行异常处理例程之前执行了额外的状态保存,则异常处理例程不执行寄存器的第二子集的状态保存。5.根据权利要求1至3中任一项所述的数据处理设备,其中,如果异常控制电路已在触发处理电路执行异常处理例程之前执行了额外的状态保存,则异常处理例程同样执行寄存器的第二子集的状态保存。6.根据权利要求1所述的数据处理设备,其中,所述第一异常包括在后台处理期间发生的初始异常。7.根据权利要求1所述的数据处理设备,其中,所述第一异常包括在初始异常已被处理之后并且在返回到在初始异常之前正被执行的后台处理之前所处理的尾链化异常。8.根据权利要求1所述的数据处理设备,其中,响应于在所述初始异常已被处理并且在处理电路已返回到在初始异常之前正被执行的所述后台处理之前为待决的另外的异常,异常控制电路被配置成在使处理电路返回到后台处理之前将另外的异常的处理作为尾链化异常控制。9.根据权利要求1所述的数据处理设备,其中:所述异常控制电路被配置成,响应于比正在被执行的异常处理例程所对应的当前异常更低的优先级的新的异常,在使处理电路返回到后台处理之前将新的异常的处理作为尾链化异常控制;异常控制电路被配置成在控制新的异常的处理时不再执行状态保存操作,除非所述当前异常在所述安全域中被执行,所述新的异常指示切换到所述次安全域,并且所述后台处理在所述安全域中被执行,在这种情况下,所述异常控制电路被配置成,在完成针对所述当前异常的异常处理例程之后,执行所述额外的对来自寄存器的所述第二子集的数据的状态保存,并且确保寄存器的所述第二子集在触发处理电路执行与新的异常相对应的异常处理例程之前被清除。10.根据权利要求1所述的数据处理设备,其中:所述异常控制电路被配置成,响应于比正在被执行的异常处理例程所对应的当前异常具有更低的优先级的新的异常,在使处理电路返回到后台处理之前将新的异常的处理作为尾链化异常控制;异常控制电路被配置成在控制新的异常的处理时不执行状态恢复操作,除...

【专利技术属性】
技术研发人员:托马斯·克里斯托弗·乔洛卡特理查德·罗伊·格里森思怀特
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国;GB

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1