高速缓冲存储器系统中的地址转换和数据预取的制作方法

文档序号:14033689阅读:222来源:国知局
高速缓冲存储器系统中的地址转换和数据预取的制作方法



背景技术:

片上系统(soc)通常包括诸如中央处理单元(cpu)和内核之类的一个或多个处理设备、以及一个或多个存储器和诸如总线之类的一个或多个互连。处理设备可以发出数据存取请求以从系统存储器读取数据或者将数据写入系统存储器。例如,响应于读取存取请求,从系统存储器中取回数据,并经由一个或多个互连将其提供给请求设备。在请求发出的时间和请求的数据到达请求设备之间的时间延迟通常称为“延时”。内核和其他处理设备对存取系统存储器中的数据进行竞争,并经历不同量的延时。

高速缓冲是可以用来减少延时的技术。被预测为将受到频繁或者高优先级存取的数据可以被存储在高速缓冲存储器中,与从系统存储器提供的延时相比,从高速缓冲存储器提供数据可以具有更低的延时。由于通常采用的高速缓冲方法在本质上是预测性的,因此如果请求的数据可以从高速缓冲存储器中取回,则存取请求可以使得高速缓冲命中,或者如果请求的数据不能从高速缓冲存储器中取回,则使得高速缓冲未命中。如果发生高速缓冲未命中,则必须以延时增加为代价,从系统存储器而不是高速缓冲中取回数据。可以从高速缓冲存储器而不是系统存储器提供的请求越多,则系统总体执行的速度就越快。

虽然高速缓冲通常用于减少延时,但在过于频繁的请求的数据无法从高速缓冲存储器中取回的情况下,高速缓冲有可能增加延时。已知显示系统容易由于延时而发生故障。“下溢”更多指的是数据到达显示系统的速度太慢以至于无法以预期的方式填充显示器的故障。

尝试缓解显示系统中的上述问题的一种已知解决方案是增加显示器和相机系统内核中的缓冲存储器的尺寸。这种解决方案是以增加芯片面积为代价的。尝试缓解这种问题的另一种已知解决方案是采用更快的存储器。该解决方案以包括更大的芯片面积和功耗为代价。



技术实现要素:

公开了用于减少包括系统存储器和高速缓冲存储器的系统中的延时的系统、方法和计算机程序。

在一种示例性方法中,识别请求的数据的预取命令是从请求者设备接收的。响应于该预取命令,将请求的数据从系统存储器预取到高速缓冲存储器中。随后,接收与预取命令相对应的数据存取请求,以及响应于该数据存取请求,将数据从高速缓冲存储器提供给请求者设备。数据预取之前可以是地址转换的预取。

一种示例性系统包括处理器系统、系统存储器和高速缓冲存储器。该处理器系统被配置有:用于从请求者设备接收预取命令的逻辑单元,所述预取命令识别请求的数据。该处理器系统还被配置有:用于响应于预取命令,将请求的数据从系统存储器预取到高速缓冲存储器中的逻辑单元。该处理器系统还被配置有:用于通过将数据从高速缓冲存储器提供给请求者设备,来对与预取命令相对应的数据存取请求进行响应。数据预取之前可以是地址转换的预取。

一种示例性计算机程序包括体现在非暂时性存储介质中的计算机可执行逻辑单元。所述逻辑单元由处理器的执行配置该处理器执行以下操作:从请求者设备接收预取命令,所述预取命令识别请求的数据;响应于预取命令,将请求的数据从系统存储器预取到高速缓冲存储器中;以及通过将请求的数据从高速缓冲存储器提供给请求者设备,来对与预取命令相对应的数据存取请求进行响应。数据预取之前可以是地址转换的预取。

附图说明

在附图中,除非另有指示,否则类似的附图标记贯穿各个视图表示类似的部分。对于诸如“102a”或“102b”之类的利用字母字符标志的附图标记,字母字符标志可以区分出现在相同附图中的两个类似的部分或元素。当附图标记旨在涵盖在全部附图中具有相同附图标记的全部部分时,用于附图标记的字母字符标志可以省略。

图1是根据一种示例性实施例的具有减少的延时的处理系统的框图。

图2是示出根据一种示例性实施例的用于减少处理系统中的延时的示例性方法的流图。

图3是示出根据一种示例性实施例的用于减少处理系统中的延时的示例性方法的另一种流图。

图4是根据一种示例性实施例的具有一个或多个处理系统的便携式计算设备的框图。

具体实施方式

本文中使用“示例性”一词意指“用作示例、实例或说明”。本文被描述为“示例性”的任何方面不必被解释为优选的或比其他方面更具优势的。

术语“组件”、“数据库”、“模块”、“系统”等意指与计算机相关的实体,其可以是硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但并不限于:在处理器上运行的过程、处理器、对象、可执行程序、执行线程、程序和/或计算机。作为说明,在计算设备上运行的应用和该计算设备二者都可以是组件。一个或多个组件可以位于执行中的一个过程和/或线程内,并且一个组件可以位于一台计算机上和/或分布于两台或更多台计算机之间。另外,可以通过其上存储有各种数据结构的各种计算机可读介质来执行这些组件。这些组件可以例如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件通过信号与本地系统、分布式系统中和/或跨越诸如具有其他系统的互联网之类的网络的另一组件进行交互)的信号通过本地和/或远程过程进行通信。

术语“应用”或“图像”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文提到的“应用”还可以包括实际上不可执行的文件,例如可能需要被打开的文档或需要被存取的其他数据文件。

术语“内容”还可以包括具有可执行内容的文件,例如:目标代码、脚本、字节代码、标记语言文件和补丁。另外,本文提到的“内容”还可以包括实际上不可执行的文件,例如可能需要被打开的文档或可能需要被存取的其他数据文件。

术语“任务”可以包括在设备中执行的过程、线程或者任何其他单元。

术语“虚拟存储器”指代从引用存储器的应用或图像抽象出实际物理存储器。可以使用转换或者映射将虚拟存储器地址变换成物理存储器地址。该映射可以是像1对1那样简单(例如,物理地址等于虚拟地址)、适度地复杂(例如,物理地址等于与虚拟地址的恒定偏移)、或者该映射可以是复杂的(例如,唯一地映射每4kb页面)。该映射可以是静态的(例如,在启动时执行一次),或者该映射可以是动态的(例如,随着分配和释放存储器而不断地演变)。

在本说明书中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手持装置”可互换地使用。随着第三代(“3g”)无线技术和第四代(“4g”)无线技术的到来,更大的带宽可用性使更多的便携式计算设备能够具有更丰富的无线能力。因此,便携式计算设备可以包括蜂窝电话、寻呼机、pda、智能电话、导航设备或者具有无线连接或链路的手持计算机。

如图1所示,在一种示例性实施例中,处理系统100包括诸如中央处理单元(“cpu”)102或内核104之类的一个或多个处理设备。处理系统100还包括系统存储器106和系统高速缓冲(存储器)108。系统存储器106可以包括动态随机存取存储器(“dram”)。与系统存储器106相关联的dram控制器109可以以传统方式来控制存取系统存储器106。系统互连110(其可以包括一个或多个总线和相关联的逻辑单元)对处理设备、存储器和处理系统100的其他单元进行互连。

术语“上游”和“下游”可以用于方便地引用处理系统100的元素当中的信息流。术语“主”和“从”可以用于方便地指代分别发起请求和响应请求的元素。处理系统100的元素通过耦合到下游设备的主(“m”)方式、耦合到上游设备的从(“s”)方式或者二者来表征。应当理解的是,在图1中示出的处理系统100的元素之间的箭头仅仅意在指代主设备和从设备的请求-响应操作,并且设备之间的信息的通信可以是双向的。

cpu102包括存储器管理单元(“mmu”)112。mmu112包括用于执行针对cpu102的地址转换的逻辑单元(例如,硬件、软件或者其组合)。虽然为了便于清楚说明起见,在图1中将mmu112描述成被包括在cpu112中,但mmu112可以外部地耦合到cpu102。

处理系统100还包括系统mmu(“smmu”)114。smmu以与处理器的mmu(例如,mmu112)转换用于处理器存储器存取的地址几乎相同的方式,为上游设备业务提供地址转换服务。smmu114包括或者耦合到一个或多个转换高速缓冲116。虽然为了清楚起见而在图1中没有示出,但mmu112还可以包括或者耦合到一个或多个转换高速缓冲。可以将系统高速缓冲108用作转换高速缓冲。

mmu112和smmu114的主要功能包括地址转换、存储器保护和属性控制。地址转换是一种将虚拟地址空间中的输入地址转换成物理地址空间中的输出地址的方法。将转换信息存储在mmu112或smmu114为了执行地址转换而引用的转换表(例如,系统存储器106中存储的转换表118)中。存在地址转换的两个主要益处。首先,地址转换允许处理设备寻址大的物理地址空间。例如,32比特处理设备(即,能够引用232地址位置的设备)可以使其地址进行转换,使得处理设备可以引用更大的地址空间(例如,36比特地址空间或者40比特地址空间)。第二,虽然存储器缓冲区通常是分段的、物理上不连续的、并且分散在整个物理存储器空间中的事实,但地址转换允许处理设备具有在存储器中分配的缓冲区的连续视图。

转换表118包含对一系列输入地址执行地址转换所必需的信息。虽然为了清楚起见而在图1中没有示出,但该信息可以包括以多级“树”结构来排列的一组子表。每个子表可以利用输入地址的子段进行索引。每个子表可以包括转换表描述符。存在三种基本类型的描述符:(1)无效描述符,其不包含有效信息;(2)表描述符,其包含到下一级子表的基地址,并且可以包含与在漫步(walk)期间遇到的所有后续描述符相关的转换信息(例如,存取许可);以及(3)块描述符,其包含用于计算与块描述符有关的最终输出地址和属性/许可的基输出地址。

遍历转换表118以执行地址转换的过程被称为“转换表漫步”。转换表漫步通过以下方式来完成:使用输入地址的子段来索引到转换子表中,以及找到下一个地址直到遇到块描述符为止。转换表漫步包括一个或多个“步骤”。转换表漫步的每个“步骤”涉及:(1)对转换表118的存取,其包括读取(以及可能地更新)转换表118;以及(2)更新转换状态,其包括(但不限于)计算下一个待引用的地址。每个步骤取决于漫步的前一步骤的结果。对于第一步骤而言,存取的第一转换表条目的地址是根据转换表基地址和将转换的输入地址的一部分的。对于每个后续步骤而言,所存取的转换表条目的地址是根据来自前一步骤的转换表条目和输入地址的一部分的。

参照图2的流图来描述下面的用于以最小延时来从系统存储器106中读取数据120的示例性方法。如通过框202所指示的,从请求者设备(例如,内核104或cpu102(图1))接收预取命令。在图1所示出的实施例中,mmu112和smmu114可以包括被配置用于接收预取命令的逻辑单元。在不存在请求者设备的mmu或smmu上游的实施例(没有示出)中,这种逻辑单元可以被包括在请求者设备自身中。

预取命令识别请求者设备所请求的数据。为了识别数据,预取命令可以指示请求的数据的地址。替代地,预取命令可以指示地址的模式。这样的模式所指示的多个地址可以是连续的,或可以是不连续的。因此,该模式对应于请求的数据的量。在不存在请求者设备的smmu上游或者与请求者设备相关联的mmu的实施例(没有示出)中,预取命令所指示的地址或者地址模式可以是请求的数据120在系统存储器106中的物理地址。然而,在图1所示出的示例性实施例中,mmu112或smmu114可以执行地址转换方法来获得一个或多个物理地址,如通过框204所指示的。

响应于接收到预取命令,mmu112或smmu114可以首先确定预取命令中指示的地址所暗示的一个或多个地址转换是否是已经可存取的(例如,存储在转换高速缓冲116中)。如果所述一个或多个地址转换不是已经可存取的,则在可能需要使地址转换可存取时,mmu112或smmu114以上面所描述的方式来对转换表118或者系统高速缓冲108进行存取并执行地址转换方法。例如,smmu114可以将所获得的地址转换存储在转换高速缓冲116中。

如通过框206所指示的,随后将请求的数据120从系统存储器106预取到系统高速缓冲108中。虽然在图1所示出的示例性实施例中,mmu112或smmu114可以使用地址转换来将请求的数据120从系统存储器106预取到系统高速缓冲108中,但在不存在请求者设备的smmu上游或者与请求者设备相关联的mmu的实施例(没有示出)(或者在存在绕开该转换的操作模式的实施例)中,请求者设备可以使用一个或多个物理地址,将请求的数据从系统存储器106预取到系统高速缓冲108中。请求者设备还可以绕开smmu,并提供用于将请求的数据从系统存储器106预取到系统高速缓冲108中的物理地址。

如通过框208所指示的,从请求者设备接收数据存取请求。数据存取请求对应于预取命令。也就是说,对于请求者设备发出的每个数据存取请求而言,请求者设备还发出相应的预取命令。虽然在示例性实施例中,在数据存取请求和预取命令之间存在一对一对应关系,但在其他实施例中,在数据存取请求和预取命令之间还可以存在其他关系。响应于数据存取请求,从高速缓冲存储器108向请求者设备提供请求的数据120。

上面描述的示例性方法利用了下面的事实:在一些类型的处理系统中,存储相关数据的地址模式在该数据需要被处理的时间之前已很好地可用于请求者设备。例如,内核104可以被包括在其中在显示屏幕(图1-2中没有示出)上显示数据的显示处理系统中。在要显示的数据需要被显示的时刻之前,存储该数据的地址已很好地可用于内核104,这是因为要显示的数据是以内核104所知道的(即,可用的)模式被存储或者可寻址的。在本文所描述的示例性实施例中,内核104可以容易地确定要显示的信息和相应数据的地址之间的关系。当内核104确定将需要显示某些信息时,内核104可以发布上面所描述的预取命令和与该信息相对应的数据的相应数据存取请求,这是因为内核104能够确定相应的地址。

接下来,通过上文以下可以是有利的:请求者设备在相应的数据存取请求之前具有足够长的时间来发出预取命令,以允许请求的数据120在系统高速缓冲108中可用,以便响应于数据存取请求来立即传送给请求者设备。然而,以下可能是不利的:请求者设备在相应的数据存取请求之前太早发出预取命令,这是因为增加了该数据被覆盖或者从系统高速缓冲108中逐出的可能性。

上面所描述的方法不仅降低了延时,而且还可以用于促进省电。诸如cpu102或者内核104之类的请求者设备可以在将请求的数据120的块从系统存储器106预取到系统高速缓冲108中之后,命令dram控制器109和与系统存储器106相关联的其他电路进入低功率模式。

在下面参照图3的流图所描述的示例性方法中,可以领会上面所提及的地址转换和信息流的另外细节。如通过框302所指示的,内核104可以生成预取命令。如通过框304所指示的,内核104可以生成与预取命令相对应的数据存取请求。

如通过框306所指示的,smmu114可以接收内核104所生成的预取命令或数据存取请求。框306例示了元件之间的时间延迟。如下面所描述的,该方法可以促进某些时间延迟以及因此的整体延迟的减少。内核104生成预取命令或者数据存取请求的时刻与smmu114接收到该预取命令或数据存取请求的时刻之间的该特定时间延迟可以在本文被称为“a0”,并在下面进一步详细地描述。

应当注意的是,smmu114以类似于其响应数据存取请求的方式来响应预取命令。然而,smmu114并不响应于预取命令来将请求的数据返回给内核104。相反,预取命令使得请求的数据在系统高速缓冲108中可用。直到smmu114接收到与较早的预取命令相对应的数据存取请求为止,smmu114才通过从系统高速缓冲108向内核104提供请求的数据来进行响应。

如通过框308所指示的,smmu114确定存取请求的数据所需要的地址转换是否在转换高速缓冲116中可用。确定该地址转换在转换高速缓冲116中不可用可以被称为mmu转换高速缓冲未命中。如果确定发生了这种mmu转换高速缓冲未命中,则确定地址转换在系统高速缓冲108中是否可用,如通过框310所指示的。用于确定发生转换高速缓冲未命中到触发针对该地址转换的系统高速缓冲108的搜索的时间延迟在本文可以被称为“b0”。地址转换在系统高速缓冲108中不可用的确定可以被称为系统高速缓冲命中。如果确定没有发生系统高速缓冲未命中(框310),则将地址转换返回给smmu114(即,返回给转换高速缓冲116),如通过框312所指示的。用于地址转换返回给smmu114的时间延迟可以在本文中被称为“b1”。

如果确定发生系统高速缓冲未命中(框310),则通过存取系统存储器106中的转换表118来开始地址转换方法,如通过框314所指示的。确定发生系统高速缓冲未命中到触发smmu114存取转换表118的时间延迟可以在本文中被称为“c0”。随后,将从转换表118获得的转换表条目存储在转换高速缓冲116中,以便smmu114在地址转换方法中使用。用于转换表条目存储在转换高速缓冲116中的时间延迟是“b1”加上另外的延迟“c1”所得到的结果。应当注意,smmu114可以与执行地址转换方法相关联,生成转换表118的多次存取。

如果确定没有发生转换高速缓冲未命中(框308),则确定请求的数据120在系统高速缓冲108中是否是可用的,如通过框316所指示的。如上所述,确定发生转换高速缓冲未命中到触发系统高速缓冲108的搜索的时间延迟是“b0”。如果确定没有发生系统高速缓冲未命中(框316),则将请求的数据120返回给内核104,如通过框318所指示的。然而,如果确定发生了系统高速缓冲未命中(框316),则必须将请求的数据120从系统存储器106读取到系统高速缓冲108中,如通过框320所指示的。虽然在示例性实施例中,可以将该请求的数据120读取到系统高速缓冲108中,但应当理解的是,在其他实施例中,可以替代地直接将请求的数据传送到内核或者其他请求者设备,而无需将其存储在系统高速缓冲中。例如,可以直接将显示数据传送到请求该显示数据的内核,这是由于显示数据通常是不再重用的。

确定发生系统高速缓冲未命中到触发smmu114存取系统存储器106的时间延迟是“c0”。将请求的数据120从系统存储器106读取到系统高速缓冲108的时间延迟是“c1”。随后,将请求的数据120返回给内核104,如通过框318所指示的。请求的数据120穿过smmu114并到达内核104的时间延迟可以被称为“a1”。

在缺少预取命令时,在内核104发出数据存取请求和请求的数据120返回到内核104之间的总时间延迟或者存取时间(“t”)是:t=a0+mmiss*(b0+b1+c0+c1)+mhit*(b0+b1)+b0+c0+b1+c1+a1,其中,“mmiss”是smmu114为了获得转换表条目而生成的使得系统高速缓冲未命中的存取的次数,“mhit”是smmu114是为了获得转换表条目而生成的使得系统高速缓冲命中的存取的次数,并且其中,mmiss>=0,mhit>=0。

然而,通过内核104在发出数据存取请求之前的最佳时间量处发出预取命令,请求的数据120将在系统高速缓冲108中可用,以便内核104立即存取,从而将总延迟减小到:t'=a0+b0+b1+a1。这假定了转换表条目也提前在mmu中进行预取。

处理系统100(图1)可以表示或者被包括在任何适当类型的设备(例如,图4中所示出的便携式通信设备400)中。便携式通信设备400包括含有中央处理单元(“cpu”)404的片上系统402。模拟信号处理器406耦合到cpu404。显示器控制器408和触摸屏控制器410耦合到cpu404。cpu404、显示器控制器408或者其他处理设备可以被配置为以上面参照上文所描述的方法的方式,生成预取命令和数据存取请求。在片上系统402之外的触摸屏显示器412耦合到显示器控制器408和触摸屏控制器410。显示器控制器408和触摸屏显示器412可以一起定义显示系统,所述显示系统被配置为针对要显示在触发屏显示器412上的数据,生成预取命令和数据存取请求。

视频编码器414(例如,逐行倒相(“pal”)编码器、按顺序传送彩色与存储(“secam”)编码器、国家电视系统委员会(“ntsc”)编码器或者任何其他视频编码器)耦合到cpu404。此外,视频放大器416耦合到视频编码器414和触摸屏显示器412。视频端口418耦合到视频放大器416。usb控制器420耦合到cpu404。usb端口422耦合到usb控制器420。存储器424(其可以以上面关于系统存储器106(图1)所描述的方式进行操作)耦合到cpu404。用户识别模块(“sim”)卡426和数码相机428还可以耦合到cpu404。在示例性方面,数码相机428是电荷耦合器件(“ccd”)相机或者互补金属氧化半导体(“cmos”)相机。

立体声音频codec430可以耦合到模拟信号处理器406。此外,音频放大器432可以耦合到立体声音频codec430。在示例性方面,第一立体声扬声器434和第二立体声扬声器436耦合到音频放大器432。另外,麦克风放大器438可以耦合到立体声音频codec430。麦克风440可以耦合到麦克风放大器438。调频(“fm”)无线调谐器442可以耦合到立体声音频codec430。此外,fm天线444耦合到fm无线调谐器442。此外,立体声耳机446可以耦合到立体声音频codec430。

射频(“rf”)收发机448可以耦合到模拟信号处理器406。rf开关450可以耦合在rf收发机448和rf天线452之间。rf收发机448可以被配置为与常规的陆地通信网络(例如,移动电话网络)以及与全球定位系统(“gps”)卫星进行通信。

具有麦克风的单声道耳机456可以耦合到模拟信号处理器406。此外,振动器设备458可以耦合到模拟信号处理器406。电源460可以耦合到片上系统402。在特定的方面,电源460是向需要电力的便携式通信设备400的各个组件供电的直流(“dc”)电源。此外,在特定的方面,电源是可充电dc电池或者dc电源,后者是从去往连接到ac电源的dc转化器的交流电(“ac”)得到的。

键盘454可以耦合到模拟信号处理器406。触摸屏显示器412、视频端口418、usb端口422、照相机428、第一立体声扬声器434、第二立体声扬声器436、麦克风440、fm天线444、立体声耳机446、rf开关450、rf天线452、键盘454、单声道耳机456、振动器458和电源460位于片上系统402外部。

本文所描述的方法步骤中的一个或多个方法步骤(例如,上面关于图2和图3所描述的)可以作为计算机程序指令存储在存储器106(图1)或者存储器424(图4)中。这些计算机程序指令,以及在其上存储这些计算机程序指令或这些计算机程序指令以非暂时性形式所位于的存储器或其他介质的组合通常定义在专利词典中称为“计算机程序产品”的内容。这些指令可以由cpu404、显示器控制器408或者另一个处理设备执行,以执行本文所描述的方法。此外,借助于计算机程序指令来配置的cpu404、显示器控制器408或者另一个处理设备或者与存储器424相结合的这种处理设备可以充当用于执行本文所描述的方法步骤中的一个或多个方法步骤的单元。

对于本发明相关领域的普通技术人员来说,替代实施例将变得显而易见,而不脱离其精神和范围。因此,虽然详细地示出和描述了选定的方面,但应当理解的是,可以对其做出各种替代和改变,而不脱离如所附权利要求书所规定的本发明的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1