存储器模块的制作方法

文档序号:19570578发布日期:2019-12-31 18:53阅读:168来源:国知局
存储器模块的制作方法

相关申请的交叉引用

这里通过参考并入2018年6月21日提交的日本专利申请no.2018-117712的全部公开内容,包括说明书、附图和摘要。

本发明涉及存储器模块,例如,涉及用于存储上下文的存储器模块的控制技术。



背景技术:

具有上下文切换功能的cpu具有用于存储上下文信息的多个寄存器组。cpu通过切换要参考的寄存器组来切换要执行的任务。当要执行的任务的数量大于所实现的寄存器组的数量时,需要在寄存器组和外部存储器之间执行上下文保存处理和恢复处理。例如,jp-a-2013-164791描述了一种用于加速上下文保存处理和上下文恢复处理的技术。在jp-a-2013-164791中,在执行任务之后可能执行的上下文信息(链接上下文信息)被处理为上下文信息的一部分。当前正在执行的任务的上下文信息的链接上下文被用于存储可能要在寄存器组中执行的上下文。接下来,当cpu执行新任务时,仅需要切换在执行假定任务时要参考的寄存器组,从而可以高速执行上下文切换。



技术实现要素:

然而,在专利文献1中,需要知道接下来可能发生的任务。在中断处理中,很难知道接下来可能发生的任务,因为接下来执行与当前执行的任务无关的任务。因此,在准备中断时,在中断之后要执行的任务的上下文信息不能被保持在寄存器组中。结果,从中断恢复时需要时间来恢复上下文信息。

在本实施例的存储器模块中,当访问控制电路接收到通过中断保存任务的上下文信息的请求时,访问控制电路向第一存储单元写入通过第一总线在一个周期内从cpu传送的上下文信息、标识上下文信息的上下文编号以及标识在先前中断中从cpu传送的上下文信息的链接上下文编号。

根据实施例的存储器模块,可以在从中断返回时在短时间内返回上下文信息。

附图说明

图1是示出根据第一实施例的存储器模块1000的配置的图。

图2是示出根据第二实施例的半导体器件100的配置的图。

图3示出了第二实施例的存储在缓冲器组150中的数据。

图4示出了存储在ram160中的数据。

图5是示出根据第二实施例的上下文撤离(evacuation)期间的数据流的图。

图6是根据第二实施例的上下文撤离的时序图。

图7是示出根据第二实施例的上下文恢复期间的数据流的示例的图。

图8是根据第二实施例的上下文反转时的时序图的示例。

图9是示出根据第二实施例的在上下文返回时的数据流的另一示例的图。

图10是根据第二实施例的上下文反转时的时序图的另一示例。

图11是用于说明根据第二实施例的在预取时的缓冲器控制的图。

图12是示出多个中断的示例的图。

图13是示出根据第二实施例的在没有预取功能的情况下产生多个中断时的操作时序的图。

图14是示出根据第二实施例的当发生图12的多个中断时并且当存在预取功能时的操作时序的图。

图15是示出根据第三实施例的存储器模块210的配置的图。

图16是示出根据第三实施例的存储在扩展缓冲器组250中的信息的图。

图17是示出根据第二实施例的在上下文保存和恢复时的操作时序的图。

图18是用于说明根据第三实施例的上下文撤离和返回中的操作时序的图。

图19是示出根据第四实施例的存储在ram160和缓冲器组150中的信息的图。

图20是示出根据第四实施例的当返回到上下文时的操作时序的第一示例的图。

图21是示出根据第四实施例的当返回到上下文时的操作时序的第二示例的图。

图22是图示根据第四实施例的当返回到上下文时的操作时序的第三示例的图。

图23是示出根据第四实施例的当返回到上下文时的操作时序的第四示例的图。

图24是用于说明根据第五实施例的上下文撤离期间的缓冲器控制的图。

图25示出了表示当发生图12所示的中断(1)、中断(2)、中断(3)和中断(4)时通过上下文撤离而存储在缓冲器组150中的数据的图。

图26是用于说明根据第五实施例的当上下文返回到上下文时的缓冲器控制的图。

图27是示出根据第五实施例的用于上下文恢复的处理过程的流程图。

图28是示出根据第五实施例的预取的处理过程的流程图。

具体实施方式

下面将参考附图描述实施例。

第一实施例

图1是示出根据第一实施例的存储器模块1000的配置的图。存储器模块1000包括访问控制电路1140、第一存储单元1150和第二存储单元1160。第一存储单元1150经由第一比特宽度总线bs2连接到cpu1130。第二存储单元1160通过具有小于第一比特宽度的第二比特宽度的内部总线bs4连接到第一存储单元1150。访问控制电路1140在接收到由于中断而撤离任务上下文信息的请求时,将要在一个周期内从cpu1130通过总线bs2传送的上下文信息写入第一存储单元1150。访问控制电路1140还将标识上下文信息的上下文编号和标识在中断之前从cpu1130传送的上下文信息的链接上下文编号写入第一存储电路1150。在写入第一存储单元1150之后,访问控制电路1140与存储在第一存储单元1150中的上下文编号相关联地、通过内部总线bs4在多个周期中将包括存储在第一存储单元1150中的上下文信息和链接上下文编号的数据传送到第二存储单元1160。

如上所述,根据本实施例,由于在通过中断保存上下文信息时用于标识在中断之前从cpu传送的上下文信息的链接上下文编号被写入缓冲器组,因此可以在从中断恢复时在短时间内恢复上下文信息。

第二实施例

图2是示出根据第二实施例的半导体器件100的配置的图。

半导体器件100包括中断控制器120、中央处理单元130和存储器模块110。

中断控制器120控制cpu130的中断处理。如专利文献1中所述,cpu130不具有用于保持多个任务的上下文的寄存器组。cpu130具有用于保持一个任务的上下文的寄存器。在由于产生中断而导致的上下文保存操作中,cpu130将上下文信息和用于标识上下文信息的上下文编号输出到存储器模块110。存储器模块110存储由于产生中断而从cpu130保存的上下文信息和上下文编号,并且在后续返回时将所存储的上下文信息传送到cpu130。cpu130利用从存储器模块110传送的上下文信息重写寄存器。

上下文保存是指将上下文信息从cpu130传送到存储器模块110。上下文返回是指将上下文数据从存储器模块110传送到cpu130。

存储器模块110包括访问控制电路140、缓冲器组150和随机存取存储器(ram)160。

cpu130和访问控制电路140通过具有l比特长度的总线bs1彼此连接。cpu130和缓冲器组150通过具有n比特宽度的总线bs2连接。cpu130和ram160通过具有m比特宽度的总线bs3连接。缓冲器150和ram160通过m+α比特宽度的内部总线bs4连接。其中l<m<n。备选地,可以使用n=(n-1)×m。

