用于执行算术运算的硬件的制作方法

文档序号:6359815阅读:238来源:国知局
专利名称:用于执行算术运算的硬件的制作方法
技术领域
本发明涉及用于执行与数据结构相关的重复性算术或逻辑运算的硬件。更特别地本发明涉及的硬件包括计划机,所述计划机能够运行以基于位图产生指令计划以及相关联的地址基准(address references),其中所述位图指示矩阵中的条目是否为零,所述硬件进一步包括算术线路,所述算术线路构造成根据所述计划使用非零值对所述矩阵进行算术运算。
背景技术
在计算系统的设计中有一个基本问题,即使得存储器访问的时间成本最小化。这是对计算机系统的基本限制,其原因在于,不论使用什么存储器技术来支持计 算以及不论使用什么技术来讲所述存储器连接至处理器,在给定时间内有多少信息能够在处理器和存储器之间传输有最大的限制,这是可用的存储器带宽,并且可用的存储器带宽对计算机能力的限制通常称为“存储器壁(memory-wall )”。已知采用数据压缩来减少“存储器壁”的效应。然而,对于编程器使用压缩的存储器子系统的问题在于数据必须在器能够在图I所示的系统操作之前被压缩。这通常涉及从一部分存储器读取压缩数据至处理器16的寄存器文件14,使用从程序存储器18获得的程序对之进行解压,并且将解压的数据存储在存储器12的另一非压缩部分中。、然而,这种方法具有下述缺点需要附加的存储器带宽来读取压缩数据库,将其以非压缩形式存储,以及在运算时将其读回至所述处理器。还需要附加的存储器容量来保持解压的数据,并且解压过程将增加对处理器寄存器文件的压力。显然,这是不太好的方案,说明此种压缩的存储器子系统还是停留在学术上而没有进入主流微处理工业。寄存器分块对于加速矩阵计算(特别是有限元)是有用的技术,但是它具有下述缺点对于许多矩阵(例如,用在诸如G00GLETM的搜索引擎中),必须增加零,降低了有效的FLOPS,并且增加了存储器带宽要求,这两项是在现代计算系统中供应不足的。实际上,处理能力和存储器带宽之间的增长差异(分别以每年50%和7%的高差别速度增长)如上所述地称为“存储器壁”。已经有许多“破开”存储器壁的方法,这些方法通常使用高速缓存器来降低必须与芯片外进行通信的可能性,和/或使用多线程使得响应时间和与芯片外通信相关联的损失能够被降低。这些方法仅仅将受限制的外部存储器带宽隐藏起来,而不是解决这个问题,并且通常依赖于数据组呈现足够的数据局部性,以及程序呈现足够的线程级并行能力(TLP),以便整体上更加有效。实际上,许多较大和更主要的问题既不呈现有效的数据局部性,也不呈现足够的TLP,并且整个系统的能力下降至由外部存储器带宽限制的点,并且已经加在芯片上的其他硬件不可使用。为此,大的工程应用的处理器性能下降至制造商标称峰值性能参数的1%或更低并不罕见。用于计算稀疏矩阵向量产物(SMVM)的现有技术方法在过去的几十年中进步很小,并且性能改进主要由于处理器和半导体处理技术的改进。通常SMVM对于主流微处理器的设计的影响微乎其微(如果有的话),尽管与放大I/O带宽性能的明显问题,特别是芯片多处理器(CMPs)通过逐渐地放大I/O带宽加剧问题。典型的分块稀疏矩阵中的条目的可调整数量由零值数量确的。即使这些值(即使不会有助于SMVM的结果)从存储器获取,并且与功率消耗和系统工作容量方面的所有相关问题联系在一起。图2是现有技术的分块压缩稀疏行(BCSR)数据结构的状态的示例性说明,该数据结构由3个阵列组成。行阵列(row_start)保持含有非零片的行条目,第二 col阵列(col_idx)含有所述非零片的列地址,val (value)阵列含有稀疏矩阵中所有非零值的实际非零条目(带有内容)——以逐片的顺序设置。如果A矩阵条目是零,然后处理器将不必使用零值执行计算,从而不会导致不必要的带宽和功率消耗。由处理器执行的许多计算包括大量的简单运算。结果,乘法运算会占用大量的时钟循环来进行。尽管该运算不能算作复杂计算,同样也不能称为细微运算,例如一个数乘以
0、+1或-1,答案可以非常简单的方式获得。
JP 60247782公开了一种技术方案,其中稀疏矩阵被加载,然后被检查以识别矩阵内的微小值。然而,该方法不能克服下述限制必须从存储器加载完整的矩阵。JP 61025275公开了一种处理器,所述处理器询问矩阵内的值,以减小矩阵运算所需的时间。类似地,JP58022446公开了一种处理器,其中根据寄存器内含有的值避免算术运算。JP58109971检查寄存器内的值以减少管线处理器结构内用于计算的整体计算时间——当在计算期间产生的中间值是微小值时。类似地,GB1479404公开了一种技术方案,其中检查矩阵内的数据值,以确定它们是否含有微小值,以及该确定结果是否在计算性能中使用。所有这些方法还是涉及从存储器加载完整矩阵。在一些应用中,涉及稀疏矩阵,执行的微小运算能够使非常显著的,原因在于大量零的存在。稀疏矩阵中零的数量能够被减少或消除通过将所述矩阵存储为诸如压缩行存储(CRS)格式的稀疏形式,然而,由于地址产生方面的开销,此种存储格式经常导致商用计算机系统具有非常差的性能。因此需要一种解决方案来解决现有技术的至少一些缺点。

发明内容
通过提供用于执行算术运算的硬件来解决这些问题,所述硬件包括计划机,其能够运行以基于指示矩阵中的条目是否为零的位图来生成指令计划和相关的地址(阵列基准);以及算术线路,其构造成根据所述计划来使用非零值对所述矩阵执行算术运算。所述硬件不需要执行由于矩阵中含有的零值而导致的琐碎运算。消除了对下述运算的需求将零值存储至存储器以及从存储器载入零值,通过共享的总线移动所述零值,或者实际上使用这些零值执行算术运算。相应地,本发明的第一实施例提供如权利要求I中限定的硬件。本发明还提供如权利要求50中限定的硬件组件。此外,本发明涉及如权利要求55中所限定的方法。附加地,本发明提供如权利要求56中所限定的方法。有利的实施例在从属权利要求中提供。参考附图将更好地理解这些和其他特征,所述附图是为了辅助理解本发明的教示而提供的。


下面将结合附图对本发明进行说明。在所述附图中图I是现有技术中已知的处理器结构的框图。图2是现有技术中已知的分块压缩稀疏行(BCSR)数据结构的图示。图3是根据本发明一实施例的硬件的框图。图4是包括图3的硬件和其它硬件元件的硬件组件的框图。图5是由图3的硬件所使用的位图分块压缩稀疏行(BBCSR)数据结构的图示。图6是图3的硬件的控制寄存器的的图示。图7是用于的压缩所述计划的示例性位图。·图8是图3的硬件的元件的示意性线路图。图9是图3的硬件的元件的示意性线路图。图10是带有相关数据结构的示例性矩阵的图示。图11是示出由图3的硬件所执行的操作的控制逻辑时序图。图12是图3的硬件的元件的示意性线路图。图13是由图3的硬件所实施的示例性计划结构。
具体实施例方式现在将结合示例性硬件来对本发明进行说明,所述示例性硬件是提供用来辅助理解本发明的教示的。参见附图,首先参见图3和图4,在图3和图4中提供硬件100用于执行算术运算。硬件100设计成在处理矩阵时避免对零条目进行操作。这需要执行诸如存储或加载零值至存储器的操作,避免通过共享的总线移动它们或者避免实际上使用零值进行算术运算。图4的硬件组件108包含能够通过处理器总线110偶联至外部硬件元件的硬件100。处理器总线110允许在硬件100和外部硬件元件之间进行数据交换,所述外部硬件元件例如可以包含处理器、缓冲储存器(cache)、SDRAM控制器、SDRAM等。稀疏数据结构在计算机科学和工程应用中的一个主要用途是存储稀疏矩阵,系数矩阵的主要应用是直接或迭代方法的联立式的系统的解决。在这些直接或迭代方法的核心的中心操作是通过对稀疏矩阵乘以密集向量来产生密集结果向量。所述计算的形式是y=Ax,其中A是稀疏矩阵,y和X是密集向量。下面是示例的稀疏矩阵-向量乘法。
权利要求
1.用于对存储在存储器中的压缩矩阵格式进行算术运算的硬件,所述压缩矩阵格式包括位图,所述位图指示所述矩阵中的条目是否为零,所述硬件包括 计划机,其能够运行以基于指示所述矩阵中的条目是否为零的所述位图来生成指令计划;以及 算术线路,其构造成根据所产生的计划来使用非零值对所述矩阵执行算术运算。
2.如权利要求I所述的硬件,其中,所述算术线路是单指令多数据(SIMD)浮点单元。
3.如权利要求I或2所述的硬件,进一步包括构造用于接收所述位图的软件接口。
4.如权利要求3所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的位图分块的片的数量。
5.如权利要求3或4所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的行的数量。
6.如权利要求3至5中任一项所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的列的数量。
7.如权利要求3至6中任一项所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的非零条目的数量。
8.如权利要求3至7中任一项所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的分块的片的行的数量。
9.如权利要求3至8中任一项所述的硬件,其中,所述软件接口能够运行以读取所述矩阵中的分块的片的行的数量。
10.如权利要求3至9中任一项所述的硬件,其中,所述软件接口能够运行以读取含有所述矩阵的非零数据元的第一阵列的基本地址。
11.如权利要求3至10中任一项所述的硬件,其中,所述软件接口能够运行以读取保持含有非零片的行条目的第二阵列的基本地址。
12.如权利要求3至11中任一项所述的硬件,其中,所述软件接口能够运行以读取含有非零片的列地址的第三阵列的基本地址。
13.如权利要求3至12中任一项所述的硬件,其中,所述软件接口能够运行以读取保持所述位图的第四阵列的基本地址。
14.如权利要求10至13中任一项所述的硬件,其中,所述第一、第二、第三和第四阵列存储在外部存储器内。
15.如权利要求3至14中任一项所述的硬件,进一步包括寄存器用于存储通过所述软件接口接收的数据。
16.如权利要求15所述的硬件,进一步包括映射的存储器接口用于促进将通过所述软件接口接收的数据写入所述寄存器。
17.如权利要求16所述的硬件,其中,所述寄存器存储存储器映射。
18.如权利要求15至17中任一项所述的硬件,其中,寄存器存储用于执行系数矩阵向量产物(SMVM)的命令。
19.如权利要求18所述的硬件,其中,所述命令包括启动SMVM的命令。
20.如权利要求18或19所述的硬件,其中,所述命令包括暂停SMVM计算的命令。
21.如权利要求18至20中任一项所述的硬件,其中,所述命令包括使得暂停的SMVM计算重新开始的命令。
22.如权利要求18至21中任一项所述的硬件,其中,所述命令包括使得暂停的SMVM计算终止的命令。
23.如权利要求18至22中任一项所述的硬件,其中,所述命令包括复位寄存器的命令。
24.如权利要求18至23中任一项所述的硬件,其中,所述命令包括停止命令。
25.如前述权利要求中任一项所述的硬件,其中,所述计划机构造成产生一系列待评价的非零部分产物,以及从所述位图产生的相关列和行地址。
26.如权利要求25所述的硬件,其中,由计划机产生的计划根据位图被压缩。
27.如前述权利要求中任一项所述的硬件,其中,所述计划机包括多路器阵列。
28.如前述权利要求中任一项所述的硬件,其中,所述计划机包括多个位片。
29.如权利要求28所述的硬件,其中,所述多路器具有相关查询表(LUTs)。
30.如前述权利要求中任一项所述的硬件,其中,所述计划机形成可编程处理器的一部分。
31.如前述权利要求中任一项所述的硬件,其中,所述计划机进一步包括迭代计数器,所述迭代计数器能够运行以确定所需算术迭代的数量。
32.如权利要求31所述的硬件,其中,所述迭代计数器包括多个全加法器。
33.如权利要求32所述的硬件,其中,所述迭代计数器进一步包括或门。
34.如前述权利要求中任一项所述的硬件,进一步包括构造成用于产生控制信号的控制器。
35.如权利要求34所述的硬件,其中,所述控制器构造用于将控制信号施加至控制算术运算的算术线路。
36.如权利要求35所述的硬件,其中,所述控制信号包括用于加载y向量条目的信号。
37.如权利要求35或36所述的硬件,其中,所述控制信号包括用于加载位图的信号。
38.如权利要求35至37中任一项所述的硬件,其中,所述控制信号包括用于产生计划的信号。
39.如权利要求35至38中任一项所述的硬件,其中,所述控制信号包括用于加载X向量条目的信号。
40.如权利要求39所述的硬件,其中,所述控制信号包括用于从存储器读取矩阵条目的信号。
41.如权利要求40所述的硬件,其中,所述控制信号包括用于选择与各矩阵条目相乘的正确X向量条目的信号。
42.如权利要求41所述的硬件,其中,所述控制信号包括用于评测部分产物的信号。
43.如权利要求42所述的硬件,其中,所述控制信号包括用于评测算术的信号。
44.如权利要求42所述的硬件,其中,所述控制信号包括用于选择待更新的正确y值的信号。
45.如权利要求44所述的硬件,其中,所述控制信号包括用于将内容写至外部存储器的信号。
46.如权利要求35至45中任一项所述的硬件,其中,所述控制器构造成用于检测能够导致数据风险的数据依赖性。
47.如权利要求46所述的硬件,其中,所述控制器构造成停止数据路径,直到所述数据依赖性已经解决。
48.如权利要求35至47中任一项所述的硬件,其中,所述控制器能够运行以暂停操作,以便等待来自外部总线、数据高速缓存器或外部SDRAM的数据。
49.如前述权利要求中任一项所述的硬件,其中,所述计划机构造成执行前瞻以解决依赖性。
50.如权利要求28所述的硬件,其中,在由计划机使用以产生在所述计划中使用的地址的行和列地址查询表(LUTs)是可编程的。
51.如权利要求I至50中任一项所述的硬件,其中,从所述位图解码的行和列的数量是可编程的。
52.如权利要求I至51中任一项所述的硬件,其中,所述位图能够用于产生一系列的逻辑和/或算术指令和阵列基准用于不同于稀疏矩阵向量产物的操作。
53.一种硬件组件,其包括如权利要求I至52中任一项所述的硬件。
54.如权利要求53所述的硬件组件,进一步包括处理器。
55.如权利要求53或54所述的硬件组件,进一步包括高速缓存器。
56.如权利要求53至55中任一项所述的硬件组件,进一步包括SDRAM控制器。
57.如权利要求53至56中任一项所述的硬件组件,进一步包括SDRAM。
58.如权利要求54至57中任一项所述的硬件组件,进一步包括用于所述硬件和其他硬件元件的通信的总线。
59.一种将如权利要求I至52中任一项所述的硬件改造成存在的硬件组件的方法,所述方法包括使得所述硬件与其他硬件组件通过总线进行通信。
60.一种构造硬件组件的方法,所述方法包括通过总线将如权利要求I至52中任一项所述的硬件与至少一个其他硬件元件通信。
全文摘要
用于执行一系列算术运算的硬件。所述硬件包括计划机,其能够运行以基于指示所述矩阵中的条目是否为零的所述位图来生成指令计划。所述硬件还包括算术线路,所述算术线路构造成根据所述计划来对所述矩阵执行算术运算。
文档编号G06F9/302GK102918495SQ201180012812
公开日2013年2月6日 申请日期2011年1月7日 优先权日2010年1月7日
发明者大卫·莫洛尼 申请人:线性代数技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1