CN108733408A - 计数装置及计数方法 - Google Patents
计数装置及计数方法 Download PDFInfo
- Publication number
- CN108733408A CN108733408A CN201710264686.9A CN201710264686A CN108733408A CN 108733408 A CN108733408 A CN 108733408A CN 201710264686 A CN201710264686 A CN 201710264686A CN 108733408 A CN108733408 A CN 108733408A
- Authority
- CN
- China
- Prior art keywords
- instruction
- counting
- unit
- input data
- counted
- 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
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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/501—Half or full adders, i.e. basic adder cells for one denomination
Abstract
本公开提供了一种计数装置,包括:寄存器单元、计数单元和存储单元;计数单元与寄存器单元连接;存储单元与计数单元连接。本公开还提供了一种计数方法。本公开根据计数指令统计输入数据中满足给定条件的元素的个数,能够有效提高计算效率。
Description
技术领域
本公开总体上涉及计算机领域,具体地涉及一种计数装置和计数方法。
背景技术
在当前计算机领域,有很多算法都需要统计输入数据中满足给定条件的元素个数(例如统计0/1向量中1的个数)。以人工神经网络算法为例,在神经网络算法中通常使用稀疏矩阵来减少计算量,其中就要通过统计向量中非零元的个数来确定矩阵的稀疏度。
在现有的通用处理器中,没有用于统计元素个数的指令,所以每次都需要编程实现。这样的方法不仅代码量大、效率低,而且受限于片间通讯、片上缓存不够、支持的数据长度不够灵活等问题。
发明内容
(一)要解决的技术问题
鉴于上述技术问题,本公开提供了一种计数装置及计数方法,以解决上述技术问题。
(二)技术方案
根据本公开的一个方面,提供了一种计数装置,包括:寄存器单元、计数单元和存储单元,其中,寄存器单元用于存储待计数的输入数据在存储单元中存储的地址;计数单元与寄存器单元连接,用于获取计数指令,根据计数指令在寄存器单元中读取的输入数据的存储地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素个数进行统计计数,得到计数结果;存储单元与计数单元连接,用于存储待计数的输入数据以及用于存储所述的计数结果。
优选的,所述存储单元为主存或者暂存型存储器。
优选的,所述存储单元为高速暂存存储器,能够灵活有效地支持不同大小的输入数据。
优选的,所述计数单元包括:输入输出模块、运算模块、累加器模块,输入输出模块用于输入从存储单元中获取的待计数的输入数据;运算模块与输入输出模块连接,用于对输入的待计数的输入数据进行运算;累加器模块与运算模块连接,用于累加运算模块输出的运算结果,得到计数结果;其中,输入输出模块又与累加器模块连接,用于输出计数结果至存储单元。
优选的,对待计数的输入数据,所述输入输出模块每次取固定长度的一段数据,输入到运算模块进行运算,运算模块运算完成后,输入输出模块继续取固定长度的下一段数据,直到取完待计数的输入数据的所有元素。
优选的,所述计数单元为多流水级结构,所述输入输出模块中取待计数的输入数据操作处于第一流水级,所述运算模块处于第二流水级,所述累加器模块处于第三流水级。
优选的,所述运算模块包括加法器。
优选的,所述加法器的结构是全加器或者超前进位加法器。
优选的,所述加法器的结构包括n层,其中:第一层有l个全加器、第二层有个全加器、……、第m层有个全加器,第n层有一个超前进位加法器;其中,l、m、n为大于1的整数,m为大于1小于n的整数,表示对数据x做取上整操作。
优选的,每条计数指令包括:操作码和操作域,操作码用于指示该条计数指令的功能,计数单元通过识别该操作码进行计数运算;操作域用于指示该条计数指令中待计数的输入数据的地址信息。
优选的,所述计数装置还包括:指令存储器、指令处理单元、指令缓存单元、依赖关系处理单元,指令存储器用于存储计数指令;指令处理单元与指令存储器连接,用于从指令存储器中获取计数指令,并对计数指令进行处理;指令缓存单元与指令处理单元连接,用于顺序存储待执行和执行过程中的计数指令,还与计数单元和存储单元连接,用于将执行完的计数指令和计数结果提交到存储单元;依赖关系处理单元与指令处理单元连接,用于在计数单元获取计数指令前,判断该计数指令所需输入数据是否为最新,若是,直接将计数指令提供给所述计数单元;否则,将该计数指令存储在依赖关系处理单元的一存储队列中,所需输入数据被更新后,将存储队列中的该计数指令提供给所述计数单元;其中,计数指令从指令处理单元中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的存储地址。
优选的,所述指令处理单元包括:取指模块、译码模块、指令队列,取指模块与指令存储器连接,用于从指令存储器中获取计数指令;译码模块与取指模块连接,用于对获取的计数指令进行译码;指令队列与译码模块连接,用于对译码后的计数指令进行顺序存储,并顺序将指令发射到指令缓存单元和依赖关系处理单元。
优选的,所述指令缓存单元为重排序缓存单元。
优选的,所述待计数的输入数据的数据类型为0/1向量、一般数值型向量、或矩阵。
优选的,所述给定条件为与一给定元素相同或者满足给定表达式。
根据本公开的另一个方面,提供了一种计数方法,包括以下步骤:
计数单元获取计数指令,根据计数指令在寄存器单元中读取的输入数据的存储地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素个数进行统计计数,得到计数结果;
将统计的计数结果传输至存储单元中。
优选的,所述计数方法进一步包括以下步骤:
指令处理单元从指令存储器中获取计数指令,并对计数指令进行处理;
待指令缓存单元和依赖关系处理单元有空闲后,计数指令被发射到指令缓存单元和依赖关系处理单元;其中,计数指令从指令处理单元中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的存储地址;
依赖关系处理单元分析该计数指令与前面的尚未执行结束的计数指令在数据上是否存在依赖关系,该条计数指令在依赖关系处理单元的存储队列中等待至依赖关系被消除;
计数指令被送往计数单元;
将统计的计数结果通过指令缓存单元写回存储单元中,指令缓存单元将该条计数指令提交存储单元中。
优选的,指令处理单元从指令存储器中获取计数指令,并对计数指令进行处理的详细步骤如下:
取指模块从指令存储器中取出将要执行的指令,并将该指令传给译码模块;
译码模块对指令进行译码,并将译码后的指令传给指令队列;
指令队列用于缓存译码后的指令,当指令缓存单元和依赖关系处理单元有空闲之后发射计数指令到指令缓存单元和依赖关系处理单元。
优选的,计数单元对输入数据中满足给定条件的元素的个数进行统计计数时,计数单元根据计数指令操作域中的地址信息在寄存器单元中获取输入数据的存储地址,每次计数单元从高速暂存存储器上获取一段固定长度的输入数据,用计数单元中运算模块的加法器统计该部分输入数据中满足给定条件的元素个数,将每一段的满足给定条件的元素个数用计数单元中的累加器模块进行累加,得到计数结果。
(三)有益效果
从上述技术方案可以看出,本公开一种计数装置及计数方法至少具有以下有益效果其中之一:
(1)本公开将统计输入数据(待计数的数据)中满足给定条件的元素个数的算法编写成指令的形式,可以提高计算效率;
(2)本公开将待统计的输入数据暂存在高速暂存存储器上,使得计数指令可以灵活有效地支持不同宽度的数据,提升执行性能;
(3)本公开采用的指令具有精简的格式,使得指令集使用方便、支持的数据长度灵活;
(4)本公开使用多层的加法器,其结构包括:第一层有l个全加器、第二层有个全加器、……、第m层有个全加器,第n层有一个超前进位加法器;其中,l、m、n为大于1的整数,m为大于1小于n的整数,表示对数据x做取上整操作。使用这样设计的加法器的计数单元可以增加加法计算的并行性,有效提高运算模块的运算速度。
附图说明
图1为本公开实施例计数装置的框架结构示意图。
图2为本公开实施例计数装置中计数单元的结构示意图。
图3为本公开实施例计数装置中计数指令的指令集格式示意图。
图4为本公开实施例计数装置中计数单元的执行过程流程图。
图5为本公开实施例计数装置的详细结构示意图。
图6为本公开实施例计数装置的执行过程流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
在本公开的示例性实施例中,提供了一种支持计数指令的计数装置。图1为本公开实施例计数装置的框架结构示意图。如图1所示,本公开支持计数指令的计数装置包括:存储单元、计数单元、以及寄存器单元。存储单元与计数单元双向连接,用于存储待计数的输入数据以及用于存储统计的输入数据中满足给定条件的元素个数(计数结果),该存储单元可以是主存,也可以是暂存型存储器,进一步的,可以是高速暂存存储器,在一种实施方式中,该存储单元是高速暂存存储器,能够支持不同大小的输入数据,将待计数的输入数据暂存在高速暂存存储器上,使计数过程可以灵活有效地支持不同宽度的数据。计数单元与寄存器单元单向连接,计数单元用于获取计数指令,根据计数指令在寄存器单元中读取的输入数据的地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素个数进行统计计数,得到最终计数结果并将该计数结果存储于存储单元中。寄存器单元用于存储待计数的输入数据在存储单元中存储的地址。在一种实施方式中,寄存器单元存储的地址为待计数的输入数据在高速暂存存储器上的地址。
在本实施例中,待计数的输入数据的数据类型可以是0/1向量,也可以是一般数值型向量或矩阵。统计输入数据中满足给定条件的元素个数时,所统计元素要满足的条件,可以是与一给定元素相同,例如统计向量A中包含元素x的个数,x可以是数字n,n=0,1,2...,x也可以是向量m,m=00,01,11...。所统计元素要满足的条件,也可以是满足给定表达式,例如统计向量B中大于数值y的元素个数,其中y可以是整数n,n=0,1,2...,也可以是浮点数f,f=0.5,0.6...;例如统计向量C中能够整除z的元素个数,其中z可以是整数n,n=0,1,2...。
图2为本公开实施例计数装置中计数单元的结构示意图。如图2所示,计数单元包括输入输出模块、运算模块、累加器模块。
输入输出模块与运算模块连接,对存储单元中待计数的输入数据,每次取其中固定长度的一段数据,输入到运算模块进行运算,运算模块运算完成后,输入输出模块继续取固定长度的下一段数据,直到取完待计数的输入数据的所有元素;输入输出模块将累加器模块计算得到的计数结果输出到存储单元。
运算模块与累加器模块连接,输入一段固定长度的数据,用运算模块的加法器将所述输入数据的满足给定条件的各个元素的个数相加,将得到的结果输出到累加器模块。在一个实施例里加法器的结构可以是全加器或者超前进位加法器。
在另一种实施方式中,加法器的结构包括n层,其中:第一层有l个全加器、第二层有个全加器、……第m层有个全加器,最后一层(即第n层)有一个超前进位加法器;其中,l、m、n为大于1的整数,m为大于1小于n的整数,表示对数据x做取上整操作。下面对其具体工作过程进行描述。假设输入的数据类型为0/1向量,现要统计待计数的0/1向量中1的个数,假设一段固定长度的0/1向量长度为3l,其中l为大于1的整数。加法器第一层有l个全加器,每个全加器有3个1位输入和2个2位输出,则第一层总共得到2l个2位输出;加法器第二层有个全加器,每个全加器有3个2位输入和2个3位输出,则第一层总共得到4l/3个3位输出;按照所述方法,各层全加器都有3个输入和2个输出,且输出的位数比输入多一位,并且各全加器的计算可并行执行;最后得到2个n位输出,其中n表示加法器的层数,为大于1的整数;将2个n位输出用超前进位加法器相加得到1个n位输出,即为该部分0/1向量中1的个数。使用上述加法器可以增加加法计算的并行性,有效提高运算模块的运算速度。
累加器模块又与输入输出模块连接,将运算模块输出的结果使用累加器进行累加,直到无新的输入。
计数单元为多流水级结构,其中,输入输出模块中取向量操作处于第一流水级,运算模块处于第二流水级,累加器模块处于第三流水级。这些单元处于不同的流水级,可以更加高效地实现计数指令所要求的操作。
图3为本公开实施例计数装置中计数指令的指令集格式示意图。如图3所示,计数指令包括一操作码和一操作域,其中,操作码用于指示该计数指令的功能,计数单元通过识别该操作码可进行计数运算,操作域用于指示该计数指令中待计数的输入数据的地址信息。其中,地址信息可以是立即数或寄存器号,例如,要获取一个向量时,根据寄存器号可以在相应的寄存器中获取向量起始地址和向量长度,再根据向量起始地址和向量长度在存储单元中获取相应地址存放的向量。本公开采用的指令具有精简的格式,使得指令集使用方便、支持的数据长度灵活。
图4为本公开实施例计数装置中计数单元的执行过程流程图。如图4所示,工作时候,计数单元根据计数指令操作域中的地址信息在寄存器单元中获取待计数的输入数据的地址,然后,根据该地址在存储单元中获取待计数的输入数据。待计数的输入数据存储在高速暂存存储器上,每次计数单元从高速暂存存储器上获取一段固定长度的输入数据,用加法器统计该部分输入数据中满足给定条件的元素的个数,将每一段的满足给定条件的元素的个数用累加器模块进行累加,得到最终计数结果并将计数结果存储于存储单元中。
图5为本公开实施例计数装置的详细结构示意图。如图5所示,本公开支持计数指令的装置还包括:指令存储器、指令处理单元、指令缓存单元、依赖关系处理单元。
指令处理单元,用于从指令存储器中获取计数指令,并对计数指令进行处理后,提供给所述指令缓存单元和依赖关系处理单元。其中,指令处理单元包括:取指模块、译码模块、指令队列。取指模块与指令存储器连接,用于从指令存储器中获取计数指令;译码模块与取指模块连接,用于对获取的计数指令进行译码;指令队列与译码模块连接,用于对译码后的计数指令进行顺序存储,并顺序将指令发射到指令缓存单元和依赖关系处理单元。考虑到指令缓存单元和依赖关系处理单元可容纳的指令数量有限,指令队列中的指令必须等到指令缓存单元和依赖关系处理单元有空闲才可继续顺序发射。
指令缓存单元,与指令队列连接,用于顺序存储待执行的计数指令。计数指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,将指令运行结果(计数结果)传输到指令缓存单元,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,则该指令将被提交,并一起将指令运行结果(计数结果)写回高速暂存存储器。一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
依赖关系处理单元,与指令队列和计数单元连接,用于在计数单元获取计数指令前,判断该计数指令所需向量(即要被计数的向量)是否为最新,若是,直接将计数指令提供给所述计数单元;否则,将该计数指令存储在依赖关系处理单元的一存储队列中,所需向量被更新后,将存储队列中的该计数指令提供给所述计数单元。具体地,计数指令访问高速暂存存储器时,存储空间正等待之前指令的结果写入,为了保证指令执行结果的正确性,当前指令如果被检测到与之前指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。依赖关系处理单元使指令可以乱序执行,顺序提交,有效减少流水线阻塞,并且可实现精确例外。
计数指令从指令队列中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的地址。
取指模块负责从指令存储器中取出下一条将要执行的指令,并将该指令传给译码模块;译码模块负责对指令进行译码,并将译码后的指令传给指令队列;指令队列用于缓存译码后的指令,当指令缓存单元和依赖关系处理单元有空闲之后发射指令到指令缓存单元和依赖关系处理单元;计数指令从指令队列中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的地址;依赖关系处理单元用于处理当前指令与前一条指令可能存在的数据依赖关系,计数指令会访问存储单元,此前执行的其他指令可能会访问同一块存储空间。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令数据存在依赖关系,该指令必须在依赖关系处理单元的存储队列内等待至依赖关系被消除。计数单元从依赖关系处理单元中获取计数指令,根据计数指令在寄存器单元中读取的输入数据的地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素的个数进行统计计数,将计数结果传输至指令缓存单元,最后计数结果和该条计数指令被写回存储单元。
图5为本公开实施例计数装置的执行过程流程图。如图5所示,执行计数指令的过程包括:
S1,取指模块从指令存储器中取出计数指令,并将该计数指令送往译码模块。
S2,译码模块对计数指令译码,并将计数指令送往指令队列。
S3,计数指令在指令队列中等待指令缓存单元和依赖关系处理单元有空闲后,被发射到指令缓存单元和依赖关系处理单元。
S4,计数指令从指令队列中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的存储地址,依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系,该条计数指令需要在依赖关系处理单元的存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5:依赖关系不存在后,该条计数指令被送往计数单元。计数单元根据存储地址从存储单元中获取输入数据,统计输入数据中满足给定条件的元素个数。
S6,计数完成后,计数结果通过指令缓存单元被写回存储单元中,指令缓存单元将该条计数指令提交至存储单元中。
至此,已经结合附图对本实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开支持计数指令的计数装置及其计数方法有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
依赖关系处理单元的存储队列可以用保留站来代替。
本公开实现了一种支持计数指令的装置,将统计输入数据中满足给定条件的元素个数的算法编写成指令的形式,使计数过程可以灵活有效地支持不同宽度的数据,并能够提高计算效率。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本公开也不针对任何特定编程语言。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (19)
1.一种计数装置,包括:寄存器单元、计数单元和存储单元,其特征在于,
寄存器单元,用于存储待计数的输入数据在存储单元中存储的地址;
计数单元,与寄存器单元连接,用于获取计数指令,根据计数指令在寄存器单元中读取的输入数据的存储地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素个数进行统计计数,得到计数结果;
存储单元,与计数单元连接,用于存储待计数的输入数据以及用于存储所述的计数结果。
2.根据权利要求1所述的计数装置,其特征在于,所述存储单元为主存或者暂存型存储器。
3.根据权利要求2所述的计数装置,其特征在于,所述存储单元为高速暂存存储器,能够灵活有效地支持不同大小的输入数据。
4.根据权利要求1所述的计数装置,其特征在于,所述计数单元包括:
输入输出模块,用于输入从存储单元中获取的待计数的输入数据;
运算模块,与输入输出模块连接,用于对输入的待计数的输入数据进行运算;
累加器模块,与运算模块连接,用于累加运算模块输出的运算结果,得到计数结果;
其中,输入输出模块与累加器模块连接,用于输出计数结果至存储单元。
5.根据权利要求4所述的计数装置,其特征在于,对待计数的输入数据,所述输入输出模块每次取固定长度的一段数据,输入到运算模块进行运算,运算模块运算完成后,输入输出模块继续取固定长度的下一段数据,直到取完待计数的输入数据的所有元素。
6.根据权利要求4所述的计数装置,其特征在于,所述计数单元为多流水级结构,所述输入输出模块中取待计数的输入数据操作处于第一流水级,所述运算模块处于第二流水级,所述累加器模块处于第三流水级。
7.根据权利要求4所述的计数装置,其特征在于,所述运算模块包括加法器。
8.根据权利要求7所述的计数装置,其特征在于,所述加法器的结构是全加器或者超前进位加法器。
9.根据权利要求7所述的计数装置,其特征在于,所述加法器的结构包括n层,其中:第一层有l个全加器、第二层有个全加器、……、第m层有个全加器,第n层有一个超前进位加法器;其中,l、m、n为大于1的整数,m为大于1小于n的整数,表示对数据x做取上整操作。
10.根据权利要求1-9任一项所述的计数装置,其特征在于,每条计数指令包括:
操作码,用于指示该条计数指令的功能,计数单元通过识别该操作码进行计数运算;
操作域,用于指示该条计数指令中待计数的输入数据的地址信息。
11.根据权利要求1-10任一项所述的计数装置,其特征在于,还包括:
指令存储器,用于存储计数指令;
指令处理单元,与指令存储器连接,用于从指令存储器中获取计数指令,并对计数指令进行处理;
指令缓存单元,与指令处理单元连接,用于顺序存储待执行和执行过程中的计数指令;还与计数单元和存储单元连接,用于将执行完的计数指令和计数结果提交到存储单元;
依赖关系处理单元,与指令处理单元连接,用于在计数单元获取计数指令前,判断该计数指令所需输入数据是否为最新,若是,直接将计数指令提供给所述计数单元;否则,将该计数指令存储在依赖关系处理单元的一存储队列中,所需输入数据被更新后,将存储队列中的该计数指令提供给所述计数单元;
其中,计数指令从指令处理单元中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的存储地址。
12.根据权利要求11所述的计数装置,其特征在于,所述指令处理单元包括:
取指模块,与指令存储器连接,用于从指令存储器中获取计数指令;
译码模块,与取指模块连接,用于对获取的计数指令进行译码;
指令队列,与译码模块连接,用于对译码后的计数指令进行顺序存储,并顺序将指令发射到指令缓存单元和依赖关系处理单元。
13.根据权利要求11所述的计数装置,其特征在于,所述指令缓存单元为重排序缓存单元。
14.根据权利要求1-13任一项所述的计数装置,其特征在于,所述待计数的输入数据的数据类型为0/1向量、一般数值型向量、或矩阵。
15.根据权利要求14所述的计数装置,其特征在于,所述给定条件为与一给定元素相同或者满足给定表达式。
16.一种用于权利要求1-15任一项所述的计数装置的计数方法,包括以下步骤:
计数单元获取计数指令,根据计数指令在寄存器单元中读取的输入数据的存储地址,在存储单元中获取相应的待计数的输入数据,并对输入数据中满足给定条件的元素个数进行统计计数,得到计数结果;
将统计的计数结果传输至存储单元中。
17.根据权利要求16所述的计数方法,其特征在于,进一步包括以下步骤:
指令处理单元从指令存储器中获取计数指令,并对计数指令进行处理;
待指令缓存单元和依赖关系处理单元有空闲后,计数指令被发射到指令缓存单元和依赖关系处理单元;其中,计数指令从指令处理单元中被发射到依赖关系处理单元的过程中,计数指令从寄存器单元中读取输入数据在存储单元中的存储地址;
依赖关系处理单元分析该计数指令与前面的尚未执行结束的计数指令在数据上是否存在依赖关系,该条计数指令在依赖关系处理单元的存储队列中等待至依赖关系被消除;
计数指令被送往计数单元;
将统计的计数结果通过指令缓存单元写回存储单元中,指令缓存单元将该条计数指令提交存储单元中。
18.根据权利要求17所述的计数方法,其特征在于,指令处理单元从指令存储器中获取计数指令,并对计数指令进行处理的详细步骤如下:
取指模块从指令存储器中取出将要执行的指令,并将该指令传给译码模块;
译码模块对指令进行译码,并将译码后的指令传给指令队列;
指令队列用于缓存译码后的指令,当指令缓存单元和依赖关系处理单元有空闲之后发射计数指令到指令缓存单元和依赖关系处理单元。
19.根据权利要求16所述的计数方法,其特征在于,计数单元对输入数据中满足给定条件的元素的个数进行统计计数时,计数单元根据计数指令操作域中的地址信息在寄存器单元中获取输入数据的存储地址,每次计数单元从高速暂存存储器上获取一段固定长度的输入数据,用计数单元中运算模块的加法器统计该部分输入数据中满足给定条件的元素个数,将每一段的满足给定条件的元素个数用计数单元中的累加器模块进行累加,得到计数结果。
Priority Applications (16)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710264686.9A CN108733408A (zh) | 2017-04-21 | 2017-04-21 | 计数装置及计数方法 |
KR1020197025307A KR102292349B1 (ko) | 2017-04-19 | 2018-04-17 | 처리 장치 및 처리 방법 |
EP18788355.8A EP3614259A4 (en) | 2017-04-19 | 2018-04-17 | TREATMENT APPARATUS AND TREATMENT METHOD |
CN201880000923.3A CN109121435A (zh) | 2017-04-19 | 2018-04-17 | 处理装置和处理方法 |
KR1020197038135A KR102258414B1 (ko) | 2017-04-19 | 2018-04-17 | 처리 장치 및 처리 방법 |
EP19214371.7A EP3786786B1 (en) | 2017-04-19 | 2018-04-17 | Processing device, processing method, chip, and electronic apparatus |
JP2019549467A JP6865847B2 (ja) | 2017-04-19 | 2018-04-17 | 処理装置、チップ、電子設備及び方法 |
US16/476,262 US11531540B2 (en) | 2017-04-19 | 2018-04-17 | Processing apparatus and processing method with dynamically configurable operation bit width |
EP19214320.4A EP3654172A1 (en) | 2017-04-19 | 2018-04-17 | Fused vector multiplier and method using the same |
PCT/CN2018/083415 WO2018192500A1 (zh) | 2017-04-19 | 2018-04-17 | 处理装置和处理方法 |
CN201811097569.9A CN109324826B (zh) | 2017-04-21 | 2018-04-17 | 计数装置和计数方法 |
US16/697,637 US11720353B2 (en) | 2017-04-19 | 2019-11-27 | Processing apparatus and processing method |
US16/697,727 US11698786B2 (en) | 2017-04-19 | 2019-11-27 | Processing apparatus and processing method |
US16/697,533 US11531541B2 (en) | 2017-04-19 | 2019-11-27 | Processing apparatus and processing method |
US16/697,687 US11734002B2 (en) | 2017-04-19 | 2019-11-27 | Counting elements in neural network input data |
JP2019228383A JP6821002B2 (ja) | 2017-04-19 | 2019-12-18 | 処理装置と処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710264686.9A CN108733408A (zh) | 2017-04-21 | 2017-04-21 | 计数装置及计数方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108733408A true CN108733408A (zh) | 2018-11-02 |
Family
ID=63933782
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710264686.9A Pending CN108733408A (zh) | 2017-04-19 | 2017-04-21 | 计数装置及计数方法 |
CN201811097569.9A Active CN109324826B (zh) | 2017-04-19 | 2018-04-17 | 计数装置和计数方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811097569.9A Active CN109324826B (zh) | 2017-04-19 | 2018-04-17 | 计数装置和计数方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN108733408A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571796A (zh) * | 2008-04-28 | 2009-11-04 | 阿尔特拉公司 | 可配置的混合加法器电路 |
CN101685388A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 执行比较运算的方法和模块 |
CN103699360A (zh) * | 2012-09-27 | 2014-04-02 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US20140208081A1 (en) * | 2013-01-21 | 2014-07-24 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (ccisc) processor architecture |
CN104011657A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于向量计算和累计的装置和方法 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
CN105207794A (zh) * | 2014-06-05 | 2015-12-30 | 中兴通讯股份有限公司 | 统计计数设备及其实现方法、具有统计计数设备的系统 |
CN105359129A (zh) * | 2013-08-06 | 2016-02-24 | 英特尔公司 | 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN105453071A (zh) * | 2013-08-06 | 2016-03-30 | 英特尔公司 | 用来提供向量族群计数功能的方法、设备、指令和逻辑 |
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106528047A (zh) * | 2015-10-08 | 2017-03-22 | 上海兆芯集成电路有限公司 | 选择性将启动函数输出或累加器值写回神经存储器的神经处理单元 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734674B2 (en) * | 2005-08-08 | 2010-06-08 | Freescale Semiconductor, Inc. | Fast fourier transform (FFT) architecture in a multi-mode wireless processing system |
CN102707931A (zh) * | 2012-05-09 | 2012-10-03 | 刘大可 | 一种基于并行数据通道的数字信号处理器 |
CN102866875B (zh) * | 2012-10-05 | 2016-03-02 | 刘杰 | 多操作数加法器 |
US9507594B2 (en) * | 2013-07-02 | 2016-11-29 | Intel Corporation | Method and system of compiling program code into predicated instructions for execution on a processor without a program counter |
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
-
2017
- 2017-04-21 CN CN201710264686.9A patent/CN108733408A/zh active Pending
-
2018
- 2018-04-17 CN CN201811097569.9A patent/CN109324826B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101571796A (zh) * | 2008-04-28 | 2009-11-04 | 阿尔特拉公司 | 可配置的混合加法器电路 |
CN101685388A (zh) * | 2008-09-28 | 2010-03-31 | 北京大学深圳研究生院 | 执行比较运算的方法和模块 |
CN104011657A (zh) * | 2011-12-22 | 2014-08-27 | 英特尔公司 | 用于向量计算和累计的装置和方法 |
CN103699360A (zh) * | 2012-09-27 | 2014-04-02 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US20140208081A1 (en) * | 2013-01-21 | 2014-07-24 | Tom Yap | Flowchart compiler for a compound complex instruction set computer (ccisc) processor architecture |
CN105359129A (zh) * | 2013-08-06 | 2016-02-24 | 英特尔公司 | 用于提供用于基因组测序和比对的族群计数功能的方法、装置、指令以及逻辑 |
CN105453071A (zh) * | 2013-08-06 | 2016-03-30 | 英特尔公司 | 用来提供向量族群计数功能的方法、设备、指令和逻辑 |
CN105207794A (zh) * | 2014-06-05 | 2015-12-30 | 中兴通讯股份有限公司 | 统计计数设备及其实现方法、具有统计计数设备的系统 |
CN104699458A (zh) * | 2015-03-30 | 2015-06-10 | 哈尔滨工业大学 | 定点向量处理器及其向量数据访存控制方法 |
CN106528047A (zh) * | 2015-10-08 | 2017-03-22 | 上海兆芯集成电路有限公司 | 选择性将启动函数输出或累加器值写回神经存储器的神经处理单元 |
CN105426160A (zh) * | 2015-11-10 | 2016-03-23 | 北京时代民芯科技有限公司 | 基于sprac v8指令集的指令分类多发射方法 |
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
Non-Patent Citations (1)
Title |
---|
许邦建等: "《DSP算法与体系结构实现技术》", 31 January 2010, 国防工业出版社 * |
Also Published As
Publication number | Publication date |
---|---|
CN109324826B (zh) | 2021-03-26 |
CN109324826A (zh) | 2019-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110018850A (zh) | 用于可配置空间加速器中的多播的设备、方法和系统 | |
CN109522254A (zh) | 运算装置及方法 | |
CN107608715A (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
CN107851028A (zh) | 将指令操作数的窄生成值直接存储在乱序处理器中的寄存器映射中 | |
CN109597646A (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
CN108268424A (zh) | 用于处理具有偏斜非零分布的稀疏矩阵数据的异构硬件加速器架构 | |
CN105450618B (zh) | 一种api服务器处理大数据的运算方法及其系统 | |
CN109240746A (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN109643233A (zh) | 具有带读取和读取/前进操作数编码的流引擎的数据处理设备 | |
CN106990940A (zh) | 一种向量计算装置 | |
CN109213522A (zh) | 远程原子操作指令 | |
WO2014031416A2 (en) | Hardware implementation of the aggregation/group by operation: hash-table method | |
US20210263739A1 (en) | Vector reductions using shared scratchpad memory | |
CN109952566A (zh) | 用于处理器架构的装置和方法 | |
CN106528049A (zh) | 在多存储体条件分支预测器中用于更新事件的随机数产生 | |
CN108268385A (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
CN108257078A (zh) | 存储器知晓重排序源 | |
CN106776466A (zh) | 一种fpga异构加速计算装置及系统 | |
CN107315717A (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN107729267A (zh) | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 | |
CN108881254A (zh) | 基于神经网络的入侵检测系统 | |
CN105359142B (zh) | 哈希连接方法和装置 | |
CN106325812A (zh) | 一种针对乘累加运算的处理方法及装置 | |
CN109993293A (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN108733408A (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 |