当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于可变长度整数译码的指令集制造技术

技术编号:21041048 阅读:27 留言:0更新日期:2019-05-04 09:45
用于可变长度整数(varint)译码的指令集以及相关联的方法和装置。这些指令集包括用于对varint进行编码和解码的指令,并且可被包括作为用于诸如基于x86和基于Arm的架构之类的处理器架构的指令集架构(ISA)以及其他ISA的部分。在一个方面中,指令包括:varint尺寸编码指令,用于对varint的尺寸进行编码;varint编码指令,用于对varint进行编码;varint尺寸解码指令,用于对经编码的varint的尺寸进行解码;以及varint解码指令,用于对经编码的varint进行解码。varint编码尺寸指令和varint编码指令可被组合在单个指令中。类似地,varint解码尺寸指令和varint解码指令可被组合在单个指令中。在一个方面中,指令使用可变长度量(VLQ)编码方案,在该方案下,varint被编码为一个或多个八位位组。

Instruction Set for Variable Length Integer Decoding

Instruction sets for variable length integer decoding and associated methods and devices. These instruction sets include instructions for encoding and decoding variables, and can be included as instruction set architectures (ISAs) for processor architectures such as x86 and Arm-based architectures and other ISAs. In one aspect, instructions include: variable size encoding instructions for encoding the size of variables; variable encoding instructions for encoding variables; variable size decoding instructions for decoding the size of encoded variables; and variable decoding instructions for decoding encoded variables. Varint coded size instructions and varint coded instructions can be combined in a single instruction. Similarly, variable decoding size instructions and variable decoding instructions can be combined in a single instruction. In one aspect, instructions use a variable length quantum (VLQ) encoding scheme in which varint is encoded into one or more octet groups.

【技术实现步骤摘要】
【国外来华专利技术】用于可变长度整数译码的指令集背景信息诸如谷歌、脸书、微软和亚马逊之类的公司大规模地处理数据。用于云计算和大型互联网服务的计算平台通常被托管在大型数据中心中,该大型数据中心被称为仓库规模计算机(WSC)。此类仓库规模计算机的设计挑战相当不同于传统服务器或托管服务的那些设计挑战,并且并强调跨数千个计算节点的互联网规模服务的系统设计,以用于大规模的性能和成本效率。它们的数据处理中的很大一部分涉及处理大型整数。最近,谷歌的研究人员发表了论文(Kanev,Svilen等,“Profilingawarehouse-scalecomputer(对仓库规模计算机进行概况分析)”.2015年ACM/IEEE第42届国际计算机架构研讨会(ISCA).IEEE,2015),他们在该论文中报告了关于大约三年时间中一系列谷歌生产集群的工作负荷的概况分析信息。尽管研究人员在应用内发现了某种热点行为,但他们标识出构成总数据中心周期中的很大部分的跨应用的公共程序。这些热点中的大部分在功能上对于执行超越单个机器的计算是唯一的——称为“数据中心负担(tax)”的组件,诸如,远程程序调用、协议缓冲器串行化和压缩。研究人员推测,此类“负担”呈现用于微架构优化(例如,核内和核外加速器)的有趣的机会,其可被应用到未来的数据中心优化的服务器芯片上系统(SoC)。如图1中所示,WSC周期中的22-27%在数据中心负担的不同组件中被花费。这之中为协议缓冲器处理和管理。根据前述论文,协议缓冲器(Protocolbuffer)是用于谷歌内部数据存储和传输的公共语言。针对WSC的代码中最常见的习惯之一是将数据串行化到协议缓冲器,在将经串行化的协议缓冲器传递给远程被调用方时执行远程程序调用,并得回需要解串行化的类似经串行化的响应。术语“串行化”是指将结构化的数据转换为字节流,通常用于存储或用于通信。逆操作被称为“解串行化”,但谷歌将其称为“解析”。串行化/解串行化代码由protobuf编译器自动地生成,使得编程者能够以他们选择的语言与原生的类进行交互。所生成的代码是图1中所示出的protobuf部分的主要部分。附图说明随着通过在结合所附附图时参考以下具体实施方式使本专利技术的前述多个方面和许多伴随的优点变得更好地被理解,本专利技术的前述多个方面和许多伴随的优点将更容易领会,其中,遍及各个视图,除非另外指定,否则相同的附图标记指相同的组件:图1是图示出根据由谷歌进行的关于其服务器的测量的数据中心“负担”的级别的图示;图2是图示出被用于对可变长度量(VLQ)字节进行编码的编码格式的示图;图3a和图3b是图示出VLQ编码的示图,其中,图3a对应于使用高位优先字节次序对整数进行编码,并且图3b对应于使用低位优先字节次序对整数进行编码;图4是图示出varint编码尺寸指令应用到varint106903的结果的示图;图5a-图5c是图示出与应用到varint106903的varint编码指令的执行有关的各种操作的示图;图6是图示出在使用VLQ编码的varint编码指令的一个实施例之下如何使用10字节来对8字节的整数进行编码的示图;图7是图示出对使用图5a-图5c中所示出的操作编码的varint106903的尺寸进行解码的过程的示图;图8a-图8c是图示出对使用图5a-图5c中所示出的操作编码的varint106903进行解码的过程的示图;图9是图示出基于Arm的微架构的示例的示意性框图;图10a-图10d是图示出使用基于Arm的varint编码指令来生成字节紧缩经编码的varint字节流的示例的示图,其中,图10a图示出在对第一varint10592663进行编码时所执行的操作,图10b图示出在对第二varint105926632979112352进行编码时所执行的操作,图10c图示出在对第三varint9776547进行编码时所执行的操作,并且图10d图示出在对第四varint7039567833107374484进行编码时所执行的操作;以及图11a-图11d是图示出使用基于Arm的varint解码指令来对图10a-图10d中所生成字节紧缩经编码的varint字节流进行解码的示例的示图,其中,图11a图示出在对第一经编码的varint10592663进行解码时所执行的操作,图11b图示出在对第二经编码的varint105926632979112352进行解码时所执行的操作,图11c图示出在对第三经编码的varint9776547进行解码时所执行的操作,并且图11d图示出在对第四经编码的varint7039567833107374484进行编码时所执行的操作。具体实施方式本文中描述了用于可变长度整数编码的指令集以及相关联的方法和装置的实施例。在下列描述中,阐述众多特定细节以提供对本专利技术的实施例的透彻理解。然而,相关领域技术人员将理解可以在没有这些特定细节中的一个或多个特定细节的情况下实施本专利技术,或者利用其他方法、组件、材料等来实施本专利技术。在其他实例中,未详细示出或描述公知的结构、材料或操作,以避免使本专利技术的各方面模糊。贯穿本说明书对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定的特征、结构或特性被包括在本专利技术的至少一个实施例中。因此,贯穿本说明书的各种位置出现短语“在一个实施例中”或“在实施例中”不一定都是指同一个实施例。此外,在一个或多个实施例中,能以任何合适的方式来组合特定的特征、结构或特性。为清楚起见,本文附图中的单独的组件也可通过附图中它们的标签而不是通过特定的附图标记来引用。另外,指代特定类型的组件(如与特定组件对照)的标记可利用后跟“(typ)”(意指“典型的”)的附图标记来示出。将理解,这些组件的配置将是典型的,可能存在但为了简化和清楚起见未在附图中示出的类似组件或者未利用独立的附图标记来标记的以其他方式的类似组件。相反,“(typ)”不应被解释为意指组件、元件等典型地被用于其公开的功能、实现方式、目的等。Protobuf被设计成是快速且小型的,并且在谷歌被广泛地使用。在某种意义上,实际性能是加倍依赖于数据的。即,实际性能取决于正在被串行化的实际数据,但其还取决于正在被使用的数据格式。相应地,一些数据格式比其他数据格式更快,并且对于给定格式,一些数据将比其他数据更快。协议缓冲器的基本范例是用户定义了数个“消息”,其中每个“消息”描述某种数据结构的格式。这些消息描述类似于XML模式。编译器随后将这些消息编译为代码,对于C++,代码针对每个消息类型产生一个C++类。类似地,对于Java,将存在针对每个消息类型的Java类。为了使数据串行化,应用将其数据复制到类实例中,并最后告诉该类实例使其自己(通过该类的串行化方法)串行化。为了将经串行化的数据返回到其原始格式(解串行化),应用可以将数据流解析为类实例,并且随后关于其获取了什么数据来对其进行查询。粗略地讲,在高级别,存在写入到流/从流解析的两种类型的数据:整数和字符串。整数通常被写入为“varint”即可变长度整数。取决于正在被写入的值,varint被写入为1个与10个字节之间。字符串被写入为长度的varint,其后所跟字符串的字节。所以,在某种意义上,串行化过程可以被认为具有三个组成部分:本文档来自技高网...

【技术保护点】
1.一种处理器,包括:电路和逻辑中的至少一者,被配置成用于实现指令的集合,所述指令的集合是用于所述处理器的指令集架构(ISA)的部分,所述指令的集合与对可变长度整数(varint)进行编码和解码有关,所述指令的集合包括,varint尺寸编码指令,用于对varint的尺寸进行编码;varint编码指令,用于对varint进行编码;varint尺寸解码指令,用于对经编码的varint的尺寸进行解码;以及varint解码指令,用于对经编码的varint进行解码。

【技术特征摘要】
【国外来华专利技术】2016.09.30 US 15/281,3801.一种处理器,包括:电路和逻辑中的至少一者,被配置成用于实现指令的集合,所述指令的集合是用于所述处理器的指令集架构(ISA)的部分,所述指令的集合与对可变长度整数(varint)进行编码和解码有关,所述指令的集合包括,varint尺寸编码指令,用于对varint的尺寸进行编码;varint编码指令,用于对varint进行编码;varint尺寸解码指令,用于对经编码的varint的尺寸进行解码;以及varint解码指令,用于对经编码的varint进行解码。2.如权利要求1所述的处理器,其中,所述varint尺寸编码指令包括:将指令标识为varint尺寸编码指令的操作码;标识在其中存储varint的源寄存器的源操作数;以及标识将在其中写入所述varint尺寸编码指令的结果的目的地寄存器的目的地操作数。3.如权利要求1或2所述的处理器,其中,所述varint编码指令包括:将指令标识为varint编码指令的操作码;包括目的地指针(dstptr)的第一操作数;包括在其中存储源varint的64个位或128个位中的一者的源寄存器的第二操作数;以及包括在其中存储所述varint的尺寸的寄存器的第三操作数。4.如前述权利要求中任一项所述的处理器,其中,所述varint编码指令在被执行时执行包括以下各项的操作:将varint转换为包括一个或多个可变长度量(VLQ)八位位组的VLQ编码。5.如前述权利要求中任一项所述的处理器,其中,所述ISA包括并行位转储(PDEP)指令,并且所述varint编码指令在被执行时采用至少一个PDEP指令,每个PDEP指令包括与所述varint的原始或经位移位的部分对应的源操作数、以及包括具有0x7f7f7f7f...模式的掩码的第二操作数。6.如前述权利要求中任一项所述的处理器,其中,所述varint尺寸解码指令包括:将指令标识为varint尺寸解码指令的操作码;标识将在其中写入所述varint尺寸解码指令的结果的目的地寄存器的目的地操作数;以及指向将由所述varint尺寸解码指令进行解码的经编码的varint的位置的源指针。7.如权利要求6所述的处理器,其中,所述varint编码指令在被执行时执行包括以下各项的操作:开始于经编码的varint的第一个字节,对一个或多个顺序字节中的每个顺序字节求值,直到确定正在被求值的字节的最高有效位是‘0’;以及将所述varint的以字节为单位的尺寸存储在目的地寄存器中,所述尺寸等于被求值的字节的数量。8.如前述权利要求中任一项所述的处理器,其中,所述varint解码指令包括:将指令标识为varint解码指令的操作码;包括在其处写入所述varint解码指令的结果的目的地的第一操作数;指向将由所述varint解码指令进行解码的经编码的varint的位置的源指针;以及标识在其中存储所述varint的尺寸的寄存器的第三操作数。9.如前述权利要求中任一项所述的处理器,其中,所述处理器采用基于Arm的微架构。10.如前述权利要求中任一项所述的处理器,其中,所述处理器采用基于x86的微架构。11.一种非瞬态机器可读介质,具有存储于其上的半导体设计数据,所述半导体设计数据定义用于处理器中的指令集架构(ISA)的电路和逻辑,所述ISA包括与对可变长度整数(varint)进行编码和解码有关的指令的集合,所述指令的集合包括,varint尺寸编码指令,用于对varint的尺寸进行编码;varint编码指令,用于对varint进行编码;varint尺寸解码指令,用于对经编码的varint的尺寸进行解码;以及varint解码指令,用于对经编码的varint进行解码。12.如权利要求11所述的非瞬态机器可读介质,其中,所述varint尺寸编码指令包括:将指令标识为varint尺寸编码指令的操作码;标识在其中存储varint的源寄存器的源操作数;以及标识将在其中写入所述varint尺寸编码指令的结果的目的地寄存器的目的地操作数。13.如权利要求11或12所述的非瞬态机器可读介质,其中,所述varint编码指令包括:将指令标识为varint编码指令的操作码;包括目的地指针(dstptr)的第一操作数;包括在其中存储源varint的64个位或128个位中的一者的源寄存器的第二操作数;以及包括在其中存储所述varint的尺寸的寄存器的第三操作数。14.如权利要求11-13中任一项所述的非瞬态机器可读介质,其中,所述varint编码指令在被执行...

【专利技术属性】
技术研发人员:J·D·吉尔福德V·戈帕尔
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1