DATA PROCESSING HARDWAREThis invention generally relates to data processing hardware, and more particularly to hardware accelerators and related methods for matrix factorisation especially non- negat ive matrix factorisation (NMF). Embodiments of the invention are particularly useful for driving electroluminescent displays such as OLED displays. A matrix factorisation hardware accelerator for determining a pair of factor matrices (R;C) which when multiplied together approximate a target matrix, the hardware accelerator comprising: an input to receive an input data matrix representing said target matrix; a first factor matrix memory for storing row and column data for a first factor matrix (R), said first factor matrix memory having a plurality of first data buses each associated with a respective block of said first factor matrix memory for accessing first factor matrix column data stored in the block; a second factor matrix memory for storing row and column data for a second factor matrix (C), said second factor matrix memory having a plurality of second data buses each associated with a respective block of said second factor matrix memory for accessing second factor matrix row data stored in the block; a matrix of processor blocks, each processor block having: a first processor block data bus coupled to one of said first data buses, a second processor block data bus coupled to one of said second data buses, and a result data output; a processor memory block for storing a portion of a matrix (Q) representing a difference between a product of said pair of factor matrices and said target matrix; and a data processor comprising at least one multiply-add unit, said data processor having a first input coupled to said processor memory block and a second input coupled to one or both of said first and second processor block data buses and having an output coupled to said result data output; and control circuitry to control writing of data from said input into said processor memory blocks of said matrix of processor blocks, to control reading of data from said first and second factor matrix memories for provision to said matrix of processor blocks, and to control writing of data derived from said result data outputs back to said first and second factor matrix memories to perform said matrix factorisation.A matrix factorisation hardware accelerator for determining a pair of factor matrices (R; C) which when multiplied together approximate a target matrix, the hardware accelerator comprising: an input to receive an input data matrix representing said target matrix; a first factor matrix memory for storing row and column data for a first factor matrix (R), said first factor matrix memory having a plurality of first data buses each associated with a respective block of said first factor matrix memory for accessing first factor matrix column data stored in the block; a second factor matrix memory for storing row and column data for a second factor matrix (C), said second factor matrix memory having a plurality of second data buses each associated with a respective block of said second factor matrix memory for accessing second factor matrix row data stored in the block; a matrix of processor blocks, each processor block having: a first processor block data bus coupled to one of said first data buses, a second processor block data bus coupled to one of said second data buses, and a result data output; a processor memory block for storing a portion of a matrix (Q) representing a difference between a product of said pair of factor matrices and said target matrix; and a data processor comprising at least one multiply-add unit, said data processor having a first input coupled to said processor memory block and a second input coupled to one or both of said first and second processor block data buses and having an output coupled to said result data output; and control circuitry to control writing of data from said input into said processor memory blocks of said matrix of processor blocks, to control reading of data from said first and second factor matrix memories for provision to said matrix of processor blocks, and to control writing of data derived from said result data outputs back to said first and second factor matrix memories to perform said matrix factorisation.
데이터를 처리하는 하드웨어 본 발명은 일반적으로 데이터를 처리하는 하드웨어에 관한 것이며, 보다 상세하게는 행렬 인수분해(matrix factorisation) 특히 비음수 행렬 인수분해(NMF:non-negative matrix factorisation)를 위한 하드웨어 가속기 및 관련 방법들에 관한 것이다. 본 발명의 실시예들은 유기발광LED(OLED;organic light emitting diode) 디스플레이와 같은 전자발광(electroluminescent) 디스플레이들을 구동하는데 특히 유용하다. 함께 곱해질때 목표 행렬(target matrix)로 근사화되는 한 쌍의 인수행렬(factor matrix)을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)로서, 상기 하드웨어 가속기는 상기 목표 행렬을 대표하는 입력 데이터를 수신하는 입력; 제1인수행렬()에 대한 행 데이터와 열 데이터를 저장하는 제1인수행렬메모리로서, 상기 제1인수행렬메모리는 복수의 제1데이터버스를 가지며, 상기 제1데이터버스들은 각각 상기 제1인수행렬메모리의 블록과 연관되어 상기 블록에 저장된 제1인수행렬 열(column) 데이터를 액세스(access)하는 제1인수행렬메모리; 제2인수행렬()에 대한 행데이터와 열 데이터를 저장하는 제2인수행렬메모리로서, 상기 제2인수행렬메모리는 복수의 제2데이터버스를 가지며, 상기 제2데이터버스들은 각각 상기 제2인수행렬메모리의 블록과 연관되어 상기 블록에 저장된 제2인수행렬 행(row) 데이터를 액세스하는 제2인수행렬메모리; 프로세서 블록들의 행렬로서, 각 프로세서 블록은 상기 제1데이터버스들중 하나에 연결된 제1프로세서블록 데이터 버스, 상기 제2데이터버스들중 하나에 연결된 제2프로세서블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 인수행렬과 상기 목표 행렬간의 차이를 대표하는 행렬()의 일부를 저장하는 프로세서 메모리 블록; 그리고 상기 프로세서 메모리 블록과 연결된 제1입력과 상기 제1프로세서블록 데이터 버스 및 제2프로세서블록 데이터 버스에 하나 또는 모두 연결된 제2입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는 적어도 하나의 곱셈-덧셈 유니트를 포함하는 데이터 프로세서;를 가지는 프로세서 블록들의 행렬; 및 상기 입력으로부터의 데이터가 프로세서 블록들의 상기 행렬의 상기 프로세서 메모리 블록들의 입력으로 써지는 것(writing)을 제어하고, 상기 프로세서 블록들의 행렬로의 프로비전(provision)을 위하여 상기 제1인수행렬메모리 및 제2인수행렬메모리로부터 데이터를 읽어오는 것을 제어하고, 상기 행렬 인수분해를 실행하기 위하여 상기 결과 데이터 출력으로부터 유도된 데이터가 상기 제1인수행렬메모리 및 제2인수행렬메모리로 다시 써지는 것을 제어하기 위한 제어회로;를 포함하는 행렬 인수분해 하드웨어 가속기를 포함한다. 함께 곱해질때 목표 행렬(target matrix)로 근사화되는 한 쌍의 인수행렬(factor matrix)을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)로서, 상기 하드웨어 가속기는 상기 목표 행렬을 대표하는 입력 데이터를 수신하는 입력; 제1인수행렬()에 대한 행 데이터와 열 데이터를 저장하는 제1인수행렬메모리로서, 상기 제1인수행렬메모리는 복수의 제1데이터버스를 가지며, 상기 제1데이터버스들은 각각 상기 제1인수행렬메모리의 블록과 연관되어 상기 블록에 저장된 제1인수행렬 열(column) 데이터를 액세스(access)하는 제1인수행렬메모리; 제2인수행렬()에 대한 행데이터와 열 데이터를 저장하는 제2인수행렬메모리로서, 상기 제2인수행렬메모리는 복수의 제2데이터버스를 가지며, 상기 제2데이터버스들은 각각 상기 제2인수행렬메모리의 블록과 연관되어 상기 블록에 저장된 제2인수행렬 행(row) 데이터를 액세스하는 제2인수행렬메모리; 프로세서 블록들의 행렬로서, 각 프로세서 블록은 상기 제1데이터버스들중 하나에 연결된 제1프로세서블록 데이터 버스, 상기 제2데이터버스들중 하나에 연결된 제2프로세서블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 인수행렬과 상기 목표 행렬간의 차이를 대표하는 행렬()의 일부를 저장하는 프로세서 메모리 블록; 그리고 상기 프로세서 메모리 블록과 연결된 제1입력과 상기 제1프로세서블록 데이터 버스 및 제2프로세서블록 데이터 버스에 하나 또는 모두 연결된 제2입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는 적어도 하나의 곱셈-덧셈 유니트를 포함하는 데이터 프로세서;를 가지는 프로세서 블록들의 행렬; 및 상기 입력으로부터의 데이터가 프로세서 블록들의 상기 행렬의 상기 프로세서 메모리 블록들의 입력으로 써지는 것(writing)을 제어하고, 상기 프로세서 블록들의 행렬로의 프로비전(provision)을 위하여 상기 제1인수행렬메모리 및 제2인수행렬메모리로부터 데이터를 읽어오는 것을 제어하고, 상기 행렬 인수분해를 실행하기 위하여 상기 결과 데이터 출력으로부터 유도된 데이터가 상기 제1인수행렬메모리 및 제2인수행렬메모리로 다시 써지는 것을 제어하기 위한 제어회로;를 포함하는 행렬 인수분해 하드웨어 가속기.