CN117597691A - 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 - Google Patents
用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 Download PDFInfo
- Publication number
- CN117597691A CN117597691A CN202280046199.4A CN202280046199A CN117597691A CN 117597691 A CN117597691 A CN 117597691A CN 202280046199 A CN202280046199 A CN 202280046199A CN 117597691 A CN117597691 A CN 117597691A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- compressed data
- logic
- bitmap
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 99
- 238000013528 artificial neural network Methods 0.000 title description 16
- 230000001953 sensory effect Effects 0.000 title description 3
- 239000000872 buffer Substances 0.000 claims abstract description 103
- 230000015654 memory Effects 0.000 claims abstract description 77
- 238000000034 method Methods 0.000 claims abstract description 56
- 230000006870 function Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 25
- 239000000758 substrate Substances 0.000 claims description 11
- 239000004065 semiconductor Substances 0.000 claims description 8
- 238000005192 partition Methods 0.000 description 47
- 238000013500 data storage Methods 0.000 description 25
- 241001272996 Polyphylla fullo Species 0.000 description 24
- 238000009826 distribution Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 20
- 230000004913 activation Effects 0.000 description 18
- 238000001994 activation Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000013507 mapping Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012432 intermediate storage Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 229910052594 sapphire Inorganic materials 0.000 description 1
- 239000010980 sapphire Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013316 zoning Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
系统、装置和方法可提供从存储器预取压缩数据和稀疏性位图以将压缩数据存储在解码缓冲器中的技术,其中压缩数据与多个张量相关联,其中压缩数据采用压缩格式。该技术将压缩数据与稀疏性位图对齐,以生成解码后的数据,并且将解码后的数据提供给多个处理元件。
Description
技术领域
实施例概括而言涉及一种稀疏性感知数据储存器(datastore),该数据储存器能够对齐稀疏性位图和稀疏压缩数据,以便将数据高效地移动到包括处理元件(processingelement,PE)的PE阵列中。更具体而言,稀疏性感知数据储存器通过在将解码的数据分发到PE阵列之前在每个个体存储元件内执行稀疏性解码,增加了PE阵列上的压缩数据的重用。
背景技术
AI应用导致了新开发的神经网络体系结构和硬件系统的激增。硬件系统执行神经网络来加速解决复杂的现实世界问题,并且使得机器能够执行决策过程和动作。这种神经网络体系结构和硬件系统可能需要大量的能量。例如,数据移动和解码可能会显著增大能量成本,从而导致成本增大以及与加热相关的性能缺陷。通过加速器为网络层分发的激活和权重数据的量由编译器驱动,该编译器确定数据移动的顺序,以获得最优能量。
附图说明
通过阅读以下说明书和所附权利要求,并且通过参考以下附图,实施例的各种优点对于本领域技术人员而言将变得清楚,附图中:
图1是根据一实施例的增强型深度神经网络体系结构的示例的框图;
图2是根据一实施例的对数据解码以提供给PE阵列的方法的示例的流程图;
图3是根据一实施例的激活存储器布局的示例的示意图;
图4是根据一实施例的稀疏性解码过程的示例的示意图;
图5是根据一实施例的数据储存器实例体系结构的示例的示意图;
图6是根据一实施例的扁平数据储存器实例的示例的框图;
图7A、7B和7C是根据一实施例的扁平数据储存器的调度表和数据储存器映射的示例的示意图;
图8是根据一实施例的重叠分库数据储存器的示例的示意图;
图9是根据一实施例的地址映射的示例的示意图;
图10是根据一实施例的重叠分库数据储存器的调度表和数据储存器映射的示例的示意图;
图11是根据一实施例的网络的同一层的调度表的示例的示意图;
图12是根据一实施例的增强型数据分发计算系统的示例的框图;
图13是根据一实施例的半导体装置的示例的图示;
图14是根据一实施例的处理器的示例的框图;并且
图15是根据一实施例的基于多处理器的计算系统的示例的框图。
具体实施方式
图1图示了包括数据分发网络的增强型深度神经网络(deep neural network,DNN)体系结构100。为了向数据分发网络提供灵活性,在片上存储器102和PE阵列110之间的加载路径上提供了包括第一分区104、数据储存器106和第二分区108的中间片上缓冲。片上存储器102可存储将被PE阵列110利用的压缩数据(例如,压缩的未对齐数据)。
相对于传统的缓冲器,数据储存器106(其可包括下文论述的专用于不同写入器或写入部分的多个个体单元或实例)可得到增强,以还充当第一分区104(其可包括被称为“W”的瓦片走行器(tile walker)或写入部分)和第二分区108(其可包括被称为“TF”的瓦片馈送器)之间的解耦机制。第一分区104的写入器从片上存储器102(例如,静态随机访问存储器(Static random-access memory,SRAM))取得稀疏压缩数据和稀疏性位图(sparsecompressed data and sparsity bitmap,SPMAP),并且填充数据储存器106。
数据储存器106在各种实例中存储由第一分区104从片上存储器102取回的压缩数据和SPMAP(下文论述)。数据储存器106还负责稀疏性解码,从而使得在将SPMAP和压缩数据加载到PE阵列110中之前压缩数据和SPMAP被对齐。在不包括这种集中解码的传统实现方式中,PE阵列110将需要在内部并且可能在PE阵列110的每个PE内对齐压缩数据和SPMAP,这将导致整个PE阵列110上的逻辑重复。这样做会导致硬件和功率成本增大,以及效率降低。
例如,在分发模式为广播的情况下,数据储存器106对数据和从数据储存器106重用的解码后的(例如,对齐的SPMAP和压缩数据)进行解码,并且解码后的数据被馈送到PE阵列110内的所有PE。如果没有数据储存器106(例如,集中式解码数据库),则会需要在PE阵列110的所有PE内部对相同数据进行解码,这就要求在所有PE中添加解码逻辑,并且由于在PE中各处进行相同的解码而浪费能量。在本实施例中,在向PE阵列100中的PE进行广播分发之前在数据储存器106内部执行了解码,这将节省能量并且减少每个PE(例如,256个PE)的占用空间。
从而,数据储存器106可对齐SPMAP和压缩数据,以对SPMAP和压缩数据解码。此后,数据储存器106可将对齐的压缩数据(即,已解码)和SPMAP作为稀疏性解码数据提供给第二分区108。如图1所示,第二分区108可将稀疏性解码数据分发到PE阵列110的PE。例如,第二分区108的各个瓦片馈送器(tile feeder,TF)可以以单播、多播和/或广播方式向PE提供稀疏性解码数据。
从而,数据分发网络包括相互独立操作的第一分区104和第二分区108。第一分区104包括写入器,这些写入器写入到数据储存器106中,并且负责从片上存储器102预取稀疏数据和SPMAP并且填充数据储存器106。鉴于与片上存储器102读取相关联的冗长延时,一旦张量(例如,激活相关数据)在片上存储器102中可用,写入器就开始取得数据。在一些实施例中,第一分区104的写入器被编程为预取数据储存器106的容量允许的尽可能多的压缩数据和SPMAP,以使得数据对于第二分区108而言是随时可得的。第二分区108(即,瓦片馈送器,其可实现在诸如电路技术、固定功能硬件、可配置硬件等等之类的硬件中)访问来自数据储存器106的随时可得的预取数据,以按照PE的消耗速率将数据从数据储存器106分发到PE中。从而,由于写入器的预取,来自第二分区108的被分发数据不会由于与数据在片上存储器102和PE之间需要行进的物理距离相关联的读取延时而被阻塞。
第二分区108具有调度表感知的性质,因此具有更高的灵活性,并且还具有最大化从数据储存器106的数据重用的能力。在不使用数据储存器106、第一分区104和第二分区108的传统实现方式中,到PE阵列中的数据分发将受到来自片上存储器102的可变加载延时的严重约束。基于片上存储器大小、片上存储器库组的数目、片上存储器的读取和写入端口的数目以及最终基于操作频率,这些延时时间可从6个周期到20个周期不等。
从而,如本文所述的实施例通过高效的数据协调减少了整体数据移动。数据量可以以最大化吞吐量性能的方式进行存储和流通,这取决于存储器的级别(例如,动态随机访问存储器(Dynamic random-access memory,DRAM)/静态随机访问存储器(Static random-access memory,SRAM)/寄存器堆(Register File,RF))、每个级别的存储量以及在计算开始前数据必须行进的物理距离。例如,第一分区104、数据储存器106和第二分区108(例如,所有这些都可以是包括缓冲器的智能中间存储结构)可以通过稀疏性对齐而对于数据协调有更高的性能,从而最大限度地提高整个PE阵列110上的数据重用。
此外,数据储存器106的增强带来了PE阵列110的功率消耗的降低(例如,功率消耗降低50-75%)。也就是说,PE阵列110的尺寸可得以减小(例如,硅面积节省43%,并且利用率改善10.6%),这是因为由于数据储存器106执行集中式解码,分配给稀疏性解码逻辑的硬件面积可能不存在于PE阵列110中。本文的实施例包括被用于存储和处理张量数据的数据储存器106(其可以是稀疏性感知的),并且包括一种新的微体系结构布局,其在深度神经网络加速器体系结构中提供了更高性能和低功率的推理。
从而,本文的实施例包括可用于深度神经网络(DNN)加速器中的数据储存器106,该数据储存器对齐稀疏性位图和稀疏压缩数据,以便高效地将数据移动到PE中,并且使得能够在稀疏性对齐后进行重用,从而设计出能量最优的推理引擎。因此,PE不需要执行解码和对齐,从而无需在PE阵列110的每个PE内有稀疏性对齐硬件。本文的示例描述了数据储存器106,它能够对齐稀疏性位图和稀疏压缩数据,以便将数据高效地移动到PE中。数据储存器106的一个增强特征是,数据储存器106能够通过在将解码的数据分发到PE阵列110(下文进一步描述)之前,在数据储存器106的每个存储元件(例如,实例)内执行稀疏性解码,从而最大限度地在PE阵列110的各PE间重用压缩数据。这样做会减少——甚至完全移除——来自每个PE的额外稀疏性硬件,这些硬件会造成PE内的更多面积和功率消耗,对整个PE阵列110具有倍增性的功率和面积效应。
一些示例提供了一种高能效且高性能的边缘推理DNN加速器,它为现代AI工作负载提供更高的性能。例如,一些实施例通过利用稀疏性来最大限度地减少数据移动并且最大限度地增加通过中间存储的数据重用,使得能够实现一种高效的数据分发网络,从而实现了最先进的AI推理加速器。
在一些示例中,体系结构100可以部分依赖工作负载调度表来确定要激活多少上下文,这转化为第二分区108的若干个瓦片馈送器和第一分区104的写入器被激活并且由编译器编程。对于不同的张量大小,软件可以对用于第二分区108的每个瓦片馈送器和第一分区104的每个写入器的寄存器集合进行编程,这些寄存器集合指定了起始X和Y坐标、尺寸(例如,X/Y极限、跨度、填充,等等),并且最终指定片上存储器102地址,以取得稀疏压缩数据和稀疏性位图并且填充数据储存器106。类似地,第二分区108的瓦片馈送器向PE阵列110提供数据,并且可基于调度表指定的分发模式被进行静态性(stationarity)和重用水平的编程。寄存器的这些字段可由控制/状态寄存器(control/status register,CSR)配置。
本文描述的数据储存器106的一些方面可被应用到激活图谱和/或过滤器(例如,层具有一小组权重,并且调度器为数据分发挑选基于权重的静态性)。从而,压缩数据可包括激活图谱和/或过滤器。过滤器可以是一组权重。神经网络可将过滤器应用到输入激活,以创建输出激活图谱(例如,特征图谱),该图谱总结了输入激活(输入特征图谱)中检测到的特征的存在。具体而言,稀疏数据的存储器布局和灵活的基于重用的数据分发网络如下所示。还描述了一种增强型稀疏性对齐方案。
从而,第一分区104从存储器预取压缩数据和稀疏性位图,以将压缩数据存储在被称为数据储存器106的解码缓冲器中,其中压缩数据与多个张量相关联,并且压缩数据采用压缩格式。数据储存器106将压缩数据与稀疏性位图对齐,以生成解码后的数据,并且第二分区108将解码后的数据提供给多个处理元件。例如,第二分区108基于处理元件的个体消耗速率将解码后的数据分发给PE阵列110的处理元件,这样PE就不会被阻塞。数据储存器106包括解码缓冲器,并且解码缓冲器包括多个数据储存器,这些数据储存器包括多个缓冲器。第一分区104基于与张量相关联的X值和Y值将压缩数据存储在多个数据储存器中。第一分区104控制多个写入部分(例如,写入器或W)中的第一写入部分来写入到解码缓冲器的第一组数据储存器,其中解码缓冲器的第二组数据储存器是第一写入部分不可访问的,其中多个写入部分至少部分实现在可配置或固定功能硬件之中的一个或多个中。在一些示例中,第一分区104还控制至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分,以访问多个缓冲器中的任何一者,来基于与多个张量相关联的X和Y值执行写入操作。数据储存器106将压缩数据的第一部分与稀疏性位图的第一部分对齐,并且将压缩数据的第一部分与稀疏性位图的第一部分提供给多个处理元件,以避开将压缩数据和稀疏性位图的未对齐部分提供给处理元件。
图2示出了对数据解码以提供给PE阵列的方法800。方法800一般可以利用本文描述的实施例来实现,例如,已经论述过的增强型深度神经网络(DNN)体系结构100(图1)。在一实施例中,方法800被实现在作为存储在诸如随机访问存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可编程ROM(programmable ROM,PROM)、固件、闪存等等之类的机器或计算机可读存储介质中的逻辑指令集合的一个或多个模块中,实现在诸如可编程逻辑阵列(programmable logic array,PLA)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、复杂可编程逻辑器件(complex programmable logicdevice,CPLD)之类的可配置逻辑中,利用诸如专用集成电路(application specificintegrated circuit,ASIC)、互补金属氧化物半导体(complementary metal oxidesemiconductor,CMOS)或晶体管-晶体管逻辑(transistor-transistor logic,TTL)技术之类的电路技术实现在固定功能逻辑硬件中,或者这些的组合。
例如,可以以一种或多种编程语言的任何组合来编写用于执行方法800中所示出的操作的计算机程序代码,所述编程语言包括面向对象的编程语言,比如JAVA、SMALLTALK、C++之类的,还包括传统的过程式编程语言,比如“C”编程语言或类似的编程语言。此外,逻辑指令可包括汇编指令、指令集体系结构(instruction set architecture,ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、个性化电子电路和/或硬件原生的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器,等等)的状态信息。
图示处理块802从存储器预取压缩数据和稀疏性位图,以将压缩数据存储在解码缓冲器中,其中压缩数据与多个张量相关联,其中压缩数据采用压缩格式。图示处理块804将压缩数据与稀疏性位图对齐,以生成解码后的数据。图示处理块806将解码后的数据提供给多个处理元件。
在一些示例中,方法800包括基于处理元件的个体消耗速率将解码后的数据分发给处理元件。在一些示例中,解码缓冲器包括多个数据储存器,这些数据储存器包括多个缓冲器,并且方法800还包括基于与张量相关联的X值和Y值将压缩数据存储在多个数据储存器中。在一些示例中,方法800包括控制多个写入部分中的第一写入部分来写入到解码缓冲器的第一组数据储存器,其中解码缓冲器的第二组数据储存器是第一写入部分不可访问的,并且其中多个写入部分至少部分实现在可配置或固定功能硬件之中的一个或多个中。在一些示例中,解码缓冲器包括多个缓冲器,并且方法800还包括控制至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分(例如,写入器),以访问多个缓冲器中的任何一者,来基于与多个张量相关联的X和Y值执行写入操作。在一些示例中,方法800包括将压缩数据的第一部分与稀疏性位图的第一部分对齐,并且将压缩数据的第一部分与稀疏性位图的第一部分提供给多个处理元件,以避开将压缩数据和稀疏性位图的未对齐部分提供给处理元件。
现在转到图3,现在描述数据储存器(例如数据储存器106(图1))的激活存储器布局402。在激活存储器布局402中示出了4x4x64张量的示例。数据储存器106可以被有效地应用到张量数据的激活存储器布局402。在一些情况下,输出激活按照排放或打包块利用Z主序被打包并且存储到片上存储器,例如片上存储器102(图1)。在激活存储器布局402中对于大小为16字节的数据库组(bank),示出了4x4x64张量的示例布局,其中给定(X,Y)的所有Z或输入通道(IC)(例如,激活和/或权重数据)被连续存储。此后,示例对于相同的X对IC进行布局,但增大Y,直到到达Y维度的结束为止。示例然后在X维度上进行。从而,选择X值,并且对于该X值改变Y值和Z值。然后递增X值,并且在激活存储器布局402中对于该递增的X值改变Y值和Z值。
对于激活存储器布局402,数据可以按照相同的Z主序被进行稀疏压缩,并且与稀疏压缩的数据相对应的SPMAP也按照类似的Z主序被布局在存储器中。在零值压缩(zero-value compression,ZVC)中,示例包括1比特来表示数据的8比特是否为非零。例如,对于具有50%均匀稀疏性的同一4x4x64张量,存储器中的稀疏压缩数据406和SPMAP布局408如图3所示。在SPMAP布局408中,由于每个(X,Y)的SPMAP为8字节(64/8),因此两个唯一(X,Y)值的SPMAP被存储在同一SRAM行上。
由于压缩数据和SPMAP的这种固定布局,传统的实现方式可能会强制要求从片上存储器到PE阵列的数据分发符合Z主序。这种固定布局可能限制数据加载,使其无法充分利用带宽并且无法基于调度表最大限度地重用,因为布局数据的顺序可能并不总是与需要分发数据的顺序一致。从而,如本文所述的一些实施例可能不一定符合Z主序,而是可以基于诸如效率和性能之类的其他度量来分发数据。
图4图示了将数据分发到PE阵列中的稀疏性解码过程300和传统加载分发过程330。稀疏性解码过程300一般可以利用本文描述的实施例来实现,例如,已经论述过的增强型DNN体系结构100(图1)、方法800(图2)和/或激活存储器布局402(图3)。此示例中的数据分发对于包括有效字节302、304、306、308、310、312、314和数据334的稀疏压缩数据为16字节粒度,并且对于相应数据的SPMAP 316为2字节粒度。
首先,考虑去到PE阵列中的传统加载分发过程330,没有典型实现方式中可能使用的稀疏性感知数据储存器。在此示例中,考虑1x1x256张量,其中256个IC被进行具有随机稀疏性的稀疏压缩。稀疏性位图的宽度为32字节(即,256/8)。稀疏压缩数据可能约为16行(例如,L0-L15,其中L0-L5被图示出,而L6-L15则未图示出),其中零被压缩,并且非零值被移动到行的开头,而零被移动到末尾。由于数据中的稀疏水平较高,在此示例中,16行中只有3行具有非零数据值,而其余均为0。在密集情况下,传统的加载分发过程330需要16轮才能加载和分发所有数据。
SPMAP 332是密集的,因此加载SPMAP 332仍需要16个周期,但在第2轮加载之后,剩余的加载轮对于SPMAP 332将具有有效值,但数据334全为零。例如,在第0轮加载中,SPMAP 332为0x4081十六进制值(即,100000010000001二进制值),这意味着在数据中只存在3个有效字节,但数据334却注入了16个有效字节(即,所有非零值)。从而,SPMAP 332的加载部分与数据334的加载字节不同步。相反,SPMAP 332的在稍后几轮中加载的部分将在加载期间提供加载的有效字节的确切位置(例如,有效字节4-16的位置,因为有效字节1、2、3的位置由加载的SPMAP指示)。数据334和SPMAP 332的值可被提供给PE阵列。值得注意的是,数据334与SPMAP 332是未对齐的,从而每个PE都必须基于在第0-5轮加载期间推送的SPMAP332来对数据334进行解码和对齐。
类似地,在第1轮加载中,SPMAP 332为0x1020(即,1000000100000),这提供了在第零轮加载中加载的仅2个有效字节的位置(例如,第零轮加载的字节位置4和5或者“1a”和“c9”)。该过程可按上述方式继续进行,直到SPMAP 332的最后部分被加载了为止(例如,约16轮)。
由于SPMAP 332和数据334在加载期间并不同步,使得在特定轮中加载的SPMAP332和数据334可能彼此不对应,因此PE阵列将需要对稀疏性进行解码,并且在整个过程中保持加载同步。例如,在第2轮加载中加载并且推送至PE阵列的SPMAP 332的部分与在第0轮加载中加载的数据334相对应。这个逻辑需要在整个PE阵列中复制,这会增大来自冗余工作的面积成本和能量消耗,特别是在重用的场景中,即相同的数据被广播到多个PE并且它们都必须做相同的工作。
稀疏性解码过程300由稀疏性感知智能数据储存器执行,例如数据储存器106(图1),共执行五轮,其中数据和SPMAP 316在数据(例如,激活)的加载期间是同步的。这样做可以增强效率、降低功率并且增强性能。
SPMAP 316提供下文论述的有效字节的位置。例如,在第0轮加载中,即使加载了16个字节的数据,稀疏性位图(SPMAP)316也只指定了第1-第3有效字节302,因此PE将只消耗这三个字节。在此示例中,SPMAP 316具有十六进制值4081,这转化为二进制值0100000010000001。从而,基于SPMAP 316和第1-第3有效字节302的解压缩值将是“054000000fa000000a5”。在此示例中,瓦片馈送器(例如,第二分区108(图1)的瓦片馈送器)将向PE阵列(例如,PE阵列110)发送第1-第3有效字节302和SPMAP 316的与第1-第3有效字节302相对应的部分(4081)。第1-第3有效字节302可能尚未基于SPMAP 316进行解压缩,以减少通信带宽,但第1-第3有效字节302和SPMAP 316可能是经解码、对齐的数据,从而PE无需对齐数据。相反,PE可以简单地基于SPMAP 316对第1-第3有效字节302进行解压缩。
在第1轮加载中,数据储存器将把数据指针推进3个有效字节,并且重发送第4-第5字节304中的数据。在此示例中,SPMAP 316具有十六进制值1020,这转化为二进制值0001000000100000。从而,基于SPMAP 316和第4-第5字节304的解压缩值将是“000C90000001a00000”。在此示例中,与上述类似,瓦片馈送器将向PE阵列发送第4-第5有效字节304和SPMAP 316的与第4-第5有效字节304相对应的部分(1020),并且PE将执行解压缩。
类似地,在第2轮加载中,数据储存器将把指针向前推进2个字节,并且发送来自第6-第7字节306的数据。在此示例中,SPMAP 316具有十六进制值0408,这转化为二进制值010000001000。从而,基于SPMAP 316和第6-第7字节306的解压缩值将是“0ba000000f6000”。在此示例中,瓦片馈送器将向PE阵列发送第6-第7有效字节306和SPMAP316的与第6-第7有效字节306相对应的部分(0408),并且PE将执行解压缩。
类似地,在第3轮加载中,数据储存器将把指针向前推进2个字节,并且发送来自第8-第10字节308的数据。在此示例中,SPMAP 316具有十六进制值8102,这转化为二进制值1000000100000010。从而,基于SPMAP 316和第8-第10字节308的解压缩值将是“1f00000072000000340”。在此示例中,瓦片馈送器将向PE阵列发送第8-第10有效字节308和SPMAP 316的与第8-第10有效字节308相对应的部分(8102)。
在第4轮加载中,数据储存器将把指针向前推进3个字节,并且发送来自第11-第12有效字节310的数据。在此示例中,SPMAP 316具有十六进制值2040,这转化为二进制值0010000001000000。从而,基于SPMAP 316和第11-第12有效字节308的解压缩值将是“007400000040000000”。在此示例中,瓦片馈送器将向PE阵列发送第11-第12有效字节310和SPMAP 316的与第11-第12有效字节310相对应的部分(2040)。
在第5轮加载中,数据储存器将把指针向前推进2个字节,并且发送来自第13-第14字节312的数据。在此示例中,SPMAP 316具有十六进制值0810,这转化为二进制值0000100000010000。从而,基于SPMAP 316和第13-第14字节312的解压缩值将是“0000f6000000120000”。在此示例中,瓦片馈送器将向PE阵列发送第13-第14有效字节312和SPMAP 316的与第13-第14有效字节312相对应的部分(0810)。过程300可继续进行多轮加载,直到完成数据和SPMAP 316为止。在每轮加载中,只有数据对齐的数据被发送到PE阵列,从而简化了操作成本和开销。
从而,执行过程300的增强型数据储存器配备有稀疏性解码逻辑,该逻辑对零的数目进行计数,增强型数据储存器使用该数目来在各轮加载间推进数据指针。用于张量(例如,1x1x256)的分发的这个逻辑开销被完全包含在一个数据储存器实例中,从该数据储存器实例,基于重用模式,数据可馈送一个PE(单播情况)或所有PE(广播情况)。数据储存器还将激活数据(其对应于张量的输入通道)视为一个连续流,并且基于稀疏性解码从流的前端剥离字节,并且在末端(例如,数据的最左侧部分)附加数据,以用于来自片上存储器的下一行数据。
如本说明书中所述,[FX,FY,IX,OX,IY,OY,IC,OC,ON]将分别表示[过滤器内核X维度,过滤器内核Y维度,输入激活X维度,输出激活X维度,输入激活Y维度,输出激活Y维度,输入通道数目,输出通道数目,批次大小]。示例还使用“IF”表示输入激活,“FL”表示权重,“OF”表示输出激活,“Psum”表示卷积中的部分乘积。
如本说明书中所述,在(*/*/*)形式的调度表记号中,第1项是输出维度变量,第2项是分块因子,并且第3项是分区因子。例如,内循环中的OX/IB/IP和外循环中的OX/OB/1分别表示每个处理元件(PE)具有IB个X点,并且在空间上有IP个这种相同的处理元件(PE)在散布在多个PE上的IP个独立X上工作,而在时间上有OB个这样的外轮在工作。
为了确定要为数据储存器提供多少存储空间,一些示例还包括一种工具,用来剖析网络级存储需求及其对性能和利用率的影响。例如,数据储存器的数目可以与期望上下文的数目相对应。例如,上下文可以与PE相对应(例如,64个PE对应64个上下文,比率为1:1)。数据储存器的大小是基于网络级性能分析的相对大小确定的,可以是大约64个实例的数据储存器,这允许了支持以下任何一种瓦片大小,例如8x8、4x16、2x32,总计为64。如下所示,64个实例的数据储存器可通过各种灵活调度表被映射到各种瓦片配置,例如8x8、4x16、16x4,等等,这些调度表对于X和Y维度改变分块和分区。符号“OXIB”是X张量的分块因子,并且“OXIP”是X张量的分区因子,对于OY也是类似的。内部分块因子(inner blockingfactor,IB)决定了在第一轮中馈送到单个PE的X和Y的体量,而分区因子(partitioningfactor,IP)决定了在第一轮中在整个PE阵列中馈送的体量。分块和分区可以是由编译器确定的可配置参数,编译器尝试最大限度地提高DNN加速器的利用率和性能。以下提供了各种示范性配置的一些示例:
4x4:OXIB=4,OXIP=1,OYIB=1,OYIP=4
8x8:OXIB=4,OXIP=2,OYIB=1,OYIP=8
4x16:OXIB=4,OXIP=1,OYIB=1,OYIP=16
16x4:OXIB=4,OXIP=4,OYIB=1,OYIP=4
这种基于灵活调度表的分块和分区配置被用于激活填充数据储存器的多个的并行瓦片走行器和瓦片馈送器,并且将激活数据分发到PE阵列。
单个数据储存器实例
图5图示了数据储存器实例体系结构430。数据储存器实例体系结构430可以很容易地与如本文所述的其他实施例结合。例如,数据储存器106(图1)可包括与PE阵列110(图1)的PE相对应的多个数据储存器实例体系结构430(例如,64个)。基于上文,稀疏性感知数据储存器的一些示例支持转化为约64个实例或数据库的瓦片配置。如图5所示,每个实例可被建模为具有第一和第二数据FIFO 432、434(例如,2x32B)的环形缓冲器,它们是用于稀疏压缩数据的存储空间,并且可被建模为位图队列436(例如,2x32B),它是用于相应稀疏性位图的存储空间。去到第一和第二数据FIFO 432、434以及位图队列436中的数据是基于写入索引来写入的,其中稀疏压缩数据可按第一粒度(例如,16B或32B)被写入到第一和第二数据FIFO 432、434中,而位图队列436可按范围从2B到32B的第二粒度(例如,任何粒度)写入。
第一和第二数据FIFO 432、434的存储空间被建模为FIFO,而位图的存储空间被建模为具有条目大小(例如,2B)的队列。这允许到第一和第二数据FIFO 432、434中的写入可以是任意大小,而从位图队列的写入和读取始终为固定的2B粒度。在从数据储存器实例体系结构430读取期间,位图队列436的一部分(例如,2B)被从位图队列436弹出,并且数据(例如,16B)被从第一或第二数据FIFO 432、434弹出,以对弹出的数据进行稀疏性对齐,并且发送到PE阵列。然后,PE阵列可对稀疏性对齐的数据进行解压缩。也就是说,解压缩是在卷积期间在PE阵列的各个PE中执行的。通过这种方式,实施例在加载到PE中期间可以节省带宽。
例如,在具有数据储存器实例体系结构430和瓦片馈送器的数据储存器中,稀疏数据不会被解压缩,而只会被对齐,以确保稀疏压缩数据加载与SPMAP对齐。位图的该部分也可通过popCount逻辑发送,以计算数据的下一个读取索引。在密集数据的情况下,一些实施例可能会从0开始发送16B的数据,并且数据指针的下一个索引位于16。但在稀疏数据的情况下,一些实施例可以从0开始发送16B的数据,并且数据指针的下一个索引是根据位图队列436的popCount计算的,而popCount是基于位图中的1的数目的。
数据储存器的每个实例可包括与数据储存器实例体系结构430相似的体系结构。在对于给定网络层占用多少个环形缓冲器实例方面,数据储存器的使用是由调度表的内部瓦片大小驱动的。这些环形缓冲器实例的结构布局和组织使得能够为DNN加速器实现数据分发网络。
扁平64实例数据储存器组织
现在转到图6,现在描述扁平数据储存器实例450的实施例。扁平数据储存器实例450一般可以利用本文描述的实施例来实现,例如,已经论述过的增强型DNN体系结构100(图1)、方法800(图2)、激活存储器布局402(图3)、稀疏性解码过程300(图4)和数据储存器实例体系结构430(图5)。在扁平数据储存器实例450中,张量的(X,Y)值被映射到数据储存器464的数据储存器实例CB0-CBN中的特定数据储存器实例,并且这个(X,Y)的所有输入通道或IC将仅被存储在特定数据储存器的环形缓冲器中。数据储存器实例CB0-CBN由来自第一分区456的第一瓦片走行器460a-460n(可包括任意数目的瓦片走行器)中的特定瓦片走行器写入。该特定瓦片走行器负责从片上存储器102取得张量体量,并且经由走行器仲裁器458将张量体量存储在来自数据储存器实例CB0-CBN的适当数据储存器实例中,该数据储存器实例是基于张量体量的X和Y值来选择的(例如,该特定瓦片走行器的地址可根据X和Y值来计算)。
第二分区452的瓦片馈送器462a-462n(可包括任意数目的瓦片馈送器)负责从数据储存器实例CB0-CBN中的与给定(X,Y)相关联的数据储存器实例读取(例如,从环形缓冲器读取),并且经由馈送器仲裁器454馈送给PE阵列。也就是说,每个X、Y值被映射到数据储存器实例CB0-CBN中的特定数据储存器实例。
激活的第一-第N瓦片走行器460a-460n的数目由该层的带宽和延时要求决定。在扁平数据储存器实例450中,可基于该层在任何给定时间激活第一-第N瓦片走行器460a-460n中的最大数目的(例如,16个)和最小数目的(例如,4个)瓦片走行器,这可以包括向数据储存器提供最大数目的写入端口。
实例化的第一-第N瓦片馈送器462a-462n的数目由去往PE阵列的数据分发模式(单播、广播或多播)决定。例如,在扁平数据储存器实例450中,在单播分发的情况下可激活最大数目(例如,16个),在广播分发的情况下可激活最小数目(例如,4个馈送器)(更多重用),这可以包括向扁平数据储存器实例450提供最大数目的读取端口。
所有第一-第N瓦片走行器460a-460n和第一瓦片馈送器-第N瓦片馈送器462a-462n都可以写入到或读取自数据储存器实例CB0-CBN中的任何数据储存器实例。例如,如果数据储存器实例CB0-CBN的数目为64个数据储存器,则可能要求有16x64路复用器和64x16路解复用器来实现完全访问以用于请求和响应仲裁,如图6所示。
在图7A、7B和7C中对于扁平数据储存器实例450示出了内部瓦片的示例调度表和数据储存器映射500。调度表和数据储存器映射500包括调度表1内循环502、调度表2内循环504和调度表3内循环506。下面提供了与调度表1内循环502、调度表2内循环504和调度表3内循环506的实现有关的示例伪代码I:
调度表1的内循环:OXIB=4,OXIP=1,OYIB=1,OYIP=4,ICIB=4and ICIP=16=4x4x64(瓦片体量)
调度表2的内循环:OXIB=4,OXIP=2,OYIB=1,OYIP=2,ICIB=4and ICIP=16=8x2x64(瓦片体量)
调度表3的内循环:OXIB=4,OXIP=2,OYIB=1,OYIP=8,ICIB=16and ICIP=4=8x8x64(瓦片体量)
伪代码I
图6所示的扁平数据储存器实例450提供了增强的灵活性,因为所有第一-第N瓦片走行器460a-460n和第一瓦片馈送器-第N瓦片馈送器462n都可以访问所有数据储存器实例CB0-CBN。灵活性的水平可包括添加的硬件,例如具有16到64解复用器和16到64复用器,这可能会降低在64实例数据储存器的物理实现期间可实现的频率,原因是布线拥塞和线路主导的定时路径。
如图7A、7B和7C所示,1x1卷积的扁平寻址方案依赖于X和Y张量坐标来将它们映射到特定的数据储存器。下面的伪代码II说明了一种寻址方案:
Flat Datastore Address1x1(X,Y)=
(X%(OXIB*OXIP)<<log2(OYIB*OYIP))+(Y%(OYIB*OYIP))
伪代码II
鉴于伪代码II依赖于绝对张量坐标值,在NxN卷积的情况下,当过滤器大小大于1时,也可以调整伪代码II以考虑到填充,如下面的伪代码III所示:
Flat Datastore AddressNxN(X,Y)=((X–X
Pad)%(OXIB*OXIP)<<log2(OYIB*OYIP))+((Y–Y Pad)%(OYIB*OYIP))
伪代码III
对于大于1的跨度,还需要伪代码IV来将跨度考虑在内,如下所示:
Flat Datastore Addressfinal(X,Y)=(((X–X
Pad)>>Stride)%(OXIB*OXIP)<<log2(OYIB*OYIP))+(((Y–Y
Pad)>>Stride)%(OYIB*OYIP))
伪代码IV
跨度值、填充、值、OX和OY分块和分区及其乘积可基于最优调度表来静态确定,并且通过CSR来进行编程。地址计算可包括若干个要执行的计算(例如,多重模、移位和减法操作)。计算地址可能会导致一些频率调整。
当来自第一瓦片走行器-第N瓦片走行器460a-460n的两个不同瓦片走行器(例如,第一和第二瓦片走行器)填充相同的数据储存器实例CB0-CBN时,可能会要求同步。存储在数据储存器中的每个(X,Y)是唯一的上下文,并且此上下文的读取和写入必须是原子级的。由于稀疏性,存在这样的场景:来自第一瓦片走行器-第N瓦片走行器460a-460n的多个瓦片走行器可能会尝试填充来自数据储存器实例CB0-CBN的同一数据储存器实例。这将导致损坏被映射到同一数据储存器的两个上下文,除非添加同步点。同步点防止了来自第一瓦片走行器-第N瓦片走行器460a-460n的第二瓦片走行器在第一瓦片走行器460a完成加载当前上下文之前填充数据储存器实例CB0-CBN中的同一数据储存器。
在读取期间也可能要求这种同步,以防止来自第一瓦片馈送器462a-462n的多个瓦片馈送器尝试为两个不同上下文读取相同的数据储存器。在扁平数据储存器组织中,这些读取-写入冲突可能会在NxN卷积期间发生,其中N>1。对于每个FXFY轮(对于具有3x3过滤器的层,有9个这样的轮),这些冲突都会发生,因此可以在这些FXFY轮中执行显式同步。
作为示例,考虑具有3x3过滤器的8x8x64张量。一些实施例可能会激活来自第一瓦片走行器-第N瓦片走行器460a-460n的8个瓦片走行器来取得这样的张量体量。图7C图示了可由图6的扁平数据储存器实例450实现的内循环的走行模式508。如走行模式508中所示,有9个FXFY轮。
用相同轮廓突出显示的位置(例如,对于瓦片走行器0,FX=0,FY=0中的(0,0,32),(0,0,64),以及FX=0,FX=1中的(0,1,32)和(0,1,64))对应于相同的X,Y坐标,但FXFY上下文不同,并且被映射到相同的数据储存器位置。在两个FX轮之间,相同坐标被两个不同的瓦片走行器取得。例如,考虑坐标(1,0)在(FX=0,FY=0)轮中被瓦片走行器1取得,并且在(FX=1,FY=0)轮中被瓦片走行器0取得。现在,如果瓦片走行器0取得的先前坐标(0,0)高度稀疏,而轮(FX=0,FX=1)的当前坐标(1,0)高度密集,那么瓦片走行器0可能会非常快速地完成(0,0)的取得,并且将继续取得(1,0)并且填充数据储存器。由于(1,0)是高度密集的,瓦片走行器1将不会完成坐标取得,现在就出现了这样的场景:即,瓦片走行器0和1都在用相同的(X,Y)、但不同的FXFY轮填充同一数据储存器实例。
为了解决这种使用相同数据储存器的冲突,可能需要执行显式同步,其中,给定FXFY轮的所有瓦片走行器只有在它们都完成了其走行并且完成将当前上下文填充到各自的数据储存器后,才被允许进行到下一轮。由于这种同步,该同步也将要求在这些FXFY轮上工作的PE也要等待。
重叠分库(banking)64实例数据储存器组织
在图8中论述了作为重叠分库数据储存器530的数据储存器的另一个示例。重叠分库数据储存器530可以很容易地替代数据储存器106(图1)。重叠分库数据储存器530增大了可实现的频率。实施例包括将重叠分库数据储存器530分库为四个数据库组(databank)532、534、536、538的群组,其中数据库组532、534、536、538中的每个数据库组由16个数据储存器实例(环形缓冲器0-15)构造而成,如图8所示。
重叠分库数据储存器530的这种微体系结构提供了以下益处:
灵活并且可扩展的地址映射方案,该方案独立于存储在数据储存器实例中的张量(X,Y)坐标,而不是依赖于X和Y的绝对值来将张量映射到数据储存器实例。重叠分库数据储存器530只依赖于X和Y的相对位置。重叠分库数据储存器530将4个X映射到四个数据库组532、534、536、538,并且针对特定X的所有Y被映射到数据库组532、534、536、538中存储该特定X的数据库组内的数据储存器实例。X和Y的后续轮遵循相同的映射。
减少了读取和写入端口的数目(例如,从64个减少到16个)。
去除了对走行器和馈送器同步的明确要求,允许瓦片走行器和瓦片馈送器以数据中的稀疏水平的速率操作。
为了简化寻址以提高效率,重叠分库数据储存器实施例可基于X和Y值来固定张量的位置。例如,在数据库组532、534、536、538之间映射张量的X值,以使得相同的X值在数据库组532、534、536、538中的同一库组内,并且张量的Y值被映射在同一库组内。这样做通过简化用于数据储存器映射的寻址而提高了效率。
图9图示了来自伪代码I的调度表3的内循环的重叠分库数据储存器530的地址映射540。内循环中的每个唯一的X值由指派给该特定唯一X值的指定瓦片走行器取得。例如,X=0被指派给瓦片走行器0并且由其取得,X=1被指派给瓦片走行器1并且由其取得,等等依此类推。此外,基于寻址方案,每个瓦片走行器被指派到数据库组532、534、536和538中的一个数据库组。从而,取得X=0的瓦片走行器将永远不必为X=1-3访问数据库组,这因此减少了数据库组532、534、536、538所需要的写入端口的数目。条目行1-7是内循环中针对给定X的所有Y。
在调度表3中,在内循环中有8个X值,这对应于8个瓦片走行器。鉴于数据库组532、534、536、538包括4个数据库组,X=0的瓦片走行器和X=4的瓦片走行器将被映射到同一个库组,在此示例中是数据储存器库组0。从而,X=0的瓦片走行器可写入到数据储存器库组0的条目0-7,而X=4的瓦片可写入到数据储存器库组0的条目8-15。第二组4个瓦片走行器的地址被计算为OYIB*OYIP值,在此示例中为8。
对寻址方案的这个简化由于分库结构而成为可能,并且将瓦片走行器限制到一组唯一的X,这也减少了所需的写入端口的总数。由于寻址不依赖于坐标的绝对值,而只依赖于内循环的OY分块和分区因子来跨库组映射张量的X值,而张量的Y则在库组内,从而高效地实现了性能所需的频率目标。
数据储存器寻址方案要求库组地址和实例地址,其计算如下:
Num_of_DB=4
Num_of_X=OXIB*OXIP
Num_of_Y=OYIB*OYIP
Num_of_X_per_DB=Num_of_X/Num_of_DB
Foreach db from Num_of_DB
Foreach x from(Num_of_X_per_DB–1)
Foreach y from(Num_of_Y–1)
Datastore Address(X,Y,db)=(x*OYIP)+y
伪代码V
在分库安排和上述伪代码V中,重叠分库数据储存器530被分组为4个数据库组532、534、536和538,因此Num_of_DB为4。对于调度表激活的数据储存器实例的数目是通过将分块和分区因子相乘来计算的,这在Num_of_X和Num_of_Y中标识出。分库性质是通过在库组上分割X值来实现的。因此,我们使用Num_of_X_per_DB的等式计算每个数据库组映射的X值的总数。
每个(X,Y)坐标基于X和Y位置被映射到数据库组532、534、536、538之一内的数据储存器实例(例如,环形缓冲器0-15之一)。第一个X开始于数据库组532,而后续X在OYIP距离外。第一个X的第一个Y也开始于0,并且同一X的后续Y使用后续增量1来寻址。
以上标识的寻址方案可利用1x1以及NxN来执行,其中N>1,因为示例并不依赖于X和Y坐标的绝对值,而是依赖于位置计数。由于寻址方案并不依赖于实际的(X,Y)值,因此跨度和填充也不会影响地址计算。伪代码V中的所有Num_*变量都是基于调度表参数来计算的,并且是通过CSR来编程的。
在上述重叠分库数据储存器530的重叠寻址方案中,每个瓦片走行器被静态分配了一组固定的数据储存器实例,在各FXFY轮之间没有对数据储存器实例的共享,因此不要求上文关于扁平数据储存器实例450描述的这种同步。利用新的寻址方案,八个瓦片走行器可以取得相同的8x8x64张量体量,如图10的布局542中所示。
如图10中所述,在本实施例中,每个瓦片走行器可以独立地并且在数据库组532、534、536、538的不同部分上操作。从而,与瓦片走行器0相关联的所有数据都将被存储在数据库组532的第一部分中(例如,环形缓冲器0-7),而与瓦片走行器1相关联的数据将被存储在数据库组532的第二部分中(例如,环形缓冲器8-15)。从而,在第一部分和第二部分之间没有重叠。
在所有FXFY轮中,瓦片走行器取得各种(X,Y)上下文,并且将它们重叠到分配给瓦片走行器的数据库组532、534、536、538中的同一数据库组中。当瓦片走行器0取得(0,0)张量和(1,0)张量时,瓦片走行器0利用(0,0)张量和(1,0)张量存储在同一数据库组内的数据储存器实例内,这些数据储存器实例与瓦片走行器1的数据储存器实例是分开的。值得注意的是,在每一轮期间,每个瓦片走行器被指派唯一的X值。X值到瓦片走行器的指派在各轮之间可能会发生变化。这样就不再需要同步,并且允许每个瓦片走行器以及类似地相应的瓦片馈送器以当前上下文中的稀疏性速率执行。也就是说,瓦片走行器0-7写入到数据库组532、534、536、538的不同环形缓冲器0-15,因此没有写入到同一环形缓冲器的潜在冲突。
上述实施例可带来显著的功率和成本节省。例如,在多播场景中,DNN(256个PE)加速器消耗的功率量对于稀疏性处置分发模式可实现平均功率的50%降低。另外,在这种示例中,在广播式数据分发的情况下,功率可降低到75%。
图11图示了映射到16x16 PE阵列的网络(例如,ResNet-101)的样本层的调度表550,该阵列被表示为内循环[OX/1/8,OY/2/14,IC/32/2]和外循环[OC/256/1,OX/7/1,OY/2/1]。对于层scale2a_branch1,其最优调度表分别将1OX的8个分区和32IC的2个分区映射到16x16 PE阵列的16行,并且将2OY的14个分区映射到14列。每个PE占用1个OX点、2个OY点和32个输入通道(IC)点,并且生成属于1个输出通道(OC)的2个OF点的部分和。因此,调度表550处理32个不同IC的64个IF点和32个不同IC的32个FL点,同时产生属于单个OC的2个不同OF点。注意,由于IC分区因子沿着一个PE列为2,这意味着有2个PE在致力于产生最终OF点,并且在生成最终OF点之前,需要发生2个PE上的部分和的内部累积。这导致了在一列内有8个PE在产生最终OF点,并且总共有112个PE(每列8个x 14列)在产生最终OF点。内循环产生8OX、28OY和1OC个OF点。剩余的256OC、7OX和2OY的块位于外循环中,产生了56x56x256个OF点的最终体量。由于IF被外循环OC重用,因此这个数据流是输入激活静态的。
现在转到图12,示出了性能增强的计算系统158。计算系统158一般可以是电子设备/平台的一部分,具有计算功能(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板设备、服务器)、通信功能(例如,智能电话)、成像功能(例如,相机、摄像机)、媒体播放功能(例如,智能电视/TV)、可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能(例如,汽车、卡车、摩托车)、机器人功能(例如,自主机器人),等等,或者这些的任何组合。在图示的示例中,计算系统158包括主机处理器134(例如,CPU),其具有与系统存储器144相耦合的集成存储器控制器(integrated memory controller,IMC)154。
图示的计算系统158还包括输入输出(IO)模块142,其与主机处理器134、图形处理器132(例如,GPU)、ROM 136、AI加速器148、SRAM 138和加载路径140一起作为片上系统(system on chip,SoC)实现在半导体管芯146上。图示的IO模块142与例如显示器172(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器174(例如,有线和/或无线)、FPGA 178以及大容量存储装置176(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪存)进行通信。此外,SoC146还可包括专用于人工智能(artificial intelligence,AI)和/或神经网络(neural network,NN)处理的处理器(未示出)和/或AI加速器148。例如,系统SoC 146可包括视觉处理单元(vision processing unit,VPU)和/或其他AI/NN特定处理器,例如AI加速器148,等等。在一些实施例中,本文描述的实施例的任何方面都可以在专用于AI和/或NN处理的处理器和/或加速器中实现,例如AI加速器148、图形处理器132和/或主机处理器134。
图形处理器132和/或主机处理器134可以执行从系统存储器144(例如,动态随机访问存储器)和/或大容量存储装置176取回的指令156,以实现如本文所述的方面,来执行加载路径140的编译器和程序寄存器。
在执行指令156时,计算系统158可以实现本文描述的实施例的一个或多个方面。例如,计算系统158可以实现稀疏性解码过程300的一个或多个方面,这些方面一般可以利用本文描述的实施例来实现,例如,已经论述过的增强型DNN体系结构100(图1)、方法800(图2)、激活存储器布局402(图3)、稀疏性解码过程300(图4)、数据储存器实例体系结构430(图5)、扁平数据储存器实例450(图6)、重叠分库数据储存器530(图8)、调度表550(图11)。图示的计算系统158因此被认为是性能增强的,至少在它使得计算系统158能够为AI相关过程高效地取回和存储数据的程度上是如此。
在此示例中,SRAM 138与主机处理器134耦合。主机处理器134可将数据存储在SRAM 138中。加载路径140可包括第一分区(例如,瓦片走行器)、数据储存器和第二分区(例如,瓦片读取器),以便高效地将数据移动到AI加速器148。
图13示出了半导体装置186(例如,芯片、管芯、封装)。图示的装置186包括一个或多个衬底184(例如,硅、蓝宝石、砷化镓)和与(一个或多个)衬底184耦合的逻辑182(例如,晶体管阵列和其他集成电路/IC组件)。在一实施例,装置186是在应用开发阶段中操作的,并且逻辑182执行本文描述的实施例的一个或多个方面,例如,已经论述过的DNN体系结构100(图1)、方法800(图2)、激活存储器布局402(图3)、稀疏性解码过程300(图4)、数据储存器实例体系结构430(图5)、扁平数据储存器实例450(图6)、重叠分库数据储存器530(图8)、调度表550(图11)。逻辑182可至少部分被实现在可配置逻辑或固定功能硬件逻辑中。在一个示例中,逻辑182包括被定位(例如,嵌入)在(一个或多个)衬底184内的晶体管沟道区域。从而,逻辑182和(一个或多个)衬底184之间的界面可能不是突变结。逻辑182也可被认为包括在(一个或多个)衬底184的初始晶圆上生长的外延层。
图14根据一个实施例图示了处理器核心200。处理器核心200可以是用于任何类型的处理器的核心,例如微处理器、嵌入式处理器、数字信号处理器(digital signalprocessor,DSP)、网络处理器、或者其他执行代码的设备。虽然在图14中只图示了一个处理器核心200,但处理元件或者可包括多于一个图14中所示的处理器核心200。处理器核心200可以是单线程核心,或者对于至少一个实施例,处理器核心200可以是多线程的,因为其对于每个核心可包括多于一个硬件线程情境(或者说“逻辑处理器”)。
图14还图示了与处理器核心200相耦合的存储器270。存储器270可以是本领域技术人员已知的或者以其他方式可获得的各种存储器(包括存储器层次体系的各种层)中的任何一者。存储器270可包括要由处理器核心200执行的一个或多个代码213指令,其中代码213可实现实施例的一个或多个方面,例如,已经论述过的增强型DNN体系结构100(图1)、方法800(图2)、激活存储器布局402(图3)、稀疏性解码过程300(图4)、数据储存器实例体系结构430(图5)、扁平数据储存器实例450(图6)、重叠分库数据储存器530(图8)、调度表550(图11)。处理器核心200遵循由代码213指示的指令的程序序列。每个指令可进入前端部分210并且被一个或多个解码器220处理。解码器220可生成诸如预定格式的固定宽度微操作之类的微操作作为其输出,或者可生成其他指令、微指令或者反映原始代码指令的控制信号。图示的前端部分210还包括寄存器重命名逻辑225和调度逻辑230,它们一般分配资源并且对与转换指令相对应的操作进行排队以便执行。
处理器核心200被示为包括具有一组执行单元250-1至255-N的执行逻辑250。一些实施例可包括专用于特定功能或功能集合的若干个执行单元。其他实施例可只包括一个执行单元或者可执行特定功能的一个执行单元。图示的执行逻辑250执行由代码指令指定的操作。
在代码指令所指定的操作的执行完成之后,后端逻辑260让代码213的指令引退。在一个实施例中,处理器核心200允许指令的无序执行,但要求指令的有序引退。引退逻辑265可采用本领域技术人员已知的各种形式(例如,重排序缓冲器之类的)。这样,处理器核心200在代码213的执行期间被变换,至少就由解码器生成的输出、被寄存器重命名逻辑225利用的硬件寄存器和表格以及被执行逻辑250修改的任何寄存器(未示出)而言。
虽然在图14中没有图示,但处理元件可包括与处理器核心200一起在芯片上的其他元件。例如,处理元件可包括与处理器核心200一起的存储器控制逻辑。处理元件可包括I/O控制逻辑和/或可包括与存储器控制逻辑相集成的I/O控制逻辑。处理元件也可包括一个或多个缓存。
现在参考图15,示出了根据一实施例的计算系统1000实施例的框图。图15中所示出的是多处理器系统1000,其包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但要理解,系统1000的实施例也可包括仅一个这种处理元件。
系统1000被图示为点到点互连系统,其中第一处理元件1070和第二处理元件1080经由点到点互连1050耦合。应当理解,图15中所示的任何或所有互连可被实现为多点分支总线,而不是点到点互连。
如图15所示,处理元件1070和1080的每一者可以是多核处理器,包括第一和第二处理器核心(即,处理器核心1074a和1074b和处理器核心1084a和1084b)。这种核心1074a、1074b、1084a、1084b可被配置为以与上文联系图14所论述的类似的方式来执行指令代码。
每个处理元件1070、1080可包括至少一个共享缓存1896a、1896b。共享缓存1896a、1896b可存储被处理器的一个或多个组件利用的数据(例如,指令),所述组件例如分别是核心1074a、1074b和1084a、1084b。例如,共享缓存1896a、1896b可在本地缓存存储器1032、1034中存储的数据,供处理器的组件更快速访问。在一个或多个实施例中,共享缓存1896a、1896b可包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存,最后一级缓存(last level cache,LLC),和/或这些的组合。
虽然示为只具有两个处理元件1070、1080,但要理解,实施例的范围不限于此。在其他实施例中,一个或多个额外的处理元件可存在于给定的处理器中。或者,处理元件1070、1080中的一个或多个可以是除了处理器以外的元件,例如加速器或者现场可编程门阵列。例如,(一个或多个)额外的处理元件可包括与第一处理器1070相同的(一个或多个)额外处理器,与第一处理器1070异构或非对称的(一个或多个)额外处理器,加速器(例如,图形加速器或者数字信号处理(DSP)单元),现场可编程门阵列,或者任何其他处理元件。在处理元件1070、1080之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。这些差异可实际上将其自身展现为处理元件1070、1080之间的非对称性和异构性。对于至少一个实施例,各种处理元件1070、1080可存在于相同的管芯封装中。
第一处理元件1070还可包括存储器控制器逻辑(MC)1072和点到点(P-P)接口1076和1078。类似地,第二处理元件1080可包括MC 1082和P-P接口1086和1088。如图15中所示,MC 1072和1082将处理器耦合到各自的存储器,即存储器1032和存储器1034,存储器1032和存储器1034可以是在本地附接到各个处理器的主存储器的一部分。虽然MC 1072和1082被图示为集成到处理元件1070、1080中,但对于替换实施例,MC逻辑可以是在处理元件1070、1080之外的分立逻辑,而不是集成在其中。
第一处理元件1070和第二处理元件1080可分别经由P-P互连1076、1086耦合到I/O子系统1090。如图15所示,I/O子系统1090包括P-P接口1094和1098。此外,I/O子系统1090包括接口1092来将I/O子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线1049可用于将图形引擎1038耦合到I/O子系统1090。或者,点到点互连可耦合这些组件。
进而,I/O子系统1090可经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,虽然实施例的范围不限于此。
如图15所示,各种I/O设备1014(例如,生物计量扫描仪、扬声器、相机、传感器)可耦合到第一总线1016,以及可将第一总线1016耦合到第二总线1020的总线桥1018。在一个实施例中,第二总线1020可以是低引脚数(low pin count,LPC)总线。各种设备可耦合到第二总线1020,例如包括键盘/鼠标1012、(一个或多个)通信设备1026、以及数据存储单元1019(例如,盘驱动器或者其他大容量存储设备),其中该数据存储单元在一个实施例中可包括代码1030。图示的代码1030可实现一个或多个方面,例如,已经论述过的增强型DNN体系结构100(图1)、方法800(图2)、激活存储器布局402(图3)、稀疏性解码过程300(图4)、数据储存器实例体系结构430(图5)、扁平数据储存器实例450(图6)、重叠分库数据储存器530(图8)、调度表550(图11)。另外,音频I/O1024可耦合到第二总线1020并且电池1010可向计算系统1000供应电力。
注意,设想了其他实施例。例如,取代图15的点到点体系结构,系统可实现多点分支总线或者另外的这种通信拓扑。另外,可改为利用比图15所示更多或更少的集成芯片来划分图15的元件。
附加注释和示例:
示例1包括一种计算系统,该计算系统包括多个处理元件,存储器,用来存储与多个张量相关联的压缩数据和稀疏性位图,其中所述压缩数据要采用压缩格式,以及解码缓冲器,其包括至少部分实现在可配置或固定功能硬件之中的一个或多个中的逻辑,所述逻辑从所述存储器预取所述压缩数据,将所述压缩数据与所述稀疏性位图对齐以生成解码后的数据,并且将所述解码后的数据提供给所述多个处理元件。
示例2包括如示例1所述的计算系统,其中,所述逻辑基于所述多个处理元件的个体消耗速率将所述解码后的数据分发给所述多个处理元件。
示例3包括如示例1至2中的任一项所述的计算系统,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,并且其中,所述逻辑基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
示例4包括如示例1至2中的任一项所述的计算系统,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,其中,所述多个数据储存器包括第一组数据储存器和第二组数据储存器,所述逻辑包括至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分,并且所述逻辑控制所述多个写入部分中的第一写入部分写入到所述第一组数据储存器,其中所述第二组数据储存器是所述第一写入部分不可访问的。
示例5包括如示例1所述的计算系统,其中,所述解码缓冲器包括多个缓冲器,所述逻辑包括至少部分实现在可配置或固定功能硬件之中的一个或多个中的写入部分,并且其中,所述逻辑控制所述写入部分访问所述多个缓冲器中的任何一者以基于与所述多个张量相关联的X值和Y值执行写入操作。
示例6包括如示例1至5中的任一项所述的计算系统,其中,所述逻辑将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐,并且将所述压缩数据的第一部分与所述稀疏性位图的第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
示例7包括一种半导体装置,该装置包括一个或多个衬底,以及与所述一个或多个衬底耦合的逻辑,其中所述逻辑被实现在可配置或固定功能硬件之中的一个或多个中,所述逻辑从存储器预取压缩数据和稀疏性位图以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述压缩数据要采用压缩格式,将所述压缩数据与所述稀疏性位图对齐以生成解码后的数据,并且将所述解码后的数据提供给多个处理元件。
示例8包括如示例7所述的装置,其中,所述逻辑基于所述处理元件的个体消耗速率将所述解码后的数据分发给所述处理元件。
示例9包括如示例7至8中的任一项所述的装置,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,并且所述逻辑基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
示例10包括如示例7至8中的任一项所述的装置,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,其中,所述多个数据储存器包括第一组数据储存器和第二组数据储存器,所述逻辑包括至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分,并且所述逻辑控制所述多个写入部分中的第一写入部分写入到所述第一组数据储存器,其中所述第二组数据储存器是所述第一写入部分不可访问的。
示例11包括如示例7所述的装置,其中,所述解码缓冲器包括多个缓冲器,所述逻辑包括至少部分实现在可配置或固定功能硬件之中的一个或多个中的写入部分,并且其中,所述逻辑控制所述写入部分访问所述多个缓冲器中的任何一者以基于与所述多个张量相关联的X值和Y值执行写入操作。
示例12包括如示例7至11中的任一项所述的装置,其中,所述逻辑将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐,并且将所述压缩数据的第一部分与所述稀疏性位图的第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
示例13包括如示例7至12中的任一项所述的装置,其中,所述逻辑包括定位在所述一个或多个衬底内的晶体管沟道区域。
示例14包括至少一个计算机可读存储介质,该介质包括一组可执行程序指令,所述指令当被计算系统执行时,使得所述计算系统从存储器预取压缩数据和稀疏性位图以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述数据要采用压缩格式,将所述压缩数据与所述稀疏性位图对齐以生成解码后的数据,并且将所述解码后的数据提供给多个处理元件。
示例15包括如示例14所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统基于所述处理元件的个体消耗速率将所述解码后的数据分发给所述处理元件。
示例16包括如示例14至15中的任一项所述的至少一个计算机可读存储介质,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,并且所述可执行程序指令在被执行时,还使得所述计算系统基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
示例17包括如示例14至15中的任一项所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统控制多个写入部分中的第一写入部分写入到所述解码缓冲器的第一组数据储存器,其中所述解码缓冲器的第二组数据储存器是所述第一写入部分不可访问的,其中,所述多个写入部分至少部分实现在可配置或固定功能硬件之中的一个或多个中。
示例18包括如示例14所述的至少一个计算机可读存储介质,其中,所述解码缓冲器包括多个缓冲器,并且其中,所述可执行程序指令在被执行时,还使得所述计算系统控制至少部分实现在可配置或固定功能硬件之中的一个或多个中的写入部分访问所述多个缓冲器中的任何一者以基于与所述多个张量相关联的X值和Y值执行写入操作。
示例19包括如示例14至18中的任一项所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐,并且将所述压缩数据的第一部分与所述稀疏性位图的第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
示例20包括一种方法,该方法包括从存储器预取压缩数据和稀疏性位图以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述压缩数据采用压缩格式,将所述压缩数据与所述稀疏性位图对齐以生成解码后的数据,并且将所述解码后的数据提供给多个处理元件。
示例21包括如示例20所述的方法,还包括基于所述处理元件的个体消耗速率将所述解码后的数据分发给所述处理元件。
示例22包括如示例20至21中的任一项所述的方法,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,并且所述方法还包括基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
示例23包括如示例20至21中的任一项所述的方法,还包括控制多个写入部分中的第一写入部分写入到所述解码缓冲器的第一组数据储存器,其中所述解码缓冲器的第二组数据储存器是所述第一写入部分不可访问的,其中,所述多个写入部分至少部分实现在可配置或固定功能硬件之中的一个或多个中。
示例24包括如示例20所述的方法,其中,所述解码缓冲器包括多个缓冲器,并且其中,所述方法还包括控制至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分访问所述多个缓冲器中的任何一者以基于与所述多个张量相关联的X值和Y值执行写入操作。
示例25包括如示例20至24中的任一项所述的方法,其中,所述方法还包括将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐,并且将所述压缩数据的第一部分与所述稀疏性位图的第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
示例26包括一种装置,该装置包括从存储器预取压缩数据和稀疏性位图以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述压缩数据采用压缩格式,将所述压缩数据与所述稀疏性位图对齐以生成解码后的数据,并且将所述解码后的数据提供给多个处理元件。
示例27包括如示例26所述的装置,还包括基于所述处理元件的个体消耗速率将所述解码后的数据分发给所述处理元件。
示例28包括如示例26至27中的任一项所述的装置,其中,所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,并且所述装置还包括用于基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中的装置。
示例29包括如示例26至27中的任一项所述的装置,还包括用于控制多个写入部分中的第一写入部分写入到所述解码缓冲器的第一组数据储存器的装置,其中所述解码缓冲器的第二组数据储存器是所述第一写入部分不可访问的,其中,所述多个写入部分至少部分实现在可配置或固定功能硬件之中的一个或多个中。
示例30包括如示例26所述的装置,其中,所述解码缓冲器包括多个缓冲器,并且其中,所述装置还包括用于控制至少部分实现在可配置或固定功能硬件之中的一个或多个中的多个写入部分访问多个缓冲器中的任何一者以基于与所述多个张量相关联的X值和Y值执行写入操作的装置。
示例31包括如示例26至30中的任一项所述的装置,其中,所述装置还包括用于将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐的装置,以及用于将所述压缩数据的第一部分与所述稀疏性位图的第一部分提供给所述多个处理元件以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件的装置。
从而,本文描述的技术可提供数据的增强取回、存储和分发。此外,如本文所述的一些实施例可将对齐的数据提供给PE以减少通信开销,同时也减少功率使用、硬件和面积。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(programmable logicarray,PLA)、存储器芯片、网络芯片,片上系统(systems on chip,SoC)、SSD/NAND控制器ASIC,等等。此外,在一些附图中,用线条来表示信号导线。某些可能是不同的,以表明更多的构成信号路径,具有数字标注,以表明构成信号路径的数目,和/或在一端或多端具有箭头,以表明主要信息流方向。然而,这不应当被以限制方式来解释。更确切地说,可以联系一个或多个示范性实施例使用这种添加的细节来促进对电路的更容易理解。任何表示的信号线,无论是否具有附加信息,都可实际上包括一个或多个信号,这一个或多个信号可在多个方向上行进并且可利用任何适当类型的信号方案来实现,例如用差动对实现的数字或模拟线路、光纤线路、和/或单端线路。
可能给出了示例大小/型号/值/范围,虽然实施例不限于此。随着制造技术(例如,光刻术)随着时间流逝而成熟,预期能够制造具有更小尺寸的器件。此外,为了图示和论述的简单,并且为了不模糊实施例的某些方面,在附图内可能示出或不示出到IC芯片和其他组件的公知电源/接地连接。另外,可能以框图形式示出布置以避免模糊实施例,并且同时也考虑到了如下事实:关于这种框图布置的实现的具体细节是高度依赖于在其内实现实施例的平台的,即,这种具体细节应当完全在本领域技术人员的视野内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,本领域技术人员应当清楚,没有这些具体细节,或者利用这些具体细节的变体,也可实现实施例。说明书从而应当被认为是说明性的,而不是限制性的。
术语“耦合”在本文中可被用于指所涉组件之间的任何类型的关系,无论是直接的还是间接的,并且可应用到电的、机械的、液体的、光的、电磁的、机电的或者其他的连接。此外,除非另外指出,否则术语“第一”、“第二”等等在本文中可只被用于促进论述,而不带有特定的时间或先后意义。
就在本申请中和权利要求中使用的而言,由术语“……中的一个或多个”联接的项目的列表可意指所列出的术语的任何组合。例如,短语“A、B或C中的一个或多个”可意指A、B、C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员从前述描述将会明白,可按各种形式来实现实施例的宽广技术。因此,虽然已联系其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为本领域技术人员在研习了附图、说明书和所附权利要求后,将清楚其他修改。
Claims (25)
1.一种计算系统,包括:
多个处理元件;
存储器,用于存储与多个张量相关联的压缩数据和稀疏性位图,其中所述压缩数据要采用压缩格式;以及
解码缓冲器,其包括至少部分实现在可配置或固定功能的硬件之中的一个或多个中的逻辑,所述逻辑用于:
从所述存储器预取所述压缩数据;
将所述压缩数据与所述稀疏性位图对齐,以生成解码后的数据;并且
将所述解码后的数据提供给所述多个处理元件。
2.如权利要求1所述的计算系统,其中,所述逻辑用于:
基于所述多个处理元件的个体消耗速率,将所述解码后的数据分发给所述多个处理元件。
3.如权利要求1至2中的任一项所述的计算系统,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器;并且
其中,所述逻辑用于:基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
4.如权利要求1至2中的任一项所述的计算系统,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,其中,所述多个数据储存器包括第一组数据储存器和第二组数据储存器;
所述逻辑包括多个写入部分,该多个写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中;并且
所述逻辑用于控制所述多个写入部分中的第一写入部分写入到所述第一组数据储存器,其中所述第二组数据储存器是所述第一写入部分不可访问的。
5.如权利要求1所述的计算系统,其中:
所述解码缓冲器包括多个缓冲器;
所述逻辑包括写入部分,该写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中;并且
其中,所述逻辑用于控制所述写入部分访问所述多个缓冲器中的任何一者,以基于与所述多个张量相关联的X值和Y值执行写入操作。
6.如权利要求1至5中的任一项所述的计算系统,其中,所述逻辑用于:
将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐;并且
将所述压缩数据的所述第一部分与所述稀疏性位图的所述第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
7.一种半导体装置,包括:
一个或多个衬底;以及
与所述一个或多个衬底耦合的逻辑,其中,所述逻辑被实现在可配置或固定功能的硬件之中的一个或多个中,所述逻辑用于:
从存储器预取压缩数据和稀疏性位图,以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述压缩数据要采用压缩格式;
将所述压缩数据与所述稀疏性位图对齐,以生成解码后的数据;并且
将所述解码后的数据提供给多个处理元件。
8.如权利要求7所述的装置,其中,所述逻辑用于:
基于所述处理元件的个体消耗速率,将所述解码后的数据分发给所述处理元件。
9.如权利要求7至8中的任一项所述的装置,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器;并且
所述逻辑用于:基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
10.如权利要求7至8中的任一项所述的装置,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器,其中,所述多个数据储存器包括第一组数据储存器和第二组数据储存器;
所述逻辑包括多个写入部分,该多个写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中;并且
所述逻辑用于控制所述多个写入部分中的第一写入部分写入到所述第一组数据储存器,其中所述第二组数据储存器是所述第一写入部分不可访问的。
11.如权利要求7所述的装置,其中:
所述解码缓冲器包括多个缓冲器;
所述逻辑包括写入部分,该写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中;并且
其中,所述逻辑用于控制所述写入部分访问所述多个缓冲器中的任何一者,以基于与所述多个张量相关联的X值和Y值执行写入操作。
12.如权利要求7至11中的任一项所述的装置,其中,所述逻辑用于:
将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐;并且
将所述压缩数据的所述第一部分与所述稀疏性位图的所述第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
13.如权利要求7至12中的任一项所述的装置,其中,所述逻辑包括位于所述一个或多个衬底内的晶体管沟道区域。
14.至少一个计算机可读存储介质,该介质包括一组可执行程序指令,所述指令当被计算系统执行时,使得所述计算系统:
从存储器预取压缩数据和稀疏性位图,以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述数据要采用压缩格式;
将所述压缩数据与所述稀疏性位图对齐,以生成解码后的数据;并且
将所述解码后的数据提供给多个处理元件。
15.如权利要求14所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统:
基于所述处理元件的个体消耗速率,将所述解码后的数据分发给所述处理元件。
16.如权利要求14至15中的任一项所述的至少一个计算机可读存储介质,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器;并且
所述可执行程序指令在被执行时,还使得所述计算系统基于与所述张量相关联的X值和Y值将所述压缩数据存储在所述多个数据储存器中。
17.如权利要求14至15中的任一项所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统:
控制多个写入部分中的第一写入部分写入到所述解码缓冲器的第一组数据储存器,其中所述解码缓冲器的第二组数据储存器是所述第一写入部分不可访问的,其中,所述多个写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中。
18.如权利要求14所述的至少一个计算机可读存储介质,
其中,所述解码缓冲器包括多个缓冲器;并且
其中,所述可执行程序指令在被执行时,还使得所述计算系统控制写入部分访问所述多个缓冲器中的任何一者,以基于与所述多个张量相关联的X值和Y值执行写入操作,所述写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中。
19.如权利要求14至18中的任一项所述的至少一个计算机可读存储介质,其中,所述可执行程序指令在被执行时,还使得所述计算系统:
将所述压缩数据的第一部分与所述稀疏性位图的第一部分对齐;并且
将所述压缩数据的所述第一部分与所述稀疏性位图的所述第一部分提供给所述多个处理元件,以避开将所述压缩数据和所述稀疏性位图的未对齐部分提供给所述处理元件。
20.如权利要求14所述的至少一个计算机可读存储介质,其中,所述解码缓冲器包括与所述多个处理元件相对应的多个数据储存器。
21.如权利要求20所述的至少一个计算机可读存储介质,其中,所述多个数据储存器中的第一数据储存器包括:存储所述压缩数据的第一环形缓冲器和第二环形缓冲器,以及用来存储所述稀疏性位图的位图队列。
22.一种方法,包括:
从存储器预取压缩数据和稀疏性位图,以将所述压缩数据存储在解码缓冲器中,其中所述压缩数据与多个张量相关联,其中所述压缩数据采用压缩格式;
将所述压缩数据与所述稀疏性位图对齐,以生成解码后的数据;并且
将所述解码后的数据提供给多个处理元件。
23.如权利要求22所述的方法,还包括:
基于所述处理元件的个体消耗速率,将所述解码后的数据分发给所述处理元件。
24.如权利要求22至23中的任一项所述的方法,其中:
所述解码缓冲器包括多个数据储存器,所述多个数据储存器包括多个缓冲器;并且
所述方法还包括:基于与所述张量相关联的X值和Y值,将所述压缩数据存储在所述多个数据储存器中。
25.如权利要求22至23中的任一项所述的方法,还包括:
控制多个写入部分中的第一写入部分写入到所述解码缓冲器的第一组数据储存器,其中所述解码缓冲器的第二组数据储存器是所述第一写入部分不可访问的,其中,所述多个写入部分至少部分实现在可配置或固定功能的硬件之中的一个或多个中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IN202141049268 | 2021-10-28 | ||
US17/524,333 | 2021-11-11 | ||
US17/524,333 US20220067524A1 (en) | 2021-10-28 | 2021-11-11 | Sparsity-aware datastore for inference processing in deep neural network architectures |
PCT/US2022/076983 WO2023086702A1 (en) | 2021-10-28 | 2022-09-24 | Sparsity-aware datastore for inference processing in deep neural network architectures |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117597691A true CN117597691A (zh) | 2024-02-23 |
Family
ID=80357086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280046199.4A Pending CN117597691A (zh) | 2021-10-28 | 2022-09-24 | 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220067524A1 (zh) |
CN (1) | CN117597691A (zh) |
WO (1) | WO2023086702A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966835B2 (en) * | 2018-06-05 | 2024-04-23 | Nvidia Corp. | Deep neural network accelerator with fine-grained parallelism discovery |
US11755683B2 (en) * | 2019-12-23 | 2023-09-12 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors (FAST) in machine learning |
CN111240743B (zh) * | 2020-01-03 | 2022-06-03 | 格兰菲智能科技有限公司 | 人工智能集成电路 |
US11462003B2 (en) * | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
-
2021
- 2021-11-11 US US17/524,333 patent/US20220067524A1/en active Pending
-
2022
- 2022-09-24 WO PCT/US2022/076983 patent/WO2023086702A1/en active Application Filing
- 2022-09-24 CN CN202280046199.4A patent/CN117597691A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023086702A1 (en) | 2023-05-19 |
US20220067524A1 (en) | 2022-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101121606B1 (ko) | 스레드 최적화 멀티프로세서 아키텍처 | |
US8176265B2 (en) | Shared single-access memory with management of multiple parallel requests | |
KR101120398B1 (ko) | 스레드 최적화된 멀티프로세서 구조 | |
KR20220054357A (ko) | 직렬 할당 데이터에 대해 pim(processing-in-memory) 연산을 수행하기 위한 방법, 및 관련 메모리 디바이스 및 시스템 | |
US11783170B2 (en) | Spatially sparse neural network accelerator for multi-dimension visual analytics | |
Lin et al. | ASTRO: Synthesizing application-specific reconfigurable hardware traces to exploit memory-level parallelism | |
EP1846820B1 (en) | Methods and apparatus for instruction set emulation | |
KR20170099848A (ko) | 컨볼루션 연산을 수행하기 위한 저장 디바이스 및 방법 | |
US11797474B2 (en) | High performance processor | |
US20220043770A1 (en) | Neural network processor, chip and electronic device | |
Moeng et al. | ContextPreRF: Enhancing the performance and energy of GPUs with nonuniform register access | |
US11347828B2 (en) | Methods, apparatus, articles of manufacture to perform accelerated matrix multiplication | |
US20220350863A1 (en) | Technology to minimize the negative impact of cache conflicts caused by incompatible leading dimensions in matrix multiplication and convolution kernels without dimension padding | |
US20230024670A1 (en) | Deterministic memory for tensor streaming processors | |
CN117597691A (zh) | 用于深度神经网络体系结构中的推理处理的稀疏性感知数据储存器 | |
EP3992865A1 (en) | Accelerated loading of unstructured sparse data in machine learning architectures | |
Tan et al. | Mitigating the impact of hardware variability for GPGPUs register file | |
US20230115542A1 (en) | Programmable matrix multiplication engine | |
US11861401B2 (en) | Neural processing device and method for job scheduling thereof | |
US11836082B2 (en) | Neural processing device and load/store method of neural processing device | |
de difusión Público et al. | Información del Documento | |
Kim et al. | MoNDE: Mixture of Near-Data Experts for Large-Scale Sparse Models | |
CN117980898A (zh) | 重叠操作的计算和数据存储的交错数据加载系统 | |
Yu et al. | Nonvolatile Memory Computing System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |