数据处理硬件的制作方法

文档序号:6454935阅读:208来源:国知局

专利名称::数据处理硬件的制作方法
技术领域
:一般地,本发明涉及数据处理硬件,更具体地,涉及硬件加速器和用于矩阵因式分解、尤其是非负矩阵因式分解(NMF)的相关方法。本发明的实施例对于驱动诸如OLED(有机发光二极管)显示器的电致发光显示器尤其有用。
背景技术
:先前描述了如何在驱动OLED显示器中有利地采用针对非负矩阵分解(NMF)的技术(参见一并引入作为参考的国际申请PCT/GB2005/050219)。现描述实现这些技术、特别是解决执行足够快产生实时显示所需的非常大量的计算的问题的硬件实施例。将参考显示驱动描述优选实施例,但技术人员将理解,可以采用所描述的硬件和方法用于实质上任何类型的数据的快速因式分解,所述数据包括但不限于图像数据(例如用于面部识别)、计算机网络数据(例如用于安全监视的用户活动数据)、存储在数据库中的多变数据(例如,用于数据挖掘)、传感器数据(例如用于确定组成整体组合谱的一组组件谱)、生物序列数据和/或微阵列数据(例如用于序列分析)、对象描述符数据(例如用于机器学习/识别技术)、以及搜索结果数据(用于分析和/或模式识别)。这些和其它应用的其它细节可以在申请人的先前国际专利申请(同上)中找到。可以在US5692210;US4739474;US2002/0186311;US5690211:EP0293700和US2004/0268080中找到
背景技术
。为了便于理解本发明的实施例,首先回顾多线寻址(MLA)技术,该技术的优选特定情况包括整体矩阵寻址(TMA)技术。优选地,采用这些技术用于无源矩阵OLED显示器,即针对每个像素(或彩色子像素)不包括存储器元件并因此必须不断刷新的显示器。在该说明书中,OLED显示器包括使用聚合物、所谓的小分子(例如US4,539,507)、树状高分子、以及有机金属材料制成的显示器;该显示器可以是单色的或彩色的。在传统的无源矩阵显示器中,逐条线地驱动显示器,因而针对每条线路需要高位驱动器(因为仅被照亮帧时段的一部分)。MLA技术一次驱动多条线,以及在TMA技术中同时驱动所有的线,并根据当在观察者的眼中整合时给出所期望的图像的印象的多个连续显示的子帧构建图像。问题在于确定针对子帧的行和列驱动信号组,使得子帧组逼近所期望的图像。先前在国际专利申请号GB2005/050167-9中描述了对该问题的解决方案(所有三个申请一并引入作为参考)。优选技术采用描述所期望图像的矩阵的非负矩阵分解。因式矩阵(由于OLED显示器元件提供正(或零)发光,所以所述因式矩阵的元素为正)实质上定义了针对子帧的行和列驱动信号。以下描述一个优选的NMF技术,尽管也可以采用其它技术。以下还将描述适合实现NMF技术和其它NMF过程的硬件加速器的细节。为了便于理解本发明,参考图la,将首先描述包括显示驱动数据处理器150的整个OLED显示系统100,可以使用本发明的实施例实现所述显示驱动数据处理器150以执行TMA。在图la中,无源矩阵OLED显示器120具有行驱动器电路112驱动的行电极124,以及列驱动110驱动的列电极128。这些行和列驱动器的细节在图lb中示出。列驱动器110具有列数据输入109,用于为列电极的一个或更多设置电流驱动;类似地,行驱动器112具有行数据输入111,用于为两个或更多行设置电流驱动比率。优选地,输入109和111是易于接口的数字输入;优选地,列数据输入109针对显示器120的所有U列设置电流驱动。在可以是串行或并行的数据和控制总线102上提供用于显示的数据。总线102向帧存储器103提供输入,该存储器存储针对显示器的每个像素的亮度数据,或者在彩色显示器中存储针对每个子像素的亮度信息(该信息可以编码为单独的RGB彩色信号或亮度和色度信号或其它)。存储在帧存储器103中的数据确定针对显示器的每个像素(或子像素)的所期望的视亮度,并可以通过显示器驱动数据处理器150经由第二读取总线105读取该信息。显示器驱动数据处理器150优选地执行输入数据预处理、NMF、以及后处理。图lb示出了适合驱动具有因式分解(factorisation)图像矩阵的显示器的行和列驱动器。列驱动器110包括一起汇集成组、并具有用于将电流设置给每个列电极的可变参考电流Iref的一组可调整实质恒定的电流源。该参考电流通过针对从NMF因式矩阵的行导出的每个列的不同值进行脉冲宽度调制。行驱动器112包括可编程的电流镜像,优选地针对显示器的每行(或针对同时被驱动的行块的每行)有一个输出。从NMF因式矩阵的列导出行驱动信号,并且行驱动器112针对每行分布总列电流,从而针对行的电流按照比率控制输入(R)设置的比率。可以在申请人的PCT申请GB2005/010168中(一并引入作为参考)找到适合驱动器的其它细节。OLED具有二次伏安相关性,限制行和列驱动变量的独立控制。由于PWM允许列和行驱动变量互相去耦,所以PWM是有用的。此外,利用上述驱动设置,因为电流在行之间共享,所以如果一个行中的电流增加,则残余行中的电流减少。优选地,因而縮放参考电流和子帧时间以进行补偿。例如,可以为了使每个子帧中的峰值像素亮度相等(同时降低最坏情况/峰值亮度老化),调整子帧时间。在实践中,这受最短可选择子帧时间以及最大列驱动电流的限制,但是由于调整是二阶优化,所以这不必成为一个问题。以下给出优选的NMF计算的一个示例通过具有元素Vq的矩阵V给出输入图像,R表示电流行矩阵,C表示电流列矩阵,Q表示V和R.C之间的残余误差,p表示子帧的数量,average表示平均值,以及表示可选的伽马修正函数。变量初始化为如下av=■average(gamma(V、v)Qxy=gamma(Vxy)-flv然后针对p=7至总子帧数,NMF系统的实施例执行下列计算赠Q=Q+RC^对每个x浙少=Q-RpyC印伊^每个x,少变量防止被0除,以及R和C的值向该值逼近。可以通过/m'to/iCX权重X列数确定6/氾的值,其中列数是x,以及例如,权重在64至128之间。一般来说,上述计算可以以最小二乘法拟合为特征。由于通常将行R和列C矩阵初始化,所以矩阵Q起初以目标矩阵的形式开始,从而它们所有的元素都相同,并且等于平均值/mW"汉C。然而,从那时起,矩阵Q表示图像和组合子帧的结果之间的余量差一理想地Q=0。这样,一般来说,该过程通过添加针对子帧p的基值(contribution)开始,然后针对每行找出最佳列值,之后针对每列找出最佳行值。然后从Q中减去更新的行和列值,该过程继续至下一个子帧。典型地,执行多次迭代(例如1到100次),从而针对子帧组的R和C向最佳拟合收敛。所采用的子帧数p是经验选择,但可以是例如1到1000之间。在该说明书中,技术人员将理解对行和列的参考是可互换的,以及例如在以上方程系统中,处理确定更新的R^和C^值的顺序可以交换。在上述方程集中,优选地采用所有整数运算,以及优选地R和C值包括8位值以及Q包括带符号的16位值。然后,尽管R和C的值的确定可以涉及舍入,但是由于Q利用所舍入的值进行更新(以及R和C的值的积不能比Q内所容纳的最大值大),所以在Q中不存在舍入误差。上述过程可以直接应用到彩色显示器的像素中(以下将详细描述)。可选地,因为眼睛对不完全的黑色不成比例的敏感,可以采用权重W矩阵以将低亮度值中的误差加权为较高。因为眼睛对绿色误差不成比例的敏感,可以应用类似加权以增加在绿色通路中误差的权重。ii基于上述NMF过程的针对显示驱动器系统的实际实施方式的典型参数组可以具有每秒25帧的所期望的帧速率,每帧包括具有例如160子帧的过程的20次迭代。使用20次迭代和160个子帧,以150MHz运行的上述过程的连续实施方式会产生0.25fys的帧率。因此在不需要非常快速、昂贵以及耗功率的数字信号处理器的情况下,存在对于便于实现典型视频帧率的改进技术的需要。
发明内容根据本发明,提供一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵(R;C),所述硬件加速器包括用于接收表示所述目标矩阵的输入数据矩阵的输入;用于存储针对第一因式矩阵(R)的行和列数据的第一因式矩阵存储器,所述第一因式矩阵存储器具有多个第一数据总线,所述多个第一数据总线每个都与所述第一因式矩阵存储器的相应块相关联,用于访问存储在块中的第一因式矩阵列数据;用于存储针对第二因式矩阵(C)的行和列数据的第二因式矩阵存储器,所述第二因式矩阵存储器具有多个第二数据总线,所述多个第二数据总线每个都与所述第二因式矩阵存储器的相应块相关联,用于访问存储在块中的第二因式矩阵行数据;处理器块矩阵,每个处理器块具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出;处理器存储块,用于存储表示所述对因式矩阵的乘积和所述目标矩阵的差的矩阵(Q)的一部分;以及包括至少一个乘加单元的数据处理器,所述数据处理器具有与所述处理器存储块耦合的第一输入,以及与所述第一和第二处理器块数据总线之一或两者耦合的第二输入,并具有与所述结果数据输出耦合的输出;以及控制电路,用于控制将数据从所述输入写入所述处理器块矩阵的所述处理器存储块中,用于控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及用于控制从所述结果数据输出得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解。上述硬件加速器的实施例可以用来实现一系列矩阵因式分解技术,尤其适合非负矩阵因式分解(NMF)。可以使用引言中所述的特定技术实现非负矩阵因式分解,或可以使用硬件实现其它NMF方式。然后,硬件加速器的应用不限于NMF,并且具体包括大范围的迭代(iterative)技术,其中以循环或迭代的方式修改第一和第二因式矩阵中的数据。然后可以采用在这些应用中的处理器块以执行重复、迭代或循环计算。为了实现不包括非负约束的方法,可以例如通过在数据存储和/或处理中提供符号位而生成带符号的数据。一般而言,在分布处理的实施例以及残余矩阵Q的存储中,可以通过每个处理器块并行执行多个部分计算。这种设置方便以诸如FPGA(现场可编程门阵列)的硬件实现,并且因为可以在图像区域上分布处理器块、更具体地,处理器块存储部分Q,所以实际上处理速度可以与图像大小或分辨率无关。此外,在实施例中,上述数据结构实现NMF方程的逐对求值(evaluation),首先实质上同时更新Q以确定针对子帧/的目标,并在同时更新R和C之一,然后更新C和R中的另一个,并实质上同时从Q中减去更新的子帧(虽然具有等待时间,但需要在开始前计算第一C(或R)值以从Q减去子帧)。因此,在优选的实施例中,数据处理器包括一对数字信号处理器(乘加单元),一个用于同时求两个方程中每个的值,在以上示例中,一个方程用于更新Q,以及一个方程用于更新R(或C)。(然而,在其它实施例中,虽然降低了并行性,但可以将单个DSP单元复用以取得一些优势)。优选地,考虑到前述等待时间,将存储在处理器模块中的Q部分双倍缓冲,从而可以使用Q的"旧"版本更新例如C,同时可以使用所更新的,例如C值来更新Q。如前所提及,残余矩阵Q有效地作为目标矩阵开始,但之后被修改,由于R和C逐渐地更好逼近所期望的目标以减少残余。在实施例中,不需要残余矩阵Q本身一它只是用作计算第一和第二因式矩阵R和C,因而不需要提供用于读取存储在处理器块中的Q部分,除了在块中内部地(不需要硬件加速器提供对Q的外部读访问)。例如通过应用引言中所示的伽马修正,可以预处理输入数据矩阵以产生目标矩阵。同样,可以通过硬件加速器或外部地后处理第一和第二因式矩阵中的数据。在实施例中,可以通过对第一和第二因式矩阵存储器的读访问提供自硬件加速器的读出。也可以提供至存储器的写访问,例如用于将第一和第二因式矩13阵初始化,或通过硬件加速器内部地执行初始化。如前所提及,使用整数运算,在处理器块中优选地执行针对R或C值的计算,结果可以将针对元素R或C的值上舍入或下舍入,否则舍位或近似。因而,优选地,处理器块使用四舍五入的值更新元素Q。因而,优选地,处理器存储块使用比数据存储器的输入多两倍的数据宽度(位长度)的变量。在一些优选的实施例中,将硬件加速器控制电路分布在针对硬件加速器的全局控制电路、用于控制(尤其是寻址)第一和第二因式矩阵存储器的存储控制电路和针对处理器块本地控制的处理器块控制电路间。然而,如下所描述的,在一些优选的实施例中,只有一个处理器块包括这样的控制电路,例如,用于对存储一部分残余矩阵Q的存储块进行寻址;然后将该处理器块称为主处理器块,并且可以将其它处理器块的一个或多个(优选所有)从属于该主处理器块,采用从主处理器块导出的定时和控制信号。在一些优选的实施例中,存储控制电路控制处理器块处理的一组元素的因式矩阵的一个或另一个或两个中的每个元素的顺序选择。换言之,一行处理器块每个可以处理行因式矩阵的列值块(针对处理器块的连续行标记一/每列的部分)。然后,可以选择一行处理器块处理的列值组的每个,并提供给处理器块用于处理。多列处理器块可以相应地处理列因式矩阵中的数据行。因而可以配置存储控制电路,以将第一和第二因式矩阵的元素顺次提供给处理块,从而根据如上所描述的NMF计算方程进行处理。存储控制电路也可以控制至因式矩阵存储器的外部读和/写访问。在硬件加速器的优选实施例中,使用第三处理器块数据总线使处理器块形成菊花链,用于将残余矩阵Q写入分布的存储器阵列(但在变体中也可以完成,例如,使用行和列矩阵存储数据总线)。优选地,通过提供可以方便地看做北、南、东和西连接的一对结果数据输入和一对结果数据输出,也可将使处理器块形成菊花链,以允许从矩阵内逐处理器块地传输结果,直至处理器块矩阵的行边缘和/或列边缘(在控制电路的控制之下)。在数据被传输所至的边缘对面的尾输入可以与零连接。优选地,通过针对行和列结果的数学块接收结果数据。这些数学块优选地将从块的相关行或列中的每个处理器块接收的部分结果数据累加。此外,由于在实施例中需要除法来更新行和列因式矩阵值(参看如上方程),所以可以配置数学块14以执行该除法。然而,由于在给定子帧中,行和列矩阵更新方程的分母总是相同,所以该除法只需要执行一次。因而,可以提供多个行和列块,例如一个针对每个行和列处理器块,并且在这样配置中,将数学块中的一个指定为主块,其它的指定为从数学块。然后,主块可以包括用于计算相关分母的倒数的除法器,并且从数学块需要只包括用于与从主(行或列)数学块接收到的该倒数值相乘的乘数。优选地,使用双端口存储器实现行和列矩阵存储器,以允许处理器块和数学块的同时读和写访问。在一些优选地实施例中,处理器块包括第一和第二乘加单元。以这种方式,可以采用这些乘加单元中的一个计算乘积R.C,以及采用另一个单元计算乘积Q.C,这两个操作并行发生。由于在将R.C添加到Q之后确定乘积Q.C,所以这些乘加单元之一的输出优选地与第二单元的输入耦合。可以使用相同的结构来计算乘积Q.R,然后通过再并行减去乘积R.C,更新残余矩阵Q(—旦考虑计算第一元素C的等待时间)。为了执行这些计算,优选地,可以例如使用复用器在R和C之间切换乘加单元之一的输入。此外,在一些优选实施方式中,也可以采用乘加单元之一来确定乘积C.C和R.R。优选地,为了实现该目的,可以将乘加单元之一的两个输入选择性地与C或R耦合,例如通过一对复用器。此外,由于NMF过程的优选实施例包括在循环的开始和结束修改Q,优选地,乘加单元之一具有加法单元,其输入与Q块存储器的输出耦合,该乘加单元的输出提供了Q块存储器的写输入(该存储器是双端口)。处理器块内的状态机可以控制复用器对R或C的计算和选择的先后顺序;这也可以用于对Q块存储器进行寻址。然后,由于所有的处理器块在实质上相同的时间执行实质上相同的计算(虽然使用残余矩阵Q的不同部分,以及相应的行和列因式矩阵R和C的不同部分),只有处理器块之一,"主"处理器块需要包括这种控制电路。然后其它处理器块可以看做"从"处理器块,从主处理器块获取它们的定时和控制信号。在一些优选的实施例中,状态机控制复用器和乘加单元,以在计算其它值(具体是Q.C;Q.R)之前首先计算分母方程值(C.C;R.R)。返回硬件加速器的整体结构,如上所述,将行矩阵中的数据分为一组块,例如160行的8个块(用于160线显示器;巧合地在该示例中与子帧线数相同)。同样地,将列矩阵分为多个块,例如10块或360列显示器。因而,每个处理器块处理一组行和列数据(在如前所述的示例中20行和36列的数据)。针对每个行块提供行数据总线,并且这提供针对该行块的数据至处理该行数据的处理器块的组(每个列块一个)。同样,每个列块具有相关联的列数据总线,提供针对列块的数据至处理针对块的列数据的相应的处理器块(每个行块一个)。在以后描述的实施例中,针对行块的行数据总线和针对列块的列数据总线在任一次承载单个行(或列)值,例如8位值。在这种情况下,处理器块在任一时间或处理时接收单个行值和单个列值。处理器块状态机与行和列块存储控制电路耦合,以在处理前一次一个地控制提供来自相应行矩阵和列矩阵块的行和列值,并在处理完整块之后,将结果数据(优选地锁存在处理器块中)沿行或列处理器块的相关链传回至数学块,用于行和列因式矩阵的累加和更新。此外,如前所述,因为在优选实施例中处理器块具有4个结果数据连接,两个输入和两个输出,形成矩形矩阵,所以可以将针对行和列的结果数据同时,在以后描述的示例中,沿北向(针对列)以及西向(针对行)传送通过处理器块的矩阵。然而,技术人员会理解在其它实施例中,可以采用更宽的行和/或列块数据总线,例如提供向处理器块同时提供两个或多个行和/或列矩阵值。这增加了数据处理速率,但是优选地,为了利用这些更宽的数据总线,提供更多的乘加单元。例如,为了同时处理两对行和列数据值,优选地提供两对乘加单元。在一般情况下,针对处理器块同时处理的每对行和列数据元素,优选地提供至少一对乘加单元。潜在地,处理器块可以同时处理相应行和列数据块的所有行和列数据项,用于以增加的硅区域来增加速度。本发明还提供一种用于电光显示器、更具体地,诸如OLED显示器的放射性显示器的驱动器,包括如上所描述的NMF硬件加速器。采用这种驱动器的放射性显示器的示例包括无源矩阵OLED显示器、无机LED显示器、等离子显示器、真空荧光显示器以及诸如iFire⑥显示器的厚和薄膜电致发光显示器。在一些优选的实施例中,明确地配置硬件加速器用于在如上所述的现优选的NMF过程中执行计算。因而,在相关方面,本发明提供硬件加速非负矩阵因式分解(NMF)计算的方法,所述计算包括迭代地确定16Qxy=+RpyCxp,针只寸每个x禾口yR针对每个y(1)(2)针对每个X(3)Qxy=—R时C叩,针对每个X和y(4)每次迭代针对每个值p对方程(1)至(4)进行求值,以及W,包括加权因式,所述方法包括..针对每个p:将Q存储在分布在对应多个处理器块的多个存储块中;对方程(2)的分母进行求值;实质上同时跨所述多个处理器块,对方程(2)的分子和方程(1)的基值进行求值,以确定Qm和Rpy;对方程(3)的分母进行求值;以及实质上同时跨所述多个处理器块,对方程(3)的分子和方程(4)的基值进行求值,以确定Cxp和Qxy。在实施例中,变量&W可以是零,在这种情况下,可以省略提供该变量。根据实施方式,加权因式W,可以是标量、矢量或矩阵,或可以省略Wxyp(在这种情况下给定值l)。一般来说,并行对分布于多个处理器块的方程(1)和(2)进行求值,之后组合来自这些处理器块的部分结果。同样,以类似的方式,优选地实际上并行地对方程(3)和方程(4)进行求值。在其它方面,本发明提供用于硬件加速非负矩阵因式分解(NMF)计算的系统,所述计算包括迭代地确定'py、,针对每个x和y针对每个y(1)(2)c,,针对't水x(3)17<formula>formulaseeoriginaldocumentpage18</formula>(4)每次迭代针对每个值p对方程(1)至(4)进行求值,以及W,包括加权因式,所述系统包括将Q存储在分布在相应多个处理器块的多个存储块中的装置;对方程(2)的分母进行求值的装置;对方程(2)的分子和方程(1)的基值进行求值的装置;对方程(3)的分母进行求值的装置;以及实质上同时跨所述多个处理器块、对方程(3)的分子和方程(4)的基值进行求值、以确定Cxp和Qxy的装置。此外,变量6/w可以是零,并且加权因式W,可以是标量、矢量、矩阵或1(unity)。在另一方面,本发明提供一种非负矩阵因式分解(NMF)硬件加速器,用于将输入矩阵(Q)因式分解为一对第一和第二因式矩阵(R;C),所述硬件加速器包括第一存储器,用于存储所述第一因式矩阵(R)的元素;第二存储器,用于存储所述第二因式矩阵(C)的元素;处理器网格,与所述第二和第二存储器耦合以并行执行多个(NMF)操作;以及控制器,用于控制所述输入矩阵(Q)写入处理器的所述网格,并控制所述处理器将所述第一和第二因式矩阵的元素写入所述相应第一和第二存储器。可在例如FPGA(现场可编程门阵列)上或以ASIC(特定用途组成电路)或定制硅(customsilicon)实现上述硬件。因而本发明还提供一种承载了描述这种硬件的处理器控制代码的载体(例如诸如CD-ROM或光或电子信号载体的盘)。典型地,使用诸如RTL(寄存器传输等级代码)的代码,或以更高的等级,例如使用诸如SystemC的语言来描述这种类型的硬件。在一些实施例中,在单个集成电路上实现硬件加速器。第一和第二因式矩阵可以在芯片上或不在芯片上。因而,在另一方面,本发明提供了用于矩阵因式分解的集成电路,所述IC包括输入端,用于接收表示目标矩阵的、用于因式分解为第一和第二因式矩阵(R;C)的输入数据矩阵;多个第一数据总线,每个用于访问在第一因式矩阵存储器(R)中所存储的数据;多个第二数据总线,每个用于访问在第二因式矩阵存储器(C)中所存储的数据;以及处理器块的矩阵,每个处理器块具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出;处理器存储块,用于存储表示所述因式矩阵对的乘积和所述目标矩阵之间的差的矩阵(Q)的一部分;以及数据处理器,包括至少一个乘加单元,所述数据处理器具有与所述处理器存储块耦合的第一输入端、以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端。在实施例中,每个IC提供处理器块的阵列,并且以网格的形式将IC堆叠或连接,以提供可縮放(scalable)的硬件实施方式。也可以在芯片上提供根据本发明先前提及的方面的任何或所有特征,例如,如上所描述的处理器块的和/或它们的互联的特征。IC具体可以包括使处理器块之一能够用作其它块的主块以提供定时和控制信号的电路。然而,优选地,该特征能够在外部被禁止,例如通过信号。这是因为在处理器的网格中,只有一个需要作为主块的功能--因而优选地也使定时和控制信号在至IC的外部连接上可用,以使一个IC能够控制一个或多个其它块。在相关方面,本发明提供一种用于非负矩阵因式分解NMF的集成电路IC,用于将输入矩阵(Q)因式分解为一对第一和第二因式矩阵(R;C),所述IC包括与外部总线耦合的处理器网格,用于分别访问存储有所述第一和第二因式矩阵(R;C)的元素的第一和第二存储器。优选地,每个存储器包括本地存储器,并且包括多个从处理器和一个主处理器,所述主处理器配置用于在所述从处理器中控制本地存储器的地址和从处理器的数据处理操作之一或二者。在实施例中,网格中的每个处理器配置用于处理所述输入矩阵的相应部分,从而可以处理所述输入矩阵的区域。然后,优选地,IC具有允许多个集成电路连接以处理多个所述输入矩阵区域的外部总线。例如,网格可以是矩形网格,并且集成电路可以具有北、南、东和西数据连接。如果因式矩阵存储器不在芯片上,则优选地提供两组(快速)芯片上存储器,每个针对第一和第二(行和列)因式矩阵存储器的每个。每组优选地包括输入缓冲器(用于读取数据)、输出缓冲器(用于写入数据),以及高速缓存器(用于处理数据)。19参照附图,仅通过示例,还将描述本发明的这些和其它方面。图la和lb分别示出了根据本发明的实施例包括NMF硬件加速器的OLED显示器和驱动器,以及针对显示器的示例行和列驱动器的细节。图2示出了包括NMF硬件的OLED显示器驱动系统的功能性框图。图3示出了图2针对系统的示例行驱动器硬件的细节。图4a至4c分别示出了根据本发明实施例的硬件NMF结构、初始目标/残余矩阵Q、以及相关联的行(R)和列(C)因式矩阵,以及图4a的针对并行硬件NMF结构的行和列存储器块至存储器块分配的细节的示意性示例。图5示出了实现图4a和4c硬件NMF结构的fUll_j)r0模块的框图。图6示出了加载R和C存储器的过程。图7示出了加载分布的Q存储器块的过程。图8示出了存储器控制模块的框图。图9示出了行/列数学模块的框图。图IO示出了处理器块模块的框图。图11a至lld示出了在处理器块的配置中4个连续阶段;以及图12a至12f示出了说明系统优选实施例的操作的处理器块定时图。具体实施例方式现参照图2,这示出了包括NMF硬件以执行TMA(整体矩阵寻址)的OLED显示驱动器系统200。如所示,系统具有视频供给输入,并提供行和列驱动数据输出204、206用于驱动TMA驱动显示器(未示出)。以后将描述用于实现图2的系统,具体是用于执行引言中所描述的优选NMF计算的NMF硬件加速器的优选实施例。然而,可以理解图2示出了映射到许多功能块的系统的操作,并且在硬件实施例中(如后所示),将硬件块至这些功能的分配与所示块的功能分配不同。例如,可以通过在数字信号处理器(DSP)上运行的软件控制以后描述的硬件加速器,以实现示出的所有(非NMF)功能块的一些。然而在一些优选实施例中,实质上所示出的所有功能在FPGA上实现。继续参照图2,块A208执行縮放(scaling)。具体地,该块执行以下功能1.从视频输入202读取一个(下一个)下一帧,将所述帧縮放至所期望的分辨率,例如360X160分辨率(优选地使用平均而不是采样以进行縮放),将所述帧存储在具有每颜色8位的V存储器210中,可选地在执行颜色转换之后(见下文)。当读取时,也(通过伽马查找表,见以下块B的步骤2)计算了所述帧的平均亮度,并存储为寄存器av212中的16位值。2.计算iROsqrt(av/160),存储为寄存器av212中的8位值。3.向块B216标记完成。4.等待来自块B的完成标记。5.循环回步骤l。块B216执行设置功能。具体地,该块执行以下功能1.等待来自块A的完成标记。2.设置Q二gamma(V)-av的每个值,其中gamma()表示查找表,用于将8位的灰度转换为16位的亮度。3.等待来自块D的完成标志。4.给iRC设置C和R的每个元素。5.设置iRC,-iRC。6.向块A208和C218标志完成。7.等待来自块C的完成标志,然后循环回l。块C218执行硬件加速NMF功能。具体地,该块执行以下功能1.等待来自块B的完成标记。2.执行NMF功能,如以下所规定的。3.向块D和B标记完成。4.循环回1。块D220执行管线后处理。具体地,该块执行以下功能1.设置缓冲器1222至空白显示器(C^JR^i-0,t-l)。2.保留缓冲器2224。3.向块B216标记完成。4.等待来自块C218的完成标记。5.产生R',C',t和i,例如如下所描述,并写入当前缓冲器。6.将新缓冲器准备好发信号至输出控制块226,并等待确认。7.交换缓冲器。8.循环回至3。输出块226E和F执行输出控制功能。这些块从帧缓冲器读取数据,并将数据输出至行和列驱动器。图3示出了针对图2系统的示例行驱动器电路的细节,以类似方式确定图lb的设置的行驱动比率。同样可以采用图lb中所示的列驱动器电路。如果期望地适合,则可以使用列驱动器集成电路,例如来自瑞士STMicroelectronics的STV8810(针对彩色/单色无源矩阵的384列驱动器),在这种情况下,系统可以产生定时信号用于驱动该IC。每个驱动器204、206通过移位寄存器对子帧数据进行计时(clock),并且当所有数据就位,数据和先前的子帧已超时的时候,"加载"数据,然后驱动显示器。如果优选地,可以使用一个数据端口,则数据权标(token)通过行驱动器计时进入列驱动器。也通过列驱动器的串行端口在实施例中设置列驱动器的电流输出。如果必要,可以通过串行端口设置列驱动器。优选地,如下所述,通过系统控制子帧定时(t)。在开启子帧显示器期间,加载针对下一个子帧的数据。在一个实施例中,平均的加载具有52()(36(}+16())的数据采样的时间是1/(懇z)/(160子帧)=69/^。子帧时间在10p禾口llms之间变化,因而最大所需输出数据率是47MB/s。在该实施例中,像素时钟在时间t内计时63次,并且最小t是10us,给出6.4Mhz的最大时钟速率。最大t是llms,给出5.7kMz的最小时钟速率。优选地,时钟准确度应该足够实质上保证在时间t内的63个周期。如果针对子帧t是0,则跳过该子帧(可能存在连续的具有0时间的子帧)。接下来更详细地描述显示器数据处理,具体地预处理、基本核心NMF过程的一个实施例、后处理、以及其它可选但是期望的组件。在优选的实施方式中,系统能够以实质上完全视频速率(每秒25帧)运行。表l(下面)给出具有存储需求的每个变量的大概描述。,量存儲r位j遞过…该A7注蘼V360x160x8a,b原始图像(灰度值)av16A,Bv的平均亮度iRC8A,BR和C的初始值q360xl60xl7士b,cv和RXC之间的残余误差r160x160x8b,c,d电流行矩阵C360x160x8B,C,D电流列矩阵W360x160x2B,C可选加权矩阵iRC,8B,C针对R和C初始化的值输出缓冲器2x555,84C)D或输出控制对输出矩阵进行双缓冲F,EC,360x160x6d,e输出列定时r,160x160x8d,F输出行电流率i160x3x6d,E子帧rgb参考电流t160x10d,输出控制子帧定时^-带符号的。所有其它值均不带符号。表l--变量摘要首先描述优选的预处理,尤其是色域位移。针对三个(可选地四个一见以下)矩阵、Q,R和C以及iRC操作主要过程。基于保持在矩阵V中的所输入图像的一些简单操作,启动(seed)这些矩阵。V保持图像的8位灰度值,而不是非伽马像素亮度,从而节约空间。从视频源读取图像,将所述图像縮放(通过像素平均)至显示器的分辨率,并将图像旋转以与显示器的格式匹配。结果存储在V中。23下述方程描述了所需计算的残余部分。所指的gamma()函数是将8位灰度值与16位亮度值相关的查找表。该査找表可以假设具有映射至65024的最大8位值(255)的2.4伽马。该伽马函数也可以使用针对以下R',CT,B'的方程执行颜色转换,以将所输入的rgb信号修正为pled(聚合体LED)基色的颜色。可以将指定的矩阵M编程并存储为带符号的12位整数的阵列。初始地,可以将矩阵设定为256*单位矩阵。if=(碼,+if12G+ikf〗35)/2565'-(Af31i+M32G+M33J8)/256群=average(^纖战。(Vxy))歐C-(a、'/160)0.5Q町=g"mma<;VXy)-最后,应该设定R和C的所有元素等于iRC。可以在V的读入期间计算av的值,例如通过在块A和B中均使用伽马査找表,两者都不需要同时访问。然后,可选的实施方式是可以的。再参照块C218(硬件加速的NMF),在一个实施例中,基本过程针对每个迭代i(—1至20),并针对每个迭代内的每个子帧p(p=l至160)按顺序执行以下四个步骤(方程)。针对每个x和y;<formula>formulaseeoriginaldocumentpage24</formula>R俘—针对每个y;<formula>formulaseeoriginaldocumentpage24</formula>针对;:水<formula>formulaseeoriginaldocumentpage24</formula>针对每个x和y;<formula>formulaseeoriginaldocumentpage24</formula>固定值Ww是权重,可以是零,但在实施例中,可以具有64至128之间的值。例如在5至100的实施例中,针对每个子帧执行大约20次迭代。将针对r"和c^获得的值优选地舍位为R和C的无符号8位存储(并设定至适合的范围(如果<0或>25))。在针对R^和C^的方程中,分母《P不改变,因而不需要针对每个y(针对Rpy)或x(针对Cxp)重新计算分母(但这不是以下讨论的一些变量的情况)。优选地,分子和分母的临时存储值具有直到做除法时才损失精确度的足够的位。优选地,用管线输送硬件NMF,以允许上述四个方程中和/乘积元素中的两个或多个的实质上的并行评估。接下来描述在优选实施例中执行缩放以基本上允许来自图2的系统的列电流(通过脉冲宽度调制)和行比率的直接驱动的后处理。可以以多种不同的方法执行该后处理,但是通过以下方程示出一般步骤。技术人员可以理解可以根据特定应用修改给定的縮放因素等。因而,在一个实施例中,处理用于输出的保持在R和C中数据所采用的步骤如下针对每个p,然后和并且通过以下给出子帧时间tp:210dmaxr加)ct一ASp—T,舍位至io位如果tp的值溢出(只有在当只有一个子帧包含任何信息时的情况下),可以将其设定为1023。现在使用tp和列参考电流縮放C(在优选实施例中,自动地对行调整比率,例如参照图lb所描述的类型的行驱动器,但是在其它实施例中可以针对每行计算特定行驱动值)针对每个p:t并且一'P'PC优选地针对红、绿和蓝的每个舍位至6位,其中&c是三个6位值的组,优选地在外部可编程,表示针对红、绿和蓝像素的标称参考电流。示例缺省值是51,39,51。然后优选地缩放(伸展)C至适合的PWM驱动给定^r"(但在其它实施例中PWM时钟可以改变)IO廳A,舍位至6位在该方程中,x值以RGBRGB……的颜色顺序,所以针对Fl,使用iQl和ipp针对X-2,使用i。2和ip2等。然后针对每个p,R;=2"R^,以致于12g《2"R-axS255。然后列和行显示驱动器具有e^和R"针对上述歩骤的修改是可能的。例如基于图像绿色通道上比红或蓝通道上的噪音更显而易见的观察,针对一些额外计算,可以减少感知颜色噪声'这针对基本的NMF过程将上述方程修改如下:360*M似*iRC+ZQwC印cm^针对每星、外水y;其中颜色权重cwx=「l,针对红、蓝),但在最终图象的线性误差最:2,针对绿另一个变体减少低灰度噪声(但需要极大的额外计箕像中提供潜在地很大的改进。上述过程使屏幕上产生的图-小化。然而,由于感知是高度非线性的,所以这有助于以低亮度等级产生增加的感知误差(1位改变表示更大的百分比改变)。这可以通过包括基于v的加权因子w进行校正(根据实施方式而可选)。在该实施例中,将w定义如下(注意先前所指的权重W柳是一般化的加权因子)26f0192SV"<25525"V"<106、使用W修改NMF方程如下360*W做*汲C+XQmC邵2A针对每个y;针对每160*&似*汲C+SQ"R炒2AW"__—y一_此外,也可以包括以上提及的颜色加权因子,例如通过增加w至三位并针对每个绿色像素增加,或通过针对每个绿色列对位移位进行硬编码(hard-coding)。包括该附加特征需要针对每个比率重新计算分母,因而及大地增加每次迭代所需的计算数量。作为对此的平衡,所产生的解较好,且收敛更快。现进一步描述针对该系统的优选硬件结构的细节。硬件实施方式-细节现描述在XilinxVirtex-4SX"FPGA上实现的硬件实施方式,该实施方式实现针对每MO个子帧具有加次迭代的25fps的帧速率。该实施方式包括如上所述的数据的前和后处理。以前述相似的方式,该过程的一次迭代包括以下方程的NUM一ITERAT工GWS次迭代执行,一次针对每个子帧p:(1)360x6*x+J]仏ApW=______2-炒—360油'as+ZQ^Ap'(2)<formula>formulaseeoriginaldocumentpage28</formula>(3)<formula>formulaseeoriginaldocumentpage28</formula>(5)6/m是某个加权值,且iRC是针对行和列存储器的初始值。该算法以设定等于目标图像或等于从中导出的图像矩阵的矩阵Q开始。该矩阵保存在存储器中,并具有NUM—CX)LS的维度,其中R和C存储器的所有元素设定等于iRC。由于算法使用NUM—SUBFRAMES子帧,所以用于保存R和C数据的存储器的大小分别为NUM_ROWSXNUM一SUBFRAMES和NUM一COLSXNUM一SUBFRAMES。现描述通过处理器块基于第一对方程(1和2),以及第二对方程(3和4)的逐对计算,针对速度的这些方程的并行实施方式。一般来说,通过每个处理器块执行部分计算,以及在FPGA中复制多个这样的块,允许立即读取和计算Q,R和C的多于一个值。用这种方法,获取在算法操作中的速度增加,足够以25fps的速率计算所需的行和列矩阵R和C。图4a示出了并行硬件结构400的示意图,其中将Q存储器分段且包括x—blocksXy—blocks处理器块402,每个处理器块包含Q存储器的pXq段,其中<formula>formulaseeoriginaldocumentpage28</formula>(6)存储器控制器块404通过适合存储器位置的传输进和出。在相同行中的所有处理器块402共享公用的C存储器406,且相同列中处理器块共享相同的R存储器408。将来自每个处理器块的部分结果传递至它的近邻;继续这种传递直到到达组合器(数学)块410和412,其中将结果组合,并执行方程2和3所需的除法。通过fblLproc模块500(在图5中示出)实现图4a中示出的并行硬件结构400,所述fUlljproc模块500定义硬件的输入和输出,并通过处理器块402的复制实现TMA(完全矩阵寻址)NMF过程的加速计算。在图4a中,如后所描述,这些处理器块402*之一是主处理器块,并向其它处理器块提供控制信号(虚线表示),以节省复制该控制电路。将公共C(列)存储器406分成块,每个块处理一组列(存储用于一组列的数据);将公共R(行)存储器408进行类似地逻辑地分割。这在图4b和4c中示意性地示出,其中将针对360列的数据在10个处理器块中"水平地"分割,每个处理器块处理36列,并且将针对160行的数据在8个处理器块中"垂直地"分割,每个处理器块处理20行。因而,一般来说,硬件具有平铺式处理器结构,其中每个处理器具有北、南、东和西数据连接,通过这些连接,处理块彼此形成菊花链(daisy-chained)。如所示,结果数据通过处理器块朝着相应的列和行数学块和存储器流向北和西。矩阵Q以分布式方式存储在处理器块中,在该示例中每个块具有36X20的字存储器区域,优选地双端口,从而可以同时地读出和写入。优选地,将其复制,从而一旦使用Qxy更新方程(3)中的Cxp的第一值,则可以对方程(4)进行求值,在不影响C)的后续值计算的情况下更新Q。将矩阵Q存储在处理器块中,但从离开(leave)—它只是存储残余误差用于更新R和C。行中的每个处理器块与它所处理的行组的(读/写)数据总线r相连;类似地,列中的每个处理器块与它所处理的列组的(读/写)数据总线c相连。为了解释这些数据总线的操作,在硬件的一个版本中,针对所讨论的36列X20行的示例,考虑需要针对处理器块的r和c值的完整的组的计算为了访问列和行数据块,声明r—valid信号,同时输出r值的索引O,声明c—valid,且读取相应(36)c值。之后,将c—valid去声明(de-assert)—个时钟周期,然后再声明,然后针对rindeX=l读取相同组36c值,等等直到读取针对块的所有r值。然后将c—valid和r—valid去声明。在硬件的另一个版本中,针对每个r值同时读取c值的完整的组;可选地,可以针对每个c值同时读取r值的完整的组,或可如前所述顺序地读取针对块的r和c值,在针对每个c值的块的r值的完整的组中(而不是针对每个r值的c值的组中)读取。本领域技术人员会理解,一般地,将根据特定乘积的计算需要的顺序选择读取数据的顺序。之后参照图11更详细地描述在优选实施例中期望计算的乘积。每个处理器块具有(结果)数据输入和输出,并且这些处理块形成如图4a所示的菊花链(连结至每个链的输入端的0)。由于来自所有处理器的结果己同时就绪,所以数据(单个标量结果值)沿着链式结构以每时钟周期一个块的速率位移至数学块410、412。因而,例如使用IO个时钟周期来向西沿10个处理器块传递(标量)结果用于累积,并通过数学块进行进一步处理,随后存储在行存储器中。现参照图5,示出了Ml^roc模块500的框图(实现完全TMA过程),尤其示出了与模块的外部连接。在以下表2中给出针对优选实施例的图5中示出的每个信号的类型、宽度和描述。<table>tableseeoriginaldocumentpage30</column></row><table><table>tableseeoriginaldocumentpage31</column></row><table>2在优选实施例中,将fbll_proc模块500初始化为1.将适合的时钟信号施加至clk—in2.最初将reset—in设置为高,然后在100ns之后设置为低。3.在reseLout信号变低之前没有数据传递至folljroc。由于这是clk—in的缓冲版本控制的FPGA的数字时钟管理器(DCM)的LOCKED输出的倒数(inverse),所以在reset—out信号变有效之前观察时延。一旦reset—out线路变低,则允许用户将Q和iRC数据传递到full_proc模块。接下来描述块之间传递数据。由于将Q存储器进行分段,且因为R和C存储器包含多于一个子帧性能(worth)的数据,所以应该将数据以正确的顺序载入Q、R和C存储器中。图6示出R和C存储器载入的顺序(即逐块地,一次针对一组子帧的数据),这会由于多个图像子帧的出现而变得复杂。箭头描述了访问每个存储器数据元素的顺序,当存储器加载iRC时,在算法的开始处一次;以及当它们包含所期望的结果时,在结束处一次。当载入R和C存储器时优选地使用以下过程1.在算法开始,应该选择iRC的适合的值,且应该分别声明init—rows禾口init—cols线M7MJ(9fK9XWAf—WSFMMES1和WAf—C(9ZS乂AT/M^L^Fi^MES*时钟周期(即将iRC写入所有的行和列)。2.应该将信号紅—W做,fe一6z'o;,/cr—&as—说C禾口/cc—Waw—z'iC总是设置为正确值,其中<formula>formulaseeoriginaldocumentpage32</formula>(7)通过沿向南的方向顺序移位通过处理器块,将Q存储器数据载入每个处理器存储器,正如图7的箭头所描述的(也可以看出,这也涉及将图像像素重新排列成Q存储器中的位置)。同时访问每个处理器Q块存储器的列。所有分段的Q存储器的加载需要A^7M一O^SXWMJ6WS时钟周期,所以针对加载Q存储器的优选过程是当图像矩阵的第一值传递至folLproc时,声明信号Q—valid,且当以Q矩阵的值加载Q存储器时,针对iVf/Af一C(9i^XiW/M—W(9ff^保持高。现描述图5示出的folLproc模块的子模块的操作的细节。以re—mem—control开始。如图8所示,与rc—mem—control模块的连接包括数据加载和卸载信号、行/列存储器控制线路、以及调试信号。rc一mem一control模块用作针对行和列存储器的存储控制器。响应内部状态机的当前状态,rc一mem一control提供针对行和列存储器的适合地址。在以下表3中提供图8中所示的每个信号的描述。<table>tableseeoriginaldocumentpage32</column></row><table>载的相应读取地址。c/r一write一address输出[12:0][11:0]控制地址,针对该地址将数据分别写入R和C存储器。根据c/r一valid一in的声明将地址增量。c/r一we输出-使数据写回R和C存储器c/r一init一we输出[9:0]网控制至行/列存储器的端口A的写访问。只在状态4'b0000中允许写入c/r—bram一number输出[3:0〗[2:0]当前正在被读取的行或列存储器号,分别针对行和列在范围0至p-l或0至q-1c/r—sub输出-在数据加载和卸载状态期间禁用R和C存储器的端口Bc/r—out一dv输出-当R和C数据读取在存储器卸载期间有效时,声明c/r一valid输出指示当前R和C数据有效。处理器块根据这些信号更新它们的状态(参见X.X部分)finished_loading_RandC输出-指示R和C存储器已经被加载finished—loading输出-用于给处理器块指示所有的Q,R和C存储器已经加载,以及计算可以开始state输出(调试)[3:0]内部状态机状态subframe一count输出(调试)[4:0〗子帧数量interation一count输出(调试)[7:0]迭代数量在优选实施例中,采用状态机以确定对哪些存储器位置进行访问,这取决于求值的方程。在以下表4中给出状态机的值、rc—mem—control模块的操作和求值的方程之间的关系,有效地定义了机器的功能。状态退出条件描述334'b0000q_load—done=l加载和卸载R和C存储器4'b0001fmished_sending=1针对R矢量的每个值发送C矢量(NUM-ROWS次)以计算4,b0010finished—sending=1发送c矢量一次以计算4'bOOllfmished_sending=1发送C矢量NUM一ROWS次以计算*4'b0100finished—sending:1发送R矢量一次以计算4,b0101finished—sending:I发送R矢量NUM—COLS次以计算》4'b0110finished—sending=1发送R矢量NUM—COLS次以计算Gw=£0'—^炒C印4'bOllliteration—count如果算法完成,即迭代计数=NUM—ITERATION-1,则返回状态4'b0000。否则,进行至状态4,b0001表4-rc—memcontrol模块的内部状态现描述根据图9示出的框图描述row—col—math—c禾Brow—col_math_r模块。row—col一math块的功能是获取来自proc块的数据,相应地特别如方程2和3所描述的累加并执行除法。由于除法器块在资源上比较昂贵,所以方程2、3的被除数被计算为乘以了分母倒数的分子。由于针对所有的处理器块分母的倒数是相同的,所以只需要在row一col一math主块中计算该值,然后传递至从块。因而,只有主块包含除法器,其余从块执行相对简单的乘法。当累加y和*时,将它们传递至除法器块,以计算它们的倒数。然后将乘以1031的结果传递至乘法器以有效地执行方程2和3所需的除法。由于与累加相比,倒数计算需要较长的时间,所以使用FIFO以保持中间结果。在以下表5中提供了图9中示出的每个信号的描述。<table>tableseeoriginaldocumentpage35</column></row><table>表5现描述处理器块,其中一个示例在图10中示出。执行方程1-4描述的P分计算的proc块包括以下组件1.两个"DSP48"(乘加)块;这些执行方程2和3要求的乘加功能2.作为分段的Q存储器的块RAM3.针对Q存储器的地址生成器4.控制器,例如确定计算的开始和结束,以及处理器块计算1和2或3和4哪对方程的状态机。如前所提及,如图4a所示的方式连接处理器块的一个优势在于,由于所有块之间的互连,所以一个处理器块可以用作主块,且其它处理器块可以用作从块。在这种设计中,实际节省逻辑结果的数量,由于尽管主块包含所有组件1-4,所以从块不包含地址生成器或状态机。以下表6示出了主处理块的操作、其内部状态机的状态和求值方程之间的关系,有效地定义了该机器的功能。<table>tableseeoriginaldocumentpage36</column></row><table>表6处理器块的内部状态机通过北、南、东和西数据和数据有效线实现fulLproc模块中的数据在单独处理器之间的运动。当声明c—shift和r一shift时,指示数据要移动,则将来自d一south和d—east的数据锁存在相邻处理器块的d—north和d一west。对当每个处理器块完成计算时声明的数据有效线路dv—north、dv一south、dv一east和dv—west也同样适用。以这种方式,将数据向fbll_proc模块的北和西移动,从而数据总是可以到达行/列数学块。以下表7中提供了图10中示出的每个信号的描述。<table>tableseeoriginaldocumentpage37</column></row><table><table>tableseeoriginaldocumentpage38</column></row><table>在图llc中,类似于图11a配置处理器块402,以计算r.r,并且将结果数据向北传递。在图lld中,配置处理器块402以计算Q的更新值,并累加沿处理器块链向北传递的Q和R的乘积。如前所提及,上述方程2和3的除法只需要在相应行和列数学块之一中执行一次,且可以通过乘以倒数来实现。接下来参照图12a至12e进一步描述硬件,尤其是处理器块的操作。首先描述算法第一半的求值。算法的第一半首先求值—P(8)然后,同时^"c^71""(10)其中,^和^是适合的常数。在优选实施例中,由于^一般地通过处理器块北-南运行,所以只需要最北边(即顶部)的块来计算出S程(8)。首先将其计算出,从而由于处理器块通过(passout)部分仏时《的和,所以方程(10)的分母可以就绪。将方程9计算出,且完全地内部地存储在处理器块中。图中所有的信号在它们的完全示例名称之后,例如,信号r—valid出现为proc一test2—tb一v/uut/r一valid'。图12a中的定时图示出了针对方程(8)传递至顶部、最左边块(即最北边、西边的块)的数据。当声明信号c一vaki时,接收c的36值。不需要定义总线信号r(方程8不需要)。将顶部处理器块的结果部分^'^的和放置在处理器块的寄存器中,然后向西通过d_east至d_west传递;通过适合的数学块累加。(信号dv—east指示有效数据从东边进入处理器块,并且dv—west指示有效数据从处理器块出来向西)。图12b和12c示出了提供的数据的定时,来计算方程9和方程10。具39体地12b示出了针对传递至顶部、最左边块的第一两个行值的定时图,并且12C示出了针对传递至顶部、最左边块的所有数据的定时图。此外,将部分和从东向西传递(在行和列数据的每次供应之后,且在下一次行和列数据值的供应期间),来通过数学块累加,因而存储在行存储器中,易于算法的第二半。现描述算法第二半的求值。算法的第二半首先进行以下求值然后,同时呻,—(12)因为方程13需要^^(求值需要时间…必须首先算出方程12),在没有内部延迟Qnew的情况下处理器块不能同时计算出方程。图12d示出了针对传递至顶部、最左边块的所有数据的定时图,以计算出方程4。将块的部分和从南向被传递。在计算出V^之后,计算处^,的第一值。为了防止在每次r一valid脉冲之后停止(stall)(针对乘法器等待时间会需要停止以计算出Sp,),与方程13相比,方程12提前了一个r一valid脉冲;并且通过2XR—BLOCK—SIZE=40在处理器块中内部地对Q进行缓冲(从而利用Q的正确值乘以正确值^)。这在针对方程12的图12e中示出,该图示出了针对传递至顶部、最左边块的所有数据的定时图。由于同时计算出方程12和13,所以图12f示出针对传递至顶部、最左边块的所有数据的定时图。将部分^一的和从南向北传递至列累加器块,其中计算出^^w并存储在列存储器中,易于下一次迭代。可选地但是优选地,硬件也可以包括输入数据预处理器。这可以实现下列功能的一个或多个针对4:2:2亮度色度数据的解码器、颜色空间转换器(如上所述,可以包括矩阵乘法器以计算^,G'^'),以及针对隔行的视频用于执行平均功能的模块(在x方向超过2行、4个像素,即2X4阵列)。40上述技术的实施例提供图像数据处理,所述图像数据处理使具有比有源矩阵TV大小屏幕稍高功耗及更低成本的无源矩阵TV大小屏幕(例如8"及以上)成为可能。硬件加速器也可用于序言部分所提及的各种其它应用。因而,在实施例中,数据在多个组中存在,且目标包括来自一个或多个轴上的每个组的数据,以及在另一轴上数据的属性(例如类型组、类别或减少的参数分析)。在实施例中,属性是附加的,从而跨越多个组的组件或属性的和是有意义的。可以采用这些技术针对脸部和其它图像匹配/识别处理图像数据用于网络安全一例如用于通过基于内容的文本过滤来处理构建的用户预置文件的语义表示;用于处理数据库中的多元数据以针对传感器数据处理的多个不同类型提供所输入数据的减少的表示,例如以执行主要的组件分析;用于微阵列数据或诸如基因、蛋白质组、核苷、或氨基酸序列数据的生物序列数据的处理、分析或组件分析,例如来找到在表达空间中的本地化特征或识别结合或交互位置;用于机器学习,例如用于分析描述对象或诸如图像、声音、文本或单词等的对象部分,且一般地用于数据分析和模式识别。毫无疑问,对本领域技术人员来说可以出现多个其它的有效选择。可以理解本发明不限于所述的实施例,以及包括所附权利要求的精神和范围内对本领域技术人员显而易见的修改。权利要求1.一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵(R;C),所述硬件加速器包括输入端,用于接收表示所述目标矩阵的输入数据矩阵;第一因式矩阵存储器,用于存储第一因式矩阵(R)的行和列数据,所述第一因式矩阵存储器具有多个第一数据总线,每个第一数据总线都与所述第一因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第一因式矩阵列数据;第二因式矩阵存储器,用于存储第二因式矩阵(C)的行和列数据,所述第二因式矩阵存储器具有多个第二数据总线,每个第二数据总线都与所述第二因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第二因式矩阵行数据;处理器块矩阵,每个处理器块均具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出端;处理器存储块,用于存储表示所述一对因式矩阵的乘积和所述目标矩阵之间的差的矩阵(Q)的一部分;以及数据处理器,包括至少一个乘加单元,所述数据处理器具有与所述处理器存储块耦合的第一输入端,以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端;以及控制电路,用于控制将数据从所述输入端写入所述处理器块矩阵的所述处理器存储块中,控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及控制将从所述结果数据输出端得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解。2.如权利要求1所述的矩阵因式分解硬件加速器,其中每个所述处理器块具有与所述处理器存储块耦合的第三处理器块数据总线,且所述处理器存储块配置用于存储所述矩阵(Q)的一部分,所述矩阵(Q)的一部分具有与由所述第一数据总线访问的所述第一因式存储器列数据的行数据项的数目相对应的第一尺寸,并且具有与由所述第二数据总线访问的所述第二因式存储器行数据的列数据项的数目相对应的第二尺寸。3.如权利要求2所述的矩阵因式分解硬件加速器,其中所述处理器块具有一对所述第三处理器块数据总线,用于分别向所述处理器存储块写入数据和从所述处理器存储块读取数据,并且通过所述第三处理器块数据总线使所述处理器块形成菊花链。4.如权利要求l、2或3所述的矩阵因式分解硬件加速器,其中所述处理器块具有两个所述结果数据输出端和两个结果数据输入端;且所述处理器块矩阵包括经由所述结果数据输入端和输出端,沿两个方向形成菊花链的处理器块矩形矩阵。5.如前述任一权利要求所述的矩阵因式分解硬件加速器,还包括与所述第一和第二因式矩阵存储器相关联的第一和第二数学块,用于累加从所述处理器块矩阵接收的数据,以写回至相应的所述第一和第二因式矩阵存储器中。6.如权利要求5所述的矩阵因式分解硬件加速器,其中所述第一和第二数学块中的每一个均包括主数学块和一个或多个从数学块,并且所述主数学块包括具有至所述一个或多个从数学块的输出端的除法器单元,且所述一个或多个从数学块中的每一个均包括具有与所述除法器单元输出端耦合的输入端的乘法器单元。7.如权利要求5或6所述的矩阵因式分解硬件加速器,其中所述第-一和第二因式矩阵存储器包括双端口存储器,以同时允许针对所述处理器块的读访问和针对所述数学块的写访问。8.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述处理器块包括主处理器块和多个从处理器块,并且所述主块配置用于在所述从处理器块中控制所述处理器块存储器的地址和所述从处理器块中的所述数据处理器的操作之一或二者。9.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述乘加单元具有与所述第一和第二处理器块数据总线耦合的第一和第二乘法输入端,与所述处理器存储块的读输出端耦合的加法输入端,以及与所述处理器存储块的写输入端耦合的输出端,且所述数据处理器还包括配置作为乘-累加单元的乘加单元,具有与所述乘加输出端耦合的第一乘法输入端和与所述第一和第二处理器块数据总线之一选择性耦合的第二乘法输入端,且具有与所述数据处理器输出端耦合的输出端。10.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述处理器存储块包括用于存储所存储的矩阵(Q)的所述部分的副本的缓冲器,且所述数据处理器同时以所存储的矩阵部分的两个不同版本进行操11.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述数据处理器配置用于以第一位长的变量进行整数运算,且所述处理器存储块配置用于存储所述第一位长两倍的整数变量。12.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述数据处理器配置用于针对与所存储的矩阵(Q)部分相对应的数据执行以下操作其中xy、py和xp分别标记Q、R和C的列和行。13.如前述任一权利要求所述的矩阵因式分解硬件加速器,其中所述矩阵因式分解包括非负矩阵因式分解(NMF)。14.一种集成电路,包括如前述任一权利要求所述的矩阵因式分解硬件加速器。15.—种OLED显示驱动器,包括如前述任一权利要求所述的矩阵因式分解硬件加速器。16.—种用于矩阵因式分解的集成电路IC,所述IC包括输入端,用于接收表示目标矩阵的、用于因式分解为第一和第二因式矩阵(R;C)的输入数据矩阵;多个第一数据总线,每个用于访问在第一因式矩阵存储器(R)块中所存储的数据;多个第二数据总线,每个用于访问在第二因式矩阵存储器(C)块中所存储的数据;以及SRA"2XVV处理器块矩阵,每个处理器块均具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出端;处理器存储块,用于存储表示所述一对因式矩阵的乘积和所述目标矩阵之间的差的矩阵(Q)的一部分;以及数据处理器,包括至少一个乘加单元,所述数据处理器具有与所述处理器存储块耦合的第一输入端、以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端。17.—种对非负矩阵因式分解NMF计算进行硬件加速的方法,所述计算包括迭代地确定R一—=针对每个x和y(1)针对每个y(2)6to+XXyRpyWs:针对每个x(3)、-Q"-RpyC叩,针对每个x和y(4)其中,每次迭代中,针对每个;值,对方程(1)至(4)进行求值,以及W,包括加权因式,所述方法包括,针对每个f将Q存储在分布在相应多个处理器块上的多个存储块中;对方程(2)的分母进行求值;实质上同时跨所述多个处理器块,对方程(2)的分子和方程(1)的基值进行求值,以确定Qxy和Rpy;对方程(3)的分母进行求值;以及实质上同时跨所述多个处理器块,对方程(3)的分子和方程(4)的基值进行求值,以确定Cxp和Qxy。18.—种用于对非负矩阵因式分解NMF计算迸行硬件加速的系统,所述计算包括迭代地确定Q,y-Qw+R时C印,针对每个x和y(1)<formula>formulaseeoriginaldocumentpage6</formula>针对每个y(2)<formula>formulaseeoriginaldocumentpage6</formula>针对每个x(3)Qxy=Q"—~,针对每个x和y(4)其中,每次迭代中,针对每个p值,对方程(1)至(4)进行求值,以及W,包括加权因式,所述系统包括将Q存储在分布在相应多个处理器块的多个存储块中的装置;对方程(2)的分母进行求值的装置;对方程(2)的分子和方程(1)的基值进行求值的装置;对方程(3)的分母进行求值的装置;以及实质上同时跨所述多个处理器块、对方程(3)的分子和方程(4)的基值进行求值、以确定Cxp和Qxy的装置。19.一种包括如权利要求18所述的系统的显示驱动器或显示器。20.—种载体,承载了描述实现如权利要求17所述的方法或如权利要求18所述的系统的硬件的处理器控制代码。21.—种非负矩阵因式分解NMF硬件加速器,用于将输入矩阵(Q)因式分解为一对第一和第二因式矩阵(R;C),所述硬件加速器包括第一存储器,用于存储所述第一因式矩阵(R)的元素;第二存储器,用于存储所述第二因式矩阵(C)的元素;处理器网格,与所述第一和第二存储器耦合以并行执行多个NMF操作;以及控制器,用于控制将所述输入矩阵(Q)写入所述处理器网格,并控制所述处理器将所述第一和第二因式矩阵的元素写入相应的所述第一和第二存储器。22.如权利要求21所述的NMF硬件加速器,具有将所述处理器分别与所述第一和第二存储器相连的多个第一数据总线和多个第二数据总线。23.如权利要求21或22所述的NMF硬件加速器,其中每个所述处理器均包括用于存储所述输入矩阵(Q)的一部分的存储区域。24.如当从属于权利要求19时的权利要求22所述的NMF硬件加速器,其中每个所述处理器均包括至少一个乘加单元,所述乘加单元具有第一输入端,用于接收从所述处理器存储区域得到的数据,并具有与所述第一和第二数据总线之一耦合的至少一个第二输入端,并且配置用于执行所述NMF操作,以向所述第一和第二存储器之一或二者提供数据。25.—种用于非负矩阵因式分解NMF的集成电路IC,用于将输入矩阵(Q)因式分解为一对第一和第二因式矩阵(R;C),所述IC包括与外部总线耦合的处理器网格,用于分别访问存储有所述第一和第二因式矩阵(R;C)的元素的第一和第二存储器。26.如权利要求25所述的集成电路IC,其中每个所述处理器均包括本地存储器,所述处理器包括多个从处理器、和配置作为主处理器的一个处理器,并且所述主处理器配置用于在所述从处理器中控制所述本地存储器的地址和所述从处理器的数据处理操作之一或二者。27.如权利要求25或26所述的集成电路IC,其中所述处理器网格中的每个处理器均配置用于处理所述输入矩阵的相应部分,从而能够处理所述输入矩阵的区域,并且所述外部总线配置用于允许多个所述集成电路连接以处理多个所述输入矩阵区域。全文摘要本发明通常涉及数据处理硬件,更具体地,涉及硬件加速器和用于矩阵因式分解、尤其是非负矩阵因式分解(NMF)的相关方法。本发明的实施例对于驱动诸如OLED(有机发光二极管)显示器的电致发光显示器尤其有用。一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵(R;C),所述硬件加速器包括输入端,用于接收表示所述目标矩阵的输入数据矩阵;第一因式矩阵存储器,用于存储第一因式矩阵(R)的行和列数据,所述第一因式矩阵存储器具有多个第一数据总线,每个第一数据总线都与所述第一因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第一因式矩阵列数据;第二因式矩阵存储器,用于存储第二因式矩阵(C)的行和列数据,所述第二因式矩阵存储器具有多个第二数据总线,每个第二数据总线都与所述第二因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第二因式矩阵行数据;处理器块矩阵,每个处理器块均具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出端;处理器存储块,用于存储表示所述一对因式矩阵的乘积和所述目标矩阵之间的差的矩阵(Q)的一部分;以及数据处理器,包括至少一个乘加单元,所述数据处理器具有与所述处理器存储块耦合的第一输入端,以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端;以及控制电路,用于控制将数据从所述输入端写入所述处理器块矩阵的所述处理器存储块中,控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及控制将从所述结果数据输出端得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解。文档编号G06F17/16GK101454773SQ200780019064公开日2009年6月10日申请日期2007年3月21日优先权日2006年3月23日发明者尤安·克里斯托弗·史密斯,尼古拉斯·劳伦斯申请人:剑桥显示技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1