发明内容
依据本发明实施例的图形处理器,包括一稀疏矩阵检测单元、一寄存器文件(register file)、一断言寄存器,以及一矩阵运算单元。稀疏矩阵检测单元读取一存储器中的多个矩阵,判断该等矩阵的每一个是否为一零矩阵或一非零矩阵,并输出一判断结果。寄存器文件存储来自稀疏矩阵检测单元的该等矩阵。断言寄存器依据判断结果,对该等矩阵进行标记,并输出一标记结果。矩阵运算单元接收一矩阵运算指令,以及依据标记结果,从寄存器文件中读取该等矩阵中的该等非零矩阵,并且对该等非零矩阵执行矩阵运算。
如上所述的图形处理器,还包括一线程调度及指令分发单元及一整数运算单元。线程调度及指令分发单元发送一整数运算指令及该矩阵运算指令。整数运算单元接收整数运算指令及矩阵运算指令。整数运算单元依据该整数运算指令执行一整数运算,并且将矩阵运算指令转传送给矩阵运算单元。
如上所述的图形处理器,其中,矩阵运算单元包括一控制单元、多个运算子单元,及一累加单元。控制单元从断言寄存器读取该等矩阵的标记结果,并且依据标记结果,从寄存器文件中读取该等矩阵中的该等非零矩阵。该等运算子单元对该等非零矩阵执行矩阵运算。累加单元存储该等运算子单元在执行矩阵运算中的矩阵乘积值及一矩阵运算结果。矩阵乘积值供该等运算子单元执行矩阵运算时使用。
如上所述的图形处理器,其中,矩阵运算单元依据标记结果,从寄存器文件中忽略该等矩阵中的该等零矩阵。
如上所述的图形处理器,其中,当完成矩阵运算时,控制单元从累加单元中读取矩阵运算结果,并且将矩阵运算结果写入该寄存器文件中。
如上所述的图形处理器,其中,断言寄存器以一位来标记该等矩阵中的该等零矩阵及该等非零矩阵。断言寄存器将该等矩阵中的该等零矩阵标记为“0”,并且将该等矩阵中的该等非零矩阵标记为“1”。
依据本发明实施例的矩阵运算的加速方法,适用于一图形处理器,包括:接收一矩阵运算指令;从一存储器中读取多个矩阵,并且判断该等矩阵的每一个是否为一零矩阵或一非零矩阵,并输出一判断结果;依据判断结果,对该等矩阵进行标记,并输出一标记结果;依据标记结果,读取该等矩阵中的该等非零矩阵,并且对该等非零矩阵执行矩阵运算。
如上所述的加速方法,还包括:依据该标记结果,忽略该等矩阵中的该等零矩阵。
如上所述的加速方法,其中,依据该判断结果,对该等矩阵进行标记,包括:以一位来标记该等矩阵中的该等零矩阵及该等非零矩阵。
如上所述的加速方法,其中,以一位来标记该等矩阵中的该等零矩阵及该等非零矩阵包括:将该等矩阵中的该等零矩阵标记为“0”,并且将该等矩阵中的该等非零矩阵标记为“1”。
具体实施方式
本发明参照附图进行描述,其中遍及图式上的相同参考数字标示了相似或相同的元件。上述图式并没有依照实际比例大小描绘,其仅仅提供对本发明的说明。一些发明的型态描述于在下方作为图解示范应用的参考。这意味着许多特殊的细节,关系及方法被阐述来对这个发明提供完整的了解。无论如何,本领域技术人员将认识到若没有一个或更多的特殊细节或用其他方法,此发明仍然可以被实现。以其他例子来说,众所皆知的结构或操作并没有详细列出以避免对这发明的混淆。本发明并没有被阐述的行为或事件顺序所局限,如有些行为可能发生在不同的顺序亦或同时发生在其他行为或事件之下。此外,并非所有阐述的行为或事件都需要被执行在与现有发明相同的方法之中。
图1为本发明实施例的图形处理器的示意图。如图1所示,图形处理器(GraphicsProcessing Unit:GPU)100包括:一稀疏矩阵检测单元102、一寄存器文件(register file)104、一断言寄存器106、一矩阵运算单元108、一线程调度及指令分发单元110、一整数运算单元112、一浮点运算单元114,及一存储器读写控制单元116。当图形处理器100收到一矩阵运算指令时,稀疏矩阵检测单元102可通过存储器读写控制单元116从一存储器(未图示)中读取多个矩阵。在一些实施例中,图形处理器100可包含在一电子装置中,例如一笔记型计算机、一桌上型计算机、一智能型动装置、一平板计算机,以及一工作站服务器等。电子装置可包括另一处理器(例如一中央处理器(CPU))(未图示),用以依据使用者的操作对应地传输指令(例如矩阵运算指令)给图形处理器100。在一些实施例中,存储器为一非易失性存储器,例如一快闪存储器(flash memory)。
稀疏矩阵检测单元102可判断每一矩阵是否为一零矩阵或一非零矩阵,并输出一判断结果给断言寄存器106。在一些实施例中,零矩阵指矩阵中所有的元素皆为0的矩阵,非零矩阵为矩阵中的元素皆不为0或部分为0的矩阵。在一些实施例中,稀疏矩阵检测单元102、寄存器文件104、断言寄存器106、矩阵运算单元108、线程调度及指令分发单元110、整数运算单元112、一浮点运算单元114,及一存储器读写控制单元116由图形处理器100分别执行对应功能的程序代码所产生。举例来说,稀疏矩阵检测单元102由图形处理器100执行可用以检测零矩阵的一程序代码所产生。例如,其程序代码可具有数字逻辑中的一或门的功能,当矩阵中具有至少一元素不为0时,亦即将矩阵中的所有元素与0输入至或门中,若矩阵中有至少一元素与0做或计算的结果不为0,则稀疏矩阵检测单元102判断矩阵为非零矩阵。同理,若矩阵中所有元素与0做或计算的结果皆为0,则稀疏矩阵检测单元102判断矩阵为零矩阵。
寄存器文件104直接存储来自于稀疏矩阵检测单元102的矩阵运算过程中所需的矩阵,或通过稀疏矩阵检测单元102间接存储来自于存储器的矩阵运算过程中所需的矩阵。在一些实施例中,寄存器文件104可为一快取(cache)存储器,用以预先存储矩阵运算过程中所需使用到的矩阵。断言寄存器106依据来自稀疏矩阵检测单元102的判断结果,对矩阵进行标记,并输出一标记结果给矩阵运算单元108。在一些实施例中,断言寄存器106以一位来标记矩阵中的零矩阵及非零矩阵。例如,在一些实施例中,断言寄存器106将矩阵中的零矩阵标记为“0”,并且将矩阵中的非零矩阵标记为“1”,但本发明不限于此。在一些实施例中,断言寄存器106可例如由图1的图形处理器100执行一if-else条件式所产生。举例来说,当稀疏矩阵检测单元102中的矩阵符合第一条件(例如矩阵为零矩阵),则断言寄存器106将矩阵标记为“0”。当稀疏矩阵检测单元102中的矩阵符合第二条件(例如矩阵为非零矩阵),则断言寄存器106将矩阵标记为“1”。矩阵运算单元108接收矩阵运算指令,并且依据来自断言寄存器106的标记结果,从寄存器文件104中读取矩阵中的非零矩阵,并且对非零矩阵执行矩阵运算。
表1为稀疏矩阵检测单元102、断言寄存器106、及矩阵运算单元108对矩阵1~5的处理结果。
表1
在一些实施例中,矩阵1~5存储在存储器中。在图1的图形处理器100收到矩阵运算指令(例如对矩阵1~5的矩阵运算)后,存储器读写控制单元116从存储器中读取矩阵1~5,并且由稀疏矩阵检测单元102将矩阵1~5存储至寄存器文件104中。如表1所示,由于矩阵1及矩阵4内所有的元素皆为0,因此稀疏矩阵检测单元102判断矩阵1及矩阵4为零矩阵,并且断言寄存器106将矩阵1及矩阵4标记为“0”。由于矩阵1及矩阵4被标记为“0”,矩阵运算单元108并不会选取矩阵1及矩阵4做矩阵运算,并且直接在矩阵运算中直接忽略矩阵1及矩阵4。矩阵2、矩阵3及矩阵5均具有至少一非0的元素,因此稀疏矩阵检测单元102判断矩阵2、矩阵3及矩阵5为非零矩阵,断言寄存器106将矩阵2、矩阵3及矩阵5标记为“1”。由于矩阵2、矩阵3及矩阵5被标记为“1”,矩阵运算单元108会选取矩阵2、矩阵3及矩阵5做矩阵运算。上述表1的矩阵1~5仅为例示,不作为本发明的限制。本领域技术人员了解应用于卷积神经网络(CNN)的矩阵运算中的矩阵皆为宏矩阵(其包含几千至数万个元素),因此矩阵1~5的示例是为了方便说明本发明图形处理器100的稀疏矩阵检测单元102、断言寄存器106及矩阵运算单元108的处理动作。由于卷积神经网络(CNN)具有稀疏性的特性,换句话说,在卷积神经网络的矩阵运算中的矩阵有许多零矩阵,因此本发明的图形处理器100的可通过稀疏矩阵检测单元102、断言寄存器106及矩阵运算单元108将矩阵运算中的零矩阵滤除,用以提高矩阵运算的效率。
在图1中,线程调度及指令分发单元110从多个线程中选择一个待处理线程并取出对应指令发往整数运算单元112及浮点运算单元114。举例来说,线程调度及指令分发单元110将待处理线程中的一浮点运算指令发送至浮点运算单元114,并且将一整数运算指令及一矩阵运算指令发送至整数运算单元112。整数运算单元112依据整数运算指令执行对应的整数运算。浮点运算单元114依据浮点运算指令执行对应的浮点运算。在一些实施例中,整数运算单元112及浮点运算单元114用于执行矩阵运算(例如矩阵乘法)之外的运算,例如地址运算和普通(非矩阵)乘法加法运算。在一些实施例中,线程调度及指令分发单元110可将整数运算指令及矩阵运算指令合并为一指令集并传送给整数运算单元112。整数运算单元112从指令集中读取整数运算指令,并且将指令集中的矩阵运算指令转传送给矩阵运算单元108。在一些实施例中,指令集的一第一地址区段为整数运算指令,指令集的一第二地址区段为矩阵运算指令。整数运算单元112仅读取指令集中的第一地址区段的整数运算指令,并且将指令集转传送给矩阵运算单元108。矩阵运算单元108则读取指令集中的第二地址区段的矩阵运算指令。
图2为本发明实施例的矩阵运算单元108的操作示意图。如图2所示,矩阵运算单元108包括一控制单元200、多个运算子单元202,以及一累加单元204。矩阵运算单元108从整数运算单元112收到矩阵运算指令后,矩阵运算单元108的控制单元200从断言寄存器106读取矩阵(例如表1中的矩阵1~5)的标记结果(例如表1中断言寄存器106的标记结果,亦即“0”或“1”),并且依据标记结果,从寄存器文件104中读取矩阵中的非零矩阵(例如表1中的矩阵2、3、5)。接着,矩阵运算单元108的运算子单元202对矩阵中非零矩阵执行矩阵运算,并且忽略矩阵中的零矩阵。矩阵运算单元108的累加单元204存储运算子单元202在执行矩阵运算中的矩阵乘积值及一矩阵运算结果。矩阵乘积值提供运算子单元202执行矩阵运算时使用。
举例来说,运算子单元202将表1中的矩阵2与矩阵3进行矩阵乘法时,运算子单元202会将矩阵2的第一列与矩阵3的第一行的相乘结果(亦即矩阵2与矩阵3相乘时的子乘积值)存储在累加单元204中。并且,在完成矩阵2及矩阵3的每一列及每一行的矩阵乘法运算后,累加单元204将矩阵2与矩阵3相乘时的所有子乘积值进行相加,而对应地得到一矩阵运算结果(亦即最后得到矩阵2乘以矩阵3所得到的一4x4矩阵的所有元素值)。在一些实施例中,矩阵运算单元108的控制单元200从累加单元204中读取矩阵运算结果,并且将矩阵运算结果写入寄存器文件104中,而完成一次完整的矩阵运算。
在一些实施例中,矩阵运算单元108的控制单元200由图1的图形处理器100执行一存取程序代码所产生,用以从断言寄存器106中读取矩阵的标记结果,并且将累加单元204所存储的矩阵运算结果写入寄存器文件104中。在一些实施例中,控制单元200可包括一控制器(未图示)及一寄存器(未图示)。该控制器可执行独立的一存取程序代码,用以从断言寄存器106中读取矩阵的标记结果,并且将标记结果存储在控制单元200的寄存器中。之后,寄存器文件104所存储的矩阵运算结果提供浮点运算单元114做后续的处理。在一些实施例中,本发明的图形处理器100增加了矩阵运算单元108及浮点运算单元114的配对比例,例如在运算过程中,浮点运算单元114有较大机会读取寄存器文件104中所存储矩阵运算单元108的矩阵运算结果,并且对矩阵运算结果做更深入的非矩阵计算,让本发明充分利用了浮点运算单元114强大的计算能力。在一些实施例中,矩阵运算单元108的运算子单元202及累加单元204为图1的图形处理器100执行一矩阵乘法算法所产生,用以得到矩阵相乘后的矩阵运算结果。在一些实施例中,运算子单元202以8个运算子单元做为例示,但本发明不作为限制。
本发明亦公开了适用于一图形处理器(GPU)的一种矩阵运算的加速方法。图3为本发明实施例的图形处理器的加速方法的流程图。本发明的加速方法包括:接收一矩阵运算指令(步骤S300);依据矩阵运算指令,从一存储器中读取多个矩阵(步骤S302);判断矩阵的每一个是否为一零矩阵或一非零矩阵(步骤S304)。在步骤S304中,当矩阵为非零矩阵,则继续执行步骤S306。在步骤S306中,本发明对非零矩阵进行标记。接着,在步骤S308中,本发明读取矩阵中的非零矩阵,并且对非零矩阵执行矩阵运算。在步骤S304中,当矩阵为零矩阵,则继续执行步骤S310。在步骤S310中,本发明对零矩阵进行标记。接着,在步骤S312中,本发明直接忽略矩阵中的零矩阵,并且不对零矩阵执行矩阵运算。
在一些实施例中,步骤S300由图1的图形处理器100的线程调度及指令分发单元110所执行。更详细来说,当线程调度及指令分发单元110接收来自另一处理器(例如中央处理器CPU)的矩阵运算指令时,线程调度及指令分发单元110将矩阵运算指令与整数运算指令结合,并同时传送给整数运算单元112。整数运算单元112将矩阵运算指令转传送给矩阵运算单元108。步骤S302由图1的图形处理器100的稀疏矩阵检测单元102所执行。更详细来说,在图形处理器100接收到矩阵运算指令时,存储器读写控制单元116从一存储器中读取矩阵运算指令中所需的多个矩阵,并且将矩阵传送给稀疏矩阵检测单元102。接着,步骤S304由图1的图形处理器100的稀疏矩阵检测单元102所执行。当稀疏矩阵检测单元102判断矩阵为非零矩阵,则由图1的图形处理器100的断言寄存器106执行步骤S306,并且由矩阵运算单元108执行步骤S308。更详细来说,矩阵运算单元108的控制单元200依据断言寄存器106的标记结果,选取矩阵中的非零矩阵,并且将非零矩阵输入至运算子单元202中,使得运算子单元202及累加单元204可针对非零矩阵做矩阵运算。当稀疏矩阵检测单元102判断矩阵为零矩阵,则由图1的图形处理器100的断言寄存器106执行步骤S310,并且由矩阵运算单元108执行步骤S312。更详细地说,矩阵运算单元108的控制单元200依据断言寄存器106的标记结果,忽略矩阵中的零矩阵,不将零矩阵输入至运算子单元202做矩阵运算。
本发明所公开的图形处理器100及图形处理器的加速方法增加了图形处理器100的矩阵运算单元108的计算能力,并且减少了矩阵运算单元108与寄存器文件104之间的数据存取次数,亦增加了矩阵处理单元108对稀疏矩阵的处理能力,用以提升效能并降低了功耗。本发明的图形处理器100及图形处理器的加速方法充分考虑了卷积神经网络(CNN)的矩阵运算过程中矩阵的稀疏性及非线性,增加了如图1的稀疏矩阵检测单元102及图2矩阵运算单元108中的控制单元200,由于忽略了零矩阵的矩阵运算,使得图形处理器100在矩阵算的过程中减少了20%的计算量,进而使得图形处理器100的加速效率更高并且功耗更低。
总而言之,本发明的图形处理器的优点在于:一、图形处理器的单一核心(core)中加入了运算效率更高的矩阵运算单元(例如矩阵运算单元108);二、为了减少寄存器文件104的读写压力,本发明在矩阵运算单元108中增加了累加单元用于存储矩阵运算过程中的中间数据;三、为了充分利用卷积神经网络(CNN)的稀疏性,本发明增加了稀疏矩阵检测单元102,并利用已有的断言寄存器106存储相关讯息,而矩阵运算单元108中的控制单元200会根据断言寄存器106所存储的相关讯息直接跳过对零矩阵的矩阵计算。
虽然本发明的实施例如上述所描述,我们应该明白上述所呈现的只是范例,而不是限制。依据本实施例上述示范实施例的许多改变是可以在没有违反发明精神及范围下被执行。因此,本发明的广度及范围不该被上述所描述的实施例所限制。更确切地说,本发明的范围应该要以权利要求及其相等物来定义。
尽管上述发明已被一或多个相关的执行来图例说明及描绘,等效的变更及修改将被依据上述规格及附图且熟悉这领域的其他人所想到。此外,尽管本发明的一特别特征已被相关的多个执行之一所示范,上述特征可能由一或多个其他特征所结合,以致于可能有需求及有助于任何已知或特别的应用。
本说明书所使用的专业术语只是为了描述特别实施例的目的,并不打算用来作为本发明的限制。除非上下文有明确指出不同,如本处所使用的单数型,一、该及上述的意思也包含复数型。再者,用词“包括”,“包含”,“(具、备)有”,“设有”,或其变化型不是被用来作为详细叙述,就是作为权利要求书。而上述用词意思是包含,且在某种程度上意思是等同于用词“包括”。
除非有不同的定义,所有本文所使用的用词(包含技术或科学用词)是可以被属于上述发明的技术中本领域技术人员做一般地了解。我们应该更加了解到上述用词,如被定义在众所使用的字典内的用词,在相关技术的上下文中应该被解释为相同的意思。除非有明确地在本文中定义,上述用词并不会被解释成理想化或过度正式的意思。