KR101363602B1 - 데이터를 처리하는 하드웨어 - Google Patents
데이터를 처리하는 하드웨어 Download PDFInfo
- Publication number
- KR101363602B1 KR101363602B1 KR1020087025852A KR20087025852A KR101363602B1 KR 101363602 B1 KR101363602 B1 KR 101363602B1 KR 1020087025852 A KR1020087025852 A KR 1020087025852A KR 20087025852 A KR20087025852 A KR 20087025852A KR 101363602 B1 KR101363602 B1 KR 101363602B1
- Authority
- KR
- South Korea
- Prior art keywords
- matrix
- processor
- data
- memory
- block
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 19
- 239000011159 matrix material Substances 0.000 claims abstract description 245
- 230000015654 memory Effects 0.000 claims abstract description 180
- 238000000034 method Methods 0.000 claims abstract description 70
- 230000008569 process Effects 0.000 claims description 17
- 239000000872 buffer Substances 0.000 claims description 11
- 230000005055 memory storage Effects 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 6
- 238000009825 accumulation Methods 0.000 claims description 5
- 230000001133 acceleration Effects 0.000 claims 4
- 238000004590 computer program Methods 0.000 claims 2
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 13
- 230000014509 gene expression Effects 0.000 description 12
- 239000013598 vector Substances 0.000 description 10
- 238000012805 post-processing Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- RICKKZXCGCSLIU-UHFFFAOYSA-N 2-[2-[carboxymethyl-[[3-hydroxy-5-(hydroxymethyl)-2-methylpyridin-4-yl]methyl]amino]ethyl-[[3-hydroxy-5-(hydroxymethyl)-2-methylpyridin-4-yl]methyl]amino]acetic acid Chemical compound CC1=NC=C(CO)C(CN(CCN(CC(O)=O)CC=2C(=C(C)N=CC=2CO)O)CC(O)=O)=C1O RICKKZXCGCSLIU-UHFFFAOYSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 108010026552 Proteome Proteins 0.000 description 1
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 125000003275 alpha amino acid group Chemical group 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000027455 binding Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000000412 dendrimer Substances 0.000 description 1
- 229920000736 dendritic polymer Polymers 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000002493 microarray Methods 0.000 description 1
- 239000002773 nucleotide Substances 0.000 description 1
- 125000003729 nucleotide group Chemical group 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 125000002524 organometallic group Chemical group 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 150000003384 small molecules Chemical class 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/2007—Display of intermediate tones
- G09G3/2077—Display of intermediate tones by a combination of two or more gradation control methods
- G09G3/2081—Display of intermediate tones by a combination of two or more gradation control methods with combination of amplitude modulation and time modulation
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/22—Control 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/30—Control 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/32—Control 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/3208—Control 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/3216—Control 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2310/00—Command of the display device
- G09G2310/02—Addressing, scanning or driving the display screen or processing steps related thereto
- G09G2310/0202—Addressing of scan or signal lines
- G09G2310/0205—Simultaneous scanning of several lines in flat panels
- G09G2310/0208—Simultaneous scanning of several lines in flat panels using active addressing
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2320/00—Control of display operating conditions
- G09G2320/02—Improving the quality of display appearance
- G09G2320/0271—Adjustment of the gradation levels within the range of the gradation scale, e.g. by redistribution or clipping
- G09G2320/0276—Adjustment 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/2007—Display of intermediate tones
- G09G3/2018—Display of intermediate tones by time modulation using two or more time intervals
- G09G3/2022—Display of intermediate tones by time modulation using two or more time intervals using sub-frames
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/22—Control 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/30—Control 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/32—Control 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/3208—Control 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]
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/22—Control 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/30—Control 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/32—Control 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/3208—Control 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/3275—Details of drivers for data electrodes
- G09G3/3283—Details 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G3/00—Control arrangements or circuits, of interest only in connection with visual indicators other than cathode-ray tubes
- G09G3/20—Control 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/34—Control 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/36—Control 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/3611—Control 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
본 발명은 일반적으로 데이터 처리 하드웨어에 관한 것이며, 보다 상세하게는 행렬 인수분해(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입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및 상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬메모리에 다시 기록하는 것을 제어하기 위한 제어회로;를 포함한다.
Description
본 발명은 일반적으로 데이터를 처리하는 하드웨어에 관한 것이며, 보다 상세하게는 행렬 인수분해(matrix factorisation) 특히 비-음수 행렬 인수분해(NMF:non-negative matrix factorisation)를 위한 하드웨어 가속기 및 관련 방법들에 관한 것이다. 본 발명의 실시예들은 유기발광LED(OLED;organic light emitting diode) 디스플레이와 같은 전자발광(electroluminescent) 디스플레이들을 구동하는데 특히 유용하다.
본원의 출원인은 비-음수 행렬 인수분해를 위한 기술들이 OLED 디스플레이 구동에 얼마나 유익하게 채택될 수 있는지 이전에 개시한 바 있다(특히 본 출원인의 국제출원 PCT/GB2005/050219를 참조할 것, 그리고 본원 명세서에 그 내용이 전부 참조로서 포함된다). 이제 이 기술들을 구현하기 위한 하드웨어의 실시예들을 서술한다. 특히 실시간 디스플레이가 가능하도록 충분히 빠른 속도를 위해 필요한 매우 큰 수의 연산을 실행하는 문제를 다룬다. 우리는 디스플레이 구동에 관하여 바람직한 실시예들을 서술할 것이지만 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 우리가 서술하는 하드웨어와 방법들이 (예를 들면, 얼굴 인식을 위한) 이미지 데이터, 컴퓨터 네트워크 데이터(예를 들면, 보안 감시를 위한 사용자 행동 데이터), (예를들면 데이터 마이닝을 위한) 데이터베이스에 저장된 다변수(multivariant) 데이터, (예를 들면 시퀀스 분석을 위한) 생물학적 시퀀스 데이터 그리고/또는 마이크로어레이(microarray) 데이터, (예를 들면 기계학습/인식 기술을 위한) 객체 기술자(object descriptor) 데이터, 그리고 (분석 그리고/또는 패턴 인식을 위한) 탐색 결과 데이터를 포함하는 실질적으로 임의의 데이터 형태- 물론 이러한 데이터에 한정되지는 않는다- 를 빠르게 인수분해하는데 채택될 수 있는 하드웨어와 방법임을 이해할 것이다. 이 응용과 다른 응용의 보다 상세한 사항은 본 출원인이 이전에 출원한 국제출원(상기 국제출원)에서 찾아볼 수 있다. 종래기술은 US 5692210; US 4739474; US2002/0186311; US 5690211; EP 0293700 그리고 US 2004/0268080에서 찾아볼 수 있다.
본 발명의 실시예들을 이해하는데 도움을 주기 위하여 먼저 TMA(Total Matrix Addressing) 기술들을 포함하는 바람직한 특정의 경우인 MLA(Multi-line addressing) 기술들을 검토할 것이다. 이 기술들은 각 픽셀(또는 컬러 서브-픽셀)을 위한 메모리 소자를 포함하지 않음으로써 계속 리프레쉬(refresh)되어야만 하는 디스플레이인, 수동 행렬(passive matrix) OLED 디스플레이와 함께 사용되는 것이 바람직하다. 이 명세서에서 OLED 디스플레이는 폴리머, 소위 작은 분자들(small molecules)(예를 들면 US4,539,507), 덴드리머(dendrimer), 그리고 유기금속 물질들을 사용하여 제조되는 디스플레이들을 포함하며, 상기 디스플레이들은 흑백 또는 컬러 디스플레이들일 수 있다.
종래의 수동 행렬 디스플레이에서, 상기 디스플레이는 라인별로(line by line) 구동되고, 따라서 단지 프레임 주기의 일부에 대하여만 발광되기 때문에 각 라인에 대하여 높은 구동 신호가 요구된다. MLA 기술은 한번에 하나 이상의 라인을 구동하고 TMA 기술에서 모든 라인들은 동시에 구동되며 이미지는 복수의 연속 디스플레이 서브프레임(successively displayed subframe)으로부터 형성되는데, 이러한 복수의 연속 디스플레이 서브프레임은, 관측자의 눈에서 합성될 때 원하는 이미지를 드러낸다. 여기에서의 문제는 서브프레임의 집합이 원하는 이미지에 근접하도록 서브프레임들에 대한 행(row)과 열(column) 구동 신호들의 집합을 결정하는 것이다. 우리는 이 문제에 대한 해결책을 국제출원 GB2005/050167 내지 GB2005/050169에서 기재했다(3건의 국제출원 모두의 전체 내용이 본원 명세서에 참조로서 포함된다). 바람직한 기술은 원하는 이미지를 기술하는 행렬의 비-음수 행렬 인수분해를 채택하는 것이다. 요인 행렬(factor matrix)들은 본질적으로 서브프레임들에 대한 행과 열 구동 신호들을 정의하며, 이 행렬의 엘레먼트(element)들은 OLED 디스플레이 엘레먼트들이 양(또는 영)의 발광을 제공하기 때문에 양수(positive)이다. 우리는 하나의 바람직한 NMF 기술을 이하에서 기술하겠지만, 다른 기술들도 채택될 수 있는 것이다. 또한 이러한 NMF 절차 및 다른 NMF 절차들을 구현하기에 적합한 하드웨어 가속기의 세부 내용을 기술할 것이다.
본 발명을 이해하는데 도움을 주기 위하여, 도 1a를 참조하면서 전반적인 OLED 디스플레이 시스템(100)을 먼저 기술할 것이다. 여기서 상기 시스템(100)은 TMA를 실행하기 위한 본 발명의 실시예들을 이용해서 구현될 수 있는 디스플레이 구동 데이터 처리기(150)를 포함한다.
도 1a에서 수동 행렬 OLED 디스플레이(120)는 행(row) 구동기 회로(112)에 의하여 구동되는 행 전극(124)과 열(column) 구동기(110)에 의하여 구동되는 열 전극(128)을 가진다. 이러한 행 구동기와 열 구동기의 세부는 도 1b에 도시되어 있다. 열 구동기(110)는 전류 구동 비율을 하나 이상의 열 전극들에 설정하기 위한 열 데이터 입력(109)을 가지고; 마찬가지로 행 구동기(112)는 전류 드라이브 비율을 두 개 이상의 열에 설정하기 위한 행 데이터 입력(111)을 가진다. 상기 입력들(109, 111)은 인터페이싱을 용이하게 하기 위한 디지털 입력들인 것이 바람직하며; 열 데이터 입력(109)은 디스플레이(120)의 모든 U 열들에 대하여 전류 구동 비율을 설정하는 것이 바람직하다.
디스플레이를 위한 데이터는 데이터 및 제어 버스(102) 상에 제공되며, 이 버스는 시리얼 또는 패러렐 버스일 수 있다. 버스(102)는 디스플레이의 각 픽셀에 대한 휘도(luminance) 데이터를 저장하거나, 컬러 디스플레이에서 각 서브-픽셀에 대한 휘도 정보(개별 RGB 컬러 신호들로서나 휘도와 크로미넌스(chrominance) 신호들로서 또는 기타의 방식으로 인코딩될 수 있음)를 저장하는 프레임 저장 메모리(103)에 대한 입력을 제공한다. 프레임 메모리(103)에 저장된 데이터는 디스플레이를 위한 각 픽셀(또는 서브-픽셀)에 대한 원하는 겉보기 밝기(apparent brightness)를 결정하며, 이 정보는 디스플레이 구동 데이터 처리기(150)에 의하여 제2의 판독 버스(read bus, 105)에 의하여 독출될 수 있다. 디스플레이 구동 데이터 처리기(150)는 차후에 설명되겠지만 입력 데이터 전-처리, NMF, 그리고 후-처리를 수행하는 것이 바람직하다.
도 1b에는 인수분해된 이미지 행렬로 디스플레이를 구동하기에 적합한 행 구동기와 열 구동기가 예시되어 있다. 열 구동기(110)는, 한 세트의 조정가능하고 실질적으로 일정한 전류원들을 포함하며, 이 전류원들은 서로 집단을 이루어 동작하게 되고 그 전류원들에는 열 전극들 각각에 전류를 설정하기 위한 가변 기준 전류 Iref가 공급된다. 이 기준 전류는 NMF 요인 행렬(NMF factor marix)의 한 행으로부터 구동되는 각 열에 대한 상이한 값들에 의하여 펄스 폭 변조된다. 상기 행 구동기(112)는 프로그램가능한 전류 미러를 포함하며, 상기 프로그램가능한 전류 미러는 디스플레이의 각 행에 대하여(또는 동시 구동되는 행들의 각 행에 대하여) 하나의 출력을 가지는 것이 바람직하다. 상기 행 구동 신호들은 NMF 요인 행렬의 한 열로부터 구동되며 행 구동기(112)는 총 열 전류를 각 행에 대하여 분배하여 행들에 대한 전류가 비율 제어 입력(R)에 의하여 설정된 비율로 이루어지게 한다. 적절한 구동기의 부가적인 세부는 본원 출원인의 국제출원 GB2005/010168(본원 명세서에 참조로서 포함됨)에서 찾아볼 수 있다.
OLED는 이차적인 전류-전압 의존성(quadratic current-voltage dependence)을 가지는데, 이는 행과 열 구동 변수들에 대한 독립 제어를 제한한다. PWM은 행과 열 구동 변수들이 서로 분리되는 것을 허용하므로 유용하다. 게다가 위에서 기술한 구동 배열 방식에서, 전류가 행들 간에 공유되므로, 만약 하나의 행의 전류가 증가하면 나머지 행의 전류는 감소한다. 그러므로 기준 전류와 서브-프레임(sub-frame) 시간이 보상을 위해 스케일링되는 것이 바람직하다. 예를 들면, 서브-프레임 시간은 각 서브-프레임 내의 첨두 픽셀 밝기가 동일하게(또한 최악의 경우/첨두 밝기 에이징(aging)을 감소하게) 할 목적으로 조정될 수 있다. 실제로 이는 가장 짧은 선택가능한 서브-프레임 시간에 의하여 그리고 또한 최대 열 구동 전류에 의하여 제한되지만, 그 조정이 이차적 최적화이므로 이는 문제가 되지 않는다.
바람직한 NMF 연산의 일 예를 아래에서 설명한다.
입력 이미지가 엘레먼트 를 가진 행렬 로 주어지는데, 은 전류 행 행렬을, 는 전류 열 행렬을, 는 와 사이의 잔류 오류(remaining errors)를, 는 서브-프레임의 수를, 는 평균값을, 그리고 는 선택적인 감마 보정 함수를 나타낸다.
변수들은 다음과 같이 초기화된다;
start
loop to start (p <- p+1)
변수 는 0으로 나누어지는 것을 방지하고, R과 C의 값들은 이 값으로 접근한다. 의 값은 initialRC x weight x no.of.columns에 의하여 결정될 수 있는데, 여기서 열의 수(no.of.columns)는 x이고 가중치(weight)는 예를 들면 64와 128 사이이다.
대체로 말하면, 상기 연산은 최소자승법(least square fit)으로 특징지어질 수 있다. 행렬 는 처음에 타깃 행렬(target matrix)의 형태로 시작하는데, 그 이유는 행 행렬과 열 행렬는 일반적으로 그들 모두의 엘레먼트들이 동일한 것들로서 평균값 와 같도록 초기화되기 때문이다. 그러나 이때부터 행렬 는 이미지와, 서브-프레임 결합결과 간의 잉여차(residual difference)를 나타냄으로써 이상적으로는 이다. 그러므로, 대체로 말하면, 상기 절차는 서브-프레임 에 대한 기여도(contribution)를 더함으로써 시작한 다음에 나서 각 행에 대하여 최적의 열 값들을 찾는다. 그리고나서, 각 열에 대하여 최적의 행 값들을 찾는다. 그리하여 업데이트된 행과 열 값들은 에서 다시 감해지고, 상기 절차는 다음 서브-프레임에 대하여 속행된다. 전형적으로, 예를 들면 1에서부터 100에 이르기까지의 다수의 반복이 수행되어 서브-프레임 집합에 대한 과 가 최적-적합(best-fit)으로 수렴한다. 채택된 서브-프레임의 수 는 경험적 선택(empirical choice)이지만, 예를 들면, 1에서부터 1000에 이르기까지의 경험적 선택일 수 있다.
본원 명세서에서 본 발명이 속하는 기술분야에서 통상의 지식을 가지는 자라면 행과 열에 대한 참조들은 상호 교환가능하고, 예를 들면 위의 식들에서 업데이트된 와 값들을 결정하기 위한 처리 순서가 교환될 수 있다는 점을 이해할 수 있을 것이다.
상기의 식들에서, 모든 정수 연산이 채택되는 것이 바람직하고 과 값들이 8 비트 값들을 포함하고 가 부호(sign)를 갖는 16비트 값들을 포함하는 것이 바람직하다. 이때, 과 값들의 결정은 반올림(rounding off)을 포함할 수 있지만, 는 반올림된 값들로 업데이트되기 때문에 에는 반올림 오류가 없다(그리고 과 값들의 곱은 내에 수용될 수 있는 최대값보다 클 수 없다). 상기 절차는 컬러 디스플레이의 픽셀들에 직접 적용될 수 있다(차후에 상세히 기술됨). 선택적으로 가중치 행렬이 낮은 휘도값의 오류에 더 높은 가중치를 부여하기 위하여 채택될 수 있는데, 그 이유는 사람의 눈이 불완전한 흑색에 불균형적으로 민감하기 때문이다. 유사한 가중치의 적용이 녹색 컬러 채널의 오류에 가중치를 증가시키도록 이루어질 수 있는데, 그 이유는 사람의 눈이 녹색 오류에 불균형적으로 민감하기 때문이다.
상기의 NMP 절차에 기초한 디스플레이 구동 시스템의 실제 구현을 위한 전형적인 파라미터 집합은 초당 25 프레임의 원하는 프레임 속도를 가질 수 있으며, 각 프레임은 예를 들면 160개의 서브-프레임을 가지고 상기 절차의 20번 반복을 포함한다. 20번의 반복과 160개의 서브-프레임을 이용하여 150MHz에서 실행하는 상기 절차를 연속적으로 구현하면 프레임 속도가 0.25 fps가 될 것이다. 그러므로 매우 고속이면서 비용이 많이 들고 전력소모가 많은 디지털 신호 처리기에 대한 필요 없이 전형적인 비디오 프레임 속도의 획득을 용이하게 하는 개선된 기술이 필요하다.
그러므로 본 발명에 따르면, 서로 승산될 때 타깃 행렬(target matrix)로 근사화되는 한 쌍의 요인 행렬(factor matrix)을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)가 제공되며, 상기 하드웨어 가속기는 상기 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력; 제1 요인 행렬()에 대한 행 데이터와 열 데이터를 저장하는 제1 요인 행렬 메모리로서, 제1 요인 행렬 메모리는 복수의 제1 데이터 버스를 가지며, 상기 제1 데이터 버스들은 각각 상기 제1 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제1 요인 행렬 열 데이터에 액세스(access)하는, 제1 요인 행렬 메모리; 제2 요인 행렬()에 대한 행 데이터와 열 데이터를 저장하는 제2 요인 행렬 메모리로서, 제2 요인 행렬 메모리는 복수의 제2 데이터 버스를 가지며, 상기 제2 데이터 버스들은 각각 상기 제2 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제2 요인 행렬 행 데이터에 액세스하는, 제2 요인 행렬 메모리; 처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 및 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬()의 일부를 저장하는 처리기 메모리 블록; 및 상기 처리기 메모리 블록에 연결된 제1 입력과 상기 제1 처리기 블록 데이터 버스 및 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및 상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 다시 기록하는 것을 제어하기 위한 제어회로;를 포함한다.
상기 하드웨어 가속기는 다양한 행렬 인수분해 기법들을 구현하기 위하여 채택될 수 있으며, 특히 비-음수 행렬 인수분해(NMF)에 적합하다. 이는 도입부에서 기술하였던 우리의 특정 기법을 사용하여 구현될 수 있거나, 또는 상기 하드웨어를 사용하여 다른 NMF 방법들이 구현될 수 있다. 그러나 상기 하드웨어 가속기의 응용은 NMF에 제한되지 않으며, 특히 제1 및 제2 요인 행렬들의 데이터가 순환 방식 또는 반복 방식으로 수정되는 광범위한 반복 기법을 포함한다. 이러한 응용에서의 처리기 블록들은 이때 반복적이거나, 또는 순환적인 연산을 수행하기 위하여 채택될 수 있다. 비-음수 제한을 포함하지 않는 방법을 구현하기 위하여 부호를 갖는 데이터(signed data)가, 예를 들면 데이터 저장 그리고/또는 처리시 부호 비트를 제공함으로써 다루어질 수 있다.
대체로 말하면, 여러 실시예들에서, 잉여 행렬(residual matirx)()의 처리, 및 또한 저장을 분산함으로써 각 처리기 블록에 의하여 복수의 부분 연산들이 병렬로 수행될 수 있다. 그러한 배열은 FPGA(field programmable gate array)와 같은 하드웨어에서 구현하는데 편리하고, 처리기 블록들, 좀더 구체적으로 기술하면 의 일부들을 저장하는 처리기 메모리 블록들이 이미지 영역에 결쳐 분산될 수 있기 때문에, 처리 속도가 이미지의 크기 또는 해상도로부터 실질적으로 독립적일 수 있다. 게다가 여러 실시예들에서, 위에서 언급한 데이터 구조로 인하여 NMF 식들의 쌍별(pair-wise) 평가, 즉 서브-프레임 에 대한 타깃(target)을 결정하도록 먼저 를 실질적으로 동시에 업데이트하며, 그리고 동시에 과 중 하나를 업데이트한 다음에 와 중 다른 하나를 업데이트하고 실질적으로 동시에 업데이트된 서브프레임을 로부터 감산하는 것(비록 최초의 (또는 상기 업데이트된 서브프레임을 에서 감산하기 시작하기 전에 값)를 연산하는데 필요한 대기시간(latency)이 있기는 하지만)이 가능하다. 그러므로, 바람직한 실시예들에서, 데이터 처리기는 한 쌍의 디지털 신호 처리기(승산-가산 유닛)를 포함하며, 그 중 하나는 2개의 식, 위의 예에서 를 업데이트하기 위한 식과 (또는 )을 업데이트하기 위한 식을 각각 동시에 평가한다. (그러나, 다른 실시예들에서는, 특정 이점을 획득하기 위하여 비록 병행처리가 감소하게 되지만 하나의 DSP 유닛이 다중화될 수 있다).
앞서 언급한 대기시간을 고려하기 위하여, 처리기 블록에 저장된 의 일부는 "이전(old)" 버전의 가 예컨대 를 업데이트하는데 사용될 수 있는 반면에, 예컨대 의 업데이트된 값이 를 업데이트하는데 사용될 수 있도록 더블 버퍼링(double-buffering)되는 것이 바람직하다. 앞서 언급한 바와 같이, 잉여 행렬 는 타깃 행렬로서 개시하는 것이 효과적이지만, 이때 상기 잉여를 감소시키기 위하여 원하는 타깃에 더욱 양호하게 근사화되도록 과 로서 단계적으로 수정된다. 여러 실시예들에서, 잉여 행렬 자체는 필요하지 않다- 그것은 단지 제1 및 제2 요인 행렬 과 를 연산하는 데에만 기여하므로 처리기 블록에 저장된 의 일부를 판독하기 위한 채비가 필요하지 않다. 다만 블록 내에서 내부적으로(에 대한 외부의 판독 액세스가 상기 하드웨어 가속기에 의하여 제공될 필요는 없다) 이루어지는 경우는 예외이다. 입력 데이터 행렬은 타깃 행렬을 생성하기 위해, 예를 들면 도입부에 나타낸 바와 같이 감마 보정(gamma correction)을 적용함으로써 전-처리될 수 있다. 마찬가지로 상기 제1 및 제2 요인 행렬 내의 데이터는 하드웨어 가속기에 의하여 혹은 외부에서 후-처리될 수 있다. 여러 실시예들에서, 상기 하드웨어 가속기로부터의 독출은 상기 제1 및 제2 요인 행렬 메모리에 대한 판독 액세스에 의하여 제공될 수 있다. 상기 메모리에 대한 기록 액세스는 또한 예를 들면 상기 제1 및 제2 요인 행렬을 초기화하기 위하여 제공될 수도 있고, 초기화는 상기 하드웨어 가속기에 의하여 내부적으로 수행될 수도 있다. 앞서 언급한 바와 같이, 과 에 대한 값을 연산하는 것은 처리기 블록 내에서 정수 연산을 사용하여 수행되는 것이 바람직하고, 결과적으로 또는 의 엘레멘트를 위한 값은 반올림 또는 반내림될 수도 있고 다른 경우에 끝수를 버리거나 근사화하게 될 수도 있다. 그러므로, 처리기 블록이 우수리 처리된(rounded) 값들을 이용하여 의 엘레먼트를 업데이트하는 것이 바람직하다. 그러므로 상기 처리기 메모리 블록은 상기 데이터 처리기의 입력보다 데이터 폭(비트 길이)이 두 배인 변수를 사용하는 것이 바람직하다.
몇몇 바람직한 실시예에서, 상기 하드웨어 가속기 제어 회로는 상기 하드웨어 가속기를 위한 전체 제어 회로, 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리를 제어(특히, 어드레싱)하기 위한 메모리 제어 회로, 그리고 처리기 블록의 로컬 제어를 위한 처리기 블록 제어 회로 간에 분산된다. 그러나 이하에서 부가적으로 기술되겠지만, 몇몇 바람직한 실시예들에서 단지 하나의 처리기 블록만이, 예를 들면 잉여 행렬 의 일부를 저장하는 메모리 블록을 어드레싱하기 위한, 그러한 제어 회로를 포함하고; 이는 이때 마스터 처리기 블록이라 명명될 수 있으며 다른 처리기 블록들 중 하나 이상(바람직하게는 모두)은 상기 마스터 처리기 블록으로부터 생성된 타이밍과 제어 신호들을 채용하여, 상기 마스터 처리기 블록에 종속될 수 있다.
몇몇 바람직한 실시예들에서 상기 메모리 제어 회로는 상기 요인 행렬의 하나, 혹은 다른 하나 혹은 모두의 각 엘레먼트, 처리기 블록에 의하여 처리되는 엘레먼트 집합의 순차적 선택을 제어한다. 환언하면, 처리기 블록들의 행은 각각 상기 행 요인 행렬의 열 값들의 블록(처리기 블록들의 연속되는 행들에 나타나게 되는 하나의/각각의 열의 일부)을 처리할 수 있다. 이때 차례로 처리기 블록들의 행에 의하여 처리되는 열 값들의 집합은 각각 선택될 수 있고 처리를 위하여 처리기 블록들에 제공될 수 있다. 그에 따라서 열 요인 행렬 내 데이터의 행(row)들은 처리기 블록들의 열들에 의하여 다루어질 수 있다. 따라서, 상기 메모리 제어 회로는 상기 제1 요인 행렬 및 상기 제2 요인 행렬의 엘레먼트들을, 예를 들면 위에서 언급한 바와 같은 NMF 연산식들에 따른 처리를 위하여 순차적으로 처리 블록들에 제공하도록 구성될 수 있다. 상기 메모리 제어 회로는 또한 상기 요인 행렬 메모리에 대한 외부 판독 그리고/또는 기록 액세스를 제어할 수 있다.
상기 하드웨어 가속기의 바람직한 실시예들에서 상기 처리기 블록들은 잉여 행렬 를 분산 메모리 어레이(array)에 기록하기 위하여 제3 처리기 블록 데이터 버스를 사용하여 데이지 체인(daisy-chain) 방식으로 또한 연결될 수 있다(그러나, 여러 변형예들에서 이는 예를 들면 행과 열 행렬 메모리 데이터 버스를 사용하여 이루어질 수 있다). 또한 (상기 제어 회로의 제어하에서) 결과들이 행렬 내의 처리기 블록과 처리기 블록 사이에서부터 처리기 블록들의 행렬의 행 에지(row edge) 그리고/또는 열 에지(column edge)에 이르기까지 전달될 수 있게 하기 위해 한 쌍의 결과 데이터 입력과 한 쌍의 결과 데이터 출력을 제공함으로써 데이지 체인 방식으로 또한 연결될 수 있는데, 이는 북,남, 동, 그리고 서 연결로 보이는 것이 편리할 수 있다. 데이터가 전달되는 에지들의 반대편에 있는 트레일링 입력(trailing input)들은 0으로 묶일 수 있다. 결과 데이터는 행과 열 데이터에 대한 매스 블록(math block)들에 의하여 수신되는 것이 바람직하다. 이 매스 블록들은 관련된 블록들의 행 또는 열의 각 처리기 블록으로부터 수신되는 부분 결과 데이터를 누적 연산하는 것이 바람직하다. 게다가, 여러 실시예들에서, 행과 열 요인 행렬 값들을 업데이트하기 위하여 제산이 필요하기 때문에(위의 식들을 참조), 상기 매스 블록들은 이 제산을 수행하도록 구성될 수 있다. 그러나, 소정의 서브-프레임에서 행과 열 행렬 업데이트 식들의 분모가 항상 같기 때문에, 이 제산은 단지 한번만 수행될 필요가 있다. 따라서, 예를 들면 처리기 블록들의 각 행과 열에 대하여 하나씩, 복수의 행과 열 블록들이 제공될 수 있고, 그러한 구성에서 상기 매스 블록들 중 하나는 마스터 블록으로 그리고 다른 것들은 슬레이브 블록들로 지정될 수 있다. 상기 마스터 블록은 이때 관련된 분모의 역수(reciprocal)를 연산하기 위한 디바이더(divider)를 포함할 수 있으며, 상기 슬레이브 매스 블록들은 이때 상기 마스터 (행 또는 열) 매스 블록으로부터 수신된 이러한 역수 값으로 승산하기 위한 승산기만을 포함할 필요가 있다. 상기 행과 열 행렬 메모리들은 상기 처리기 블록들과 매스 블록들에 의한 동시적인 판독와 기록 액세스를 허용하도록 듀얼 포트 메모리를 이용하여 구현되는 것이 바람직하다.
몇몇 실시예들에서, 처리기 블록은 제1 및 제2 승산-가산 유닛을 포함한다. 이러한 방식으로, 이들 중 하나는 곱를 연산하기 위하여 채택될 수 있고, 다른 하나는 곱 를 누적 연산하기 위하여 채택될 수 있으며, 이 두 연산은 병행처리로 이루어진다. 상기 곱 는 가 에 가산된 후에 결정되므로, 이 승산-가산 유닛들 중 하나의 출력이 두 번째 유닛의 입력으로 연결되는 것이 바람직하다. 동일한 구조가 곱 을 누적 연산하는데 사용될 수 있으며, 그 후에 다시 병행처리로 곱 를 감산함으로써 잉여 행렬 를 업데이트하는데 사용될 수 있다(일단 의 제1 엘레먼트의 연산시 대기시간이 고려될 경우에). 이 연산들을 모두 수행하기 위하여 상기 승산-가산 유닛들 중 하나의 입력이 예를 들면 승산기를 이용하여 과 사이에서 스위칭될 수 있는 것이 바람직하다. 게다가 몇몇 바람직한 구현예들에서, 상기 승산-가산 유닛들 중 하나가 곱 와 을 결정하기 위하여 또한 채택될 수 있다. 이를 구현하기 위하여, 상기 승산-가산 유닛들 중 하나의 두 입력이 예를 들면 한 쌍의 다중화기(multiplexter)에 의하여 또는 중 하나에 선택적으로 연결되는 것이 바람직할 수 있다. 나아가 상기 NMF 절차의 바람직한 실시예들은 루프의 시작과 끝에서 를 수정하는 것을 포함하므로, 상기 승산-가산 유닛들 중 하나가 블록 메모리의 출력에 입력이 연결된 가산 유닛을 지니고, 이 승산-가산 유닛의 출력은 상기 블록 메모리(듀얼 포트임)의 기록 입력을 제공하는 것이 바람직하다.
상기 연산들의 순서와 상기 다중화기에 의한 또는 중 하나의 선택은 처리기 블록 내의 상태 머신(state machine)에 의하여 제어될 수 있으며; 이는 또한 상기 블록 메모리를 어드레싱하는데 사용될 수 있다. 그러나, 모든 처리기 블록들이 실질적으로 동시에 실질적으로 동일한 연산들을 수행하고 있으므로(비록 잉여 행렬 의 상이한 일부들, 그리고 행과 열 요인 행렬 과 의 대응되는 상이한 일부들을 사용하지만), 상기 처리기 블록들 중 단지 하나, 즉 "마스터(master)" 처리기 블록이 그러한 제어 회로를 포함할 필요가 있다. 다른 처리기 블록들은 이때, 자신들의 타이밍과 제어 신호들을 상기 마스터 처리기 블록으로부터 취하는 "슬레이브(slave)" 처리기 블록들로 간주할 수 있다. 몇몇 실시예에서 상기 상태 머신은 상기 다중화기와 승산-가산 유닛들을 제어하여 다른 값들(특히 ; )을 연산하기에 앞서 먼저 분모 식 값( 와 )을 연산한다.
상기 하드웨어 가속기의 전체적인 구성을 참조하면, 위에서 언급한 바와 같이 행 행렬 내의 데이터는 예를 들면 160개의 행에 대하여 블록 집합, 예를 들면 8개의 블록(160 라인 디스플레이의 경우; 이 예에서는 라인 수와 서브-프레임의 수가 우연히 같음)으로 분할된다. 마찬가지로, 열 행렬은 다수의 블록, 예를 들면 10개의 블록 또는 360 열 디스플레이로 분할된다. 따라서, 각 처리기 블록은 행과 열 데이터 집합을 처리하며, 앞서 언급한 예에서는 20개의 행과 36개의 열에 대하여 데이터를 처리한다. 행 데이터 버스는 각 행 블록에 대하여 제공되며, 이는 상기 행 블록에 대한 데이터를 이 행 데이터를 처리하는 처리기 블록들의 집합(각 열 블록당 하나)에 제공한다. 마찬가지로, 각 열 블록은 열 블록에 대한 데이터를 상기 블록에 대한 열 데이터를 처리하는 대응되는 처리기 블록들(각 행 블록당 하나)에 제공하는 관련 열 데이터 버스를 가진다. 이하에서 설명하게 될 실시예들에서, 행 블록에 대한 행 데이터 버스와 열 블록에 대한 열 데이터 버스는 어느 한 시기에 단일 행(또는 열) 값, 예를 들면 8 비트 값을 전달한다. 이 경우에, 처리기 블록은 어느 한 시기에 하나의 행 값 그리고 하나의 열 값을 임의의 한번에 수신하거나 처리한다. 상기 처리기 블록 상태 머신은 처리하기 전에 한 번에 하나씩 행과 열 값들을 대응되는 행 행렬과 열 행렬 블록들로부터 제공하는 것을 제어하기 위한 행과 열 블록 메모리 제어 회로에 연결되며, 완전한 블록이 처리된 후에 (처리기 블록 내에 래치되는 것이 바람직한) 결과 데이터는 행과 열 요인 행렬의 누산과 업데이트를 위하여 관련된 행 또는 열 처리기 블록들의 체인을 통하여 상기 매스 블록들로 되돌려진다. 다시, 앞서 언급한 바와 같이, 바람직한 실시예에서 처리기 블록이 직각 행렬(rectangular matrix)을 형성하도록 4개의 결과 데이터 연결, 즉 두 개의 입력과 두 개의 출력을 가지므로 행과 열에 대한 결과 데이터는 처리기 블록들의 행렬을 동시에 통과하게 될 수 있고, 차후에 설명하게 될 예들에서는 북쪽 방향(열에 대하여) 및 서쪽 방향(행에 대하여)으로 통과될 수 있다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 다른 실시예들에서 예를 들면 처리기 블록에 두 개 이상의 행 그리고/또는 열 행렬 값들을 동시에 제공하기 위하여 더 넓은 행 그리고/또는 컬럼 블록 데이터 버스들이 채택될 수 있음을 알 수 있을 것이다. 이는 데이터 처리 속도를 증가시키지만, 이러한 더 넓은 데이터 버스들을 이용하기 위하여 더 많은 승산-가산 유닛들이 제공되는 것이 바람직하다. 예를 들면, 두 쌍의 행 및 열 데이터 값들을 동시에 처리하기 위하여 두 쌍의 승산-가산 유닛들이 제공되는 것이 바람직하다. 일반적인 경우에, 적어도 한 쌍의 승산-가산 유닛이 처리기 블록에 의하여 동시에 처리되는 행과 열 데이터 엘레먼트들의 각 쌍에 대하여 제공되는 것이 바람직하다. 잠재적으로 각각의 행과 열 데이터 블록의 모든 행과 열 데이터 항목들은 실리콘 영역이 증가하게 되는 대가로 속도의 증가를 위해 처리기 블록에 의하여 동시에 처리될 수 있다.
본 발명은 나아가 광전 디스플레이를 위한 구동기(driver)를 제공하는데, 특히 위에서 설명한 것과 같은 NMF 하드웨어 가속기를 포함하는 OLED 디스플레이와 같은 발광 디스플레이를 위한 구동기를 제공한다. 그러한 구동기와 함께 사용될 수 있는 발광 디스플레이의 예에는 수동 행렬 OLED 디스플레이, 무기(inorganic) LED 디스플레이, 플라즈마 디스플레이, 진공 형광 디스플레이, 그리고 iFire? 디스플레이와 같은 후막 및 박막 전자발광(electroluminescent) 디스플레이들이 있다.
몇몇 바람직한 실시예에서, 상기 하드웨어 가속기는 특히 위에서 언급한 현재 바람직한 NMF 절차에서의 연산을 수행하도록 구성된다. 따라서, 관련 실시태양에서 본 발명은 비-음수 행렬 인수분해(NMF) 연산을 가속하는 하드웨어적 방법을 제공하는데, 상기 연산은 아래의 식들을 반복적으로 결정하는 것을 포함하고;
여기서, 식 (1) 내지 식 (4)는 매 반복당 각 값에 대하여 평가되고, 여기서 는 가중 인자를 포함하며, 상기 방법은 각 값에 대하여; 대응되는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에 를 저장함; 위 식 (2)의 분모를 연산함; 와 를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산함; 식 (3)의 분모를 연산함; 및 와 를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (4)와 식 (3)의 분자에 대한 기여도(contributions)를 연산함을 포함한다.
여러 실시예들에서, 변수 는 0일 수 있는데, 이 경우에 이러한 변수의 제공이 생략될 수 있다. 가중 인자 는 구현예에 따라 스칼라, 벡터, 또는 행렬일 수 있으며, 혹은 는 생략될 수 있다(이 경우에 1 값이 주어짐).
대체로 말하면, 식 (1)과 (2)는 병행으로 평가되고, 복수의 처리기 블록들에 걸쳐 분산되며, 그 후에 이들 처리기 블록들로부터의 부분 결과들이 결합하게 된다. 마찬가지로, 식 (3)과 (4)는 유사한 방식으로 실질적으로 병행으로 평가되는 것이 바람직하다.
또다른 실시태양에서 본 발명은 비-음수 행렬 인수분해(NMF) 연산을 가속하는 하드웨어를 위한 시스템을 제공하며, 상기 연산은 아래의 식들을 반복적으로 결정하는 것을 포함한다;
여기서, 식 (1) 내지 (4)는 매 반복당 각 값에 대하여 평가되고, 여기서 는 가중 인자를 포함하며, 상기 시스템은; 대응되는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에 를 저장하는 수단; 위 식 (2)의 분모를 연산하는 수단; 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산하는 수단; 식 (3)의 분모를 연산하는 수단; 및 와 를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (4)와 식 (3)의 분자에 대한 기여도(contributions)를 연산하는 수단을 포함한다.
또 다른 실시태양에서 본 발명은 입력 행렬()을 한 쌍의 제1 및 제2 요인 행렬()로 인수분해하기 위한 비-음수 행렬 인수분해(NMF) 하드웨어 가속기를 제공하며, 상기 비-음수 행렬 인수분해 하드웨어 가속기는 상기 제1 요인 행렬()의 엘레먼트들을 저장하는 제1 메모리 저장부; 상기 제2 요인 행렬()의 엘레먼트들을 저장하는 제2 메모리 저장부; 상기 제1 메모리 저장부 및 상기 제2 메모리 저장부에 연결되고 복수의 NMF 동작들을 병행으로 수행하는 처리기들의 그리드(grid); 및 상기 입력 행렬()을 상기 처리기들의 그리드에 기록하는 것을 제어하고, 상기 처리기들을 제어하여 상기 제1 및 제2 요인 행렬들의 엘레먼트들을 대응되는 상기 제1 및 제2 메모리 저장부에 기록하는 것을 제어하는 제어기;를 포함한다.
위에서 설명한 하드웨어는 예를 들면 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Cirtcuit) 또는 커스텀 실리콘(Custom silicon) 상에서 구현될 수 있다. 따라서, 본 발명은 나아가 그러한 하드웨어를 기술하는 처리기 제어 코드를 반송하는 캐리어(carrier)(예를 들면 CD-ROM과 같은 디스크 또는 광학 또는 전기적 신호 캐리어)를 제공한다. 전형적으로, 이러한 특징을 가지는 하드웨어는 RTL(Register Transfer Level Code)와 같은 코드를 사용하거나, 좀더 높은 레벨에서는 예를 들면 SystemC와 같은 언어를 사용하여 기술된다.
몇몇 실시예에서 상기 하드웨어 가속기는 단일 집적회로 상에서 구현된다. 상기 제1 및 제2 요인 행렬 메모리는 온 칩(on-chip) 또는 오프 칩(off-chip)일 수 있다.
따라서, 다른 실시태양에서 본 발명은 행렬 인수분해를 위한 집적회로(IC)를 제공하며, 상기 IC는 제1 및 제2 요인 행렬로 인수분해하기 위하여 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하기 위한 입력; 각각이 제1 요인 행렬 메모리()의 블록에 저장된 데이터에 액세스하는 복수의 제1 데이터 버스; 각각이 제2 요인 행렬 메모리()의 블록에 저장된 데이터에 액세스하는 복수의 제2 데이터 버스; 그리고 처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬()의 일부를 저장하는 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1 입력과 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 포함하는 처리기 블록들의 행렬;을 포함한다.
여러 실시예들에서 각 IC는 처리기 블록들의 어레이를 제공하며, 상기 IC들은 확장가능한 하드웨어 구현(scalable hardware implementation)을 제공하기 위하여 그리드 정보로 스택되거나 연결될 수 있다. 앞서 언급한 본 발명의 실시태양들로부터의 특징들 중 어느 하나 또는 모두가 또한, 예를 들면 위에서 설명한 바와 같은 처리기 블록 그리고/또는 상호 연결들의 특징들을 포함하는 온 칩(on-chip)으로 제공될 수 있다. 특히, 상기 IC는 처리기 블록들 중 하나가 타이밍과 제어 신호들을 제공하는, 다른 처리기 블록들에 대한 마스터(master)로서 동작할 수 있게 한다. 그러나, 이러한 특징은 예를 들면 소정 신호에 의하여 외부에서 디세이블(disable)될 수 있는 것이 바람직하다. 이는 처리기들의 그리드에서 단지 하나의 IC가 하나 이상의 다른 IC들을 제어할 수 있게 하도록 단지 하나만이 마스터로 기능할 필요가 있기 때문이다. 따라서, 상기 타이밍과 제어 신호들은 또한 상기 IC와의 외부 연결을 통해 제공되는 것이 바람직하다.
관련된 실시태양에서, 본 발명은 입력 행렬()을 한 쌍의 제1 및 제2 요인 행렬()로 인수분해하기 위한 비-음수 행렬 인수분해(NMF)를 위한 집적회로(IC)를 제공하며, 상기 IC는 상기 제1 및 제2 요인 행렬()의 엘레먼트들을 각각 저장하는 제1 메모리 저장부 및 제2 메모리 저장부에 액세스하기 위해 외부 버스들에 연결된 처리기들의 그리드를 포함한다.
상기 처리기들은 각각 로컬 메모리를 포함하며, 상기 처리기는 복수의 슬레이브 처리기 그리고 마스터 처리기를 포함하고, 상기 마스터 처리기는 상기 슬레이브 처리기들에서 로컬 메모리의 어드레스 및 상기 슬레이브 처리기들의 데이터 처리 동작들 중 하나 또는 모두를 제어하도록 구성되는 것이 바람직하다.
여러 실시예들에서, 상기 그리드의 각 처리기는 상기 입력 행렬의 한 영역이 처리될 수 있도록 하는 상기 입력 행렬의 대응되는 일부를 처리하도록 구성된다. 그리고나서, 상기 IC들은 복수의 집적회로들이 상기 복수의 입력 행렬 영역을 처리하도록 연결될 수 있게 하는 외부 버스들을 가지는 것이 바람직하다. 예를 들면, 상기 그리드는 직각 그리드이고 집적회로는 북쪽, 남쪽, 동쪽, 그리고 서쪽 데이터 연결을 가질 수 있다.
상기 요인 행렬 메모리가 오프-칩인 경우에, 두개의 (빠른)온 칩 메모리 집합이 제공되는 것이 바람직한데, 제1 및 제2(행과 열) 요인 행렬 메모리들 각각에 대하여 하나씩 제공되는 것이 바람직하다. 각 집합은 (데이터를 판독하기 위한) 입력 버퍼, (데이터를 기록하기 위한) 출력 버퍼, 그리고 (데이터 작업을 위한) 캐시(cache)를 포함하는 것이 바람직하다.
본 발명의 이들 및 다른 실시태양들은 지금부터 단지 예로써만 첨부도면들을 참조하여 좀더 구체적으로 기술될 것이다.
도 1a와 도 1b는 각각 본 발명의 한 실시예에 따른 NMF 하드웨어 가속기를 포함하는 OLED 디스플레이와 구동기, 그리고 상기 디스플레이에 대한 대표적인 행과 열 구동기들의 세부를 보여주는 도면들이다.
도 2는 NMF 하드웨어를 포함하는 OLED 디스플레이 구동 시스템의 기능 블록도이다.
도 3은 도 2에 도시된 시스템에 대한 대표적인 행 구동기 하드웨어의 세부를 보여주는 도면이다.
도 4a 내지 도 4c는 각각 본 발명의 한 실시예에 따른 하드웨어 NMF 구성, 초기 타깃/잉여 행렬 및 관련된 행(R) 요인 행렬과 열(C) 요인 행렬, 그리고 도 4 a의 병렬 하드웨어 NMF 구성에 대한 행과 열 메모리 블록 대 처리기 블록 할당들의 세부를 보여주는 도면이다.
도 5는 도 4a 와 도 4c의 하드웨어 NMF 구성을 구현하는 full_proc 모듈의 블록도이다.
도 6은 R과 C 메모리를 로딩하는 절차를 보여주는 도면이다.
도 7은 분산된 Q 메모리 블록들을 로딩하는 절차를 보여주는 도면이다.
도 8은 메모리 제어 모듈의 블록도이다.
도 9는 행/열 매스 모듈의 블록도이다.
도 10은 처리기 블록 모듈의 블록도이다.
도 11a 내지 도 11d는 처리기 블록의 구성에서 4가지 연속 단계들을 보여주는 도면들이다.
도 12a 내지 도 12f는 본 시스템의 바람직한 일 실시예의 동작을 예시하는 처리기 블록 타이밍도들이다.
도 2를 지금부터 참조하면, 도 2에는 TMA(Total Matrix Addressing)을 수행하는 NMF 하드웨어를 포함하는 OLED 디스플레이 구동 시스템(200)이 기능 블록도로 도시되어 있다. 도시된 바와 같이, 상기 시스템은 비디오 입력을 가지며 TMA 구동 디스플레이(미도시)를 구동하기 위한 행과 열 구동 데이터 출력들(204,206)을 제공한다. 도 2의 시스템을 구현하기 위한, 특히 도입부에서 설명한 바람직한 NMF 연산을 수행하기 위한 NMF 하드웨어 가속기의 바람직한 실시예가 차후에 설명될 것이다. 그러나, 도 2에는 다수의 기능 블록들 상에 매핑된(mapped) 시스템의 동작이 도시되어 있고, 그리고 (차후에 설명될) 하드웨어 실시예에서 이러한 기능들에 하드웨어 블록들을 할당하는 것이 예시되어 있는 블록들의 기능적인 할당과 상이할 수 있다는 것이 당업자라면 이해할 것이다. 예를 들면, 차후에 설명될 하드웨어 가속기는 도시된 (비-NMF) 기능 블록들 중 일부 또는 모두를 구현하도록 디지털 신호처리기(DSP) 상에서 실행하는 소프트웨어에 의하여 제어될 수 있다. 그러나, 몇몇 바람직한 실시예에서, 예시되어 있는, 실질적으로 모든 기능들은 FPGA 상에서 구현된다.
도 2를 계속 참조하면, 블록 A(208)는 스케일링(scaling)을 처리한다. 특히 이러한 블록은 다음 기능을 수행한다;
1. 비디오 입력(202)으로부터 다음 프레임을 판독하고, 이를 원하는 해상도, 예를 들면 360 x 160 해상도(스케일링하기 위하여 샘플링하기보다는 평균을 취하는 것이 바람직함)로 스케일링하고, 이를 컬러당 8비트로 V 메모리(210)에 저장하며, 이 작업은 컬러 변환(아래 참조)을 수행한 후에 선택적으로 이루어진다. 또한 판독시 상기 프레임의 평균 휘도를 또한 (감마 룩업 테이블을 통하여, 하기 블록 B의 단계 2 참조) 연산하고, 레지스터 av(212)에 16-비트 값으로 저장한다.
3. 블록 B(216)에 완료 플래그를 지정한다.
4. 블록 B로부터의 완료 플래그를 기다린다.
5. 단계 1로 루프백한다.
블록 B(216)는 설정(setup) 기능들을 수행한다. 특히 이러한 블록은 다음과 같은 기능을 수행한다;
1. 블록 A로부터의 완료 플래그를 기다린다.
3. 블록 D(220)로부터의 완료 플래그를 기다린다.
6. 블록 A(208)와 C(218)에 완료 플래그를 지정한다.
7. 블록 C로부터의 완료 플래그를 기다린 후에 단계 1로 루프백한다.
블록 C(218)는 하드웨어 가속된 NMF 기능들을 수행한다. 특히, 이러한 블록은 다음과 같은 기능을 수행한다;
1. 블록 B로부터의 완료 플래그를 기다린다.
2. 예를 들면 이하에서 특정되는 바와 같은 NMF 기능을 수행한다.
3. 블록 D와 B에 완료 플래그를 지정한다.
4. 단계 1로 루프백한다.
블록 D(220)는 파이프라인된(pipelined) 후-처리(post-processing)를 수행한다. 특히, 이러한 블록은 다음과 같은 기능을 수행한다;
2. 버퍼 2(224)를 예약한다.
3. 블록 B(216)에 완료 플래그를 지정한다.
4. 블록 C(218)로부터의 완료 플래그를 기다린다.
6. 출력 제어 블록(226)에 새로운 버퍼가 준비되었음을 시그널링하고 확인을 기다린다.
7. 버퍼를 스와핑(swapping)한다.
8. 단계 3으로 루프백한다.
출력 블록들(226) E와 F는 출력 제어 기능을 수행한다. 이 블록들은 프레임 버퍼로부터의 데이터를 판독하고 이를 행과 열 구동기들에 출력한다. 도 3에는 도 2의 시스템을 위한 대표적인 행 구동기 회로의 세부가 도시되어 있으며, 이러한 행 구동기 회로는 도 1b의 배열에 유사한 방식으로 행 구동 비율들을 결정한다. 도 1b에 도시된 바와 같은 유사한 열 구동기 회로가 채택될 수 있다. 필요하다면, 스위스 소재의 STMicroelectronics로부터 입수가능한 STV8810(컬러/흑백 수동 행렬용 384 행 구동기)과 같은 적절한 열 구동기 집적회로가 사용될 수 있는데, 이러한 경우에, 상기 시스템은 이러한 IC를 구동하기 위한 타이밍 신호들을 생성할 수 있다. 각 구동기(204,206)는 쉬프트 레지스터를 통하여 서브-프레임 데이터를 클럭킹(clocked)하며, 모든 데이터가 가동중일 때 이전 서브-프레임 데이터가 타임-아웃될 때 그 데이터가 '로딩(loading)'된 다음에 디스플레이를 구동한다. 필요하다면, 하나의 데이터 포트가 사용될 수 있고 데이터 토큰은 행 구동기를 통하여 상기 열 구동기로 클럭킹될 수 있다. 또한 여러 실시예들에서 열 구동기의 직렬 포트를 통하여 열 구동기들에 의한 출력 전류가 설정된다. 서브-프레임 타이밍(t)이 이하에서 설명되는 바와 같이 상기 시스템에 의하여 제어되는 것이 바람직하다. 온 서브-프레임 디스플레이 주기 동안, 다음 서브-프레임에 대한 데이터가 로딩된다.
한 실시예에서, 평균적으로 520 개(360개 + 160개)의 데이터 샘플들을 가진 서브-프레임을 로딩하는 시간은 1/(90Hz)/(160개의 서브-프레임)=69μs이다. 상기 서브-프레임 시간은 10μs 내지 11ms의 범위로 변동하였으며 따라서 최대 요구 출력 데이터 속도는 47MB/s이었다. 이러한 실시예에서, 픽셀 클럭은 시간 t에서 63번 클럭킹하였으며, 최소 t는 6.4Mhz의 최대 클럭 속도가 주어질 때 10μs이었다. 최대 t는 5.7kHz의 최소 클럭 속도가 주어질 때 11ms이었다. 클럭 정밀도는 실질적으로 시간 t에서 63개의 싸이클을 보장할 정도로 충분한 것이어야 바람직하다. 만약 t가 서브-프레임에 대해 0이라면 이러한 서브-프레임은 스킵된다(0 시간에 대해 연속적인 서브-프레임들이 존재할 수 있다).
다음에는 디스플레이 데이터 처리, 특히 기본적인 핵심 NMF 절차의 한 실시예인 전-처리, 후-처리, 및 다른 선택적이지만 바람직한 성분들이 좀더 상세하게 설명될 것이다. 바람직한 실시예들에서, 상기 시스템은 실질적으로 최고의 비디오 속도(초당 25 프레임)에서 동작할 수 있다.
하기 표 1에는 저장 요건들과 함께 각 변수의 간단한 설명이 제공되어 있다.
변수(Varible) | 저장(비트) | 액세스 | 설명 |
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와 RxC간의 잔류 오차 |
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가 초기화되는 값 |
출력(output) | 2 x 555,840 | D 또는 출력 | 출력 행렬들은 이중 버퍼링된다 |
버퍼(buffers) | 제어 F,E | ||
C' | 360 x 160 x 6 | D,E | 출력 열 타이밍 |
R' | 160 x 160 x 8 | D,F | 출력 행 전류 비율 |
i | 160 x 3 x 6 | D,E | 서브-프레임 RGB 기준 전류 |
t | 160 x 10 | D,출력 제어 | 서브-프레임 타이밍 |
±= 부호를 가짐. 나머지 모든 값은 부호를 가지지 않음. |
먼저 바람직한 후 전-처리, 특히 컬러 범위(color gamut) 쉬프트가 설명될 것이다.
상기 핵심 절차는 의 값뿐만 아니라 3개(선택적으로는 4개-하기 참조)의 행렬 , , 그리고 를 통해 이루어진다. 이러한 행렬들은 행렬 에 수용되어 있는 입력 이미지에 대한 일부 간단한 조작을 기초로 하여 구성된다. 는 공간 절약을 위해 un-gamma'd 픽셀 휘도보다는 이미지의 8-비트 그레이-스케일 값을 수용한다.
이하의 식들에서 필요한 나머지 연산이 설명될 것이다. 언급되는 함수는 8-비트 그레이-스케일 값들을 16-비트 휘도 값들에 연관시키는 룩업 테이블이다. 이러한 룩업 테이블은 최대 8-비트 값(255)을 65024에 맵핑하는 2.4의 감마를 가정할 수 있다. 상기 감마 함수는 또한 입력 RGB 신호를 PLED(폴리머 LED) 프라이머리의 컬러로 보정하기 위해 에 대한 식을 사용하여 컬러 변환을 수행할 수 있다. 특정된 행렬 은 프로그램가능하고 부호를 갖는 12-비트 정수의 어레이로 저장될 수 있다. 처음에 상기 행렬은 256*항등 행렬로 설정될 수 있다.
마지막으로 과 의 모든 엘레먼트들은 동일한 로 설정되어야만한다. 의 값은 의 리드-인(read-in) 동안에 연산될 수 있는데, 예를 들면 블록 A와 B에서 모두 감마 테이블 룩업을 이용하여 연산될 수 있지만, 이들 중 어느 것도 동시에 액세스할 필요가 없다. 그러나 대체 구현예들이 가능하다.
다시 블록 C(218, 하드웨어 가속된 NMF)를 참조하면, 한 실시예에서 기본적인 절차는 다음과 같은 4가지 단계(식)를 차례로 수행하는데, 각 반복 i에 대하여 그리고 각 반복 내에서 각 서브-프레임 p(p=1에서부터 160에 이르기까지)에 대하여 수행된다;
고정값 bias는 가중치이며, 이는 0일 수 있지만, 여러 실시예들에서 64 내지 128 범위의 값을 가질 수 있다. 여러 실시예들에서 5 내지 100번, 예를 들면 약 20번의 반복이 각 서브-프레임에 대하여 수행된다. 와 에 대하여 구해지는 값들은 과 의 부호를 갖지 않는 8-비트 저장 값으로 잘리는 것이 바람직하다(그리고 만약 0보다 작거나 255보다 크다면 적절한 한도로 설정되는 것이 바람직하다). 와 에 대한 식들에서, 분모는 변하지 않으므로 각 y에 대하여(에 대하여) 또는 각 x에 대하여(에 대하여) 연산을 다시 할 필요가 없다(그러나, 이는 이하에서 논의되는 몇몇 변형예(variant)들에 대한 경우와는 다르다). 분자와 분모의 임시 저장 값들은 제산 때까지 정밀도가 손상되지 않는 충분한 비트들을 갖는 것이 바람직하다. 하드웨어 NMF는 위의 4가지 식들에서 2개 이상의 합/곱 엘레먼트들의 실질적인 병행 연산을 허용하도록 파이프라인되는 것이 바람직하다.
다음에는 바람직한 실시예들에서 효과적으로 스케일링을 수행하여 도 2의 시스템으로부터 (펄스 폭 변조에 의한) 열 전류의 실질적인 직접 구동과 행 비율들(row ratios)을 허용하는 후-처리가 설명될 것이다. 이러한 후-처리는 여러 상이한 방법으로 수행될 수 있지만, 일반적인 단계들은 이하에 주어져 있는 식에 의하여 예시될 것이다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 스케일링 인자 그리고 주어진 유사한 것들이 특정한 응용에 따라 수정될 수 있음을 이해할 것이다.
지금부터 와 열 기준 전류를 이용하여 가 스케일된다(바람직한 실시예들에서는 예를 들면 비록 다른 실시예들에서 특정한 행 구동 값들이 각 행에 대하여 연산될 수 있지만 도 1b를 참조하여 설명된 타입의 행 구동기에서 행들은 자동으로 비율이 조정된다);
그리고
, 적(red), 녹(green), 청(blue) 각각에 대하여 6비트로 잘리는 것이 바람직하고, 여기서 는 각각 적, 녹, 청 픽셀들을 위한 공칭(nominal) 기준 전류를 나타내는 3개의 6-비트 값의 집합이며 외부에서 프로그램가능한 것이 바람직하다. 대표적인 디폴트 값들은 51,39, 51이다.
그리고 나서, (비록 다른 실시예들에서 PWM 클럭이 변경될 수 있지만) 이 주어지면 적절한 PWM 구동에 이르기까지 가 스케일링(스트레칭;stretching)되는 것이 바람직하다;
상기 절차에 대한 수정이 가능하다. 예를 들면 이미지의 녹색 채널 상의 잡음이 적색 또는 청색 채널 상의 잡음보다 더 현저하다는 관측에 기초하여, 약간의 추가 연산으로 지각적인 컬러 잡음 감소가 가능하다. 이는 기본적인 NMF 절차에 대한 위의 식들을 다음과 같이 수정한다;
다른 변형예에서는 비록 상당한 추가 연산이 필요하지만 낮은 그레이-레벨 잡음이 감소하게 되며 최종 이미지가 잠재적으로 상당히 향상된다. 위에서 설명한 절차는 스크린상에 생성되는 이미지의 선형 오차를 최소화하도록 작용한다. 그러나, 지각(perception)이 매우 비선형적이므로 이는 낮은 휘도 레벨에서 지각 오차가 높아지게 되는 결과를 초래하는 경향이 있다(1 비트 변화는 더 큰 백분율 변화를 나타낸다). 이는 (선택적이며 구현에 의존하여) 에 기초한 가중 인자 를 포함시킴으로써 보정될 수 있다. 이러한 실시예에서 는 이하에서 설정된 바와 같이 정의된다(여기서 유념할 점은 앞서 언급한 가중치 는 일반화된 가중 인자이라는 점이다):
추가로 위에서 언급한 컬러 가중 인자가 예를 들면 를 3 비트로 증가시키고 각 녹색 픽셀당 1을 추가시킴으로써 또는 각 녹색 열에 대하여 비트 쉬프트를 하드코딩(hardcoding)함으로써 또한 포함될 수 있다. 이러한 선택적인 특징을 포함시키기 위하여는 각 비율(ratio)에 대하여 분모를 재연산하는 것이 필요하고, 그래서 반복 당 요구되는 연산 회수가 상당히 증가하게 된다. 이에 대한 보상으로서, 결과적으로 얻어지는 해는 우수하며 더 신속하게 수렴한다.
지금부터 이러한 시스템에 대한 바람직한 하드웨어 구조가 더 상세하게 설명될 것이다.
하드웨어 구현-세부
지금부터 각 160개의 서브-프레임당 20번의 반복을 하면서 25fps의 프레임 속도를 이루는, Xilinx Virtex-4 SX35 FPGA 상에서 이루어진 하드웨어 구현이 상세하게 설명될 것이다. 본 구현은 위에서 설명한 바와 같은 데이터의 전-처리와 후-처리를 포함한다.
앞서 설명한 바와 마찬가지 방식으로, 상기 절차의 1회 반복은 각 서브-프레임 p당 한번, 이하의 식들의 NUM_ITERATIONS 반복 실행들을 포함한다;
상기 알고리즘은 타깃 이미지 또는 그것으로부터 획득되는 이미지 행렬과 동일하게 설정되는 행렬 로 시작한다. 이는 메모리에 수용되어 있으며 NUM_ROWS x NUM_COLS 차원을 가지며, 과 메모리들의 모든 엘레먼트들은 와 동일하게 설정된다. 상기 알고리즘은 MUM_SUBFRAMES 서브-프레임을 사용하므로, 과 데이터를 수용하기 위한 메모리들은 NUM_ROWS x NUM_SUBFRAMES와 NUM_COLS x NUM_SUBFRAMES 크기를 각각 가진다.
처리기 블록이 이러한 식들을 병행으로 구현하는 것이 설명될 것인데, 여기서 속도에 대해, 처리기 블록이 제1 쌍의 식들(식 (1)과 (2)) 그리고 나서 제2 쌍의 식들(식 (3)과 (4))을 쌍별로 연산하는 것을 기초로 하여 병행으로 구현하게 된다. 대체로 말하면, 각 처리기 블록에 의해 부분 연산이 수행되고, 여러 그러한 블록들이 FPGA에서 복제되어 한번에 ,,의 하나 이상의 값이 판독 및 연산될 수 있게 한다. 이러한 방식으로, 상기 알고리즘 동작 속도가 25fps의 속도에서 필요한 행과 열 행렬들인 과 를 연산하기에 충분할 정도로 증가하게 된다.
도 4a에는 병렬 하드웨어 구조(400)의 개략도가 도시되어 있는데, 상기 병렬 하드웨어 구조에서 메모리는 분할(segment)되어 x_blocks x y_blocks 처리기 블록들(402)로 병합되어 있으며, 상기 처리기 블록들(402) 각각은 메모리의 p x q 세그먼트를 포함한다. 여기서;
적절한 메모리 위치 내의 전달 및 그 위치로부터의 전달은 메모리 제어 블록 (404; mem_control)에 의하여 제어된다. 동일한 행에 있는 모든 처리기 블록들(402)은 공통 메모리(406)를 공유하며, 동일한 열에 있는 처리기 블록(402)들은 동일한 메모리(408)를 공유한다. 각 처리기 블록으로부터의 부분적인 결과들은 그의 이웃하는 처리기 블록으로 전달되며, 이는 결합기(매스(math)) 블록들(410,412)에 도달할 때까지 계속되며, 상기 결합기(매스) 블록들에서는 결과들이 결합되고 식 (2)와 (3)에서 필요한 제산이 수행된다.
도 4a에 도시된 병렬 하드웨어 구조(400)는 (도 5에 도시된) full-proc 모듈(500)에 의하여 구현되며, 이러한 full-proc 모듈은 상기 하드웨어의 입력과 출력을 정의하고 상기 처리기 블록들(402)의 복제에 의한 TMA(Total Marix Addressing) NMF 절차의 가속화된 연산을 가능하게 한다. 도 4a에서, 차후에 부가적으로 설명되겠지만, 이러한 처리기 블록들 중 하나(402*)는 마스터 처리기 블록이고 다른 처리기 블록들에 (점선으로 표시된) 제어 신호들을 제공하여 이러한 제어회로의 중복을 줄인다.
공통 C(Column; 열) 메모리(406)는 블록들로 분할되며, 각각의 블록은 열들의 집합을 처리(열들의 집합에 대한 데이터를 저장)하며; 공통 R(Row; 행) 메모리(408)는 마찬가지로 논리적으로 분할된다. 이는 도 4b와 4c에 개략적으로 예시되어 있는데, 여기서 360개의 열들에 대한 데이터가 각각 36개의 열들을 취급하는 10개의 처리기 블록들 사이에 "수평으로" 나뉘어져 있으며, 160개의 행들에 대한 데이터는 각각 20개의 행들을 취급하는 8개의 처리기 블록들 사이에 "수직으로" 나뉘어져 있다. 그러므로, 대체로 말하면 상기 하드웨어는 각 처리기가 북, 남, 동, 그리고 서쪽 데이터 연결을 가지는 타일 처리기 구조(tiled processor architecture)를 가지며, 그러한 데이터 연결을 통해 처리기 블록들은 서로 데이지 체인 방식으로 연결된다. 예시된 바와 같이, 결과 데이터는 처리기 블록들을 거쳐 각 열과 행 매스 블록들과 메모리들을 향해 북과 서쪽으로 전달된다.
행렬 는 상기 처리기 블록들 내에 분산 방식으로 저장되는데, 이러한 예에서 각 블록은 36x20 워드 메모리 영역을 가지며 듀얼 포트로 이루어지는 것이 바람직하고, 그래서 동시에 판독 및 기록될 수 있다. 이는 일단 식(3)에서의 의 첫번째 값이 를 이용하여 업데이트되면 식(4)의 평가가 진행됨으로써 의 후속 값들에 대한 연산에 영향을 주지 않고 를 업데이트하는 것이 가능하도록 복제(replication)되는 것이 바람직하다. 상기 행렬 는 처리기 블록들에 저장되지만 결코 방치되지는 않는다-그것은 단지 과 를 업데이트하기 위하여 잉여부분(residuals)을 저장하는 것뿐이다.
행 내의 각 처리기 블록은 그것이 취급하는 행 집합에 대한 (판독/기록) 데이터 버스 에 연결되고; 마찬가지로 열 내의 각 처리기 블록은 그것이 취급하는 열들의 집합에 대한 (판독/기록) 데이터 버스 에 연결된다.
상기 하드웨어의 한 버전에서 이러한 데이터 버스들의 동작을 예시하기 위하여 앞서 논의된 36열 x 20행의 예에 대하여 처리기 블록에 대한 과값들의 완전한 집합을 요구하는 연산을 고려한다; 행과 열 데이터 블록을 액세스하기 위하여 r_valid 신호가 활성화(assertion)되지만 상기 r-값들의 지수 0이 출력되면 c_valid가 활성화되고 대응되는 (36) c-값들이 판독된다. 이 다음에 c_valid 값이 한 클럭 싸이클 동안 불활성화(de-assertion)된 다음에, 다시 활성화되면 동일한 집합 36 c-값들이 r_index=1인 경우에 판독되고 이하 마찬가지로 블록에 대한 모든 r-값들이 판독될 때까지 진행된다. 이때, c_valid와 r_valid 모두 불활성화된다. 상기 하드웨어의 다른 버전에서, c-값들의 완전한 집합이 각 r-값에 대하여 동시에 판독되고; 변형적으로는 r-값들의 완전한 집합이 각 c-값에 대하여 동시에 판독될 수도 있고 각 c-값에 대한 블록에 대하여 (각 r-값에 대한 c-값들의 집합보다는) r-값들의 완전한 집합을 판독하면서 한 블록에 대한 r-값과 c-값이 앞서 설명한 바와 같이 순차적으로 판독될 수도 있다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진자라면 일반적으로 데이터가 판독되는 순서가 특정한 곱 연산에 필요한 순서에 따라 선택될 것이라는 점을 이해할 것이다. 한 바람직한 실시예에서 연산에 필요한 곱들은 도 11을 참조하여 더 상세하게 설명될 것이다.
각 처리기 블록은 (결과) 데이터 입력과 출력을 가지며, 이들은 (각 체인의 입력단에서 0에 연결하는) 도 4a에 도시된 바와 같이 데이지 체인 방식으로 연결된다. 모든 처리기들로부터의 결과들이 동시에 준비되므로, 데이터(하나의 스칼라 결과 값)는 클럭 싸이클당 한 블록의 속도로 매스 블록들(410,412) 내로 체인들을 따라 쉬프트(shift)된다. 따라서, 예를 들면 매스 블록에 의한 누산과 부가적인 처리를 위하여 그리고 행 메모리 내의 후속 저장을 위하여 (스칼라) 결과를 10개의 처리기 블록을 따라 서쪽(West)으로 전달하는데 10개 클럭 싸이클들이 사용된다.
도 5를 지금부터 참조하면, 도 5에는 (완전한 TMA 과정을 구현하는) full_proc 모듈(500)의 블록도가 도시되어 있으며, 특히 상기 모듈에 대한 외부 연결이 도시되어 있다. 한 바람직한 실시예에 대하여 도 5에 도시된 신호들 각각의 타입, 폭, 그리고 설명은 하기 표 2에 제공되어 있다.
신호 | 타입 | 폭 | 설명 |
clk_in | 입력 | - | 입력 클럭 신호 |
clk_out | 출력 | - | |
reset_in | 입력 | - | 입력 리셋 신호 |
reset_out | 출력 | - | 출력 리셋; 이 신호가 로우로 될 때 데이터가 full_proc 모듈로 전달될 수 있음 |
Q_in | 입력 | [15:0] | Q 메모리에 대한 입력 데이터 |
R_out | 출력 | [7:0] | |
C_out | 출력 | [7:0] | |
R_valid_out | 출력 | - | R과 C 메모리들 내의 데이터가 유효할 때 하이 |
C_valid_out | 출력 | - | |
Q_valid_in | 입력 | - | Q 메모리 내의 데이터가 유효할 때 하이 |
init_cols | 입력 | - | 유효한 행과 열 기록 데이터를 특정하는 입력 신호들. 행과 열 메모리들이 어드레싱되는 동안 하이로 되어야 함 |
init_rows | 입력 | - | |
bias | 입력 | [7:0] | |
iRC | 입력 | [7:0] | R과 C 메모리들의 초기값들을 설정하기 위한 입력 데이터 |
calc_disable | 입력(디버그) | - | 비디오 프레임들의 로딩을 금지함 |
한 바람직한 실시예에서 상기 full_proc 모듈(500)은 다음과 같이 초기화된다;
1. 적절한 클럭 신호가 clk_in 에 인가된다.
2. reset_in은 초기에 하이(high)로 설정되고, 그리고 나서 적어도 100ns 후에 로우(low)로 된다.
3. reset_out 신호가 로우로 되기 전에 어떠한 데이터도 full_proc 모듈로 전달되지 않는다. 이는 FPGA의 디지털 클럭 관리자(DCM; digital clock manager)의 LOCKED 출력의 역수이고 FPGA의 디지털 클럭 관리자(DCM)가 clk_in의 버퍼링된 버젼에 의하여 제어되므로, reset_out 신호가 유효화되기 전까지 지연이 관측된다.
다음에는 블록들 간의 데이터 전달이 부가적으로 설명될 것이다. 메모리가 분할되므로, 그리고 과 메모리들에 하나 이상의 서브프레임의 데이터가 담겨져 있기 때문에, 데이터는 올바른 순서로 , ,그리고 메모리들 내로 로드되어야만 한다. 도 6에는 과 메모리 로딩 순서(즉, 블록별, 한 번에 서브-프레임들의 집합에 대한 데이터)가 도시되어 있으며, 이러한 순서는 다수의 이미지 서브-프레임들의 존재로 복잡해진다. 화살표는, 메모리들이 로 로드될 때 알고리즘의 개시시 한번, 그리고 그 메모리들에 원하는 결과가 담길 때 상기 알고리즘의 종료시 한번 각 메모리의 데이터 엘레먼트들이 액세스되는 순서를 나타낸다.
1. 알고리즘의 개시시, 의 적절한 값이 선택되어야 하고 init_rows와 init_cols 라인들은 NUM_ROWS x NUM_SUBFRAMES 그리고 NUM_COLS x NUM_SUBFRAMES 클럭 싸이클 동안 각각 활성화되어야 한다(즉 를 모든 행과 열에 기록함).
2. kr_bias, kc_bias, kr_bias_iRC, 그리고 kc_bias_iRC 신호들은 항상 올바른 값으로 설정되어야 하는데, 여기서
-메모리 데이터는 도 7의 화살표로 나타낸 바와 같이, 남쪽 방향으로 처리기 블록들을 통해 순차적으로 쉬프트함으로써 각 처리기의 메모리 내로 로드된다(알다시피, 이는 이미지 픽셀들을 메모리들 내의 위치로 재순서화하는 것을 포함함). 각 처리기의 블록 메모리의 열들이 동시에 액세스된다.
신호 Q_vailid는 이미지 행렬의 첫번째 값이 full_proc으로 전달될 때 활성화되고, 메모리들이 행렬의 값들로 로드되는 동안 NUM_COLS x NUM_ROWS에 대해 하이로 유지된다.
지금부터, 도 5에 도시된 full_proc 모듈의 서브-모듈들의 동작의 세부가 설명될 것이다. rc_mem_control로부터 개시될 것이다.
데이터 로딩과 언로딩 신호들, 행/열 메모리 제어 라인들, 그리고 디버깅 신호들을 포함하는 rc_mem_control 모듈에 대한 연결들이 도 8에 도시되어 있다. rc_mem_control 모듈은 행과 열 메모리들에 대하여 메모리 제어기로서 동작한다. 자신의 내부 상태 머신의 현재 상태에 따라, rc_mem_control은 상기 열과 행 메모리들에 대한 적절한 어드레스들을 제공한다. 도 8에 도시된 신호들 각각의 설명은 하기 표 3에 제공되어 있다.
신호 | 타입 | 폭 | 설명 |
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] | proc블록에 대한 행/열 메모리들의 포트 A로부터 R과 C 벡터들의 판독을 제어함. 초기상태 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'b000에서만 허용됨. |
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 데이터가 유효함을 나타냄. proc 블록들은 이러한 신호들에 따라 자신들의 상태를 업데이트함(섹션 X.X 참조) |
finished_loading_RandC | 출력 | - | R과 C 메모리들이 로드되었음을 나타냄 |
finished_loading | 출력 | - | 모든 Q, R, 그리고 C 메모리들이 로드되었고 연산이 개시할 수 있음을 proc 블록들에 알려주는데 사용됨. |
state | 출력(디버그) | [3:0] | 내부 상태 머신 상태 |
subframe_count | 출력(디버그) | [4:0] | 서브-프레임 번호 |
iteration_count | 출력(디버그) | [7:0] | 반복 수 |
여러 바람직한 실시예들에서, 상태 머신은 어느 메모리 위치들이 액세스되는지를 결정하는데 채택되는데, 이는 또한 평가되는 식들에 의존한다. 상태 머신의 값들 간의 관계, rc_mem_control 모듈의 동작, 그리고 평가되는 식은 하기 표 4에 제공되어 있는데, 이는 머신의 기능을 효과적으로 정의한다.
상태 | 출구 조건(Exit Condition) | 설명 |
4'b0000 | q_load_done=1 | R과 C 메모리들이 로드되고 언로드됨 |
4'b0001 | finished_sending=1 | 를 연산하기 위해 R 벡터의 각각의 값에 대하여 (NUM_ROWS 횟수로) 보내지는 C 벡터 |
4'b0010 | finished_sending=1 | 를 연산하기 위하여 한번 보내지는 C 벡터 |
4'b0011 | finished_sending=1 | 를 연산하기 위하여 NUM_ROWS 횟수로 보내지는 C 벡터 |
4'b0100 | finished_sending=1 | 를 연산하기 위하여 한번 보내지는 R 벡터 |
4'b0101 | finished_sending=1 | 를 연산하기 위하여 NUM_COLS 횟수로 보내지는 R 벡터 |
4'b0110 | finished_sending=1 | f를 연산하기 위하여 NUM_COLS 횟수로 보내지는 R 벡터 |
4'b0111 | iteration_count | 만약 알고리즘이 마무리된다면, 즉 반복 카운트=NUM_ITERATION-1이면, 상태 4'b0000으로 복귀함. 그렇지 않으면 상태 4'b0001로 진행함. |
지금부터, 도 9에 도시된 블록도에 따라 row_col_math_c와 row_col_math_r 모듈이 설명될 것이다. row_col_math 블록들의 기능은 proc 블록들로부터의 데이터를 취하여 누적하고 특히 식 (2)와 식 (3)에서 설명한 바와 같이 제산을 수행하는 것이다. 자원 면에서 볼 때 디바이더 블록이 많은 비용을 치러야 하기 때문에, 식 (2)와 식 (3)의 피제수(devidend)는 분모의 역수로 승산되는 분자로서 연산된다. 분모의 역수는 모든 proc 블록들에 대하여 동일하므로, 이러한 값은 단지 row_col_math 마스터 블록에서 연산되어 슬레이브 블록들로 전달될 필요가 있다. 그러므로, 단지 마스터 블록만이 디바이더(divider)를 포함하며 나머지 슬레이브 블록들은 비교적 간단한 승산만 수행한다.
와 가 누산될 때, 이들은 그들의 역수를 연산하기 위하여 디바이더 블록으로 전달된다. 로 승산된 결과는 식 (2)와 식 (3)에 의하여 요구되는 제산을 효과적으로 수행하기 위하여 승산기(multiplier)로 전달된다. 역수 연산이 누산에 비하여 비교적 오래 걸리므로, 작은 FIFO가 중간 결과를 수용하는데 사용된다. 도 9에 도시된 신호들 각각의 설명은 하기 표 5에 제공되어 있다.
신호 | 타입 | 폭 | 설명 |
k_bias_iRC | 입력 | [31:0] | 식 X당 적절한 값으로 설정되는 상수 |
k_bias | 입력 | [31:0] | 식 X당 적절한 값으로 설정되는 상수 |
d_input | 입력 | [31:0] | 연산되는 식에 의존하는 proc 블록들로부터의 Q, R, 또는 C 데이터 |
dv_input | 입력 | - | 하이일때, d_input 상의 데이터가 유효함을 나타냄. |
data_out | 출력 | [7:0] | 식 (2)와 (3)에 규정된 제산의 결과를 포함함 |
data_out_valid | 출력 | - | 하이일때, data_out 상의 데이터가 유효함을 나타냄. |
denom_mult_output | 출력 | [17:0] | 분모(또는 )의 역수, 마스터 블록의 출력 |
denom_mult_input | 입력 | [17:0] | 분모(RTR 또는 CTC)의 역수, 슬레이브 블록들에 대한 입력 |
div_result_valid | 입력/출력 | - | 하이일때, denom_mult_output 상의 데이터가 유효함을 나타냄. 이는 마스터 블록으로부터의 출력이고; 모든 슬레이브 블록들 상에서 이러한 신호는 입력임에 유념하기 바람. |
지금부터 proc 블록들이 설명될 것인데, 그의 일 예가 도 10에 도시되어 있다. 식 (1) 내지 식 (4)에서 설명한 연산들 중 일부를 수행하는 상기 proc 블록들은 다음과 같은 컴포넌트들을 포함한다;
1. 2개의 "DSP48"(승산-가산) 블록; 이들은 식 (2)와 식 (3)에 의하여 요구되는 승산-누산 기능들을 수행한다.
4. 제어기, 예를 들면 연산의 개시와 종료를 결정하고 처리기 블록이 연산해야 할 식들의 쌍이 식 (1)과 식 (2)인지 또는 식 (3)과 식 (4)인지를 결정하는 상태 머신
앞서 언급한 바와 같이, 처리기 블록들을 도 4a에 도시된 방식으로 연결하는 한가지 이점은, 모든 블록들 간에 상호 연결이 존재하기 때문에, 하나의 proc 블록이 마스터로 동작할 수 있고 나머지는 슬레이브들로 동작할 수 있다는 것이다. 이러한 설계에서, 로직의 수량이 상당히 감소하게 되는데, 그 이유는 비록 마스터 블록이 위의 모든 컴포넌트들 1 내지 4를 포함하고 있다 하더라도 슬레이브 블록들이 어드레스 생성기 또는 상태 머신을 포함하고 있지 않기 때문이다.
마스터 proc 블록의 동작, 그의 내부 상태 머신의 상태, 그리고 평가되는 식 간의 관계는 하기 표 6에 나타나 있는데, 이는 상기 머신의 기능을 효과적으로 정의한다.
상태 | 출구 조건(Exit Condition) | 설명 |
3'b111 | q_load_done=1 | 초기상태, 이 상태에서 새로운 Q 행렬이 로드됨. |
3'b000 | Q_addr at TOP_Q_ADDRESS | |
3'b001 | c_done=1 | |
3'b010 | Q_addr at TOP_Q_ADDRESS | |
3'b011 | r_done=1 | |
3'b100 | Q_addr at TOP_Q_ADDRESS | |
3'b101 | Q_addr at TOP_Q_ADDRESS | |
3'b110 | Q_addr at TOP_Q_ADDRESS | subframe_count=NUM_SUBFRAMES x NUM_ITERATIONS일 때, 알고리즘의 종료시에 도달하게 되는 상태. 다음 상태는 3'b111임. |
개별 처리기들 사이에서, full_proc 모듈에서의 데이터의 이동은 북, 남, 동, 그리고 서 데이터와 데이터 유효 라인들을 통해 이루어진다. 데이터가 이동될 것임을 나타내는 c_shift와 r_shift가 활성화되는 동안, d_south와 d_east로부터의 데이터는 인접 처리기 블록의 d_north와 d_west 상에 래치된다. 각 proc 블록이 연산을 마무리하면 활성화되는, 데이터 유효 라인들 dv_north, dv_south, dv_east, 그리고 dv_west에서도 마찬가지이다. 이런 방식으로, 데이터는 full_proc 모듈의 북과 서를 향해 이동하게 되기 때문에, 이는 항상 행/열 매스 블록에 이르게 된다. 도 10에 도시된 신호들 각각의 설명은 이하 표 7에 제공되어 있다.
신호 | 타입 | 폭 | 설명 |
clk | 입력 | - | 클럭 신호 |
reset_in | 입력 | - | 리셋 신호 |
Q_load_done | 입력 | - | Q 메모리의 로딩이 완료되면 활성화됨 |
r | 입력 | [7:0] | R 메모리로부터의 데이터 |
r_valid | 입력 | - | 하이일때, r 상의 데이터가 유효함을 나타냄 |
d_north | 출력 | [31:0] | proc 블록의 데이터 라인들. 입력들(북과 동)과 출력들(남과 서)은 full_proc 모듈 내의 데이터 흐름이 row_col_math 블록들을 향하여 북-서로 이루어지도록 구성됨. |
d_south | 입력 | [31:0] | |
d_east | 입력 | [31:0] | |
d_west | 출력 | [31:0] | |
dv_north | 출력 | - | 데이터 유효 라인들. 각 proc 블록이 연산을 마무리하였을 때, 개별 라인들은 활성화되어, 북-서 순서로 각 처리기를 턴온하게 됨. |
dv_south | 입력 | - | |
dv_east | 입력 | - | |
dv_west | 출력 | - | |
c | 입력 | [7:0] | C 메모리로부터의 데이터 |
c_valid | 입력 | - | 하이일때, c 상의 데이터가 유효함을 나타냄 |
Q_shift_north | 입력 | [15:0] | 입력 데이터를 다음의 최남단 proc 블록으로 쉬프트하기 위하여 Q 메모리를 로딩할 때 사용됨(섹션 X 참조) |
Q_shift_south | 출력 | [15:0] | 그 다음의 최남단 proc 블록의 Q_shift_north에 대한 연결 |
Q_valid | 입력 | - | 유효한 Q 데이터를 로딩할 때 활성화됨(섹션 X 참조) |
c/r done | 출력 | - | r_valid와 c_valid가 로우로 될 때 하이로 됨 |
c/r shift | 출력 | - | 데이터가 proc 블록들을 통해 서쪽과 북쪽 방향으로 각각 쉬프트될 때 하이. |
dsp_reset | 출력 | - | proc 블록 내의 DSP48 블록의 동작과 모드를 제어하는 신호들 |
dsp_subtract | 출력 | - | |
dsp_opmode | 출력 | [6:0] | |
Q_addr_output | 입력/출력 | [9:0] | 판독 또는 기록되는 Q 메모리의 메모리 어드레스. 이러한 신호는 마스터 proc 블록의 출력이며 다른 모든 슬레이브 proc 블록들의 입력임. |
Q_addr_output_del | 입력/출력 | [9:0] | 한 클럭 싸이클만큼 지연된 Q_addr_output 신호. 이는 마스터 블록의 출력이고 모든 슬레이브 블록들의 입력임. |
op_mode | 출력 | [3:0] | 표 X에서 제공된 바와 같은 처리기 블록들의 현재 상태 |
op_mode_delayed | 출력 | [3:0] | 한 클럭 싸이클만큼 지연된 처리기 블록의 현재 상태 |
다음으로, 도 11a 내지 도 11d를 참조하면, 도 11a 내지 도 11d에는 처리기 블록(402)의 구성에서 4개의 연속 스테이지(stage)가 도시되어 있다. 도 11a로부터 볼 수 있는 바와 같이, 상기 처리기 블록은 행렬 의 일부를 저장하기 위한 BRAM(Block Random Access Memory)(1100)을 포함한다. 이러한 메모리는, 예를 들면 도 11b와 도 11d에서 도시된 바와 같이 듀얼 포트로 이루어지고; 한 실시예에서는 36x20 16-비트 메모리 위치들이 제공된다. 또한, 처리기 블록(402) 내에는 (앞서 언급한 FPGA에 대하여 "DSP48s"라고 지칭되는) 두 개의 디지털 신호 처리 모듈들(1102,1104)이 포함되어 있다. 이러한 모듈들 각각은 가산기(adder)(1108)에 연결된 승산기(1106)를 포함하는데; 상기 모듈들 중 하나(1104)는 승산-누산 유닛으로서 구성된다. 상기 DSP 모듈들(1104,1106)에 대한 입력은 DSP 모듈들에 대한 데이터 입력을 행 버스 또는 열 버스 중의 하나 또는 메모리 블록(1100)에 선택적으로 연결되는 것을 허용하는 다중화기(multiplexer)들(도 11에는 미도시)에 의해 선택가능하다. 또한, 상기 처리기 블록(402)들은 동기를 위한 클럭형 래치(clocked latch)들을 포함한다. 특히, 래치(1110)들은 하나의 스칼라 결과 값을 래치하므로 결과 데이터가 처리기 블록들의 체인을 따라 전달될 수 있게 한다. 이러한 래치들은 DSP 모듈의 출력 또는 상기 체인 내의 이전 처리기 블록으로부터의 데이터 중 하나를 래치하도록 다중화기(1112)를 채택하는, 선택가능한 입력들을 지닌다. 도 11d로부터 볼 수 있는 바와 같이, 처리기 블록(1102) 내의 가산기는 또한 감산기(subtractor)로서 구성될 수 있다. 도 11d에는 또한 앞서 언급한 바와 같이 식 (3)과 식 (4)의 연산들을 실질적으로 병행처리하기 위하여 블록 메모리(1100)로부터의 데이터를 저장하기 위한 버퍼(1114)가 도시되어 있다.
도 11a 내지 도 11d를 계속 참조하면, 도 11a에서, DSP 모듈(1104)은 예시된 바와 같이 를 연산하도록 구성된다. 따라서, 앞서 언급한 예에서, 상기 처리기 블록은 이러한 연산을 수행하기 위하여 36개의 값들을 수신한다. 그리고나서, 처리기 블록은, DSP 모듈(1102)이 도시된 바와 같이 값들의 집합을 연산하는 한편 DSP 모듈(1104)이 도시된 바와 같이 와 의 곱을 연산하도록 도 11b에 도시된 바와 같이 재구성된다. 이러한 연산을 위하여, 36개의 값들들은 20개의 값들 각각에 대하여 제공될 수 있다. 도 11a와 도 11b에서, 결과 데이터는 동에서 서로 전달된다.
도 11c에서, 처리기 블록(402)은, 을 연산하도록 도 11a와 마찬가지로 구성되고, 결과 데이터는 북으로 전달된다. 도 11d에서, 상기 처리기 블록(402)은 의 업데이트된 값을 연산하고 처리기 블록들의 체인의 북상으로 전달되는 와 데이터의 곱을 누산하도록 구성된다. 앞서 언급한 바와 같이, 식 (2)와 식 (3)의 제산들은 개별 행과 열 매스 블록들 중 하나에서 단지 한번만 수행될 필요가 있고, 그런 후에 역수로 승산함으로써 구현될 수 있다.
다음으로는 도 12a 내지 도 12e를 참조하여 하드웨어, 특히 처리기 블록들의 동작이 설명될 것이다. 먼저 알고리즘의 처음 절반부의 평가가 설명될 것이다.
알고리즘의 처음 절반부는 먼저 다음과 같은 식을 평가한다:
그리고나서, 동시에 다음과 같은 식을 평가한다;
한 바람직한 실시예에서, 가 처리기 블록들을 통하여 통상 북-남으로 이동하기 때문에 단지 최북단(즉 맨위) 블록들만이 식 (8)을 푸는 데 필요하다. 이는 먼저, 식 (10)의 분모 가 상기 처리기 블록들이 부분 합들을 내놓을 때 준비될 수 있도록 풀리게 된다. 식 (9)는 풀려서 처리기 블록들의 내부에 완전히 저장된다. 상기 도면들에 도시되어 있는 모든 신호들은 자신들의 완전한 인스턴스화된 명칭들 다음에 나타나게 되는데, 예를 들면 신호 r-valid는 '/proc_test2_tb_v/uut/r_valid'로서 나타나 있다.
도 12a에 도시된 타이밍도에는 식 (8)에 대하여 맨위, 맨 좌측 블록(즉 최북단, 서쪽 블록)으로 전달되는 데이터가 도시되어 있다. 이러한 블록은 신호 c_valid가 활성화될 때 36개의 c 값들을 수신한다. 버스 신호 r은 정의될 필요가 없다(이는 식 (8)에 의하여 요구되지 않음). 맨 위 처리기 블록들의 결과적인 부분 합들은 처리기 블록 내의 레지스터에 배치된 다음에, d_east에서부터 d_west에 이르기까지 서쪽 방향으로 전달되어; 적절한 매스 블록에 의하여 누산된다(신호 dv_east는 동쪽으로부터 처리기 블록으로 들어오는 유효한 데이터를 나타내며, dv_west는 처리기 블록으로부터 나와 서쪽으로 가는 유효한 데이터를 나타낸다).
도 12b와 도 12c에는 식 (9)와 (10)을 풀기 위하여 공급되는 데이터의 타이밍이 도시되어 있다. 특히, 도 12b에는 맨 위, 맨 좌측 블록으로 전달되는 첫번째 두 개의 행 값들에 대한 타이밍도가 도시되어 있고, 도 12c에는 맨 위, 맨 좌측 블록으로 전달되는 모든 데이터에 대한 타이밍도가 도시되어 있다. 다시, 부분 합들이 (행과 열 데이터가 각각 공급된 후에, 그리고 평가되는 다음 행과 열 데이터가 공급되는 동안에) 매스 블록에 의하여 누산되고, 그래서 알고리즘의 다음 절반부에 대하여 준비된 행 메모리에 저장되어 준비되도록 동에서 서로 전달된다.
지금부터, 알고리즘의 다음 절반부의 평가가 설명될 것이다.
알고리즘의 다음 절반부는 먼저 다음과 같은 식을 평가한다;
그리고 나서, 동시에 다음과 같은 식을 평가한다;
식 (13)에는 가 필요하므로(이는 평가하는데 시간이 걸리며-식 (12)가 먼저 풀려야 함), 상기 처리기 블록들은 를 내부적으로 지연시키지 않고 동시에 위의 식들을 풀 수 없다. 도 12d에는 식 (4)를 풀기 위하여 맨위, 맨 좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다.
가 평가된 후에, 의 첫번째 값들이 풀리게 된다. 각 r_valid 펄스 후에 스톨링(stalling)을 피하기 위하여(스톨(stall)은 승산기 대기시간이 를 푸는데 필요하게 됨), 식 (12)는 식 (13)에 비하여 하나의 r_vaild 펄스만큼 앞서게 되며; 그리고 는 처리기 블록에서 내부적으로 2 x R_BLOCK_SIZE=40 만큼 버퍼링된다(그래서 올바른 값들 들이 의 올바른 값들로 승산하게 된다). 이는 도 12e에 도시되는데, 도 12e에는 식 (12)에 대하여 맨 위, 맨 좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다.
도 12f는 식 (12)와 식 (13)이 동시에 풀리게 될 때, 맨위, 맨좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다. 부분 합들은 남에서 북으로 열 누산기 블록들에 전달되는데, 그 블록들에서 가 평가되어 다음 반복을 위해 준비되는 열 메모리에 저장된다.
상기 하드웨어가 또한 입력 데이터 전-처리기를 포함하는 것은 선택사항이기는 하지만 상기 하드웨어가 입력 데이터 전-처리기를 포함하는 것이 바람직하다. 이는 다음과 같은 기능들 중 하나 이상을 구현할 수 있다; 4:2:2 휘도-크로미넌스 데이터를 위한 디코더, (위에서 설명한 바와 같이, 를 연산하기 위해 행렬 승산기를 포함할 수 있는) 색 공간 변환기, 그리고 인터레이스 비디오(interlaced video)를 위해, (2 라인, x 방향의 4 픽셀, 즉 2 x 4 어레이를 통해) 평균 함수를 수행하는 모듈.
위에서 설명한 기법들의 실시예들은 수동 행렬 TV 크기의 스크린(예컨대 8" 이상)을 능동 행렬 TV 크기의 스크린보다 단지 소비 전력이 조금 올라가기는 하지만 매우 낮은 가격으로 허용하게 하는 이미지 데이터 처리를 제공한다. 상기 하드웨어 가속기는 또한 도입부에서 설명한 바와 같이 광범위한 다른 응용을 위하여 사용될 수 있다. 따라서, 여러 실시예들에서 데이터는 다수의 집합으로 존재하고 타깃은 하나 이상의 축(axis) 상의 각 집합으로부터의 데이터, 및 다른 축 상의 데이터의 속성(예를 들면 타입들의 집합, 분류 또는 줄어든 파라미터 분석)을 포함한다. 여러 실시예들에서, 상기 속성들은, 다중 집합들에 걸친 컴포넌트 또는 속성의 합에 의미가 있도록 부가될 수 있다. 이러한 기법들은 네트워크 보안을 위하여 얼굴 그리고 다른 이미지의 매칭/인식을 위한 이미지 데이터를 처리하는데 채택될 수 있으며 - 예를 들면, 이를 테면 콘텐츠 기반 텍스트 필터링에 의하여 구성된 사용자 프로파일의 의미론적 표현을 처리하기 위하여, 입력 데이터의 감소된 표현을 제공하도록 데이터베이스에서 다변량(multivariate) 데이터를 처리하기 위하여, 예를 들면 주요 컴포넌트 분석을 수행하도록 다른 여러 종류의 센서 데이터 처리를 위하여, 이를 테면 표정 공간에서 국소화된 특징들을 발견하거나 결합 또는 상호작용 장소들을 발견하도록 유전자, 프로테옴(proteome), 뉴클레오티드, 또는 아미노산 배열 데이터와 같은 마이크로어레이 또는 생물학적 배열 데이터의 처리, 분석 또는 컴포넌트 분석을 위하여, 기계 학습을 위하여, 예를 들면 객체 또는 객체의 부분들, 이미지들, 사운드들, 텍스트, 또는 워드들 등을 나타내는 데이터를 분석하기 위하여, 그리고 일반적으로 데이터 분석 및 패턴 인식을 위하여 채택될 수 있다.
다른 여러 효과적인 변형예들이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 고려될 수 있을 것이다. 본 발명은 앞서 설명한 실시예들에 한정되지 않고 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 자명하게 되며 본원 명세서에 첨부된 청구범위의 사상과 범위 내에 포함되는 수정예들을 포함하는 것으로 이해하여야 한다.
Claims (29)
- 서로 승산될 때 타깃 행렬(target matrix)로 근사화되는 한 쌍의 요인 행렬(factor matrix)을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)에 있어서,상기 하드웨어 가속기는,상기 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력;제1 요인 행렬()에 대한 행 데이터와 열 데이터를 저장하는 제1 요인 행렬 메모리로서, 제1 요인 행렬메모리는 복수의 제1 데이터 버스를 가지며, 상기 제1 데이터 버스들은 각각 상기 제1 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제1 요인 행렬 열 데이터에 액세스(access)하는, 제1 요인 행렬 메모리;제2 요인 행렬()에 대한 행 데이터와 열 데이터를 저장하는 제2 요인 행렬 메모리로서, 제2 요인 행렬 메모리는 복수의 제2 데이터 버스를 가지며, 상기 제2 데이터 버스들은 각각 상기 제2 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제2 요인 행렬 행 데이터에 액세스하는, 제2 요인 행렬 메모리;처리기 블록들의 행렬로서, 각 처리기 블록은, 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬()의 일부를 저장하는 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1입력과 상기 제1 처리기 블록 데이터 버스 및 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 다시 기록하는 것을 제어하기 위한 제어회로;를 포함하며,상기 행렬 인수분해는 비-음수 행렬 인수분해(NMF; non-negative matrix factorisation)를 포함하는, 행렬 인수분해 하드웨어 가속기.
- 제2항에 있어서, 상기 처리기 블록은 데이터를 상기 처리기 메모리 블록에 기록하고 상기 처리기 메모리 블록으로부터 데이터를 판독하기 위한 한 쌍의 상기 제3 처리기 블록 데이터 버스를 가지며, 상기 처리기 블록들은 상기 제3 처리기 블록 데이터 버스들에 의해 데이지 체인(daisy-chain) 방식으로 연결되는, 행렬 인수분해 하드웨어 가속기.
- 제1항에 있어서, 상기 처리기 블록은 2개의 상기 결과 데이터 출력과 2개의 결과 데이터 입력을 가지며, 상기 처리기 블록들의 행렬은 상기 결과 데이터 입력과 출력에 의해 2가지 방향에서 데이지 체인 방식으로 연결되는 처리기 블록들의 직각 행렬(rectangular matrix)을 포함하는, 행렬 인수분해 하드웨어 가속기.
- 제1항에 있어서,상기 행렬 인수분해 하드웨어 가속기는,상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리 각각에 다시 기록하기 위해 상기 처리기 블록들의 행렬로부터 수신된 데이터를 누산하도록 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 연관된 제1 매스(math) 블록 및 제2 매스 블록을 더 포함하는, 행렬 인수분해 하드웨어 가속기.
- 제5항에 있어서, 상기 제1 매스 블록 및 제2 매스 블록 각각은 마스터(master) 매스 블록과 하나 이상의 슬레이브(slave) 매스 블록을 포함하며, 상기 마스터 매스 블록은 상기 하나 이상의 슬레이브 블록들에 대한 출력을 가지는 디바이더 유닛(divider unit)을 포함하며, 상기 하나 이상의 슬레이브 블록 각각은 상기 디바이더 유닛 출력에 연결된 입력을 가지는 승산기 유닛을 포함하는, 행렬 인수분해 하드웨어 가속기.
- 제5항에 있어서, 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리는 동시에 상기 처리기 블록들에 대한 판독 액세스 및 상기 매스 블록들에 의한 기록 액세스를 허용하도록 듀얼 포트(dual-port)로 이루어진 메모리를 포함하는, 행렬 인수분해 하드웨어 가속기.
- 제1항에 있어서, 상기 처리기 블록들은 마스터 처리기 블록과 복수의 슬레이브 처리기 블록들을 포함하며, 상기 마스터 블록은, 상기 슬레이브 처리기 블록들에서, 상기 처리기 블록 메모리의 어드레스와 상기 슬레이브 처리기 블록들 내의 상기 데이터 처리기들의 동작 중의 하나 또는 양자 모두를 제어하도록 구성되는, 행렬 인수분해 하드웨어 가속기.
- 제1항에 있어서, 상기 승산-가산 유닛은 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스에 연결된 제1 승산 입력 및 제2 승산 입력, 상기 처리기 메모리 블록의 판독 출력에 연결된 가산 입력 및 상기 처리기 메모리 블록의 기록 입력에 연결된 출력을 가지며, 상기 데이터 처리기는 승산-가산 유닛을 더 포함하고 상기 승산-가산 유닛은 상기 승산-가산 유닛의 출력에 연결된 제1 승산 입력과 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스 중의 하나에 선택적으로 연결가능한 제2 승산 입력을 가지며, 그리고 상기 데이터 처리기의 출력에 연결된 출력을 가지는 승산-누산 유닛으로서 구성되는, 행렬 인수분해 하드웨어 가속기.
- 제1항에 있어서, 상기 데이터 처리기는 제1 비트길이의 변수들과의 정수 연산(integer arithmetic)을 사용하도록 구성되고, 상기 처리기 메모리 블록은 상기 제1 비트 길이의 두 배 길이인 정수 변수들을 저장하도록 구성되는, 행렬 인수분해 하드웨어 가속기.
- 삭제
- 제1항 내지 제12항 중 어느 한 항의 행렬 인수분해 하드웨어 가속기를 포함하는, 집적 회로.
- 제1항 내지 제12항 중 어느 한 항의 행렬 인수분해 하드웨어 가속기를 포함하는 OLED 디스플레이 구동기.
- 행렬 인수분해를 위한 집적 회로(IC; integrated circuit)로서, 상기 행렬 인수분해는 비-음수 행렬 인수분해(NMF; non-negative matrix factorisation)를 포함하는, 행렬 인수분해를 위한 집적 회로에 있어서,상기 집적 회로는,처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중의 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중의 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬()의 일부를 저장하기 위한 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1 입력, 상기 제1 및 제2 처리기 블록 데이터 버스 중의 하나 또는 양자 모두에 연결된 제2 입력, 그리고 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬;을 포함하는, 행렬 인수분해를 위한 집적 회로.
- 제1항의 행렬 인수분해 하드웨어 가속기를 사용하여 비-음수 행렬 인수분해(NMF) 연산의 하드웨어 가속 방법으로서, 상기 연산은 하기 식들,을 반복적으로 결정하는 것을 포함하고 상기 식 중, xy, py, xp는 ,,그리고 의 열들 및 행들을 각각 나타내며 는 0으로 나누어지는 것을 방지하도록 하는 변수이고 상기 식 (1) 내지 (4)는 매 반복당 각 값에 대하여 평가되며 는 가중 인자를 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 방법에 있어서,상기 식 (2)의 분모를 연산하며;상기 식 (3)의 분모를 연산하고; 그리고
- 제1항의 행렬 인수분해 하드웨어 가속기를 사용하여 비-음수 행렬 인수분해(NMF) 연산의 하드웨어 가속 시스템으로서, 상기 연산은 하기 식들,을 반복적으로 결정하는 것을 포함하고 상기 식 중, xy, py, xp는 ,,그리고 의 열들 및 행들을 각각 나타내며 는 0으로 나누어지는 것을 방지하도록 하는 변수이고 상기 식 (1) 내지 식 (4)는 매 반복당 각 값에 대하여 평가되며 는 가중 인자를 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 시스템에 있어서,상기 시스템은;상기 식 (2)의 분모를 연산하는 수단;상기 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산하는 수단;상기 식 (3)의 분모를 연산하는 수단; 및을 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 시스템.
- 제18항의 시스템을 포함하는 디스플레이 구동기.
- 제17항의 방법을 구현하는 하드웨어를 기술하는 처리기 제어 프로그램 코드를 포함하는 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 저장 매체.
- 상기 비-음수 행렬 인수분해 하드웨어 가속기는,상기 제1 및 제2 메모리 저장부에 연결되고 복수의 비-음수 행렬 인수분해(NMF) 연산을 병행처리하는 처리기들의 그리드(grid); 및상기 입력 행렬()을 상기 처리기들의 그리드에 기록하는 것을 제어하고 상기 처리기들을 제어하여 상기 제1 및 제2 요인 행렬들의 엘레먼트들을 상기 제1 및 제2 메모리 저장부에 각각 기록하는 제어기;를 포함하는, 비-음수 행렬 인수분해 하드웨어 가속기.
- 제21항에 있어서,상기 비-음수 행렬 인수분해 하드웨어 가속기는,상기 처리기들을 상기 제1 및 제2 메모리 저장부에 각각 연결하는 복수의 제1 데이터 버스들과 복수의 제2 데이터 버스들을 가지는, 비-음수 행렬 인수분해 하드웨어 가속기.
- 제23항에 있어서, 상기 각각의 처리기는, 상기 처리기 메모리 영역으로부터 획득된 데이터를 수신하기 위한 제1입력과 상기 제1 및 제2 데이터 버스들 중의 하나에 연결된 적어도 하나의 제2 입력을 가지며 상기 제1 및 제2 메모리 저장부 중의 하나 또는 양자 모두에 데이터를 제공하기 위하여 상기 비-음수 행렬 인수분해(NMF) 연산을 수행하도록 구성된 적어도 하나의 승산-가산 유닛을 포함하는, 비-음수 행렬 인수분해 하드웨어 가속기.
- 제25항에 있어서, 상기 처리기들은 각각 로컬 메모리를 포함하며, 상기 처리기들은 복수의 슬레이브 처리기들 그리고 마스터 처리기로 구성된 하나의 처리기를 포함하고, 상기 마스터 처리기는, 상기 슬레이브 처리기들에서, 상기 로컬 메모리의 어드레스 및 상기 슬레이브 처리기들의 데이터 처리 동작 중의 하나 또는 양자 모두를 제어하도록 구성되는, 비-음수 행렬 인수분해를 위한 집적회로.
- 제25항 또는 제26항에 있어서, 상기 처리기들의 그리드의 각 처리기는 상기 입력 행렬의 영역이 처리가능하도록 하는 상기 입력 행렬의 대응되는 일부를 처리하도록 구성되고, 상기 외부 버스들은 복수의 상기 집적회로들이 복수의 상기 입력 행렬 영역들을 처리하도록 연결될 수 있도록 구성되는, 비-음수 행렬 인수분해를 위한 집적회로.
- 제18항의 시스템을 포함하는 디스플레이.
- 제18항의 시스템을 구현하는 하드웨어를 기술하는 처리기 제어 프로그램 코드를 포함하는 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0605748.3 | 2006-03-23 | ||
GB0605748A GB2436377B (en) | 2006-03-23 | 2006-03-23 | Data processing hardware |
PCT/GB2007/050141 WO2007107795A2 (en) | 2006-03-23 | 2007-03-21 | Data processing hardware |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090008264A KR20090008264A (ko) | 2009-01-21 |
KR101363602B1 true KR101363602B1 (ko) | 2014-03-17 |
Family
ID=36383966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087025852A KR101363602B1 (ko) | 2006-03-23 | 2007-03-21 | 데이터를 처리하는 하드웨어 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8300057B2 (ko) |
EP (1) | EP2002356A2 (ko) |
JP (1) | JP5241699B2 (ko) |
KR (1) | KR101363602B1 (ko) |
CN (1) | CN101454773B (ko) |
GB (1) | GB2436377B (ko) |
TW (1) | TWI430112B (ko) |
WO (1) | WO2007107795A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101843243B1 (ko) | 2015-10-30 | 2018-03-29 | 세종대학교산학협력단 | 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치 |
Families Citing this family (28)
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 |
GB0421712D0 (en) * | 2004-09-30 | 2004-11-03 | Cambridge Display Tech Ltd | Multi-line addressing methods and apparatus |
GB0421710D0 (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 |
WO2012090076A1 (en) * | 2010-12-28 | 2012-07-05 | 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 |
JP5890539B2 (ja) * | 2012-02-22 | 2016-03-22 | ノキア テクノロジーズ オーユー | 予測に基づくサービスへのアクセス |
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 |
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 |
US10175980B2 (en) | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US10360163B2 (en) | 2016-10-27 | 2019-07-23 | Google Llc | Exploiting input data sparsity in neural network compute units |
US10032110B2 (en) | 2016-12-13 | 2018-07-24 | Google Llc | Performing average pooling in hardware |
US10037490B2 (en) | 2016-12-13 | 2018-07-31 | 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 |
WO2019126030A1 (en) * | 2017-12-18 | 2019-06-27 | Mythic, Inc. | Systems and methods for mapping matrix calculations to a matrix multiply accelerator |
CN109036272B (zh) * | 2018-08-29 | 2020-07-24 | 芯颖科技有限公司 | 多线寻址驱动系统及方法 |
WO2020078470A1 (zh) | 2018-10-18 | 2020-04-23 | 上海寒武纪信息科技有限公司 | 片上网络数据处理方法及装置 |
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04233062A (ja) * | 1990-06-08 | 1992-08-21 | Fr Telecom | ベクトルの処理方法およびその回路 |
US20040249615A1 (en) | 2001-12-21 | 2004-12-09 | Radek Grzeszczuk | Surface light field decomposition using non-negative factorization |
US20050179623A1 (en) | 2002-05-02 | 2005-08-18 | Koninklijke Philips Electronics N.V. | Driver for non-linear displays comprising a random access memory for static content |
Family Cites Families (10)
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 |
DE69416441T2 (de) * | 1993-04-22 | 1999-10-07 | Matsushita Electric Ind Co Ltd | Ansteuervorrichtung für Flüssigkristall-Anzeige |
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 | 面計算機及び面計算機における演算処理方法 |
JP4335537B2 (ja) * | 2001-05-11 | 2009-09-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 並列データ処理のためのデバイス、及び当該デバイスを有するカメラシステム |
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 |
-
2006
- 2006-03-23 GB GB0605748A patent/GB2436377B/en not_active Expired - Fee Related
-
2007
- 2007-03-21 EP EP07733566A patent/EP2002356A2/en not_active Withdrawn
- 2007-03-21 US US12/225,449 patent/US8300057B2/en not_active Expired - Fee Related
- 2007-03-21 CN CN2007800190644A patent/CN101454773B/zh not_active Expired - Fee Related
- 2007-03-21 JP JP2009500937A patent/JP5241699B2/ja not_active Expired - Fee Related
- 2007-03-21 KR KR1020087025852A patent/KR101363602B1/ko not_active IP Right Cessation
- 2007-03-21 WO PCT/GB2007/050141 patent/WO2007107795A2/en active Application Filing
- 2007-03-22 TW TW096109936A patent/TWI430112B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04233062A (ja) * | 1990-06-08 | 1992-08-21 | Fr Telecom | ベクトルの処理方法およびその回路 |
US20040249615A1 (en) | 2001-12-21 | 2004-12-09 | Radek Grzeszczuk | Surface light field decomposition using non-negative factorization |
US20050179623A1 (en) | 2002-05-02 | 2005-08-18 | Koninklijke Philips Electronics N.V. | Driver for non-linear displays comprising a random access memory for static content |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101843243B1 (ko) | 2015-10-30 | 2018-03-29 | 세종대학교산학협력단 | 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치 |
Also Published As
Publication number | Publication date |
---|---|
EP2002356A2 (en) | 2008-12-17 |
GB2436377B (en) | 2011-02-23 |
CN101454773A (zh) | 2009-06-10 |
GB0605748D0 (en) | 2006-05-03 |
JP5241699B2 (ja) | 2013-07-17 |
GB2436377A (en) | 2007-09-26 |
US8300057B2 (en) | 2012-10-30 |
CN101454773B (zh) | 2012-02-15 |
US20090128571A1 (en) | 2009-05-21 |
KR20090008264A (ko) | 2009-01-21 |
TWI430112B (zh) | 2014-03-11 |
WO2007107795A2 (en) | 2007-09-27 |
WO2007107795A3 (en) | 2008-04-17 |
TW200745879A (en) | 2007-12-16 |
JP2009530730A (ja) | 2009-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101363602B1 (ko) | 데이터를 처리하는 하드웨어 | |
CN100456355C (zh) | 控制器驱动器、使用其的液晶显示装置及液晶驱动方法 | |
US20020011979A1 (en) | Liquid crystal driving device for controlling a liquid crystal panel and liquid crystal display apparatus | |
JPH07281636A (ja) | 液晶表示装置に用いられる駆動装置ならびに列電極駆動用半導体集積回路および行電極駆動用半導体集積回路 | |
JPH01287600A (ja) | 表示装置およびその動作方法 | |
JP2006310943A (ja) | 表示制御装置及びルックアップテーブルの生成方法 | |
CN101339753A (zh) | 液晶显示装置和用于液晶显示装置的控制驱动器 | |
KR102372026B1 (ko) | 표시 장치 및 이를 포함하는 전자 시스템 | |
JP3169763B2 (ja) | 液晶表示パネルの階調駆動装置 | |
JPH09138670A (ja) | 液晶表示装置の駆動回路 | |
JP3593455B2 (ja) | アクティブマトリックス型液晶表示装置のソースドライバーにおけるデコーダテスト制御装置及びこれを用いたデコーダテスト方法 | |
JP2004240428A (ja) | 液晶表示装置、液晶表示装置の駆動装置及び方法 | |
AU676928B2 (en) | Real time active addressing display device and method utilizing fast walsh transform circuit | |
KR20020076389A (ko) | 개선된 디더링 및 프레임 레이트 제어를 갖는 엘시디제어기 및 그것의 개선 방법 | |
CN110610679B (zh) | 一种数据处理方法及装置 | |
KR100520918B1 (ko) | 발광 다이오드 표시 패널의 휘도를 조절하는 구동제어 장치 | |
CN105741726A (zh) | 时序控制器和包含时序控制器的显示设备 | |
JP4561532B2 (ja) | 検証シミュレータ及び検証シミュレーション方法 | |
CN118098145A (zh) | 节能方法、节能电路、驱动芯片、显示面板、led显示装置 | |
JP2015200722A (ja) | 半導体装置及び表示装置 | |
JP4561665B2 (ja) | 検証シミュレータ及び検証シミュレーション方法 | |
JPH10143120A (ja) | 液晶表示装置 | |
KR200334695Y1 (ko) | 발광 다이오드 표시 패널의 휘도를 조절하는 구동제어 장치 | |
JPH09244594A (ja) | 液晶表示駆動回路 | |
CN112750401A (zh) | 显示驱动装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |