使用协处理器的数据处理的制作方法

文档序号:6477692阅读:344来源:国知局
专利名称:使用协处理器的数据处理的制作方法
技术领域
本发明涉及数据处理系统。更具体地,本发明涉及并入了主处理器和协处理器这二者的数据处理系统。
背景技术
众所周知,可以提供并入了主处理器和协处理器的数据处理系统。此类数据处理系统的例子如英国剑桥的ARM有限公司的产品,该公司提供诸如ARM7或者ARM9这样的主处理器,该主处理器可以与诸如Piccolo协处理器这样的协处理器组合在一起,以便执行诸如专用数字信号处理操作的功能。协处理器的其它例子可以是浮点算术协处理器等。
协处理器通常被用来在数据处理系统中提供附加功能,该功能在基本的系统中不做要求,但是当提供合适的协处理器的额外开销很合理时,对于特定环境却十分有用。有特别要求的数据处理环境是指那些涉及象视频图像操纵这样的数字信号处理的环境。在这种应用中要求处理的数据量会很大。这就对提供既能应对必须处理的数据量并且又同时具有相对低的成本和低功耗的数据处理系统提出了挑战。
一种处理此类计算密集型应用的方法是提供专用数字信号处理电路。此类专用电路可以具有这样的体系结构,该体系结构特别适用于执行范围相对受限的处理操作,但是却以相对高的速度来执行。例如,可以提供多重数据通道来并行地让数据流入和流出相关的电路部分。尽管这种方案能够解决所要求的高的数据处理量,但是它通常具有不够灵活的缺点。这种不灵活性可能意味着在想要执行的算法上的相对小的改动就可能需要昂贵的相关硬件的改动。这就与使用通常从最初就被设计成能够执行多种不同算法的通用处理器形成对照。

发明内容
从一个方面来看,本发明提供了数据处理装置,包括主处理器,对程序指令做出响应而执行数据处理操作;以及与所述主处理器相耦合的协处理器,对所述主处理器上的协处理器加载指令做出响应而把一个或者多个被加载的数据字加载到所述协处理器中,并使用提供操作数数据的所述的一个或者多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;其中响应所述协处理器加载指令,根据在所述一个或者多个被加载的数据字中的所述操作数数据的开始地址是否与字边界对齐,而把数目可变的被加载的数据字加载到所述协处理器中。
本发明认识到在一个包含通用主处理器的系统中,可以考虑给协处理器提供很具体的功能。特别地,通过提供协处理器加载指令也触发要根据在被加载的数据字中的操作数而加以执行的数据处理操作来生成结果数据字,从而实现在速度和代码密度方面的相当可观的优点。尽管这种协处理器在系统中具有极高的具体作用,但是已经发现如果与通用主处理器组合起来,则这种组合就能够提供在处理吞吐量上的有利的提高,同时也保持了通用处理器适应不同的算法和情形的能力。
尽管存储器系统和总线结构被方便的提供成只在与系统的基地址有确定对齐时才操作,但是要被协处理器操纵和使用的希望的操作数的值却可以具有不同的对齐方式。因而,为了提供改善的性能,加载到协处理器中的被加载的数据字的数目取决于对齐方式。例如,如果希望响应一条协处理器加载指令而使用字对齐的32位的数据字来加载8个8位操作数,那么当操作数针对字边界被对齐时,这就可以用2个数据字实现,或者当操作数没有针对字边界被对齐时这可以用3个数据字实现。
在本发明的特别优选的实施例中,在协处理器中配有协处理器存储器以便在本地存储作为与被加载的数据字组合在一起而加以使用操作数的数据字。这种方案是考虑到在许多现实生活的计算情况中,数据字的相对小的子集经常被要求来和不怎么频繁被需要的数据字的宽得多的集合组合起来使用。本特性通过在本地存储频繁需要的数据字而将其拓展,从而使得在主处理器和协处理器之间所需要的数据通道容量被有益地减少。与传统的数字信号处理系统相比,由于主处理器的体系结构受到其它因素约束,所以一般来讲更加难以在主处理器和协处理器之间按照需要简单地增加更多的数据通道。
系统的性能在如下的实施例得到改进,在该实施例中,把要从耦合到主处理器的存储器中检索的被加载数据字传送到协处理器,而无需被存储在主处理器的寄存器中。在这种情况下,可以看出,主处理器为协处理器提供地址生成器和存储器访问机制的功能。
特别方便的是当在主处理器中包括了这样一个寄存器,该寄存器被操作用以存储指向要被加载到协处理器中的数据字的地址值。这样就给出对指向主处理器的地址指针的控制,由此就使得在可被支持的算法类型上的灵活程度得到改善。
可以理解,要被加载和操纵的数据字可以具有多种宽度。例如,数据字可以是包含4个8位操作数的32位的数据字,每个操作数都表示一个8位的像素值。然而,可以理解的是,数据字和操作数都可以采取种类很宽的不同的大小,诸如16位、64位、128位等。
在许多现实生活情景中,尽管对齐方式可以改变,但对于大量的有顺序的访问来说通常是相同的。在这种情况下,优选实施例可以使用协处理器中的寄存器值来存储一个指定数据操作数和数据字之间的对齐方式的对齐值,并且协处理器可以对该寄存器值做出响应而控制对于每个协处理器加载指令有多少数据字被加载。
尽管协处理器可以根据取决于特定系统的被加载的数据字中的操作数来执行种类很宽的处理操作,但是本发明在需要执行对多个操作数的值之间的绝对差进行求和的系统中是特别有用的。执行大量数据的绝对差的求和通常代表通用处理器在图像处理期间执行诸如像素块匹配这样的操作中所需要的处理负载的相当显著的部分。把绝对差的求和的低等级计算的整体转移到协处理器就使得性能方面得到显著的提高,同时还能保持通用处理器使用作为多种不同算法的一部分的特殊目的绝对差求和计算的灵活性。
在一个绝对差求和的系统中,可以在协处理器中有利地配备累加寄存器来对被计算的绝对差值的总和进行累加。在协处理器中的这个累加寄存器可以在需要时被取回到主处理器中以便进一步的操作,但是在位置上却被保留在协处理器中以便提高操作速度并减少对协处理器和主处理器之间数据传输的需求。
为了增强主处理器作为协处理器的地址生成器的作用,协处理器加载指令可以有益地包括一个偏移量,该偏移量被施加到作为指针存储在主处理器中的地址值上。在该指针值被使用之前或之后,该偏移量可选择地被用来更新该指针值。
本发明还提供了包括以上所述的协处理器加载指令的计算机程序产品。该计算机程序产品可以采用诸如光盘或者软盘这样的可分发介质的形式,或者可以作为嵌入在设备中的固件的一部分,或者可以被动态地诸如通过网络链路而被下载。
现在参考附图,仅通过例子来描述本发明的实施例,其中

图1原理性地说明了希望的绝对差求和的计算;图2原理性地说明了主处理器和协处理器的组合;图3是流程图,它原理性地说明可以由图2的系统执行的操作类型的例子;图4说明了4个示例协处理器加载指令;以及图5到7提供了依照一个示例实施例的协处理器的更多细节。
图1表示了像素的当前块2,对于它,需要在参考图像中找出最佳匹配。像素的当前块包含8比特像素字节值的8*8的块。像素的当前块2与像素的参考块4比较,参考块4位于不同于像素的当前块2的向量偏移v。在每个向量偏移,都要为匹配而进行测试,计算图1中所示的绝对差值求和表达式。这个表达式确定这两个块各自对应的像素值之间的绝对差,并且对获得的64个绝对差值求和。一个好的图像匹配通常由一个低的绝对差值和来加以指示。在诸如一个执行MPEG类型处理的图像数据处理系统中,此类绝对差求和的计算通常被要求并且能够表示通用处理器的十分不利的非常大的处理开销。
图2说明了一个数据处理系统6,它包括了主处理器8、协处理器10、高速缓存储器12以及主存储器14。主处理器8包括寄存器组16,用来存储可被主处理器8使用的通用寄存器值。主处理器8可以是例如英国剑桥的ARM公司所设计的主处理器之一。
主处理器8被耦合到高速缓存器12,它用来提供对最频繁需要的数据值的高速访问。在高速缓存器12外面提供了速度较低但容量较大的主存储器14。
协处理器10被连接到主处理器8的协处理器总线上,并且对主处理器8接收和执行的协处理器指令做出响应而执行预先规定的操作。在ARM体系结构中,提供了加载协处理器指令,该加载协处理器指令用于将数据值加载到协处理器中。图2中所示的协处理器10扩展了此类协处理器加载指令的功能,还使用它们向协处理器指明它应该根据被下载到协处理器10中的数据字中的操作数来执行某些预定的处理操作。
更具体地,协处理器10包括协处理器存储器18、对齐寄存器20、累加寄存器22以及控制和算术功能单元24。具体协处理器加载指令可被用来把16个32位数据字加载到协处理器存储器18中。这16个数据字每个都包含4个8位像素值,并且这16个数据字对应8*8像素块,即图1中所示的当前块2。在当前块2中的这些像素值将作为块使用绝对差的和与从参考图像中的多个不同位置所取的像素的参照块4进行比较,以便判定具有绝对差的最小和并且因此对应最佳图像匹配的参考块4。在位置上把当前块2的频繁使用的像素值存储在协处理器存储器18中是对处理资源的有效利用。一旦协处理器存储器18中已经载入了当前块2,主处理器8就执行特殊协处理器加载指令(USALD指令),该指令用来把两个或者三个数据字加载到协处理器10中并且计算在这些被下载的数据字中的8个像素操作数的绝对差值的和。在主处理器8的指令流中的USALD指令还被(直接地或者采用一个或多个控制信号的形式)传送给协处理器10,在协处理器10中,它触发控制和算术功能逻辑24以便控制从高速缓存器12或者主存储器14中通过主处理器8加载需要的数据字数目;并且然后还使用这些被加载的数值以及来自协处理器存储器18中的值执行绝对差求和计算。对齐寄存器20保存由主处理器8执行的协处理器寄存器加载指令预先设定的对齐值。控制和算术功能逻辑24响应这个对齐值,以便当操作数与字边界对齐时加载两个32位的数据字或者当没有这种对齐时加载3个32位的数据字。朝向图2中的高速缓存器12一侧,示例了8个期望的像素操作数的值,它们被存储在高速缓存器中并且没有与字边界对齐,还具有对齐偏移量CR_BY0。在所示的例子中,3个32位的数据字会被加载到协处理器10中,以便响应存储在寄存器组16的一个寄存器中并且指向所示的地址对齐的字的地址值[Rn]。在检索3个32位数据字时,控制和算术功能逻辑24执行多路选择操作以便根据指定的对齐值来从被下载的数据字中选择出所要求的操作数。从被下载的数据字中提取的该操作数的值受绝对差的求和计算的影响,它们使用诸如加法器和减法器这样的标准算术处理逻辑构成图1中所示计算的一部分。将会理解的是在所示的例子中,8个像素字节操作数有效地表示了图1中所示的当前像素块2和参考像素块4之间的决比较中的单一行。为了执行图1中所示的完全计算,将需要依次执行8个此类的协处理器加载指令。由这些协处理器指令中的每一条指令所计算的绝对差的和在累加寄存器22中加以累加。因此,在执行了每个都指定绝对差的一行之和的全部8个协处理器加载指令后,绝对差值的块之和就已经被执行了,并且把结果存储在累加寄存器22中。这个被存储的值然后就可诸如由主处理器指令将协处理器寄存器值移回到寄存器组16中的寄存器之一而将其返回到主处理器8。
在以上讨论的例子中,保存在寄存器组16的寄存器中的地址指针直接指向要被检索的第一个数据字的起始地址。然而,这个被存储的指针值也有可能受到一个偏移量(如10位的偏移量)的影响,该偏移量可被施加在这个被存储的指针值上来指示要访问的实际地址。在某些情况下,可以另外使用此类偏移量来在每次使用时更新指针值是很方便的。这样就有效地允许协处理器加载指令按照合适的量遍历指定参考图像的数据,以便为具体参考块4拾取所需要的不同的8像素的行,而无需要求额外的主处理器指令来改变指针。
图3是一个流程图,它原理性地表示使用图2的系统可被执行的处理的一个例子。在步骤26,表示当前像素决2的16个字被从高速缓存器12或者主存储器14中加载到协处理器存储器18中。在步骤28,主处理器8中的寄存器Rn被载入了一个指向参考块4在存储器中的开始的指针值。在步骤30,使用主处理器8上的协处理器寄存器加载指令来加载协处理器10的对齐寄存器20中的对齐值。可以理解步骤26、28以及30提供对数据处理环境的建立以便执行协处理器的加载和绝对差的求和指令。在许多情况下,这种建立只需要执行一次,然后在相对于具体当前块2测试大量的参考块4时保持不变。在许多环境中,与步骤26、28以及30相关的处理开销就相对地被减少。
步骤32表示如上所述的8个USALD协处理器加载指令的执行。这些指令中的每一条都分别计算当前块2和参考块4中的行的绝对差的和,并且更新累加寄存器22中的累加值。
在步骤34,可以由一个移动协处理器寄存器到主处理器寄存器的指令,将整个参考块4的计算的绝对差之和的值从累加寄存器22检索到主处理器8中。然后这一累加值可与以前计算的累加值或者其它参数相比较以便标识图像的最佳匹配或者用于其它目的。
图4表示了USALD指令的三种变型。第一种变型并不使用偏移量,而只是通过寄存器Rn中保存的指针来指定地址,并且常常根据条件码{cond}的条件执行。第二种变型使用通常为10个位的偏移量的地址指针,该偏移量在它根据标志{!}被使用之前或者之后,可被添加到初始值上或者被从初始值中减去。第三变型也使用了偏移量,该偏移量在使用之前被施加到寄存器Rn之内的指针值上,而指针值并不被改变。
下面将进一步介绍对本发明的示例实施例更加详细的描述1.1术语和缩写本说明书使用了以下术语和缩写。
术语 释义ASIC 专用集成电路BIST 内置自检JTAG 联合测试行动小组范围本说明书记录了ARM9X6协处理器的技术细节以便增强MPEG4编码器应用的性能。它涵盖从软件和硬件这二者的观点来看的功能性的规范。但没有包括软件或者硬件的实施细节。
介绍Urchin CoProcessor(UCP)是一种ARM9X6协处理器,该协处理器被设计成用来加速绝对差的求和(SAD)操作的执行。该SAD操作被用在比较来自参考帧的8×8块和当前帧中的8×8块时的MPEG4运动估计算法中。这是MPEG4视频编码应用的一部分。
1.2 UCP结构UCP解释一组协处理器指令,这些协处理器指令是ARM指令集的一部分。ARM的协处理器指令允许ARM处理器执行如下操作·在UCP和存储器之间传送数据(使用加载协处理器(LDC)和存储协处理器(STC)指令)。
·在UCP和ARM寄存器之间传送数据(使用传送到协处理器(MCR)和传送到ARM(MRC)指令)ARM充当UCP的地址生成器和数据泵(data pump)。
UCP包括寄存器组、数据通道和控制逻辑。在图5中表示了UCP的概要。
1.3协处理器接口到UCP的唯一连接就是来自ARM的协处理器接口。所有其它的系统连接(诸如AMBA或者中断)都通过ARM解决。
1.4设计约束UCP最初的实现是以0.18um库为目标的单点解决方案。这样集成了UCP和ARM926。UCP是该系统中唯一的协处理器。设计的主要约束是紧密的时标要求,所有的设计决策都是基于此的。
其它重要的设计约束包括门数(gate count)、最大工作频率(最坏情况)以及功耗。
1.4.1门数与本专利申请无关,略去此节。
1.4.2工作频率与本专利申请无关,略去此节。
1.4.3功耗与本专利申请无关,略去此节。
程序员的模型1.5寄存器UCP协处理器包含两种数据存储类型·寄存器它们被用于在ARM寄存器和协处理器之间直接传送数据。可以通过MCR和MRC操作访问这些寄存器。
·块缓冲器这是一个8字节(64位)乘以8的行存储,只能被直接从存储器映射区域(即非ARM寄存器)加载或存储。该块缓冲器可以由一组特殊UCP指令加以访问(ARM把它们视作LDC和STC操作)以下是UCP中的寄存器概述
寄存器 复位值 寄存器描述名称 数目CR_ACC 0 7存储来自SAD操作的累加结果CR_IDX 0 4存储该块缓冲器的行索引CR_BYO 0 2存储用于从参考帧加载块的字节偏移CR_CFG 0 1存储UCP配置CR_ID * 0UCP ID寄存器(*复位值=ID值)保留的或者未定义的寄存器位在寄存器读出时应被屏蔽,并且为了寄存器写入应被设置为0。这种的例外是CR_ACC和CR_BYO。这些寄存器在从未使用的位读出时总是返回0,并且在写入这些寄存器时可以把任何值写入到未使用的比特位置(UCP将忽略这些值)1.5.1 CR_ACC这是一个14位的读/写寄存器。它可以由MCR直接更新,也可以由SAD操作间接更新。
1.5.2 CR_IDX这是一个3位的读/写寄存器。它可以由MCR直接更新,也可以由用于增加行索引的块缓冲器加载/存储或者SAD操作间接更新。
这个寄存器指示了块缓冲器的行索引。这样就设定哪一行将被访问该块缓冲器的下一个操作(这些操作在任何时候仅使用块缓冲器中的单一行)参考。
当这个寄存器的值增加到超过7的时候,它将绕回到0。
1.5.3 CR_BYO这是一个2位的读/写寄存器。它只能用MCR更新。
UCP支持从字节对齐的地址访问参考帧。用于这些加载的地址总线较低的2位被存储在这个寄存器中。
注意协处理器对于ARM为了访问存储器使用的地址值没有直接的可见性。这是为什么软件必须把字节偏移分别编程到CR_BYO中的理由。ARM也不直接支持协处理器非字对齐的加载,因此UCP必须执行3个字的加载然后提取它所需要的8个字节。
1.5.4 CR_CFG这是一个单比特读/写寄存器。它只能被MCR更新。
IDX_INC位控制在由块缓冲器加载/存储或者SAD操作后是否增量CR_IDX寄存器。当它被清零时,不会发生增量;当它被置位时,CR_IDX在块缓冲器或SAD操作完成后被增量。
1.5.5 CR_ID这个14位的只读寄存器包含了UCP体系结构和修订版本代码。
31 14138 7 4 30

