控制器电路,数据接口块和用于传输数据的方法

文档序号:9304512阅读:327来源:国知局
控制器电路,数据接口块和用于传输数据的方法
【技术领域】
[0001]本文涉及控制器电路、数据接口块和用于传输数据的方法。特别是,本文涉及用于处理器的控制器电路、数据接口块和方法,该处理器具有指令集,该指令集包括多重加载/存储指令。
【背景技术】
[0002]现代处理器单元的指令集可以包括多重加载/存储指令。利用多重加载/存储指令,例如通过从外围块读取或写入到外围块,单个指令可用于加载或存储多个数据字。
[0003]在美国专利US6,260,086中公开了具有多重加载/存储指令的处理器。为了将多个数据字写入到串行外设接口,使用了一组外围数据字以及先入/先出(FIFO)缓冲器。
[0004]具有多重加载/存储指令的处理器的另一个例子是ARM公司的ARM Cortex-MO。
[0005]具有多重加载/存储指令的已知的处理器的一个特征是,指令执行不是原子的,因此可以被中断。当中断处理结束时,该指令一般是整个被重复。这可能会产生严重的后果。例如,当使用多个存储指令来写入到外设数据接口时,中断后重复整个指令意味着在中断发生之前已经写入的数据字被写入两次。这导致不正确的数据被写入到外设数据接口。同样地,在非原子的多重加载执行期间进行中断也可能会导致写入不正确的数据。
[0006]防止这些效应的一种方法是屏蔽中断,使得它们不中断多重加载/存储指令的执行。另一种方法是简单地根本不使用多重加载/存储指令,或者至少是不在从外设接口读取时或写入到外设接口时。前一种方法往往是不可行的,因为中断必须被及时处理。后一种方法是不可取的,因为这样会导致更多的指令,从而增加指令存储、获取以及解码的开销。
[0007]因此,需要一种处理器电路和方法能够使用多重加载/存储指令(在下文中也称为:多重传输指令),在执行过程中对于中断是具有鲁棒性的。
[0008]此外,由于目前对于硬件厂商来说,例如在片上系统中对来自第三方处理器供应商的处理器单元进行设计是很常见的,因此需要一种解决方案,这种解决方案不需要修改处理器单元本身,但是可以使用处理器单元的外部电路来实现。

【发明内容】

[0009]根据第一个方面,本文提供了一种处理器电路,包括:
[0010]处理器单元,被配置成执行用于加载或存储多个数据字的多重加载或存储指令;
[0011]数据接口块(DIB),被配置成响应于在执行多重加载或存储指令期间中断的发生,保存多重加载或存储指令的状态。
[0012]在一个实施例中,处理器电路还包括指令总线,其中中断监控块被连接到指令总线用于监控在指令总线上传输的指令。
[0013]在一个实施例中,数据接口块被配置成检测多重加载或存储指令执行的开始。
[0014]在一个实施例中,保存多重加载或存储指令的状态包括存储指示当中断发生时已经加载或存储的数据字的数目的值。
[0015]在一个实施例中,数据接口块被配置成,当在中断之后再次执行多重加载或存储指令时,跳过一定数目的用于加载或存储的数据字,其中所述数目等于所存储的值。
[0016]在一个实施例中,处理器电路包括数据总线,其中数据接口块包括用于存储要被加载或存储的数据字的数据寄存器,其中数据寄存器被连接到数据总线。
[0017]在一个实施例中,数据接口块包括先进先出(FIFO)缓冲器。在一个实施例中,FIFO被连接到串行或并行数据接口。FIFO可以被连接到数据寄存器。
[0018]在一个实施例中,处理器电路形成为片上系统(SoC)。
[0019]根据第二个方面,提供了一种用于上述处理器电路的数据接口块(DIB)。
[0020]根据第三个方面,提供了一种用于加载或存储多个数据字的方法,该方法包括:
[0021]在处理器单元中执行多重加载或存储指令;
[0022]将至少一个数据字写入到数据接口块(DIB)中;
[0023]检测处理器单元的中断的发生;
[0024]通知数据接口块多重加载或存储指令被中断;
[0025]由数据接口块存储多重加载或存储指令的状态。
[0026]在第三个方面的实施例中,保存多重加载或存储指令的状态包括存储指示当中断发生时已经加载或存储的数据字的数目的值。
[0027]在第三个方面的实施例中,该方法还包括:当在中断之后再次执行多重加载或存储指令时,跳过一定数目的用于加载或存储的数据字,其中所述数目等于所存储的值。
【附图说明】
[0028]在下文中将参考附图仅以示例的方式来描述本发明的实施例,这些附图都是示意性的,因此不是按比例绘制的。此外,在附图中相似的元件采用相似的附图标记。
[0029]图1示意性地示出了根据一个实施例的处理器电路。
[0030]图2示意性地示出了根据一个实施例的用于加载和存储数据的电路。
[0031]图3示意性地示出了根据一个实施例的多重存储操作。
[0032]图4示意性地示出了根据一个实施例的多重加载操作。
[0033]图5示意性地示出了根据一个实施例的用于存储数据的方法。
【具体实施方式】
[0034]图1示意性地示出了根据本发明的一个实施例的处理器电路10。电路10可以被实现为片上系统。电路10包括用于执行数据指令的处理器单元11,处理器单元具有指令集,指令集的特点是具有多重加载或存储指令(在下文中也称为:多重传输指令(MTI)或多重加载/存储指令)。处理器单元的一个例子是ARM Cortex MO 32位处理器。
[0035]虽然可以通过修改处理器单元11来实现本发明,但是也可以如将要参考实例所描述的那样,提供另外的功能使用处理器单元11外部的另外的块在执行期间来处理中断。这使得本发明可以用很容易得到的不能(很容易)修改的第三方处理器单元11来实现。
[0036]该电路还包括代码存储器14和数据存储器15,以及代码总线13和数据总线12,分别传输由处理器11获取的代码和由处理器使用的数据。另外,也可以提供用于代码和数据两者传输的单个总线。
[0037]数据接口块(DIB) 18被配置用于通过系统的串行或并行物理接口 19来发送/接收数据。该DIB 18可以被配置成检测输入DIB/从DIB输出的多重加载/存储指令的开始,并且设置MULTIPLE_TRANSFER_STARTED标志作为响应。然后在多重加载/存储指令执行期间,该MULTIPLE_TRANSFER_STARTED标志都被设置。该DIB 18也可以被描述为数据接口外设块(DIPB)。DIPB或DIB 18可以被实现为专用硬件块。
[0038]中断监控块(Hffi) 17被提供用于检测中断。在图1的例子中,頂B 17被连接到代码总线12。頂B 17被配置为检测多重加载/存储指令的中断,以及通过设置MULTIPLE_TRANSFER_INTERRUPTED标志来通知DIB 18中断的发生。在一个实施例中,只有在发生中断时DIB 18已经设置了 MULTIPLE_TRANSFER_STARTED标志的情况下才设置MULTIPLE_TRANSFER_INTERRUPTED标志。頂B 17可以被实现为专用硬件块。頂B 17可以通过检测在执行多重传输指令期间处理器单元11获取(新)指令来检测中断的发生。在一个替代实施例(未示出)中,MB 17被配置成例如通过被连接到中断线路来直接检测中断的发生。
[0039]可以在处理器电路10中提供DIB块18的多个实例(例如在具有多个数据接口19的系统的情况下)。在这种情况下,当MB 17检测到中断,并且相应的DIB 18已经设置了 MULTIPLE_TRANSFER_STARTED 标志时,DIB 18 可以从頂B 17 接收 MULTIPLE_TRANSFER_INTERRUPTED标志。如果DIB 18负责设置MULTIPLE_TRANSFER_STARTED标志,并且如果在多个DIB中每个DIB18已经设置了一个标志,则頂B 17可以被配置为只对目前参与中断的多重传输指令中的DIB 18设置MULTIPE_TRANSFER_INTERRUPTED标志。在一个实施例中,多个DIB中的每一个DIB 18都具有连接到Hffi 17的单独的“执行”标志线,Hffi 17可以为多个DIB中的每一个DIB 18设置单独的、专用的“中断”标志。在实施例中,可以在电
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1