上下文保存的制作方法

文档序号:6481635阅读:230来源:国知局
专利名称:上下文保存的制作方法
技术领域
本发明涉及处理器,特别是可在两个或多个不同执行模式,例如标量模式和超长指令字(VLIW)模式之间切换的处理器。
为了满足不同处理任务的需要,已经提出提供可在两个或多个不同执行模式之间切换的处理器。这种两个或多个执行模式可以具有不同的指令集,它们可能是考虑到不同类型的处理任务而设计的。例如,一个指令集可能设计为如通常处理器那样用于顺序执行,而另一指令集可能设计为允许数个指令被并行执行。这样,处理器一般具有至少是第一指令集被支持的第一执行模式,以及至少第二指令集被支持的第二模式。这样的处理器一般通过执行一特定的指令或指令组从一个执行模式转移到另一模式。
现代处理器通常设计为支持多任务,即它们允许执行的几个线程在用户看来似乎是在同时被处理。这通常是在操作系统控制下在不同线程之间快速切换处理器的资源而实现的,以造成线程在同时处理的假象。这种切换在此称为上下文切换。只要发生上下文切换,处理器的寄存器的内容,标志等(称为处理器上下文)必须返回当新的线程上次被执行的时的状态。这是通过保存当前处理器的上下文,即将其保存在存储器中,并通过对新的线程恢复处理器的上下文,即从存储器寻回该上下文而作到的。在已知的处理器中,当发生上下文切换时,整个处理器的上下文被保存和恢复,因为操作系统并不知道处理器上下文的哪部分被离去的线程使用,而哪部分将由来到的线程使用。
能够在两个或多个不同执行模式之间切换的处理器中,不同模式中处理器上下文的大小可能不同。其结果可能是,当发生上下文切换时,处理器上下文的一部分不必要地被保存和存储。
例如,在能够支持并行处理的处理器中,处理器的上下文可能很大,因而在每一上下文切换时可能需要保存和恢复大量的数据。即使处理器并不总是工作在并行处理模式,并行处理模式的处理器上下文在每一上下文切换时仍将要被保存和恢复。这可能会不情愿地消耗大量的处理器时间,从而降低了任务能够被处理的比率。
本发明试图要克服以上问题。
根据本发明的第一方面,提供了一种在第一执行模式和第二执行模式之间可切换的处理器,该处理器在处于第一执行模式时具有第一处理器上下文,并在处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,其中该处理器配置为在处理器试图从一个执行模式改变为另一执行模式时将产生一个异常。
当处理器试图从一个执行模式改变到其它执行模式时,通过产生一个异常,处理器的操作系统能够保持对各执行模式正在被使用时的跟踪。这能够允许操作系统进行控制使得处理器上下文的哪些部分(包括处理器中存储单元的内容)在哪些时间被保存。当处理器试图从第一执行模式改变到第二执行模式时,或当处理器试图从第二执行模式改变到第一执行模式时,可以产生异常,或者在两种情形下都可产生异常。
例如,第二处理器上下文可能大于第一处理器上下文,并当处理器试图从第一执行模式改变到第二执行模式时,可能产生异常。这可以允许第二处理器上下文只有在绝对必要时才被保存,这可以改进整个系统的性能。
在以上情形下,处理器可以被配置使得当这种异常已经产生时,保存第二处理器上下文,或者保存第二处理器上下文不同于第一处理器上下文的部分。这可以避免在每一上下文切换时必须保存第二处理器上下文。取决于实现方式,当这种异常产生时第二处理器上下文可以被自动保存,或者可以确定在该阶段是否必须保存第二处理器上下文。例如,如果当前线程已是在第二执行模式中的最后的线程,那么可能不必保存第二处理器上下文。
在一定的环境下,例如两个或多个线程都处于第二执行模式中,当发生上下文切换时,则可能必须保存第二处理器上下文。例如,如果处理器随后切换到第二执行模式中的一个线程,且不是第二执行模式中最后的线程,则在该阶段可能必须保存第二处理器上下文。这样,处理器可以配置使得基于时间共享而执行多个线程,且处理器可被配置使得,当处理器切换到第一执行模式中的线程时,或者当处理器切换到原来是第二执行模式中的最后线程的线程时,只保存第一处理器的上下文。这时处理器可以被配置为使得,当处理器后来要进入第二执行模式以执行不同于第二执行模式中上一个线程的一个线程时,第二处理器上下文,或者第二处理器上下文不同于第一处理器上下文的部分被保存。
为了限制第二处理器上下文被保存和恢复的次数,可以限制可能在第二执行模式中的线程数。这样,处理器可以配置为使得基于时间共享执行多个线程,且在任何一时间可能处于第二执行模式中的线程数可能小于任何一时间处理器上活动的线程总数。这可以改进总的系统性能。
为了实现以上技术,处理器可以这样配置,使得当已经产生异常时,进行检验以判断引起异常的线程是否被允许进入第二执行模式。例如,只有一定的预定的线程可被允许在第二执行模式中执行,且这种检验可以包括判断引起异常的线程是否被阻挡在第二执行模式之外。
在另一例子中,处理器操作系统在任何一时间只允许有限数目的线程处于第二执行模式。这样,检验可以包括判断预定数目的其它线程是否已经处于第二执行模式。该预定数目可以大于或等于一。如果多于预定数目的线程已经处于第二执行模式,则处理器可以被配置为防止引起异常的线程进入第二执行模式,例如,通过终止该线程,或通过在第一执行模式中继续该线程的执行,或通过使该线程的执行暂停直到少于预定数目的其它线程处于第二执行模式。
这样,处理器可以这样配置,使得如果预定数目的其它线程已经处于第二执行模式,则引起异常的线程的执行被暂停直到处于第二执行模式的其它线程的数目小于预定数目。当一个线程试图从第二执行模式改变为第一执行模式时,可能产生异常,于是知道(例如通过操作系统)何时线程已经停止在第二执行模式中执行。
处理器最好配置为使得当处于第一执行模式时执行第一指令集,并当处于第二执行模式时执行第二指令集。第二指令集可以能够比第一指令集访问处理器中更大数目的存储单元(诸如寄存器)。
处理器最好能够在管理模式和用户模式之间切换,与管理模式相比用户模式具有对处理器资源受限制的访问,并当所述异常产生时,处理器从用户模式转移到管理模式。这时可以提供在管理模式下执行的异常处理程序部分以处理异常。异常处理程序部分可以是操作系统的一部分。
处理器可以包括至少一个执行单元和多个存储单元,且第一处理器上下文可以包括在第一执行模式中可访问的存储单元的内容,且第二处理器上下文可以包括执行的第二模式中可访问的存储单元的内容。在两个处理器上下文之间可以有交叉;例如,第二处理器上下文可以包含某些或全部第一处理器上下文。
处理器可以包括多个计算单元用于并行执行指令,每一计算单元具有至少一个执行单元和执行单元可访问的至少一个存储单元。在第一执行模式下第一数目的计算单元可以执行指令,并在第二执行模式下第二数目的计算单元可以执行指令。这第一和第二数目可以彼此不同;例如,第一数目可能至少是一,而第二数目可能大于第一数目。另外,第一和第二数目可以相同,且第一执行模式下可访问的存储单元数目可以不同于第二执行模式下可访问的存储单元数目。
在一个例子中,第一执行模式是标量模式,第二执行模式是并行模式,诸如VLIW模式。在另一例子中,第一和第二执行模式都是标量模式,或都是并行模式,且在两种模式下可访问不同数目的处理器存储单元。两个执行模式可以具有交叉功能;例如,一个执行模式的指令集可能包含其它执行模式的指令集的某些或全部指令。
本发明的一个重要方面在于两个处理器上下文较大者在每一上下文切换时不是必须被保存。例如,如果第二处理器上下文大于第一处理器上下文,则如果新的线程处于第二执行模式且不是处于第二执行模式中的最后的线程,在上下文切换时一般只需保存第二处理器上下文(或第二处理器上下文不同于第一处理器上下文的部分)。否则,只需保存第一处理器上下文。这样,根据本发明的第二方面,提供了可在第一执行模式和第二执行模式之间切换的处理器,该处理器当处于第一执行模式时具有第一处理器上下文,并当处于第二执行模式时具有大于第一处理器上下文的第二处理器上下文,其中处理器被配置为基于时间共享而执行多个线程,并且处理器被这样配置,使得当处理器切换到处于第一执行模式的线程时,或当处理器切换到原来是第二执行模式的最后线程的线程时,只保存第一处理器上下文。
当处理器接下来要进入第二执行模式以执行另一线程时,最好保存第二处理器上下文或第二处理器上下文不同于第一处理器上下文的部分。处理器可以这样配置,使得任何一时间可处于第二执行模式的线程数,小于任何一时间处理器上可能活动的线程总数。第一执行模式可以是一标量模式,而第二执行模式可以是一并行模式,诸如VLIW模式。
本发明的另一重要方面在于,为了限制处理器上下文必须被保存和恢复的次数,任何一时间处于具有最大上下文的执行模式中的线程总数有限制。这样,根据本发明的第三方面,提供了可在第一执行模式和第二执行模式之间切换的一种处理器,该处理器当处于第一执行模式时具有第一处理器上下文,并当处于第二执行模式时具有大于第一处理器上下文的第二处理器上下文,其中处理器被配置为基于时间共享而执行多个线程,并且处理器被这样配置,使得在任何一时间处于第二执行模式的线程数小于任何一时间处理器上可以活动的线程总数。
该处理器可以这样配置,使得当线程试图进入第二执行模式时,要进行检验以判断是否允许该线程进入第二执行模式。例如,检验可以包括判断该线程是否是被阻挡进入第二执行模式的线程,或检验可以包括判断预定数目的其它线程是否已经处于第二执行模式。在后者的情形下,处理器可这样配置,使得如果预定数目的其它线程已经处于第二执行模式,则防止试图进入第二执行模式的该线程进入第二执行模式,直到处于第二执行模式的其它线程数目小于预定的数目为止。例如,直到处于第二执行模式的其它线程数目小于预定数目之前,可以暂停试图进入第二执行模式的线程的执行。
还提供了本发明对应的方法方面,因而根据本发明第四方面,提供了操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,该方法包括当处理器试图从一个执行模式改变到其它执行模式时产生一个异常。
根据本发明的第五方面,提供了操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该方法包括执行基于时间共享的多个线程,并当执行向处于第一执行模式的线程切换时,或者当执行向原来是第二执行模式的最后线程的线程的切换时,只保存第一处理器上下文。
根据本发明的第六方面,提供了操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该方法包括执行基于时间共享的多个线程,并把任何一个时间可以处于第二执行模式中的线程数限制为小于任何一个时间处理器上可活动的线程总数。
本发明还扩展到用于在处理器上执行的对应的操作系统,于是根据本发明的第七方面,提供了一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,该操作系统包括一个异常处理程序部分,用于处理当处理器试图从一个执行模式改变到其它执行模式时所产生的一个异常。
根据本发明的第八方面,提供了一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该操作系统包括一个程序部分,用于在多个基于时间共享的线程之间进行切换执行,以及一个程序部分,用于当执行向处于第一执行模式的线程切换时,或者当执行向原来是第二执行模式的最后一个线程的线程切换时,只保存第一处理器上下文。
根据本发明的第九方面,提供了一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该操作系统包括一个程序部分,用于在多个基于时间共享的线程之间进行切换执行,以及一个程序部分,用于把任何一个时间可以处于第二执行模式中的线程数限制为小于任何一个时间处理器上可以活动的线程总数。
本发明还提供了计算机程序和计算机程序产品,用于执行任何这里所述的方法,以及计算机可读介质,其上已存储用于执行任何这里所述的方法的程序。
一个方面的特点可用于任何其它方面;处理器、方法和操作系统的特点可彼此交换适用。
现在将参照附图,只是以示例的方式,说明本发明的优选特点。


图1是实施本发明的处理器的框图;图2是实施本发明的另一处理器的框图;图3表示在处理器上执行的各线程的概念;图4表示上下文切换的原理;图5表示根据本发明的实施例,只在管理模式中可见进行模式转换方法的概念;图6表示本发明第一实施例中由异常处理程序所进行的步骤;图7表示当发生上下文切换时第一实施例中的操作系统所进行的步骤;图8表示第一实施例操作的一个例子;图9表示本发明第二实施例中由异常处理程序所进行的步骤;图10表示当发生上下文切换时第二实施例中的操作系统所进行的步骤;图11表示本发明第三实施例中由异常处理程序所进行的步骤;图12表示当由从VLIW模式返回标量模式的线程产生一异常时,由第三实施例中的操作系统进行的步骤。
实施本发明的处理器示于图1。参见图1,处理器10包括多个计算单元12,14,16。每一计算单元包括用于执行指令的一个执行单元18,20,22,寄存器文件24,26,28,它们包含当执行指令时使用的寄存器,以及控制和/或状态寄存器集30,32,34。计算单元12,14,16通过总线38连接到外部存储器36(例如随机访问存储器,RAM)。各计算单元通过接口40,42,44被连接,这些接口例如用来交换存储在寄存器文件24,26,28中的数值。处理器10还包括调度存储单元46和指令发出单元48。在操作中,用于执行的指令从调度存储单元46传送到指令发出单元48。指令发出单元48按指令类型向一个或多个计算单元12,14,16发出指令。
处理器10被设计为使用两个不同的指令集操作。这里称为标量指令集的第一指令集被设计为精简的,因而是存储有效的。这一指令集类似于通常的RISC(精简指令集计算机)处理器的指令集,并适于一般用途的应用程序。标量指令集是在称为标量模式的操作模式下执行的。在这一模式下,指令发出单元48只向第一计算单元12发出指令,且该指令只由该计算单元执行。第一计算单元12这里称为主计算单元。
第二指令集是超长指令字(VLIW)指令集,该指令集设计用于高计算吞吐量。这一指令集使用长指令字,或指令包,它们可被划分为较小的指令同时执行。VLIW指令集是在称为VLIW模式的操作模式下执行的。在这一模式下,用于执行的指令包(VLIW包)从调度存储单元46传送到指令发出单元48。指令发出单元48把指令包划分为它们的构成指令,并把一个包的指令向主计算单元12和其它计算单元14,16的一个或多个发出。计算单元14,16这里称为从属计算单元。这时已经收到属于该包的各指令的计算单元同时执行这些指令。
另一实施本发明的处理器示于图2。图2的处理器以类似于图1处理器的方式工作,所不同在于,每一计算单元包括两个执行单元。如图1的处理器中那样,在任一时间用于执行指令的计算单元数目取决于处理器是处于标量模式还是VLIW模式。图2中所示的配置称为群集,每一计算单元形成一个群。其它实施例中,每群设有三个或更多的执行单元。
参照图2,处理器50包括多个计算单元52,54,56,它们每一个包括两个执行单元58,59,60,61,62,63,以及寄存器文件64,66,68,及控制和/或状态寄存器70,73,74。计算单元52,54,56通过总线88连接到外部存储器86(例如RAM存储器)。各计算单元通过接口90,92,94连接。处理器50还包括调度存储单元96与指令发出单元98。
在操作中,用于执行的指令从调度存储单元96传送到指令发出单元98,指令发出单元98向一个或多个处理器单元52,54,56指令。当处理器处于标量模式时,只向处理单元52发出指令,而当该处理器处于VLIW模式时,向两个或多个处理单元52,54,56发出指令。在标量模式下,例如取决于指令类型,指令由执行单元58或由执行单元59处理。在VLIW模式下,并行指令可由一个处理单元内的两个执行单元同时处理。
图1和2所示的处理器10和50被设计为支持两个不同专用的模式,最好称为用户模式和管理模式。管理模式允许访问整个处理器状态,即整个处理器存储器,所有寄存器等。用户模式只允许被限制的访问处理器状态。例如,图1或2中的控制集中一定的寄存器和状态寄存器30,70只在管理模式下可访问。如果处理器试图在用户模式下进行对于这一操作模式不合法的操作,则产生异常。异常引起向管理模式的转换,并然后执行异常处理代码(使用操作系统的部分)以处理该异常。通常,操作系统运行在管理模式下,而应用程序代码运行在用户模式下。
用户模式可以同时执行几个进程(程序),每一进程可以具有一个或多个线程(子程序)。这种情形示于图3。几个线程似乎在并行操作,但实际上操作系统在线程之间快速切换处理器资源而造成同时操作的假象。这就称为时间共享。
为了在不同的线程之间共享处理器资源可以使用各种不同的时间共享技术。典型的情形是,对系统中的每一线程给出优先权。线程的分组可以具有相同的优先权。在简单的多任务技术中,操作系统允许当前的线程执行直到线程本身或者直接释放控制(即线程故意要求暂停)或者间接释放控制,例如因为线程请求访问当前由另一线程拥有的资源。当线程释放控制时,操作系统选择能够运行并切换到该线程的最高优先权线程。如果两个或多个线程都具有最高优先权,则操作系统根据内部规则选择一个。
在另一种称为抢先多任务的时间共享技术中,当另一更高优先权的线程成为可运行时,操作系统可能正在运行一个线程。然后操作系统暂停当前的线程并切换到更高优先权的线程。由于数个事件的关系,更高优先权的线程可能突然变成可运行的。例如,当前线程可能释放更高优先权线程正在等待的资源,或者可能发生中断,其结果是中断处理程序可能对更高优先权线程的操作“排除了障碍”。在对这一技术的扩展称为时间分片的技术中,操作系统规则地在不同线程之间切换,每一线程具有相同(最高)的优先权。
将要描述的实施例可使用上述任何时间共享技术,或者时间共享的任何其它形式来实现。
从执行的一个线程到另一线程的切换称为上下文切换。当发生上下文切换时,操作系统必须保存离去的线程的上下文,即该线程访问的寄存器和处理器状态其它方面的内容。然后来到的线程的上下文必须被恢复到当该线程上次被处理时它所处的状态。操作系统并不知道离去的线程原来使用的上下文的哪部分或来到的线程上下文的哪部分需要被恢复,于是通常保存/恢复的是整个的上下文。这种情形示于图4。
图4中假设有两个线程,线程A和线程B基于时间共享执行。起初,处理器执行线程A。在时间t=1处,开始从线程A切换到线程B。然后处理器停止运行线程A并进入管理模式。在管理模式中,通过向存储器36或86保存图1中各寄存器24到34的内容,或图2中64到74的内容,线程A的上下文被保存。一旦线程A的上下文已经保存,则通过以处理器上次从线程B切换时原来存储在存储器36或86中的数值(或初始值,如果线程B是第一次被执行)加载各寄存器24到34或64到74,线程B的上下文被恢复。然后在时间t=2处理器返回用户模式执行线程B。在时间t=3,开始从线程B切换到线程A。处理器停止运行线程B,进入管理模式,保存线程B的上下文,并恢复线程A的上下文。在时间t=4处理器返回用户模式执行线程A。
如上所讨论,VLIW指令集通过提供可被并行处理的指令而为高计算吞吐量设计。用于执行的指令包被这样配置,使得各组成的指令在同时执行时彼此不会冲突。在将引发冲突的情形下(例如,因为一个指令在另一指令被执行之前需要该指令可用的结果),这时冲突指令将被放入不同的指令包,且该指令包必要时将以空操作(NOP)指令被填充。
一定的处理任务,诸如数据的高速多媒体流的处理特别适合于使用VLIW指令集处理,因为数据流的不同部分可被独立地处理。然而,其它的处理任务不很适于并行处理,且结果可能是高度填充的VLIW指令包,这增加了代码量。而且,当处理器按VLIW模式操作时,它通常要消耗更多的功率,于是标量模式可能更适合在需要低功耗的情形。此外,某些通用任务可能无法在VLIW模式下执行。由于这些原因,可能希望以标量模式运行程序的某些部分。对于代码的具体部分使用标量模式还是VLIW模式的决定或者由编译器在编译时作出,或者程序员可以明确声明要使用的一种模式或另一种模式。
为了引起从标量模式向VLIW模式或相反的转换,在代码中适当的点处插入特定的指令或其它方法。诸如这里称为模式转换方法(MTM),转换被称为模式转换事件(MTE)。例如,为了引起从标量模式向VLIW模式的转换,处理器可以执行特别的转移指令,这里称为bv(转移到VLIW模式)指令,并为了从VLIW模式返回标量模式,处理器可以执行另一指令,这里称为rv(从VLIW模式返回)指令。
当处理器工作在标量模式时,只由主计算单元12或52执行指令,于是这一模式下指令可访问的寄存器限于主处理单元的寄存器。此外,由于指令集的精简性,在标量模式下寄存器文件中直接可寻址的寄存器数目,通常是寄存器文件中的寄存器总数的一个子集。反之,在VLIW模式下,指令在多个计算单元中执行,且VLIW指令通常能够直接对寄存器文件中所有寄存器寻址。结果是,VLIW上下文比标量上下文大得多。
例如,标量指令集可被设计为对最大16个寄存器寻址,这种情形下,在标量模式下需要保存的上下文(称为标量上下文)由这些16个寄存器加上诸如控制和状态寄存器30,70等其它处理器状态组成。在VLIW模式下指令集可被设计为对32个寄存器寻址,并可以有最多达32计算单元,每一个同时执行一个或多个指令。这种情形下,在VLIW模式下需要保存的上下文(称为VLIW上下文)潜在总数为1024个寄存器加上处理器状态其它方面,诸如控制和状态寄存器30,70及状态寄存器32,34,72,74组成。
如果VLIW上下文切换快速发生,则保存和恢复VLIW上下文能够消耗大量的处理时间,从而降低了有效的处理器性能。
在本发明的优选实施例中,引起从标量模式向VLIW模式转换的模式转换方法不允许在用户模式下执行,于是如果任何线程试图在用户模式下执行这种模式转换方法,则产生一个异常。这种异常引起处理器进行向管理模式的转换,并然后操作系统处理该异常。这一机制允许操作系统以两种不同的方式管理上下文转换。首先,它允许操作系统只在确实必要时而不是在每一上下文切换时保存和恢复VLIW上下文。这是通过只有当VLIW模式随后由另一线程进入时才保存VLIW上下文而实现的。其次,它允许操作系统监视和/或控制哪一个线程在VLIW模式下工作。
使模式转换方法只在管理模式下可见的概念示于图5。在图5中,对应于图4中的线程A和B的两个线程A和B由处理器基于时间共享执行。假设线程B包含模式转换方法。起初处理器执行线程A。在时间t=1,开始从线程A向线程B切换。然后处理器停止运行线程A并进入管理模式。在管理模式下,线程A上下文的某些或全部被保存,且线程B上下文的某些或全部被恢复。然后处理器在时间t=2返回用户模式执行线程B。在时间t=3,在线程B中遇到模式转换方法。由于在用户模式下模式转换方法不被允许,故产生一个异常且处理器进入管理模式。在管理模式下执行异常处理程序以处理该异常。在时间t=4,处理器再次进入用户模式并继续执行线程B,但是现在处于其它模式。在时间t=5,开始从线程B向线程A切换。处理器停止运行线程B,进入管理模式,保存线程B的某些或全部上下文,并恢复线程A的某些或全部上下文。在时间t=6,处理器返回用户模式以执行线程A。
第一实施例在第一实施例中,所有在处理器上运行的线程能够进入VLIW模式。当线程试图进入VLIW模式时(通过模式转换方法),产生一异常,且异常由操作系统处理。作为异常处理的一部分,如果必要,使用VLIW模式的上一个线程的VLIW上下文被保存。
现在参照图6就7说明第一实施例的操作。图6表示当由试图进入VLIW模式的线程产生异常时异常处理程序所进行的步骤,图7表示当上下文切换发生时由操作系统所进行的步骤。在这一实施例中,从VLIW模式向标量模式的转换取决于所选择的实现方式,可能引起或不引起异常产生。
参见图6,在步骤100,由一个线程产生了异常,该线程处于用户模式而试图执行会引起从标量模式向VLIW模式转换的模式转换方法。这一异常引起处理器进入管理模式。在步骤101,判断产生该异常的线程是否也是已处于VLIW模式的最后的线程。这是通过参照由操作系统保持的处于VLIW模式的最后线程的记录而做到的。如果当前线程也是已处于VLIW模式的最后的线程,那么没有必要恢复当前线程的VLIW上下文,于是没有必要保存当前VLIW上下文。
如果当前线程不是已处于VLIW模式的最后的线程,则在步骤102,通过把寄存器的内容保存到存储器而保存处理器的当前VLIW上下文。当前VLIW上下文是作为已处于VLIW模式的最后线程的VLIW上下文被保存的。这是通过参照已处于VLIW模式的最后线程的记录,并把保存的VLIW上下文与该线程关联而做到的。在步骤104,通过从存储器中检索与该线程关联的寄存器内容,当前线程的VLIW上下文被恢复。在步骤106,处理器更新其哪一个线程是原来处于VLIW模式的最后线程的记录,以指示当前线程是处于VLIW模式的最后线程。
在步骤108,设置模式位S。模式位S是在图1或2中主计算单元12,52的控制和状态寄存器30,70之一中的位,并只能在管理模式下可访问。当设置了这一模式位时,就允许在用户模式下执行模式转换方法而没有异常产生。在步骤110,处理器从异常返回正在执行的线程中在它离去时的那点。由于现在设置了模式位,原来引起异常的MTM现在能够被执行而不会引起异常。
实际上,由于VLIW上下文是远大于标量上下文的超集,在步骤102和104只有不同于标量上下文的VLIW上下文部分需要被保存和恢复。
参见图7,在步骤120,为了从一个线程向另一线程切换操作系统资源由操作系统起动上下文切换。在步骤122,模式位S被复位。这是为了保证如果下一个线程试图进入VLIW模式,则将产生异常。在步骤124,保存当前线程的标量上下文,并在步骤126恢复下一个线程的标量上下文。在步骤128,判断下一个线程是否处于VLIW模式。这是通过参照称为V位的一个位而做到的,这个位图1还中主计算单元12,52的控制与状态寄存器30,70之一中的一个位。V位是在步骤126中被恢复的下一个线程的标量上下文的部分。如果这一位被设置,则下一个线程处于VLIW模式,并如果它被复位,则下一个线程处于标量模式。如果下一个线程处于标量模式,则没有必要恢复该线程的VLIW上下文,并于是处理器在步骤138切换到下一个线程,只有该线程的标量上下文被恢复。
在步骤128,判断出下一个线程处于VLIW模式,然后在步骤130判断下一个线程是否是原来处于VLIW模式的最后的线程。这是通过参照由操作系统保持的处于VLIW模式的最后线程的记录做到的。如果下一个线程也是处于VLIW模式的最后的线程,则当前处理器VLIW上下文也是下一个线程的VLIW上下文,于是下一个线程的VLIW上下文不必恢复。这种情形下,处理器在步骤138切换到下一个线程,只是该线程的标量上下文被恢复。然而如果下一个线程原来不是处于VLIW模式最后的线程,则必须恢复下一个线程的VLIW上下文。这种情形下,在步骤132,当前处理器VLIW上下文(或VLIW上下文不同于标量上下文的部分)被保存,并与处于VLIW模式的最后线程相关;在步骤136,恢复下一个线程的VLIW上下文(或VLIW上下文不同于标量上下文的部分);并在步骤136,处理器通过记录下一个线程处于VLIW模式而更新其处于VLIW模式的最后线程的记录。然后在步骤138,处理器切换到下一个线程。
在图6和7中,假设模式位S被触发而允许处理器在从由MTM所引起的异常返回时,进行向VLIW模式的转换。另外,异常处理程序本身可能引起处理器向VLIW模式转换,并返回紧接在MTM之后正在执行线程的点。也可以使用其它适当的技术用于防止异常重复产生并引起转换。
从以上说明会注意到,只有当满足两个条件时才保存处理器的VLIW上下文首先,下一个线程处于VLIW模式,而其次是下一个线程不是已处于VLIW的最后线程。这样,不是在每一上下文转换而只有当确实需要时才保存处理器的VLIW。
第一实施例操作的一个例子示于图8。图8中,所有线程起初都处于标量模式。处理器起初执行线程A。在时间t=1处理器停止允许线程A并进入管理模式。在管理模式下,线程A的标量上下文被保存,而线程B的标量上下文被恢复。然后在时间t=2处理器返回用户模式在标量模式下执行线程B。在时间t=3,在线程B中遇到转移到VLIW模式的指令,并作为结果处理器进入管理模式。在管理模式下,使用VLIW模式的最后线程的VLIW上下文被保存,且线程B的VLIW上下文被恢复。在时间t=4处理器再次进入用户模式并继续执行线程B,但现在是在VLIW模式下。在时间t=5,处理器停止运行线程B,进入管理模式,保存线程B的标量上下文,并恢复线程C的标量上下文。在时间t=6,处理器返回用户模式在标量模式下执行线程C。在时间t=7,处理器停止运行线程C,进入管理模式,保存线程C的标量上下文,并恢复线程A的标量上下文。在时间t=8处理器返回用户模式以执行线程A。在时间t=9,在线程A中遇到转移到VLIW模式的指令,这引起处理器进入管理模式。在这点,线程B的VLIW上下文被保存,且恢复线程A的VLIW上下文。在时间t=10,处理器进入用户模式并继续执行线程A,但这是在VLIW模式下。
在图8所示的例子中,线程B的VLIW上下文只在线程A进入VLIW模式的那一点被保存。然而如果在线程A中没有出现模式转换方法,则当处理器切换回线程B时,处理器的VLIW上下文将仍然是线程B的上下文,因为没有其它线程会改变这一上下文。这样,在这种情形下将没有必要保存或恢复线程B的VLIW上下文,并因而否则在保存和恢复VLIW上下文要耗用的时间就被节省了下来。
第二实施例在本发明的第二实施例中,只允许一定的线程访问VLIW模式,且所有其它线程被禁止进入VLIW模式。在一个例子中,只有一个线程被允许访问VLIW模式。这可以是管理模式中的线程,或用户模式中的线程。在另一例子中,允许规定的一定数目的线程访问VLIW模式。通过限制被允许访问VLIW模式的线程的数目,能够限制必须进行的VLIW上下文切换的数目,或能够消除必须进行VLIW上下文切换。
现在将参照图9和10说明第二实施例的操作。图9表示当线程试图进入VLIW模式而产生异常时由异常处理程序所进行的步骤,而图10表示当发生上下文切换时由操作系统所进行的步骤。在图9和10中假设只有预定的线程被允许访问VLIW模式。在这一实施例中,取决于所选择的实现方式,从VLIW模式向标量模式的转换可能引起或不引起异常的产生。
参照图9,在步骤140由于线程试图在用户模式下处理模式转换而产生异常。这一异常引起处理器进入管理模式。在步骤142判断该线程是否被允许访问VLIW模式。在这例子中,只有一个线程被允许访问VLIW模式,于是如果引起了异常的线程不是该线程,则在步骤144采取适当的校正行动。这行动可能包括终止引起异常的线程,或如果可能在标量模式下继续该线程。
如果引起异常的线程被允许进而VLIW模式,则在步骤146设置模式位S,并在步骤148处理器从异常返回线程中此前它离开的那一点。由于设置了模式位S,本来引起异常的模式转换方法可被执行而不会引起异常。这样线程作出向VLIW模式的转换并继续在该模式下执行。
参见图10,在步骤150,为了从一个线程向另一线程切换处理器资源,由操作系统起动上下文切换。在步骤152复位模式位S。这是为了保证如果下一个线程试图进入VLIW模式,则将产生异常。在步骤154,保存当前线程的标量上下文,并在步骤156恢复下一个线程的标量上下文。在步骤158,处理器切换到下一个线程。
图9和10中,假设只有一个线程允许进入VIW模式,于是从来也就不需要保存VLIW上下文。在其它实现方式中,类似于图6和7所示的方式,也可以允许一定的其它线程访问VLIW上下文,于是必要时,采取保存VLIW上下文的步骤。这种情形下,虽然有时保存VLIW上下文是必要的,但必须的次数被减少了,因为限制了可处于VLIW模式的线程数。
第三实施例本发明的第三实施例中,操作系统在任何一个时间只允许一个线程工作在VLIW模式。这一技术能够被视为“令牌传送”技术,其中令牌能够从一个线程传送到另一线程,但是只有具有令牌的线程能够进入VLIW模式。这一技术能够降低处理器的VLIW上下文必须被保存和恢复的次数。
现在将参照图11和12说明第三实施例的操作。图11表示当线程试图进入VLIW模式而产生异常时由异常处理程序所采取的步骤,而图12表示当线程从VLIW模式返回标量模式而产生异常时由操作系统所采取的步骤。在这一实施例中,当发生上下文切换时所采取的步骤与图10中所示的步骤类似。
参见图11,在步骤200通过在用户模式下执行试图处理MTM的线程而产生异常。这一异常引起处理器进入管理模式。在步骤202,判断是否有另一处于VLIW模式的线程。这是通过参照图1或2中的主计算单元12,52的控制和状态寄存器30,70中的一个标志(称为VLIW标志)而作出的。如果有另一处于VLIW模式的线程,则防止当前线程进入VLIW模式,直到处于VLIW模式的该线程已经退回到标量模式为止。在步骤204,当前线程列入VLIW模式的队列;在步骤206,暂停当前线程的执行;并在步骤208,操作系统切换到下一个线程,而不是返回当前线程。在其它的实现方式中,如果可能,代替当前线程暂停操作,而是当前线程继续处于标量模式,或终止当前线程。
如果在步骤202判断没有其它线程处于VLIW模式,则在步骤210判断当前线程是否也是已处于VLIW模式的最后线程。这是通过参照由操作系统保持的处于VLIW模式的最后线程的记录而作出的。如果当前线程也是已处于VLIW模式的最后线程,那么没有必要保存和恢复VLIW上下文。如果当前线程不是已处于VLIW模式的最后线程,那么在步骤212,处理器的当前VLIW上下文(或不同于标量上下文的VLIW上下文的部分)被保存,并使这一上下文与处于VLIW模式的最后线程的VLIW上下文相关联。在步骤214,当前线程的VLIW上下文(或不同于标量上下文的VLIW上下文的部分)被恢复。在步骤216,处理器更新哪一个线程原来是处于VLIW模式的最后线程的记录,以指示当前线程是处于VLIW模式的最后线程。在步骤218,设置VLIW标志,指示有一线程处于VLIW模式。在标志220,设置模式位S,并在步骤222处理器从异常返回执行的线程在其当初离开时的那一点。由于设置了模式位,原来引起异常的MTM现在能够被执行而不会引起异常。
在第三实施例中,从VLIW模式到标量模式的转换也引起了异常的产生。这样,操作系统能够判断何时一个线程已经停止按VLIW模式执行,于是向另一线程给出允许进入VLIW模式。当这种异常产生时所采取的步骤示于图12。
参见图12,在步骤230由于执行的线程试图在用户模式下执行“从VLIW模式返回”的指令而产生异常。在步骤232判断是否有处于VLIW模式队列的线程。如果没有处于该队列的线程,那么在步骤234,复位VLIW标志,指示没有线程处于VLIW模式。在步骤235,设置模式位以允许“从VLIW模式返回”在用户模式下被执行,并在步骤236,处理器从异常返回到线程中在其离开的哪一点。
如果在步骤232,判断出有一线程处于VLIW模式的队列,则在步骤238保存当前线程的整个上下文(即,即有标量上下文又有VLIW上下文)。在步骤240,从队列中除去VLIW队列中的下一个线程,并在步骤242,恢复该线程的整个上下文。在步骤244,处于VLIW模式的最后线程的记录被更新以指示下一个线程。在步骤246,设置模式位S,并在步骤248,处理器返回下一个线程中当该线程试图进入VLIW模式时在其离开的哪一点。
作为代替使用模式位S启用和禁止“从VLIW模式返回”指令,为此能够提供分开的模式位R。这种情形下,步骤235中,模式位R将被设置而模式位S将被复位。在上下文切换时两种模式位都将被复位。
在第三实施例中,当发生上下文切换时所采取的步骤与图10所示的步骤相同。由于在一个时间只允许一个线程访问VLIW模式,因而当发生上下文切换时不必保存VLIW上下文。在另一种实现方式中,在一个时间允许预定数目的线程进入VLIW模式。在这种实现方式中,在上下文切换时VLIW上下文可能需要被保存。这能够按图7所示的方式完成。
在第三实施例的一种变形中,在一个(或另一预定数目的)线程处于VLIW模式时,对上下文切换作出标记。在这一变形中,当设置了VLIW标志时,操作系统防止上下文切换发生,于是VLIW上下文可能需要被保存的时间是当线程第一次进入VLIW模式时。当线程试图进入VLIW模式而产生异常时所采取的步骤与图6所示的步骤相同。
虽然以上说明通过示例的方式涉及了具有操作的标量模式和VLIW模式的处理器,但是本发明能够用于具有两个或多个操作模式的任何处理器,其中一种模式具有不同于其它模式的上下文,并具体来说其中一种模式具有实质的上下文而另一个具有有限的上下文。可以是一个模式或两个模式都是标量模式或并行模式。并行模式或多并行模式不必是基于VLIW的,而可以是其中两个或多个指令基本上是被并行处理任何模式,例如通过使用指令级并行性的某种形式。
实施本发明的处理器可以作为处理器“核”包含在高度集成的“芯片上系统”(SOC)中,用于多媒体应用程序,网络例行程序,可视化移动电话,智能化汽车,数字电视,语音识别,3D游戏,等等。
应当理解到,以上只是以示例的方式对本发明进行了说明,能够在本发明的范围内作出细节的修改。
在图4中,各附图标记的具体含义如下A. 运行线程A 1.停止运行APA.保存A的上下文B. 运行线程B 2.开始运行BRB.恢复B的上下文3.停止运行BPB.保存B的上下文4.开始运行ARA.恢复A的上下文在图5中,各附图标记的具体含义如下A. 运行线程A1.停止运行A PA.保存A的上下文B. 运行线程B2.开始运行B RB.恢复B的上下文3.MTEPB.保存B的上下文4.返回线程B RA.恢复A的上下文5.停止运行B6.开始运行A在图8中,各附图标记的具体含义如下A.运行线程A 1.停止线程AB.运行线程B 2.开始线程BC.运行线程C 3.MTEPA.保存A的上下文4.返回线程BPB.保存B的上下文5.停止线程BPC.保存C的上下文6.开始线程CRA.恢复A的上下文7.停止线程CRB.恢复B的上下文8.开始线程ARC.恢复C的上下文9.MTEPVL.保存VLIW上下文到最后VLIW线程10.返回线程ARVB.恢复B的VLIW上下文PVB.保存B的VLIW上下文RVA.恢复A的VLIW上下文
权利要求
1.一种在第一执行模式和第二执行模式之间可切换的处理器,该处理器在处于第一执行模式时具有第一处理器上下文,并在处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,其中该处理器配置为在处理器试图从一个执行模式改变为另一执行模式时将产生一个异常。
2.根据权利要求1的处理器,其中第二处理器上下文大于第一处理器上下文,并当处理器试图从第一执行模式改变到第二执行模式时,产生异常。
3.根据权利要求2的处理器,其中处理器被配置使得当所述异常已经产生时,保存第二处理器上下文,或者保存第二处理器上下文不同于第一处理器上下文的部分。
4.根据权利要求2或3的处理器,其中处理器被配置使得执行基于时间共享的多个线程,且处理器被配置使得,当处理器切换到处于第一执行模式中的线程时,或者当处理器切换到原来是第二执行模式中最后的线程的线程时,只保存第一处理器的上下文。
5.根据权利要求4的处理器,其中当处理器接下来进入第二执行模式以执行不同于第二执行模式中上一个线程的一个线程时,第二处理器上下文,或者第二处理器上下文不同于第一处理器上下文的部分被保存。
6.根据权利要求2到5的任何之一的处理器,其中处理器被配置为使得执行基于时间共享的多个线程,且在任何一时间可能处于第二执行模式中的线程数小于任何一时间处理器上可能活动的线程总数。
7.根据权利要求6的处理器,其中处理器被这样配置,使得当已经产生异常时,进行检验以判断引起异常的线程是否被允许进入第二执行模式。
8.根据权利要求7的处理器,其中检验包括判断该线程是否是被阻挡在第二执行模式之外的线程。
9.根据权利要求7的处理器,其中检验包括判断预定数目的其它线程是否已经处于第二执行模式。
10.根据权利要求9的处理器,其中处理器被这样配置,使得如果预定数目的其它线程已经处于第二执行模式,则引起异常的线程的执行被暂停直到处于第二执行模式的其它线程的数目小于预定数目为止。
11.根据以上任何权利要求的处理器,其中处理器配置为使得当处于第一执行模式时执行第一指令集,并当处于第二执行模式时执行第二指令集。
12.根据以上任何权利要求的处理器,其中处理器能够在管理模式和用户模式之间切换,与管理模式相比用户模式具有对处理器资源受限制的访问,并当所述异常产生时,处理器从用户模式转移到管理模式。
13.根据以上任何权利要求的处理器,处理器包括至少一个执行单元和多个存储单元,且第一处理器上下文包括在第一执行模式中可访问的存储单元的内容,且第二处理器上下文包括在第二模式中可访问的存储单元的内容。
14.根据以上任何权利要求的处理器,处理器包括多个计算单元用于并行执行指令,每一计算单元具有至少一个执行单元和执行单元可访问的至少一个存储单元。
15.根据以上任何权利要求的处理器,其中第一执行模式是一标量模式,而第二执行模式是一并行模式。
16.一种可在第一执行模式和第二执行模式之间切换的处理器,该处理器当处于第一执行模式时具有第一处理器上下文,并当处于第二执行模式时具有大于第一处理器上下文的第二处理器上下文,其中处理器被配置为基于时间共享而执行多个线程,并且处理器被这样配置,使得当处理器切换到处于第一执行模式的线程时,或当处理器切换到原来是第二执行模式中最后的线程的线程时,只保存第一处理器上下文。
17.根据权利要求16的处理器,其中当处理器接下来进入第二执行模式以执行另一线程时,保存第二处理器上下文或第二处理器上下文不同于第一处理器上下文的部分。
18.根据权利要求16或17的处理器,其中处理器这样配置,使得任何一时间可处于第二执行模式的线程数,小于任何一时间处理器上可能活动的线程总数。
19.根据权利要求16到18的任何处理器,其中第一执行模式是一标量模式,而第二执行模式是一并行模式。
20.可在第一执行模式和第二执行模式之间切换的一种处理器,该处理器当处于第一执行模式时具有第一处理器上下文,并当处于第二执行模式时具有大于第一处理器上下文的第二处理器上下文,其中处理器被配置为基于时间共享而执行多个线程,并且处理器被这样配置,使得在任何一时间处于第二执行模式的线程数小于任何一时间处理器上可以活动的线程总数。
21.根据权利要求20的处理器,其中该处理器这样配置,使得当线程试图进入第二执行模式时,要进行检验以判断是否允许该线程进入第二执行模式。
22.根据权利要求21的处理器,其中检验包括判断该线程是否是被阻挡进入第二执行模式的线程,
23.根据权利要求21的处理器,其中检验包括判断预定数目的其它线程是否已经处于第二执行模式。
24.根据权利要求23的处理器,其中处理器样配置,使得如果预定数目的其它线程已经处于第二执行模式,则防止试图进入第二执行模式的该线程进入第二执行模式,直到处于第二执行模式的其它线程数目小于预定的数目为止。
25.操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,该方法包括当处理器试图从一个执行模式改变到其它执行模式时产生一个异常。
26.操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该方法包括执行基于时间共享的多个线程,并当执行向处于第一执行模式的线程切换时,或者当执行向原来是第二执行模式的最后线程的线程切换时,只保存第一处理器上下文。
27.操作处理器的一种方法,处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该方法包括执行基于时间共享的多个线程,并把任何一个时间可能处于第二执行模式中的线程数限制为小于任何一个时间处理器上可能活动的线程总数。
28.一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有不同于第一处理器上下文的第二处理器上下文,该操作系统包括一个异常处理程序部分,用于处理当处理器试图从一个执行模式改变到其它执行模式时所产生的一个异常。
29.一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该操作系统包括一个程序部分,用于在多个基于时间共享的线程之间进行切换执行,以及一个程序部分,用于当执行向处于第一执行模式的线程切换时,或者当执行向原来是第二执行模式的最后一个线程的线程切换时,只保存第一处理器上下文。
30.一种用于处理器的操作系统,该处理器可在第一执行模式和第二执行模式之间切换,并当处于第一执行模式时具有第一处理器上下文,而当处于第二执行模式时,具有大于第一处理器上下文的第二处理器上下文,该操作系统包括一个程序部分,用于在多个基于时间共享的线程之间进行切换执行,以及一个程序部分,用于把任何一个时间可能处于第二执行模式中的线程数限制为小于任何一个时间处理器上可能活动的线程总数。
全文摘要
公开了可在第一执行模式(诸如标量模式)和第二处执行模式(诸如VLIW模式)之间切换的一种处理器。该处理器当处于第一执行模式时具有第一处理器上下文,当处于第二执行模式时具有不同于第一处理器上下文的第二处理器上下文。当处理器试图从一个执行模式改变到另一执行模式时,处理器产生一异常。当处理器切换到第一执行模式的执行线程时,或者当处理器切换到原来是第二执行模式的最后线程的执行线程时,只保存第一处理器上下文。该处理器可这样配置,使得在任何一时间可能处于第二执行模式的线程数小于任何一时间在处理器上可能活动的线程总数。
文档编号G06F9/46GK1384431SQ0210510
公开日2002年12月11日 申请日期2002年2月20日 优先权日2001年2月20日
发明者罗伯特·A·惠顿 申请人:斯罗扬有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1