KR100693654B1 - 행렬과 벡터의 내적 벡터 산출 장치 및 방법 - Google Patents

행렬과 벡터의 내적 벡터 산출 장치 및 방법 Download PDF

Info

Publication number
KR100693654B1
KR100693654B1 KR1019990047719A KR19990047719A KR100693654B1 KR 100693654 B1 KR100693654 B1 KR 100693654B1 KR 1019990047719 A KR1019990047719 A KR 1019990047719A KR 19990047719 A KR19990047719 A KR 19990047719A KR 100693654 B1 KR100693654 B1 KR 100693654B1
Authority
KR
South Korea
Prior art keywords
vector
dot product
matrix
output
vectors
Prior art date
Application number
KR1019990047719A
Other languages
English (en)
Other versions
KR20000047576A (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 KR20000047576A publication Critical patent/KR20000047576A/ko
Application granted granted Critical
Publication of KR100693654B1 publication Critical patent/KR100693654B1/ko

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명의 장치는 행렬과 벡터의 내적 벡터를 산출한다. 행렬은 제 1 계수 세트를 가지며, 벡터는 제 2 계수 세트를 갖는다. 적어도 하나의 입력 레지스터(110)가 제 2 계수 세트를 저장하는 데 사용된다. 다수의 기억 소자(120)는 제 1 계수 세트로부터 도출된 부분 합계 세트를 저장하는 데 사용된다. 적어도 하나의 입력 레지스터(110)의 출력은 다수의 기억 소자에 대한 어드레스 입력으로서 사용된다. 또한, 선택 회로(150)는 다수의 기억 소자의 어드레스 입력 라인에 연결되고, 생성된 내적 벡터의 한 원소를 벡터의 행 및 벡터로부터 결정한다. 다수의 기억 소자(120)의 출력으로부터의 부분 합계 서브세트는 가산 회로(130)에 가산되어, 벡터에 의해 승산된 행렬의 내적 벡터의 원소를 제공하는 합계 출력을 생성한다. 본 장치는 집적 회로 면적을 감소시키는 장점 및 임의의 요구되는 순서로 내적 벡터의 원소를 생성할 수 있다는 장점이 있다.

Description

행렬과 벡터의 내적 벡터 산출 장치 및 방법{SIGNAL PROCESSING DISTRIBUTED ARITHMETIC ARCHITECTURE}
도 1은 내적을 수행하기 위한 통상적인 분산 산술법의 구현이 도시된 도면,
도 1a는 도 1의 통상적인 구현에 사용되는 메모리 구성이 도시된 도면,
도 2는 본 발명을 분산 산술법에 사용한 바람직한 실시예가 도시된 도면,
도 2a는 도 2의 바람직한 실시예에 사용되는 메모리 구성을 도시한 도면,
도 2b는 표준 셀 또는 유사 방법에서 사용할 수 있는 이산 논리를 사용해서 형성된 예시적인 기억 소자가 도시된 도면,
도 3은 디지털 카메라에서의 바람직한 실시예의 사용이 도시된 도면.
도면의 주요 부분에 대한 부호의 설명
10, 110 : 입력 레지스터부 20 : ROM 부
22, 24, 26, 28 : ROM 30 : 누산기부
40, 140 : 클록 회로 120 : 기억 소자부
122, 124, 126, 128 : 기억 소자(S.E)
130 : 가산 회로 150 : 선택 회로
160 : 진리표
170 : 진리표를 구현하기 위한 감소된 논리
200 : 디지털 카메라 210 : 이미지 센서
220 : 이미지 처리 집적 회로 230 : 이미지 저장 장치
240 : 카메라 제어기 250 : 렌즈
260 : 전자기적 에너지 270 : 이미지 센서의 소 영역
본 발명은 신호 처리에 관한 것으로서, 보다 상세하게는, 벡터와 행렬의 내적(inter product)을 생성하기 위한 새로운 분산 산술(Distributed Arithmetic) 구조를 구현하며, 디지털 카메라에 특히 유용한 애플리케이션 및 유사한 이미지 처리 애플리케이션을 갖는 장치 및 방법에 관한 것이다.
소비자는 컴팩트 디스크, 컴퓨터, 프린터 및 휴대 전화(cell phone) 등과 같은 디지털 장치에 익숙해져 있기 때문에, 사진 촬영(photography)과 같이 그들 생활의 다른 영역에서 디지털 방식으로 구현 가능한 기술을 더욱 기꺼이 받아들인다. 실질적으로, 사진 촬영에서는 필름(film)이 필요 없고 그 대신에 디지털 기억 장치(digital storage device)를 사용하여 사용자가 찍은 영상을 보관하는 디지털 사진 촬영이 현재의 경향이다. 그러나, 아직까지는 디지털 카메라의 가격이 대부분의 사람에게는 너무 비싸기 때문에, 디지털 카메라의 대중화를 위해서 가격 인하를 위해 노력 중이다. 가격 인하 외에도, 디지털 카메라에 대한 수요를 증가시키기 위해서는, 디지털 카메라로 촬영한 사진의 화질이 전형적인 필름계 사진의 화질에 필적할 만한 것이이어야 한다. 이 화질을 얻기 위해서는 디지털 카메라 내의 이미지 센서(image sensor)에 사용되는 (광전 변환기(light-to-electricity converters)의) 화소 수를 증가시켜야 한다. 그러나, 이와 같이 화소 수를 증가시키는 경우는, 이미지 센서로 포착한 사진을 카메라에 사용되는 디지털 저장 장치의 저장용량에 적합할 수 있는 수용 가능한 디지털 형식으로 변환하기 위한 처리 요구량을 증가시키기 때문에, 디지털 카메라의 가격을 더욱 상승시킨다. 수용 가능한 수의 사진을 디지털 카메라로 촬영하고 저장하기 위해서는, 저장 요건을 감소시키는 어떤 이미지 압축 방식이 필요하다.
또한, 사용자는 당연히 그들이 촬영한 화면의 디지털 특성을 활용할 수 있는 새로운 특징을 요구하고 있다. 예를 들어, 사용자들은, 색 평형(color balance), 광 준위(light level), 콘트라스트(contrast) 등의 보정이 개인 컴퓨터(personal computer) 상에서 수행되기보다는, 카메라 자체에서 자동으로 수행되어 컬라 프린터에서 직접 재생될 수 있기를 원한다.
따라서, 디지털 사진 시장이 형성되기 위해서는, 부가 기능이 추가되면서도 디지털 카메라의 가격이 인하되어야 한다. 이 새로운 디지털 카메라에는 부가 기능을 충분히 제공하는 다용도의 전자 장치가 필요하다. 또한, 이 전자 장치는 가격을 하락시키기 위해서 집적 회로의 면적이 보다 작아야 한다.
이미지 처리 회로의 크기 및 가격을 감소시키기 위한 이전의 몇몇 시도는 분산 산술법에 집중되었다. 분산 산술이란 명칭은, 산술 기능이 서로 연결되는 이산 산술 블록(예를 들어, 가산, 승산)과는 다른 특정한 의미의 다양한 전자 장치에 분산되어 있는 데서 비롯되었다. 이미지 처리에 있어서, 가장 자주 직면하는 산술 형태는, 내적을 산출하기(form) 위한 벡터(이미지의 일부분)와 행렬(이미지 압축 및 확장 같은 변환 기능)의 승산이다. 다행히도, 이 내적 산술은 DA에 의해서 가장 능률적으로 수행된다. 사실상, 종래의 DA법은, 이미지 처리 직접 회로에 사용되는 트랜지스터의 수를 그 이전의 통상적인 구조보다 적어도 50∼80% 정도 감소시킬 수 있었다. 그러나, 더 많은 기능을 제공하면서 가격을 낮출 것에 대한 지속적인 요구는 이미지 처리 회로에 사용되는 트랜지스터의 수를 보다 더욱 감소시킬 수 있는 새로운 DA법을 필요로 한다.
본 발명의 장치는 행력과 벡터의 내적 벡터를 산출한다. 행렬은 제 1 계수 세트를 가지며, 벡터는 제 2 계수 세트를 갖는다. 적어도 하나의 입력 레지스터가 제 2 계수 세트를 저장하는 데 사용된다. 다수의 기억 소자는 제 1 계수 세트로부터 도출된 부분 합계 세트를 저장하는 데 사용된다. 적어도 하나의 입력 레지스터의 출력은 다수의 기억 소자에 대한 어드레스 입력으로서 사용된다. 또한, 선택 회로는 다수의 기억 소자의 어드레스 입력 라인에 연결되고, 생성된 내적 벡터의 한 원소를 벡터의 행 및 벡터로부터 결정한다. 다수의 기억 소자의 출력으로부터의 부분 합계 서브세트는 가산 회로에 가산되어, 벡터에 의해 승산된 행렬의 내적 벡터의 원소를 제공하는 합계 출력을 생성한다.
삭제
본 발명의 바람직한 실시예를 설명하기 전에, 행렬로 벡터를 승산하기 위한 통상적인 분산 산술법(미국 특허 제 5,226,002 참조)에 사용되는 접근법(approach)을 이해하는 것이 도움이 된다. 통상적인 DA법을 설명하기 위해서, 원소 수 N이 4인 행 백터
Figure 112004049638019-pat00001
와 계수 Cij의 4행×4열 행렬 C를 승산하여, 이하의 수학식 1에 나타낸 바와 같은, N개의 원소로 이루어진 결과 벡터
Figure 112004049638019-pat00002
를 형성하는 경우를 고려한다. 여기서, N은
Figure 112004049638019-pat00003
인 벡터
Figure 112004049638019-pat00004
Figure 112004049638019-pat00005
인 벡터
Figure 112004049638019-pat00006
의 입력 개수이다.
Figure 111999013978626-pat00007
디지탈 회로에서, 숫자는 2진 형태로 표현된다. 그러므로, 벡터
Figure 112004049638019-pat00008
의 각 원소는,
Figure 112004049638019-pat00009
의 원소 값의 두 개의 상보적인 2진 표현인 비트의 열로 기록될 수 있다. 당업자라면
Figure 112004049638019-pat00010
의 원소 값에 대한 다른 2진 표현이 존재하며, 본 발명의 사상 및 범주를 여전히 충족하고 있음을 알 것이다. 또한, 당업자라면
Figure 112004049638019-pat00011
의 각 원소는 사용자가 구현하기를 원하는 애플리케이션에 대한 요구(desire) 때문에 소정 정밀도를 나타내는 데 요구되는 많은 비트 b로 표현될 수 있으며, 여전히 본 발명의 사상 및 범주를 충족하고 있음을 알 것이다. 예로서, 벡터
Figure 112004049638019-pat00012
의 각 원소가 4(예를 들어, b=4) 비트의 폭이라 가정하면, 벡터
Figure 112004049638019-pat00013
의 원소는
Figure 112004049638019-pat00014
으로 나타낼 수 있다. 예를 들어, i=0일 때
Figure 112004049638019-pat00015
으로 나타낼 수 있다. 따라서, 상술한 벡터
Figure 112004049638019-pat00016
와 행렬 C의 승산은 수학식 2와 같이 표현될 수 있다.
Figure 111999013978626-pat00017
여기에서 X(i)j는 X(i)의 j번째 비트이며, 비트 0은 최하위 비트이다. 벡터
Figure 112004049638019-pat00018
의 원소(X(i)j)는 비트이므로, 그 원소들은 1 또는 0의 값만을 가질수 있다. 따라서, 행렬 C의 소정 열과
Figure 112004049638019-pat00019
의 임의의 행의 내적(inner product, 內積)은 16개의 가능한 값만을 갖는다. 이들 16개의 값은 주어진 행 벡터의 원소(계수)의 모든 가능한 합계를 나타낸다. 통상적인 DA법에 내재된 기본 관념은, 행 백터에 대해서 이들 부분 합계를 얻어 미리 계산하고, 미리 계산된 이들 부분 합계를 C의 각 행에 대한 개별적인 ROM에 저장한다는 것이다.
Figure 112004049638019-pat00020
의 각 행 백터는 각 개별 ROM의 어드레스에 한 번에 하나씩 입력되고, 각 ROM의 출력이 축적되어 결과 벡터
Figure 112004049638019-pat00021
를 생성한다.
도 1에는 통상적인 DA법을 사용해서 Y(0) 내지 Y(3)를 계산하는 통상적인 회로가 도시되어 있다. 이 회로는 병렬 입력/직렬 출력 천이 레지스터(shift resister)로 구성된 4개의 입력 레지스터(10), 4개의 ROM(20), 4개의 누산기(累算器, accumulator)(30) 및 클록 회로(clock circuit)(40)로 구성된다. 계산을 시작하기 위해서, 입력 계수 X(0) 내지 X(3)이 입력 레지스터(10)에 클록 입력된다. 이들 입력 레지스터(10)는 최하위 비트로 시작하여, 각 주기(cycle)마다 각 입력(기본적으로는
Figure 112004049638019-pat00022
의 행)의 1비트를 클록 출력한다. 이들 비트는 결합해서 ROM(20)에 대한 어드레스를 형성한다. 도 1a에 도시된 바와 같이, 각 ROM은 동일한 어드레스 입력을 공유하지만, 그 내부에 저장된 데이터의 상이한 기산출 부분 합계를 갖는다. ROM0(22)은 행렬 C의 행 0의 기산출 부분 합계, ROM1(24)은 행 1의 기산출 부분 합계, ROM2(26)는 행 2의 기산출 부분 합계, ROM3(28)은 행 3의 기산출 부분 합계를 각각 갖는다. 각 클록 주기마다, 어드레스가 입력 레지스터(10)로부터 ROM(22)으로 제공되고, 각 ROM으로부터는 새로운 데이터 워드가 클록 출력된다. 각 ROM의 출력은 8비트 폭인 것으로 도시되어 있다. 당업자라면 특정 애플리케이션에 대한 부분 합계의 요구 해상도에 따라서 데이터 버스가 임의의 비트 폭이 될 수 있음을 알 것이다. ROM 각각으로부터의 출력은 누산기(30)에서 개별적으로 누산되고, 클록 회로(40)에서 행렬 C의 각 행에 대한 모든 클록 주기가 수행된 후에, 그 누산 결과 Y(0)-Y(3)가 누산기(30)에 나타난다.
또한, 도 1에서는 DA 회로의 두 가지 중요한 매개변수를 강조하고 있음에 주의해야 한다. 입력 레지스터의 개수 또는
Figure 112004049638019-pat00023
Figure 112004049638019-pat00024
의 원소(계수) 개수인 첫 번째 매개변수 N은 각 ROM에서 요구하는 위치(location)의 수를 결정하는데, 2N개의 위치의 총 개수를 감소시키기 위한 공지된 다양한 기법(White, StanleyA, "Applications of Distributed Arithmetic to Digital Signal Processing : A Tutorial Review", IEEE ASSP Magazine, July 1989, pp4-19 참조)이 존재하므로, 위치의 수는 2N개 정도가 된다. 도 1에서, N=4이므로 각 ROM은 행렬 C의 원소 행 벡터의 모든 가능한 합계를 저장하기 위해서 최대 24개 또는 16개의 위치를 가져야 한다. 제 2 매개변수 b는 입력 레지스터(10) 각각에서의 비트 수다. 이 제 2 매개변수 b는 결과 벡터
Figure 112004049638019-pat00025
를 생성하는 데에 요구되는 클록 주기의 수를 결정한다. 도 1에서, 입력 레지스터는 4비트 폭이므로, 벡터
Figure 112004049638019-pat00026
를 생성하는 데에는 4개의 클록 주기를 필요로 한다.
그러나, 통상적인 DA법을 사용하는 벡터 승산기의 한 가지 단점은, b개의 블록 주기의 각 시퀀스(sequence)에서, 벡터
Figure 112004049638019-pat00027
의 원소가 한 클록 사이클마다 병렬로 생성된다는 점이다. 많은 경우에 있어서, 쉽게 저장할 수 있거나 파이프라인(pipeline) 처리의 다음 단계로 보낼 수 있도록, 각 클록 주기마다 한 번씩 벡터
Figure 112004049638019-pat00028
의 원소를 생성하는 것이 바람직하다. 통상적인 DA법은 b개의 클록 주기 시퀀스 동안에 한 클록 주기마다 벡터
Figure 112004049638019-pat00029
의 모든 원소를 발생하기 때문에, 만일 그들 원소가 통상적인 DA 회로에서 다음 입력 세트가 처리되는 동안 파이프라인 방식으로 한 번에 하나씩 처리된다면, 결과를 저장하기 위해서 누산기 출력(도 1에서는 도시 생략됨)과 연결되는 N개의 추가 레지스터를 필요로 한다. 표준 셀 방법을 사용하는 전형적인 초고밀도 집적 회로(VLSI : very large scale integration)를 구현함에 있어서, 레지스터의 모든 비트는 12개의 게이트만큼 필요할 수도 있으므로, N개의 추가적인 레지스터에 대한 총 비용은 상당하다.
통상적인 DA법보다 개선된 본 발명의 방법을 설명하기 위해서, 상술한 수학식 2로 표현된 행렬 C와 벡터
Figure 112004049638019-pat00030
의 내적을 고려한다.
(수학식 2)
Figure 111999013978626-pat00031
통상적인 DA 회로는, 하기의 수학식 3과 같이, 하나의 ROM을 사용해서 벡터
Figure 112004049638019-pat00053
의 각 원소에 대한 내적을 수행한다.
Figure 111999013978626-pat00033
삭제
주목할 것은, 상기 2j번째 인자의 승산은 인접한 괄호(immediate parenthesis) 내의 결과 합계를 단지 왼쪽으로 j번 이동해서 수행할 수 있다는 점이다. 통상적인 회로에서, 이 과정은 각 클록 주기 후에 누산기(30)에서 이루어진다.
본 발명에 따라서 새롭게 개선된 DA법은, 통상적인 DA법과 동일한 계산을 수행하지만, 그 계산 순서가 다르다. 첫 번째 주기에서, 행렬 C의 행 0과 벡터
Figure 112004049638019-pat00035
의 열 각각의 내적을 생성하고, 이들 내적을 모두 가산해서 벡터
Figure 112004049638019-pat00036
의 원소 Y(0)를 생성한다. 행렬 C의 한 행과 벡터
Figure 112004049638019-pat00037
의 모든 열을 사용하여 매 주기마다 이 과정을 반복함으로써, 벡터
Figure 112004049638019-pat00038
의 각 원소를 생성한다. 이 연산은 하기의 수학식 4와 같다(Sel0과 Sel1은 모든 ROM에 대한 어드레스 입력이다).
Figure 112004049638019-pat00039
삭제
새로운 DA법에 관해서 주목할 점은, 원래 ROMj의 출력을 왼쪽으로 j번 이동시킨 다음 최하위 비트를 0으로 설정하도록 기억 소자(120)의 출력을 가산 회로(130)에 연결함으로써 2j의 승산이 본질적으로 수행될 수 있다는 점이다.
또한, ROM과 같은 정적 기억 소자(static stroage element)를 사용하여 고정 계수로 제한되기보다는, 계수를 변화시키기 위한 동적 방법이 고려될 수도 있다. 한 가지 접근법은 어드레스 라인 선택을 사용해서 추가적인 계수 세트를 선택하도록 ROM 크기를 증가시키는 것이다. 다른 접근법은 RAM(random access memory), 플래쉬 메모리(falsh memory), 또는 EEPPROM(electrically eraseable programable read only memory)의 집적 회로 또는 모듈 등과 같이 동적으로 갱신이 가능한 기억 소자를 사용하는 것이다.
도 2에는 이 새로운 방법을 사용하는 회로에서의 본 발명의 바람직한 실시예가 도시되어 있다. 이것은 그 출력이 N개의 기억 소자(120) 어드레스 입력과 연결되는 N(4) 개의 입력 레지스터(110)로 구성된다. 기억 소자(120)는 ROM, RAM 또는 레지스터, 플래쉬 메모리, EEPROM, PROM(programmable read only memory) 또는 그들 간의 조합과 같은 다른 고상 저장 매체로 구성된다. 기억 소자(120)의 출력은 보다 적은 3개의 2 가수 입력 가산기(two addend input adders) 망으로 형성된 가산 회로(130)와 연결된다. 또 다시 말하지만, 당업자라면 기억 소자의 출력이 내적 결과의 요구 해상도에 따른 임의의 비트 폭이 될 수 있으며, 본 발명의 기술 사상 및 범주를 충족하고 있음을 알 것이다. 통상적인 회로에서, 모든 ROM(20)은 입력 레지스터(10)의 직렬 출력과 연결된 동일한 어드레스 입력 신호를 갖는다. 이 입력 레지스터(10)의 직렬 출력은 각 클록 주기마다 벡터
Figure 112006060878841-pat00040
의 한 열을 모든 ROM(20)에 제공한다. 바람직한 실시예의 개선된 회로에 있어서, 모든 기억 소자(120)는 고유의 어드레스 입력을 갖는다. 각 기억 소자는 벡터
Figure 112006060878841-pat00041
의 한 열을 어드레스 입력으로서 제공받고, 기억 소자(120)에 대한 이들 어드레스 입력은 벡터
Figure 112006060878841-pat00042
전체를 계산하는 동안 줄곧 일정하게 유지된다. 기억 소자 i에 대한 입력은 벡터
Figure 112006060878841-pat00043
의 i번째 열, X(0)i-X(3)i이다. 또한, 저장 뱅크 선택 회로(150)는 클록 회로(140)에 연결됨을 알 수 있다. 각 클록 주기에 대해서, 저장 뱅크 선택 회로는 기억 소자(120)의 어드레스 라인과 연결되는 새로운 Sel0 및 Sel1 출력을 발생한다. 이들 뱅크 선택 신호 Sel0 및 Sel1은 행렬 C의 선택된 행과 벡터
Figure 112006060878841-pat00044
를 승산하는 데 사용된 부분 합계를 변화시키는 데 사용된다.
도 1a에 도시된 바와 같은 통상적인 회로에서는, 각 ROM에는 행렬 C의 한 행에 대해서 기산출된 합계가 저장된다. 도 2a에 도시된 바와 같은 바람직한 실시예의 개선된 회로에서는, 모든 기억 소자(120)의 내용이 동일하다. 각 기억 소자에는 행렬 C의 모든 행에 대해서 기산출된 부분 합계가 저장되어 있다. 이 때문에 개선된 회로용 기억 소자는 통상적인 회로의 ROM 보다 더 많은 저장 위치를 필요로 한다. 첫 번째 산출 주기에서, 각 기억 소자에 대한 어드레스의 상위 비트는 행렬 C의 행 0으로부터의 합계가 사용되도록 설정된다(예를 들어, Sel0=0, Sel1=0). 따라서, 가산망의 출력은 Y(0)이 될 것이다. 다음 클록 주기에서, 행렬 C의 행 1의 기산출된 합계는 기억 소자(120)(예를 들어, Sel0=1, Sel1=0)에서 선택되고, 가산망은 Y(1)을 생성한다. 이 처리(프로세스)는 벡터
Figure 112004049638019-pat00045
의 모든 출력이 생성될 때까지 Sel0 및 Sel1의 변화에 의해서 각 클록 주기마다 상이한 기산출 합계 세트가 선택되는 과정이 반복된다.
각 기억 소자(102)에 어드레스 입력을 하나씩 추가하여, 위치의 수를 두 배로 늘리고, 2개의 행렬-벡터 연산만이 요구되는 경우, 즉, 이산 코사인 변환(discrete cosine transform) 또는 역 이산 코사인 변환(inverse discrete cosine transform) 연산 등을 수행하는 경우에 행렬 계수의 선택을 제공하는 하나의 기억 소자를 구성할 수 있다. 추가적인 실시예는, 행렬 계수용으로 사용되는 값(저장 장치에 저장된 부분 합계)이 정적으로 고정되기 보다는 동적으로 갱신될 수 있도록, 적어도 하나의 RAM 또는 다른 구동가능 메모리 또는 재기록 가능 메모리를 구비하는 기억 소자(120)를 갖는다.
도 2b에는 표준 셀 또는 다른 논리계 회로를 사용하는 경우에 구현되는 기억 소자에 대한 바람직한 실시예가 도시되어 있다. 기억 소자를 구현하기 위해서, 어드레스 신호를 입력으로서 사용해서 진리표(160)를 형성한다. 각 어드레스 입력 세트에 대해서 요구되는 출력 데이터에 의해서 논리 진리표(160)가 완성된다. 표준 셀 또는 유사 구현을 위해, 논리 컴파일러(logic compiler)는 진리표(160)를 논리 방정식 세트로 변환(convert)하고, 각 기억 소자의 출력을 구현하는 데 필요한 최소한의 트랜지스터를 사용하는 가장 간단한 논리적 등가를 형성하도록, 불 논리(Boolean logic)를 사용해서 논리 방정식 세트를 감소시킨다. 대개, 이 논리계 기억 소자를 구현하는 데 필요한 트랜지스터의 수는 통상적인 ROM 기억 소자를 구현하는 데 사용되는 트랜지스터의 수보다 적다. 이 트랜지스터의 감소는 주로 통상적인 어드레스 디코더, 감지 증폭기 및 통상적인 ROM의 출력 버퍼 회로의 제거로 인한 것이다. 논리 게이터를 구비하는 기억 소자는 통상적인 표준 셀 또는 등가 배치 프로그램을 사용해서 구현할 수 있다는 부가적인 장점을 갖는다. 이 장점에 의해서 설계 시간, 평가 개선 및 생산 원가를 감소시킬 수 있다.
특히 도 2b와 같이 3비트 입출력 기억 소자의 경우, 진리표를 구현하기 위한 감소된 논리 회로(170)는 24개의 트랜지스터를 필요로한다. 통상적인 ROM 기억 소자는 8개의 3-입력 NAND 게이트를 더한 메모리 코어만을 위한 24개의 트랜지스터와, 어드레스 복호기 및 3개의 출력 버퍼(적어도 6개의 트랜지스터)를 위한 3개의 인버터(이산 논리 게이트를 사용하는 48개의 트랜지스터)를 필요로 할 것이다. 이들 추가 트랜지스터는 ROM의 메모리 코어의 출력을 검출하기 위한 감지 증폭기를 구현하는 데 필요한 회로를 포함하지 않는다. 따라서, 기억 소자를 구현하는 데 필요한 면적을 상당히 감소시킬 수 있다.
도 3에는 영상 압축 및 압축 해제를 수행하도록 본 발명의 바람직한 실시예를 채용하는 디지털 카메라(200)(레이더 표시 장치, 그래픽 구성 표시 장치 등과 같이 정지 영상, 동영상 또는 다른 영상을 포착하는 장치)가 도시되어 있다. 이들 영상 압축 및 압축 해제 동작은 일반적으로 이산 코사인 변환(DCT) 및 역 이산 코사인 변환(IDCT)을 사용해서 수행되지만, 다른 변환, 예를 들어, 고속 퓨리에 변환(fast Fourier transform) 및 역 고속 퓨리에 변환(inverse fast Fourier transform)도 각각 당업계에 잘 알려져 있으며, 이들의 사용은 본 발명의 기술 사상 및 범주를 여전히 충족한다. DCT 및 IDCT용 행렬 C의 계수는 두 세트로 결합되어 기억 소자(120)에 저장되는 부분 합계를 형성하고, 도 2 및 도 2a에 도시된 바와 같이 DCT/IDCT 신호를 사용해서 선택된다. 디지털 카메라(200)는 화소 어레이로 구성된 이미지 센서(210)에 전자기적 에너지(260)를 집중시키는 렌즈(25)를 구비하고 있다. 이미지 센서(210)의 화소는 전자기적 에너지(260)를 전기적 임펄스(impulses)로 변환하되, 임펄스 자체는 이미지 처리 집적 회로(IC : integrated circuit)(220)로 구체화된 본 발명의 바람직한 실시예에 연결된다. 이미지 센서(210)는 다수의 보다 작은 영역(270)(대개 8×8 또는 16×16 화소)으로 이루어진다. 이미치 처리 IC(220)는 이미지 처리 애플리케이션(여과, 감마 보정, 색 균형 등)이나 기억 소자의 DCT 또는 IDCT 부분 합계를 사용하여 이미지 압축/압축 해제를 위해서 보다 작은 각 영역(270)을 처리한다. 이미지 처리 IC(220)에는 카메라 제어기(240)가 더 연결된다. 카메라 제어기(240)는 일반적으로 마이크로프로세서(microprocessor) 또는 전용 상태 장치(dedicated state machine)이다. 카메라 제어기(240)는 이미지 센서(210)의 보다 작은 영역(270) 어떤 것을 이미치 처리 IC(220)에 의해서 처리할 것인지를 지시한다. 카메라 제어기(240)는 이미지 처리 IC(220)의 결과를 이미지 저장 장치(230)에 저장한다. 이미지 저장 장치(230)는 사용자에 의해서 처리된 이미지의 제거를 위해 LCD(liquid crystal display), 플래쉬 카드, 플로피 디스크, 또는 RS-232, SCSI, USB 또는 IEEE-1318(firewire) 등과 같이 인터페이스를 제공하는 다른 메모리가 될 수 있다.
통상적인 DA 회로에 대한 본 발명의 한 가지 장점은, 집적 회로 면적을 감소시킨다는 것이다. 비록 새로운 회로의 기억 소자(120)가 종래보다 더 많은 위치(location)를 필요로 하지만, 새로운 방법은 2-가수 가산기를 종래보다 적게 필요로 하고 파이프라인 연산용 출력을 저장하기 위한 임의의 출력 레지스터를 필요로 하지 않는다. 또한, 새로운 방법은 통상적인 DA 회로에서 누산기에 사용되는 레지스터를 필요로 하지 않는다. 기억 소자(120)가 논리계 기억 소자로 구현되는 경우, 적절히 구현된 논리계 기억 소자는 종래 회로의 가산기에 사용되는 레지스터에 비해 상대적으로 작은 공간을 점유하기 때문에, 새로운 회로 배치는 실질적으로 통상적인 배치보다 작다. 또한, 새로운 회로의 입력 레지스터(110)는 통상적인 DA 회로에 의해서 요구되는 병렬 입력/직렬 출력 레지스터(10)에 비해, 구현할 게이트가 보다 적게 필요하기 때문에 집적 회로 면적이 더욱 감소된다. 예시적인 비교에 있어서, 통상적인 DA 회로를 사용해서 구현되는 8×8 이산 코사인 변환(DCT)은 9560개의 게이트를 필요로 하는 반면, 본 발명의 새로운 DA법을 사용해서 동일한 8×8 DCT 기능을 구현하는 데에는 7500개 이하의 게이트가 필요하다. 통상적으로 각 게이트는 4개의 트랜지스터로 구성된다.
또한, 새로운 방법의 두 번째 장점은 몇몇 경우에 유용할 수 있다. 예를 들어, 기억 소자의 상위 어드레스 비트를 조절해서 출력항(output terms)의 순서를 매우 쉽게 제어할 수 있다. 도 2 및 도 2a에 도시되어 있고, 본 명세서에서 설명한 바람직한 실시예는 이들 비트가 카운터에 의해서 제어되지만, 그들이 단지 임의의 시퀀스만으로도 쉽게 구동되어, 벡터
Figure 112004049638019-pat00046
의 결과 원소의 바람직한 출력을 생성할 수 있다.

Claims (10)

  1. 행렬과 벡터의 내적 벡터를 산출하는 장치로서, 상기 내적 벡터는 원소 세트를 갖고, 상기 행렬은 행 세트와 열 세트로 배열되는 제 1 계수 세트를 가지며, 상기 벡터는 제 2 계수 세트를 가지되,
    상기 제 2 계수 세트를 저장하며 출력 세트를 갖는 적어도 하나의 입력 레지스터(110)와,
    상기 제 1 계수 세트로부터 도출된 하나의 부분 합계 세트를 저장하고, 상기 적어도 하나의 입력 레지스터(110)의 상기 출력 세트에 연결되는 어드레스 입력 세트와, 상기 어드레스 입력 세트에 의해 선택되는 상기 부분 합계 세트의 하나의 서브 세트를 제공하는 데이터 출력 세트를 갖는 다수의 기억 소자(120)와,
    상기 다수의 기억 소자(120)의 상기 어드레스 입력 세트에 연결되고, 상기 행렬 중 선택된 한 행과 상기 벡터로부터 상기 내적 벡터의 한 원소를 산출하기 위해 상기 행렬 중 한 행을 선택하는 선택 회로(150)와,
    합계(summation) 출력과, 상기 기억 소자(120)의 데이터 출력 세트에 연결되는 다수의 가수(addend) 입력을 갖는 가산 회로(130)를 포함하되,
    상기 다수의 기억 소자(120)의 각 데이터 출력은 하나의 가수 입력에 연결되어 상기 합계 출력의 하나의 가수를 형성하며,
    상기 합계 출력은 상기 내적 벡터의 한 원소를 제공하는
    행렬과 벡터의 내적 벡터 산출 장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 입력 레지스터(110)와 상기 저장 뱅크(bank) 선택 회로(150)에 연결되고, 상기 행렬의 행 개수에 대응하는 클록 주기 세트를 발생하는 클록 회로(140)를 더 포함하며, 상기 가산 회로(130)는 상기 클록 주기 세트의 각 클록 주기에 대해서 상기 벡터와 승산된 상기 행렬의 상기 선택된 행에 대응하는 상기 내적 벡터의 상기 한 원소를 나타내는
    행렬과 벡터의 내적 벡터 산출 장치.
  3. 제 1 항에 있어서,
    집적 회로로서 제작되는
    행렬과 벡터의 내적 벡터 산출 장치.
  4. 제 1 항에 있어서,
    상기 다수의 기억 소자(120)는 다수의 부분 합계 세트를 저장하고,
    상기 다수의 기억 소자(120)에 연결되어 상기 다수의 기억 소자(120)의 상기 데이터 출력에 나타날 부분 합계 세트를 선택하는 선택기를 더 포함하는
    행렬과 벡터의 내적 벡터 산출 장치.
  5. 제 4 항에 있어서,
    상기 선택기는 부분 합계 세트를 선택하여 상기 행렬과 벡터의 내적 벡터 산출 장치가 이산 코사인 변환(discrete cosine transform)을 수행할 수 있게 하는
    행렬과 벡터의 내적 벡터 산출 장치.
  6. 제 4 항에 있어서,
    상기 선택기는 부분 합계 세트를 선택하여 상기 행렬과 벡터의 내적 벡터 산출 장치가 역 이산 코사인 변환(inverse discrete cosine transform)을 수행할 수 있게 하는
    행렬과 벡터의 내적 벡터 산출 장치.
  7. 제 1 항의 상기 행렬과 벡터의 내적 벡터 산출 장치를 포함한 디지털 카메라(200).
  8. 행렬은 행 세트 및 열 세트로 정렬된 제 1 계수 세트를 가지며, 벡터는 제 2 계수 세트를 갖는 상기 행렬과 상기 벡터의 내적 벡터 산출 방법에 있어서,
    상기 벡터의 상기 제 2 계수로부터 레지스터 출력 세트(110)를 생성하는 단계와,
    상기 제 1 계수로부터 도출된 기산출된 부분 합계 세트를 다수의 기억 소자(120)에 저장하는 단계와,
    상기 벡터와 승산될 행렬의 열을 선택하여 상기 내적 벡터의 일부분을 형성하는 단계와,
    상기 다수의 기억 소자(120)로의 상기 레지스터(110) 출력 세트에 근거하여 상기 저장된 기산출된 부분 합계 세트로부터 기산출된 부분 합계 서브세트를 선택하는 단계와,
    상기 가산 회로(130)에서 상기 기산출된 부분 합계 서브세트를 가산하여 상기 내적 벡터의 상기 일부분을 생성하는 단계와,
    상기 행렬의 열을 선택하는 상기 단계, 기산출된 부분 합계 서브세트를 선택하는 상기 단계, 및 상기 행렬의 각 행에 대해 상기 기산출된 부분 합계 서브세트를 가산하는 상기 단계를 반복하는 단계를 포함하는
    행렬과 벡터의 내적 벡터 산출 방법.
  9. 제 8 항에 있어서,
    상기 기산출된 부분 합계의 서브세트를 선택하는 단계는 다수의 기산출된 부분 합계 세트로부터 선택하는 단계를 포함하는
    행렬과 벡터의 내적 벡터 산출 방법.
  10. 제 8 항의 상기 행렬과 벡터의 내적 벡터 산출 방법을 사용하는 디지털 카메라(200).
KR1019990047719A 1998-10-30 1999-10-30 행렬과 벡터의 내적 벡터 산출 장치 및 방법 KR100693654B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/183,196 1998-10-30
US09/183,196 US6477203B1 (en) 1998-10-30 1998-10-30 Signal processing distributed arithmetic architecture

Publications (2)

Publication Number Publication Date
KR20000047576A KR20000047576A (ko) 2000-07-25
KR100693654B1 true KR100693654B1 (ko) 2007-03-14

Family

ID=22671852

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990047719A KR100693654B1 (ko) 1998-10-30 1999-10-30 행렬과 벡터의 내적 벡터 산출 장치 및 방법

Country Status (6)

Country Link
US (1) US6477203B1 (ko)
EP (1) EP0997828A3 (ko)
JP (1) JP2000148730A (ko)
KR (1) KR100693654B1 (ko)
CN (1) CN1135484C (ko)
SG (1) SG73644A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571229B1 (en) 2000-05-31 2003-05-27 Motorola, Inc. Method and apparatus for inerative training of a classification system
JP3338043B2 (ja) * 2000-11-02 2002-10-28 株式会社ソニー・コンピュータエンタテインメント 並列演算装置、エンタテインメント装置、演算処理方法、コンピュータプログラム、半導体デバイス
US6922767B2 (en) * 2002-10-29 2005-07-26 International Business Machines Corporation System for allowing only a partial value prediction field/cache size
US7519439B2 (en) * 2002-11-06 2009-04-14 Texas Instruments Incorporated Efficient digital processor for feedback control applications
US7317329B2 (en) * 2005-10-11 2008-01-08 Aten International Co., Ltd Lookup table circuit
EP1798964A1 (en) * 2005-12-16 2007-06-20 STMicroelectronics (Research & Development) Limited Image sensor coprocessor
CN100452880C (zh) * 2006-06-09 2009-01-14 清华大学 一种用于视频编码的整数离散余弦变换方法
US8631224B2 (en) * 2007-09-13 2014-01-14 Freescale Semiconductor, Inc. SIMD dot product operations with overlapped operands
US8862893B2 (en) * 2008-06-11 2014-10-14 Microsoft Corporation Techniques for performing symmetric cryptography
CN103945226B (zh) * 2014-03-06 2017-08-25 京东方科技集团股份有限公司 一种视频解码的方法及其装置
US10280568B2 (en) * 2017-01-06 2019-05-07 McTech Group, LLC Field-assembly concrete dowel basket
WO2019126030A1 (en) * 2017-12-18 2019-06-27 Mythic, Inc. Systems and methods for mapping matrix calculations to a matrix multiply accelerator
JP6995629B2 (ja) * 2018-01-05 2022-01-14 日本電信電話株式会社 演算回路
US10432436B1 (en) * 2018-12-11 2019-10-01 Globalfoundries Inc. Feed forward equalizer with power-optimized distributed arithmetic architecture and method
CN114096871A (zh) * 2019-07-09 2022-02-25 株式会社日本触媒 距离测量装置和距离测量方法
USD922857S1 (en) 2021-01-25 2021-06-22 Mctech Group, Inc. Dowel basket jacket
USD922858S1 (en) 2021-01-25 2021-06-22 Mctech Group, Inc. Dowel basket

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0122734B1 (ko) * 1994-01-18 1997-11-17 배순훈 역 이산 여현 변환 장치
JPH1083388A (ja) 1996-05-20 1998-03-31 Matsushita Electric Ind Co Ltd 直交変換装置
US5805482A (en) 1995-10-20 1998-09-08 Matsushita Electric Corporation Of America Inverse discrete cosine transform processor having optimum input structure
KR100218278B1 (ko) 1996-01-17 1999-09-01 윤종용 분산 연산법을 이용한 이산코사인 변환 수행장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6391699A (ja) * 1986-10-03 1988-04-22 株式会社リコー 音声認識方式
US4864529A (en) 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
AU592236B2 (en) * 1986-10-16 1990-01-04 Mitsubishi Denki Kabushiki Kaisha Amplitude-adapted vector quantizer
US5117385A (en) 1990-03-16 1992-05-26 International Business Machines Corporation Table lookup multiplier with digital filter
US5257389A (en) * 1990-04-27 1993-10-26 California Institute Of Technology Imer-product array processor for retrieval of stored images represented by bipolar binary (+1,-1) pixels using partial input trinary pixels represented by (+1,-1)
US5226002A (en) 1991-06-28 1993-07-06 Industrial Technology Research Institute Matrix multiplier circuit
US5483475A (en) 1993-09-15 1996-01-09 Industrial Technology Research Institute Fast pipelined 2-D discrete cosine transform architecture
FR2722590B1 (fr) 1994-07-15 1996-09-06 Sgs Thomson Microelectronics Circuit logique de multiplication parallele
JPH08212194A (ja) * 1995-02-06 1996-08-20 Fuji Facom Corp 有限要素法における疎な巨大行列の格納装置、演算装置、格納方法および演算方法
JP3652018B2 (ja) * 1996-07-22 2005-05-25 シャープ株式会社 行列演算装置
US6148034A (en) * 1996-12-05 2000-11-14 Linden Technology Limited Apparatus and method for determining video encoding motion compensation vectors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0122734B1 (ko) * 1994-01-18 1997-11-17 배순훈 역 이산 여현 변환 장치
US5805482A (en) 1995-10-20 1998-09-08 Matsushita Electric Corporation Of America Inverse discrete cosine transform processor having optimum input structure
KR100218278B1 (ko) 1996-01-17 1999-09-01 윤종용 분산 연산법을 이용한 이산코사인 변환 수행장치
JPH1083388A (ja) 1996-05-20 1998-03-31 Matsushita Electric Ind Co Ltd 直交変換装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ISCAS 논문IEEE 1989
참고자료

Also Published As

Publication number Publication date
EP0997828A3 (en) 2002-03-06
CN1135484C (zh) 2004-01-21
SG73644A1 (en) 2002-04-16
EP0997828A2 (en) 2000-05-03
JP2000148730A (ja) 2000-05-30
CN1253340A (zh) 2000-05-17
US6477203B1 (en) 2002-11-05
KR20000047576A (ko) 2000-07-25

Similar Documents

Publication Publication Date Title
KR100693654B1 (ko) 행렬과 벡터의 내적 벡터 산출 장치 및 방법
US7065543B2 (en) Apparatus and method for 2-D discrete transform using distributed arithmetic module
KR100373222B1 (ko) 반도체집적회로
US5331585A (en) Orthogonal transformation processor for compressing information
US20120113133A1 (en) System, device, and method for multiplying multi-dimensional data arrays
US6421695B1 (en) Apparatus for implementing inverse discrete cosine transform in digital image processing system
US7693350B2 (en) Pixel interpolation device and camera adapted to perform pixel interpolation of captured image
US4947446A (en) Method and circuit for filtering signals representative of a picture
DE69433031D1 (de) Bildprozessor
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JPH05224892A (ja) 自乗回路
US7590300B2 (en) Image filtering methods and apparatus
US6052703A (en) Method and apparatus for determining discrete cosine transforms using matrix multiplication and modified booth encoding
US5434808A (en) Highly parallel discrete cosine transform engine
US5838387A (en) Digital video scaling engine
US5359549A (en) Orthogonal transformation processor for compressing information
US5793658A (en) Method and apparatus for viedo compression and decompression using high speed discrete cosine transform
US20210034956A1 (en) Minimum memory digital convolver
JPH1074141A (ja) 信号処理装置
US8666172B2 (en) Providing multiple symmetrical filters
US10802799B2 (en) Semiconductor device having plural operation circuits including multiplier and accumulator
US20200168257A1 (en) Massively parallel, associative multiplier-accumulator
JP4156538B2 (ja) 行列演算装置
JP3860548B2 (ja) 画像処理装置及び画像処理方法
JP2790911B2 (ja) 直交変換演算装置

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120221

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130221

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee