KR100331565B1 - 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치 - Google Patents

매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치 Download PDF

Info

Publication number
KR100331565B1
KR100331565B1 KR1019990058763A KR19990058763A KR100331565B1 KR 100331565 B1 KR100331565 B1 KR 100331565B1 KR 1019990058763 A KR1019990058763 A KR 1019990058763A KR 19990058763 A KR19990058763 A KR 19990058763A KR 100331565 B1 KR100331565 B1 KR 100331565B1
Authority
KR
South Korea
Prior art keywords
address
data
matrix
value
register
Prior art date
Application number
KR1019990058763A
Other languages
English (en)
Other versions
KR20010078508A (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 윤종용
Priority to KR1019990058763A priority Critical patent/KR100331565B1/ko
Priority to US09/638,951 priority patent/US6505288B1/en
Priority to JP2000260459A priority patent/JP3819686B2/ja
Publication of KR20010078508A publication Critical patent/KR20010078508A/ko
Application granted granted Critical
Publication of KR100331565B1 publication Critical patent/KR100331565B1/ko

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Landscapes

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

Abstract

본 발명은 많은 데이터를 효율적으로 처리하기 위하여 매트릭스 표현 방식을 디지털 신호처리 장치의 명령어 수준에 이용할 수 있도록 한 하드웨어 및 매트릭스 연산기능을 갖는 디지털 신호처리 장치에 관한 것이다.
본 발명에 의한 디지털 신호처리 장치에 구비된 매트릭스 연산장치는 순환 링크트 리스트 형태의 매트릭스 데이터를 포함하는 피연산 데이터 및 연산결과 데이터 저장하는 데이터 저장수단; 디지털 신호처리 장치에서 수행되는 명령어의 내용에 따라 매트릭스 연산에 필요한 일련의 제1 피연산 데이터의 주소, 일련의 제2 피연산 데이터의 주소 및 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 주소 발생수단; 및 주소 발생수단에 의해 생성된 주소에 위치한 데이터를 상기 데이터 저장수단에서 인출하여 상기 명령어의 내용에 따라 연산을 수행하는 연산수단을 포함한다.
본 발명에 의하면 디지털 신호처리 알고리즘을 효율적으로 표현할 수 있는 수단을 제공함으로써 디지털 신호처리 장치에서의 프로그램 메모리의 크기를 줄일 수 있다. 이로 인하여 프로그램 메모리를 읽는 순간의 소비전력을 줄일 수 있어 적은 전력으로 오랜 시간동안 전자 제품을 동작하게 할 수 있다.

Description

매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털 신호처리 장치{Matrix operation apparatus and Digital signal processor capable of matrix operation}
본 발명은 디지털 신호처리 장치 등과 같이 많은 데이터를 연산하는 장치나 전자 시스템을 위한 연산장치에 관한 것으로서, 특히 많은 데이터를 처리하기 위하여 매트릭스 표현 방식을 디지털 신호처리 장치의 명령어 수준에 이용하도록 한 연산장치 및 매트릭스 연산기능을 갖는 디지털 신호처리 장치에 관한 것이다.
반도체 산업의 발달로 크기가 매우 작고, 적은 용량의 전지로도 오랫동안 사용할 수 있는 시스템이 등장할 수 있게 되었다. 특히, 보청기와 같은 부착형 의료기기나 개인용 무선통신시스템과 같은 기술분야에서는 소비전력과 시스템의 크기가 매우 큰 관심의 대상이다.
한편, 정보화 시대에 발 맞추어 많은 데이터 양을 처리하는 디지털 신호 처리 장치는 전자산업 분야에서 큰 발전을 이루어 왔다. 하지만 이러한 발전은 성능개선이라는 관점에서 접근하여 이들 시스템의 소비전력이 급격히 증가해 가는 추세이다.
일반적으로, 디지털 신호 처리 장치에서는 낱개의 데이터 단위로 처리한다. 예를 들면, 수학식 1과 같은 2×2 매트릭스의 곱셈을 하게 될 경우, 일반 마이크로 프로세서는 이를 하나하나 처리하게 된다.
수학식 1을 일반 마이크로 프로세서에서 수행되는 프로그램으로 표현하면 다음과 같다.
CLR ACC
MULT R5 R9
ADD ACC R5
MULT R6 R10
ADD ACC R6
MV R1 ACC
CLR ACC
MULT R5 R11
ADD ACC R5
MULT R6 R12
ADD ACC R6
MV R2 ACC
CLR ACC
MULT R7 R9
ADD ACC R5
MULT R8 R10
ADD ACC R6
MV R3 ACC
CLR ACC
MULT R7 R11
ADD ACC R5
MULT R8 R12
ADD ACC R6
MV R4 ACC
상기한 프로그램의 크기를 줄이기 위하여 많은 디지털 신호처리기에서는 곱셈과 덧셈을 하나의 클럭주기에 수행하는 'MAC' 기능을 추가하여 사용하고 있다. 'MAC' 기능이 추가된 디지털 신호처리기에서 수행되는 프로그램은 개략적으로 다음과 같이 나타낼 수 있다. 'MAC' 기능이 추가됨으로써 그렇지 않은 경우보다 프로그램 수행 시간과 프로그램의 사이즈를 줄일 수 있다.
CLR ACC
MAC R5 R9
MAC R6 R10
ADD ACC temp
MV R1 ACC
CLR ACC
MAC R5 R11
MAC R6 R12
ADD ACC temp
MV R2 ACC
CLR ACC
MAC R7 R9
MAC R8 R10
ADD ACC temp
MV R3 ACC
CLR ACC
MAC R7 R11
MAC R8 R12
ADD ACC temp
MV R4 ACC
위의 프로그램 예를 살펴보면, 단지 주소만이 증가하여 'MAC' 기능이 주기적으로 반복됨을 볼 수 있다. 이를 효과적으로 처리하기 위하여 기존 디지털 신호처리 장치에서 반복문(RPT)과 자동주소증가(R5++)를 채용하고 있다. 이러한 기능들은 매트릭스 연산과 같은 다수의 반복문들이 요구되는 프로그램에 효율적으로 이용될 수 있다. 반복문과 자동주소증가 기능이 제공되는 프로그램은 다음과 같이 작성될 수 있다.
CLR ACC
RPT 2
MAC R5++ R9++
ADD ACC temp
MV R1 ACC
CLR ACC
RPT 2
MAC R5++ R11++
ADD ACC temp
MV R2 ACC
CLR ACC
RPT 2
MAC R7++ R9++
ADD ACC temp
MV R3 ACC
CLR ACC
RPT 2
MAC R7++ R11++
ADD ACC temp
MV R4 ACC
상기한 바와 같은 개선에도 불구하고, 기존 디지털 신호처리 장치에서 수행되는 프로그램에는 여전히 상당히 많은 프로그램 코드가 요구된다.
그러나, 매트릭스를 하나의 변수로 표현하는 경우에는 수학식 1의 계산을 다음과 같은 코드만으로 수행할 수 있다.
SETD 2 2 2
MULT X1 X2 X3
어떠한 알고리즘이나 기능을 많은 명령어로 표현하게 되면, 이에 따라 큰 용량의 메모리가 필요하게 되며, 결국 디지털 신호 처리 장치와 같은 프로세서에서는 많은 전력을 소비하게 된다. 이는 프로세서에서 소비되는 전력의 많은 부분이 메모리에서 명령어를 읽는 데 소비되기 때문이다.
또한, 명령어 메모리의 용량은 제한되어 있으면서 많은 명령어들로 표현되는 기능을 수행하여야 하는 내장형 프로세서를 사용하는 시스템은 한 칩 안에 필요한 명령어들을 모두 내장하지 못하는 경우도 발생한다. 이러한 경우, 시스템은 외부의 메모리를 확장하여 사용하여야 하며, 이로 인해 보다 많은 전력이 소비된다. 따라서, 어떠한 기능을 많은 명령어로 표현하는 것은 휴대용과 같은 전자 시스템에서는 제품의 사용시간을 단축시키며, 여러 칩을 이용하도록 하여 제품의 크기를 크게 하고 제품의 가격도 상승시킨다.
한편, 시스토릭 어레이 연산(Systolic Array Operation)과 같은 벡터연산을 수행하는 시스템에서는 다수의 연산들을 한꺼번에 처리할 수 있다. 이러한 시스템은 칩 내부에 곱셈기와 덧셈기와 같은 연산장치를 여러 개 두어 한꺼번에 데이터를 처리한다. 이러한 방식은 시스템의 성능을 향상시킬 수는 있지만, 전력면과 칩의 크기를 고려한다면 좋은 해결책이 되지 못한다. 또한, 디지털 신호 처리 알고리즘 중 이러한 벡터연산이 효율적으로 이용되는 경우는 일부에 불과하다.
본 발명은 최근의 전자제품의 휴대화에 필수적인 요소로 적은 소비전력으로 긴 동작시간을 보장할 수 있는 기술에 관한 것이다. 디지털 신호처리 장치와 같은 프로세서에서의 많은 전력(50-80%)은 프로그램 메모리에서 명령어를 읽을 때 쓰이게 된다. 메모리의 소비전력은 메모리의 크기와 읽고 쓰는 횟수에 비례하기 때문에, 소비전력을 줄이기 위해서는 메모리에서 데이터를 읽는 횟수와 메모리의 크기를 줄이는 것이 필요하다.
많은 신호처리 알고리즘은 매트릭스 표현방식을 이용하여 간단하게 표현될 수 있으므로, 본 발명에서는 데이터의 표현 방식에 매트릭스 표현방식을 채택하여 프로그램 메모리의 크기를 줄이는 동시에 메모리에서 명령어를 읽어오는 횟수를 줄일 수 있는 디지털 신호처리 장치에서의 매트릭스 연산장치 및 매트릭스 연산 기능을 갖는 디지털 신호처리 장치를 목적으로 한다.
도 1은 본 발명에 의한 디지털 신호처리 장치의 전체 블록도이다.
도 2는 매트릭스 데이터 표현 방식을 예시한 것이다.
도 3은 순환 링크트 리스트의 기본 구성요소를 도시한 것이다.
도 4는 순환 링크트 리스트를 개념적으로 도시한 것이다.
도 5는 실제 메모리 상에 구현된 순환 링크트 리스트를 예시한 것이다.
도 6은 본 발명에 의한 매트릭스 연산 장치의 블록도이다.
도 7은 매트릭스 주소 저장수단의 블록도이다.
도 8은 A 주소생성기의 블록도이다.
도 9는 B 주소생성기의 블록도이다.
도 10은 C 주소생성기의 블록도이다.
도 11은 본 발명에 의한 디지털 신호처리 장치에서 사용되는 매트릭스 연산을 위한 명령어들을 예시한 것이다.
도 12a 내지 도 12k는 각각 매트릭스 연산을 위한 명령어의 포맷을 예시한 것이다.
도 13a 내지 도 13c는 매트릭스 곱셈의 예시한 것이다.
도 14는 도 13a에 예시된 매트릭스 곱셈의 타이밍도이다.
도 15는 매트릭스 곱셈의 수행절차를 도시한 순서도이다.
도 16은 일반 디지털 신호처리 장치와 본 발명에 의한 디지털 신호처리 장치에 적용된 예시적인 프로그램의 크기를 비교한 것이다.
도 17은 본 발명에 의한 디지털 신호처리 장치의 테스트용 보드를 도시한 것이다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 디지털 신호처리 장치에 구비되어, 매트릭스 연산을 수행하는 장치는 순환 링크트 리스트 형태의 매트릭스 데이터를 포함하는 피연산 데이터 및 연산결과 데이터 저장하는 데이터 저장수단; 상기 디지털 신호처리 장치에서 수행되는 명령어의 내용에 따라 매트릭스 연산에 필요한 일련의 제1 피연산 데이터의 주소, 일련의 제2 피연산 데이터의 주소 및 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 주소 발생수단; 및 상기 주소 발생수단에 의해 생성된 주소에 위치한 데이터를 상기 데이터 저장수단에서 인출하여 상기 명령어의 내용에 따라 연산을 수행하는 연산수단을 포함한다.
상기한 디지털 신호처리 장치에서의 매트릭스 연산장치에서 상기 주소 발생수단은 상기 순환 링크트 리스트 형태의 매트릭스 데이터의 주소를 저장하고, 상기 명령어의 내용에 따라 제1 매트릭스 데이터 주소, 제2 매트릭스 데이터 주소 및 연산결과 매트릭스 데이터 주소를 출력하는 매트릭스 주소 저장수단; 상기 매트릭스 주소 저장수단으로부터 제1 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 제1 피연산 데이터의 주소를 순차적으로 생성하는 A 주소생성기; 상기 매트릭스 주소 저장수단으로부터 제2 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 제2 피연산 데이터의 주소를 순차적으로 생성하는 B 주소생성기; 상기 매트릭스 주소 저장수단으로부터 연산결과 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 C 주소생성기를 구비한다.
상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 매트릭스 연산 기능을 갖는 디지털 신호처리 장치는 신호처리 프로그램을 저장하는 프로그램 메모리; 상기 프로그램 메모리에서 패치한 명령어를 일시적으로 저장하는 명령어 레지스터; 상기 명령어 레지스터에 저장된 명령어를 해석하여 제어신호를 생성하는 명령어 디코더; 순환 링크트 리스트 형태의 매트릭스 데이터를 포함하는 피연산 데이터 및 연산결과 데이터 저장하는 데이터 저장수단; 상기 제어신호에 따라 매트릭스 연산에 필요한 일련의 제1 피연산 데이터의 주소, 일련의 제2 피연산 데이터의 주소 및 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 주소 발생수단; 및 상기 주소 발생수단에 의해 생성된 주소에 위치한 데이터를 상기 데이터 저장수단에서 인출하여 상기 제어신호에 따라 연산을 수행하는 연산수단을 포함한다.
상기한 디지털 신호처리 장치에서 상기 명령어 디코더는 상기 프로그램 메모리에 저장된 명령어를 패치하여 상기 명령어 레지스터에 일시 저장하는 단계; 상기 주소 발생수단에서 제1 피연산 데이터의 주소 및 제2 피연산 데이터의 주소를 생성하는 단계; 제1 피연산 데이터 및 제2 피연산 데이터를 상기 데이터 저장수단에서 인출하여 상기 연산수단으로 옮기는 단계; 상기 연산수단에서 연산을 수행하고, 상기 주소 발생수단에서 연산결과 데이터의 저장주소를 생성하는 단계; 및 상기 연산수단에서 출력된 연산결과 데이터를 상기 데이터 저장수단에 저장하는 단계의 파이프라인 구조에 대응하는 제어신호를 생성하는 것을 특징으로 한다.
이하 첨부된 도면에 의해 본 발명을 상세히 설명한다.
도 1은 본 발명이 적용된 디지털 신호 처리 장치의 블록도이다.
신호처리 알고리즘은 프로그램 메모리(PROGRAM MEMORY)(10)에 저장되어 있으며, 프로그램 메모리(10)에서 읽혀진 명령어는 명령어 레지스터(INSTRUCTION REGISTER:IR)(11)로 저장된다. 명령어 레지스터(11)에 저장된 명령어는 명령어 디코더(INSTRUCTION DECODER)(12)에 의해 해석되어 각 기능 블럭에 필요한 제어 신호가 생성된다. 데이터 메모리(DATA MEMORY)(13)는 두 개의 출력과 하나의 입력을 가지는 레지스터 화일 형태로 이루어짐이 바람직하다. 데이터 메모리(13)에서 출력될 두 개의 데이터를 지정하기 위한 A 주소생성기(14a) 및 B 주소생성기(14b)와 LOG2(15a), SHIFT(15b), ALU(Arithmetic Logic Unit)(15c), MULT(15d)와 같은 연산 블럭에서 계산된 결과를 저장하는 곳을 지정하는 C 주소생성기(14c)가 구비된다. 외부와의 통신을 위해서는 직렬 인터페이스(SERIAL I/F)(17), 병렬 인터페이스(PARALLEL I/F)(18), 메모리 인터페이스(MEMORY I/F)(19)가 구비되어 있다. 내부 프로세서에 클럭을 공급하는 클럭 발생기(CLOCK GENERATOR)(20)가 있으며, 인터럽트와 프로세서 상태를 나타내는 레지스터들(21a, 21b), 일정한 시간 주기로 인터럽트를 발생하기 위한 타이머(TIMER)(21c) 등이 구비된다.
그리고, 매트릭스 주소 저장수단(22)은 여러 매트릭스의 주소들을 관리, 저장하는 부분이다.
디지털 신호 처리 알고리즘은 매트릭스 형식을 이용하면 그 알고리즘을 보다 효율적으로 표현할 수 있는 경우가 많다. 그러므로, 매트릭스 표현과 연산을 명령어 수준에서 표현하고 연산할 수 있도록 함으로써, 디지털 신호 처리 알고리즘을 디지털 신호 처리 장치에서 적은 메모리를 이용하여 표현할 수 있다.
도 2에 도시된 매트릭스 데이터 표현 방식에 의하면, 여러 개의 데이터에 하나의 벡터 변수를 설정할 수 있어서, 벡터 변수를 지닌 하나의 명령어로 스칼라 변수를 지닌 여러 개의 명령어를 대신할 수 있다. 도 2에 도시된 3×3 매트릭스 곱셈을 기존의 디지털 신호 장치의 명령어로 표현한다면, 많은 수의 명령어들이 필요하게 될 것이다.
도 3은 순환 링크트 리스트(Circular Linked List)의 기본 구성요소를 도시한 것으로서, 'PREV'는 앞의 데이터를 지정하며 'NEXT'는 다음 데이터를 지정한다. 그리고, 가운데의 'DATA'에 실제 데이터 값이 저장된다. 도 3의 구성요소를 필요한 데이터의 갯수 만큼 연결하면 도 4에 도시된 바와 같이 하나의 리스트가 된다.
도 4는 'a', 'b', 'c', 'd', 'e'의 데이터를 가지는 순환 링크트 리스트를 표현한 것이다. 여기서, POS는 현재 이용되고 있는 데이터를 가리키는 것으로서, 실제로는 그 데이터가 저장되어 있는 메모리 주소가 된다.
본 발명에서는 이러한 기본구조를 가진 순환 링크트 리스트를 실제 하드웨어 메모리 상에 도 5와 같이 구현한다. C와 같은 상위 프로그램 언어에서는 포인터(Pointer) 등을 이용하여 순환 링크트 리스트를 구현할 수 있으나, 상위 프로그램 언어로 구현된 순환 링크트 리스트는 하드웨어 의존적인 명령어로 컴파일링되는 경우 하드웨어 자원에 적합하도록 표현되지 않아 하드웨어 부담을 증가시키게 된다. 이것은 하드웨어 설계 측면에서 바람직하지 않으므로, 본 발명에서는 연속된 메모리의 구조를 이용하여 이를 구현한다.
도 5에서 'X'는 리스트의 시작을 나타내는 메모리 주소를 나타내며, 'POS'는'X'로부터의 상대적인 거리에 의해 현재 처리되고 있는 데이터의 위치를 나타낸다. 그러므로, 도 4의 'POS' 주소(현재 데이터의 주소)를 얻기 위해서는, 도 5의 'X'에 'POS'를 더하면 된다. 'POS'에 현재 데이터의 절대적인 주소를 기록하는 것이 아니라, 'X'로부터의 상대적인 거리를 기록함으로써 'POS' 레지스터 크기를 줄일 수 있다. 'MAX_POS'는 리스트에 저장되어 있는 데이터의 갯수를 표현한다. 따라서, 리스트의 마지막 데이터의 주소는 'X'에 'MAX_POS'를 더하면 된다.
이러한 'X', 'POS', 'MAX_POS'를 여러 개 저장하여 매트릭스 연산에 이용한다. 이러한 값들을 저장하고 있는 곳은 도 1의 매트릭스 주소 저장수단(22)이고, 이에 대한 상세한 구성은 도 7에 도시된다.
도 6은 연산부, 레지스터 파일(13) 및 레지스터 파일의 주소생성부의 관계를 보다 명확히 보여주는 도면이다. 도 6에서 연산부는 곱셈기(15d) 및 ALU(Arithmetic Logic Unit)(15c)를 포함하여 구성되고, 주소생성부는 매트릭스 주소 저장수단(22), A 주소생성기(14a), B 주소생성기(14b), C 주소생성기(14c)를 포함하여 구성된다.
A 주소생성기(14a) 및 B 주소생성기(14b)는 연산부로 입력되는 데이터들의 주소를 생성한다. 이렇게 생성된 주소에 대응하는 데이터가 레지스터 파일(13)에서 출력되어 BUSA, BUSB를 통하여 연산부로 전송된다. 연산부는 명령어에 대응한 명령을 수행한 이후에 BUSC를 통하여 연산된 결과를 보내준다. 그러면, 레지스터 파일(13)에서 C 주소생성기(14c)가 생성한 주소에 대응하는 위치에 연산된 결과가 저장된다. 이러한 일련의 작업이 매트릭스 연산 시에는 매트릭스의 크기에 대응하는 필요한 수 만큼 반복하여 수행된다.
도 7은 매트릭스 주소 저장수단(22)을 좀 더 구체적으로 표현한 도면이다. BUSC를 통해 전달된 값은 C 주소생성기(14c)에 의해 생성된 주소의 레지스터로 입력된다. 디코더(73)는 C 주소생성기(14c)에 의해 생성된 주소를 해석하여 BUSC를 통해 전달된 값이 저장되는 레지스터를 결정한다. 본 발명의 바람직한 일실시예에서 매트릭스 주소 저장수단(22)은 16개의 매트릭스 주소들을 지원하므로, X 레지스터(70), POS 레지스터(71), MAX_POS 레지스터(72) 등 세 가지 레지스터를 각각 16개씩 구비한다. X 레지스터(70)는 16비트로 구성되어 최대 16비트의 주소를 지원하고, POS 레지스터(71) 및 MAX_POS 레지스터(72)는 각각 8비트로 구성되어 최대 256개의 데이터를 지닌 리스트를 구현할 수 있도록 한다. 또한, 각 레지스터의 값은 선택되어 읽혀지거나 쓰여질 수 있다.
매트릭스 주소 저장수단(22)에서 출력되는 값은 명령어 레지스터(IR)의 값에 의하여 결정된다. 각 멀티플렉서(74a, 74b, 74c)는 명령어 레지스터(IR)에 저장된 값에 의해 16개의 매트릭스 주소들 중 하나를 선택하고, 각 주소생성기(14a, 14b, 14c)는 선택된 매트릭스 주소에 의해 최종의 주소를 생성한다.
도 8은 A 주소생성기(14a)의 블록도이다. A 주소생성기(14a)는 BUSA로 출력하는 데이터를 레지스터 파일(데이터 메모리)(13)에서 선택하기 위한 주소를 생성하는 블록이다. 명령어 레지스터(11)에 저장된 명령어가 매트릭스 연산을 위한 명령어가 아닌 경우 A 주소생성기(14a)는 데이터의 상위 주소를 저장하는 BANK_A 레지스터에 저장된 값과 IR 레지스터의 상위 8 비트 값을 연결한 16 비트 주소를 생성하여 출력한다. 반면에, 명령어 레지스터(11)에 저장된 명령어가 매트릭스 연산을 위한 명령어인 경우, A 주소생성기(14a)는 처음에는 'X'+'POS'를 더한 주소를 생성하며, 계속적인 연산 동작시에는 상기 주소에 1을 증가한('ADDRESS'+1) 주소를 생성하되 그 값이 'X'+'MAX_POS'보다 크게 되면 'X' 주소를 선택하여 출력한다. 그리고, 매트릭스 곱셈의 경우 하나의 줄이 계속 반복하여 선택될 필요가 있으므로, A 주소생성기(14a)는 ROW 주소를 기억하는 레지스터(80)를 구비한다. 그리고, 매트릭스 연산 시에 필요한 입력인 I,J,K 값(여기서, I는 결과값의 행, J는 결과값의 열, K는 곱셈 연산의 인덱스를 나타낸다)을 하나씩 감소해 가며 수행하게 되는데, A 주소생성기(14a)는 'J', 'K' 입력만이 이용된다.
도 9는 B 주소생성기(14b)의 블록도인데, B 주소생성기(14b)는 BUSB로 출력하는 데이터를 레지스터 파일(데이터 메모리)(13)에서 선택하기 위한 주소를 생성하는 블록이다. B 주소생성기(14b)는 A 주소생성기(14a)와 거의 동일하나, 'ROW' 주소를 생성할 필요가 없으므로 이를 위한 레지스터가 구비될 필요가 없는 것만이 다르다.
도 10은 C 주소생성기(14c)의 블록도인데, C 주소생성기(14c)는 BUSC로 저장되는 데이터의 저장위치를 레지스터 파일(데이터 메모리)(13)에서 선택하기 위한 주소를 생성하는 블록이다. C 주소생성기(14c)에서는 I,J,K의 모든 값이 이용되며, 매트릭스의 크기들을 설정하는 NUM_ROWS, NUM_COLS 레지스터들의 값이 이용된다. 이 레지스터들의 값은 매트릭스의 행과 열을 서로 바꾸어 저장하는 명령어(TRANSA)를 수행할 때 필요하다. 주소의 증가가 행의 개수(NUM_COLS) 만큼씩 증가할 필요가 있기 때문이다. 이렇게 증가할 때, 최대 주소값(X+MAX_POS)보다 크게 되면 ADDRESS+NUM_ROWS-POS를 출력하게 된다. 그리고, C 주소생성기(14c)는 도 15에 도시된 파이프 라인 상태들 중에서 EX 상태에서 주소를 발생하는 것이므로, 최종 출력은 A 주소생성기(14a) 및 B 주소생성기(14b)에 의해 발생되는 주소에 비하여 두 클럭 주기 후에 발생하도록 한다. 이는 도면에서 생략하였다.
도 11은 도 1에 도시된 본 발명의 의한 디지털 신호 처리 장치의 일실시예에서의 매트릭스 연산을 위해 제공하는 명령어들을 예시한 것이다. 이 명령어들은 모든 형태의 매트릭스 연산과 매트릭스와 보통의 데이터 값 사이의 데이터 전달을 지원한다.
매트릭스 연산 명령어 형식은 도 12a 내지 도 12k에 예시되어 있다.도 12에서 X1, X2, X3는 간접주소(indirect addressing)의 값이다. 여기서는 4bit로 이루어져 있으므로 0부터 15까지의 값을 가지면 실제 주소를 가지고 있는 X 어드레스 부분의 레지스터 번호이다. X 어드레스 레지스터에는 실제 주소가 저장되어 있다.도 12a에서 ADDA 0 1 2 (=ADDA X0 X1 X2), X[0]=100, X[1]=200, X[2]=300 이라고 하면, 레지스터 파일의 200 번지에서 시작하는 매트릭스의 값과 300 번지에서 시작하는 값을 더하여 100 번지에 저장하게 된다.도 12d 및 도 12e에서 displacement는 메모리의 주소값을 증가하는 데, 그 증가분을 말한다. 즉, displacement 값이 10 이면 메모리의 값은 start_address부터 10씩 증가하게 된다. 예를 들면, EXT 100 LOADA X1 10 (start_address=100, displacement=10) 이라고 하면, 메모리주소는 100, 110, 120, 130, ...으로 증가하게 되고 상기 메모리 주소에 기록되어 있는 값을 메모리에서 읽어와서 X1이 가리키는 내부 레지스터화일에 저장(로드)하게된다.도 12h 및 또 12i에서 immediate data는 실제값을 말한다. X1 에 100 이라는 값을 저장하려고 한다면, ISMV X1 100이라고 해야 하며 100이 바로 Immediate data인 실제값이 된다.
도 12d, 도 12e,도 12h, 도 12j에서 EXT가 명령어 맨 앞에 있으면, 이 명령어는 다음 명령어와 연결하여 하나의 명령어가 된다는 의미를 가진다. 즉, LOADA, STOREA 명령어는 2 단어 명령어가 된다. 하지만, ISMV와 SETD와 같은 명령어는 경우에 따라서 두 단어 명령어 또는 한 단어 명령어로 처리된다.
도 12h와 도 12i에서 ISMV 명령어는 실제값(immediate data)을 특정한 레지스터에 저장하는 작업을 수행하는 데, 필요한 실제값이 8비트로 표현될 수 있으면 1 단어 명령어를 사용하고, 그 이상의 비트 공간이 필요하면 두 단어 명령어를 사용하게 된다.
SETD 명령어는 매트릭스 연산에 필요한 크기를 설정하게 된다. 매트릭스 곱셈의 경우에는 I,J,K 의 3가지 값이 필요하여 두 단어 명령어로 표현한다. 하지만 덧셈에는 I,J값만이 필요하므로 한 단어 명령어로 표현한다.
도 13a에 예시된 매트릭스 간의 곱셈(MULTA)의 동작을 살펴보기로 한다. 2×2 매트릭스 곱셈인 경우를 도 1의 데이터 메모리(13)에 저장된 상태는 도 13b에 도시된 바와 같다. 또한, 도 1의 매트릭스 주소 저장수단(22)에 저장된 매트릭스 데이터 X1, X2 및 X3의 주소는 도 13c에 도시된 바와 같다.
도 13a에 예시된 매트릭스간 곱셈의 동작 상태를 시간에 따라 살펴보면, 도 14와 같이 표현될 수 있다. 본 발명에 의한 디지털 신호처리 장치의 일실시예는 파이프라인 형식으로 구현되며, 도 14에 도시된 매트릭스간 곱셈의 동작은 9번의 클럭 주기 동안에 수행된다. 도 14에서 I는 이전 명령어를 표시하며, I'은 MULTA 명령어 다음의 명령어를 표시한다. WE는 연산결과를 데이터 메모리(13)에 저장하도록 하는 제어신호를 표현한 것이다. 각 주소생성기는 매트릭스 연산에 맞도록 순차적으로 주소를 생성하게 된다.도 14를 구체적으로 설명하면 다음과 같다. 먼저 A 주소 생성기는 ROW 주소를 기억하는 레지스터(80)을 구비하여 매트릭스 곱셈의 경우 하나의 줄이 반복하여 선택되도록 하므로 A 주소 생성기는 X2는 10, MAX_POS는 3으로부터 10, 11, 10, 11, 12, 13, 12, 13의 형태로 A 주소를 생성하고, B 주소 생성기는 이러한 기능이 없으므로, X3는 14, MAX_POS는 3으로부터 14, 15, 16, 17, 14, 15, 16, 17의 형태로 B 주소를 생성한다.첫 번째 클록에서 A 주소 생성기 및 B 주소 생성기는 각각 A 주소 10과 B 주소 14를 생성하고, 두 번째 클록에서 각각 A 주소에 저장되어 있는 MULTA 값 1과 각각 B 주소에 저장되어 있는 MULTB 값 5를 가져오고, 세 번째 클록에서 이들을 곱한 MULTC 값(1 x 5 = 5)을 산출하고, 네 번째 클록에서 상기 MULTC 값 5와 ACC 값 0을 더한 값 5를 ACC에 저장한다.상기한 과정은 파이프라인 방식으로 수행되므로 A 주소 생성기 및 B 주소 생성기는 두 번째 클록에서 각각 다음번의 연산에 필요한 A 주소 11과 B 주소 15를 생성하고, 세번째 클록에서 각각 A 주소에 저장되어 있는 MULTA 값 2와 B 주소에 저장되어 있는 MULTB 값 6을 가져오고, 네 번째 클록에서 이들을 곱한 MULTC 값(2 x 6 = 12)을 산출하고, 다섯 번째 클록에서 상기 MULTC 값 12와 바로 전의 단계에서 저장된 ACC 값 5를 더한 값 17을 ACC에 저장한다.C 주소 생성기는 첫 번째 연산결과를 저장할 주소 18을 생성하고, 상기한 연산의 결과 산출된 값 17은 C 주소 생성기에 의해 생성된 주소 18번지에 저장되게 된다.이후의 과정도 상기와 동일한 방식으로 진행되며, 이러한 연산을 수행한 결과 18번지에는 데이터 17이, 19번지에는 데이터 23이, 20번지에는 데이터 39가, 21번지에는 데이터 53이 저장되어 행렬 X1은의 형태로 저장되게 된다.
도 15는 본 발명에 의한 디지털 신호처리 장치의 일실시예의 파이프라인 구조를 순서도로 나타낸 것이다.
우선, 프로그램 메모리(10) IMEM에 저장된 명령어를 명령어 레지스터(11) IR에 저장한다(IF)(1500 단계). 그리고, 위에서 설명한 방법에 의하여 데이터 메모리(13)의 출력 주소들을 계산한다(AG)(1501 단계). f(IR) 및 g(IR)은 각각 A 주소생성기(14a) 및 B 주소생성기(14b)에 의해 생성된 주소를 나타낸다. 이 값들은, 각각 'X' + 'POS' 에 의해 생성된 주소값이 될 것이다. 그리고, 데이터 메모리(13)에서 필요한 연산 블록, 즉 곱셈기(15d)로 생성된 주소에 위치한 데이터를 옮겨 놓는다(OR)(1502 단계). 도 15에서 REGF는 데이터 메모리(13)를 나타낸다. 이후, 두 데이터를 곱하고, 동시에 데이터 메모리(13)에 저장되는 주소가 계산된다(EX)(1503 단계). h(IR)은 C 주소생성기(14c)에 의해 생성된 주소를 나타낸다. 그런데, 최초 곱셈 연산결과 데이터는 저장되지 않는다(1504 단계).
새로이 데이터 메모리의 출력 주소들이 계산하여 곱셈 연산을 위한 데이터를 곱셈기(15d)에 옮겨 놓고(1511, 1512 단계), 곱셈과 동시에 1503 단계에서 이루어진 곱셈의 결과(MULT_C)를 누적값(ACC)에 더하게 된다(1513 단계). 그리고, 하나의 행의 연산이 완전히 끝나면, 데이터 메모리(13)의 입력 주소에 누적값(ACC)를 저장하게 된다(WB)(1514 단계). 이러한 연산이 매트릭스 연산이 완전히 수행될 때까지 반복된다.
곱셈의 연산이 완전히 끝난 후에는, 마지막으로 계산된 곱셈의 결과(MULT_C)를 누적값(ACC)에 더하여 데이터 메모리(13)에 저장하게 된다(1523, 1524 단계). 이러한 일련의 연산은 파이프라인 형식으로 수행된다.
도 16은 일반 디지털 신호처리 장치와 본 발명에 의한 디지털 신호처리 장치에 적용된 예시적인 프로그램의 크기를 비교한 것이다. 일반 디지털 신호처리 장치(G-DSP)보다 본 발명에 의한 디지털 신호처리 장치(LP-DSP)에서 수행되는 프로그램이 보다 적은 크기를 갖는 것을 알 수 있다. 그리고, 매트릭스 표현이 효과적으로 사용되는 알고리즘을 수행하는 경우에 본 발명은 보다 효과적으로 사용될 수 있다.
본 발명은 또한 저소비전력이 필수적이며 시스템의 크기도 매우 적은 귓속형 디지털 보청기에 적용하여 이전의 신호처리 장치에서 명령어를 보다 효율적으로 프로그램할 수 있었다. 본 발명의 성능을 검증하기 위하여 테스트용 PCB 보드를 제작하고 FPGA를 이용한 설계를 완료하였다. 도 17은 이와 같은 방법으로 설계한 데이트용 보드를 도시한 것이다. 도 17에 도시된 보드를 여러 가지 응용 프로그램을 실험함으로써, 본 발명에 의한 디지털 신호처리 장치는 적은 용량의 프로그램 메모리를 구비하더라도 주어진 기능을 완벽하게 수행할 수 있다는 것을 확인할 수 있었다.
본 발명에 의하면 디지털 신호처리 알고리즘을 효율적으로 표현할 수 있는 수단을 제공함으로써 디지털 신호처리 장치에서의 프로그램 메모리의 크기를 줄일 수 있다. 이로 인하여 프로그램 메모리를 읽는 순간의 소비전력을 줄일 수 있어 적은 전력으로 오랜 시간동안 전자 제품을 동작하게 할 수 있다.

Claims (15)

  1. 디지털 신호처리 장치에 구비되어, 매트릭스 연산을 수행하는 장치에 있어서,
    순환 링크트 리스트 형태의 매트릭스 데이터를 포함하는 제1 피연산 데이터, 제2 피연산 데이터 및 연산결과 데이터를 저장하는 데이터 저장수단;
    상기 디지털 신호처리 장치에서 수행되는 명령어의 내용에 따라 제1 매트릭스 데이터 주소, 제2 매트릭스 데이터 주소 및 연산결과 매트릭스 데이터 주소로부터 각각 매트릭스 연산에 필요한 일련의 상기 제1 피연산 데이터의 주소, 일련의 상기 제2 피연산 데이터의 주소 및 일련의 상기 연산결과 데이터의 저장주소를 순차적으로 생성하는 주소 발생수단; 및
    상기 주소 발생수단에 의해 생성된 상기 제1 피연산 데이터의 주소에 위치한 상기 제1 피연산 데이터 및 상기 제2 피연산 데이터의 주소에 위치한 상기 제2 피연산 데이터를 상기 데이터 저장수단에서 인출하여 상기 명령어의 내용에 따라 연산을 수행하고, 연산결과 발생한 상기 연산결과 데이터를 상기 연산 결과 데이터의 저장주소에 저장하는 연산수단을 포함함을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  2. 제1항에 있어서, 상기 주소 발생수단은
    상기 순환 링크트 리스트 형태의 매트릭스 데이터의 주소를 저장하고, 상기 명령어의 내용에 따라 제1 매트릭스 데이터 주소, 제2 매트릭스 데이터 주소 및 연산결과 매트릭스 데이터 주소를 출력하는 매트릭스 주소 저장수단;
    상기 매트릭스 주소 저장수단으로부터 제1 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 제1 피연산 데이터의 주소를 순차적으로 생성하는 A 주소생성기;
    상기 매트릭스 주소 저장수단으로부터 제2 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 제2 피연산 데이터의 주소를 순차적으로 생성하는 B 주소생성기;
    상기 매트릭스 주소 저장수단으로부터 연산결과 매트릭스 데이터 주소를 입력받고, 상기 명령어에 따른 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 C 주소생성기를 구비함을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  3. 제2항에 있어서, 상기 매트릭스 주소 저장수단은
    상기 순환 링크트 리스트의 시작을 나타내는 메모리 주소를 저장하는 X 레지스터, 상기 X 레지스터에 저장된 값으로부터의 상대적인 값으로 나타낸 현재 처리되는 데이터의 위치 값을 저장하는 POS 레지스터, 상기 순환 링크트 리스트에 저장된 데이터의 갯수를 저장하는 MAX_POS 레지스터로 이루어진 다수의 매트릭스 주소 레지스터군을 구비함을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  4. 제3항에 있어서, 상기 매트릭스 주소 저장수단은
    다수의 매트릭스 주소 레지스터군에서 상기 연산수단에 의해 연산된 결과값이 저장될 위치를 결정하기 위해 상기 C 주소생성기에 의해 생성된 주소를 해석하는 디코더를 더 구비함을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  5. 제3항에 있어서, 상기 매트릭스 주소 저장수단은
    다수의 매트릭스 주소 레지스터군에 저장된 매트릭스 데이터의 주소들 중에서, 상기 명령어의 내용에 따라 제1 매트릭스 데이터 주소를 선택하는 제1 멀티플렉서, 제2 매트릭스 데이터 주소를 선택하는 제2 멀티플렉서 및 연산결과 매트릭스 데이터 주소를 선택하는 제3 멀티플렉서를 더 구비함을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  6. 제2항에 있어서, 상기 A 주소생성기는
    제1 매트릭스 데이터 주소를 입력받고, 명령어에 따라 최초 X 레지스터 값과 POS 레지스터 값을 더하여 출력하고, 연산 중에는 직전에 생성된 주소값에 1을 더한 주소값을 출력하되, 그 주소값이 X 레지스터 값과 MAX_POS 레지스터 값을 더한 값보다 큰 경우 X 레지스터 값을 출력하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  7. 제2항에 있어서, 상기 A 주소생성기는
    다수의 클럭 동안 동일한 주소값을 출력하는 ROW 레지스터를 더 구비하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  8. 제2항에 있어서, 상기 A 주소생성기는
    상기 명령어에 포함된 오프셋 주소와 세그먼트 주소 레지스터의 세그먼트 주소를 입력받고, 세그먼트 주소와 오프셋 주소를 결합하여 출력하는 스칼라 데이터 생성부를 더 구비하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  9. 제2항에 있어서, 상기 B 주소생성기는
    제2 매트릭스 데이터 주소를 입력받고, 명령어에 따라 최초 X 레지스터 값과 POS 레지스터 값을 더하여 출력하고, 연산 중에는 직전에 생성된 주소값에 1을 더한 주소값을 출력하되, 그 주소값이 X 레지스터 값과 MAX_POS 레지스터 값을 더한 값보다 큰 경우 X 레지스터 값을 출력하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  10. 제2항에 있어서, 상기 B 주소생성기는
    상기 명령어에 포함된 오프셋 주소와 세그먼트 주소 레지스터의 세그먼트 주소를 입력받고, 세그먼트 주소와 오프셋 주소를 결합하여 출력하는 스칼라 데이터 생성부를 더 구비하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  11. 제2항에 있어서, 상기 C 주소생성기는
    연산결과 매트릭스 데이터 주소를 입력받고, 명령어에 따라 최초 X 레지스터 값과 POS 레지스터 값을 더하여 출력하고, 연산 중에는 직전에 생성된 주소값에 1을 더한 주소값을 출력하되, 그 주소값이 X 레지스터 값과 MAX_POS 레지스터 값을 더한 값보다 큰 경우 X 레지스터 값을 출력하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  12. 제2항에 있어서, 상기 C 주소생성기는
    상기 연산결과 매트릭스매트릭스 나타내는 NUM_ROWS 레지스터의 값 및 NUM_COLS 레지스터의 값을 입력받고, 명령어에 따라 직전에 생성된 주소값에 NUM_COLS 레지스터의 값을 더한 주소값을 출력하되, 그 주소값이 X 레지스터 값과 MAX_POS 레지스터 값을 더한 값보다 큰 경우 직전에 생성된 주소값에 NUM_ROWS 레지스터의 값을 더하고 POS 레지스터의 값을 뺀 주소값을 출력하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  13. 제2항에 있어서, 상기 C 주소생성기는
    상기 명령어에 포함된 오프셋 주소와 세그먼트 주소 레지스터의 세그먼트 주소를 입력받고, 세그먼트 주소와 오프셋 주소를 결합하여 출력하는 스칼라 데이터 생성부를 더 구비하는 것을 특징으로 하는 디지털 신호처리 장치에서의 매트릭스 연산장치.
  14. 매트릭스 연산 기능을 갖는 디지털 신호처리 장치에 있어서,
    신호처리 프로그램을 저장하는 프로그램 메모리;
    상기 프로그램 메모리에서 패치한 명령어를 해석하여 매트릭스 연산에 필요한 일련의 제1 피연산 데이터의 주소, 일련의 제2 피연산 데이터의 주소 및 일련의 연산결과 데이터의 저장주소의 생성, 연산의 수행 및 상기 연산결과 데이터의 저장을 제어하는 제어신호를 생성하는 명령어 디코더;
    순환 링크트 리스트 형태의 매트릭스 데이터를 포함하는 피연산 데이터 및 상기 연산결과 데이터를 저장하는 데이터 저장수단;
    상기 제어신호에 따라 매트릭스 연산에 필요한 상기 일련의 제1 피연산 데이터의 주소, 상기 일련의 제2 피연산 데이터의 주소 및 상기 일련의 연산결과 데이터의 저장주소를 순차적으로 생성하는 주소 발생수단; 및
    상기 주소 발생수단에 의해 생성된 주소에 위치한 데이터를 상기 데이터 저장수단에서 인출하여 상기 제어신호에 따라 연산을 수행하는 연산수단을 포함함을 특징으로 하는 디지털 신호처리 장치.
  15. 제14항에 있어서, 상기 명령어 디코더는
    상기 주소 발생수단에서 제1 피연산 데이터의 주소 및 제2 피연산 데이터의 주소를 생성하는 단계;
    제1 피연산 데이터 및 제2 피연산 데이터를 상기 데이터 저장수단에서 인출하여 상기 연산수단으로 옮기는 단계;
    상기 연산수단에서 연산을 수행하고, 상기 주소 발생수단에서 연산결과 데이터의 저장주소를 생성하는 단계; 및
    상기 연산수단에서 출력된 연산결과 데이터를 상기 데이터 저장수단에 저장하는 단계의 파이프라인 구조에 대응하는 제어신호를 생성하는 것을 특징으로 하는 디지털 신호처리 장치.
KR1019990058763A 1999-12-17 1999-12-17 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치 KR100331565B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019990058763A KR100331565B1 (ko) 1999-12-17 1999-12-17 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
US09/638,951 US6505288B1 (en) 1999-12-17 2000-08-16 Matrix operation apparatus and digital signal processor capable of performing matrix operations
JP2000260459A JP3819686B2 (ja) 1999-12-17 2000-08-30 マトリックス演算装置及びマトリックス演算機能を有するデジタル信号処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990058763A KR100331565B1 (ko) 1999-12-17 1999-12-17 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치

Publications (2)

Publication Number Publication Date
KR20010078508A KR20010078508A (ko) 2001-08-21
KR100331565B1 true KR100331565B1 (ko) 2002-04-06

Family

ID=19626741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990058763A KR100331565B1 (ko) 1999-12-17 1999-12-17 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치

Country Status (3)

Country Link
US (1) US6505288B1 (ko)
JP (1) JP3819686B2 (ko)
KR (1) KR100331565B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7552290B2 (en) * 2005-08-23 2009-06-23 Advanced Micro Devices, Inc. Method for maintaining atomicity of instruction sequence to access a number of cache lines during proactive synchronization within a computer system
JP4934356B2 (ja) * 2006-06-20 2012-05-16 株式会社日立製作所 映像処理エンジンおよびそれを含む映像処理システム
US7797362B2 (en) * 2007-02-23 2010-09-14 Texas Instruments Incorporated Parallel architecture for matrix transposition
JP5347973B2 (ja) 2007-12-25 2013-11-20 日立金属株式会社 積層インダクタ及びこれを用いた電力変換装置
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US20100180100A1 (en) * 2009-01-13 2010-07-15 Mavrix Technology, Inc. Matrix microprocessor and method of operation
CN102629191B (zh) * 2011-04-25 2014-07-30 中国电子科技集团公司第三十八研究所 数字信号处理器寻址方法
CN102999476B (zh) * 2011-09-09 2016-06-01 中国航天科工集团第三研究院第八三五七研究所 一种二维矩阵匹配方法及电路
CN111857820B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
JP6712052B2 (ja) * 2016-06-29 2020-06-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11263008B2 (en) 2017-03-20 2022-03-01 Intel Corporation Systems, methods, and apparatuses for tile broadcast
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
CN113836481A (zh) * 2020-06-24 2021-12-24 北京希姆计算科技有限公司 矩阵计算电路、方法、电子设备及计算机可读存储介质
CN112328960B (zh) * 2020-11-02 2023-09-19 中国平安财产保险股份有限公司 数据运算的优化方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3794984A (en) * 1971-10-14 1974-02-26 Raytheon Co Array processor for digital computers
US4150434A (en) * 1976-05-08 1979-04-17 Tokyo Shibaura Electric Co., Ltd. Matrix arithmetic apparatus
JPS58146969A (ja) * 1982-02-26 1983-09-01 Toshiba Corp インデツクス限定連続演算ベクトルプロセツサ
JPH077385B2 (ja) * 1983-12-23 1995-01-30 株式会社日立製作所 データ処理装置
US5276819A (en) * 1987-05-01 1994-01-04 Hewlett-Packard Company Horizontal computer having register multiconnect for operand address generation during execution of iterations of a loop of program code
US5732251A (en) * 1996-05-06 1998-03-24 Advanced Micro Devices DSP with register file and multi-function instruction sequencer for vector processing by MACU
US6212618B1 (en) * 1998-03-31 2001-04-03 Intel Corporation Apparatus and method for performing multi-dimensional computations based on intra-add operation
US6115812A (en) * 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
JP2000122919A (ja) * 1998-10-13 2000-04-28 Mitsubishi Electric Corp プロセッサ及びメモリ制御方法
US6332188B1 (en) * 1998-11-06 2001-12-18 Analog Devices, Inc. Digital signal processor with bit FIFO

Also Published As

Publication number Publication date
KR20010078508A (ko) 2001-08-21
US6505288B1 (en) 2003-01-07
JP2001184336A (ja) 2001-07-06
JP3819686B2 (ja) 2006-09-13

Similar Documents

Publication Publication Date Title
KR100331565B1 (ko) 매트릭스 연산 장치 및 매트릭스 연산기능을 갖는 디지털신호처리 장치
CN109240746B (zh) 一种用于执行矩阵乘运算的装置和方法
US4038643A (en) Microprogramming control system
US4228498A (en) Multibus processor for increasing execution speed using a pipeline effect
EP3910503A1 (en) Device and method for executing matrix addition/subtraction operation
CN107688854B (zh) 一种能支持不同位宽运算数据的运算单元、方法及装置
US4539635A (en) Pipelined digital processor arranged for conditional operation
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
US5220656A (en) System for selecting control parameter for microinstruction execution unit using parameters and parameter selection signal decoded from instruction
JPH02226420A (ja) 浮動小数点演算実行装置
KR20000076310A (ko) 리스크 구조를 갖는 8 비트 마이크로콘트롤러
US4945511A (en) Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions
EP3340037A1 (en) A data processing apparatus and method for controlling vector memory accesses
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
US4598358A (en) Pipelined digital signal processor using a common data and control bus
JP2002544587A (ja) デジタル信号プロセッサ計算コア
US4896264A (en) Microprocess with selective cache memory
JPH0345420B2 (ko)
JP3841820B2 (ja) マイクロコンピュータ
JP2006293741A (ja) プロセッサ
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
JP2654451B2 (ja) データ出力方法
CA1155232A (en) Pipelined digital signal processor using a common data and control bus
JP3088956B2 (ja) 演算装置
JP3733137B2 (ja) マイクロコンピュータ

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
FPAY Annual fee payment

Payment date: 20130228

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140228

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee