WO2021261666A1 - 뉴럴네트워크 프로세서 - Google Patents
뉴럴네트워크 프로세서 Download PDFInfo
- Publication number
- WO2021261666A1 WO2021261666A1 PCT/KR2020/013849 KR2020013849W WO2021261666A1 WO 2021261666 A1 WO2021261666 A1 WO 2021261666A1 KR 2020013849 W KR2020013849 W KR 2020013849W WO 2021261666 A1 WO2021261666 A1 WO 2021261666A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- router
- fetch
- input
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/40—Bus coupling
Definitions
- the present invention relates to a neural network processor, and more particularly, to a processor for neural network operation.
- An artificial neural network implements artificial intelligence by connecting artificial neurons that mathematically model the neurons that make up the human brain.
- One mathematical model for an artificial neuron is shown in Equation (1) below. Specifically, the artificial neuron receives the input signal x i is determined by multiplying the total weights w i which respectively correspond to x i. Next, the corresponding artificial neuron obtains an activation value using an activation function, and transmits the activation value to the next connected artificial neuron.
- the artificial neural network (ANN) composes the human brain and Artificial intelligence is implemented by connecting artificial neurons that mathematically model existing neurons.
- One mathematical model for an artificial neuron is shown in Equation (1) below.
- the artificial neuron receives the input signal x i is determined by multiplying the total weights w i which respectively correspond to x i.
- the corresponding artificial neuron obtains an activation value using an activation function, and transmits the activation value to the next connected artificial neuron.
- a deep neural network (DNN), a form of ANN, has a layered network architecture in which artificial neurons (nodes) are layered.
- the DNN is composed of an input layer, an output layer, and a plurality of hidden layers between the input layer and the output layer.
- the input layer consists of a plurality of nodes to which input values are input, and the nodes of the input layer transmit the output values calculated through the mathematical model to the nodes of the next hidden layer connected to the input layer.
- the nodes of the hidden layer receive input values through the mathematical model described above, calculate the output values, and transmit the output values to the nodes of the output layer.
- the computational process of deep learning which is a form of machine learning performed in DNN, continuously learns based on the learning data in a given DNN to improve the computational power of the corresponding DNN and the training process. It can be classified as a process of inference on new input data using the learned DNN.
- the reasoning process of deep learning is carried out in a forward propagation method in which input data is received by the node of the input layer, and then operations are sequentially performed in the hidden layer and the output layer according to the order of the layers. Finally, the output layer nodes draw conclusions of the inference process based on the output values of the hidden layers.
- the training process of deep learning performs learning by adjusting the weight of nodes in order to reduce the difference between the conclusion of the inference process and the actual correct answer.
- the weight is modified through a gradient descent method.
- the differential value of the weight of the node at the front end of the DNN is calculated by the chain rule of the differential value with respect to the weight of the node at the back end of the DNN. Since the calculation of the chain rule is performed in the reverse direction of the inference process, the learning process of deep learning has a back propagation method.
- the DNN has a hierarchical structure, and nodes existing in each layer receive result values from multiple nodes existing in the previous layer, and perform an operation based on the mathematical model of the node to obtain a new result value. output, and the new result value is transmitted to the nodes of the next layer.
- the computational structure of the DNN may have a distributed processing structure in which numerous computations performed by nodes existing in each layer are distributed and processed in a plurality of computational units.
- the operation performed by the nodes in each layer is distributed to a plurality of operation units for processing, and each operation unit fetches data necessary for operation from the memory to perform the operation, and stores the operation result in the memory again.
- Patent Document 1 Republic of Korea Patent Publication No. 10-2019-0116024, 2019.10.14
- An object of the present specification is to provide an arithmetic processing device having a high throughput at a low cost.
- An arithmetic processing device for solving the above-described problems is an arithmetic processing device including a fetch unit that reads data required for an operation for performing processing of a neural network from a memory and provides it to the arithmetic unit, the fetch unit Silver, a plurality of routers having a data processing mapping table in which a method of processing the input data according to the node ID of the input data is described; and a fetch network controller that reconfigures each data processing mapping table of the plurality of routers to form a software topology according to an operation type.
- the plurality of routers may form a hardware 1-D mesh topology.
- each router includes a main input port for receiving data from the memory, a first forwarding output port for transferring data to an adjacent first router, and a first forwarding input port for receiving data transmitted from the adjacent first router. , a second forwarding output port for transferring data to an adjacent second router, a second forwarding input port for receiving data transmitted from the adjacent second router, and a main output port for providing data to the arithmetic unit. .
- the data processing mapping table may store information on whether input data is blocked, reflected, and output.
- the fetch network controller may set whether to execute the blocking, reflection, and output according to the topology to be reconfigured.
- the fetch network controller may set the same blocking and output in the data processing mapping table of routers belonging to the same group in the reconfigured topology.
- the memory may include the same number of data memory slices as the plurality of routers.
- the fetch unit may include: a network interface through which data stored in each data memory slice is fetched; a fetch network that delivers the fetched data to the network interface; and a feed module that provides the data transmitted from the fetch network to the operation unit.
- the plurality of routers and the fetch network controller may be included in the fetch network.
- the network interface includes: a fetch buffer for storing fetched data; and an interface controller that assigns a node ID corresponding to each data memory slice to the fetched data.
- the interface controller may control the timing of inputting the fetched data to each router according to the node ID.
- the interface controller may calculate the initial waiting time of the fetched data according to the node ID, and input the fetched data to each router after the calculated initial waiting time. .
- the interface controller may calculate the initial waiting time using a node ID and a variable according to a software topology configuration of a router configured by the fetch network controller through the data processing mapping table.
- the interface controller may calculate the intermediate waiting time using a variable according to the software topology configuration of the router.
- the interface controller may input data of a preset size to each router, and input data of the preset size to each router again after the intermediate waiting time is over. have.
- the interface controller may determine whether the intermediate waiting time is over by adding the calculated intermediate waiting time to the waiting time of previous data.
- FIG. 1 is a block diagram schematically illustrating the configurations of an arithmetic processing apparatus according to an embodiment of the present invention.
- FIG. 2 is a block diagram illustrating in more detail each configuration of the arithmetic processing apparatus according to the present specification.
- FIG. 3 is a block diagram illustrating the configuration of a fetch unit according to an embodiment of the present specification in more detail.
- FIG. 4 is a reference diagram for explaining the configuration of a router according to the present specification.
- 5 is a software topology according to the first embodiment.
- FIG. 6 is a reference diagram of a data processing mapping table according to the first embodiment.
- FIG. 8 is a reference diagram of a data processing mapping table according to the second embodiment.
- FIG. 10 is a reference diagram of a data processing mapping table according to the third embodiment.
- 11 is a software topology according to the fourth embodiment.
- FIG. 12 is a reference diagram of a data processing mapping table according to the fourth embodiment.
- FIG. 13 is a diagram illustrating an example of data input timing according to an embodiment of the present specification.
- Data used in the training process of deep learning may have the form of a tensor with a size of hundreds of kilobytes (Kbytes) to hundreds of megabytes (Mbytes). Such data may be stored in a plurality of memory banks constituting an on-chip memory.
- a plurality of memory banks and a plurality of arithmetic units are connected by a network for data transmission.
- a network may be configured inside the chip, and may include a router.
- the router includes a router capable of transferring data packets received from a plurality of nodes to the plurality of nodes.
- the router allows data packets input from multiple directions, i.e., traffic, to be delivered to the destination, ii) if contention occurs, arbitrates, and iii) packets are not lost.
- At least one of operations for performing flow control may be performed to prevent flow control.
- the performance and cost of such a router are determined by topology, bandwidth, flow control, and buffer, and of course, high throughput with low cost, area and energy. We are looking for a router with
- the router may read the input tensor data from the memory and broadcast or multicast the input tensor data to a plurality of operation units.
- a general method of multicasting is a method of recording and transmitting all destinations for each data (d.g., data packet). This method has a problem in that the size of the packet header increases in proportion to the number of nodes as the number of nodes increases. ).
- buffered flow control using a buffer causes a problem in which the queue is blocked (head of line blocking) depending on the size of the buffer (buffer area).
- a source throttling method may be used, but this method detects and avoids congestion after it occurs. Therefore, a network with high throughput at low cost is needed in consideration of the routing pattern characteristics of deep learning.
- FIG. 1 is a block diagram schematically illustrating the configurations of an arithmetic processing apparatus according to an embodiment of the present invention.
- the arithmetic processing unit 10 includes a memory 100 , a fetch unit 200 , an operation unit 300 , and a commit unit 400 . can do. However, as shown in FIG. 1 , the operation processing unit 10 does not have to include all of the memory 100 , the fetch unit 200 , the operation unit 300 , and the commit unit 400 . For example, the memory 100 and the commit unit 400 may be disposed outside the arithmetic processing unit 10 .
- the memory 100 may store at least any one or more data among the data described herein.
- the memory 100 may store input data, a tensor, output data, a filter, operation result data of an operation unit, all data used in a fetch unit, and the like.
- the memory 100 may be formed in the form of a data memory such as static random access memory (SRAM) or dynamic random access memory (DRAM), but this is not necessarily the case.
- SRAM static random access memory
- DRAM dynamic random access memory
- the fetch unit 200 may read data required for an operation from input data stored in the memory 100 and provide it to the operation unit 300 .
- the fetch unit 200 may read the tensor stored in the memory 100 and feed it to the operation unit 300 according to the type of operation.
- the type of operation may include, for example, a matrix multiplication operation, convolution, grouped convolution, and the like.
- the fetch unit 200 sequentially reads from the memory 100 a data group having data equal to or greater than the unit data throughput of one or more operators provided in the operation unit 300 , and feeds the operation unit 300 . can do.
- the operation unit 300 may generate output data by processing the operation of the input data received from the fetch unit 200 .
- the operation unit 300 may be configured according to (corresponding to) the type of operation to be performed.
- the operation unit 300 may process data fed from the fetch unit 200 in a streaming method, but is not limited thereto.
- the calculation unit 300 may include one or more operators.
- the commit unit 400 may store the operation result data output (e.g., output in a streaming method) from the operation unit 300 in the memory 100 .
- the commit unit 400 stores the operation result data in the memory 100 based on the type of operation to be performed next on the operation result data.
- the commit unit 400 may transform the operation result data into a preset form or may transform the operation result data into a form suitable for future operation and store it in the memory 100 .
- FIG. 2 is a block diagram illustrating in more detail each configuration of the arithmetic processing apparatus according to the present specification.
- the memory 100 may be configured based on a memory address space.
- the memory address space may be contiguous or sequential.
- the memory address space may be one-dimensional, but is not limited thereto and may have a two-dimensional or more array.
- the internal structure of the memory 100 may be configured as an independently accessible slice structure.
- the memory 100 may include a plurality of data memory slices 101 .
- the number of data memory slices 101 may be determined according to the number of dot product engines 310 included in the operation unit 300 .
- the number of slices 101 may be the same as the number of dot product engines 310 included in the operation unit 300 .
- the corresponding tensor may be divided in a channel direction and a height direction and then stored in the data memory slice 101 .
- the fetch unit 200 may read data from the memory 100 and feed the corresponding data to the dot product engine 310 of the operation unit 300 .
- the fetch unit 200 may include at least one of a fetch sequencer 210 , a network interface 220 , a fetch network 230 , and an operation sequencer module 250 .
- the fetch sequencer 210 may control a data fetch operation from the memory 100 to the network interface 220 .
- the network interface 220 is for fetching data stored in the memory 100 , and may provide an interface between the memory 100 and the fetch network 230 .
- the fetch network 230 may deliver the fetched data to the feed module 240 .
- the operation sequencer module 250 may control the operation unit 300 to perform a specific operation by controlling the feed module 240 and data input to the feed module 240 .
- the fetch network 230 of the fetch unit 200 may have various structures according to operation contents and data types.
- the fetch network 230 may be configured or reconfigured in a topology of a type required by the computation unit 300 by software. Also, the fetch network 230 may determine the topology according to the shape of the input data and the type of operation.
- the patch network 230 may support various communication types such as Direct, Vertical Multicast, Channel Multicast, and Vertical Nearest Neighbor according to the operation performed by the operation unit 300 , but is not limited thereto.
- the fetch unit 200 may feed the input activation values read sequentially in the channel direction to the dot product engine 310 in a multicast method. Also, the fetch unit 200 may use the fetch sequencer 210 to sequentially read data to be input to the operation unit 300 from each data memory slice 101 . Each data read from the data memory slice 101 by the fetch sequencer 210 may be transmitted to the operation unit 300 through the fetch network 230 of the fetch unit 200 .
- the fetch unit 200 may read the tensor slices from the memory 100 in parallel and feed the operation unit 300 in a form that the operation unit 300 can calculate.
- the fetch network 230 further includes a fetch network controller (not shown in FIG. 2 ) that configures and manages the fetch network 230 to transfer the data read from the memory 100 to the required operation unit 300 . can do.
- the calculation unit 300 may include a plurality of dot product engines 310 that can be processed in parallel.
- the calculation unit 300 may include 256 dot product engines 310 , but is not limited thereto.
- Each of the dot product engines 310 may include one or more operators (eg, 32 MACs).
- Each dot product engine 310 may perform various calculations according to the configuration of the calculator.
- the dot product engine 310 of the calculation unit 300 may also be divided in the channel and height directions to perform an operation to generate output activation.
- the calculation unit 300 may further include a register file (not shown) in addition to the dot product engine 310 .
- the register file is a storage space for temporarily storing one of relatively frequently used or reused operators when the dot product engine 310 performs an operation.
- the register file may be configured in the form of SRAM or DRAM, but is not limited thereto.
- a weight when performing an operation in a neural network, in the case of a general convolution layer having a large activation size, a weight may be stored in a register file and activation may be stored in a memory. In addition, in the case of a fully connected layer having a larger weight compared to the activation size, the weight may be stored in the memory and the activation may be stored in the register file.
- the dot product engine 310 when the operation unit 300 performs a MAC operation, the dot product engine 310 includes input data input from the fetch unit 200 as an operand for calculating the MAC, and the dot product engine ( 310), a register value input from a register file and an accumulation value input from an accumulator may be used. Then, the operation result may be stored in the accumulator again or transferred to the commit unit 400 to be stored in the memory 100 as output data.
- the commit unit 400 may transform the output activation calculated by the operation unit 300 into a form required for the next operation and store it in the memory 100 .
- the commit unit 400 may store the output activation in a memory so that output activation according to an operation in a specific hierarchical layer can be used for an operation in a next layer.
- the commit unit 400 performs a transpose (eg, tensor manipulation) and converts the results to a commit network (not shown). ) can be transferred to the memory 100 and stored.
- a transpose eg, tensor manipulation
- the commit unit 400 stores the output data in the memory 100 in a desired form after the operation is performed by the operation unit 300 .
- the commit unit 400 may perform a data transpose (Tensor Transpose) using a data transpose module (not shown) and a commit network module (not shown).
- FIG. 3 is a block diagram illustrating the configuration of a fetch unit according to an embodiment of the present specification in more detail.
- the network interface 220 , the fetch network 230 , and the feed module 240 included in the fetch unit 200 may be identified.
- the network interface 220 may include a fetch buffer 222 that stores fetched data and an interface controller 221 that assigns a node ID corresponding to each data memory slice to the fetched data.
- the fetch network 230 may include a plurality of routers 232 and a fetch network controller 231 to deliver the fetched data to the fetch buffer.
- Each of the plurality of routers 232 may have a data processing mapping table.
- the data processing mapping table may indicate a routing/flow control method (e.g., blocking, reflection, or output, etc.) of the input data according to a node ID of the input data.
- the fetch network controller 231 may reconfigure a data processing mapping table.
- the data processing mapping table may be adaptively reconfigured according to the type of operation to be performed on the corresponding data. In this example, the fetch network controller 231 may reconfigure each data processing mapping table of the plurality of routers 232 to form a topology according to an operation type.
- the data processing mapping table will be described in more detail later.
- the feed module 240 may provide the data received from the fetch network 230 to the operation unit 300 .
- the feed module 240 may include a feed buffer 242 for storing data output from the plurality of routers 232 .
- the memory 100 may include one or more data memory slices 101 .
- the number of routers 232 may be related to the number of data memory slices 101 .
- the number of routers 232 may be determined based on the number of data memory slices 101 or, conversely, the number of data memory slices 101 may be determined based on the number of routers 232 .
- the number of data memory slices 101 may be the same as the number of routers 232 .
- the router 232 and the data memory slice 101 may correspond 1:1.
- the data stored in the data memory slice 101 can be fetched into the fetch buffer 222 included in the network interface 220, in FIG.
- each fetch buffer 222 corresponds to each data memory slice 101 , and data stored in each corresponding data memory slice 101 may be fetched into each fetch buffer 222 .
- FIG. 3 is illustrated as being separated from each other for convenience of understanding, and is not necessarily limited to being physically separated.
- the interface controller 220 may assign a node ID corresponding to each data memory slice 101 to each flit constituting one data packet.
- the four flits fetched in the first fetch buffer 222-1 have a node ID of '#1'.
- the four flits fetched in the second fetch buffer 222-2 are given node IDs '#2', and the flits fetched in the remaining fetch buffers 222-3 to 222-8 also have node IDs. was given as '#3 ⁇ #8'.
- the plurality of routers 232 may form a hardware 1-D mesh topology.
- Each router 232 may receive the data fetched from the fetch buffer 222 and output it to the feed buffer 242 , or may transmit it to another adjacent router 232 .
- 'Router 1 232-1
- Router 2 232-2
- Router 8 232-8
- FIG. 4 is a reference diagram for explaining the configuration of a router according to the present specification.
- routers can be identified.
- the configuration of the router according to the present specification will be described based on the router 232-Ref located in the middle among these three routers. And, among the two routers adjacent to the reference router 232-Ref, a router located on the left side will be referred to as a 'first router (232-F)' and a router located on the right side will be referred to as a 'second router (232-S)'.
- the 'first' and 'second' are only names for distinguishing the reference router 232-Ref and two adjacent routers, and do not mean a priority between the routers.
- the router 232 has a main input port (1), a first forwarding output port (2), a first forwarding input port (3), a second forwarding output port (4), a second forwarding input port (5) ) and a main output port (6).
- the main input port 1 is a port through which data is input from the memory 101 , that is, the fetch buffer 222 .
- the first forwarding output port (2) is a port for transmitting data to the adjacent first router (232-F).
- the first forwarding input port (3) is a port through which data transmitted from the adjacent first router 232-F is input.
- the second transfer output port (4) is a port for transferring data to the adjacent second router (232-S).
- the second forwarding input port 5 is a port through which data transmitted from the adjacent second router 232-S is input.
- the main output port 6 is a port for providing data to the arithmetic unit 300 , that is, the feed buffer 242 .
- data output through the first forwarding output port (2) of the reference router 232-Ref is input to the second forwarding input port (5) of the first router 232-F.
- Data output through the second forwarding output port (4) of the first router 232-F is input to the first forwarding input port (3) of the reference router 232-Ref.
- Data output through the second forwarding output port (4) of the reference router 232-Ref is input to the first forwarding input port (3) of the second router 232-S.
- Data output through the first forwarding output port (2) of the second router 232-S is input to the second forwarding input port (5) of the reference router 232-Ref.
- the first router 232-1 does not show the first forwarding output port (2) and the first forwarding input port (3). Since the No. 1 router 232-1 may be physically or softwarely located on the leftmost side, the first forwarding output port (2) and the first forwarding input port (3) may not physically exist. Alternatively, the first router 232-1 may have a first forwarding output port (2) and a first forwarding input port (3) physically, but may not be used in software. The 8th router 232-8 also has the second forwarding output port (4) and the second forwarding input port (5) not shown, for the same reason as the first router 232-1.
- each router 232 transmits data in a counterclockwise direction. Accordingly, it is assumed that each router 232 transmits data input through the main input port (1) and the second forwarding input port (5) only through the first forwarding output port (2). And, when each router 232 transmits data input through the first forwarding input port (3), it will be assumed that the data is transmitted only through the second forwarding output port (4). As described above, when an input/output port is set in the data transfer process, duplicate output of data can be prevented.
- the counterclockwise transfer is not limited to the arithmetic processing device according to the present specification, and when it is changed in the clockwise direction, the relationship between the input and output ports may also be changed.
- the router 232 may read the node ID of data input through the main input port (1), and process data having the corresponding node ID according to the data processing mapping table.
- the data processing mapping table may store information on whether input data is blocked, reflected, and output.
- the router 232 according to the present specification may process, according to the data processing mapping table, whether to block, reflect, or output data without forwarding it to another router according to the node ID.
- the router 232 according to the present specification may be set to output data input from one adjacent router to another adjacent router (data transfer) as a basic operation, but is not necessarily limited thereto. it is not Accordingly, the data processing mapping table can be said to be information on a method of processing data input from another router.
- 'Block' in the data processing mapping table means that data input through the second forwarding input port (5) or the first forwarding input port (3) is transferred to the first forwarding output port (2) or the second forwarding output port (4). means not to pass through.
- 'reflection' means outputting data input through the second transfer input port (5) through the second transfer output port (4).
- 'reflection' means processing data to be output through the first transfer output port (2) as data input through the first transfer input port (3).
- 'output' means outputting data input through the first transfer input port (3) through the main output port (6).
- the software topology configured by the plurality of routers 232 may vary.
- the fetch network controller 231 can set whether to execute the blocking, reflection, and output according to the topology to be reconfigured, and the software topology can be determined by the fetch network controller 231 .
- the data processing mapping table will be described in more detail with reference to various embodiments of FIGS. 5 to 12 .
- 5 is a software topology according to the first embodiment.
- the first embodiment is an example in which data fetched in each fetch buffer 222 is delivered to one feed buffer 242 . That is, the data stored in the first fetch buffer 222-1 is transmitted only to the first feed buffer 242-1, and the data stored in the second fetch buffer 222-2 is transferred to the second feed buffer 242-2. This is an embodiment delivered only to .
- FIG. 6 is a reference diagram of a data processing mapping table according to the first embodiment.
- the data processing mapping table is divided into data processing methods (eg, blocking, reflection, output) according to node IDs.
- the item of the data processing mapping table may indicate whether or not it is executed. If '1' is indicated, it means that the item is executed, and if '0' is indicated, it means that the item is not executed.
- the ID #1 data is not blocked, reflected, and outputted. Since it is assumed in this specification that the router 232 transmits data in a counterclockwise direction, the ID #1 data input to the main input port (1) of the No. 1 router 232-1 is transmitted to the first forwarding output port ( 2) will be transmitted. At this time, since the ID #1 data is set to be reflected in the data processing mapping table of the No. 1 router 232-1, the ID #1 data to be output through the first forwarding output port (2) is the first forwarding input It is processed like data input through port (3). And since it is set to output the ID #1 data in the data processing mapping table of the No. 1 router 232-1, the ID #1 data is output through the main output port 6.
- the data fetched in the first fetch buffer 222-1 of FIG. 5 may be output only to the first feed buffer 242-1. Since the second router 232-2 to the eighth router 232-8 of FIG. 5 also operate according to the same principle, unnecessary repeated description will be omitted.
- the second embodiment is an example in which data fetched in each fetch buffer 222 is delivered to two feed buffers 242 . That is, the data stored in the first fetch buffer 222-1 is transferred to the first feed buffer 242-1 and the second feed buffer 242-2, and the data stored in the second fetch buffer 222-2 is an embodiment transmitted to the first feed buffer 242-1 and the second feed buffer 242-2.
- FIG. 8 is a reference diagram of a data processing mapping table according to the second embodiment.
- the ID #1 data is not blocked but reflected, and output is executed.
- the first router 232-1 since the first router 232-1 has described how to output the ID #1 data to the first feed buffer 242-1, a repeated description will be omitted.
- the ID #1 data since the ID #1 data is processed like data input through the first forwarding input port (3), the ID #1 data will be delivered to the second router 232-2 through the second forwarding output port (4).
- the ID #1 data is not blocked, does not reflect, and outputs. Accordingly, when the ID #1 data is input from the first router 232-1, the second router 232-2 may output it to the second feed buffer 242-2. Accordingly, the data fetched in the first fetch buffer 222-1 of FIG. 7 may be output to the first feed buffer 242-1 and the second feed buffer 242-2.
- the second router 232-2 it does not block, does not reflect, and outputs ID #2 data. Since it is assumed in this specification that the router 232 transmits data in a counterclockwise direction, the ID #2 data input to the main input port (1) of the second router 232-2 is transmitted to the first forwarding output port ( 2) through the first router 232-1 can be transmitted. And looking at the first router 232-1 of FIG. 7, the ID #2 data is not blocked, but reflected, and output is executed.
- the ID #2 data input to the first router 232-1 may be output to the first feed buffer 242-1 by the first router 232-1 in the same manner as the ID #1 data. And the ID #2 data may be delivered to the feed buffer 242-2 again.
- the second router 232-2 may output the ID #2 data re-inputted from the first router 232-1 through the first forwarding input port (3) through the main output port (6). Accordingly, the data fetched in the second fetch buffer 222-2 of FIG. 7 may be output to the first feed buffer 242-1 and the second feed buffer 242-2.
- the ID #1 data is input through the first forwarding input port (3) of the second router 232-2, so the second forwarding output port (4) of the second router 232-2 is used. is output through Accordingly, the ID #1 data is not input to the first router 232-1 again.
- the third router 232-3 blocks the ID #1 data input through its first forwarding input port (3).
- the router 232-3 also blocks the ID #2 data input through its first forwarding input port (3).
- the first router 232-1 and the second router 232-2 of FIG. 7 blocks, does not reflect, and does not output the remaining ID #3 to #8 data.
- the third embodiment is an example in which data fetched in each fetch buffer 222 is delivered to four feed buffers 242 . That is, the data stored in the first to fourth fetch buffers 222-1 to 222-4 is transferred to the first feed buffers to the fourth feed buffers 242-1 to 242-4, respectively.
- FIG. 10 is a reference diagram of a data processing mapping table according to the third embodiment.
- ID #3 data fetched in the fetch buffer 222-3 of FIG. 9 is Let's take a look at the processing of First, ID #3 data fetched in the third fetch buffer 222-3 is input through the main input port (1) of the third router 232-3, and the first data of the third router 232-3 It is output to the forwarding output port (2).
- the second router 232-2 receives the ID #3 data through the second forwarding input port (5), and sends the ID #3 data to the first forwarding output port (2) of the second router 232-2. print out
- the first router 232-1 receives the ID #3 data through the second forwarding input port 5. According to the data processing mapping table of the No. 1 router 232-1, the No. 1 router 232-1 executes reflection and output for the ID #3 data, so that the ID #3 data is transmitted to the main output port 6. It is output to the first feed buffer 242-1 through and output to the second forwarding output port (4) of the first router 232-1.
- the second router 232-2 receives the ID #3 data through the first forwarding input port (3). According to the data processing mapping table of the second router 232-2, since the second router 232-2 outputs ID #3 data, the ID #3 data is transmitted through the main output port 6. It is output to the No. feed buffer 242-2 and output to the second forwarding output port (4) of the No. 2 router 232-2.
- No. 3 router 232-3 receives ID #3 data through the first forwarding input port (3). According to the data processing mapping table of the third router 232-3, since the third router 232-3 outputs ID #3 data, the ID #3 data is transmitted through the main output port 6. It is output to the No. feed buffer 242-3 and output to the second forwarding output port (4) of the No. 3 router 232-3.
- No. 4 router 232-4 receives ID #3 data through the first forwarding input port (3). According to the data processing mapping table of the 4th router 232-4, the 4th router 232-4 outputs the ID #3 data, so the ID #3 data is 4 through the main output port 6. It is output to the No. feed buffer 242-4 and output to the second forwarding output port (4) of the No. 4 router 232-4.
- No. 5 router 232-5 receives ID #3 data through the first forwarding input port (3). According to the data processing mapping table of the fifth router 232-5, the fifth router 232-5 blocks the ID #3 data, so that the ID #3 data is no longer output or transmitted.
- ID #3 data fetched in the third fetch buffer 222-3 of FIG. 9 may be transferred to the first feed buffers to the fourth feed buffers 242-1 to 242-4.
- ID #1 data, ID #2 data, and ID #4 data may also be transmitted to the feed buffers No. 1 to No. 4 feed buffers 242-1 to 242-4 in the same manner.
- ID #5 data to ID #8 data may be transferred to feed buffers No. 5 to No. 8 feed buffers 242-5 to 242-8 according to the same principle.
- 11 is a software topology according to the fourth embodiment.
- the fourth embodiment is an example in which data fetched in each fetch buffer 222 is delivered to all feed buffers 242 . That is, the data stored in the first to eighth fetch buffers 222-1 to 222-8 is transmitted to the first to eighth feed buffers 242-1 to 242-8, respectively.
- FIG. 12 is a reference diagram of a data processing mapping table according to the fourth embodiment.
- the fetch network controller 231 can set the same blocking and output in the data processing mapping table of the router 232 belonging to the same group in the reconfigured software topology. .
- the router 232 processes one piece of data has been described.
- a plurality of data fetched into a plurality of fetch buffers 222 must be processed together.
- the prior art is a method of providing a sufficiently large buffer in the router and solving a problem when a collision occurs
- the arithmetic processing device 10 according to the present specification can provide a method for processing a large number of data more effectively have.
- the interface controller 231 may control the timing of inputting the fetched data to each router 232 according to the node ID.
- FIG. 13 is an exemplary diagram of data input timing according to an embodiment of the present specification.
- the software topology of the plurality of routers 232 is the same as that of the third embodiment shown in FIG. 9 . Therefore, no collision occurs when the data fetched in the first to fourth fetch buffers 222-1 to 222-4 is input to the first to fourth routers 232-1 to 232-4, It should be output to the first feed buffer to the fourth feed buffer (242-1 to 242-4). Meanwhile, in this specification, data input timing will be described through the third embodiment, but the arithmetic processing device 10 according to the present specification is not limited to the above example.
- the interface controller 221 may calculate the initial waiting time of the fetched data according to the node ID, and input the fetched data to each router 232 after the calculated initial waiting time. .
- the interface controller 221 transfers the data fetched to the first fetch buffer 222-1 to the first router 232- 1) can be entered. Also, since the second fetch buffer 222-2 has the fourth flit, the interface controller 221 waits for the time the flit is inputted three times, and then the fourth flit is transferred to the first fetch buffer 222-1. When inputted to the first router 232-1 in , the data fetched in the second fetch buffer 222-1 may be simultaneously inputted to the second router 232-2.
- the interface controller 221 waits for the time that the flit is inputted 6 times, and then the 7th flit is transferred to the 2nd fetch buffer 222-2. ) to the second router 232-2, the data fetched in the third fetch buffer 222-3 may be simultaneously inputted to the third router 232-3.
- the interface controller 221 waits for the time the flit is inputted 9 times, and then the 10th flit is transferred to the 3rd fetch buffer 222- In 3), when input to the third router 232-3, the data fetched in the fourth fetch buffer 222-4 may be simultaneously input to the fourth router 232-4.
- the interface controller 221 may calculate the initial waiting time using a node ID and a variable according to the software topology configuration of the router 232 configured by the fetch network controller 231 through the data processing mapping table. For example, the interface controller 221 may calculate the initial waiting time corresponding to each fetch buffer 222 through Equation 1 below.
- warm_up_period base + (router_id % #_nodes) * stride
- Equation 1 'warm_up_period' is the initial waiting time, 'base' is the basic time to be system or physically waiting, 'router_id' is the number of routers, '#_nodes' is the number of routers constituting the software topology, 'stride' is a variable considering the number of routers.
- 'router_id' is 0 to 3
- '#_nodes' is 4
- 'stride' is 3.
- the '%' symbol is an operation symbol that calculates the remainder of division.
- the interface controller 2221 may calculate the intermediate waiting time by using a variable according to the software topology configuration of the router 232 .
- the interface controller 221 may calculate the intermediate waiting time of each fetch buffer 221 through Equation 2 below.
- injection_period (#flits * #_nodes) + (#_nodes * hop delay)
- Equation 2 'injection_period' is the intermediate latency
- '#flits' is the number of flits included in one packet
- '#_nodes' is the number of routers constituting the software topology
- the interface controller 221 inputs data (ie, data packet) of a preset size to each router 232 , and after the intermediate waiting time ends, data (ie, data packet) of the preset size can be re-entered into each router.
- the interface controller 221 may determine whether the intermediate waiting time has ended by adding the calculated intermediate waiting time to the waiting time of previous data.
- the numerical value '16' related to the intermediate waiting time may be added to the previous waiting time of each fetch buffer 222 , that is, the initial waiting time.
- the data flow control logic can be simplified to remove or minimize the buffer of the router. This can reduce the area occupied by the router on the chip, and at the same time reduce power consumption.
- information on a packet for multicasting can be minimized.
- an increase in cost can be minimized even when the number of nodes is increased, and a maximum bandwidth can be achieved.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
본 명세서는 낮은 비용으로 높은 처리율을 가진 연산 처리 장치를 개시한다. 본 명세서에 따른 연산 처리 장치는 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치로서, 상기 페치 유닛은, 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및 상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 제어하는 페치 네트워크 컨트롤러;를 포함할 수 있다.
Description
본 발명은 뉴럴 네트워크 프로세서에 관한 것으로써, 보다 상세하게는 뉴럴 네트워크 연산을 위한 프로세서에 관한 것이다.
인공 신경망(Artificial Neural Network, ANN)은 인간의 뇌를 구성하고 있는 뉴런들을 수학적으로 모델링한 인공 뉴런들을 서로 연결하여 인공 지능을 구현한 것이다. 인공 뉴런에 대한 하나의 수학적 모델은 아래 수식 (1)과 같다. 구체적으로, 인공 뉴런은 input signal x
i 를 입력 받아 x
i에 각각 대응되는 가중치 w
i를 곱하여 총합을 구한다. 다음, 해당 인공 뉴런은 활성화 함수(activation function)를 이용하여 활성화(activation) 값을 구하고, 이 활성화 값을 연결된 다음 인공 뉴런으로 전달한다인공 신경망(Artificial Neural Network, ANN)은 인간의 뇌를 구성하고 있는 뉴런들을 수학적으로 모델링한 인공 뉴런들을 서로 연결하여 인공 지능을 구현한 것이다. 인공 뉴런에 대한 하나의 수학적 모델은 아래 수식 (1)과 같다. 구체적으로, 인공 뉴런은 input signal x
i 를 입력 받아 x
i에 각각 대응되는 가중치 w
i를 곱하여 총합을 구한다. 다음, 해당 인공 뉴런은 활성화 함수(activation function)를 이용하여 활성화(activation) 값을 구하고, 이 활성화 값을 연결된 다음 인공 뉴런으로 전달한다.
y = f(w
1 * x
1 + w
2 * x
2 + .... w
n * x
n) = f(Σ w
i * x
i), where i = 1......n, n = # input signal - 수식 (1)
ANN의 한 형태인 심층 인공 신경망(Deep neural network, DNN)은 인공 뉴런(노드)들이 계층화된 네트워크 구조(layered network architecture)를 갖는다. DNN은 입력층(Input layer), 출력층(Output layer) 및 입력층과 출력층 사이의 다수의 은닉층(Hidden layer)으로 구성된다. 입력층은 입력값이 입력되는 다수의 노드들로 구성되며, 입력층의 노드들은 입력층과 연결되어 있는 다음 은닉층의 노드들로 상기한 수학적 모델을 통해 계산된 출력값들을 전달한다. 은닉층의 노드들은 상기한 수학적 모델을 통해 입력값을 전송 받고, 출력값을 계산하며, 출력값을 출력층의 노드들로 전달한다.
DNN에서 수행되는 기계 학습의 한 형태인 딥러닝(Deep learning)의 연산 과정은 주어진 DNN에서 학습 데이터를 바탕으로 계속해서 학습하여 해당 DNN의 연산 능력을 향상시키는 훈련(training) 과정과, 훈련 과정을 통해 학습된 DNN을 사용하여 새로운 입력 데이터에 대해 추론(inference)하는 과정으로 분류할 수 있다.
딥러닝의 추론 과정은 입력 데이터를 입력층의 노드가 입력 받고, 이후 레이어의 순서에 따라 은닉층과 출력층에서 순차적으로 연산을 수행하는 전방향 전파(forward propagation) 방식으로 이루어진다. 최종적으로, 출력층 노드들은 은닉층들의 출력값을 바탕으로 추론 과정의 결론을 도출한다.
반면, 딥러닝의 훈련 과정은 추론 과정에 대한 결론과 실제 정답과의 차이를 줄이기 위해 노드들의 가중치(weight)를 조절하여 학습을 수행한다. 일반적으로 가중치는 기울기 하강(gradient descent) 방식을 통해 수정된다. 기울기 하강 방식을 구현하기 위해, 노드들 각각의 가중치를 대상으로 추론 과정의 결론과 실제 정답간 차이의 미분값을 구해야 한다. 이 과정에서 DNN의 앞단 노드의 가중치의 미분값은 DNN의 뒷단 노드의 가중치에 대한 미분값의 체인룰(chain rule)에 의해 계산된다. 체인룰의 계산은 추론 과정 방향의 역방향으로 이루어지기 때문에 딥러닝의 학습 과정은 역방향 전파(back propagation) 방식을 갖는다.
다시 말해, DNN은 계층 구조를 가지며, 각각의 계층에 존재하는 노드들은 이전 계층에 존재하는 다수의 노드들로부터 결과값을 입력 받고, 상기한 노드의 수학적 모델에 기반한 연산을 수행하여 새로운 결과값을 출력하며, 새로운 결과값을 다음 계층의 노드들로 전달한다.
한편, DNN의 연산 구조는 각 계층에 존재하는 노드들이 수행하는 수많은 연산들을 다수의 연산 유닛에 분산하여 처리하는 분산 처리 구조를 지닐 수 있다. 각 계층에 존재하는 노드들이 수행하는 연산을 다수의 연산 유닛에 분산하여 처리하게 되며, 각 연산 유닛들은 연산에 필요한 데이터를 메모리에서 불러와 연산을 수행하고, 연산 결과를 다시 메모리에 저장시킨다.
[선행기술문헌]
[특허문헌]
(특허문헌 1) 대한민국 공개특허공보 제10-2019-0116024호, 2019.10.14
본 명세서는 낮은 비용으로 높은 처리율을 가진 연산 처리 장치를 제공하는 것을 목적으로 한다.
본 명세서는 상기 언급된 과제로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 과제를 해결하기 위한 본 명세서에 따른 연산 처리 장치는 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치로서, 상기 페치 유닛은, 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및 상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 소프트웨어적 토폴로지를 형성하도록 재구성하는 페치 네트워크 컨트롤러;를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 복수 개의 라우터는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성할 수 있다.
이 경우, 각각의 라우터는, 상기 메모리로부터 데이터가 입력되는 메인 입력 포트, 인접한 제1 라우터에게 데이터를 전달하는 제1 전달 출력 포트, 인접한 제1 라우터로부터 전달된 데이터가 입력되는 제1 전달 입력 포트, 인접한 제2 라우터에게 데이터를 전달하는 제2 전달 출력 포트, 인접한 제2 라우터로부터 전달된 데이터가 입력되는 제2 전달 입력 포트 및 상기 연산 유닛에 데이터를 제공하기 위한 메인 출력 포트를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 네트워크 컨트롤러는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 네트워크 컨트롤러는 재구성된 토폴로지 내 같은 그룹에 속하는 라우터의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 메모리는 상기 복수 개의 라우터와 동일한 개수의 데이터 메모리 슬라이스를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 페치 유닛은, 상기 각 데이터 메모리 슬라이스에 저장된 데이터가 페치되는 네트워크 인터페이스; 상기 네트워크 인터페이스에 페치된 데이터를 전달하는 페치 네트워크; 및 상기 페치 네트워크에서 전달된 데이터를 연산 유닛에 제공하는 피드 모듈;을 포함할 수 있다. 이 경우, 상기 복수 개의 라우터 및 페치 네트워크 컨트롤러는, 상기 페치 네트워크에 포함될 수 있다.
본 명세서의 일 실시예에 따르면, 상기 네트워크 인터페이스는, 페치된 데이터를 저장하는 페치 버퍼; 및 상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러;를 포함할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터에 입력하는 타이밍을 제어할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터에 입력할 수 있다.
이 때, 상기 인터페이스 컨트롤러는, 노드 ID와 상기 페치 네트워크 컨트롤러가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 상기 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간은 산출할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 미리 설정된 크기의 데이터를 각각의 라우터에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터를 다시 각각의 라우터에 입력할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러는, 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단할 수 있다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 명세서에 따르면, 종래 뉴럴 네트워크 프로세서에 비해 향상된 연산 처리 능력을 달성할 수 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 장치의 구성들을 개략적으로 도시한 블록도이다.
도 2는 본 명세서에 따른 연산 처리 장치의 각 구성들을 보다 자세히 도시한 블록도이다.
도 3은 본 명세서의 일 실시예에 따른 페치 유닛의 구성을 보다 구체적으로 도시한 블럭도이다.
도 4는 본 명세서에 따른 라우터의 구성을 설명하기 위한 참고도이다.
도 5는 제1 실시예에 따른 소프트웨어적 토폴로지다.
도 6은 제1 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 7는 제2 실시예에 따른 소프트웨어적 토폴로지다.
도 8은 제2 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 9는 제3 실시예에 따른 소프트웨어적 토폴로지다.
도 10은 제3 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 11는 제4 실시예에 따른 소프트웨어적 토폴로지다.
도 12은 제4 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 13은 본 명세서의 일 실시예에 따른 데이터 입력 타이밍의 예시이도이다.
본 명세서에 개시된 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 명세서가 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 명세서의 개시가 완전하도록 하고, 본 명세서가 속하는 기술 분야의 통상의 기술자(이하 '당업자')에게 본 명세서의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 명세서의 권리 범위는 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 명세서의 권리 범위를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 명세서가 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
딥러닝의 훈련 과정에 사용되는 데이터는 수백 킬로바이트(Kbyte)에서 수백 메가바이트(Mbyte)의 크기를 가진 텐서(Tensor)의 형태를 가질 수 있다. 이러한 데이터는 온칩 메모리(On-Chip Memory)를 구성하는 다수의 메모리 뱅크(Memory Bank)에 저장될 수 있다.
다수의 메모리 뱅크와 다수의 연산 유닛은 데이터를 전송을 위한 네트워크로 연결되어 있다. 네트워크-온-칩(Network-on-Chip)의 경우 네트워크가 해당 칩 내부에 구성될 수 있으며, 라우터를 포함할 수 있다. 라우터는 다수의 노드로부터 전달받은 데이터 패킷(Data Packet)을 다수의 노드로 전달할 수 있는 라우터(Router)를 포함한다. 라우터는 여러 방향에서 입력된 데이터 패킷들 즉, 트래픽(Traffic)들이 i) 목적지 방향으로 전달되도록 하고, ii) 경합(Contention)이 발생한 경우, 중재(Arbitration)을 수행하고, iii) 패킷이 손실되지 않도록 흐름제어(Flow Control)을 수행하는 동작 중 적어도 하나를 할 수 있다. 이러한 라우터의 성능과 비용은 토폴로지(Topology), 밴드위스(Bandwidth), 흐름제어(flow Control), 버퍼(buffer) 등에 의해 결정되며, 당연히 낮은 비용(cost, area 및 energy)로 높은 처리율(Throughput)을 가지는 라우터를 추구한다.
한편, 딥러닝에서 트래픽 패턴(Traffic Pattern)의 대다수는 동일한 텐서의 데이터가 다수의 출력 텐서 데이터를 생성하기 위해 여러 번 재사용된다. 따라서, 라우터는 메모리 접근 횟수를 줄이기 위해 입력 텐서 데이터를 메모리에서 읽어서 다수의 연산 유닛에 브로드캐스팅(Broadcasting) 또는 멀티캐스팅(Multicasting) 할 수 있다. 멀티캐스팅의 일반적인 방법은 각 데이터(d.g., 데이터 패킷)마다 목적지(destination)를 모두 기록하여 전달하는 방법이다. 이 방법은 노드가 증가함에 따라 패킷 헤더(Packet Header)의 크기가 노드의 개수에 비례하여 증가하는 문제가 있다(예: 패킷 헤더에 목적지를 표시하는 bitmap을 포함할시 64 노드에 대해 64bit 이상 필요). 일반적으로 버퍼를 사용한 흐름제어(Buffered flow control)는 버퍼의 크기(buffer area)에 따라 대기열이 차단되는 문제(head of line blocking)가 발생한다. 이를 해결하기 위한 방법 중 하나로 소스 스로틀링(source throttling) 방법이 사용될 수 있으나, 이 방법은 정체(congestion)가 발생한 이후에 이를 감지(detect)하여 회피한다. 따라서, 딥러닝의 라우팅 패턴 특성을 고려하여 낮은 비용으로 높은 처리율을 가지는 네트워크가 필요하다.
도 1은 본 발명의 일 실시예에 따른 연산 처리 장치의 구성들을 개략적으로 도시한 블록도이다.
도 1에 도시된 바와 같이, 연산 처리 장치(10)는 메모리(Memory, 100), 페치 유닛(Fetch Unit, 200), 연산 유닛(Operation Unit, 300) 및 커밋 유닛(Commit Unit, 400)을 포함할 수 있다. 다만, 도 1에 도시된 바와 같이 연산 처리 장치(10)가 메모리(100), 페치 유닛(200), 연산 유닛(300) 및 커밋 유닛(400)을 모두 포함해야 하는 것은 아니다. 예를 들어, 메모리(100), 커밋 유닛(400)은 연산 처리 장치(10)의 외부에 배치될 수도 있다.
메모리(100)는 본 명세서 상에서 설명되는 데이터 중 적어도 어느 하나 이상의 데이터를 저장할 수 있다. 예를 들어, 메모리(100)는 입력 데이터, 텐서(Tensor), 출력 데이터, 필터, 연산 유닛의 연산 결과 데이터, 페치 유닛에 사용되는 모든 데이터 등을 저장할 수 있다. 메모리(100)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)과 같은 데이터 메모리 형태로 형성될 수 있으나, 반드시 그러한 것은 아니다.
페치 유닛(200)은 메모리(100)에 저장된 입력 데이터에서 연산에 필요한 데이터를 읽어와 연산 유닛(300)에 제공할 수 있다. 입력 데이터가 텐서인 경우, 페치 유닛(200)은 메모리(100)에 저장되어 있는 텐서를 읽어와 연산의 형태에 맞춰 연산 유닛(300)에 피드(feed)할 수 있다. 연산의 형태란 예를 들어, 매트릭스 곱하기 연산 혹은 컨볼루션(Convolution), 그룹 컨볼루션(Grouped Convolution) 등이 포함될 수 있다. 이 경우, 페치 유닛(200)은 연산 유닛(300)에 하나 이상 구비된 연산기의 단위 데이터 처리량보다 같거나 많은 데이터를 갖는 데이터군을 메모리(100)로부터 순차적으로 읽어와서 연산 유닛(300)에 피드할 수 있다.
연산 유닛(300)은 페치 유닛(200)으로부터 전송 받은 입력 데이터의 연산을 처리하여 출력 데이터를 생성할 수 있다. 연산 유닛(300)은 수행할 연산의 형태에 맞춰(대응되도록) 구성될 수 있다. 일 예로, 연산 유닛(300)은 페치 유닛(200)으로부터 피드되는 데이터를 스트리밍(streaming) 방식으로 처리할 수 있으며, 이에 한정되지 않는다. 연산 유닛(300)은 하나 이상의 연산기를 포함할 수 있다.
커밋 유닛(400)은 연산 유닛(300)으로부터 출력(e.g., 스트리밍 방식로 출력)되는 연산 결과 데이터를 메모리(100)에 저장시킬 수 있다. 커밋 유닛(400)은 연산 유닛(300)로부터 수신한 연산 결과 데이터를 메모리(100)에 저장하는 동작을 수행함에 있어, 해당 연산 결과 데이터에 대하여 다음에 수행될 연산의 형태에 기반하여 메모리(100)에 저장할 수 있다. 예를 들어, 커밋 유닛(400)은 연산 결과 데이터를 미리 설정된 형태로 변형하거나 또는 앞으로 연산에 적합한 형태로 변형하여 메모리(100)에 저장시킬 수 있다.
도 2는 본 명세서에 따른 연산 처리 장치의 각 구성들을 보다 자세히 도시한 블록도이다.
도 2를 참조하여, 앞서 설명한 메모리(100), 페치 유닛(200), 연산 유닛(300) 및 커밋 유닛(400)에 대하여 더욱 상세하게 설명하도록 한다.
메모리(100)는 메모리 주소공간에 기초하여 구성될 수 있다. 일 예로, 메모리 주소공간은 연속적 또는 순차적일 수 있다. 또한, 메모리 주소공간은 일차원 일 수 있으나, 이에 한정되지 않으며 2차원 이상의 배열을 가질 수도 있다. 메모리(100)의 내부 구조는 독립적으로 접근 가능한 슬라이스 구조로 구성(configure)될 수 있다. 예를 들어, 메모리(100)는 복수 개의 데이터 메모리 슬라이스(101)를 포함할 수 있다. 이 때, 데이터 메모리 슬라이스(101)의 개수는 연산 유닛(300)에 포함된 닷 프로덕트 엔진(310)의 개수에 따라 결정될 수 있다. 일 예로, 슬라이스(101)의 개수는 연산 유닛(300)에 포함된 닷 프로덕트 엔진(310)의 개수와 동일할 수 있다. 일 예로, 입력 데이터가 텐서인 경우, 해당 텐서는 채널 방향과 높이 방향으로 분할된 후, 데이터 메모리 슬라이스(101)에 저장될 수 있다.
페치 유닛(200)은 메모리(100)에서 데이터를 읽어오고, 해당 데이터를 연산 유닛(300)의 닷 프로덕트 엔진(310)으로 피드할 수 있다. 예를 들어, 상기 페치 유닛(200)은 페치 시퀀서(210), 네트워크 인터페이스(220), 페치 네트워크(230), 연산 시퀀서 모듈(250) 중 적어도 하나를 포함할 수 있다. 페치 시퀀서(210)는 메모리(100)로부터 네트워크 인터페이스(220)로의 데이터 페치(Fetch) 동작을 제어할 수 있다. 네트워크 인터페이스(220)는 메모리(100)에 저장된 데이터의 페치를 위한 것으로써, 메모리(100)와 페치 네트워크(230) 상호 간의 인터페이스를 제공할 수 있다. 페치 네트워크(230)는 페치된 데이터를 피드 모듈(240)로 전달할 수 있다. 연산 시퀀서 모듈(250)은 피드 모듈(240) 및 피드 모듈(240)에 입력된 데이터를 제어함으로써 연산 유닛(300)이 특정 연산을 수행하도록 제어할 수 있다.
페치 유닛(200)의 페치 네트워크(230)는 연산 내용과 데이터의 형태에 따라 다양한 구조를 가질 수 있다. 페치 네트워크(230)는 소프트웨어에 의해 연산 유닛(300)에서 필요로 하는 형태의 토폴로지로 구성 또는 재구성될 수 있다. 또한, 페치 네트워크(230)는 입력 데이터의 형태(Shape)와 연산의 형태에 따라 토폴로지를 결정할 수 있다. 패치 네트워크(230)는, 연산 유닛(300)에서 수행되는 연산에 따라 Direct, Vertical Multicast, Channel Multicast, Vertical Nearest Neighbor 등의 다양한 방식의 커뮤니케이션 형태를 지원할 수 있으며, 이에 한정되지 않는다.
예를 들어, 2차원 컨벌루션의 경우, 모든 입력 채널의 값들이 각각의 출력 액티베이션을 계산하는 닷 프로덕트 엔진(310)에 모두 입력되어야 한고 가정한다. 따라서, 페치 유닛(200)은 채널 방향으로 순서대로 읽은 입력 액티베이션 값들을 멀티캐스트(Multicast) 방식으로 닷 프로덕트 엔진(310)에 피드할 수 있다. 또한, 페치 유닛(200)은 각각의 데이터 메모리 슬라이스(101)에서 연산 유닛(300)에 입력되어야 할 데이터를 순차적으로 읽기 위해 페치 시퀀서(210)를 사용할 수 있다. 페치 시퀀서(210)에 의해 데이터 메모리 슬라이스(101)에서 읽힌 각각의 데이터는 페치 유닛(200)의 페치 네트워크(230)를 통해 연산 유닛(300)으로 전달될 수 있다.
이와 같이, 페치 유닛(200)은 메모리(100)에서 텐서 슬라이스들을 병렬적으로 읽어서 연산 유닛(300)이 연산할 수 있는 형태로 연산 유닛(300)에 피드할 수 있다. 여기서, 페치 네트워크(230)는 메모리(100)에서 읽은 데이터를 필요로 하는 연산 유닛(300)에 전달하도록 페치 네트워크(230)를 구성하고 관리하는 페치 네트워크 컨트롤러(도 2 도시하지 않음)를 더 포함할 수 있다.
연산 유닛(300)은 병렬적으로 프로세싱 가능한 복수의 닷 프로덕트 엔진(Dot product engine, 310)을 포함할 수 있다. 일 예로, 상기 연산 유닛(300)은 256개의 닷 프로덕트 엔진(310)을 포함할 수 있으며, 이에 한정되지 않는다. 상기 각 닷 프로덕트 엔진(310)은 하나 이상의 연산기(예: 32개의 MAC)를 포함할 수 있다. 각각의 닷 프로덕트 엔진(310)은 연산기의 구성에 따라 다양한 연산을 수행할 수 있다. 연산 유닛(300)의 닷 프로덕트 엔진(310)도 채널과 높이 방향으로 분할되어 출력 액티베이션(Output activation)을 생성하도록 연산을 수행할 수 있다.
연산 유닛(300)은 닷 프로덕트 엔진(310) 외에도 레지스터 파일(도시하지 않음)를 더 포함할 수 있다.
레지스터 파일은 닷 프로덕트 엔진(310)이 연산 수행할 때 상대적으로 자주 사용 또는 재사용되는 연산자 중 하나를 일시적으로 저장하는 저장 공간이다. 예를 들어, 레지스터 파일은 SRAM 또는 DRAM 형태로 구성될 수 있으며, 이에 한정되지 않는다.
예를 들어, 뉴럴 네트워크에서의 연산을 수행할 때, 액티베이션(activation)의 크기가 큰 일반적인 컨벌루션 레이어의 경우 웨이트(weight)는 레지스터 파일에 저장되고 액티베이션은 메모리에 저장될 수 있다. 또한, 액티베이션 크기에 비해 웨이트 크기가 더 큰 형태의 완전 연결 레이어(Fully Connected layer)의 경우, 웨이트는 메모리에 저장되고 액티베이션은 레지스터 파일에 저장될 수 있다.
일 예로, 연산 유닛(300)이 MAC 연산을 하는 경우, 닷 프로덕트 엔진(310)은 MAC을 연산하기 위한 오퍼랜드(Operand, 연산자)로서 페치 유닛(200)으로부터 입력받은 입력 데이터와, 닷 프로덕트 엔진(310)에 위치한 레지스터 파일로부터 입력받은 레지스터 값, 그리고 어큐뮬레이터(Accumulator)로부터 입력받은 축적 값(Accumulation Value)을 사용할 수 있다. 그리고, 연산 결과는 다시 어큐물레이터에 저장되거나, 출력 데이터로 메모리(100)에 저장되기 위해 커밋 유닛(400)으로 전달될 수 있다.
한편, 앞서 설명한 바와 같이, 커밋 유닛(400)은 연산 유닛(300)에 의해 계산된 출력 액티베이션을 다음 연산에서 필요로 하는 형태로 변형하여 메모리(100)에 저장할 수 있다.
예를 들어, 뉴럴 네트워크에 있어서, 특정 계층 레이어에서의 연산에 따른 출력 액티베이션이 다음 레이어에서의 연산에 사용될 수 있도록, 커밋 유닛(400)은 출력 액티베이션을 메모리에 저장시킬 수 있다. 또한, 다음 레이어의 연산에서 필요로 하는 데이터 형태에 따라, 커밋 유닛(400)은 트랜스포즈(Transpose)(예: 텐서 매니퓰레이션(Tensor manipulation))을 수행하며, 결과물들을 커밋 네트워크(도시하지 않음)를 통해 메모리(100)로 전달하여 저장시킬 수 있다.
이처럼, 커밋 유닛(400)은 연산 유닛(300)에 의해 연산이 수행된 후, 출력된 데이터를 원하는 형태로 메모리(100)에 저장한다. 출력 데이터를 원하는 형태로 저장하기 위해, 커밋 유닛(400)은 데이터 트랜스포즈 모듈(도시하지 않음)과 커밋 네트워크 모듈(도시하지 않음)를 사용하여 데이터 트랜스포즈(Tensor Transpose)를 수행할 수 있다.
도 3은 본 명세서의 일 실시예에 따른 페치 유닛의 구성을 보다 구체적으로 도시한 블럭도이다.
도 3을 참조하면, 본 명세서의 일 실시예에 따른 페치 유닛(200)에 포함된 네트워크 인터페이스(220), 페치 네트워크(230) 및 피드 모듈(240)을 확인할 수 있다.
네트워크 인터페이스(220)를 통해 상기 각 데이터 메모리 슬라이스(101)에 저장된 데이터가 페치될 수 있다. 상기 네트워크 인터페이스(220)는 페치된 데이터를 저장하는 페치 버퍼(222) 및 상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러(221)를 포함할 수 있다.
상기 페치 네트워크(230)는 상기 페치 버퍼에 페치된 데이터를 전달하기 위해 복수 개의 라우터(232) 및 페치 네트워크 컨트롤러(231)를 포함할 수 있다.
상기 복수 개의 라우터(232)는 각각은 데이터 처리 맵핑 테이블을 가질 수 있다. 데이터 처리 맵핑 테이블은 입력된 데이터의 노드 ID에 따라 상기 입력된 데이터의 라우팅/플로우 컨트롤 방식(e.g., 차단, 반사 또는 출력 등)을 나타낼 수 있다. 상기 페치 네트워크 컨트롤러(231)는 데이터 처리 맵핑 테이블을 재구성할 수 있다. 데이터 처리 맵핑 테이블은 해당 데이터에 대해서 앞으로 수행될 연산 타입에 적응적으로 재구성될 수 있다. 이 예로, 페치 네트워크 컨트롤러(231)은 상기 복수 개의 라우터(232)가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 토폴로지를 형성하도록 재구성할 수 있다. 상기 데이터 처리 맵핑 테이블에 대해서는 이후에 보다 자세히 설명하겠다.
상기 피드 모듈(240)은 상기 페치 네트워크(230)에서 수신한 데이터를 연산 유닛(300)에 제공할 수 있다. 이를 위해, 상기 피드 모듈(240)은 복수 개의 라우터(232)에서 출력된 데이터를 저장하는 피드 버퍼(242)를 포함할 수 있다.
한편, 상기 메모리(100)는 하나 또는 둘 이상의 데이터 메모리 슬라이스(101)들을 포함할 수 있다. 라우터(232)의 개수는 데이터 메모리 슬라이스(101)의 개수와 관련(related to)될 수 있다. 예를 들어, 데이터 메모리 슬라이스(101)의 개수에 기초하여 라우터(232)의 개수가 결정되거나, 또는 반대로 라우터(232)의 개수에 기초하여 데이터 메모리 슬라이스(101)의 개수가 결정될 수 있다. 일 예로, 라우터(232)의 개수와 동일한 개수의 데이터 메모리 슬라이스(101)의 개수는 동일할 수 있다. 이 경우 라우터(232)와 데이터 메모리 슬라이스(101)는 1:1로 대응할 수 있다. 본 명세서에서는 이해의 편의 및 도면의 간소화를 위해 8개의 라우터(232-1 ~ 232-8)가 존재하는 것으로 가정하겠다. 그리고 상기 데이터 메모리 슬라이스(101)에 저장된 데이터는 상기 네트워크 인터페이스(220)에 포함된 페치 버퍼(222)에 페치될 수 있으므로, 도 3에서는 8개의 버퍼(222-1 ~ 222-8)가 서로 분리된 것으로 도시하였다. 따라서, 각각의 페치 버퍼(222)는 각각의 데이터 메모리 슬라이스(101)에 대응하며, 각 페치 버퍼(222)에는 각 대응하는 데이터 메모리 슬라이스(101)에 저장된 데이터가 페치될 수 있다. 그러나 도 3의 예시는 이해의 편의를 위해 서로 분리된 것으로 도시한 것이며, 반드시 물리적으로 분리된 것으로 제한하는 것은 아니다.
또한, 본 명세서에서는 데이터 페치 등을 설명함에 있어서, 하나의 데이터 패킷(data packet)이 4개의 플릿(Flit)으로 구성된 예시로 설명하겠다. 따라서, 상기 인터페이스 컨트롤러(220)는 하나의 데이터 패킷을 구성하는 각각의 플릿마다 각 데이터 메모리 슬라이스(101)에 대응하는 노드 ID를 부여할 수 있다. 도 3에 도시된 예시를 참조하면, 1번 페치 버퍼(222-1)에 페치된 4개의 플릿들은 노드 ID가 '#1'로 부여 받았다. 마찬가지로, 2번 페치 버퍼(222-2)에 페치된 4개의 플릿들은 노드 ID가 '#2'로 부여 받았으며, 나머지 페치 버퍼(222-3 ~ 222-8)에 각각 페치된 플릿들 역시 노드 ID를 '#3 ~ #8'로 부여 받았다.
본 명세서의 일 실시예에 따르면, 상기 복수 개의 라우터(232)는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성할 수 있다. 각각의 라우터(232)는 상기 페치 버퍼(222)에 페치된 데이터를 입력 받아 피드 버퍼(242)에게 출력할 수 있고, 또는 인접한 다른 라우터(232)에게 전달할 수 있다. 이하 설명의 편의를 위해, 복수의 라우터 중 가장 왼쪽에 위치한 라우터부터 '1번 라우터(232-1), 2번 라우터(232-2), ......, 8번 라우터(232-8)'라고 명명하겠다.
도 4는 본 명세서에 따른 라우터의 구성을 설명하기 위한 참고도이다.
도 4를 참조하면, 3개의 라우터를 확인할 수 있다. 이 3개의 라우터 중에서 가운데 위치한 라우터(232-Ref)를 기준으로 본 명세서에 따른 라우터의 구성을 설명하도록 하겠다. 그리고 기준 라우터(232-Ref)와 인접한 두 개의 라우터 중 왼쪽에 위치한 라우터를 '제1 라우터(232-F)', 오른쪽에 위치한 라우터를 '제2 라우터(232-S)'라고 명명하겠다. 상기 '제1' 및 '제2'는 기준 라우터(232-Ref)와 인접한 두 개의 라우터를 구별하기 위한 명칭일 뿐 라우터 사이의 우선 순위를 의미하지 않는다.
본 명세서에 따른 라우터(232)는 메인 입력 포트(①), 제1 전달 출력 포트(②), 제1 전달 입력 포트(③), 제2 전달 출력 포트(④), 제2 전달 입력 포트(⑤) 및 메인 출력 포트(⑥)를 포함할 수 있다. 상기 메인 입력 포트(①)는 상기 메모리(101) 즉, 페치 버퍼(222)로부터 데이터가 입력되는 포트이다. 상기 제1 전달 출력 포트(②)는 인접한 제1 라우터(232-F)에게 데이터를 전달하는 포트이다. 상기 제1 전달 입력 포트(③)는 인접한 제1 라우터(232-F)로부터 전달된 데이터가 입력되는 포트이다. 상기 제2 전달 출력 포트(④)는 인접한 제2 라우터(232-S)에게 데이터를 전달하는 포트이다. 상기 제2 전달 입력 포트(⑤)는 인접한 제2 라우터(232-S)로부터 전달된 데이터가 입력되는 포트이다. 상기 메인 출력 포트(⑥)는 상기 연산 유닛(300) 즉, 피드 버퍼(242)에 데이터를 제공하기 위한 포트이다.
따라서, 기준 라우터(232-Ref)의 제1 전달 출력 포트(②)를 통해 출력된 데이터는 제1 라우터(232-F)의 제2 전달 입력 포트(⑤)로 입력된다. 제1 라우터(232-F)의 제2 전달 출력 포트(④)를 통해 출력된 데이터는 기준 라우터(232-Ref)의 제1 전달 입력 포트(③)로 입력된다. 기준 라우터(232-Ref)의 제2 전달 출력 포트(④)를 통해 출력된 데이터는 제2 라우터(232-S)의 제1 전달 입력 포트(③)로 입력된다. 제2 라우터(232-S)의 제1 전달 출력 포트(②)를 통해 출력된 데이터는 기준 라우터(232-Ref)의 제2 전달 입력 포트(⑤)로 입력된다.
한편, 다시 도 3을 참조하면, 1번 라우터(232-1)는 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 도시되어 있지 않다. 1번 라우터(232-1)는 물리적 또는 소프트웨어적으로 가장 왼쪽에 위치할 수 있기 때문에 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 물리적으로 존재하지 않을 수 있다. 또는 1번 라우터(232-1)는 물리적으로 제1 전달 출력 포트(②) 및 제1 전달 입력 포트(③)가 존재할 수 있지만, 소프트웨어적으로 사용하지 않을 수 있다. 8번 라우터(232-8) 역시 제2 전달 출력 포트(④) 및 제2 전달 입력 포트(⑤)가 도시되어 있지 않은데, 1번 라우터(232-1)와 같은 이유이다.
한편, 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하겠다. 따라서, 각각의 라우터(232)는 메인 입력 포트(①) 및 제2 전달 입력 포트(⑤)를 통해 입력된 데이터를 전달할 경우, 제1 전달 출력 포트(②)를 통해서만 전달하는 것으로 가정하겠다. 그리고 각각의 라우터(232)는 제1 전달 입력 포트(③)를 통해 입력된 데이터를 전달할 경우, 제2 전달 출력 포트(④)를 통해서만 전달하는 것으로 가정하겠다. 상기와 같이 데이터의 전달 과정에서 입출력 포트가 설정된 경우, 데이터의 중복 출력을 방지할 수 있다. 또한, 상기 반시계 방향의 전달은 본 명세서에 따른 연산 처리 장치를 제한하는 것은 아니며, 시계 방향으로 바뀐 경우, 입출력 포트의 관계 역시 바뀔 수 있음을 이해해야 한다.
본 명세서에 따른 라우터(232)는 메인 입력 포트(①)를 통해 입력된 데이터의 노드 ID를 읽고, 데이터 처리 맵핑 테이블에 따라 해당 노드 ID를 가진 데이터를 처리할 수 있다. 본 명세서의 일 실시예에 따르면, 상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장할 수 있다. 다시 말해서, 본 명세서에 따른 라우터(232)는 노드 ID에 따라 데이터를 다른 라우터에게 전달하지 않고 차단할 것인지, 반사할 것인지 또는 출력할 것인지를 데이터 처리 맵핑 테이블에 따라 처리할 수 있다. 상기 데이터 처리 맵핑 테이블과 관련하여, 본 명세서에 따른 라우터(232)는 인접한 하나의 라우터로부터 입력된 데이터를 인접한 다른 라우터에게 출력하는 것(데이터 전달)을 기본 동작으로 설정되어 있을 수 있으나 반드시 이에 한정된 것은 아니다. 따라서, 상기 데이터 처리 맵핑 테이블은 다른 라우터에서 입력된 데이터를 처리하는 방법에 대한 정보라고 할 수 있다.
데이터 처리 맵핑 테이블에서 '차단'이란, 제2 전달 입력 포트(⑤) 또는 제1 전달 입력 포트(③)를 통해 입력된 데이터를 제1 전달 출력 포트(②) 또는 제2 전달 출력 포트(④)를 통해 전달하지 않는 것을 의미한다. 데이터 처리 맵핑 테이블에서 '반사'란, 제2 전달 입력 포트(⑤)를 통해 입력된 데이터를 제2 전달 출력 포트(④)를 통해서 출력하는 것을 의미한다. 또는 데이터 처리 맵핑 테이블에서 '반사'란, 제1 전달 출력 포트(②)를 통해 출력되어야 할 데이터를 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리하는 것을 의미한다. 데이터 처리 맵핑 테이블에서 '출력'이란, 제1 전달 입력 포트(③)를 통해 입력된 데이터를 메인 출력 포트(⑥)를 통해 출력하는 것을 의미한다.
따라서, 상기 데이터 처리 맵핑 테이블에 어떠한 내용을 기재하는가에 따라 복수의 라우터(232)가 구성하는 소프트웨어적 토폴로지가 다양해 질 수 있다. 상기 페치 네트워크 컨트롤러(231)는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정할 수 있는바, 상기 페치 네트워크 컨트롤러(231)에 의해 소프트웨어적 토폴로지가 결정될 수 있다. 상기 데이터 처리 맵핑 테이블에 대해서는 도 5 내지 도 12의 다양한 실시예를 통해서 보다 자세히 설명하겠다.
도 5는 제1 실시예에 따른 소프트웨어적 토폴로지다.
도 5를 참조하면, 제 1실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 하나의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 페치 버퍼(222-1)에 저장된 데이터는 1번 피드 버퍼(242-1)에게만 전달되고, 2번 페치 버퍼(222-2)에 저장된 데이터는 2번 피드 버퍼(242-2)에게만 전달되는 실시예이다.
도 6은 제1 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
도 6을 참조하면, 데이터 처리 맵핑 테이블은 노드 ID에 따라 데이터를 처리하는 방식(예: 차단, 반사, 출력)으로 나누어진 것을 확인할 수 있다. 그리고 데이터 처리 맵핑 테이블의 항목에는 실행 여부가 기재되어 있을 수 있다. '1'이 기재된 경우 해당 항목을 실행하는 것을 의미하며, '0'이 기재된 경우 해당 항목을 실행하지 않는 것을 의미한다.
상기 데이터 처리 맵핑 테이블에 따라 도 5의 1번 라우터(232-1)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하기 때문에, 1번 라우터(232-1)의 메인 입력 포트(①)로 입력된 ID #1 데이터는 제1 전달 출력 포트(②)를 통해서 전달될 것이다. 이때, 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에서 ID #1 데이터를 반사하는 것으로 설정하였기 때문에, 제1 전달 출력 포트(②)를 통해 출력되어야 할 ID #1 데이터가 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리된다. 그리고 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에서 ID #1 데이터를 출력하는 것으로 설정하였기 때문에, ID #1 데이터는 메인 출력 포트(⑥)를 통해 출력된다. 그리고 나머지 ID #2 ~ #8 데이터에 대해서는 차단하며, 반사하지 않으며, 출력도 하지 않는다. 따라서, 도 5의 1번 페치 버퍼(222-1)에 페치된 데이터는 1번 피드 버퍼(242-1)에게만 출력될 수 있다. 도 5의 2번 라우터(232-2) 내지 8번 라우터(232-8) 역시 동일한 원리에 의해 동작하므로, 불필요한 반복 설명은 생략하도록 하겠다.
도 7는 제2 실시예에 따른 소프트웨어적 토폴로지다.
도 7을 참조하면, 제 2실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 2개의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 페치 버퍼(222-1)에 저장된 데이터는 1번 피드 버퍼(242-1)와 2번 피드 버퍼(242-2)에게 전달되고, 2번 페치 버퍼(222-2)에 저장된 데이터는 1번 피드 버퍼(242-1)와 2번 피드 버퍼(242-2)에게 전달되는 실시예이다.
도 8은 제2 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
상기 데이터 처리 맵핑 테이블에 따라 도 7의 1번 라우터(232-1)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 앞서 제1 실시예에서 1번 라우터(232-1)가 ID #1 데이터를 1번 피드 버퍼(242-1)에 어떻게 출력하는지 설명하였으므로 반복 설명은 생략하겠다. 그리고 ID #1 데이터는 제1 전달 입력 포트(③)를 통해 입력된 데이터처럼 처리되기 때문에, ID #1 데이터는 제2 전달 출력 포트(④)를 통해서 2번 라우터(232-2)에게 전달될 수 있다. 도 7의 2번 라우터(232-2)를 살펴보면, ID #1 데이터에 대해서는 차단하지 않고, 반사하지 않으며, 출력을 실행한다. 따라서, 2번 라우터(232-2)는 1번 라우터(232-1)에서 ID #1 데이터가 입력되면 2번 피드 버퍼(242-2)에 출력할 수 있다. 따라서, 도 7의 1번 페치 버퍼(222-1)에 페치된 데이터는 1번 피드 버퍼(242-1) 및 2번 피드 버퍼(242-2)에게 출력될 수 있다.
2번 라우터(232-2)를 살펴보면, ID #2 데이터에 대해서는 차단하지 않고, 반사하지 않으며, 출력을 실행한다. 본 명세서에서 라우터(232)가 데이터를 반시계 방향으로 전달하는 것으로 가정하기 때문에, 2번 라우터(232-2)의 메인 입력 포트(①)로 입력된 ID #2 데이터는 제1 전달 출력 포트(②)를 통해서 1번 라우터(232-1)에게 전달될 수 있다. 그리고 도 7의 1번 라우터(232-1)를 살펴보면, ID #2 데이터에 대해서는 차단하지 않고, 반사하며, 출력을 실행한다. 1번 라우터(232-1)에 입력된 ID #2 데이터는, ID #1 데이터와 동일하게, 1번 라우터(232-1)에 의해 1번 피드 버퍼(242-1)에 출력될 수 있다. 그리고 ID #2 데이터는 다시 피드 버퍼(242-2)에게 전달될 수 있다. 2번 라우터(232-2)는 제1 전달 입력 포트(③)를 통해 1번 라우터(232-1)로부터 다시 입력된 ID #2 데이터를 메인 출력 포트(⑥)를 통해 출력할 수 있다. 따라서, 도 7의 2번 페치 버퍼(222-2)에 페치된 데이터는 1번 피드 버퍼(242-1) 및 2번 피드 버퍼(242-2)에게 출력될 수 있다.
한편, 도 7에서 ID #1 데이터는 2번 라우터(232-2)의 제1 전달 입력 포트(③)를 통해 입력되므로, 2번 라우터(232-2)의 제2 전달 출력 포트(④)를 통해 출력된다. 따라서, ID #1 데이터가 다시 1번 라우터(232-1)에게 입력되지 않는다. 부가적으로, 3번 라우터(232-3)는 자신의 제1 전달 입력 포트(③)를 통해 입력된 ID #1 데이터를 차단한다. 또한, 라우터(232-3)는 자신의 제1 전달 입력 포트(③)를 통해 입력된 ID #2 데이터 역시 차단한다.
도 7의 1번 라우터(232-1)와 2번 라우터(232-2)는 나머지 ID #3 ~ #8 데이터에 대해서는 차단하며, 반사하지 않으며, 출력도 하지 않는다.
도 7의 3번 라우터(232-3)와 4번 라우터(232-4), 5번 라우터(232-5)와 6번 라우터(232-6), 7번 라우터(232-7)와 8번 라우터(232-8) 역시 동일한 원리에 의해 동작하므로, 불필요한 반복 설명은 생략하도록 하겠다.
도 9는 제3 실시예에 따른 소프트웨어적 토폴로지다.
도 9를 참조하면, 제 3실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 4개의 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 내지 4번 페치 버퍼(222-1 ~ 222-4)에 저장된 데이터가 각각 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에게 전달되는 실시예이다.
도 10은 제3 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
앞서 제1 실시예 및 제2 실시예를 통해 ID #1 데이터 및 ID #2 데이터의 처리에 대해서 설명하였으므로, 도 10에서는 도 9의 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터의 처리에 대해서 대표로 살펴보겠다. 우선, 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터는 3번 라우터(232-3)의 메인 입력 포트(①)를 통해 입력되고, 3번 라우터(232-3)의 제1 전달 출력 포트(②)로 출력된다.
2번 라우터(232-2)는 제2 전달 입력 포트(⑤)를 통해 ID #3 데이터를 전달받고, ID #3 데이터를 2번 라우터(232-2)의 제1 전달 출력 포트(②)로 출력한다.
1번 라우터(232-1)는 제2 전달 입력 포트(⑤)를 통해 ID #3 데이터를 전달받는다. 1번 라우터(232-1)의 데이터 처리 맵핑 테이블에 따르면, 1번 라우터(232-1)는 ID #3 데이터에 대해서 반사 및 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 1번 피드 버퍼(242-1)에 출력되고 그리고 1번 라우터(232-1)의 제2 전달 출력 포트(④)로 출력된다.
2번 라우터(232-2)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 2번 라우터(232-2)의 데이터 처리 맵핑 테이블에 따르면, 2번 라우터(232-2)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 2번 피드 버퍼(242-2)에 출력되고 그리고 2번 라우터(232-2)의 제2 전달 출력 포트(④)로 출력된다.
3번 라우터(232-3)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 3번 라우터(232-3)의 데이터 처리 맵핑 테이블에 따르면, 3번 라우터(232-3)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 3번 피드 버퍼(242-3)에 출력되고 그리고 3번 라우터(232-3)의 제2 전달 출력 포트(④)로 출력된다.
4번 라우터(232-4)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 4번 라우터(232-4)의 데이터 처리 맵핑 테이블에 따르면, 4번 라우터(232-4)는 ID #3 데이터에 대해서 출력을 실행하므로, ID #3 데이터는 메인 출력 포트(⑥)를 통해 4번 피드 버퍼(242-4)에 출력되고 그리고 4번 라우터(232-4)의 제2 전달 출력 포트(④)로 출력된다.
5번 라우터(232-5)는 제1 전달 입력 포트(③)를 통해 ID #3 데이터를 전달받는다. 5번 라우터(232-5)의 데이터 처리 맵핑 테이블에 따르면, 5번 라우터(232-5)는 ID #3 데이터에 대해서 차단을 실행하므로, ID #3 데이터는 더 이상 출력 또는 전달되지 않는다.
따라서, 도 9의 3번 페치 버퍼(222-3)에 페치된 ID #3 데이터는 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에 전달될 수 있다. 또한, ID #1 데이터, ID #2 데이터 및 ID #4 데이터 역시 동일하게 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)에 전달될 수 있다. 한편, ID #5 데이터 내지 ID #8 데이터는 동일한 원리에 의해 5번 피드 버퍼 내지 8번 피드 버퍼(242-5 ~ 242-8)에 전달될 수 있다.
도 11는 제4 실시예에 따른 소프트웨어적 토폴로지다.
도 11을 참조하면, 제 4실시예는 각각의 페치 버퍼(222)에 페치된 데이터가 모든 피드 버퍼(242)에게 전달되는 예시이다. 즉, 1번 내지 8번 페치 버퍼(222-1 ~ 222-8)에 저장된 데이터가 각각 1번 피드 버퍼 내지 8번 피드 버퍼(242-1 ~ 242-8)에게 전달되는 실시예이다.
도 12은 제4 실시예에 따른 데이터 처리 맵핑 테이블의 참고도이다.
앞서, 제1 실시예 내지 제3 실시예를 통해 각 라우터(232)가 데이터 처리 맵핑 테이블에 따라 입력된 데이터를 어떻게 처리하는지 충분히 설명하였으므로, 반복적인 설명은 생략하도록 하겠다. 또한, 도 5 내지 도 12를 통해 확인할 수 있듯이, 상기 페치 네트워크 컨트롤러(231)는 재구성된 소프트웨어적 토폴로지 내 같은 그룹에 속하는 라우터(232)의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정할 수 있다.
한편, 지금까지는 라우터(232)가 하나의 데이터를 어떻게 처리하는지에 대해서 설명하였다. 그러나 다수의 페치 버퍼(222)에 페치된 다수의 데이터가 함께 처리되어야 한다. 종래 기술은 라우터에 충분히 큰 버퍼(buffer)를 구비하고, 충돌이 발생할 때 문제를 해결하는 방식이지만, 본 명세서에 따른 연산 처리 장치(10)는 보다 효과적으로 다수의 데이터를 처리하는 방법을 제시할 수 있다. 이를 위해서, 상기 인터페이스 컨트롤러(231)는 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터(232)에 입력하는 타이밍을 제어할 수 있다.
도 13은 본 명세서의 일 실시예에 따른 데이터 입력 타이밍의 예시도이다.
도 13을 참조하면, 복수 개의 라우터(232)의 소프트웨어적 토폴로지가 도 9에 도시된 제3 실시예와 동일한 것을 확인할 수 있다. 따라서, 1번 페치 버퍼 내지 4번 페치 버퍼(222-1 ~ 222-4)에 페치된 데이터가 1번 라우터 내지 4번 라우터(232-1 ~ 232-4)에 입력될 때 충돌을 일으키지 않고, 1번 피드 버퍼 내지 4번 피드 버퍼(242-1 ~ 242-4)로 출력되어야 한다. 한편, 본 명세서에서는 제3 실시예를 통해 데이터 입력 타이밍을 설명하겠지만, 본 명세서에 따른 연산 처리 장치(10)가 상기 예시에 제한되는 것은 아니다.
본 명세서에서는 하나의 데이터 패킷(data packet)이 4개의 플릿(Flit)으로 구성된 예시로 설명하므로, 플릿 단위로 데이터 입력 타이밍을 구별하여 설명하겠다. 따라서, 도 13에 도시된 예시에서, 플릿에 기재된 번호는 입력 순서를 의미한다.
본 명세서에 따른 상기 인터페이스 컨트롤러(221)는 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터(232)에 입력시킬 수 있다.
도 13을 참조하면, 1번 페치 버퍼(222-1)는 1번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 1번 페치 버퍼(222-1)에 페치된 데이터를 1번 라우터(232-1)에 입력시킬 수 있다. 그리고 2번 페치 버퍼(222-2)는 4번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 3번 입력되는 시간만큼 대기한 후에, 4번 플릿이 1번 페치 버퍼(222-1)에서 1번 라우터(232-1)에 입력될 때 동시에 2번 페치 버퍼(222-1)에 페치된 데이터를 2번 라우터(232-2)에 입력시킬 수 있다. 마찬가지로, 3번 페치 버퍼(222-3)는 7번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 6번 입력되는 시간만큼 대기한 후에, 7번 플릿이 2번 페치 버퍼(222-2)에서 2번 라우터(232-2)에 입력될 때 동시에 3번 페치 버퍼(222-3)에 페치된 데이터를 3번 라우터(232-3)에 입력시킬 수 있다. 동일하게, 4번 페치 버퍼(222-4)는 10번 플릿을 가지고 있으므로, 상기 인터페이스 컨트롤러(221)는 플릿이 9번 입력되는 시간만큼 대기한 후에, 10번 플릿이 3번 페치 버퍼(222-3)에서 3번 라우터(232-3)에 입력될 때 동시에 4번 페치 버퍼(222-4)에 페치된 데이터를 4번 라우터(232-4)에 입력시킬 수 있다.
상기 인터페이스 컨트롤러(221)는 노드 ID와 상기 페치 네트워크 컨트롤러(231)가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터(232)의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출할 수 있다. 일 예로, 상기 인터페이스 컨트롤러(221)는 아래 수식 1을 통해 각 페치 버퍼(222)에 해당하는 최초 대기 시간을 산출할 수 있다.
[수학식 1]
warm_up_period = base + (router_id % #_nodes) * stride
상기 수학식 1에서 'warm_up_period'는 최초 대기 시간, 'base'는 시스템 또는 물리적으로 대기해야 하는 기본 시간, 'router_id'는 라우터의 번호, '#_nodes'는 소프트웨어적 토폴로지를 구성하는 라우터의 개수, 'stride'는 라우터의 개수을 고려한 변수이다. 도 13에 도시된 예시는 4개의 라우터가 소프트웨어적 토폴로지를 구성하므로, 'router_id'는 0부터 3이고, '#_nodes'는 4이고, 'stride'는 3이다. 참고로, '%' 기호는 나눔셈의 나머지를 구하는 연산 기호이다.
기본 시간('base')를 '1'으로 가정할 때, 1번 페치 버퍼(222-1)의 최초 대기 시간은 '1'(=1 + (0 % 4) * 3)이다. 2번 페치 버퍼(222-2)의 최초 대기 시간은 '4'(=1 + (1 % 4) * 3)이다. 3번 페치 버퍼(222-3)의 최초 대기 시간은 '7'(=1 + (2 % 4) * 3)이다. 그리고 4번 페치 버퍼(222-4)의 최초 대기 시간은 '10'(=1 + (3 % 4) * 3)이다.
상기 내용에 따라 1번 페치 버퍼부터 4번 페치 버퍼(222-1 ~ 222-4)까지 첫 번째 데이터 패킷을 라우터(232)에 출력한 이후, 다시 1번 페치 버퍼(222-1)부터 두 번째 데이터 패킷을 라우터(232)에 출력해야 한다. 이를 위해서, 상기 인터페이스 컨트롤러(2221)는 상기 라우터(232)의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간을 산출할 수 있다. 일 예로, 상기 인터페이스 컨트롤러(221)는 아래 수식 2을 통해 각 페치 버퍼(221)의 중간 대기 시간을 산출할 수 있다.
[수학식 2]
injection_period = (#flits * #_nodes) + (#_nodes * hop delay)
상기 수학식 2에서 'injection_period'는 중간 대기 시간, '#flits'은 하나의 패킷에 포함된 플릿의 개수, '#_nodes'는 소프트웨어적 토폴로지를 구성하는 라우터의 개수, 'hop delay'는 라우터와 라우터 사이의 전달 과정에서 발생하는 지연 시간과 관련된 수치이다. 홉 지연 시간('hop delay')을 '0'으로 가정할 때, 1번 페치 버퍼1 내지 4번 페치 버퍼(222-1 ~ 222-4)의 중간 대기 시간은 '16'(=(4 * 4) + (4 * 0))이다.
상기 인터페이스 컨트롤러(221)는, 미리 설정된 크기의 데이터(즉, 데이터 패킷)를 각각의 라우터(232)에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터(즉, 데이터 패킷)를 다시 각각의 라우터에 입력할 수 있다.
본 명세서의 일 실시예에 따르면, 상기 인터페이스 컨트롤러(221)는 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단할 수 있다. 도 13에 도시된 예시에 따르면, 상기 중간 대기 시간과 관련된 수치 '16'은 각 페치 버퍼(222)의 앞선 대기 시간 즉, 최초 대기 시간에 추가될 수 있다. 따라서, 1번 페치 버퍼(222-1)의 두 번째 패킷의 첫 플릿의 대기 시간은 '17'(=1 + 16)이다. 2번 페치 버퍼(222-2)의 두 번째 패킷의 첫 플릿의 대기 시간은 '20'(=4 + 16)이다. 3번 페치 버퍼(222-3)의 두 번째 패킷의 첫 플릿의 대기 시간은 '23'(=7 + 16)이다. 그리고 4번 페치 버퍼(222-4)의 두 번째 패킷의 첫 플릿의 대기 시간은 '26'(=10 + 16)이다. 상기 내용을 파이썬(Python)으로 작성하면 아래와 같다.
본 명세서의 일 측면에 따르면, 데이터의 흐름 제어 로직이 간단해져서 라우터의 버퍼를 제거 또는 최소화 할 수 있다. 이를 통해 칩에서 라우터가 차지하는 영역을 줄일 수 있으며, 동시에 전력 소모량을 감소시킬 수 있다. 본 명세서의 다른 측면에 따르면, 멀티캐스팅을 위한 패킷의 정보를 최소화 시킬 수 있다. 본 명세서의 또 다른 측면에 따르면, 노드 수가 증가여도 비용 증가가 최소화될 수 있으며, 최대 밴드위스를 달성할 수 있다.
이상, 첨부된 도면을 참조로 하여 본 명세서의 실시예를 설명하였지만, 본 명세서가 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며, 제한적이 아닌 것으로 이해해야만 한다.
[부호의 설명]
10 : 연산 처리 장치
100 : 메모리
101 : 데이터 메모리 슬라이스
200 : 페치 유닛
210 : 페치 시퀀서
220 : 네트워크 인터페이스
221 : 인터페이스 컨트롤러
222 : 페치 버퍼
230 : 페치 네트워크
231 : 페치 네트워크 컨트롤러
232 : 라우터
240 : 피드 모듈
242 : 피드 버퍼
250 : 연산 시퀀서 모듈
300 : 연산 유닛
310 : 닷 프로덕트 엔진
400 : 커밋 유닛
410 : 커밋 시퀀서
Claims (15)
- 뉴럴 네트워크의 프로세싱을 수행하기 위한 연산에 필요한 데이터를 메모리에서 읽어와 연산 유닛에 제공하는 페치 유닛을 포함하는 연산 처리 장치에 있어서,상기 페치 유닛은,입력된 데이터의 노드 ID에 따라 상기 입력된 데이터를 처리하는 방식이 기재된 데이터 처리 맵핑 테이블을 가진 복수 개의 라우터; 및상기 복수 개의 라우터가 가진 각각의 데이터 처리 맵핑 테이블을 연산 형태에 따른 소프트웨어적 토폴로지를 형성하도록 재구성하는 페치 네트워크 컨트롤러;를 포함하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 1에 있어서,상기 복수 개의 라우터는 하드웨어적 1차원 망형 토폴로지(1-D mesh topology)를 형성한 것을 특징으로 하는 연산 처리 장치.
- 청구항 2에 있어서,각각의 라우터는,상기 메모리로부터 데이터가 입력되는 메인 입력 포트, 인접한 제1 라우터에게 데이터를 전달하는 제1 전달 출력 포트, 인접한 제1 라우터로부터 전달된 데이터가 입력되는 제1 전달 입력 포트, 인접한 제2 라우터에게 데이터를 전달하는 제2 전달 출력 포트, 인접한 제2 라우터로부터 전달된 데이터가 입력되는 제2 전달 입력 포트 및 상기 연산 유닛에 데이터를 제공하기 위한 메인 출력 포트를 포함하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 1에 있어서,상기 데이터 처리 맵핑 테이블은 입력된 데이터의 차단, 반사 및 출력 여부에 대한 정보를 저장한 것을 특징으로 하는 연산 처리 장치.
- 청구항 4에 있어서,상기 페치 네트워크 컨트롤러는 재구성하고자 하는 토폴로지에 따라 상기 차단, 반사 및 출력 여부의 실행 여부를 설정하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 5에 있어서,상기 페치 네트워크 컨트롤러는 재구성된 토폴로지 내 같은 그룹에 속하는 라우터의 데이터 처리 맵핑 테이블 내 차단 및 출력을 동일하게 설정하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 1에 있어서,상기 메모리는 상기 복수 개의 라우터와 동일한 개수의 데이터 메모리 슬라이스를 포함하는 하는 연산 처리 장치.
- 청구항 7에 있어서,상기 페치 유닛은,상기 각 데이터 메모리 슬라이스에 저장된 데이터가 페치되는 네트워크 인터페이스;상기 네트워크 인터페이스에 페치된 데이터를 전달하는 페치 네트워크; 및상기 페치 네트워크에서 전달된 데이터를 연산 유닛에 제공하는 피드 모듈;을 포함하고,상기 복수 개의 라우터 및 페치 네트워크 컨트롤러는, 상기 페치 네트워크에 포함되는 것을 특징으로 하는 연산 처리 장치.
- 청구항 8에 있어서,상기 네트워크 인터페이스는,페치된 데이터를 저장하는 페치 버퍼; 및상기 페치된 데이터에 각각의 데이터 메모리 슬라이스에 대응하는 노드 ID를 부여하는 인터페이스 컨트롤러;를 포함하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 9에 있어서,상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터를 각각의 라우터에 입력하는 타이밍을 제어하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 10에 있어서,상기 인터페이스 컨트롤러는, 노드 ID에 따라 상기 페치된 데이터의 최초 대기 시간을 산출하고, 산출된 최초 대기 시간 이후에 상기 페치된 데이터를 각각의 라우터에 입력하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 11에 있어서,상기 인터페이스 컨트롤러는, 노드 ID와 상기 페치 네트워크 컨트롤러가 상기 데이터 처리 맵핑 테이블을 통해 구성한 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 최초 대기 시간을 산출하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 12에 있어서,상기 인터페이스 컨트롤러는, 상기 라우터의 소프트웨어적 토폴로지 구성에 따른 변수를 이용하여 중간 대기 시간을 산출하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 13에 있어서,상기 인터페이스 컨트롤러는, 미리 설정된 크기의 데이터를 각각의 라우터에 입력하며, 상기 중간 대기 시간이 종료된 이후 상기 미리 설정된 크기의 데이터를 다시 각각의 라우터에 입력하는 것을 특징으로 하는 연산 처리 장치.
- 청구항 14에 있어서,상기 인터페이스 컨트롤러는, 산출된 중간 대기 시간을 앞선 데이터의 대기 시간에 추가하여 중간 대기 시간이 종료 여부를 판단하는 것을 특징으로 하는 연산 처리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/003,031 US12117946B2 (en) | 2020-06-22 | 2020-10-12 | Neural network processor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200075628A KR102474053B1 (ko) | 2020-06-22 | 2020-06-22 | 뉴럴네트워크 프로세서 |
KR10-2020-0075628 | 2020-06-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2021261666A1 true WO2021261666A1 (ko) | 2021-12-30 |
Family
ID=79176621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2020/013849 WO2021261666A1 (ko) | 2020-06-22 | 2020-10-12 | 뉴럴네트워크 프로세서 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12117946B2 (ko) |
KR (1) | KR102474053B1 (ko) |
WO (1) | WO2021261666A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12095653B2 (en) * | 2021-06-15 | 2024-09-17 | Applied Materials, Inc. | Router architecture for multi-dimensional topologies in on-chip and on-package networks |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101310769B1 (ko) * | 2011-11-30 | 2013-09-25 | (주) 엔에프랩 | 스마트 라우터 및 그 제어방법, 및 이를 이용한 스마트 네트워크 서비스 제공 시스템 및 방법 |
KR101486025B1 (ko) * | 2007-05-30 | 2015-01-22 | 엑스모스 엘티디 | 프로세서에서의 쓰레드 스케쥴링 |
US20170357891A1 (en) * | 2016-05-26 | 2017-12-14 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
KR20180133672A (ko) * | 2017-06-07 | 2018-12-17 | 한국과학기술원 | 멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들 |
KR20190035551A (ko) * | 2017-09-25 | 2019-04-03 | 에이알엠 리미티드 | 그래픽 텍스처 매핑 유닛들에서의 콘벌루션 연산의 수행 |
KR20190116024A (ko) * | 2018-04-03 | 2019-10-14 | 주식회사 퓨리오사에이아이 | 뉴럴 네트워크 프로세서 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274745A (en) * | 1989-07-28 | 1993-12-28 | Kabushiki Kaisha Toshiba | Method of processing information in artificial neural networks |
TW201727415A (zh) * | 2016-01-27 | 2017-08-01 | 鴻海精密工業股份有限公司 | 結合人工標記和二維條碼進行電腦視覺定位的系統和方法 |
US20180253636A1 (en) * | 2017-03-06 | 2018-09-06 | Samsung Electronics Co., Ltd. | Neural network apparatus, neural network processor, and method of operating neural network processor |
FR3087560A1 (fr) * | 2018-10-23 | 2020-04-24 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Retro-propagation d'erreurs sous forme impulsionnelle dans un reseau de neurones impulsionnels |
US20200311627A1 (en) * | 2019-03-25 | 2020-10-01 | Microsoft Technology Licensing, Llc | Tracking data flows in an organization |
US11880760B2 (en) * | 2019-05-01 | 2024-01-23 | Samsung Electronics Co., Ltd. | Mixed-precision NPU tile with depth-wise convolution |
-
2020
- 2020-06-22 KR KR1020200075628A patent/KR102474053B1/ko active IP Right Grant
- 2020-10-12 US US18/003,031 patent/US12117946B2/en active Active
- 2020-10-12 WO PCT/KR2020/013849 patent/WO2021261666A1/ko active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101486025B1 (ko) * | 2007-05-30 | 2015-01-22 | 엑스모스 엘티디 | 프로세서에서의 쓰레드 스케쥴링 |
KR101310769B1 (ko) * | 2011-11-30 | 2013-09-25 | (주) 엔에프랩 | 스마트 라우터 및 그 제어방법, 및 이를 이용한 스마트 네트워크 서비스 제공 시스템 및 방법 |
US20170357891A1 (en) * | 2016-05-26 | 2017-12-14 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
KR20180133672A (ko) * | 2017-06-07 | 2018-12-17 | 한국과학기술원 | 멀티 프로세서 시스템 내의 상호연결을 위한 중재 방법 및 이를 수행하는 장치들 |
KR20190035551A (ko) * | 2017-09-25 | 2019-04-03 | 에이알엠 리미티드 | 그래픽 텍스처 매핑 유닛들에서의 콘벌루션 연산의 수행 |
KR20190116024A (ko) * | 2018-04-03 | 2019-10-14 | 주식회사 퓨리오사에이아이 | 뉴럴 네트워크 프로세서 |
Also Published As
Publication number | Publication date |
---|---|
KR20210157615A (ko) | 2021-12-29 |
US20230244620A1 (en) | 2023-08-03 |
KR102474053B1 (ko) | 2022-12-06 |
US12117946B2 (en) | 2024-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021261667A1 (ko) | 뉴럴네트워크 프로세서 | |
US4920484A (en) | Multiprocessor/memory interconnection network wherein messages sent through the network to the same memory are combined | |
EP1226501B1 (en) | Network switch and components and method of operation | |
US5175733A (en) | Adaptive message routing for multi-dimensional networks | |
US4621359A (en) | Load balancing for packet switching nodes | |
EP1208676B1 (en) | Network switch using network processor | |
US7814283B1 (en) | Low latency request dispatcher | |
US6009092A (en) | LAN switch architecture | |
US20120072699A1 (en) | Logic cell array and bus system | |
EP1257100B1 (en) | Octagonal interconnection network for linking processing nodes on a soc device and method of operating same | |
WO2001016779A1 (en) | Network processor, memory organization and methods | |
WO2021261666A1 (ko) | 뉴럴네트워크 프로세서 | |
WO2020256312A1 (ko) | 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치 | |
JPH0589066A (ja) | 多次元並列処理システム | |
EP1226509A1 (en) | Network processor processing complex and methods | |
US5793764A (en) | LAN switch with distributed copy function | |
US7333489B1 (en) | System and method for storing frame header data | |
JP4128447B2 (ja) | 並列演算及び並列メモリーアクセスのためのスケーラブルなインターコネクト構造 | |
JPH04344970A (ja) | ニューラルネット処理装置 | |
KR102402255B1 (ko) | 멀티코어 뉴로모픽 장치 및 그 장치에서 수행되는 글로벌 라우팅 방법 | |
JPS6367047A (ja) | パケツトスイツチ | |
Sadeghi et al. | Hardware Implementation of a Resource-Efficient Router for Multi-Core Spiking Neural Networks | |
KR100363886B1 (ko) | 멀티레이어 패킷 스위치 시스템에 있어서 네트웍 프로세싱모듈의 인터페이스 방법 및 이를 위한 멀티레이어 패킷스위치 시스템 | |
Pan et al. | Short circuits in buffered multi-stage interconnection networks | |
Frazier | Ariel: A scalable multiprocessor for the simulation of neural networks |
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: 20941764 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 20941764 Country of ref document: EP Kind code of ref document: A1 |