CN114661677A - 用于数据压缩和解压缩的处理器指令 - Google Patents

用于数据压缩和解压缩的处理器指令 Download PDF

Info

Publication number
CN114661677A
CN114661677A CN202111383819.7A CN202111383819A CN114661677A CN 114661677 A CN114661677 A CN 114661677A CN 202111383819 A CN202111383819 A CN 202111383819A CN 114661677 A CN114661677 A CN 114661677A
Authority
CN
China
Prior art keywords
data
memory
instruction
operand
processor
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
Application number
CN202111383819.7A
Other languages
English (en)
Inventor
王哲
阿拉·R·阿拉美丁
克里斯托弗·J·休斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN114661677A publication Critical patent/CN114661677A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)

Abstract

提供了一种处理器,该处理器包括压缩指令,用以将存储在存储器中的未压缩只读数据的多个相邻数据块压缩成一个已压缩只读数据块并且将该已压缩只读数据块存储在存储器中的多个相邻块中。在执行应用以对只读数据进行操作期间,存储已压缩只读数据块的多个相邻块中的一者被从存储器读取,被存储在预取缓冲器中,并且在存储器控制器中被解压缩。响应于在执行应用期间对已压缩只读数据块中的相邻数据块的后续请求,未压缩数据块被直接从预取缓冲器读取。

Description

用于数据压缩和解压缩的处理器指令
技术领域
本公开涉及计算机处理器架构,更具体地涉及用于数据压缩和解压缩的处理器指令。
背景技术
存储器带宽和延迟是计算机系统中许多工作负载的性能瓶颈。提高计算机系统中的存储器效率可提高系统性能并降低能耗。缓存存储器可放大存储器带宽并减少有效存储器延迟。然而,缓存存储器的容量有限。
附图说明
随着以下详细描述的进行并参考附图,所要求保护的主题的实施例的特征将变得显而易见,其中,使用的相同编号描绘相同的部件,并且其中:
图1图示了指令格式的实施例;
图2图示了寻址字段的实施例;
图3是根据一些实施例的寄存器架构的框图;
图4A是图示了示例性有序管道和示例性寄存器重命名、乱序发布/执行管道的框图;
图4B是图示了处理器中包括的有序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核的框图;
图5A是根据本发明的一些实施例的单个处理器核及其到管芯上互连网络的连接和二级(L2)缓存的本地子集的框图;
图5B是图5A中的处理器核的一部分的展开图;
图6是片上系统(SoC)的框图;
图7是根据本发明实施例的图6所示的SoC的一部分的框图,该部分包括集成存储器控制器单元中的压缩/解压缩引擎;
图8是VHWCOMPRESS指令在SoC中的操作的流程图;
图9A图示了未压缩相邻数据块;
图9B图示了对应于图9A所示的未压缩数据块的已压缩数据和相关联的元数据;
图10是VMOVRAWCOMPRESS指令在SoC中的操作的流程图;
图11是VWRCOMPRESS指令在SoC中的操作的流程图;
图12是VHWCOMPRESSSTORE指令在SoC中的操作的流程图;
图13是根据本发明实施例的图6所示的SoC的一部分的框图,该部分包括二级(L2)缓存控制器中的压缩/解压缩引擎;
图14是图6所示的SoC的框图;以及
图15是包括图6所示的SoC的系统的框图。
虽然将参考所要求保护的主题的说明性实施例继续进行以下的详细描述,但是它们的许多替代、修改、和变型对于本领域技术人员来说将是显而易见的。因此,期望所要求保护的主题被赋予较宽涵义,并且由所附权利要求限定。
具体实施方式
已知压缩存储器数据的存储器压缩技术。这些存储器压缩技术中的很多技术专注于压缩要存储在存储器中的数据,以增加有效存储器容量。这些技术要么需要操作系统(OS)消除碎片(这会产生性能开销),要么可能会由于元数据访问开销而潜在地降低有效存储器带宽。将已压缩数据存储在缓存中有效扩展了缓存的大小并增加了缓存的有效带宽。
在深度学习系统中,神经网络模型被存储在存储器中,并且处理器中的计算逻辑对存储在存储器中的参数(例如,神经网络权重)进行乘法累加(MAC)计算。存储器与处理器之间的数据传输是能量密集型过程,并且可能消耗机器学习工作负载中高达90%的电量。
神经网络权重是只读数据,也就是说,它们在机器学习推理工作负载的执行期间不会改变。对只读数据进行操作的其他应用包括允许用户读取数据但不允许用户修改数据的只读数据库。应用使用的只读数据是在计算机系统中执行应用期间一般不进行修改或删除的数据。
在一个实施例中,处理器压缩指令将存储在存储器中的未压缩只读数据的多个相邻数据块压缩成一个已压缩只读数据块,并且将该已压缩只读数据块存储在存储器中的多个相邻块中。在对只读数据进行操作的应用的执行期间,存储已压缩只读数据块的多个相邻块中的一者被从存储器中读取,被存储在预取缓冲器中,并在存储器控制器中被解压缩。响应于应用执行期间对已压缩只读数据块中的相邻数据块的后续请求,直接从预取缓冲器中读取未压缩相邻块。
只读数据的多个相邻数据块的压缩提高了有效存储器带宽并减少了对于只读数据的存储器访问延迟,从而为使用只读数据的应用提高了性能并降低了存储器能耗。可将只读数据存储在具有动态随机存取存储器(DRAM)的双列直插式存储器模块(dual inlinememory module,DIMM)中。可使用例如位-平面压缩(Bit-Plane Compression)、基本增量即时压缩(Base-delta-immediate compression)、频繁值压缩(Frequent ValueCompression)等通用压缩算法,来对只读数据的多个相邻数据块进行压缩。
也可将已压缩数据存储在缓存存储器中,以提高“网状”片上互连拓扑的有效缓存和网状带宽。通过处理器中的指令对只读数据进行压缩和解压缩。
将参照下面讨论的细节描述本发明的各种实施例和方面,并且附图将图示出各种实施例。下面的描述和附图是对本发明的说明,不应被理解为对本发明的限制。通过描述若干具体细节来提供对本发明的各种实施例的透彻理解。然而,在某些情况下,为了提供对于本发明的实施例的简要讨论,将不描述众所周知或常规的细节。
说明书中提及“一个实施例(one embodiment or an embodiment)”意指结合实施例描述的特定特征、结构、或特性可包括在本发明的至少一个实施例中。说明书中不同位置出现的短语“在一个实施例中”不一定都指代同一个实施例。
本文描述的一个或多个指令的实施例可以通过不同的格式来体现。另外,下文将详细描述示例性系统、架构、和管道。一个或多个指令的实施例可以在此类系统、架构、和管道上执行,但并不限于这些详细描述。
指令集可包括一种或多种指令格式。给定指令格式可定义指定要进行的操作(例如,操作码)和要进行该操作的一个或多个操作数的各种字段(例如,位的数目、位的位置)和/或其他一个或多个数据字段(例如,掩码)。通过指令模板(或子格式)的定义进一步分解一些指令格式。例如,给定指令格式的指令模板可被定义为具有该指令格式的字段的不同子集(所包括的字段通常按相同顺序排列,但因为包括的字段较少因此至少一些字段具有不同的位位置)和/或被定义为具有以不同方式进行解析的给定字段。因此,指令集架构(ISA)的每条指令是使用给定指令格式(并且如果被定义,则以该指令格式的指令模板中的给定的一个指令模板)表达的并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和以下指令格式,该指令格式包括用于指定操作码的操作码字段和用于选择操作数(源1/目的地和源2)的操作数字段;并且指令流中出现的这种ADD指令在操作数字段中具有选择特定操作数的特定内容。
图1图示了指令格式的实施例。如图所示,指令可以包括多个组件,该多个组件包括但不限于用于以下各项的一个或多个字段:一个或多个前缀101、操作码103、寻址字段105(例如,寄存器标识符、存储器寻址信息等)、位移值107、和/或立即数(immediate)109。应注意,一些指令利用该格式的一些或所有字段,而其他指令可能仅使用用于操作码103的字段。在一些实施例中,所图示的顺序是对这些字段进行编码的顺序,然而应理解的是,在其他实施例中,这些字段可以按不同顺序进行编码、组合等。
在使用时,一个或多个前缀字段101修饰指令。在一些实施例中,使用一个或多个前缀来重复字符串指令(例如,0xF0、0xF2、0xF3等),以提供区段覆盖(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E等),进行总线锁定操作,和/或改变操作数(例如,0x66)和地址大小(例如,0x67)。某些指令需要强制前缀(例如,0x66、0xF2、0xF3等)。这些前缀中的某些可被视为“传统(legacy)”前缀。其他前缀(本文详细描述其中的一个或多个示例)指示和/或提供进一步的能力,诸如指定特定寄存器等。其他前缀通常跟在“传统”前缀后面。
使用操作码字段103来至少部分地定义在对指令解码时要进行的操作。在一些实施例中,在操作码字段103中编码的主要操作码的长度为1个、2个、或3个字节。在其他实施例中,主要操作码的长度可不同。有时,会在另一字段中编码附加的3位操作码字段。
寻址字段105用于对指令的一个或多个操作数进行寻址,诸如,存储器中的位置或一个或多个寄存器。
图2图示了寻址字段105的实施例。在该图示中,示出了可选的ModR/M字节202和可选的比例、索引、基址(SIB)字节204。使用ModR/M字节202和SIB字节204来对指令的多达两个操作数进行编码,每个操作数是直接寄存器或有效存储器地址。应注意,由于并非所有指令都包括这些字段中的一个或多个字段,因此这些字段中的每一个字段是可选的。MOD R/M字节202包括MOD字段242、寄存器字段244、和R/M字段246。
MOD字段242的内容在存储器访问模式与非存储器访问模式之间有所不同。在一些实施例中,当MOD字段242具有二进制(b)值11时,利用寄存器-直接寻址模式,否则使用寄存器-间接寻址。
寄存器字段244可以对目的地寄存器操作数或源寄存器操作数进行编码,或者可以对操作码扩展进行编码而不用于对任何指令操作数进行编码。寄存器索引字段244的内容直接或通过地址生成来指定源或目的地操作数的位置(在寄存器中或在存储器中)。在一些实施例中,寄存器字段244被补充以来自前缀(例如,前缀101)的附加位,以允许更大的寻址。
R/M字段246可以用于对引用存储器地址的指令操作数进行编码,或者可以用于对目的地寄存器操作数或源寄存器操作数进行编码。应注意,在一些实施例中,R/M字段246可以与MOD字段242组合来规定寻址模式。
SIB字节204包括用于生成地址的比例字段252、索引字段254、和基址字段256。比例字段252指示缩放因子。索引字段254指定要使用的索引寄存器。在一些实施例中,索引字段254被补充以来自前缀(例如,前缀101)的附加位,以允许更大的寻址。基址字段256指定要使用的基址寄存器。在一些实施例中,基址字段256被补充以来自前缀(例如,前缀101)的附加位,以允许更大的寻址。实际上,比例字段252的内容允许缩放索引字段254的内容以用于存储器地址生成(例如,用于使用2比例*索引+基址的地址生成)。
一些寻址形式利用位移值来生成存储器地址。例如,可以根据2比例*索引+基址+位移、索引*比例+位移、r/m+位移、指令指针(RIP/EIP)+位移、寄存器+位移等来生成存储器地址。位移可以是1字节、2字节、4字节等值。在一些实施例中,位移字段107提供这个值。另外,在一些实施例中,在寻址字段105中指示已压缩位移方案的MOD字段中对位移因子用法进行编码,其中,针对该已压缩位移方案,通过将disp8与缩放因子N相乘来计算位移值,缩放因子N基于指令的输入元素大小、向量长度、和b位的值来确定。将位移值存储在位移字段107中。
在一些实施例中,立即数字段109指定指令的立即数。可以将立即数编码为1字节值、2字节值、4字节值等。
处理器压缩指令的实施例包括上文详细描述的字段中的一个或多个字段。例如,VHWCOMPRESS是在操作码字段103中编码的操作码的助记符。VHWCOMPRESS指令还可以包括前缀101,以进一步修饰指令(例如,规定操作数大小等)。
通过一个或多个寻址字段105提供地址(上文讨论为[addr])。假设使用SIB寻址(例如,使用SIB字节204)、R/M字段246、位移字段107等中的一个或多个字段,可以将地址存储在寄存器(诸如,由REG 244标识的寄存器)中。
如何提供深度也可以因实施例而异。例如,可以将深度存储在寄存器中(例如,由REG244或R/M 246指示的存储器)或者直接使用立即数字段109对深度进行编码。
下表提供地址和深度所在位置或引用位置的示例:
操作码 地址 深度
VHWCOMPRESS 存储器寻址 寄存器
图3是根据一些实施例的处理器核300的框图。在所图示的实施例中,有32个512位宽的向量寄存器310;这些寄存器被称为zmm0到zmm31。较低的16个zmm寄存器的较低阶的256位覆盖在寄存器ymm0-15上。较低的16个zmm寄存器的较低阶的128位(ymm寄存器的较低阶的128位)覆盖在寄存器xmm0-15上。
在所图示的实施例中,有8个写掩码寄存器315,每个写掩码寄存器的大小为64位;这些寄存器被称为k0到k7。在替代实施例中,写掩码寄存器315的大小为16位。在一些实施例中,向量掩码寄存器k0不能用作写掩码;当将通常指示k0的编码用于写掩码时,选择硬连线写掩码0xffff,从而有效地禁用该指令的写掩码。
在所图示的实施例中,有十六个64位通用寄存器,这些通用寄存器与现有的x86寻址模式一起用来以对存储器操作数进行寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、和R8到R15被引用。
在所图示的实施例中,标量浮点栈寄存器文件x87栈345是用于使用x87指令集扩展来对32/64/80位浮点数据进行标量浮点运算的八元素栈,其中,MMX打包整数平坦寄存器文件350混叠(aliased)在标量浮点栈寄存器文件x87栈345上;同时,使用MMX寄存器来对64位打包整数数据进行运算并且保存用于在MMX寄存器和XMM寄存器之间进行的一些操作的操作数。
替代实施例可以使用更宽或更窄的寄存器。另外,替代实施例可以使用更多、更少、或不同的寄存器文件和寄存器。
处理器核可以通过不同的方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:(1)旨在用于通用计算的通用有序核;(2)旨在用于通用计算的高性能通用乱序核;(3)旨在主要用于图形和/或科学(通量)计算的专用核。不同处理器的实现可以包括:(1)CPU,包括一个或多个旨在用于通用计算的通用有序核和/或一个或多个旨在用于通用计算的通用乱序核;以及(2)协处理器,包括一个或多个旨在主要用于图形和/或科学(通量)计算的专用核。此类不同的处理器导致不同的计算机系统架构,该计算机系统结构可以包括:(1)与CPU位于不同芯片上的协处理器;(2)与CPU位于同一封装中不同管芯上的协处理器;(3)与CPU位于同一管芯上的协处理器(在这种情况下,此协处理器有时被称为专用逻辑(诸如,集成图形和/或科学(通量)逻辑)或称为专用核);以及(4)片上系统,该片上系统可以将所述CPU(有时称为一个或多个应用核或一个或多个应用处理器)、上述协处理器、和附加功能包括在同一管芯上。接下来描述示例性核架构,然后描述示例性处理器和计算机架构。
图4A是图示出示例性有序管道和示例性寄存器重命名、乱序发布/执行管道两者的框图。图4B是图示出处理器中包括的有序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者的框图。图4A至4B中的实线框图示出了有序管道和有序核,而虚线框的可选添加图示出了寄存器重命名、乱序发布/执行管道和核。鉴于有序方面是乱序方面的子集,因而将描述乱序方面。
处理器管道400包括提取阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也称为派遣或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、写回/存储器写入阶段418、异常处置阶段422、和提交阶段424。
转到图4B,包括前端单元430的处理器核490耦合到执行引擎单元450,并且执行引擎单元450和处理器核490两者耦合到存储器单元470。核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代核类型。作为又一选项,核490可以是专用核,诸如(例如)网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元430包括分支预测单元432,分支预测单元432耦合到指令缓存单元434,指令缓存单元434耦合到指令转换后备缓冲器(translation lookaside buffer,TLB)436,指令转换后备缓冲器436耦合到指令提取单元438,指令提取单元438耦合到解码单元440。解码单元440(或解码器)可对指令进行解码,并且生成根据原始指令解码出的或以其他方式反映原始指令或从原始指令推导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。解码单元440可使用各种不同的机制来实现。合适机制的示例包括但并不限于查找表、硬件实施方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核490包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元440中或以其他方式在前端单元430内)。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,重命名/分配器单元452耦合到回退单元454和一组一个或多个调度器单元456。一个或多个调度器单元456代表任意数量的不同调度器,包括保留站、中央指令窗口等。一个或多个调度器单元456耦合到一个或多个物理寄存器文件单元458。每个物理寄存器文件单元458代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,诸如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。物理寄存器文件单元458包括向量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。一个或多个物理寄存器文件单元458与回退单元454重叠,以图示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用一个或多个重排序缓冲器和一个或多个回退寄存器文件;使用一个或多个未来文件、一个或多个历史缓冲器、和一个或多个回退寄存器文件;使用寄存器映射和寄存器池等)。回退单元454和一个或多个物理寄存器文件单元458耦合到一个或多个执行集群460。一个或多个执行集群460包括一组一个或多个执行单元462和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)进行各种操作(例如,平移、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但其他实施例可以仅包括一个执行单元或全部执行所有功能的多个执行单元。一个或多个调度器单元456、一个或多个物理寄存器文件单元458、和一个或多个执行集群460被示为可能是多个,这是因为某些实施例为某些类型的数据/操作创建不同的管道(例如,分别具有自己的调度器单元、物理寄存器文件单元、和/或执行集群的标量整数管道、标量浮点/打包整数/打包浮点/向量整数/向量浮点管道、和/或存储器访问管道--并且在单独的存储器访问管道的情况下,某些实施例被实施为只有该管道的执行集群具有一个或多个存储器访问单元464)。还应理解的是,在使用不同管道的情况下,这些管道中的一个或多个管道可以是乱序发布/执行管道,而其余管道可以是有序管道。
一组存储器访问单元464耦合到存储器单元470,存储器单元470包括数据TLB单元472,数据TLB单元472耦合到数据缓存单元474,数据缓存单元474耦合到二级(L2)缓存单元476。存储器访问单元464可包括加载单元、存储地址单元、和存储数据单元,每个单元都耦合到存储器单元470中的数据TLB单元472。指令缓存单元434还耦合到存储器单元470中的二级(L2)缓存单元476。L2缓存单元476耦合到一个或多个其他级缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发布/执行核架构可以如下实现管道400:(1)指令提取单元438执行提取阶段402和长度解码阶段404;(2)解码单元440执行解码阶段406;(3)重命名/分配器单元452执行分配阶段408和重命名阶段410;(4)一个或多个调度器单元456执行调度阶段412;(5)一个或多个物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460执行执行阶段416;(6)存储器单元470和一个或多个物理寄存器文件单元458执行写回/存储器写入阶段418;(7)各个单元都可能参与异常处置阶段422;以及(8)回退单元454和一个或多个物理寄存器文件单元458执行提交阶段424。核490可以支持一个或多个包括本文所述的一个或多个指令的指令集(例如,x86指令集(具有一些添加有新版本的扩展);加利福尼亚州森尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州森尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选附加扩展))。核490包括用于支持高级矢量扩展(AVX)(例如,AVX2和AVX-512)的逻辑。AVX2将整数命令扩展到256位。AVX-512是对用于x86指令集架构的多数据(SIMD)指令、256位高级向量扩展单指令的512位扩展。AVX-512指令使用向量寄存器310中的512位向量寄存器zmm0到zmm31。
应理解的是,核可以支持多线程化(执行两个或更多个并行的操作或线程集),并且可以通过多种方式来支持多线程化,这些方式包括时间切片多线程化、同时多线程化(其中,单个物理核为物理核同时进行多线程化的每个线程提供逻辑核)、或它们的组合(例如,诸如
Figure BDA0003366603560000111
超线程化技术中的时间切片提取和解码以及此后的同步多线程化)等。
虽然在乱序执行的上下文中描述了寄存器重命名,但是应理解,也可以在有序架构中使用寄存器重命名。虽然图示的处理器的实施例还包括分开的指令和数据缓存单元434/474以及共享的L2缓存单元476,但替代实施例可以具有用于指令和数据两者的单个内部缓存,诸如(例如)一级(L1)内部缓存或多级内部缓存。在一些实施例中,该系统可以包括内部缓存和位于核和/或处理器外部的外部缓存的组合。替代地,所有缓存都可以位于核和/或处理器外部。
图5A至图5B图示了更具体的示例性有序核架构的框图,其中,核将是芯片中的若干逻辑块(包括相同类型和/或不同类型的其他核)中的一个逻辑块。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口、和其他必要的I/O逻辑进行通信。
图5A是根据本发明的一些实施例的单个处理器核及其到管芯上互连网络502的连接和二级(L2)缓存的本地子集504的框图。在一个实施例中,指令解码器500支持具有打包数据指令集扩展(例如,AVX-512)的x86指令集。L1缓存506允许对缓存存储器从而对标量和向量单元的低延迟访问。虽然在一个实施例中(为了简化设计),标量单元508和向量单元510使用不同的寄存器集(分别是标量寄存器512和向量寄存器514),并且在它们之间传输的数据被写入存储器然后被从一级(L1)缓存506中读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集或包括允许数据在两个寄存器文件之间传输而不被写入和读回的通信路径))。
L2缓存的本地子集504是全局L2缓存的一部分,该全局L2缓存被划分成多个不同的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自身的L2缓存的本地子集504的直接访问路径。与访问它们自身的本地L2缓存子集的其他处理器核并行,处理器核读取的数据被存储在其L2缓存子集504中并且可被快速访问。处理器核写入的数据被存储在其自身的L2缓存子集504中,并在必要时被从其他子集清除。环形网络确保了共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2缓存、和其他逻辑块的代理在芯片内相互通信。每个环形数据路径为每个方向1012位宽。
图5B是图5A中的处理器核的一部分的展开图。图5B包括L1缓存506的L1数据缓存506A部分以及关于向量单元510和向量寄存器514的更多细节。具体地,向量单元510是执行整数指令、单精度浮点指令、和双精度浮点指令中的一种或多种指令的16宽幅的向量处理单元(VPU)(参见16-宽幅ALU 528)。VPU支持通过交换单元(swizzle unit)520对寄存器输入进行交换,通过数字转换单元522A和522B进行数字转换,以及通过复制单元524对存储器输入进行复制。写掩码寄存器526允许断言所得到的向量写入。
图6是片上系统(SoC)600的框图。图6中的类似元件具有相似的附图标记。另外,虚线框是更高级SoC上的可选特征。
一个或多个互连单元602耦合到处理器610和一个或多个集成存储器控制器单元614,以耦合到外部存储器650,其中,处理器610包括一组一个或多个核602A-N和一个或多个共享缓存单元606(也称为末级缓存(LLC)),核602A-N包括缓存单元604A到604N。外部存储器650可为易失性存储器或永久性存储器。
易失性存储器是在设备的电力中断的情况下其状态(以及因此存储在其上的数据)不确定的存储器。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)的一些变体。本文所述的存储器子系统可与多种存储器技术兼容,这些存储器技术是诸如DDR3(双倍数据速率版本3,JEDEC(联合电子设备工程委员会)于2007年6月27日最初发布)、DDR4(DDR版本4,JEDEC于2012年9月发布的初始规范)、DDR4E(DDR版本4)、LPDDR3(低功率DDR版本3,JESD209-3B,JEDEC于2013年8月发布)、LPDDR4(LPDDR版本4,JESD209-4,JEDEC于2014年8月最初发布)、WIO2(宽输入/输出版本2,JESD229-2,JEDEC于2014年8月最初发布)、HBM(高带宽存储器,JESD325,JEDEC于2013年10月最初发布)、DDR5(DDR版本5,目前处于JEDEC讨论中)、LPDDR5(目前处于JEDEC讨论中)、HBM2(HBM版本2,目前处于JEDEC讨论中)、或其他或存储器技术的组合、以及基于这些规范的衍生或扩展的技术。JEDEC标准可在www.jedec.org上获得。
图7是根据本发明实施例的图6所示的SoC 600的一部分的框图,其中,该部分包括集成存储器控制器单元614中的压缩/解压缩引擎700。压缩/解压缩引擎700进行数据压缩和数据解压缩。
压缩/解压缩引擎700包括数据缓冲器702、预取数据缓存706、和压缩/解压缩单元(压缩/解压缩电路)704,以对存储在数据缓冲器702中的数据进行压缩或解压缩。压缩/解压缩单元704可使用单个压缩算法或多个压缩算法的组合。与已压缩数据一起存储的元数据包括与用于对数据进行压缩的压缩算法相关的信息。
表中示出了用于压缩AVX-512指令的指令格式。压缩AVX-512指令使用缓存直写模式(cache write through mode),绕过SoC 600中的缓存604A-604N、606并将数据存储在存储器控制器614中的数据缓冲器702中。每条指令包括两个或三个操作数(操作数1、操作数2、操作数3)。每个操作数要么被读取(r)要么被写入(w)。
操作码 操作数1 操作数2 操作数3
VHWCOMPRESS mem(w) zmm(r)
VMOVRAWCOMPRESS zmm(w) reg(w) mem(r)
VWRCOMPRESS Mem(w) zmm(r) reg(r)
VHWCOMPRESSSTORE mem(w) reg(r)
图8是VHWCOMPRESS指令在SoC 600中的操作的流程图。
在块800处,指令提取单元438(图4)从指令缓存434(图4)提取VHWCOMPRESS指令。VHWCOMPRESS指令具有两个操作数,第一个操作数是存储器650中的地址(存储器650中的存储器位置),第二个操作数是向量寄存器310(图3)中的一个zmm寄存器。处理继续到块802。
在块802处,在解码单元440(图4B)中对VHWCOMPRESS指令进行解码。处理继续到块804。
在块804处,响应于经解码指令,执行引擎单元450(图4B)中的执行单元462(图4B)读取存储在向量寄存器310(图3)中的512位zmm寄存器中的64字节数据(一个512位的数据块)。处理继续到块806。
在块806处,执行引擎单元450(图4B)中的执行单元462(图4B)将从zmm寄存器读取的64字节数据存储在存储器控制器614中的压缩/解压缩引擎700中的数据缓冲器702(图7)中。处理继续到块808。
在块808处,将数据缓冲器702组织为先进先出(FIFO)缓冲器。数据缓冲器702中的每个条目720具有数据字段710、存储器地址字段712、和有效位714。将向量寄存器310(图3)中的、由VHWCOMPRESS指令的第二操作数标识的zmm寄存器中的数据写入数据缓冲器702中的条目720中的数据字段710。将由VHWCOMPRESS指令的第一操作数标识的存储器地址写入数据缓冲器702中的条目720中的存储器地址字段712。当已将512位(64字节)数据存储在数据字段710中时,将有效位714设置为逻辑‘1’以指示可用于压缩。如果将有效位714设置为逻辑‘1’,则处理继续到块810以对存储在数据字段710中的数据进行压缩。如果压缩数据缓冲器条目中的有效位是1,则将数据缓冲器中的相邻数据块发送到压缩逻辑进行压缩。如果不是,则处理继续到块800以执行另一条指令。
在块810处,将存储在数据缓冲器702的数据字段710中的512位数据发送到压缩/解压缩单元704进行压缩。处理继续到块812。
在块812处,在条目中的存储器地址字段712中的存储器地址,将已压缩数据和与已压缩数据相关联的元数据写入到存储器650。该元数据包括压缩位,可将该压缩位设置为逻辑‘1’来指示存储在存储器650中的存储器地址的数据块是已压缩数据。在一个实施例中,可将元数据中的压缩位存储在存储器芯片中,该存储器芯片还存储错误校正代码(ECC)。处理继续到块800以执行另一条指令。
图9A至图9B图示了存储在存储器650中的已压缩数据和未压缩数据的格式的示例。图9A图示了未压缩相邻数据块。图9B图示了对应于图9A所示的未压缩数据块的已压缩数据和相关联的元数据。元数据用于存储对已压缩数据块进行解压缩所需的信息。
图9B图示了通过对图9A所示的未压缩块902进行VHWCOMPRESS指令的操作所产生的、存储在存储器650中的已压缩数据块904中的图9A所示的相邻数据块A、B、C、D的已压缩数据格式。已压缩数据块904存储已压缩数据的多个副本(元数据+ABCD)。在所示的实施例中,有已压缩数据的四个副本(元数据+ABCD)。由于访问已压缩相邻块A、B、C、或D的读取请求可使用原始地址(原始读取请求的地址),因此存储已压缩数据的多个副本能节省存储器控制器614与存储器650之间的存储器带宽。
在一个实施例中,VHWCOMPRESS指令可用于离线压缩只读数据。在系统中执行的软件应用可使用VHWCOMPRESS指令压缩关键只读数据结构,以压缩关键只读数据结构中的每个64字节块。每个VHWCOMPRESS指令可将已压缩只读数据结构写入存储器650中存储未压缩只读数据结构的地址或存储器650中的另一个地址。VHWCOMPRESS指令使用直写模式来绕过处理器中的缓存并将数据存储在压缩/解压缩引擎700中的数据缓冲器702中。
在另一个实施例中,在系统中执行的软件代理可扫描存储器650中的只读页面并使用VHWCOMPRESS指令来压缩只读页面中的数据。
图10是VMOVRAWCOMPRESS指令在SoC 600中的操作的流程图。VMOVRAWCOMPRESS读取存储在存储器中的已压缩数据和相关联的元数据,并且将已压缩数据存储在zmm寄存器中并将元数据存储在通用寄存器中。
在块1000处,指令提取单元438(图4B)从指令缓存434(图4B)提取VMOVRAWCOMPRESS指令。VMOVRAWCOMPRESS指令具有三个操作数,第一个操作数是向量寄存器310(图3)中的一个zmm寄存器,第二个操作数是存储器650中的地址,第三个操作数是通用寄存器。处理继续到块1002。
在块1002处,在解码单元440(图4B)中对VMOVRAWCOMPRESS指令进行解码。处理继续到块1004。
在块1004处,执行引擎单元450(图4B)中的执行单元462(图4B)读取存储在存储器650中的64字节的已压缩数据和元数据。处理继续到块1006。
在块1006处,执行引擎单元450(图4B)中的执行单元462(图4B)将从存储器650读取的64字节的已压缩数据存储在向量寄存器310(图3)中的一个zmm寄存器中。处理继续到块1008。
在块1008处,执行引擎单元450(图4B)中的执行单元462(图4B)将从存储器读取的元数据存储在通用寄存器325(图3)中。处理继续到块1000以提取另一条指令。
图11是VWRCOMPRESS指令在SoC 600中的操作的流程图。
VWRCOMPRESS指令将已压缩数据和相关联的元数据写入存储器650。
在块1100处,指令提取单元438(图4)从指令缓存434(图4)提取VWRCOMPRESS指令。VWRCOMPRESS指令具有三个操作数,第一个操作数是存储器650中的地址,第二个操作数是向量寄存器310(图3)中的一个zmm寄存器,第三个操作数是通用寄存器。处理继续到块1102。
在块1102处,在解码单元440(图4B)中对VWRCOMPRESS指令进行解码。处理继续到块1104。
在块1104处,执行引擎单元450(图4B)中的执行单元462(图4B)将存储在一个zmm寄存器中的64字节的已压缩数据写入存储器。处理继续到块1106。
在块1106处,执行引擎单元450(图4B)中的执行单元462(图4B)将存储在通用寄存器中的元数据写入存储器650。处理继续到块1100以提取另一条指令。
图12是VHWCOMPRESSSTORE指令在SoC 600中的操作的流程图。存储在存储器650中的已压缩数据通常是只读数据,也就是说,它是在使用存储在存储器650中的已压缩数据710的应用执行期间未被写入的数据。在使用存储在存储器650中的已压缩数据710的应用执行期间可能需要修改(写入)已压缩数据的情况下,压缩AVX-512指令集包括VHWCOMPRESSSTORE指令。VHWCOMPRESSSTORE指令进行读取-修改-写入,以将通用寄存器中的数据写入存储器650。
在块1200处,指令提取单元438(图4)从指令缓存434(图4)提取VHWCOMPRESSSTORE指令。VHWCOMPRESSSTORE指令具有两个操作数,第一个操作数是存储在存储器650中的已压缩数据710中的已压缩块的地址,第二个操作数是通用寄存器。处理继续到块1202。
在块1202处,在解码单元440(图4B)中对VHWCOMPRESSSTORE指令进行解码。处理继续到块1204。
在块1204处,执行引擎单元450(图4B)中的执行单元462(图4B)读取存储在通用存储器中的、要写入存储器的64字节数据。处理继续到块1206。
在块1206处,执行引擎单元450(图4B)中的执行单元462(图4B)将从通用寄存器读取的、要写入存储器650的64字节数据存储在存储器控制器14中的压缩/解压缩引擎700中的写入缓冲器中。处理继续到块1208。
在块1208处,将数据缓冲器702中的数据字段10中存储的512位数据发送至压缩/解压缩单元704进行解压缩。处理继续到块1210。
在块1210处,将存储在写缓冲器中的64字节数据和从存储器650读取的其他的已解压缩数据写入存储器650。处理继续到块1200以提取另一条指令。
使用存储在存储器中的神经网络权重的人工智能(AI)应用可使用结合图9至图12讨论的压缩AVX-512指令。神经网络权重是只读数据。在神经网络权重经过训练后,可使用离线压缩来对神经网络权重进行压缩,并将已压缩神经网络权重存储在存储器中。在AI应用运行期间,使用压缩AVX-512指令来从存储器读取已压缩神经网络权重,在压缩/解压缩引擎中对已压缩神经网络权重进行解压缩,以使得神经网络权重可由处理器中的其他指令使用。当存在空间局部性时,使用已解压缩块中的权重的后续指令可读取存储在预取缓存中的已解压缩块中的权重。因此,压缩AVX-512指令增加了有效存储器带宽并减少了权重访问的存储器访问延迟。
在AI推理中,权重是只读数据。在权重经过训练后,使用离线压缩对权重进行一次压缩。接下来,使用VMOVRAWCOMPRESS指令来将已压缩数据和元数据读取到zmm寄存器。然后,使用VWRCOMPRESS指令来将已压缩数据和元数据写入存储器。
图13是根据本发明实施例的图6所示的SoC 600的一部分的框图,其中,该部分包括二级(L2)缓存控制器中的压缩/解压缩引擎700。一个或多个共享缓存单元606包括L2缓存控制器和末级缓存(LLC)。代替将压缩/解压缩引擎700放置在存储器控制器中,压缩/解压缩引擎700在一个或多个共享缓存单元606中的L2缓存控制器中。在从存储器650读取已压缩数据后,根据缓存管理策略,将其存储在一个或多个共享缓存单元606或/和存储器侧缓存1300中的LLC中。存储器侧缓存1300中的LLC和块的元数据字段包括压缩位。如果块被压缩,则将压缩位设置为1。如果没有被压缩,则将压缩位设置为0。
在一个或多个共享缓存单元606中的L2缓存控制器中的压缩/解压缩引擎700中对从缓存/存储器提取的已压缩数据进行解压缩。将用于压缩AVX-512指令的数据存储在vmm寄存器中,并将其他已解压缩的相邻数据存储在一个或多个共享缓存单元606中的压缩/解压缩引擎700中的预取数据缓存中。响应于在应用执行期间对已压缩只读数据块中的相邻数据块的后续请求,直接从一个或多个共享缓存单元606中的压缩/解压缩引擎700中的预取数据缓存中读取未压缩相邻块。
VHWCOMPRESSSTORE(mem,reg)指令执行用于所有权(RFO)操作的读取,以将已压缩块读取到L2缓存控制器,对该块进行解压缩,使缓存中该块的所有已压缩副本无效,并将新数据写入到写缓冲器。将一个或多个共享缓存单元606中的压缩/解压缩引擎700中的预取数据缓存中的新数据和其他已解压缩数据写入存储器650中的相应存储器地址。
在一个示例中,使用有限字典的频繁模式压缩(FPC-D)算法来压缩AI应用所使用的数据,该AI应用将缓存行压缩为任意大小(以字节粒度)并且无论物理缓存行边界如何对缓存集中的尽可能多的行进行压缩,几何平均压缩比为1.54。这个比率表示缓存效率可从压缩AVX-512指令的使用中显著受益。
图14是图6所示的SoC 600的框图。
虚线框是更高级SoC上的可选特征。在图14中,一个或多个互连单元602耦合到:处理器610,包括一组一个或多个核602A-N以及一个或多个共享缓存单元606,一个或多个核602A-N包括缓存单元604A到604N;系统代理单元1410;一个或多个总线控制器单元1416;一个或多个集成存储器控制器单元614;一组一个或多个协处理器1420,一个或多个协处理器1420可以包括集成图形逻辑、图像处理器、音频处理器、和视频处理器;静态随机存取存储器(SRAM)单元1430;直接存储器存取(DMA)单元1432;以及显示单元1440,用于耦合到一个或多个外部显示器。在一个实施例中,一个或多个协处理器1420包括专用处理器,诸如(例如)网络或通信处理器、压缩引擎、GPGPU、高通量MIC处理器、嵌入式处理器等。
图15是包括图6所示的SoC 600的系统的框图。
计算机系统1500可对应于包括但不限于服务器、工作站计算机、台式计算机、膝上型计算机、和/或平板计算机的计算设备。
SoC 600包括处理器610、集成存储器控制器614、和图形处理器单元(GPU)模块1510。在其他实施例中,集成存储器控制器614可在SoC 600的外部。集成存储器控制器614通信地耦合到可存储操作系统1502的存储器650。操作系统1502是管理包括存储器分配和访问I/O设备在内的计算机硬件和软件的软件。操作系统的示例包括
Figure BDA0003366603560000201
Figure BDA0003366603560000202
根据一个实施例,处理器610可对应于单核或多核通用处理器,诸如由英特尔公司提供的处理器。
图形处理器单元(GPU)1510可包括一个或多个GPU核和可存储用于GPU核的图形相关数据的GPU缓存。GPU核内部可包括一个或多个执行单元以及一个或多个指令和数据缓存。另外,图形处理器单元(GPU)1510可包含图15中未示出的其他图形逻辑单元,诸如一个或多个顶点处理单元、光栅化单元、媒体处理单元、和编解码器。
在I/O子系统1512内,存在一个或多个I/O适配器1516,以将处理器610内利用的主机通信协议转换为与特定I/O设备兼容的协议。适配器可用于转换的一些协议包括外围组件互连(PCI)-快速(PCIe);通用串行总线(USB);串行高级技术附件(SATA)、和电气和电子工程师协会(IEEE)1594“火线(Firewire)”。
一个或多个I/O适配器1516可与外部I/O设备1504通信,外部I/O设备1504可包括例如一个或多个用户接口设备(包括显示器和/或触摸屏显示器1540、打印机、小键盘、键盘、通信逻辑、有线和/或无线)、和一个或多个存储设备(包括硬盘驱动器(HDD)、固态驱动器(SSD)、可移动存储介质、数字视频盘(DVD)驱动器、光盘(CD)驱动器、独立磁盘冗余阵列(RAID)、磁带驱动器、或其他存储设备)。存储设备可以通过一条或多条总线使用一种或多种协议以通信方式和/或物理方式耦合在一起,该一种或多种协议包括但不限于SAS(串行连接SCSI(小型计算机系统接口))、PCIe(外围组件互连快速)、PCIe(外围组件互连快速)上的NVMe(NVM快速)、和SATA(串行ATA(高级技术附件))。
另外,可存在一个或多个无线协议I/O适配器。无线协议的示例用于个人域网络,诸如IEEE802.15和蓝牙4.0;无线局域网,诸如基于IEEE802.11的无线协议;以及蜂窝网络。
本文公开的机制的实施例可以通过硬件、软件、固件、或此类实现方式的组合来实现。本发明的实施例可以实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、和至少一个输出设备。
可将程序代码应用于输入指令,以执行本文描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,该处理器是诸如(例如)数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)、或微处理器。
程序代码可以用高级过程或面向对象的编程语言来实现,以便与处理系统通信。如果需要,程序代码也可以用汇编语言或机器语言实现。事实上,本文描述的机制不限于任何特定的编程语言的范围。在任何情况下,语言都可以是编译语言或解析语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令代表处理器内的各种逻辑,并且在被机器读取时使得机器制造用以执行本文描述的技术的逻辑。此类被称为“IP核”的表示可以存储在有形机器可读介质上,并被提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于由机器或设备制造或形成的制品的非暂态有形布置,包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写光盘(CD-RW)、和磁光盘;半导体设备,诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM);磁卡或光卡;或任何适用于存储电子指令的其他类型的介质。
因此,本发明的实施例还包括非暂态有形机器可读介质,该介质包含指令或包含设计数据,诸如定义本文描述的结构、电路、装置、处理器、和/或系统特征的硬件描述语言(HDL)。这些实施例也可以被称为程序产品。
本文所示的流程图提供了各种处理动作的顺序的示例。流程图可以指示要由软件或固件例程执行的操作以及物理操作。在一个实施例中,流程图可图示出可在硬件和/或软件中实现的有限状态机(FSM)的状态。虽然以特定的顺序或次序示出,但是除非另有说明,否则可以修改动作的次序。因此,所图示出的实施例应作为示例理解,并且可以按照不同的次序执行处理,以及可并行执行一些动作。另外,在各种实施例中可省略一个或多个动作;因此,并非在每个实施例中都需要所有动作。其他处理流程也可以。
就本文描述的各种操作或功能而言,可将它们描述或定义为软件代码、指令、配置、和/或数据。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或差异代码(“德尔塔”或“补丁”代码)。本文描述的实施例的软件内容可经由上面存储有内容的制造产品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可使机器执行所描述的功能或操作,并且包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机构,诸如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与硬连线、无线、光学等介质中的任一种接口连接以与另一设备(诸如存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等)通信的任何机制。可通过提供配置参数和/或发送信号来配置通信接口,以使通信接口准备好提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文描述的各个组件可以是用于执行所描述的操作或功能的装置。本文描述的每个组件包括软件、硬件、或它们的组合。这些组件可实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。
除了本文描述的内容外,在不脱离本发明的范围的情况下,可对本发明公开的实施例和实施方式做出各种修改。
因此,本文中的说明和示例应该被理解为说明性而非限制性的。本发明的范围应仅参考所附权利要求来衡量。
以下示例涉及进一步的实施例。示例中的细节可以用在一个或多个实施例中的任意位置。
示例1是一种处理器,包括:指令解码器,用以对指令进行解码,所述指令包括第一操作数和第二操作数;以及执行单元,与所述指令解码器耦合。所述执行单元响应于所述指令以:读取存储在所述第二操作数中的数据块;以及将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩。所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩。所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
示例2包括示例1的处理器,可选地,其中所述第一操作数是所述存储器中的存储器位置。
示例3包括示例2的处理器,可选地,其中所述引擎在缓存控制器中并且所述存储器为末级缓存。
示例4包括示例2的处理器,可选地,其中所述处理器包括集成存储器控制器,所述引擎在所述集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
示例5包括示例1的处理器,可选地,其中要被所述引擎压缩的数据是只读数据。
示例6包括示例1的处理器,可选地,其中所述第二操作数是向量寄存器。
示例7包括示例6的处理器,可选地,其中所述向量寄存器为512位。
示例8是一种由处理器执行的方法,包括:对处理器的指令解码器中的指令进行解码,所述指令包括第一操作数和第二操作数;响应于所述指令,通过执行单元读取存储在所述第二操作数中的数据块;以及通过所述执行单元将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
示例9包括示例8的方法,可选地,其中所述第一操作数是所述存储器中的存储器位置。
示例10包括示例9的方法,可选地,其中所述引擎在缓存控制器中并且所述存储器为末级缓存。
示例11包括示例9的方法,可选地,其中所述引擎在集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
示例12包括示例8的方法,可选地,其中要被所述引擎压缩的数据是只读数据。
示例13包括示例8的方法,可选地,其中所述第二操作数是向量寄存器。
示例14包括示例13的方法,优选地,所述寄存器为512位。
示例15是一种用以处理指令的系统,包括:存储器,用以存储数据和指令;以及处理器,耦合到所述存储器以执行所述指令,所述处理器包括:指令解码器,用以对指令进行解码,所述指令包括第一操作数和第二操作数;执行单元,与所述指令解码器耦合,所述执行单元响应于所述指令以:读取存储在所述第二操作数中的数据块;以及将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
示例16包括示例15的系统,可选地,其中所述第一操作数是所述存储器中的存储器位置。
示例17包括示例16的系统,可选地,其中所述引擎在缓存控制器中并且所述存储器为末级缓存。
示例18包括示例16的系统,可选地,其中所述引擎在集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
示例19包括示例15的系统,可选地,其中要被所述引擎压缩的数据是只读数据。
示例20包括示例15的系统,可选地,其中所述第二操作数是512位向量寄存器。
示例21是一种包括非暂态机器可读存储介质的制品。所述非暂态机器可读存储介质存储多个指令,所述多个指令包括用以执行压缩的指令,在被访问时,所述指令使得机器执行包括以下处理的操作:对处理器的指令解码器中的指令进行解码,所述指令包括第一操作数和第二操作数;响应于所述指令,通过执行单元读取存储在所述第二操作数中的数据块;以及通过所述执行单元将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
示例22包括示例21的制品,可选地,其中所述第一操作数是存储器位置。
示例23包括示例22的制品,可选地,其中所述引擎在缓存控制器中并且所述存储器为末级缓存。
示例24包括示例22的制品,可选地,其中所述引擎在集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
示例25包括示例21的制品,可选地,其中要被所述引擎压缩的数据是只读数据。
示例26是一种处理器或其他装置,操作以执行示例8至14中任一项所述的方法。
示例27是一种处理器或其他装置,包括用于执行示例8至14中任一项所述的方法的部件。
示例28是一种处理器或其他装置,包括操作以执行示例8至14中任一项所述的方法的模块和/或单元和/或逻辑和/或电路和/或部件的任意组合。
示例29是一种可选的非暂态和/或有形机器可读介质,可选地,存储或以其他方式提供包括第一指令在内的指令,所述第一指令在被处理器、计算机系统、电子设备、或其他机器执行时和/或执行的情况下,所述第一指令操作以使得所述机器执行示例8至14中任一项所述的方法。
示例30是一种大致如本文所述的处理器或其他装置。
示例31是一种处理器或其他装置,操作以执行大致如本文所述的任何方法。
示例32是一种处理器或其他装置,操作以执行大致如本文所述的任何指令。

Claims (22)

1.一种处理器,包括:
指令解码器,用以对指令进行解码,所述指令包括第一操作数和第二操作数;
执行单元,与所述指令解码器耦合,所述执行单元响应于所述指令以:
读取存储在所述第二操作数中的数据块;以及
将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
2.根据权利要求1所述的处理器,其中,所述第一操作数是所述存储器中的存储器位置。
3.根据权利要求2所述的处理器,还包括:
缓存控制器,其中,所述引擎在所述缓存控制器中并且所述存储器为末级缓存。
4.根据权利要求2所述的处理器,还包括:
集成存储器控制器,其中,所述引擎在所述集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
5.根据权利要求1所述的处理器,其中,要被所述引擎压缩的数据是只读数据。
6.根据权利要求1所述的处理器,其中,所述第二操作数是向量寄存器。
7.根据权利要求6所述的处理器,其中,所述向量寄存器为512位。
8.一种方法,包括:
对处理器的指令解码器中的指令进行解码,所述指令包括第一操作数和第二操作数;
响应于所述指令,通过执行单元读取存储在所述第二操作数中的数据块;以及
通过所述执行单元将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
9.根据权利要求8所述的方法,其中,所述第一操作数是所述存储器中的存储器位置。
10.根据权利要求9所述的方法,其中,所述引擎在缓存控制器中并且所述存储器为末级缓存。
11.根据权利要求9所述的方法,其中,所述引擎在集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
12.根据权利要求8所述的方法,其中,要被所述引擎压缩的数据是只读数据。
13.根据权利要求8所述的方法,其中,所述第二操作数是向量寄存器。
14.根据权利要求13所述的方法,其中,所述向量寄存器为512位。
15.一种装置,包括用于执行权利要求8至14中任一项所述的方法的部件。
16.一种机器可读介质,包括代码,所述代码在被执行时使得机器执行权利要求8至14中任一项所述的方法。
17.一种系统,包括:
存储器,用以存储数据和指令;以及
处理器,耦合到所述存储器以执行所述指令,所述处理器包括:
指令解码器,用以对指令进行解码,所述指令包括第一操作数和第二操作数;
执行单元,与所述指令解码器耦合,所述执行单元响应于所述指令以:
读取存储在所述第二操作数中的数据块;以及
将所述第二操作数存储在引擎中的数据缓冲器和预取数据缓存中,以进行数据压缩和数据解压缩,所述引擎包括压缩/解压缩单元,用以对存储在所述数据缓冲器中的所述第二操作数进行压缩,所述引擎提供已压缩数据块并将所述已压缩数据块存储在存储器中的多个相邻块中。
18.根据权利要求17所述的系统,其中,所述第一操作数是所述存储器中的存储器位置。
19.根据权利要求18所述的系统,还包括:
缓存控制器,其中,所述引擎在所述缓存控制器中并且所述存储器为末级缓存。
20.根据权利要求18所述的系统,还包括:
集成存储器控制器,其中,所述引擎在所述集成存储器控制器中并且所述存储器通信地耦合到所述处理器。
21.根据权利要求17所述的系统,其中,要被所述引擎压缩的数据是只读数据。
22.根据权利要求17所述的系统,其中,所述第二操作数是512位向量寄存器。
CN202111383819.7A 2020-12-23 2021-11-22 用于数据压缩和解压缩的处理器指令 Pending CN114661677A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/133,328 US20220197642A1 (en) 2020-12-23 2020-12-23 Processor instructions for data compression and decompression
US17/133,328 2020-12-23

Publications (1)

Publication Number Publication Date
CN114661677A true CN114661677A (zh) 2022-06-24

Family

ID=77821593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111383819.7A Pending CN114661677A (zh) 2020-12-23 2021-11-22 用于数据压缩和解压缩的处理器指令

Country Status (3)

Country Link
US (1) US20220197642A1 (zh)
EP (1) EP4020172A1 (zh)
CN (1) CN114661677A (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6618506B1 (en) * 1997-09-23 2003-09-09 International Business Machines Corporation Method and apparatus for improved compression and decompression
US6748520B1 (en) * 2000-05-02 2004-06-08 3Com Corporation System and method for compressing and decompressing a binary code image
US6865664B2 (en) * 2000-12-13 2005-03-08 Conexant Systems, Inc. Methods, systems, and computer program products for compressing a computer program based on a compression criterion and executing the compressed program
US7552316B2 (en) * 2004-07-26 2009-06-23 Via Technologies, Inc. Method and apparatus for compressing instructions to have consecutively addressed operands and for corresponding decompression in a computer system
US7773005B2 (en) * 2008-12-05 2010-08-10 Advanced Micro Devices, Inc. Method and apparatus for decoding variable length data
US9274802B2 (en) * 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
CN105264779B (zh) * 2013-01-22 2019-06-07 阿尔特拉公司 使用simd指令的数据压缩和解压
US10365892B2 (en) * 2017-01-16 2019-07-30 International Business Machines Corporation Decimal floating point instructions to perform directly on compressed decimal floating point data
US20220180467A1 (en) * 2019-03-15 2022-06-09 Intel Corporation Systems and methods for updating memory side caches in a multi-gpu configuration
BR112021016106A2 (pt) * 2019-03-15 2021-11-09 Intel Corp Processador gráfico de propósito geral, método e sistema de processamento de dados

Also Published As

Publication number Publication date
US20220197642A1 (en) 2022-06-23
EP4020172A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
CN107250993B (zh) 向量缓存行写回处理器、方法、系统和指令
US11645135B2 (en) Hardware apparatuses and methods for memory corruption detection
US10141033B2 (en) Multiple register memory access instructions, processors, methods, and systems
JP7416393B2 (ja) テンソル並べ替えエンジンのための装置および方法
US11068264B2 (en) Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers
CN110580175A (zh) 可变格式、可变稀疏矩阵乘法指令
KR101839479B1 (ko) 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들
CN111886575A (zh) 用于存储器配置的动态变换的体系结构
KR101787851B1 (ko) 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법
CN108228234B (zh) 用于聚集-更新-分散操作的加速器
JP5806748B2 (ja) 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法
EP3575955B1 (en) Indirect memory fetcher
US10069512B2 (en) Systems, methods, and apparatuses for decompression using hardware and software
US20140189322A1 (en) Systems, Apparatuses, and Methods for Masking Usage Counting
US20220197642A1 (en) Processor instructions for data compression and decompression
US20230198548A1 (en) Apparatus and method for constant detection during compress operations
CN114676090A (zh) 用于低时延页解压缩和压缩加速的电路和方法
TW202416131A (zh) 用於壓縮操作期間的常數偵測之設備及方法
GB2514885A (en) Systems, apparatuses, and methods for zeroing of bits in a data element

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination