CN107315565B - 一种用于生成服从一定分布的随机向量装置和方法 - Google Patents
一种用于生成服从一定分布的随机向量装置和方法 Download PDFInfo
- Publication number
- CN107315565B CN107315565B CN201610266608.8A CN201610266608A CN107315565B CN 107315565 B CN107315565 B CN 107315565B CN 201610266608 A CN201610266608 A CN 201610266608A CN 107315565 B CN107315565 B CN 107315565B
- Authority
- CN
- China
- Prior art keywords
- random vector
- instruction
- vector generation
- random
- unit
- 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.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims abstract description 311
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000009826 distribution Methods 0.000 title claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 18
- 230000015654 memory Effects 0.000 claims description 59
- 238000012545 processing Methods 0.000 claims description 18
- 238000009827 uniform distribution Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 210000002569 neuron Anatomy 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000003287 optical effect Effects 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
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 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)
- Image Analysis (AREA)
- Executing Machine-Instructions (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,运算完成后,将结果向量写回至高速暂存存储器的指定地址。
综上所述,本公开提供随机向量生成装置,配合相应的指令,能够很好地解决当前计算机领域越来越多的生成满足一定分布的随机向量的计算任务。相比于已有的传统解决方案,本公开可以具有使用方便、支持的向量长度灵活、片上缓存充足等优点。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文: Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (27)
1.一种用于生成随机向量的装置,其特征在于,该装置包括:
控制单元,用于对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程;
随机向量生成单元,用于根据译码后的随机向量生成指令,生成服从指定分布的随机向量;所述随机向量生成指令相关的标量数据包括随机向量生成指令相关的随机向量存储地址、随机向量长度以及分布参数;
所述随机向量生成单元包括:
多个并行的随机数生成模块,所述随机数生成模块用于在所述执行过程中生成随机数;
所述多个并行的随机数生成模块包括:
LFSR模块,用于生成服从均匀分布的随机数、以及真随机数;
Ziggurat算法模块,用于生成服从任意分布的随机数。
2.如权利要求1所述的装置,其特征在于,所述随机向量生成单元为定制的硬件电路。
3.如权利要求1所述的装置,其特征在于,还包括:
存储单元,用于存储随机向量生成指令相关的向量数据;
寄存器单元,用于存储所述标量数据。
4.如权利要求3所述的装置,其特征在于,所述随机向量存储地址为所述存储单元中的地址。
5.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的随机向量生成指令进行顺序存储,并获取随机向量生成指令相关的标量数据。
6.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在随机向量生成单元获取当前随机向量生成指令前,判断当前随机向量生成指令与之前未执行完的运算指令是否存在依赖关系。
7.如权利要求1所述的装置,其特征在于,所述控制单元包括:
存储队列模块,用于在当前随机向量生成指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前随机向量生成指令,并且在该依赖关系消除时,将暂存的随机向量生成指令送往随机向量生成单元。
8.如权利要求1-7任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的随机向量生成指令;
输入输出单元,用于将随机向量生成指令相关的向量数据存储于存储单元,或者,从存储单元中获取随机向量生成指令相关的向量数据。
9.如权利要求1所述的装置,其特征在于,所述随机向量生成指令包括操作码和操作域;
所述操作码用于指示执行指定分布的随机向量生成操作;
所述操作域包括立即数和/或寄存器号,指示随机向量生成相关的标量数据,其中寄存器号指向寄存器单元地址。
10.如权利要求3或4所述的装置,其特征在于,所述存储单元为高速暂存存储器。
11.如权利要求1所述的装置,其特征在于,所述随机向量生成指令包括:
均匀分布指令,装置根据所述均匀分布指令从指令或从寄存器单元中读取均匀分布的上界参数和下界参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从所述均匀分布的随机向量,并将生成的随机向量结果写回至指定的存储单元的存储地址。
12.如权利要求1所述的装置,其特征在于,所述随机向量生成指令包括:
高斯分布指令,装置根据所述高斯分布指令从指令或从寄存器单元中读取高斯分布的均值参数和方差参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从所述高斯分布的随机向量,并将生成的随机向量结果写回至指定的存储单元的存储地址。
13.如权利要求5所述的装置,其特征在于,还包括:
取指模块,用于从指令序列中取出下一条要执行的随机向量生成指令,并将该随机向量生成指令传给译码模块;
译码模块,用于对该随机向量生成指令进行译码,并将译码后的随机向量生成指令传送给指令队列模块。
14.如权利要求3所述的装置,其特征在于,所述寄存器单元为标量寄存器堆,包括多个标量寄存器,用于存储随机向量生成指令相关的标量数据。
15.一种用于生成随机向量的方法,其特征在于,该方法包括:
控制单元对随机向量生成指令进行译码,并控制随机向量生成指令的执行过程;
随机向量生成单元根据译码后的随机向量生成指令,生成服从指定分布的随机向量;
所述随机向量生成指令相关的标量数据包括随机向量生成指令相关的随机向量存储地址、随机向量长度以及分布参数;
多个并行的随机数生成模块在所述执行过程中生成随机数;LFSR模块生成服从均匀分布的随机数、以及真随机数;Ziggurat算法模块生成服从任意分布的随机数。
16.如权利要求15所述的方法,其特征在于,所述随机向量生成单元为定制的硬件电路。
17.如权利要求15所述的方法,其特征在于,还包括:
存储单元存储随机向量生成指令相关的向量数据;
寄存器单元存储所述标量数据。
18.如权利要求17所述的方法,其特征在于,所述随机向量存储地址为所述存储单元中的地址。
19.如权利要求15所述的方法,其特征在于,
指令队列模块对译码后的随机向量生成指令进行顺序存储,并获取随机向量生成指令相关的标量数据。
20.如权利要求15所述的方法,其特征在于,
依赖关系处理单元在随机向量生成单元获取当前随机向量生成指令前,判断当前随机向量生成指令与之前未执行完的运算指令是否存在依赖关系。
21.如权利要求15所述的方法,其特征在于,
存储队列模块在当前随机向量生成指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前随机向量生成指令,并且在该依赖关系消除时,将暂存的随机向量生成指令送往随机向量生成单元。
22.如权利要求15-21任一项所述的方法,其特征在于,
指令缓存单元存储待执行的随机向量生成指令;
输入输出单元将随机向量生成指令相关的向量数据存储于存储单元,或者,从存储单元中获取随机向量生成指令相关的向量数据。
23.如权利要求15所述的方法,其特征在于,所述随机向量生成指令包括操作码和操作域;
所述操作码用于指示执行指定分布的随机向量生成操作;
所述操作域包括立即数和/或寄存器号,指示随机向量生成相关的标量数据,其中寄存器号指向寄存器单元地址。
24.如权利要求17或18所述的方法,其特征在于,所述存储单元为高速暂存存储器。
25.如权利要求15所述的方法,其特征在于,根据均匀分布指令从指令或从寄存器单元中读取均匀分布的上界参数和下界参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从所述均匀分布的随机向量,并将生成的随机向量结果写回至指定的存储单元的存储地址。
26.如权利要求15所述的方法,其特征在于,根据高斯分布指令从指令或从寄存器单元中读取高斯分布的均值参数和方差参数,以及要生成的随机向量的大小和存储地址,然后在随机向量生成单元中生成服从所述高斯分布的随机向量,并将生成的随机向量结果写回至指定的存储单元的存储地址。
27.如权利要求19所述的方法,其特征在于,
取值模块从指令序列中取出下一条要执行的随机向量生成指令,并将该随机向量生成指令传给译码模块;
译码模块对该随机向量生成指令进行译码,并将译码后的随机向量生成指令传送给指令队列模块。
Priority Applications (5)
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 | 一种用于生成服从一定分布的随机向量装置和方法 |
PCT/CN2016/080970 WO2017185388A1 (zh) | 2016-04-26 | 2016-05-04 | 一种用于生成服从一定分布的随机向量的装置和方法 |
EP16899899.5A EP3451158B1 (en) | 2016-04-26 | 2016-05-04 | Device and method for generating random vectors conforming to certain distribution |
US16/171,284 US11501158B2 (en) | 2016-04-26 | 2018-10-25 | Apparatus and methods for generating random vectors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266608.8A CN107315565B (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614808.4A Division CN111857821A (zh) | 2016-04-26 | 2016-04-26 | 一种用于生成服从一定分布的随机向量装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107315565A CN107315565A (zh) | 2017-11-03 |
CN107315565B true CN107315565B (zh) | 2020-08-07 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614808.4A Pending CN111857821A (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 |
---|---|---|---|---|
EP0142412A1 (fr) * | 1983-10-13 | 1985-05-22 | Etablissement Public dit: CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (CNRS) | Dispositif de transformation de la probabilité d'apparition de vecteurs logiques et de génération de séquences de vecteurs à probabilités variables dans le temps |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN101515301A (zh) * | 2008-02-23 | 2009-08-26 | 炬力集成电路设计有限公司 | 一种片上系统芯片验证的方法和装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3182177B2 (ja) * | 1991-09-12 | 2001-07-03 | 株式会社日立製作所 | ベクトル演算処理機能を有する中央数値処理装置及びベクトル演算処理方法 |
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 |
CN100428665C (zh) * | 2003-09-10 | 2008-10-22 | 联想(北京)有限公司 | 一种数据安全传输的方法 |
CN101609715B (zh) * | 2009-05-11 | 2012-09-05 | 中国人民解放军国防科学技术大学 | 行列访问端口分离的矩阵寄存器文件 |
CN101776988B (zh) * | 2010-02-01 | 2012-11-07 | 中国人民解放军国防科学技术大学 | 一种块大小可变的可重构矩阵寄存器文件 |
CN102156637A (zh) * | 2011-05-04 | 2011-08-17 | 中国人民解放军国防科学技术大学 | 向量交叉多线程处理方法及向量交叉多线程微处理器 |
US9165328B2 (en) * | 2012-08-17 | 2015-10-20 | International Business Machines Corporation | System, method and computer program product for classification of social streams |
US9268563B2 (en) * | 2012-11-12 | 2016-02-23 | International Business Machines Corporation | Verification of a vector execution unit design |
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 EP EP16899899.5A patent/EP3451158B1/en active Active
- 2016-05-04 WO PCT/CN2016/080970 patent/WO2017185388A1/zh active Application Filing
-
2018
- 2018-10-25 US US16/171,284 patent/US11501158B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0142412A1 (fr) * | 1983-10-13 | 1985-05-22 | Etablissement Public dit: CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE (CNRS) | Dispositif de transformation de la probabilité d'apparition de vecteurs logiques et de génération de séquences de vecteurs à probabilités variables dans le temps |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101178644A (zh) * | 2006-11-10 | 2008-05-14 | 上海海尔集成电路有限公司 | 一种基于复杂指令集计算机结构的微处理器架构 |
CN101515301A (zh) * | 2008-02-23 | 2009-08-26 | 炬力集成电路设计有限公司 | 一种片上系统芯片验证的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017185388A1 (zh) | 2017-11-02 |
CN107315565A (zh) | 2017-11-03 |
US20190065952A1 (en) | 2019-02-28 |
EP3451158A1 (en) | 2019-03-06 |
CN111857821A (zh) | 2020-10-30 |
US11501158B2 (en) | 2022-11-15 |
EP3451158B1 (en) | 2021-10-06 |
EP3451158A4 (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN111857820B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN107315563B (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN107315566B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN111651200B (zh) | 一种用于执行向量超越函数运算的装置和方法 | |
CN107315568B (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107315565B (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
EP3451161B1 (en) | Apparatus and method for executing operations of maximum value and minimum value of vectors | |
CN111258769B (zh) | 数据传输装置和方法 | |
WO2018024094A1 (zh) | 一种运算装置及其操作方法 | |
CN113033791B (zh) | 用于保序的计算装置、集成电路装置、板卡及保序方法 | |
CN115437603B (zh) | 用于生成随机数的方法及其相关产品 | |
WO2020192587A1 (zh) | 人工智能计算装置及相关产品 | |
CN113032298A (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 | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |