KR101363602B1 - 데이터를 처리하는 하드웨어 - Google Patents

데이터를 처리하는 하드웨어 Download PDF

Info

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
Application number
KR1020087025852A
Other languages
English (en)
Other versions
KR20090008264A (ko
Inventor
유안 크리스토퍼 스미스
니콜라스 로렌스
Original Assignee
캠브리지 디스플레이 테크놀로지 리미티드
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 캠브리지 디스플레이 테크놀로지 리미티드 filed Critical 캠브리지 디스플레이 테크놀로지 리미티드
Publication of KR20090008264A publication Critical patent/KR20090008264A/ko
Application granted granted Critical
Publication of KR101363602B1 publication Critical patent/KR101363602B1/ko

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

본 발명은 일반적으로 데이터 처리 하드웨어에 관한 것이며, 보다 상세하게는 행렬 인수분해(matrix factorisation) 특히 비-음수 행렬 인수분해(NMF: non-negative matrix factorisation)를 위한 하드웨어 가속기 및 관련 방법들에 관한 것이다. 본 발명의 실시예들은 유기발광 LED(OLED; organic light emitting diode) 디스플레이와 같은 전자발광(electroluminescent) 디스플레이들을 구동하는데 특히 유용하다.
서로 승산될 때 타깃 행렬(target matrix)로 근사화되는 한 쌍의 요인 행렬(factor matrix)
Figure pct00399
을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)가 제공되며, 상기 하드웨어 가속기는 상기 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력; 제1 요인 행렬(
Figure pct00400
)에 대한 행 데이터와 열 데이터를 저장하는 제1 요인 행렬 메모리로서, 제1 요인 행렬 메모리는 복수의 제1 데이터 버스를 가지며, 상기 제1 데이터 버스들은 각각 상기 제1 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제1 요인 행렬 열(column) 데이터에 액세스(access)하는 제1 요인 행렬 메모리; 제2 요인 행렬(
Figure pct00401
)에 대한 행 데이터와 열 데이터를 저장하는 제2 요인 행렬 메모리로서, 제2 요인 행렬 메모리는 복수의 제2 데이터 버스를 가지며, 상기 제2 데이터 버스들은 각각 상기 제2 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제2 요인 행렬 행(row) 데이터에 액세스하는 제2 요인 행렬 메모리; 처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬(
Figure pct00402
)의 일부를 저장하는 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록과 연결된 제1 입력과 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스 중 하나 또는 양자 모두에 연결된 제2입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및 상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬메모리에 다시 기록하는 것을 제어하기 위한 제어회로;를 포함한다.

Description

데이터를 처리하는 하드웨어{Data Processing Hardware}
본 발명은 일반적으로 데이터를 처리하는 하드웨어에 관한 것이며, 보다 상세하게는 행렬 인수분해(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 연산의 일 예를 아래에서 설명한다.
입력 이미지가 엘레먼트
Figure pct00001
를 가진 행렬
Figure pct00002
로 주어지는데,
Figure pct00003
은 전류 행 행렬을,
Figure pct00004
는 전류 열 행렬을,
Figure pct00005
Figure pct00006
Figure pct00007
사이의 잔류 오류(remaining errors)를,
Figure pct00008
는 서브-프레임의 수를,
Figure pct00009
는 평균값을, 그리고
Figure pct00010
는 선택적인 감마 보정 함수를 나타낸다.
변수들은 다음과 같이 초기화된다;
Figure pct00011
Figure pct00012
Figure pct00013
이때, NMF 시스템의 일 실시예는
Figure pct00014
에서부터 서브-프레임의 총수에 이르기까지 이하의 연산을 수행한다;
start
각 x 와 y에 대하여,
Figure pct00015
각 y에 대하여,
Figure pct00426
각 x에 대하여,
Figure pct00017
각 x 와 y에 대하여,
Figure pct00018
loop to start (p <- p+1)
변수
Figure pct00019
는 0으로 나누어지는 것을 방지하고, R과 C의 값들은 이 값으로 접근한다.
Figure pct00020
의 값은 initialRC x weight x no.of.columns에 의하여 결정될 수 있는데, 여기서 열의 수(no.of.columns)는 x이고 가중치(weight)는 예를 들면 64와 128 사이이다.
대체로 말하면, 상기 연산은 최소자승법(least square fit)으로 특징지어질 수 있다. 행렬
Figure pct00021
는 처음에 타깃 행렬(target matrix)의 형태로 시작하는데, 그 이유는 행 행렬
Figure pct00022
과 열 행렬
Figure pct00427
는 일반적으로 그들 모두의 엘레먼트들이 동일한 것들로서 평균값
Figure pct00024
와 같도록 초기화되기 때문이다. 그러나 이때부터 행렬
Figure pct00025
는 이미지와, 서브-프레임 결합결과 간의 잉여차(residual difference)를 나타냄으로써 이상적으로는
Figure pct00026
이다. 그러므로, 대체로 말하면, 상기 절차는 서브-프레임
Figure pct00027
에 대한 기여도(contribution)를 더함으로써 시작한 다음에 나서 각 행에 대하여 최적의 열 값들을 찾는다. 그리고나서, 각 열에 대하여 최적의 행 값들을 찾는다. 그리하여 업데이트된 행과 열 값들은
Figure pct00028
에서 다시 감해지고, 상기 절차는 다음 서브-프레임에 대하여 속행된다. 전형적으로, 예를 들면 1에서부터 100에 이르기까지의 다수의 반복이 수행되어 서브-프레임 집합에 대한
Figure pct00029
Figure pct00030
가 최적-적합(best-fit)으로 수렴한다. 채택된 서브-프레임의 수
Figure pct00031
는 경험적 선택(empirical choice)이지만, 예를 들면, 1에서부터 1000에 이르기까지의 경험적 선택일 수 있다.
본원 명세서에서 본 발명이 속하는 기술분야에서 통상의 지식을 가지는 자라면 행과 열에 대한 참조들은 상호 교환가능하고, 예를 들면 위의 식들에서 업데이트된
Figure pct00032
Figure pct00033
값들을 결정하기 위한 처리 순서가 교환될 수 있다는 점을 이해할 수 있을 것이다.
상기의 식들에서, 모든 정수 연산이 채택되는 것이 바람직하고
Figure pct00034
Figure pct00035
값들이 8 비트 값들을 포함하고
Figure pct00036
가 부호(sign)를 갖는 16비트 값들을 포함하는 것이 바람직하다. 이때,
Figure pct00037
Figure pct00038
값들의 결정은 반올림(rounding off)을 포함할 수 있지만,
Figure pct00039
는 반올림된 값들로 업데이트되기 때문에
Figure pct00040
에는 반올림 오류가 없다(그리고
Figure pct00041
Figure pct00042
값들의 곱은
Figure pct00043
내에 수용될 수 있는 최대값보다 클 수 없다). 상기 절차는 컬러 디스플레이의 픽셀들에 직접 적용될 수 있다(차후에 상세히 기술됨). 선택적으로 가중치
Figure pct00044
행렬이 낮은 휘도값의 오류에 더 높은 가중치를 부여하기 위하여 채택될 수 있는데, 그 이유는 사람의 눈이 불완전한 흑색에 불균형적으로 민감하기 때문이다. 유사한 가중치의 적용이 녹색 컬러 채널의 오류에 가중치를 증가시키도록 이루어질 수 있는데, 그 이유는 사람의 눈이 녹색 오류에 불균형적으로 민감하기 때문이다.
상기의 NMP 절차에 기초한 디스플레이 구동 시스템의 실제 구현을 위한 전형적인 파라미터 집합은 초당 25 프레임의 원하는 프레임 속도를 가질 수 있으며, 각 프레임은 예를 들면 160개의 서브-프레임을 가지고 상기 절차의 20번 반복을 포함한다. 20번의 반복과 160개의 서브-프레임을 이용하여 150MHz에서 실행하는 상기 절차를 연속적으로 구현하면 프레임 속도가 0.25 fps가 될 것이다. 그러므로 매우 고속이면서 비용이 많이 들고 전력소모가 많은 디지털 신호 처리기에 대한 필요 없이 전형적인 비디오 프레임 속도의 획득을 용이하게 하는 개선된 기술이 필요하다.
그러므로 본 발명에 따르면, 서로 승산될 때 타깃 행렬(target matrix)로 근사화되는 한 쌍의 요인 행렬(factor matrix)
Figure pct00045
을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)가 제공되며, 상기 하드웨어 가속기는 상기 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력; 제1 요인 행렬(
Figure pct00046
)에 대한 행 데이터와 열 데이터를 저장하는 제1 요인 행렬 메모리로서, 제1 요인 행렬 메모리는 복수의 제1 데이터 버스를 가지며, 상기 제1 데이터 버스들은 각각 상기 제1 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제1 요인 행렬 열 데이터에 액세스(access)하는, 제1 요인 행렬 메모리; 제2 요인 행렬(
Figure pct00047
)에 대한 행 데이터와 열 데이터를 저장하는 제2 요인 행렬 메모리로서, 제2 요인 행렬 메모리는 복수의 제2 데이터 버스를 가지며, 상기 제2 데이터 버스들은 각각 상기 제2 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제2 요인 행렬 행 데이터에 액세스하는, 제2 요인 행렬 메모리; 처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 및 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬(
Figure pct00048
)의 일부를 저장하는 처리기 메모리 블록; 및 상기 처리기 메모리 블록에 연결된 제1 입력과 상기 제1 처리기 블록 데이터 버스 및 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및 상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 다시 기록하는 것을 제어하기 위한 제어회로;를 포함한다.
상기 하드웨어 가속기는 다양한 행렬 인수분해 기법들을 구현하기 위하여 채택될 수 있으며, 특히 비-음수 행렬 인수분해(NMF)에 적합하다. 이는 도입부에서 기술하였던 우리의 특정 기법을 사용하여 구현될 수 있거나, 또는 상기 하드웨어를 사용하여 다른 NMF 방법들이 구현될 수 있다. 그러나 상기 하드웨어 가속기의 응용은 NMF에 제한되지 않으며, 특히 제1 및 제2 요인 행렬들의 데이터가 순환 방식 또는 반복 방식으로 수정되는 광범위한 반복 기법을 포함한다. 이러한 응용에서의 처리기 블록들은 이때 반복적이거나, 또는 순환적인 연산을 수행하기 위하여 채택될 수 있다. 비-음수 제한을 포함하지 않는 방법을 구현하기 위하여 부호를 갖는 데이터(signed data)가, 예를 들면 데이터 저장 그리고/또는 처리시 부호 비트를 제공함으로써 다루어질 수 있다.
대체로 말하면, 여러 실시예들에서, 잉여 행렬(residual matirx)(
Figure pct00428
)의 처리, 및 또한 저장을 분산함으로써 각 처리기 블록에 의하여 복수의 부분 연산들이 병렬로 수행될 수 있다. 그러한 배열은 FPGA(field programmable gate array)와 같은 하드웨어에서 구현하는데 편리하고, 처리기 블록들, 좀더 구체적으로 기술하면
Figure pct00050
의 일부들을 저장하는 처리기 메모리 블록들이 이미지 영역에 결쳐 분산될 수 있기 때문에, 처리 속도가 이미지의 크기 또는 해상도로부터 실질적으로 독립적일 수 있다. 게다가 여러 실시예들에서, 위에서 언급한 데이터 구조로 인하여 NMF 식들의 쌍별(pair-wise) 평가, 즉 서브-프레임
Figure pct00051
에 대한 타깃(target)을 결정하도록 먼저
Figure pct00429
를 실질적으로 동시에 업데이트하며, 그리고 동시에
Figure pct00052
Figure pct00053
중 하나를 업데이트한 다음에
Figure pct00054
Figure pct00055
중 다른 하나를 업데이트하고 실질적으로 동시에 업데이트된 서브프레임을
Figure pct00056
로부터 감산하는 것(비록 최초의
Figure pct00430
(또는 상기 업데이트된 서브프레임을
Figure pct00431
에서 감산하기 시작하기 전에
Figure pct00432
값)를 연산하는데 필요한 대기시간(latency)이 있기는 하지만)이 가능하다. 그러므로, 바람직한 실시예들에서, 데이터 처리기는 한 쌍의 디지털 신호 처리기(승산-가산 유닛)를 포함하며, 그 중 하나는 2개의 식, 위의 예에서
Figure pct00060
를 업데이트하기 위한 식과
Figure pct00061
(또는
Figure pct00062
)을 업데이트하기 위한 식을 각각 동시에 평가한다. (그러나, 다른 실시예들에서는, 특정 이점을 획득하기 위하여 비록 병행처리가 감소하게 되지만 하나의 DSP 유닛이 다중화될 수 있다).
앞서 언급한 대기시간을 고려하기 위하여, 처리기 블록에 저장된
Figure pct00063
의 일부는 "이전(old)" 버전의
Figure pct00064
가 예컨대
Figure pct00065
를 업데이트하는데 사용될 수 있는 반면에, 예컨대
Figure pct00066
의 업데이트된 값이
Figure pct00067
를 업데이트하는데 사용될 수 있도록 더블 버퍼링(double-buffering)되는 것이 바람직하다. 앞서 언급한 바와 같이, 잉여 행렬
Figure pct00068
는 타깃 행렬로서 개시하는 것이 효과적이지만, 이때 상기 잉여를 감소시키기 위하여 원하는 타깃에 더욱 양호하게 근사화되도록
Figure pct00069
Figure pct00070
로서 단계적으로 수정된다. 여러 실시예들에서, 잉여 행렬
Figure pct00071
자체는 필요하지 않다- 그것은 단지 제1 및 제2 요인 행렬
Figure pct00072
Figure pct00073
를 연산하는 데에만 기여하므로 처리기 블록에 저장된
Figure pct00074
의 일부를 판독하기 위한 채비가 필요하지 않다. 다만 블록 내에서 내부적으로(
Figure pct00075
에 대한 외부의 판독 액세스가 상기 하드웨어 가속기에 의하여 제공될 필요는 없다) 이루어지는 경우는 예외이다. 입력 데이터 행렬은 타깃 행렬을 생성하기 위해, 예를 들면 도입부에 나타낸 바와 같이 감마 보정(gamma correction)을 적용함으로써 전-처리될 수 있다. 마찬가지로 상기 제1 및 제2 요인 행렬 내의 데이터는 하드웨어 가속기에 의하여 혹은 외부에서 후-처리될 수 있다. 여러 실시예들에서, 상기 하드웨어 가속기로부터의 독출은 상기 제1 및 제2 요인 행렬 메모리에 대한 판독 액세스에 의하여 제공될 수 있다. 상기 메모리에 대한 기록 액세스는 또한 예를 들면 상기 제1 및 제2 요인 행렬을 초기화하기 위하여 제공될 수도 있고, 초기화는 상기 하드웨어 가속기에 의하여 내부적으로 수행될 수도 있다. 앞서 언급한 바와 같이,
Figure pct00076
Figure pct00077
에 대한 값을 연산하는 것은 처리기 블록 내에서 정수 연산을 사용하여 수행되는 것이 바람직하고, 결과적으로
Figure pct00078
또는
Figure pct00079
의 엘레멘트를 위한 값은 반올림 또는 반내림될 수도 있고 다른 경우에 끝수를 버리거나 근사화하게 될 수도 있다. 그러므로, 처리기 블록이 우수리 처리된(rounded) 값들을 이용하여
Figure pct00080
의 엘레먼트를 업데이트하는 것이 바람직하다. 그러므로 상기 처리기 메모리 블록은 상기 데이터 처리기의 입력보다 데이터 폭(비트 길이)이 두 배인 변수를 사용하는 것이 바람직하다.
몇몇 바람직한 실시예에서, 상기 하드웨어 가속기 제어 회로는 상기 하드웨어 가속기를 위한 전체 제어 회로, 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리를 제어(특히, 어드레싱)하기 위한 메모리 제어 회로, 그리고 처리기 블록의 로컬 제어를 위한 처리기 블록 제어 회로 간에 분산된다. 그러나 이하에서 부가적으로 기술되겠지만, 몇몇 바람직한 실시예들에서 단지 하나의 처리기 블록만이, 예를 들면 잉여 행렬
Figure pct00081
의 일부를 저장하는 메모리 블록을 어드레싱하기 위한, 그러한 제어 회로를 포함하고; 이는 이때 마스터 처리기 블록이라 명명될 수 있으며 다른 처리기 블록들 중 하나 이상(바람직하게는 모두)은 상기 마스터 처리기 블록으로부터 생성된 타이밍과 제어 신호들을 채용하여, 상기 마스터 처리기 블록에 종속될 수 있다.
몇몇 바람직한 실시예들에서 상기 메모리 제어 회로는 상기 요인 행렬의 하나, 혹은 다른 하나 혹은 모두의 각 엘레먼트, 처리기 블록에 의하여 처리되는 엘레먼트 집합의 순차적 선택을 제어한다. 환언하면, 처리기 블록들의 행은 각각 상기 행 요인 행렬의 열 값들의 블록(처리기 블록들의 연속되는 행들에 나타나게 되는 하나의/각각의 열의 일부)을 처리할 수 있다. 이때 차례로 처리기 블록들의 행에 의하여 처리되는 열 값들의 집합은 각각 선택될 수 있고 처리를 위하여 처리기 블록들에 제공될 수 있다. 그에 따라서 열 요인 행렬 내 데이터의 행(row)들은 처리기 블록들의 열들에 의하여 다루어질 수 있다. 따라서, 상기 메모리 제어 회로는 상기 제1 요인 행렬 및 상기 제2 요인 행렬의 엘레먼트들을, 예를 들면 위에서 언급한 바와 같은 NMF 연산식들에 따른 처리를 위하여 순차적으로 처리 블록들에 제공하도록 구성될 수 있다. 상기 메모리 제어 회로는 또한 상기 요인 행렬 메모리에 대한 외부 판독 그리고/또는 기록 액세스를 제어할 수 있다.
상기 하드웨어 가속기의 바람직한 실시예들에서 상기 처리기 블록들은 잉여 행렬
Figure pct00082
를 분산 메모리 어레이(array)에 기록하기 위하여 제3 처리기 블록 데이터 버스를 사용하여 데이지 체인(daisy-chain) 방식으로 또한 연결될 수 있다(그러나, 여러 변형예들에서 이는 예를 들면 행과 열 행렬 메모리 데이터 버스를 사용하여 이루어질 수 있다). 또한 (상기 제어 회로의 제어하에서) 결과들이 행렬 내의 처리기 블록과 처리기 블록 사이에서부터 처리기 블록들의 행렬의 행 에지(row edge) 그리고/또는 열 에지(column edge)에 이르기까지 전달될 수 있게 하기 위해 한 쌍의 결과 데이터 입력과 한 쌍의 결과 데이터 출력을 제공함으로써 데이지 체인 방식으로 또한 연결될 수 있는데, 이는 북,남, 동, 그리고 서 연결로 보이는 것이 편리할 수 있다. 데이터가 전달되는 에지들의 반대편에 있는 트레일링 입력(trailing input)들은 0으로 묶일 수 있다. 결과 데이터는 행과 열 데이터에 대한 매스 블록(math block)들에 의하여 수신되는 것이 바람직하다. 이 매스 블록들은 관련된 블록들의 행 또는 열의 각 처리기 블록으로부터 수신되는 부분 결과 데이터를 누적 연산하는 것이 바람직하다. 게다가, 여러 실시예들에서, 행과 열 요인 행렬 값들을 업데이트하기 위하여 제산이 필요하기 때문에(위의 식들을 참조), 상기 매스 블록들은 이 제산을 수행하도록 구성될 수 있다. 그러나, 소정의 서브-프레임에서 행과 열 행렬 업데이트 식들의 분모가 항상 같기 때문에, 이 제산은 단지 한번만 수행될 필요가 있다. 따라서, 예를 들면 처리기 블록들의 각 행과 열에 대하여 하나씩, 복수의 행과 열 블록들이 제공될 수 있고, 그러한 구성에서 상기 매스 블록들 중 하나는 마스터 블록으로 그리고 다른 것들은 슬레이브 블록들로 지정될 수 있다. 상기 마스터 블록은 이때 관련된 분모의 역수(reciprocal)를 연산하기 위한 디바이더(divider)를 포함할 수 있으며, 상기 슬레이브 매스 블록들은 이때 상기 마스터 (행 또는 열) 매스 블록으로부터 수신된 이러한 역수 값으로 승산하기 위한 승산기만을 포함할 필요가 있다. 상기 행과 열 행렬 메모리들은 상기 처리기 블록들과 매스 블록들에 의한 동시적인 판독와 기록 액세스를 허용하도록 듀얼 포트 메모리를 이용하여 구현되는 것이 바람직하다.
몇몇 실시예들에서, 처리기 블록은 제1 및 제2 승산-가산 유닛을 포함한다. 이러한 방식으로, 이들 중 하나는 곱
Figure pct00083
를 연산하기 위하여 채택될 수 있고, 다른 하나는 곱
Figure pct00084
를 누적 연산하기 위하여 채택될 수 있으며, 이 두 연산은 병행처리로 이루어진다. 상기 곱
Figure pct00085
Figure pct00086
Figure pct00087
에 가산된 후에 결정되므로, 이 승산-가산 유닛들 중 하나의 출력이 두 번째 유닛의 입력으로 연결되는 것이 바람직하다. 동일한 구조가 곱
Figure pct00088
을 누적 연산하는데 사용될 수 있으며, 그 후에 다시 병행처리로 곱
Figure pct00089
를 감산함으로써 잉여 행렬
Figure pct00090
를 업데이트하는데 사용될 수 있다(일단
Figure pct00091
의 제1 엘레먼트의 연산시 대기시간이 고려될 경우에). 이 연산들을 모두 수행하기 위하여 상기 승산-가산 유닛들 중 하나의 입력이 예를 들면 승산기를 이용하여
Figure pct00092
Figure pct00093
사이에서 스위칭될 수 있는 것이 바람직하다. 게다가 몇몇 바람직한 구현예들에서, 상기 승산-가산 유닛들 중 하나가 곱
Figure pct00094
Figure pct00095
을 결정하기 위하여 또한 채택될 수 있다. 이를 구현하기 위하여, 상기 승산-가산 유닛들 중 하나의 두 입력이 예를 들면 한 쌍의 다중화기(multiplexter)에 의하여
Figure pct00096
또는
Figure pct00097
중 하나에 선택적으로 연결되는 것이 바람직할 수 있다. 나아가 상기 NMF 절차의 바람직한 실시예들은 루프의 시작과 끝에서
Figure pct00098
를 수정하는 것을 포함하므로, 상기 승산-가산 유닛들 중 하나가
Figure pct00099
블록 메모리의 출력에 입력이 연결된 가산 유닛을 지니고, 이 승산-가산 유닛의 출력은 상기
Figure pct00100
블록 메모리(듀얼 포트임)의 기록 입력을 제공하는 것이 바람직하다.
상기 연산들의 순서와 상기 다중화기에 의한
Figure pct00101
또는
Figure pct00102
중 하나의 선택은 처리기 블록 내의 상태 머신(state machine)에 의하여 제어될 수 있으며; 이는 또한 상기
Figure pct00103
블록 메모리를 어드레싱하는데 사용될 수 있다. 그러나, 모든 처리기 블록들이 실질적으로 동시에 실질적으로 동일한 연산들을 수행하고 있으므로(비록 잉여 행렬
Figure pct00104
의 상이한 일부들, 그리고 행과 열 요인 행렬
Figure pct00105
Figure pct00106
의 대응되는 상이한 일부들을 사용하지만), 상기 처리기 블록들 중 단지 하나, 즉 "마스터(master)" 처리기 블록이 그러한 제어 회로를 포함할 필요가 있다. 다른 처리기 블록들은 이때, 자신들의 타이밍과 제어 신호들을 상기 마스터 처리기 블록으로부터 취하는 "슬레이브(slave)" 처리기 블록들로 간주할 수 있다. 몇몇 실시예에서 상기 상태 머신은 상기 다중화기와 승산-가산 유닛들을 제어하여 다른 값들(특히
Figure pct00107
;
Figure pct00108
)을 연산하기에 앞서 먼저 분모 식 값(
Figure pct00109
Figure pct00110
)을 연산한다.
상기 하드웨어 가속기의 전체적인 구성을 참조하면, 위에서 언급한 바와 같이 행 행렬 내의 데이터는 예를 들면 160개의 행에 대하여 블록 집합, 예를 들면 8개의 블록(160 라인 디스플레이의 경우; 이 예에서는 라인 수와 서브-프레임의 수가 우연히 같음)으로 분할된다. 마찬가지로, 열 행렬은 다수의 블록, 예를 들면 10개의 블록 또는 360 열 디스플레이로 분할된다. 따라서, 각 처리기 블록은 행과 열 데이터 집합을 처리하며, 앞서 언급한 예에서는 20개의 행과 36개의 열에 대하여 데이터를 처리한다. 행 데이터 버스는 각 행 블록에 대하여 제공되며, 이는 상기 행 블록에 대한 데이터를 이 행 데이터를 처리하는 처리기 블록들의 집합(각 열 블록당 하나)에 제공한다. 마찬가지로, 각 열 블록은 열 블록에 대한 데이터를 상기 블록에 대한 열 데이터를 처리하는 대응되는 처리기 블록들(각 행 블록당 하나)에 제공하는 관련 열 데이터 버스를 가진다. 이하에서 설명하게 될 실시예들에서, 행 블록에 대한 행 데이터 버스와 열 블록에 대한 열 데이터 버스는 어느 한 시기에 단일 행(또는 열) 값, 예를 들면 8 비트 값을 전달한다. 이 경우에, 처리기 블록은 어느 한 시기에 하나의 행 값 그리고 하나의 열 값을 임의의 한번에 수신하거나 처리한다. 상기 처리기 블록 상태 머신은 처리하기 전에 한 번에 하나씩 행과 열 값들을 대응되는 행 행렬과 열 행렬 블록들로부터 제공하는 것을 제어하기 위한 행과 열 블록 메모리 제어 회로에 연결되며, 완전한 블록이 처리된 후에 (처리기 블록 내에 래치되는 것이 바람직한) 결과 데이터는 행과 열 요인 행렬의 누산과 업데이트를 위하여 관련된 행 또는 열 처리기 블록들의 체인을 통하여 상기 매스 블록들로 되돌려진다. 다시, 앞서 언급한 바와 같이, 바람직한 실시예에서 처리기 블록이 직각 행렬(rectangular matrix)을 형성하도록 4개의 결과 데이터 연결, 즉 두 개의 입력과 두 개의 출력을 가지므로 행과 열에 대한 결과 데이터는 처리기 블록들의 행렬을 동시에 통과하게 될 수 있고, 차후에 설명하게 될 예들에서는 북쪽 방향(열에 대하여) 및 서쪽 방향(행에 대하여)으로 통과될 수 있다. 그러나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 다른 실시예들에서 예를 들면 처리기 블록에 두 개 이상의 행 그리고/또는 열 행렬 값들을 동시에 제공하기 위하여 더 넓은 행 그리고/또는 컬럼 블록 데이터 버스들이 채택될 수 있음을 알 수 있을 것이다. 이는 데이터 처리 속도를 증가시키지만, 이러한 더 넓은 데이터 버스들을 이용하기 위하여 더 많은 승산-가산 유닛들이 제공되는 것이 바람직하다. 예를 들면, 두 쌍의 행 및 열 데이터 값들을 동시에 처리하기 위하여 두 쌍의 승산-가산 유닛들이 제공되는 것이 바람직하다. 일반적인 경우에, 적어도 한 쌍의 승산-가산 유닛이 처리기 블록에 의하여 동시에 처리되는 행과 열 데이터 엘레먼트들의 각 쌍에 대하여 제공되는 것이 바람직하다. 잠재적으로 각각의 행과 열 데이터 블록의 모든 행과 열 데이터 항목들은 실리콘 영역이 증가하게 되는 대가로 속도의 증가를 위해 처리기 블록에 의하여 동시에 처리될 수 있다.
본 발명은 나아가 광전 디스플레이를 위한 구동기(driver)를 제공하는데, 특히 위에서 설명한 것과 같은 NMF 하드웨어 가속기를 포함하는 OLED 디스플레이와 같은 발광 디스플레이를 위한 구동기를 제공한다. 그러한 구동기와 함께 사용될 수 있는 발광 디스플레이의 예에는 수동 행렬 OLED 디스플레이, 무기(inorganic) LED 디스플레이, 플라즈마 디스플레이, 진공 형광 디스플레이, 그리고 iFire? 디스플레이와 같은 후막 및 박막 전자발광(electroluminescent) 디스플레이들이 있다.
몇몇 바람직한 실시예에서, 상기 하드웨어 가속기는 특히 위에서 언급한 현재 바람직한 NMF 절차에서의 연산을 수행하도록 구성된다. 따라서, 관련 실시태양에서 본 발명은 비-음수 행렬 인수분해(NMF) 연산을 가속하는 하드웨어적 방법을 제공하는데, 상기 연산은 아래의 식들을 반복적으로 결정하는 것을 포함하고;
각 x와 y에 대하여
Figure pct00111
(1)
각 y에 대하여
Figure pct00112
(2)
각 x에 대하여
Figure pct00113
(3)
각 x와 y에 대하여
Figure pct00114
(4)
여기서, 식 (1) 내지 식 (4)는 매 반복당 각
Figure pct00115
값에 대하여 평가되고, 여기서
Figure pct00116
는 가중 인자를 포함하며, 상기 방법은 각
Figure pct00117
값에 대하여; 대응되는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에
Figure pct00118
를 저장함; 위 식 (2)의 분모를 연산함;
Figure pct00119
Figure pct00120
를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산함; 식 (3)의 분모를 연산함; 및
Figure pct00121
Figure pct00122
를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (4)와 식 (3)의 분자에 대한 기여도(contributions)를 연산함을 포함한다.
여러 실시예들에서, 변수
Figure pct00123
는 0일 수 있는데, 이 경우에 이러한 변수의 제공이 생략될 수 있다. 가중 인자
Figure pct00124
는 구현예에 따라 스칼라, 벡터, 또는 행렬일 수 있으며, 혹은
Figure pct00125
는 생략될 수 있다(이 경우에 1 값이 주어짐).
대체로 말하면, 식 (1)과 (2)는 병행으로 평가되고, 복수의 처리기 블록들에 걸쳐 분산되며, 그 후에 이들 처리기 블록들로부터의 부분 결과들이 결합하게 된다. 마찬가지로, 식 (3)과 (4)는 유사한 방식으로 실질적으로 병행으로 평가되는 것이 바람직하다.
또다른 실시태양에서 본 발명은 비-음수 행렬 인수분해(NMF) 연산을 가속하는 하드웨어를 위한 시스템을 제공하며, 상기 연산은 아래의 식들을 반복적으로 결정하는 것을 포함한다;
각 x와 y에 대하여
Figure pct00126
(1)
각 y에 대하여
Figure pct00127
(2)
각 x에 대하여
Figure pct00128
(3)
각 x와 y에 대하여
Figure pct00129
(4)
여기서, 식 (1) 내지 (4)는 매 반복당 각
Figure pct00130
값에 대하여 평가되고, 여기서
Figure pct00131
는 가중 인자를 포함하며, 상기 시스템은; 대응되는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에
Figure pct00132
를 저장하는 수단; 위 식 (2)의 분모를 연산하는 수단; 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산하는 수단; 식 (3)의 분모를 연산하는 수단; 및
Figure pct00133
Figure pct00134
를 결정하기 위하여 상기 복수의 처리기 블록들에 걸쳐서 실질적으로 동시에 식 (4)와 식 (3)의 분자에 대한 기여도(contributions)를 연산하는 수단을 포함한다.
다시, 변수
Figure pct00135
는 0일 수 있고, 가중 인자
Figure pct00136
는 스칼라, 벡터, 행렬, 또는 1일 수 있다.
또 다른 실시태양에서 본 발명은 입력 행렬(
Figure pct00137
)을 한 쌍의 제1 및 제2 요인 행렬(
Figure pct00138
)로 인수분해하기 위한 비-음수 행렬 인수분해(NMF) 하드웨어 가속기를 제공하며, 상기 비-음수 행렬 인수분해 하드웨어 가속기는 상기 제1 요인 행렬(
Figure pct00139
)의 엘레먼트들을 저장하는 제1 메모리 저장부; 상기 제2 요인 행렬(
Figure pct00140
)의 엘레먼트들을 저장하는 제2 메모리 저장부; 상기 제1 메모리 저장부 및 상기 제2 메모리 저장부에 연결되고 복수의 NMF 동작들을 병행으로 수행하는 처리기들의 그리드(grid); 및 상기 입력 행렬(
Figure pct00141
)을 상기 처리기들의 그리드에 기록하는 것을 제어하고, 상기 처리기들을 제어하여 상기 제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 요인 행렬
Figure pct00142
로 인수분해하기 위하여 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하기 위한 입력; 각각이 제1 요인 행렬 메모리(
Figure pct00144
)의 블록에 저장된 데이터에 액세스하는 복수의 제1 데이터 버스; 각각이 제2 요인 행렬 메모리(
Figure pct00145
)의 블록에 저장된 데이터에 액세스하는 복수의 제2 데이터 버스; 그리고 처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬(
Figure pct00146
)의 일부를 저장하는 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1 입력과 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 포함하는 처리기 블록들의 행렬;을 포함한다.
여러 실시예들에서 각 IC는 처리기 블록들의 어레이를 제공하며, 상기 IC들은 확장가능한 하드웨어 구현(scalable hardware implementation)을 제공하기 위하여 그리드 정보로 스택되거나 연결될 수 있다. 앞서 언급한 본 발명의 실시태양들로부터의 특징들 중 어느 하나 또는 모두가 또한, 예를 들면 위에서 설명한 바와 같은 처리기 블록 그리고/또는 상호 연결들의 특징들을 포함하는 온 칩(on-chip)으로 제공될 수 있다. 특히, 상기 IC는 처리기 블록들 중 하나가 타이밍과 제어 신호들을 제공하는, 다른 처리기 블록들에 대한 마스터(master)로서 동작할 수 있게 한다. 그러나, 이러한 특징은 예를 들면 소정 신호에 의하여 외부에서 디세이블(disable)될 수 있는 것이 바람직하다. 이는 처리기들의 그리드에서 단지 하나의 IC가 하나 이상의 다른 IC들을 제어할 수 있게 하도록 단지 하나만이 마스터로 기능할 필요가 있기 때문이다. 따라서, 상기 타이밍과 제어 신호들은 또한 상기 IC와의 외부 연결을 통해 제공되는 것이 바람직하다.
관련된 실시태양에서, 본 발명은 입력 행렬(
Figure pct00147
)을 한 쌍의 제1 및 제2 요인 행렬(
Figure pct00148
)로 인수분해하기 위한 비-음수 행렬 인수분해(NMF)를 위한 집적회로(IC)를 제공하며, 상기 IC는 상기 제1 및 제2 요인 행렬(
Figure pct00150
)의 엘레먼트들을 각각 저장하는 제1 메모리 저장부 및 제2 메모리 저장부에 액세스하기 위해 외부 버스들에 연결된 처리기들의 그리드를 포함한다.
상기 처리기들은 각각 로컬 메모리를 포함하며, 상기 처리기는 복수의 슬레이브 처리기 그리고 마스터 처리기를 포함하고, 상기 마스터 처리기는 상기 슬레이브 처리기들에서 로컬 메모리의 어드레스 및 상기 슬레이브 처리기들의 데이터 처리 동작들 중 하나 또는 모두를 제어하도록 구성되는 것이 바람직하다.
여러 실시예들에서, 상기 그리드의 각 처리기는 상기 입력 행렬의 한 영역이 처리될 수 있도록 하는 상기 입력 행렬의 대응되는 일부를 처리하도록 구성된다. 그리고나서, 상기 IC들은 복수의 집적회로들이 상기 복수의 입력 행렬 영역을 처리하도록 연결될 수 있게 하는 외부 버스들을 가지는 것이 바람직하다. 예를 들면, 상기 그리드는 직각 그리드이고 집적회로는 북쪽, 남쪽, 동쪽, 그리고 서쪽 데이터 연결을 가질 수 있다.
상기 요인 행렬 메모리가 오프-칩인 경우에, 두개의 (빠른)온 칩 메모리 집합이 제공되는 것이 바람직한데, 제1 및 제2(행과 열) 요인 행렬 메모리들 각각에 대하여 하나씩 제공되는 것이 바람직하다. 각 집합은 (데이터를 판독하기 위한) 입력 버퍼, (데이터를 기록하기 위한) 출력 버퍼, 그리고 (데이터 작업을 위한) 캐시(cache)를 포함하는 것이 바람직하다.
본 발명의 이들 및 다른 실시태양들은 지금부터 단지 예로써만 첨부도면들을 참조하여 좀더 구체적으로 기술될 것이다.
도 1a와 도 1b는 각각 본 발명의 한 실시예에 따른 NMF 하드웨어 가속기를 포함하는 OLED 디스플레이와 구동기, 그리고 상기 디스플레이에 대한 대표적인 행과 열 구동기들의 세부를 보여주는 도면들이다.
도 2는 NMF 하드웨어를 포함하는 OLED 디스플레이 구동 시스템의 기능 블록도이다.
도 3은 도 2에 도시된 시스템에 대한 대표적인 행 구동기 하드웨어의 세부를 보여주는 도면이다.
도 4a 내지 도 4c는 각각 본 발명의 한 실시예에 따른 하드웨어 NMF 구성, 초기 타깃/잉여 행렬
Figure pct00152
및 관련된 행(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-비트 값으로 저장한다.
2. 레지스터(214)에 8-비트로 저장된
Figure pct00153
을 연산한다.
3. 블록 B(216)에 완료 플래그를 지정한다.
4. 블록 B로부터의 완료 플래그를 기다린다.
5. 단계 1로 루프백한다.
블록 B(216)는 설정(setup) 기능들을 수행한다. 특히 이러한 블록은 다음과 같은 기능을 수행한다;
1. 블록 A로부터의 완료 플래그를 기다린다.
2.
Figure pct00154
인 각각의 값을 설정하는데, 상기 식 중에서
Figure pct00155
는 8-비트 그레이 레벨을 16-비트 휘도로 변환하기 위한 룩업 테이블을 나타낸다.
3. 블록 D(220)로부터의 완료 플래그를 기다린다.
4.
Figure pct00156
Figure pct00157
의 각 엘레먼트를
Figure pct00158
에 설정한다.
5.
Figure pct00433
임을 설정한다.
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)를 수행한다. 특히, 이러한 블록은 다음과 같은 기능을 수행한다;
1. 버퍼 1(222)을 블랭크 디스플레이로 설정한다(
Figure pct00161
).
2. 버퍼 2(224)를 예약한다.
3. 블록 B(216)에 완료 플래그를 지정한다.
4. 블록 C(218)로부터의 완료 플래그를 기다린다.
5. 예를 들면 이하에서 설명되는 바와 같이
Figure pct00162
그리고
Figure pct00163
를 생성하고 현재의 버퍼에 기록한다.
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 RC의 초기값
Q 360 x 160 x 17± B,C VRxC간의 잔류 오차
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 RC가 초기화되는 값
출력(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) 쉬프트가 설명될 것이다.
상기 핵심 절차는
Figure pct00164
의 값뿐만 아니라 3개(선택적으로는 4개-하기 참조)의 행렬
Figure pct00165
,
Figure pct00166
, 그리고
Figure pct00167
를 통해 이루어진다. 이러한 행렬들은 행렬
Figure pct00168
에 수용되어 있는 입력 이미지에 대한 일부 간단한 조작을 기초로 하여 구성된다.
Figure pct00169
는 공간 절약을 위해 un-gamma'd 픽셀 휘도보다는 이미지의 8-비트 그레이-스케일 값을 수용한다.
상기 이미지는 비디오 소스로부터 판독되고, 디스플레이의 해상도에 대해 (픽셀 평균으로) 스케일링되고, 그리고 디스플레이의 포맷과의 매칭을 위해 회전된다. 그 결과는
Figure pct00170
에 저장된다.
이하의 식들에서 필요한 나머지 연산이 설명될 것이다. 언급되는
Figure pct00171
함수는 8-비트 그레이-스케일 값들을 16-비트 휘도 값들에 연관시키는 룩업 테이블이다. 이러한 룩업 테이블은 최대 8-비트 값(255)을 65024에 맵핑하는 2.4의 감마를 가정할 수 있다. 상기 감마 함수는 또한 입력 RGB 신호를 PLED(폴리머 LED) 프라이머리의 컬러로 보정하기 위해
Figure pct00172
에 대한 식을 사용하여 컬러 변환을 수행할 수 있다. 특정된 행렬
Figure pct00173
은 프로그램가능하고 부호를 갖는 12-비트 정수의 어레이로 저장될 수 있다. 처음에 상기 행렬은 256*항등 행렬로 설정될 수 있다.
Figure pct00174
Figure pct00175
Figure pct00176
Figure pct00177
Figure pct00178
Figure pct00179
마지막으로
Figure pct00180
Figure pct00181
의 모든 엘레먼트들은 동일한
Figure pct00182
로 설정되어야만한다.
Figure pct00183
의 값은
Figure pct00184
의 리드-인(read-in) 동안에 연산될 수 있는데, 예를 들면 블록 A와 B에서 모두 감마 테이블 룩업을 이용하여 연산될 수 있지만, 이들 중 어느 것도 동시에 액세스할 필요가 없다. 그러나 대체 구현예들이 가능하다.
다시 블록 C(218, 하드웨어 가속된 NMF)를 참조하면, 한 실시예에서 기본적인 절차는 다음과 같은 4가지 단계(식)를 차례로 수행하는데, 각 반복 i에 대하여 그리고 각 반복 내에서 각 서브-프레임 p(p=1에서부터 160에 이르기까지)에 대하여 수행된다;
각 x와 y에 대하여
Figure pct00185
각 y에 대하여
Figure pct00186
각 x에 대하여
Figure pct00434
각 x와 y에 대하여
Figure pct00188
(4)
고정값 bias는 가중치이며, 이는 0일 수 있지만, 여러 실시예들에서 64 내지 128 범위의 값을 가질 수 있다. 여러 실시예들에서 5 내지 100번, 예를 들면 약 20번의 반복이 각 서브-프레임에 대하여 수행된다.
Figure pct00189
Figure pct00190
에 대하여 구해지는 값들은
Figure pct00191
Figure pct00192
의 부호를 갖지 않는 8-비트 저장 값으로 잘리는 것이 바람직하다(그리고 만약 0보다 작거나 255보다 크다면 적절한 한도로 설정되는 것이 바람직하다).
Figure pct00193
Figure pct00194
에 대한 식들에서, 분모는 변하지 않으므로 각 y에 대하여(
Figure pct00195
에 대하여) 또는 각 x에 대하여(
Figure pct00196
에 대하여) 연산을 다시 할 필요가 없다(그러나, 이는 이하에서 논의되는 몇몇 변형예(variant)들에 대한 경우와는 다르다). 분자와 분모의 임시 저장 값들은 제산 때까지 정밀도가 손상되지 않는 충분한 비트들을 갖는 것이 바람직하다. 하드웨어 NMF는 위의 4가지 식들에서 2개 이상의 합/곱 엘레먼트들의 실질적인 병행 연산을 허용하도록 파이프라인되는 것이 바람직하다.
다음에는 바람직한 실시예들에서 효과적으로 스케일링을 수행하여 도 2의 시스템으로부터 (펄스 폭 변조에 의한) 열 전류의 실질적인 직접 구동과 행 비율들(row ratios)을 허용하는 후-처리가 설명될 것이다. 이러한 후-처리는 여러 상이한 방법으로 수행될 수 있지만, 일반적인 단계들은 이하에 주어져 있는 식에 의하여 예시될 것이다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 스케일링 인자 그리고 주어진 유사한 것들이 특정한 응용에 따라 수정될 수 있음을 이해할 것이다.
그러므로, 한 실시예에서 출력을 위하여
Figure pct00197
Figure pct00198
에 수용되어 있는 데이터를 처리하도록 채택되는 단계들은 다음과 같다;
각 p에 대하여:
Figure pct00199
그러면:
Figure pct00200
이고
서브-프레임 시간
Figure pct00201
는 다음과 같이 주어진다;
Figure pct00202
, 10비트로 잘림
만약
Figure pct00203
의 값이 오버플로우되면(단지 하나의 서브-프레임이 임의의 정보를 담고 있는 경우에만 그러하다), 그 값은 1023으로 설정될 수 있다.
지금부터
Figure pct00204
와 열 기준 전류를 이용하여
Figure pct00205
가 스케일된다(바람직한 실시예들에서는 예를 들면 비록 다른 실시예들에서 특정한 행 구동 값들이 각 행에 대하여 연산될 수 있지만 도 1b를 참조하여 설명된 타입의 행 구동기에서 행들은 자동으로 비율이 조정된다);
각 p에 대하여:
Figure pct00206
그리고
Figure pct00435
, 적(red), 녹(green), 청(blue) 각각에 대하여 6비트로 잘리는 것이 바람직하고, 여기서
Figure pct00436
는 각각 적, 녹, 청 픽셀들을 위한 공칭(nominal) 기준 전류를 나타내는 3개의 6-비트 값의 집합이며 외부에서 프로그램가능한 것이 바람직하다. 대표적인 디폴트 값들은 51,39, 51이다.
그리고 나서, (비록 다른 실시예들에서 PWM 클럭이 변경될 수 있지만)
Figure pct00437
이 주어지면 적절한 PWM 구동에 이르기까지
Figure pct00210
가 스케일링(스트레칭;stretching)되는 것이 바람직하다;
Figure pct00211
, 6 비트로 잘림
이 식에서 x 값들은 컬러 순서 RGBRGB...으로 이루어지므로 x=1에 대하여
Figure pct00212
Figure pct00213
가, x=2에 대하여
Figure pct00214
Figure pct00215
...등이 사용된다. 그리고 나서;
각 p에 대하여,
Figure pct00216
을 만족하도록
Figure pct00217
가 된다.
이때, 행과 열 디스플레이 구동기들에는
Figure pct00218
Figure pct00219
가 제공된다.
상기 절차에 대한 수정이 가능하다. 예를 들면 이미지의 녹색 채널 상의 잡음이 적색 또는 청색 채널 상의 잡음보다 더 현저하다는 관측에 기초하여, 약간의 추가 연산으로 지각적인 컬러 잡음 감소가 가능하다. 이는 기본적인 NMF 절차에 대한 위의 식들을 다음과 같이 수정한다;
각 y에 대하여;
Figure pct00220
여기서 컬러 가중치
Figure pct00221
는 적색, 청색에 대하여 1이고, 녹색에 대하여는 2이다.
다른 변형예에서는 비록 상당한 추가 연산이 필요하지만 낮은 그레이-레벨 잡음이 감소하게 되며 최종 이미지가 잠재적으로 상당히 향상된다. 위에서 설명한 절차는 스크린상에 생성되는 이미지의 선형 오차를 최소화하도록 작용한다. 그러나, 지각(perception)이 매우 비선형적이므로 이는 낮은 휘도 레벨에서 지각 오차가 높아지게 되는 결과를 초래하는 경향이 있다(1 비트 변화는 더 큰 백분율 변화를 나타낸다). 이는 (선택적이며 구현에 의존하여)
Figure pct00222
에 기초한 가중 인자
Figure pct00223
를 포함시킴으로써 보정될 수 있다. 이러한 실시예에서
Figure pct00224
는 이하에서 설정된 바와 같이 정의된다(여기서 유념할 점은 앞서 언급한 가중치
Figure pct00225
는 일반화된 가중 인자이라는 점이다):
Figure pct00226
Figure pct00227
를 사용하면 NMF 식들이 다음과 같이 수정된다;
각 y에 대하여;
Figure pct00228
각 x에 대하여;
Figure pct00229
추가로 위에서 언급한 컬러 가중 인자가 예를 들면
Figure pct00230
를 3 비트로 증가시키고 각 녹색 픽셀당 1을 추가시킴으로써 또는 각 녹색 열에 대하여 비트 쉬프트를 하드코딩(hardcoding)함으로써 또한 포함될 수 있다. 이러한 선택적인 특징을 포함시키기 위하여는 각 비율(ratio)에 대하여 분모를 재연산하는 것이 필요하고, 그래서 반복 당 요구되는 연산 회수가 상당히 증가하게 된다. 이에 대한 보상으로서, 결과적으로 얻어지는 해는 우수하며 더 신속하게 수렴한다.
지금부터 이러한 시스템에 대한 바람직한 하드웨어 구조가 더 상세하게 설명될 것이다.
하드웨어 구현-세부
지금부터 각 160개의 서브-프레임당 20번의 반복을 하면서 25fps의 프레임 속도를 이루는, Xilinx Virtex-4 SX35 FPGA 상에서 이루어진 하드웨어 구현이 상세하게 설명될 것이다. 본 구현은 위에서 설명한 바와 같은 데이터의 전-처리와 후-처리를 포함한다.
앞서 설명한 바와 마찬가지 방식으로, 상기 절차의 1회 반복은 각 서브-프레임 p당 한번, 이하의 식들의 NUM_ITERATIONS 반복 실행들을 포함한다;
Figure pct00231
(1)
Figure pct00232
(2)
Figure pct00233
(3)
Figure pct00234
(4)
여기서,
Figure pct00235
Figure pct00236
(5)
Figure pct00237
,
Figure pct00238
는 가중치, 그리고
Figure pct00239
는 행과 열 메모리의 초기값들이다.
상기 알고리즘은 타깃 이미지 또는 그것으로부터 획득되는 이미지 행렬과 동일하게 설정되는 행렬
Figure pct00240
로 시작한다. 이는 메모리에 수용되어 있으며 NUM_ROWS x NUM_COLS 차원을 가지며,
Figure pct00241
Figure pct00242
메모리들의 모든 엘레먼트들은
Figure pct00243
와 동일하게 설정된다. 상기 알고리즘은 MUM_SUBFRAMES 서브-프레임을 사용하므로,
Figure pct00244
Figure pct00245
데이터를 수용하기 위한 메모리들은 NUM_ROWS x NUM_SUBFRAMES와 NUM_COLS x NUM_SUBFRAMES 크기를 각각 가진다.
처리기 블록이 이러한 식들을 병행으로 구현하는 것이 설명될 것인데, 여기서 속도에 대해, 처리기 블록이 제1 쌍의 식들(식 (1)과 (2)) 그리고 나서 제2 쌍의 식들(식 (3)과 (4))을 쌍별로 연산하는 것을 기초로 하여 병행으로 구현하게 된다. 대체로 말하면, 각 처리기 블록에 의해 부분 연산이 수행되고, 여러 그러한 블록들이 FPGA에서 복제되어 한번에
Figure pct00246
,
Figure pct00247
,
Figure pct00248
의 하나 이상의 값이 판독 및 연산될 수 있게 한다. 이러한 방식으로, 상기 알고리즘 동작 속도가 25fps의 속도에서 필요한 행과 열 행렬들인
Figure pct00438
Figure pct00439
를 연산하기에 충분할 정도로 증가하게 된다.
도 4a에는 병렬 하드웨어 구조(400)의 개략도가 도시되어 있는데, 상기 병렬 하드웨어 구조에서
Figure pct00251
메모리는 분할(segment)되어 x_blocks x y_blocks 처리기 블록들(402)로 병합되어 있으며, 상기 처리기 블록들(402) 각각은
Figure pct00252
메모리의 p x q 세그먼트를 포함한다. 여기서;
Figure pct00253
Figure pct00254
(6)
적절한 메모리 위치 내의 전달 및 그 위치로부터의 전달은 메모리 제어 블록 (404; mem_control)에 의하여 제어된다. 동일한 행에 있는 모든 처리기 블록들(402)은 공통
Figure pct00255
메모리(406)를 공유하며, 동일한 열에 있는 처리기 블록(402)들은 동일한
Figure pct00256
메모리(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)를 가지며, 그러한 데이터 연결을 통해 처리기 블록들은 서로 데이지 체인 방식으로 연결된다. 예시된 바와 같이, 결과 데이터는 처리기 블록들을 거쳐 각 열과 행 매스 블록들과 메모리들을 향해 북과 서쪽으로 전달된다.
행렬
Figure pct00257
는 상기 처리기 블록들 내에 분산 방식으로 저장되는데, 이러한 예에서 각 블록은 36x20 워드 메모리 영역을 가지며 듀얼 포트로 이루어지는 것이 바람직하고, 그래서 동시에 판독 및 기록될 수 있다. 이는 일단 식(3)에서의
Figure pct00258
의 첫번째 값이
Figure pct00440
를 이용하여 업데이트되면 식(4)의 평가가 진행됨으로써
Figure pct00260
의 후속 값들에 대한 연산에 영향을 주지 않고
Figure pct00261
를 업데이트하는 것이 가능하도록 복제(replication)되는 것이 바람직하다. 상기 행렬
Figure pct00262
는 처리기 블록들에 저장되지만 결코 방치되지는 않는다-그것은 단지
Figure pct00263
Figure pct00264
를 업데이트하기 위하여 잉여부분(residuals)을 저장하는 것뿐이다.
행 내의 각 처리기 블록은 그것이 취급하는 행 집합에 대한 (판독/기록) 데이터 버스
Figure pct00265
에 연결되고; 마찬가지로 열 내의 각 처리기 블록은 그것이 취급하는 열들의 집합에 대한 (판독/기록) 데이터 버스
Figure pct00266
에 연결된다.
상기 하드웨어의 한 버전에서 이러한 데이터 버스들의 동작을 예시하기 위하여 앞서 논의된 36열 x 20행의 예에 대하여 처리기 블록에 대한
Figure pct00267
Figure pct00268
값들의 완전한 집합을 요구하는 연산을 고려한다; 행과 열 데이터 블록을 액세스하기 위하여 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 신호가 유효화되기 전까지 지연이 관측된다.
일단 reset_out 라인이 로우로 되면, 사용자는
Figure pct00269
Figure pct00270
데이터를 상기 full_proc 모듈로 전달하는 것이 허용된다.
다음에는 블록들 간의 데이터 전달이 부가적으로 설명될 것이다.
Figure pct00271
메모리가 분할되므로, 그리고
Figure pct00272
Figure pct00273
메모리들에 하나 이상의 서브프레임의 데이터가 담겨져 있기 때문에, 데이터는 올바른 순서로
Figure pct00274
,
Figure pct00275
,그리고
Figure pct00276
메모리들 내로 로드되어야만 한다. 도 6에는
Figure pct00277
Figure pct00278
메모리 로딩 순서(즉, 블록별, 한 번에 서브-프레임들의 집합에 대한 데이터)가 도시되어 있으며, 이러한 순서는 다수의 이미지 서브-프레임들의 존재로 복잡해진다. 화살표는, 메모리들이
Figure pct00441
로 로드될 때 알고리즘의 개시시 한번, 그리고 그 메모리들에 원하는 결과가 담길 때 상기 알고리즘의 종료시 한번 각 메모리의 데이터 엘레먼트들이 액세스되는 순서를 나타낸다.
다음과 같은 절차는
Figure pct00280
Figure pct00281
메모리들을 로딩할 때 사용되는 것이 바람직하다;
1. 알고리즘의 개시시,
Figure pct00282
의 적절한 값이 선택되어야 하고 init_rows와 init_cols 라인들은 NUM_ROWS x NUM_SUBFRAMES 그리고 NUM_COLS x NUM_SUBFRAMES 클럭 싸이클 동안 각각 활성화되어야 한다(즉
Figure pct00283
를 모든 행과 열에 기록함).
2. kr_bias, kc_bias, kr_bias_iRC, 그리고 kc_bias_iRC 신호들은 항상 올바른 값으로 설정되어야 하는데, 여기서
Figure pct00284
Figure pct00285
Figure pct00286
(7)
Figure pct00287
Figure pct00288
-메모리 데이터는 도 7의 화살표로 나타낸 바와 같이, 남쪽 방향으로 처리기 블록들을 통해 순차적으로 쉬프트함으로써 각 처리기의 메모리 내로 로드된다(알다시피, 이는 이미지 픽셀들을
Figure pct00289
메모리들 내의 위치로 재순서화하는 것을 포함함). 각 처리기의
Figure pct00442
블록 메모리의 열들이 동시에 액세스된다.
모든 분할된
Figure pct00291
메모리들의 로딩은 NUM_COLS x NUM_ROWS 클럭 싸이클을 취하므로
Figure pct00292
메모리를 로딩하기 위한 바람직한 절차는 다음과 같다;
신호 Q_vailid는 이미지 행렬의 첫번째 값이 full_proc으로 전달될 때 활성화되고,
Figure pct00293
메모리들이
Figure pct00294
행렬의 값들로 로드되는 동안 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에 제공되어 있는데, 이는 머신의 기능을 효과적으로 정의한다.
- rc_mem_control 모듈의 내부 상태 머신
상태 출구 조건(Exit Condition) 설명
4'b0000 q_load_done=1 R과 C 메모리들이 로드되고 언로드됨
4'b0001 finished_sending=1
Figure pct00295
를 연산하기 위해 R 벡터의 각각의 값에 대하여 (NUM_ROWS 횟수로) 보내지는 C 벡터
4'b0010 finished_sending=1
Figure pct00296
를 연산하기 위하여 한번 보내지는 C 벡터
4'b0011 finished_sending=1
Figure pct00297
를 연산하기 위하여 NUM_ROWS 횟수로 보내지는 C 벡터
4'b0100 finished_sending=1
Figure pct00298
를 연산하기 위하여 한번 보내지는 R 벡터
4'b0101 finished_sending=1
Figure pct00299
를 연산하기 위하여 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)를 포함하며 나머지 슬레이브 블록들은 비교적 간단한 승산만 수행한다.
Figure pct00301
Figure pct00302
가 누산될 때, 이들은 그들의 역수를 연산하기 위하여 디바이더 블록으로 전달된다.
Figure pct00303
로 승산된 결과는 식 (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] 분모(
Figure pct00304
또는
Figure pct00305
)의 역수, 마스터 블록의 출력
denom_mult_input 입력 [17:0] 분모(RTR 또는 CTC)의 역수, 슬레이브 블록들에 대한 입력
div_result_valid 입력/출력 - 하이일때, denom_mult_output 상의 데이터가 유효함을 나타냄. 이는 마스터 블록으로부터의 출력이고; 모든 슬레이브 블록들 상에서 이러한 신호는 입력임에 유념하기 바람.
지금부터 proc 블록들이 설명될 것인데, 그의 일 예가 도 10에 도시되어 있다. 식 (1) 내지 식 (4)에서 설명한 연산들 중 일부를 수행하는 상기 proc 블록들은 다음과 같은 컴포넌트들을 포함한다;
1. 2개의 "DSP48"(승산-가산) 블록; 이들은 식 (2)와 식 (3)에 의하여 요구되는 승산-누산 기능들을 수행한다.
2. 분할된
Figure pct00306
메모리로 동작하는 블록 RAM
3.
Figure pct00307
메모리를 위한 어드레스 생성기
4. 제어기, 예를 들면 연산의 개시와 종료를 결정하고 처리기 블록이 연산해야 할 식들의 쌍이 식 (1)과 식 (2)인지 또는 식 (3)과 식 (4)인지를 결정하는 상태 머신
앞서 언급한 바와 같이, 처리기 블록들을 도 4a에 도시된 방식으로 연결하는 한가지 이점은, 모든 블록들 간에 상호 연결이 존재하기 때문에, 하나의 proc 블록이 마스터로 동작할 수 있고 나머지는 슬레이브들로 동작할 수 있다는 것이다. 이러한 설계에서, 로직의 수량이 상당히 감소하게 되는데, 그 이유는 비록 마스터 블록이 위의 모든 컴포넌트들 1 내지 4를 포함하고 있다 하더라도 슬레이브 블록들이 어드레스 생성기 또는 상태 머신을 포함하고 있지 않기 때문이다.
마스터 proc 블록의 동작, 그의 내부 상태 머신의 상태, 그리고 평가되는 식 간의 관계는 하기 표 6에 나타나 있는데, 이는 상기 머신의 기능을 효과적으로 정의한다.
- proc 블록의 내부 상태 머신
상태 출구 조건(Exit Condition) 설명
3'b111 q_load_done=1 초기상태, 이 상태에서 새로운 Q 행렬이 로드됨.
3'b000 Q_addr at TOP_Q_ADDRESS
Figure pct00443
3'b001 c_done=1
Figure pct00309
3'b010 Q_addr at TOP_Q_ADDRESS
Figure pct00310
3'b011 r_done=1
Figure pct00311
3'b100 Q_addr at TOP_Q_ADDRESS
Figure pct00312
3'b101 Q_addr at TOP_Q_ADDRESS
Figure pct00313
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로부터 볼 수 있는 바와 같이, 상기 처리기 블록은 행렬
Figure pct00314
의 일부를 저장하기 위한 BRAM(Block Random Access Memory)(1100)을 포함한다. 이러한 메모리는, 예를 들면 도 11b와 도 11d에서 도시된 바와 같이 듀얼 포트로 이루어지고; 한 실시예에서는 36x20 16-비트 메모리 위치들이 제공된다. 또한, 처리기 블록(402) 내에는 (앞서 언급한 FPGA에 대하여 "DSP48s"라고 지칭되는) 두 개의 디지털 신호 처리 모듈들(1102,1104)이 포함되어 있다. 이러한 모듈들 각각은 가산기(adder)(1108)에 연결된 승산기(1106)를 포함하는데; 상기 모듈들 중 하나(1104)는 승산-누산 유닛으로서 구성된다. 상기 DSP 모듈들(1104,1106)에 대한 입력은 DSP 모듈들에 대한 데이터 입력을 행
Figure pct00315
버스 또는 열
Figure pct00316
버스 중의 하나 또는
Figure pct00317
메모리 블록(1100)에 선택적으로 연결되는 것을 허용하는 다중화기(multiplexer)들(도 11에는 미도시)에 의해 선택가능하다. 또한, 상기 처리기 블록(402)들은 동기를 위한 클럭형 래치(clocked latch)들을 포함한다. 특히, 래치(1110)들은 하나의 스칼라 결과 값을 래치하므로 결과 데이터가 처리기 블록들의 체인을 따라 전달될 수 있게 한다. 이러한 래치들은 DSP 모듈의 출력 또는 상기 체인 내의 이전 처리기 블록으로부터의 데이터 중 하나를 래치하도록 다중화기(1112)를 채택하는, 선택가능한 입력들을 지닌다. 도 11d로부터 볼 수 있는 바와 같이, 처리기 블록(1102) 내의 가산기는 또한 감산기(subtractor)로서 구성될 수 있다. 도 11d에는 또한 앞서 언급한 바와 같이 식 (3)과 식 (4)의 연산들을 실질적으로 병행처리하기 위하여
Figure pct00318
블록 메모리(1100)로부터의 데이터를 저장하기 위한 버퍼(1114)가 도시되어 있다.
도 11a 내지 도 11d를 계속 참조하면, 도 11a에서, DSP 모듈(1104)은 예시된 바와 같이
Figure pct00319
를 연산하도록 구성된다. 따라서, 앞서 언급한 예에서, 상기 처리기 블록은 이러한 연산을 수행하기 위하여 36개의
Figure pct00320
값들을 수신한다. 그리고나서, 처리기 블록은, DSP 모듈(1102)이 도시된 바와 같이
Figure pct00321
값들의 집합을 연산하는 한편 DSP 모듈(1104)이 도시된 바와 같이
Figure pct00322
Figure pct00323
의 곱을 연산하도록 도 11b에 도시된 바와 같이 재구성된다. 이러한 연산을 위하여, 36개의
Figure pct00324
값들들은 20개의
Figure pct00325
값들 각각에 대하여 제공될 수 있다. 도 11a와 도 11b에서, 결과 데이터는 동에서 서로 전달된다.
도 11c에서, 처리기 블록(402)은,
Figure pct00326
을 연산하도록 도 11a와 마찬가지로 구성되고, 결과 데이터는 북으로 전달된다. 도 11d에서, 상기 처리기 블록(402)은
Figure pct00327
의 업데이트된 값을 연산하고 처리기 블록들의 체인의 북상으로 전달되는
Figure pct00328
Figure pct00329
데이터의 곱을 누산하도록 구성된다. 앞서 언급한 바와 같이, 식 (2)와 식 (3)의 제산들은 개별 행과 열 매스 블록들 중 하나에서 단지 한번만 수행될 필요가 있고, 그런 후에 역수로 승산함으로써 구현될 수 있다.
다음으로는 도 12a 내지 도 12e를 참조하여 하드웨어, 특히 처리기 블록들의 동작이 설명될 것이다. 먼저 알고리즘의 처음 절반부의 평가가 설명될 것이다.
알고리즘의 처음 절반부는 먼저 다음과 같은 식을 평가한다:
Figure pct00330
(8)
그리고나서, 동시에 다음과 같은 식을 평가한다;
Figure pct00331
(9)
Figure pct00332
(10)
상기 식 중,
Figure pct00333
Figure pct00334
는 적절한 상수들이다.
한 바람직한 실시예에서,
Figure pct00335
가 처리기 블록들을 통하여 통상 북-남으로 이동하기 때문에 단지 최북단(즉 맨위) 블록들만이 식 (8)을 푸는 데 필요하다. 이는 먼저, 식 (10)의 분모
Figure pct00336
가 상기 처리기 블록들이 부분
Figure pct00337
합들을 내놓을 때 준비될 수 있도록 풀리게 된다. 식 (9)는 풀려서 처리기 블록들의 내부에 완전히 저장된다. 상기 도면들에 도시되어 있는 모든 신호들은 자신들의 완전한 인스턴스화된 명칭들 다음에 나타나게 되는데, 예를 들면 신호 r-valid는 '/proc_test2_tb_v/uut/r_valid'로서 나타나 있다.
도 12a에 도시된 타이밍도에는 식 (8)에 대하여 맨위, 맨 좌측 블록(즉 최북단, 서쪽 블록)으로 전달되는 데이터가 도시되어 있다. 이러한 블록은 신호 c_valid가 활성화될 때 36개의 c 값들을 수신한다. 버스 신호 r은 정의될 필요가 없다(이는 식 (8)에 의하여 요구되지 않음). 맨 위 처리기 블록들의 결과적인 부분
Figure pct00338
합들은 처리기 블록 내의 레지스터에 배치된 다음에, d_east에서부터 d_west에 이르기까지 서쪽 방향으로 전달되어; 적절한 매스 블록에 의하여 누산된다(신호 dv_east는 동쪽으로부터 처리기 블록으로 들어오는 유효한 데이터를 나타내며, dv_west는 처리기 블록으로부터 나와 서쪽으로 가는 유효한 데이터를 나타낸다).
도 12b와 도 12c에는 식 (9)와 (10)을 풀기 위하여 공급되는 데이터의 타이밍이 도시되어 있다. 특히, 도 12b에는 맨 위, 맨 좌측 블록으로 전달되는 첫번째 두 개의 행 값들에 대한 타이밍도가 도시되어 있고, 도 12c에는 맨 위, 맨 좌측 블록으로 전달되는 모든 데이터에 대한 타이밍도가 도시되어 있다. 다시, 부분 합들이 (행과 열 데이터가 각각 공급된 후에, 그리고 평가되는 다음 행과 열 데이터가 공급되는 동안에) 매스 블록에 의하여 누산되고, 그래서 알고리즘의 다음 절반부에 대하여 준비된 행 메모리에 저장되어 준비되도록 동에서 서로 전달된다.
지금부터, 알고리즘의 다음 절반부의 평가가 설명될 것이다.
알고리즘의 다음 절반부는 먼저 다음과 같은 식을 평가한다;
Figure pct00339
(11)
그리고 나서, 동시에 다음과 같은 식을 평가한다;
Figure pct00340
(12)
Figure pct00341
(13)
식 (13)에는
Figure pct00342
가 필요하므로(이는 평가하는데 시간이 걸리며-식 (12)가 먼저 풀려야 함), 상기 처리기 블록들은
Figure pct00343
를 내부적으로 지연시키지 않고 동시에 위의 식들을 풀 수 없다. 도 12d에는 식 (4)를 풀기 위하여 맨위, 맨 좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다.
Figure pct00344
가 평가된 후에,
Figure pct00345
의 첫번째 값들이 풀리게 된다. 각 r_valid 펄스 후에 스톨링(stalling)을 피하기 위하여(스톨(stall)은 승산기 대기시간이
Figure pct00346
를 푸는데 필요하게 됨), 식 (12)는 식 (13)에 비하여 하나의 r_vaild 펄스만큼 앞서게 되며; 그리고
Figure pct00347
는 처리기 블록에서 내부적으로 2 x R_BLOCK_SIZE=40 만큼 버퍼링된다(그래서 올바른 값들
Figure pct00348
들이
Figure pct00349
의 올바른 값들로 승산하게 된다). 이는 도 12e에 도시되는데, 도 12e에는 식 (12)에 대하여 맨 위, 맨 좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다.
도 12f는 식 (12)와 식 (13)이 동시에 풀리게 될 때, 맨위, 맨좌측 블록으로 전달되는 데이터 모두에 대한 타이밍도가 도시되어 있다. 부분
Figure pct00350
합들은 남에서 북으로 열 누산기 블록들에 전달되는데, 그 블록들에서
Figure pct00351
가 평가되어 다음 반복을 위해 준비되는 열 메모리에 저장된다.
상기 하드웨어가 또한 입력 데이터 전-처리기를 포함하는 것은 선택사항이기는 하지만 상기 하드웨어가 입력 데이터 전-처리기를 포함하는 것이 바람직하다. 이는 다음과 같은 기능들 중 하나 이상을 구현할 수 있다; 4:2:2 휘도-크로미넌스 데이터를 위한 디코더, (위에서 설명한 바와 같이,
Figure pct00444
를 연산하기 위해 행렬 승산기를 포함할 수 있는) 색 공간 변환기, 그리고 인터레이스 비디오(interlaced video)를 위해, (2 라인, x 방향의 4 픽셀, 즉 2 x 4 어레이를 통해) 평균 함수를 수행하는 모듈.
위에서 설명한 기법들의 실시예들은 수동 행렬 TV 크기의 스크린(예컨대 8" 이상)을 능동 행렬 TV 크기의 스크린보다 단지 소비 전력이 조금 올라가기는 하지만 매우 낮은 가격으로 허용하게 하는 이미지 데이터 처리를 제공한다. 상기 하드웨어 가속기는 또한 도입부에서 설명한 바와 같이 광범위한 다른 응용을 위하여 사용될 수 있다. 따라서, 여러 실시예들에서 데이터는 다수의 집합으로 존재하고 타깃은 하나 이상의 축(axis) 상의 각 집합으로부터의 데이터, 및 다른 축 상의 데이터의 속성(예를 들면 타입들의 집합, 분류 또는 줄어든 파라미터 분석)을 포함한다. 여러 실시예들에서, 상기 속성들은, 다중 집합들에 걸친 컴포넌트 또는 속성의 합에 의미가 있도록 부가될 수 있다. 이러한 기법들은 네트워크 보안을 위하여 얼굴 그리고 다른 이미지의 매칭/인식을 위한 이미지 데이터를 처리하는데 채택될 수 있으며 - 예를 들면, 이를 테면 콘텐츠 기반 텍스트 필터링에 의하여 구성된 사용자 프로파일의 의미론적 표현을 처리하기 위하여, 입력 데이터의 감소된 표현을 제공하도록 데이터베이스에서 다변량(multivariate) 데이터를 처리하기 위하여, 예를 들면 주요 컴포넌트 분석을 수행하도록 다른 여러 종류의 센서 데이터 처리를 위하여, 이를 테면 표정 공간에서 국소화된 특징들을 발견하거나 결합 또는 상호작용 장소들을 발견하도록 유전자, 프로테옴(proteome), 뉴클레오티드, 또는 아미노산 배열 데이터와 같은 마이크로어레이 또는 생물학적 배열 데이터의 처리, 분석 또는 컴포넌트 분석을 위하여, 기계 학습을 위하여, 예를 들면 객체 또는 객체의 부분들, 이미지들, 사운드들, 텍스트, 또는 워드들 등을 나타내는 데이터를 분석하기 위하여, 그리고 일반적으로 데이터 분석 및 패턴 인식을 위하여 채택될 수 있다.
다른 여러 효과적인 변형예들이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 고려될 수 있을 것이다. 본 발명은 앞서 설명한 실시예들에 한정되지 않고 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자들에게 자명하게 되며 본원 명세서에 첨부된 청구범위의 사상과 범위 내에 포함되는 수정예들을 포함하는 것으로 이해하여야 한다.

Claims (29)

  1. 서로 승산될 때 타깃 행렬(target matrix)로 근사화되는 한 쌍의 요인 행렬(factor matrix)
    Figure pct00353
    을 결정하기 위한 행렬 인수분해 하드웨어 가속기(matrix factorisation hardware accelerator)에 있어서,
    상기 하드웨어 가속기는,
    상기 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력;
    제1 요인 행렬(
    Figure pct00354
    )에 대한 행 데이터와 열 데이터를 저장하는 제1 요인 행렬 메모리로서, 제1 요인 행렬메모리는 복수의 제1 데이터 버스를 가지며, 상기 제1 데이터 버스들은 각각 상기 제1 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제1 요인 행렬 열 데이터에 액세스(access)하는, 제1 요인 행렬 메모리;
    제2 요인 행렬(
    Figure pct00355
    )에 대한 행 데이터와 열 데이터를 저장하는 제2 요인 행렬 메모리로서, 제2 요인 행렬 메모리는 복수의 제2 데이터 버스를 가지며, 상기 제2 데이터 버스들은 각각 상기 제2 요인 행렬 메모리의 개별 블록과 연관되어 상기 블록에 저장된 제2 요인 행렬 행 데이터에 액세스하는, 제2 요인 행렬 메모리;
    처리기 블록들의 행렬로서, 각 처리기 블록은, 상기 제1 데이터 버스들 중 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 상기 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬(
    Figure pct00356
    )의 일부를 저장하는 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1입력과 상기 제1 처리기 블록 데이터 버스 및 제2 처리기 블록 데이터 버스 중 하나 또는 모두에 연결된 제2 입력을 가지며 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬; 및
    상기 입력으로부터의 데이터를 상기 처리기 블록들의 행렬의 상기 처리기 메모리 블록들에 기록하는 것을 제어하고, 상기 처리기 블록들의 행렬에 제공하기 위해 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리로부터의 데이터를 판독하는 것을 제어하고, 상기 행렬 인수분해를 수행하기 위해 상기 결과 데이터 출력으로부터 획득된 데이터를 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 다시 기록하는 것을 제어하기 위한 제어회로;
    를 포함하며,
    상기 행렬 인수분해는 비-음수 행렬 인수분해(NMF; non-negative matrix factorisation)를 포함하는, 행렬 인수분해 하드웨어 가속기.
  2. 제1항에 있어서, 상기 각 처리기 블록은 상기 처리기 메모리 블록에 연결된 제3 처리기 블록 데이터 버스를 가지며, 상기 처리기 메모리 블록은 상기 제1 데이터 버스에 의하여 액세스되는 상기 제1 요인 행렬 메모리 열 데이터의 행 데이터 항목들의 개수에 대응하는 제1 차원(dimension)과 상기 제2 데이터 버스에 의하여 액세스되는 상기 제2 요인 행렬 메모리 행 데이터의 열 데이터 항목들의 개수에 대응하는 제2 차원(dimension)을 가지는 상기 행렬(
    Figure pct00357
    )의 일부를 저장하도록 구성되는, 행렬 인수분해 하드웨어 가속기.
  3. 제2항에 있어서, 상기 처리기 블록은 데이터를 상기 처리기 메모리 블록에 기록하고 상기 처리기 메모리 블록으로부터 데이터를 판독하기 위한 한 쌍의 상기 제3 처리기 블록 데이터 버스를 가지며, 상기 처리기 블록들은 상기 제3 처리기 블록 데이터 버스들에 의해 데이지 체인(daisy-chain) 방식으로 연결되는, 행렬 인수분해 하드웨어 가속기.
  4. 제1항에 있어서, 상기 처리기 블록은 2개의 상기 결과 데이터 출력과 2개의 결과 데이터 입력을 가지며, 상기 처리기 블록들의 행렬은 상기 결과 데이터 입력과 출력에 의해 2가지 방향에서 데이지 체인 방식으로 연결되는 처리기 블록들의 직각 행렬(rectangular matrix)을 포함하는, 행렬 인수분해 하드웨어 가속기.
  5. 제1항에 있어서,
    상기 행렬 인수분해 하드웨어 가속기는,
    상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리 각각에 다시 기록하기 위해 상기 처리기 블록들의 행렬로부터 수신된 데이터를 누산하도록 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리에 연관된 제1 매스(math) 블록 및 제2 매스 블록을 더 포함하는, 행렬 인수분해 하드웨어 가속기.
  6. 제5항에 있어서, 상기 제1 매스 블록 및 제2 매스 블록 각각은 마스터(master) 매스 블록과 하나 이상의 슬레이브(slave) 매스 블록을 포함하며, 상기 마스터 매스 블록은 상기 하나 이상의 슬레이브 블록들에 대한 출력을 가지는 디바이더 유닛(divider unit)을 포함하며, 상기 하나 이상의 슬레이브 블록 각각은 상기 디바이더 유닛 출력에 연결된 입력을 가지는 승산기 유닛을 포함하는, 행렬 인수분해 하드웨어 가속기.
  7. 제5항에 있어서, 상기 제1 요인 행렬 메모리 및 상기 제2 요인 행렬 메모리는 동시에 상기 처리기 블록들에 대한 판독 액세스 및 상기 매스 블록들에 의한 기록 액세스를 허용하도록 듀얼 포트(dual-port)로 이루어진 메모리를 포함하는, 행렬 인수분해 하드웨어 가속기.
  8. 제1항에 있어서, 상기 처리기 블록들은 마스터 처리기 블록과 복수의 슬레이브 처리기 블록들을 포함하며, 상기 마스터 블록은, 상기 슬레이브 처리기 블록들에서, 상기 처리기 블록 메모리의 어드레스와 상기 슬레이브 처리기 블록들 내의 상기 데이터 처리기들의 동작 중의 하나 또는 양자 모두를 제어하도록 구성되는, 행렬 인수분해 하드웨어 가속기.
  9. 제1항에 있어서, 상기 승산-가산 유닛은 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스에 연결된 제1 승산 입력 및 제2 승산 입력, 상기 처리기 메모리 블록의 판독 출력에 연결된 가산 입력 및 상기 처리기 메모리 블록의 기록 입력에 연결된 출력을 가지며, 상기 데이터 처리기는 승산-가산 유닛을 더 포함하고 상기 승산-가산 유닛은 상기 승산-가산 유닛의 출력에 연결된 제1 승산 입력과 상기 제1 처리기 블록 데이터 버스 및 상기 제2 처리기 블록 데이터 버스 중의 하나에 선택적으로 연결가능한 제2 승산 입력을 가지며, 그리고 상기 데이터 처리기의 출력에 연결된 출력을 가지는 승산-누산 유닛으로서 구성되는, 행렬 인수분해 하드웨어 가속기.
  10. 제1항에 있어서, 상기 처리기 메모리 블록은 상기 저장된 행렬(
    Figure pct00358
    )의 상기 일부의 복사본(copy)을 저장하는 버퍼를 포함하며, 상기 데이터 처리기는 상기 저장된 행렬의 상기 일부의 2가지 상이한 버전(version)과 동시에 동작가능하고, 상기 2가지 상이한 버전 중 한 버전은 상기 2가지 상이한 버전 중 다른 한 버전보다 이전 버전의 상기 일부의 버퍼링된 복사본인, 행렬 인수분해 하드웨어 가속기.
  11. 제1항에 있어서, 상기 데이터 처리기는 제1 비트길이의 변수들과의 정수 연산(integer arithmetic)을 사용하도록 구성되고, 상기 처리기 메모리 블록은 상기 제1 비트 길이의 두 배 길이인 정수 변수들을 저장하도록 구성되는, 행렬 인수분해 하드웨어 가속기.
  12. 제1항에 있어서, 상기 데이터 처리기는 상기 저장된 행렬(
    Figure pct00359
    )의 상기 일부에 대응하는 데이터에 대하여 다음과 같은 연산들,
    Figure pct00451
    Figure pct00361
    을 수행하도록 구성되며, 상기 식 중, xy, py, xp는
    Figure pct00362
    ,
    Figure pct00363
    ,그리고
    Figure pct00364
    의 열들 및 행들을 각각 나타내는, 행렬 인수분해 하드웨어 가속기.
  13. 삭제
  14. 제1항 내지 제12항 중 어느 한 항의 행렬 인수분해 하드웨어 가속기를 포함하는, 집적 회로.
  15. 제1항 내지 제12항 중 어느 한 항의 행렬 인수분해 하드웨어 가속기를 포함하는 OLED 디스플레이 구동기.
  16. 행렬 인수분해를 위한 집적 회로(IC; integrated circuit)로서, 상기 행렬 인수분해는 비-음수 행렬 인수분해(NMF; non-negative matrix factorisation)를 포함하는, 행렬 인수분해를 위한 집적 회로에 있어서,
    상기 집적 회로는,
    제1 및 제2 요인 행렬(
    Figure pct00445
    )로 인수분해하도록 타깃 행렬을 나타내는 입력 데이터 행렬을 수신하는 입력;
    각각의 제1 데이터 버스가 제1 요인 행렬 메모리(
    Figure pct00366
    )의 블록 내에 저장된 데이터에 액세스하기 위한 복수의 제1 데이터 버스;
    각각의 제2 데이터 버스가 제2 요인 행렬 메모리(
    Figure pct00367
    )의 블록 내에 저장된 데이터에 액세스하기 위한 복수의 제2 데이터 버스; 및
    처리기 블록들의 행렬로서, 각 처리기 블록은 상기 제1 데이터 버스들 중의 하나에 연결된 제1 처리기 블록 데이터 버스, 상기 제2 데이터 버스들 중의 하나에 연결된 제2 처리기 블록 데이터 버스, 그리고 결과 데이터 출력; 한 쌍의 요인 행렬의 곱과 상기 타깃 행렬 간의 차이를 나타내는 행렬(
    Figure pct00368
    )의 일부를 저장하기 위한 처리기 메모리 블록; 그리고 상기 처리기 메모리 블록에 연결된 제1 입력, 상기 제1 및 제2 처리기 블록 데이터 버스 중의 하나 또는 양자 모두에 연결된 제2 입력, 그리고 상기 결과 데이터 출력에 연결된 출력을 가지는, 적어도 하나의 승산-가산 유닛을 포함하는 데이터 처리기;를 가지는, 처리기 블록들의 행렬;
    을 포함하는, 행렬 인수분해를 위한 집적 회로.
  17. 제1항의 행렬 인수분해 하드웨어 가속기를 사용하여 비-음수 행렬 인수분해(NMF) 연산의 하드웨어 가속 방법으로서, 상기 연산은 하기 식들,
    각 x와 y에 대하여
    Figure pct00369
    (1)
    각 y에 대하여
    Figure pct00370
    (2)
    각 x에 대하여
    Figure pct00371
    (3)
    각 x와 y에 대하여
    Figure pct00372
    (4)
    을 반복적으로 결정하는 것을 포함하고 상기 식 중, xy, py, xp는
    Figure pct00452
    ,
    Figure pct00453
    ,그리고
    Figure pct00454
    의 열들 및 행들을 각각 나타내며
    Figure pct00455
    는 0으로 나누어지는 것을 방지하도록 하는 변수이고 상기 식 (1) 내지 (4)는 매 반복당 각
    Figure pct00373
    값에 대하여 평가되며
    Figure pct00374
    는 가중 인자를 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 방법에 있어서,
    상기 방법은, 각
    Figure pct00375
    값에 대하여;
    대응하는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에
    Figure pct00376
    를 저장하고;
    상기 식 (2)의 분모를 연산하며;
    상기 복수의 처리기 블록들에 걸쳐 실질적으로 동시에 상기 식 (1)과 (2)의 분자에 대한 기여도(contributions)를 연산하여
    Figure pct00446
    Figure pct00447
    를 결정하고;
    상기 식 (3)의 분모를 연산하고; 그리고
    상기 복수의 처리기 블록들에 걸쳐 실질적으로 동시에 상기 식 (4) 및 식 (3)의 분자에 대한 기여도(contributions)를 연산하여
    Figure pct00456
    Figure pct00457
    를 결정하는; 것을 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 방법.
  18. 제1항의 행렬 인수분해 하드웨어 가속기를 사용하여 비-음수 행렬 인수분해(NMF) 연산의 하드웨어 가속 시스템으로서, 상기 연산은 하기 식들,
    각 x와 y에 대하여
    Figure pct00381
    (1)
    각 y에 대하여
    Figure pct00382
    (2)
    각 x에 대하여
    Figure pct00383
    (3)
    각 x와 y에 대하여
    Figure pct00384
    (4)
    을 반복적으로 결정하는 것을 포함하고 상기 식 중, xy, py, xp는
    Figure pct00458
    ,
    Figure pct00459
    ,그리고
    Figure pct00460
    의 열들 및 행들을 각각 나타내며
    Figure pct00461
    는 0으로 나누어지는 것을 방지하도록 하는 변수이고 상기 식 (1) 내지 식 (4)는 매 반복당 각
    Figure pct00385
    값에 대하여 평가되며
    Figure pct00386
    는 가중 인자를 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 시스템에 있어서,
    상기 시스템은;
    대응하는 복수의 처리기 블록들에 걸쳐 분산되어 있는 복수의 메모리 블록들에
    Figure pct00387
    를 저장하는 수단;
    상기 식 (2)의 분모를 연산하는 수단;
    상기 식 (1)과 식 (2)의 분자에 대한 기여도(contributions)를 연산하는 수단;
    상기 식 (3)의 분모를 연산하는 수단; 및
    상기 복수의 처리기 블록들에 걸쳐 실질적으로 동시에 상기 식 (4) 및 식 (3)의 분자에 대한 기여도(contributions)를 연산하여
    Figure pct00448
    Figure pct00449
    를 결정하는 수단;
    을 포함하는, 비-음수 행렬 인수분해 연산의 하드웨어 가속 시스템.
  19. 제18항의 시스템을 포함하는 디스플레이 구동기.
  20. 제17항의 방법을 구현하는 하드웨어를 기술하는 처리기 제어 프로그램 코드를 포함하는 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 저장 매체.
  21. 입력 행렬(
    Figure pct00390
    )을 한 쌍의 제1 및 제2 요인 행렬(
    Figure pct00391
    )로 인수분해하기 위한 비-음수 행렬 인수분해(NMF) 하드웨어 가속기에 있어서,
    상기 비-음수 행렬 인수분해 하드웨어 가속기는,
    제1 요인 행렬(
    Figure pct00392
    )의 엘레먼트들을 저장하는 제1 메모리 저장부;
    제2 요인 행렬(
    Figure pct00393
    )의 엘레먼트들을 저장하는 제2 메모리 저장부;
    상기 제1 및 제2 메모리 저장부에 연결되고 복수의 비-음수 행렬 인수분해(NMF) 연산을 병행처리하는 처리기들의 그리드(grid); 및
    상기 입력 행렬(
    Figure pct00394
    )을 상기 처리기들의 그리드에 기록하는 것을 제어하고 상기 처리기들을 제어하여 상기 제1 및 제2 요인 행렬들의 엘레먼트들을 상기 제1 및 제2 메모리 저장부에 각각 기록하는 제어기;
    를 포함하는, 비-음수 행렬 인수분해 하드웨어 가속기.
  22. 제21항에 있어서,
    상기 비-음수 행렬 인수분해 하드웨어 가속기는,
    상기 처리기들을 상기 제1 및 제2 메모리 저장부에 각각 연결하는 복수의 제1 데이터 버스들과 복수의 제2 데이터 버스들을 가지는, 비-음수 행렬 인수분해 하드웨어 가속기.
  23. 제21항 또는 제22항에 있어서, 상기 각각의 처리기는 상기 입력 행렬(
    Figure pct00395
    )의 일부를 저장하는 메모리 영역을 포함하는, 비-음수 행렬 인수분해 하드웨어 가속기.
  24. 제23항에 있어서, 상기 각각의 처리기는, 상기 처리기 메모리 영역으로부터 획득된 데이터를 수신하기 위한 제1입력과 상기 제1 및 제2 데이터 버스들 중의 하나에 연결된 적어도 하나의 제2 입력을 가지며 상기 제1 및 제2 메모리 저장부 중의 하나 또는 양자 모두에 데이터를 제공하기 위하여 상기 비-음수 행렬 인수분해(NMF) 연산을 수행하도록 구성된 적어도 하나의 승산-가산 유닛을 포함하는, 비-음수 행렬 인수분해 하드웨어 가속기.
  25. 입력 행렬(
    Figure pct00396
    )을 한 쌍의 제1 및 제2 요인 행렬(
    Figure pct00397
    )로 인수분해하기 위한 비-음수 행렬 인수분해(NMF)를 위한 집적 회로(IC)에 있어서,
    상기 집적 회로는,
    상기 제1 및 제2 요인 행렬(
    Figure pct00398
    )의 엘레먼트들을 각각 저장하는 제1 및 제2 메모리 저장부에 액세스하기 위한 외부 버스들에 연결된 처리기들의 그리드(grid);를 포함하는, 비-음수 행렬 인수분해를 위한 집적회로.
  26. 제25항에 있어서, 상기 처리기들은 각각 로컬 메모리를 포함하며, 상기 처리기들은 복수의 슬레이브 처리기들 그리고 마스터 처리기로 구성된 하나의 처리기를 포함하고, 상기 마스터 처리기는, 상기 슬레이브 처리기들에서, 상기 로컬 메모리의 어드레스 및 상기 슬레이브 처리기들의 데이터 처리 동작 중의 하나 또는 양자 모두를 제어하도록 구성되는, 비-음수 행렬 인수분해를 위한 집적회로.
  27. 제25항 또는 제26항에 있어서, 상기 처리기들의 그리드의 각 처리기는 상기 입력 행렬의 영역이 처리가능하도록 하는 상기 입력 행렬의 대응되는 일부를 처리하도록 구성되고, 상기 외부 버스들은 복수의 상기 집적회로들이 복수의 상기 입력 행렬 영역들을 처리하도록 연결될 수 있도록 구성되는, 비-음수 행렬 인수분해를 위한 집적회로.
  28. 제18항의 시스템을 포함하는 디스플레이.
  29. 제18항의 시스템을 구현하는 하드웨어를 기술하는 처리기 제어 프로그램 코드를 포함하는 컴퓨터 프로그램이 수록된 컴퓨터 판독가능 저장 매체.
KR1020087025852A 2006-03-23 2007-03-21 데이터를 처리하는 하드웨어 KR101363602B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101843243B1 (ko) 2015-10-30 2018-03-29 세종대학교산학협력단 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치

Families Citing this family (28)

* 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
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)

* Cited by examiner, † Cited by third party
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)

* 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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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