WO2020073925A1 - 运算方法、装置、计算机设备和存储介质 - Google Patents

运算方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
WO2020073925A1
WO2020073925A1 PCT/CN2019/110167 CN2019110167W WO2020073925A1 WO 2020073925 A1 WO2020073925 A1 WO 2020073925A1 CN 2019110167 W CN2019110167 W CN 2019110167W WO 2020073925 A1 WO2020073925 A1 WO 2020073925A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
data
activation
module
executed
Prior art date
Application number
PCT/CN2019/110167
Other languages
English (en)
French (fr)
Inventor
苏振宇
周晓勇
张定飞
孟小甫
Original Assignee
上海寒武纪信息科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from CN201811532788.5A external-priority patent/CN111325331B/zh
Priority claimed from CN201910402787.7A external-priority patent/CN111045729A/zh
Priority claimed from CN201910403429.8A external-priority patent/CN111353595A/zh
Priority claimed from CN201910406775.1A external-priority patent/CN111047028A/zh
Priority claimed from CN201910402790.9A external-priority patent/CN111222633A/zh
Priority claimed from CN201910406768.1A external-priority patent/CN111047027A/zh
Priority claimed from CN201910548674.8A external-priority patent/CN110119807B/zh
Priority claimed from CN201910548275.1A external-priority patent/CN110096310B/zh
Priority claimed from CN201910614673.9A external-priority patent/CN111026440B/zh
Priority claimed from CN201910620768.1A external-priority patent/CN111124497B/zh
Priority claimed from CN201910620766.2A external-priority patent/CN111047030A/zh
Priority claimed from CN201910625442.8A external-priority patent/CN111290788B/zh
Priority claimed from CN201910623290.8A external-priority patent/CN111047005A/zh
Priority claimed from CN201910625443.2A external-priority patent/CN111275197B/zh
Priority claimed from CN201910625494.5A external-priority patent/CN111061507A/zh
Priority claimed from CN201910625610.3A external-priority patent/CN111290789B/zh
Priority claimed from CN201910625497.9A external-priority patent/CN111062483A/zh
Priority claimed from CN201910629417.7A external-priority patent/CN111339060B/zh
Priority claimed from CN201910636077.0A external-priority patent/CN111338694B/zh
Priority claimed from CN201910636339.3A external-priority patent/CN111353124A/zh
Priority claimed from CN201910645052.7A external-priority patent/CN111353125B/zh
Priority claimed from CN201910755816.8A external-priority patent/CN111340202B/zh
Application filed by 上海寒武纪信息科技有限公司 filed Critical 上海寒武纪信息科技有限公司
Publication of WO2020073925A1 publication Critical patent/WO2020073925A1/zh

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

Definitions

  • the present disclosure relates to the field of computer technology, and in particular, to an arithmetic method, device, computer equipment, and storage medium.
  • an activation instruction processing apparatus including:
  • the control module is configured to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and obtain the data to be operated and the data to be operated required to execute the activation instruction according to the operation code and the operation domain target address;
  • the operation module is used for performing activation operation on the data to be operated to obtain an operation result, and storing the operation result in the target address,
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation
  • the operation domain includes the data address to be operated and the target address.
  • a machine learning computing device including:
  • One or more of the above-mentioned activation instruction processing devices are used to obtain data and control information to be calculated from other processing devices, and perform designated machine learning operations, and pass the execution results to other processing devices through the I / O interface;
  • a plurality of activation instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the activation instruction processing devices interconnect and transmit data through a PCIE bus, a fast external device interconnection bus, to support larger-scale machine learning operations; a plurality of the activation instruction processing devices share the same control system or own Respective control systems; a plurality of the activation instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of activation instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device comprising:
  • the machine learning operation device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a machine learning chip including the above machine learning network operation device or the above combination processing device.
  • a machine learning chip packaging structure including the above machine learning chip.
  • a board card including the above machine learning chip packaging structure.
  • an electronic device including the aforementioned machine learning chip or the aforementioned board.
  • an activation instruction processing method is provided. The method is applied to an activation instruction processing device. The method includes:
  • the activation table and the constant table perform an activation operation on the data to be operated to obtain an operation result, and store the operation result in the target address
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation
  • the operation domain includes an address of the data to be operated, an activation table address, a constant table address, and the target address.
  • a non-volatile computer-readable storage medium having computer program instructions stored thereon, the computer program instructions implementing the above activation instruction processing method when executed by a processor.
  • Embodiments of the present disclosure provide an activation instruction processing method, device, and related products.
  • the device includes a control module and an arithmetic module.
  • the control module is used to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and Obtain the data to be operated and the target address required to execute the activation instruction according to the operation code and the operation domain; the operation module is used to perform the activation operation on the operation data to obtain the operation result, and store the operation result in the target address.
  • the method, device and related products for processing activation instructions provided by the embodiments of the present disclosure have a wide range of applications, and have high processing efficiency and processing speed for activation instructions, and high processing efficiency and processing speed for performing activation calculations.
  • the electronic device includes a data processing device, a robot, a computer, a printer, a scanner, a tablet computer, a smart terminal, a mobile phone, a driving recorder, a navigator, a sensor, a camera, a server, a cloud server, a camera, Cameras, projectors, watches, headphones, mobile storage, wearable devices, vehicles, household appliances, and / or medical devices.
  • the vehicle includes an airplane, ship, and / or vehicle;
  • the household appliance includes a TV, air conditioner, microwave oven, refrigerator, rice cooker, humidifier, washing machine, electric lamp, gas stove, and range hood;
  • the medical Equipment includes MRI, B-mode ultrasound and / or electrocardiograph.
  • FIG. 1 shows a schematic diagram of a processor according to an embodiment of the present disclosure.
  • FIG. 1-1 shows a block diagram of an activation instruction processing apparatus according to an embodiment of the present disclosure.
  • 1-2a and 1-2b show block diagrams of an activation instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 1-3 are schematic diagrams illustrating application scenarios of an activation instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 1-4 show a flowchart of an activation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 2-1 shows a block diagram of a linear rectification function activation instruction processing device according to an embodiment of the present disclosure.
  • 2-2a and 2-2b show block diagrams of a linear rectification function activation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 2-3 shows a schematic diagram of an application scenario of a linear rectification function activation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 2-4 illustrate a flowchart of a method for processing a linear rectification function activation instruction according to an embodiment of the present disclosure.
  • FIG. 3-1 shows a block diagram of an S-shaped growth curve function activation instruction processing apparatus according to an embodiment of the present disclosure.
  • 3-2a and 3-2b show block diagrams of an S-shaped growth curve function activation instruction processing device according to an embodiment of the present disclosure.
  • 3-3 shows a schematic diagram of an application scenario of an S-shaped growth curve function activation instruction processing apparatus according to an embodiment of the present disclosure.
  • FIGS. 3-4 illustrate a flowchart of an S-shaped growth curve function activation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 4-1 shows a block diagram of an exponential function activation instruction processing apparatus according to an embodiment of the present disclosure.
  • 4-2a and 4-2b show block diagrams of an exponential function activation instruction processing device according to an embodiment of the present disclosure.
  • 4-3 shows a schematic diagram of an application scenario of an exponential function activation instruction processing device according to an embodiment of the present disclosure.
  • 4-4 shows a flowchart of an exponential function activation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 5-1 shows a block diagram of a selection instruction processing apparatus according to an embodiment of the present disclosure.
  • 5-2a and 5-2b show block diagrams of a selection instruction processing apparatus according to an embodiment of the present disclosure.
  • 5-3 shows a schematic diagram of an application scenario for selecting an instruction processing apparatus according to an embodiment of the present disclosure.
  • 5-4 shows a flowchart of a selection instruction processing method according to an embodiment of the present disclosure.
  • 6-1 shows a block diagram of a count instruction processing device according to an embodiment of the present disclosure.
  • 6-2a and 6-2b show block diagrams of a counting instruction processing device according to an embodiment of the present disclosure.
  • FIG. 6-3 shows a schematic diagram of an application scenario of a counting instruction processing device according to an embodiment of the present disclosure.
  • 6-4 shows a flowchart of a counting instruction processing method according to an embodiment of the present disclosure.
  • FIG. 7-1 shows a block diagram of a fully connected instruction processing apparatus according to an embodiment of the present disclosure.
  • 7-2a and 7-2b show block diagrams of a fully connected instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 7-3 shows a schematic diagram of an application scenario of a fully connected instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 7-4 shows a flowchart of a fully connected instruction processing method according to an embodiment of the present disclosure.
  • FIG. 8-1 shows a block diagram of a convolution instruction processing device according to an embodiment of the present disclosure.
  • 8-2a and 8-2b show block diagrams of a convolution instruction processing device according to an embodiment of the present disclosure.
  • FIG. 8-3 shows a schematic diagram of an application scenario of a convolution instruction processing device according to an embodiment of the present disclosure.
  • FIG. 8-4 shows a flowchart of a convolution instruction processing method according to an embodiment of the present disclosure.
  • 9-1 shows a block diagram of a maximum pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • 9-2a and 9-2b show block diagrams of a maximum pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • 9-3 shows a schematic diagram of an application scenario of a maximum pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • 9-4 shows a flowchart of a maximum pooling instruction processing method according to an embodiment of the present disclosure.
  • FIG. 10-1 shows a block diagram of a filling instruction processing apparatus according to an embodiment of the present disclosure.
  • 10-2a and 10-2b show block diagrams of a filling instruction processing device according to an embodiment of the present disclosure.
  • FIG. 10-3 shows a schematic diagram of an application scenario of a filling instruction processing apparatus according to an embodiment of the present disclosure.
  • 10-4 shows a flowchart of a filling instruction processing method according to an embodiment of the present disclosure.
  • 11-1 shows a block diagram of a matrix transposition instruction processing apparatus according to an embodiment of the present disclosure.
  • 11-2a and 11-2b show block diagrams of a matrix transposition instruction processing device according to an embodiment of the present disclosure.
  • 11-3 shows a schematic diagram of an application scenario of a matrix transposition instruction processing apparatus according to an embodiment of the present disclosure.
  • 11-4 shows a flowchart of a matrix transposition instruction processing method according to an embodiment of the present disclosure.
  • 12-1 shows a block diagram of an average pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • 12-2a and 12-2b show block diagrams of an average pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 12-3 shows a schematic diagram of an application scenario of an average pooled instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 12-4 shows a flowchart of an average pooling instruction processing method according to an embodiment of the present disclosure.
  • FIG. 13-1 shows a block diagram of a scalar instruction processing device according to an embodiment of the present disclosure.
  • 13-2a and 13-2b show block diagrams of a scalar instruction processing device according to an embodiment of the present disclosure.
  • 13-3a and 13-3b show schematic diagrams of application scenarios of a scalar instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 13-4 shows a flowchart of a scalar instruction processing method according to an embodiment of the present disclosure.
  • FIG. 14-1 shows a block diagram of a scalar type conversion instruction processing device according to an embodiment of the present disclosure.
  • 14-2a and 14-2b show block diagrams of a scalar type conversion instruction processing device according to an embodiment of the present disclosure.
  • FIG. 14-3 shows a schematic diagram of an application scenario of a scalar type conversion instruction processing device according to an embodiment of the present disclosure.
  • FIG. 14-4 shows a flowchart of a scalar type conversion instruction processing method according to an embodiment of the present disclosure.
  • 15-1 shows a block diagram of an address fetch instruction processing apparatus according to an embodiment of the present disclosure.
  • 15-2 shows a block diagram of an address fetch instruction processing apparatus according to an embodiment of the present disclosure.
  • 15-3a and 15-3b show schematic diagrams of application scenarios of an address fetch instruction processing apparatus according to an embodiment of the present disclosure.
  • 15-4 shows a flowchart of an address fetch instruction processing method according to an embodiment of the present disclosure.
  • 16-1 shows a block diagram of a scalar data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • 16-2 shows a block diagram of a scalar data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • 16-3 shows a schematic diagram of an application scenario of a scalar data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • 16-4 shows a flowchart of a scalar data migration instruction processing method according to an embodiment of the present disclosure.
  • 17-1 shows a block diagram of a scalar control flow instruction processing apparatus according to an embodiment of the present disclosure.
  • 17-2 shows a block diagram of a scalar control flow instruction processing apparatus according to an embodiment of the present disclosure.
  • 17-3 shows a schematic diagram of an application scenario of a scalar control flow instruction processing apparatus according to an embodiment of the present disclosure.
  • 17-4 shows a flowchart of a scalar control flow instruction processing method according to an embodiment of the present disclosure.
  • 18-1 shows a block diagram of a vector instruction processing apparatus according to an embodiment of the present disclosure.
  • 18-2a and 18-2b show block diagrams of a vector instruction processing device according to an embodiment of the present disclosure.
  • 18-3 shows a schematic diagram of an application scenario of a vector instruction processing apparatus according to an embodiment of the present disclosure.
  • 18-4 shows a flowchart of a vector instruction processing method according to an embodiment of the present disclosure.
  • 19-1 shows a block diagram of a loop vector instruction processing apparatus according to an embodiment of the present disclosure.
  • 19-2a and 19-2b show block diagrams of a loop vector instruction processing device according to an embodiment of the present disclosure.
  • 19-3 shows a schematic diagram of an application scenario of a loop vector instruction processing device according to an embodiment of the present disclosure.
  • 19-4 shows a flowchart of a loop vector instruction processing method according to an embodiment of the present disclosure.
  • FIG. 20-1 shows a block diagram of a vector data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 20-2 shows a block diagram of a vector data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • 20-3 shows a schematic diagram of an application scenario of a vector data migration instruction processing apparatus according to an embodiment of the present disclosure.
  • 20-4 shows a flowchart of a vector data migration instruction processing method according to an embodiment of the present disclosure.
  • 21-1a shows a block diagram of a synchronization control instruction processing apparatus according to an embodiment of the present disclosure.
  • 21-1b shows a schematic structural diagram of a module cluster in a synchronous control instruction processing apparatus according to an embodiment of the present disclosure.
  • 21-2 shows a block diagram of a synchronization control instruction processing apparatus according to an embodiment of the present disclosure.
  • 21-3 illustrate a schematic diagram of an application scenario of a synchronization control instruction processing apparatus according to an embodiment of the present disclosure.
  • 21-4 illustrate a flowchart of a method for processing synchronization control instructions according to an embodiment of the present disclosure.
  • 22-1 shows a block diagram of an interrupt storage instruction processing apparatus according to an embodiment of the present disclosure.
  • 22-2a and 22-2b illustrate block diagrams of an interrupt storage instruction processing apparatus according to an embodiment of the present disclosure.
  • 22-3a and 22-3b are schematic diagrams illustrating application scenarios of an apparatus for processing interrupt storage instructions according to an embodiment of the present disclosure.
  • 22-4 shows a flowchart of an interrupt storage instruction processing method according to an embodiment of the present disclosure.
  • 23a-23d show a block diagram of an arithmetic module according to an embodiment of the present disclosure.
  • 23e shows a block diagram of a control module according to an embodiment of the present disclosure.
  • 24a and 24b show block diagrams of a combined processing device according to an embodiment of the present disclosure.
  • FIG. 25 shows a schematic structural diagram of a board according to an embodiment of the present disclosure.
  • the term “if” may be interpreted as “when” or “once” or “in response to a determination” or “in response to a detection” depending on the context.
  • the phrase “if determined” or “if [described condition or event] is detected” may be interpreted in the context to mean “once determined” or “in response to a determination” or “once detected [described condition or event ] “Or” In response to detection of [the described condition or event] ".
  • the present disclosure provides instruction processing methods and devices corresponding to different operations or processes, and computer equipment and storage media corresponding to each instruction processing method and device, and instruction processing methods corresponding to different operations or processes And devices include: selection instruction processing method and device, counting instruction processing method and device, fully connected instruction processing method and device, convolution instruction processing method and device, maximum pooling instruction processing method and device, linear rectification function activation instruction processing method And device, S-shaped growth curve function activation instruction processing method and device, activation instruction processing method and device, filling instruction processing method and device, matrix transposition instruction processing method and device, average pooling instruction processing method and device, exponential function activation Instruction processing method and device, scalar instruction processing method and device, scalar type conversion instruction processing method and device, address fetch instruction processing method and device, scalar data migration instruction processing method and device, scalar control flow instruction processing method and device, vector instruction Processor Method and device, loop vector instruction processing method and device, vector data migration instruction processing method and device, synchronous control instruction processing method and device, and interrupt storage instruction processing method and device
  • the instruction processing method may be applied to a processor, which may be a general-purpose processor, such as a CPU (Central Processing Unit), or artificial intelligence processing for performing artificial intelligence operations Device (IPU).
  • Artificial intelligence operations can include machine learning operations, brain-like operations, and so on. Among them, machine learning operations include neural network operations, k-means operations, support vector machine operations, etc.
  • the artificial intelligence processor may include, for example, GPU (Graphics Processing Unit), NPU (Neural-Network Processing Unit, neural network processing unit), DSP (Digital Signal Processing, digital signal processing unit), field programmable gate array (Field-Programmable Gate Array, FPGA) One or a combination of chips. This disclosure does not limit the specific types of processors.
  • the processor mentioned in the present disclosure may include multiple processing units, and each processing unit may independently run various assigned tasks, such as: convolution operation tasks and pooling tasks Or fully connected tasks.
  • the present disclosure does not limit the processing unit and the tasks executed by the processing unit.
  • FIG. 1 shows a schematic diagram of a processor according to an embodiment of the present disclosure.
  • the processor 100 includes a plurality of processing units 101 and a storage unit 102.
  • the plurality of processing units 101 are used to execute an instruction sequence
  • the storage unit 102 is used to store data, which may include a random access memory (RAM, Random Access Memory) And register file.
  • the multiple processing units 101 in the processor 100 can share a part of the storage space, for example, share a part of the RAM storage space and the register file, and can also have their own storage spaces at the same time.
  • FIG. 1-1 shows a block diagram of an activation instruction processing apparatus according to an embodiment of the present disclosure. As shown in Figure 1-1, the device includes a control module 8-11 and an arithmetic module 8-12.
  • the control module 8-11 is used to parse the obtained activation instruction, obtain the operation code and operation domain of the activation instruction, and obtain the data to be operated and the target address required for executing the activation instruction according to the operation code and operation domain.
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation, and the operation domain includes the data address and the target address to be operated.
  • the operation module 8-12 is used to activate the operation data to obtain the operation result, and store the operation result in the target address.
  • control module can obtain the data to be calculated from the data address to be calculated.
  • the control module can obtain instructions and data through the data input and output unit, which can be one or more data I / O interfaces or I / O pins.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, such as a corresponding address, and all data required to execute the corresponding instruction include data to be operated, equivalent data, and corresponding operation methods, etc.
  • an activation instruction it must include an operation code and an operation field, where the operation field includes at least the data address and the target address to be calculated.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module may receive a linear rectification function activation instruction, and control one or more processing modules to perform the linear rectification function activation operation.
  • the multiple control modules may respectively receive linear rectification function activation instructions and control the corresponding one or more processing modules to perform linear rectification function activation operations.
  • An embodiment of the present disclosure provides an activation instruction processing apparatus.
  • the apparatus includes a control module and an arithmetic module.
  • the control module is used to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and according to the operation code and operation The domain obtains the data to be operated and the target address required to execute the activation instruction;
  • the operation module is used to perform the activation operation on the data to be operated, obtain the operation result, and store the operation result in the target address.
  • the activation instruction processing device provided by the embodiments of the present disclosure has a wide application range, and has high processing efficiency and fast processing speed for activation instructions, and high processing efficiency and fast processing speed for performing activation calculations.
  • the activation function used by the activation operation may include at least one of the following: a linear rectification function (Rectified Linear Unit, ReLU, also called ReLU function), and an S-shaped growth curve function (Sigmoid function, also It can be called Sigmoid function), hyperbolic tangent function (tanh, can also be called tanh function), linear rectification function with leakage (Leaky ReLU, a variant of ReLU function), the function of taking the maximum value (maxout function, output the largest in this layer Value) and power function.
  • a linear rectification function (Rectified Linear Unit, also called ReLU function)
  • Sigmoid function also It can be called Sigmoid function
  • tanh hyperbolic tangent function
  • Leaky ReLU a variant of ReLU function
  • the function of taking the maximum value maxout function, output the largest in this layer Value
  • the activation function used for the activation operation may also be other features that are non-linear, continuously differentiable, as unsaturated as possible in range, monotonic, approximate straight lines at dots, etc., available This disclosure does not limit the function of activating the operation.
  • control module 8-11 may also be used to obtain an activation parameter table according to the operation code and / or operation domain.
  • the operation modules 8-12 can also be used to perform activation calculation on the data to be calculated according to the activation parameter table to obtain the operation result.
  • the activation parameter table may include an activation table and a constant table.
  • the activation parameter table address may be included in the operation domain, so that the control module obtains the activation parameter table address from the activation parameter table address.
  • the control module may determine that the activation parameter table needs to be activated according to the operation code, and may directly obtain the activation parameter table from the storage address of the predetermined activation parameter table.
  • the control module may determine that the activation parameter table needs to be activated according to the operation code, it may directly obtain the activation parameter table corresponding to the activation command from the storage address of the predetermined parameter table.
  • a person skilled in the art may set the acquisition method of the activation parameter table according to actual needs, which is not limited in the present disclosure.
  • control module can also obtain an activation function corresponding to the activation instruction, so that the operation module can perform activation calculation on the operation data according to the activation function and the corresponding operator.
  • an activation table and a constant table required for activation operations using different activation functions can be predetermined.
  • the activation table and constant table corresponding to different activation functions are different.
  • the arithmetic module 8-12 may include a plurality of activation operators 8-120.
  • a plurality of activation calculators 8-120 are used to perform activation calculation on the data to be calculated.
  • the calculation module may also include an activation calculator.
  • the number of activation operators can be set according to the size of the data amount of the activation operation to be performed, the processing speed, efficiency, etc. of the activation operation, which is not limited in the present disclosure.
  • the operation module 8-12 may include a master operation sub-module 8-121 and multiple slave operation sub-modules 8-122, and the master operation sub-module 8-121 includes Multiple activation operators 8-120 (not shown in the figure).
  • the main operation sub-module 8-121 is used for performing an activation operation on the data to be calculated by using a plurality of activation operators, obtaining an operation result, and storing the operation result in a target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 8-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the plurality of data to be calculated may be less than or equal to the read-in amount.
  • the read-in amount may be the data amount of the plurality of acquired data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the acquired data amount of the plurality of data to be calculated may be less than or equal to the default read-in amount.
  • the data amount and size of the operation data can be limited, the accuracy of the operation result can be guaranteed, and the device can execute the activation instruction.
  • the device may further include a storage module 8-13.
  • the storage modules 8-13 are used to store data to be calculated.
  • the storage module 13 can also be used to store an activation table and a constant table.
  • the storage module may include a memory, such as one or more of a cache and a register, and the cache may include a high-speed temporary storage cache.
  • the data to be calculated, the activation table and the constant table can be stored in the cache and / or register of the storage module as needed, and the disclosure does not limit this.
  • the device may further include a direct memory access module, which is used to read or store data from the storage module.
  • the instruction format of the activation instruction may be:
  • active is the opcode of the activation instruction
  • dst, src0, active_table, const_table, and size are the operation domains of the activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • active_table is the active table address
  • const_table is the constant table address
  • size is the read-in amount.
  • the instruction format of the activation instruction may also be:
  • active is the operation code of the activation instruction
  • dst, src0, size are the operation domain of the activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • size is the read-in amount.
  • the device may be set in a graphics processor (Graphics Processing Unit, GPU for short), a central processing unit (Central Processing Unit, CPU for short) and an embedded neural network processor (Neural-network Processing Unit) , Referred to as NPU).
  • a graphics processor Graphics Processing Unit, GPU for short
  • CPU Central Processing Unit
  • NPU embedded neural network processor
  • FIG. 1-3 are schematic diagrams illustrating application scenarios of an activation instruction processing apparatus according to an embodiment of the present disclosure. As shown in Figure 1-3, the activation instruction processing device processes the activation instruction as follows:
  • the control module 8-11 parses the acquired activation instruction 1 (for example, activation instruction 1 is active 500, 100, 200, 300, 64) to obtain the operation code and operation domain of the activation instruction 1.
  • the operation code of the activation instruction 1 is active
  • the target address is 500
  • the data address to be calculated is 100
  • the activation table address is 200
  • the constant table address is 300
  • the read-in amount is 64.
  • the control module 8-11 acquires the data to be calculated with a data amount of 64 (read-in amount) from the data address to be calculated 100, the activation table from the activation table address 200, and the constant table from the constant table address 300.
  • the operation module 8-12 performs activation calculation on the operation data according to the activation table and the constant table, obtains the operation result, and stores the operation result in the target address 500.
  • Example 2 is different from Example 1 in that activation instruction 1 is active 500 and 100 64. Assuming that the activation calculation needs to be performed according to the activation parameter table, the control module 8-11 needs to obtain the activation parameter table (see the above description for the specific implementation process).
  • the activation instruction processing device can process the activation instruction efficiently and quickly, and realize the efficient and rapid processing of the activation operation.
  • FIGS. 1-4 show a flowchart of an activation instruction processing method according to an embodiment of the present disclosure. As shown in FIGS. 1-4, this method is applied to the above-mentioned activation instruction processing apparatus.
  • the method includes step S51-8 and step S52-8.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following steps S51-8 ⁇ ⁇ S52-8.
  • step S51-8 the control module is used to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and obtain the data to be calculated and the target address required to execute the activation instruction according to the operation code and operation domain.
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation, and the operation domain includes the data address and the target address to be operated.
  • step S52-8 the arithmetic module is used to activate the operation data to obtain the operation result, and the operation result is stored in the target address.
  • the method may further include:
  • the operation module is used to activate the operation data to obtain the operation result, including:
  • the activation parameter table may include an activation table and a constant table.
  • using the operation module to perform activation operation on the operation data to obtain an operation result may include: performing activation operation on the operation data using multiple activation operators.
  • the operation module may include a master operation sub-module and multiple slave operation sub-modules, and the master operation sub-module may include multiple activation operators,
  • the operation module is used to activate the operation data to obtain the operation result, which may include:
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • acquiring the data to be operated, the activation table, the constant table, and the target address required to execute the activation instruction according to the operation code and the operation domain may include: acquiring the read-in amount, and acquiring multiple data to be operated according to the read-in amount.
  • the method may further include: storing data to be calculated.
  • parsing the obtained activation instruction to obtain the operation code and operation domain of the activation instruction may include:
  • the instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed include activation instructions.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, and after determining that the execution of the zeroth instruction to be executed is completed, the execution of the first instruction to be executed is controlled,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the activation function utilized by the activation operation may include at least one of the following:
  • Linear rectification function S-shaped growth curve function, hyperbolic tangent function, linear rectification function with leakage, maximum function and power function.
  • the method for processing an activation instruction provided by the embodiments of the present disclosure has a wide application range, and has a high processing efficiency and a fast processing speed for the activation instruction, and a high processing efficiency and a fast processing speed for performing the activation operation.
  • an activation instruction processing device characterized in that the device includes:
  • the control module is configured to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and obtain the data to be operated and the data to be operated required to execute the activation instruction according to the operation code and the operation domain target address;
  • the operation module is used for performing activation operation on the data to be operated to obtain an operation result, and storing the operation result in the target address,
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation
  • the operation domain includes the data address to be operated and the target address.
  • Clause H2 The device according to Clause H1, characterized in that
  • the control module is also used to obtain an activation parameter table according to the operation code and / or the operation domain;
  • the calculation module is also used to perform activation calculation on the data to be calculated according to the activation parameter table to obtain an operation result
  • the activation parameter table includes an activation table and a constant table.
  • Clause H3 The device according to Clause H1, characterized in that the arithmetic module includes:
  • a plurality of activation calculators are used to perform activation calculation on the data to be calculated.
  • Clause H4 The device according to Clause H3, wherein the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the main operation sub-module is configured to perform activation operation on the data to be operated by using the plurality of activation operators to obtain an operation result, and store the operation result in the target address.
  • Clause H5 The device according to Clause H1, wherein the operation domain includes a read-in amount or a storage address of the read-in amount,
  • control module is also used to obtain the read-in amount, and obtain the data to be calculated according to the read-in amount.
  • Clause H6 The device according to Clause H1, characterized in that the device further comprises:
  • the storage module is used for storing the data to be calculated.
  • control module includes:
  • An instruction processing submodule used for parsing the activation instruction to obtain the operation code and operation domain of the activation instruction
  • a queue storage submodule is used to store an instruction queue, and the instruction queue includes a plurality of instructions to be executed that are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the activation instruction.
  • control module further comprises:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause H9 The device according to any one of Clause H1 to Clause H8, characterized in that the activation function utilized by the activation operation includes at least one of the following:
  • Linear rectification function S-shaped growth curve function, hyperbolic tangent function, linear rectification function with leakage, maximum function and power function.
  • a machine learning computing device characterized in that the device includes:
  • a plurality of activation instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the activation instruction processing devices interconnect and transmit data through a PCIE bus, a fast external device interconnection bus, to support larger-scale machine learning operations; a plurality of the activation instruction processing devices share the same control system or own Respective control systems; a plurality of the activation instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of activation instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device characterized in that the combined processing device includes:
  • Machine learning computing devices general interconnection interfaces and other processing devices as described in clause H10;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • a machine learning chip characterized in that the machine learning chip includes:
  • An electronic device characterized in that the electronic device includes:
  • a board card characterized in that the board card includes: a storage device, an interface device and a control device, and a machine learning chip as described in Clause H12;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • An activation instruction processing method characterized in that the method is applied to an activation instruction processing device, and the method includes:
  • control module uses the control module to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, and obtain the data to be calculated and the target address required to execute the activation instruction according to the operation code and the operation domain ;
  • the operation code is used to indicate that the operation performed by the activation instruction on the data is an activation operation
  • the operation domain includes the data address to be operated and the target address.
  • Clause H16 The method according to Clause H15, characterized in that the method further comprises:
  • the operation module is used to activate the operation data to obtain the operation result, including:
  • the activation parameter table includes an activation table and a constant table.
  • Clause H17 The method according to Clause H15, characterized in that an operation module is used to activate the data to be operated to obtain an operation result, including:
  • a plurality of activation calculators are used to perform activation calculation on the data to be calculated.
  • Clause H18 The method according to Clause H15, wherein the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, and the master operation sub-module includes the plurality of activation operators,
  • the operation module is used to activate the operation data to obtain the operation result, including:
  • Clause H19 The method according to Clause H15, wherein the operation domain further includes a read-in amount or a storage address of the read-in amount,
  • obtaining the data to be calculated, the activation table, the constant table and the target address required to execute the activation instruction according to the operation code and the operation domain includes:
  • Clause H20 The method according to Clause H15, characterized in that the method further comprises:
  • Clause H21 The method according to Clause H15, characterized in that the control module is used to parse the obtained activation instruction to obtain the operation code and operation domain of the activation instruction, including:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged in order of execution, and the plurality of instructions to be executed include the activation instruction.
  • Clause H22 The method according to Clause H21, characterized in that the method further comprises:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause H23 The method according to any one of Clause H15 to Clause H22, characterized in that the activation function utilized by the activation operation includes at least one of the following:
  • Linear rectification function S-shaped growth curve function, hyperbolic tangent function, linear rectification function with leakage, maximum function and power function.
  • FIG. 2-1 shows a block diagram of a linear rectification function activation instruction processing device according to an embodiment of the present disclosure. As shown in Figure 2-1, the device includes a control module 6-11 and an arithmetic module 6-12.
  • the control module 6-11 is used to parse the obtained linear rectification function activation instruction, obtain the operation code and operation domain of the linear rectification function activation instruction, and obtain the required operation command and operation domain according to the operation code and operation domain. Data to be calculated and target address.
  • the operation code is used to indicate that the activation operation performed by the linear rectification function activation instruction on the data is a linear rectification function activation operation.
  • the operation domain includes the data address and target address to be calculated.
  • the operation module 6-12 is used to perform linear rectification function activation operation on the data to be calculated, obtain the operation result, and store the operation result in the target address.
  • control module can obtain the data to be calculated from the data address to be calculated.
  • the control module may determine the data required to perform the linear rectification function activation operation according to the operation code of the linear rectification function activation instruction.
  • the control module can obtain instructions and data through the data input and output unit, which can be one or more data I / O interfaces or I / O pins.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, such as a corresponding address, etc. All data required to execute the corresponding instruction include data such as data to be operated and corresponding operation methods, etc.
  • a linear rectification function activation instruction it must include an operation code and an operation field, where the operation field includes at least the data address to be operated and the target address.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module may receive a linear rectification function activation instruction, and control one or more processing modules to perform the linear rectification function activation operation.
  • the multiple control modules may respectively receive linear rectification function activation instructions and control the corresponding one or more processing modules to perform linear rectification function activation operations.
  • An embodiment of the present disclosure provides a linear rectification function activation instruction processing device.
  • the device includes a control module and an arithmetic module.
  • the control module is configured to parse the obtained linear rectification function activation instruction to obtain an operation code and a linear rectification function activation instruction.
  • Operation domain according to the operation code and operation domain to obtain the data to be operated and the target address required to execute the linear rectification function activation instruction; the operation module is used to perform linear rectification function activation operation on the operation data to obtain the operation result and store the operation result Into the destination address.
  • the linear rectification function activation instruction processing device provided by the embodiments of the present disclosure has a wide range of applications.
  • the linear rectification function activation instruction has high processing efficiency and fast processing speed, and the linear rectification function activation operation has high processing efficiency and fast processing speed.
  • control module 6-11 may also be used to obtain a linear rectification activation function parameter table according to the operation code and / or operation domain.
  • the operation module 6-12 can also be used to perform a linear rectification function activation operation on the data to be calculated according to the linear rectification activation function parameter table to obtain an operation result.
  • the linear rectification activation function parameter table may include a linear rectification activation function activation table and a linear rectification activation function constant table.
  • the operation domain may include a linear rectification activation function parameter table address, so that the control module obtains the linear rectification activation function parameter table address from the linear rectification activation function parameter table address.
  • the control module may determine that the linear rectification activation function parameter table is required to execute the linear rectification function activation instruction according to the operation code, and may directly obtain the linear rectification activation function parameter table from the storage address of the predetermined linear rectification activation function parameter table.
  • the linear rectification activation function corresponding to the linear rectification function activation instruction can be obtained directly from the storage address of the predetermined parameter table Parameters Table.
  • a person skilled in the art can set the acquisition method of the linear rectification activation function parameter table according to actual needs, which is not limited in the present disclosure.
  • control module may also obtain an activation function corresponding to the linear rectification function activation instruction, so that the operation module may perform linear rectification function activation operation on the operation data according to the activation function and the corresponding operator.
  • the arithmetic module 6-12 may include multiple activation operators 6-120.
  • a plurality of activation operators 6-120 are used to perform linear rectification function activation operations on the data to be operated.
  • the calculation module may also include an activation calculator.
  • the number of activation operators can be set according to the amount of data required to perform the linear rectification function activation operation, the processing speed and efficiency of the linear rectification function activation operation, and the disclosure does not limit this.
  • the operation module 6-12 may include a master operation submodule 6-121 and a plurality of slave operation submodules 6-122, and the master operation submodule 6-121 includes Multiple activation operators 6-120 (not shown in the figure).
  • the main operation sub-module 6-121 is used to perform a linear rectification function activation operation on the data to be calculated using a plurality of activation operators to obtain the operation result, and store the operation result in the target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 6-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the plurality of data to be calculated may be less than or equal to the read-in amount.
  • the read-in amount may be the data amount of the acquired plurality of data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the acquired data amount of the plurality of data to be calculated may be less than or equal to the default read-in amount.
  • the data amount and size of the operation data can be limited, the accuracy of the operation result can be guaranteed, and the device can execute the linear rectification function activation instruction.
  • the device may further include a storage module 6-13.
  • the storage modules 6-13 are used to store data to be calculated.
  • the storage modules 6-13 can also be used to store the linear rectification activation function parameter table.
  • the storage module may include a memory, such as one or more of a cache and a register, and the cache may include a high-speed temporary storage cache.
  • the data to be calculated and the parameter table of the linear rectification activation function can be stored in the cache and / or register of the storage module as needed, and the disclosure does not limit this.
  • the device may further include a direct memory access module, which is used to read or store data from the storage module.
  • the instruction format of the linear rectification function activation instruction may be:
  • active.relu is the operation code of the linear rectification function activation instruction
  • dst, src0, and size are the operation domains of the linear rectification function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • src1 is the address of the linear rectification activation function parameter table
  • size is the read-in amount.
  • the instruction format of the linear rectification function activation instruction may be:
  • active.relu is the operation code of the linear rectification function activation instruction
  • dst, src0, src1, and size are the operation domains of the linear rectification function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • src1 is the address of the linear rectification activation function parameter table
  • size is the read-in amount.
  • the device may be set in (Graphics Processing Unit, GPU for short), Central Processing Unit (CPU for short), and Neural-network Processing Unit (NPU for short) ) Of one or more.
  • GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • NPU Neural-network Processing Unit
  • FIG. 2-3 shows a schematic diagram of an application scenario of a linear rectification function activation instruction processing device according to an embodiment of the present disclosure.
  • the linear rectification function activation instruction processing device processes the linear rectification function activation instruction as follows:
  • the control module 6-11 analyzes the obtained linear rectification function activation instruction 1 (for example, the linear rectification function activation instruction 1 is active.relu500 / 10064) to obtain the linear rectification function activation instruction 1 Operation code and operation field.
  • the operation code of the linear rectification function activation instruction 1 is active.relu
  • the target address is 500
  • the data address to be calculated is 100
  • the read-in amount is 64.
  • the control module 6-11 acquires the data to be calculated with a data amount of 64 (read-in amount) from the data address to be calculated 100. Assuming that the activation calculation needs to be performed according to the linear rectification activation function parameter table, the control module 6-11 also needs to obtain the linear rectification activation function parameter table (see the above description for the specific implementation process).
  • the operation module 6-12 performs linear rectification function activation calculation on the operation data according to the linear rectification activation function parameter table, obtains the operation result, and stores the operation result in the target address 500.
  • the linear rectification function activation instruction processing device can efficiently and quickly process the linear rectification function activation instruction, and realize the efficient and rapid processing of the linear rectification function activation operation.
  • FIGS. 2-4 illustrate a flowchart of a method for processing a linear rectification function activation instruction according to an embodiment of the present disclosure.
  • the method is applied to the above linear rectification function activation instruction processing device, and the method includes step S51-6 and step S52-6.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following steps S51-6 ⁇ ⁇ S52-6.
  • step S51-6 the control module is used to analyze the obtained linear rectification function activation instruction to obtain the operation code and operation domain of the linear rectification function activation instruction, and the linear rectification function activation instruction is obtained according to the operation code and operation domain Required data to be calculated and target address.
  • the operation code is used to indicate that the activation operation performed by the linear rectification function activation instruction on the data is the linear rectification function activation operation, and the operation domain includes the data address to be operated and the target address.
  • step S52-6 the operation module performs linear rectification function activation operation on the operation data to obtain the operation result, and stores the operation result in the target address.
  • the method may further include:
  • using the operation module to perform the linear rectification function activation operation on the operation data to obtain the operation result includes: performing the linear rectification function activation operation on the operation data according to the linear rectification activation function parameter table to obtain the operation result.
  • the linear rectification activation function parameter table may include a linear rectification activation function activation table and a linear rectification activation function constant table.
  • using the operation module to perform a linear rectification function activation operation on the data to be calculated according to the linear rectification activation function parameter table to obtain the operation result may include:
  • a plurality of activation operators are used to perform linear rectification function activation operations on the data to be calculated.
  • the operation module may include a master operation sub-module and multiple slave operation sub-modules, and the master operation sub-module may include multiple activation operators.
  • the operation module is used to activate the operation data to obtain the operation result, which may include:
  • a plurality of activation operators in the main operation sub-module are used to perform linear rectification function activation operation on the operation data to obtain an operation result.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • obtaining the data to be calculated and the target address required to execute the linear rectification function activation instruction according to the operation code and the operation domain may include:
  • the method may further include: storing data to be calculated.
  • control module is used to analyze the obtained linear rectification function activation instruction to obtain the operation code and operation domain of the linear rectification function activation instruction, which may include:
  • the instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed arranged in order according to the execution order, and the plurality of instructions to be executed include a linear rectification function activation instruction.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, and after determining that the execution of the zeroth instruction to be executed is completed, the execution of the first instruction to be executed is controlled,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the linear rectification function activation instruction processing method provided by the embodiments of the present disclosure has a wide range of application, and has high processing efficiency and fast processing speed for the linear rectification function activation instruction, and high processing efficiency and fast processing speed for performing the linear rectification function activation operation.
  • a linear rectification function activation command processing device comprising:
  • the control module is used to parse the obtained linear rectification function activation instruction, obtain the operation code and operation domain of the linear rectification function activation instruction, and obtain and execute the linear rectification function according to the operation code and the operation domain The data to be calculated and the target address required for the activation instruction;
  • the operation module is used for performing activation operation on the data to be operated to obtain an operation result, and storing the operation result in the target address,
  • the operation code is used to indicate that the activation operation performed by the linear rectification function activation instruction on the data is a linear rectification function activation operation, and the operation domain includes the data address to be operated and the target address.
  • the control module is further configured to obtain a linear rectification activation function parameter table according to the operation code and / or the operation domain;
  • the operation module is further configured to perform a linear rectification function activation operation on the data to be calculated according to the linear rectification activation function parameter table to obtain an operation result
  • the linear rectification activation function parameter table includes a linear rectification activation function activation table and a linear rectification activation function constant table.
  • the calculation module includes:
  • a plurality of activation operators are used to perform a linear rectification function activation operation on the data to be operated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the main operation sub-module is configured to use the plurality of activation operators to perform a linear rectification function activation operation on the data to be operated to obtain an operation result, and store the operation result in the target address.
  • Clause F5 The device according to Clause F1, the operation domain further includes a read-in amount or a storage address of the read-in amount,
  • control module is also used to obtain the read-in amount, and obtain the data to be calculated according to the read-in amount.
  • Clause F6 The device according to Clause F1, the device further comprising:
  • the storage module is configured to store the data to be calculated and the linear rectification activation function parameter table.
  • control module includes:
  • An instruction storage sub-module for storing the linear rectification function activation instruction
  • An instruction processing sub-module which is used to analyze the linear rectification function activation instruction to obtain the operation code and operation domain of the linear rectification function activation instruction;
  • a queue storage submodule is used to store an instruction queue, and the instruction queue includes a plurality of instructions to be executed that are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the linear rectification function activation instruction.
  • control module further comprising:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • a machine learning computing device comprising:
  • One or more linear rectification function activation instruction processing devices as described in any one of clauses F1-F8, used to obtain data to be operated and control information from other processing apparatuses, and perform designated machine learning operations, which will execute the results Passed to other processing devices through the I / O interface;
  • a plurality of linear rectification function activation instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the linear rectification function activation instruction processing devices interconnect and transmit data through a fast external device interconnect bus PCIE bus to support larger-scale machine learning operations; a plurality of the linear rectification function activation instruction processing devices
  • the same control system is shared or has its own control system; multiple linear rectification function activation instruction processing devices share memory or own memory; the interconnection method of multiple linear rectification function activation instruction processing devices is any interconnection topology.
  • a combined processing device comprising:
  • Machine learning computing devices general interconnected interfaces and other processing devices as described in clause F9;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • a machine learning chip includes:
  • Article F12 An electronic device, the electronic device comprising:
  • a board card including: a storage device, an interface device and a control device, and a machine learning chip as described in Clause F11;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • Article F14 A method for processing a linear rectification function activation instruction.
  • the method is applied to a linear rectification function activation instruction processing apparatus.
  • the method includes:
  • the control module is used to analyze the obtained linear rectification function activation instruction to obtain the operation code and operation domain of the linear rectification function activation instruction, and obtain and execute the linear rectification function activation instruction according to the operation code and the operation domain Required data to be calculated and target address;
  • the operation code is used to indicate that the activation operation performed by the linear rectification function activation instruction on the data is a linear rectification function activation operation, and the operation domain includes the data address to be operated and the target address.
  • Clause F15 The method according to Clause F14, the method further comprising:
  • the operation module is used to perform a linear rectification function activation operation on the data to be operated to obtain an operation result, including:
  • the linear rectification activation function parameter table includes a linear rectification activation function activation table and a linear rectification activation function constant table.
  • a linear rectification function activation operation is performed on the data to be operated by an operation module to obtain an operation result, including:
  • a plurality of activation operators are used to perform a linear rectification function activation operation on the data to be operated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the operation module is used to perform a linear rectification function activation operation on the data to be operated to obtain an operation result, including:
  • a plurality of activation operators in the main operation sub-module are used to perform a linear rectification function activation operation on the data to be operated to obtain an operation result.
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • obtaining the data to be operated and the target address required to execute the linear rectification function activation instruction according to the operation code and the operation domain includes:
  • Clause F19 The method according to Clause F14, the method further comprising:
  • control module is used to parse the obtained linear rectification function activation instruction to obtain the operation code and operation domain of the linear rectification function activation instruction, including:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the linear rectification function activation instruction.
  • Clause F21 The method according to Clause F20, the method further comprising:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • FIG. 3-1 shows a block diagram of an S-shaped growth curve function activation instruction processing apparatus according to an embodiment of the present disclosure. As shown in Figure 3-1, the device includes a control module 7-11 and an arithmetic module 7-12.
  • the control module 7-11 is used to analyze the obtained S-shaped growth curve function activation instruction to obtain the operation code and operation domain of the S-shaped growth curve function activation instruction, and obtain and execute the S-shaped growth curve according to the operation code and operation domain
  • the data to be calculated and the target address required by the function activation instruction is used to instruct the S-type growth curve function activation instruction to perform the activation operation on the data as the S-type growth curve function activation operation.
  • the operation domain includes the data address and target address to be calculated.
  • the operation module 7-12 is used to perform S-shaped growth curve function activation operation on the data to be calculated, obtain the operation result, and store the operation result in the target address.
  • control module can obtain the data to be calculated from the data address to be calculated.
  • the control module may determine the data required for the S-shaped growth curve function activation operation according to the operation code of the S-shaped growth curve function activation instruction.
  • the control module can obtain instructions and data through the data input and output unit, which can be one or more data I / O interfaces or I / O pins.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be the source of all data required to execute the corresponding instruction, such as the corresponding address. All data required to execute the corresponding instructions include data to be calculated, equivalent data, and corresponding calculation methods.
  • S-shaped growth curve function activation instruction it must include an operation code and an operation field, where the operation field includes at least the data address and the target address to be calculated.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module may receive an S-shaped growth curve function activation instruction, and control one or more processing modules to perform an S-shaped growth curve function activation operation.
  • the multiple control modules may respectively receive the S-shaped growth curve function activation instruction and control the corresponding one or more processing modules to perform the S-shaped growth curve function activation operation.
  • An embodiment of the present disclosure provides an S-shaped growth curve function activation instruction processing device.
  • the device includes a control module and an arithmetic module.
  • the control module is configured to analyze the acquired S-shaped growth curve function activation instruction to obtain an S-shaped growth curve function. Activate the operation code and operation domain of the instruction, and obtain the data and target address to be calculated according to the operation code and operation domain to execute the S-shaped growth curve function activation instruction; the operation module is used to perform the S-shaped growth curve function activation operation on the operation data , Get the operation result, and store the operation result in the target address.
  • the S-shaped growth curve function activation instruction processing device provided by the embodiments of the present disclosure has a wide range of application, high processing efficiency and fast processing speed for the S-shaped growth curve function activation instruction, and high processing efficiency for performing the S-shaped growth curve function activation operation , Fast processing speed.
  • control module 7-11 can also be used to obtain the S-shaped growth curve activation function parameter table according to the operation code and / or operation domain.
  • the operation module can also be used to perform S-type growth curve function activation calculation on the data to be calculated according to the S-type growth curve activation function parameter table to obtain the operation result.
  • the S-type growth curve activation function parameter table may include an S-type growth curve activation function activation table and an S-type growth curve activation function constant table.
  • the S-type growth curve activation function parameter table address may be included in the operation domain, so that the control module obtains the S-type growth curve activation function parameter table address from the S-type growth curve activation function parameter table address.
  • the control module may determine that the S-shaped growth curve activation function parameter table is required to execute the S-shaped growth curve function activation instruction according to the operation code, and may directly obtain the S-shaped growth from the storage address of the predetermined S-shaped growth curve activation function parameter table Curve activation function parameter table.
  • control module may determine that the S-shaped growth curve activation function parameter table is required to execute the S-shaped growth curve function activation instruction according to the operation code, and may directly obtain the corresponding S-shaped growth curve function activation from the storage address of the predetermined parameter table Commanded S-shaped growth curve activation function parameter table.
  • the control module may determine that the S-shaped growth curve activation function parameter table is required to execute the S-shaped growth curve function activation instruction according to the operation code, and may directly obtain the corresponding S-shaped growth curve function activation from the storage address of the predetermined parameter table Commanded S-shaped growth curve activation function parameter table.
  • control module can also obtain an activation function corresponding to the S-shaped growth curve function activation instruction, so that the operation module can perform S-shaped growth curve function activation on the operation data according to the activation function and the corresponding operator Operation.
  • the arithmetic module 7-12 may include multiple activation operators 7-120.
  • a plurality of activation operators 7-120 are used to perform S-shaped growth curve function activation calculation on the data to be calculated.
  • the calculation module may also include an activation calculator.
  • the number of activation operators can be set according to the amount of data required for the S-shaped growth curve function activation operation, the processing speed and efficiency of the S-shaped growth curve function activation operation, and the disclosure does not limit this.
  • the operation module 7-12 may include a master operation sub-module 7-121 and a plurality of slave operation sub-modules 7-122, and the master operation sub-module 7-121 includes Multiple activation operators 7-120 (not shown in the figure).
  • the main operation sub-module 7-121 is used to perform S-shaped growth curve function activation calculation on the data to be calculated by using a plurality of activation operators to obtain operation results, and store the operation results in the target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 7-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the plurality of data to be calculated may be less than or equal to the read-in amount.
  • the read-in amount may be the data amount of the acquired plurality of data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the acquired data amount of the plurality of data to be calculated may be less than or equal to the default read-in amount.
  • the data amount and size of the operation data can be limited, the accuracy of the operation result can be ensured, and the device can execute the S-shaped growth curve function activation instruction.
  • the device may further include a storage module 7-13.
  • the storage module 7-13 is used to store data to be calculated.
  • the storage module 7-13 can also be used to store the S-shaped growth curve activation function parameter table.
  • the storage module may include a memory, such as one or more of a cache and a register, and the cache may include a high-speed temporary storage cache.
  • the to-be-calculated data and the S-shaped growth curve activation function parameter table can be stored in the storage module cache and / or register as needed, and this disclosure does not limit this.
  • the device may further include a direct memory access module, which is used to read or store data from the storage module.
  • the instruction format of the S-shaped growth curve function activation instruction may be:
  • active.sigmoid is the operation code of the S-shaped growth curve function activation instruction
  • dst, src0, and size are the operation domains of the S-shaped growth curve function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • size is the read-in amount.
  • the instruction format of the S-shaped growth curve function activation instruction may be:
  • active.sigmoid is the operation code of the S-type growth curve function activation instruction
  • dst, src0, src1, and size are the operation domains of the S-type growth curve function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • src1 is the address of the S-type growth curve activation function parameter table
  • size is the read-in amount.
  • the device may be set in a graphics processor (Graphics Processing Unit, GPU for short), a central processing unit (Central Processing Unit, CPU for short) and an embedded neural network processor (Neural-network Processing Unit) , Referred to as NPU).
  • a graphics processor Graphics Processing Unit, GPU for short
  • CPU Central Processing Unit
  • NPU embedded neural network processor
  • FIG. 3-3 shows a schematic diagram of an application scenario of an S-shaped growth curve function activation instruction processing apparatus according to an embodiment of the present disclosure.
  • the S-shaped growth curve function activation instruction processing device processes the S-shaped growth curve function activation instruction as follows:
  • the control module 7-11 analyzes the obtained S-shaped growth curve function activation instruction 1 (for example, the S-shaped growth curve function activation instruction 1 is active.sigmoid500.100) 64, and obtains the operation code of the S-shaped growth curve function activation instruction 1 And operation domain.
  • the operation code of the S-shaped growth curve function activation instruction 1 is active.sigmoid
  • the target address is 500
  • the data address to be calculated is 100
  • the read-in amount 64.
  • the control module 7-11 acquires the data to be calculated with a data amount of 64 (read-in amount) from the data address to be calculated 100. Assuming that the activation calculation needs to be performed according to the S-shaped growth curve activation function parameter table, the control module 7-11 also needs to obtain the S-shaped growth curve activation function parameter table (see the above description for the specific implementation process).
  • the operation module 7-12 performs the S-type growth curve function activation operation on the data to be calculated according to the S-type growth curve activation function parameter table, obtains the operation result, and stores the operation result in the target address 500.
  • the S-shaped growth curve function activation instruction processing device can efficiently and quickly process the S-shaped growth curve function activation instruction, and the S-shaped growth curve function activation operation has high processing efficiency and fast processing speed.
  • FIGS. 3-4 illustrate a flowchart of an S-shaped growth curve function activation instruction processing method according to an embodiment of the present disclosure. As shown in FIG. 3-4, this method is applied to the above S-shaped growth curve function activation instruction processing device.
  • the method includes steps S51-7 and S52-7.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following steps S51-7 ⁇ ⁇ S52-7.
  • step S51-7 the control module is used to analyze the obtained S-shaped growth curve function activation instruction to obtain the operation code and operation domain of the S-shaped growth curve function activation instruction, and the S-type is acquired and executed according to the operation code and operation domain
  • the growth curve function activates the data to be calculated and the target address required by the instruction.
  • the operation code is used to instruct the S-type growth curve function activation instruction to perform the activation operation on the data as the S-type growth curve function activation operation, and the operation domain includes the data address and the target address to be calculated.
  • step S52-7 an S-shaped growth curve function activation operation is performed on the data to be operated by the operation module to obtain the operation result, and the operation result is stored in the target address.
  • the method may further include:
  • the S-shaped growth curve function activation operation is performed on the operation data using the operation module to obtain the operation result, including:
  • the S-type growth curve activation function parameter table includes an S-type growth curve activation function activation table and an S-type growth curve activation function constant table.
  • using the operation module to perform an S-type growth curve function activation operation on the operation data to obtain the operation result may include:
  • the operation module may include a master operation sub-module and multiple slave operation sub-modules, and the master operation sub-module may include multiple activation operators.
  • using the operation module to perform the S-type growth curve function activation operation on the operation data to obtain the operation result may include: performing the S-type growth curve function activation operation using multiple activation operators in the main operation sub-module to obtain the operation result.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • obtaining the data to be calculated and the target address required to execute the S-shaped growth curve function activation instruction according to the operation code and the operation domain may include:
  • the method may further include: storing data to be calculated.
  • control module is used to parse the obtained S-shaped growth curve function activation instruction to obtain the operation code and operation domain of the S-shaped growth curve function activation instruction, which may include:
  • the instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed include an S-shaped growth curve function activation instruction.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, and after determining that the execution of the zeroth instruction to be executed is completed, the execution of the first instruction to be executed is controlled,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the S-shaped growth curve function activation instruction processing method provided by the embodiments of the present disclosure has a wide range of application, high processing efficiency and fast processing speed for the S-shaped growth curve function activation instruction, and high processing efficiency for performing the S-shaped growth curve function activation operation , Fast processing speed.
  • an S-shaped growth curve function activation instruction processing device comprising:
  • the control module is used to analyze the obtained S-shaped growth curve function activation instruction to obtain the operation code and the operation domain of the S-shaped growth curve function activation instruction, and obtain the execution location according to the operation code and the operation domain Describe the data to be calculated and the target address required by the S-shaped growth curve function activation instruction;
  • An operation module configured to perform an S-shaped growth curve function activation operation on the data to be operated to obtain an operation result, and store the operation result in the target address
  • the operation code is used to indicate that the activation operation performed by the S-shaped growth curve function activation instruction on the data is an S-shaped growth curve function activation operation
  • the operation domain includes the data address to be operated and the target address.
  • the control module is further configured to obtain an S-shaped growth curve activation function parameter table according to the operation code and / or the operation domain;
  • the operation module is further configured to perform an S-type growth curve function activation operation on the data to be calculated according to the S-type growth curve activation function parameter table to obtain an operation result,
  • the S-type growth curve activation function parameter table includes an S-type growth curve activation function activation table and an S-type growth curve activation function constant table.
  • the operation module includes:
  • a plurality of activation calculators are used to perform S-shaped growth curve function activation calculation on the data to be calculated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the main operation sub-module is configured to use the plurality of activation operators to perform an S-shaped growth curve function activation operation on the data to be operated to obtain an operation result, and store the operation result in the target address.
  • Clause G5 The device according to Clause G1, the operation domain includes a read-in amount or a storage address of the read-in amount,
  • control module is also used to obtain the read-in amount, and obtain the data to be calculated according to the read-in amount.
  • Clause G6 The device according to Clause G1, the device further comprising:
  • the storage module is used for storing the data to be calculated.
  • An instruction storage sub-module for storing the S-shaped growth curve function activation instruction
  • An instruction processing sub-module which is used to analyze the S-shaped growth curve function activation instruction to obtain the operation code and the operation domain of the S-shaped growth curve function activation instruction;
  • a queue storage sub-module is used to store an instruction queue, and the instruction queue includes a plurality of instructions to be executed that are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the S-shaped growth curve function activation instruction.
  • control module further comprising:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • a machine learning computing device comprising:
  • One or more S-shaped growth curve function activation instruction processing devices as described in any one of clauses G1 to G8, used to obtain data to be calculated and control information from other processing devices, and perform specified machine learning operations, will The execution result is transferred to other processing devices through the I / O interface;
  • a plurality of S-shaped growth curve function activation instruction processing devices may be connected and transmitted data through a specific structure;
  • a plurality of the S-shaped growth curve function activation instruction processing devices interconnect and transmit data through a PCIE bus that is a fast external device interconnect bus to support larger-scale machine learning operations; a plurality of the S-shaped growth curve functions
  • the activation instruction processing device shares the same control system or has its own control system; a plurality of the S-shaped growth curve function activation instruction processing devices share memory or have their own memories; a plurality of the S-shaped growth curve function activation instruction processing devices
  • the interconnection method is any interconnection topology.
  • a combined processing device comprising:
  • Machine learning computing devices general interconnection interfaces and other processing devices as described in Clause G9;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • a machine learning chip, the machine learning chip includes:
  • Article G12 An electronic device, the electronic device comprising:
  • a board card including: a storage device, an interface device and a control device, and a machine learning chip as described in Clause G11;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • An S-type growth curve function activation instruction processing method is applied to an S-type growth curve function activation instruction processing device.
  • the method includes:
  • the control module is used to analyze the obtained S-shaped growth curve function activation instruction to obtain the operation code and the operation domain of the S-shaped growth curve function activation instruction, and obtain and execute the S according to the operation code and the operation domain The data and target address required by the type growth curve function activation instruction;
  • the operation code is used to instruct the S-type growth curve function activation instruction to perform the activation operation on the data as the S-type growth curve function activation operation
  • the operation domain includes the data address to be operated and the S-type growth curve activation function The address of the parameter table and the target address.
  • Clause G15 The method according to Clause G14, the method further comprising:
  • using an operation module to perform an S-shaped growth curve function activation operation on the data to be operated to obtain an operation result includes:
  • the S-type growth curve activation function parameter table includes an S-type growth curve activation function activation table and an S-type growth curve activation function constant table.
  • an operation module is used to perform an S-shaped growth curve function activation operation on the data to be operated to obtain an operation result, including:
  • a plurality of activation calculators are used to perform S-shaped growth curve function activation calculation on the data to be calculated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • using an operation module to perform an S-shaped growth curve function activation operation on the data to be operated to obtain an operation result includes:
  • a plurality of activation operators in the main operation sub-module are used to perform S-shaped growth curve function activation operation to obtain an operation result.
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • obtaining the data to be calculated and the target address required to execute the activation instruction of the S-shaped growth curve function according to the operation code and the operation domain includes:
  • Clause G19 The method according to Clause G14, the method further comprising:
  • control module is used to analyze the obtained S-shaped growth curve function activation instruction to obtain the operation code and the operation domain of the S-shaped growth curve function activation instruction, including:
  • the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged in order of execution, and the plurality of instructions to be executed include the S-shaped growth curve function activation instruction.
  • Clause G21 The method according to Clause G20, the method further comprising:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • FIG. 4-1 shows a block diagram of an exponential function activation instruction processing apparatus according to an embodiment of the present disclosure.
  • the device includes a control module 12-11 and an arithmetic module 12-12.
  • the control module 12-11 is used to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, and obtain the data to be calculated required to execute the exponential function activation instruction according to the operation code and operation domain And destination address.
  • the operation code is used to indicate that the activation operation performed by the exponential function activation instruction on the data is the exponential function activation operation.
  • the operation domain includes the data address and target address to be calculated.
  • the operation module 12-12 is used to perform an exponential function activation operation on the data to be operated, obtain the operation result, and store the operation result in the target address.
  • control module can obtain the data to be calculated from the data address to be calculated.
  • the control module may determine the data required to perform the exponential function activation operation according to the operation code of the exponential function activation instruction.
  • the control module can obtain instructions and data through the data input and output unit, which can be one or more data I / O interfaces or I / O pins.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, such as a corresponding address, etc. All data required to execute the corresponding instruction include data such as data to be operated and corresponding operation methods, etc.
  • an exponential function activation instruction it must include an operation code and an operation field, where the operation field includes at least the data address to be calculated and the target address.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module may receive an exponential function activation instruction, and control one or more processing modules to perform a linear rectification function activation operation.
  • the multiple control modules may respectively receive exponential function activation instructions and control the corresponding one or more processing modules to perform exponential function activation operations.
  • An embodiment of the present disclosure provides an exponential function activation instruction processing device.
  • the device includes a control module and an arithmetic module.
  • the control module is configured to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction. According to the operation code and the operation domain, the data to be operated and the target address required for executing the exponential function activation instruction are obtained; the operation module is used to perform the exponential function activation operation on the operation data to obtain the operation result, and the operation result is stored in the target address.
  • the exponential function activation instruction processing device provided by the embodiments of the present disclosure has a wide range of application, and has high processing efficiency and fast processing speed for the exponential function activation instruction, and high processing efficiency and fast processing speed for performing the exponential function activation operation.
  • control module 12-11 may also be used to obtain an exponential activation function parameter table according to the operation code and / or operation domain.
  • the calculation module 12-12 can also be used to perform exponential function activation calculation on the data to be calculated according to the exponential activation function parameter table, to obtain the operation result,
  • the exponential activation function parameter table may include an exponential activation function activation table and an exponential activation function constant table.
  • the address of the index activation function parameter table may be included in the operation domain, so that the control module obtains the address of the index activation function parameter table from the address of the index activation function parameter table.
  • the control module may determine that the exponential activation function parameter table needs an exponential activation function parameter table according to the operation code, and may directly obtain the exponential activation function parameter table from a predetermined storage address of the exponential activation function parameter table.
  • the control module may determine that the index activation function parameter table is required to execute the index function activation instruction according to the operation code, and may directly obtain the index activation function parameter table corresponding to the index function activation instruction from the storage address of the predetermined parameter table.
  • a person skilled in the art can set the acquisition method of the index activation function parameter table according to actual needs, and this disclosure does not limit this.
  • control module can also obtain an activation function corresponding to the exponential function activation instruction, so that the operation module can perform a linear rectification function activation operation on the operation data according to the activation function and the corresponding operator.
  • the computing module 12-12 may include multiple activation operators 12-120.
  • a plurality of activation calculators 12-120 are used to perform exponential function activation calculation on the data to be calculated.
  • the calculation module may also include an activation calculator.
  • the number of activation operators can be set according to the size of the data required for the exponential function activation operation, the processing speed and efficiency of the exponential function activation operation, and the disclosure does not limit this.
  • the operation module 12-12 may include a master operation sub-module 12-121 and a plurality of slave operation sub-modules 12-122, and the master operation sub-module 12-121 includes Multiple activation operators 12-120 (not shown in the figure).
  • the main operation sub-module 12-121 is used for performing an exponential function activation operation on the data to be calculated by using a plurality of activation operators to obtain an operation result and storing the operation result in a target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 12-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the plurality of data to be calculated may be less than or equal to the read-in amount.
  • the read-in amount may be the data amount of the acquired plurality of data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the acquired data amount of the plurality of data to be calculated may be less than or equal to the default read-in amount.
  • the data amount and size of the operation data can be limited, the accuracy of the operation result can be ensured, and the device can execute the exponential function activation instruction.
  • the device may further include a storage module 12-13.
  • the storage modules 12-13 are used to store data to be calculated.
  • the storage modules 12-13 can also be used to store exponential activation function parameter tables.
  • the storage module may include a memory, such as one or more of a cache and a register, and the cache may include a high-speed temporary storage cache.
  • the data to be calculated and the parameter table of the exponential activation function can be stored in the cache and / or register of the storage module as needed, and the disclosure does not limit this.
  • the device may further include a direct memory access module, which is used to read or store data from the storage module.
  • the instruction format of the exponential function activation instruction may be:
  • active.exps is the opcode of the exponential function activation instruction
  • dst, src0, and size are the operation domains of the exponential function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • size is the read-in amount.
  • the instruction format of the exponential function activation instruction may also be:
  • active.exps is the opcode of the exponential function activation instruction
  • dst, src0, and size are the operation domains of the exponential function activation instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • src1 is the address of the index activation function parameter table
  • size is the read-in amount.
  • the device may be set in (Graphics Processing Unit, GPU for short), Central Processing Unit (CPU for short), and Neural-network Processing Unit (NPU for short) ) Of one or more.
  • GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • NPU Neural-network Processing Unit
  • FIG. 4-3 shows a schematic diagram of an application scenario of an exponential function activation instruction processing device according to an embodiment of the present disclosure. As shown in Figure 4-3, the exponential function activation instruction processing device processes the exponential function activation instruction as follows:
  • the control module 12-11 parses the obtained exponential function activation instruction 1 (for example, exponential function activation instruction 1 is active.exps 500, 100, 64) to obtain the opcode and the exponential function activation instruction 1 Operation domain.
  • the operation code of the exponential function activation instruction 1 is active.exps
  • the target address is 500
  • the data address to be calculated is 100
  • the read-in amount is 64.
  • the control module 12-11 acquires the data to be operated with a data amount of 64 (read-in amount) from the data address to be operated 100. Assuming that the activation calculation needs to be performed according to the exponential activation function parameter table, the control module 12-11 also needs to obtain the exponential activation function parameter table (see the above description for the specific implementation process).
  • the operation module 12-12 performs the exponential function activation operation on the operation data according to the exponential activation function parameter table, obtains the operation result, and stores the operation result in the target address 500.
  • the exponential function activation instruction processing device can process the exponential function activation instruction efficiently and quickly, and realize the efficient and rapid processing of the exponential function activation operation.
  • FIG. 4-4 shows a flowchart of an exponential function activation instruction processing method according to an embodiment of the present disclosure. As shown in FIG. 4-4, this method is applied to the above exponential function activation instruction processing device.
  • the method includes steps S51-12 and S52-12.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following steps S51-12 ⁇ ⁇ S52-12.
  • step S51-12 the control module is used to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, and obtain the waiting list required to execute the exponential function activation instruction according to the operation code and operation domain Operation data and target address.
  • the operation code is used to instruct the activation operation performed by the exponential function activation instruction on the data.
  • the exponential function activation operation domain includes the data address and the target address to be operated.
  • step S52-12 an arithmetic module is used to perform an exponential function activation operation on the operation data to obtain an operation result, and the operation result is stored in the target address.
  • the method may further include:
  • the operation module performs exponential function activation operation on the operation data to obtain the operation result, which may include:
  • the exponential activation function parameter table may include an exponential activation function activation table and an exponential activation function constant table.
  • the operation module performs an exponential function activation operation on the operation data to obtain an operation result, which may include: performing an exponential function activation operation on the operation data using a plurality of activation operators.
  • the operation module may include a master operation sub-module and multiple slave operation sub-modules, and the master operation sub-module may include multiple activation operators,
  • the operation module performs exponential function activation operation on the operation data to obtain the operation result, which may include:
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • obtaining the data to be calculated and the target address required to execute the exponential function activation instruction according to the operation code and the operation domain may include:
  • the method may further include: storing data to be calculated.
  • control module is used to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, which may include:
  • the instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed include an exponential function activation instruction.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, and after determining that the execution of the zeroth instruction to be executed is completed, the execution of the first instruction to be executed is controlled,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the processing method of the exponential function activation instruction provided by the embodiment of the present disclosure has a wide range of application, and the exponential function activation instruction has high processing efficiency and fast processing speed, and the exponential function activation operation has high processing efficiency and fast processing speed.
  • an exponential function activation instruction processing device comprising:
  • the control module is used to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, and obtain the execution position of the exponential function activation instruction according to the operation code and the operation domain Required data and target address to be calculated;
  • the operation module is used to perform an exponential function activation operation on the data to be operated to obtain an operation result, and store the operation result in the target address,
  • the operation code is used to indicate that the activation operation performed by the exponential function activation instruction on the data is an exponential function activation operation
  • the operation domain includes the data address to be operated and the target address.
  • the control module is further configured to obtain an index activation function parameter table according to the operation code and / or the operation domain;
  • the calculation module is further configured to perform an exponential function activation operation on the data to be calculated according to the exponential activation function parameter table to obtain an operation result,
  • the exponential activation function parameter table includes an exponential activation function activation table and an exponential activation function constant table.
  • the arithmetic module includes:
  • a plurality of activation calculators are used to perform exponential function activation calculation on the data to be calculated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the main operation sub-module is used to perform an exponential function activation operation on the data to be operated by using the plurality of activation operators to obtain an operation result, and store the operation result in the target address.
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • control module is also used to obtain the read-in amount, and obtain the data to be calculated according to the read-in amount.
  • Clause L6 The device according to Clause L1, the device further comprising:
  • the storage module is used for storing the data to be calculated.
  • control module includes:
  • An instruction processing sub-module which is used to analyze the exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction;
  • a queue storage submodule is used to store an instruction queue, and the instruction queue includes a plurality of instructions to be executed that are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the exponential function activation instruction.
  • control module further comprising:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • a machine learning computing device comprising:
  • One or more exponential function activation instruction processing devices as described in any one of Clause L1-Clause L8, used to obtain data to be calculated and control information from other processing devices, and perform designated machine learning operations, passing the execution result through The I / O interface is passed to other processing devices;
  • the machine learning computing device includes a plurality of the exponential function activation instruction processing devices
  • a plurality of the exponential function activation instruction processing devices can be connected and transmit data through a specific structure
  • a plurality of the exponential function activation instruction processing devices interconnect and transmit data through a fast external device interconnect bus PCIE bus to support larger-scale machine learning operations; a plurality of the exponential function activation instruction processing devices share the same
  • the control system may have its own control system; the multiple exponential function activation instruction processing devices share memory or have their own memories; the interconnection method of the multiple exponential function activation instruction processing devices is any interconnected topology.
  • a combined processing device comprising:
  • Machine learning computing device general interconnection interface and other processing devices as described in clause L9;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • a machine learning chip includes:
  • a board card includes: a storage device, an interface device and a control device, and a machine learning chip as described in Clause L11;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • An exponential function activation instruction processing method is applied to an exponential function activation instruction processing device.
  • the method includes:
  • the control module is used to analyze the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, and according to the operation code and the operation domain, obtain the necessary code for executing the exponential function activation instruction Data to be calculated and target address;
  • the operation code is used to indicate that the activation operation performed by the exponential function activation instruction on the data is an exponential function activation operation
  • the operation domain includes the data address to be operated and the target address.
  • Clause L15 The method according to Clause L14, the method further comprising:
  • the operation module performs an exponential function activation operation on the data to be operated to obtain an operation result, including:
  • the exponential activation function parameter table includes an exponential activation function activation table and an exponential activation function constant table.
  • an arithmetic module is used to perform an exponential function activation operation on the data to be calculated to obtain an operation result, including:
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of activation operators,
  • the operation module performs an exponential function activation operation on the data to be operated to obtain an operation result, including:
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • obtaining the data to be operated and the target address required to execute the exponential function activation instruction according to the operation code and the operation domain includes:
  • Clause L19 The method according to Clause L14, the method further comprising:
  • control module is used to parse the obtained exponential function activation instruction to obtain the operation code and operation domain of the exponential function activation instruction, including:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged in order of execution, and the plurality of instructions to be executed include the exponential function activation instruction.
  • Clause L21 The method according to Clause L20, the method further comprising:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Selection operation is a processing operation to select data according to selection conditions. Due to the variety of programming languages, in different language environments, in order to realize the operation process of selecting operations, in related technologies, because there is no selection instruction that can be widely applied to various programming languages at this stage, technicians need to customize their corresponding programming Multiple instructions in the language environment are used to implement the selection operation, which results in low efficiency and slow speed in the selection operation.
  • the present disclosure provides a selection instruction processing method, device, computer equipment, and storage medium, and selection operation can be implemented with only one instruction, which can significantly improve the efficiency and speed of selection operation.
  • FIG. 5-1 shows a block diagram of a selection instruction processing apparatus according to an embodiment of the present disclosure. As shown in Figure 5-1, the device includes a control module 1-11 and an arithmetic module 1-12.
  • the control module 1-11 is used to parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, and obtain multiple index data and multiple pending operations required for executing the selection instruction according to the operation code and operation domain Data and target address.
  • the operation code is used to indicate that the operation performed by the selection instruction on the data is a selection operation, and the operation field includes the data address to be operated, the index data address, and the target address.
  • the operation module 1-12 is used to sequentially determine whether a plurality of index data meets the storage conditions, and when the index data meets the storage conditions, sequentially store the data to be operated corresponding to the index data that meets the storage conditions in the target address.
  • control module may obtain a plurality of data to be calculated and a plurality of index data from the data address to be calculated and the index data address, respectively.
  • the control module may obtain a selection instruction, a plurality of data to be calculated, and a plurality of index data through a data input / output unit.
  • the data input / output unit may be one or more data I / O interfaces or I / O pins.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, such as a corresponding address, etc. All data required to execute the corresponding instruction include parameter data, data to be operated, corresponding operation methods, and so on. For a selection instruction, it must include an operation code and an operation field, where the operation field includes at least the data address to be operated, the index data address, and the target address.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module can receive a selection instruction and control one or more arithmetic modules to perform a selection operation.
  • the multiple control modules may respectively receive selection instructions and control the corresponding one or more arithmetic modules to perform selection operations.
  • the selection instruction processing device includes a control module and an arithmetic module.
  • the control module is used to parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, and obtain multiple index data, multiple data to be operated and the target address required for executing the selection instruction according to the operation code and operation domain .
  • the operation module is used to sequentially determine whether a plurality of index data satisfy the storage conditions, and when the index data meets the storage conditions, sequentially store the data to be operated corresponding to the index data satisfying the storage conditions into the target address.
  • the selection instruction processing device provided by the embodiment of the present disclosure has a wide application range, and has high processing efficiency and fast processing speed for the selection instruction, and high processing efficiency and fast processing speed for performing the selection operation.
  • the storage condition may be that the index data is not zero.
  • the storage condition may also be that the index data is not a specified value, and the specified value may be a value such as 1. Those skilled in the art can set the storage conditions according to actual needs, and this disclosure does not limit this.
  • the storage conditions or index data can be set as needed to store the data required in the data to be calculated to the target address. For example, according to different selection needs to select the operation data, different storage conditions can be set, or different index data can be set to realize different selections of the operation data.
  • the operation module 1-12 may include a plurality of comparators 1-120, which are used to sequentially determine whether a plurality of index data meets storage conditions.
  • the comparator may sequentially compare the index data with 0 to determine whether the index data meets the storage condition.
  • the operation module can store the data to be operated corresponding to the index data other than 0 into the target address in sequence.
  • the number of comparators can be set according to the amount of data to be compared, the processing speed, efficiency, and other requirements of the comparison, which is not limited in the present disclosure.
  • the operation module 1-12 may include a master operation sub-module 1-121 and a plurality of slave operation sub-modules 1-122.
  • the main operation sub-module 1-121 may include a plurality of comparators 1-120 (not shown in the figure).
  • the main operation sub-module 1-121 is used to sequentially determine whether multiple index data satisfy the storage condition using multiple comparators, determine the data to be operated corresponding to the index data satisfying the storage condition, and compare the index with the storage condition
  • the data to be calculated corresponding to the data is sequentially stored in the target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 1-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the multiple data to be calculated is less than or equal to the read-in amount
  • the read-in amount is less than or equal to the data amount of the multiple index data.
  • the read-in amount may be the data amount of the acquired plurality of data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the acquired data amount of the plurality of data to be calculated is less than or equal to the default read-in amount, and the default read-in amount is less than or equal to the data amount of multiple index data.
  • the amount of data to be calculated, the amount of data to be indexed, and the amount of data that can be stored at the target address can be the same, and can all be equal to the read-in amount or the default read-in amount. the amount.
  • the calculation module can store the data to be calculated corresponding to the index data that meets the storage conditions in the target address in order to avoid problems such as insufficient target addresses and waste of target addresses.
  • the device may further include a storage module 1-13.
  • the storage module 13 is used to store multiple index data, multiple data to be calculated, and storage conditions.
  • the storage module may include memory.
  • the cache may include a high-speed temporary storage cache, and may also include at least one NRAM (Neuron Random Access Memory, neuron random access memory).
  • NRAM Neuron Random Access Memory
  • the cache can be used to store data to be calculated and pooled cores, and the register can be used to store scalar data in the data to be calculated. .
  • the cache may include a neuron cache.
  • the neuron cache that is, the foregoing neuron random access memory, can be used to store neuron data in the data to be calculated, and the neuron data can include neuron vector data.
  • the device may further include a direct memory access module, which is used to read or store data from the storage module.
  • the instruction format of the selection instruction may be:
  • select is the opcode of the selection instruction
  • dst, src0, src1, and size are the operation fields of the selection instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • src1 is the index data address
  • size is the read-in amount.
  • the device may be set in (Graphics Processing Unit, GPU for short), Central Processing Unit (CPU for short), and Neural-network Processing Unit (NPU for short) ) Of one or more.
  • GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • NPU Neural-network Processing Unit
  • FIG. 5-3 shows a schematic diagram of an application scenario for selecting an instruction processing apparatus according to an embodiment of the present disclosure.
  • the selection instruction processing device processes the selection instruction as follows:
  • the control module 1-11 parses the obtained selection instruction 1 (for example, the selection instruction 1 is select 500, 100, 200, 200) to obtain the operation code and operation field of the selection instruction 1.
  • the operation code of the selection instruction 1 is select
  • the target address is 500
  • the data address to be calculated is 100
  • the index data address is 200
  • the read-in amount is 5.
  • the control module 1-11 obtains a plurality of data to be operated and a plurality of index data with a read-in amount of 5 from the data address to be operated 100 and the index data address 200, respectively.
  • the obtained plurality of data to be calculated include 1, 5, 6, 7, and 3.
  • the multiple index data includes 1, 8, 0, 6, and 9.
  • the storage condition is that the index data is not 0.
  • the operation module 1-12 sequentially judges whether multiple index data are 0, and when the index data is not 0, sequentially stores the data to be operated corresponding to the index data that is not 0 into the target address 500. Specifically, the arithmetic module 1-12 sequentially determines whether the multiple index data "1, 8, 0, 6, 9" are not 0. Since the third index data is 0, the "1" , 5, 7, 3 "are sequentially stored in the target address 500.
  • the relevant description above please refer to the relevant description above.
  • the selection instruction processing device can process the selection instruction efficiently and quickly, and the selection operation has high processing efficiency and fast processing speed.
  • FIG. 5-4 shows a flowchart of a selection instruction processing method according to an embodiment of the present disclosure.
  • the method is applied to the above selection instruction processing apparatus, and the method includes step S51-1 and step S52-1.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following step S51-1 ⁇ ⁇ S52-1.
  • step S51-1 the control module is used to parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, and according to the operation code and operation domain, obtain multiple index data and multiple Data to be calculated and target address.
  • the operation code is used to indicate that the operation performed by the selection instruction on the data is a selection operation, and the operation field includes the data address to be operated, the index data address, and the target address.
  • step S52-1 the operation module is used to sequentially determine whether a plurality of index data meet the storage conditions, and when the index data meets the storage conditions, the data to be operated corresponding to the index data that meets the storage conditions are sequentially stored in the target address .
  • the method may further include: the operation module may include the multiple comparators,
  • using the operation module to sequentially determine whether a plurality of index data meets the storage conditions, and when the index data meets the storage conditions, sequentially store the data to be operated corresponding to the index data that meets the storage conditions into the target address which may include:
  • the multiple comparators in the arithmetic module are used to sequentially determine whether the multiple index data meet the storage conditions.
  • the operation module includes a master operation sub-module and multiple slave operation sub-modules
  • the master operation sub-module includes the multiple comparators
  • using the operation module to sequentially determine whether a plurality of index data meets the storage conditions, and when the index data meets the storage conditions, sequentially store the data to be operated corresponding to the index data that meets the storage conditions into the target address which may include:
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • Step S51-1 may include: acquiring the read-in amount, and acquiring a plurality of data to be calculated according to the read-in amount. Among them, the data amount of the multiple data to be calculated is less than or equal to the read-in amount, and the read-in amount is less than or equal to the data amount of the multiple index data.
  • the method may further include: using the storage module of the device to store multiple index data, multiple data to be calculated, and storage conditions,
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the plurality of index data, the plurality of data to be calculated, and the storage conditions, and the cache includes at least one neuron cache NRAM;
  • the register is used to store the data to be calculated, the plurality of data to be calculated, and the scalar data in the storage condition;
  • the neuron cache is used to store the data to be operated, the plurality of data to be operated, and the neuron data in the storage condition, and the neuron data includes neuron vector data.
  • step S51-1 may include:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed includes a selection instruction.
  • the method may further include:
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the storage condition may include that the index data is not zero.
  • the selection instruction processing method provided by the embodiments of the present disclosure has a wide application range, and has high processing efficiency and fast processing speed for the selection instruction, and high processing efficiency and fast processing speed for performing the selection operation.
  • a selection instruction processing device comprising:
  • the control module is configured to parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, and obtain a plurality of index data required for executing the selection instruction according to the operation code and the operation domain , Multiple data and target addresses to be calculated;
  • the operation module is used to sequentially determine whether the plurality of index data meets the storage condition, and when the index data meets the storage condition, sequentially store the data to be operated corresponding to the index data meeting the storage condition into the target address in,
  • the operation code is used to indicate that the operation performed by the selection instruction on the data is a selection operation
  • the operation field includes a data address to be operated, an index data address, and the target address.
  • the arithmetic module includes:
  • a plurality of comparators are used to sequentially determine whether the plurality of index data satisfy the storage condition.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of comparators,
  • the main operation sub-module is used to sequentially determine whether the plurality of index data satisfy the storage condition using the plurality of comparators, determine the data to be operated corresponding to the index data satisfying the storage condition, and compare with The data to be operated corresponding to the index data satisfying the storage conditions are sequentially stored in the target address.
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • control module is also used to obtain the read-in amount, and obtain the plurality of data to be calculated according to the read-in amount,
  • the data amount of the plurality of data to be calculated is less than or equal to the read-in amount, and the read-in amount is less than or equal to the data amount of the plurality of index data.
  • Clause A5 The device according to Clause A1, the device further comprising:
  • a storage module configured to store the plurality of index data, the plurality of data to be calculated, and the storage conditions
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the plurality of index data, the plurality of data to be calculated, and the storage conditions, and the cache includes at least one neuron cache NRAM;
  • the register is used to store the data to be calculated, the plurality of data to be calculated, and the scalar data in the storage condition;
  • the neuron cache is used to store the data to be operated, the plurality of data to be operated, and the neuron data in the storage condition, and the neuron data includes neuron vector data.
  • control module includes:
  • An instruction processing submodule used to parse the selection instruction to obtain the operation code and operation domain of the selection instruction
  • the queue storage submodule is used to store an instruction queue, and the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged according to an execution order, and the plurality of instructions to be executed include a selection instruction.
  • control module includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause A8 The device according to any one of Clause A1 to Clause A7, the storage condition includes that the index data is not zero.
  • a machine learning computing device comprising:
  • One or more selection instruction processing devices as described in any one of clauses A1-8, used to obtain data and control information to be calculated from other processing devices, and perform specified machine learning operations, and pass the execution results through I / O The interface is passed to other processing devices;
  • a plurality of the selection instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the selection instruction processing devices interconnect and transmit data through a fast external device interconnection bus PCIE bus to support larger-scale machine learning operations; a plurality of the selection instruction processing devices share the same control system or own Respective control systems; a plurality of the selection instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of selection instruction processing devices is any interconnection topology.
  • a combined processing device comprising:
  • Machine learning computing devices general interconnect interfaces and other processing devices as described in clause A9;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • a machine learning chip includes:
  • Article A12 An electronic device, the electronic device comprising:
  • a board card including: a storage device, an interface device and a control device, and a machine learning chip as described in Clause A11;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • a selection instruction processing method is applied to a selection instruction processing apparatus, the apparatus includes a control module and an arithmetic module, and the method includes:
  • the control module is used to parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, and obtain a plurality of index data and a plurality of indexes required for executing the selection instruction according to the operation code and the operation domain Data to be calculated and target address;
  • the operation module is used to sequentially determine whether the plurality of index data meet the storage conditions, and when the index data meets the storage conditions, sequentially store the data to be operated corresponding to the index data satisfying the storage conditions into the target address,
  • the operation code is used to indicate that the operation performed by the selection instruction on the data is a selection operation
  • the operation field includes a data address to be operated, an index data address, and the target address.
  • the arithmetic module includes the plurality of comparators
  • the operation module is used to sequentially determine whether the plurality of index data meet the storage conditions, and when the index data meets the storage conditions, the data to be operated corresponding to the index data that meets the storage conditions are sequentially stored in the target address Including:
  • a plurality of comparators in the arithmetic module are used to sequentially determine whether the plurality of index data satisfy the storage condition.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of comparators,
  • the operation module is used to sequentially determine whether the plurality of index data meet the storage conditions, and when the index data meets the storage conditions, the data to be operated corresponding to the index data that meets the storage conditions are sequentially stored in the target address Including:
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • acquiring, according to the operation code and the operation domain, a plurality of index data, a plurality of data to be calculated, and a target address required to execute the selection instruction including:
  • the data amount of the plurality of data to be calculated is less than or equal to the read-in amount, and the read-in amount is less than or equal to the data amount of the plurality of index data.
  • Clause A18 The method according to Clause A14, the method further comprising:
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the plurality of index data, the plurality of data to be calculated, and the storage conditions, and the cache includes at least one neuron cache NRAM;
  • the register is used to store the data to be calculated, the plurality of data to be calculated, and the scalar data in the storage condition;
  • the neuron cache is used to store the data to be operated, the plurality of data to be operated, and the neuron data in the storage condition, and the neuron data includes neuron vector data.
  • Clause A19 According to the method described in Clause A14, parse the obtained selection instruction to obtain the operation code and operation domain of the selection instruction, including:
  • the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged in order of execution, and the plurality of instructions to be executed includes a selection instruction.
  • Clause A20 The method according to Clause A19, the method further comprising:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause A21 The method according to any one of Clause A14 to Clause A20, the storage condition includes that the index data is not zero.
  • the present disclosure provides a counting instruction processing method, device, computer equipment, and storage medium, and counting statistics can be realized with only one instruction, which can significantly improve the efficiency and speed of counting statistics.
  • FIG. 6-1 shows a block diagram of a count instruction processing device according to an embodiment of the present disclosure. As shown in Figure 6-1, the device includes a control module 2-11 and an arithmetic module 2-12.
  • the control module 2-11 is used to parse the obtained counting instruction to obtain the operation code and operation domain of the counting instruction, and obtain a plurality of data to be calculated and a target address required for executing the counting instruction according to the operation code and operation domain.
  • the operation code is used to indicate that the operation performed by the counting instruction on the data is a counting statistical operation
  • the operation domain includes the data address and the target address to be calculated.
  • the operation module 2-12 is used to determine the number of data to be operated satisfying the counting condition among the plurality of data to be operated, and store the number of data in the target address.
  • control module may obtain a plurality of data to be calculated from the data to be calculated.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, and all data required to execute the corresponding instruction include parameter data, data to be operated, corresponding operation methods, and so on. For a counting instruction, it must include an operation code and an operation field, where the operation field includes at least the data address to be operated and the target address.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module can receive counting instructions and control one or more arithmetic modules to perform counting statistics.
  • the multiple control modules can respectively receive counting instructions and control the corresponding one or more arithmetic modules to perform counting statistics.
  • the counting instruction processing device includes a control module and an arithmetic module.
  • the control module is used to analyze the obtained counting instruction to obtain the operation code and operation domain of the counting instruction, and according to the operation code and operation The domain obtains the multiple data to be calculated and the target address required to execute the counting instruction;
  • the arithmetic module is used to determine the number of data to be calculated satisfying the counting condition among the multiple data to be calculated, and store the data number in the target address .
  • the counting instruction processing device provided by the embodiments of the present disclosure has a wide application range, high processing efficiency and fast processing speed for counting instructions, and high processing efficiency and fast processing speed for counting statistics.
  • the counting condition may be that the data to be calculated is not zero.
  • the data number of the data to be operated which is not 0 among the plurality of data to be operated is counted, and the data number is stored to the target address.
  • the counting condition may also be that the data to be calculated is not a specified value, and the specified value may be a value such as 1. Those skilled in the art can set the counting conditions according to actual needs, and this disclosure does not limit this.
  • the arithmetic module 2-12 may include multiple counters 2-120.
  • the plurality of counters 2-120 are used for counting and counting the number of data to be calculated satisfying the counting condition to obtain the number of data to be calculated satisfying the counting condition among the plurality of data to be calculated.
  • the arithmetic module may also include a counter.
  • the number of counters can be set according to the size of the data to be calculated, the processing speed, efficiency, and other requirements of the counting statistical operation, which is not limited in the present disclosure.
  • the operation module 2-12 may include a master operation submodule 2-121 and a plurality of slave operation submodules 2-122, and the master operation submodule 2-121 includes Multiple counters 2-120 (not shown in the figure).
  • the main operation submodule 2-121 is used to count and count the number of data to be calculated satisfying the counting condition using a plurality of counters 2-120 to determine the number of data to be calculated satisfying the counting condition among the plurality of data to be calculated And store the number of data in the target address.
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • the control module 2-11 is also used to obtain the read-in amount, and obtain a plurality of data to be calculated according to the read-in amount.
  • the data amount of the multiple data to be calculated is less than or equal to the read-in amount.
  • the read-in amount may be the data amount of the acquired plurality of data to be calculated, and may be the size of the acquired data to be calculated.
  • the operation field directly contains the specific value of the read-in amount, the value can be determined as the read-in amount.
  • the storage address of the read-in amount is included in the operation domain, the read-in amount can be obtained from the storage address.
  • a plurality of data to be calculated may be obtained according to a preset default read-in amount.
  • the data amount of the acquired multiple data to be calculated is less than or equal to the default read-in amount.
  • the data amount of a plurality of data to be calculated can be limited, to ensure the accuracy of the counted data number, and also to ensure that the device can run the counting instruction.
  • the device may further include a storage module 2-13.
  • the storage modules 2-13 are used to store a plurality of data to be calculated and counting conditions.
  • the storage module may include one or more of a cache and a register.
  • the cache may include a high-speed temporary storage cache, and may also include at least one NRAM (Neuron Random Access Memory). Registers can be used to store multiple data to be calculated and scalar data in counting conditions;
  • the neuron cache may be used to store multiple to-be-operated data and neuron data in counting conditions, and the neuron data includes neuron vector data.
  • the instruction format of the counting instruction may be:
  • select is the operation code of the count instruction, dst, src0, size are the operation domain of the count instruction.
  • dst is the target address
  • src0 is the data address to be calculated
  • size is the read-in amount.
  • the device may be set in (Graphics Processing Unit, GPU for short), Central Processing Unit (CPU for short), and Neural-network Processing Unit (NPU for short) ) Of one or more.
  • GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • NPU Neural-network Processing Unit
  • FIG. 6-3 shows a schematic diagram of an application scenario of a counting instruction processing device according to an embodiment of the present disclosure.
  • the counting command processing device processes the counting command as follows:
  • the control module 2-11 parses the acquired counting instruction 1 (for example, counting instruction 1 is count 500 and 100), and obtains the operation code and operation domain of counting instruction 1. Among them, the operation code of the count instruction 1 is count, the target address is 500, the data address to be calculated is 100, and the read-in amount is 5. The control module 2-11 acquires a plurality of data to be calculated with a read amount of 5 from the data address to be calculated 100.
  • the counting condition is that the data to be calculated is not 0.
  • the operation module 2-12 counts the number of data to be operated which is not 0 among the plurality of data to be operated, and stores the number of data in the target address 500.
  • the counting instruction processing device can process the counting instruction efficiently and quickly, and the processing efficiency for counting statistics is high and the processing speed is fast.
  • 6-4 shows a flowchart of a counting instruction processing method according to an embodiment of the present disclosure.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following step S51-2 ⁇ ⁇ S52-2.
  • the method is applied to the above-mentioned counting instruction processing device, and the method includes step S51-2 and step S52-2.
  • step S51-2 the control module is used to parse the obtained counting instruction to obtain the operation code and operation domain of the counting instruction, and obtain a plurality of data and targets to be calculated required for executing the counting instruction according to the operation code and operation domain address.
  • the operation code is used to indicate that the operation performed by the counting instruction on the data is a counting statistical operation
  • the operation domain includes the data address and the target address to be calculated.
  • step S52-2 the operation module is used to determine the number of data to be operated satisfying the counting condition among the plurality of data to be operated, and the number of data is stored in the target address.
  • determining the number of data to be calculated satisfying the counting condition among the plurality of data to be calculated includes: using multiple counters in the arithmetic module to perform the calculation on the number of data to be calculated satisfying the counting condition Counting statistics to obtain the number of data to be calculated among the plurality of data to be calculated that satisfy the counting condition.
  • the operation module includes a main operation submodule and multiple slave operation submodules, and the main operation submodule includes multiple adders and multiple dividers,
  • determining the number of data to be calculated among the plurality of data to be calculated satisfying the counting condition, and storing the number of data in the target address includes:
  • the operation domain may further include a read-in amount or a storage address of the read-in amount.
  • acquiring a plurality of data to be calculated and a target address required to execute the counting instruction according to the operation code and the operation domain includes: acquiring the read-in amount, and acquiring the plurality of data to be calculated according to the read-in amount.
  • the data amount of the multiple data to be calculated is less than or equal to the read-in amount.
  • the method may further include: using the storage module of the device to store a plurality of data to be calculated and counting conditions,
  • the storage module includes at least one of a register and a cache
  • the cache used to store multiple data to be calculated and counting conditions, the cache includes at least one neuron cache NRAM;
  • Registers used to store multiple data to be calculated and scalar data in counting conditions
  • the neuron cache is used to store a plurality of data to be operated and neuron data in counting conditions.
  • the neuron data includes neuron vector data.
  • the obtained counting instruction is parsed to obtain the operation code and operation domain of the counting instruction, including:
  • the instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed may include a counting instruction.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is executed,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the counting condition may include that the data to be calculated is not zero.
  • the counting instruction processing method provided by the embodiments of the present disclosure has a wide application range, high processing efficiency and fast processing speed for counting instructions, and high processing efficiency and fast processing speed for counting statistics.
  • the present disclosure also provides a non-volatile computer-readable storage medium on which computer program instructions are stored, and when the computer program instructions are executed by a processor, the above calculation instruction processing method is realized.
  • a counting instruction processing device comprising:
  • the control module is used to parse the obtained counting instruction to obtain the operation code and the operation domain of the counting instruction, and obtain a plurality of pending operations required to execute the counting instruction according to the operation code and the operation domain Data and target address;
  • the operation module is used to determine the number of data of the plurality of data to be operated that satisfy the counting condition and store the number of data in the target address,
  • the operation code is used to indicate that the operation performed by the counting instruction on the data is a counting statistical operation
  • the operation domain includes the data address to be operated and the target address.
  • the calculation module includes:
  • a plurality of counters are used for counting and counting the number of data to be operated that satisfy the counting condition to obtain the number of data to be operated that satisfy the counting condition among the plurality of data to be operated.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules, the master operation sub-module includes the plurality of counters,
  • the main operation sub-module is configured to use the plurality of counters to count statistics on the number of data to be operated that satisfy the counting condition, and determine data of the data to be operated that satisfy the counting condition among the plurality of data to be operated Number, and store the number of data in the target address.
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • control module is also used to obtain the read-in amount, and obtain the plurality of data to be calculated according to the read-in amount,
  • the data amount of the plurality of data to be calculated is less than or equal to the read-in amount.
  • Clause B5. The device according to Clause B1, the device further comprising:
  • a storage module used to store the plurality of data to be calculated and the counting condition
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the plurality of data to be calculated and the counting condition, and the cache includes at least one neuron cache NRAM;
  • the register is used to store the plurality of data to be operated and the scalar data in the counting condition
  • the neuron cache is used to store the plurality of data to be operated and neuron data in the counting condition, and the neuron data includes neuron vector data.
  • control module includes:
  • An instruction processing submodule used for parsing the counting instruction to obtain the operation code and operation domain of the counting instruction
  • a queue storage sub-module is used to store an instruction queue, the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed include the counting instruction.
  • the calculation module includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association relationship between the first pending instruction in the plurality of pending instructions and the zeroth pending instruction before the first pending instruction
  • the execution instruction is cached in the instruction storage submodule, and after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is extracted from the instruction storage submodule and sent to the arithmetic module,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause B8 The device according to any one of Clause B1 to Clause B7, the counting condition includes that the data to be calculated is not zero.
  • Article B9. A machine learning computing device, the device comprising:
  • a plurality of the counting instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the counting instruction processing devices are interconnected and transmitting data through a fast external device interconnect bus PCIE bus to support larger-scale machine learning operations; a plurality of the counting instruction processing devices share the same control system or own Respective control systems; a plurality of the counting instruction processing devices share memory or have their own memories; the interconnection method of the plurality of counting instruction processing devices is any interconnected topology.
  • a combined processing device comprising:
  • Machine learning computing devices general interconnection interfaces and other processing devices as described in clause B9;
  • the machine learning computing device interacts with the other processing device to jointly complete the calculation operation specified by the user,
  • the combined processing device further includes: a storage device, which is respectively connected to the machine learning computing device and the other processing device, and is used for storing data of the machine learning computing device and the other processing device.
  • Article B11 A machine learning chip, the machine learning chip includes:
  • Article B12. An electronic device, the electronic device comprising:
  • a board card includes: a storage device, an interface device and a control device, and a machine learning chip as described in Clause B11;
  • the machine learning chip is respectively connected to the storage device, the control device and the interface device;
  • the storage device is used for storing data
  • the interface device is used to realize data transmission between the machine learning chip and an external device
  • the control device is used for monitoring the state of the machine learning chip.
  • Article B14 A counting instruction processing method.
  • the method is applied to a counting instruction processing apparatus.
  • the apparatus includes a control module and an arithmetic module.
  • the method includes:
  • the control module is used to parse the obtained counting instruction to obtain the operation code and the operation domain of the counting instruction, and obtain a plurality of data to be calculated and required to execute the counting instruction according to the operation code and the operation domain. target address;
  • the operation code is used to indicate that the operation performed by the counted selection instruction on the data is a counting statistical operation
  • the operation domain includes the data address to be operated and the target address.
  • determining the number of data to be calculated among the plurality of data to be calculated satisfying the counting condition includes:
  • a plurality of counters in the calculation module are used to count and count the number of data to be calculated satisfying the counting condition to obtain the number of data to be calculated satisfying the counting condition among the plurality of data to be calculated.
  • the operation module includes a master operation submodule and a plurality of slave operation submodules
  • the master operation submodule includes a plurality of adders and a plurality of dividers
  • determining the number of data to be calculated among the plurality of data to be calculated satisfying the counting condition, and storing the number of data in the target address includes:
  • the operation domain further includes a read-in amount or a storage address of the read-in amount
  • acquiring a plurality of data to be calculated and a target address required to execute the counting instruction according to the operation code and the operation domain includes:
  • the data amount of the plurality of data to be calculated is less than or equal to the read-in amount.
  • Clause B18 The method according to Clause B14, the method further comprising:
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the plurality of data to be calculated and the counting condition, and the cache includes at least one neuron cache NRAM;
  • the register is used to store the plurality of data to be operated and the scalar data in the counting condition
  • the neuron cache is used to store the plurality of data to be operated and neuron data in the counting condition, and the neuron data includes neuron vector data.
  • Clause B19 According to the method described in Clause B14, parse the obtained counting instruction to obtain the operation code and operation domain of the counting instruction, including:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed, which are sequentially arranged according to an execution order, and the plurality of instructions to be executed include the counting instruction.
  • Clause B20 The method according to Clause B19, the method further comprising:
  • the first to-be-executed instruction among the plurality of to-be-executed instructions When it is determined that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, cache the first to-be-executed instruction, and determine the After the execution of the zeroth to-be-executed instruction is completed, control to execute the execution of the first to-be-executed instruction,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing the data required by the first instruction to be executed and the zeroth storage address interval storing the data required by the zeroth instruction to be executed have overlapping areas.
  • Clause B21 The method according to any one of Clause B14 to Clause B20, the counting condition includes that the data to be calculated is not zero.
  • Clause B22 A non-volatile computer-readable storage medium having computer program instructions stored thereon, which when executed by a processor implements the method of any one of clause B14 to clause B21.
  • the present disclosure provides a fully-connected instruction processing method, device, computer equipment, and storage medium. Only one instruction can be used to realize fully-connected operation, which can significantly improve the efficiency and speed of fully-connected operation.
  • FIG. 7-1 shows a block diagram of a fully connected instruction processing apparatus according to an embodiment of the present disclosure. As shown in Figure 7-1, the device includes a control module 3-11 and an arithmetic module 3-12.
  • the control module 3-11 is used to parse the obtained fully connected instruction, obtain the operation code and operation domain of the fully connected instruction, and obtain the first data and the second data required to execute the fully connected instruction according to the operation code and operation domain Data, weight data and target address.
  • the operation code is used to indicate that the operation performed by the fully connected instruction on the data is a fully connected operation, and the operation domain includes a first data address, a second data address, a weight data address, and a target address.
  • the operation module 3-12 is configured to perform a fully connected operation on the first data and the second data according to the weight data to obtain an operation result, and store the operation result in the target address.
  • control module may obtain the first data, the second data, and the weight data from the first data address, the second data address, and the weight data address, respectively.
  • the operation code may be the part of the instruction or field (usually represented by code) specified in the computer program to perform the operation, and is the instruction sequence number used to inform the device that executes the instruction which instruction needs to be executed.
  • the operation domain may be a source of all data required to execute the corresponding instruction, and all data required to execute the corresponding instruction include first data, second data, weight data, and corresponding calculation methods, and so on. For a fully connected instruction, it must include an operation code and an operation field, where the operation field includes at least a first data address, a second data address, a weight data address, and a target address.
  • the device may include one or more control modules and one or more arithmetic modules, and the number of control modules and arithmetic modules may be set according to actual needs, which is not limited in the present disclosure.
  • the control module can receive a fully connected instruction and control one or more arithmetic modules to perform fully connected operations.
  • the plurality of control modules can respectively receive a fully connected instruction and control the corresponding one or more arithmetic modules to perform a fully connected operation.
  • the fully connected instruction processing device includes a control module and an arithmetic module.
  • the control module is used to parse the obtained fully connected instruction to obtain the operation code and operation domain of the fully connected instruction, and according to the operation
  • the code and the operation domain obtain the first data, the second data, the weight data and the target address required to execute the fully connected instruction;
  • the operation module is used to perform the fully connected operation on the first data and the second data according to the weight data to obtain the operation As a result, the operation result is stored in the target address.
  • the fully connected command processing device provided by the embodiments of the present disclosure has a wide application range, and has high processing efficiency and fast processing speed for the fully connected command, and high processing efficiency and speed for performing the fully connected operation.
  • the arithmetic module 3-12 may include multiple multipliers 3-120 and multiple adders 3-120 '. Multiple multipliers 3-120 are used to perform the multiplication operation in the fully connected operation. A plurality of adders 3-120 'are used to perform addition operations in the fully connected operation.
  • the operation module may further include one adder and one multiplier, or one adder and multiple multipliers, or multiple adders and one multiplier.
  • the number of multipliers and adders can be set according to the data amount of the fully-connected operation, the processing speed, and the processing efficiency of the fully-connected operation, which is not limited in the present disclosure.
  • the operation module 3-12 may include a master operation sub-module 3-121 and multiple slave operation sub-modules 3-122, and the slave operation sub-module 3-122 includes Multiple multipliers 3-120 and multiple adders 3-120 '(not shown).
  • the control module 3-11 is also used to parse the fully connected instruction to obtain multiple operation instructions, and send multiple data to be operated and multiple operation instructions to the main operation sub-module 3-121.
  • the main operation sub-module 3-121 is used to perform pre-processing on the first data and the second data, and to transmit data and operation instructions with a plurality of slave operation sub-modules 3-122.
  • the slave operation sub-module 3-122 is used to perform multiple operations in parallel based on the data and operation instructions transmitted from the master operation sub-module 3-121 based on multiple multipliers 3-120 and multiple adders 3-120 ′. Intermediate results, and transmit multiple intermediate results to the main operation sub-module 3-122.
  • the main operation submodule 3-121 is also used to perform subsequent processing on a plurality of intermediate results, obtain operation results, and store the operation results in the target address.
  • the operation domain may further include a weight width and a weight height.
  • the control module 3-11 is also used to obtain the weight data from the weight data address according to the weight height and weight width.
  • the weight width and weight height may limit the amount of weight data acquired.
  • the weight width and weight height included in the operation domain may be specific numerical values, and may also be storage addresses storing the weight width and weight height.
  • the specific value of the weight width and weight height is directly included in the operation domain, the specific value is determined as the corresponding weight width and weight height.
  • the storage address of the weight width and the weight height is included in the operation domain, the weight height and the weight width can be obtained from the storage addresses of the weight width and the weight height, respectively.
  • weight data may be obtained according to the preset default weight height and default weight width.
  • the amount of weight data can be limited to ensure the accuracy of the calculation results.
  • the device may further include a storage module 3-13.
  • the storage module 3-13 is used to store the first data, the second data and the weight data.
  • the storage module may include one or more of a cache and a register.
  • the cache may include a high-speed temporary storage cache, and may also include at least one NRAM (Neuron Random Access Memory).
  • the buffer is used to store the first data, the second data, and the weight data
  • the register is used to store the scalar data in the first data, the second data, and the weight data.
  • the neuron cache is used to store the neuron data in the first data, the second data, and the weight data, and the neuron data includes neuron vector data.
  • command format of the fully connected command may be:
  • mlp is the opcode of the fully connected instruction.
  • dst, A, B, Weight, Weight.width, Weight.height are the operation domains of fully connected instructions. Where dst is the target address, A is the first data address, B is the second data address, Weight is the weight data address, Weight.width is the weight width, and Weight.height is the weight height.
  • the device may be set in (Graphics Processing Unit, GPU for short), Central Processing Unit (CPU for short), and Neural-network Processing Unit (NPU for short) ) Of one or more.
  • GPU Graphics Processing Unit
  • CPU Central Processing Unit
  • NPU Neural-network Processing Unit
  • FIG. 7-3 shows a schematic diagram of an application scenario of a fully connected instruction processing apparatus according to an embodiment of the present disclosure.
  • the fully connected command processing device processes the fully connected command as follows:
  • the control module 3-11 parses the obtained fully-connected instruction 1 (for example, the fully-connected instruction 1 is mlp500, 100, 200, 300, 5, 9), and obtains the operation code and operation domain of the fully-connected instruction 1.
  • the operation code of the full connection instruction 1 is mlp
  • the target address is 500
  • the first data address is 100
  • the second data address is 200
  • the weight data address is 300
  • the weight width is 5,
  • the weight height is 9.
  • the control module 3-11 acquires the first data from the first data address 100, the second data from the second data address 200, and the weights with a weight width of 5 and a weight height of 9 from the weight data address 300 Value data.
  • the operation module 3-12 performs full connection operation on the first data and the second data according to the weight data to obtain an operation result, and stores the operation result in the target address 500.
  • the operation module 3-12 performs full connection operation on the first data and the second data according to the weight data to obtain an operation result, and stores the operation result in the target address 500.
  • the fully connected command processing device can efficiently and quickly process the fully connected command, and the processing efficiency of the fully connected operation is high and fast.
  • FIG. 7-4 shows a flowchart of a fully connected instruction processing method according to an embodiment of the present disclosure.
  • the method can be applied to computer equipment including a memory and a processor, where the memory is used to store data used in the execution of the method; the processor is used to perform related processing and operation steps, such as performing the following steps S51-3 ⁇ ⁇ S52-3.
  • this method is applied to the above-mentioned fully-connected instruction processing apparatus.
  • the method includes step S51-3 and step S52-3.
  • step S51-3 the control module is used to parse the obtained fully connected instruction to obtain the operation code and operation domain of the fully connected instruction, and obtain the first data required to execute the fully connected instruction according to the operation code and operation domain.
  • the operation code is used to indicate that the operation performed by the fully connected instruction on the data is a fully connected operation, and the operation domain includes a first data address, a second data address, a weight data address, and a target address.
  • step S52-3 the operation module is used to perform a fully connected operation on the first data and the second data according to the weight data to obtain an operation result, and store the operation result in the target address.
  • performing a fully connected operation on the first data and the second data according to the weight data may include: using multiple multipliers in the operation module to perform the multiplication operation in the fully connected operation, and using the operation Multiple adders in the module perform addition operations in fully connected operations.
  • the operation module includes a master operation sub-module and multiple slave operation sub-modules
  • the slave operation sub-module includes multiple multipliers and multiple adders
  • the method may further include:
  • control module parse the fully connected instructions to obtain multiple calculation instructions
  • the first data and the second data are fully connected according to the weight data to obtain the operation result, and the operation result is stored in the target address, including:
  • multiple intermediate results are executed in parallel based on the transmitted data and operation instructions to obtain multiple intermediate results
  • the operation domain may further include a weight width and a weight height.
  • obtaining the first data, the second data, the weight data and the target address required to execute the fully connected instruction according to the operation code and the operation domain may include:
  • the method may further include: using the storage module of the device to store the first data, the second data, and the weight data,
  • the storage module includes at least one of a register and a cache
  • the cache is used to store the first data, the second data, and the weight data.
  • the cache includes at least one neuron cache NRAM;
  • the register is used to store the scalar data in the first data, the second data and the weight data;
  • the neuron cache is used to store the neuron data in the first data, the second data, and the weight data.
  • the neuron data includes neuron vector data.
  • parsing the obtained fully connected instruction to obtain the operation code and operation domain of the fully connected instruction may include:
  • An instruction queue is stored, and the instruction queue includes a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed may include fully connected instructions.
  • the method may further include: when determining that the first to-be-executed instruction among the plurality of to-be-executed instructions is associated with the zeroth to-be-executed instruction before the first to-be-executed instruction, caching the first The instruction to be executed, after the execution of the zeroth instruction to be executed is completed, the first instruction to be executed is executed,
  • association relationship between the first instruction to be executed and the zeroth instruction to be executed before the first instruction to be executed includes:
  • the first storage address interval storing data required for the first instruction to be executed has an overlapping area with the zeroth storage address interval storing data required for the zeroth instruction to be executed.
  • the fully connected instruction processing method provided by the embodiments of the present disclosure has a wide range of application, and has high processing efficiency and fast processing speed for the fully connected instruction, and high processing efficiency and speed for performing the fully connected operation.
  • a fully connected command processing device comprising:
  • the control module is configured to parse the obtained fully-connected instruction to obtain the operation code and operation domain of the fully-connected instruction, and obtain the first required to execute the fully-connected instruction according to the operation code and the operation domain.
  • An operation module configured to perform a fully connected operation on the first data and the second data according to the weight data, obtain an operation result, and store the operation result in the target address
  • the operation code is used to indicate that the operation performed on the data by the fully connected instruction is a fully connected operation
  • the operation domain includes a first data address, a second data address, a weight data address, and the target address.
  • the arithmetic module includes:
  • a plurality of adders are used to perform the addition operation in the fully connected operation.
  • the operation module includes a master operation sub-module and a plurality of slave operation sub-modules
  • the slave operation sub-module includes the plurality of multipliers and the plurality of adders
  • the control module is also used to parse the fully-connected instruction to obtain a plurality of operation instructions, and send the first data, the second data, and the plurality of operation instructions to the main operation submodule;
  • the master operation sub-module is used to perform pre-processing on the first data and the second data, and transmit data and operation instructions with the plurality of slave operation sub-modules;
  • the slave operation sub-module is configured to execute intermediate operations in parallel based on the data and operation instructions transmitted from the master operation sub-module based on the multiple multipliers and the multiple adders to obtain multiple intermediate results, and Transmitting the plurality of intermediate results to the main operation submodule;
  • the main operation sub-module is also used to perform subsequent processing on the plurality of intermediate results to obtain an operation result, and store the operation result in the target address.
  • the operation domain further includes a weight width and a weight height
  • control module is further configured to obtain the weight data from the weight data address according to the weight height and the weight width.
  • Clause C5 The device according to Clause C1, the device further comprising:

Abstract

一种运算方法、装置、计算机设备和存储介质。其中的组合处理装置包括:机器学习运算装置、通用互联接口和其他处理装置;机器学习运算装置与其他处理装置进行交互,共同完成用户指定的计算操作,其中,组合处理装置还包括:存储装置,该存储装置分别与机器学习运算装置和其他处理装置连接,用于保存机器学习运算装置和其他处理装置的数据。所提供的运算方法、装置、计算机设备和存储介质的适用范围广,进行运算的处理效率高、处理速度快。

Description

运算方法、装置、计算机设备和存储介质 技术领域
本公开涉及计算机技术领域,特别是涉及一种运算方法、装置、计算机设备和存储介质。
背景技术
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。相关技术中,在对数据进行选择运算、计数运算、全连接运算、卷积运算、最大池化运算、激活运算、填充运算、矩阵转置运算、平均池化运算、标量计算、标量类型转换、取地址处理、标量数据迁移、对指令流的跳转控制进行处理、向量计算、循环向量计算、向量数据迁移、同步控制、中断存储等运算或处理的效率低、速度慢。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决上述问题的运算方法、装置、计算机设备和存储介质。
根据本公开的一方面,提供了一种激活指令处理装置,所述装置包括:
控制模块,用于对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据和目标地址;
运算模块,用于对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址和所述目标地址。
根据本公开的另一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述激活指令处理装置时,多个所述激活指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述激活指令处理装置共享内存或者拥有各自的内存;多个所述激活指令处理装置的互联方式是任意互联拓扑。
根据本公开的另一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的另一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的另一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的另一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的另一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的另一方面,提供了一种激活指令处理方法,所述方法应用于激活指令处理装置,所述方法包括:
对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所 述操作域获取执行所述激活指令所需的待运算数据、激活表、常数表和目标地址;
根据所述激活表和所述常数表,对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址、激活表地址、常数表地址和所述目标地址。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述激活指令处理方法。
本公开实施例提供一种激活指令处理方法、装置及相关产品,该装置包括控制模块和运算模块,控制模块用于对获取到的激活指令进行解析,得到激活指令的操作码和操作域,并根据操作码和操作域获取执行激活指令所需的待运算数据和目标地址;运算模块用于对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的激活指令处理方法、装置及相关产品的适用范围广,对激活指令的处理效率高、处理速度快,进行激活运算的处理效率高、处理速度快。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例指令处理方法的处理器的示意图。
图1-1示出根据本公开一实施例的激活指令处理装置的框图。
图1-2a、图1-2b示出根据本公开一实施例的激活指令处理装置的框图。
图1-3示出根据本公开一实施例的激活指令处理装置的应用场景的示意图。
图1-4示出根据本公开一实施例的激活指令处理方法的流程图。
图2-1示出根据本公开一实施例的线性整流函数激活指令处理装置的框图。
图2-2a、图2-2b示出根据本公开一实施例的线性整流函数激活指令处理装置的框图。
图2-3示出根据本公开一实施例的线性整流函数激活指令处理装置的应用场景的示意图。
图2-4示出根据本公开一实施例的线性整流函数激活指令处理方法的流程图。
图3-1示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的框图。
图3-2a、图3-2b示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的框图。
图3-3示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的应用场景的示意图。
图3-4示出根据本公开一实施例的S型生长曲线函数激活指令处理方法的流程图。
图4-1示出根据本公开一实施例的指数函数激活指令处理装置的框图。
图4-2a、图4-2b示出根据本公开一实施例的指数函数激活指令处理装置的框图。
图4-3示出根据本公开一实施例的指数函数激活指令处理装置的应用场景的示意图。
图4-4示出根据本公开一实施例的指数函数激活指令处理方法的流程图。
图5-1示出根据本公开一实施例的选择指令处理装置的框图。
图5-2a、图5-2b示出根据本公开一实施例的选择指令处理装置的框图。
图5-3示出根据本公开一实施例的选择指令处理装置的应用场景的示意图。
图5-4示出根据本公开一实施例的选择指令处理方法的流程图。
图6-1示出根据本公开一实施例的计数指令处理装置的框图。
图6-2a、图6-2b示出根据本公开一实施例的计数指令处理装置的框图。
图6-3示出根据本公开一实施例的计数指令处理装置的应用场景的示意图。
图6-4示出根据本公开一实施例的计数指令处理方法的流程图。
图7-1示出根据本公开一实施例的全连接指令处理装置的框图。
图7-2a、图7-2b示出根据本公开一实施例的全连接指令处理装置的框图。
图7-3示出根据本公开一实施例的全连接指令处理装置的应用场景的示意图。
图7-4示出根据本公开一实施例的全连接指令处理方法的流程图。
图8-1示出根据本公开一实施例的卷积指令处理装置的框图。
图8-2a、图8-2b示出根据本公开一实施例的卷积指令处理装置的框图。
图8-3示出根据本公开一实施例的卷积指令处理装置的应用场景的示意图。
图8-4示出根据本公开一实施例的卷积指令处理方法的流程图。
图9-1示出根据本公开一实施例的最大池化指令处理装置的框图。
图9-2a、图9-2b示出根据本公开一实施例的最大池化指令处理装置的框图。
图9-3示出根据本公开一实施例的最大池化指令处理装置的应用场景的示意图。
图9-4示出根据本公开一实施例的最大池化指令处理方法的流程图。
图10-1示出根据本公开一实施例的填充指令处理装置的框图。
图10-2a、图10-2b示出根据本公开一实施例的填充指令处理装置的框图。
图10-3示出根据本公开一实施例的填充指令处理装置的应用场景的示意图。
图10-4示出根据本公开一实施例的填充指令处理方法的流程图。
图11-1示出根据本公开一实施例的矩阵转置指令处理装置的框图。
图11-2a、图11-2b示出根据本公开一实施例的矩阵转置指令处理装置的框图。
图11-3示出根据本公开一实施例的矩阵转置指令处理装置的应用场景的示意图。
图11-4示出根据本公开一实施例的矩阵转置指令处理方法的流程图。
图12-1示出根据本公开一实施例的平均池化指令处理装置的框图。
图12-2a、图12-2b示出根据本公开一实施例的平均池化指令处理装置的框图。
图12-3示出根据本公开一实施例的平均池化指令处理装置的应用场景的示意图。
图12-4示出根据本公开一实施例的平均池化指令处理方法的流程图。
图13-1示出根据本公开一实施例的标量指令处理装置的框图。
图13-2a、图13-2b示出根据本公开一实施例的标量指令处理装置的框图。
图13-3a、图13-3b示出根据本公开一实施例的标量指令处理装置的应用场景的示意图。
图13-4示出根据本公开一实施例的标量指令处理方法的流程图。
图14-1示出根据本公开一实施例的标量类型转换指令处理装置的框图。
图14-2a、图14-2b示出根据本公开一实施例的标量类型转换指令处理装置的框图。
图14-3示出根据本公开一实施例的标量类型转换指令处理装置的应用场景的示意图。
图14-4示出根据本公开一实施例的标量类型转换指令处理方法的流程图。
图15-1示出根据本公开一实施例的取地址指令处理装置的框图。
图15-2示出根据本公开一实施例的取地址指令处理装置的框图。
图15-3a、图15-3b示出根据本公开一实施例的取地址指令处理装置的应用场景的示意图。
图15-4示出根据本公开一实施例的取地址指令处理方法的流程图。
图16-1示出根据本公开一实施例的标量数据迁移指令处理装置的框图。
图16-2示出根据本公开一实施例的标量数据迁移指令处理装置的框图。
图16-3示出根据本公开一实施例的标量数据迁移指令处理装置的应用场景的示意图。
图16-4示出根据本公开一实施例的标量数据迁移指令处理方法的流程图。
图17-1示出根据本公开一实施例的标量控制流指令处理装置的框图。
图17-2示出根据本公开一实施例的标量控制流指令处理装置的框图。
图17-3示出根据本公开一实施例的标量控制流指令处理装置的应用场景的示意图。
图17-4示出根据本公开一实施例的标量控制流指令处理方法的流程图。
图18-1示出根据本公开一实施例的向量指令处理装置的框图。
图18-2a、图18-2b示出根据本公开一实施例的向量指令处理装置的框图。
图18-3示出根据本公开一实施例的向量指令处理装置的应用场景的示意图。
图18-4示出根据本公开一实施例的向量指令处理方法的流程图。
图19-1示出根据本公开一实施例的循环向量指令处理装置的框图。
图19-2a、图19-2b示出根据本公开一实施例的循环向量指令处理装置的框图。
图19-3示出根据本公开一实施例的循环向量指令处理装置的应用场景的示意图。
图19-4示出根据本公开一实施例的循环向量指令处理方法的流程图。
图20-1示出根据本公开一实施例的向量数据迁移指令处理装置的框图。
图20-2示出根据本公开一实施例的向量数据迁移指令处理装置的框图。
图20-3示出根据本公开一实施例的向量数据迁移指令处理装置的应用场景的示意图。
图20-4示出根据本公开一实施例的向量数据迁移指令处理方法的流程图。
图21-1a示出根据本公开一实施例的同步控制指令处理装置的框图。
图21-1b示出根据本公开一实施例的同步控制指令处理装置中模块集群的结构示意图。
图21-2示出根据本公开一实施例的同步控制指令处理装置的框图。
图21-3示出根据本公开一实施例的同步控制指令处理装置的应用场景的示意图。
图21-4示出根据本公开一实施例的同步控制指令处理方法的流程图。
图22-1示出根据本公开一实施例的中断存储指令处理装置的框图。
图22-2a、图22-2b示出根据本公开一实施例的中断存储指令处理装置的框图。
图22-3a、图22-3b示出根据本公开一实施例的中断存储指令处理装置的应用场景的示意图。
图22-4示出根据本公开一实施例的中断存储指令处理方法的流程图。
图23a-图23d示出根据本公开一实施例的运算模块的框图。
图23e示出根据本公开一实施例的控制模块的框图。
图24a、图24b示出根据本公开一实施例的组合处理装置的框图。
图25示出根据本公开一实施例的板卡的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第零”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事 件]”或“响应于检测到[所描述条件或事件]”。
本公开提供了针对不同的运算或处理所对应的指令处理方法和装置、以及与每一种指令处理方法和设备相对应的计算机设备和存储介质,针对不同的运算或处理所对应的指令处理方法和装置包括:选择指令处理方法和装置、计数指令处理方法和装置、全连接指令处理方法和装置、卷积指令处理方法和装置、最大池化指令处理方法和装置、线性整流函数激活指令处理方法和装置、S型生长曲线函数激活指令处理方法和装置、激活指令处理方法和装置、填充指令处理方法和装置、矩阵转置指令处理方法和装置、平均池化指令处理方法和装置、指数函数激活指令处理方法和装置、标量指令处理方法和装置、标量类型转换指令处理方法和装置、取地址指令处理方法和装置、标量数据迁移指令处理方法和装置、标量控制流指令处理方法和装置、向量指令处理方法和装置、循环向量指令处理方法和装置、向量数据迁移指令处理方法和装置、同步控制指令处理方法和装置、中断存储指令处理方法和装置。下文所述的指令处理方法、指令处理装置可以为上述所列举的指令处理方法、装置中的任意一个。
根据本公开实施例的指令处理方法可应用于处理器中,该处理器可以是通用处理器,例如CPU(Central Processing Unit,中央处理器),也可以是用于执行人工智能运算的人工智能处理器(IPU)。人工智能运算可包括机器学习运算,类脑运算等。其中,机器学习运算包括神经网络运算、k-means运算、支持向量机运算等。该人工智能处理器可例如包括GPU(Graphics Processing Unit,图形处理单元)、NPU(Neural-Network Processing Unit,神经网络处理单元)、DSP(Digital Signal Process,数字信号处理单元)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片中的一种或组合。本公开对处理器的具体类型不作限制。
在一种可能的实现方式中,本公开中所提及的处理器可包括多个处理单元,每个处理单元可以独立运行所分配到的各种任务,如:卷积运算任务、池化任务或全连接任务等。本公开对处理单元及处理单元所运行的任务不作限制。
图1示出根据本公开实施例指令处理方法的处理器的示意图。如图1所示,处理器100包括多个处理单元101以及存储单元102,多个处理单元101用于执行指令序列,存储单元102用于存储数据,可包括随机存储器(RAM,Random Access Memory)和寄存器堆。处理器100中的多个处理单元101既可共用部分存储空间,例如共用部分RAM存储空间和寄存器堆,又可同时拥有各自的存储空间。
图1-1示出根据本公开一实施例的激活指令处理装置的框图。如图1-1所示,该装置包括控制模块8-11和运算模块8-12。
控制模块8-11,用于对获取到的激活指令进行解析,得到激活指令的操作码和操作域,并根据操作码和操作域获取执行激活指令所需的待运算数据、和目标地址。其中,操作码用于指示激活指令对数据所进行的运算为激活运算,操作域包括待运算数据地址和目标地址。
运算模块8-12,用于对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址中获得待运算数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,如对应的地址,执行对应的指令所需的所有数据包括待运算数据、等数据以及对应的运算方法等等。对于一个激活指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对激活指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时, 该控制模块可以接收线性整流函数激活指令,并控制一个或多个处理模块进行线性整流函数激活运算。在装置包括多个控制模块时,多个控制模块可以分别接收线性整流函数激活指令,并控制对应的一个或多个处理模块进行线性整流函数激活运算。
本公开实施例提供一种激活指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的激活指令进行解析,得到激活指令的操作码和操作域,并根据操作码和操作域获取执行激活指令所需的待运算数据和目标地址;运算模块用于对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的激活指令处理装置的适用范围广,对激活指令的处理效率高、处理速度快,进行激活运算的处理效率高、处理速度快。
在一种可能的实现方式中,激活运算所利用的激活函数可以包括以下至少一种:线性整流函数(Rectified Linear Unit,ReLU,也可称ReLU函数)、S型生长曲线函数(Sigmoid function,也可称Sigmoid函数)、双曲正切函数(tanh,也可称tanh函数)、带泄露线性整流函数(Leaky ReLU,ReLU函数的一个变种)、取最大值函数(maxout函数,输出该层中的最大值)和幂函数(power function)。
在该实现方式中,进行激活运算所用的激活函数还可以是其他具有非线性、连续可微、范围尽可能不饱和、具有单调性、在圆点处近似直线等特点中至少一个特点的、可用于激活运算的函数,本公开对此不作限制。
在一种可能的实现方式中,控制模块8-11还可以用于根据操作码和/或操作域获取激活参数表。
运算模块8-12,还可以用于根据激活参数表对待运算数据进行激活运算,得到运算结果。
其中,激活参数表可以包括激活表和常数表。
在该实现方式中,操作域中可以包括激活参数表地址,以便于控制模块从激活参数表地址中获取激活参数表地址。或者,控制模块可以根据操作码确定执行该激活指令需要激活参数表时,可以直接从预先确定的激活参数表的存储地址获取激活参数表。再或者,控制模块可以根据操作码确定执行该激活指令需要激活参数表时,可以直接从预先确定的参数表的存储地址获取对应该激活指令的激活参数表。本领域技术人员可以根据实际需要对激活参数表的获取方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,控制模块还可以获取对应于激活指令的激活函数,使得运算模块可以根据激活函数以及对应的运算器,对待运算数据进行激活运算。
需要说明的是,本领域技术人员可以根据实际需要对实现运算模块实现激活运算的方式进行设置,本公开对此不作限制。
在该实现方式中,可以预先确定采用不同激活函数进行激活运算所需的激活表和常数表。不同激活函数所对应的激活表和常数表不相同。
图1-2a示出根据本公开一实施例的激活指令处理装置的框图。在一种可能的实现方式中,如图1-2a所示,运算模块8-12可以包括多个激活运算器8-120。多个激活运算器8-120用于对待运算数据进行激活运算。
在该实现方式中,运算模块也可以包括一个激活运算器。可以根据所需进行的激活运算的数据量的大小、对激活运算的处理速度、效率等要求对激活运算器的数量进行设置,本公开对此不作限制。
图1-2b示出根据本公开一实施例的激活指令处理装置的框图。在一种可能的实现方式中,如图1-2b所示,运算模块8-12可以包括主运算子模块8-121和多个从运算子模块8-122,主运算子模块8-121包括多个激活运算器8-120(图中未示出)。
主运算子模块8-121,用于利用多个激活运算器对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块8-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量可以小于或等于读入量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数 据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量可以小于或等于默认读入量。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该激活指令。
在一种可能的实现方式中,如图1-2a、图1-2b所示,该装置还可以包括存储模块8-13。存储模块8-13用于存储待运算数据。存储模块13还可以用于存储激活表和常数表。
在该实现方式中,存储模块可以包括内存,如缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待运算数据、激活表和常数表存储在存储模块的缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,激活指令的指令格式可以是:
active dst src0active_table const_table size
其中,active为激活指令的操作码,dst、src0、active_table、const_table、size为激活指令的操作域。其中,dst为目标地址,src0为待运算数据地址,active_table为激活表地址,const_table为常数表地址、size为读入量。
在一种可能的实现方式中,激活指令的指令格式还可以是:
active dst src0 size
其中,active为激活指令的操作码,dst、src0、size为激活指令的操作域。其中,dst为目标地址,src0为待运算数据地址,size为读入量。
应当理解的是,本领域技术人员可以根据需要对激活指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了激活指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用激活指令处理装置进行激活运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解激活指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图1-3示出根据本公开一实施例的激活指令处理装置的应用场景的示意图。如图1-3所示,激活指令处理装置对激活指令进行处理的过程如下:
示例1、控制模块8-11对获取到的激活指令1(如激活指令1为active 500 100 200 300 64)进行解析,得到激活指令1的操作码和操作域。其中,激活指令1的操作码为active,目标地址为500,待运算数据地址为100,激活表地址为200,常数表地址为300,读入量为64。控制模块8-11从待运算数据地址100中获取数据量为64(读入量)的待运算数据,从激活表地址200中获取激活表,从常数表地址300中获取常数表。运算模块8-12根据激活表和常数表对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址500中。
示例2、与示例1的区别在于,激活指令1为active 500 100 64,假定需要根据激活参数表进行激活运算,那么控制模块8-11需获取激活参数表(具体实现过程参见上文描述)。
以上各模块的工作过程可参考上文的相关描述。
这样,激活指令处理装置可以高效、快速地对激活指令进行处理,实现激活运算的高效、快速处理。
图1-4示出根据本公开一实施例的激活指令处理方法的流程图。如图1-4所示,该方法应用于上述激活指令处理装置,该方法包括步骤S51-8和步骤S52-8。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-8和步骤S52-8。
在步骤S51-8中,利用控制模块对获取到的激活指令进行解析,得到激活指令的操作码和操作域,并根据操作码和操作域获取执行激活指令所需的待运算数据和目标地址。其中,操作码用于指示激活指令对数据所进行的运算为激活运算,操作域包括待运算数据地址和目标地址。
在步骤S52-8中,利用运算模块对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:
根据操作码和/或操作域获取激活参数表;
其中,利用运算模块对待运算数据进行激活运算,得到运算结果,包括:
根据激活参数表对待运算数据进行激活运算,得到运算结果,
其中,激活参数表可以包括激活表和常数表。
在一种可能的实现方式中,利用运算模块对待运算数据进行激活运算,得到运算结果,可以包括:利用多个激活运算器对待运算数据进行激活运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括多个激活运算器,
其中,利用运算模块对待运算数据进行激活运算,得到运算结果,可以包括:
利用主运算子模块中的多个激活运算器对待运算数据进行激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,根据操作码和操作域获取执行激活指令所需的待运算数据、激活表、常数表和目标地址,可以包括:获取读入量,并按照读入量获取多个待运算数据。
在一种可能的实现方式中,该方法还可以包括:存储待运算数据。
在一种可能的实现方式中,对获取到的激活指令进行解析,得到激活指令的操作码和操作域,可以包括:
存储激活指令;
对激活指令进行解析,得到激活指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括激活指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
在一种可能的实现方式中,激活运算所利用的激活函数可以包括以下至少一种:
线性整流函数、S型生长曲线函数、双曲正切函数、带泄露线性整流函数、取最大值函数和幂函数。
需要说明的是,尽管以上述实施例作为示例介绍了激活指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的激活指令处理方法的适用范围广,对激活指令的处理效率高、处理速度快,进行激活运算的处理效率高、处理速度快。
条款H1、一种激活指令处理装置,其特征在于,所述装置包括:
控制模块,用于对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据和目标地址;
运算模块,用于对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款H2、根据条款H1所述的装置,其特征在于,
所述控制模块,还用于根据所述操作码和/或所述操作域获取激活参数表;
所述运算模块,还用于根据所述激活参数表对所述待运算数据进行激活运算,得到运算结果,
其中,所述激活参数表包括激活表和常数表。
条款H3、根据条款H1所述的装置,其特征在于,所述运算模块,包括:
多个激活运算器,用于对所述待运算数据进行激活运算。
条款H4、根据条款H3所述的装置,其特征在于,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
所述主运算子模块,用于利用所述多个激活运算器对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款H5、根据条款H1所述的装置,其特征在于,所述操作域包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述待运算数据。
条款H6、根据条款H1所述的装置,其特征在于,所述装置还包括:
存储模块,用于存储所述待运算数据。
条款H7、根据条款H1所述的装置,其特征在于,所述控制模块包括:
指令存储子模块,用于存储所述激活指令;
指令处理子模块,用于对所述激活指令进行解析,得到所述激活指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述激活指令。
条款H8、根据条款H7所述的装置,其特征在于,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款H9、根据条款H1至条款H8任一项所述的装置,其特征在于,所述激活运算所利用的激活函数包括以下至少一种:
线性整流函数、S型生长曲线函数、双曲正切函数、带泄露线性整流函数、取最大值函数和幂函数。
条款H10、一种机器学习运算装置,其特征在于,所述装置包括:
一个或多个如条款H1-条款H9任一项所述的激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述激活指令处理装置时,多个所述激活指令处理装置间可 以通过特定的结构进行连接并传输数据;
其中,多个所述激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述激活指令处理装置共享内存或者拥有各自的内存;多个所述激活指令处理装置的互联方式是任意互联拓扑。
条款H11、一种组合处理装置,其特征在于,所述组合处理装置包括:
如条款H10所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款H12、一种机器学习芯片,其特征在于,所述机器学习芯片包括:
如条款H10所述的机器学习运算装置或如条款H11所述的组合处理装置。
条款H13、一种电子设备,其特征在于,所述电子设备包括:
如条款H12所述的机器学习芯片。
条款H14、一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如条款H12所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款H15、一种激活指令处理方法,其特征在于,所述方法应用于激活指令处理装置,所述方法包括:
利用控制模块对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据和目标地址;
利用运算模块对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款H16、根据条款H15所述的方法,其特征在于,所述方法还包括:
根据所述操作码和/或所述操作域获取激活参数表;
其中,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
根据所述激活参数表对所述待运算数据进行激活运算,得到运算结果,
其中,所述激活参数表包括激活表和常数表。
条款H17、根据条款H15所述的方法,其特征在于,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
利用多个激活运算器对所述待运算数据进行激活运算。
条款H18、根据条款H15所述的方法,其特征在于,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
其中,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
利用所述主运算子模块中的多个激活运算器对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款H19、根据条款H15所述的方法,其特征在于,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据、激活表、常数表和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述待运算数据。
条款H20、根据条款H15所述的方法,其特征在于,所述方法还包括:
存储所述待运算数据。
条款H21、根据条款H15所述的方法,其特征在于,利用控制模块对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,包括:
存储所述激活指令;
对所述激活指令进行解析,得到所述激活指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述激活指令。
条款H22、根据条款H21所述的方法,其特征在于,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款H23、根据条款H15至条款H22任一项所述的方法,其特征在于,所述激活运算所利用的激活函数包括以下至少一种:
线性整流函数、S型生长曲线函数、双曲正切函数、带泄露线性整流函数、取最大值函数和幂函数。
图2-1示出根据本公开一实施例的线性整流函数激活指令处理装置的框图。如图2-1所示,该装置包括控制模块6-11和运算模块6-12。
控制模块6-11,用于对获取到的线性整流函数激活指令进行解析,得到线性整流函数激活指令的操作码和操作域,并根据操作码和操作域获取执行线性整流函数激活指令所需的待运算数据和目标地址。
其中,操作码用于指示线性整流函数激活指令对数据所进行的激活运算为线性整流函数激活运算。操作域包括待运算数据地址和目标地址。
运算模块6-12,用于对待运算数据进行线性整流函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在本实施例中,,控制模块可以从待运算数据地址中获得待运算数据。控制模块可以根据线性整流函数激活指令的操作码确定进行线性整流函数激活运算所需的数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,如对应的地址等,执行对应的指令所需的所有数据包括待运算数据等数据以及对应的运算方法等等。对于一个线性整流函数激活指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对线性整流函数激活指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收线性整流函数激活指令,并控制一个或多个处理模块进行线性整流函数激活运算。在装置包括多个控制模块时,多个控制模块可以分别接收线性整流函数激活指令,并控制对应的一个或多个处理模块进行线性整流函数激活运算。
本公开实施例提供一种线性整流函数激活指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的线性整流函数激活指令进行解析,得到线性整流函数激活指令的操作码和操作域,并根据操作码和操作域获取执行线性整流函数激活指令所需的待运算数据和目标地址;运算模块用于对待运算数据进行线性整流函数激活运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的线性整流函数激活指令处理装置的适用范围广,对线性整流函数激活指令的处理效率高、处理速度快,进行线性整流函数激活运算的处理效率高、处理速度快。
在一种可能的实现方式中,控制模块6-11还可以用于根据操作码和/或操作域获取线性整流激活函数参数表。
运算模块6-12,还可以用于根据线性整流激活函数参数表对待运算数据进行线性整流函数激活运算,得到运算结果。
其中,线性整流激活函数参数表可以包括线性整流激活函数激活表和线性整流激活函数常数表。
在该实现方式中,操作域中可以包括线性整流激活函数参数表地址,以便于控制模块从线性整流激活函数参数表地址中获取线性整流激活函数参数表地址。或者,控制模块可以根据操作码确定执行该线性整流函数激活指令需要线性整流激活函数参数表时,可以直接从预先确定的线性整流激活函数参数表的存储地址获取线性整流激活函数参数表。再或者,控制模块可以根据操作码确定执行该线性整流函数激活指令需要线性整流激活函数参数表时,可以直接从预先确定的参数表的存储地址获取对应该线性整流函数激活指令的线性整流激活函数参数表。本领域技术人员可以根据实际需要对线性整流激活函数参数表的获取方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,控制模块还可以获取对应于线性整流函数激活指令的激活函数,使得运算模块可以根据激活函数以及对应的运算器,对待运算数据进行线性整流函数激活运算。
需要说明的是,本领域技术人员可以根据实际需要对实现运算模块实现线性整流函数激活运算的方式进行设置,本公开对此不作限制。
图2-2a示出根据本公开一实施例的线性整流函数激活指令处理装置的框图。在一种可能的实现方式中,如图2-2a所示,运算模块6-12可以包括多个激活运算器6-120。多个激活运算器6-120用于对待运算数据进行线性整流函数激活运算。
在该实现方式中,运算模块也可以包括一个激活运算器。可以根据所需进行的线性整流函数激活运算的数据量的大小、对线性整流函数激活运算的处理速度、效率等要求对激活运算器的数量进行设置,本公开对此不作限制。
图2-2b示出根据本公开一实施例的线性整流函数激活指令处理装置的框图。在一种可能的实现方式中,如图2-2b所示,运算模块6-12可以包括主运算子模块6-121和多个从运算子模块6-122,主运算子模块6-121包括多个激活运算器6-120(图中未示出)。
主运算子模块6-121,用于利用多个激活运算器对待运算数据进行线性整流函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块6-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量可以小于或等于读入量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量可以小于或等于默认读入量。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该线性整流函数激活指令。
在一种可能的实现方式中,如图2-2a、图2-2b所示,该装置还可以包括存储模块6-13。存储模块6-13用于存储待运算数据。存储模块6-13还可以用于存储线性整流激活函数参数表。
在该实现方式中,存储模块可以包括内存,如缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待运算数据和线性整流激活函数参数表存储在存储模块的缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,线性整流函数激活指令的指令格式可以是:
active.relu dst,src0,size
其中,active.relu是线性整流函数激活指令的操作码,dst、src0、size是线性整流函数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,src1是线性整流激活函数参数表地址,size是读入量。
在一种可能的实现方式中,线性整流函数激活指令的指令格式可以是:
active.relu dst src0 src1 size
其中,active.relu是线性整流函数激活指令的操作码,dst、src0、src1、size是线性整流函数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,src1是线性整流激活函数参数表地址,size是读入量。
应当理解的是,本领域技术人员可以根据需要对线性整流函数激活指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了线性整流函数激活指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用线性整流函数激活指令处理装置进行激活运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解线性整流函数激活指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图2-3示出根据本公开一实施例的线性整流函数激活指令处理装置的应用场景的示意图。如图2-3所示,线性整流函数激活指令处理装置对线性整流函数激活指令进行处理的过程如下:
如图2-3所示,控制模块6-11对获取到的线性整流函数激活指令1(如线性整流函数激活指令1为active.relu 500 100 64)进行解析,得到线性整流函数激活指令1的操作码和操作域。其中,线性整流函数激活指令1的操作码为active.relu,目标地址为500,待运算数据地址为100,读入量为64。控制模块6-11从待运算数据地址100中获取数据量为64(读入量)的待运算数据。假定需要根据线性整流激活函数参数表进行激活运算,那么控制模块6-11还需获取线性整流激活函数参数表(具体实现过程参见上文描述)。
运算模块6-12根据线性整流激活函数参数表对待运算数据进行线性整流函数激活运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,线性整流函数激活指令处理装置可以高效、快速地对线性整流函数激活指令进行处理,实现线性整流函数激活运算的高效、快速处理。
图2-4示出根据本公开一实施例的线性整流函数激活指令处理方法的流程图。如图2-4所示,该方法应用于上述线性整流函数激活指令处理装置,该方法包括步骤S51-6和步骤S52-6。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-6和步骤S52-6。
在步骤S51-6中,利用控制模块对获取到的线性整流函数激活指令进行解析,得到线性整流函数激活指令的操作码和操作域,并根据操作码和操作域获取执行线性整流函数激活指令所需的待运算数据和目标地址。其中,操作码用于指示线性整流函数激活指令对数据所进行的激活运算为线性整流函数激活运算,操作域包括待运算数据地址和目标地址。
在步骤S52-6中,利用运算模块对待运算数据进行线性整流函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:
根据操作码和/或操作域获取线性整流激活函数参数表;
其中,利用运算模块对待运算数据进行线性整流函数激活运算,得到运算结果,包括:根据线性整流激活函数参数表对待运算数据进行线性整流函数激活运算,得到运算结果。其中,线性整流激活函数参数表可以包括线性整流激活函数激活表和线性整流激活函数常数表。
在一种可能的实现方式中,利用运算模块根据线性整流激活函数参数表对待运算数据进行线性整流函数激活运算,得到运算结果,可以包括:
利用多个激活运算器对待运算数据进行线性整流函数激活运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括多个激活运算器。
其中,利用运算模块对待运算数据进行激活运算,得到运算结果,可以包括:
利用所述主运算子模块中的多个激活运算器对待运算数据进行线性整流函数激活运算,得到运算结果。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,根据操作码和操作域获取执行线性整流函数激活指令所需的待运算数据和目标地址,可以包括:
获取读入量,并按照读入量获取待运算数据。
在一种可能的实现方式中,该方法还可以包括:存储待运算数据。
在一种可能的实现方式中,利用控制模块对获取到的线性整流函数激活指令进行解析,得到线性整流函数激活指令的操作码和操作域,可以包括:
存储线性整流函数激活指令;
对线性整流函数激活指令进行解析,得到线性整流函数激活指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括线性整流函数激活指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了线性整流函数激活指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的线性整流函数激活指令处理方法的适用范围广,对线性整流函数激活指令的处理效率高、处理速度快,进行线性整流函数激活运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款F1、一种线性整流函数激活指令处理装置,所述装置包括:
控制模块,用于对获取到的线性整流函数激活指令进行解析,得到所述线性整流函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述线性整流函数激活指令所需的待运算数据和目标地址;
运算模块,用于对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述线性整流函数激活指令对数据所进行的激活运算为线性整流函数激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款F2、根据条款F1所述的装置,
所述控制模块,还用于根据所述操作码和/或所述操作域获取线性整流激活函数参数表;
所述运算模块,还用于根据所述线性整流激活函数参数表对所述待运算数据进行线性整流函数激活运算,得到运算结果,
其中,所述线性整流激活函数参数表包括线性整流激活函数激活表和线性整流激活函数常数表。
条款F3、根据条款F1所述的装置,所述运算模块,包括:
多个激活运算器,用于对所述待运算数据进行线性整流函数激活运算。
条款F4、根据条款F3所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
所述主运算子模块,用于利用所述多个激活运算器对所述待运算数据进行线性整流函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款F5、根据条款F1所述的装置,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述待运算数据。
条款F6、根据条款F1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据和所述线性整流激活函数参数表。
条款F7、根据条款F1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述线性整流函数激活指令;
指令处理子模块,用于对所述线性整流函数激活指令进行解析,得到所述线性整流函数激活指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述线性整流函数激活指令。
条款F8、根据条款F7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款F9、一种机器学习运算装置,所述装置包括:
一个或多个如条款F1-条款F8任一项所述的线性整流函数激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述线性整流函数激活指令处理装置时,多个所述线性整流函数激活指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述线性整流函数激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述线性整流函数激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述线性整流函数激活指令处理装置共享内存或者拥有各自的内存;多个所述线性整流函数激活指令处理装置的互联方式是任意互联拓扑。
条款F10、一种组合处理装置,所述组合处理装置包括:
如条款F9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款F11、一种机器学习芯片,所述机器学习芯片包括:
如条款F9所述的机器学习运算装置或如条款F10所述的组合处理装置。
条款F12、一种电子设备,所述电子设备包括:
如条款F11所述的机器学习芯片。
条款F13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款F11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款F14、一种线性整流函数激活指令处理方法,所述方法应用于线性整流函数激活指令处理装置,所述方法包括:
利用控制模块对获取到的线性整流函数激活指令进行解析,得到所述线性整流函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述线性整流函数激活指令所需的待运算数据和目标地址;
利用运算模块对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述线性整流函数激活指令对数据所进行的激活运算为线性整流函数激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款F15、根据条款F14所述的方法,所述方法还包括:
根据所述操作码和/或所述操作域获取线性整流激活函数参数表;
其中,利用运算模块对所述待运算数据进行线性整流函数激活运算,得到运算结果,包括:
根据所述线性整流激活函数参数表对所述待运算数据进行线性整流函数激活运算,得到运算结果,
其中,所述线性整流激活函数参数表包括线性整流激活函数激活表和线性整流激活函数常数表。
条款F16、根据条款F14所述的方法,利用运算模块对所述待运算数据进行线性整流函数激活运算,得到运算结果,包括:
利用多个激活运算器对所述待运算数据进行线性整流函数激活运算。
条款F17、根据条款F16所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
其中,利用运算模块对所述待运算数据进行线性整流函数激活运算,得到运算结果,包括:
利用所述主运算子模块中的多个激活运算器对所述待运算数据进行线性整流函数激活运算,得到运算结果。
条款F18、根据条款F14所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述线性整流函数激活指令所需的待运算数据和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述待运算数据。
条款F19、根据条款F14所述的方法,所述方法还包括:
存储所述待运算数据。
条款F20、根据条款F14所述的方法,利用控制模块对获取到的线性整流函数激活指令进行解析,得到所述线性整流函数激活指令的操作码和操作域,包括:
存储所述线性整流函数激活指令;
对所述线性整流函数激活指令进行解析,得到所述线性整流函数激活指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述线性整流函数激活指令。
条款F21、根据条款F20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
图3-1示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的框图。如图3-1所示,该装置包括控制模块7-11和运算模块7-12。
控制模块7-11,用于对获取到的S型生长曲线函数激活指令进行解析,得到S型生长曲线函数激活指令的操作码和操作域,并根据操作码和操作域获取执行S型生长曲线函数激活指令所需的待运算数据和目标地址。其中,操作码用于指示S型生长曲线函数激活指令对数据所进行的激活运算为S型生长曲线函数激活运算。操作域包括待运算数据地址和目标地址。
运算模块7-12,用于对待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址中获得待运算数据。控制模块可以根据S型生长曲线函数激活指令的操作码确定进行S型生长曲线函数激活运算所需的数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,如对应的地址等。执行对应的指令所需的所有数据包括待运算数据、等数据以及对应的运算方法等等。对于一个S型生长曲线函数激活指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对S型生长曲线函数激活指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收S型生长曲线函数激活指令,并控制一个或多个处理模块进行S型生长曲线函数激活运算。在装置包括多个控制模块时,多个控制模块可以分别接收S型生长曲线函数激活指令,并控制对应的一个或多个处理模块进行S型生长曲线函数激活运算。
本公开实施例提供一种S型生长曲线函数激活指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的S型生长曲线函数激活指令进行解析,得到S型生长曲线函数激活指令的操作码和操作域,并根据操作码和操作域获取执行S型生长曲线函数激活指令所需的待运算数据和目标地址;运算模块用于对待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的S型生长曲线函数激活指令处理装置的适用范围广,对S型生长曲线函数激活指令的处理效率高、处理速度快,进行S型生长曲线函数激活运算的处理效率高、处理速度快。
在一种可能的实现方式中,控制模块7-11,还可以用于根据操作码和/或操作域获取S型生长曲线激活函数参数表.
运算模块,还可以用于根据S型生长曲线激活函数参数表对待运算数据进行S型生长曲线函数激活运算,得到运算结果。
其中,S型生长曲线激活函数参数表可以包括S型生长曲线激活函数激活表和S型生长曲线激活函数常数表。
在该实现方式中,操作域中可以包括S型生长曲线激活函数参数表地址,以便于控制模块从S型生长曲线激活函数参数表地址中获取S型生长曲线激活函数参数表地址。或者,控制模块可以根据操作码确定执行该S型生长曲线函数激活指令需要S型生长曲线激活函数参数表时,可以直接从预先确定的S型生长曲线激活函数参数表的存储地址获取S型生长曲线激活函数参数表。再或者,控制模块可以根据操作码确定执行该S型生长曲线函数激活指令需要S型生长曲线激活函数参数表时,可以直接从预先确定的参数表的存储地址获取对应该S型生长曲线函数激活指令的S型生长曲线激活函数参数表。本领域技术人员可以根据实际需要对S型生长曲线激活函数参数表的获取方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,控制模块还可以获取对应于S型生长曲线函数激活指令的激活函数,使得运算模块可以根据激活函数以及对应的运算器,对待运算数据进行S型生长曲线函数激活运算。
需要说明的是,本领域技术人员可以根据实际需要对实现运算模块实现S型生长曲线函数激活运算的方式进行设置,本公开对此不作限制。
图3-2a示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的框图。在一种可能的实现方式中,如图3-2a所示,运算模块7-12可以包括多个激活运算器7-120。多个激活运算器7-120用于对待运算数据进行S型生长曲线函数激活运算。
在该实现方式中,运算模块也可以包括一个激活运算器。可以根据所需进行的S型生长曲线函数激活运算的数据量的大小、对S型生长曲线函数激活运算的处理速度、效率等要求对激活运算器的数量进行设置,本公开对此不作限制。
图3-2b示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的框图。在一种可能的实现方式中,如图3-2b所示,运算模块7-12可以包括主运算子模块7-121和多个从运算子模块7-122,主运算子模块7-121包括多个激活运算器7-120(图中未示出)。
主运算子模块7-121,用于利用多个激活运算器对待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块7-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量可以小于或等于读入量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量可以小于或等于默认读入量。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该S型生长曲线函数激活指令。
在一种可能的实现方式中,如图3-2a、图3-2b所示,该装置还可以包括存储模块7-13。存储模块7-13用于存储待运算数据。存储模块7-13还可以用于存储S型生长曲线激活函数参数表。
在该实现方式中,存储模块可以包括内存,如缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待运算数据和S型生长曲线激活函数参数表存储在存储模块缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,S型生长曲线函数激活指令的指令格式可以是:
active.sigmoid dst src0 size
其中,active.sigmoid是S型生长曲线函数激活指令的操作码,dst、src0、size是S型生长曲线函 数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,size是读入量。
在一种可能的实现方式中,S型生长曲线函数激活指令的指令格式可以是:
active.sigmoid dst src0 src1 size
其中,active.sigmoid是S型生长曲线函数激活指令的操作码,dst、src0、src1、size是S型生长曲线函数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,src1是S型生长曲线激活函数参数表地址,size是读入量。
应当理解的是,本领域技术人员可以根据需要对S型生长曲线函数激活指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了S型生长曲线函数激活指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用S型生长曲线函数激活指令处理装置进行激活运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解S型生长曲线函数激活指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图3-3示出根据本公开一实施例的S型生长曲线函数激活指令处理装置的应用场景的示意图。如图3-3所示,S型生长曲线函数激活指令处理装置对S型生长曲线函数激活指令进行处理的过程如下:
控制模块7-11对获取到的S型生长曲线函数激活指令1(如S型生长曲线函数激活指令1为active.sigmoid 500 100 64)进行解析,得到S型生长曲线函数激活指令1的操作码和操作域。其中,S型生长曲线函数激活指令1的操作码为active.sigmoid,目标地址为500,待运算数据地址为100,读入量为64。控制模块7-11从待运算数据地址100中获取数据量为64(读入量)的待运算数据。假定需要根据S型生长曲线激活函数参数表进行激活运算,那么控制模块7-11还需获取S型生长曲线激活函数参数表(具体实现过程参见上文描述)。
运算模块7-12根据S型生长曲线激活函数参数表对待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,S型生长曲线函数激活指令处理装置可以高效、快速地对S型生长曲线函数激活指令进行处理,进行S型生长曲线函数激活运算的处理效率高、处理速度快。
图3-4示出根据本公开一实施例的S型生长曲线函数激活指令处理方法的流程图。如图3-4所示,该方法应用于上述S型生长曲线函数激活指令处理装置,该方法包括步骤S51-7和步骤S52-7。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-7和步骤S52-7。
在步骤S51-7中,利用控制模块对获取到的S型生长曲线函数激活指令进行解析,得到S型生长曲线函数激活指令的操作码和操作域,并根据操作码和操作域获取执行S型生长曲线函数激活指令所需的待运算数据和目标地址。其中,操作码用于指示S型生长曲线函数激活指令对数据所进行的激活运算为S型生长曲线函数激活运算,操作域包括待运算数据地址和目标地址。
在步骤S52-7中,利用运算模块对待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:
根据操作码和/或操作域获取S型生长曲线激活函数参数表;
其中,利用运算模块对待运算数据进行S型生长曲线函数激活运算,得到运算结果,包括:
根据S型生长曲线激活函数参数表对待运算数据进行S型生长曲线函数激活运算,得到运算结果,
其中,S型生长曲线激活函数参数表包括S型生长曲线激活函数激活表和S型生长曲线激活函数常数表。
在一种可能的实现方式中,利用运算模块对待运算数据进行S型生长曲线函数激活运算,得到运算结果,可以包括:
利用多个激活运算器对待运算数据进行S型生长曲线函数激活运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括多个激活运算器。
其中,利用运算模块对待运算数据进行S型生长曲线函数激活运算,得到运算结果,可以包括:利用主运算子模块中的多个激活运算器进行S型生长曲线函数激活运算,得到运算结果。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,根据操作码和操作域获取执行S型生长曲线函数激活指令所需的待运算数据和目标地址,可以包括:
获取读入量,并按照读入量获取待运算数据。
在一种可能的实现方式中,该方法还可以包括:存储待运算数据。
在一种可能的实现方式中,利用控制模块对获取到的S型生长曲线函数激活指令进行解析,得到S型生长曲线函数激活指令的操作码和操作域,可以包括:
存储S型生长曲线函数激活指令;
对S型生长曲线函数激活指令进行解析,得到S型生长曲线函数激活指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括S型生长曲线函数激活指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了S型生长曲线函数激活指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的S型生长曲线函数激活指令处理方法的适用范围广,对S型生长曲线函数激活指令的处理效率高、处理速度快,进行S型生长曲线函数激活运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款G1、一种S型生长曲线函数激活指令处理装置,所述装置包括:
控制模块,用于对获取到的S型生长曲线函数激活指令进行解析,得到所述S型生长曲线函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述S型生长曲线函数激活指令所需的待运算数据和目标地址;
运算模块,用于对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述S型生长曲线函数激活指令对数据所进行的激活运算为S型生长曲线函数激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款G2、根据条款G1所述的装置,
所述控制模块,还用于根据所述操作码和/或所述操作域获取S型生长曲线激活函数参数表;
所述运算模块,还用于根据所述S型生长曲线激活函数参数表对所述待运算数据进行S型生长 曲线函数激活运算,得到运算结果,
其中,所述S型生长曲线激活函数参数表包括S型生长曲线激活函数激活表和S型生长曲线激活函数常数表。
条款G3、根据条款G1所述的装置,所述运算模块,包括:
多个激活运算器,用于对所述待运算数据进行S型生长曲线函数激活运算。
条款G4、根据条款G3所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
所述主运算子模块,用于利用所述多个激活运算器对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款G5、根据条款G1所述的装置,所述操作域包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述待运算数据。
条款G6、根据条款G1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据。
条款G7、根据条款G1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述S型生长曲线函数激活指令;
指令处理子模块,用于对所述S型生长曲线函数激活指令进行解析,得到所述S型生长曲线函数激活指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述S型生长曲线函数激活指令。
条款G8、根据条款G7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款G9、一种机器学习运算装置,所述装置包括:
一个或多个如条款G1-条款G8任一项所述的S型生长曲线函数激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述S型生长曲线函数激活指令处理装置时,多个所述S型生长曲线函数激活指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述S型生长曲线函数激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述S型生长曲线函数激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述S型生长曲线函数激活指令处理装置共享内存或者拥有各自的内存;多个所述S型生长曲线函数激活指令处理装置的互联方式是任意互联拓扑。
条款G10、一种组合处理装置,所述组合处理装置包括:
如条款G9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款G11、一种机器学习芯片,所述机器学习芯片包括:
如条款G9所述的机器学习运算装置或如条款G10所述的组合处理装置。
条款G12、一种电子设备,所述电子设备包括:
如条款G11所述的机器学习芯片。
条款G13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款G11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款G14、一种S型生长曲线函数激活指令处理方法,所述方法应用于S型生长曲线函数激活指令处理装置,所述方法包括:
利用控制模块对获取到的S型生长曲线函数激活指令进行解析,得到所述S型生长曲线函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述S型生长曲线函数激活指令所需的待运算数据和目标地址;
利用运算模块对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述S型生长曲线函数激活指令对数据所进行的激活运算为S型生长曲线函数激活运算,所述操作域包括待运算数据地址、S型生长曲线激活函数参数表地址和所述目标地址。
条款G15、根据条款G14所述的方法,所述方法还包括:
根据所述操作码和/或所述操作域获取S型生长曲线激活函数参数表;
其中,利用运算模块对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,包括:
根据所述S型生长曲线激活函数参数表对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,
其中,所述S型生长曲线激活函数参数表包括S型生长曲线激活函数激活表和S型生长曲线激活函数常数表。
条款G16、根据条款G14所述的方法,利用运算模块对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,包括:
利用多个激活运算器对所述待运算数据进行S型生长曲线函数激活运算。
条款G17、根据条款G16所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
其中,利用运算模块对所述待运算数据进行S型生长曲线函数激活运算,得到运算结果,包括:
利用所述主运算子模块中的多个激活运算器进行S型生长曲线函数激活运算,得到运算结果。
条款G18、根据条款G14所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述S型生长曲线函数激活指令所需的待运算数据和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述待运算数据。
条款G19、根据条款G14所述的方法,所述方法还包括:
存储所述待运算数据。
条款G20、根据条款G14所述的方法,利用控制模块对获取到的S型生长曲线函数激活指令进行解析,得到所述S型生长曲线函数激活指令的操作码和操作域,包括:
存储所述S型生长曲线函数激活指令;
对所述S型生长曲线函数激活指令进行解析,得到所述S型生长曲线函数激活指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述S型生长曲线函数激活指令。
条款G21、根据条款G20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
图4-1示出根据本公开一实施例的指数函数激活指令处理装置的框图。如图4-1所示,该装置包括控制模块12-11和运算模块12-12。
控制模块12-11,用于对获取到的指数函数激活指令进行解析,得到指数函数激活指令的操作码和操作域,并根据操作码和操作域获取执行指数函数激活指令所需的待运算数据和目标地址。
其中,操作码用于指示指数函数激活指令对数据所进行的激活运算为指数函数激活运算。操作域包括待运算数据地址和目标地址。
运算模块12-12,用于对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址中获得待运算数据。控制模块可以根据指数函数激活指令的操作码确定进行指数函数激活运算所需的数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,如对应的地址等,执行对应的指令所需的所有数据包括待运算数据等数据以及对应的运算方法等等。对于一个指数函数激活指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对指数函数激活指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收指数函数激活指令,并控制一个或多个处理模块进行线性整流函数激活运算。在装置包括多个控制模块时,多个控制模块可以分别接收指数函数激活指令,并控制对应的一个或多个处理模块进行指数函数激活运算。
本公开实施例提供一种指数函数激活指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的指数函数激活指令进行解析,得到指数函数激活指令的操作码和操作域,并根据操作码和操作域获取执行指数函数激活指令所需的待运算数据和目标地址;运算模块用于对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的指数函数激活指令处理装置的适用范围广,对指数函数激活指令的处理效率高、处理速度快,进行指数函数激活运算的处理效率高、处理速度快。
在一种可能的实现方式中,控制模块12-11,还可以用于根据操作码和/或操作域获取指数激活函数参数表。
运算模块12-12,还可以用于根据指数激活函数参数表对待运算数据进行指数函数激活运算,得到运算结果,
其中,指数激活函数参数表可以包括指数激活函数激活表和指数激活函数常数表。
在该实现方式中,操作域中可以包括指数激活函数参数表地址,以便于控制模块从指数激活函数参数表地址中获取指数激活函数参数表地址。或者,控制模块可以根据操作码确定执行该指数函数激活指令需要指数激活函数参数表时,可以直接从预先确定的指数激活函数参数表的存储地址获取指数激活函数参数表。再或者,控制模块可以根据操作码确定执行该指数函数激活指令需要指数 激活函数参数表时,可以直接从预先确定的参数表的存储地址获取对应该指数函数激活指令的指数激活函数参数表。本领域技术人员可以根据实际需要对指数激活函数参数表的获取方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,控制模块还可以获取对应于指数函数激活指令的激活函数,使得运算模块可以根据激活函数以及对应的运算器,对待运算数据进行线性整流函数激活运算。
需要说明的是,本领域技术人员可以根据实际需要对实现运算模块实现线性整流函数激活运算的方式进行设置,本公开对此不作限制。
图4-2a示出根据本公开一实施例的指数函数激活指令处理装置的框图。在一种可能的实现方式中,如图4-2a所示,运算模块12-12可以包括多个激活运算器12-120。多个激活运算器12-120用于对待运算数据进行指数函数激活运算。
在该实现方式中,运算模块也可以包括一个激活运算器。可以根据所需进行的指数函数激活运算的数据量的大小、对指数函数激活运算的处理速度、效率等要求对激活运算器的数量进行设置,本公开对此不作限制。
图4-2b示出根据本公开一实施例的指数函数激活指令处理装置的框图。在一种可能的实现方式中,如图4-2b所示,运算模块12-12可以包括主运算子模块12-121和多个从运算子模块12-122,主运算子模块12-121包括多个激活运算器12-120(图中未示出)。
主运算子模块12-121,用于利用多个激活运算器对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块12-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量可以小于或等于读入量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量可以小于或等于默认读入量。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该指数函数激活指令。
在一种可能的实现方式中,如图4-2a、图4-2b所示,该装置还可以包括存储模块12-13。存储模块12-13用于存储待运算数据。存储模块12-13还可以用于存储指数激活函数参数表。
在该实现方式中,存储模块可以包括内存,如缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待运算数据和指数激活函数参数表存储在存储模块的缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,指数函数激活指令的指令格式可以是:
active.exps dst src0 size
其中,active.exps是指数函数激活指令的操作码,dst、src0、size是指数函数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,size是读入量。
在一种可能的实现方式中,指数函数激活指令的指令格式还可以是:
active.exps dst src0 src1 size
其中,active.exps是指数函数激活指令的操作码,dst、src0、size是指数函数激活指令的操作域。其中,dst是目标地址,src0是待运算数据地址,src1是指数激活函数参数表地址,size是读入量。
应当理解的是,本领域技术人员可以根据需要对指数函数激活指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了指数函数激活指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用指数函数激活指令处理装置进行激活运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解指数函数激活指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图4-3示出根据本公开一实施例的指数函数激活指令处理装置的应用场景的示意图。如图4-3所示,指数函数激活指令处理装置对指数函数激活指令进行处理的过程如下:
如图4-3所示,控制模块12-11对获取到的指数函数激活指令1(如指数函数激活指令1为active.exps 500 100 64)进行解析,得到指数函数激活指令1的操作码和操作域。其中,指数函数激活指令1的操作码为active.exps,目标地址为500,待运算数据地址为100,读入量为64。控制模块12-11从待运算数据地址100中获取数据量为64(读入量)的待运算数据。假定需要根据指数激活函数参数表进行激活运算,那么控制模块12-11还需获取指数激活函数参数表(具体实现过程参见上文描述)。
运算模块12-12根据指数激活函数参数表对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,指数函数激活指令处理装置可以高效、快速地对指数函数激活指令进行处理,实现指数函数激活运算的高效、快速处理。
图4-4示出根据本公开一实施例的指数函数激活指令处理方法的流程图。如图4-4所示,该方法应用于上述指数函数激活指令处理装置,该方法包括步骤S51-12和步骤S52-12。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-12和步骤S52-12。
在步骤S51-12中,利用控制模块对获取到的指数函数激活指令进行解析,得到指数函数激活指令的操作码和操作域,并根据操作码和操作域获取执行指数函数激活指令所需的待运算数据和目标地址。其中,操作码用于指示指数函数激活指令对数据所进行的激活运算为指数函数激活运算操作域包括待运算数据地址和目标地址。
在步骤S52-12中,利用运算模块对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:
根据操作码和/或操作域获取指数激活函数参数表;
其中,利用运算模块对待运算数据进行指数函数激活运算,得到运算结果,可以包括:
根据指数激活函数参数表对待运算数据进行指数函数激活运算,得到运算结果,
其中,指数激活函数参数表可以包括指数激活函数激活表和指数激活函数常数表。
在一种可能的实现方式中,利用运算模块对待运算数据进行指数函数激活运算,得到运算结果,可以包括:利用多个激活运算器对待运算数据进行指数函数激活运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括多个激活运算器,
其中,利用运算模块对待运算数据进行指数函数激活运算,得到运算结果,可以包括:
利用主运算子模块中的多个激活运算器对待运算数据进行指数函数激活运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,根据操作码和操作域获取执行指数函数激活指令所需的待运算数据和目标地址,可以包括:
获取读入量,并按照读入量获取待运算数据。
在一种可能的实现方式中,该方法还可以包括:存储待运算数据。
在一种可能的实现方式中,利用控制模块对获取到的指数函数激活指令进行解析,得到指数函数激活指令的操作码和操作域,可以包括:
存储指数函数激活指令;
对指数函数激活指令进行解析,得到指数函数激活指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括指数函数激活指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了指数函数激活指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的指数函数激活指令处理方法的适用范围广,对指数函数激活指令的处理效率高、处理速度快,进行指数函数激活运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款L1、一种指数函数激活指令处理装置,所述装置包括:
控制模块,用于对获取到的指数函数激活指令进行解析,得到所述指数函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述指数函数激活指令所需的待运算数据和目标地址;
运算模块,用于对所述待运算数据进行指数函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述指数函数激活指令对数据所进行的激活运算为指数函数激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款L2、根据条款L1所述的装置,
所述控制模块,还用于根据所述操作码和/或所述操作域获取指数激活函数参数表;
所述运算模块,还用于根据所述指数激活函数参数表对所述待运算数据进行指数函数激活运算,得到运算结果,
其中,所述指数激活函数参数表包括指数激活函数激活表和指数激活函数常数表。
条款L3、根据条款L1所述的装置,所述运算模块,包括:
多个激活运算器,用于对所述待运算数据进行指数函数激活运算。
条款L4、根据条款L3所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
所述主运算子模块,用于利用所述多个激活运算器对所述待运算数据进行指数函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款L5、根据条款L1所述的装置,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述待运算数据。
条款L6、根据条款L1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据。
条款L7、根据条款L1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述指数函数激活指令;
指令处理子模块,用于对所述指数函数激活指令进行解析,得到所述指数函数激活指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述指数函数激活指令。
条款L8、根据条款L7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款L9、一种机器学习运算装置,所述装置包括:
一个或多个如条款L1-条款L8任一项所述的指数函数激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述指数函数激活指令处理装置时,多个所述指数函数激活指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述指数函数激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述指数函数激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述指数函数激活指令处理装置共享内存或者拥有各自的内存;多个所述指数函数激活指令处理装置的互联方式是任意互联拓扑。
条款L10、一种组合处理装置,所述组合处理装置包括:
如条款L9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款L11、一种机器学习芯片,所述机器学习芯片包括:
如条款L9所述的机器学习运算装置或如条款L10所述的组合处理装置。
条款L12、一种电子设备,所述电子设备包括:
如条款L11所述的机器学习芯片。
条款L13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款L11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款L14、一种指数函数激活指令处理方法,所述方法应用于指数函数激活指令处理装置,所述方法包括:
利用控制模块对获取到的指数函数激活指令进行解析,得到所述指数函数激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述指数函数激活指令所需的待运算数据和目标地址;
利用运算模块对所述待运算数据进行指数函数激活运算,得到运算结果,并将所述运算结果存 入所述目标地址中,
其中,所述操作码用于指示所述指数函数激活指令对数据所进行的激活运算为指数函数激活运算,所述操作域包括待运算数据地址和所述目标地址。
条款L15、根据条款L14所述的方法,所述方法还包括:
根据所述操作码和/或所述操作域获取指数激活函数参数表;
其中,利用运算模块对所述待运算数据进行指数函数激活运算,得到运算结果,包括:
根据所述指数激活函数参数表对所述待运算数据进行指数函数激活运算,得到运算结果,
其中,所述指数激活函数参数表包括指数激活函数激活表和指数激活函数常数表。
条款L16、根据条款L14所述的方法,利用运算模块对所述待运算数据进行指数函数激活运算,得到运算结果,包括:
利用多个激活运算器对所述待运算数据进行指数函数激活运算。
条款L17、根据条款L16所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
其中,利用运算模块对所述待运算数据进行指数函数激活运算,得到运算结果,包括:
利用所述主运算子模块中的多个激活运算器对所述待运算数据进行指数函数激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款L18、根据条款L14所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述指数函数激活指令所需的待运算数据和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述待运算数据。
条款L19、根据条款L14所述的方法,所述方法还包括:
存储所述待运算数据。
条款L20、根据条款L14所述的方法,利用控制模块对获取到的指数函数激活指令进行解析,得到所述指数函数激活指令的操作码和操作域,包括:
存储所述指数函数激活指令;
对所述指数函数激活指令进行解析,得到所述指数函数激活指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述指数函数激活指令。
条款L21、根据条款L20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。选择运算是一种依据选择条件对数据进行选择的处理操作。由于编程语言的种类多样,在不同的语言环境下,为实现选择运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的选择指令,技术人员需要自定义对应其编程语言环境的多条指令来实现选择运算,导致进行选择运算效率低、速度慢。本公开提供一种选择指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现选择运算,能够显著提高进行选择运算的效率和速度。
图5-1示出根据本公开一实施例的选择指令处理装置的框图。如图5-1所示,该装置包括控制模块1-11和运算模块1-12。
控制模块1-11,用于对获取到的选择指令进行解析,得到选择指令的操作码和操作域,并根据操作码和操作域获取执行选择指令所需的多个索引数据、多个待运算数据和目标地址。其中,操作码用于指示选择指令对数据所进行的运算为选择运算,操作域包括待运算数据地址、索引数据地址和目标地址。
运算模块1-12,用于依次判断多个索引数据是否满足存储条件,并在索引数据满足存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址和索引数据地址中分别获取多个待运算数据和多个索引数据。控制模块可以通过数据输入输出单元获得选择指令、多个待运算数据和多个索引数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,如对应的地址等,执行对应的指令所需的所有数据包括参数数据、待运算数据、对应的运算方法等等。对于一个选择指令其必须包括操作码和操作域,其中操作域至少包括待运算数据地址、索引数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对选择指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收选择指令,并控制一个或多个运算模块进行选择运算。在装置包括多个控制模块时,多个控制模块可以分别接收选择指令,并控制对应的一个或多个运算模块进行选择运算。
本公开实施例所提供的选择指令处理装置,该装置包括控制模块和运算模块。控制模块用于对获取到的选择指令进行解析,得到选择指令的操作码和操作域,并根据操作码和操作域获取执行选择指令所需的多个索引数据、多个待运算数据和目标地址。运算模块用于依次判断多个索引数据是否满足存储条件,并在索引数据满足存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中。本公开实施例所提供的选择指令处理装置的适用范围广,对选择指令的处理效率高、处理速度快,进行选择运算的处理效率高、处理速度快。
在一种可能的实现方式中,存储条件可以是索引数据不为零。
在该实现方式中,在索引数据不为零时,将与该不为零的索引数据相对应的待运算数据顺序存储至目标地址。存储条件还可以是索引数据不为指定数值,指定数值可以是1等数值。本领域技术人员可以根据实际需要对存储条件进行设置,本公开对此不作限制。
在该实现方式中,可以根据需要对存储条件或者索引数据进行设置,以将待运算数据中所需要的数据存储至目标地址。例如,按照不同的选择需要对待运算数据进行选择,可以设置不同的存储条件,或者,设置不同的索引数据来实现对待运算数据的不同选择。
图5-2a示出根据本公开一实施例的选择指令处理装置的框图。在一种可能的实现方式中,如图5-2a所示,运算模块1-12可以包括多个比较器1-120,用于依次判断多个索引数据是否满足存储条件。
举例来说,以存储条件为“索引数据不为0”为例,比较器可以依次将索引数据与0进行比较,确定索引数据是否满足存储条件。进而使得运算模块可以将与不为0的索引数据相对应的待运算数据顺序存入目标地址中。可以根据所需进行比较的数据量的大小、对比较的处理速度、效率等要求对比较器的数量进行设置,本公开对此不作限制。
图5-2b示出根据本公开一实施例的选择指令处理装置的框图。在一种可能的实现方式中,如图5-2b所示,运算模块1-12可以包括主运算子模块1-121和多个从运算子模块1-122。主运算子模块1-121可以包括多个比较器1-120(图中未示出)。
主运算子模块1-121,用于利用多个比较器依次判断多个索引数据是否满足存储条件,确定出与满足存储条件的索引数据相对应的待运算数据,并将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块1-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量小于或等于读入量,读入量小于或等于多个索引数据的数据量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量小于或等于默认读入量,默认读入量小于或等于多个索引数据的数据量。
在该实现方式中,多个待运算数据的数据量、多个索引数据的数据量以及目标地址能够进行数据存储的数据量,三者可以是相同的,可以都等于读入量或默认读入量。
这样,运算模块可以将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中,避免出现目标地址不够用、目标地址浪费等问题。
在一种可能的实现方式中,如图5-2a-图5-2b所示,该装置还可以包括存储模块1-13。存储模块13用于存储多个索引数据、多个待运算数据以及存储条件。
在该实现方式中,存储模块可以包括内存。如缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据和池化核,寄存器可以用于存储待运算数据中的标量数据。。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,选择指令的指令格式可以是:
select dst src0 src1 size
其中,select是选择指令的操作码,dst、src0、src1、size是选择指令的操作域。dst是目标地址,src0是待运算数据地址,src1是索引数据地址,size是读入量。
应当理解的是,本领域技术人员可以根据需要对选择指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了选择指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用选择指令处理装置进行数据选择”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解选择指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图5-3示出根据本公开一实施例的选择指令处理装置的应用场景的示意图。如图5-3所示,选择指令处理装置对选择指令进行处理的过程如下:
控制模块1-11对获取到的选择指令1(如选择指令1为select 500 100 200 5)进行解析,得到选择指令1的操作码和操作域。其中,选择指令1的操作码为select,目标地址为500,待运算数据地址为100,索引数据地址为200,读入量为5。控制模块1-11分别从待运算数据地址100和索引数据地址200中获取读入量为5的多个待运算数据和多个索引数据。
假定获得的多个待运算数据包括1、5、6、7、3。多个索引数据包括1、8、0、6和9。存储条件 为索引数据不为0。
运算模块1-12依次判断多个索引数据是否为0,并在索引数据不为0时,将与不为0的索引数据相对应的待运算数据顺序存入目标地址500中。具体地,运算模块1-12依次判断多个索引数据“1、8、0、6、9”是否不为0,由于第三个索引数据为0,则将多个待运算数据中的“1、5、7、3”依次存入目标地址500中。以上各模块的工作过程可参考上文的相关描述。
这样,选择指令处理装置可以高效、快速地对选择指令进行处理,进行选择运算的处理效率高、处理速度快。
图5-4示出根据本公开一实施例的选择指令处理方法的流程图。如图5-4所示,该方法应用于上述选择指令处理装置,该方法包括步骤S51-1和步骤S52-1。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-1和步骤S52-1。
在步骤S51-1中,利用控制模块对获取到的选择指令进行解析,得到选择指令的操作码和操作域,并根据操作码和操作域获取执行选择指令所需的多个索引数据、多个待运算数据和目标地址。其中,操作码用于指示选择指令对数据所进行的运算为选择运算,操作域包括待运算数据地址、索引数据地址和目标地址。
在步骤S52-1中,利用运算模块依次判断多个索引数据是否满足存储条件,并在索引数据满足存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:运算模块可以包括所述多个比较器,
其中,利用运算模块依次判断多个索引数据是否满足存储条件,并在索引数据满足存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中,可以包括:
利用运算模块中的多个比较器依次判断多个索引数据是否满足存储条件。
在一种可能的实现方式中,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
其中,利用运算模块依次判断多个索引数据是否满足存储条件,并在索引数据满足存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中,可以包括:
利用多个比较器依次判断多个索引数据是否满足存储条件,确定出与满足存储条件的索引数据相对应的待运算数据,并将与满足存储条件的索引数据相对应的待运算数据顺序存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址,步骤S51-1可以包括:获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量小于或等于读入量,读入量小于或等于多个索引数据的数据量。
在一种可能的实现方式中,该方法还可以包括:利用所述装置的存储模块存储多个索引数据、多个待运算数据以及存储条件,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述多个索引数据、所述多个待运算数据以及所述存储条件,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的标量数据;
所述神经元缓存,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的神经元数据,所述神经元数据包括神经元向量数据。
在一种可能的实现方式中,步骤S51-1可以包括:
存储选择指令;
对选择指令进行解析,得到选择指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括选择指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关 联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
在一种可能的实现方式中,存储条件可以包括索引数据不为零。
需要说明的是,尽管以上述实施例作为示例介绍了选择指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的选择指令处理方法的适用范围广,对选择指令的处理效率高、处理速度快,进行选择运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款A1、一种选择指令处理装置,所述装置包括:
控制模块,用于对获取到的选择指令进行解析,得到所述选择指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述选择指令所需的多个索引数据、多个待运算数据和目标地址;
运算模块,用于依次判断所述多个索引数据是否满足存储条件,并在索引数据满足所述存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中,
其中,所述操作码用于指示所述选择指令对数据所进行的运算为选择运算,所述操作域包括待运算数据地址、索引数据地址和所述目标地址。
条款A2、根据条款A1所述的装置,所述运算模块,包括:
多个比较器,用于依次判断所述多个索引数据是否满足所述存储条件。
条款A3、根据条款A2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
所述主运算子模块,用于利用所述多个比较器依次判断所述多个索引数据是否满足所述存储条件,确定出与满足存储条件的索引数据相对应的待运算数据,并将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中。
条款A4、根据条款A1所述的装置,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述多个待运算数据,
其中,所述多个待运算数据的数据量小于或等于所述读入量,所述读入量小于或等于所述多个索引数据的数据量。
条款A5、根据条款A1所述的装置,所述装置还包括:
存储模块,用于存储所述多个索引数据、所述多个待运算数据以及所述存储条件,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述多个索引数据、所述多个待运算数据以及所述存储条件,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的标量数据;
所述神经元缓存,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的神经元数据,所述神经元数据包括神经元向量数据。
条款A6、根据条款A1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述选择指令;
指令处理子模块,用于对所述选择指令进行解析,得到所述选择指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括选择指令。
条款A7、根据条款A6所述的装置,所述控制模块,包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行 指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款A8、根据条款A1至条款A7任一项所述的装置,所述存储条件包括索引数据不为零。
条款A9、一种机器学习运算装置,所述装置包括:
一个或多个如条款A1-8任一项所述的选择指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述选择指令处理装置时,多个所述选择指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述选择指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述选择指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述选择指令处理装置共享内存或者拥有各自的内存;多个所述选择指令处理装置的互联方式是任意互联拓扑。
条款A10、一种组合处理装置,所述组合处理装置包括:
如条款A9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款A11、一种机器学习芯片,所述机器学习芯片包括:
如条款A9所述的机器学习运算装置或如条款A10所述的组合处理装置。
条款A12、一种电子设备,所述电子设备包括:
如条款A11所述的机器学习芯片。
条款A13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款A14、一种选择指令处理方法,所述方法应用于选择指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的选择指令进行解析,得到所述选择指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述选择指令所需的多个索引数据、多个待运算数据和目标地址;
利用运算模块依次判断所述多个索引数据是否满足存储条件,并在索引数据满足所述存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中,
其中,所述操作码用于指示所述选择指令对数据所进行的运算为选择运算,所述操作域包括待运算数据地址、索引数据地址和所述目标地址。
条款A15、根据条款A14所述的方法,所述运算模块包括所述多个比较器,
其中,利用运算模块依次判断所述多个索引数据是否满足存储条件,并在索引数据满足所述存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中,包括:
利用所述运算模块中的多个比较器依次判断所述多个索引数据是否满足所述存储条件。
条款A16、根据条款A15所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
其中,利用运算模块依次判断所述多个索引数据是否满足存储条件,并在索引数据满足所述存储条件时,将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中,包括:
利用所述多个比较器依次判断所述多个索引数据是否满足所述存储条件,确定出与满足存储条件的索引数据相对应的待运算数据,并将与满足存储条件的索引数据相对应的待运算数据顺序存入所述目标地址中。
条款A17、根据条款A14所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述选择指令所需的多个索引数据、多个待运算数据和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述多个待运算数据,
其中,所述多个待运算数据的数据量小于或等于所述读入量,所述读入量小于或等于所述多个索引数据的数据量。
条款A18、根据条款A14所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述多个索引数据、所述多个待运算数据以及所述存储条件,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述多个索引数据、所述多个待运算数据以及所述存储条件,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的标量数据;
所述神经元缓存,用于存储所述待运算数据、所述多个待运算数据以及所述存储条件中的神经元数据,所述神经元数据包括神经元向量数据。
条款A19、根据条款A14所述的方法,对获取到的选择指令进行解析,得到所述选择指令的操作码和操作域,包括:
存储所述选择指令;
对所述选择指令进行解析,得到所述选择指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括选择指令。
条款A20、根据条款A19所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款A21、根据条款A14至条款A20任一项所述的方法,所述存储条件包括索引数据不为零。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现计数统计的运算处理过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的计数指令,技术人员需要自定义对应其编程语言环境的多条指令或者针对不同的编程语言环境创建对应的计数指令来实现平计数统计,导致进行计数统计的效率低、速度慢。本公开提供一种计数指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现计数统计,能够显著提高进行计数统计的效率和速度。
图6-1示出根据本公开一实施例的计数指令处理装置的框图。如图6-1所示,该装置包括控制模块2-11和运算模块2-12。
控制模块2-11,用于对获取到的计数指令进行解析,得到计数指令的操作码和操作域,并根据操作码和操作域获取执行计数指令所需的多个待运算数据和目标地址。其中,操作码用于指示计数 指令对数据所进行的运算为计数统计运算,操作域包括待运算数据地址和目标地址。
运算模块2-12,用于确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址中获取多个待运算数据。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括参数数据、待运算数据、对应的运算方法等等。对于一个计数指令其必须包括操作码和操作域,其中操作域至少包括待运算数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对计数指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收计数指令,并控制一个或多个运算模块进行计数统计。在装置包括多个控制模块时,多个控制模块可以分别接收计数指令,并控制对应的一个或多个运算模块进行计数统计。
本公开实施例所提供的计数指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的计数指令进行解析,得到计数指令的操作码和操作域,并根据操作码和操作域获取执行计数指令所需的多个待运算数据和目标地址;运算模块用于确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中。本公开实施例所提供的计数指令处理装置的适用范围广,对计数指令的处理效率高、处理速度快,进行计数统计的处理效率高、处理速度快。
在一种可能的实现方式中,计数条件可以是待运算数据不为零。
在该实现方式中,统计多个待运算数据中不为0的待运算数据的数据个数,并将数据个数存储至目标地址。计数条件还可以是待运算数据不为指定数值,指定数值可以是1等数值。本领域技术人员可以根据实际需要对计数条件进行设置,本公开对此不作限制。
图6-2a示出根据本公开一实施例的计数指令处理装置的框图。在一种可能的实现方式中,如图6-2a所示,运算模块2-12可以包括多个计数器2-120。多个计数器2-120用于对满足计数条件的待运算数据的个数进行计数统计,得到所述多个待运算数据中满足计数条件的待运算数据的数据个数。
在该实现方式中,运算模块也可以包括一个计数器。可以根据所需进行的计数统计运算的待运算数据的数据量的大小、对计数统计运算的处理速度、效率等要求对计数器的数量进行设置,本公开对此不作限制。
图6-2b示出根据本公开一实施例的计数指令处理装置的框图。在一种可能的实现方式中,如图6-2b所示,运算模块2-12可以包括主运算子模块2-121和多个从运算子模块2-122,主运算子模块2-121包括多个计数器2-120(图中未示出)。
主运算子模块2-121,用于利用多个计数器2-120对满足计数条件的待运算数据的个数进行计数统计,确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,控制模块2-11,还用于获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量小于或等于读入量。
在该实现方式中,读入量可以是所获取的多个待运算数据的数据量,可以是所获取的待运算数据的尺寸。在操作域直接包含读入量的具体数值时,可以将该数值确定为读入量。在操作域中包括读入量的存储地址时,可以从该存储地址中获取读入量。
在一种可能的实现方式中,在操作域中不包括读入量时,可以根据预先设置的默认读入量获取多个待运算数据。所获取的多个待运算数据的数据量小于或等于默认读入量。
通过上述方式,可以对多个待运算数据的数据量进行限制,保证统计出的数据个数的准确性, 也保证装置可以运行该计数指令。
在一种可能的实现方式中,如图6-2a、图6-2b所示,该装置还可以包括存储模块2-13。存储模块2-13用于存储多个待运算数据以及计数条件。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。寄存器,可以用于存储多个待运算数据和计数条件中的标量数据;
在一种可能的实现方式中,神经元缓存,可以用于存储多个待运算数据和计数条件中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,计数指令的指令格式可以是:
count dst src0 size
其中,select是计数指令的操作码,dst、src0、size是计数指令的操作域。dst是目标地址,src0是待运算数据地址,size是读入量。
应当理解的是,本领域技术人员可以根据需要对计数指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了计数指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用计数指令处理装置进行计数统计”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解计数指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图6-3示出根据本公开一实施例的计数指令处理装置的应用场景的示意图。如图6-3所示,计数指令处理装置对计数指令进行处理的过程如下:
控制模块2-11对获取到的计数指令1(如计数指令1为count 500 100 5)进行解析,得到计数指令1的操作码和操作域。其中,计数指令1的操作码为count,目标地址为500,待运算数据地址为100,读入量为5。控制模块2-11从待运算数据地址100中获取读入量为5的多个待运算数据。
假定获得的多个待运算数据包括1、5、0、7、3。计数条件为待运算数据不为0。
运算模块2-12统计多个待运算数据中不为0的待运算数据的数据个数,并将数据个数存入目标地址500中。以上各模块的工作过程可参考上文的相关描述。
这样,计数指令处理装置可以高效、快速地对计数指令进行处理,且进行计数统计的处理效率高、处理速度快。
图6-4示出根据本公开一实施例的计数指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-2和步骤S52-2。如图6-4所示,该方法应用于上述计数指令处理装置,该方法包括步骤S51-2和步骤S52-2。
在步骤S51-2中,利用控制模块对获取到的计数指令进行解析,得到计数指令的操作码和操作域,并根据操作码和操作域获取执行计数指令所需的多个待运算数据和目标地址。其中,操作码用于指示计数指令对数据所进行的运算为计数统计运算,操作域包括待运算数据地址和目标地址。
在步骤S52-2中,利用运算模块确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中。
在一种可能的实现方式中,确定多个待运算数据中满足计数条件的待运算数据的数据个数,包括:利用运算模块中的多个计数器对满足计数条件的待运算数据的个数进行计数统计,得到多个待 运算数据中满足计数条件的待运算数据的数据个数。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个加法器和多个除法器,
其中,确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中,包括:
利用主运算子模块中的多个计数器对满足计数条件的待运算数据的个数进行计数统计,确定多个待运算数据中满足计数条件的待运算数据的数据个数,并将数据个数存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读入量或读入量的存储地址。其中,根据操作码和操作域获取执行计数指令所需的多个待运算数据和目标地址,包括:获取读入量,并按照读入量获取多个待运算数据。其中,多个待运算数据的数据量小于或等于读入量。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储多个待运算数据以及计数条件,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储多个待运算数据和计数条件,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储多个待运算数据和计数条件中的标量数据;
神经元缓存,用于存储多个待运算数据和计数条件中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的计数指令进行解析,得到计数指令的操作码和操作域,包括:
存储计数指令;
对计数指令进行解析,得到计数指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括计数指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
在一种可能的实现方式中,计数条件可以包括待运算数据不为零。
需要说明的是,尽管以上述实施例作为示例介绍了计数指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的计数指令处理方法的适用范围广,对计数指令的处理效率高、处理速度快,进行计数统计的处理效率高、处理速度快。
本公开还提供一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述计算指令处理方法。
依据以下条款可以更好的理解前述内容:
条款B1、一种计数指令处理装置,所述装置包括:
控制模块,用于对获取到的计数指令进行解析,得到所述计数指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述计数指令所需的多个待运算数据和目标地址;
运算模块,用于确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,并将所述数据个数存入所述目标地址中,
其中,所述操作码用于指示所述计数指令对数据所进行的运算为计数统计运算,所述操作域包括待运算数据地址和所述目标地址。
条款B2、根据条款B1所述的装置,所述运算模块,包括:
多个计数器,用于对满足所述计数条件的待运算数据的个数进行计数统计,得到所述多个待运算数据中满足计数条件的待运算数据的数据个数。
条款B3、根据条款B2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个计数器,
所述主运算子模块,用于利用所述多个计数器对满足所述计数条件的待运算数据的个数进行计数统计,确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,并将所述数据个数存入所述目标地址中。
条款B4、根据条款B1所述的装置,所述操作域还包括读入量或所述读入量的存储地址,
其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述多个待运算数据,
其中,所述多个待运算数据的数据量小于或等于所述读入量。
条款B5、根据条款B1所述的装置,所述装置还包括:
存储模块,用于存储所述多个待运算数据和所述计数条件,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述多个待运算数据和所述计数条件,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述多个待运算数据和所述计数条件中的标量数据;
所述神经元缓存,用于存储所述多个待运算数据和所述计数条件中的神经元数据,所述神经元数据包括神经元向量数据。
条款B6、根据条款B1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述计数指令;
指令处理子模块,用于对所述计数指令进行解析,得到所述计数指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述计数指令。
条款B7、根据条款B6所述的装置,所述运算模块,包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款B8、根据条款B1至条款B7任一项所述的装置,所述计数条件包括待运算数据不为零。
条款B9、一种机器学习运算装置,所述装置包括:
一个或多个如条款B1-条款B8任一项所述的计数指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述计数指令处理装置时,多个所述计数指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计数指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述计数指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述计数指令处理装置共享内存或者拥有各自的内存;多个所述计数指令处理装置的互联方式是任意互联拓扑。
条款B10、一种组合处理装置,所述组合处理装置包括:
如条款B9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款B11、一种机器学习芯片,所述机器学习芯片包括:
如条款B9所述的机器学习运算装置或如条款B10所述的组合处理装置。
条款B12、一种电子设备,所述电子设备包括:
如条款B11所述的机器学习芯片。
条款B13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款B11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款B14、一种计数指令处理方法,所述方法应用于计数指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的计数指令进行解析,得到所述计数指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述计数指令所需的多个待运算数据和目标地址;
利用运算模块确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,并将所述数据个数存入所述目标地址中,
其中,所述操作码用于指示所计数择指令对数据所进行的运算为计数统计运算,所述操作域包括待运算数据地址和所述目标地址。
条款B15、根据条款B14所述的方法,确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,包括:
利用所述运算模块中的多个计数器对满足所述计数条件的待运算数据的个数进行计数统计,得到所述多个待运算数据中满足计数条件的待运算数据的数据个数。
条款B16、根据条款B15所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括多个加法器和多个除法器,
其中,确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,并将所述数据个数存入所述目标地址中,包括:
利用所述主运算子模块中的所述多个计数器对满足所述计数条件的待运算数据的个数进行计数统计,确定所述多个待运算数据中满足计数条件的待运算数据的数据个数,并将所述数据个数存入所述目标地址中。
条款B17、根据条款B14所述的方法,所述操作域还包括读入量或所述读入量的存储地址,
其中,根据所述操作码和所述操作域获取执行所述计数指令所需的多个待运算数据和目标地址,包括:
获取所述读入量,并按照所述读入量获取所述多个待运算数据,
其中,所述多个待运算数据的数据量小于或等于所述读入量。
条款B18、根据条款B14所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述多个待运算数据以及所述计数条件,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述多个待运算数据和所述计数条件,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述多个待运算数据和所述计数条件中的标量数据;
所述神经元缓存,用于存储所述多个待运算数据和所述计数条件中的神经元数据,所述神经元数据包括神经元向量数据。
条款B19、根据条款B14所述的方法,对获取到的计数指令进行解析,得到所述计数指令的操 作码和操作域,包括:
存储所述计数指令;
对所述计数指令进行解析,得到所述计数指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述计数指令。
条款B20、根据条款B19所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款B21、根据条款B14至条款B20任一项所述的方法,所述计数条件包括待运算数据不为零。
条款B22、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款B14至条款B21任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现平均池化运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的全连接指令,技术人员需要自定义对应其编程语言环境的多条指令来实现全连接运算,导致进行全连接运算效率低、速度慢。本公开提供一种全连接指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现全连接运算,能够显著提高进行全连接运算的效率和速度。
图7-1示出根据本公开一实施例的全连接指令处理装置的框图。如图7-1所示,该装置包括控制模块3-11和运算模块3-12。
控制模块3-11,用于对获取到的全连接指令进行解析,得到全连接指令的操作码和操作域,并根据操作码和操作域获取执行全连接指令所需的第一数据、第二数据、权值数据和目标地址。其中,操作码用于指示全连接指令对数据所进行的运算为全连接运算,操作域包括第一数据地址、第二数据地址、权值数据地址和目标地址。
运算模块3-12,用于根据权值数据对第一数据和第二数据进行全连接运算,得到运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从第一数据地址、第二数据地址和权值数据地址中分别获得第一数据、第二数据和权值数据。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括第一数据、第二数据、权值数据以及对应的运算方法等等。对于一个全连接指令其必须包括操作码和操作域,其中,操作域至少包括第一数据地址、第二数据地址、权值数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对全连接指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收全连接指令,并控制一个或多个运算模块进行全连接运算。在装置包括多个控制模块时,多个控制模块可以分别接收全连接指令,并控制对应的一个或多个运算模块进行全连接运算。
本公开实施例所提供的全连接指令处理装置,该装置包括控制模块和运算模块,控制模块用于 对获取到的全连接指令进行解析,得到全连接指令的操作码和操作域,并根据操作码和操作域获取执行全连接指令所需的第一数据、第二数据、权值数据和目标地址;运算模块用于根据权值数据对第一数据和第二数据进行全连接运算,得到运算结果,并将运算结果存入目标地址中。本公开实施例所提供的全连接指令处理装置的适用范围广,对全连接指令的处理效率高、处理速度快,进行全连接运算的处理效率高、速度快。
图7-2a示出根据本公开一实施例的全连接指令处理装置的框图。在一种可能的实现方式中,如图7-2a所示,运算模块3-12可以包括多个乘法器3-120和多个加法器3-120’。多个乘法器3-120,用于执行全连接运算中的乘法运算。多个加法器3-120’,用于执行全连接运算中的加法运算。
在该实现方式中,运算模块还可以包括一个加法器、一个乘法器,或者包括一个加法器、多个乘法器,再或者包括多个加法器、一个乘法器。可以根据所需进行的全连接运算的数据量、对全连接运算的处理速度、处理效率等需求对乘法器和加法器的数量进行设置,本公开对此不作限制。
图7-2b示出根据本公开一实施例的全连接指令处理装置的框图。在一种可能的实现方式中,如图7-2b所示,运算模块3-12可以包括主运算子模块3-121和多个从运算子模块3-122,从运算子模块3-122包括多个乘法器3-120和多个加法器3-120’(图中未示出)。
控制模块3-11,还用于解析全连接指令得到多个运算指令,并将多个待运算数据和多个运算指令发送至主运算子模块3-121。
主运算子模块3-121,用于对第一数据和第二数据执行前序处理,以及与多个从运算子模块3-122进行数据和运算指令的传输。
从运算子模块3-122,用于基于多个乘法器3-120和多个加法器3-120’,根据从主运算子模块3-121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主运算子模块3-122。
主运算子模块3-121,还用于对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括权值宽度和权值高度。其中,控制模块3-11,还用于按照权值高度和权值宽度从权值数据地址中获取权值数据。
在该实现方式中,权值宽度和权值高度可以限定所获取的权值数据的数据量的。操作域中所包括的权值宽度和权值高度可以是具体的数值,还可以是存储权值宽度和权值高度的存储地址。在操作域中直接包括权值宽度和权值高度的具体数值时,将该具体数值确定为对应的权值宽度和权值高度。在操作域中包括权值宽度和权值高度的存储地址时,可以分别从权值宽度和权值高度的存储地址中获取权值高度和权值宽度。
在一种可能的实现方式中,在操作域中不包括权值高度和/或权值宽度时,可以根据预先设置的默认权值高度和默认权值宽度获取权值数据。
通过上述方式,可以对权值数据的数据量进行限制,保证运算结果的准确性。
在一种可能的实现方式中,如图7-2a、图7-2b所示,该装置还可以包括存储模块3-13。存储模块3-13用于存储第一数据、第二数据和权值数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存用于存储第一数据、第二数据以及权值数据,寄存器用于存储第一数据、第二数据以及权值数据中的标量数据。
在一种可能的实现方式中,神经元缓存,用于存储第一数据、第二数据以及权值数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,全连接指令的指令格式可以是:
mlp dst A B Weight Weight.width Weight.height
其中,mlp是全连接指令的操作码。dst、A、B、Weight、Weight.width、Weight.height是全连接指令的操作域。其中,dst是目标地址,A是第一数据地址,B是第二数据地址,Weight是权值数据 地址,Weight.width是权值宽度,Weight.height是权值高度。
应当理解的是,本领域技术人员可以根据需要对全连接指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了全连接指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用全连接指令处理装置进行全连接运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解全连接指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图7-3示出根据本公开一实施例的全连接指令处理装置的应用场景的示意图。如图7-3所示,全连接指令处理装置对全连接指令进行处理的过程如下:
控制模块3-11对获取到的全连接指令1(如全连接指令1为mlp 500 100 200 300 5 9)进行解析,得到全连接指令1的操作码和操作域。其中,全连接指令1的操作码为mlp,目标地址为500,第一数据地址为100,第二数据地址为200,权值数据地址为300,权值宽度为5,权值高度为9。控制模块3-11从第一数据地址100中获取第一数据,从第二数据地址200中获取第二数据以及从权值数据地址300中获取权值宽度为5、权值高度为9的权值数据。
运算模块3-12根据权值数据对第一数据和第二数据进行全连接运算,得到运算结果,并将运算结果存入目标地址500中。以上各模块的工作过程可参考上文的相关描述。
这样,全连接指令处理装置可以高效、快速地对全连接指令进行处理,进行全连接运算的处理效率高、速度快。
图7-4示出根据本公开一实施例的全连接指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-3和步骤S52-3。如图7-4所示,该方法应用于上述全连接指令处理装置,该方法包括步骤S51-3和步骤S52-3。
在步骤S51-3中,利用控制模块对获取到的全连接指令进行解析,得到全连接指令的操作码和操作域,并根据操作码和操作域获取执行全连接指令所需的第一数据、第二数据、权值数据和目标地址。其中,操作码用于指示全连接指令对数据所进行的运算为全连接运算,操作域包括第一数据地址、第二数据地址、权值数据地址和目标地址。
在步骤S52-3中,利用运算模块根据权值数据对第一数据和第二数据进行全连接运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据权值数据对第一数据和第二数据进行全连接运算,可以包括:利用运算模块中的多个乘法器执行全连接运算中的乘法运算,以及利用运算模块中的多个加法器执行全连接运算中的加法运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,从运算子模块包括多个乘法器和多个加法器,
其中,该方法还可以包括:
利用控制模块解析全连接指令得到多个运算指令;
其中,根据权值数据对第一数据和第二数据进行全连接运算,得到运算结果,并将运算结果存入目标地址中,包括:
利用主运算子模块对第一数据和第二数据执行前序处理,以及进行数据和运算指令的传输;
基于从运算子模块中的多个乘法器和多个加法器,根据传输的数据和运算指令并行执行中间运 算得到多个中间结果;
利用主运算子模块对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括权值宽度和权值高度。其中,根据操作码和操作域获取执行全连接指令所需的第一数据、第二数据、权值数据和目标地址,可以包括:
按照权值高度和权值宽度从权值数据地址中获取权值数据。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储第一数据、第二数据以及权值数据,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储第一数据、第二数据以及权值数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储第一数据、第二数据以及权值数据中的标量数据;
神经元缓存,用于存储第一数据、第二数据以及权值数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的全连接指令进行解析,得到全连接指令的操作码和操作域,可以包括:
存储全连接指令;
对全连接指令进行解析,得到全连接指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括全连接指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了全连接指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的全连接指令处理方法的适用范围广,对全连接指令的处理效率高、处理速度快,进行全连接运算的处理效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款C1、一种全连接指令处理装置,所述装置包括:
控制模块,用于对获取到的全连接指令进行解析,得到所述全连接指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述全连接指令所需的第一数据、第二数据、权值数据和目标地址;
运算模块,用于根据所述权值数据对所述第一数据和所述第二数据进行全连接运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述全连接指令对数据所进行的运算为全连接运算,所述操作域包括第一数据地址、第二数据地址、权值数据地址和所述目标地址。
条款C2、根据条款C1所述的装置,所述运算模块,包括:
多个乘法器,用于执行所述全连接运算中的乘法运算;
多个加法器,用于执行所述全连接运算中的加法运算。
条款C3、根据条款C2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个乘法器和所述多个加法器,
所述控制模块,还用于解析所述全连接指令得到多个运算指令,并将所述第一数据、所述第二 数据和所述多个运算指令发送至所述主运算子模块;
所述主运算子模块,用于对所述第一数据和所述第二数据执行前序处理,以及与所述多个从运算子模块进行数据和运算指令的传输;
所述从运算子模块,用于基于所述多个乘法器和所述多个加法器,根据从所述主运算子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主运算子模块;
所述主运算子模块,还用于对所述多个中间结果执行后续处理,得到运算结果,并将所述运算结果存入所述目标地址中。
条款C4、根据条款C1所述的装置,所述操作域还包括权值宽度和权值高度,
其中,所述控制模块,还用于按照所述权值高度和所述权值宽度从所述权值数据地址中获取所述权值数据。
条款C5、根据条款C1所述的装置,所述装置还包括:
存储模块,用于存储所述第一数据、所述第二数据以及所述权值数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述第一数据、所述第二数据以及所述权值数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述第一数据、所述第二数据以及所述权值数据中的标量数据;
所述神经元缓存,用于存储所述第一数据、所述第二数据以及所述权值数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款C6、根据条款C1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述全连接指令;
指令处理子模块,用于对所述全连接指令进行解析,得到所述全连接指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述全连接指令。
条款C7、根据条款C6所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款C8、一种机器学习运算装置,所述装置包括:
一个或多个如条款C1-条款C7任一项所述的全连接指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述全连接指令处理装置时,多个所述全连接指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述全连接指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述全连接指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述全连接指令处理装置共享内存或者拥有各自的内存;多个所述全连接指令处理装置的互联方式是任意互联拓扑。
条款C9、一种组合处理装置,所述组合处理装置包括:
如条款C8所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款C10、一种机器学习芯片,所述机器学习芯片包括:
如条款C8所述的机器学习运算装置或如条款C9所述的组合处理装置。
条款C11、一种电子设备,所述电子设备包括:
如条款C10所述的机器学习芯片。
条款C12、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款C10所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款C13、一种全连接指令处理方法,所述方法应用于全连接指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的全连接指令进行解析,得到所述全连接指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述全连接指令所需的第一数据、第二数据、权值数据和目标地址;
利用运算模块根据所述权值数据对所述第一数据和所述第二数据进行全连接运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述全连接指令对数据所进行的运算为全连接运算,所述操作域包括第一数据地址、第二数据地址、权值数据地址和所述目标地址。
条款C14、根据条款C13所述的方法,根据所述权值数据对所述第一数据和所述第二数据进行全连接运算,包括:
利用所述运算模块中的多个乘法器执行所述全连接运算中的乘法运算,以及利用所述运算模块中的多个加法器执行所述全连接运算中的加法运算。
条款C15、根据条款C14所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括多个乘法器和多个加法器,
其中,所述方法还包括:
利用控制模块解析所述全连接指令得到多个运算指令;
其中,根据所述权值数据对所述第一数据和所述第二数据进行全连接运算,得到运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块对所述第一数据和所述第二数据执行前序处理,以及进行数据和运算指令的传输;
基于所述从运算子模块中的多个乘法器和多个加法器,根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
利用所述主运算子模块对所述多个中间结果执行后续处理,得到运算结果,并将所述运算结果存入所述目标地址中。
条款C16、根据条款C13所述的方法,所述操作域还包括权值宽度和权值高度,
其中,根据所述操作码和所述操作域获取执行所述全连接指令所需的第一数据、第二数据、权值数据和目标地址,包括:
按照所述权值高度和所述权值宽度从所述权值数据地址中获取所述权值数据。
条款C17、根据条款C13所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述第一数据、所述第二数据以及所述权值数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述第一数据、所述第二数据以及所述权值数据,所述缓存包括至少一个 神经元缓存NRAM;
所述寄存器,用于存储所述第一数据、所述第二数据以及所述权值数据中的标量数据;
所述神经元缓存,用于存储所述第一数据、所述第二数据以及所述权值数据中的神经元数据,所述神经元数据包括神经元向量数。
条款C18、根据条款C13所述的方法,对获取到的全连接指令进行解析,得到所述全连接指令的操作码和操作域,包括:
存储所述全连接指令;
对所述全连接指令进行解析,得到所述全连接指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述全连接指令。
条款C19、根据条款C18所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款C20、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款C13至条款C19任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。卷积运算是通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与g经过翻转和平移的重叠部分的面积。由于编程语言的种类多样,在不同的语言环境下,为实现卷积运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的卷积指令,技术人员需要自定义对应其编程语言环境的多条指令来实现卷积运算,导致进行卷积运算效率低、速度慢。本公开提供一种卷积指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现卷积运算,能够显著提高进行卷积运算的效率和速度。
图8-1示出根据本公开一实施例的卷积指令处理装置的框图。如图8-1所示,该装置包括控制模块4-11和运算模块4-12。
控制模块4-11,用于对获取到的卷积指令进行解析,得到卷积指令的操作码和操作域,并根据操作码和操作域获取执行卷积指令所需的待运算数据、卷积核和目标地址。其中,操作码用于指示卷积指令对数据所进行的运算为卷积运算,操作域包括待运算数据地址、卷积核地址和目标地址。
运算模块4-12,用于根据卷积核对待运算数据进行卷积运算(convolutional computation),获得运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址和卷积核地址中,分别获得待运算数据和卷积核。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、卷积核等参数以及对应的运算方法等等。对于一个卷积指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址、卷积核地址和目标地址
应当理解的是,本领域技术人员可以根据需要对卷积指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时, 该控制模块可以接收卷积指令,并控制一个或多个运算模块进行卷积运算。在装置包括多个控制模块时,多个控制模块可以分别接收卷积指令,并控制对应的一个或多个运算模块进行卷积运算。
本公开实施例所提供的卷积指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的卷积指令进行解析,得到卷积指令的操作码和操作域,并根据操作码和操作域获取执行卷积指令所需的待运算数据、卷积核和目标地址;运算模块,用于根据卷积核对待运算数据进行卷积运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的卷积指令处理装置的适用范围广,对卷积指令的处理效率高、处理速度快,进行卷积运算的处理效率高、速度快。
图8-2a示出根据本公开一实施例的卷积指令处理装置的框图。在一种可能的实现方式中,如图8-2a所示,运算模块4-12可以包括多个乘法器4-120和多个加法器4-120’。多个乘法器4-120,用于执行卷积运算中的乘法运算。多个加法器4-120’,用于执行卷积运算中的加法运算。
在该实现方式中,运算模块还可以包括一个加法器、一个乘法器,或者包括一个加法器、多个乘法器,再或者包括多个加法器、一个乘法器。可以根据所需进行的卷积运算的数据量、对卷积运算的处理速度、处理效率等需求对乘法器和加法器的数量进行设置,本公开对此不作限制。
图8-2b示出根据本公开一实施例的卷积指令处理装置的框图。在一种可能的实现方式中,如图8-2b所示,运算模块4-12可以包括主运算子模块4-121和多个从运算子模块4-122,从运算子模块4-122包括多个乘法器4-120和多个加法器4-120’(图中未示出)。
控制模块4-11,还用于解析卷积指令得到多个运算指令,并将待运算数据、卷积核和多个运算指令发送至主运算子模块4-121。
主运算子模块4-121,用于对待运算数据和卷积核执行前序处理,以及与多个从运算子模块4-122进行数据和运算指令的传输。
从运算子模块4-122,用于基于多个乘法器4-120和多个加法器4-120’,根据从主运算子模块4-121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主运算子模块4-122。
主运算子模块4-121,还用于对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。
其中,控制模块,还用于从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在该实现方式中,输入高度和输入宽度可以限定所获得的待运算数据的数据量和尺寸。操作域所包括的输入高度和输入宽度可以是具体的数值,还可以是存储输入高度和输入宽度的存储地址。在操作域中直接包括输入高度和输入宽度的具体数值时,将该具体数值确定为对应的输入高度和输入宽度。在操作域中包括输入高度和输入宽度的存储地址时,可以分别从输入高度和输入宽度的存储地址中获得输入高度和输入宽度。
在一种可能的实现方式中,在操作域中不包括输入高度和/或输入宽度时,可以根据预先设置的默认输入高度和默认输入宽度获取待运算数据。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该卷积指令。
在一种可能的实现方式中,操作域还可以包括卷积核高度和卷积核宽度。其中,控制模块4-11,还用于按照卷积核高度和卷积核宽度从卷积核地址中获取卷积核。
在一种可能的实现方式中,操作域还可以包括第一步幅。其中,运算模块4-12,还用于在待运算数据的X方向上按照第一步幅移动卷积核。
在一种可能的实现方式中,操作域还可以包括第二步幅。其中,运算模块4-12,还用于在待运算数据的Y方向上按照第二步幅移动卷积核。
在一种可能的实现方式中,在操作域中不包括卷积核高度、卷积核宽度、卷积核的第一步幅和第二步幅中的一种或多种时,可以获取预先设置的默认卷积核高度、默认卷积核宽度、卷积核的默认第一步幅和默认第二步幅,使得控制模块和运算模块可以执行卷积指令。
在一种可能的实现方式中,操作域还可以包括卷积核数量。其中,运算模块4-12,还用于通过数量为卷积核数量的多个卷积核,对待运算数据进行卷积运算。
在该实现方式中,卷积核数量与待运算数据相对应。例如,在卷积核数量为5时,可以确定待运算数据可以分为五个部分,需要5个卷积核分别对待运算数据的五个部分进行卷积运算。
在该实现方式中,在操作域不包括卷积核数量时,可以确定待运算数据仅需一个卷积核便可以实现卷积运算。
在一种可能的实现方式中,操作域还可以包括通道数。其中,运算模块4-12,还用于根据通道数,通过对应的通道对待运算数据进行卷积运算,得到运算结果。
举例来说,在通道数为3时,可以在三个通道上对待运算数据进行卷积运算得到运算结果。
在一种可能的实现方式中,如图8-2a、图8-2b所示,该装置还可以包括存储模块4-13。存储模块4-13用于存储待运算数据和卷积核。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存用于存储待运算数据和所述卷积核,寄存器用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,卷积指令的指令格式可以是:
conv dst src0 kernel srcChannel srcHeigh srcWidth kernelHeight kernelWidth strideX strideY dstChannel
其中,conv是卷积指令的操作码,dst、src0、kernel、srcChannel、srcHeigh、srcWidth、kernelHeight、kernelWidth、strideX、strideY、dstChannel是卷积指令的操作域。其中,dst是目标地址,src0是待运算数据地址,kernel是卷积核或卷积核地址,srcChannel是卷积核数量,srcHeigh是待运算数据的输入高度,srcWidth是待运算数据的输入宽度,kernelHeight是卷积核高度,kernelWidth是卷积核宽度,strideX是第一步幅,strideY是第二步幅,dstChannel是通道数。
应当理解的是,本领域技术人员可以根据需要对卷积指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了卷积指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用卷积指令处理装置进行卷积运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解卷积指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图8-3示出根据本公开一实施例的卷积指令处理装置的应用场景的示意图。如图8-3所示,卷积指令处理装置对卷积指令进行处理的过程如下:
控制模块4-11对获取到的卷积指令1(如卷积指令1为conv 500 100 200 5 64 32 2 1 2 3 3)进行解析,得到卷积指令1的操作码和操作域。其中,卷积指令1的操作码为conv,目标地址为500,待运算数据地址为100,卷积核地址为200,卷积核数量为5,输入高度为64,输入宽度为32,卷积核高度为2,卷积核宽度为1,第一步幅为2,第二步幅为3,通道数为3。控制模块4-11从待运算数据地址100中获取64×32的待运算数据,从卷积核地址200中获取2×1的卷积核。
运算模块4-12根据卷积核数量5、第一步幅2、第二步幅3和通道数3对待运算数据进行卷积运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,卷积指令处理装置可以高效、快速地对卷积指令进行处理,进行卷积运算的处理效率高、速度快。
图8-4示出根据本公开一实施例的卷积指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-4和步骤S52-4。如图8-4所示,该方法应用于上述卷积指令处理装置,该方法包括步骤S51-4和步骤S52-4。
在步骤S51-4中,利用控制模块对获取到的卷积指令进行解析,得到卷积指令的操作码和操作域,并根据操作码和操作域获取执行卷积指令所需的待运算数据、卷积核和目标地址。其中,操作码用于指示卷积指令对数据所进行的运算为卷积运算,操作域包括待运算数据地址、卷积核地址和目标地址。
在步骤S52-4中,利用运算模块根据卷积核对待运算数据进行卷积运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据卷积核对待运算数据进行卷积运算,可以包括:
利用多个乘法器执行卷积运算中的乘法运算,以及利用多个加法器执行卷积运算中的加法运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,从运算子模块包括多个乘法器和多个加法器,
其中,该方法还可以包括:解析卷积指令得到多个运算指令。
其中,步骤S52-4可以包括:
利用主运算子模块对待运算数据和卷积核执行前序处理,以及进行数据和运算指令的传输;
基于从运算子模块中的多个乘法器和多个加法器,根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
利用主运算子模块对多个中间结果执行后续处理,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读输入高度和输入宽度。其中,根据操作码和操作域获取执行卷积指令所需的待运算数据、卷积核和目标地址,可以包括:
从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在一种可能的实现方式中,操作域还可以包括卷积核高度和卷积核宽度。其中,根据操作码和操作域获取执行卷积指令所需的待运算数据、卷积核和目标地址,可以包括:按照卷积核高度和卷积核宽度从卷积核地址中获取卷积核。
在一种可能的实现方式中,操作域还可以包括第一步幅,其中,根据卷积核对待运算数据进行卷积运算,获得运算结果,包括:在待运算数据的X方向上按照第一步幅移动卷积核。
在一种可能的实现方式中,操作域还可以包括第二步幅,其中,根据卷积核对待运算数据进行卷积运算,获得运算结果,包括:在待运算数据的Y方向上按照第二步幅移动卷积核。
在一种可能的实现方式中,操作域还可以包括卷积核数量。其中,根据卷积核对待运算数据进行卷积运算,获得运算结果,可以包括:
通过数量为卷积核数量的多个卷积核,对待运算数据进行卷积运算。
在一种可能的实现方式中,操作域还可以包括通道数。其中,根据卷积核对待运算数据进行卷积运算,获得运算结果,可以包括:
根据通道数,通过对应的通道对待运算数据进行卷积运算,得到运算结果。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算数据和卷积核,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据和卷积核,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的卷积指令进行解析,得到卷积指令的操作码和操作域,可以包括:
存储卷积指令;
对卷积指令进行解析,得到卷积指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括卷积指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了卷积指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的卷积指令处理方法的适用范围广,对卷积指令的处理效率高、处理速度快,进行卷积运算的处理效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款D1、一种卷积指令处理装置,所述装置包括:
控制模块,用于对获取到的卷积指令进行解析,得到所述卷积指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述卷积指令所需的待运算数据、卷积核和目标地址;
运算模块,用于根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述卷积指令对数据所进行的运算为卷积运算,所述操作域包括待运算数据地址、卷积核地址和所述目标地址。
条款D2、根据条款D1所述的装置,所述运算模块,包括:
多个乘法器,用于执行所述卷积运算中的乘法运算;
多个加法器,用于执行所述卷积运算中的加法运算。
条款D3、根据条款D2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个乘法器和所述多个加法器,
所述控制模块,还用于解析所述卷积指令得到多个运算指令,并将所述待运算数据、所述卷积核和所述多个运算指令发送至所述主运算子模块;
所述主运算子模块,用于对所述待运算数据和所述卷积核执行前序处理,以及与所述多个从运算子模块进行数据和运算指令的传输;
所述从运算子模块,用于基于所述多个乘法器和所述多个加法器,根据从所述主运算子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主运算子模块;
所述主运算子模块,还用于对所述多个中间结果执行后续处理,得到运算结果,并将所述运算结果存入所述目标地址中。
条款D4、根据条款D1所述的装置,所述操作域还包括输入高度和输入宽度,
其中,所述控制模块,还用于从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款D5、根据条款D1所述的装置,所述操作域还包括卷积核高度和卷积核宽度,
其中,所述控制模块,还用于按照所述卷积核高度和所述卷积核宽度从所述卷积核地址中获取所述卷积核。
条款D6、根据条款D1所述的装置,所述操作域还包括第一步幅,
其中,所述运算模块,还用于在所述待运算数据的X方向上按照第一步幅移动所述卷积核。
条款D7、根据条款D1所述的装置,所述操作域还包括第二步幅,
所述运算模块,还用于在所述待运算数据的Y方向上按照第二步幅移动所述卷积核。
条款D8、根据条款D1所述的装置,所述操作域还包括卷积核数量,
其中,所述运算模块,还用于通过数量为所述卷积核数量的多个卷积核,对所述待运算数据进行卷积运算。
条款D9、根据条款D1所述的装置,所述操作域还包括通道数,
其中,所述运算模块,还用于根据所述通道数,通过对应的通道对所述待运算数据进行卷积运算,得到运算结果。
条款D10、根据条款D1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据和所述卷积核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述卷积核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款D11、根据条款D1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述卷积指令;
指令处理子模块,用于对所述卷积指令进行解析,得到所述卷积指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述卷积指令。
条款D12、根据条款D11所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款D13、一种机器学习运算装置,所述装置包括:
一个或多个如条款D1-条款D12任一项所述的卷积指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述卷积指令处理装置时,多个所述卷积指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述卷积指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述卷积指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述卷积指令处理装置共享内存或者拥有各自的内存;多个所述卷积指令处理装置的互联方式是任意互联拓扑。
条款D14、一种组合处理装置,所述组合处理装置包括:
如条款D13所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款D15、一种机器学习芯片,所述机器学习芯片包括:
如条款D13所述的机器学习运算装置或如条款D14所述的组合处理装置。
条款D16、一种电子设备,所述电子设备包括:
如条款D15所述的机器学习芯片。
条款D17、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款D15所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款D18、一种卷积指令处理方法,所述方法应用于卷积指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的卷积指令进行解析,得到所述卷积指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述卷积指令所需的待运算数据、卷积核和目标地址;
利用运算模块根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述卷积指令对数据所进行的运算为卷积运算,所述操作域包括待运算数据地址、卷积核地址和所述目标地址。
条款D19、根据条款D18所述的方法,根据所述卷积核对所述待运算数据进行卷积运算,包括:
利用多个乘法器执行所述卷积运算中的乘法运算,以及利用多个加法器执行所述卷积运算中的加法运算。
条款D20、根据条款D19所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个乘法器和所述多个加法器,
其中,所述方法还包括:
利用控制模块解析所述卷积指令得到多个运算指令;
其中,根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块对所述待运算数据和所述卷积核执行前序处理,以及进行数据和运算指令的传输;
基于所述从运算子模块中的所述多个乘法器和所述多个加法器,根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
利用所述主运算子模块对所述多个中间结果执行后续处理,得到运算结果,并将所述运算结果存入所述目标地址中。
条款D21、根据条款D18所述的方法,所述操作域还包括读输入高度和输入宽度,
其中,根据所述操作码和所述操作域获取执行所述卷积指令所需的待运算数据、卷积核和目标地址,包括:
从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款D22、根据条款D18所述的方法,所述操作域还包括卷积核高度和卷积核宽度,
其中,根据所述操作码和所述操作域获取执行所述卷积指令所需的待运算数据、卷积核和目标地址,包括:
按照所述卷积核高度和所述卷积核宽度从所述卷积核地址中获取所述卷积核。
条款D23、根据条款D18所述的方法,所述操作域还包括第一步幅,
其中,根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,包括:
在所述待运算数据的X方向上按照第一步幅移动所述卷积核。
条款D24、根据条款D18所述的方法,所述操作域还包括第二步幅,
其中,根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,包括:
在所述待运算数据的Y方向上按照第二步幅移动所述卷积核。
条款D25、根据条款D18所述的方法,所述操作域还包括卷积核数量,
其中,根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,包括:
通过数量为所述卷积核数量的多个卷积核,对所述待运算数据进行卷积运算。
条款D26、根据条款D18所述的方法,所述操作域还包括通道数,
其中,根据所述卷积核对所述待运算数据进行卷积运算,获得运算结果,包括:
根据所述通道数,通过对应的通道对所述待运算数据进行卷积运算,得到运算结果。
条款D27、根据条款D18所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算数据和所述卷积核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述卷积核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款D28、根据条款D18所述的方法,对获取到的卷积指令进行解析,得到所述卷积指令的操作码和操作域,包括:
存储所述卷积指令;
对所述卷积指令进行解析,得到所述卷积指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述卷积指令。
条款D29、根据条款D28所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款D30、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款D18至条款D29任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。最大池化运算(max-pooling)是一种获取局部区中所有数据的最大值。由于编程语言的种类多样,在不同的语言环境下,为实现最大池化运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的最大池化指令,技术人员需要自定义对应其编程语言环境的多条指令来实现最大池化运算,导致进行最大池化运算效率低、速度慢。本公开提供一种最大池化指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现最大池化运算,能够显著提高进行最大池化运算的效率和速度。
图9-1示出根据本公开一实施例的最大池化指令处理装置的框图。如图9-1所示,该装置包括控制模块5-11和运算模块5-12。
控制模块5-11,用于对获取到的最大池化指令进行解析,得到最大池化指令的操作码和操作域,并根据操作码和操作域获取执行最大池化指令所需的待运算数据、池化核和目标地址。其中,操作码用于指示最大池化指令对数据所进行的运算为最大池化运算,操作域包括待运算数据地址、池化核地址和目标地址。
运算模块5-12,用于根据池化核对待运算数据进行最大池化运算,获得运算结果,并将运算结 果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址和池化核地址中,分别获得待运算数据和池化核。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、池化核等参数以及对应的运算方法等等。对于一个最大池化指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址、池化核地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对最大池化指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收最大池化指令,并控制一个或多个运算模块进行最大池化运算。在装置包括多个控制模块时,多个控制模块可以分别接收最大池化指令,并控制对应的一个或多个运算模块进行最大池化运算。
本公开实施例所提供的最大池化指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的最大池化指令进行解析,得到最大池化指令的操作码和操作域,并根据操作码和操作域获取执行最大池化指令所需的待运算数据、池化核和目标地址;运算模块用于根据池化核对待运算数据进行最大池化运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的最大池化指令处理装置的适用范围广,对最大池化指令的处理效率高、处理速度快,进行最大池化运算的处理效率高、速度快。
图9-2a示出根据本公开一实施例的最大池化指令处理装置的框图。在一种可能的实现方式中,如图9-2a所示,运算模块5-12可以包括多个比较器5-120。多个比较器5-120用于对池化核所对应的区域中的多个待运算数据进行比较运算,获得运算结果。
在该实现方式中,运算模块也可以包括一个比较器。可以根据所需进行的比较运算的数据量的大小、对比较运算的处理速度、效率等要求对比较器的数量进行设置,本公开对此不作限制。
图9-2b示出根据本公开一实施例的最大池化指令处理装置的框图。在一种可能的实现方式中,如图9-2b所示,运算模块5-12可以包括主运算子模块5-121和多个从运算子模块5-122,主运算子模块5-121包括多个比较器。
主运算子模块5-121,用于利用多个比较器对池化核所对应的区域中的多个待运算数据进行比较运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。
其中,控制模块,还用于从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在该实现方式中,输入高度和输入宽度可以限定所获得的待运算数据的数据量和尺寸。操作域所包括的输入高度和输入宽度可以是具体的数值,还可以是存储输入高度和输入宽度的存储地址。在操作域中直接包括输入高度和输入宽度的具体数值时,将该具体数值确定为对应的输入高度和输入宽度。在操作域中包括输入高度和输入宽度的存储地址时,可以分别从输入高度和输入宽度的存储地址中获得输入高度和输入宽度。
在一种可能的实现方式中,在操作域中不包括输入高度和/或输入宽度时,可以根据预先设置的默认输入高度和默认输入宽度获取待运算数据。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该最大池化指令。
在一种可能的实现方式中,操作域还可以包括池化核高度和池化核宽度。
其中,控制模块5-11,还用于按照池化核高度和池化核宽度从池化核地址中获取池化核。
在一种可能的实现方式中,操作域还可以包括第一步幅。其中,运算模块5-12,还可以用于按照第一步幅在x方向上移动池化核。
在一种可能的实现方式中,操作域还可以包括第二步幅。其中,运算模块5-12,还可以用于按照第二步幅在y方向上移动池化核。
在该实现方式中,最大池化运算的步幅是在进行最大池化运算中每一次移动池化核的幅度。第一步幅可以是在x方向上移动池化核的幅度,第二步幅可以是在y方向上移动池化核的幅度。
需要说明的是,在本公开中仅以池化核为二维为例,描述了进行最大池化运算所需的池化核的高度、宽度、第一步幅和第二步幅等参数,若池化核为多维,在相应地池化核的参数则包括其每个维度的尺寸和步幅。
在一种可能的实现方式中,在最大池化指令的操作域中并未给出第一步幅和第二步幅时,运算模块可以以池化核的高度和宽度分别为其对应维度的步幅,保证最大池化运算的正常进行。例如,运算模块5-12还可以用于在待运算数据上非重叠移动池化核,并比较池化核所对应的区域中的多个待运算数据,获得运算结果。
在一种可能的实现方式中,在操作域中不包括池化核高度、池化核宽度、时,可以获取预先设置的默认池化核高度、默认池化核宽度,使得控制模块和运算模块可以执行最大池化指令。
在一种可能的实现方式中,操作域还可以包括池化核数量。其中,运算模块5-12,还用于通过数量为池化核数量的多个池化核,对待运算数据进行最大池化运算。
在该实现方式中,池化核数量与待运算数据相对应。例如,在池化核数量为5时,可以确定待运算数据可以分为五个部分,需要5个池化核分别对待运算数据的五个部分进行最大池化运算。
在该实现方式中,在操作域不包括池化核数量时,可以确定待运算数据仅需一个池化核便可以实现最大池化运算。
在一种可能的实现方式中,运算模块5-12还用于在待运算数据的尺寸为池化核的尺寸的非整数倍时,对待运算数据中为池化核的尺寸的整数倍的数据进行最大池化运算。其中,待运算数据的尺寸为所述池化核的尺寸的非整数倍,可以包括以下至少一项:待运算数据的输入宽度为池化核的宽度的非整数倍、待运算数据的输入高度为池化核的高度的非整数倍。
在该实现方式中,对于待运算数据中为池化核的非整数倍的部分剩余数据可以不进行最大池化运算。
在一种可能的实现方式中,如图9-2a、图9-2b所示,该装置还可以包括存储模块5-13。存储模块5-13用于存储待运算数据和池化核。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据和池化核,寄存器可以用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,最大池化指令的指令格式可以是:
maxpool dst src0 srcChannel srcHeigh srcWidth kernelHeight kernelWidth sx sy
其中,maxpool为最大池化指令的操作码,dst、src0、srcChannel、srcHeigh、srcWidth、kernelHeight、kernelWidth、sx、sy为最大池化指令的操作域。其中,dst为目标地址,src0为待运算数据地址,srcChannel为池化核数量,srcHeigh为输入高度,srcWidth为输入宽度,kernelHeight为池化核高度,kernelWidth为池化核宽度,sx为池化核在x方向上进行移动的第一步幅,sy为池化核在y方向上进行移动的第二步幅。
应当理解的是,本领域技术人员可以根据需要对最大池化指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了最大池化指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用最大池化指令处理装置进行最大池化运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解最大池化指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图9-3示出根据本公开一实施例的最大池化指令处理装置的应用场景的示意图。如图9-3所示,最大池化指令处理装置对最大池化指令进行处理的过程如下:
控制模块5-11对获取到的最大池化指令1(如最大池化指令1为maxpool 500 100 200 5 64 32 2 1 2 1)进行解析,得到最大池化指令1的操作码和操作域。其中,最大池化指令1的操作码为maxpool,目标地址为500,待运算数据地址为100,池化核地址为200,池化核数量为5,输入高度为64,输入宽度为32,池化核高度为2,池化核宽度为1,第一步幅为2,第二步幅为1。控制模块5-11从待运算数据地址100中获取64×32的待运算数据,从池化核地址200中获取2×1的池化核。
运算模块5-12利用5个池化核对待运算数据进行最大池化运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,可以高效、快速地对最大池化指令进行处理,且进行最大池化运算的效率和速度也有显著提高。
图9-4示出根据本公开一实施例的最大池化指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-5和步骤S52-5。如图9-4所示,该方法应用于上述最大池化指令处理装置,该方法包括步骤S51-5和步骤S52-5。
在步骤S51-5中,利用控制模块对获取到的最大池化指令进行解析,得到最大池化指令的操作码和操作域,并根据操作码和操作域获取执行最大池化指令所需的待运算数据、池化核和目标地址。其中,操作码用于指示最大池化指令对数据所进行的运算为最大池化运算,操作域包括待运算数据地址、池化核地址和目标地址。
在步骤S52-5中,利用运算模块根据池化核对待运算数据进行最大池化运算,获得运算结果,并将运算结果存入目标地址中,
在一种可能的实现方式中,根据池化核对待运算数据进行最大池化运算,获得运算结果,可以包括:
利用运算模块中的多个比较器对池化核所对应的区域中的多个待运算数据进行比较运算,获得运算结果。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个比较器,
其中,根据池化核对待运算数据进行最大池化运算,获得运算结果,并将运算结果存入目标地址中,包括:
利用多个比较器对池化核所对应的区域中的多个待运算数据进行比较运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。其中,根据操作码和操作域获取执行最大池化指令所需的待运算数据、池化核和目标地址,可以包括:
从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在一种可能的实现方式中,操作域还可以包括池化核高度和池化核宽度。其中,根据操作码和操作域获取执行最大池化指令所需的待运算数据、池化核和目标地址,可以包括:
按照池化核高度和池化核宽度从池化核地址中获取池化核。
在一种可能的实现方式中,操作域还可以包括第一步幅。其中,根据池化核对待运算数据进行最大池化运算,可以包括:按照第一步幅在x方向上移动池化核。
在一种可能的实现方式中,操作域还可以包括第二步幅。其中,根据池化核对待运算数据进行最大池化运算,可以包括:按照第二步幅在y方向上移动池化核。
在一种可能的实现方式中,根据池化核对待运算数据进行最大池化运算,获得运算结果,可以包括:
在待运算数据上非重叠移动池化核,并比较池化核所对应的区域中的多个待运算数据,获得运算结果。
在一种可能的实现方式中,根据池化核对待运算数据进行最大池化运算,获得运算结果,可以包括:在待运算数据的尺寸为池化核的尺寸的非整数倍时,对待运算数据中为池化核的尺寸的整数倍的数据进行最大池化运算。
其中,待运算数据的尺寸为池化核的尺寸的非整数倍,可以包括以下至少一项:待运算数据的输入宽度为池化核的宽度的非整数倍、待运算数据的输入高度为池化核的高度的非整数倍。
在一种可能的实现方式中,操作域还可以包括池化核数量。其中,根据池化核对待运算数据进行最大池化运算,获得运算结果,可以包括:通过数量为池化核数量的多个池化核,对待运算数据进行最大池化运算。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算数据和池化核。其中,存储模块可以包括寄存器和缓存中的至少一种,缓存用于存储待运算数据和池化核,缓存可以包括至少一个神经元缓存NRAM;寄存器用于存储待运算数据中的标量数据;神经元缓存用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,对获取到的最大池化指令进行解析,得到最大池化指令的操作码和操作域,可以包括:
存储最大池化指令;
对最大池化指令进行解析,得到最大池化指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括最大池化指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了最大池化指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的最大池化指令处理方法的适用范围广,对最大池化指令的处理效率高、处理速度快,进行最大池化运算的效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款E1、一种最大池化指令处理装置,所述装置包括:
控制模块,用于对获取到的最大池化指令进行解析,得到所述最大池化指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述最大池化指令所需的待运算数据、池化核和目标地址;
运算模块,用于根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,并将所 述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述最大池化指令对数据所进行的运算为最大池化运算,所述操作域包括待运算数据地址、池化核地址和所述目标地址。
条款E2、根据条款E1所述的装置,所述运算模块,包括:
多个比较器,用于对所述池化核所对应的区域中的多个待运算数据进行比较运算,获得运算结果。
条款E3、根据条款E2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
所述主运算子模块,用于利用所述多个比较器对所述池化核所对应的区域中的多个待运算数据进行比较运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款E4、根据条款E1所述的装置,所述操作域还包括输入高度和输入宽度,
其中,所述控制模块,还用于从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款E5、根据条款E1所述的装置,所述操作域还包括池化核高度和池化核宽度,
其中,所述控制模块,还用于按照所述池化核高度和所述池化核宽度从所述池化核地址中获取所述池化核。
条款E6、根据条款E1所述的装置,所述操作域还包括第一步幅,
其中,所述运算模块,还用于按照所述第一步幅在x方向上移动所述池化核。
条款E7、根据条款E1所述的装置,所述操作域还包括第二步幅,
其中,所述运算模块,还用于按照所述第二步幅在y方向上移动所述池化核。
条款E8、根据条款E1所述的装置,所述运算模块,还用于在所述待运算数据上非重叠移动所述池化核,并比较所述池化核所对应的区域中的多个待运算数据,获得所述运算结果。
条款E9、根据条款E1所述的装置,所述运算模块,还用于在所述待运算数据的尺寸为所述池化核的尺寸的非整数倍时,对所述待运算数据中为所述池化核的尺寸的整数倍的数据进行最大池化运算,
其中,所述待运算数据的尺寸为所述池化核的尺寸的非整数倍,包括以下至少一项:所述待运算数据的输入宽度为所述池化核的宽度的非整数倍、所述待运算数据的输入高度为所述池化核的高度的非整数倍。
条款E10、根据条款E1所述的装置,所述操作域还包括池化核数量,
其中,所述运算模块,还用于通过数量为所述池化核数量的多个池化核,对所述待运算数据进行最大池化运算。
条款E11、根据条款E1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据和所述池化核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述池化核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款E12、根据条款E1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述最大池化指令;
指令处理子模块,用于对所述最大池化指令进行解析,得到所述最大池化指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述最大池化指令。
条款E13、根据条款E12所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款E14、一种机器学习运算装置,所述装置包括:
一个或多个如条款E1-条款E13任一项所述的最大池化指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述最大池化指令处理装置时,多个所述最大池化指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述最大池化指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述最大池化指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述最大池化指令处理装置共享内存或者拥有各自的内存;多个所述最大池化指令处理装置的互联方式是任意互联拓扑。
条款E15、一种组合处理装置,所述组合处理装置包括:
如条款E14所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款E16、一种机器学习芯片,所述机器学习芯片包括:
如条款E14所述的机器学习运算装置或如条款E15所述的组合处理装置。
条款E17、一种电子设备,所述电子设备包括:
如条款E16所述的机器学习芯片。
条款E18、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款E16所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款E19、一种最大池化指令处理方法,所述方法应用于最大池化指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的最大池化指令进行解析,得到所述最大池化指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述最大池化指令所需的待运算数据、池化核和目标地址;
利用运算模块根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述最大池化指令对数据所进行的运算为最大池化运算,所述操作域包括待运算数据地址、池化核地址和所述目标地址。
条款E20、根据条款E19所述的方法,根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,包括:
利用所述运算模块中的多个比较器对所述池化核所对应的区域中的多个待运算数据进行比较运算,获得运算结果。
条款E21、根据条款E20所述的方法,所述运算模块包括主运算子模块和多个从运算子模块, 所述主运算子模块包括所述多个比较器,
其中,根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述多个比较器对所述池化核所对应的区域中的多个待运算数据进行比较运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款E22、根据条款E19所述的方法,所述操作域还包括输入高度和输入宽度,
其中,根据所述操作码和所述操作域获取执行所述最大池化指令所需的待运算数据、池化核和目标地址,包括:
从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款E23、根据条款E19所述的方法,所述操作域还包括池化核高度和池化核宽度,
其中,根据所述操作码和所述操作域获取执行所述最大池化指令所需的待运算数据、池化核和目标地址,包括:
按照所述池化核高度和所述池化核宽度从所述池化核地址中获取所述池化核。
条款E24、根据条款E19所述的方法,所述操作域还包括第一步幅,
其中,根据所述池化核对所述待运算数据进行最大池化运算,包括:
按照所述第一步幅在x方向上移动所述池化核。
条款E25、根据条款E19所述的方法,所述操作域还包括第二步幅,
其中,根据所述池化核对所述待运算数据进行最大池化运算,包括:
按照所述第二步幅在y方向上移动所述池化核。
条款E26、根据条款E19所述的方法,根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,包括:
在所述待运算数据上非重叠移动所述池化核,并比较所述池化核所对应的区域中的多个待运算数据,获得所述运算结果。
条款E27、根据条款E19所述的方法,根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,包括:
在所述待运算数据的尺寸为所述池化核的尺寸的非整数倍时,对所述待运算数据中为所述池化核的尺寸的整数倍的数据进行最大池化运算,
其中,所述待运算数据的尺寸为所述池化核的尺寸的非整数倍,包括以下至少一项:所述待运算数据的输入宽度为所述池化核的宽度的非整数倍、所述待运算数据的输入高度为所述池化核的高度的非整数倍。
条款E28、根据条款E19所述的方法,所述操作域还包括池化核数量,
其中,根据所述池化核对所述待运算数据进行最大池化运算,获得运算结果,包括:
通过数量为所述池化核数量的多个池化核,对所述待运算数据进行最大池化运算。
条款E29、根据条款E19所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算数据和所述池化核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述池化核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款E30、根据条款E19所述的方法,对获取到的最大池化指令进行解析,得到所述最大池化指令的操作码和操作域,包括:
存储所述最大池化指令;
对所述最大池化指令进行解析,得到所述最大池化指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行 指令包括所述最大池化指令。
条款E31、根据条款E30所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款E32、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款E19至条款E31任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现填充运算的处理过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的填充指令,技术人员需要自定义对应其编程语言环境的一条或多条指令来实现填充运算,导致进行填充运算效率低、速度慢。本公开提供一种填充指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现填充运算,能够显著提高进行填充运算的效率和速度。
图10-1示出根据本公开一实施例的填充指令处理装置的框图。如图10-1所示,该装置包括控制模块9-11和运算模块9-12。
控制模块9-11,用于对获取到的填充指令进行解析,得到填充指令的操作码和操作域,并根据操作码和操作域获取执行填充指令所需的待运算数据、填充核和目标地址。其中,操作码用于指示填充指令对数据所进行的运算为填充运算,操作域包括待运算数据地址、填充核地址和目标地址。
运算模块9-12,用于根据填充核对待运算数据进行填充运算(pad),获得运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址和填充核地址中,分别获得待运算数据和填充核。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、填充核等参数以及对应的运算方法等等。对于一个填充指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址、填充核地址和目标地址
应当理解的是,本领域技术人员可以根据需要对填充指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收填充指令,并控制一个或多个运算模块进行填充运算。在装置包括多个控制模块时,多个控制模块可以分别接收填充指令,并控制对应的一个或多个运算模块进行填充运算。
本公开实施例所提供的填充指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的填充指令进行解析,得到填充指令的操作码和操作域,并根据操作码和操作域获取执行填充指令所需的待运算数据、填充核和目标地址;运算模块,用于根据填充核对待运算数据进行填充运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的填充指令处理装置的适用范围广,对填充指令的处理效率高、处理速度快,进行填充运算的处理效率高、速度快。
图10-2a示出根据本公开一实施例的填充指令处理装置的框图。在一种可能的实现方式中,如图10-2a所示,运算模块9-12可以包括多个比较器9-120。多个比较器9-120,用于根据填充核对待运 算数据进行填充运算。
在该实现方式中,运算模块还可以包括一个比较器。可以根据所需进行的填充运算的数据量、对填充运算的处理速度、处理效率等需求对比较器的数量进行设置,本公开对此不作限制。
图10-2b示出根据本公开一实施例的填充指令处理装置的框图。在一种可能的实现方式中,如图10-2b所示,运算模块9-12可以包括主运算子模块9-121和多个从运算子模块9-122,主运算子模块9-121包括多个比较器9-120(图中未示出)。
主运算子模块9-121,用于利用多个比较器9-120根据填充核对待运算数据进行填充运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。
其中,控制模块,还用于从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在该实现方式中,输入高度和输入宽度可以限定所获得的待运算数据的数据量和尺寸。操作域所包括的输入高度和输入宽度可以是具体的数值,还可以是存储输入高度和输入宽度的存储地址。在操作域中直接包括输入高度和输入宽度的具体数值时,将该具体数值确定为对应的输入高度和输入宽度。在操作域中包括输入高度和输入宽度的存储地址时,可以分别从输入高度和输入宽度的存储地址中获得输入高度和输入宽度。
在一种可能的实现方式中,在操作域中不包括输入高度和/或输入宽度时,可以根据预先设置的默认输入高度和默认输入宽度获取待运算数据。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该填充指令。
在一种可能的实现方式中,操作域还可以包括填充核高度和填充核宽度。
其中,控制模块9-11,还用于从填充核地址中,获取对应填充核高度和填充核宽度的填充核。
在一种可能的实现方式中,在操作域中不包括填充核高度和填充核宽度时,可以获取预先设置的默认填充核高度、默认填充核宽度,使得控制模块和运算模块可以执行填充指令。
在一种可能的实现方式中,操作域还可以包括填充核数量。其中,运算模块9-12,还用于通过数量为填充核数量的多个填充核,对待运算数据进行填充运算。
在该实现方式中,填充核数量与待运算数据相对应。例如,在填充核数量为5时,可以确定待运算数据可以分为五个部分,需要5个填充核分别对待运算数据的五个部分进行填充运算。
在该实现方式中,在操作域不包括填充核数量时,可以确定待运算数据仅需一个填充核便可以实现填充运算。
在一种可能的实现方式中,如图10-2a、图10-2b所示,该装置还可以包括存储模块9-13。存储模块9-13用于存储待运算数据和填充核。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据和池化核,寄存器可以用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,填充指令的指令格式可以是:
pad dst src channel srcHeight srcWidth padHeight padWdith
其中,pad是填充指令的操作码,dst、src、channel、srcHeight、srcWidth、padHeight、padWdith是填充指令的操作域。其中,dst是目标地址,src0是待运算数据地址,src是填充核或填充核地址,channel是填充核数量,srcHeigh是待运算数据的输入高度,srcWidth是待运算数据的输入宽度,padHeigh是填充核高度,padWdith是填充核宽度。
应当理解的是,本领域技术人员可以根据需要对填充指令的操作码、指令格式中操作码和操作 域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了填充指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用填充指令处理装置进行填充运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解填充指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图10-3示出根据本公开一实施例的填充指令处理装置的应用场景的示意图。如图10-3所示,填充指令处理装置对填充指令进行处理的过程如下:
控制模块9-11对获取到的填充指令1(如填充指令1为pad 500 100 200 5 64 32 2 1)进行解析,得到填充指令1的操作码和操作域。其中,填充指令1的操作码为pad,目标地址为500,待运算数据地址为100,填充核地址为200,填充核数量为5,输入高度为64,输入宽度为32,填充核高度为2,填充核宽度为1。控制模块9-11从待运算数据地址100中获取64×32的待运算数据,从填充核地址200中获取2×1的填充核。
运算模块9-12根据填充核数量5对待运算数据进行填充运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,填充指令处理装置可以高效、快速地对填充指令进行处理,进行填充运算的处理效率高、速度快。
图10-4示出根据本公开一实施例的填充指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-9和步骤S52-9。如图10-4所示,该方法应用于上述填充指令处理装置,该方法包括步骤S51-9和步骤S52-9。
在步骤S51-9中,利用控制模块对获取到的填充指令进行解析,得到填充指令的操作码和操作域,并根据操作码和操作域获取执行填充指令所需的待运算数据、填充核和目标地址。其中,操作码用于指示填充指令对数据所进行的运算为填充运算,操作域包括待运算数据地址、填充核地址和目标地址。
在步骤S52-9中,利用运算模块根据填充核对待运算数据进行填充运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据填充核对待运算数据进行填充运算,得到运算结果,可以包括:
利用运算模块中的多个比较器,根据填充核对待运算数据进行填充运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个比较器。其中,步骤S52-9可以包括:
利用主运算子模块中的多个比较器根据填充核对待运算数据进行填充运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括读输入高度和输入宽度。其中,根据操作码和操作域获取执行填充指令所需的待运算数据、填充核和目标地址,可以包括:
从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在一种可能的实现方式中,操作域还可以包括填充核高度和填充核宽度。
其中,根据操作码和操作域获取执行填充指令所需的待运算数据、填充核和目标地址,可以包括:从填充核地址中,获取对应填充核高度和填充核宽度的填充核。
在一种可能的实现方式中,操作域还可以包括填充核数量。其中,根据填充核对待运算数据进行填充运算,获得运算结果,可以包括:
通过数量为填充核数量的多个填充核,对待运算数据进行填充运算。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算数据和填充核,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据和填充核,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的填充指令进行解析,得到填充指令的操作码和操作域,可以包括:
存储填充指令;
对填充指令进行解析,得到填充指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括填充指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了填充指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的填充指令处理方法的适用范围广,对填充指令的处理效率高、处理速度快,进行填充运算的处理效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款I1、一种填充指令处理装置,所述装置包括:
控制模块,用于对获取到的填充指令进行解析,得到所述填充指令的操作码和操作域,所述操作码用于指示所述填充指令对数据所进行的运算为填充运算,所述操作域包括待运算数据地址、填充核地址和目标地址,并根据所述操作码和所述操作域获取执行所述填充指令所需的待运算数据、填充核和目标地址;
运算模块,用于根据所述填充核对所述待运算数据进行填充运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款I2、根据条款I1所述的装置,所述运算模块,包括:
多个比较器,用于根据所述填充核对所述待运算数据进行填充运算。
条款I3、根据条款I2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
所述主运算子模块,用于利用所述多个比较器根据所述填充核对所述待运算数据进行填充运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款I4、根据条款I1所述的装置,所述操作域还包括输入高度和输入宽度,
其中,所述控制模块,还用于从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款I5、根据条款I1所述的装置,所述操作域还包括填充核高度和填充核宽度,
其中,所述控制模块,还用于从所述填充核地址中,获取对应所述填充核高度和所述填充核宽度的填充核。
条款I6、根据条款I1所述的装置,所述操作域还包括填充核数量,
其中,所述运算模块,还用于通过数量为所述填充核数量的多个填充核,对所述待运算数据进行填充运算。
条款I7、根据条款I1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据和所述填充核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述填充核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款I8、根据条款I1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述填充指令;
指令处理子模块,用于对所述填充指令进行解析,得到所述填充指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述填充指令。
条款I9、根据条款I8所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款I10、一种机器学习运算装置,所述装置包括:
一个或多个如条款I1-条款I9任一项所述的填充指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述填充指令处理装置时,多个所述填充指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述填充指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述填充指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述填充指令处理装置共享内存或者拥有各自的内存;多个所述填充指令处理装置的互联方式是任意互联拓扑。
条款I11、一种组合处理装置,所述组合处理装置包括:
如条款I10所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款I12、一种机器学习芯片,所述机器学习芯片包括:
如条款I10所述的机器学习运算装置或如条款I11所述的组合处理装置。
条款I13、一种电子设备,所述电子设备包括:
如条款I12所述的机器学习芯片。
条款I14、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款I12所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款I15、一种填充指令处理方法,所述方法应用于填充指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的填充指令进行解析,得到所述填充指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述填充指令所需的待运算数据、填充核和目标地址;
利用运算模块根据所述填充核对所述待运算数据进行填充运算,得到运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述填充指令对数据所进行的运算为填充运算,所述操作域包括待运算数据地址、填充核地址和所述目标地址。
条款I16、根据条款I15所述的方法,根据所述填充核对所述待运算数据进行填充运算,得到运算结果,包括:
利用所述运算模块中的多个比较器,根据所述填充核对所述待运算数据进行填充运算。
条款I17、根据条款I16所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个比较器,
其中,根据所述填充核对所述待运算数据进行填充运算,得到运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的所述多个比较器根据所述填充核对所述待运算数据进行填充运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款I18、根据条款I15所述的方法,所述操作域还包括输入高度和输入宽度,
其中,根据所述操作码和所述操作域获取执行所述填充指令所需的待运算数据、填充核和目标地址,包括:
从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款I19、根据条款I15所述的方法,所述操作域还包括填充核高度和填充核宽度,
其中,根据所述操作码和所述操作域获取执行所述填充指令所需的待运算数据、填充核和目标地址,包括:
从所述填充核地址中,获取对应所述填充核高度和所述填充核宽度的填充核。
条款I20、根据条款I15所述的方法,所述操作域还包括填充核数量,
其中,根据所述填充核对所述待运算数据进行填充运算,得到运算结果,包括:
通过数量为所述填充核数量的多个填充核,对所述待运算数据进行填充运算。
条款I21、根据条款I15所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算数据和所述填充核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述填充核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款I22、根据条款I15所述的方法,对获取到的填充指令进行解析,得到所述填充指令的操作码和操作域,包括:
存储所述填充指令;
对所述填充指令进行解析,得到所述填充指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述填充指令。
条款I23、根据条款I22所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指 令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款I24、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款I15至条款I23任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现矩阵转置运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的矩阵转置指令,技术人员需要自定义对应其编程语言环境的多条指令来实现矩阵转置运算,导致进行矩阵转置运算效率低、速度慢。本公开提供一种矩阵转置指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现矩阵转置运算,能够显著提高进行矩阵转置运算的效率和速度。
图11-1示出根据本公开一实施例的矩阵转置指令处理装置的框图。如图11-1所示,该装置包括控制模块10-11和运算模块10-12。
控制模块10-11,用于对获取到的矩阵转置指令进行解析,得到矩阵转置指令的操作码和操作域,并根据操作码和操作域获取执行矩阵转置指令所需的待运算数据、目标地址、待运算数据的输入高度和输入宽度。其中,操作码用于指示矩阵转置指令对数据所进行的运算为矩阵转置运算,操作域包括待运算数据地址、输入高度、输入宽度和目标地址。
运算模块10-12,用于根据输入高度和输入宽度,对待运算数据进行矩阵转置运算,得到转置数据,并将转置数据存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址中获得待运算数据。操作域中可以包括输入高度和输入宽度,或者操作域中包括存储待运算数据的输入高度和输入宽度的存储地址。在操作域中直接包括待运算数据的输入高度和输入宽度的具体数值时,可以将该具体数值确定为输入高度和输入宽度。在操作域中包括输入高度和输入宽度的存储地址时,可以从对应的存储地址中获得输入高度和输入宽度。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、待运算数据的输入高度、输入宽度等参数以及对应的运算方法等等。对于一个矩阵转置指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址、输入高度、输入宽度和目标地址
应当理解的是,本领域技术人员可以根据需要对矩阵转置指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收矩阵转置指令,并控制一个或多个运算模块进行矩阵转置运算。在装置包括多个控制模块时,多个控制模块可以分别接收矩阵转置指令,并控制对应的一个或多个运算模块进行矩阵转置运算。
本公开实施例所提供的矩阵转置指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的矩阵转置指令进行解析,得到矩阵转置指令的操作码和操作域,并根据操作码和操作域获取执行矩阵转置指令所需的待运算数据、目标地址、待运算数据的输入高度和输入宽度;运算模块用于根据输入高度和输入宽度,对待运算数据进行矩阵转置运算,得到转置数据,并将转置数据存入目标地址中。本公开实施例所提供的矩阵转置指令处理装置的适用范围广,对矩阵转置指令 的处理效率高、处理速度快,进行矩阵转置运算的处理效率高、处理速度快。
图11-2a示出根据本公开一实施例的矩阵转置指令处理装置的框图。在一种可能的实现方式中,如图11-2a所示,运算模块10-12可以包括多个矩阵转置运算器10-120。多个矩阵转置运算器10-120,用于根据输入高度和输入宽度,对待运算数据进行矩阵转置运算。其中,转置数据的高度等于输入宽度,转置数据的宽度等于输入高度。
在该实现方式中,运算模块还可以包括一个矩阵转置运算器。可以根据所需进行的矩阵转置运算的数据量、对矩阵转置运算的处理速度、处理效率等需求对矩阵转置运算器的数量进行设置,本公开对此不作限制。
图11-2b示出根据本公开一实施例的矩阵转置指令处理装置的框图。在一种可能的实现方式中,如图11-2b所示,运算模块10-12可以包括主运算子模块10-121和多个从运算子模块10-122,主运算子模块10-121包括多个矩阵转置运算器10-120(图中未示出)。
主运算子模块10-121,用于利用多个矩阵转置运算器10-120根据输入高度和输入宽度对待运算数据进行矩阵转置运算,得到转置数据,并将转置数据存入目标地址中。
在一种可能的实现方式中,如图11-2a、图11-2b所示,该装置还可以包括存储模块10-13。存储模块10-13用于存储待运算数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据,寄存器可以用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,矩阵转置指令的指令格式可以是:
transpose dst src srcHeight srcWidth
其中,transpose是矩阵转置指令的操作码,dst、src、srcHeight、srcWidth是矩阵转置指令的操作域。其中,dst是目标地址,src是待运算数据地址,srcHeight是待运算数据的输入高度,srcWidth是待运算数据的输入宽度。
应当理解的是,本领域技术人员可以根据需要对矩阵转置指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了矩阵转置指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用矩阵转置指令处理装置进行矩阵转置运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解矩阵转置指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图11-3示出根据本公开一实施例的矩阵转置指令处理装置的应用场景的示意图。如图11-3所示,矩阵转置指令处理装置对矩阵转置指令进行处理的过程如下:
控制模块10-11对获取到的矩阵转置指令1(如矩阵转置指令1为transpose 500 100 64 32)进行解析,得到矩阵转置指令1的操作码和操作域。其中,矩阵转置指令1的操作码为transpose,目标地址为500,待运算数据地址为100,输入高度为64,输入宽度为32。控制模块10-11从待运算数据地址100中获取64×32的待运算数据。
运算模块10-12对待运算数据进行矩阵转置运算,得到32×64的转置数据,并将转置数据存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,矩阵转置指令处理装置可以高效、快速地对矩阵转置指令进行处理,进行矩阵转置运算的处理效率高、处理速度快。
图11-4示出根据本公开一实施例的矩阵转置指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-10和步骤S52-10。如图11-4所示,该方法应用于上述矩阵转置指令处理装置,该方法包括步骤S51-10和步骤S52-10。
在步骤S51-10中,利用控制模块对获取到的矩阵转置指令进行解析,得到矩阵转置指令的操作码和操作域,并根据操作码和操作域获取执行矩阵转置指令所需的待运算数据、目标地址、待运算数据的输入高度和输入宽度。其中,操作码用于指示矩阵转置指令对数据所进行的运算为矩阵转置运算,操作域包括待运算数据地址、输入高度、输入宽度和目标地址。
在步骤S52-10中,利用运算模块根据输入高度和输入宽度,对待运算数据进行矩阵转置运算,得到转置数据,并将转置数据存入目标地址中。
在一种可能的实现方式中,根据输入高度和输入宽度,对待运算数据进行矩阵转置运算,得到转置数据,可以包括:
利用多个矩阵转置运算器,根据输入高度和输入宽度对待运算数据进行矩阵转置运算。其中,转置数据的高度等于输入宽度,转置数据的宽度等于输入高度。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个矩阵转置运算器。其中,步骤S52-10可以包括:
利用主运算子模块中的多个矩阵转置运算器根据输入高度和输入宽度对待运算数据进行矩阵转置运算,得到转置数据,并将转置数据存入目标地址中。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算数据,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的矩阵转置指令进行解析,得到矩阵转置指令的操作码和操作域,可以包括:
存储矩阵转置指令;
对矩阵转置指令进行解析,得到矩阵转置指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括矩阵转置指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了矩阵转置指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的矩阵转置指令处理方法的适用范围广,对矩阵转置指令的处理效率高、处理速度快,进行矩阵转置运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款J1、一种矩阵转置指令处理装置,所述装置包括:
控制模块,用于对获取到的矩阵转置指令进行解析,得到所述矩阵转置指令的操作码和操作域,所述操作码用于指示所述矩阵转置指令对数据所进行的运算为矩阵转置运算,所述操作域包括待运算数据地址、输入高度、输入宽度和目标地址,并根据所述操作码和所述操作域获取执行所述矩阵转置指令所需的待运算数据、目标地址、所述待运算数据的输入高度和输入宽度;
运算模块,用于根据所述输入高度和所述输入宽度,对所述待运算数据进行矩阵转置运算,得到转置数据,并将所述转置数据存入所述目标地址中。
条款J2、根据条款J1所述的装置,所述运算模块,包括:
多个矩阵转置运算器,用于根据所述输入高度和所述输入宽度,对所述待运算数据进行矩阵转置运算,
其中,所述转置数据的高度等于所述输入宽度,所述转置数据的宽度等于所述输入高度。
条款J3、根据条款J2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个矩阵转置运算器,
所述主运算子模块,用于利用所述多个矩阵转置运算器根据所述输入高度和所述输入宽度对所述待运算数据进行矩阵转置运算,得到转置数据,并将所述转置数据存入所述目标地址中。
条款J4、根据条款J1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款J5、根据条款J1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述矩阵转置指令;
指令处理子模块,用于对所述矩阵转置指令进行解析,得到所述矩阵转置指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述矩阵转置指令。
条款J6、根据条款J5所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款J7、一种机器学习运算装置,所述装置包括:
一个或多个如条款J1-条款J6任一项所述的矩阵转置指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述矩阵转置指令处理装置时,多个所述矩阵转置指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述矩阵转置指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述矩阵转置指令处理装置共享同一控制系统或拥 有各自的控制系统;多个所述矩阵转置指令处理装置共享内存或者拥有各自的内存;多个所述矩阵转置指令处理装置的互联方式是任意互联拓扑。
条款J8、一种组合处理装置,所述组合处理装置包括:
如条款J7所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款J9、一种机器学习芯片,所述机器学习芯片包括:
如条款J7所述的机器学习运算装置或如条款J8所述的组合处理装置。
条款J10、一种电子设备,所述电子设备包括:
如条款J9所述的机器学习芯片。
条款J11、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款J9所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款J12、一种矩阵转置指令处理方法,所述方法应用于矩阵转置指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的矩阵转置指令进行解析,得到所述矩阵转置指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述矩阵转置指令所需的待运算数据、目标地址、所述待运算数据的输入高度和输入宽度;
利用运算模块根据所述输入高度和所述输入宽度,对所述待运算数据进行矩阵转置运算,得到转置数据,并将所述转置数据存入所述目标地址中,
其中,所述操作码用于指示所述矩阵转置指令对数据所进行的运算为矩阵转置运算,所述操作域包括待运算数据地址、所述输入高度、所述输入宽度和所述目标地址。
条款J13、根据条款J12所述的方法,根据所述输入高度和所述输入宽度,对所述待运算数据进行矩阵转置运算,得到转置数据,包括:
利用所述运算模块中的多个矩阵转置运算器,根据所述输入高度和所述输入宽度对所述待运算数据进行矩阵转置运算,
其中,所述转置数据的高度等于所述输入宽度,所述转置数据的宽度等于所述输入高度。
条款J14、根据条款J13所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个矩阵转置运算器,
其中,根据所述输入高度和所述输入宽度,对所述待运算数据进行矩阵转置运算,得到转置数据,并将所述转置数据存入所述目标地址中,包括:
利用所述主运算子模块中的多个矩阵转置运算器根据所述输入高度和所述输入宽度对所述待运算数据进行矩阵转置运算,得到转置数据,并将所述转置数据存入所述目标地址中。
条款J15、根据条款J12所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款J16、根据条款J12所述的方法,对获取到的矩阵转置指令进行解析,得到所述矩阵转置指 令的操作码和操作域,包括:
存储所述矩阵转置指令;
对所述矩阵转置指令进行解析,得到所述矩阵转置指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述矩阵转置指令。
条款J17、根据条款J16所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款J18、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款J12至条款J17任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。平均池化运算(Average-pooling))是一种获取局部区中所有数据的平均值。由于编程语言的种类多样,在不同的语言环境下,为实现平均池化运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的平均池化指令,技术人员需要自定义对应其编程语言环境的多条指令来实现平均池化运算,导致进行平均池化运算效率低、速度慢。本公开提供一种平均池化指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现平均池化运算,能够显著提高进行平均池化运算的效率和速度。
图12-1示出根据本公开一实施例的平均池化指令处理装置的框图。如图12-1所示,该装置包括控制模块11-11和运算模块11-12。
控制模块11-11,用于对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,并根据操作码和操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址。其中,操作码用于指示平均池化指令对数据所进行的运算为平均池化运算,操作域包括待运算数据地址、池化核地址和目标地址。
运算模块11-12,用于根据池化核对待运算数据进行平均池化运算,获得运算结果,并将运算结果存入目标地址中。
在本实施例中,控制模块可以从待运算数据地址和池化核地址中,分别获得待运算数据和池化核。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、池化核等参数以及对应的运算方法等等。对于一个平均池化指令其必须包括操作码和操作域,其中,操作域至少包括待运算数据地址、池化核地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对平均池化指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收平均池化指令,并控制一个或多个运算模块进行平均池化运算。在装置包括多个控制模块时,多个控制模块可以分别接收平均池化指令,并控制对应的一个或多个运算模块进行平均池化运算。
本公开实施例所提供的平均池化指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,并根据操作码和操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址;运算模块用于根据池化核对待运算数据进行平均池化运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的平均池化指令处理装置的适用范围广,对平均池化指令的处理效率高、处理速度快,进行平均池化运算的处理效率高、速度快。
图12-2a示出根据本公开一实施例的平均池化指令处理装置的框图。在一种可能的实现方式中,如图12-2a所示,运算模块11-12可以包括多个加法器11-120和多个除法器11-120’。多个加法器11-120用于执行平均池化运算中的加法运算。多个除法器11-120’用于执行平均池化运算中的除法运算。
在该实现方式中,运算模块也可以包括一个加法器和一个除法器,或者包括一个加法器、多个除法器,再或者包括多个加法器、一个除法器。可以根据所需进行的平均池化运算的数据量的大小、对平均池化运算的处理速度、效率等要求对加法器和除法器的数量进行设置,本公开对此不作限制。
图12-2b示出根据本公开一实施例的平均池化指令处理装置的框图。在一种可能的实现方式中,如图12-2b所示,运算模块11-12可以包括主运算子模块11-121和多个从运算子模块11-122。主运算子模块11-121可以包括多个加法器和多个除法器。
主运算子模块11-121,用于利用多个加法器和多个除法器分别进行平均池化运算中的加法运算和除法运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。
其中,控制模块,还用于从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在该实现方式中,输入高度和输入宽度可以限定所获得的待运算数据的数据量和尺寸。操作域所包括的输入高度和输入宽度可以是具体的数值,还可以是存储输入高度和输入宽度的存储地址。在操作域中直接包括输入高度和输入宽度的具体数值时,将该具体数值确定为对应的输入高度和输入宽度。在操作域中包括输入高度和输入宽度的存储地址时,可以分别从输入高度和输入宽度的存储地址中获得输入高度和输入宽度。
在一种可能的实现方式中,在操作域中不包括输入高度和/或输入宽度时,可以根据预先设置的默认输入高度和默认输入宽度获取待运算数据。
通过上述方式,可以对待运算数据的数据量和尺寸进行限制,保证运算结果的准确性,并保证装置可以执行该平均池化指令。
在一种可能的实现方式中,操作域还可以包括池化核高度和池化核宽度。
其中,控制模块11-11,还用于按照池化核高度和池化核宽度从池化核地址中获取池化核。
在一种可能的实现方式中,操作域还可以包括第一步幅。其中,运算模块11-12,还可以用于按照第一步幅在x方向上移动池化核。
在一种可能的实现方式中,操作域还可以包括第二步幅。其中,运算模块11-12,还可以用于按照第二步幅在y方向上移动池化核。
在该实现方式中,平均池化运算的步幅是在进行平均池化运算中每一次移动池化核的幅度。第一步幅可以是在x方向上移动池化核的幅度,第二步幅可以是在y方向上移动池化核的幅度。
需要说明的是,在本公开中仅以池化核为二维为例,描述了进行平均池化运算所需的池化核的高度、宽度、第一步幅和第二步幅等参数,若池化核为多维,在相应地池化核的参数则包括其每个维度的尺寸和步幅。
在一种可能的实现方式中,在平均池化指令的操作域中并未给出第一步幅和第二步幅时,运算模块可以以池化核的高度和宽度分别为其对应维度的步幅,保证平均池化运算的正常进行。例如,运算模块11-12还可以用于在待运算数据上非重叠移动池化核,并比较池化核所对应的区域中的多个待运算数据,获得运算结果。
在一种可能的实现方式中,在操作域中不包括池化核高度、池化核宽度、时,可以获取预先设置的默认池化核高度、默认池化核宽度,使得控制模块和运算模块可以执行平均池化指令。
在一种可能的实现方式中,操作域还可以包括池化核数量。其中,运算模块11-12,还用于通过数量为池化核数量的多个池化核,对待运算数据进行平均池化运算。
在该实现方式中,池化核数量与待运算数据相对应。例如,在池化核数量为5时,可以确定待运算数据可以分为五个部分,需要5个池化核分别对待运算数据的五个部分进行平均池化运算。
在该实现方式中,在操作域不包括池化核数量时,可以确定待运算数据仅需一个池化核便可以实现平均池化运算。
在一种可能的实现方式中,运算模块11-12还用于在待运算数据的尺寸为池化核的尺寸的非整数倍时,对待运算数据中为池化核的尺寸的整数倍的数据进行平均池化运算。其中,待运算数据的尺寸为所述池化核的尺寸的非整数倍,可以包括以下至少一项:待运算数据的输入宽度为池化核的宽度的非整数倍、待运算数据的输入高度为池化核的高度的非整数倍。
在该实现方式中,对于待运算数据中为池化核的尺寸的非整数倍的部分剩余数据可以不进行平均池化运算。
在一种可能的实现方式中,如图12-2a、图12-2b所示,该装置还可以包括存储模块11-13。存储模块11-13用于存储待运算数据和池化核。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据和池化核,寄存器可以用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,平均池化指令的指令格式可以是:
avgpool dst src0 src1 srcChannel srcHeigh srcWidth kernelHeight kernelWidth sx sy
其中,avgpool为平均池化指令的操作码,dst、src0、src1、srcChannel、srcHeigh、srcWidth、kernelHeight、kernelWidth、sx、sy为平均池化指令的操作域。其中,dst为目标地址,src0为待运算数据地址,src1为池化核地址,srcChannel为池化核数量,srcHeigh为输入高度,srcWidth为输入宽度,kernelHeight为池化核高度,kernelWidth为池化核宽度,sx为池化核在x方向上进行移动的第一步幅,sy为池化核在y方向上进行移动的第二步幅。
应当理解的是,本领域技术人员可以根据需要对平均池化指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了平均池化指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用平均池化指令处理装置进行平均池化运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解平均池化指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图12-3示出根据本公开一实施例的平均池化指令处理装置的应用场景的示意图。如图12-3所示,平均池化指令处理装置对平均池化指令进行处理的过程如下:
控制模块11-11对获取到的平均池化指令1(如平均池化指令1为avgpool 500 100 200 5 64 32 2 22 1)进行解析,得到平均池化指令1的操作码和操作域。其中,平均池化指令1的操作码为avgpool,目标地址为500,待运算数据地址为100,池化核地址为200,池化核数量为5,输入高度为64,输入 宽度为32,池化核高度为2,池化核宽度为2,第一步幅为2,第二步幅为1。控制模块11-11从待运算数据地址100中获取64×32的待运算数据,从池化核地址200中获取2×2的池化核。
运算模块11-12利用5个池化核对待运算数据进行平均池化运算,得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,可以高效、快速地对平均池化指令进行处理,且进行平均池化运算的效率和速度也有显著提高。
图12-4示出根据本公开一实施例的平均池化指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-11和步骤S52-11。如图12-4所示,该方法应用于上述平均池化指令处理装置,该方法包括步骤S51-11和步骤S52-11。
在步骤S51-11中,利用控制模块对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,并根据操作码和操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址。其中,操作码用于指示平均池化指令对数据所进行的运算为平均池化运算,操作域包括待运算数据地址、池化核地址和目标地址。
在步骤S52-11中,利用运算模块根据池化核对待运算数据进行平均池化运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据池化核对待运算数据进行平均池化运算,获得运算结果,可以包括:利用运算模块中的多个加法器执行平均池化运算中的加法运算,以及利用运算模块中的多个除法器执行平均池化运算中的除法运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个加法器和多个除法器。其中,步骤S52-11可以包括:
利用主运算子模块中的多个加法器和多个除法器分别进行平均池化运算中的加法运算和除法运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括输入高度和输入宽度。其中,根据操作码和操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址,可以包括:
从待运算数据地址中,获取对应输入宽度和输入高度的待运算数据。
在一种可能的实现方式中,操作域还可以包括池化核高度和池化核宽度。其中,根据操作码和操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址,可以包括:
按照池化核高度和池化核宽度从池化核地址中获取池化核。
在一种可能的实现方式中,操作域还可以包括第一步幅。其中,根据池化核对待运算数据进行平均池化运算,可以包括:按照第一步幅在x方向上移动池化核。
在一种可能的实现方式中,操作域还可以包括第二步幅。其中,根据池化核对待运算数据进行平均池化运算,可以包括:按照第二步幅在y方向上移动池化核。
在一种可能的实现方式中,根据池化核对待运算数据进行平均池化运算,获得运算结果,可以包括:
在待运算数据上非重叠移动池化核,并比较池化核所对应的区域中的多个待运算数据,获得运算结果。
在一种可能的实现方式中,根据池化核对待运算数据进行平均池化运算,获得运算结果,可以包括:
在待运算数据的尺寸为池化核的尺寸的非整数倍时,对待运算数据中为池化核的尺寸的整数倍的数据进行平均池化运算,
其中,待运算数据的尺寸为池化核的尺寸的非整数倍,可以包括以下至少一项:待运算数据的输入宽度为池化核的宽度的非整数倍、待运算数据的输入高度为池化核的高度的非整数倍。
在一种可能的实现方式中,操作域还可以包括池化核数量。其中,根据池化核对待运算数据进 行平均池化运算,获得运算结果,可以包括:
通过数量为池化核数量的多个池化核,对待运算数据进行平均池化运算。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算数据和池化核。其中,存储模块可以包括寄存器和缓存中的至少一种,缓存用于存储待运算数据和池化核,缓存可以包括至少一个神经元缓存NRAM;寄存器用于存储待运算数据中的标量数据;神经元缓存用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,可以包括:
存储平均池化指令;
对平均池化指令进行解析,得到平均池化指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括平均池化指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,在第零待执行指令执行完毕后,执行第一待执行指令,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了平均池化指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的平均池化指令处理方法的适用范围广,对平均池化指令的处理效率高、处理速度快,进行平均池化运算的处理效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款K1、一种平均池化指令处理装置,所述装置包括:
控制模块,用于对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,并根据所述操作码和所述操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址;
运算模块,用于根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述平均池化指令对数据所进行的运算为平均池化运算,所述操作域包括待运算数据地址、池化核地址和所述目标地址。
条款K2、根据条款K1所述的装置,所述运算模块,包括:
多个加法器,用于执行所述平均池化运算中的加法运算;
多个除法器,用于执行所述平均池化运算中的除法运算。
条款K3、根据条款K2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个加法器和所述多个除法器,
所述主运算子模块,用于利用所述多个加法器和所述多个除法器分别进行所述平均池化运算中的加法运算和除法运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款K4、根据条款K1所述的装置,所述操作域还包括输入高度和输入宽度,
其中,所述控制模块,还用于从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款K5、根据条款K1所述的装置,所述操作域还包括池化核高度和池化核宽度,
其中,所述控制模块,还用于按照所述池化核高度和所述池化核宽度从所述池化核地址中获取所述池化核。
条款K6、根据条款K1所述的装置,所述操作域还包括第一步幅,
其中,所述运算模块,还用于按照所述第一步幅在x方向上移动所述池化核。
条款K7、根据条款K1所述的装置,所述操作域还包括第二步幅,
其中,所述运算模块,还用于按照所述第二步幅在y方向上移动所述池化核。
条款K8、根据条款K1所述的装置,
所述运算模块,还用于在所述待运算数据上非重叠移动所述池化核,并比较所述池化核所对应的区域中的多个待运算数据,获得所述运算结果。
条款K9、根据条款K1所述的装置,
所述运算模块,还用于在所述待运算数据的尺寸为所述池化核的尺寸的非整数倍时,对所述待运算数据中为所述池化核的尺寸的整数倍的数据进行平均池化运算,
其中,所述待运算数据的尺寸为所述池化核的尺寸的非整数倍,包括以下至少一项:所述待运算数据的输入宽度为所述池化核的宽度的非整数倍、所述待运算数据的输入高度为所述池化核的高度的非整数倍。
条款K10、根据条款K1所述的装置,所述操作域还包括池化核数量,
其中,所述运算模块,还用于通过数量为所述池化核数量的多个池化核,对所述待运算数据进行平均池化运算。
条款K11、根据条款K1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据和所述池化核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述池化核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款K12、根据条款K1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述平均池化指令;
指令处理子模块,用于对所述平均池化指令进行解析,得到平均池化指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述平均池化指令。
条款K13、根据条款K12所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款K14、一种机器学习运算装置,所述装置包括:
一个或多个如条款K1-条款K13任一项所述的平均池化指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述平均池化指令处理装置时,多个所述平均池化指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述平均池化指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述平均池化指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述平均池化指令处理装置共享内存或者拥有各自的内存;多个所述平均池化指令处理装置的互联方式是任意互联拓扑。
条款K15、一种组合处理装置,所述组合处理装置包括:
如条款K14所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款K16、一种机器学习芯片,所述机器学习芯片包括:
如条款K14所述的机器学习运算装置或如条款K15所述的组合处理装置。
条款K17、一种电子设备,所述电子设备包括:
如条款K16所述的机器学习芯片。
条款K18、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款K16所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款K19、一种平均池化指令处理方法,所述方法应用于平均池化指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的平均池化指令进行解析,得到平均池化指令的操作码和操作域,并根据所述操作码和所述操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址;
利用运算模块根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述平均池化指令对数据所进行的运算为平均池化运算,所述操作域包括待运算数据地址、池化核地址和所述目标地址。
条款K20、根据条款K19所述的方法,根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,包括:
利用所述运算模块中的多个加法器执行所述平均池化运算中的加法运算,以及利用所述运算模块中的多个除法器执行所述平均池化运算中的除法运算。
条款K21、根据条款K20所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括多个加法器和多个除法器,
其中,根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的所述多个加法器和所述多个除法器分别进行加法运算和除法运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款K22、根据条款K19所述的方法,所述操作域还包括输入高度和输入宽度,
其中,根据所述操作码和所述操作域获取执行所述平均池化指令所需的待运算数据、池化核和目标地址,包括:
从所述待运算数据地址中,获取对应所述输入宽度和所述输入高度的待运算数据。
条款K23、根据条款K19所述的方法,所述操作域还包括池化核高度和池化核宽度,
其中,根据所述操作码和所述操作域获取执行平均池化指令所需的待运算数据、池化核和目标地址,包括:
按照所述池化核高度和所述池化核宽度从所述池化核地址中获取所述池化核。
条款K24、根据条款K19述的方法,所述操作域还包括第一步幅,
其中,根据所述池化核对所述待运算数据进行平均池化运算,包括:
按照所述第一步幅在x方向上移动所述池化核。
条款K25、根据条款K19所述的方法,所述操作域还包括第二步幅,
其中,根据所述池化核对所述待运算数据进行平均池化运算,包括:
按照所述第二步幅在y方向上移动所述池化核。
条款K26、根据条款K19所述的方法,根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,包括:
在所述待运算数据上非重叠移动所述池化核,并比较所述池化核所对应的区域中的多个待运算数据,获得所述运算结果。
条款K27、根据条款K19所述的方法,根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,包括:
在所述待运算数据的尺寸为所述池化核的尺寸的非整数倍时,对所述待运算数据中为所述池化核的尺寸的整数倍的数据进行平均池化运算,
其中,所述待运算数据的尺寸为所述池化核的尺寸的非整数倍,包括以下至少一项:所述待运算数据的输入宽度为所述池化核的宽度的非整数倍、所述待运算数据的输入高度为所述池化核的高度的非整数倍。
条款K28、根据条款K19所述的方法,所述操作域还包括池化核数量,
其中,根据所述池化核对所述待运算数据进行平均池化运算,获得运算结果,包括:
通过数量为所述池化核数量的多个池化核,对所述待运算数据进行平均池化运算。
条款K29、根据条款K19所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算数据和所述池化核,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据和所述池化核,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款K30、根据条款K19所述的方法,对获取到的平均池化指令进行解析,得到所述平均池化指令的操作码和操作域,包括:
存储所述平均池化指令;
对所述平均池化指令进行解析,得到平均池化指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述平均池化指令。
条款K31、根据条款K30所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款K32、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款K19至条款K31任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现标量运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的标量指令,技术人员需要自定义对应其编程语言环境的多条指令来实现不同类型的标量运算,导致进行标量运算效率低、速度慢。本公开提供一种标量指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现标量运算,能够显著提高进行标量运算的效率和速度。
图13-1示出根据本公开一实施例的标量指令处理装置的框图。如图13-1所示,该装置包括控制模块13-11和运算模块13-12。
控制模块13-11,用于对获取到的标量指令进行解析,得到标量指令的操作码和操作域,并根据操作码和操作域获取执行标量指令所需的待运算标量和目标地址,以及确定标量指令的标量运算类型。其中,操作码用于指示标量指令对数据所进行的运算为标量运算,操作域包括待运算标量地址和目标地址。
运算模块13-12,用于根据标量运算类型对待运算标量进行标量运算,获得运算结果,并将运算结果存入目标地址中。
在本实施例中,待运算标量可以是一个或多个。标量运算类型所指示的运算种类,可以指示对待运算标量所进行的算术运算、逻辑运算的种类或类型。例如,相加运算、逻辑左移运算等。标量运算类型所指示的待运算标量的数据类型可以是待运算标量的存储类型。数据类型可以包括16位无符号类型、32位无符号类型、48位无符号类型、16位有符号类型、32位有符号类型、48位有符号类型、指针类型等能够应用于标量的数据类型。本领域技术人员可以根据实际需要对运算种类和数据类型进行设置,本公开对此不作限制。
在本实施例中,控制模块所获取到的标量指令为无需编译的、可以直接供硬件执行的硬件指令,控制模块可以对获取到的标量指令进行解析。控制模块可以从待运算标量地址中,分别获得待运算标量。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算标量、标量运算类型等参数以及对应的运算方法等等。对于一个标量指令其必须包括操作码和操作域,其中,操作域至少包括待运算标量地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对标量指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收标量指令,并控制一个或多个运算模块进行标量运算。在装置包括多个控制模块时,多个控制模块可以分别接收标量指令,并控制对应的一个或多个运算模块进行标量运算。
本公开实施例所提供的标量指令处理装置,该装置包括控制模块和运算模块,控制模块,用于对获取到的标量指令进行解析,得到标量指令的操作码和操作域,并根据操作码和操作域获取执行标量指令所需的待运算标量和目标地址,以及确定标量指令的标量运算类型;运算模块,用于根据标量运算类型对待运算标量进行标量运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的标量指令处理装置的适用范围广,对标量指令的处理效率高、处理速度快,进行标量运算的处理效率高、处理速度快。
图13-2a示出根据本公开一实施例的标量指令处理装置的框图。在一种可能的实现方式中,如图13-2a所示,运算模块13-12可以包括多个标量运算器13-120。多个标量运算器13-120用于执行与标量运算类型相对应的标量运算。
在该实现方式中,标量运算器可以包括加法器、除法器、乘法器等能够对标量进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的标量运算的数据量的大小、标量运算类型、对标量运算的处理速度、效率等要求对标量运算器的种类及数量进行设置,本公开对此不作限制。
图13-2b示出根据本公开一实施例的标量指令处理装置的框图。在一种可能的实现方式中,如图13-2b所示,运算模块13-12可以包括主运算子模块13-121和多个从运算子模块13-122。主运算子模块13-121可以包括多个标量运算器(图中未示出)。
主运算子模块13-121,用于利用多个标量运算器执行标量运算,得到运算结果,并将运算结果 存入目标地址中。
在一种可能的实现方式中,操作域还可以包括标量运算类型。
其中,控制模块13-11,还可以用于根据操作域确定标量运算类型。
在该实现方式中,标量运算类型用于指示标量指令对待运算标量所需进行的运算的类型。
在一种可能的实现方式中,运算种类可以是相加运算、求和运算、相乘运算、按位相与运算、按位求余数运算、按位求绝对值运算、按位相除运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算、逻辑左移运算、逻辑右移运算、算术右移运算、逻辑与运算、逻辑或运算、逻辑异或运算和逻辑取反运算中的至少一种。
在该实现方式中,可以为不同的标量运算类型设置不同的操作域代码,以区分不同的标量运算类型。例如,可以将相加运算的代码设置为add。可以将求和运算的代码设置为sub。可以将相乘运算的代码设置为mul。可以将按位相与运算的代码设置为and。可以将按位求余数运算的代码设置为rem。可以将按位求绝对值运算的代码设置为abs。可以将按位相除运算的代码设置为div。可以将按位或运算的代码设置为or。可以将按位异或运算的代码设置为xor。可以将按位取反运算的代码设置为not。可以将按位求最大值运算的代码设置为max。可以将按位求最小值运算的代码设置为min。可以将逻辑左移运算的代码设置为sll。可以将逻辑右移运算的代码设置为srl。可以将算术右移运算的代码设置为sra。可以将逻辑与运算的代码设置为land。可以将逻辑或运算的代码设置为lor。可以将逻辑异或运算的代码设置为lxo。可以将逻辑取反运算的代码设置为lnot。本领域技术人员可以根据实际需要对运算种类的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,操作域还可以包括运算参数。
其中,控制模块13-11,还用于根据操作域确定运算参数。
其中,运算模块13-12,还用于根据标量运算类型,对待运算标量进行标量运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,如图13-2a、图13-2b所示,该装置还可以包括存储模块13-13。存储模块13-13用于存储待运算标量。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据,寄存器可以用于存储待运算标量。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。其中,待运算数据包括与进行标量运算相关的数据、和/或与其他计算指令的运算相关的数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,标量指令的指令格式可以是:
scalar dst src opcode.type pa。
其中,scalar为标量指令的操作码,dst、src、opcode.type、pa为标量指令的操作域。其中,dst为目标地址。src为待运算标量地址,在待运算标量为多个时,src可以包括多个待运算向量地址src0,src1,…,srcn,本公开对此不作限制。opcode.type为标量运算类型,opcode.type中的opcode表示标量运算的种类,opcode.type中的type表示待运算标量的数据类型。pa为运算参数,如,移位个数等。
在一种可能的实现方式中,标量指令的指令格式可以是:
opcode.scalar.type dst src pa。
其中,opcode.scalar.type为标量指令的操作码,dst、src、pa为标量指令的操作域。其中,dst为目标地址。src为待运算标量地址,在待运算标量为多个时,src可以包括多个待运算向量地址src0,src1,…,srcn,本公开对此不作限制。或者,可以从src获取到多个待运算标量。pa为运算参数,如,移位个数等。操作码opcode.scalar.type中,opcode表示标量运算的种类,type表示待运算标量的数据类型。type可以是u16、u32、u48、s16、s32、s48、ptr,u16表示待运算向量为无符号且长度为 16位的标量、u32表示待运算向量为无符号且长度为32位的标量、u48表示待运算向量为无符号且长度为48位的标量、s16表示待运算向量为有符号且长度为16位的标量、s32表示待运算向量为有符号且长度为32位的标量、s48表示待运算向量为有符号且长度为48位的标量、ptr表示待运算向量为指针类型的标量。
在一种可能的实现方式中,可以将用于标量相加运算的标量指令的指令格式设置为:add.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量相加,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于标量相加运算的标量指令的指令格式设置为:add.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行相加运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于标量求和运算的标量指令的指令格式设置为:sub.scalar.type dst src0。其表示:将src0存储的数据类型为type的多个待运算标量进行求和运算,得到运算结果。并将运算结果存储到目标地址dst中。或者,可以将用于标量求和运算的标量指令的指令格式设置为:sub.scalar.type dst src0 src1,…,srcn。其表示:将src0,src1,…,srcn中存储的数据类型为type的多个待运算标量进行求和运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于标量相乘运算的标量指令的指令格式设置为:mul.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量相乘,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位相与运算的标量指令的指令格式设置为:and.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量按位相与,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位求余数运算的标量指令的指令格式设置为:rem.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行按位求余数运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位求绝对值运算的标量指令的指令格式设置为:abs.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行按位求绝对值运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位相除运算的标量指令的指令格式设置为:div.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行按位相除运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位或运算的标量指令的指令格式设置为:or.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行按位或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位异或运算的标量指令的指令格式设置为:xor.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行按位异或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位取反运算的标量指令的指令格式设置为:not.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行按位取反运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位求最大值运算的标量指令的指令格式设置为: max.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行按位求最大值运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于按位求最小值运算的标量指令的指令格式设置为:min.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行按位求最小值运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑左移运算的标量指令的指令格式设置为:sll.scalar.type dst src0 pa。其表示:将src0存储的数据类型为type的待运算标量进行逻辑左移pa位,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑右移运算的标量指令的指令格式设置为:srl.scalar.type dst src0 pa。其表示:将src0存储的数据类型为type的待运算标量进行逻辑右移pa位,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑与运算的标量指令的指令格式设置为:land.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行逻辑与运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑或运算的标量指令的指令格式设置为:lor.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行逻辑或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑异或运算的标量指令的指令格式设置为:lxo.scalar.type dst src0 src1。其表示:将src0存储的数据类型为type的第一待运算标量和将src1存储的数据类型为type的第二待运算标量进行逻辑异或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于逻辑取反运算的标量指令的指令格式设置为:lnot.scalar.type dst src0。其表示:将src0存储的数据类型为type的待运算标量进行逻辑取反运算,得到运算结果。并将运算结果存储到目标地址dst中。
应当理解的是,本领域技术人员可以根据需要对标量指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用标量指令处理装置进行标量运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解标量指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图13-3a、图13-3b示出根据本公开一实施例的标量指令处理装置的应用场景的示意图。如图13-3a、图13-3b所示,标量指令处理装置对标量指令进行处理的过程如下:
示例一
如图13-3a所述,控制模块13-11对获取到的标量指令1进行解析,得到标量指令1(如标量指令1为scalar 500 101 102 add.u16)的操作码和操作域。其中,标量指令1的操作码为scalar,目标地址为500,第一待运算标量地址为101,第二待运算向量地址为102。标量运算类型为add.u16,其中运算种类为相加运算add,数据类型为16位无符号标量。控制模块13-11从待运算标量地址101中获取 到16位无符号的第一待运算标量,以及从待运算标量地址102中获取到16位无符号的第二待运算标量。
运算模块13-12对第一待运算标量和第二待运算标量进行相加运算,得到运算结果1,并将运算结果1存入目标地址500中。
示例二
如图13-3b所示,控制模块13-11对获取到的标量指令2进行解析得到标量指令2(如标量指令2为mul.scalar.u16 501 103 104)的操作码和操作域。其中,标量指令2的操作码为mul.scalar.u16,目标地址为501,第三待运算标量地址为103,第四待运算标量的地址为104。控制模块13-11从待运算标量地址101中获取到16位无符号的第一待运算标量,以及从待运算标量地址102中获取到16位无符号的第二待运算标量。
运算模块13-12对第一待运算标量和第二待运算标量进行相乘运算,得到运算结果2,并将运算结果2存入目标地址501中。
以上各模块的工作过程可参考上文的相关描述。
这样,标量指令处理装置可以高效、快速地对标量指令进行处理,进行标量运算的处理效率高、处理速度快。
图13-4示出根据本公开一实施例的标量指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-13和步骤S52-13。如图13-4所示,该方法应用于上述标量指令处理装置,该方法包括步骤S51-13和步骤S52-13。
在步骤S51-13中,利用控制模块对获取到的标量指令进行解析,得到标量指令的操作码和操作域,并根据操作码和操作域获取执行标量指令所需的待运算标量和目标地址,以及确定标量指令的标量运算类型。其中,操作码用于指示标量指令对数据所进行的运算为标量运算,标量运算类型用于指示进行标量运算的种类和待运算标量的数据类型,操作域包括待运算标量地址和目标地址。
在步骤S52-13中,利用运算模块根据标量运算类型对待运算标量进行标量运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据标量运算类型对待运算标量进行标量运算,获得运算结果,可以包括:利用运算模块中的多个标量运算器执行与标量运算类型相对应的标量运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个标量运算器。其中,步骤S52-13可以包括:
利用主运算子模块中的多个标量运算器执行与标量运算类型相对应的标量运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括标量运算类型。其中,确定标量指令的标量运算类型,可以包括:
根据操作域确定标量运算类型。
在一种可能的实现方式中,操作域还可以包括运算参数。其中,根据操作码和操作域获取执行标量指令所需的待运算标量和目标地址,还可以包括:根据操作域确定运算参数。
其中,根据标量运算类型对待运算标量进行标量运算,可以包括:
根据运算参数和标量运算类型,对待运算标量进行标量运算。
在一种可能的实现方式中,运算种类包括以下至少一种:相加运算、求和运算、相乘运算、按位相与运算、按位求余数运算、按位求绝对值运算、按位相除运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算、逻辑左移运算、逻辑右移运算、算术右移运算、逻辑与运算、逻辑或运算、逻辑异或运算和逻辑取反运算。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算标量,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算标量;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的标量指令进行解析,得到标量指令的操作码和操作域,可以包括:
存储标量指令;
对标量指令进行解析,得到标量指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,待执行指令可以包括标量指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系可以包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量指令处理方法的适用范围广,对标量的处理效率高、处理速度快,进行标量运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款M1、一种标量指令处理装置,所述装置包括:
控制模块,用于对获取到的标量指令进行解析,得到标量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量指令所需的待运算标量和目标地址,以及确定标量指令的标量运算类型;
运算模块,用于根据所述标量运算类型对所述待运算标量进行标量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述标量指令对数据所进行的运算为标量运算,所述标量运算类型用于指示进行标量运算的运算种类和所述待运算标量的数据类型,所述操作域包括待运算标量地址和所述目标地址。
条款M2、根据条款M1所述的装置,所述运算模块,包括:
多个标量运算器,用于执行与所述标量运算类型相对应的标量运算。
条款M3、根据条款M2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个标量运算器,
所述主运算子模块,用于利用所述多个标量运算器执行所述标量运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款M4、根据条款M1所述的装置,所述操作域还包括标量运算类型,
其中,所述控制模块,还用于根据所述操作域确定所述标量运算类型。
条款M5、根据条款M1所述的装置,所述操作域还包括运算参数,
其中,所述控制模块,还用于根据所述操作域确定所述运算参数;
所述运算模块,还用于根据所述运算参数和所述标量运算类型,对所述待运算标量进行标量运算。
条款M6、根据条款M1所述的装置,所述操作码还用于指示所述标量运算类型,
所述控制模块,还用于根据所述操作码确定所述标量运算类型。
条款M7、根据条款M1所述的装置,所述运算种类包括以下至少一种:
相加运算、求和运算、相乘运算、按位相与运算、按位求余数运算、按位求绝对值运算、按位 相除运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算、逻辑左移运算、逻辑右移运算、算术右移运算、逻辑与运算、逻辑或运算、逻辑异或运算和逻辑取反运算。
条款M8、根据条款M1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算标量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算标量;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款M9、根据条款M1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述标量指令;
指令处理子模块,用于对所述标量指令进行解析,得到所述标量指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述待执行指令包括所述标量指令。
条款M10、根据条款M9所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款M11、一种机器学习运算装置,所述装置包括:
一个或多个如条款M1-条款M10任一项所述的标量指令处理装置,用于从其他处理装置中获取待运算标量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量指令处理装置时,多个所述标量指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述标量指令处理装置共享内存或者拥有各自的内存;多个所述标量指令处理装置的互联方式是任意互联拓扑。
条款M12、一种组合处理装置,所述组合处理装置包括:
如条款M11所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款M13、一种机器学习芯片,所述机器学习芯片包括:
如条款M11所述的机器学习运算装置或如条款M12所述的组合处理装置。
条款M14、一种电子设备,所述电子设备包括:
如条款M13所述的机器学习芯片。
条款M15、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款M13所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款M16、一种标量指令处理方法,所述方法应用于标量指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的标量指令进行解析,得到标量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量指令所需的待运算标量和目标地址,以及确定标量指令的标量运算类型;
利用运算模块根据所述标量运算类型对所述待运算标量进行标量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述标量指令对数据所进行的运算为标量运算,所述标量运算类型用于指示进行标量运算的运算种类和所述待运算标量的数据类型,所述操作域包括待运算标量地址和所述目标地址。
条款M17、根据条款M16所述的方法,根据所述标量运算类型对所述待运算标量进行标量运算,包括:
利用所述运算模块中的多个标量运算器执行与所述标量运算类型相对应的标量运算。
条款M18、根据条款M17所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个标量运算器,
其中,根据所述标量运算类型对所述待运算标量进行标量运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的多个标量运算器执行与所述标量运算类型相对应的标量运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款M19、根据条款M16所述的方法,所述操作域还包括标量运算类型,
其中,确定标量指令的标量运算类型,包括:
根据所述操作域确定所述标量运算类型。
条款M20、根据条款M16所述的方法,所述操作域还包括运算参数,
其中,根据所述操作码和所述操作域获取执行标量指令所需的待运算标量和目标地址,包括:
根据所述操作域确定所述运算参数;
其中,根据所述标量运算类型对所述待运算标量进行标量运算,包括:
根据所述运算参数和所述标量运算类型,对所述待运算标量进行标量运算。
条款M21、根据条款M16所述的方法,所述操作码还用于指示所述标量运算类型,确定标量指令的标量运算类型,包括:
根据所述操作码确定所述标量运算类型。
条款M22、根据条款M16所述的方法,所述运算种类包括以下至少一种:
相加运算、求和运算、相乘运算、按位相与运算、按位求余数运算、按位求绝对值运算、按位相除运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算、逻辑左移运算、逻辑右移运算、算术右移运算、逻辑与运算、逻辑或运算、逻辑异或运算和逻辑取反运算。
条款M23、根据条款M16所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算标量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算标量;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款M24、根据条款M16所述的方法,对获取到的标量指令进行解析,得到标量指令的操作码和操作域,包括:
存储所述标量指令;
对所述标量指令进行解析,得到标量指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述待执行指令包括所述标量指令。
条款M25、根据条款M24所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款M26、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款M16至条款M25任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现标量运算的运算过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的标量类型转换指令,技术人员需要自定义对应其编程语言环境的多条指令来实现标量的类型转换,导致进行类型转换的效率低、速度慢。本公开提供一种类型转换指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现标量类型转换,能够显著提高进行标量类型转换的效率和速度。
图14-1示出根据本公开一实施例的标量类型转换指令处理装置的框图。如图14-1所示,该装置包括控制模块14-11和运算模块14-12。
控制模块14-11,用于对获取到的标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,并根据操作码和操作域获取执行标量类型转换指令所需的待运算标量和目标地址,以及确定目标数据类型和待运算标量的初始数据类型。其中,操作码用于指示标量类型转换指令对数据所进行的运算为标量类型转换运算,操作域包括待运算标量地址和目标地址。
运算模块14-12,用于根据目标数据类型对初始数据类型的待运算标量进行标量类型转换运算,获得运算结果,并将运算结果存入目标地址中。其中,运算结果的数据类型为目标数据类型。
在本实施例中,控制模块可以从待运算标量地址中获取待运算标量。控制模块可以通过数据输入输出单元获得标量类型转换指令和待运算标量,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括参数数据、待运算标量、对应的运算方法等等。对于一个标量类型转换指令其必须包括操作码和操作域,其中操作域至少包括待运算标量地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对标量类型转换指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收标量类型转换指令,并控制一个或多个运算模块进行标量类型转换运算。在装置包括多个控制模块时,多个控制模块可以分别接收标量类型转换指令,并控制对应的一个或多个运算模块进行标量类型转换运算。
本公开实施例所提供的标量类型转换指令处理装置,该装置包括控制模块和运算模块。控制模块用于对获取到的标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,并根据操作码和操作域获取执行标量类型转换指令所需的待运算标量和目标地址,以及确定目标数据类型和待运算标量的初始数据类型。运算模块用于根据目标数据类型对初始数据类型的待运算标量进行标量类型转换运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的标量类型转换指令处理装置的适用范围广,对标量类型转换指令的处理效率高、处理速度快,进行标量类型转换的处理效率高、处理速度快。
图14-2a示出根据本公开一实施例的标量类型转换指令处理装置的框图。在一种可能的实现方式中,如图14-2a所示,运算模块14-12可以包括多个标量运算器14-120,用于执行标量类型转换运算。
在该实现方式中,运算模块也可以包括一个标量运算器。可以根据所需进行标量类型转换运算的数据量的大小、对标量类型转换运算的处理速度、效率等要求对标量运算器的数量进行设置,本公开对此不作限制。
图14-2b示出根据本公开一实施例的标量类型转换指令处理装置的框图。在一种可能的实现方式中,如图14-2b所示,运算模块14-12可以包括主运算子模块14-121和多个从运算子模块14-122。主运算子模块14-121可以包括多个标量运算器14-120(图中未示出)。
主运算子模块14-121,用于利用多个标量运算器14-120执行标量类型转换运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括初始数据类型和目标数据类型。控制模块14-11,还用于根据操作域确定目标数据类型和待运算标量的初始数据类型。
在一种可能的实现方式中,操作码还可以用于指示初始数据类型和目标数据类型。控制模块14-11,还用于根据操作码确定目标数据类型和待运算标量的初始数据类型。
在一种可能的实现方式中,在根据操作码或者操作域均不能确定初始数据类型和/或目标数据类型时,可以根据预先设置的默认初始数据类型和默认目标数据类型确定初始数据类型和/或目标数据类型。可以将预先设置的默认初始数据类型确定为当前该标量类型转换指令的初始数据类型,可以将预先设置的默认目标数据类型确定为当前该标量类型转换指令的目标数据类型。本领域技术人员可以根据实际需要对目标数据类型和初始数据类型的确定方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,目标数据类型可以包括16位浮点数、32位浮点数、48位浮点数、16位整数、32位整数和48位整数中的任意一种,初始数据类型可以包括16位有符号数、32位有符号数、48位有符号数、16位无符号数、32位无符号数、48位无符号数和指针数据类型中的任意一种。
在该实现方式中,目标数据类型和初始数据类型还可以是如64位整数等数据类型,本领域技术人员可以根据实际需要对目标数据类型和初始数据类型进行设置,只要保证目标数据类型与初始数据类型所指示的数据类型不同即可,本公开对此不作限制。
在该实现方式中,可以对上述目标数据类型和初始数据类型的编号、名称等标识(或代码)进行设置,以根据标量转换指令中的标识(或代码)确定标量类型转换指令所指示的目标数据类型和初始数据类型。例如,可以将16位浮点数的标识设置为cvtf16、32位浮点数的标识设置为cvtf32、48位浮点数的标识设置为cvtf48、16位整数的标识设置为cvti16、32位整数的标识设置为cvti32以及将48位整数的标识设置为cvti48。可以将16位有符号数的标识设置为s16、32位有符号数的标识设置为s32、48位有符号数的标识设置为s48、16位无符号数的标识设置为u16、32位无符号数的标识设置为u32、48位无符号数的标识设置为u48和指针数据类型的标识设置为ptr。本领域技术人员可以根据实际需要对目标数据类型和初始数据类型的标识进行设置,本公开对此不作限制。
在一种可能的实现方式中,如图14-2a、图14-2b所示,该装置还可以包括存储模块14-13。存储模块14-13用于存储待运算标量。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存 可以用于存储待运算数据,寄存器可以用于存储待运算标量。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。其中,待运算数据包括与进行标量类型转换相关的数据、和/或与其他计算指令的运算相关的数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,标量类型转换指令的指令格式可以是:
scalar dst src0 opcode.type
其中,scalar是标量类型转换指令的操作码,dst、src0、opcode.type是标量类型转换指令的操作域。其中,dst是目标地址。src0是待运算标量地址。opcode.type中的opcode是目标数据类型,opcode.type中的type是待运算标量的初始数据类型。
在一种可能的实现方式中,标量类型转换指令的指令格式还可以是:
opcode.scalar.type dstsrc0
其中,opcode.scalar.type是标量类型转换指令的操作码,dst、src0是标量类型转换指令的操作域。其中,opcode.scalar.type中的opcode用于指示目标数据类型,opcode.scalar.type中的type用于指示待运算标量的初始数据类型,opcode.scalar.type中的scalar用于指示该指令为标量类型转换指令。dst是目标地址,src0是待运算标量地址。
应当理解的是,本领域技术人员可以根据需要对标量类型转换指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量类型转换指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用标量类型转换指令处理装置进行标量类型转换运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解标量类型转换指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图14-3示出根据本公开一实施例的标量类型转换指令处理装置的应用场景的示意图。如图14-3所示,标量类型转换指令处理装置对标量类型转换指令进行处理的过程如下:
控制模块14-11对获取到的标量类型转换指令1(如标量类型转换指令1为scalar 500 100 cvtf16.u32)进行解析,得到标量类型转换指令1的操作码和操作域。其中,标量类型转换指令1的操作码为scalar,目标地址为500,待运算标量地址为100,目标数据类型为cvtf16(也即16为浮点数),待运算标量的初始数据类型为u32(也即32位无符号数)。控制模块14-11从待运算标量地址100获取待运算标量。
运算模块14-12根据目标数据类型对初始数据类型的待运算标量进行标量类型转换运算(也即将32位无符号数的待运算标量的数据类型转换为16为浮点数),得到运算结果,并将运算结果存入目标地址500中。
以上各模块的工作过程可参考上文的相关描述。
这样,标量类型转换指令处理装置可以高效、快速地对标量类型转换指令进行处理,进行标量类型转换的处理效率高、处理速度快。
图14-4示出根据本公开一实施例的标量类型转换指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理 器用于执行相关的处理、运算步骤,如执行下述步骤S51-14和步骤S52-14。如图14-4所示,该方法应用于上述标量类型转换指令处理装置,该方法包括步骤S51-14和步骤S52-14。
在步骤S51-14中,利用控制模块对获取到的标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,并根据操作码和操作域获取执行标量类型转换指令所需的待运算标量和目标地址,以及确定目标数据类型和待运算标量的初始数据类型。其中,操作码用于指示标量类型转换指令对数据所进行的运算为标量类型转换运算,操作域包括待运算标量地址和目标地址。
在步骤S52-14中,利用运算模块根据目标数据类型对初始数据类型的待运算标量进行标量类型转换运算,获得运算结果,并将运算结果存入目标地址中,运算结果的数据类型为目标数据类型。
在一种可能的实现方式中,根据目标数据类型对初始数据类型的待运算标量进行标量类型转换运算,可以包括:
利用运算模块中的多个标量运算器执行标量类型转换运算。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,主运算子模块包括多个标量运算器。其中,步骤S52-14可以包括:
利用主运算子模块中的多个标量运算器执行标量类型转换运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括初始数据类型和目标数据类型,步骤S51-14可以包括:根据操作域确定目标数据类型和待运算标量的初始数据类型。
在一种可能的实现方式中,操作码还用于指示初始数据类型和目标数据类型,步骤S51-14可以包括:根据操作码确定目标数据类型和待运算标量的初始数据类型
在一种可能的实现方式中,目标数据类型可以包括16位浮点数、32位浮点数、48位浮点数、16位整数、32位整数和48位整数中的任意一种,初始数据类型可以包括16位有符号数、32位有符号数、48位有符号数、16位无符号数、32位无符号数、48位无符号数和指针数据类型中的任意一种。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算标量,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算标量;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,步骤S51-14可以包括:
存储标量类型转换指令;
对标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量类型转换指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量类型转换指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量类型转换指令处理方法的适用范围广,对标量类型转换指令的处理效率高、处理速度快,进行标量类型转换的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款N1、一种标量类型转换指令处理装置,所述装置包括:
控制模块,用于对获取到的标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量类型转换指令所需的待运算标量和目标地址,以及确定目标数据类型和所述待运算标量的初始数据类型;
运算模块,用于根据所述目标数据类型对初始数据类型的所述待运算标量进行标量类型转换运算,获得运算结果,并将所述运算结果存入所述目标地址中,所述运算结果的数据类型为所述目标数据类型,
其中,所述操作码用于指示所述标量类型转换指令对数据所进行的运算为标量类型转换运算,所述操作域包括待运算标量地址和所述目标地址。
条款N2、根据条款N1所述的装置,所述运算模块,包括:
多个标量运算器,用于执行所述标量类型转换运算。
条款N3、根据条款N2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个标量运算器,
所述主运算子模块,用于利用所述多个标量运算器执行所述标量类型转换运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款N4、根据条款N1所述的装置,所述操作域还包括初始数据类型和目标数据类型,
其中,所述控制模块,还用于根据所述操作域确定目标数据类型和所述待运算标量的初始数据类型。
条款N5、根据条款N1所述的装置,所述操作码还用于指示初始数据类型和目标数据类型,
其中,所述控制模块,还用于根据所述操作码确定目标数据类型和所述待运算标量的初始数据类型。
条款N6、根据条款N1所述的装置,所述目标数据类型包括16位浮点数、32位浮点数、48位浮点数、16位整数、32位整数和48位整数中的任意一种,所述初始数据类型包括16位有符号数、32位有符号数、48位有符号数、16位无符号数、32位无符号数、48位无符号数和指针数据类型中的任意一种。
条款N7、根据条款N1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算标量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算标量;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款N8、根据条款N1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述标量类型转换指令;
指令处理子模块,用于对所述标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量类型转换指令。
条款N9、根据条款N8所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据 的第零存储地址区间具有重叠的区域。
条款N10、一种机器学习运算装置,所述装置包括:
一个或多个如条款N1-条款N9任一项所述的标量类型转换指令处理装置,用于从其他处理装置中获取待运算标量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量类型转换指令处理装置时,多个所述标量类型转换指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量类型转换指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量类型转换指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述标量类型转换指令处理装置共享内存或者拥有各自的内存;多个所述标量类型转换指令处理装置的互联方式是任意互联拓扑。
条款N11、一种组合处理装置,所述组合处理装置包括:
如条款N10所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款N12、一种机器学习芯片,所述机器学习芯片包括:
如条款N10所述的机器学习运算装置或如条款N11所述的组合处理装置。
条款N13、一种电子设备,所述电子设备包括:
如条款N12所述的机器学习芯片。
条款N14、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款N12所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款N15、一种标量类型转换指令处理方法,所述方法应用于标量类型转换指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量类型转换指令所需的待运算标量和目标地址,以及确定目标数据类型和所述待运算标量的初始数据类型;
利用运算模块根据所述目标数据类型对初始数据类型的所述待运算标量进行标量类型转换运算,获得运算结果,并将所述运算结果存入所述目标地址中,所述运算结果的数据类型为所述目标数据类型,
其中,所述操作码用于指示所述标量类型转换指令对数据所进行的运算为标量类型转换运算,所述操作域包括待运算标量地址和所述目标地址。
条款N16、根据条款N15所述的方法,根据所述目标数据类型对初始数据类型的所述待运算标量进行标量类型转换运算,包括:
利用所述运算模块中的多个标量运算器执行所述标量类型转换运算。
条款N17、根据条款N16所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个标量运算器,
其中,根据所述目标数据类型对初始数据类型的所述待运算标量进行标量类型转换运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的多个标量运算器执行所述标量类型转换运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款N18、根据条款N15所述的方法,所述操作域还包括初始数据类型和目标数据类型,
其中,确定目标数据类型和所述待运算标量的初始数据类型,包括:
根据所述操作域确定目标数据类型和所述待运算标量的初始数据类型。
条款N19、根据条款N15所述的方法,所述操作码还用于指示初始数据类型和目标数据类型,
其中,确定目标数据类型和所述待运算标量的初始数据类型,包括:
根据所述操作码确定目标数据类型和所述待运算标量的初始数据类型。
条款N20、根据条款N15所述的方法,所述目标数据类型包括16位浮点数、32位浮点数、48位浮点数、16位整数、32位整数和48位整数中的任意一种,所述初始数据类型包括16位有符号数、32位有符号数、48位有符号数、16位无符号数、32位无符号数、48位无符号数和指针数据类型中的任意一种。
条款N21、根据条款N16所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算标量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算标量;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款N22、根据条款N15所述的方法,对所述标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域,包括:
存储所述标量类型转换指令;
对所述标量类型转换指令进行解析,得到标量类型转换指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量类型转换指令。
条款N23、根据条款N22所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款N24、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款N15至条款N23任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现取地址处理的过程,相关技术中,由于现阶段没有能广泛适用于各类编程语言的取地址指令,技术人员需要自定义对应其编程语言环境的特定指令来实现取地址处理,导致进行取地址处理的效率低、速度慢。本公开提供一种取地址指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现取地址处理,能够显著提高进行取地址处理的效率和速度。
图15-1示出根据本公开一实施例的取地址指令处理装置的框图。如图15-1所示,该装置包括控制模块15-11和处理模块15-12(或称运算模块)。
控制模块15-11,用于对获取到的取地址指令进行解析,得到取地址指令的操作码和操作域,并根据操作码和操作域获取执行取地址指令所需的待存储地址数据和目标地址。其中,操作码用于指示取地址指令对数据所进行的处理为取地址处理,操作域包括待存储地址数据的初始地址和目标地址。
处理模块15-12,用于对待存储地址数据进行处理,得到处理后的待存储地址数据,并将处理后的待存储地址数据存入目标地址中。
在本实施例中,待存储地址数据可以是表示一个待存储地址或多个待存储地址的数据。取地址指令所指示的取地址处理,可以是获取待存储地址数据并重新存储,以便于在新的地址中可以获取待存储地址数据,进而获得待存储地址数据中记载的待存储地址中的数据。
在本实施例中,控制模块可以从存储待存储地址数据的初始地址中获取待存储地址数据。控制模块可以通过数据输入输出单元获得取地址指令和待存储地址数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待存储地址数据、存储待存储地址数据的初始地址、目标地址等等。对于一个取地址指令其必须包括操作码和操作域,其中操作域至少包括存储待存储地址数据的初始地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对取地址指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收取地址指令,并控制一个或多个处理模块进行取地址处理。在装置包括多个控制模块时,多个控制模块可以分别接收取地址指令,并控制对应的一个或多个处理模块进行取地址处理。
本公开实施例所提供的取地址指令处理装置,该装置包括控制模块和处理模块。控制模块用于对获取到的取地址指令进行解析,得到取地址指令的操作码和操作域,并根据操作码和操作域获取执行取地址指令所需的待存储地址数据和目标地址。处理模块用于对待存储地址数据进行处理,得到处理后的待存储地址数据,并将处理后的待存储地址数据存入目标地址中。本公开实施例所提供的取地址指令处理装置的适用范围广,对取地址指令的处理效率高、处理速度快,进行取地址处理的效率高、速度快。
图15-2示出根据本公开一实施例的取地址指令处理装置的框图。在一种可能的实现方式中,如图15-2所示,处理模块15-12可以包括主处理子模块15-121(或称主运算子模块)和多个从处理子模块15-122(或称从运算子模块)。
主处理子模块15-121,用于对待存储地址数据进行处理,得到处理后的待存储地址数据,并将处理后的待存储地址数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括初始存储空间标识和目标存储空间标识。控制模块15-11,还用于根据操作域确定初始存储空间标识、目标存储空间标识、初始地址和目标地址,并从初始存储空间标识所标识的初始存储空间的初始地址中,获取待存储地址数据。其中,将处理后的待存储地址数据存入目标地址中,可以包括:将处理后的待存储地址数据存入目标存储空间标识所标识的目标存储空间的目标地址中。
在该实现方式中,初始存储空间标识可以是初始存储空间的编号、名称等表示该初始存储空间的标识。目标存储空间标识可以是目标存储空间的编号、名称等表示该目标存储空间的标识。目标存储空间可以与初始存储空间不同,目标存储空间可以是装置的缓存等存储空间。初始存储空间可以是装置中除缓存以外的存储空间,例如,初始存储空间可以是装置的NRAM、WRAM、DDR等。其中,NRAM(Nanotube Random Access Memory)是基于碳纳米管(Carbon Nanotube,简称CNT)的非易失性存储器。WRAM(Window RAM)是VRAM(Video RAM,影像随机接达记忆器)的一种。DDR(DDR SDRAM)是双倍速率同步动态随机存储器。目标存储空间可以与初始存储空间相同,基于取地址指令可以改变或增加待存储地址数据的存储位置。
在一种可能的实现方式中,操作码还可以用于指示初始存储空间标识和目标存储空间标识。控 制模块15-11,还用于根据操作码确定初始存储空间标识、目标存储空间标识、初始地址和目标地址,并从初始存储空间标识所标识的初始存储空间的初始地址中,获取待存储地址数据。其中,将处理后的待存储地址数据存入目标地址中,可以包括:将处理后的待存储地址数据存入目标存储空间标识所标识的目标存储空间的目标地址中。
在一种可能的实现方式中,还可以在初始地址中标记其所在的初始存储空间,以便于控制模块可以根据初始地址从其所在的初始存储空间中获取待存储地址数据。也可以在目标地址中标记其所在的目标存储空间,以便于控制模块可以从操作域中确定出目标地址及其所在的目标存储空间,并使得处理模块可以将处理后的待存储地址数据存入目标存储空间的目标地址中。
在一种可能的实现方式中,可以预先设置默认初始存储空间和默认目标存储空间。在根据取地址指令的操作域或操作码均不能确定初始存储空间和/或目标存储空间时,可以将默认初始存储空间确定为当前取地址指令的初始地址所处的初始存储空间,以及可以将默认目标存储空间确定为当前取地址指令的目标地址所处的目标存储空间。
在一种可能的实现方式中,如图15-2所示,该装置还可以包括存储模块15-13。存储模块15-13用于存储待存储地址数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存,用于存储待运算数据和待存储地址数据。寄存器,用于存储待运算数据中的标量数据。其中,待运算数据包括与上述计算指令和/或取地址指令的执行相关的数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,取地址指令的指令格式可以是:
lda.space1.space2 dst src0
其中,lda.space1.space2是取地址指令的操作码,dst、src0是取地址指令的操作域。其中,dst是目标地址。src0是存储待存储地址数据的初始地址。lda.space1.space2中的lda用于指示该指令为取地址指令,lda.space1.space2中space1是目标存储空间标识,lda.space1.space2中space2是初始存储空间标识。
在一种可能的实现方式中,取地址指令的指令格式还可以是:
lda dst src0 space1 space2
其中,lda是取地址指令的操作码,dst、src0、space1、space2是取地址指令的操作域。其中,lda用于指示该指令为取地址指令。dst是目标地址,src0是存储待存储地址数据的初始地址。space1是目标存储空间标识。space2是初始存储空间标识。
应当理解的是,本领域技术人员可以根据需要对取地址指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了取地址指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用取地址指令处理装置进行取地址处理”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解取地址指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图15-3a、图15-3b示出根据本公开一实施例的取地址指令处理装置的应用场景的示意图。如图15-3a、图15-3b所示,取地址指令处理装置对取地址指令进行处理的过程如下:
示例一
如图15-3a所示,控制模块15-11对获取到的取地址指令1(如取地址指令1为lda.n1.g1 500 100)进行解析,得到取地址指令1的操作码和操作域。其中,取地址指令1的操作码为lda.n1.g1,且可以根据操作码lda.n1.g1确定出初始存储空间标识为n1、目标存储空间标识为g1。目标地址为500,存储待存储地址数据的初始地址为100。控制模块15-11从初始存储空间标识n1所标识的初始存储空间的待存储地址数据地址100中获取待存储地址数据。
处理模块15-12对待存储地址数据进行处理,得到处理后的待存储地址数据1,并将处理后的待存储地址数据1存储入目标存储空间标识g1所标识的目标存储空间的目标存储地址500中。
如图15-3b所示,控制模块15-11对获取到的取地址指令2(如取地址指令2为lda 501 101 n2 g2)进行解析,得到取地址指令2的操作码和操作域。其中,取地址指令2的操作码为lda。目标地址为501,存储待存储地址数据的初始地址为101,初始存储空间标识n2为,目标存储空间标识g2为。控制模块15-11从初始存储空间标识n2所标识的初始存储空间的待存储地址数据地址101中获取待存储地址数据。
处理模块15-12对待存储地址数据进行处理,得到处理后的待存储地址数据2,并将处理后的待存储地址数据2存储入目标存储空间标识g2所标识的目标存储空间的目标存储地址501中。
以上各模块的工作过程可参考上文的相关描述。
这样,取地址指令处理装置可以高效、快速地对取地址指令进行处理,进行取地址处理的效率高、速度快。
图15-4示出根据本公开一实施例的取地址指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-15和步骤S52-15。如图15-4所示,该方法应用于上述取地址指令处理装置,该方法包括步骤S51-15和步骤S52-15。
在步骤S51-15中,利用控制模块对获取到的取地址指令进行解析,得到取地址指令的操作码和操作域,并根据操作码和操作域获取执行取地址指令所需的待存储地址数据和目标地址。其中,操作码用于指示取地址指令对数据所进行的处理为取地址处理,操作域包括存储待存储地址数据的初始地址和目标地址。
在步骤S52-15中,利用处理模块对待存储地址数据进行处理,得到处理后的待存储地址数据,并将处理后的待存储地址数据存入目标地址中。
在一种可能的实现方式中,处理模块包括主处理子模块和多个从处理子模块。其中,步骤S52-15可以包括:
对待存储地址数据进行处理,得到处理后的待存储地址数据,并将处理后的待存储地址数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括初始存储空间标识和目标存储空间标识。其中,根据操作码和操作域获取执行取地址指令所需的待存储地址数据和目标地址,可以包括:根据操作域确定初始存储空间标识、目标存储空间标识、初始地址和目标地址,并从初始存储空间标识所标识的初始存储空间的初始地址中,获取待存储地址数据。
其中,将处理后的待存储地址数据存入目标地址中,可以包括:将处理后的待存储地址数据存入目标存储空间标识所标识的目标存储空间的目标地址中。
在一种可能的实现方式中,操作码还用于指示初始存储空间标识和目标存储空间标识。其中,根据操作码和操作域获取执行取地址指令所需的待存储地址数据和目标地址,可以包括:根据操作码确定初始存储空间标识和目标存储空间标识,根据操作域确定初始地址和目标地址,并从初始存储空间标识所标识的初始存储空间的初始地址中,获取待存储地址数据。
其中,将处理后的待存储地址数据存入目标地址中,可以包括:将处理后的待存储地址数据存 入目标存储空间标识所标识的目标存储空间的目标地址中。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待存储地址数据,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据和待存储地址数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,步骤S51-15可以包括:
存储取地址指令;
对取地址指令进行解析,得到取地址指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括取地址指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了取地址指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的取地址指令处理方法的适用范围广,对取地址指令的处理效率高、处理速度快,进行取地址处理的效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款O1、一种取地址指令处理装置,所述装置包括:
控制模块,用于对获取到的取地址指令进行解析,得到取地址指令的操作码和操作域,并根据所述操作码和所述操作域获取执行取地址指令所需的待存储地址数据和目标地址;
处理模块,用于对所述待存储地址数据进行处理,得到处理后的待存储地址数据,并将所述处理后的待存储地址数据存入所述目标地址中,
其中,所述操作码用于指示所述取地址指令对数据所进行的处理为取地址处理,所述操作域包括存储所述待存储地址数据的初始地址和所述目标地址。
条款O2、根据条款O1所述的装置,所述处理模块包括主处理子模块和多个从处理子模块,
所述主处理子模块,用于对所述待存储地址数据执进行处理,得到处理后的待存储地址数据,并将所述处理后的待存储地址数据存入所述目标地址中。
条款O3、根据条款O1所述的装置,所述操作域还包括初始存储空间标识和目标存储空间标识,
其中,所述控制模块,还用于根据所述操作域确定所述初始存储空间标识、所述目标存储空间标识、所述初始地址和所述目标地址,并从所述初始存储空间标识所标识的初始存储空间的初始地址中,获取所述待存储地址数据;
其中,将所述处理后的待存储地址数据存入所述目标地址中,包括:
将所述处理后的待存储地址数据存入所述目标存储空间标识所标识的目标存储空间的目标地址中。
条款O4、根据条款O1所述的装置,所述操作码还用于指示初始存储空间标识和目标存储空间标识,
其中,所述控制模块,还用于根据所述操作码确定所述初始存储空间标识和所述目标存储空间标识,根据所述操作域确定所述初始地址和所述目标地址,并从所述初始存储空间标识所标识的初 始存储空间的初始地址中,获取所述待存储地址数据;
其中,将所述处理后的待存储地址数据存入所述目标地址中,包括:
将所述处理后的待存储地址数据存入所述目标存储空间标识所标识的目标存储空间的目标地址中。
条款O5、根据条款O1所述的装置,所述装置还包括:
存储模块,用于存储所述待存储地址数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待存储地址数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款O6、根据条款O1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述取地址指令;
指令处理子模块,用于对所述取地址指令进行解析,得到取地址指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述取地址指令。
条款O7、根据条款O6所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款O8、一种机器学习运算装置,所述装置包括:
一个或多个如条款O1-条款O7任一项所述的取地址指令处理装置,用于从其他处理装置中获取待存储地址数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述取地址指令处理装置时,多个所述取地址指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述取地址指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述取地址指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述取地址指令处理装置共享内存或者拥有各自的内存;多个所述取地址指令处理装置的互联方式是任意互联拓扑。
条款O9、一种组合处理装置,所述组合处理装置包括:
如条款O8所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款O10、一种机器学习芯片,所述机器学习芯片包括:
如条款O8所述的机器学习运算装置或如条款O9所述的组合处理装置。
条款O11、一种电子设备,所述电子设备包括:
如条款O10所述的机器学习芯片。
条款O12、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款O10所述的 机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款O13、一种取地址指令处理方法,所述方法应用于取地址指令处理装置,所述装置包括控制模块和处理模块,所述方法包括:
利用控制模块对获取到的取地址指令进行解析,得到取地址指令的操作码和操作域,并根据所述操作码和所述操作域获取执行取地址指令所需的待存储地址数据和目标地址;
利用处理模块对所述待存储地址数据进行处理,得到处理后的待存储地址数据,并将所述处理后的待存储地址数据存入所述目标地址中,
其中,所述操作码用于指示所述取地址指令对数据所进行的处理为取地址处理,所述操作域包括存储所述待存储地址数据的初始地址和所述目标地址。
条款O14、根据条款O13所述的方法,所述处理模块包括主处理子模块和多个从处理子模块,
其中,对所述待存储地址数据进行处理,得到处理后的待存储地址数据,并将所述处理后的待存储地址数据存入所述目标地址中,包括:
对所述待存储地址数据进行处理,得到处理后的待存储地址数据,并将所述处理后的待存储地址数据存入所述目标地址中。
条款O15、根据条款O13所述的方法,所述操作域还包括初始存储空间标识和目标存储空间标识,
其中,根据所述操作码和所述操作域获取执行取地址指令所需的待存储地址数据和目标地址,包括:
根据所述操作域确定所述初始存储空间标识、所述目标存储空间标识、所述初始地址和所述目标地址,并从所述初始存储空间标识所标识的初始存储空间的初始地址中,获取所述待存储地址数据;
其中,将所述处理后的待存储地址数据存入所述目标地址中,包括:
将所述处理后的待存储地址数据存入所述目标存储空间标识所标识的目标存储空间的目标地址中。
条款O16、根据条款O13所述的方法,所述操作码还用于指示初始存储空间标识和目标存储空间标识,
其中,根据所述操作码和所述操作域获取执行取地址指令所需的待存储地址数据和目标地址,包括:
根据所述操作码确定所述初始存储空间标识和所述目标存储空间标识,根据所述操作域确定所述初始地址和所述目标地址,并从所述初始存储空间标识所标识的初始存储空间的初始地址中,获取所述待存储地址数据;
其中,将所述处理后的待存储地址数据存入所述目标地址中,包括:
将所述处理后的待存储地址数据存入所述目标存储空间标识所标识的目标存储空间的目标地址中。
条款O17、根据条款O13所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待存储地址数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待存储地址数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量 数据。
条款O18、根据条款O13所述的方法,对所述取地址指令进行解析,得到取地址指令的操作码和操作域,包括:
存储所述取地址指令;
对所述取地址指令进行解析,得到取地址指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述取地址指令。
条款O19、根据条款O18所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款O20、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款O13至条款O19任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现标量数据迁移,相关技术中,由于现阶段没有能广泛适用于各类编程语言的标量数据迁移指令,技术人员需要自定义对应其编程语言环境的一条或多条指令来实现标量数据迁移,导致进行标量数据迁移的效率低、速度慢。本公开提供一种标量数据迁移指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现标量数据迁移,能够显著提高进行标量数据迁移的效率和速度。
图16-1示出根据本公开一实施例的标量数据迁移指令处理装置的框图。如图16-1所示,该装置包括控制模块16-11和处理模块16-12(或称运算模块)。
控制模块16-11,用于对获取到的标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,以及确定进行迁移处理所需的迁移参数。其中,操作码用于指示标量数据迁移指令对标量数据所进行的处理为迁移处理,操作域包括待迁移标量数据地址和目标地址,迁移参数可以包括待迁移标量数据地址所在的初始存储空间、目标地址所在的目标存储空间和进行迁移处理的迁移类型。
处理模块16-12,根据迁移参数,将待迁移标量数据存入目标地址中。
在本实施例中,待迁移标量数据可以是一个或多个。迁移类型可以指示初始存储空间的标量数据存储速度、目标存储空间的标量数据存储速度、以及二者存储速度的快慢关系。在标量数据迁移指令中,可以为不同的目标存储空间与初始存储空间之间的存储速度快慢关系,设置不同的代码,进行存储速度快慢的区分。比如,可以将迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”的代码设置为“st”。可以将迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”的代码设置为“mv”。可以将迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”的代码设置为“ld”。本领域技术人员可以根据实际需要对迁移类型以及迁移类型的代码进行设置,本公开对此不作限制。
在本实施例中,迁移参数可以包括初始存储空间、目标存储空间的名称、编号等标识,以表示初始存储空间和目标存储空间。
在本实施例中,初始存储空间可以是装置的NRAM、DDR、寄存器等。目标存储空间可以是装置的NRAM、DDR。其中,NRAM(Nanotube Random Access Memory)是基于碳纳米管(Carbon Nanotube,简称CNT)的非易失性存储器。DDR(也可称DDR SDRAM)是双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory)。
在本实施例中,控制模块所获取到的标量数据迁移指令为无需编译的、可以直接供硬件执行的硬件指令,控制模块可以对获取到的标量数据迁移指令进行解析。控制模块可以从待迁移标量数据地址中获取待迁移标量数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括目标地址、待迁移标量数据地址,待迁移标量数据地址所在的初始存储空间、目标地址所在的目标存储空间和进行迁移处理的迁移参数等等。对于一个标量数据迁移指令其必须包括操作码和操作域,其中操作域至少包括待迁移标量数据和目标地址。
应当理解的是,本领域技术人员可以根据需要对标量数据迁移指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收标量数据迁移指令,并控制一个或多个处理模块进行标量数据迁移。在装置包括多个控制模块时,多个控制模块可以分别接收标量数据迁移指令,并控制对应的一个或多个处理模块进行标量数据迁移。
本公开实施例所提供的标量数据迁移指令处理装置,该装置包括控制模块和处理模块。控制模块用于对获取到的标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,以及确定进行迁移处理所需的迁移参数。处理模块用于根据迁移参数,将待迁移标量数据存入目标地址中。本公开实施例所提供的标量数据迁移指令处理装置的适用范围广,对标量数据迁移指令的处理效率高、处理速度快,进行标量数据迁移的处理效率高、速度快。
图16-2示出根据本公开一实施例的标量数据迁移指令处理装置的框图。在一种可能的实现方式中,如图16-2所示,处理模块16-12可以包括主处理子模块16-121(或称主运算子模块)和多个从处理子模块16-122(或称从运算子模块)。
主处理子模块16-121,用于对待迁移标量数据进行处理,得到处理后的待迁移标量数据,将处理后的待迁移标量数据存入目标地址中。对待迁移标量数据所进行的处理包括数据类型等转换处理,本公开对此不作限制。
在一种可能的实现方式中,操作域还可以包括标量数据迁移量。其中,控制模块16-11,还用于根据操作域确定标量数据迁移量,并从待迁移标量数据地址中获取对应标量数据迁移量的待迁移标量数据。
在该实现方式中,标量数据迁移量可以是所获取的待迁移标量数据的数据量。
在一种可能的实现方式中,可以预先设置默认标量数据迁移量。在操作域中不包含标量数据迁移量时,可以将默认标量数据迁移量确定为当前标量数据迁移指令的标量数据迁移量。进而从待迁移标量数据地址中获取对应标量数据迁移量的待迁移标量数据。
在一种可能的实现方式中,在操作域中不包含标量数据迁移量时,可以直接从待迁移标量数据地址中获取其中所存储的全部待迁移标量数据。
在一种可能的实现的方式中,操作域还可以包括迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作域,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,操作码还可以用于指示迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作码,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,还可以设置默认迁移参数。在根据操作域和操作码均不能确定当前标量数据迁移指令的迁移参数时,可以将默认迁移参数确定为当前标量数据迁移指令的迁移参数。
在一种可能的实现方式中,还可以根据待迁移标量数据地址和目标地址确定其分别对应的初始 存储空间、目标存储空间,进而根据初始存储空间、目标存储空间的存储速度、存储空间类型等参数,确定迁移参数。
在一种可能的实现方式中,如图16-2所示,该装置还可以包括存储模块16-13。存储模块16-13用于存储待迁移标量数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存,用于存储待运算数据。寄存器,用于存储待迁移标量数据和待运算数据中的标量数据。其中,待运算数据可以是与计算指令、标量数据迁移指令的执行相关的数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,标量数据迁移指令的指令格式可以是:
migrate dst src type.space1.space2 size
其中,migrate是标量数据迁移指令的操作码,dst、src0、type.space1.space2、size是标量数据迁移指令的操作域。其中,dst是目标地址,src是待迁移标量数据地址,在待迁移标量数据为多个时,src可以包括多个待迁移标量数据的地址src0,src1,…,srcn,本公开对此不作限制。type.space1.space2是迁移参数,type.space1.space2中的type表示迁移类型,type.space1.space2中的space1表示待迁移标量数据地址src所在的初始存储空间,type.space1.space2中的space2表示目标地址dst所在的目标存储空间。size是标量数据迁移量。
在一种可能的实现方式中,标量数据迁移指令的指令格式还可以是:
type.space1.space2 dst src size
其中,type.space1.space2是标量数据迁移指令的操作码,dst、src、size是标量数据迁移指令的操作域。其中,dst是目标地址,src是待迁移标量数据地址,在待迁移标量数据为多个时,src可以包括多个待迁移标量数据的地址src0,src1,…,srcn,本公开对此不作限制。size是标量数据迁移量。操作码type.space1.space2中的type表示迁移类型,type.space1.space2中的space1表示待迁移标量数据地址src所在的初始存储空间,type.space1.space2中的space2表示目标地址dst所在的目标存储空间。
其中,type可以是ld、st、mv。ld表示的迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”。st表示的迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”。mv表示的迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”的标量数据迁移指令的指令格式设置为:ld.space1.space2 dst src0 size。根据标量数据迁移量size、初始存储空间space1、目标存储空间space2及迁移类型ld,从初始存储空间space1中的待迁移标量数据地址src0内获取数据量为标量数据迁移量size的待迁移标量数据,并将该待迁移标量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度小于目标存储空间space2的存储速度。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”的标量数据迁移指令的指令格式设置为:st.space1.space2 dst src0 size。根据标量数据迁移量size、初始存储空间space1、目标存储空间space2及迁移类型st,从初始存储空间space1中的待迁移标量数据地址src0内获取数据量为标量数据迁移量size的待迁移标量数据,并将该待迁移标量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度大于目标存储空间space2的存储速度。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”的标量数据迁移指令的指令格式设置为:mv.space1.space2 dst src0 size。根据标量数据迁 移量size、初始存储空间space1、目标存储空间space2及迁移类型st,从初始存储空间space1中的待迁移标量数据地址src0内获取数据量为标量数据迁移量size的待迁移标量数据,并将该待迁移标量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度等于目标存储空间space2的存储速度。
应当理解的是,本领域技术人员可以根据需要对标量数据迁移指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量数据迁移指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用标量数据迁移指令处理装置进行数据迁移”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解标量数据迁移指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图16-3示出根据本公开一实施例的标量数据迁移指令处理装置的应用场景的示意图。如图16-3所示,标量数据迁移指令处理装置对标量数据迁移指令进行处理的过程如下:
控制模块16-11对获取到的标量数据迁移指令1(如标量数据迁移指令1为ld.200.300 500 400 5)进行解析,得到标量数据迁移指令1的操作码和操作域。其中,标量数据迁移指令1的操作码为ld,初始存储空间为200,目标存储空间为300,目标地址为500,待迁移标量数据地址为400,标量数据迁移量为5。根据操作码ld可以确定初始存储空间200的存储速度小于目标存储空间300的存储速度。控制模块16-11从初始存储空间为200中的待迁移标量数据地址400内获取数据量为标量数据迁移量5的待迁移标量数据。运算模块16-12根据迁移参数,将待迁移标量数据存入目标存储空间为300中的目标地址500内。
其中,标量数据迁移指令1除了可以为上述ld.200.300 500 400 5,还可以为migrate 500 400 ld.200.300 5等,二者处理过程相似,不再赘述。
以上各模块的工作过程可参考上文的相关描述。
这样,标量数据迁移指令处理装置可以高效、快速地对标量数据迁移指令进行处理,进行标量数据迁移的处理效率高、速度快。
图16-4示出根据本公开一实施例的标量数据迁移指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-16和步骤S52-16。如图16-4所示,该方法应用于上述标量数据迁移指令处理装置,该方法包括步骤S51-16和步骤S52-16。
在步骤S51-16中,利用控制模块对获取到标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,以及确定进行迁移处理所需的迁移参数。其中,操作码用于指示标量数据迁移指令对标量数据所进行的处理为迁移处理,操作域包括待迁移标量数据地址和目标地址,迁移参数包括待迁移标量数据地址所在的初始存储空间、目标地址所在的目标存储空间和进行迁移处理的迁移类型。
在步骤S52-16中,利用处理模块根据迁移参数,将待迁移标量数据存入目标地址中,
在一种可能的实现方式中,处理模块可以包括主处理子模块和多个从处理子模块。其中,步骤S52-16可以包括:
对待迁移标量数据进行处理,得到处理后的待迁移标量数据,将处理后的待迁移标量数据存入目标地址中。
在一种可能的实现方式中,操作域还包括标量数据迁移量。其中,根据所述操作码和所述操作 域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,可以包括:
根据所述操作域确定所述标量数据迁移量,并从所述待迁移标量数据地址中获取对应所述标量数据迁移量的待迁移标量数据。
在一种可能的实现方式中,操作域还包括迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作域,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,操作码还用于指示迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作码,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,该方法还包括:利用装置的存储模块存储待迁移标量数据,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待迁移标量和待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,步骤S51-16可以包括:
存储标量数据迁移指令;
对标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量数据迁移指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量数据迁移指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量数据迁移指令处理方法的适用范围广,对标量数据迁移指令的处理效率高、处理速度快,进行标量数据迁移的处理效率高、速度快。
依据以下条款可以更好的理解前述内容:
条款P1、一种标量数据迁移指令处理装置,所述装置包括:
控制模块,用于对获取到的标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,以及确定进行迁移处理所需的迁移参数;
处理模块,根据所述迁移参数,将所述待迁移标量数据存入所述目标地址中,
其中,所述操作码用于指示所述标量数据迁移指令对标量数据所进行的处理为迁移处理,所述操作域包括待迁移标量数据地址和所述目标地址,所述迁移参数包括所述待迁移标量数据地址所在的初始存储空间、所述目标地址所在的目标存储空间和进行迁移处理的迁移类型。
条款P2、根据条款P1所述的装置,所述处理模块包括主处理子模块和多个从处理子模块,
所述主处理子模块,用于对所述待迁移标量数据进行处理,得到处理后的待迁移标量数据,将所述处理后的待迁移标量数据存入所述目标地址中。
条款P3、根据条款P1所述的装置,所述操作域还包括标量数据迁移量,
其中,所述控制模块,还用于根据所述操作域确定所述标量数据迁移量,并从所述待迁移标量数据地址中获取对应所述标量数据迁移量的待迁移标量数据。
条款P4、根据条款P1所述的装置,所述操作域还包括迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作域,确定进行迁移处理所需的迁移参数。
条款P5、根据条款P1所述的装置,所述操作码还用于指示迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作码,确定进行迁移处理所需的迁移参数。
条款P6、根据条款P1所述的装置,所述装置还包括:
存储模块,用于存储所述待迁移标量数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待迁移标量数据和所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款P7、根据条款P1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述标量数据迁移指令;
指令处理子模块,用于对所述标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量数据迁移指令。
条款P8、根据条款P7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款P9、一种机器学习运算装置,所述装置包括:
一个或多个如条款P1-条款P8任一项所述的标量数据迁移指令处理装置,用于从其他处理装置中获取待迁移标量数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量数据迁移指令处理装置时,多个所述标量数据迁移指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量数据迁移指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量数据迁移指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述标量数据迁移指令处理装置共享内存或者拥有各自的内存;多个所述标量数据迁移指令处理装置的互联方式是任意互联拓扑。
条款P10、一种组合处理装置,所述组合处理装置包括:
如条款P9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款P11、一种机器学习芯片,所述机器学习芯片包括:
如条款P9所述的机器学习运算装置或如条款P10所述的组合处理装置。
条款P12、一种电子设备,所述电子设备包括:
如条款P11所述的机器学习芯片。
条款P13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款P11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款P14、一种标量数据迁移指令处理方法,所述方法应用于标量数据迁移指令处理装置,所述装置包括控制模块和处理模块,所述方法包括:
利用控制模块对获取到标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,以及确定进行迁移处理所需的迁移参数;
利用处理模块根据所述迁移参数,将所述待迁移标量数据存入所述目标地址中,
其中,所述操作码用于指示所述标量数据迁移指令对标量数据所进行的处理为迁移处理,所述操作域包括待迁移标量数据地址和所述目标地址,所述迁移参数包括所述待迁移标量数据地址所在的初始存储空间、所述目标地址所在的目标存储空间和进行迁移处理的迁移类型。
条款P15、根据条款P14所述的方法,所述处理模块包括主处理子模块和多个从处理子模块,
其中,根据所述迁移参数,将所述待迁移标量数据存入所述目标地址中,包括:
利用所述主处理子模块对所述待迁移标量数据进行处理,得到处理后的待迁移标量数据,将所述处理后的待迁移标量数据存入所述目标地址中。
条款P16、根据条款P14所述的方法,所述操作域还包括标量数据迁移量,
其中,根据所述操作码和所述操作域获取执行标量数据迁移指令所需的待迁移标量数据和目标地址,包括:
根据所述操作域确定所述标量数据迁移量,并从所述待迁移标量数据地址中获取对应所述标量数据迁移量的待迁移标量数据。
条款P17、根据条款P14所述的方法,所述操作域还包括迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作域,确定进行迁移处理所需的迁移参数。
条款P18、根据条款P14所述的方法,所述操作码还用于指示迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作码,确定进行迁移处理所需的迁移参数。
条款P19、根据条款P14所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待迁移标量数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待迁移标量和所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款P20、根据条款P14所述的方法,对获取到的标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域,包括:
存储所述标量数据迁移指令;
对所述标量数据迁移指令进行解析,得到标量数据迁移指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量数据迁移指令。
条款P21、根据条款P20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指 令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款P22、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款P14至条款P21任一项所述的方法。
图17-1示出根据本公开一实施例的标量控制流指令处理装置的框图。如图17-1所示,该装置包括控制模块17-11。控制模块17-11包括数据获取子模块17-112和跳转控制子模块17-113。
数据获取子模块17-112,根据获取到的标量控制流指令的操作码和操作域,获取执行标量控制流指令所需的待判断标量和目标跳转地址,以及确定标量控制流指令所对应的跳转条件。
跳转控制子模块17-113,在待判断标量满足跳转条件时,控制指令流跳转至目标跳转地址。
其中,操作码用于指示标量控制流指令对数据所进行的处理为标量跳转处理,操作域包括待判断标量地址和目标跳转地址。
在本实施例中,待判断标量可以是一个或多个。操作域中可以包括待判断标量地址,也可以直接包括待判断标量,以便于控制模块获取待判断标量。
在本实施例中,控制模块可以通过数据输入输出单元获得标量控制流指令和待判断标量,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待判断标量、待判断标量地址、目标跳转地址、跳转条件等等。对于一个标量控制流指令其必须包括操作码和操作域,其中操作域至少包括存储待判断标量地址和目标跳转地址。
应当理解的是,本领域技术人员可以根据需要对标量控制流指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,可以根据实际需要对控制模块的数量进行设置,本公开对此不作限制。该装置可以用于进行机器学习算法的计算,如神经网络算法。
在本实施例中,该装置还可以包括处理模块。控制模块还可以用于接收计算指令获取待处理数据。处理模块用于根据计算指令对待处理数据进行运算处理,得到运算结果。
本公开实施例所提供的标量控制流指令处理装置,该装置包括控制模块,控制模块包括:数据获取子模块,根据获取到的标量控制流指令的操作码和操作域获取执行标量控制流指令所需的待判断标量和目标跳转地址,以及确定标量控制流指令所对应的跳转条件;跳转控制子模块,在待判断标量满足跳转条件时,控制指令流跳转至目标跳转地址。本公开实施例所提供的标量控制流指令处理装置的适用范围广,对标量控制流指令的处理效率高、处理速度快。
在一种可能的实现方式中,跳转控制子模块17-113,可以包括:
至少一个比较器,用于根据跳转条件对待判断标量进行比较,得到比较结果,比较结果用于指示得到待判断标量是否满足跳转条件。
在一种可能的实现方式中,操作域还可以包括跳转条件。其中,数据获取子模块17-112可以用于在操作域包括跳转条件时,根据操作域确定标量控制流指令所对应的跳转条件。
在一种可能的实现方式中,操作码还可以用于指示跳转条件。其中,数据获取子模块17-112可以用于在操作码用于指示跳转条件时,根据操作码确定标量控制流指令所对应的跳转条件。
在一种可能的实现方式中,跳转条件可以包括判断条件和待判断标量的数据类型。判断条件用于指示标量控制流指令对待判断标量所需进行的判断、或比较的类型。
在一种可能的实现方式中,判断条件可以包括以下任一种:
待判断标量中的第一待判断标量等于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量不等于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量小于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量大于或等于待判断标量中的第二待判断标量;
待判断标量大于指定值。
在该实现方式中,判断条件还可以是针对待判断标量的其他判断条件,例如,判断条件还可以是待判断标量中的第一待判断标量小于待判断标量中的第二待判断标量。判断条件还可以是待判断标量小于指定值、待判断标量等于指定值等,指定值可以是预先设置的数值。判断条件还可以是待判断标量中的第一待判断标量和第二待判断标量的和大于、或等于、或小于、或小于等于、或大于或等于、或不等于待判断标量中的第三标量等。本领域技术人员可以根据实际需要对判断条件进行设置,本公开对此不作限制。
在该实现方式中,可以设置不同判断条件标识来区分不同的判断条件。例如,可以将“待判断标量中的第一待判断标量等于待判断标量中的第二待判断标量”的判断条件标识设置为“beq”,可以将“待判断标量中的第一待判断标量不等于待判断标量中的第二待判断标量”的判断条件标识设置为“bne”。可以将“待判断标量中的第一待判断标量小于待判断标量中的第二待判断标量”的判断条件标识设置为“blt”。可以将“待判断标量中的第一待判断标量大于或等于待判断标量中的第二待判断标量”的判断条件标识设置为“bge”。可以将“待判断标量大于指定值”的判断条件标识设置为“blt.a”,其中,a为指定值。
在一种可能的实现方式中,数据类型可以包括16位无符号类型、32位无符号类型、48位无符号类型、16位有符号类型、32位有符号类型、48位有符号类型中的任意一种。
在该实现方式中,待判断标量可以是整型等种类、且对应上述数据类型的标量。本领域技术人员可以根据实际需要对待判断标量的数据类型、种类进行设置,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据类型。在跳转条件中不包含数据类型时,可以将默认数据类型确定为待判断标量的数据类型。
在一种可能的实现方式中,在标量控制流指令中不包括跳转条件和待判断标量地址、或者跳转条件和待判断标量地址为空、或者跳转条件和待判断标量地址为指定内容时,可以直接控制指令流跳转至目标跳转地址。
图17-2示出根据本公开一实施例的标量控制流指令处理装置的框图。在一种可能的实现方式中,如图17-2所示,该装置还可以包括存储模块17-13。存储模块17-13用于存储待判断标量。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将待判断标量存储在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,该装置还可以包括处理模块。控制模块还可以用于接收计算指令获取待处理数据。处理模块用于根据计算指令对待处理数据进行运算处理,得到运算结果。
在一种可能的实现方式中,标量控制流指令的指令格式可以是:
jump,src,label,type1.type2
其中,jump是标量控制流指令的操作码,src、label、type1.type2是标量控制流指令的操作域。其中,label是目标跳转地址。src是待判断标量地址,其中,在待判断标量为多个时,标量控制流指令可以包括多个待判断标量地址,如src1、src2、…、srcn。type1.type2表示跳转条件,其中,type1.type2中的type1表示判断条件,type1.type2中的type2表示待判断标量的数据类型。
其中,在待判断标量为多个时,指令格式中可以包括多个待判断标量地址,以下以包括两个待判断标量为例,标量控制流指令的指令格式可以是:
jump,src0,src1,label,type1.type2
在一种可能的实现方式中,标量控制流指令的指令格式还可以是:
type1.type2,src,label
其中,type1.type2是标量控制流指令的操作码,src、label是标量控制流指令的操作域。其中,type1.type2用于指示该指令为标量控制流指令,其中,type1.type2中的type1表示判断条件,type1.type2中的type2表示待判断标量的数据类型。src是待判断标量地址,其中,在待判断标量为多个时,标量控制流指令可以包括多个待判断标量地址,如src1、src2、…、srcn。
其中,在待判断标量为多个时,指令格式中可以包括多个待判断标量地址,以下以包括两个待判断标量为例,标量控制流指令的指令格式可以是:
type1.type2,src0,src1,label
在一种可能的实现方式中,可以为不同的标量控制流指令设置对应的指令格式。
在一种可能的实现方式中,可以将判断条件为“待判断标量中的第一待判断标量等于待判断标量中的第二待判断标量”的标量控制流指令的指令格式设置为:beq.type12,src0,src1,label。该标量控制流指令表示:对src0和src1中分别存储的数据类型均为type2的第一待判断标量和第二待判断标量进行比较,在的第一待判断标量等于第二待判断标量时,控制指令流跳转至目标跳转地址label。
在一种可能的实现方式中,可以将判断条件为“待判断标量中的第一待判断标量不等于待判断标量中的第二待判断标量”的标量控制流指令的指令格式设置为:bne.type2,src0,src1,label。该标量控制流指令表示:对src0和src1中分别存储的数据类型均为type2的第一待判断标量和第二待判断标量进行比较,在的第一待判断标量不等于第二待判断标量时,控制指令流跳转至目标跳转地址label。
在一种可能的实现方式中,可以将判断条件为“待判断标量中的第一待判断标量小于待判断标量中的第二待判断标量”的标量控制流指令的指令格式设置为:blt.type2,src0,src1,label。该标量控制流指令表示:对src0和src1中分别存储的数据类型均为type2的第一待判断标量和第二待判断标量进行比较,在的第一待判断标量小于第二待判断标量时,控制指令流跳转至目标跳转地址label。
在一种可能的实现方式中,可以将判断条件为“待判断标量中的第一待判断标量大于或等于待判断标量中的第二待判断标量”的标量控制流指令的指令格式设置为:bge.type2,src0,src1,label。该标量控制流指令表示:对src0和src1中分别存储的数据类型均为type2的第一待判断标量和第二待判断标量进行比较,在的第一待判断标量大于或等于第二待判断标量时,控制指令流跳转至目标跳转地址label。
在一种可能的实现方式中,可以将无需判断直接进指令流跳转的标量控制流指令的指令格式设置为:jmp,label。该标量控制流指令表示:在接收到该指令时,直接控制指令流跳转至目标跳转地址label。
应当理解的是,本领域技术人员可以根据需要对标量控制流指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量控制流指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用标量控制流指令处理装置进行取地址处理”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解标量控制流指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图17-3示出根据本公开一实施例的标量控制流指令处理装置的应用场景的示意图。如图17-3所示,标量控制流指令处理装置对标量控制流指令进行处理的过程如下:
如图17-3所示,控制模块17-11对获取到的标量控制流指令1标量控制流指令1(如标量控制流指令1为beq.u16 101 102 500)进行解析,得到标量控制流指令1的操作码和操作域。确定出判断条件为“待判断标量中的第一待判断标量等于待判断标量中的第二待判断标量”、数据类型为16位无符号类型、目标跳转地址为500。从第一待判断标量地址101获取到16位无符号的第一待判断标量s1,从第二待判断标量地址102获取到16位无符号的第二待判断标量s2。利用比较器对第一待判断标量s1和第二待判断标量s2进行比较,在第一待判断标量s1等于第二待判断标量s2时,控制指令流跳转至目标跳转地址500。
以上控制模块的工作过程可参考上文的相关描述。
这样,标量控制流指令处理装置可以高效、快速地对标量控制流指令进行处理。
图17-4示出根据本公开一实施例的标量控制流指令处理方法的流程图。如图17-4所示,该方法应用于上述标量控制流指令处理装置,该方法包括步骤S51-17和步骤S52-17。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-17和步骤S52-17。
在步骤S51-17中,根据获取到的标量控制流指令的操作码和操作域获取执行标量控制流指令所需的待判断标量和目标跳转地址,以及确定标量控制流指令所对应的跳转条件。其中,操作码用于指示标量控制流指令对数据所进行的处理为标量跳转处理,操作域包括待判断标量地址和目标跳转地址。
在步骤S52-17中,在待判断标量满足跳转条件时,控制指令流跳转至目标跳转地址。
在一种可能的实现方式中,该方法还可以包括:在待判断标量满足跳转条件时,控制指令流跳转至目标跳转地址,可以包括:
根据跳转条件利用至少一个比较器对待判断标量进行比较,得到比较结果,比较结果用于指示得到待判断标量是否满足跳转条件。
在一种可能的实现方式中,操作域还可以包括跳转条件。其中,确定标量控制流指令所对应的跳转条件,可以包括:在操作域包括跳转条件时,根据操作域确定标量控制流指令所对应的跳转条件。
在一种可能的实现方式中,操作码还可以用于指示跳转条件。其中,确定标量控制流指令所对应的跳转条件,可以包括:在操作码用于指示跳转条件时,根据操作码确定标量控制流指令所对应的跳转条件。
在一种可能的实现方式中,跳转条件可以包括判断条件和待判断标量的数据类型。
其中,判断条件可以包括以下任一种:
待判断标量中的第一待判断标量等于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量不等于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量小于待判断标量中的第二待判断标量;
待判断标量中的第一待判断标量大于或等于待判断标量中的第二待判断标量;
待判断标量大于指定值。
数据类型可以包括以下任一种:16位无符号类型、32位无符号类型、48位无符号类型、16位有符号类型、32位有符号类型、48位有符号类型。
在一种可能的实现方式中,该方法还可以包括:存储待判断标量。
在一种可能的实现方式中,该方法还可以包括:
存储标量控制流指令;
对标量控制流指令进行解析,得到标量控制流指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量控制流指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执 行指令执行完毕后,控制进行第一待执行指令的执行。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量控制流指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量控制流指令处理方法的适用范围广,对标量控制流指令的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款Q1、一种标量控制流指令处理装置,所述装置包括控制模块,所述控制模块包括:
数据获取子模块,根据获取到的标量控制流指令的操作码和操作域,获取执行标量控制流指令所需的待判断标量和目标跳转地址,以及确定标量控制流指令所对应的跳转条件;
跳转控制子模块,在所述待判断标量满足所述跳转条件时,控制指令流跳转至所述目标跳转地址,
其中,所述操作码用于指示所述标量控制流指令对数据所进行的处理为标量跳转处理,所述操作域包括待判断标量地址和所述目标跳转地址。
条款Q2、根据条款Q1所述的装置,所述跳转控制子模块,包括:
至少一个比较器,用于根据所述跳转条件对所述待判断标量进行比较,得到比较结果,所述比较结果用于指示得到待判断标量是否满足所述跳转条件。
条款Q3、根据条款Q1所述的装置,所述操作域还包括跳转条件,
其中,数据获取子模块,用于在所述操作域包括跳转条件时,根据所述操作域确定标量控制流指令所对应的跳转条件。
条款Q4、根据条款Q1所述的装置,所述操作码还用于指示跳转条件,
其中,数据获取子模块,用于在所述操作码用于指示跳转条件时,根据所述操作码确定标量控制流指令所对应的跳转条件。
条款Q5、根据条款Q1所述的装置,所述跳转条件包括判断条件和待判断标量的数据类型,
其中,所述判断条件包括以下任一种:
所述待判断标量中的第一待判断标量等于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量不等于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量小于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量大于或等于所述待判断标量中的第二待判断标量;
所述待判断标量大于指定值;
所述数据类型包括以下任一种:
16位无符号类型、32位无符号类型、48位无符号类型、16位有符号类型、32位有符号类型、48位有符号类型。
条款Q6、根据条款Q1所述的装置,所述装置还包括:
存储模块,用于存储所述待判断标量。
条款Q7、根据条款Q1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述标量控制流指令;
指令处理子模块,用于对所述标量控制流指令进行解析,得到标量控制流指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量控制流指令。
条款Q8、根据条款Q7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取并控制所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款Q9、一种机器学习运算装置,所述装置包括:
一个或多个如条款Q1-条款Q8任一项所述的标量控制流指令处理装置,用于从其他处理装置中获取待判断标量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量控制流指令处理装置时,多个所述标量控制流指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量控制流指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量控制流指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述标量控制流指令处理装置共享内存或者拥有各自的内存;多个所述标量控制流指令处理装置的互联方式是任意互联拓扑。
条款Q10、一种组合处理装置,所述组合处理装置包括:
如条款Q9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款Q11、一种机器学习芯片,所述机器学习芯片包括:
如条款Q9所述的机器学习运算装置或如条款Q10所述的组合处理装置。
条款Q12、一种电子设备,所述电子设备包括:
如条款Q11所述的机器学习芯片。
条款Q13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款Q11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款Q14、一种标量控制流指令处理方法,所述方法包括:
根据获取到的标量控制流指令的操作码和操作域,获取执行标量控制流指令所需的待判断标量和目标跳转地址,以及确定标量控制流指令所对应的跳转条件;
在所述待判断标量满足所述跳转条件时,控制指令流跳转至所述目标跳转地址,
其中,所述操作码用于指示所述标量控制流指令对数据所进行的处理为标量跳转处理,所述操作域包括待判断标量地址和所述目标跳转地址。
条款Q15、根据条款Q14所述的方法,在所述待判断标量满足所述跳转条件时,控制指令流跳转至所述目标跳转地址,包括:
根据所述跳转条件利用至少一个比较器对所述待判断标量进行比较,得到比较结果,所述比较结果用于指示得到待判断标量是否满足所述跳转条件。
条款Q16、根据条款Q14所述的方法,所述操作域还包括跳转条件,
其中,确定标量控制流指令所对应的跳转条件,包括:
在所述操作域包括跳转条件时,根据所述操作域确定标量控制流指令所对应的跳转条件。
条款Q17、根据条款Q14所述的方法,所述操作码还用于指示跳转条件,
其中,确定标量控制流指令所对应的跳转条件,包括:
在所述操作码用于指示跳转条件时,根据所述操作码确定标量控制流指令所对应的跳转条件。
条款Q18、根据条款Q14所述的方法,所述跳转条件包括判断条件和待判断标量的数据类型,
其中,所述判断条件包括以下任一种:
所述待判断标量中的第一待判断标量等于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量不等于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量小于所述待判断标量中的第二待判断标量;
所述待判断标量中的第一待判断标量大于或等于所述待判断标量中的第二待判断标量;
所述待判断标量大于指定值;
所述数据类型包括以下任一种:
16位无符号类型、32位无符号类型、48位无符号类型、16位有符号类型、32位有符号类型、48位有符号类型。
条款Q19、根据条款Q14所述的方法,所述方法还包括:
存储所述待判断标量。
条款Q20、根据条款Q14所述的方法,所述方法还包括:
存储所述标量控制流指令;
对所述标量控制流指令进行解析,得到所述标量控制流指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量控制流指令。
条款Q21、根据条款Q20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现向量运算,相关技术中,由于现阶段没有能广泛适用于各类编程语言的用于进行向量运算的指令,技术人员需要自定义对应其编程语言环境的一条或多条指令来实现向量运算,导致进行向量运算的效率低、速度慢。本公开提供一种向量指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现向量运算,能够显著提高进行向量运算的效率和速度。
图18-1示出根据本公开一实施例的向量指令处理装置的框图。如图18-1所示,该装置包括控制模块18-11和运算模块18-12。
控制模块18-11,用于对获取到的向量指令进行解析,得到向量指令的操作码和操作域,并根据操作码和操作域获取执行向量指令所需的待运算向量和目标地址,以及确定向量指令的向量运算类型。其中,操作码用于指示向量指令对数据所进行的运算为向量运算,操作域包括待运算向量地址和目标地址。
运算模块18-12,用于根据向量运算类型对待运算向量进行向量运算,获得运算结果,并将运算结果存入目标地址。
在本实施例中,待运算向量可以是一个或多个。向量运算类型可以指示对待运算向量所进行的算术运算、逻辑运算的种类或类型。例如,向量相加运算等。本领域技术人员可以根据实际需要对向量运算类型进行设置,本公开对此不作限制。
在本实施例中,控制模块可以从待运算向量地址中,分别获得待运算向量。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算向量、向量运算类型等参数以及对应的运算方法等等。对于一个向量指令其必须包括操作码和操作域,其中,操作域至少包括待运算向量地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对向量指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收向量指令,并控制一个或多个运算模块进行向量运算。在装置包括多个控制模块时,多个控制模块可以分别接收向量指令,并控制对应的一个或多个运算模块进行向量运算。
本公开实施例所提供的向量指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的向量指令进行解析,得到向量指令的操作码和操作域,并根据操作码和操作域获取执行向量指令所需的待运算向量和目标地址,以及确定向量指令的向量运算类型;运算模块用于根据向量运算类型对待运算向量进行向量运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的向量指令处理装置的适用范围广,对向量指令的处理效率高、处理速度快,进行向量运算的处理效率高、处理速度快。
图18-2a示出根据本公开一实施例的向量指令处理装置的框图。在一种可能的实现方式中,如图18-2a所示,运算模块18-12可以包括多个向量运算器18-120。多个向量运算器18-120用于执行与向量运算类型相对应的向量运算。
在该实现方式中,向量运算器可以包括加法器、除法器、乘法器、比较器等能够对向量进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的向量运算的数据量的大小、向量运算类型、对向量运算的处理速度、效率等要求对向量运算器的种类及数量进行设置,本公开对此不作限制。
图18-2b示出根据本公开一实施例的向量指令处理装置的框图。在一种可能的实现方式中,如图18-2b所示,运算模块18-12可以包括主运算子模块18-121和多个从运算子模块18-122。主运算子模块18-121可以包括多个向量运算器(图中未示出)。主运算子模块18-121,用于利用多个向量运算器执行向量运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,如图18-2b所示,运算模块18-12可以包括主运算子模块18-121和多个从运算子模块18-122,从运算子模块18-122可以包括多个向量运算器(图中未示出)。从运算子模块18-122,用于利用所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将运算结果存入对应的子缓存空间中,以及将运算结果发送至主运算子模块18-121。主运算子模块18-121,还用于接收运算结果,并将述运算结果存入目标地址中。
在该实现方式中,控制模块可以根据向量运算类型和运算的任务量等,确定通过主运算子模块或多个从运算子模块执行当前接收到的向量指令。例如,在确定需要对待运算向量进行求和运算时,可以控制主运算子模块进行运算。在确定需要对待运算向量进行乘法运算时,可以控制多个从运算子模块进行运算。
在一种可能的实现方式中,操作域还可以包括向量运算类型。
其中,控制模块18-11,还可以用于根据操作域确定向量运算类型。
在一种可能的实现方式中,向量运算类型可以包括以下至少一种:向量相乘运算、向量与标量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算。其中,运算条件可以包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。指定值可以是0、1等数值,本公开对此不作限制。
其中,满足按位相等存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位是否相等,在第一待运算向量与第二待运算向量的对应位相等时,存储指定值;在对应位不相等时存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位不相等存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位是否相等,在第一待运算向量与第二待运算向量的对应位不相等时,存储指定值;在对应位相等时存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位小于存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位的大小关系,在对应位上的第一待运算向量的值小于第二待运算向量的值时,存储指定值;在对应位上的第一待运算向量的值大于或等于第二待运算向量的值时,存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位大于或等于存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位的大小关系,在对应位上的第一待运算向量的值大于或等于第二待运算向量的值时,存储指定值;在对应位上的第一待运算向量的值小于第二待运算向量的值时,存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位大于存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位的大小关系,在对应位上的第一待运算向量的值大于第二待运算向量的值时,存储指定值;在对应位上的第一待运算向量的值小于或等于第二待运算向量的值时,存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位小于或等于存储指定值运算可以是:判断待运算向量中的第一待运算向量与第二待运算向量的对应位的大小关系,在对应位上的第一待运算向量的值小于或等于第二待运算向量的值时,存储指定值;在对应位上的第一待运算向量的值大于第二待运算向量的值时,存储第一待运算向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
在该实现方式中,可以为不同的向量运算类型设置不同的操作域代码,以区分不同的运算种类。例如,可以将“向量相乘运算”的代码设置为“mult”。可以将“向量与标量相乘运算”的代码设置为“mult.const”。可以将“向量相加运算”的代码设置为“add”。可以将“向量求和运算”的代码设置为“sub”。可以将“按位与运算”的代码设置为“and”。可以将“按位或运算”的代码设置为“or”。可以将“按位异或运算”的代码设置为“xor”。可以将“按位取反运算”的代码设置为“not”。可以将“按位求最大值运算”的代码设置为“max”。可以将“按位求最小值运算”的代码设置为“min”。可以将“满足按位相等则存储指定值1运算”的代码设置为“eq”。可以将“满足按位不相等则存储指定值1运算”的代码设置为“ne”。可以将“满足按位小于存储指定值1运算”的代码设置为“lt”。可以将“满足按位大于或等于存储指定值1运算”的代码设置为“ge”。可以将“满足按位大于存储指定值1运算”的代码设置为“gt”。可以将“满足按位小于或等于存储指定值1运算”的代码设置为“le”。
本领域技术人员可以根据实际需要对运算种类、及其对应的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块18-11,还用于根据操作域确定输入量,并从待运算数据地址中获取数据量为输入量的待运算向量。
在该实现方式中,输入量可以是表征待运算向量的数据量的参数,例如,向量长度、宽度等。
在一种可能的实现方式中,可以设置默认输入量。在根据操作域无法确定输入量时,可以将默认输入量确定为当前向量指令的输入量,并从待运算数据地址中获取数据量为默认输入量的待运算向量。
在一种可能的实现方式中,如图18-2a、图18-2b所示,该装置还可以包括存储模块18-13。存储模块18-13用于存储待运算向量。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓 存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存,用于存储待运算数据和待运算向量。寄存器,用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,向量指令的指令格式可以是:
opcode dst src type size
其中,opcode为向量指令的操作码,dst、src、type、size为向量指令的操作域。其中,dst为目标地址。src为待运算向量地址,在待运算向量为多个时,src可以包括多个待运算数据地址src0,src1,…,srcn,本公开对此不作限制。type为向量运算类型。size为输入量。其中,type可以是向量运算类型的代码,如mult、mult.const、add、sub、eq、ne、lt、ge、gt、le、eq、and、or、xor、not、max、min。
其中,在待运算向量为多个时,指令格式中可以包括多个待运算数据地址,以下以包括两个待运算向量为例,向量指令的指令格式可以是:
opcode dst src0 src1 type size
在一种可能的实现方式中,向量指令的指令格式可以是:
type dst src size
在一种可能的实现方式中,可以将用于“向量相乘运算”的向量指令的指令格式设置为:mult dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行相乘运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“向量与标量相乘运算”的向量指令的指令格式设置为:mult.const dst src0 src1 size。其表示:从第一待运算数据地址src0获取size大小的待运算向量、从第二待运算数据地址src1中获取size大小的待运算标量,对待运算向量和待运算标量进行相乘运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“向量相加运算”的向量指令的指令格式设置为:add dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行相加运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“向量求和运算”的向量指令的指令格式设置为:sub dst src size。其表示:从待运算地址src获取size大小的多个待运算向量,对多个待运算向量进行求和运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位与运算”的向量指令的指令格式设置为:and dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位与运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位或运算”的向量指令的指令格式设置为:or dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位异或运算”的向量指令的指令格式设置为:xor dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位异或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位取反运算”的向量指令的指令格式设置为:not dst src size。其表示:从待运算地址src获取size大小的待运算向量,对待运算向量进行按位取反运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位求最大值运算”的向量指令的指令格式设置为:max dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位求最大值运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位求最小值运算”的向量指令的指令格式设置为:min dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位求最小值运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位相等则存储指定值1运算”的向量指令的指令格式设置为:eq dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在第一待运算向量和第二待运算向量的对应位相等时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位不相等则存储指定值1运算”的向量指令的指令格式设置为:ne dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在第一待运算向量和第二待运算向量的对应位不相等时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位小于则存储指定值1运算”的向量指令的指令格式设置为:lt dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在对应位上第一待运算向量的数值小于第二待运算向量的数值时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位大于或等于则存储指定值1运算”的向量指令的指令格式设置为:ge dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在对应位上第一待运算向量的数值大于或等于第二待运算向量的数值时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位大于则存储指定值1运算”的向量指令的指令格式设置为:gt dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在对应位上第一待运算向量的数值大于第二待运算向量的数值时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位小于或等于则存储指定值1运算”的向量指令的指令格式设置为:le dst src0 src1 size。其表示:从第一待运算地址src0获取size大小的第一待运算向量、从第二待运算地址src1中获取size大小的第二待运算向量,对第一待运算向量和第二待运算向量进行按位比较,在对应位上第一待运算向量的数值小于或等于第二待运算向量的数值时存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
应当理解的是,本领域技术人员可以根据需要对向量指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing  Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了向量指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用向量指令处理装置进行向量运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解向量指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图18-3示出根据本公开一实施例的向量指令处理装置的应用场景的示意图。如图18-3所示,向量指令处理装置对向量指令进行处理的过程如下:
控制模块18-11对获取到的向量指令1(如向量指令1为opcode 500 101 102 add 1024)进行解析,得到向量指令1的操作码和操作域。其中,向量指令1的操作码为opcode,目标地址为500,第一待运算向量地址为101,第二待运算数据地址为102。向量运算类型为add(向量相加运算)。输入量为1024。控制模块18-11从待运算向量地址101中获取到数据量为输入量1024的第一待运算向量,以及从待运算向量地址102中获取到数据量为输入量1024的第二待运算向量。运算模块18-12对第一待运算向量和第二待运算向量进行相加运算,得到运算结果1,并将运算结果1存入目标地址500中。
其中,向量指令1除可以为上述opcode 500 101 102 add 1024,还可以为add 500 101 102 1024,不同指令格式的向量指令的处理过程相似,不再赘述。
以上各模块的工作过程可参考上文的相关描述。
这样,向量指令处理装置可以高效、快速地对向量指令进行处理,进行向量运算的处理效率高、处理速度快。
图18-4示出根据本公开一实施例的向量指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-18和步骤S52-18。如图18-4所示,该方法应用于上述向量指令处理装置,该方法包括步骤S51-18和步骤S52-18。
在步骤S51-18中,利用控制模块对获取到的向量指令进行解析,得到向量指令的操作码和操作域,并根据操作码和操作域获取执行向量指令所需的待运算向量和目标地址,以及确定向量指令的向量运算类型。其中,操作码用于指示向量指令对数据所进行的运算为向量运算,操作域包括待运算向量地址和目标地址。
在步骤S52-18中,利用运算模块根据向量运算类型对待运算向量进行向量运算,获得运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,根据向量运算类型对待运算向量进行向量运算,获得运算结果,可以包括:利用运算模块中的多个向量运算器执行与向量运算类型相对应的向量运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括所述多个向量运算器。其中,步骤S52-18可以包括:利用主运算子模块中的多个向量运算器执行与向量运算类型相对应的向量运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,从运算子模块包括多个向量运算器,
其中,根据向量运算类型对待运算向量进行向量运算,获得运算结果,并将运算结果存入目标地址中,包括:
利用每个从运算子模块所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将运算结果存入对应的子缓存空间中,以及将运算结果发送至主运算子模块;
利用主运算子模块接收运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括向量运算类型。其中,确定向量指令的向量运算类型,可以包括:在操作域中包括向量运算类型时,根据操作域确定向量运算类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域获取执行向量指令所需的待运算向量和目标地址,还可以包括:根据操作域确定输入量,并从待运算数据地址中获取数据量为输入量的待运算向量。
在一种可能的实现方式中,操作码还用于指示所述向量运算类型。其中,确定向量指令的向量运算类型,可以包括:在操作码用于指示所述向量运算类型时,根据操作码确定所述向量运算类型。
在一种可能的实现方式中,向量运算类型可以包括以下至少一种:向量相乘运算、向量与标量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算。其中,运算条件可以包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储待运算向量,其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据和待运算向量,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的向量指令进行解析,得到向量指令的操作码和操作域,可以包括:
存储的向量指令;
对向量指令进行解析,得到向量指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括向量指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零执行指令执行完毕后,控制进行第一待执行指令的执行。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系可以包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了向量指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的向量指令处理方法的适用范围广,对向量的处理效率高、处理速度快,进行向量运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款R1、一种向量指令处理装置,所述装置包括:
控制模块,用于对获取到的向量指令进行解析,得到向量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行向量指令所需的待运算向量和目标地址,以及确定向量指令的向量运算类型;
运算模块,用于根据所述向量运算类型对所述待运算向量进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述向量指令对数据所进行的运算为向量运算,所述操作域包括待运算向量地址和所述目标地址。
条款R2、根据条款R1所述的装置,所述运算模块,包括:
多个向量运算器,用于执行与所述向量运算类型相对应的向量运算。
条款R3、根据条款R2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个向量运算器,
所述主运算子模块,用于利用所述多个向量运算器执行所述向量运算,得到运算结果,并将所 述运算结果存入所述目标地址中。
条款R4、根据条款R2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个向量运算器,
从运算子模块,用于利用所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将所述运算结果存入对应的子缓存空间中,以及将所述运算结果发送至所述主运算子模块;
所述主运算子模块,还用于接收所述运算结果,并将所述运算结果存入所述目标地址中。
条款R5、根据条款R1所述的装置,所述操作域还包括向量运算类型,
其中,所述控制模块,还用于在所述操作域中包括向量运算类型时,根据所述操作域确定所述向量运算类型。
条款R6、根据条款R1所述的装置,所述操作域还包括输入量,
其中,所述控制模块,还用于根据所述操作域确定所述输入量,并从所述待运算数据地址中获取数据量为所述输入量的待运算向量。
条款R7、根据条款R1所述的装置,所述操作码还用于指示所述向量运算类型,
所述控制模块,还用于在所述操作码用于指示所述向量运算类型时,根据所述操作码确定所述向量运算类型。
条款R8、根据条款R1所述的装置,所述向量运算类型包括以下至少一种:
向量相乘运算、向量与标量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算,
其中,所述运算条件包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
条款R9、根据条款R1所述的装置,所述装置还包括:
存储模块,用于存储所述待运算向量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待运算向量,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款R10、根据条款R1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述向量指令;
指令处理子模块,用于对所述向量指令进行解析,得到向量指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量指令。
条款R11、根据条款R10所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款R12、一种机器学习运算装置,所述装置包括:
一个或多个如条款R1-条款R11任一项所述的向量指令处理装置,用于从其他处理装置中获取待运算向量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述向量指令处理装置时,多个所述向量指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述向量指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述向量指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述向量指令处理装置共享内存或者拥有各自的内存;多个所述向量指令处理装置的互联方式是任意互联拓扑。
条款R13、一种组合处理装置,所述组合处理装置包括:
如条款R12所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款R14、一种机器学习芯片,所述机器学习芯片包括:
如条款R12所述的机器学习运算装置或如条款R13所述的组合处理装置。
条款R15、一种电子设备,所述电子设备包括:
如条款R14所述的机器学习芯片。
条款R16、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款R14所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款R17、一种向量指令处理方法,所述方法应用于向量指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的向量指令进行解析,得到向量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行向量指令所需的待运算向量和目标地址,以及确定向量指令的向量运算类型;
利用运算模块根据所述向量运算类型对所述待运算向量进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述向量指令对数据所进行的运算为向量运算,所述操作域包括待运算向量地址和所述目标地址。
条款R18、根据条款R17所述的方法,根据所述向量运算类型对所述待运算向量进行向量运算,包括:
利用所述运算模块中的多个向量运算器执行与所述向量运算类型相对应的向量运算。
条款R19、根据条款R18所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个向量运算器,
其中,根据所述向量运算类型对所述待运算向量进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的所述多个向量运算器执行与所述向量运算类型相对应的向量运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款R20、根据条款R18所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个向量运算器,
其中,根据所述向量运算类型对所述待运算向量进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用每个从运算子模块所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将所述运算结果存入对应的子缓存空间中,以及将所述运算结果发送至所述主运算子模块;
利用所述主运算子模块接收所述运算结果,并将所述运算结果存入所述目标地址中。
条款R21、根据条款R17所述的方法,所述操作域还包括向量运算类型,
其中,确定向量指令的向量运算类型,包括:
在所述操作域中包括向量运算类型时,根据所述操作域确定所述向量运算类型。
条款R22、根据条款R17所述的方法,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域获取执行向量指令所需的待运算向量和目标地址,还包括:
根据所述操作域确定所述输入量,并从所述待运算数据地址中获取数据量为所述输入量的待运算向量。
条款R23、根据条款R17所述的方法,所述操作码还用于指示所述向量运算类型,
其中,确定向量指令的向量运算类型,包括:
在所述操作码用于指示所述向量运算类型时,根据所述操作码确定所述向量运算类型。
条款R24、根据条款R17所述的方法,所述向量运算类型包括以下至少一种:
向量相乘运算、向量与标量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算、按位取反运算、按位求最大值运算、按位求最小值运算,
其中,所述运算条件包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
条款R25、根据条款R17所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待运算向量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待运算向量,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款R26、根据条款R17所述的方法,对获取到的向量指令进行解析,得到向量指令的操作码和操作域,包括:
存储所述向量指令;
对所述向量指令进行解析,得到向量指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量指令。
条款R27、根据条款R26所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款R28、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款R17至条款R27任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现向量的循环运算,相关技术中,由于现阶段没有能广泛适用于各类编程语言的用于进行向量的循环运算的指令,技术人员需要自定义对应其编程语言环境的一条或多条指令来实现向量运算,导致进行向量运算的效率低、速度慢。本公开提供一种循环向量指令处理方法、装置、计算机设备和存储介质,仅 用一个指令即可以实现循环向量运算,能够显著提高进行循环向量运算的效率和速度。
图19-1示出根据本公开一实施例的循环向量指令处理装置的框图。如图19-1所示,该装置包括控制模块19-11和运算模块19-12。
控制模块19-11,用于对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,并根据操作码和操作域获取执行循环向量指令所需的第一待运算向量、第二待运算向量和目标地址,以及确定循环向量指令的向量运算类型。其中,操作码用于指示循环向量指令对数据所进行的运算为循环向量运算,操作域包括第一待运算向量地址、第二待运算向量地址和目标地址。
运算模块19-12,用于根据第二待运算向量将第一待运算向量切分为多个切分向量,根据向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,获得运算结果,并将运算结果存入目标地址。
在本实施例中,循环向量运算可以是将数据量较大的一个向量切分为与数据量较小的另一个向量的数据量相同的多个切分向量,而后对每个切分向量与另一个向量分别进行对应向量运算类型的运算,得到运算结果。向量运算类型可以指示对切分向量和第二待运算向量所进行的算术运算、逻辑运算的种类或类型。例如,向量相加运算等。本领域技术人员可以根据实际需要对向量运算类型进行设置,本公开对此不作限制。
在本实施例中,根据向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,能够得到与每个切分向量分别对应的多个切分运算结果,并将多个切分运算结果作为该循环向量指令的运算结果存入目标地址,也即将多个切分运算结果作为第一待运算向量与第二待运算向量进行向量运行的运算结果。第一待运算向量的数据量可以是第二待运算向量的数据量的整数倍,以保证所获得的切分向量能够与第二待运算向量进行向量运算。
在本实施例中,控制模块可以从第一待运算向量地址和第二待运算向量地址中,分别获得第一待运算向量和第二待运算向量。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括第一待运算向量、第二待运算向量、向量运算类型等参数以及对应的运算方法等等。对于一个循环向量指令其必须包括操作码和操作域,其中,操作域至少包括第一待运算向量地址、第二待运算向量地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对循环向量指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。。在装置包括一个控制模块时,该控制模块可以接收循环向量指令,并控制一个或多个运算模块进行循环向量运算。在装置包括多个控制模块时,多个控制模块可以分别接收循环向量指令,并控制对应的一个或多个运算模块进行循环向量运算。
本公开实施例所提供的循环向量指令处理装置,该装置包括控制模块和运算模块,控制模块用于对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,并根据操作码和操作域获取执行循环向量指令所需的第一待运算向量、第二待运算向量和目标地址,以及确定循环向量指令的向量运算类型;运算模块用于根据第二待运算向量将第一待运算向量切分为多个切分向量,根据向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,获得运算结果,并将运算结果存入目标地址中。本公开实施例所提供的循环向量指令处理装置的适用范围广,对循环向量指令的处理效率高、处理速度快,进行运算的处理效率高、处理速度快。
图19-2a示出根据本公开一实施例的循环向量指令处理装置的框图。在一种可能的实现方式中,如图19-2a所示,运算模块19-12可以包括多个向量运算器19-120。多个向量运算器19-120用于执行与向量运算类型相对应的向量运算。
在该实现方式中,向量运算器可以包括加法器、除法器、乘法器、比较器等能够对向量进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的向量运算的数据量的大小、向量运算类型、对向量运算的处理速度、效率等要求对向量运算器的种类及数量进行设置,本公开对此不作限制。
图19-2b示出根据本公开一实施例的循环向量指令处理装置的框图。在一种可能的实现方式中,如图19-2b所示,运算模块19-12可以包括主运算子模块19-121和多个从运算子模块19-122。主运算子模块19-121可以包括多个向量运算器(图中未示出)。
主运算子模块19-121,用于利用多个向量运算器执行向量运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,如图19-2b所示,运算模块19-12可以包括主运算子模块19-121和多个从运算子模块19-122,从运算子模块19-122可以包括多个向量运算器(图中未示出)。从运算子模块19-122,用于利用所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将运算结果存入对应的子缓存空间中,以及将运算结果发送至主运算子模块19-121。主运算子模块19-121,还用于接收运算结果,并将述运算结果存入目标地址中。
在该实现方式中,控制模块可以根据向量运算类型和运算的任务量等,确定通过主运算子模块或多个从运算子模块执行当前接收到的向量指令。例如,在确定向量运算类型为向量相加运算时,可以控制主运算子模块进行运算。在确定向量运算类型为向量相乘运算时,可以控制多个从运算子模块进行运算。
在一种可能的实现方式中,操作域还可以包括向量运算类型。
其中,控制模块19-11,还可以用于根据操作域确定向量运算类型。
在一种可能的实现方式中,向量运算类型可以包括以下至少一种:向量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算。其中,运算条件可以包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。指定值可以是0、1等数值,本公开对此不作限制。
其中,满足按位相等存储指定值运算可以是:判断切分向量与第二待运算向量的对应位是否相等,在切分向量与第二待运算向量的对应位相等时,存储指定值;在对应位不相等时存储切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位不相等存储指定值运算可以是:判断切分向量与第二待运算向量的对应位是否相等,在切分向量与第二待运算向量的对应位不相等时,存储指定值;在对应位相等时存储第一切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位小于存储指定值运算可以是:判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值小于第二待运算向量的值时,存储指定值;在对应位上的切分向量的值大于或等于第二待运算向量的值时,存储第一切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位大于或等于存储指定值运算可以是:判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值大于或等于第二待运算向量的值时,存储指定值;在对应位上的切分向量的值小于第二待运算向量的值时,存储第一切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位大于存储指定值运算可以是:判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值大于第二待运算向量的值时,存储指定值;在对应位上的切分向量的值小于或等于第二待运算向量的值时,存储第一切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
满足按位小于或等于存储指定值运算可以是:判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值小于或等于第二待运算向量的值时,存储指定值;在对应位上的切分向量的值大于第二待运算向量的值时,存储第一切分向量或第二待运算向量在对应位的值、或者存储0等与指定值不同的数值。
在该实现方式中,可以为不同的向量运算类型设置不同的操作域代码,以区分不同的运算种类。例如,可以将“向量相乘运算”的代码设置为“mult.cycle”。可以将“向量相加运算”的代码设置为“add.cycle”。可以将“向量求和运算”的代码设置为“sub.cycle”。可以将“按位与运算”的代码设置为“and.cycle”。可以将“按位或运算”的代码设置为“or.cycle”。可以将“按位异或运算”的代码设置为“xor.cycle”。可以将“满足按位相等则存储指定值1运算”的代码设置为“eq.cycle”。可以将“满足按位不相等则存储指定值1运算”的代码设置为“ne.cycle”。可以将“满足按位小于存储指定值1运算”的代码设置为“lt.cycle”。可以将“满足按位大于或等于存储指定值1运算”的代码设置为“ge.cycle”。可以将“满足按位大于存储指定值1运算”的代码设置为“gt.cycle”。可以将“满足按位小于或等于存储指定值1运算”的代码设置为“le.cycle”。
本领域技术人员可以根据实际需要对运算种类、及其对应的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,操作域还可以包括第一输入量和第二输入量。其中,控制模块19-11,还可以用于根据操作域确定第一输入量和第二输入量,并从第一待运算向量地址中获取数据量为第一输入量的第一待运算向量,以及从第二待运算向量地址中获取数据量为第二输入量的第二待运算向量。
在一种可能的实现方式中,根据第二待运算向量将第一待运算向量切分为n个切分向量,可以包括:根据第二输入量确定每个切分向量的切分数据量,并根据切分数据量将第一待运算向量切分为n个切分向量。
在该实现方式中,可以将第二输入量确定为每个切分向量的切分数据量。
在该实现方式中,第一输入量和第二输入量可以是表征第一待运算向量和第二待运算向量的数据量的参数,例如,向量长度、宽度等。
在一种可能的实现方式中,可以设置默认第一输入量和第二输入量。在根据操作域无法确定第一输入量和第二输入量时,可以将默认第一输入量和第二输入量确定为当前循环向量指令的第一输入量和第二输入量,并从待运算向量地址中获取数据量为默认第一输入量的第一待运算向量、默认第二输入量的第二待运算向量。
在一种可能的实现方式中,如图19-2a、图19-2b所示,该装置还可以包括存储模块19-13。存储模块19-13用于存储第一待运算向量和第二待运算向量。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存,用于存储待运算数据、第一待运算向量和第二待运算向量。寄存器,用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,循环向量指令的指令格式可以是:
opcode dst src0 src1 src0_size src1_size type.cycle
其中,opcode为循环向量指令的操作码,dst、src、type、src0_size、src1_size为循环向量指令的操作域。其中,dst为目标地址。src0为第一待运算向量地址。src1为第二待运算向量地址。type为向量运算类型。src0_size为第一输入量。src1_size为第二输入量。其中,type.cycle可以是向量运算类型的代码,如mult.cycle、add.cycle、sub.cycle、eq.cycle、ne.cycle、lt.cycle、ge.cycle、gt.cycle、le.cycle、eq.cycle、and.cycle、or.cycle、xor.cycle。
在一种可能的实现方式中,循环向量指令的指令格式还可以是:
type.cycle dst src0 src1 src0_size src1_size
在一种可能的实现方式中,可以将用于“向量相乘运算”的循环向量指令的指令格式设置为: mult.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行相乘运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“向量相加运算”的循环向量指令的指令格式设置为:add.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行相加运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“向量求和运算”的循环向量指令的指令格式设置为:sub.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行求和运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位与运算”的循环向量指令的指令格式设置为:and.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行按位与运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位或运算”的循环向量指令的指令格式设置为:or.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行按位或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“按位异或运算”的循环向量指令的指令格式设置为:xor.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。对每个切分向量与第二待运算向量分别进行按位异或运算,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位相等则存储指定值1运算”的循环向量指令的指令格式设置为:eq.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与第二待运算向量的对应位是否相等,在切分向量与第二待运算向量的对应位相等时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位不相等则存储指定值1运算”的循环向量指令的指令格式设置为:ne.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与第二待运算向量的对应位是否相等,在切分向量与第二待运算向量的对应位不相等时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位小于则存储指定值1运算”的循环向量指令的指令格式设置为:lt.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与 第二待运算向量的对应位的大小关系,在对应位上的切分向量的值小于第二待运算向量的值时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位大于或等于则存储指定值1运算”的循环向量指令的指令格式设置为:ge.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值大于或等于第二待运算向量的值时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位大于则存储指定值1运算”的循环向量指令的指令格式设置为:gt.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值大于第二待运算向量的值时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
在一种可能的实现方式中,可以将用于“满足按位小于或等于则存储指定值1运算”的循环向量指令的指令格式设置为:le.cycle dst src0 src1 src0_size src1_size。其表示:从第一待运算地址src0获取src0_size大小的第一待运算向量、从第二待运算地址src1中获取src1_size大小的第二待运算向量。将第一待运算向量切分为多个切分向量,每个切分向量的数据量与src1_size相同。判断切分向量与第二待运算向量的对应位的大小关系,在对应位上的切分向量的值小于第二待运算向量的值时,存储指定值1,得到运算结果。并将运算结果存储到目标地址dst中。
应当理解的是,本领域技术人员可以根据需要对循环向量指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了循环向量指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用循环向量指令处理装置进行向量运算”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解循环向量指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图19-3示出根据本公开一实施例的循环向量指令处理装置的应用场景的示意图。如图19-3所示,循环向量指令处理装置对循环向量指令进行处理的过程如下:
控制模块19-11对获取到的循环向量指令1(如循环向量指令1为opcode 500 101 102 add.cycle 64 16)进行解析,得到循环向量指令1的操作码和操作域。其中,循环向量指令1的操作码为opcode,目标地址为500,第一待运算向量地址为101,第二待运算向量地址为102。向量运算类型为add.cycle(向量相加运算)。第一输入量为64。第二输入量为16。控制模块19-11从第一待运算向量地址101中获取到数据量为第一输入量64的第一待运算向量,以及从第二待运算向量地址102中获取到数据量为第二输入量16的第二待运算向量。
运算模块19-12将第一待运算向量切分为4个切分向量,如图19-3所示的切分向量1、切分向量2、切分向量3、切分向量4,每个切分向量的数据量为16。并对每个切分向量和第二待运算向量分别进行相加运算,得到对应的切分运算结果,如图19-3所示的切分运算结果1、切分运算结果2、切分运算结果3、切分运算结果4。并将切分运算结果1、切分运算结果2、切分运算结果3、切分运算结果4作为该循环向量指令1的运算结果1,并将运算结果1存入目标地址500中。
其中,循环向量指令1除可以为上述opcode 500 101 102 add.cycle 64 16,还可以为add.cycle 500 101 102 64 16,不同指令格式的循环向量指令的处理过程相似,不再赘述。
以上各模块的工作过程可参考上文的相关描述。
这样,循环向量指令处理装置可以高效、快速地对循环向量指令进行处理。
图19-4示出根据本公开一实施例的循环向量指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-19和步骤S52-19。如图19-4所示,该方法应用于上述循环向量指令处理装置,该方法包括步骤S51-19和步骤S52-19。
在步骤S51-19中,利用控制模块对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,并根据操作码和操作域获取执行循环向量指令所需的第一待运算向量、第二待运算向量和目标地址,以及确定循环向量指令的向量运算类型。其中,操作码用于指示循环向量指令对数据所进行的运算为循环向量运算,操作域包括第一待运算向量地址、第二待运算向量地址和目标地址。
在步骤S52-19中,利用运算模块根据第二待运算向量将第一待运算向量切分为多个切分向量,根据向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,获得运算结果,并将运算结果存入目标地址。
在一种可能的实现方式中,根据向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,可以包括:利用运算模块中的多个向量运算器执行与向量运算类型相对应的向量运算。
在一种可能的实现方式中,运算模块可以包括主运算子模块和多个从运算子模块,主运算子模块可以包括多个向量运算器。其中,步骤S52-19可以包括:利用主运算子模块中的多个向量运算器执行与向量运算类型相对应的向量运算,得到运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,运算模块包括主运算子模块和多个从运算子模块,从运算子模块包括多个向量运算器,其中,步骤S52-19可以包括:利用每个从运算子模块所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将运算结果存入对应的子缓存空间中,以及将运算结果发送至主运算子模块;利用主运算子模块接收运算结果,并将运算结果存入目标地址中。
在一种可能的实现方式中,操作域还可以包括向量运算类型。其中,确定循环向量指令的向量运算类型,可以包括:在操作域中包括向量运算类型时,根据操作域确定向量运算类型。
在一种可能的实现方式中,操作域还可以包括第一输入量和第二输入量。其中,根据操作码和操作域获取执行循环向量指令所需的第一待运算向量、第二待运算向量和目标地址,还可以包括:根据操作域确定第一输入量和第二输入量,并从第一待运算向量地址中获取数据量为第一输入量的第一待运算向量,以及从第二待运算向量地址中获取数据量为第二输入量的第二待运算向量。其中,根据第二待运算向量将第一待运算向量切分为多个切分向量,可以包括:根据第二输入量确定每个切分向量的切分数据量,并根据切分数据量将第一待运算向量切分为多个切分向量。
在一种可能的实现方式中,操作码还用于指示向量运算类型,确定循环向量指令的向量运算类型,可以包括:在操作码用于指示向量运算类型时,根据操作码确定向量运算类型。
在一种可能的实现方式中,向量运算类型可以包括以下至少一种:向量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算。其中,运算条件可以包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
在一种可能的实现方式中,该方法还可以包括:利用装置的存储模块存储第一待运算向量和第二待运算向量,其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据、第一待运算向量和第二待运算向量,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,可以包括:
存储循环向量指令;
对循环向量指令进行解析,得到循环向量指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括循环向量指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零执行指令执行完毕后,控制进行第一待执行指令的执行。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系可以包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了循环向量指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的循环向量指令处理方法的适用范围广,对向量的处理效率高、处理速度快,进行运算的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款S1、一种循环向量指令处理装置,所述装置包括:
控制模块,用于对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行循环向量指令所需的第一待运算向量和第二待运算向量和目标地址,以及确定循环向量指令的向量运算类型;
运算模块,用于根据第二待运算向量将所述第一待运算向量切分为多个切分向量,根据所述向量运算类型对每个切分向量与所述第二待运算向量分别进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述循环向量指令对数据所进行的运算为循环向量运算,所述操作域包括第一待运算向量地址、第二待运算向量地址和所述目标地址。
条款S2、根据条款S1所述的装置,所述运算模块,包括:
多个向量运算器,用于执行与所述向量运算类型相对应的向量运算。
条款S3、根据条款S2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个向量运算器,
所述主运算子模块,用于利用所述多个向量运算器执行所述向量运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款S4、根据条款S2所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个向量运算器,
所述从运算子模块,用于利用所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将所述运算结果存入对应的子缓存空间中,以及将所述运算结果发送至所述主运算子模块;
所述主运算子模块,还用于接收所述运算结果,并将所述运算结果存入所述目标地址中。
条款S5、根据条款S1所述的装置,所述操作域还包括向量运算类型,
其中,所述控制模块,还用于在所述操作域中包括向量运算类型时,根据所述操作域确定所述向量运算类型。
条款S6、根据条款S1所述的装置,所述操作域还包括第一输入量和第二输入量,
其中,所述控制模块,还用于根据所述操作域确定所述第一输入量和所述第二输入量,并从所述第一待运算向量地址中获取数据量为所述第一输入量的第一待运算向量,以及从第二待运算向量地址中获取数据量为所述第二输入量的第二待运算向量,
其中,根据第二待运算向量将所述第一待运算向量切分为多个切分向量,包括:
根据所述第二输入量确定每个切分向量的切分数据量,并根据所述切分数据量将所述第一待运算向量切分为多个切分向量。
条款S7、根据条款S1所述的装置,所述操作码还用于指示所述向量运算类型,
所述控制模块,还用于在所述操作码用于指示所述向量运算类型时,根据所述操作码确定所述向量运算类型。
条款S8、根据条款S1所述的装置,所述向量运算类型包括以下至少一种:
向量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算,
其中,所述运算条件包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
条款S9、根据条款S1所述的装置,所述装置还包括:
存储模块,用于存储所述第一待运算向量和所述第二待运算向量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据、所述第一待运算向量和所述第二待运算向量,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款S10、根据条款S1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述循环向量指令;
指令处理子模块,用于对所述循环向量指令进行解析,得到循环向量指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述循环向量指令。
条款S11、根据条款S10所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款S12、一种机器学习运算装置,所述装置包括:
一个或多个如条款S1-条款S11任一项所述的循环向量指令处理装置,用于从其他处理装置中获取待运算向量和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述循环向量指令处理装置时,多个所述循环向量指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述循环向量指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述循环向量指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述循环向量指令处理装置共享内存或者拥有各自的内存;多个所述循环向量指令处理装置的互联方式是任意互联拓扑。
条款S13、一种组合处理装置,所述组合处理装置包括:
如条款S12所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款S14、一种机器学习芯片,所述机器学习芯片包括:
如条款S12所述的机器学习运算装置或如条款S13述的组合处理装置。
条款S15、一种电子设备,所述电子设备包括:
如条款S14所述的机器学习芯片。
条款S16、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款S14所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款S17、一种循环向量指令处理方法,所述方法应用于循环向量指令处理装置,所述装置包括控制模块和运算模块,所述方法包括:
利用控制模块对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,并根据所述操作码和所述操作域获取执行循环向量指令所需的第一待运算向量、第二待运算向量和目标地址,以及确定循环向量指令的向量运算类型;
利用运算模块根据第二待运算向量将所述第一待运算向量切分为多个切分向量,根据所述向量运算类型对每个切分向量与所述第二待运算向量分别进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,
其中,所述操作码用于指示所述循环向量指令对数据所进行的运算为循环向量运算,所述操作域包括第一待运算向量地址、第二待运算向量地址和所述目标地址。
条款S18、根据条款S17所述的方法,根据所述向量运算类型对每个切分向量与第二待运算向量分别进行向量运算,包括:
利用所述运算模块中的多个向量运算器执行与所述向量运算类型相对应的向量运算。
条款S19、根据条款S18所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个向量运算器,
其中,根据第二待运算向量将所述第一待运算向量切分为多个切分向量,根据所述向量运算类型对每个切分向量与所述第二待运算向量分别进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用所述主运算子模块中的所述多个向量运算器执行与所述向量运算类型相对应的向量运算,得到运算结果,并将所述运算结果存入所述目标地址中。
条款S20、根据条款S18所述的方法,所述运算模块包括主运算子模块和多个从运算子模块,所述从运算子模块包括所述多个向量运算器,
其中,根据第二待运算向量将所述第一待运算向量切分为多个切分向量,根据所述向量运算类型对每个切分向量与所述第二待运算向量分别进行向量运算,获得运算结果,并将所述运算结果存入所述目标地址中,包括:
利用每个从运算子模块所包含的多个向量运算器并行执行进行对应的向量运算,得到运算结果,并将所述运算结果存入对应的子缓存空间中,以及将所述运算结果发送至所述主运算子模块;
利用所述主运算子模块接收所述运算结果,并将所述运算结果存入所述目标地址中。
条款S21、根据条款S17所述的方法,所述操作域还包括向量运算类型,
其中,确定循环向量指令的向量运算类型,包括:
在所述操作域中包括向量运算类型时,根据所述操作域确定所述向量运算类型。
条款S22、根据条款S17所述的方法,所述操作域还包括第一输入量和第二输入量,
其中,根据所述操作码和所述操作域获取执行循环向量指令所需的第一待运算向量、第二待运 算向量和目标地址,还包括:
根据所述操作域确定所述第一输入量和所述第二输入量,并从所述第一待运算向量地址中获取数据量为所述第一输入量的第一待运算向量,以及从第二待运算向量地址中获取数据量为所述第二输入量的第二待运算向量,
其中,根据第二待运算向量将所述第一待运算向量切分为多个切分向量,包括:
根据所述第二输入量确定每个切分向量的切分数据量,并根据所述切分数据量将所述第一待运算向量切分为多个切分向量。
条款S23、根据条款S17所述的方法,所述操作码还用于指示所述向量运算类型,
其中,确定循环向量指令的向量运算类型,包括:
在所述操作码用于指示所述向量运算类型时,根据所述操作码确定所述向量运算类型。
条款S24、根据条款S17所述的方法,所述向量运算类型包括以下至少一种:
向量相乘运算、向量相加运算、向量求和运算、满足运算条件存储指定值运算、按位与运算、按位或运算、按位异或运算,
其中,所述运算条件包括以下任一种:按位相等、按位不相等、按位小于、按位大于或等于、按位大于、按位小于或等于。
条款S25、根据条款S17所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述第一待运算向量和所述第二待运算向量,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据、所述第一待运算向量和所述第二待运算向量,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款S26、根据条款S17所述的方法,对获取到的循环向量指令进行解析,得到循环向量指令的操作码和操作域,包括:
存储所述循环向量指令;
对所述循环向量指令进行解析,得到循环向量指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述循环向量指令。
条款S27、根据条款S26所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款S28、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款S17至条款S27任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现对向量数据的迁移,相关技术中,由于现阶段没有能广泛适用于各类编程语言的向量数据迁移指令,技术人员需要自定义对应其编程语言环境的一条或多条指令来实现向量数据迁移,导致进行向量数据迁移的效率低、速度慢。本公开提供一种向量数据迁移指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现向量数据迁移,能够显著提高进行向量数据迁移的效率和速度。
图20-1示出根据本公开一实施例的向量数据迁移指令处理装置的框图。如图20-1所示,该装置包括控制模块20-11和处理模块20-12(或称运算模块)。
控制模块20-11,用于对获取到的向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,以及确定进行迁移处理所需的迁移参数。其中,操作码用于指示向量数据迁移指令对向量数据所进行的处理为迁移处理,操作域包括待迁移向量数据地址和目标地址,迁移参数可以包括待迁移向量数据地址所在的初始存储空间、目标地址所在的目标存储空间和进行迁移处理的迁移类型。
处理模块20-12,根据迁移参数,将待迁移向量数据存入目标地址中。
在本实施例中,待迁移向量数据可以是一个或多个。迁移类型可以指示初始存储空间的向量数据存储速度、目标存储空间的向量数据存储速度、以及二者存储速度的快慢关系。在向量数据迁移指令中,可以为不同的目标存储空间与初始存储空间之间的存储速度快慢关系,设置不同的代码,进行存储速度快慢的区分。比如,可以将迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”的代码设置为“st”。可以将迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”的代码设置为“mv”。可以将迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”的代码设置为“ld”。本领域技术人员可以根据实际需要对迁移类型以及迁移类型的代码进行设置,本公开对此不作限制。
在本实施例中,迁移参数可以包括初始存储空间、目标存储空间的名称、编号等标识,以表示初始存储空间和目标存储空间。
在本实施例中,初始存储空间和目标存储空间可以是装置的NRAM、WRAM、DRAM、寄存器等用于存储数据的空间,DRAM可以包括LDRAM、GDRAM等。其中,NRAM(Nanotube Random Access Memory)是基于碳纳米管(Carbon Nanotube,简称CNT)的非易失性存储器。WRAM(Window RAM)是VRAM(Video RAM,影像随机接达记忆器)的一种。DRAM(Dynamic Random Access Memory)为动态随机存取存储器。LDRAM为Local DRAM,可以是装置中的某一个计算核所独有的DRAM。GDRAM为Global DRAM,可以是装置中多个计算核共享的DRAM。计算核为装置中进行数据运算的单元、模块等,如下述处理模块。
在本实施例中,控制模块所获取到的向量数据迁移指令为无需编译的、可以直接供硬件执行的硬件指令,控制模块可以对获取到的向量数据迁移指令进行解析。控制模块可以从待迁移向量数据地址中获取待迁移向量数据。控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括目标地址、待迁移向量数据地址、进行迁移处理的迁移参数等等。对于一个向量数据迁移指令其必须包括操作码和操作域,其中操作域至少包括待迁移向量数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对向量数据迁移指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收向量数据迁移指令,并控制一个或多个处理模块进行迁移处理。在装置包括多个控制模块时,多个控制模块可以分别接收向量数据迁移指令,并控制对应的一个或多个处理模块进行迁移处理。
本公开实施例所提供的向量数据迁移指令处理装置,该装置包括控制模块和处理模块。控制模块用于对获取到的向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,以及确定进行迁移处理所需的迁移参数。处理模块用于根据迁移参数,将待迁移向量数据存入目标地址中。本公开实 施例所提供的向量数据迁移指令处理装置的适用范围广,对向量数据迁移指令的处理效率高、处理速度快,进行向量数据迁移的处理效率高、处理速度快。
图20-2示出根据本公开一实施例的向量数据迁移指令处理装置的框图。在一种可能的实现方式中,如图20-2所示,处理模块20-12可以包括主处理子模块20-121(或称主运算子模块)和多个从处理子模块20-122(或称从运算子模块)。
主处理子模块20-121,用于对待迁移向量数据进行处理,得到处理后的待迁移向量数据,将处理后的待迁移向量数据存入目标地址中。其中,对待迁移向量数据所进行的处理包括数据类型转换等处理,也可以不对待迁移向量数据进行处理直接进行存储,本公开对此不作限制。
在一种可能的实现方式中,操作域还可以包括向量数据迁移量。其中,控制模块20-11,还用于根据操作域确定向量数据迁移量,并从待迁移向量数据地址中获取对应向量数据迁移量的待迁移向量数据。
在该实现方式中,向量数据迁移量可以是所获取的待迁移向量数据的数据量。
在一种可能的实现方式中,可以预先设置默认向量数据迁移量。在操作域中不包含向量数据迁移量时,可以将默认向量数据迁移量确定为当前向量数据迁移指令的向量数据迁移量。进而从待迁移向量数据地址中获取对应向量数据迁移量的待迁移向量数据。
在一种可能的实现方式中,在操作域中不包含向量数据迁移量时,可以直接从待迁移向量数据地址中获取其中所存储的全部待迁移向量数据。
在一种可能的实现的方式中,操作域还可以包括迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作域,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,操作码还可以用于指示迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作码,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,还可以设置默认迁移参数。在根据操作域和操作码均不能确定当前向量数据迁移指令的迁移参数时,可以将默认迁移参数确定为当前向量数据迁移指令的迁移参数。
在一种可能的实现方式中,还可以根据待迁移向量数据地址和目标地址确定其分别对应的初始存储空间、目标存储空间,进而根据初始存储空间、目标存储空间的存储速度、存储空间类型等参数,确定迁移参数。
在一种可能的实现方式中,如图20-2所示,该装置还可以包括存储模块20-13。存储模块20-13用于存储待迁移向量数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存,用于存储待运算数据和待迁移向量数据。寄存器,用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,向量数据迁移指令的指令格式可以是:
vector dst src type.space1.space2 size
其中,vector是向量数据迁移指令的操作码,dst、src0、type.space1.space2、size是向量数据迁移指令的操作域。其中,dst是目标地址,src是待迁移向量数据地址,在待迁移向量数据为多个时,src可以包括多个待迁移向量数据的地址src0,src1,…,srcn,本公开对此不作限制。type.space1.space2是迁移参数,type.space1.space2中的type表示迁移类型,type.space1.space2中的space1表示待迁移向量数据地址src所在的初始存储空间,type.space1.space2中的space2表示目标地址dst所在的目标存储空间。size是向量数据迁移量。
在一种可能的实现方式中,向量数据迁移指令的指令格式还可以是:
type.space1.space2 dst src size
其中,type.space1.space2是向量数据迁移指令的操作码,dst、src、size是向量数据迁移指令的操作域。其中,dst是目标地址,src是待迁移向量数据地址,在待迁移向量数据为多个时,src可以包括多个待迁移向量数据的地址src0,src1,…,srcn,本公开对此不作限制。size是向量数据迁移量。操作码type.space1.space2中的type表示迁移类型,type.space1.space2中的space1表示待迁移向量数据地址src所在的初始存储空间,type.space1.space2中的space2表示目标地址dst所在的目标存储空间。
其中,type可以是ld、st、mv。ld表示的迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”。st表示的迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”。mv表示的迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度小于目标存储空间的存储速度”的向量数据迁移指令的指令格式设置为:ld.space1.space2 dst src0 size。根据向量数据迁移量size、初始存储空间space1、目标存储空间space2及迁移类型ld,从初始存储空间space1中的待迁移向量数据地址src0内获取数据量为向量数据迁移量size的待迁移向量数据,并将该待迁移向量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度小于目标存储空间space2的存储速度。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度大于目标存储空间的存储速度”的向量数据迁移指令的指令格式设置为:st.space1.space2 dst src0 size。根据向量数据迁移量size、初始存储空间space1、目标存储空间space2及迁移类型st,从初始存储空间space1中的待迁移向量数据地址src0内获取数据量为向量数据迁移量size的待迁移向量数据,并将该待迁移向量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度大于目标存储空间space2的存储速度。
在一种可能的实现方式中,可以将迁移类型为“初始存储空间的存储速度等于目标存储空间的存储速度”的向量数据迁移指令的指令格式设置为:mv.space1.space2 dst src0 size。根据向量数据迁移量size、初始存储空间space1、目标存储空间space2及迁移类型st,从初始存储空间space1中的待迁移向量数据地址src0内获取数量为向量数据迁移量size的待迁移向量数据,并将该待迁移向量数据存入目标存储空间space2中的目标地址dst中。其中,初始存储空间space1的存储速度等于目标存储空间space2的存储速度。
应当理解的是,本领域技术人员可以根据需要对向量数据迁移指令的操作码、指令格式中操作码和操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了向量数据迁移指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用向量数据迁移指令处理装置进行数据迁移”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解向量数据迁移指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制。
图20-3示出根据本公开一实施例的向量数据迁移指令处理装置的应用场景的示意图。如图20-3所示,向量数据迁移指令处理装置对向量数据迁移指令进行处理的过程如下:
控制模块20-11对获取到的向量数据迁移指令1(如向量数据迁移指令1为ld.200.300 500 400 5)进行解析,得到向量数据迁移指令1的操作码和操作域。其中,向量数据迁移指令1的操作码为ld,初始存储空间为200,目标存储空间为300,目标地址为500,待迁移向量数据地址为400,向量数据迁移量为5。根据操作码ld可以确定初始存储空间200的存储速度小于目标存储空间300的存储速度。 控制模块20-11从初始存储空间为200中的待迁移向量数据地址400内获取数据量为向量数据迁移量5的待迁移向量数据。处理模块20-12根据迁移参数,将待迁移向量数据存入目标存储空间为300中的目标地址500内。
其中,向量数据迁移指令1除了可以为上述ld.200.300 500 400 5,还可以为vector 500 400 ld.200.300 5等,二者处理过程相似,不再赘述。
以上各模块的工作过程可参考上文的相关描述。
这样,向量数据迁移指令处理装置可以高效、快速地对向量数据迁移指令进行处理,进行向量数据迁移的处理效率高、处理速度快。
图20-4示出根据本公开一实施例的向量数据迁移指令处理方法的流程图。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-20和步骤S52-20。如图20-4所示,该方法应用于上述向量数据迁移指令处理装置,该方法包括步骤S51-20和步骤S52-20。
在步骤S51-20中,利用控制模块对获取到向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,并根据操作码和操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,以及确定进行迁移处理所需的迁移参数。其中,操作码用于指示向量数据迁移指令对向量数据所进行的处理为迁移处理,操作域包括待迁移向量数据地址和目标地址,迁移参数包括待迁移向量数据地址所在的初始存储空间、目标地址所在的目标存储空间和进行迁移处理的迁移类型。
在步骤S52-20中,利用处理模块根据迁移参数,将待迁移向量数据存入目标地址中。
在一种可能的实现方式中,处理模块包括主处理子模块和多个从处理子模块。其中,步骤S52-20可以包括:
对待迁移向量数据进行处理,得到处理后的待迁移向量数据,将处理后的待迁移向量数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括向量数据迁移量。其中,根据所述操作码和所述操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,可以包括:
根据所述操作域确定所述向量数据迁移量,并从所述待迁移向量数据地址中获取对应所述向量数据迁移量的待迁移向量数据。
在一种可能的实现方式中,操作域还可以包括迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作域,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,操作码还可以用于指示迁移参数。其中,确定进行迁移处理所需的迁移参数,可以包括:根据操作码,确定进行迁移处理所需的迁移参数。
在一种可能的实现方式中,该方法还包括:利用装置的存储模块存储待迁移向量数据,
其中,存储模块包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据和待迁移向量数据,缓存包括至少一个神经元缓存NRAM;
寄存器,用于存储待运算数据中的标量数据;
神经元缓存,用于存储待运算数据中的神经元数据,神经元数据包括神经元向量数据。
在一种可能的实现方式中,步骤S51-20可以包括:
存储向量数据迁移指令;
对向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括向量数据迁移指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了向量数据迁移指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的向量数据迁移指令处理方法的适用范围广,对向量数据迁移指令的处理效率高、处理速度快,进行向量迁移的处理效率高、处理速度快。
依据以下条款可以更好的理解前述内容:
条款T1、一种向量数据迁移指令处理装置,所述装置包括:
控制模块,用于对获取到的向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,以及确定进行迁移处理所需的迁移参数;
处理模块,根据所述迁移参数,将所述待迁移向量数据存入所述目标地址中,
其中,所述操作码用于指示所述向量数据迁移指令对向量数据所进行的处理为迁移处理,所述操作域包括待迁移向量数据地址和所述目标地址,所述迁移参数包括所述待迁移向量数据地址所在的初始存储空间、所述目标地址所在的目标存储空间和进行迁移处理的迁移类型。
条款T2、根据条款T1所述的装置,所述处理模块包括主处理子模块和多个从处理子模块,
所述主处理子模块,用于对所述待迁移向量数据进行处理,得到处理后的待迁移向量数据,将所述处理后的待迁移向量数据存入所述目标地址中。
条款T3、根据条款T1所述的装置,所述操作域还包括向量数据迁移量,
其中,所述控制模块,还用于根据所述操作域确定所述向量数据迁移量,并从所述待迁移向量数据地址中获取对应所述向量数据迁移量的待迁移向量数据。
条款T4、根据条款T1所述的装置,所述操作域还包括迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作域,确定进行迁移处理所需的迁移参数。
条款T5、根据条款T1所述的装置,所述操作码还用于指示迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作码,确定进行迁移处理所需的迁移参数。
条款T6、根据条款T1所述的装置,所述装置还包括:
存储模块,用于存储所述待迁移向量数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待迁移向量数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款T7、根据条款T1所述的装置,所述控制模块包括:
指令存储子模块,用于存储所述向量数据迁移指令;
指令处理子模块,用于对所述向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量数据迁移指令。
条款T8、根据条款T7所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中, 在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款T9、一种机器学习运算装置,所述装置包括:
一个或多个如条款T1-条款T8任一项所述的向量数据迁移指令处理装置,用于从其他处理装置中获取待迁移向量数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述向量数据迁移指令处理装置时,多个所述向量数据迁移指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述向量数据迁移指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所向量数据迁移指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述向量数据迁移指令处理装置共享内存或者拥有各自的内存;多个所述向量数据迁移指令处理装置的互联方式是任意互联拓扑。
条款T10、一种组合处理装置,所述组合处理装置包括:
如条款T9所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款T11、一种机器学习芯片,所述机器学习芯片包括:
如条款T9所述的机器学习运算装置或如条款T10所述的组合处理装置。
条款T12、一种电子设备,所述电子设备包括:
如条款T11所述的机器学习芯片。
条款T13、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款T11所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款T14、一种向量数据迁移指令处理方法,所述方法应用于向量数据迁移指令处理装置,所述装置包括控制模块和处理模块,所述方法包括:
利用控制模块对获取到向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,并根据所述操作码和所述操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标地址,以及确定进行迁移处理所需的迁移参数;
利用处理模块根据所述迁移参数,将所述待迁移向量数据存入所述目标地址中,
其中,所述操作码用于指示所述向量数据迁移指令对向量数据所进行的处理为迁移处理,所述操作域包括待迁移向量数据地址和所述目标地址,所述迁移参数包括所述待迁移向量数据地址所在的初始存储空间、所述目标地址所在的目标存储空间和进行迁移处理的迁移类型。
条款T15、根据条款T14所述的方法,所述处理模块包括主处理子模块和多个从处理子模块,
其中,根据所述迁移参数,将所述待迁移向量数据存入所述目标地址中,包括:
对所述待迁移向量数据进行处理,得到处理后的待迁移向量数据,将所述处理后的待迁移向量数据存入所述目标地址中。
条款T16、根据条款T14所述的方法,所述操作域还包括向量数据迁移量,
其中,根据所述操作码和所述操作域获取执行向量数据迁移指令所需的待迁移向量数据和目标 地址,包括:
根据所述操作域确定所述向量数据迁移量,并从所述待迁移向量数据地址中获取对应所述向量数据迁移量的待迁移向量数据。
条款T17、根据条款T14所述的方法,所述操作域还包括迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作域,确定进行迁移处理所需的迁移参数。
条款T18、根据条款T14所述的方法,所述操作码还用于指示迁移参数,
其中,确定进行迁移处理所需的迁移参数,包括:
根据所述操作码,确定进行迁移处理所需的迁移参数。
条款T19、根据条款T14所述的方法,所述方法还包括:
利用所述装置的存储模块存储所述待迁移向量数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储待运算数据和所述待迁移向量数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款T20、根据条款T14所述的方法,对获取到的向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域,包括:
存储所述向量数据迁移指令;
对所述向量数据迁移指令进行解析,得到向量数据迁移指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量数据迁移指令。
条款T21、根据条款T20所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款T22、一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款T14至21任一项所述的方法。
由于神经网络算法的广泛使用,计算机硬件运算人能力的不断提升,实际应用中所涉及到的数据运算的种类和数量不断提高。由于编程语言的种类多样,在不同的语言环境下,为实现同步控制过程,相关技术中,由于没有能广泛适用于各类编程语言的同步控制指令,技术人员需要自定义对应其编程语言环境的多条指令来实现同步控制,导致进行同步控制的效率低、速度慢。本公开提供一种同步控制指令处理方法、装置、计算机设备和存储介质,仅用一个指令即可以实现同步控制,能够显著提高进行同步控制的效率和速度。
图21-1a示出根据本公开一实施例的同步控制指令处理装置的框图。如图21-1a所示,该装置包括控制模块21-11和多个运算模块21-12。
控制模块21-11,用于对获取到的同步控制指令进行解析,得到同步控制指令的操作域码,并确定需要执行同步控制指令的目标运算模块。其中,操作码用于指示同步控制指令用于对装置的多个运算模块进行同步控制。
多个运算模块21-12中的目标运算模块,用于在执行到同步控制指令时,进入暂停状态。其中, 暂停状态下目标运算模块暂停工作,不再进行数据的运算,不能继续执行其自身需要执行的计算指令。
控制模块21-11,还用于监测多个运算模块21-12的运行状态,在确定目标运算模块均处于暂停状态时,控制处于暂停状态的目标运算模块同步进入工作状态。其中,工作状态下的目标运算模块可以进行数据运算,执行其需要执行的计算指令。
在本实施例中,同步控制指令可以对运算模块执行计算指令的过程进行同步控制,使得运算模块在执行到该同步控制指令可以暂停工作,等待控制模块发出继续工作的指令,达到同步控制的目的。
可选地,该指令处理装置可以包括通用处理器和人工智能处理器,该人工智能处理器而可以包含上述的控制模块和运算模块等,该人工智能处理器的具体结构可参见下文的描述,该人工智能处理器可以对接收到的同步控制指令进行解析,并运行相应的指令。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、数量阈值等参数以及对应的运算方法等等。对于一个同步控制指令其可以包括操作码和操作域。
应当理解的是,本领域技术人员可以根据需要对同步控制指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个运算模块,可以根据实际需要对控制模块和运算模块的数量进行设置,本公开对此不作限制。在装置包括一个控制模块时,该控制模块可以接收同步控制指令,并实现对应的至少一个运算模块的同步控制。在装置包括多个控制模块时,多个控制模块可以分别接收同步控制指令,并分别实现对应的多个运算模块的同步控制。
在本实施例中,运算模块可以是装置的核(core)、装置中的处理器等能够执行计算指令的器件、模块等,本公开对此不作限制。
本公开实施例所提供的同步控制指令处理装置,该装置包括控制模块和多个运算模块,控制模块用于对获取到的同步控制指令进行解析,得到同步控制指令的操作码,并确定需要执行同步控制指令的目标运算模块以及目标运算模块所需同步的目标信号;目标运算模块用于在执行到同步控制指令时,控制与目标信号相关的处理进入暂停状态;控制模块还用于监测多个运算模块的运行状态,在确定目标运算模块均处于暂停状态时,控制处于暂停状态的目标运算模块中与目标信号相关的处理同步进入工作状态。本公开实施例所提供的同步控制指令处理方法、装置及相关产品的适用范围广,对同步控制指令的处理效率高、处理速度快,且提高了对应运算模块进行同步控制的处理效率、处理速度,进而提高了对数据进行运算的效率和速度。
在一种可能的实现方式中,操作码可以用于指示所述目标运算模块所需同步的目标信号,或者所述操作域可以包括所述目标运算模块所需同步的目标信号,以使所述控制模块根据所述操作码或者所述操作域确定目标信号。所述目标运算模块,还用于在执行到所述同步控制指令时,控制与所述控制模块确定的目标信号相对应的处理进入暂停状态。
其中,所述目标信号可以包括以下至少一种:计算队列信号、IO信号、到达信号。其中,到达信号是运算模块间并行到达的一类信号,包括运算模块需要同步执行的全部信号。计算队列信号可以是运算模块中等待执行的计算任务的队列的信号,IO信号可以为运算模块的输入和/或输出信号。
在该实现方式中,在同步控制指令没有指示目标信号时,可以将预先设置的默认目标信号确定为目标信号,本公开对此不作限制。
在该实现方式中,可以为不同的目标信号设置特定的操作码或者操作域,以使得处理器可以根据特定的操作码或者操作域确定出目标运算模块中所需暂停的信号。目标信号可以是其他与运算模块的运行、控制、进行运算等处理相关的信号,本公开对此不作限制。
在一种可能的实现方式中,确定需要执行同步控制指令的目标运算模块,可以包括:根据目标任务的标识,将所述多个运算模块中执行所述目标任务的运算模块确定为目标运算模块。所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号,目标任务的标识还可以包括其他能够表征目标任务的信息,本公开对此不作限制。
其中,在装置中,控制模块会根据任务(包括上述目标任务)的类型、运算模块的工作状态,为任务分配一个或多个运算模块,使其执行该任务。
通过上述方式,可以实现对执行目标任务的所有运算模块的同步控制。
在一种可能的实现方式中,控制模块可以根据预设的目标任务标识,确定需要执行同步控制指令的目标运算模块。此时,该同步控制指令中可以只包括操作码。该同步控制指令的指令格式可以是“sync_all()”,其中,基于该同步控制指令装置可以实现对预设的目标任务标识的目标任务的所有运算模块的同步控制。
可选地,该同步控制指令可以包含于一核函数中,该装置的通用处理器可以将该核函数发送至人工智能器上的相应运算模块上执行。其中,该装置还可以根据该核函数的特性确定目标任务的标识。这样,该核函数中的同步控制指令可以根据该确定的目标任务标识确定目标运算模块。
图21-1b示出根据本公开一实施例的同步控制指令处理装置中模块集群的结构示意图。如图21-1b所示,该装置中包括控制模块200、互联模块500、全局内存400、多个模块集群以及与每个模块集群分别对应的共享存储600。共享存储600中包括至少一个DMA610。其中,图21-1b中仅示出了两个模块集群1、模块集群2,剩余模块集群的结构与模块集群1、模块集群2相似,图中并未示出。每个模块集群中包括运算模块1、运算模块2、运算模块3和运算模块4四个运算模块。其中,互联模块500用于实现全局内容400、控制模块200以及模块集群之间的通信互联。全局内存400用于实现装置中控制模块200以及模块集群的存储。
举例来说,假定目标任务的标识UNION可以通过指定模块集群数量的方式指定对应的运算模块。例如,UNION1表示调用核函数执行任务时,占用1个模块集群,共用4个运算模块。UNION2表示调用核函数执行任务时,占用2个模块集群,共用8个运算模块。UNION4表示调用核函数执行任务时,占用4个模块集群,共用16个core。UNION8表示调用核函数执行任务时,占用8个模块集群,共用32个core。其中,以“UNION1”为例,控制模块200可以根据“UNION1”为其指定闲置或者能够执行任务的模块集群1,以使得模块集群1能够执行任务“UNION1”。
在一种可能的实现方式中,所述多个运算模块被划分为多个模块集群(cluster),每个模块集群中包括一个或多个运算模块(如图21-1b所示)。其中,确定需要执行同步控制指令的目标运算模块,可以包括:根据目标任务的标识,将所述多个模块集群中与执行所述目标任务相关的目标模块集群中的全部运算模块确定为目标运算模块,所述目标集群中的全部或部分运算模块用于执行所述目标任务。
通过上述方式,可以实现对与执行目标任务相关的目标模块集群中的全部运算模块的同步控制。
例如,控制模块可以根据预设的目标任务标识,确定出该目标任务标识所需占用的运算模块集群数量,并进一步确定需要执行同步控制指令的目标运算模块。此时,该同步控制指令中可以只包括操作码。该同步控制指令的指令格式可以是“sync_all0()”,其中,基于该同步控制指令装置可以实现对预设的目标任务标识的目标任务的所有运算模块集群中的运算模块的同步控制。
可选地,该同步控制指令可以包含于一核函数中,该装置的通用处理器可以将该核函数中的指令等程序发送至人工智能器上的相应运算模块上执行。其中,该装置还可以根据该核函数的特性确定目标任务的标识。这样,该核函数中的同步控制指令可以根据该确定的目标任务标识,确定目标运算模块集群。从而控制模块可以将该目标运算模块集群中的所有运算模块作为目标运算模块。
在一种可能的实现方式中,所述操作码或所述操作域可以用于指示目标任务的标识。
在一种可能的实现方式中,同步控制指令的指令格式可以是“sync_sign2_all1()”。其中,sign2为目标任务的标识,通过该同步控制指令装置可以与执行标识为sign2的目标任务相关的目标模块集群中的全部运算模块的同步控制。
在一种可能的实现方式中,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,所述操作码或所述操作域用于指示目标模块集群的标识。其中,确定需要执行同步控制指令的目标运算模块,可以包括:根据所述目标模块集群的标识,将所述多个运算模块中属于所述目标模块集群的运算模块确定为目标运算模块。
在该实现方式中,目标模块集群的标识可以是目标模块集群在多个模块集群中的编号、序号、名称等能够表征目标模块集群的标识信息,本公开对此不作限制。
通过上述方式,可以实现对一个或多个目标模块集群中的全部运算模块的同步控制。
在一种可能的实现方式中,同步控制指令的指令格式可以是“sync_cluster”。其中,cluster为目标模块集群的标识。通过该同步控制指令,装置可以实现对标识为cluster的目标集群中的全部运算模块的同步控制。在目标集群的数量为多个时,同步控制指令的指令格式可以是“sync_cluster0cluster1…clustern”,cluster0 cluster1…clustern分别为第一个目标模块集群的标识、第二个目标模块集群的标识…第n个目标模块集群的标识,以实现对多个模块集群中所有运算模块的同步控制。
在一种可能的实现方式中,所述操作码或所述操作域可以用于指示目标运算模块的标识。其中,根据所述操作码或者所述操作域确定需要执行同步控制指令的目标运算模块,可以包括:根据所述目标运算模块的标识,从所述多个运算模块中确定目标运算模块。
在该实现方式中,目标运算模块的标识可以是目标运算模块在多个运算模块中的编号、序号、名称等能够表征目标运算模块的标识信息,本公开对此不作限制。
通过上述方式,可以实现对一个或多个目标运算模块的同步控制。
在一种可能的实现方式中,同步控制指令的指令格式可以是“syn_sign3_0 sign3_1…sign3_n”。其中,sign3_0 sign3_1…sign3_n分别为第一个目标运算模块的标识、第二个目标运算模块的标识…第n个目标运算模块的标识。通过该同步控制指令,装置可以实现对标识为sign3_0 sign3_1…sign3_n的目标运算模块的同步控制。
在一种可能的实现方式中,在同步控制指令的操作码和操作域中均未指示目标运算模块时,控制模块,还用于确定所述同步控制指令所在的核函数(kernel),将所述多个运算模块中调用所述核函数的运算模块确定为目标运算模块。
在该实现方式中,装置可以调用一个或多个核函数,运算模块可以调用核函数执行需要该核函数的任务。同步控制指令可以被预先写在核函数中,控制模块可以根据运算模块调用核函数的记录确定目标运算模块。
其中,控制模块在控制多个运算模块执行任务时,运算模块自身(或者在控制模块的控制下)可以根据所执行任务的类型、任务并行度等任务信息,确定所需调用的核函数,以完成任务。
通过上述方式,可以实现对调用了“同步控制指令所在核函数”的目标运算模块的同步控制。
在一种可能的实现方式中,所述操作域中包括数量阈值。所述控制模块,还用于在确定处于暂停状态的目标运算模块的数量达到所述数量阈值时,控制处于暂停状态的目标运算模块进入工作状态。
在该实现方式中,在已确定目标运算模块的基础上,还可以对同步控制的目标运算模块的数量进行限制,数量阈值可以小于或等于已经确定的目标运算模块的数量。
在一种可能的实现方式中,同步控制指令的指令格式可以是“barrier N”。其中,N为数量阈值。barrier仅用于指示该指令为同步控制指令以及其目标信号为到达信号。通过该同步控制指令,装置可以实现对调用了“同步控制指令所在的核函数”的目标运算模块的同步控制,并且,可以在确定处于暂停状态的目标运算模块的数量达到数量阈值时,控制处于暂停状态的目标运算模块进入工作状态。
对于上述同步控制指令“sync_sign1_all0()”、“sync_sign2_all1()”、“sync_cluster”、“sync_cluster0cluster1…clustern”、“syn_sign3_0 sign3_1…sign3_n”、和“barrier N”,sync、syn、barrier还可以用于指示目标信号,其中,sync所指示的目标信号可以为计算队列信号和IO信号,syn和barrier所指的目标信号可以是到达信号。可以根据需要将同步控制指令的组成部分sync、syn、barrier、all0()、all1()、 cluster、cluster0 cluster1…clustern、sign3_0 sign3_1…sign3_n、N设置为操作码或操作域,以及设置其在同步控制指令中的位置,本公开对此不作限制。并且,上述同步控制指令仅是本公开技术方案的几个示例,本领域技术人员可以根据需要按照本公开的技术方案对其指令格式进行设置,本公开对此不作限制。
图21-2示出根据本公开一实施例的同步控制指令处理装置的框图。在一种可能的实现方式中,如图21-2所示,运算模块21-12可以包括多个运算器21-120。多个运算器21-120用于执行与计算指令的运算类型相对应的运算。
在该实现方式中,运算器可以包括加法器、除法器、乘法器、比较器等能够对数据进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的运算的数据量的大小、运算类型、对数据进行运算的处理速度、效率等要求对运算器的种类及数量进行设置,本公开对此不作限制。
在一种可能的实现方式中,如图21-2所示,该装置还可以包括存储模块21-13。存储模块21-13用于存储待运算数据待运算数据。
在该实现方式中,存储模块可以包括缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存,还可以包括至少一个NRAM(Neuron Random Access Memory,神经元随机存取存储器)。缓存可以用于存储待运算数据,寄存器可以用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存也即上述神经元随机存取存储器,可以用于存储待运算数据中的神经元数据,神经元数据可以包括神经元向量数据。其中,待运算数据包括与进行标量类型转换相关的数据、和/或与其他计算指令的运算相关的数据。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了同步控制指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用同步控制指令处理装置进行同步控制”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解同步控制指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图21-3示出根据本公开一实施例的同步控制指令处理装置的应用场景的示意图。如图21-3所示,同步控制指令处理装置对同步控制指令进行处理的过程如下:
控制模块21-11对获取到的同步控制指令1(如同步控制指令1为barrier 16)进行解析,得到同步控制指令1的操作码。其中,同步控制指令1的操作码为barrier,数量阈值为16,根据barrier确定目标信号为到达信号。控制模块21-11向装置的所有运算模块发送同步控制指令。
多个运算模块21-12中目标运算模块在执行到同步控制指令时,控制与到达信号相关的处理进入暂停状态。
控制模块21-11还用于检测多个运算模块21-12的运行状态,在确定处于暂停状态的运算模块的数量达到数量阈值16时,控制16个处于暂停状态的运算模块21-12控制与到达信号相关的处理同步进入工作状态。
这样,同步控制指令处理装置可以高效、快速地对同步控制指令进行处理。以上各模块的工作过程可参考上文的相关描述。
图21-4示出根据本公开一实施例的同步控制指令处理方法的流程图。如图21-4所示,该方法应用于上述同步控制指令处理装置,该方法包括步骤S51-21至步骤S53-21。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用 于执行相关的处理、运算步骤,如执行下述步骤S51-21至步骤S53-21。
在步骤S51-21中,控制所述控制模块对获取到的同步控制指令进行解析,得到同步控制指令的操作码,并确定需要执行同步控制指令的目标运算模块。其中,操作码用于指示同步控制指令用于对装置的多个运算模块进行同步控制。
在步骤S52-21中,控制多个运算模块在执行到同步控制指令时,进入暂停状态。
在步骤S53-21中,控制控制模块监测多个运算模块的运行状态,在确定目标运算模块均处于暂停状态时,控制处于暂停状态的目标运算模块同步进入工作状态。
在一种可能的实现方式中,所述同步控制指令还包括操作域,所述操作码用于指示所述目标运算模块所需同步的目标信号,或者所述操作域包括所述目标运算模块所需同步的目标信号,以使所述控制模块根据所述操作码或者所述操作域确定目标信号,
其中,控制所述目标运算模块在执行到所述同步控制指令时,进入暂停状态,包括:
控制所述目标运算模块在执行到所述同步控制指令时,控制与所述控制模块确定的目标信号相对应的处理进入暂停状态,
其中,所述目标信号包括以下至少一种:计算队列信号、IO信号、到达信号。
在一种可能的实现方式中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个运算模块中执行所述目标任务的运算模块确定为目标运算模块,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
在一种可能的实现方式中,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个模块集群中与执行所述目标任务相关的目标模块集群中的全部运算模块确定为目标运算模块,所述目标集群中的全部或部分运算模块用于执行所述目标任务,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
在一种可能的实现方式中,所述操作码或者所述操作域用于指示得到目标任务的标识。
在一种可能的实现方式中,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,所述操作码或所述操作域用于指示目标模块集群的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标模块集群的标识,将所述多个运算模块中属于所述目标模块集群的运算模块确定为目标运算模块。
在一种可能的实现方式中,所述操作码或所述操作域用于指示目标运算模块的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标运算模块的标识,从所述多个运算模块中确定目标运算模块。
在一种可能的实现方式中,控制所述控制模块确定所述同步控制指令所在的核函数,将所述多个运算模块中调用所述核函数的运算模块确定为目标运算模块。
在一种可能的实现方式中,所述操作域中包括数量阈值,所述方法还包括:
控制所述控制模块在确定处于暂停状态的目标运算模块的数量达到所述数量阈值时,控制处于暂停状态的目标运算模块进入工作状态。
在一种可能的实现方式中,所述运算模块包括主运算子模块和多个从运算子模块,该方法还可以包括:
控制所述控制模块获取计算指令以及执行所述计算指令所需的待运算数据,解析所述计算指令得到多个运算指令;
控制所述主运算子模块对所述待运算数据执行前序处理,以及与进行数据和运算指令的传输;
控制所述从运算子模块根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
控制所述主运算子模块对所述多个中间结果执行后续处理,得到运算结果。
在一种可能的实现方式中,该方法还可以包括:存储待运算数据。
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
在一种可能的实现方式中,该方法还可以包括:
控制控制模块存储同步控制指令和计算指令;
控制控制模块对同步控制指令和计算指令分别进行解析,得到对应的操作码和操作域;
控制控制模块存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括同步控制指令和计算指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系可以包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
依据以下条款可以更好的理解前述内容:
条款U1.一种同步控制指令处理装置,所述装置包括控制模块和多个运算模块,
所述控制模块,用于对获取到的同步控制指令进行解析,得到同步控制指令的操作码,并确定需要执行同步控制指令的目标运算模块;
所述目标运算模块,用于在执行到所述同步控制指令时,进入暂停状态;
所述控制模块,还用于监测所述多个运算模块的运行状态,在确定目标运算模块均处于暂停状态时,控制处于暂停状态的目标运算模块同步进入工作状态,
其中,所述操作码用于指示所述同步控制指令用于对装置的多个运算模块进行同步控制。
条款U2.根据条款U1所述的装置,所述同步控制指令还包括操作域,所述操作码用于指示所述目标运算模块所需同步的目标信号,或者所述操作域包括所述目标运算模块所需同步的目标信号,以使所述控制模块根据所述操作码或者所述操作域确定目标信号,
所述目标运算模块,还用于在执行到所述同步控制指令时,控制与所述控制模块确定的目标信号相对应的处理进入暂停状态,
其中,所述目标信号包括以下至少一种:计算队列信号、IO信号、到达信号。
条款U3.根据条款U1或条款U2所述的装置,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个运算模块中执行所述目标任务的运算模块确定为目标运算模块,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
条款U4.根据条款U1或条款U2所述的装置,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个模块集群中与执行所述目标任务相关的目标模块集群中的全部运算模块确定为目标运算模块,所述目标集群中的全部或部分运算模块用于执行所述目标任务,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
条款U5.根据条款U3或条款U4所述的装置,所述操作码或者所述操作域用于指示得到目标任务的标识。
条款U6.根据条款U1或条款U2所述的装置,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,所述操作码或所述操作域用于指示目标模块集群的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标模块集群的标识,将所述多个运算模块中属于所述目标模块集群的运算模块确定为目标运算模块。
条款U7.根据条款U1或条款U2所述的装置,所述操作码或所述操作域用于指示目标运算模块的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标运算模块的标识,从所述多个运算模块中确定目标运算模块。
条款U8.根据条款U1或条款U2所述的装置,所述控制模块,还用于确定所述同步控制指令所在的核函数,将所述多个运算模块中调用所述核函数的运算模块确定为目标运算模块。
条款U9.根据条款U3或条款U8所述的装置,所述操作域中包括数量阈值,
所述控制模块,还用于在确定处于暂停状态的目标运算模块的数量达到所述数量阈值时,控制处于暂停状态的目标运算模块进入工作状态。
条款U10.根据条款U1所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,
所述控制模块,还用于获取计算指令以及执行所述计算指令所需的待运算数据,解析所述计算指令得到多个运算指令,并将所述待运算数据和所述多个运算指令发送至所述主运算子模块;
所述主运算子模块,用于对所述待运算数据执行前序处理,以及与所述多个从运算子模块进行数据和运算指令的传输;
所述从运算子模块,用于根据从所述主运算子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主运算子模块;
所述主运算子模块,还用于对所述多个中间结果执行后续处理,得到运算结果。
条款U11.根据条款U10所述的装置,所述装置还包括:
存储模块,用于存储所述待运算数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款U12.根据条款U10所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述同步控制指令和所述计算指令;
指令处理子模块,用于对所述同步控制指令和所述计算指令分别进行解析,得到对应的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述同步控制指令和所述计算指令。
条款U13.根据条款U12所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款U14.一种机器学习运算装置,所述装置包括:
一个或多个如条款U1-条款U13任一项所述的同步控制指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述同步控制指令处理装置时,多个所述同步控制指令处理 装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述同步控制指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述同步控制指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述同步控制指令处理装置共享内存或者拥有各自的内存;多个所述同步控制指令处理装置的互联方式是任意互联拓扑。
条款U15.一种组合处理装置,所述组合处理装置包括:
如条款U14所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款U16.一种机器学习芯片,所述机器学习芯片包括:
如条款U14所述的机器学习运算装置或如条款U15所述的组合处理装置。
条款U17.一种电子设备,所述电子设备包括:
如条款U16所述的机器学习芯片。
条款U18.一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款U16所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款U19.一种同步控制指令处理方法,所述方法应用于同步控制指令处理装置,所述装置包括多个运算模块和控制模块,所述方法包括:
控制所述控制模块对获取到的同步控制指令进行解析,得到同步控制指令的操作码,并确定需要执行同步控制指令的目标运算模块;
控制所述目标运算模块在执行到所述同步控制指令时,进入暂停状态;
控制所述控制模块监测所述多个运算模块的运行状态,在确定目标运算模块均处于暂停状态时,控制处于暂停状态的目标运算模块同步进入工作状态,
其中,所述操作码用于指示所述同步控制指令对装置的多个运算模块所进行的处理为同步控制。
条款U20.根据条款U19所述的方法,所述操作码用于指示所述目标运算模块所需同步的目标信号,或者所述操作域包括所述目标运算模块所需同步的目标信号,以使所述控制模块根据所述操作码或者所述操作域确定目标信号,
其中,控制所述目标运算模块在执行到所述同步控制指令时,进入暂停状态,包括:
控制所述目标运算模块在执行到所述同步控制指令时,控制与所述控制模块确定的目标信号相对应的处理进入暂停状态,
其中,所述目标信号包括以下至少一种:计算队列信号、IO信号、到达信号。
条款U21.根据条款U19或条款U20所述的方法,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个运算模块中执行所述目标任务的运算模块确定为目标运算模块,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
条款U22.根据条款U19或条款U20所述的方法,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标任务的标识,将所述多个模块集群中与执行所述目标任务相关的目标模块集群中的全部运算模块确定为目标运算模块,所述目标集群中的全部或部分运算模块用于执行所述目标任务,所述目标任务的标识包括以下至少一种:任务名称、任务类型、任务编号。
条款U23.根据条款U21或条款U22所述的方法,所述操作码或者所述操作域用于指示得到目标任务的标识。
条款U24.根据条款U19或条款U20所述的方法,所述多个运算模块被划分为多个模块集群,每个模块集群中包括一个或多个运算模块,所述操作码或所述操作域用于指示目标模块集群的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标模块集群的标识,将所述多个运算模块中属于所述目标模块集群的运算模块确定为目标运算模块。
条款U25.根据条款U19或条款U20所述的方法,所述操作码或所述操作域用于指示目标运算模块的标识,
其中,确定需要执行同步控制指令的目标运算模块,包括:
根据所述目标运算模块的标识,从所述多个运算模块中确定目标运算模块。
条款U26.根据条款U19或条款U20所述的方法,控制所述控制模块确定所述同步控制指令所在的核函数,将所述多个运算模块中调用所述核函数的运算模块确定为目标运算模块。
条款U27.根据条款U21或条款U26所述的方法,所述操作域中包括数量阈值,所述方法还包括:
控制所述控制模块在确定处于暂停状态的目标运算模块的数量达到所述数量阈值时,控制处于暂停状态的目标运算模块进入工作状态。
条款U28.根据条款U19所述的方法,所述算模块包括主运算子模块和多个从运算子模块,所述方法还包括:
控制所述控制模块获取计算指令以及执行所述计算指令所需的待运算数据,解析所述计算指令得到多个运算指令;
控制所述主运算子模块对所述待运算数据执行前序处理,以及与进行数据和运算指令的传输;
控制所述从运算子模块根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
控制所述主运算子模块对所述多个中间结果执行后续处理,得到运算结果。
条款U29.根据条款U28所述的方法,所述方法还包括:
控制所述装置的存储模块存储所述待运算数据,
其中,所述存储模块包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个神经元缓存NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据;
所述神经元缓存,用于存储所述待运算数据中的神经元数据,所述神经元数据包括神经元向量数据。
条款U30.根据条款U28所述的方法,所述方法还包括:
控制所述控制模块存储所述同步控制指令和所述计算指令;
控制所述控制模块对所述同步控制指令和所述计算指令分别进行解析,得到对应的操作码和操作域;
控制所述控制模块存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述同步控制指令和所述计算指令。
条款U31.根据条款U30所述的方法,所述方法还包括:
控制所述控制模块在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款U32.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现条款U19至条款U31任一项所述的方法。
图22-1示出根据本公开一实施例的中断存储指令处理装置的框图。如图22-1所示,该装置包括控制模块22-11,控制模块22-11包括参数获取子模块22-112和中断存储子模块22-113。
参数获取子模块22-112,根据获取到的中断存储指令的操作域和操作码,确定进行响应中断退出的处理所需的存储参数。其中,操作码用于指示中断存储指令对装置中断退出时所进行的处理为中断存储处理。存储参数用于指示装置中断退出时需要存储的数据。中断存储处理包括装置中断退出以及根据存储参数进行数据存储。
中断存储子模块22-113,在执行到中断存储指令时,控制装置中断退出,并根据存储参数进行数据存储。
在本实施例中,在对装置进行调试、测试等处理的过程中,根据中断存储指令,能够实时将装置中断退出时,能够对可以表明装置的运行状态的数据进行存储,也即根据存储参数进行数据存储。以便于相关人员可以基于根据存储参数所存储的数据,确定调试和测试的结果,以及根据存储的数据对装置的运行状况进行分析。
在本实施例中,可以根据存储参数确定需要存储的数据,并将确定的需要存储的数据存储到装置的内存中,或者存储到其他位置,本公开对此不作限制。
在本实施例中,控制模块可以通过数据输入输出单元获得指令和数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待运算数据、存储参数以及对应的运算方法等等。对于一个中断存储指令其必须包括操作码和操作域。
应当理解的是,本领域技术人员可以根据需要对中断存储指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,可以根据实际需要对控制模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的中断存储指令处理装置,该装置包括控制模块,控制模块包括:参数获取子模块根据获取到的中断存储指令的操作域和操作码,确定进行响应中断退出的处理所需的存储参数;中断存储子模块在执行到中断存储指令时,控制装置中断退出,并根据所述存储参数进行数据存储。本公开实施例所提供的中断存储指令处理方法、装置及相关产品的适用范围广,对中断存储指令的处理效率高、处理速度快,能够高效、快速地对装置的中断退出做出响应,且提高了对数据进行运算的效率和速度。
图22-2a示出根据本公开一实施例的中断存储指令处理装置的框图。在一种可能的实现方式中,如图22-2a所示,该装置还可以包括运算模块22-12。
控制模块22-11,还用于获取计算指令以及执行计算指令所需的待运算数据。
运算模块22-12,用于根据计算指令对待运算数据进行运算,得到运算结果。
其中,在执行到中断存储指令时,控制装置中断退出,可以包括:在执行到中断存储指令时,控制运算模块中断当前计算指令的执行。
其中,运算模块22-12可以包括多个运算器22-120。多个运算器22-120用于执行与计算指令的运算类型相对应的运算。
在该实现方式中,在执行计算指令的过程中,若控制模块执行到中断存储指令时,中断当前正在执行的计算指令的计算过程,并根据存储参数进行数据存储。
在该实现方式中,计算指令可以是与中断存储指令不同的、对标量、向量、矩阵、张量等数据进行算术运算、逻辑运算等运算的指令,例如,标量计算指令、卷积计算指令等,本领域技术人员可以根据实际需要对计算指令进行设置,本公开对此不作限制。在该实现方式中,控制模块还用于对计算指令进行解析,得到计算指令的操作码和操作域,并根据操作码和操作域获取待运算数据。
在该实现方式中,运算器可以包括加法器、除法器、乘法器、比较器等能够对数据进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的运算的数据量的大小、运算类型、对数据进行运算的处理速度、效率等要求对运算器的种类及数量进行设置,本公开对此不作限制。
图22-2b示出根据本公开一实施例的中断存储指令处理装置的框图。在一种可能的实现方式中,如图22-2b所示,运算模块22-12可以包括主运算子模块22-121和多个从运算子模块22-122。主运算子模块22-121可以包括多个运算器,和/或从运算子模块22-122中可以包括多个运算器(图中未示出)。
控制模块22-11,还用于解析计算指令得到多个运算指令,并将待运算数据和多个运算指令发送至主运算子模块22-121。
主运算子模块22-121,用于对待运算数据执行前序处理,以及与多个从运算子模块22-122进行数据和运算指令的传输。
从运算子模块22-122,用于根据从主运算子模块22-121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主运算子模块22-122。
主运算子模块22-121,还用于对多个中间结果执行后续处理,得到运算结果。
在该实现方式中,在计算指令为针对标量、向量数据所进行的运算时,装置可以控制主运算子模块利用其中的运算器进行与计算指令相对应的运算。在计算指令为针对矩阵、张量等维度大于或等于2的数据进行运算时,装置可以控制从运算子模块利用其中的运算器进行与计算指令相对应的运算。
在一种可能的实现方式中,存储参数可以包括存储空间类型和存储空间标识。其中,操作码还可以用于指示存储空间类型,操作域可以包括存储空间标识。其中,根据存储参数进行数据存储,可以包括:
确定与存储空间类型、存储空间标识相匹配的至少一个目标存储空间,并存储目标存储空间中的数据。
在该实现方式中,目标存储空间可以是装置的内存,如缓存、寄存器等位于装置中、或与装置的运行相关的内部存储空间。存储空间类型可以表明存储空间的位置、存储速度等信息。可以为不同类型的存储空间设置在中断存储指令中的代码,例如,可以将寄存器的代码设置为“gpr”,可以将NRAM的代码设置为“nram”。其中,缓存可以包括NRAM(Neuron Random Access Memory)神经元随机存取存储器,其为专门用于存储神经元的存储器。装置的内存可以用于存储执行计算指令所需的待运算数据等,本公开对此不作限制。
在该实现方式中,储空间标识可以存储空间在装置中的编号、名称以及存储空间的类型等能够表征该存储空间的信息。
在一种可能的实现方式中,在目标存储空间为多个时,每个目标存储空间中的数据为一组待存储数据,多组待存储数据对应至少一种数据格式。
在该实现方式中,对目标存储空间中所存储的数据的数据格式不作限制,同一组待存储数据的数据格式相同,多组待存储数据之间的数据格式可以相同,也可以不同。数据格式可以包括数据类型和数据长度中的至少一种。例如,目标存储空间中所存储的数据可以为16位整数型数据,32位无符号整数型数据等。举例来说,假定装置中断退出后,根据存储参数确定需存储寄存器1、寄存器2和寄存器3中的数据,其中,寄存器1中的数据以16位整数型数据格式存储、寄存器2中的数据以32位无符号整数型数据格式存储和寄存器3中的数据以8位整数型数据格式存储。中断存储模块可以对寄存器1中16位整数型的数据、寄存器2中32位无符号整数型的数据和寄存器3中8位整数型的数据进行存储。
在该实现方式中,中断存储模块在进行数据存储的过程中,可以直接按照数据在目标存储空间中的数据格式进行数据存储,也可以将目标存储空间中数据统一转化为指定数据格式后进行存储。
在该实现方式中,中断存储模块可以存储目标存储空间中的全部数据,也可以存储目标存储空间中的部分数据,本公开对此不作限制。
在一种可能的实现方式中,存储参数可以包括存储空间标识和待存储数据地址。其中,操作码 还可以用于指示存储空间标识,操作域可以包括待存储数据地址。其中,根据存储参数进行数据存储,可以包括:
确定与存储空间标识相对应的目标存储空间,并从目标存储空间的待存储数据地址中获取待存储数据,存储待存储数据。
在一种可能的实现方式中,在与装置相关的存储空间中仅有一个与存储空间标识对应的存储空间、且该存储空间的类型也仅为一个时,存储参数也可以包括存储空间类型和待存储数据地址。其中,操作码还可以用于指示存储空间类型,操作域可以包括待存储数据地址。其中,根据存储参数进行数据存储,可以包括:确定与存储空间类型相对应的目标存储空间,并从目标存储空间的待存储数据地址中获取待存储数据,存储待存储数据。
在该实现方式中,当根据待存储数据地址和存储空间类型可以确定唯一的待存储数据时,存储参数也可以包括存储空间类型和待存储数据地址。
在一种可能的实现方式中,存储参数还可以包括目标存储量。其中,操作域还可以包括目标存储量。其中,从目标存储空间的待存储数据地址中获取待存储数据,存储待存储数据,可以包括:
从目标存储空间的待存储数据地址中获取数据量为目标存储量的待存储数据,存储待存储数据。
在一种可能的实现方式中,可以设置默认目标存储量。在根据中断存储指令的操作域无法确定目标存储量时,可以将默认目标存储量确定为对应当前中断存储指令的目标存储量,进而从目标存储空间的待存储数据地址中获取数据量为目标存储量(也即默认目标存储量)的待存储数据。
应当理解的是,本领域技术人员可以根据实际需要对接收中断存储指令的运算模块进行设置,本公开对此不作限制。
在一种可能的实现方式中,操作域中可以包括用于指示中断存储空间的标识。其中,中断存储子模块22-113可以将根据存储参数获取的所需存储的数据存入与中断存储空间的标识相对应的中断存储空间中。
在一种可能的实现方式中,中断存储空间可以包括装置的片外存储和/或片上存储。片外存储可以包括至少一个DDR(也即DDR SDRAM,英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器),DDR可以包括至少一个LDRAM(Local DRAM,本地动态随机存储器)。片上存储可以包括寄存器、NRAM中的至少一种,片上存储中每一种存储空间(寄存器和/或NRAM)可以包括至少一个。片外存储的可用存储空间小于或等于指定存储容量。
在该实现方式中,片外存储的可用存储空间可以是片外存储中、可以供装置在执行中断存储指令的过程中进行中断退出后的数据存储的存储空间。其中,向量数据可以存储于NRAM、LDRAM中。可以预先根据装置所执行的数据运算过程对指定存储容量进行设置,例如,1024KB等,本公开对此不作限制。
在该实现方式中,可以通过在操作域中中断存储空间的标识可以包括中断存储空间的编号、名称、首地址等能够表征中断存储空间的参数,本公开对此不作限制。
在一种可能的实现方式中,若操作域中不包含中断存储空间,可以根据预先设置的默认存储方式,对不同种类的数据进行存储,例如,可以默认设置将标量数据存储到寄存器中,将向量数据存储到NRAM中。本领域技术人员可以根据实际需要对默认存储方式进行设置,本公开对此不作限制。
在一种可能的实现方式中,如图22-2a所示,该装置还可以包括存储模块22-13。存储模块22-13可以包括片外存储和/或片上存储,片上存储可以用于存储待运算数据。其中,片上存储可以包括寄存器和缓存中的至少一种。缓存用于存储待运算数据,缓存包括至少一个NRAM。寄存器用于存储待运算数据中的标量数据。其中,待运算数据包括标量数据、向量数据、张量数据等类型的数据。待运算数据可以是机器学习中进行运算所使用的数据。机器学习运算可以包括神经网络运算。
在一种可能的实现方式中,缓存可以包括神经元缓存。神经元缓存可以用于存储待运算数据中的神经元数据。神经元数据可以是进行神经网络运算所使用的数据,如向量数据等。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,中断存储指令的指令格式可以是:
breakdump.type addrSpace sign0
其中,breakdump.type为中断存储指令的操作码。sign0、addrSpace为中断存储指令的操作域。breakdump.type中的type表示存储空间类型。sign0表示存储空间标识,其中,在存储空间为多个时,存储空间标识可以为多个。addrSpace为中断存储空间的标识。其表示:在装置中断退出时,将存储空间类型type相对应的、标识为存储空间标识sign0的存储空间确定为目标存储空间,并将目标存储空间中的全部数据存储至与中断存储空间的标识addrSpace相对应的中断存储空间中。type可以是gpr。
举例来说,当需要存储寄存器中的数据时,假定需要存储数据的寄存器为6个,其6个寄存器的存储空间标识分别为sign0、sign1、sign2、sign3、sign4、sign5,其对应的中断存储指令的指令格式可以为:breakdump.gpr nram0 sign0 sign1 sign2 sign3 sign4 sign5。其表示:在装置中断退出时,将存储空间标识为sign0、sign1、sign2、sign3、sign4、sign5的6个寄存器中的全部数据存储在与中断存储空间的标识nram0对应的中断存储空间中。
在一种可能的实现方式中,中断存储指令的指令格式还可以是:
breakdump.sign addrSpace src size
其中,breakdump.sign为中断存储指令的操作码。addrSpace、src、size为中断存储指令的操作域。src表示待存储数据地址。size表示目标存储量。addrSpace为中断存储空间的标识。其表示:在装置中断退出时,确定存储空间标识sign相对应目标存储空间,并从目标存储空间的待存储数据地址src中获取数据量为目标存储量size的待存储数据,将待存储数据存储至与中断存储空间的标识addrSpace对应的中断存储空间中。
在一种可能的实现方式中,在需要存储内存如NRAM中的数据时,存储参数可以包括存储空间类型、待存储数据地址和目标存储量。中断存储指令的指令格式可以是:breakdump.nram ldram0 src size。其表示:在装置中断退出时,从NRAM的待存储数据地址src中获取数据量为目标存储量size的待存储数据,并将待存储数据存储至与中断存储空间的标识ldram0对应的中断存储空间中。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了中断存储指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
应用示例
以下结合“利用中断存储指令处理装置执行中断存储指令”作为一个示例性应用场景,给出根据本公开实施例的应用示例,以便于理解中断存储指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本公开实施例的目的,不应视为对本公开实施例的限制
图22-3a、图22-3b示出根据本公开一实施例的中断存储指令处理装置的应用场景的示意图。如图22-3a、图22-3b所示,中断存储指令处理装置对中断存储指令进行处理的过程如下:
示例一
如图22-3a所示,控制模块22-11对获取到的中断存储指令1(如中断存储指令1为breakdump.gpr nram0 r0 r1 r2 r3 r4 r5)进行解析,得到中断存储指令1的操作码和操作域。其中,中断存储指令1的操作码为breakdump.gpr,gpr为存储空间类型,表示寄存器。r0、r1、r2、r3、r4、r5表示存储空间标识。nram0表示中断存储空间的标识。在执行到中断存储指令1时,控制装置中断退出,并对存储空间标识为r0、r1、r2、r3、r4、r5的6个寄存器中的数据存储至与中断存储空间的标识nram0对应的中断存储空间中。
其中,控制装置中断退出,可以包括:在执行到中断存储指令1时,中断当前计算指令的执行。
示例二
如图22-3b所示,控制模块22-11对获取到的中断存储指令2(如中断存储指令2为breakdump.nram ldram0 500 1024)进行解析,得到中断存储指令2的操作码和操作域。其中,中断存储指令2的操作码为breakdump.nram,nram为存储空间类型,表示NRAM。500表示待存储数据地址。1024为目标存储量。ldram0表示中断存储空间的标识。在执行到中断存储指令2时,控制装置中断退出,并从NRAM中待存储数据地址500中获取目标存储量1024的待存储数据,将待存储数据存入与中断存储空间的标识ldram0对应的中断存储空间中。
其中,控制装置中断退出,可以包括:在执行到中断存储指令2时,中断当前计算指令的执行。
这样,中断存储指令处理装置可以高效、快速地对中断存储指令进行处理,能够高效、快速地对装置的中断退出做出响应,且提高了对数据进行运算的效率和速度。以上各模块的工作过程可参考上文的相关描述。
图22-4示出根据本公开一实施例的中断存储指令处理方法的流程图。如图22-4所示,该方法应用于上述中断存储指令处理装置,该方法包括步骤S51-22和步骤S52-22。该方法可以应用于包含存储器和处理器的如计算机设备等,其中,存储器用于存储执行方法过程中所使用的数据;处理器用于执行相关的处理、运算步骤,如执行下述步骤S51-22和步骤S52-22。
在步骤S51-22中,根据获取到的中断存储指令的操作域和操作码,确定进行响应中断退出的处理所需的存储参数。其中,操作码用于指示中断存储指令对装置中断退出时所进行的处理为中断存储处理,存储参数用于指示装置中断退出时需要存储的数据。
在步骤S52-22中,在执行到中断存储指令时,控制装置中断退出,并根据存储参数进行数据存储。
在一种可能的实现方式中,操作域可以包括用于指示中断存储空间的标识.其中,根据存储参数进行数据存储,可以包括:
将根据存储参数获取的所需存储的数据存入与中断存储空间的标识相对应的中断存储空间中。
在一种可能的实现方式中,中断存储空间可以包括装置的片外存储和/或片上存储。其中,片外存储可以包括至少一个DDR,DDR可以包括至少一个LDRAM,片上存储可以包括寄存器、NRAM中的至少一种,片外存储的可用存储空间小于或等于指定存储容量。
在一种可能的实现方式中,存储参数包括存储空间类型和存储空间标识。其中,操作码还用于指示存储空间类型,操作域包括存储空间标识。其中,根据存储参数进行数据存储,可以包括:
确定与存储空间类型、存储空间标识相匹配的至少一个目标存储空间,并存储目标存储空间中的数据。
在一种可能的实现方式中,在目标存储空间为多个时,每个目标存储空间中的数据为一组待存储数据,多组待存储数据对应至少一种数据格式。
在一种可能的实现方式中,存储参数可以包括存储空间标识和待存储数据地址。其中,操作码还可以用于指示存储空间标识,操作域可以包括待存储数据地址。其中,根据存储参数进行数据存储,可以包括:
确定与存储空间标识相对应的目标存储空间,并从目标存储空间的待存储数据地址中获取待存储数据,存储待存储数据。
在一种可能的实现方式中,存储参数还可以包括目标存储量。其中,操作域还可以包括目标存储量。其中,从目标存储空间的待存储数据地址中获取待存储数据,存储待存储数据,可以包括:
从目标存储空间的待存储数据地址中获取数据量为目标存储量的待存储数据,存储待存储数据。
在一种可能的实现方式中,该方法还可以包括:
获取计算指令,并获取执行计算指令所需的待运算数据;
根据待运算数据,执行计算指令,得到运算结果,
其中,在执行到中断存储指令时,控制装置中断退出,包括:
在执行到中断存储指令时,控制运算模块中断当前计算指令的执行。
在一种可能的实现方式中,该方法还可以包括:
解析计算指令得到多个运算指令;
其中,根据待运算数据,执行计算指令,得到运算结果,可以包括:
对待运算数据执行前序处理,以及与进行数据和运算指令的传输;
根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
对多个中间结果执行后续处理,得到运算结果。
在一种可能的实现方式中,该方法还可以包括:
利用存储模块中的片上存储来存储待运算数据,
其中,存储模块可以包括片外存储和/或片上存储,片上存储可以包括寄存器和缓存中的至少一种,
缓存,用于存储待运算数据,缓存可以包括至少一个NRAM;
寄存器,用于存储待运算数据中的标量数据。
在一种可能的实现方式中,缓存可以包括神经元缓存,神经元缓存用于存储待运算数据中的神经元数据。
在一种可能的实现方式中,该方法还可以包括:
存储中断存储指令和计算指令;
对中断存储指令和计算指令分别进行解析,得到对应的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令包括中断存储指令和计算指令。
在一种可能的实现方式中,该方法还可以包括:在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系可以包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了中断存储指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的中断存储指令处理方法的适用范围广,对中断存储指令的处理效率高、处理速度快,能够高效、快速地对装置的中断退出做出响应,且提高了对数据进行运算的效率和速度。
条款V1、一种中断存储指令处理装置,所述装置包括控制模块,所述控制模块包括:
参数获取子模块,根据获取到的中断存储指令的操作域和操作码,确定进行响应中断退出的处理所需的存储参数;
中断存储子模块,在执行到所述中断存储指令时,控制所述装置中断退出,并根据所述存储参数进行数据存储,
其中,所述操作码用于指示所述中断存储指令对装置中断退出时所进行的处理为中断存储处理,所述存储参数用于指示所述装置中断退出时需要存储的数据。
条款V2、根据条款V1所述的装置,所述操作域包括用于指示中断存储空间的标识,
其中,所述中断存储子模块,还用于将根据所述存储参数获取的所需存储的数据存入与所述中断存储空间的标识相对应的中断存储空间中。
条款V3、根据条款V2所述的装置,所述中断存储空间包括所述装置的片外存储和/或片上存储,
其中,所述片外存储包括至少一个DDR,所述DDR包括至少一个LDRAM,所述片上存储包括寄存器、NRAM中的至少一种,所述片外存储的可用存储空间小于或等于指定存储容量。
条款V4、根据条款V1所述的装置,所述存储参数包括存储空间类型和存储空间标识,
其中,所述操作码还用于指示所述存储空间类型,所述操作域包括存储空间标识,
其中,根据所述存储参数进行数据存储,包括:
确定与所述存储空间类型、存储空间标识相匹配的至少一个目标存储空间,并存储目标存储空间中的数据。
条款V5、根据条款V4所述的装置,在所述目标存储空间为多个时,每个目标存储空间中的数据为一组待存储数据,多组待存储数据对应至少一种数据格式。
条款V6、根据条款V1所述的装置,所述存储参数包括存储空间标识和待存储数据地址,
其中,所述操作码还用于指示所述存储空间标识,所述操作域包括所述待存储数据地址,
其中,根据所述存储参数进行数据存储,包括:
确定与所述存储空间标识相对应的目标存储空间,并从所述目标存储空间的待存储数据地址中获取待存储数据,存储所述待存储数据。
条款V7、根据条款V6所述的装置,所述存储参数还包括目标存储量,其中,所述操作域还包括目标存储量,
其中,从所述目标存储空间的待存储数据地址中获取待存储数据,存储所述待存储数据,包括:
从所述目标存储空间的待存储数据地址中获取数据量为所述目标存储量的待存储数据,存储所述待存储数据。
条款V8、根据条款V1所述的装置,所述装置还包括运算模块,
所述控制模块,还用于获取计算指令,获取执行所述计算指令所需的待运算数据,并将所述待运算数据和所述计算指令发送至所述运算模块;
所述运算模块,用于根据所述待运算数据,执行所述计算指令,得到运算结果,
其中,在执行到所述中断存储指令时,控制所述装置中断退出,包括:
在执行到中断存储指令时,控制所述运算模块中断当前所述计算指令的执行。
条款V9、根据条款V8所述的装置,所述运算模块包括主运算子模块和多个从运算子模块,
所述控制模块,还用于解析所述计算指令得到多个运算指令,并将所述待运算数据和所述多个运算指令发送至所述主运算子模块;
所述主运算子模块,用于对所述待运算数据执行前序处理,以及与所述多个从运算子模块进行数据和运算指令的传输;
所述从运算子模块,用于根据从所述主运算子模块传输的数据和运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主运算子模块;
所述主运算子模块,还用于对所述多个中间结果执行后续处理,得到运算结果。
条款V10、根据条款V8所述的装置,所述装置还包括存储模块,所述存储模块包括片外存储和/或片上存储,
所述片上存储,用于存储所述待运算数据,
其中,所述片上存储包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据。
条款V11、根据条款V10所述的装置,所述缓存包括神经元缓存,
所述神经元缓存,用于存储所述待运算数据中的神经元数据。
条款V12、根据条款V8所述的装置,所述控制模块,包括:
指令存储子模块,用于存储所述中断存储指令和所述计算指令;
指令处理子模块,用于对所述中断存储指令和所述计算指令分别进行解析,得到对应的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述中断存储指令和所述计算指令。
条款V13、根据条款V12所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行 指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
条款V14、一种机器学习运算装置,所述装置包括:
一个或多个如条款V1-条款V13任一项所述的中断存储指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述中断存储指令处理装置时,多个所述中断存储指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述中断存储指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述中断存储指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述中断存储指令处理装置共享内存或者拥有各自的内存;多个所述中断存储指令处理装置的互联方式是任意互联拓扑。
条款V15、一种组合处理装置,所述组合处理装置包括:
如条款V14所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
条款V16、一种机器学习芯片,所述机器学习芯片包括:
如条款V14所述的机器学习运算装置或如15所述的组合处理装置。
条款V17、一种电子设备,所述电子设备包括:
如条款V16所述的机器学习芯片。
条款V18、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款V16所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
条款V19、一种中断存储指令处理方法,所述方法应用于中断存储指令处理装置,所述方法包括:
根据获取到的中断存储指令的操作域和操作码,确定进行响应中断退出的处理所需的存储参数;
在执行到所述中断存储指令时,控制所述装置中断退出,并根据所述存储参数进行数据存储,
其中,所述操作码用于指示所述中断存储指令对装置中断退出时所进行的处理为中断存储处理,所述存储参数用于指示所述装置中断退出时需要存储的数据。
条款V20、根据条款V19所述的方法,所述操作域包括用于指示中断存储空间的标识,
其中,根据所述存储参数进行数据存储,包括:
将根据所述存储参数获取的所需存储的数据存入与所述中断存储空间的标识相对应的中断存储空间中。
条款V21、根据条款V20所述的方法,所述中断存储空间包括所述装置的片外存储和/或片上存储,
其中,所述片外存储包括至少一个DDR,所述DDR包括至少一个LDRAM,所述片上存储包括寄存器、NRAM中的至少一种,所述片外存储的可用存储空间小于或等于指定存储容量。
条款V22、根据条款V19所述的方法,所述存储参数包括存储空间类型和存储空间标识,
其中,所述操作码还用于指示所述存储空间类型,所述操作域包括存储空间标识,
其中,根据所述存储参数进行数据存储,包括:
确定与所述存储空间类型、存储空间标识相匹配的至少一个目标存储空间,并存储目标存储空间中的数据。
条款V23、根据条款V22所述的方法,在所述目标存储空间为多个时,每个目标存储空间中的数据为一组待存储数据,多组待存储数据对应至少一种数据格式。
条款V24、根据条款V19所述的方法,所述存储参数包括存储空间标识和待存储数据地址,
其中,所述操作码还用于指示所述存储空间标识,所述操作域包括所述待存储数据地址,
其中,根据所述存储参数进行数据存储,包括:
确定与所述存储空间标识相对应的目标存储空间,并从所述目标存储空间的待存储数据地址中获取待存储数据,存储所述待存储数据。
条款V25、根据条款V24所述的方法,所述存储参数还包括目标存储量,其中,所述操作域还包括目标存储量,
其中,从所述目标存储空间的待存储数据地址中获取待存储数据,存储所述待存储数据,包括:
从所述目标存储空间的待存储数据地址中获取数据量为所述目标存储量的待存储数据,存储所述待存储数据。
条款V26、根据条款V19所述的方法,所述方法还包括:
获取计算指令,并获取执行所述计算指令所需的待运算数据;
根据所述待运算数据,执行所述计算指令,得到运算结果,
其中,在执行到所述中断存储指令时,控制所述装置中断退出,包括:
在执行到中断存储指令时,控制所述运算模块中断当前所述计算指令的执行。
条款V27、根据条款V26所述的方法,所述方法还包括:
解析所述计算指令得到多个运算指令;
其中,根据所述待运算数据,执行所述计算指令,得到运算结果,包括:
对所述待运算数据执行前序处理,以及与进行数据和运算指令的传输;
根据传输的数据和运算指令并行执行中间运算得到多个中间结果;
对所述多个中间结果执行后续处理,得到运算结果。
条款V28、根据条款V26所述的方法,所述方法还包括:
利用存储模块中的片上存储来存储所述待运算数据,
其中,所述存储模块包括片外存储和/或片上存储,所述片上存储包括寄存器和缓存中的至少一种,
所述缓存,用于存储所述待运算数据,所述缓存包括至少一个NRAM;
所述寄存器,用于存储所述待运算数据中的标量数据。
条款V29、根据条款V28所述的方法,所述缓存包括神经元缓存,所述神经元缓存用于存储所述待运算数据中的神经元数据。
条款V30、根据条款V26所述的方法,所述方法还包括:
存储所述中断存储指令和所述计算指令;
对所述中断存储指令和所述计算指令分别进行解析,得到对应的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述中断存储指令和所述计算指令。
条款V31、根据条款V30所述的方法,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
上述装置中的运算模块(或者上述装置中的处理模块)均可以包括主运算子模块121和多个从运算子模块122,以实现对上述指令的处理的同时,进行计算指令的处理。
在一种可能的实现方式中,控制模块,还用于对获取到的计算指令进行解析,得到计算指令的操作域和操作码,并根据操作域和操作码获取执行计算指令所需的待运算数据。运算模块,还用于根据计算指令对待运算数据进行运算,得到计算指令的计算结果。其中,运算模块可以包括多个运算器,用于执行与计算指令的运算类型相对应的运算。
在该实现方式中,计算指令可以是其他对标量、向量、矩阵、张量等数据进行算术运算、逻辑运算等运算的指令,本领域技术人员可以根据实际需要对计算指令进行设置,本公开对此不作限制。
该实现方式中,运算器可以包括加法器、除法器、乘法器、比较器等能够对数据进行算术运算、逻辑运算等运算的运算器。可以根据所需进行的运算的数据量的大小、运算类型、对数据进行运算的处理速度、效率等要求对运算器的种类及数量进行设置,本公开对此不作限制。
在一种可能的实现方式中,控制模块,还用于解析计算指令得到多个运算指令,并将待运算数据和多个运算指令发送至主运算子模块121。
主运算子模块121,用于对待运算数据执行前序处理,以及与多个从运算子模块122进行数据和运算指令的传输。
从运算子模块122,用于根据从主运算子模块121传输的数据和运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主运算子模块122。
主运算子模块121,还用于对多个中间结果执行后续处理,得到计算指令的计算结果,并将计算结果存入对应的地址中。
在该实现方式中,在计算指令为针对标量、向量数据所进行的运算时,装置可以控制主运算子模块利用其中的运算器进行与计算指令相对应的运算。在计算指令为针对矩阵、张量等维度大于或等于2的数据进行运算时,装置可以控制从运算子模块利用其中的运算器进行与计算指令相对应的运算。
需要说明的是,本领域技术人员可以根据实际需要对主运算子模块和多个从运算子模块之间的连接方式进行设置,以实现对运算模块的架构设置,例如,运算模块的架构可以是“H”型架构、阵列型架构、树型架构等,本公开对此不作限制。
图23a示出根据本公开一实施例的运算模块的框图。在一种可能的实现方式中,如图23a所示,运算模块还可以包括一个或多个分支运算子模块123,该分支运算子模块123用于转发主运算子模块121和从运算子模块122之间的数据和/或运算指令。其中,主运算子模块121与一个或多个分支运算子模块123连接。这样,运算模块中的主运算子模块、分支运算子模块和从运算子模块之间采用“H”型架构连接,通过分支运算子模块转发数据和/或运算指令,节省了对主运算子模块的资源占用,进而提高指令的处理速度。
图23b示出根据本公开一实施例的运算模块的框图。在一种可能的实现方式中,如图23b所示,多个从运算子模块122呈阵列分布。
每个从运算子模块122与相邻的其他从运算子模块122连接,主运算子模块121连接多个从运算子模块122中的k个从运算子模块122,k个从运算子模块122为:第1行的n个从运算子模块122、第m行的n个从运算子模块122以及第1列的m个从运算子模块122。
其中,如图23b所示,k个从运算子模块仅包括第1行的n个从运算子模块、第m行的n个从运算子模块以及第1列的m个从运算子模块,即该k个从运算子模块为多个从运算子模块中直接与主运算子模块连接的从运算子模块。其中,k个从运算子模块,用于在主运算子模块以及多个从运算子模块之间的数据以及指令的转发。这样,多个从运算子模块呈阵列分布,可以提高主运算子模块向从运算子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
图23c示出根据本公开一实施例的运算模块的框图。在一种可能的实现方式中,如图23c所示,运算模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主运算子模块121连接,多个支端口402与多个从运算子模块122分别连接。其中,树型子模块124具有收发功能,用于转发主运算子模块121和从运算子模块122之间的数据和/或运算指令。这样,通过树型子模块的作用使得运算模块呈树型架构连接,并利用树型子模块的转发功能,可以提高主运算子模块向从运算子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与从运算子模块连接,以转发主运算子模块121和从运算子模块122之间的数据和/或运算指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。
举例来说,图23d示出根据本公开一实施例的运算模块的框图。如图23d所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从运算子模块122连接,以转发主运算子模块121和从运算子模块122之间的数据和/或运算指令。
在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本公开对此不作限制。
图23e示出根据本公开一实施例的控制模块的框图。在一种可能的实现方式中,如图23e所示,控制模块可以包括指令存储子模块114、指令处理子模块115和队列存储子模块116。
指令存储子模块114用于存储上述指令和计算指令。
指令处理子模块115用于对上述指令和计算指令分别进行解析,得到对应的操作码和操作域。也即对上述指令进行解析得到指令的操作码和操作域,以及对计算指令进行解析得到计算指令的操作码和操作域。
队列存储子模块116用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括上述指令和计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图23e所示,控制模块还可以包括依赖关系处理子模块117。依赖关系处理子模块117,用于在确定多个待执行命令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块114中,在第零待执行指令执行完毕后,从指令存储子模块114中提取第一待执行指令发送至运算模块。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第一待执行指令之前的第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据第一待执行指令与第一待执行指令之前的第零待执行指令之间的依赖关系,使得在先的第零待执行指令执行完毕之后,再执行在后的第一待执行指令,保证运算结果的准确性。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图1-4、图2-4、图3-4、图4-4、图5-4、图6-4、图7-4、图8-4、图9-4、图10-4、图11-4、图12-4、图13-4、图14-4、图15-4、图16-4、图17-4、图18-4、图19-4、图20-4、图21-4、图22-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭 头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-4、图2-4、图3-4、图4-4、图5-4、图6-4、图7-4、图8-4、图9-4、图10-4、图11-4、图12-4、图13-4、图14-4、图15-4、图16-4、图17-4、图18-4、图19-4、图20-4、图21-4、图22-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
应该理解,上述的装置实施例仅是示意性的,本公开的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本公开各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得指令,并将执行结果通过I/O接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上指令处理装置时,指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图24a示出根据本公开一实施例的组合处理装置的框图。如图24a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
图24b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图24b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图25示出根据本公开一实施例的板卡的结构示意图。如图25所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。
存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。
在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个DDR4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组存储单元393中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制DDR的控制器,用于对每个存储单元393的数据传输与数据存储的控制。
接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至机器学习芯片289,实现数据转移。优选的,当采用PCIE 3.0 X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,接口装置391还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过SPI接口电连接。控制器件392可以包括单片机(Micro Controller Unit,MCU)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作 状态的调控。
本公开提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
电子设备可以包括数据处理装置、计算机设备、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、B超仪和/或心电图仪。
本公开还提供一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述指令处理方法。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行上述指令处理方法。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上所述,本说明书内容不应理解为对本公开的限制。

Claims (23)

  1. 一种激活指令处理装置,其特征在于,所述装置包括:
    控制模块,用于对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据和目标地址;
    运算模块,用于对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
    其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址和所述目标地址。
  2. 根据权利要求1所述的装置,其特征在于,
    所述控制模块,还用于根据所述操作码和/或所述操作域获取激活参数表;
    所述运算模块,还用于根据所述激活参数表对所述待运算数据进行激活运算,得到运算结果,
    其中,所述激活参数表包括激活表和常数表。
  3. 根据权利要求1所述的装置,其特征在于,所述运算模块,包括:
    多个激活运算器,用于对所述待运算数据进行激活运算。
  4. 根据权利要求3所述的装置,其特征在于,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
    所述主运算子模块,用于利用所述多个激活运算器对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
  5. 根据权利要求1所述的装置,其特征在于,所述操作域包括读入量或所述读入量的存储地址,其中,所述控制模块,还用于获取所述读入量,并按照所述读入量获取所述待运算数据。
  6. 根据权利要求1所述的装置,其特征在于,所述装置还包括:
    存储模块,用于存储所述待运算数据。
  7. 根据权利要求1所述的装置,其特征在于,所述控制模块包括:
    指令存储子模块,用于存储所述激活指令;
    指令处理子模块,用于对所述激活指令进行解析,得到所述激活指令的操作码和操作域;
    队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述激活指令。
  8. 根据权利要求7所述的装置,其特征在于,所述控制模块,还包括:
    依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述运算模块,
    其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
    存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
  9. 根据权利要求1至8任一项所述的装置,其特征在于,所述激活运算所利用的激活函数包括以下至少一种:
    线性整流函数、S型生长曲线函数、双曲正切函数、带泄露线性整流函数、取最大值函数和幂函 数。
  10. 一种机器学习运算装置,其特征在于,所述装置包括:
    一个或多个如权利要求1-9任一项所述的激活指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
    当所述机器学习运算装置包含多个所述激活指令处理装置时,多个所述激活指令处理装置间可以通过特定的结构进行连接并传输数据;
    其中,多个所述激活指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述激活指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述激活指令处理装置共享内存或者拥有各自的内存;多个所述激活指令处理装置的互联方式是任意互联拓扑。
  11. 一种组合处理装置,其特征在于,所述组合处理装置包括:
    如权利要求10所述的机器学习运算装置、通用互联接口和其他处理装置;
    所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作,
    其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
  12. 一种机器学习芯片,其特征在于,所述机器学习芯片包括:
    如权利要求10所述的机器学习运算装置或如权利要求11所述的组合处理装置。
  13. 一种电子设备,其特征在于,所述电子设备包括:
    如权利要求12所述的机器学习芯片。
  14. 一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求12所述的机器学习芯片;
    其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
    所述存储器件,用于存储数据;
    所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
    所述控制器件,用于对所述机器学习芯片的状态进行监控。
  15. 一种激活指令处理方法,其特征在于,所述方法应用于激活指令处理装置,所述方法包括:
    利用控制模块对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,并根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据和目标地址;
    利用运算模块对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中,
    其中,所述操作码用于指示所述激活指令对数据所进行的运算为激活运算,所述操作域包括待运算数据地址和所述目标地址。
  16. 根据权利要求15所述的方法,其特征在于,所述方法还包括:
    根据所述操作码和/或所述操作域获取激活参数表;
    其中,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
    根据所述激活参数表对所述待运算数据进行激活运算,得到运算结果,
    其中,所述激活参数表包括激活表和常数表。
  17. 根据权利要求15所述的方法,其特征在于,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
    利用多个激活运算器对所述待运算数据进行激活运算。
  18. 根据权利要求15所述的方法,其特征在于,所述运算模块包括主运算子模块和多个从运算子模块,所述主运算子模块包括所述多个激活运算器,
    其中,利用运算模块对所述待运算数据进行激活运算,得到运算结果,包括:
    利用所述主运算子模块中的多个激活运算器对所述待运算数据进行激活运算,得到运算结果,并将所述运算结果存入所述目标地址中。
  19. 根据权利要求15所述的方法,其特征在于,所述操作域还包括读入量或所述读入量的存储地址,
    其中,根据所述操作码和所述操作域获取执行所述激活指令所需的待运算数据、激活表、常数表和目标地址,包括:
    获取所述读入量,并按照所述读入量获取所述待运算数据。
  20. 根据权利要求15所述的方法,其特征在于,所述方法还包括:
    存储所述待运算数据。
  21. 根据权利要求15所述的方法,其特征在于,利用控制模块对获取到的激活指令进行解析,得到所述激活指令的操作码和操作域,包括:
    存储所述激活指令;
    对所述激活指令进行解析,得到所述激活指令的操作码和操作域;
    存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述激活指令。
  22. 根据权利要求21所述的方法,其特征在于,所述方法还包括:
    在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
    其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
    存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
  23. 根据权利要求15至22任一项所述的方法,其特征在于,所述激活运算所利用的激活函数包括以下至少一种:
    线性整流函数、S型生长曲线函数、双曲正切函数、带泄露线性整流函数、取最大值函数和幂函数。
PCT/CN2019/110167 2018-10-09 2019-10-09 运算方法、装置、计算机设备和存储介质 WO2020073925A1 (zh)

Applications Claiming Priority (86)

Application Number Priority Date Filing Date Title
CN201811172152 2018-10-09
CN201811172152.4 2018-10-09
CN201811185712 2018-10-11
CN201811185712.X 2018-10-11
CN201811185723.8 2018-10-11
CN201811185723 2018-10-11
CN201811184766.4 2018-10-11
CN201811184766 2018-10-11
CN201811191932 2018-10-12
CN201811190924.7 2018-10-12
CN201811189261.7 2018-10-12
CN201811191932.3 2018-10-12
CN201811189265.5 2018-10-12
CN201811189261 2018-10-12
CN201811190924 2018-10-12
CN201811189265 2018-10-12
CN201811203371 2018-10-16
CN201811203361 2018-10-16
CN201811203361.0 2018-10-16
CN201811203371.4 2018-10-16
CN201811355474.2 2018-11-14
CN201811355474 2018-11-14
CN201811409322 2018-11-23
CN201811409322.6 2018-11-23
CN201811481630 2018-12-05
CN201811481630.X 2018-12-05
CN201811488021 2018-12-06
CN201811488021.7 2018-12-06
CN201811497658.2 2018-12-07
CN201811497658 2018-12-07
CN201811532788.5A CN111325331B (zh) 2018-12-14 2018-12-14 运算方法、装置及相关产品
CN201811532788.5 2018-12-14
CN201811548200.5 2018-12-18
CN201811548200 2018-12-18
CN201811555955.8 2018-12-19
CN201811555955 2018-12-19
CN201811557031 2018-12-19
CN201811557031.1 2018-12-19
CN201811564309.8 2018-12-20
CN201811564496 2018-12-20
CN201811563666 2018-12-20
CN201811563666.2 2018-12-20
CN201811564309 2018-12-20
CN201811564496.X 2018-12-20
CN201910402787.7A CN111045729A (zh) 2018-10-12 2019-05-15 运算方法、装置及相关产品
CN201910406768.1 2019-05-15
CN201910402790.9 2019-05-15
CN201910402787.7 2019-05-15
CN201910403429.8A CN111353595A (zh) 2018-12-20 2019-05-15 运算方法、装置及相关产品
CN201910406775.1A CN111047028A (zh) 2018-10-12 2019-05-15 运算方法、装置及相关产品
CN201910406775.1 2019-05-15
CN201910402790.9A CN111222633A (zh) 2018-11-23 2019-05-15 运算方法、装置及相关产品
CN201910403429.8 2019-05-15
CN201910406768.1A CN111047027A (zh) 2018-10-12 2019-05-15 运算方法、装置及相关产品
CN201910548674.8 2019-06-24
CN201910548275.1A CN110096310B (zh) 2018-11-14 2019-06-24 运算方法、装置、计算机设备和存储介质
CN201910548674.8A CN110119807B (zh) 2018-10-12 2019-06-24 运算方法、装置、计算机设备和存储介质
CN201910548275.1 2019-06-24
CN201910614673.9 2019-07-09
CN201910614673.9A CN111026440B (zh) 2018-10-09 2019-07-09 运算方法、装置、计算机设备和存储介质
CN201910620766.2A CN111047030A (zh) 2018-10-11 2019-07-10 运算方法、装置、计算机设备和存储介质
CN201910620766.2 2019-07-10
CN201910620768.1 2019-07-10
CN201910620768.1A CN111124497B (zh) 2018-10-11 2019-07-10 运算方法、装置、计算机设备和存储介质
CN201910623290.8A CN111047005A (zh) 2018-10-11 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910625443.2A CN111275197B (zh) 2018-12-05 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910623290.8 2019-07-11
CN201910625443.2 2019-07-11
CN201910625442.8 2019-07-11
CN201910625494.5A CN111061507A (zh) 2018-10-16 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910625442.8A CN111290788B (zh) 2018-12-07 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910625497.9 2019-07-11
CN201910625610.3 2019-07-11
CN201910625610.3A CN111290789B (zh) 2018-12-06 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910625494.5 2019-07-11
CN201910625497.9A CN111062483A (zh) 2018-10-16 2019-07-11 运算方法、装置、计算机设备和存储介质
CN201910629417.7 2019-07-12
CN201910629417.7A CN111339060B (zh) 2018-12-19 2019-07-12 运算方法、装置、计算机设备和存储介质
CN201910636077.0A CN111338694B (zh) 2018-12-19 2019-07-15 运算方法、装置、计算机设备和存储介质
CN201910636077.0 2019-07-15
CN201910636339.3A CN111353124A (zh) 2018-12-20 2019-07-15 运算方法、装置、计算机设备和存储介质
CN201910636339.3 2019-07-15
CN201910645052.7 2019-07-17
CN201910645052.7A CN111353125B (zh) 2018-12-20 2019-07-17 运算方法、装置、计算机设备和存储介质
CN201910755816.8A CN111340202B (zh) 2018-12-18 2019-08-15 运算方法、装置及相关产品
CN201910755816.8 2019-08-15

Publications (1)

Publication Number Publication Date
WO2020073925A1 true WO2020073925A1 (zh) 2020-04-16

Family

ID=70164484

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/110167 WO2020073925A1 (zh) 2018-10-09 2019-10-09 运算方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
WO (1) WO2020073925A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541814A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
US20160342890A1 (en) * 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN110096310A (zh) * 2018-11-14 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110119807A (zh) * 2018-10-12 2019-08-13 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541814A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 用于数据通信处理器的矩阵计算装置和方法
US20160342890A1 (en) * 2015-05-21 2016-11-24 Google Inc. Batch processing in a neural network processor
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN110119807A (zh) * 2018-10-12 2019-08-13 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096310A (zh) * 2018-11-14 2019-08-06 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN110096310B (zh) 运算方法、装置、计算机设备和存储介质
US9928190B2 (en) High bandwidth low latency data exchange between processing elements
CN110119807B (zh) 运算方法、装置、计算机设备和存储介质
WO2017185392A1 (zh) 一种用于执行向量四则运算的装置和方法
WO2017185404A1 (zh) 一种用于执行向量逻辑运算的装置及方法
WO2020073925A1 (zh) 运算方法、装置、计算机设备和存储介质
WO2020073923A1 (zh) 运算方法、装置、计算机设备和存储介质
CN113330460A (zh) 运算方法、装置、计算机设备和存储介质
US11119766B2 (en) Hardware accelerator with locally stored macros
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
WO2020233387A1 (zh) 指令处理方法、装置及相关产品
WO2022001497A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
US11500802B1 (en) Data replication for accelerator
US11494326B1 (en) Programmable computations in direct memory access engine
CN111340202B (zh) 运算方法、装置及相关产品
WO2020078446A1 (zh) 运算方法、装置及相关产品
CN111290788B (zh) 运算方法、装置、计算机设备和存储介质
CN111353124A (zh) 运算方法、装置、计算机设备和存储介质
CN111353125B (zh) 运算方法、装置、计算机设备和存储介质
CN111061507A (zh) 运算方法、装置、计算机设备和存储介质
US11847491B1 (en) Low latency execution of a machine learning model
CN111124497B (zh) 运算方法、装置、计算机设备和存储介质
CN111339060B (zh) 运算方法、装置、计算机设备和存储介质
WO2022253226A1 (zh) 神经网络模型的配置确定方法、装置、设备及存储介质

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

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

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

122 Ep: pct application non-entry in european phase

Ref document number: 19872166

Country of ref document: EP

Kind code of ref document: A1