CN1245922A - 有时间片任务切换能力的前后关系控制器及其应用处理器 - Google Patents
有时间片任务切换能力的前后关系控制器及其应用处理器 Download PDFInfo
- Publication number
- CN1245922A CN1245922A CN99103959A CN99103959A CN1245922A CN 1245922 A CN1245922 A CN 1245922A CN 99103959 A CN99103959 A CN 99103959A CN 99103959 A CN99103959 A CN 99103959A CN 1245922 A CN1245922 A CN 1245922A
- Authority
- CN
- China
- Prior art keywords
- context
- processor
- timeslice
- instruction
- controller
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
在处理器中用以管理多任务处理的一种前后关系控制器,以及运行这种前后关系控制器的一种方法。一个实施例中,前后关系控制器中包括:(1)一个时间片指令计数器,它对关于一个给定的后台任务所执行的许多指令进行计数;和(2)一个后台任务控制器,当执行的指令计数等于动态可编程时间片值时,它循环地执行对应于另一个后台任务的前后关系。
Description
可相互参考的相关专利申请:
序列号 | 名称 | 发明人 | 申请日期 |
60/077,454 | Event-driven And Cyclic ContextController And Processor EmployingThe Same | Diepstraten等人 | 1998.03.10 |
60/077,461 | Context Controller Having Status-based Background Task ResourceAllocation Capability and ProcessorEmploying the Same | Diepstraten等人 | 1998.03.10 |
60/077,384 | Context Controller Having AutomaticEntry to Power Saving Mode andProcessor Employing the Same | Diepstraten等人 | 1998.03.10 |
60/077,406 | Context Controller Having Context-specific Event Selection Mechanismand Processor Employing the Same | Diepstraten | 1998.03.10 |
60/077,575 | Context Controller Having Event-Dependent Vector Selection andProcessor Employing the Same | Diepstraten等人 | 1998.03.10 |
上面列出的专利申请共同地授让于本发明,它们引入在此作为参考,如同以它们的整体性复现在这里。
本发明要求美国专利申请临时序列号No.60/077,469,1998年3月10日申请,名称为“Context Controller Having Instruction-basedTime Slice Task Switching Capability And Processor Employing TheSame(具有基于指令的时间片任务切换能力的前后关系控制器及应用它的处理器)”的权益,与本发明一起转让,并引入在此作为参考。
一般地,本发明涉及计算机处理器,更具体地,涉及具有基于指令的时间片切务任换能力的前后关系控制器及应用此前后关系(context)控制器的处理器。
在通用计算机的处理器以及用作嵌入式控制器的处理器方面,典型地通过编程来处理许多并存的任务。这些任务中的一个子集响应于特定的、外来的事件必须及时地执行,而对于这些任务的其余部分可以不受严格、实时的约束加以执行。为了应用单一的数据通路来处理两种任务子集,这类处理器需要一种高效率的机构对外来事件快速地响应,而当没有外来事件正在处理时容许进行非实时的处理。
对于事件响应应用的主要机理为程序中断,它在50年代中期初始地得到应用。过去40年中,极大部分的处理器结构中包括有程序中断装置,当发生外来事件时,它暂停执行“后台”任务而激活“前台”任务的执行。每次程序中止通常称为“中断”,它在对一个合适的事件作出断定后(适当地同步于处理器的指令流),引起处理器的执行状态进入可逆转的改变。
50年代后期开发出的优先中断是对程序中断装置的一种普通的强化。在由处理器支持的优先中断中,对于许多的事件(中断请求)信号指配以静态的或动态的独立优先权。对于处理器执行状态中可逆转的改变,与这些中断请求信号之每一个相关联的是一个唯一地可识别的有结果状态。当激活中断状态变化时,每次发生的优先中断选择出在此时与断定的最高优先权中断请求相关联的结果状态。
在处理器的程序执行状态中,实现可逆转改变的基本动作是将已中断的程序的执行地址(以及诸如条件码之类隐性的指令间状态)存储起来,并在与导致中断的事件相关联的程序地址上开始中断处理。这个程序地址通常是从称为中断向量的预定的存储单元上得到的。在中断处理过程的结束处,恢复所存储的执行地址(以及可能有的状态值),容许已中断的程序在中断点上重新开始执行。在大多数中断处理过程中,必需要先存储下并随后恢复出附加的处理器状态,借以实现必需的运行来响应此中断。这种附加状态基本上为处理器寄存器而不是程序计数器的存储信息。
对一个堆栈或专用存储器块往来地存储和恢复寄存器信息,会耗费大量的时间。所以,在60年代中期,依靠集成电路来开始减小硬件的成本和尺寸,一些处理器中配置了多个寄存器集。或是通过硬件的中断支持,或是通过软件的中断处理,借此选择不同的寄存器集,可使中断响应快得多,免除了对主存储器往来地存储和恢复寄存器信息的开销。
多寄存器集(multiple register set)概念在1970年引入的IBM***/7上达到了它的现代化形式。***/7对于每个中断级别有一个专用的、硬件选择式寄存器集,并在每个集内包括有一个存储器来存储执行地址(程序计数器的值),当该中断级别被更高优先级别上的中断要求抢先处理时,已降低的中断的前后关系切换时间将进一步降低。结果,中断的前后关系切换时间为800ns,中断的返回时间为400ns,对于应用1969年技术制造的16bit小型计算机来说,这两者的速度确实是格外地快的。该***/7在动态中断分配上也是抢先的,那里,由每个中断源使用的优先级别依靠软件设定,并可在***运行期间予以改变。
此寄存器集加程序计数器技术的最终统一,容许诸事件在它们的最后执行地址上激活处理过程,而不是要求它们总是应用中断向量地址作开始。对于控制I/O装置、数据通信和网络协议,以及依靠通信状态设备规定的其它处理来说,远有重大益处,因为状态设备可以应用指令地址和(隐含性)状态寄存器两方面的级别程序计数器予以实现。这样,不仅免除了对独立的状态寄存器的需求,而且免除了根据状态寄存器中的数值来调度路径以选择合适的处理路径的开销。实际上,寄存器集加程序计数器的结构对于普通由操作***软件支持的“任务”或“执行线程”概念提供了直接的硬件支持。
应用这种技术并结合以预定实施I/O控制状态设备所开发的最初的机器是“Alto”实验性个人计算机,它是由Charles Thacker 1972年于Xerox Palo Alto研究中心设计的。自70年代早期以来,已开发出这类中断和前后关系切换机能的许多变型,应用于单片微计算机和微处理器。然而,这些变型中没有一个引入一种根本上新的机能,以用于对外来事件作出响应而快速地进行前后关系切换。
在高性能的***中,往往可以专门以(一个或多个)处理器应用于I/O控制和/或外来事件处理。然而,如果应用中央处理器中所用的、那样类似的技术来实施,则这些I/O处理器的利用率显得太低。因为事实上对于具体的电路技术而言,用于实现处理器数据通路的逻辑器件,比之用于实现主存储器的存储器件,在运行速度上要快得多,而逻辑器件和存储器件两者比之任何附属的***部件,又能支持更高的数据带宽。
60年代期间,对于要求有多I/O控制器的高性能***结构,开发出一种技术,在许多的控制器功能之间共享单一条数据通路,即使那些功能在逻辑上不相交也这样。该技术应用单一条物理数据通路和指令译码器,在轮流的基础上处理许多逻辑处理器的指令流。对于每个逻辑处理器只是专用的资源是保持其执行状态(程序计数器和寄存器数值)的存储量。对于处于顺序循环基础上的每一个逻辑处理器,控制电路可执行一个预定数目的指令(通常为一条指令)。该控制电路对于不同的逻辑处理器,在诸指令周期之间对存储的执行状态中哪一个可以访问该数据通路作出改变。这一技术由Seymour Cray于60年代早期首先应用,他在“控制数据公司(CDC)”的机型6600上使用了单一条共享的数据通路来实现10个I/O控制器(称为***处理器或“PPU”)。
应当指出,这种逻辑处理器状态切换发生在严格的时间基础上,而不对外来事件作响应。确实,Control Data 6600型PPU的一些后继产品在它们的逻辑处理器上实现了一种优先中断方案。新近,共享技术的这种数据通路已应用于中央处理器,它在那里称为“共享资源的多处理”。在此场合下,从不同的CPU任务或程序中来的许多独立的指令流进行交织以降低流水线的依赖性,由之改善了超标量数据通路的资源利用率。
因此,本技术领域内需要一种方法,用于组建、分配和管理具有更一般的灵活性的前后关系。
为了克服先有技术中上述的缺点,本发明提供出一种前后关系控制器,用以管理处理器中的多任务处理,并提供出运行这种前后关系控制器的一种方法。在一个实施例中,前后关系控制器包括:(1)一个时间片(Slice)指令计数器,它对关于给定的后台任务所执行的许多指令进行计数;(2)一个后台任务控制器,当执行的指令数目等于一个动态可编程的时间片值时,它循环地执行对应于另一项后台任务的一个前后关系。
所以,本发明引入了宽广的概念来提供出可变的、基于指令的时间片(可把它看作是“指令片”)多任务处理,其中,在执行后台任务期间时间片数值(在其分配到的时间片内关于每个后台任务要执行的指令数目)保持完全的可编程。事实上,就本发明的目的而言,“动态可编程”定义为是在***初始化后的可编程。又就本发明的目的而言,“前后关系”定义为在使处理器恢复至给定状态中要应用的全部处理器状态信息(或者它的任何子集,以及诸如寄存器数值)。
本发明的一个实施例中,时间片指令计数器最初包含有动态可编程时间片值,作为对于给定的后台任务一个时间片的开始;当针对给定的后台任务执行指令时,时间片指令计数器的数目便减少。另外的方法中,时间片指令计数器可以初始化于不同的值上,并使之朝向动态可编程时间片值作计数。当在第一种场合下时间片指令计数器内包含的值达到0,或者在第二种场合下等于动态可编程时间片值时,后台任务控制器便被告知切换至另一个后台前后关系上。
本发明的一个实施例中,当所有后台任务均暂停无效时,前后关系控制器将处理器置入空闲状态。在要示例和叙述的一个实施例中,处理器在空闲状态期间仍准备好对事件的发生起响应。
本发明的一个实施例中,后台任务控制器响应于特定的前台任务,通过转向软件可选择存储单元,能适应于激活一个前后关系。借助于容许变更特定的前台任务的进入点,能建立起一种状态机能,其中,应用于前后关系激活的初始执行地址也起状态指示器的作用,可使前台任务去执行事件的功能,达到它的完成。当然,同样的状态机能处理可针对后台任务的激活而发生。
本发明的一个实施例中,处理器中还包括一个前台任务控制器,它根据优先权并且响应于事件来激活对应于前台任务的前后关系,由后台任务控制器循环地激活对应后台任务的前后关系,后台任务服从于对应于前台任务的前后关系的激活。“事件”定义为一种激励,能使前后关系控制器作出响应而从一个前台任务切换到另一个上。因此,任务可划分成前台任务和后台任务,并应用显著地不同的准则来分配处理器资源。当然,前台任务也可以在时间片基础上多半依据指令计数进行处理。
本发明的一个实施例中,动态可编程时间片数值包含在处理器的一个寄存器内。另一种方法,动态可编程时间片数值可包含在位于处理器外面的一个存储单元中,代价是处理速度减小。
本发明的一个实施例中,在处理器上执行的应用任务可对动态可编程时间片数值作出编程。另一种方法。对动态可编程时间片数值的编程可仅仅限制于操作***,条件是时间片数值的安全性具有优先权。
上面粗略地勾划了本发明的优选实施例和另外的特性,从而,本技术领域内的熟练人员可以更好地理解后面关于本发明的详细描述。此后会说明本发明的附加特性,它们形成了本发明专利要求的主题。本技术领域内的熟练人员知道,他们能容易地应用所公开的概念和具体的实施例作为基础,设计或修改其它一些结构来实现与本发明相同的目的。本技术领域内的熟练人员又理解到,此类等效结构偏离不开本发明最宽广形式下的精神实质和范畴。
为了更全面地了解本发明,现在结合下列附图作出随后的说明。附图中:
图1示明一种状态转移图,表明从个别的前后关系观点看的本发明中一个处理器之实施例的工作;
图2示明一个运行图,举例了处理器以5个前台前后关系和3个后台前后关系工作时可能的处理流程、优先和前后关系间相互通信的情况;
图3举例示明在应用本发明一个实施例的处理器中执行的、对每个前后关系控制和状态寄存器的访问软件;
图4示明引用了本发明的前后关系控制器一个实施例的典型处理器或I/O控制器的一个***图;
图5示明一个交互作用图,表示图4中所示前后关系控制器的内部结构;
图6示明图5中示例的事件同步处理的一个处理图;
图7A、7B、7C和7D集合起来示明图5中示例的事件优先化处理的处理图;
图8示明由本发明控制的、供前后关系切换用的一个定时图,其中,当前的前后关系状态存储入同步的(自定时的)SRAM或寄存器文件,而下一个前后关系状态则从该同步的SRAM或寄存器文件中装载;
图9示明由本发明控制的、供前后关系切换用的一个定时图,其中,当前的前后关系状态存储入异步的SRAM或寄存器文件,而下一个前后关系状态则从该异步的SRAM或寄存器文件中装载;
图10示明一个实施例的电路图,它适合于对每个激活事件实现事件记录、事件掩蔽和事件确认,以及前后关系效用比特的管理,包括初始化请求和等待请求逻辑;
图11示明按照本发明的一个实施例在指令集内适合于前后关系控制和前后关系间通信的机器指令中字段和比特的指配;
图12示明按照本发明的一个实施例用来在处理器上产生控制存储地址用的比特源;
图13示明按照本发明的一个实施例的数据结构图例子,用于控制存储中的初始化向量;
图14示明按照本发明的一个实施例的运行示意图,显示出在处理器上应用来优先化和译码特定的前后关系激活比特时由向量指令产生的目标地址。
首先,参看图1的状态转移图,表明从个别前后关系观点看的本发明之一个处理器实施例的工作。本发明对于在处理器中管理多任务提供了前后关系控制器的应用,并引入了将任务划分成前台任务和后台任务的概念以及应用显著地不同的准则来分配处理器资源的概念。
事件(能造成前台前后关系切换动作的激励)使用来确定哪些前台任务激活,当执行激活时它是根据前台任务预定的优先权级别的。与之不同,后台任务循环地执行,后台任务容易受对应于前台任务的前后关系的激活。另外,后台任务的执行可以基于时间片、指令片或任何其它的循环分配。当然,前台任务也可以在时间片基础上或许借助于指令计数进行处理。
前后关系控制器中可包括一个时间片指令计数器,它针对给定的后台任务计数已执行的许多指令,并包括一个后台任务控制器,当计数等于动态可编程时间片数值时,控制器循环地切换到对应于另一个后台任务的前后关系上。
在处理器工作的任一给定的时间上,每个前后关系为6种状态之一,它们按逻辑分组成2行2列(2×2)矩阵的4元素集。上部或前台的行10中包含3个状态;Rf状态18,Pf状态20和Wf状态22(这里包括的“f”指明是前台);它们由前台前后关系使用。下部或后台的行12中包含3个状态:Rb状态24,Qb状态26和Wb状态28(这里包括的“b”指明是后台);它们由后台前后关系使用。激活的列14中包含有由有效前后关系使用的4个状态18、20、24、26,而非激活的列16中包含有由非激活的前后关系使用的2个状态,分别为状态22和状态28。
前台行10中的状态进一步规定Rf18(运行,前台)、Pf20(优先,前台)和Wf22(等待,前台)。后台行12中的状态进一步规定Rb24(运行,后台)、Qb26(排队,后台)和Wb28(等待,后台)。每个指令周期期间,仅能“运行”一个前后关系(在处理器上执行一条指令),或者另一种情况是处理器可空闲。如果处理器被占用,运行的前后关系是前台运行状态Rf18中唯一的前后关系。而若状态Rf18不被占用,则运行的前后关系是后台运行状态Rb24(如果被占用)中唯一的前后关系。前后关系的执行状态通常都存储于独立的寄存器集内。
当前后关系切换在前台与后台的工作任务之间进行而可由软件切换操作予以区别时,由于只需要在行间作转移,所以大部分转移容许发生在或是前台行10内、或是后台行12内。然而,比之前后关系激活、优先和等待的运行,这种转移较不经常发生。从前台到后台的转移可能只在运行的前台前后关系Rf18执行CLRFG(清除前台)功能34时才发生,它导致从前台运行状态Rf18转移至后台排队状态Qb26。由于后台的前后关系之间没有相对的优先权区别,所以对于执行该CLRFG功能34时对前后关系给定的后台排队中的位置,是任意的。
执行CLRFG功能34的前后关系舍弃掉前台操作,优点是在最小为一个指令周期的时间内停止了对处理器的控制(如同前后关系在执行等待功能32或42)。如果一个较低优先权的前台前后关系处于优先状态Pf20,则该较低优先权的前台前后关系在下一次运行(经由最高优先权转移36)。如果优先状态Pf20不被占用,则除非是后台状态Rb也不被占用,已经在后台状态Rb24中的优先前后关系将在下一次运行。在此场合下,后台排队状态Qb26中处于后台排队前头的前后关系将经由时间片激活转移44,它在下一次运行。示例的实施例中,上述情况发生在前台运行状态Rf18和后台运行状态Rb24都不占用而在处理器空闲下的单条指令周期之后。
本发明的这个实施例中引入了宽广概念来提供出基于指令的时间片,可将它看作是指令片、多任务,其中,在执行后台任务期间时间片数值(也即在分配给它的时隙中针对每一项后台任务要执行的指令数目)保留充分的可编程。回想前面关于本发明的目的,动态可编程定义为在***初始化之后进行的可编程。
当后台运行状态Rb24中的前后关系执行SETFG(设置前台)功能30时,在后台与前台之间通常发生一次转移,这造成从后台运行状态Rb24转移到前台运行状态Rf18上。通过对软件选择的存储单元赋以向量,也可发生特定前后关系的前台激活。借助于容许改变该特定前台任务的进入点,可以建立一种状态机能,使前台任务执行事件的一种功能,实现事件的完成。当然,同样的状态机能处理也可针对后台任务的激活而发生。
为了防止前后关系操作的错误中断,在前后关系控制器中可应用的功能有利地并不包括这样一种机理,即不对前后关系强使初始化(INIT)而运行的前后关系能改变任何其它前后关系的前台和后台设定。INIT功能的执行可借助于运行的前后关系以任一个其它的前后关系作为目标来实现。可以使运行的前后关系执行INIT功能,但除非特定的实施例对INIT功能附加额外的初始化边侧效应,否则没有理由去这样做。INIT功能的执行使目标前后关系保留于前台优先状态Pf20,它的程序计数器设定在一个预定的初始化向量地址上,这在下面将较详细地讨论。
通常,INIT功能的目标驻留于前台等待状态Wf22上,经由转移40进入前台优先状态Pf20。或者,可以驻留于后台等待状态Wb28,经由转移50从后台切换至前台而进入前台优先状态Pf20。事实上,如果目标前后关系驻留于或是后台运行状态Rb24,或是后台排队状态Qb26,则转移50也是可能的和等效的,但图1中未示明这两种情况。
在处理器复位的结束,所有前后关系均处于前台等待状态Wf22上,例外的是最低优先权的前后关系,它处于前台运行状态Rf18上。对前后关系前台运行状态Rf18作出执行的软件可激活一次转移,通过执行等效功能32而到达前后关系前台等待状态Wf22。从前台等待状态Wf22前后关系转移至前台优先状态Pf20中,带有对前后关系激活事件中任一个的断定,那些事件的激活或是依靠了前后关系的事件掩蔽,或是当运行的前后关系经由转移40对此前后关系前台优先状态Pf20执行INIT功能时。
在示明的实施例中,优先的前后关系切换发生在每个指令周期的结束处,前台优先状态Pf20中的最高优先权前后关系(如果有的话)通过最高优先权的转移36进入前台运行状态Rf18,又前台运行状态Rf18中先前的前后关系(如果有的话)通过较高优先权激活而经转移38进入前台优先状态Pf20。
在前后关系后台运行状态Rb24中执行的软件通过执行等待功能42可以激活一个转移而到达后台等待状态Wb28上。从后台等待状态Wb28中的前后关系转移至后台排队状态Qb26中,带有对前后关系激活事件中任一个的断定,那些事件的激活是依靠了前后关系的事件掩蔽。从后台排队状态Qb26转移至后台运行状态Rb24可能只发生在没有前台前后关系运行时(状态Rf18中没有前后关系)。在此场合下,运行的前后关系(如果有的话)处于后台运行状态Rb24中,或是处理器处于空闲状态中,因为在前台或后台中都没有前后关系要准备运行。
在每个指令周期的结束处,于后台状态Rb24内有前后关系运行,时间片计数减少,并在计数达到零的指令周期上时间片前后关系切换将可取地发生。此时,后台排队前头的前后关系经由转移44进入后台运行状态Rb24,而后台运行状态Rb24中先前的前后关系经由转移46进入后台排队状态Qb26。
一般地,后台排队的前后关系都组织在一个先进先出(FIFO)布置中,当先前运行的后台前后关系号数进入后队排队状态Qb26时,发生从最高前后关系号数到最低前后关系号数的“卷绕(wrap-around)”。应当指出,前台优先涉及经由转移36的一个状态转移,而通过前台的后台优先不是这样的。在此场合下,先前运行的后台前后关系保留于状态Rb24上,直至前台运行状态Rf18再次不被占用而后台前后关系能够运行。
现在,转看图2表明的可能的处理流程示例图,在一个处理器上工作的优先和前后关系间通信有着5个前台前后关系和3个后台前后关系。前后关系可以由一个事件信号的断定来激活。
每个前后关系所关联的可以是零个或多个外来的事件信号和零个或多个内在的事件信号。外来事件与内在事件信号之间的原则差异在于,外来信号在前后关系控制器内当应用于前后关系激活的决断之前要有利地同步于处理器时钟上。与之不同,内在信号都认为是在与处理器时钟同步下产生的,可直接地应用。
通过在软件控制下对前后关系专用的事件掩蔽寄存器作比特设置和清零,每一个前后关系激活事件可以激活和不激活。除断定激活事件之外,由于断定硬件信号来自诸如外部接口的外来源或者来自诸如内部定时器、协处理器或数据传递逻辑的内在源,还可以由软件应用信号指令来断定某些事件或全部事件,这些信号指令规定了目标前后关系所关联的事件集内一个目标前后关系的号数和事件号数。由于任何前后关系可对其本身或其它前后关系通知事件,这能使所示例的实施例对前后关系内和前后关系间的两种通信起高效机理的作用,并能起优先权中断控制器以及时间片控制器的作用。
图2的示意图中,垂直轴代表前后关系,水平轴代表示例的前后关系控制器上支持的8个前后关系中每一个的前后关系活动性。水平轴表示时间,单位为指令执行周期。前台前后关系的粗黑线和后台前后关系的粗虚线表示运行的前后关系。带箭头的垂直线表示前后关系切换,由标签来标识出前后关系切换发生的理由。与粗线交叉的细垂直线表明指令周期。
用于后台前后关系的上述每个指令周期段数目,是在该指令执行期内时间片指令计数器的数值。如前面所述,时间片指令计数器对于所给定的后台任务执行的指令数目进行计数。此外,当计数等于动态可编程时间片数值时,可应用后台任务控制器,它循环地激活与另一个后台任务对应的前后关系。时间指令计数器中可包含有用于后台任务的动态可编程时间片数值,当指令执行时这个数值减少。另一种方法,时间片指令计数器可以初始化至一个不同数值上,并使之对动态可编程值计数。
动态可编程时间片值包含在处理器的一个寄存器内。另一种方法,动态可编程时间片值可以包含在处理器之外面的一个存储单元中,代价是处理速度降低。此外,在处理器上执行的应用任务能对动态可编程时间片值编程。或者,动态可编程时间片值的编程可以仅仅限制于操作***,条件是时间片的安全性具有优先权。
继续看图2,前台前后关系的细短划黑线和后台前后关系的细阴影线表示激活的优先前后关系。本实施例中有8个前后关系,标志为前后关系0(最高优先权)至前后关系7(最低优先权),又,本例子的工作中时间片指令计数8。
本例子开始的时间,前后关系0、2、4和5都为非激活的前台前后关系(状态Wf)。前后关系3、6和7都为后台前后关系,前后关系3非激活(状态Wb),前后关系7排队(状态Qb),而前后关系6运行(状态Rb)。前后关系1非激活,并有一个未知的(不确定的)前台/后台设定。所示的第一个指令周期46由后台前后关系6执行,其时间片计数值减少至2。在下一个指令周期47内,后台前后关系6执行一个信令功能给后台前后关系3。结果,后台前后关系3在随后的指令周期上变为激活而进入状态Qb。在传送出该信令功能后,后台前后关系6执行另一个指令周期48,其时间片计数降低到0。这使得前后关系切换去往激活的前后关系后台排队状态Qb内的下一个最高的前后关系号数上,它是后台前后关系7。
在指令周期50上,前后关系6进入Qb状态,前后关系7进入Rb状态,时间片计数值为7。在前后关系7执行3条指令后,一个外来事件激活前台前后关系4。所以,在下一个指令周期52的结束处,前台前后关系7由前台前后关系4赋以优先,其时间片计数值在得到优先期间保留于4。
在前台前后关系4执行其第一条指令的同时,外来事件激活前台前后关系2。所以,在下一条指令54的结束处,前台前后关系4由前台前后关系2赋以优先(在优先点53上),进入优先状态Pf,同时,前台前后关系2进入运行状态Rf。在执行2条指令来处理其激活事件后,前台前后关系2在第三个指令周期56期间执行等待功能。这个等待功能为前台前后关系2清零有效的触发器,并在再一个指令周期后,前台前后关系2变成非激活,回复到等待状态Wf。这使得得到优先的前台前后关系4返回运行状态Rf,并执行另一个指令周期58。由于在优先点53之前前台前后关系4已经执行其自己的等待功能,所以在回复到等待状态Wf和容许得到优先的后台前后关系7在指令周期60上重新运行之前,这是由前台前后关系4执行的最后指令。在又执行4条指令后,后台前后关系7完成其时间片62,引起前后关系切换去往下一个最高的Qb前后关系,它是后台前后关系3,这是因为前后关系号数的卷绕而会从前后关系7到达前后关系0。
在同一个指令周期64期间,后台前后关系3执行其时间片7的第一条指令,一个外来事件66激活前台前后关系0。所以,在此指令周期64的结束处,后台前后关系3由前台前后关系0赋以优先,在得到优先期间其时间片计数值保持于7上。当执行3条指令来处理其激活事件后,前台前后关系0在第四个指令周期69期间执行等待功能。这个等待功能为前台前后关系0清零有效的触发器,并在再一个指令周期后前台前后关系0变成非激活,回复到等待状态Wf。通常,这容许得到优先的后台前后关系3重新运行,但是在本例子中,当前台前后关系0在运行时外来事件68已激活前台前后关系5。应当指出,这个激活改变了前台前后关系5的状态,从等待状态Wf到达优先状态Pf,这表明一个前台前后关系怎样可能进入优先状态而不用在激活之后执行任何指令。
如果后台前后关系3已在前台中执行着,即事实上前台前后关系5是在优先状态Pf中,则前台前后关系0何时回复到等待状态Wf将无关紧要,因为后台前后关系3比之前台前后关系5优先权较高。然而,前后关系3工作于后台中,所以由前台前后关系0执行的等待功能69造成一个前后关系切换,去到前台前后关系5,它进入运行状态Rf,开始执行指令70,而后台前后关系3保留于有优先的状态Rb中。
在执行二条指令来处理其激活事件后,前台前后关系5于第三个指令周期71期间执行等待功能。这个等待功能清零有效的触发器f或前台前后关系5,并在再一个指令周期后前后关系5变成非激活,回复到等待状态Wf。由于此时没有其它的前台前后关系激活,所以优先的后台前后关系3重新运行于状态Rb,并执行其时间片72内的第二条指令。在下一个指令周期上,后台前后关系3执行等待功能73。该等待功能73为后台前后关系3清零有效的触发器,在再一个指令周期后后台前后关系3变成非激活,回复到等待状态Wb。这容许排队的后台前后关系6在指令周期74上返回到运行状态Rb。应当指出,即使前后关系切换不被时间片计数降低到零所激活,在具有完全的时间片计数值7的指令周期74上后台前后关系6将进入运行状态Rb,而不是在后台前后关系3执行功能73时继承部分的时间片保留值。
作为其第二条指令,后台前后关系6对前台前后关系1实施INIT(初始化)功能76,强使前台前后关系1进入已知的状态,这可能需要用来从软件差错中恢复由前后关系1执行的码。这个INIT功能激活前后关系1作为前台前后关系优先状态Pf,执行设置以在前后关系1上开始对控制存储器中的向量地址作初始化。由于现在存在激活的前台前后关系,所以在执行再一条指令后,由前后关系切换使后台前后关系6得到优先(在优先点77上)而去往前后关系1。作为其第二条指令,前后关系1执行CLRFG(清零前台比特)功能78,它使得前后关系1进入后台排队状态Qb。由于现在前后关系1处于后台排队,而在状态Rb中已经有一个前后关系,所以在执行CLRFG功能78后,其跟随的指令周期后面前后关系1将停止对处理器的控制(在停止点80上),由之容许处于状态Rb的前后关系6重新执行其时间片82的剩余部分。
在本详细说明的其余方面,要指出的是数字常数都是十进制数,除非在前面加上“Ox”,此时是指十六进制,对比特位置编号时比特0为最低有效位。
现在转看图3中举例示明的应用本发明一个实施例的处理器中,执行的每个前后关系控制和状态寄存器的访问软件。每个前后关系84中9个控制比特有数值,它们由软件决定,每个前后关系中9个状态比特有数值,它们由前后关系控制器硬件决定,但在别的方式下可由软件读出或测试它们的值。前后关系控制器维持每个前后关系之状态的一部分。这些状态比特不是执行状态的一部分(在前后关系切换期间它被保存和恢复),因为前后关系控制器内前后关系专用状态要求能连续地由激活逻辑应用,并且又作为前后关系切换决断逻辑的输入。
每个前后关系控制比特84中包括一个前台(FG)比特88和一个事件掩蔽寄存器90。FG比特88在前后关系处于前台时等于1。图中示例表明了以该前后关系作为规定的目标,由硬件对INIT功能的复位执行,或者在该前后关系运行中执行SETFG功能,使FG比特88设置。图中示例又表明了在该前后关系运行中执行CLRFG功能,使FG比特88复位。事件掩蔽寄存器90有一个比特,对应于与该前后关系关联的激活事件之每一个。
所示的实施例中,每个前后关系分配8个激活事件;所以,事件掩蔽寄存器90包含8比特。当相应的比特位置号数等于事件号数,而在前后关系事件掩蔽寄存器90中具有数值1时,一个给定的激活事件便能激活单一个前后关系。然而,在下面将较详细地说明,对激活事件的断定是记录在一个事件触发器中的,触发器在执行确认(ACK)功能而给出规定的比特之前,保持于设置状态。事件触发器的设置不受事件掩蔽寄存器90中内容的影响。
每个前后关系状态比特86中包括一个ACT比特92和一个事件状态寄存器94。ACT比特92在前后关系激活时等于1。ACT比特92在两种情况下设置,即或是断定一个非掩蔽激活事件,使应用于断定的未确认激活事件的事件掩蔽比特设置,或是执行INIT功能而使该前后关系为规定的目标时。ACT比特92由硬件复位进行清零(前后关系7除外,那里ACT比特由硬件复位进行设置),并在前后关系运行时由执行等待功能进行清零。事件状态寄存器94中有一个比特对应于与该前后关系关联的激活事件之每一个。在本详细说明的某些部分中,这些比特也称为事件触发器。
如上面所述,在示例的实施例中,每个前后关系分配8个激活事件,这表明,事件状态寄存器94中至少包含8比特。对应于断定的事件读出的比特都等于1,对应于未断定的事件读出(包括确认的事件)的比特都等于0。各个事件状态寄存器比特(事件触发器)由前后关系控制器硬件在检测到一个外来事件或内在事件信号的断定(典型地为0到1的转移)后,予以设置。在对比前后关系中的主题事件规定出目的地的信令功能执行之后,各个事件状态比特也可设置。各个事件状态寄存器比特由硬件复位进行清零,并由该前后关系运行中主题事件作为所规定目标的ACK功能之执行来清零。在某些场合下,也可能产生一个具体的ACK功能作为执行其它指令或访问特定的数据通路(典型地为I/O端口)寄存器的边侧效应。
下面,给出一个实施的例子,它示明前后关系定义和应用于一个IEEE802.11媒体访问控制子层(MAC)的控制器。MAC控制器的功能划分成8个前后关系,标志为0至7,0为最高优先权。前后关系0至5优选为前台,前后关系6和7优选为后台。每个前后关系中有8个激活事件,这些激活事件之每一个通常采用下面的默认:
A. 应用信令功能可能不能断定一个事件(除非该事件保留用于此
种目的);
B. 应用ACK功能清零一个事件;
C. 当对应的定时器减少至零时发生定时器终结计数事件;
D. 通过向相应的定时器控制寄存器写入为Clear TC(比特2)
等于1而不是ACK的功能,使定时器终结计数事件清零;
F. 当发生0到1转移时,定义为“断定”一个外部事件信号;
G. “否定”一个外部事件信号意味着1到0的转移;以及
H. 当比特等于1时,控制比特名称选择得具有意义。
示例的前后关系和它们相应的激活事件说明于下面。
前后关系0-调试支持(高优先权、实时事件):
激活事件:
0) 硬件断点(BKPTin);
1) 软件断点(信号0,1);
2) GP串行移位完成或UART发射机作完了(GPDN/UTXDN);
3) 区间定时器A终结计数(INTATC);
4) UART接收机作完了(URXDN);
5) 区间定时器B计数(INTBTC);
6) 主机(计算机***)维护(HATN);以及
7) 协处理器维护(CPATN)。
前后关系1-较低MAC(LMAC)异常处理
激活事件:
0) 调制解调器数据接口维护(MDIATN);
1) 物理层数据不能得到(!PDA);
2) IFS(帧间空间)定时器终结计数(IFSTC);
3) 前后关系间通信,从MMAC到LMAC;
4) 物理层发射机未准备好(!TXR);
5) 信标/静止定时器比较器相等(BCNTC);
6) 调制解调器数据接口可编程比特边界(MDIBIT);以及
7) 调制解调器管理接口传输完成(MMIDN)。
前后关系2-较低MAC(LMAC)数据传输:
激活事件:
0) 调制解调器数据接口维护(MDIATN);
1) 区间定时器B终结计数(INTBTC);
2) IFS(帧间空间)定时器终结计数(IFSTC);
3) 前后关系间通信,从MMAC到LMAC(信号2,3);
4) TSFT(同步功能定时器)卷绕(TSFWRP);
5) NAV(网络分配向量)定时器终结计数(INTCTC);
6) 物理层媒体忙碌(MBUSY);以及
7) 物理层媒体不忙碌(!MBUSY)。
前后关系3-主机接口支持:
激活事件:
0) 缓存器访问通路0偏置分辨率(BUFATN0);
1) 缓存器访问通路1偏置分辨率(BUFATN1);
2) 前后关系间通信用于向主机报告状态(信号3,2);
3) 缓存器访问通路0块边界交叉(BLKATN0);
4) 缓存器访问通路1块边界交叉(BLKATN1);
5) 前后关系间通信用于向主机报告状态(信号3,5);
6) 主机接口寄存器维护(HATN);以及
7) 后台来的前后关系间通信(信号3,7)。
前后关系4-中MAC(MMAC)媒体访问和定时:
激活事件:
0) 前后关系间通信,从LMAC到HMAC(信号4,0);
1) 先前忙碌的媒体变成可应用(MAVL);
2) IFS/时隙定时器终结计数(IFSTC);
3) 区间定时器A终结计数(INTATC);
4) 信标/静止定时器比较器(BCNTC);
5) 调制解调器数据接口维护(MDIATN);
6) 软件标志符3-0(它与前后关系7中事件7共享);以及
7) 调制解调器管理接口传输完成(MMIDI)。
前后关系5-WEP(有线等效保密)解密支持:
激活事件:
0) 前后关系间通信,用于状态报告(信号5,0);
1) 解密密钥流值准备好(DECRYPT);
2) GP串行移位完成或UART发射机作完了(GPDN/UTXDN);
3) 前后关系间通信(信号5,3);
4) UART接收机传输作完了(URXDN);
5) 前后关系间通信(信号5,5);
6) 区间定时器D终结计数(INTDTC);以及
7) 调制解调器管理接口传输完成(MMIDN)。
前后关系6-附加的访问点功能:
激活事件:
0) 软件标志符11-8;
1) 软件标志符15-12;
2) GP串行移位完成或UART发射机作完了(GPDN/UTXDN);
3) 区间定时器A终结计数(INTATC);
4) 软件标志符7-4;
5) 区间定时器B终结计数(INTBTC);
6) 区间定时器D终结计数(INTDTC);以及
7) 协处理器维护(CPATN)。
前后关系7-较高MAC(UMAC)和杂项支持:
激活事件:
0) 软件标志符19-16;
1) 软件标志符23-20;
2) 软件标志符27-24;
3) 区间定时器A终结计数(INTATC);
4) 信标/静止定时器协处理器(BCNTC);
5) 区间定时器B终结计数(INTBTC);
6) 区间定时器D终结计数(INTDTC);以及
7) 软件标志符3-0(它与前后关系4中事件6共享)。
现在转看图4示明的***图,是引入于本发明前后关系控制器一个实施例中的一个典型的处理器或I/O控制器。本***图(以及图5、图6和图7中示明的附图)的表达中应用了ITU(国际电信联盟)在ITU-T建议Z.100(03/93)中作为标准化而众所周知的技术规范和描述语言(SDL)之图形语法。
***性能的表现应用了这一正式的描述语言,因为这样可以达到更为精确和更宽广的一般应用性。例如,可应用电路片段来重点实现所示例实施例的特性。然而,由于这种前后关系控制器可应用于几乎任何类型的处理器,所以用于具体处理器的电路多半可省略控制序列结构,它们虽是该处理器隐含的,但应用不同的结构可与另一个处理器关联。另外,常规的状态图其符号较不正规,有着与SDL处理图类似的情况。不过,SDL有严格定义的图形语法,可达到小得多的模糊性。确实已经发现,依靠常规的状态图不能充分表述该控制器性能中的许多“边界条件”。这些边界条件中由这里的SDL描述都可包罗的例子有:(1)如果一个前后关系在执行等待功能与执行等待功能后随的指令之间得到优先,将发生什么?(2)如果在执行等待功能之后的指令期间一个前后关系对造成其激活的事件执行ACK功能,将发生什么?以及(3)如果一个后台前后关系时间片在象它执行SETFG功能那样的同一指令周期上终结,该前后关系是否继续在前台运行,或是状态Qb中的下一个前后关系在得到新的前台前后关系给与的优先之前是否执行一条指令?还有,比之应用英语文体来说,SDL图形语法能更精确和更少模糊性地描述前后关系的性能。所以,在下列各节中给出的SDL描述预定应用于结构的总体和对结构的详细指导,以及意在说明本发明几个实施例的重要特性。
SDL***图100表明所示例的实施例中应用的处理器所关联的顶级功能块。文本符号102和104中包含用于SDL预定义数据类型的***专用扩展的定义,通过出口/入口机构供隐性块间通信应用的远端变量说明,以及供隐性块间通信应用的信号之名称和参数类型的说明。所示的***图100中包含5个功能块:时钟发生器106,序列器108,指令译码器112,数据通路和接口资源管理器114,以及前后关系控制器110。
时钟发生器106通过时钟输入信道122接受一个输入时钟或时基基准(例如晶体控制的信号),从中产生时钟,并通过复位输入信道120接受硬件复位信号。时钟发生器106产生出供所有其它电路块应用的周期时钟。这种周期时钟再分成4个实质上相等部分的指令周期。做到这一点是应用了一对正交的方波,得到4个时钟边沿,在边沿处激活各种动作。实际的时钟波形示明于图8和图9,由主时钟MCLK信号504区划出指令周期边界,正交的时钟QCLK信号506在每一个指令周期内提供出附加的时钟边沿。4个边沿的顺序排列为:主时钟信号MCLK 504的上升沿,标志为Mr 517,它标记出一个指令周期的结束和下一个指令周期的开始;QCLK信号506的上升沿,标志为Qr 518,它发生在每个指令周期的25%时间段处;MCLK信号504的下降沿,标志为Mf519,它发生在每个指令周期的50%时间段处;QCLK信号506的下降沿,标志为Qf520,它发生在每个指令周期的75%时间段处。
SDL模型中,时钟发生器106向所有其它功能块送出合适的Mr517、Qr518、Mf519和Qf520,以及一个复位信号。时钟发生器106在处理器运行或空闲时都工作,但可以关断其大部分电路,包括在很低功耗的睡眠模式期间关断MCLK信号504和QCLK信号506的产生,睡眠模式是当时钟发生器106经由信道ClkCctl 140接收到来自前后关系控制器110的睡眠信号时进入的。
许多实施情况中,不可能在每个时钟周期期间都执行一条指令。结果,指令译码器112、序列器108和前后关系控制器110只当指令在实际执行中的周期内才实现它们的功能,这由远处布尔变量“ien”为“真”来标识(见文本符号102)。
序列器108通过Tocs信道116产生出指令地址和激活指令读取周期。这些地址连接至逻辑上处于处理器100外部的一个控制存储器阵列117上。应当指出,取决于实施技术和所需的性能等级,控制存储器阵列117和一个关联的数据存储器127可以实体上独立、又完全共处在单个存储器装置内或混合存储器内。序列器108经由Cct1Seq信道141从前后关系控制器110中接收前后关系切换信号ScLoad(以检索存储的前后关系状态信息)、ScStore(以存储前后关系状态信息)和InitSeq(以将一个前后关系执行地址设定至合适的初始化向量上)。
指令译码器112经由FromCS信道118在序列器108的控制下接收读取的指令字。译码的指令作为信号送出,去往所有其它合适的功能块,它以指令字段值作为参数。在前后关系控制器110处理中需要的指令都经由InstCct1信道142送出。
数字通路和接口资源管理器114代表处理器的其余部分,包括ALU、程序员可见的寄存器等。所有的I/O装置、主计算机(如果有)和本地数据存储器接口(信道126、128、130和132)都连接至该功能块上。数据通路和接口资源管理器114向前后关系控制器110送出事件信号,并经由Cct1IDP信道143接收来自前后关系控制器110的AckEv信号(它指明了软件已执行Ack功能来确认一个专门的在先的事件)、CsLoad和CsStore信号(以恢复和保存前后关系状态信息)、以及SetCy和ClearCy信号(在硬件复位和INIT功能之后用于设置和清零一个进位标志位)。此功能块还给出ien值(如果当前时钟周期是一个指令执行周期,此值为真)和时间片值(对于每个后台时间片由软件用于初始的指令计数所规定的最后数值)。
前后关系控制器110通过EventsIn信道124有利地接收外来事件信号,并如上面所述地与其它功能块通信。此功能块还给出布尔变量睡眠的值(处于睡眠模式时此值为真)、CSW值(在前后关系切换周期的第二个半周期内此值为真)、空闲值(没有激活的前后关系时此值为真)CtxNam值(前后关系号数)、变量前后关系值(运行的前后关系号数)和nctx值(对执行进行切换的前后关系号数)。又,此功能块还给出BitString变量事件(当前前后关系事件状态寄存器)和掩蔽(当前前后关系事件掩蔽寄存器的值)。
现在转看图5示明的一个SDL处理的交互作用图,表示图4中示明的前后关系控制器110的内部结构。其它顶级功能块的内部结构这里没有给出,因为它们不是本发明的一部分,并且对了解前后关系控制器110的性能并不需要。
有两种处理示例包含在前后关系控制器功能块110中。事件同步器150从AsyncEvents(异步事件)信号路由158中接收外来事件信号(EventIn),并使它们与主时钟上升沿Mr517同步,Mr517是由时钟发生器106经由ClkSyn信号路由156给出的。这些事件经由SyncEvents(同步事件)信号路由166,就象在PriDP信号路由164上自内在源来的(固有地同步的)事件信号一样,作为事件信号送出。
本实施例中,基本的前后关系控制状态机构工作于事件优先化处理152中。事件优先化器152经由ClkPri信号路由154从时钟发生器106中接收输入信号,经由SyncEvents信号路由166从事件同步器150中接收事件信号,并经由PriDP信号路由164接收数据通路Cct1DP功能143。此外,经由InstPri信号路由162在InstCct1信道142上从指令译码器中接收到与前后关系控制和前后关系间通信相关联的各个指令的译码信号。
现在转看图6示明的、对图5中所示例事件同步处理的处理图,它表明了事件同步器150的工作。这个处理确保每个进入的ExtEvent(外来事件)信号208保存下来,直至出现主时钟上升沿Mr206时,此时接收所有保存的ExtEvent信号214,并立即转送往事件优先化器152作为事件信号218。
现在转看图7A、7B、7C和7D集合起来示明的、对图5中所示例事件优先化处理的处理图,它规定了事件优先化器152处理中的状态转移。这个处理为本发明的该实施例实现了事件驱动和时间划片的前后关系切换功能。
图7A规定了起始序列和复位序列。在“全部状态”符号272中,复位信号274优先于所有其它输入信号,使得在起始符号254上开始加入起始的初始化(符号282)之前,嵌入进处理输入排队(符号276-280)。一个序列(符号256-270)将全部有关的变量初始化,即清零事件掩蔽、事件状态寄存器和等待触发器,对前台设置全部前后关系,并清零全部ACT触发器,但前后关系7的触发器除外,它被强制为激活。
图7B规定了在每个周期中后半期内的工作,即Mf到Mr的时期(从主时钟下降沿Mf至其下一个上升沿Mr的时期),以及在接收到的主时钟上升沿Mr292之后紧随的事件。由于在等待功能之后的周期内执行指令,又由于在任何周期内会发生事件和要求处理,包括处理器空闲的时间,所以运行和空闲状态284两者有同样的转移。在Mf到Mr的时段,立即处理全部指令译码信号,但ACK(AckInst)、等待和睡眠三个信号功能300除外。这三个信号保存下来在主时钟上升沿Mr292之后处理,因为它们必须在全部事件信号288都处理完后作出处理。在主时钟上升沿Mr292之前处理的指令(也即信号286、290、294、296、298),可能变更前后关系切换发生时在主时钟上升沿Mr292上必须保存的信息。
在主时钟上升沿Mr292之后,当ien为真(等于1)(293)的周期上,CSW(在累进标志符中前后关系切换)值、CTX(当前前后关系号数)值、NCTX(下一个前后关系号数)值以及事件掩蔽和事件状态寄存器值,均进行更新(符号分别为320、321)。处理器可以进入睡眠状态(符号338),在此期间处理器时钟停止,只有一个低频睡眠定时器工作,直至或是睡眠时间终结(符号340中的唤醒信号),或是发生硬件复位。如果不是入睡状态(符号324),当后台前后关系运行时(符号326,328)时间片指令计数减小(符号330)。如果时间片计数减小至零(符号332),通过使循环的curBg(当前后台前后关系)指针前进1来激活时间片前后关系切换,循环模值为前后关系的数目(符号334),并且时间片指令计数复位(符号335)至它的编程的值。然后,进入优先化状态(符号336),处理Mr到Qr时段(从主时钟上升沿Mr至下一个正交的时钟上升沿Qr的时段)。
图7C规定了每个周期的前1/4期间(Mr到Qr)时段的工作。这个时间内在主时钟上升沿Mr292处抽样的事件被掩蔽,ACT触发器更新,准备在正交时钟上升沿Qr380之后作出前后关系切换决定。在正交时钟上升沿Qr之前,处理ACK(AckInst)信号、WAIT信号360和睡眠信号366,又在正交时钟上升沿Qr380之后,发生掩蔽和ACT更新序列(符号386-392)。
ACT比特的更新表述为一种迭代处理(符号388-392),为简单起见,下面说明其完成的工作。这个工作对于全部前后关系典型地为并行运行。图7C中一个巧妙而又重要的运作是处理等待功能360,在那里发生的等待功能360记录在先前的(prev)前后关系指数上(符号362)(这是等待功能360被译码时在主时钟上升沿Mr292之前运行着的前后关系)。然后,在当前前后关系(ctx)的指数上完成ACT触发器的清零(符号382-384)。prev和ctx两者的值在所有情况下于正交时钟上升沿Qr380之前和之后都相等的,除非在主时钟上升沿Mr292的紧前面发生了前后关系切换。这意味着,在前后关系切换之前最后一个周期上执行等待功能的前后关系保持激活,但其等待触发器(等待比特串中的比特)将等于1,直至该前后关系又能运行和执行等待功能后面的指令。图7C中另一个有意思的动作是当处理ACK功能352后,AckEv信号356传送至数据通路上。这样做时,当确认一个特定事件后容许实现该装置或主机接口逻辑中的边侧效应。
图7D规定了每个周期中第二个1/4期间的工作,即Qr到Mf时段(从正交时钟上升沿Qr至下一个主时钟下降沿Mf的时段)。在这个时段上,事件得到优先化,并作出前后关系切换决定。动作的第一集合(符号422-428)是搜索可能有的优先。搜索表述为一种迭代处理,为简单起见只说明工作的完成。这个工作对全部前后关系典型地为并行运行。如果运行的前后关系处于前台,搜索在范围0:ctx上进行;而如果运行的前后关系处于后台,则搜索在范围0:7上进行,因为所有前台前后关系比任何后台前后关系具有优先权(符号423)。在增长的前后关系号424(下降的优先权)序列中,优先权编码(符号424)是隐性的。如果找到一个激活的前台前后关系,将其号数记录入nctx(符号452)。否则,在指明的当前后台前后关系上开始搜索(功能块430-434)激活的后台前后关系,并不断往更高的前后关系号数上进行(模8)。
如果一个时间片(图7B的符号334)结束于此周期内的主时钟上升沿Mr292上,则指明的curBg会已经有增量,意味着搜索将从那个当前运行着的前后关系之后面一个上开始,并当在排队状态Qb中没有其它的前后关系时,将只是再选择同一个前后关系。在后台运行状态Rb中有优先的前后关系的情况下,它现在可以重新开始,这一测试(符号430)将立即退出至新的前后关系号数(nctx)450上。如果在前台(符号452)或后台(符号450)的搜索中都找到一个前后关系在运行,则将nctx与当前前后关系号数(ctx)(符号454)相比较,以确定是否需要一个前后关系切换。如果不需前后关系切换,则在此周期内不会进一步发生前后关系控制激活,控制器返回至运行状态458。
如果需要前后关系切换,则控制器进入Start-csw状态456以保存输入信号462,直至出现主时钟下降沿Mf(符号460)。然后,断定CSW(符号474-476),激活下一个前后关系中所保存状态的装入(符号478),同时对保存的当前前后关系状态(符号480)提出请求。在存储之前要求装入的理由将结合图8和图9在下面作出较充分的说明。
如果没有激活的前后关系,则控制器保存住全部输入信号(符号440),直至出现主时钟下降沿Mf(符号438),然后指明空闲状态442,并在实际进入空闲状态448之前请求保存住当前前后关系状态446。之所以保存住前后关系状态,是因为不能保证在空闲时段结束处该同一个前后关系将是运行的第一个前后关系。事实上,对空闲状态448的往来转移是一种分隔的前后关系切换,在转移往空闲时(符号442-446)为保存,在从空闲转移来时(符号466-470)为装入。空闲状态期间时钟继续运行,事件继续被抽样,但既不取出指令、也不执行指令。然而,处理器对空闲状态期间事件的出现准备着作反应。
如果处理器的实现中采用了互补型金属-氧化物-半导体(CMOS),或者应用了另一种处理技术,则那里功耗非常小,甚至当电路元件不赋以工作节拍或使之改变电平时实质上功耗为零。对于大多数处理器,包括序列器、指令译码器和数据通路,空闲状态448可给出一种固有的省电模式。如果需要更低功率的工作模式,则睡眠功能366(图7C中)可停止住高速时钟,并配合以暂停事件监测,而只留下一个低频睡眠定时器处于工作状态。
现在转看图8示明的按本发明控制前后关系切换的定时图,其中,当前前后关系状态存储入同步的(自定时的)SRAM或寄存器文件,下一个前后关系状态装载自该同步SRAM或寄存器文件。所示明的定时图(在图8和图9两者中)对于非运行的前后关系执行状态在存储中所需应用的两种不同类型的存储器技术,标识出了它们的差异。这类定时序列之每一个各有其优点,前后关系切换操作不需要额外的周期来保存和恢复前后关系执行状态,但实施这种功能是与被切换前后关系的最后指令并行地进行的。为了使用这种技术,处理器数据通路中应包括专用的寄存器文件或静态RAM(SRAM)阵列,供执行状态中的每个寄存器使用。示例的本发明实施例可以结合这样的处理器数据通路予以应用,即此类通路中不需提供这样的存储装置。然而,在此类处理器中的前后关系切换涉及较多的开销,因为可能要额外的周期和附加的执行指令来保存和恢复前后关系执行状态。
当应用同步的静态(自定时)RAM(SRAM)来实现阵列保存时,图8中所示的较简单的定时和控制信号序列可以完成。基于图7中规定的SDL处理,这种定时也可以从直接的实现中得到。尽管在程序员可见的性能上是一样的,但在阵列保存中应用异步的静态RAM需要较大的复杂性(将结合图9进行讨论)。应用同步的SRAM的方法容许较短的周期和较低的功耗,因为在假定同步SRAM和异步SRAM器件性能相同时,同步SRAM中信号转移数目减少,并且使指令周期内占空因数短于50%的控制信号可去除。
同步SRAM中在每个写入使能脉冲的前沿上获得写入地址和数据,应用内部产生的控制信号来完成写入操作,在写入周期的其余时间内不需要稳定的输入信号(不是功率)。基于单元的、使用同步SRAM的半定制的集成电路中,所用的寄存器文件单元其读出端口和写入端口有着独立的地址,应用很方便。当如图8中所示地应用这类同步SRAM单元来实现阵列保存时,前后关系切换用的控制信号定时变得相当简单。
在每个指令执行周期500、502期间,前后关系控制器514在主时钟上升沿Mr517处抽样激活事件信号,可在周期的第一个1/4时段上稳定和选通已同步的信号(时间段532)。在正交时钟上升沿Qr518处,全部ACT触发器更新,由优先权编码和比较工作确定是否需要前后关系切换,如果需要,则选择下一个前后关系(时间段533)。在这类前后关系控制器激活的同时,一个处理器(时间段516)已在执行在主时钟上升沿Mr517上激活的一个指令,不必顾及在此指令执行周期内是否会需要一个前后关系切换。如果处理器数据通路具有来自内部寄存器源的组合通路,预期在整个执行周期内它们是稳定的,这些通路上的数值必须闩锁在主时钟下降沿Mf519上,以容许开始读出下一个前后关系中保存的状态(时间段540)。另一种方法,如果处理器设计者偏爱在读出保存的前后关系状态时增加开销周期,则不需要这种闩锁。但在许多场合下,如果这类闩锁都去除,则要***一个或几个周期,使处理和实时响应速度减慢,净效率下降,造成在原前后关系的最后一个指令周期与新前后关系的第一个指令周期之间一个时段上不能执行指令。
在主时钟下降沿Mf 519处,前后关系控制器能够确定是否需要一个前后关系切换(时间段534),如果需要便断定一个CSW(前后关系切换)信号522。要恢复的目标状态由NCTX〔2:0〕信号组530上放置的下一个前后关系的前后关系号指明。应用NCTX〔2:0〕信号组512给出保存阵列的地址,可开始读出下一个前后关系的“保存状态”(时间段540),同时完成当前前后关系的最后一条指令(其前后关系号保留于cTx〔2:0〕信号组524中)。
由主时钟上升沿Mr 517标明的该前后关系切换周期的结束处(周期500与周期502分隔点),应用CTX〔2:0〕信号组510给出的保存阵列地址来存储入当前前后关系的执行状态,包括该执行周期500期间产生的结果(时间段542)。当CSW信号508断定时(时间段522),由主时钟上升沿Mr 517激活保存阵列写入操作(时间段542)。由于写入同步SRAM中具有有利的特性,下一个前后关系的第一条指令可以立即开始执行(时间段536),这是因为,在主时钟上升沿Mr 517出现而结束了周期500后,写入保存阵列的地址和数据都不必保持。对于正常的执行,同步SRAM周期时间中包括写入恢复在内,不会超过一个指令周期时段的50%。激活了一个SRAM写入的这同一个主时钟上升沿Mr517转移,也可以有利地应用来完成前后关系切换,使CSW信号508失去作用而ctx〔2:0〕信号组510更新至新的前后关系号数526上。
现在转看图9示明的、用本发明控制前后关系切换的定时图,其中,当前前后关系状态存储入异步的SRAM或寄存器文件中,下一个前后关系状态装载自该异步SRAM或寄存器文件。常规的或异步的SRAM要求在写入周期的整个有关部分中,写入地址和数据是稳定的。这需要在写入使能脉冲的后沿之前有一个建立时间,有时要求在此后沿之后有一个短的保持时间。许多半定制的集成电路技术能够应用异步SRAM来提供RAM阵列或寄存器文件,它们只给出单一个地址和数据端口供应用于读出或写入。工作于这种方式的独立的SRAM和寄存器文件芯片也广泛地可供应用。
如果将这种类型的常规的单端口SRAM应用来实现保存阵列,供前后关系切换用的控制信号定时变得多少地更复杂些,如图9中所示。总的定时与图8中相同,类同的单元应用同样的参考号码来标识。主要差异在于,NCTX〔2:0〕信号组512的产生,前后关系控制器514的工作,以及在断定CSW信号548期间和其紧后面的数据通路516上(详细的时间是图9中的522、528、530、534、535、537、540、541、543)。在应用异步SRAM时包括写入恢复在内需要这样的周期时间,它不超过指令周期时段的25%。为了避免***开销周期,在保存和恢复前后关系状态的同时假定不执行指令。这种速度要求与应用同步SRAM相比较,达到同样的处理器周期率时需快两倍。在前后关系切换周期的前一半期间(时间段532、533、538),前后关系切换激活是相同的。在前后关系切换周期的主时钟下降沿Mf519上,断定CSW信号508(时间段522),而NCTX〔2:0〕信号组512设定至下一个前后关系号数(时间段534)。在由当前前后关系将执行的最后指令的结果写入保存阵列时,地址和数据信息必须稳定。所以,只是从主时钟下降沿Mf519至下一个正交时钟下降沿Qf520的一个时段可应用,对下一个前后关系读出保存的状态(时间段540)。然后,在从正交时钟下降沿Qf520至下一个主时钟上升沿Mr 517的一个时段期间,可取地闩锁和保持该结果。再后,这些闩锁值有利地传输给处理器的工作寄存器(时间段543)。在正交时钟下降沿Qf520上,NCTX〔2:0〕信号组512的值切换回当前前后关系号数上(时间段535),容许当前前后关系状态中包括的该指令的结果(周期500)写入至保存阵列内(时间段541)。在主时钟上升沿Mr517上,NCTX〔2:0〕信号组512切换回下一个前后关系号数(时间段530),并开始执行下一个前后关系的第一条指令(时间段537)。
不象在同步SRAM中的实现方法,这里的写入操作在主时钟上升沿Mr517上完成。应用异步SRAM时要求数据通路的结果相对早地稳定好,以容许在从正交时钟下降沿Qf520至主时钟上升沿Mr517的时段期间写入保存阵列。在同步SRAM方面,数据通路的结果是直至在主时钟上升沿Mr517之前才需要的,这有助于缩短指令周期,因之加快了处理。
现在转看图10示例的一个电路实施例的电路图,它适合于对每个激活事件实现事件记录、事件掩蔽和事件确认,以及管理一个前后关系有效比特,包括初始化请求和等待请求逻辑,由此可较好地理解前后关系控制器内事件记录、掩蔽和确认的细节。
图中示出了单一个事件方面前后关系控制器事件逻辑中“时间片”的一般方案片段,包括有与该事件关联的ACT比特和等待功能逻辑。此电路图中,所有逻辑信号都认为在“高电平”(逻辑1)状态下为真。此电路片段为事件逻辑的一个实施例示例,并非意在限制本发明的实践。
在断定一个外来事件信号550时,不论其极性如何,于软件信号551的控制下使可编程的倒相功能560总提供出正确的高电平为“真”的信号供内部应用。由于该外来信号与内部时钟之间没有确定的相位关系,所以在供内部应用之前使用同步器562将输入信号同步于主时钟上升沿Mr517上。有多种信号源可以用来设置事件触发器570,包括已同步的外来信号564的前沿,内部源566的前沿,或者是标明该前后关系和事件的软件信号功能552。这些事件源由或门568组合起来,其输出触发一个事件触发器570,使之在主时钟上升沿Mr517上设置。
由于事件触发器570的D输入端为硬布线的真(如图所示的逻辑1),所以在设置了事件触发器570后事件信号的无效不会撤消该事件。事件触发器570的输出可由软件读出,作为事件状态寄存器94的一个比特,并当处理器提供出所示例实施例中诸如SKPn的指令时(如下面所述),作为事件状态信号组596中的一个可测试状态。事件触发器570可以由硬件复位555予以清零,或是由与门572的输出予以清零,与门572的输入中包括有对此事件号数执行的ACK(确认)功能554,以及此前后关系在运行中的信号556,与门572的输出通过或门574实施清零。
一个合适的比特用于来自前后关系事件掩蔽寄存器94的此前后关系事件,事件掩蔽比特558在与门580中与事件触发器570的输出相与,与门580的输出通过或门584加至ACT触发器590的一个输入端。当实施前后关系事件的优先编码用于向量功能时,也应用该与门580的输出,这在下面将较详细地说明。自与门580来的掩蔽事件信号在或门584中与该上下相关的所有其它事件来的掩蔽事件信号相或,其中包括通过与门582自等待逻辑之输出门来的信号。
或门584的逻辑“真”输出状态触发ACT触发器590,使ACT触发器590在正交时钟上升沿Qr518时刻上设定为倒相器非门586的输出值。应用与门582的输出和同一信号通过倒相器非门586的倒相信号,可使ACT触发器590的D输入端赋能。如果断定了一个或几个激活事件,则在正交时钟上升沿Qr518的时刻上ACT触发器590设置,并在先前一个指令周期内不执行等待功能。ACT触发器590也可以通过执行对此前后关系的INIT(初始化)功能588而直接设置,并由硬件复位信号555直接清零。ACT触发器590的输出又由前后关系优先权逻辑加以应用,通过倒相器非门592倒相后使等待触发器578清零。无论是否断定任何激活事件,如果在先前一个指令周期内执行了等待功能,则ACT触发器590通过倒相器非门586被清零。
等待(WAIT)触发器578之所以需要,是因为在执行一个等待功能与执行该等待功能之后的一条指令之间的时期内,可能使一个前后关系得到优先。(出现这种情况的一个例子示明于图2中的53、54和58)。在此前后关系运行中(信号556)当由与门576译码等待功能557时,等待触发器578便在主时钟上升沿Mr517上得到赋能而设置。由于一个前后关系必须能有效执行等待功能,其动作是记录下出现的等待功能,因此处于“真”状态的ACT触发器590的输出将通过倒相器非门592而使等待触发器578的清零输入无效。
在该前后关系处于运行状态(信号556)的下一个正交时钟上升沿Qr518上,由于断定与门582的输出而使ACT触发器590清零。如果在等待触发器578设置的同一指令周期边界上(主时钟上升沿Mr517)该前后关系得到优先或时间分片,则该前后关系将不运行。因此,在下一下正交时钟上升沿Qr518之前前后关系运行信号556将被否定,ACT触发器590保留于设置状态。当该前后关系重新运行时,ACT触发器590将在第一个指令周期的正交时钟上升沿Qr518上清零,使得在执行这一条指令后前后关系变成非激活。ACT触发器590的否定输出通过倒相器非门592后使等待触发器578清零。
现在转看图11示明的按照本发明一个实施例在指令集内适合于前后关系控制和前后关系间通信的机器指令中字段和比特的指配。译码和字段编码的指令细节与本发明没有直接关系,所包括的数字主要用来示例操作数字段,它们提供出前后关系控制器所需的信息。
前后关系事件状态寄存器94内各比特的测试中,应用SKPx指令600能够最高效地完成。这类指令在掩蔽或比特方式的比较下实施测试,该比较是在8个相关信号所规范的“状态组”(C组)604与指令字中包含的8比特掩蔽值605之间进行的。如果由一个测试操作603规范的状态为真,则跟随于SKPx后的指令跳越过去。与本发明相关的是C组01即“事件”组608,它不受事件掩蔽的影响,并且它测试运行的前后关系中事件状态寄存器94里的内容。
向量(VECTOR)指令610的译码来自象SKPx指令那样相同的操作码602,但在其“测试操作”字段612中有不同的值。向量指令字中的另外10比特为向量基础地址613,它的应用在下面说明。
信号(SIGNAL)指令620应用来实现前面所述的上下之间软件信令功能。信号指令620是处理器控制指令之一,它基于具有不同的子译码值623的扩展的操作码字段622的值。当执行一个信号指令时,在前后关系控制器内译码出两个参数字段。一个特定的事件号数624标识出一个具体事件,以断定与特定的前后关系号数625关联的事件。所有事件都可能是信号指令620的目标,但是,在该前后关系控制器中具体情况下的实现细节和所连接的事件源,会使得由信号指令620断定某些状态这件事很困难。
ACK指令630和INIT指令640是格式化的,以类似于信号指令620的方式进行译码,但这两者各只有一个参数字段。ACK指令630只携载一个事件号数624,因为确认一个前后关系的事件只能得到同一前后关系中执行的码的许可,所以前后关系号数参数将是多余的。INIT指令640只携载一个前后关系号数625,因为初始化功能只是针对前后关系的,不针对前后关系所关联的事件。
选通(STROBE)指令650能从多至32个离散的、不可少的控制功能653中产生出所规定的一个。WAIT(等待)指令654与前后关系控制器关联,它使运行的前后关系中ACT比特清零;SETFG指令655使运行的前后关系中FG比特设置;CLRFG指令656使运行的前后关系中FG比特清零;SLEEP(睡眠)指令657使前后关系控制器暂停工作,以容许处理器进入功耗非常低的睡眠模式。
INIT指令640用来强使目标前后关系进入一个已知状态,或是初始化,或是对误码作恢复。执行INIT指令640使ACT和FG两者的比特设置,在指令所规定的前后关系中逻辑值为真。它也使前后关系CY(进位)标志符设置,以容许诸前后关系可区分出硬件复位(CY等于0时)和INIT(CY等于1时),强使该前后关系在一个前后关系专用初始化向量上开始执行操作。
现在转看图12示明的按照本发明一个实施例用来在处理器上产生控制存储器地址用的比特源。供上面所述的前后关系专用初始化向量用的初始化向量地址,可以将INIT指令640中(图11)前后关系号数字段625的内容放入比特位置5来形成,由图12中所示的INIT指令666中的一个输入可见,它经过了包含全0的3个地址字。
现在转看图13示明的按照本发明一个实施例的数据结构图例子,它用于控制存储器中的初始化向量。如图所示,此实施例中应用了8个初始化向量670-677的集合,位置上为接连的4字区间,控制存储器地址图模(CS字)678开始于控制存储器地址0x0000。选择4字的向量节距是因为在这个处理器上长的绝对分支需要3个字,除了最后(前后关系7)向量677之外其余都会要求这样的分支。由于前后关系7是在硬件复位之后要激活的唯一前后关系,所以对前后关系7不需要分支是较实用的。
所以,在前后关系7初始化向量上的代码可用来在硬件复位之后使其它前后关系初始化,并用于对前后关系7处理INIT功能。其它处理器上应用的向量节距可以选择成依赖于实施例的方式。在某些处理器上还希望应用该初始化向量的内容作为一个地址,它通过该向量实现一种间接的分支,而不是在向量地址上开始执行程序。图11中所示的向量指令610对于基于优先权的事件译码是实用的,而这类事件使得前后关系激活。
现在转看图14示明的按照本发明一个实施例的运行示意图,显示出在处理器上应用来优先化和译码特定的前后关系激活比特时由向量指令产生的目标地址。如前面所述,向量指令610对于使前后关系激活的、基于优先权的事件之译码来说,是实用的。在执行时,这个指令将8个处理器680-687之集合中的一个,分支成位于控制存储器中的向量表690。
向量表基础地址613规定为处在向量指令字610中的10个最低位比特上。一个特定向量的选择是借助于优先编码的前后关系事件状态寄存器94同前后关系事件掩蔽寄存器90相与。然后,应用一个最终的事件号数694作为向量地址678(见图13)中的比特位置6至4并配合以比特位置3至0上的全0集692,使得在指配给最高优先权(最低号数)的、断定的非掩蔽事件之8字处理程序位置680-687的开始处,继续执行程序。由于图11中所示的向量指令610通常在跟随于等待指令654的再激活之后短时地应用,所以有理由期望至少有一个非掩蔽事件触发器为真(等于1)。如果情况不是这样,前后关系将不会变成有效的。然而,对这种情况有可能在“基础+64字”688上包括一个向量,在那里没有设置的事件比特。
对于当前实施例的指令集,这个8字的向量节距使许多处理程序在处理该事件中完全可在不需要分支的向量表内进行。对于提供出此种类型向量译码功能的实施例,可以选择这节距来达到一种平衡,即由于处理程序区域要比通常需要的大得多,要使整个处理程序集适应于向量表与留存的、实质未用的控制存储器数量之间的平衡。
从上面所述显然可见,本发明提供出在处理器中用以管理多任务的一种前后关系控制器,以及运行此前后关系控制器的一种方法。在一个实施例中,前后关系控制器中包括:(1)一个时间片指令计数器,它对关于一个给定的后台任务所执行的许多指令进行计数,和(2)一个后台任务控制器,当执行的指令数等于动态可编程的时间片值时,它循环地执行与另一个后台任务相对应的前后关系。
虽然,已经详细地说明了本发明,但本技术领域内的熟练人员知道,他们能对此作出各种改变、替代和变更,偏离不开本发明在其最广泛形式上的精神实质和范畴。
Claims (22)
1.一种前后关系控制器,用于在处理器中管理多任务处理,包括:
一个时间片指令计数器,它对关于一个给定的后台任务所执行的许多指令进行计数;和
一个后台任务控制器,当所述计数等于一个动态可编程的时间片值时,它循环地激活与另一个后台任务相对应的前后关系。
2.权利要求1中所述的前后关系控制器,其中,所述时间片指令计数器初始包含所述动态可编程的时间片值作为所述给定的后台任务开始用的一个时间片,在执行关于所述给定的后台任务的所述指令时,所述时间片指令计数器的计数减少。
3.权利要求1中所述的前后关系控制器,其中,当全部所述后台任务都是非激活时,所述前后关系控制器将所述处理器置于空闲状态。
4.权利要求1中所述的前后关系控制器,其中,所述后台任务控制器通过转向一个软件可选择存储单元,适应于激活一个对应于具体的后台任务的前后关系。
5.权利要求1中所述的前后关系控制器,还包括一个前台任务控制器,它基于优先权并且响应于事件,激活对应于前台任务的前后关系,服从于与所述前台任务对应的所述前后关系的激活,所述后台任务控制器循环地激活对应于所述后台任务的前后关系。
6.权利要求1中所述的前后关系控制器,其中,所述动态可编程时间片值包含在所述处理器的一个寄存器中。
7.权利要求1中所述的前后关系控制器,其中,在所述处理器上执行的应用任务能够编程所述动态可编程时间片值。
8.一种在处理器中管理多任务处理的方法,包括步骤:
对关于给定的后台任务所执行的许多指令进行计数;和
当所述计数等于动态可编程时间片值时,循环地激活对应于另一个后台任务的前后关系。
9.权利要求8中所述的方法,其中,所述计数步骤中包含有步骤:
以所述动态可编程时间片值对一个时间片指令计数器作初始化,作为供所述给定的后台任务开始的时间片;和
当关于所述给定的后台任务的所述指令被执行时,使所述时间片指令计数器减少计数。
10.权利要求8中所述的方法,还包含有步骤,当全部所述后台任务都非激活时,将所述处理器置于空闲状态。
11.权利要求8中所述的方法,其中,所述循环激活的步骤中包含有步骤,转向软件可选择存储单元。
12.权利要求8中所述的方法,还包含有步骤,基于优先权并且响应于事件,激活对应于前台任务的前后关系,所述循环激活步骤中包含有步骤,服从于与所述前台任务对应的所述前后关系的激活,循环地激活对应于所述后台任务的前后关系。
13.权利要求8中所述的方法,还包含有步骤,将所述动态可编程时间片值存储入所述处理器的一个寄存器中。
14.权利要求8中所述的方法,还包含有步骤,以正在所述处理器上执行的应用任务对所述动态可编程时间片值编程。
15.一种处理器,包括:
一个指令译码器,对接收入所述处理器并对应于多个任务的指令进行译码;
多个寄存器集,对应于所述多个任务,包含有要***作的操作数;
一个执行核心,连接于所述指令译码器和所述多个寄存器集上,它执行与所述多个任务中激活的一个相对应的诸指令,操作诸个所述操作数;和
一个前后关系控制器,连接于所述指令译码器和所述执行核心上,它管理关于所述多个任务的多任务处理,其中包括:
一个时间片指令计数器,对关于给定的后台任务所执行的许多
指令进行计数,以及
一个后台任务控制器,当所述计数等于动态可编程时间片值
时,它循环地激活对应于另一个后台任务的前后关系。
16.权利要求15中所述的处理器,其中,所述时间片指令计数器初始包含有所述动态可编程时间片值,作为用于所述给定的后台任务开始的时间片,当关于所述给定的后台任务的所述指令被执行时,所述时间片指令计数器减少计数。
17.权利要求15中所述的处理器,其中,当全部所述后台任务都非激活时,所述前后关系控制器将所述处理器置于空闲状态。
18.权利要求15中所述的处理器,其中,通过转向软件可选择存储单元,所述后台任务控制器适应于激活一个对应于具体的后台任务的前后关系。
19.权利要求15中所述的处理器,其中,所述前后关系控制器又包括一个前台任务控制器,基于优先权并且响应于事件,激活对应于前台任务的前后关系,服从于与所述前台任务对应的所述前后关系的激活,所述后台任务控制器循环地激活对应于所述后台任务的前后关系。
20.权利要求15中的所述处理器,其中,所述动态可编程时间片值包含在所述处理器的一个寄存器中。
21.权利要求15中的所述处理器,其中,正在所述处理器上执行的应用任务能够编程所述动态可编程时间片值。
22.权利要求15中的所述处理器,其中,所述处理器组成通用计算机中的一部分。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7746998P | 1998-03-10 | 1998-03-10 | |
US60/077,469 | 1998-03-10 | ||
US09/213,970 | 1998-12-17 | ||
US09/213,970 US6986141B1 (en) | 1998-03-10 | 1998-12-17 | Context controller having instruction-based time slice task switching capability and processor employing the same |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1245922A true CN1245922A (zh) | 2000-03-01 |
Family
ID=26759297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99103959A Pending CN1245922A (zh) | 1998-03-10 | 1999-03-10 | 有时间片任务切换能力的前后关系控制器及其应用处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6986141B1 (zh) |
EP (1) | EP0942365A2 (zh) |
JP (1) | JPH11296386A (zh) |
CN (1) | CN1245922A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321359B (zh) * | 2007-06-06 | 2011-05-25 | 中兴通讯股份有限公司 | 移动通信***中性能数据的传输方法 |
CN101303658B (zh) * | 2008-06-18 | 2011-09-21 | 中兴通讯股份有限公司 | 基于前/后台任务的通信方法和装置 |
CN102999387A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 进程运行装置及方法 |
CN102999388A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 进程控制装置和方法 |
CN113381668A (zh) * | 2021-07-21 | 2021-09-10 | 无锡台翔电子技术发展有限公司 | 用于电机控制器的控制方法、电机控制器及电动车用电机 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7318090B1 (en) * | 1999-10-20 | 2008-01-08 | Sony Corporation | Method for utilizing concurrent context switching to support isochronous processes |
US7712097B2 (en) * | 2002-07-24 | 2010-05-04 | Information Mosaic Limited | Data processing system to initialize or modify the system to perform transactions using mask comprises on/off flags |
US7313797B2 (en) * | 2002-09-18 | 2007-12-25 | Wind River Systems, Inc. | Uniprocessor operating system design facilitating fast context switching |
JP2004220070A (ja) | 2003-01-09 | 2004-08-05 | Japan Science & Technology Agency | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
US7996839B2 (en) * | 2003-07-16 | 2011-08-09 | Hewlett-Packard Development Company, L.P. | Heterogeneous processor core systems for improved throughput |
WO2005060575A2 (en) * | 2003-12-10 | 2005-07-07 | X1 Technologies, Inc. | Performing operations in response to detecting a computer idle condition |
JP4204522B2 (ja) * | 2004-07-07 | 2009-01-07 | 株式会社東芝 | マイクロプロセッサ |
KR101279343B1 (ko) * | 2005-09-13 | 2013-07-04 | 프리스케일 세미컨덕터, 인크. | 멀티-스레딩된 프로세서 구조 |
US8046567B2 (en) * | 2005-09-13 | 2011-10-25 | Freescale Semiconductor, Inc. | Multi-threaded processor architecture |
JP2010517161A (ja) * | 2007-01-23 | 2010-05-20 | アギア システムズ インコーポレーテッド | デバイス用シングル・スレッド・アーキテクチャにおけるアプリケーションの切り替え |
US7962911B2 (en) * | 2007-02-02 | 2011-06-14 | International Business Machines Corporation | Method and apparatus for preventing undesired termination of a process in an information handling system |
JP5155336B2 (ja) * | 2008-01-15 | 2013-03-06 | カーネロンシリコン株式会社 | タスク処理装置 |
EP2446339A1 (en) * | 2009-06-26 | 2012-05-02 | ST-Ericsson (Grenoble) SAS | Management of a usb host device |
US9836555B2 (en) * | 2009-06-26 | 2017-12-05 | Micron Technology, Inc. | Methods and devices for saving and/or restoring a state of a pattern-recognition processor |
US9135144B2 (en) * | 2009-10-22 | 2015-09-15 | Freescale Semiconductor, Inc. | Integrated circuits and methods for debugging |
KR101680109B1 (ko) * | 2009-10-29 | 2016-12-12 | 삼성전자 주식회사 | 복수 코어 장치 및 그의 로드 조정 방법 |
KR102006470B1 (ko) | 2011-12-28 | 2019-08-02 | 삼성전자 주식회사 | 사용자 디바이스에서 멀티태스킹 운용 방법 및 장치 |
US8924990B2 (en) * | 2013-01-31 | 2014-12-30 | Red Hat, Inc. | Providing operation system history |
US9632844B2 (en) * | 2013-12-12 | 2017-04-25 | International Business Machines Corporation | Non-preemption of a group of interchangeable tasks in a computing device |
US9323575B1 (en) * | 2015-02-26 | 2016-04-26 | Freescale Semiconductor, Inc. | Systems and methods for improving data restore overhead in multi-tasking environments |
GB201717303D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Scheduling tasks in a multi-threaded processor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5239652A (en) * | 1991-02-04 | 1993-08-24 | Apple Computer, Inc. | Arrangement for reducing computer power consumption by turning off the microprocessor when inactive |
JP2520544B2 (ja) * | 1991-09-26 | 1996-07-31 | インターナショナル・ビジネス・マシーンズ・コーポレイション | タスクのオ―バ―ラン状態を監視する方法及びタスク実行サイクルのオ―バ―ランを検出する装置 |
US5528513A (en) * | 1993-11-04 | 1996-06-18 | Digital Equipment Corp. | Scheduling and admission control policy for a continuous media server |
JP2677202B2 (ja) * | 1994-08-12 | 1997-11-17 | 日本電気株式会社 | マイクロプロセッサ |
US6009454A (en) * | 1994-09-30 | 1999-12-28 | Allen-Bradley Company, Llc | Multi-tasking operation system for industrial controller |
JPH08320797A (ja) * | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US5799182A (en) * | 1997-01-21 | 1998-08-25 | Ford Motor Company | Multiple thread micro-sequencer apparatus and method with a single processor |
-
1998
- 1998-12-17 US US09/213,970 patent/US6986141B1/en not_active Expired - Lifetime
-
1999
- 1999-03-02 EP EP99301549A patent/EP0942365A2/en not_active Withdrawn
- 1999-03-10 JP JP11064127A patent/JPH11296386A/ja not_active Abandoned
- 1999-03-10 CN CN99103959A patent/CN1245922A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321359B (zh) * | 2007-06-06 | 2011-05-25 | 中兴通讯股份有限公司 | 移动通信***中性能数据的传输方法 |
CN101303658B (zh) * | 2008-06-18 | 2011-09-21 | 中兴通讯股份有限公司 | 基于前/后台任务的通信方法和装置 |
CN102999387A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 进程运行装置及方法 |
CN102999388A (zh) * | 2012-11-09 | 2013-03-27 | 北京奇虎科技有限公司 | 进程控制装置和方法 |
CN102999388B (zh) * | 2012-11-09 | 2016-06-29 | 北京奇虎科技有限公司 | 进程控制装置和方法 |
CN102999387B (zh) * | 2012-11-09 | 2016-06-29 | 北京奇虎科技有限公司 | 进程运行装置及方法 |
CN113381668A (zh) * | 2021-07-21 | 2021-09-10 | 无锡台翔电子技术发展有限公司 | 用于电机控制器的控制方法、电机控制器及电动车用电机 |
Also Published As
Publication number | Publication date |
---|---|
JPH11296386A (ja) | 1999-10-29 |
EP0942365A2 (en) | 1999-09-15 |
US6986141B1 (en) | 2006-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1245922A (zh) | 有时间片任务切换能力的前后关系控制器及其应用处理器 | |
CN1233016A (zh) | 具有事件相关矢量选择的历境控制器和采用其的处理器 | |
CN1129843C (zh) | 使用组合的数据处理器***和指令*** | |
CN1147785C (zh) | 执行多个指令流的多程序流程同时处理器 | |
CN100351788C (zh) | 嵌入式设备的驱动方法 | |
CN1174313C (zh) | 多指令集的数据处理 | |
CN1075021A (zh) | 多媒体计算机操作***及方法 | |
CN1245681C (zh) | 进入和退出多线程处理器中多线程的方法和装置 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
CN1183446C (zh) | 处理多线程处理器中事件发生的方法和装置 | |
JP4088335B1 (ja) | 仮想キュー処理回路およびタスク処理装置 | |
CN101069161A (zh) | 调度方法、调度装置和多处理器*** | |
US20050240924A1 (en) | Prerequisite-based scheduler | |
CN1993670A (zh) | 信息处理装置 | |
CN1268688A (zh) | 异步更新共享资源的接口***和方法 | |
CN1252144A (zh) | 一可编程组件中可构元件的自同步方法 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN1273890C (zh) | Arm处理器架构的微内核设计方法 | |
CN1291032A (zh) | 使用分组摘要信息快速和自适应处理分组的设备和方法 | |
CN1846194A (zh) | 一种在处理器中执行的计算线程的暂停与解除分配的整合机制 | |
CN1912926A (zh) | 可中断图形处理单元处理多个程序的方法和图形处理单元 | |
CN101051301A (zh) | 用于操作计算机处理器阵列的方法和装置 | |
CN101046741A (zh) | 处理器装置和复合条件处理方法 | |
CN1233015A (zh) | 具有节能模式自动进入的历境控制器以及采用其的处理器 | |
CN1143213C (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |