CN111857821A - 一种用于生成服从一定分布的随机向量装置和方法 - Google Patents
一种用于生成服从一定分布的随机向量装置和方法 Download PDFInfo
- Publication number
- CN111857821A CN111857821A CN202010614808.4A CN202010614808A CN111857821A CN 111857821 A CN111857821 A CN 111857821A CN 202010614808 A CN202010614808 A CN 202010614808A CN 111857821 A CN111857821 A CN 111857821A
- Authority
- CN
- China
- Prior art keywords
- random vector
- vector generation
- random
- instruction
- distribution
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 272
- 238000009826 distribution Methods 0.000 title claims abstract description 58
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000009827 uniform distribution Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 6
- 210000002569 neuron Anatomy 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- -1 i.e. Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Image Analysis (AREA)
Abstract
本公开公开了一种用于生成随机向量的装置和方法。该装置包括:存储单元,用于存储随机向量生成指令相关的向量数据;寄存器单元,用于存储随机向量生成指令相关的标量数据;控制单元,用于对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程;随机向量生成单元,用于根据译码后的随机向量生成指令,生成服从指定分布的随机向量;其中,所述随机向量生成单元为定制的硬件电路。本公开提供的随机向量生成装置及方法,通过定制的硬件电路实现了随机向量生成指令的完整过程,即通过一条随机向量生成指令即可实现随机向量生成运算。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种用于生成服从一定分布的随机向量的装置和方法,可以根据指令生出任意长度的服从一定分布的随机向量,随机分布的方式有多种,包括但不限于均匀分布和高斯分布。
背景技术
随机向量,即向量中的每一个数值都是服从某一随机分布生成的结果。在人工神经网络的受限玻尔兹曼机中,即存在这样的步骤,要求对一组神经元组成的向量进行采样,即将向量中每一个神经元与一个随机数进行比较,神经元的值大于该向量就取1反之取0,这要求生成一组与神经元向量同等大小的由服从某一分布的随机数组成的随机向量。又比如将一组32位单精度浮点数转换值16位的半精度浮点数,如果选择随机进位的方法,则需要将截断部分与满足某分布的随机数进行比较,大于该随机数选择进1,这同样要求有一组满足某一分布的随机数,即随机向量。
在现有技术中,一种最常用的实现生成随机向量的方法是在通用处理器上逐个生成满足某一分布的随机数。但是,这种方法每次只能生成一个随机数,在要求的数量较大时效率较低。同时在生成随机数时需要多条指令配合才能够完成该过程。
公开内容
有鉴于此,本公开提供了一种用于生成服从一定分布的随机向量装置和方法,用于能够生成满足某一分布的任意长度的随机向量,根据指令,可以选择多种分布和任意长度。
根据本公开第一方面,提供了一种用于生成随机向量装置,该装置包括:
存储单元,用于存储随机向量生成指令相关的向量数据;
寄存器单元,用于存储随机向量生成指令相关的标量数据;
控制单元,用于对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程;
随机向量生成单元,用于根据译码后的随机向量生成指令,生成服从指定分布的随机向量;
其中,所述随机向量生成单元为定制的硬件电路。
优选地,所述寄存器单元所存储的标量数据包括随机向量生成指令相关的随机向量存储地址、随机向量长度以及分布参数;其中,所述随机向量存储地址为所述存储单元中的地址。
优选地,所述控制单元包括:
指令队列模块,用于对译码后的随机向量生成指令进行顺序存储,并获取随机向量生成指令相关的标量数据。
优选地,所述控制单元包括:
依赖关系处理单元,用于在随机向量生成单元获取当前随机向量生成指令前,判断当前随机向量生成指令与之前未执行完的运算指令是否存在依赖关系。
优选地,所述控制单元包括:
存储队列模块,用于在当前随机向量生成指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前随机向量生成指令,并且在该依赖关系消除时,将暂存的随机向量生成指令送往随机向量生成单元。
优选地,所述装置还包括:
指令缓存单元,用于存储待执行的随机向量生成指令;
输入输出单元,用于将随机向量生成指令相关的向量数据存储于存储单元,或者,从存储单元中获取随机向量生成指令相关的向量数据。
优选地,所述随机向量生成指令包括操作码和操作域;
所述操作码用于指示执行指定分布的随机向量生成操作;
所述操作域包括立即数和/或寄存器号,指示随机向量生成相关的标量数据,其中寄存器号指向所述寄存器单元地址。
优选地,所述存储单元为高速暂存存储器。
根据本公开第二方面,提供了一种用于生成随机向量的装置,其该装置包括:
取指模块,用于从指令序列中取出下一条要执行的随机向量生成指令,并将该随机向量生成指令传给译码模块;
译码模块,用于对该随机向量生成指令进行译码,并将译码后的随机向量生成指令传送给指令队列模块;
指令队列模块,用于暂存译码后的随机向量生成指令,并从随机向量生成指令或标量寄存器获得随机向量生成指令相关的标量数据;获得所述标量数据后,将所述随机向量生成指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储随机向量生成指令相关的标量数据;
依赖关系处理单元,用于判断所述随机向量生成指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述随机向量生成指令送至存储队列模块,如果不存在依赖关系,则将所述随机向量生成指令送至随机向量生成单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的随机向量生成指令,并且在所述依赖关系解除后,将所述随机向量生成指令送至随机向量生成单元;
随机向量生成单元,用于根据接收到随机向量生成指令生成服从指定分布的随机向量;
高速暂存存储器,用于存储生成的随机向量;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责向所述高速暂存存储器中写入生成的随机向量。
优选地,所述随机向量生成单元为定制的硬件电路。
根据本公开第三方面,提供了一种用于生成随机向量的方法,该方法包括:
取值模块从指令序列中取出下一条要执行的随机向量生成指令,并将该随机向量生成指令传给译码模块;
译码模块对该随机向量生成指令进行译码,并将译码后的随机向量生成指令传送给指令队列模块;
指令队列模块暂存译码后的随机向量生成指令,并从随机向量生成指令或标量寄存器获得随机向量生成指令运算相关的标量数据;获得所述标量数据后,将所述随机向量生成指令送至依赖关系处理单元;
依赖关系处理单元判断所述随机向量生成指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述随机向量生成指令送至存储队列模块,如果不存在依赖关系,则将所述随机向量生成指令送至随机向量生成单元;
存储队列模块存储与之前运算指令存在依赖关系的随机向量生成指令,并且在所述依赖关系解除后,将所述随机向量生成指令送至随机向量生成单元;
随机向量生成单元根据接收到的随机向量生成指令,生成服从指定分布的随机向量,并通过输入输出存取模块将生成的随机向量写入高速暂存存储器。
本公开提供的随机向量生成装置及方法,通过定制的硬件电路实现了随机向量生成指令的完整过程,即通过一条随机向量生成指令即可实现随机向量生成运算。本公开通过将参与计算的向量数据暂存在高速暂存存储器上(Scratchpad Memory),使得可以更加灵活有效地支持不同宽度的向量数据,同时定制的随机数生成单元能够更加高效地生成服从各种分布的随机数据,提升需要大量随机向量的算法的执行性能,本公开采用的一条指令即可实现生成一组随机向量。
本公开可以应用于以下场景中(包括但不限于):数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是本公开提供的随机向量生成装置的结构示意图。
图2是本公开提供的随机向量生成指令的格式示意图。
图3是本公开实施例提供的随机向量生成装置的结构示意图。
图4是本公开实施例提供的随机向量生成方法的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开提供一种用于生成随机向量的装置,包括存储单元、寄存器单元、控制单元和随机向量生成单元,存储单元用于存储向量,寄存器单元用于存储向量存储地址和其他标量参数,控制单元用于执行译码操作,根据指令控制各个模块,随机向量生成单元根据随机向量生成运算指令在指令中或寄存器单元中获取向量存储地址、分布参数、长度和其他参数,然后生成满足指令指定分布和指定长度的随机向量。本公开中,所述存储单元采用高速暂存存储器,本公开将生成的向量数据暂存在高速暂存存储器上,使得运算过程中可以更加灵活有效地支持不同宽度的向量数据,提升需要大量随机向量数据的算法执行性能。
图1是本公开提供的用于生成随机向量装置的结构示意图,如图1所示,装置包括:
存储单元,用于存储随机向量生成指令相关的向量数据,在一种实施方式中,该存储单元可以是高速暂存存储器(Scratchpad Memory),能够支持不同大小的向量数据;本公开将必要的计算数据暂存在高速暂存存储器上,使得本装置可以更加灵活有效地支持不同宽度的数据。所述随机向量生成指令相关的向量数据包括生成的随机向量。所述高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等实现。
寄存器单元,用于存储随机向量生成相关的标量数据,如生成的随机向量存储地址,也可用于存储其他运算过程中用到的标量数据,例如随机向量生成指令指定的分布参数,如均匀分布的上下界,高斯分布的均值和方差。其中,生成的随机向量存储地址为向量在存储单元中存储的地址。
控制单元,用于对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程;其主要通过控制装置中各个模块的行为实现对随机向量生成指令的执行过程的控制;在一种实施方式中,控制单元读取准备好的指令,进行译码生成控制信号,发送给装置中的其他模块,其他模块根据得到的控制信号执行相应的操作。
随机向量生成单元,该单元根据指令实现生成服从指定分布的指定长度的随机向量。该单元是向量运算单元,同时生成随机向量中的每一个元素。所述随机向量生成单元为定制的硬件电路,包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等;所述随机向量生成单元通过与该装置中的其它模块相互协作,能够生成任意长度服从指定分布的随机向量。
需要注意的是,针对随机向量生成的不同要求,在随机向量生成单元中实际上包含了多个并行的随机数生成模块,每个模块在每次执行过程中可以生成一个随机数。因此当生成随机向量时,实际上是多个并行的随机数生成模块不断生成若干个随机向量段,最终得到要求长度的随机向量。而对于每一个随机数生成模块,其中包含两个主要部分来满足生成任意分布随机数的要求。
在一实施例中,所述随机向量生成单元包括两个模块:
其一是LFSR模块,用于生成服从均匀分布的随机数,此外还可以通过检测电阻热噪声的方式生成真随机数;
其二是Ziggurat算法模块,用于生成服从任意分布(如高斯分布的)的随机数,在执行时需要调用LFSR模块。生成均匀分布随机数的模块在初始时需要配置随机种子,不同模块可以配置不同的随机种子。
根据本公开的一种实施方式,所述装置还包括:指令缓存单元,用于存储待执行的运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将被提交。
根据本公开的一种实施方式,所述装置中的控制单元还包括:指令队列模块,用于对译码后的随机向量生成指令进行顺序存储,其通过随机向量生成指令中的操作域获取随机向量生成指令相关的标量数据,如指定的分布参数、随机向量长度和随机向量存储地址等,将其填充至随机向量生成指令后将其送往依赖关系处理单元。
根据本公开的一种实施方式,所述装置的控制单元还包括:依赖关系处理单元,用于在随机向量生成单元获取指令前,判断该随机向量生成指令与之前未执行完的指令是否存在依赖关系,如是否访问相同的向量存储地址。如果存在依赖关系,则将该随机向量生成指令存储在存储队列模块中,待与其存在依赖关系的运算指令执行完毕后,存储队列模块将该随机向量生成指令提供给所述随机向量生成单元;否则,直接将该随机向量生成指令提供给所述随机向量生成单元。具体地,随机向量生成指令访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,所述装置的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给随机向量生成单元。
根据本公开的一种实施方式,所述装置还包括:输入输出单元,用于将生成的随机向量存储于存储单元。同时,负责从内存中读取向量数据或写入向量数据。
根据本公开的一种实施方式,本装置的指令设计使得一条指令可以生成一条任意长度的随机向量。
在本装置生成随机向量的过程中,所述装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在获取全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至运算单元执行。在定制的运算单元中,该条指令将快速执行完毕,并将结果,即生成的随机向量写回至指令提供的地址,该条指令执行完毕。
图2是本公开提供的随机向量生成指令的格式示意图,如图2所示,所述随机向量生成指令包括一操作码和至少一操作域,其中,操作码用于指示生成服从何种分布的随机向量,如高斯分布或均匀分布等;操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要生成一个向量时,根据寄存器号可以在相应的寄存器中获取输出向量存储起始地址和向量长度,以及分布的参数,然后将根据该分布生成的随机向量存至指定的地址。
本公开一实施例中可以实现下列几种随机向量生成指令:
均匀分布指令(UNIF),根据该指令,装置从指令或从寄存器堆中读取均匀分布的上界参数和下界参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从该均匀分布的随机向量,并将生成的随机向量结果写回至指定的高速暂存存储器的存储地址。
高斯分布指令(GAUS),根据该指令,装置从指令或从寄存器堆中读取高斯分布的均值参数和方差参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至指定的高速暂存存储器的存储地址。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图3是本公开一实施例提供的随机向量生成装置的结构示意图,如图3所示,所述装置包括取指模块、译码模块、指令队列、标量寄存器堆、依赖关系处理单元、存储队列、随机向量生成单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列模块,该模块用于暂存从译码模块获得的指令,并从指令或标量寄存器获得指令运算相应的数据,包括生成的随机向量长度、存储地址和分布参数等。获得标量数据后,指令被送至依赖关系处理单元;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器,各种标量参数可以直接在指令的操作域中给出,也可以从标量寄存器堆中读取;
依赖关系处理单元,该单元用于处理随机向量生成指令与之前未执行完的指令可能存在的存储依赖关系。随机向量生成指令可能会访问高速暂存存储器如将生成的随机向量存储至高速暂存存储器等,前后指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令被送至存储队列模块内等待至依赖关系被消除。即检测本条指令的输入数据的存储区间与之前没有执行完毕的指令的输出数据的存储区间是否有重叠,存储区间是由起始地址和数据长度决定的。如果有重叠,则说明本条指令实际上是需要之前指令的执行结果作为输入的,因此必须等到那条指令执行完毕后,这条指令才能开始执行。在这个过程中,指令实际被暂存在存储队列模块中。
存储队列模块,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;依赖关系被消除后的随机向量生成指令被送往随机向量生成单元;
随机向量生成单元,该单元根据指令生成服从指定分布的随机向量;该随机向量生成单元为定制的硬件电路实现,包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等;
高速暂存存储器,该模块是向量数据专用的暂存存储装置,能够支持不同大小的向量数据;所述高速暂存器可用于存储生成的随机向量;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图4是本公开实施例提供的运算装置执行均匀分布指令生成满足均匀分布的随机向量的流程图,如图4所示,执行均匀分布指令的过程包括:
S1,取指模块取出该条随机数生成指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
S3,在指令队列中,该随机数生成指令从指令本身或从标量寄存器堆中获取指令中四个操作域所对应的标量数据,包括生成的随机向量存储地址、生成的随机向量长度、均匀分布的上界和下界。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。
S5,依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。若存在依赖关系,则该条指令被送往存储队列模块中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。若不存在依赖关系,则该条指令直接被送往随机向量生成单元。
S6,随机向量生成单元根据上下界参数通过硬件电路生成满足该均匀分布分布的一定长度的随机向量。
S7,随机向量生成单元继续生成一定长度的随机向量,直至完成指定长度的随机向量的生成。
S8,运算完成后,将结果向量写回至高速暂存存储器的指定地址。
综上所述,本公开提供随机向量生成装置,配合相应的指令,能够很好地解决当前计算机领域越来越多的生成满足一定分布的随机向量的计算任务。相比于已有的传统解决方案,本公开可以具有使用方便、支持的向量长度灵活、片上缓存充足等优点。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (13)
1.一种用于生成随机向量的装置,其特征在于,包括:
控制单元,用于对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程,其中所述随机向量生成指令包括操作码和操作域,所述操作码用于指示执行指定分布的随机向量生成操作,所述操作域用于指示随机向量生成相关的标量数据;
随机向量生成单元,用于根据所述标量数据,执行所述随机向量生成操作,生成服从指定分布的随机向量。
2.如权利要求1所述的装置,其特征在于,
所述标量数据包括与所述随机向量生成指令相关的随机向量存储地址、随机向量长度和/或分布参数。
3.如权利要求2所述的装置,其特征在于,所述操作域包括立即数和/或寄存器号,所述装置还包括:
存储单元,用于存储所述随机向量生成指令相关的向量数据;
寄存器单元,用于存储所述随机向量生成指令相关的标量数据;
其中,所述随机向量存储地址为所述存储单元中的地址,所述寄存器号指向所述寄存器单元地址。
4.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在所述随机向量生成单元获取当前随机向量生成指令前,判断当前随机向量生成指令与之前未执行完的运算指令是否存在依赖关系。
5.如权利要求1所述的装置,其特征在于,所述随机向量生成单元包括:
LFSR模块,用于生成服从均匀分布的随机数,和/或
通过检测电阻热噪声的方式生成真随机数;
和/或
Ziggurat算法模块,用于生成服从任意分布的随机数,所述任意分布包括高斯分布。
6.如权利要求3-5中任一项所述的装置,其特征在于,所述分布参数包括上界参数、下界参数和/或均值参数、方差参数,所述装置用于
读取均匀分布的所述上界参数和所述下界参数,以及要生成的随机向量的长度和存储地址,所述随机向量生成单元生成服从均匀分布的随机向量,并将生成的随机向量结果写回至所述存储单元;和/或
读取高斯分布的所述均值参数和所述方差参数,以及要生成的随机向量的长度和存储地址,所述随机向量生成单元生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至所述存储单元。
7.一种用于生成随机向量的方法,其特征在于,包括:
对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程,其中所述随机向量生成指令包括操作码和操作域,所述操作码用于指示执行指定分布的随机向量生成操作,所述操作域用于指示随机向量生成相关的标量数据;
根据所述标量数据,执行所述随机向量生成操作,生成服从指定分布的随机向量。
8.如权利要求7所述的方法,其特征在于,
所述标量数据包括与所述随机向量生成指令相关的随机向量存储地址、随机向量长度和/或分布参数。
9.如权利要求8所述的方法,其特征在于,所述操作域包括立即数和/或寄存器号,所述方法还包括:
利用存储单元存储所述随机向量生成指令相关的向量数据;
利用寄存器单元存储所述随机向量生成指令相关的标量数据;
其中,所述随机向量存储地址为所述存储单元中的地址,所述寄存器号指向所述寄存器单元地址。
10.如权利要求7所述的方法,其特征在于,所述方法还包括:
在所述随机向量生成单元获取当前随机向量生成指令前,判断当前随机向量生成指令与之前未执行完的运算指令是否存在依赖关系。
11.如权利要求7所述的方法,其特征在于,所述方法还包括:
利用LFSR模块生成服从均匀分布的随机数和/或
通过检测电阻热噪声的方式生成真随机数;
和/或
利用Ziggurat算法模块生成服从任意分布的随机数,所述任意分布包括高斯分布。
12.如权利要求9-11中任一项所述的方法,其特征在于,所述分布参数包括上界参数、下界参数和/或均值参数、方差参数,所述方法还包括:
读取均匀分布的所述上界参数和所述下界参数,以及要生成的随机向量的长度和存储地址,生成服从均匀分布的随机向量,并将生成的随机向量结果写回至存储单元;和/或
读取高斯分布的所述均值参数和所述方差参数,以及要生成的随机向量的长度和存储地址,生成服从该高斯分布的随机向量,并将生成的随机向量结果写回至存储单元。
13.一种电子设备,包括如权利要求1-6任一所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614808.4A CN111857821A (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266608.8A CN107315565B (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
CN202010614808.4A CN111857821A (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266608.8A Division CN107315565B (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111857821A true CN111857821A (zh) | 2020-10-30 |
Family
ID=60161755
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614808.4A Pending CN111857821A (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
CN201610266608.8A Active CN107315565B (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266608.8A Active CN107315565B (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11501158B2 (zh) |
EP (1) | EP3451158B1 (zh) |
CN (2) | CN111857821A (zh) |
WO (1) | WO2017185388A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857821A (zh) | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于生成服从一定分布的随机向量装置和方法 |
CN110764733B (zh) * | 2019-10-15 | 2023-06-30 | 天津津航计算技术研究所 | 一种基于fpga的多种分布随机数生成装置 |
CN115437603B (zh) * | 2021-06-04 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 用于生成随机数的方法及其相关产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0573606A (ja) * | 1991-09-12 | 1993-03-26 | Hitachi Ltd | ベクトル演算処理機能を有する中央数値処理装置及び ベクトル演算処理方法 |
CN1595866A (zh) * | 2003-09-10 | 2005-03-16 | 联想(北京)有限公司 | 一种数据安全传输的方法 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US20140136815A1 (en) * | 2012-11-12 | 2014-05-15 | International Business Machines Corporation | Verification of a vector execution unit design |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2553540B1 (fr) * | 1983-10-13 | 1986-01-03 | Centre Nat Rech Scient | Dispositif de test aleatoire pour circuits logiques, notamment microprocesseurs |
US6931400B1 (en) * | 2001-08-21 | 2005-08-16 | At&T Corp. | Method and system for identifying representative trends using sketches |
US7822797B2 (en) * | 2002-07-29 | 2010-10-26 | Broadcom Corporation | System and method for generating initial vectors |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
CN101178644B (zh) * | 2006-11-10 | 2012-01-25 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN101515301B (zh) * | 2008-02-23 | 2011-05-04 | 炬力集成电路设计有限公司 | 一种片上***芯片验证的方法和装置 |
CN101609715B (zh) * | 2009-05-11 | 2012-09-05 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
US9165328B2 (en) * | 2012-08-17 | 2015-10-20 | International Business Machines Corporation | System, method and computer program product for classification of social streams |
CN111857821A (zh) | 2016-04-26 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于生成服从一定分布的随机向量装置和方法 |
US11062215B2 (en) * | 2017-03-17 | 2021-07-13 | Microsoft Technology Licensing, Llc | Using different data sources for a predictive model |
US10860796B2 (en) * | 2017-05-16 | 2020-12-08 | Gluru Limited | Method and system for vector representation of linearly progressing entities |
GB201710877D0 (en) * | 2017-07-06 | 2017-08-23 | Nokia Technologies Oy | A method and an apparatus for evaluating generative machine learning model |
-
2016
- 2016-04-26 CN CN202010614808.4A patent/CN111857821A/zh active Pending
- 2016-04-26 CN CN201610266608.8A patent/CN107315565B/zh active Active
- 2016-05-04 WO PCT/CN2016/080970 patent/WO2017185388A1/zh active Application Filing
- 2016-05-04 EP EP16899899.5A patent/EP3451158B1/en active Active
-
2018
- 2018-10-25 US US16/171,284 patent/US11501158B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0573606A (ja) * | 1991-09-12 | 1993-03-26 | Hitachi Ltd | ベクトル演算処理機能を有する中央数値処理装置及び ベクトル演算処理方法 |
CN1595866A (zh) * | 2003-09-10 | 2005-03-16 | 联想(北京)有限公司 | 一种数据安全传输的方法 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US20140136815A1 (en) * | 2012-11-12 | 2014-05-15 | International Business Machines Corporation | Verification of a vector execution unit design |
Non-Patent Citations (6)
Title |
---|
RICHARD G.LYONS著: "《数字信号处理 原书第2版》", 31 January 2006, 机械工业出版社, pages: 351 * |
廖家轩等编: "《电子科技大学电子科学技术研究院第六届学术会议论文集》", 31 May 2011, 电子科技大学出版社, pages: 290 * |
张焕国等著: "《密码学引论 第2版》", 31 March 2009, 武汉大学出版社, pages: 240 * |
朱岩, 冯登国, 邹维: "基于多小波变换的混合水印应用研究", 计算机工程与应用, no. 33, 1 September 2007 (2007-09-01) * |
钱俊;张超;陈平雁;: "模拟研究中随机数据的产生及SAS实现", 数理医药学杂志, no. 06, 15 December 2008 (2008-12-15) * |
陈寿文;李明东;: "Matlab在蚁群聚类算法数据源产生中的应用", 计算机技术与发展, no. 07, 10 July 2009 (2009-07-10), pages 216 - 219 * |
Also Published As
Publication number | Publication date |
---|---|
US11501158B2 (en) | 2022-11-15 |
EP3451158B1 (en) | 2021-10-06 |
CN107315565B (zh) | 2020-08-07 |
EP3451158A1 (en) | 2019-03-06 |
WO2017185388A1 (zh) | 2017-11-02 |
CN107315565A (zh) | 2017-11-03 |
US20190065952A1 (en) | 2019-02-28 |
EP3451158A4 (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
EP3451151B1 (en) | Apparatus and method for executing vector comparison operation | |
EP3451156B1 (en) | Apparatus and method for executing vector circular shift operation | |
CN107315568B (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
EP3832500A1 (en) | Device and method for performing vector four-fundamental-rule operation | |
CN107315565B (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
CN111651204B (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
TW201805802A (zh) | 一種運算裝置及其操作方法 | |
CN115437603B (zh) | 用于生成随机数的方法及其相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |