CN116796816B - 处理器、计算芯片和计算设备 - Google Patents
处理器、计算芯片和计算设备 Download PDFInfo
- Publication number
- CN116796816B CN116796816B CN202311077779.2A CN202311077779A CN116796816B CN 116796816 B CN116796816 B CN 116796816B CN 202311077779 A CN202311077779 A CN 202311077779A CN 116796816 B CN116796816 B CN 116796816B
- Authority
- CN
- China
- Prior art keywords
- arithmetic logic
- output
- processor
- registers
- coupled
- 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
- 238000010586 diagram Methods 0.000 description 8
- 238000000034 method Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Landscapes
- Advance Control (AREA)
Abstract
本公开涉及处理器、计算芯片和计算设备。公开了一种处理器,其包括:N个寄存器;算术逻辑单元,包括多个算术逻辑子单元,每个算术逻辑子单元执行一种运算,其输入耦接到N个寄存器的输出;以及N个多路复用器,每个多路复用器的输入耦接到每个算术逻辑子单元的输出,每个多路复用器根据控制信号选择对应的一个算术逻辑子单元的输出,每个算术逻辑子单元包括:选择模块,耦接到N个寄存器的输出,根据控制信号选择对应的一个寄存器的输出并将其传递到运算模块,或者不选择任何一个寄存器的输出并将预定值传递到运算模块;以及运算模块,针对选择模块传递的寄存器的输出进行运算,其中,N是大于或等于2且小于或等于算术逻辑子单元的数量的整数。
Description
技术领域
本发明涉及计算机领域。具体而言,本发明涉及一种处理器以及包括该处理器的计算芯片和计算设备,特别适用于神经网络相关的计算。
背景技术
在神经网络相关的应用场景中,通常需要利用处理器进行大量运算。处理器的运算效率、功耗、面积等对于整个计算设备的效率和成本至关重要。期望实现一种高效率、低功耗的处理器,从而提高计算效率,降低生产成本和运行成本。
因此,存在对于新技术的需求。
发明内容
本公开的目的之一是提供一种改进的处理器。
根据本发明的一个方面,提供了一种处理器,其包括:N个寄存器;算术逻辑单元,包括多个算术逻辑子单元,每个算术逻辑子单元用于执行一种运算,并且每个算术逻辑子单元的输入耦接到N个寄存器的输出;以及N个多路复用器,每个多路复用器的输入耦接到算术逻辑单元的每一个算术逻辑子单元的输出,并且每个多路复用器根据该多路复用器的控制信号选择对应的一个算术逻辑子单元的输出,其中,每个算术逻辑子单元包括:选择模块,耦接到N个寄存器的输出,用于根据该算术逻辑子单元的控制信号选择对应的一个寄存器的输出并将其传递到运算模块,或者不选择任何一个寄存器的输出并将表示不选择任何一个寄存器的输出的预定值传递到运算模块;以及运算模块,用于针对选择模块传递的寄存器的输出来进行运算,其中,N是大于或等于2且小于或等于算术逻辑子单元的数量的整数。
根据本发明的另一个方面,提供了一种计算芯片,其包括一个或多个上述处理器。
根据本发明的又一个方面,提供了一种计算设备,其包括一个或多个上述计算芯片。
根据参照附图的以下描述,本发明的其它特性特征和优点将变得清晰。
附图说明
所包括的附图用于说明性目的,并且仅用于提供本文所公开的发明性装置以及将其应用到计算设备的方法的可能结构和布置的示例。这些附图决不限制本领域的技术人员在不脱离实施方案的实质和范围的前提下可对实施方案进行的在形式和细节方面的任何更改。所述实施方案通过下面结合附图的具体描述将更易于理解,其中类似的附图标记表示类似的结构元件。
图1示出了现有技术的处理器的示意图。
图2示出了根据本发明的一个实施例的处理器的示意图。
图3示出了根据本发明的一个实施例的处理器中的一个算术逻辑子单元的连接方式的示意图。
图4示出了根据本发明的另一个实施例的处理器的示意图。
注意,在以下说明的实施方式中,有时在不同的附图之间共同使用同一附图标记来表示相同部分或具有相同功能的部分,而省略其重复说明。在本说明书中,使用相似的标号和字母表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于理解,在附图等中所示的各结构的位置、尺寸及范围等有时不表示实际的位置、尺寸及范围等。因此,所公开的发明并不限于附图等所公开的位置、尺寸及范围等。此外,附图不必按比例绘制,一些特征可能被放大以示出具体组件的细节。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应当注意,除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。也就是说,本文中的哈希引擎是以示例性的方式示出,来说明本公开中的电路的不同实施例,而并非意图限制。本领域的技术人员将会理解,它们仅仅说明可以用来实施本发明的示例性方式,而不是穷尽的方式。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
图1示出了现有技术的处理器100的示意图。处理器100可以用于实现多种算术逻辑计算。
处理器100包括寄存器110、算术逻辑单元120以及多路复用器130。
寄存器110用于存储数据,其输出耦接到算术逻辑单元120。算术逻辑单元120可以包括多个算术逻辑子单元A-H,每个算术逻辑子单元用于执行一种运算。每个算术逻辑子单元A-H的输入耦接到寄存器110的输出。多路复用器130的输入耦接到算术逻辑单元120的每一个算术逻辑子单元A-H的输出,并且根据多路复用器的控制信号(未示出)选择对应的一个算术逻辑子单元的输出。
在现有技术的处理器100运行时,寄存器110的数据被传递到算术逻辑单元120的每一个算术逻辑子单元A-H并进行运算。之后,每一个算术逻辑子单元A-H的运算结果被输出到多路复用器130,多路复用器130进而根据其控制信号选择对应的一个算术逻辑子单元的运算结果作为其输出。例如,多路复用器130可以根据其控制信号为0而选择算术逻辑子单元A的运算结果作为其输出。
但是,现有技术的处理器100存在一些问题。首先,在一个周期内,处理器100只能处理一个算术逻辑运算。因此,处理器100的运算性能有限,运算效率较低。其次,处理器100运行时,每一个算术逻辑子单元A-H都进行运算,但只有其中一个运算结果被选择并输出。换言之,处理器100进行了大量的无效运算,使得其功耗较大。
本公开旨在解决上述问题中的至少一部分。
图2示出了根据本发明的一个实施例的处理器200的示意图。处理器200可以用于实现多种算术逻辑计算,例如,加、减、乘、除、移位、截断、求倒数、取模等。
处理器200包括:N个寄存器211、212、213、214,包括多个算术逻辑子单元220A-220H的算术逻辑单元220,以及N个多路复用器231、232、233、234。
其中,N是大于或等于2且小于或等于算术逻辑子单元的数量的整数。在图2示出的实施例中,N为4,算术逻辑子单元的数量为8。在其他实施例中,二者均可根据实际应用的需求而适当地选择不同的值。例如,N可以为2。
寄存器211、212、213、214用于存储数据,其输出耦接到算术逻辑单元220。具体而言,每一个寄存器211、212、213、214的输出耦接到算术逻辑单元220的每一个算术逻辑子单元220A-220H的输入。为了清楚起见,图2中没有绘出每一个寄存器211、212、213、214的输出到每一个算术逻辑子单元220A-220H的输入的所有连接关系。
算术逻辑单元220可以包括多个算术逻辑子单元220A-220H,每个算术逻辑子单元用于执行一种运算。在一种实施例中,每个算术逻辑子单元用于执行以下运算中的一者:加、减、乘、除、移位、截断、求倒数、取模。如上所述,每个算术逻辑子单元220A-220H的输入耦接到N个寄存器211、212、213、214的输出。其中,每个算术逻辑子单元220A-220H分别包括选择模块221A-221H和运算模块A-H。
每个选择模块221A-221H耦接到N个寄存器211、212、213、214的输出,用于根据该算术逻辑子单元的控制信号选择对应的一个寄存器的输出并将其传递到运算模块,或者不选择任何一个寄存器的输出并将表示不选择任何一个寄存器的输出的预定值传递到运算模块。该预定值可以是预先指定的、表示不选择任何一个寄存器的输出的任何合适的值。在优选的实施例中,该预定值可以是零,从而进一步降低处理器的功耗。
在优选的实施例中,每个算术逻辑子单元220A-220H的控制信号可以包括N个值,分别对应于N个寄存器。例如,选择模块221A可以根据该算术逻辑子单元220A的控制信号280A为“1000”而选择寄存器211的输出并将其传递到运算模块A。或者,选择模块221A可以根据该算术逻辑子单元220A的控制信号280A为“0000”而不选择任何一个寄存器的输出并将预定值传递到运算模块A。为了清楚起见,图2中没有绘出其他算术逻辑子单元220B-220H的控制信号,但本领域技术人员应当理解,其他算术逻辑子单元220B-220H的控制信号可以与算术逻辑子单元220A的控制信号280A类似地工作。
运算模块A-H用于针对选择模块221A-221H传递的寄存器的输出来进行运算。特别地,在优选的实施例中,该预定值可以是零,并且当选择模块221A-221H传递的值为零时,运算模块A-H不需要进行运算。这使得处理器200的总体功耗大大降低。在一种实施例中,运算模块A-H可以分别用于执行以下运算中的一者:加、减、乘、除、移位、截断、求倒数、取模。
每个多路复用器231、232、233、234的输入耦接到算术逻辑单元220的每一个算术逻辑子单元220A-220H的输出,并且每个多路复用器231、232、233、234根据该多路复用器的控制信号291、292、293、294选择对应的一个算术逻辑子单元的输出作为运算结果。为了清楚起见,图2中没有绘出每一个算术逻辑子单元220A-220H的输出到每一个多路复用器231、232、233、234的输入的所有连接关系。每个多路复用器231、232、233、234可以由逻辑门器件实现。
每个多路复用器231、232、233、234的输出可以耦接到相应的寄存器211、212、213、214的输入,从而将运算结果传递到相应的寄存器211、212、213、214。此外,每个多路复用器231、232、233、234的输出可以耦接到处理器200的输出,从而在运算循环结束时输出运算结果。
在运算循环开始时,N个寄存器211、212、213、214可以分别从外部接收输入作为处理器100的输入。在运算循环进行中,N个多路复用器231、232、233、234分别将当前周期的运算结果反馈到相应的寄存器211、212、213、214,从而循环地进行进一步的运算。在运算循环结束时,N个多路复用器231、232、233、234可以分别输出运算结果。
在优选的实施例中,如图2所示,第1至N个多路复用器231、232、233、234的输出可以分别耦接到第1至N个寄存器211、212、213、214的输入,同时耦接到处理器200的输出。
在进一步优选的实施例中,在图2所示的处理器200中可以并行地处理N个不同的运算。即,在每个周期内,处理器200可以处理N个互不相同的运算。这样,第1至N个多路复用器231、232、233、234的控制信号291、292、293、294可以分别选择与第1至N个寄存器211、212、213、214对应的算术逻辑子单元的输出,并分别将其反馈到第1至N个寄存器211、212、213、214。也就是说,在图2所示的处理器200中可以针对N个寄存器211、212、213、214存储的数据并行地执行N个不同的运算。
例如,可以在当前周期内分别针对第1至4个寄存器的值进行A、B、C、D等4种运算。那么,算术逻辑子单元220A的选择模块221A可以选择寄存器211的输出并由运算模块A进行运算,而多路复用器231的控制信号291可以选择与寄存器211对应的算术逻辑子单元220A的输出,并将该输出反馈到寄存器211。例如,控制信号291可以为0以选择算术逻辑子单元220A的输出。类似地,算术逻辑子单元220B的选择模块221B可以选择寄存器212的输出并由运算模块B进行运算,而多路复用器232的控制信号292可以选择与寄存器212对应的算术逻辑子单元220B的输出,并将该输出反馈到寄存器212。例如,控制信号292可以为1以选择算术逻辑子单元220B的输出。算术逻辑子单元220C的选择模块221C可以选择寄存器213的输出并由运算模块C进行运算,而多路复用器233的控制信号293可以选择与寄存器213对应的算术逻辑子单元220C的输出,并将该输出反馈到寄存器213。例如,控制信号293可以为2以选择算术逻辑子单元220C的输出。算术逻辑子单元220D的选择模块221D可以选择寄存器214的输出并由运算模块D进行运算,而多路复用器234的控制信号294可以选择与寄存器214对应的算术逻辑子单元220D的输出,并将该输出反馈到寄存器214。例如,控制信号294可以为3以选择算术逻辑子单元220D的输出。
于是,在处理器200运行时,处理器200可以并行地处理N个不同的运算。这使得处理器200的运算效率提升为现有技术中的处理器100的N倍,显著提升了处理器的运算性能。
此外,在优选的实施例中,表示不选择任何一个寄存器的输出的预定值可以是零。这样,在处理器200运行时,在算术逻辑子单元220A-220H中的选择模块221A-221H的控制下,仅期望进行运算的算术逻辑子单元中的运算模块接收到相应的数值并进行运算,其他算术逻辑子单元中的运算模块接收到零值因而不进行运算。这样,在处理器200中消除了大量的无效运算,使得其功耗显著降低。
注意,在处理器200运行时,可以并行地处理N个不相关的运算,也可以对于N组数据并行地进行一系列相同的运算,只需确保在同一周期内同时进行的N个运算彼此不同。如果出现运算冲突(即在同一周期内同时进行的N个运算中的至少一部分运算相同),则可以调整相应的算术逻辑子单元的控制信号以使得至少一组运算等待一个或多个周期,从而彼此错开。
例如,如果期望分别针对N个寄存器211、212、213、214中的数据依次执行A、B、C、D等运算(即,对于N组数据并行地进行一系列相同的运算),则可以调整各个算术逻辑子单元的控制信号以执行以下操作:在第一个周期内令算术逻辑子单元220A选择寄存器211的输出并对其进行A运算,而多路复用器231的控制信号291选择与寄存器211对应的算术逻辑子单元220A的输出并将该输出反馈到寄存器211;在第二个周期内令算术逻辑子单元220A选择寄存器212的输出并对其进行A运算,并且令算术逻辑子单元220B选择寄存器211的输出并对其进行B运算,而多路复用器231、232的控制信号291、292分别选择分别与寄存器211、212对应的算术逻辑子单元220B、220A的输出并分别将该输出反馈到寄存器211、212;在第三个周期内令算术逻辑子单元220A选择寄存器213的输出并对其进行A运算,令算术逻辑子单元220B选择寄存器212的输出并对其进行B运算,并且令算术逻辑子单元220C选择寄存器211的输出并对其进行C运算,而多路复用器231、232、233的控制信号291、292、293分别选择分别与寄存器211、212、213对应的算术逻辑子单元220C、220B、220A的输出并分别将该输出反馈到寄存器211、212、213;在第四个周期内令算术逻辑子单元220A选择寄存器214的输出并对其进行A运算,令算术逻辑子单元220B选择寄存器213的输出并对其进行B运算,令算术逻辑子单元220C选择寄存器212的输出并对其进行C运算,并且令算术逻辑子单元220D选择寄存器211的输出并对其进行D运算,而多路复用器231、232、233、234的控制信号291、292、293、294分别选择分别与寄存器211、212、213、214对应的算术逻辑子单元220D、220C、220B、220A的输出并分别将该输出反馈到寄存器211、212、213、214;依此类推。这样,可以灵活地调整运算时序,以一定的延时为代价解决运算冲突的问题。
图3示出了根据本发明的一个实施例的处理器200中的一个算术逻辑子单元220A的连接方式的示意图。
算术逻辑子单元220A包括选择模块221A和运算模块A。其中,选择模块221A耦接到N个寄存器211、212、213、214的输出,用于根据该算术逻辑子单元220A的控制信号280A选择对应的一个寄存器的输出并将其传递到运算模块A,或者不选择任何一个寄存器的输出并将表示不选择任何一个寄存器的输出的预定值传递到运算模块A。
在优选的实施例中,控制信号280A可以包括N个值,分别对应于N个寄存器。在优选的实施例中,如图3所示,选择模块221A可以由N个与门以及包括N个输入端子的或门组成。其中,每个与门的第一端子可以耦接到对应的一个寄存器211、212、213、214的输出,第二端子可以耦接到该算术逻辑子单元220A的控制信号280A的N个值中的与耦接到该第一端子的寄存器211、212、213、214对应的一个值。或门的每个输入端子可以分别耦接到N个与门的输出端子,并且或门的输出端子可以耦接到该算术逻辑子单元220A的运算模块A。
举例而言,当期望针对寄存器211的值进行A运算时,控制信号280A可以为“1000”,使得值“1”“0”“0”“0”依次输入到4个与门的一个输入端子,而4个寄存器211、212、213、214的输出依次耦接到4个与门的另一个输入端子。这样,第1个与门的输出为寄存器211的值,而第2-4个与门的输出为表示不选择任何一个寄存器的输出的预定值。于是,寄存器211的值经由或门被输出到运算模块A,运算模块A接收到寄存器211的值并对其进行A运算。
另一示例中,当不期望进行A运算时,控制信号280A可以为“0000”,使得值“0”“0”“0”“0”依次输入到4个与门的一个输入端子,而4个寄存器211、212、213、214的输出依次耦接到4个与门的另一个输入端子。这样,4个与门的输出及或门的输出均为表示不选择任何一个寄存器的输出的预定值。在优选的实施例中,该预定值可以是零。于是,运算模块A接收到零值而不进行运算。这样,可以消除无效的运算,使得处理器200的总体功耗显著降低。
在优选的实施例中,选择模块221A可以由N个与非门以及包括N个输入端子的或非门组成。其中,每个与非门的第一端子可以耦接到对应的一个寄存器211、212、213、214的输出,第二端子可以耦接到该算术逻辑子单元220A的控制信号280A的N个值中的与耦接到该第一端子的寄存器211、212、213、214对应的一个值。或非门的每个输入端子可以分别耦接到N个与非门的输出端子,并且或非门的输出端子可以耦接到该算术逻辑子单元220A的运算模块A。在此实施例中,与非门、或非门和前述实施例中的与门、或门类似地工作,在此不再详细描述。
图4示出了根据本发明的另一个实施例的处理器400的示意图。在神经网络相关的计算中,经常需要对于大量的数据进行一系列相同的运算。图4所示的实施例中的处理器400可以实现流水线运行方式,因而特别适用于这种应用场景。
处理器400包括:N个寄存器411、412、413、414,包括多个算术逻辑子单元420A-420H的算术逻辑单元420,以及N个多路复用器431、432、433、434。每个算术逻辑子单元420A-420H包括选择模块421A-421H和运算模块A-H。其中,每个寄存器411、412、413、414的输出耦接到每个算术逻辑子单元420A-420H的输入,而每个多路复用器431、432、433、434的输入耦接到每个算术逻辑子单元420A-420H的输出。为了清楚起见,图4中没有绘出以上描述的寄存器、算术逻辑子单元和多路复用器之间的所有连接关系。
处理器400的构造与图2所示的处理器200基本类似,因此其细节不再赘述。
在处理器400中,每个选择模块421A-421H耦接到N个寄存器411、412、413、414的输出,用于根据该算术逻辑子单元的控制信号选择对应的一个寄存器的输出并将其传递到运算模块,或者不选择任何一个寄存器的输出并将表示不选择任何一个寄存器的输出的预定值传递到运算模块。为了清楚起见,图4中仅绘出了算术逻辑子单元220A的控制信号480A。
在如图4所示的实施例中,第1至N-1个多路复用器431、432、433的输出可以分别耦接到第2至N个寄存器412、413、414的输入,而第N个多路复用器434的输出可以耦接到处理器400的输出,用于在运算循环结束时输出运算结果。
在每个周期中,第1个寄存器411可以从外部接收输入作为处理器400的输入,并且该数值被传递到相应的算术逻辑子单元的运算模块以进行相应的运算。多路复用器431选择相应运算的运算结果,并将其输出到寄存器412以等待下一次运算。同时,第2至N-1个寄存器412、413中存储的数值(即,先前的运算结果)被传递到相应的算术逻辑子单元的运算模块以进行相应的运算,并且多路复用器432、433分别选择相应运算的运算结果并分别将其输出到寄存器413、414以等待下一次运算。与此同时,第N个寄存器414中存储的数值被传递到相应的算术逻辑子单元的运算模块以进行相应的运算,并且多路复用器434选择相应运算的运算结果并将其输出。
这样,处理器400可以以流水线运行方式不断地对于不同的数据进行一系列相同的运算。
注意,在这样的实施例中,在一系列运算的过程中,处理器400中的每个算术逻辑子单元420A-420H所对应的寄存器始终相同。例如,如果期望依次执行运算A、B、C、D,则算术逻辑子单元420A、420B、420C、420D始终分别从寄存器411、412、413、414接收数据。因此,在运算过程中,各个算术逻辑子单元的控制信号不需要改变,从而进一步降低了控制信号的翻转功耗。这样,与图2中所示的处理器200相比,处理器400的功耗得以进一步降低。
在进一步优选的实施例中,可以以图2中所示的处理器200的连接方式实现与图4中所示的处理器400类似的流水线运行方式。
如图2所示,在处理器200中,第1至N个多路复用器231、232、233、234的输出可以分别耦接到第1至N个寄存器211、212、213、214的输入,同时耦接到处理器200的输出。在此优选实施例中,第2至N个多路复用器232、233、234的控制信号可以分别选择与第1至N-1个寄存器211、212、213对应的算术逻辑子单元的输出,并且第1个多路复用器231的控制信号可以选择与第N个寄存器214对应的算术逻辑子单元的输出。
这样,可以调整各个算术逻辑子单元的控制信号以实现流水线运行方式。例如,如果期望以流水线方式依次执行运算A、B、C、D,则在每个周期中:第1个寄存器211可以从外部接收输入作为处理器200的输入,并且该数值被传递到相应的算术逻辑子单元(即算术逻辑子单元420A)的运算模块以进行相应的运算;第2个多路复用器232可以选择与第1个寄存器211对应的算术逻辑子单元(即算术逻辑子单元420A)的输出,并将其输出到第2个寄存器212以等待下一次运算。同时,第2至N-1个寄存器212、213中存储的数值被传递到相应的算术逻辑子单元(即算术逻辑子单元420B、420C)的运算模块以进行相应的运算;第3至N个多路复用器433、434分别选择与第2至N-1个寄存器212、213对应的算术逻辑子单元(即算术逻辑子单元420B、420C)的输出并分别将其输出到第3至N个寄存器213、214以等待下一次运算。与此同时,第N个寄存器214中存储的数值被传递到相应的算术逻辑子单元(即算术逻辑子单元420D)的运算模块以进行相应的运算;第1个多路复用器231选择与第N个寄存器214对应的算术逻辑子单元(即算术逻辑子单元420D)的输出,并将其作为处理器400的运算结果而输出。
于是,基于以上所述的N个多路复用器的控制信号,处理器200可以以流水线的形式不断地对于不同的数据进行一系列相同的运算。
此外,如前所述,处理器200还可以以并行方式运行。在优选的实施例中,可以通过硬件方式实现处理器200的连接方式,并且通过改变N个多路复用器的控制信号来改变处理器200的运行方式(即,并行方式或流水线方式)。这使得能够更加灵活地选择处理器的运行方式,而无需额外的硬件成本。
在一种实现方式中,一种计算芯片可以包括一个或多个上述处理器。在一种实现方式中,一种计算设备可以包括一个或多个计算芯片。多个计算芯片可以并行地执行计算任务。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
还应理解,“包括/包含”一词在本文中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件以及/或者它们的组合。
虽然已通过示例详细展示了本发明的一些具体实施例,但是本领域技术人员应当理解,上述示例仅意图是说明性的而不限制本发明的范围。本领域技术人员应该理解,上述实施例可以在不脱离本发明的范围和实质的情况下被修改。本发明的范围是通过所附的权利要求限定的。
Claims (15)
1.一种处理器,包括:
N个寄存器;
算术逻辑单元,包括多个算术逻辑子单元,每个算术逻辑子单元用于执行一种运算且仅能够执行一种运算,并且所述算术逻辑单元中的每个算术逻辑子单元用于执行不同的运算,并且每个算术逻辑子单元的输入耦接到N个寄存器的输出;以及
N个多路复用器,每个多路复用器的输入耦接到所述算术逻辑单元的每一个算术逻辑子单元的输出,并且每个多路复用器根据该多路复用器的控制信号选择对应的一个算术逻辑子单元的输出,
其中,每个算术逻辑子单元包括:
选择模块,耦接到N个寄存器的输出,用于接收该算术逻辑子单元的控制信号并且根据接收到的该算术逻辑子单元的控制信号而选择执行以下操作中的一者:(1)选择对应的一个寄存器的输出并将其传递到运算模块,以及(2)不选择任何一个寄存器的输出并将表示不选择任何一个寄存器的输出的预定值传递到运算模块;以及
运算模块,用于针对选择模块传递的寄存器的输出来进行运算,
其中,N是大于或等于2且小于或等于算术逻辑子单元的数量的整数。
2.如权利要求1所述的处理器,其中第1至N个多路复用器的输出分别耦接到第1至N个寄存器的输入,同时耦接到处理器的输出。
3.如权利要求2所述的处理器,其中第1至N个多路复用器的控制信号分别选择与第1至N个寄存器对应的算术逻辑子单元的输出。
4.如权利要求1所述的处理器,其中第1至N-1个多路复用器的输出分别耦接到第2至N个寄存器的输入,并且第N个多路复用器的输出耦接到处理器的输出。
5.如权利要求4所述的处理器,其中第1至N个多路复用器的控制信号分别选择与第1至N个寄存器对应的算术逻辑子单元的输出。
6.如权利要求2所述的处理器,其中第2至N个多路复用器的控制信号分别选择与第1至N-1个寄存器对应的算术逻辑子单元的输出,并且第1个多路复用器的控制信号选择与第N个寄存器对应的算术逻辑子单元的输出。
7.如权利要求1-6中任一项所述的处理器,其中表示不选择任何一个寄存器的输出的所述预定值为零。
8.如权利要求1-6中任一项所述的处理器,其中每个算术逻辑子单元的控制信号包括N个值,分别对应于N个寄存器。
9.如权利要求8所述的处理器,其中每个算术逻辑子单元的选择模块包括:
N个与门,每个与门的第一端子耦接到对应的一个寄存器的输出,第二端子耦接到该算术逻辑子单元的控制信号的N个值中的与耦接到该第一端子的寄存器对应的一个值;以及
包括N个输入端子的或门,或门的每个输入端子分别耦接到N个与门的输出端子,并且或门的输出端子耦接到该算术逻辑子单元的运算模块。
10.如权利要求8所述的处理器,其中每个算术逻辑子单元的选择模块包括:
N个与非门,每个与非门的第一端子耦接到对应的一个寄存器的输出,第二端子耦接到该算术逻辑子单元的控制信号的N个值中的与耦接到该第一端子的寄存器对应的一个值;以及
包括N个输入端子的或非门,或非门的每个输入端子分别耦接到N个与非门的输出端子,并且或非门的输出端子耦接到该算术逻辑子单元的运算模块。
11.如权利要求1-6中任一项所述的处理器,其中每个多路复用器由逻辑门器件实现。
12.如权利要求1-6中任一项所述的处理器,其中N为4。
13.如权利要求1-6中任一项所述的处理器,其中多个算术逻辑子单元中的每一个用于进行以下运算中的一者:加、减、乘、除、移位、截断、求倒数、取模。
14.一种计算芯片,包括一个或多个如权利要求1-13中任一项所述的处理器。
15.一种计算设备,包括一个或多个如权利要求14所述的计算芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311077779.2A CN116796816B (zh) | 2023-08-25 | 2023-08-25 | 处理器、计算芯片和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311077779.2A CN116796816B (zh) | 2023-08-25 | 2023-08-25 | 处理器、计算芯片和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116796816A CN116796816A (zh) | 2023-09-22 |
CN116796816B true CN116796816B (zh) | 2024-05-14 |
Family
ID=88045023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311077779.2A Active CN116796816B (zh) | 2023-08-25 | 2023-08-25 | 处理器、计算芯片和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116796816B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323981A (en) * | 1977-10-21 | 1982-04-06 | Tokyo Shibaura Denki Kabushiki Kaisha | Central processing unit with improved ALU circuit control |
US7710427B1 (en) * | 2004-05-14 | 2010-05-04 | Nvidia Corporation | Arithmetic logic unit and method for processing data in a graphics pipeline |
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
CN108268944A (zh) * | 2016-12-31 | 2018-07-10 | 上海兆芯集成电路有限公司 | 具有可重塑之存储器之神经网络单元 |
CN114691600A (zh) * | 2018-08-16 | 2022-07-01 | 塔奇姆有限公司 | 用于处理器的算术逻辑单元布局 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062635B2 (en) * | 2002-08-20 | 2006-06-13 | Texas Instruments Incorporated | Processor system and method providing data to selected sub-units in a processor functional unit |
US7882165B2 (en) * | 2003-12-29 | 2011-02-01 | Xilinx, Inc. | Digital signal processing element having an arithmetic logic unit |
US7840627B2 (en) * | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Digital signal processing circuit having input register blocks |
-
2023
- 2023-08-25 CN CN202311077779.2A patent/CN116796816B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4323981A (en) * | 1977-10-21 | 1982-04-06 | Tokyo Shibaura Denki Kabushiki Kaisha | Central processing unit with improved ALU circuit control |
US7710427B1 (en) * | 2004-05-14 | 2010-05-04 | Nvidia Corporation | Arithmetic logic unit and method for processing data in a graphics pipeline |
CN101751244A (zh) * | 2010-01-04 | 2010-06-23 | 清华大学 | 微处理器 |
CN108268944A (zh) * | 2016-12-31 | 2018-07-10 | 上海兆芯集成电路有限公司 | 具有可重塑之存储器之神经网络单元 |
CN114691600A (zh) * | 2018-08-16 | 2022-07-01 | 塔奇姆有限公司 | 用于处理器的算术逻辑单元布局 |
Also Published As
Publication number | Publication date |
---|---|
CN116796816A (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11995027B2 (en) | Neural processing accelerator | |
WO2019218896A1 (zh) | 计算方法以及相关产品 | |
US9977676B2 (en) | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods | |
US9684509B2 (en) | Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods | |
CN109144469B (zh) | 流水线结构神经网络矩阵运算架构及方法 | |
US20070074001A1 (en) | Reconfigurable integrated circuit device | |
US9361065B2 (en) | Processor and processing method | |
US10656943B2 (en) | Instruction types for providing a result of an arithmetic operation on a selected vector input element to multiple adjacent vector output elements | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
CN116796816B (zh) | 处理器、计算芯片和计算设备 | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
CN112074810B (zh) | 并行处理设备 | |
US10387118B2 (en) | Arithmetic operation unit and method of controlling arithmetic operation unit | |
CN215068205U (zh) | 16位加法器、运算电路及芯片 | |
CN215068203U (zh) | 49位加法器、运算电路及芯片 | |
CN114756203A (zh) | 基4 Booth乘法器及其实现方法、运算电路及芯片 | |
CN114756200A (zh) | 用于实现基4 Booth乘法器的64位加法器及其实现方法、运算电路及芯片 | |
Yang et al. | High-performance systolic arrays for band matrix multiplication | |
Feng et al. | Design and evaluation of a novel reconfigurable ALU based on FPGA | |
US8150949B2 (en) | Computing apparatus | |
CN114816329B (zh) | 用于实现基4 Booth乘法器的32位加法器及其实现方法 | |
US7007059B1 (en) | Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization | |
Bao et al. | A reconfigurable macro-pipelined systolic accelerator architecture | |
CN115390924A (zh) | 指令执行方法、执行引擎、处理器、芯片及电子设备 | |
CN117709406A (zh) | 一种基于多fpga的大规模卷积神经网络加速与部署器实现方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |