WO2019221569A1 - 병렬 처리장치 - Google Patents

병렬 처리장치 Download PDF

Info

Publication number
WO2019221569A1
WO2019221569A1 PCT/KR2019/005980 KR2019005980W WO2019221569A1 WO 2019221569 A1 WO2019221569 A1 WO 2019221569A1 KR 2019005980 W KR2019005980 W KR 2019005980W WO 2019221569 A1 WO2019221569 A1 WO 2019221569A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
path network
output data
delay
operation path
Prior art date
Application number
PCT/KR2019/005980
Other languages
English (en)
French (fr)
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 US17/052,936 priority Critical patent/US11526432B2/en
Priority to CN201980030190.2A priority patent/CN112074810B/zh
Priority claimed from KR1020190058629A external-priority patent/KR102295677B1/ko
Publication of WO2019221569A1 publication Critical patent/WO2019221569A1/ko
Priority to US17/987,421 priority patent/US20230071941A1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/14Time supervision arrangements, e.g. real time clock
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • G06F9/38873Iterative single instructions for multiple data lanes [SIMD]
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory

Definitions

  • the technology described below relates to a parallel processing apparatus.
  • the parallel processing apparatus mainly operates in such a manner that a plurality of processors process a plurality of threads.
  • Such parallel processing devices are not suitable for performing very long sequential operations in parallel.
  • Korean Patent Registration No. 10-0835173 name of the invention: digital signal processing apparatus and method for multiplication accumulation operation.
  • the disclosed prior art is suitable for performing operations such as filters, fast Fourier transforms (FFTs), etc., but it is inadequate for continuously performing various operations that the CPU can perform.
  • the technology described below is intended to provide a parallel processing apparatus that can perform various sequential operations performed by the CPU in parallel and continuously.
  • a parallel processing apparatus capable of continuous data parallel processing receives a plurality of delay data output from a delay unit, a plurality of memory output data output from a memory, and a plurality of operation path network control signals, and receives a plurality of operation path network output data.
  • a delay processor for outputting a plurality of delay data obtained by delaying the plurality of arithmetic path network output data.
  • Each operation path network output data of the plurality of operation path network output data is the operation path network output data of the plurality of operation path network control signals with respect to the plurality of delay data and the plurality of memory output data.
  • 1 is an example showing the configuration of a parallel processing apparatus.
  • 2 is an example showing the configuration of a parallel processing unit.
  • 3 is an example for explaining the operation of the partial adder.
  • first, second, A, B, etc. may be used to describe various components, but the components are not limited by the terms, but merely for distinguishing one component from other components. Only used as For example, the first component may be referred to as the second component, and similarly, the second component may be referred to as the first component without departing from the scope of the technology described below.
  • each process constituting the method may occur differently from the stated order unless the context clearly indicates a specific order. That is, each process may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.
  • FIG. 1 illustrates an example of a parallel processing apparatus 100.
  • the parallel processing apparatus 100 includes an address and setting value generator 110, a memory 120, and a parallel processor 130.
  • the parallel processing apparatus may further include a direct memory access (DMA), a main memory, and an input / output device.
  • DMA direct memory access
  • the address and setting value generator 110 may transfer the read address group RAG and the write address group WAG to the memory 120.
  • the read address group RAG includes a plurality of read addresses
  • the write address group WAG includes a plurality of write addresses.
  • the address and setting value generator 110 may include an address table 111 that stores a plurality of read address groups RAGs and / or write address groups WAGs.
  • the address and setting value generator 110 transmits the setting value group CVG to the parallel processor 130.
  • the setting value group CVG includes a plurality of main processing setting values CV1, CV2, CV3, CV4 and the determination processing setting value CV5.
  • the address and setting value generator 110 may include a setting value table 112 that stores a plurality of setting value groups CVG.
  • the address and setting value generating unit 110 may output a read address group RAG, a write address group WAG, and a setting value group CVG stored at a location corresponding to the information transmitted from the determination processing unit 135. .
  • the address and setting value generator 110 may output a read address group RAG, a write address group WAG, and a set value group CVG according to information transmitted from a separate controller.
  • the address and setting value generator 110 may read the read address group RAG, the write address group WAG, and the set value group CVG stored at a position corresponding to the program counter GPC transmitted from the determination processor 135. Output
  • the memory 120 includes four memory banks 121, 122, 123, and 124 as an example. Each of the first to fourth memory banks 121 to 124 may be, for example, a dual port RAM.
  • the memory 120 outputs a read data group X1-X4 corresponding to the read address group RAG. In addition, the memory 120 stores the write data groups Y1-Y4 according to the write address group WAG.
  • the memory 120 may further include a data mapper 125.
  • the data mapper 125 receives the data transmitted from the DMA and the data R1, R2, R3, and R4 transmitted from the parallel processor 130 to match the positions of the memory banks 121-124 to be stored. By sorting, the write data groups Y1-Y4 can be obtained.
  • the data mapper 125 may output the write data groups Y1-Y4 to the memory banks 121-124, respectively.
  • the data mapper 125 may transfer data to be stored in the main memory from the memory 120 to the DMA.
  • the parallel processor 130 includes, for example, four main processors 131, 132, 133, and 134 and a decision processor 135.
  • the main processors 131 to 134 may perform a specific operation on the read data groups X1 to X4.
  • the main processing units 131-134 perform an operation corresponding to the input main processing setting values CV1-CV4.
  • the determination processor 135 receives the output of the main processors 131 to 134 and performs a determination for the next operation.
  • the determination processor 135 performs an operation corresponding to the determination processing set value CV5.
  • the parallel processor 130 outputs a plurality of finally calculated data R1, R2, R3, R4, and GPC.
  • the parallel processor 200 has a configuration corresponding to the parallel processor 130 of FIG. 1.
  • the parallel processor 200 is an example composed of four main processors 210, 220, 230, and 240.
  • the plurality of main processors may include an input unit, a partial adder and a delay unit, respectively.
  • the main processor 210 includes an input unit 211, a partial adder 212, and a delay unit 213.
  • the main processor 220 includes an input unit 221, a partial adder 222, and a delay unit 223.
  • the main processor 230 includes an input unit 231, a partial adder 232, and a delay unit 233.
  • the main processor 240 includes an input unit 241, a partial adder 242, and a delay unit 243.
  • the input units 211, 221, 231, and 241 may receive data from each memory bank.
  • the input units 211, 221, 231, and 241 may receive feedback from the outputs of the partial adders 212, 222, 232, and 242.
  • the input units 211, 221, 231, and 241 may include a multiplexer MUX for selecting any one of a plurality of input data.
  • the partial adders 212, 222, 232, and 242 perform a sum operation on a plurality of input data.
  • Each of the partial adders 212, 222, 232, or 242 may receive all data output from the input units 211, 221, 231, and 241.
  • the outputs of the inputs 211, 221, 231, and 241 are connected to a collective bus without collision between signals, so that the outputs of the inputs are selectively added to the partial summation unit according to a set value.
  • the address and setting value generator 110 transmits the setting value group CVG to the parallel processor 130.
  • the set value indicates a plurality of main processing set values CV1, CV2, CV3 and CV4 of the set value group CVG.
  • the input units 211, 221, 231, and 241 and the partial adders 212, 222, 232, and 242 perform a function of transferring input data or a calculated result to a set path.
  • the partial adders 212, 222, 232, and 242 are configured to perform data transfer simultaneously with a specific operation. Such a configuration may be referred to as a computing path network.
  • a configuration denoted by A in FIG. 2 is an arithmetic path network.
  • the delay units 213, 223, 233, and 243 delay the output data of the partial adder 212, 222, 232, and 242 by one period and input the input data to the input units 211, 221, 231, and 241 in the next cycle.
  • the delay units 213, 223, 233, and 243 use the signal delay unit D to delay and transmit data to the input units 211, 221, 231, and 241 at the next period from the current time point.
  • the delay units 213, 223, 233, and 243 delay and deliver data according to a single clock. That is, the delay unit 420 delays and delivers the data according to the clock.
  • the delay units 213, 223, 233, and 243 may include a memory (register) for storing information of a current period.
  • the delay units 213, 223, 233, and 243 store the output values of the sub-sumers 212, 222, 232, and 242 in registers, and the corresponding output values stored in the registers in the next cycle are input units 211, 221, 231, and 241. Can be delivered to.
  • Parallel processing may be performed by making full use of the computational resources of the processing units 210, 220, 230, and 240. In this process, continuous data parallel processing function is required every cycle to increase the data parallel processing efficiency.
  • the data path setting function data realignment function for the next cycle operation every cycle
  • Simultaneous utilization allows continuous data parallel processing. That is, by using a partial adder that provides a structure that can perform data rearrangement function simultaneously with a data operation function, a parallel processing apparatus capable of continuous data parallel processing for increasing data parallel processing efficiency can be configured.
  • the entire delay units 213, 223, 233, and 243 are denoted by B.
  • a configuration corresponding to the entire delay units 213, 223, 233, and 243 is called a delay processor.
  • the decision processing unit receives the outputs of the main processing units 210 to 240 and performs calculation or determination.
  • the determination processor may perform the determination or control on the information generated in the next cycle based on the information or the flag generated by the main processors 210-240 in the current cycle. If the current period is T1 and the next period is T2, the determination processor makes a specific operation or determination based on the information generated by the main processors 210-240 in T1.
  • the determination processor may determine whether data processing is completed based on the output results of the main processors 210-240. If the data processing is not completed, the determination processing unit may transmit information to the address and setting value generation unit 110 so that the main processing units 210-240 perform an ongoing operation or a ready to execute operation at T2. If necessary, the processing results of the delay units 213, 223, 233, and 243 may be stored in the memory bank.
  • 3 is an example for explaining the operation of the partial adder.
  • 3 is an example in the case of having four main processing units.
  • the entire main processor of FIG. 3 can be said to have a four-port path.
  • Points denoted by P1-P4 in FIG. 3 correspond to the input unit output.
  • the plurality of calculation units or sub-sumers 212, 222, 232, and 242 output the calculation results, and the results are transferred to R1, R2, R3, and R4 points, respectively.
  • FIG. 3 (A) shows an example of performing a partial summation function in a 4-port path.
  • the partial adders 212, 222, 232, and 242 selectively add the results output by the input units.
  • the partial adder 212 will be described as an example.
  • the partial adder 212 may receive P1, P2, P3, and P4.
  • Partial adder 212 is a form that includes all three adders. Of course, unlike FIG. 3, the partial adder may have another operation structure.
  • the partial adder 212 may add P1, P2, P3, and P4 in various combinations.
  • the sub-sumers 212, 222, 232, and 242 are designated by deriving the output, which is an optional sub-sum of the input data, for the continuous parallel processing according to the set value, and deriving it during the compilation process for executing the parallel processing of the programming code through a delay in the next cycle.
  • Input output value to input part This process may be referred to as a process of rearranging the input data in a specific order by the partial adder 212, 222, 232, and 242.
  • the partial adders 212, 222, 232, and 242 select one or more outputs from the outputs of the input units 211, 221, 231, and 241 according to the partial sum setting value, and perform a function of summing the selected one or more outputs. .
  • the partial sum setting value is received from the address and setting value generating unit 110 as described above.
  • the first, second, third and fourth partial sum 00 parts 212, 222, 232, and 242 output P0 (first input part 211) and P1 (second input part).
  • An output of 221, an output of P2 (third input unit 231), and an output of P3 (fourth input unit 241) may be output.
  • the first, second, third and fourth partial adders 212, 222, 232, and 242 respectively output an output of P4 (fourth input part, 241), and P1 (first).
  • the output of the input unit 211, the output of P2 (second input unit 221), and the output of P3 (third input unit 231) may be output.
  • the first, second, third and fourth sub-sumers 212, 222, 232, and 242 may be configured to output the outputs of the second to fourth input units 221, 231, and 241.
  • the sum of the outputs of the input units 211, 221, and 231 may be output, respectively.
  • the first, second, third, and fourth sub-sumers 212, 222, 232, and 242 output the second input unit 221 from the output of the first input unit 211 according to the partial sum setting value.
  • the value obtained by subtracting the output of the third input unit 231 from the output of the second input unit 221, the value obtained by subtracting the output of the fourth input unit 241 from the output of the third input unit 231, and the fourth input unit ( A value obtained by subtracting the output of the first input unit 211 may be output from the output of the 241.
  • the partial adder 212, 222, 232, 242 may receive the outputs of the inputs from a bus connected to the outputs of the inputs 211, 221, 231, 241.
  • the partial adders 212, 222, 232, and 242 may store a selective summation result of the output values of the input units P1 to P4 in a register.
  • the sub-sumers 212, 222, 232, and 242 can perform various combinations of operations on the input data. Therefore, the result of the partial adder 212, 222, 232, and 242 may have an effect of transferring the input data P1, P2, P3, and P4 to its own or other registers through a specified operation or processing. . This provides the same effect as the sub-summers 212, 222, 232, and 242, as shown in FIG.
  • Example 1 An example of parallel processing based on the structure described with reference to FIG. 3 will be described in Example 1 below.
  • Example 1 below is expressed in C language.
  • Example 1 Assuming that Example 1 is executed sequentially, it may take 10 cycles to execute "do ⁇ ... ⁇ while (CUR ⁇ 10)" once.
  • the sequential processing code having the attribute as in Example 1 may be continuously executed every one cycle by utilizing the one cycle parallel processing function as shown in FIG. 3.
  • the R1, R2, R3, and R4 calculation result values are input to P1, P2, P3, and P4 in the following periods according to the values of the table (item) of the address and setting value generator of FIG.
  • Modern processors have a multilevel instruction pipeline. Each stage in the pipeline matches a processor that executes instructions of the same stage that perform different actions.
  • the N stage pipeline may have as many other instructions as N in other completed stages.
  • the Pentium 4 processor has a 31-stage pipeline. In instruction level parallelism when pipelined, some processors can produce more than one instruction at a time. This is also known as a superscalar processor. If there is no data dependency, the commands can be merged together.
  • instruction level parallelism In general, when parallel execution is possible in instruction groups at once without changing the sequential and result, this is called instruction level parallelism.
  • This instruction level parallelism was the mainstream of computer architecture from the mid 80's to the mid 90's, but its scope of use is now limited because it has not been able to dramatically overcome the problem of continuous data parallel processing.
  • the dependency of a loop depends on one or more results of the previous iteration .
  • the data dependency of the bottom loop prevents the parallelization from proceeding.
  • example 1 can avoid data dependency occurring during parallel processing and continuously execute the do-while loop every cycle.
  • the one-cycle parallelism procedure for Example 1 can be expressed as
  • Display Plate Means the operation or initial setting value to be performed during one cycle.
  • the parallel processing procedure is as follows.
  • Simultaneous mapping (connection) between a plurality of operator (path network) input data and a plurality of operator (path network) output data can avoid data dependency occurring when program code is executed. Overcoming data dependencies can maximize the throughput of data that can be processed in parallel at once. It is not necessary to limit the plurality of calculators to the path network.
  • data dependency occurring when executing program code may be avoided through simultaneous mapping (connection) between a plurality of operator input data and a plurality of operator output data.
  • a parallel processing unit designed according to the following consistent data parallel processing rule is called a one-cycle parallel processing unit.
  • a periodic parallel processing apparatus assumes a plurality of arithmetic (and data) processors each receiving at least one data.
  • the one-cycle parallel processing unit can perform continuous data parallel processing, but it is difficult to increase the efficiency of continuous data parallel processing without solving the data dependency problem that occurs when executing code.
  • the memory bank receives data from the main memory as described above.
  • the plurality of memory banks (memory bank 1, memory bank 2, memory bank 3, memory bank 4) store the sorted data.
  • the memory mapper can arrange and deliver the data to be stored in the memory bank.
  • the input units 211, 212, 213, and 214 include a multiplexer MUX.
  • the input units 211, 212, 213, and 214 select one of data input from the memory bank and data input from the delay units 213, 223, 233, and 243 using the multiplexer.
  • the partial adders 212, 222, 232, and 242 may perform a sum operation on data output from the input units 211, 212, 213, and 214. As described above, the partial adders 212, 222, 232, and 242 may perform various operations on possible combinations among the outputs of the input units 211, 212, 213, and 214. At the same time, each of the partial adders 212, 222, 232, and 242 may transmit the result of the calculation to at least one of the delay units 213, 223, 233, and 243.
  • Each of the partial adders 212, 222, 232, and 242 transfers the result of the calculation to the delay units 213, 223, 233, and 243.
  • the partial adders 212, 222, 232, and 242 transfer the calculation results to the delay units 213, 223, 233, and 243 according to the set path. That is, the calculation result can be delivered in the set order.
  • the partial adders 212, 222, 232, and 242 may sort the calculation results in a set order and store the result in the registers of the delay units 213, 223, 233, and 243.
  • the partial adders 212, 222, 232, and 242 transmit the output values of the inputs 211, 212, 213, and 214 to the set path without performing an actual sum operation, and newly delay the result of each delay. 223, 233, and 243 may be stored in the register.
  • Each of the partial adders 212, 222, 232, and 242 performs at least an input receiving partial add operation among the outputs of the input units.
  • Each of the partial adders 212, 222, 232, and 242 may perform any one of various combinations of operations according to a set value.
  • Each of the partial adders 212, 222, 232, 242 transfers the result of the operation to the register of the delay part.
  • the registers of the entire delay units 213, 223, 233, and 243 are D1, D2, D3, and D4 in order.
  • the partial adder 212, 222, 232, or 242 performs one of various combinations of operations to transfer the input data to the register as it is or to transfer the calculated result to the register.
  • the sub-sumers 212, 222, 232, and 242 may store data in D1, D2, D3, and D4 in a set order. That is, the partial adders 212, 222, 232, and 242 may rearrange the input data or the result of calculating the input data in a specific order and store them in D1, D2, D3, and D4.
  • the partial adder may be referred to as an operator or an operator that performs an add operation.
  • an arithmetic path network including partial adders 212, 222, 232, and 242 is denoted by A.
  • the output data of the plurality of registers included in the delay units 213, 223, 233, and 243 by the set value input in the current cycle passes through the plurality of input units and the plurality of calculation units (partial summation units), and the delay units 213, 223,
  • the input points of the plurality of registers included in 233 and 243 may be rearranged (realigned) and supplied to the operation unit (partial summation unit) via the input unit by the newly input set value in the next period.
  • the input units 211, 212, 213, and 214 may select and output data transmitted from the delay units 213, 223, 233, and 243.
  • the delay processing unit including the delay units 213, 223, 233, and 243 is denoted by B.
  • the parallel processing unit 200 may perform continuous data parallel processing when the sorted data processed in the first period may be used in the second period, which is the next period.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

연속적인 데이터 병렬처리가 가능한 병렬 처리장치는 지연부로부터 출력되는 복수의 지연 데이터들, 메모리로부터 출력되는 복수의 메모리 출력 데이터들 및 복수의 연산 경로망 제어신호들을 입력받고 복수의 연산 경로망 출력 데이터들을 출력하는 연산 경로망 및 상기 복수의 연산 경로망 출력 데이터들을 지연하여 얻은 상기 복수의 지연 데이터들 출력하는 상기 지연처리부를 포함한다. 상기 복수의 연산 경로망 출력 데이터들 중 각 연산 경로망 출력 데이터는 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중에서 상기 각 연산 경로망 출력 데이터에 대응하는 연산 경로망 제어신호에 대응하는 연산을 수행하여 얻은 값이다.

Description

병렬 처리장치
이하 설명하는 기술은 병렬 처리 장치에 관한 것이다.
종래기술에 의한 병렬 처리 장치는 주로 복수의 프로세서들이 복수의 쓰레드들(threads)을 처리하는 방식으로 동작하였다. 이러한 병렬 처리 장치는 매우 긴 순차적 연산을 병렬로 수행하는 데 적합하지 않다.
순차적인 연산을 병렬로 수행하는 병렬 처리 장치의 종래기술로서 한국등록특허 제10-0835173호(발명의 명칭: 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법)에 개시된 기술이 있다. 개시된 종래 기술은 필터나 고속 푸리에 변환(FFT) 등의 연산을 수행하는데 적합하지만, CPU가 수행할 수 있는 다양한 연산을 연속적으로 수행하기에는 부적합한 측면이 있다.
이하 설명하는 기술은 CPU가 수행하는 다양한 순차적 연산을 병렬로 또한 연속적으로 수행할 수 있는 병렬 처리 장치를 제공하고자 한다.
연속적인 데이터 병렬처리가 가능한 병렬 처리장치는 지연부로부터 출력되는 복수의 지연 데이터들, 메모리로부터 출력되는 복수의 메모리 출력 데이터들 및 복수의 연산 경로망 제어신호들을 입력받고 복수의 연산 경로망 출력 데이터들을 출력하는 연산 경로망 및 상기 복수의 연산 경로망 출력 데이터들을 지연하여 얻은 상기 복수의 지연 데이터들 출력하는 상기 지연처리부를 포함한다. 상기 복수의 연산 경로망 출력 데이터들 중 각 연산 경로망 출력 데이터는 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중에서 상기 각 연산 경로망 출력 데이터에 대응하는 연산 경로망 제어신호에 대응하는 연산을 수행하여 얻은 값이다.
이하 설명하는 병렬 처리 장치는 CPU가 수행할 수 있는 다양한 순차적 연산을 병렬로 또한 연속적으로 수행할 수 있으므로, 연산 처리 속도 및 효율을 향상시킬 수 있다는 장점이 있다.
도 1은 병렬 처리 장치의 구성을 도시한 예이다.
도 2는 병렬 처리부의 구성을 도시한 예이다.
도 3은 부분 합산부의 동작을 설명하는 예이다.
도 4는 병렬 처리부의 동작을 설명하는 예이다.
이하 설명하는 기술은 다양-한 변경을 가할 수 있고 여러 가지 실시례를 가질 수 있는 바, 특정 실시례들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 이하 설명하는 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 이하 설명하는 기술의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 해당 구성요소들은 상기 용어들에 의해 한정되지는 않으며, 단지 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 이하 설명하는 기술의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
본 명세서에서 사용되는 용어에서 단수의 표현은 문맥상 명백하게 다르게 해석되지 않는 한 복수의 표현을 포함-하는 것으로 이해되어야 하고, "포함한다" 등의 용어는 설시된 특징, 개수, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 의미하는 것이지, 하나 또는 그 이상의 다른 특징들이나 개수, 단계 동작 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 배제하지 않는 것으로 이해되어야 한다.
도면에 대한 상세한 설명을 하기에 앞서, 본 명세서에서의 구성부들에 대한 구분은 각 구성부가 담당하는 주기능 별로 구분한 것에 불과함을 명확히 하고자 한다. 즉, 이하에서 설명할 2개 이상의 구성부가 하나의 구성부로 합쳐지거나 또는 하나의 구성부가 보다 세분화된 기능별로 2개 이상으로 분화되어 구비될 수도 있다. 그리고 이하에서 설명할 구성부 각각은 자신이 담당하는 주기능 이외에도 다른 구성부가 담당하는 기능 중 일부 또는 전부의 기능을 추가적으로 수행할 수도 있으며, 구성부 각각이 담당하는 주기능 중 일부 기능이 다른 구성부에 의해 전담되어 수행될 수도 있음은 물론이다.
또, 방법 또는 동작 방법을 수행함에 있어서, 상기 방법을 이루는 각 과정들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 과정들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
도 1은 병렬 처리 장치(100)의 구성을 도시한 예이다.
병렬 처리 장치(100)는 주소 및 설정값 생성부(110), 메모리(120) 및 병렬 처리부(130)를 구비한다. 또한, 도 1에 도시하지 않았지만, 병렬 처리 장치는 DMA(Direct Memory Access), 주 메모리(main memory) 및 입출력 장치를 더 포함할 수 있다.
주소 및 설정값 생성부(110)는 읽기 주소 그룹(RAG) 및 쓰기 주소 그룹(WAG)을 메모리(120)로 전달할 수 있다. 읽기 주소 그룹(RAG)은 복수의 읽기 주소들을 포함하고, 쓰기 주소 그룹(WAG)은 복수의 쓰기 주소들을 포함한다. 주소 및 설정값 생성부(110)는 복수의 읽기 주소 그룹(RAG) 및/또는 쓰기 주소 그룹(WAG)을 저장하는 주소 테이블(111)을 구비할 수 있다.
주소 및 설정값 생성부(110)는 설정값 그룹(CVG)을 병렬 처리부(130)로 전달한다. 설정값 그룹(CVG)은 복수의 주처리 설정값들(CV1, CV2, CV3, CV4) 및 판단처리 설정값(CV5)을 포함한다. 주소 및 설정값 생성부(110)는 복수의 설정값 그룹(CVG)들을 저장하는 설정값 테이블(112)을 구비할 수 있다.
주소 및 설정값 생성부(110)는 판단처리부(135)로부터 전달되는 정보에 대응하는 위치에 저장된 읽기 주소 그룹(RAG), 쓰기 주소 그룹(WAG) 및 설정값 그룹(CVG)을 출력할 수 있다. 또는 주소 및 설정값 생성부(110)는 별도의 제어부로부터 전달되는 정보에 따라 읽기 주소 그룹(RAG), 쓰기 주소 그룹(WAG) 및 설정값 그룹(CVG)을 출력할 수도 있다.
주소 및 설정값 생성부(110)는 판단처리부(135)로부터 전달되는 프로그램 카운터(GPC)에 대응하는 위치에 저장된 읽기 주소 그룹(RAG), 쓰기 주소 그룹(WAG) 및 설정값 그룹(CVG)을 출력한다.
메모리(120)는 일례로 4개의 메모리 뱅크들(121, 122, 123, 124)을 포함한다. 제1 내지 제4 메모리 뱅크들(121-124) 각각은 일례로 이중 포트 램(dual port RAM) 일 수 있다. 메모리(120)는 읽기 주소 그룹(RAG)에 대응하는 읽기 데이터 그룹(X1-X4)을 출력한다. 또한, 메모리(120)는 쓰기 데이터 그룹(Y1-Y4)을 쓰기 주소 그룹(WAG)에 따라 저장한다.
메모리(120)는 데이터 맵퍼(125)를 더 포함할 수 있다. 데이터 맵퍼(125)는 DMA로부터 전달되는 데이터들 및 병렬 처리부(130)로부터 전달되는 데이터들(R1, R2, R3, R4)을 입력받아 이들이 저장될 메모리 뱅크들(121-124)의 위치에 맞추어 정렬함으로써 쓰기 데이터 그룹(Y1-Y4)을 얻을 수 있다. 데이터 맵퍼(125)는 쓰기 데이터 그룹(Y1-Y4)을 메모리 뱅크들(121-124)로 각각 출력할 수 있다. 또한 데이터 맵퍼(125)는 메모리(120)로부터 메인 메모리로 저장할 데이터들을 DMA로 전달할 수 있다.
병렬 처리부(130)는 일례로 4개의 주처리부들(131, 132, 133, 134) 및 판단처리부(135)를 구비한다. 주처리부들(131-134)은 읽기 데이터 그룹(X1-X4)에 대하여 특정 연산을 수행할 수 있다. 주처리부들(131-134)은 입력된 주처리 설정값들(CV1-CV4)에 대응하는 동작을 수행한다. 판단처리부(135)는 주처리부들(131-134)의 출력을 입력받아 다음 동작을 위한 판단을 수행한다. 판단처리부(135)는 판단처리 설정값(CV5)에 대응하는 동작을 수행한다. 병렬 처리부(130)는 최종적으로 연산된 복수의 데이터들 (R1, R2, R3. R4, GPC)을 출력한다.
도 2는 병렬 처리부(200)의 구성을 도시한 예이다. 병렬 처리부(200)는 도 1의 병렬 처리부(130)에 대응하는 구성이다. 병렬 처리부(200)는 4개의 주처리부들(210, 220, 230, 240)로 구성된 예이다.
복수의 주처리부는 각각 입력부, 부분합산부 및 지연부를 포함할 수 있다. 주처리부(210)는 입력부(211), 부분합산부(212) 및 지연부(213)을 포함한다. 주처리부(220)는 입력부(221), 부분합산부(222) 및 지연부(223)를 포함한다. 주처리부(230)는 입력부(231), 부분합산부(232) 및 지연부(233)를 포함한다. 주처리부(240)는 입력부(241), 부분합산부(242) 및 지연부(243)를 포함한다.
입력부(211, 221, 231, 241)는 각 메모리 뱅크로부터 데이터를 입력받을 수 있다. 또 입력부(211, 221, 231, 241)는 부분합산부(212, 222, 232, 242)의 출력을 피드백받을 수도 있다. 따라서 입력부(211, 221, 231, 241)는 복수의 입력 데이터 중 어느 하나를 선택하는 멀티플렉서(MUX)를 포함할 수 있다.
부분합산부(212, 222, 232, 242)는 입력되는 복수의 데이터들에 대한 합산 연산을 수행한다. 부분합산부 각각(212, 222, 232 또는 242)은 입력부(211, 221, 231, 241)에서 출력하는 데이터를 모두 입력받을 수 있다. 예컨대, 도 2에 도시한 바와 같이 입력부(211, 221, 231, 241)의 출력이 신호간 충돌이 없는 집합 형 버스(bus)로 연결되어, 입력부의 출력들이 설정값에 따라 선택적으로 부분합산부(212, 222, 232, 242)에 전달될 수 있다. 주소 및 설정값 생성부(110)는 설정값 그룹(CVG)을 병렬 처리부(130)로 전달한다. 상기 설정값은 설정값 그룹(CVG) 중 복수의 주처리 설정값들(CV1, CV2, CV3, CV4)를 가리킨다.
입력부(211, 221, 231, 241) 및 부분합산부(212, 222, 232, 242)는 입력된 데이터 또는 연산한 결과를 설정된 경로로 전달하는 기능을 수행한다. 부분합산부(212, 222, 232, 242)는 특정 연산과 동시에 데이터 전달을 수행하는 구성이다. 이와 같은 구성을 연산 경로망이라고 할 수 있다. 도 2에서 A로 표시한 구성이 연산 경로망이다.
지연부(213, 223, 233, 243)는 부분합산부(212, 222, 232, 242)의 출력 데이터를 한 주기 지연하여 다음 주기에 입력부(211, 221, 231, 241)에 입력한다. 지연부(213, 223, 233, 243)는 신호 지연기(D)를 이용하여 현재 시점에서 다음 주기에 입력부(211, 221, 231, 241)로 데이터를 지연 전달한다. 지연부(213, 223, 233, 243)는 단일 클럭에 따라 데이터를 지연 전달한다. 즉, 지연부(420)는 클럭에 따라 데이터를 지연 전달한다.
지연부(213, 223, 233, 243)는 현재 주기의 정보를 저장하는 메모리(레지스터)를 포함할 수 있다. 지연부(213, 223, 233, 243)는 부분합산부(212, 222, 232, 242)의 출력값을 레지스터에 저장하고, 다음 주기에 레지스터에 저장된 해당 출력값을 입력부(211, 221, 231, 241)로 전달할 수 있다.
더하여 지연부(213, 223, 233, 243)를 이용하여 매주기마다 필요한 복수의 데이터를 입력부(211, 221, 231, 241)로 공급함으로써 (소프트웨어 설계자의) 프로그래밍 코드에 지시된 연산과정을 주처리부(210, 220, 230, 240)의 연산 자원을 최대한 활용하여 병렬 처리 연산을 수행할 수 있다. 이 과정에서 데이터 병렬처리 연산 효율을 높이기 위해 매 주기마다 연속적인 데이터 병렬처리 기능이 요구되는데, 부분합산부의 부분합산 연산 기능과 더불어 데이터 경로 설정 기능(매 주기마다 다음 주기 연산을 위한 데이터 재정렬 기능)을 동시에 활용함으로써 연속적인 데이터 병렬 처리가 가능하다. 즉 데이터 재정렬 기능을 데이터 연산 기능과 동시에 수행할 수 있는 구조를 제공하는 부분합산부을 활용함으로써 데이터 병렬처리 연산 효율을 높이기 위한 연속적인 데이터 병렬처리가 가능한 병렬 처리 장치를 구성할 수 있다.
도 2에서 지연부(213, 223, 233, 243) 전체를 B로 표시하였다. 병렬 처리부(200)에서 지연부(213, 223, 233, 243) 전체에 해당하는 구성을 지연처리부라고 명명한다.
판단처리부는 주처리부들(210-240)의 출력을 입력받아 연산 내지 판단을 수행한다. 판단처리부는 현재 주기에서 주처리부들(210-240)이 생성한 정보 내지 플래그를 기준으로, 다음 주기에 생성되는 정보에 대한 판단 내지 제어를 수행할 수 있다. 현재 주기 T1이고, 다음 주기를 T2라고 하면, 판단처리부는 T1에서의 주처리부들(210-240)이 생성한 정보를 기준으로 특정 연산 내지 판단을 한다. 판단처리부는 주처리부들(210-240)의 출력 결과를 기준으로 데이터 처리가 완료되었는지 판단할 수 있다. 데이터 처리가 완료되지 않았다면 판단처리부는 주소 및 설정값 생성부(110)에 정보를 전달하여 T2에서 주처리부들(210-240)이 진행 중인 연산 또는 실행 준비된 연산 과정을 수행하도록 할 수 있다. 필요시 지연부(213, 223, 233, 243)의 처리 결과는 메모리 뱅크에 저장될 수 있다.
도 3은 부분 합산부의 동작을 설명하는 예이다. 도 3은 4개의 주처리부를 갖는 경우의 예이다. 도 3의 전체 주처리부는 4-포트(port) 경로를 갖는다고 할 수 있다. 도 3에서 P1-P4로 표시한 지점은 입력부 출력에 해당한다. 이어서 복수의 연산부 또는 부분합산부(212, 222, 232, 242)는 연산 결과를 출력하고 그 결과는 각각 R1, R2, R3, R4 지점으로 전달된다.
도 3(A)는 4-포트 경로에서 부분합산 기능을 수행하는 예를 도시한다. 주처리설정값들(CV1, CV2, CV3, CV4)의 설정값에 따라 부분합산부(212, 222, 232, 242)는 입력부들이 출력하는 결과를 선택적으로 합산한다. 부분합산부(212)를 예로 설명한다. 부분합산부(212)는 P1, P2, P3 및 P4를 입력받을 수 있다. 부분합산부(212)는 모두 3개의 가산기를 포함하는 형태이다. 물론 도 3과 달리 부분합산부는 다른 연산 구조를 가질 수도 있다. 부분합산부(212)는 P1, P2, P3, P4를 다양한 조합으로 합산할 수 있다.
부분합산부(212, 222, 232, 242)는 설정값에 따라 연속적인 병렬처리를 위해 입력 데이터의 선택적 부분합산 값인 출력을 다음 주기에 지연부를 거쳐 프로그래밍 코드의 병렬처리 실행 용 컴파일 과정에서 도출한 지정된 입력부로 출력값을 입력한다. 이 과정을 부분합산부(212, 222, 232, 242)가 입력 데이터를 특정 순서로 재정렬하는 과정이라고 할 수 있다.
부분합산부(212, 222, 232, 242)는 부분합산 설정값에 따라 입력부(211, 221, 231, 241)의 출력들 중 하나 이상의 출력들을 선택하고, 선택된 하나 이상의 출력들을 합산하는 기능을 수행한다. 부분합산 설정값은 전술한 바와 같이 주소 및 설정값 생성부(110)로부터 수신한다. 일례로 부분합산 설정값에 따라, 제1, 제2, 제3 및 제4 부분합산00부(212, 222, 232, 242)는 P0(제1 입력부, 211)의 출력, P1(제2 입력부, 221)의 출력, P2(제3 입력부, 231)의 출력, P3(제4 입력부, 241)의 출력을 각각 출력할 수 있다. 또한, 다른 예로 부분합산 설정값에 따라, 제1, 제2, 제3 및 제4 부분합산부(212, 222, 232, 242)는 각각 P4(제4 입력부, 241)의 출력, P1(제1 입력부, 211)의 출력, P2(제2 입력부, 221)의 출력, P3(제3 입력부, 231)의 출력을 각각 출력할 수 있다. 또한, 다른 예로 부분합산 설정값에 따라, 제1, 제2, 제3 및 제4 부분합산부(212, 222, 232, 242)는 제2 내지 제4 입력부(221, 231, 241)의 출력들의 합, 제1, 제3, 제4 입력부(211, 231, 241)의 출력들의 합, 제1, 제2, 제4 입력(211, 221, 241)의 출력들의 합, 및 제1 내지 제3 입력부(211, 221, 231)의 출력들의 합을 각각 출력할 수 있다. 또한 다른 예로 부분합산 설정값에 따라, 제1, 제2, 제3 및 제4 부분합산부(212, 222, 232, 242)이 제1 입력부(211)의 출력에서 제2 입력부(221)의 출력을 뺀 값, 제2 입력부(221)의 출력에서 제3 입력부(231)의 출력을 뺀 값, 제3 입력부(231)의 출력에서 제4 입력부(241)의 출력을 뺀 값, 제4 입력부(241)의 출력에서 제1 입력부(211)의 출력을 뺀 값을 각각 출력할 수 있다.
이를 위하여, 부분합산부(212, 222, 232, 242)는 입력부들(211, 221, 231, 241)의 출력들에 연결된 버스로부터 입력부들의 출력을 입력받을 수 있다.
도 3(B)는 4-포트 경로에서의 데이터 전송 경로의 가능한 예를 도시한다. 부분합산부(212, 222, 232, 242)는 입력부 P1 내지 P4의 출력값의 선택적 합산 결과를 레지스터에 저장할 수 있다. 부분합산부(212, 222, 232, 242)는 입력 데이터들에 대한 다양한 조합의 연산이 가능하다. 따라서 부분합산부(212, 222, 232, 242)가 출력하는 결과는 마치 입력된 데이터(P1, P2, P3, P4)를 지정된 연산 내지 가공을 통하여 자신의 또는 다른 레지스터에 전달하는 효과를 가질 수 있다. 이는 도 3(B)에 도시한 바와 같이, 부분합산부(212, 222, 232, 242)가 연산 결과를 다양한 경로로 전달하는 것과 같은 효과를 제공한다.
도 3에서 설명한 구조를 기준으로 병렬 처리에 대한 예를 아래 예제 1에서 설명한다. 아래 예제 1은 C 언어로 표현하였다.
<예제 1>
P1 = 0 ;
P2 = 0 ;
P3 = 0 ;
P4 = 1 ;
do {
CUR = P1 + P2 + P3 + P4;
P4 = P3 ;
P3 = P21 ;
P2 = P1 ;
P1= CUR ;
} while (CUR < 10)
예제 1를 순차적으로 수행한다고 가정하면, "do { ... } while (CUR <10)"을 1회 수행하는데, 10 사이클이 소요될 수 있다.
상기 예제 1과 같은 속성을 가진 순차처리 코드를 도 3과 같은 한 주기 병렬처리 연산 기능을 활용하여 do-while 루프를 매 한 주기마다 연속적으로 수행할 수 있다. R1, R2, R3, R4 연산 결과 값은 도 1의 주소 및 설정값 생성부의 테이블(항목)의 값에 따라 다음 주기에 각각 P1, P2, P3, P4으로 입력된다.
현대의 프로세서들은 다단계 명령어 파이프라인을 가졌다. 파이프라인에서 각 단계는 다른 행동을 하는 같은 단계의 명령어를 실행하는 프로세서와 일치시킨다. N 스테이지 파이프라인은 N 만큼의 다른 명령어들을 다른 완료된 단계에서 가질 수 있다. 파이프라인된 프로세서의 경우. (다섯 개의 단계 : 명령어 패치, 디코드, 실행, 메모리 접근, 다시 써넣기 (write back) 가 정석이다.) 펜티엄 4 프로세서는 31단계의 파이프라인을 가지고 있다. 파이프라인을 할 때 명령어 수준 병렬화에서 몇 프로세서들은 한 개 이상의 명령어를 한 번에 만들 수 있다. 이것을 슈퍼스칼라 프로세서라고도 한다. 만약에 자료종속성만 없다면 명령어들은 한꺼번에 합쳐질 수 있다.
일반적으로 재 순차와 결과의 변경 없이 한꺼번에 명령어 그룹단위로 병렬실행이 가능하면 이것을 명령어 수준 병렬화라고 한다. 이 명령어 수준 병렬화는 80년대 중반부터 90년대 중반까지 컴퓨터 구조의 주류였지만 연속적인 데이터 병렬 처리의 문제를 획기적으로 극복하지 못하여 지금은 그 사용 범위가 제한되고 있다
루프가 가지고 있는 종속성이전 반복의 하나 이상의 결과에 종속된다. 아래 루프의 데이터 종속성은 병렬화의 진행을 가로막는다. 예를 들면 <예제 1>에서,
<예제 1>
P1 = 0 ;
P2 = 0 ;
P3 = 0 ;
P4 = 1 ;
do {
CUR = P1 + P2 + P3 + P4;
P4 = P3 ;
P3 = P2 ;
P2 = P1 ;
P1= CUR ;
} while (CUR < 10)
이 루프는 일반적으로 병렬화 할 수 없다고 믿어져 왔다. 왜냐하면 CUR 이 각 루프를 도는 동안 P1, P2, P3, P4에 종속되기 때문이다. 각 반복이 그 이전 결과에 종속되므로 병렬화할 수 없다.
한편, 예제 1을 도 3의 경로망을 활용하는 한 주기 병렬 처리 장치를 사용할 경우, 병렬 처리 시 발생하는 데이터 종속성 회피하고 do-while 루프를 매 주기마다 연속적으로 수행할 수 있다. 예제 1에 대한 한 주기 병렬처리 절차는 아래와 같이 표현될 수 있다.
<예제 1에 대한 한 주기 병렬처리 수행 절차>
1. 표시 // 는 주석에 해당한다.
2. 표시 […] 는 1 주기 동안 수행되는 연산 또는 초기 설정값을 의미한다.
3. 표시 => 는 물리적 신호 연결을 의미한다.
4. 모든 코드 라인은 동시에 실행된다.
이에 따른 병렬처리 수행 절차는 아래와 같다.
// 병렬 처리 초기화 시작
[P1=0; P2=0; P3=0; P4=1] // 데이터 초기값
DoLoop :
[
P1 => R2 ; // R2는 다음 주기에 P2 로 입력됨
P2 => R3 ; // R3는 다음 주기에 P3 로 입력됨
P3 => R4 ; // R4는 다음 주기에 P4 로 입력됨
P1+P2+P3+P4 =>CUR =>R1; // R1는 다음 주기에 P1 로 입력됨 P1 CUR
// CUR = R1
(R1 < 10)? Go to DoLoop or OutLoop;
]
OutLoop: // 병렬 처리 끝
복수의 연산기(경로망) 입력 데이터와 복수의 연산기(경로망) 출력 데이터 간 동시 매핑(연결)를 통하여 프로그램 코드 실행 시 발생하는 데이터 종속성을 회피할 수 있다. 데이터 종속성 극복을 통해 한꺼번에 병렬로 처리할 수 있는 데이터 처리량을 극대화할 수 있다. 상기 복수의 연산기를 경로망으로 한정할 필요는 없다. 개념적으로 다음과 같은 조건을 만족하면 복수의 연산기 입력 데이터와 복수의 연산기 출력 데이터 간 동시 매핑(연결)를 통하여 프로그램 코드 실행 시 발생하는 데이터 종속성을 회피할 수 있다.
먼저 다음의 일관된 데이터 병렬처리 규칙에 따라 설계한 병렬처리장치를 한 주기 병렬처리 장치라 명명 하면,
한 주기 병렬처리 장치는 적어도 하나의 데이터를 각각 입력받는 복수의 연산 (및 데이터) 처리기 구비를 상정한다.
한 주기 병렬처리 장치는
(i) 처리할 데이터를 처리 전에 정렬하여 저장한다.
(ii) 저장된 데이터를 1 주기에 연산 처리 후 그 결과를 다음 1 주기 사용을 위해 재 정렬한다.
(iii) 이전 1 주기의 재 정렬된 결과를 현 주기인 1 주기에 사용할 수 있는 구조를 가지면 연속적인 데이터 병렬처리가 가능하다.
이 경우 한 주기 병렬처리 장치는 연속적인 데이터 병렬처리가 가능 하지만, 코드 실행 시 발생하는 데이터 종속성 문제를 해결하지 못하면 연속적인 데이터 병렬 처리의 효율을 높이기 어렵다.
데이터 병렬 처리의 효율을 증대하기 위해 복수의 연산기 입력 데이터와 복수의 연산기 출력 데이터 간 동시 매핑(연결)을 통한 코드 실행 시 발생하는 데이터 종속성 회피할 수 있는 것은 연산기의 가용한 연산 자원 내에, [입력 데이터 그룹]과 [입력 데이터 그룹의 조합으로 이루어진 출력 데이터 그룹] 간 연결이 동시에 맺어지면 데이터 처리 순서에 상관없이 입력 데이터 그룹과 출력 데이터 그룹 간의 연결(매핑)만으로 목적한 프로그램 코드의 작성이 가능하다. 예로 순차처리 기술 언어인 C언어와 하드웨어 기술 언어인 Verilog 코드의 기술방법이 다르지만 둘 다 목적한 프로그램 기술이 가능하다. 따라서 Verilog 방식으로 C 프로그램 코드와 등가인 병렬 처리 루틴과 그에 따른 병렬처리 컴파일러을 구성하면 복수의 입력 데이터와 복수의 출력 데이터 간 동시 매핑(연결)을 통해 코드 실행 시 발생하는 데이터 종속성 회피할 수 있으며 목적한 프로그램 작성이 가능하다.
도 4는 병렬 처리부(200)의 동작을 설명하는 예이다.
메모리 뱅크는 전술한 바와 같이 메인 메모리 등으로부터 데이터를 입력받는다. 복수의 메모리 뱅크(메모리 뱅크 1, 메모리 뱅크 2, 메모리 뱅크 3, 메모리 뱅크 4)는 정렬된 데이터를 저장한다. 메모리 맵퍼가 메모리 뱅크에 저장할 데이터를 정렬하여 전달할 수 있다.
입력부(211, 212, 213, 214)는 멀티플렉서(MUX)를 포함한다. 입력부(211, 212, 213, 214)는 멀티플렉서를 이용하여 메모리 뱅크에서 입력되는 데이터 및 지연부(213, 223, 233, 243)에서 입력되는 데이터 중 하나를 선택한다.
부분합산부(212, 222, 232, 242)는 입력부(211, 212, 213, 214)에서 출력되는 데이터들에 대한 합산 연산을 수행할 수 있다. 전술한 바와 같이 부분합산부(212, 222, 232, 242)는 입력부(211, 212, 213, 214)의 출력 중 가능한 조합에 대한 다양한 연산을 할 수 있다. 동시에 부분합산부(212, 222, 232, 242) 각각은 연산한 결과를 지연부(213, 223, 233, 243) 중 적어도 하나에 전달할 수 있다.
부분합산부(212, 222, 232, 242) 각각은 연산한 결과를 지연부(213, 223, 233, 243)에 전달한다. 이때 부분합산부(212, 222, 232, 242)는 연산 결과를 설정된 경로에 따라 각 지연부(213, 223, 233, 243)에 전달한다. 즉, 설정된 순서에 따라 연산 결과를 전달할 수 있다. 따라서 부분합산부(212, 222, 232, 242)는 연산 결과를 설정된 순서에 따라 정렬하여 각 지연부(213, 223, 233, 243)의 레지스터에 저장할 수 있다. 또는 부분합산부(212, 222, 232, 242)는 실제 합산 연산을 하지 않고 입력부(211, 212, 213, 214)의 출력값을 설정된 경로로 전달하여 새롭게 정렬을 수행한 결과를 각 지연부(213, 223, 233, 243)의 레지스터에 저장할 수도 있다.
(i) 부분합산부(212, 222, 232, 242) 각각은 입력부들의 출력 중 적어도 입력받가 부분 합산 연산을 수행한다. (ii) 부분합산부(212, 222, 232, 242) 각각은 설정값에 따라 다양한 조합의 연산 중 어느 하나를 수행할 수 있다. (iii) 부분합산부(212, 222, 232, 242) 각각은 연산의 결과를 지연부의 레지스터에 전달한다. 지연부 전체(213, 223, 233, 243)가 갖는 레지스터는 순서대로 D1, D2, D3 및 D4이다. 전술한 바와 같이 부분합산부(212, 222, 232, 242)는 다양한 조합의 연산 중 하나를 수행하여, 입력된 데이터를 그대로 레지스터에 전달하거나, 연산된 결과를 레지스터에 전달한다. 이 과정을 통하여 부분합산부(212, 222, 232, 242)는 데이터를 설정된 순서로 D1, D2, D3 및 D4에 저장할 수 있다. 즉, 부분합산부(212, 222, 232, 242)는 입력 데이터 또는 입력 데이터를 연산한 결과를 특정 순서로 재정렬하여 D1, D2, D3 및 D4에 저장할 수 있다.
한편 부분합산부는 합산 연산을 수행하는 연산부 내지 연산기라고 명명할 수 도 있다.
도 4에서 부분합산부(212, 222, 232, 242)를 포함하는 연산 경로망을 A로 표시하였다.
현주기에 입력된 설정값에 의해 지연부(213, 223, 233, 243)에 포함된 복수의 레지스터의 출력 데이터는 복수의 입력부와 복수의 연산부(부분합산부)를 거쳐 지연부(213, 223, 233, 243)에 포함된 복수의 레지스터의 입력 지점으로 다시 정렬 (재 정렬)되고 다음 주기에 새로 입력된 설정값에 의해 입력부를 거쳐 연산부(부분합산부) 로 다시 공급될 수 있다. 다음 주기에 입력부(211, 212, 213, 214)는 지연부(213, 223, 233, 243)에서 전달하는 데이터를 선택하여 출력할 수 있다. 도 4에서 지연부(213, 223, 233, 243)를 포함하는 지연 처리부를 B로 표시하였다.
결국, 병렬 처리부(200)는 제1 주기에 처리한 정렬 데이터가 다음 주기인 제2 주기에 사용될 수 있는 경우, 연속적인 데이터 병렬 처리가 가능하다.
본 실시례 및 본 명세서에 첨부된 도면은 전술한 기술에 포함되는 기술적 사상의 일부를 명확하게 나타내고 있는 것에 불과하며, 전술한 기술의 명세서 및 도면에 포함된 기술적 사상의 범위 내에서 당업자가 용이하게 유추할 수 있는 변형 예와 구체적인 실시례는 모두 전술한 기술의 권리범위에 포함되는 것이 자명하다고 할 것이다.

Claims (6)

  1. 지연부로부터 출력되는 복수의 지연 데이터들, 메모리로부터 출력되는 복수의 메모리 출력 데이터들 및 복수의 연산 경로망 제어신호들을 입력받고 복수의 연산 경로망 출력 데이터들을 출력하는 연산 경로망; 및
    상기 복수의 연산 경로망 출력 데이터들을 지연하여 얻은 상기 복수의 지연 데이터들 출력하는 상기 지연처리부를 포함하되,
    상기 복수의 연산 경로망 출력 데이터들 중 각 연산 경로망 출력 데이터는 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중에서 상기 각 연산 경로망 출력 데이터에 대응하는 연산 경로망 제어신호에 대응하는 연산을 수행하여 얻은 값인 연속적인 데이터 병렬처리가 가능한 병렬 처리장치.
  2. 제1항에 있어서,
    상기 지연처리부는 상기 복수의 연산 경로망 출력 데이터들을 클럭에 따라 지연시키는 연속적인 데이터 병렬처리가 가능한 병렬 처리장치.
  3. 제2항에 있어서,
    상기 연산 경로망은 상기 단일 클럭의 주기 내에 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들을 입력받고 입력받은 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대응하는 상기 복수의 연산 경로망 출력 데이터들을 출력하는 연속적인 데이터 병렬처리가 가능한 병렬 처리장치.
  4. 제1항에 있어서,
    상기 연산 경로망은 복수의 주처리부들을 포함하고,
    상기 복수의 주처리부들 중 제1 주처리부는 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중 제1 연산 경로망 제어 신호에 대응하는 제1 연산을 수행함으로써 상기 복수의 연산 경로망 출력 데이터들 중 상기 제1 주처리부에 대응하는 제1 연산 경로망 출력 데이터를 출력하며,
    상기 복수의 주처리부들 중 제2 주처리부는 상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중 제2 연산 경로망 제어 신호에 대응하는 제2 연산을 수행함으로써 상기 복수의 연산 경로망 출력 데이터들 중 제2 주처리부에 대응하는 제2 연산 경로망 출력 데이터를 출력하는 연속적인 데이터 병렬처리가 가능한 병렬 처리장치.
  5. 제1항에 있어서,
    상기 연산 경로망은
    상기 복수의 지연 데이터들 및 상기 복수의 메모리 출력 데이터들을 입력받아 복수의 멀티플렉서 출력 데이터들을 출력하는 복수의 멀티플렉서들; 및 상기 복수의 멀티플렉서 출력 데이터들을 입력받아 상기 복수의 연산 경로망 출력 데이터들을 출력하는 복수의 주처리부들을 포함하고,
    상기 복수의 멀티플렉서들 중 각 멀티플렉서는 상기 복수의 지연 데이터들 중 상기 각 멀티플렉서에 대응하는 지연 데이터 및 상기 복수의 메모리 출력 데이터들 중 상기 각 멀티플렉서에 대응하는 메모리 출력 데이터 중 어느 하나를 선택함으로써 상기 복수의 멀티플렉서 출력 데이터들 중 상기 각 멀티플렉서에 대응하는 멀티플렉서 출력 데이터를 얻으며,
    상기 복수의 주처리부들 중 제1 주처리부는 상기 복수의 멀티플렉서 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중 제1 연산 경로망 제어 신호에 대응하는 제1 연산을 수행함으로써 상기 복수의 연산 경로망 출력 데이터들 중 상기 제1 주처리부에 대응하는 제1 연산 경로망 출력 데이터를 출력하며,
    상기 복수의 주처리부들 중 제2 주처리부는 상기 복수의 멀티플렉서 출력 데이터들에 대하여 상기 복수의 연산 경로망 제어신호들 중 제2 연산 경로망 제어 신호에 대응하는 제2 연산을 수행함으로써 상기 복수의 연산 경로망 출력 데이터들 중 상기 제2 주처리부에 대응하는 제2 연산 경로망 출력 데이터를 출력하는 연속적인 데이터 병렬처리가 가능한 병렬 처리장치.
  6. 정렬된 데이터들을 저장하는 복수의 메모리;
    현 주기인 제1 주기에 복수의 데이터 지연기를 포함하는 지연부의 출력 데이터 및 상기 복수의 메모리 데이터 중 적어도 하나를 입력받아 제어 신호에 따라 입력된 데이터를 병렬 연산 처리하는 복수의 연산기; 및
    다음 주기인 제2 주기에 해당하는 제어 신호에 따른 실행에 의한 복수의 연산기 중 대응하는 각각의 연산기 입력에 상기 제 1주기의 복수의 연산처리 결과를 피드백 출력하는 지연부를 포함하되,
    상기 복수의 연산기는 연속적인 데이터 병렬 처리를 위해 복수의 연산 처리 결과를 매 주기마다 해당하는 제어 신호에 따른 지정된 각각의 출력 지점으로 복수의 데이터 연산 처리 결과를 출력하여 데이터 연산 및 재정렬 기능을 동시에 수행하고,
    또한 연속적인 데이터 병렬 처리 효율을 높이기 위해 상기 복수의 연산기는 매 주기마다 해당하는 제어 신호에 따른 복수의 연산기 입력 데이터와 복수의 연산기 출력 데이터 간 동시 맵핑을 통하여 데이터 종속성을 회피한 연속적인 데이터 병렬 처리가 가능한 구조의 데이터 병렬 처리 장치.
PCT/KR2019/005980 2018-05-18 2019-05-20 병렬 처리장치 WO2019221569A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/052,936 US11526432B2 (en) 2018-05-18 2019-05-20 Parallel processing device
CN201980030190.2A CN112074810B (zh) 2018-05-18 2019-05-20 并行处理设备
US17/987,421 US20230071941A1 (en) 2018-05-18 2022-11-15 Parallel processing device

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2018-0057380 2018-05-18
KR20180057380 2018-05-18
KR1020190058629A KR102295677B1 (ko) 2018-05-18 2019-05-20 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
KR10-2019-0058629 2019-05-20

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US17/052,936 A-371-Of-International US11526432B2 (en) 2018-05-18 2019-05-20 Parallel processing device
US17/987,421 Continuation US20230071941A1 (en) 2018-05-18 2022-11-15 Parallel processing device

Publications (1)

Publication Number Publication Date
WO2019221569A1 true WO2019221569A1 (ko) 2019-11-21

Family

ID=68540434

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2019/005980 WO2019221569A1 (ko) 2018-05-18 2019-05-20 병렬 처리장치

Country Status (3)

Country Link
US (1) US20230071941A1 (ko)
KR (1) KR102358612B1 (ko)
WO (1) WO2019221569A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586289A (en) * 1994-04-15 1996-12-17 David Sarnoff Research Center, Inc. Method and apparatus for accessing local storage within a parallel processing computer
US20070182746A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. System and Method for Vector Computations in Arithmetic Logic Units (ALUS)
JP2011028343A (ja) * 2009-07-22 2011-02-10 Fujitsu Ltd 演算処理装置、およびデータ転送方法
US20120278373A1 (en) * 2009-09-24 2012-11-01 Nec Corporation Data rearranging circuit, variable delay circuit, fast fourier transform circuit, and data rearranging method
US20150033001A1 (en) * 2011-12-29 2015-01-29 Intel Corporation Method, device and system for control signalling in a data path module of a data stream processing engine

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100835173B1 (ko) 2006-09-20 2008-06-05 한국전자통신연구원 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586289A (en) * 1994-04-15 1996-12-17 David Sarnoff Research Center, Inc. Method and apparatus for accessing local storage within a parallel processing computer
US20070182746A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. System and Method for Vector Computations in Arithmetic Logic Units (ALUS)
JP2011028343A (ja) * 2009-07-22 2011-02-10 Fujitsu Ltd 演算処理装置、およびデータ転送方法
US20120278373A1 (en) * 2009-09-24 2012-11-01 Nec Corporation Data rearranging circuit, variable delay circuit, fast fourier transform circuit, and data rearranging method
US20150033001A1 (en) * 2011-12-29 2015-01-29 Intel Corporation Method, device and system for control signalling in a data path module of a data stream processing engine

Also Published As

Publication number Publication date
KR20210096051A (ko) 2021-08-04
KR102358612B1 (ko) 2022-02-08
US20230071941A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
EP1050808A1 (en) Computer instruction scheduling
US5675757A (en) Direct match data flow memory for data driven computing
US7146486B1 (en) SIMD processor with scalar arithmetic logic units
WO2011082690A1 (en) Reconfigurable processing system and method
EP1050810A1 (en) A computer system comprising multiple functional units
ATE529802T1 (de) Datenverarbeitungsvorrichtung
KR102295677B1 (ko) 연속적인 데이터 병렬처리가 가능한 병렬 처리장치
WO2019221569A1 (ko) 병렬 처리장치
Flynn et al. Shared resource multiprocessing
EP1050809A1 (en) Computer instruction dependency
WO2021137669A1 (ko) 딥러닝을 위한 가속기용 프로그램 생성 방법
JP2934003B2 (ja) データ処理装置
US20210382686A1 (en) Apparatus and method for performing bit permutation operations
JPH0281258A (ja) 並列計算機
US7673117B2 (en) Operation apparatus
Fellman Design issues and an architecture for the monolithic implementation of a parallel digital signal processor
Sakai et al. Architectural design of a parallel supercomputer EM-5
US20150074379A1 (en) System and Method for an Asynchronous Processor with Token-Based Very Long Instruction Word Architecture
KR100230846B1 (ko) 이중 기능 흐름 파이프라인 구조
WO2021014017A1 (en) A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture
JP3091441B2 (ja) データ処理装置
WO2016114532A1 (ko) 프로그램 컴파일 장치 및 프로그램 컴파일 방법
US8683106B2 (en) Control apparatus for fast inter processing unit data exchange in an architecture with processing units of different bandwidth connection to a pipelined ring bus
JP2008204028A (ja) ベクトルデータ処理装置
KR19980037093A (ko) 셔플 파이프라인 구조

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19803369

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 120421)

122 Ep: pct application non-entry in european phase

Ref document number: 19803369

Country of ref document: EP

Kind code of ref document: A1