专利名称:用于在安全执行期间资源的无死锁总线保护的系统和方法
技术领域:
本发明的实施例涉及安全执行环境。更具体地,本发明的实施例涉及在具有至少一个以安全执行模式执行的处理器的多处理器系统中避免死锁条件。背景多处理器系统在现今信息驱动的社会中无处不在。在一些情况中,期望允许系统 中的一个处理器处理安全敏感信息,同时限制系统中的其他处理器访问该信息。为此,已经 建立了各种安全环境来对安全数据的潜在访问器进行验证,并在数据处于共享存储器或其 他共享资源时阻止其他代理访问该数据。在一些情况中,阻止在共享总线上的仲裁器把总 线授权给任何不在安全模式中执行的处理器。遗憾的是,诸如停止时钟操作之类的一些全 局操作需要来自所有处理器的确认以表示它们都准备好发生停止时钟操作。当仲裁器使除 了用于安全模式中的处理器以外的所有总线代理远离总线时,剩余的总线代理就不能确认 停止时钟请求,因此决不会发生停止时钟操作。这导致了明显的能力低效和/或死锁条件。附图简述本发明通过实例的方式并且不限于附图中的图来进行说明,其中相同的参考标记 表示相同的元件。应当注意,在本公开中对“一”或“一个”实施例的提及未必是相同的实 施例,并且这种提及是指至少一个。
图1是本发明一个实施例的系统的框图。图2是本发明一个实施例的芯片组中的操作的流程图。图3是在本发明一个实施例中处理器中的操作的流程图。详细说明图1是本发明一个实施例的系统的框图。诸如处理器100之类的第一总线代理被 耦合到总线112。总线112由诸如处理器160之类的一个或多个附加总线代理共享。总线 代理的数量可以是任意大的,并且受限于总线112的物理和电气限制。仲裁单元114仲裁在 诸如处理器100和处理器160之类的各种总线代理之间对总线112的访问。在一些实施例 中,分开的物理总线可以存在,但是被逻辑地仲裁为单个总线。芯片组120驻留在总线112 上。芯片组120提供了在总线代理共享总线112和系统存储器140以及输入/输出(I/O) 设备150之间的接口。在一个实施例中,每个处理器可以具有一个专用总线和与芯片组120 的接口来访问诸如系统存储器140和I/O设备150之类的系统资源。每个处理器100、160分别包括高速缓存102和162。在多处理器系统中高速缓存 的一致性可以以任何常规的方式来执行,包括回写、直写或任何其他在多处理器系统中传 统地保持该高速缓存一致性的方式。处理器100包括通过发出适当的总线周期来允许处理 器进入和退出安全执行模式的微码110。验证引擎108被提供来允许处理器100对从外部 源接收的代码进行验证以确保该代码应当是可信的。在一个实施例中,验证引擎108可以在代码模块上通过散列该代码并将该散列值与使用公共私有密钥对的公共密钥所解密的 数字签名的散列值进行比较来执行验证。在可选择实施例中,验证可以通过微码110来执 行。一旦对代码进行了成功验证,处理器100就可以广播总线周期以请求进入安全模式。一 旦处于安全模式,处理器100就可以以安全模式进行操作,直至它发出总线周期来释放该 安全模式。在一个实施例中,微码110使用总线控制器104作为与总线112的联络(liaison) 以产生总线周期来进入安全执行模式。在安全执行模式中,处理器100执行来自内部随机 存取存储器(RAM) 106的验证代码。由于RAM 106是内部数据,因此其中所持续的代码通常 都不能由外部代理访问,除非该代码可以使用来自系统存储器140的安全敏感数据或者执 行包括其他总线代理不应当被授权访问的数据的安全敏感I/O操作。因此,当处理器100以 安全模式操作时,重要的是不允许处理器160执行在总线112上的安全敏感总线周期。然 而,如上所述,通过拒绝它在仲裁器114处仲裁的权利来限制处理器160访问该总线,会导 致死锁条件。因此,当总线控制器104发出了构成对进入安全模式的请求的信号时,在芯片组 120中的总线控制器124接收该周期,并且识别逻辑126提取处理器100的标识符,与系统 中的其他总线代理相比,该标识符唯一地对其进行标识。该标识符被记录在存储单元128 中,以供与后续的总线周期进行比较时使用。在另一个实施例中,所有的处理器执行高速缓 存无效握手以作为处理器进入安全模式的先决条件。在处理器100和160中存在的高速缓 存无效逻辑130、131分别执行高速缓存无效。这消除了在安全执行模式期间回写的需要。 在可选择实施例中,并不发生高速缓存无效,但是响应于探听(snoop)周期而来自不安全 总线代理的写入不被认为是“安全敏感”周期。当处理器100以安全执行模式操作时,芯片组120监视总线112的安全敏感周期。 如果识别了安全敏感周期,则芯片组使用比较逻辑122来将始发总线代理的标识符与在存 储单元128中所记录的标识符进行比较。如果标识符匹配,例如安全敏感总线周期的始发 者是以安全模式操作的总线代理,则允许该事务完成。然而,如果标识符不匹配,例如在处 理器100以安全执行模式执行时处理器160试图从系统存储器140读出或写入,则芯片组 120将进行调解(intercede),并且将试图阻止该事务的完成,或者阻止不安全总线代理的 进一步的事务。为了便于调解,芯片组120可以包括复位/中断逻辑132。在一个实施例 中,芯片组120通过响应于由不安全总线代理发出的安全敏感总线周期而要求(assert)系 统复位来调解。在另一个实施例中,芯片组120对诸如以安全模式执行的处理器100之类 的总线代理要求高优先级中断。在每个处理器都具有专用总线但是共享某些系统资源的实 施例中,只有对诸如系统存储器140或I/O设备150之类的共享资源的访问可被认为是安 全敏感的。换句话说,即使当另一个总线代理处于安全模式时,处理器也可以在无需芯片组 干预的情况下不使用其专用资源。在一些情况下,芯片组120可能希望执行全局动作(action)。例如,在电源管理的情况下,芯片组常常被分派要求停止时钟动作的任务。然而,在该全局动作可以发生之前, 在总线上的每个代理,例如处理器100和处理器160,必须确认它们处于例如它们的时钟可 以被停止的状态。由于停止时钟确认不被视为安全敏感事务,因此即使当一个代理以安全 执行模式操作时也允许来自总线上的所有代理完成它。以这种方式,电源管理和其他内务处理杂事可以被有效地完成,而不危害安全执行模式的安全性。在一些实施例中,诸如直接存储器存取(DMA)控制器、网卡和其他I/O总线主控器之类的其他总线代理可能尝试安全敏感事务。在一个实施例中,对这种设备的违反安全性 的防止留给控制它们的处理器。在另一个实施例中,芯片组将这种总线代理视作它将是这 样的处理器总线代理,例如在另一个代理处于安全模式时如果这种代理要求了安全敏感周 期则进行干预。图2是本发明一个实施例的芯片组中的操作的流程图。在判定块202,确定总线周 期是否构成对进入安全模式的请求。如果不是,芯片组就监视附加的总线周期,从而允许它 们以正常过程完成,直到接收到作为对安全模式的请求的总线周期。当接收到作为对安全 模式的请求的总线周期时,芯片组在块204记录请求的总线周期的标识符。块210以虚线进行描绘,以反映该芯片组可以启动全局动作,但是并不需要在流 程图的每次迭代中都这样做。这种全局动作例如包括停止时钟条件的要求或者需要响应的 中断控制器消息周期。在块212,芯片组接收总线周期。在判定块214,芯片组确定该周期被认为是安全 敏感的。例如,在一个实施例中,所有对系统存储器或I/O设备的读取和写入周期都被认为 是安全敏感的。此外,各种控制周期可以被认为是安全敏感的。相反,例如中断确认和全局 动作确认被认为是安全不敏感的。例如,对进入安全模式的第二请求(当另一个处理器已 经以安全模式执行时)可以被视作一种攻击。如果该周期不是安全敏感的,则在判定块216 确定该周期是否确认了未决的全局动作。如果不是,则允许该周期在块218完成。如果是, 则在判定块220确定是否已经从所有代理接收到确认。如果所有的代理都已经确认,则芯 片组在块222完成全局动作。如果在判定块214确定该周期是安全敏感的,则在224确定该周期是否来自安全 代理。如果该周期来自安全代理,则在判定块226确定该总线周期是否释放安全模式。如 果不是,则允许该总线周期在块218完成它。如果是,则当前在系统中没有代理是处于安全 模式的。如果在判定块224确定该周期不是来自处于安全模式的代理,则芯片组在228在 总线访问中进行调解。在各种实施例中,这种调解可以采取对以安全模式操作的总线代理 要求高优先级中断的形式,或者可以采取要求系统复位来复位整个系统的形式。图3是在本发明一个实施例中处理器中的操作的流程图。在块302,处理器对代码 块进行验证。在块304,处理器广播请求进入安全模式的总线周期。判定块306表示在设 计时所作的隐式判定,其中确定在安全执行模式期间是否将允许用于高速缓存一致性的回 写。在可选择实施例中,验证的代码可以为在判定块306做出判定提供基础。例如,验证代 码可以在处理器中设定寄存器来表示是否允许回写。如果不允许回写,则所有的高速缓存 总线代理都需要在块307使高速缓存无效以确保在安全执行期间高速缓存一致性。高速缓 存无效可以使用各种握手技术来执行,这些技术有效地需要在高速缓存中最当前的信息被 回写到系统存储器中以作为进入安全模式的先决条件。在块308,处理器执行来自内部随机 存取存储器(RAM)的验证代码。处理器可以在不确定的时间周期中保持在安全模式中。在 一个实施例中,芯片组保持其安全警戒,直至安全处理器在总线上发布释放周期以退出安 全执行模式。当处理器完成其安全执行时,在块310它发出释放周期以退出安全模式。在上述说明书中,已经参考其特定实施例描述了本发明。然而,下述将是明显的,在不背离如由所附权利要求书陈述的本发明的较宽的精神和范围的情况下可以对其做出各种修改和改变。因此,本说明书和附图将在说明性而非限制性的意义上来看待。
权利要求
一种方法,包括将来自第一总线代理的总线周期识别为对进入安全执行模式的请求;记录该第一总线代理的标识符;如果另一个总线代理启动了安全敏感总线周期,则进行调解。
2.权利要求1所述的方法,其中调解包括以下之一 给该第一总线代理发送高优先级中断;以及启动系统复位。
3.权利要求1所述的方法,其中调解包括 阻止安全敏感总线周期的完成。
4.权利要求1所述的方法,其中调解包括 阻止由另一个总线代理启动的随后的事务。
5.权利要求1所述的方法,还包括允许来自任何总线代理的安全不敏感总线周期。
6.权利要求1所述的方法,还包括 在总线上启动全局动作;在该第一总线代理处于安全模式时通过总线接受来自每个总线代理的全局动作的确 认;以及完成全局动作。
7.权利要求1所述的方法,其中除了回写周期以外,所有涉及系统存储器和输入/输出 设备的读取和写入周期都被视为安全敏感周期。
8.权利要求1所述的方法,还包括从该第一总线代理接收表示释放安全执行模式的总线周期; 响应于该释放而中止调解。
9.一种系统,包括 总线;耦合到总线的第一总线代理,该第一总线代理具有允许进入安全执行模式的逻辑; 耦合到总线的第二总线代理;以及芯片组,其被耦合到总线来识别来自第一处理器的总线周期以启动安全执行模式,该 芯片组记录第一处理器的标识符,以及限制来自第二处理器的安全敏感总线周期,直至第 一处理器退出安全执行模式。
10.权利要求9所述的系统,其中第一处理器包括 内部随机存取存储器;验证引擎;微码,用于产生第一总线周期以进入第二总线周期来退出安全执行模式;以及 总线控制器,用于启动第一和第二总线周期。
11.权利要求9所述的系统,其中芯片组包括总线控制器,用于接受来自第一和第二处理器的总线周期; 用于识别请求进入安全执行模式的周期的逻辑; 存储元件,用于保留周期的来源的标识符;以及用于将该标识符与用于随后的安全敏感周期的来源的标识符进行比较的逻辑。
12.权利要求9所述的系统,其中第一总线代理和第二总线代理均包括高速缓存无效 逻辑,用于响应于进入安全执行模式的尝试而使本地高速缓存无效。
13.权利要求9所述的系统,其中第二总线代理是以下之一直接存储器存取控制器,网络处理器,通用处理器,以及输入/输出总线主控器。
14.一种装置,包括总线控制器,用于识别请求进入安全执行模式的总线周期; 存储单元,用于记录该总线周期的来源的标识符;以及 比较逻辑,用于识别安全敏感总线周期是否源自该来源。
15.权利要求14所述的装置,还包括复位逻辑,用于响应于比较逻辑识别出该安全敏感总线周期不是源自该来源而强制系 统复位。
16.权利要求14所述的装置,还包括中断产生器,用于如果该安全敏感总线周期源自一个不同的来源,则响应于该安全敏 感总线周期而产生涉及该总线周期的来源的高优先级中断。
全文摘要
本发明用于在安全执行期间资源的无死锁总线保护的系统和方法,一种在安全执行期间存储器和I/O资源的无死锁总线保护的方法和系统。总线周期启动一个总线代理进入安全执行模式。芯片组记录该安全模式处理器的标识符。此后,如果在该安全模式处理器退出安全模式之前另一个总线代理尝试安全敏感总线周期,则芯片组进行调解。
文档编号G06F21/00GK101826143SQ20101016218
公开日2010年9月8日 申请日期2005年9月2日 优先权日2004年9月15日
发明者D·莫兰, J·萨顿二世, S·费希尔 申请人:英特尔公司