Bits[3:0] 包含该实现的修订版本号。Bits[7:4] 为了ARM的设计实现,被设定为值0×F。Bits[13:8]包含UCP体系结构版本0×00=版本11.6指令集UCP协处理器的汇编语法使用了和ARM相同的格式。
{}指示可选域。
cond 是ARM指令的条件代码域。
Dest 规定UCP的目的寄存器。
Rn 是一个ARM寄存器。
CRn 是一个UCP寄存器。
! 指示所计算的地址应被写回到基址寄存器。
UCP UCP协处理器的编号。
10_Bit_Offset是一个给10位字偏移量赋值的表达式。该偏移量被添加到基址寄存器以便形成加载地址。注意该偏移量必须是4的倍数。
6_Bit_Offset 是一个给6位字偏移量赋值的表达式。该偏移量被添加到基址寄存器以便形成加载地址。注意该偏移量必须是4的倍数。
注意使用回写或者不使用回写进行后置索引都可以。
下页将说明UCP的指令集。
1.6.1指令集概述UCP指令 描述UMCR 从ARM寄存器传送到UCP寄存器UMRC 从UCP寄存器传送到ARM寄存器UBBLD 从存储器加载两个字到块缓冲器中UBBST 将块缓冲器中的两个字存储到存储器USALD 从存储器字节对齐加载8个字节,在CR_ACC中执行SAD和累加1.6.2指令编码UCP指令属于以下的指令分类UCP指令 ARM协处理器编码UMCR MCRUMRC MRCUBBLD LDC(多次下载)UBBST STC(多次下载)USALD LDC(多次下载)该协处理器指令按如下编码 cond条件代码UCP UCP协处理器编号。
Rn ARM寄存器源CRn UCP寄存器源Rd ARM寄存器目标
CRdUCP寄存器目标8_bit_offset一个8位数(0-255);用于指示地址偏移量。
P前量/后置索引位,0=后置;在传送以后加上偏移量,1=前置;在传送之前加上偏移量。
U向上/向下位,0=向下;从基址中减去,1=向上;将偏移量加到基址上W回写位,0=不回写,1=把地址写回到基址。
注意只有上述的操作码对UCP有效。对这些操作码的任何改变(它们把UCP保持在位11到位8中)将会导致难以预计的情况。
1.6.3 UMCRUMCR指令用于向UCP寄存器进行写入。UMCR将数据从ARM寄存器Rn传送到UCP寄存器CRd中。
3128 27 26 25 24 23 22 21 20 19 18 17 16 1512 11 8 7 6 4 3 0