访问控制电路140通过总线bs1从cpu130接收上下文保存请求sreq和上下文恢复请求rreq,并基于这些请求控制缓冲器150和ram160。

上下文信息包括cpu130中的指示正在执行任务的状态的程序计数器的值、保持在cpu130中的寄存器中的地址、数据或启动等。上下文信息被分成n个m比特的子上下文信息(0)到(n-1)。

子上下文数据(0)经由总线bs3从cpu130传送到ram160。子上下文数据(0)经由总线bs3从ram160传送到cpu130。

子上下文信息(1)至(n-1)在一个周期中通过总线bs2从cpu130传送到缓冲器150。子上下文信息(1)至(n-1)在一个周期中经由总线bs2从缓冲器组150传送到cpu130。

从缓冲器组150中,子上下文信息(1)和链接上下文编号在一个周期中被传送到ram160,并且子上下文信息(i)(i=2至(n-1))在一个周期中被顺序传送。

图3是示出根据第二实施例的存储在缓冲器组150中的数据的图。缓冲器组150包括n个缓冲器(0)到(n-1)。缓冲器(0)至(n-1)具有可以存储(m+α)比特的数据的区域。也就是说,缓冲器组150具有n×(m+α)比特的大小。

缓冲器(0)存储上下文编号。上下文编号是用于标识上下文信息的编号。链接上下文编号和子上下文信息(1)存储在缓冲器(1)中。链接上下文编号是用于标识一次性从cpu130传送并存储在缓冲器组150中的上下文信息的标识符。如果未发生上下文保存,则上下文编号和链接上下文编号将保留无效值。子信息(2)到子信息(n-1)的子上下文信息存储在缓冲器(2)到(n-1)中。链接上下文编号可以保持在缓冲器(1)之外的缓冲器中。

在以下描述中,存储在缓冲器组150中的上下文编号、链接上下文编号和子上下文信息(1)至(n-1)可以被称为上下文数据。

图4是示出存储在ram160中的数据的图。ram160在程序开始执行之后直接或通过缓冲器组150存储从cpu130传送的所有上下文信息以及从缓冲器组150传送的链接上下文编号。ram160地址对应于上下文编号。

在图4的情况下,ram160的地址add(k)是与上下文编号=k对应的地址。

上下文编号=k的上下文信息(子上下文信息(0)至(n-1))和链接上下文编号存储在从地址add(k)开始的n×(m+α)个比特的块中。

n×(m+α)个比特的块被分成n个(m+α)比特的区域0到(n-1)。从cpu130传送的子上下文数据(0)存储在第一区域0中。从缓冲器组150的缓冲器(1)传送的链接上下文编号和子上下文信息(1)存储在第二区域1中。从缓冲器组150的缓冲器(i)传送的子上下文信息(i)存储在区域i(i>1)中。

(上下文撤离)访问控制电路140向缓冲器组150写入在一个周期中从cpu130通过总线bs2传送的上下文信息和在通过中断被请求撤离任务上下文信息时标识上下文信息的上下文编号。

另外,访问控制电路140将标识在中断之前从cpu130传送的上下文信息的链接上下文编号写入缓冲器组150。具体地,当在接收到保存请求之前存储在缓冲器组150中的上下文编号不是预定的无效值时,访问控制电路140通过存储在缓冲器组150中的上下文编号来更新链接上下文编号。当在接收到保存请求之前存储在缓冲器组150中的上下文编号是预定的无效值时,访问控制电路140用预定的无效值更新链接上下文编号。

此后,访问控制电路140将包括存储在缓冲器组150中的上下文信息和链接上下文编号的数据通过内部总线bs4在与存储在缓冲器组150中的上下文编号相对应的多个周期传送到ram160。

图5是示出第二实施例中的上下文保存时的数据流的图。图6是第二实施例中的上下文保存时的时序图。在图6中,ram160写入周期由idle信号的激活来指示。

参见图5和图6,cpu130通过总线bs1输出上下文保存请求sreq。访问控制电路140接收上下文撤离请求sreq。

访问控制电路140通过总线bs1输出上下文保存接受sack。cpu130接收上下文保存接受sack。

cpu130经由总线bs1输出上下文编号ctx_id,这里为“1”。访问控制电路140接收上下文编号ctx_id。

如果缓冲器(0)中的上下文编号和缓冲器(1)中的链接上下文编号是无效值,则访问控制电路140用输入上下文编号ctx_id更新缓冲器(1)中的链接上下文编号。如果缓冲器(0)中的上下文编号和缓冲器(1)中的链接上下文编号是有效值,则访问控制电路140用缓冲器(0)中的上下文编号更新缓冲器(1)中的链接上下文编号。访问控制电路140利用输入上下文编号ctx_id更新在缓冲器(0)中的上下文编号。

cpu130通过总线bs2在一个周期内将子上下文信息(1)至子上下文信息(n-1)同时输出到缓冲器组150。同时,cpu130经由总线bs3在一个周期中将子上下文数据(0)输出到ram160。访问控制电路140将子上下文信息(1)至子上下文信息(n-1)写入到缓冲器(1)至(n-1)中。访问控制电路140将子上下文信息(0)写入ram160中的从对应于上下文编号ctx_id的地址开始的块的第零区域中。

此后,访问控制电路140使访问控制电路140通过内部总线bs4在多个周期中将存储在缓冲器(1)至(n-1)中的信息顺序地输出到ram160中的从对应于上下文编号ctx_id的地址开始的块中。

在第一周期中,存储在缓冲器(1)中的链接上下文编号和子上下文信息(1)被发送至ram160中的从对应于上下文编号ctx_id的地址开始的块的第一区域。在随后的第i(i>2)个周期中,存储在缓冲器(i)中的子上下文信息(i)被发送至ram160中的从对应于上下文编号ctx_id的地址开始的块的第i区域。

<上下文恢复>

当从cpu130接收到恢复通过中断撤离的上下文信息的请求时,访问控制电路140在标识返回的上下文信息的上下文编号与存储在缓冲器(0)中的上下文编号匹配时执行以下操作。访问控制电路140通过总线bs2在一个周期中将存储在缓冲器(0)中的上下文编号所标识的缓冲器(1)至(n-1)的子上下文信息(1)至(n-1)传送至cpu130。

当接收到恢复通过中断撤离的上下文信息的请求时,访问控制电路140在标识要返回的上下文信息的上下文编号与存储在缓冲器(0)中的上下文编号不匹配时执行以下处理。访问控制电路140利用标识要返回的上下文信息的上下文编号来更新缓冲器(0)的上下文编号。访问控制电路140在多个周期中将包括与更新的上下文编号相关联的存储在ram160中的链接上下文编号和子上下文信息(1)至(n-1)的数据传送到缓冲器组150。然后,访问控制电路140通过总线bs2在一个周期中将缓冲器(1)至(n-1)中的所传送的子上下文信息(1)至(n-1)传送到cpu130。

无论标识要返回的上下文信息的上下文编号如何,访问控制电路140都通过总线bs3在一个周期中将与上下文编号对应的存储在ram160中的子上下文信息(0)传送到cpu130。

图7是示出根据第二实施例的在上下文返回时的数据流的示例的图。图8是根据第二实施例的上下文返回时的时序图的示例。图7和图8示出了一个示例,其中缓冲器(0)中的上下文编号与输入上下文编号ctx_id匹配。

参考图7和图8,cpu130通过总线bs1输出上下文返回请求rreq。访问控制电路140接收上下文返回请求(rreq)。

访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130接收上下文返回接受(rack)。

cpu130经由总线bs1输出上下文编号ctx_id,这里为“1”。访问控制电路140接收上下文编号ctx_id。

当缓冲器(0)中的上下文编号与接收的上下文编号ctx_id一致时,访问控制电路140使ram160通过总线bs3在一个周期中向cpu130输出被保持在从对应于上下文编号ctx_id的地址开始的块的第0区域中的子上下文信息(0)。

同时,如图8中的ctx_rd所示,访问控制电路140使缓冲器(1)至(n-1)通过总线bs2在一个周期中将子上下文信息(1)至子上下文信息(n-1)输出到cpu130。

访问控制电路140在子上下文信息(0)至子上下文信息(n-1)的输出的同时通过总线bs1输出上下文返回结束(end)。cpu130接收上下文返回结束(end)。

图9是示出根据第二实施例的返回上下文时的数据流的另一示例的图。图10是根据第二实施例的上下文返回时的时序图的另一示例。图9和图10示出了缓冲器(0)中的上下文编号与输入上下文编号ctx_id不匹配的示例。

参见图9和图10,cpu130通过总线bs1输出上下文返回请求(rreq)。访问控制电路140接收上下文返回请求(rreq)。

访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130接收上下文返回接受(rack)。

cpu130经由总线bs1输出上下文编号ctx_id,这里为“1”。访问控制电路140接收上下文编号ctx_id。

当缓冲器(0)中的上下文编号和输入的上下文编号ctx_id彼此不一致时,访问控制电路140指定ram160中的从对应于上下文编号ctx_id的地址开始的块。访问控制电路140使ram160将指定块的第一到第(n-1)区域中保持的子上下文信息(1)到子上下文信息(n-1)和链接上下文编号顺序地输出到缓冲器组150的缓冲器(1)至(n-1)。

在第一周期中,在ram160中的从对应于上下文编号ctx_id的地址开始的块的第(n-1)区域中保持的子上下文信息(n-1)被发送到缓冲器(n-1)。在第i个(1<i<n-1)个周期中,在ram160中的从对应于上下文编号ctx_id的地址开始的块的第(n-i)个区域中保持的子上下文信息(i)被发送到缓冲器(i)。最后,在ram160中的从对应于上下文编号ctx_id的地址开始的块的第一区域中保持的链接上下文编号和子上下文数据(i)被发送到缓冲器(1)。

此后,访问控制电路140使访问控制电路140经由总线bs3向cpu输出被保持在ram160中的从对应于上下文编号ctx_id的地址开始的块的第0区域中。

同时,如图8中的ctx_rd所示,访问控制电路140通过总线bs2在一个周期中将保持在缓冲器(1)至(n-1)中的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。

访问控制电路140在子上下文信息(0)至子上下文信息(n-1)的输出的同时通过总线bs1输出上下文返回结束(end)。cpu130接收上下文返回结束(end)。

在上下文返回之后的预取中,访问控制电路140基于存储在缓冲器组150中的链接上下文编号在多个周期中通过内部总线bs4将上下文信息和包括存储在ram160中的链接上下文编号的数据传送到缓冲器组150。

图11是用于说明根据第二实施例的在预取时的缓冲器控制的图。

在上下文返回结束后执行预取。访问控制电路140通过缓冲器(1)中的链接上下文编号更新缓冲器(0)中的上下文编号。访问控制电路140通过内部总线bs4在多个周期中将链接上下文编号、子上下文信息(1)至子上下文信息(n-1)从ram160中与更新的上下文编号对应的地址开始的块传送到缓冲器(1)至(n-1)。

当缓冲器(0)中的上下文编号和缓冲器(1)中的链接上下文是相同的值时,访问控制电路140利用预定的无效值更新缓冲器(0)中的上下文编号和缓冲器(1)中的链接上下文编号,而不执行预取操作。

当cpu130在预取操作期间接收到上下文保存请求(sreq)时,访问控制电路140停止预取操作,接受上下文保存请求sreq,并执行正常的上下文保存操作。

图12是示出多个中断的示例的图。在执行任务(1)期间发生中断(1),中途停止执行任务(1),并且执行任务(2)。此时,任务(1)的上下文信息从cpu130被传送到存储器模块110。上下文信息的上下文编号是“1”。

在执行任务(2)期间产生中断(2),中途停止执行任务(2),并执行任务(3)。此时,任务(2)的上下文信息从cpu130被传送到存储器模块110。上下文信息的上下文编号是“2”。

在执行任务(3)期间产生中断(3),中途停止执行任务(3),并执行任务(4)。此时,任务(3)的上下文信息从cpu130被传送到存储器模块110。上下文信息的上下文编号是“3”。

在任务(4)完成之后,执行返回(1),并且继续执行任务(3)。此时,任务(3)的上下文信息从存储器模块110被传送到cpu130。

在任务(3)完成之后,执行返回(2),并且继续执行任务(2)。此时,任务(2)的上下文信息从存储器模块110被传送到cpu130。

在任务(2)完成之后,执行返回(3),并且继续执行任务(1)。此时,任务(1)的上下文信息从存储器模块110被传送到cpu130。

图13是示出在第二实施例中在没有预取功能的情况下发生图12的多个中断时的操作时序的图。

当发生中断(1)时,cpu130经由总线bs1输出上下文保存请求(sreq)。访问控制电路140通过总线bs1输出上下文保存接受(sack)。cpu130经由总线bs1输出上下文编号ctx_id(=“1”)。访问控制电路140用输入上下文编号ctx_id(=“1”)更新缓冲器(0)中的上下文编号。cpu130通过总线bs2在一个周期中将任务(1)的子上下文信息(1)至子上下文信息(n-1)输出到缓冲器(1)至缓冲器(n-1),并且通过总线bs3将任务(1)的子上下文信息(0)输出到ram160。访问控制电路140使ram160将任务(1)的子上下文信息(0)写入从对应于上下文编号ctx_id(=“1”)的地址开始的块。此后,访问控制电路140使ram160通过内部总线bs4在多个周期中将存储在缓冲器(1)至(n-1)中的子上下文信息(1)至子上下文信息(n-1)输出到从对应于上下文编号ctx_id(=“1”)的地址开始的块。

接下来,当发生中断(2)时,如在发生中断(1)的情况下,将上下文编号ctx_id(=“2”)存储在缓冲器组150的缓冲器(0)中,并且将任务(2)的上下文信息(1)至上下文信息(n-1)存储在缓冲器组150的缓冲器(1)至(n-1)中。另外,将任务(2)的子上下文信息(0)至子上下文信息(n-1)存储在从对应于ram160中上下文编号ctx_id(=“2”)的地址开始的块中。

接下来,当发生中断(3)时,如在发生中断(1)的情况下,将上下文编号ctx_id(=“3”)存储在缓冲器组150的缓冲器(0)中,并且将任务(3)的子上下文信息(1)到子上下文信息(n-1)存储在缓冲器组150的缓冲器(1)到(n-1)中。另外,将任务(3)的子上下文信息(0)到子上下文信息(n-1)存储在ram160中的从对应于上下文编号ctx_id(=“3”)的地址开始的块中。

接下来,当返回(1)发生时,cpu130经由总线bs1输出上下文返回请求(rreq)。访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130经由总线bs1输出上下文编号ctx_id(=“3”)。访问控制电路140使ram160将保持在ram160中的起点是与上下文编号ctx_id对应的地址的块中的任务(3)的子上下文信息(0)通过总线3输出到cpu130。同时,访问控制电路140通过总线bs2在一个周期中将缓冲器(1)至(n-1)中保持的任务(3)的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。同时,访问控制电路140通过总线bs1输出上下文返回结束(end)。由于要返回的任务(3)的子上下文信息(1)至子上下文信息(n-1)被保持在缓冲器组150中,所以任务(3)的所有子上下文信息(0)至子上下文信息(n-1)在一个周期中从存储器模块被传送到cpu130。

接下来,当返回(2)发生时,cpu130经由总线bs1输出上下文返回请求(rreq)。访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130经由总线bs1输出上下文编号ctx_id(=“2”)。访问控制电路140使ram160在多个周期中顺序地将从对应于上下文编号ctx_id的地址开始的块中保持的子上下文信息(1)至子上下文信息(n-1)输出到缓冲器组150的缓冲器(1)至(n-1)。此后,访问控制电路140使ram160通过总线bs3在一个周期中将从对应于上下文编号ctx_id的地址开始的区域中保持的上下文信息(0)输出到cpu130。同时,访问控制电路140使缓冲器组150通过总线bs2在一个周期中将缓冲器(1)至(n-1)中保持的任务(2)的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。同时,访问控制电路140通过总线bs1输出上下文返回结束(end)。

图14是示出当在提供第二实施例的预取功能的情况下发生图12的多个中断时的操作时序的图。

下面将描述与图13的操作的不同。由于在中断(1)发生时缓冲器(0)中保持的上下文编号是无效值,因此访问控制电路140将缓冲器(1)的链接上下文编号设置为无效值。

当发生中断(2)时,由于保持在缓冲器(0)中的上下文编号是“1”,因此访问控制电路140将缓冲器(1)中的链接上下文编号更新为“1”。

当发生中断(3)时,由于保持在缓冲器(0)中的上下文编号是“2”,因此访问控制电路140将缓冲器(1)中的链接上下文编号更新为“2”。

当返回(1)发生时,由于子上下文信息和链接上下文编号没有从ram160传送到缓冲器组150,因此缓冲器(1)中的链接上下文编号保持为“2”。

在完成返回(1)之后,执行预取。由于在完成返回(1)之后存储在缓冲器(1)中的链接上下文编号是“2”,因此访问控制电路140将缓冲器(0)的上下文编号更新为“2”。访问控制电路140通过内部总线bs4在多个周期中将从与ram160中上下文编号(=“2”)对应的地址开始的块中保持的任务(2)的子上下文信息(1)至子上下文信息(n-1)和任务(2)的链接上下文编号(=1)输出到缓冲器组150的缓冲器(1)到(n-1)。

接下来,当返回(2)发生时,cpu130经由总线bs1输出上下文返回请求(rreq)。访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130经由总线bs1输出上下文编号ctx_id(=“2”)。访问控制电路140使ram140通过总线bs3在一个周期中将在从对应于上下文编号ctx_id的地址开始的块中保持的任务(2)的子上下文信息(0)输出到cpu130。同时,访问控制电路140通过总线bs2在一个周期中将缓冲器(1)至(n-1)中保持的任务(2)的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。同时,访问控制电路140通过总线bs1输出上下文返回结束(end)。由于任务(2)的子上下文信息(1)至子上下文信息(n-1)被保持在缓冲器组150中,所以任务(2)的所有子上下文信息(0)至子上下文信息(n-1)在一个周期中从存储器模块被传送到cpu130。

如上所述,根据本实施例,当通过中断保存上下文信息时,用于标识在中断之前从cpu传送的上下文信息的链接上下文编号被写入缓冲器组。通过使用该链接上下文编号将上下文信息预取到缓冲器组中,在从中断返回时可以在短时间内返回上下文信息。

在本实施例中,为了减少用于保存和恢复上下文信息的时间,子上下文信息(0)直接从cpu被传送到ram,但是本发明不限于此。子上下文信息(0)也可以经由缓冲器组从cpu被传送到ram。

在本实施例中,为了将上下文编号与上下文信息相关联,将上下文编号=k的上下文信息(子上下文信息(0)至(n-1))和链接上下文编号存储在ram中从地址add(k)开始的块中,但是本发明不限于此。ram可以存储上下文编号、与上下文编号对应的上下文信息、以及链接上下文编号。

第三实施例

图15是示出第三实施例的存储器模块210的配置的图。

第三实施例的存储器模块210与第二实施例的存储器模块110不同。

存储器模块210包括扩展缓冲器组250。类似于缓冲器组150,扩展缓冲器组250还经由总线bs2连接到cpu130。

图16是示出根据第三实施例的存储在扩展缓冲器组250中的信息的图。扩展缓冲器组250包括缓冲器(0)至(n-1)。缓冲器(i)具有m比特的存储区域。

上下文编号被保持在扩展缓冲器组250的缓冲器(0)中。缓冲器(1)至(n-1)保持子上下文信息(1)至(n-1)。

在第二实施例中,在图12中所示的返回(1)处,必须在返回到由最早中断停止的任务(1)时从ram160读取子上下文信息(1)到子上下文信息(n-1)而没有返回任务(3)。结果,需要时间返回任务(1)。

首先,为了比较,将描述第二实施例的存储器模块110的操作。图17是示出根据第二实施例的用于上下文保存和恢复的时序图。

与图14类似,产生中断(1)、中断(2)和中断(3),在缓冲器组150的缓冲器(0)中保持上下文编号(=“3”),在缓冲器(1)中保持链接上下文编号(=“2”),并且在缓冲器(1)到(n-1)中保持任务(3)的子上下文信息(1)至子上下文信息(n-1)。

接下来,当返回到任务(1)的返回(1)发生时,cpu130经由总线bs1输出上下文返回请求(rreq)。访问控制电路140通过总线bs1输出上下文返回接受(rack)。cpu130经由总线bs1输出上下文编号ctx_id(=“1”)。访问控制电路140使ram160通过内部总线bs4在多个周期中将在ram160中从与上下文编号ctx_id(=“1”)对应的地址开始的块中保持的任务(1)的子上下文信息(1)至子上下文信息(n-1)和链接上下文编号输出到缓冲器组150的缓冲器(1)至(n-1)。之后,访问控制电路140使ram160通过总线bs3将从对应于上下文编号ctx_id的地址开始的块中保持的子上下文信息(0)输出到cpu130。同时,访问控制电路140使缓冲器组150通过总线bs2在一个周期中将缓冲器(1)至(n-1)中保持的任务(1)的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。同时,访问控制电路140通过总线bs1输出上下文返回结束(end)。

如上所述,在第二实施例中,当返回任务(1)时,需要将任务(1)的上下文信息从ram160传送到缓冲器组150。

在本实施例中,当在中断发生之后返回到任务(1)时,通过消除从ram160读出子上下文信息(1)至子上下文信息(n-1)的需要,可以缩短恢复所需的时间。任务(1)的上下文信息的保存考虑了当发生多个嵌套中断时返回到由最早中断停止执行的第一个任务的高可能性。

存储在扩展缓冲器组250的缓冲器(0)中的上下文编号是初始状态下的预定无效值。

在接收到通过中断保存上下文信息的请求时,当存储在扩展缓冲器组250的缓冲器(0)中的上下文编号是预定无效值或者与标识要保存的上下文信息的上下文编号匹配时,访问控制电路140执行以下处理。

访问控制电路140使cpu130通过总线bs2以及缓冲器组150在一个周期中将上下文信息输出到扩展缓冲器组250。访问控制电路140不仅将标识上下文信息的上下文编号写入缓冲器组150的缓冲器(0),还将其写入扩展缓冲器组250的缓冲器(0)。访问控制电路140将链接上下文编号写入缓冲器组150的缓冲器(1),但不将链接上下文编号写入扩展缓冲器组250。

<上下文返回>

当接收到恢复由中断撤离的上下文信息的请求时,访问控制电路140在标识要返回的上下文信息的上下文编号与存储在扩展缓冲器组250的缓冲器(0)中的上下文编号匹配时控制以下传输。也就是说,访问控制电路140通过总线bs2在一个周期中将存储在扩展缓冲器组250中的上下文信息(子上下文信息(1)至(n-1))传送到cpu130。访问控制电路140用预定的无效值更新扩展缓冲器组250的缓冲器(0)的上下文编号。

当访问控制电路140接收到恢复由中断保存的上下文信息的请求时,访问控制电路140在标识要恢复的上下文信息的上下文编号与存储在扩展缓冲器组250中的缓冲器(0)的上下文编号不匹配但是与存储在缓冲器组150的缓冲器(0)中的上下文编号匹配时,控制以下传输。也就是说,访问控制电路140将存储在缓冲器组150的缓冲器(0)中的上下文信息(子上下文信息(1)至(n-1))通过总线bs2在一个周期中传送到cpu130中。

当访问控制电路140接收到恢复由中断保存的上下文信息的请求时,如果标识要恢复的上下文信息的上下文编号与存储在扩展缓冲器组250的缓冲器(0)中的上下文编号不一致并且与存储在缓冲器组150的缓冲器(0)中的上下文编号不一致时,访问控制电路140执行以下操作。与第二实施例中一样,访问控制电路140执行正常上下文返回操作。也就是说,访问控制电路140通过内部总线bs4在多个周期中与上下文编号相关联的将包括存储在ram160中的上下文信息(子上下文信息(1)至(n-1))和链接上下文编号的数据传送到缓冲器组150。此后,访问控制电路140通过总线bs2在一个周期中将传送的缓冲器150的上下文信息(子上下文信息(1)至(n-1))传送到cpu130。

无论标识要返回的上下文信息的上下文编号如何,访问控制电路140都通过总线bs3在一个周期中将与上下文编号对应的存储在ram160中的子上下文信息(0)传送到cpu130。

图18是用于说明根据第三实施例的上下文保存和恢复时的操作时序的图。

图18所示的操作与图17所示的操作不同。当发生中断(1)时,上下文编号(=“1”)保持在缓冲器组150的缓冲器(0)中并且子上下文信息(1)至子上下文信息(n-1)保持在缓冲器(1)至(n-1)中,与图17的实施例类似。任务(1)的子上下文信息(0)至子上下文信息(n-1)保持在ram160中的从对应于上下文编号ctx_id(=“1”)的地址开始的块中。

当在程序启动之后发生第一中断(1)时,访问控制电路140不仅将通过总线bs1发送的上下文编号ctx_id(=1)写入缓冲器组150的缓冲器(0),而且写入到扩展缓冲器组250的缓冲器(0)。

如在第二实施例中那样,访问控制电路140将链接上下文编号写入缓冲器组150的缓冲器(1)中。访问控制电路140将通过总线bs2发送的子上下文信息(1)至子文本信息(n-1)不仅写入到缓冲器组150的缓冲器(1)至(n-1),而且写入到扩展缓冲器组250的缓冲器(1)至(n-1)。

当返回(1)发生时,cpu130经由总线bs1输出上下文编号ctx_id(=“1”)。访问控制电路140使ram160将在从对应于上下文编号ctx_id的地址开始的块中保持的任务(1)的子上下文信息(0)输出到cpu130。同时,访问控制电路140通过总线bs2在一个周期中将在扩展缓冲器组250的缓冲器(1)至(n-1)中保持的任务(1)的子上下文信息(1)至子上下文信息(n-1)输出到cpu130。由于任务(1)的子上下文信息(1)至子上下文信息(n-1)被保持在扩展缓冲器组250中,所以任务(1)的所有子上下文信息(0)至子上下文信息(n-1)在一个周期中从存储器模块被传送到cpu130。

<预取>

当缓冲器组150的缓冲器(1)的链接上下文编号与返回之后的预取中的扩展缓冲器组250的缓冲器(0)的上下文编号匹配时,访问控制电路140不将上下文信息(子上下文信息(1)至(n-1))和包括链接上下文编号的数据从ram160传送到缓冲器组150。

当缓冲器组150的缓冲器(1)的链接上下文编号与扩展缓冲器组250的缓冲器(0)的上下文编号不匹配时,访问控制电路140通过内部总线bs4在多个周期中将包括存储在ram160中的链接上下文编号和上下文信息(子上下文信息(1)至(n-1))的数据传送到缓冲器组150中。

如上所述,根据本实施例,当如图12所示的多个中断发生时,在返回到在第一次返回(1)中最早的中断时停止执行的任务的情况下,子上下文信息(1)至(n-1)可以从扩展缓冲器组传送到cpu而不是从ram传送到cpu。这使得可以缩短任务的恢复时间。

第四实施例

在第三实施例中,在通过图12所示的返回(1)返回到任务(1)时,任务(1)的上下文信息可以从扩展缓冲器组250被传送到cpu130。

然而,在通过图12中所示的返回(1)返回到任务(2)时,需要从ram160读取任务(2)的上下文信息,并且返回上下文信息需要很长时间。

在本实施例中,当通过图12所示的恢复(1)恢复任务(2)时,与第二实施例和第三实施例相比,用于恢复的时间减少。

在本实施例中,缓冲器组150保持多个任务的上下文编号和上下文信息。通过预取,将大存储区域分配给具有高优先级的任务。更有可能返回的任务被分配了更高的优先级。

缓冲器组150被配置为针对多个中断中的每一个中断存储上下文数据,上下文数据包括上下文信息、标识上下文信息的上下文编号和标识在先前中断期间传送的上下文信息的链接上下文编号。

图19是示出根据第四实施例的存储在ram160和缓冲器组150中的信息的图。

ram160存储任务(1)至(3)的信息。在ram160中,任务(i)的链接上下文信息编号和子上下文信息(0)至(3)存储在由对应于任务(i)的上下文编号(=i)的地址指示的块中。i=1到4。

在预取中,访问控制电路140通过内部总线bs4将包括存储在ram160中的每个任务的链接上下文编号和上下文信息的部分或全部数据传送到缓冲器组150,以便缓冲器组150的具有最高优先级的任务的上下文信息的数据量大于其他任务的上下文信息的数据量。

例如,存在按优先级的降序排列的任务(3)、任务(2)和任务(1)。通过预取,任务(3)的数据存储在四个缓冲器中,任务(2)的数据存储在三个缓冲器中,任务(1)的数据存储在两个缓冲器中。

缓冲器(0)保存上下文编号(=“3”)。任务(3)的链接上下文编号(=“2”)和任务(3)的子上下文信息(1)从ram160传送到缓冲器(1)。任务(3)的子上下文信息(2)从ram160传送到缓冲器(2)。任务(3)的子上下文信息(3)从ram160传送到缓冲器(3)。

缓冲器(4)保存上下文编号(=“2”)。任务(2)的链接上下文编号(=“1”)和任务(2)的子上下文信息(1)从ram传送160到缓冲器(5)。任务(2)的子上下文信息(2)从ram160传送到缓冲器(6)。

缓冲器(7)保持上下文编号(=“1”),并且任务(1)的链接上下文编号(=“1”)和任务(1)的子上下文信息(1)从ram160传送到缓冲器(8)。

图20是示出根据第四实施例的当返回到上下文时的操作时序的第一示例的图。

从cpu130发送的上下文编号ctx_id是“4”。由于上下文编号(=“4”)的上下文信息未保持在缓冲器组150中,因此上下文编号(4)的链接上下文编号和子上下文信息(3)、(2)、(1)经由内部总线bs4从ram160顺序输出到缓冲器组150。上下文信息(0)通过总线bs3在一个周期中从ram160输出到cpu130,并且通过总线bs2在一个周期中将缓冲器组150的子上下文信息(3)、(2)和(1)输出到cpu130。

图21是示出根据第四实施例的当返回到上下文时的操作时序的第二示例的图。

从cpu130发送的上下文编号ctx_id是“3”。由于上下文编号(=“3”)的子上下文信息(1)、(2)和(3)和链接上下文编号被保持在缓冲器组150中,因此子上下文信息(0)通过总线bs3在一个周期中从ram160被输出到cpu130。此外,缓冲器组150的子上下文信息(3)、(2)和(1)通过总线bs2在一个周期中被输出到cpu130。

图22是示出根据第四实施例的当返回到上下文时的操作时序的第三示例的图。

从cpu130发送的上下文编号ctx_id是“2”。缓冲器组150保持上下文编号(=“2”)的子上下文信息(1)和(2)和链接上下文编号。ram160通过内部总线bs4在一个周期中将上下文编号(=“3”)的子上下文信息(3)输出到缓冲器组150。通过总线bs3在一个周期中将子上下文信息(0)从ram160输出到cpu130,并通过总线bs2在一个周期中将缓冲器组150的子上下文信息(3)、(2)和(1)输出到cpu130。

图23是示出根据第四实施例的当返回到上下文时的操作时序的第四示例的图。

从cpu130发送的上下文编号ctx_id是“1”。缓冲器组150保持上下文编号(=“1”)的子上下文信息(1)和链接上下文编号。ram160通过内部总线bs4在两个周期中将上下文编号(=“3”)的子上下文信息(3)和子上下文信息(2)输出到缓冲器组150。通过总线bs3在一个周期中将子上下文信息(0)从ram160输出到cpu130,并通过总线bs2在一个周期中将缓冲器组150的子上下文信息(3)、(2)和(1)输出到cpu130。

如上所述,根据本实施例,由于任务通过预取具有更高可能性的恢复,所以可以通过将更多子上下文信息传送到缓冲器组来增加缩短恢复时间的可能性。

第五实施例

缓冲器组150被配置为针对多个中断中的每一个中断存储上下文数据,上下文数据包括上下文信息、标识上下文信息的上下文编号以及标识在先前中断时从cpu130传送的上下文信息的链接上下文编号。

缓冲器组150包括缓冲器(1-0)、缓冲器(1-1)、缓冲器(1-2)、缓冲器(1-3)、缓冲器(2-0)、缓冲器(2-1)、缓冲器(2-2)、缓冲器(3-0)和缓冲器(3-1)。

缓冲器(1-0)至(1-3)存储第一任务的上下文数据,缓冲器(2-0)到(2-2)存储第二任务的上下文数据,缓冲器(3-0)至(3-1)存储第三任务的上下文数据。

<上下文撤离>

当访问控制电路140接收到通过中断撤离任务上下文信息的请求时,访问控制电路140标识用于存储在一个周期中从cpu130传送的最新上下文数据的区域大小,所述最新上下文数据包括上下文信息和标识上下文信息的上下文编号以及标识在中断之前从cpu130传送的上下文信息的链接上下文编号。访问控制电路140检查缓冲器组150是否具有区域大小。当不存在要存储的区域时,访问控制电路140从缓冲器组150中删除包括存储在缓冲器组150中的任何上下文信息和链接上下文编号的数据,以便创建要存储的区域。此后,访问控制电路140将最新上下文数据写入缓冲器组150。访问控制电路140通过内部总线bs4在一个或多个周期中将包括构成在缓冲器组150中写入的最新上下文数据的上下文信息和链接上下文编号的数据传送到ram160。

在以下说明中,将一个任务的上下文信息划分为从cpu130直接传送到ram160的子上下文信息(0)以及从cpu130传送到缓冲器组150的子上下文信息(1)至(3)。

图24是用于解释在第五实施例中的上下文保存时的缓冲器控制的图。

当缓冲器(1-0)、(2-0)和(3-0)中保持的上下文编号与标识要保存的上下文信息的上下文编号匹配时,访问控制电路140将在缓冲器(1-0)、(2-0)和(3-0)中保持的上下文编号改变为预定的无效值。

访问控制电路140以如下方式将缓冲器组150的数据向右移位。

访问控制电路140丢弃缓冲器(3-0)和(3-1)的数据,将缓冲器(2-0)和(2-1)的数据传送到缓冲器(3-0)和(3-1),并丢弃缓冲器(2-2)的数据。访问控制电路140将缓冲器(1-0)、(1-1)和(1-2)的数据传送到缓冲器(2-0)、(2-1)和(2-2),并丢弃缓冲器(1-3)的数据。访问控制电路140传送来自cpu的数据130到缓冲器(1-0)、(1-1)、(1-2)和(1-3)。访问控制电路140在一个或多个周期中将缓冲器(1-1)、(1-2)和(1-3)的数据传送到ram160。当缓冲器(1-1)、(1-2)和(1-3)的大小之和等于或小于作为内部总线bs4宽度的(m+α)比特时,缓冲器(1-1)、(1-2)和(1-3)的数据在一个周期中被传送到ram160。当缓冲器(1-1)、(1-2)和(1-3)的大小之和超过作为内部总线bs4宽度的(m+α)比特时,缓冲器的数据(1-1)、(1-2)和(1-3)在多个周期中被传送到ram160。

图25a是示出当发生图12中所示的中断(1)时通过上下文保存存储在缓冲器组150中的数据的图。

当中断(1)发生时,访问控制电路140将上下文编号(=1)写入缓冲器(1-0)。访问控制电路140将任务(1)的链接上下文编号和子上下文信息(1)至(3)写入缓冲器(1-1)、(1-2)和(1-3)中。访问控制电路140通过内部总线bs在一个或多个周期中将缓冲器(1-0)、(1-1)、(1-2)和(1-3)的数据传送到ram160。

图25b是示出当生成中断(2)时在上下文保存时存储在缓冲器中的数据的图。

当发生中断(2)时,访问控制电路140将缓冲器(1-0)、(1-1)和(1-2)中保持的任务(1)的上下文编号(=1)、链接上下文编号以及子上下文信息(1)和(2)传送到缓冲器(2-0)、(2-1)和(2-2)(向右移位)。保持在缓冲器(1-3)中的任务(1)的子上下文信息(3)被丢弃。访问控制电路140将上下文编号(=2)写入缓冲器(1-0)。访问控制电路140将任务(2)的链接上下文编号和子上下文信息(1)至(3)写入缓冲器(1-1)、(1-2)和(1-3)中。访问控制电路140通过内部总线bs4在一个或多个周期中将缓冲器(1-0)、(1-1)、(1-2)和(1-3)的数据传送到ram160。

图25c是示出当发生中断(3)时在上下文保存时存储在缓冲器中的数据的图。

当发生中断(3)时,访问控制电路140将缓冲器(2-0)和(2-1)至缓冲器(3-0)和(3-1)中保持的任务(1)的上下文编号(=1)、链接上下文编号和子上下文信息(1)(向右传送至缓冲器(3-0)和(3-1)移位)。保持在缓冲器(2-2)中的任务(1)的子上下文信息(2)被丢弃。

访问控制电路140将保持在缓冲器(1-0)、(1-1)和(1-2)的任务(2)的上下文编号(=2)、链接上下文编号和子上下文信息(1)、(2)传送至缓冲器(2-0)、(2-1)和(2-2)(向右移位)。保持在缓冲器(1-3)中的任务(2)的子上下文信息(3)被丢弃。

访问控制电路140将上下文编号(=3)写入缓冲器(1-0)。访问控制电路140将任务(3)的链接上下文编号和子上下文信息(1)至(3)写入缓冲器(1-1)、(1-2)和(1-3)中。访问控制电路140通过内部总线bs4在一个或多个周期中将缓冲器(1-0)、(1-1)、(1-2)和(1-3)的数据传送到ram160。

图25d是示出当生成中断(4)时在上下文保存时存储在缓冲器中的数据的图。

当发生中断(4)时,访问控制电路140删除保持在缓冲器(3-0)中的任务(1)的上下文编号(=1),并将保持在缓冲器(3-1)中的子上下文信息和链接上下文编号传送至ram160。

访问控制电路140将保持在缓冲器(2-0)和(2-1)中的任务(1)的上下文编号(=2)、链接上下文编号和子上下文信息(1)传送到缓冲器(3-0)和(3-1)(向右移位)。保持在缓冲器(2-2)中的任务(1)的上下文信息(2)被丢弃。

访问控制电路140将保持在缓冲器(1-0)、(1-1)和(1-2)中的任务(3)的上下文编号(=3)、链接上下文编号和子上下文信息(1)、(2)传送到缓冲器(2-0)、(2-1)和(2-2)(向右移位)。在缓冲器(1-3)中保持的任务(3)的上下文信息(3)被丢弃。

访问控制电路140将上下文编号(=4)写入缓冲器(1-0)。访问控制电路140将任务(4)的链接上下文编号和子上下文信息(1)至(3)写入缓冲器(1-1)、(1-2)和(1-3)中。访问控制电路140通过内部总线bs4在一个或多个周期中将缓冲器(1-0)、(1-1)、(1-2)和(1-3)的数据传送到ram160。

<上下文返回>

当接收到恢复由中断撤离的上下文信息的请求时,访问控制电路140在标识要返回的上下文信息的上下文编号与存储在缓冲器组150中的任何上下文编号匹配时执行以下操作。访问控制电路140将存储在缓冲器组150中的要返回的上下文信息传送到cpu130,并且删除在存储在缓冲器组150中的要返回的上下文信息之后写入的上下文数据。

图26是用于说明根据第五实施例的在上下文返回时的缓冲器控制的图。图27是示出根据第五实施例的上下文返回过程的流程图。

在步骤s101中,当经由总线bs1传送到访问控制电路140的上下文编号与缓冲器1-0中保持的上下文编号匹配时,处理进入步骤s117。

在步骤s102中,当经由总线bs1传送到访问控制电路140的上下文编号与缓冲器2-0中保持的上下文编号匹配时,处理进入步骤s104。

在步骤s103中,当经由总线bs1传送到访问控制电路140的上下文编号与缓冲器3-0中保持的上下文编号匹配时,处理进入步骤s107。

当经由总线bs1传送到访问控制电路140的上下文编号与缓冲器(1-0)、缓冲器(2-0)或缓冲器(3-0)中保持的任何上下文编号不匹配时,处理进入步骤s111。

在步骤s104中,访问控制电路140将缓冲器(2-0)至(2-2)的数据向左移位。结果,在缓冲器(2-0)至(2-2)的上下文数据之后写入的缓冲器(1-0)至(1-2)的上下文数据被删除并被替换为缓冲器(2-0)至(2-2)上下文数据。

在步骤s105中,访问控制电路140使ram160通过内部总线bs4将对应于所传送的上下文编号的子上下文信息(3)发送到缓冲器(1-3)。

在步骤s107中,访问控制电路140将缓冲器(3-0)至(3-1)的数据向左移位。结果,在缓冲器(3-0)至(3-1)的上下文数据之后写入的缓冲器(2-0)至(2-1)的上下文数据被删除,并被缓冲器(3-0)至(3-1)的上下文数据替换。

在步骤s108中,访问控制电路140使ram160通过内部总线bs4将对应于所传送的上下文编号的子上下文信息(2)传送到缓冲器(2-2)。

在步骤s109中,访问控制电路140将缓冲器(2-0)至(2-2)的数据向左移位。结果,在缓冲器(2-0)至(2-2)的上下文数据之后写入的缓冲器(1-0)至(1-2)的上下文数据被删除并被缓冲器(2-0)至(2-2)的上下文数据替换。

在步骤s110中,访问控制电路140通过内部总线bs4将所传送的上下文编号的子上下文信息(3)从ram160传送到缓冲器(1-3)。

在步骤s111中,访问控制电路140用所传送的上下文编号替换缓冲器3-0的上下文编号。

在操作s112中,访问控制电路140经由内部总线bs4将与所传送的上下文编号相对应的子上下文信息(1)和链接上下文编号从ram160传送到缓冲器(3-1)。

在步骤s113中,访问控制电路140将缓冲器(3-0)至(3-1)的数据向左移位。结果,在缓冲器(3-0)至(3-1)的上下文数据之后写入的缓冲器(2-0)至(2-1)的上下文数据被删除,并被缓冲器(3-0)至(3-1)的上下文数据替换。

在操作s114中,访问控制电路140经由内部总线bs4将与传送的上下文编号对应的子上下文信息(2)从ram160传送到缓冲器(2-2)。

在步骤s115中,访问控制电路140将缓冲器(2-0)至(2-2)的数据向左移位。结果,在缓冲器(2-0)至(2-2)的上下文数据之后写入的缓冲器(1-0)至(1-2)的上下文数据被删除并被缓冲器(2-0)至(2-2)的上下文数据替换。

在操作s116中,访问控制电路140通过内部总线bs4将与传送的上下文编号对应的子上下文信息(3)从ram160传送到缓冲器(1-3)。

在操作s117中,访问控制电路140通过总线bs2在一个周期中将缓冲器(1-1)至(1-3)的子上下文信息(1)至(3)传送到cpu130。

<预取>

在上下文返回后的预取中,存取控制电路140使一任务的上下文信息的数据量大于其他任务的上下文信息的数据量,所述任务具有与通过上下文返回传送到cpu130中的上下文信息的链接上下文编号对应的上下文编号。为此,访问控制电路140通过内部总线bs4将数据传送到缓冲器组150,所述数据包括关于ram160中的多个任务的上下文信息和链接上下文编号的全部和部分。

图28是示出根据第五实施例的预取处理过程的流程图。在步骤s201中,当缓冲器(1-1)中保持的链接上下文编号与缓冲器(2-0)中保持的上下文编号匹配时,处理进入步骤s201。如果它们不匹配,则处理进入步骤s202。

在步骤s206中,当缓冲器(2-1)中保持的链接上下文编号与缓冲器(3-0)中保持的上下文编号匹配时,处理进入步骤s209。如果它们不匹配,则处理进入步骤s207。

在步骤s202中,访问控制电路140利用保持在缓冲器(1-1)中的链接上下文编号来更新缓冲器(2-0)中保持的上下文编号。

在s203中,访问控制电路140响应于缓冲器(2-0)中保持的更新后的上下文编号来将存储在ram160中的链接上下文编号和子上下文信息(1)和(2)传送到缓冲器(2-1)和缓冲器(2-2)。

在步骤s204中,访问控制电路140利用保持在缓冲器(2-1)中的链接上下文编号来更新缓冲器(3-0)中保持的上下文编号。

在步骤s206中,访问控制电路140响应于保持在缓冲器(3-0)中的更新后的上下文编号,将存储在ram160中的链接上下文编号和子上下文信息(1)传送到缓冲器(3-1)。

在步骤s207中,访问控制电路140利用缓冲器(2-1)中保持的链接上下文编号来更新缓冲器(3-0)中保持的上下文编号。

在步骤s208中,访问控制电路140响应于缓冲器(3-0)中保持的更新后的上下文编号,将存储在ram160中的链接上下文编号和子上下文信息(1)传送到缓冲器(3-1)。

在步骤s205和s208之后,执行步骤s209。在步骤s209中,访问控制电路140通过左移将缓冲器(2-0)至(2-2)的数据传送到缓冲器(1-0)至(1-2)。访问控制电路140将与传送到缓冲器(1-0)的上下文编号对应的子上下文信息(3)从ram160传送到缓冲器(1-3)。

在步骤s210中,访问控制电路140通过左移将缓冲器(3-0)至(3-1)的数据传送到缓冲器(2-0)至(2-1)。访问控制电路140将与传送到缓冲器(2-0)的上下文编号对应的子上下文信息(2)从ram160传送到缓冲器(2-2)。

在步骤s211中,访问控制电路140利用缓冲器(2-1)的链接上下文编号更新缓冲器(3-0)的上下文编号。

在操作s212中,访问控制电路140响应于保持在缓冲器(3-0)中的更新上下文编号,将存储在ram160中的链接上下文编号和子上下文信息(1)传送到缓冲器(3-1)。

如上所述,根据本实施例,当发生多个中断时,通过存储相比于其它任务在缓冲器组中在更晚时序停止的任务的更多子上下文信息,可以增加缩短恢复时间的可能性。

以上基于实施例详细描述了本发明人做出的发明,但是本发明不限于该实施例,并且不用说,在不脱离其主旨的情况下可以进行各种修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1