CN101971139A - 处理器 - Google Patents
处理器 Download PDFInfo
- Publication number
- CN101971139A CN101971139A CN2009801083973A CN200980108397A CN101971139A CN 101971139 A CN101971139 A CN 101971139A CN 2009801083973 A CN2009801083973 A CN 2009801083973A CN 200980108397 A CN200980108397 A CN 200980108397A CN 101971139 A CN101971139 A CN 101971139A
- Authority
- CN
- China
- Prior art keywords
- processor
- data value
- value
- data
- mapping
- 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
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000015654 memory Effects 0.000 claims abstract description 39
- 238000013507 mapping Methods 0.000 claims description 52
- 239000013598 vector Substances 0.000 claims description 35
- 238000007667 floating Methods 0.000 claims description 24
- 239000011159 matrix material Substances 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims 3
- 230000005540 biological transmission Effects 0.000 claims 2
- 238000003780 insertion Methods 0.000 claims 1
- 230000037431 insertion Effects 0.000 claims 1
- 238000007906 compression Methods 0.000 description 43
- 230000006835 compression Effects 0.000 description 43
- 230000006837 decompression Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000003638 chemical reducing agent Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 208000012978 nondisjunction Diseases 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3066—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction by means of a mask or a bit-map
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请提供一种随机存取存储器中的压缩结构而无需提取并且解压缩整个压缩结构的方法。
Description
技术领域
本申请涉及的领域是处理器以及在存储器与处理器之间传送数据的方法。更具体地,本申请针对存取存储器中的压缩数据结构内的单个值、或者值的邻近组或非邻近组而无需检索并且解压缩整个压缩结构的方法。
背景技术
在设计计算系统时有个基本问题,就是使存储器存取的时间成本最小化。
这是关于计算机系统设计的根本限制,因为不论使用何种存储器技术支持计算,并且不论使用何种技术将该存储器连接到处理器,都存在关于在给定时间内在处理器与存储器之间可以传送多少信息的最大限制(亦即可用的存储器带宽),可用的存储器带宽对计算机能力的限制常常称为“存储墙(memory-wall)”。
本申请寻求通过用数据压缩来增加有效存储器带宽并且因此使“存储墙”的限制最小化。
已知采用数据压缩来减少“存储墙”效应。然而,编程人员使用压缩存储器子系统的问题在于,数据可以被施予运算之前必须被解压缩,如图1的系统所示。这通常涉及将来自存储器10的一部分的压缩数据读取到处理器16的寄存器文件中,使用从程序存储器18检索到的程序代码对其进行解压缩,并且将解压缩后的数据存储在存储器12的另一未压缩部分中。
然而,这种方案的缺点在于,需要额外的存储器带宽来读取压缩数据,将其存储为未压缩的形式,并且将其读回到处理器以施予运算。还需要额外的存储器容量来保存未压缩的数据,并且解压缩处理将对处理器寄存器文件增加压力。显见,这是一种次优方案,其暗示的内容解释了为何这种压缩存储器子系统依旧是学术探奇而未进入主流微处理器产业。
EP-0240032-A2公开了一种矢量处理器,包括用于存储并且检索矢量数据的存储器。矢量处理器包括:多个矢量寄存器,其中每一个都能够并行读取或者写入多个(m个)矢量元素;至少一个掩码(mask)矢量寄存器,能够并行处理m个掩码比特;传递部分,连接到存储器、多个矢量寄存器和掩码矢量寄存器并且响应于指令用于将来自存储器内规则分开的地址位置的矢量元素传递到与有效掩码比特相对应的所选矢量寄存器的所选存储位置。虽然这种方法有用,但局限在于矢量数据的存储/检索限于整个寄存器。
寄存器模块化是一种用于加速矩阵代数(尤其是有限元)的有用技术,然而,其缺点在于,对于很多矩阵(例如,如搜索引擎诸如GOOGLETM中所使用的)必须添加零填充,减少了有效FLOPS(每秒浮点运算),并且增加了存储器带宽需求,但这二者在现代计算系统中皆为短缺的益处。
实际上,在正分别以每年50%和7%的高度相异的速率增长的处理能力与存储器带宽之间的增长的鸿沟,如上所述,被称为“存储墙”。已有很多人声称“突除”了存储墙,他们通常包括使用缓存来减少必须离开芯片的概率,和/或使用多线程从而可以减小与离开芯片相关联的等待时间和损失。
这些方法只是掩盖了有限外部存储器带宽的问题,但未解决该问题,并且通常依赖于展现出充足的数据位置的数据集、和/或展现出充足的线程级并行性(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个周期。
虽然已经针对具有指令集(该指令集具有用于在存储器与处理器之间执行数据传送的所标识的操作码)的处理器描述了本申请,但应理解,可以在程序存储中没有显式指令集而是在状态机或其它装置的控制下执行加载和存储的情况下执行功能。明显的优点在于,可以从存储器中的压缩结构检索一个或多个数据项,而无需检索或解压缩整个压缩结构。相似地,单个数据项可以在存储器中存储的压缩结构中被更新,而无需检索或解压缩整个压缩结构。
词语“包括/包含”当用在本说明书中时是要指定所声明的特征、整体、步骤或组件的存在,但不排除一个或更多其它特征、整体、步骤、组件或其群组的存在或添加。
Claims (69)
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所述的方法,其中,所述方法仅加载所识别出的至少一个位置的数据值。
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所述的处理器,其中,所述映射是所述压缩数据结构的一部分,并且表示复杂数据值在所述非压缩数据结构中的位置。
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所述的方法,其中,所述数据值是单精度浮点数。
63.根据权利要求61所述的方法,其中,所述数据值是双精度浮点数。
64.根据权利要求61所述的方法,其中,所述数据值是扩展精度浮点数。
65.根据权利要求61所述的方法,其中,所述数据值是128比特精度浮点数。
66.根据权利要求55至60中任一项所述的方法,其中,所述数据值是整型数。
67.根据权利要求55所述的方法,其中,所述数据值是浮点、浮点矩阵、浮点矢量和固定点整型数的组合。
68.一种具有数据传送功能部件的数据处理机,所述数据传送功能部件用于将数据值直接存储到存储器中的压缩结构中,所述压缩结构包括仅存在复杂数据值的多个数据值以及标识所述复杂数据值在等效非压缩结构中的位置的映射,所述数据传送功能部件响应于指令来存储所述数据值,所述指令标识所述数据值在所述等效非压缩结构中的位置,所述数据传送功能适于生成相对于所标识的位置的存储器偏移,以及适于使用所述偏移来存取所述存储器以将所述数据值存储到存储器中。
69.根据权利要求68所述的数据处理机,其中,所述数据处理机是处理器。
70.根据权利要求68所述的数据处理机,其中,所述数据机是状态机。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0802484A GB2457303A (en) | 2008-02-11 | 2008-02-11 | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
GB0802484.6 | 2008-02-11 | ||
PCT/EP2009/051598 WO2009101119A1 (en) | 2008-02-11 | 2009-02-11 | A processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101971139A true CN101971139A (zh) | 2011-02-09 |
Family
ID=39247444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801083973A Pending CN101971139A (zh) | 2008-02-11 | 2009-02-11 | 处理器 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9858073B2 (zh) |
EP (1) | EP2260380A1 (zh) |
JP (1) | JP2011511986A (zh) |
KR (1) | KR20100122493A (zh) |
CN (1) | CN101971139A (zh) |
GB (1) | GB2457303A (zh) |
WO (1) | WO2009101119A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105264779A (zh) * | 2013-01-22 | 2016-01-20 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
WO2015061022A1 (en) * | 2013-10-22 | 2015-04-30 | Purde Research Foundation | Debugging non-deterministic embedded systems |
US10108428B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
JP6286066B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでのロードリプレイを低減する節電メカニズム |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
EP3055768B1 (en) | 2014-12-14 | 2018-10-31 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
KR101819315B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10089112B2 (en) * | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
KR101822726B1 (ko) | 2014-12-14 | 2018-01-26 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 로드 리플레이를 억제하는 메커니즘 |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
WO2016097814A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude shared ram-dependent load replays in out-of-order processor |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
WO2016097791A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
WO2016097811A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
EP3049956B1 (en) | 2014-12-14 | 2018-10-10 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10108430B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10019262B2 (en) * | 2015-12-22 | 2018-07-10 | Intel Corporation | Vector store/load instructions for array of structures |
US10460704B2 (en) | 2016-04-01 | 2019-10-29 | Movidius Limited | Systems and methods for head-mounted display adapted to human visual mechanism |
US10503507B2 (en) | 2017-08-31 | 2019-12-10 | Nvidia Corporation | Inline data inspection for workload simplification |
US10949947B2 (en) | 2017-12-29 | 2021-03-16 | Intel Corporation | Foveated image rendering for head-mounted display devices |
US10541708B1 (en) * | 2018-09-24 | 2020-01-21 | Redpine Signals, Inc. | Decompression engine for executable microcontroller code |
KR102472282B1 (ko) * | 2019-10-12 | 2022-11-29 | 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 | 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1488538A (en) * | 1975-11-28 | 1977-10-12 | Ibm | Compressed refresh buffer |
US4125873A (en) | 1977-06-29 | 1978-11-14 | International Business Machines Corporation | Display compressed image refresh system |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4606002A (en) | 1983-05-02 | 1986-08-12 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists |
JPS6015771A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
JPS62226275A (ja) * | 1986-03-28 | 1987-10-05 | Hitachi Ltd | ベクトル処理装置 |
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
GB8815978D0 (en) | 1988-07-05 | 1988-08-10 | British Telecomm | Method & apparatus for encoding decoding & transmitting data in compressed form |
US5247638A (en) | 1990-06-18 | 1993-09-21 | Storage Technology Corporation | Apparatus for compressing data in a dynamically mapped virtual data storage subsystem |
US5394534A (en) | 1992-09-11 | 1995-02-28 | International Business Machines Corporation | Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium |
US5805735A (en) | 1995-03-02 | 1998-09-08 | Apple Computer, Inc. | Method and apparatus for compression of digitized image data using variable color fidelity |
US5960465A (en) | 1997-02-27 | 1999-09-28 | Novell, Inc. | Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table |
US6243081B1 (en) | 1998-07-31 | 2001-06-05 | Hewlett-Packard Company | Data structure for efficient retrieval of compressed texture data from a memory system |
US6145069A (en) | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6591019B1 (en) * | 1999-12-07 | 2003-07-08 | Nintendo Co., Ltd. | 3D transformation matrix compression and decompression |
US6564305B1 (en) * | 2000-09-20 | 2003-05-13 | Hewlett-Packard Development Company Lp | Compressing memory management in a device |
US6442085B1 (en) * | 2000-10-02 | 2002-08-27 | International Business Machines Corporation | Self-Test pattern to detect stuck open faults |
JP3749507B2 (ja) * | 2002-07-01 | 2006-03-01 | 株式会社ルネサステクノロジ | 圧縮コードを処理するマイクロコントローラ |
DE602005015435D1 (de) | 2004-04-26 | 2009-08-27 | Storewiz Inc | Verfahren und system zur komprimierung von dateien zur speicherung und operation an komprimierten dateien |
US7505960B2 (en) * | 2005-11-15 | 2009-03-17 | Microsoft Corporation | Scalable retrieval of data entries using an array index or a secondary key |
GB2447428A (en) * | 2007-03-15 | 2008-09-17 | Linear Algebra Technologies Lt | Processor having a trivial operand register |
GB2447494A (en) * | 2007-03-15 | 2008-09-17 | Linear Algebra Technologies Lt | A method and circuit for compressing data using a bitmap to identify the location of data values |
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
US7904464B2 (en) * | 2008-08-27 | 2011-03-08 | International Business Machines Corporation | Virtual list view support in a distributed directory |
-
2008
- 2008-02-11 GB GB0802484A patent/GB2457303A/en not_active Withdrawn
-
2009
- 2009-02-11 JP JP2010545506A patent/JP2011511986A/ja active Pending
- 2009-02-11 EP EP09709874A patent/EP2260380A1/en not_active Withdrawn
- 2009-02-11 WO PCT/EP2009/051598 patent/WO2009101119A1/en active Application Filing
- 2009-02-11 KR KR1020107020168A patent/KR20100122493A/ko not_active Application Discontinuation
- 2009-02-11 US US12/867,095 patent/US9858073B2/en active Active
- 2009-02-11 CN CN2009801083973A patent/CN101971139A/zh active Pending
-
2017
- 2017-12-27 US US15/855,661 patent/US10719318B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105264779A (zh) * | 2013-01-22 | 2016-01-20 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
CN105264779B (zh) * | 2013-01-22 | 2019-06-07 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
Also Published As
Publication number | Publication date |
---|---|
KR20100122493A (ko) | 2010-11-22 |
US10719318B2 (en) | 2020-07-21 |
GB0802484D0 (en) | 2008-03-19 |
JP2011511986A (ja) | 2011-04-14 |
US20110047360A1 (en) | 2011-02-24 |
US9858073B2 (en) | 2018-01-02 |
US20180189066A1 (en) | 2018-07-05 |
GB2457303A (en) | 2009-08-12 |
EP2260380A1 (en) | 2010-12-15 |
WO2009101119A1 (en) | 2009-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101971139A (zh) | 处理器 | |
EP3602278B1 (en) | Systems, methods, and apparatuses for tile matrix multiplication and accumulation | |
EP3832499B1 (en) | Matrix computing device | |
US8713080B2 (en) | Circuit for compressing data and a processor employing same | |
US6944747B2 (en) | Apparatus and method for matrix data processing | |
KR100505799B1 (ko) | 코프로세서 데이터 액세스 제어 | |
CN114391135A (zh) | 用于对连续分配数据执行存储器内处理操作的方法及相关存储器装置和系统 | |
CN101495959B (zh) | 组合微处理器内的多个寄存器单元的方法和设备 | |
EP1570373A1 (en) | Cellular engine for a data processing system | |
JP2009517783A (ja) | ロジックおよびメモリのシミュレーション用ハードウェア加速システム | |
US20060259747A1 (en) | Long instruction word processing with instruction extensions | |
CN103777923A (zh) | Dma向量缓冲区 | |
JPH07302199A (ja) | 複数の処理要素による多重条件コードに基づく1命令分岐に適応したデータ処理装置及び方法 | |
CN104487956A (zh) | 用于使用状态机引擎中的状态向量数据的方法及系统 | |
CN104133748A (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
US20080288756A1 (en) | "or" bit matrix multiply vector instruction | |
TW201342205A (zh) | 用於選擇向量運算之元素的裝置及方法 | |
CN111124360B (zh) | 一种可配置矩阵乘法的加速器 | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 | |
KR20130066402A (ko) | 트레이스 데이터 저장 장치 및 방법 | |
KR20000048529A (ko) | 데이터 처리장치의 레지스터 제어 | |
US7333032B1 (en) | System, method and computer program product for word-level computations and storage | |
US5327571A (en) | Processor having decoder for decoding unmodified instruction set for addressing register to read or write in parallel or serially shift in from left or right | |
TW200409025A (en) | Processor with explicit indication of information to be backed-up in sub-program jumps | |
Liu et al. | Integrating FPGA-based hardware acceleration with relational databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110209 |