动作1把ARM寄存器Rn传送到UCP寄存器CRd。
助记符UMCR CRd,Rn,{cond}举例UMCR CR_ACC,R0;将R0的内容加载到CR_ACC1.6.4 UMRCUMRC指令用于从UCP寄存器进行读出。UMCR将数据从UCP寄存器CRn传送到ARM寄存器Rd中。
3128 27 26 25 24 23 22 21 20 19 18 17 16 1512 11 8 75 4 3 0

动作1把UCP寄存器CRn传送到ARM寄存器Rd。
助记符UMRC Rd,CRn,{cond}
举例UMRC R6,CR_ID;加载ID寄存器到R6中。
1.6.5 UBBLDUBBLD指令用于把数据加载到块缓冲器中。
31 30 29 28 27 26 25 24 23 22 2120 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

动作1加载字Block_Buffer(CR_IDX,0)2加载字Block_Buffer(CR_Loadword Block_buffer(CR_IDX,1)3如果(IDX_INC==1)4++CR_IDX助记符UBBLD[Rn],#0,{cond}UBBLD[Rn,#+/-10_Bit_Offset]{!},{cond}UBBLD[Rn],#+/-10_Bit_Offset{!},{cond}举例UBBLD[Rn],#320!;从mem(R0)加载两个字到块缓冲器并且对 后置增量R0到下一行。
1.6.6 UBBSTUBBST指令用于存储来自块缓冲器的数据。这一操作仅用于验证目的并且不应被应用代码使用。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 1716 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

动作1存储字Block_Buffer(CR_IDX,0)2存储字Block_Buffer(CR_IDX,1)3如果(IDX_INC==1)4++CR_IDX
助记符UBBST[Rn],#0,{cond}UBBST[Rn,#+/-10_Bit_Offset]{!},{cond}UBBST[Rn],#+/-10_Bit_Offset{!},{cond}举例UBBST[R3],#8!;以mem(r3)开始,将两个字从块缓冲器中存储到存储器中。
注意当IDX_INC==1时,UCP不支持连续的(back to back)UBBST。每个UBBST应该由至少单一的NOP隔开。连续使用UBBST将会导致不可预计的情况。
1.6.7 USALDUSALD指令加载参考块的数据并且执行SAD累加操作。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 98 7 6 5 4 3 2 1 0

动作1如果(CR_BYO==0)2加载字到firstword_tmp3否则4加载字到mux1_tmp;加载字到mux2_tmp;根据CR_BYO,把mux1_tmp与mux1_tmp相组结来在firstword_tmp中形成非对齐字加载。
5对于firstword_tmp中的每个字节以及Block_Buffer(CR_IDX,0)中的每个相应字节执行SAD。把结果累加到CR_ACC中。
6如果(CR_BYO==0)7加载字到secondword_tmp8否则9加载字到mux3_tmp;根据CR_BYO,把mux2_tmp与mux3_tmp相组结来在secondword_tmp中形成未对齐字下载。
10对于secondword_tmp中的每个字节以及Block_Buffer(CR_IDX,1)中的每个相应字节执行SAD。把结果累加到CR_ACC中。
11如果(IDX_INC==1)12++CR_IDX注意运算是无符号的。也未包括任何检测/处理CR_ACC溢出的措施。CR_ACC的大小已经被选择以确保在8×8的块比较中不会产生溢出。
助记符USALD[Rn],#0,{cond}USALD[Rn,#+/-10_Bit_Offset]{!},{cond}USALD[Rn],#+/-10_Bit_Offset{!},{cond}举例USALD[R0],#320!;处理来自mem(R0)中的两个字,执行SAD并后置增量R0到下一行。
1.7指令周期时序下表说明了完成每个指令所取的周期数目。指令 周期时间UMCR 1UMRC 1UBBLD2UBBST2USALDN个周期注当CR_BYO为0时,N=2个周期,否则N=3个周期。
1.8数据故障(Data Hazard)数据故障是指指令之间的数据依赖性导致发生不可预测的行为的情况。
在UCP中没有任何硬件互锁来处理数据故障。相反,因此在必要的地方,软件必须包括一个非协处理器指令,如果需要,通常是NOP。
指令 下一个指令UMCR 1)非使用CRd的两个周期的UMRC2)如果CRd是CR_IDX则是非两个周期的UBBSTUMRC 任意UBBLD(清零INC_IDX时) 非1个周期的UBBSTUBBLD(置位INC_IDX时) 1)非2个周期的UBBST2)非2个周期的UMRC CR_IDXUBBST(清零INC_IDX时) 任意UBBST(置位INC_IDX时) 1)非2个周期的UBBST2)非2个周期的UMRC CR_IDXUSALD(清零INC_IDX时) 1)非1个周期的UMCR CR_ACC2)非2个周期的UMRC CR_ACCUSALD(置位INC_IDX时) 1)非1个周期的UMCR CR_ACC2)非2个周期的UMRC CR_ACC3)非2个周期的UBBST4)非2个周期的UMRC CR_IDX表1功能描述1.9协处理器概述协处理器被紧耦合到ARM9X6处理器。去往UCP的每条指令都被立刻处理,就好像是ARM内核自身在执行该指令一样。UCP不是一个雇佣和遗忘(fire and forget)协处理器,UCP的指令被立即执行并且结果对于以下指令是可用的(服从某些条件见1.8节)。这意味着ARM不需要轮询协处理器的状态,并且协处理器不需要中断ARM。
1.10功能图UCP的连接如图6中所示。
1.11框7示出了UCP的主要块。
控制逻辑在指令从存储器到达时读取每条指令并包含了一个流水线跟随器,从而使得UCP和ARM步调一致。该协处理器流水线由以下阶段组成取指、译码、执行、存储、写以及SAD累加。
寄存器组包括块缓冲器和可MCR/MRC的寄存器。该寄存器组还包含了用于增量RC_IDX的逻辑。
数据路径包含了用于USALD操作的逻辑,包括字节操纵、SAD以及累加。该数据路径还为内部操作、UMRC以及UBBST处理寄存器读取选择和结果转发。
系统连接UCP被设计成直接连接到ARM9X6处理器。在这种配置中不使用CHSDE_C和CHSEX_C输出。对于ARM966和ARM946处理器,该CPABORT输入应被限制为低。在这种配置中,UCP将需要特殊中止处理程序代码以从加载操作期间的数据中止中恢复。
1.12连接到ARM920TARM920T协处理器的接口在功能上和9×6协处理器接口完全一致。然而,该接口在信号时序上有着显著的不同。为了UCP和ARM920一起使用,需要一个独立的外部再定时(re-timing)块。对该再定时块的详细要求超出了本发明文件的范围,不过,下面给出了这一例子中的配置的简述。
由ARM920提供的时钟在被传递给UCP的CPCLK之前被反相。CHSDE和CHSEX输出端不被使用,而相反CHSDE_C和CHSEX_C被传送到一个由920的时钟使能的透明锁存器(transparent latch)。
CPABORT信号被从ETM接口获得。
1.13连接附加的协处理器缺省地,对于使用多个外部协处理器的系统,UCP不会被配置。为了支持上述情况,需要附加逻辑。
如果有多个协处理器被连接到该接口,握手信号可以通过和比特1相“与”,然后和比特0相“或”组合而成。在两个协处理器,它们分别具有握手信号CHSDE1、CHSEX1和CHSDE2和CHSEX2的情况下CHSDE[1]<=CHSDE1[1]AND CHSDE2[1]CHSDE
<=CHSDE1
OR CHSDE2
CHSEX[1]<=CHSEX1[1]AND CHSEX2[1]CHSEX
<=CHSEX1
OR CHSEX2
AC时序本部分暂时未完成。AC时序在Philips处理中对于920T可用。
附录1.14信号描述下表描述了UCP用来接口到ARM9TDMI的信号。应该注意这会受到实现开始时变化的影响。最终版本也许会与下面所示的列表不同。
1.14.1 UCP指令提取接口信号名称 方向描述nCPMREQ 输入低电平协处理器存储请求。当在CPCLK上升沿为低(LOW)且CPCLKEN为高时,在CPINSTR上的指令应该进入协处理器流水线跟随器的译码阶段。前面处于流水线跟随器译码阶段的第二指令将进入其执行阶段。
CPINSTR[31:0] 输入协处理器指令数据。这是协处理器的指令数据总线,通过它将指令传送到协处理器中的流水线跟随器CPTBIT输入协处理器Thumb位。如果高,则协处理接口处于Thumb状态。
1.14.2 UCP数据总线名称 方向 描述CPDOUT[31:0] 输入 从ARM输出的数据。该协处理器数据总线用于传输MCR和LDC数据到协处理器CPDIN[31:0] 输出 输入到ARM的数据。该协处理器数据总线用于将MRC和STC数据从协处理器传输到ARM中
1.14.3 UCP协处理器接口信号名称方向 描述CHSDE[1:0] 输出 协处理器握手译码。该握手信号来自协处理器流水线跟随器的译码阶段CHSDE_C[1:0]输出 CHSDE的组合版本,在CHSDE之前输出一个周期(但只在趋向该周期的结束才有效)。仅供与920再定时封包器(wrapper)一起使用。
CHSEX[1:0] 输出 协处理器握手执行。该握手信号来自协处理器流水线跟随器的执行阶段CHSEX_C[1:0]输出 CHSEX的组合版本,在CHSEX之前输出一个周期(但只在趋向该循环的结束才有效)。仅供与920再定时封包器(wrapper)一起使用。
CPLATECANCEL输入 协处理器滞后取消。在协处理器指令正被执行时,如果在第一个存储器周期期间该信号为高,则在还没有更新协处理器状态的情况下,协处理器指令应该被取消。
CPPASS 输入 协处理器通过。该信号指示有一条协处理器处于流水线的执行状态,并且它应当被执行CPABORT 输入 协处理器操作数据中止。协处理器使用该信号来从数据加载期间的异常中恢复。
1.14.4 UCP杂项信号

权利要求
1.数据处理装置,它包括主处理器,对程序指令做出响应而执行数据处理操作;以及耦合到所述主处理器的协处理器,对所述主处理器上的协处理器加载指令做出响应而将一个或多个被加载的数据字加载到所述协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;其中响应所述协处理器加载指令,根据在所述一个或多个被加载的数据字中的所述操作数数据的开始地址是否与字边界对齐,把数目可变的被加载的数据字加载到所述协处理器中。
2.如权利要求1所要求的数据处理装置,其中所述协处理器包括一个协处理器存储器,它用于存储一个或多个本地存储的数据字,该数据字在所述至少一个协处理器处理操作中被作为与所述一个或多个被加载的数据字组合在一起的操作字而加以使用。
3.如权利要求1和2中的任一项所要求的数据处理装置,包括一个耦合到所述主处理器的存储器,并且其中所述一个和多个被加载的数据字被通过所述主处理器从所述存储器恢复到所述协处理器,而无需被存储在所述主处理器中的寄存器中。
4.如前述任一权利要求所要求的数据处理装置,其中所述主处理器包含一个寄存器,该寄存器可被操作用来存储指向所述一个或多个数据字的地址值。
5.如前述任一权利要求所要求的数据处理装置,其中所述至少一个协处理器的处理操作包括计算多个字节值之间的绝对差之和。
6.如权利要求2和5中所要求的数据处理装置,其中所述绝对差之和是作为在所述一个或多个被加载的数据字中的多个字节值和在所述一个或多个本地存储的数据字中的对应的多个字节值之间的绝对差之和而加以计算的。
7.如权利要求6中所要求的数据处理装置,其中所述绝对差值之和在所述协处理器的累加寄存器中加以累加。
8.如前述任一权利要求所要求的数据处理装置,其中所述协处理器包括一个对齐寄存器,该对齐寄存器用于存储一个指定所述操作数的数据和所述一个或多个被加载的数据字之间对齐方式的值。
9.如权利要求4中所要求的数据处理装置,其中所述协处理器加载指令包括一个偏移量,该偏移量在执行时要被加到所述地址值上。
10.如前述任一权利要求所要求的数据处理装置,其中作为块像素值匹配的一部分,所述至少一个协处理器处理操作计算绝对差之和。
11.一种处理数据的方法,它包括步骤响应程序指令而在一个主处理器中执行数据处理操作;以及响应所述主处理器上的协处理器加载指令,而将一个或多个被加载的数据字加载到与所述主处理器相耦合的协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;其中响应所述协处理器加载指令,根据所述一个或多个被加载的数据字中的所述操作数的数据的开始地址是否与字边界对齐,把数目可变的被加载的数据字加载到所述协处理器中。
12.一种计算机程序产品,用于控制计算机执行如下步骤响应程序指令而在主处理器中执行数据处理操作;以及响应所述主处理器上的协处理器加载指令,把一个或多个被加载的数据字加载到与所述主处理器相耦合的协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;其中响应所述协处理器加载指令,根据所述一个或多个被加载的数据字中的所述操作数数据的开始地址是否与字边界对齐,把数目可变的被加载数据字加载到所述协处理器中。
全文摘要
一种使用主处理器8和协处理器10的数据处理系统,提供协处理器加载指令(USALD),该协处理器加载指令用于根据对齐方式把数目可变的数据值加载到协处理器10中,并且还指定要根据那些被加载的数据字中的操作数而加以执行的数据处理操作,以生成结果数据字。被指定的协处理器处理操作可以是对一行像素字节值所进行的绝对差值的求和计算。这一操作的结果可以在累加寄存器22中加以累加。在协处理器10中配有协处理器存储器18,用于为协处理器10提供被频繁使用的操作数数据的本地存储器。
文档编号G06F9/30GK1491383SQ0182275
公开日2004年4月21日 申请日期2001年12月13日 优先权日2001年2月20日
发明者P·M·卡彭特, P·J·阿尔德沃斯, P M 卡彭特, 阿尔德沃斯 申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1