CN1491383A - 使用协处理器的数据处理 - Google Patents

使用协处理器的数据处理 Download PDF

Info

Publication number
CN1491383A
CN1491383A CNA018227570A CN01822757A CN1491383A CN 1491383 A CN1491383 A CN 1491383A CN A018227570 A CNA018227570 A CN A018227570A CN 01822757 A CN01822757 A CN 01822757A CN 1491383 A CN1491383 A CN 1491383A
Authority
CN
China
Prior art keywords
coprocessor
data
loaded
primary processor
register
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.)
Granted
Application number
CNA018227570A
Other languages
English (en)
Other versions
CN1254740C (zh
Inventor
Pm
P·M·卡彭特
P·J·阿尔德沃斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1491383A publication Critical patent/CN1491383A/zh
Application granted granted Critical
Publication of CN1254740C publication Critical patent/CN1254740C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)

Abstract

一种使用主处理器8和协处理器10的数据处理***,提供协处理器加载指令(USALD),该协处理器加载指令用于根据对齐方式把数目可变的数据值加载到协处理器10中,并且还指定要根据那些被加载的数据字中的操作数而加以执行的数据处理操作,以生成结果数据字。被指定的协处理器处理操作可以是对一行像素字节值所进行的绝对差值的求和计算。这一操作的结果可以在累加寄存器22中加以累加。在协处理器10中配有协处理器存储器18,用于为协处理器10提供被频繁使用的操作数数据的本地存储器。

Description

使用协处理器的数据处理
技术领域
本发明涉及数据处理***。更具体地,本发明涉及并入了主处理器和协处理器这二者的数据处理***。
背景技术
众所周知,可以提供并入了主处理器和协处理器的数据处理***。此类数据处理***的例子如英国剑桥的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       *          0    UCP 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                                                     14    13                        8   7         4   3        0
    保留   体系结构   0×F 修订版本
Bits[3:0] 包含该实现的修订版本号。Bits[7:4] 为了ARM的设计实现,被设定为值0×F。Bits[13:8]包含UCP体系结构版本:0×00=版本1
1.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                  MCR
UMRC                  MRC
UBBLD                 LDC(多次下载)
UBBST                 STC(多次下载)
USALD                 LDC(多次下载)
该协处理器指令按如下编码:
cond:条件代码
UCP: UCP协处理器编号。
Rn:  ARM寄存器源
CRn: UCP寄存器源
Rd:  ARM寄存器目标
CRd:UCP寄存器目标
8_bit_offset:一个8位数(0-255);用于指示地址偏移量。
P:前量/后置索引位,0=后置;在传送以后加上偏移量,1=前置;在传送之前加上偏移量。
U:向上/向下位,0=向下;从基址中减去,1=向上;将偏移量加到基址上
W:回写位,0=不回写,1=把地址写回到基址。
注意:只有上述的操作码对UCP有效。对这些操作码的任何改变(它们把UCP保持在位11到位8中)将会导致 难以预计的情况。
1.6.3 UMCR
UMCR指令用于向UCP寄存器进行写入。UMCR将数据从ARM寄存器Rn传送到UCP寄存器CRd中。
31    28 27 26 25 24 23 22 21 20 19 18 17      16 15        12 11          8  7      6  4  3      0
    cond 1  1  1  0  0  0  0  0     CRd     Rn     UCP  0 0 0  1  0 0  00
动作
1把ARM寄存器Rn传送到UCP寄存器CRd。
助记符
UMCR CRd,Rn,{cond}
举例
UMCR CR_ACC,R0;将R0的内容加载到CR_ACC
1.6.4 UMRC
UMRC指令用于从UCP寄存器进行读出。UMCR将数据从UCP寄存器CRn传送到ARM寄存器Rd中。
31    28 27 26 25 24 23 22 21 20 19 18 17      16 15        12  11     8  7        5  4  3      0
    cond 1  1  1  0  0  0  0  1     CRn     Rd     UCP  0 0 0 1 0 0  00
动作
1把UCP寄存器CRn传送到ARM寄存器Rd。
助记符
UMRC Rd,CRn,{cond}
举例
UMRC R6,CR_ID;加载ID寄存器到R6中。
1.6.5 UBBLD
UBBLD指令用于把数据加载到块缓冲器中。
31 30 29 28 27 26 25 24 23 22 21    20 19 18 17 16 15 14 13   12 11 10  9   8  7  6  5  4  3  2  1  0
  Cond 1  1  0  P U  1  W  1     Rn 1  0  0  0    UCP     8_bit_offset
动作
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 UBBST
UBBST指令用于存储来自块缓冲器的数据。这一操作仅用于验证目的并且不应被应用代码使用。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17    16 15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0
 Cond 1  1  0  P U  1  W  0    Rn   1 0 0 0   UCP     8_bit_offset
动作
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 USALD
USALD指令加载参考块的数据并且执行SAD累加操作。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17   16 15 14 13  12 11 10  9    8  7  6  5  4  3  2  1  0
 Cond 1  1  0  P U  1  W  1    Rn  1  0  0  1   UCP     8_bit_offset
动作
1如果(CR_BYO==0)
2加载字到firstword_tmp
3否则
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_tmp
8否则
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                 1UBBLD                2UBBST                2USALD                N个周期
注:当CR_BYO为0时,N=2个周期,否则N=3个周期。
1.8数据故障(Data Hazard)
数据故障是指指令之间的数据依赖性导致发生不可预测的行为的情况。
在UCP中没有任何硬件互锁来处理数据故障。相反,因此在必要的地方,软件必须包括一个非协处理器指令,如果需要,通常是NOP。
指令                           下一个指令
UMCR                           1)非使用CRd的两个周期的UMRC
                               2)如果CRd是CR_IDX则是非两个周
                               期的UBBST
UMRC                           任意
UBBLD(清零INC_IDX时)           非1个周期的UBBST
UBBLD(置位INC_IDX时)           1)非2个周期的UBBST
                               2)非2个周期的UMRC CR_IDX
UBBST(清零INC_IDX时)           任意
UBBST(置位INC_IDX时)           1)非2个周期的UBBST
                               2)非2个周期的UMRC CR_IDX
USALD(清零INC_IDX时)           1)非1个周期的UMCR CR_ACC
                               2)非2个周期的UMRC CR_ACC
USALD(置位INC_IDX时)           1)非1个周期的UMCR CR_ACC
                               2)非2个周期的UMRC CR_ACC
                               3)非2个周期的UBBST
                               4)非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连接到ARM920T
ARM920T协处理器的接口在功能上和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[0]<=CHSDE1[0]OR CHSDE2[0]
CHSEX[1]<=CHSEX1[1]AND CHSEX2[1]
CHSEX[0]<=CHSEX1[0]OR CHSEX2[0]
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杂项信号
名称 方向 描述
nRESET 输入 低电平复位这是一个电平敏感输入信号,用于复位协处理器。当nRESET的电平为低时,该协处理器就异步复位。
CPCLK 输入 时钟。该时钟同步所有的协处理器存储器访问(包括数据和指令)以及内部操作。
CPCLKEN 输入 协处理器时钟使能。用该信号限定协处理器时钟CPCLK。
BIGEND 输入 静态配置信号。高电平时支持大序法***而低电平时对应小序法。通常由处理器提供(即来自920的BIGENDOUT)。
SCANCLK 输入 用于产品扫描测试的时钟输入
SCANMODE 输入 用于产品扫描测试的测试模式控制输入

Claims (12)

1.数据处理装置,它包括:
主处理器,对程序指令做出响应而执行数据处理操作;以及
耦合到所述主处理器的协处理器,对所述主处理器上的协处理器加载指令做出响应而将一个或多个被加载的数据字加载到所述协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;
其中响应所述协处理器加载指令,根据在所述一个或多个被加载的数据字中的所述操作数数据的开始地址是否与字边界对齐,把数目可变的被加载的数据字加载到所述协处理器中。
2.如权利要求1所要求的数据处理装置,其中所述协处理器包括一个协处理器存储器,它用于存储一个或多个本地存储的数据字,该数据字在所述至少一个协处理器处理操作中被作为与所述一个或多个被加载的数据字组合在一起的操作字而加以使用。
3.如权利要求1和2中的任一项所要求的数据处理装置,包括一个耦合到所述主处理器的存储器,并且其中所述一个和多个被加载的数据字被通过所述主处理器从所述存储器恢复到所述协处理器,而无需被存储在所述主处理器中的寄存器中。
4.如前述任一权利要求所要求的数据处理装置,其中所述主处理器包含一个寄存器,该寄存器可***作用来存储指向所述一个或多个数据字的地址值。
5.如前述任一权利要求所要求的数据处理装置,其中所述至少一个协处理器的处理操作包括计算多个字节值之间的绝对差之和。
6.如权利要求2和5中所要求的数据处理装置,其中所述绝对差之和是作为在所述一个或多个被加载的数据字中的多个字节值和在所述一个或多个本地存储的数据字中的对应的多个字节值之间的绝对差之和而加以计算的。
7.如权利要求6中所要求的数据处理装置,其中所述绝对差值之和在所述协处理器的累加寄存器中加以累加。
8.如前述任一权利要求所要求的数据处理装置,其中所述协处理器包括一个对齐寄存器,该对齐寄存器用于存储一个指定所述操作数的数据和所述一个或多个被加载的数据字之间对齐方式的值。
9.如权利要求4中所要求的数据处理装置,其中所述协处理器加载指令包括一个偏移量,该偏移量在执行时要被加到所述地址值上。
10.如前述任一权利要求所要求的数据处理装置,其中作为块像素值匹配的一部分,所述至少一个协处理器处理操作计算绝对差之和。
11.一种处理数据的方法,它包括步骤:
响应程序指令而在一个主处理器中执行数据处理操作;以及
响应所述主处理器上的协处理器加载指令,而将一个或多个被加载的数据字加载到与所述主处理器相耦合的协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;
其中响应所述协处理器加载指令,根据所述一个或多个被加载的数据字中的所述操作数的数据的开始地址是否与字边界对齐,把数目可变的被加载的数据字加载到所述协处理器中。
12.一种计算机程序产品,用于控制计算机执行如下步骤:
响应程序指令而在主处理器中执行数据处理操作;以及
响应所述主处理器上的协处理器加载指令,把一个或多个被加载的数据字加载到与所述主处理器相耦合的协处理器中,并且使用提供操作数数据的所述一个或多个被加载的数据字来执行由所述协处理器加载指令所指定的至少一个协处理器处理操作,以便生成至少一个结果数据字;
其中响应所述协处理器加载指令,根据所述一个或多个被加载的数据字中的所述操作数数据的开始地址是否与字边界对齐,把数目可变的被加载数据字加载到所述协处理器中。
CNB018227570A 2001-02-20 2001-12-13 使用协处理器的数据处理 Expired - Lifetime CN1254740C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0104160.7 2001-02-20
GB0104160A GB2372848B (en) 2001-02-20 2001-02-20 Data processing using a coprocessor

Publications (2)

Publication Number Publication Date
CN1491383A true CN1491383A (zh) 2004-04-21
CN1254740C CN1254740C (zh) 2006-05-03

Family

ID=9909128

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018227570A Expired - Lifetime CN1254740C (zh) 2001-02-20 2001-12-13 使用协处理器的数据处理

Country Status (11)

Country Link
US (1) US7089393B2 (zh)
EP (1) EP1362286B1 (zh)
JP (1) JP3729809B2 (zh)
KR (1) KR100777753B1 (zh)
CN (1) CN1254740C (zh)
GB (1) GB2372848B (zh)
IL (2) IL155662A0 (zh)
MY (1) MY124779A (zh)
RU (1) RU2275678C2 (zh)
TW (1) TWI285322B (zh)
WO (1) WO2002067113A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102109979A (zh) * 2009-12-28 2011-06-29 索尼公司 处理器、协处理器、信息处理***及其方法
CN101438598B (zh) * 2006-05-10 2013-08-14 高通股份有限公司 用于产生两个独立绝对差和的指令

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource
KR100868677B1 (ko) * 2007-05-18 2008-11-13 한국과학기술원 데이터 처리 장치, 데이터 처리 시스템, 코프로세서 연결방법, 및 코프로세서 인터페이스 방법
KR101200490B1 (ko) * 2008-12-10 2012-11-12 한국전자통신연구원 영상 정합 장치 및 방법
US8392689B1 (en) * 2010-05-24 2013-03-05 Western Digital Technologies, Inc. Address optimized buffer transfer requests
CN102486758B (zh) * 2010-12-01 2015-01-28 中兴通讯股份有限公司 一种访问协处理器寄存器的方法及装置
US9304774B2 (en) * 2011-02-04 2016-04-05 Qualcomm Incorporated Processor with a coprocessor having early access to not-yet issued instructions
US20130138921A1 (en) * 2011-11-28 2013-05-30 Andes Technology Corporation De-coupled co-processor interface
US9632781B2 (en) 2013-02-26 2017-04-25 Qualcomm Incorporated Vector register addressing and functions based on a scalar register data value
CN104503942B (zh) * 2014-12-30 2017-10-31 合肥金星机电科技发展有限公司 串口指令解码方法
KR102547495B1 (ko) 2022-07-26 2023-06-23 장희석 무편심 서보가압식 마이크로 스폿용접기

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2920477A1 (de) * 1979-05-21 1980-12-04 Kabel Metallwerke Ghh Vorgefertigte dreiphasige wechselstromwicklung fuer einen linearmotor
US4317168A (en) * 1979-11-23 1982-02-23 International Business Machines Corporation Cache organization enabling concurrent line castout and line fetch transfers with main storage
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4961162A (en) * 1989-01-13 1990-10-02 International Business Machines Corporation Multiprocessing system for performing floating point arithmetic operations
US5025407A (en) * 1989-07-28 1991-06-18 Texas Instruments Incorporated Graphics floating point coprocessor having matrix capabilities
US5168561A (en) * 1990-02-16 1992-12-01 Ncr Corporation Pipe-line method and apparatus for byte alignment of data words during direct memory access transfers
US5577200A (en) * 1994-02-28 1996-11-19 Intel Corporation Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system
US5668984A (en) * 1995-02-27 1997-09-16 International Business Machines Corporation Variable stage load path and method of operation
US6331856B1 (en) 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
GB2326253A (en) 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
JP2002519884A (ja) * 1998-06-25 2002-07-02 イクエーター テクノロジーズ インコーポレイテッド 可変長符号化及び復号化用の処理回路及び方法
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
GB2359967B (en) * 2000-02-29 2004-05-12 Virata Ltd Qamd

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101438598B (zh) * 2006-05-10 2013-08-14 高通股份有限公司 用于产生两个独立绝对差和的指令
CN102109979A (zh) * 2009-12-28 2011-06-29 索尼公司 处理器、协处理器、信息处理***及其方法

Also Published As

Publication number Publication date
IL155662A0 (en) 2003-11-23
EP1362286B1 (en) 2018-01-24
GB2372848B (en) 2004-10-27
MY124779A (en) 2006-07-31
EP1362286A1 (en) 2003-11-19
CN1254740C (zh) 2006-05-03
JP3729809B2 (ja) 2005-12-21
WO2002067113A1 (en) 2002-08-29
US7089393B2 (en) 2006-08-08
GB2372848A (en) 2002-09-04
RU2275678C2 (ru) 2006-04-27
GB0104160D0 (en) 2001-04-11
IL155662A (en) 2008-08-07
KR100777753B1 (ko) 2007-11-19
JP2004519768A (ja) 2004-07-02
US20020116580A1 (en) 2002-08-22
KR20030078063A (ko) 2003-10-04
TWI285322B (en) 2007-08-11

Similar Documents

Publication Publication Date Title
CN1135468C (zh) 对存储设备中信号数据字执行数字信号处理的方法和装置
CN1202470C (zh) 处理器
CN1260646C (zh) 附有第二预测装置的假想分支目标地址高速缓存
CN1103961C (zh) 协处理器的数据访问控制装置和方法
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1220938C (zh) 双调用/返回堆栈分支预测***
CN1217262C (zh) 假想分支目标地址高速缓存中置换目标地址的装置及方法
CN1126030C (zh) 数据处理装置
CN1257452C (zh) 假想分支目标地址高速缓存分支的装置、***及方法
CN1186718C (zh) 微控制器指令集
CN1246772C (zh) 处理器
CN1497435A (zh) 处理器
CN1688966A (zh) 包括对准或者广播指令的多媒体协处理器控制机制
CN1217271C (zh) 假想分支目标地址高速缓存
CN1472646A (zh) 适应性强具备最佳化功能的编译装置
CN1482540A (zh) 编译程序、编译程序装置和编译方法
CN1180864A (zh) 多媒体信号处理器中的单指令多数据处理方法及其装置
CN1491383A (zh) 使用协处理器的数据处理
CN1469241A (zh) 处理器、程序变换装置和变换方法以及计算机程序
CN1269030C (zh) 高速缓存的快取线选取目标地址的装置及方法
CN1137421C (zh) 可编程控制器
CN1269052C (zh) 支持缩小代码长度的常量还原型处理器
CN1103959C (zh) 数据处理装置和操作数据处理装置的方法
CN1577291A (zh) 程序调试装置、程序调试方法及程序
CN1286004C (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
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20060503

CX01 Expiry of patent term