CN104583976B - 具有预取的转译后备缓冲器 - Google Patents
具有预取的转译后备缓冲器 Download PDFInfo
- Publication number
- CN104583976B CN104583976B CN201380043416.5A CN201380043416A CN104583976B CN 104583976 B CN104583976 B CN 104583976B CN 201380043416 A CN201380043416 A CN 201380043416A CN 104583976 B CN104583976 B CN 104583976B
- Authority
- CN
- China
- Prior art keywords
- request
- lookaside buffer
- translation
- address
- translation lookaside
- 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
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/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- 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/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- 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/0215—Addressing or allocation; Relocation with look ahead addressing means
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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]
-
- 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/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- 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
Abstract
系统TLB接受来自启动器的转译预取请求。未命中产生外部转译请求到查核行程机端口。所述请求的属性,例如ID、地址及类别,以及所述TLB的状态影响多个级别的转译表内的转译的分配策略。转译表通过SRAM来实施,及组织成若干群组。
Description
相关申请案
此外,本申请案涉及______申请且题为“具有基于请求的分配及预取的系统转译后备缓冲器(SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATIONAND PREFETCHING)”的第______号(024US1领域)美国非临时专利申请案、______申请且题为“集成在互连件中的系统转译后备缓冲器(SYSTEM TRANSLATION LOOK-ASIDE BUFFERINTEGRATED IN AN INTERCONNECT)”的第_______号(024US2领域)美国非临时专利申请案、_____申请且题为“具有STLB预取能力及系留预取的DMA引擎(DMA ENGINE WITH STLBPREFETCH CAPABILITIES AND TETHERED PREFETCHING)”的第_____号(024US3领域)美国非临时专利申请案、以及______申请且题为“用于多维引擎的STLB预取(STLB PREFETCHINGFOR A MULTI-DIMENSION ENGINE)”的第______号(024US4领域)美国非临时专利申请案,所述申请案中的每一者以引用的方式并入本文中。
技术领域
本文所揭示的发明处于计算机系统设计的领域,确切地说用于芯片上系统半导体装置。
背景技术
存储器管理单元(MMU)常用于微处理器中以提供虚拟存储器能力。当启用虚拟存储器时,在所述处理器上执行的软件仅看到及使用虚拟地址(VA)。MMU的任务是将VA转换成接着可在处理器内部及外部使用的物理地址(PA)。使用虚拟存储器具有许多优点,包含能够产生比实际上可用的存储器多的错觉,提供对具有比软件所支持的地址位多的地址位的物理存储器系统的接入,以及具有不同访问权限的物理存储器的保护。
支持虚拟化的一些现代系统具有在VA与PA之间的两个级别的地址转译。第一级别类似于在非虚拟化系统上发现的级别,但PA并非最终PA。其可称作中间物理地址(IPA)或客户物理地址(GPA)。第二级别将所述中间地址映射成最终PA。在这些系统中,对于在处理器上运行的任何软件,可启用第一级别或第二级别或两者。
大体来说,虚拟地址空间划分成若干页面。页面一般为几千字节,但可使用其它页面大小。系统常常支持从几千字节到几兆字节或甚至几千兆字节的多个页面大小以增加转译效率。页面内的所有地址以相同方式转译,且所有访问权信息是相同的。VA与PA之间的转译经由(常常多级)页面表来进行。穿过页面表以将VA转译成PA的过程常常称作查核行程(walking),这是因为其包括一连串页面表查找。
MMU常常包括两部分。第一部分称作转译后备缓冲器(TLB)。其将转译高速缓存而使得所述转译可被处理器快速地存取,使得对于高速缓存的转译,处理器可在极少延迟的情况下执行。第二部分是查核行程机,其在TLB不含有转译时查核所述页面表。在一些系统中,在TLB与查核行程机之间存在较多高速缓存。举例来说,TLB具有2级别的高速缓存。查核行程机本身可含有高速缓冲存储器。
系统MMU(SMMU)镜射MMU的功能性,但适用于除了微处理器之外的启动器。一些此类启动器为GPU、DSP及DMA引擎。在SMMU情况下,此类启动器可利用虚拟存储器及虚拟化的益处。类似于MMU,SMMU对页面进行操作且使用页面表来计算转译。在一些情况下,SMMU使用与SMMU的启动器连接到的处理器的MMU相同的页面表格式。在此情况下,页面表可在MMU与SMMU之间共享。
由于MMU包括TLB及查核行程机,因此SMMU包括系统TLB(STLB)及查核行程机。STLB充当用于转译的高速缓冲存储器以帮助保持启动器的最佳性能。在一些情况下,多个STLB可出于效率原因而共享单个查核行程机。在一些情况下,多个启动器可共享STLB。
在大多数情况下,处理器内部的TLB与处理器紧密地集成,这是因为物理地址需要在处理器内部(例如,用于高速缓存相干性可见的高速缓冲存储器)。与此对比,STLB无需集成在启动器内部。其可无任何负面影响地放置在启动器外部。在许多情况下,多个启动器共享单个STLB。STLB仅需要处于请求的源与目的地之间以提供转译服务。大多数芯片设计具有提供启动器针对目标进行的存取的互连件。STLB可放置在启动器与互连件之间,或在互连件内且接近启动器。
将虚拟存储器添加到启动器可具有关于启动器的性能的严重的负面效应。除了归因于额外逻辑的时延增加之外,无论何时STLB未命中(即,处理来自启动器的请求所必需的转译未经高速缓存),所述请求必须停止直到所述转译已被另一级别的高速缓冲存储器或查核行程中的任一者解决为止。这将影响请求的性能及还可影响之后的请求。由于页面表查核行程通常花费1与20顺序存取之间及每一存取通常花费10与100时钟循环之间,所以启动器请求可停止大量时间及启动器的性能可大幅度降低。
减少STLB未命中可通过增加STLB高速缓冲存储器的大小及通过减少查核行程延迟来进行。但是,这是不够的。一些未命中为强制性未命中(例如,当首次看见页面及高速缓冲存储器无法已含有转译时),且这些未命中并未通过高速缓冲存储器大小来改进。在一些极端实例中,由启动器请求具有不良页面局部性的大量数据,从而触发大量的强制性未命中。
因此,需要的是用以将转译预取为STLB而使得STLB中的请求未命中的概率降低或消除的机制。这尤其适用于系统TLB,这是因为启动器易于具有可预测存储器存取图案,及在许多情况下还可增强以产生预测未来存储器存取图案的高级预取图案。
每一STLB具有使用协议产生存储器请求的目标侧接口。不同I/O装置需要不同的协议。这使得不同STLB设计不一致且因此较复杂。地址解码在STLB中及在互连件(不必要地包含冗余逻辑)中执行,所述逻辑使用硅区域且限制操作速度。用以将请求从STLB传送到其查核行程机的接口协议不同于用以将请求从启动器传送到互连件内的目标的协议。这增加了验证及系统级别建模的复杂性。此外,当使用子系统互连件来集成分开设计的逻辑块时,没有办法经由互连件来将转译信息及转译预取请求从启动器转移到TLB。此外,存取共享转译的多个STLB未得益于其请求的共享局部性。
一些I/O装置(比如一些微处理器)执行预取操作以致使数据从后备存储区移动到高速缓冲存储器中,使得可能未来请求将在高速缓冲存储器中命中而非未命中。预取一般花费后备存储区带宽而有利于较低平均存储器存取时延。
在具有TLB的系统中,任何存取都可引起TLB转译表中的未命中。尽管在大多数操作条件下TLB未命中比高速缓存未命中较少频繁,但仍可引起比正常高速缓存未命中明显较长的延迟。
在许多数据处理领域中常常按不遵循其存储器组织的方式来存取数据集。具体来说,二维阵列通常布置在存储器中而使得沿着维度中的一者存取在存储器中是顺序的。然而,沿着另一维度存取同一阵列需要对存储器进行非顺序存取。发生此类型的存取的领域包含视频及图像捕捉及显示、2D处理以及具有基于矩阵的数据处理的其它领域。为了在具有组织为线性地址空间的存储器的系统(例如,2D表面)中表示具有两个或两个以上维度的阵列,如果地址空间划分成若干转译页面及如果阵列维度并不比页面大小小得多,那么产生某些严重的妨碍性能问题。表面数据(例如,像素)的每个数据元素或原子单元将在旋转的读取或写入步骤中的任一者中存取不同的页面。这至少在表面的开始引起STLB未命中的短暂波动。如果经存取的行的数目超过STLB高速缓冲存储器中的映射数目,那么整个表面中的每个像素均引起STLB未命中。
发明内容
本发明是一种用以将转译预取为STLB而使得STLB中的请求未命中的概率降低或消除的机制。将请求输入到STLB。所述请求可为正常请求(数据读取或写入)或预取。预取是不引起数据在启动器与目标之间传送的请求。预取引起STLB在转译可能被请求之时之前请求来自页面表的转译的读取。
请注意STLB预取不同于CPU预取。CPU预取一般通过特定指令起始。CPU预取将来自存储器的数据移动到CPU数据或指令高速缓冲存储器,以便改进高速缓冲存储器中CPU读取命中的概率。STLB预取将来自存储器中页面表的映射移动到STLB转译表(其充当高速缓冲存储器),以便改进STLB转译高速缓冲存储器中启动器事务请求地址转译命中的概率。本发明的剩余内容涉及STLB预取,及术语预取应被如此理解。
所揭示发明是改进的STLB及包括所述STLB的系统。STLB放置于互连件中,接近I/O装置。其使用启动器侧及目标侧上的正常接口以便在不同接口协议的I/O装置之间可再用。其使用与数据路径传送拓扑通用的传送协议而连接到共享查核行程机。
所揭示发明允许转译分配信息及转译预取命令通过互连件从启动器到位于互连件的目标侧上的SLTB。此外,多个STLB可使用共享中间级别的转译高速缓冲存储器以利用不同I/O装置之间的请求局部性。
本文所揭示发明是用以起始用于I/O装置的TLB转译预取的有效系统。这可在平均存储器存取时延上产生显著减少。本发明体现在连接到TLB的DMA引擎中。DMA引擎是任何装置(除了中央处理单元),其将数据块从存储器移动到存储器或两者。DMA引擎可与I/O接口连接,集成在处理引擎内,独立的,或以其它方式并入芯片内。
预取由于请求与特定VA一起发送而发生。预取的有效性的关键是DMA引擎内预取虚拟地址产生器的功能性。
所揭示发明是可经由具有STLB的SMMU连接到存储器的多维引擎。多维引擎存取用于表面或其它类型的数据阵列的数据。其可以非线性方式存取数据。多维引擎在稍后请求存取所述页面内数据元素之前发送用于页面内地址的转译的请求,因此在发送数据元素存取请求时最小化或避免停止转译提取。用于转译的此类数据较少请求被称为STLB预取请求。多维引擎存取仅使用可含于STLB的容量内的许多映射的数据元素的群组,因此减少转译高速缓存未命中的总数。
附图说明
图1说明根据本发明的各种方面的简单STLB。
图2说明根据本发明的各种方面的具有分配逻辑的STLB。
图3说明根据本发明的各种方面的执行显式预取的STLB。
图4说明根据本发明的各种方面的包括STLB及查核行程机的SMMU。
图5说明根据本发明的系统TLB及互连件的常规系统。
图6说明根据本发明的其中系统TLB集成在启动器网络接口单元内的互连件。
图7说明根据本发明的两个互连件的系统,其中一个互连件的转译请求由集成在另一互连件中的系统TLB支持。
图8说明根据本发明的共享中间级别转译高速缓冲存储器的系统TLB。
图9说明根据本发明的用于互连件的仿真环境。
图10说明根据本发明的具有虚拟地址产生器、SLTB及目标的DMA引擎的系统。
图11说明根据本发明的具有正常及预取虚拟地址产生器、STLB及目标的DMA引擎的系统。
图12说明产生预取虚拟地址流及正常虚拟地址流的过程。
图13说明表面的旋转。
图14展示旋转行内的数据的地址的对应关系。
图15展示从源读取像素群组及将其写入到目的地。
图16展示表面的行到存储器页面的映射。
图17说明旋转引擎、SMMU及存储器的布置。
图18说明具有用于数据请求及预取请求的单独频道的另一此类布置。
图19说明旋转引擎内的地址产生器的两个可能布置。
图20展示具有跨越不同页面扩展的行的存取区域的预取窗的应用。
具体实施方式
现参看图1,STLB 100经由输入端口110接收输入请求,转译地址,及经由输出端口120发射一或多个对应输出请求。将所述请求发送到上下文逻辑150,其提取与转译相关的请求的部分,包含(但不限于)地址、操作(读取/写入)、大小、安全性指示、权限级别及通用侧带信息。使用这些部分,上下文逻辑产生至少上下文识别符及地址(所述两者在转译表160中查询)的组合。
转译表160包含一或多个条目,每一条目对应于地址范围及上下文集合。当输入请求地址及上下文与一条目匹配时,转译表返回包含经转译地址及权限的许多参数。转译表160可以多种方式实施,例如按照完全关联或集合关联的方式以内容可寻址存储器(CAM)的形式。根据一些方面,STLB 100包含以多级高速缓冲存储器的方式布置的多个级别的转译表,其中第一级别为较小数目的条目但较低时延的转译表,接着第二级别为较大数目的条目但较高时延的转译表。
基于在上下文逻辑150中进行的上下文计算及转译表160的转译表查询的结果,逻辑控制170进行以下动作中的一者:
A)如果上下文逻辑150使用来自请求及一些内部配置状态的信息确定所述请求不需要转译,那么允许所述请求在没有或极少修改的情况下通过,且转译表160未被询问。
B)如果所述查询在转译表160中命中且权限有效,那么所述请求经转译。至少修改地址字段以使用经转译地址。通常,用从转译表160获得的经转译地址来替换最高有效位,其中位数从对应于转译表160中的条目的页面大小导出。在一些情况下,还修改所述请求的其它属性。
C)如果权限失效,那么所述请求不允许继续进行或标记有误差。
D)如果所述查询在转译表160中未命中(即,不存在对应条目),那么所述请求直到STLB 100已经由查核行程机端口130放置外部转译请求且已接收来自同一查核行程机端口130的响应才继续进行。当外部转译请求未决时,原始请求在STLB 100中停止。其使经过STLB 100的所有业务停止。一些STLB具有用以临时存储在TLB中未命中的请求的缓冲器180。所述缓冲器通常被称为未命中下命中(HUM)及/或未命中下未命中(MUM)缓冲器,这是因为其允许稍后请求保持经过STLB 100(直到缓冲器180充满为止)。在经过查核行程机端口130的外部转译请求已接收响应之后,所停止的请求根据A)、B)或C)而经转译及处置。
在外部转译请求经由查核行程机端口130发送的情况下,当所述响应返回时,将新转译添加到转译表160。存在可用以选择放置新转译的条目(且从所述条目丢弃先前存储的转译)的许多类型的算法。这包含常见高速缓存分配替代策略,比如最近最少使用(LRU)、伪LRU、最近未使用(NRU)、先进先出(FIFO)等等。
根据本发明的一些方面,外部转译请求包含一类型。所述类型指示外部转译请求是响应于正常输入请求还是预取请求而起始。根据本发明的一些方面,在查核行程机端口130的协议内带内编码所述类型。根据本发明的其它方面,所述类型用边带信号指示。
根据本发明的一些方面,转译表160是完全关联的。根据本发明的一些方面,转译表160是集合关联的。根据本发明的一些方面,转译表160由多个级别的转译表建构。根据本发明的一些方面,转译表160由第一级别的完全关联转译表及第二级别的完全关联或集合关联的转译表建构。根据本发明的一些方面,转译表160的部分由一或多个静态随机存取存储器(SRAM)阵列建构。
现参看图2,根据本发明,分配逻辑261使用来自输入端口110的请求的一些特性来基于替代策略决定是否应针对转译表160中的请求来分配条目,及如果是,那么应使用所述条目。根据本发明的一些方面,可在运行中改变替代策略。根据本发明的另一方面,基于每个事务来选择替代策略,如事务请求所指示。
根据本发明的一些方面,转译表160是集合关联的且分裂为多个群组,每一群组含有一或多个通路。根据本发明的一些方面,群组为仅一个条目。根据本发明的其它方面,群组相对较大且存储在SRAM中。
根据本发明的一些方面,来自输入端口110的请求的属性用以确定所述请求分配条目所到的群组。此类属性包含请求的源、请求的识别符(ID)(有时被称为标记)、或专用于分配的特殊边带、或这些内容的任何组合。
根据本发明的一些方面,分配逻辑261包括用以基于用于确定的请求的属性而确定可允许的分配群组的可配置或可编程寄存器阵列。在系统硬件设计时间设置可配置阵列。可编程阵列用软件来设置,及可在芯片的运行期间改变。
根据本发明的一些方面,使用请求的属性来确定请求的类别。根据本发明的一些方面,一个类别分配转译表160中的最大数目的条目。根据本发明的一些方面,一个类别分配转译表160中的最小数目的条目。
根据本发明的一些方面,如果对查核行程机的未决请求(经由查核行程机端口130)的数目有限,那么在用类别调节的所使用的多个条目的群组中分配未决请求条目。在未决请求的数目的限值到达时进行的外部转译请求致使外部转译请求被临时阻止,直到响应使未决外部转译请求的数目返回降到限值以下为止。根据本发明的其它方面,所述限值适用于为预取输入请求的结果的类型的所有未决外部转译请求。根据本发明的其它方面,所述限值适用于特定群组的所有未决外部转译请求。根据本发明的其它方面,所述限值适用于特定类别的所有未决外部转译请求。
根据本发明的方面,当对查核行程机的未决请求的数目到达限值时,由预取产生的请求被临时阻止直到未决请求的数目小于所述限值为止。根据本发明的另一方面,当对查核行程机的未决请求的数目到达限值时,丢弃由预取产生的请求。
现参看图3,额外功能性支持显式预取。根据本发明的方面,预取识别逻辑355识别预取请求。预取请求使用多种属性来识别。根据本发明的一些方面,使用也经由输入端口310与请求一起发送的边带信号来识别预取请求。根据本发明的其它方面,使用请求的ID来识别预取请求。根据本发明的其它方面,使用请求的地址位来识别预取请求。使用其它字段或字段的组合来识别预取请求。根据本发明的其它方面,预取请求具有与输入端口310分开的专用预取端口。
根据本发明的一些方面,根据在使用中的标准事务协议而合法地形成预取请求。一些标准事务协议为高级微控制器总线架构(AMBA)高级可扩展接口(AXI)及开放核心协议(OCP)。根据本发明的一些方面,而正常请求是用于完整的高速缓存行,预取请求是用于小的数据量,比如零字节或一个字节。零字节请求根据一些协议是不合法的,但可用作预取的指示。一个字节请求根据大多数协议是合法的,及可用作预取大小。一个字节请求(字节是数据请求的最小原子单元)具有确保所请求数据将不在例如页面大小对准范围的访问限制的界定地址范围或节拍之间的任何边界处交叉的益处。此外,一个字节请求恰好需要接口上的数据传送的一个循环。或者,可例如通过丢弃较低地址位而强迫输入请求页面对准。根据本发明的一些方面,预取请求必须不含有数据。根据本发明的一些方面,预取请求必须对准到某一边界,比如4KB。根据本发明的其它方面,预取请求采用并非协议所预期的特殊形式。根据本发明的一些方面,预取请求ID必须不同于正常请求的ID。根据本发明的一些方面,未决的预取请求必须全部具有不同的ID。根据本发明的一些方面,预取识别逻辑355集成在上下文逻辑350中。
根据本发明的一些方面,还经由端口330将预取请求发送到查核行程机。根据本发明的一些方面,在端口330上使用的请求协议包括使查核行程机在某些情况下不同地表现的预取指示。根据本发明的一些方面,当请求被识别为预取请求时,其被查核行程机认为是推测性的,且未触发副作用(例如中断)。根据本发明的一些方面,端口330上的响应协议包括所述请求在尚未经预取的情况下将通常触发查核行程机中的副作用的指示。根据本发明的一些方面,此响应指示用于STLB 300中以不将对应条目添加到转译表360或预取表390中。根据本发明的其它方面,响应指示用以专门标记转译表360或预取表390中的条目,使得当非预取请求匹配此条目时,在预取指示停用的情况下经由端口330将新请求发送到查核行程机。
根据本发明的一些方面,预取表390用以存储未决的预取请求。根据本发明的一些方面,预取表390可含有尚未发送到查核行程机的预取请求。根据本发明的其它方面,预取表390可含有已经由端口330发送到查核行程机的预取请求。根据本发明的其它方面,预取表390可含有已经由端口330发送到查核行程机的预取请求且已经由端口330而接收经过查核行程机的响应。根据本发明的一些方面,当对预取请求的响应由STLB 300接收时,在转译表360中分配此响应转译。
除了图1中针对逻辑控制170描述的四个可能动作(A、B、C、D)之外,根据本发明的各种方面,还启用逻辑控制370以将识别为预取请求的请求发送到预取请求终端逻辑395。根据本发明的一些方面,预取请求终端逻辑395自动地对预取请求作出响应而不经由端口320发送所述请求。根据本发明的一些方面,预取请求终端逻辑395仅在其已接收来自查核行程机的响应(通过经由端口330的通信)之后才对转译表360中未命中的预取请求作出响应。在转译表360中命中的预取请求通过预取请求终端逻辑395而迅速地响应。根据本发明的一些方面,预取请求终端逻辑395对匹配未决的预取请求的页面的预取请求进行立刻响应。因此,使用经由输入端口310连接的STLB 300的代理知道未决预取请求的数目,且确保其不发送比STLB 300可跟踪的请求多的预取请求。根据本发明的一些方面,当接收到预取请求但预取表390不具有可用条目时,预取请求未经由端口330而触发对查核行程机的请求,而是实际上通过预取请求终端逻辑395立刻进行响应。根据本发明的一些方面,当接收到预取请求但预取表390不具有可用条目时,所述请求停止直到空间在预取表390中变得可用。根据本发明的一些方面,上述两个行为(忽略、停止)之间的选择通过预取请求中的指示来进行。根据本发明的其它方面,所述选择是通过配置位来进行。
根据本发明的一些方面,STLB 300包含如图3中所描述的分配逻辑。预取表390的分配包括通过类别调节的条目的群组或数目。另外,预取指示还用以确定转译表360及预取表390中的可允许分配群组。
根据本发明的一些方面,如果对查核行程机的未决请求(经由端口330)的数目有限,那么在用类别调节的所使用的条目的群组或多个条目中分配未决请求条目,其中输入端口310上的请求的预取指示用于所述群组或类别确定中。
根据本发明的一些方面,提供单独端口用于预取请求。在此情况下,预取请求不需要与正常请求区分。然而,根据一些方面,所述请求仍需要具有某些ID、大小及对准。
根据本发明的一些方面,STLB 300包含基于在输入端口310上观测的模式而自动地产生预取的逻辑。根据本发明的一些方面,自动预取自动地预取以下页面(基于页面大小,包含当前页面大小、经编程页面大小或最小页面大小)。根据本发明的一些方面,自动预取逻辑检测步幅或2维存取且相应地进行预取。可使用其它常见预取技术,但所述技术适于页面粒度且避免对同一页面进行多个自动预取。根据本发明的一些方面,来自自动预取逻辑经由端口330发送到查核行程机的预取使用推测性指示以防止查核行程机启用所述查核行程的副作用,例如中断。
现参看图4,根据本发明的一些方面,STLB 100含于SMMU 400内。STLB 100耦合到查核行程机410。查核行程机410接收来自STLB 100的外部转译请求,及经由查核行程机端口130提供响应。STLB 100及查核行程机410共享输出端口120。
图5中展示具有STLB的互连件5100。互连件5100包括启动器网络接口单元端口5110及5120、中心互连网络5140及目标端口5150。启动器网络接口端口5110使用AXI协议,及启动器网络接口端口5120使用AHB接口协议。启动器IP接口分别经由STLB 5112及5122而连接到启动器网络接口端口5110及5120。STLB 5112及5122经由查核行程机接口端口5160连接到查核行程机。
图6展示根据本发明的互连件6200,包括启动器网络接口单元(网络接口单元)6210及6220。网络接口单元6210包括将启动器AXI事务接口调适到内部正常接口协议的特定到一般单元6211。网络接口单元6220包括将启动器AHB事务接口调适到内部正常接口协议的特定到一般单元6221。
启动器网络接口单元6210及6220各自进一步包括一般到传送单元6212。一般到传送单元将每一事务转换为一或多个传送包,且在数据路径传送网络6240上发送所述传送包,所述网络将事务传达到目标网络接口单元端口6250。
根据本发明的方面,每一启动器网络接口单元进一步包括布置在特定到一般单元与一般到传送单元之间的STLB 6213。STLB 6213在其启动器侧数据请求接口及其目标侧数据请求接口上具有一般协议接口。尽管STLB 5112及5122各自适合于其不同的相应协议(AXI用于STLB 5112及AHB用于STLB 5122),STLB 6213为相同的,且针对一般协议规范来经设计。协议适配的复杂性在特定到一般单元6211及6221中执行,且因此为了简单性而设计一般协议。根据本发明的一些方面,一般协议不支持未对准存取的复杂性或复杂的排序需求。因而,STLB 6213的设计得以大大地简化。此外,由于简化,STLB 6213中的逻辑路径较短且其时延较少。
G2T 6212解码事务地址以便确定所述事务指向一或多个目标接口6250的集合中的哪一者。STLB 6213必须还解码所述地址以查询转译。根据本发明的另一方面,原本在G2T6212中执行的地址解码实际上在STLB 6213中执行。此提供了降低事务时延的益处。
自然地,每一STLB具有查核行程机接口以将查核行程机请求发送到查核行程机6230。根据本发明的另一方面,STLB 6213的查核行程机接口经由传送网络6260连接到查核行程机6230。传送网络6260使用与传送网络6240相同的传送单元的协议及库。这减少了所需的单元级别逻辑设计验证的量以及降低了构建性能估计仿真模型的复杂性。传送单元的库包含:
序列化适配器,其用以允许芯片平面布局内的带宽及线的权衡;
时钟域适配器,其用于单独的时钟树及频率缩放;
功率适配器,其用以允许功率域管理;
观测探测器;
安全过滤器;及
其它典型芯片上互连单元。与此对比,查核行程机的接口端口5160不使用标准协议,且因此必定具有不同的互连逻辑集合。
图7根据本发明的教示展示图6的互连件6200、启动器网络接口单元6210及图6的STLB 6213。子系统互连件7300经由其目标网络接口单元7310连接到启动器网络接口单元6210。子系统互连件7300包括许多启动器端口7320及内部网络7330。
根据本发明的方面,子系统互连件7300包括来自与互连件6200相同的库的单元。根据本发明的一些方面,目标网络接口单元7310与启动器网络接口单元6210之间的接口协议是标准协议。一些标准协议为AXI、ACE及OCP。根据本发明的其它方面,目标网络接口单元7310与启动器目标接口单元6210之间的协议是具有特定较低时延的特殊协议,例如2012年9月25日申请的且题为“芯片套接协议上的网络(NETWORK ON A CHIP SOCKET PROTOCOL)”的第13/626,766号美国非临时专利申请案中描述的芯片上网络套接协议,所述申请案以引用的方式并入本文中。使一些协议成为低时延协议的一个特征是具有消除专家执行间接查询以使响应与请求关联的需要的事务识别符信号。
根据本发明的方面,TLB分配信息通过连接到启动器网络接口单元7320的启动器发送,经由子系统内部网络7330、经由目标网络接口单元7310传送,且传送到启动器网络接口单元6210,在所述启动器网络接口单元6210将所述TLB分配信息提供给STLB 6213。STLB6213使用分配信息来进行分配策略。
根据本发明的一些方面,使用事务协议的排序ID字段在启动器网络接口单元7320处编码TLB分配信息。根据本发明的其它方面,在从启动器网络接口单元7320传送到目标网络接口单元7310的协议边带信号中编码TLB分配信息。根据本发明的其它方面,在传送协议的网络接口单元识别符字段中编码TLB分配信息。
根据本发明的一些方面,将STLB预取请求从启动器网络接口单元7320发送到STLB6213。预取请求可具有______申请的且题为“具有基于请求的分配及预取的系统转译后备缓冲器(SYSTEM TRANSLATION LOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION ANDPREFETCHING)”(024US1领域)的第_____号美国非临时专利申请案中描述的类型,所述申请案以引用的方式并入本文中。子系统互连件7300经配置而使得预取请求被发送或重新创建,使得STLB 6213可识别预取请求。根据本发明的其它方面,启动器网络接口单元7320使用排序ID位来区分正常请求与预取请求。根据本发明的其它方面,预取请求由边带信号指示。
根据本发明的方面,启动器网络接口单元7320可编程以在正常请求与预取请求之间进行区分。
根据本发明的方面,可将TLB分配信息及预取识别信息从启动器网络接口单元7320不变地发送到目标网络接口单元7310,而使得任何数目的子系统互连件7300可级联且仍提供分配信息给STLB 6213。
如图8中所示,根据本发明的方面,STLB 8400共享中间级别的转译高速缓冲存储器8410。图8展示连接到两个STLB 8400的启动器8420。STLB 8400各自连接到中间级别的转译高速缓冲存储器8410,所述中间级别的转译高速缓冲存储器8410经由查核行程机接口8430连接到查核行程机。将在STLB 8400及中间级别转译高速缓冲存储器8410两者中未命中的转译请求经由端口8430发送到查核行程机。
根据本发明的方面,中间级别的转译高速缓冲存储器8410大于STLB 8400中的高速缓冲存储器,及STLB 8400共享中间级别的转译高速缓冲存储器8410的额外容量。
根据本发明的方面,STLB 8400所接收的请求具有交叉局部性,即不同的STLB8400需要相同转译中的一些。中间级别的高速缓冲存储器将转译保持为如同通过查核行程机返回,使得第二请求的STLB 8400可在中间级别的高速缓冲存储器8410中找到其需要的转译,而实际上不必引发查核行程机请求的延迟。
根据本发明的方面,启动器8420是具有多个接口的启动器。启动器8420在多个端口之间分配业务。所述分配在不增加链路的宽度的情况下增加请求带宽。根据本发明的一些方面,所述分配通过基于一些地址位使地址范围交错来决定,使得特定地址位或地址位的散列确定哪个端口由请求使用。根据本发明的其它方面,每一端口由专用于地址空间的一部分的高速缓冲存储器驱动。根据本发明的方面,多端口启动器是多媒体引擎,例如3D(GPU)引擎、2D引擎、视频引擎、图像处理引擎或信号处理引擎。
来自相同引擎的多个端口的业务往往会具有良好页面局部性,尤其在于端口中的请求的分配是至少部分基于基于低地址位的交错而进行的情况下。在此情况下,长的连续突发将在端口中分裂,及STLB时延通过使用共享中间级别的转译高速缓冲存储器而明显减少。
图9中呈现根据本发明的各种方面的仿真环境。所述仿真环境通过计算机可执行指令来实施,通过计算机来运行。可使用许多类型的计算机,例如本地计算机或云计算机。所述仿真通过指令的执行的调用而开始。
根据本发明的方面,互连件9510是在仿真环境9520内仿真。互连件9510包括STLB9530。相同的仿真环境可用于没有STLB的互连件或用于包括TLB的互连件,例如互连件9510。这避免了集成用于互连件及单独STLB的单独仿真环境所需的较大复杂性及困难工作。
根据本发明的一些方面,仿真环境9520包括事务处理器、监视器、各种其它验证知识产权及记分板。记分板经设计以支持互连件。包含记分板的仿真环境可针对具有或不具有内部STLB的互连件再使用。所述仿真环境用例如Verilog或系统Verilog等寄存器转移级别语言来实施。
根据本发明的其它方面,所述仿真是性能仿真。仿真环境用例如SystemC等系统级别建模语言来实施。常见事务套接建模协议是开放性SystemC创始会(OSCI)事务级别建模(TLM)2.0标准。
图10展示包括发送请求到STLB 10120的DMA引擎10110的系统,在所述STLB中请求的虚拟地址经转译。DMA引擎的实例包含基于I/O的引擎(比如以太网、无线、USB、SATA控制器),而且包含多媒体引擎(比如相机图像信号处理引擎、视频引擎、2D及3D引擎)及加速器(比如TCP/IP及密码加速器)。DMA引擎10110及STLB 10120处于通信中。DMA引擎10110包括虚拟地址产生器10140,所述虚拟地址产生器产生将在请求中发送的虚拟地址的序列。根据本发明的一些方面,DMA引擎10110及STLB 10120为直接连接的。根据本发明的其它方面,DMA引擎10110及STLB 10120经由另一模块连接。对互连件10130进行后备存储请求。或者,例如下一级别高速缓冲存储器或后备存储DRAM控制器等目标可代替互连件10130。
STLB 10120高速缓存地址转译,且可经由查核行程机接口10160来发送用于不在高速缓冲存储器中的转译的转译请求。或者,查核行程机可与STLB集成,使其成为完整的SMMU。在此情况下,将连接转译表存储器接口来代替查核行程机接口10160。在此情况下,查核行程机接口10160或者可不存在,及将使页面表存储器请求直接发送到互连件10130。
STLB 10120由于用以执行转译查询及地址修改的逻辑而将适度的时延添加到DMA引擎10110所发送的全部请求。然而,当一请求在STLB 10120中未命中(即,对应于虚拟地址的页面转译在转译高速缓冲存储器中不存在)时,STLB 10120经过冗长的过程以检索来自页面表存储器的转译。这引起对具有TLB未命中的请求的显著延迟。
取决于请求流的排序约束及STLB 10120的缓冲能力,可能够同时处置多个未命中。然而,当其缓冲能力耗尽时,STLB 10120必须一次处理一个未命中,加上显著更多的请求时延。
简单的基于块的DMA引擎可具有良好的页面局部性。举例来说,对于4KB的常见页面大小,简单的基于块的DMA引擎可放置64个连续的64B请求。对页面的第一请求将未命中且延迟请求的发送。然而,当转译已被STLB接收时,其可针对以下63个请求而有效地再使用。当第一请求引发显著的时延损失时,以下各项可快速地通过,一旦转译已被接收,即产生显著但通常归因于STLB的存在而未损害整体性能的损失。性能损失取决于转译检索的时延及请求的速率。
然而,许多DMA引擎具有具有大量不良页面局部性的请求模式。举例来说,垂直地读取阵列的2D DMA引擎可发送每个请求到与先前页面不同的页面。如果所存取页面的数目大于可存储在TLB中的转译的数目,那么未命中可严重地损害性能。如果高速缓冲存储器足够大,那么当2D引擎提取下一列时,所述页面仍可处于高速缓冲存储器中,从而减少损失。
在微处理器内,请求的地址并不容易地预先计算。然而,许多DMA引擎在所提取的数据与其地址之间具有极少的相依性。此类DMA控制器可容易地产生预期请求的准确流。
此自然地通过使虚拟地址产生器与数据缓存器管理去耦来使用,使得虚拟地址产生器仅在数据管理运行出空间时或在许多所支持的未解决的请求到达时受限。可使用此特性来降低STLB未命中的性能损失。
图11展示含有DMA引擎11210的系统,DMA引擎11210连接到STLB 11220,STLB11220连接到目标10130。DMA引擎11210产生两个虚拟地址流。一个虚拟地址流是正常虚拟地址产生器11240所产生的正常虚拟地址流另一虚拟地址流是预取虚拟地址产生器11250所产生的预取虚拟地址的流,所述流类似于但在正常虚拟地址产生器11240所产生的虚拟地址流之前运行。
根据本发明的一些方面,预取虚拟地址产生器11250与正常虚拟地址产生器11240相同。根据本发明的其它方面,预取虚拟地址产生器11250与正常虚拟地址产生器11240共享某一逻辑。一些类型的可能共享逻辑为配置寄存器及状态机的部分。
根据本发明的一些方面,预取虚拟地址产生器11250发送稍后将由正常虚拟地址产生器11240发送的对应于每一正常请求的预取请求。根据本发明的其它方面,预取虚拟地址产生器11250避免请求具有属于已在先前或最近请求中存取的页面的冗余连续虚拟地址的预取。进行此的一个方法是将预取的导出流限制到仅请求对应于页面内的特定地址的地址。通常,其将为页面内的第一地址。
根据本发明的一些方面,根据在使用中的标准事务协议而合法地形成预取请求。一些标准事务协议为高级微控制器总线架构(AMBA)高级可扩展接口(AXI)及开放核心协议(OCP)。根据本发明的一些方面,而正常请求是用于完整的高速缓存行,预取请求是用于小的数据量,比如零字节或一个字节。零字节请求根据一些协议是不合法的,但可用作预取的指示。一个字节请求根据大多数协议是合法的,及可用作预取大小。一个字节请求(字节是数据请求的最小原子单元)具有确保所请求数据将不在例如页面大小对准范围的访问限制的界定地址范围或节拍之间的任何边界处交叉的益处。此外,一个字节请求恰好需要接口上的数据传送的一个循环。或者,可例如通过丢弃较低地址位而强迫输入请求页面对准。根据本发明的一些方面,预取请求必须不含有数据。根据本发明的一些方面,预取请求必须对准到某一边界,比如4KB。根据本发明的其它方面,预取请求采用并非协议所预期的特殊形式。根据本发明的一些方面,预取请求ID必须不同于正常请求的ID。根据本发明的一些方面,未决的预取请求必须全部具有不同的ID。根据本发明的一些方面,STLB接口将未决预取请求的数目限制为某一数目。未决预取请求的数目是动态的,意味着其可在制造芯片中改变,例如通过软件编程所述数目或通过软件而从可能数目的选项选择。
根据本发明的一些方面,STLB 11220接收来自DMA引擎11210的正常及预取请求流两者。根据本发明的一些方面,在不同的物理或虚拟请求信道上发送正常请求及预取请求。根据本发明的其它方面,在相同信道上发送正常请求及预取请求,及所述预取请求是STLB11220可识别的。
通过以下各项可识别的一些(但是未必全部)方式:
使用与每一请求一起发送的边带信号;
使用请求的ID;
使用请求的地址位;
使用为请求的部分的其它字段或字段的组合;及
使用与用于正常请求的端口分开的专用预取端口。
根据本发明的一些方面,预取虚拟地址产生器11250包含用以基于正常虚拟地址产生器11240的当前状态、DMA引擎11210内的缓冲器可用性、或预取虚拟地址产生器11250与STLB 11220的交互来发送请求的逻辑控制。
根据本发明的一些方面,预取虚拟地址产生器11250系留到正常虚拟地址产生器11240,使得其仅产生在正常虚拟地址产生器11240所产生的虚拟地址之前的N个虚拟地址的距离内的虚拟地址。通常用于计算此距离的正常地址是最新产生的正常地址。根据本发明的一些方面,所述系留是基于经过滤的预取虚拟地址流(即,其中如果请求满足某一准则,例如所述请求具有与另一最近请求相同的页面的地址,那么未产生预取虚拟地址),使得预取虚拟地址流仅产生在正常流之前M个经过滤虚拟地址的虚拟地址。此适用于控制预取流所请求的新页面的数目,以便避免使TLB高速缓冲存储器被大量预取颠簸。根据本发明的一些方面,N及M可经硬译码、可动态编程,或可为可能值的表的部分。
根据本发明的一些方面,STLB 11220支持其高速缓冲存储器及结构中的分配策略。通过限制系留N或M以确保不超过在STLB 11220中可用的分配资源,DMA引擎11210保证预取请求流利用可用资源且不干扰高速缓冲存储器或请求流的行为。
根据本发明的一些方面,STLB 11220使用对预取请求的响应作为指示高速缓存未命中已发生及已在STLB 11220中的跟踪结构中采用槽位的方式。具体来说,如果针对已在转译高速缓冲存储器中或已未决作为未命中的虚拟地址而接收到预取请求,那么STLB11220立刻返回响应。如果预取请求未命中及用于页面的查核行程机请求并非已未决,那么STLB 11220仅在由查核行程机返回转译时返回响应。根据本发明的一些方面,预取虚拟地址产生器11250可经编程以仅具有P个预取请求未决。结合返回对仅在已获得转译之后的未命中的响应的STLB 11220,预取虚拟地址产生器250确保其不发送比能够处置的请求多的请求给STLB 11220。其避免了来自STLB 11220的背压或STLB 11220的预取请求的丢弃,两者均是不需要的。根据本发明的一些方面,P可经硬译码、可动态编程,或为可能值的表的部分。
根据本发明的一些方面,STLB 11220还支持分配策略。一些分配策略适用于以下专利中描述的STLB预取:______申请且题为“具有基于请求的分配及预取的系统转译后备缓冲器(SYSTEM TRANSLATION LOOK-SIDE BUFFER WITH REQUEST-BASED ALLOCATION ANDPREFETCHING)”的第______号美国非临时专利申请案(024US1领域)以及2012年8月18日申请且题为“具有基于请求的分配及预取的系统转译后备缓冲器(SYSTEM TRANSLATIONLOOK-ASIDE BUFFER WITH REQUEST-BASED ALLOCATION AND PREFETCHING)”的第61/684705号美国临时申请案(代理人案号:024PRV领域),两案均以引用的方式全文并入本文中。使用所述分配策略,DMA引擎11210可在STLB 11220中保留特定数目个条目。通过将未解决的预取的数目限制到所述数目,DMA引擎11210确保其从未造成STLB 11220中的预取溢出。
根据本发明的一些方面,STLB 11220支持可选或可编程的分配策略。来自DMA引擎11210的预取请求包含应使用哪个分配策略STLB 11220的指示。
根据本发明的一些方面,DMA引擎11210含有多个正常虚拟地址产生器。预取虚拟地址产生器耦合到许多正常虚拟地址产生器以使其能够利用STLB预取。
TLB(比如任何高速缓冲存储器)具有逐出策略。所述逐出策略确定当从查核行程机提取新的转译时替换哪个存储转译。预取可用以使此逐出策略偏置。根据本发明的方面,TLB使用最近最少使用(LRU)替代策略,及预取具有“使用”条目转译的效应,因此降低其逐出的概率。
现参看图12的流程图。根据本发明的方面,预取请求流经系留。预取请求流与正常请求流相同,但比其提前。在产生虚拟地址流的过程的开始12300之后,DMA引擎产生正常虚拟地址12310。接着,且基于正常虚拟地址12310,DMA引擎产生预取虚拟地址12320。将预取虚拟地址直接或经由中间模块而发送到STLB 12330。在一些时间量后,所述时间理想地至少与STLB提取转译所花费的一样长,DMA直接或经由中间模块而发送正常虚拟地址到STLB12340。
“使用计数器”与每一转译条目相关联。“使用计数器”针对每一预取请求递增,及针对每一正常请求递减。非空使用计数器防止条目被逐出。未命中的预取请求需要逐出。如果所述逐出被阻止,那么预取请求停止。此机制依据STLB中可用的条目数目及请求流的局部性而自动地调整系留的长度。
例如旋转引擎的多维引擎采用2D表面且用颠倒的x-y坐标来写入。图13描绘存储器中的表面数据的阵列。源表面13110使其坐标颠倒以创建目的地表面13120。
根据本发明的方面,由下式给定基于其坐标的表面的每一像素的存储器地址:
Addr=BASE+y*WIDTH+x*PIX_SIZE
其中:
x及y是表面内像素的坐标;
BASE是表面的基地址;
WIDTH是行的开始与下一行的开始之间的距离(以字节计);及
PIX_SIZE是字节中像素的大小(通常2或4字节)。
根据本发明的其它方面,其它公式描述中存储器地址的像素的布置。
源表面13110及目的地表面13120不需要相同的参数(BASE、WIDTH、PIX_SIZE)。
关于常规多维引擎的问题在于,当一个表面可在相邻数据的递增地址中逐步调试时(除了可能在一行的末端处除外),另一表面必须在具有相对较大步长的地址中逐步调试。这展示于图14中,其中像素地址的映射为
源表面(0)=>目的地表面(0)
源表面(32)=>目的地表面(4)
源表面(64)=>目的地表面(8)
源表面(96)=>目的地表面(12)
源表面(128)=>目的地表面(16)
将目的地表面写入到相邻数据的递增地址中(其中PIX_SIZE=4字节),而在像素之间具有大的跳变的情况下读取SRC表面。
例如动态随机存取存储器(DRAM)等存储器(其中表面可在写入与读取代理之间共享)在存取小的数据单元时是无效的。在图14的实例中,目的地表面的写入可有效地进行,但源表面的读取不能。
此传统上在2步骤中解决:
(1)从较大块中的源表面提取
(2)将一些中间存储装置加到多维引擎上,使得来自大块提取的不需要的数据可保持足够的时间,而使得当多维引擎需要所述数据时其仍在中间存储装置中。
在图15中,多维引擎从连续像素群组(在实例中,2个群组)中的SRC进行读取。接着其使用一者由于直接写入到DST,而剩余部分临时存储。可选择所述块的宽度及高度以最大化DRAM的使用同时最小化所需要的缓冲器。
DRAM通常表现地最佳靠近64-256字节突发,因此矩形存取区域可在一侧上为16-128像素。为了降小缓冲,可减少矩形的一个维度。
当通过多维引擎存取地址时产生的另一问题为虚拟地址。
在虚拟寻址系统中,存储器由若干页面构成(典型大小是4KB)。虚拟地址(VA)到物理地址(PA)的映射往往是不规则的,使得在页面边界处交叉的在相邻VA处的像素可在物理寻址的存储器中分离较远。
将在芯片内旋转的表面可超过4KB的WIDTH及4B的PIX_SIZE。关于4KB的虚拟寻址的页面大小,这意味着表面中单行像素横跨一个以上页面。因此,一列内的像素并不在同一页面上。即使具有小于页面大小的WIDTH,一列中像素的页面局部性可足够低以引起归因于STLB未命中的实质性性能问题。
图16展示具有3200像素宽度及4B PIX_SIZE的表面16410。表面的每一行16420使用WIDTH=3200*4B=12.8kB。关于4KB页面,每一行使用3.125页面。第一列的像素在页面0、3、6、以此类推中。
在虚拟存储器系统中,多维引擎经由系统存储器管理单元(SMMU)连接到存储器。SMMU获取VA且将其转换为适合于存储器的PA。
根据本发明的方面,如图17中所示,多维引擎17510经由SMU 17520连接到存储器17530。SMMU 17520包括系统转译后备缓冲器(STLB)17522及查核行程机17524。STLB 17522知道最近的VA到PA转译。当用于所请求VA的转译不存在于STLB 17522中时,查核行程机17524计算或查询来自存储器中的转译表的转译。
查核行程机17524采用2到20个以上存储器存取来解决转译。2个存储器存取足够用于小的VA空间。20或20个以上的存储器存取是大的VA空间(例如,用64位表示的那些)以及“嵌套分页”(归因于虚拟化的额外层)所需要的。
因此,查核行程机17524在垂直方向上遍历表面410的期间所产生的存储器存取业务远超过存取像素本身的业务,且归因于STLB未命中的停止的持续时间可大大减少输送量。因此,高速缓存STLB 17522中的转译是重要的。
在STLB中高速缓存的条目的适当数目是表面的垂直遍历所触摸的页面的数目。当像素的行所使用的存储器超过VA页面大小时,应针对表面中的每一行高速缓存一个条目。
将STLB大小设计为等于存取区域的高度的条目数目仍存在问题:
(A)当行存取到达新页面时,旋转读取及写入的流中断(有时达较长的时间周期),从而引起STLB未命中。
(B)对于良好对准的表面,例如WIDTH是整数数目个页面的表面,每次行存取到达新页面时针对全部行背靠背地发生STLB未命中。此产生来自SMMU查核行程机的业务的大突发,从而延迟像素业务达较长时间。
根据本发明的方面,转译预取机制结合STLB使用以减小或消除归因于STLB未命中的延迟。STLB接收来自多维引擎(或另一协调代理)的预取命令,以触发查核行程机提取预测其近期使用的转译。查核行程机将新的转译放置在STLB中,使得其可提前可用或在所述转译被多维引擎请求之后的减少时间量中可用。
图18展示根据本发明的一些方面的经由SMMU 18620连接到存储器17530的多维引擎18610。多维引擎18610经由物理信道18640进行数据请求及经由物理信道18650进行预取请求。根据本发明的其它方面,像素请求及预取请求在共享物理信道上发送,且通过所述请求的属性(例如,位或命令类型或保留的请求大小)来区分。
根据本发明的一些方面,如图19(a)中所示,多维引擎18610包括产生存取存储器中的像素所需的地址的地址产生器19720。复制地址产生器19720而使得启用每一产生器以产生相同的地址流,但将较早产生所述地址流作为信道18650上的预取请求及将稍后产生作为信道18640上的数据请求。
根据本发明的其它方面,如图19(b)中所示,多维引擎19710包括地址产生器19730,所述地址产生器在产生对地址的数据请求之前产生对相同地址的预取请求的高级流。
根据本发明的另一方面,预取产生器被约束保持在规则流的地址的某一范围内。
根据本发明的另一方面,所述距离是一个页面,使得对于经存取的任一行,用于将遭遇的下一页面(但非随后的一者)的转译可经预取。
根据本发明的其它方面,取决于覆盖预取请求的查核行程时间所需的缓冲及时延,可将所述距离设定为小于页面或大于页面。
现参看图20,根据本发明的方面,表面20800具有数据的行,一行包括数据的3.125个页面。表面20800一次存取八行,其中顺序存取是向右数据。原始预取地址流与稍后将由规则流存取一页地址的全部地址一起。在特定时间,针对列20810中的数据发送数据请求。针对预取请求列20820中的数据发送原始预取流。
原始流经过滤以每个页面仅发送一个预取。具体来说,如果地址并未在页面边界上完全对准,那么所述地址将被滤出。因此,在存取先前页面的最后数据元素之后立刻发送下一页面的预取,且需要恰好可用于每行两个转译。
在表面20800的右边缘,数据存取列包覆到下一八行群组的开始,从表面的左边缘20830开始。在包覆后,每一存取将引起转译未命中。根据本发明的另一方面,发送对应于左边缘20830的地址的预取请求,不管一些(大多数)地址并未完全对准到页面边界的事实。此对应于当存取区域的开始边缘上的数据并未对准到页面边界时用于待传送的新存取区域的开始条件。
根据本发明的一些方面,预取业务是有限的,使得其并未使查核行程机或存储器系统爆满。也就是说,多维引擎基于其状态而丢弃或延迟预取请求的发布。基于预取请求的带宽、未解决的预取请求的当前数目及最大时延等等,限制是可能的。
根据本发明的一些方面,当预取窗限于一个页面的宽度时将STLB设定大小为等于提取存取区域的高度两倍的许多转译。这是因为整个预取窗可每行仅含有两个页面(当前、下一)。
根据本发明的其它方面,对于系统所支持的最大页面大小,将STLB设定大小为等于1+(预取窗宽度/页面大小)的许多转译。
这些设置在稳定状态下是最优的(即当预取窗并未触摸表面的边缘时)。然而,当预取窗处于开始边缘或跨越存取区域时,在页面中存在不连续性以进行预取,这是因为新的存取区域通常使用完全不同的页面。
根据本发明的一些方面,将STLB设定大小为3倍的提取高度(用于页面宽的预取窗)或2+(预取窗大小/页面大小)倍的提取高度(用于其它大小)。这允许预取窗覆盖2个不同存取区域,其中在预取中无中断。
在未对准情况下,还在存取区域右边的先前行上使用在提取存取区域的左边的部分使用页面。在足够宽的表面上,当预取窗大小到达存取区域的右侧且因此页面必须再次预取时,所述页面将在TLB中替换。增加原始预取流过滤器大小或加上特殊逻辑可使得重复提取不必要。
根据本发明的一些方面,将STLB设定大小为3倍的提取高度(用于页面宽的预取窗)或2+(预取窗大小/页面大小)倍的提取高度(用于其它大小),及TLB经过滤以在存取区域的开始固定页面条目直到到达存取区域的结束为止。
如所属领域的技术人员在阅读本发明之后将显而易见,本文中所描述及说明的方面中的每一者具有离散组分及特征,所述特征可在并不脱离本发明的范围或精神的情况下容易地与用以形成实施例的特征及方面分离或与其组合。任何所引述方法均可以所引述事件的顺序或以逻辑上可能的任何其它顺序来进行。
除非另外规定,否则本文所使用的所有技术及科学术语都具有与本发明所属领域的正常技术人员通常所理解的相同的含义。尽管类似或等效于本文所描述的方法及和材料的任何方法及材料还可用于本发明的实践或测试,但现在描述了代表性的说明性方法及材料。
本说明书中所引用的所有公开案及专利都以引用的方式并入本文中,就如同特定地且个别地指示每一个别公开案或专利以引用的方式并入一般,且以引用的方式并入本文中以结合所引用的公开案来揭示及描述方法及/或系统。对任何公开案的引用是关于其在申请日之前的揭示内容,且不应理解为承认本发明未被授权凭借先前发明将此类公开案的日期提前。另外,所提供的公开案的日期可不同于可需要独立确认的实际公开案日期。
另外,希望此类等效物包含当前已知等效物及未来开发等效物两者,即,不管结构如何,执行相同功能的任何所开发元件。因此,本发明的范围并不意图限于本文中所展示及描述的示范性实施例。
根据本发明的教示,计算机及计算装置为制品。制品的其它实例包含:驻留在母板上的电子组件、服务器、主计算机、或各自具有一或多个处理器(例如,中央处理单元、图形处理单元或微处理器)的其它专用计算机,所述处理器经配置以执行计算机可读程序代码(例如,算法、硬件、固件及/或软件)以接收数据、发射数据、存储数据或执行方法。
制品(例如,计算机或计算装置)包含包含一连串指令(例如,其中编码的计算机可读程序步长或代码)的非暂时性计算机可读媒体或存储装置。在本发明的某些方面,非暂时性计算机可读媒体包含一或多个数据存储库。因此,在根据本发明的任何方面的某些实施例中,计算机可读程序代码(或代码)在计算装置的非暂时性计算机可读媒体中编码。处理器继而执行计算机可读程序代码以使用工具来创建或修正现有计算机辅助设计。在实施例的其它方面中,计算机辅助设计的创建或修正经实施为基于web的软件应用程序,其中与计算机辅助设计或工具或计算机可读程序代码相关的数据的部分经接收或发射到主机的计算装置。
根据本发明的各种方面的制品或系统以多种方式来实施:具有一或多个不同的处理器或微处理器、易失性及/或非易失性存储器及外围装置或外围控制器;具有集成微控制器,其具有处理器、本地易失性及非易失性存储器、外围装置及输入/输出插脚;离散逻辑,其实施制品或系统的固定版本;及可编程逻辑,其实施可经由本地或远程接口而重新编程的制品或系统的版本。此类逻辑可以逻辑方式或经由软处理器执行的命令集合来实施控制系统。
因此,上文仅说明本发明的各种方面及原理。将了解,所属领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或展示所述布置,但其体现本发明的原理且包含于其精神及范围内。此外,本文中所引述的所有实例及条件性语言主要意图辅助读者理解本发明的原理,及由发明人所提供的概念以深化所属领域,且应将其视为并不限制此类特定所引述实例及条件。此外,引述本发明的原理、方面及实施例以及其特定实例的所有本文中陈述都意图涵盖其结构上及功能上的等效物。另外,希望此类等效物包含当前已知等效物及未来开发等效物两者,即,不管结构如何,执行相同功能的任何所开发元件。因此,本发明的范围并不意图限于本文中所论述及描述的各种方面。实情为,由所附权利要求书体现本发明的范围及精神。
Claims (37)
1.一种系统转译后备缓冲器,其包括:
转译表,其存储地址转译;
输入端口,其经启用以接收来自启动器的输入请求;
输出端口,其经启用以发送对应于所述输入请求的输出请求;及
预取请求终端逻辑,
其中如果所述输入请求是预取,那么所述预取请求终端逻辑启用以自动对所述预取进行响应而所述输出端口不发送输出请求,
其中如果所述输入请求与所述转译表中的条目匹配,则所述转译表返回经转译地址,
其中地址字段被修改以使用所述经转译地址,
其中由从所述转译表获得的所述经转译地址代替所述地址字段的至少一些位,且
其中由所述经转译地址代替的所述地址字段的位的数目从与所述转译表中的所述条目相对应的页面大小导出。
2.根据权利要求1所述的系统转译后备缓冲器,其进一步包括专用于接收预取请求的预取端口。
3.根据权利要求1所述的系统转译后备缓冲器,其进一步包括指示所述输入请求是否是预取的边带信号。
4.根据权利要求1所述的系统转译后备缓冲器,其中所述输入请求包括指示值的ID,所述值指示所述输入请求是否是预取。
5.根据权利要求1所述的系统转译后备缓冲器,其中所述输入请求包括地址,所述地址指示所述输入请求是否是预取。
6.根据权利要求1所述的系统转译后备缓冲器,其中所述输入请求按照标准事务协议来进行而无论其是否是预取。
7.根据权利要求1所述的系统转译后备缓冲器,其中所述输入请求包括指示所述输入请求所请求的数据的数量的大小,且其中所述大小可指示小于完整高速缓存行的大小的数据的数量。
8.根据权利要求7所述的系统转译后备缓冲器,其中所述大小是零。
9.根据权利要求7所述的系统转译后备缓冲器,其中所述大小是一个字节。
10.根据权利要求1所述的系统转译后备缓冲器,其中所述输入请求是页面对准的。
11.根据权利要求1所述的系统转译后备缓冲器,其中所述转译表是集合关联的。
12.根据权利要求11所述的系统转译后备缓冲器,其中所述转译表包括静态随机存取存储器阵列。
13.根据权利要求1所述的系统转译后备缓冲器,其进一步包括第二转译表。
14.根据权利要求1所述的系统转译后备缓冲器,其进一步包括经布置以使用第一替代策略或第二替代策略中的任一者的分配逻辑。
15.根据权利要求14所述的系统转译后备缓冲器,其中所述所使用的替代策略可在运行中改变。
16.根据权利要求14所述的系统转译后备缓冲器,其中用于给定请求的所述替代策略是基于所述输入请求的属性。
17.根据权利要求1所述的系统转译后备缓冲器,其中所述转译表包括第一群组及第二群组。
18.根据权利要求17所述的系统转译后备缓冲器,其进一步包括确定所述第一群组中是否允许分配的可配置寄存器阵列。
19.根据权利要求17所述的系统转译后备缓冲器,其进一步包括确定所述第一群组中是否允许分配的可编程寄存器阵列。
20.根据权利要求17所述的系统转译后备缓冲器,其中所述输入请求的属性确定所述输入请求是否在所述第一群组中分配条目。
21.根据权利要求20所述的系统转译后备缓冲器,其中所述属性是所述输入请求的源的指示。
22.根据权利要求20所述的系统转译后备缓冲器,其中所述属性是识别符。
23.根据权利要求20所述的系统转译后备缓冲器,其中所述属性是边带。
24.根据权利要求1所述的系统转译后备缓冲器,其中:
所述输入请求包括输入请求类别;及
所述转译表包括多个转译表条目,所述条目中的每一者包括条目类别。
25.根据权利要求24所述的系统转译后备缓冲器,其中如果具有匹配所述输入请求类别的条目类别的转译表条目的数目超过最大数目,那么所述系统转译后备缓冲器替换具有匹配所述输入请求类别的条目类别的转译表条目。
26.根据权利要求24所述的系统转译后备缓冲器,其中如果具有特定条目类别的转译表条目的数目降到最小数目,那么具有所述特定条目类别的转译表条目无资格替换。
27.根据权利要求1所述的系统转译后备缓冲器,其进一步包括用于发送外部转译请求的查核行程机端口,
所述输入请求包括地址,
其中如果所述转译表指示未命中,那么所述系统转译后备缓冲器发送外部转译请求。
28.根据权利要求27所述的系统转译后备缓冲器,其进一步包括外部转译请求类型,
其中所述外部转译请求类型指示所述输入请求是否是预取。
29.根据权利要求27所述的系统转译后备缓冲器,其中当未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被临时阻止。
30.根据权利要求27所述的系统转译后备缓冲器,其中当归因于预取的未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被临时阻止。
31.根据权利要求27所述的系统转译后备缓冲器,其中当归因于预取的未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被丢弃。
32.根据权利要求27所述的系统转译后备缓冲器,其中:
所述转译表包括第一群组及第二群组;及
当针对所述第一群组的未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被临时阻止。
33.根据权利要求27所述的系统转译后备缓冲器,其中:
所述输入请求包括类别;
所述类别与所述外部转译请求相关联;及
当所述类别的未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被临时阻止。
34.一种系统存储器管理单元,其包括:
查核行程机;
系统转译后备缓冲器,其包括:
转译表,其存储地址转译;
输入端口,其经启用以接收来自启动器的输入请求,所述输入请求包括地址,其中如果所述转译表指示未命中,那么所述缓冲器发送外部转译请求;
输出端口,其经启用以发送对应于所述输入请求的输出请求;及
预取请求终端逻辑,
其中如果所述输入请求是预取,那么所述预取请求终端逻辑启用以自动对所述预取进行响应而所述输出端口不发送输出请求,
其中如果所述输入请求与所述转译表中的条目匹配,则所述转译表返回经转译地址,
其中地址字段被修改以使用所述经转译地址,
其中由从所述转译表获得的所述经转译地址代替所述地址字段的至少一些位,且
其中由所述经转译地址代替的所述地址字段的位的数目从与所述转译表中的所述条目相对应的页面大小导出,且
其中所述系统转译后备缓冲器与所述查核行程机耦合。
35.根据权利要求34所述的系统存储器管理单元,其进一步包括指示所述输入请求是否是预取的外部转译请求类型。
36.根据权利要求35所述的系统存储器管理单元,其中当所述外部转译请求类型指示所述输入请求是预取时,防止所述系统存储器管理单元产生副作用。
37.一种互连件,其包括:
启动器;
目标;
查核行程机;
系统转译后备缓冲器,其包括:
转译表,其存储地址转译;
输入端口,其经启用以接收来自启动器的输入请求,所述输入请求包括地址,
其中如果所述转译表指示未命中,则所述缓冲器发送外部转译请求;
输出端口,其经启用以发送对应于所述输入请求的输出请求;
预取请求终端逻辑,
其中如果所述输入请求是预取,那么所述预取请求终端逻辑启用以自动对所述预取进行响应而所述输出端口不发送输出请求,
其中如果所述输入请求与所述转译表中的条目匹配,则所述转译表返回经转译地址,
其中地址字段被修改以使用所述经转译地址,
其中由从所述转译表获得的所述经转译地址代替所述地址字段的至少一些位,且
其中由所述经转译地址代替的所述地址字段的位的数目从与所述转译表中的所述条目相对应的页面大小导出;及
查核行程机端口,其用于发送外部转译请求,其中当归因于预取的未决外部转译请求的数目到达限值时,所述外部转译请求的所述发送被丢弃,及
所述系统转译后备缓冲器的所述输入端口可由所述启动器存取,所述目标可由所述系统转译后备缓冲器的所述输出端口存取,及所述查核行程机可由所述系统转译后备缓冲器的所述查核行程机端口存取。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261684705P | 2012-08-18 | 2012-08-18 | |
US61/684,705 | 2012-08-18 | ||
PCT/US2013/055451 WO2014031495A2 (en) | 2012-08-18 | 2013-08-16 | System translation look-aside buffer with request-based allocation and prefetching |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104583976A CN104583976A (zh) | 2015-04-29 |
CN104583976B true CN104583976B (zh) | 2017-10-17 |
Family
ID=50100918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380043416.5A Active CN104583976B (zh) | 2012-08-18 | 2013-08-16 | 具有预取的转译后备缓冲器 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9396130B2 (zh) |
EP (1) | EP2885713A4 (zh) |
KR (2) | KR101667772B1 (zh) |
CN (1) | CN104583976B (zh) |
WO (1) | WO2014031495A2 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013095601A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction for element offset calculation in a multi-dimensional array |
US9489196B2 (en) | 2011-12-23 | 2016-11-08 | Intel Corporation | Multi-element instruction with different read and write masks |
US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
US9390018B2 (en) * | 2012-08-17 | 2016-07-12 | Advanced Micro Devices, Inc. | Data cache prefetch hints |
CN104583976B (zh) | 2012-08-18 | 2017-10-17 | 高通科技公司 | 具有预取的转译后备缓冲器 |
US10489295B2 (en) * | 2012-10-08 | 2019-11-26 | Sandisk Technologies Llc | Systems and methods for managing cache pre-fetch |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9904626B2 (en) | 2014-08-29 | 2018-02-27 | Samsung Electronics Co., Ltd. | Semiconductor device, semiconductor system and system on chip |
US9996350B2 (en) | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
GB2536201B (en) * | 2015-03-02 | 2021-08-18 | Advanced Risc Mach Ltd | Handling address translation requests |
US10037280B2 (en) | 2015-05-29 | 2018-07-31 | Qualcomm Incorporated | Speculative pre-fetch of translations for a memory management unit (MMU) |
US10191963B2 (en) * | 2015-05-29 | 2019-01-29 | Oracle International Corporation | Prefetching analytic results across multiple levels of data |
US10528421B2 (en) * | 2015-12-29 | 2020-01-07 | Arteris, Inc. | Protection scheme conversion |
US10866854B2 (en) | 2015-12-29 | 2020-12-15 | Arteris, Inc. | System and method for reducing ECC overhead and memory access bandwidth |
US10402332B2 (en) * | 2016-05-24 | 2019-09-03 | Xilinx, Inc. | Memory pre-fetch for virtual memory |
US10552338B2 (en) * | 2017-02-21 | 2020-02-04 | Arm Limited | Technique for efficient utilisation of an address translation cache |
US10417140B2 (en) * | 2017-02-24 | 2019-09-17 | Advanced Micro Devices, Inc. | Streaming translation lookaside buffer |
CN107370578B (zh) * | 2017-06-15 | 2020-11-06 | 西安微电子技术研究所 | 一种基于硬件快速自主切换的多冗余以太网控制器 |
CN109144898B (zh) * | 2017-06-19 | 2023-02-17 | 深圳市中兴微电子技术有限公司 | 一种系统内存管理装置和系统内存管理方法 |
US10649912B2 (en) | 2017-07-14 | 2020-05-12 | International Business Machines Corporation | Method and apparatus for an efficient TLB lookup |
US10877839B2 (en) | 2017-09-22 | 2020-12-29 | Arteris, Inc. | Recovery of a coherent system in the presence of an uncorrectable error |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US11288187B2 (en) * | 2018-03-28 | 2022-03-29 | SK Hynix Inc. | Addressing switch solution |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
GB2574270B (en) * | 2018-06-01 | 2020-09-09 | Advanced Risc Mach Ltd | Speculation-restricted memory region type |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
CN108959125B (zh) * | 2018-07-03 | 2021-08-06 | 中国人民解放军国防科技大学 | 一种支持数据快速获取的存储访问方法和装置 |
CN110941565B (zh) * | 2018-09-25 | 2022-04-15 | 北京算能科技有限公司 | 用于芯片存储访问的内存管理方法和装置 |
CN109669832A (zh) * | 2018-12-11 | 2019-04-23 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向gpu芯片图形管线单元性能验证方法及平台 |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
CN111177948A (zh) * | 2020-01-15 | 2020-05-19 | 东方红卫星移动通信有限公司 | 一种利用轨道要素进行描述的典型Walker星座数学模型 |
US20210406199A1 (en) * | 2020-06-25 | 2021-12-30 | Intel Corporation | Secure address translation services using cryptographically protected host physical addresses |
WO2022133716A1 (en) * | 2020-12-22 | 2022-06-30 | Intel Corporation | Processor circuitry to execute an input-output translate virtual address instruction |
US20220197821A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Device, system and method for selectively dropping software prefetch instructions |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200951980A (en) * | 2008-04-30 | 2009-12-16 | Advanced Micro Devices Inc | Translation data prefetch in an IOMMU |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4525780A (en) | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
US4914577A (en) * | 1987-07-16 | 1990-04-03 | Icon International, Inc. | Dynamic memory management system and method |
EP0495167A3 (en) | 1991-01-16 | 1996-03-06 | Ibm | Multiple asynchronous request handling |
US5333291A (en) * | 1991-06-14 | 1994-07-26 | International Business Machines Corporation | Stride enhancer for high speed memory accesses with line fetching mode and normal mode employing boundary crossing determination |
US5440710A (en) | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5752274A (en) | 1994-11-08 | 1998-05-12 | Cyrix Corporation | Address translation unit employing a victim TLB |
US5694567A (en) * | 1995-02-09 | 1997-12-02 | Integrated Device Technology, Inc. | Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5701448A (en) * | 1995-12-15 | 1997-12-23 | Cyrix Corporation | Detecting segment limit violations for branch target when the branch unit does not supply the linear address |
US6735688B1 (en) * | 1996-11-13 | 2004-05-11 | Intel Corporation | Processor having replay architecture with fast and slow replay paths |
US6195735B1 (en) * | 1996-12-31 | 2001-02-27 | Texas Instruments Incorporated | Prefetch circuity for prefetching variable size data |
US6065113A (en) * | 1997-03-07 | 2000-05-16 | Texas Instruments Incorporated | Circuits, systems, and methods for uniquely identifying a microprocessor at the instruction set level employing one-time programmable register |
US6289138B1 (en) | 1997-04-30 | 2001-09-11 | Canon Kabushiki Kaisha | General image processor |
US6212603B1 (en) | 1998-04-09 | 2001-04-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory |
US6574698B1 (en) | 1998-04-17 | 2003-06-03 | International Business Machines Corporation | Method and system for accessing a cache memory within a data processing system |
US6311260B1 (en) | 1999-02-25 | 2001-10-30 | Nec Research Institute, Inc. | Method for perfetching structured data |
US6389514B1 (en) * | 1999-03-25 | 2002-05-14 | Hewlett-Packard Company | Method and computer system for speculatively closing pages in memory |
US6629207B1 (en) * | 1999-10-01 | 2003-09-30 | Hitachi, Ltd. | Method for loading instructions or data into a locked way of a cache memory |
US6560664B1 (en) * | 2000-02-18 | 2003-05-06 | Hewlett Packard Development Company, L.P. | Method and apparatus for translation lookaside buffers to access a common hardware page walker |
US7124376B2 (en) | 2000-05-02 | 2006-10-17 | Palmchip Corporation | Design tool for systems-on-a-chip |
DE60238519D1 (de) | 2001-01-12 | 2011-01-20 | Nxp Bv | Einheit und verfahren zur speicheradressenübersetzung und bildverarbeitungsvorrichtung mit einer solchen einheit |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
US6675280B2 (en) | 2001-11-30 | 2004-01-06 | Intel Corporation | Method and apparatus for identifying candidate virtual addresses in a content-aware prefetcher |
US7260704B2 (en) | 2001-11-30 | 2007-08-21 | Intel Corporation | Method and apparatus for reinforcing a prefetch chain |
US7099318B2 (en) * | 2001-12-28 | 2006-08-29 | Intel Corporation | Communicating message request transaction types between agents in a computer system using multiple message groups |
US6775747B2 (en) | 2002-01-03 | 2004-08-10 | Intel Corporation | System and method for performing page table walks on speculative software prefetch operations |
US6804741B2 (en) * | 2002-01-16 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Coherent memory mapping tables for host I/O bridge |
US7631106B2 (en) * | 2002-08-15 | 2009-12-08 | Mellanox Technologies Ltd. | Prefetching of receive queue descriptors |
US20040176942A1 (en) | 2003-03-04 | 2004-09-09 | International Business Machines Corporation | Method, system and program product for behavioral simulation(s) of a network adapter within a computing node or across multiple nodes of a distributed computing environment |
US7614015B2 (en) * | 2003-04-09 | 2009-11-03 | Microsoft Corporation | Method and system for representing group policy object topology and relationships |
US6985970B2 (en) | 2003-04-25 | 2006-01-10 | International Business Machines Corporation | Data transfer with implicit notification |
US7143225B1 (en) * | 2003-04-29 | 2006-11-28 | Advanced Micro Devices, Inc. | Apparatus and method for viewing data processor bus transactions on address pins during memory idle cycles |
WO2004104841A1 (ja) * | 2003-05-21 | 2004-12-02 | Fujitsu Limited | アドレス変換バッファの電力制御方法及びその装置 |
US7177985B1 (en) | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7260685B2 (en) | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
US7269708B2 (en) * | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
EP1589433A1 (en) | 2004-04-20 | 2005-10-26 | Ecole Polytechnique Federale De Lausanne | Virtual memory window with dynamic prefetching support |
US7406613B2 (en) * | 2004-12-02 | 2008-07-29 | Qualcomm Incorporated | Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions |
US7330940B2 (en) | 2005-02-02 | 2008-02-12 | Hewlett-Packard Development Company, L.P. | Method and system for cache utilization by limiting prefetch requests |
US7861095B2 (en) * | 2005-02-15 | 2010-12-28 | Arm Limited | Data processing apparatus security |
US20070067505A1 (en) * | 2005-09-22 | 2007-03-22 | Kaniyur Narayanan G | Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware |
US7532676B2 (en) | 2005-10-20 | 2009-05-12 | Trellis Phase Communications, Lp | Single sideband and quadrature multiplexed continuous phase modulation |
JP4160589B2 (ja) | 2005-10-31 | 2008-10-01 | 富士通株式会社 | 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法 |
WO2007079192A2 (en) | 2005-12-30 | 2007-07-12 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US8447837B2 (en) | 2005-12-30 | 2013-05-21 | Akamai Technologies, Inc. | Site acceleration with content prefetching enabled through customer-specific configurations |
US8095931B1 (en) | 2006-04-27 | 2012-01-10 | Vmware, Inc. | Controlling memory conditions in a virtual machine |
US20080028181A1 (en) * | 2006-07-31 | 2008-01-31 | Nvidia Corporation | Dedicated mechanism for page mapping in a gpu |
US7702888B2 (en) | 2007-02-28 | 2010-04-20 | Globalfoundries Inc. | Branch predictor directed prefetch |
JP4608011B2 (ja) | 2007-06-19 | 2011-01-05 | 富士通株式会社 | 演算処理装置および演算処理方法 |
JP4692678B2 (ja) * | 2007-06-19 | 2011-06-01 | 富士通株式会社 | 情報処理装置 |
US8244979B2 (en) * | 2007-07-13 | 2012-08-14 | International Business Machines Corporation | System and method for cache-locking mechanism using translation table attributes for replacement class ID determination |
US8417920B2 (en) * | 2007-12-21 | 2013-04-09 | Arm Limited | Management of speculative transactions |
US8250307B2 (en) | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Sourcing differing amounts of prefetch data in response to data prefetch requests |
CN101939733A (zh) | 2008-02-08 | 2011-01-05 | 松下电器产业株式会社 | 外部设备存取装置、其控制方法及系统大规模集成电路 |
US8387067B2 (en) | 2008-03-14 | 2013-02-26 | Lsi Corporation | Method for tracking and/or verifying message passing in a simulation environment |
US8117420B2 (en) * | 2008-08-07 | 2012-02-14 | Qualcomm Incorporated | Buffer management structure with selective flush |
US8131947B2 (en) * | 2008-08-29 | 2012-03-06 | Freescale Semiconductor, Inc. | Cache snoop limiting within a multiple master data processing system |
US8347037B2 (en) | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
US7930519B2 (en) | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
US8275598B2 (en) | 2009-03-02 | 2012-09-25 | International Business Machines Corporation | Software table walk during test verification of a simulated densely threaded network on a chip |
US9336145B2 (en) * | 2009-04-09 | 2016-05-10 | International Business Machines Corporation | Techniques for cache injection in a processor system based on a shared state |
US8533437B2 (en) | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8397049B2 (en) * | 2009-07-13 | 2013-03-12 | Apple Inc. | TLB prefetching |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US9519947B2 (en) | 2009-09-25 | 2016-12-13 | Nvidia Corporation | Architecture and instructions for accessing multi-dimensional formatted surface memory |
US20110145542A1 (en) | 2009-12-15 | 2011-06-16 | Qualcomm Incorporated | Apparatuses, Systems, and Methods for Reducing Translation Lookaside Buffer (TLB) Lookups |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8429378B2 (en) | 2010-07-06 | 2013-04-23 | Qualcomm Incorporated | System and method to manage a translation lookaside buffer |
US8583894B2 (en) * | 2010-09-09 | 2013-11-12 | Advanced Micro Devices | Hybrid prefetch method and apparatus |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US8527684B2 (en) | 2010-11-12 | 2013-09-03 | Lsi Corporation | Closed loop dynamic interconnect bus allocation method and architecture for a multi layer SoC |
US8405668B2 (en) * | 2010-11-19 | 2013-03-26 | Apple Inc. | Streaming translation in display pipe |
US9378150B2 (en) | 2012-02-28 | 2016-06-28 | Apple Inc. | Memory management unit with prefetch ability |
US9116815B2 (en) | 2012-06-20 | 2015-08-25 | Advanced Micro Devices, Inc. | Data cache prefetch throttle |
CN104583976B (zh) | 2012-08-18 | 2017-10-17 | 高通科技公司 | 具有预取的转译后备缓冲器 |
US9569361B2 (en) * | 2014-01-10 | 2017-02-14 | Samsung Electronics Co., Ltd. | Pre-fetch chaining |
-
2013
- 2013-08-16 CN CN201380043416.5A patent/CN104583976B/zh active Active
- 2013-08-16 US US13/969,451 patent/US9396130B2/en active Active
- 2013-08-16 EP EP13830550.3A patent/EP2885713A4/en not_active Withdrawn
- 2013-08-16 KR KR1020157006634A patent/KR101667772B1/ko active IP Right Grant
- 2013-08-16 KR KR1020167028407A patent/KR20160122278A/ko not_active Application Discontinuation
- 2013-08-16 US US13/969,425 patent/US9141556B2/en not_active Expired - Fee Related
- 2013-08-16 WO PCT/US2013/055451 patent/WO2014031495A2/en active Application Filing
- 2013-08-17 US US13/969,562 patent/US9852081B2/en active Active
- 2013-08-17 US US13/969,559 patent/US9465749B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200951980A (en) * | 2008-04-30 | 2009-12-16 | Advanced Micro Devices Inc | Translation data prefetch in an IOMMU |
Also Published As
Publication number | Publication date |
---|---|
KR20150046130A (ko) | 2015-04-29 |
EP2885713A4 (en) | 2016-03-23 |
US9465749B2 (en) | 2016-10-11 |
WO2014031495A3 (en) | 2014-07-17 |
US20140052955A1 (en) | 2014-02-20 |
US20140052919A1 (en) | 2014-02-20 |
US20140052956A1 (en) | 2014-02-20 |
EP2885713A2 (en) | 2015-06-24 |
WO2014031495A2 (en) | 2014-02-27 |
US9396130B2 (en) | 2016-07-19 |
US9141556B2 (en) | 2015-09-22 |
KR101667772B1 (ko) | 2016-10-19 |
CN104583976A (zh) | 2015-04-29 |
US20140052954A1 (en) | 2014-02-20 |
US9852081B2 (en) | 2017-12-26 |
KR20160122278A (ko) | 2016-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104583976B (zh) | 具有预取的转译后备缓冲器 | |
US10802987B2 (en) | Computer processor employing cache memory storing backless cache lines | |
TWI646421B (zh) | 轉譯後備緩衝器無效抑制 | |
US8593474B2 (en) | Method and system for symmetric allocation for a shared L2 mapping cache | |
US9563568B2 (en) | Hierarchical cache structure and handling thereof | |
US8335908B2 (en) | Data processing apparatus for storing address translations | |
US11762683B2 (en) | Merging data for write allocate | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
US10467140B2 (en) | Apparatus having main TLB and local TLBS, and configured to set selected size for new entry allocated to local TLB to a default size | |
CN107771322A (zh) | 可编程集成电路中存储器资源的管理 | |
TW201617896A (zh) | 過濾轉譯後備緩衝區無效 | |
US7685372B1 (en) | Transparent level 2 cache controller | |
CN115098410A (zh) | 处理器、用于处理器的数据处理方法及电子设备 | |
US20150121012A1 (en) | Method and apparatus for providing dedicated entries in a content addressable memory to facilitate real-time clients | |
Sahoo et al. | ReDRAM: A reconfigurable DRAM cache for GPGPUs | |
Bhattacharjee et al. | Advanced VM Hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |