KR20220129248A - 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법 - Google Patents

공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법 Download PDF

Info

Publication number
KR20220129248A
KR20220129248A KR1020210033888A KR20210033888A KR20220129248A KR 20220129248 A KR20220129248 A KR 20220129248A KR 1020210033888 A KR1020210033888 A KR 1020210033888A KR 20210033888 A KR20210033888 A KR 20210033888A KR 20220129248 A KR20220129248 A KR 20220129248A
Authority
KR
South Korea
Prior art keywords
value
fft
shared memory
row
column
Prior art date
Application number
KR1020210033888A
Other languages
English (en)
Other versions
KR102479480B1 (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 KR1020210033888A priority Critical patent/KR102479480B1/ko
Publication of KR20220129248A publication Critical patent/KR20220129248A/ko
Application granted granted Critical
Publication of KR102479480B1 publication Critical patent/KR102479480B1/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/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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
    • G06F15/8046Systolic arrays
    • 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
    • G06F15/8053Vector processors
    • G06F15/8061Details on data memory access
    • 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)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)
  • Radar Systems Or Details Thereof (AREA)

Abstract

공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치는 행렬 곱 연산을 진행하기 위한 복수의 프로세스 소자를 포함하는 제1 프로세스 그룹, 상기 제1 프로세스 그룹의 연산값을 입력받아 제1 값을 곱해주는 제1 복소 곱셈기 어레이, 상기 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열을 입력받아 행렬 곱 연산을 수행하는 제2 프로세스 그룹, 상기 제2 프로세스 그룹의 연산값을 입력받아 제2 값을 곱해주는 제2 복소 곱셈기 어레이, 및 입력 데이터, 상기 입력 데이터에 대해 column-FFT가 진행된 중간 결과 값, 상기 중간 결과 값에 대해 row-FFT가 진행되어 출력되는 출력값을 저장하는 공유 메모리를 포함한다.

Description

공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법{SYSTOLIC ARRAY FAST FOURIER TRANSFORM APPARATUS AND METHOD BASED ON SHARED MEMORY}
본 발명은 고속 푸리에 변환 장치 및 그 방법에 관한 것으로, 더욱 상세하게는 공유 메모리 기반의 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법에 관한 것이다.
레이다 시스템의 경우 표적의 거리와 속도를 추출하기 위한 고속 푸리에 변환(fast fourier transform, FFT) 연산이 필수적이다. FFT 연산은 레이다 시스템에서 복잡도가 가장 큰 신호처리 중 하나이므로 효율적인 FFT 프로세서가 요구된다. 특히, 합성 개구 레이다(synthetic aperture radar, SAR)의 영상 형성 알고리즘의 경우 대용량의 영상 정보를 처리해야 하므로 연산 복잡도가 높고, 큰 분해능을 요구하는 특성으로 인해 높은 포인트의 연산을 지원해야 하고, SAR 시스템의 실시간 응용을 위해 고속의 FFT 프로세서 설계가 필수적이다.
FFT 프로세서의 하드웨어 구조에는 단일 버터플라이, 파이프라인, 시스토릭 어레이 구조로 구분되는데, 단일 버터플라이 구조와 파이프라인 구조는 시스토릭 어레이 구조에 비해 작은 면적으로 구현 가능하지만, 고속의 연산을 처리하기에는 적합하지 않다. 따라서, 실시간 응용의 경우 하드웨어 구조 중 가장 속도가 빠른 시스토릭 어레이 기반의 병렬 구조가 가장 적합하다.
다양한 시스토릭 어레이 구조 중에서 base-4 기반의 시스토릭 어레이 구조가 면적과 수행시간의 교환 관계(trade-off)를 가장 잘 만족한다. 하지만, 시스토릭 어레이 구조의 특성상 고속의 동작을 지원하는 만큼 많은 메모리 용량이 요구되는 문제가 있다.
본 발명이 해결하고자 하는 기술적 과제는 시스토릭 어레이 구조에서 메모리 요구량을 줄일 수 있는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법을 제공함에 있다.
본 발명의 일 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치는 행렬 곱 연산을 진행하기 위한 복수의 프로세스 소자를 포함하는 제1 프로세스 그룹, 상기 제1 프로세스 그룹의 연산값을 입력받아 제1 값을 곱해주는 제1 복소 곱셈기 어레이, 상기 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열을 입력받아 행렬 곱 연산을 수행하는 제2 프로세스 그룹, 상기 제2 프로세스 그룹의 연산값을 입력받아 제2 값을 곱해주는 제2 복소 곱셈기 어레이, 및 입력 데이터, 상기 입력 데이터에 대해 column-FFT가 진행된 중간 결과 값, 상기 중간 결과 값에 대해 row-FFT가 진행되어 출력되는 출력값을 저장하는 공유 메모리를 포함한다.
상기 column-FFT의 계산 결과값이 나오는 시점에 이미 사용된 초기 데이터의 주소에 주소값이 겹치지 않게 상기 column-FFT의 계산 결과값이 상기 공유 메모리에 재기록될 수 있다.
상기 column-FFT의 계산 결과값은 상기 row-FFT의 입력값일 수 있다.
상기 row-FFT의 계산 결과값이 나오는 시점에 이미 사용된 row-FFT의 입력값의 주소에 주소값이 겹치지 않게 상기 row-FFT의 계산 결과값이 상기 공유 메모리에 재기록될 수 있다.
상기 column-FFT의 입력 데이터값이 들어오는 경로와 상기 row-FFT의 입력 데이터값이 들어오는 경로가 동일할 수 있다.
본 발명의 다른 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법은 공유 메모리에 입력 데이터를 저장하는 단계, 행렬 곱 연산을 진행하기 위한 복수의 프로세스 소자를 포함하는 제1 프로세스 그룹, 상기 제1 프로세스 그룹의 연산값을 입력받아 제1 값을 곱해주는 제1 복소 곱셈기 어레이, 상기 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열을 입력받아 행렬 곱 연산을 수행하는 제2 프로세스 그룹 및 상기 제2 프로세스 그룹의 연산값을 입력받아 제2 값을 곱해주는 제2 복소 곱셈기 어레이를 이용하여 상기 입력 데이터에 대해 column-FFT를 진행한 중간 결과 값을 상기 공유 메모리에 저장하는 단계, 및 상기 제1 프로세스 그룹, 상기 제1 복소 곱셈기 어레이, 상기 제2 프로세스 그룹 및 상기 제2 복소 곱셈기 어레이를 이용하여 상기 중간 결과 값에 대해 row-FFT를 진행한 출력값을 상기 공유 메모리에 저장하는 단계를 포함한다.
상기 column-FFT의 계산 결과값이 나오는 시점에 이미 사용된 초기 데이터의 주소에 주소값이 겹치지 않게 상기 column-FFT의 계산 결과값이 상기 공유 메모리에 재기록될 수 있다.
상기 column-FFT의 계산 결과값은 상기 row-FFT의 입력값일 수 있다.
상기 row-FFT의 계산 결과값이 나오는 시점에 이미 사용된 row-FFT의 입력값의 주소에 주소값이 겹치지 않게 상기 row-FFT의 계산 결과값이 상기 공유 메모리에 재기록될 수 있다.
상기 column-FFT의 입력 데이터값이 들어오는 경로와 상기 row-FFT의 입력 데이터값이 들어오는 경로가 동일할 수 있다.
본 발명의 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법은 기존의 입력 메모리, 출력 메모리, 내부 메모리의 3개의 RAM(random access memory)을 이용해 수행했던 것을 메모리 저장 공간을 효율적으로 제어하여 하나의 RAM으로 수행할 수 있도록 함으로써 RAM의 이용률을 높이고 메모리 요구량을 감소시킬 수 있다. 또한 컬럼 고속 푸리에 변환(column-FFT)과 로우 고속 푸리에 변환(row-FFT)의 연산의 흐름이 동일하게 설계됨으로써 컨트롤러와 좌측단 프로세스 소자(LHS PE) 셀의 복잡도를 감소시키고 데이터의 흐름을 단순화할 수 있다.
또한, 본 발명의 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법은 기존 알고리즘의 성능을 유지하면서도 메모리 요구량을 감소시켜 하드웨어의 면적을 감소시킬 수 있고, 데이터의 흐름 및 컨트롤 방식을 단순화할 수 있으며, 고속의 연산을 지원하는 복잡한 다른 FFT 프로세서에 비해 저복잡 저면적으로 구현이 가능하므로 SoC(system on chip) 집적이 더욱 용이하다. SAR과 같은 고속의 실시간 처리가 필요한 레이다 응용이나, 고속의 FFT 연산이 필요하지만 많은 메모리를 사용할 수 없는 장치의 경우에 본 발명의 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법이 다양한 응용으로 활용될 수 있다.
도 1은 일 실시예에 따른 256-포인트 base-4 시스토릭 어레이 FFT 프로세서의 기본 구조를 나타낸다.
도 2는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 하드웨어 구조를 나타낸다.
도 3은 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 흐름도이다.
도 4는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 좌측 프로세스 소자 셀의 연산 과정을 나타낸다.
도 5는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 우측 프로세스 소자 셀의 연산 과정을 나타낸다.
도 6은 본 발명의 일 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치를 나타낸다.
도 7은 본 발명의 일 실시예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 흐름도이다.
이하, 첨부한 도면을 참고로 하여 본 발명의 실시예들에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예들에 한정되지 않는다.
본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조 부호를 붙이도록 한다.
또한, 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 일 실시예에 따른 256-포인트 base-4 시스토릭 어레이 FFT 프로세서의 기본 구조를 나타낸다.
도 1을 참조하면, base-4 시스토릭 어레이 FFT 알고리즘은 1차원 행렬 데이터에 대하여 총 두 단계의 부분 분리(factorization) 과정을 수행한다. 첫 번째 부분 분리는 N 길이의 1차원 입력 데이터를 행(row)(Nr)과 열(column)(Nc)로 분리하는 것인데, 수행하고자 하는 입력 포인트 수를 N이라 할 때 N=NrNc로 분리가 되며, Nr(=N3)는 행, Nc(=N4)는 열의 크기가 된다. 두 번째 부분 분리는 첫 번째 부분 분리를 통해 나눠진 값들을 N3=N1rN2와 N4=N1cN2로 분리하며, 여기서 N2는 base-b에서의 b의 값과 같다. 즉, Nr-포인트 크기의 FFT 연산을 Nc번 수행하고, 아래의 수학식 1에 표현한 N-포인트에 해당하는 회전인자를 곱해준 뒤 Nc-포인트 크기의 FFT 연산을 Nr번 수행한다.
Figure pat00001
이 과정에서 첫 번째와 두 번째 FFT는 계산 과정이 동일하고, 단순히 입력의 데이터가 행인지 열인지에 대한 차이만 있다. 이 과정을 식으로 정리하면, column-FFT를 수행할 때에는 N3=N1rN2이고, row-FFT를 수행할 때에는 N4=N1cN2이지만 두 식을 일반화하여 M=N1N2라고 하면 FFT는 아래의 수학식 2 및 수학식 3과 같이 정리된다.
Figure pat00002
Figure pat00003
여기서,
Figure pat00004
는 요소별 곱을 의미하고, b는 base의 값을 의미하며, base-4 시스토릭 어레이 FFT에서 b는 4가 된다. Xb는 N1×b 크기의 입력 데이터이고, Zb는 N1×b 크기의 FFT 출력 데이터이다. WM은 N1×N1 크기의 행렬이며, CM1, CM2는 ±1과 ±j로 구성된 radix-4 버터플라이(butterfly) 행렬의 배열을 일컫는다. CM1, CM2는 M/b2개의 부분 행렬 CB=[c1| c2…|cb]t로 구성되며, CM1=[CB t|CB t…]t이 CM2=[CB|CB…]가 된다. b가 4이기 때문에 c와 CB 값은 각각 아래의 수학식 4 및 수학식 5와 같이 정의된다.
Figure pat00005
Figure pat00006
수학식 2와 수학식 3을 이용하여 column-FFT의 계산 결과인 Zb에 N-포인트에 해당하는 회전인자
Figure pat00007
를 곱해준 뒤 column-FFT와 같은 방법으로 row-FFT를 계산하면 최종 FFT 연산의 결과가 도출된다.
256 길이의 base-4 시스토릭 어레이 FFT 프로세서는 4 by 4 행렬 곱 연산을 진행하기 위한 16개의 프로세스 소자(process element, PE)로 구성된 좌측단(left hand side, LHS), 중간에서 WM(또는 Wb)를 곱하는 4개의 복소 곱셈기, 한번 더 4 by 행렬 곱 연산을 진행하기 위한 16개의 PE로 구성된 우측단(right hand side, RHS)을 포함한다. 좌측단(LHS)를 제1 프로세스 그룹이라 하고, 우측단(RHS)를 제2 프로세스 그룹이라 지칭할 수 있다.
LHS와 RHS의 PE 셀은 (N3/b)×b의 배열로 구성되며, 중간의 복소 곱셈기는 (N3/b)×1의 배열로 구성된다. base-4 기반의 시스토릭 어레이 FFT 프로세서의 구조에서 LHS와 RHS는 각각 4개의 열로 구성되며, 256-포인트의 경우 16×16으로 분해되므로, LHS와 RHS의 PE 셀의 행의 개수는 4개가 된다. 중간의 복소 곱셈기의 PE 셀 개수 또한 4개가 된다. CM1과 CM2는 앞서 설명한 것처럼 N이 256일 때에 M=N3=N4=16이 되므로 아래의 수학식 6과 같다.
Figure pat00008
CM1 값은 좌측단 프로세스 소자(LHS PE) 셀에 미리 할당되어 있고, CM2 값은 RHS의 아래에서 입력된다.
도 2는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 하드웨어 구조를 나타낸다.
도 2를 참조하면, 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 메모리의 경우, 1차원의 입력 데이터들을 2차원으로 부분 분리하여 4개의 데이터가 동시에 병렬로 들어갈 수 있게 데이터를 재배치하는 입력 메모리(input RAM), column-FFT 이후 중간 결과 값을 저장할 내부 메모리(internal RAM), row-FFT까지 끝난 최종 결과 값을 인덱스에 맞게 재배열하기 위한 출력 메모리(output RAM)로 구성된다. 입력 메모리(input RAM), 출력 메모리(output RAM), 내부 메모리(internal RAM)의 크기는 N-포인트 기준으로 각각 N 크기만큼 필요하기 때문에 총 3N 크기의 용량이 요구된다. FFT의 포인트 수가 증가할수록 메모리의 요구량이 커지는 문제가 있다. 한편, 회전인자는 비휘발성 메모리(read only memory, ROM)에 저장되어 있다.
이하, 도 3 내지 5를 참조하여 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 동작에 대하여 설명한다.
도 3은 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 흐름도이다. 도 4는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 좌측 프로세스 소자 셀의 연산 과정을 나타낸다. 도 5는 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 우측 프로세스 소자 셀의 연산 과정을 나타낸다.
도 3은 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 하단 1개의 행에 대한 연산 흐름을 나타낸 것이다. 비교예에 따른 base-4 시스토릭 어레이 FFT 프로세서는 LHS, WM(Wb)를 곱하는 제1 복소 곱셈부, RHS, WN을 곱하는 제2 복소 곱셈부, 내부 메모리(M), 입력 버퍼(input buffer)(입력 메모리), 출력 버퍼(output buffer)(출력 메모리)를 포함한다. column-FFT 연산을 수행할 때 입력 버퍼(input buffer)에 들어온 데이터들이 LHS와 RHS의 연산 수행 후 내부 메모리(M)에 저장된다.
도 4를 참조하면, LHS의 연산은 행렬의 곱을 수행하기 위한 연산인데, 행렬 연산을 수행하기 위해 필요한 것은 덧셈과 곱셈 연산이다. 행렬 b는 CM1을 의미하며 ±1, ±j로 구성되어 있다. 좌측단 프로세스 소자(LHS PE) 셀 내부에서 밑에서 들어온 a의 데이터와 b가 곱해진 후 왼쪽에서 들어오는 값 c와 더해져서 오른쪽으로 a×b+c의 결과를 출력하게 되며, 그 오른쪽의 LHS PE 셀은 같은 방법으로 결과를 출력하게 된다. 따라서 원래는 곱셈 연산기가 필요하지만 ±1, ±j의 곱셈 연산은 교환(swap) 연산과 덧셈, 뺄셈의 연산만으로 구현될 수 있다. LHS PE 셀은 밑에서 들어온 값 a를 위로 다시 보내주기 위한 한 개의 레지스터와 a×b+c의 값을 오른쪽으로 보내주기 위해 한 개의 레지스터를 필요로 한다. 따라서 LHS PE 셀은 총 2개의 레지스터, 1개의 덧셈기, 복소 곱셈기를 대체하는 덧셈기 1개가 필요하게 된다.
LHS의 연산 결과를 보면, C11부터 C44까지 차례로 나오게 되는데, 이 값이 도 3의 LHS의 PE1부터 PE4까지의 연산을 지나 WM(Wb)을 곱하는 복소 곱셈기를 차례로 지나면서 ROM에 저장된 회전 인자 값이 곱해지게 된다. 이후, 회전인자가 곱해진 결과가 RHS의 입력으로 들어가게 되고, 4 by 4의 행렬 곱 연산이 수행된다.
도 5를 참조하면, 우측단 프로세스 소자(RHS PE) 셀의 연산에서 a 행렬 값이 CM2(±1, ±j)이다. 먼저, 왼쪽의 b와 아래의 a의 값이 들어오게 되면 두 값을 곱한 뒤에 PE 셀에 이미 존재하는 c값(초기에는 0)과 더한 뒤 그 값이 c가 된다. 즉, 누적(accumulate) 연산을 진행하여 총 4번의 누적 연산이 진행되면 c값을 출력하게 된다. c11값을 예로 들면, 처음에는 a11, b11이 들어오게 되어 a11×b11값과 c값(처음이므로 0)이 더해져서 c = a11×b11이 된다. 다음으로 a12, b21이 들어오고 c + a12×b21을 계산하면서 c = a11×b11 + a12×b21이 된다. 이 방식으로 총 4번의 누적 연산을 진행하면 c11 = a11×b11 + a12×b21 + a13×b31 + a14×b41 값이 출력된다. RHS PE 셀은 밑에서 들어온 값 a를 위로 다시 보내주기 위한 한 개의 레지스터, c값을 오른쪽으로 보내주기 위해 한 개의 레지스터, c값을 누적하여 더하기 위한 누적 연산을 위한 한 개의 레지스터를 필요로 한다. 따라서 RHS PE 셀은 총 3개의 레지스터, 1개의 덧셈기, ±1, ±j의 곱 연산을 수행하기 위한 복소 곱셈기를 필요하게 된다.
다시 도 3을 참조하면, LHS와 RHS의 연산 수행 후 내부 메모리(M)에 저장된 데이터가 row-FFT를 수행할 때에는 멀티플렉서(multiplexer, MUX)에 의해 LHS PE 셀에 column-FFT의 결과 값이 저장되고, CM1 값이 입력 버퍼(input buffer)에 입력된다. column-FFT와 row-FFT 연산의 데이터 흐름이 서로 다르게 진행되므로 별도의 컨트롤러(예를 들어, MUX)를 이용하여 데이터 흐름을 제어하여야 한다.
이와 같이, 고속의 동작을 지원하는 하드웨어 구조의 특성상 행렬 연산을 지원하기 위한 시스토릭 어레이가 존재하여야 하고, 그에 따라 덧셈기와 곱셈기, 레지스터가 많이 필요하게 되며, 또한 많은 메모리를 필요로 하기 때문에 큰 하드웨어 면적을 갖는 문제점이 있다.
이하, 도 6 및 7을 참조하여 본 발명의 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법에 대하여 설명한다. 도 1 내지 5에서 상술한 특징과 비교하여 차별화되는 특징에 대하여 설명하고, 중복되는 특징은 도 1 내지 5에서 상술한 내용을 채용할 수 있다.
도 6은 본 발명의 일 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치를 나타낸다. 도 7은 본 발명의 일 실시예에 따른 base-4 시스토릭 어레이 FFT 프로세서의 흐름도로서, base-4 시스토릭 어레이 FFT 프로세서의 하단 1개의 행에 대한 연산 흐름을 나타낸 것이다.
도 6 및 7을 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 LHS, 제1 복소 곱셈기 어레이, RHS, 제2 복소 곱셈기 어레이 및 공유 메모리(shared RAM)를 포함한다. LHS는 입력 데이터(input)를 입력받아 행렬 곱을 수행하고, 제1 복소 곱셈기 어레이는 LHS의 연산값을 입력받아 제1 값(WM)을 곱해주고, RHS는 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열(CM2)을 입력받아 행렬 곱 연산을 수행하며, 제2 복소 곱셈기 어레이는 RHS의 연산값을 입력받아 제2 값(WN)을 곱해준다. 공유 메모리(shared RAM)는 입력 데이터(input)를 저장하는 입력 메모리, column-FFT가 진행된 중간 결과 값을 저장하는 내부 메모리 및 row-FFT가 진행되어 출력되는 출력값(output)을 저장하는 출력 메모리의 역할을 모두 수행한다. 즉, 공유 메모리(shared RAM)는 FFT의 입력 데이터(input), 입력 데이터에 대해 column-FFT가 진행된 중간 결과 값, 중간 결과 값에 대해 row-FFT가 진행되어 출력되는 출력값(output)을 저장한다.
공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 두 단계로 진행되는 FFT 연산에서 첫 번째 연산인 column-FFT의 계산 결과값이 나오는 시점에 그 결과값을 이미 사용된 초기 데이터의 주소에 주소값이 겹치지 않게 주소값을 컨트롤하여 공유 메모리(shared RAM)에 재기록(re-write)함으로써 공유 메모리(shared RAM)의 이용률을 최대로 사용하여 하나의 메모리로 연산을 진행할 수 있다.
도 2 내지 5의 비교 실시예에서, 맨 처음에 데이터값이 들어오면서 입력 메모리(input RAM)(input buffer)에 저장되게 되는데, 이 값이 저장되는 시간동안 내부 메모리(internal RAM)의 사용은 없다.
따라서, 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 이 시간동안 공유 메모리(shared RAM)를 이용하여 처음 데이터값, 즉 입력 데이터(input)를 저장할 수 있다. 입력 데이터(input)가 공유 메모리(shared RAM)에 저장된 후 그 값이 column-FFT의 연산으로 사용되면서 공유 메모리(shared RAM)에 사용된 데이터값들이 생기게 된다. 즉, 이미 column-FFT의 입력 데이터로 사용된 값들의 주소는 비어있는 상황으로 봐도 무방하기 때문에 그 주소에 column-FFT의 계산 결과값인 row-FFT의 입력값이 저장될 수 있다. 데이터값들을 빈자리에 채워 넣은 상황이기 때문에 필요한 값의 순서를 맞추기 위해서 메모리 컨트롤러로 필요한 데이터값을 불러오면서 row-FFT를 진행하게 된다.
도 2 내지 5의 비교 실시예에서는 row-FFT의 결과가 병렬 형태이기 때문에 이 값을 직렬로 바꾸기 위한 출력 메모리(output RAM)(output buffer)를 사용하는데, 앞서 내부 메모리(internal RAM)에서 row-FFT의 입력값으로 데이터값을 사용한 자리가 빈자리가 된다.
따라서, 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 앞의 column-FFT의 계산 결과를 저장할 때와 같은 방식으로 공유 메모리(shared RAM)에서 사용된 값들의 주소에 대응하는 빈자리에 row-FFT의 계산 결과값을 저장할 수 있다. 즉, 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 row-FFT의 계산 결과값이 나오는 시점에 이미 사용된 row-FFT의 입력값의 주소에 주소값이 겹치지 않게 row-FFT의 계산 결과값을 공유 메모리(shared RAM)에 재기록할 수 있다. 메모리 컨트롤러를 이용해 row-FFT의 계산 결과값을 순서대로 뽑아서 사용하면 별도의 출력 메모리를 사용하지 않고 공유 메모리(shared RAM)를 사용하여 직렬 데이터 형태로 바꿀 수 있다.
공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 row-FFT를 진행할 때 입력값으로 ±1, ±j가 아니라 column-FFT의 결과가 들어오게 함으로써 column-FFT의 연산과 row-FFT의 연산을 동일하게 진행할 수 있게 하여 컨트롤 방식을 단순화할 수 있다.
도 2 내지 5의 비교 실시예에서는 맨 처음에 column-FFT를 진행할 때에는 입력 버퍼(input buffer)에서 데이터값이 들어오면서 LHS에서 연산을 진행하게 되고, 그 후 WM을 곱한 뒤 RHS 연산을 진행한 후 WN을 곱한 column-FFT의 결과가 내부 메모리(internal RAM)(M)에 저장되고, 이후 row-FFT를 진행할 때 column-FFT에서 들어온 것처럼 입력 버퍼(input buffer)에서 들어온 것이 아닌 내부 메모리(internal RAM)(M)에서 들어오게 되므로, column-FFT와 row-FFT가 다르게 진행된다. 따라서 column-FFT의 데이터값이 들어오는 위치와 row-FFT의 데이터값이 들어오는 물리적인 위치가 다르기 때문에 column-FFT와 row-FFT의 방식이 다른 방식으로 진행되고 있다. 따라서 도 3에 예시한 바와 같이 멀티플렉서(MUX)를 사용하여 두 데이터를 컨트롤하고 있다. 물리적으로 column-FFT의 입력 데이터값이 들어오는 경로와 row-FFT의 입력 데이터값이 들어오는 경로가 다르기 때문에 row-FFT를 진행할 때에 입력 데이터값과 ±1, ±j(CM1)값이 들어오는 자리가 바뀌었지만, 연산과정을 수식적으로 확인했을 때 column-FFT와 row-FFT의 수식은 동일하게 진행되기 때문에 연산의 과정과 흐름은 도 4 및 5에서의 과정으로 column-FFT와 row-FFT가 동일하다.
공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)에서 column-FFT의 입력 데이터값이 들어오는 경로와 row-FFT의 입력 데이터값이 들어오는 경로는 동일하다. column-FFT의 입력 데이터값이 들어오는 경로와 row-FFT의 입력 데이터값이 들어오는 경로가 동일하여도 동일한 계산 결과를 얻을 수 있기 때문에 별도의 멀티플렉서를 사용하지 않고 컨트롤 방식을 단순화할 수 있다.
도 2 내지 5의 비교 실시예에서는 LHS PE에서는 각각의 PE에서 ±1, ±j에 대한 곱 연산을 모두 지원해야 한다. 도 4에 예시한 바와 같이, column-FFT에서는 b 행렬에 ±1, ±j(CM1)값이 있고 a 행렬에 입력 데이터값이 들어가면서 행렬 곱을 수행하게 되는데, row-FFT의 경우에는 b 행렬에 입력 데이터값이 들어가게 되고 a 행렬에 ±1, ±j(CM1)값이 들어가게 된다. 따라서 밑에서 위로 올라가는 경로에 ±1, ±j(CM1)값이 모든 PE셀을 지나게 되기 때문에 각각의 PE셀이 ±1, ±j의 곱 연산을 모두 지원해야 한다.
하지만, 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 하나의 PE 셀에서는 ±1, ±j의 4개의 값 중에 할당된 1개의 값에 대한 곱 연산만을 진행한다. 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치(100)는 ±1, ±j(CM1)값이 b 행렬에 고정되어 있고 입력 데이터값은 항상 아래(한 방향)에서 들어가기 때문에 각 PE셀은 할당된 한 개의 값에 대한 곱 연산만 지원하면 된다.
예를 들어, 도 4에서 b12가 입력 데이터값 중 하나라고 했을 때 밑에서 들어가는 a21, a22, a23, a24값은 각각 ±1, ±j가 된다. 이때, b12는 ±1, ±j와 전부 곱 연산을 진행하여야 하기 때문에 b12가 있는 PE셀은 ±1, ±j에 대해 모든 곱 연산을 진행하여야 한다. 따라서, 각각의 PE셀 모두 ±1, ±j의 곱 연산을 지원해야 한다.
반면, b12가 ±1, ±j 중 하나인 -1 값이라고 하고 a21, a22, a23, a24값이 입력 데이터라고 하면 b12가 있는 PE셀은 -1의 곱 연산만 지원하면 된다.
지금까지 참조한 도면과 기재된 발명의 상세한 설명은 단지 본 발명의 예시적인 것으로서, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치

Claims (10)

  1. 행렬 곱 연산을 진행하기 위한 복수의 프로세스 소자를 포함하는 제1 프로세스 그룹;
    상기 제1 프로세스 그룹의 연산값을 입력받아 제1 값을 곱해주는 제1 복소 곱셈기 어레이;
    상기 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열을 입력받아 행렬 곱 연산을 수행하는 제2 프로세스 그룹;
    상기 제2 프로세스 그룹의 연산값을 입력받아 제2 값을 곱해주는 제2 복소 곱셈기 어레이; 및
    입력 데이터, 상기 입력 데이터에 대해 column-FFT가 진행된 중간 결과 값, 상기 중간 결과 값에 대해 row-FFT가 진행되어 출력되는 출력값을 저장하는 공유 메모리를 포함하는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치.
  2. 제1 항에 있어서,
    상기 column-FFT의 계산 결과값이 나오는 시점에 이미 사용된 초기 데이터의 주소에 주소값이 겹치지 않게 상기 column-FFT의 계산 결과값이 상기 공유 메모리에 재기록되는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치.
  3. 제2 항에 있어서,
    상기 column-FFT의 계산 결과값은 상기 row-FFT의 입력값인 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치.
  4. 제3 항에 있어서,
    상기 row-FFT의 계산 결과값이 나오는 시점에 이미 사용된 row-FFT의 입력값의 주소에 주소값이 겹치지 않게 상기 row-FFT의 계산 결과값이 상기 공유 메모리에 재기록되는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치.
  5. 제1 항에 있어서,
    상기 column-FFT의 입력 데이터값이 들어오는 경로와 상기 row-FFT의 입력 데이터값이 들어오는 경로가 동일한 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치.
  6. 공유 메모리에 입력 데이터를 저장하는 단계;
    행렬 곱 연산을 진행하기 위한 복수의 프로세스 소자를 포함하는 제1 프로세스 그룹, 상기 제1 프로세스 그룹의 연산값을 입력받아 제1 값을 곱해주는 제1 복소 곱셈기 어레이, 상기 제1 복소 곱셈기 어레이를 통과한 값과 행렬 배열을 입력받아 행렬 곱 연산을 수행하는 제2 프로세스 그룹 및 상기 제2 프로세스 그룹의 연산값을 입력받아 제2 값을 곱해주는 제2 복소 곱셈기 어레이를 이용하여 상기 입력 데이터에 대해 column-FFT를 진행한 중간 결과 값을 상기 공유 메모리에 저장하는 단계; 및
    상기 제1 프로세스 그룹, 상기 제1 복소 곱셈기 어레이, 상기 제2 프로세스 그룹 및 상기 제2 복소 곱셈기 어레이를 이용하여 상기 중간 결과 값에 대해 row-FFT를 진행한 출력값을 상기 공유 메모리에 저장하는 단계를 포함하는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법.
  7. 제6 항에 있어서,
    상기 column-FFT의 계산 결과값이 나오는 시점에 이미 사용된 초기 데이터의 주소에 주소값이 겹치지 않게 상기 column-FFT의 계산 결과값이 상기 공유 메모리에 재기록되는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법.
  8. 제7 항에 있어서,
    상기 column-FFT의 계산 결과값은 상기 row-FFT의 입력값인 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법.
  9. 제8 항에 있어서,
    상기 row-FFT의 계산 결과값이 나오는 시점에 이미 사용된 row-FFT의 입력값의 주소에 주소값이 겹치지 않게 상기 row-FFT의 계산 결과값이 상기 공유 메모리에 재기록되는 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법.
  10. 제6 항에 있어서,
    상기 column-FFT의 입력 데이터값이 들어오는 경로와 상기 row-FFT의 입력 데이터값이 들어오는 경로가 동일한 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 방법.
KR1020210033888A 2021-03-16 2021-03-16 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법 KR102479480B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210033888A KR102479480B1 (ko) 2021-03-16 2021-03-16 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210033888A KR102479480B1 (ko) 2021-03-16 2021-03-16 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20220129248A true KR20220129248A (ko) 2022-09-23
KR102479480B1 KR102479480B1 (ko) 2022-12-20

Family

ID=83446135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210033888A KR102479480B1 (ko) 2021-03-16 2021-03-16 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102479480B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100459524B1 (ko) * 2001-07-19 2004-12-03 가부시키가이샤 엔티티 도코모 시스토릭 어레이 장치
KR20070112244A (ko) * 2005-03-11 2007-11-22 퀄컴 인코포레이티드 고속 푸리어 변환 트위들 승산

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100459524B1 (ko) * 2001-07-19 2004-12-03 가부시키가이샤 엔티티 도코모 시스토릭 어레이 장치
KR20070112244A (ko) * 2005-03-11 2007-11-22 퀄컴 인코포레이티드 고속 푸리어 변환 트위들 승산

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. Greg Nash et al. "Hardware efficient base-4 systolic architecture for computing the discrete Fourier transform", IEEE Workshop on Signal Processing Systems, pp87-92,(2002.12.10.)* *

Also Published As

Publication number Publication date
KR102479480B1 (ko) 2022-12-20

Similar Documents

Publication Publication Date Title
JP7374236B2 (ja) 加速数学エンジン
CN111465924B (zh) 用于将矩阵输入转换为矩阵处理器的向量化输入的系统和方法
US10346507B2 (en) Symmetric block sparse matrix-vector multiplication
US10482392B2 (en) Robust large-scale machine learning in the cloud
CN103955446B (zh) 基于dsp芯片的可变长度fft计算方法
CN108170639B (zh) 基于分布式环境的张量cp分解实现方法
US20170206089A1 (en) Information processing apparatus and computational method
CN113032007B (zh) 一种数据处理方法及装置
EP3839832A1 (en) Method and apparatus with neural network convolution operation
US11074214B2 (en) Data processing
US9582474B2 (en) Method and apparatus for performing a FFT computation
JP3802783B2 (ja) 衝突防止メモリ装置及びそれを用いたアドレス計算とデータルーティング方法
KR102479480B1 (ko) 공유 메모리 기반 시스토릭 어레이 고속 푸리에 변환 장치 및 그 방법
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
US20100185425A1 (en) Performing Molecular Dynamics Simulation on a Multiprocessor System
JP2002529814A (ja) ベクトルアクセスを有するメモリ装置
US20180349061A1 (en) Operation processing apparatus, information processing apparatus, and method of controlling operation processing apparatus
Kal et al. AESPA: Asynchronous Execution Scheme to Exploit Bank-Level Parallelism of Processing-in-Memory
Nakano et al. The super warp architecture with random address shift
Foadaddini et al. An efficient GPU-based fractional-step domain decomposition scheme for the reaction–diffusion equation
WO2016007069A1 (en) Device and method for performing a fourier transform on a three dimensional data set
JP6567232B2 (ja) 画像再生器、信号処理装置及び画像再生方法
JP3808925B2 (ja) 多様な行列格納法を使用可能な連立方程式の並列処理装置および方法
CN118069099B (zh) 基于fpga多个矩阵并行流水转置sar成像方法、装置、设备及存储介质
CN111758107B (zh) 用于基于硬件的池化的系统和方法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant