CN114430822A - 用于处理具有宽立即操作数的指令的系统和方法 - Google Patents

用于处理具有宽立即操作数的指令的系统和方法 Download PDF

Info

Publication number
CN114430822A
CN114430822A CN202080066451.9A CN202080066451A CN114430822A CN 114430822 A CN114430822 A CN 114430822A CN 202080066451 A CN202080066451 A CN 202080066451A CN 114430822 A CN114430822 A CN 114430822A
Authority
CN
China
Prior art keywords
immediate operand
wide
immediate
instruction
hcilt
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.)
Granted
Application number
CN202080066451.9A
Other languages
English (en)
Other versions
CN114430822B (zh
Inventor
A·佩雷斯
R·W·史密斯
S·普立亚达尔西
R·M·艾尔·雪克
V·R·克廷蒂·纳雷什
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114430822A publication Critical patent/CN114430822A/zh
Application granted granted Critical
Publication of CN114430822B publication Critical patent/CN114430822B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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
    • 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/30181Instruction operation extension or modification
    • 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/3802Instruction prefetching
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

基于处理器的系统中的处理器元件被配置为获取与程序二进制文件相关联的一个或多个指令,其中该一个或多个指令包括具有立即操作数的指令。处理器元件被配置为确定立即操作数是否是对宽立即操作数的引用。响应于确定立即操作数是对宽立即操作数的引用,处理器元件被配置为从程序二进制文件中的公共中间查找表(CILT)取回宽立即操作数,其中立即操作数索引CILT中的宽立即操作数。然后,处理器元件被配置为处理具有立即操作数的指令,使得立即操作数被来自CILT的宽立即操作数替换。

Description

用于处理具有宽立即操作数的指令的系统和方法
技术领域
本公开涉及基于处理器的系统和方法,系统和方法用于操作基于处理器的系统,以最小开销容纳大于指令集体系结构(ISA)所定义的指令大小的立即操作数的使用。
背景技术
指令集体系结构(ISA)定义了处理器可以执行的指令。大多数ISA具有相对较小的指令大小(例如,四个字节)。在某些情况下,需要使用大于ISA定义的指令大小的立即值(即,被存储为指令本身的一部分、而不是指向存储器位置或寄存器的指针的值)。例如,在具有四字节指令长度的ISA中,对于移动(move)立即数指令(例如,“movi register,immediate”,其中“movi”是指令的操作码,“immediate”是指定立即值的立即操作数,以及“register”是寄存器操作数,其指定将用立即值更新的寄存器),保留一个字节用于操作码,保留一个字节用于寄存器操作数,只留下两个字节用于立即操作数。在此示例中,长度超过两个字节的立即值不能存储在指令本身中。作为另一示例,在具有四字节指令长度的同一ISA中,对于分支到立即偏移量指令(例如,“bri immediate”,其中“bri”是指令的操作码,而“immediate”是指定要跳转到的偏移值的立即操作数),保留一个字节用于操作码,仅为留下三个字节用于立即操作数。在此示例中,长度超过三个字节的立即值不能存储在指令本身中。在立即值太大而不能存储在指令中的情况下,因为它太大而不能容纳在所ISA规定的由指令所提供的分配空间中,这里将这种立即值定义为宽立即数。
包括宽立即操作数的指令通常由软件处理。例如,在一种用于具有宽立即操作数的移动立即数指令的方法中,将宽立即操作数嵌入到程序二进制文件中,并且用加载指令替换具有宽立即操作数的指令。由此,移动立即数指令如下的移动立即数指令可以被改变:
movi r0,0xBADDF00DDEADCAFE
,使得宽立即操作数存储在程序二进制文件中(在本示例中,当二进制文件被加载到存储器中时在存储器位置0xF9),并且移动立即数指令变为:
ldr r0,[0xF9]
这可以由程序开发人员显式完成,也可以由编译器在编译时显式完成。值得注意的是,任何依赖于移动立即数指令的指令都必须等待宽立即操作数从存储器中加载,然后才能处理它们。这可能需要几个处理周期,因此增加了程序二进制文件的执行时间。
在用于具有宽立即操作数的移动立即数指令的另一种方法中,指令被包括左移指令(sh1)和立即数加指令(addi)的指令序列取代。相应地,与上面相同的移动立即数指令:
movi r0,0xBADDF00DDEADCAFE
可更改为:
movi r0,0xBADDF00D
shl r0,32
addi r0,0xDEADCAFE
同样,这可以由程序开发人员显式完成,也可以由编译器在编译时显式完成。
作为另一示例,在具有宽立即操作数的分支到立即数偏移量指令的一种方法中,可以将多个分支链接在一起以最终到达由宽立即操作数指示的偏移量,每个分支具有大小在ISA的指令长度内的立即操作数。这种方法会导致多个控制流重定向,从而消耗额外的处理器资源。在用于具有宽立即操作数的分支到立即偏移量指令的另一种方法中,可以使用间接分支来到达由宽立即操作数指示的偏移量。间接分支占用处理器的分支预测电路系统中的空间,并且在存在100%可预测的一个目标的当前情况下,在分支预测电路系统中占用该空间是浪费的。
在上面讨论的所有示例中,存在为处理具有宽立即操作数的指令而招致的相对较大的开销,从而降低了二进制文件执行的性能。因此,需要改进用于处理具有宽立即操作数的指令的系统和方法。
发明内容
本公开的示例性方面涉及用于处理具有宽立即值的指令的改进的系统和方法。就此而言,在一个示例性方面,基于处理器的系统中的处理器元件被配置为获取与程序二进制文件相关联的一个或多个指令,其中该一个或多个指令包括具有立即操作数的指令。处理器元件被配置为确定立即操作数是否是对宽立即操作数的引用。响应于确定立即操作数是对宽立即操作数的引用,处理器元件被配置为从程序二进制文件中的公共立即查找表(CILT)取回宽立即操作数,其中立即操作数索引CILT中的宽立即操作数。然后,处理器元件被配置为处理具有立即操作数的指令,使得立即操作数被来自CILT的宽立即操作数替换。通过允许具有立即操作数的指令引用CILT中的宽立即操作数,具有宽立即值的指令可以在程序二进制文件中表示为具有双重语义的单个指令。与传统方法相比,这可以降低程序二进制文件的静态大小并且提高指令获取带宽,这可以改善基于处理器的系统的性能。
在另一个示例性方面,基于处理器的系统中的处理器元件包括硬件电路(HCILT)和指令处理电路系统。HCILT包括被配置为存储将立即值索引为宽立即值的表的硬件存储装置(例如,存储器或寄存器)。指令处理电路系统被配置为从指令存储器获取与程序二进制文件相关联的一个或多个指令,指令包括具有立即操作数的指令。指令处理电路系统被配置为确定立即操作数是否是对宽立即操作数的引用。响应于确定立即操作数是对宽立即操作数的引用,指令处理电路系统被配置为在HCILT中搜索由立即操作数索引的宽立即操作数,并且响应于在HCILT中找到宽立即操作数来处理指令,使得立即操作数被来自HCILT的宽立即操作数替换。如果在HCILT中未找到宽立即操作数,则如上所述从CILT取回它。如果立即操作数不是对宽立即操作数的引用,则会照常处理指令。使用HCILT来存储和取回宽立即操作数避免了必须从存储器加载宽立即操作数,从而可以显著提高基于处理器的系统的性能。
本领域技术人员将在阅读以下结合附图对优选实施例的详细描述之后理解本公开的范围并认识到其附加方面。
附图说明
并入并形成本说明书一部分的附图示出了本公开的几个方面,并且与说明书一起用于解释本公开的原理。
图1是示出示例性基于处理器的系统的框图,系统包括处理器,处理器被配置为处理包括宽立即操作数的指令,使得宽立即操作数从公共立即查找表(CILT)或硬件CILT(HCILT)中获取;
图2是示出图1中基于处理器的系统中的处理器处理指令的示例性细节的框图,指令包括宽立即操作数,使得宽立即操作数从CILT或HCILT被获取;
图3是示出用于处理指令的示例性过程的流程图,指令可以包括引用存储在CILT或HCILT中的宽立即操作数的立即操作数;
图4是示出用于处理移动立即数指令的示例性过程的流程图,移动立即数指令可以包括引用存储在CILT或HCILT中的宽立即操作数的立即操作数;
图5是示出从CILT填充HCILT的示例性过程的流程图;
图6是示出用于将源代码编译成包括CILT的程序二进制文件的示例性编译系统的框图;
图7是示出用于从源代码生成包括CILT的程序二进制文件的示例性过程的流程图;
图8是示出基于处理器的示例性系统的框图,示例性系统包括处理器,处理器被配置为处理包括宽立即操作数的指令,使得从CILT或HCILT获取宽立即操作数;以及
图9是示出用于处理HCILT未命中的示例性过程的流程图,其中在HCILT中未找到宽立即操作数。
具体实施方式
本公开的示例性方面涉及用于处理具有宽立即值的指令的改进的系统和方法。就此而言,在一个示例性方面,基于处理器的系统中的处理器元件被配置为获取与程序二进制文件相关联的一个或多个指令,其中该一个或多个指令包括具有立即操作数的指令。处理器元件被配置为确定立即操作数是否是对宽立即操作数的引用。响应于确定立即操作数是对宽立即操作数的引用,处理器元件被配置为从程序二进制文件中的公共立即查找表(CILT)取回宽立即操作数,其中立即操作数索引CILT中的宽立即操作数。然后,处理器元件被配置为处理具有立即操作数的指令,使得立即操作数被来自CILT的宽立即操作数替换。通过允许具有立即操作数的指令引用CILT中的宽立即操作数,具有宽立即值的指令可以在程序二进制文件中表示为具有双重语义的单个指令。与传统方法相比,这可以降低程序二进制文件的静态大小并且提高指令获取带宽,这可以改善基于处理器的系统的性能。
在另一个示例性方面,基于处理器的系统中的处理器元件包括硬件电路(HCILT)和指令处理电路系统。HCILT包括被配置为存储将立即值索引为宽立即值的表的硬件存储装置(例如,存储器或寄存器)。指令处理电路系统被配置为从指令存储器获取与程序二进制文件相关联的一个或多个指令,指令包括具有立即操作数的指令。指令处理电路系统被配置为确定立即操作数是否是对宽立即操作数的引用。响应于确定立即操作数是对宽立即操作数的引用,指令处理电路系统被配置为在HCILT中搜索由立即操作数索引的宽立即操作数,并且响应于在HCILT中找到宽立即操作数来处理指令,使得立即操作数被来自HCILT的宽立即操作数替换。如果在HCILT中未找到宽立即操作数,则如上所述从CILT取回它。如果立即操作数不是对宽立即操作数的引用,则会照常处理指令。使用HCILT来存储和取回宽立即操作数避免了必须从存储器加载宽立即操作数,从而可以显著提高基于处理器的系统的性能。
图1是示例性基于处理器的系统100的示意图,其可以包括对其的改进,以便更有效地处理具有宽立即操作数的指令。基于处理器的系统100包括多个处理器块102(1)-102(M),其中在本示例性实施例中“M”等于所需的任何数量的处理器块102。每个处理器块102包含多个处理器元件104(1)-104(N),其中在本示例性实施例中“N”等于所需的任意数量的处理器。每个处理器块102中的处理器元件104可以是微处理器(μP)、矢量处理器(vP)或任何其他类型的处理器。此外,每个处理器块102包含共享的2级(L2)高速缓存106,用于存储由任何处理器元件104使用或在每个处理器元件104之间共享的高速缓存数据。还提供共享的3级(L3)高速缓存108,用于存储由任何处理器块102使用或在每个处理器块102之间共享的高速缓存数据。提供内部总线系统110,内部总线系统110允许每个处理器块102访问共享L3高速缓存108以及其他共享资源,例如用于访问主、外部存储器(MEM)、一个或多个外围设备114(包括输入/输出设备、联网设备等)和存储器116的存储器控制器112。
在操作中,一个或多个处理器块102中的一个或多个处理器元件104与存储器控制器112合作以从存储器获取指令,执行指令以执行一个或多个操作并生成结果,并且可选地将结果存储回存储器或将结果提供给另一消费者指令以供消费。
图2示出了根据本公开的示例性实施例的基于处理器的系统100的处理器块102中的处理器元件104的细节。处理器元件104包括指令处理电路200。指令处理电路200包括指令获取电路202,其被配置为从指令存储器206获取指令204。例如,指令存储器206可以设置在基于处理器的系统100中的系统存储器中或作为系统存储器的一部分。还可以在处理器元件104中提供指令高速缓存208,以缓存从指令存储器206获取的指令204,从而减少指令获取电路202中的时延。该示例中的指令获取电路202被配置为在获取指令204F到达要执行的执行电路212之前,将作为获取指令204F的指令204被提供到一个或多个指令流水线I0-IN中,作为指令处理电路200中的指令流210进行预处理。指令流水线I0-IN跨指令处理电路系统200的不同处理电路或处理级而被提供,以在执行电路212中执行获取指令204F之前,以顺序步骤对获取指令204F进行预处理和处理,这些步骤可以并发执行以增加吞吐量。
在处理器元件104中的指令处理电路200中还提供控制流预测电路214(例如,分支预测电路),以推测或预测诸如条件分支指令的控制流获取指令204F的目标地址。指令获取电路202使用控制流预测电路214对目标地址的预测,以基于预测的目标地址确定要获取的下一条获取指令204F。指令处理电路200还包括指令译码电路216,指令译码电路216被配置为将由指令获取电路202获取的获取指令204F译码为译码指令204D,以确定所需的指令类型和动作,其还可用于确定译码指令204D应放置在哪个指令流水线I0-IN中。然后,译码指令204D被放置在指令流水线I0-IN中的一个或多个中,并且接下来被提供给寄存器访问电路218。
寄存器访问电路218被配置为访问物理寄存器堆(PRF)222中的物理寄存器220(1)-220(X),以从执行电路212取回已执行指令204E的生成值。寄存器访问电路218还被配置为提供所取回的已执行指令204E的生成值作为要执行的译码指令204D的源寄存器操作数。指令处理电路200还包括分派电路224,其被配置为当译码指令204D的所有源寄存器操作数都可用时,将译码指令204D分派到执行电路212执行。例如,分派电路224负责在将译码的消费者指令204D分派到执行电路212用于执行之前,确保译码的消费者指令204D的操作数的必要值可用,该译码的消费者指令204D是消费来自先前执行的生产者指令的生成值的指令。译码指令204D的操作数可以包括中间值、存储在存储器中的值、以及来自对于消费者指令将被认为是生产者指令的其他译码指令204D的生成值。
值得注意的是,除PRF 222之外,HCILT 226设置在图中,或如图所示。在本示例中,HCILT 226包括一组HCILT寄存器228(1)-228(Y),其中“Y”是任何所需的数字,专用于存储宽立即值,使得宽立即值由大小在处理器元件104的ISA的指令大小内的立即值来索引。如下面详细讨论的,HCILT寄存器228可以包括用于实现HCILT 226的功能的支持寄存器。当具有引用宽立即操作数的立即操作数的指令(如由操作码或如下所述的立即操作数的语义所指示的)时,可以在HCILT 226中搜索宽立即操作数,使得寄存器访问电路218用来自HCILT226的宽立即操作数替换该立即操作数。这可以通过绕过从存储器加载宽立即操作数来显著提高程序二进制文件执行的性能,否则处理具有宽立即值的指令将需要发生这种加载。下面讨论关于HCILT 226的功能的更多细节。值得注意的是,尽管上面将HCILT 226示为一组寄存器,但是在各种实施例中,HCILT可以被实现为任何类型的专用硬件存储装置,例如硬件存储器。
执行电路212被配置为执行从分派电路224接收的译码指令204D。如上所述,执行指令204E可以生成要由其他指令消耗的生成值。在这种情况下,写入电路230将生成值写入PRF 222,使得它们可以稍后被消费者指令消费。
图3是示出根据本公开的示例性实施例的用于操作处理器元件104以处理具有宽立即操作数的指令的方法的流程图。首先,从指令存储器206,或者如果被高速缓存,则从指令高速缓存208获取与程序二进制文件相关联的指令(框300)。值得注意的是,如下面详细讨论的,程序二进制文件包括CILT,该CILT是存储宽立即操作数的表,宽立即操作数由大小在处理器元件104的ISA的指令大小内的立即操作数来索引。指令包括具有立即操作数的指令。如上所述,立即操作数是作为指令本身的一部分存储的值,而不是作为指向存储器位置或寄存器的指针。确定立即操作数是否是对宽立即操作数的引用(框302)。确定立即操作数是否是对宽立即操作数的引用可以通过几种方式来完成。在一个示例性实施例中,处理器元件104的ISA可以指定立即操作数包括保留位,保留位指定立即操作数是否是对宽立即操作数的引用。例如,如果立即操作数的最高有效位被置位,则ISA可以指定立即操作数是对宽立即操作数的引用,立即操作数可以被存储在CILT或HCILT中,如下所述。如果立即操作数的最高有效位未被置位,则ISA可以指定立即操作数不是对宽立即操作数的引用。在另一示例性实施例中,处理器元件104的ISA可指定自定义操作码,自定义操作码指定自定义操作码之后的立即操作数是对宽立即操作数的引用。
如果立即操作数不是对宽立即操作数的引用,则由执行电路212常规地处理该指令(框304)。如果立即操作数是对宽立即操作数的引用,则确定处理器元件104是否包括HCILT 226(框306)。如上所述,HCILT 226是包括用于存储表的一个或多个寄存器的硬件结构,表存储由大小在处理器元件104的ISA的指令大小内的立即操作数引用的宽立即操作数。HCILT 226是CILT的硬件推广(corollary),并且与单独的CILT相比,旨在进一步加速具有宽立即操作数的指令的处理。确定处理器元件104是否包括HCILT 226可以包括读取处理器元件104的寄存器。用于确定处理器元件104是否包括HCILT 226的指令可以包括在处理器元件104的ISA中。如果处理器元件104不包括HCILT 226,则可以从程序二进制文件中的CILT取回宽立即操作数(框308)。从程序二进制文件中的CILT取回宽立即操作数可以包括从由立即值索引的存储器位置获取宽立即操作数。立即操作数可以直接指向包括宽立即值的存储器位置(例如,经由距CILT的起始存储器地址的偏移值),或者CILT可以是映射,其中立即值被散列以获得宽立即值的实际索引。值得注意的是,无论以哪种方式,处理器元件104响应于遇到具有引用宽立即操作数的立即操作数的指令(由于立即操作数的双重语义或由于自定义操作码)来执行从存储器加载宽立即值,使得在与程序二进制文件相关联的指令中从存储器加载不是显式的。下面用伪代码表示不同之处,其中根据传统方法原来被表示为:
A=load X//X是宽立即数
B=Y+A//取决于前面的加载指令
的加法运算可以被重新配置为:
B=Y+A’//A’是具有双重语义的立即操作数
如图所示,用于处理具有宽立即数的指令的两个指令可以被压缩成单个指令,其中宽立即值的加载由处理器根据专用ISA规范来处理。这不仅减少了程序二进制文件的静态代码大小,而且还减少了指令获取带宽,这可能会改善处理器元件104的性能。
然后处理该指令,使得立即操作数被来自CILT的宽立即操作数替换(框310)。如果处理器元件104包括HCILT 226,则确定由立即操作数引用的宽立即操作数是否在HCILT226中(框312)。HCILT 226大小可能不足以容纳程序二进制文件中的每个宽立即操作数。也就是说,HCILT 226可以小于CILT,因此在HCILT 226中可以只存在宽立即操作数中的一部分。如果由立即操作数引用的宽立即操作数不在HCILT 226中,则从程序二进制文件中的CILT取回宽立即操作数(框314),这如上所述由处理器元件104启动的动态加载来完成。然后处理该指令,使得立即操作数被来自CILT的宽立即操作数替换(框316)。可选地,也可以将宽立即操作数从CILT复制到HCILT 226(框318),使得在未来的处理周期中可以更容易地访问宽立即操作数。一个或多个高速缓存规则可以规定在如下所述从CILT获取宽立即操作数之后,是否应将在HCILT 226中未找到的宽立即操作数添加到HCILT 226。
如果在HCILT 226中找到宽立即操作数,则从HCILT 226取回宽立即操作数(框320)。如上面关于CILT所讨论的,可以使用立即操作数作为直接索引或散列索引来从HCILT226取回宽立即操作数。然后处理该指令,使得立即操作数被来自HCILT 226的宽立即操作数替换(框322)。
为了支持前述操作,可以向处理器元件104添加多个系统寄存器,以提供对单独使用CILT或CILT与HCILT一起使用的支持。下表说明了附加寄存器及其功能:
Figure BDA0003557973880000111
值得注意的是,这些寄存器仅是ISA对CILT和HCILT的支持的一个示例性实现,用于改进具有宽立即操作数的指令的处理。在一个或多个备选实施例中,提供ISA中的专用指令以从CILT加载宽立即数,使得上面讨论的一个或多个寄存器可能是不必要的,因此不被包括在内。
图4是示出将上述过程应用于要由处理器元件104处理的特定指令(移动立即数(movi)指令)的流程图。移动立即数指令包括寄存器操作数(REGISTER)和立即操作数(IMMEDIATE)(框400)。指令在处理时会将立即操作数移动到寄存器中。处理器元件104确定立即操作数是否是对宽立即操作数的引用(框402)。如上所述,确定立即操作数是否是对宽立即操作数的引用可以包括确定立即操作数中的保留位是否被置位。如果立即操作数不是对宽立即操作数的引用,则将寄存器设置为立即操作数(框404),并且完成移动立即数指令(框406)。如果立即操作数是对宽立即操作数的引用,则处理器元件104确定其是否包括HCILT 226(框408)。如果处理器元件104包括HCILT 226,则将寄存器设置为HCILT_table[immediate]中的值(框410)。如图所示,立即操作数索引HCILT 226中的宽立即操作数。然后完成移动立即数指令(框406)。如果处理器元件104不包括HCILT 226,则处理器元件104注入加载寄存器指令(“ldr register,[CILT_base_address+immediate]”)以从CILT加载宽立即操作数(框412),该宽立即操作数从CILT_base_address开始存储在存储器中。同样,立即操作数用于索引CILT中的宽立即操作数。在将立即值用作索引(例如,偏移量)以取回宽立即操作数之前,可以从立即值中剥离用于确定立即操作数是否是对宽立即操作数的引用的任何保留位。然后完成移动立即数指令(框406)。
图5是示出根据本公开的示例性实施例在上下文切换期间如何从CILT填充处理器元件104中的HCILT 226的流程图。HCILT 226的填充响应于程序二进制文件中的上下文切换而发生(框500)。处理器元件104确定HCILT 226中的条目数量是否大于或等于CILT中的条目数量(框502)。如上所述,HCILT 226包括多个寄存器。寄存器的大小确定可以在HCILT226中存储多少条目(其中每个条目存储宽立即操作数),从而确定存在多少条目。如上所述,HCILT 226中的条目数量可以在寄存器HCILT_entries中提供,在这种情况下,确定HCILT 226中的条目数量是否大于或等于CILT中的条目数量可以是简单地读取寄存器并执行比较。如果HCILT 226中的条目数量大于或等于CILT中的条目数量,则将所有CILT条目复制到HCILT中(框504)。例如,对于具有32个条目的CILT和具有32个或更多条目的HCILT226,可以执行以下示例性指令以从CILT填充HCILT 226:
wsr HCILT_active_entry,0
wsr HCILT_table wide_immediate_0
wsr HCILT_active_entry,1
wsr HCILT_table wide_immediate_1
wsr HCILT_active_entry,2
wsr HCILT_table wide_immediate_2
wsr HCILT_active_entry,31
wsr HCILT_Table wide_immediate_31
其中“wsr register,immediate”是将“immediate”写入“register”的写系统寄存器指令,“wide_immediate_x”是存储在CILT中的宽立即操作数“x”。如图所示,写入HCILT_active_entry是为了在每次写入HCILT_table之前更新HCILT_table的索引。然而,在一些实施例中,对HCILT_table索引的处理可以是不透明的,使得它被自动递增和递减(例如,类似于堆栈)。然后切换该上下文(框506)。
如果HCILT 226中的条目数量小于CILT中的条目数量,则仅将CILT条目的子集复制到HCILT 226中(框508)。例如,对于具有32个条目的CILT和具有4个条目的HCILT,可以执行以下示例性指令以从CILT填充HCILT 226:
wsr HCILT_active_entry,0
wsr HCILT_table wide_immediate_0
wsr HCILT_active_entry,1
wsrHCILT_table wide_immediate_4
wsr HCILT_active_entry,2
wsrHCILT_table wide_immediate_12
wsr HCILT_active_entry,3
wsr HCILT_table wide_immediate_29
使得CILT的条目0、4、12和29被复制到HCILT 226中。然后切换该上下文(框506)。当HCILT 226中的条目数量不足以存储CILT中的所有条目时,可以提供任何数量的不同策略来确定将来自CILT的哪些条目复制到HCILT 226中。此外,可以如上所述实现高速缓存策略,使得当在HCILT 226中未找到宽立即操作数(即,HCILT 226未命中)并且必须从CILT取回宽立即操作数时,此时将宽立即操作数复制到HCILT 226中。
如上所述由处理器元件104获取、译码和执行的与程序二进制文件相关联的指令由编译器生成,使得它们包括CILT。图6示出了示例性编译器系统600。编译器系统600包括存储器602和处理电路系统604。存储器602和处理电路系统604经由总线606连接。如下所述,存储器602存储指令,指令当由处理电路系统604执行时,使得编译器系统600取回或接收源代码,生成源代码的中间表示,将一个或多个编译器优化应用于源代码的中间表示,并将源代码的优化的中间表示提供为适于由基于处理器的系统中的处理器执行的机器代码。编译器系统600还可以包括输入/输出电路608,该输入/输出电路608可以连接到用于存储和取回源代码和/或机器代码的存储器610。出于讨论的目的,将描述编译器系统600的操作,因为它涉及将源代码编译成用于基于处理器的系统100中的处理器元件104的机器代码。然而,编译器系统600可以更一般地将源代码编译成适合于任何基于处理器的系统中的任何处理器的机器码,包括用于几个不同的基于处理器的系统的几个不同的处理器。根据本公开的各种实施例,存储器602可以包括指令,指令当由处理电路系统604执行时,使编译器系统600生成包括CILT和一个或多个指令的机器代码,该指令具有引用存储在CILT中的宽立即值的立即值,如下面详细讨论的。
图7是示出根据本公开的示例性实施例的用于操作编译器系统600以生成包括CILT的程序二进制文件的方法的流程图。首先,编译器系统600接收源代码(框700)。源代码可以是用诸如C、Rust、Go、Swift等高级编程语言编写的代码。备选地,源代码可以是仅由编译器系统600汇编的低级语言(即,直接用机器代码编写),如下所述。编译器系统600标识源代码中的宽立即操作数(框702)。宽立即操作数可以根据一个或多个规则通过静态代码分析来标识。例如,宽立即操作数可以基于它们的长度来标识,但也可能需要满足附加要求,例如在源代码中出现一定次数。编译器系统600可以在将源代码转换为适合于分析的中间表示之后标识宽立即操作数。编译器系统600在CILT中提供所标识的宽立即值(框704),如上所述,CILT是数据结构,具体而言是表,其将宽立即操作数索引为大小在处理器元件104的ISA的指令长度内的立即值。编译器系统600可以在基于源代码提供机器代码之前执行诸如代码优化等一个或多个附加步骤(框706)。如上所述,CILT数据结构以及用于处理器元件104的经更新的ISA可以提高二进制文件执行的性能,经更新的ISA允许立即操作数引用存储在CILT和可选的HCILT 226中的宽立即操作数。
图8是包括处理器802的示例性基于处理器的系统800的框图,处理器802被配置为基于关于处理器802的运行时信息来支持编译器优化的机器码的执行。例如,图10中的处理器802可以是图2中的处理器元件104,并且基于处理器的系统800可以与图1中的基于处理器的系统100相同,其中示出了另外的和/或备选的细节。基于处理器的系统800可以是包括在电子板卡中的一个或多个电路,例如印刷电路板(PCB)、服务器、个人计算机、台式计算机、膝上型计算机、个人数字助理(PDA)、计算板、移动设备或任何其他设备,并且可以表示例如服务器或用户的计算机。在该示例中,基于处理器的系统800包括处理器802。处理器802表示一个或多个通用处理电路,例如微处理器、中央处理单元等。更具体地,处理器802可以是EDGE指令集微处理器或实现支持显式消费者命名的指令集的其他处理器,以传递由生产者指令的执行产生的生成值。处理器802被配置为执行指令中的处理逻辑,以执行这里讨论的操作和步骤。在该示例中,处理器802包括用于指令的临时快速存取存储器存储的指令高速缓存804和指令处理电路系统806。从存储器(例如,通过系统总线810从系统存储器808)获取或预获取的指令被存储在指令高速缓存804中。指令处理电路系统806被配置为处理获取到指令高速缓冲存储器804中的指令,并处理指令以供执行。
处理器802和系统存储器808耦合到系统总线810,并且可以互连包括在基于处理器的系统800中的外围设备。众所周知,处理器802通过在系统总线810上交换地址、控制和数据信息来与这些其他设备通信。例如,处理器802可以将总线事务请求传送到作为从属设备的示例的系统存储器808中的存储器控制器812。尽管图8中未示出,但是可以提供多个系统总线810,其中每个系统总线810构成不同的结构。在该示例中,存储器控制器812被配置为向系统存储器808中的存储器阵列814提供存储器访问请求。存储器阵列814由用于存储数据的存储位单元阵列组成。作为非限制性示例,系统存储器808可以是只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(例如,同步DRAM(SDRAM)等)和静态存储器(例如,闪存、静态随机存取存储器(SRAM)等)。
其他设备可以连接到系统总线810。如图8所示,作为示例,这些设备可以包括系统存储器808、一个或多个输入设备816、一个或多个输出设备818、调制解调器820和一个或多个显示控制器822。(多个)输入设备816可以包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(多个)输出设备818可以包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。调制解调器820可以是被配置为允许向和从网络824交换数据的任何设备。网络824可以是任何类型的网络,包括但不限于有线或无线网络、专用或公共网络、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、BLUETOOTHTM网络和因特网。调制解调器820可以被配置为支持所需的任何类型的通信协议。处理器802还可以被配置为通过系统总线810访问(多个)显示控制器822,以控制发送到一个或多个显示器826的信息。(多个)显示器826可以包括任何类型的显示器,包括但不限于阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
图8中的基于处理器的系统800可以包括要由处理器802执行的指令集828,用于根据指令期望的任何应用。指令828可以存储在系统存储器808、处理器802和/或指令高速缓存804中,作为非瞬态计算机可读介质830的示例。指令828还可以在它们执行期间完全或至少部分地驻留在系统存储器808内和/或处理器802内。指令828还可以经由调制解调器820在网络824上发送或接收,使得网络824包括计算机可读介质830。
虽然在示例性实施例中计算机可读介质830被示为单个介质,但是术语“计算机可读介质”应当包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读介质”还应被视为包括能够存储、编码或携带由处理设备执行的一组指令并使处理设备执行本文公开的实施例的任何一个或多个方法的任何介质。因此,术语“计算机可读介质”应被视为包括但不限于固态存储器、光学介质和磁介质。
图9是根据本公开的一个实施例的流程图,示出了如果在HCILT 226中未找到宽立即操作数(即,HCILT未命中)会发生什么的细节。该过程开始于以上参考图3讨论的过程的框312,其中在HCILT 226中未找到宽立即操作数(来自图3中框312的否路径)。如果在HCILT226中未找到宽立即操作数,则确定处理器元件104是否具有对HCILT未命中的后端支持(框900)。如本文所讨论的,对HCILT未命中的后端支持意味着当从CILT加载立即操作数的指令被直接注入后端并随后在不刷新流水线的情况下被处理时,流水线(或当前执行具有立即操作数的指令的流水线部分)可以被阻塞。如果处理器元件104具有对HCILT未命中的后端支持,则流水线被保持(框902),并且重新处理指令,使得立即操作数被来自CILT的宽立即操作数替换(框904)。然后确定流水线中是否存在未预见的危险(框906)。例如,如果用来自CILT的宽立即操作数替换立即操作数的指令即使在流水线保持的情况下也不能获得执行资源、存在转换错误等,则可能会发生这种情况。如果在流水线中存在未预见的危险,则冲刷流水线(框908),重新获取指令(框910),变换指令,使得立即操作数被加载为来自CILT的宽立即操作数(框912),并且处理变换后的指令(框914)。值得注意的是,在发生未预见的危险的情况下会导致流水线冲刷,这增加了处理具有立即操作数的指令的开销。
如果不存在未预见的流水线危险(即,如果指令的重新处理使得宽立即操作数替换为来自CILT的宽立即操作数在流水线被保持之后没有问题地进行),则确定是否应该将宽立即操作数插入HCILT中的策略(框916)。作为这里讨论的对处理宽立即操作数的支持的一部分,基于处理器的系统100可以包括用于确定何时应该将在HCILT 226中未找到的宽立即操作数从CILT复制到HCILT 226中的策略。值得注意的是,这仅在HCILT 226的大小小于CILT中的条目数量时才是问题。在这种情况下,诸如用于宽立即操作数的特定数量的HCILT未命中、HCILT未命中的频率或任何数量的不同事件的策略规则可以规定将宽立即操作数添加到HCILT 226。如果策略指示应该将宽立即操作数插入HCILT 226中,则选择HCILT 226中的牺牲条目(框918),并且用宽立即操作数替换该牺牲条目(框920)。牺牲条目可以类似地由任何数量的策略规则来选择,例如使用频率。
回到框900,如果处理器元件104不具有对HCILT未命中的后端支持,意味着指令不能被重新处理,使得立即操作数被来自CILT的宽立即操作数替换而不中断流水线,则流水线被刷新(框908),指令被重新获取(框910)并被变换,使得立即操作数被来自CILT的宽立即操作数替换(框912),并且变换后的指令被处理(框914)。同样,过程可以前进到框916,其中确定是否应该将宽立即数添加到HCILT 226,并且可以基于其进行添加或不添加。
这里公开的实施例包括各种步骤。这里公开的实施例的步骤可以由硬件组件形成,或者可以体现在机器可执行指令中,机器可执行指令可以用于使用指令编程的通用或专用处理器执行这些步骤。备选地,这些步骤可以通过硬件和软件的组合来执行。
这里公开的实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括其上存储有指令的机器可读介质(或计算机可读介质),指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本文公开的实施例的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制。例如,机器可读介质包括:机器可读存储介质(例如,ROM、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等)等。
除非另有特别说明并从前面的讨论中明显看出,否则可以理解,在整个说明书中,使用诸如“处理”、“计算”、“确定”、“显示”等术语的讨论指的是计算机系统或类似的电子计算设备的动作和过程,其将表示为计算机系统的寄存器内的物理(电子)量的数据和存储器操纵和转换成类似地表示为计算机系统的存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。
这里呈现的算法和显示器本身并不与任何特定的计算机或其他设备相关。根据这里的教导,各种系统可以与程序一起使用,或者可以证明构造更专门的设备来执行所需的方法步骤是方便的。上述各种系统所需的结构将出现在上面的描述中。此外,这里描述的实施例不参考任何特定编程语言来描述。可以理解,可以使用各种编程语言来实现在此描述的实施例的教导。
本领域技术人员将还认识到,结合在此公开的实施例描述的各种说明性逻辑块、模块、电路和算法可以实现为电子硬件、存储在存储器或另一计算机可读介质中并由处理器或其他处理设备执行的指令,或两者的组合。作为示例,这里描述的分布式天线系统的组件可以在任何电路、硬件组件、集成电路(IC)或IC芯片中使用。这里公开的存储器可以是任何类型和大小的存储器,并且可以被配置为存储所需的任何类型的信息。为了清楚地说明这种互换性,各种说明性组件、框、模块、电路和步骤在上面总体上根据它们的功能进行了描述。如何实现这些功能取决于对整个系统施加的特定应用、设计选择和/或设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决定不应被解释为导致偏离本实施例的范围。
结合本文公开的实施例描述的各种说明性逻辑框、模块和电路可以用被设计为执行在此描述的功能的处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件或其任何组合来实现或执行。此外,控制器可以是处理器。处理器可以是微处理器,但是备选地,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合(例如,DSP和微处理器的组合、多个微处理器、一个或多个结合DSP核心的微处理器或任何其他这样的配置)。
这里公开的实施例可以在硬件和存储在硬件中的指令中实现,并且可以驻留在例如RAM、闪存、ROM、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD-ROM或本领域中已知的任何其他形式的计算机可读介质中。示例性存储介质耦合到处理器,使得处理器可以从存储介质读取信息以及向存储介质写入信息。备选地,存储介质可以集成到处理器。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在远程站中。备选地,处理器和存储介质可以作为分立组件驻留在远程站、基站或服务器中。
还应注意的是,这里描述了在这里的任何示例性实施例中描述的操作步骤以提供示例和讨论。所描述的操作可以以除所示的序列之外的许多不同的序列来执行。此外,在单个操作步骤中描述的操作实际上可以在多个不同的步骤中执行。另外,可以组合示例性实施例中讨论的一个或多个操作步骤。本领域技术人员还将理解,可以使用各种技术和技术中的任何一种来表示信息和信号。例如,可以在整个上述描述中引用的数据、指令、命令、信息、信号、位、符号和码片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或其任意组合来表示。
除非另有说明,否则本文提出的任何方法都不会被解释为要求按特定顺序执行其步骤。因此,在方法权利要求实际上没有列举其步骤要遵循的顺序的情况下,或者在权利要求或描述中没有另外明确地声明这些步骤将被限制在特定顺序的情况下,决不旨在推断任何特定顺序。
本领域技术人员显然可以在不背离本发明精神或范围的情况下进行各种修改和变化。由于本领域技术人员可能会想到包含本发明精神和实质的所公开实施例的修改、组合、子组合和变体,因此本发明应被解释为包括所附权利要求及其等同范围内的所有内容。

Claims (15)

1.一种基于处理器的系统,包括:
处理元件,包括:
硬件公共中间查找表(HCILT)电路系统,包括寄存器,所述寄存器被配置为存储将立即值索引到宽立即值的表;以及
指令处理电路系统,被配置为:
从指令存储器获取与程序二进制文件相关联的一个或多个指令,所述一个或多个指令包括具有立即操作数的指令;
确定所述立即操作数是对宽立即操作数的引用;以及
响应于确定所述立即操作数是对宽立即操作数的引用:
在所述HCILT中搜索由所述立即操作数索引的所述宽立即操作数;以及
响应于在所述HCILT中找到由所述立即操作数索引的所述宽立即操作数,处理所述指令,使得所述立即操作数被来自所述HCILT的所述宽立即操作数替换。
2.根据权利要求1所述的基于处理器的系统,其中,所述处理元件还被配置为,响应于在所述HCILT中未找到由所述立即操作数索引的所述宽立即操作数:
从所述程序二进制文件中的公共中间查找表(CILT)取回所述宽立即操作数,其中所述立即操作数索引所述CILT中的所述宽立即操作数;以及
处理具有所述立即操作数的所述指令,使得所述立即操作数被来自所述CILT的所述宽立即操作数替换。
3.根据权利要求2所述的基于处理器的系统,其中,所述处理元件还被配置为,响应于在所述HCILT中未找到由所述立即操作数索引的所述宽立即操作数,将从所述CILT取回的所述宽立即操作数写入所述HCILT。
4.根据权利要求1所述的基于处理器的系统,其中,所述处理元件还被配置为:
确定所述立即操作数不是对宽立即操作数的引用;以及
响应于确定所述立即操作数不是对宽立即操作数的引用,处理具有所述立即操作数的所述指令。
5.根据权利要求1所述的基于处理器的系统,其中:
所述程序二进制文件包含公共中间查找表(CILT),所述CILT是将立即值索引到宽中间值的表;并且
所述处理元件还被配置为响应于所述程序二进制文件的上下文切换将所述CILT中的多个条目写入所述HCILT。
6.根据权利要求1所述的基于处理器的系统,其中,所述处理元件还被配置为:通过被配置为确定所述立即操作数的保留位是否被置位,确定所述立即操作数是对宽立即操作数的引用。
7.根据权利要求1所述的基于处理器的系统,其中,所述处理元件还被配置为:通过被配置为检查具有所述立即操作数的所述指令的操作码,确定所述立即操作数是对宽立即操作数的引用。
8.根据权利要求1所述的基于处理器的系统,其中,宽立即操作数包括大于所述处理器的指令集体系结构(ISA)所允许的最大立即数长度的立即操作数。
9.一种用于操作基于处理器的系统中的处理器元件的方法,包括:
从指令存储器获取与程序二进制文件相关联的一个或多个指令,所述一个或多个指令包括具有立即操作数的指令;
确定所述立即操作数是对宽立即操作数的引用;
响应于确定所述立即操作数是对宽操作数的引用,确定所述处理器元件包括硬件公共中间查找表(HCILT);
响应于确定所述处理器元素包括HCILT,在所述HCILT中搜索由所述立即操作数索引的所述宽立即操作数;以及
响应于在所述HCILT中找到由所述立即操作数索引的所述宽立即操作数,处理所述指令,使得所述立即操作数被来自所述HCILT的所述宽立即操作数替换。
10.根据权利要求9所述的方法,还包括:
确定所述处理器元件不包括HCILT;以及
响应于确定所述处理器元件不包括HCILT:
从所述程序二进制文件中的公共中间查找表(CILT)取回所述宽立即操作数,其中所述立即操作数索引所述CILT中的所述宽立即操作数;以及
处理所述指令,使得所述立即操作数被来自所述CILT的所述宽立即操作数替换。
11.根据权利要求9所述的方法,还包括响应于在所述HCILT中未找到由所述立即操作数索引的所述宽立即操作数:
从所述程序二进制文件中的公共中间查找表(CILT)取回所述宽立即操作数,其中所述立即操作数索引所述CILT中的所述宽立即操作数;以及
处理所述指令,使得所述立即操作数被来自所述CILT的所述宽立即操作数替换。
12.根据权利要求11所述的方法,还包括响应于在所述HCILT中未找到由所述立即操作数索引的所述宽立即操作数,将从所述CILT取回的所述宽立即操作数写入所述HCILT。
13.根据权利要求9所述的方法,其中:
所述程序二进制文件包含公共中间查找表(CILT),所述CILT是将立即值索引到宽中间值的表;并且
所述方法还包括响应于所述程序二进制文件的上下文切换将所述CILT中的多个条目写入所述HCILT。
14.根据权利要求9所述的方法,还包括:
确定所述立即操作数不是对宽立即操作数的引用;以及
响应于确定所述立即操作数不是对宽立即操作数的引用,处理具有所述立即操作数的所述指令。
15.根据权利要求9所述的方法,其中,宽立即操作数包括大于所述处理器的指令集体系结构(ISA)所允许的最大立即数长度的立即操作数。
CN202080066451.9A 2019-09-23 2020-06-19 用于处理具有宽立即操作数的指令的系统和方法 Active CN114430822B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/579,161 2019-09-23
US16/579,161 US11036512B2 (en) 2019-09-23 2019-09-23 Systems and methods for processing instructions having wide immediate operands
PCT/US2020/038570 WO2021061234A1 (en) 2019-09-23 2020-06-19 Systems and methods for processing instructions having wide immediate operands

Publications (2)

Publication Number Publication Date
CN114430822A true CN114430822A (zh) 2022-05-03
CN114430822B CN114430822B (zh) 2024-10-29

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097543A1 (en) * 2001-11-19 2003-05-22 Wishneusky John A. Immediate operands
CN102141903A (zh) * 2011-03-22 2011-08-03 杭州中天微系统有限公司 用于16/32位混合指令的对称编码装置与译码装置
CN104834503A (zh) * 2014-02-12 2015-08-12 想象技术有限公司 具有粒度的增加立即数能力的处理器和方法
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US20170286110A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030097543A1 (en) * 2001-11-19 2003-05-22 Wishneusky John A. Immediate operands
CN102141903A (zh) * 2011-03-22 2011-08-03 杭州中天微系统有限公司 用于16/32位混合指令的对称编码装置与译码装置
CN104834503A (zh) * 2014-02-12 2015-08-12 想象技术有限公司 具有粒度的增加立即数能力的处理器和方法
US20170192782A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Aggregate Gather and Stride
US20170286110A1 (en) * 2016-03-31 2017-10-05 Intel Corporation Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
廉玉龙;史峥;李春强;王会斌;尚云海;: "基于C-SKY CPU的地址立即数编译优化方法", 计算机工程, no. 01, 15 January 2016 (2016-01-15), pages 46 - 50 *

Also Published As

Publication number Publication date
WO2021061234A1 (en) 2021-04-01
KR20220065017A (ko) 2022-05-19
JP2022548392A (ja) 2022-11-18
EP4034990A1 (en) 2022-08-03
US11036512B2 (en) 2021-06-15
US20210089308A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
EP3436930B1 (en) Providing load address predictions using address prediction tables based on load path history in processor-based systems
CN104603747B (zh) 响应于分支预测表调换指令而调换分支方向历史及相关的系统和方法
CN114341803A (zh) 在处理器中的上下文切换时交换和恢复上下文特定的分支预测器状态
US10572254B2 (en) Instruction to query cache residency
CN114258533A (zh) 在基于处理器的设备中优化对页表条目的访问
JP2022545848A (ja) 投機的データ要求が非投機的になるまでの、投機的データ要求に応答したプロセッサベースのシステム内の非投機的キャッシュメモリにおけるキャッシュ状態更新の延期
US10621095B2 (en) Processing data based on cache residency
US6851010B1 (en) Cache management instructions
US9158696B2 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US20050149703A1 (en) Utilizing an advanced load address table for memory disambiguation in an out of order processor
CN114430822B (zh) 用于处理具有宽立即操作数的指令的系统和方法
US11036512B2 (en) Systems and methods for processing instructions having wide immediate operands
EP4034990B1 (en) Systems and methods for processing instructions having wide immediate operands
US20190065060A1 (en) Caching instruction block header data in block architecture processor-based systems
US10896041B1 (en) Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices
US11915002B2 (en) Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata
CN115080464B (zh) 数据处理方法和数据处理装置
US11487545B2 (en) Processor branch prediction circuit employing back-invalidation of prediction cache entries based on decoded branch instructions and related methods
CN116627505A (zh) 指令缓存及操作方法、处理器核及指令处理方法
CN116627506A (zh) 微指令缓存及操作方法、处理器核及指令处理方法
WO2021178096A1 (en) Delivering immediate values by using program counter (pc)-relative load instructions to fetch literal data in processor-based devices

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
GR01 Patent grant