用于卷积神经网络的权重移位机制的制作方法

文档序号:9564425阅读:296来源:国知局
用于卷积神经网络的权重移位机制的制作方法
【技术领域】
[0001] 本发明涉及处理逻辑、微处理器,以及相关联的指令集架构领域,当它们被处理器 或其他处理逻辑执行时,执行逻辑、数学,或其他功能操作。
[0002] 相关技术的描述
[0003] 多处理器系统正在变得越来越多常见。多处理器系统的应用包括动态域分割直到 桌面计算。为了利用多处理器系统,要被执行的代码可以被分离成多个线程,用于由各个处 理实体执行。每一线程都可以彼此并行地执行。
[0004] 选择加密例程可包括选择用于实现该例程所需的安全性和资源之间的折衷。尽 管某些加密例程没有其他的那样安全,但是,实现它们所需的资源可以足够小,以允许它 们在诸如处理能力和存储器之类的计算资源没有例如台式计算机或较大的计算方案那么 充足的各种应用中使用。实现诸如加密例程之类的例程的成本可以以门计数或门等效 (gate-equivalent)计数、吞吐量、功率消耗,或生产成本来度量。用于计算应用程序中的 多个加密例程包括被称为 AES、Hight、Iceberg、Katan、Klein、Led、mCrypton、Piccolo、 Present、Prince、Twine,以及EPCBC的那些,但是,这些例程不一定彼此兼容,一个例程也 不一定可以替代另一个。
[0005] 卷积神经网络(CNN)是一种计算模型,由于在解决诸如图象理解之类的人计算机 接口问题时表现出的能力,最近变得流行。该模型的核心是多级算法,该算法以大的输入范 围(例如,图像像素)作为输入,并根据预定义函数,对输入应用一组变换。可以是将已转 换的数据馈送给神经网络,以检测模式。
[0006] 附图简述
[0007] 此处所描述的本发明的各实施例是作为示例说明的,而不仅限于各个附图的图 形。
[0008] 图IA是根据本发明的各实施例的利用可包括执行指令的执行单元的处理器形成 的示例性计算机系统的框图;
[0009] 图IB示出了根据本发明的各实施例的数据处理系统;
[0010] 图IC示出了用于执行文本字符串比较操作的数据处理系统的其他实施例;
[0011] 图2是根据本公开的各实施例的可包括执行指令的逻辑电路的处理器的微架构 的框图;
[0012] 图3A是根据本发明各实施例的处理器的框图;
[0013] 图3B是根据本发明的各实施例的核的示例实现的框图;
[0014] 图4是根据本发明的各实施例的系统的框图;
[0015] 图5是根据本发明的各实施例的第二系统的框图;
[0016] 图6是根据本发明的各实施例的第三系统的框图;
[0017] 图7是根据本发明的各实施例的片上系统的框图;
[0018] 图8是根据本发明的各实施例的用于使用处理器电子设备的框图;
[0019] 图9示出了根据本发明的各实施例的神经网络系统的示例实施例。
[0020] 图10示出了根据本发明的各实施例的用于使用处理设备来实现神经网络系统的 比较详细的实施例。
[0021] 图11是根据本发明的各实施例的对于神经网络系统的不同的层执行计算的处理 设备的比较详细的图示。
[0022] 图12示出了根据本发明的各实施例的计算电路的示例实施例。
[0023] 图13A、13B,以及13C是计算电路的各种组件的比较详细的图示。
[0024] 图14是根据本发明的各实施例的用于权重移位的方法的示例实施例的流程图。
【具体实施方式】
[0025] 下面描述了处理器、虚拟处理器、封装、计算机系统,或其他处理设备内的或与它 们相关联的可重新配置的处理单元的权重移位机制。在一个实施例中,这样的权重移位机 制可以用于卷积神经网络(convolution neural network :CNN)中。在另一个实施例中,这 样的CNN可包括低精度CNN。在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构 条件、事件、启用机制等等之类的很多具体细节,以便提供对本发明的实施例进行全面的理 解。然而,本领域技术人员可以理解,各实施例可以在没有这样的具体细节的情况下实施。 另外,为避免不必要地使本发明的各实施例模糊,没有详细示出某些已知的结构,电路,等 等。
[0026] 虽然将处理器参考来描述下列各实施例,但是,其他实施例也适用于其他类型的 集成电路和逻辑设备。可以将本发明的各实施例的类似的技术和原理应用于可以得益于较 高流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的各实施例的原理 适用于执行数据操纵的任何处理器或机器。然而,各实施例不仅限于执行512比特、256比 特、128比特、64比特、32比特、16比特或8比特数据操作的处理器或机器,并可以应用其中 可以执行对数据的操纵或管理的任何处理器和机器。另外,下列描述提供了示例,为便于说 明,各个附图示出了各种示例。然而,这些示例不应该以限制的方式来解释,因为它们只是 提供本发明的各实施例的示例,而并非提供本发明的各实施例的所有可能的实现的详细清 单。
[0027] 虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处理和分布,但 是本发明的其他实施例可以通过存储在机器可读、有形介质上的数据或指令来完成,这些 数据或指令当由机器执行时,使机器执行根据本发明的至少一个实施例的功能。在一个实 施例中,与本发明的各实施例相关联的功能是以机器可执行指令来实现的。指令可以用来 使利用指令可以被编程的通用或专用的处理器来执行本发明的步骤。本发明的各实施例可 以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了指 令的机器或计算机可读介质,指令可以被用来编程计算机(或其他电子器件)以执行根据 本发明的各实施例的一个或多个操作。此外,还可以由包含用于执行步骤的固定功能逻辑 的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行本发明 的各实施例的步骤。
[0028] 用于编程逻辑以执行本发明的各实施例的指令可以存储在系统中的存储器内,诸 如DRAM、缓存、闪存,或其他存储器。此外,指令还可以通过网络或通过其他计算机可读介质 来分发。如此,机器可读的介质可以包括用于以机器(例如,计算机)可读的形式存储或传 输信息的任何机制,但不仅限于,软盘、光盘、压缩光盘、只读存储器(CD-ROM),以及磁光盘、 只读存储器(ROM)、随机存取存储器(RAM)、可擦与可编程只读存储器(EPROM)、电可擦可编 程只读存储器(EEPROM)、磁卡或光卡、闪存,或用于通过电的、光学的、声音或其他形式的传 播信号(例如,载波、红外信号、数字信号等等)通过因特网来传输信息的有形的,机器可读 的存储器。相应地,计算机可读介质可包括适于以可由机器(例如,计算机)读取的形式来 存储或传输电子指令或信息的任何类型的有形机器可读介质。
[0029] 设计可以经过各个阶段,从创建到模拟到制造。表示设计的数据可以以若干种方 式表示设计。首先,如可以对模拟有用的,硬件可以使用硬件描述语言或另一种功能描述语 言来表示。另外,可以在设计过程的某些阶段产生带有逻辑和/或晶体管门电路的电路级 别的模型。此外,在某些阶段,设计还可以到达表示硬件模型中的各种设备的物理布局的数 据的级别。在使用某些半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生 产集成电路的掩膜的不同的掩膜层上各种特征的存在或不存在的数据。在设计的任何表示 中,数据可以存储在任何形式的机器可读介质中。存储器或诸如盘之类的磁性或光存储器 可以是存储通过光波或电波调制的或为传输信息以别的方式生成的信息的机器可读介质。 当传输表示或携带代码或设计的电的载波时,就执行电信号的复制、缓冲或重新传输而言, 可以制作新副本。如此,通信提供商或网络提供商可以在有形的,机器可读介质上至少临时 存储诸如被编码到载波中的信息之类的制品,实现本发明的各实施例的技术。
[0030] 在现代的处理器中,可以使用若干种不同的执行单元来处理和执行各种代码和指 令。某些指令可能更快地完成,而其他指令可能要花费若干个时钟周期才能完成。指令的 吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会是有利的。 然而,可能有具有较大的复杂性并就执行时间和处理器资源而言要求更高的某些指令,诸 如浮点指令、加载/存储操作、数据移动等等。
[0031] 随着越来越计算机系统用于因特网、文本,以及多媒体应用中,随着时间的推移, 引入了额外的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一 个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常 处理、以及外部输入输出(I/O)。
[0032] 在一个实施例中,指令集架构(ISA)可以通过一个或多个微架构来实现,这些微 架构可包括用于实现一个或多个指令集的处理器逻辑和电路。相应地,带有不同的微架构 的处理器可以共享共同的指令集的至少一部分。例如,丨NTEL?奔腾四(Pentium 4)处理 器、丨ntel?酷睿(Core?)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的先进微 器件有限公司(Advanced Micro Devices,Inc.)的诸多处理器执行几乎相同版本的x86指 令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由诸如ARM有 限公司(ARM Holdings,Ltd.)、MIPS,或它们的被许可方或采用者之类的其他处理器开发公 司设计的处理器可以共享共同的指令集的至少一部分,但是可包括不同的处理器设计。例 如,ISA的相同寄存器架构可以使用新的或已知的技术,以不同的微架构,以不同的方式来 实现,包括专用物理寄存器,使用寄存器重命名机制(例如,寄存器别名表(RAT),重新排序 缓冲器(ROB)以及退役寄存器文件的使用)的一个或多个动态分配的物理寄存器。在一个 实施例中,寄存器可包括:可由软件编程者寻址或不可寻址的一个或多个寄存器、寄存器架 构、寄存器组、或其他寄存器集合。
[0033] 指令可包括一个或多个指令格式。在一个实施例中,指令格式可以指出各种字段 (比特数、比特的位置)以指定,其中,要执行的操作以及将对其进行操作的操作数。在又一 实施例中,某些指令格式可以进一步由指令模板(或子格式)进行定义。例如,给定指令格 式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不同解释 的给定字段。在一个实施例中,指令可以使用指令格式来表达(并且,如果定义,在该指令 格式的指令模板的给定指令模板中),指定或指出操作和操作将对其起作用的操作数。
[0034] 科学、金融、自动矢量化的通用,RMS(识别、挖掘以及合成),以及可视和多媒体应 用程序(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)常常 需要对大量的数据项执行相同操作。在一个实施例中,单指令多数据(SHffi)是指使处理器 对多个数据项执行操作的一种指令。SHffi技术可以用于可以在逻辑上将寄存器中的比特分 割为若干个固定大小的数据元素的处理器中,每一个元素都表示单独的值。例如,在一个实 施例中,64比特寄存器中的比特可以被组织为包含四个单独的16比特数据元素的源操作 数,每一个数据元素都表示单独的16比特值。这种类型的数据被称为'打包(packed)'数 据类型或'矢量'数据类型,这种数据类型的操作数可以被称为打包数据操作数或矢量操作 数。在一个实施例中,打包数据项或矢量可以是存储在单一寄存器内的打包数据元素的序 列,打包数据操作数或矢量操作数可以是SHffi指令(或'打包数据指令'或'矢量指令') 的源或目的地操作数。在一个实施例中,SMD指令指定要对两个源矢量操作数执行的单个 矢量运算,以利用相同或不同数量的数据元素,以相同或不同数据元素顺序,生成相同或不 同大小的目的地矢量操作数(也称为结果矢量操作数)。
[0035] 诸如由具有包括 x86、MMX?、流式 SHffi 扩展(SSE)、SSE2、SSE3、SSE4. 1 以及 SSE4. 2 指令的指令集的Intel⑧Core?处理器使用的技术之类的S頂D技术,诸如具有包括矢量浮点 (VFP)和NEON指令的指令集的ARM Cortex·:处理器系列之类的ARM处理器,以及诸如由中 国科学院计算技术研究所(ICT)开发的龙芯处理器系列之类的MIPS处理器,在应用程序性 能方面实现了大大的改善(Core
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1