首页> 中国专利> 用于影响数据处理器中的顺序指令处理的方法和装置

用于影响数据处理器中的顺序指令处理的方法和装置

摘要

一种方法和装置影响数据处理器(10)内的随后指令的处理,在一个实施例中,由数据处理器(10)执行延迟中断识别指令(IDLY4),从而延迟或有条件地延迟中断识别一个被控制的时间间隔,或者是一个预定的时间段,或者是一个预定的指令数,使得指令的读/修改/写顺序可以不用限定修改操作的专用指令来执行。IDLY4指令可以影响随后指令影响条件位(38)的方式。因而条件位(38)可被用于确定在执行IDLY4指令之后的不识别中断的时间间隔期间是否发生异常处理。

著录项

  • 公开/公告号CN1216375A

    专利类型发明专利

  • 公开/公告日1999-05-12

    原文格式PDF

  • 申请/专利权人 摩托罗拉公司;

    申请/专利号CN98121455.X

  • 申请日1998-11-02

  • 分类号G06F9/30;

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人张维

  • 地址 美国伊利诺斯

  • 入库时间 2023-12-17 13:21:23

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-27

    专利权有效期届满 IPC(主分类):G06F9/30 授权公告日:20030108 申请日:19981102

    专利权的终止

  • 2013-07-31

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F9/30 变更前: 变更后: 申请日:19981102

    专利权人的姓名或者名称、地址的变更

  • 2004-09-29

    专利申请权、专利权的转移专利权的转移 变更前: 变更后: 登记生效日:20040820 申请日:19981102

    专利申请权、专利权的转移专利权的转移

  • 2003-01-08

    授权

    授权

  • 2000-09-27

    实质审查请求的生效

    实质审查请求的生效

  • 1999-05-12

    公开

    公开

查看全部

说明书

本发明涉及一种数据处理器,尤其涉及一种影响数据处理器中的顺序指令处理的方法和装置。

数据处理器被越来越多地用于实时控制系统中,需要新的技术保证系统资源的有效利用。例如,在许多多任务系统中,具有几个任务试图共享某些相同的系统资源,例如存储器,打印机,或显示屏的一个端口。在这种多任务系统中,重要的是,以尽可能高的效率共享系统资源。例如,如果多个任务正在共享一个资源,则必须有一种方法用于指示当前哪个任务正在使用该资源,以及是否这一任务正在执行必须不被干扰的功能。在许多多任务系统中,对于这种功能使用信号量(semaphore)。

信号量是一种反应系统资源的当前状态的标记类型或状态指示器。通常在信号量中的状态信息指示系统资源当前是否正在被使用。在一些多任务系统中,信号量也可以包括关于哪个任务正在使用该资源的信息,并且甚至包括正在该资源上执行的功能的类型。

例如,在存储器中的一个具体位置可被指定作为对于共享的变量X的信号量的位置。如果任何任务想使用该共享变量X,该任务必须通过读存储器中的那一具体位置读出共享变量X的信号量。变量X信号量含有关于变量X的状态的信息,例如变量X当前是否被保留被特定的任务独自访问。如果变量X信号量指示当前被保留因而处于忙状态,则新的任务必须等待。新的任务可以通过定期地读变量X信号量继续轮询变量X信号量,看是否其仍然被占用或已经成为可利用的。

一旦变量X信号量指示其不再被保留并因而是可利用的,则等待的任务对变量X信号量进行写操作,以便改变其状态为忙或不可利用的。等待的任务因而便有效地锁定变量X资源为其自己所利用。当变量X的信号量指示变量X正在被使用时没有其它任务可以使用变量X。一旦等待任务完成使用变量X,它便在变量X的信号量位置写入新的值,以便改变变量X信号量,表明其又再次成为可利用的。

在使用信号量分配共享的系统资源的系统中有一个严重问题。当一个以上的任务轮询共享的系统资源看该资源是否已经成为可利用的时候便产生问题。例如假设任务#1和任务#2二者都轮询变量X信号量。在变量X信号量已经被改变,表明其是可利用的之后,任务#1第一个读出变量X信号量。现在任务#2读变量X信号量,并且也得知其是可利用的。任务#1和任务#2都不知道有另一个任务在竞争变量X的使用。

如果任务#1收到一个中断,在从中断处重新开始之前它必须执行软件中断程序。同时,任务#2对变量X信号量写入一个值,表明变量X现在忙。然后,任务#2使用变量X进行处理。任务#1完成其中断程序并从其软件程序中的中断处重新开始。任务#1不知道已被使用。因而任务#1对变量X写入一个值,表明变量X现在忙,然后尝试使用变量X。然而变量X正在被任务#2使用。这样便发生冲突。结果,变量X可能是错误的,因而任务可能收到变量X的一个错误的值。因而,需要一种能够使多任务可行地且高效地共享公共资源的方法。

图1以方块图的形式说明按照本发明的一个实施例的数字处理器10;

图2以方块图的形式说明按照本发明的一个实施例的图1的中央处理单元(CPU)12的一部分;

图3以表的形式说明按照本发明的一个实施例的延迟中断识别指令的一个实施例;

图4以表的形式说明按照本发明的一个实施例进行测试和设置功能的指令序列的一个实施例;

图5以表的形式说明按照本发明的一个实施例进行交换存储器操作数功能的指令序列的一个实施例;以及

图6以表的形式说明按照本发明的一个实施例进行增加基于存储器的计数器功能的指令序列的一个实施例。

图1说明数据处理器10,在一个实施例中,数据处理器10包括中央处理单元(CPU)12,存储器14,总线接口模块16,和其它模块18,它们都通过总线20相互双向连接。总线接口模块16可以通过外部总线26使外部和数据处理器10相连。其它模块18通过一个或几个集成电路端子28选择地使外部和数据处理器10相连。存储器14通过一个或几个集成电路端子24选择地从外部连接数据处理器10。中央处理单元12通过一个或几个集成电路端子22使外部和数据处理器10相连。

仍然参看图1,本发明的另一个实施例可以使用任何结构类型的数据处理器10。此外,数据处理器10可以完成各种功能。例如,数据处理器10可以使用RISC(Reduced Instruction Set Computer)结构,可以使用Harvard结构,可以是矢量处理器,可以是SIMD(Single InstructionMutiple Data)处理器,可以进行浮点运算,可以进行数字信号处理计算等。

图2说明图1的CPU12的一部分。在一个实施例中,CPU12包括指令输送(pipe)电路30,指令译码电路32,寄存器34,算术逻辑单元(ALU)40,以及CPU控制电路42。CPU控制电路42通过控制/状态信号58双向地和指令输送电路30、指令译码电路32、寄存器34以及ALU40相连,以便提供控制信息和接收状态信息。指令输送电路30通过总线20接收指令。指令输送电路30可以存储要被执行的一个或几个指令。指令输送电路30通过导线54向指令译码电路32提供指令。指令译码电路32译码从指令输送电路30接收的指令并通过导线56把输出提供给CPU控制电路42。CPU控制电路42包括异常控制电路44,中断控制电路46和计数器/计时器电路48。

在本发明的一个实施例中,中断控制电路46双向地和计时器/计数器电路48相连。CPU控制电路42通过中断信号50接收来自总线20的一个或几个中断请求信号。其它模块18(见图1)或和外部总线26(未示出)相连的电路可以是通过中断信号50被CPU控制电路42接收的一个或几个中断请求的源。CPU控制电路42可以通过中断信号50向总线20提供一个或几个中断通知信号或其它的和中断有关的信号。CPU控制电路42可以通过异常(exception)信号52选择地接收一个或几个异常发生信号。在本发明的一些实施例中,CPU控制电路42可以向总线提供一个或几个异常通知信号或其它的异常状态信号。

仍然参看图2,在本发明的一个实施例中,异常控制电路44和异常信号52相连,中断控制电路46和中断信号50相连。异常控制电路44和中断控制电路46都和导线56以及控制/状态信号58相连。中断控制电路46可以选择地包括超越电路47。在本发明的另一些实施例中,超越电路47可以位于CPU控制电路42中的其它位置。CPU控制电路42可以通过集成电路端子22选择地使外部和数据处理器10相连。寄存器34双向地和总线20相连,以便接收和提供数据值。寄存器34包括寄存器36。寄存器36包括条件位38。寄存器34通过导线60和导线62与ALU40相连,以便提供计算的值。ALU40的输出通过导线64和寄存器34相连,以便提供来自ALU40的输出值。

图3说明可以由图2的CPU12执行的延迟中断识别指令的一个实施例。

图4说明可以通过使用图3的延迟中断识别指令被用来实现测试和设置功能的指令序列的一个实施例。

图5说明可以通过使用图3的延迟中断识别指令被用来实现交换存储器操作数功能的指令序列的一个实施例。

图6说明可以通过使用图3的延迟中断识别指令被用来实现增加基于存储器的计数器功能的一个实施例。

现在说明最佳实施例的操作。在一个实施例中,本发明提供一种有效的方法和装置,用于把中断识别延迟一个被控制的间隔,或者一个预定的时间间隔,或者一个预定的指令数,使得指令的读/修改/写顺序可以不用限定修改操作的专用指令来执行。

术语“总线”用来指可以用来传递一个或几个各种类型的信息,例如数据,地址,控制或状态的一组信号或导线。术语“肯定”和“否定”分别用来指信号、状态位或类似的装置的逻辑值为真或假。如果逻辑真状态的逻辑值为1,则逻辑假状态的逻辑值为0。并且如果逻辑真状态的逻辑值为0,则逻辑假状态的逻辑值为1。

参看图3,在本发明的一个实施例中,在使用加载/存储结构的处理器,例如图1和2所示的数据处理器10中,延迟中断识别指令(例如IDLY4)可用来使中断识别延迟一个预定的指令数。

在本发明的一个实施例中,中断识别被延迟的预定的立即相继的指令数可以是固定的值(例如4个指令)。本发明的另一个实施例可以把这预定的指令数固定为任何正整数。图3所示的本发明的一个实施例把中断识别延迟4个指令,这在执行延迟中断识别指令(IDLY4)立即执行。这样,执行延迟中断识别指令,则在随后的4个指令期间,没有中断被识别,在开始执行跟随IDLY4指令的第五个指令时,中断识别开始。

要说明的是,本发明的一些实施例可以计数执行的指令作为用作预定的相继指令数部分的异常处理部分。而本发明的其它实施例可以不计数执行的指令作为用作预定的相继指令数部分的异常处理部分。

在本发明的第一实施例中,在已经执行延迟中断识别指令之后,在执行预定的指令数期间,中断识别被禁止或延迟。中断识别被禁止或延迟的这一预定的指令数可用多种方法确定。例如,延迟中断识别指令本身可以包括确定中断识别被延迟的指令数的字段(例如图3中的选择的说明符字段70)。在其它的实施例中,可由用户编程的控制寄存器(例如图2的寄存器34中的一个)包含用于确定中断识别被延迟的预定的指令数的值。本发明的其它实施例可以使用任何类型的方法来选择预定的指令数,例如通过集成电路端子或通过掩模可编程存储装置提供预定的指令数。

在本发明的一个实施例中,如果延迟中断识别指令在执行预定的相继指令数期间延迟中断的识别,则图2所示的电路的操作方式如下。借助于指令管道30从总线20接收延迟中断识别指令。然后,指令管道30把这指令在合适的时刻提供给指令译码电路。然后指令译码电路32通过导线56把对延迟中断识别指令进行正确译码的信号提供给CPU控制电路42。CPU控制电路42然后使用中断控制电路46延迟借助于中断信号50接收的中断请求的识别。CPU控制电路42将延迟中断请求识别一个预定的指令数。CPU控制电路42可以使用计数器/计时器48和借助于信号58从指令管道30和指令译码电路32接收的信息,确定在执行延迟中断识别指令之后紧接执行了多少指令。

对于本发明的一些实施例,尤其是使用流水线处理器结构的那些实施例,CPU控制电路42可以只计数执行完毕的随后的指令,或者可以计数任何随后的指令,对于这些指令在每个指令的取出、译码、和执行周期期间已达到预定的级。

代替延迟中断的识别一个预定的随后指令数,本发明的另外的实施例可以规定一个中断识别被延迟的预定的时间间隔。在这些另外的实施例中,可以使用计时器或计时器(例如图2中的计时器/计时器48)计数预定的时钟周期数,或计数中断识别被延迟的纳秒数。

在本发明的一个实施例中,如果延迟中断识别指令在执行预定的随后时钟周期数或纳秒数期间延迟中断的识别,图2中所示的CPU控制电路42将使用计时器/计时器48计数纳秒数或时钟周期数,而不计数正在被执行的指令数。此外,可以使用用户可编程的机构,例如指令本身(例如图3中的选择的说明符字段70),寄存器值或另外的可编程的方法,向计时器/计时器48提供纳秒数或时钟周期数,以便确定在执行延迟中断识别指令之后中断不被识别的时间间隔的长度。

在本发明的一个实施例中,在执行完毕延迟中断识别指令之后,CPU控制电路42开始计数不识别中断的时间间隔。不过,在本发明的另一个实施例中,CPU控制电路42可以在延迟中断识别指令的译码开始之后的任何时刻开始计数不识别中断的时间间隔。

对于本发明的一些实施例,在延迟中断识别指令之后可以跟随着任何类型的指令。不过,在一些情况下,把需要周期数多的指令例如除指令放在跟随延迟中断识别指令的指令序列中可能引起中断的时间间隔过长。为了解决这一问题,本发明的一些实施例限制紧跟着延迟中断识别指令的指令的类型。例如,参见图3,紧跟着延迟中断识别指令的4个指令可被限制为一个周期的算术或逻辑指令、分支指令和加载或存储指令。限制在其期间中断识别被延迟的指令的目的在于减少最大的中断等待时间间隔。本发明的另一个实施例可以限制或不限制在其期间中断识别被延迟的指令的类型,因而可以限制或不限制可以跟随延迟中断识别指令的指令类型。对于不同的处理器10,可以跟随延迟中断识别指令的指令的具体设置可以不同,并且在一些实施例中,可以是用户可编程的。

本发明的另外的实施例可用不同的方式借助于异常处理来改变。在图3所示的本发明的实施例中,在中断不被识别的时间间隔期间一直检测异常并被取出。不过本发明的其它实施例可以检测而不处理发生在中断识别被延迟的时间间隔内的异常。还有其它的另外的实施例在中断不被识别的时间间隔内甚至可以不检测因而也不处理异常。此外,本发明的另外的实施例可以处理不同地处理不同类型的异常。例如,图3所示的延迟中断识别指令(IDLY4)允许发生非跟踪和非间断点异常,以便在中断不被识别的时间间隔内清除条件位38(见图2),而跟踪和间断点异常不影响条件位38。

在本发明的一些实施例中,可以使用一种机构用于在执行延迟中断识别指令之后的非识别时间间隔重新允许中断。例如,在一个预定的时间间隔期间,计时器/计时器48可用于检测一个特定等级的中断在这段时间间隔已被挂起,并因而在中断非识别间隔过去之前需要被识别。这样,在本发明的一些实施例中,使用超越电路47,即使在执行仍然保留在中断非识别间隔内时(即由预定的指令数、时钟周期、或纳秒数限定的),可以重新允许中断。如果中断识别不被重新允许,当前指令可在数据流中间被中断,或在中断再被识别之前被允许继续并完成执行。

本发明的一些实施例可以延迟所有中断的识别,而本发明的另一些实施例可能仅延迟在预定的中断等级以下的中断的识别。预定的中断等级可用任何方式规定。例如预定的中断等级可规定作为延迟中断识别指令格式本身的部分,或者可以通过在用户可编程的寄存器中存储一个值来规定,可以通过集成电路端子提供一个值来规定,或者可以通过在掩模可编程存储电路中存储一个值来规定。

在另一个实施例中,本发明允许第一指令改变随后的指令影响状态标记的方式。在本发明的一个实施例中,图3所示的延迟中断识别指令(IDLY4)的执行可以改变一个或几个随后的指令影响图2的条件位38的方式。例如,参看图4-6,在本发明的一个实施例中,IDLY4指令肯定条件位38。然后,如果在4个随后的指令的任何一个期间发生异常,在异常发生时正在被执行的指令将否定条件位38。这样,在正常情况下被规定永不清除或否定条件位38的指令(例如加载指令),当加载指令是在IDLY4指令之后的4个随后指令之一时,如果在加载指令的执行期间发生异常,则现在可以清除条件代码位38。这样,IDLY4指令可以影响随后指令(例如加载指令)影响条件位38的方式。用这种方式使用条件位38的一个目的是表明4个随后的指令没有以各自的方式被执行,以及异常处理可能已影响共享的资源。

注意图4-图6所示的指令序列都包括检查条件位38,以便确定在IDLY4指令(即如果条件代码位38等于0,则转换到SEQUENCE-FAILED)之后,在4个非异常处理指令期间是否已收到异常并被处理。如果在IDLY4指令之后已收到异常并被处理,则“BF”指令转换到一个称为SEQUENCE-FAILED的指令的子程序,其可用于表明在IDLY4指令之后的4个指令没有以各自的方式被执行,并且异常处理可能已经影响共享的资源,例如信号量。

图4说明一系列的指令,它们使用图3所示的延迟中断识别指令(IDLY4)以实现测试和设置功能。图4所示的测试和设置功能测试存储器操作数,以便确定存储器操作数的当前值是否都是0,并把存储器操作数的值都改变成1(即设置存储器操作数的所有的位)。因而,图4所示的指令序列可以用来根据在存储器中存储的信号量值实现测试和设置功能。延迟中断识别指令(IDLY4)可被用来保证测试和设置功能以不可分割的方式被实现,从而使得信号量值不会由在测试操作和在设置操作之间的中断图4所示的软件程序的不同的任务搞错。

注意图4所示的指令序列实际上在进行测试操作之前进行设置操作。这是可能的,因为IDLY4指令可被用于保证设置和测试两种操作在另一个任务被允许中断之前被完成,并且因为在本例中的信号量值只有两个可能的值,即全部为1或全部为0。因此如果信号量的起始值全部为1,则设置信号量的步骤将不改变信号量的值。注意执行测试和设置功能的另一个指令序列可以在设置操作之前执行测试操作。

图5说明使用图3所示的延迟中断识别指令(IDLY4)的一个指令序列,其执行“交换存储器操作数和寄存器操作数”功能。图5所示的“交换存储器操作数和寄存器操作数”功能实际上从其存储器的起始位置中的被称为“EXCHANGE-VALUE”的值移动到寄存器R1,然后移动到信号量值的位置。注意信号量值的位置由称为“SEMAPHORE”的指针指定。该信号量的值被从其存储器中的初始位置移动到寄存器R3。在图5所示的特定的指令序列中,最后的“OR”指令除去完成在IDLY4指令之后的4个指令序列之外,不进行有用的操作,并因而停止中断识别的延迟。因此,最后的“OR”指令和no operation(NOP)指令具有相同的效果,并可以用不同的指令替代。

图6说明使用图3所示的延迟中断识别指令(IDLY4)完成“增加基于存储器的计数器”功能的一系列指令。图6所示的“增加基于存储器的计数器”功能实际上把信号量值从其存储器中的初始位置移动到寄存器R3中,然后使信号量值增加1。注意信号量值的位置由称为“SEMAPHORE”的指针指定。然后把增加的信号量值从寄存器R3移动回到其存储器的初始位置。

虽然参照特定的实施例对本发明进行了说明,对于本领域的技术人员,会有其它的改型和改进。因此,应该理解,本发明不限于所说明的特定的形式,所附的权利要求包括了不脱离本发明的构思的所有的改型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号