一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于模式的高速缓存块压缩的制作方法

2022-07-11 06:32:00 来源:中国专利 TAG:

基于模式的高速缓存块压缩
1.相关申请的交叉引用
2.本技术要求2019年11月25日提交的标题为“pattern-based cache block compression(基于模式的高速缓存块压缩)”的美国临时申请号62/939,990和2020年9月23日提交的标题为“pattern-based cache block compression(基于模式的高速缓存块压缩)”的美国非临时申请号17/029,158的权益,这些申请的内容以引用方式并入本文。
3.政府许可权
4.本发明是根据劳伦斯利弗莫尔国家安全局(lawrence livermore national security)的由美国能源部(doe)授予的pathforward项目(主合同号为de-ac52-07na27344,子合同号为b620717)在政府支持下进行的。政府享有本发明中的某些权利。


背景技术:

5.高速缓存存储器或高速缓存是硬件存储器,通常与访问高速缓存的处理器在同一裸片上实施,并且被配置为与从较慢和/或更远离处理器的存储位置(诸如主存储器、后备存储区、较低层级的高速缓存存储器等)检索信息相比,减少访问处理器频繁使用的信息所需的时间和/或能量。
6.信息通常以固定大小的单位存储在高速缓存中,所述单位通常被称为高速缓存块或高速缓存行。通过将固定大小的高速缓存块中的信息压缩为更小的表示(例如,将64字节块压缩为32字节),可以增加高速缓存的容量、链路带宽和/或内存。以这种方式压缩高速缓存块通常被称为高速缓存块压缩。
7.用于压缩高速缓存块的各种技术通常也适用于其他类型的数据和/或存储装置。在此上下文中,此类技术通常被称为数据块压缩。
附图说明
8.可以从结合附图以举例的方式给出的以下描述中获得更详细的理解,在附图中:
9.图1是其中可以实施本公开的一个或多个特征的示例性装置的框图;
10.图2是图1的装置的框图,示出了另外的细节;
11.图3是示出用于压缩未压缩高速缓存块的示例性过程的流程图;
12.图4是示出示例性压缩电路的示意图;
13.图5是示出用于解压缩压缩高速缓存块的示例性过程的流程图;
14.图6是示出示例性解压缩电路的示意图;
15.图7是示出示例性高速缓存块模式集合的框图;
16.图8是示出由特定高速缓存块模式表示的示例性高速缓存块值的框图;
17.图9是示出用于生成压缩器和/或解压缩器的示例性过程的流程图;
18.图10是示出用于从训练轨迹确定模式轨迹的示例性过程的流程图;
19.图11是示出示例性高速缓存块模式集合中的高速缓存块模式之间的示例性关系的点阵图;
20.图12是示出用于缩减高速缓存块模式集合的示例性过程的流程图;以及
21.图13是示出各种压缩算法的示例性性能的条形图。
具体实施方式
22.一些实施方式提供了压缩器和/或在压缩器中实施的用于执行基于模式的高速缓存块压缩的方法。未压缩高速缓存块被输入到压缩器。字节值在未压缩高速缓存块中被识别。基于字节值在高速缓存块模式集合中搜索高速缓存块模式。基于字节值和高速缓存块模式输出压缩高速缓存块。
23.在一些实施方式中,字节值被转换为符号,并且未压缩高速缓存块根据符号来表示,每个符号代表特定高速缓存块。在一些实施方式中,通过基于符号搜索高速缓存块模式集合,来基于字节值在高速缓存块模式集合中搜索高速缓存块模式。在一些实施方式中,压缩高速缓存块包括字节值和高速缓存块模式集合的索引。在一些实施方式中,压缩高速缓存块包括字节字典和元数据。在一些实施方式中,元数据包括高速缓存块模式集合的索引。在一些实施方式中,字节字典包括字节值中的每一个,并且对于字节值中的每一个,字节字典仅包括一个副本。
24.一些实施方式提供了解压缩器和/或在解压缩器中实施的用于执行基于模式的高速缓存块解压缩的方法。压缩高速缓存块被输入到解压器。基于高速缓存块的元数据识别高速缓存块模式。高速缓存块模式应用于高速缓存块的字节字典。基于高速缓存块模式和字节字典输出未压缩高速缓存块。
25.在一些实施方式中,压缩块包括字节值和高速缓存块模式集合的索引。在一些实施方式中,字节字典包括未压缩高速缓存块的字节值。在一些实施方式中,字节字典包括字节值中的每一个,并且对于字节值中的每一个,字节字典仅包括一个副本。在一些实施方式中,元数据包括高速缓存块模式集合的索引。在一些实施方式中,基于高速缓存块的元数据识别高速缓存块模式包括基于元数据在高速缓存块模式集合中搜索高速缓存块模式。在一些实施方式中,高速缓存块模式包括对应于字节字典的至少一个字节的至少一个符号。在一些实施方式中,压缩高速缓存块包括字节值。在一些实施方式中,高速缓存块的字节字典包括未压缩高速缓存块的特定字节值。
26.一些实施方式提供了用于生成被配置用于基于模式的高速缓存块压缩的硬件的方法、系统和装置。输入高速缓存轨迹,并基于高速缓存轨迹确定高速缓存块模式集合。基于压缩大小集合和每个大小的目标数量模式,从高速缓存块模式集合中确定高速缓存块模式子集。基于所确定的高速缓存块模式子集输出硬件描述。
27.在一些实施方式中,高速缓存块模式集合基于高速缓存轨迹中的出现频率进行排序以生成排序的高速缓存块模式集合。在一些实施方式中,通过删除高速缓存轨迹中以低于阈值频率频率出现的模式来缩减排序的高速缓存块模式以生成阈值高速缓存块模式集合。在一些实施方式中,从阈值高速缓存块模式中删除不具有最大包括性的高速缓存块模式以生成局部最大高速缓存块模式集合。在一些实施方式中,局部最大高速缓存块模式集合的相对最大模式被组合以生成绝对最大高速缓存块模式集合。在一些实施方式中,基于绝对最大高速缓存块模式集合中的哪个模式描述更多高速缓存块来迭代地对绝对最大高速缓存块模式集合的子集进行排序,以确定高速缓存块模式的子集。
28.图1是其中可以实施本公开的一个或多个特征的示例性装置100的框图。装置100可以包括例如计算机、游戏装置、手持式装置、机顶盒、电视机、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可以任选地包括输入驱动器112和输出驱动器114。应理解,装置100可以包括图1中未示出的附加部件。
29.在各种替代方案中,处理器102包括中央处理单元(cpu)、图形处理单元(gpu)、位于同一裸片上的cpu和gpu,或者一个或多个处理器核心,其中每个处理器核心可以是cpu或gpu。在各种替代方案中,存储器104与处理器102位于同一裸片上,或者与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(ram)、动态ram或高速缓存。在一些实施方式中,处理器102包括被实施为加速器的gpu,以及被配置为管理gpu的输入/输出任务的cpu。
30.存储装置106包括固定或可移除的存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108包括但不限于键盘、小键盘、触摸屏、触摸板、检测器、传声器、加速度计、陀螺仪、生物特征扫描仪或网络连接(例如,用于传输和/或接收无线ieee 802信号的无线局域网卡)。输出装置110包括但不限于显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接收无线ieee 802信号的无线局域网卡)。
31.输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102将输出发送到输出装置110。注意,输入驱动器112和输出驱动器114为任选部件,并且装置100在不存在输入驱动器112和输出驱动器114的情况下将以相同方式操作。输出驱动器116包括耦合到显示装置118的加速处理装置(“apd”)116。apd从处理器102接受计算命令和图形渲染命令,处理那些计算命令和图形渲染命令,并将像素输出提供给显示装置118以进行显示。如下面进一步详细描述的,apd 116包括一个或多个并行处理单元,所述一个或多个并行处理单元根据单指令多数据(“simd”)范例执行计算。因此,虽然本文中将各种功能描述为由apd116执行或结合所述apd来执行,但是在各种替代方案中,被描述为由apd 116执行的功能另外或替代地由具有类似能力的其他计算装置执行,所述其他计算装置不由主机处理器(例如,处理器102)驱动并且向显示装置118提供图形输出。例如,可以设想的是,根据simd范例执行处理任务的任何处理系统可以执行本文所描述的功能。替代地,可以设想的是,不根据simd范例执行处理任务的计算系统执行本文所描述的功能。
32.图2是装置100的框图,示出了与在apd 116上执行处理任务有关的另外的细节。处理器102在系统存储器104中维持一个或多个控制逻辑模块,以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和apd 116的操作的各种特征。例如,操作系统120直接与硬件通信,并且为在处理器102上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行以访问apd 116的各种功能的软件(例如,应用程序126)提供应用程序编程接口(“api”)来控制apd 116的操作。内核模式驱动器122还包括即时编译器,所述即时编译器编译程序以供apd 116的处理部件(诸如在下面进一步详细讨论的simd单元138)执行。
33.apd 116执行有关选定功能的命令和程序,诸如可以适合于进行并行处理的图形
操作和非图形操作。apd 116可以用于基于从处理器102接收的命令执行图形流水线操作,诸如像素操作、几何计算以及将图像渲染到显示装置118。apd 116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
34.apd 116包括计算单元132,所述计算单元包括一个或多个simd单元138,所述一个或多个simd单元根据simd范例按照处理器102的请求以并行方式执行操作。simd范例是这样一种范例:多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够用不同的数据执行该程序。在一个示例中,每个simd单元138包括十六个通道,其中每个通道与simd单元138中的其他通道同时执行同一指令,但是可以以不同的数据执行该指令。如果并非所有通道都需要执行给定指令,则可以利用预测关闭通道。预测也可以用于执行具有发散控制流的程序。更具体地,对于具有条件分支或其他指令的程序,其中控制流是基于由单个通道执行的计算,对与当前未执行的控制流路径相对应的通道的预测以及对不同控制流路径的串行执行允许有任意控制流。
35.计算单元132中的基本执行单元是工作项。每个工作项表示将在特定通道中并行执行的程序的单个实例。可以在单个simd处理单元138上将工作项同时作为“波前”执行。一个或多个波前包括在“工作组”中,所述工作组包括被指定来执行同一程序的工作项集合。可以通过执行构成工作组的波前中的每一者来执行工作组。在替代方案中,波前在单个simd单元138上依序执行,或者在不同的simd单元138上部分地或完全地并行执行。波前可以被视为可以在单个simd单元138上同时执行的最大工作项集合。因此,如果从处理器102接收到的命令指示特定程序将被并行化到所述程序不能同时在单个simd单元138上执行的程度,则该程序被分解成在两个或更多个simd单元138上并行化的或在同一simd单元138上串行化的(或根据需要并行化和串行化的)波前。调度器136执行与在不同计算单元132和simd单元138上调度各种波前相关的操作。
36.由计算单元132提供的并行性适合于与图形有关的操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,从处理器102接受图形处理命令的图形流水线134将计算任务提供给计算单元132以并行执行。
37.计算单元132还用于执行与图形无关或不作为图形流水线134的“正常”操作的一部分执行的计算任务(例如,执行自定义操作以补充为图形流水线134的操作执行的处理)。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序传输给apd 116以供执行。
38.高速缓存块压缩(或更一般地说,数据块压缩)是高速缓存、内存和链路压缩方案的基础。通过将固定大小的高速缓存块中的信息压缩为更小的表示(例如,将64字节块压缩为32字节),高速缓存块压缩有效地增加了链路带宽以及高速缓存和内存的容量,具体取决于实施方式。在一些实施方式中,高速缓存块压缩能够显著提高系统性能和能源效率。高速缓存块压缩技术通常适用于压缩其他非高速缓存数据块。因此,应用于非高速缓存用例的高速缓存块压缩被称为数据块压缩。本文关于高速缓存块和高速缓存块压缩讨论了技术和示例,但是注意,这些技术和示例通常也适用于数据块压缩。
39.涉及字节选择的高速缓存块压缩技术在本文中被称为“字节选择压缩”(bsc)。示例性bsc技术在das等人的美国专利申请us2020/0133866a1中进行了讨论,该专利申请的内
容以引用方式整体并入本文,如同在本文中完整阐述一样。在压缩过程中,字节选择是指选择存储高速缓存块的哪些字节以及所选择的字节存储到哪里。在此上下文中,压缩可以描述为字节去重复。在解压缩期间,字节选择是指将存储的字节从压缩高速缓存块移回到它们在未压缩(即,解压缩)高速缓存块内的原始顺序。
40.本文中的示例说明了用于基于模式集合来压缩和解压缩高速缓存块的技术,以及用于生成用于压缩和解压缩高速缓存块的模式集合的技术。用于根据这些技术执行压缩和解压缩的硬件可以基于模式集合导出。
41.虽然已经提出了高速缓存块压缩算法,但现有设计通常基于对设计人员在数据中观察到的常见模式的特殊选择的应用。因此,一些实施方式提供了一种搜索策略来识别如下高速缓存块模式:其产生的压缩算法表现出比当前压缩算法更接近于理想的性能(例如,性能更接近于将找到并压缩可以在压缩输出大小的界限内描述的每个模式的算法),同时还产生比当前压缩方法更低的硬件开销。
42.主要关于图3、图4、图5和图6讨论基于模式对高速缓存块进行压缩和解压缩的技术,并且主要关于图7、图8、图9、图10、图11和图12讨论用于生成模式集合的技术和用于执行压缩和解压缩的对应硬件。bsc压缩的相对性能主要关于图13进行讨论。
43.图3是说明用于使用bsc基于模式压缩未压缩高速缓存块的示例性过程300的流程图。
44.在步骤310中,未压缩高速缓存块被输入到压缩器。使用任何合适的压缩电路并以任何合适的方式来实施压缩器,诸如完全在硬件中或者作为硬件和软件或固件的组合来实施。在一些实施方式中,未压缩高速缓存块被输入到压缩器的输入缓冲器。示例性未压缩12字节高速缓存块包括12字节的信息,在表1中以十六进制格式表示。
45.表1
46.ffffff14ffffff18ffffff1c
47.在步骤320中,例如使用压缩电路的合适比较器逻辑来识别未压缩高速缓存块内的特定字节值。例如,在一些实施方式中,比较器用于检测未压缩高速缓存块内的重复字节。表2中示出了表1的示例性未压缩高速缓存块内的特定字节值。
48.表2
49.ff14181c
50.在此上下文中,术语“特定字节值”是指在未压缩高速缓存块中至少出现一次的字节值。例如,特定字节值“ff”在表1所示的示例性12字节高速缓存块中出现了九次,而特定字节值“1c”出现了一次。字节值“00”没有出现在表1所示的示例性未压缩12字节高速缓存块中,因此,其不是未压缩高速缓存块的特定字节值并且不包括在表2中。因为表1的未压缩高速缓存块可根据表2的特定字节值来表达,这些特定字节值在此上下文中被称为“字节字典”。
51.在步骤330中,在高速缓存块模式集合中查找未压缩高速缓存块内的特定字节值的模式。高速缓存块模式集合可以以任何合适的方式存储,诸如以存储存储器(诸如寄存器文件)内的表、矩阵或向量存储。在一些实施方式中,例如基于比较器的输出来“查找”模式或对模式编索引。例如,为了查找模式,可以使用符号而不是完整字节来表示和引用特定字节值。字节字典中每个特定字节值的示例性符号以十进制形式显示在表3中。因为在此示例
性字节字典中有四个特定字节值,所以每个符号可以使用最少两位来表示。注意,这些特定符号是示例性的,并且任何合适的符号在其他实施方式中都是可用的。本文进一步讨论了使用符号来表示字节字典中的特定字节值的过程。
52.表3
53.0123
54.基于表3的符号,表1所示的示例性高速缓存块中的字节模式可如表4所示表示。
55.表4
56.000100020003
57.在一些实施方式中,以这种方式根据符号生成高速缓存块模式是查找高速缓存块模式的中间步骤。注意,表1所示的示例性未压缩高速缓存块中存在的特定字节值的模式可以以其他方式表示。本文中进一步讨论此类模式表达的确定以及高速缓存块模式集合的确定。
58.在如表4所示的高速缓存块模式未在高速缓存块模式集合中找到的条件340下,过程300结束,并且表1所示的示例性未压缩高速缓存块未被压缩,或者使用其他技术进行压缩。如表4所示的模式在高速缓存块模式集合中找到的条件340下,在步骤350中基于高速缓存块模式集合中的高速缓存块模式的索引和字节字典输出压缩高速缓存块。在一些实施方式中,压缩高速缓存块包括字节字典(例如,如表2中所示)和元数据,所述元数据包括所述集合中的高速缓存块模式的索引。例如,压缩高速缓存块可存储在高速缓存中或可通过链路传输。表5说明了示例性压缩高速缓存块。
59.表5
60.元数据ff14181c
61.在一些实施方式中,元数据还包括指示高速缓存行是否被压缩的位。
62.图4是说明用于使用bsc基于模式压缩未压缩高速缓存块的示例性压缩电路400的示意图。例如,示例性压缩电路400可用于实施关于图3所示和描述的过程。注意,示例性压缩电路400仅是说明性的,并且任何合适的硬件和/或软件配置都能够使用bsc基于模式生成压缩高速缓存块,可用于其他实施方式中。
63.压缩电路400包括:逻辑450,其包括比较器电路410和存储的高速缓存块模式460;多路复用器电路420;存储器单元430,其保持未压缩高速缓存块;以及存储器单元440,其用于保存包括字节字典和元数据的压缩高速缓存块。
64.在操作中,未压缩高速缓存块存储在压缩电路400的存储器单元430中。这对应于如关于图3所示和描述的步骤310。存储器单元430包括高速缓存内的高速缓存块存储装置,或任何其他合适的缓冲器或其他存储电路。在此示例中,未压缩高速缓存块对应于关于表1所示和描述的示例性12字节高速缓存块。
65.比较器电路410将未压缩高速缓存块的字节相互比较以识别高速缓存块内的特定字节值的模式。这对应于如关于图3所示和描述的步骤320。在一些实施方式中,比较器电路410是逻辑电路450的一部分,或者与所述逻辑电路通信。在此示例中,示例性高速缓存块内的特定字节值对应于关于表2所示和描述的示例性字节。模式是可符号识别的,例如,如关于表4所示和描述的。
66.在高速缓存块模式集合460中查找未压缩高速缓存块内的特定字节值的模式。这对应于如关于图3所示和描述的步骤330。使用任何合适的逻辑,例如在逻辑电路450和/或比较器电路410内,将高速缓存块模式与高速缓存块模式集合460进行比较。在一些实施方式中,高速缓存模式集合460以符号表示,并且将高速缓存块模式转换为符号作为中间步骤,例如,如关于图3关于步骤330所讨论的。
67.如果高速缓存块模式与高速缓存块模式集合460中的对应模式不匹配,则不压缩未压缩高速缓存块,或者使用其他技术进行压缩。如果高速缓存块模式与高速缓存块模式集合460中的对应模式匹配,则逻辑电路450设置多路复用器电路420(例如,通过设置选择线),以将特定字节值存储到存储器单元440作为与未压缩高速缓存块对应的压缩高速缓存块的字节字典,并且将高速缓存块模式集合460内的高速缓存块模式的索引进行编码并存储到存储单元440作为压缩高速缓存块的元数据。这对应于如关于图3所示和描述的条件340和步骤350。在该示例中,压缩高速缓存块包括字节字典和元数据,其中元数据包括高速缓存块模式集合460的索引。在一些实施方式中,元数据包括其他信息,如本文进一步讨论的。
68.图5是说明用于使用bsc基于模式解压缩压缩高速缓存块的示例性过程500的流程图。
69.在步骤510中,将压缩高速缓存块输入到合适的解压缩器。使用任何合适的解压缩电路并以任何合适的方式来实施解压缩器,诸如完全在硬件中或者作为硬件和软件或固件的组合来实施。在一些实施方式中,将压缩高速缓存块输入到解压缩器的缓冲器。上表5说明了示例性压缩高速缓存块。在一些实施方式中,压缩高速缓存块是基于分别关于图3和/或图4示出和描述的过程和/或电路来生成的。
70.在压缩高速缓存块的元数据不包括高速缓存块模式集合的索引的条件520下,高速缓存块不使用过程500进行解压缩,并且过程结束。如果元数据确实包括高速缓存块模式集合的索引,则在步骤530中基于索引在所述集合中查找高速缓存块模式。在该示例中,高速缓存块模式对应于表4。在该示例中,假设如果元数据中存在索引,则高速缓存块模式包括在高速缓存块模式集合中。
71.在步骤540中,将来自压缩块的字节字典(在该示例中对应于表2)应用于高速缓存块模式(例如,基于表3的符号映射)以生成未压缩高速缓存块(在该示例中,在表1中示出),并且在步骤550中输出未压缩高速缓存块。未压缩高速缓存块可存储在cpu的寄存器或任何其他合适的存储位置中。
72.图6是说明用于使用bsc基于模式解压缩压缩高速缓存块的示例性解压缩电路600的示意图。例如,示例性解压缩电路600可用于实施关于图5所示和描述的过程。注意,示例性解压缩电路600仅是说明性的,并且任何合适的硬件和/或软件配置都能够使用bsc基于模式生成解压缩高速缓存块,可用于其他实施方式中。
73.解压缩电路600包括存储器单元610,所述存储器单元被配置为从压缩高速缓存块的字节字典输入特定字节值。这对应于如关于图5所示和描述的步骤510。存储器单元610包括高速缓存内的高速缓存块存储装置,或任何其他合适的缓冲器或其他存储电路。在该示例中,压缩高速缓存块对应于上面表5中说明的示例性压缩高速缓存块。
74.解压缩电路600还包括逻辑电路620,所述逻辑电路被配置为从存储器单元610中
的压缩高速缓存块输入元数据并基于元数据中包括的索引识别存储的高速缓存块模式集合内的高速缓存块模式。这对应于如关于图5所示和描述的条件520和步骤530。如果元数据不包括高速缓存块模式集合的索引,则不使用解压缩电路600对压缩的高速缓存块进行解压缩。
75.否则,如果元数据确实包括高速缓存块模式集合的索引,则由逻辑电路620在高速缓存块模式集合内识别高速缓存块模式。逻辑电路620基于所识别的高速缓存块模式设置多路复用器630的选择线,使得多路复用器630将压缩高速缓存块的字节字典映射到对应于未压缩高速缓存块的存储器单元640。这对应于如关于图5所示和描述的步骤540和550。未压缩高速缓存块可存储在cpu的寄存器或任何其他合适的存储位置中。
76.在一些实施方式中,诸如关于图5所示和描述的,bsc压缩器(包括高速缓存块模式集合)是用比较器(例如,用于检测重复字节)、多路复用器(例如,用于将字节路由到字节字典并且从字节字典路由)和逻辑(例如,用于编码和解码元数据)来实施的。在一些实施方式中,诸如关于图6所示和描述的,bsc解压缩器(包括高速缓存块模式集合)是用多路复用器实施的,其中压缩高速缓存块的字节字典被输入到多路复用器的输入端,并且其中多路复用器选择器值从压缩高速缓存块的元数据中导出。在一些实施方式中,将压缩器和/或解压缩器的实施方式主要限制为比较器和多路复用器具有限制算法的复杂度以及限制对应硬件的面积和/或时延的优点。
77.在一些实施方式中,bsc压缩和解压缩硬件的面积复杂度由字节多路复用器的输入数量以及用于生成和处理元数据的逻辑的复杂度确定。在一些实施方式中,时延由任何多路复用器的最大输入数量和元数据逻辑的深度确定。在一些实施方式中,高速缓存块模式集合的大小和内容在速度和裸片面积方面对bsc压缩和/或解压缩的性能有影响。
78.因此,一些实施方式提供了用于生成模式集合的技术和用于执行压缩和解压缩的对应硬件。如关于图3、图4、图5和图6描述的示例性过程和电路所说明的,高速缓存块模式可表示为一串符号,高速缓存块中的每个字节一个符号,所述符号表示高速缓存块中字节值的模式。如果高速缓存块的具有相同值的字节在高速缓存块模式中由相同的符号表示,则高速缓存块可由特定高速缓存块模式来描述。例如,表1中列出的示例性高速缓存块可由表4中列出的高速缓存块模式来描述,因为表1中具有相同值的每个字节在表4中由相同的符号表示。
79.高速缓存块模式用作字节字典的一系列索引。如果可以从未压缩高速缓存块创建字节字典,其中特定高速缓存块模式的索引可用于将字节字典解压缩到未压缩高速缓存块,则未压缩高速缓存块可以由特定高速缓存块模式来描述。
80.如关于图3、图4、图5和图6所说明的,高速缓存块模式用于对未压缩高速缓存块的字节进行去重复以产生包括字节字典和元数据的压缩高速缓存块。元数据包括高速缓存块模式集合的索引,未压缩高速缓存块可以由所述高速缓存块模式集合重构。
81.图7是说明示例性4字节高速缓存块的示例性高速缓存块模式集合的框图。如图7所示,在高速缓存块的四个字节的每一个中重复一个特定字节值的4字节高速缓存块可使用一个符号(在该示例性高速缓存块模式集合中为0)来表示。注意,所示的集合对于此类高速缓存块并不详尽。例如,在其他示例中,任何可用的符号都可以用于表示一个特定字节值。
82.同样如图7所示,包括两个特定字节值的4字节高速缓存块可使用两个符号表示,其顺序取决于它们在高速缓存块中的位置。图7中示出了包括两个特定高速缓存字节值的高速缓存块的几种高速缓存块模式。应注意,所示的集合对于此类高速缓存块并不详尽。具有两个符号的高速缓存块模式也能够表示包括一个特定字节值的高速缓存块,如关于图8进一步讨论的。
83.如图7进一步所示,包括三个特定字节值的4字节高速缓存块可使用三个符号表示,其顺序取决于它们在高速缓存块中的位置。图7中示出了包括三个特定高速缓存字节值的高速缓存块的几种高速缓存块模式。应注意,所示的集合对于此类高速缓存块并不详尽。具有三个符号的高速缓存块模式也能够表示包括一个特定字节值或两个特定字节值的高速缓存块,如关于图8进一步讨论的。
84.如图7进一步所示,包括四个特定字节值的4字节高速缓存块可使用四个符号表示。因为在该示例中高速缓存块中的每个字节都包括不同的特定字节值,所以符号的顺序无关紧要。因此,图7中示出了包括四个特定高速缓存字节值的高速缓存块的示例性高速缓存块模式。应注意,所示的示例性高速缓存块模式对于此类高速缓存块并不详尽。然而,可用于表示此类高速缓存块的其他高速缓存块模式将是等效的,因此是冗余的。仅出于示例的目的,在图7中提供用于表示高速缓存块中的每个字节包括不同的特定字节值的符号的替代排序。具有四个符号的高速缓存块模式也能够表示包括一个特定字节值、两个特定字节值或三个特定字节值的高速缓存块,如关于图8进一步讨论的。
85.图7所示的示例性高速缓存块模式集合中包括的示例性高速缓存块模式并不详尽。例如,在4字节高速缓存块包括四个特定字节值的情况下,符号0、1、2、3可以以任何顺序用于表示字节,或者可以使用不同的符号。对于图7中所说明的一、二和三特定字节值情况也是如此。
86.图8是示出示例性4字节高速缓存块的示例性高速缓存块模式以及可使用这些示例性高速缓存块模式描述的示例性高速缓存块值的框图。图8中的示例说明了一些模式可用于描述许多高速缓存块的方式。
87.如图8所示,如果符号“0”映射到值“ff”并且符号“1”映射到值“01”,则高速缓存块模式0 1 0 1描述了字节值为ff 01 ff 01的高速缓存块。类似地,如果符号“0”映射到值“00”并且符号“1”映射到值“01”,则该高速缓存块模式也可用于描述字节值为00 01 00 01的高速缓存块。如果符号“0”映射到值“00”并且符号“1”也映射到值“00”,则该高速缓存块模式还描述了字节值为00 00 00 00的高速缓存块。在这些情况的每一个中,示例性高速缓存块由高速缓存块模式0 1 0 1描述,因为示例性高速缓存块中具有相同值的每个特定字节值由高速缓存块模式中的相同符号表示。
88.如图8类似地所示,如果符号“0”映射到值“00”,符号“1”映射到值“01”,并且符号“2”映射到值“02”,则高速缓存块模式0 1 0 2描述字节值为00 01 00 02的高速缓存块。该示例说明了表示具有三个特定字节值的高速缓存块的高速缓存块模式0 1 0 2。类似地,如果符号“0”映射到值“00”,符号“1”映射到值“01”,并且符号“2”也映射到值“01”,则高速缓存块模式0 1 0 2也描述了字节值为00 01 00 01的高速缓存块。该示例说明了表示具有两个特定字节值的高速缓存块的高速缓存块模式0 1 0 2。如果符号“0”映射到值“00”,符号“1”映射到值“00”,并且符号“2”也映射到值“02”,则高速缓存块模式0 1 0 2也描述了字节
值为00 00 00 02的高速缓存块。该示例说明了高速缓存块模式0 1 0 2的第二示例,所述模式表示具有两个特定字节值的高速缓存块,其中特定高速缓存块处于不同的布置中。
89.如果符号“0”映射到值“00”,符号“1”也映射到值“00”,并且符号“2”也映射到值“00”,则高速缓存块模式0 1 0 2也描述了字节值为00 00 00 00的高速缓存块。该示例说明了表示具有一个特定字节值的高速缓存块的高速缓存块模式0 1 0 2。在这些情况中的每种情况下,示例性高速缓存块由高速缓存块模式0 1 0 2描述,因为高速缓存块模式中的符号指示其出现的每个位置的特定字节值,并且在一些情况下,不同的符号可用于表示相同的特定字节值。
90.如图8中的示例所示,一些模式可用于描述许多高速缓存块。例如,任何具有所有匹配字节的高速缓存块,包括“全零”高速缓存块,都可以用任何模式来描述。
91.因为每个模式都可用于描述多个不同高速缓存块的值,所以所有可能模式的子集可用于描述所有可能的高速缓存块。如果从子集中删除模式,则高速缓存块的数量也可以进一步减少。
92.理想的bsc压缩和/或解压缩算法将包括高速缓存块模式集合中的每个可能的非等效模式(即,未压缩高速缓存块中字节的可能符号表示的详尽列表)。然而,用于对包括每个可能的模式的高速缓存块模式集合编索引的元数据可能会太大而导致压缩块小于(或足够小于)未压缩高速缓存块。
93.因此,一些实施方式包括用于选择仍然产生期望水平的性能的所有可能的高速缓存块模式的子集(例如,为了限制bsc压缩和解压缩所需的元数据和/或硬件复杂度)的方法、装置和系统。
94.在一些实施方式中,开发所有可能的高速缓存块模式的子集,使得它最好地实现所选的约束,以将高速缓存块压缩到期望的目标大小集合(即,量化的压缩比),以达到或低于期望的阈值成本(例如,在时延和/或能耗方面)。
95.应注意,所有高速缓存块模式的集合与由数字0到n-1组成的所有n字节字符串的集合不同。这是因为许多模式在它们可以描述的高速缓存块集合方面是等效的。任何仅在它们使用的符号名称上有所不同的模式都是等效的。
96.例如,考虑以下4字节模式:0101、1010和1313。这些模式(以及许多其他模式)都描述了相同的高速缓存块集合,其中第一个字节和第三个字节匹配,并且第二个字节和第四个字节匹配。因此,在一些实施方式中,从所有唯一的可描述高速缓存块集合的子集中选择子集,每个集合一个模式,而不是选择所有可能的模式长度串的子集。
97.在一些实施方式中,对所考虑的模式数量进行约束,以便将实施的硬件面积和时延成本保持在阈值或低于阈值(即,约束面积和/或时延),例如,当使用相对较大的字节字典大小时。例如,在一些实施方式中,限制所考虑的模式数量限制了压缩器中的比较器数量以及压缩器和解压缩器两者中的选择器计算逻辑的复杂度。
98.因此,对模式搜索的约束是压缩大小集合d和每个大小的目标模式数量n。在一些实施方式中,解压缩压缩高速缓存块所需的唯一元数据是模式索引。在这种情况下,需要元数据的位,其中n是目标模式数量。在一些实施方式中,减去每个目标压缩大小所需的元数据以产生字节字典大小约束集合。在一些实施方式中,目标大小独立于不同目标大小的模式之间的交互。在一些实施方式中,对于不大于p的字节字典大小,模式搜索约束
将模式集合的选择约束为所有可能模式集合中的最佳n。
99.鉴于上面讨论的基于模式的压缩和解压缩技术,在一些实施方式中,希望选择满足某些目标的模式集合,这些目标在一些情况下是冲突的。这个任务被称为模式搜索问题。一个示例性目标是开发足够大以实现期望的(即,适当高的)量化压缩比的模式集合。换句话说,在一些实施方式中,模式集合被开发为使得它描述块的期望(例如,适当大的)部分,例如,对于期望的工作负载集合(例如,在通用工作负载集合中、对于训练工作负载集合、对于大多数工作负载等)。另一个示例性目标是开发足够小的模式集合以实现期望的(即,适当限制的和/或适当低的)元数据大小。
100.在一些实施方式中,压缩表示需要元数据的位来充分描述p模式。因此,在一些实施方式中,随着元数据越来越多地占用压缩表示中的空间,较大数量的模式将倾向于减少字节字典可用的字节数量。此外,较大数量的模式将增加压缩和解压缩逻辑电路的面积和时延开销。另一方面,在一些实施方式中,较少的模式需要较少的比较器、压缩器中较小优先级的编码器以及压缩器和解压缩器中到多路复用器的较少输入。
101.另一个示例性目标是基于可用的压缩输出大小来选择模式。如上所述,压缩到比量化输出大小更少的字节不会带来任何好处,除非它压缩到更小的量化大小输出大小。因此,在一些实施方式中,输入压缩输出大小集合,并且为每个大小识别模式集合。
102.在一些实施方式中,高速缓存块模式集合的开发不考虑不同目标大小的模式之间的交互。在一些实施方式中(例如,为简单起见),多目标大小问题被分解为每个量化输出大小的单独搜索问题。在一些实施方式中,编码技术用于区分元数据中的不同大小,例如,通过用唯一符号对每个目标输出大小进行编码。因此,在一些实施方式中,核心搜索问题被表述为:从所有可能模式集合中挑选字节字典大小不大于n的最佳p个模式。
103.图9是说明用于生成bsc压缩器和/或解压缩器的示例性过程900的流程图。过程900包括用于选择所有可能高速缓存块模式的子集的过程。选择所有可能的高速缓存块模式的合适子集的过程解决了上面讨论的模式搜索问题。过程900还基于子集为合适的压缩器和/或解压缩器生成硬件描述。通常,在确定排序的高速缓存块模式集合之后,例如,使用相关联的计数器,所述排序的缓存块模式集合被缩减以生成这些模式的子集。例如,在一些实施方式中,最佳p模式(例如,其中p是从目标压缩高速缓存块大小导出的目标数量模式,如前所述)需要不超过n个字节进行解压缩。
104.更详细地,在步骤910中,使用高速缓存或高速缓存模型(例如,在硬件中或在模拟中)执行训练程序,并捕获在训练程序执行期间出现的高速缓存块的轨迹(例如,日志)。在一些实施方式中,训练程序代表要在训练之后运行的程序。在一些实施方式中,如果模式在训练程序和目标未来程序中以相同或相似(例如,在阈值程度或百分比相似性内)比例出现,则训练程序表示要在训练之后运行的程序。基于训练轨迹识别出现在轨迹中的高速缓存块模式并对这些模式进行排序,以生成所有高速缓存块模式的排序列表。在一些实施方式中,高速缓存块模式基于出现在训练轨迹中的高速缓存块中有多少由每个模式表示的计数来排序。
105.在步骤920中,排序的高速缓存块模式集合基于不同的特性来缩减(例如,在如下面讨论的四个阶段中)以生成缩减的高速缓存块模式集合。在步骤930中,寄存器传输语言(rtl)或压缩和解压缩硬件的其他合适的表示基于缩减的缓存块模式集合来生成。
106.如下更详细地讨论步骤910、920和930的示例性实施方式。在步骤910中,用于生成排序的高速缓存块模式集合的模式计数从训练轨迹中导出。这个过程被称为轨迹处理。在一些实施方式中,为了导出模式计数,识别出现在轨迹中的模式。导出模式计数的一种直接方法是,对于给定高速缓存块大小的所有可能高速缓存块模式列表中的每个高速缓存块模式,确定轨迹中出现(即,在训练程序执行期间通过高速缓存)的高速缓存块中有多少可由该模式描述。然而,在一些实施方式中,所有可能模式的数量非常大,并且一个高速缓存块可由多个模式来描述。因此,以这种方式直接对模式进行计数不仅计算成本高,而且会丢失一些关于哪些模式在一些实施方式中共享哪些块的有用信息。例如,如果两个模式都能够描述训练轨迹中的一些(但不是全部)相同的高速缓存块,那么不可能通过对两个模式进行计数来知道按两种模式计数了多少高速缓存块,以及仅按其中一种模式计数了多少块。这在需要决定两个模式中的哪一个代表更多模式(例如,为了效率而消除另一个模式)的实施方式中可能是不利的。
107.因此,在一些实施方式中,对于出现在轨迹中的每个模式,确定其模式是可以描述高速缓存块的最简单(即,包括最少数量的符号)模式的高速缓存块的数量。在一些实施方式中,确定出现在轨迹中的每个高速缓存块的最简单模式,并且对这些模式中的每一个出现的次数进行计数。在一些实施方式中,为了确定高速缓存块的最简单模式,将高速缓存块中的特定字节值按照它们在高速缓存块中出现的顺序放置到数组中(或以其他方式被编索引)。此后,原始高速缓存块中的每个字节值都被替换为其在数组中的索引。
108.作为步骤910的各个方面的说明性示例,图10是示出用于从训练轨迹确定模式轨迹的示例性过程1000的流程图。模式轨迹是描述出现在训练轨迹中的高速缓存块的模式列表。此模式轨迹可用于导出训练轨迹的模式计数。
109.在步骤1010中,基于示例性训练运行捕获包括五个未压缩四字节高速缓存块的示例性高速缓存轨迹。在步骤1020中,将五个未压缩四字节高速缓存块中的每一个的特定字节值按照它们在未压缩高速缓存块中出现的顺序放置到数组中(或等效地被编索引)。在步骤1030中,通过将每个特定字节值替换为其在数组中的索引来为五个未压缩四字节高速缓存块中的每一个记录模式。
110.例如,四字节块ff ff 00 00出现在步骤1010中捕获的原始轨迹中,并且包括特定字节值ff和00。在步骤1020中,这些特定字节值按照它们在高速缓存块中出现的顺序放置到数组中(或等效地被编索引),即ff 00,其中ff位于索引0处,而00位于索引1处。在步骤1030中,在所记录的模式轨迹中,将原始轨迹中的字节值ff的每次出现替换为索引0,并且将字节值00在原始轨迹中的每次出现替换为索引1。如图10所示,对原始轨迹中的几个四字节块中的每一个执行示例性过程1000,以产生对应的所记录的模式轨迹。
111.在已经从训练轨迹确定模式轨迹之后,例如,使用与示例性过程1000一致的过程,确定模式计数。例如,尽管原始轨迹中的每个示例性四字节高速缓存块具有不同的值,但所记录的模式轨迹中的模式中的一个(在该示例中为模式0 0 1 1)是其中三个高速缓存块的最简单字节模式表示。因此,该模式的计数为3,而所记录的模式轨迹中的其他两个示例性模式的计数均为1。
112.在确定模式计数后,回到图9,在步骤920中缩减高速缓存块模式集合。在一些实施方式中,高速缓存块模式集合在多阶段过程中被缩减,所述多阶段过程在每个阶段中连续
删减更多模式。在示例性过程900中,步骤920是一个四阶段过程。在一些实施方式中,每个阶段具有与前一阶段相同或更大的算法复杂度。第一阶段将在步骤910中生成的模式和计数器(例如,排序的高速缓存块模式集合)作为输入。在步骤930中,最后(例如,第四)阶段输出排序的模式集合,从中可以使用最大p来生成rtl。
113.在阶段1,删除不常见的模式。在一些实施方式中,在阶段1中删除对于小于阈值数量的高速缓存块的最简单描述模式的任何模式。在一些实施方式中,设置阈值使得后面的阶段在可接受的时间量内完成。较高的阈值会产生较少的模式,以供后续更复杂的阶段处理。在一些实施方式中,设置阈值以向过程提供正则化。例如,较高的阈值可以改善后续阶段的压缩结果,或者可以防止或避免来自该阶段的输入对后续阶段产生负面影响的情况。在一些实施方式中,在此阶段仅基于不太出现的模式应该不太有用(即,不太可能描述训练后看到的高速缓存块,例如,在目标应用程序中)的启发法来删减模式。在一些实施方式中,阶段1的输出与阶段1的输入具有相同的格式;例如,在阶段1中未删减的高速缓存块模式列表,其包括轨迹中其模式是最简单描述模式的高速缓存块有多少的对应计数。
114.如果输入到阶段1的模式数量为n1,则阶段1可描述为具有o(n1)复杂度,其中复杂度表示在该阶段执行的操作的数量。后续阶段根据该功能相对于该阶段进行描述。
115.在阶段2,从阶段1输出的模式列表中删除相对于训练轨迹不具有最大包括性(即,“非最大的”高速缓存块模式)的高速缓存块模式。
116.如果高速缓存块模式描述的所记录的模式轨迹中的高速缓存块不是所记录的模式轨迹中任何其他高速缓存块模式可描述的高速缓存块的子集,则该高速缓存块模式相对于训练轨迹具有最大包括性(即,“最大的”)。换句话说,如果所记录的模式轨迹中没有其他高速缓存块模式描述相同的高速缓存块以及另外的高速缓存块,则高速缓存块模式是最大的。如果可由高速缓存块模式描述的高速缓存块是可由所记录的模式轨迹中的另一高速缓存块模式描述的高速缓存块的子集,则所述高速缓存块模式相对于训练轨迹是非最大的。换句话说,如果所记录的模式轨迹中的另一高速缓存块模式描述了所有相同的高速缓存块以及轨迹中的另外的高速缓存块,则所述高速缓存块模式相对于训练轨迹是非最大的。
117.因为如果一个模式描述的高速缓存块集合是所记录的模式轨迹中另一个模式描述的高速缓存块的子集,我们可以说这个模式小于另一个模式,所以所记录的模式轨迹中高速缓存块模式的部分排序可以是基于轨迹中它们描述的高速缓存块集合而创建的。高速缓存块模式的这种部分排序可以使用高速缓存块大小的所有可能高速缓存块模式的点阵来表示。在此上下文中,所记录的模式轨迹中高速缓存块模式的部分排序意味着部分排序的集合;即,对于所有模式,子集操作都是自反的、反对称的和传递的。在部分排序中,对于一些高速缓存块模式对,两者都不是另一个的子集,而在全排序中,对于任何一对高速缓存块模式,一个模式将压缩由另一个模式压缩的块的子集。
118.图11是说明4字节高速缓存块的示例性高速缓存块模式集合中的高速缓存块模式之间的示例性关系的点阵图。
119.在图11的点阵中,连接不同模式的箭头表示源模式(在箭头的根部)小于目标模式(在箭头的头部)。点阵的“底部”包括这样的模式:该模式描述仅包括一个特定字节值的高速缓存块。在该示例中,点阵的底部使用符号“0 0 0 0”描述仅包括一个特定字节值的高速缓存块。点阵的“顶部”包括描述高速缓存块大小的特定字节值的最大数量(即,在该示例
中,四字节高速缓存块的四个特定字节值)的模式。在该示例中,点阵的顶部使用符号“0 1 2 3”描述包括四个特定字节值的高速缓存块。更靠近点阵顶部的模式比更靠近底部的模式描述更多数量的高速缓存块,即,最大值更大的高速缓存块。箭头头部的高速缓存块模式描述箭头根部的模式可描述的所有高速缓存块,并且还描述其他高速缓存块。
120.如上所述,在一些实施方式中,对字节字典大小的约束n是从目标压缩大小导出的。因此,对于量化压缩,压缩到小于用于导出n的大小的大小在一些实施方式中不会提供任何好处。
121.因此,回到图9,在阶段2中,从阶段1输出的高速缓存块模式集合中尽可能接近描述该集合的点阵的顶部同时仍然满足字节字典大小约束n的那些模式被保留,并且被认为相对于阶段1的输出是最大的。
122.为了说明这一点,假设图11的示例性点阵,该点阵包括1、2、3和4字节字典的所有高速缓存块模式(即,所有4字节长的高速缓存块)。例如,假设约束为n=3,符合所述约束的关于整个点阵的最大模式是那些需要3字节字典的模式。在图11的图例中指示了点阵内的从阶段1输入的示例性的所记录的模式轨迹(即,高速缓存块模式0000、0010和0011)。基于此输入,点阵中需要3字节的模式中没有一个模式出现在来自阶段1的输入中。因此,在该示例中,从阶段1输入的相对于训练轨迹最大的模式为0010和0011,因为在训练轨迹中不再出现最大值更大的模式。模式0000是非最大的,因为它位于指向这些模式中的一个模式的箭头的根部(即,最大值更大的模式出现在训练轨迹中)。
123.因此,阶段2的输出包括最大模式,并排除非最大模式。除了从搜索中消除非最大模式之外,还跟踪由每个最大模式描述的高速缓存块的数量的计数。对于每个最大模式,计数包括所有模式的最大值小于或等于其本身的计数。然而,由于非最大模式的最大值可能小于几个最大模式,因此维持非最大模式和计数的集合以避免在后续阶段对模式进行重复计数。在一些实施方式中,这保证了在后续阶段中描述相同的高速缓存块集合。然而,非最大模式被排除在搜索本身之外。换句话说,在一些实施方式中,虽然在阶段2中识别的非最大模式中没有一个模式被用于最终压缩算法输出中,但它们可能在后续阶段中用于在可能包括在最终压缩算法中的最大模式之间进行选择。
124.相对于阶段1的输出最大的模式集合(即,在阶段2的输出中)可以表示高速缓存块的n个或更少的特定字节值(即,可以与n个或更少的字节字典一起使用)。然而,需要相对于点阵最大的模式来表示高速缓存块的n个特定字节值(即,可以与n个字节字典一起使用)。相对于整个点阵最大的模式被称为绝对最大或通常最大,因为其独立于训练轨迹具有最大包括性。
125.如果输入到阶段2的模式数量为n2,则阶段2可描述为具有o(n
22
)复杂度。
126.在阶段3中,将相对最大的模式(即,相对于训练集合最大但相对于点阵通常不是最大的模式)组合以减少集合中模式的数量。
127.如关于阶段2所讨论的,一些模式相对于所考虑的模式集合(例如,训练轨迹中存在的模式)是最大的,但并不是相对于所有可能模式的集合是最大的。换句话说,它们是相对最大的(例如,相对于训练轨迹是最大的)但不是绝对最大的(即,相对于点阵)。仅相对最大的模式不会充分利用可用的字节字典空间。此类未充分利用没有提供任何好处,因为压缩块大小超过n个字节的额外减少在目标硬件应用程序中没有用。因此,在一些实施方式
中,集合中仅相对最大的模式被点阵中最大值更大的(即,相对于点阵)并且大于被替换的模式同时仍然满足约束的模式(如果此类模式存在)替换。因为更大的高速缓存块模式描述由更少的高速缓存块模式描述的所有高速缓存块,所以保证在阶段3中识别的没有出现在训练轨迹中的更大的模式至少描述相同的高速缓存块(即,在阶段3之后,所描述的高速缓存块没有减少)。
128.回到图11,轨迹中没有模式是绝对最大的。两个相对最大模式0010和0011的最大值都比模式0012的最大值小,满足n=3的约束。因此,模式0012可以替代高速缓存块模式集合中的0010和0011两者,使得相同的高速缓存块(至少)可使用更少的模式来描述。
129.回到图9,阶段3的一些实施方式尝试组合所有正在考虑的模式对。例如,为了组合一对,确定可以描述该对中的两个模式所描述的高速缓存块集合的并集的最简单模式。如果该新模式满足给定的字节字典大小约束,则该对中的两个模式将被新模式替换。任何其他最大值比新模式更小的相对最大模式也被删除。为了计算新模式的计数器值,使用来自第一阶段的不相交高速缓存块集合的计数器。在一些实施方式中,阶段3继续组合集合中不是绝对最大的高速缓存块模式对,直到没有高速缓存块模式对可以组合为止。
130.如果输入到阶段3的模式数量为n3,则阶段3可描述为具有o(n
33
)复杂度。
131.在阶段4中,选择从第3阶段输出的代表最大数量的高速缓存块的高速缓存块模式的子集。在一些实施方式中,该子集是通过首先迭代地对剩余高速缓存块模式进行排序的过程来选择的。在迭代排序中,维持两个模式集合。第一个集合在第一次迭代中为空,并且第二个集合包含阶段3之后剩余的所有模式。在每次迭代中,来自第二个集合的增加第一个集合压缩(来自训练轨迹)的高速缓存块数量的模式从第二个集合移至第一个集合。然后,从排序的列表中选择最佳的p个模式。
132.图12是说明用于缩减从图9的阶段3输出的高速缓存块模式集合的示例性过程1200的流程图。在步骤1210中,所述过程以无模式开始,并且迭代计数i=0。在图12的流程图中,使用这个示例性迭代计数器只是为了方便和易于说明,并且应注意,迭代可以以任何合适的方式进行跟踪。在步骤1220中,从阶段3输出的模式列表中选择描述最大数量的高速缓存块的模式。在一些实施方式中,这是基于与上文关于步骤1010讨论的排序的高速缓存块模式集合相关联的计数器(即,由每个模式表示的高速缓存块的计数)来确定的。
133.在还没有将目标数量模式添加到集合中的条件1230下,迭代计数器在步骤1240中递增(或者以其他方式跟踪迭代),并且重复步骤1220。目标数量模式是基于p。在已经将至少一个模式添加到集合中之后,在步骤1220的后续迭代中选择下一个模式,所述下一个模式描述超出集合中的模式已经描述的高速缓存块的最大数量的附加高速缓存块。在一些实施方式中,以这种方式迭代地构建所选模式的排序列表保证了在考虑到每次迭代中的当前排序列表的情况下选择最佳模式。在一些实施方式中,这种保证需要根据可描述线更新在每次迭代中将每个剩余模式添加到当前模式集合的好处。a*搜索可以用于使该搜索变得实用。在一些实施方式中,选择考虑到当前排序列表的最佳模式的“保证”弱于选择总体上最佳模式集合的保证。在一些实施方式中,“最佳”模式是当被添加到当前集合中时来自训练轨迹的被当前集合压缩的高速缓存块的数量增加最多的模式。a*搜索是人工智能领域已知的示例性搜索算法。
134.在已经将目标数量模式添加到集合中的条件1230下,高速缓存块模式的列表是完
整的,并且阶段4将模式列表输出到例如hdl或任何其他合适的格式以供以后在硬件和/或软件中实施。
135.在一些实施方式中,阶段4的迭代排序产生可以针对不同的p值重复使用的单个排序模式列表。一旦生成了足够大的大小的排序列表,就可以为小于或等于列表大小的任何p值选择最大p。
136.来自阶段4的输出是遵守字节字典大小约束n的p模式集合,并且是从阶段3输入的p个最佳高速缓存块模式的排序列表。
137.回到图9,在已经在步骤920中缩减排序的高速缓存块模式集合之后,可以生成电路和/或软件以基于这些模式实施bsc压缩器和/或解压缩器。在步骤930中,基于从阶段4输出的模式为压缩和解压缩过程生成实施电路的rtl或其他合适的硬件描述代码或其他描述。图3、图4、图5和图6分别是压缩过程、压缩电路、解压缩过程和解压缩电路的示例,它们可在步骤930中基于阶段4的输出生成。
138.例如,在一些实施方式中,关于图3的步骤330、图4的逻辑电路450、图5的步骤530和图6的逻辑电路620示出和描述的高速缓存块模式集合是基于阶段4的输出生成的。
139.在一些实施方式中,rtl或其他表示对来自阶段4的高速缓存块模式进行“硬编码”;即,明确定义硬件中高速缓存块模式的值。在一些实施方式中,与非硬编码方法相比,该硬编码具有的优点如下:促进输入rtl或其他表示的逻辑合成,以大大提高所得硬件的性能和面积特性。
140.图13是条形图,它示出了现有算法(基于变化量的压缩(bdi)、位平面压缩(bpc)、高速缓存打包程序(cpack)、常见模式压缩(fpc)、零内容增强(zca))的示例性性能与采用一个字节的元数据(ub-m1)的字节选择压缩的示例性性能的比较,其表明现有算法的性能只有示例性字节选择算法的理想性能的一半。如从图中可以看出,例如对于理想字节选择性能的压缩比,ub-m1至少是现有1位量化算法的两倍。
141.表6示出了各种压缩算法的示例性性能和开销特性:
142.表6
[0143][0144][0145]
在一些实施方式中,bsc中的数据压缩比其他算法更大,但是单循环压缩和解压缩会产生对应的时延。在一些实施方式中,可以用裸片面积和压缩时延(例如,一个时延循环)来换取更高的数据缩减。
[0146]
本文公开的教导在数据存储容量和/或数据传输带宽成问题的任何硬件中可能是
有用的。这包括所有cpu、gpu和soc。本文公开的教导使高速缓存块压缩算法的设计自动化,以向算法提供最大数量的压缩块。应当理解,基于本文的公开,许多变化是可能的。虽然上面以特定的组合描述了特征和要素,但是每个特征或要素可以单独使用而无需其他特征和要素,或者以具有或不具有其他特征和要素的各种组合使用。
[0147]
图中所示和/或本文所描述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入装置108、输出驱动器114、输出装置110、加速处理装置116、调度器136、图形处理流水线134、计算单元132、simd单元138)可以被实施为通用计算机、处理器或处理器核心,或者被实施为程序、软件或固件,存储在非暂时性计算机可读介质或另一种介质中,可由通用计算机、处理器或处理器核心执行。所提供的方法可以在通用计算机、处理器或处理器核心中实施。合适的处理器包括例如通用处理器、专用处理器、常规处理器、数字信号处理器(dsp)、多个微处理器、与dsp核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)电路、任何其他类型的集成电路(ic)和/或状态机。可以通过使用处理后的硬件描述语言(hdl)指令的结果和包括网表的其他中间数据(此类指令能够存储在计算机可读介质上)配置制造工艺来制造此类处理器。此类处理的结果可以是掩模作品,然后在半导体制造过程中使用所述掩模作品来制造实施本公开的特征的处理器。
[0148]
本文提供的方法或流程图可以在并入非暂时性计算机可读存储介质的计算机程序、软件或固件中实施,以便由通用计算机或处理器执行。非暂时性计算机可读存储介质的示例包括只读存储器(rom)、随机存取存储器(ram)、寄存器、高速缓存存储器、半导体存储器装置、磁性介质(诸如内部硬盘和可移除磁盘)、磁光介质以及光学介质(诸如cd-rom盘和数字多功能盘(dvd))。
[0149]
***
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献