CN101454773B - 矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器 - Google Patents

矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器 Download PDF

Info

Publication number
CN101454773B
CN101454773B CN2007800190644A CN200780019064A CN101454773B CN 101454773 B CN101454773 B CN 101454773B CN 2007800190644 A CN2007800190644 A CN 2007800190644A CN 200780019064 A CN200780019064 A CN 200780019064A CN 101454773 B CN101454773 B CN 101454773B
Authority
CN
China
Prior art keywords
matrix
processor
data
piece
factor
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.)
Expired - Fee Related
Application number
CN2007800190644A
Other languages
English (en)
Other versions
CN101454773A (zh
Inventor
尤安·克里斯托弗·史密斯
尼古拉斯·劳伦斯
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.)
Cambridge Display Technology Ltd
Original Assignee
Cambridge Display Technology 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 Cambridge Display Technology Ltd filed Critical Cambridge Display Technology Ltd
Publication of CN101454773A publication Critical patent/CN101454773A/zh
Application granted granted Critical
Publication of CN101454773B publication Critical patent/CN101454773B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/2007Display of intermediate tones
    • G09G3/2077Display of intermediate tones by a combination of two or more gradation control methods
    • G09G3/2081Display of intermediate tones by a combination of two or more gradation control methods with combination of amplitude modulation and time modulation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/22Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources
    • G09G3/30Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels
    • G09G3/32Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED]
    • G09G3/3208Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED] organic, e.g. using organic light-emitting diodes [OLED]
    • G09G3/3216Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED] organic, e.g. using organic light-emitting diodes [OLED] using a passive matrix
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2310/00Command of the display device
    • G09G2310/02Addressing, scanning or driving the display screen or processing steps related thereto
    • G09G2310/0202Addressing of scan or signal lines
    • G09G2310/0205Simultaneous scanning of several lines in flat panels
    • G09G2310/0208Simultaneous scanning of several lines in flat panels using active addressing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0271Adjustment of the gradation levels within the range of the gradation scale, e.g. by redistribution or clipping
    • G09G2320/0276Adjustment of the gradation levels within the range of the gradation scale, e.g. by redistribution or clipping for the purpose of adaptation to the characteristics of a display device, i.e. gamma correction
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/2007Display of intermediate tones
    • G09G3/2018Display of intermediate tones by time modulation using two or more time intervals
    • G09G3/2022Display of intermediate tones by time modulation using two or more time intervals using sub-frames
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/22Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources
    • G09G3/30Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels
    • G09G3/32Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED]
    • G09G3/3208Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED] organic, e.g. using organic light-emitting diodes [OLED]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/22Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources
    • G09G3/30Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels
    • G09G3/32Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED]
    • G09G3/3208Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters using controlled light sources using electroluminescent panels semiconductive, e.g. using light-emitting diodes [LED] organic, e.g. using organic light-emitting diodes [OLED]
    • G09G3/3275Details of drivers for data electrodes
    • G09G3/3283Details of drivers for data electrodes in which the data driver supplies a variable data current for setting the current through, or the voltage across, the light-emitting elements
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G3/00Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
    • G09G3/20Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters
    • G09G3/34Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source
    • G09G3/36Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes for presentation of an assembly of a number of characters, e.g. a page, by composing the assembly by combination of individual elements arranged in a matrix no fixed position being assigned to or needed to be assigned to the individual characters or partial characters by control of light from an independent source using liquid crystals
    • G09G3/3611Control of matrices with row and column drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Logic Circuits (AREA)

Abstract

本发明提出了一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵,包括:输入端;第一和第二因式矩阵存储器;处理器块矩阵;以及控制电路,用于控制将数据从所述输入端写入所述处理器块矩阵的所述处理器存储块中,控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及控制将从所述结果数据输出端得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解。本发明还提出了一种用于矩阵因式分解的集成电路IC、一种包括该矩阵因式分解硬件加速器的OLED显示驱动器和使用该矩阵因式分解硬件加速器对非负矩阵因式分解NMF因式分解进行硬件加速的方法。

Description

矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器
技术领域
一般地,本发明涉及数据处理硬件,更具体地,涉及硬件加速器和用于矩阵因式分解、尤其是非负矩阵因式分解(NMF)的相关方法。本发明的实施例对于驱动诸如OLED(有机发光二极管)显示器的电致发光显示器尤其有用。 
背景技术
先前描述了如何在驱动OLED显示器中有利地采用针对非负矩阵分解(NMF)的技术(参见一并引入作为参考的国际申请PCT/GB2005/050219)。现描述实现这些技术、特别是解决执行足够快产生实时显示所需的非常大量的计算的问题的硬件实施例。将参考显示驱动描述优选实施例,但技术人员将理解,可以采用所描述的硬件和方法用于实质上任何类型的数据的快速因式分解,所述数据包括但不限于图像数据(例如用于面部识别)、计算机网络数据(例如用于安全监视的用户活动数据)、存储在数据库中的多变数据(例如,用于数据挖掘)、传感器数据(例如用于确定组成整体组合谱的一组组件谱)、生物序列数据和/或微阵列数据(例如用于序列分析)、对象描述符数据(例如用于机器学习/识别技术)、以及搜索结果数据(用于分析和/或模式识别)。这些和其它应用的其它细节可以在申请人的先前国际专利申请(同上)中找到。可以在US5692210;US 4739474;US 2002/0186311;US 5690211:EP 0293700和US2004/0268080中找到背景技术。 
为了便于理解本发明的实施例,首先回顾多线寻址(MLA)技术,该技术的优选特定情况包括整体矩阵寻址(TMA)技术。优选地,采用这些技术用于无源矩阵OLED显示器,即针对每个像素(或彩色子像素)不包括存储器元件并因此必须不断刷新的显示器。在该说明书中,OLED显示器包括使用聚合物、所谓的小分子(例如US 4,539,507)、树状高分子、以及有机金属材料制成的显示器;该显示器可以是单色的或彩色的。 
在传统的无源矩阵显示器中,逐条线地驱动显示器,因而针对每条线路需要高位驱动器(因为仅被照亮帧时段的一部分)。MLA技术一次驱动多条线,以及在TMA技术中同时驱动所有的线,并根据当在观察者的眼中整合时给出所期望的图像的印象的多个连续显示的子帧构建图像。问题在于确定针对子帧的行和列驱动信号组,使得子帧组逼近所期望的图像。先前在国际专利申请号GB2005/050167-9中描述了对该问题的解决方案(所有三个申请一并引入作为参考)。优选技术采用描述所期望图像的矩阵的非负矩阵分解。因式矩阵(由于OLED显示器元件提供正(或零)发光,所以所述因式矩阵的元素为正)实质上定义了针对子帧的行和列驱动信号。以下描述一个优选的NMF技术,尽管也可以采用其它技术。以下还将描述适合实现NMF技术和其它NMF过程的硬件加速器的细节。 
为了便于理解本发明,参考图1a,将首先描述包括显示驱动数据处理器150的整个OLED显示系统100,可以使用本发明的实施例实现所述显示驱动数据处理器150以执行TMA。 
在图1a中,无源矩阵OLED显示器120具有行驱动器电路112驱动的行电极124,以及列驱动110驱动的列电极128。这些行和列驱动器的细节在图1b中示出。列驱动器110具有列数据输入109,用于为列电极的一个或更多设置电流驱动;类似地,行驱动器112具有行数据输入111,用于为两个或更多行设置电流驱动比率。优选地,输入109和111是易于接口的数字输入;优选地,列数据输入109针对显示器120的所有U列设置电流驱动。 
在可以是串行或并行的数据和控制总线102上提供用于显示的数据。总线102向帧存储器103提供输入,该存储器存储针对显示器的每个像素的亮度数据,或者在彩色显示器中存储针对每个子像素的亮度信息(该信息可以编码为单独的RGB彩色信号或亮度和色度信号或其它)。存储在帧存储器103中的数据确定针对显示器的每个像素(或子像素)的所期望的视亮度,并可以通过显示器驱动数据处理器150经由第二读取总线105读取该信息。显示器驱动数据处理器150优选地执行输入数据预处理、NMF、以及后处理。
图1b示出了适合驱动具有因式分解(factorisation)图像矩阵的显示器的行和列驱动器。列驱动器110包括一起汇集成组、并具有用于将电流设置给每个列电极的可变参考电流Iref的一组可调整实质恒定的电流源。该参考电流通过针对从NMF因式矩阵的行导出的每个列的不同值进行脉冲宽度调制。行驱动器112包括可编程的电流镜像,优选地针对显示器的每行(或针对同时被驱动的行块的每行)有一个输出。从NMF因式矩阵的列导出行驱动信号,并且行驱动器112针对每行分布总列电流,从而针对行的电流按照比率控制输入(R)设置的比率。可以在申请人的PCT申请GB2005/010168中(一并引入作为参考)找到适合驱动器的其它细节。 
OLED具有二次伏安相关性,限制行和列驱动变量的独立控制。由于PWM允许列和行驱动变量互相去耦,所以PWM是有用的。此外,利用上述驱动设置,因为电流在行之间共享,所以如果一个行中的电流增加,则残余行中的电流减少。优选地,因而缩放参考电流和子帧时间以进行补偿。例如,可以为了使每个子帧中的峰值像素亮度相等(同时降低最坏情况/峰值亮度老化),调整子帧时间。在实践中,这受最短可选择子帧时间以及最大列驱动电流的限制,但是由于调整是二阶优化,所以这不必成为一个问题。 
以下给出优选的NMF计算的一个示例: 
通过具有元素Vxy的矩阵V给出输入图像,R表示电流行矩阵,C表示电流列矩阵,Q表示V和R.C之间的残余误差,p表示子帧的数量,average表示平均值,以及gamma表示可选的伽马修正函数。 
变量初始化为如下: 
av=average(gamma(Vxy
initialRC = ( av / p )
Qxy=gamma(Vxy)-av 
然后针对p=1至总子帧数,NMF系统的实施例执行下列计算: 
开始 
Qxy=Qxy+RpyCxp针对每个x和y
R py = bias + Σ x Q xy C xp bias + Σ x C xp C xp 针对每个y 
C xp = bias + Σ y Q xy R py bias + Σ y R py R py 针对每个x 
Qxy=Qxy-RpyCxp针对每个x和y 
循环至开始(p←p+1) 
变量bias防止被0除,以及R和C的值向该值逼近。可以通过initialRC×权重×列数确定bias的值,其中列数是x,以及例如,权重在64至128之间。 
一般来说,上述计算可以以最小二乘法拟合为特征。由于通常将行R和列C矩阵初始化,所以矩阵Q起初以目标矩阵的形式开始,从而它们所有的元素都相同,并且等于平均值initialRC。然而,从那时起,矩阵Q表示图像和组合子帧的结果之间的余量差—理想地Q=0。这样,一般来说,该过程通过添加针对子帧p的基值(contribution)开始,然后针对每行找出最佳列值,之后针对每列找出最佳行值。然后从Q中减去更新的行和列值,该过程继续至下一个子帧。典型地,执行多次迭代(例如1到100次),从而针对子帧组的R和C向最佳拟合收敛。所采用的子帧数p是经验选择,但可以是例如1到1000之间。 
在该说明书中,技术人员将理解对行和列的参考是可互换的,以及例如在以上方程系统中,处理确定更新的Rpy和Cxp值的顺序可以交换。 
在上述方程集中,优选地采用所有整数运算,以及优选地R和C值包括8位值以及Q包括带符号的16位值。然后,尽管R和C的值的确定可以涉及舍入,但是由于Q利用所舍入的值进行更新(以及R和C的值的积不能比Q内所容纳的最大值大),所以在Q中不存在舍入误差。上述过程可以直接应用到彩色显示器的像素中(以下将详细描述)。可选地,因为眼睛对不完全的黑色不成比例的敏感,可以采用权重W矩阵以将低亮度值中的误差加权为较高。因为眼睛对绿色误差不成比例的敏感,可以应用类似加权以增加在绿色通路中误差的权重。
基于上述NMF过程的针对显示驱动器系统的实际实施方式的典型参数组可以具有每秒25帧的所期望的帧速率,每帧包括具有例如160子帧的过程的20次迭代。使用20次迭代和160个子帧,以150MHz运行的上述过程的连续实施方式会产生0.25fps的帧率。因此在不需要非常快速、昂贵以及耗功率的数字信号处理器的情况下,存在对于便于实现典型视频帧率的改进技术的需要。 
发明内容
根据本发明,提供一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵(R;C),所述硬件加速器包括:用于接收表示所述目标矩阵的输入数据矩阵的输入;用于存储针对第一因式矩阵(R)的行和列数据的第一因式矩阵存储器,所述第一因式矩阵存储器具有多个第一数据总线,所述多个第一数据总线每个都与所述第一因式矩阵存储器的相应块相关联,用于访问存储在块中的第一因式矩阵列数据;用于存储针对第二因式矩阵(C)的行和列数据的第二因式矩阵存储器,所述第二因式矩阵存储器具有多个第二数据总线,所述多个第二数据总线每个都与所述第二因式矩阵存储器的相应块相关联,用于访问存储在块中的第二因式矩阵行数据;处理器块矩阵,每个处理器块具有与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出;处理器存储块,用于存储表示所述对因式矩阵的乘积和所述目标矩阵的差的矩阵(Q)的一部分;以及包括至少一个乘加单元的数据处理器,所述数据处理器具有与所述处理器存储块耦合的第一输入,以及与所述第一和第二处理器块数据总线之一或两者耦合的第二输入,并具有与所述结果数据输出耦合的输出;以及控制电路,用于控制将数据从所述输入写入所述处理器块矩阵的所述处理器存储块中,用于控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及用于控制从所述结果数据输出得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解。 
上述硬件加速器的实施例可以用来实现一系列矩阵因式分解技术,尤其适合非负矩阵因式分解(NMF)。可以使用引言中所述的特定技术实现 非负矩阵因式分解,或可以使用硬件实现其它NMF方式。然后,硬件加速器的应用不限于NMF,并且具体包括大范围的迭代(iterative)技术,其中以循环或迭代的方式修改第一和第二因式矩阵中的数据。然后可以采用在这些应用中的处理器块以执行重复、迭代或循环计算。为了实现不包括非负约束的方法,可以例如通过在数据存储和/或处理中提供符号位而生成带符号的数据。 
一般而言,在分布处理的实施例以及残余矩阵Q的存储中,可以通过每个处理器块并行执行多个部分计算。这种设置方便以诸如FPGA(现场可编程门阵列)的硬件实现,并且因为可以在图像区域上分布处理器块、更具体地,处理器块存储部分Q,所以实际上处理速度可以与图像大小或分辨率无关。此外,在实施例中,上述数据结构实现NMF方程的逐对求值(evaluation),首先实质上同时更新Q以确定针对子帧p的目标,并在同时更新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的外部读访问)。例如通过应用引言中所示的伽马修正,可以预处理输入数据矩阵以产生目标矩阵。同样,可以通过硬件加速器或外部地后处理第一和第二因式矩阵中的数据。在实施例中,可以通过对第一和第二因式矩阵存储器的读访问提供自硬件加速器的读出。也可以提供至存储器的写访问,例如用于将第一和第二因式矩 阵初始化,或通过硬件加速器内部地执行初始化。如前所提及,使用整数运算,在处理器块中优选地执行针对R或C值的计算,结果可以将针对元素R或C的值上舍入或下舍入,否则舍位或近似。因而,优选地,处理器块使用四舍五入的值更新元素Q。因而,优选地,处理器存储块使用比数据存储器的输入多两倍的数据宽度(位长度)的变量。 
在一些优选的实施例中,将硬件加速器控制电路分布在针对硬件加速器的全局控制电路、用于控制(尤其是寻址)第一和第二因式矩阵存储器的存储控制电路和针对处理器块本地控制的处理器块控制电路间。然而,如下所描述的,在一些优选的实施例中,只有一个处理器块包括这样的控制电路,例如,用于对存储一部分残余矩阵Q的存储块进行寻址;然后将该处理器块称为主处理器块,并且可以将其它处理器块的一个或多个(优选所有)从属于该主处理器块,采用从主处理器块导出的定时和控制信号。 
在一些优选的实施例中,存储控制电路控制处理器块处理的一组元素的因式矩阵的一个或另一个或两个中的每个元素的顺序选择。换言之,一行处理器块每个可以处理行因式矩阵的列值块(针对处理器块的连续行标记一/每列的部分)。然后,可以选择一行处理器块处理的列值组的每个,并提供给处理器块用于处理。多列处理器块可以相应地处理列因式矩阵中的数据行。因而可以配置存储控制电路,以将第一和第二因式矩阵的元素顺次提供给处理块,从而根据如上所描述的NMF计算方程进行处理。存储控制电路也可以控制至因式矩阵存储器的外部读和/写访问。 
在硬件加速器的优选实施例中,使用第三处理器块数据总线使处理器块形成菊花链,用于将残余矩阵Q写入分布的存储器阵列(但在变体中也可以完成,例如,使用行和列矩阵存储数据总线)。优选地,通过提供可以方便地看做北、南、东和西连接的一对结果数据输入和一对结果数据输出,也可将使处理器块形成菊花链,以允许从矩阵内逐处理器块地传输结果,直至处理器块矩阵的行边缘和/或列边缘(在控制电路的控制之下)。在数据被传输所至的边缘对面的尾输入可以与零连接。优选地,通过针对行和列结果的数学块接收结果数据。这些数学块优选地将从块的相关行或列中的每个处理器块接收的部分结果数据累加。此外,由于在实施例中需要除法来更新行和列因式矩阵值(参看如上方程),所以可以配置数学块 以执行该除法。然而,由于在给定子帧中,行和列矩阵更新方程的分母总是相同,所以该除法只需要执行一次。因而,可以提供多个行和列块,例如一个针对每个行和列处理器块,并且在这样配置中,将数学块中的一个指定为主块,其它的指定为从数学块。然后,主块可以包括用于计算相关分母的倒数的除法器,并且从数学块需要只包括用于与从主(行或列)数学块接收到的该倒数值相乘的乘数。优选地,使用双端口存储器实现行和列矩阵存储器,以允许处理器块和数学块的同时读和写访问。 
在一些优选地实施例中,处理器块包括第一和第二乘加单元。以这种方式,可以采用这些乘加单元中的一个计算乘积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显示器、等离子显示器、真空荧光显示器以及诸如
Figure G2007800190644D0009171712QIETU
显示器的厚和薄膜电致发光显示器。 
在一些优选的实施例中,明确地配置硬件加速器用于在如上所述的现优选的NMF过程中执行计算。因而,在相关方面,本发明提供硬件加速非负矩阵因式分解(NMF)计算的方法,所述计算包括迭代地确定:
Q xy = Q xy + R py C xp , 针对每个x和y                    (1) 
R py = bias + Σ x Q xy C xp W xyp bias + Σ x C xp C xp W xyp , 针对每个y                   (2) 
C xp = bias + Σ y Q xy R py W xyp bias + Σ y R py R py W xyp , 针对每个x                   (3) 
Q xy = Q xy - R py C xp , 针对每个x和y                      (4) 
每次迭代针对每个值p对方程(1)至(4)进行求值,以及Wxyp包括加权因式,所述方法包括:针对每个p:将Q存储在分布在对应多个处理器块的多个存储块中;对方程(2)的分母进行求值;实质上同时跨所述多个处理器块,对方程(2)的分子和方程(1)的基值进行求值,以确定Qxy和Rpy;对方程(3)的分母进行求值;以及实质上同时跨所述多个处理器块,对方程(3)的分子和方程(4)的基值进行求值,以确定Cxp和Qxy。 
在实施例中,变量bias可以是零,在这种情况下,可以省略提供该变量。根据实施方式,加权因式Wxyp可以是标量、矢量或矩阵,或可以省略Wxyp(在这种情况下给定值1)。 
一般来说,并行对分布于多个处理器块的方程(1)和(2)进行求值,之后组合来自这些处理器块的部分结果。同样,以类似的方式,优选地实际上并行地对方程(3)和方程(4)进行求值。 
在其它方面,本发明提供用于硬件加速非负矩阵因式分解(NMF)计算的系统,所述计算包括迭代地确定: 
Q xy = Q xy + R py C xp , 针对每个x和y                     (1) 
R py = bias + Σ x Q xy C xp W xyp bias + Σ x C xp C xp W xyp , 针对每个y                     (2) 
C xp = bias + Σ y Q xy R py W xyp bias + Σ y R py R py W xyp , 针对每个x                     (3)
Q xy = Q xy - R py C xp , 针对每个x和y             (4) 
每次迭代针对每个值p对方程(1)至(4)进行求值,以及Wxyp包括加权因式,所述系统包括:将Q存储在分布在相应多个处理器块的多个存储块中的装置;对方程(2)的分母进行求值的装置;对方程(2)的分子和方程(1)的基值进行求值的装置;对方程(3)的分母进行求值的装置;以及实质上同时跨所述多个处理器块、对方程(3)的分子和方程(4)的基值进行求值、以确定Cxp和Qxy的装置。 
此外,变量bias可以是零,并且加权因式Wxyp可以是标量、矢量、矩阵或1(unity)。 
在另一方面,本发明提供一种非负矩阵因式分解(NMF)硬件加速器,用于将输入矩阵(Q)因式分解为一对第一和第二因式矩阵(R;C),所述硬件加速器包括:第一存储器,用于存储所述第一因式矩阵(R)的元素;第二存储器,用于存储所述第二因式矩阵(C)的元素;处理器网格,与所述第二和第二存储器耦合以并行执行多个(NMF)操作;以及控制器,用于控制所述输入矩阵(Q)写入处理器的所述网格,并控制所述处理器将所述第一和第二因式矩阵的元素写入所述相应第一和第二存储器。 
可在例如FPGA(现场可编程门阵列)上或以ASIC(特定用途组成电路)或定制硅(custom silicon)实现上述硬件。因而本发明还提供一种承载了描述这种硬件的处理器控制代码的载体(例如诸如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具有允许多个集成电路连接以处理多个所述输入矩阵区域的外部总线。例如,网格可以是矩形网格,并且集成电路可以具有北、南、东和西数据连接。 
如果因式矩阵存储器不在芯片上,则优选地提供两组(快速)芯片上存储器,每个针对第一和第二(行和列)因式矩阵存储器的每个。每组优选地包括输入缓冲器(用于读取数据)、输出缓冲器(用于写入数据),以及高速缓存器(用于处理数据)。
附图说明
参照附图,仅通过示例,还将描述本发明的这些和其它方面。 
图1a和1b分别示出了根据本发明的实施例包括NMF硬件加速器的OLED显示器和驱动器,以及针对显示器的示例行和列驱动器的细节。 
图2示出了包括NMF硬件的OLED显示器驱动系统的功能性框图。 
图3示出了图2针对系统的示例行驱动器硬件的细节。 
图4a至4c分别示出了根据本发明实施例的硬件NMF结构、初始目标/残余矩阵Q、以及相关联的行(R)和列(C)因式矩阵,以及图4a的针对并行硬件NMF结构的行和列存储器块至存储器块分配的细节的示意性示例。 
图5示出了实现图4a和4c硬件NMF结构的full_pro模块的框图。 
图6示出了加载R和C存储器的过程。 
图7示出了加载分布的Q存储器块的过程。 
图8示出了存储器控制模块的框图。 
图9示出了行/列数学模块的框图。 
图10示出了处理器块模块的框图。 
图11a至11d示出了在处理器块的配置中4个连续阶段;以及 
图12a至12f示出了说明系统优选实施例的操作的处理器块定时图。 
具体实施方式
现参照图2,这示出了包括NMF硬件以执行TMA(整体矩阵寻址)的OLED显示驱动器系统200。如所示,系统具有视频供给输入,并提供行和列驱动数据输出204、206用于驱动TMA驱动显示器(未示出)。以后将描述用于实现图2的系统,具体是用于执行引言中所描述的优选NMF计算的NMF硬件加速器的优选实施例。然而,可以理解图2示出了映射到许多功能块的系统的操作,并且在硬件实施例中(如后所示),将硬件块至这些功能的分配与所示块的功能分配不同。例如,可以通过在数字信号处理器(DSP)上运行的软件控制以后描述的硬件加速器,以实现示出的所有(非NMF)功能块的一些。然而在一些优选实施例中,实质上所示出的所有功能在FPGA上实现。
继续参照图2,块A208执行缩放(scaling)。具体地,该块执行以下功能: 
1.从视频输入202读取一个(下一个)下一帧,将所述帧缩放至所期望的分辨率,例如360×160分辨率(优选地使用平均而不是采样以进行缩放),将所述帧存储在具有每颜色8位的V存储器210中,可选地在执行颜色转换之后(见下文)。当读取时,也(通过伽马查找表,见以下块B的步骤2)计算了所述帧的平均亮度,并存储为寄存器av 212中的16位值。 
2.计算iRC=sqrt(av/160),存储为寄存器av 212中的8位值。 
3.向块B216标记完成。 
4.等待来自块B的完成标记。 
5.循环回步骤1。 
块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的完成标志,然后循环回1。 
块C218执行硬件加速NMF功能。具体地,该块执行以下功能: 
1.等待来自块B的完成标记。 
2.执行NMF功能,如以下所规定的。 
3.向块D和B标记完成。 
4.循环回1。 
块D 220执行管线后处理。具体地,该块执行以下功能:
1.设置缓冲器1222至空白显示器(C'=R'=i=0;t=1) 
2.保留缓冲器2224。 
3.向块B 216标记完成。 
4.等待来自块C 218的完成标记。 
5.产生R’,C’,t和i,例如如下所描述,并写入当前缓冲器。 
6.将新缓冲器准备好发信号至输出控制块226,并等待确认。 
7.交换缓冲器。 
8.循环回至3。 
输出块226E和F执行输出控制功能。这些块从帧缓冲器读取数据,并将数据输出至行和列驱动器。图3示出了针对图2系统的示例行驱动器电路的细节,以类似方式确定图1b的设置的行驱动比率。同样可以采用图1b中所示的列驱动器电路。如果期望地适合,则可以使用列驱动器集成电路,例如来自瑞士STMicroelectronics的STV8810(针对彩色/单色无源矩阵的384列驱动器),在这种情况下,系统可以产生定时信号用于驱动该IC。每个驱动器204、206通过移位寄存器对子帧数据进行计时(clock),并且当所有数据就位,数据和先前的子帧已超时的时候,“加载”数据,然后驱动显示器。如果优选地,可以使用一个数据端口,则数据权标(token)通过行驱动器计时进入列驱动器。也通过列驱动器的串行端口在实施例中设置列驱动器的电流输出。如果必要,可以通过串行端口设置列驱动器。优选地,如下所述,通过系统控制子帧定时(t)。在开启子帧显示器期间,加载针对下一个子帧的数据。 
在一个实施例中,平均的加载具有520(360+160)的数据采样的时间是1/(90Hz)/(160子帧)=69μs。子帧时间在10μs和11ms之间变化,因而最大所需输出数据率是47MB/s。在该实施例中,像素时钟在时间t内计时63次,并且最小t是10us,给出6.4Mhz的最大时钟速率。最大t是11ms,给出5.7kMz的最小时钟速率。优选地,时钟准确度应该足够实质上保证在时间t内的63个周期。如果针对子帧t是0,则跳过该子帧(可能存在连续的具有0时间的子帧)。 
接下来更详细地描述显示器数据处理,具体地预处理、基本核心NMF 过程的一个实施例、后处理、以及其它可选但是期望的组件。在优选的实施方式中,系统能够以实质上完全视频速率(每秒25帧)运行。 
表1 (下面)给出具有存储需求的每个变量的大概描述。 
变量      存储(位)              通过...访问         注解 
V         360 x 160 x 8         A,B                原始图像(灰度值) 
av        16                    A,B                V的平均亮度 
iRC       8                     A,B                R和C的初始值 
Q         360 x 160 x 17±      B,C                V和R×C之间的残余误差 
R         160 x 160 x 8         B,C,D             电流行矩阵 
C         360 x 160 x 8         B,C,D             电流列矩阵 
W         360 x 160 x 2         B,C                可选加权矩阵 
iRC’     8                     B,C                针对R和C初始化的值 
输出缓冲器2 x 555,840          D或输出控制         对输出矩阵进行双缓冲 
                                F,E 
C’      360x160x6              D,E                输出列定时 
R’      160x160x8              D,F                输出行电流率 
i        160x3x6                D,E                子帧RGB参考电流 
t        160x10                 D,输出控制         子帧定时 
±=带符号的。所有其它值均不带符号。 
表1--变量摘要 
首先描述优选的预处理,尤其是色域位移。 
针对三个(可选地四个—见以下)矩阵、Q,R和C以及iRC操作主要过程。基于保持在矩阵V中的所输入图像的一些简单操作,启动(seed)这些矩阵。V保持图像的8位灰度值,而不是非伽马像素亮度,从而节约空间。 
从视频源读取图像,将所述图像缩放(通过像素平均)至显示器的分辨率,并将图像旋转以与显示器的格式匹配。结果存储在V中。
下述方程描述了所需计算的残余部分。所指的gamma()函数是将8位灰度值与16位亮度值相关的查找表。该查找表可以假设具有映射至65024的最大8位值(255)的2.4伽马。该伽马函数也可以使用针对以下R’,G’,B’的方程执行颜色转换,以将所输入的RGB信号修正为PLED(聚合体LED)基色的颜色。可以将指定的矩阵M编程并存储为带符号的12位整数的阵列。初始地,可以将矩阵设定为256*单位矩阵。 
R'=(M11R+M12G+M13B)/256 
G'=(M21R+M22G+M23B)/256 
B′=(M31R+M32G+M33B)/256 
av = average ( gamma ( V xy ) )
iRC = ( av / 160 ) 0.5
Q xy = gamma ( V xy ) - av
最后,应该设定R和C的所有元素等于iRC。可以在V的读入期间计算av的值,例如通过在块A和B中均使用伽马查找表,两者都不需要同时访问。然后,可选的实施方式是可以的。 
再参照块C 218(硬件加速的NMF),在一个实施例中,基本过程针对每个迭代i(i=1至20),并针对每个迭代内的每个子帧p(p=1至160)按顺序执行以下四个步骤(方程)。 
针对每个x和y;  Q xy = Q xy + R py C xp
针对每个y;  R py = 360 * bias * iRC + Σ x Q xy C xp 360 * bias + Σ x C xp C xp
针对每个x;  C xp = 160 * bias * iRC + Σ y Q xy R py 160 * bias + Σ y R py R py
针对每个x和y;Qxy=Qxy-RpyCxp
固定值bias是权重,可以是零,但在实施例中,可以具有64至128之间的值。例如在5至100的实施例中,针对每个子帧执行大约20次迭代。将针对Rpy和Cxp获得的值优选地舍位为R和C的无符号8位存储(并 设定至适合的范围(如果<0或>25))。在针对Rpy和Cxp的方程中,分母不改变,因而不需要针对每个y(针对Rpy)或x(针对Cxp)重新计算分母(但这不是以下讨论的一些变量的情况)。优选地,分子和分母的临时存储值具有直到做除法时才损失精确度的足够的位。优选地,用管线输送硬件NMF,以允许上述四个方程中和/乘积元素中的两个或多个的实质上的并行评估。 
接下来描述在优选实施例中执行缩放以基本上允许来自图2的系统的列电流(通过脉冲宽度调制)和行比率的直接驱动的后处理。可以以多种不同的方法执行该后处理,但是通过以下方程示出一般步骤。技术人员可以理解可以根据特定应用修改给定的缩放因素等。 
因而,在一个实施例中,处理用于输出的保持在R和C中数据所采用的步骤如下: 
针对每个p,  R p max = max ( R py ) 和  C p max = max ( C xp )
然后: 
T = &Sigma; p R p max C p max
并且通过以下给出子帧时间tp: 
t p = 2 10 R p max C p max T , 舍位至10位 
如果tp的值溢出(只有在当只有一个子帧包含任何信息时的情况下),可以将其设定为1023。 
现在使用tp和列参考电流缩放C(在优选实施例中,自动地对行调整比率,例如参照图1b所描述的类型的行驱动器,但是在其它实施例中可以针对每行计算特定行驱动值): 
针对每个p:  R p sum = &Sigma; y R py
并且
i pc = R p sum C p max i 0 c 10000 t p , 优选地针对红、绿和蓝的每个舍位至6位,其中iOc是三个6位值的组,优选地在外部可编程,表示针对红、绿和蓝像素的标称参考电流。示例缺省值是51,39,51。 
然后优选地缩放(伸展)C至适合的PWM驱动给定
Figure G2007800190644D00192
(但在其它实施例中PWM时钟可以改变): 
C xp &prime; = 63 C xp R p sum i 0 c 10160 i pc t p , 舍位至6位 
在该方程中,x值以RGBRGB……的颜色顺序,所以针对x=1,使用io1和ip1,针对x=2,使用io2和ip2等。然后 
针对每个p,  R xp &prime; = 2 n R xp , 以致于  128 &le; 2 n R p max &le; 255 .
然后列和行显示驱动器具有
Figure G2007800190644D00196
Figure G2007800190644D00197
针对上述步骤的修改是可能的。例如基于图像绿色通道上比红或蓝通道上的噪音更显而易见的观察,针对一些额外计算,可以减少感知颜色噪声。这针对基本的NMF过程将上述方程修改如下: 
针对每个y;  R py = 360 * bias * iRC + &Sigma; x Q xy C xp cw x 360 * bias + &Sigma; x C xp C xp cw x
其中颜色权重
Figure G2007800190644D00199
另一个变体减少低灰度噪声(但需要极大的额外计算),但在最终图像中提供潜在地很大的改进。上述过程使屏幕上产生的图像的线性误差最小化。然而,由于感知是高度非线性的,所以这有助于以低亮度等级产生增加的感知误差(1位改变表示更大的百分比改变)。这可以通过包括基于V的加权因子W进行校正(根据实施方式而可选)。在该实施例中,将W定义如下(注意先前所指的权重Wxyp是一般化的加权因子):
W xy = 0 192 &le; V xy < 255 1 106 &le; V xy < 192 2 54 &le; V xy < 106 3 0 &le; V xy < 54
使用W修改NMF方程如下: 
针对每个y;  R py = 360 * bias * iRC + &Sigma; x Q xy C xp 2 ^ W xy 360 * bias + &Sigma; x C xp C xp 2 ^ W xy
针对每个x;  C xp = 160 * bias * iRC + &Sigma; y Q xy R py 2 ^ W xy 160 * bias + &Sigma; y R py R py 2 ^ W xy
此外,也可以包括以上提及的颜色加权因子,例如通过增加W至三位并针对每个绿色像素增加1,或通过针对每个绿色列对位移位进行硬编码(hard-coding)。包括该附加特征需要针对每个比率重新计算分母,因而及大地增加每次迭代所需的计算数量。作为对此的平衡,所产生的解较好,且收敛更快。 
现进一步描述针对该系统的优选硬件结构的细节。 
硬件实施方式-细节
现描述在Xilinx Virtex-4 SX35 FPGA上实现的硬件实施方式,该实施方式实现针对每160个子帧具有20次迭代的25fps的帧速率。该实施方式包括如上所述的数据的前和后处理。 
以前述相似的方式,该过程的一次迭代包括以下方程的NUM_ITERATIONS次迭代执行,一次针对每个子帧p: 
Qxy=Qxy+RpyCxp             (1) 
R py = 360 &times; bias &times; iRC + &Sigma; x Q xy C xp 360 &times; bias + &Sigma; x C xp C xp - - - ( 2 )
C xy = 160 &times; bias &times; iRC + &Sigma; y Q xy R py 160 &times; bias + &Sigma; y R py R py - - - ( 3 )
Qxy=Qxy-RpyCxp                                       (4) 
其中 
0≤x≤NUM_COLS-1 
0≤y≤NUM_ROWS-1 
0≤p≤NUM_SUBFRAMES-1                                (5) 
bias是某个加权值,且iRC是针对行和列存储器的初始值。 
该算法以设定等于目标图像或等于从中导出的图像矩阵的矩阵Q开始。该矩阵保存在存储器中,并具有NUM_ROWS x NUM_COLS的维度,其中R和C存储器的所有元素设定等于iRC。由于算法使用NUM_SUBFRAMES子帧,所以用于保存R和C数据的存储器的大小分别为NUM_ROWS×NUM_SUBFRAMES和NUM_COLS×NUM_SUBFRAMES。 
现描述通过处理器块基于第一对方程(1和2),以及第二对方程(3和4)的逐对计算,针对速度的这些方程的并行实施方式。一般来说,通过每个处理器块执行部分计算,以及在FPGA中复制多个这样的块,允许立即读取和计算Q,R和C的多于一个值。用这种方法,获取在算法操作中的速度增加,足够以25fps的速率计算所需的行和列矩阵R和C。 
图4a示出了并行硬件结构400的示意图,其中将Q存储器分段且包括x_blocks×y_blocks处理器块402,每个处理器块包含Q存储器的p×q段,其中: 
p = NUM _ COLS x _ blocks
q = NUM _ ROWS y _ blocks - - - ( 6 )
存储器控制器块404通过适合存储器位置的传输进和出。在相同行中的所有处理器块402共享公用的C存储器406,且相同列中处理器块共享相同的R存储器408。将来自每个处理器块的部分结果传递至它的近邻; 继续这种传递直到到达组合器(数学)块410和412,其中将结果组合,并执行方程2和3所需的除法。 
通过full_proc模块500(在图5中示出)实现图4a中示出的并行硬件结构400,所述full_proc模块500定义硬件的输入和输出,并通过处理器块402的复制实现TMA(完全矩阵寻址)NMF过程的加速计算。在图4a中,如后所描述,这些处理器块402*之一是主处理器块,并向其它处理器块提供控制信号(虚线表示),以节省复制该控制电路。 
将公共C(列)存储器406分成块,每个块处理一组列(存储用于一组列的数据);将公共R(行)存储器408进行类似地逻辑地分割。这在图4b和4c中示意性地示出,其中将针对360列的数据在10个处理器块中“水平地”分割,每个处理器块处理36列,并且将针对160行的数据在8个处理器块中“垂直地”分割,每个处理器块处理20行。因而,一般来说,硬件具有平铺式处理器结构,其中每个处理器具有北、南、东和西数据连接,通过这些连接,处理块彼此形成菊花链(daisy-chained)。如所示,结果数据通过处理器块朝着相应的列和行数学块和存储器流向北和西。 
矩阵Q以分布式方式存储在处理器块中,在该示例中每个块具有36×20的字存储器区域,优选地双端口,从而可以同时地读出和写入。优选地,将其复制,从而一旦使用Qxy更新方程(3)中的Cxp的第一值,则可以对方程(4)进行求值,在不影响C)的后续值计算的情况下更新Q。将矩阵Q存储在处理器块中,但从离开(leave)—它只是存储残余误差用于更新R和C。 
行中的每个处理器块与它所处理的行组的(读/写)数据总线r相连;类似地,列中的每个处理器块与它所处理的列组的(读/写)数据总线c相连。 
为了解释这些数据总线的操作,在硬件的一个版本中,针对所讨论的36列×20行的示例,考虑需要针对处理器块的r和c值的完整的组的计算:为了访问列和行数据块,声明r_valid信号,同时输出r值的索引0,声明c_valid,且读取相应(36)c值。之后,将c_valid去声明(de-assert)一个时钟周期,然后再声明,然后针对r_index=1读取相同组36c值,等等 直到读取针对块的所有r值。然后将c_valid和r_valid去声明。在硬件的另一个版本中,针对每个r值同时读取c值的完整的组;可选地,可以针对每个c值同时读取r值的完整的组,或可如前所述顺序地读取针对块的r和c值,在针对每个c值的块的r值的完整的组中(而不是针对每个r值的c值的组中)读取。本领域技术人员会理解,一般地,将根据特定乘积的计算需要的顺序选择读取数据的顺序。之后参照图11更详细地描述在优选实施例中期望计算的乘积。 
每个处理器块具有(结果)数据输入和输出,并且这些处理块形成如图4a所示的菊花链(连结至每个链的输入端的0)。由于来自所有处理器的结果已同时就绪,所以数据(单个标量结果值)沿着链式结构以每时钟周期一个块的速率位移至数学块410、412。因而,例如使用10个时钟周期来向西沿10个处理器块传递(标量)结果用于累积,并通过数学块进行进一步处理,随后存储在行存储器中。 
现参照图5,示出了full_proc模块500的框图(实现完全TMA过程),尤其示出了与模块的外部连接。在以下表2中给出针对优选实施例的图5中示出的每个信号的类型、宽度和描述。 
Figure G2007800190644D0024172748QIETU
表2 
在优选实施例中,将full_proc模块500初始化为: 
1.将适合的时钟信号施加至clk_in 
2.最初将reset_in设置为高,然后在100ns之后设置为低。 
3.在reset_out信号变低之前没有数据传递至full_proc。由于这是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线NUM_ROWS×NUM_SUBFRAMES和NUM_COLS×NUM_SUBFRAMES时钟周期(即将iRC写入所有的行和列)。 
2.应该将信号kr_bias,kc_bias,kr_bias_iRC和kc_bias_iRC总是设置为正确值,其中
kr_bias=NUM_ROWS×bias 
kc_bias=NUM_COLS×bias 
kr_bias_iRC=NUM_ROWS×iRC×bias 
kc_bias_iRC=NUM_COLS×iRC×bias 
                                                 (7) 
通过沿向南的方向顺序移位通过处理器块,将Q存储器数据载入每个处理器存储器,正如图7的箭头所描述的(也可以看出,这也涉及将图像像素重新排列成Q存储器中的位置)。同时访问每个处理器Q块存储器的列。 
所有分段的Q存储器的加载需要NUM_COLS×NUM_ROWS时钟周期,所以针对加载Q存储器的优选过程是: 
当图像矩阵的第一值传递至full_proc时,声明信号Q_valid,且当以Q矩阵的值加载Q存储器时,针对NUM_COLS×NUM_ROWS保持高。 
现描述图5示出的full_proc模块的子模块的操作的细节。以rc_mem_control开始。 
如图8所示,与rc_mem_control模块的连接包括数据加载和卸载信号、行/列存储器控制线路、以及调试信号。rc_mem_control模块用作针对行和列存储器的存储控制器。响应内部状态机的当前状态,rc_mem_control提供针对行和列存储器的适合地址。在以下表3中提供图8中所示的每个信号的描述。 
  
信号 类型 宽度 描述
init_cols/rows 输入 - 用户提供iRC值
row_col_math_c/r 输入 - 连接至row_col_math块
c/r_valid_in 输入 - 控制c/r_write_address的增量。这取决于row_col_math块是指示存在将数据写回的有效行还是列
finished_loading_Q 输入 - 来自高层模块的输入指示已经载入Q存储器
c/r_read_address 输出 [12:0][11:0] 控制R和C的矢量从行/列存储器至处理器块的端口A的读出。在初始状态4’b000中,这些线路包含针对R和C加载和卸
  
      载的相应读取地址。
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][8:0] 控制至行/列存储器的端口A的写访问。只在状态4’b0000中允许写入
c/r_bram_number 输出 [3:0][2:0] 当前正在被读取的行或列存储器号,分别针对行和列在范围0至p-1或0至q-1
c/r_enb 输出 - 在数据加载和卸载状态期间禁用R和C存储器的端口B
c/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] 迭代数量
表3 
在优选实施例中,采用状态机以确定对哪些存储器位置进行访问,这取决于求值的方程。在以下表4中给出状态机的值、rc_mem_control模块的操作和求值的方程之间的关系,有效地定义了机器的功能。 
Figure G2007800190644D00271
表4-rc_mem_control模块的内部状态机 
现描述根据图9示出的框图描述row_col_math_c和row_col_math_r模块。 
row_col_math块的功能是获取来自proc块的数据,相应地特别如方程2和3所描述的累加并执行除法。由于除法器块在资源上比较昂贵,所以方程2、3的被除数被计算为乘以了分母倒数的分子。由于针对所有的处理器块分母的倒数是相同的,所以只需要在row_col_math主块中计算该值,然后传递至从块。因而,只有主块包含除法器,其余从块执行相对简单的乘法。
当累加
Figure G2007800190644D00281
Figure G2007800190644D00282
时,将它们传递至除法器块,以计算它们的倒数。然后将乘以1031的结果传递至乘法器以有效地执行方程2和3所需的除法。由于与累加相比,倒数计算需要较长的时间,所以使用FIFO以保持中间结果。在以下表5中提供了图9中示出的每个信号的描述。 
Figure G2007800190644D00283
表5 
现描述处理器块,其中一个示例在图10中示出。执行方程1-4描述的部分计算的proc块包括以下组件: 
1.两个“DSP48”(乘加)块;这些执行方程2和3要求的乘加功能 
2.作为分段的Q存储器的块RAM 
3.针对Q存储器的地址生成器 
4.控制器,例如确定计算的开始和结束,以及处理器块计算1和2或3和4哪对方程的状态机。 
如前所提及,如图4a所示的方式连接处理器块的一个优势在于,由 于所有块之间的互连,所以一个处理器块可以用作主块,且其它处理器块可以用作从块。在这种设计中,实际节省逻辑结果的数量,由于尽管主块包含所有组件1-4,所以从块不包含地址生成器或状态机。 
以下表6示出了主处理块的操作、其内部状态机的状态和求值方程之间的关系,有效地定义了该机器的功能。 
Figure G2007800190644D00291
表6处理器块的内部状态机 
通过北、南、东和西数据和数据有效线实现full_proc模块中的数据在单独处理器之间的运动。当声明c_shift和r_shift时,指示数据要移动,则将来自d_south和d_east的数据锁存在相邻处理器块的d_north和d_west。对当每个处理器块完成计算时声明的数据有效线路dv_north、dv_south、dv_east和dv_west也同样适用。以这种方式,将数据向full_proc模块的北和西移动,从而数据总是可以到达行/列数学块。以下表7中提供了图10中示出的每个信号的描述。
Figure G2007800190644D00301
表7 
接下来参照图11a至11d,这些示出处理器块402配置中的四个连续阶段。如图11a所看出,处理器块包括用于存储矩阵Q部分的BRAM(块随机访问存储器)1100。该存储器是例如图11b和11d所示的双端口;在一个实施例中,提供36×20的16位存储器位置。两个数字信号处理模块1102、1104(针对前述FPGA称为“DSP48”)也包括在处理器块402中。这些模块中的每个包括与加法器1108耦合的乘法器1106;模块1104中的一个配置作为乘加单元。通过复用器(图11中未示出),DSP模块1104、1106的输入是可选择的,所述复用器允许DSP模块的数据输入与行r或列c总线、或与Q存储器块1100的选择连接。处理器块402也包括用于同步的计时的锁存器。具体地,锁存器1110锁住单个标量结果值,从而可以沿处理器块链传递结果数据。这些锁存器具有可选择输入,采用复用器1112以锁住DSP模块的输出或来自链中前面处理器块的数据。如图11d中可看出,处理器块1102中的加法器也可配置为减法器。图11d也示出了用于存储来自Q块存储器1100的缓冲器1114,用于如前所提及执行实际并行的方程3和4的计算。 
继续参照图11a和11d,在图11a中,如所示,配置DSP模块用于计算c.c。因而,在前述示例中处理器块接收C的36个值以执行该计算。然后如图11b所示重新配置处理器块,从而DSP模块1102计算如所示的Q值组,同时DSP模块1104计算如所示的Q和C的积。针对该计算,可以针对R的20个值中的每个提供C的36个值。在图11a和11b中,将结果数据从东传到西。
在图11c中,类似于图11a配置处理器块402,以计算r.r,并且将结果数据向北传递。在图11d中,配置处理器块402以计算Q的更新值,并累加沿处理器块链向北传递的Q和R的乘积。如前所提及,上述方程2和3的除法只需要在相应行和列数学块之一中执行一次,且可以通过乘以倒数来实现。 
接下来参照图12a至12e进一步描述硬件,尤其是处理器块的操作。首先描述算法第一半的求值。 
算法的第一半首先求值: 
d=c p·c p                  (8) 
然后,同时: 
Qnew=Q+r p·c p          (9) 
r &OverBar; p new = k n + Q new c &OverBar; p T k d + d - - - ( 10 )
其中,kn和kd是适合的常数。 
在优选实施例中,由于c p一般地通过处理器块北-南运行,所以只需要最北边(即顶部)的块来计算出方程(8)。首先将其计算出,从而由于处理器块通过(pass out)部分
Figure G2007800190644D00322
的和,所以方程(10)的分母可以就绪。将方程9计算出,且完全地内部地存储在处理器块中。图中所有的信号在它们的完全示例名称之后,例如,信号r_valid出现为‘/proc_test2_tb_v/uut/r_valid’。 
图12a中的定时图示出了针对方程(8)传递至顶部、最左边块(即最北边、西边的块)的数据。当声明信号c_valid时,接收c的36值。不需要定义总线信号r(方程8不需要)。将顶部处理器块的结果部分c p·c p的和放置在处理器块的寄存器中,然后向西通过d_east至d_west传递;通过适合的数学块累加。(信号dv_east指示有效数据从东边进入处理器块,并且dv_west指示有效数据从处理器块出来向西)。 
图12b和12c示出了提供的数据的定时,来计算方程9和方程10。具 体地12b示出了针对传递至顶部、最左边块的第一两个行值的定时图,并且12c示出了针对传递至顶部、最左边块的所有数据的定时图。此外,将部分和从东向西传递(在行和列数据的每次供应之后,且在下一次行和列数据值的供应期间),来通过数学块累加,因而存储在行存储器中,易于算法的第二半。 
现描述算法第二半的求值。 
算法的第二半首先进行以下求值: 
d = r &OverBar; p &CenterDot; r &OverBar; p - - - ( 11 )
然后,同时:  c &OverBar; p new = k n + r &OverBar; p T Q new k d + d - - - ( 12 )
Q new &prime; = Q new + r &OverBar; p &CenterDot; c &OverBar; p new - - - ( 13 )
因为方程13需要c p new(求值需要时间---必须首先算出方程12),在没有内部延迟Qnew的情况下处理器块不能同时计算出方程。图12d示出了针对传递至顶部、最左边块的所有数据的定时图,以计算出方程4。将块的部分和从南向被传递。 
在计算出r p·r p之后,计算处c p new的第一值。为了防止在每次r_valid脉冲之后停止(stall)(针对乘法器等待时间会需要停止以计算出c p new),与方程13相比,方程12提前了一个r_valid脉冲;并且通过2×R_BLOCK_SIZE=40在处理器块中内部地对Q进行缓冲(从而利用Q的正确值乘以正确值r p)。这在针对方程12的图12e中示出,该图示出了针对传递至顶部、最左边块的所有数据的定时图。 
由于同时计算出方程12和13,所以图12f示出针对传递至顶部、最左边块的所有数据的定时图。将部分c p new的和从南向北传递至列累加器块,其中计算出c p new并存储在列存储器中,易于下一次迭代。 
可选地但是优选地,硬件也可以包括输入数据预处理器。这可以实现下列功能的一个或多个:针对4:2:2亮度色度数据的解码器、颜色空间转换器(如上所述,可以包括矩阵乘法器以计算R',G',B'),以及针对隔行的视频用于执行平均功能的模块(在x方向超过2行、4个像素,即2×4阵列)。
上述技术的实施例提供图像数据处理,所述图像数据处理使具有比有源矩阵TV大小屏幕稍高功耗及更低成本的无源矩阵TV大小屏幕(例如8”及以上)成为可能。硬件加速器也可用于序言部分所提及的各种其它应用。因而,在实施例中,数据在多个组中存在,且目标包括来自一个或多个轴上的每个组的数据,以及在另一轴上数据的属性(例如类型组、类别或减少的参数分析)。在实施例中,属性是附加的,从而跨越多个组的组件或属性的和是有意义的。可以采用这些技术针对脸部和其它图像匹配/识别处理图像数据用于网络安全—例如用于通过基于内容的文本过滤来处理构建的用户预置文件的语义表示;用于处理数据库中的多元数据以针对传感器数据处理的多个不同类型提供所输入数据的减少的表示,例如以执行主要的组件分析;用于微阵列数据或诸如基因、蛋白质组、核苷、或氨基酸序列数据的生物序列数据的处理、分析或组件分析,例如来找到在表达空间中的本地化特征或识别结合或交互位置;用于机器学习,例如用于分析描述对象或诸如图像、声音、文本或单词等的对象部分,且一般地用于数据分析和模式识别。 
毫无疑问,对本领域技术人员来说可以出现多个其它的有效选择。可以理解本发明不限于所述的实施例,以及包括所附权利要求的精神和范围内对本领域技术人员显而易见的修改。

Claims (19)

1.一种矩阵因式分解硬件加速器,用于确定当相乘时逼近目标矩阵的一对因式矩阵(R;C),所述硬件加速器包括:
输入端,用于接收表示所述目标矩阵的输入数据矩阵;
第一因式矩阵存储器,用于存储第一因式矩阵R的行和列数据,所述第一因式矩阵存储器具有多个第一数据总线,每个第一数据总线都与所述第一因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第一因式矩阵列数据;
第二因式矩阵存储器,用于存储第二因式矩阵C的行和列数据,所述第二因式矩阵存储器具有多个第二数据总线,每个第二数据总线都与所述第二因式矩阵存储器的相应块相关联,用于访问存储在所述相应块中的第二因式矩阵行数据;
处理器块矩阵,每个处理器块均具有:与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出端;处理器存储块,用于存储表示所述一对因式矩阵的乘积和所述目标矩阵之间的差的矩阵Q的一部分;以及数据处理器,包括至少一个乘加单元,其中所述乘加单元包括与加法器耦合的乘法器,所述数据处理器具有与所述处理器存储块耦合的第一输入端,以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端;以及
控制电路,用于控制将数据从所述输入端写入所述处理器块矩阵的所述处理器存储块中,控制从所述第一和第二因式矩阵存储器中读取数据,以提供给所述处理器块矩阵,以及控制将从所述结果数据输出端得到的数据写回至所述第一和第二因式矩阵存储器,以执行所述矩阵因式分解,其中所述矩阵因式分解包括非负矩阵因式分解NMF。
2.如权利要求1所述的矩阵因式分解硬件加速器,其中每个所述处理器块具有与所述处理器存储块耦合的第三处理器块数据总线,且所述处理器存储块配置用于存储所述矩阵Q的一部分,所述矩阵Q的一部分具有与由所述第一数据总线访问的所述第一因式存储器列数据的行数据项的数目相对应的第一尺寸,并且具有与由所述第二数据总线访问的所述第二因式存储器行数据的列数据项的数目相对应的第二尺寸。
3.如权利要求2所述的矩阵因式分解硬件加速器,其中所述处理器块具有一对所述第三处理器块数据总线,用于分别向所述处理器存储块写入数据和从所述处理器存储块读取数据,并且通过所述第三处理器块数据总线将所述处理器块连接成链结构,以允许数据依次流经每个所连接的处理器块。
4.如权利要求1所述的矩阵因式分解硬件加速器,其中所述处理器块具有两个所述结果数据输出端和两个结果数据输入端;且所述处理器块矩阵包括经由所述结果数据输入端和输出端,沿两个方向中的每一个连接成链结构的处理器块矩形矩阵,每个所述结构允许数据依次流经所述结构的每个所连接的处理器块。
5.如权利要求1所述的矩阵因式分解硬件加速器,还包括与所述第一和第二因式矩阵存储器相关联的第一和第二数学块,用于累加从所述处理器块矩阵接收的数据,以写回至相应的所述第一和第二因式矩阵存储器中。
6.如权利要求5所述的矩阵因式分解硬件加速器,其中所述第一和第二数学块中的每一个均包括主数学块和一个或多个从数学块,并且所述主数学块包括具有至所述一个或多个从数学块的输出端的除法器单元,且所述一个或多个从数学块中的每一个均包括具有与所述除法器单元输出端耦合的输入端的乘法器单元。
7.如权利要求5所述的矩阵因式分解硬件加速器,其中所述第一和第二因式矩阵存储器包括双端口存储器,以同时允许针对所述处理器块的读访问和针对所述数学块的写访问。
8.如权利要求1所述的矩阵因式分解硬件加速器,其中所述处理器块包括主处理器块和多个从处理器块,并且所述主块配置用于在所述从处理器块中控制所述处理器块存储器的地址,和/或所述从处理器块中的所述数据处理器的操作。
9.如权利要求1所述的矩阵因式分解硬件加速器,其中所述乘加单元具有与所述第一和第二处理器块数据总线耦合的第一和第二乘法输入端,与所述处理器存储块的读输出端耦合的加法输入端,以及与所述处理器存储块的写输入端耦合的加法输出端,且所述数据处理器包括配置作为乘-累加单元的另一乘加单元,所述乘-累加单元具有与所述乘加单元的加法输出端耦合的乘法输入端,所述乘-累加单元具有与所述第一和第二处理器块数据总线之一选择性耦合的另一乘法输入端,且具有与所述数据处理器输出端耦合的输出端。
10.如权利要求1所述的矩阵因式分解硬件加速器,其中所述处理器存储块包括用于存储所存储的矩阵Q的所述部分的副本的缓冲器,且所述数据处理器同时以所存储的矩阵部分的两个不同版本进行操作。
11.如权利要求1所述的矩阵因式分解硬件加速器,其中所述数据处理器配置用于以第一位长的变量进行整数运算,且所述处理器存储块配置用于存储所述第一位长两倍的整数变量。
12.如权利要求1所述的矩阵因式分解硬件加速器,其中所述数据处理器配置用于针对与所存储的矩阵Q部分相对应的数据执行以下操作:
Q xy = Q xy + R py C xp ; &Sigma; x C xp C xp ; &Sigma; x Q xy C xp ;
&Sigma; y R py R py ; &Sigma; y Q xy R py ; Q xy = Q xy - R py C xp
其中xy、py和xp分别标记Q、R和C的列和行。
13.一种集成电路,包括如前述任一权利要求所述的矩阵因式分解硬件加速器。
14.一种OLED显示驱动器,包括如权利要求1至12之一所述的矩阵因式分解硬件加速器。
15.一种用于矩阵因式分解的集成电路IC,其中所述矩阵因式分解包括非负矩阵因式分解NMF,所述IC包括:
输入端,用于接收表示目标矩阵的、用于因式分解为第一和第二因式矩阵(R;C)的输入数据矩阵;
多个第一数据总线,每个用于访问在第一因式矩阵存储器R块中所存储的数据;
多个第二数据总线,每个用于访问在第二因式矩阵存储器C块中所存储的数据;
处理器块矩阵,每个处理器块均具有:与所述第一数据总线之一耦合的第一处理器块数据总线,与所述第二数据总线之一耦合的第二处理器块数据总线,以及结果数据输出端;处理器存储块,用于存储表示所述一对因式矩阵的乘积和所述目标矩阵之间的差的矩阵Q的一部分;以及数据处理器,包括至少一个乘加单元,其中所述乘加单元包括与加法器耦合的乘法器,所述数据处理器具有与所述处理器存储块耦合的第一输入端、以及与所述第一和第二处理器块数据总线之一或二者耦合的第二输入端,并具有与所述结果数据输出端耦合的输出端;以及
控制器,用于控制所述矩阵因式分解。
16.一种使用如权利要求1所述的矩阵因式分解硬件加速器对非负矩阵因式分解NMF因式分解进行硬件加速的方法,所述因式分解包括迭代地确定:
Qxy=Qxy+RpyCxp,针对每个x和y            (1)
R py = bias + &Sigma; x Q xy C xp W xyp bias + &Sigma; x C xp C xp W xyp , 针对每个y                                    (2)
C xp = bias + &Sigma; y Q xy R py W xyp bias + &Sigma; y R py R py W xyp , 针对每个x                                    (3)
Qxy=Qxy-RpyCxp,针对每个x和y            (4)
其中,每次迭代中,针对每个p值,对方程(1)至(4)进行求值,以及Wxyp包括加权因式,所述方法包括,针对每个p:
将Q存储在分布在相应多个处理器块上的多个存储块中;
对方程(2)的分母进行求值;
实质上同时跨所述多个处理器块,对方程(2)的分子和方程(1)的基值进行求值,以确定Qxy和Rpy
对方程(3)的分母进行求值;以及
实质上同时跨所述多个处理器块,对方程(3)的分子和方程(4)的基值进行求值,以确定Cxp和Qxy
17.一种使用如权利要求1所述的矩阵因式分解硬件加速器对非负矩阵因式分解NMF因式分解进行硬件加速的系统,所述因式分解包括迭代地确定:
Qxy=Qxy+RpyCxp,针对每个x和y            (1)
R py = bias + &Sigma; x Q xy C xp W xyp bias + &Sigma; x C xp C xp W xyp , 针对每个y                                    (2)
C xp = bias + &Sigma; y Q xy R py W xyp bias + &Sigma; y R py R py W xyp , 针对每个x                                    (3)
Qxy=Qxy-RpyCxp,针对每个x和y            (4)
其中,每次迭代中,针对每个p值,对方程(1)至(4)进行求值,以及Wxyp包括加权因式,所述系统包括:
将Q存储在分布在相应多个处理器块的多个存储块中的装置;
对方程(2)的分母进行求值的装置;
对方程(2)的分子和方程(1)的基值进行求值的装置;
对方程(3)的分母进行求值的装置;以及
实质上同时跨所述多个处理器块、对方程(3)的分子和方程(4)的基值进行求值、以确定Cxp和Qxy的装置。
18.一种包括如权利要求17所述的系统的显示驱动器或显示器。
19.一种非负矩阵因式分解NMF硬件加速器,用于将输入矩阵Q因式分解为一对第一和第二因式矩阵(R;C),所述硬件加速器包括:
第一存储器,用于存储所述第一因式矩阵R的元素;
第二存储器,用于存储所述第二因式矩阵C的元素;
处理器网格,与所述第一和第二存储器耦合以并行执行多个NMF操作;
控制器,用于控制将所述输入矩阵Q写入所述处理器网格,并控制所述处理器将所述第一和第二因式矩阵的元素写入相应的所述第一和第二存储器;以及
将所述处理器分别与所述第一和第二存储器相连的多个第一数据总线和多个第二数据总线,
其中每个所述处理器均包括用于存储所述输入矩阵Q的一部分的存储区域,以及
每个所述处理器均包括至少一个乘加单元,其中所述乘加单元包括与加法器耦合的乘法器,并具有第一输入端,用于接收从所述处理器存储区域得到的数据,并具有与所述第一和第二数据总线之一耦合的至少一个第二输入端,并且配置用于执行所述NMF操作,以向所述第一和第二存储器之一或二者提供数据。
CN2007800190644A 2006-03-23 2007-03-21 矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器 Expired - Fee Related CN101454773B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0605748A GB2436377B (en) 2006-03-23 2006-03-23 Data processing hardware
GB0605748.3 2006-03-23
PCT/GB2007/050141 WO2007107795A2 (en) 2006-03-23 2007-03-21 Data processing hardware

Publications (2)

Publication Number Publication Date
CN101454773A CN101454773A (zh) 2009-06-10
CN101454773B true CN101454773B (zh) 2012-02-15

Family

ID=36383966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800190644A Expired - Fee Related CN101454773B (zh) 2006-03-23 2007-03-21 矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器

Country Status (8)

Country Link
US (1) US8300057B2 (zh)
EP (1) EP2002356A2 (zh)
JP (1) JP5241699B2 (zh)
KR (1) KR101363602B1 (zh)
CN (1) CN101454773B (zh)
GB (1) GB2436377B (zh)
TW (1) TWI430112B (zh)
WO (1) WO2007107795A2 (zh)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0428191D0 (en) * 2004-12-23 2005-01-26 Cambridge Display Tech Ltd Digital signal processing methods and apparatus
GB0421710D0 (en) * 2004-09-30 2004-11-03 Cambridge Display Tech Ltd Multi-line addressing methods and apparatus
GB0421712D0 (en) * 2004-09-30 2004-11-03 Cambridge Display Tech Ltd Multi-line addressing methods and apparatus
GB0421711D0 (en) * 2004-09-30 2004-11-03 Cambridge Display Tech Ltd Multi-line addressing methods and apparatus
GB2436390B (en) 2006-03-23 2011-06-29 Cambridge Display Tech Ltd Image processing systems
US9311897B2 (en) 2010-12-28 2016-04-12 Indian Institute Of Technology Kanpur Convergent matrix factorization based entire frame image processing
US8689116B2 (en) 2011-01-14 2014-04-01 Apple Inc. Email user interface
US10324916B2 (en) * 2012-02-22 2019-06-18 Nokia Technologies Oy Predictive service access
TWI510930B (zh) * 2013-01-22 2015-12-01 Via Tech Inc 補償同步資料匯流排之誤差的裝置與方法
US9812150B2 (en) * 2013-08-28 2017-11-07 Accusonus, Inc. Methods and systems for improved signal decomposition
JP5951570B2 (ja) 2013-09-13 2016-07-13 株式会社東芝 行列演算装置
US10468036B2 (en) 2014-04-30 2019-11-05 Accusonus, Inc. Methods and systems for processing and mixing signals using signal decomposition
KR101843243B1 (ko) 2015-10-30 2018-03-29 세종대학교산학협력단 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) * 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US10037490B2 (en) 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
US10032110B2 (en) 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10879904B1 (en) 2017-07-21 2020-12-29 X Development Llc Application specific integrated circuit accelerators
US10790828B1 (en) 2017-07-21 2020-09-29 X Development Llc Application specific integrated circuit accelerators
GB2568085B (en) * 2017-11-03 2020-01-01 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
EP3729340A4 (en) * 2017-12-18 2021-12-29 Mythic, Inc. Systems and methods for mapping matrix calculations to a matrix multiply accelerator
CN109036272B (zh) * 2018-08-29 2020-07-24 芯颖科技有限公司 多线寻址驱动系统及方法
EP4009183A1 (en) 2018-10-18 2022-06-08 Shanghai Cambricon Information Technology Co., Ltd Network-on-chip data processing method and device
TWI719786B (zh) * 2019-12-30 2021-02-21 財團法人工業技術研究院 資料處理系統與方法
US11984073B2 (en) * 2020-09-29 2024-05-14 Tcl China Star Optoelectronics Technology Co., Ltd. Partitioned display structure, display panel, and organic light-emitting diode display panel
US20220351664A1 (en) * 2021-04-30 2022-11-03 Texas Instruments Incorporated System, method, and apparatus for pulse-width modulation sequence
CN116414456B (zh) * 2023-01-19 2024-01-19 杭州知存智能科技有限公司 存算芯片内的加权融合变换部件、存算电路及协同计算方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0621578B1 (en) * 1993-04-22 1999-02-10 Matsushita Electric Industrial Co., Ltd. Driving apparatus for liquid crystal display

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4739474A (en) * 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4539507A (en) * 1983-03-25 1985-09-03 Eastman Kodak Company Organic electroluminescent devices having improved power conversion efficiencies
DE3804938C2 (de) * 1987-02-18 1994-07-28 Canon Kk Bildverarbeitungseinrichtung
US5129092A (en) * 1987-06-01 1992-07-07 Applied Intelligent Systems,Inc. Linear chain of parallel processors and method of using same
FR2663138B1 (fr) * 1990-06-08 1992-09-11 France Etat Procede et circuit de traitement de signaux numeriques representatifs de vecteurs ou tuples de meme dimension et leur application a des ensembles de cardinalite et a des vecteurs ou tuples de dimensions quelconques.
US5960211A (en) * 1995-12-15 1999-09-28 Hughes Aircraft Data formatting method and apparatus for a data processing array
JP2001134539A (ja) * 1999-11-01 2001-05-18 Sony Computer Entertainment Inc 面計算機及び面計算機における演算処理方法
KR20030029103A (ko) * 2001-05-11 2003-04-11 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 병렬 데이터 프로세싱을 위한 장치 및 이러한 장치를포함하는 카메라 시스템
US7062419B2 (en) * 2001-12-21 2006-06-13 Intel Corporation Surface light field decomposition using non-negative factorization
WO2003094137A2 (en) * 2002-05-02 2003-11-13 Philips Intellectual Property & Standards Gmbh Improved driver for non-linear displays comprising a random access memory for static content
GB0421710D0 (en) 2004-09-30 2004-11-03 Cambridge Display Tech Ltd Multi-line addressing methods and apparatus
GB0428191D0 (en) * 2004-12-23 2005-01-26 Cambridge Display Tech Ltd Digital signal processing methods and apparatus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0621578B1 (en) * 1993-04-22 1999-02-10 Matsushita Electric Industrial Co., Ltd. Driving apparatus for liquid crystal display

Also Published As

Publication number Publication date
GB2436377B (en) 2011-02-23
TW200745879A (en) 2007-12-16
KR20090008264A (ko) 2009-01-21
EP2002356A2 (en) 2008-12-17
US20090128571A1 (en) 2009-05-21
JP2009530730A (ja) 2009-08-27
TWI430112B (zh) 2014-03-11
JP5241699B2 (ja) 2013-07-17
WO2007107795A3 (en) 2008-04-17
GB2436377A (en) 2007-09-26
KR101363602B1 (ko) 2014-03-17
GB0605748D0 (en) 2006-05-03
US8300057B2 (en) 2012-10-30
WO2007107795A2 (en) 2007-09-27
CN101454773A (zh) 2009-06-10

Similar Documents

Publication Publication Date Title
CN101454773B (zh) 矩阵因式分解硬件加速器及相应的方法、集成电路和显示驱动器
EP3557485B1 (en) Method for accelerating operations and accelerator apparatus
JP7358382B2 (ja) 演算を加速するための加速器及びシステム
US7944410B2 (en) Multi-line addressing methods and apparatus
KR101410800B1 (ko) 이미지 프로세싱 시스템들
CN110163338B (zh) 具有运算阵列的芯片运算方法、装置、终端及芯片
CN102177529A (zh) 确定用于高动态范围图像的光的空间调制的减小分辨率的背光仿真
WO2006035248A1 (en) Multi-line addressing methods and apparatus
JP2006003752A (ja) 表示装置及びその駆動制御方法
CN101197118B (zh) 用于改进的frc技术的显示设备和控制驱动器
EP0621578A2 (en) Driving apparatus for liquid crystal display
CN101339753A (zh) 液晶显示装置和用于液晶显示装置的控制驱动器
CN101449315B (zh) 图像处理系统
CN109817174B (zh) 用于图像校正的设备和方法
US6788306B2 (en) Display apparatus displaying pseudo gray levels and method for displaying the same
CN115485656A (zh) 用于卷积运算的存储器内处理方法
JPH09281922A (ja) スクロール表示方法および装置
US6727879B2 (en) LCD driver in multi-line selection driving method
CN114664236A (zh) 显示控制方法、装置和显示设备
CN114694564A (zh) 用于有源矩阵显示器的驱动方法
CA2164982A1 (en) Real time active addressing display device and method utilizing fast walsh transform circuit
JP2004333911A (ja) 電気光学装置の駆動方法、電気光学装置および電子機器
CA2231010C (en) Image data storing method and image data storing device
JP4311085B2 (ja) 電気光学装置、電気光学装置の駆動方法および電子機器
CN111540314B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120215

Termination date: 20160321

CF01 Termination of patent right due to non-payment of annual fee