首页> 中国专利> 在顺序处理器上处理数据元素集合的方法和计算机系统

在顺序处理器上处理数据元素集合的方法和计算机系统

摘要

本方法和本系统用于在常规顺序处理器(30)中并行处理一个数据元素集合,诸如在模式识别中使用的矢量的分量。一组数据元素作为一个组合数据元素加载到处理器(30)的一个数据寄存器中。使用常规的处理器指令,诸如加、减或乘操作该数据寄存器。组合数据元素至少包括两块,每一块在低阶位位置包括一个数据元素,在高阶位位置包括至少一个分隔位。给分隔位分配预定的位值,保证在处理器操作时形成希望的并行结果。

著录项

  • 公开/公告号CN1194700A

    专利类型发明专利

  • 公开/公告日1998-09-30

    原文格式PDF

  • 申请/专利权人 菲利浦电子有限公司;

    申请/专利号CN97190559.2

  • 发明设计人 F·瑟德;

    申请日1997-03-13

  • 分类号G06F9/38;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人王勇;陈景峻

  • 地址 荷兰艾恩德霍芬

  • 入库时间 2023-12-17 13:13:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-05-14

    专利权的终止(未缴年费专利权终止)

    专利权的终止(未缴年费专利权终止)

  • 2004-08-04

    授权

    授权

  • 1999-07-14

    实质审查请求的生效

    实质审查请求的生效

  • 1998-12-09

    著录项目变更 变更前: 变更后: 申请日:19970313

    著录项目变更

  • 1998-09-30

    公开

    公开

说明书

本发明涉及在包括顺序处理器的计算机系统中处理数据元素集合的方法,每一个数据元素包括多个d数据位,处理器操作存储在多个数据寄存器的单独一个之中的特定于指令的多个操作数,至少一个操作数的宽度为w位,所述方法包括:

a.从数据元素集合中至少选择一个数据元素;

b.为每一个选择的数据元素选择一个数据寄存器并加载选择的数据元素到选择的数据寄存器中;

c.指示处理器操作所选择的数据寄存器;

d.重复步骤a到c,直到集合中的所有数据元素处理完毕。

本发明还涉及处理一个数据元素集合的计算机系统,每一个数据元素包含多个d数据位,所述系统包括存储设备和一个顺序处理器,该处理器操作存储在多个数据寄存器的单独一个之中的特定于指令的多个操作数,至少一个操作数的宽度为w位,在存储设备中存储的程序控制下操作处理器执行下述步骤:

a.从数据元素集合中至少选择一个数据元素;

b.为每一个选择的数据元素选择一个数据寄存器并加载选择的数据元素到选择的数据寄存器中;

c.操作选择的数据寄存器;

d.重复步骤a到c,直到集合中所有数据元素处理完毕。

这种方法和计算机系统通常例如用于模式识别。诸如语音识别或者图像识别的模式识别变得日益重要。特别是语音识别最近广泛应用于像电话和远程通信(各种自动服务)领域、办公室和商务系统(数据录入)、制造业(制造过程的无人监控)、医药业(报告的注释)、游戏(语音输入)、汽车功能的声控和由残疾人使用的声控。对于连续语音识别,通常使用下面的信号处理步骤,这在图1中说明[参见L.Rabiner"A Tutorial onMarkov Models and SelectedApplication in Speech Recognition",Proceeding of the IEEE Vol.77,No.2,February 1989(“马尔科夫模型指导及语音识别中选择的应用”,IEEE会议录,第77卷,第二期,1989年2月)]:

-特征分析:语音输入信号用谱和/或时间分析以计算特征的一个代表矢量(观察矢量o)。通常语音信号被数字化(例如以6.67kHz的速率采样)和预处理,例如预增强处理。连续样本分组(成块)为帧,相应于例如为32msec的语音信号。相继的帧部分重叠,例如重叠16msec。常常使用线性预测编码(LPC)谱分析方法计算每一帧的一个特征代表矢量(观察矢量o)。特征矢量可以例如具有24,32或者63个分量(特征空间维数)。

-单元匹配系统:观察矢量相对于语音识别单元的存量匹配。可以使用各种形式的语音识别单元。一些系统使用语言学为基础的子词单元,诸如单音,双音或者音节,以及派生单元,诸如fenenes和fenones。其它系统使用一个整词或者一组词作为一个单元。单元匹配系统相对于语音识别单元的所有序列匹配观察矢量,并提供在观察矢量和所述序列之间匹配的可能性。

所谓的隐式马尔科夫模型(HMM)广泛用于随机模型语音信号。使用该模型,每一个语音识别单元通常用一个HMM表征,它的参数从语音数据的一个训练集中估计。对于包括例如10000到60000词的大型词汇语音识别系统,通常使用一个有限集(例如40)的子词单元,因为它需要许多训练数据以便适当地为更大单元训练一个HMM。对于语音来说,观察表示连续的信号。观察可以被量化为从一个有限的例如32到256个矢量的字母表中选择的离散符号。在这种情况下可以为该模型的每一状态使用一个离散概率密度。为避免伴随量化产生的退化,许多语音识别系统使用连续观察密度。一般,密度从对数凹面或者椭圆对称密度导出,诸如高斯(正则分布)或拉普拉斯密度。在训练期间,训练数据(训练观察序列)分段为状态,而每一状态的观察矢量形成簇。取决于系统的复杂性和训练数据的数量,每一状态例如可能有32到120簇。每一簇有其自己的密度,例如高斯密度。该密度由一个参考矢量,例如一个平均矢量表示。

可能性计算包括在每一状态下计算该观察(特征矢量)到表示一簇的每一参考矢量的距离。特别在使用连续观察密度HMM的大词汇语音识别系统中,可能性计算包括大量计算。例如使用40个子词单元,每一子词单元有5个状态和每一状态有64簇,则可能性计算在例如32维矢量之间包括12800个距离计算。这些计算为每一观察重复。结果,可能性计算可能消耗计算资源的50%-70%。

模式识别通常是在传统的PC或者带有一个顺序微处理器的工作站上执行。即使使用最新技术的微处理器,模式识别的质量例如因为由系统中使用的总簇数所影响而受到限制,为的是实现实时或者近似实时模式识别。

本发明的一个目的是提供一种所述方法和计算机系统,它能更快的处理例如用于模式识别的数据元素集合。

为达到这一目的,本发明方法的特征在于:

步骤a.包括从数据元素集合中至少选择一组包括至少两个不同的数据元素;

步骤b.包括对每一选择的组选择单独的数据寄存器,并加载该组的数据元素作为组合数据元素到选择的数据寄存器;对该组每一数据元素所述组合数据元素包括一个至少d+s个连续位的相应块;这些块在该组合数据元素的连续块位置处排列,每一块d个低位位置包含相应的数据元素的数据位,至少s个高位位置包含分隔位,每一位具有一个预定的位值,其中(d+s)*2≤w。

通常,顺序处理器操作加载到单独的数据寄存器中的操作数。该操作数被视为是一个数据元素。顺序处理器的性能连续增长。作为一个例子,这是由于时钟频率的增加和使用了处理每条指令需要较少处理周期的处理器结构,诸如RISC或者超大规模的设备,每秒执行的指令数增加。另外,处理器的字长增加到例如32或64位。由于数据元素的长度由应用决定,所以应用数目的增加从字长的增加中未受益。使用8位数据元素,如果两个处理器每秒执行的指令数相同的话,可能性计算在8位处理器和32位处理器上可能执行的一样好。取决于处理器结构,如果该处理器另外需要在8位和32位字之间变换的时间的话,32位处理器甚至可能更慢。一般来说,每秒能够执行大数目指令的处理器也具有大的字长。本发明也提供使用增加字长的方式。因此,根据本发明,表示一组数据元素的一个组合数据元素加载到数据寄存器。使用通常使用的同样的指令操作一个数据元素,使用顺序处理器并行操作该组数据元素。为保证在操作数据元素期间彼此不产生无意的干扰,例如由进位或下溢或溢出而引起,组合数据元素在各个组成的数据元素之间加入分隔位。对于模式识别,更快的处理意味着用于最大可能性计算需要的处理时间的百分比减小。这对实现实时模式识别很有帮助,同时有可能以较低的模式错误率识别模式。

在本发明的一个实施例中数据元素表示为有限整数,它的特征在于,该方法包括给该组每一数据元素加2d-1,变换该组的数据元素为有限正整数的步骤。把有限整数变换为有限正整数简化了分隔位的处理。

本发明的一个实施例的计算机系统包括存储器设备,数据元素存储在该存储器设备中,它的特征在于,至少一组组合数据元素存储在该存储器设备中,加载该组的数据元素作为一个组合数据元素到选择的数据寄存器包括从存储器设备读该组合数据元素到所选择的数据寄存器。通过为该组数据元素事先存储一个组合数据元素,可以很快加载该组合数据元素。优点是,数据元素以适于用作一个组合数据元素的形式存储。数据元素最好是顺序存储在存储器设备中,其间夹有分隔位。

本发明的另一可选择的实施例的特征在于,所述方法包括从相应组的数据元素构造组合数据元素,做法是为所述组的每一数据元素加载该数据元素到一个第一数据寄存器,跨越至少d+s个位位置上重定位在第一数据寄存器中的数据元素或者存储在一个第二数据寄存器中的临时组合数据元素,结合所述数据元素与在第二数据寄存器中的临时组合数据元素;并使用该临时组合数据元素作为组合数据元素。

在该实施例中,组合数据元素从相应的数据元素构造。这一方法可以有利地用于数据元素实时供给处理器的系统,对该数据元素或组合数据元素不需要另外的存储器。

本发明的另一可选择的实施例中数据元素集合包括第一和第二数据元素子集,第一和第二子集包括同样数目的数据元素,该实施例的特征在于,第一组合数据元素相应于第一数据元素子集的一组数据元素,具有加在每一数据元素上的一个偏移,该偏移至少为第一组合数据元素的每一块的一个分隔位,其值被设定为二进制值“1”;第二组合数据元素相应于第二数据元素子集的一组数据元素,该第二组合数据元素每一块的分隔位被设定为二进制值“0”;指示处理器通过从用第一组合数据元素加载的一个数据寄存器减去用第二组合数据元素加载的一个数据寄存器而形成一个减后的组合数据元素;该减后的组合数据元素的块安排相应于第一和第二组合数据元素的块安排;减后的组合数据元素的每一块比第一和第二组合数据元素的相应块包含至少多一个数据位和至少少一个分隔位。

以这种方式在顺序处理器上实现并行减。通过设定第一组合数据元素的分隔位为“1”,避免了在做减法时出现负数,否则它会导致邻近数据元素相互影响(低位数据元素从高位数据元素“借”1位)。

本发明的另一个实施例的特征在于,一个组合数据元素分隔位的设定包括指示处理器对该组合数据元素用一个w位的预定屏蔽执行一个位方式的XOR(异或)运算。以这种方式,组合数据元素的所有块的分隔位在一次操作中置位。

本发明的另一个实施例的特征在于,该方法包括选择性地转换减后的组合数据元素的负数据元素为相应的正数据元素。通过转换负数据元素,并行计算一个组合数据元素的数据元素的绝对值。这也许有利地用于计算一个矢量的L1模或多个矢量的L1距离。

在本发明的另一个实施例中负数以2的补表示,其特征在于,所述转换包括:

-判定减后的组合数据元素的哪一个数据元素是负数,做法是:

-指示处理器对减后的组合数据元素用一个w位的第一屏蔽执行一个位方式的AND(与)运算。第一屏蔽的块安排相应于减后的组合数据元素的块安排,其中第一屏蔽的每一块的第d+1位设定为二进制值“1”,而其余位设定为二进制值“0”。

-指示处理器用2d去除产生的组合数据元素,形成一个w位的第二屏蔽;

-变换减后的组合数据元素的数据元素,做法是:

-指示处理器计算一个第三屏蔽,其为第二屏蔽乘以2d+1-1;

-指示处理器对减后的组合数据元素和第三屏蔽执行一个位方式的XOR运算,接着把第二屏蔽相加。

以这种方式并行执行负数据元素的2的补变换。

在本发明的另外的实施例中第一和第二数据元素子集分别表示一个第一矢量和第二矢量,所述方法包括计算在第一和第二矢量之间的Lr距离,该实施例的特征在于,该距离计算包括:

-从所述减后组合数据元素取出每一个数据元素;

-提升取出的数据到幂次r;

-合计提升的数据元素形成和。

在并行计算矢量的差和可选择地计算不同矢量的分量的绝对值之后,进一步单独处理这些不同矢量的分量以确定这些矢量的Lr距离。

在本发明的一个可选的实施例中,计算机系统包括存储器设备,第一和第二数据元素子集分别表示第一和第二矢量,所述方法包括计算第一和第二矢量之间的一个Lr距离,该实施例的特征在于,所述计算包括:

-从减后组合数据元素取出一个数据单元,该数据单元至少包括多个连续块的数据位;

-访问存储在存储器设备中的一张表,为相应于作为取出的数据单元的部分的数据位的数据元素检索一个Lr子模。

通过使用例如为两个数据元素的组合提供一个Lr子模的一张表,可以使用该组合数据元素有效计算Lr距离。

本发明的另外的实施例的特征在于,所述方法包括:

-从该集合中选择多个所述组;

-指示处理器计算一个组合和,做法是:

对每一组:

-加载该组的数据元素作为一个组特定的组合数据元素到一个选择的寄存器,该组特定的组合数据元素每一块的分隔位设定为二进制值“0”;

-指示处理器把选择的数据寄存器加到一个包含一个临时组合和的数据寄存器;该临时组合和是一个组合数据元素,它的块安排相应于在组特定的组合数据元素中的块安排,减后组合数据元素的每一块比组特定的组合数据元素的相应块包含至少多一个数据位和至少少一个分隔位;

-使用该临时组合和作为组合和。

以这种方式在顺序处理器上实现并行加。

本发明另外的实施例的特征在于,所述方法包括通过把一个组合数据元素分成至少一个第一和一个第二组合数据元素而建立更多分隔位。使用s个分隔位可以把2s个组合数据元素以这种方式加在一起,而邻近数据元素不相干扰。通过分开组合数据元素,可以建立更多分隔位,允许更多组合数据元素加在一起。

本发明另外的实施例的特征在于,分开组合数据元素成为第一和第二组合数据元素包括:

-复制组合数据元素到第二组合数据元素;

-在第一选择的交错块位置从组合数据元素去掉若干块形成第一组合数据元素;

-在第二选择的交错块位置从第二组合数据元素去掉若干块;第二选择是对第一选择的补;

-移动第一组合数据元素或者第二组合数据元素一个块位置。

这是建立d个更多分隔位的有效方法。

本发明另外的实施例的特征在于,所述方法进一步包括通过取出组合和的块并把取出的块合计而计算一个总和。可以通过合计组合和的分量计算总和。

本发明的另一可选实施例的特征在于,所述方法进一步包括计算一个总和,该计算包括:

-确定组合和中的块数n;

-确定基本上为n的一半的一个整数m;

-复制组合和到一个第二组合和;

-在第一方向上移动组合和或第二组合和m个块位置;

-相加组合和与第二组合和,形成具有较少数据元素的一个新组合和。

以这种方式,并行相加组合和的多个数据元素,同时减少组合和中数据元素的数目。

在本发明另外的实施例中计算机系统包括存储器设备,该实施例的特征在于,所述方法进一步包括计算一个总和,做法是:

-从组合和中取出一个数据单元;该数据单元包括多个连续块;

-访问存储在存储器设备中的表以检索作为所取出的数据单元的部分的数据元素的和。

通过使用一张表,可以有效地计算总和。

在本发明另外的实施例中数据元素集合包括第一和第二数据元素子集;第一和第二子集包括同等数目的数据元素并分别表示第一和第二矢量;所述方法包括计算在第一和第二矢量之间的一个L2距离,其特征在于:

第一组合数据元素相应于第一数据元素子集的一组k个连续的数据元素,第一组合数据元素的连续块相应于连续数据元素,块中的分隔位的数目至少为d,分隔位设定为二进制值“0”;

第二组合数据元素相应于第二数据元素集的一组k个连续数据元素,第二组合数据元素的连续块相应于成反序的连续数据元素,块中的分隔位的数目至少为d,分隔位设定为二进制值“0”;

所述计算包括:

-指示处理器以用第二组合数据元素加载的一个数据寄存器乘用第一组合数据元素加载的一个数据寄存器,形成一个乘后组合数据元素;

-从乘后组合数据元素取出第k块。

在以这种方式形成组合数据元素时,所述乘法导致在第k块的位置形成一个交叉积,它可以有利地用于计算L2距离。

本发明另外的实施例的特征在于,处理器包括多个浮点数据寄存器,第一和第二组合数据元素加载到各个浮点数据寄存器的尾数中,指示处理器在用第一和第二组合数据元素加载的浮点寄存器上执行浮点乘法形成一个乘后组合数据元素。在具有比整数乘法快的浮点乘法的某些处理器中,浮点单元有利地用来执行这一乘法。

本发明另外的实施例的特征在于,取出乘后组合数据元素的第k块包括:

-在加载第一或第二组合数据元素到浮点数据寄存器时,设定指数为2-n,其中n为乘后组合数据元素的k-1个低阶块的位数;

-变换乘后组合数据元素为一整数值;

-通过屏蔽从该整数取出低阶块。

通过在加载组合数据元素期间设定指数和在乘法执行期间维持同一指数值,在变换为一个整数值期间自动移位所需数量的位位置。这简化对第k块的取出。

为实现本发明的目的,本发明的计算机系统的特征在于,步骤a包括至少选择该数据元素集合中一组至少两个不同的数据元素;

步骤b包括为每一选择的组选择一个单独的数据寄存器,并加载该组的数据元素作为一个组合数据元素到选择的数据寄存器;该组合数据元素为该组的每一数据元素包括一个至少有d+s连续位的相应块;这些块安排在该组合数据元素的连续块位置,每一块的d个低阶位位置包括相应数据元素的数据位,以及至少s个高阶位位置包括分隔位,每一位具有预定位值,其中(d+s)*2≤w。

本发明的这些以及其它方面通过对附图中所示实施例的说明将变得十分明显。

图1说明连续语音识别通常使用的处理步骤;

图2表示本发明系统的一个实施例的方框图;

图3表示一个左右离散马尔科夫过程的例子;

图4表示具有4块的一个组合数据元素;

图5说明设定分隔位;

图6表示一种并行减;

图7说明判定负数据元素;

图8表示变换负数据元素为相应正值;

图9表示一种并行加;

图10说明建立更多分隔位;

图11表示加一个组合数据元素的分量;

图12说明用一个奇数块处理一个组合数据元素;

图13表示另一种可选择的用一个奇数块处理一个组合数据元素的方法;

图14说明一种并行乘。

图2表示本发明的系统10的一个方框图。该系统包括存储器设备20和处理器30。存储器设备20存储有一个程序,用于控制本发明的处理器30。在该程序的控制下处理器30处理数据元素集合。所述数据元素可以存储在存储器设备20中,也可以实时供给,这将在后面详细叙述。数据元素包括d个数据位。典型的是每一数据元素包括同样数目的数据位。d的值由实际应用确定。如后面详细叙述的那样,对于语音识别系统,可以有利地使用小数位的数据元素例如7到15位。存储器设备20通常用RAM实现。如果需要的话程序或数据元素可以从后台存储器,例如硬盘,CD-ROM或ROM中检索到存储器设备20中。容易理解,对于存储器20也可以使用超高速缓冲存储器。处理器30可以是任何类型的顺序处理器,例如在PC和工作站中使用的顺序处理器。处理器包括多个数据寄存器。处理器30包括一个ALU32(算术逻辑单元)和数据寄存器34。容易理解,所述处理器可以包括在处理器中使用的更多的设备,例如控制单元,总线,其它寄存器,程序超高速缓冲存储器和数据超高速缓冲存储器。由于这样的设备是标准的而不形成本发明的部分,所以未在图中示出这些设备。ALU32操作存储在单独的数据寄存器中的操作数。所涉及的操作数的数目(因此,数据寄存器的数目)可以根据指令来定。处理器30具有字长w,其中w至少两倍于d+1。至少一个操作数的宽度为w位。对于CISC型的处理器,字长可能根据指令变化;而RISC型的处理器通常字长对所有指令一样。现代的微处理器通常字长为32或64位,而趋势是向128位发展。另外也可以使用大字长的数字信号处理器(DSP)。

通常该系统使用常规计算机系统例如PC或工作站实现。因此,该系统可能包括在这样的计算机系统中通常使用的设备,例如像键盘或鼠标的输入设备以及诸如显示器的输出设备。由于这样的设备是标准的,不形成本发明的部分,所以在图2中未示出这些设备。

本发明的系统可以用于不同应用场合。有利的是,本发明应用于通常重复使用同一指令来顺序处理大的数据元素集合的应用。这种应用的例子有把两行数加在一起,计算一个矢量的模(意味着把矢量的分量相加和依赖于模计算绝对值和/或提升矢量分量到一个幂)和计算矢量的一个距离(意味着减去矢量的分量,和计算该结果矢量的模)。根据本发明,数据元素被格式化并以这样一种方式交付处理器,即处理器使用同一指令执行和前面一样的操作,但是现在对一些数据元素并行处理。为此目的,至少两个数据元素以不重叠方式被加载到一个数据寄存器中。由于对于诸如加、减和乘这样的指令可能发生上溢/下溢或进位,因此使用附加位(指的是分隔位)来分开数据寄存器中的数据元素。显然对于诸如音频和视频处理这样的应用来说使用本发明的系统十分有益,因为在这些应用中用于数据的寄存器长度相对小,例如为8或16位的整数。更具体地说,该系统可以用于模式识别。在一个模式识别系统中,一个时间顺序输入模式40由一个连续物理量驱动,例如语音或图像。为此目的,输入设备50周期性地访问该物理量。对于语音来说,这通常包括以规律性的时间间隔例如6.67kHz,8kHz,11kHz和16kHz采样该物理量并将样本数字化。输入设备50处理一组相应于例如32msec的连续的语音信号样本以提供特征的代表矢量(输入观察矢量o)。以这种方式产生一个输入观察矢量序列,它表示输入模式。该矢量的分量通常为8或16位的整数。如果需要的话,取决于使用的识别模式,使用较小的整数例如7位整数甚至可以得到好的结果。

通常,输入设备50可以使用一个麦克风、一个A/D转换器和一个诸如数字信号处理器(DSP)的处理器实现。处理器30也可以用于此目的。作为选项,输入设备50也可以包括一个语音检测器,用于在有效接收语音时有效地采样。对于实时系统,输入设备50可以直接或者可选通过存储器20提供采样和数字化的信号给处理器30进一步处理。作为另外可选的方案,例如对于脱机系统,输入信号可以以数字化的形式存储在存储器20中,或者通过一个通信网络以数字方式供应。对于模式识别,输入模式与可能存储在存储器20中的参考模式比较。为此目的,可以使用一个参考模式数据库。参考模式数据库可以存储在存储器设备20中作为一个集成数据库或者另外的方案为作为分开的数据文件。如前所述,语音识别单元用作识别语音的一个参考模式。每一参考模式包括一个参考单元序列。通常每一参考单元由至少一个相关参考矢量μ表示。该矢量的分量形成本发明的数据元素。参考模式的结构和矢量分量由用于模式识别的算法决定。作为一个例子,该矢量可以使用线性预测编码(LPC)和倒频谱分析从输入样本得到。单元匹配可以基于动态编程或者诸如隐式马尔科夫模型的静态方法。

目前,语音识别通常使用隐式马尔科夫模型。隐式马尔科夫模型基于离散马尔科夫过程,它描述一个在任何时间处于N个不同状态集合之一的系统。系统以规率的时间根据与状态相关的概率改变状态。一个特殊形式的离散马尔科夫过程示于图3。在这一所谓的左右模型中,状态从左向右前进(或保持不变)。该模型广泛用于信号特性随时间变化的语音的模型提取。模型状态可以视为表示声音。在一个用于子词单元的模型中的状态数目可以例如是5或6。在该种情况下,一个状态平均说来相应于一个观察区间。图3的模型允许状态保持不变,它可能与缓慢的说话相关。另外可选的方案为状态可以跨越,它可能与说话快相关(在图3中到平均速率的两倍)。离散马尔科夫过程的输出是在每一时间场合的状态集合,在这些时间场合每一状态相应于一个观察事件。对于语音识别系统,离散马尔科夫过程的概念扩展到一个观察是该状态的一个概率函数的场合。这产生一种双重随机过程。状态改变的底层随机过程是隐式的(隐式马尔科夫模型,HMM)而且只能通过一个产生该观察序列的随机过程观察。对于模式识别,每一参考模式由一个隐式马尔科夫模型模型化,其中该模型的状态相应于一个参考单元。应该注意,已知使用单状态的隐式马尔科夫模型来模型化不具有清楚的时间序列行为的特殊模式,诸如在词语前或之间沉默的模式。为了本发明的目的,这种模式不单独叙述。使用连续观察密度,诸如高斯和拉普拉辛密度,参考矢量相应于该密度的平均矢量。

图2的系统10进一步包括一个定位器,用于定位相应于输入模式的一个参考模式在存储器20中的位置。该定位器可以用处理器30实现。被定位的参考模式称为识别的参考模式。如前面所述,对于隐式马尔科夫模型,它包括计算观察矢量的可能性。对于每一隐式马尔科夫模型和该模型的每一状态s,观察矢量o的可能性由下式给出:>>p>>(>>o>‾>>)>>=>>Σ>>k>=>1>>N>>w>>(>k>)>>.>>p>>(>>o>‾>>|>k>)>>>式中w(k)是第k个观察混合密度(簇)的权重,N是一个状态的簇数。为简单起见,公式中未示出状态s。语音识别系统通常使用于拉普拉斯或高斯可能性密度来模拟一簇的可能性分布。这些密度的可能性可以用Lr模表示。Lr模定义为:>>>d>r>>>(>>x>‾>>,>>y>‾>>)>>=>>>|>|>>x>‾>>->>y>‾>>|>|>>r>>=>>>(>>Σ>>t>=>1>>D>>>>|>>x>i>>->>y>i>>|>>r>>)>>>1>r>>>>式中L1模用于拉普拉辛密度,而L2模用于高斯密度。使用Lr模,概率的一个可能的公式为:>>p>>(>>o>‾>>)>>=>>Σ>>k>=>1>>N>>w>>(>k>)>>.>a>.>>e>>->b>|>|>>o>‾>>->>μ>‾>>>(>k>)>sup>>>|>|>>r>rsup>>>>>式中参考矢量μ(k)是第k个观察混合密度的平均矢量。系数a和b保证,如果观察矢量o遍历所有可能的值的话,概率累计为1。该公式各种形式的扩展已经公知。作为一个例子,给出下面3个高斯密度全协方差矩阵对角线协方差矩阵>>>>(>>K>>s>.>k>>>)>>dd>>=sup>>σ>d>2sup>>:>p>>(>>o>‾>>|>k>)>>=>>1>>>>(>2>π>)>>D>sup>>Π>>k>=>1>>Dsup>sup>>σ>k>2sup> >>.>>e>>->>1>2>>>Σ>>k>=>1>>D>>>>(>o>->>μ>1>>)>>2>>/sup>>σ>k>2sup>>>>>标量方差>>>K>>s>,>k>>>=>I>.sup>>σ>>s>.>k>>2sup>>:>p>>(>>o>‾>>|>k>)>>=>>1>>>>(>2>π>)>>D>>>>(sup>>σ>k>2sup>>)>>D> >>.>>e>>->>1sup>>>2>σ>>t>2sup>>sup>>>|>|>>o>‾>>->>>μ>‾>>k>>|>|>>2>2sup>>>>>容易理解,也可以使用Lr模之外的其它密度测量。

有利的是观察矢量o和平均矢量μ(k)可以例如通过用一个对角矩阵乘这些矢量而被定标。可以通过定标以防止项低于处理器的精度之下,并根据密度的方差正则化矢量。有利的是参考矢量事先被定标,而观察矢量只在实际开始计算可能性之前被定标。

由于密度的性质,概率和可以由其最大值近似,亦即由给出最大概率的密度近似。这意味着定位相应于输入模式的参考模式的关键步骤是寻找最邻近观察矢量的参考矢量(最邻近检索):>>p>>(>>o>‾>>)>>≈>max>{>w>>(>k>)>>.>a>.>>e>>->bsup>>>|>|>>o>‾>>->>μ>‾>>>(>k>)>>|>|>>r>rsup>>>>|>k>=>1>,>.>.>.>,>N>}>>通过取对数,给出:>>log>>(>p>>(>>o>‾>>)>>)>>≈>->min>{>bsup>>>|>|>>o>‾>>->>μ>‾>>>(>k>)>>|>|>>r>rsup>>->log>>(>w>>(>k>)>>)>>|>k>=>1>,>.>.>.>,>N>}>->log>>(>a>)>>>可以忽略常数log(a)。作为单独减去项log(w(k))的另一可选方案为引入新的扩展矢量p和q(k),它们由下式定义:pT=(boT,0),>>>q>‾>>>>(>k>)>>T>>=>>(sup>>b>μ>>->T>sup>>,>>>(>->log>>(>w>>(>k>)>>)>>)>>>1>r>>>)>>>在这一公式中应该注意-log(w(k))>0。使用这些扩展矢量给出:>>>log>>(>p>>(>>o>‾>>)>>)>>≈>->min>{sup>>>|>|>>p>‾>>->>q>‾>>>(>k>)>>|>|>>r>rsup>>|>k>=>1>,>.>.>.>,>N>}>>->log>>(>a>)>>>由于p和q(k)具有多一个分量,它们的维数为D+1,式中D是特征矢量空间的维数。

在该文献的其余部分使用参考矢量x和y,其中x=o,y=μ。容易理解,同样的概念通过读x=p和y=q可以应用于p,q。

本说明集中于在一个顺序计算机上并行执行诸如减、加、计算模的操作。这样的操作除其它用途外通常用于确定矢量的距离,是模式识别中的关键步骤。在模式识别技术中,十分清楚这些关键元素可以怎样与其它技术,例如隐式马尔科夫模型结合用来识别一个从连续物理量导出的时间顺序模式。使用这样的技术,对于每一个观察矢量,在所观察的矢量和该子集的每一参考矢量之间计算一个矢量相似分,例如可能性。对于每一个参考模式,表示这些参考模式的参考矢量的矢量相似分组合,形成一个模式相似分。这对相继的观察矢量重复进行。计算过模式相似分的最优值例如最大可能性的参考模式作为被识别的模式定位。系统的输出设备70用于输出该被识别模式。这可能采取各种形式,例如以文本格式在屏幕上显示被识别模式,在存储器中存储被识别模式或者使用被识别模式作为为下一处理操作的输入,例如作为一个命令。还十分清楚,在模式识别技术中,像取平方法(levelled approach)这样的技术可以怎样用于识别包含比参考模式更大序列的观察矢量的模式。例如,已知怎样使用子词单元来识别整个词或句子。还十分清楚,另外的限制例如发音语汇和语法怎样放在模式识别中。诸如发音语汇的另外的信息可以使用和存储参考模式数据库所用同样的存储器存储。

通常图2的处理器30在程序的控制下以下述方式处理数据元素集合:

-从该数据元素集合中选择一个或多个数据元素。通常选择两个数据元素。

-把选择的数据元素加载到单独的数据寄存器中。

-操作选择的数据寄存器执行减、加和乘运算。

-其结果可以输出(例如存储在存储器中)或者用作下一步骤的操作数。重复上述步骤,直到集合中所有数据元素处理完毕。

根据本发明,代替往单独的数据寄存器中加载一个数据元素,处理器从该集合中选择至少有两个数据元素的一组数据元素并把该组数据元素作为一个组合数据元素加载到数据寄存器中。图4说明一个组合数据元素400。该组合数据元素由一些在该组合数据元素的连续块位置处排列的块形成。图4表示块410、420、430和440。第一块410位于组合数据元素400的最低阶位位置;而第四块440位于组合数据元素400的最高阶位位置。每一块包括连续位位置且相应于该组数据元素单独的一个数据元素。每一块包括两个子块,一个为数据子块,一个为分隔子块。图4表示块430的数据子块434和分隔子块432。每一数据子块包括相应数据元素的数据位。这样的数据子块包括至少d位,其中d为相应数据元素的数据位的数目。作为对该组合数据元素运算的结果,一块中的数据位的数目可能增加,而分隔位的数目相应同样减少。下面将要详述,对于某些操作,使用多于一位的分隔位是有利的或者是必需的。分隔子块排列在该块的高阶位置,而数据子块排列在该块的低阶位置。使用7位数据元素和一个32位处理器,一个可能的安排是使用4块,每一块具有7个数据位和一个分隔位。在64位处理器中,可以使用8个这样的块。在32位处理器上使用8位数据元素,可以使用3块的安排,每一块具有至少一个分隔位。其余位最好分布在各块上,产生有两个分隔位的3个块。剩余的两位(32-3*(8+2))可以空在左边不用,或者分配给某些块的分隔位。在64位处理器上可以使用7个9位块的安排(8个数据位和1个分隔位),剩余1位不用。对于11位的数据元素,在32位处理器上使用具有2到5个分隔位的两块。在64位处理器上,可以使用带有1个分隔位的5块。如果希望更多分隔位,另外的方案为,可以使用具有直到5个分隔位的4块。熟悉本技术领域的人能够确定对他们的应用的最优安排。下面将会详述,分隔位具有特定的位值以保证对组合数据元素执行的操作给出希望的结果。

数据元素可以存储在存储器中,诸如图2中的存储器设备20。有利的是对一组数据元素在该存储器中存储相应的组合数据元素。这意味着该组数据元素可以作为一个组合数据元素简单地通过从存储器读该组合数据元素而加载。优选该组数据元素在存储器中以这样方式安排,使得该数据元素已经形成组合数据元素,不需为该组合数据元素另外存储。作为一个例子,使用7位数据元素,该数据元素可以使用8位存储,从而在数据元素之间产生一个分隔位。优选分隔位已经设定到为特定处理需要的值。显然,该组合数据元素也可以与数据元素分开存储。这可能在需要对单个数据元素快速访问的场合需要(例如对以具有一个分隔位的组合数据元素的形式存储的一个11位数据元素的访问由于在存储器中的对准而太慢)。

作为在存储器中存储组合数据元素的另外的可选方案,该组合数据元素可以从相应的数据元素形成。为此目的,该组合数据元素在一个称为第二数据寄存器的数据寄存器中构造。优选它与后面用于操作该组合数据元素所用的是同一寄存器。

对于该组中的每一个数据元素,执行下述步骤:加载该数据元素到一个第一寄存器,接着执行第一或第二数据寄存器的移位,并通过把存储在第一数据寄存器中的数据元素与在第二数据寄存器中正被构建的组合数据元素结合而终止。这一组合可以使用一个位方式XOR运算执行。结果在第二数据寄存器中形成。可以为该应用或者处理器类型优化选择数据元素被加载的顺序,哪一个寄存器被移位以及移位的数目。作为一个例子,在某种处理器中,十分重要的是移动的位置尽可能少。在这种场合下,为要被加载的第一数据元素使用将要被放置在组合数据元素的高阶块的数据元素可能是有益的。一些现代的处理器能够在一周期中移动数据越过任何位(例如使用一个筒移位器(barrel shifter),使加载数据元素的顺序较少相关。一个可能的加载和移位方案是首先加载要放置在组合数据元素的高阶块位置处的数据元素。第一数据元素也可以直接加载到第二数据寄存器。接着,要放置在下一较低块位置处的数据元素被加载到第一数据寄存器。第二数据寄存器在向高阶的方向上移过一块位置。下一步结合这些数据寄存器,在块位置2给出第一加载的数据元素和在块位置1给出最后加载的数据元素。重复这点,直到该组所有数据元素被加载为止。容易理解,在一定的处理器中,可能不需要首先加载数据元素到第一数据寄存器,而相反地可能直接将该数据元素与第二数据寄存器组合。作为对这一方案另外的可选方案,每一数据元素反过来可以被加载到第一数据寄存器并在第一数据寄存器中移位到需要的块位置,然后与第二数据寄存器结合。

数据元素最好表示正有限整数。如果不是这样的话,那么把该数据元素变换为正有限整数是有利的,例如通过对集合中每一数据元素加上2d-1。作为一个例子,范围从-64到+63的7位数据元素可以通过加上64(26)变换为正的7位整数,结果数值范围为0到+127。

数据元素集合可能包括两个具有相等数据元素数目的数据元素子集。例如,这些子集可以表示两个矢量的分量。第一分量数据元素相应于第一子集的一组数据元素。第二分量数据元素相应于第二子集的一组数据元素。第二组合数据元素从第一组合数据元素中减去,形成一个减后组合数据元素。对于一个合适的“并行”减法,需要减后组合数据元素的每一块在d+1低阶位位置包含一个值,该值等于在第二组合数据元素的相同块位置的数据元素减去在第一组合数据元素中的相同块位置的数据元素。为保证这一点,采用特别的措施。如果不采取措施,只可能在高阶块中形成负结果,因为该处理器把操作数视为一个元素。另外,如果在低阶块位置需要形成一个负结果的话,那么该处理器的正常操作将通过从一个较高阶的块“借”来补偿这点,影响在这一高阶块中的结果。应该注意,通过减去两个数据元素,该数据变化范围加倍,需要在减后组合数据元素中的d+1个数据位来表示该数据元素,而不用d个数据位。如果每块只使用一个分隔位,那么减后组合数据元素不再包括分隔位。否则,这些块少包括一个分隔位。十分清楚,减后组合数据元素以和原来组合数据元素的块同样的位位置安排,但是这些块包含比原来的组合数据元素多一个数据位和少一个分隔位。

所采取的第一措施是保证这样的减法不产生负数据元素。这通过给第一组合数据元素的每一个数据元素加一个偏移实现。有利的是,这通过设定第一组合数据元素的每一块的至少一个分隔位为二进制值“1”实现。作为一个例子,假定第一子集包括4个每一个为d位的数据元素x1到x4,而第二子集包括4个每一个为d位的数据元素y1到y4。例如,进一步假定,在各组合数据元素中的数据元素由每块的两个分隔位分开。在每一块中设定第d+1位为二进制“1”意味着给组成该块的数据元素加2d。设定第d+2位意味着加2d+1。如果希望的话,也可以两个分隔位都设定。通过保证第二组合数据元素的分隔位设定为二进制值“0”,十分清楚,上述减法只能产生正的数据元素以及因此避免从其它块借位。有利的是第一和第二组合数据元素事前已经用具有希望数值的分隔位形成。另外的选择方案为,第一组合数据元素的分隔位可以使用一个字宽的屏蔽M的位方式XOR运算设定为二进制“1”。如果在本例中每一块的第d+1位设定为二进制“1”,那么该屏蔽由下式给出:>>M>=>>Σ>>i>=>1>>4>>>2>>1>.>>(>d>+>1>)>>->1>>>>图5示出为本例使用的这一屏蔽,其中号表示一个位方式XOR运算。通常,第二组合数据元素的分隔位已经具有二进制值“0”。如果不是的话,则分隔位可以使用具有一个字宽的屏蔽的位方式AND运算清除,这里该屏蔽在相应于该组合数据元素中的数据位的每一位置包含一个二进制“1”,而在相应于在该组合数据元素中的分隔位的每一位置包含二进制“0”。

在本例中,第一组合数据元素的每一块中的第d+1位设定为二进制“1”。在执行减法后必须保证减后组合数据元素每一块的第d+1位具有希望的值。作为一个例子,如果x4≥y4,那么x4-y4≥0。在这种场合下,必须去除偏移2d:减操作对每一数据元素包括d+1个数据位,并因为d+1位设定(偏移2d),这不然会无意间指示一个负值。该偏移可以通过把第d+1位从值“1”逆变为值“0”去除。然而,如果x4≤y4,那么x4-y4≤0。在这种场合下,在执行减法时,第d+1位将被“借位”以形成结果,导致减后组合数据元素的第d+1位为“0”。为保证这一结果被解释为负,减后组合数据元素的第4块的第d+1位从“0”值逆变为值“1”。结合本例中的两种可能性,导致减后组合数据元素的每一块的第d+1位需要被逆转变。这可以通过对减后组合数据元素使用和设定分隔位为“1”时使用的同样的屏蔽M执行一个位方式的XOR运算而实现。这在图6中示出,其中D表示在完成所有步骤后的最终组合数据元素,di=xi-yi,i=1到4。

如果作为设定第一组合数据元素每一块的第d+1位的一个另外可选方案为设定第d+2位的话,那么产生下面的情况。这里同样要保证,在执行减法后减后组合数据元素每一块的第d+1位具有希望的值。如果x4≥y4,那么在执行减法时相应的d+2位不会借位。这意味着第d+1位保持为“0”和第d+2位保持为“1”。由于第d+1位具有希望的值,所以不需采取任何行动。可选方案为第d+2位可以例如使用一个具有合适屏蔽的位方式的AND运算复位。如果在执行减法时x4≤y4,那么第d+2位被“借位”以形成结果。这也导致减后组合数据元素的第d+1位为“1”。这里同样,第d+1位自动获得希望值,不需采取另外的动作。

容易理解,如果一块的两个分隔位都设定为“1”,那么需要一种组合方法。如果一块包含多于两个设定为“1”的分隔位,同样的原则适用。

例如为计算一个矢量的模L1或定义为:>>|>|>>x>‾>>->>y>‾>>>>|>|>>1>>=>>Σ>>i>=>1>>D>>|>>x>i>>->>y>i>>|>>的两个矢量的L1距离,则需计算该矢量分量的绝对值。更一般的是,数据元素集合的负数据元素需要被转变成相应的正数据元素。对于下述过程假定每一数据元素包含h个数据位。作为一个例子,如果该过程直接对一个相应于原来数据元素的组合数据元素执行的话,那么h就是d(原来数据元素中的数据位的数目)。如果原来数据元素已被处理,那么h有可能不等于d。如果例如为计算两个矢量的L1距离,两个矢量已经使用前述并行减法相减,那么减后组合数据元素块中的每一数据元素包含d+1个数据位,而原来的矢量分量包含d位。

为了变换,假定负数使用常规的2的补数表示。对于单一的数据元素,2的补数变换可以通过对该数据元素的所有位取反(使用具有“1”位屏蔽的位方式XOR运算)并加值1实现。这里给出为在使用2的补数表示的一次操作中并行变换多于一个数据元素的说明。熟悉本技术领域的人能够根据这里的说明对其它表示执行并行变换。作为变换的第一步骤,判定该组合数据元素的负数据元素(正数据元素不需变换)。通过检查组合数据元素中的每一数据元素的高阶位执行这一判定。为此目的,使用第一屏蔽M1来取出每一数据元素的高阶位。假定该组合数据元素的高阶数据位为位h,那么对该组合数据元素的每一块屏蔽M1包含一个相应的块,其中值2h-1存储在该块(对于屏蔽M1的每一块,除第h位为“1”外,所有位为“0”)。使用屏蔽M1对该组合数据元素执行一个位方式的AND运算。该操作的结果是在该负数据元素的高阶数据位的位置具有“1”位的屏蔽。通过向低阶位方向移位该屏蔽h-1位(这等价于用2h-1除该屏蔽),形成在该负数据元素的低阶数据位的位置具有“1”位的屏蔽M2。用2h-1乘M2,形成屏蔽M3,其中块中相应于负数据元素的所有数据位都设定为“1”。这示于图7。图中组合数据元素D用4块表示。这些块分别包括具有值为d1、d2、d3、d4的数据元素。为简单起见,图中未示出分隔位。如前所述,如果通过减每块带有一个分隔位的两个组合数据元素而形成D的话,那么D的数据块不再具有任何分隔位。为清楚起见,数据元素的高阶位在图7中单独示出。在本例中,d2和d4是正的,而d1和d3是负的。如图所示,对于正数据元素,高阶数据位为“0”,低阶数据位包含实际值。对于负数据元素,高阶数据位为“1”,低阶数据位包含实际值加上值2h-1

图8示出实际的变换。首先组合数据元素D的所有数据位通过用屏蔽M3执行一个位方式的XOR运算取反。接着,通过加上屏蔽M2给每一数据元素加值1。以这种方式并行完成2的补数变换。

现在可以通过从结果组合数据元素中取出各数据元素和合计所取出的数据元素完成L1模的计算。更一般是,通过从包含矢量分量的组合数据元素取出数据元素,提升所取出的数据元素到幂r,合计这些提升的数据元素来计算Lr模。在所有数据元素被处理之后,如果需要的话,则可以把得到的和提升到幂1/r。所述取出例如可以通过用一个屏蔽对组合数据元素执行一次位方式的AND运算执行,这一屏蔽中的h个低阶位被设定为二进制“1”。接着可以把该组合数据元素在低阶方向上移动一块长度的位。

如果分开执行取出和处理每一数据元素需要太多处理的话,那么从该组合数据元素以一次操作取出具有一组连续数据元素的一个数据单元并使用一张表来判定在该数据单元中的数据元素的子模是有利的。作为一个例子,如果一个组合数据元素包含4个数据元素d1..d4,那么取出两个数据单元,第一个包含d4和d3,第二个包含d2和d1,是有利的。如果该组合数据元素是通过减具有7位数据元素的组合数据元素形成的,那么数据元素d1..d4的每一个包含8个数据位,形成16位的数据单元。在这种场合下,可以使用具有为d2i+1和d2i+2(i=0或1)的组合提供216个Lr子模的条目的一张表。作为一个例子,该表可以存储L1子模|d2i+1|+d2i+2|。如果数据元素d1..d4已经变换为正数据元素,那么该表可能存储d2i+1+d2i+2。在后一种情况下,该表可能具有较少的条目,因为这些数据元素的高阶位未用。因此为该数据单元只取出15位,舍去d4和d2的高阶位,这是有利的。对于L2子模,该表可能存储d2i+12+d2i+22,甚至更减少L2模需要的处理。

代替或除了对数据元素执行减或者变换外,也许希望合计这些数据元素。例如,为计算一个矢量的L1模,正则化的矢量分量需要合计。通过把这些数据元素至少安排在两组数据元素中可以实现并行加。假定两组数据元素,为这两个组各在一个选择的数据寄存器中加载一个相应的组合数据元素。把这两个数据寄存器加在一起形成一个组合和。由于这一加,数据范围加倍,每一数据元素需要多一个数据位。因此,为避免从一个数据元素溢出到相邻高阶数据元素,组合数据元素的每一块包括至少一个分隔位,设定为二进制值“0”。如果每块只用一个分隔位,那么两个组合数据元素可以以这种方式相加。相似地,如果每块使用s个分隔位,那么可以把2s个组合数据元素加在一起而不会溢出。如果以这种方式可以把多于两个的组合数据元素加在一起,那么最好在第二数据寄存器中形成一个临时的组合和。所有组合数据元素顺序加载到第一数据寄存器中并加在第二数据寄存器上。当所有组合数据元素以这种方式处理完毕时,就把临时和用作该组合数据元素。十分清楚,该组合和的块在和原来组合数据元素的块同样的位位置安排,但是这些块包含比原来组合数据元素的块较多的数据位和较少的分隔位。

图9示出一个包含分量x1到x16的矢量的例子。在本例中,4块装入一个计算机字里,每一块包含一个分量(数据元素)和两个分隔位。以这种方式,4个组合数据元素X1到X4表示整个矢量。在3次并行加法中,形成具有4个块的一个组合和S。这些加法可以通过首先把X1和X2加起来,然后把X3加在该和上,接着把X4加在该和上而实现。另外可选择的方案为先加X1和X2,再加X3和X4,最后把两次形成的和加在一起形成最后的和。和前面叙述的相似,可以取出最终和S的4块并将其加在一起,导致另外3次相加。以这种方式,需要6次加法而不是常规的15次。另一可选方案为可以使用一张表来确定组合和的块的和。容易理解,数据元素的总数可能不是理想地适合在该组合数据元素下的分布。在本例中,这样的情况例如可能在该矢量包括17或15个分量时出现。容易理解,可能采用各种方法来处理这些情况。一种方法是用一个哑数据元素来补足最后具有“空”块的组合数据元素。优选使用具有值0的数据元素。如果第一处理步骤是对矢量执行减操作,那么显然只要一致使用某一值,则可以使用任何哑元值。作为对哑元值的另外的可选方案,最后的数据元素可以通过忽略不用的块而单独处理。

特别在较多数据元素需要加在一起的情况,通常需要多个分隔位以避免溢出。这可能意味着只有较少的数据位装入一个组合数据元素中,减小并行加法的效率。在这种情况下,组合数据元素的每块只以少数分隔位开始是有益的。如果在加法过程中某一时刻所有分隔位被完全使用(从而下一加法可能会产生溢出),那么把该组合数据元素分成至少两个组合数据元素以便产生更多的分隔位。图10示出分开一个具有8块x1到x8的组合数据元素X为组合数据元素X1和X2的例子。X1和X2的块为X的块的两倍大。最初,X1和X2中的额外的位用作分隔位,而在执行加的期间可能用作数据位。可以如下执行分开操作。首先复制X,形成X2′,作为X2的基础。接着,在交错块位置从X中去除块,形成X1。在本例中,块x8、x6、x4和x2被去除。接着,从X2′中去除其它块(x7、x5、x3和x1)。优选其后接着在向低阶方向移动X2′一个块位置形成X2。容易理解,如果在X中有足够的尚未分配给一块的高阶位可用的话,那么这些位可以用作为在包含x8的X2中的块的分隔位。在这种情况下,也可能在高阶方向上移动X1一个块位置。

如前所述,总和可以从一个组合和通过合计分量或使用一张表而计算。另一可选方案为,使用下面图11所示的方法,以具有8个分量x1..x8的一个组合数据元素开始。在该方法中,重复形成新的使用较少数据元素的组合数据元素,直到最终最后的组合数据元素只包含一个被使用并包括最后和的数据元素。该过程从复制组合数据元素X1到第二组合数据元素X2开始。接着,移动X1或X2最好是块数目的一半。两个移动方向都是可能的,只要在过程中使用同一方向即可。从例子中清楚看到,在低阶方向上移动导致在低阶位置上形成总和,这是有利的。在图11的例子中,X2在低阶方向上移动4个块位置。接着,把X1和X2加在一起,形成X3。在X3中只有4个低阶块位置相关。以X3开始重复该过程,复制和移位(现在移动两个块位置)产生X4。把X3和x4加在一起形成X5。在X5中只有两个低阶块位置相关。以X5开始重复该过程,复制和移位(现在移动一个块位置)产生X6。把X5和X6加在一起形成X7。X7的低阶块位置包括希望的和,它可以使用一个位方式AND运算取出。容易理解,如果在开始的组合数据元素中的数据元素的数目是2的幂的话,那么该过程将最优执行。如果不是这种情形,可以采取各种替代方法。

图12表示开始组合数据元素X1包含7个数据元素的情形。确定基本为7的一半的一个数M。3和4都是适合的选择。在这个例子中,选择3。复制并移动3个块位置,形成X2。如果把X1和X2加在一起,那么数据元素x4将出现两次。通过从X1或者从X2中去除一个x4数据元素就可以避免这点。优选从X1中连同x7、x6和x5一起去除x4,结果从和中去除了所有不用的数据元素。只要有效数据元素的数目是奇数的话就可以重复这种方法。

图13示出一个优选方法,其中在一个步骤中有效数据元素的数目减少到2的一个幂。为此目的,确定小于在开始组合数据元素中的数据元素数目的2的最大的幂。在图13中,X1包含10个数据元素。比10小的2的最大的幂是8。为形成X2,将X1复制并在低阶方向上移动8个块位置。把X1和X2加在一起形成X3。X3的8个低阶块是相关的。

如前所述,两个矢量x和y的L2距离可以通过减这些矢量并取出产生的减后矢量的分量或使用表来计算。有利的是使用下面的并行方法计算L2距离。考虑:

式中>sup>>>|>|>>x>‾>>->>y>‾>>|>|>>2>2sup>>=sup>>>|>|>>x>‾>>|>|>>2>2sup>>->2>.>>Σ>>i>=>1>>D>>>x>i>>>y>i>>+sup>>>|>|>>y>‾>>|>|>>2>2sup>>,>>

    x=(x1,x2,…,xD)T,andy=(y1,y2,…,yD)T和进一步考虑,特别为模式识别,y是一个预先确定的参考矢量,其L2模可以事先计算,x是一个观察矢量,其L2模可以为每一个新的观察计算一次,这意味着对观察矢量和参考矢量的每一个组合只需要计算具有和的项。该和可以使用下面的方法并行计算。第一组合数据元素C1相应于一个矢量的数据元素。在本例中,C1相应于x的数据元素。C1的相继块相应于x的相继数据元素。在图14所示例子中,C1包括x的头4个数据元素,为x1、x2、x3和x4。第二组合数据元素C2相应于另一矢量,在本例中为y的数据元素。C2的相继块相应于y的相继块的反序。在图14所示例子中,C2包括y反序的头4个数据元素,为y4、y3、y2和y1。注意在图中一个组合数据元素的第一块表示在右边,指示低阶位置。在本例中假定C1的低阶位包括x1,C2的低阶位包括y4。很容易明白,两个阶次都逆转的话会得到相似的结果。组合数据元素C1和C2的每一块包括至少d个分隔位,其中d为该矢量的数据元素的位数。在本例中,每一组合数据元素使用4块,使其有利地每块使用d+2个分隔位,后面将会详述。所有分隔位都设定为“0”。图14表示组合数据元素C3,它是由C1和C2相乘而得。在本例中,C3的低阶块包括值x1乘以y4,其为C1和C2的低阶块相乘的结果。通过使用至少d个分隔位,不会产生高阶位的影响。C3的第二阶块包括x2乘以y4加上x1乘以y3的交叉积。相似地,C3的其它块包括交叉积。由于数据元素以反序排列,第四块包括希望的交叉积x1·y1+x2·y2+x3y3+x4y4。容易理解,由于一些交叉积包含多于一项,所以可能需要额外的分隔位,以避免块之间的影响。在本例中,第二块需要的最小分隔位数目为d+1,第三和第四块需要d+2个分隔位。容易理解,一个组合数据元素的随后的块原则上可能包括为避免影响每块最小需要的不同数目的位。为获得希望的交叉积,C1和C2的相应块必须具有相等的位数。C1和C2的所有块等大是有利的。在本例中,合适的大小是2d+2位,d个数据位加上d+2个分隔位。从本例也清楚看到,乘后组合数据元素C3比C1和C2包括更多的块。一般说来,如果C1和C2包括k个数据块,那么C3包括2k-1个数据块。因为通常C1、C2和C3具有同样大小,因此这意味着C1和C2的k-1个高阶块左边未用,设定为二进制值“0”。从本例清楚看出,C3的第k块包括希望的交叉积。该交叉积可以从C3取出第k块得到。这一取出可以通过把C3在低阶方向上移动k-1块并使用一个在C3的低阶块的位置具有“1”的位的屏蔽执行位方式的AND运算实现。

在另外一个实施例中,图2中的处理器30包括一个具有浮点数据寄存器38的浮点处理单元36。使用浮点处理单元36执行乘法是有利的,因为在现代的处理器中,浮点乘法通常比整数乘法用较少周期执行。在具有较小整数字长的处理器(例如32位或更少位)中,它具有另外的优点,浮点数通常较大(双精度浮点数通常具有52位的尾数)。为此目的,两个组合数据元素C1和C2加载到单独的浮点数据寄存器的尾数(部分)中。然后通过指示处理器对加载到两个寄存器中的数据执行一次浮点乘法完成这一乘法。

在使用处理器30的浮点单元36时,有利的是使用浮点数据寄存器38使取出C3的第k块被简化。这可以通过设定包含C1和C2的一个浮点数据寄存器的指数为2的一个合适的幂实现。因为在执行乘法操作时尾数无溢出,所以把同样的指数值传给C3。通过变换C3为一个整数,执行一次隐式移位。有利的是设定指数为2-1,其中i是C3的第k-1低阶块包含的位数。以这种方式,向整数的转换导致第k块向C3的低阶位置移动(以整数格式)。然后通过使用在C3的低阶块的位置具有“1”的位的屏蔽执行位方式的AND运算完成这一取出。容易理解,在一定的系统中,通过把C3作为一个浮点数存储在一个存储器中又作为整数读出,这样隐式变换为一个整数可能更快。

总结:该方法和系统用于在常规的顺序处理器30中并行处理一个数据元素集合,诸如在模式识别中使用的矢量的分量。一组数据元素加载到处理器30中的一个数据寄存器中作为一个组合数据元素。使用常规的处理器指令,诸如加、减或乘操作数据寄存器。组合数据元素包括至少两块的安排,每一块在低阶位位置包括一个数据元素,在高阶位位置包括至少一个分隔位。分隔位分配预定的位值,保证在处理器操作期间形成希望的并行结果。本发明可以用于常规的顺序处理器,通常的特征为单指令、单数据(SISD)处理器。为获得更高水平的性能,SISD处理器可以使用各种形式例如为大规模处理器所使用的“并行”处理。这样实现的处理器在指令级仍然是一个顺序处理器。本发明用于SISD处理器导致多多少少模拟一个单指令、多数据(SIMD)处理器。容易理解,本发明也可以通过根据本发明构造SIMD处理器的一个操作数的每一数据元素而应用于SIMD处理器。这实现了在SIMD处理器上的第二级并行操作。本发明也可以应用于第三类处理器,称为多指令、多数据(MIMD)处理器。例如VLIW(非常大指令字)处理器。对于MIMD处理器,通常多条指令的每一条涉及一个单数据流。容易理解,本发明也可以应用于这样的数据流。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号