CN107111550B - 用于隐藏程序提取的页遗漏转换时延的方法和装置 - Google Patents
用于隐藏程序提取的页遗漏转换时延的方法和装置 Download PDFInfo
- Publication number
- CN107111550B CN107111550B CN201580070019.6A CN201580070019A CN107111550B CN 107111550 B CN107111550 B CN 107111550B CN 201580070019 A CN201580070019 A CN 201580070019A CN 107111550 B CN107111550 B CN 107111550B
- Authority
- CN
- China
- Prior art keywords
- address
- translation
- address translation
- cache
- entry
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
示例实施例隐藏程序提取的页遗漏转换时延。在示例实施例中,每当由CPU请求访问时,L11高速缓存控制器(111)对虚拟地址加上预期程序提取的提取包计数是否跨越页边界进行先验查找(1614、1622)。如果访问跨越页边界(1622),则L1l高速缓存控制器(111)将与第一页一起请求第二页转换。至μTLB(1501)的流水线请求无需等待L1l高速缓存控制器(111)开始处理第二页请求。这变成第二页转换请求的确定性预取。第二页的转换信息被本地存储在L1l高速缓存控制器(111)中,并且当访问跨越页边界时使用。
Description
技术领域
本发明总体涉及数字数据处理,并且更具体地涉及地址转换。
背景技术
在支持虚拟内存的处理器中,由CPU提供的虚拟地址必须被转换为物理地址。这通常由存储器管理单元(MMU)完成。MMU通常使用μTLB(微转换后备缓冲器)作为存储在MMU中的地址转换条目的高速缓存。这些地址转换条目通常基于存储器页来组织。CPU请求的每个虚拟地址需要通过由μTLB/MMU转换为用于进行存储器访问的物理地址。这通常在页边界上执行。如果系列程序跨越边界提取到下一页,则需要下一地址转换条目将虚拟地址转换为物理地址。如果此下一地址转换条目不在μTLB中,则必须从MMU请求。根据MMU中的页转换和页表移动延迟,此转换数据提取可能需要数十个周期到数百个周期。
发明内容
示例实施例隐藏了用于此类程序提取的页遗漏转换延迟。在所述的示例中,每当CPU请求访问时,L1I高速缓存控制器对于虚拟地址加上提取包计数是否跨越页边界进行先验查找。如果访问跨越页边界,则L1I高速缓存控制器将与第一页一起请求第二页转换。该流水线向μTLB请求,而无需等待L1I高速缓存控制器开始处理第二页请求。这变成第二页转换请求的确定性预取。第二页的转换信息被本地存储在L1I高速缓存控制器中,并且当访问跨越页边界时使用。
在所述示例中,数字信号处理器(DSP)、程序高速缓存存储器控制器(L1I控制器)和CPU至L1I高速缓存接口提供虚拟地址和来自该虚拟地址的提取包的数量。待访问的这个提取包的数量通常基于分支预测体系结构。L1I高速缓存控制器将虚拟地址和提取包计数的总和展开到对应的提取包请求中,并将这些提取包预取到L1I高速缓存。在典型的现有DSP L1I高速缓存控制器中,L1I高速缓存为虚拟索引的虚拟标记的高速缓存。外输出至L2高速缓存的任何L1I高速缓存遗漏请求(虚拟地址)都必须被转换为物理地址并请求至L2高速缓存。
L1I高速缓存控制器还确定至第二页的最后预测提取索引是否在转换表中。如果发生此情况,则L1I高速缓存控制器在需要下一页转换表条目之前请求该下一页转换表条目。通常当程序提取地址跨入下一页时,新的页转换表条目将被完成或正在进行。这降低了在第二页中提取指令的时延。
附图说明
图1示出了根据一个实施例的单核标量处理器。
图2示出了根据另一实施例的双核标量处理器。
图3示出了根据又一实施例的单核向量处理器。
图4示出了根据又一实施例的双核向量处理器。
图5示出了CPU的一个实施例的构造。
图6示出了全局标量寄存器文件。
图7示出了全局向量寄存器文件。
图8示出了由乘法和相关函数单元共享的局部向量寄存器文件。
图9示出了加载/存储单元的本地寄存器文件。
图10示出了预测寄存器文件。
图11示出了根据优选实施例的中央处理单元的流水线阶段。
图12示出了单个提取包的十六个指令。
图13示出了指令的指令编码的示例。
图14示出了根据示例实施例的用于SIMD操作的进位控制。
图15示出了关键部件。
图16示出了虚拟地址到物理地址的转换。
图17示出了根据示例实施例的地址展开单元的实施例。
图18示出了根据示例实施例的页边界跨越单元的实施例。
图19示意性地示出了操作。
具体实施方式
图1示出了根据一个实施例的单核标量处理器。单核处理器100包括耦合至单独的一级指令高速缓存(L1I)111和一级数据高速缓存(L1D)112的标量中央处理单元(CPU)110。中央处理单元核110可以如本领域已知的那样构成,并且通常将包括寄存器文件、整数运算逻辑单元、整数乘法器和程序流控制单元。单核处理器100包括保存指令和数据的二级组合指令/数据高速缓存(L2)113。在优选实施例中,在单个集成电路上形成标量中央处理单元(CPU)110、一级指令高速缓存(L1I)111、一级数据高速缓存(L1D)112和二级组合指令/数据高速缓存(L2)113。
在优选实施例中,该单个集成电路也包括诸如功率控制电路121、仿真/跟踪电路122、测试设计(DST)可编程内置自测(PBIST)电路123和时钟电路124的辅助电路。存储器控制器131可在CPU 110外部并且可以被集成在单个集成电路100上。
CPU 110在程序控制下进行操作,以对所定义的数据执行数据处理操作。控制CPU110的程序包括在解码和执行之前必须被提取的指令。单核处理器100包括多个高速缓存存储器。图1示出了一对第一级高速缓存。一级指令高速缓存(L1I)111存储CPU 110所使用的指令。CPU 110首先尝试访问来自一级指令高速缓存121的任何指令。一级数据高速缓存(L1D)112存储由CPU 110所使用的数据。CPU 110首先尝试从一级数据高速缓存112访问任何所需的数据。两个一级高速缓存(L1I 111和L1D 112)由二级统一高速缓存(L2)113支持。在高速缓存遗漏一级指令高速缓存111或一级数据高速缓存112的情况下,从二级统一高速缓存113寻求所请求的指令或数据。如果所请求的指令或数据被存储在二级统一高速缓存113中,则将其提供给请求一级高速缓存以用于提供给中央处理单元核110。如本领域已知的,可将所请求的指令或数据同时提供给请求高速缓存和CPU 110两者以加速使用。
二级统一高速缓存113另外经由存储器控制器131耦合至较高级存储器***。存储器控制器131通过访问外部存储器(图1中未示出)来处理遗漏二级统一高速缓存113的高速缓存。存储器控制器131处理诸如缓存容量确定、误差检测和校正、地址转换等所有存储器中心功能。单核处理器100可为多处理器***的一部分。在此情况下,存储器控制器131处理处理器之间的数据传输并且保持在处理器之间的高速缓存一致性。
图2示出了根据另一实施例的双核处理器。双核处理器200包括耦合至单独的一级指令高速缓存(L1I)211和一级数据高速缓存(L1D)212的第一CPU 210和耦合至单独的一级指令高速缓存(L1I)221和一级数据高速缓存(L1D)212的第二CPU 220。中央处理单元210和220优选地构造成类似于图1所示的CPU 110。双核处理器200包括支持所有四个一级高速缓存(L1I 211、L1D 212、L1I 221和L1D 222)的单个共享二级组合指令/数据高速缓存(L2)231。在优选实施例中,CPU 210、一级指令高速缓存(L1I)211、一级数据高速缓存(L1D)212、CPU 220、一级指令高速缓存(L1I)221、一级数据高速缓存(L1D)222和二级组合指令/数据高速缓存(L2)231在单个集成电路上形成。该单个集成电路优选也包括诸如功率控制电路241、仿真/跟踪电路242、测试设计(DST)的可编程内置自测(PBIST)电路243和时钟电路244的辅助电路。该单个集成电路也可包括存储器控制器251。
图3和图4示出了类似于分别在图1和图2所示的单核处理器和双核处理器。图3和图4与图1和图2的不同之处在于示出向量中央处理单元。如下面进一步描述的,单核向量处理器300包括向量CPU 310。双核向量处理器400包括两个向量CPU 410和420。向量CPU 310、410和420包括比相应的标量CPU 110、210和220更宽的数据路径操作单元和更宽的数据寄存器。
在包括流引擎313(图3)和流引擎413和423(图5))时,向量CPU 310、410和420进一步不同于对应的标量CPU 110、210和220。流引擎313、413和423是类似的。流引擎313将数据从二级统一高速缓存313(L2)传送至向量CPU 310。流引擎413将数据从二级统一高速缓存431传送至向量CPU 410。流引擎423将数据从二级统一高速缓存431传送至向量CPU 420。根据优选实施例,每个流引擎313、413和423管理多达两个数据流。
在某些受限的情况下,每个流引擎313、413和423传送数据。流由特定类型的元素序列组成。在流上操作的程序顺序地读取数据,进而对每个元素进行操作。每个流具有以下基本属性。流数据具有明确定义的开始时间和结束时间。流数据在整个流中具有固定的元素大小和元素类型。流数据具有固定的元素序列。因此,程序不能在流内随机寻找。流数据在有效时是只读的。程序不能在读取流的同时向其写入。一旦流被流引擎打开:则计算地址;从二级统一高速缓存中提取定义的数据类型;执行数据类型操作,诸如零扩展、符号扩展、数据元素排序/交换,诸如矩阵转置;并将数据直接传送至CPU内的编程执行单元。因此,流引擎可用于对良性的数据进行实时数字过滤操作。流引擎从对应的CPU释放这些内存提取任务,从而实现其他处理功能。
流引擎提供以下有益效果。它们允许多维存储器访问。它们增加了功能单元的可用带宽。它们最小化遗漏失速的高速缓存的数量,因为流缓冲器可以绕过L1D高速缓存。它们减少了维护循环所需的标量操作的数量。他们管理地址指针。它们处理地址生成,从而自动释放地址生成指令时隙和用于其他计算的.D单元。
图5示出了CPU的一个实施例的构造。除非另有说明,此描述涵盖了标量CPU和向量CPU两者。CPU包括乘法单元511(.M)、相关单元512(.C)、算术单元513(.L)、算术单元514(.S)、加载/存储单元515(.D)、分支单元516(.B)和预测单元517(.P)的多个执行单元。这些执行单元的运算和关系详细如下。根据优选实施例,图5的CPU为非常长的指令(VLIW)CPU,其在每个指令周期中提取十六个指令的程序提取包。如下所述,在每个指令周期期间,可由多个执行单元并行执行这些指令。
乘法单元511主要执行乘法。乘法单元511接受多达两个双向量操作码,并产生多达一个双向量结果。乘法单元511为可配置以执行以下操作的指令:精度范围从8位到64位的各种整数乘法运算;各种常规点积运算和复杂的点积运算;以及各种浮点乘法运算;按位逻辑运算;移动;以及加法和减法。如图5所示,乘法单元511包括用于四个同时16位×16位的硬件。乘法单元511可以以下述的方式访问全局标量寄存器文件521、全局向量寄存器文件522和共享.M和C.本地寄存器523文件。转发复用器530调解全局标量寄存器文件521、全局向量寄存器文件522、对应的流引擎和乘法单元511之间的数据传输。
相关单元512(.C)接受多达两个双向量操作码并产生多达一个双向量结果。相关单元512支持这些主要操作。为了支持WCDMA“耙扫(rake)”和“搜索”指令,相关单元512每时钟周期执行多达512个2位PN*8位I/Q复数乘法。相关单元512每时钟周期执行高达512个SAD的8位和16位绝对差值和(SAD)计算。相关单元512执行水平加和最小/最大指令。相关单元512执行向量置换指令。相关单元512包含8个256位宽的控制寄存器。这些控制寄存器用于控制某些相关单元指令的操作。相关单元512可以以下述的方式访问全局标量寄存器文件521、全局向量寄存器文件522和共享.M和C.本地寄存器文件523。转发复用器530调解全局标量寄存器文件521、全局向量寄存器文件522、对应的流引擎和相关单元512之间的数据传输。
CPU 500包括两个算术单元:算术单元513(.L)和算术单元514(.S)。每个算术单元513和算术单元514接受多达两个向量操作码并产生一个向量结果。计算单元支持这些主要操作。算术单元513和算术单元514执行精度范围从8位到64位的各种单指令多数据(SIMD)定点算术运算。算术单元513和算术单元514执行将结果直接写入预测寄存器文件526的各种向量比较和最小/最大指令(下面进一步描述)。这些比较包括A=B、A>B、A≥B、A<B和A≤B。如果比较正确,则位1被存储在预测寄存器内的对应位的位置中。如果比较失败,则在预测寄存器内的对应位的位置存储0。向量比较指令假设字节(8位)数据,并因此生成32个单个位的结果。如下所述,算术单元513和算术单元514使用指定的预测寄存器执行各种向量操作。算术单元513和算术单元514执行精度范围从半精度(16位)、单精度(32位)到双精度(64位)的各种SIMD浮点算术运算。算术单元513和算术单元514执行专门的指令以加速各种算法和功能。算术单元513和算术单元514可访问全局标量寄存器文件521、全局向量寄存器文件522、共享.L和.S本地寄存器文件524和预测寄存器文件526。转发复用器530调解全局标量寄存器文件521、全局向量寄存器文件522、对应的流引擎以及算术单元513和514之间的数据传输。
加载/存储单元515(.D)主要用于地址计算。加载/存储单元515被扩展以接受高达64位的标量操作码并产生高达64位的标量结果。加载/存储单元515包括用于执行数据操作(诸如在负载上交换、打包和解包)并存储数据以减少其他单元上的工作负载的附加硬件。加载/存储单元515可以每时钟周期向一级数据高速缓存(L1D)发出一个加载或存储请求以及44位物理地址。加载或存储数据宽度可以为32位、64位、256位或512位。加载/存储单元515支持这些主要运算:64位SIMD算术运算;64位按位逻辑运算;以及标量和向量加载和存储数据的操作。加载/存储单元515优选包括用于执行从48位虚拟地址到44位物理地址的地址转换的微型TLB(表后备缓冲器)块。加载/存储单元515可以以下述的方式访问全局标量寄存器文件521、全局向量寄存器文件522和.D本地寄存器文件525。转发复用器530调解全局标量寄存器文件521、全局向量寄存器文件522、对应的流引擎和加载/存储单元515之间的数据传输。
分支单元516(.B)计算分支地址、执行分支预测并依赖于预测结果改变控制流。
预测单元517(.P)为对向量预测寄存器执行基本操作的小型控制单元。预测单元517可直接访问向量预测寄存器526。预测单元517对预测寄存器执行不同的位操作,诸如与、与非、或、异或、或非、BITR、否、集合、BITCNT(位计数)、RMBD(最右位检测)、位抽取(BITDecimate)和展开等。
图6示出了全局标量寄存器文件521。存在16个独立的64位宽标量寄存器。全局标量寄存器文件521的每个寄存器可以被读取为32位标量数据(指定的寄存器A0至A15 601)或64位标量数据(指定的寄存器EA0至EA15611)。但是,如果需要,写入总是64位,零扩展以填充到64位。所有功能单元的所有标量指令都可以读取或写入至全局标量寄存器文件521。指令类型确定数据大小。全局标量寄存器文件521支持大小范围从8位到64位的数据类型。向量指令也可以写入到64位全局标量寄存器521,并丢弃该向量的高192位数据。向量指令也可以从全局标量寄存器文件511读取64位数据。在此情况下,操作码在高192位上被进行零扩展以形成输入向量。
图7示出了全局向量寄存器文件522。存在16个独立的256位宽向量寄存器。全局向量寄存器文件522的每个寄存器可以被读取为32位标量数据(指定的寄存器X0至X15 701)、64位标量数据(指定的寄存器EX0至EX15 711)、256位向量数据(指定的寄存器VX0到VX15721)或512位双向量数据(指定为DVX0至DVX7,其未示出)。在当前实施例中,只有乘法单元511和相关单元512可执行双向量指令。所有功能单元的所有向量指令均可以读取全局向量寄存器文件522或写入到全局向量寄存器文件522。任何功能单元的任何标量指令也可以访问全局向量寄存器文件522寄存器的低32位或64位以进行读或写。指令类型确定数据大小。
图8示出了本地向量寄存器文件523。存在16个独立的256位宽向量寄存器。本地向量寄存器文件523的每个寄存器可以被读取为32位标量数据(指定的寄存器M0至M15 701)、64位标量数据(指定的寄存器EM0至EM15 711)、256位向量数据(指定的寄存器VM0到VM15721)或512位双向量数据(指定的DVM0至DVM7,其未示出)。在当前实施例中,只有乘法单元511和相关单元512可执行双向量指令。所有功能单元的所有向量指令均可以写入到本地向量寄存器文件523。只有乘法单元511和相关单元512的指令可从本地向量寄存器文件523中读取。指令类型确定数据大小。
乘法单元511可对双向量(512位数据)执行运算。乘法单元511可从全局向量寄存器文件521和本地向量寄存器文件523读取双向量数据并向全局向量寄存器文件521和本地向量寄存器文件523写入双向量数据。寄存器名称(designation)DVXx和DVMx如下所述被映射到全局向量寄存器文件521和本地向量寄存器文件523。
表1
指令名称 | 所访问的寄存器 |
DVX0 | VX1:VX0 |
DVX1 | VX3:VX2 |
DVX2 | VX5:VX4 |
DVX3 | VX7:VX6 |
DVX4 | VX9:VX8 |
DVX5 | VX11:VX10 |
DVX6 | VX13:VX12 |
DVX7 | VX15:VX14 |
DVM0 | VM1:VM0 |
DVM1 | VM3:VM2 |
DVM2 | VM5:VM4 |
DVM3 | VM7:VM6 |
DVM4 | VM9:VM8 |
DVM5 | VM11:VM10 |
DVM6 | VM13:VM12 |
DVM7 | VM15:VM14 |
每个双向量名称映射到全局向量寄存器522或本地向量寄存器523中的对应的一对相邻向量寄存器。名称DVXO至DVX7映射至全局向量寄存器522。名称DVMO至DVM7映射至本地向量寄存器523。
本地向量寄存器文件524类似于本地向量寄存器文件523。存在16个独立的256位宽向量寄存器。本地向量寄存器文件524的每个寄存器可以被读取为32位标量数据(指定的寄存器L0至L15 701)、64位标量数据(指定的寄存器EL0至EL15 711)或256位向量数据(指定的寄存器VL0至VL15 721)。所有功能单元的所有向量指令均可以写入到本地向量寄存器文件524。只有算术单元513和算术单元514的指令可从本地向量寄存器文件524中读取。
图9示出了本地寄存器文件525。存在16个独立的64位宽寄存器。本地寄存器文件525的每个寄存器可以被读取为32位标量数据(指定的寄存器D0至D15 701)或64位标量数据(指定为寄存器ED0至ED15 711)。所有功能单元的所有标量指令和向量指令均可以写入本地寄存器文件525。只有加载/存储单元515的指令可从本地寄存器文件525中读取。任何向量指令也可以将64位数据写入本地寄存器文件525,并丢弃所得向量的高192位数据。任何向量指令也可以从64位本地寄存器文件525的寄存器读取64位数据。返回数据在高192位中被零扩展以形成输入向量。
图10示出了预测寄存器文件517。预测寄存器文件517中存在16个32位寄存器。预测寄存器文件517包含来自由择一算术执行的向量比较运算的结果,并由向量选择指令和向量预测存储指令来使用。特殊指令的小子集也可以直接从预测寄存器读取、执行运算并直接写回到预测寄存器。还存在可以在全局寄存器文件(521和522)和预测寄存器文件517之间传送值的指令。预测寄存器文件517与本地寄存器文件(523、524和525)之间的传送不受支持。预测寄存器(指定为P0至P15)的每一位控制向量数据的字节。由于向量为256位,预测寄存器的宽度等于256/8=32位。预测寄存器文件可以通过向量比较运算来写入,以用于存储向量比较的结果。
诸如CPU 110、210、220、310、410或420的CPU对指令流水线执行操作。该指令流水线可以每周期调度多达九个并行的32位时隙,以向七个执行单元(乘法单元511、相关单元512、算术单元513、算术单元514、加载/存储单元515、分支单元516和预测单元517)提供指令。指令为下面进一步描述的固定长度的提取指令包。所有指令均需要相同数量的流水线阶段以用于提取和解码,但需要不同数量的执行阶段。
图11示出了以下流水线时期:程序提取时期1110、调度和解码时期1120和执行时期1130。程序提取时期1110包括所有指令的三个阶段。调度和解码时期包括所有指令的三个阶段。执行时期1130取决于指令包括一个阶段到四个阶段。
提取时期1110包括程序地址生成阶段1111(PG)、程序访问阶段1112(PA)和程序接收阶段1113(PR)。在程序地址生成阶段1111(PG)期间,在CPU中生成程序地址,并将读取请求发送至用于一级指令高速缓存L1I的存储器控制器。在程序访问阶段1112(PA)期间,一级指令高速缓存L1I处理请求、访问其存储器中的数据,并将提取包发送至CPU边界。在程序接收阶段1113(PR)期间,CPU登记提取包。
指令总是一次提取十六个字。图12示出了该提取包。图12示出了单个提取包的1201至1216的16个指令。提取包在512位(16字)边界上对齐。单个指令的执行部分地由每个指令中的p位控制。该p位优选地为指令的0位。p位确定指令是否与另一指令并行执行。从较低地址到较高地址来扫描p位。如果指令的p位为1,则与该指令I并行地(与该指令相同的周期)执行下一后续指令。如果该指令的p位为0,则下一后续指令在该指令之后的周期中被执行。并行执行的所有指令构成执行包。执行包可以包含多达九个指令。执行包中的每个指令必须使用不同的功能单元。执行包可以包含多达九个32位宽的时隙。时隙可为自包含指令,或者可以扩展由紧接着的在前指令指定的常量字段。可以将时隙用作条件码以应用于同一提取包内的指令。提取包可包含多达2个恒定扩展时隙和一个条件码扩展时隙。
存在多达11个不同的指令时隙,但安排约束限制在最大并行时隙数为9个。最多九个时隙被如下共享:
乘法单元511;相关单元512;算术单元513;算术单元514;加载/存储单元515;与预测单元517共享的分支单元516;第一恒定扩展;第二恒定扩展;以及与条件码扩展共享的单元减少指令(unit less instruction)。执行包中的最后指令的p位等于0。
CPU和一级指令高速缓存L1I流水线彼此解耦。取决于诸如在一级指令高速缓存L1I中是否存在命中的外部情况,从一级指令高速缓存L1I返回的提取包可以采用不同数量的时钟周期。因此,与其他阶段一样,程序访问阶段1112(PA)可以占用几个时钟周期而不是1个时钟周期。
调度和解码时期1120包括指令调度到适当的执行单元阶段1121(DS)、指令预解码阶段1122(DC1);以及指令解码、操作码读取阶段1123(DC2)。在指令调度到适当的执行单元阶段1121(DS)期间,提取包被划分为执行包并被分配给适当的功能单元。在指令预解码阶段1122(DC1)期间,源寄存器、目的寄存器和相关联的路径被解码以用于执行功能单元中的指令。在指令解码期间,完成操作码读取阶段1123(DC2)的更详细的单元解码,以及从寄存器文件中读取操作码。
执行期间1130包括执行阶段1131至1135(El至E5)。不同类型的指令需要不同数量的这些阶段才能完成其执行。流水线的这些阶段在理解CPU周期边界的装置状态方面起重要的作用。
在执行1阶段1131(El)期间,指令的条件被评估并且对操作码进行操作。如图11所示,执行1阶段1131可从流缓冲器1141接收操作码,并且其中一个寄存器文件示意性地被示为1142。为了加载和存储指令,执行地址生成并且将地址修改写入寄存器文件。对于分支指令,PG期间中的分支提取包受到影响。如图11所示,这里将加载和存储指令访问存储器示意性地示为存储器1151。对于单周期指令,结果被写入目的寄存器文件。这样假设指令的任何条件均被评估为真。如果条件被评估为假,则在执行1阶段1131后,指令不会写入任何结果或进行任何流水线操作。
在执行2阶段1132(E2)期间,加载指令将地址发送至存储器。存储指令将地址和数据发送至存储器。如果发生饱和,则使结果饱和的单周期指令在控制状态寄存器(CSR)中设置SAT位。对于2周期指令,结果被写入目的寄存器文件。
在执行3阶段1133(E3)期间,执行数据存储器访问。如果发生饱和,则使结果饱和的任何乘法指令在控制状态寄存器(CSR)中设置SAT位。对于3周期指令,结果被写入目的寄存器文件。
在执行4阶段1134(E4)期间,加载指令将数据带到CPU边界。对于4周期指令,结果被写入目的寄存器文件。
在执行5阶段1135(E5)期间,加载指令将数据写入寄存器。这在图11中示意性地示出,其中从存储器1151输入以执行5阶段1135。
图13示出了指令的指令编码的示例。每个指令由32位组成并且控制可单独控制的功能单元(乘法单元511、相关单元512、算术单元513、算术单元514、加载/存储单元515)中的一个的操作。位字段定义如下。creg字段和z位为在条件指令中使用的可选字段。这些位被条件指令用来识别预测寄存器和条件。z位(位28)指示预测寄存器中的预测是基于零还是基于非零。如果z=1,则测试等于零。如果z=0,则测试为非零。creg=0和z=0的情况被视为始终为真,以允许非条件的指令执行。creg字段和z字段在指令中被编码为如表2所示。
表2
需注意,z位列中的“z”是指上述的零/非零比较选择,以及“x”为无关状态。该编码只能将16个全局标量寄存器的子集指定为预测寄存器。进行该选择以保留指令编码中的位。需要注意,无条件指令不具有这些可选位。对于无条件指令,这些位(28至31)优选地用作附加操作码位。然而,如果需要,执行包可以包含唯一的32位条件代码扩展时隙,其包含用于在相同执行包中的指令的4位creg/z字段。表3示出了此类条件代码扩展时隙的编码。
表3
位 | 功能单元 |
3:0 | .L |
7:4 | .S |
11:5 | .D |
15:12 | .M |
19:16 | .C |
23:20 | .B |
28:24 | 保留 |
31:29 | 保留 |
因此,条件代码扩展时隙指定以相同的方式解码的位,creg/z位被分配给相同执行包中的特定功能单元。
特殊向量预测指令使用所指定的预测寄存器来控制向量操作。在当前实施例中,所有这些向量预测指令对字节(8位)数据进行操作。预测寄存器的每个位控制是否对数据的对应字节执行SIMD操作。预测单元517的操作允许基于不止一个向量比较的各种复合向量SIMD操作。例如,可以使用两个比较来进行范围确定。将候选向量与具有被打包在第一数据寄存器中的范围的最小值的第一向量参考进行比较。候选向量与具有被打包在第二数据寄存器中的范围的最大值的第二参考向量进行第二比较。两个所得的预测寄存器的逻辑组合将允许向量条件操作来确定候选向量的每个数据部分是在范围内还是超出范围。
dst字段将对应寄存器文件中的寄存器指定为指令结果的目的地。
src2字段将对应寄存器文件中的寄存器指定为第二源操作码。
srcl/cst字段根据指令操作码字段具有若干含义(位2至12以及另外的位28至31用于无条件指令)。第一含义将对应寄存器文件的寄存器指定为第一操作码。第二含义为即时数。根据指令类型,这被视为无符号整数,并且零被扩展到指定的数据长度或被视为有符号整数,并且符号被扩展到指定的数据长度。
操作码字段(所有指令的位2至位12,以及无条件指令的额外位28至位31)指定指令的类型并指派适当的指令选项。这包括功能单元和所执行的操作的指定。
p位(位0)标记执行包。p位确定指令是否与以下指令并行执行。从较低地址到较高地址扫描p位。如果当前指令的p=1,则下一指令与当前指令并行执行。如果当前指令的p=0,则下一指令在当前指令之后的周期中执行。并行执行的所有指令构成执行包。执行包可以包含多达八个指令。执行包中的每个指令必须使用不同的功能单元。
相关单元512以及算术单元513和算术单元514通常运行在单指令多数据(SIMD)模式下。在该SIMD模式中,相同的指令被应用于来自两个操作码的打包数据。每个操作码保存设置在预定时隙中的多个数据元素。通过数据边界的进位控制启用SIMD操作。此类进位控制使得能够在变化的数据宽度上进行操作。
图14示出了进位控制。与门1401在宽操作码算术逻辑单元中接收位N的进位输出(用于算术单元513和514的256位,用于相关单元512的512位)。与门1401也接收将在下面进一步解释的进位控制信号。与门1401的输出被提供给宽操作码算术逻辑单元的位N+1的进位输入。诸如与门1401的与门被设置在可能的数据边界的每对位之间。例如,对于8位数据,此类与门将在位7和位8之间、位15和位16之间、位23和位24之间等。每个此类与门接收对应的进位控制信号。如果数据大小最小,则每个进位控制信号为0,从而有效阻止相邻位之间的进位传输。如果所选的数据大小需要两个算术逻辑单元部分,则对应的进位控制信号为1。下面的表4示出了诸如在算术单元513和514中使用的256位宽操作码的情况下的示例进位控制信号,256位宽操作码可被划分为8位、16位、32位、64位或128位的部分。不需要对最高有效位的进位输出进行控制,因此只需要31个进位控制信号。
表4
数据大小 | 进位控制信号 |
8位 | -000 0000 0000 0000 0000 0000 0000 0000 |
16位 | -101 0101 0101 0101 0101 0101 0101 0101 |
32位 | -111 0111 0111 0111 0111 0111 0111 0111 |
64位 | -111 1111 0111 1111 0111 1111 0111 1111 |
128位 | -111 1111 1111 1111 0111 1111 1111 1111 |
256位 | -111 1111 1111 1111 1111 1111 1111 1111 |
本领域通常对于数据大小进行2的整数幂的操作(2N)。然而,该进位控制技术不限于2的整数幂。本领域的技术人员应理解如何将本技术应用到其他数据大小和其他操作码宽度。
示例实施例隐藏许多指令提取的页遗漏转换时延。在示例实施例中,每当CPU请求访问时,L1I控制器进行虚拟地址加上提取包计数是否跨越页边界的先验查找。如果访问跨越页边界,则L1I高速缓存控制器将与第一页条目一起请求第二页转换条目,从而向μTLB流水线化请求,而无需等待L1I高速缓存控制器开始处理第二页请求。这变成第二页转换请求的确定性预取。第二页的地址转换信息被本地存储在L1I高速缓存控制器中,并且当访问跨越页边界时被使用。
在优选实施例中,μTLB至MMU的请求被流水线化。无论μTLB请求是否被流水线化,此方案隐藏了一些页遗漏转换时延。这显著提高了程序存储器高速缓存的性能。
图15示出了关键部件。为了简化说明,图15采用了图1的标量单核示例的附图标记。可以用图1至图4所示的任何示例来实施示例实施例。具体地,可以利用图2和图4中所示的具有在双处理器之间共享的二级统一高速缓存双处理器示例来实施示例实施例。中央处理单元(CPU)110被耦合至一级指令高速缓存(L1I)111。一级指令高速缓存111进一步连接到对应于图1所示的存储器控制器131的存储器管理单元(MMU)131并且连接到L2高速缓存113。图15示出了被包含作为L1I高速缓存111的一部分的微表后备缓冲器(μTLB)1501。图15示出了在CPU 110和L1I高速缓存111之间传递的以下信号:虚拟地址1511;提取包计数1512;和提取包1513。图15示出了在L1I高速缓存111和MMU 131之间的双向数据流,其包括:页转换条目请求1521;以及页转换条目1522。图15示出了在L1I高速缓存111和L2高速缓存113之间传递的以下信号;物理地址1531;以及数据1532。
虚拟到物理地址的转换操作如图16所示。在该示例中,CPU 110使用虚拟地址进行操作。L1I高速缓存111也采用虚拟地址。L2高速缓存113采用物理地址。从CPU 110到L2高速缓存113的访问必须经历从虚拟地址到物理地址的地址转换。为了清楚起见,省略了L1I高速缓存111的一些部分。
当需要另一指令的提取包时,CPU 110提供所需提取包的虚拟地址1511。复用器1611向L1I标记RAM 1612提供虚拟地址1511。L1I标记RAM 1612将虚拟地址1511与指示哪些地址被高速缓存的标记进行比较。命中(hit)/遗漏单元1613确定虚拟地址是访问高速缓存数据(命中)还是不访问高速缓存数据(遗漏)。本质上,L1I高速缓存111不能包含CPU 110可能使用的所有程序指令。L1I高速缓存存储这些程序指令的有限子集。根据时间和空间局部原理,对存储程序指令的存储器位置的CPU访问可同样访问相同的和附近的存储器位置。如果命中/遗漏单元1613确定所请求的提取包被存储在L1I高速缓存113中,则该提取包经由提取包1513从L1I高速缓存111数据存储器(未示出)提供给CPU 110(图15)。
如果命中/遗漏单元1613确定所请求的提取包未被存储在L1I高速缓存111中,则从L2高速缓存113请求该提取包。因为L1I高速缓存111被虚拟地标记,并且L2高速缓存113被物理地标记,所以这需要地址转换。同时虚拟地址1511被提供给L1I标记RAM 1612,虚拟地址也经由复用器1621提供给μTLB 1501。通常使用虚拟地址的最高有效位和物理地址的对应最高有效位的表来执行地址转换。在该示例中,在检测到正确的地址对时,地址转换用最高有效物理地址位替换最高有效虚拟地址位。通常虚拟地址的最低有效位与物理地址的最低有效位相同。在该示例中,虚拟地址/物理地址转换表被存储在MMU 131中。此外,L1I高速缓存111包括μTLB 1501,其以高速缓存的方式存储一些地址转换表条目。当进行地址转换服务时,将所请求的虚拟地址1511与存储在μTLB1501中的地址转换表条目进行比较。如果虚拟地址1511与μTLB 1501中的表条目匹配,则匹配的表条目用于当前页转换1623中的地址转换。在此μTLB命中时,当前页转换1623在单个周期中执行地址转换。如果虚拟地址1511与μTLB 1501中的任何表条目不匹配,则必须从MMU 131中提取这些地址转换参数。μTLB 1501将用于虚拟地址1511的页转换条目请求1521发送给MMU 131。根据MMU中的页转换和页表移动时延,可能需要数十个周期或数百个周期来进行此提取。MMU 131找到对应的地址转换条目,并将该条目1522返回给μTLB 1501。μTLB 1501存储该新提取的转换条目,通常去除当前存储在μTLB 1501中的条目以腾出空间。当前页转换1623使用新存储的转换条目执行地址转换。在地址转换之后,物理地址经由至L2单元1631的请求物理地址传送至L2高速缓存113。需注意,该请求取决于指示L1I高速缓存111中的高速缓存遗漏的命中/遗漏单元1613。当命中/遗漏单元1613指示命中时,不需要向L2高速缓存113提供物理地址,因为该命中指示可以从L1I高速缓存111对存储器访问进行服务。
图16示出了进一步改进以减少在μTLB 1501中遗漏时发生的延迟。该技术利用信息来预测在发生之前可能的微转换后备表。对于每个指令提取,CPU 110生成待访问的提取地址和提取包的预测数量。待访问的该提取包的预测数量是基于分支单元516中的分支预测器逻辑的。
分支预测处理流水线式处理器中的处理条件分支指令的问题。流水线为处理指令操作的方式。编程操作需要提取下一指令、解码该指令、访问操作码、执行操作并存储结果。流水线处理器具有专用于执行指令的不同方面的不同硬件。这种任务划分允许类装配线的操作。因此,在完成的各个阶段中,通常会在流水线中同时存在多个指令。正在进行中的指令的扩展可能导致执行条件分支指令的延迟。通常通过存储器位置线性进行指令执行。条件分支指令基于一些当前机器状态偏离此线性进程。这种机器状态诸如存储在寄存器中的数据或状态位的状态通常在条件分支指令之前是未知的或可知的。在许多情况下,这种机器状态为刚刚计算的数字。如果采用条件分支,则程序流程发生变化。这意味着正在进行中的多个指令是错误的指令。简单的补救措施是中止正在进行的这些不正确的指令,并在分支目的地正确地重新启动流水线的开始。这种指令流的中断被称为流水线命中。
分支预测用于最小化这些流水线命中的数量。分支单元516预测是采取条件分支还是不采取条件分支。指令提取序列遵循预测路径。如果条件分支指令被正确地预测,则不存在程序流中断或流水线命中。对不正确预测的流水线命中与在没有预测的情况下采用分支上的流水线命中相同。分支预测可以为静态或动态的。静态预测的示例为,如果分支目的地在条件分支指令之前是短距离,则预测总是采用一分支,并预测所有其他分支未被采用。这是基于这样的理论:短的后向分支是从尾部到头部将被重复执行的循环。动态分支预测考虑了该条件分支指令的历史。如果分支在该条件分支被执行的最后一千次被执行,则预测该分支将采取这个实例似乎是合理的。如果该条件分支指令的最后四个实例是采用、未采用、采用、未采用,则任一预测(采用/未采用)与另一预测一样好。动态分支预测可比静态分支预测更好地处理嵌套循环。
分支预测通常存储在其执行时在程序代码中遇到的每个条件分支指令的存储器地址。这使得分支单元516能够识别其已经遇到的条件分支。与条件指令地址相关联的是采用/未采用的分支预测和在动态分支预测中使用的任何分支历史。由于分支单元516内的存储器和电路的量的限制,该分支预测信息将总是被限制在程序代码的相当小的部分。然而,基于当前指令存储器位置和通过分支预测得到的程序代码的预测路径,分支单元516可以确定在当前提取包访问之后预测采用分支之前所使用的线性跟随指令或指令提取包的可能数量。该数字为提取包计数1512。
图16示出了该提取包的预测数量1512的两种用途。地址展开单元1614以线性顺序确定每个提取包的地址。图17示出了地址展开单元1614的实施例。在将虚拟地址1511提供给地址展开单元1614时,复用器1701将该初始虚拟地址提供给地址寄存器1702。地址寄存器1702直到下一存储周期存储该地址。在下一存储器访问周期时,加法器1703将地址寄存器1702的内容和提取包大小的输入相加。该提取包大小输入为提取包的地址位中的大小。在优选实施例中,该提取包大小固定为16个指令。在优选实施例中,指令为4字节的32位。在优选实施例中,存储器为字节可寻址的,每个地址位置对应于8位/1字节。因此,地址位中的提取包大小为16x 4=48。地址寄存器1702和提取包大小的总和为下一提取包的地址。复用器1611将此地址提供给L1I标记RAM 1612。L1I标记RAM 1612将来自地址展开单元1614的下一提取包地址与确定下一地址是否被缓存的标记进行比较。命中/遗漏单元1613指示地址被高速缓存(命中)或未被高速缓存(遗漏)。如果下一提取包地址在L1I高速缓存111中(命中),则不需要任何动作。如果下一提取包地址不在L1I高速缓存111中(高速缓存遗漏),则L1I高速缓存111生成指令预取命令。下一提取包地址经由复用器1621耦合至μTLB 1501。至少最初,下一提取包地址将与初始虚拟地址1511位于同一页上,从而生成μTLB 1501命中。当前页转换1623执行地址转换,并经由至L2单元1631的请求物理地址将对应的物理地址提供给L2高速缓存111。根据示例实施例,如果下一提取包地址命中在初始页之后的页,则下一页转换单元1624在如果下一地址转换条目已被预取时进行地址转换。在任一情况下,这将L1l高速缓存遗漏传递到L2高速缓存113以用于服务。
在初始加载具有初始虚拟地址1511的地址寄存器1702之后,复用器1701切换输入以加载刚刚递增的地址。在下一存储器周期期间,加法器1703生成另一下一提取包地址。该新的下一提取包地址按上述描述来处理。计数寄存器1704最初装载有提取包计数1512。每个存储器访问周期递减计数寄存器1704。当零检测单元1705确定计数寄存器1704已递减到零时,到乘法器1801的启用的输入能切换回到虚拟地址1511。因此,地址展开单元1614生成在初始地址之后的每个提取包的地址,直到通过存储器地址的线性前进的预测结束。这使得能够通过构造预取所有这些提取包,提取包被存储在L1I 111中或者从L2高速缓存113请求该提取包。
提取包的预测数量1512的第二用途涉及检测地址转换中的页边界的跨越。页边界跨越单元1622确定在当前提取地址处开始的预取数量的提取包是否将跨越页转换表中的页边界。如本领域已知的,地址转换发生在具有与虚拟地址和物理地址相同的最低有效位数相对应的大小的存储器页上。当前提取地址指向地址转换表的一页。最后预测的提取包的结束地址可指向同一页或后续页。
图18示出页边界跨越单元1622。乘法器1801将如上所述确定的提取包大小乘以提取包计数1512。加法器1802将该乘积添加到来自CPU 111的虚拟地址1511。这样计算通过存储器的线性处理中最后提取包的地址。页检测单元1803接收该最后提取包地址和当前页大小的指示。在本领域中已知的是,地址转换可基于固定大小或可变大小的页。页检测单元1803确定最后的提取包地址在虚拟地址1511的相同页还是在虚拟地址1511的下一页上。如果页边界跨越单元1622指示页边界跨越复用器1621,则其向μTLB 1501提供访问在初始虚拟地址的页之后的页的信号。在命中该地址时,如果命中/遗漏单元1613指示高速缓存遗漏,则μTLB 1501经由至L2单元1631的请求物理地址将物理地址从下一页转换1624提交给L2高速缓存113。如果命中/遗漏单元1613指示L1I高速缓存111的命中,不需要访问L2高速缓存113。
如果来自页边界跨越单元1622的下一页与μTLB 1501中的任何表条目不匹配,则必须从MMU 131提取下一页转换参数。在此情况下,下一页地址经由页转换条目请求1521被传递给MMU 131。MMU 131找到对应的地址转换条目,并经由页转换条目1522将该条目返回给μTLB 1501。μTLB 1501存储这个新提取的地址转换条目,通常去除当前存储在μTLB 1501中的条目以腾出空间。这将在μTLB 1501中存储下一页的地址转换条目。当指令提取到达该下一页时,μTLB 1501中有一个命中。下一页转换1624执行地址转换。在地址转换之后,物理地址经由至L2单元1631的请求物理地址传送至L2高速缓存113。需注意,该请求取决于指示L1I高速缓存111中的高速缓存遗漏的命中/遗漏单元1613。
如上所述,在优选实施例中,μTLB 1501至MMU 131请求被流水线化。此外,优选地,从MMU 131返回到μTLB 1501的页转换条目1522不需要与从μTLB 1501发送到MMU 131的页转换条目请求1521处于相同的顺序。在优选实施例中,MMU 131和μTLB 1501之间的接口可以同时处理多个请求(流水线式)。MMU 131的组织可能会产生不同页表条目的不同延迟。MMU 131优选地跟踪对应于返回的页转换条目1522的页转换条目请求1521。这允许μTLB1501将所返回的页转换条目1522与对应的页转换条目请求1521进行匹配。这使得μTLB1501能处理无序返回的页转换条目1522。
图19示意性地示出了操作。CPU 110生成指令提取地址1511和提取包数1512。在该示例中,提取地址1511指向存储器映射1901中的页A 1911。如图19所示,指令提取地址1511和提取包数1512使得预测存储器访问跨越页A1911和页B1912之间的页边界。根据该确定,μTLB 1501请求用于页A1911和页B1912两者的页转换条目。这意味着如果通过程序代码的路径跨越页边界,则用于该新页(页B1912)的页转换表条目已被存储在μTLB 1501中。提取新页的页转换表条目的时延通过早期提取而被隐藏。
示例实施例根据从分支预测器逻辑访问的提取包的预测数来确定程序是否将生成页遗漏。在进行此检测时,μTLB 1501请求将生成遗漏的预期页访问的页转换表条目。因此,在CPU 110实际访问下一页中的提取包之前,请求该页转换表条目。页转换表条目提取可能需要很长时间才能进行服务。此外,完成该页转换表条目提取的时间以CPU 110不可见的方式可能是高度可变的。因此,在预测到μTLB 1501的遗漏的情况下,早期请求是有利的。因此,在示例实施例中,隐藏了预测页边界跨越点的检测与对应于CPU 110指令请求的实际页边界跨越之间的部分μTLB 1501遗漏时延。示例实施例也可在生成预期页遗漏的地址上预取指令。因此,生成页遗漏的提取包在实际页遗漏之前可以是可利用的。
如果访问预测不正确并且程序不访问第二页,则示例实施例进行不需要的页转换表条目提取。预期这不会降低***性能。对第二页访问的错误预测通常会发生在错误预测的程序分支上。在此情况下,程序通常分支到与原始访问页和下一页不同的页。这种分支很可能引起页遗漏。第二页转换表条目的不必要的提取将与错误预测的分支页遗漏无关。因此,在错误的分支预测的情况下,示例实施例通常不会降低性能。
请注意,由于替换方法的差异,μTLB 1501可能不存储存储在L1I 111中的所有程序指令的页转换表条目。因此,特定指令访问可能生成L1I命中/遗漏和μTLB 1501的下一页命中/遗漏的四种组合中的任一种。表5列出了在优选实施例中采取的动作。
表5
μTLB下一页 | L1I | 动作 |
遗漏 | 遗漏 | 预取页表条目和指令 |
遗漏 | 命中 | 预取页表条目 |
命中 | 遗漏 | 预取指令 |
命中 | 命中 | 无动作 |
在示例实施例中,指令预取是可选的。维护L1I高速缓存111中的遗漏预期通常比维护在μTLB 1501中的页条目遗漏需要更少的时间并且具有更少的可变性。因此,对于页转换表条目预取,需要更少的指令预取。
示例实施例确定是否将最终从μTLB请求第二页转换条目,并且在L1I高速缓存控制器请求属于该第二页的第一地址之前对其进行预取。因此第二页转换条目提取的一些或所有的遗漏延迟被隐藏。这减少了停机周期,从而提高了CPU的IPC(每周期的指令)执行量度。
已经将示例实施例描述为适用于根据图5所示的优选实施例的非常长的指令工作(VLIW)CPU的提取包。示例实施例同样适用于每周期提取单个指令的CPU。在此情况下,来自CPU的分支预测硬件的提取包的数量为指令的数量,这是因为提取包中的指令数为1。
将结合将虚拟地址转换为物理地址的优选实施例来描述示例实施例。示例实施例同样适用于从物理地址到虚拟地址的相反转换。示例实施例使得当预测跨越页边界时能够进行从第一地址域到第二地址域的加强转换。
将结合指令提取来描述示例实施例。与没有一般模式的数据提取相反,通常会发生线性地指令提取。可以预期,预测指令提取跨越页边界比预测数据提取更容易。然而,在某些受限的情况下的示例实施例对于数据提取可能是有价值的。
Claims (18)
1.一种地址转换的方法,其包括以下步骤:
接收在第一地址域中的存储器访问的第一地址;
接收线性地在所述第一地址之后的多个预测的顺序存储器访问的数量的指示;
在存储器管理单元中存储多个地址转换条目,每个地址转换条目包括所述第一地址域的第一预定数量的最高有效位以及对应的地址页的第二地址域的对应的第二预定数量的最高有效位;
在微转换后备缓冲器中存储所述地址转换条目的子集,所述地址转换条目的子集被存储到所述存储器管理单元中;
针对与所述第一地址相对应的第一地址转换条目搜索微转换后备缓冲器;
如果所述第一地址转换条目没有存储在所述微转换后备缓冲器中,则从所述存储器管理单元检索所述第一地址转换条目,并将检索的所述第一地址转换条目存储在所述微转换后备缓冲器中;
用所述第二地址域的所述第二预定最高有效位代替所述第一地址转换条目的所述第一地址域的所述第一预定最高有效位来根据所述第一地址转换条目将所述第一地址转换为第二域中的第二地址;
从所述第一地址和线性地在所述第一地址之后的预测的顺序存储器访问的数量的指示确定所述预测的顺序存储器访问的数量的最后一个是否对应于所述第一地址转换条目之后的下一地址转换条目;
如果所述预测的顺序存储器访问的数量的最后一个对应于所述第一地址转换条目之后的下一地址转换条目,则针对所述下一地址转换条目搜索所述微转换后备缓冲器;以及
如果所述下一地址转换条目没有被存储在所述微转换后备缓冲器中,则从所述存储器管理单元检索所述下一地址转换条目,并且将检索的所述下一地址转换条目存储在所述微转换后备缓冲器中。
2.根据权利要求1所述的地址转换的方法,其中:
在所述第一地址域中的所述存储器访问为指令提取;
所述方法进一步包括预测条件分支指令是否采用分支或不采用分支;
所述方法进一步包括根据所述第一地址和预测待采用的下一顺序条件分支指令之间的地址位置的数量,确定线性地在所述第一地址之后的预测的顺序存储器访问的数量的指示。
3.根据权利要求1所述的地址转换的方法,其中:
所述第一地址域中的所述存储器访问为连续指令的提取包的指令提取;
线性地在所述第一地址之后的预测的顺序存储器访问的数量的所述指示为提取包的数量。
4.根据权利要求3所述的地址转换的方法,其中:
确定所述预测的顺序存储器访问的数量中的最后一个是否对应于所述下一地址转换条目的步骤包括:
将所述提取包的数量乘以所述提取包的大小以形成乘积,
将所述乘积添加到所述第一地址以形成总和地址,以及
确定所述总和地址是否对应于所述下一地址转换条目。
5.根据权利要求4所述的地址转换的方法,其中确定所述总和地址是否对应于所述下一地址转换条目的步骤包括接收所述第一地址转换条目的当前页大小的指示。
6.根据权利要求1所述的地址转换的方法,其进一步包括:
将存储器地址的子集的数据临时存储在高速缓存中;
对于对应于所述第一地址的数据针对存储器访问的每个接收的第一地址搜索所述高速缓存;
如果所述高速缓存存储对应于所述第一地址的数据,则从所述高速缓存对所述第一地址的存储器访问进行服务;
如果所述高速缓存不存储对应于所述第一地址的数据:从所述存储器检索对应于所述第一地址的数据,包括根据所述第一地址转换条目将所述第一地址转换为所述第二域中的所述第二地址;将检索的对应于所述第一地址的数据存储在所述高速缓存中;然后从所述高速缓存对所述第一地址的所述存储器访问进行服务;
其中如果所述第一地址转换条目未被存储在所述微转换后备缓冲器中,只有当所述高速缓存不存储对应于所述第一地址的数据时,从存储器管理单元检索所述第一地址转换条目并且将被检索的第一地址转换条目存储在所述微转换后备缓冲器中才被执行。
7.根据权利要求6所述的地址转换方法,其中:
在第一地址域中的所述存储器访问为指令提取;
在所述第一地址域中的所述存储器访问为连续指令的提取包的指令提取;
线性地在所述第一地址之后的预测的顺序存储器访问的数量的所述指示为提取包的数量;
所述方法进一步包括:
通过将提取包大小添加到所述第一地址来生成第一下一包地址;
通过将提取包大小按顺序添加到在前的下一包地址来生成下一提取地址的序列;以及
在每个下一包地址预取指令。
8.根据权利要求7所述的地址转换的方法,其中在每个下一包地址处预取指令的步骤包括:
对于与所述下一包地址相对应的指令针对每个下一包地址搜索所述高速缓存;
如果所述高速缓存不存储对应于所述下一包地址的指令:
从存储器检索对应于所述下一包地址的数据包括根据所述第一地址转换条目将所述下一包地址转换到所述第二域中的第三地址的步骤;将与每个下一包地址转换条目相对应的检索的指令存储在所述高速缓存中。
9.根据权利要求1所述的地址转换的方法,其中从所述存储器管理单元检索所述下一地址转换条目的步骤包括:
将所述第一地址提供给所述存储器管理单元;
从所述存储器管理单元检索与所述第一地址相对应的地址转换条目;以及
将来自所述存储器管理单元的检索的地址转换条目与对应于所述第一地址的指示一起返回到所述微转换后备缓冲器,由此所述微转换后备缓冲器可适当地存储无序的检索的地址转换条目。
10.一种采用地址转换的数据处理装置,其包括:
中央处理单元,其在指令控制下对数据执行数据处理操作,所述中央处理单元生成在第一地址域中的对应第一地址处的存储器访问以及线性地在每个存储器访问的所述第一地址之后的预测的顺序存储器访问数的指示;
存储器管理单元,其存储多个地址转换条目,每个地址转换条目包括所述第一地址域的最高有效地址位的第一预定数量和对应地址页的第二地址域的最高有效地址位的对应第二预定数量;
连接到所述中央处理单元和所述存储器管理单元的地址转换单元,所述地址转换单元包括存储所述多个地址转换条目的子集的微转换后备缓冲器,所述地址转换单元可操作通过以下步骤将来自所述中央处理单元的存储器访问从所述第一地址域转换到所述第二地址域:
针对与当前第一地址相对应的第一地址转换条目搜索微转换后备缓冲器;
如果所述第一地址转换条目未被存储在所述微转换后备缓冲器中,则从所述存储器管理单元检索所述第一地址转换条目,并将检索的第一地址转换条目存储在所述微转换后备缓冲器中;
通过将第二地址域的所述第二预定最高有效位代替所述第一地址转换条目的所述第一地址域的所述第一预定最高有效位,根据所述第一地址转换条目将所述第一地址转换为所述第二地址域中的第二地址;
所述地址转换单元可操作以:
从所述第一地址和线性地在所述第一地址之后的所述预测的顺序存储器访问的数量的指示确定所述预测的顺序存储器访问的数量中的最后一个是否对应于所述第一地址转换条目之后的下一地址转换条目;
如果所述预测的顺序存储器访问数的最后一个对应于下一地址转换条目,则针对所述下一地址转换条目搜索所述微转换后备缓冲器,以及
如果所述下一地址转换条目未被存储在所述微转换后备缓冲器中,则从所述存储器管理单元检索所述下一地址转换条目,并且将检索的所述下一地址转换条目存储在所述微转换后备缓冲器中。
11.根据权利要求10所述的采用地址转换的数据处理装置,其中:
在所述第一地址域中的所述存储器访问为指令提取;
所述中央处理单元包括分支预测单元,所述分支预测单元可操作以:存储条件分支指令采用分支还是不采用分支的预测,并且
根据所述第一地址和预测待采用的下一顺序条件分支指令之间的地址位置的数量来计算线性地在所述第一地址之后的预测的顺序存储器访问的数量的指示。
12.根据权利要求10所述的采用地址转换的数据处理装置,其中:
所述中央处理单元为包括多个功能单元的非常长的指令字中央处理单元,其中,所述第一地址域中的所述存储器访问为连续指令的提取包的指令提取,并且线性地在所述第一地址之后的预测的顺序存储器访问的数量的所述指示为提取包的数量。
13.根据权利要求12所述的采用地址转换的数据处理装置,其中所述地址转换单元进一步包括:
乘法器,其具有接收所述提取包的数量的第一输入端、接收所述提取包的大小的第二输入端和形成乘积的输出端;
加法器,其具有连接到所述乘法器的所述输出端的第一输入端、接收所述第一地址的第二输入端和形成总和地址的输出端;以及
确定所述总和地址是否对应于所述下一地址转换条目的页边界检测单元,其具有连接到所述加法器的所述输出端的第一输入端。
14.根据权利要求13所述的采用地址转换的数据处理装置,其中,所述页边界检测单元进一步包括接收所述第一地址转换条目的当前页大小的指示的第二输入端。
15.根据权利要求10所述的采用地址转换的数据处理装置,其进一步包括临时存储存储器地址的子集的数据的高速缓存,所述高速缓存可操作用于:
针对存储器访问的每个接收到的第一地址搜索对应于所述第一地址的数据;
如果所述高速缓存存储对应于所述第一地址的数据,则从所述高速缓存对所述第一地址的所述存储器访问进行服务;
如果所述高速缓存未存储对应于所述第一地址的数据,则从存储器检索对应于所述第一地址的数据包括所述地址转换单元根据所述第一地址转换条目将所述第一地址转换为所述第二地址域中的所述第二地址、存储检索的对应于所述第一地址转换条目的数据,然后从所述高速缓存对所述第一地址的所述存储器访问进行服务;
所述地址转换单元可操作以只有当所述高速缓存未存储对应于所述第一地址的数据时,才从所述存储器管理单元检索所述第一地址转换条目。
16.根据权利要求15所述的采用地址转换的数据处理装置,其中:
所述中央处理单元在所述存储器访问时生成连续指令的提取包的指令提取,并且生成提取包的数量以作为线性地在所述第一地址之后的预测的顺序存储器访问的数量的指示;
所述地址转换单元进一步包括:
提取包计数寄存器,其初始加载有所述提取包的数量并在每个存储器周期递减;
复用器,其具有连接到所述中央处理单元的接收所述第一地址的第一输入端、第二输入端、输出端和连接到零计数单元的接收零计数指示的控制输入端;
连接到所述提取包计数寄存器的所述零计数单元,其生成所述提取包计数寄存器的计数是否为零的所述零计数指示,所述零计数指示连接到所述复用器的所述控制输入端,其在指示为零时选择所述复用器的所述第一输入端并在指示不为零时选择所述复用器的所述第二输入端;以及
加法器,其具有接收提取包大小的指示的第一输入端、连接到所述复用器的输出端的第二输入端和生成总和地址的输出端,所述输出端连接到所述复用器的所述第二输入端,所述总和地址生成高速缓存预取请求。
17.根据权利要求16所述的采用地址转换的数据处理装置,其中所述高速缓存进一步可操作用于:
针对每个接收的高速缓存预取地址搜索与所述高速缓存预取地址相对应的数据;
如果所述高速缓存未存储对应于所述高速缓存预取地址的数据,则根据所述第一地址转换条目,从所述存储器检索对应于所述高速缓存预取地址的数据,所述存储器包括将所述高速缓存预取地址转换为所述第二地址域中的第三地址的所述地址转换单元;以及
存储对应于所述高速缓存预取地址的检索的数据。
18.根据权利要求10所述的采用地址转换的数据处理装置,其中:
所述存储器管理另外可操作以将检索的所述第一地址转换条目连同对应于所述第一地址的指示一起返回到所述微转换后备缓冲器;以及
所述微转换后备缓冲器将检索的所述第一地址转换条目存储在与所述第一地址相对应的位置中,因此所述微转换后备缓冲器可适当地存储无序检索的地址转换条目。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/579,654 | 2014-12-22 | ||
US14/579,654 US9514059B2 (en) | 2014-12-22 | 2014-12-22 | Hiding page translation miss latency in program memory controller by selective page miss translation prefetch |
PCT/US2015/067525 WO2016106392A1 (en) | 2014-12-22 | 2015-12-22 | Hiding page translation miss latency in program memory controller by selective page miss translation prefetch |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107111550A CN107111550A (zh) | 2017-08-29 |
CN107111550B true CN107111550B (zh) | 2020-09-01 |
Family
ID=56129570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580070019.6A Active CN107111550B (zh) | 2014-12-22 | 2015-12-22 | 用于隐藏程序提取的页遗漏转换时延的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9514059B2 (zh) |
EP (1) | EP3238073B1 (zh) |
JP (1) | JP6718454B2 (zh) |
CN (1) | CN107111550B (zh) |
WO (1) | WO2016106392A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10049054B2 (en) * | 2015-04-01 | 2018-08-14 | Micron Technology, Inc. | Virtual register file |
US10379858B2 (en) * | 2015-09-14 | 2019-08-13 | Spreadtrum Hong Kong Limited | Method and apparatus for executing conditional instruction predicated on execution result of predicate instruction |
KR20180012565A (ko) * | 2016-07-27 | 2018-02-06 | 에스케이하이닉스 주식회사 | 휘발성 메모리를 캐쉬로 사용하는 비휘발성 메모리 시스템 |
US9673977B1 (en) | 2016-09-15 | 2017-06-06 | ISARA Corporation | Refreshing public parameters in lattice-based cryptographic protocols |
US10719451B2 (en) * | 2017-01-13 | 2020-07-21 | Optimum Semiconductor Technologies Inc. | Variable translation-lookaside buffer (TLB) indexing |
US10565115B2 (en) * | 2017-03-30 | 2020-02-18 | Western Digital Technologies, Inc. | Calculating the optimal number of LBNS to prefetch per CPU |
US10929296B2 (en) * | 2017-10-12 | 2021-02-23 | Texas Instruments Incorporated | Zero latency prefetching in caches |
KR102151180B1 (ko) * | 2017-11-20 | 2020-09-02 | 삼성전자주식회사 | 효율적인 가상 캐시 구현을 위한 시스템 및 방법 |
US10489305B1 (en) | 2018-08-14 | 2019-11-26 | Texas Instruments Incorporated | Prefetch kill and revival in an instruction cache |
US10642742B2 (en) * | 2018-08-14 | 2020-05-05 | Texas Instruments Incorporated | Prefetch management in a hierarchical cache system |
CN111984318A (zh) | 2019-05-22 | 2020-11-24 | 德克萨斯仪器股份有限公司 | 伪先进先出(fifo)标签线替换 |
US11113208B2 (en) | 2019-05-22 | 2021-09-07 | Texas Instruments Incorporated | Pseudo-first in, first out (FIFO) tag line replacement |
US11461106B2 (en) * | 2019-10-23 | 2022-10-04 | Texas Instruments Incorporated | Programmable event testing |
US11704253B2 (en) * | 2021-02-17 | 2023-07-18 | Microsoft Technology Licensing, Llc | Performing speculative address translation in processor-based devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487418A (zh) * | 2002-09-05 | 2004-04-07 | �Ҵ���˾ | 远端直接存储器存取启用网络适配器的存储器管理卸载 |
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作***中提供用于页面转换的预转换段的设备和方法 |
CN101490655A (zh) * | 2006-07-14 | 2009-07-22 | 高通股份有限公司 | 在微处理器内指示异常触发页面的方法和*** |
US20120198164A1 (en) * | 2010-09-28 | 2012-08-02 | Texas Instruments Incorporated | Programmable Address-Based Write-Through Cache Control |
US20140108766A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetching tablewalk address translations |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778434A (en) | 1995-06-07 | 1998-07-07 | Seiko Epson Corporation | System and method for processing multiple requests and out of order returns |
JPH1040171A (ja) * | 1996-07-24 | 1998-02-13 | Sony Corp | アドレス変換装置および方法 |
US6487640B1 (en) | 1999-01-19 | 2002-11-26 | International Business Machines Corporation | Memory access request reordering to reduce memory access latency |
EP1182569B8 (en) | 2000-08-21 | 2011-07-06 | Texas Instruments Incorporated | TLB lock and unlock operation |
US7054927B2 (en) * | 2001-01-29 | 2006-05-30 | Adaptec, Inc. | File system metadata describing server directory information |
US9251048B2 (en) * | 2012-10-19 | 2016-02-02 | International Business Machines Corporation | Memory page management |
-
2014
- 2014-12-22 US US14/579,654 patent/US9514059B2/en active Active
-
2015
- 2015-12-22 CN CN201580070019.6A patent/CN107111550B/zh active Active
- 2015-12-22 WO PCT/US2015/067525 patent/WO2016106392A1/en active Application Filing
- 2015-12-22 EP EP15874355.9A patent/EP3238073B1/en active Active
- 2015-12-22 JP JP2017533975A patent/JP6718454B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487418A (zh) * | 2002-09-05 | 2004-04-07 | �Ҵ���˾ | 远端直接存储器存取启用网络适配器的存储器管理卸载 |
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作***中提供用于页面转换的预转换段的设备和方法 |
CN101490655A (zh) * | 2006-07-14 | 2009-07-22 | 高通股份有限公司 | 在微处理器内指示异常触发页面的方法和*** |
US20120198164A1 (en) * | 2010-09-28 | 2012-08-02 | Texas Instruments Incorporated | Programmable Address-Based Write-Through Cache Control |
US20140108766A1 (en) * | 2012-10-17 | 2014-04-17 | Advanced Micro Devices, Inc. | Prefetching tablewalk address translations |
Also Published As
Publication number | Publication date |
---|---|
EP3238073A1 (en) | 2017-11-01 |
JP6718454B2 (ja) | 2020-07-08 |
CN107111550A (zh) | 2017-08-29 |
US9514059B2 (en) | 2016-12-06 |
EP3238073B1 (en) | 2019-06-26 |
WO2016106392A1 (en) | 2016-06-30 |
EP3238073A4 (en) | 2017-12-13 |
US20160179700A1 (en) | 2016-06-23 |
JP2018506776A (ja) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111550B (zh) | 用于隐藏程序提取的页遗漏转换时延的方法和装置 | |
US9652392B2 (en) | Using L1 cache as re-order buffer | |
US9239735B2 (en) | Compiler-control method for load speculation in a statically scheduled microprocessor | |
US10664281B2 (en) | Apparatuses and methods for dynamic asymmetric scaling of branch predictor tables | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
US20230078414A1 (en) | Servicing cpu demand requests with inflight prefetches | |
WO2019133258A1 (en) | Look up table with data element promotion | |
CN105718386B (zh) | 程序存储器控制器中页面窗口的本地页面转换和许可存储 | |
EP3575955B1 (en) | Indirect memory fetcher | |
US9652402B2 (en) | Hiding page translation miss latency in program memory controller by next page prefetch on crossing page boundary | |
CN115858022A (zh) | 集群化解码管线的可缩放切换点控制电路*** |
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 | ||
GR01 | Patent grant |