KR102428398B1 - 병렬 처리 장치 - Google Patents

병렬 처리 장치 Download PDF

Info

Publication number
KR102428398B1
KR102428398B1 KR1020210034494A KR20210034494A KR102428398B1 KR 102428398 B1 KR102428398 B1 KR 102428398B1 KR 1020210034494 A KR1020210034494 A KR 1020210034494A KR 20210034494 A KR20210034494 A KR 20210034494A KR 102428398 B1 KR102428398 B1 KR 102428398B1
Authority
KR
South Korea
Prior art keywords
signals
signal
processing unit
mode
bits
Prior art date
Application number
KR1020210034494A
Other languages
English (en)
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 KR1020210034494A priority Critical patent/KR102428398B1/ko
Priority to PCT/KR2022/003672 priority patent/WO2022197091A1/ko
Priority to KR1020220082620A priority patent/KR20220130046A/ko
Application granted granted Critical
Publication of KR102428398B1 publication Critical patent/KR102428398B1/ko
Priority to US18/369,532 priority patent/US20240004667A1/en

Links

Images

Classifications

    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Electrotherapy Devices (AREA)
  • Sewage (AREA)

Abstract

일실시예에 의한 병렬 처리 장치는 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})을 입력받고, 제1 내지 제N 출력들(M1, M2, ... MN)을 출력한다. 상기 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})은 복수의 제1 신호들(X1, X2, ... XN) 및 복수의 제2 신호들(Y1, Y2, ... YN)을 포함하고, 상기 N은 4 이상의 자연수이다. 상기 병렬 처리 장치는 합산 모드로 동작하는 경우에는 i번째 제1 신호(Xi)를 상기 복수의 제2 신호들(Y1, Y2, ... YN)의 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하고, 곱셈 모드로 동작하는 경우에는 상기 제1 신호들(X1, X2, ... XN)이 (i-1)비트만큼 쉬프트된 신호들((X1<<(i-1)), (X2<<(i-1)), ... (XN<<(i-1)))을 상기 제2 신호들(Y1, Y2, ... YN)의 상기 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 상기 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하되, 상기 i는 1 이상이고, N 이하의 자연수인 전처리부; 및 상기 제1 내지 제N 출력들(M1, M2, ... MN)을 출력하는 상기 합산기들(SUM1, SUM2, ... SUMN)을 포함하며, 상기 합산기들(SUM1, SUM2, ... SUMN) 중 각 합산기는 전달된 신호들을 합산하는 주처리부를 포함한다.

Description

병렬 처리 장치{PARALLEL PROCESSING APPRATUS}
이하 설명하는 기술은 병렬 처리 장치에 관한 것이다.
높은 데이터 처리 성능을 위하여 병렬 처리 장치에 관한 연구가 많이 수행되고 있다. 병렬 처리 장치의 예로서 멀티코아 프로세서(multi-core processor)가 있다. 멀티코아 프로세서는 복수의 코아(프로세싱 유닛)을 구비하는 프로세서로서, 멀티코아 프로세서가 사용되는 이유는 코아의 개수를 늘림으로써, 전체 프로세서의 성능을 개선하기 위함이다. 그러나, 다양한 이유로 인하여, 코아의 개수를 늘이더라도 전체 프로세서의 성능이 이에 비례하여 증가하지 아니하고 있다.
본 발명의 발명자는 이러한 문제점을 개선하기 위하여 지속적인 개발을 수행하고 있으며, 이에 기반하여 한국특허공개번호 제10-2019-0132295호, 제10-2018-0057950호, 제10-2018-0058166호, 제10-2018-0058167호, 제10-2018-0007523호, 제10-2018-0007652호 및 한국특허등록번호 제 10-1859294호의 발명을 수행한 바 있다.
한국특허공개번호: 10-2019-0132295, 10-2018-0057950, 10-2018-0058166, 10-2018-0058167, 10-2018-0007523, 10-2018-0007652 한국특허등록번호: 10-1859294
종래기술에 의한 병렬 처리 장치는 합산기와 곱셈기를 별도로 구비하고 있다. 이는 병렬 처리 장치의 효율을 저하시킨다. 보다 구체적으로, 곱셈 연산이 많이 요구되는 때에는 병렬 처리 장치의 모든 곱셈기가 활용되나 일부 덧셈기는 활용되지 않는다. 또한 덧셈 연산이 많이 요구되는 때에는 병렬 처리 장치의 모든 덧셈기가 활용되나, 일부 곱셈기는 활용되지 않는다. 또한 종래기술에 의한 병렬 처리 장치는 처리 유닛들 간의 데이터 교환이 용이하지 않는 측면이 있다. 이는 병렬 처리 장치 전체의 성능을 저하시킨다.
본 개시는 종래기술의 문제점을 해결하기 위한 것으로서, 병렬 처리 장치의 처리 유닛이 곱셈 연산과 덧셈 연산을 모두 수행 가능하게 설계함으로써, 병렬 처리 장치의 효율을 증가시키는 것을 목표로 한다. 또한 본 개시는 처리 유닛들 간의 데이터 교환을 용이하게 함으로써 전체 병렬 처리 장치의 효율을 증가시키는 것을 목표로 한다. 또한 본 개시는 각 처리 유닛이 시간에 따라 다양한 연산들을 수행할 수 있도록 함으로써 전체 병렬 처리 장치의 효율을 증가시키는 것을 목표로 한다. 또한 본 개시는 상술한 개선을 가짐에도 불구하고 전체적인 하드웨어의 복잡도를 크게 증가시키 않는 것을 목표로 한다.
일실시예에 의한 병렬 처리 장치는 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})을 입력받고, 제1 내지 제N 출력들(M1, M2, ... MN)을 출력한다. 상기 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})은 복수의 제1 신호들(X1, X2, ... XN) 및 복수의 제2 신호들(Y1, Y2, ... YN)을 포함하고, 상기 N은 4 이상의 자연수이다. 상기 병렬 처리 장치는 합산 모드로 동작하는 경우에는 i번째 제1 신호(Xi)를 상기 복수의 제2 신호들(Y1, Y2, ... YN)의 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하고, 곱셈 모드로 동작하는 경우에는 상기 제1 신호들(X1, X2, ... XN)이 (i-1)비트만큼 쉬프트된 신호들((X1<<(i-1)), (X2<<(i-1)), ... (XN<<(i-1)))을 상기 제2 신호들(Y1, Y2, ... YN)의 상기 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 상기 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하되, 상기 i는 1 이상이고, N 이하의 자연수인 전처리부; 및 상기 제1 내지 제N 출력들(M1, M2, ... MN)을 출력하는 상기 합산기들(SUM1, SUM2, ... SUMN)을 포함하며, 상기 합산기들(SUM1, SUM2, ... SUMN) 중 각 합산기는 전달된 신호들을 합산하는 주처리부를 포함한다.
일실시예에 의한 병렬 처리 장치는 전처리 유닛들을 포함하는 전처리부; 및 합산기들을 포함하는 주처리부를 포함하며, 상기 전처리 유닛들 중 각 전처리 유닛은 선택 연산부 및 쉬프트 연산부를 포함하며, 상기 선택 연산부는 상기 전처리 유닛들 중 대응하는 전처리 유닛이 합산 모드로 동작하는 경우에 동작하며, 제1 신호들을 제2 신호들 중 대응하는 제2 신호의 비트들에 따라 상기 합산기들 중 대응하는 합산기로 각각 전달하는 기능을 수행하며, 상기 쉬프트 연산부는 상기 대응하는 전처리 유닛이 곱셈 모드로 동작하는 경우에 동작하며, 상기 제1 신호들 중 대응하는 제1 신호가 쉬프트된 신호들을 상기 비트들에 따라 상기 대응하는 합산기로 각각 전달한다.
일실시예에 의한 병렬 처리 장치는 전처리 유닛들을 포함하는 전처리부; 및 합산기들을 포함하는 주처리부를 포함하며, 상기 전처리 유닛들 중 각 전처리 유닛은 선택 연산부 및 쉬프트 연산부를 포함하며, 상기 선택 연산부는 상기 전처리 유닛들 중 대응하는 전처리 유닛이 합산 모드로 동작하는 경우에 동작하며, 제1 신호들 중 대응하는 일부 제1 신호들을 제2 신호들 중 대응하는 제2 신호의 비트들에 따라 상기 합산기들 중 대응하는 합산기로 각각 전달하는 기능을 수행하며, 상기 쉬프트 연산부는 상기 대응하는 전처리 유닛이 곱셈 모드로 동작하는 경우에 동작하며, 상기 제1 신호들 중 대응하는 제1 신호가 쉬프트된 신호들을 상기 비트들에 따라 상기 대응하는 합산기로 각각 전달한다.
본 개시에 의한 병렬 처리 장치는 단위 유닛이 곱셈 연산과 덧셈 연산을 모두 수행 가능하므로, 높은 병렬 처리 효율을 가진다. 또한, 병렬 처리 장치는 부가적으로 변위 연산 및 쉬프트 연산도 수행할 수 있다는 장점이 있다. 또한 병렬 처리 장치는 처리 유닛들 간의 용이한 데이터 교환을 가능케 한다는 장점을 가진다. 또한 병렬 처리 장치는 각 처리 유닛이 시간에 따라 다양한 연산을 수행할 수 있다는 장점을 가진다. 또한 병렬 처리 장치는 상술한 개선에도 불구하고 하드웨어의 복잡도가 크게 증가하지 아니한다는 장점을 가진다.
도 1은 제1 실시예에 의한 병렬 처리 장치를 나타내는 도면이다.
도 2는 제1 실시예의 i번째 전처리 유닛의 일례를 설명하기 위한 도면이다.
도 3은 제2 실시예에 의한 병렬 처리 장치를 나타내는 도면이다.
이하 설명하는 기술은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 이하 설명하는 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 이하 설명하는 기술의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 이하 설명하는 기술의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함한다" 등의 용어는 설시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
도 1은 제1 실시예에 의한 병렬 처리 장치를 나타내는 도면이다. 도 1을 참조하면, 병렬 처리 장치는 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})을 입력받고, 제1 내지 제N 출력들(M1, M2, ... MN)을 출력한다. 여기에서 N은 4이상의 자연수를 의미하며, 일례로 N은 32일 수 있다. 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})은 제1 신호들(X1, X2, ... XN)과 제2 신호들(Y1, Y2, ... YN)을 구비한다. 병렬 처리 장치는 전처리부(100)와 주처리부(200)를 구비한다. 병렬 처리장치는 지연부(300)와 선택부(400)를 더 구비할 수 있다.
전처리부(100)가 합산 모드로 동작하는 경우에는 i번째 입력({Xi, Yi})의 제1 신호(Xi)를 제2 신호들(Y1, Y2, ... YN)의 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 주처리부(200)의 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달한다. 여기에서 i는 1 이상이고 N 이하인 자연수이다. 제1 합산기(SUM1)의 입력들이 S1_1, S1_2, ... S1_N이고, 제2 합산기(SUM2)의 입력들이 S2_1, S2_2, ... S2_N이고, 제3 합산기(SUM3)의 입력들이 S3_1, S3_2, ... S3_N이라고 하자. 이때 전처리부(100)의 합산 모드 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Y1[1] ? X1 : 0) => S1_1,
(Y1[2] ? X2 : 0) => S1_2,
...
(Y1[N] ? XN : 0) => S1_N,
(Y2[1] ? X1 : 0) => S2_1,
(Y2[2] ? X2 : 0) => S2_2,
...
(Y2[N] ? XN : 0) => S2_N,
...
(YN[1] ? X1 : 0) => SN_1,
(YN[2] ? X2 : 0) => SN_2,
...
(YN[N] ? XN : 0) => SN_N
전처리부(100)가 곱셈 모드로 동작하는 경우에는 제1 신호들(X1, X2, ... XN)이 (i-1)비트만큼 쉬프트된 신호들((X1<<(i-1)), (X2<<(i-1)), ... (XN<<(i-1)))을 제2 신호들(Y1, Y2, ... YN)의 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달한다. 전처리부(100)의 곱셈 모드 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Y1[1] ? (X1 << 0) : 0)=> S1_1,
(Y1[2] ? (X1 << 1) : 0)=> S1_2,
...
(Y1[N] ? (X1 << (N-1)) : 0)=> S1_N,
(Y2[1] ? (X2 << 0) : 0)=> S2_1,
(Y2[2] ? (X2 << 1) : 0)=> S2_2,
...
(Y2[N] ? (X2 << (N-1)) : 0)=> S2_N,
...
(YN[1] ? (XN << 0) : 0)=> SN_1,
(YN[2] ? (XN << 1) : 0)=> SN_2,
...
(YN[N] ? (XN << (N-1)) : 0)=> SN_N
일례로, 동작 모드 선택 신호들(SF1, SF2, ... SFN)에 따라 전처리부(100)가 합산 모드 또는 곱셈 모드로 동작한다. 일례로 병렬 처리 장치 전체에 대하여 1개의 동작 모드 선택 신호가 할당될 수 있다. 이 경우에는 병렬 처리 장치 전체가 합산 모드로 동작하거나 곱셈 모드로 동작하여야 한다. 다른 예로 N개의 동작 모드 선택 신호들(SF1, SF2, ... SFN)이 할당 될 수 있다. 이 경우, N개의 출력들(M1, M2, ... MN) 중 일부는 합산 모드에 따라 얻어진 결과이고, 나머지는 곱셈 모드에 따라 얻어진 결과가 되도록 설정될 수 있다. 가령 N이 4인 경우, M1, M2, M3는 곱셈 모드로 동작하고 M4는 합산 모드로 동작하도록 동작 모드 선택 신호들(SF1, SF2, SF3, SF4)이 설정될 수 있다.
일례로, 전처리부(100)는 복수의 전처리 유닛들(150_1, 150_2, ... 150_N)을 포함한다. 복수의 전처리 유닛들(150_1, 150_2, ... 150_N)은 선택 연산부들(110_1, 110_2, ... 110_N) 및 쉬프트 연산부들(120_1, 120_2, ... 120_N)을 포함한다. 전처리 유닛(150_i)은 선택 연산부(110_i) 및 쉬프트 연산부(120_i)를 포함한다.
선택 연산부(110_i)는 전처리 유닛(150_i)이 합산 모드로 동작하는 경우에 동작한다. 선택 연산부(110_i)는 제1 신호들(X1, X2, ... XN)을 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 합산기(SUMi)에 전달하는 기능을 수행한다. 이때 선택 연산부(110_i)의 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Yi[1] ? X1 : 0) => Si_1,
(Yi[2] ? X2 : 0) => Si_2,
...
(Yi[N] ? XN : 0) => Si_N,
쉬프트 연산부(120_i)는 전처리 유닛(150_i)이 곱셈 모드로 동작하는 경우에 동작한다. 쉬프트 연산부(120_i)는 제1 신호(Xi)가 0, 1, ... (N-1) 비트만큼 쉬프트된 신호들((Xi<<0), (Xi<<1), ... (Xi<<(N-1)))을 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 합산기(SUMi)에 전달하는 기능을 수행한다. 이때 쉬프트 연산부(120_i)의 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Yi[1] ? (Xi << 0) : 0)=> Si_1,
(Yi[2] ? (Xi << 1) : 0)=> Si_2,
...
(Yi[N] ? (Xi << (N-1)) : 0)=> Si_N,
전처리 유닛(150_i)은 동작 모드 선택 신호(SFi)에 따라 선택 연산부(110_i)를 동작시키거나 쉬프트 연산부(120_i)를 동작시킨다. 일례로 SFi가 0인 경우가 선택 연산부(110_i)의 동작을 의미하고, 1인 경우가 쉬프트 연산부(120_i)의 동작을 의미하는 경우에, SF1=0, SF2=0 및 SFN=1은 제1 전처리 유닛(150_1), 제2 전처리 유닛(150_2) 및 제N 전처리 유닛(150_N)이 각각 선택 연산부(120_1), 선택 연산부(110_2) 및 쉬프트 연산부(110_N)를 동작시킴을 의미한다.
주처리부(200)는 합산기들(SUM1, SUM2, ... SUMN)을 포함한다. i번째 합산기(Mi)는 전달된 신호들(Si_1, Si_2, ... Si_N)을 합산하며, 합산된 결과를 i번째 출력(Mi)으로서 출력한다. 주처리부(200)의 동작은 일례로 아래와 같은 Verilog 언어로 표현될 수 있다.
S1_1 + S1_2 + ... S1_N => M1,
S2_1 + S2_2 + ... S2_N => M2,
...
SN_1 + SN_2 + ... SN_N => MN,
지연부(300)는 클록 신호(CLK)에 따라 제1 내지 제N 출력들(M1, M2, ... MN)을 지연하여 출력한다. 이를 위하여 지연부(300)는 복수의 지연 유닛들(DU1, DU2, ... DUN)을 포함한다. 지연부(300)에서 출력되는 신호들(D1, D2, ... DN)은 제1 내지 제N 출력들(M1, M2, ... MN)에 각각 대응한다.
선택부(400)는 메모리(미도시)로부터 전달된 신호들(R1, R2, ... RN) 및 지연부(300)에서 출력되는 신호들(D1, D2, ... DN) 중에서 입력 제어 신호들(SI1, SI2, ... SIN)에 따라 선택된 신호들을 제1 신호들(X1, X2, ... XN)로서 출력한다. 예로서, 도면에 표현된 바와 같이, 제1 신호(Xi)는 메모리로부터 전달된 신호(Ri)와 지연부(300)에서 출력된 신호(Di) 중에서 입력 제어 신호(SIi)에 따라 선택된 신호일 수 있다. 다른 예로 제1 신호(Xi)는 메모리로부터 전달된 신호(Ri)와 지연부(300)에서 출력된 2개의 신호들(D(i-1), Di) 중에서 입력 제어 신호(SIi)에 따라 선택된 신호일 수 있다. 즉, 제1 신호(Xi)는 메모리로부터 전달된 신호(Ri), i번째 출력(Mi)에 대응하는 지연부 출력 신호(Di) 및 (i-1)번째 출력(M(i-1))에 대응하는 지연부 출력 신호(D(i-1)) 중에서 입력 제어 신호(SIi)에 따라 선택된 신호일 수 있다. 메모리(미도시)는 일례로 복수의 뱅크를 구비할 수 있다. 일례로 메모리는 N개의 뱅크를 구비하고, N개의 뱅크는 N개의 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})에 각각 연결될 수 있다. 또한 메모리는 2*N개의 뱅크들을 구비하고, 이들 중 N개의 뱅크들은 N개의 제1 신호들(X1, X2, ... XN)에 각각 연결되고, 나머지 N개의 뱅크들을 N개의 제2 신호들(Y1, Y2, ... YN)에 각각 연결될 수 있다.
병렬 처리 장치는 이와 같은 구성을 가짐으로써, 1개의 하드웨어로 다양한 연산을 수행할 수 있다. 일례로 병렬 처리 장치는 부분 합산 연산을 수행할 수 있다. 여기에서 부분 합산이란 제1 신호들(X1, X2, ... XN)의 전체 또는 일부를 합산한다는 의미이다. 부분 합산 연산을 수행하기 위해서는 전처리부(100)는 합산 모드로 동작해야 한다. 이 때, i번째 출력(Mi)은 제1 신호들(X1, X2, ... XN)중 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 선택된 신호들의 합산에 대응한다. 가령, N이 4이고, 제2 신호들(Y1, Y2, Y3, Y4)가 이진수로 1011, 1100, 0010, 0111이면, 출력들(M1, M2, M3, M4)은 X4+X2+X1, X4+X3, X2, X3+X2+X1에 각각 해당한다. 이와 같이 전처리부(100)가 합산 모드로 동작하는 경우에 동시에 N개의 부분 합산 연산을 수행할 수 있다.
전처리부(100)가 합산 모드로 동작할 때, 변위 연산도 수행될 수 있다. 여기서 변위 연산이라 함은 제1 신호(Xi)를 출력 신호들(M1, M2, ... MN)로 전달함에 있어서 위치를 변경하는 것을 의미한다. 가령 N이 4이고, 제2 신호들(Y1, Y2, Y3, Y4)이 이진수로 1000, 0100, 0010, 0001이면, 출력들(M1, M2, M3, M4)은 X4, X3, X2, X1에 각각 해당한다. 따라서 제1 신호들(X1, X2, X3, X4)가 출력들(M1, M2, M3, M4)로 전달되되 그 위치가 변경되어 전달된다.
상술한 바와 같이 병렬 처리 장치가 부분 합산 연산 및 변위 연산을 수행함에 있어서, 처리 유닛들 간의 데이터 교환을 용이하게 한다. 여기에서 i번째 처리 유닛은 i번째 전처리 유닛과 i번째 합산기를 포함하는 개념이다. 예로서 제1 처리 유닛(150_1, SUM1)은 첫째 제1 신호(X1)뿐만 아니라 둘째 내지 N번째 제1 신호들(X2, ... XN)을 입력받아 부분 합산을 수행할 수 있다. 또한 제2 처리 유닛(150_2, SUM2)은 둘째 제1 신호(X2) 이외의 제1 신호인 예로서 N번째 제1 신호(XN)을 전달받을 수 있다.
일례로 병렬 처리 장치는 곱셈 연산을 수행할 수 있다. 곱셈 연산을 수행하기 위해서는 전처리부(100)는 곱셈 모드로 동작하여야 한다. 이 때, i번째 출력(Mi)이 제1 신호(Xi)와 제2 신호(Yi)의 곱(Xi*Yi)에 대응한다. 가령 N이 4이면, 출력들(M1, M2, M3, M4)은 X1*Y1, X2*Y2, X3*Y3, X4*Y4에 각각 해당한다. 이와 같이, 전처리부(100)가 곱셈 모드로 동작하는 경우에 동시에 N개의 곱셈을 수행할 수 있다.
전처리부(100)가 곱셈 모드로 동작할 때, 쉬트프 연산도 수행될 수 있다. 가령 N이 4이고, 제2 신호들(Y1, Y2, Y3, Y4)이 이진수로 1000, 0100, 0010, 0001이면, 출력들(M1, M2, M3, M4)은 (Y1<<3), (Y2<<2), (Y3<<1), (Y4<<0)에 각각 해당한다.
병렬 처리 장치는 다양한 연산을 동시에 수행할 수도 있다. 일례로 N이 4일 때, 다음과 같은 연산을 동시에 수행할 수 있다.
M1 = X2 + X3 + X4 [부분 합산 연산]
M2 = X1 [변위 연산]
M3 = X3 * Y3 [곱셈 연산]
M4 = (X4 << 2) [쉬프트 연산]
이를 위해선 제1 및 제2 전처리 유닛들(150_1, 150_2)이 합산 모드가 되도록 선택 신호들(SF1, SF2)이 설정되어야 하며, 제3 및 제4 전처리 유닛들(150_3, 150_4)이 곱셈 모드가 되도록 선택 신호들(SF3, SF4)이 설정되어야 한다. 또한, 부분 합산 연산이 위와 같이 수행될 수 있도록 Y1이 1110로 설정되어야 하고, 변위 연산이 위와 같이 수행될 수 있도록 Y2가 0001로 설정되어야 하고, 쉬프트 연산이 위와 같이 수행될 수 있도록 Y4가 0100로 설정되어야 한다.
또한 병렬 처리 장치는 선택 신호(SFi) 및 제2 신호(Yi)를 변경함으로써 병렬 처리 장치의 동작을 매 차례마다 독립적으로 변경할 수 있다. 가령 첫째 차례에서 상술한 바와 같이 M1, M2, M3, M4가 각각 부분 합산 연산, 변위 연산, 곱셈 연산 및 쉬프트 연산을 수행한 후에, 둘째 차례에서 아래와 같이 곱셈 연산, 곱셈 연산, 부분 합산 연산 및 부분 합산 연산을 수행할 수 있다.
M1 = X1 * Y1 [곱셈 연산]
M2 = X2 * Y2 [곱셈 연산]
M3 = X1 + X2 + X3 + X4 [부분 합산 연산]
M4 = X2 + X4 [부분 합산 연산]
이를 위해선 제1 및 제2 전처리 유닛들(150_1, 150_2)이 곱셈 모드가 되도록 선택 신호들(SF1, SF2)이 설정되어야 하며, 제3 및 제4 전처리 유닛들(150_3, 150_4)이 합산 모드가 되도록 선택 신호들(SF3, SF4)이 설정되어야 한다. 또한, 부분 합산 연산이 위와 같이 수행될 수 있도록 Y3 및 Y4가 각각 1111 및 1010로 설정되어야 한다.
이와 같이 제1 실시예에 의한 병렬 처리 장치는 N개의 독립적인 연산들이 동시에 수행될 수 있으며, 또한 N개의 연산들이 매 차례마다 독립적으로 변경될 수 있다. 이는 병렬 처리 장치의 효율을 극대화 시킬 수 있다.
만일 복수의 부분 합산 연산들을 수행하는 부분 합산 병렬 처리부, 복수의 변위 연산들을 수행하는 변위 병렬 처리부, 복수의 곱셈 연산들을 수행하는 곱셈 병렬 처리부 및 복수의 쉬프트 연산들을 수행하는 쉬프트 병렬 처리부를 구비하는 병렬 처리 장치가 있다고 가정하면, 곱셈 연산을 많이 필요로 하는 순간에는 곱셈 병렬 처리부가 100% 활용될 수 있으나, 부분 합산 병렬 처리부, 변위 병렬 처리부 및 쉬프트 병렬 처리부의 활용도는 저조할 것이다. 또한 부분 합산 연산을 많이 필요로 하는 순간에는 부분 합산 병렬 처리부가 100% 활용될 수 있으나, 변위 병렬 처리부, 곱셈 병렬 처리부 및 쉬프트 병렬 처리부의 활용도는 저조할 것이다.
이와 달리 제1 실시예에 의한 병렬 처리 장치는 매 순간마다 전처리 유닛들(150_1, 150_2, ... 150_N)에 의하여 수행되는 연산들을 변경함으로써 병렬 처리 장치의 활용도를 극대화 시킬 수 있다. 가령, 곱셈 연산을 많이 필요로 하는 순간에는 전처리 유닛들(150_1, 150_2, ... 150_N) 중 많은 부분들이 곱셈 연산을 수행하고, 나머지 부분들이 다른 연산들을 수행하도록 설정함으로써 전처리 유닛들(150_1, 150_2, ... 150_N)의 대부분이 활용되도록 할 수 있다. 또한, 부분 합산 연산을 많이 필요로 하는 순간에는 전처리 유닛들(150_1, 150_2, ... 150_N) 중 많은 부분들이 부분 합산 연산을 수행하고, 나머지 부분들이 다른 연산들을 수행하도록 설정함으로써 전처리 유닛들(150_1, 150_2, ... 150_N)의 대부분이 활용되도록 할 수 있다.
도 2는 제1 실시예의 i번째 전처리 유닛의 일례를 설명하기 위한 도면이다. 도 2를 참조하면 전처리 유닛은 선택 연산부(110_i) 및 쉬프트 연산부(120_i)를 포함한다.
선택 연산부(110_i)는 복수의 역다중화부들(DM1, DM2, ... DMN)을 포함한다. 복수의 역다중화부들(DM1, DM2, ... DMN)은 복수의 제1 신호들(X1, X2, ... XN) 및 0 중에서 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 선택된 신호들을 각각 출력한다. 예로서 제1 역다중화부(DM1)은 제1 신호(X1) 및 0 중에서 제2 신호(Yi)의 첫째 비트(Yi[1])에 따라 선택된 신호를 출력하고, 제2 역다중화부(DM2)은 제1 신호(X2) 및 0 중에서 제2 신호(Yi)의 둘째 비트(Yi[2])에 따라 선택된 신호를 출력하고, 제N 역다중화부(DMN)은 제1 신호(XN) 및 0 중에서 제2 신호(Yi)의 N째 비트(Yi[N])에 따라 선택된 신호를 출력한다.
쉬프트 연산부(120_i)는 복수의 쉬프트 유닛들(SH1, SH2, ... SHN)을 포함한다. 복수의 쉬프트 유닛들(SH1, SH2, ... SHN)은 제1 신호(Xi)가 쉬프트된 신호들 및 0 중에서 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 선택된 신호들을 각각 출력한다. 예로서 제1 쉬프트 유닛(SH1)은 제1 신호(Xi)가 0비트만큼 쉬프트된 신호(Xi<<0) 및 0 중에서 제2 신호(Yi)의 첫째 비트(Yi[1])에 따라 선택된 신호를 출력하고, 제2 쉬프트 유닛(SH2)은 제1 신호(Xi)가 1비트만큼 쉬프트된 신호(Xi<<1) 및 0 중에서 제2 신호(Yi)의 둘째 비트(Yi[2])에 따라 선택된 신호를 출력하고, 제N 쉬프트 유닛(SHN)은 제1 신호(Xi)가 (N-1)비트만큼 쉬프트된 신호(Xi<<(N-1)) 및 0 중에서 제2 신호(Yi)의 N째 비트(Yi[N])에 따라 선택된 신호를 출력한다.
선택 신호(SFi)에 따라 선택 연산부(110_i) 및 쉬프트 연산부(120_i) 중 어느 하나의 연산부가 동작한다. 예로서 선택 신호(SFi)가 0인 경우 선택 연산부(110_i)가 동작하고, 쉬프트 연산부(120_i)는 동작하지 아니한다. 이때 선택 연산부(110_i)는 역다중화부들(DM1, DM2, ... DMN)로부터 출력된 신호들을 합산기 입력들(Si_1, Si_2, ... Si_N)로서 합산기(SUMi)로 전달하고, 쉬프트 연산부(120_i)는 고 임피던스 신호들(high impedance signals)를 출력한다. 또한 선택 신호(SFi)가 1인 경우 선택 연산부(110_i)가 동작하지 아니하고, 쉬프트 연산부(120_i)는 동작한다. 이때 선택 연산부(110_i)는 고 임피던스 신호들(high impedance signals)를 출력하고, 쉬프트 연산부(120_i)는 쉬프트 유닛들(SH1, SH2, ... SHN)로부터 출력된 신호들을 합산기 입력들(Si_1, Si_2, ... Si_N)로서 합산기(SUMi)로 전달한다.
도면과 달리, 별도의 역다중화부들을 추가하여 선택 신호(SFi)에 따라 선택 연산부(110_i) 출력들 및 쉬프트 연산부(120_i) 출력들 중 일부를 선택할 수 있다. 예로서 선택 신호(SFi)가 합산 모드를 의미하는 경우 별도의 역다중화부들은 선택 연산부(110_i) 출력들을 합산기(SUMi)로 전달하고, 곱셈 모드를 의미하는 경우 별도의 역다중화부들은 쉬프트 연산부(120_i) 출력들을 합산기(SUMi)로 전달할 수 있다.
도 3은 제2 실시예에 의한 병렬 처리 장치를 나타내는 도면이다. 도 3을 참조하면, 병렬 처리 장치는 제1 내지 제P 입력들({X1, Y1}, ... {X(p-1), Y(p-1)}, {Xp, Yp}, {X(p+1), Y(p+1)}, ... {XP, YP})을 입력받고, 제1 내지 제P 출력들(M1, ... M(p-1), Mp, M(p+1) ... MP)을 출력한다. 여기에서 P은 4이상의 자연수를 의미하며, 일례로 P는 1024일 수 있다. 또한 p는 1 이상이고 P 이하인 자연수를 의미한다. 제1 내지 제P 입력들({X1, Y1}, ... {X(p-1), Y(p-1)}, {Xp, Yp}, {X(p+1), Y(p+1)}, ... {XP, YP})은 제1 신호들(X1, ... X(p-1), Xp, X(p+1), ... XP)과 제2 신호들(Y1, ... Y(p-1), Yp, Y(p+1) ... YP)을 구비한다. 병렬 처리 장치는 전처리부(100A)와 주처리부(200A)를 구비한다. 병렬 처리장치는 지연부(300A)와 선택부(400A)를 더 구비할 수 있다.
전처리부(100A)는 복수의 전처리 유닛들(... 150_(p-1), 150_p, 150(p+1), ...)을 포함한다. 복수의 전처리 유닛들(... 150_(p-1), 150_p, 150(p+1), ...)은 선택 연산부들(... 110_(p-1), 110_p, 110_(p+1), ...) 및 쉬프트 연산부들(... 120_(p-1), 120_p, 120_(p+1), ...)을 포함한다. 전처리 유닛(150_p)은 선택 연산부(110_p) 및 쉬프트 연산부(120_p)를 포함한다.
선택 연산부(110_p)는 전처리 유닛(150_p)이 합산 모드로 동작하는 경우에 동작한다. 선택 연산부(110_p)는 전처리 유닛(150_p)에 대응하는 제1 신호(Xp) 및 이에 인접한 제1 신호들(예: X(p-Q/2+1), ... X(p-1), X(p+1), ... X(p+Q/2)을 제2 신호(Yp)의 비트들(Yp[1], Yp[2], ... Yp[Q])에 따라 합산기(SUMp)에 전달하는 기능을 수행한다. 여기에서 Q는 4 이상의 짝수를 의미하며, 일례로 Q는 32일 수 있다. 또한 q는 1 이상이고 Q 이하인 자연수를 의미한다. 이때 선택 연산부(110_p)의 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Yp[1] ? X(p-Q/2+1) : 0) => Si_1,
(Yp[2] ? X(p-Q/2+2) : 0) => Si_2,
...
(Yp[Q] ? X(p+Q/2) : 0) => Si_Q,
쉬프트 연산부(120_p)는 전처리 유닛(150_p)이 곱셈 모드로 동작하는 경우에 동작한다. 쉬프트 연산부(120_p)는 제1 신호(Xp)가 0, 1, ... (Q-1) 비트만큼 쉬프트된 신호들((Xp<<0), (Xp<<1), ... (Xp<<(Q-1)))을 제2 신호(Yp)의 비트들(Yp[1], Yp[2], ... Yp[Q])에 따라 합산기(SUMp)에 전달하는 기능을 수행한다. 이때 쉬프트 연산부(120_p)의 동작은 일례로 아래와 같이 Verilog 언어로 표현될 수 있다.
(Yp[1] ? (Xp << 0) : 0)=> Sp_1,
(Yp[2] ? (Xp << 1) : 0)=> Sp_2,
...
(Yp[Q] ? (Xp << (Q-1)) : 0)=> Sp_Q,
전처리 유닛(150_p)은 동작 모드 선택 신호(SFp)에 따라 선택 연산부(110_p)를 동작시키거나 쉬프트 연산부(120_p)를 동작시킨다.
주처리부(200A)는 합산기들(... SUM(p-1), SUMp, SUM(p+1), ...)을 포함한다. p번째 합산기(Mp)는 전달된 신호들(Sp_1, Sp_2, ... Si_Q)을 합산하며, 합산된 결과를 p번째 출력(Mp)으로서 출력한다. 주처리부(200A)의 동작은 일례로 아래와 같은 Verilog 언어로 표현될 수 있다.
...
S(p-1)_1 + S(p-1)_2 + ... S(p-1)_Q => M(p-1),
Sp_1 + Sp_2 + ... Sp_Q => Mp, ...
S(p+1)_1 + S(p+1)_2 + ... S(p+1)_Q => M(p+1),
...
지연부(300A)는 클록 신호(CLK)에 따라 출력들(... M(p-1), Mp, M(p+1), ...)을 지연하여 출력한다. 이를 위하여 지연부(300A)는 복수의 지연 유닛들(... DU(p-1), DUp, DU(p+1), ...)을 포함한다. 지연부(300A)에서 출력되는 신호들(... D(p-1), Dp, D(p+1), ...)은 출력들(... M(p-1), Mp, M(p+1), ...)에 각각 대응한다.
선택부(400A)는 메모리(미도시)로부터 전달된 신호들(... R(p-1), Rp, R(p+1), ...) 및 지연부(300A)에서 출력되는 신호들(... D(p-1), Dp, D(p+1), ...) 중에서 입력 제어 신호들(... SI(p-1), SIp, SI(p+1), ...)에 따라 선택된 신호들을 제1 신호들(... X(p-1), Xp, X(p+1), ...)로서 출력한다. 일례로 메모리는 P개의 뱅크를 구비하고, P개의 뱅크는 P개의 입력들({X1, Y1}, {X2, Y2}, ... {XP, YP})에 각각 연결될 수 있다. 또한 메모리는 2P개의 뱅크들을 구비하고, 이들 중 P개의 뱅크들은 P개의 제1 신호들(X1, X2, ... XP)에 각각 연결되고, 나머지 P개의 뱅크들을 P개의 제2 신호들(Y1, Y2, ... YP)에 각각 연결될 수 있다.

Claims (22)

  1. 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})을 입력받고, 제1 내지 제N 출력들(M1, M2, ... MN)을 출력하되, 상기 제1 내지 제N 입력들({X1, Y1}, {X2, Y2}, ... {XN, YN})은 복수의 제1 신호들(X1, X2, ... XN) 및 복수의 제2 신호들(Y1, Y2, ... YN)을 포함하고, 상기 N은 4 이상의 자연수인 병렬 처리 장치에 있어서,
    합산 모드로 동작하는 경우에는 i번째 제1 신호(Xi)를 상기 복수의 제2 신호들(Y1, Y2, ... YN)의 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하고, 곱셈 모드로 동작하는 경우에는 상기 제1 신호들(X1, X2, ... XN)이 (i-1)비트만큼 쉬프트된 신호들((X1<<(i-1)), (X2<<(i-1)), ... (XN<<(i-1)))을 상기 제2 신호들(Y1, Y2, ... YN)의 상기 i번째 비트들(Y1[i], Y2[i], ... YN[i])에 따라 상기 합산기들(SUM1, SUM2, ... SUMN)에 각각 전달하되, 상기 i는 1 이상이고, N 이하의 자연수인 전처리부; 및
    상기 제1 내지 제N 출력들(M1, M2, ... MN)을 출력하는 상기 합산기들(SUM1, SUM2, ... SUMN)을 포함하며, 상기 합산기들(SUM1, SUM2, ... SUMN) 중 각 합산기는 전달된 신호들을 합산하는 주처리부를 포함하는 병렬 처리 장치.
  2. 제1 항에 있어서,
    상기 전처리부는
    상기 합산 모드로 동작하는 경우에 상기 제1 신호들(X1, X2, ... XN)을 i번째 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 i번째 합산기(SUMi)에 각각 전달하는 선택 연산부; 및
    상기 쉬프트 모드로 동작하는 경우에 상기 i번째 제1 신호(Xi)가 0, 1, ... (N-1) 비트만큼 쉬프트된 신호들((Xi<<0), (Xi<<1), ... (Xi<<(N-1)))을 상기 i번째 제2 신호(Yi)의 상기 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 상기 i번째 합산기(SUMi)에 전달하는 쉬프트 연산부를 포함하는 병렬 처리 장치.
  3. 제1 항에 있어서,
    클록 신호에 따라 상기 출력들(M1, M2, ... MN)을 지연하여 출력하는 지연부; 및
    메모리로부터 전달된 신호들(R1, R2, ... RN) 및 상기 지연부에서 출력되는 신호들(D1, D2, ... DN) 중에서 입력 제어 신호에 따라 각각 선택된 신호들을 상기 제1 신호들(X1, X2, ... XN)로서 출력하는 선택부를 더 포함하는 병렬 처리 장치.
  4. 제1 항에 있어서,
    상기 전처리부가 합산 모드로 동작할 때, i번째 출력(Mi)이 상기 제1 신호들(X1, X2, ... XN)중 i번째 제2 신호(Yi)의 비트들(Yi[1], Yi[2], ... Yi[N])에 따라 선택된 신호들의 합산에 대응하는 병렬 처리 장치.
  5. 제1 항에 있어서,
    상기 전처리부가 곱셈 모드로 동작할 때, i번째 출력(Mi)이 상기 i번째 제1 신호(Xi)와 i번째 제2 신호(Yi)의 곱(Xi * Yi)에 대응하는 병렬 처리 장치.
  6. 전처리 유닛들을 포함하는 전처리부; 및
    합산기들을 포함하는 주처리부를 포함하며,
    상기 전처리 유닛들 중 각 전처리 유닛은 선택 연산부 및 쉬프트 연산부를 포함하며,
    상기 선택 연산부는 상기 전처리 유닛들 중 대응하는 전처리 유닛이 합산 모드로 동작하는 경우에 동작하며, 제1 신호들을 제2 신호들 중 대응하는 제2 신호의 비트들에 따라 상기 합산기들 중 대응하는 합산기로 각각 전달하는 기능을 수행하며,
    상기 쉬프트 연산부는 상기 대응하는 전처리 유닛이 곱셈 모드로 동작하는 경우에 동작하며, 상기 제1 신호들 중 대응하는 제1 신호가 쉬프트된 신호들을 상기 비트들에 따라 상기 대응하는 합산기로 각각 전달하는 병렬 처리 장치.
  7. 제6 항에 있어서,
    상기 선택 연산부는 역다중화부들을 포함하며, 상기 역다중화부들은 상기 제1 신호들 및 0 중에서 상기 비트들에 따라 선택된 신호들을 각각 출력하는 병렬 처리 장치.
  8. 제6 항에 있어서,
    상기 쉬프트 연산부는 쉬프트 유닛들을 포함하며, 상기 쉬프트 유닛들은 상기 쉬프트된 신호들 및 0 중에서 상기 비트들에 따라 각각 선택된 신호들을 출력하는 병렬 처리 장치.
  9. 제6 항에 있어서,
    클록 신호에 따라 상기 합산기들의 출력들을 지연하여 출력하는 지연부; 및
    메모리로부터 전달된 신호들 및 상기 지연부에서 출력되는 상기 신호들 중에서 입력 제어 신호들에 따라 각각 선택된 신호들을 상기 제1 신호들로서 각각 출력하는 선택부를 더 포함하는 병렬 처리 장치.
  10. 제6 항에 있어서,
    상기 대응하는 전처리 유닛이 합산 모드로 동작할 때, 상기 대응하는 합산기의 출력이 상기 제1 신호들 중에서 상기 대응하는 제2 신호의 상기 비트들에 따라 선택된 제1 신호들의 합산에 해당하는 병렬 처리 장치.
  11. 제6 항에 있어서,
    상기 대응하는 전처리 유닛이 곱셈 모드로 동작할 때, 상기 대응하는 합산기의 출력이 상기 대응하는 제1 신호와 상기 대응하는 제2 신호의 곱에 해당하는 병렬 처리 장치.
  12. 제6 항에 있어서,
    상기 전처리 유닛들 중 일부는 상기 합산 모드로 동작하고, 동시에 상기 전처리 유닛들 중 다른 일부는 상기 곱셈 모드로 동작하는 병렬 처리 장치.
  13. 제12 항에 있어서,
    상기 전처리 유닛들 중 어떤 전처리 유닛들이 합산 모드로 동작하고, 다른 어떤 전처리 모드들이 곱셈 모드로 동작할지는 시간에 따라 변경될 수 있는 병렬 처리 장치.
  14. 제6 항에 있어서,
    상기 대응하는 전처리 유닛은 복수의 선택 신호들 중 대응하는 선택 신호에 따라 상기 합산 모드 및 상기 곱셈 모드 중 어느 한 모드로 동작하는 병렬 처리 장치.
  15. 전처리 유닛들을 포함하는 전처리부; 및
    합산기들을 포함하는 주처리부를 포함하며,
    상기 전처리 유닛들 중 각 전처리 유닛은 선택 연산부 및 쉬프트 연산부를 포함하며,
    상기 선택 연산부는 상기 전처리 유닛들 중 대응하는 전처리 유닛이 합산 모드로 동작하는 경우에 동작하며, 제1 신호들 중 대응하는 일부 제1 신호들을 제2 신호들 중 대응하는 제2 신호의 비트들에 따라 상기 합산기들 중 대응하는 합산기로 각각 전달하는 기능을 수행하며,
    상기 쉬프트 연산부는 상기 대응하는 전처리 유닛이 곱셈 모드로 동작하는 경우에 동작하며, 상기 제1 신호들 중 대응하는 제1 신호가 쉬프트된 신호들을 상기 비트들에 따라 상기 대응하는 합산기로 각각 전달하는 병렬 처리 장치.
  16. 제15 항에 있어서,
    상기 대응하는 일부 제1 신호들은 상기 대응하는 제1 신호 및 상기 대응하는 제1 신호에 인접하는 제1 신호들을 포함하는 병렬 처리 장치.
  17. 제15 항에 있어서,
    클록 신호에 따라 상기 합산기들의 출력들을 지연하여 출력하는 지연부; 및
    메모리로부터 전달된 신호들 및 상기 지연부에서 출력되는 상기 신호들 중에서 입력 제어 신호들에 따라 각각 선택된 신호들을 상기 제1 신호들로서 출력하는 선택부를 더 포함하는 병렬 처리 장치.
  18. 제15 항에 있어서,
    상기 대응하는 전처리 유닛이 합산 모드로 동작할 때, 상기 대응하는 합산기의 출력이 상기 대응하는 일부 제1 신호들 중에서 상기 비트들에 따라 선택된 신호들의 합산에 해당하는 병렬 처리 장치.
  19. 제15 항에 있어서,
    상기 대응하는 전처리 유닛이 곱셈 모드로 동작할 때, 상기 대응하는 합산기의 출력이 상기 대응하는 제1 신호와 상기 대응하는 제2 신호의 곱에 해당하는 병렬 처리 장치.
  20. 제15 항에 있어서,
    상기 전처리 유닛들 중 일부는 상기 합산 모드로 동작하고, 동시에 상기 전처리 유닛들 중 다른 일부는 상기 곱셈 모드로 동작하는 병렬 처리 장치.
  21. 제20 항에 있어서,
    상기 전처리 유닛들 중 어떤 전처리 유닛들이 합산 모드로 동작하고, 다른 어떤 전처리 모드들이 곱셈 모드로 동작할지는 시간에 따라 변경될 수 있는 병렬 처리 장치.
  22. 제15 항에 있어서,
    상기 대응하는 전처리 유닛은 복수의 선택 신호들 중 대응하는 선택 신호에 따라 상기 합산 모드 및 상기 곱셈 모드 중 어느 한 모드로 동작하는 병렬 처리 장치.
KR1020210034494A 2021-03-17 2021-03-17 병렬 처리 장치 KR102428398B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020210034494A KR102428398B1 (ko) 2021-03-17 2021-03-17 병렬 처리 장치
PCT/KR2022/003672 WO2022197091A1 (ko) 2021-03-17 2022-03-16 병렬 처리 장치
KR1020220082620A KR20220130046A (ko) 2021-03-17 2022-07-05 병렬 처리 장치
US18/369,532 US20240004667A1 (en) 2021-03-17 2023-09-18 Parallel processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210034494A KR102428398B1 (ko) 2021-03-17 2021-03-17 병렬 처리 장치

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020220082620A Division KR20220130046A (ko) 2021-03-17 2022-07-05 병렬 처리 장치

Publications (1)

Publication Number Publication Date
KR102428398B1 true KR102428398B1 (ko) 2022-08-02

Family

ID=82845870

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020210034494A KR102428398B1 (ko) 2021-03-17 2021-03-17 병렬 처리 장치
KR1020220082620A KR20220130046A (ko) 2021-03-17 2022-07-05 병렬 처리 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020220082620A KR20220130046A (ko) 2021-03-17 2022-07-05 병렬 처리 장치

Country Status (3)

Country Link
US (1) US20240004667A1 (ko)
KR (2) KR102428398B1 (ko)
WO (1) WO2022197091A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265713A (ja) * 1992-03-18 1993-10-15 Omron Corp 四則演算装置
KR19980073563A (ko) * 1997-03-17 1998-11-05 구자홍 이산여현 변환 및 역변환 프로세서
KR101859294B1 (ko) 2016-11-23 2018-05-17 김태형 고속 푸리에 변환 연산 장치
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치
KR20190132295A (ko) 2018-05-18 2019-11-27 주식회사 모르미 연속적인 데이터 병렬처리가 가능한 병렬 처리장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200056898A (ko) * 2018-11-15 2020-05-25 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 덧셈 연산을 처리하는 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265713A (ja) * 1992-03-18 1993-10-15 Omron Corp 四則演算装置
KR19980073563A (ko) * 1997-03-17 1998-11-05 구자홍 이산여현 변환 및 역변환 프로세서
KR101859294B1 (ko) 2016-11-23 2018-05-17 김태형 고속 푸리에 변환 연산 장치
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치
KR20190132295A (ko) 2018-05-18 2019-11-27 주식회사 모르미 연속적인 데이터 병렬처리가 가능한 병렬 처리장치

Also Published As

Publication number Publication date
WO2022197091A1 (ko) 2022-09-22
US20240004667A1 (en) 2024-01-04
KR20220130046A (ko) 2022-09-26

Similar Documents

Publication Publication Date Title
FI118612B (fi) Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
US6035319A (en) Parallel-serial multiplier and accumulator
US4754421A (en) Multiple precision multiplication device
JP3667635B2 (ja) 演算装置
CN102541814B (zh) 用于数据通信处理器的矩阵计算装置和方法
US20010044816A1 (en) High-efficiency multiplier and multiplying method
US20060248137A1 (en) Apparatus and method for implementing floating point additive and shift operations
US10853034B2 (en) Common factor mass multiplication circuitry
EP1493098A1 (en) Optimized discrete fourier transform method and apparatus using prime factor algorithm
KR102428398B1 (ko) 병렬 처리 장치
US5661673A (en) Power efficient booth multiplier using clock gating
Hosseinzadeh et al. A novel multiple valued logic OHRNS modulo rn adder circuit
US4860249A (en) Multizone array processor implementing two sided zone buffers with each side being dynamically configured as a working or I/O side
KR102574824B1 (ko) 가변 비트 수를 지원하는 병렬 처리 장치
TWI235954B (en) Method and system for performing a multiplication operation and a device
JP2002175283A (ja) シストリックアレイ型演算器
US20220374690A1 (en) Artificial intelligence accelerators
US20240152322A1 (en) Artificial intelligence accelerators
JP2864597B2 (ja) ディジタル演算回路
RU2030783C1 (ru) Устройство для определения количества единиц в двоичном восьмиразрядном числе
JP2006186425A (ja) 畳み込み演算回路
CN114185514B (zh) 一种基于费马模数的多项式乘法器
KR20050067341A (ko) 고속 하마다드 변환 및 고속 푸리에 변환의 선택적 수행장치 및 방법
US20030128748A1 (en) Path search for CDMA implementation
KR0153959B1 (ko) 시스토릭 구조를 가진 디지탈 신호처리기에 적합한 시분할 곱셈기

Legal Events

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