处理器.pdf

上传人:00062****4422 文档编号:1282258 上传时间:2018-04-12 格式:PDF 页数:33 大小:701.82KB
返回 下载 相关 举报
摘要
申请专利号:

CN200980108397.3

申请日:

2009.02.11

公开号:

CN101971139A

公开日:

2011.02.09

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 9/312申请公布日:20110209|||实质审查的生效IPC(主分类):G06F 9/312申请日:20090211|||公开

IPC分类号:

G06F9/312; H03M7/30

主分类号:

G06F9/312

申请人:

线性代数技术有限公司

发明人:

大卫·马洛尼

地址:

爱尔兰都柏林

优先权:

2008.02.11 GB 0802484.6

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

李春晖;李德山

PDF下载: PDF下载
内容摘要

本申请提供一种随机存取存储器中的压缩结构而无需提取并且解压缩整个压缩结构的方法。

权利要求书

1: 一种具有指令集架构的处理器, 所述指令集架构包括用于从随机存取存储器中存储 的压缩结构中提取数据值的至少一个加载指令, 所述至少一个加载指令包括操作码和标识 所述数据值在所述结构的非压缩形式中的位置的至少一个操作数, 所述处理器适于将所述 数据值在非压缩形式中的位置转换为所述数据值在所述压缩结构中的存储器位置, 并且还 适于从所述存储器位置中提取所述数据值。
2: 根据权利要求 1 所述的处理器, 其中, 所述结构的非压缩形式包括简单值和复杂值, 并且所述压缩结构仅包括复杂数据值。
3: 根据权利要求 1 或权利要求 2 所述的处理器, 其中, 所述压缩数据结构包括表示复杂 数据值在所述结构的非压缩形式中的位置的映射。
4: 根据权利要求 3 所述的处理器, 其中, 所述处理器被配置为在传送所请求的值之前 获得所述压缩数据结构的所述映射。
5: 根据权利要求 3 或 4 所述的处理器, 其中, 所述复杂数据值为非零值。
6: 根据权利要求 3 至 5 中任一项所述的处理器, 其中, 所述处理器根据所述映射确定所 请求的值是简单值还是复杂值。
7: 根据权利要求 6 所述的处理器, 其中, 所述至少一个操作数包括所述压缩结构在存 储器中的基地址。
8: 根据权利要求 7 的处理器, 其中, 在所请求的值为复杂值的情况下, 所述处理器被配 置为根据所述映射对所请求的值前面的复杂值的数量进行计数并且将该数量作为偏移与 所述基地址相加, 并相应地设置所述随机存取存储器存取地址。
9: 根据权利要求 8 的处理器, 其中, 所述计数是使用多个加法器来实现的。
10: 根据权利要求 8 的处理器, 其中, 在所请求的值为简单值的情况下, 所述处理器被 配置为返回所述简单值而不存取所述存储器。
11: 根据任一前述权利要求所述的处理器, 其中, 所述处理器适于响应于所述指令来加 载多个数据值。
12: 根据权利要求 1 所述的处理器, 其中, 所述数据值是浮点数。
13: 根据权利要求 12 所述的处理器, 其中, 所述数据值是单精度浮点数。
14: 根据权利要求 12 所述的处理器, 其中, 所述数据值是双精度浮点数。
15: 根据权利要求 12 所述的处理器, 其中, 所述数据值是扩展精度浮点数。
16: 根据权利要求 12 所述的处理器, 其中, 所述数据值是 128 比特精度浮点数。
17: 根据权利要求 1 所述的处理器, 其中, 所述数据值是整型数。
18: 根据权利要求 1 所述的处理器, 其中, 所述数据值是浮点、 浮点矩阵、 浮点矢量和固 定点整型数的组合。 20. 一种将至少一个数据值从数据结构内加载到处理器中的方法, 其中, 所述数据结构 以仅存在复杂数据值的压缩形式存储于存储器中, 所述压缩形式还包括指定所述复杂数据 值在非压缩结构中的位置的映射, 所述方法包括以下步骤 : 接收要加载到所述非压缩结构 中的所述至少一个数据值的至少一个位置, 使用所述映射来识别所述至少一个数据值在所 述压缩结构内的至少一个存储位置, 并且使用所述至少一个存储位置将所述至少一个数据 值从所述存储器加载到所述处理器。 21. 根据权利要求 20 所述的方法, 其中, 所述方法仅加载所识别出的至少一个位置的 2 数据值。 22. 根据权利要求 21 所述的方法, 其中, 所述方法包括在提取所述至少一个数据值之 前获得所述压缩数据结构的映射的步骤。 23. 根据权利要求 22 所述的方法, 其中, 所述获得映射的步骤包括从所述存储器中提 取映射。 24. 根据权利要求 21 至 23 中任一项所述的方法, 其中, 所述复杂数据值为非零值。 25. 根据权利要求 21 至 24 中任一项所述的方法, 其中, 在所请求的数据值为复杂值 的情况下, 所述方法被配置为根据所述映射对所请求的数据值前面的复杂值的数量进行计 数, 并相应地设置所述随机存取存储器存取地址。 26. 根据权利要求 21 至 25 中任一项所述的方法, 其中, 所述方法在所述处理器与存储 器之间每次传送多个数据值。 27. 根据权利要求 21 至 24 中任一项所述的方法, 其中, 在所接收到的至少一个位置对 应于简单值在所述非压缩结构中的位置的情况下, 所述方法被配置为直接将所述简单值提 供给所述处理器。 28. 根据权利要求 21 至 27 中任一项所述的方法, 其中, 所述数据值是浮点数。 29. 根据权利要求 28 所述的方法, 其中, 所述数据值是单精度浮点数。 30. 根据权利要求 28 所述的方法, 其中, 所述数据值是双精度浮点数。 31. 根据权利要求 28 所述的方法, 其中, 所述数据值是扩展精度浮点数。 32. 根据权利要求 28 所述的方法, 其中, 所述数据值是 128 比特精度浮点数。 33. 根据权利要求 21 至 27 中任一项所述的方法, 其中, 所述数据值是整型数。 34. 根据权利要求 21 所述的方法, 其中, 所述数据值是浮点、 浮点矩阵、 浮点矢量和固 定点整型数的组合。 35. 一种具有数据传送功能部件的数据处理机, 所述数据传送功能部件用于将至少一 个数据值从压缩结构加载到存储器中, 所述压缩结构包括仅存在复杂数据值的多个数据值 以及标识所述复杂数据值在等效非压缩结构中的位置的映射, 所述数据传送功能部件响应 于指令来加载所述数据值, 所述指令标识所述数据值在所述等效非压缩结构中的位置, 所 述数据传送功能适于生成相对于所标识的位置的存储器偏移, 并且适于使用所述偏移来从 存储器传送数据值。 36. 根据权利要求 35 所述的数据处理机, 其中, 所述数据处理机是处理器。 37. 根据权利要求 35 的数据处理机, 其中, 所述数据机是状态机。 38. 一种具有指令集架构的处理器, 所述指令集架构包括用于将至少一个数据值从非 压缩数据结构存储到随机存取存储器中的对应压缩数据结构中的至少一个存储指令, 所述 至少一个存储指令包括操作码以及标识所述至少一个数据值在所述非压缩数据结构中的 位置的至少一个操作数, 所述处理器适于 : 使用示出数据值在所述压缩结构内的位置的映 射来将所述至少一个数据值在非压缩形式中的位置转换为所述数据值在所述压缩结构中 的存储器位置, 并且还适于在该存储器位置处存储所述至少一个数据值。 39. 根据权利要求 38 所述的处理器, 其中, 所述非压缩结构包括简单值和复杂值, 并且 所述压缩结构仅包括复杂数据值。 40. 根据权利要求 38 或权利要求 39 所述的处理器, 其中, 所述映射是所述压缩数据结 3 构的一部分, 并且表示复杂数据值在所述非压缩数据结构中的位置。 41. 根据权利要求 40 所述的处理器, 其中, 所述处理器被配置为在存储所请求的值之 前从存储器获得所述压缩数据结构的映射。 42. 根据权利要求 40 或 41 所述的处理器, 其中, 所述复杂数据值为非零值。 43. 根据权利要求 38 至 42 中任一项所述的处理器, 其中, 所述处理器被配置为根据所 述映射对所述数据值前面的复杂值的数量进行计数, 并相应地设置所述随机存取存储器存 取地址。 44. 根据权利要求 43 所述的处理器, 其中, 所述计数是使用一系列加法器来实现的。 45. 根据权利要求 38 至 44 中任一项所述的处理器, 其中, 所述处理器响应于所述操作 码来每次存储多个数据值。 46. 根据权利要求 38 至 45 中任一项的处理器, 其中, 所述至少一个操作数包括随机存 取存储器中的所述压缩数据结构的基地址。 47. 根据权利要求 38 至 47 中任一项的处理器, 其中, 所述压缩数据结构中的多个数据 值能够通过一条指令被存储。 48. 根据权利要求 38 所述的处理器, 其中, 所述数据值是浮点数。 49. 根据权利要求 48 所述的处理器, 其中, 所述数据值是单精度浮点数。 50. 根据权利要求 48 所述的处理器, 其中, 所述数据值是双精度浮点数。 51. 根据权利要求 48 所述的处理器, 其中, 所述数据值是扩展精度浮点数。 52. 根据权利要求 48 所述的处理器, 其中, 所述数据值是 128 比特精度浮点数。 53. 根据权利要求 38 所述的处理器, 其中, 所述数据值是整型数。 54. 根据权利要求 38 所述的处理器, 其中, 所述数据值是浮点、 浮点矩阵、 浮点矢量和 固定点整型数的组合。 55. 一种将数据值从处理器插入存储器中的压缩结构中的方法, 在所述压缩结构中仅 存在复杂数据值, 所述压缩结构包括标识所述复杂数据值在等效非压缩结构中的位置的映 射, 所述方法包括以下步骤 : 接收要被插入的所述数据值在所述非压缩结构中的位置, 使用 所述映射来根据所接收到的位置识别所述数据值在所述压缩结构中的等效位置, 以及使用 所述等效位置来将所述数据值存储在所述存储器中。 56. 根据权利要求 55 所述的方法, 其中, 所述方法包括在存储所述数据值之前获得所 述压缩数据结构的所述映射的步骤。 57. 根据权利要求 56 所述的方法, 其中, 所述获得映射的步骤包括从所述存储器中提 取所述映射。 58. 根据权利要求 55 至 57 中任一项所述的方法, 其中, 所述复杂数据值为非零值。 59. 根据权利要求 55 至 58 中任一项所述的方法, 其中, 在所请求的数据值为复杂值 的情况下, 所述方法被配置为根据所述映射对所请求的数据值前面的复杂值的数量进行计 数, 并相应地设置所述随机存取存储器存取地址。 60. 根据权利要求 55 至 59 中任一项所述的方法, 其中, 所述方法在所述处理器与存储 器之间每次传送多个双数据值。 61. 根据权利要求 55 至 60 中任一项所述的方法, 其中, 所述数据值是浮点数。 62. 根据权利要求 61 所述的方法, 其中, 所述数据值是单精度浮点数。 4 63. 根据权利要求 61 所述的方法, 其中, 所述数据值是双精度浮点数。 64. 根据权利要求 61 所述的方法, 其中, 所述数据值是扩展精度浮点数。 65. 根据权利要求 61 所述的方法, 其中, 所述数据值是 128 比特精度浮点数。 66. 根据权利要求 55 至 60 中任一项所述的方法, 其中, 所述数据值是整型数。 67. 根据权利要求 55 所述的方法, 其中, 所述数据值是浮点、 浮点矩阵、 浮点矢量和固 定点整型数的组合。 68. 一种具有数据传送功能部件的数据处理机, 所述数据传送功能部件用于将数据值 直接存储到存储器中的压缩结构中, 所述压缩结构包括仅存在复杂数据值的多个数据值以 及标识所述复杂数据值在等效非压缩结构中的位置的映射, 所述数据传送功能部件响应于 指令来存储所述数据值, 所述指令标识所述数据值在所述等效非压缩结构中的位置, 所述 数据传送功能适于生成相对于所标识的位置的存储器偏移, 以及适于使用所述偏移来存取 所述存储器以将所述数据值存储到存储器中。 69. 根据权利要求 68 所述的数据处理机, 其中, 所述数据处理机是处理器。 70. 根据权利要求 68 所述的数据处理机, 其中, 所述数据机是状态机。 5 CN 101971139 A 说 明 处理器 书 1/8 页 技术领域 本申请涉及的领域是处理器以及在存储器与处理器之间传送数据的方法。 更具体 地, 本申请针对存取存储器中的压缩数据结构内的单个值、 或者值的邻近组或非邻近组而 无需检索并且解压缩整个压缩结构的方法。 [0001] 背景技术 [0002] 在设计计算系统时有个基本问题, 就是使存储器存取的时间成本最小化。 [0003] 这是关于计算机系统设计的根本限制, 因为不论使用何种存储器技术支持计算, 并且不论使用何种技术将该存储器连接到处理器, 都存在关于在给定时间内在处理器与存 储器之间可以传送多少信息的最大限制 ( 亦即可用的存储器带宽 ), 可用的存储器带宽对 计算机能力的限制常常称为 “存储墙 (memory-wall)” 。 [0004] 本申请寻求通过用数据压缩来增加有效存储器带宽并且因此使 “存储墙” 的限制 最小化。 已知采用数据压缩来减少 “存储墙” 效应。然而, 编程人员使用压缩存储器子系统 的问题在于, 数据可以被施予运算之前必须被解压缩, 如图 1 的系统所示。这通常涉及将来 自存储器 10 的一部分的压缩数据读取到处理器 16 的寄存器文件中, 使用从程序存储器 18 检索到的程序代码对其进行解压缩, 并且将解压缩后的数据存储在存储器 12 的另一未压 缩部分中。 [0006] 然而, 这种方案的缺点在于, 需要额外的存储器带宽来读取压缩数据, 将其存储为 未压缩的形式, 并且将其读回到处理器以施予运算。还需要额外的存储器容量来保存未压 缩的数据, 并且解压缩处理将对处理器寄存器文件增加压力。显见, 这是一种次优方案, 其 暗示的内容解释了为何这种压缩存储器子系统依旧是学术探奇而未进入主流微处理器产 业。 [0007] EP-0240032-A2 公开了一种矢量处理器, 包括用于存储并且检索矢量数据的存储 器。 矢量处理器包括 : 多个矢量寄存器, 其中每一个都能够并行读取或者写入多个 (m 个 ) 矢 量元素 ; 至少一个掩码 (mask) 矢量寄存器, 能够并行处理 m 个掩码比特 ; 传递部分, 连接到 存储器、 多个矢量寄存器和掩码矢量寄存器并且响应于指令用于将来自存储器内规则分开 的地址位置的矢量元素传递到与有效掩码比特相对应的所选矢量寄存器的所选存储位置。 虽然这种方法有用, 但局限在于矢量数据的存储 / 检索限于整个寄存器。 [0008] 寄存器模块化是一种用于加速矩阵代数 ( 尤其是有限元 ) 的有用技术, 然而, 其缺 TM 点在于, 对于很多矩阵 ( 例如, 如搜索引擎诸如 GOOGLE 中所使用的 ) 必须添加零填充, 减 少了有效 FLOPS( 每秒浮点运算 ), 并且增加了存储器带宽需求, 但这二者在现代计算系统 中皆为短缺的益处。 [0009] 实际上, 在正分别以每年 50%和 7%的高度相异的速率增长的处理能力与存储器 带宽之间的增长的鸿沟, 如上所述, 被称为 “存储墙” 。已有很多人声称 “突除” 了存储墙, 他 们通常包括使用缓存来减少必须离开芯片的概率, 和 / 或使用多线程从而可以减小与离开 [0005]

说明书


芯片相关联的等待时间和损失。

     这些方法只是掩盖了有限外部存储器带宽的问题, 但未解决该问题, 并且通常依 赖于展现出充足的数据位置的数据集、 和 / 或展现出充足的线程级并行性 (TLP) 的程序, 以 便根本上有效, 并且这可能并非对于所有问题都是正确的, 并且当然并非总是事先知道的。 实际上, 很多更大更被关注的问题既不展现出充足的数据位置也不展现出 TLP, 整个系统 的吞吐量退化到受限于外部存储器带宽的地步, 并且已经在芯片上添加的额外硬件是无用 的。 为此, 大型工程应用将处理器性能拉低到制造商所号称的峰值性能规格的 1%或更低并 不罕见。 发明内容 本申请寻求增加有效的存储器带宽, 并且通过以压缩格式存储数据来使 “存储墙” 对计算的局限最小化。这是通过提供压缩和解压缩装置来实现的, 该压缩和解压缩装置适 合于在对必须存储在存储器中的庞大数据集进行运算的很多应用 ( 包括例如计算机图形、 刚体动力学、 有限元分析和其它科学工程应用 ) 中使用的块结构数据。 为了进一步减少 “存 储墙” 效应, 处理器流水线也被修改为利用压缩, 将处理速率提高超过仅通过对压缩数据进 行运算可以实现的速率。
     更特别地, 本申请允许通过使用值映射以及被指定为指令的一部分的相关联字段 比特来随机存取存储器中存储的压缩结构中的各个值。
     因此, 本申请的第一实施例提供一种如权利要求 1 和 38 中详述的处理器。本申请 还提供一种如权利要求 21 和 56 中详述的方法。本申请进一步提供一种如权利要求 35 和 69 中详述的数据处理机。在从属权利要求中提供了有利的实施例。
     附图说明
     现在参照附图描述本申请, 其中 :
     图 1 是现有技术中已知的处理器布置,
     图 2 是本申请的处理器适用于处理的一系列变换,
     图 3 是根据本申请实施例的示例性处理器,
     图 4 示出可以由图 3 的处理器采用的示例性压缩方法,
     图 5 示出图 3 的处理器可以如何将存储器结构压缩为适于 32 比特 RAM,
     图 6 示出可以由图 3 的处理器采用的示例性指令代码的格式,
     图 7 示出图 3 的处理器如何可以将图 5 的相同存储器结构压缩为适于 64 比特 RAM,
     图 8 是图 3 的处理器可以采用的用于生成地址的示例性电路,
     图 9 以示例性值展示图 8 的运算,
     图 10 示出图 3 的处理器中可以采用的示例性加载 / 存储电路,
     图 11 是用于图 10 中的地址序列生成的说明,
     图 12 是示出图 10 的电路的运算模式的示例性时序图,
     图 13 是图 3 的处理器的更详细的框图,
     图 14 是指令格式,
     图 15 是示出在包括用于加载 / 存储压缩数据的指令的示例性处理器中可用的各种操作码指令的表,
     图 16 是用于基于非压缩指令的地址生成的电路,
     图 17 是用于生成由处理器的压缩方法采用的比特的电路,
     图 18 示出对于不同类型的矩阵结构可以由图 3 的示例性处理器提供的计算节省,
     图 19 是用于加载 / 存储压缩数据的适用于图 2 的处理器的电路,
     图 20 示出端口宽度对于存储器组织的效果,
     图 21 示出对图 20 中所示的地址的地址生成的所得效果, 以及
     图 22 是示出图 20 的效果的示例性时序图。 具体实施方式
     对压缩的需求的典型示例是使用矩阵表示和线性代数运算符号在计算机图形和 相关应用中在 2 维屏幕上模拟现实。对源数据矩阵的运算常常包括图 2 所示的类型的旋转 和其它变换并且常常是该类旋转和其它变换的序列。 可见, 这些矩阵包含大量零, 这些零需 要大量存储器带宽来加载 / 存储却无助于使用整个矩阵执行的计算的结果, 也就是说从算 术观点看它们是简单值。 如图 3 所示, 本申请提供一种改进的处理器, 其能够对存储器中的压缩数据直接 进行运算, 而无需解压缩处理, 因此无需为了处理将压缩数据解压缩进入缓冲区域以用于 进一步处理所需的额外的未压缩数据缓冲器、 额外的处理器以及存储器带宽。 相反, 压缩和 解压缩处理整合于处理器的存储器存取结构中。
     本申请允许任意大小和复杂度的压缩结构, 例如包括但不限于以下内容的任意组 合: 浮点矩阵、 浮点矢量、 浮点标量、 符号整型数、 无符号整型数、 封装字符和地址指针。
     适当地, 压缩和解压缩逻辑嵌入在处理器加载 / 存储端口内, 从而在不必担心如 何基于逐个交易将数据读取自 / 写入到压缩存储器子系统的细节方面而言, 使得编程人员 的工作更容易。
     在此所描述的方案采用值映射来以图 4 所示的方式对稠密子矩阵中的零和非零 项进行编码。使用这样的值映射在先前已经描述于相关申请 (2007 年 4 月 11 日提交的 US60/911273、 2007 年 4 月 11 日提交的 US60/911274 以及 UK0704999.2 和 UK0704976.0 还 有要求它们的优先权的相应 PCT 申请 ) 中, 其全部内容通过引用而合并到此。在所示示例 中, 实现了 37.5%的压缩。所提出的方案的优点在于 : 待存储的矩阵中的每个零项由 1 比 特而非 32 比特单精度、 64 比特双精度等数表示。只要在存储具有 32 比特单精度项的稀疏 矩阵的 32 比特存储器系统中每个稠密矩阵中的 1 个或更多项是零, 就实现了总体压缩。
     虽然上述基本压缩方法受到关注并且带来优点, 但在大多数实际应用中, 编程人 员希望存储的不只是稀疏矩阵, 而且常常需要存储并且检索在复杂数据结构中存储的数 据。挑战在于, 如何整合压缩方案使得其在处理混合压缩 / 未压缩数据结构时可以提供与 前述方案相似的性能和存储器压缩益处, 而不过度加重编程人员的负担。
     本申请提供一种随机存取较大结构中的数据的方式, 该较大结构可以以前述方式 压缩, 但也可以包含未压缩浮点数据或整型数。该方案允许的基本结构包含要由 32 比特整 型数 ( 值映射 ) 表示的三十二个以下的 32 比特项。原则上, 该方案不限于 32 比特值或具 有 32 项的结构, 值映射的大小和项的数目可以选择为满足处理器设计的要求。如前, 值映
     射中的 1 比特的存在表示在存储器中该位置处存在复杂浮点值或整型数值。由于每个值被 表示为单个比特, 因此值映射也可以称为比特映射 (bitmap, 位图 )。图 5 示出如何在存储 器中存储混合 ( 压缩 / 未压缩 ) 结构的示例。
     所提出的压缩结构解压缩逻辑的运算的基本原理是 : 值映射用于表示简单值的存 在性。为了本申请的目的, 简单值是 0.0 单精度 (32 比特 ) 浮点值 ( 十六进制 00000000), 然而, 同一方案可以容易地扩展为双精度浮点或更高。或者, 如果在特定数据集中存在比 0.0 更重要的某个其它值, 则在此提出的方案可以容易地扩展为允许值映射 0 表示这个并 非 0.0 的值, 例如某些数据集可能包含很多 1.0 值。
     从 RAM 地址可见, 对于数据的示例性布置, 在图 5 中可见, 对于 32 比特值映射中的 每个非零项 (sx, sy, sz, x0-x3, y0-y3, z0-z3), 1 的偏移量被加到基地址。实际上, 存储器中 下一结构的值映射和基地址二者皆可以嵌入在当前结构中并且由编程人员检索。
     为了使用压缩结构, 有益的是减少编程人员在存储和检索以压缩形式存储的数据 时的开销。在本申请中, 通过隐藏在处理器 ( 其可以例如是精简指令集计算机 (RISC) 处理 器 ) 的加载 / 存储单元 (LSU) 地址生成器中存储和检索压缩数据的复杂性来使编程开销最 小化。地址生成器允许编程人员指定要从压缩结构检索数据的哪些元素。进而, LSU 能够 从存储器中的压缩结构检索所请求的元素, 而不用解压缩整个压缩结构。
     因此, 在此处描述的示例性布置方式中, 地址生成器允许编程人员使用图 6 所示 的在加载 / 存储操作码中包括的简单的 8 比特字段掩码来指定要从 32 项压缩结构的 8 个 可能的 4 项字段 ( 矢量 ) 中加载 / 存储哪些。在此处描述的示例性布置方式中, 用于加载 压缩矢量的指令是 LDCV, 而用于存储压缩矢量的指令是 STCV。
     这种示例性布置方式允许编程人员指定数据将被加载自 / 存储到的 4 项矢量寄存 器文件 (VRF) 寄存器。地址生成器将把压缩结构偏移量加到整型数寄存器文件 (IRF) 中的 基地址寄存器以及值映射寄存器也在 IRF 中。操作码于是包含紧接的 8 比特值 f[7:0], 该 8 比特值用于选择八个四项压缩矢量中的哪些实际上加载自 / 存储到 VRF。
     由于 LSU 端口宽度通常受限, 因此在应用于 64 比特的示例性布置方式的情况下, 应当理解, LDCV 和 STCV 指令必须占用多个时钟周期。结果, 从 LSU 端口可见, 值映射按 f 比 特的顺序以迭代方式被解码, 使得 64 比特压缩项被写入到或读取自正确的 VRF 寄存器并且 存储到或读取自正确的存储器 (RAM) 地址。图 7 示出 64 比特存储器子系统中典型压缩结 构在 RAM 中的布局。
     应理解, 该方法和布置方式不限于 32 比特字或 64 比特宽的存储器, 并且相似的布 局对于包括 96 和 128 比特宽的存储器等的其它存储器宽度是可能的, 然而, 为了简化解释, 这些布置方式组织在此将不详细讨论。
     VRF 可以用作完整压缩结构的驻留区域, 用于在压缩加载的情况下, 在完整压缩结 构的各部分分散到处理器内部的其它寄存器文件之前, 或者用于将压缩结构存储到附连于 LSU 端口的外部 RAM。
     现将参照图 8 讨论用于 LSU 的示例性逻辑, 图 8 示出 LSU 压缩结构地址生成器的用 于在给定的基地址 (base addr) 从压缩结构内加载值的逻辑。第一行加法器 50( 压缩器 ) 被提供以将排列为八个 4 比特值映射字段 (bm7-bm0) 的 32 比特的值映射结构压缩为八个 3 比特数, 其中每一个都表示在给定的 4 比特值映射中的 1 的数量。第二行加法器 52 被提供以将压缩器的行的结果相加以生成每个值映射的开始地址, 使得可以通过在压缩加载或 存储操作码中应用适当的 f 比特来根据需要对每个值映射字段进行独立寻址。 “与” (AND) 门 54 的行被提供以根据压缩加载 / 存储操作码中的 f( 字段 ) 比特集的状态来屏蔽掉不需 要的字段。然后这些 AND 门的输出由另一组加法器 56 进行求和, 以生成必须基于操作码 f 比特来加载自 / 存储到存储器的 32 比特字的总数 (word cnt)。最后的 8 ∶ 1 复用器级 58 受控于 8 个字段使能, 其允许所选择的所需值映射地址被依次施加到最后的加法器 60, 以 便生成所需的 RAM 地址。
     图 9 示出示例压缩数据结构的各种信号的值。所示地址是根据所选择的 IRF( 整 型数寄存器文件 ) 寄存器中的值映射而统计计算出的, 并且然后根据在压缩加载或存储指 令中指定的 f 比特的级来依次应用。
     图 10 示出用于压缩加载 / 存储操作的完整的地址生成逻辑, 包括计数器和有限状 态机, 以生成所需的控制信号。
     选择要被应用于地址选择复用器的地址序列的 fen[2:0] 信号根据图 11 所示的真 值表操作。
     如图 12 所示, 不仅生成由 LSU 地址生成器生成的压缩加载 / 存储操作所需的源地 址 / 目的地址, 而且还生成相对于在压缩加载 / 存储操作中指定的地址的用于源 / 目的 VRF 行的源 / 目的地址。在 64 比特 LSU 总线的情况下, 可以在压缩加载 / 存储指令中寻址多达 2 个 VRF 行。虽然在该示例性布置方式中, VRF 被选取为在压缩加载 / 存储操作中加载或者 存储的数据的源 / 目的, 但在原理上, 可以同样地选取整型数寄存器文件 (IRF) 或标量寄存 器文件 (SRF)。 图 12 的示例性时序图清楚地示出 : 压缩加载 / 存储操作占用多个周期来执行, 并 且所有所需的控制信号是根据与在压缩加载 / 存储控制字中指定的 f 比特耦合的用于压缩 结构的 IRF 值映射描述符的知识而生成的。控制信号的序列是使用 f 比特以及值映射结合 受输入到地址生成器的时钟输入驱动的计数器而推导出的。
     该图示出加载和存储操作二者的行为, 这两种操作之间的仅有差别是 :
     1. 在压缩加载的情况下, 生成用于从附连到 LSU 端口的 RAM 读取的读信号, 并且生 成用于适当的 VRF 行 ( 其充当 RAM 内容的目的地 ) 的写信号。实际上, 一系列 RAM 读取和 VRF 写入可以根据 IRF 中的值映射的状态以及压缩加载操作码中的 f 比特集而生成。
     2. 类似地, 在压缩存储的情况下, 一系列 VRF 读取和 RAM 写入可以根据 IRF 值映射 的状态以及压缩存储操作码中的 f 比特集而生成。
     图 13 示出 SVU 架构的框图, SVU 架构的具有压缩加载 / 存储操作的加载存储单元 (LSU) 形成一部分。可见, 主要外部接口去往 SVU 指令存储器、 连接到数据存储器库的 LSU 端口以及允许 SVU 寄存器和诊断信息经由处理器总线被读取 / 写入的诊断控制单元 (DCU)。
     指令字具有 7 个时隙, 允许它每周期控制 9 个功能单元中的多达 7 个功能单元, 如 图 14 所示。
     在该示例性实施例中, 128 比特指令的最左边的比特被反转以提供未来特征, 其余 127 比特被划分为多个字段, 每个字段控制处理器架构的优选实施例中包含的多达 9 个功 能单元中的一个。
     ·1× 判定执行单元 (PEU)
     ·1× 分支 / 重复单元 (BRU)
     ·2× 加载存储单元 (LSU)
     ·1× 矢量算术单元 (VAU)
     ·1× 标量算术单元 (SAU)
     ·2× 整型数算术单元 (IAU)
     ·1× 比较 / 移动单元 (CMU)
     不在指令字的直接控制之下的最终功能单元是诊断控制单元 (DCU), 其允许处理 器监视并且控制程序执行, 尤其是在异常条件和 / 或中断出现的情况下。
     示例性的 LSU 允许编程人员将矢量数据从存储器加载到 VRF 寄存器中。LSU 受控 于 24 比特操作码, 并且可以执行以下 8 种操作之一 :
     ·NOP 即不从存储器加载任何数据 ( 用于省电的时钟关闭 )
     ·LDVX 从存储器加载 4 元素未压缩矢量
     ·STVX 将 4 元素未压缩矢量存储到存储器
     ·LDCV 从存储器加载 4 元素压缩矢量
     ·STCV 将 4 元素压缩矢量存储到存储器 ·LDLI 将 16 比特立即加载到所指定的 IRF 寄存器的低 16 比特
     ·LDHI 将 16 比特立即加载到所指定的 IRF 寄存器的高 16 比特
     ·CPXI 将 IRF 值映射中字段 1-8 的大小 / 地址拷贝到 IRF 基地址寄存器
     图 15 示出 LSU 的示例性操作码表。
     图 16 示出未压缩加载 / 存储模式下的 LSU 的框图。在该模式下, bru hold 信号 防止 BRU 中的程序计数器 (PC) 前进, 直到已经完成加载 / 存储操作。这在加载和存储未在 单个周期中完成的情况下是重要的, 因为 4 个矢量元素必须在 1s 或 2s 中被传递, 而不是单 个周期中 4 个元素 (128 比特 )。
     图 17 示出用于非零值映射生成的值映射生成逻辑和去往 VRF 的加载 / 存储路径 的框图。每当将未压缩的 4 元素矢量从存储器加载到 VRF 时, 就使用 4 个比较器 (4×32 输 入 “或非” (NOR) 门 ) 的行来生成附加的 4 项非零值映射, 并且将其插入在相应的 VRF 行, 作为从存储器取得的数据。该 4 比特值映射项可以稍后用于将数据以压缩格式存储回存储 器, 并且通过消除对于零值的简单运算来使功率消耗最小化。
     此处描述的处理器架构的独特能力是支持以随机存取方式对压缩数据进行加载 和存储, 而无需检索整个压缩结构。 这种支持的原因在于, 很多受关注的应用对大量的稀疏 数据进行运算, 稀疏数据即包含大量零 ( 这些零必须从存储器取得并且当被运算时生成零 结果 ) 的数据。
     该架构中的主要假设在于, 要由处理器处理的所有数据都被封装为要在存储器中 存储的 4 元素矢量, 不论该数据是压缩的还是未压缩的, 也不论数据是否包括矩阵、 矢量和 封装的标量或整型数。基于这种假设, 编程人员可以将矩阵 / 矢量 / 标量 / 整型数数据组 织为 32 项压缩块, 其中, 仅有那些非零项被显式地存储。所有零值和非零值在非零值映射 中由 1 比特项表示, 其然后可以被用于将 32 项压缩 / 不压缩为 RAM 中的 32 或更少的 32 比 特字。
     图中所示的 3D 图形和游戏物理 ( 刚体动力学 ) 应用中使用的变换矩阵是很好的
     示例。图 2 详细示出与 8 个矩阵相对应的 32 比特值映射。
     在图 18 中可见, 图形变换矩阵包含大百分比的简单值 ( 零值 ), 允许实现超过 50%的数据压缩。
     压缩值映射用于允许使用图 19 所示的硬件来随机存取编程人员定义的复杂数据 结构。压缩加载操作允许编程人员从开始于在 IRF 中指定的基地址的地址收集由操作码中 的 8 比特字段指定的一系列多达 8×4 元素值。该硬件自动生成所需的地址和读取信号以 及在需要多周期加载的情况下 ( 例如, 如果必须从存储器加载多于 4 个非零 ) 生成用于保 持 BRU 的保持信号。与之对照, 在现有技术中, 使用需要以基地址和偏移量来设置多个寄存 器以允许复杂数据结构的索引的传统处理器架构来实现这种类型的复杂分散收集功能通 常是复杂的。而且, 这样的传统处理器架构不提供简单数据值的压缩。
     适当地, LSU 端口宽度是可经由在部分 6 中详述的 SVU LCR 寄存器独立配置的。 通 过允许在附连到 SVU LSU 端口的 /2/4 元素宽数据总线上在多个交易中加载 / 存储 4 元素 矢量, 端口宽度参数允许顶级 SoC( 片上系统 ) 互连相对于 SVU 的吞吐量而折衷, 如图 20 所 示。
     用于支持端口宽度参数化的附加地址最低有效位 (lsb) 的生成是使用计数器来 执行的, 所述计数器将 0、 1 或 2 地址最低有效位附加到由 LSU 生成的地址, 如图 21 所示。 图 22 示出端口宽度参数对存储到 SVU RAM 的 4 个元素的影响。在图 18 中可见, 图形变换矩阵包含大百分比的简单值 ( 零值 ), 允许实现超过 50%的数据压缩。
     压缩值映射用于允许使用图 19 所示的硬件随机存取编程人员定义的复杂数据结 构。压缩加载操作允许编程人员从开始于在 IRF 中指定的基地址的地址收集由操作码中的 8 比特字段指定的一系列多达 8×4 元素值。该硬件自动生成所需的地址和读取信号以及 在需要多周期加载的情况下 ( 例如, 如果必须从存储器加载多于 4 个非零 ) 生成用于保持 BRU 的保持信号。与之对照, 在现有技术中, 使用需要以基地址和偏移量来设置多个寄存器 以允许复杂数据结构的索引的传统处理器架构来实现这种类型的复杂分散收集功能通常 是复杂的。而且, 这样的传统处理器架构不提供简单数据值的压缩。
     适当地, LSU 端口宽度是可通过被提供为寄存器中的项的参数来独立配置的。通 过允许在附连到 SVU LSU 端口的 1/2/4 元素宽数据总线上在多个交易中加载 / 存储 4 元素 矢量, 端口宽度参数允许顶级 SoC 互连相对于 SVU 的吞吐量而折衷, 如图 20 所示。
     用于支持端口宽度参数化的附加地址最低有效位 (lsb) 的生成是使用计数器来 执行的, 所述计数器将 0、 1 或 2 地址最低有效位附加到由 LSU 生成的地址, 如图 21 所示。
     图 22 示出端口宽度参数对存储到 SVU RAM 的 4 个元素的影响。可见, 加载或存储 128 比特矢量所占用的周期数量当端口宽度为 1(32 比特 ) 时占用 4 个周期, 当端口宽度为 2(64 比特 ) 时占用 2 个周期, 当端口宽度为 4(128 比特 ) 时占用 1 个周期。
     虽然已经针对具有指令集 ( 该指令集具有用于在存储器与处理器之间执行数据 传送的所标识的操作码 ) 的处理器描述了本申请, 但应理解, 可以在程序存储中没有显式 指令集而是在状态机或其它装置的控制下执行加载和存储的情况下执行功能。 明显的优点 在于, 可以从存储器中的压缩结构检索一个或多个数据项, 而无需检索或解压缩整个压缩 结构。 相似地, 单个数据项可以在存储器中存储的压缩结构中被更新, 而无需检索或解压缩 整个压缩结构。
     词语 “包括 / 包含” 当用在本说明书中时是要指定所声明的特征、 整体、 步骤或组 件的存在, 但不排除一个或更多其它特征、 整体、 步骤、 组件或其群组的存在或添加。

处理器.pdf_第1页
第1页 / 共33页
处理器.pdf_第2页
第2页 / 共33页
处理器.pdf_第3页
第3页 / 共33页
点击查看更多>>
资源描述

《处理器.pdf》由会员分享,可在线阅读,更多相关《处理器.pdf(33页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101971139A43申请公布日20110209CN101971139ACN101971139A21申请号200980108397322申请日200902110802484620080211GBG06F9/312200601H03M7/3020060171申请人线性代数技术有限公司地址爱尔兰都柏林72发明人大卫马洛尼74专利代理机构北京集佳知识产权代理有限公司11227代理人李春晖李德山54发明名称处理器57摘要本申请提供一种随机存取存储器中的压缩结构而无需提取并且解压缩整个压缩结构的方法。30优先权数据85PCT申请进入国家阶段日2010091086PCT申请的申请数据P。

2、CT/EP2009/0515982009021187PCT申请的公布数据WO2009/101119EN2009082051INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书4页说明书8页附图20页CN101971139A1/4页21一种具有指令集架构的处理器,所述指令集架构包括用于从随机存取存储器中存储的压缩结构中提取数据值的至少一个加载指令,所述至少一个加载指令包括操作码和标识所述数据值在所述结构的非压缩形式中的位置的至少一个操作数,所述处理器适于将所述数据值在非压缩形式中的位置转换为所述数据值在所述压缩结构中的存储器位置,并且还适于从所述存储器位置中提取所述数据值。2根据。

3、权利要求1所述的处理器,其中,所述结构的非压缩形式包括简单值和复杂值,并且所述压缩结构仅包括复杂数据值。3根据权利要求1或权利要求2所述的处理器,其中,所述压缩数据结构包括表示复杂数据值在所述结构的非压缩形式中的位置的映射。4根据权利要求3所述的处理器,其中,所述处理器被配置为在传送所请求的值之前获得所述压缩数据结构的所述映射。5根据权利要求3或4所述的处理器,其中,所述复杂数据值为非零值。6根据权利要求3至5中任一项所述的处理器,其中,所述处理器根据所述映射确定所请求的值是简单值还是复杂值。7根据权利要求6所述的处理器,其中,所述至少一个操作数包括所述压缩结构在存储器中的基地址。8根据权利要。

4、求7的处理器,其中,在所请求的值为复杂值的情况下,所述处理器被配置为根据所述映射对所请求的值前面的复杂值的数量进行计数并且将该数量作为偏移与所述基地址相加,并相应地设置所述随机存取存储器存取地址。9根据权利要求8的处理器,其中,所述计数是使用多个加法器来实现的。10根据权利要求8的处理器,其中,在所请求的值为简单值的情况下,所述处理器被配置为返回所述简单值而不存取所述存储器。11根据任一前述权利要求所述的处理器,其中,所述处理器适于响应于所述指令来加载多个数据值。12根据权利要求1所述的处理器,其中,所述数据值是浮点数。13根据权利要求12所述的处理器,其中,所述数据值是单精度浮点数。14根据。

5、权利要求12所述的处理器,其中,所述数据值是双精度浮点数。15根据权利要求12所述的处理器,其中,所述数据值是扩展精度浮点数。16根据权利要求12所述的处理器,其中,所述数据值是128比特精度浮点数。17根据权利要求1所述的处理器,其中,所述数据值是整型数。18根据权利要求1所述的处理器,其中,所述数据值是浮点、浮点矩阵、浮点矢量和固定点整型数的组合。20一种将至少一个数据值从数据结构内加载到处理器中的方法,其中,所述数据结构以仅存在复杂数据值的压缩形式存储于存储器中,所述压缩形式还包括指定所述复杂数据值在非压缩结构中的位置的映射,所述方法包括以下步骤接收要加载到所述非压缩结构中的所述至少一个。

6、数据值的至少一个位置,使用所述映射来识别所述至少一个数据值在所述压缩结构内的至少一个存储位置,并且使用所述至少一个存储位置将所述至少一个数据值从所述存储器加载到所述处理器。21根据权利要求20所述的方法,其中,所述方法仅加载所识别出的至少一个位置的权利要求书CN101971139A2/4页3数据值。22根据权利要求21所述的方法,其中,所述方法包括在提取所述至少一个数据值之前获得所述压缩数据结构的映射的步骤。23根据权利要求22所述的方法,其中,所述获得映射的步骤包括从所述存储器中提取映射。24根据权利要求21至23中任一项所述的方法,其中,所述复杂数据值为非零值。25根据权利要求21至24中。

7、任一项所述的方法,其中,在所请求的数据值为复杂值的情况下,所述方法被配置为根据所述映射对所请求的数据值前面的复杂值的数量进行计数,并相应地设置所述随机存取存储器存取地址。26根据权利要求21至25中任一项所述的方法,其中,所述方法在所述处理器与存储器之间每次传送多个数据值。27根据权利要求21至24中任一项所述的方法,其中,在所接收到的至少一个位置对应于简单值在所述非压缩结构中的位置的情况下,所述方法被配置为直接将所述简单值提供给所述处理器。28根据权利要求21至27中任一项所述的方法,其中,所述数据值是浮点数。29根据权利要求28所述的方法,其中,所述数据值是单精度浮点数。30根据权利要求2。

8、8所述的方法,其中,所述数据值是双精度浮点数。31根据权利要求28所述的方法,其中,所述数据值是扩展精度浮点数。32根据权利要求28所述的方法,其中,所述数据值是128比特精度浮点数。33根据权利要求21至27中任一项所述的方法,其中,所述数据值是整型数。34根据权利要求21所述的方法,其中,所述数据值是浮点、浮点矩阵、浮点矢量和固定点整型数的组合。35一种具有数据传送功能部件的数据处理机,所述数据传送功能部件用于将至少一个数据值从压缩结构加载到存储器中,所述压缩结构包括仅存在复杂数据值的多个数据值以及标识所述复杂数据值在等效非压缩结构中的位置的映射,所述数据传送功能部件响应于指令来加载所述数。

9、据值,所述指令标识所述数据值在所述等效非压缩结构中的位置,所述数据传送功能适于生成相对于所标识的位置的存储器偏移,并且适于使用所述偏移来从存储器传送数据值。36根据权利要求35所述的数据处理机,其中,所述数据处理机是处理器。37根据权利要求35的数据处理机,其中,所述数据机是状态机。38一种具有指令集架构的处理器,所述指令集架构包括用于将至少一个数据值从非压缩数据结构存储到随机存取存储器中的对应压缩数据结构中的至少一个存储指令,所述至少一个存储指令包括操作码以及标识所述至少一个数据值在所述非压缩数据结构中的位置的至少一个操作数,所述处理器适于使用示出数据值在所述压缩结构内的位置的映射来将所述至。

10、少一个数据值在非压缩形式中的位置转换为所述数据值在所述压缩结构中的存储器位置,并且还适于在该存储器位置处存储所述至少一个数据值。39根据权利要求38所述的处理器,其中,所述非压缩结构包括简单值和复杂值,并且所述压缩结构仅包括复杂数据值。40根据权利要求38或权利要求39所述的处理器,其中,所述映射是所述压缩数据结权利要求书CN101971139A3/4页4构的一部分,并且表示复杂数据值在所述非压缩数据结构中的位置。41根据权利要求40所述的处理器,其中,所述处理器被配置为在存储所请求的值之前从存储器获得所述压缩数据结构的映射。42根据权利要求40或41所述的处理器,其中,所述复杂数据值为非零值。

11、。43根据权利要求38至42中任一项所述的处理器,其中,所述处理器被配置为根据所述映射对所述数据值前面的复杂值的数量进行计数,并相应地设置所述随机存取存储器存取地址。44根据权利要求43所述的处理器,其中,所述计数是使用一系列加法器来实现的。45根据权利要求38至44中任一项所述的处理器,其中,所述处理器响应于所述操作码来每次存储多个数据值。46根据权利要求38至45中任一项的处理器,其中,所述至少一个操作数包括随机存取存储器中的所述压缩数据结构的基地址。47根据权利要求38至47中任一项的处理器,其中,所述压缩数据结构中的多个数据值能够通过一条指令被存储。48根据权利要求38所述的处理器,其。

12、中,所述数据值是浮点数。49根据权利要求48所述的处理器,其中,所述数据值是单精度浮点数。50根据权利要求48所述的处理器,其中,所述数据值是双精度浮点数。51根据权利要求48所述的处理器,其中,所述数据值是扩展精度浮点数。52根据权利要求48所述的处理器,其中,所述数据值是128比特精度浮点数。53根据权利要求38所述的处理器,其中,所述数据值是整型数。54根据权利要求38所述的处理器,其中,所述数据值是浮点、浮点矩阵、浮点矢量和固定点整型数的组合。55一种将数据值从处理器插入存储器中的压缩结构中的方法,在所述压缩结构中仅存在复杂数据值,所述压缩结构包括标识所述复杂数据值在等效非压缩结构中的。

13、位置的映射,所述方法包括以下步骤接收要被插入的所述数据值在所述非压缩结构中的位置,使用所述映射来根据所接收到的位置识别所述数据值在所述压缩结构中的等效位置,以及使用所述等效位置来将所述数据值存储在所述存储器中。56根据权利要求55所述的方法,其中,所述方法包括在存储所述数据值之前获得所述压缩数据结构的所述映射的步骤。57根据权利要求56所述的方法,其中,所述获得映射的步骤包括从所述存储器中提取所述映射。58根据权利要求55至57中任一项所述的方法,其中,所述复杂数据值为非零值。59根据权利要求55至58中任一项所述的方法,其中,在所请求的数据值为复杂值的情况下,所述方法被配置为根据所述映射对所。

14、请求的数据值前面的复杂值的数量进行计数,并相应地设置所述随机存取存储器存取地址。60根据权利要求55至59中任一项所述的方法,其中,所述方法在所述处理器与存储器之间每次传送多个双数据值。61根据权利要求55至60中任一项所述的方法,其中,所述数据值是浮点数。62根据权利要求61所述的方法,其中,所述数据值是单精度浮点数。权利要求书CN101971139A4/4页563根据权利要求61所述的方法,其中,所述数据值是双精度浮点数。64根据权利要求61所述的方法,其中,所述数据值是扩展精度浮点数。65根据权利要求61所述的方法,其中,所述数据值是128比特精度浮点数。66根据权利要求55至60中任一。

15、项所述的方法,其中,所述数据值是整型数。67根据权利要求55所述的方法,其中,所述数据值是浮点、浮点矩阵、浮点矢量和固定点整型数的组合。68一种具有数据传送功能部件的数据处理机,所述数据传送功能部件用于将数据值直接存储到存储器中的压缩结构中,所述压缩结构包括仅存在复杂数据值的多个数据值以及标识所述复杂数据值在等效非压缩结构中的位置的映射,所述数据传送功能部件响应于指令来存储所述数据值,所述指令标识所述数据值在所述等效非压缩结构中的位置,所述数据传送功能适于生成相对于所标识的位置的存储器偏移,以及适于使用所述偏移来存取所述存储器以将所述数据值存储到存储器中。69根据权利要求68所述的数据处理机,。

16、其中,所述数据处理机是处理器。70根据权利要求68所述的数据处理机,其中,所述数据机是状态机。权利要求书CN101971139A1/8页6处理器技术领域0001本申请涉及的领域是处理器以及在存储器与处理器之间传送数据的方法。更具体地,本申请针对存取存储器中的压缩数据结构内的单个值、或者值的邻近组或非邻近组而无需检索并且解压缩整个压缩结构的方法。背景技术0002在设计计算系统时有个基本问题,就是使存储器存取的时间成本最小化。0003这是关于计算机系统设计的根本限制,因为不论使用何种存储器技术支持计算,并且不论使用何种技术将该存储器连接到处理器,都存在关于在给定时间内在处理器与存储器之间可以传送多。

17、少信息的最大限制亦即可用的存储器带宽,可用的存储器带宽对计算机能力的限制常常称为“存储墙MEMORYWALL”。0004本申请寻求通过用数据压缩来增加有效存储器带宽并且因此使“存储墙”的限制最小化。0005已知采用数据压缩来减少“存储墙”效应。然而,编程人员使用压缩存储器子系统的问题在于,数据可以被施予运算之前必须被解压缩,如图1的系统所示。这通常涉及将来自存储器10的一部分的压缩数据读取到处理器16的寄存器文件中,使用从程序存储器18检索到的程序代码对其进行解压缩,并且将解压缩后的数据存储在存储器12的另一未压缩部分中。0006然而,这种方案的缺点在于,需要额外的存储器带宽来读取压缩数据,将。

18、其存储为未压缩的形式,并且将其读回到处理器以施予运算。还需要额外的存储器容量来保存未压缩的数据,并且解压缩处理将对处理器寄存器文件增加压力。显见,这是一种次优方案,其暗示的内容解释了为何这种压缩存储器子系统依旧是学术探奇而未进入主流微处理器产业。0007EP0240032A2公开了一种矢量处理器,包括用于存储并且检索矢量数据的存储器。矢量处理器包括多个矢量寄存器,其中每一个都能够并行读取或者写入多个M个矢量元素;至少一个掩码MASK矢量寄存器,能够并行处理M个掩码比特;传递部分,连接到存储器、多个矢量寄存器和掩码矢量寄存器并且响应于指令用于将来自存储器内规则分开的地址位置的矢量元素传递到与有效。

19、掩码比特相对应的所选矢量寄存器的所选存储位置。虽然这种方法有用,但局限在于矢量数据的存储/检索限于整个寄存器。0008寄存器模块化是一种用于加速矩阵代数尤其是有限元的有用技术,然而,其缺点在于,对于很多矩阵例如,如搜索引擎诸如GOOGLETM中所使用的必须添加零填充,减少了有效FLOPS每秒浮点运算,并且增加了存储器带宽需求,但这二者在现代计算系统中皆为短缺的益处。0009实际上,在正分别以每年50和7的高度相异的速率增长的处理能力与存储器带宽之间的增长的鸿沟,如上所述,被称为“存储墙”。已有很多人声称“突除”了存储墙,他们通常包括使用缓存来减少必须离开芯片的概率,和/或使用多线程从而可以减小。

20、与离开说明书CN101971139A2/8页7芯片相关联的等待时间和损失。0010这些方法只是掩盖了有限外部存储器带宽的问题,但未解决该问题,并且通常依赖于展现出充足的数据位置的数据集、和/或展现出充足的线程级并行性TLP的程序,以便根本上有效,并且这可能并非对于所有问题都是正确的,并且当然并非总是事先知道的。实际上,很多更大更被关注的问题既不展现出充足的数据位置也不展现出TLP,整个系统的吞吐量退化到受限于外部存储器带宽的地步,并且已经在芯片上添加的额外硬件是无用的。为此,大型工程应用将处理器性能拉低到制造商所号称的峰值性能规格的1或更低并不罕见。发明内容0011本申请寻求增加有效的存储器带。

21、宽,并且通过以压缩格式存储数据来使“存储墙”对计算的局限最小化。这是通过提供压缩和解压缩装置来实现的,该压缩和解压缩装置适合于在对必须存储在存储器中的庞大数据集进行运算的很多应用包括例如计算机图形、刚体动力学、有限元分析和其它科学工程应用中使用的块结构数据。为了进一步减少“存储墙”效应,处理器流水线也被修改为利用压缩,将处理速率提高超过仅通过对压缩数据进行运算可以实现的速率。0012更特别地,本申请允许通过使用值映射以及被指定为指令的一部分的相关联字段比特来随机存取存储器中存储的压缩结构中的各个值。0013因此,本申请的第一实施例提供一种如权利要求1和38中详述的处理器。本申请还提供一种如权利。

22、要求21和56中详述的方法。本申请进一步提供一种如权利要求35和69中详述的数据处理机。在从属权利要求中提供了有利的实施例。附图说明0014现在参照附图描述本申请,其中0015图1是现有技术中已知的处理器布置,0016图2是本申请的处理器适用于处理的一系列变换,0017图3是根据本申请实施例的示例性处理器,0018图4示出可以由图3的处理器采用的示例性压缩方法,0019图5示出图3的处理器可以如何将存储器结构压缩为适于32比特RAM,0020图6示出可以由图3的处理器采用的示例性指令代码的格式,0021图7示出图3的处理器如何可以将图5的相同存储器结构压缩为适于64比特RAM,0022图8是图。

23、3的处理器可以采用的用于生成地址的示例性电路,0023图9以示例性值展示图8的运算,0024图10示出图3的处理器中可以采用的示例性加载/存储电路,0025图11是用于图10中的地址序列生成的说明,0026图12是示出图10的电路的运算模式的示例性时序图,0027图13是图3的处理器的更详细的框图,0028图14是指令格式,0029图15是示出在包括用于加载/存储压缩数据的指令的示例性处理器中可用的各说明书CN101971139A3/8页8种操作码指令的表,0030图16是用于基于非压缩指令的地址生成的电路,0031图17是用于生成由处理器的压缩方法采用的比特的电路,0032图18示出对于不同。

24、类型的矩阵结构可以由图3的示例性处理器提供的计算节省,0033图19是用于加载/存储压缩数据的适用于图2的处理器的电路,0034图20示出端口宽度对于存储器组织的效果,0035图21示出对图20中所示的地址的地址生成的所得效果,以及0036图22是示出图20的效果的示例性时序图。具体实施方式0037对压缩的需求的典型示例是使用矩阵表示和线性代数运算符号在计算机图形和相关应用中在2维屏幕上模拟现实。对源数据矩阵的运算常常包括图2所示的类型的旋转和其它变换并且常常是该类旋转和其它变换的序列。可见,这些矩阵包含大量零,这些零需要大量存储器带宽来加载/存储却无助于使用整个矩阵执行的计算的结果,也就是说。

25、从算术观点看它们是简单值。0038如图3所示,本申请提供一种改进的处理器,其能够对存储器中的压缩数据直接进行运算,而无需解压缩处理,因此无需为了处理将压缩数据解压缩进入缓冲区域以用于进一步处理所需的额外的未压缩数据缓冲器、额外的处理器以及存储器带宽。相反,压缩和解压缩处理整合于处理器的存储器存取结构中。0039本申请允许任意大小和复杂度的压缩结构,例如包括但不限于以下内容的任意组合浮点矩阵、浮点矢量、浮点标量、符号整型数、无符号整型数、封装字符和地址指针。0040适当地,压缩和解压缩逻辑嵌入在处理器加载/存储端口内,从而在不必担心如何基于逐个交易将数据读取自/写入到压缩存储器子系统的细节方面而。

26、言,使得编程人员的工作更容易。0041在此所描述的方案采用值映射来以图4所示的方式对稠密子矩阵中的零和非零项进行编码。使用这样的值映射在先前已经描述于相关申请2007年4月11日提交的US60/911273、2007年4月11日提交的US60/911274以及UK07049992和UK07049760还有要求它们的优先权的相应PCT申请中,其全部内容通过引用而合并到此。在所示示例中,实现了375的压缩。所提出的方案的优点在于待存储的矩阵中的每个零项由1比特而非32比特单精度、64比特双精度等数表示。只要在存储具有32比特单精度项的稀疏矩阵的32比特存储器系统中每个稠密矩阵中的1个或更多项是零,。

27、就实现了总体压缩。0042虽然上述基本压缩方法受到关注并且带来优点,但在大多数实际应用中,编程人员希望存储的不只是稀疏矩阵,而且常常需要存储并且检索在复杂数据结构中存储的数据。挑战在于,如何整合压缩方案使得其在处理混合压缩/未压缩数据结构时可以提供与前述方案相似的性能和存储器压缩益处,而不过度加重编程人员的负担。0043本申请提供一种随机存取较大结构中的数据的方式,该较大结构可以以前述方式压缩,但也可以包含未压缩浮点数据或整型数。该方案允许的基本结构包含要由32比特整型数值映射表示的三十二个以下的32比特项。原则上,该方案不限于32比特值或具有32项的结构,值映射的大小和项的数目可以选择为满足。

28、处理器设计的要求。如前,值映说明书CN101971139A4/8页9射中的1比特的存在表示在存储器中该位置处存在复杂浮点值或整型数值。由于每个值被表示为单个比特,因此值映射也可以称为比特映射BITMAP,位图。图5示出如何在存储器中存储混合压缩/未压缩结构的示例。0044所提出的压缩结构解压缩逻辑的运算的基本原理是值映射用于表示简单值的存在性。为了本申请的目的,简单值是00单精度32比特浮点值十六进制00000000,然而,同一方案可以容易地扩展为双精度浮点或更高。或者,如果在特定数据集中存在比00更重要的某个其它值,则在此提出的方案可以容易地扩展为允许值映射0表示这个并非00的值,例如某些数。

29、据集可能包含很多10值。0045从RAM地址可见,对于数据的示例性布置,在图5中可见,对于32比特值映射中的每个非零项SX,SY,SZ,X0X3,Y0Y3,Z0Z3,1的偏移量被加到基地址。实际上,存储器中下一结构的值映射和基地址二者皆可以嵌入在当前结构中并且由编程人员检索。0046为了使用压缩结构,有益的是减少编程人员在存储和检索以压缩形式存储的数据时的开销。在本申请中,通过隐藏在处理器其可以例如是精简指令集计算机RISC处理器的加载/存储单元LSU地址生成器中存储和检索压缩数据的复杂性来使编程开销最小化。地址生成器允许编程人员指定要从压缩结构检索数据的哪些元素。进而,LSU能够从存储器中的。

30、压缩结构检索所请求的元素,而不用解压缩整个压缩结构。0047因此,在此处描述的示例性布置方式中,地址生成器允许编程人员使用图6所示的在加载/存储操作码中包括的简单的8比特字段掩码来指定要从32项压缩结构的8个可能的4项字段矢量中加载/存储哪些。在此处描述的示例性布置方式中,用于加载压缩矢量的指令是LDCV,而用于存储压缩矢量的指令是STCV。0048这种示例性布置方式允许编程人员指定数据将被加载自/存储到的4项矢量寄存器文件VRF寄存器。地址生成器将把压缩结构偏移量加到整型数寄存器文件IRF中的基地址寄存器以及值映射寄存器也在IRF中。操作码于是包含紧接的8比特值F70,该8比特值用于选择八个。

31、四项压缩矢量中的哪些实际上加载自/存储到VRF。0049由于LSU端口宽度通常受限,因此在应用于64比特的示例性布置方式的情况下,应当理解,LDCV和STCV指令必须占用多个时钟周期。结果,从LSU端口可见,值映射按F比特的顺序以迭代方式被解码,使得64比特压缩项被写入到或读取自正确的VRF寄存器并且存储到或读取自正确的存储器RAM地址。图7示出64比特存储器子系统中典型压缩结构在RAM中的布局。0050应理解,该方法和布置方式不限于32比特字或64比特宽的存储器,并且相似的布局对于包括96和128比特宽的存储器等的其它存储器宽度是可能的,然而,为了简化解释,这些布置方式组织在此将不详细讨论。。

32、0051VRF可以用作完整压缩结构的驻留区域,用于在压缩加载的情况下,在完整压缩结构的各部分分散到处理器内部的其它寄存器文件之前,或者用于将压缩结构存储到附连于LSU端口的外部RAM。0052现将参照图8讨论用于LSU的示例性逻辑,图8示出LSU压缩结构地址生成器的用于在给定的基地址BASEADDR从压缩结构内加载值的逻辑。第一行加法器50压缩器被提供以将排列为八个4比特值映射字段BM7BM0的32比特的值映射结构压缩为八个3比特数,其中每一个都表示在给定的4比特值映射中的1的数量。第二行加法器52被提说明书CN101971139A5/8页10供以将压缩器的行的结果相加以生成每个值映射的开始地。

33、址,使得可以通过在压缩加载或存储操作码中应用适当的F比特来根据需要对每个值映射字段进行独立寻址。“与”AND门54的行被提供以根据压缩加载/存储操作码中的F字段比特集的状态来屏蔽掉不需要的字段。然后这些AND门的输出由另一组加法器56进行求和,以生成必须基于操作码F比特来加载自/存储到存储器的32比特字的总数WORDCNT。最后的81复用器级58受控于8个字段使能,其允许所选择的所需值映射地址被依次施加到最后的加法器60,以便生成所需的RAM地址。0053图9示出示例压缩数据结构的各种信号的值。所示地址是根据所选择的IRF整型数寄存器文件寄存器中的值映射而统计计算出的,并且然后根据在压缩加载或。

34、存储指令中指定的F比特的级来依次应用。0054图10示出用于压缩加载/存储操作的完整的地址生成逻辑,包括计数器和有限状态机,以生成所需的控制信号。0055选择要被应用于地址选择复用器的地址序列的FEN20信号根据图11所示的真值表操作。0056如图12所示,不仅生成由LSU地址生成器生成的压缩加载/存储操作所需的源地址/目的地址,而且还生成相对于在压缩加载/存储操作中指定的地址的用于源/目的VRF行的源/目的地址。在64比特LSU总线的情况下,可以在压缩加载/存储指令中寻址多达2个VRF行。虽然在该示例性布置方式中,VRF被选取为在压缩加载/存储操作中加载或者存储的数据的源/目的,但在原理上,。

35、可以同样地选取整型数寄存器文件IRF或标量寄存器文件SRF。0057图12的示例性时序图清楚地示出压缩加载/存储操作占用多个周期来执行,并且所有所需的控制信号是根据与在压缩加载/存储控制字中指定的F比特耦合的用于压缩结构的IRF值映射描述符的知识而生成的。控制信号的序列是使用F比特以及值映射结合受输入到地址生成器的时钟输入驱动的计数器而推导出的。0058该图示出加载和存储操作二者的行为,这两种操作之间的仅有差别是00591在压缩加载的情况下,生成用于从附连到LSU端口的RAM读取的读信号,并且生成用于适当的VRF行其充当RAM内容的目的地的写信号。实际上,一系列RAM读取和VRF写入可以根据I。

36、RF中的值映射的状态以及压缩加载操作码中的F比特集而生成。00602类似地,在压缩存储的情况下,一系列VRF读取和RAM写入可以根据IRF值映射的状态以及压缩存储操作码中的F比特集而生成。0061图13示出SVU架构的框图,SVU架构的具有压缩加载/存储操作的加载存储单元LSU形成一部分。可见,主要外部接口去往SVU指令存储器、连接到数据存储器库的LSU端口以及允许SVU寄存器和诊断信息经由处理器总线被读取/写入的诊断控制单元DCU。0062指令字具有7个时隙,允许它每周期控制9个功能单元中的多达7个功能单元,如图14所示。0063在该示例性实施例中,128比特指令的最左边的比特被反转以提供未。

37、来特征,其余127比特被划分为多个字段,每个字段控制处理器架构的优选实施例中包含的多达9个功能单元中的一个。00641判定执行单元PEU说明书CN101971139A6/8页1100651分支/重复单元BRU00662加载存储单元LSU00671矢量算术单元VAU00681标量算术单元SAU00692整型数算术单元IAU00701比较/移动单元CMU0071不在指令字的直接控制之下的最终功能单元是诊断控制单元DCU,其允许处理器监视并且控制程序执行,尤其是在异常条件和/或中断出现的情况下。0072示例性的LSU允许编程人员将矢量数据从存储器加载到VRF寄存器中。LSU受控于24比特操作码,并且。

38、可以执行以下8种操作之一0073NOP即不从存储器加载任何数据用于省电的时钟关闭0074LDVX从存储器加载4元素未压缩矢量0075STVX将4元素未压缩矢量存储到存储器0076LDCV从存储器加载4元素压缩矢量0077STCV将4元素压缩矢量存储到存储器0078LDLI将16比特立即加载到所指定的IRF寄存器的低16比特0079LDHI将16比特立即加载到所指定的IRF寄存器的高16比特0080CPXI将IRF值映射中字段18的大小/地址拷贝到IRF基地址寄存器0081图15示出LSU的示例性操作码表。0082图16示出未压缩加载/存储模式下的LSU的框图。在该模式下,BRUHOLD信号防止。

39、BRU中的程序计数器PC前进,直到已经完成加载/存储操作。这在加载和存储未在单个周期中完成的情况下是重要的,因为4个矢量元素必须在1S或2S中被传递,而不是单个周期中4个元素128比特。0083图17示出用于非零值映射生成的值映射生成逻辑和去往VRF的加载/存储路径的框图。每当将未压缩的4元素矢量从存储器加载到VRF时,就使用4个比较器432输入“或非”NOR门的行来生成附加的4项非零值映射,并且将其插入在相应的VRF行,作为从存储器取得的数据。该4比特值映射项可以稍后用于将数据以压缩格式存储回存储器,并且通过消除对于零值的简单运算来使功率消耗最小化。0084此处描述的处理器架构的独特能力是支。

40、持以随机存取方式对压缩数据进行加载和存储,而无需检索整个压缩结构。这种支持的原因在于,很多受关注的应用对大量的稀疏数据进行运算,稀疏数据即包含大量零这些零必须从存储器取得并且当被运算时生成零结果的数据。0085该架构中的主要假设在于,要由处理器处理的所有数据都被封装为要在存储器中存储的4元素矢量,不论该数据是压缩的还是未压缩的,也不论数据是否包括矩阵、矢量和封装的标量或整型数。基于这种假设,编程人员可以将矩阵/矢量/标量/整型数数据组织为32项压缩块,其中,仅有那些非零项被显式地存储。所有零值和非零值在非零值映射中由1比特项表示,其然后可以被用于将32项压缩/不压缩为RAM中的32或更少的32。

41、比特字。0086图中所示的3D图形和游戏物理刚体动力学应用中使用的变换矩阵是很好的说明书CN101971139A7/8页12示例。图2详细示出与8个矩阵相对应的32比特值映射。0087在图18中可见,图形变换矩阵包含大百分比的简单值零值,允许实现超过50的数据压缩。0088压缩值映射用于允许使用图19所示的硬件来随机存取编程人员定义的复杂数据结构。压缩加载操作允许编程人员从开始于在IRF中指定的基地址的地址收集由操作码中的8比特字段指定的一系列多达84元素值。该硬件自动生成所需的地址和读取信号以及在需要多周期加载的情况下例如,如果必须从存储器加载多于4个非零生成用于保持BRU的保持信号。与之对。

42、照,在现有技术中,使用需要以基地址和偏移量来设置多个寄存器以允许复杂数据结构的索引的传统处理器架构来实现这种类型的复杂分散收集功能通常是复杂的。而且,这样的传统处理器架构不提供简单数据值的压缩。0089适当地,LSU端口宽度是可经由在部分6中详述的SVULCR寄存器独立配置的。通过允许在附连到SVULSU端口的/2/4元素宽数据总线上在多个交易中加载/存储4元素矢量,端口宽度参数允许顶级SOC片上系统互连相对于SVU的吞吐量而折衷,如图20所示。0090用于支持端口宽度参数化的附加地址最低有效位LSB的生成是使用计数器来执行的,所述计数器将0、1或2地址最低有效位附加到由LSU生成的地址,如图。

43、21所示。0091图22示出端口宽度参数对存储到SVURAM的4个元素的影响。在图18中可见,图形变换矩阵包含大百分比的简单值零值,允许实现超过50的数据压缩。0092压缩值映射用于允许使用图19所示的硬件随机存取编程人员定义的复杂数据结构。压缩加载操作允许编程人员从开始于在IRF中指定的基地址的地址收集由操作码中的8比特字段指定的一系列多达84元素值。该硬件自动生成所需的地址和读取信号以及在需要多周期加载的情况下例如,如果必须从存储器加载多于4个非零生成用于保持BRU的保持信号。与之对照,在现有技术中,使用需要以基地址和偏移量来设置多个寄存器以允许复杂数据结构的索引的传统处理器架构来实现这种。

44、类型的复杂分散收集功能通常是复杂的。而且,这样的传统处理器架构不提供简单数据值的压缩。0093适当地,LSU端口宽度是可通过被提供为寄存器中的项的参数来独立配置的。通过允许在附连到SVULSU端口的1/2/4元素宽数据总线上在多个交易中加载/存储4元素矢量,端口宽度参数允许顶级SOC互连相对于SVU的吞吐量而折衷,如图20所示。0094用于支持端口宽度参数化的附加地址最低有效位LSB的生成是使用计数器来执行的,所述计数器将0、1或2地址最低有效位附加到由LSU生成的地址,如图21所示。0095图22示出端口宽度参数对存储到SVURAM的4个元素的影响。可见,加载或存储128比特矢量所占用的周期。

45、数量当端口宽度为132比特时占用4个周期,当端口宽度为264比特时占用2个周期,当端口宽度为4128比特时占用1个周期。0096虽然已经针对具有指令集该指令集具有用于在存储器与处理器之间执行数据传送的所标识的操作码的处理器描述了本申请,但应理解,可以在程序存储中没有显式指令集而是在状态机或其它装置的控制下执行加载和存储的情况下执行功能。明显的优点在于,可以从存储器中的压缩结构检索一个或多个数据项,而无需检索或解压缩整个压缩结构。相似地,单个数据项可以在存储器中存储的压缩结构中被更新,而无需检索或解压缩整个压缩结构。说明书CN101971139A8/8页130097词语“包括/包含”当用在本说明。

46、书中时是要指定所声明的特征、整体、步骤或组件的存在,但不排除一个或更多其它特征、整体、步骤、组件或其群组的存在或添加。说明书CN101971139A1/20页14图2说明书附图CN101971139A2/20页15图1图3说明书附图CN101971139A3/20页16图4说明书附图CN101971139A4/20页17图5说明书附图CN101971139A5/20页18图6说明书附图CN101971139A6/20页19图7说明书附图CN101971139A7/20页20图8说明书附图CN101971139A8/20页21图9说明书附图CN101971139A9/20页22图10说明书附图C。

47、N101971139A10/20页23图11说明书附图CN101971139A11/20页24图12说明书附图CN101971139A12/20页25图13说明书附图CN101971139A13/20页26图14说明书附图CN101971139A14/20页27图15说明书附图CN101971139A15/20页28图16说明书附图CN101971139A16/20页29图17说明书附图CN101971139A17/20页30图18说明书附图CN101971139A18/20页31图19说明书附图CN101971139A19/20页32图20图21说明书附图CN101971139A20/20页33图22说明书附图。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1