CN112585584A - 用于处理引起异常的事件的装置和方法 - Google Patents

用于处理引起异常的事件的装置和方法 Download PDF

Info

Publication number
CN112585584A
CN112585584A CN201980055089.2A CN201980055089A CN112585584A CN 112585584 A CN112585584 A CN 112585584A CN 201980055089 A CN201980055089 A CN 201980055089A CN 112585584 A CN112585584 A CN 112585584A
Authority
CN
China
Prior art keywords
processing unit
exception
handling routine
event
mapped
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
CN201980055089.2A
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 CN112585584A publication Critical patent/CN112585584A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供一种用于处理引起异常的事件的装置和方法。提供一种用于执行程序代码的第一处理单元,并且还提供一种第二处理单元。所述第一处理单元具有控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问。所述第一处理单元响应于至少一个引起异常的事件而进入所述第一处理单元停止执行所述程序代码的暂停模式并发出触发事件。所述第二处理单元响应于所述触发事件而执行异常处理例程,在所述异常处理例程期间,所述第二处理单元被布置为经由所述控制接口访问所述第一处理单元的状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息。所述第二处理单元被布置为在所述异常处理例程完成时使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。这样的方法允许实现正在由所述第一处理单元执行的所述程序代码与用于执行所述异常处理例程的软件之间的物理分离,这能够产生所述系统内的显著的安全性改进。

Description

用于处理引起异常的事件的装置和方法
技术领域
本技术涉及一种用于处理引起异常的事件的装置和方法。
背景技术
当在处理单元上执行软件时,可能出现引发异常的事件。在那时,可以调用中断服务例程的执行以便处理引起异常的事件。常常,中断服务例程可以在更高级别的软件执行特权下执行,并且是比产生引起异常的事件时执行的代码更可信的代码的一部分。在一些示例实施方式中,软件执行特权的级别可以被称为异常级别,因此当在执行一件特定软件期间发生引起异常的事件时,可能会发生向更高异常级别的转变,以便然后在该更高异常级别执行中断服务例程。
在此类系统中,期望提高系统内的安全性级别,以便减轻不太可信的代码获得对与更可信的代码相关联的数据的访问的风险。
发明内容
在一种示例配置中,提供了一种系统,所述系统包括:第一处理单元,所述第一处理单元用于执行程序代码;和第二处理单元;所述第一处理单元具有控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;所述第一处理单元响应于至少一个引起异常的事件而进入所述第一处理单元停止执行所述程序代码的暂停模式并发出触发事件;所述第二处理单元响应于所述触发事件而执行异常处理例程,在所述异常处理例程期间,所述第二处理单元被布置为经由所述控制接口访问所述第一处理单元的状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;所述第二处理单元被布置为在完成所述异常处理例程时使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
在另一示例配置中,提供了一种第一处理单元,所述第一处理单元包括:执行电路,所述执行电路用于执行程序代码;和控制接口,所述控制接口被映射到第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;所述第一处理单元响应于至少一个引起异常的事件而进入所述执行电路停止执行所述程序代码的暂停模式,并发出触发事件;所述控制接口被布置为在所述第二处理单元响应于所述触发事件而正在执行异常处理例程的同时对所述第二处理单元可访问,以使得所述第二处理单元能够按照所述异常处理例程所要求的来访问并修改所述第一处理单元的状态信息;所述第一处理单元被布置为:在所述第二处理单元已完成所述异常处理例程时,退出所述暂停模式并重新开始执行所述程序代码。
在又一示例配置中,提供了一种第二处理单元,所述第二处理单元包括:执行电路,所述执行电路用于响应于由第一处理单元发出的触发事件而执行异常处理例程,所述触发事件指示所述第一处理单元已进入由所述第一处理单元对程序代码的执行已被暂停的暂停模式;和通信接口,所述第二处理电路被布置为在执行所述异常处理例程的同时经由所述通信接口访问所述第一处理单元的控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;所述第二处理单元被布置为经由所述控制接口访问所述第一处理单元的状态信息,以便如所述异常处理例程所要求的那样修改所述状态信息;并且所述第二处理单元被布置为在完成所述异常处理例程时使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
在再一示例配置中,提供了一种在系统中处理引起异常的事件的方法,所述系统具有第二处理单元和用于执行程序代码的第一处理单元,所述方法包括:给所述第一处理单元提供控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;响应于所述第一处理单元内的至少一个引起异常的事件,使所述第一处理单元进入所述第一处理单元停止执行所述程序代码的暂停模式,并发出触发事件;使所述第二处理单元响应于所述触发事件而执行异常处理例程,在所述异常处理例程期间,所述第二处理单元经由所述控制接口访问所述第一处理单元的状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;以及在由所述第二处理单元完成所述异常处理例程时,使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
在另一示例配置中,提供了一种系统,所述系统包括:用于执行程序代码的第一处理手段;和第二处理手段;所述第一处理设备具有控制接口手段,所述控制接口手段被映射到所述第二处理手段的存储器地址空间以便给所述第二处理手段提供对所述第一处理手段的状态信息的直接映射访问;所述第一处理手段用于通过进入所述第一处理手段停止执行所述程序代码的暂停模式并通过发出触发事件来对至少一个引起异常的事件做出响应;所述第二处理手段响应于所述触发事件而用于执行异常处理例程,在所述异常处理例程期间,所述第二处理手段被布置为经由所述控制接口手段访问所述第一处理手段的状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;所述第二处理手段在所述异常处理例程完成时,用于使所述第一处理手段退出所述暂停模式并重新开始执行所述程序代码。
附图说明
参考本技术的如附图中所示的示例,本技术将仅通过图示的方式被进一步描述,在附图中:
图1是图示根据一个示例实施方式的系统内提供的组件的框图;
图2是更详细地图示根据一个示例实施方式的可以在图1的存储器映射的控制接口内提供的存储元件的图;
图3是图示根据一个示例实施方式的异常处理的流程图;
图4A图示在不使用本技术的情况下的异常处理,而图4B图示当使用本技术时的异常处理;
图5A和图5B图示可以利用本文描述的技术的处理单元的示例实施方式;
图6图示根据一种示例布置如何能够实现本文描述的技术以允许异常处理的嵌套(nesting);
图7图示使用中断分发器来将中断分发给许多不同的控制核心中的一个的替代示例配置;以及
图8图示可以在应用核心与控制核心之间共享至少一个级别的缓存的示例布置。
具体实施方式
在一种示例配置中,系统可以提供第二处理单元和用于执行程序代码的第一处理单元。第二处理单元也可以执行程序代码,但是本文描述的技术感兴趣的是:在由第一处理单元执行程序代码期间发生引起异常的事件的情形下,如何使用第二处理单元。
第一处理单元被提供有控制接口,所述控制接口被映射到第二处理单元的存储器地址空间,并且第一处理单元被配置为给第二处理单元提供对第一处理单元的状态信息的直接映射访问。因此,经由控制接口,第二处理单元被提供有对第一处理单元的至少一些状态的直接映射访问。
第一处理单元被布置为使得它响应于至少一个引起异常的事件而进入暂停模式并发出触发事件,在该暂停模式中第一处理单元停止执行程序代码。第二处理单元然后被布置为使得它响应于这样的触发事件而执行异常处理例程,在所述异常处理例程期间,第二处理单元可以经由控制接口访问第一处理单元的状态信息,以便按照异常处理例程所要求的来修改状态信息。因此,相比于第一处理单元本身将执行所要求的异常处理例程的正常方法,在如果要求的情况下已首先转变到更高级别的软件执行特权之后,根据本文描述的技术,第一处理单元不执行异常处理例程,而替代地由分别的处理单元执行异常处理例程。这因此使得能够在执行其程序代码的第一处理单元与用于代表第一处理单元来执行异常处理例程的分别的处理单元之间实现物理分离。这能够显著地提高系统内的安全性。
在异常处理例程完成时,第二处理单元然后可以被布置为使第一处理单元退出暂停模式并重新开始执行程序代码。由于第二处理单元能够经由第一处理单元的控制接口访问所要求的状态信息,所以它能够在代表第一处理单元来执行异常处理例程的同时按要求高效地操纵第一处理单元的状态,使得当在适当的时候第一处理单元退出暂停模式时,它能够在状态已被酌情更新情况下正确地重新开始执行程序代码,以便处理引起异常的事件。
因此,通过给第一处理单元提供被映射到第二处理单元的存储器地址空间中的控制接口,并且允许第二处理单元能够直接映射访问第一处理单元的相关状态信息,能够将处理由引起异常的事件引起的异常所要求的异常处理例程的执行从第一处理单元卸载到物理上分离的处理单元,从而显著地减轻某些类型的攻击可以设法从不可信的代码获得对可信的数据的访问的可能性。
经由第一处理单元的控制接口给予第二处理单元直接映射访问的状态信息可以采取各种形式。在一个示例实施方式中,这种状态信息包括第一处理单元的寄存器组的内容,所述第一处理单元的寄存器组用于存储由第一处理单元在执行程序代码时处理的数据。因此,在第二处理单元上对执行处理例程的执行期间,第二处理单元能够使用第一处理单元的控制接口来以高效的方式读取那些寄存器的内容,并且按要求更新那些寄存器的内容。
存在能够将控制接口布置为给第二处理单元提供对上面提及的第一处理单元的寄存器组的直接映射访问的多种方式。在一种示例布置中,控制接口提供存储元件组,所述存储元件组被映射到第二处理单元的存储器地址空间以提供由第二处理单元对寄存器组的直接映射访问。因此,该寄存器组内的每个存储元件能够由第二处理单元寻址,并且被直接地映射到第一处理单元的寄存器组内的对应的寄存器。结果,无论何时第二处理单元对那些存储元件中的一个做出读取或写入访问,这都用于触发对第一处理单元的寄存器组内的相关寄存器的对应的读取或写入访问。
除了访问第一处理单元的寄存器组之外或者代替访问第一处理单元的寄存器组,可以给予第二处理单元对第一处理单元的存储器地址空间的至少一部分的直接映射访问,因此经由控制接口给第二处理单元提供的第一处理单元的状态信息的至少一部分可以是第一处理单元的存储器地址空间的一部分。
在一种示例布置中,第一处理单元的存储器地址空间的这样的一部分可以被布置为形成与第二处理单元的主地址空间分离的第二处理单元的辅地址空间。存在能提供以允许第二处理单元访问辅地址空间的许多机构。例如,能出于此目的使用分别的加载/存储指令,或者能将标记位添加到由第二处理单元在生成存储器地址时使用的地址寄存器的非地址部分,以影响它是在主地址空间还是辅地址空间内生成存储器访问。
然而,提供如上面所识别的辅地址空间很可能要求对系统进行某些架构变化。在替代实施方式中,可以通过将第一处理单元的存储器地址空间的相关部分映射到第二处理单元的主地址空间中来避免此类架构变化。例如,控制接口可以提供被映射到第二处理单元的存储器地址空间的存储元件块,该存储元件块中的每个存储元件被直接地映射到第一处理单元的存储器地址空间的至少一部分内的对应的存储器位置。因此,在此类情况下第一处理单元的相关存储器地址空间能够由第二处理单元以与能够访问早先提及的第一处理单元的寄存器组几乎相同的方式访问。
为了允许关于控制接口内的存储元件块如何与第一处理单元的存储器地址空间的部分的各个存储器位置相关联的可配置性,控制接口可以包括可配置的映射储存器以识别存储元件块中的存储元件与第一处理单元的存储器地址空间的至少一部分内的对应的存储器位置之间的直接映射。
在一个示例实施方式中,可以以上面讨论的方式处理在第一处理单元正在执行程序代码时发生的任何引起异常的事件,即,使第一处理单元进入暂停模式并发出触发事件。然而,在其他实施方式中,这可以被约束为仅对于某些引起异常的事件而发生,虽然可能与在执行异常处理例程之前转变第一处理单元的异常级别相关联地,可以以传统方式(即在第一处理单元本身内)处理其他引起异常的事件。
在一个实施方式中,控制接口可以进一步包括可配置的异常事件识别储存器以识别:当在由第一处理单元执行程序代码期间遇到引起异常的事件时,哪些引起异常的事件将使第一处理单元进入暂停模式并发出触发事件。因此,能够通过可配置的异常事件识别储存器的内容来控制第一处理单元,使得在检测到引起异常的事件时,它能够确定是否适于进入暂停模式并发出触发事件。
这样的方法在使用上述技术时提供很大的灵活性。作为具体示例用例,异常事件识别储存器可以被配置为识别每当发生引起异常的事件时第一处理单元将进入暂停模式并发出触发事件,要是引起异常的事件将由第一处理单元处理,所述引起异常的事件就将要求第一处理单元转变到指定的异常级别。因此,在第一处理单元内处理引起异常的事件不会使它转变到所指定的异常级别的情形下,可以确定要允许所要求的异常处理例程由第一处理单元本身执行,但是在第一处理单元将有必要转变到所指定的异常级别(或替代地转变到所指定的异常级别或更高异常级别)的情形下,不是采取该步骤,而是第一处理单元能够被布置为进入暂停模式并发出触发事件,从而使所要求的异常处理例程由物理上分离的第二处理单元来执行。
在一个示例实施方式中,第一处理单元被布置为在进入暂停模式时保持在其当前异常级别下,第二处理单元被布置为在选取的异常级别执行异常处理例程。因此,通过使用上述技术,在第一处理单元无需改变其当前异常级别的情况下处理引起异常的事件。替代地第一处理单元仅仅进入暂停模式,从而保持在其当前异常级别下,并且当在适当的时候第一处理单元被指示要退出暂停模式,第一处理单元继而能够在该当前异常级别下重新开始执行程序代码。这避免了要是第一处理单元转变到不同的异常级别以便处理异常处理例程,就需要第一处理单元采取可能在其他情况下被要求的步骤。此类步骤可以例如涉及保存当前执行状态和返回地址,进入所要求的模式/异常级别,可能从诸如本地缓存的临时储存器中清除某些数据等。因此,除了能够通过采用本文描述的技术来实现的安全性益处之外,还能够在一些实施方式中实现某些效率益处。
所选取的第二处理单元执行异常处理例程的异常级别能够采取各种形式。例如,可能的是在一些情况下,所选取的第二处理单元的异常级别可以与第一处理单元的当前异常级别相同。然而,在一个特定实施方式中,所选取的异常级别是比第一处理单元的当前异常级别更高的异常级别。
在一个实施方式中,触发事件可以并入某些信息以帮助第二处理单元识别第一处理单元为何进入暂停模式。然而,作为补充触发事件本身的替代方案,在一个实施方式中控制接口可以包括校验子(syndrome)储存器,所述校验子储存器被映射到第二处理单元的存储器地址空间并由第一处理单元写入以提供由第二处理单元使用来帮助识别第一处理单元为何进入暂停模式的信息。因此,当第二处理单元处理触发事件时,则它能够执行对校验子储存器的读取访问以获得帮助识别第一处理单元为何进入暂停模式的信息,从而改进为了处理引起异常的事件而要求的过程的效率。
在第一处理单元和第二处理单元之间不需要有一对一映射。例如,第二处理单元能够代表正在执行程序代码的各种不同的处理单元来执行上述功能性。例如,在一种示例布置中系统可以进一步包括第三处理单元,所述第三处理单元具有另一控制接口,所述另一控制接口被映射到第二处理单元的存储器地址空间并且被配置为给第二处理单元提供对第三处理单元的状态信息的直接映射访问。第三处理单元可以响应于至少一个引起异常的事件而进入暂停模式并发出触发事件,在该暂停模式中第三处理单元停止执行。触发事件可以包括使得第二处理单元能够确定触发事件是由第一处理单元还是第三处理单元发出的信息,从而确定要在执行异常处理例程时访问第一处理单元和第三处理单元中的哪一个。因此,在这种情况下第二处理单元能够代表第一处理单元和第三处理单元两者来执行异常处理例程,并且能够经由被映射到其存储器地址空间中的相关控制接口来按要求访问所要求的任何一个处理单元的状态信息。
在一个示例实施方式中,能够在系统内的多个级别处嵌套异常的处理。因此,尽管第二处理单元可以代表第一处理单元来处理异常,但是第二处理单元本身可以被布置为使得在它正在执行代码时发生的引起异常的事件能够由附加处理单元处理。因此,在一种示例布置中系统可以进一步包括附加处理单元,其中第二处理单元具有第二控制接口,所述第二控制接口被映射到附加处理单元的存储器地址空间并且被配置为给附加处理单元提供对第二处理单元的状态信息的直接映射访问。第二处理单元然后可以响应于在第二处理单元上执行程序代码期间出现的至少一个引起异常的事件而进入暂停模式并发出另一触发事件,在该暂停模式中第二处理单元停止执行在第二处理单元上运行的程序代码。附加处理单元然后响应于另一触发事件而执行另一异常处理例程,在所述另一异常处理例程期间,附加处理单元被布置为经由第二控制接口访问第二处理单元的状态信息,以便按照另一异常处理例程所要求的来修改状态信息。附加处理单元继而被布置为在完成另一异常处理例程时使第二处理单元退出暂停模式并重新开始执行正在第二处理单元上运行的程序代码。
通过这样的方法,应领会的是,能够按照需要而实现任何任意级别的嵌套。利用这样的实施方式,每个分别的处理单元可以被配置为使得它仅能够在系统内的可用异常级别的子集下操作。实际上,在一种极端情况下,所有分别的处理单元都能够被布置为仅在单个异常级别执行,其中要是任何引起异常的事件将由当前处理单元处理,而不是由进入暂停模式并发出触发事件(其中,该触发事件然后由在该更高异常级别下操作的另一处理单元处理)的当前处理单元处理,就不会导致到更高异常级别的转变。
系统内的各种处理单元能够采取各种形式。在一种示例布置中,第一处理单元是应用处理单元并且程序代码是应用程序代码,第二处理单元是控制处理单元。因此,在一种示例布置中,第一处理单元能够被布置为使得它仅执行应用代码,并且可以被配置为使得它仅能够在最低的软件执行特权级别下(例如在最低异常级别下)操作。将要求在更高异常级别执行代码的任何引起异常的事件不由第一处理单元处理,而是替代地经由本文描述的技术被卸载到另一处理单元。
在一种示例布置中,第一处理单元和第二处理单元可以由分别的处理器核心提供。在一种这样的布置中,第一处理单元和第二处理单元可以具有用于至少系统内的缓存级别的子集的分别的缓存结构。通过第一处理单元与第二处理单元之间的缓存结构的适当分离,这能够进一步改进安全性益处(例如关于最近公开的基于推测的缓存定时侧信道攻击,其中能够使用许多技术来设法产生如下场景:可能滥用缓存定时分析以从指令的错误推测执行中泄漏信息)。通过确保使用分别的缓存结构,至少在更高级别的缓存(例如第一级缓存和第二级缓存)下,能够减轻此类攻击。
不要求第一处理单元和第二处理单元为分别的处理器核心。例如,在另一实施方式中第一处理单元和第二处理单元可以由多线程处理器核心上的分别的线程提供。每个线程具有其自身的架构状态,因此能够关于多线程处理器核心内的此类分别的线程应用本文描述的技术。
如早先提及的,本文描述的技术能够在如何配置系统方面提供很大程度的灵活性。例如,第一处理单元和第二处理单元中的至少一个可以被约束为仅在单个异常级别下操作。实际上,如早先提及的,通过适当的嵌套技术可能的是,每个分别的处理单元被约束为仅在单个异常级别下操作。
由第一处理单元发出的触发事件能够采取各种形式。例如,它可以显式地把将处理该触发事件的特定处理单元作为目标,因此在此类情况下第二处理单元是触发事件被发出到的目标处理单元。然而,在替代方法中,可以将触发事件发出到某个分发机构,所述分发机构确定哪一个处理单元将处理该触发事件,在此情况下第二处理单元是若干处理单元之中的能够对触发事件做出响应的处理单元。
现在将参考图描述特定示例。
图1是根据一个示例实施方式的系统的框图。提供了具有用于执行程序代码的处理流水线25的第一处理单元10。在由处理流水线执行指令期间,处理流水线将以标准方式访问寄存器组30中的寄存器,以便获得指令的源操作数,并且将通过执行那些指令所产生的结果操作数存储到寄存器组。能够经由加载操作将数据从存储器加载到寄存器中,并且类似地可以经由执行存储指令将数据存储回到存储器。存储器系统可以包括一个或多个级别的缓存,例如图1中示出的缓存35。
如本领域的普通技术人员将很好理解的,在处理单元内执行程序代码期间,可以出现导致异常被捕捉的情形,此类情形在本文中被称为引起异常的事件。此类引起异常的事件能够采取各式各样的不同形式,例如输入/输出(I/O)设备请求、从用户程序调用操作系统服务的请求(常常称为系统调用)、整数算术上溢(overflow)或下溢(underflow)、页面错误等。
还已知处理单元能够在许多不同级别的软件执行特权(在本文中称为不同的异常级别)下执行。当引起异常的事件使异常被捕捉时,这通常将要求执行中断服务例程(在本文中也称为异常处理例程)以便应付异常。常常,尽管不是在所有情况下,可能要求处理单元在执行中断服务例程以便处理异常之前转变到不同的更高特权异常级别。
为了确保系统内的数据的安全性,期望确保在特定异常级别执行的软件不能够访问与在更高异常级别执行的软件相关联的某些数据。存在设法使由系统内的可信的代码使用的数据隔离、使得它不能够被在更低异常级别下运行的不太可信的代码访问的已知机构。然而,攻击者对于它们采用来设法在执行不可信的代码时获得对可信的数据的访问的技术变得日趋复杂。作为特定示例,已经开发了基于推测的缓存定时侧信道攻击(常常称为Spectre),其中能够使用许多技术,使得继而可能滥用缓存定时分析来设法从指令的错误推测执行中泄漏信息。对照此背景,将期望在处理异常时提高系统内的安全性,以确保在更高异常级别下操纵的可信的数据不会被不知不觉地提供给在更低不太可信的异常级别执行的代码。
如将在本文中更详细地讨论的,第一处理单元10被布置为使得:对于可能出现的引起异常的事件的至少一些类型来说,第一处理单元其本身不处理异常(例如通过切换到更高异常级别并在处理流水线25上执行适合的中断服务例程),而是替代地提供一种机制,使得该异常的服务能够由物理上分离的处理单元(在图1中称为第二处理单元20)处理。
特别地,第一处理单元10具有存储器映射的控制接口40,该接口被映射到第二处理单元20的存储器地址空间。特别地,在被映射到第二处理单元的一部分存储器地址空间的存储器映射的控制接口40内提供多个存储元件45,从而通过指定第二处理单元的存储器地址范围内的对应的地址,允许在处理流水线50上执行加载和存储指令以便读取和写入到那些存储元件45。
此外,那些存储元件45被配置以便提供对第一处理单元的某些状态信息的直接映射访问。特别地,如将稍后参考图2更详细地讨论的,那些存储元件中的某些存储元件可以提供对寄存器组30内的寄存器的直接映射访问,从而使得第二处理单元能够在执行中断服务例程以处理由第一处理单元10引发的异常时读取和更新那些寄存器的内容。类似地,可以经由存储元件45给第二处理单元提供第一处理单元的存储器地址空间的某个部分,使得由第二处理单元20针对那些存储元件而执行的加载或存储操作将使数据被从第一处理单元10的存储器地址空间内的存储器位置读取或者写入到第一处理单元10的存储器地址空间内的存储器位置。因此,经由存储元件45,第二处理单元可以能够对寄存器组30执行读取和写入操作,如通过图1中的双向线80所指示的,并且类似地可以能够针对至少第一处理单元的存储器地址空间的子集执行读取和写入操作,如通过与第一处理单元10的缓存35对接的双向线85所指示的。
第二处理单元可以被以与第一处理单元类似的方式布置,并且因此能够使处理流水线50被布置为执行指令,在此期间处理流水线可以访问关联的寄存器组55,并且还可以经由其本地缓存60将数据从存储器中加载到那些寄存器中,或者经由本地缓存60将数据从寄存器中存储回到存储器。
根据本文描述的技术,对于至少某些类型的引起异常的事件,处理流水线25被布置为进入暂停操作模式并发出触发事件,在暂停操作模式中其停止执行程序代码。特别地,处理流水线25能够通过路径65断言(assert)暂停模式信号,从而使得从第一处理单元10输出触发事件70。该触发事件可以被导向特定处理单元,或者可以被发出到中断分发实体,所述中断分发实体应用任何适合的准则来确定要将触发事件导向哪一个处理单元。在当前情况下,假定了触发事件被最终传播到第二处理单元20上。
在接收到触发事件时,第二处理单元中断正在其处理流水线50内执行的处理,并且基于触发事件中提供的信息,确定要执行以处理由第一处理单元10引发的异常的适合的中断服务例程。
当执行中断服务例程时,处理流水线50可以经由路径75执行加载和/或存储操作,所述路径被导向存储器映射的控制接口40内的存储器可寻址存储元件45。如早先讨论的,对存储元件的读取或写入访问触发经由路径80对第一处理单元内的直接映射状态保持结构(例如寄存器组30中的寄存器)的对应访问,或经由路径85对第一处理单元的存储器地址空间内的存储器位置的对应访问。
结果,在中断服务例程的处理期间,第二处理单元20能够访问第一处理单元内的要求的状态,并且能够按照中断服务例程所要求的来修改该状态。
当在第二处理单元的控制下执行此过程时,第一处理单元保持在暂停模式下,因此它不执行处理流水线25内的任何指令。当异常处理例程由第二处理单元完成时,则能够通过路径90发出信号以指示异常处理过程完成,即从异常返回。此时,第一处理单元自由地重新开始执行程序代码,并且相应地,通过路径95向处理流水线25发送暂停模式退出信号以使程序执行重新开始。
应该注意的是,通过这样的机构,处理流水线25不需要从其当前异常级别转变,即从它在出现引起异常的事件之前正在其中操作的异常级别转变。替代地,它仅仅能够在保持在当前异常级别下的同时暂停执行,并且在适当的时候能够再次在保持在当前异常级别下的同时重新开始执行程序代码。
通过使用存储器映射的控制接口40,通过提供用于该物理上分离的处理单元按要求访问并修改第一物理单元的状态信息以使得它能够有效地执行异常处理例程的机构,能够将对异常处理例程的处理卸载到物理上分离的处理单元20。这在系统内提供显著增强的安全性。例如,如果引起异常的事件所具有的类型将通常要求第一处理单元在执行异常处理例程之前进入更高异常级别,则不再要求在第一处理单元内进行该转变。替代地,异常处理例程能够由分别的处理单元执行,所述分别的处理单元它本身可以转变(也可能不转变)到更高异常级别以便执行该异常处理例程,并且在不同的异常级别下操作的软件之间的物理分离在这种情况下显著地增强安全性。
如果需要,还能够给予第二处理单元对第一处理单元内的其他储存器(例如附加存储器映射的控制寄存器110)的存储器映射访问。例如,可以在第一处理单元内提供嵌入式追踪宏单元(ETM)100以生成指示处理流水线25的处理活动的追踪流,其中该ETM的操作通过存储在控制寄存器110内的某些控制信息120来控制。类似地,可以提供性能管理单元(PMU)105来产生指示第一处理单元的操作性能的某些性能度量,并且还可以基于控制寄存器110内的控制信息115来配置该性能管理单元。如果需要,能够给予第二处理单元20对控制寄存器110的存储器映射访问,以允许第二处理单元将操作编程为由ETM 100和PMU 105执行。
在一个实施方式中,能够通过增强在第一处理单元110的调试接口内提供的功能性来提供存储器映射的控制接口40。特别地,当在第一处理单元上执行调试操作时,调试接口可以提供使得能够按照要求并在要求时暂停执行处理流水线的机构。可以补充这样的机构以从外部设备(例如第二处理单元)允许更高性能访问,而不是仅仅提供标准外部调试接口,并且通过提供对第一处理单元的某些状态信息的直接映射访问,从而提供用于在分别的处理单元20上执行的中断服务例程在异常的处理期间访问并更新该状态信息的高效机构。
图2是更详细地图示一个示例实施方式中的可以在存储器映射的控制接口40内提供的存储元件45的图。
如所示的,可以提供一组存储元件150以便给予第二处理单元对第一处理单元的寄存器30的直接映射访问。例如,可以将该组内的每个分别的存储元件直接地映射到寄存器组30中的一个寄存器。当第二处理单元20中的处理流水线50然后执行指定映射到组150内的特定存储元件的存储器地址的加载或存储操作时,能够使用这个以便直接地访问寄存器组内的寄存器。例如,当执行加载操作时,能够将来自相关寄存器30的内容取回到组150内的存储元件中以便提供回给处理流水线50,并且类似地在执行存储操作时,能够将数据写入到组150内的被寻址存储元件中以直接地引起对寄存器组30的对应寄存器做出更新。
如图2中另外所示的,如果需要则能够提供存储元件块155来提供对第一处理单元的存储器地址空间的一部分的直接映射访问。例如,存储元件块155能够与第二处理单元的存储器地址空间内的特定地址范围相关联,以允许由第二处理单元针对那些存储元件块而执行加载和存储操作。进一步地,能够将每个存储元件直接地映射到第一处理单元的存储器地址空间内的相关存储器位置,使得继而针对相关存储器位置而直接地执行针对这样的存储元件而执行的任何访问。
块155中的存储元件被映射到第一处理单元的存储器地址空间内的特定存储器位置的方式可以是可配置的,因此例如可以提供一个或多个映射寄存器160来识别块155中的存储元件与第一处理单元10的存储器地址空间中的对应的存储器位置之间的映射。(一个或多个)映射寄存器可以以各种方式写入,例如通过在第二处理单元20上执行的可信的代码、通过在第一处理单元10上执行的适合的可信的代码或通过在用于建立第一处理单元与第二处理单元之间的关系的另一处理单元上执行的可信的代码。通过这样的方法,能够以由于通过存储器映射的控制接口40提供的直接映射访问而产生的高效方式,在第二处理单元20的处理流水线50上执行中断服务例程期间,访问并更新在第一处理单元10的存储器内保持的状态信息。
虽然经由映射寄存器160配置的存储元件块155提供能够用来给予第二处理单元20对第一处理单元的存储器地址空间的一部分的直接映射访问的一种机构,但是应领会的是,还能根据需要使用其他机构。例如,能将第一处理单元10的存储器地址空间视为与第二处理单元的主地址空间分离的第二处理单元的辅地址空间。然后可以给第二处理单元提供使得它能够对其辅地址空间进行寻址以便在代表第一处理单元来执行中断服务例程的同时访问第一处理单元10的地址空间内的状态信息的机构。存在能被用于此目的的许多机构。例如,可以通过指令集架构来提供一组分别的加载和存储指令,其用于访问辅地址空间而不是主地址空间。可替代地,能在生成存储器地址时将标记位添加到由第二处理单元使用的地址寄存器的非地址部分中,以影响它是在主地址空间还是辅地址空间内生成存储器访问。然而,应领会的是,虽然这样的机构能潜在地使得第一处理单元的整个地址空间能够被复制为第二处理单元的辅地址空间,但是它可能要求实现某些架构变化。因此,在一些实施方式中,参考图2的上述机构可以是优选的。尽管能够由第二处理单元在任何时间点(即,在不改变映射寄存器165中的映射的情况下)访问的第一处理单元内的地址空间的量由存储元件块155的大小规定,但是它确实提供能够在不要求对系统进行任何架构变化的情况下实现的机构。
如图2中另外所示的,可以提供一个或多个异常事件识别寄存器165,其能够被编程为识别哪些类型的引起异常的事件将使第一处理单元进入暂停模式并发出触发事件,而不是它本身设法应付异常(例如通过触发异常级别的变化并在处理流水线25内执行中断服务例程)。关于何时使用暂停模式,这提供很大的可配置性。例如,在天平的一端,任何引起异常的事件可以使处理流水线进入暂停模式,使得所有异常都由第二处理单元远程地处理。然而,视需要,可以允许由第一处理单元处理一种或多种不同形式的引起异常的事件,而不触发暂停模式并将异常处理卸载到第二处理单元。
在一种示例布置中,可以对异常事件识别寄存器165进行编程以便识别无论何时在第一处理单元内发生引起异常的事件(要是引起异常的事件将由第一处理单元处理就将要求第一处理单元转变到指定的异常级别),那么该引起异常的事件的发生将导致进入暂停模式,并发出触发事件70以使诸如第二处理单元20的物理上分离的处理单元处理异常。作为具体示例,可以允许第一处理单元在保持在异常级别0中的同时处理能够被处理的引起异常的事件,但是对于将要求转变到异常级别1或更高级别的任何引起异常的事件,则这可以使处理流水线25进入暂停模式,并且将异常的处理卸载到物理上分离的处理单元。作为另一示例,可以允许第一处理单元处理能够在异常级别0或异常级别1下处理的异常,但是对于将要求转变到异常级别2或更高级别的任何其他引起异常的事件将进入暂停模式。
异常事件识别寄存器165能够被以各种方式编程,例如通过在第二处理单元20上执行的可信的代码、通过在第一处理单元10上执行的可信的代码或通过用于设置第一处理单元与第二处理单元之间的关系的另一处理单元上执行的可信的代码。
在一个实施方式中,触发事件70它本身可以提供将使得第二处理单元能够确定第一处理单元进入暂停模式的原因的某种信息。然而,在替代实施方式中,可以出于此目的在存储元件45内提供一个或多个校验子寄存器170。特别地,第一处理单元然后能够在进入暂停模式之前写入到那些校验子寄存器,使得当第二处理单元对触发事件做出响应并因此执行中断服务例程时,它然后能够访问校验子寄存器以便获得该信息。
图3是图示当处理在第一处理单元10内检测到的引起异常的事件时图1的系统的操作的流程图。在步骤200处,确定了第一处理单元是否已检测到需要捕捉异常。当检测到这个时,然后在步骤205处,确定了引起异常的事件是否要求第一处理单元进入暂停模式。如早先讨论的,这可能取决于异常事件识别寄存器165的配置。如果引起异常的事件不要求第一处理单元进入暂停模式,则过程进行到步骤210,其中第一处理单元以标准方式处理异常。如早先讨论的,这可以涉及第一处理单元改变到更高异常级别。
如果确定了引起异常的事件要求第一处理单元进入暂停模式,则在步骤215处,第一处理单元保持在其当前异常级别下,进入暂停模式,并且断言触发事件。
触发事件可以针对将处理异常的特定处理单元,或者替代地可以经由中断再分发器机构来路由,所述中断再分发器机构确定要将触发事件导向哪一个处理单元。无论使用哪种机构,触发事件最终都由适合的第二处理单元接收,并且在步骤220处,对触发事件做出响应的第二处理单元捕捉中断以暂停当前正在由该第二处理单元执行的处理,然后执行适合的异常处理例程以便处理异常。能够以标准方式做出异常处理例程的确定,诸如通过参考已被引发的异常的类型。进一步地,诸如作为触发事件的一部分而发出的中断号的信息将使得第二处理单元能够确定已发出触发事件的第一处理单元,因此确定它在执行异常处理例程时将与哪一个存储器映射的控制接口40进行通信。
如步骤220处所指示的,在执行异常处理例程的过程中,第二处理单元20将经由第一处理单元10的存储器映射的控制接口40的存储元件45来访问并更新第一处理单元10的状态信息。这可以涉及例如访问并更新寄存器组30内的一个或多个寄存器的内容,以及访问并更新第一处理单元的存储器地址空间内的一个或多个存储器位置。
第二处理单元此后将在步骤225处通过路径90向第一处理单元用信号通知从异常返回,从而使第一处理单元退出暂停模式并重新开始执行程序代码。
图4A和图4B图示当采用上述方法时对数据给予的增强保护。特别地,图4A图示将在没有本技术的情况下采用的方法,即其中第一处理单元处理它自己的异常,例如通过转变到更高异常级别,然后在该更高异常级别执行所要求的异常处理例程。最初,假定了应用代码正在应用异常级别下在第一处理单元(在图4A中称为CPU 0)上运行,然后在点250处,将陷阱捕获到异常处理例程。在此示例中,假定了当到达点250时,处理单元转变到更高异常级别,例如与操作系统软件相关联的异常级别,然后在操作系统控制下执行异常处理例程。
在陷阱点250之前执行的应用代码和用于实现异常处理例程的操作系统代码都访问CPU 0内的本地缓存230。在执行异常处理例程期间,然后可以通过操作系统软件从缓存230中读取不同类型的数据,并且通过操作系统软件将不同类型的数据写入到缓存230。这可以包括操作系统自己的数据255、265,其能够被认为是操作系统私有的数据,并且不与应用代码共享,但是还可以包括用户数据260,例如针对应用异常级别的更新状态信息,此数据是一旦异常处理例程完成就提供给应用代码的类型的数据,并且处理流水线已返回到应用异常级别以便重新开始执行应用代码。
在步骤270处,假定了异常处理例程完成,因此处理器从异常返回,从而导致转变回到应用异常级别(例如异常级别(EL)0),此后CPU0重新开始应用代码的处理,并访问缓存230。虽然能够采用各种机构来设法保护操作系统自己的数据255、265免于在从异常处理例程返回之后被应用代码访问,例如通过从缓存中清除该数据或通过使用某种其他机构来保护它,但是近来对这种数据的安全性和用于访问该数据的侧信道攻击的前景越来越担忧。
图4B图示当使用本文中描述的技术时如何能够改进这种数据的安全性。特别地,再次假定了CPU 0正在应用异常级别(例如EL0)下执行应用代码,然后在点275处发生引起异常的事件,从而导致异常处理例程的陷阱。根据早先描述的技术,这时CPU 0进入暂停模式,并停止执行指令。触发事件的发出使中断被第二处理单元(在图4B中称为CPU 1)捕捉。在点280处,CPU 1然后开始执行所要求的异常处理例程,并且再次这可以涉及在操作系统异常级别(例如EL1)下执行代码。然而,当所要求的异常例程正在由CPU 1运行时,那么能够从CPU 1的本地缓存240读取操作系统的私有数据(“自己的数据”)282、286并将它们写入到CPU 1的本地缓存240。相反地,使用早先讨论的机构即经由存储器映射的控制接口235内的存储元件提供的对CPU 0的存储器地址空间的直接映射访问来通过CPU 0的控制接口235将要与应用代码共享的用户数据284写入到CPU 0的本地缓存230中。
当在适当的时候异常处理例程完成并且相应地过程在步骤290处从异常返回时,那么这将使CPU 0重新开始执行应用代码。然而,由于CPU 0与CPU 1之间的物理分离,存在显著地增强的安全性,因为操作系统敏感的数据均尚未被写入到CPU 0的缓存230中。
此外,安全性通常被增强,因为当采用图4B的机构时,CPU 0从不从应用异常级别(例如异常级别0)转变,并且因此没有与更高异常级别相关联的访问特权(与将为使CPU 0它本身转变到更高异常级别以便处理异常的情况的情形相反)。
当采用参考图4B描述的技术时还可以实现一些性能益处。例如,由于在异常的处理期间,与异常级别0不相关的数据未被存储在CPU 0的缓存230中,所以然后当异常处理例程已完成时,不需要任何步骤来维护异常级别1数据的安全性。例如,当异常处理例程在点290处完成时,不需要从CPU 0的缓存230中清除任何数据。
应该注意的是,能够扩展本文描述的技术以便允许第二处理单元在第一处理单元的操作中承担更多的控制作用。例如,第二处理单元20可以被认为采取控制核心的形式,所述控制核心能够暂停第一处理单元(其例如可能被认为是应用核心)并且可以在任何时间切换上下文,例如以多个用户进程之间时间共享应用核心。因此,除了控制核心向应用核心提供系统服务之外,通过处理针对一种或多种类型的引起异常的事件的异常,这样的方法使得应用核心能够同样有效地向控制核心提供计算服务。单个控制核心能在这样的场景中管理多个应用核心。
能够采用上述技术的处理单元能够采取各种形式。例如,如图5A中所示,每个处理单元可以是分别的处理器核心。因此,能够提供多个第一处理单元300、310,每个第一处理单元具有相关控制接口305、315,其被存储器映射到第二处理单元(在图5A中称为控制核心320)的存储器地址空间中。
当引起异常的事件发生在核心300、310中的任一个中并且具有使该核心进入暂停模式并发出触发事件的类型时,能够将该触发事件路由到控制核心320。基于异常号,控制核心能够确定哪一个核心发出了触发事件,然后能够考虑到已出现的异常的类型来执行适合的异常处理例程,以便处理异常。使用早先描述的技术,控制核心能够经由相关控制接口305、315来访问并更新发出了触发事件的核心300、310的所要求的状态。
然而,处理单元不必是如图5A中所示的分别的处理器核心。替代地,分别的处理单元可以是多线程核心内的分别的线程,诸如图5B中所示的。因此,多线程核心330可以包括多个线程335、345,每个线程可以具有相关控制接口340、350。虽然不同的线程可以共享多线程核心330的一些处理资源,但是这些线程有效地形成分别的处理元件,并且可以具有它们自己的寄存器、地址空间,在它们自己的特定异常级别中操作等。因此,分别的线程能够以与早先讨论的第一处理单元相同的方式操作,并且可以向第二处理单元发出触发事件以使第二处理单元代表它们处理异常。因此,控制核心360能够以与早先参考图5A的示例所讨论的确切相同的方式处理异常,其中异常号信息用于识别已发出触发事件的多线程核心内的特定线程。
虽然在图5B中将控制核心360示出为分别的处理器核心,但是应该注意的是,在其他实施方式中控制核心360它本身可以是多线程核心330内的线程中的一个。
图6图示本文描述的技术如何能够用于支持异常的嵌套处理。因此,在此示例中第一处理单元采取具有相关控制接口375的应用核心370的形式,所述控制接口375被映射到第二处理单元(在此示例性为控制核心1 380)的存储器地址空间中。然而,同样可能的是在由控制核心1380执行的处理期间,将在控制核心1内检测到引起异常的事件,从而要求捕捉异常,并且执行适合的异常处理例程。虽然在此类情况下能在控制核心1 380它本身内实现异常处理例程,例如通过转变到更高异常级别并执行适合的异常处理例程,但是在替代示例中控制核心1 380还可以具有被存储器映射到控制核心2 390的存储器地址空间中的控制接口385。通过这样的方法,控制核心1能够针对某些引起异常的事件进入暂停模式,并发出触发事件以使控制核心2 390执行适合的异常处理例程,并且在该过程期间,控制核心2390可以经由控制接口385访问并更新控制核心1 380内的所要求的状态。
应领会的是,能够任意地扩展图6中图示的方案以视需要提供更多的嵌套级别。这样的机构提供明显的灵活性。例如,应领会的是,在一个实例中每个分别的核心可以被布置为仅在单个异常级别下操作,同时所有引起异常的事件都被路由到分别的核心以进行处理。在一些情况下,这可能意味着能完全废除异常级别的概念。
与早先讨论的图5B一样,虽然在图6中假定了元件370、380、390是分别的处理器核心,但是在替代实施方式中,能通过多线程核心内的分别的线程来提供那些元件。
图7图示在系统内提供中断分发器420的实施方式。在此示例中,存在多个控制核心410、415,其中的每一个均能够被提供有对一个或多个应用核心400、440的存储器映射访问。应用核心具有如早先讨论的那样布置的相关控制接口405、445以通过代表应用核心执行中断服务例程的控制核心来提供对那些应用核心内的某些状态信息的直接映射访问。
在这样的实施方式中,当应用核心400发出触发事件时,这能够采取传递给中断分发器420的中断请求的形式。因此,当应用核心400断言触发事件时,它能够通过路径425向中断分发器420发出中断请求。中断分发器然后将采用确定要将中断请求路由到哪一个控制核心的机构,并且将通过路径430将中断请求发送到控制核心1410或者通过路径435将中断请求发送到中控制核心2 415。应领会的是,在图7中为了简单已示出仅两个控制核心,但是在其他实施方式中,可以提供更多的控制核心,并且因此关于中断请求被传播到的目的地控制核心,对于中断分发器420来说可以有更多的选项。
假定中断请求由它被导向的控制核心接受,然后处理基本上如早先讨论的那样继续进行,其中该控制核心执行适合的异常处理例程,在此过程期间能够对存储器映射的控制接口405内的存储元件执行加载和/或存储操作以便访问并更新应用核心400内的状态信息。一旦异常处理例程已完成,就向应用核心400通知从异常返回,然后退出暂停模式以便重新开始执行应用代码。
虽然在图7中已经参考了应用核心和控制核心,但是从早先讨论的图6中应领会的是,发出中断请求的核心不必是应用核心,并且它本身可以在比应用代码更高的异常级别执行软件。
从早先讨论中还应领会的是,图7中图示的各种核不必是物理上分离的处理器核心,而是替代地可能是在多线程核心上执行的分别的线程。
虽然在一个实施方式中,由应用核心和控制核心访问的缓存结构可以是分离的,但在一些情况下可以共享一个或多个缓存级别,如在图8中作为示例所图示的。在此示例中,应用核心470具有本地第1级缓存475,而控制核心480也具有相关第1级缓存485。然而,视需要,应用核心470和控制核心480可以共享第2级缓存490。虽然在一些实施方式中,为了提供针对缓存定时侧信道攻击(诸如早先提及的基于Spectre的攻击)的增强鲁棒性,共享第2级缓存结构可能被认为是不适当的,并且在此类情况下应用核心和控制核心可以具有不同的第2级缓存结构以及不同的第1级缓存结构,但是在其他实施方式中,图8中图示的方法可以是完全可接受的。特别地,利用这样的方法将仍然有可能获得允许由分别的核心使用上面讨论的暂停模式来处理异常的许多益处,例如异常级别的物理分离以及针对某些核心进行布置以仅支持可能的异常级别的子集的可能性,在一些情况下能够仅在单个异常级别下操作。通过允许共享至少一些缓存结构,这增加目前描述的技术的适用性的领域,例如使得关于多线程核心内的各个线程更容易地应用它。
当采用本文描述的技术时,能够实现许多益处,同时通过异常级别的物理分离来改进整体安全性。首先,注意的是,在应用核心上运行的应用软件不需要改变。进一步地,控制核心不必在更高异常级别下运行,并且甚至能在异常级别0下运行,只要它被以早先讨论的方式给予对应用核心的内存映射访问即可。如早先另外讨论的,控制核心的异常本身能被另一核心捕获和处理,从而允许异常处理的任意嵌套。
进一步地,假定应用核心能够依靠将其异常委派给控制核心,该应用核心可能仅实现异常级别的子集,例如仅EL0(从而实现纯数据平面核心),这能够导致设计的显著简化。
在一个特定实施方式中,所有应用核心和控制核心都能被布置为使得它们仅需要实现单个异常级别,这能潜在地允许完全废弃异常级别。
如早先提及的,在一个示例实施方式中,能够通过增强现有调试接口的能力来形成在第一处理单元10内提供的存储器映射的控制接口40,以允许由控制核心进行快速存储器映射访问,并且以提供对相关寄存器状态和/或存储器地址空间的直接映射访问。应该注意的是,经改进的存储器映射接口还将以改进的效率支持现有调试用例,从而允许外部调试器更快地访问核心的寄存器及其存储器视图,从而能够提供除与异常处理相关联的益处外的附加好处。
如早先提及的,虽然在一个实施方式中能够使用物理上分离的处理器核心,但是在替代实施方式中,各个处理单元能够采取多线程核心内的各个线程的形式。因此,在第一线程内发生的引起异常的事件能够导致该线程进入暂停模式,并且异常被卸载到另一线程以进行处理,同时该另一线程能够存储器映射访问第一线程的状态。能在一个这样的示例实施方式中采用上述嵌套方法,其中每个线程与特定异常级别相对应,从而使得需要在特定异常级别下处理的异常能够被导向能够在该异常级别下操作的特定线程。
如早先提及的,在一些实施方式中存储器映射的控制接口40内的存储元件能够被配置为关于引起异常的事件的类型允许很大程度的可配置性,所述引起异常的事件将导致第一处理单元进入暂停模式,并发出触发事件以使异常处理例程由不同的处理单元执行。在一些情况下,第一处理单元可以被布置为使得它总是以那种方式对异常做出响应,而不管引起异常的事件如何。在那种情况下,参考早先讨论的图3,将看到步骤205被有效地去除,因此将从不会有转向第一处理单元处理异常的步骤210的路径。替代地,过程将直接地进行到步骤215,其中处理单元将保持在其当前异常级别下,进入暂停模式并断言触发事件。这能够导致第一处理单元的复杂性的显著简化。
在本申请中,词语“被配置为……”用于意味着装置的元件具有能够执行所定义的操作的配置。在这种上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,装置可以具有提供所定义的操作的专用硬件,或者可以将处理器或其他处理设备编程为执行功能。“被配置为”不暗示需要以任何方式改变装置元件以便提供所定义的操作。
尽管已经在本文中参考附图详细地描述了本发明的说明性示例,然而应当理解的是,本发明不限于那些精确的实施例,并且在不脱离如所附权利要求所限定的本发明的范围和精神的情况下,本领域的技术人员能够在其中实现各种变化、添加和修改。例如,在不脱离本发明的范围的情况下,能用从属权利要求的特征做出独立权利要求的特征的各种组合。

Claims (23)

1.一种系统,所述系统包括:
第一处理单元,所述第一处理单元用于执行程序代码;和
第二处理单元;
所述第一处理单元具有控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;
所述第一处理单元响应于至少一个引起异常的事件而进入暂停模式并发出触发事件,在所述暂停模式中所述第一处理单元停止执行所述程序代码;
所述第二处理单元响应于所述触发事件而执行异常处理例程,在所述异常处理例程期间,所述第二处理单元被布置为经由所述控制接口访问所述第一处理单元的所述状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;
所述第二处理单元被布置为在完成所述异常处理例程时使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
2.根据权利要求1所述的系统,其中,所述第一处理单元的所述状态信息包括所述第一处理单元的寄存器组的内容,所述第一处理单元的所述寄存器组用于存储由所述第一处理单元在执行所述程序代码时处理的数据。
3.根据权利要求2所述的系统,其中,所述控制接口提供存储元件组,所述存储元件组被映射到所述第二处理单元的所述存储器地址空间以提供通过所述第二处理单元对所述寄存器组的直接映射访问。
4.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元的所述状态信息包括存储在所述第一处理单元的存储器地址空间的至少一部分中的数据。
5.根据权利要求4所述的系统,其中,所述第一处理单元的所述存储器地址空间的所述至少一部分形成所述第二处理单元的辅地址空间。
6.根据权利要求4所述的系统,其中,所述控制接口提供存储元件块,所述存储元件块被映射到所述第二处理单元的所述存储器地址空间,所述块中的每个存储元件被直接地映射到所述第一处理单元的所述存储器地址空间的所述至少一部分内的对应的存储器位置。
7.根据权利要求6所述的系统,其中,所述控制接口包括可配置的映射储存器以识别所述存储元件块中的所述存储元件与所述第一处理单元的所述存储器地址空间的所述至少一部分内的所述对应的存储器位置之间的直接映射。
8.根据前述权利要求中任一项所述的系统,其中,所述控制接口包括可配置的异常事件识别储存器,所述异常事件识别储存器用于识别:当在由所述第一处理单元执行所述程序代码期间遇到引起异常的事件时,哪些引起异常的事件将使所述第一处理单元进入所述暂停模式并发出所述触发事件。
9.根据前述权利要求中任一项所述的系统,其中,所述异常事件识别储存器被配置为识别:每当发生下述引起异常的事件时,所述第一处理单元将进入所述暂停模式并发出所述触发事件:所述引起异常的事件如果由所述第一处理单元处理则会要求所述第一处理单元转变到指定的异常级别。
10.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元被布置为当进入所述暂停模式时保持在其当前异常级别,所述第二处理单元被布置为在选取的异常级别执行所述异常处理例程。
11.根据权利要求10所述的系统,其中,所述选取的异常级别是比所述第一处理单元的当前异常级别更高的异常级别。
12.根据前述权利要求中任一项所述的系统,其中,所述控制接口包括校验子储存器,所述校验子储存器被映射到所述第二处理单元的所述存储器地址空间并由所述第一处理单元写入以提供由所述第二处理单元使用来帮助识别所述第一处理单元为何进入所述暂停模式的信息。
13.根据前述权利要求中任一项所述的系统,进一步包括:
第三处理单元,所述第三处理单元具有另外的控制接口,所述另外的控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第三处理单元的状态信息的直接映射访问;
所述第三处理单元响应于至少一个引起异常的事件而进入所述暂停模式并发出所述触发事件,在所述暂停模式中所述第三处理单元停止执行;
所述触发事件包括下述信息:该信息使得所述第二处理单元能够确定所述触发事件是由所述第一处理单元还是所述第三处理单元发出的,从而确定要在执行所述异常处理例程时访问所述第一处理单元和所述第三处理单元中的哪一个。
14.根据前述权利要求中任一项所述的系统,进一步包括:
附加处理单元;
所述第二处理单元具有第二控制接口,所述第二控制接口被映射到所述附加处理单元的存储器地址空间并且被配置为给所述附加处理单元提供对所述第二处理单元的状态信息的直接映射访问;
所述第二处理单元响应于至少一个引起异常的事件而进入所述暂停模式并发出另外的触发事件,在所述暂停模式中所述第二处理单元停止执行正在所述第二处理单元上运行的程序代码;
所述附加处理单元响应于所述另外的触发事件而执行另外的异常处理例程,在所述另外的异常处理例程期间,所述附加处理单元被布置为经由所述第二控制接口访问所述第二处理单元的所述状态信息,以便按照所述另外的异常处理例程所要求的来修改所述状态信息;
所述附加处理单元被布置为在完成所述另外的异常处理例程时使所述第二处理单元退出所述暂停模式并重新开始执行正在所述第二处理单元上运行的所述程序代码。
15.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元是应用处理单元并且所述程序代码是应用程序代码,所述第二处理单元是控制处理单元。
16.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元和所述第二处理单元由分别的处理器核心提供。
17.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元和所述第二处理单元具有分别的缓存结构,这些缓存结构用于所述系统内的所述缓存级别的至少子集。
18.根据前述权利要求中任一项所述的系统,其中,所述第一处理单元和所述第二处理单元由多线程处理器核心上分别的线程提供。
19.根据前述权利要求中任一项所述的装置,其中,所述第一处理单元和所述第二处理单元中的至少一者被约束为仅在单个异常级别操作。
20.根据前述权利要求中任一项所述的装置,其中,所述第二处理单元是以下各项中的一者:
目标处理单元,所述触发事件被发出到所述目标处理单元;
若干处理单元之中能够对所述触发事件做出响应的处理单元。
21.一种第一处理单元,所述第一处理单元包括:
执行电路,所述执行电路用于执行程序代码;以及
控制接口,所述控制接口被映射到第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;
所述第一处理单元响应于至少一个引起异常的事件而进入暂停模式并发出触发事件,在暂停模式中所述执行电路停止执行所述程序代码;
所述控制接口被布置为在所述第二处理单元响应于所述触发事件而在执行异常处理例程的同时能够由所述第二处理单元访问,以使得所述第二处理单元能够按照所述异常处理例程所要求的来访问并修改所述第一处理单元的所述状态信息;
所述第一处理单元被布置为:在所述第二处理单元已完成所述异常处理例程时,退出所述暂停模式并重新开始执行所述程序代码。
22.一种第二处理单元,所述第二处理单元包括:
执行电路,所述执行电路用于响应于由第一处理单元发出的触发事件而执行异常处理例程,所述触发事件指示所述第一处理单元已进入暂停模式,在所述暂停模式中由所述第一处理单元对程序代码的执行已被暂停;以及
通信接口,所述第二处理电路被布置为在执行所述异常处理例程的同时经由所述通信接口访问所述第一处理单元的控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;
所述第二处理单元被布置为经由所述控制接口访问所述第一处理单元的所述状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;并且
所述第二处理单元被布置为在完成所述异常处理例程时使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
23.一种在系统中处理引起异常的事件的方法,所述系统具有第二处理单元和用于执行程序代码的第一处理单元,所述方法包括:
给所述第一处理单元提供控制接口,所述控制接口被映射到所述第二处理单元的存储器地址空间并且被配置为给所述第二处理单元提供对所述第一处理单元的状态信息的直接映射访问;
响应于所述第一处理单元内的至少一个引起异常的事件,使所述第一处理单元进入暂停模式并发出触发事件,在所述暂停模式中所述第一处理单元停止执行所述程序代码;
使所述第二处理单元响应于所述触发事件而执行异常处理例程,在所述异常处理例程期间,所述第二处理单元经由所述控制接口访问所述第一处理单元的状态信息,以便按照所述异常处理例程所要求的来修改所述状态信息;以及
在由所述第二处理单元完成所述异常处理例程时,使所述第一处理单元退出所述暂停模式并重新开始执行所述程序代码。
CN201980055089.2A 2018-12-06 2019-10-16 用于处理引起异常的事件的装置和方法 Pending CN112585584A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1819930.7A GB2579617B (en) 2018-12-06 2018-12-06 An apparatus and method for handling exception causing events
GB1819930.7 2018-12-06
PCT/GB2019/052943 WO2020115455A1 (en) 2018-12-06 2019-10-16 A system and method for handling exception causing events

Publications (1)

Publication Number Publication Date
CN112585584A true CN112585584A (zh) 2021-03-30

Family

ID=65029902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980055089.2A Pending CN112585584A (zh) 2018-12-06 2019-10-16 用于处理引起异常的事件的装置和方法

Country Status (6)

Country Link
US (1) US11630673B2 (zh)
JP (1) JP2022509722A (zh)
KR (1) KR20210096062A (zh)
CN (1) CN112585584A (zh)
GB (1) GB2579617B (zh)
WO (1) WO2020115455A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US20070168646A1 (en) * 2006-01-17 2007-07-19 Jean-Francois Collard Data exchange between cooperating processors
CN102804134A (zh) * 2010-03-15 2012-11-28 Arm有限公司 处理异常事件的装置和方法
US20130007751A1 (en) * 2011-07-01 2013-01-03 Farrell Robert L Method and system for safe enqueuing of events
US20170315816A1 (en) * 2016-04-28 2017-11-02 Imagination Technologies Limited Method for Handling Exceptions in Exception-Driven System
US20180293122A1 (en) * 2017-04-10 2018-10-11 Arm Limited Apparatus and method for handling memory access operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463778A (en) * 1989-11-16 1995-10-31 Texas Instruments Incorporated User controlled trap handler
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US6341324B1 (en) * 1995-10-06 2002-01-22 Lsi Logic Corporation Exception processing in superscalar microprocessor
WO2000070482A1 (en) * 1999-05-14 2000-11-23 Clearwater Networks, Inc. Interrupt and exception handling for multi-streaming digital processors
US6480948B1 (en) * 1999-06-24 2002-11-12 Cirrus Logic, Inc. Configurable system memory map
US6591378B1 (en) * 2000-02-22 2003-07-08 Motorola, Inc. Debug controller in a data processor and method therefor
US7546441B1 (en) * 2004-08-06 2009-06-09 Xilinx, Inc. Coprocessor interface controller
JP4148223B2 (ja) * 2005-01-28 2008-09-10 セイコーエプソン株式会社 プロセッサおよび情報処理方法
US7730263B2 (en) * 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
JP2010015364A (ja) * 2008-07-03 2010-01-21 Renesas Technology Corp マルチプロセッサシステム及び情報処理装置
JP5852677B2 (ja) * 2011-12-26 2016-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation レジスタ・マッピング方法
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US10394730B2 (en) * 2014-11-14 2019-08-27 Cavium, Llc Distributed interrupt scheme in a multi-processor system
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
US10527673B2 (en) * 2016-08-01 2020-01-07 Microsoft Technology Licensing, Llc Hardware debug host
US9971702B1 (en) * 2016-10-24 2018-05-15 Intel Corporation Nested exception handling

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003129A (en) * 1996-08-19 1999-12-14 Samsung Electronics Company, Ltd. System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture
US20070168646A1 (en) * 2006-01-17 2007-07-19 Jean-Francois Collard Data exchange between cooperating processors
CN102804134A (zh) * 2010-03-15 2012-11-28 Arm有限公司 处理异常事件的装置和方法
US20130007751A1 (en) * 2011-07-01 2013-01-03 Farrell Robert L Method and system for safe enqueuing of events
US20170315816A1 (en) * 2016-04-28 2017-11-02 Imagination Technologies Limited Method for Handling Exceptions in Exception-Driven System
US20180293122A1 (en) * 2017-04-10 2018-10-11 Arm Limited Apparatus and method for handling memory access operations

Also Published As

Publication number Publication date
GB2579617A (en) 2020-07-01
US20210240480A1 (en) 2021-08-05
US11630673B2 (en) 2023-04-18
GB201819930D0 (en) 2019-01-23
JP2022509722A (ja) 2022-01-24
WO2020115455A1 (en) 2020-06-11
GB2579617B (en) 2021-01-27
KR20210096062A (ko) 2021-08-04

Similar Documents

Publication Publication Date Title
CN108463826B (zh) 用于在环转变期间保护栈的处理器扩展
US9122465B2 (en) Programmable microcode unit for mapping plural instances of an instruction in plural concurrently executed instruction streams to plural microcode sequences in plural memory partitions
KR102599484B1 (ko) 진보된 오퍼레이팅 시스템 지원을 갖는 프로세서
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US8713294B2 (en) Heap/stack guard pages using a wakeup unit
US7305534B2 (en) Control of access to a memory by a device
EP1563376B1 (en) Exception types within a secure processing system
US8108908B2 (en) Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor
US8726292B2 (en) System and method for communication in a multithread processor
US20050114616A1 (en) Access control in a data processing apparatus
US7529916B2 (en) Data processing apparatus and method for controlling access to registers
JP2013250980A (ja) プロセッサ資源および実行保護の方法および装置
KR20160014647A (ko) 인터럽트 핸들링 방법 및 장치
TWI811456B (zh) 用於驗證堆疊指標的設備、方法、電腦程式及電腦可讀取儲存媒體
US20200004587A1 (en) Multithreaded processor core with hardware-assisted task scheduling
US9566158B2 (en) Hardware protection of virtual machine monitor runtime integrity watcher
US8214574B2 (en) Event handling for architectural events at high privilege levels
US10901936B2 (en) Staged power on/off sequence at the I/O phy level in an interchip interface
US11630673B2 (en) System and method for physically separating, across different processing units, software for handling exception causing events from executing program code
GB2395313A (en) Thread switching between multiple operating systems running on the same processor
JPH1049373A (ja) パイプライン・デジタル・プロセッサにおいて多重で高精度の事象を操作する方法と装置
Yiu The Next Steps in the Evoluation of Embedded Processors for the Smart Connected Era,”
US11782713B1 (en) Security vulnerability mitigation using address space co-execution
US11977896B2 (en) Issuing a sequence of instructions including a condition-dependent instruction
US20230236906A1 (en) Information processing device, information processing method, and program

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