附图说明
图1是依照本发明的一实施例的一种数据管理装置的电路方块(circuit block)示意图。
图2是依照本发明的一实施例的一种数据管理方法的流程示意图。
图3是依照本发明的一实施例所绘示,图1所示数据读取分发电路将数据存储至寄存器的数据分发情境示意图。
图4是依照本发明的另一实施例所绘示,图1所示数据读取分发电路将数据存储至寄存器的数据分发情境示意图。
图5是依照本发明的又一实施例所绘示,图1所示数据读取分发电路将数据存储至寄存器的数据分发情境示意图。
附图标记说明
10:外部存储器
100:数据管理装置
110:流处理器簇
111:数据请求
120:数据读取分发电路
130:配置单元
131:数据初始化请求
addr_1、addr_2、addr_m:地址
CB_1、CB_2、CB_3、CB_4、CB_n:寄存器
D_1、D_2、D_3、D_4、D_5、D_6、D_7、D_8:数据
EU_1、EU_2、EU_n:执行单元
S210~S230:步骤。
具体实施方式
现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同组件符号在附图和描述中用来表示相同或相似部分。
在本案说明书全文(包括权利要求)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以透过其他装置或某种连接手段而间接地连接至该第二装置。本案说明书全文(包括权利要求)中提及的“第一”、“第二”等用语是用以命名组件(element)的名称,而并非用来限制组件数量的上限或下限,亦非用来限制组件的次序。另外,凡可能之处,在附图及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
作为实例,下述诸实施例可以应用于在图形处理单元上的通用计算(general-purpose computing on graphics processing units,GPGPU)的片上常数寄存器(on-chipconstant buffer)或是其他片上常数寄存器的数据管理。举例来说(但不限于此),下述诸实施例可以适用于人工智能(artificial intelligence, AI)的应用场景。下述诸实施例将说明一种可配置的高效的数据管理方式,提高了寄存器(例如常数寄存器)的使用效率,减少了通用寄存器的访问带宽。
图1是依照本发明的一实施例的一种数据管理装置100的电路方块(circuitblock)示意图。图1所示数据管理装置100包括流处理器簇(stream processor cluster)110以及多个寄存器(例如常数寄存器)CB_1、CB_2、…、CB_n。流处理器簇110包括多个执行单元(execution unit,EU)EU_1、EU_2、…、EU_n。寄存器CB_1~CB_n与执行单元EU_1~EU_n的数量n可以是依照实际设计所决定的整数(例如n=2m,m为正整数)。这些执行单元EU_1~EU_n各自具有地址addr_1、addr_2、…、addr_m的存储空间。地址addr_1~addr_m的数量m可以是依照实际设计所决定的整数。这些执行单元EU_1~EU_n一对一地耦接至寄存器CB_1~CB_n。这些执行单元EU_1~EU_n的每一个从寄存器CB_1~CB_n中的一个对应寄存器读取至少一个数据(例如常数)以进行计算。所述计算可以是任何应用程序的计算。举例来说(但不限于此),流处理器簇110所进行的计算可以是人工智能(AI)的程序计算。
图1所示数据管理装置100还包括数据读取分发电路120以及配置单元130。配置单元130耦接至数据读取分发电路120。数据读取分发电路120耦接至这些寄存器CB_1~CB_n。基于数据请求(例如流处理器簇110所发出的数据请求111以及/或是配置单元130所发出的数据初始化请求131),数据读取分发电路120可以从外部存储器10提取多笔(或多个)数据,例如常数数据。然后基于所述数据请求的所述数据配置方式,数据读取分发电路120可以将数据以数据广播(broadcast)以及(或是)数据拆分(split)方式分发给这些寄存器CB_1~CB_n。
外部存储器10可以包括高带宽存储器(High Bandwidth Memory, HBM)、动态随机存取存储器(Dynamic Random Access Memory, DRAM)静态随机存取存储器(StaticRandom-Access Memory, SRAM)、磁阻式随机存取存储器(Magnetoresistive RandomAccess Memory, MRAM)、相变化存储器(Phase-change memory, PRAM),以及阻变式存储器(Resistive Random Access Memory, RRAM)等。
图2是依照本发明的一实施例的一种数据管理方法的流程示意图。请参照图1与图2。在步骤S210中,数据读取分发电路120可以基于数据请求(例如数据请求111以及/或是数据初始化请求131)从外部存储器10提取多个数据。在步骤S220中,基于数据请求(例如数据请求111以及/或是数据初始化请求131)的数据配置方式,数据读取分发电路120可以将寄存器CB_1~CB_n划分为至少一个寄存器群组,以及将从外部存储器10提取的所述多个数据划分为对应所述至少一个寄存器群组的至少一个数据群组。在步骤S230中,数据读取分发电路120可以基将所述至少一个数据群组中的每一个数据群组的所有数据分发至所述至少一个寄存器群组中的对应寄存器群组的每一个寄存器。
举例来说,配置单元130可以发出数据初始化请求131给数据读取分发电路120。数据读取分发电路120可以基于所述数据初始化请求131从外部存储器10提取多个初始数据。基于数据初始化请求131的数据配置方式,数据读取分发电路120可以将这些寄存器CB_1~CB_n划分为多个寄存器群组,以及将所述多个初始数据划分为对应所述至少一个寄存器群组的所述至少一个数据群组。数据读取分发电路120可以将所述至少一个数据群组中的每一个数据群组的所有初始数据分发至所述至少一个寄存器群组中的对应寄存器群组的每一个寄存器。
再举例来说,流处理器簇110在执行应用程序的过程中发出数据请求111给数据读取分发电路120,以实时更新在这些寄存器CB_1~CB_n中的所述应用程序所使用的数据。数据读取分发电路120可以基于数据请求111从外部存储器10提取多笔数据,例如常数数据。基于数据请求111的数据配置方式,数据读取分发电路120可以将这些寄存器CB_1~CB_n划分为多个寄存器群组,以及将所述多个初始数据划分为对应所述至少一个寄存器群组的所述至少一个数据群组。数据读取分发电路120可以将对应所述多个寄存器群组的多个数据群组中的每一个数据群组的所有初始数据广播至对应寄存器群组的每一个寄存器的相同地址。
图3是依照本发明的一实施例所绘示,图1所示数据读取分发电路120将数据(例如常数数据)存储至寄存器CB_1~CB_n的数据分发情境示意图。在图3所示情境范例中,寄存器CB_1~CB_n的数量n被假设为4,而数据读取分发电路120基于数据请求(例如数据请求111以及/或是数据初始化请求131)从外部存储器10提取8笔数据(例如初始数据)D_1、D_2、D_3、D_4、D_5、D_6、D_7与D_8。基于所述数据请求的数据配置方式,数据读取分发电路120决定将寄存器CB_1、CB_2、CB_3与CB_4划分为4个寄存器群组(每一个寄存器群组只有一个寄存器),以及将数据D_1~D_8划分为对应所述4个寄存器群组的4个数据群组。数据读取分发电路120可以基于所述数据请求的数据配置方式,将每一个数据群组的所有初始数据分发至对应寄存器群组的每一个寄存器的相同地址。举例来说,数据读取分发电路120可以将第一个数据群组(数据D_1与D_2)分发给第一个寄存器群组(寄存器CB_1),将第二个数据群组(数据D_3与D_4)分发给第二个寄存器群组(寄存器CB_2),将第三个数据群组(数据D_5与D_6)分发给第三个寄存器群组(寄存器CB_3),以及将第四个数据群组(数据D_7与D_8)分发给第四个寄存器群组(寄存器CB_4)。
在数据读取分发电路120基于所述数据请求的数据配置方式将多个寄存器CB_1~CB_n划分为多个寄存器群组的情况下,数据读取分发电路120将对应所述多个寄存器群组的多个数据群组中的每一个数据群组的所有数据广播至对应寄存器群组的每一个寄存器的相同地址。图4是依照本发明的另一实施例所绘示,图1所示数据读取分发电路120将数据存储至寄存器CB_1~CB_n的数据分发情境示意图。在图4所示情境范例中,寄存器CB_1~CB_n的数量n被假设为4,而数据读取分发电路120基于数据请求(例如数据请求111以及/或是数据初始化请求131)从外部存储器10提取8笔数据(例如初始数据)D_1~D_8。基于所述数据请求的数据配置方式,数据读取分发电路120决定将寄存器CB_1~CB_4划分为2个寄存器群组(每一个寄存器群组有2个寄存器),以及将数据D_1~D_8拆分为对应所述2个寄存器群组的2个数据群组。数据读取分发电路120可以基于所述数据请求的数据配置方式,将这2个数据群组一对一地分发给这2个寄存器群组的相同地址。举例来说,数据读取分发电路120可以基于所述数据请求的数据配置方式将第一个数据群组(数据D_1~D_4)广播给同属第一寄存器群组的所有寄存器CB_1与CB_2的相同地址,以及将第二个数据群组(数据D_5~D_8)广播给同属第二寄存器群组的寄存器CB_3与CB_4的相同地址。
在数据读取分发电路120基于所述数据请求的数据配置方式将所述多个寄存器CB_1~CB_n划分为一个寄存器群组的情况下,数据读取分发电路120将所述多个数据广播至所述多个寄存器的每一个寄存器的相同地址。图5是依照本发明的又一实施例所绘示,图1所示数据读取分发电路120将数据(例如常数数据)存储至寄存器CB_1~CB_n的数据分发情境示意图。在图5所示情境范例中,寄存器CB_1~CB_n的数量n被假设为4,而数据读取分发电路120基于数据请求(例如数据请求111以及/或是数据初始化请求131)从外部存储器10提取8笔数据(例如初始数据)D_1~D_8。基于所述数据请求的数据配置方式,数据读取分发电路120不拆分数据D_1~D_8。在数据读取分发电路120决定不拆分数据D_1~D_8的情况下,数据读取分发电路120可以将寄存器CB_1~CB_4视为同一个寄存器群组,以及数据读取分发电路120可以基于所述数据请求将数据D_1~D_8广播至寄存器CB_1~CB_4的相同地址。
综上所述,诸实施例所述的数据管理装置100具有可配置的数据分发功能。在一些实际操作情境中,基于数据请求(例如数据请求111以及/或是数据初始化请求131)的数据配置方式,数据读取分发电路120可以拆分从外部存储器10提取的数据而产生多个数据群组,以及将多个寄存器CB_1~CB_n划分为多个寄存器群组。数据读取分发电路120可以将这些数据群组一对一地分发给这些寄存器群组。因此,不同寄存器群组的内容可以互不相同,使得数据读取分发电路120可以有效率地管理与使用寄存器CB_1~CB_n的存储空间。
依照不同的设计需求,上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130的实现方式可以是硬件(hardware)、固件(firmware)、软件(software,即程序)或是前述三者中的多者的组合形式。以硬件形式而言,上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130可以实现于集成电路(integrated circuit)上的逻辑电路。上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130的相关功能可以利用硬件描述语言(hardware description languages,例如Verilog HDL或VHDL)或其他合适的编程语言来实现为硬件。举例来说,上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130的相关功能可以被实现于一或多个控制器、微控制器、微处理器、特殊应用集成电路(Application-specific integrated circuit, ASIC)、数字信号处理器(digital signal processor, DSP)、场可程序逻辑门阵列(Field Programmable GateArray, FPGA)及/或其他处理单元中的各种逻辑区块、模块和电路。以软件形式及/或固件形式而言,上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130的相关功能可以被实现为编程码(programming codes)。例如,利用一般的编程语言(programminglanguages,例如C、C++或汇编语言)或其他合适的编程语言来实现上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130。所述编程码可以被记录/存放在“非临时的计算机可读取媒体(non-transitory computer readable medium)”中。在一些实施例中,所述非临时的计算机可读取媒体例如包括带(tape)、碟(disk)、卡(card)、半导体内存、可程序设计的逻辑电路以及(或是)存储装置。所述存储装置包括硬盘(hard disk drive,HDD)、固态硬盘(Solid-state drive,SSD)或是其他存储装置。中央处理器(Central ProcessingUnit,CPU)、控制器、微控制器或微处理器可以从所述非临时的计算机可读取媒体中读取并执行所述编程码,从而实现上述流处理器簇110、数据读取分发电路120以及(或是)配置单元130的相关功能。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。