The method comprises the following steps: (20) processing in a processor includes a memory access instruction code, the memory access instructions at least some of the symbolic expressions including, according to one or more register name to specify an external memory address in the memory (41). Based on the corresponding format of the specified memory address in the symbolic expression, we identify the relationship between two or more access memory addresses in the memory access instruction. Based on the identified relationship, the results of at least one of the memory access instructions supplied from the internal memory (50) of the processor are allocated.
【技术实现步骤摘要】
【国外来华专利技术】具有有效的存储器访问的处理器专利
本专利技术大体上涉及微处理器设计,且特别是用于微处理器中的有效存储器访问的方法和系统。专利技术背景限制微处理器中的代码的并行化的主要瓶颈之一是在存储器访问指令之间的依赖性。已经提出了各种技术来改善包括存储器访问的代码的并行化性能。例如,Tyson和Austin在通过引用并入本文的“MemoryRenaming:Fast,EarlyandAccurateProcessingofMemoryCommunication”(InternationalJournalofParallelProgramming,第27卷,第5期,1999年)中提出了被称为“存储器重命名”的技术。存储器重命名是应用寄存器访问技术来加载和存储指令以加快存储器流量的处理的处理器流水线的修改。该方法通过在流水线中早期预测存储器通信并然后将通信重新映射到快速物理寄存器来工作。专利技术概述本文描述的本专利技术的实施方式提供了一种方法,其包括在处理器中处理包括存储器访问指令的程序代码,其中存储器访问指令中的至少一些包括根据一个或更多个寄存器名称来指定在外部存储器中的存储器地址的符号表达式。基于在符号表达式中指定的存储器地址的相应格式来识别在由两个或更多个存储器访问指令访问的存储器地址之间的关系。基于所识别的关系来分配从处理器中的内部存储器供应的存储器访问指令中的至少一个的结果。在一些实施方式中,识别在存储器地址之间的关系与存储器地址的实际数值无关。在实施方式中,识别在存储器地址之间的关系在存储器地址的实际数值未被定义的时间点处执行。在所公开的实施方式中,由处理器 ...
【技术保护点】
一种方法,包括:在处理器中处理包括存储器访问指令的程序代码,其中所述存储器访问指令中的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址;基于在所述符号表达式中指定的所述存储器地址的相应格式来识别在由所述存储器访问指令中的两个或更多个访问的所述存储器地址之间的关系;以及基于所识别的关系,分配从所述处理器中的内部存储器待供应的所述存储器访问指令的至少一个的结果。
【技术特征摘要】
【国外来华专利技术】2015.07.09 US 14/794,835;2015.07.09 US 14/794,837;1.一种方法,包括:在处理器中处理包括存储器访问指令的程序代码,其中所述存储器访问指令中的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址;基于在所述符号表达式中指定的所述存储器地址的相应格式来识别在由所述存储器访问指令中的两个或更多个访问的所述存储器地址之间的关系;以及基于所识别的关系,分配从所述处理器中的内部存储器待供应的所述存储器访问指令的至少一个的结果。2.根据权利要求1所述的方法,其中,识别在所述存储器地址之间的关系与所述存储器地址的实际数值无关。3.根据权利要求2所述的方法,其中,识别在所述存储器地址之间的关系在所述存储器地址的所述实际数值未被定义的时间点处执行。4.根据权利要求2所述的方法,其中,识别所述关系通过所述处理器的流水线中的给定流水线级来执行,并且其中在所述流水线中比所述给定流水线级更晚定位的另一流水线级中计算所述存储器地址的所述实际数值。5.根据权利要求1所述的方法,其中,识别所述关系包括在所述程序代码中搜索使用相同符号表达式来指定所述存储器地址的存储器访问指令。6.根据权利要求1所述的方法,其中,识别所述关系包括在所述程序代码中搜索使用涉及相同存储器地址的不同的符号表达式来指定所述存储器地址的存储器访问指令。7.根据权利要求1所述的方法,其中,分配所述存储器访问指令的至少一个的结果由所述处理器的流水线中的解码单元或重命名单元执行。8.根据权利要求1-7中的任一项所述的方法,其中,分配从所述内部存储器待供应的结果还包括:在所述外部存储器中执行存储器访问指令;以及验证在所述外部存储器中执行的所述存储器访问指令的结果与从所述内部存储器分配给所述存储器访问指令的结果匹配。9.根据权利要求8所述的方法,其中,验证所述结果包括将在所述外部存储器中执行的所述存储器访问指令的结果与从所述内部存储器分配给所述存储器访问指令的结果进行比较。10.根据权利要求8所述的方法,其中,验证所述结果包括验证没有介入事件引起在所述外部存储器中的结果与从所述内部存储器分配的结果之间的不匹配。11.根据权利要求8所述的方法,其中,验证所述结果包括向所述程序代码添加验证所述结果的一个或更多个指令或微操作,或将一个或更多个现有指令或微操作修改为验证所述结果的所述指令或微操作。12.根据权利要求8所述的方法,还包括在发现在所述外部存储器中执行的结果与从所述内部存储器供应的结果不匹配时刷新后续代码。13.根据权利要求1-7中的任一项所述的方法,还包括禁止在所述外部存储器中执行所述存储器访问指令的至少一个。14.根据权利要求1-7中的任一项所述的方法,还包括在多个硬件线程上并行化执行所述程序代码,包括从所述内部存储器分配所述结果。15.根据权利要求1-7中的任一项所述的方法,其中,处理所述程序代码包括在单个硬件线程中执行所述程序代码,包括从所述内部存储器分配所述结果。16.根据权利要求1-7中的任一项所述的方法,其中,识别所述关系包括识别在循环或函数中的所述存储器访问指令。17.根据权利要求1-7中的任一项所述的方法,其中,识别所述关系在运行时间处执行。18.根据权利要求1-7中的任一项所述的方法,其中,识别所述关系至少部分地基于嵌入在所述程序代码中的指示来执行。19.一种处理器,包括:内部存储器;以及处理电路,其被配置成处理包括存储器访问指令的程序代码,其中所述存储器访问指令的至少一些包括根据一个或更多个寄存器名称来指定外部存储器中的存储器地址的符号表达式,以基于在所述符号表达式中指定的所述存储器地址的相应格式来识别在由所述存储器访问指令的两个或更多个存储器访问指令访问的所述存储器地址之间的关系,并基于所识别的关系来分配从所述内部存储器待供应的所述存储器访问指令中的至少一个的结果。20.根据权利要求19所述的处理器,其中,所述处理电路被配置成独立于所述存储器地址的实际数值来识别所述存储器地址之间的关系。21.根据权利要求20所述的处理器,其中,所述处理电路被配置成在所述存储器地址的所述实际数值未被定义的时间点处识别在所述存储器地址之间的关系。22.根据权利要求20所述的处理器,其中,所述处理电路被配置成在所述处理器的流水线中的给定流水线级中识别所述关系,并且在所述流水线中比所述给定流水线级更晚定位的另一流水线级中计算所述存储器地址的所述实际数值。23.根据权利要求19所述的处理器,其中,所述处理电路被配置成通过在所述程序代码中搜索使用相同符号表达式来指定所述存储器地址的存储器访问指令来识别所述关系。24.根据权利要求19所述的处理器,其中,所述处理电路被配置成通过在所述程序代码中搜索使用涉及相同存储器地址的不同的符号表达式来指定所述存储器地址的存储器访问指令来识别所述关系。25.根据权利要求19所述的处理器,其中,所述处理电路被配置成由所述处理器的流水线中的解码单元或重命名单元分配所述存储器访问指令的至少一个的结果。26.根据权利要求19-25中的任一项所述的处理器,其中,所述处理器电路被配置成通过下列操作来分配从所述内部存储器待供应的结果:在所述外部存储器中执行存储器访问指令;以及验证在所述外部存储器中执行的所述存储器访问指令的结果与从所述内部存储器分配给所述存储器访问指令的结果匹配。27.根据权利要求26所述的处理器,其中,所述处理电路被配置成通过将在所述外部存储器中执行的所述存储器访问指令的结果与从所述内部存储器分配给所述存储器访问指令的结果进行比较来验证所述结果。28.根据权利要求26所述的处理器,其中,所述处理电路被配置成通过验证没有介入事件引起在所述外部存储器中的结果与从所述内部存储器分配的结果之间的不匹配来验证所述结果。29.根据权利要求26所述的处理器,其中,所述处理电路被配置成向所述程序代码添加验证所述结果的指令或微操作,或将现有指令或微操作修改为验证所述结果的所述指令或微操作。30.根据权利要求19-25中的任一项所述的处理器,其中,所述处理电路被配置成禁止在所述外部存储器中执行所述存储器访问指令的至少一个。31.一种方法,包括:在处理器中处理包括存储器访问指令的程序代码,其中所述存储器访问指令的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址;基于在所述符号表达式中指定的所述存储器地址的相应格式来识别访问在所述外部存储器中的存储器地址的可预测模式的加载指令的序列;从所述外部存储器中取回包括多个数据值的至少一个缓存行;基于所述可预测模式来将由所述序列中的相应加载指令所请求的数据值中的两个或更多个从所述缓存行保存到所述内部存储器;以及将从所述内部存储器待供应的所保存的数据值分配给取决于所述相应加载指令的一个或更多个指令。32.根据权利要求31所述的方法,其中,识别所述加载指令与所述存储器地址的实际数值无关。33.根据权利要求31或32所述的方法,其中,保存所述数据值包括基于在所述加载指令的序列中的所述存储器地址的模式来确定在所述缓存行中的所述数据值的位置,并且将所述数据值从所述缓存行中的所确定的位置复制到所述内部存储器。34.根据权利要求31或32所述的方法,还包括响应于识别出所述可预测图案延伸出所取回的缓存行之外而从所述外部存储器取出至少一个附加缓存行。35.根据权利要求34所述的方法,其中,取出所述附加缓存行包括将所述附加缓存行预取到高速缓存存储器。36.根据权利要求31或32所述的方法,其中,分配所述数据值包括向所述程序代码添加供应所述数据值的一个或更多个指令或微操作,或者将一个或更多个现有指令或微操作修改为供应所述数据值的所述一个或更多个指令或微操作。37.根据权利要求36所述的方法,其中,添加或修改的指令或微操作中的一个或更多个将所述两个或更多个数据值从所述缓存行保存到所述内部存储器。38.根据权利要求36所述的方法,其中,添加或修改所述指令或微操作由在所述处理器的流水线中的解码单元或重命名单元执行。39.根据权利要求31或32所述的方法,其中,分配所述数据值包括:将所述两个或更多个数据值保存在所述处理器的相应物理寄存器中;以及重命名取决于所述相应加载指令的指令以从所述物理寄存器接收所述数据值。40.根据权利要求31或32所述的方法,其中,所述序列中的所述加载指令由相同的硬件线程处理。41.根据权利要求31或32所述的方法,其中,所述序列中的所述加载指令由至少两个不同的硬件线程处理。42.根据权利要求31或32所述的方法,其中,分配从所述内部存储器待供应的结果包括禁止在所述外部存储器中执行所述加载指令中的一个或更多个。43.根据权利要求31或32所述的方法,其中,分配所述数据值包括将来自所述内部存储器的所述数据值只提供给与一个或更多个特定流控制轨迹相关联的指令。44.根据权利要求31或32所述的方法,其中,分配所述数据值包括将来自所述内部存储器的所述数据值提供给与任何流控制轨迹相关联的指令。45.根据权利要求31或32所述的方法,其中,分配所述数据值包括基于从由所述程序代码中的所述加载指令的程序计数器(PC)值、程序地址、指令索引和地址操作数组成的一组参数中选择的至少一个参数来标记所述程序代码中的位置以被修改用于分配所述数据值。46.根据权利要求31或32所述的方法,其中,分配所述数据值还包括:在所述外部存储器中执行所述加载指令;以及验证在所述外部存储器中执行的所述加载指令的结果与从所述内部存储器分配的所述数据值匹配。47.根据权利要求46所述的方法,其中,验证所述数据值包括将在所述外部存储器中执行的所述加载指令的结果与从所述内部存储器分配的所述数据值进行比较。48.根据权利要求46所述的方法,其中,验证所述数据值包括验证没有介入事件导致在所述外部存储器中的结果与从所述内部存储器分配的所述数据值之间的不匹配。49.根据权利要求46所述的方法,其中,验证所述数据值包括向所述程序代码添加验证所述数据值的一个或更多个指令或微操作,或者将一个或更多个现有指令或微操作修改为验证所述数据值的所述指令或微操作。50.根据权利要求46所述的方法,还包括在发现在所述外部存储器中执行的结果与从所述内部存储器供应的所述数据值不匹配时刷新后续代码。51.根据权利要求31或32所述的方法,还包括在多个硬件线程上并行化执行所述程序代码,包括从所述内部存储器分配所述数据值。52.根据权利要求31或32所述的方法,其中,处理所述程序代码包括在单个硬件线程中执行所述程序代码,包括从所述内部存储器分配所述数据值。53.根据权利要求31或32所述的方法,其中,识别所述序列至少部分地基于嵌入在所述程序代码中的指示来执行。54.一种处理器,包括:内部存储器;以及处理电路,其被配置为处理包括存储器访问指令的程序代码,其中所述存储器访问指令的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址,以基于在所述符号表达式中指定的所述存储器地址的相应格式来识别访问所述外部存储器中的存储器地址的可预测模式的加载指令的序列、从所述外部存储器取回包括多个数据值的至少一个缓存行、基于所述可预测模式将由所述序列中的相应加载指令请求的所述数据值中的两个或更多个从所述缓存行保存到所述内部存储器,并且将从所述内部存储器待供应的所保存的数据值分配给取决于所述相应加载指令的一个或更多个指令。55.根据权利要求54所述的处理器,其中,所述处理电路被配置成基于在所述加载指令的序列中的所述存储器地址的模式来确定在所述缓存行中的所述数据值的位置,并且将所述数据值从所述缓存行中的所确定的位置复制到所述内部存储器。56.根据权利要求54或55所述的处理器,其中,所述处理电路被配置成响应于识别出所述可预测模式延伸出所取回的缓存行之外而从所述外部存储器取出至少一个附加缓存行。57.根据权利要求54或55所述的处理器,其中,所述处理电路被配置成向所述程序代码添加供应所述数据值的一个或更多个指令或微操作,或者将一个或更多个现有指令或微操作修改为供应所述数据值的所述一个或更多个指令或微操作。58.根据权利要求54或55所述的处理器,其中,所述处理电路被配置成通过下列操作来分配所述数据值:将所述两个或更多个数据值保存在所述处理器的相应物理寄存器中;以及重命名取决于所述相应加载指令的指令以从所述物理寄存器接收所述数据值。59.根据权利要求54或55所述的处理器,其中,所述处理电路被配置成禁止在所述外部存储器中执行所述加载指令中的一个或更多个。60.根据权利要求54或55所述的处理器,其中,所述处理电路被配置成通过下列操作来分配所述数据值:在所述外部存储器中执行所述加载指令;以及验证在所述外部存储器中执行的所述加载指令的结果与从所述内部存储器分配的所述数据值匹配。61.一种方法,包括:在处理器中处理包括存储器访问指令的程序代码,其中所述存储器访问指令的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址;基于在所述加载指令的所述符号表达式中指定的所述存储器地址的相应格式来在所述程序代码中识别访问所述外部存储器中的相同存储器地址的至少第一加载指令和第二加载指令;以及分配从所述处理器中的内部存储器待供应的所述加载指令的至少一个的结果。62.根据权利要求61所述的方法,其中,识别所述第一加载指令和第二加载指令还包括识别出在所述第一加载指令和第二加载指令之间没有存储指令访问所述相同存储器地址。63.根据权利要求61所述的方法,其中,分配所述结果包括:响应于所述第一加载指令而从所述相同存储器地址读取值,将所述值保存在所述内部存储器中,以及响应于来自所述内部存储器的所述第二加载指令来分配所述值。64.根据权利要求61所述的方法,其中,识别所述第一加载指令和所述第二加载指令包括识别出在所述第一加载指令和所述第二加载指令中的所述符号表达式根据在所述第一加载指令与所述第二加载指令之间未被写入的一个或更多个寄存器来定义。65.根据权利要求61所述的方法,其中,分配所述结果包括仅当所述第二加载指令与所述第一加载指令和相同的流控制轨迹相关联时才提供来自所述内部存储器的结果。66.根据权利要求61所述的方法,其中,分配所述结果包括提供来自所述内部存储器的结果,而不管所述第二加载指令是否与所述第一加载指令和相同的流控制轨迹相关联。67.根据权利要求61所述的方法,其中,分配所述结果包括基于从由所述程序代码中的所述加载指令的程序计数器(PC)值、程序地址、目的寄存器、指令索引和地址操作数组成的一组参数中选择的至少一个参数来标记所述程序代码中的位置以被修改用于分配所述结果。68.根据权利要求61-67中的任一项所述的方法,其中,分配所述结果包括向所述程序代码添加供应所述结果的一个或更多个指令或微操作,或者将一个或更多个现有指令或微操作修改为供应所述结果的所述一个或更多个指令或微操作。69.根据权利要求68所述的方法,其中,添加或修改的指令或微操作之一将所述第一加载指令的结果保存到所述内部存储器。70.根据权利要求69所述的方法,其中,添加或修改的指令或微操作之一将来自所述内部存储器的结果复制到所述第二加载指令的目的寄存器。71.根据权利要求68所述的方法,其中,添加或修改所述指令或微操作由在所述处理器的流水线中的解码单元或重命名单元执行。72.根据权利要求61-67中任一项所述的方法,其中,分配从所述内部存储器待供应的所述结果还包括:在所述外部存储器中执行所述第二加载指令;以及验证在所述外部存储器中执行的所述第二加载指令的结果与从所述内部存储器分配给所述第二加载指令的结果匹配。73.根据权利要求72所述的方法,其中,验证所述结果包括将在所述外部存储器中执行的所述第二加载指令的结果与从所述内部存储器分配给所述第二加载指令的结果进行比较。74.根据权利要求72所述的方法,其中,验证所述结果包括验证没有介入事件导致在所述外部存储器中的结果与从所述内部存储器分配的结果之间的不匹配。75.根据权利要求72所述的方法,其中,验证所述结果包括向所述程序代码添加验证所述结果的一个或更多个指令或微操作,或者将一个或更多个现有指令或微操作修改为验证所述结果的所述指令或微操作。76.根据权利要求72所述的方法,还包括在发现在所述外部存储器中执行的结果与从所述内部存储器供应的结果不匹配时刷新后续代码。77.根据权利要求61-67中的任一项所述的方法,还包括禁止在所述外部存储器中执行所述加载指令中的至少一个。78.根据权利要求61-67中的任一项所述的方法,还包括在多个硬件线程上并行化执行所述程序代码,包括从所述内部存储器分配所述结果。79.根据权利要求61-67中的任一项所述的方法,其中,处理所述程序代码包括在单个硬件线程中执行所述程序代码,包括从所述内部存储器分配所述结果。80.根据权利要求61-67中任一项所述的方法,其中,分配所述结果包括:将所述第一加载指令的结果保存在所述处理器的物理寄存器中;以及重命名所述第一加载指令和所述第二加载指令以从所述物理寄存器接收所述结果。81.根据权利要求61-67中的任一项所述的方法,其中,识别所述加载指令至少部分地基于嵌入在所述程序代码中的指示来执行。82.一种处理器,包括:内部存储器;以及处理电路,其被配置为处理包括存储器访问指令的程序代码,其中所述存储器访问指令的至少一些包括符号表达式,所述符号表达式根据一个或更多个寄存器名称来指定外部存储器中的存储器地址,以基于在所述加载指令的所述符号表达式中指定的所述存储器地址的相应格式来在所述程序代码中识别访问所述外部存储器中的相同存储器地址的至少第一加载指令和第二加载指令,并分配从所述内部存储器待供应的所述加载指令的至少一个的结果。83.根据权利要求82所述的处理器,其中,所述处理电路还被配置成识别出在所述第一加载指令和第二加载指令之间没有存储指令访问所述相同存储器地址。84.根据权利要求82所述的处理器,其中,所述处理电路被配置成通过响应于所述第一加载指令而从所述相同存储器地址读取值、将所述值保存在所述内部存储器中并响应于来自所述内部存储器的所述第二加载指令而分配所述值来分配所述结果。85.根据权利要求82所述的处理器,其中,所述处理电路被配置成识别出在所述第一加载指令和第二加载指令中的所述符号表达式根据在所述第一加载指令与第二加载指令之间未被写入的一个或更多个寄存器来定义。86.根据权利要求82所述的处理器,其中,所述处理电路被配置成仅当所述第二加载指令与所述第一加载指令和相同的流控制轨迹相关联时才分配来自所述内部存储器的结果。87.根据权利要求82所述的处理器,其中,所述处理电路被配置成分配来自所述内部存储器的结果,而不管所述第二加载指令是否与第一加载指令和相同的流控制轨迹相关联。88.根据权利要求82所述的处理器,其中,所述处理电路被配置成基于从由所述程序代码中的所述加载指令的程序计数器(PC)值、程序地址、目的寄存器、指令索引和地址操作数组成的一组参数中选择的至少一个参数来标记所述程序代码中的位置以被修改用于分配所述结果。89.根据权利要求82-88中的任一项所述的处理器,其中,所述处理电路被配置成向所述程序代码添加供应所述结果的一个或更多个指令或微操作,或者将现有指令或微操作修改为供应所述结果的所述一个或更多个指令或微操作。90.根据权利要求89所述的处理器,其中,添加或修改的指令或微操作之一将所述第一加载指令的结果保存到所述内部存储器。91.根据权利要求90所述的处理器,其中,所述添加或修改的指令或微操作之一将来自所述内部存储器的结果复制到所述第二加载指令的目的寄存器。92.根据权利要求89所述的处理器,其中,所述处理电路被配置成由在所述处理器的流水线中的解码单元或重命名单元添加或修改所述指令或微操作。93.根据权利要求82-88中的任一项所述的处理器,其中,所述处理电路被配置成通过下列操作来分配从所述内部存储器待供应的结果:在所述外部存储器中执行所述第二加载指令;以及验证在所述外部存储器中执行的所述第二加载指令的结果与从所述内部存储器分配给所述第二加载指令的结果匹配。94.根据权利要求93所述的处理器,其中,所述处理电路被配置成通过将...
【专利技术属性】
技术研发人员:诺姆·米兹拉希,乔纳森·弗里德曼,
申请(专利权)人:森蒂彼得塞米有限公司,
类型:发明
国别省市:以色列,IL
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。