WO2021246586A1 - Method for accessing parameter for hardware accelerator from memory, and device using same - Google Patents

Method for accessing parameter for hardware accelerator from memory, and device using same Download PDF

Info

Publication number
WO2021246586A1
WO2021246586A1 PCT/KR2020/015480 KR2020015480W WO2021246586A1 WO 2021246586 A1 WO2021246586 A1 WO 2021246586A1 KR 2020015480 W KR2020015480 W KR 2020015480W WO 2021246586 A1 WO2021246586 A1 WO 2021246586A1
Authority
WO
WIPO (PCT)
Prior art keywords
parameter
bits
neural network
layer
memory
Prior art date
Application number
PCT/KR2020/015480
Other languages
French (fr)
Korean (ko)
Inventor
정태영
Original Assignee
오픈엣지테크놀로지 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 오픈엣지테크놀로지 주식회사 filed Critical 오픈엣지테크놀로지 주식회사
Publication of WO2021246586A1 publication Critical patent/WO2021246586A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Definitions

  • the present invention relates to computing technology, and to a data transfer technology in computer hardware for effectively driving a hardware accelerator, particularly a neural network accelerator.
  • a neural network is a well-known technology used as one of the technologies to implement artificial intelligence.
  • FIG. 1 is a conceptual diagram illustrating a partial configuration of a neural network presented to aid understanding of the present invention.
  • the neural network 600 may include a plurality of layers.
  • the first layer 610 among the plurality of layers may output output data 611 called a feature map or activation.
  • the output data 611 output from the first layer 610 may be provided as input data of the second layer 620 downstream of the first layer 610 .
  • Each of the above layers may be regarded as a data conversion function module that converts input input data into predetermined output data.
  • the first layer 610 may be regarded as a data conversion function module that converts input data 609 input to the first layer 610 into output data 611 .
  • the structure of the first layer 610 must be defined.
  • input variables in which the input data 609 input to the first layer 610 are stored should be defined, and the output data 611 output from the first layer 610 should be defined.
  • Output variables representing The first layer 610 may use a set of weights 612 to perform its function.
  • the set of weights 612 may be values multiplied by the input variables to calculate the output variables from the input variables.
  • the set of weights 612 includes various It may be one of the parameters.
  • each of the above parameters can be numeric with a given resolution.
  • all parameters included in all layers included in a specific neural network may have a predetermined fixed resolution.
  • parameters used by all the layers 610 , 620 , ... included in the neural network 600 may have a resolution of 8 bits.
  • the number of parameters used in each layer and the range of specific values may be different for each layer. Also, when the neural network 600 is changed from the first state to the second state by learning, the values of the parameters used by the specific layer in the first state are different from the values of the parameters used by the specific layer in the second state. can be different.
  • the second state may be a state evolved from the first state. The parameters used by the specific layer may change in value according to the evolution.
  • the calculation process for calculating the output data 611 output from the first layer 610 from the input data 609 input to the first layer 610 of the neural network 600 may be implemented as software, but as hardware. may be implemented.
  • FIG. 2 shows a main structure of a neural network computing device including a neural network accelerator in which a function of a neural network is implemented by hardware, and a part of a computing device including the same.
  • the computing device 1 includes a DRAM (Dynamic Random Access Memory) 10, a neural network operating device 100, a bus 700 connecting the DRAM 10 and the neural network operating device 100, and other hardware 99 connected to the bus 700 .
  • DRAM Dynamic Random Access Memory
  • the computing device 1 may further include a power supply unit, a communication unit, a main processor, a user interface, a storage unit, and peripheral device units (not shown).
  • the bus 700 may be shared by the neural network computing device 100 and other hardware 99 .
  • the neural network computing device 100 may include a direct memory access part (DMA) 20 , a controller 40 , an internal memory 30 , and a neural network accelerator 60 .
  • DMA direct memory access part
  • input data 310 and weights 320 must be provided to the neural network accelerator 60 .
  • the input data 310 and the weights 320 provided to the neural network accelerator 60 may be output from the internal memory 30 .
  • the internal memory 30 may receive at least some or all of the input data 310 and the weights 320 from the DRAM 10 through the bus 700 .
  • the DMA unit 20 may control the internal memory 30 and the DRAM 10 .
  • the output data 330 may be generated based on the input data 310 and the weights 320 .
  • the generated output data 330 may be first stored in the internal memory 30 .
  • the output data 330 stored in the internal memory 30 may be written to the DRAM 10 under the control of the DMA unit 20 . And/or the output data 330 stored in the internal memory 30 may be regarded as new input data for the neural network accelerator 60 and provided to the neural network accelerator 60 again.
  • the controller 40 may collectively control the operations of the DMA unit 20 , the internal memory 30 , and the neural network accelerator 60 .
  • the neural network accelerator 60 performs, for example, the function of the first layer 610 shown in FIG. 1 during the first time period, and performs the function of, for example, the second layer 620 shown in FIG. 2 during the second time period.
  • a plurality of neural network acceleration units 60 shown in FIG. 2 may be provided to perform operations requested by the control unit 40 in parallel.
  • the above-described DARM 10 is a representative volatile memory, and is a memory capable of randomly accessing data.
  • DRAM includes a plurality of cells arranged in a matrix form. Each cell may consist of one transistor and one capacitor.
  • one word line may be connected to a series of first cells arranged in the first direction (horizontal direction), and these first cells may constitute one word.
  • One bit line may be connected to a series of second cells arranged in the second direction (vertical direction) in the DRAM. That is, a plurality of word lines may be disposed along the first direction (horizontal direction), and a plurality of bit lines may be disposed along the second direction (vertical direction).
  • a plurality of bit lines are first pre-charged to an intermediate voltage between HIGH and LOW, and a specific word line is set to HIGH. Depending on whether the voltages of the capacitors of the cells connected to the specific word line are HIGH or LOW, respectively, the voltages of the plurality of precharged bit lines are slightly higher or lower.
  • a sense amplifier provided in the DRAM can detect a small change in the voltage of each bit line and, accordingly, determine whether the value stored in each cell is 1 or 0.
  • the DRAM reading process may be performed using one word as a basic unit.
  • the neural network acceleration unit 60 shown in FIG. 2 performs an operation to generate the output data 330 from the input data 310 and the weights 320 for the first time period, the internal memory 30 It is desirable to obtain new weights from DRAM 10 .
  • the neural network accelerator 60 may perform the function of the first layer 610 using the input data 609 of FIG. 1 and the first set of weights 612 during the first time period.
  • the neural network accelerator 60 may perform the function of the second layer 620 using the input data 611 of FIG. 1 and the second set of weights 622 during the second time period.
  • the internal memory 30 obtains the second set of weights 622 from the DRAM 10 while the neural network accelerator 60 performs the function of the first layer 610 .
  • the input data 611 necessary to perform the function of the second layer 620 may be provided by the output data 330 generated by the neural network accelerator 60 calculation during the first time period.
  • the computation time for which the neural network accelerator 60 performs the function of the first layer 610 is referred to as the computation time TO, and the DRAM 10 sends predetermined data to the internal memory 30 , for example, the second layer 610 .
  • the transfer time required to transfer the weights 622 of the set is referred to as the movement time (TT)
  • the transfer time (TT) > operation time (TO) the neural network accelerator 60 has an idle duration ) (T_idle) is issued. In this case, it is not preferable because the neural network accelerator 60 cannot be used to the maximum.
  • FIG. 3 is a timing diagram for explaining a problem that occurs when a time required for the neural network accelerator to operate once is longer than a time for preparing input data required for the operation.
  • the neural network accelerator 600 performs the function of the first layer 610 of FIG. 1 .
  • the neural network accelerator 600 may perform an operation for the first operation time TO1 using a set of first weights 612 that are already prepared.
  • the control unit 40 controls a set of second weights 622 necessary for the neural network acceleration unit 600 to perform the function of the second layer 620 of FIG. 1 .
  • it may take a first transfer time TT1 from starting to complete the preparation of the set of second weights 622 . If the first transfer time TT1 is longer than the first operation time TO1, the neural network accelerator 600 waits for the first idle time T_idle1 to perform the function of the second layer 620. You can start arithmetic for
  • the transfer time TT for reading and preparing a set of weights to be used for the calculation from the DRAM 10 increases as the amount of data of the set of weights increases.
  • the data amount of the set of weights may change for each layer of the neural network.
  • calculation time (TO) required to perform the calculation processing using the prepared data may also vary for each layer of the neural network.
  • the value of the transport time (TT)/operation time (TO) may increase as the convolutional layer existing further downstream is compared to the convolutional layer existing upstream.
  • An object of the present invention is to provide a technique for increasing the utilization of a neural network accelerator composed of hardware by solving the above-described problems.
  • An object of the present invention is to provide a technique for increasing the utilization of a hardware accelerator.
  • a hardware accelerator may refer to hardware, particularly hardware optimized for a specific operation of a computing device.
  • a hardware accelerator may refer to a hardware device provided for a specific operation rather than a general purpose.
  • a hardware accelerator may function as part of a computing device.
  • the hardware accelerator may be controlled by a general purpose processor in some cases.
  • a word may mean a unit read from a memory at a time.
  • activation data or activation may refer to output data output by an arbitrary layer constituting a neural network.
  • the activation may be provided as input data of another layer.
  • Activation may also be referred to as a tensor or a feature map.
  • generating information about a parameter may include a concept of preparing by storing some or all bits of all bits constituting one parameter as they are.
  • a method of operating a hardware accelerator includes: a hardware accelerator accessing a memory to obtain only some bits of a plurality of bits constituting one parameter; and calculating, by a data operation part of the hardware accelerator, output data of the data operation part based on the obtained partial bits.
  • only the partial bits among the plurality of bits constituting the one parameter may be transmitted from the memory to the hardware accelerator through a bus.
  • the memory may support a function of transmitting only the partial bits among the plurality of bits through the bus according to the request of the hardware accelerator.
  • the one parameter may be stored across a plurality of words of the memory, and some of the bits may be bits stored in some of the plurality of words.
  • the calculating may include, by the hardware accelerator, reconstructing, by the hardware accelerator, the value of the one parameter from the obtained values of some bits; and calculating, by the data operation unit, output data of the data operation unit based on the one restored parameter.
  • the data operation unit is a neural network accelerating part
  • an input-to-output characteristic (transfer function) of the neural network accelerator may correspond to an input/output characteristic of one layer defined in the neural network.
  • the one parameter may be one value among input data input to the one layer.
  • the input data may be weight data used by the one layer or activation data input to the one layer.
  • a method of operating a hardware accelerator comprising the steps of: obtaining, by the hardware accelerator, information about a plurality of parameters by accessing a memory; and calculating, by the data operation unit of the hardware accelerator, output data of the data operation unit based on the obtained information on the plurality of parameters.
  • the acquiring may include, for each of the parameters, acquiring only some bits of a plurality of bits constituting each of the parameters; for each of the parameters, generating individual information about the parameter using only the obtained partial bits; and generating information on the plurality of parameters by using the set of individual information generated for the plurality of parameters.
  • only the partial bits among the plurality of bits constituting each of the parameters may be transmitted from the memory to the hardware accelerator through a bus.
  • each of the parameters may be stored across a plurality of words of the memory, and some of the obtained bits may be bits stored in some of the plurality of words.
  • the transfer time which is the time from when the hardware accelerator starts accessing the memory to obtain the information about the plurality of parameters, until the access ends, is, It may be characterized in that it is shorter than the calculation time, which is a time required from starting the calculation process for calculating the output data based on the information on the data to ending the calculation process.
  • a method of operating a hardware accelerator includes: acquiring, by a neural network accelerator, information about a first parameter required to perform a function of a first layer defined in a neural network from a memory according to a first read mode ; calculating, by the neural network accelerator of the neural network accelerator, the output data of the first layer based on the obtained information on the first parameter; obtaining, by the neural network accelerator, information about a second parameter necessary for performing a function of a second layer defined in the neural network, from the memory according to a second read mode; and calculating, by the neural network accelerator, the output data of the second layer based on the obtained information on the second parameter.
  • the acquiring of the information on the first parameter from the memory according to the first read mode may include: acquiring only some bits among a plurality of bits constituting the first parameter; and generating information about the first parameter by using only some bits obtained with respect to the first parameter.
  • the acquiring of the information about the second parameter from the memory according to the second read mode includes: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter using only some bits obtained with respect to the second parameter, wherein the first read mode includes n1 bits among bits constituting the first parameter. is a mode for acquiring only n2 bits, and the second read mode is a mode for acquiring only n2 bits among bits constituting the second parameter, and n1 and n2 may have different values.
  • the maximum value of n1 is the total number of bits constituting the first parameter stored in the memory, or the maximum value of n2 is the total number of bits constituting the second parameter stored in the memory. It can be a number.
  • the first parameter is a feature map input to the first layer or a first weight value used in the first layer
  • the second parameter is a feature map input to the second layer or a first weight value used in the second layer. It can be two-weighted.
  • the acquiring of the information about the second parameter from the memory according to the second read mode includes: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter by using only some bits obtained with respect to the second parameter.
  • n1 which is the number of some bits among the plurality of bits constituting the obtained first parameter, is smaller than n2, which is the number of some bits among the obtained plurality of bits constituting the second parameter.
  • the first layer may exist downstream of the second layer.
  • a hardware accelerator including a data operation unit and a control unit, wherein the control unit is configured to allow the hardware accelerator to access a memory to obtain only some bits of a plurality of bits constituting one parameter
  • the hardware accelerator may be controlled, and the data operation unit of the hardware accelerator may be configured to control the data operation unit to calculate output data of the data operation unit based on the obtained partial bits.
  • the controller may be configured to control the memory so that only the partial bits among the plurality of bits constituting the one parameter are transmitted from the memory to the hardware accelerator through a bus.
  • a computing device including the hardware accelerator and the memory may be provided.
  • FIG. 1 is a conceptual diagram illustrating a partial configuration of a neural network presented to aid understanding of the present invention.
  • FIG. 2 shows a main structure of a neural network computing device including a neural network accelerator in which a function of a neural network is implemented by hardware, and a part of a computing device including the same.
  • FIG. 3 is a timing diagram for explaining a problem that occurs when a time required for the neural network accelerator to operate once is longer than a time for preparing input data required for the operation.
  • FIG. 4 shows the main structure of a hardware accelerator for performing a predetermined operation and a part of the computing device 1 including the hardware accelerator.
  • FIG. 5 is a flowchart illustrating a method of operating a hardware accelerator provided according to an embodiment of the present invention.
  • FIG. 6 illustrates a logical structure of a memory capable of read and write operations in units of words.
  • FIG. 7 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 8 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 9 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 10 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 11 illustrates a method of operating a hardware accelerator provided according to an embodiment of the present invention.
  • FIG. 12 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 13 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • FIG. 4 shows the main structure of a hardware accelerator for performing a predetermined operation and a part of the computing device 1 including the hardware accelerator.
  • the computing device 1 includes a memory 11 , a hardware accelerator 110 , a bus 700 connecting the memory 11 and the hardware accelerator 110 , and other hardware connected to the bus 700 . (99) may be included.
  • the computing device 1 may further include a power supply unit, a communication unit, a main processor, a user interface, a storage unit, and peripheral device units (not shown).
  • the bus 700 may be shared by the hardware accelerator 110 and other hardware 99 .
  • the hardware accelerator 110 may include a DMA unit 20 , a control unit 40 , an internal memory 30 , and a data operation unit 610 .
  • the internal memory 30 may be, for example, a static memory.
  • the input data 310 In order for the data operation unit 610 to operate, the input data 310 must be provided to the data operation unit 610 .
  • the input data 310 provided to the data operation unit 610 may be output from the internal memory 30 .
  • the internal memory 30 may receive at least some or all of the input data 310 from the memory 11 through the bus 700 .
  • the DMA unit 20 may control the internal memory 30 and the memory 11 .
  • the output data 330 may be generated based on the input data 310 .
  • the generated output data 330 may be first stored in the internal memory 30 .
  • the output data 330 stored in the internal memory 30 may be written to the memory 11 under the control of the DMA unit 20 . And/or, the output data 330 stored in the internal memory 30 may be regarded as new input data for the data operation unit 610 and provided to the data operation unit 610 again.
  • the controller 40 may collectively control the operations of the DMA unit 20 , the internal memory 30 , and the data operation unit 610 .
  • the data operation unit 610 performs a function of a first function module having a first input/output characteristic during a first time period, and performs a function of a second function module having a second input/output characteristic during a second time period.
  • the format of the input data and the format of the output data of the first function module and the second function module may be the same.
  • the data operation unit 610 performs, for example, the function of the first layer 610 shown in FIG. 1 during the first time period, and for example, the second layer 620 shown in FIG. 2 during the second time period. function can be performed.
  • a plurality of data operation units 610 shown in FIG. 4 may be provided to perform operations requested by the control unit 40 in parallel.
  • the memory 11 of FIG. 4 may be a DRAM.
  • the present invention is not limited thereto, and any memory providing a function of distributing and storing the value of one independent parameter in a plurality of words and individually reading each word may be used in the present invention. .
  • the components in the hardware accelerator 110 may be arranged on a single wafer.
  • the data operation unit 610 may be a neural network accelerating part 60 shown in FIG. 2 .
  • the hardware accelerator 110 may be referred to as a neural network computing device shown in FIG. 2 or may also be referred to as a neural network accelerator.
  • weights 320 may be further provided to the data operation unit 610 . That is, in order for the neural network accelerator 60 to operate, the input data 310 and the weights 320 may be provided to the neural network accelerator 60 .
  • the input data 310 and the weights 320 provided to the neural network accelerator 60 may be output from the internal memory 30 .
  • the internal memory 30 may receive at least some or all of the input data 310 and the weights 320 from the memory 11 through the bus 700 .
  • the DMA unit 20 may control the internal memory 30 and the memory 11 .
  • the output data 330 may be generated based on the input data 310 and the weights 320 .
  • the generated output data 330 may first be stored in the internal memory 30 .
  • the input-to-output characteristic (transfer function) of the neural network accelerator may correspond to the input/output characteristic of one layer defined in the neural network to be implemented by the neural network accelerator.
  • the input/output characteristic may mean a conversion rule in which input data input to the one layer is converted into output data output by the one layer, and this may be expressed in terms of a transfer function in the present specification. .
  • the one neural network accelerator may perform functions of different layers of the neural network according to a driving time thereof. Each layer of the neural network may evolve over time according to a predetermined learning rule for the neural network.
  • the specific values of the parameters used by the evolved layer may be different from the specific values of the parameters used by the layer before being evolved.
  • the values of the parameters before the evolution may be already stored in the memory 11, and the values of the parameters updated according to the progress of the evolution are additionally stored in the memory 11, The previous value may be stored in an updated form.
  • FIG. 5 is a flowchart illustrating a method of operating a hardware accelerator provided according to an embodiment of the present invention.
  • step S100 the hardware accelerator 110 accesses the memory 11 in which the value of one parameter is stored over a plurality of words, and is stored in some of the plurality of words. Only bits can be read.
  • FIG. 6 illustrates a logical structure of a memory capable of read and write operations in units of words.
  • Each word may consist of, for example, n bits. It can be assumed that a parameter to be input to the data operation unit 610 provided according to an embodiment of the present invention can be expressed by a number of bits greater than the n bits. That is, the first parameter of FIG. 6 cannot be expressed by n bits, but may be quantized to a first resolution that can be expressed using a greater number of bits. That is, the first parameter cannot be expressed using one word, but may be expressed using at least two words.
  • both the first word and the second word must be read.
  • the read first word and the second word may sequentially move to the hardware accelerator 110 through the bus 700 .
  • the DMA unit 20 receives the MSB (Most Significant Bit) of the first parameter in the first word and the second word provided to express the first parameter at the first resolution. Only the containing word, for example, the first word can be read. In this way, since only the first word moves to the hardware accelerator 110 through the bus 700, the data movement time is reduced compared to sequentially moving both the first word and the second word.
  • MSB Mobile Bit
  • step S200 the data operation unit 610 of the hardware accelerator 110 may calculate the output data of the data operation unit 610 based on only the bits stored in the part.
  • FIG. 7 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • step S10 the hardware accelerator 110 accesses the memory 11 in which the value of one parameter is stored over a plurality of words, and is stored in some of the plurality of words. Only bits can be read.
  • step S20 the hardware accelerator 110 may reconstruct the value of the one parameter from the values of the read bits.
  • the read bits may mean only bits constituting the first word among the first word and the second word.
  • the first parameter having the first resolution may be expressed as 8 bits.
  • the bits stored in some of the words eg, the first word
  • the value represented by these 4 bits cannot be called the first parameter.
  • a total of four bits may be added to the lower side of the LSB of the bits constituting the first word, and the first parameter may be restored using a strategy to allow an error.
  • Each of the four added bits may have a value of 0.
  • the restored first parameter may not have exactly the same value as the first parameter stored in the memory, and may have a value close to the first parameter stored in the memory.
  • step S30 the data calculating unit 610 of the hardware accelerator 110 may calculate the output data of the data calculating unit 610 based on the one restored parameter.
  • the step S20 may be performed in any one of the internal memory 30 , the DMA unit 20 , and the data operation unit 610 according to a command of the control unit 40 .
  • FIG. 8 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • the method of operating the hardware accelerator is a method of operating the hardware accelerator by accessing a memory in which the value of one parameter is stored over a plurality of words.
  • step S210 the hardware accelerator 110 may access the memory 11 to obtain relationship information on a plurality of parameters.
  • the step (S210) may include, for each of the parameters, reading only bits stored in some of the plurality of words in which the value of the parameter is stored (S211); and for each of the parameters, generating information about the parameters using only the read bits ( S212 ).
  • step S220 the data calculating unit 610 of the hardware accelerator 110 may calculate the output data of the data calculating unit 610 based on the obtained information on the plurality of parameters.
  • FIG. 9 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • the method of operating the hardware accelerator is a method of operating the hardware accelerator by accessing a memory in which the value of one parameter is stored over a plurality of words.
  • step S110 the hardware accelerator 110 may access the memory 11 to obtain a plurality of parameters.
  • the hardware accelerator 110 stores the value of the arbitrary one parameter 510 . Reading only the bits stored in some 512 of the plurality of words 511 and 512 in operation (S111); And the hardware accelerator 110 may be obtained by performing the step (S112) of restoring the value of the one parameter from the read bits.
  • step S120 the data operation unit 610 of the hardware accelerator 110 may calculate the output data of the data operation unit 610 based on the plurality of acquired parameters.
  • the transfer time which is the time from when the hardware accelerator 110 starts accessing the memory 11 to the end of the access to obtain the plurality of parameters
  • TT the transfer time
  • the data operation unit 610 if the calculation time, which is the time required from starting the calculation process for calculating the output data based on the obtained plurality of parameters to ending the calculation process, is TO, the transfer time TT is the calculation time TO could be shorter than
  • FIG. 10 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • This operation method is a method of operating a neural network accelerator by accessing a memory in which the value of each parameter is stored over a plurality of words.
  • the neural network accelerator may acquire information about a first parameter required to perform the function of the first layer defined in the neural network from the memory according to the first read mode.
  • step S310 reading only bits stored in some of the plurality of words in which the value of the first parameter is stored (S311), and for the first parameter, the first parameter using only the read bits It may include generating information about the parameter (S312).
  • the neural network accelerator of the neural network accelerator may calculate the output data of the first layer based on the obtained information on the first parameter.
  • the neural network accelerator may acquire a second parameter necessary for performing the function of the second layer defined in the neural network from the memory according to the second read mode.
  • the neural network accelerator may calculate the output data of the second layer based on the obtained second parameter.
  • the second read mode may be a mode in which the neural network accelerator accesses the memory and reads all the bits stored in a plurality of words in which the value of the second parameter is stored.
  • the step of calculating the output data of the first layer (S320) includes the step of restoring, by the neural network accelerator, the value of the first parameter from information about the parameter generated with respect to the first parameter (S321) , and calculating, by the neural network accelerator, output data of the neural network accelerator on the basis of the restored first parameter (S322).
  • the first parameter is the input data of the first layer or a first weight used in the first layer
  • the second parameter is the input data of the second layer or a second weight used in the second layer
  • the first layer may be a layer existing downstream of the second layer.
  • the neural network may be, for example, a Convolutional Neural Network (CNN).
  • FIG. 11 illustrates a method of operating a hardware accelerator provided according to an embodiment of the present invention.
  • a hardware accelerator may access a memory to acquire only some bits of a plurality of bits constituting one parameter.
  • step S410 the data operation part of the hardware accelerator may calculate output data of the data operation part based on the obtained partial bits.
  • FIG. 12 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • step S500 the hardware accelerator may access the memory to obtain information about a plurality of parameters.
  • Step S500 may include the following steps S501, S502, and S503.
  • step S501 for each of the parameters, only some bits among a plurality of bits constituting each of the parameters may be obtained.
  • step S502 for each of the parameters, individual information about the parameters may be generated using only some of the obtained bits.
  • step S503 information about the plurality of parameters may be generated by using the set of individual information generated for the plurality of parameters.
  • the data calculating unit of the hardware accelerator may calculate output data of the data calculating unit based on the obtained information on the plurality of parameters.
  • FIG. 13 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
  • the neural network accelerator may acquire information about a first parameter required to perform a function of the first layer defined in the neural network from the memory according to the first read mode.
  • Step S610 may include the following steps S611 and S612.
  • step S611 only some bits (N1 pieces) among a plurality of bits constituting the first parameter may be obtained.
  • step S612 information about the first parameter may be generated using only some bits obtained with respect to the first parameter.
  • the neural network accelerator of the neural network accelerator may calculate the output data of the first layer based on the obtained information on the first parameter.
  • the neural network accelerator may acquire information about a second parameter required to perform a function of the second layer defined in the neural network from the memory according to the second read mode.
  • Step S630 may include the following steps S631 and S632.
  • step S631 only some bits (N2 pieces) of a plurality of bits constituting the second parameter may be obtained.
  • step S632 information about the second parameter may be generated using only some bits obtained for the second parameter.
  • the neural network accelerator may calculate the output data of the second layer based on the obtained information on the second parameter.
  • N1 may be greater than N2, and in this case, the first layer may be a layer downstream of the second layer.
  • the present invention is a variable among the next-generation intelligent semiconductor technology development (design)-artificial intelligence processor business, a research project supported by the Ministry of Science and ICT and the Information and Communication Planning and Evaluation Institute affiliated with the National Research Foundation of Open Edge Technology Co., Ltd. (the task execution organization) It was developed in the course of carrying out the research project for precision high-speed-multi-object recognition deep learning processor technology development (task unique number 2020-0-01080, task number 2020-0-01080, research period 2020.04.01 ⁇ 2024.12.31).

Abstract

Disclosed is an operation method of a hardware accelerator, comprising steps in which: a hardware accelerator accesses a memory in which the value of one parameter is stored over a plurality of words, so as to read bits stored in some of the words; and a data calculation unit of the hardware accelerator calculates output data of the data calculation unit on the basis of only the bits stored in some of the words.

Description

하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치Method of accessing parameters for hardware accelerator from memory and apparatus using same
본 발명은 컴퓨팅 기술에 관한 것으로서, 하드웨어 가속기, 특히 신경망 가속기를 효과적으로 구동하기 위한 컴퓨터 하드웨어 내의 데이터 이송(transfer) 기술에 관한 것이다.The present invention relates to computing technology, and to a data transfer technology in computer hardware for effectively driving a hardware accelerator, particularly a neural network accelerator.
<신경망><Neural Network>
신경망은 인공지능을 구현하는 기술의 하나로서 이용되는 잘 알려진 기술이다.A neural network is a well-known technology used as one of the technologies to implement artificial intelligence.
도 1은 본 발명의 이해를 돕기 위해 제시한 신경망의 일부 구성을 개념적으로 나타낸 것이다.1 is a conceptual diagram illustrating a partial configuration of a neural network presented to aid understanding of the present invention.
일 실시예에 따른 신경망(600)은 복수 개의 레이어들을 포함할 수 있다. 개념적으로, 상기 복수 개의 레이어들 중 제1레이어(610)는 소위 피쳐맵 또는 액티베이션이라고 지칭되는 출력데이터(611)를 출력할 수 있다. 그리고 상기 제1레이어(610)에서 출력한 출력데이터(611)는 제1레이어(610)보다 하류에 있는 제2레이어(620)의 입력데이터로서 제공될 수 있다.The neural network 600 according to an embodiment may include a plurality of layers. Conceptually, the first layer 610 among the plurality of layers may output output data 611 called a feature map or activation. In addition, the output data 611 output from the first layer 610 may be provided as input data of the second layer 620 downstream of the first layer 610 .
각각의 상기 레이어는, 입력되는 입력데이터를 소정의 출력데이터로 변환하는 데이터 변환 기능모듈로서 간주될 수도 있다. 예컨대 제1레이어(610)는 제1레이어(610)에 입력되는 입력데이터(609)를 출력데이터(611)로 변환하는 데이터 변환 기능모듈로서 간주될 수도 있다. 이러한 데이터 변환 기능모듈을 구현하기 위하여, 제1레이어(610)의 구조가 정의되어야 한다. 상기 제1레이어(610)의 구조에 맞추어 제1레이어(610)에 입력되는 입력데이터(609)가 저장되는 입력변수들이 정의되어야 하고, 그리고 제1레이어(610)로부터 출력되는 출력데이터(611)를 나타내는 출력변수들이 정의되어야 한다. 상기 제1레이어(610)는 그 기능을 수행하기 위하여 한 세트의 가중치들(612)을 이용할 수 있다. 상기 한 세트의 가중치들(612)은 상기 입력변수들로부터 상기 출력변수들을 산출하기 위해 상기 입력변수들에게 곱해지는 값들일 수 있다.상기 한 세트의 가중치(612)들은 신경망(600)이 갖는 다양한 파라미터들 중 하나일 수 있다.Each of the above layers may be regarded as a data conversion function module that converts input input data into predetermined output data. For example, the first layer 610 may be regarded as a data conversion function module that converts input data 609 input to the first layer 610 into output data 611 . In order to implement such a data conversion function module, the structure of the first layer 610 must be defined. In accordance with the structure of the first layer 610 , input variables in which the input data 609 input to the first layer 610 are stored should be defined, and the output data 611 output from the first layer 610 should be defined. Output variables representing The first layer 610 may use a set of weights 612 to perform its function. The set of weights 612 may be values multiplied by the input variables to calculate the output variables from the input variables. The set of weights 612 includes various It may be one of the parameters.
각각의 상기 파라미터는 주어진 해상도를 갖는 숫자질 수 있다. 일반적인 실시예에서, 특정 신경망에 포함된 모든 레이어에 포함된 모든 파라미터들은 미리 결정된 고정된 해상도를 가질 수 있다. 예컨대, 신경망(600)에 포함된 모든 레이어(610, 620, ...)들이 이용하는 파라미터들은 모두 8 비트의 해상도를 가질 수 있다.Each of the above parameters can be numeric with a given resolution. In a general embodiment, all parameters included in all layers included in a specific neural network may have a predetermined fixed resolution. For example, parameters used by all the layers 610 , 620 , ... included in the neural network 600 may have a resolution of 8 bits.
상기 각 레이어에서 이용되는 파라미터들의 개수 및 구체적인 값의 범위는 레이어마다 다를 수 있다. 또한 상기 신경망(600)이 학습에 의해 제1상태에서 제2상태로 변화되면, 특정 레이어가 이용하는 파라미터들이 상기 제1상태에서 갖는 값들은 상기 특정 레이어가 이용하는 파라미터들이 상기 제2상태에서 갖는 값들과는 다를 수 있다. 바람직한 실시예에서, 상기 제2상태는 상기 제1상태보다 진화한 상태일 수 있다. 상기 특정 레이어가 이용하는 파라미터들은 상기 진화에 따라 그 값이 변화할 수 있다.The number of parameters used in each layer and the range of specific values may be different for each layer. Also, when the neural network 600 is changed from the first state to the second state by learning, the values of the parameters used by the specific layer in the first state are different from the values of the parameters used by the specific layer in the second state. can be different. In a preferred embodiment, the second state may be a state evolved from the first state. The parameters used by the specific layer may change in value according to the evolution.
신경망(600) 중 예컨대 제1레이어(610)에 입력되는 입력데이터(609)로부터 제1레이어(610)로부터 출력되는 출력데이터(611)를 산출하기 위한 연산과정은 소프트웨어로서 구현될 수도 있지만 하드웨어로서 구현될 수도 있다.The calculation process for calculating the output data 611 output from the first layer 610 from the input data 609 input to the first layer 610 of the neural network 600 may be implemented as software, but as hardware. may be implemented.
<신경망 연산의 하드웨어 구현><Hardware implementation of neural network operation>
도 2는 신경망의 기능을 하드웨어로 구현한 신경망 가속부를 포함하는 신경망 연산장치 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.FIG. 2 shows a main structure of a neural network computing device including a neural network accelerator in which a function of a neural network is implemented by hardware, and a part of a computing device including the same.
컴퓨팅 장치(1)는, DRAM(Dynamic Random Access Memory)(10), 신경망 연산장치(neural network operating device)(100), DRAM(10)와 신경망 연산장치(100)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99)를 포함할 수 있다. The computing device 1 includes a DRAM (Dynamic Random Access Memory) 10, a neural network operating device 100, a bus 700 connecting the DRAM 10 and the neural network operating device 100, and other hardware 99 connected to the bus 700 .
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 메인 프로세서, 사용자 인터페이스, 저장부, 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 신경망 연산장치(100)와 타 하드웨어들(99)이 공유할 수도 있다.In addition, the computing device 1 may further include a power supply unit, a communication unit, a main processor, a user interface, a storage unit, and peripheral device units (not shown). The bus 700 may be shared by the neural network computing device 100 and other hardware 99 .
신경망 연산장치(100)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 및 신경망 가속부(60)를 포함할 수 있다.The neural network computing device 100 may include a direct memory access part (DMA) 20 , a controller 40 , an internal memory 30 , and a neural network accelerator 60 .
신경망 가속부(60)가 동작하기 위해서는 입력데이터(310) 및 가중치들(320)이 신경망 가속부(60)에게 제공되어야 한다. In order for the neural network accelerator 60 to operate, input data 310 and weights 320 must be provided to the neural network accelerator 60 .
신경망 가속부(60)에게 제공되는 입력데이터(310) 및 가중치들(320)은 내부 메모리(30)로부터 출력되는 것일 수 있다.The input data 310 and the weights 320 provided to the neural network accelerator 60 may be output from the internal memory 30 .
내부 메모리(30)는 입력데이터(310) 및 가중치들(320) 중 적어도 일부 또는 전부를 버스(700)를 통해 DRAM(10)으로부터 제공받을 수 있다. 이때, DRAM(10)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, DMA부(20)가 내부 메모리(30) 및 DRAM(10)를 제어할 수도 있다.The internal memory 30 may receive at least some or all of the input data 310 and the weights 320 from the DRAM 10 through the bus 700 . In this case, in order to move data stored in the DRAM 10 to the internal memory 30 , the DMA unit 20 may control the internal memory 30 and the DRAM 10 .
신경망 가속부(60)가 동작하면 입력데이터(310) 및 가중치들(320)을 기초로 출력데이터(330)가 생성될 수 있다. 생성된 출력데이터(330)는 우선 내부 메모리(30)에 저장될 수 있다. When the neural network accelerator 60 operates, the output data 330 may be generated based on the input data 310 and the weights 320 . The generated output data 330 may be first stored in the internal memory 30 .
내부 메모리(30)에 저장된 출력데이터(330)는 DMA부(20)의 제어에 의해 DRAM(10)에 기록될 수 있다. 그리고/또는 내부 메모리(30)에 저장된 출력데이터(330)는 신경망 가속부(60)를 위한 새로운 입력데이터로서 간주되어 다시 신경망 가속부(60)로 제공될 수도 있다.The output data 330 stored in the internal memory 30 may be written to the DRAM 10 under the control of the DMA unit 20 . And/or the output data 330 stored in the internal memory 30 may be regarded as new input data for the neural network accelerator 60 and provided to the neural network accelerator 60 again.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 신경망 가속부(60)의 동작을 총괄하여 제어할 수 있다.The controller 40 may collectively control the operations of the DMA unit 20 , the internal memory 30 , and the neural network accelerator 60 .
신경망 가속부(60)는 제1시구간 동안에는 예컨대 도 1에 나타낸 제1레이어(610)의 기능을 수행하고, 제2시구간 동안에는 예컨대 도 2에 나타낸 제2레이어(620)의 기능을 수행할 수 있다.The neural network accelerator 60 performs, for example, the function of the first layer 610 shown in FIG. 1 during the first time period, and performs the function of, for example, the second layer 620 shown in FIG. 2 during the second time period. can
일 실시예에서, 도 2에 나타낸 신경망 가속부(60)는 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.In an embodiment, a plurality of neural network acceleration units 60 shown in FIG. 2 may be provided to perform operations requested by the control unit 40 in parallel.
<DRAM의 구조><Structure of DRAM>
상술한 DARM(10)은 대표적인 휘발성 메모리로서 무작위로 데이터에 접근할 수 있는 메모리이다. DRAM은 행렬형태로 배열된 복수 개의 셀들을 포함한다. 각각이 셀은 한 개의 트랜지스터와 한 개의 커패시터를 포함하여 구성될 수 있다. The above-described DARM 10 is a representative volatile memory, and is a memory capable of randomly accessing data. DRAM includes a plurality of cells arranged in a matrix form. Each cell may consist of one transistor and one capacitor.
DRAM에서 제1방향(가로방향)을 따라 배치되어 있는 일련의 제1셀들에 한 개의 워드라인이 연결되어 있을 수 있으며, 이러한 제1셀들이 한 개의 워드(word)를 구성할 수 있다. DRAM에서 제2방향(세로방향)을 따라 배치되어 있는 일련의 제2셀들에는 한 개의 비트라인이 연결되어 있을 수 있다. 즉, 상기 제1방향(가로방향)을 따라 복수 개의 워드라인들이 배치되어 있고, 상기 제2방향(세로방향)을 따라 복수 개의 비트라인들이 배치되어 있을 수 있다.In the DRAM, one word line may be connected to a series of first cells arranged in the first direction (horizontal direction), and these first cells may constitute one word. One bit line may be connected to a series of second cells arranged in the second direction (vertical direction) in the DRAM. That is, a plurality of word lines may be disposed along the first direction (horizontal direction), and a plurality of bit lines may be disposed along the second direction (vertical direction).
DRAM 셀을 읽는 과정을 살펴보면, 복수 개의 비트라인들을 먼저 HIGH와 LOW 사이의 중간 전압으로 예비 충전하고, 특정 워드라인을 HIGH로 세팅한다. 상기 특정 워드라인에 연결된 상기 셀들의 커패시터들의 전압이 각각 HIGH이냐 LOW이냐에 따라, 예비 충전된 상기 복수 개의 비트라인들의 전압은 약간 높아지거나 낮아진다. DRAM에 제공된 감지 증폭기가 각 비트라인들의 전압의 작은 변화를 검출하고, 그에 따라 각 셀에 저장된 값이 1인지 또는 0인지를 결정할 수 있다.Looking at the process of reading a DRAM cell, a plurality of bit lines are first pre-charged to an intermediate voltage between HIGH and LOW, and a specific word line is set to HIGH. Depending on whether the voltages of the capacitors of the cells connected to the specific word line are HIGH or LOW, respectively, the voltages of the plurality of precharged bit lines are slightly higher or lower. A sense amplifier provided in the DRAM can detect a small change in the voltage of each bit line and, accordingly, determine whether the value stored in each cell is 1 or 0.
DRAM을 읽는 과정은 한 개의 워드를 기본 단위로 하여 이루어질 수 있다.The DRAM reading process may be performed using one word as a basic unit.
<하드웨어를 이용한 신경망 연산의 특징><Features of neural network computation using hardware>
도 2에 나타낸 신경망 가속부(60)가 제1시구간 동안 그 입력데이터(310) 및 가중치들(320)로부터 출력데이터(330)를 생성하기 위해 연산작업을 수행하는 동안, 내부 메모리(30)는 DRAM(10)으로부터 새로운 가중치들을 획득하는 것이 바람직하다.While the neural network acceleration unit 60 shown in FIG. 2 performs an operation to generate the output data 330 from the input data 310 and the weights 320 for the first time period, the internal memory 30 It is desirable to obtain new weights from DRAM 10 .
즉, 예컨대, 신경망 가속부(60)가 제1시구간 동안 도 1의 입력데이터(609) 및 제1세트의 가중치(612)를 이용하여 제1레이어(610)의 기능을 수행할 수 있다. 그리고 신경망 가속부(60)가 제2시구간 동안 도 1의 입력데이터(611) 및 제2세트의 가중치(622)를 이용하여 제2레이어(620)의 기능을 수행할 수 있다. 이때, 신경망 가속부(60)가 제1레이어(610)의 기능을 수행하는 동안, 내부 메모리(30)는 상기 제2세트의 가중치(622)를 DRAM(10)으로부터 획득하는 것이 바람직하다. 그리고 제2레이어(620)의 기능을 수행하기 위해 필요한 상기 입력데이터(611)는 상기 제1시구간 동안 신경망 가속부(60)가 연산하여 생성한 출력데이터(330)에 의해 제공될 수도 있다.That is, for example, the neural network accelerator 60 may perform the function of the first layer 610 using the input data 609 of FIG. 1 and the first set of weights 612 during the first time period. In addition, the neural network accelerator 60 may perform the function of the second layer 620 using the input data 611 of FIG. 1 and the second set of weights 622 during the second time period. In this case, it is preferable that the internal memory 30 obtains the second set of weights 622 from the DRAM 10 while the neural network accelerator 60 performs the function of the first layer 610 . In addition, the input data 611 necessary to perform the function of the second layer 620 may be provided by the output data 330 generated by the neural network accelerator 60 calculation during the first time period.
이때, 신경망 가속부(60)가 제1레이어(610)의 기능을 수행하는 연산시간을 연산시간(TO)이라고 하고, DRAM(10)으로부터 내부 메모리(30)에게 소정의 데이터, 예컨대 상기 제2세트의 가중치(622)를 이송시키는 데에 소요되는 이송시간을 이동시간(TT)라고 하였을 때에, 만일 이송시간(TT)>연산시간(TO)이라면 신경망 가속부(60)에는 유휴시간(idle duration)(T_idle)이 발행하게 된다. 이렇게 되면 신경망 가속부(60)를 최대한 활용할 수 없게 되므로 바람직하지 않다.At this time, the computation time for which the neural network accelerator 60 performs the function of the first layer 610 is referred to as the computation time TO, and the DRAM 10 sends predetermined data to the internal memory 30 , for example, the second layer 610 . When the transfer time required to transfer the weights 622 of the set is referred to as the movement time (TT), if the transfer time (TT) > operation time (TO), the neural network accelerator 60 has an idle duration ) (T_idle) is issued. In this case, it is not preferable because the neural network accelerator 60 cannot be used to the maximum.
도 3은 신경망 가속부가 1회 동작하는 데에 소요되는 시간이 상기 연산을 위해 필요한 입력 데이터를 준비하는 시간보다 긴 경우에 발생하는 문제를 설명하기 위한 타이밍도이다.3 is a timing diagram for explaining a problem that occurs when a time required for the neural network accelerator to operate once is longer than a time for preparing input data required for the operation.
예컨대, 신경망 가속부(600)가 도 1의 제1레이어(610)의 기능을 수행하는 경우를 가정할 수 있다. 이때, 신경망 가속부(600)는 이미 준비되어 있는 한 세트의 제1가중치(612)를 이용하여 제1연산시간(TO1)동안 연산을 수행할 수 있다. 그리고 상기 제1연산시간(TO1)의 시작과 동시에, 제어부(40)는 신경망 가속부(600)가 도 1의 제2레이어(620)의 기능을 수행하기 위해 필요한 한 세트의 제2가중치(622)를 미리 준비하기 시작할 수 있다. 이때, 상기 한 세트의 제2가중치(622)의 준비를 시작하여 완료하기까지 제1이송시간(TT1)이 소요될 수 있다. 만일 상기 제1이송시간(TT1)이 상기 제1연산시간(TO1)보다 길다면, 신경망 가속부(600)는 제1유휴시간(T_idle1)을 기다린 후에야 상기 제2레이어(620)의 기능을 수행하기 위한 연산을 시작할 수 있다.For example, it may be assumed that the neural network accelerator 600 performs the function of the first layer 610 of FIG. 1 . In this case, the neural network accelerator 600 may perform an operation for the first operation time TO1 using a set of first weights 612 that are already prepared. And at the same time as the start of the first operation time TO1, the control unit 40 controls a set of second weights 622 necessary for the neural network acceleration unit 600 to perform the function of the second layer 620 of FIG. 1 . ) can be prepared in advance. In this case, it may take a first transfer time TT1 from starting to complete the preparation of the set of second weights 622 . If the first transfer time TT1 is longer than the first operation time TO1, the neural network accelerator 600 waits for the first idle time T_idle1 to perform the function of the second layer 620. You can start arithmetic for
한편, 신경망의 특정 레이어의 입력데이터로부터 상기 특정 레이어의 출력데이터를 생성하는 연산을 수행하려면, (1) 상기 입력데이터를 준비하는 시간, (2) 연산에 사용될 한 세트의 가중치를 준비하는 시간, 및 (3) 준비가 완료된 상기 입력데이터 및 상기 한 세트의 가중치를 이용하여 연산처리를 수행하는 데에 걸리는 시간을 고려할 수 있다. On the other hand, in order to perform an operation for generating output data of a specific layer from input data of a specific layer of the neural network, (1) time to prepare the input data, (2) time to prepare a set of weights to be used in the calculation; and (3) the time it takes to perform the arithmetic process using the prepared input data and the set of weights may be considered.
여기서, 상기 연산에 사용될 한 세트의 가중치를 DRAM(10)으로부터 읽어 준비하는 상기 이송시간(TT)은 상기 한 세트의 가중치의 데이터량이 증가할수록 증가한다. 그리고 상기 한 세트의 가중치의 데이터량은 신경망의 레이어마다 변화할 수 있다. Here, the transfer time TT for reading and preparing a set of weights to be used for the calculation from the DRAM 10 increases as the amount of data of the set of weights increases. In addition, the data amount of the set of weights may change for each layer of the neural network.
또한, 상기 준비가 완료된 데이터를 이용하여 연산처리를 수행하는 데에 걸리는 상기 연산시간(TO) 역시 신경망의 레이어마다 변화할 수 있다.In addition, the calculation time (TO) required to perform the calculation processing using the prepared data may also vary for each layer of the neural network.
그런데, 예컨대 CNN(Convolutional Neural Network)에서 더 하류에 존재하는 콘볼루션 레이어일수록 상류에 존재하는 콘볼루션 레이어에 비하여 상기 이송시간(TT)/연산시간(TO)의 값이 증가할 수 있다.However, for example, in a convolutional neural network (CNN), the value of the transport time (TT)/operation time (TO) may increase as the convolutional layer existing further downstream is compared to the convolutional layer existing upstream.
따라서 신경망의 특정 레이어에 대해서는 상술한 것과 같이 이송시간(TT)>연산시간(TO)이 되는 경우가 발생하는 문제가 있다.Therefore, for a specific layer of the neural network, as described above, there is a problem in that the transfer time (TT) > operation time (TO) occurs.
상술한 내용은 본 발명의 발명자가 본 발명을 창작하기 위한 배경지식으로서 알고 있던 것으로서, 상술한 내용 모두가 본 특허출원의 출원 시점에서 불특정 다수에게 알려진 것으로 간주 되어서는 안 된다. The above contents are known by the inventor of the present invention as background knowledge for creating the present invention, and all of the above contents should not be considered as known to an unspecified number of people at the time of filing this patent application.
본 발명에서는 상술한 문제점을 해결하여 하드웨어로 구성된 신경망 가속부를 활용도를 증가시키는 기술을 제공하고자 한다.An object of the present invention is to provide a technique for increasing the utilization of a neural network accelerator composed of hardware by solving the above-described problems.
본 발명에서는 하드웨어 가속기의 활용도를 증가시키는 기술을 제공하고자 한다.An object of the present invention is to provide a technique for increasing the utilization of a hardware accelerator.
본 명세서에서 하드웨어 가속기는, 하드웨어로서, 특히 컴퓨팅 장치의 특정 연산에 최적화된 하드웨어를 의미할 수 있다. 하드웨어 가속기는 범용(general purpose)가 아닌 특정 연산을 위해 제공되는 하드웨어 장치를 의미할 수 있다. 하드웨어 가속기는 컴퓨팅 장치의 일부로서 기능할 수 있다. 하드웨어 가속기는 경우에 따라 범용(general purpose) 프로세서에 의한 제어를 받을 수도 있다.In the present specification, a hardware accelerator may refer to hardware, particularly hardware optimized for a specific operation of a computing device. A hardware accelerator may refer to a hardware device provided for a specific operation rather than a general purpose. A hardware accelerator may function as part of a computing device. The hardware accelerator may be controlled by a general purpose processor in some cases.
본 명세서에서 워드(word)라는 것은 메모리에서 한 번에 읽는 단위를 의미할 수 있다.In this specification, a word may mean a unit read from a memory at a time.
본 명세서에서 액티베이션 데이터 또는 액티베이션은, 신경망을 구성하는 임의의 레이어가 출력하는 출력데이터를 의미할 수 있다. 상기 액티베이션은 다른 레이어의 입력데이터로서 제공될 수도 있다. 액티베이션은 텐서(tensor) 또는 피쳐맵(feature map)으로 지칭될 수도 있다.In the present specification, activation data or activation may refer to output data output by an arbitrary layer constituting a neural network. The activation may be provided as input data of another layer. Activation may also be referred to as a tensor or a feature map.
본 명세서에서 파라미터에 관한 정보를 생성한다는 것은, 한 개의 파라미터를 구성하는 모든 비트들 중 일부 또는 전부의 비트들을 그대로 저장하여 준비하는 개념을 포함할 수 있다. In the present specification, generating information about a parameter may include a concept of preparing by storing some or all bits of all bits constituting one parameter as they are.
본 발명의 일 관점에 따른 하드웨어 가속기의 동작방법은, 하드웨어 가속기(hardware accelerator)가, 메모리에 액세스하여, 한 개의 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 하드웨어 가속기의 데이터 연산부(data operation part)가, 상기 획득한 일부의 비트들을 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계를 포함할 수 있다.A method of operating a hardware accelerator according to an aspect of the present invention includes: a hardware accelerator accessing a memory to obtain only some bits of a plurality of bits constituting one parameter; and calculating, by a data operation part of the hardware accelerator, output data of the data operation part based on the obtained partial bits.
이때, 상기 한 개의 파라미터를 구성하는 상기 복수 개의 비트들 중 상기 일부의 비트들만을 버스(bus)를 통해 상기 메모리로부터 상기 하드웨어 가속기로 전송받도록 되어 있을 수 있다.In this case, only the partial bits among the plurality of bits constituting the one parameter may be transmitted from the memory to the hardware accelerator through a bus.
이때, 상기 메모리는 상기 하드웨어 가속기의 요청에 따라 상기 복수 개의 비트들 중 상기 일부의 비트들만을 상기 버스를 통해 전송하는 기능을 지원하는 것일 수 있다.In this case, the memory may support a function of transmitting only the partial bits among the plurality of bits through the bus according to the request of the hardware accelerator.
이때, 상기 한 개의 파라미터는 상기 메모리의 복수 개의 워드들에 걸쳐 저장되어 있고, 상기 일부의 비트들은 상기 복수 개의 워드들 중 일부에 저장된 비트들일 수 있다.In this case, the one parameter may be stored across a plurality of words of the memory, and some of the bits may be bits stored in some of the plurality of words.
이때, 상기 산출하는 단계는, 상기 하드웨어 가속기가, 상기 획득한 일부의 비트들의 값들로부터 상기 한 개의 파라미터의 값을 복원(reconstruct)하는 단계; 및 상기 데이터 연산부가, 상기 복원된 한 개의 파라미터를 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계를 포함할 수 있다.In this case, the calculating may include, by the hardware accelerator, reconstructing, by the hardware accelerator, the value of the one parameter from the obtained values of some bits; and calculating, by the data operation unit, output data of the data operation unit based on the one restored parameter.
이때, 상기 데이터 연산부는 신경망 가속부(neural network accelerating part)이고, 상기 신경망 가속부의 입출력 특성(input-to-output characteristic, transfer function)은 신경망에서 정의된 한 개의 레이어의 입출력 특성에 대응할 수 있다.In this case, the data operation unit is a neural network accelerating part, and an input-to-output characteristic (transfer function) of the neural network accelerator may correspond to an input/output characteristic of one layer defined in the neural network.
이때, 상기 한 개의 파라미터는, 상기 한 개의 레이어에 입력되는 입력데이터 중 하나의 값일 수 있다.In this case, the one parameter may be one value among input data input to the one layer.
이때, 상기 입력데이터는 상기 한 개의 레이어가 이용하는 가중치 데이터 또는 상기 한 개의 레이어에 입력되는 액티베이션 데이터일 수 있다.In this case, the input data may be weight data used by the one layer or activation data input to the one layer.
본 발명의 다른 관점에 따른 하드웨어 가속기의 동작방법은, 하드웨어 가속기가, 메모리에 액세스하여 복수 개의 파라미터들에 관한 정보를 획득하는 단계; 및 상기 하드웨어 가속기의 데이터 연산부가, 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계를 포함할 수 있다. 이때, 상기 획득하는 단계는, 각각의 상기 파라미터에 대하여, 각각의 상기 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 각각의 상기 파라미터에 대하여, 상기 획득한 일부의 비트들만을 이용하여 상기 파라미터에 관한 개별 정보를 생성하는 단계; 및 복수 개의 상기 파라미터들에 대하여 생성한 상기 개별 정보의 집합을 이용하여 상기 복수 개의 파라미터들에 관한 정보를 생성하는 단계를 포함할 수 있다.According to another aspect of the present invention, there is provided a method of operating a hardware accelerator, comprising the steps of: obtaining, by the hardware accelerator, information about a plurality of parameters by accessing a memory; and calculating, by the data operation unit of the hardware accelerator, output data of the data operation unit based on the obtained information on the plurality of parameters. In this case, the acquiring may include, for each of the parameters, acquiring only some bits of a plurality of bits constituting each of the parameters; for each of the parameters, generating individual information about the parameter using only the obtained partial bits; and generating information on the plurality of parameters by using the set of individual information generated for the plurality of parameters.
이때, 각각의 상기 파라미터에 대하여, 각각의 상기 파라미터를 구성하는 상기 복수 개의 비트들 중 상기 일부의 비트들만을 버스(bus)를 통해 상기 메모리로부터 상기 하드웨어 가속기로 전송받도록 되어 있을 수 있다.In this case, for each of the parameters, only the partial bits among the plurality of bits constituting each of the parameters may be transmitted from the memory to the hardware accelerator through a bus.
이때, 각각의 상기 파라미터는 상기 메모리의 복수 개의 워드들에 걸쳐 저장되어 있고, 상기 획득한 일부의 비트들은 상기 복수 개의 워드들 중 일부에 저장된 비트들일 수 있다.In this case, each of the parameters may be stored across a plurality of words of the memory, and some of the obtained bits may be bits stored in some of the plurality of words.
이때, 상기 하드웨어 가속기가 상기 복수 개의 파라미터들에 관한 정보를 획득하기 위하여 상기 메모리에 대한 액세스를 시작하여 상기 액세스를 종료할 때까지의 시간인 이송시간은, 상기 데이터 연산부가 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 출력데이터를 산출하기 위한 연산 프로세스를 시작하여 상기 연산 프로세스를 종료할 때까지 소요되는 시간인 연산시간보다 짧은 것을 특징으로 할 수 있다.In this case, the transfer time, which is the time from when the hardware accelerator starts accessing the memory to obtain the information about the plurality of parameters, until the access ends, is, It may be characterized in that it is shorter than the calculation time, which is a time required from starting the calculation process for calculating the output data based on the information on the data to ending the calculation process.
본 발명의 다른 관점에 따른 하드웨어 가속기의 동작방법은, 신경망 가속기가, 신경망에서 정의된 제1레이어의 기능을 수행하기 위하여 필요한 제1파라미터에 관한 정보를 제1읽기모드에 따라 메모리로부터 획득하는 단계; 상기 신경망 가속기의 신경망 가속부가, 상기 획득한 제1파라미터에 관한 정보를 기초로 상기 제1레이어의 출력데이터를 산출하는 단계; 상기 신경망 가속기가, 상기 신경망에서 정의된 제2레이어의 기능을 수행하기 위하여 필요한 제2파라미터에 관한 정보를 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계; 및 상기 신경망 가속부가, 상기 획득한 제2파라미터에 관한 정보를 기초로 상기 제2레이어의 출력데이터를 산출하는 단계를 포함할 수 있다. 이때, 상기 제1파라미터에 관한 정보를 상기 제1읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제1파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제1파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제1파라미터에 관한 정보를 생성하는 단계를 포함할 수 있다.According to another aspect of the present invention, a method of operating a hardware accelerator includes: acquiring, by a neural network accelerator, information about a first parameter required to perform a function of a first layer defined in a neural network from a memory according to a first read mode ; calculating, by the neural network accelerator of the neural network accelerator, the output data of the first layer based on the obtained information on the first parameter; obtaining, by the neural network accelerator, information about a second parameter necessary for performing a function of a second layer defined in the neural network, from the memory according to a second read mode; and calculating, by the neural network accelerator, the output data of the second layer based on the obtained information on the second parameter. In this case, the acquiring of the information on the first parameter from the memory according to the first read mode may include: acquiring only some bits among a plurality of bits constituting the first parameter; and generating information about the first parameter by using only some bits obtained with respect to the first parameter.
이때, 상기 제2파라미터에 관한 정보를 상기 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제2파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제2파라미터에 관한 정보를 생성하는 단계를 포함하며, 상기 제1읽기모드는 상기 제1파라미터를 구성하는 비트들 중 n1개의 비트들만을 획득하는 모드이고, 상기 제2읽기모드는 상기 제2파라미터를 구성하는 비트들 중 n2개의 비트들만을 획득하는 모드이고, n1과 n2는 서로 다른 값일 수 있다.In this case, the acquiring of the information about the second parameter from the memory according to the second read mode includes: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter using only some bits obtained with respect to the second parameter, wherein the first read mode includes n1 bits among bits constituting the first parameter. is a mode for acquiring only n2 bits, and the second read mode is a mode for acquiring only n2 bits among bits constituting the second parameter, and n1 and n2 may have different values.
이때, 상기 n1의 최대값은 상기 메모리에 저장되어 있는 상기 제1파라미터를 구성하는 비트들의 총 개수이며, 또는 상기 n2의 최대값은 상기 메모리에 저장되어 있는 상기 제2파라미터를 구성하는 비트들의 총 개수일 수 있다.In this case, the maximum value of n1 is the total number of bits constituting the first parameter stored in the memory, or the maximum value of n2 is the total number of bits constituting the second parameter stored in the memory. It can be a number.
이때, 상기 제1파라미터는 상기 제1레이어에 입력되는 피쳐맵 또는 상기 제1레이어에서 이용하는 제1가중치이며, 상기 제2파라미터는 상기 제2레이어에 입력되는 피쳐맵 또는 상기 제2레이어에서 이용하는 제2가중치일 수 있다.In this case, the first parameter is a feature map input to the first layer or a first weight value used in the first layer, and the second parameter is a feature map input to the second layer or a first weight value used in the second layer. It can be two-weighted.
이때, 상기 제2파라미터에 관한 정보를 상기 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제2파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제2파라미터에 관한 정보를 생성하는 단계를 포함할 수 있다. 이때, 상기 획득한 상기 제1파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들의 개수인 n1은, 상기 획득한 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들의 개수인 n2보다 작으며, 상기 제1레이어는 상기 제2레이어보다 하류에 존재할 수 있다.In this case, the acquiring of the information about the second parameter from the memory according to the second read mode includes: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter by using only some bits obtained with respect to the second parameter. In this case, n1, which is the number of some bits among the plurality of bits constituting the obtained first parameter, is smaller than n2, which is the number of some bits among the obtained plurality of bits constituting the second parameter. and the first layer may exist downstream of the second layer.
본 발명의 일 관점에 따라 데이터 연산부 및 제어부를 포함하는 하드웨어 가속기로서, 상기 제어부는, 상기 하드웨어 가속기가 메모리에 액세스하여, 한 개의 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하도록 상기 하드웨어 가속기를 제어하도록 되어 있고, 그리고 상기 하드웨어 가속기의 데이터 연산부가, 상기 획득한 일부의 비트들을 기초로 상기 데이터 연산부의 출력데이터를 산출하도록 상기 데이터 연산부를 제어하도록 되어 있을 수 있다.According to an aspect of the present invention, a hardware accelerator including a data operation unit and a control unit, wherein the control unit is configured to allow the hardware accelerator to access a memory to obtain only some bits of a plurality of bits constituting one parameter The hardware accelerator may be controlled, and the data operation unit of the hardware accelerator may be configured to control the data operation unit to calculate output data of the data operation unit based on the obtained partial bits.
이때, 상기 제어부는, 상기 한 개의 파라미터를 구성하는 상기 복수 개의 비트들 중 상기 일부의 비트들만을 버스를 통해 상기 메모리로부터 상기 하드웨어 가속기로 전송받도록 상기 메모리를 제어하도록 되어 있을 수 있다.In this case, the controller may be configured to control the memory so that only the partial bits among the plurality of bits constituting the one parameter are transmitted from the memory to the hardware accelerator through a bus.
본 발명의 일 관점에 따라 상기 하드웨어 가속기 및 상기 메모리를 포함하는 컴퓨팅 장치를 제공할 수 있다.According to an aspect of the present invention, a computing device including the hardware accelerator and the memory may be provided.
본 발명에 따르면 하드웨어로 구성된 신경망 가속부의 활용도를 증가시키는 기술을 제공할 수 있다.According to the present invention, it is possible to provide a technique for increasing the utilization of a neural network accelerator composed of hardware.
본 발명에 따르면 하드웨어 가속기의 활용도를 증가시키는 기술을 제공할 수 있다.According to the present invention, it is possible to provide a technique for increasing the utilization of a hardware accelerator.
도 1은 본 발명의 이해를 돕기 위해 제시한 신경망의 일부 구성을 개념적으로 나타낸 것이다.1 is a conceptual diagram illustrating a partial configuration of a neural network presented to aid understanding of the present invention.
도 2는 신경망의 기능을 하드웨어로 구현한 신경망 가속부를 포함하는 신경망 연산장치 및 이를 포함하는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.FIG. 2 shows a main structure of a neural network computing device including a neural network accelerator in which a function of a neural network is implemented by hardware, and a part of a computing device including the same.
도 3은 신경망 가속부가 1회 동작하는 데에 소요되는 시간이 상기 연산을 위해 필요한 입력 데이터를 준비하는 시간보다 긴 경우에 발생하는 문제를 설명하기 위한 타이밍도이다.3 is a timing diagram for explaining a problem that occurs when a time required for the neural network accelerator to operate once is longer than a time for preparing input data required for the operation.
도 4는 소정의 연산을 수행하는 하드웨어 가속기 및 이를 포함하는 컴퓨팅 장치(1) 중 일부의 주요 구조를 나타낸 것이다.4 shows the main structure of a hardware accelerator for performing a predetermined operation and a part of the computing device 1 including the hardware accelerator.
도 5는 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.5 is a flowchart illustrating a method of operating a hardware accelerator provided according to an embodiment of the present invention.
도 6은 워드 단위로 읽기 및 쓰기 동작이 가능한 메모리의 논리 구조를 나타낸 것이다.6 illustrates a logical structure of a memory capable of read and write operations in units of words.
도 7은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.7 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
도 8은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.8 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
도 9는 본 발명의 또 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.9 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
도 10은 본 발명의 또 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.10 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
도 11은 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.11 illustrates a method of operating a hardware accelerator provided according to an embodiment of the present invention.
도 12는 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.12 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
도 13은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.13 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings. However, the present invention is not limited to the embodiments described herein and may be implemented in various other forms. The terminology used herein is for the purpose of helping the understanding of the embodiments, and is not intended to limit the scope of the present invention. Also, singular forms used hereinafter include plural forms unless the phrases clearly indicate the opposite.
이하, 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 도면을 참조하여 설명한다.Hereinafter, an operating method of a hardware accelerator provided according to an embodiment of the present invention will be described with reference to the drawings.
도 4는 소정의 연산을 수행하는 하드웨어 가속기 및 이를 포함하는 컴퓨팅 장치(1) 중 일부의 주요 구조를 나타낸 것이다.4 shows the main structure of a hardware accelerator for performing a predetermined operation and a part of the computing device 1 including the hardware accelerator.
컴퓨팅 장치(1)는, 메모리(11), 하드웨어 가속기(hardware accelerator)(110), 메모리(11)와 하드웨어 가속기(110)을 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99)를 포함할 수 있다. The computing device 1 includes a memory 11 , a hardware accelerator 110 , a bus 700 connecting the memory 11 and the hardware accelerator 110 , and other hardware connected to the bus 700 . (99) may be included.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 메인 프로세서, 사용자 인터페이스, 저장부, 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 하드웨어 가속기(110)과 타 하드웨어들(99)이 공유할 수도 있다.In addition, the computing device 1 may further include a power supply unit, a communication unit, a main processor, a user interface, a storage unit, and peripheral device units (not shown). The bus 700 may be shared by the hardware accelerator 110 and other hardware 99 .
하드웨어 가속기(110)는 DMA부(20), 제어부(40), 내부 메모리(30), 및 데이터 연산부(610)을 포함할 수 있다.The hardware accelerator 110 may include a DMA unit 20 , a control unit 40 , an internal memory 30 , and a data operation unit 610 .
내부 메모리(30)는 예컨대 static memory 일 수 있다.The internal memory 30 may be, for example, a static memory.
데이터 연산부(610)가 동작하기 위해서는 입력데이터(310)가 데이터 연산부(610)에게 제공되어야 한다. In order for the data operation unit 610 to operate, the input data 310 must be provided to the data operation unit 610 .
데이터 연산부(610)에게 제공되는 입력데이터(310)는 내부 메모리(30)로부터 출력되는 것일 수 있다.The input data 310 provided to the data operation unit 610 may be output from the internal memory 30 .
내부 메모리(30)는 입력데이터(310) 중 적어도 일부 또는 전부를 버스(700)를 통해 메모리(11)부터 제공받을 수 있다. 이때, 메모리(11)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, DMA부(20)가 내부 메모리(30) 및 메모리(11)을 제어할 수도 있다.The internal memory 30 may receive at least some or all of the input data 310 from the memory 11 through the bus 700 . In this case, in order to move the data stored in the memory 11 to the internal memory 30 , the DMA unit 20 may control the internal memory 30 and the memory 11 .
데이터 연산부(610)가 동작하면 입력데이터(310)를 기초로 출력데이터(330)가 생성될 수 있다. 생성된 출력데이터(330)는 우선 내부 메모리(30)에 저장될 수 있다. When the data operation unit 610 operates, the output data 330 may be generated based on the input data 310 . The generated output data 330 may be first stored in the internal memory 30 .
내부 메모리(30)에 저장된 출력데이터(330)는 DMA부(20)의 제어에 의해 메모리(11)에 기록될 수 있다. 그리고/또는, 내부 메모리(30)에 저장된 출력데이터(330)는 데이터 연산부(610)을 위한 새로운 입력데이터로서 간주되어 다시 데이터 연산부(610)에 제공될 수도 있다.The output data 330 stored in the internal memory 30 may be written to the memory 11 under the control of the DMA unit 20 . And/or, the output data 330 stored in the internal memory 30 may be regarded as new input data for the data operation unit 610 and provided to the data operation unit 610 again.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 데이터 연산부(610)의 동작을 총괄하여 제어할 수 있다.The controller 40 may collectively control the operations of the DMA unit 20 , the internal memory 30 , and the data operation unit 610 .
일 실시예에서, 데이터 연산부(610)는 제1시구간 동안에는 제1입출력 특성을 갖는 제1기능모듈의 기능을 수행하고, 제2시구간 동안에는 제2입출력특성을 갖는 제2기능모듈의 기능을 수행할 수 있다. 여기서 상기 제1기능모듈과 상기 제2기능모듈의 입력데이터의 형식과 출력데이터의 형식은 동일할 수 있다.In an embodiment, the data operation unit 610 performs a function of a first function module having a first input/output characteristic during a first time period, and performs a function of a second function module having a second input/output characteristic during a second time period. can be done Here, the format of the input data and the format of the output data of the first function module and the second function module may be the same.
일 실시예에서, 데이터 연산부(610)는 제1시구간 동안에는 예컨대 도 1에 나타낸 제1레이어(610)의 기능을 수행하고, 제2시구간 동안에는 예컨대 도 2에 나타낸 제2레이어(620)의 기능을 수행할 수 있다.In one embodiment, the data operation unit 610 performs, for example, the function of the first layer 610 shown in FIG. 1 during the first time period, and for example, the second layer 620 shown in FIG. 2 during the second time period. function can be performed.
일 실시예에서, 도 4에 나타낸 데이터 연산부(610)은 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.In an embodiment, a plurality of data operation units 610 shown in FIG. 4 may be provided to perform operations requested by the control unit 40 in parallel.
바람직한 일 실시예에서, 도 4의 메모리(11)는 DRAM일 수 있다. 그러나 본 발명이 이에 한정되는 것은 아니며, 한 개의 독립된 파라미터의 값을 복수 개의 워드들에 분산하여 저장하고, 각각의 워드를 개별적으로 읽어 들일 수 있는 기능을 제공하는 메모리라면 본 발명에 이용될 수 있다.In one preferred embodiment, the memory 11 of FIG. 4 may be a DRAM. However, the present invention is not limited thereto, and any memory providing a function of distributing and storing the value of one independent parameter in a plurality of words and individually reading each word may be used in the present invention. .
바람직한 일 실시예에서, 상기 하드웨어 가속기(110) 내의 구성요소들은 한 개의 웨이퍼 상에 배치되어 있을 수 있다.In a preferred embodiment, the components in the hardware accelerator 110 may be arranged on a single wafer.
바람직한 일 실시예에서, 상기 데이터 연산부(610)는 도 2에 제시한 신경망 가속부(neural network accelerating part)(60)일 수 있다. 이 경우 하드웨어 가속기(110)는 도 2에 제시한 신경망 연산장치라고 지칭되거나 또는 신경망 가속기(neural network accelerator)라고 지칭될 수도 있다. 이 경우, 도 4에 제시한 입력데이터(310) 이외에도 데이터 연산부(610)에 가중치들(320)이 더 제공될 수도 있다. 즉, 신경망 가속부(60)가 동작하기 위해서는 입력데이터(310) 및 가중치들(320)이 신경망 가속부(60)에게 제공될 수 있다. 그리고 신경망 가속부(60)에게 제공되는 입력데이터(310) 및 가중치들(320)은 내부 메모리(30)로부터 출력되는 것일 수 있다. 내부 메모리(30)는 입력데이터(310) 및 가중치들(320) 중 적어도 일부 또는 전부를 버스(700)를 통해 메모리(11)로부터 제공받을 수 있다. 이때, 메모리(11)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, DMA부(20)가 내부 메모리(30) 및 메모리(11)를 제어할 수도 있다. 신경망 가속부(60)가 동작하면 입력데이터(310) 및 가중치들(320)을 기초로 출력데이터(330)가 생성될 수 있다. 생성된 출력데이터(330)는 우선 내부 메모리(30)에 저장될 수 있다.In a preferred embodiment, the data operation unit 610 may be a neural network accelerating part 60 shown in FIG. 2 . In this case, the hardware accelerator 110 may be referred to as a neural network computing device shown in FIG. 2 or may also be referred to as a neural network accelerator. In this case, in addition to the input data 310 shown in FIG. 4 , weights 320 may be further provided to the data operation unit 610 . That is, in order for the neural network accelerator 60 to operate, the input data 310 and the weights 320 may be provided to the neural network accelerator 60 . In addition, the input data 310 and the weights 320 provided to the neural network accelerator 60 may be output from the internal memory 30 . The internal memory 30 may receive at least some or all of the input data 310 and the weights 320 from the memory 11 through the bus 700 . In this case, in order to move the data stored in the memory 11 to the internal memory 30 , the DMA unit 20 may control the internal memory 30 and the memory 11 . When the neural network accelerator 60 operates, the output data 330 may be generated based on the input data 310 and the weights 320 . The generated output data 330 may first be stored in the internal memory 30 .
이때, 상기 신경망 가속부의 입출력 특성(input-to-output characteristic, transfer function)은 상기 신경망 가속부가 구현하고자 하는 신경망에서 정의된 한 개의 레이어의 입출력 특성에 대응할 수 있다. 상기 입출력 특성은 상기 한 개의 레이어에 입력된 입력데이터가 상기 한 개의 레이어가 출력하는 출력데이터로 변환되는 변환규칙을 의미할 수 있으며, 본 명세서에는 이를 전달함수(transfer function)라는 용어로 표현할 수도 있다. In this case, the input-to-output characteristic (transfer function) of the neural network accelerator may correspond to the input/output characteristic of one layer defined in the neural network to be implemented by the neural network accelerator. The input/output characteristic may mean a conversion rule in which input data input to the one layer is converted into output data output by the one layer, and this may be expressed in terms of a transfer function in the present specification. .
상기 한 개의 신경망 가속부는 그 구동 시점에 따라 상기 신경망의 서로 다른 레이어의 기능을 수행할 수 있다. 상기 신경망의 각각의 레이어는 상기 신경망에 대한 소정의 학습규칙에 따라 시간에 따라 진화할 수 있다. 진화된 레이어가 이용하는 상기 파라미터들의 구체적인 값은, 진화되기 이전의 상기 레이어가 이용하는 상기 파라미터들의 구체적인 값과 다를 수 있다. 일 실시예에서 상기 진화되기 이전의 상기 파라미터들의 값은 메모리(11)에 이미 저장되어 있을 수 있고, 상기 진화가 이루어진 경과에 따라 갱신된 상기 파라미터들의 값은 상기 메모리(11)에 추가적으로 저장되거나, 이전의 값을 갱신한 형태로 저장될 수도 있다.The one neural network accelerator may perform functions of different layers of the neural network according to a driving time thereof. Each layer of the neural network may evolve over time according to a predetermined learning rule for the neural network. The specific values of the parameters used by the evolved layer may be different from the specific values of the parameters used by the layer before being evolved. In one embodiment, the values of the parameters before the evolution may be already stored in the memory 11, and the values of the parameters updated according to the progress of the evolution are additionally stored in the memory 11, The previous value may be stored in an updated form.
도 5는 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.5 is a flowchart illustrating a method of operating a hardware accelerator provided according to an embodiment of the present invention.
단계(S100)에서, 하드웨어 가속기(110)가, 한 개의 파라미터의 값이 복수 개의 워드들(words)에 걸쳐 저장되어 있는 메모리(11)에 액세스하여, 상기 복수 개의 워드들 중 일부의 워드에 저장된 비트들만을 읽을 수 있다.In step S100 , the hardware accelerator 110 accesses the memory 11 in which the value of one parameter is stored over a plurality of words, and is stored in some of the plurality of words. Only bits can be read.
이하, 도 6을 참조하여 상기 한 개의 파라미터의 값, 상기 복수 개의 워드들 및 상기 일부에 저장된 비트들의 관계를 설명한다.Hereinafter, the relationship between the value of the one parameter, the plurality of words, and the bits stored in the part will be described with reference to FIG. 6 .
도 6은 워드 단위로 읽기 및 쓰기 동작이 가능한 메모리의 논리 구조를 나타낸 것이다.6 illustrates a logical structure of a memory capable of read and write operations in units of words.
메모리(11)에는 복수 개의 워드들을 구성하는 정보가 저장될 수 있는 셀들이 제공되어 있을 수 있다. 각각의 워드는 예컨대 n비트로 구성될 수 있다. 본 발명의 일 실시예에 따라 제공되는 데이터 연산부(610)에 입력되어야 하는 파라미터는 상기 n비트 보다 많은 개수의 비트들로 표현될 수 있다고 가정할 수 있다. 즉, 도 6의 제1파라미터는 n비트로는 표현될 수 없으며, 이보다 많은 개수의 비트들을 이용하여 표현될 수 있는 제1해상도로 양자화되어 있을 수 있다. 즉, 상기 제1파라미터는 1개의 워드로는 표현될 수 없고 적어도 2개의 워드를 이용하여 표현될 수 있다.Cells in which information constituting a plurality of words may be stored may be provided in the memory 11 . Each word may consist of, for example, n bits. It can be assumed that a parameter to be input to the data operation unit 610 provided according to an embodiment of the present invention can be expressed by a number of bits greater than the n bits. That is, the first parameter of FIG. 6 cannot be expressed by n bits, but may be quantized to a first resolution that can be expressed using a greater number of bits. That is, the first parameter cannot be expressed using one word, but may be expressed using at least two words.
이때, DMA부(20)가 상기 제1해상도를 갖는 상기 제1파라미터를 획득하기 위해서는 상기 제1워드 및 제2워드를 모두 읽어야 한다. 읽힌 제1워드 및 제2워드는 버스(700)를 통해 순차적으로 하드웨어 가속기(110)로 이동할 수 있다.At this time, in order for the DMA unit 20 to obtain the first parameter having the first resolution, both the first word and the second word must be read. The read first word and the second word may sequentially move to the hardware accelerator 110 through the bus 700 .
본 발명의 일 실시예에서는, DMA부(20)가 상기 제1파라미터를 상기 제1해상도로 표현하기 위해 제공되는 상기 제1워드 및 상기 제2워드 상기 제1파라미터의 MSB(Most Significant Bit)를 포함하는 워드, 예컨대 제1워드만을 읽을 수 있다. 이렇게 하면 상기 제1워드만 버스(700)를 통해 하드웨어 가속기(110)로 이동하기 때문에, 상기 제1워드와 상기 제2워드를 모두 순차적으로 이동시키는 것에 비하여 데이터의 이동시간이 감소된다.In an embodiment of the present invention, the DMA unit 20 receives the MSB (Most Significant Bit) of the first parameter in the first word and the second word provided to express the first parameter at the first resolution. Only the containing word, for example, the first word can be read. In this way, since only the first word moves to the hardware accelerator 110 through the bus 700, the data movement time is reduced compared to sequentially moving both the first word and the second word.
다시 도 5로 돌아가 설명한다.Returning to FIG. 5 again, description will be made.
단계(S200)에서, 하드웨어 가속기(110)의 데이터 연산부(610)가, 상기 일부에 저장된 비트들만을 기초로 상기 데이터 연산부(610)의 출력데이터를 산출할 수 있다.In step S200 , the data operation unit 610 of the hardware accelerator 110 may calculate the output data of the data operation unit 610 based on only the bits stored in the part.
도 7은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.7 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
단계(S10)에서, 하드웨어 가속기(110)가, 한 개의 파라미터의 값이 복수 개의 워드들(words)에 걸쳐 저장되어 있는 메모리(11)에 액세스하여, 상기 복수 개의 워드들 중 일부의 워드에 저장된 비트들만을 읽을 수 있다.In step S10, the hardware accelerator 110 accesses the memory 11 in which the value of one parameter is stored over a plurality of words, and is stored in some of the plurality of words. Only bits can be read.
단계(S20)에서, 하드웨어 가속기(110)가, 상기 읽은 비트들의 값들로부터 상기 한 개의 파라미터의 값을 복원(reconstruct)할 수 있다.In step S20 , the hardware accelerator 110 may reconstruct the value of the one parameter from the values of the read bits.
상기 읽은 비트들은, 상기 제1워드 및 상기 제2워드 중 상기 제1워드를 구성하는 비트들만을 의미할 수 있다. The read bits may mean only bits constituting the first word among the first word and the second word.
그리고 예컨대, 상기 각각의 워드가 4개의 비트로 구성한다고 가정하였을 때에, 상기 제1해상도를 갖는 상기 제1파라미터는 8비트로 표현될 수 있다. 그러나 상기 일부의 워드(예컨대, 제1워드)에 저장된 비트들은 총 4비트이기 때문에 이 4개의 비트들이 나타내는 값은 상기 제1파라미터라고 할 수 없다. 본 발명에서는 상기 제1워드를 구성하는 비트들의 LSB의 아래쪽에 총 4개의 비트들을 부가하여, 오차를 허용하는 전략으로 상기 제1파라미터를 복원할 수 있다. 상기 부가된 4개의 비트들 각각은 0의 값을 가질 수 있다.And, for example, assuming that each word is composed of 4 bits, the first parameter having the first resolution may be expressed as 8 bits. However, since the bits stored in some of the words (eg, the first word) are 4 bits in total, the value represented by these 4 bits cannot be called the first parameter. In the present invention, a total of four bits may be added to the lower side of the LSB of the bits constituting the first word, and the first parameter may be restored using a strategy to allow an error. Each of the four added bits may have a value of 0.
메모리(11)의 제1워드 및 제2워드에 걸쳐 저장되어 있던 상기 제1파라미터가 2^8의 제1해상도를 갖는다면, 상기 복원된 제1파라미터는 2^4의 제2해상도를 갖는다는 점을 이해할 수 있다(n=4인 경우). 이는 복원된 제1파라미터의 하위 4개의 비트는 실질적으로 고정된 더미값이기 때문이다. 즉, 상기 제2해상도는 상기 제1해상도보다 낮다.If the first parameter stored across the first and second words of the memory 11 has a first resolution of 2^8, the restored first parameter has a second resolution of 2^4 point can be understood (if n=4). This is because the lower four bits of the restored first parameter are substantially fixed dummy values. That is, the second resolution is lower than the first resolution.
상기 복원된 제1파라미터는 상기 메모리에 저장되어 있던 제1파라미터와 완전히 동일한 값을 갖지 않을 수 있으며, 상기 메모리에 저장되어 있던 제1파라미터에 근사하는 값을 가질 수 있다.The restored first parameter may not have exactly the same value as the first parameter stored in the memory, and may have a value close to the first parameter stored in the memory.
상술한 단계(S10) 및 단계(S20)를 수행함으로써, 데이터 연산부(610)에 제공되어야 하는 제1파라미터의 해상도는 감소하였지만, 상기 제1파라미터를 메모리(11)로부터 읽어들여 준비하는 시간이 감소한다는 장점이 있음을 이해할 수 있다.By performing the above-described steps S10 and S20 , the resolution of the first parameter to be provided to the data operation unit 610 is reduced, but the time to read and prepare the first parameter from the memory 11 is reduced It is understandable that there are advantages to doing so.
단계(S30)에서, 하드웨어 가속기(110)의 데이터 연산부(610)가, 상기 복원된 한 개의 파라미터를 기초로 상기 데이터 연산부(610)의 출력데이터를 산출할 수 있다.In step S30 , the data calculating unit 610 of the hardware accelerator 110 may calculate the output data of the data calculating unit 610 based on the one restored parameter.
상기 단계(S20)는, 제어부(40)의 명령에 따라 내부 메모리(30), DMA부(20), 및 데이터 연산부(610) 중 어느 하나에서 수행될 수 있다. The step S20 may be performed in any one of the internal memory 30 , the DMA unit 20 , and the data operation unit 610 according to a command of the control unit 40 .
도 8은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.8 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
상기 하드웨어 가속기의 동작방법은, 한 개의 파라미터의 값이 복수 개의 워드들에 걸쳐 저장되어 있는 메모리에 액세스하여 하드웨어 가속기를 동작시키는 방법이다. The method of operating the hardware accelerator is a method of operating the hardware accelerator by accessing a memory in which the value of one parameter is stored over a plurality of words.
단계(S210)에서, 하드웨어 가속기(110)가, 메모리(11)에 액세스하여 복수 개의 파라미터들에 관정 정보를 획득할 수 있다.In step S210 , the hardware accelerator 110 may access the memory 11 to obtain relationship information on a plurality of parameters.
상기 단계(S210)는, 각각의 상기 파라미터에 대하여, 상기 파라미터의 값이 저장된 복수 개의 워드들 중 일부에 저장된 비트들만을 읽는 단계(S211); 및 각각의 상기 파라미터에 대하여, 상기 읽은 비트들만을 이용하여 상기 파라미터에 관한 정보를 생성하는 단계(S212)를 포함할 수 있다.The step (S210) may include, for each of the parameters, reading only bits stored in some of the plurality of words in which the value of the parameter is stored (S211); and for each of the parameters, generating information about the parameters using only the read bits ( S212 ).
단계(S220)에서, 하드웨어 가속기(110)의 데이터 연산부(610)가, 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 데이터 연산부(610)의 출력데이터를 산출할 수 있다.In step S220 , the data calculating unit 610 of the hardware accelerator 110 may calculate the output data of the data calculating unit 610 based on the obtained information on the plurality of parameters.
도 9는 본 발명의 또 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.9 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
상기 하드웨어 가속기의 동작방법은, 한 개의 파라미터의 값이 복수 개의 워드들에 걸쳐 저장되어 있는 메모리에 액세스하여 하드웨어 가속기를 동작시키는 방법이다. The method of operating the hardware accelerator is a method of operating the hardware accelerator by accessing a memory in which the value of one parameter is stored over a plurality of words.
단계(S110)에서, 하드웨어 가속기(110)가, 메모리(11)에 액세스하여 복수 개의 파라미터들을 획득할 수 있다. In step S110 , the hardware accelerator 110 may access the memory 11 to obtain a plurality of parameters.
상기 단계(S110)에서 획득한 임의의 한 개의 상기 파라미터(arbitrary one of the acquired plurality of parameters)(510)는, 상기 하드웨어 가속기(110)가, 상기 임의의 한 개의 파라미터(510)의 값을 저장하고 있는 복수 개의 워드들(511, 512) 중 일부(512)에 저장된 비트들만을 읽는 단계(S111); 및 상기 하드웨어 가속기(110)가, 상기 읽은 비트들로부터 상기 임의의 한 개의 파라미터의 값을 복원하는 단계(S112)를 수행하여 획득한 것일 수 있다.In the arbitrary one of the acquired plurality of parameters 510 obtained in the step S110 , the hardware accelerator 110 stores the value of the arbitrary one parameter 510 . Reading only the bits stored in some 512 of the plurality of words 511 and 512 in operation (S111); And the hardware accelerator 110 may be obtained by performing the step (S112) of restoring the value of the one parameter from the read bits.
단계(S120)에서, 하드웨어 가속기(110)의 데이터 연산부(610)가, 상기 획득한 복수 개의 파라미터들을 기초로 상기 데이터 연산부(610)의 출력데이터를 산출할 수 있다.In step S120 , the data operation unit 610 of the hardware accelerator 110 may calculate the output data of the data operation unit 610 based on the plurality of acquired parameters.
이때, 상기 하드웨어 가속기(110)가, 상기 복수 개의 파라미터들을 획득하기 위하여 상기 메모리(11)에 대한 액세스를 시작하여 종료할 때까지의 시간인 이송시간을 TT라고 하고, 상기 데이터 연산부(610)가, 상기 획득한 복수 개의 파라미터들을 기초로 상기 출력데이터를 산출하기 위한 연산 프로세스를 시작하여 상기 연산 프로세스를 종료할 때까지 소요되는 시간인 연산시간을 TO라고 하면, 상기 이송시간 TT는 상기 연산시간 TO보다 더 짧을 수 있다.At this time, the transfer time, which is the time from when the hardware accelerator 110 starts accessing the memory 11 to the end of the access to obtain the plurality of parameters, is referred to as TT, and the data operation unit 610 , if the calculation time, which is the time required from starting the calculation process for calculating the output data based on the obtained plurality of parameters to ending the calculation process, is TO, the transfer time TT is the calculation time TO could be shorter than
도 10은 본 발명의 또 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 순서도이다.10 is a flowchart illustrating a method of operating a hardware accelerator provided according to another embodiment of the present invention.
이 동작방법은, 각각의 파라미터의 값이 복수 개의 워드들에 걸쳐 저장되어 있는 메모리에 액세스하여 신경망 가속기를 동작시키는 방법이다.This operation method is a method of operating a neural network accelerator by accessing a memory in which the value of each parameter is stored over a plurality of words.
단계(S310)에서, 상기 신경망 가속기가, 신경망에서 정의된 제1레이어의 기능을 수행하기 위하여 필요한 제1파라미터에 관한 정보를 제1읽기모드에 따라 메모리로부터 획득할 수 있다.In step S310 , the neural network accelerator may acquire information about a first parameter required to perform the function of the first layer defined in the neural network from the memory according to the first read mode.
상기 단계(S310)는, 상기 제1파라미터의 값이 저장된 복수 개의 워드들 중 일부에 저장된 비트들만을 읽는 단계(S311), 및 상기 제1파라미터에 대하여, 상기 읽은 비트들만을 이용하여 상기 제1파라미터에 관한 정보를 생성하는 단계(S312)를 포함할 수 있다.In the step S310, reading only bits stored in some of the plurality of words in which the value of the first parameter is stored (S311), and for the first parameter, the first parameter using only the read bits It may include generating information about the parameter (S312).
단계(S320)에서, 상기 신경망 가속기의 신경망 가속부가, 상기 획득한 제1파라미터에 관한 정보를 기초로 상기 제1레이어의 출력데이터를 산출할 수 있다.In step S320, the neural network accelerator of the neural network accelerator may calculate the output data of the first layer based on the obtained information on the first parameter.
단계(S330)에서, 상기 신경망 가속기가, 상기 신경망에서 정의된 제2레이어의 기능을 수행하기 위하여 필요한 제2파라미터를 제2읽기모드에 따라 상기 메모리로부터 획득할 수 있다.In step S330, the neural network accelerator may acquire a second parameter necessary for performing the function of the second layer defined in the neural network from the memory according to the second read mode.
단계(S340)에서, 상기 신경망 가속부가, 상기 획득한 제2파라미터를 기초로 상기 제2레이어의 출력데이터를 산출할 수 있다.In step S340 , the neural network accelerator may calculate the output data of the second layer based on the obtained second parameter.
이때, 상기 제2읽기모드는, 상기 신경망 가속기가 상기 메모리에 액세스하여 상기 제2파라미터의 값이 저장되어 있는 복수 개의 워드들 저장되어 있는 비트들을 모두 읽는 모드일 수 있다.In this case, the second read mode may be a mode in which the neural network accelerator accesses the memory and reads all the bits stored in a plurality of words in which the value of the second parameter is stored.
이때, 상기 제1레이어의 출력데이터를 산출하는 단계(S320)는, 상기 신경망 가속기가, 상기 제1파라미터에 대하여 생성한 상기 파라미터에 관한 정보로부터 상기 제1파라미터의 값을 복원하는 단계(S321), 및 상기 신경망 가속부가, 상기 복원된 제1파라미터를 기초로 상기 신경망 가속부의 출력데이터를 산출하는 단계(S322)를 포함할 수 있다.In this case, the step of calculating the output data of the first layer (S320) includes the step of restoring, by the neural network accelerator, the value of the first parameter from information about the parameter generated with respect to the first parameter (S321) , and calculating, by the neural network accelerator, output data of the neural network accelerator on the basis of the restored first parameter (S322).
이때, 상기 제1파라미터는 상기 제1레이어의 입력데이터 또는 상기 제1레이어에서 이용하는 제1가중치이며, 상기 제2파라미터는 상기 제2레이어의 입력데이터 또는 상기 제2레이어에서 이용하는 제2가중치이며, 그리고 상기 제1레이어는 상기 제2레이어보다 하류에 존재하는 레이어일 수 있다. 상기 신경망은 예컨대 CNN(Convolutional Neural Network)일 수 있다.In this case, the first parameter is the input data of the first layer or a first weight used in the first layer, and the second parameter is the input data of the second layer or a second weight used in the second layer, In addition, the first layer may be a layer existing downstream of the second layer. The neural network may be, for example, a Convolutional Neural Network (CNN).
도 11은 본 발명의 일 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.11 illustrates a method of operating a hardware accelerator provided according to an embodiment of the present invention.
단계(S400)에서, 하드웨어 가속기(hardware accelerator)가, 메모리에 액세스하여, 한 개의 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득할 수 있다.In step S400 , a hardware accelerator may access a memory to acquire only some bits of a plurality of bits constituting one parameter.
단계(S410)에서, 상기 하드웨어 가속기의 데이터 연산부(data operation part)가, 상기 획득한 일부의 비트들을 기초로 상기 데이터 연산부의 출력데이터를 산출할 수 있다.In step S410 , the data operation part of the hardware accelerator may calculate output data of the data operation part based on the obtained partial bits.
도 12는 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.12 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
단계(S500)에서 하드웨어 가속기가, 메모리에 액세스하여 복수 개의 파라미터들에 관한 정보를 획득할 수 있다.In step S500 , the hardware accelerator may access the memory to obtain information about a plurality of parameters.
단계(S500)는 다음의 단계들(S501, S502, S503)을 포함할 수 있다.Step S500 may include the following steps S501, S502, and S503.
단계(S501)에서, 각각의 상기 파라미터에 대하여, 각각의 상기 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득할 수 있다.In step S501, for each of the parameters, only some bits among a plurality of bits constituting each of the parameters may be obtained.
단계(S502)에서, 각각의 상기 파라미터에 대하여, 상기 획득한 일부의 비트들만을 이용하여 상기 파라미터에 관한 개별 정보를 생성할 수 있다.In step S502 , for each of the parameters, individual information about the parameters may be generated using only some of the obtained bits.
단계(S503)에서, 복수 개의 상기 파라미터들에 대하여 생성한 상기 개별 정보의 집합을 이용하여 상기 복수 개의 파라미터들에 관한 정보를 생성할 수 있다.In step S503, information about the plurality of parameters may be generated by using the set of individual information generated for the plurality of parameters.
그 다음, 단계(S510)에서, 상기 하드웨어 가속기의 데이터 연산부가, 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 데이터 연산부의 출력데이터를 산출할 수 있다.Next, in step S510 , the data calculating unit of the hardware accelerator may calculate output data of the data calculating unit based on the obtained information on the plurality of parameters.
도 13은 본 발명의 다른 실시예에 따라 제공되는 하드웨어 가속기의 동작방법을 나타낸 것이다.13 illustrates a method of operating a hardware accelerator provided according to another embodiment of the present invention.
단계(S610)에서, 상기 신경망 가속기가, 신경망에서 정의된 제1레이어의 기능을 수행하기 위하여 필요한 제1파라미터에 관한 정보를 제1읽기모드에 따라 메모리로부터 획득할 수 있다.In step S610, the neural network accelerator may acquire information about a first parameter required to perform a function of the first layer defined in the neural network from the memory according to the first read mode.
단계(S610)는 다음의 단계(S611, S612)를 포함할 수 있다.Step S610 may include the following steps S611 and S612.
단계(S611)에서, 상기 제1파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들(N1개)만을 획득할 수 있다.In step S611, only some bits (N1 pieces) among a plurality of bits constituting the first parameter may be obtained.
단계(S612)에서, 상기 제1파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제1파라미터에 관한 정보를 생성할 수 있다.In step S612, information about the first parameter may be generated using only some bits obtained with respect to the first parameter.
단계(S620)에서, 상기 신경망 가속기의 신경망 가속부가, 상기 획득한 제1파라미터에 관한 정보를 기초로 상기 제1레이어의 출력데이터를 산출할 수 있다.In step S620, the neural network accelerator of the neural network accelerator may calculate the output data of the first layer based on the obtained information on the first parameter.
단계(S630)에서, 상기 신경망 가속기가, 상기 신경망에서 정의된 제2레이어의 기능을 수행하기 위하여 필요한 제2파라미터에 관한 정보를 제2읽기모드에 따라 상기 메모리로부터 획득할 수 있다.In step S630 , the neural network accelerator may acquire information about a second parameter required to perform a function of the second layer defined in the neural network from the memory according to the second read mode.
단계(S630)는 다음의 단계(S631, S632)를 포함할 수 있다.Step S630 may include the following steps S631 and S632.
단계(S631)에서, 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들(N2개)만을 획득할 수 있다.In step S631, only some bits (N2 pieces) of a plurality of bits constituting the second parameter may be obtained.
단계(S632)에서, 상기 제2파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제2파라미터에 관한 정보를 생성할 수 있다.In step S632, information about the second parameter may be generated using only some bits obtained for the second parameter.
단계(S640)에서, 상기 신경망 가속부가, 상기 획득한 제2파라미터에 관한 정보를 기초로 상기 제2레이어의 출력데이터를 산출할 수 있다.In step S640, the neural network accelerator may calculate the output data of the second layer based on the obtained information on the second parameter.
여기서 N1은 N2보다 클 수 있으며, 이때 상기 제1레이어는 상기 제2레이어보다 하류의 레이어일 수 있다.Here, N1 may be greater than N2, and in this case, the first layer may be a layer downstream of the second layer.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술 분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.By using the above-described embodiments of the present invention, those skilled in the art will be able to easily implement various changes and modifications within the scope without departing from the essential characteristics of the present invention. The content of each claim in the claims may be combined with other claims without reference within the scope that can be understood through this specification.
<사사-Acknowledgement><Sasa-Acknowledgment>
본 발명은, 오픈엣지테크놀로지 주식회사(과제수행기관)가, 과학기술정보통신부와 한국연구재단 부설 정보통신기획평가원의 지원으로 이루어진 연구사업인 차세대지능형반도체기술개발(설계)-인공지능 프로세서사업 중 가변 정밀도 고속-다중 사물인식 딥러닝 프로세서 기술 개발(과제고유번호 2020-0-01080, 과제번호 2020-0-01080, 연구기간 2020.04.01 ~ 2024.12.31) 연구과제를 수행하는 과정에서 개발된 것이다. The present invention is a variable among the next-generation intelligent semiconductor technology development (design)-artificial intelligence processor business, a research project supported by the Ministry of Science and ICT and the Information and Communication Planning and Evaluation Institute affiliated with the National Research Foundation of Open Edge Technology Co., Ltd. (the task execution organization) It was developed in the course of carrying out the research project for precision high-speed-multi-object recognition deep learning processor technology development (task unique number 2020-0-01080, task number 2020-0-01080, research period 2020.04.01 ~ 2024.12.31).

Claims (13)

  1. 데이터 연산부 및 제어부를 포함하는 하드웨어 가속기로서,A hardware accelerator comprising a data operation unit and a control unit, comprising:
    상기 제어부는, The control unit is
    상기 하드웨어 가속기가 메모리에 액세스하여, 한 개의 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계를 수행하도록 상기 하드웨어 가속기를 제어하도록 되어 있고, 그리고 and control the hardware accelerator so that the hardware accelerator accesses a memory and obtains only some bits of a plurality of bits constituting one parameter, and
    상기 하드웨어 가속기의 데이터 연산부가, 상기 획득한 일부의 비트들을 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계를 수행하도록 상기 데이터 연산부를 제어하도록 되어 있는,The data operation unit of the hardware accelerator is configured to control the data operation unit to perform the step of calculating output data of the data operation unit based on the obtained partial bits,
    하드웨어 가속기.hardware accelerator.
  2. 제1항에 있어서, 상기 제어부는, 상기 한 개의 파라미터를 구성하는 상기 복수 개의 비트들 중 상기 일부의 비트들만을 버스를 통해 상기 메모리로부터 상기 하드웨어 가속기로 전송받도록 상기 메모리를 제어하도록 되어 있는, 하드웨어 가속기.The hardware according to claim 1, wherein the control unit controls the memory so that only the partial bits of the plurality of bits constituting the one parameter are transmitted from the memory to the hardware accelerator through a bus. accelerator.
  3. 제1항에 있어서,According to claim 1,
    상기 산출하는 단계는, The calculating step is
    상기 하드웨어 가속기가, 상기 획득한 일부의 비트들의 값들로부터 상기 한 개의 파라미터의 값을 복원(reconstruct)하는 단계; 및reconstructing, by the hardware accelerator, the value of the one parameter from the obtained values of some bits; and
    상기 데이터 연산부가, 상기 복원된 한 개의 파라미터를 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계;calculating, by the data calculating unit, output data of the data calculating unit based on the one restored parameter;
    를 포함하는 것을 특징으로 하는,characterized in that it comprises,
    하드웨어 가속기.hardware accelerator.
  4. 제1항에 있어서, 상기 데이터 연산부는 신경망 가속부(neural network accelerating part)이고, 상기 신경망 가속부의 입출력 특성(input-to-output characteristic, transfer function)은 신경망에서 정의된 한 개의 레이어의 입출력 특성에 대응하는, 하드웨어 가속기.According to claim 1, wherein the data operation unit is a neural network accelerating part (neural network accelerating part), the input-to-output characteristic (transfer function) of the neural network acceleration part is the input-output characteristic of one layer defined in the neural network. Corresponding, hardware accelerator.
  5. 제4항에 있어서, 5. The method of claim 4,
    상기 한 개의 파라미터는, 상기 한 개의 레이어에 입력되는 입력데이터 중 하나의 값이고,The one parameter is a value of one of input data input to the one layer,
    상기 입력데이터는 상기 한 개의 레이어가 이용하는 가중치 데이터 또는 상기 한 개의 레이어에 입력되는 액티베이션 데이터인,The input data is weight data used by the one layer or activation data input to the one layer,
    하드웨어 가속기.hardware accelerator.
  6. 제1항에 있어서,According to claim 1,
    상기 획득하는 단계는, 상기 하드웨어 가속기가, 상기 메모리에 액세스하여 상기 한 개의 파라미터를 포함하는 복수 개의 파라미터들에 관한 정보를 획득하는 단계이며, The obtaining is a step in which the hardware accelerator accesses the memory to obtain information about a plurality of parameters including the one parameter,
    상기 산출하는 단계는, 상기 하드웨어 가속기의 데이터 연산부가, 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 데이터 연산부의 출력데이터를 산출하는 단계이며,The calculating is a step of calculating, by the data calculating unit of the hardware accelerator, output data of the data calculating unit based on the obtained information on the plurality of parameters,
    상기 획득하는 단계는, The obtaining step is
    각각의 상기 파라미터에 대하여, 각각의 상기 파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계;obtaining, for each said parameter, only some bits of a plurality of bits constituting each said parameter;
    각각의 상기 파라미터에 대하여, 상기 획득한 일부의 비트들만을 이용하여 상기 파라미터에 관한 개별 정보를 생성하는 단계; 및for each of the parameters, generating individual information about the parameter using only the obtained partial bits; and
    복수 개의 상기 파라미터들에 대하여 생성한 상기 개별 정보의 집합을 이용하여 상기 복수 개의 파라미터들에 관한 정보를 생성하는 단계generating information about the plurality of parameters by using the set of individual information generated with respect to the plurality of parameters;
    를 포함하는,containing,
    하드웨어 가속기.hardware accelerator.
  7. 제6항에 있어서, 상기 하드웨어 가속기가 상기 복수 개의 파라미터들에 관한 정보를 획득하기 위하여 상기 메모리에 대한 액세스를 시작하여 상기 액세스를 종료할 때까지의 시간인 이송시간은, 상기 데이터 연산부가 상기 획득한 복수 개의 파라미터들에 관한 정보를 기초로 상기 출력데이터를 산출하기 위한 연산 프로세스를 시작하여 상기 연산 프로세스를 종료할 때까지 소요되는 시간인 연산시간보다 짧은 것을 특징으로 하는, 하드웨어 가속기.The transfer time according to claim 6, wherein the transfer time, which is a time from when the hardware accelerator starts accessing the memory to obtain the information about the plurality of parameters, until the access ends, is determined by the data operation unit. The hardware accelerator, characterized in that it is shorter than a calculation time, which is a time required from starting a calculation process for calculating the output data based on information about a plurality of parameters to ending the calculation process.
  8. 신경망 가속기가, 신경망에서 정의된 제1레이어의 기능을 수행하기 위하여 필요한 제1파라미터에 관한 정보를 제1읽기모드에 따라 메모리로부터 획득하는 단계;acquiring, by the neural network accelerator, information about a first parameter necessary to perform a function of a first layer defined in the neural network, from a memory according to a first read mode;
    상기 신경망 가속기의 신경망 가속부가, 상기 획득한 제1파라미터에 관한 정보를 기초로 상기 제1레이어의 출력데이터를 산출하는 단계;calculating, by the neural network accelerator of the neural network accelerator, the output data of the first layer based on the obtained information on the first parameter;
    상기 신경망 가속기가, 상기 신경망에서 정의된 제2레이어의 기능을 수행하기 위하여 필요한 제2파라미터에 관한 정보를 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계; 및obtaining, by the neural network accelerator, information about a second parameter necessary for performing a function of a second layer defined in the neural network, from the memory according to a second read mode; and
    상기 신경망 가속부가, 상기 획득한 제2파라미터에 관한 정보를 기초로 상기 제2레이어의 출력데이터를 산출하는 단계;calculating, by the neural network acceleration unit, output data of the second layer based on the obtained information on the second parameter;
    를 포함하며,includes,
    상기 제1파라미터에 관한 정보를 상기 제1읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제1파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제1파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제1파라미터에 관한 정보를 생성하는 단계를 포함하는,The acquiring of the information about the first parameter from the memory according to the first read mode may include: acquiring only some bits among a plurality of bits constituting the first parameter; and generating information about the first parameter using only some bits obtained for the first parameter.
    하드웨어 가속기의 동작방법.How hardware accelerators work.
  9. 제8항에 있어서, 9. The method of claim 8,
    상기 제2파라미터에 관한 정보를 상기 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제2파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제2파라미터에 관한 정보를 생성하는 단계를 포함하며,The acquiring of the information about the second parameter from the memory according to the second read mode may include: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter using only some bits obtained for the second parameter,
    상기 제1읽기모드는 상기 제1파라미터를 구성하는 비트들 중 n1개의 비트들만을 획득하는 모드이고,The first read mode is a mode for acquiring only n1 bits among bits constituting the first parameter,
    상기 제2읽기모드는 상기 제2파라미터를 구성하는 비트들 중 n2개의 비트들만을 획득하는 모드이고,The second read mode is a mode for acquiring only n2 bits among bits constituting the second parameter,
    n1과 n2는 서로 다른 값인,n1 and n2 are different values,
    하드웨어 가속기의 동작방법.How hardware accelerators work.
  10. 제9항에 있어서,10. The method of claim 9,
    상기 n1의 최대값은 상기 메모리에 저장되어 있는 상기 제1파라미터를 구성하는 비트들의 총 개수이며, 또는The maximum value of n1 is the total number of bits constituting the first parameter stored in the memory, or
    상기 n2의 최대값은 상기 메모리에 저장되어 있는 상기 제2파라미터를 구성하는 비트들의 총 개수인,The maximum value of n2 is the total number of bits constituting the second parameter stored in the memory,
    하드웨어 가속기의 동작방법.How hardware accelerators work.
  11. 제8항에 있어서,9. The method of claim 8,
    상기 제1파라미터는 상기 제1레이어에 입력되는 피쳐맵 또는 상기 제1레이어에서 이용하는 제1가중치이며,The first parameter is a feature map input to the first layer or a first weight value used in the first layer,
    상기 제2파라미터는 상기 제2레이어에 입력되는 피쳐맵 또는 상기 제2레이어에서 이용하는 제2가중치인,wherein the second parameter is a feature map input to the second layer or a second weight value used in the second layer;
    하드웨어 가속기의 동작방법.How hardware accelerators work.
  12. 제8항에 있어서,9. The method of claim 8,
    상기 제2파라미터에 관한 정보를 상기 제2읽기모드에 따라 상기 메모리로부터 획득하는 단계는, 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들만을 획득하는 단계; 및 상기 제2파라미터에 대하여 획득한 일부의 비트들만을 이용하여 상기 제2파라미터에 관한 정보를 생성하는 단계를 포함하며,The acquiring of the information about the second parameter from the memory according to the second read mode may include: acquiring only some bits among a plurality of bits constituting the second parameter; and generating information about the second parameter using only some bits obtained for the second parameter,
    상기 획득한 상기 제1파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들의 개수인 n1은, 상기 획득한 상기 제2파라미터를 구성하는 복수 개의 비트들 중 일부의 비트들의 개수인 n2보다 작으며,n1, which is the number of some bits of the obtained plurality of bits constituting the first parameter, is smaller than n2, which is the number of some bits among the obtained plurality of bits constituting the second parameter,
    상기 제1레이어는 상기 제2레이어보다 하류에 존재하는,The first layer is present downstream of the second layer,
    하드웨어 가속기의 동작방법.How hardware accelerators work.
  13. 제1항 내지 제7항 중 어느 한 항의 하드웨어 가속기 및 상기 메모리를 포함하는 컴퓨팅 장치.A computing device comprising the hardware accelerator of claim 1 and the memory.
PCT/KR2020/015480 2020-06-02 2020-11-06 Method for accessing parameter for hardware accelerator from memory, and device using same WO2021246586A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200066383A KR102418794B1 (en) 2020-06-02 2020-06-02 Method of accessing parameters for a hardware accelerator from a memory and a device for the same
KR10-2020-0066383 2020-06-02

Publications (1)

Publication Number Publication Date
WO2021246586A1 true WO2021246586A1 (en) 2021-12-09

Family

ID=78830379

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/015480 WO2021246586A1 (en) 2020-06-02 2020-11-06 Method for accessing parameter for hardware accelerator from memory, and device using same

Country Status (2)

Country Link
KR (1) KR102418794B1 (en)
WO (1) WO2021246586A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240030359A (en) * 2022-08-30 2024-03-07 오픈엣지테크놀로지 주식회사 Operation method at neural network and device for the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150076198A (en) * 2012-12-28 2015-07-06 인텔 코포레이션 Apparatus and method for low-latency invocation of accelerators
EP3035249A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
KR20180120967A (en) * 2017-04-28 2018-11-07 서울대학교산학협력단 Method and apparatus for data quantization for neural network
WO2019201656A1 (en) * 2018-04-19 2019-10-24 Aimotive Kft. Method for accelerating operations and accelerator apparatus

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2332539B (en) * 1997-12-17 2003-04-23 Fujitsu Ltd Memory access methods and devices for use with random access memories
US10360163B2 (en) * 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
PL3563235T3 (en) * 2016-12-31 2023-03-13 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
KR20190101677A (en) * 2018-02-23 2019-09-02 주식회사 모비스 SYSTEM of DETERMINING CONTROL PARAMETER for OPTIMIZING ACCELERATOR PERFORMANCE WITH REINFORCEMENT LEARNING and MACHINE LEARNING
US10705842B2 (en) * 2018-04-02 2020-07-07 Intel Corporation Hardware accelerators and methods for high-performance authenticated encryption

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150076198A (en) * 2012-12-28 2015-07-06 인텔 코포레이션 Apparatus and method for low-latency invocation of accelerators
EP3035249A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
KR20180120967A (en) * 2017-04-28 2018-11-07 서울대학교산학협력단 Method and apparatus for data quantization for neural network
WO2019201656A1 (en) * 2018-04-19 2019-10-24 Aimotive Kft. Method for accelerating operations and accelerator apparatus

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
COREY B. OLSON ; MARIA KIM ; COOPER CLAUSON ; BORIS KOGON ; CARL EBELING ; SCOTT HAUCK ; WALTER L. RUZZO: "Hardware Acceleration of Short Read Mapping", FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES (FCCM), 2012 IEEE 20TH ANNUAL INTERNATIONAL SYMPOSIUM ON, 29 April 2012 (2012-04-29), pages 161 - 168, XP032202792, ISBN: 978-1-4673-1605-7, DOI: 10.1109/FCCM.2012.36 *

Also Published As

Publication number Publication date
KR20210149396A (en) 2021-12-09
KR102418794B1 (en) 2022-07-08

Similar Documents

Publication Publication Date Title
WO2019194465A1 (en) Neural network processor
WO2018113239A1 (en) Data scheduling method and system for convolutional neural network, and computer device
WO2019164237A1 (en) Method and device for performing deep learning calculation by using systolic array
WO2021246586A1 (en) Method for accessing parameter for hardware accelerator from memory, and device using same
WO2012026679A2 (en) Power consumption prediction method for clock-gating integrated circuit device
WO2019112117A1 (en) Method and computer program for inferring meta information of text content creator
WO2020091207A1 (en) Method, apparatus, and computer program for completing painting of image, and method, apparatus, and computer program for training artificial neural network
WO2022124725A1 (en) Method, device, and computer program for predicting interaction between compound and protein
WO2022196945A1 (en) Apparatus for predicting population dispersion on basis of population dispersion simulation model, and method for predicting population dispersion by using same
WO2023177108A1 (en) Method and system for learning to share weights across transformer backbones in vision and language tasks
WO2023022321A1 (en) Distributed learning server and distributed learning method
WO2020075957A1 (en) Artificial neural network computation acceleration apparatus for distributed processing, artificial neural network acceleration system using same, and artificial neural network acceleration method therefor
WO2022102982A1 (en) User participation-based artificial intelligence service method and device for performing same method
WO2022114523A1 (en) Memory controller that varies total limited number of commands provided to memory device, and memory thermal throttling method using same
WO2022244997A1 (en) Method and apparatus for processing data
WO2022145564A1 (en) Model automatic compression method and device for deep-learning model serving optimization, and method for providing cloud inference service using same
WO2021177617A1 (en) Electronic apparatus and method for controlling thereof
WO2022039494A1 (en) Server for updating model of terminal, and operating method therefor
WO2022004970A1 (en) Neural network-based key point training apparatus and method
WO2023120829A1 (en) Method for pooling array and device therefor
WO2022220496A1 (en) Neural network-based biological state data conversion apparatus and method therefor
WO2022255561A1 (en) High-efficiency pooling method and device therefor
WO2021002523A1 (en) Neuromorphic device
WO2023013817A1 (en) Method for optimizing broadcast multiply, and hardware accelerator and computing device using same
WO2024014632A1 (en) Neural network design method and device therefor

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: 20939186

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: 20939186

Country of ref document: EP

Kind code of ref document: A1