CN1476559A - 用于保存返回状态的数据处理设备和方法 - Google Patents

用于保存返回状态的数据处理设备和方法 Download PDF

Info

Publication number
CN1476559A
CN1476559A CNA018194648A CN01819464A CN1476559A CN 1476559 A CN1476559 A CN 1476559A CN A018194648 A CNA018194648 A CN A018194648A CN 01819464 A CN01819464 A CN 01819464A CN 1476559 A CN1476559 A CN 1476559A
Authority
CN
China
Prior art keywords
storehouse
return state
data processing
processing unit
state data
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.)
Granted
Application number
CNA018194648A
Other languages
English (en)
Other versions
CN1227589C (zh
Inventor
E��C������
E·C·内维尔
ά
I·V·德维罗伊克斯
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
Advanced Risc Machines 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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1476559A publication Critical patent/CN1476559A/zh
Application granted granted Critical
Publication of CN1227589C publication Critical patent/CN1227589C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers

Abstract

本发明提供一种用于保存返回状态的数据处理设备和方法。该数据处理设备包括一个处理单元用于执行数据处理指令,该处理单元具有多个操作模式,每个操作模式具有相应的堆栈用于储存与那个模式相关的数据。该处理单元响应于一个返回状态数据处理指令,以便将该处理单元的返回状态从其目前操作模式写到相应于与目前操作模式不同的操作模式的一个堆栈。该方法比已知的现有技术显著地减小了代码尺寸并改进了中断等待时间。

Description

用于保存返回状态的数据处理设备和方法
发明领域
本发明涉及一种用于保存返回状态(return state)的数据处理设备和方法,特别涉及在包括具有多个操作模式的一个处理单元的数据处理设备中保存该返回状态,每个操作模式具有储存与那个模式相关的数据的相应的堆栈。
现有技术说明
在这样的一个数据处理设备中,人们知道提供配置来保存返回状态数据于与目前操作模式相关的堆栈上的指令。使用这样指令的场合的一个典型例子是依据一个异常模式的出现,其中返回状态数据事件保存在与异常操作模式相关的堆栈上。因多种理由可要求该过程。例如,这样的一种数据处理设备可以一般地支持多个任务,而且当进行上下文转换以能执行另外任务时,与目前任务的操作模式相关的一个堆栈或多个堆栈需要交换以便能执行新的任务。对于使用堆栈指针访问该堆栈的场合的系统,这种交换通常通过交换不同堆栈的一个堆栈指针或多个堆栈指针来执行。在这样的一种数据处理设备中一般要求该返回状态数据保存在当该上下文转换(context switch)发生时将进行交换的一个堆栈上。
为方便上下文转换,要求所有非-空堆栈在该上下文转换时间被进行交换。对于具有多个堆栈的处理器,这可要求交换属于一特定任务的每一个堆栈。另外,如果使用该方法,每个操作模式一个单独的堆栈保持用于每个任务,而且将导致增加存储器消耗量和增加用于交换属于每个任务的每个堆栈所花费的时间。例如,由ARM有限公司生产的流行的处理器具有相应于六个操作模式的六个单独的堆栈,即系统/用户,FIQ(快速中断请求),管理程序,故障,IRQ(中断请求)和Undefined(未定义的),这里FIQ和IRQ是两个操作中断模式。因此,使用以上方法,一个上下文转换可要求交换六个单独的堆栈,和每个任务可不得不保持用于六个单独堆栈的存储器。这样的一种方法的一个例子将在以后参照图2A和2B讨论。图2A和2B表示具有五个堆栈而不是六个堆栈的一个系统,这是因为它们说明一个典型系统的例子,在此假定该FIQ模式保存用于将不导致上下文转换的一个单独的高优先级中断。
一个更通用的另一方法是共享在该任务之中的不同的异常堆栈,接着将在一个异常堆栈上的任一数据转移到用户堆栈或者将在入口上的每单个处理特许模式堆栈转移到异常堆栈。采用由ARM有限公司目前生产的处理器的早先例子,这可能相当于将数据从FIQ,故障,IRQ或Undefined堆栈转移到用户或管理程序堆栈。该方法保证所有异常堆栈(在ARM处理器例子中的FIQ,故障,IRQ和Undefined)在所有可要求上下文转换的位置保持空。
保存在入口上到一个异常堆栈的数据一般是这样的数据,即该数据被要求用于从异常出现的位置连续执行任务。该数据被称为“返回状态数据”。
上述第二方法要求在入口上到一个异常情况,该返回状态保存在与异常操作模式相关的堆栈上,进入处理器用户或特许模式,和接着该返回状态数据从与操作的异常模式相关的堆栈回读并保存在与该用户或特许的模式相关的堆栈上。在已进入用户或特许的模式后该返回状态并不简单地按该用户或特许的模式保存,因为该返回状态并不按那个模式可存取。该过程将在以下结合图3A和3B例子更详细地加以讨论。
该保存该返回状态数据于属于该异常模式操作的堆栈上,改变模式,从属于该异常模式操作的堆栈再生该返回状态数据,和保存该返回状态数据于该用户或特许的模式的堆栈上的处理要求不利地影响数据处理设备的代码尺寸和性能的大量的指令。
此外,应指出当禁止中断时要求在中断处理的关键位置进行该处理,因此导致明显的中断等待时间。应指出在另一中断到达和在返回状态数据保存之前将其重写的情况下直到该返回状态数据被保存在用户或特许的模式的堆栈上中断才能重新允许。
因此,希望提供更有效的技术用于在出现异常情况时保存该返回状态数据。
发明概述
从第一方面观察,本发明提供的一个数据处理设备包括:一个处理单元用于执行数据处理指令,该处理单元具有多个操作模式,每个操作模式具有用于储存与那个模式相关的数据的一个相应堆栈;该处理单元响应于一个返回状态数据处理指令以写该处理单元的返回状态数据从其目前操作模式到相应于不同于目前操作模式的操作模式的一个堆栈。
按本发明,提供一个返回状态数据处理指令用于使得该处理单元写该处理单元的返回状态数据从其目前操作模式到相应于不同于目前操作模式的操作模式的一个堆栈。
已发现本发明能使代码尺寸减小并改善性能。本发明可用在各种实施例中,但在实时操作系统中特别有利,具体地,例如Linux这样的多任务操作系统,它们要求快速上下文转换。
在最佳实施例中,该返回状态数据处理指令根据出现异常调用。
将理解该异常可以是任一适合的异常,例如可以是产生在一个数据处理设备中的任一标准异常,包括所有类型的中断,所有类型的故障,未定义的指令异常,地址异常(address exception),软件中断和能产生的任何其他异常。更特别,在优选实施例中,该异常是一个或多个数据故障,预取故障,地址异常,未定义指令,复位,软件中断,中断请求或快速中断请求。
因此,在优选实施例中,该异常使被调用的该数据处理指令可以是任一预定组异常,而该预定组指令可包括一个或多个中断。
已发现,本发明的优选实施例通过减小在开始一个异常处理程序时要求的指令数使得代码尺寸减小。此外,该优选实施例通过减小在开始一个异常处理程序时要求的周期数使得性能得到改善。如果这些周期一般发生在禁止中断处的关键位置,则具有明显减小中断等待时间的优点。本发明的优选实施例可用在各种实施例中,但是用在实时操作系统中,特别是那些要求很小中断等待时间的系统,例如控制磁盘驱动的操作系统中具有特别的好处。
在优选实施例中,该数据处理设备还包括:一组寄存器,包括多个返回状态寄存器,用于储存用于每个操作模式的处理单元的返回状态数据,该处理单元只能存取包含由其目前操作模式的处理器单元的返回状态数据的返回状态寄存器。这要求先于改变该操作模式保存该返回状态到一个合适的堆栈,因为一旦改变了该操作模式,这些返回状态寄存器将不可存取,除非通过重新进入该初始异常模式。
将理解可按各种方式实施堆栈。然而,在优选实施例中,每个堆栈具有与识别在该堆栈中一个单元有关的堆栈指针,用于一个特定堆栈的该堆栈指针只由相应操作模式可存取。因此,对于任一特定操作模式,该处理单元一般将只能存取其相应堆栈,因为它一般只使用对那个堆栈的堆栈指针。
在提供一组寄存器于该数据处理设备中的优选的实施例中,该一组寄存器最好进一步包括多个堆栈指针寄存器用于为每个堆栈储存该堆栈指针,该处理单元只能存取包含用于相应于其目前操作模式的该堆栈的该堆栈指针的该堆栈指针寄存器。因此,按其目前操作模式的处理单元只能存取该堆栈指针寄存器,以便获得用于其相应堆栈的该堆栈指针。
将理解按本发明提供的返回状态数据处理指令可以采用多种形式。然而,在最佳实施例中,该返回状态数据处理指令包括用于识别该堆栈的一个堆栈识别符字段,该处理单元的该返回状态数据被写入到该堆栈中。
在优选实施例中,每个堆栈具有与此相关的一个堆栈指针,显见的是该处理单元需要具有该堆栈指针的信息,以便写该返回状态数据到该目的堆栈中的合适的单元。因此,在优选实施例中,该堆栈识别符字段被配置来指定用于该堆栈的堆栈指针,该处理单元的返回状态数据被写入到该堆栈,由此使该处理单元在写该返回状态数据到那个堆栈时访问在那个堆栈中的合适的单元。
进而,在优选实施例中,该返回状态数据处理指令包括任选更新字段,它被设置来指示一旦该返回状态数据已写入到该堆栈,该堆栈指针即被更新。一般地该堆栈指针将被更新,但可存在一些情况,在那里并不适合更新该堆栈指针,并因此该任选更新字段将对保留该堆栈指针于其目前值,或更新它以考虑写入到该堆栈的返回状态数据提供灵活性。
在优选实施例中,可提供不同类型的堆栈,其使用不同的编址模式以确定如何更新该堆栈指针。四个不同的堆栈类型是:
全递增-在存储器中该堆栈向上增长和该堆栈指针指向进栈的最后字;
空递增-在存储器中该堆栈向上增长和该堆栈指针指向进栈的在该最后字之上的一个字;
全递减-在存储器中该堆栈向下增长和该堆栈指针指向进栈的该最后字;以及
空递减-在存储器中该堆栈向下增长和该堆栈指针指向进栈的该最后字之下的一个字。
因此,在优选实施例中,该返回状态数据处理指令包括一个编址模式字段,用于识别该堆栈的编址模式,该返回状态数据被写入到该堆栈,该字段由该处理单元使用以确定该编址模式与该目的堆栈有关。
有赖于异常出现和其他系统状态,有必要总是调用该返回状态数据处理指令,或只要存在一个特定条件取代仅调用该返回状态数据处理指令。因此,在优选实施例中,该返回状态数据处理指令包括一个条件字段,以便指定一个条件执行该返回状态数据处理指令,使得该返回状态数据处理指令只由该处理单元执行,只要条件相符。
在优选实施例中,当一个异常出现时,该处理单元将放置到一个相应的异常操作模式,而由此作为一例子,如果中断发生,该处理单元将放置到中断操作模式。如果故障发生,该处理单元将放置到故障操作模式,等等。由此,在执行该返回状态数据处理指令期间该目前操作模式是一个异常操作模式。在一个优选实施例中,堆栈用来储存该返回状态数据的不同的操作模式是一个特许的操作模式,例如一个系统的一般的特许操作模式。在另一实施例中,该不同的操作模式可以是进入该异常模式之前该处理单元的操作模式。
将理解该返回状态数据可采用各种形式。但是,在优选实施例中,该返回状态数据包括一个保存的程序计数器和一个保存的处理器状态,这些是该操作模式的程序计数器和处理器状态,该操作模式被退出以进入目前的即异常操作模式。
从第二方面观察,本发明提供了一种操作一个数据处理设备的方法包括一个处理单元用于执行数据处理指令,该处理单元具有多个操作模式,每个操作模式具有用于储存与那个模式相关的数据的一个相应的堆栈,该方法包括步骤:通过写该处理单元的返回状态数据从其目前操作模式到相应于不同于目前操作模式的操作模式的一个堆栈使该处理单元响应于一个返回状态数据处理指令。
从第三方面观察,本发明提供了一个计算机程序,其可操作来配置一个数据处理设备执行按本发明第二方面的一种方法。本发明还与包括这样的一个计算机程序的一种载体介质相关。该载体介质可以是任一合适的装置,例如一个CDROM,一个软磁盘等,或者也可以是一种传输介质,例如光纤,无线电信号等。
附图的详细说明
将参照如附图中所说明的本发明的一个优选实施例只作为例子进一步描述本发明,其中:
图1A是说明包含多个堆栈的示例性系统配置的图,每个堆栈与一个或多个操作模式相关;
图1B说明与图1A系统配置中每个操作模式相关的寄存器;
图2A表示具有三个任务,而每个任务具有五个独立堆栈的已知系统配置的例子;
图2B表示与图2A中表示的系统相关的任务控制块的部分;
图3A表示具有三个任务,每个任务具有两个独立堆栈但具有三个在该三个任务之间共享的异常堆栈的已知系统配置例子;
图3B表示与图3A中表示的系统相关的任务控制块部分;
图4A-4E说明按现有技术方法在出现异常时调用指令的顺序;
图5A-5D说明按本发明优选实施例在出现异常时执行指令的顺序;以及
图6是说明包括按本发明优选实施例的一个数据处理设备的系统的示例性结构的方块图。
一个优选实施例的说明
图1A和1B是说明具有六个操作模式和相应六个堆栈的一个示例性系统的方块图。但是,该FIQ模式被保存用于不引起上下文转换的高优先级中断,而因此在该图中只表示五个操作模式和它们相应的五个堆栈并在下列说明中讨论。因此,参照图1A,说明五个堆栈100,110,120,130和140。五个堆栈具有一个相关的堆栈指针寄存器105,115,125,135和145,每个堆栈指针寄存器仅由与那个堆栈相关的操作模式可存取。当考虑图1B时,它说明寄存器可按五个操作模式的每一个存取,即一个用户模式,一个特许模式,一个中断模式,一个故障模式,和一个未定义模式,而这一点将成为清楚的事情。如从图1B清楚地看到,某些寄存器可由任一模式存取。但是用于该五个模式的堆栈指针在该例中命名为SP,SP-SVC,SP-IRQ,SP-ABT和SP-UND,清楚地是对于任一特定操作模式,处理器只能存取包含用于与那个操作模式相关的该堆栈的该堆栈指针的寄存器。由此,该处理器只能存取属于那个操作模式的堆栈。
特许模式,和每个异常模式(中断,故障和未定义的)具有相关的返回状态数据,该相关的返回状态数据只由与那个返回状态相关的操作模式存取。参照图1B,该返回状态命名为LR-SVC,LR-IRQ,LR-ABT,LR-UND和还有SPSR-SVC,SPSR-IRQ,SPSR-ABT和SPSR-UND,LR意味着“链接寄存器”,和SPSR意味着“保存的处理器状态寄存器”。该用户模式也具有一个链接寄存器,但不用于储存返回状态信息,对于该用户模式就像不存在返回状态那样,因为这不是一个异常模式。那就是说,这里不存在将对用户模式引起输入的异常,而且因此这里不存在需要对用户模式储存任何返回状态数据。
图2A以方块图形式说明第一个现有技术系统配置,在该例中该系统具有三个任务,每个任务具有相应于五个操作模式的五个堆栈。由此,任务1具有一个处理堆栈200,一个系统堆栈210,一个中断堆栈220,一个故障堆栈230和一个未定义堆栈240,任务2具有一个处理堆栈202,一个系统堆栈212,一个中断堆栈222,一个故障堆栈232和一个未定义堆栈242,和任务3具有一个处理堆栈204,一个系统堆栈214,一个中断堆栈224,一个故障堆栈234和一个未定义堆栈244。
返回状态数据保存在相应于该异常的堆栈上。例如,在出现一个中断时,一个任务将进入该中断操作模式,和该返回状态信息将保存在该中断堆栈上。如据图2A将理解的,从存储器消耗观点看,由不得不维持每任务五个堆栈而影响附加的总开销。
图2B表示用于每个任务的任务控制块的部分,一个任务控制块是存储器的一个区域,在那里一个任务保存所有用于上下文转换必要的信息。作为该信息部分,用于该五个堆栈的每一个的堆栈指针需要储存,而因此用于任务1的控制块250将不得不储存五个堆栈指针,用于任务2的控制块260将不得不储存五个堆栈指针,而用于任务3的控制块270将不得不储存五个堆栈指针。由此将理解:不但从由于在每个任务控制块需要附加存储器的存储器消耗观点看,而且由于保存和再储存该任务控制块中附加寄存器所花费的附加时间而影响性能-这两者都说明每任务具有五个堆栈将影响附加的总开销。
为了根据该已知技术加以改进,第二个更为通用的方法是提供在那里共享为该任务所共有的某些异常堆栈的系统,这样的一种示例性系统在图3A中说明。按图3A例子,所示的一个系统具有每任务2个堆栈,和一般为在该三个任务之间共享系统的附加的三个堆栈。为说明目的,假定在图3A中说明的系统具有与在图2A中所说明的系统相同的五个执行模式,虽然人们理解其他的实施例可具有更多或更少的执行模式。
根据异常的出现,在相应异常堆栈上的任何数据转移到用户/处理堆栈或相关任务的系统堆栈,由此保证在可要求上下文转换的所有位置所有共享异常堆栈保持空。结果,只需要储存在相应任务控制块中的用户/处理和系统模式的堆栈指针。这将由图3B说明,它示出分别用于任务1,2和3的任务控制块360,370和380。
如将由图3A和3B显见,就存储器消耗和性能观点来看通过使用该方法获得了明显的优点。在图3A和3B中所说明的系统要求Nt×2+3个堆栈,而在图2A和2B中所说明的系统要求Nt×5个堆栈,Nt是在该系统中的任务数。另外,在图2A和2B中说明的系统要求上下文块信息的Nt×5个字,而在图3A和3B中说明的该系统要求上下文块信息的Nt×2个字。在执行时,在如图2A和2B中所说明的一个系统上在任务之间的上下文转换要求五个字的加载和储存,而在如图3A和3B中所说明的该系统上在任务之间的上下文转换要求两个字的加载和储存。
为提供在一个中断开始时必要的代码例子,以使用已知技术实施图3A和3B中所说明的系统,以下陈述的是用ARM汇编语言编写的代码段(code fragment):
;First save the return state(lr and spsr registers)on the
;interrupt stack.In addition to the return state also save R0 for
;use as a temporary register.Do not decrement the stack pointer
;because we will be loading the return state and saved R0 off the
;interrupt stack as soon as we change mode.It is safe to not
;decrement the stack pointer because we know no interrupts can be
;serviced between saving the data and reading it after changing
;modes because interrupts are disabled.(D)    SUB     lr, lr, #4    ;Adjust LR_IRQ to point to return
                             address(M)    STR     lr, [sp,#-4]  ;Save LR_IRQ on interrupt stack(D)    MRS     lr, spsr       ;Read SPSR_IRQ(M)    STR     lr, [sp,#-8]  ;Save SPSR_IRQ on interrupt stack(M)    STR     r0, [sp,#-12] ;Save R0 on interrupt stack(D)    MOV     r0, sp         ;Get interrupt stack pointer in R0;Now change processor mode to system (SVC) mode.(D)    MRS     lr, cpsr       ;Read current processor status
                             register(D)    BIC     lr, lr, #0x1f ;Mask out mode bits using Bit Clear
                             operation(D)    ORR     lr, lr, #0x13 ;Or in the correct mode bits for SVC
                             mode(D)    MSR     cpsr_c,lr      ;Write the new mode to the cpsr.;Now save a register on the SVC stack so we can use it as a;temporary.Then recover the return state information and saved R0;from the interrupt stack and save it on the SVC stack.(D)    SUB     sp, sp, #8*4  ;First create space on the SVC stack(M)    STR     r1, [sp,#2*4] ;Save R1 for use as a temporary
                             register(M)    LDR     r1, [r0,#-4]  ;Recover saved LR_IRQ to R1(M)    STR     r1, [sp,#7*4] ;Save LR_IRQ on SVC stack(M)    LDR     r1, [r0,#-8]  ;Recover saved SPSR_IRQ to R1(M)    STR     r1, [sp,#0*4] ;Save SPSR_IRQ on SVC stack(M)    LDR     r1, [r0,#-12] ;Recover saved R0 from interrupt
                             stack;At this point it is save to re-enable interrupts.At no previous;point was it safe to do so because there was data stored on the;interrupt stack which could be overwritten if a second interrupt;was allowed to be serviced before we had recovered all the data;from the interrupt stack.(D)    MRS     r0,cpsr         ;Read the CPSR(D)    BIC     r0,r0,#0x80    ;Clear the interrupt disable bit(D)    MSR     cpsr_c,r0       ;And write back the CPSR;*** INTERRUPT RE-ENABLE ***;Cycle count before RE-ENABLING interrupts=11*D+9*M;;We can now continue saving the remainder of the process context
   STR     r1,[sp,#1*4]   ;Save R0 recovered from IRQ stack
   STR     r2,[sp,#3*4]   ;Save R2 on SVC stack
   STR     r3,[sp,#4*4]   ;Save R3 on SVC stack
   STR     R12,[sp,#5*4]  ;Save R12 on SVC stack
   STR     lr,[spc,#6*4]  ;Save LR_SVC on SVC stack
                            ;Now continue and service the
                              interrupt
该以插句方式靠近每个指令的文字表示用于每个指令要求的存储或数据周期数,这里M等于一个存储周期,而D等于一个数据周期。说明的周期数高达标记“***INTERRUPT RE-ENABLE***”的位置,这是中断能再允许的位置。在该中断处理程序的开始和该位置之间的周期数决定了该中断的等待时间,大的周期数导致大的中断等待时间。而小周期数导致小的中断等待时间。在以上该代码段中未表示的是由该硬件要求来提供对该中断处理程序的第一指令控制的大量附加周期数。该周期数与本发明优选实施例使用的相同或不相同,并在此被省略以使说明清楚。
为帮助说明由在上述代码段中说明的不同指令执行的处理,包括了图4A-4E,现在将讨论这些图。
在该例中假定已出现一个中断异常并因此该处理器已进入中断操作模式,在那里它可以使用寄存器420。按该中断操作模式该处理器的返回状态数据储存在该返回状态寄存器中,在图4A中该返回状态寄存器识别为寄存器430。实际上,该返回状态数据包括寄存器LR-IRQ和SPSR-IRQ。
图4A还说明两个堆栈,即按中断操作模式可存取的中断堆栈400和管理程序堆栈410,该管理程序堆栈410并不按中断操作模式可存取,因为对于该中断操作模式该处理器不允许存取包含该管理程序堆栈指针SP-SVC的寄存器。
需要执行的第一个处理是保存该返回状态,即保存寄存器430的内容到中断堆栈400,除保存该返回状态外,寄存器R0的内容还保存到中断堆栈400,使得那个寄存器R0可用作为一个临时寄存器。该操作由图4A中由标记435识别的四个指令执行并在以上代码段中陈述。只要求在以上代码段中陈述初始的SUB指令,因为在公开的实施中该链接寄存器LR-IRQ需要调整以便它正确地指向该返回地址。
因此,参照图4B,我们现在处在一个位置,在那里LR-IRQ,SPSR-IRQ和R0的内容储存在该中断堆栈400上。中断堆栈400的堆栈指针SP-IRQ并不递减,这是因为只要该处理改变模式,刚保存在该中断堆栈上的返回状态和R0数据将卸载(load off)该中断堆栈。妥当的是不递减该堆栈指针,这是由于在改变模式之后对任何进一步的中断不可能在保存数据和读出数据之间运行,因为在这时该中断已被禁止。
如图4B中所说明的,下一步骤将该中断堆栈的堆栈指针SP-IRQ储存到R0寄存器中,该寄存器R0现在是用作为一个临时寄存器。这将允许一旦退出该中断操作模式堆栈指针是可存取的。
此时,处理器模式改变到系统模式,由图4B中的标记数445标记的四个指令执行该改变。由此,如图4C中所指示的,现在该处理器处于管理程序模式操作,在那里它使用寄存器450。由于寄存器R0在该操作模式之间被共享,寄存器R0仍包含用于该中断堆栈400的堆栈指针。然而,现在按管理程序操作模式该返回状态是该处理器的返回状态,例如被储存在寄存器440中。
现在该处理储存在该管理程序堆栈上的一个寄存器的内容,使得它可以用作一个临时寄存器。在该例中,寄存器R1的内容被储存到该管理程序堆栈中。接着该处理从该中断堆栈400回收该返回状态信息和该保存的R0值,并将其保存到该管理程序堆栈410中。这些处理由图4C中由数455标记的七个指令执行。实际上,该SUB指令被用来由八个4字节字递减该管理程序堆栈指针。之后,一个STR指令被用来将R1的内容储存到该管理程序堆栈410的一个特定单元中。接着LDR和STR指令被用来将LR-IRQ储存到该管理程序堆栈上的一个特定单元中,而接着的LDR和STR指令被用来将SPSR-IRQ储存到该管理程序堆栈上的一个特定单元中。可以看到该临时寄存器R1用于该目的。该最后的LDR指令被用来将储存在该中断堆栈400上的R0的值储存到该临时寄存器R1中。然而,要求接着将那个值储存到该管理程序堆栈中的后续STR指令不立即执行,因为这时重新允许中断目前是妥当的,和重新允许中断是为将该中断等待时间减之最小的给定的优先级。应指出在无在先观点存在的情况下重新允许中断是妥当的,因为存在着储存在该中断堆栈400上能重写的数据,如果允许第二个中断在所有数据已从该中断堆栈400回收之前运行。
由此,现在转到图4D,中断允许由图4D中数465标记的三个指令执行,并包括在早期的代码段中。事实上,这些指令读CPSR寄存器,消除中断禁止位,接着回写有关数据到该CPSR寄存器,由此重新启动中断。
这时,我们可继续保存该处理上下文的剩余,这由图4D中数475标记的五个STR指令执行。实际上,应指出该第一个STR指令储存R1内容到该管理程序堆栈中的一个指定的单元,该寄存器实际上包含初始R0数据,该R1的内容由图4C中执行的指令之一移动到该管理程序堆栈中。寄存器R2,R3,R12和LR-SVC的内容接着也移动到该管理程序堆栈410。应当指出其他寄存器的内容将自动地由接着调用的代码保存,这将遵循ATPCS(ARM拇指过程调用标准),而此时由此不需要显含地保存到该管理程序堆栈(除非该代码不遵循ATPCS)。
图4E接着说明这时该管理程序堆栈410的最终状态。应当指出,在图4D和4E中,该中断堆栈400仍表示为包括三个最初移动到图4A中的该中断堆栈的数据,然而显见的是现在该数据是冗余的,因为它被储存在该管理程序堆栈上,并因此对所有意向和目的该中断堆栈400可考虑为空。由此,这时,连续和运行该中断目前是妥当的,这种情况一般经由一个上下文转换到另一任务时产生。
如可以看到的,使用该已知的现有技术,在中断能被重新启动前,中断处理程序占用十一个D类型周期和九个N类型周期,这导致相当大的中断等待时间。而且在中断能重新启动前,采用的指令数是相当多的。如据以上结合图4A-4E包括的代码段可以看到的,使用该现有技术方法,在中断可重新启动前,需要执行二十个指令。
现在在描述了为按现有技术实施如图3A和3B中所示那样的系统在中断开始时所必要的处理之后,将接着讨论按本发明优选实施例实施这样的一个系统在一个中断开始时必要的处理。特别地,为帮助这种讨论,以下陈述一种代码段说明按本发明优选实施例实施如图3A和3B中所示那样的系统在中断开始时所必要的代码:;Save the return state directly onto the SVC stack using the SRS;instruction.(D)      SUB     lr,lr,#4    ;Adjust LR_IRQ to point to return
                             address(2M)     SRSDB   sp_svc!      ;Save return status on SVC stack;Now change processor to system (SVC) mode, re-enabling interrupts;at the same time.It is safe to re-enable interrupts at this time;because the return state has been saved on the SVC stack.Therefore;the interrupt stack is empty and a context switch is permissible;without the need to context switch the interrupt stack(i.e.;without the need to have a separate interrupt stack per task).(D)      MRS     lr,cpsr                ;Read cpsr(D)      BIC     lr,lr,#0xlf+0x80      ;Mask out mode bits and
                                       clear interrupt(D)      ORR     lr,lr,#0x13           ;Or in mode bits for SVC
                                       mode(D)      MSR     cpsr_c,lr              ;Write back new mode and
                                       interrupt bits;*** INTERRUPT RE-ENABLE ***;Cycle count before RE-ENABLING interrupts=5*D+2*M;Interrupts are now re-enabled. Continue to save the remainder of;the process context.
  STMDB sp!,{r0-r3,r12,lr}
   ***                       ;Now continue and service the
                               interrupt
如在早先讨论的现有技术代码段的情况下那样,以插句方式的文字表示周期数,靠近SPSDB指令的文字2M表示两个存储周期。
以下将讨论与图5A-5D相关的代码段,其示意地说明由以上代码段中的不同指令执行的处理。
在该例中,如在早先参照图4A-4E讨论的例子的情况下那样,假定一个中断异常已出现和由此该处理器已进入中断操作模式,在那里它使用寄存器520。按该中断操作模式该处理器的返回状态数据储存在在图5A中表示为寄存器530的返回状态寄存器中。图5A还表示中断堆栈500和管理程序堆栈510。
该代码段用与包括在早先讨论的现有技术代码段相同的一个SUB指令开始,如在先所述的那样,该指令要求保证该中断链接寄存器LR-IRQ指向正确的返回地址。
接着,按优选实施例提供的一个新指令,即一个SRS指令被执行以直接保存该返回状态数据到工作在该中断操作模式的管理堆栈510中。该指令的格式将在下面详细讨论。但在这里要指出附加字母DB到该SRS指令为的是在该例“Decrement Before”中表示该管理程序堆栈的编址模式。该指令还包括一个字段来识别该保存返回状态数据的堆栈,该字段在该例中包含用于该管理程序堆栈510的堆栈指针SP-SVC。最后在该指令结束处的惊叹号表示一旦已保存该返回状态数据该堆栈指针应加以更新。
一旦该SRS指令已被执行,该中断堆栈和管理程序堆栈的内容如在图5B中说明的那样。特别地,应指出寄存器LR-IRQ和SPSR-IRQ的内容已附加到管理程序堆栈510,和该管理程序堆栈指针SP-SVC已被更新。在该阶段,由于按中断操作模式该返回状态数据的内容已储存到该管理程序堆栈中,因此现在有可能改变该处理单元的操作模式到该管理程序模式。此外,由于该返回状态数据直接储存在该管理程序堆栈510上,和该中断堆栈500已保持空,这时重新启动中断目前是妥当的。由于该中断堆栈500为空,所以可允许上下文转换,而不需要上下文转换该中断堆栈,即不需要每任务具有一个单独的中断堆栈,而由此该处理可以在例如表示在图3A和3B的系统中应用。
用来改变操作模式和重新启动中断的四个指令由图5C中数字540标记。接着图5C表示按该管理程序操作模式可存取的寄存器550,其包括按该管理程序操作模式包含返回状态的寄存器560。
此时,处理能继续保存该处理上下文的剩余部分。由于调用的该寄存器可储存在该管理程序堆栈的后续的单元中,因此有可能通过一单个STM指令来执行该操作,该指令由图5C中标记数570标记,而该处理示意地由该管理程序寄存器550和该管理堆栈510之间的不同行说明。附加到该STM指令的字母DB识别该管理程序堆栈是工作在Decrement Before编址模式,在该STM指令中该堆栈指针ID后的惊叹号指示该堆栈指针应加以调整。接着被储存的寄存器用该指令识别。
图5D说明在执行了该STM指令后该管理程序堆栈510的内容。将指出该管理程序堆栈510的内容与参照图4E早先说明的该管理程序堆栈410的内容是相同的,即使该数据的顺序略有不同,由此可看出参照图5A-5D说明的优选实施例的处理产生的结果与参照图4A-4E说明的现有技术处理是相同的。然而如据早先包括的代码段显见的是包含该新SRS指令的该优选实施例的技术在能重新启动中断之前保证该中断处理程序只占用五个D类型周期和两个M类型周期,比较能重新启动中断之前所需用的指令数,使用该优选实施例方法该中断处理程序在重新启动中断前只需要执行六个指令,与此相反,按现有技术方法需要执行贰拾个指令。
因此,概括地,当使用本发明的优选实施例的方法时,中断处理程序占用较少量的D类型周期,较少量的M类型周期和较少量的指令。还应指出M类型周期在一个慢存储系统上可以比D类型周期小得很多,以及对于执行的每个指令还可以存在一个执行的附加的存储器提取,以便提取指令本身。
由此,使用一个示例性系统,在那里一个M类型周期比一个D类型周期小四倍,对于使用或不使用优选实施例技术的中断处理程序给出下列性能数字,这里在下列等式中,(D)表示数据周期数,(M)表示存储周期数,和(I)表示执行的指令数,其中每个指令可以引起附加的存储器提取:
不使用优选实施例技术:
11(D)+9(M)*4+20(I)*4=127周期
使用该优选实施例技术:
5(D)+2(M)*4+6(I)*4=37周期
在说明应用本发明优选实施例方法的好处之后,现在将更详细的讨论新的SRS指令。特别地以下将提供本发明优选实施例的SRS指令的简化的Backus-Narm形式说明:
  SRS{<COND>}<addr_mode><fully_qualified_stack_pointer>{!}
  <COND> ∷=
        EQ|NE|CS|CC|MI|PL|VS|VC|HI|LS|GE|
        LT|GT|LE|AL|HS|LO
  <addr_mode> ∷ =
        IA|IB|DA|DB|FD|ED|FA|EA
  <fully_qualified_stack_pointer> ∷=
        SP_USER|SP_FIQ|SP_IRQ|SP_SVC|SP_ABT|SP_UND
  <COND>     Description             Condition
  EQ         EQuals                  Z
  NE         Not Equal             !Z
  CS         Carry Set               C
  HS         unsigned Higher or Same C
  CC         Carry Clear           !C
  LO         unsigned Lower        !C
  MI         MInus                   N
  PL         Plus                  !N
  VS         overflow set            V
  VC         overflow clear        !V
  HI         unsigned HIgher       C&!Z
  LS         unsigned Lower or Same!C|Z
  GE         Greater or Equal      !(N^V)
  LT         Less Than             N^V
  GT         Greater Than          !Z&!(N^V)
  LE         Less than or Equal    Z|(N^V)
  AL         ALways                1
  <addr_mode>Description
  IA         Increment After(equivalent to EA)
  EA         Empty Ascending(equivalent to IA)
  IB         Increment Before(equivalent to FA)
  FA         Full Ascending (equivalent to IB)
  DB         Decrement Before(equivalent to FD)
  FD         Full Descending(equivalent to DB)
  DA         Decrement After(equivalent to ED)
  ED         Empty Descending(equivalent to DA)
  <fully_qualified_stack_pointer>      Description
  SP_USER                       The User mode stack pointer
  SP_FIQ                        The Fast Interrupt Request stack
                                pointer
  SP_IRQ                        The Interrupt ReQuest stack
                                pointer
  SP_SVC                        The Supervisor stack pointer
  SP_ABT                        The Abort stack pointer
  SP_UND                        The Undefined stack pointer
该简化的Backus-Naur形式对本专业技术人员而言是精通的。但在此给出简要说明。在该简化形式中,在大括号“{...}”中的项表示任选项,在角括号“<...>”中的项表示替代符号,其可以用在该图中所描述的符号的扩展替代。符号“1”用来分开在一个符号列表中的符号和可读作“或”,表示那些符号的准确的一个可以用作为一个替代符号。
因此,可以看出该SRS指令保存该处理器的返回状态到由指定属于在该处理器上可利用的模式之一的一个堆栈的<fully-qualified-stack-pointer>所指定的一个堆栈。如果该<fully-qualified-stack-pointer>跟随符号“!”,则表示在该操作完成后该<fully-qualified-stack-pointer>将被更新。
考虑一个ARM处理器例子,提供六个操作模式,即一个用户模式,一个管理程序模式,一个故障模式,一个未定义模式和两个中断模式,即IRQ和FIQ,由此如在以上简化Backus-Naur形式中所说明的,该<fully-qualified-stack-pointer>可采用SP-USER,SP-FIQ,SP-IRQ,SP-SVC,SP-ABT或SP-UND值的任一值。
<COND>指定为执行该操作必须是真的许多条件之一。由该处理器可存取的CPSR寄存器包括以后称为N,Z,V,C四个标志。标志N设置到一,只要最后的算术运算结果是负的,标志Z设置到一,只要最后的算术运算结果是零,标志V设置到一,只要最后的算术运算结果是溢出,和标志C设置到一,只要最后的算术运算结果是一个进位。在以上的SRS指令的简化Backus-Naur形式中,提供的一个表与每个值的说明一起说明该<COND>字段可采用的不同值,和借助在该CPSR寄存器中可利用的N,Z,V,和C确定关于该值等于什么。这样,那个表实际上描述该处理器将如何确定基于在CPSR寄存器中存在的N,Z,V和C标志是否执行该指令。作为例子,如果该<COND>字段被设置到值MI,则该处理器将校验以便观察该标志N是否已设置到一,如果是,则将执行该指令,如果否,将不执行该指令。如果未指定<COND>字段,这等效于指定“AL”的<COND>符号,其表示该操作应总是被执行。
该<addr-mode>字段指定用于该操作的一个寻址模式,以上陈述的该在优选实施例中可利用的不同的寻址模式与该指令的简化Backus-Naur形式相关。如在先所述,该<fully-qualified-stack-pointer>字段指定属于该处理器的执行模式之一的一个堆栈指针的十分受限制的名字。
下面是SRS指令例,可从简化Backus-Naur形式导出:
SRSDB            SP-SVC!
SRSEQDB          SP-SVC!
SRSEQDB          SP-SVC
图6是说明包括按本发明优选实施例的数据处理设备的系统的一个方块图。在优选实施例中,该数据处理设备采用CPU10中提供的一个CPU核心60的形式。该CPU核心60将包括一个处理单元,用于执行数据处理指令,和一组寄存器70可由处理单元存取。该CPU10一般将包括该CPU核心60,和大量其他选用元件,例如一个存储器管理单元(MMU)45和一个高速缓冲存储器50。
CPU10将一般通过总线30连接到其他元件,和因此可连接到一个只读存储器(ROM)40和一个随机存取存储器(RAM)20。该ROM40尤其可配置来储存由该CPU核心60执行的指令80。按本发明的优选实施例,为该处理单元每个操作模式提供的堆栈90可储存在RAM20中。
根据以上对本发明一个优选实施例的说明,将理解使用该优选实施例将导致许多优点。首先,使用本发明的优选实施例使代码尺寸减小。在早先描述的例子中,已示出如何用该优选实施例来在一个中断处理程序开始时将指令数从贰拾个减小到六个。此外,使用该优选实施例一般将导致性能的改善。再者,在早先陈述的例子中,已示出在该中断处理程序开始时优选实施例如何将周期数从127个减小到37个。该周期数的减小还使得该中断等待时间减小,这是因为这些周期一般出现在禁止中断的临界位置。
应用优选实施例的技术的另一个惊人的优点在于它可以用来降低一个处理器的功耗,功耗在如移动电话和个人数字助理(PDA)这样的电池供电的装置中是特别重要的。如果考虑基于在先给出的例子和说明的一个系统,将假定该系统被要求在所有时间保持10μs的中断响应时间以运行一个高优先级的中断,则清楚的是该系统必须在足够的速度上运行以保证在10μs内能执行127个周期,这是对于使用已知现有技术方法的系统的情况。但是如果系统应用本发明优选实施例的技术,则仅需要运行在足够的速度上以保证在10μs内能执行37个周期。因此,下列等式确定要求的最小时钟速度:
不用优选实施例的技术:
1.OE-5秒/127周期=7.874E-08秒/周期
1/7.874E-08=1.27E+7周期/秒=12.7MHz
用优选实施例的技术:
1.OE-5秒/37周期=2.701E-08秒/周期
1/2.701E-08=3.7E+6周期/秒=3.7MHz
由于一个处理器的功耗相对频率近似线性关系,所以使用优选实施例技术的一个系统可能接近使用不包含该优选实施例技术的类似系统的29%(3.7÷12.8×100)的功率。
虽然本发明的一个特定实施例已在此描述,但显见的是本发明不局限于此,在本发明的范围内可进行许多修改和附加。例如下列从属权利的特征的不同组合可用独立权利要求的特征形成而不偏离本发明的范围。

Claims (18)

1.一个数据处理设备,包括:
一个处理单元用于执行数据处理指令,该处理单元具有多个操作模式,每个操作模式具有用于储存与那个模式相关数据的一个相应的堆栈;
该处理单元响应一个返回状态数据处理指令以便将该处理单元的返回状态数据由其目前操作模式写到一个相应于不同于目前操作模式的操作模式的堆栈。
2.如权利要求1的数据处理设备,其中该返回状态数据处理指令根据出现一个异常被调用。
3.如权利要求2的数据处理设备,其中该异常是一预定异常组的任一异常。
4.如权利要求3的数据处理设备,其中该预定异常组包括一个或多个中断。
5.如以上任一权利要求的数据处理设备,进一步包括:
一组寄存器,包括多个返回状态寄存器,用于储存供每个操作模式的该处理单元的返回状态数据,该处理单元只能由其目前操作模式存取包含该处理单元的该返回状态数据的返回状态寄存器。
6.如以上任一权利要求的数据处理设备,其中每个堆栈具有与识别该堆栈中一单元相关的堆栈指针,该用于一特定堆栈的堆栈指针仅由该相应的操作模式可存取。
7.如与权利要求5相关时的权利要求6的数据处理设备,其中该组寄存器包括多个堆栈指针寄存器,用于储存供每个堆栈的堆栈指针,该处理单元只能存取包括供相应于其目前操作模式的堆栈的堆栈指针的堆栈指针寄存器。
8.如以上任一权利要求的数据处理设备,其中该返回状态数据处理指令包括一个堆栈识别符字段,用于识别该处理单元的该返回状态数据被写入的堆栈。
9.如权利要求8的数据处理设备,其中该堆栈识别符字段被配置来指定用于该处理单元的该返回状态数据被写入的堆栈的一个堆栈指针,由此当写该返回状态数据到那个堆栈时能使该处理单元存取在那个堆栈中的一个合适的单元。
10.如权利要求9的数据处理设备,其中该返回状态数据处理指令包括一个任选的更新字段,其设置来指示一旦该返回状态数据已写入到该堆栈,该堆栈指针将被更新。
11.如权利要求8到11任一的数据处理设备,其中该返回状态数据处理指令包括一个地址模式字段,用于识别该返回状态数据被写入的该堆栈的地址模式。
12.如权利要求8到11任一的数据处理设备,其中该返回状态数据处理指令包括一个条件字段,用于指定执行该返回状态数据处理指令的一个条件,使得该返回状态数据处理指令仅由该处理单元执行,只要符合该条件。
13.如以上任一权利要求的数据处理设备,其中该目前操作模式是一个异常模式,和该不同操作模式是特许操作模式。
14.如以上任一权利要求的数据处理设备,其中该目前操作模式是一个异常模式,和该不同操作模式是该处理单元进入该异常模式前的操作模式。
15.如以上任一权利要求的数据处理设备,其中该返回状态数据包括一个保存的程序计数器和一个保存的处理器状态。
16.一种操作一个数据处理设备的方法包括一个处理单元,用于执行数据处理指令,该处理单元具有多个操作模式,每个操作模式具有一个相应的堆栈,用于储存与那个模式相关的数据,该方法包括步骤:
通过写该处理单元的返回状态数据由其目前操作模式到相应于不同于该目前操作模式的操作模式的堆栈使该处理单元响应于一个返回状态数据处理指令。
17.一个计算机程序,可操作来配置一个数据处理设备执行如权利16要求的方法。
18.一种载体介质包括如权利要求17要求的一个计算机程序。
CNB018194648A 2000-11-27 2001-09-24 用于保存返回状态的数据处理设备和方法 Expired - Lifetime CN1227589C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0028869A GB2369464B (en) 2000-11-27 2000-11-27 A data processing apparatus and method for saving return state
GB0028869.6 2000-11-27

Publications (2)

Publication Number Publication Date
CN1476559A true CN1476559A (zh) 2004-02-18
CN1227589C CN1227589C (zh) 2005-11-16

Family

ID=9903938

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018194648A Expired - Lifetime CN1227589C (zh) 2000-11-27 2001-09-24 用于保存返回状态的数据处理设备和方法

Country Status (13)

Country Link
US (1) US6904517B2 (zh)
EP (1) EP1337918B1 (zh)
JP (2) JP5295475B2 (zh)
KR (1) KR100848603B1 (zh)
CN (1) CN1227589C (zh)
AU (1) AU2001287927A1 (zh)
DE (1) DE60139567D1 (zh)
GB (1) GB2369464B (zh)
IL (2) IL155407A0 (zh)
MY (1) MY127357A (zh)
RU (1) RU2275679C2 (zh)
TW (1) TW556093B (zh)
WO (1) WO2002042914A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804134A (zh) * 2010-03-15 2012-11-28 Arm有限公司 处理异常事件的装置和方法
CN107580697A (zh) * 2015-05-07 2018-01-12 Arm 有限公司 用于验证正确的代码执行上下文的检查指令
CN109409083A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN109409086A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 基于新增指令的检测堆栈中返回地址被篡改的装置
CN115080122A (zh) * 2022-07-22 2022-09-20 飞腾信息技术有限公司 处理器、用于保存和恢复上下文数据的装置、方法及芯片

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532531B1 (en) * 1996-01-24 2003-03-11 Sun Microsystems, Inc. Method frame storage using multiple memory circuits
US6880030B2 (en) * 2000-12-13 2005-04-12 Wind River Systems, Inc. Unified exception handling for hierarchical multi-interrupt architectures
US7313797B2 (en) * 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
US7496896B2 (en) * 2003-07-17 2009-02-24 Computer Associates Think, Inc. Accessing return values and exceptions
US20080098398A1 (en) * 2004-11-30 2008-04-24 Koninklijke Philips Electronics, N.V. Efficient Switching Between Prioritized Tasks
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US7877629B2 (en) * 2005-06-01 2011-01-25 Sanmina-Sci Facilitating handling of exceptions in a program implementing a M-on-N threading model
TW200719141A (en) * 2005-11-07 2007-05-16 Cheertek Inc Flash memory access method and circuit of an embedded system
JP4961781B2 (ja) * 2006-03-14 2012-06-27 ソニー株式会社 情報処理装置、その起動方法およびプログラム
US7797681B2 (en) * 2006-05-11 2010-09-14 Arm Limited Stack memory selection upon exception in a data processing system
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
WO2008122746A1 (en) * 2007-04-10 2008-10-16 Cambridge Consultants Limited Data processing apparatus
US7979685B1 (en) 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
WO2010004242A2 (en) * 2008-07-10 2010-01-14 Cambridge Consultants Limited Data processing apparatus, for example using vector pointers
US7853827B2 (en) * 2008-08-29 2010-12-14 International Business Machines Corporation Isotropic processor
US20120054773A1 (en) * 2010-08-31 2012-03-01 International Business Machines Corporation Processor support for secure device driver architecture
US9405637B2 (en) * 2011-01-18 2016-08-02 Texas Instruments Incorporated Locking/unlocking CPUs to operate in safety mode or performance mode without rebooting
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
US9202071B2 (en) 2012-02-08 2015-12-01 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9477834B2 (en) * 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
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
US9672164B2 (en) 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
CN103268145B (zh) * 2013-03-06 2016-08-17 上海云间半导体科技有限公司 用于保存访存指令的虚拟地址的方法
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3889243A (en) 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
US4236204A (en) 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4587632A (en) 1980-05-27 1986-05-06 At&T Bell Laboratories Lookahead stack oriented computer
US4922414A (en) 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
DE3726192A1 (de) 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
JPH01258040A (ja) * 1988-04-07 1989-10-16 Fujitsu Ltd スタック情報の退避,復元処理方式
US5136696A (en) 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5440749A (en) 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
JP3212656B2 (ja) * 1991-02-08 2001-09-25 株式会社日立製作所 データ処理システム及びマイクロコンピュータ
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
JP2585905B2 (ja) * 1991-10-18 1997-02-26 松下電器産業株式会社 マルチタスク実行装置
US5640548A (en) * 1992-10-19 1997-06-17 Motorola, Inc. Method and apparatus for unstacking registers in a data processing system
US5455775A (en) 1993-01-25 1995-10-03 International Business Machines Corporation Computer design system for mapping a logical hierarchy into a physical hierarchy
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5619665A (en) 1995-04-13 1997-04-08 Intrnational Business Machines Corporation Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture
US5838948A (en) 1995-12-01 1998-11-17 Eagle Design Automation, Inc. System and method for simulation of computer systems combining hardware and software interaction
JP2000515270A (ja) 1996-01-24 2000-11-14 サン・マイクロシステムズ・インコーポレイテッド ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ
US6038643A (en) 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
DE69713400T2 (de) 1996-01-24 2002-10-31 Sun Microsystems Inc Prozessor mit Bereichsüberprüfung bei Matrixzugriffen
DE69738810D1 (de) 1996-01-24 2008-08-14 Sun Microsystems Inc Befehlsfalten in einem stapelspeicherprozessor
US5742802A (en) 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US5761491A (en) * 1996-04-15 1998-06-02 Motorola Inc. Data processing system and method for storing and restoring a stack pointer
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
JPH10105415A (ja) * 1996-09-25 1998-04-24 Nippon Denki Micom Technol Kk リアルタイムos
US5926832A (en) 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US6606743B1 (en) 1996-11-13 2003-08-12 Razim Technology, Inc. Real time program language accelerator
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5937193A (en) 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US6009499A (en) 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US5875336A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Method and system for translating a non-native bytecode to a set of codes native to a processor within a computer system
US6003038A (en) * 1997-03-31 1999-12-14 Sun Microsystems, Inc. Object-oriented processor architecture and operating method
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
US6088786A (en) 1997-06-27 2000-07-11 Sun Microsystems, Inc. Method and system for coupling a stack based processor to register based functional unit
US6003126A (en) 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
US6317872B1 (en) 1997-07-11 2001-11-13 Rockwell Collins, Inc. Real time processor optimized for executing JAVA programs
DE69839913D1 (de) 1997-10-02 2008-10-02 Koninkl Philips Electronics Nv Datenverarbeitungsgerät zur verarbeitung von befeh
WO1999018484A2 (en) 1997-10-02 1999-04-15 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6009509A (en) 1997-10-08 1999-12-28 International Business Machines Corporation Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
JPH11143732A (ja) * 1997-11-06 1999-05-28 Hitachi Ltd マイクロコンピュータ及びエミュレータ
US6122638A (en) 1997-11-26 2000-09-19 International Business Machines Corporation Object-oriented processor and method for caching intermediate data in an object-oriented processor
US6070173A (en) 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6148391A (en) 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
FR2779842B1 (fr) * 1998-06-15 2001-07-13 Schlumberger Ind Sa Procede de gestion de l'execution d'un programme dans un dispositif a circuit integre
US6338134B1 (en) 1998-12-29 2002-01-08 International Business Machines Corporation Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102804134A (zh) * 2010-03-15 2012-11-28 Arm有限公司 处理异常事件的装置和方法
CN102804134B (zh) * 2010-03-15 2015-02-25 Arm有限公司 处理异常事件的装置和方法
US9104425B2 (en) 2010-03-15 2015-08-11 Arm Limited Apparatus and method for handling exception events
US9727343B2 (en) 2010-03-15 2017-08-08 Arm Limited Apparatus and method for handling exception events
CN107580697A (zh) * 2015-05-07 2018-01-12 Arm 有限公司 用于验证正确的代码执行上下文的检查指令
CN107580697B (zh) * 2015-05-07 2021-11-30 Arm 有限公司 用于验证正确的代码执行上下文的检查指令
CN109409083A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN109409086A (zh) * 2018-09-21 2019-03-01 中国科学院信息工程研究所 基于新增指令的检测堆栈中返回地址被篡改的装置
CN115080122A (zh) * 2022-07-22 2022-09-20 飞腾信息技术有限公司 处理器、用于保存和恢复上下文数据的装置、方法及芯片

Also Published As

Publication number Publication date
DE60139567D1 (de) 2009-09-24
EP1337918A1 (en) 2003-08-27
AU2001287927A1 (en) 2002-06-03
JP5295475B2 (ja) 2013-09-18
CN1227589C (zh) 2005-11-16
GB0028869D0 (en) 2001-01-10
GB2369464A (en) 2002-05-29
MY127357A (en) 2006-11-30
EP1337918B1 (en) 2009-08-12
JP2004514987A (ja) 2004-05-20
IL155407A (en) 2008-03-20
JP2011216118A (ja) 2011-10-27
GB2369464B (en) 2005-01-05
IL155407A0 (en) 2003-11-23
KR20030072550A (ko) 2003-09-15
RU2275679C2 (ru) 2006-04-27
US20020099933A1 (en) 2002-07-25
KR100848603B1 (ko) 2008-07-28
US6904517B2 (en) 2005-06-07
TW556093B (en) 2003-10-01
WO2002042914A1 (en) 2002-05-30

Similar Documents

Publication Publication Date Title
CN1227589C (zh) 用于保存返回状态的数据处理设备和方法
CN1186729C (zh) 从虚地址计算页表索引的方法和装置
CN1095116C (zh) 执行两种指令长度代码的处理机及其指令码输入装置
CN1098490C (zh) 具有检查点恢复功能的i/o控制设备
CN1089460C (zh) 多指令集的数据处理
CN1152287C (zh) 二进制程序转换设备和转换方法
CN1276358C (zh) 用于存储设备的地址转换单元
CN1117315C (zh) 微处理机及多处理机系统
CN1324468C (zh) 信息处理装置、信息处理方法
CN1613058A (zh) 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备
CN1881183A (zh) 信息处理装置、进程控制方法及其计算机程序
CN1050451A (zh) 可处于低功率待用状态的计算机
CN101038554A (zh) 软件更新方法、更新管理程序和信息处理设备
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1947107A (zh) 用于在存储器间传输数据的装置
CN1591374A (zh) 直接存储器存取传输控制器
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1731402A (zh) 用协处理器加速文件系统操作的方法及装置
US7386709B2 (en) Controlling execution of a block of program instructions within a computer processing system
CN1297905C (zh) 高速缓存控制器、高速缓存控制方法以及计算机系统
CN1898654A (zh) 高速缓冲存储器及其控制方法
CN1035190A (zh) 基于操作数长度和对位的微码转移
CN1255675A (zh) 具有冻结功能的高速缓存器
CN1068445C (zh) 指令调度方法和寄存器竞争检查方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20051116

CX01 Expiry of patent term