用于科学计算的存储处理器阵列的制作方法

文档序号:11620342阅读:192来源:国知局
本公开涉及提供用于科学计算的存储处理器阵列的设备、系统和方法。
背景技术
::固态驱动器可包括非易失性固态存储器,比如闪存。闪存可包括改进形式的电可擦除可编程只读存储器(eeprom)。传统的eeprom一次仅能够擦除或写入一个存储器位置(例如一存储器单元)。相比之下,闪存在一个编程操作中允许多个存储器位置被擦除或写入。因此相比于传统的eeprom,闪存能以更高的速度操作。固态存储器相对于其他存储装置具有多个优势。例如,其通常提供比硬盘驱动器(hdd)更快的读取存取次数和更好的耐冲击性。不同于动态随机存取存储器(dram),固态存储器通常是非易失性的,意味着当存储器的电源被移除时存储在闪存中的数据不丢失。这些优势以及其他优势可以解释闪存在诸如存储卡、usb闪存盘、手机、数字摄像机、大容量存储装置、mp3播放器等的装置中用于存储应用的日渐普及。技术实现要素:本公开的实施例涉及提供用于科学计算的存储处理器阵列的设备、系统的方法。本公开的一些实施例包括固态装置系统。固态装置系统包括多个存储处理单元,其布置为二维阵列,其中多个存储处理单元的每一个包括计算单元和非易失性存储器模块。固态装置系统还包括互联网络,所述互联网络包括多个单元网络模块,其中互联网络配置为提供多个存储处理单元之间的数据通信。多个存储处理单元被分组成存储处理单元的多个子阵列,且多个子阵列的第一子阵列中的存储处理单元使用多个单元网络模块中的第一单元网络模块彼此联接。在一些实施例中,所述多个子阵列的第二子阵列中的存储处理单元使用所述多个单元网络模块中的第二单元网络模块彼此联接。在一些实施例中,所述多个子阵列,包括第一子阵列和第二子阵列,使用所述多个单元网络模块中的第三单元网络模块彼此联接,由此形成存储处理单元的分层互连。在一些实施例中,单元网络模块的每一个具有第一类型的互连拓扑。在一些实施例中,第一类型的互连拓扑包括改进的环网拓扑。在一些实施例中,第一类型的互连拓扑包括改进的环网拓扑。在一些实施例中,所述多个单元网络模块中的第一单元网络模块具有第一类型的互连拓扑,所述多个单元网络模块中的第二单元网络模块具有第二类型的互连拓扑。在一些实施例中,第一子阵列与第二子阵列对角布置,且所述多个单元网络模块中的第三单元网络模块包括配置为直接连接第一子阵列和第二子阵列的对角互连。在一些实施例中,对角互连配置为直接连接第一子阵列的通信集线器和第二子阵列的通信集线器。在一些实施例中,所述多个存储处理单元布置在印刷电路板上,且互连网络包括印刷电路板上的电导体。在一些实施例中,固态装置系统进一步包括存储器控制器,其配置为经由互联网络对所述多个存储处理单元之间的数据传输进行安排。在一些实施例中,存储器控制器进一步配置为将对应于二维矩阵的多个块加载到所述多个子阵列上,触发所述多个子阵列,以在局部进行转置操作,以计算所述多个块的转置,和触发子阵列中的两个,以经由互联网络交换存储在子阵列的所述两个中的块的转置。在一些实施例中,存储器控制器配置为确定互联网络上的路线,子阵列中的两个通过所述路线交换块的转置。在一些实施例中,所述多个存储处理单元中的计算单元配置为进行科学计算。在一些实施例中,所述多个单元网络模块中的一个包括l-对角类型的1单元网络模块。在一些实施例中,所述多个单元网络模块中的一个包括l-对角类型的2单元网络模块。在一些实施例中,所述多个单元网络模块中的一个包括l-对角类型的3单元网络模块。在一些实施例中,所述多个单元网络模块中的一个包括l-对角类型的4单元网络模块。在一些实施例中,所述多个单元网络模块中的一个包括全网状单元网络模块。本公开的一些实施例包括一系统。所述系统可包括根据一些实施例的固态装置系统,以及与固态装置系统数据通信的主机装置,其中主机装置配置为发送数据到固态装置系统,以被多个存储处理单元中的计算单元处理。附图说明参考以下的对所公开主题的详细描述,当其结合所附附图一起考虑时,所公开的主题的各目的、特征以及优势可更好地被理解,附图中相同的附图标记标示相同的元件。附图是示意性的,且未刻意按比例绘制。处于清楚的目的,并非在每幅图中标出每个部件。在不需要图示来允许本领域技术人员理解所公开的主题的地方,也没有示出所公开的主题的每个实施例的每个部件。图1示出了根据一些实施例的示例性计算系统,其具有主机系统和存储系统;图2示出了根据一些实施例的多个存储处理单元的二维布置;图3示出了根据一些实施例的单元网络模块的环形拓扑;图4示出了根据一些实施例的单元网络模块的改进的环形拓扑;图5a-5b示出了根据一些实施例的矩阵转置操作中的附加边缘(edge)的益处;图6示出了根据一些实施例的单元网络模块的全网状拓扑;图7a-7d示出了根据一些实施例的单元网络模块的四l对角拓扑;图8示出了根据一些实施例的存储处理单元的多个子阵列;图9示出了根据一些实施例的存储处理单元的多个子阵列;图10示出了根据一些实施例的存储处理单元的分层改进的环形网络;图11示出了根据一些实施例的存储处理单元的分层网状网络;图12示出了根据一些实施例的存储处理单元的分层网络;图13示出了根据一些实施例的使用存储处理单元阵列的块转置操作;图14a-14c示出了用于特定输入矩阵的图13的块转置操作;图15示出了根据一些实施例的存储处理单元的分层网络。具体实施方式在下文的描述中,针对所公开的主题的系统和方法以及这种系统和方法可以运行等的环境描述许多具体细节,以便提供对所公开主题的充分理解。然而,本领域技术人员应理解到,所公开的主题可以不按照这种具体细节实施,且本领域已知的一些特征不详细描述,以便避免所公开主题的复杂化。此外,应理解下文提供的例子是示例性的,且应理解到,存在在所公开主题范围内的其他系统和方法。在传统的计算和存储模型中,计算系统包括主机系统和存储系统。在该模型中,主机系统被设计为执行计算且存储系统被设计为要被主机系统处理的存储信息。在一些情况下,主机系统可协调存储系统的存储操作,但是主机系统的处理能力通常是与存储系统隔离的。有时,期望的是从主机系统向存储系统卸载一些计算操作。例如,在数据密集型应用中,希望的是为存储系统增加计算能力,使得数据密集型计算可局部性地在存储系统中执行。以此方式,主机系统可被免除计算要求,且系统的输入/输出(i/o)要求作为一个整体也可被免除。虽然系统的输入/输出(i/o)要求作为一个整体可被免除,但是仍然会存在显著的数据通信需求。通常,存储系统可包括多个存储处理单元,且存储处理单元会需要彼此通信以便完成从主机系统卸载的一些计算。这种通信可通过主机系统执行或通过点对点(peer-to-peer)通信总线执行,例如,外围组件快速互连(pcie)总线。不幸地,任一方法会使得主机系统和/或点对点通信总线快速达到饱和。在点对点通信上的数据通信由于点对点通信总线上的带宽限制条件而尤其不实际。本发明的一些实施例解决存储系统中的存储处理单元之间的数据通信。具体说,所公开的实施例包括互连网络,其配置为提供存储处理单元之间的数据通信。公开的互连网络可在存储处理单元被配置为局部性地执行科学计算时尤其有效。公开的互连网络可实现存储处理单元之间的局部化、高吞吐量和低数据延迟通信,而不使得主机系统过载。在高水平下,公开的互连网络允许存储处理单元彼此地而不通过中间装置(例如主机系统)进行通信。因为存储处理单元可局部性地在存储系统中彼此通信,存储处理单元之间的通信可以以高吞吐量和/或低延迟实现。在一些实施例中,公开的互连网络可以将存储处理单元与有限组的互连结构连接。例如,在存储系统包括布置为2x2矩阵中的四个存储处理单元时,公开的互连网络可以布置为使得存储处理单元中之一操作为通讯集线器,由此使得存储处理单元之间的通信集中化。在一些实施例中,互连网络可包括多个单元网络模块。每一个单元网络模块可被配置为将存储处理单元的子组互相连接。在一些情况下,存储处理单元的子组可彼此以分层的方式联接,由此形成单元网络模块的分层连接。图1示出了示例性计算系统,其具有根据一些实施例的存储系统和主机系统。计算系统100可包括主机系统102和存储系统104,其中存储系统104包括存储器控制器106,多个存储处理单元108a-108d,和在多个存储处理单元108a-108d之间的互连网络114。主机系统102可包括计算机系统,其使用且访问存储系统104,用于数据读写操作。这种主机系统102可以运行例如数据库、文件系统和网络服务这样的应用。主机系统102可包括主机cpu、主机存储器装置、和存储处理单元应用程序接口(api)和/或装置驱动器。在一些实施例中,主机系统102可物理上与存储系统104共同定位(例如物理上靠近地定位)。在这种实施例中,主机系统102可被配置为经由总线与存储系统104通信。总线例如可包括pci、pci-express、pci-x、infiniband、hypertransport、scsipci-e卡、satapci-e卡、iscsi适配卡、和fibrechannelpci-e卡。在其他实施例中,主机系统102可物理上与存储系统104分离。在这种实施例中,主机系统102可经由通信网络与存储系统104通信。网络可包括因特网、无线局域网(lan)、分组数据网络、传统网络、能在主机系统102和存储系统104之间提供数据通信的任何类型网络。在一些实施例中,存储器控制器106可实施为硬件。硬件可包括逻辑电路和/或存储器,用于选择目标存储器块且用于从选择的目标存储器块移出数据以容纳新的数据。在一些实施例中,用于存储器控制器106的硬件可使用硬件描述语言实施,包括verilog、vhsic硬件描述语言(vhdl),和bluespectm(马萨诸塞的framingham的bluespecinc.),且使用逻辑合成工具进行合成,包括designcompiler((加利福尼亚的mountainview的synopsisinc.),encounterrtlcompiler(加利福尼亚的圣何塞的cadencedesignsystemsinc.),realtimedesigner(加利福尼亚的santaclara的oasysdesignsystems),和booledozer(纽约的endicott的internationalbusinessmachine)。在一些实施例中,存储器控制器106进而实施为固件的一部分。固件可分配存储器空间,用于保持磨损计数表(wearcounttable)和磨损计数图(wearcountmap),且可包括进一步包括可操作为识别存储器块的指令,以用于垃圾回收操作。在一些实施例中,存储器控制器106可在使用存储器的软件中实施,存储器例如是非瞬时计算机可读介质、可编程只读存储器(prom)或闪速存储器。软件可运行在处理器上,其可以存在于存储器控制器106中。处理器可被配置为执行指令或计算机代码,其可实施在存储器控制器106中的非瞬时计算机可读介质中。在一些实施例中,每一个存储处理单元108包括用于保存数据的非易失性存储器(nvm)存储单元110和用于计算的加速器112。在一些实施例中,nvm存储单元110可包括多个存储器块,用于保存数据。每一个存储器块可具有固定尺寸。例如,存储器块可以是128kb长。每一个存储器块可被分成多个页。存储器块中的每一个页可具有固定尺寸。例如,页可以是4kb长。在一些实施例中,加速器112可被配置为执行专门的操作,例如科学计算。例如,加速器112可被配置为执行快速傅里叶转换,关键值存储、搜索和整理和/或矩阵计算。在一些实施例中,加速器112可在硬件中实施。用于加速器112的硬件可使用硬件描述语言实施,包括verilog、vhsic硬件描述语言(vhdl),和bluespectm(马萨诸塞的framingham的bluespecinc.),且使用逻辑合成工具进行合成,包括designcompiler((加利福尼亚的mountainview的synopsisinc.),encounterrtlcompiler(加利福尼亚的圣何塞的cadencedesignsystemsinc.),realtimedesigner(加利福尼亚的santaclara的oasysdesignsystems),和booledozer(纽约的endicott的internationalbusinessmachine)。在一些实施例中,互连网络114可被配置为提供多个存储处理单元108之间的通信。互连网络114可在硬件中实施以发送和接收数据。互连网络114可被配置为提供在一个或多个多种介质中的通信,例如光学介质、电介质、磁性介质、和/或任何其他类型的介质,其实现多个存储处理单元108之间的通信。互连网络114可被配置为在多个通信协议中提供通信。在一些实施例中,互连网络114可包括pci接口、pcie接口、serialatattachment(sata)接口和/或serialattachedscsi(sas)接口。在一些实施例中,多个存储处理单元108可布置为二维阵列。图2示出了根据一些实施例的多个存储处理单元的二维布置。多个存储处理单元布置为二维阵列,也称为矩阵布置。在该实例中,存在十六个存储处理单元。因此,存储处理单元可布置为4x4矩阵。在一些实施例中,存储处理单元可布置在电路板上,例如印刷电路板(pcb),且互连网络114可包括在电路板上的导体。在一些实施例中,一个或多个存储处理单元108可使用二维索引来参考。例如,左上存储处理单元可被称为spu0,0;右下存储处理单元可称为spu3,3,且第i行和第j列中的存储处理单元可称为spui,j。在一些实施例中,多个存储处理单元108中之一也称为源存储处理单元,可经由互连网络114向目的存储处理单元发送数据。在互连网络114将源存储处理单元直接联接到目的存储处理单元时,源存储处理单元可直接经由互连网络114向目的存储处理单元发送数据。在互连网络114不将源存储处理单元直接联接到目的存储处理单元时,源存储处理单元可使用各种数据路线技术向目的存储处理单元发送数据。例如,源存储处理单元可在互连网络114中使用最小距离向目的存储处理单元发送数据。在一些实施例中,存储器控制器106可在互连网络114集中地安排数据的路线。在其他实施例中,多个存储处理单元可以以分布的方式在互连网络114中安排数据的路线。在一些实施例中,互连网络114可包括多个单元网络模块。每个单元网络模块可被配置为连接二维阵列中的存储处理单元子组。例如,单元网络模块可被配置为联接被布置为二维阵列的存储处理单元的子组(例如spu0,0,spu0,1,spu1,0,spu1,1)。布置为二维阵列的存储处理单元的子组也可被称为存储处理单元的子阵列。在一些实施例中,单元网络模块可包括接口连接,其布置在多个连接拓扑结构中的一个中。与单元网络模块相关的连接拓扑结构可确定单元网络模块的类型。多个连接拓扑结构例如可包括环型拓扑结构、经修改环型拓扑结构、全网状拓扑结构、l对角线拓扑结构类型1、l对角线拓扑结构类型2、l对角线拓扑结构类型3、和l对角线拓扑结构类型4。这些拓扑结构示出在根据一些实施例的图3、4、6和7中。在一些实施例中,存储处理单元的子阵列可分层地连接到存储处理单元的子阵列。例如,在图2中,16个存储处理单元可被分组为存储处理单元的四个子阵列。第一子阵列包括spu0,0,spu0,1,spu1,0,spu1,1;第二子阵列包括spu0,2,spu0,3,spu1,2,spu1,2;第三子阵列包括spu2,0,spu2,1,spu3,0,spu3,1;且第四子阵列包括spu2,2,spu2,3,spu3,2,spu3,3。存储处理单元的这些子阵列可使用如上所述的互连拓扑结构中之一彼此联接,由此提供存储处理单元之间的分层连接。在一些实施例中,存储处理单元的每一个子阵列可使用相同类型的单元网络模块。在其他实施例中,存储处理单元的至少一个子阵列使用不同类型的单元网络模块。图3示出了根据一些实施例的单元网络模块的环形拓扑结构。图3示出布置为二维阵列的四个存储处理单元302-308。单元网络模块包括四个边缘310-316。图3中的单元网络模块被描述为具有环形拓扑结构,因为单元网络模块将存储处理单元连接为环形。单元网络模块的每一个边缘表明,在通过边缘连接的两个存储处理单元(spu)之间存在直接连接。例如,spua302和spub304彼此经由互连边缘310直接连接。在两个spu直接连接时,两个spu可直接经由连接两个spu的互连边缘彼此直接发送数据。例如,spua302和spub304彼此经由互连边缘310直接发送数据。在两个spu不直接连接时,两个spu可经由另一spu彼此发送数据。例如,spua302可经由spuc306或spub304向spud308发送数据。图4示出了根据一些实施例的单元网络模块的经修改的环形拓扑结构。经修改的环形拓扑结构类似于图3示出的环形拓扑结构,但是经修改的环形拓扑结构具有附加的对角线边缘402。该附加边缘402可有助于spub304和spuc306之间的数据通信,其可以对一些类型的科学计算有益。例如,附加边缘402可有利于矩阵转置操作。图5a-5b示出了根据一些实施例的矩阵转置操作中的附加边缘402的益处。图5a示出了二乘二矩阵且图5b示出了该矩阵的转置在矩阵p的值存储在分开的spu(例如1存储在spu0,0,2存储在spu0,1,5存储在spu1,0,且6存储在spu1,1)时,转置操作必须通过将spu0,1和spu1,0中存储的值进行交换而重新安排值2和5的位置。在这种情况下,在spu0,0,spu0,1,spu1,0,spu1,1使用具有经修改的环形拓扑结构的单元网络模块互连时,spu0,1和spu1,0可通过经由边缘402直接将数据发送到彼此而交换所述值。这表明,具有经修改的环形拓扑结构的单元网络模块可用于矩阵转置操作。图6示出了根据一些实施例的单元网络模块的全网状拓扑结构。全网状拓扑结构非常类似于图4示出的经修改的环形拓扑结构,但是全网状拓扑结构具有附加的对角线边缘602。该附加边缘602可有助于spua302和spud308之间的数据通信,其可以有利于一些类型的科学操作。附加边缘602可在电路板上带来附加的实际效果,但是其可以改善spu阵列的处理能力和适用性,因为spu阵列具有在spua302和spud308之间快速传递数据的附加灵活性。具有全网状拓扑结构的单元网络模块可尤其有利于快速傅里叶转换(fft)、关键值存储、搜索和整理和/或矩阵计算。取决于感兴趣的具体应用,也可使用单元网络模块的不同拓扑结构。图7a-7d示出了根据一些实施例的单元网络模块的四个l对角线拓扑结构。图7a示出的拓扑结构被称为l对角线拓扑结构类型1;图7b示出的拓扑结构被称为l对角线拓扑结构类型2;图7c示出的拓扑结构被称为l对角线拓扑结构类型3;且图7d示出的拓扑结构被称为l对角线拓扑结构类型4。l对角线拓扑结构通常包括对角线边缘和围绕边沿的两个边缘以形成l形状。例如,图7a所示的l对角线拓扑结构类型1包括反对角线边缘602和联接到spua302的两个边缘310、312。以此方式,spua302可用作四个spu之中的通信集线器。作为另一例子,图7b所示的l对角线拓扑结构类型2包括对角线边缘402和联接到spua304的两个边缘310、316。以此方式,spub304可用作四个spu之中的通信集线器。作为另一例子,图7c所示的l对角线拓扑结构类型3包括对角线边缘402和联接到spua306的两个边缘312、314。以此方式,spuc306可用作四个spu之中的通信集线器。作为另一例子,图7d所示的l对角线拓扑结构类型4包括反对角线边缘602和联接到spud308的两个边缘314、316。以此方式,spud308可用作四个spu之中的通信集线器。在存储系统具有大量存储处理单元时,使用如上所述的拓扑结构连接存储处理单元是复杂且昂贵的。进而,如上所述的一些拓扑结构不易于延伸到更大的存储处理单元的二维阵列。例如,环形拓扑结构不易于延伸到存储处理单元的4x4阵列,因为在存储处理单元的4x4阵列中心处的四个存储处理单元将缺乏到其他存储处理单元的互连。通过使用分层方式的单元网络模块来连接存储处理单元而解决该问题。在一些实施例中,存储处理单元的二维阵列可被分为存储处理单元的多个子阵列,且在同一子阵列中的存储处理单元可使用单元网络模块彼此联接。图8示出了根据一些实施例的存储处理单元的多个子阵列。每一个子阵列802-808通过虚线框所示—每一个子阵列802-808具有四个存储处理单元。子阵列中的存储处理单元使用图7a所示的l对角线拓扑结构类型1彼此联接。在一些实施例中,每一个子阵列可使用相同类型的单元网络模块。例如,在图8中,每一个子阵列使用相同类型的单元网络模块:图7a所示的l对角线拓扑结构类型1。在其他实施例中,一个或多个子阵列可以使用不同类型的单元网络模块。图9示出了根据一些实施例的存储处理单元的多个子阵列。在图9中,子阵列902-908中的一个或多个使用不同类型单元网络模块。例如,左上子阵列902使用具有经修改的环形拓扑结构的单元网络模块,且右下子阵列908使用具有l对角线拓扑结构类型2的单元网络模块。以此方式,在子阵列中的第一个用于第一应用(例如fft计算)且子阵列中的第二个用于第二应用(例如矩阵转置操作)时,用于第一个和第二个的单元网络模块可独立地配置为针对相应应用改善性能。在一些实施例中,子阵列可使用如上所述的拓扑结构中的一个或多个彼此连接,由此形成存储处理单元的分层互连网络。图10示出了根据一些实施例的存储处理单元的分层的经改变的环形网络。在图10中,每一个子阵列1002-1008使用具有经修改的环形拓扑结构的单元网络模块。子阵列1002-1008又使用相同经修改的环形拓扑结构彼此连接,如通过连接虚线框的粗箭头所示。以此方式,可形成分层的经修改的环形网络。存储处理单元的该分层的经修改的环形网络可被称为分层的经修改的环形网络(hmrn)-4,因为操作分层连接的四单元经修改的环形网络互连。在一些实施例中,跨经存储处理单元子阵列的接口的路线可基于spu中可用的缓冲存储器的量确定。例如,接口1010提供第一子阵列1002和第二子阵列1004之间的直接通信。图10示出了接口1010连接到第一子阵列1002的spu0,1和第二子阵列1004的spu0,2。然而,在一些实施例中,接口1010可以连接到第一子阵列1002的spu1,1和/或第二子阵列1002的spu1,2,取决于spu0,1、spu0,2、spu1,1、和spu1,2中可用的缓冲存储器的量。例如,在与spu0,1比较时spu1,1具有更多可用的缓冲存储器时,接口1010可连接到spu1,1。类似地,在与spu0,2比较时spu1,2具有更多可用的缓冲存储器时,接口1010可连接到spu1,2。因此,在第一子阵列1002和第二子阵列1004之间存在提供接口1010的四种不同方式。这可类似地应用于第二子阵列1004和第三子阵列1006之间的接口;第三子阵列1006和第四子阵列1008之间的接口;和第四子阵列1008和第一子阵列1002之间的接口。在一些情况下,分层的互连网络可递归地形成。例如,四个hmrn-4可用于构造hmrn-16,其中使用单元经修改的环形网络互连来连接四个hmrn-4。类似地,四个hmrn-16可用于构造hmrn-64,其中使用单元修改的环形网络互连来连接四个hmrn-16。概括地说,四个hmrn-n/4用于构造hmrn-n,其中使用单元经修改的环形网络互连来连接四个hmrn-n/4。图11示出了根据一些实施例的存储处理单元的分层网状网络。在图11中,每一个子阵列1102-1108使用具有全网状拓扑结构的单元网络模块。子阵列1102-1108又使用相同全网状拓扑结构彼此连接,如通过连接虚线框的粗箭头所示。以此方式,可形成存储处理单元的分层全网状网络。如图11所示的全网状网络可被称为分层的全网状网络(hfmn)-4。在一些实施例中,跨经存储处理单元子阵列的接口的路线可基于spu中可用的缓冲存储器的量确定。例如,接口1110提供第一子阵列1102和第二子阵列1104之间的直接通信。图11示出了接口1110连接到第一子阵列1102的spu0,1和第二子阵列1104的spu0,2。然而,在一些实施例中,接口1110可以连接到第一子阵列1102的spu1,1和/或第二子阵列1102的spu1,2,取决于spu0,1、spu0,2、spu1,1、和spu1,2中可用的缓冲存储器的量。例如,在与spu0,1比较时spu1,1具有更多可用的缓冲存储器时,接口1110可连接到spu1,1。类似地,在与spu0,2比较时spu1,2具有更多可用的缓冲存储器时,接口1110可连接到spu1,2。因此,在第一子阵列1102和第二子阵列1104之间存在提供接口1110的四种不同方式。这可类似地应用于第二子阵列1104和第三子阵列1106之间的接口;第三子阵列1106和第四子阵列1108之间的接口;和第四子阵列1108和第一子阵列1102之间的接口。在一些情况下,分层的全网状网络可递回地形成。例如,四个hfmn-4可用于构造hfmn-16,其使用单元全网状网络互连来连接四个hfmn-4。类似地,四个hfmn-16可用于构造hfmn-64,其中使用单元全网状网络互连来连接四个hfmn-16。概括地说,四个hfmn-n/4用于构造hfmn-n,其中使用单元全网状网络互连来连接四个hfmn-n/4。在一些实施例中,存储处理单元的分层互连网络可使用两个或更多类型的单元网络模块。在存储处理单元的第一子阵列经由接口连接到存储处理单元的第二子阵列时,接口可连接第一子阵列的通信集线器和第二子阵列的通信集线器。例如,在第一子阵列包括l对角线类型1单元网络模块(如图7a所示7a)时第一子阵列包括l对角线类型2单元网络模块(如图7b所示)时,则将第一子阵列和第二子阵列连接的接口可连接第一子阵列的spua302和第二子阵列的spub304。在一些实施例中,用在分层互连网络中的单元网络模块的类型可取决于具体应用。例如,考虑矩阵块转置操作。假设矩阵x包括块矩阵a、b、c、和d,如下:随后x的转置,表示为xt,可如下计算:其示出了at和dt保持在相同位置,但是bt和ct具有交换的位置。矩阵块转置操作的这种特征可通过存储处理单元的阵列而得到杠杆作用。图12示出了根据一些实施例的存储处理单元的分层网络。图12中的网络使用三个类型的单元网络模块:l对角线拓扑结构类型1,l对角线拓扑结构类型2,和l对角线拓扑结构类型3,且这些单元网络模块中的仅两个使用单个对角线连接1210连接,如粗箭头所示。在一些实施例中,如图12所示的存储处理单元的阵列可用于执行用于具有大于4x4尺寸的矩阵的矩阵块转置操作。图13示出了使用根据一些实施例的存储处理单元阵列的块转置操作1300。在步骤1302,存储器控制器106可用输入矩阵x加载存储处理单元。假设输入矩阵x为4x4,其被分为四个2x2矩阵。每一个2x2矩阵被加载到子阵列1202、1204、1206、1208中之一上。对应于子阵列1202的2x2矩阵可称为a;对应于子阵列1204的2x2矩阵可称为b;对应于子阵列1206的2x2矩阵可称为c;和对应于子阵列1208的2x2矩阵可称为d。输入矩阵x的例子和输入矩阵x被加载到存储处理单元的阵列上的构造示出在图14a中。在步骤1304,子阵列每一个可使用单元网络模块和/或相应存储处理单元中的加速器而局部地执行转置操作。在该局部块转置操作之后,对应于子阵列1202的2x2矩阵可维持at;对应于子阵列1204的2x2矩阵可维持bt;对应于子阵列1206的2x2矩阵可维持ct;和对应于子阵列1204的2x2矩阵可维持dt。局部块转置操作的结果示出在图14b。图14b中的粗体数字表示其位置已经通过局部块转置操作进行了交换的矩阵x的元素。在步骤1306,子阵列1204和子阵列1206可交换经转置的块矩阵以完成矩阵转置操作。因为spu1,2和spu2,1分别形成子阵列1204和子阵列1206的集线器,所以子阵列1204和子阵列1206之间的对角线连接1210可有效地在子阵列1204和子阵列1206之间传递数据。在步骤1306之后,spu的阵列可维持输入矩阵x的转置:图14b所示的数据上的步骤1306的结果示出在图14c。图14c中的粗体数字表示其位置已经通过步骤1306进行了交换的矩阵x的元素。在一些实施例中,图13示出的操作可迭代地执行以执行更大矩阵的转置操作,例如8x8矩阵、16x16矩阵和具有2nx2n尺寸的任何矩阵,其中n为整数。图15示出了根据一些实施例的存储处理单元的分层网络。图15中的网络使用三个类型单元网络模块:l对角线拓扑结构类型1,l对角线拓扑结构类型2,和l对角线拓扑结构类型3,且这些单元网络模块使用全网状拓扑结构连接,如粗箭头所示。图15中的存储处理单元的阵列还用于执行根据图13示出过程的矩阵块转置操作。在此参照包括两个或更多限定步骤的方法,限定的步骤可以任何顺序或同时地执行(除非另有说明),且方法可包括一个或多个其他步骤,其在任何限定步骤、限定步骤两个、或在所有限定步骤之后执行(除非另有说明)。本领域技术人员应理解本文所述的各种示例可以实施为电子硬件、计算机软件、固件、或电子硬件、计算机软件和固件中两个或更多的组合。为了表明硬件、软件和/或固件的转置可交换性,各种说明性图块、模块、元件、部件、方法、和算法已经按照其功能如上进行了描述。这种功能是否实施为硬件、软件、固件或其组合取决于对总系统所施加的具体应用和设计限制条件。本领域技术人员可针对每一个具体应用以各种方式实施所述功能。各种部件和块可以不同地布置(例如布置为不同顺序,或以不同方式分离),所有这些不脱离本发明的范围。所公开主题的实施方式可以以在一个计算机系统中集中的范式或不同元件跨经几个互连的计算机系统分布的分布式方式来实现。适于执行本文所述的方法的任何种类的计算机系统或其他设备适于执行本文所述的功能。硬件和软件的典型组合可以是通常目的计算机系统,其具有计算机程序,在被加载和执行时,控制计算机系统,使得其执行本文所述的方法。公开的主题还可嵌入在计算机程序产品中,其包括实施本文所述的方法和系统的实施方式的所有特征,且其在加载到计算机系统中时能执行这些方法。本发明的计算机程序或应用意味着一组指令的用任何语言、代码或记法所作的任何表达,指令的目的是使得具有信息处理能力的系统直接地或在a)转变为另一语言、代码或记法;b)以不同材料形式再现中之一之后或两者之后执行具体功能。应注意,本文所述的系统和方法还可以实施为其他具体形式,而不脱离其精神和实质,因此应当参照下面如指示系统和方法的范围的权利要求,而不是本说明书。已经具体参考这些示出的实施例描述了本发明。但是,明显的是各种修改和改变可在如前所述的本发明的精神和范围内做出,且这种修改和改变认为是本发明的等效形式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1