WO2020108470A1 - 运算方法、装置及相关产品 - Google Patents

运算方法、装置及相关产品 Download PDF

Info

Publication number
WO2020108470A1
WO2020108470A1 PCT/CN2019/120879 CN2019120879W WO2020108470A1 WO 2020108470 A1 WO2020108470 A1 WO 2020108470A1 CN 2019120879 W CN2019120879 W CN 2019120879W WO 2020108470 A1 WO2020108470 A1 WO 2020108470A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
digit
target
instruction
processing
Prior art date
Application number
PCT/CN2019/120879
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 CN201811456719.0A external-priority patent/CN109583579B/zh
Priority claimed from CN201811459231.3A external-priority patent/CN109558110B/zh
Priority claimed from CN201811459240.2A external-priority patent/CN109583581B/zh
Priority claimed from CN201811456698.2A external-priority patent/CN109582277A/zh
Priority claimed from CN201811456697.8A external-priority patent/CN109558109B/zh
Priority claimed from CN201811622462.1A external-priority patent/CN111381873A/zh
Priority claimed from CN201811621262.4A external-priority patent/CN111381872A/zh
Priority claimed from CN201811622473.XA external-priority patent/CN111382851A/zh
Priority claimed from CN201811621254.XA external-priority patent/CN111401536A/zh
Priority claimed from CN201811621244.6A external-priority patent/CN111382850A/zh
Priority claimed from CN201811621258.8A external-priority patent/CN111382390B/zh
Priority claimed from CN201811621245.0A external-priority patent/CN111381871B/zh
Application filed by 上海寒武纪信息科技有限公司 filed Critical 上海寒武纪信息科技有限公司
Publication of WO2020108470A1 publication Critical patent/WO2020108470A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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, and related products.
  • the data format of the data to be calculated may be a fixed-point number.
  • the fixed-point number has higher precision for numbers with larger values and lower precision for numbers with smaller values.
  • the range of fixed-point numbers is inversely related to precision. Therefore, when performing calculations using fixed-point numbers, there may be a problem of insufficient display range.
  • accuracy is required, there is a problem that the multiplier used to implement fixed-point number addition occupies a large area in the chip.
  • the neural network operation device may include different types of circuit structures, and different circuit structures are suitable for different operation processes and have different processing efficiencies.
  • the neural network computing device includes a circuit structure of a master-slave architecture. Multiple slave processing circuits perform calculations at the same time, and the main processing circuit obtains the final calculation result after the calculation of all the slave circuits is completed, and the overall calculation efficiency is low.
  • neural network algorithms are more and more widely used. It has been well applied in the fields of image recognition, speech recognition, natural language processing and so on.
  • image recognition speech recognition
  • natural language processing natural language processing
  • the types and number of data operations involved are increasing.
  • the present disclosure proposes a computing device and related products to improve the processing efficiency of the computing device and improve the accuracy of the computing result.
  • a computing device for performing machine learning calculations, the device includes a controller module, an arithmetic module, a data format conversion module, and a data format selection module,
  • the controller module is configured to control the data format conversion module to perform data format conversion on the operation data according to the data conversion format determined by the data format selection module;
  • the operation module is used for operation according to the format-converted data to be operated under the control of the controller module.
  • the controller module is configured to control the data format conversion module to perform data format conversion on the operation data according to the data conversion format determined by the data format selection module, including:
  • the controller module is used to determine whether to perform data format conversion on the data to be calculated according to the data format conversion instruction sent by the data format selection module and the data to be calculated.
  • the data format conversion instruction includes Data format and converted data format;
  • the controller module controls the data format conversion module to perform data format conversion on the operation data.
  • the calculation module includes a plurality of calculation sub-modules, and each calculation sub-module is used to perform calculation on data in a preset data format.
  • the data format conversion module is used to:
  • the sub-module for obtaining data to be calculated is used to obtain the data to be calculated
  • Positioning digit acquisition submodule used to determine positioning digits in the data to be calculated
  • the target digit determination submodule is used to determine the first target digit in the data to be calculated according to the positioning digit, and determine the corresponding to the first target digit in the converted data of the data to be calculated Second target digit;
  • a value determination sub-module configured to determine the value of the second target digit in the converted data according to the value of the first target digit in the data to be calculated
  • the converted data acquisition submodule is configured to obtain the converted data according to the value of the second target digit.
  • the positioning digital acquisition submodule includes:
  • the positioning digit acquisition unit is used to determine the digit where the first 1 in the integer part of the fixed-point number in the binary form is located as the positioning digit when the data format of the data to be calculated is fixed-point.
  • the converted data is an integer in binary form
  • the target digit determination submodule is used to:
  • the N-1th digit to the N/2+1th digit are determined to be the A target number
  • a second target digit corresponding to the first target digit is determined in the converted data.
  • the target digit determination submodule is further configured to: determine the second target digit corresponding to the first target digit in the converted data as the N/2-2 digit To the 0th digit.
  • the converted data includes mantissa digits and power digits
  • the converted data acquisition submodule includes:
  • a mantissa digit value acquiring unit configured to determine the mantissa digit value in the converted data according to the second target digit value
  • a power digit exponent bit acquisition unit used to determine the power digit and exponent digit values in the converted data according to the values on the positioning digits in the data to be calculated;
  • the converted data acquisition unit is configured to obtain the converted data according to the value of the mantissa digit, the value of the power digit, and the value of the exponent digit.
  • the mantissa value acquiring unit is configured to:
  • the mantissa in the converted data is determined according to the value of the second target digits and the preset complement value Numeric value.
  • the power bit exponent bit acquiring unit is configured to:
  • the value of the power bit in the converted data is determined to be 1.
  • the bit width of the fixed-point number is M
  • the bit width of the converted data is N
  • M ⁇ 2N is M
  • the positioning digital acquisition submodule is used to:
  • the first digit in the data to be calculated from high to low is located as the positioning digit, wherein,
  • the specified data format is an integer in an eight-bit binary form.
  • the specified data format includes a power bit and a mantissa bit, the power bit is in a high bit, and the mantissa bit is in a low bit.
  • the data format of the converted data is a fixed-point number in a sixteen-bit binary form
  • the target digit determination submodule is used to:
  • the positioning digit is the Nth digit, determine the N-2th digit to the 0th digit as the first target digit in the data to be calculated;
  • the N-1 digits in the converted data starting from the second digit of the high bit to the low digit are determined as the second target digits in the converted data corresponding to the first target digits.
  • the converted data acquisition submodule is used to:
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit.
  • the converted data acquisition submodule is configured to: set the digits other than the sixteenth digit and the second target digit to 0.
  • the controller module is configured to control the data format conversion module to perform data format conversion on the operation data according to the data conversion format determined by the data format selection module, including:
  • the controller module is used to obtain data to be calculated, a machine learning model, a calculation instruction, and a data conversion format determined by the data format selection module;
  • the controller module is used to control the data format conversion module to perform data format conversion on the operation data to obtain converted data to be operated;
  • the controller module is also used to parse the calculation instruction to obtain a plurality of calculation instructions, and send the plurality of calculation instructions and the converted data to be calculated to the calculation module.
  • a neural network computing device includes one or more computing devices according to any one of the above, and the neural network computing device is used to complete a set of nerves. Network computing.
  • a combined computing device including one or more neural network computing devices according to any one of the above, a universal interconnection interface and other processing devices;
  • the neural network computing device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a neural network chip including:
  • an electronic device including:
  • the controller module is used to control the data format conversion module to perform data format conversion on the operation data according to the data conversion format determined by the data format selection module; Under the control of the controller module, calculation is performed according to the data to be calculated after format conversion.
  • the data format conversion module can transform the bit width of the data to be operated on the premise of maintaining the accuracy of the data, to adapt to different operation requirements.
  • the present disclosure proposes a data processing method, device and related products to improve the processing efficiency of the computing device and improve the accuracy of the computing result.
  • a data processing method including:
  • the positioning digit determine a first target digit in the data to be calculated, and determine a second target digit corresponding to the first target digit in the converted data of the data to be calculated;
  • the converted data is obtained according to the value of the second target digit.
  • determining the positioning digit in the data to be calculated includes:
  • the data format of the data to be calculated is a fixed-point number
  • the first digit of the integer part of the fixed-point number in binary form from high to low is determined as the positioning digit.
  • the converted data is an integer in a binary form
  • it is determined that the second target digit corresponding to the first target digit in the converted data of the data to be calculated includes:
  • the N-1th digit to the N/2+1th digit are determined to be the A target number
  • a second target digit corresponding to the first target digit is determined in the converted data.
  • determining the second target digit corresponding to the first target digit in the converted data includes:
  • the second target digit corresponding to the first target digit in the converted data is determined as the N/2-2th digit to the 0th digit.
  • the converted data includes mantissa digits and power digits
  • obtaining the converted data according to the value of the second target digit includes:
  • the converted data is obtained according to the value of the mantissa digit, the value of the power digit, and the value of the exponent digit.
  • determining the value of the mantissa digit in the converted data according to the value of the second target digit includes:
  • the mantissa in the converted data is determined according to the value of the second target digits and the preset complement value Numeric value.
  • determining the value of the power bit in the converted data according to the value at the positioning digit in the data to be calculated includes:
  • the value of the power bit in the converted data is determined to be 1.
  • the bit width of the fixed-point number is M
  • the bit width of the converted data is N
  • M ⁇ 2N is M
  • determining the positioning digit in the data to be calculated includes:
  • the first digit in the data to be calculated from high to low is located as the positioning digit, wherein,
  • the specified data format is an integer in an eight-bit binary form.
  • the specified data format includes a power bit and a mantissa bit, the power bit is in a high bit, and the mantissa bit is in a low bit.
  • the data format of the converted data is a fixed-point number in a sixteen-bit binary form, and it is determined that in the converted data of the data to be calculated, the first corresponding to the first target digit Two target digits, including:
  • the positioning digit is the Nth digit, determine the N-2th digit to the 0th digit as the first target digit in the data to be calculated;
  • the N-1 digits in the converted data starting from the second digit of the high bit to the low digit are determined as the second target digits in the converted data corresponding to the first target digits.
  • obtaining the converted data according to the values of the second target digits includes:
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit.
  • obtaining the converted data according to the values of the sixteenth digit and the second target digit includes:
  • the digits other than the sixteenth digit and the second target digit are set to 0.
  • a data processing apparatus including:
  • Data to be calculated module used to obtain data to be calculated
  • the positioning digit acquisition module is used to determine the positioning digit in the data to be calculated
  • the target digit determination module is used to determine the first target digit in the data to be calculated according to the positioning digit, and determine the first target digit corresponding to the first target digit in the converted data of the data to be calculated Two target digits;
  • a value determining module configured to determine the value of the second target digit in the converted data according to the value of the first target digit in the data to be calculated
  • the converted data acquisition module is configured to obtain the converted data according to the value of the second target digit.
  • the positioning digital acquisition module includes:
  • the positioning digit acquisition sub-module is used to determine, as the positioning digit, the digit where the first 1 of the integer part of the fixed-point number in the binary form is from high to low when the data format of the data to be calculated is fixed-point.
  • the converted data is an integer in binary form
  • the target digit determination module is configured to:
  • the N-1th digit to the N/2+1th digit are determined to be the A target number
  • a second target digit corresponding to the first target digit is determined in the converted data.
  • the target digit determination module is further configured to: determine the second target digit corresponding to the first target digit in the converted data as the N/2-2 digit to The 0th digit.
  • the converted data includes mantissa digits and power digits
  • the converted data acquisition module includes:
  • the converted data acquisition submodule is configured to obtain the converted data according to the value of the mantissa digit, the value of the power digit, and the value of the exponent digit.
  • the mantissa digit value obtaining submodule is used to:
  • the mantissa in the converted data is determined according to the value of the second target digits and the preset complement value Numeric value.
  • the power bit exponent bit acquisition submodule is used to:
  • the value of the power bit in the converted data is determined to be 1.
  • the bit width of the fixed-point number is M
  • the bit width of the converted data is N
  • M ⁇ 2N is M
  • the positioning digital acquisition module is used to:
  • the first digit in the data to be calculated from high to low is located as the positioning digit, wherein,
  • the specified data format is an integer in an eight-bit binary form.
  • the specified data format includes a power bit and a mantissa bit, the power bit is in a high bit, and the mantissa bit is in a low bit.
  • the data format of the converted data is a fixed-point number in a sixteen-bit binary form
  • the target digit determination module is used to:
  • the positioning digit is the Nth digit, determine the N-2th digit to the 0th digit as the first target digit in the data to be calculated;
  • the N-1 digits in the converted data starting from the second digit of the high bit to the low digit are determined as the second target digits in the converted data corresponding to the first target digits.
  • the converted data acquisition module is used to:
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit.
  • the converted data acquisition module is configured to: set the digits other than the sixteenth digit and the second target digit to 0.
  • a neural network computing device includes one or more data processing devices according to any one of the above, and the neural network computing device is used to complete a set Neural network operation.
  • a combined computing device includes one or more neural network computing devices according to any one of the above items, a general interconnection interface and other processing devices;
  • the neural network computing device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a neural network chip including:
  • an electronic device including:
  • the data to be calculated is obtained; the positioning digits are determined in the data to be calculated; the first target digits are determined in the data to be calculated according to the positioning digits, and the converted data in the data to be calculated is determined
  • the second target digit corresponding to a target digit; the value of the second target digit in the converted data is determined according to the value of the first target digit in the data to be calculated; the converted data is obtained according to the value of the second target digit. Determining the positioning digit and the first target digit according to the data to be calculated can enable the converted data of the data to be calculated to transform the bit width of the data under the premise of maintaining the accuracy of the data and adapt to different calculation needs.
  • the present disclosure proposes a data computing device and related products to improve the processing efficiency of the data computing device and reduce the area occupied by the multiplier in the chip.
  • a data operation device for adding an floating point number the floating point number includes an exponent and an effective number
  • the device includes:
  • the effective number multiplication module is used to multiply the effective number of the first floating point number and the effective number of the second floating point number to obtain the pending effective number;
  • the effective number and exponent determination module is used to obtain the product effective number and the product exponent according to the pending effective number, the first floating point number and the second floating point number;
  • the product determination module is configured to obtain the product of the first floating point number and the second floating point number according to the effective number of the product and the index of the product.
  • the effective number and exponent determination module includes:
  • the effective number determination submodule is used to determine the effective number of the product according to the to-be-determined effective number, the effective number and index of the first floating point number, and the effective number and index of the second floating point number;
  • the index determination submodule is used to determine the product index according to the to-be-determined effective number, the index of the first floating point number, and the index of the second floating point number.
  • the effective number and exponent determination module further includes:
  • a carry judgment submodule used to judge whether the pending valid number has a carry
  • the effective number determination submodule is also used to determine the number of significant non-zero digits of the effective number of the first floating point, the exponent of the first floating point, and the second The maximum non-zero digits of the floating point effective number and the exponent of the second floating point number determine the effective number of the product;
  • the exponent determination sub-module is also used to determine the exponent of the product according to the carry of the pending effective number, the exponent of the first floating point number and the exponent of the second floating point number.
  • the effective number determination submodule includes:
  • a correction value determining unit configured to determine a correction value according to the carry of the pending effective number, the index of the first floating point number, and the index of the second floating point number;
  • the effective number determining unit is used for determining the number of significant non-zero digits of the effective number of the first floating point, the maximum number of non-zero digits of the effective number of the second floating point, and the Correct the value to determine the effective number of the product.
  • the correction value determining unit is configured to subtract the sum of the index obtained by adding the index of the first floating point number and the index of the second floating point number to 1 The carry of the significant number obtains the first difference, and then divides the first difference by 2 to obtain the correction value.
  • the effective number determining unit is configured to convert the maximum non-zero digits of the first floating point number, the second floating point number, the carry of the pending effective number, and the correction The sum of the values is determined as the effective number of the product.
  • the index determination submodule is further configured to subtract the sum obtained by adding the index of the first floating point number and the index of the second floating point number to 1 A second difference value is obtained from the carry of the pending significant number, and the remainder obtained by dividing the second difference value by 2 is determined as the effective number of the product.
  • the floating point number further includes a symbol
  • the device further includes:
  • a product sign determination module configured to determine the sign of the product according to the sign of the first floating point number and the sign of the second floating point number
  • the product determination module is further configured to obtain the product of the first floating point number and the second floating point number according to the effective number of the product, the index of the product, and the sign of the product.
  • the fixed-point number is in 16-bit binary form
  • the floating-point number is in 8-bit binary form.
  • the sign bit in the floating point number is 1 bit
  • the exponent bit is 1 bit
  • the device further includes:
  • the input data conversion module is used to convert the first data into the first floating point number and the second data into the second floating point number, wherein the first data and the second data are fixed point numbers;
  • the output data conversion module is also used to convert the product of the first floating point number and the second floating point number to a fixed point number.
  • the neural network computing device includes one or more of the above data computing devices, and the neural network computing device is used to complete a set of neural network operations.
  • a combined computing device including one or more of the aforementioned neural network computing devices, a universal interconnection interface, and other processing devices;
  • the neural network computing device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a neural network chip including:
  • an electronic device including:
  • the data operation device is used to multiply the floating point number.
  • the data operation device includes: a significant number multiplication module, which is used to multiply the effective number of the first floating point number and the second floating point number Multiplying the effective number of the fixed point number to obtain the pending effective number; the effective number and exponent determination module is used to obtain the effective number of the product according to the pending effective number, the first floating fixed point number and the second floating fixed point number The index of the sum product; the product determination module is used to obtain the product of the first floating point number and the second floating point number according to the effective number of the product and the index of the product.
  • the embodiments of the present disclosure can make the multiplication operation process of floating point numbers efficient and the operation result accurate, and can reduce the area occupied by the multiplier in the chip on the basis of ensuring the data expression range.
  • the present disclosure proposes a data conversion device and related products to improve the expression range of data while ensuring the accuracy of the data.
  • a data conversion device for converting a fixed-point number to a floating-point number, the fixed-point number includes a sign and an effective number, and the device includes:
  • the highest non-zero position determination module used to determine the highest non-zero position digits of the fixed-point number effective number
  • An exponential effective number determining module configured to determine the exponent of the floating point number and the effective number of the floating point number according to the highest non-zero digit and the effective number of the fixed point number;
  • the floating point number determination module obtains the floating point number according to the sign of the fixed point number, the exponent of the floating point number and the effective number of the floating point number.
  • the exponential effective number determination module includes:
  • the exponent determination submodule is used to divide the sum of the highest non-zero digits and 1 by 2 to obtain a remainder, and determine the remainder as the exponent of the floating point number.
  • the exponential effective number determination module includes:
  • the effective number determining submodule is used for determining a displacement value according to the highest non-zero digits, and displacing the effective number of the fixed-point number according to the displacement value to obtain the effective number of the floating-point number.
  • the effective number determination submodule includes:
  • a displacement value determining unit configured to determine the displacement value by adding the sum of the highest non-zero digits to 1 and dividing by 2;
  • the displacement unit is configured to shift the effective number of the fixed-point number to the right by the number of bits of the displacement value to obtain the effective number of the floating-point number.
  • the fixed-point number is in 16-bit binary form
  • the floating-point number is in 8-bit binary form.
  • the sign bit in the floating point number is 1 bit
  • the exponent bit is 1 bit
  • a neural network computing device includes one or more data conversion devices according to any one of the above, and the neural network computing device is used to complete a set Neural network operation.
  • a combined computing device including one or more neural network computing devices according to any one of the above, a universal interconnection interface and other processing devices;
  • the neural network computing device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a neural network chip including:
  • an electronic device including:
  • the data conversion device is used to convert a fixed-point number to a floating-point number, including: a highest non-zero position determination module for determining the highest non-zero position of the fixed-point number effective number; A determining module, used to determine the exponent of the floating point number and the effective number of the floating point number according to the highest non-zero digit and the effective number of the fixed point number; the floating point number determining module The symbol, the exponent of the number of floating points and the effective number of the number of floating points obtain the number of floating points.
  • the highest non-zero position determination module, exponential effective number determination module and floating point number determination module can quickly and accurately convert fixed point numbers into floating point numbers. Compared with the fixed-point number, the floating-point number improves the range of data representation under the premise of ensuring accuracy.
  • 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.
  • the present disclosure proposes a data conversion device and related products to improve the expression range of data while ensuring the accuracy of the data.
  • a data conversion device for converting a floating fixed-point number to a fixed-point number, the device comprising:
  • a fixed point number effective number determination module configured to determine a pending effective number according to the exponent and the effective number of the floating point number
  • the fixed-point number obtaining module determines the fixed-point number according to the symbol of the floating fixed-point number and the valid number to be determined.
  • the fixed point number effective number determination module includes:
  • the highest non-zero digits determining sub-module is used to determine the highest non-zero digits of the effective number of floating points;
  • a displacement value determination sub-module for determining a displacement value according to the exponent of the floating point number and the highest non-zero digit of the effective number of the floating point number;
  • the fixed point number effective number determination submodule is configured to move the effective number of the floating fixed point number according to the displacement value to obtain a pending effective number.
  • the displacement value determining submodule is configured to add a sum of the index of the floating point number, the highest non-zero digit of the floating point number effective number, and 1, Determine the displacement value.
  • the fixed-point number effective number determination submodule is configured to shift the effective number of the floating point number to the left by the number of bits of the displacement value to obtain a pending effective number.
  • the fixed-point number acquisition module includes:
  • An effective number acquisition sub-module for rooting the symbol of the floating fixed-point number and the complement of the pending effective number to obtain the effective number of the fixed-point number;
  • the fixed-point number obtaining submodule is configured to obtain the fixed-point number according to the effective number of the fixed-point number according to the symbol of the floating fixed-point number.
  • the fixed-point number is in 16-bit binary form
  • the floating-point number is in 8-bit binary form.
  • the sign bit in the floating point number is 1 bit
  • the exponent bit is 1 bit
  • the neural network computing device includes one or more of the aforementioned data conversion devices.
  • the neural network computing device is used to complete a set of neural network operations.
  • a combined computing device including one or more neural network computing devices of any of the above, a universal interconnection interface and other processing devices;
  • the neural network computing device interacts with the other processing device to jointly complete the calculation operation specified by the user.
  • a neural network chip including:
  • an electronic device including:
  • a data conversion device is used to convert a floating point number to a fixed point number.
  • the device includes: a fixed point number effective number determination module for determining to be determined according to the exponent and the effective number of the floating point number Effective number; the fixed-point number obtaining module determines the fixed-point number according to the symbol of the floating fixed-point number and the to-be-determined effective number.
  • the data conversion device can quickly and accurately convert the floating point number to a fixed point number. Compared with the fixed-point number, the floating-point number improves the range of data representation under the premise of ensuring accuracy.
  • the present disclosure proposes an instruction processing method, device and related products to improve the efficiency and speed of processing data.
  • an instruction processing apparatus including:
  • the control module is used to parse the received instruction, obtain the operation code and operation domain of the instruction, and determine the data to be processed and the target address required to execute the instruction according to the operation code and the operation domain, And determine the type of data processing corresponding to the instruction;
  • a processing module configured to process the data to be processed according to the data processing type, obtain processed data, and store the processed data in the target address,
  • the operation code is used to indicate the processing required by the instruction to the data, and the processing required to the data includes at least one of data type conversion processing and operation processing,
  • the data processing type includes an initial data type of the data to be processed and a target data type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • control module is further used to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address
  • processing module is further configured to process the data to be processed according to the data processing type and the processing parameter when the processing parameter includes the processing parameter to obtain processed data.
  • the instruction includes at least one of a data type conversion instruction and a calculation instruction
  • the calculation instruction includes at least one of a scalar operation instruction, a vector operation instruction, a matrix operation instruction and a neural network operation instruction, and a data type conversion instruction includes a floating point number conversion instruction, a fixed point number conversion instruction, a floating point number inverse conversion instruction, At least one of the fixed-point reverse conversion instructions,
  • the scalar operation instructions include scalar addition operation instruction, scalar multiplication operation instruction, scalar comparison operation instruction, scalar trigonometric function operation instruction, scalar inverse trigonometric function operation instruction, scalar fetch logarithm operation instruction, scalar fetch exponential operation instruction At least one,
  • the vector operation instructions include vector addition vector operation instruction, vector addition vector operation instruction, vector addition scalar operation instruction, vector dot product operation instruction, vector outer product operation instruction, vector multiply matrix operation instruction, vector multiply vector operation instruction, vector At least one of a multiplication scalar operation instruction, a vector maximum operation instruction, a vector minimum operation instruction, a vector logarithm operation instruction, and a vector exponential operation instruction,
  • the matrix operation instruction includes matrix plus matrix operation instruction, matrix plus scalar operation instruction, matrix multiply matrix operation instruction, matrix multiply vector operation instruction, matrix multiply scalar operation instruction, matrix fetch logarithm operation instruction, matrix fetch exponential operation instruction, matrix At least one of the maximum value calculation instruction, the matrix minimum value calculation instruction, the matrix maximum value instruction for each row, the matrix minimum value instruction for each row, the matrix maximum value instruction for each column, and the matrix minimum value instruction for each column,
  • the neural network operation instructions include at least one of convolution operation instructions, pooling operation instructions, fully connected operation instructions, and activation operation instructions.
  • processing the data to be processed according to the data processing type to obtain the processed data includes:
  • the data processing type when the instruction is a calculation instruction, the data processing type further includes an operation type,
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the processing module includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the initial data type includes any one of a fixed-point data type and a floating-point data type
  • the target data type includes a floating-point data type
  • the initial data type includes a floating-point number data type
  • the target data type includes any one of a fixed-point number data type and a floating-point number data type.
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • An instruction processing sub-module used to parse the instruction to obtain the operation code and operation domain of the instruction
  • a queue storage sub-module which is used to store an instruction queue, the instruction queue including a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed including the instructions
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above instruction processing devices are used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning computing device includes a plurality of the instruction processing devices
  • the plurality of the instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the instruction processing devices interconnect and transmit data through the PCIE bus, a fast external device interconnection bus, to support larger-scale machine learning operations; a plurality of the instruction processing devices share the same control system or have their own A control system; a plurality of the instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 above-mentioned machine learning chip or the above-mentioned board card.
  • an instruction processing method is provided.
  • the method is applied to an instruction processing apparatus, and the method includes:
  • the operation code is used to indicate the processing required by the instruction to the data, and the processing required to the data includes at least one of data type conversion processing and operation processing,
  • the data processing type includes an initial data type of the data to be processed and a target data type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the instruction includes:
  • the data processing type corresponding to the instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the instruction includes:
  • the data processing type corresponding to the instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • determining the data to be processed and the target address required to execute the instruction according to the operation code and the operation domain includes: when the operation domain includes the offset address, according to the data address to be processed and the target address Offset the address to obtain the data to be processed,
  • processing the data to be processed according to the data processing type to obtain processed data includes: when the operation domain includes the processing parameter, according to the data processing type and the processing parameter, the The data to be processed is processed to obtain processed data.
  • the instruction includes at least one of a data type conversion instruction and a calculation instruction
  • the calculation instruction includes at least one of a scalar operation instruction, a vector operation instruction, a matrix operation instruction and a neural network operation instruction, and a data type conversion instruction includes a floating point number conversion instruction, a fixed point number conversion instruction, a floating point number inverse conversion instruction, At least one of the fixed-point reverse conversion instructions,
  • the scalar operation instructions include scalar addition operation instruction, scalar multiplication operation instruction, scalar comparison operation instruction, scalar trigonometric function operation instruction, scalar inverse trigonometric function operation instruction, scalar fetch logarithm operation instruction, scalar fetch exponential operation instruction At least one,
  • the vector operation instructions include vector addition vector operation instruction, vector addition vector operation instruction, vector addition scalar operation instruction, vector dot product operation instruction, vector outer product operation instruction, vector multiply matrix operation instruction, vector multiply vector operation instruction, vector At least one of a multiplication scalar operation instruction, a vector maximum operation instruction, a vector minimum operation instruction, a vector logarithm operation instruction, and a vector exponential operation instruction,
  • the matrix operation instructions include matrix plus matrix operation instructions, matrix plus scalar operation instructions, matrix multiply matrix operation instructions, matrix multiply vector operation instructions, matrix multiply scalar operation instructions, matrix logarithm operation instructions, matrix exponential operation instructions, matrix At least one of the maximum value calculation instruction, the matrix minimum value calculation instruction, the matrix maximum value instruction for each row, the matrix minimum value instruction for each row, the matrix maximum value instruction for each column, and the matrix minimum value instruction for each column,
  • the neural network operation instructions include at least one of convolution operation instructions, pooling operation instructions, fully connected operation instructions, and activation operation instructions.
  • processing the data to be processed according to the data processing type to obtain the processed data includes:
  • the data processing type when the instruction is a calculation instruction, the data processing type further includes an operation type,
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the method further includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the initial data type includes any one of a fixed-point data type and a floating-point data type
  • the target data type includes a floating-point data type
  • the initial data type includes a floating-point number data type
  • the target data type includes any one of a fixed-point number data type and a floating-point number data type.
  • the method further includes: storing the data to be processed,
  • the received instruction is parsed to obtain the operation code and operation domain of the instruction, including:
  • the instruction queue includes a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed includes the instructions
  • the method further includes:
  • 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.
  • the instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received instruction, obtain the operation code and operation domain of the instruction, and determine the target address of the data to be processed required to execute the instruction according to the operation code and operation domain, and determine the type of data processing corresponding to the instruction .
  • the processing module is used to process the data to be processed according to the data processing type, obtain the processed data, and store the processed data in the target address.
  • the instruction processing method, device and related products provided by the embodiments of the present disclosure have a wide range of application, high processing efficiency and fast processing speed for instructions, and can improve the processing efficiency and speed of data.
  • the present disclosure proposes a data type conversion instruction processing method, device, and related products to improve the efficiency and speed of data type conversion processing on data.
  • a data type conversion instruction processing apparatus including:
  • the control module is configured to parse the received data type conversion instruction, obtain the operation code and operation domain of the data type conversion instruction, and determine the execution location of the data type conversion instruction according to the operation code and the operation domain The required data to be processed and the target address, and determining the data processing type corresponding to the data type conversion instruction;
  • a processing module configured to perform data type conversion processing on the data to be processed according to the data processing type, obtain converted data, and store the converted data in the target address
  • the operation code is used to instruct the data type conversion instruction that the processing required for the data is data type conversion processing
  • the data processing type includes an initial data type of the data to be processed and a target data type of the converted data.
  • the initial data type or the target data type is a floating point data type, and the operation domain includes all The data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the data type conversion instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the data type conversion instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes an offset address
  • control module is further configured to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address.
  • the data processing type further includes an initial number of bits and a target number of bits
  • performing data type conversion processing on the data to be processed according to the data processing type to obtain converted data includes:
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • An instruction storage sub-module for storing the data type conversion instruction
  • An instruction processing sub-module which is used to parse the data type conversion instruction to obtain the operation code and operation domain of the data type conversion instruction;
  • a queue storage sub-module which is used to store an instruction queue, the instruction queue including a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed include the data type conversion instructions,
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above-mentioned data type conversion instruction processing devices used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of the data type conversion instruction processing devices
  • the plurality of data type conversion instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the data type conversion instruction processing apparatuses interconnect and transmit data through a fast external device interconnection bus PCIE bus to support larger-scale machine learning operations; a plurality of the data type conversion instruction processing apparatuses share the same
  • the control system may have its own control system; a plurality of the data type conversion instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of data type conversion instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 above-mentioned machine learning chip or the above-mentioned board card.
  • a data type conversion instruction processing method is provided.
  • the method is applied to a data type conversion instruction processing apparatus.
  • the method includes:
  • the operation code is used to instruct the data type conversion instruction that the processing required for the data is data type conversion processing
  • the data processing type includes an initial data type of the data to be processed and a target data type of the converted data.
  • the initial data type or the target data type is a floating point data type, and the operation domain includes all The data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the data type conversion instruction includes:
  • the data processing type corresponding to the data type conversion instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the data type conversion instruction includes:
  • the data processing type corresponding to the data type conversion instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the data type conversion instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes an offset address
  • determining the data to be processed and the target address required to execute the data type conversion instruction according to the operation code and the operation domain includes:
  • the data to be processed is acquired according to the data address to be processed and the offset address.
  • the data processing type further includes an initial number of bits and a target number of bits
  • performing data type conversion processing on the data to be processed according to the data processing type to obtain converted data includes:
  • the method further includes: storing the data to be processed,
  • parsing the received data type conversion instruction to obtain the operation code and operation domain of the data type conversion instruction includes:
  • an instruction queue including a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed include the data type conversion instructions,
  • the method further includes:
  • 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.
  • the data type conversion instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received data type conversion instruction, obtain the operation code and operation domain of the data type conversion instruction, and determine the target address of the data to be processed required to execute the data type conversion instruction according to the operation code and operation domain, Determine the data processing type corresponding to the data type conversion instruction.
  • the processing module is used to perform data type conversion processing on the data to be processed according to the data processing type, obtain converted data, and store the converted data in the target address.
  • the data type conversion instruction processing method, device and related products provided by the embodiments of the present disclosure have a wide range of application, and have high processing efficiency and fast processing speed for instructions, and can improve the processing efficiency and speed of data.
  • the present disclosure proposes a data type conversion instruction processing method, device, and related products to improve the efficiency and speed of data type conversion processing on data.
  • a data type conversion instruction processing apparatus including:
  • the control module is configured to parse the received data type conversion instruction, obtain the operation code and operation domain of the data type conversion instruction, and determine the execution location of the data type conversion instruction according to the operation code and the operation domain The required data to be processed and the target address, and determining the data processing type corresponding to the data type conversion instruction;
  • a processing module configured to perform data type conversion processing on the data to be processed according to the data processing type, obtain converted data, and store the converted data in the target address
  • the operation code is used to instruct the data type conversion instruction that the processing required for the data is data type conversion processing
  • the data processing type includes an initial data type of the data to be processed and a target data type of the converted data.
  • the initial data type or the target data type is a floating point data type, and the operation domain includes all The data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the data type conversion instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the data type conversion instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes an offset address
  • control module is further configured to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address.
  • the data processing type further includes an initial number of bits and a target number of bits
  • performing data type conversion processing on the data to be processed according to the data processing type to obtain converted data includes:
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • An instruction storage sub-module for storing the data type conversion instruction
  • An instruction processing sub-module which is used to parse the data type conversion instruction to obtain the operation code and operation domain of the data type conversion instruction;
  • a queue storage sub-module which is used to store an instruction queue, the instruction queue including a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed include the data type conversion instructions,
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above-mentioned data type conversion instruction processing devices used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of the data type conversion instruction processing devices
  • the plurality of data type conversion instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the data type conversion instruction processing apparatuses interconnect and transmit data through a fast external device interconnection bus PCIE bus to support larger-scale machine learning operations; a plurality of the data type conversion instruction processing apparatuses share the same
  • the control system may have its own control system; a plurality of the data type conversion instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of data type conversion instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 above-mentioned machine learning chip or the above-mentioned board card.
  • a data type conversion instruction processing method is provided.
  • the method is applied to a data type conversion instruction processing apparatus.
  • the method includes:
  • the operation code is used to instruct the data type conversion instruction that the processing required for the data is data type conversion processing
  • the data processing type includes an initial data type of the data to be processed and a target data type of the converted data.
  • the initial data type or the target data type is a floating point data type, and the operation domain includes all The data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the data type conversion instruction includes:
  • the data processing type corresponding to the data type conversion instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the data type conversion instruction includes:
  • the data processing type corresponding to the data type conversion instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the data type conversion instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes an offset address
  • determining the data to be processed and the target address required to execute the data type conversion instruction according to the operation code and the operation domain includes:
  • the data to be processed is acquired according to the data address to be processed and the offset address.
  • the data processing type further includes an initial number of bits and a target number of bits
  • performing data type conversion processing on the data to be processed according to the data processing type to obtain converted data includes:
  • the method further includes: storing the data to be processed,
  • parsing the received data type conversion instruction to obtain the operation code and operation domain of the data type conversion instruction includes:
  • an instruction queue including a plurality of instructions to be executed in order according to the execution order, the plurality of instructions to be executed include the data type conversion instructions,
  • the method further includes:
  • 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.
  • the data type conversion instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received data type conversion instruction, obtain the operation code and operation domain of the data type conversion instruction, and determine the target address of the data to be processed required to execute the data type conversion instruction according to the operation code and operation domain, and Determine the data processing type corresponding to the data type conversion instruction.
  • the processing module is used to perform data type conversion processing on the data to be processed according to the data processing type, obtain converted data, and store the converted data in the target address.
  • the data type conversion instruction processing method, device and related products provided by the embodiments of the present disclosure have a wide range of application, and have high processing efficiency and fast processing speed for the data type conversion instruction, which can improve the data processing efficiency and speed.
  • the present disclosure proposes a scalar operation instruction processing method, device, and related products to improve the efficiency and speed of processing scalar data.
  • a scalar operation instruction processing device including:
  • the control module is used to parse the received scalar operation instruction, obtain the operation code and the operation domain of the scalar operation instruction, and determine the standby required to execute the scalar operation instruction according to the operation code and the operation domain Processing data and target addresses, and determining the data processing type corresponding to the scalar operation instruction;
  • a processing module configured to process the data to be processed according to the data processing type, obtain processed data, and store the processed data in the target address,
  • the operation code is used to instruct the scalar operation instruction to perform processing on data at least including scalar operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the scalar operation instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the scalar operation instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • control module is further used to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address
  • processing module is further configured to process the data to be processed according to the data processing type and the processing parameter when the processing parameter includes the processing parameter to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the processing module includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • Instruction storage sub-module for storing the scalar operation instruction
  • An instruction processing submodule used for parsing the scalar operation instruction to obtain the operation code and operation domain of the scalar operation instruction
  • a queue storage sub-module which is used to store an instruction queue, the instruction queue including a plurality of instructions to be executed in order according to the execution order, and the plurality of instructions to be executed include the scalar operation instructions
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above scalar operation instruction processing devices are used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of the scalar operation instruction processing devices
  • the plurality of the scalar operation instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the scalar operation 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 scalar operation instruction processing devices share the same control system Or have their own control systems; a plurality of the scalar operation instruction processing devices share memory or have their own memories; the interconnection method of the plurality of scalar operation instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 above-mentioned machine learning chip or the above-mentioned board card.
  • a scalar operation instruction processing method is provided.
  • the method is applied to a scalar operation instruction processing device.
  • the method includes:
  • the operation code is used to instruct the scalar operation instruction to perform processing on data at least including scalar operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the scalar operation instruction includes:
  • the data processing type corresponding to the scalar operation instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the scalar operation instruction includes:
  • the data processing type corresponding to the scalar operation instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the scalar operation instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • determining to-be-processed data and a target address required to execute the scalar operation instruction according to the operation code and the operation domain includes: when the operation domain includes the offset address, according to the to-be-processed data address and The offset address, to obtain the data to be processed,
  • processing the data to be processed according to the data processing type to obtain processed data includes: when the operation domain includes the processing parameter, according to the data processing type and the processing parameter, the The data to be processed is processed to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the method further includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the method further includes: storing the data to be processed,
  • parsing the received scalar operation instruction to obtain the operation code and operation domain of the scalar operation instruction includes:
  • the instruction queue including a plurality of instructions to be executed in order according to an execution order, the plurality of instructions to be executed including the scalar operation instruction
  • the method further includes:
  • 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.
  • the scalar operation instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received scalar operation instruction, obtain the operation code and operation domain of the scalar operation instruction, and determine the target address of the data to be processed required to execute the scalar operation instruction according to the operation code and operation domain, and determine the scalar
  • the data processing type corresponding to the operation instruction is used to process the data to be processed according to the data processing type, obtain the processed data, and store the processed data in the target address.
  • the method, device and related products for processing scalar operation instructions provided by the embodiments of the present disclosure have a wide range of applications, and have high processing efficiency and fast processing speed for scalar operation instructions, and can improve the processing efficiency and speed of scalar data.
  • the present disclosure proposes a vector operation instruction processing method, device and related products to improve the efficiency and speed of processing vector data.
  • a vector operation instruction processing apparatus including:
  • the control module is used to parse the received vector operation instruction, obtain the operation code and the operation domain of the vector operation instruction, and determine the standby required to execute the vector operation instruction according to the operation code and the operation domain Processing data and target addresses, and determining the data processing type corresponding to the vector operation instruction;
  • a processing module configured to process the data to be processed according to the data processing type, obtain processed data, and store the processed data in the target address,
  • the operation code is used to instruct the data processing required by the vector operation instruction to include at least vector operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the vector operation instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the vector operation instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • control module is further used to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address
  • processing module is further configured to process the data to be processed according to the data processing type and the processing parameter when the processing parameter includes the processing parameter to obtain processed data.
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the processing module includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • Instruction storage sub-module for storing the vector operation instruction
  • Instruction processing sub-module which is used to analyze the vector operation instruction to obtain the operation code and operation domain of the vector operation instruction
  • a queue storage sub-module is used to store an instruction queue, 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 vector operation instruction,
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above vector operation instruction processing devices are used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of the vector operation instruction processing devices
  • the plurality of the vector operation instruction processing devices can be connected and transmit data through a specific structure
  • a plurality of the vector operation instruction processing devices interconnect and transfer data through a fast external device interconnect bus PCIE bus to support larger-scale machine learning operations; a plurality of the vector operation instruction processing devices share the same control system Or have their own control systems; a plurality of the vector operation instruction processing devices share memory or have their own memories; the interconnection mode of the plurality of vector operation instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 arithmetic 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 above machine learning chip or the board described in the above aspect.
  • a vector operation instruction processing method is provided.
  • the method is applied to a vector operation instruction processing device.
  • the method includes:
  • the operation code is used to instruct the data processing required by the vector operation instruction to include at least vector operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the vector operation instruction includes:
  • the data processing type corresponding to the vector operation instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the vector operation instruction includes:
  • the data processing type corresponding to the vector operation instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the vector operation instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • determining the data to be processed and the target address required to execute the vector operation instruction according to the operation code and the operation domain includes: when the operation domain includes the offset address, according to The offset address, to obtain the data to be processed,
  • processing the data to be processed according to the data processing type to obtain processed data includes: when the operation domain includes the processing parameter, according to the data processing type and the processing parameter, the The data to be processed is processed to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the method further includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the method further includes: storing the data to be processed,
  • analyzing the received vector operation instruction to obtain the operation code and operation domain of the vector operation instruction includes:
  • An instruction queue is stored, 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 vector operation instruction,
  • the method further includes:
  • 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.
  • the vector operation instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to analyze the received vector operation instruction, obtain the operation code and operation domain of the vector operation instruction, and determine the target address of the data to be processed required to execute the vector operation instruction according to the operation code and operation domain, and determine The data processing type corresponding to the operation instruction.
  • the processing module is used to process the data to be processed according to the data processing type, obtain the processed data, and store the processed data in the target address.
  • the vector operation instruction processing method, device and related products provided by the embodiments of the present disclosure have a wide range of application, and have high processing efficiency and fast processing speed for vector operation instructions, and can improve the processing efficiency and speed of vector data.
  • the present disclosure proposes a matrix operation instruction processing method, device and related products to improve the efficiency and speed of processing matrix data.
  • a matrix operation instruction processing device comprising:
  • the control module is used to parse the received matrix operation instruction, obtain the operation code and the operation domain of the matrix operation instruction, and determine the standby required to execute the matrix operation instruction according to the operation code and the operation domain Processing data and target addresses, and determining the data processing type corresponding to the matrix operation instruction;
  • a processing module configured to process the data to be processed according to the data processing type, obtain processed data, and store the processed data in the target address,
  • the operation code is used to instruct the matrix operation instruction to perform processing on data at least including matrix operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the matrix operation instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the matrix operation instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • control module is further used to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address
  • processing module is further configured to process the data to be processed according to the data processing type and the processing parameter when the processing parameter includes the processing parameter to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the processing module includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • An instruction processing sub-module which is used to analyze the matrix operation instruction to obtain the operation code and operation domain of the matrix operation 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 the execution order, and the plurality of instructions to be executed include the matrix operation instruction,
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above matrix operation instruction processing devices are used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of matrix operation instruction processing devices
  • the plurality of matrix operation instruction processing devices may be connected and transmit data through a specific structure
  • a plurality of the matrix operation 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 matrix operation instruction processing devices share the same control system Or have their own control systems; a plurality of the matrix operation instruction processing devices share memory or have their own memories; the interconnection method of the plurality of matrix operation instruction processing devices is an arbitrary interconnection topology.
  • a combined processing device including:
  • 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 upper machine learning chip packaging structure.
  • an electronic device including the above-mentioned machine learning chip or the above-mentioned board card.
  • a matrix operation instruction processing method is provided.
  • the method is applied to a matrix operation instruction processing device.
  • the method includes:
  • the operation code is used to instruct the matrix operation instruction to perform processing on data at least including matrix operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the matrix operation instruction includes:
  • the data processing type corresponding to the matrix operation instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the matrix operation instruction includes:
  • the data processing type corresponding to the matrix operation instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the matrix operation instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • determining the data to be processed and the target address required to execute the matrix operation instruction according to the operation code and the operation domain includes: when the operation domain includes the offset address, according to the data address to be processed and the target address The offset address, to obtain the data to be processed,
  • processing the data to be processed according to the data processing type to obtain processed data includes: when the operation domain includes the processing parameter, according to the data processing type and the processing parameter, the The data to be processed is processed to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the method further includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the method further includes: storing the data to be processed,
  • parsing the received matrix operation instruction to obtain the operation code and operation domain of the matrix operation instruction includes:
  • An instruction queue is stored, 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 matrix operation instruction,
  • the method further includes:
  • 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.
  • the matrix operation instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received matrix operation instruction, obtain the operation code and operation domain of the matrix operation instruction, and determine the target address of the data to be processed required to execute the matrix operation instruction according to the operation code and operation domain, as well as determine the matrix
  • the data processing type corresponding to the operation instruction is used to process the data to be processed according to the data processing type, obtain the processed data, and store the processed data in the target address.
  • the method, device and related products for processing matrix operation instructions provided by the embodiments of the present disclosure have a wide range of application, and have high processing efficiency and fast processing speed for matrix operation instructions, and can improve the processing efficiency and speed of matrix data.
  • the present disclosure proposes a neural network operation instruction processing method, device, and related products to improve the efficiency and speed of performing neural network operation processing on data.
  • a neural network operation instruction processing device includes:
  • the control module is used to analyze the received neural network operation instruction, obtain the operation code and operation domain of the neural network operation instruction, and determine and execute the neural network operation instruction according to the operation code and the operation domain The required data to be processed and the target address, and determining the type of data processing corresponding to the neural network operation instruction;
  • a processing module configured to process the data to be processed according to the data processing type, obtain processed data, and store the processed data in the target address,
  • the operation code is used to instruct the neural network operation instruction to process data required to include at least neural network operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • the control module is further configured to determine the data processing type corresponding to the neural network operation instruction according to the operation domain when the operation domain includes the data processing type.
  • the operation code is also used to indicate the data processing type
  • the control module is further configured to determine the data processing type corresponding to the neural network operation instruction according to the operation code when the operation code is used to indicate the data processing type.
  • the operation domain further includes an input amount
  • control module is further used to obtain the data to be processed corresponding to the input amount from the address of the data to be processed when the input amount is included in the operation domain.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • control module is further used to obtain the data to be processed according to the data address to be processed and the offset address when the operation domain includes the offset address
  • processing module is further configured to process the data to be processed according to the data processing type and the processing parameter when the processing parameter includes the processing parameter to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the processing module includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the device further includes: a storage module, configured to store the data to be processed,
  • control module includes:
  • Instruction storage sub-module for storing the neural network operation instructions
  • Instruction processing sub-module which is used to analyze the neural network operation instruction to obtain the operation code and operation domain of the neural network operation 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 neural network operation instructions,
  • control module also includes:
  • the dependency processing sub-module is used to determine the first pending instruction when there is an association between the first pending instruction among the multiple 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 processing 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 including:
  • One or more of the above neural network operation instruction processing devices are used to obtain data to be processed and control information from other processing devices, and perform specified machine learning operations, and pass the execution results to other processing devices through the I/O interface;
  • the machine learning operation device includes a plurality of the neural network operation instruction processing devices
  • the plurality of the neural network operation instruction processing devices can be connected and transmit data through a specific structure
  • a plurality of the neural network operation 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 neural network operation instruction processing devices share the same
  • the control system may have its own control system; the multiple neural network operation instruction processing devices share memory or have their own memories; the interconnection method of the multiple neural network operation instruction processing devices is any interconnection topology.
  • a combined processing device including:
  • 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 arithmetic 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 upper machine learning chip or the above-mentioned board.
  • a neural network operation instruction processing method is provided.
  • the method is applied to a neural network operation instruction processing device.
  • the method includes:
  • the operation code is used to instruct the neural network operation instruction to process data required to include at least neural network operation processing
  • the data processing type includes an initial data type of the data to be processed, a target data type and an operation type of the processed data, the initial data type or the target data type is a floating point data type,
  • the operation domain includes the data address to be processed and the target address.
  • the operation domain further includes the data processing type
  • determining the data processing type corresponding to the neural network operation instruction includes:
  • the data processing type corresponding to the neural network operation instruction is determined according to the operation domain.
  • the operation code is also used to indicate the data processing type
  • determining the data processing type corresponding to the neural network operation instruction includes:
  • the data processing type corresponding to the neural network operation instruction is determined according to the operation code.
  • the operation domain further includes an input amount
  • determining the data to be processed and the target address required to execute the neural network operation instruction according to the operation code and the operation domain includes:
  • the data to be processed corresponding to the input amount is obtained from the data address to be processed.
  • the operation domain further includes a processing parameter
  • the processing parameter includes any one of an offset address and a processing parameter
  • determining the data to be processed and the target address required to execute the neural network operation instruction according to the operation code and the operation domain includes: according to the data to be processed address when the operation domain includes the offset address And the offset address to obtain the data to be processed,
  • processing the data to be processed according to the data processing type to obtain processed data includes: when the operation domain includes the processing parameter, according to the data processing type and the processing parameter, the The data to be processed is processed to obtain processed data.
  • processing the data to be processed according to the data processing type to obtain processed data includes:
  • operation processing is performed on the converted data to obtain an operation result, and the operation result is determined to be the processed data.
  • the data processing type further includes an initial number of bits and a target number of bits
  • the data type conversion processing is performed on the data to be processed of the initial data type to obtain the converted data of the target data type, including:
  • the method further includes:
  • At least one operator is used to perform an operation corresponding to the operation type.
  • the method further includes: storing the data to be processed,
  • the received neural network operation instruction is analyzed to obtain the operation code and operation domain of the neural network operation instruction, including:
  • An instruction queue is stored, 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 neural network operation instructions,
  • the method further includes:
  • 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.
  • the neural network operation instruction processing method, device and related products provided by the embodiments of the present disclosure include a control module and a processing module.
  • the control module is used to parse the received neural network operation instruction, obtain the operation code and operation domain of the neural network operation instruction, and determine the target address of the data to be processed required to execute the neural network operation instruction according to the operation code and operation domain, and Determine the data processing type corresponding to the neural network operation instructions.
  • the processing module is used to process the data to be processed according to the data processing type, obtain the processed data, and store the processed data in the target address.
  • the neural network operation instruction processing method, device and related products provided by the embodiments of the present disclosure have a wide range of application, high processing efficiency and fast processing speed for the neural network operation instruction, and can improve the data processing efficiency and speed.
  • 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 block diagram of a computing device according to an embodiment of the present disclosure.
  • FIG. 2 shows a block diagram of a computing device according to an embodiment of the present disclosure.
  • FIG. 3 shows a flowchart of a data processing method according to an embodiment of the present disclosure.
  • FIG. 4 shows a flowchart of a data processing method according to an embodiment of the present disclosure.
  • FIG. 5 shows a block diagram of a data processing device according to an embodiment of the present disclosure.
  • FIG. 6 shows a block diagram of a data operation device according to an embodiment of the present disclosure.
  • FIG. 7 shows a block diagram of a data operation device according to an embodiment of the present disclosure.
  • FIG. 8 shows a block diagram of a data operation device according to an embodiment of the present disclosure.
  • FIG. 9 shows a block diagram of a data operation device according to an embodiment of the present disclosure.
  • FIG. 10 shows a block diagram of a data conversion device according to an embodiment of the present disclosure.
  • FIG. 11 shows a block diagram of a data conversion device according to an embodiment of the present disclosure.
  • FIG. 12 shows a block diagram of a data conversion device according to an embodiment of the present disclosure.
  • FIG. 13 shows a block diagram of a data conversion device according to an embodiment of the present disclosure.
  • FIG. 14 shows a block diagram of an instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 15 shows a block diagram of an instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 16 shows a flowchart of an instruction processing method according to an embodiment of the present disclosure.
  • FIG. 17 shows a block diagram of a data type conversion instruction processing apparatus according to an embodiment of the present disclosure.
  • FIG. 18 shows a block diagram of a data type conversion instruction processing device according to an embodiment of the present disclosure.
  • FIG. 19 shows a flowchart of a data type conversion instruction processing method according to an embodiment of the present disclosure.
  • FIG. 20 shows a block diagram of a data type conversion instruction processing device according to an embodiment of the present disclosure.
  • 21 is a block diagram of a data type conversion instruction processing device according to an embodiment of the present disclosure.
  • FIG. 22 shows a flowchart of a data type conversion instruction processing method according to an embodiment of the present disclosure.
  • FIG. 23 shows a block diagram of a scalar operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 24 shows a block diagram of a scalar operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 25 shows a flowchart of a scalar operation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 26 shows a block diagram of a vector operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 27 shows a block diagram of a vector operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 28 shows a flowchart of a vector operation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 29 shows a block diagram of a matrix operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 30 shows a block diagram of a matrix operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 31 shows a flowchart of a matrix operation instruction processing method according to an embodiment of the present disclosure.
  • FIG. 32 shows a block diagram of a neural network operation instruction processing device according to an embodiment of the present disclosure.
  • FIG 33 shows a block diagram of a neural network operation instruction processing device according to an embodiment of the present disclosure.
  • FIG. 34 shows a flowchart of a neural network operation instruction processing method according to an embodiment of the present disclosure.
  • 35a and 35b show block diagrams of a combined processing device according to an embodiment of the present disclosure.
  • 36 shows a schematic structural diagram of a board according to an embodiment of the present disclosure.
  • the embodiments of the present disclosure provide a computing device and related products to improve the processing efficiency of the computing device and improve the accuracy of the computing result.
  • the provided computing device and related products can convert the data to be calculated according to the determined data conversion format, and can calculate the data to be calculated after the format conversion.
  • the conversion can be performed on the premise of maintaining the accuracy of the data
  • the bit width of the data is suitable for different computing needs.
  • FIG. 1 shows a block diagram of a computing device according to an embodiment of the present disclosure. As shown in FIG. 1, the computing device is used to perform machine learning calculations.
  • the device includes a controller module 10, an arithmetic module 20, a data format conversion module 30, and a data format Select module 40,
  • the controller module 10 is used to control the data format conversion module 30 to perform data format conversion on the operation data according to the data conversion format determined by the data format selection module 40;
  • the calculation module 20 is used to perform calculation according to the data to be calculated after format conversion under the control of the controller module 10.
  • the controller module is configured to select the data conversion format determined by the data format selection module, and control the data format conversion module to perform data format conversion on the operation data, which may include:
  • the controller module is used to select the data format conversion instruction and the data to be calculated sent by the module according to the data format, and determine whether to perform data format conversion on the operation data.
  • the data format conversion instruction includes the data format before conversion and the data format after conversion;
  • the controller module controls the data format conversion module to perform data format conversion on the operation data.
  • the operation module may include multiple operation sub-modules, and each operation sub-module is used to perform operation on data in a preset data format.
  • the controller module is used to select the data conversion format determined by the data format selection module, and the control data format conversion module performs data format conversion on the operation data; the operation module is used to convert according to the format under the control of the controller module The data to be calculated after the operation is calculated.
  • the data format conversion module can transform the bit width of the data to be operated on the premise of maintaining the accuracy of the data, to adapt to different operation requirements.
  • FIG. 2 shows a block diagram of a computing device according to an embodiment of the present disclosure.
  • the data format conversion module 30 may include:
  • a sub-module 31 for obtaining data to be calculated is used to obtain data to be calculated
  • the positioning digit acquisition sub-module 32 is used to determine the positioning digit in the data to be calculated
  • the target digit determination sub-module 33 is used to determine the first target digit in the data to be calculated according to the positioning digit and determine the second target digit corresponding to the first target digit in the converted data of the data to be calculated;
  • the value determining sub-module 34 is used to determine the value of the second target digit in the converted data according to the value of the first target digit in the data to be calculated;
  • the converted data acquisition sub-module 35 is used to obtain converted data according to the value of the second target digit.
  • different data to be calculated can be obtained according to different calculation tasks.
  • input neuron data, output neuron data, or weights used for each layer of operations in the neural network can be used as data to be calculated for data conversion.
  • image calculation operations such as denoising, enhancement, and feature extraction
  • the image data can be formatted as data to be calculated.
  • the data input to the chip for calculation or the data stored in the chip for calculation can also be used as data to be calculated for data conversion.
  • the output neuron data of the N-1th layer convolution layer can be received.
  • the neurons of the Nth convolutional layer can use the received neuron data of the N-1th convolutional layer as data to be calculated, and use the converted data and weights and other related data to perform the volume of this layer.
  • the product operation obtains the output neuron data of the Nth convolution layer.
  • the data to be operated may include multiple data formats, for example, the data to be operated may be fixed-point numbers or floating-point numbers.
  • the data to be calculated can be composed of one or more numerical values.
  • the numeric values on multiple digits in the data to be calculated can be converted to obtain the converted data on the data to be calculated Corresponding to the numerical value on multiple digits.
  • One or more digits can be determined as positioning digits in the data to be calculated.
  • the positioning digit can be used to locate the position of the conversion digit in the data to be calculated. For example, according to the positioning digit, the start position, end position, or intermediate position of the digit used for conversion can be determined in the data to be calculated.
  • the first target digit may include one or more digits in the data to be calculated.
  • the second target digit may be one or more digits in the converted data of the data to be calculated.
  • the number of first target digits may be equal to or different from the number of second target digits.
  • the data to be calculated may include ten digits (for example, x 9 , x 8 , x 7 , x 6 , x 5 , x 4 , x 3 , x 3 , x 2 , x 1 , x 0 ).
  • the second digit from the high bit to the low bit in the data to be calculated can be determined as the positioning digit, that is, x 8 can be determined as the positioning digit.
  • the positioning digit may be determined as the first digit in the first target digit, and the first target digit includes five digits. Then, the first target digit in the data to be calculated is (x 8 , x 7 , x 6 , x 5 , x 4 ).
  • the converted data of the data to be calculated can include eight digits, such as y 7 , y 6 , y 5 , y 4 , y 3 , y 2 , y 1 , y 0 , and the converted data can be changed from high to low five
  • the number of digits is determined as the second target digit, and the second target digit is y 7 , y 6 , y 5 , y 4 , y 3 in the converted data.
  • a single digit in the first target digit and a single digit in the second target digit correspond.
  • the numerical value on the corresponding digit in the second target digit can be obtained according to the numerical value on the single digit in the first target digit.
  • the value on a single digit in the first target digit can be directly determined as the value on the corresponding digit in the second target digit.
  • the numerical value on a single digit in the first target digit can also be obtained after the set operation or conversion to obtain the numerical value on the corresponding digit in the second target digit. For example, the value on a single digit in the first target digit can be converted into 0/1 to obtain the value on the corresponding digit in the second target digit.
  • a value on the second target digit can be obtained according to the values on the multiple first target digits, or according to A value at a first target digit yields multiple values at a second target digit. It is also possible to obtain the values on the B second target digits according to the values on the A first target digits, where A and B are not equal. This disclosure does not limit this.
  • the converted data when the number of digits of the converted data is equal to the number of digits of the second target digit, the converted data can be directly obtained according to the value of the second target digit.
  • the remaining digits in the converted data can be filled according to the preset rules, and according to the completed The value in the remaining digits and the value in the second target digit are converted data.
  • the data conversion method in the embodiment of the present disclosure can be used to convert the data to be calculated in different data formats into the converted data in the set data format, and then reuse The converted data is subjected to the operations of each layer in the neural network, and finally the output neuron data of each layer is obtained.
  • the output neuron data of each layer can also be converted into the same data format as the input neuron data of each layer by using the data conversion method in the embodiment of the present disclosure, and output as the input neuron data of the next layer to participate in the operation, to Improve applicability.
  • the input neuron data in a fixed-point format, output neuron data or weights may be converted into other data in a set data format, for example, may be converted into a set number of integers. Therefore, on the premise of ensuring the accuracy requirements of the neural network operation, the range of the data to be operated is increased.
  • input neuron data, output neuron data or weight values in floating-point format may also be converted into other data in a set data format, for example, may be converted into an integer with a set number of bits. Therefore, when there is a large number and a small number in the data to be calculated, the precision of the large number is not enough, and the precision of the small number is redundant, and the calculation accuracy and efficiency of the neural network are improved.
  • the data to be calculated is obtained; the positioning digit is determined in the data to be calculated; the first target digit is determined in the data to be calculated according to the positioning digit, and the converted data in the data to be calculated is determined to be the first The second target digit corresponding to the target digit; the value of the second target digit in the converted data is determined according to the value of the first target digit in the data to be calculated; the converted data is obtained according to the value of the second target digit. Determining the positioning digit and the first target digit according to the data to be calculated can enable the converted data of the data to be calculated to transform the bit width of the data under the premise of maintaining the accuracy of the data and adapt to different calculation needs.
  • the positioning digital acquisition submodule may include:
  • the positioning digit acquisition unit is used to determine the digit where the first 1 in the integer part of the fixed-point number in the binary form is located as the positioning digit when the data format of the data to be calculated is fixed-point.
  • the data format to be calculated may be converted.
  • a fixed-point number integer in sixteen-bit binary form has sixteen digits, and the value on each digit is 0 or 1.
  • the first digit from the high to the low 1 can be determined as the positioning digit, which can represent the starting digit of the 16-bit binary data where the valid value is.
  • the integer of the fixed-point number in the form of 16-bit binary can be expressed as 0001101100000000, and the digits from high to low are x 15 to x 0 in this order . Will be high to low x the first digit 1 is located 12, is determined to be positioned digit.
  • the first digit of the fixed-point integer in a sixteen-bit binary form from high to low can be determined as the positioning digit.
  • the valid numerical value in the data to be operated in fixed-point number format can be accurately located, and used for the subsequent determination of the first target digit to ensure the accuracy of the converted data.
  • the converted data is an integer in binary form
  • the target digit determining sub-module can be used for:
  • the N-1th digit to the N/2+1th digit are determined as the first target digit in the fixed-point number
  • the second target digit corresponding to the first target digit is determined in the converted data.
  • the N-1th digit to the N/2+1th digit in the data to be calculated may be determined as the first target digit.
  • the number of first target digits is also different. Because the value on the first target digit is used to obtain the value on the second target digit of the converted data, the number of the first target digit is related to the number of valid digits in the data to be calculated, and can be applied to data of different sizes to be calculated .
  • the second target digit corresponding to the first target digit in the converted data may be determined as the N/2-2th digit to the 0th digit.
  • the N/2-2th digit to the 0th digit in the converted data of the data to be calculated may be determined as the second target digit corresponding to the first target digit.
  • the N-1th digit in the first target digit corresponds to the N/2-2 digit in the second target digit
  • the N-2 digit in the first target digit corresponds to the N/2 digit in the second target digit -3 digits...until the N/2+1th digit in the first target digit corresponds to the 0th digit in the second target digit.
  • the number of the second target digit is equal to the number of the first target digit, and the value on the first target digit can be completely mapped to the second target digit, so that the converted data can retain the accuracy of the data to be calculated.
  • the target digit determination submodule may also be used to: determine the second target digit corresponding to the first target digit in the converted data as the N/2-2th digit to the 0th digit.
  • the converted data includes mantissa digits and power digits
  • the converted data acquisition submodule may include:
  • the mantissa value acquisition unit is used to determine the mantissa value in the converted data according to the value of the second target number
  • a power digit exponent bit acquisition unit used to determine the power digit and exponent digit values in the converted data according to the values on the positioning digits in the data to be calculated;
  • the converted data acquisition unit is used to obtain converted data according to the value of the mantissa digit, the value of the power digit, and the value of the exponent digit.
  • the value of the N-1th digit in the first target digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target digit can be determined.
  • the value of the N-2th digit is determined as the value of the N/2-3th digit in the second target digit... until the value of the N/2+1th digit in the first target digit is determined as the second target.
  • the numeric value of the 0th digit in the digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target digit can be determined.
  • the value of the N-2th digit is determined as the value of the N/2-3th digit in the second target digit... until the value of the N/2+1th digit in the first target digit is determined as the second target
  • the numeric value of the 0th digit in the digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target
  • the data to be operated is a fixed-point integer in the form of 16-bit binary
  • the converted data is an integer in the form of 8-bit binary.
  • the first target digit that does not correspond to the N/2th digit and the N/2-1th digit.
  • the N/2th digit and the N/2-1th digit can be determined as the power or exponent digits of the converted data according to requirements, respectively.
  • the value from the N/2-2th digit to the 0th digit in the second target digit can be determined as the value of the mantissa digit of the converted data.
  • the values of the N/2th digit and the N/2-1th digit can be determined according to the data characteristics of the data to be calculated and the needs of data conversion.
  • the mantissa digit value acquiring unit may be used for:
  • the value of the mantissa digits in the converted data is determined according to the value of the second target digits and the preset complement value.
  • the power bit exponent bit acquisition unit may be used for:
  • the value of the power bit in the converted data is determined to be 1.
  • bit width of the fixed-point number is M
  • bit width of the converted data is N
  • M ⁇ 2N the bit width of the converted data
  • the integer part of the fixed-point number in the form of sixteen bits can be expressed as 0001101100000000, and the digits from high to low are x 15 to x in order. 0 .
  • the positioning digit is x 12 .
  • the positioning digit N is 12, and N is an even number.
  • the first target digit is from the N-1th digit to the N/2+1th digit: x 11 , x 10 , x 9 , x 8 , x 7 .
  • the second target digit is the N/2-2th digit to the 0th digit: x 4 , x 3 , x 2 , x 1 , x 0 .
  • the value of the second target digit is 10110. Determine that the value of the N/2th digit in the second target digit is 1, and the value of the N/2-1th digit is 0, then the converted data of the data to be calculated can be obtained: 01010110.
  • the (N-1)/2-2th digit to the 0th digit in the converted data of the data to be calculated may be determined as the second target digit corresponding to the first target digit.
  • the N-1th digit in the first target digit corresponds to the (N-1)/2-2th digit in the second target digit
  • the N-2 digit in the first target digit corresponds to the digit in the second target digit
  • the (N-1)/2-3th digit ... until the (N-1)/2+2th digit in the first target digit corresponds to the 0th digit in the second target digit.
  • the number of the second target digit is equal to the number of the first target digit, and the value on the first target digit can be completely mapped to the second target digit, so that the converted data can retain the accuracy of the data to be calculated.
  • the value of the N-1th digit in the first target digit can be determined as the value of the (N-1)/2-2th digit in the second target digit, and the first The value of the N-2th digit in the target digit is determined as the (N-1)/2-3th digit in the second target digit... until the (N-1)/2th in the first target digit The value of +2 digits is determined as the value of the 0th digit in the second target digit.
  • the integer of the fixed-point number in the form of sixteen bits can be expressed as 1011001000000000, and the digits from high to low are in order from x 15 to x0.
  • the positioning digit is x 15 .
  • the positioning digit N is 15, and N is an odd number.
  • the first target digit is from the N-1th digit to the (N-1)/2+2th digit: x 14 , x 13 , x 12 , x 11 , x 10 , x 9 .
  • the second target digit is the (N-1)/2-2 digit to the 0th digit: x 5 , x 4 , x 3 , x 2 , x 1 , x 0 .
  • the value of the second target digit is 011001. Determine that the value of the (N-1)/2th digit in the second target digit is 1, and the value of the (N-1)/2-1th digit is 1, you can get the converted data of the data to be calculated as: 11011001 .
  • the value of the mantissa digit in the converted data is determined according to the value of the second target digit; the value of the power digit and the exponent digit in the converted data is determined according to the value of the positioning digit in the data to be calculated; according to the mantissa digit , The power value, and the exponent value, to obtain the converted data.
  • the positioning digit N can locate the valid digits in the data to be calculated, and the first target digit and the second target digit determined according to the positioning digit N can enable the data to be calculated to be converted to retain the accuracy of the data.
  • the positioning digital acquisition submodule can be used for:
  • the first digit in the data to be calculated from high to low is located as the positioning digit, where,
  • the specified data format is an integer in the form of an eight-bit binary.
  • the specified data format includes power digits and mantissa digits. The power digits are in the high digits and the mantissa digits are in the low digits.
  • the integer in eight-bit binary form may be converted into Perform calculation after a fixed point number, or output to a subsequent calculation device for calculation, so as to increase the flexibility of data conversion in the embodiments of the present disclosure and expand the scope of application.
  • the data format to be operated when the data format of the data to be operated is an integer in eight-bit binary form, the data format to be operated can be converted into a fixed-point integer in sixteen-bit binary form.
  • the converted data has sixteen digits, and the value on each digit is 0 or 1.
  • the first digit from the high bit to the low bit in the first digit can be determined as the positioning digit, which can represent the starting digit in the digit where the valid value in the integer in the eight-bit binary form.
  • the eight-bit binary form is 1010110, and the digits from high to low are x 7 to x 0 in sequence.
  • the digit x 7 where the first 1 from high to low can be determined as the positioning digit.
  • the first digit in the eight-bit integer in the form of high-order to low-order 1 can be determined as the positioning digit.
  • the valid numerical value in the data to be calculated can be accurately located for the subsequent determination of the first target digit to ensure the accuracy of the converted data.
  • the data format of the converted data is a fixed-point number in the form of sixteen-bit binary, and the target number determining sub-module can be used for:
  • the positioning digit is the Nth digit, determine the N-2th digit to the 0th digit as the first target digit in the data to be calculated;
  • the N-1 digits from the second digit in the high-order to low-order digit in the converted data are determined as the second target digit in the converted data corresponding to the first target digit.
  • the first target digit can be determined as the N-2th digit to the 0th digit in the data to be calculated.
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 1010110
  • the positioning digit is x 6 .
  • the first target digit is x 4 , x 3 , x 2 , x 1 , x 0 .
  • the fixed-point number of the converted data is sixteen-bit binary, and the digits from high to low are x 15 to x 0 in sequence.
  • the N-1 digits starting with x 14 can be determined as the second target digit.
  • the N-2th digit in the first target digit of the data to be calculated may correspond to x 14 in the second target digit of the converted data.
  • the N-3th digit in the first target digit of the data to be calculated corresponds to x 13 in the second target digit of the converted data, until the 0th digit in the first target digit of the data to be calculated corresponds to the converted
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 01010110
  • the positioning digit is x 6 .
  • the first target digit is x 4 , x 3 , x 2 , x 1 , x 0 .
  • the second target digits are x 14 , x 13 , x 12 , x 11 , x 10 .
  • the value of the second target digit of the converted data may be directly obtained according to the value of the first target digit of the data to be calculated.
  • the value of the first target digit of the data to be calculated may also be subjected to other processing, for example, after performing 0/1 conversion, the value of the second target digit of the converted data may be obtained. This disclosure does not limit this.
  • the converted data acquisition submodule can be used for:
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit.
  • the value of the sixteenth digit can be determined according to data conversion requirements and data characteristics of the data to be calculated. For example, the value of the sixteenth digit can be determined to be 1.
  • the converted data is a fixed-point number in the form of 16-bit binary.
  • the remaining digits need to be filled in.
  • the positioning digit N of the data to be calculated when the value of the N-1 digit in the data to be calculated is 0, N+1 zeros can be filled in the converted data.
  • the value of the N-1th digit in the data to be calculated is 1, you can fill in N+2 zeros in the converted data.
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 01010110
  • the positioning digit is x 6 .
  • the first target digit is x 4 , x 3 , x 2 , x 1 , x 0 .
  • the second target digits are x 14 , x 13 , x 12 , x 11 , x 10 .
  • the sixteenth digit of the converted data can be determined as 1. Since the value of the N-1th digit in the data to be calculated is 0, 7 zeros are filled, and the converted data is 1101100000000.
  • the N-2th digit to the 0th digit can be determined as the first target digit in the data to be calculated according to the positioning digit N, and the converted data from the high digit to the low digit.
  • the N-1 digits starting from the two digits are determined as the second target digit.
  • the converted data can be obtained according to the value of the second target digit.
  • the positioning digit N can locate the valid digits in the data to be calculated, and the first target digit and the second target digit determined according to the positioning digit N can enable the converted data of the data to be calculated to retain the accuracy of the data to be calculated.
  • the converted data acquisition submodule may be used to: set the digits other than the sixteenth digit and the second target digit to 0.
  • the controller module is configured to select the data conversion format determined by the data format selection module, and control the data format conversion module to perform data format conversion on the operation data, which may include:
  • the controller module is used to obtain the data to be calculated, the machine learning model, the calculation instruction and the data conversion format determined by the data format selection module;
  • the controller module is used to control the data format conversion module to perform data format conversion on the operation data to obtain the converted data to be operated;
  • the controller module is also used to parse the calculation instruction to obtain a plurality of calculation instructions, and send the plurality of calculation instructions and the converted data to be calculated to the calculation module.
  • Embodiments of the present disclosure provide a data processing method, device, and related products, which are used to improve the processing efficiency of a computing device and improve the accuracy of computing results.
  • the data to be calculated is obtained; the positioning digit is determined in the data to be calculated; the first target digit is determined in the data to be calculated according to the positioning digit, and the In the converted data of the data to be calculated, the second target digit corresponding to the first target digit; according to the value of the first target digit in the data to be calculated, determine the value of the second target digit in the converted data; according to the second target digit
  • FIG. 3 shows a flowchart of a data processing method according to an embodiment of the present disclosure. As shown in FIG. 3, the data processing method includes:
  • Step S10 Obtain data to be calculated.
  • different data to be calculated can be obtained according to different calculation tasks.
  • input neuron data, output neuron data, or weights used for each layer of operations in the neural network can be used as data to be calculated.
  • image calculation operations such as denoising, enhancement, and feature extraction
  • the image data can be formatted as data to be calculated.
  • the data input to the chip for calculation or the data stored in the chip for calculation can also be used as data to be calculated for data processing.
  • the output neuron data of the N-1th layer convolution layer can be received.
  • the neurons of the Nth layer convolutional layer can use the received neuron data of the N-1th convolutional layer as data to be operated for data processing, and use the converted data and weights and other relevant data to perform the volume of this layer
  • the product operation obtains the output neuron data of the Nth convolution layer.
  • Step S20 Determine the positioning digits in the data to be calculated.
  • the data to be operated may include multiple data formats, for example, the data to be operated may be fixed-point numbers or floating-point numbers.
  • the data to be calculated can be composed of one or more numerical values.
  • the numerical values on multiple digits in the data to be calculated can be converted to obtain the converted data on the data to be calculated Corresponding to the numerical value on multiple digits.
  • One or more digits can be determined as positioning digits in the data to be calculated.
  • the positioning digit can be used to locate the position of the conversion digit in the data to be calculated. For example, according to the positioning digit, the start position, end position, or intermediate position of the digit used for conversion can be determined in the data to be calculated.
  • Step S30 Determine the first target digit in the data to be calculated according to the positioning digit, and determine the second target digit corresponding to the first target digit in the converted data of the data to be calculated.
  • the first target digit may include one or more digits in the data to be calculated.
  • the second target digit may be one or more digits in the converted data of the data to be calculated.
  • the number of first target digits may be equal to or different from the number of second target digits.
  • the data to be calculated may include ten digits (for example, x9, x8, x7, x6, x5, x4, x3, x3, x2, x1, x0).
  • the second digit from the high bit to the low bit in the data to be calculated can be determined as the positioning digit, that is, x8 can be determined as the positioning digit.
  • the positioning digit may be determined as the first digit in the first target digit, and the first target digit includes five digits. Then the first target digit in the data to be calculated is (x8, x7, x6, x5, x4).
  • the converted data of the data to be calculated can include eight digits, such as y7, y6, y5, y4, y3, y2, y1, and y0.
  • the five digits in the converted data from high to low can be determined as the second target Digits, the second target digit is y7, y6, y5, y4, y3 in the converted data.
  • Step S40 Determine the value of the second target digit in the converted data according to the value of the first target digit in the data to be calculated.
  • a single digit in the first target digit and a single digit in the second target digit correspond.
  • the numerical value on the corresponding digit in the second target digit can be obtained according to the numerical value on the single digit in the first target digit.
  • the value on a single digit in the first target digit can be directly determined as the value on the corresponding digit in the second target digit.
  • the numerical value on a single digit in the first target digit can also be obtained after the set operation or conversion to obtain the numerical value on the corresponding digit in the second target digit. For example, the value on a single digit in the first target digit can be converted into 0/1 to obtain the value on the corresponding digit in the second target digit.
  • a value on the second target digit can be obtained according to the values on the multiple first target digits, or according to A value at a first target digit yields multiple values at a second target digit. It is also possible to obtain the values on the B second target digits according to the values on the A first target digits, where A and B are not equal. This disclosure does not limit this.
  • Step S50 Obtain converted data according to the value of the second target digit.
  • the converted data when the number of digits of the converted data is equal to the number of digits of the second target digit, the converted data can be directly obtained according to the value of the second target digit.
  • the remaining digits in the converted data can be filled according to the preset rules, and according to the completed The value in the remaining digits and the value in the second target digit are converted data.
  • the neural network operation at least one of input neuron data, output neuron data, and weights of each layer operation in the neural network may be used as data to be operated.
  • the data processing method in the embodiment of the present disclosure can be used to convert the data to be calculated in different data formats into the converted data in the set data format and reuse The converted data is subjected to the operations of each layer in the neural network, and finally the output neuron data of each layer is obtained.
  • the output neuron data of each layer can also be converted into the same data format as the input neuron data of each layer by using the data processing method in the embodiment of the present disclosure, and then output as the input neuron data of the next layer to participate in the operation, to Improve applicability.
  • the input neuron data in a fixed-point format, output neuron data or weights may be converted into other data in a set data format, for example, may be converted into a set number of integers. Therefore, on the premise of ensuring the accuracy requirements of the neural network operation, the range of the data to be operated is increased.
  • input neuron data, output neuron data or weight values in floating-point format may also be converted into other data in a set data format, for example, may be converted into an integer with a set number of bits. Therefore, when there is a large number and a small number in the data to be calculated, the precision of the large number is not enough, and the precision of the small number is redundant, and the calculation accuracy and efficiency of the neural network are improved.
  • the data to be calculated is obtained; the positioning digit is determined in the data to be calculated; the first target digit is determined in the data to be calculated according to the positioning digit, and the converted data in the data to be calculated is determined to be the first The second target digit corresponding to the target digit; the value of the second target digit in the converted data is determined according to the value of the first target digit in the data to be calculated; the converted data is obtained according to the value of the second target digit. Determining the positioning digit and the first target digit according to the data to be calculated can enable the converted data of the data to be calculated to transform the bit width of the data under the premise of maintaining the accuracy of the data and adapt to different calculation needs.
  • FIG. 4 shows a flowchart of a data processing method according to an embodiment of the present disclosure.
  • the specified data format is a fixed-point number.
  • step S20 in the data processing method may include:
  • Step S21 When the data format of the data to be calculated is a fixed-point number, the first digit of the integer part of the fixed-point number in the binary form from high to low is determined as the positioning digit.
  • the data format to be calculated may be converted.
  • a fixed-point number integer in sixteen-bit binary form has sixteen digits, and the value on each digit is 0 or 1.
  • the first digit from the high to the low 1 can be determined as the positioning digit, which can represent the starting digit of the 16-bit binary data where the valid value is.
  • the integer of the fixed-point number in the form of 16-bit binary can be expressed as 0001101100000000, and the digits from high to low are in order from x15 to x0.
  • the digit x12 where the first 1 from high to low can be determined as the positioning digit.
  • the first digit of the fixed-point integer in a sixteen-bit binary form from high to low can be determined as the positioning digit.
  • the valid numerical value in the data to be operated in fixed-point number format can be accurately located, and used for the subsequent determination of the first target digit to ensure the accuracy of the converted data.
  • step S30 in the data processing method may include:
  • the N-1th digit to the N/2+1th digit are determined as the first target digit in the fixed-point number.
  • the second target digit corresponding to the first target digit is determined in the converted data.
  • the N-1th digit to the N/2+1th digit in the data to be calculated may be determined as the first target digit.
  • the number of first target digits is also different. Because the value on the first target digit is used to obtain the value on the second target digit of the converted data, the number of the first target digit is related to the number of valid digits in the data to be calculated, and can be applied to data of different sizes to be calculated .
  • the second target digit corresponding to the first target digit in the converted data may be determined as the N/2-2th digit to the 0th digit.
  • the N/2-2th digit to the 0th digit in the converted data of the data to be calculated may be determined as the second target digit corresponding to the first target digit.
  • the N-1th digit in the first target digit corresponds to the N/2-2 digit in the second target digit
  • the N-2 digit in the first target digit corresponds to the N/2 digit in the second target digit -3 digits...until the N/2+1th digit in the first target digit corresponds to the 0th digit in the second target digit.
  • the number of the second target digit is equal to the number of the first target digit, and the value on the first target digit can be completely mapped to the second target digit, so that the converted data can retain the accuracy of the data to be calculated.
  • step S50 in the data processing method may include:
  • the converted data is obtained.
  • bit width of the fixed-point number is M
  • bit width of the converted data is N
  • M ⁇ 2N the bit width of the converted data
  • the value of the first target digit may be determined as the value of the second target digit corresponding to it.
  • the value of the first target digit can also be determined as the value of the second target digit corresponding to it after undergoing 0/1 conversion.
  • the value of the N-1th digit in the first target digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target digit can be determined.
  • the value of the N-2th digit is determined as the value of the N/2-3th digit in the second target digit... until the value of the N/2+1th digit in the first target digit is determined as the second target.
  • the numeric value of the 0th digit in the digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target digit can be determined.
  • the value of the N-2th digit is determined as the value of the N/2-3th digit in the second target digit... until the value of the N/2+1th digit in the first target digit is determined as the second target
  • the numeric value of the 0th digit in the digit can be determined as the value of the N/2-2th digit in the second target digit, and the value in the first target
  • the data to be operated is a fixed-point integer in the form of 16-bit binary
  • the converted data is an integer in the form of 8-bit binary.
  • the first target digit that does not correspond to the N/2th digit and the N/2-1th digit.
  • the N/2th digit and the N/2-1th digit can be determined as the power or exponent digits of the converted data according to requirements, respectively.
  • the value from the N/2-2th digit to the 0th digit in the second target digit can be determined as the value of the mantissa digit of the converted data.
  • the values of the N/2th digit and the N/2-1th digit can be determined according to the data characteristics of the data to be calculated and the needs of data processing.
  • determining the value of the mantissa digit in the converted data according to the value of the second target digit may include:
  • the value of the mantissa digits in the converted data is determined according to the value of the second target digits and the preset complement value.
  • determining the value of the power digit in the converted data according to the value on the positioning digit in the data to be calculated may include:
  • the value of the power bit in the converted data is determined to be 0, or when the value in the positioning digit is odd, the value of the power bit in the converted data is determined to be 1.
  • the integer part of the fixed-point number in the form of sixteen bits can be represented as 0001101100000000, and the digits from high to low are in order from x15 to x0.
  • the positioning digit is x12.
  • the positioning digit N is 12, and N is an even number.
  • the first target digit is the N-1th digit to the N/2+1th digit: x11, x10, x9, x8, x7.
  • the second target digit is the N/2-2th digit to the 0th digit: x4, x3, x2, x1, x0.
  • the value of the second target digit is 10110. Determine that the value of the N/2th digit in the second target digit is 1, and the value of the N/2-1th digit is 0, then the converted data of the data to be calculated can be obtained: 01010110.
  • the (N-1)/2-2th digit to the 0th digit in the converted data of the data to be calculated may be determined as the second target digit corresponding to the first target digit.
  • the N-1th digit in the first target digit corresponds to the (N-1)/2-2th digit in the second target digit
  • the N-2 digit in the first target digit corresponds to the digit in the second target digit
  • the (N-1)/2-3th digit ... until the (N-1)/2+2th digit in the first target digit corresponds to the 0th digit in the second target digit.
  • the number of the second target digit is equal to the number of the first target digit, and the value on the first target digit can be completely mapped to the second target digit, so that the converted data can retain the accuracy of the data to be calculated.
  • the value of the N-1th digit in the first target digit can be determined as the value of the (N-1)/2-2th digit in the second target digit, and the first The value of the N-2th digit in the target digit is determined as the (N-1)/2-3th digit in the second target digit... until the (N-1)/2th in the first target digit The value of +2 digits is determined as the value of the 0th digit in the second target digit.
  • the integer of the fixed-point number in the form of 16-bit binary can be expressed as 1011001000000000, and the digits from high to low are in order from x15 to x0.
  • the positioning digit is x15.
  • the positioning digit N is 15, and N is an odd number.
  • the first target digit is from the N-1th digit to the (N-1)/2+2th digit: x14, x13, x12, x11, x10, x9.
  • the second target digit is the (N-1)/2-2 digit to the 0th digit: x5, x4, x3, x2, x1, x0.
  • the value of the second target digit is 011001. Determine that the value of the (N-1)/2th digit in the second target digit is 1, and the value of the (N-1)/2-1th digit is 1, you can get the converted data of the data to be calculated as: 11011001 .
  • the value of the mantissa digit in the converted data is determined according to the value of the second target digit; the value of the power digit and exponent digit in the converted data is determined according to the value on the positioning digit in the data to be calculated; , The power value, and the exponent value, to obtain the converted data.
  • the positioning digit N can locate the valid digits in the data to be calculated, and the first target digit and the second target digit determined according to the positioning digit N can enable the data to be calculated to be converted to retain the accuracy of the data.
  • step S20 in the data processing method may include:
  • the first digit in the data to be calculated from high to low is located as the positioning digit, where,
  • the specified data format is an integer in the form of an eight-bit binary.
  • the specified data format includes power digits and mantissa digits. The power digits are in the high digits and the mantissa digits are in the low digits.
  • the integer in eight-bit binary form may be converted into Perform calculation after a fixed point number, or output to a subsequent calculation device to perform calculation, so as to increase the flexibility of data processing in the embodiments of the present disclosure and expand the scope of application.
  • the data format to be operated when the data format of the data to be operated is an integer in eight-bit binary form, the data format to be operated can be converted into a fixed-point integer in sixteen-bit binary form.
  • the converted data has sixteen digits, and the value on each digit is 0 or 1.
  • the first digit from the high bit to the low bit in the first digit can be determined as the positioning digit, which can represent the starting digit in the digit where the valid value in the integer in the eight-bit binary form.
  • the eight-bit binary form is 1010110, and the digits from high to low are in order from x7 to x0.
  • the digit x7 where the first 1 from high to low can be determined as the positioning digit.
  • the first digit in the eight-bit integer in the form of high-order to low-order one can be determined as the positioning digit.
  • the valid numerical value in the data to be calculated can be accurately located for the subsequent determination of the first target digit to ensure the accuracy of the converted data.
  • step S30 in the data processing method may include:
  • the positioning digit is the Nth digit, determine the N-2th digit to the 0th digit as the first target digit in the data to be calculated; the N-1 digits in the converted data starting from the second digit of the high digit to the low digit The digit is determined as the second target digit corresponding to the first target digit in the converted data.
  • the first target digit can be determined as the N-2th digit to the 0th digit in the data to be calculated.
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 1010110
  • the positioning digit is x6.
  • the first target digits are x4, x3, x2, x1, x0.
  • the fixed-point number of the converted data is sixteen-bit binary, and the digits from high to low are in order from x15 to x0.
  • the N-1 digits starting with x14 can be determined as the second target digit.
  • the N-2th digit in the first target digit of the data to be calculated may correspond to x14 in the second target digit of the converted data.
  • the N-3th digit in the first target digit of the data to be calculated corresponds to x13 in the second target digit of the converted data, until the 0th digit in the first target digit of the data to be calculated corresponds to the converted data
  • the N-1th digit from the second digit of the second to the second digit of the target is sixteen-bit binary, and the digits from high to low are in order from x15 to x0.
  • the N-1 digits starting with x14 can be determined as the second target digit.
  • the N-2th digit in the first target digit of the data to be calculated may correspond
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 01010110
  • the positioning digit is x6.
  • the first target digits are x4, x3, x2, x1, x0.
  • the second target digits are x14, x13, x12, x11, x10.
  • the value of the second target digit of the converted data may be directly obtained according to the value of the first target digit of the data to be calculated.
  • the value of the first target digit of the data to be calculated may also be subjected to other processing, for example, after performing 0/1 conversion, the value of the second target digit of the converted data may be obtained. This disclosure does not limit this.
  • the converted data obtained according to the values of the second target digits may include:
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit.
  • the value of the sixteenth digit can be determined according to data processing requirements and data characteristics of the data to be calculated. For example, the value of the sixteenth digit can be determined to be 1.
  • the converted data is a fixed-point number in the form of 16-bit binary.
  • the remaining digits need to be filled in.
  • the converted data is obtained according to the values of the sixteenth digit and the second target digit, including:
  • the positioning digit N of the data to be calculated when the value of the N-1 digit in the data to be calculated is 0, N+1 zeros can be filled in the converted data.
  • the value of the N-1th digit in the data to be calculated is 1, you can fill in N+2 zeros in the converted data.
  • the data to be calculated is 86 to be calculated
  • the eight-bit binary form is 01010110
  • the positioning digit is x6.
  • the first target digits are x4, x3, x2, x1, x0.
  • the second target digits are x14, x13, x12, x11, x10.
  • the sixteenth digit of the converted data can be determined as 1. Since the value of the N-1th digit in the data to be calculated is 0, 7 zeros are filled, and the converted data is 1101100000000.
  • the N-2th digit to the 0th digit can be determined as the first target digit in the data to be calculated according to the positioning digit N, and the converted data from the high digit to the low digit.
  • the N-1 digits starting from the two digits are determined as the second target digit.
  • the converted data can be obtained according to the value of the second target digit.
  • the positioning digit N can locate the valid digits in the data to be calculated, and the first target digit and the second target digit determined according to the positioning digit N can enable the converted data of the data to be calculated to retain the accuracy of the data to be calculated.
  • the data processing correspondence relationship table can be formulated according to the method in the above embodiment of the present disclosure.
  • the first column of data from left to right in the data processing correspondence table is the data to be queried, and the second column of data is the converted data of the first column of data.
  • the first column of data is the converted data of the second column of data.
  • the third column of data is the binary form of the first column of data.
  • the fourth column of data is the binary form of the second column of data.
  • the corresponding table of data processing can be queried by querying data to quickly determine the converted data of the data to be calculated, reducing resource consumption and increasing the conversion rate.
  • the data to be calculated is a fixed-point number integer
  • the data to be calculated is a fixed-point integer 192
  • 192 can be queried in the second column, and the corresponding converted data is determined to be 14 in the first column of data.
  • the data to be calculated is a set format integer (for example, an integer in eight-bit binary form)
  • FIG. 5 shows a block diagram of a data processing device according to an embodiment of the present disclosure. As shown in FIG. 5, the data processing device includes:
  • the data-to-be-calculated module 101 is used to obtain data-to-be-operated.
  • the positioning digit acquisition module 201 is used to determine positioning digits in the data to be calculated.
  • the target digit determining module 301 is configured to determine the first target digit in the data to be calculated according to the positioning digit, and determine the second target digit corresponding to the first target digit in the converted data of the data to be calculated.
  • the value determining module 401 is configured to determine the value of the second target digit in the converted data according to the value of the first target digit in the data to be calculated.
  • the converted data acquisition module 501 is used to obtain converted data according to the value of the second target digit.
  • the positioning digital acquisition module may include:
  • the positioning digit acquisition sub-module is used to determine the digit where the first 1 in the integer part of the fixed-point number in binary form is located as the positioning digit when the data format of the data to be calculated is fixed-point.
  • the converted data is an integer in binary form
  • the target digit determination module is used to:
  • the N-1th digit to the N/2+1th digit are determined as the first target digit in the fixed-point number
  • the second target digit corresponding to the first target digit is determined in the converted data.
  • the target digit determination module is further used to: determine the second target digit corresponding to the first target digit in the converted data as the N/2-2th digit to the 0th digit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Complex Calculations (AREA)

Abstract

本公开涉及一种运算方法、装置及相关产品,该装置用于执行机器学习计算,该装置包括控制器模块、运算模块、数据格式转换模块和数据格式选择模块,控制器模块用于根据数据格式选择模块确定的数据转换格式,控制数据格式转换模块对待运算数据进行数据格式转换;运算模块用于在控制器模块的控制下,根据格式转换后的待运算数据进行运算。本公开实施例中的格式转换模块可以在保持数据精度的前提下,变换将待运算数据的位宽,适应不同的运算需求。

Description

运算方法、装置及相关产品 技术领域
本公开涉及计算机技术领域,尤其涉及一种运算方法、装置及相关产品。
背景技术
随着信息技术的不断发展,利用运算装置完成各种运算任务的需求越来越大。
在各种不同的运算任务中,待运算数据不同的数据格式对于运算装置的运算效率和运算精度,会产生不同的影响,不能适应不同运算任务的需求。例如待运算数据的数据格式可以是定点数,定点数对于数值较大的数有较高的精度,对于数值较小的数有较低的精度。对于同样位宽的数,定点数的表示范围和精度负相关。因此,利用定点数来进行运算时,可能会存在表示范围不足的问题。在对精度有要求时,存在用于实现定点数加法的乘法器在芯片中所占的面积较大的问题。
神经网络运算装置可以包括不同类型的电路结构,不同的电路结构适用于不同的运算处理,处理效率也不同。例如,神经网络运算装置包括主从架构的电路结构。多个从处理电路同时进行运算,主处理电路在所有的从电路计算完成后得到最终的运算结果,整体的运算效率低。
并且,随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,所涉及的数据运算种类和数量不断增大。相关技术中,在对标量、向量、矩阵等数据进行算术、逻辑等基本运算或进行神经网络相关的运算(如卷积、池化等运算)、数据类型转换等处理的效率低、速度慢。
发明内容
有鉴于此,本公开提出了一种计算装置及相关产品,用以提高运算装置的处理效率,并提高运算结果的准确率。
根据本公开的一方面,提供了一种计算装置,所述计算装置用于执行机器学习计算,所述装置包括控制器模块、运算模块、数据格式转换模块和数据格式选择模块,
所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换;
所述运算模块用于在所述控制器模块的控制下,根据格式转换后的待运算数据进行运算。
在一种可能的实现方式中,所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换,包括:
所述控制器模块用于根据所述数据格式选择模块发送的数据格式转换指令和所述待运算数据,确定是否对所述待运算数据进行数据格式转换,所述数据格式转换指令包括转换前的数据格式和转换后的数据格式;
当确定对所述待运算数据进行数据格式转换时,所述控制器模块控制所述数据格式转换模块对待运算数据进行数据格式转换。
在一种可能的实现方式中,所述运算模块包括多个运算子模块,各所述运算子模块分别用于对预设的数据格式的数据进行运算。
在一种可能的实现方式中,所述数据格式转换模块用于:
待运算数据获取子模块,用于获取待运算数据;
定位数位获取子模块,用于在待运算数据中确定定位数位;
目标数位确定子模块,用于根据所述定位数位,在所述待运算数据中确定第一目标数位,以及确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位;
数值确定子模块,用于根据所述待运算数据中所述第一目标数位的数值,确定所述转换后数据中所述第二目标数位的数值;
转换后数据获取子模块,用于根据所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,所述定位数位获取子模块,包括:
定位数位获取单元,用于在所述待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,所述转换后数据为二进制形式的整数,所述目标数位确定子模块,用于:
若所述定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为所述定点数中的第一目标数位;
在所述转换后数据中确定与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,所述目标数位确定子模块,还用于:将所述转换后数据中与所述第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,所述转换后的数据包括尾数位和幂次位,所述转换后数据获取子模块,包括:
尾数位数值获取单元,用于根据所述第二目标数位的数值确定所述转换后数据中尾数位的数值;
幂次位指数位获取单元,用于根据所述待运算数据中定位数位上的数值,确定所述转换后数据中幂次位和指数位的数值;
转换后数据获取单元,用于根据所述尾数位的数值、所述幂次位的数值和所述指数位的数值,得到所述转换后的数据。
在一种可能的实现方式中,所述尾数位数值获取单元,用于:
当所述转换后数据的尾数位的位宽大于所述第二目标数位的位宽时,根据所述第二目标数位的数值和预设的补齐数值,确定所述转换后数据中的尾数位的数值。
在一种可能的实现方式中,所述幂次位指数位获取单元,用于:
当所述定位数位上的数值为偶数时,将所述转换后数据中幂次位的数值确定为0,或
当所述定位数位上的数值为奇数时,将所述转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,所述定点数的位宽为M,所述转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,所述定位数位获取子模块,用于:
在所述待运算数据的数据格式为指定数据格式时,将所述待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
所述指定数据格式为八位二进制形式的整数,所述指定数据格式中包括幂次位和尾数位,所述幂次位位于高位,所述尾数位位于低位。
在一种可能的实现方式中,所述转换后数据的数据格式为十六位二进制形式的定点数,所述目标数位确定子模块,用于:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
将所述转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为所述转换后数据中与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,所述转换后数据获取子模块,用于:
确定所述转换后数据中,第十六数位的数值;
根据第十六数位和所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,所述转换后数据获取子模块,用于:将除第十六数位和所述第二目标数位之外的数位设为0。
在一种可能的实现方式中,所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换,包括:
所述控制器模块,用于获取待运算数据、机器学习模型、计算指令以及所述数据格式选择模块确定的数据转换格式;
所述控制器模块,用于控制所述数据格式转换模块对待运算数据进行数据格式转换,得到转换后的待运算数据;
所述控制器模块,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述转换后的待运算数据发送给所述运算模块。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述任一项所述的计算装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述任一项所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的计算装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的计算装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在本公开实施例中,所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换;所述运算模块用于在所述控制器模块的控制下,根据格式转换后的待运算数据进行运算。数据格式转换模块可以在保持数据精度的前提下,变换将待运算数据的位宽,适应不同的运算需求。
有鉴于此,本公开提出了一种数据处理方法、装置及相关产品,用以提高运算装置的处理效率,并提高运算结果的准确率。
根据本公开的一方面,提供了一种数据处理方法,所述方法包括:
获取待运算数据;
在待运算数据中确定定位数位;
根据所述定位数位,在所述待运算数据中确定第一目标数位,以及确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位;
根据所述待运算数据中所述第一目标数位的数值,确定所述转换后数据中所述第二目标数位的数值;
根据所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,在待运算数据中确定定位数位,包括:
在所述待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,所述转换后数据为二进制形式的整数,确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位,包括:
若所述定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为所述定点数中的第一目标数位;
在所述转换后数据中确定与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,在所述转换后数据中确定与所述第一目标数位对应的第二目标数位,包括:
将所述转换后数据中与所述第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,所述转换后的数据包括尾数位和幂次位,根据所述第二目标数位的数值得到所述转换后数据,包括:
根据所述第二目标数位的数值确定所述转换后数据中尾数位的数值;
根据所述待运算数据中定位数位上的数值,确定所述转换后数据中幂次位和指数位的数值;
根据所述尾数位的数值、所述幂次位的数值和所述指数位的数值,得到所述转换后的数据。
在一种可能的实现方式中,根据所述第二目标数位的数值确定所述转换后数据中尾数位的数值,包括:
当所述转换后数据的尾数位的位宽大于所述第二目标数位的位宽时,根据所述第二目标数位的数值和预设的补齐数值,确定所述转换后数据中的尾数位的数值。
在一种可能的实现方式中,根据所述待运算数据中定位数位上的数值,确定所述转换后数据中 幂次位的数值,包括:
当所述定位数位上的数值为偶数时,将所述转换后数据中幂次位的数值确定为0,或
当所述定位数位上的数值为奇数时,将所述转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,所述定点数的位宽为M,所述转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,在待运算数据中确定定位数位,包括:
在所述待运算数据的数据格式为指定数据格式时,将所述待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
所述指定数据格式为八位二进制形式的整数,所述指定数据格式中包括幂次位和尾数位,所述幂次位位于高位,所述尾数位位于低位。
在一种可能的实现方式中,所述转换后数据的数据格式为十六位二进制形式的定点数,确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位,包括:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
将所述转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为所述转换后数据中与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,根据各所述第二目标数位的数值得到所述转换后数据,包括:
确定所述转换后数据中,第十六数位的数值;
根据第十六数位和所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,根据第十六数位和所述第二目标数位的数值得到所述转换后数据,包括:
将除第十六数位和所述第二目标数位之外的数位设为0。
根据本公开的一方面,提供了一种数据处理装置,所述装置包括:
待运算数据获取模块,用于获取待运算数据;
定位数位获取模块,用于在待运算数据中确定定位数位;
目标数位确定模块,用于根据所述定位数位,在所述待运算数据中确定第一目标数位,以及确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位;
数值确定模块,用于根据所述待运算数据中所述第一目标数位的数值,确定所述转换后数据中所述第二目标数位的数值;
转换后数据获取模块,用于根据所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,所述定位数位获取模块,包括:
定位数位获取子模块,用于在所述待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,所述转换后数据为二进制形式的整数,所述目标数位确定模块,用于:
若所述定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为所述定点数中的第一目标数位;
在所述转换后数据中确定与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,所述目标数位确定模块,还用于:将所述转换后数据中与所述第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,所述转换后的数据包括尾数位和幂次位,所述转换后数据获取模块,包括:
尾数位数值获取子模块,用于根据所述第二目标数位的数值确定所述转换后数据中尾数位的数值;
幂次位指数位获取子模块,用于根据所述待运算数据中定位数位上的数值,确定所述转换后数据中幂次位和指数位的数值;
转换后数据获取子模块,用于根据所述尾数位的数值、所述幂次位的数值和所述指数位的数值,得到所述转换后的数据。
在一种可能的实现方式中,所述尾数位数值获取子模块,用于:
当所述转换后数据的尾数位的位宽大于所述第二目标数位的位宽时,根据所述第二目标数位的数值和预设的补齐数值,确定所述转换后数据中的尾数位的数值。
在一种可能的实现方式中,所述幂次位指数位获取子模块,用于:
当所述定位数位上的数值为偶数时,将所述转换后数据中幂次位的数值确定为0,或
当所述定位数位上的数值为奇数时,将所述转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,所述定点数的位宽为M,所述转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,所述定位数位获取模块,用于:
在所述待运算数据的数据格式为指定数据格式时,将所述待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
所述指定数据格式为八位二进制形式的整数,所述指定数据格式中包括幂次位和尾数位,所述幂次位位于高位,所述尾数位位于低位。
在一种可能的实现方式中,所述转换后数据的数据格式为十六位二进制形式的定点数,所述目标数位确定模块,用于:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
将所述转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为所述转换后数据中与所述第一目标数位对应的第二目标数位。
在一种可能的实现方式中,所述转换后数据获取模块,用于:
确定所述转换后数据中,第十六数位的数值;
根据第十六数位和所述第二目标数位的数值得到所述转换后数据。
在一种可能的实现方式中,所述转换后数据获取模块,用于:将除第十六数位和所述第二目标数位之外的数位设为0。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述任一项所述的数据处理装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述任一 项所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的数据处理装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的数据处理装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在本公开实施例中,获取待运算数据;在待运算数据中确定定位数位;根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位;根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值;根据第二目标数位的数值得到转换后数据。根据待运算数据确定定位数位以及第一目标数位,能够使得待运算数据的转换后数据在保持数据精度的前提下,变换数据的位宽,适应不同的运算需求。
有鉴于此,本公开提出了一种数据运算装置及相关产品,用以提高数据运算装置的处理效率,并减少乘法器在芯片中所占的面积。
根据本公开的一方面,提供了一种数据运算装置,所述装置用于浮定点数的加法运算,所述浮定点数包括指数和有效数,所述装置包括:
有效数相乘模块,用于将第一浮定点数的有效数和第二浮定点数的有效数相乘,得到待定有效数;
有效数及指数确定模块,用于根据所述待定有效数、所述第一浮定点数和所述第二浮定点数,得到乘积的有效数和乘积的指数;
乘积确定模块,用于根据所述乘积的有效数和所述乘积的指数,得到所述第一浮定点数和所述第二浮定点数的乘积。
在一种可能的实现方式中,所述有效数及指数确定模块,包括:
有效数确定子模块,用于根据所述待定有效数、所述第一浮定点数的有效数和指数、所述第二浮定点数的有效数和指数,确定乘积的有效数;
指数确定子模块,用于根据所述待定有效数、所述第一浮定点数的指数和所述第二浮定点数的指数,确定乘积的指数。
在一种可能的实现方式中,所述有效数及指数确定模块,还包括:
进位判断子模块,用于判断所述待定有效数是否有进位;
所述有效数确定子模块,还用于根据所述待定有效数的进位、所述第一浮定点数有效数的最大非零位数位、所述第一浮定点数的指数、所述第二浮定点数有效数的最大非零位数位、所述第二浮定 点数的指数,确定乘积的有效数;
所述指数确定子模块,还用于根据所述待定有效数的进位、所述第一浮定点数的指数和所述第二浮定点数的指数,确定乘积的指数。
在一种可能的实现方式中,所述有效数确定子模块,包括:
修正值确定单元,用于根据所述待定有效数的进位、所述第一浮定点数的指数、所述第二浮定点数的指数确定修正值;
有效数确定单元,用于根据所述待定有效数的进位、所述第一浮定点数有效数的最大非零位数位、所述第二浮定点数有效数的最大非零位数位和所述修正值,确定乘积的有效数。
在一种可能的实现方式中,所述修正值确定单元,用于将所述第一浮定点数的指数、所述第二浮定点数的指数和1相加得到的和减去所述待定有效数的进位得到第一差值,再将所述第一差值除以2得到修正值。
在一种可能的实现方式中,所述有效数确定单元,用于将第一浮定点数的最大非零位数位、所述第二浮定点数、所述待定有效数的进位和所述修正值的和,确定为所述乘积的有效数。
在一种可能的实现方式中,所述指数确定子模块,还用于将所述第一浮定点数的指数、所述第二浮定点数的指数和1相加得到的和减去所述待定有效数的进位得到第二差值,并将所述第二差值除以2得到的余数确定为所述乘积的有效数。
在一种可能的实现方式中,所述浮定点数还包括符号,所述装置还包括:
乘积符号确定模块,用于根据所述第一浮定点数的符号和所述第二浮定点数的符号,确定乘积的符号;
所述乘积确定模块,还用于根据所述乘积的有效数、所述乘积的指数和所述乘积的符号,得到所述第一浮定点数和所述第二浮定点数的乘积。
在一种可能的实现方式中,所述定点数为16位二进制形式,所述浮定点数为8位二进制形式。
在一种可能的实现方式中,所述浮定点数中的符号位为1位,指数位为1位。
在一种可能的实现方式中,所述装置还包括:
输入数据转换模块,用于将第一数据转换为第一浮定点数,将第二数据转换为第二浮定点数,其中第一数据和第二数据为定点数;
输出数据转换模块,还用于将第一浮定点数和所述第二浮定点数的乘积转换为定点数。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述数据运算装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的数据运算装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的数据运算装置;或
上述神经网络运算装置;或
上述组合处理装置;或
上述神经网络芯片。
在本公开实施例中,所述数据运算装置用于对浮定点数进行乘法运算,所述数据运算装置包括:有效数相乘模块,用于将第一浮定点数的有效数和第二浮定点数的有效数相乘,得到待定有效数;有效数及指数确定模块,用于根据所述待定有效数、所述第一浮定点数和所述第二浮定点数,得到乘积的有效数和乘积的指数;乘积确定模块,用于根据所述乘积的有效数和所述乘积的指数,得到所述第一浮定点数和所述第二浮定点数的乘积。本公开实施例可以使得浮定点数的乘法运算过程高效、运算结果准确,可以在保证数据表达范围的基础上,减少乘法器在芯片中所占的面积。
有鉴于此,本公开提出了一种数据转换装置及相关产品,用以在保证数据精度的前提下,提高数据的表达范围。
根据本公开的一方面,提供了一种数据转换装置,所述装置用于将定点数转换为浮定点数,所述定点数包括符号和有效数,所述装置包括:
最高非零位确定模块,用于确定所述定点数有效数的最高非零位的数位;
指数有效数确定模块,用于根据所述最高非零位的数位和所述定点数的有效数确定所述浮定点数的指数和所述浮定点数的有效数;
浮定点数确定模块,根据定点数的符号、所述浮定点数的指数和所述浮定点数的有效数,得到所述浮定点数。
在一种可能的实现方式中,所述指数有效数确定模块,包括:
指数确定子模块,用于将所述最高非零位的数位和1相加得到的和除2后取余,得到余数,将所述余数确定为所述浮定点数的指数。
在一种可能的实现方式中,所述指数有效数确定模块,包括:
有效数确定子模块,用于根据所述最高非零位的数位确定位移值,根据所述位移值将所述定点数的有效数进行位移,得到所述浮定点数的有效数。
在一种可能的实现方式中,所述有效数确定子模块,包括:
位移值确定单元,用于将所述最高非零位的数位和1相加得到的和除2得到的结果确定为位移值;
位移单元,用于将所述定点数的有效数向右移动所述位移值的位数,得到所述浮定点数的有效数。
在一种可能的实现方式中,所述定点数为16位二进制形式,所述浮定点数为8位二进制形式。
在一种可能的实现方式中,所述浮定点数中的符号位为1位,指数位为1位。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述任一项所述的数据转换装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述任一项所述的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的数据转换装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的数据转换装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在公开本实施例中,数据转换装置用于将定点数转换为浮定点数,包括:最高非零位确定模块,用于确定所述定点数有效数的最高非零位的数位;指数有效数确定模块,用于根据所述最高非零位的数位和所述定点数的有效数确定所述浮定点数的指数和所述浮定点数的有效数;浮定点数确定模块,根据定点数的符号、所述浮定点数的指数和所述浮定点数的有效数,得到所述浮定点数。最高非零位确定模块、指数有效数确定模块和浮定点数确定模块,可以快速、准确地将定点数转换为浮定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种数据转换装置及相关产品,用以在保证数据精度的前提下,提高数据的表达范围。
根据本公开的一方面,提供了一种数据转换装置,所述装置用于将浮定点数转换为定点数,所述装置包括:
定点数有效数确定模块,用于根据所述浮定点数的指数和有效数,确定待定有效数;
定点数获取模块,根据浮定点数的符号和所述待定有效数,确定所述定点数。
在一种可能的实现方式中,所述定点数有效数确定模块,包括:
最高非零位数位确定子模块,用于确定浮定点数有效数的最高非零位的数位;
位移值确定子模块,用于根据所述浮定点数的指数、所述浮定点数有效数的最高非零位的数位,确定位移值;
定点数有效数确定子模块,用于根据所述位移值移动所述浮定点数的有效数,得到待定有效数。
在一种可能的实现方式中,所述位移值确定子模块,用于将所述浮定点数的指数、所述浮定点数 有效数的最高非零位的数位和1相加得到的和,确定为位移值。
在一种可能的实现方式中,所述定点数有效数确定子模块,用于将所述浮定点数的有效数向左移动所述位移值的位数,得到待定有效数。
在一种可能的实现方式中,所述定点数获取模块,包括:
有效数获取子模块,用于根所述浮定点数的符号和所述待定有效数的补码得到所述定点数的有效数;
定点数获取子模块,用于根据所述浮定点数的符号所述定点数的有效数,得到定点数。
在一种可能的实现方式中,所述定点数为16位二进制形式,所述浮定点数为8位二进制形式。
在一种可能的实现方式中,所述浮定点数中的符号位为1位,指数位为1位。
根据本公开的一方面,提供了一种神经网络运算装置,所述神经网络运算装置包括一个或多个上述数据转换装置,所述神经网络运算装置用于完成设定的神经网络运算。
根据本公开的一方面,提供了一种组合运算装置,所述组合运算装置包括一个或多个上述任一项的神经网络运算装置,通用互联接口和其他处理装置;
所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种神经网络芯片,所述神经网络芯片包括:
上述任一项所述的数据转换装置;或
上述的神经网络运算装置;或
上述的组合处理装置。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括:
上述任一项所述的数据转换装置;或
上述的神经网络运算装置;或
上述的组合处理装置;或
上述的神经网络芯片。
在本公开实施例中,数据转换装置,用于将浮定点数转换为定点数,所述装置包括:定点数有效数确定模块,用于根据所述浮定点数的指数和有效数,确定待定有效数;定点数获取模块,根据浮定点数的符号和所述待定有效数,确定所述定点数。数据转换装置可以将浮定点数快速、准确地转换为定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
有鉴于此,本公开提出了一种指令处理方法、装置及相关产品,以提高对数据进行处理的效率和速度。
根据本公开的一方面,提供了一种指令处理装置,所述装置包括:
控制模块,用于对接收到的指令进行解析,获得所述指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述指令所需的待处理数据和目标地址,以及确定与所述指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述指令对数据所需进行的处理,对数据所需进行的处理包括数据类型转换处理和运算处理中的至少一种,
所述数据处理类型包括所述待处理数据的初始数据类型和所述处理后的数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,所述处理模块,还用于在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,所述指令包括数据类型转换指令和计算指令中的至少一种,
其中,所述计算指令包括标量运算指令、向量运算指令、矩阵运算指令和神经网络运算指令中的至少一种,数据类型转换指令包括浮点数转换指令、定点数转换指令、浮点数反转换指令、定点数反转换指令中的至少一种,
所述标量运算指令包括标量相加运算指令、标量相乘运算指令、标量比较运算指令、标量三角函数运算指令、标量反三角函数运算指令、标量取对数运算指令、标量取指数运算指令中的至少一种,
所述向量运算指令包括向量加向量运算指令、向量逐加向量运算指令、向量加标量运算指令、向量点积运算指令、向量外积运算指令、向量乘矩阵运算指令、向量乘向量运算指令、向量乘标量运算指令、向量取最大值运算指令、向量取最小值运算指令、向量取对数运算指令、向量取指数运算指令中的至少一种,
所述矩阵运算指令包括矩阵加矩阵运算指令、矩阵加标量运算指令、矩阵乘矩阵运算指令、矩阵乘向量运算指令、矩阵乘标量运算指令、矩阵取对数运算指令、矩阵取指数运算指令、矩阵取最大值运算指令、矩阵取最小值运算指令、矩阵取各行最大值指令、矩阵取各行最小值指令、矩阵取各列最大值指令、矩阵取各列最小值运算指令中的至少一种,
所述神经网络运算指令包括卷积运算指令、池化运算指令、全连接运算指令、激活运算指令中的至少一种。
在一种可能的实现方式中,在所述指令为数据类型转换指令时,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,将所述转换后数据确定为所述处理后的数据。
在一种可能的实现方式中,在所述指令为计算指令时,所述数据处理类型还包括运算类型,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述处理模块,包括:
至少一个运算器,用于执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述初始数据类型包括定点数数据类型和浮点数数据类型中的任一种,所述目标数据类型包括浮定点数数据类型;
或者,所述初始数据类型包括浮定点数数据类型,所述目标数据类型包括定点数数据类型和浮点数数据类型中的任一种。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述指令;
指令处理子模块,用于对所述指令进行解析,得到所述指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述指令处理装置时,所述多个所述指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述指令处理装置共享内存或者拥有各自的内存;多个所述指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种指令处理方法,所述方法应用于指令处理装置,所述方法包括:
对接收到的指令进行解析,获得所述指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述指令所需的待处理数据和目标地址,以及确定与所述指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述指令对数据所需进行的处理,对数据所需进行的处理包括数据类型转换处理和运算处理中的至少一种,
所述数据处理类型包括所述待处理数据的初始数据类型和所述处理后的数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,根据所述操作码和所述操作域确定执行所述指令所需的待处理数据和目标地址,包括:在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,所述指令包括数据类型转换指令和计算指令中的至少一种,
其中,所述计算指令包括标量运算指令、向量运算指令、矩阵运算指令和神经网络运算指令中的至少一种,数据类型转换指令包括浮点数转换指令、定点数转换指令、浮点数反转换指令、定点数反转换指令中的至少一种,
所述标量运算指令包括标量相加运算指令、标量相乘运算指令、标量比较运算指令、标量三角函数运算指令、标量反三角函数运算指令、标量取对数运算指令、标量取指数运算指令中的至少一种,
所述向量运算指令包括向量加向量运算指令、向量逐加向量运算指令、向量加标量运算指令、向量点积运算指令、向量外积运算指令、向量乘矩阵运算指令、向量乘向量运算指令、向量乘标量运算指令、向量取最大值运算指令、向量取最小值运算指令、向量取对数运算指令、向量取指数运算指令中的至少一种,
所述矩阵运算指令包括矩阵加矩阵运算指令、矩阵加标量运算指令、矩阵乘矩阵运算指令、矩阵乘向量运算指令、矩阵乘标量运算指令、矩阵取对数运算指令、矩阵取指数运算指令、矩阵取最大值运算指令、矩阵取最小值运算指令、矩阵取各行最大值指令、矩阵取各行最小值指令、矩阵取各列最大值指令、矩阵取各列最小值运算指令中的至少一种,
所述神经网络运算指令包括卷积运算指令、池化运算指令、全连接运算指令、激活运算指令中的至少一种。
在一种可能的实现方式中,在所述指令为数据类型转换指令时,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,将所述转换后数据确定为所述处理后的数据。
在一种可能的实现方式中,在所述指令为计算指令时,所述数据处理类型还包括运算类型,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据, 包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:
利用至少一个运算器执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述初始数据类型包括定点数数据类型和浮点数数据类型中的任一种,所述目标数据类型包括浮定点数数据类型;
或者,所述初始数据类型包括浮定点数数据类型,所述目标数据类型包括定点数数据类型和浮点数数据类型中的任一种。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的指令进行解析,获得所述指令的操作码和操作域,包括:
存储所述指令;
对所述指令进行解析,得到所述指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的指令进行解析,获得指令的操作码和操作域,并根据操作码和操作域确定执行指令所需的待处理数据目标地址,以及确定与指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的指令处理方法、装置及相关产品的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
有鉴于此,本公开提出了一种数据类型转换指令处理方法、装置及相关产品,以提高对数据进行数据类型转换处理的效率和速度。
根据本公开的一方面,提供了一种数据类型转换指令处理装置,所述装置包括:
控制模块,用于对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,以及确定与所述数据类型转换指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,并将所述转换后数据存入所述目标地址中,
其中,所述操作码用于指示所述数据类型转换指令对数据所需进行的处理为数据类型转换处理,
所述数据处理类型包括所述待处理数据的初始数据类型和所述转换后数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述数据类型转换指令;
指令处理子模块,用于对所述数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述数据类型转换指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述数据类型转换指令处理装置时,所述多个所述数据类型转换指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述数据类型转换指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据类型转换指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据类型转换指令处理装置共享内存或者拥有各自的内存;多个所述数据类型转换指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种数据类型转换指令处理方法,所述方法应用于数据类型转换指令处理装置,所述方法包括:
对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,以及确定与所述数据类型转换指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,并将所述转换后数据存入所述目标地址中,
其中,所述操作码用于指示所述数据类型转换指令对数据所需进行的处理为数据类型转换处理,
所述数据处理类型包括所述待处理数据的初始数据类型和所述转换后数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述数据类型转换指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述数据类型转换指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址,
其中,根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,包括:
在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,包括:
存储所述数据类型转换指令;
对所述数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据目标地址,以及确定与数据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种数据类型转换指令处理方法、装置及相关产品,以提高对数据进行 数据类型转换处理的效率和速度。
根据本公开的一方面,提供了一种数据类型转换指令处理装置,所述装置包括:
控制模块,用于对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,以及确定与所述数据类型转换指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,并将所述转换后数据存入所述目标地址中,
其中,所述操作码用于指示所述数据类型转换指令对数据所需进行的处理为数据类型转换处理,
所述数据处理类型包括所述待处理数据的初始数据类型和所述转换后数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述数据类型转换指令;
指令处理子模块,用于对所述数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指 令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述数据类型转换指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述数据类型转换指令处理装置时,所述多个所述数据类型转换指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述数据类型转换指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述数据类型转换指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述数据类型转换指令处理装置共享内存或者拥有各自的内存;多个所述数据类型转换指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种数据类型转换指令处理方法,所述方法应用于数据类型转换指令处理装置,所述方法包括:
对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,以及确定与所述数据类型转换指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,并将所述转换后数据存入所述目标地址中,
其中,所述操作码用于指示所述数据类型转换指令对数据所需进行的处理为数据类型转换处理,
所述数据处理类型包括所述待处理数据的初始数据类型和所述转换后数据的目标数据类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述数据类型转换指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述数据类型转换指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址,
其中,根据所述操作码和所述操作域确定执行所述数据类型转换指令所需的待处理数据和目标地址,包括:
在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,根据所述数据处理类型对所述待处理数据进行数据类型转换处理,得到转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的数据类型转换指令进行解析,获得所述数据类型转换指令的操作码和操作域,包括:
存储所述数据类型转换指令;
对所述数据类型转换指令进行解析,得到所述数据类型转换指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述数据类型转换指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据目标地址,以及确定与数 据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品的适用范围广,对数据类型转换指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种标量运算指令处理方法、装置及相关产品,以提高对标量数据进行处理的效率和速度。
根据本公开的一方面,提供了一种标量运算指令处理装置,所述装置包括:
控制模块,用于对接收到的标量运算指令进行解析,获得所述标量运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量运算指令所需的待处理数据和目标地址,以及确定与所述标量运算指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述标量运算指令对数据所需进行的处理至少包括标量运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,所述处理模块,还用于在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转 换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述处理模块,包括:
至少一个运算器,用于执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述标量运算指令;
指令处理子模块,用于对所述标量运算指令进行解析,得到所述标量运算指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量运算指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述标量运算指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述标量运算指令处理装置时,所述多个所述标量运算指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述标量运算指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述标量运算指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述标量运算指令处理装置共享内存或者拥有各自的内存;多个所述标量运算指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种标量运算指令处理方法,所述方法应用于标量运算指令处理装置,所述方法包括:
对接收到的标量运算指令进行解析,获得所述标量运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述标量运算指令所需的待处理数据和目标地址,以及确定与所述标量运算指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述标量运算指令对数据所需进行的处理至少包括标量运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述标量运算指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述标量运算指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述标量运算指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,根据所述操作码和所述操作域确定执行所述标量运算指令所需的待处理数据和目标地址,包括:在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得 到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:
利用至少一个运算器执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的标量运算指令进行解析,获得所述标量运算指令的操作码和操作域,包括:
存储所述标量运算指令;
对所述标量运算指令进行解析,得到所述标量运算指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述标量运算指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的标量运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,并根据操作码和操作域确定执行标量运算指令所需的待处理数据目标地址,以及确定与标量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的标量运算指令处理方法、装置及相关产品的适用范围广,对标量运算指令的处理效率高、处理速度快,能够提高标量数据的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种向量运算指令处理方法、装置及相关产品,以提高对向量数据进行 处理的效率和速度。
根据本公开的一方面,提供了一种向量运算指令处理装置,所述装置包括:
控制模块,用于对接收到的向量运算指令进行解析,获得所述向量运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述向量运算指令所需的待处理数据和目标地址,以及确定与所述向量运算指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述向量运算指令对数据所需进行的处理至少包括向量运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,所述处理模块,还用于在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述处理模块,包括:
至少一个运算器,用于执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述向量运算指令;
指令处理子模块,用于对所述向量运算指令进行解析,得到所述向量运算指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量运算指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述向量运算指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述向量运算指令处理装置时,所述多个所述向量运算指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述向量运算指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述向量运算指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述向量运算指令处理装置共享内存或者拥有各自的内存;多个所述向量运算指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述一方面所述的板卡。
根据本公开的一方面,提供了一种向量运算指令处理方法,所述方法应用于向量运算指令处理装置,所述方法包括:
对接收到的向量运算指令进行解析,获得所述向量运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述向量运算指令所需的待处理数据和目标地址,以及确定与所述向量运算指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述向量运算指令对数据所需进行的处理至少包括向量运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述向量运算指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述向量运算指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述向量运算指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,根据所述操作码和所述操作域确定执行所述向量运算指令所需的待处理数据和目标地址,包括:在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:
利用至少一个运算器执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的向量运算指令进行解析,获得所述向量运算指令的操作码和操作域,包括:
存储所述向量运算指令;
对所述向量运算指令进行解析,得到所述向量运算指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述向量运算指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的向量运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域,并根据操作码和操作域确定执行向量运算指令所需的待处理数据目标地址,以及确定与向量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的向量运算指令处理方法、装置及相关产品的适用范围广,对向量运算指令的处理效率高、处理速度快,能够提高向量数据的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种矩阵运算指令处理方法、装置及相关产品,以提高对矩阵数据进行处理的效率和速度。
根据本公开的一方面,提供了一种矩阵运算指令处理装置,所述装置包括:
控制模块,用于对接收到的矩阵运算指令进行解析,获得所述矩阵运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述矩阵运算指令所需的待处理数据和目标地址,以及确定与所述矩阵运算指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述矩阵运算指令对数据所需进行的处理至少包括矩阵运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,所述处理模块,还用于在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述处理模块,包括:
至少一个运算器,用于执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述矩阵运算指令;
指令处理子模块,用于对所述矩阵运算指令进行解析,得到所述矩阵运算指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指 令,所述多个待执行指令包括所述矩阵运算指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述矩阵运算指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述矩阵运算指令处理装置时,所述多个所述矩阵运算指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述矩阵运算指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述矩阵运算指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述矩阵运算指令处理装置共享内存或者拥有各自的内存;多个所述矩阵运算指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习络运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上述机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种矩阵运算指令处理方法,所述方法应用于矩阵运算指令处理装置,所述方法包括:
对接收到的矩阵运算指令进行解析,获得所述矩阵运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述矩阵运算指令所需的待处理数据和目标地址,以及确定与所述矩阵运算指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述矩阵运算指令对数据所需进行的处理至少包括矩阵运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运 算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述矩阵运算指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述矩阵运算指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述矩阵运算指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,根据所述操作码和所述操作域确定执行所述矩阵运算指令所需的待处理数据和目标地址,包括:在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:
利用至少一个运算器执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的矩阵运算指令进行解析,获得所述矩阵运算指令的操作码和操作域,包括:
存储所述矩阵运算指令;
对所述矩阵运算指令进行解析,得到所述矩阵运算指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述矩阵运算指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的矩阵运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,并根据操作码和操作域确定执行矩阵运算指令所需的待处理数据目标地址,以及确定与矩阵运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的矩阵运算指令处理方法、装置及相关产品的适用范围广,对矩阵运算指令的处理效率高、处理速度快,能够提高矩阵数据的处理效率和速度。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
有鉴于此,本公开提出了一种神经网络运算指令处理方法、装置及相关产品,以提高对数据进行神经网络运算处理的效率和速度。
根据本公开的一方面,提供了一种神经网络运算指令处理装置,所述装置包括:
控制模块,用于对接收到的神经网络运算指令进行解析,获得所述神经网络运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述神经网络运算指令所需的待处理数据和目标地址,以及确定与所述神经网络运算指令相对应的数据处理类型;
处理模块,用于根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述神经网络运算指令对数据所需进行的处理至少包括神经网络运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
所述控制模块,还用于在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
所述控制模块,还用于在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,所述控制模块还用于在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,所述控制模块,还用于在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,所述处理模块,还用于在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述处理模块,包括:
至少一个运算器,用于执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述待处理数据,
其中,所述控制模块,包括:
指令存储子模块,用于存储所述神经网络运算指令;
指令处理子模块,用于对所述神经网络运算指令进行解析,得到所述神经网络运算指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述神经网络运算指令,
其中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,将所述第一待执行指令缓存在所述指令存储子模块中,在所述第零待执行指令执行完毕后,从所述指令存储子模块中提取所述第一待执行指令发送至所述处理 模块,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
根据本公开的一方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个上述神经网络运算指令处理装置,用于从其他处理装置中获取待处理数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述神经网络运算指令处理装置时,所述多个所述神经网络运算指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述神经网络运算指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述神经网络运算指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述神经网络运算指令处理装置共享内存或者拥有各自的内存;多个所述神经网络运算指令处理装置的互联方式是任意互联拓扑。
根据本公开的一方面,提供了一种组合处理装置,所述装置包括:
上述机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
根据本公开的一方面,提供了一种机器学习芯片,所述机器学习芯片包括上述机器学习运算装置或上述组合处理装置。
根据本公开的一方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
根据本公开的一方面,提供了一种板卡,该板卡包括上述机器学习芯片封装结构。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括上机器学习芯片或上述板卡。
根据本公开的一方面,提供了一种神经网络运算指令处理方法,所述方法应用于神经网络运算指令处理装置,所述方法包括:
对接收到的神经网络运算指令进行解析,获得所述神经网络运算指令的操作码和操作域,并根据所述操作码和所述操作域确定执行所述神经网络运算指令所需的待处理数据和目标地址,以及确定与所述神经网络运算指令相对应的数据处理类型;
根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,并将所述处理后的数据存入所述目标地址中,
其中,所述操作码用于指示所述神经网络运算指令对数据所需进行的处理至少包括神经网络运算处理,
所述数据处理类型包括所述待处理数据的初始数据类型、所述处理后的数据的目标数据类型和运算类型,所述初始数据类型或所述目标数据类型为浮定点数数据类型,
所述操作域包括所述待处理数据地址和所述目标地址。
在一种可能的实现方式中,所述操作域还包括所述数据处理类型,
其中,确定与所述神经网络运算指令相对应的数据处理类型,包括:
在所述操作域包括所述数据处理类型时,根据所述操作域确定与所述神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作码还用于指示所述数据处理类型,
其中,确定与所述神经网络运算指令相对应的数据处理类型,包括:
在所述操作码用于指示所述数据处理类型时,根据所述操作码确定与所述神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,所述操作域还包括输入量,
其中,根据所述操作码和所述操作域确定执行所述神经网络运算指令所需的待处理数据和目标地址,包括:
在所述操作域中包括输入量时,从所述待处理数据地址中获取与所述输入量相对应的待处理数据。
在一种可能的实现方式中,所述操作域还包括处理参数,所述处理参数包括偏移地址和处理参数中的任一种,
其中,根据所述操作码和所述操作域确定执行所述神经网络运算指令所需的待处理数据和目标地址,包括:在所述操作域包括所述偏移地址时,根据待处理数据地址和所述偏移地址,获取所述待处理数据,
其中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:在所述操作域包括所述处理参数时,根据所述数据处理类型和所述处理参数,对所述待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据所述数据处理类型对所述待处理数据进行处理,得到处理后的数据,包括:
在所述初始数据类型与所述目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据所述运算类型,对所述转换后数据进行运算处理,得到运算结果,并将所述运算结果确定为所述处理后的数据。
在一种可能的实现方式中,所述数据处理类型还包括初始位数和目标位数,
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,所述方法还包括:
利用至少一个运算器执行与所述运算类型相对应的运算。
在一种可能的实现方式中,所述方法还包括:存储所述待处理数据,
其中,对接收到的神经网络运算指令进行解析,获得所述神经网络运算指令的操作码和操作域,包括:
存储所述神经网络运算指令;
对所述神经网络运算指令进行解析,得到所述神经网络运算指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个待执行指令,所述多个待执行指令包括所述神经网络运算指令,
其中,所述方法还包括:
在确定所述多个待执行指令中的第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系时,缓存所述第一待执行指令,并在确定所述第零待执行指令执行完毕后,控制进行所述第一待执行指令的执行,
其中,所述第一待执行指令与所述第一待执行指令之前的第零待执行指令存在关联关系包括:
存储所述第一待执行指令所需数据的第一存储地址区间与存储所述第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
本公开实施例所提供的神经网络运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的神经网络运算指令进行解析,获得神经网络运算指令的操作码和操作域,并根据操作码和操作域确定执行神经网络运算指令所需的待处理数据目标地址,以及确定与神经网络运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的神经网络运算指令处理方法、装置及相关产品的适用范围广,对神经网络运算指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的计算装置的框图。
图2示出根据本公开一实施例的计算装置的框图。
图3示出根据本公开一实施例的数据处理方法的流程图。
图4示出根据本公开一实施例的数据处理方法的流程图。
图5示出根据本公开一实施例的数据处理装置的框图。
图6示出根据本公开一实施例的数据运算装置的框图。
图7示出根据本公开一实施例的数据运算装置的框图。
图8示出根据本公开一实施例的数据运算装置的框图。
图9示出根据本公开一实施例的数据运算装置的框图。
图10示出根据本公开一实施例的数据转换装置的框图。
图11示出根据本公开一实施例的数据转换装置的框图。
图12示出根据本公开一实施例的数据转换装置的框图。
图13示出根据本公开一实施例的数据转换装置的框图。
图14示出根据本公开一实施例的指令处理装置的框图。
图15示出根据本公开一实施例的指令处理装置的框图。
图16示出根据本公开一实施例的指令处理方法的流程图。
图17示出根据本公开一实施例的数据类型转换指令处理装置的框图。
图18示出根据本公开一实施例的数据类型转换指令处理装置的框图。
图19示出根据本公开一实施例的数据类型转换指令处理方法的流程图。
图20示出根据本公开一实施例的数据类型转换指令处理装置的框图。
图21示出根据本公开一实施例的数据类型转换指令处理装置的框图。
图22示出根据本公开一实施例的数据类型转换指令处理方法的流程图。
图23示出根据本公开一实施例的标量运算指令处理装置的框图。
图24示出根据本公开一实施例的标量运算指令处理装置的框图。
图25示出根据本公开一实施例的标量运算指令处理方法的流程图。
图26示出根据本公开一实施例的向量运算指令处理装置的框图。
图27示出根据本公开一实施例的向量运算指令处理装置的框图。
图28示出根据本公开一实施例的向量运算指令处理方法的流程图。
图29示出根据本公开一实施例的矩阵运算指令处理装置的框图。
图30示出根据本公开一实施例的矩阵运算指令处理装置的框图。
图31示出根据本公开一实施例的矩阵运算指令处理方法的流程图。
图32示出根据本公开一实施例的神经网络运算指令处理装置的框图。
图33示出根据本公开一实施例的神经网络运算指令处理装置的框图。
图34示出根据本公开一实施例的神经网络运算指令处理方法的流程图。
图35a、图35b示出根据本公开一实施例的组合处理装置的框图。
图36示出根据本公开一实施例的板卡的结构示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人 员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
本公开实施例提供了一种计算装置及相关产品,用以提高运算装置的处理效率,并提高运算结果的准确率。所提供的计算装置及相关产品,能够根据确定的数据转换格式,对待运算数据进行数据格式转换,并对格式转换后的待运算数据进行运算,可以在保持数据精度的前提下,变换将待运算数据的位宽,适应不同的运算需求。
图1示出根据本公开一实施例的计算装置的框图,如图1所示,计算装置用于执行机器学习计算,装置包括控制器模块10、运算模块20、数据格式转换模块30和数据格式选择模块40,
控制器模块10用于根据数据格式选择模块40确定的数据转换格式,控制数据格式转换模块30对待运算数据进行数据格式转换;
运算模块20用于在控制器模块10的控制下,根据格式转换后的待运算数据进行运算。
在一种可能的实现方式中,控制器模块用于根据数据格式选择模块确定的数据转换格式,控制数据格式转换模块对待运算数据进行数据格式转换,可以包括:
控制器模块用于根据数据格式选择模块发送的数据格式转换指令和待运算数据,确定是否对待运算数据进行数据格式转换,数据格式转换指令包括转换前的数据格式和转换后的数据格式;
当确定对待运算数据进行数据格式转换时,控制器模块控制数据格式转换模块对待运算数据进行数据格式转换。
在一种可能的实现方式中,运算模块可以包括多个运算子模块,各运算子模块分别用于对预设的数据格式的数据进行运算。
在本实施例中,控制器模块用于根据数据格式选择模块确定的数据转换格式,控制数据格式转换模块对待运算数据进行数据格式转换;运算模块用于在控制器模块的控制下,根据格式转换后的待运算数据进行运算。数据格式转换模块可以在保持数据精度的前提下,变换将待运算数据的位宽,适应不同的运算需求。
图2示出根据本公开一实施例的计算装置的框图,如图2所示,数据格式转换模块30可以包括:
待运算数据获取子模块31,用于获取待运算数据;
定位数位获取子模块32,用于在待运算数据中确定定位数位;
目标数位确定子模块33,用于根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位;
数值确定子模块34,用于根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值;
转换后数据获取子模块35,用于根据第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,根据运算任务的不同可以获取不同的待运算数据。例如,在神经网络运算中,用于神经网络中各层运算的输入神经元数据、输出神经元数据或权值,都可以作为待运算数据进行数据转换。在对图像进行去噪声、增强、提取特征等各种图像运算的运算中,可以将图像数据作为待运算数据进行格式转换。在基于芯片的运算任务中,输入芯片中用于运算的数据,或存储在芯片中用于运算的数据,也可以作为待运算数据进行数据转换。
例如,对于神经网络中的第N层卷积层,可以接收第N-1层卷积层的输出神经元数据。第N层卷积层的神经元可以将接收到的第N-1层卷积层的输出神经元数据作为待运算数据进行数据转换,并利用转换后数据和权重等相关数据执行本层的卷积运算,得到第N层卷积层的输出神经元数据。
在一种可能的实现方式中,待运算数据可以包括多种数据格式,例如待运算数据可以为定点数或浮点数。待运算数据可以由一个或多个数位上的数值组成。对于本公开实施例中的数据转换方法,在确定待运算数据的数据格式为指定数据格式时,可以将待运算数据中的多个数位上的数值进行转换,得到待运算数据的转换后数据上与之对应的多个数位上的数值。可以在待运算数据中确定其中一个或多个数位为定位数位。定位数位可以用于在待运算数据中定位出用于转换的数位的位置。例如,根据定位数位,可以在待运算数据中确定出用于转换的数位的开始位置、结束位置或中间位置等。
在一种可能的实现方式中,第一目标数位可以包括待运算数据中的一个或多个数位。第二目标数位可以为待运算数据的转换后数据中的一个或多个数位。第一目标数位的数量可以与第二目标数位的数量相等或不等。
例如,待运算数据可以包括十个数位(例如x 9,x 8,x 7,x 6,x 5,x 4,x 3,x 3,x 2,x 1,x 0)。可以将待运算数据中由高位至低位的第二个数位,确定为定位数位,即可以将x 8确定为定位数位。可以将定位数位确定为第一目标数位中的第一个数位,且第一目标数位包括五个数位。则在待运算数据中的第一目标数位为(x 8,x 7,x 6,x 5,x 4)。待运算数据的转换后数据可以包括八位数位,例如y 7,y 6,y 5,y 4,y 3,y 2,y 1,y 0,可以将转换后数据中由高位至低位的五个数位,确定为第二目标数位,第二目标数位为转换后数据中的y 7,y 6,y 5,y 4,y 3
在一种可能的实现方式中,当第一目标数位的数量与第二目标数位的数量相等时,可以将第一目标数位中的单个数位与第二目标数位中的单个数位之间进行一一对应。可以根据第一目标数位中单个数位上的数值,得到第二目标数位中与之对应的数位上的数值。可以将第一目标数位中单个数位上的数值,直接确定为第二目标数位中与之对应的数位上的数值。也可以将第一目标数位中单个数位上的数值,经过设定的运算或变换后,得到第二目标数位中与之对应的数位上的数值。例如,可以将第一目标数位中的单个数位上的值进行0/1转换,得到第二目标数位中与之对应的数位上的数值。
在一种可能的实现方式中,当第一目标数位的数量与第二目标数位的数量不相等时,可以根据多个第一目标数位上的数值得到一个第二目标数位上的数值,或根据一个第一目标数位上的数值得到多个第二目标数位上的数值。也可以根据A个第一目标数位上的数值得到B个第二目标数位上的数值,其中,A与B不等。本公开对此不做限定。
在一种可能的实现方式中,当转换后数据的数位数量,等于第二目标数位的数位数量时,可以根据第二目标数位的数值,直接得到转换后数据。
在一种可能的实现方式中,当转换后数据的数位数量,大于第二目标数位的数量数量时,可以根据预设的规则补齐转换后数据中剩余数位上的数值,并根据补齐的剩余数位上的数值和第二目标数位上的数值,得到转换后数据。
在一种可能的实现方式中,在神经网络运算中,可以将神经网络中各层运算的输入神经元数据、输出神经元数据和权值中的至少一种作为待运算数据。可以根据神经网络的运算任务的不同以及待运算数据的自身特征,利用本公开实施例中的数据转换方法,将不同数据格式的待运算数据,转换为设 定数据格式的转换后数据,再利用转换后数据进行神经网络中各层的运算,最终得到各层的输出神经元数据。各层的输出神经元数据也可以利用本公开实施例中的数据转换方法,转换为与各层的输入神经元数据相同的数据格式后输出,作为下一层的输入神经元数据参与运算,以提高适用性。
在一种可能的实现方式中,可以将定点数格式的输入神经元数据、输出神经元数据或权值,转换为其他设定数据格式的数据,例如可以转换为设定位数的整数。从而在保证神经网络运算精度需求的前提下,提高待运算数据的表示范围。
在一种可能的实现方式中,也可以将浮点格式的输入神经元数据、输出神经元数据或权值,转换为其他设定数据格式的数据,例如可以转换为设定位数的整数。从而解决待运算数据同时存在大数和小数的情况下,大数精度不够,小数精度冗余的情况,提高神经网络的运算精度和运算效率。
在本实施例中,获取待运算数据;在待运算数据中确定定位数位;根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位;根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值;根据第二目标数位的数值得到转换后数据。根据待运算数据确定定位数位以及第一目标数位,能够使得待运算数据的转换后数据在保持数据精度的前提下,变换数据的位宽,适应不同的运算需求。
在一种可能的实现方式中,定位数位获取子模块,可以包括:
定位数位获取单元,用于在待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,当待运算数据的数据格式为定点数时,可以将待运算数据进行数据格式的转换。十六位二进制形式的定点数整数有十六个数位,各数位上的数值为0或1。可以在十六位二进制定点数的整数中,将由高位至低位第一个1所在的数位确定为定位数位,可以代表十六位的二进制的数据中有效数值所在的数位中的起始数位。
例如,当待运算数据为定点数整数部分为6912时,十六位二进制形式的定点数的整数可以表示为0001101100000000,由高位到低位的数位依次为x 15至x 0。可以将由高位至低位第一个1所在的数位x 12,确定为定位数位。
在本实施例中,可以将十六位二进制形式的定点数整数中由高位至低位第一个1所在的数位,确定为定位数位。可以准确将定点数格式的待运算数据中的有效数值精确地定位出来,用于后续第一目标数位的确定,保证转换后数据的准确度。
在一种可能的实现方式中,转换后数据为二进制形式的整数,目标数位确定子模块,可以用于:
若定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为定点数中的第一目标数位;
在转换后数据中确定与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,当确定出的定位数位N为偶数时,可以将待运算数据中第N-1数位至第N/2+1数位确定为第一目标数位。根据N的取值不同,第一目标数位的数量也不同。由于第一目标数位上的数值,用于得到转换后数据的第二目标数位上的数值,第一目标数位的数量与待运算数据中有效数位的数量相关,可以适用于不同大小的待运算数据。
在一种可能的实现方式中,可以将转换后数据中与第一目标数位对应的第二目标数位确定为第 N/2-2数位至第0数位。
在一种可能的实现方式中,可以将待运算数据的转换后数据中的第N/2-2数位至第0数位,确定为与第一目标数位对应的第二目标数位。其中,第一目标数位中的第N-1数位对应第二目标数位中的第N/2-2数位,第一目标数位中的第N-2数位对应第二目标数位中的第N/2-3数位……直至第一目标数位中的第N/2+1数位对应第二目标数位中的第0数位。第二目标数位的数量和第一目标数位的数量相等,第一目标数位上的数值可以完整的映射至第二目标数位,使得转换后数据能够保留待运算数据的精度。
在一种可能的实现方式中,目标数位确定子模块,还可以用于:将转换后数据中与第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,转换后的数据包括尾数位和幂次位,转换后数据获取子模块,可以包括:
尾数位数值获取单元,用于根据第二目标数位的数值确定转换后数据中尾数位的数值;
幂次位指数位获取单元,用于根据待运算数据中定位数位上的数值,确定转换后数据中幂次位和指数位的数值;
转换后数据获取单元,用于根据尾数位的数值、幂次位的数值和指数位的数值,得到转换后的数据。
在一种可能的实现方式中,可以将第一目标数位中的第N-1数位的数值,确定为第二目标数位中的第N/2-2数位的数值,将第一目标数位中的第N-2数位的数值,确定为第二目标数位中的第N/2-3数位的数值……直至将第一目标数位中的第N/2+1数位的数值,确定为第二目标数位中的第0数位的数值。
在一种可能的实现方式中,待运算数据为十六位二进制形式的定点数的整数,转换后数据为八位二进制形式的整数。转换后数据中除第N/2-2数位至第0数位以外,还有第N/2数位和第N/2-1数位没有与之对应的第一目标数位。第N/2数位和第N/2-1数位可以根据需求分别确定为转换后的数据的幂次位或指数位。可以将第二目标数位中的第N/2-2数位至第0数位的数值确定为转换后的数据的尾数位的数值。可以根据待运算数据自身的数据特征和数据转换的需求,确定第N/2数位和第N/2-1数位的数值。
在一种可能的实现方式中,尾数位数值获取单元,可以用于:
当转换后数据的尾数位的位宽大于第二目标数位的位宽时,根据第二目标数位的数值和预设的补齐数值,确定转换后数据中的尾数位的数值。
在一种可能的实现方式中,幂次位指数位获取单元,可以用于:
当定位数位上的数值为偶数时,将转换后数据中幂次位的数值确定为0,或
当定位数位上的数值为奇数时,将转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,定点数的位宽为M,转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,当待运算数据为定点数整数部分为6912时,十六位二进制形式的定点数的整数部分可以表示为0001101100000000,由高位到低位的数位依次为x 15至x 0。定位数位为x 12。定位数位N为12,N为偶数。第一目标数位为第N-1数位至第N/2+1数位:x 11,x 10,x 9,x 8,x 7。待 运算数据的转换后数据中,第二目标数位为第N/2-2数位至第0数位:x 4,x 3,x 2,x 1,x 0。根据第一目标数位的数值可以得到第二目标数位的数值为10110。确定第二目标数位中第N/2数位的数值为1,确定第N/2-1数位的数值为0,则可以得到待运算数据的转换后数据为:01010110。
在一种可能的实现方式中,可以将待运算数据的转换后数据中的第(N-1)/2-2数位至第0数位,确定为与第一目标数位对应的第二目标数位。其中,第一目标数位中的第N-1数位对应第二目标数位中的第(N-1)/2-2数位,第一目标数位中的第N-2数位对应第二目标数位中的第(N-1)/2-3数位……直至第一目标数位中的第(N-1)/2+2数位对应第二目标数位中的第0数位。第二目标数位的数量和第一目标数位的数量相等,第一目标数位上的数值可以完整的映射至第二目标数位,使得转换后数据能够保留待运算数据的精度。
在一种可能的实现方式中,可以将第一目标数位中的第N-1数位的数值,确定为第二目标数位中的第(N-1)/2-2数位的数值,将第一目标数位中的第N-2数位的数值,确定为第二目标数位中的第(N-1)/2-3的数值……直至将第一目标数位中的第(N-1)/2+2数位的数值,确定为第二目标数位中的第0数位的数值。
在一种可能的实现方式中,当待运算数据为定点数45568时,十六位二进制形式的定点数的整数可以表示为1011001000000000,由高位到低位的数位依次为x 15至x0。定位数位为x 15。定位数位N为15,N为奇数。第一目标数位为第N-1数位至第(N-1)/2+2数位:x 14,x 13,x 12,x 11,x 10,x 9。待运算数据的转换后数据中,第二目标数位为第(N-1)/2-2数位至第0数位:x 5,x 4,x 3,x 2,x 1,x 0。根据第一目标数位的数值可以得到第二目标数位的数值为011001。确定第二目标数位中第(N-1)/2数位的数值为1,确定第(N-1)/2-1数位的数值为1,则可以得到待运算数据的转换后数据为:11011001。
在本实施例中,根据第二目标数位的数值确定转换后数据中尾数位的数值;根据待运算数据中定位数位上的数值,确定转换后数据中幂次位和指数位的数值;根据尾数位的数值、幂次位的数值和指数位的数值,得到转换后的数据。定位数位N可以定位待运算数据中的有效数位,根据定位数位N确定出的第一目标数位和第二目标数位,可以使待运算数据的转换后数据保留数据的精度。
在一种可能的实现方式中,定位数位获取子模块,可以用于:
在待运算数据的数据格式为指定数据格式时,将待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
指定数据格式为八位二进制形式的整数,指定数据格式中包括幂次位和尾数位,幂次位位于高位,尾数位位于低位。
在一种可能的实现方式中,利用本公开上述实施例中的方法将定点数转换为八位二进制形式的整数后,可以利用本公开实施例中的方法将八位二进制形式的整数再转换为定点数后进行运算,或输出至后续的运算装置进行运算,以提高本公开实施例中数据转换的灵活性,扩大适用范围。
在一种可能的实现方式中,当待运算数据的数据格式为八位二进制形式的整数时,可以将待运算数据进行数据格式的转换,转换为十六位二进制形式的定点数的整数。转换后数据有十六个数位,各数位上的数值为0或1。可以在八位二进制形式的整数中,将由高位至低位第一个1所在的数位确定为定位数位,可以代表八位二进制形式的整数中有效数值所在的数位中的起始数位。
例如,当待运算数据为待运算数据为86时,八位二进制形式为1010110,由高位到低位的数位依次为x 7至x 0。可以将由高位至低位第一个1所在的数位x 7,确定为定位数位。
在本实施例中,可以将八位二进制形式的整数中由高位至低位第一个1所在的数位,确定为定位数位。可以将待运算数据中的有效数值精确定位出来,用于后续第一目标数位的确定,保证转换后数据的准确度。
在一种可能的实现方式中,转换后数据的数据格式为十六位二进制形式的定点数,目标数位确定子模块,可以用于:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
将转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为转换后数据中与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,待运算数据为八位二进制形式的整数时,根据定位数位N,可以在待运算数据中确定第一目标数位为第N-2数位至第0数位。例如,待运算数据为待运算数据为86,八位二进制形式为1010110,定位数位为x 6。第一目标数位为x 4,x 3,x 2,x 1,x 0
在一种可能的实现方式中,转换后数据为十六位二进制的定点数由高位到低位的数位依次为x 15至x 0。可以将x 14开始的N-1个数位确定为第二目标数位。可以将待运算数据的第一目标数位中的第N-2数位,对应转换后数据的第二目标数位中的x 14。将待运算数据的第一目标数位中的第N-3数位,对应转换后数据的第二目标数位中的x 13,直至将待运算数据的第一目标数位中的第0数位,对应转换后数据的第二目标数位中由高位至低位的第二个数位开始的第N-1个数位。
例如,待运算数据为待运算数据为86,八位二进制形式为01010110,定位数位为x 6。第一目标数位为x 4,x 3,x 2,x 1,x 0。第二目标数位为x 14,x 13,x 12,x 11,x 10
在一种可能的实现方式中,可以根据待运算数据的第一目标数位的数值,直接得到转换后数据的第二目标数位的数值。也可以将待运算数据的第一目标数位的数值进行其它处理,例如进行0/1转换后,得到转换后数据的第二目标数位的数值。本公开对此不做限定。
在一种可能的实现方式中,转换后数据获取子模块,可以用于:
确定转换后数据中,第十六数位的数值;
根据第十六数位和第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,除第二目标数位外,可以根据数据转换的需求和待运算数据的数据特征,确定第十六数位的数值。例如,可以确定第十六数位的数值为1。
在一种可能的实现方式中,转换后数据为十六位二进制形式的定点数,除第十六数位,第二目标数位以外,还需要补齐剩余数位的数值。
在一种可能的实现方式中,待运算数据的定位数位N,当待运算数据中第N-1数位的数值为0时,可以在转换后数据中,补齐N+1个0。当待运算数据中第N-1数位的数值为1时,可以在转换后数据中,补齐N+2个0。
例如,待运算数据为待运算数据为86,八位二进制形式为01010110,定位数位为x 6。第一目标数位为x 4,x 3,x 2,x 1,x 0。第二目标数位为x 14,x 13,x 12,x 11,x 10。可以将转换后数据的第十六数位确定为1。由于待运算数据中第N-1数位的数值为0,补齐7个0,转换后数据为1101100000000。
在本实施例中,可以根据定位数位N,在待运算数据中确定第N-2数位至第0数位为第一目标数位,并在待运算数据的转换后数据中,将由高位至低位的第二个数位开始的N-1个数位确定为第二目标数位。可以根据第二目标数位的数值得到转换后数据。定位数位N可以定位待运算数据中的有效数位,根据定位数位N确定出的第一目标数位和第二目标数位,可以使待运算数据的转换后数据,能够保留待运算数据的精度。
在一种可能的实现方式中,转换后数据获取子模块,可以用于:将除第十六数位和第二目标数位之外的数位设为0。
在一种可能的实现方式中,控制器模块用于根据数据格式选择模块确定的数据转换格式,控制数据格式转换模块对待运算数据进行数据格式转换,可以包括:
控制器模块,用于获取待运算数据、机器学习模型、计算指令以及数据格式选择模块确定的数据转换格式;
控制器模块,用于控制数据格式转换模块对待运算数据进行数据格式转换,得到转换后的待运算数据;
控制器模块,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及转换后的待运算数据发送给运算模块。
需要说明的是,尽管以上述实施例作为示例介绍了计算装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开实施例提供了一种数据处理方法、装置及相关产品,用以提高运算装置的处理效率,并提高运算结果的准确率。在本公开实施例所提供的数据处理方法、装置及相关产品中,获取待运算数据;在待运算数据中确定定位数位;根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位;根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值;根据第二目标数位的数值得到转换后数据。根据待运算数据确定定位数位以及第一目标数位,能够使得待运算数据的转换后数据在保持数据精度的前提下,变换数据的位宽,适应不同的运算需求。
图3示出根据本公开一实施例的数据处理方法的流程图,如图3所示,数据处理方法包括:
步骤S10,获取待运算数据。
在一种可能的实现方式中,根据运算任务的不同可以获取不同的待运算数据。例如,在神经网络运算中,用于神经网络中各层运算的输入神经元数据、输出神经元数据或权值,都可以作为待运算数据进行数据处理。在对图像进行去噪声、增强、提取特征等各种图像运算的运算中,可以将图像数据作为待运算数据进行格式转换。在基于芯片的运算任务中,输入芯片中用于运算的数据,或存储在芯片中用于运算的数据,也可以作为待运算数据进行数据处理。
例如,对于神经网络中的第N层卷积层,可以接收第N-1层卷积层的输出神经元数据。第N层卷积层的神经元可以将接收到的第N-1层卷积层的输出神经元数据作为待运算数据进行数据处理,并利用转换后数据和权重等相关数据执行本层的卷积运算,得到第N层卷积层的输出神经元数据。
步骤S20,在待运算数据中确定定位数位。
在一种可能的实现方式中,待运算数据可以包括多种数据格式,例如待运算数据可以为定点数或浮点数。待运算数据可以由一个或多个数位上的数值组成。对于本公开实施例中的数据处理方法,在确定待运算数据的数据格式为指定数据格式时,可以将待运算数据中的多个数位上的数值进行转换,得到待运算数据的转换后数据上与之对应的多个数位上的数值。可以在待运算数据中确定其中一个或多个数位为定位数位。定位数位可以用于在待运算数据中定位出用于转换的数位的位置。例如,根据定位数位,可以在待运算数据中确定出用于转换的数位的开始位置、结束位置或中间位置等。
步骤S30,根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,第一目标数位可以包括待运算数据中的一个或多个数位。第二目标数位可以为待运算数据的转换后数据中的一个或多个数位。第一目标数位的数量可以与第二目标数位的数量相等或不等。
例如,待运算数据可以包括十个数位(例如x9,x8,x7,x6,x5,x4,x3,x3,x2,x1,x0)。可以将待运算数据中由高位至低位的第二个数位,确定为定位数位,即可以将x8确定为定位数位。可以将定位数位确定为第一目标数位中的第一个数位,且第一目标数位包括五个数位。则在待运算数据中的第一目标数位为(x8,x7,x6,x5,x4)。待运算数据的转换后数据可以包括八位数位,例如y7,y6,y5,y4,y3,y2,y1,y0,可以将转换后数据中由高位至低位的五个数位,确定为第二目标数位,第二目标数位为转换后数据中的y7,y6,y5,y4,y3。
步骤S40,根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值。
在一种可能的实现方式中,当第一目标数位的数量与第二目标数位的数量相等时,可以将第一目标数位中的单个数位与第二目标数位中的单个数位之间进行一一对应。可以根据第一目标数位中单个数位上的数值,得到第二目标数位中与之对应的数位上的数值。可以将第一目标数位中单个数位上的数值,直接确定为第二目标数位中与之对应的数位上的数值。也可以将第一目标数位中单个数位上的数值,经过设定的运算或变换后,得到第二目标数位中与之对应的数位上的数值。例如,可以将第一目标数位中的单个数位上的值进行0/1转换,得到第二目标数位中与之对应的数位上的数值。
在一种可能的实现方式中,当第一目标数位的数量与第二目标数位的数量不相等时,可以根据多个第一目标数位上的数值得到一个第二目标数位上的数值,或根据一个第一目标数位上的数值得到多个第二目标数位上的数值。也可以根据A个第一目标数位上的数值得到B个第二目标数位上的数值,其中,A与B不等。本公开对此不做限定。
步骤S50,根据第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,当转换后数据的数位数量,等于第二目标数位的数位数量时,可以根据第二目标数位的数值,直接得到转换后数据。
在一种可能的实现方式中,当转换后数据的数位数量,大于第二目标数位的数量数量时,可以根据预设的规则补齐转换后数据中剩余数位上的数值,并根据补齐的剩余数位上的数值和第二目标数位上的数值,得到转换后数据。
在一种可能的实现方式中,在神经网络运算中,可以将神经网络中各层运算的输入神经元数据、 输出神经元数据和权值中的至少一种作为待运算数据。可以根据神经网络的运算任务的不同以及待运算数据的自身特征,利用本公开实施例中的数据处理方法,将不同数据格式的待运算数据,转换为设定数据格式的转换后数据,再利用转换后数据进行神经网络中各层的运算,最终得到各层的输出神经元数据。各层的输出神经元数据也可以利用本公开实施例中的数据处理方法,转换为与各层的输入神经元数据相同的数据格式后输出,作为下一层的输入神经元数据参与运算,以提高适用性。
在一种可能的实现方式中,可以将定点数格式的输入神经元数据、输出神经元数据或权值,转换为其他设定数据格式的数据,例如可以转换为设定位数的整数。从而在保证神经网络运算精度需求的前提下,提高待运算数据的表示范围。
在一种可能的实现方式中,也可以将浮点格式的输入神经元数据、输出神经元数据或权值,转换为其他设定数据格式的数据,例如可以转换为设定位数的整数。从而解决待运算数据同时存在大数和小数的情况下,大数精度不够,小数精度冗余的情况,提高神经网络的运算精度和运算效率。
在本实施例中,获取待运算数据;在待运算数据中确定定位数位;根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位;根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值;根据第二目标数位的数值得到转换后数据。根据待运算数据确定定位数位以及第一目标数位,能够使得待运算数据的转换后数据在保持数据精度的前提下,变换数据的位宽,适应不同的运算需求。
图4示出根据本公开一实施例的数据处理方法的流程图,指定数据格式为定点数,如图4所示,数据处理方法中步骤S20,可以包括:
步骤S21,在待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,当待运算数据的数据格式为定点数时,可以将待运算数据进行数据格式的转换。十六位二进制形式的定点数整数有十六个数位,各数位上的数值为0或1。可以在十六位二进制定点数的整数中,将由高位至低位第一个1所在的数位确定为定位数位,可以代表十六位的二进制的数据中有效数值所在的数位中的起始数位。
例如,当待运算数据为定点数整数部分为6912时,十六位二进制形式的定点数的整数可以表示为0001101100000000,由高位到低位的数位依次为x15至x0。可以将由高位至低位第一个1所在的数位x12,确定为定位数位。
在本实施例中,可以将十六位二进制形式的定点数整数中由高位至低位第一个1所在的数位,确定为定位数位。可以准确将定点数格式的待运算数据中的有效数值精确地定位出来,用于后续第一目标数位的确定,保证转换后数据的准确度。
在一种可能的实现方式中,数据处理方法中步骤S30,可以包括:
若定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为定点数中的第一目标数位。
在转换后数据中确定与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,当确定出的定位数位N为偶数时,可以将待运算数据中第N-1数位至第N/2+1数位确定为第一目标数位。根据N的取值不同,第一目标数位的数量也不同。由于第一目标 数位上的数值,用于得到转换后数据的第二目标数位上的数值,第一目标数位的数量与待运算数据中有效数位的数量相关,可以适用于不同大小的待运算数据。
在一种可能的实现方式中,可以将转换后数据中与第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,可以将待运算数据的转换后数据中的第N/2-2数位至第0数位,确定为与第一目标数位对应的第二目标数位。其中,第一目标数位中的第N-1数位对应第二目标数位中的第N/2-2数位,第一目标数位中的第N-2数位对应第二目标数位中的第N/2-3数位……直至第一目标数位中的第N/2+1数位对应第二目标数位中的第0数位。第二目标数位的数量和第一目标数位的数量相等,第一目标数位上的数值可以完整的映射至第二目标数位,使得转换后数据能够保留待运算数据的精度。
在一种可能的实现方式中,数据处理方法中步骤S50,可以包括:
根据第二目标数位的数值确定转换后数据中尾数位的数值;
根据待运算数据中定位数位上的数值,确定转换后数据中幂次位和指数位的数值;
根据尾数位的数值、幂次位的数值和指数位的数值,得到转换后的数据。
在一种可能的实现方式中,定点数的位宽为M,转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,可以将第一目标数位的数值确定为与之对应的第二目标数位的数值。也可以将将第一目标数位的数值经过0/1转换后,确定为与之对应的第二目标数位的数值。
在一种可能的实现方式中,可以将第一目标数位中的第N-1数位的数值,确定为第二目标数位中的第N/2-2数位的数值,将第一目标数位中的第N-2数位的数值,确定为第二目标数位中的第N/2-3数位的数值……直至将第一目标数位中的第N/2+1数位的数值,确定为第二目标数位中的第0数位的数值。
在一种可能的实现方式中,待运算数据为十六位二进制形式的定点数的整数,转换后数据为八位二进制形式的整数。转换后数据中除第N/2-2数位至第0数位以外,还有第N/2数位和第N/2-1数位没有与之对应的第一目标数位。第N/2数位和第N/2-1数位可以根据需求分别确定为转换后的数据的幂次位或指数位。可以将第二目标数位中的第N/2-2数位至第0数位的数值确定为转换后的数据的尾数位的数值。可以根据待运算数据自身的数据特征和数据处理的需求,确定第N/2数位和第N/2-1数位的数值。
在一种可能的实现方式中,根据第二目标数位的数值确定转换后数据中尾数位的数值,可以包括:
当转换后数据的尾数位的位宽大于第二目标数位的位宽时,根据第二目标数位的数值和预设的补齐数值,确定转换后数据中的尾数位的数值。
在一种可能的实现方式中,根据待运算数据中定位数位上的数值,确定转换后数据中幂次位的数值,可以包括:
当定位数位上的数值为偶数时,将转换后数据中幂次位的数值确定为0,或当定位数位上的数值为奇数时,将转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,当待运算数据为定点数整数部分为6912时,十六位二进制形式的定点数的整数部分可以表示为0001101100000000,由高位到低位的数位依次为x15至x0。定位数位为x12。定位数位N为12,N为偶数。第一目标数位为第N-1数位至第N/2+1数位:x11,x10,x9,x8,x7。待运算数据的转换后数据中,第二目标数位为第N/2-2数位至第0数位:x4,x3,x2,x1,x0。根据第一目标数位的数值可以得到第二目标数位的数值为10110。确定第二目标数位中第N/2数位的数值为1, 确定第N/2-1数位的数值为0,则可以得到待运算数据的转换后数据为:01010110。
在一种可能的实现方式中,可以将待运算数据的转换后数据中的第(N-1)/2-2数位至第0数位,确定为与第一目标数位对应的第二目标数位。其中,第一目标数位中的第N-1数位对应第二目标数位中的第(N-1)/2-2数位,第一目标数位中的第N-2数位对应第二目标数位中的第(N-1)/2-3数位……直至第一目标数位中的第(N-1)/2+2数位对应第二目标数位中的第0数位。第二目标数位的数量和第一目标数位的数量相等,第一目标数位上的数值可以完整的映射至第二目标数位,使得转换后数据能够保留待运算数据的精度。
在一种可能的实现方式中,可以将第一目标数位中的第N-1数位的数值,确定为第二目标数位中的第(N-1)/2-2数位的数值,将第一目标数位中的第N-2数位的数值,确定为第二目标数位中的第(N-1)/2-3的数值……直至将第一目标数位中的第(N-1)/2+2数位的数值,确定为第二目标数位中的第0数位的数值。
在一种可能的实现方式中,当待运算数据为定点数45568时,十六位二进制形式的定点数的整数可以表示为1011001000000000,由高位到低位的数位依次为x15至x0。定位数位为x15。定位数位N为15,N为奇数。第一目标数位为第N-1数位至第(N-1)/2+2数位:x14,x13,x12,x11,x10,x9。待运算数据的转换后数据中,第二目标数位为第(N-1)/2-2数位至第0数位:x5,x4,x3,x2,x1,x0。根据第一目标数位的数值可以得到第二目标数位的数值为011001。确定第二目标数位中第(N-1)/2数位的数值为1,确定第(N-1)/2-1数位的数值为1,则可以得到待运算数据的转换后数据为:11011001。
在本实施例中,根据第二目标数位的数值确定转换后数据中尾数位的数值;根据待运算数据中定位数位上的数值,确定转换后数据中幂次位和指数位的数值;根据尾数位的数值、幂次位的数值和指数位的数值,得到转换后的数据。定位数位N可以定位待运算数据中的有效数位,根据定位数位N确定出的第一目标数位和第二目标数位,可以使待运算数据的转换后数据保留数据的精度。
在一种可能的实现方式中,数据处理方法中步骤S20,可以包括:
在待运算数据的数据格式为指定数据格式时,将待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
指定数据格式为八位二进制形式的整数,指定数据格式中包括幂次位和尾数位,幂次位位于高位,尾数位位于低位。
在一种可能的实现方式中,利用本公开上述实施例中的方法将定点数转换为八位二进制形式的整数后,可以利用本公开实施例中的方法将八位二进制形式的整数再转换为定点数后进行运算,或输出至后续的运算装置进行运算,以提高本公开实施例中数据处理的灵活性,扩大适用范围。
在一种可能的实现方式中,当待运算数据的数据格式为八位二进制形式的整数时,可以将待运算数据进行数据格式的转换,转换为十六位二进制形式的定点数的整数。转换后数据有十六个数位,各数位上的数值为0或1。可以在八位二进制形式的整数中,将由高位至低位第一个1所在的数位确定为定位数位,可以代表八位二进制形式的整数中有效数值所在的数位中的起始数位。
例如,当待运算数据为待运算数据为86时,八位二进制形式为1010110,由高位到低位的数位依次为x7至x0。可以将由高位至低位第一个1所在的数位x7,确定为定位数位。
在本实施例中,可以将八位二进制形式的整数中由高位至低位第一个1所在的数位,确定为定位 数位。可以将待运算数据中的有效数值精确定位出来,用于后续第一目标数位的确定,保证转换后数据的准确度。
在一种可能的实现方式中,数据处理方法中步骤S30,可以包括:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;将转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为转换后数据中与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,待运算数据为八位二进制形式的整数时,根据定位数位N,可以在待运算数据中确定第一目标数位为第N-2数位至第0数位。例如,待运算数据为待运算数据为86,八位二进制形式为1010110,定位数位为x6。第一目标数位为x4,x3,x2,x1,x0。
在一种可能的实现方式中,转换后数据为十六位二进制的定点数由高位到低位的数位依次为x15至x0。可以将x14开始的N-1个数位确定为第二目标数位。可以将待运算数据的第一目标数位中的第N-2数位,对应转换后数据的第二目标数位中的x14。将待运算数据的第一目标数位中的第N-3数位,对应转换后数据的第二目标数位中的x13,直至将待运算数据的第一目标数位中的第0数位,对应转换后数据的第二目标数位中由高位至低位的第二个数位开始的第N-1个数位。
例如,待运算数据为待运算数据为86,八位二进制形式为01010110,定位数位为x6。第一目标数位为x4,x3,x2,x1,x0。第二目标数位为x14,x13,x12,x11,x10。
在一种可能的实现方式中,可以根据待运算数据的第一目标数位的数值,直接得到转换后数据的第二目标数位的数值。也可以将待运算数据的第一目标数位的数值进行其它处理,例如进行0/1转换后,得到转换后数据的第二目标数位的数值。本公开对此不做限定。
在一种可能的实现方式中,根据各第二目标数位的数值得到转换后数据,可以包括:
确定转换后数据中,第十六数位的数值;
根据第十六数位和第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,除第二目标数位外,可以根据数据处理的需求和待运算数据的数据特征,确定第十六数位的数值。例如,可以确定第十六数位的数值为1。
在一种可能的实现方式中,转换后数据为十六位二进制形式的定点数,除第十六数位,第二目标数位以外,还需要补齐剩余数位的数值。
在一种可能的实现方式中,根据第十六数位和第二目标数位的数值得到转换后数据,包括:
将除第十六数位和第二目标数位之外的数位设为0。
在一种可能的实现方式中,待运算数据的定位数位N,当待运算数据中第N-1数位的数值为0时,可以在转换后数据中,补齐N+1个0。当待运算数据中第N-1数位的数值为1时,可以在转换后数据中,补齐N+2个0。
例如,待运算数据为待运算数据为86,八位二进制形式为01010110,定位数位为x6。第一目标数位为x4,x3,x2,x1,x0。第二目标数位为x14,x13,x12,x11,x10。可以将转换后数据的第十六数位确定为1。由于待运算数据中第N-1数位的数值为0,补齐7个0,转换后数据为1101100000000。
在本实施例中,可以根据定位数位N,在待运算数据中确定第N-2数位至第0数位为第一目标数位,并在待运算数据的转换后数据中,将由高位至低位的第二个数位开始的N-1个数位确定为第二目标数 位。可以根据第二目标数位的数值得到转换后数据。定位数位N可以定位待运算数据中的有效数位,根据定位数位N确定出的第一目标数位和第二目标数位,可以使待运算数据的转换后数据,能够保留待运算数据的精度。
应用示例:
可以根据本公开上述实施例中的方法,制定数据处理对应关系表。数据处理对应关系表中由左至右第一列数据为待查询的数据,第二列数据为第一列数据的转换后数据。当第二列数据为待查询的数据时,第一列数据为第二列数据的转换后数据。第三列数据为第一列数据的二进制形式。第四列数据为第二列数据的二进制形式。
根据获取到的待运算数据,可以通过查询数据处理对应关系表,快捷地确定待运算数据的转换后数据,减少资源消耗,提高转换速率。
当待运算数据为定点数整数时,可以数据处理对应关系表的第二列中查询与之对应的数据,并根据查询到的数据在第一列中确定转换后数据,将定点数转换为设定格式的整数。例如,待运算数据为定点数整数192,可以在第二列中查询到192,并在第一列数据中确定与之对应的转化后数据为14。
当待运算数据为设定格式整数(例如为八位二进制形式的整数)时,可以在数据处理对应关系表中的第一列中查询与之对应的数据,并根据查询到的数据在第二列中确定转换后数据,将设定格式的整数转换为定点数。例如,待运算数据为八位二进制形式的14,可以在第一列中查询到14,并在第二列数据中确定与之对应的转化后数据为192。
图5示出根据本公开一实施例的数据处理装置的框图,如图5所示,数据处理装置,包括:
待运算数据获取模块101,用于获取待运算数据。
定位数位获取模块201,用于在待运算数据中确定定位数位。
目标数位确定模块301,用于根据定位数位,在待运算数据中确定第一目标数位,以及确定在待运算数据的转换后数据中,与第一目标数位对应的第二目标数位。
数值确定模块401,用于根据待运算数据中第一目标数位的数值,确定转换后数据中第二目标数位的数值。
转换后数据获取模块501,用于根据第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,定位数位获取模块,可以包括:
定位数位获取子模块,用于在待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
在一种可能的实现方式中,转换后数据为二进制形式的整数,目标数位确定模块,用于:
若定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为定点数中的第一目标数位;
在转换后数据中确定与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,目标数位确定模块,还用于:将转换后数据中与第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
在一种可能的实现方式中,转换后的数据包括尾数位和幂次位,转换后数据获取模块,包括:
尾数位数值获取子模块,用于根据第二目标数位的数值确定转换后数据中尾数位的数值;
幂次位指数位获取子模块,用于根据待运算数据中定位数位上的数值,确定转换后数据中幂次位和指数位的数值;
转换后数据获取子模块,用于根据尾数位的数值、幂次位的数值和指数位的数值,得到转换后的数据。
在一种可能的实现方式中,尾数位数值获取子模块,用于:
当转换后数据的尾数位的位宽大于第二目标数位的位宽时,根据第二目标数位的数值和预设的补齐数值,确定转换后数据中的尾数位的数值。
在一种可能的实现方式中,幂次位指数位获取子模块,用于:
当定位数位上的数值为偶数时,将转换后数据中幂次位的数值确定为0,或
当定位数位上的数值为奇数时,将转换后数据中幂次位的数值确定为1。
在一种可能的实现方式中,定点数的位宽为M,转换后数据的位宽为N,M≥2N。
在一种可能的实现方式中,定位数位获取模块,用于:
在待运算数据的数据格式为指定数据格式时,将待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
指定数据格式为八位二进制形式的整数,指定数据格式中包括幂次位和尾数位,幂次位位于高位,尾数位位于低位。
在一种可能的实现方式中,转换后数据的数据格式为十六位二进制形式的定点数,目标数位确定模块,用于:
若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
将转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为转换后数据中与第一目标数位对应的第二目标数位。
在一种可能的实现方式中,转换后数据获取模块,用于:
确定转换后数据中,第十六数位的数值;
根据第十六数位和第二目标数位的数值得到转换后数据。
在一种可能的实现方式中,转换后数据获取模块,用于:将除第十六数位和第二目标数位之外的数位设为0。
需要说明的是,尽管以上述实施例作为示例介绍了数据处理方法、装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开实施例提供了一种数据运算装置及相关产品,用以提高数据运算装置的处理效率,并减少乘法器在芯片中所占的面积。在本公开实施例中,数据运算装置用于对浮定点数进行乘法运算,所述数据运算装置包括:有效数相乘模块,用于将第一浮定点数的有效数和第二浮定点数的有效数相乘,得到待定有效数;有效数及指数确定模块,用于根据所述待定有效数、第一浮定点数和所述第二浮定点数,得到乘积的有效数和乘积的指数;乘积确定模块,用于根据所述乘积的有效数和乘积的指数,得到第一浮定点数和所述第二浮定点数的乘积。本公开实施例可以使得浮定点数的乘法运算过程高效、 运算结果准确,可以在保证数据表达范围的基础上,减少乘法器在芯片中所占的面积。
图6示出根据本公开一实施例的数据运算装置的框图,如图6所示,装置用于浮定点数的加法运算,浮定点数包括指数和有效数,装置包括:
有效数相乘模块101’,用于将第一浮定点数的有效数和第二浮定点数的有效数相乘,得到待定有效数。
在一种可能的实现方式中,定点数为16位二进制形式,16位二进制形式的定点数Y为:Y 15Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0,其中Y 15为符号位,Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0为有效数位。
在一种可能的实现方式中,浮定点数为8位二进制形式。浮定点数可以无符号位,也可以有符号位。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在一种可能的实现方式中,可以将第一浮定点数和第二浮定点数输入有效数相乘模块,由有效数相乘模块分别识别出第一浮定点数中的指数和有效数、第二浮定点数中的指数和有效数,再由有效数相乘模块判断确定第一浮定点数和第二浮定点数中的较大数和较小数。也可以将已经识别出的第一浮定点数的指数、第一浮定点数的有效数、第二浮定点数的指数和第二浮定点数的有效数分别输入有效数相乘模块。本公开对此不做限定。
在一种可能的实现方式中,第一浮定点数的有效数和第二浮定点数的有效数的数位相同,有效数相乘模块可以将第一浮定点数的有效数和第二浮定点数的有效数对位相乘,得到待定有效数。例如,浮定点数1的有效数为“10101”,浮定点数2的有效数为“110001”,则待定有效数为10000000101。
有效数及指数确定模块201’,用于根据待定有效数、第一浮定点数和第二浮定点数,得到乘积的有效数和乘积的指数。
在一种可能的实现方式中,可以根据待定有效数、第一浮定点数和第二浮定点数,分别计算得到乘积的有效数和乘积的指数。其中,乘积的有效数可以根据待定有效数、各浮定点数的有效数和指数确定,乘积的指数可以根据待定有效数和各浮定点数的指数确定。
乘积确定模块301’,用于根据乘积的有效数和乘积的指数,得到第一浮定点数和第二浮定点数 的乘积。
在一种可能的实现方式中,可以将乘积的有效数和乘积的指数设置于浮定点数中的任意不重合的数位。例如,可以将乘积的指数设置于浮定点数中的X 7数位,剩余的X 6X 5X 4X 3X 2X 1X 0有效数位为有效数的数位。也可以将的乘积的指数设置于浮定点数中的X 6数位,X 7X 5X 4X 3X 2X 1X 0为有效数的数位。本公开对此不作限定。
在本实施例中,数据运算装置用于对浮定点数进行乘法运算,数据运算装置包括:有效数相乘模块,用于将第一浮定点数的有效数和第二浮定点数的有效数相乘,得到待定有效数;有效数及指数确定模块,用于根据待定有效数、第一浮定点数和第二浮定点数,得到乘积的有效数和乘积的指数;乘积确定模块,用于根据乘积的有效数和乘积的指数,得到第一浮定点数和第二浮定点数的乘积。本公开实施例可以使得浮定点数的乘法运算过程高效、运算结果准确,可以在保证数据表达范围的基础上,减少乘法器在芯片中所占的面积。
图7示出根据本公开一实施例的数据运算装置的框图,如图7所示,在一种可能的实现方式中,有效数及指数确定模块201’,包括:
有效数确定子模块2011,用于根据待定有效数、第一浮定点数的有效数和指数、第二浮定点数的有效数和指数,确定乘积的有效数。
指数确定子模块2012,用于根据待定有效数、第一浮定点数的指数和第二浮定点数的指数,确定乘积的指数。
图8示出根据本公开一实施例的数据运算装置的框图,图8所示的数据运算装置用于进行无符号位的浮定点数的乘法运算。图8中最上包括两个由指数位e和有效数significant组成的浮定点数。其中,两个浮定点数的有效数利用乘法器mult相乘得到待定有效数。将待定有效数输入exp cp(exp cp用于确定浮定点数的乘积的指数位)判断其是否有进位,根据所得到的待定有效数是否有进位的判断,以及两个浮定点数的指数位,确定浮定点数的乘积的指数。并根据待定有效数是否有进位的判断结果和mult输出的待定有效数,确定是否利用shift移位器进行移位后,得到浮定点数的乘积的有效数。具体实施方式与上述实施例相同,不再赘述。
图9示出根据本公开一实施例的数据运算装置的框图,图9所示的数据运算装置用于进行有符号位的浮定点数的乘法运算。其中浮定点数的乘积的符号根据两个浮定点数的符号确定。其中,图9中的“=1”为异或功能模块、“&”为与功能模块和“|”为或功能模块,MULT为乘法器,MUX为选择器,MASK为掩码功能模块,Shift en为移位判断模块,Left Shift为向左移位模块,“=”为等于功能模块。上述功能模块可以用于根据两个浮定点数的指数和待定有效数的进位进行判断得到第一差值,并根据第一差值除以2的余数得到修正值。由于浮定点数的指数为0或1,待定有效数的进位为1或0,根据上述实施例将得到修正值为0或1两种结果。具体实施方式可参见上述实施例,不再赘述。
需要说明的是,尽管以上述实施例作为示例介绍了数据运算装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开实施例提供了一种数据转换装置及相关产品,用以在保证数据精度的前提下,提高数据的 表达范围。在公开本实施例中,数据转换装置用于将定点数转换为浮定点数,包括:最高非零位确定模块,用于确定定点数有效数的最高非零位的数位;指数有效数确定模块,用于根据最高非零位的数位和定点数的有效数确定浮定点数的指数和浮定点数的有效数;浮定点数确定模块,根据定点数的符号、浮定点数的指数和浮定点数的有效数,得到浮定点数。最高非零位确定模块、指数有效数确定模块和浮定点数确定模块,可以快速、准确地将定点数转换为浮定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
图10示出根据本公开一实施例的数据转换装置的框图,如图10所示,装置用于将定点数转换为浮定点数,定点数包括符号和有效数,装置包括:
最高非零位确定模块110,用于确定定点数有效数的最高非零位的数位。
在一种可能的实现方式中,定点数为16位二进制形式,浮定点数为8位二进制形式。浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数8位数位中的任意设定位置。本公开对此不做限定。例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。16位二进制形式的定点数Y为:Y 15Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0,其中Y 15为符号位,Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,浮定点数为“01010101”,浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1
在一种可能的实现方式中,最高非零位确定模块可以包括移位器,可以将浮定点数的有效数输入移位器中,由左至右自有效数的最高位开始移位,在移位过程中,最高非零位数位确定子模块可以将第一个“1”出现的数位作为最高非零位的数位。例如,浮定点数为“10101100”,有效数为“101100”,最高非零位的数位为5。
指数有效数确定模块210,用于根据最高非零位的数位和定点数的有效数确定浮定点数的指数和浮定点数的有效数。
在一种可能的实现方式中,指数有效数确定模块可以根据最高非零位的数位确定浮定点数的指数。指数有效数确定模块可以根据最高非零位的数位和定点数的有效数确定浮定点数的有效数。
浮定点数确定模块310,根据定点数的符号、浮定点数的指数和浮定点数的有效数,得到浮定点数。
在一种可能的实现方式中,浮定点数确定模块可以将定点数的符号确定为浮定点数的符号。浮定点数确定模块可以根据浮定点数的符号、有效数确定子模块确定出的浮定点数的有效数,和指数确定子模块确定出的浮定点数的指数,得到与定点数对应的浮定点数。浮定点数的符号位和指数位,可以位于8个数位中任意不重合的位置。
在本实施例中,数据转换装置,用于将定点数转换为浮定点数,装置包括:最高非零位确定模块,用于确定定点数有效数的最高非零位的数位;指数有效数确定模块,用于根据最高非零位的数位和定点数的有效数确定浮定点数的指数和浮定点数的有效数;浮定点数确定模块,根据定点数的符号、浮定点数的指数和浮定点数的有效数,得到浮定点数。最高非零位确定模块、指数有效数确定模块和浮定点数确定模块,可以快速、准确地将定点数转换为浮定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
图11示出根据本公开一实施例的数据转换装置的框图,如图11所示,在一种可能的实现方式中,指数有效数确定模块210,包括:
指数确定子模块21,用于将最高非零位的数位和1相加得到的和除2后取余,得到余数,将余数确定为浮定点数的指数。
在一种可能的实现方式中,最高非零位的数位为PX,则浮定点数的指数为EY=(PX+1)%2。例如,定点数“0000000000111101”的最高非零位的数位PX为5,则浮定点数的指数为EY=(5+1)%2=0。
在一种可能的实现方式中,指数有效数确定模块210,包括:
有效数确定子模块22,用于根据最高非零位的数位确定位移值,根据位移值将定点数的有效数进行位移,得到浮定点数的有效数。
在一种可能的实现方式中,定点数的有效数的位长为15位,浮定点数的有效数的位长为6位。有效数确定子模块可以根据定点数的有效数向右移动最高非零位的数位,确定位移值。位移值可以根据用于将定点数的有效数进行位移,以得到合理的浮定点数的有效数的表达。
在一种可能的实现方式中,如图11所示,有效数确定子模块22,包括:
位移值确定单元221,用于将最高非零位的数位和1相加得到的和除2得到的结果确定为位移值。
在一种可能的实现方式中,定点数的最高非零位的数位为PX,位移值=(PX+1)/2。例如,定点数“0000000000111101”的最高非零位的数位为5,则位移值确定单元得到位移值=(5+1)/2=3。
位移单元222,用于将定点数的有效数向右移动位移值的位数,得到浮定点数的有效数。
在一种可能的实现方式中,例如,定点数“0000000000111101”的位移值为3,则位移单元将定点数“0000000000111101”的有效数“000000000111101”向右移动3位,得到浮定点数的有效数为“000111”。
例如,定点数“0000000000111101”的符号为0、浮定点数的指数为0、浮定点数的有效数为“000111”,则定点数“0000000000111101”的浮定点数可以为“00000111”,其中最左侧的数位为符号位,与符号位相邻的数位为指数位。定点数“0000000000111101”的浮定点数也可以为“00011100”其中,最右侧的数位为符号位,与符号位相邻的数位为指数位。
在本实施例中,指数确定子模块和有效数确定子模块可以根据定点数的最高非零位的数位,确定出浮定点数的指数和有效数,将定点数转换为浮定点数。转化过程高效、准确。
在一种可能的实现方式中,数据转换装置包括:
数据获取模块,用于获取定点数的符号和有效数;
数据输出模块,用于输出浮定点数。
在一种可能的实现方式中,可以将定点数输入数据获取模块,由数据获取模块识别定点数中的符号和有效数。也可以将定点数的符号和有效数分别输入数据获取模块。本公开对此不做限定。数据获 取模块可以将获取到的定点数的符号和有效数传送至最高非零位确定模块和指数有效数确定模块。
在一种可能的实现方式中,数据输出模块可以输出浮定点数确定模块确定的浮定点数。数据输出模块可以将浮定点数输出至片上系统、片外系统等。本公开对此不做限定。
在一种可能的实现方式中,装置还用于将浮定点数转换为定点数,装置还包括:定点数有效数确定模块和定点数获取模块。
定点数有效数确定模块,用于根据浮定点数的指数和有效数,确定待定有效数。
在一种可能的实现方式中,定点数的有效数与浮定点数的指数和有效数相关,定点数有效数确定模块可以根据浮定点数的指数和有效数,确定待定有效数。可以将浮定点数直接输入定点数有效数确定模块,由定点数有效数确定模块识别浮定点数中的指数和有效数。也可以将已经识别出的浮定点数中的指数和有效数分别输入定点数有效数确定模块,由定点数有效数确定模块根据输入的浮定点数的指数和有效数,确定待定有效数。本公开对此不做限定。
定点数获取模块,根据浮定点数的符号和待定有效数,确定定点数。
在一种可能的实现方式中,定点数获取模块可以根据浮定点数的符号和定点数有效数确定模块确定出的待定有效数,确定定点数的有效数。定点数获取模块可以根据定点数的有效数和浮定点数的符号,得到最终的定点数。
在本实施例中,数据转换装置用于将浮定点数转换为定点数,装置包括:定点数有效数确定模块,用于根据浮定点数的指数和有效数,确定待定有效数;定点数获取模块,根据浮定点数的符号和待定有效数,确定定点数。数据转换装置可以将浮定点数快速、准确地转换为定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
在一种可能的实现方式中,定点数有效数确定模块,包括:最高非零位数位确定子模块、位移值确定子模块和定点数有效数确定子模块。
最高非零位数位确定子模块,用于确定浮定点数有效数的最高非零位的数位。
在一种可能的实现方式中,最高非零位数位确定子模块可以包括移位器,可以将浮定点数的有效数输入移位器中,由左至右自有效数的最高位开始移位,在移位过程中,最高非零位数位确定子模块可以将第一个“1”出现的数位作为最高非零位的数位。例如,浮定点数为“10101100”,有效数为“101100”,最高非零位的数位为5。
位移值确定子模块,用于根据浮定点数的指数、浮定点数有效数的最高非零位的数位,确定位移值。
在一种可能的实现方式中,位移值确定子模块可以用于将浮定点数的指数、浮定点数有效数的最高非零位的数位和1相加得到的和,确定为位移值。例如,浮定点数“10101100”的最高非零位的数位为5,指数为0,则位移值为:5+0+1=6。
在一种可能的实现方式中,位移值确定子模块可以用于将浮定点数的指数、浮定点数有效数的最高非零位的数位相加得到的和,确定为待定位移值。例如,浮定点数“10101100”的最高非零位的数位为5,指数为0,则待定位移值为:5+0=5。
定点数有效数确定子模块,用于根据位移值移动浮定点数的有效数,得到待定有效数。
在一种可能的实现方式中,定点数有效数确定子模块可以用于将浮定点数的有效数向左移动位移 值的位数,得到待定有效数。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”。
在一种可能的实现方式中,定点数有效数确定子模块可以用于将浮定点数的有效数向左移动待定位移值加1所得的位数,得到待定有效数。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动待定位移值5位+1位=6位,同样得到待定有效数“101100000000”。
在一种可能的实现方式中,定点数获取模块,包括:有效数获取子模块和定点数获取子模块。
有效数获取子模块,用于根浮定点数的符号和待定有效数的补码得到定点数的有效数。
在一种可能的实现方式中,当浮定点数的符号为0时,浮定点数为正数,待定有效数的补码为原码。例如,定点数有效数确定子模块可以将浮定点数为“00101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”,定点数的有效数为“000101100000000”。
在一种可能的实现方式中,当浮定点数的符号为1时,浮定点数为负数,待定有效数的补码为反码+1。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”,待定有效数的反码“111010011111111”+1=“111010100000000”,定点数的有效数为“111010100000000”。
定点数获取子模块,用于根据浮定点数的符号定点数的有效数,得到定点数。
在一种可能的实现方式中,定点数获取子模块可以将浮定点数的符号确定为定点数的符号。定点数获取子模块可以根据定点数的符号和定点数的有效数,得到定点数。例如,浮定点数“00101100”的定点数为“0000101100000000”,浮定点数“10101100”的定点数为“1111010100000000”。
在本实施例中,定点数有效数确定模块包括最高非零位数位确定子模块、位移值确定子模块和定点数有效数确定子模块。定点数获取模块,包括有效数获取子模块和定点数获取子模块。利用各子模块,数据转换装置可以将浮定点数快速、准确的转换为定点数。
需要说明的是,尽管以上述实施例作为示例介绍了数据转换装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开提出了一种数据转换装置及相关产品,用以在保证数据精度的前提下,提高数据的表达范围。在本公开实施例中,数据转换装置,用于将浮定点数转换为定点数,所述装置包括:定点数有效数确定模块,用于根据所述浮定点数的指数和有效数,确定待定有效数;定点数获取模块,根据浮定点数的符号和所述待定有效数,确定所述定点数。数据转换装置可以将浮定点数快速、准确地转换为定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
图12示出根据本公开一实施例的数据转换装置的框图,装置用于将浮定点数转换为定点数,如图12所示,装置包括:
定点数有效数确定模块120,用于根据浮定点数的指数和有效数,确定待定有效数。
在一种可能的实现方式中,定点数为16位二进制形式,16位二进制形式的定点数Y为:Y 15Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0,其中Y 15为符号位,Y 14Y 13Y 12Y 11Y 10Y 9Y 8Y 7Y 6Y 5Y 4Y 3Y 2Y 1Y 0为有效数位。
在一种可能的实现方式中,浮定点数为8位二进制形式。浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1
在一种可能的实现方式中,定点数的有效数与浮定点数的指数和有效数相关,定点数有效数确定模块可以根据浮定点数的指数和有效数,确定待定有效数。可以将浮定点数直接输入定点数有效数确定模块,由定点数有效数确定模块识别浮定点数中的指数和有效数。也可以将已经识别出的浮定点数中的指数和有效数分别输入定点数有效数确定模块,由定点数有效数确定模块根据输入的浮定点数的指数和有效数,确定待定有效数。本公开对此不做限定。
定点数获取模块220,根据浮定点数的符号和待定有效数,确定定点数。
在一种可能的实现方式中,定点数获取模块可以根据浮定点数的符号和定点数有效数确定模块确定出的待定有效数,确定定点数的有效数。定点数获取模块可以根据定点数的有效数和浮定点数的符号,得到最终的定点数。
在本实施例中,数据转换装置用于将浮定点数转换为定点数,装置包括:定点数有效数确定模块,用于根据浮定点数的指数和有效数,确定待定有效数;定点数获取模块,根据浮定点数的符号和待定有效数,确定定点数。数据转换装置可以将浮定点数快速、准确地转换为定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
图13示出根据本公开一实施例的数据转换装置的框图,如图13所示,在一种可能的实现方式中,定点数有效数确定模块120,包括:
最高非零位数位确定子模块11’,用于确定浮定点数有效数的最高非零位的数位。
在一种可能的实现方式中,最高非零位数位确定子模块可以包括移位器,可以将浮定点数的有效数输入移位器中,由左至右自有效数的最高位开始移位,在移位过程中,最高非零位数位确定子模块可以将第一个“1”出现的数位作为最高非零位的数位。例如,浮定点数为“10101100”,有效数为“101100”,最高非零位的数位为5。
位移值确定子模块12’,用于根据浮定点数的指数、浮定点数有效数的最高非零位的数位,确定位移值。
在一种可能的实现方式中,位移值确定子模块可以用于将浮定点数的指数、浮定点数有效数的最高非零位的数位和1相加得到的和,确定为位移值。例如,浮定点数“10101100”的最高非零位的数位为5,指数为0,则位移值为:5+0+1=6。
在一种可能的实现方式中,位移值确定子模块可以用于将浮定点数的指数、浮定点数有效数的最 高非零位的数位相加得到的和,确定为待定位移值。例如,浮定点数“10101100”的最高非零位的数位为5,指数为0,则待定位移值为:5+0=5。
定点数有效数确定子模块13’,用于根据位移值移动浮定点数的有效数,得到待定有效数。
在一种可能的实现方式中,定点数有效数确定子模块可以用于将浮定点数的有效数向左移动位移值的位数,得到待定有效数。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”。
在一种可能的实现方式中,定点数有效数确定子模块可以用于将浮定点数的有效数向左移动待定位移值加1所得的位数,得到待定有效数。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动待定位移值5位+1位=6位,同样得到待定有效数“101100000000”。
在一种可能的实现方式中,如图13所示,定点数获取模块220,包括:
有效数获取子模块21’,用于根浮定点数的符号和待定有效数的补码得到定点数的有效数。
在一种可能的实现方式中,当浮定点数的符号为0时,浮定点数为正数,待定有效数的补码为原码。例如,定点数有效数确定子模块可以将浮定点数为“00101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”,定点数的有效数为“000101100000000”。
在一种可能的实现方式中,当浮定点数的符号为1时,浮定点数为负数,待定有效数的补码为反码+1。例如,定点数有效数确定子模块可以将浮定点数为“10101100”的有效数为“101100”,向左移动位移值6位,得到待定有效数“101100000000”,待定有效数的反码“111010011111111”+1=“111010100000000”,定点数的有效数为“111010100000000”。
定点数获取子模块22’,用于根据浮定点数的符号定点数的有效数,得到定点数。
在一种可能的实现方式中,定点数获取子模块可以将浮定点数的符号确定为定点数的符号。定点数获取子模块可以根据定点数的符号和定点数的有效数,得到定点数。例如,浮定点数“00101100”的定点数为“0000101100000000”,浮定点数“10101100”的定点数为“1111010100000000”。
在本实施例中,定点数有效数确定模块包括最高非零位数位确定子模块、位移值确定子模块和定点数有效数确定子模块。定点数获取模块,包括有效数获取子模块和定点数获取子模块。利用各子模块,数据转换装置可以将浮定点数快速、准确的转换为定点数。
在一种可能的实现方式中,数据转换装置包括:
数据获取模块,用于获取浮定点数的指数和有效数;
数据输出模块,用于输出定点数。
在一种可能的实现方式中,可以将浮定点数输入数据获取模块,由数据获取模块识别浮定点数中的指数和有效数。也可以将浮定点数的指数和有效数分别输入数据获取模块。本公开对此不做限定。数据获取模块可以将获取到的浮定点数的指数和有效数传送至定点数有效数确定模块。
在一种可能的实现方式中,数据输出模块可以输出定点数获取模块确定的定点数。数据输出模块可以将定点数输出至片上系统、片外系统等。本公开对此不做限定。
在一种可能的实现方式中,装置还可以用于将定点数转换为浮定点数,装置还包括:最高非零位确定模块、指数有效数确定模块和浮定点数确定模块。
最高非零位确定模块,用于确定定点数有效数的最高非零位的数位。
在一种可能的实现方式中,最高非零位确定模块可以包括移位器,可以将浮定点数的有效数输入移位器中,由左至右自有效数的最高位开始移位,在移位过程中,最高非零位数位确定子模块可以将第一个“1”出现的数位作为最高非零位的数位。例如,浮定点数为“10101100”,有效数为“101100”,最高非零位的数位为5。
指数有效数确定模块,用于根据最高非零位的数位和定点数的有效数确定浮定点数的指数和浮定点数的有效数。
在一种可能的实现方式中,指数有效数确定模块可以根据最高非零位的数位确定浮定点数的指数。指数有效数确定模块可以根据最高非零位的数位和定点数的有效数确定浮定点数的有效数。
浮定点数确定模块,根据定点数的符号、浮定点数的指数和浮定点数的有效数,得到浮定点数。
在一种可能的实现方式中,浮定点数确定模块可以将定点数的符号确定为浮定点数的符号。浮定点数确定模块可以根据浮定点数的符号、有效数确定子模块确定出的浮定点数的有效数,和指数确定子模块确定出的浮定点数的指数,得到与定点数对应的浮定点数。浮定点数的符号位和指数位,可以位于8个数位中任意不重合的位置。
在本实施例中,数据转换装置,用于将定点数转换为浮定点数,装置包括:最高非零位确定模块,用于确定定点数有效数的最高非零位的数位;指数有效数确定模块,用于根据最高非零位的数位和定点数的有效数确定浮定点数的指数和浮定点数的有效数;浮定点数确定模块,根据定点数的符号、浮定点数的指数和浮定点数的有效数,得到浮定点数。最高非零位确定模块、指数有效数确定模块和浮定点数确定模块,可以快速、准确地将定点数转换为浮定点数。相对于定点数,浮定点数在保证精度的前提下,提高了数据的表示范围。
在一种可能的实现方式中,指数有效数确定模块,包括:
指数确定子模块,用于将最高非零位的数位和1相加得到的和除2后取余,得到余数,将余数确定为浮定点数的指数。
在一种可能的实现方式中,最高非零位的数位为PX,则浮定点数的指数为EY=(PX+1)%2。例如,定点数“0000000000111101”的最高非零位的数位PX为5,则浮定点数的指数为EY=(5+1)%2=0。
在一种可能的实现方式中,指数有效数确定模块,包括:
有效数确定子模块,用于根据最高非零位的数位确定位移值,根据位移值将定点数的有效数进行位移,得到浮定点数的有效数。
在一种可能的实现方式中,定点数的有效数的位长为15位,浮定点数的有效数的位长为6位。有效数确定子模块可以根据定点数的有效数向右移动最高非零位的数位,确定位移值。位移值可以根据用于将定点数的有效数进行位移,以得到合理的浮定点数的有效数的表达。
在一种可能的实现方式中,有效数确定子模块,包括:位移值确定单元和位移单元。
位移值确定单元,用于将最高非零位的数位和1相加得到的和除2得到的结果确定为位移值。
在一种可能的实现方式中,定点数的最高非零位的数位为PX,位移值=(PX+1)/2。例如,定点数“0000000000111101”的最高非零位的数位为5,则位移值确定单元得到位移值=(5+1)/2=3。
位移单元,用于将定点数的有效数向右移动位移值的位数,得到浮定点数的有效数。
在一种可能的实现方式中,例如,定点数“0000000000111101”的位移值为3,则位移单元将定点 数“0000000000111101”的有效数“000000000111101”向右移动3位,得到浮定点数的有效数为“000111”。
例如,定点数“0000000000111101”的符号为0、浮定点数的指数为0、浮定点数的有效数为“000111”,则定点数“0000000000111101”的浮定点数可以为“00000111”,其中最左侧的数位为符号位,与符号位相邻的数位为指数位。定点数“0000000000111101”的浮定点数也可以为“00011100”其中,最右侧的数位为符号位,与符号位相邻的数位为指数位。
在本实施例中,指数确定子模块和有效数确定子模块可以根据定点数的最高非零位的数位,确定出浮定点数的指数和有效数,将定点数转换为浮定点数。转化过程高效、准确。
需要说明的是,尽管以上述实施例作为示例介绍了数据转换装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
本公开提出了一种指令处理方法、装置及相关产品,以提高对数据进行处理的效率和速度。本公开实施例所提供的指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的指令进行解析,获得指令的操作码和操作域,并根据操作码和操作域确定执行指令所需的待处理数据目标地址,以及确定与指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的指令处理方法、装置及相关产品的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
图14示出根据本公开一实施例的指令处理装置的框图。如图14所示,该装置包括控制模块11和处理模块12。
控制模块11,用于对接收到的指令进行解析,获得指令的操作码和操作域,并根据操作码和操作域确定执行指令所需的待处理数据和目标地址,以及确定与指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型和处理后的数据的目标数据类型。初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示指令对数据所需进行的处理,对数据所需进行的处理包括数据类型转换处理和运算处理中的至少一种。操作域包括待处理数据地址和目标地址。
处理模块12,用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,控制模块可以通过数据输入输出单元获得指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令 其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的指令进行解析,获得指令的操作码和操作域,并根据操作码和操作域确定执行指令所需的待处理数据和目标地址,以及确定与指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的指令处理装置的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11,还可以用于在操作域包括数据处理类型时,根据操作域确定与指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据指令的操作域和操作码无法确定当前指令的数据处理类型时,可以将默认数据处理类型确定为当前指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型可以包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型可以包括定点数数据类型和浮点数数据类型中的任一种。以实现不同数据类型之间的转换。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8 位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,控制模块11还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,处理模块12还可以用于在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。与进行数据运算或处理相关的运算参数,如与数据运算相关的卷积核、步长,指示运算类型的运算参数等。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,指令可以包括数据类型转换指令和计算指令中的至少一种。数据类型转换指令可以是用于对待处理数据进行数据类型转换处理的指令。计算指令可以是用于对待处理数据进行算术运算、逻辑运算等运算处理的指令。本领域技术人员可以根据实际需要对指令所包括的具体指令进行设置,本公开对此不作限制。
在一种可能的实现方式中,在指令为数据类型转换指令时,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,将转换后数据确定为处理后的数据。
在一种可能的实现方式中,数据类型转换指令的初始数据类型和/或目标数据类型可以是根据数据类型转换指令的操作域或操作码确定的,也可以是根据预先设置的数据类型转换指令的第一默认初始数据类型和第一默认目标数据类型确定的,还可以是根据数据类型转换指令的操作域或操作码、以及预先设置的第一默认初始数据类型和第一默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第一默认初始数据类型和第一默认目标数据类型。控制模块在根据数据类型转换指令无法确定初始数据类型和/或目标数据类型时,可以将第一默认初始数据类型和/或第一默认目标数据类型确定为当前数据类型转换指令的初始数据类型和/或目标数据类型。例如,控制模块在 根据数据类型转换指令1仅可以确定初始数据类型时,则可以将第一默认目标数据类型确定为数据类型转换指令1的目标数据类型。控制模块在根据数据类型转换指令1仅可以确定目标数据类型时,则可以将第一默认初始数据类型确定为数据类型转换指令1的初始数据类型。控制模块在根据数据类型转换指令1无法初始数据类型和目标数据类型时,则可以将第一默认初始数据类型和第一默认目标数据类型分别确定为数据类型转换指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,在指令为计算指令时,数据处理类型还可以包括运算类型。其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在该实现方式中,先将待处理数据转换为目标数据类型的转换后数据,可以简化后续运算的处理过程,提高数据处理的速度和效率。
在一种可能的实现方式中,在指令为计算指令时,数据处理类型还可以包括运算类型。其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型相同时,可以直接根据运算类型,对待处理数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。这样,简化了数据处理的过程。
在一种可能的实现方式中,计算指令的初始数据类型和/或目标数据类型可以是根据计算指令的操作域或操作码确定的,也可以是根据预先设置的计算指令的第二默认初始数据类型和第二默认目标数据类型确定的,还可以是根据计算指令的操作域或操作码、以及预先设置的第二默认初始数据类型和第二默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第二默认初始数据类型和第二默认目标数据类型。控制模块在根据计算指令无法确定初始数据类型和/或目标数据类型时,可以将第二默认初始数据类型和/或第二默认目标数据类型确定为当前计算指令的初始数据类型和/或目标数据类型。例如,控制模块在根据计算指令1的仅可以确定初始数据类型时,则可以将第二默认目标数据类型确定为计算指令1的目标数据类型。控制模块在根据计算指令1仅可以确定目标数据类型时,则可以将第二默认初始数据类型确定为计算指令1的初始数据类型。控制模块在根据计算指令1无法初始数据类型和目标数据类型时,则可以将第二默认初始数据类型和第二默认目标数据类型分别确定为计算指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据指令的操作域或操作码确定的,也可以是根据预先设置的指令的默认初始位数和默认目标位数确定的,还可以是根据指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据计算指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前指令的初始位数和/或目标位数。例如,控制模块在根据指令1的仅可以确定初始位数时,则可以将默认目标位数确定为指令1的目标位数。控制模块在根据指令1仅可以确定目标位数时,则可以将默认初始位数确定为指令1的初始位数。 控制模块在根据指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在指令中的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,计算指令可以包括标量运算指令、向量运算指令、矩阵运算指令和神经网络运算指令中的至少一种。数据类型转换指令可以包括浮点数转换指令、定点数转换指令、浮点数反转换指令、定点数反转换指令中的至少一种。
其中,浮点数转换指令可以是指示装置将浮点数数据类型的待处理数据转换为目标数据类型,得到处理后的数据。定点数转换指令可以是指示装置将定点数数据类型的待处理数据转换为目标数据类型,得到处理后的数据。目标数据类型可以是浮定点数数据类型。浮点数反转换指令可以是指示装置将浮定点数数据类型的待处理数据转换为浮点数数据类型,得到处理后的数据。定点数反转换指令可以是指示装置将浮定点数数据类型的待处理数据转换为定点数数据类型,得到处理后的数据。本领域技术人员还有可以根据需要对数据类型转换指令所包括的具体指令进行设置,本公开对此不作限制。
在一种可能的实现方式中,标量运算指令可以是对标量进行算术运算、逻辑运算等运算的指令。对标量所进行的运算可以包括相加、相减、相乘、比较、基于对应的函数对标量进行运算等。对应的函数可以包括三角函数(如正弦、余弦、正切、余切)、反三角函数(如反正弦、反余弦、反正切、反余切)、对数函数、指数函数、幂函数等。比较运算可以是对标量与指定值(设置的数值)进行比较、或者对两个标量进行比较,在二者的大小关系与目标关系相同时,存储目标值。其中,目标关系可以是相等、大于、小于、大于或等于、小于或等于、不等于等,目标值可以是进行比较的两者之一或者设置的目标值。举例来说,标量运算指令可以包括标量相加运算指令、标量相乘运算指令、标量比较运算指令、标量三角函数运算指令、标量反三角函数运算指令、标量取对数运算指令、标量取指数运算指令中的至少一种。本领域技术人员可以根据实际需要对标量运算指令所包括的具体指令进行设置,本公开对此不作限制。
在一种可能的实现方式中,向量运算指令可以是对向量进行算术运算、逻辑运算等运算的指令。对向量所进行的运算可以是对向量与向量、向量与标量、向量与矩阵之间的运算,运算可以包括相加、相减、相乘、比较、基于对应的函数对向量进行运算等。对应的函数可以包括对数函数、指数函数、幂函数等。举例来说,向量运算指令可以包括向量加向量运算指令、向量逐加向量运算指令、向量加标量运算指令、向量点积运算指令、向量外积运算指令、向量乘矩阵运算指令、向量乘向量运算指令、向量乘标量运算指令、向量取最大值运算指令、向量取最小值运算指令、向量取对数运算指令、向量取指数运算指令中的至少一种。其中,向量逐加向量运算指令可以是将第一待处理数据地址中的多个第一待处理数据、与第二待处理数据地址中的多个待处理数据,分别一一对应相加,得到多个相加结果,并将多个相加结果确定为处理后的数据。例如,向量逐加向量运算指令的多个第一待处理数据为a1、a2和a3,多个第二待处理数据b1、b2和b3。那么,处理后的数据为a1+b1、a2+b2和a3+b3。
在一种可能的实现方式中,矩阵运算指令可以是对矩阵进行算术运算、逻辑运算等运算的指令。对矩阵所进行的运算可以包括对矩阵与向量、矩阵与矩阵、矩阵与标量之间所进行的运算,预设可以包括相加、相减、相乘、比较、基于对应的函数对向量进行运算等。对应的函数可以包括对数函数、指数函数、幂函数等。举例来说,矩阵运算指令可以包括矩阵加矩阵运算指令、矩阵加标量运算指令、矩阵乘矩阵运算指令、矩阵乘向量运算指令、矩阵乘标量运算指令、矩阵取对数运算指令、矩阵取指数运算指令、矩阵取最大值运算指令、矩阵取最小值运算指令、矩阵取各行最大值指令、矩阵取各行最小值指令、矩阵取各列最大值指令、矩阵取各列最小值运算指令中的至少一种。
在一种可能的实现方式中,神经网络运算指令可以是与神经网络相关的运算相关的指令。与神经网络相关的运算包括卷积运算,最大池化、平均池化等池化运算,全连接运算,基于激活函数所进行的激活等运算。其中,激活函数可以包括线性整流函数(Rectified Linear Unit,ReLU,也可称ReLU函数)、exp函数(以自然数e为底的指数函数)等指数函数(exponential function)、S型生长曲线函数(Sigmoid function,也可称Sigmoid函数)等线性函数。举例来说,神经网络运算指令可以包括卷积运算指令、池化运算指令、全连接运算指令、激活运算指令中的至少一种。
图15示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图15所示,处理模块12可以包括至少一个运算器120’,该运算器120’用于执行与运算类型相对应的运算。运算器可以包括加法器、乘法器、除法器、激活运算器等,本公开对此不作限制。
在一种可能的实现方式中,如图15所示,该装置还可以包括存储模块13。存储模块13用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图15所示,控制模块11可以包括指令存储子模块111、指令处理子模块112和队列存储子模块113。
指令存储子模块111用于存储指令。
指令处理子模块112用于对指令进行解析,得到指令的操作码和操作域。
队列存储子模块113用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括指令。多个待执行指令可以包括还可以包括与指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图15所示,控制模块11还可以包括依赖关系处理子模块114。
依赖关系处理子模块114,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112中,在第零待执行指令执行完毕后,从指令存储子模块112中提取第一待执行指令发送至处理模块12。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的指令设置不同的操作码的代码或标识,以区分不同的指令。
在一种可能的实现方式中,数据类型转换指令的指令格式可以是:
type1.type2,IN,OUT,size,a.b,pa
其中,type1.type2为操作码,IN、OUT、size、a.b、pa为操作域。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式还可以是:
FF,IN,OUT,size,type1.type2,a.b,pa
其中,FF为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FF表示该指令为数据类型转换指令。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式也可以是:
type3,IN,OUT,size,pa
其中,type3为操作码,IN、OUT、size、pa为操作域。type3表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型,可以为不同的数据类型转换指令设置不同的操作码。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在 处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,计算指令的指令格式可以是:
FY,IN,OUT,size,type4,type1.type2,a.b,pa
其中,FY为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FY表示该指令为计算指令。type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。a.b中的a表示初始位数,a.b中的b表示目标位数。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。type1.type2、a.b、size、pa可缺省。
在一种可能的实现方式中,计算指令的指令格式可以是:
FY,IN,OUT,size,type4,pa
其中,FY为操作码,IN、OUT、size、pa为操作域。FY表示该指令为计算指令。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,计算指令的指令格式可以是:
type4,IN,OUT,size,pa
其中,type4为操作码,IN、OUT、size、pa为操作域。type4表示该指令为计算指令,且表示该计算指令的运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,计算指令的指令格式可以是:
FY,IN,OUT,size,type5,pa
其中,FY为操作码,IN、OUT、type5、size、pa为操作域。FY表示该指令为计算指令。type5表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,计算指令的指令格式可以是:
type5,IN,OUT,size,pa
其中,type5为操作码,IN、OUT、size、pa为操作域。type5表示该指令为计算指令,且表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
其中,在待处理数据为多个时,计算指令中可以包括多个待处理数据地址,以待处理数据为两个为例,其指令格式可以为以下任一种:
FY,IN1,IN2,OUT,size,type4,type1.type2,a.b,pa
FY,IN1,IN2,OUT,size,type4,pa
type4,IN1,IN2,OUT,size,pa
FY,IN1,IN2,OUT,size,type4,pa
FY,IN1,IN2,OUT,size,type5,pa
type5,IN1,IN2,OUT,size,pa
其中,IN1为第一待处理数据地址,IN2为第二待处理数据地址。
下述表格1-表格9为本公开实施例提供的不同指令的示例。本领域技术人员可以根据实际需要对指令的操作码的代码或标识、以及指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表1 标量运算指令示例1
Figure PCTCN2019120879-appb-000001
表2 标量运算指令示例2
Figure PCTCN2019120879-appb-000002
表3 向量运算指令示例1
Figure PCTCN2019120879-appb-000003
表4 向量运算指令示例2
Figure PCTCN2019120879-appb-000004
表5 矩阵运算指令示例1
Figure PCTCN2019120879-appb-000005
表6 矩阵运算指令示例2
Figure PCTCN2019120879-appb-000006
表7 数据类型转换指令示例2
Figure PCTCN2019120879-appb-000007
表8 神经网络运算指令示例
Figure PCTCN2019120879-appb-000008
表9 数据类型转换指令示例1
Figure PCTCN2019120879-appb-000009
应当理解的是,本领域技术人员可以根据需要对指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图16示出根据本公开一实施例的指令处理方法的流程图。如图16所示,该方法应用于上述指令处理装置,该方法包括步骤S51和步骤S52。
在步骤S51中,对接收到的指令进行解析,获得指令的操作码和操作域,并根据操作码和操作域确定执行指令所需的待处理数据和目标地址,以及确定与指令相对应的数据处理类型。其中,操作码用于指示指令对数据所需进行的处理,对数据所需进行的处理包括数据类型转换处理和运算处理中的至少一种。数据处理类型包括待处理数据的初始数据类型和处理后的数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型。操作域包括待处理数据地址和目标地址。
在步骤S52中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与指令相对应的数据处理类型,可以包括:
在操作域包括数据处理类型时,根据操作域确定与指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,根据操作码和操作域确定执行指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,指令可以包括数据类型转换指令和计算指令中的至少一种。
其中,计算指令可以包括标量运算指令、向量运算指令、矩阵运算指令和神经网络运算指令中的至少一种,数据类型转换指令可以包括浮点数转换指令、定点数转换指令、浮点数反转换指令、定点数反转换指令中的至少一种。
标量运算指令可以包括标量相加运算指令、标量相乘运算指令、标量比较运算指令、标量三角函数运算指令、标量反三角函数运算指令、标量取对数运算指令、标量取指数运算指令中的至少一种。
向量运算指令可以包括向量加向量运算指令、向量逐加向量运算指令、向量加标量运算指令、向量点积运算指令、向量外积运算指令、向量乘矩阵运算指令、向量乘向量运算指令、向量乘标量运算指令、向量取最大值运算指令、向量取最小值运算指令、向量取对数运算指令、向量取指数运算指令中的至少一种。
矩阵运算指令可以包括矩阵加矩阵运算指令、矩阵加标量运算指令、矩阵乘矩阵运算指令、矩阵乘向量运算指令、矩阵乘标量运算指令、矩阵取对数运算指令、矩阵取指数运算指令、矩阵取最大值运算指令、矩阵取最小值运算指令、矩阵取各行最大值指令、矩阵取各行最小值指令、矩阵取各列最大值指令、矩阵取各列最小值运算指令中的至少一种。
神经网络运算指令可以包括卷积运算指令、池化运算指令、全连接运算指令、激活运算指令中的至少一种。
在一种可能的实现方式中,在指令为数据类型转换指令时,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,将转换后数据确定为处理后的数据。
在一种可能的实现方式中,在指令为计算指令时,数据处理类型还可以包括运算类型。其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。
其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:利用至少一个运算器执行与运算类型相对应的运算。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型包括定点数数据类型和浮点数数据类型中的任一种。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的指令进行解析,获得指令的操作码和操作域,可以包括:
存储指令;
对指令进行解析,得到指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只 要符合本公开的技术方案即可。
本公开实施例所提供的指令处理方法的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
本公开实施例提供了一种数据类型转换指令处理方法、装置及相关产品,实现了数据在定点数数据类型与浮定点数数据类型之间的类型转换,提高了对数据进行数据类型转换处理的效率和速度。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据目标地址,以及确定与数据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
图17示出根据本公开一实施例的数据类型转换指令处理装置的框图。如图17所示,该装置包括控制模块11-1和处理模块12-1。
控制模块11-1,用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型和转换后数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示数据类型转换指令对数据所需进行的处理为数据类型转换处理。操作域包括待处理数据地址和目标地址。初始数据类型和目标数据类型可以分别包括浮定点数数据类型和定点数数据类型中的任一种,初始数据类型与目标数据类型不同。也即,初始数据类型为浮定点数数据类型时,目标数据类型为定点数数据类型;或者初始数据类型为定点数数据类型时,目标数据类型为浮定点数数据类型。
处理模块12-1,用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,数据类型转换指令可以是用于对待处理数据进行数据类型转换处理的指令。控制模块可以通过数据输入输出单元获得数据类型转换指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的数据类型转换指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理装置的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-1,还可以用于在操作域包括数据处理类型时,根据操作域确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-1,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据数据类型转换指令的操作域和操作码无法确定当前数据类型转换指令的数据处理类型时,可以将默认数据处理类型确定为当前数据类型转换指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,数据类型转换指令的初始数据类型和/或目标数据类型可以是根据数据类型转换指令的操作域或操作码确定的,也可以是根据预先设置的数据类型转换指令的第一默认初始数据类型和第一默认目标数据类型确定的,还可以是根据数据类型转换指令的操作域或操作码、以及预先设置的第一默认初始数据类型和第一默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第一默认初始数据类型和第一默认目标数据类型。控制模块在根据数据类型转换指令无法确定初始数据类型和/或目标数据类型时,可以将第一默认初始数据类型和/或第一默认目标数据类型确定为当前数据类型转换指令的初始数据类型和/或目标数据类型。例如,控制模块在根据数据类型转换指令1仅可以确定初始数据类型时,则可以将第一默认目标数据类型确定为数据类型转换指令1的目标数据类型。控制模块在根据数据类型转换指令1仅可以确定目标数据类型时,则可以将第一默认初始数据类型确定为数据类型转换指令1的初始数据类型。控制模块在根据数据类型转换指令1无法初始数据类型和目标数据类型时,则可以将第一默认初始数据类型和第一默认目标数据类型分别确定为数据类型转换指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将 待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,数据类型转换指令可以包括定点数转换指令、定点数反转换指令中的至少一种。其中,定点数转换指令可以是指示装置将定点数数据类型的待处理数据转换为浮定点数数据类型,得到转换后数据。定点数反转换指令可以是指示装置将浮定点数数据类型的待处理数据转换为定点数数据类型,得到转换后数据。本领域技术人员还有可以根据需要对数据类型转换指令所包括的指令进行设置,本公开对此不作限制。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X7X6X5X4X3X2X1X0,其中X7为符号位,X6为指数位。X5X4X3X2X1X0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*24+1+1=1.0101*22*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址。其中,控制模块11-1还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据数据类型转换指令的操作域或操作码确定的,也可以是根据预先设置的数据类型转换指令的默认初始位数和默认目标位数确定的,还可以 是根据数据类型转换指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据计算数据类型转换指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前数据类型转换指令的初始位数和/或目标位数。例如,控制模块在根据数据类型转换指令1的仅可以确定初始位数时,则可以将默认目标位数确定为数据类型转换指令1的目标位数。控制模块在根据数据类型转换指令1仅可以确定目标位数时,则可以将默认初始位数确定为数据类型转换指令1的初始位数。控制模块在根据数据类型转换指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为数据类型转换指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对数据类型转换指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数在数据类型转换指令中的代码进行设置,本公开对此不作限制。
图18示出根据本公开一实施例的数据类型转换指令处理装置的框图。在一种可能的实现方式中,如图18所示,该装置还可以包括存储模块13-1。存储模块13-1用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图18所示,控制模块11-1可以包括指令存储子模块111-1、指令处理子模块112-1和队列存储子模块113-1。
指令存储子模块111-1用于存储数据类型转换指令。
指令处理子模块112-1用于对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域。
队列存储子模块113-1用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。多个待执行指令可以包括还可以包括与数据类型转换指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图18所示,控制模块11-1还可以包括依赖关系处理子模块114-1。
依赖关系处理子模块114-1,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-1中,在第零待执行指令执行完毕后,从指令存储子模块112-1中提取第一待执行指令发送至处理模块12-1。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的指令设置不同的操作码的代码或标识,以区分不同的指令。
在一种可能的实现方式中,数据类型转换指令的指令格式可以是:
type1.type2,IN,OUT,size,a.b,pa
其中,type1.type2为操作码,IN、OUT、size、a.b、pa为操作域。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式还可以是:
FF,IN,OUT,size,type1.type2,a.b,pa
其中,FF为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FF表示该指令为数据类型转换指令。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式也可以是:
type3,IN,OUT,size,pa
其中,type3为操作码,IN、OUT、size、pa为操作域。type3表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型,可以为不同的数据类型转换指令设置不同的操作码。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
下述表10-表11为本公开实施例提供的不同数据类型转换指令的示例。本领域技术人员可以根据实际需要对数据类型转换指令的操作码的代码或标识、以及数据类型转换指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表10 数据类型转换指令示例1
Figure PCTCN2019120879-appb-000010
表11 数据类型转换指令示例2
Figure PCTCN2019120879-appb-000011
应当理解的是,本领域技术人员可以根据需要对指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图19示出根据本公开一实施例的数据类型转换指令处理方法的流程图。如图19所示,该方法应用于上述数据类型转换指令处理装置,该方法包括步骤S51-1和步骤S52-1。
在步骤S51-1中,对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。其中,操作码用于指示数据类型转换指令对数据所需进行 的处理为数据类型转换处理。数据处理类型包括待处理数据的初始数据类型和转换后数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型,操作域包括待处理数据地址和目标地址。初始数据类型和目标数据类型可以分别包括浮定点数数据类型和定点数数据类型中的任一种,初始数据类型与目标数据类型不同。
在步骤S52-1中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与数据类型转换指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与数据类型转换指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址。其中,根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,可以包括:
存储数据类型转换指令;
对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了数据类型转换指令处理方法如上,但本领域技 术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的数据类型转换指令处理方法的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
本公开实施例提供了一种数据类型转换指令处理方法、装置及相关产品,实现了数据在浮点数数据类型与浮定点数数据类型之间的类型转换,提高了对数据进行数据类型转换处理的效率和速度。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据目标地址,以及确定与数据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理方法、装置及相关产品的适用范围广,对数据类型转换指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
图20示出根据本公开一实施例的数据类型转换指令处理装置的框图。如图20所示,该装置包括控制模块11-2和处理模块12-2。
控制模块11-2,用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型和转换后数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示数据类型转换指令对数据所需进行的处理为数据类型转换处理。操作域包括待处理数据地址和目标地址。初始数据类型和目标数据类型分别包括浮定点数数据类型和浮点数数据类型中的任一种,初始数据类型与目标数据类型不同。也即,初始数据类型为浮定点数数据类型时,目标数据类型为浮点数数据类型;或者初始数据类型为浮点数数据类型时,目标数据类型为浮定点数数据类型。
处理模块12-2,用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,数据类型转换指令可以是用于对待处理数据进行数据类型转换处理的指令。控制模块可以通过数据输入输出单元获得数据类型转换指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令 其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对数据类型转换指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的数据类型转换指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。本公开实施例所提供的数据类型转换指令处理装置的适用范围广,对数据类型转换指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-2,还可以用于在操作域包括数据处理类型时,根据操作域确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-2,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据数据类型转换指令的操作域和操作码无法确定当前数据类型转换指令的数据处理类型时,可以将默认数据处理类型确定为当前数据类型转换指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,数据类型转换指令的初始数据类型和/或目标数据类型可以是根据数据类型转换指令的操作域或操作码确定的,也可以是根据预先设置的数据类型转换指令的第一默认初始数据类型和第一默认目标数据类型确定的,还可以是根据数据类型转换指令的操作域或操作码、以及预先设置的第一默认初始数据类型和第一默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第一默认初始数据类型和第一默认目标数据类型。控制模块在根据数据类型转换指令无法确定初始数据类型和/或目标数据类型时,可以将第一默认初始数据类型和/或第一默认目标数据类型确定为当前数据类型转换指令的初始数据类型和/或目标数据类型。例如,控制模块在根据数据类型转换指令1仅可以确定初始数据类型时,则可以将第一默认目标数据类型确定为数据类型转换指令1的目标数据类型。控制模块在根据数据类型转换指令1仅可以确定目标数据类型时,则可以将第一默认初始数据类型确定为数据类型转换指令1的初始数据类型。控制模块在根据数据类型转换指令1无法初始数据类型和目标数据类型时,则可以将第一默认初始数据类型和第一默认目标数据类型分别确定为数据类型转换指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量 可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,数据类型转换指令可以包括浮点数转换指令、浮点数反转换指令中的至少一种。其中,浮点数转换指令可以是指示装置将浮点数数据类型的待处理数据转换为浮定点数数据类型,得到转换后数据。浮点数反转换指令可以是指示装置将浮定点数数据类型的待处理数据转换为浮点数数据类型,得到转换后数据。本领域技术人员还有可以根据需要对数据类型转换指令所包括的具体指令进行设置,本公开对此不作限制。
在该实现方式中,浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址。其中,控制模块11-2还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据数据类型转换指令的操作域或操作码 确定的,也可以是根据预先设置的数据类型转换指令的默认初始位数和默认目标位数确定的,还可以是根据数据类型转换指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据计算数据类型转换指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前数据类型转换指令的初始位数和/或目标位数。例如,控制模块在根据数据类型转换指令1的仅可以确定初始位数时,则可以将默认目标位数确定为数据类型转换指令1的目标位数。控制模块在根据数据类型转换指令1仅可以确定目标位数时,则可以将默认初始位数确定为数据类型转换指令1的初始位数。控制模块在根据数据类型转换指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为数据类型转换指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对数据类型转换指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在数据类型转换指令中的代码进行设置,本公开对此不作限制。
图21示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图21所示,该装置还可以包括存储模块13-2。存储模块13-2用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图21所示,控制模块11-2可以包括指令存储子模块111-2、指令处理子模块112-2和队列存储子模块113-2。
指令存储子模块111-2用于存储数据类型转换指令。
指令处理子模块112-2用于对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域。
队列存储子模块113-2用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。多个待执行指令可以包括还可以包括与数据类型转换指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图21所示,控制模块11-2还可以包括依赖关系处理子模块114-2。
依赖关系处理子模块114-2,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-2中,在第零待执行指令执行完毕后,从指令存储子模块112-2中提取第一待执行指令发送至处理模块12-2。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的数据类型转换指令设置不同的操作码的代码或标识,以区分不同的数据类型转换指令。
在一种可能的实现方式中,数据类型转换指令的指令格式可以是:
type1.type2,IN,OUT,size,a.b,pa
其中,type1.type2为操作码,IN、OUT、size、a.b、pa为操作域。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式还可以是:
FF,IN,OUT,size,type1.type2,a.b,pa
其中,FF为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FF表示该指令为数据类型转换指令。type1.type2表示数据处理类型,type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。a.b中的a表示初始位数,a.b中的b表示目标位数。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、a.b、pa可缺省。
在一种可能的实现方式中,数据类型转换指令的指令格式也可以是:
type3,IN,OUT,size,pa
其中,type3为操作码,IN、OUT、size、pa为操作域。type3表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型,可以为不同的数据类型转换指令设置不同的操作码。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
下述表格12-表格13为本公开实施例提供的不同指令的示例。本领域技术人员可以根据实际需要对指令的操作码的代码或标识、以及指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表12 数据类型转换指令示例1
Figure PCTCN2019120879-appb-000012
表13 数据类型转换指令示例2
Figure PCTCN2019120879-appb-000013
应当理解的是,本领域技术人员可以根据需要对数据类型转换指令的操作码、数据类型转换指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了数据类型转换指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图22示出根据本公开一实施例的数据类型转换指令处理方法的流程图。如图22所示,该方法应用于上述数据类型转换指令处理装置,该方法包括步骤S51-2和步骤S52-2。
在步骤S51-2中,对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操 作域,并根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,以及确定与数据类型转换指令相对应的数据处理类型。其中,操作码用于指示数据类型转换指令对数据所需进行的处理为数据类型转换处理。数据处理类型包括待处理数据的初始数据类型和转换后数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型,操作域包括待处理数据地址和目标地址。初始数据类型和目标数据类型分别包括浮定点数数据类型和浮点数数据类型中的任一种,初始数据类型与目标数据类型不同。
在步骤S52-2中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,并将转换后数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与数据类型转换指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与数据类型转换指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与数据类型转换指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址。其中,根据操作码和操作域确定执行数据类型转换指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,根据数据处理类型对待处理数据进行数据类型转换处理,得到转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的数据类型转换指令进行解析,获得数据类型转换指令的操作码和操作域,可以包括:
存储数据类型转换指令;
对数据类型转换指令进行解析,得到数据类型转换指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括数据类型转换指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储 地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了数据类型转换指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的数据类型转换指令处理方法的适用范围广,对指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
本公开实施例提供了一种标量运算指令处理方法、装置及相关产品,以提高对标量数据进行处理的效率和速度。本公开实施例所提供的标量运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,并根据操作码和操作域确定执行标量运算指令所需的待处理数据目标地址,以及确定与标量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的标量运算指令处理方法、装置及相关产品的适用范围广,对标量运算指令的处理效率高、处理速度快,能够提高标量数据的处理效率和速度。
图23示出根据本公开一实施例的标量运算指令处理装置的框图。如图23所示,该装置包括控制模块11-3和处理模块12-3。
控制模块11-3,用于对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,并根据操作码和操作域确定执行标量运算指令所需的待处理数据和目标地址,以及确定与标量运算指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型和处理后的数据的目标数据类型,初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示标量运算指令对数据所需进行的处理至少包括标量运算处理。操作域包括待处理数据地址和目标地址。
处理模块12-3,用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,控制模块可以通过数据输入输出单元获得指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对标量运算指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的标量运算指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,并根据操作码和操作域确定执行标量运算指令所需的待处理数据和目标地址,以及确定与标量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的标量运算指令处理装置的适用范围广,对标量运算指令的处理效率高、处理速度快,能够提高标量数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-3,还可以用于在操作域包括数据处理类型时,根据操作域确定与标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-3,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据标量运算指令的操作域和操作码无法确定当前标量运算指令的数据处理类型时,可以将默认数据处理类型确定为当前标量运算指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型可以包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型可以包括定点数数据类型和浮点数数据类型中的任一种。以实现不同数据类型之间的转换。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本 公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高标量数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,控制模块11-3还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,处理模块12-3还可以用于在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。与进行数据运算或处理相关的运算参数。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在该实现方式中,先将待处理数据转换为目标数据类型的转换后数据,可以简化后续运算的处理过程,提高标量数据处理的速度和效率。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型相同时,可以直接根据运算类型,对待处理数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。这样,简化了数据处理的过程。
在一种可能的实现方式中,标量运算指令的初始数据类型和/或目标数据类型可以是根据标量运算指令的操作域或操作码确定的,也可以是根据预先设置的标量运算指令的第二默认初始数据类型和第二默认目标数据类型确定的,还可以是根据标量运算指令的操作域或操作码、以及预先设置的第二默认初始数据类型和第二默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第二默认初始数据类型和第二默认目标数据类型。控制模块在根据标量运算指令无法确定初始数据类型和/或目标数据类型时,可以将第二默认初始数据类型和/或第二默认目标数据类型确定为当前标量运算指令的初始数据类型和/或目标数据类型。例如,控制模块在根据标量运算指令1的仅可以确定初始数据类型时,则可以将第二默认目标数据类型确定为标量运算指令1的目 标数据类型。控制模块在根据标量运算指令1仅可以确定目标数据类型时,则可以将第二默认初始数据类型确定为标量运算指令1的初始数据类型。控制模块在根据标量运算指令1无法初始数据类型和目标数据类型时,则可以将第二默认初始数据类型和第二默认目标数据类型分别确定为标量运算指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位置和目标位数可以是根据标量运算指令的操作域或操作码确定的,也可以是根据预先设置的标量运算指令的默认初始位置和默认目标位数确定的,还可以是根据标量运算指令的操作域或操作码、以及预先设置的默认初始位置和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位置和默认目标位数。控制模块在根据标量运算指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前标量运算指令的初始位数和/或目标位数。例如,控制模块在根据标量运算指令1的仅可以确定初始位数时,则可以将默认目标位数确定为标量运算指令1的目标位数。控制模块在根据标量运算指令1仅可以确定目标位数时,则可以将默认初始位数确定为标量运算指令1的初始位数。控制模块在根据标量运算指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为标量运算指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对标量运算指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在标量运算指令中的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,标量运算指令可以是对标量进行算术运算、逻辑运算等运算的指令。对标量所进行的运算可以包括相加、相减、相乘、比较、基于对应的函数对标量进行运算等。对应的函数可以包括三角函数(如正弦、余弦、正切、余切)、反三角函数(如反正弦、反余弦、反正切、 反余切)、对数函数、指数函数、幂函数等。比较运算可以是对标量与指定值(设置的数值)进行比较、或者对两个标量进行比较,在二者的大小关系与目标关系相同时,存储目标值。其中,目标关系可以是相等、大于、小于、大于或等于、小于或等于、不等于等,目标值可以是进行比较的两者之一或者设置的目标值。举例来说,标量运算指令可以包括标量相加运算指令、标量相乘运算指令、标量比较运算指令、标量三角函数运算指令、标量反三角函数运算指令、标量取对数运算指令、标量取指数运算指令中的至少一种。本领域技术人员可以根据实际需要对标量运算指令所包括的具体指令进行设置,本公开对此不作限制。
图24示出根据本公开一实施例的指令处理装置的框图。在一种可能的实现方式中,如图24所示,处理模块12-3可以包括至少一个运算器120’-3,该运算器120’-3用于执行与运算类型相对应的运算。运算器可以包括加法器、乘法器、除法器、激活运算器等,本公开对此不作限制。
在一种可能的实现方式中,如图24所示,该装置还可以包括存储模块13-3。存储模块13-3用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图24所示,控制模块11-3可以包括指令存储子模块111-3、指令处理子模块112-3和队列存储子模块113-3。
指令存储子模块111-3用于存储标量运算指令。
指令处理子模块112-3用于对标量运算指令进行解析,得到标量运算指令的操作码和操作域。
队列存储子模块113-3用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量运算指令。多个待执行指令可以包括还可以包括与标量运算指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图24所示,控制模块11-3还可以包括依赖关系处理子模块114-3。
依赖关系处理子模块114-3,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-3中,在第零待执行指令执行完毕后,从指令存储子模块112-3中提取第一待执行指令发送至处理模块12-3。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的标量运算指令设置不同的操作码的代码或标识,以区分不同的标量运算指令。
在一种可能的实现方式中,标量运算指令的指令格式可以是:
FY,IN,OUT,size,type4,type1.type2,a.b,pa
其中,FY为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FY表示该指令为标量运算指令。type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。a.b中的a表示初始位数,a.b中的b表示目标位数。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。type1.type2、a.b、size、pa可缺省。
在一种可能的实现方式中,标量运算指令的指令格式可以是:
FY,IN,OUT,size,type4,pa
其中,FY为操作码,IN、OUT、size、pa为操作域。FY表示该指令为标量运算指令。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,标量运算指令的指令格式可以是:
type4,IN,OUT,size,pa
其中,type4为操作码,IN、OUT、size、pa为操作域。type4表示该指令为标量运算指令,且表示该标量运算指令的运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,标量运算指令的指令格式可以是:
FY,IN,OUT,size,type5,pa
其中,FY为操作码,IN、OUT、type5、size、pa为操作域。FY表示该指令为标量运算指令。type5表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,标量运算指令的指令格式可以是:
type5,IN,OUT,size,pa
其中,type5为操作码,IN、OUT、size、pa为操作域。type5表示该指令为标量运算指令,且表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
其中,在待处理数据为多个时,标量运算指令中可以包括多个待处理数据地址,以待处理数据为两个为例,其指令格式可以为以下任一种:
FY,IN1,IN2,OUT,size,type4,type1.type2,a.b,pa
FY,IN1,IN2,OUT,size,type4,pa
type4,IN1,IN2,OUT,size,pa
FY,IN1,IN2,OUT,size,type4,pa
FY,IN1,IN2,OUT,size,type5,pa
type5,IN1,IN2,OUT,size,pa
其中,IN1为第一待处理数据地址,IN2为第二待处理数据地址。
下述表格14-表格15为本公开实施例提供的不同标量运算指令的示例。本领域技术人员可以根据实际需要对标量运算指令的操作码的代码或标识、以及标量运算指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表14 标量运算指令示例1
Figure PCTCN2019120879-appb-000014
表15 标量运算指令示例2
Figure PCTCN2019120879-appb-000015
应当理解的是,本领域技术人员可以根据需要对标量运算指令的操作码、标量运算指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了标量运算指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图25示出根据本公开一实施例的标量运算指令处理方法的流程图。如图25所示,该方法应用于上述标量运算指令处理装置,该方法包括步骤S51-3和步骤S52-3。
在步骤S51-3中,对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,并根据操作码和操作域确定执行标量运算指令所需的待处理数据和目标地址,以及确定与标量运算指令相对应的数据处理类型。其中,操作码用于指示标量运算指令对数据所需进行的处理至少包括标量运算处理。数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型,,初始数据类型或目标数据类型为浮定点数数据类型。操作域包括待处理数据地址和目标地址。
在步骤S52-3中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与标量运算指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与标量运算指令相对应的数据处理类型,可以包括:
在操作码用于指示数据处理类型时,根据操作码确定与标量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行标量运算指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,根据操作码和操作域确定执行标量运算指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据,
其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类 型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:利用至少一个运算器执行与运算类型相对应的运算。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的标量运算指令进行解析,获得标量运算指令的操作码和操作域,可以包括:
存储标量运算指令;
对标量运算指令进行解析,得到标量运算指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括标量运算指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了标量运算指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的标量运算指令处理方法的适用范围广,对标量运算指令的处理效率高、处理速度快,能够提高标量数据的处理效率和速度。
本公开实施例提供了一种向量运算指令处理方法、装置及相关产品,以提高对向量数据进行处理的效率和速度。本公开实施例所提供的向量运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域,并根据操作码和操作域确定执行向量运算指令所需的待处理数据目标地址,以及确定与向量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的向量运算指令处理方法、装置及相关产品的适用范围广,对向量运算指令的处理效率高、处理速度快,能够提高向量数据的处理效率和速度。
图26示出根据本公开一实施例的向量运算指令处理装置的框图。如图26所示,该装置包括控制模块11-4和处理模块12-4。
控制模块11-4,用于对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域, 并根据操作码和操作域确定执行向量运算指令所需的待处理数据和目标地址,以及确定与向量运算指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型。初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示向量运算指令对数据所需进行的处理至少包括向量运算处理。操作域包括待处理数据地址和目标地址。
处理模块12-4,用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,控制模块可以通过数据输入输出单元获得指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对向量运算指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的向量运算指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域,并根据操作码和操作域确定执行向量运算指令所需的待处理数据和目标地址,以及确定与向量运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的向量运算指令处理装置的适用范围广,对向量运算指令的处理效率高、处理速度快,能够提高向量数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-4,还可以用于在操作域包括数据处理类型时,根据操作域确定与向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-4,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据向量运算指令的操作域和操作码无法确定当前向量运算指令的数据处理类型时,可以将默认数据处理类型确定为当前向量运算指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输 入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型可以包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型可以包括定点数数据类型和浮点数数据类型中的任一种。以实现不同数据类型之间的转换。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高向量数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,控制模块11-4还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,处理模块12-4还可以用于在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。与进行数据运算或处理相关的运算参数。本领域技术人员可以根 据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在该实现方式中,先将待处理数据转换为目标数据类型的转换后数据,可以简化后续运算的处理过程,提高向量数据处理的速度和效率。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型相同时,可以直接根据运算类型,对待处理数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。这样,简化了数据处理的过程。
在一种可能的实现方式中,向量运算指令的初始数据类型和/或目标数据类型可以是根据向量运算指令的操作域或操作码确定的,也可以是根据预先设置的向量运算指令的第二默认初始数据类型和第二默认目标数据类型确定的,还可以是根据向量运算指令的操作域或操作码、以及预先设置的第二默认初始数据类型和第二默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第二默认初始数据类型和第二默认目标数据类型。控制模块在根据向量运算指令无法确定初始数据类型和/或目标数据类型时,可以将第二默认初始数据类型和/或第二默认目标数据类型确定为当前向量运算指令的初始数据类型和/或目标数据类型。例如,控制模块在根据向量运算指令1的仅可以确定初始数据类型时,则可以将第二默认目标数据类型确定为向量运算指令1的目标数据类型。控制模块在根据向量运算指令1仅可以确定目标数据类型时,则可以将第二默认初始数据类型确定为向量运算指令1的初始数据类型。控制模块在根据向量运算指令1无法初始数据类型和目标数据类型时,则可以将第二默认初始数据类型和第二默认目标数据类型分别确定为向量运算指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据指令的操作域或操作码确定的,也可以是根据预先设置的指令的默认初始位数和默认目标位数确定的,还可以是根据指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据向量运算指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前向量运算指令的初始位数和/或目标位数。例如,控制模块在根据向量运算指令1的仅可以确定初始位数时,则可以将默认目标位数确定为向量运算指令1的目标位数。控制模块在根据向量运算指令1仅可以确定目标位数时,则可以将默认初始位数确定为向量运算指令1的初始位数。控制模块在根据向量运算指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为向量运算指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8 位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对向量运算指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在向量运算指令中的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,向量运算指令可以是对向量进行算术运算、逻辑运算等运算的指令。对向量所进行的运算可以是对向量与向量、向量与标量、向量与矩阵之间的运算,运算可以包括相加、相减、相乘、比较、基于对应的函数对向量进行运算等。对应的函数可以包括对数函数、指数函数、幂函数等。举例来说,向量运算指令可以包括向量加向量运算指令、向量逐加向量运算指令、向量加标量运算指令、向量点积运算指令、向量外积运算指令、向量乘矩阵运算指令、向量乘向量运算指令、向量乘标量运算指令、向量取最大值运算指令、向量取最小值运算指令、向量取对数运算指令、向量取指数运算指令中的至少一种。其中,向量逐加向量运算指令可以是将第一待处理数据地址中的多个第一待处理数据、与第二待处理数据地址中的多个待处理数据,分别一一对应相加,得到多个相加结果,并将多个相加结果确定为处理后的数据。例如,向量逐加向量运算指令的多个第一待处理数据为a1、a2和a3,多个第二待处理数据b1、b2和b3。那么,处理后的数据为a1+b1、a2+b2和a3+b3。
图27示出根据本公开一实施例的向量运算指令处理装置的框图。在一种可能的实现方式中,如图27所示,处理模块12-4可以包括至少一个运算器120’-4,该运算器120’-4用于执行与运算类型相对应的运算。运算器可以包括加法器、乘法器、除法器、激活运算器等,本公开对此不作限制。
在一种可能的实现方式中,如图27所示,该装置还可以包括存储模块13-4。存储模块13用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图27所示,控制模块11-4可以包括指令存储子模块111-4、指令处理子模块112-4和队列存储子模块113-4。
指令存储子模块111-4用于存储向量运算指令。
指令处理子模块112-4用于对向量运算指令进行解析,得到向量运算指令的操作码和操作域。
队列存储子模块113-4用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括向量运算指令。多个待执行指令可以包括还可以包括与向量运算指令相关的其他计算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图27所示,控制模块11-4还可以包括依赖关系处理子模块114-4。
依赖关系处理子模块114-4,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-4中,在第零待执行指令执行完毕后,从指令存储子模块112-4中提取第一待执行指令发送至处理模块12-4。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的向量运算指令设置不同的操作码的代码或标识,以区分不同的向量运算指令。
在一种可能的实现方式中,向量运算指令的指令格式可以是:
FY,IN,OUT,size,type4,type1.type2,a.b,pa
其中,FY为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FY表示该指令为向量运算指令。type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。a.b中的a表示初始位数,a.b中的b表示目标位数。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。type1.type2、a.b、size、pa可缺省。
在一种可能的实现方式中,向量运算指令的指令格式可以是:
FY,IN,OUT,size,type4,pa
其中,FY为操作码,IN、OUT、size、pa为操作域。FY表示该指令为向量运算指令。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,向量运算指令的指令格式可以是:
type4,IN,OUT,size,pa
其中,type4为操作码,IN、OUT、size、pa为操作域。type4表示该指令为向量运算指令,且表示 该向量运算指令的运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,向量运算指令的指令格式可以是:
FY,IN,OUT,size,type5,pa
其中,FY为操作码,IN、OUT、type5、size、pa为操作域。FY表示该指令为向量运算指令。type5表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,向量运算指令的指令格式可以是:
type5,IN,OUT,size,pa
其中,type5为操作码,IN、OUT、size、pa为操作域。type5表示该指令为向量运算指令,且表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
其中,在待处理数据为多个时,向量运算指令中可以包括多个待处理数据地址,以待处理数据为两个为例,其指令格式可以为以下任一种:
FY,IN1,IN2,OUT,size,type4,type1.type2,a.b,pa
FY,IN1,IN2,OUT,size,type4,pa
type4,IN1,IN2,OUT,size,pa
FY,IN1,IN2,OUT,size,type4,pa
FY,IN1,IN2,OUT,size,type5,pa
type5,IN1,IN2,OUT,size,pa
其中,IN1为第一待处理数据地址,IN2为第二待处理数据地址。
下述表格16-表格17为本公开实施例提供的不同向量运算指令的示例。本领域技术人员可以根据实际需要对向量运算指令的操作码的代码或标识、以及向量运算指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表16 向量运算指令示例1
Figure PCTCN2019120879-appb-000016
表17 向量运算指令示例2
Figure PCTCN2019120879-appb-000017
应当理解的是,本领域技术人员可以根据需要对向量运算指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了向量运算指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图28示出根据本公开一实施例的向量运算指令处理方法的流程图。如图28所示,该方法应用于上述向量运算指令处理装置,该方法包括步骤S51-4和步骤S52-4。
在步骤S51-4中,对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域,并 根据操作码和操作域确定执行向量运算指令所需的待处理数据和目标地址,以及确定与向量运算指令相对应的数据处理类型。其中,操作码用于指示向量运算指令对数据所需进行的处理至少包括向量运算处理。数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型,初始数据类型或目标数据类型为浮定点数数据类型。操作域包括待处理数据地址和目标地址。
在步骤S52-4中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与向量运算指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与向量运算指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与向量运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行向量运算指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数包括偏移地址和处理参数中的任一种。其中,根据操作码和操作域确定执行向量运算指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:利用至少一个运算器执行与运算类型相对应的运算。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的向量运算指令进行解析,获得向量运算指令的操作码和操作域,可以包括:
存储向量运算指令;
对向量运算指令进行解析,得到向量运算指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包 括向量运算指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了向量运算指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的向量运算指令处理方法的适用范围广,对向量运算指令的处理效率高、处理速度快,能够提高向量数据的处理效率和速度。
本公开实施例提供了一种矩阵运算指令处理方法、装置及相关产品,以提高对矩阵数据进行处理的效率和速度。本公开实施例所提供的矩阵运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,并根据操作码和操作域确定执行矩阵运算指令所需的待处理数据目标地址,以及确定与矩阵运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的矩阵运算指令处理方法、装置及相关产品的适用范围广,对矩阵运算指令的处理效率高、处理速度快,能够提高矩阵数据的处理效率和速度。
图29示出根据本公开一实施例的矩阵运算指令处理装置的框图。如图29所示,该装置包括控制模块11-5和处理模块12-5。
控制模块11-5,用于对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,并根据操作码和操作域确定执行矩阵运算指令所需的待处理数据和目标地址,以及确定与矩阵运算指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型和处理后的数据的目标数据类型。初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示矩阵运算指令对数据所需进行的处理至少包括矩阵运算处理。操作域包括待处理数据地址和目标地址。
处理模块12-5,用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。
在本实施例中,控制模块可以通过数据输入输出单元获得指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个指令其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对矩阵运算指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的矩阵运算指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,并根据操作码和操作域确定执行矩阵运算指令所需的待处理数据和目标地址,以及确定与矩阵运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的矩阵运算指令处理装置的适用范围广,对矩阵运算指令的处理效率高、处理速度快,能够提高矩阵数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-5,还可以用于在操作域包括数据处理类型时,根据操作域确定与矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-5,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据矩阵运算指令的操作域和操作码无法确定当前矩阵运算指令的数据处理类型时,可以将默认数据处理类型确定为当前矩阵运算指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型可以包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型可以包括定点数数据类型和浮点数数据类型中的任一种。以实现不同数据类型之间的转换。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高矩阵数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,控制模块11-5还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,处理模块12-5还可以用于在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。与进行数据运算或处理相关的运算参数。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在该实现方式中,先将待处理数据转换为目标数据类型的转换后数据,可以简化后续运算的处理过程,提高矩阵数据处理的速度和效率。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型相同时,可以直接根据运算类型,对待处理数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。这样,简化了数据处理的过程。
在一种可能的实现方式中,矩阵运算指令的初始数据类型和/或目标数据类型可以是根据矩阵运 算指令的操作域或操作码确定的,也可以是根据预先设置的矩阵运算指令的第二默认初始数据类型和第二默认目标数据类型确定的,还可以是根据矩阵运算指令的操作域或操作码、以及预先设置的第二默认初始数据类型和第二默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第二默认初始数据类型和第二默认目标数据类型。控制模块在根据矩阵运算指令无法确定初始数据类型和/或目标数据类型时,可以将第二默认初始数据类型和/或第二默认目标数据类型确定为当前矩阵运算指令的初始数据类型和/或目标数据类型。例如,控制模块在根据矩阵运算指令1的仅可以确定初始数据类型时,则可以将第二默认目标数据类型确定为矩阵运算指令1的目标数据类型。控制模块在根据矩阵运算指令1仅可以确定目标数据类型时,则可以将第二默认初始数据类型确定为矩阵运算指令1的初始数据类型。控制模块在根据矩阵运算指令1无法初始数据类型和目标数据类型时,则可以将第二默认初始数据类型和第二默认目标数据类型分别确定为矩阵运算指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据矩阵运算指令的操作域或操作码确定的,也可以是根据预先设置的矩阵运算指令的默认初始位数和默认目标位数确定的,还可以是根据矩阵运算指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据矩阵运算指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前矩阵运算指令的初始位数和/或目标位数。例如,控制模块在根据矩阵运算指令1的仅可以确定初始位数时,则可以将默认目标位数确定为矩阵运算指令1的目标位数。控制模块在根据矩阵运算指令1仅可以确定目标位数时,则可以将默认初始位数确定为矩阵运算指令1的初始位数。控制模块在根据矩阵运算指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为矩阵运算指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点 数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对矩阵运算指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在矩阵运算指令中的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,矩阵运算指令可以是对矩阵进行算术运算、逻辑运算等运算的指令。对矩阵所进行的运算可以包括对矩阵与向量、矩阵与矩阵、矩阵与标量之间所进行的运算,预设可以包括相加、相减、相乘、比较、基于对应的函数对向量进行运算等。对应的函数可以包括对数函数、指数函数、幂函数等。举例来说,矩阵运算指令可以包括矩阵加矩阵运算指令、矩阵加标量运算指令、矩阵乘矩阵运算指令、矩阵乘向量运算指令、矩阵乘标量运算指令、矩阵取对数运算指令、矩阵取指数运算指令、矩阵取最大值运算指令、矩阵取最小值运算指令、矩阵取各行最大值指令、矩阵取各行最小值指令、矩阵取各列最大值指令、矩阵取各列最小值运算指令中的至少一种。
图30示出根据本公开一实施例的矩阵运算指令处理装置的框图。在一种可能的实现方式中,如图30所示,处理模块12-5可以包括至少一个运算器120’-5,该运算器120’-5用于执行与运算类型相对应的运算。运算器可以包括加法器、乘法器、除法器、激活运算器等,本公开对此不作限制。
在一种可能的实现方式中,如图30所示,该装置还可以包括存储模块13-5。存储模块13-5用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图30所示,控制模块11-5可以包括指令存储子模块111-5、指令处理子模块112-5和队列存储子模块113-5。
指令存储子模块111-5用于存储矩阵运算指令。
指令处理子模块112-5用于对矩阵运算指令进行解析,得到矩阵运算指令的操作码和操作域。
队列存储子模块113-5用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括矩阵运算指令。多个待执行指令可以包括还可以包括与矩阵运算指令相关的其他矩阵运算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图30所示,控制模块11-5还可以包括依赖关系处理子模块114-5。
依赖关系处理子模块114-5,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-5中,在第零待执行指令执行完毕后,从指令存储子模块112-5中提取第一待执行指令发送至处理模块12-5。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重 叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的矩阵运算指令设置不同的操作码的代码或标识,以区分不同的矩阵运算指令。
在一种可能的实现方式中,矩阵运算指令的指令格式可以是:
FY,IN,OUT,size,type4,type1.type2,a.b,pa
其中,FY为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FY表示该指令为矩阵运算指令。type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。a.b中的a表示初始位数,a.b中的b表示目标位数。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。type1.type2、a.b、size、pa可缺省。
在一种可能的实现方式中,矩阵运算指令的指令格式可以是:
FY,IN,OUT,size,type4,pa
其中,FY为操作码,IN、OUT、size、pa为操作域。FY表示该指令为矩阵运算指令。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,矩阵运算指令的指令格式可以是:
type4,IN,OUT,size,pa
其中,type4为操作码,IN、OUT、size、pa为操作域。type4表示该指令为矩阵运算指令,且表示该矩阵运算指令的运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,矩阵运算指令的指令格式可以是:
FY,IN,OUT,size,type5,pa
其中,FY为操作码,IN、OUT、type5、size、pa为操作域。FY表示该指令为矩阵运算指令。type5表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,矩阵运算指令的指令格式可以是:
type5,IN,OUT,size,pa
其中,type5为操作码,IN、OUT、size、pa为操作域。type5表示该指令为矩阵运算指令,且表示 数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
其中,在待处理数据为多个时,矩阵运算指令中可以包括多个待处理数据地址,以待处理数据为两个为例,其指令格式可以为以下任一种:
FY,IN1,IN2,OUT,size,type4,type1.type2,a.b,pa
FY,IN1,IN2,OUT,size,type4,pa
type4,IN1,IN2,OUT,size,pa
FY,IN1,IN2,OUT,size,type4,pa
FY,IN1,IN2,OUT,size,type5,pa
type5,IN1,IN2,OUT,size,pa
其中,IN1为第一待处理数据地址,IN2为第二待处理数据地址。
下述表格18-表格19为本公开实施例提供的不同矩阵运算指令的示例。本领域技术人员可以根据实际需要对矩阵运算指令的操作码的代码或标识、以及矩阵运算指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表18 矩阵运算指令示例1
Figure PCTCN2019120879-appb-000018
表19 矩阵运算指令示例2
Figure PCTCN2019120879-appb-000019
应当理解的是,本领域技术人员可以根据需要对矩阵运算指令的操作码、指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了矩阵运算指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图31示出根据本公开一实施例的矩阵运算指令处理方法的流程图。如图31所示,该方法应用于上述矩阵运算指令处理装置,该方法包括步骤S51-5和步骤S52-5。
在步骤S51-5中,对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,并根据操作码和操作域确定执行矩阵运算指令所需的待处理数据和目标地址,以及确定与矩阵运算指令相对应的数据处理类型。其中,操作码用于指示矩阵运算指令对数据所需进行的处理至少包括矩阵运算处理。数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型,初始数据类型或目标数据类型为浮定点数数据类型。操作域包括待处理数据地址和目标地址。
在步骤S52-5中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与矩阵运算指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与矩阵运算指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与矩阵运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行矩阵运算指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数包括偏移地址和处理参数中的任一种。
其中,根据操作码和操作域确定执行矩阵运算指令所需的待处理数据和目标地址,可以包括:在 操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据,
其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:利用至少一个运算器执行与运算类型相对应的运算。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的矩阵运算指令进行解析,获得矩阵运算指令的操作码和操作域,可以包括:
存储矩阵运算指令;
对矩阵运算指令进行解析,得到矩阵运算指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括矩阵运算指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了矩阵运算指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的矩阵运算指令处理方法的适用范围广,对矩阵运算指令的处理效率高、处理速度快,能够提高矩阵数据的处理效率和速度。
本公开实施例提供了一种神经网络运算指令处理方法、装置及相关产品,以提高对数据进行神经网络运算处理的效率和速度。本公开实施例所提供的神经网络运算指令处理方法、装置及相关产品,该装置包括控制模块和处理模块。控制模块用于对接收到的神经网络运算指令进行解析,获得神经网 络运算指令的操作码和操作域,并根据操作码和操作域确定执行神经网络运算指令所需的待处理数据目标地址,以及确定与神经网络运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的神经网络运算指令处理方法、装置及相关产品的适用范围广,对神经网络运算指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
图32示出根据本公开一实施例的神经网络运算指令处理装置的框图。如图32所示,该装置包括控制模块11-6和处理模块12-6。
控制模块11-6,用于对接收到的神经网络运算指令进行解析,获得神经网络运算指令的操作码和操作域,并根据操作码和操作域确定执行神经网络运算指令所需的待处理数据和目标地址,以及确定与神经网络运算指令相对应的数据处理类型。其中,数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型。初始数据类型或目标数据类型为浮定点数数据类型。操作码用于指示神经网络运算指令对数据所需进行的处理至少包括神经网络运算处理。操作域包括待处理数据地址和目标地址。
处理模块12-6,用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在本实施例中,控制模块可以从待处理数据地址中获取待处理数据。待处理数据地址可以是存储待处理数据的首地址等。待处理数据可以为一个或多个,在待处理数据为多个时,操作域中可以包括多个待处理数据地址,以便控制模块从多个待处理数据地址分别获取所需的待处理数据。待处理数据可以是输入神经元和权值数据等。
在本实施例中,控制模块可以通过数据输入输出单元获得指令、待处理数据,该数据输入输出单元可以为一个或多个数据I/O接口或I/O引脚。
在本实施例中,操作码可以是计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示),是指令序列号,用来告知执行指令的装置具体需要执行哪一条指令。操作域可以是执行对应的指令所需的所有数据的来源,执行对应的指令所需的所有数据包括待处理数据、数据处理类型、对应的运算方法,或者存储数据处理类型、待处理数据、对应的运算方法的地址等等。对于一个神经网络运算指令其必须包括操作码和操作域,其中操作域至少包括待处理数据地址和目标地址。
应当理解的是,本领域技术人员可以根据需要对神经网络运算指令的指令格式以及所包含的操作码和操作域进行设置,本公开对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个处理模块,可以根据实际需要对控制模块和处理模块的数量进行设置,本公开对此不作限制。
本公开实施例所提供的神经网络运算指令处理装置,该装置包括控制模块和处理模块。控制模块用于对接收到的神经网络运算指令进行解析,获得神经网络运算指令的操作码和操作域,并根据操作码和操作域确定执行神经网络运算指令所需的待处理数据和目标地址,以及确定与神经网络运算指令相对应的数据处理类型。处理模块用于根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。本公开实施例所提供的神经网络运算指令处理装置的适用范围广,对神经网络运算指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
在一种可能的实现方式中,操作域还可以包括数据处理类型。控制模块11-6,还可以用于在操作域包括数据处理类型时,根据操作域确定与神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。控制模块11-6,还可以用于在操作码用于指示数据处理类型时,根据操作码确定与神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,可以为不同的数据处理类型设置不同的操作域代码和/或操作码代码,本公开对此不作限制。
在一种可能的实现方式中,可以预先设置默认数据处理类型。控制模块在根据神经网络运算指令的操作域和操作码无法确定当前神经网络运算指令的数据处理类型时,可以将默认数据处理类型确定为当前神经网络运算指令的数据处理类型。以使得处理模块可以根据默认数据处理类型对待处理数据进行处理。
在一种可能的实现方式中,操作域还可以包括输入量。其中,控制模块还用于在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在该实现方式中,控制模块可以从待处理数据地址中获取数据量为输入量的待处理数据。输入量可以是能够表征数据量大小的长度、宽度等信息。在操作域中不包括输入量时,控制模块可以直接将待处理数据地址中的全部数据获取为待处理数据。还可以根据预先设置的默认输入量,从待处理数据地址中获取到数据量为默认输入量的待处理数据,本公开对此不作限制。
在一种可能的实现方式中,初始数据类型可以包括定点数数据类型和浮点数数据类型中的任一种,目标数据类型可以包括浮定点数数据类型。或者,初始数据类型可以包括浮定点数数据类型,目标数据类型可以包括定点数数据类型和浮点数数据类型中的任一种。以实现不同数据类型之间的转换。
在该实现方式中,定点数数据类型的数据可以是采用定点数的表示方式进行表示的数据。定点数可以是8位、16位、32位等。浮点数数据类型的数据可以是采用浮点数的表示方式进行表示的数据。浮点数可以是8位、16位、32位等。
在一种可能的实现方式中,浮定点数数据类型是数据的一种二进制表示方式。浮定点数可以是8位、16位、32位等。浮定点数包括符号位、指数位、有效数位。浮定点数可以无符号位,也可以有符号位。
以8位二进制的浮定点数为例。当浮定点数中无符号位时,浮定点数中的各数位由右至左(由低到高)自0开始计数。浮定点数的指数位可以为最左边的数位,即指数的数位为第7位,也可以为8位中的任意其它数位。当浮定点数中有符号位时,浮定点数中的符号位为1位,指数位为1位,有效数位为6位。浮定点数中的符号位和指数位,可以位于浮定点数的8位数位中任意不重合的位置。本公开对此不做限定。
例如,浮定点数自右至左从0开始对数位进行计数,8位二进制形式的浮定点数X为:X 7X 6X 5X 4X 3X 2X 1X 0,其中X 7为符号位,X 6为指数位。X 5X 4X 3X 2X 1X 0为有效数位。
在一种可能的实现方式中,则浮定点数的值可以如下公式(1)所示:
±m·base p+e+1=±1.d·base 2p+e+1      公式(1)
其中,m为浮定点数的符号、base为底,通常为2。e为浮定点数的指数,p为浮定点数有效数中最 高非零位的数位,d为浮定点数的有效数的小数部分。
例如,假定浮定点数为“01010101”,则浮定点数的数值为010101*2 4+1+1=1.0101*2 2*4+1+1。利用浮定点数,可以在相同位宽的情况下,浮定点数增加数据表达范围,提高数据运算的精度。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数可以包括偏移地址和处理参数中的任一种。
其中,控制模块11-6还可以用于在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,处理模块12-6还可以用于在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在该实现方式中,处理参数可以是与获取待处理数据、对待处理数据进行处理相关的参数,例如,与获取待处理数据相关的偏移地址。与进行数据运算或处理相关的运算参数,如与数据运算相关的卷积核、步长,指示运算类型的运算参数等。本领域技术人员可以根据实际需要对处理参数所包括的内容进行设置,本公开对此不作限制。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在该实现方式中,先将待处理数据转换为目标数据类型的转换后数据,可以简化后续运算的处理过程,提高数据处理的速度和效率。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在初始数据类型与目标数据类型相同时,可以直接根据运算类型,对待处理数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。这样,简化了数据处理的过程。
在一种可能的实现方式中,神经网络运算指令的初始数据类型和/或目标数据类型可以是根据神经网络运算指令的操作域或操作码确定的,也可以是根据预先设置的神经网络运算指令的第二默认初始数据类型和第二默认目标数据类型确定的,还可以是根据神经网络运算指令的操作域或操作码、以及预先设置的第二默认初始数据类型和第二默认目标数据类型确定的,本公开对此不作限制。
其中,可以预先设置第二默认初始数据类型和第二默认目标数据类型。控制模块在根据神经网络运算指令无法确定初始数据类型和/或目标数据类型时,可以将第二默认初始数据类型和/或第二默认目标数据类型确定为当前神经网络运算指令的初始数据类型和/或目标数据类型。例如,控制模块在根据神经网络运算指令1的仅可以确定初始数据类型时,则可以将第二默认目标数据类型确定为神经网络运算指令1的目标数据类型。控制模块在根据神经网络运算指令1仅可以确定目标数据类型时,则可以将第二默认初始数据类型确定为神经网络运算指令1的初始数据类型。控制模块在根据神经网络运算指令1无法初始数据类型和目标数据类型时,则可以将第二默认初始数据类型和第二默认目标数据类型分别确定为神经网络运算指令1的初始数据类型和目标数据类型。
在一种可能的实现方式中,数据处理类型还可以包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:对初始位数、 初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,初始位数和目标位数可以是根据神经网络运算指令的操作域或操作码确定的,也可以是根据预先设置的神经网络运算指令的默认初始位数和默认目标位数确定的,还可以是根据神经网络运算指令的操作域或操作码、以及预先设置的默认初始位数和默认目标位数确定的,本公开对此不作限制。
其中,可以预先设置默认初始位数和默认目标位数。控制模块在根据神经网络运算指令无法确定初始位数和/或目标位数时,可以将默认初始位数和/或默认目标位数确定为当前神经网络运算指令的初始位数和/或目标位数。例如,控制模块在根据神经网络运算指令1的仅可以确定初始位数时,则可以将默认目标位数确定为神经网络运算指令1的目标位数。控制模块在根据神经网络运算指令1仅可以确定目标位数时,则可以将默认初始位数确定为神经网络运算指令1的初始位数。控制模块在根据神经网络运算指令1无法初始位数和目标位数时,则可以将默认初始位数和默认目标位数分别确定为神经网络运算指令1的初始位数和目标位数。
在一种可能的实现方式中,初始位数和目标位数可以是8位、16位、32位等。举例来说,可以将8位的浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位的定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位定点数数据类型的转换后数据。可以将8位定点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位定点数数据类型的转换后数据。可以将16位定点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将16位浮定点数数据类型的待处理数据转换为8位浮点数数据类型的转换后数据。可以将8位浮点数数据类型的待处理数据转换为16位浮定点数数据类型的转换后数据。可以将8位浮定点数数据类型的待处理数据转换为16位浮点数数据类型的转换后数据。可以将16位浮点数数据类型的待处理数据转换为8位浮定点数数据类型的转换后数据。
应当理解的是,本领域技术人员可以根据实际需要对神经网络运算指令中所指示的数据处理类型所包含的内容、以及初始数据类型、目标数据类型、初始位数、目标位数和运算类型在神经网络运算指令中的代码进行设置,本公开对此不作限制。
在一种可能的实现方式中,神经网络运算指令可以是与神经网络相关的运算相关的指令。与神经网络相关的运算包括卷积运算,最大池化、平均池化等池化运算,全连接运算,基于激活函数所进行的激活等运算。其中,激活函数可以包括线性整流函数(Rectified Linear Unit,ReLU,也可称ReLU函数)、exp函数(以自然数e为底的指数函数)等指数函数(exponential function)、S型生长曲线函数(Sigmoid function,也可称Sigmoid函数)等线性函数。举例来说,神经网络运算指令可以包括卷积运算指令、池化运算指令、全连接运算指令、激活运算指令中的至少一种。
图33示出根据本公开一实施例的神经网络运算指令处理装置的框图。在一种可能的实现方式中,如图33所示,处理模块12-6可以包括至少一个运算器120’-6,该运算器120’-6用于执行与运算类型相对应的运算。运算器可以包括加法器、乘法器、除法器、激活运算器等,本公开对此不作限制。
在一种可能的实现方式中,如图33所示,该装置还可以包括存储模块13-6。存储模块13-6用于存储待处理数据。
在该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括速暂存缓存。可以根据需要将待处理数据在存储模块中的内存、缓存和/或寄存器中,本公开对此不作限制。
在一种可能的实现方式中,该装置还可以包括直接内存访问模块,用于从存储模块中读取或者存储数据。
在一种可能的实现方式中,如图33所示,控制模块11-6可以包括指令存储子模块111-6、指令处理子模块112-6和队列存储子模块113-6。
指令存储子模块111-6用于存储神经网络运算指令。
指令处理子模块112-6用于对神经网络运算指令进行解析,得到神经网络运算指令的操作码和操作域。
队列存储子模块113-6用于存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括神经网络运算指令。多个待执行指令可以包括还可以包括与神经网络运算指令相关的其他神经网络运算指令。
在该实现方式中,可以根据待执行指令的接收时间、优先级别等对多个待执行指令的执行顺序进行排列获得指令队列,以便于根据指令队列依次执行多个待执行指令。
在一种可能的实现方式中,如图33所示,控制模块11-6还可以包括依赖关系处理子模块114-6。
依赖关系处理子模块114-6,用于在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,将第一待执行指令缓存在指令存储子模块112-6中,在第零待执行指令执行完毕后,从指令存储子模块112-6中提取第一待执行指令发送至处理模块12-6。其中,第一待执行指令和第零待执行指令是多个待执行指令中的指令。
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。反之,第一待执行指令与第零待执行指令之间没有关联关系可以是第一存储地址区间与第零存储地址区间没有重叠区域。
通过这种方式,可以根据待执行指令之间的依赖关系,使得在先的待执行令执行完毕之后,再执行在后的待执行指令,保证运算结果的准确性。
在本实施例中,可以为不同的神经网络运算指令设置不同的操作码的代码或标识,以区分不同的神经网络运算指令。
在一种可能的实现方式中,神经网络运算指令的指令格式可以是:
FY,IN,OUT,size,type4,type1.type2,a.b,pa
其中,FY为操作码,IN、OUT、size、type1.type2、a.b、pa为操作域。FY表示该指令为神经网络运算指令。type1.type2中的type1表示初始数据类型,type1.type2中的type2表示目标数据类型。a.b中的a表示初始位数,a.b中的b表示目标位数。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。 type1.type2、a.b、size、pa可缺省。
在一种可能的实现方式中,神经网络运算指令的指令格式可以是:
FY,IN,OUT,size,type4,pa
其中,FY为操作码,IN、OUT、size、pa为操作域。FY表示该指令为神经网络运算指令。type4表示运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,神经网络运算指令的指令格式可以是:
type4,IN,OUT,size,pa
其中,type4为操作码,IN、OUT、size、pa为操作域。type4表示该指令为神经网络运算指令,且表示该神经网络运算指令的运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,神经网络运算指令的指令格式可以是:
FY,IN,OUT,size,type5,pa
其中,FY为操作码,IN、OUT、type5、size、pa为操作域。FY表示该指令为神经网络运算指令。type5表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
在一种可能的实现方式中,神经网络运算指令的指令格式可以是:
type5,IN,OUT,size,pa
其中,type5为操作码,IN、OUT、size、pa为操作域。type5表示该指令为神经网络运算指令,且表示数据处理类型,该数据处理类型包括指定的初始位数、初始数据类型、目标位数、目标数据类型以及运算类型。IN表示待处理数据地址。OUT表示目标地址。size表示输入量。pa为处理参数,在处理参数为多个时,可以在指令中设置pa0、pa1…、pan多个位置,以指示不同的处理参数;或者也可以采用pa0.pa1.….pan的形式表示多个处理参数。size、pa可缺省。
其中,在待处理数据为多个时,神经网络运算指令中可以包括多个待处理数据地址,以待处理数据为两个为例,其指令格式可以为以下任一种:
FY,IN1,IN2,OUT,size,type4,type1.type2,a.b,pa
FY,IN1,IN2,OUT,size,type4,pa
type4,IN1,IN2,OUT,size,pa
FY,IN1,IN2,OUT,size,type4,pa
FY,IN1,IN2,OUT,size,type5,pa
type5,IN1,IN2,OUT,size,pa
其中,IN1为第一待处理数据地址,IN2为第二待处理数据地址。
下述表格20为本公开实施例提供的不同神经网络运算指令的示例。本领域技术人员可以根据实际需要对神经网络运算指令的操作码的代码或标识、以及神经网络运算指令的操作域中不同参数的位置进行设置,本公开对此不作限制。
表20 神经网络运算指令示例
Figure PCTCN2019120879-appb-000020
应当理解的是,本领域技术人员可以根据需要对神经网络运算指令的操作码、神经网络运算指令格式中操作码以及操作域的位置进行设置,本公开对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics Processing Unit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了神经网络运算指令处理装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的技术方案即可。
图34示出根据本公开一实施例的神经网络运算指令处理方法的流程图。如图34所示,该方法应用于上述神经网络运算指令处理装置,该方法包括步骤S51-6和步骤S52-6。
在步骤S51-6中,对接收到的神经网络运算指令进行解析,获得神经网络运算指令的操作码和操作域,并根据操作码和操作域确定执行神经网络运算指令所需的待处理数据和目标地址,以及确定与神经网络运算指令相对应的数据处理类型。其中,操作码用于指示神经网络运算指令对数据所需进行的处理至少包括神经网络运算处理。数据处理类型包括待处理数据的初始数据类型、处理后的数据的目标数据类型和运算类型,初始数据类型或目标数据类型为浮定点数数据类型。操作域包括待处理数据地址和目标地址。
在步骤S52-6中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,并将处理后的数据存入目标地址中。
在一种可能的实现方式中,操作域还可以包括数据处理类型。其中,确定与神经网络运算指令相对应的数据处理类型,可以包括:在操作域包括数据处理类型时,根据操作域确定与神经网络运算指 令相对应的数据处理类型。
在一种可能的实现方式中,操作码还可以用于指示数据处理类型。其中,确定与神经网络运算指令相对应的数据处理类型,可以包括:在操作码用于指示数据处理类型时,根据操作码确定与神经网络运算指令相对应的数据处理类型。
在一种可能的实现方式中,操作域还可以包括输入量。其中,根据操作码和操作域确定执行神经网络运算指令所需的待处理数据和目标地址,可以包括:在操作域中包括输入量时,从待处理数据地址中获取与输入量相对应的待处理数据。
在一种可能的实现方式中,操作域还可以包括处理参数,处理参数包括偏移地址和处理参数中的任一种。
其中,根据操作码和操作域确定执行神经网络运算指令所需的待处理数据和目标地址,可以包括:在操作域包括偏移地址时,根据待处理数据地址和偏移地址,获取待处理数据。
其中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:在操作域包括处理参数时,根据数据处理类型和处理参数,对待处理数据进行处理,得到处理后的数据。
在一种可能的实现方式中,根据数据处理类型对待处理数据进行处理,得到处理后的数据,可以包括:
在初始数据类型与目标数据类型不同时,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据;
根据运算类型,对转换后数据进行运算处理,得到运算结果,并将运算结果确定为处理后的数据。
在一种可能的实现方式中,数据处理类型还包括初始位数和目标位数。其中,对初始数据类型的待处理数据进行数据类型转换处理,得到目标数据类型的转换后数据,可以包括:
对初始位数、初始数据类型的待处理数据进行数据类型转换处理,得到目标位数、目标数据类型的转换后数据。
在一种可能的实现方式中,该方法还可以包括:利用至少一个运算器执行与运算类型相对应的运算。
在一种可能的实现方式中,该方法还可以包括:存储待处理数据。
在一种可能的实现方式中,对接收到的神经网络运算指令进行解析,获得神经网络运算指令的操作码和操作域,可以包括:
存储神经网络运算指令;
对神经网络运算指令进行解析,得到神经网络运算指令的操作码和操作域;
存储指令队列,指令队列包括按照执行顺序依次排列的多个待执行指令,多个待执行指令可以包括神经网络运算指令。
在一种可能的实现方式中,该方法还可以包括:
在确定多个待执行指令中的第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系时,缓存第一待执行指令,并在确定第零待执行指令执行完毕后,控制进行第一待执行指令的执行,
其中,第一待执行指令与第一待执行指令之前的第零待执行指令存在关联关系包括:
存储第一待执行指令所需数据的第一存储地址区间与存储第零待执行指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了神经网络运算指令处理方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本公开的技术方案即可。
本公开实施例所提供的神经网络运算指令处理方法的适用范围广,对神经网络运算指令的处理效率高、处理速度快,能够提高数据的处理效率和速度。
本公开提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述目标装置,目标装置可以包括上述计算装置、数据处理装置、数据运算装置、数据转换装置、指令处理装置、数据类型转换指令处理装置、标量运算指令处理装置、向量运算指令处理装置、矩阵运算指令处理装置、神经网络运算指令处理装置中的一种或多种,用于从其他处理装置中获取待处理数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得指令和/或数据,并将执行结果通过I/O接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上目标装置时,目标装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图35a示出根据本公开一实施例的组合处理装置的框图。如图35a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制神经网络运算指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制神经网络运算指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
图35b示出根据本公开一实施例的组合处理装置的框图。在一种可能的实现方式中,如图35b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和其他处理装置连接。存储装置用于保存在机器学习运算装置和其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本公开提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
本公开提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本公开提供一种板卡,图36示出根据本公开一实施例的板卡的结构示意图。如图36所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片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超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (20)

  1. 一种计算装置,其特征在于,所述计算装置用于执行机器学习计算,所述装置包括控制器模块、运算模块、数据格式转换模块和数据格式选择模块,
    所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换;
    所述运算模块用于在所述控制器模块的控制下,根据格式转换后的待运算数据进行运算。
  2. 根据权利要求1所述的装置,其特征在于,所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换,包括:
    所述控制器模块用于根据所述数据格式选择模块发送的数据格式转换指令和所述待运算数据,确定是否对所述待运算数据进行数据格式转换,所述数据格式转换指令包括转换前的数据格式和转换后的数据格式;
    当确定对所述待运算数据进行数据格式转换时,所述控制器模块控制所述数据格式转换模块对待运算数据进行数据格式转换。
  3. 根据权利要求1所述的装置,其特征在于,所述运算模块包括多个运算子模块,各所述运算子模块分别用于对预设的数据格式的数据进行运算。
  4. 根据权利要求1所述的装置,其特征在于,所述数据格式转换模块用于:
    待运算数据获取子模块,用于获取待运算数据;
    定位数位获取子模块,用于在待运算数据中确定定位数位;
    目标数位确定子模块,用于根据所述定位数位,在所述待运算数据中确定第一目标数位,以及确定在所述待运算数据的转换后数据中,与所述第一目标数位对应的第二目标数位;
    数值确定子模块,用于根据所述待运算数据中所述第一目标数位的数值,确定所述转换后数据中所述第二目标数位的数值;
    转换后数据获取子模块,用于根据所述第二目标数位的数值得到所述转换后数据。
  5. 根据权利要求4所述的装置,其特征在于,所述定位数位获取子模块,包括:
    定位数位获取单元,用于在所述待运算数据的数据格式为定点数时,将二进制形式的定点数的整数部分中由高位至低位第一个1所在的数位,确定为定位数位。
  6. 根据权利要求4或5所述的装置,其特征在于,所述转换后数据为二进制形式的整数,所述目标数位确定子模块,用于:
    若所述定位数位为第N数位,在最低位的数位为第0数位,N为偶数的情况下,将第N-1数位至第N/2+1数位确定为所述定点数中的第一目标数位;
    在所述转换后数据中确定与所述第一目标数位对应的第二目标数位。
  7. 根据权利要求6所述的装置,其特征在于,所述目标数位确定子模块,还用于:将所述转换后数据中与所述第一目标数位对应的第二目标数位确定为第N/2-2数位至第0数位。
  8. 根据权利要求6所述的装置,其特征在于,所述转换后的数据包括尾数位和幂次位,所述转换后数据获取子模块,包括:
    尾数位数值获取单元,用于根据所述第二目标数位的数值确定所述转换后数据中尾数位的数值;
    幂次位指数位获取单元,用于根据所述待运算数据中定位数位上的数值,确定所述转换后数据中幂次位和指数位的数值;
    转换后数据获取单元,用于根据所述尾数位的数值、所述幂次位的数值和所述指数位的数值,得到所述转换后的数据。
  9. 根据权利要求8所述的装置,其特征在于,所述尾数位数值获取单元,用于:
    当所述转换后数据的尾数位的位宽大于所述第二目标数位的位宽时,根据所述第二目标数位的数值和预设的补齐数值,确定所述转换后数据中的尾数位的数值。
  10. 根据权利要求8所述的装置,其特征在于,所述幂次位指数位获取单元,用于:
    当所述定位数位上的数值为偶数时,将所述转换后数据中幂次位的数值确定为0,或
    当所述定位数位上的数值为奇数时,将所述转换后数据中幂次位的数值确定为1。
  11. 根据权利要求4至10中任一项所述的装置,其特征在于,所述定点数的位宽为M,所述转换后数据的位宽为N,M≥2N。
  12. 根据权利要求4所述的装置,其特征在于,所述定位数位获取子模块,用于:
    在所述待运算数据的数据格式为指定数据格式时,将所述待运算数据中由高位至低位第一个1所在的数位,确定为定位数位,其中,
    所述指定数据格式为八位二进制形式的整数,所述指定数据格式中包括幂次位和尾数位,所述幂次位位于高位,所述尾数位位于低位。
  13. 根据权利要求12所述的装置,其特征在于,所述转换后数据的数据格式为十六位二进制形式的定点数,所述目标数位确定子模块,用于:
    若定位数位为第N数位,将第N-2数位至第0数位确定为待运算数据中的第一目标数位;
    将所述转换后数据中由高位至低位的第二个数位开始的N-1个数位,确定为所述转换后数据中与所述第一目标数位对应的第二目标数位。
  14. 根据权利要求13所述的装置,其特征在于,所述转换后数据获取子模块,用于:
    确定所述转换后数据中,第十六数位的数值;
    根据第十六数位和所述第二目标数位的数值得到所述转换后数据。
  15. 根据权利要求14所述的装置,其特征在于,所述转换后数据获取子模块,用于:将除第十六数位和所述第二目标数位之外的数位设为0。
  16. 根据权利要求1所述的装置,其特征在于,所述控制器模块用于根据所述数据格式选择模块确定的数据转换格式,控制所述数据格式转换模块对待运算数据进行数据格式转换,包括:
    所述控制器模块,用于获取待运算数据、机器学习模型、计算指令以及所述数据格式选择模块确定的数据转换格式;
    所述控制器模块,用于控制所述数据格式转换模块对待运算数据进行数据格式转换,得到转换后的待运算数据;
    所述控制器模块,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述转换后的待运算数据发送给所述运算模块。
  17. 一种神经网络运算装置,其特征在于,所述神经网络运算装置包括一个或多个如权利要求1-16任一项所述的计算装置,所述神经网络运算装置用于完成设定的神经网络运算。
  18. 一种组合运算装置,其特征在于,所述组合运算装置包括一个或多个如权利要求17任一项所述的神经网络运算装置,通用互联接口和其他处理装置;
    所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。
  19. 一种神经网络芯片,其特征在于,所述神经网络芯片包括:
    如权利要求1-16任一项所述的计算装置;或
    如权利要求17所述的神经网络运算装置;或
    如权利要求18所述的组合处理装置。
  20. 一种电子设备,其特征在于,所述电子设备包括:
    如权利要求1-16任一项所述的计算装置;或
    如权利要求17所述的神经网络运算装置;或
    如权利要求18所述的组合处理装置;或
    如权利要求19所述的神经网络芯片。
PCT/CN2019/120879 2018-11-30 2019-11-26 运算方法、装置及相关产品 WO2020108470A1 (zh)

Applications Claiming Priority (24)

Application Number Priority Date Filing Date Title
CN201811459240.2A CN109583581B (zh) 2018-11-30 2018-11-30 数据转换装置及相关产品
CN201811456697.8 2018-11-30
CN201811456698.2A CN109582277A (zh) 2018-11-30 2018-11-30 数据处理方法、装置及相关产品
CN201811459240.2 2018-11-30
CN201811456697.8A CN109558109B (zh) 2018-11-30 2018-11-30 数据运算装置及相关产品
CN201811456698.2 2018-11-30
CN201811459231.3A CN109558110B (zh) 2018-11-30 2018-11-30 数据转换装置及相关产品
CN201811459231.3 2018-11-30
CN201811456719.0 2018-11-30
CN201811456719.0A CN109583579B (zh) 2018-11-30 2018-11-30 计算装置及相关产品
CN201811621244.6 2018-12-28
CN201811621254.XA CN111401536A (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811622473.X 2018-12-28
CN201811622462.1A CN111381873A (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811622473.XA CN111382851A (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811622462.1 2018-12-28
CN201811621245.0 2018-12-28
CN201811621262.4A CN111381872A (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811621244.6A CN111382850A (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811621254.X 2018-12-28
CN201811621258.8 2018-12-28
CN201811621258.8A CN111382390B (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811621245.0A CN111381871B (zh) 2018-12-28 2018-12-28 运算方法、装置及相关产品
CN201811621262.4 2018-12-28

Publications (1)

Publication Number Publication Date
WO2020108470A1 true WO2020108470A1 (zh) 2020-06-04

Family

ID=70853861

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/120879 WO2020108470A1 (zh) 2018-11-30 2019-11-26 运算方法、装置及相关产品

Country Status (1)

Country Link
WO (1) WO2020108470A1 (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464788A (zh) * 2008-12-31 2009-06-24 北京中星微电子有限公司 二进制数是否为三的倍数的检验方法和装置及检验芯片
CN103559171A (zh) * 2013-11-04 2014-02-05 北京锐安科技有限公司 网络应用中的数据格式转换方法和装置
CN104580097A (zh) * 2013-10-22 2015-04-29 腾讯科技(深圳)有限公司 一种数据处理方法、装置及系统
CN109558110A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 数据转换装置及相关产品
CN109558109A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 数据运算装置及相关产品
CN109582277A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN109583579A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 计算装置及相关产品
CN109583581A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 数据转换装置及相关产品

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101464788A (zh) * 2008-12-31 2009-06-24 北京中星微电子有限公司 二进制数是否为三的倍数的检验方法和装置及检验芯片
CN104580097A (zh) * 2013-10-22 2015-04-29 腾讯科技(深圳)有限公司 一种数据处理方法、装置及系统
CN103559171A (zh) * 2013-11-04 2014-02-05 北京锐安科技有限公司 网络应用中的数据格式转换方法和装置
CN109558110A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 数据转换装置及相关产品
CN109558109A (zh) * 2018-11-30 2019-04-02 上海寒武纪信息科技有限公司 数据运算装置及相关产品
CN109582277A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 数据处理方法、装置及相关产品
CN109583579A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 计算装置及相关产品
CN109583581A (zh) * 2018-11-30 2019-04-05 上海寒武纪信息科技有限公司 数据转换装置及相关产品

Similar Documents

Publication Publication Date Title
CN109740739B (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111381871B (zh) 运算方法、装置及相关产品
WO2021078212A1 (zh) 用于向量内积的计算装置、方法和集成电路芯片
CN111008003B (zh) 数据处理器、方法、芯片及电子设备
JP2020126595A (ja) 計算装置と計算方法
CN110515589B (zh) 乘法器、数据处理方法、芯片及电子设备
TWI774093B (zh) 用於轉換資料類型的轉換器、晶片、電子設備及其方法
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
WO2021078210A1 (zh) 用于神经网络运算的计算装置、方法、集成电路和设备
WO2023040389A1 (zh) 转数方法、存储介质、装置及板卡
CN110531954B (zh) 乘法器、数据处理方法、芯片及电子设备
CN113031912B (zh) 乘法器、数据处理方法、装置及芯片
CN111258633B (zh) 乘法器、数据处理方法、芯片及电子设备
WO2020108470A1 (zh) 运算方法、装置及相关产品
CN111047005A (zh) 运算方法、装置、计算机设备和存储介质
WO2022001500A1 (zh) 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN109582277A (zh) 数据处理方法、装置及相关产品
CN113031911B (zh) 乘法器、数据处理方法、装置及芯片
CN113031916B (zh) 乘法器、数据处理方法、装置及芯片
CN113031915B (zh) 乘法器、数据处理方法、装置及芯片
CN111260070B (zh) 运算方法、装置及相关产品
CN110515588B (zh) 乘法器、数据处理方法、芯片及电子设备
CN112395003A (zh) 运算方法、装置及相关产品
CN110515586B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111258641B (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: 19889433

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 31.08.2021)

122 Ep: pct application non-entry in european phase

Ref document number: 19889433

Country of ref document: EP

Kind code of ref document: A1