具有自适应预测的关键字转送的制作方法

文档序号:6360059阅读:102来源:国知局
专利名称:具有自适应预测的关键字转送的制作方法
技术领域
本发明涉及处理器的领域,尤其涉及处理器和相关电路中的缓存块(cacheblock)填充的关键字的转送。
背景技术
处理器通常实施加载和存储操作以访问存储器的数据。所述加载规定存储器位置的读取,以将数据提供给处理器,所述存储使用处理器提供的数据来规定存储器位置的写。根据处理器实施的指令集体系结构,加载和存储可以是指令集体系结构中规定的显式指令、规定存储器操作的指令中的隐式操作、或它们的组合。为了减小用于加载和存储的存储器延迟,处理器通常实施一个或多个缓存,在访问主存储器系统之前访问该一个或多个缓存。缓存以缓存块单元来存储最近访问过的数据。缓存块在不同处理器中具有不同大小,如32字节、64字节、128字节等等。所述块通常在存储器中与它们的尺寸的自然边界对准。相应地,如果所述加载在缓存中未命中(miss),则包含加载数据的缓存块被从存储器中读取,并且传送到缓存。尽管将缓存块存储到缓存中将减小命中(hit)缓存的其它访问的延迟,处理器的性能常常受到等待加载数据的严重影响。通常,缓存块使用从存储器到处理器的互连的多次数据传输而传送。为了减小对于加载数据的等待,加载数据被提供在缓存块的第一传送,然后传送剩余数据。处理器和缓存被设计成,在等待要提供的缓存块的同时,将加载数据转送到目标。某些情况下,存储器控制器可设计成,提供指示数据即将传送的响应(例如,在数据传送之前若干时钟周期),从而缓存/处理器可安排所述数据的转送。这样的存储器控制器在传送数据之前若干时钟周期提供所述响应,并且保证所述数据将在所识别的时钟周期传送。因而,精确地安排所述转送。

发明内容
在实施例中,系统包括存储器控制器、一个或多个处理器和对应缓存。系统可能含有不确定源,不确定源阻止了在处理器缓存中不存在的加载操作的数据转送的准确安排。存储器控制器可以提供早期响应,指示数据应该在后续时钟周期中提供。然而,转送所述数据的实际时钟周期由于系统的不确定性而变化。存储器控制器与缓存/处理器之间的接口单元可以预测从当前接收早期响应到所述对应数据的延迟,并可以推测地准备转送所述数据,假如它将如预测的那样可用。如果预测正确,数据可以按低延迟转送。如果预测不正确,数据可能按更长延迟转送。接口单元可以监视在早期响应与数据的转送之间的延迟,或者至少所述延迟的变化部分。基于测量的延迟,接口单元可以修改随后预测的延迟。因而,接口单元可以随着时间使所预测延迟适应所述系统经历的实际延迟,调整不确定性。在实施例中,不确定性可以包括例如异步时钟域父叉中的不确定冋步延迟;存储器控制器、缓存、以及/或处理器内的流水线延迟的不确定性;及由于系统操作模式的变化(例如,进入和离开低功率模式等等)造成的时钟频率的一个或多个的变化。不确定源可以随系统而不同。通过使预测延迟适应经历的实际延迟,当数据准备转送时,用于数据的转送路径可能更多的被准备好,某些实施例中,在缓存中未命中数据的情形下减小对于加载数据的平均延迟。


如下详细描述参照附图,现在简短描述这些附图。图I是集成电路的一个实施例的方块图。图2是在图I表示的接口单元的一个实施例的方块图。图3是流程图,表明在图2表示的延迟监视器的一个实施例的操作。图4是流程图,更详细地表明在图3表示的流程图的一部分的一个实施例。 图5是流程图,表明响应于早期响应指示的关键字转送控制电路的一个实施例的操作。图6是状态机的一个实施例的方块图,该状态机可以由关键字转送控制电路的一个实施例实施。图7是时序图,表明关键字转送的一个实施例的操作。图8是系统的一个实施例的方块图。图9是在图I表示的接口单元的另一个实施例的方块图。尽管本发明可接收各种修改和备选形式,具体实施例作为例子表示在附图,这里将详细描述。然而,应该理解,附图和对其详细描述不打算将本发明限于公开的特定形式,相反,旨在覆盖落在附属权利要求书所限定的本发明的精神和范围内的全部修改、等效物及备选例。这里使用的标题仅用于组织目的,并且不意味着用来限制说明书的范围。如贯穿本申请使用的那样,字词“可以(may)”用在容许意义上(即意味着具有可能性),而不是命令意义(即,意味着必须)。类似地,字词“包括(include)”、“包括(including)”、以及“包括(includes)”是指包括但不限于。各个单元、电路、或其它元件可以描述成“配置成”执行任务(一项或多项)。这样的上下文中,“配置成”是一般意味着“具有电路”的广义陈述,该电路在操作期间执行任务(一项或多项)。这样,即使当单元/电路/元件当前不通电时,单元/电路/元件也可配置成执行任务。一般地,形成与“配置成”相对应的结构的电路可以包括硬件电路。类似地,各个单元/电路/元件为了方便,在描述中可以描述成执行任务(一项或多项)。这样的描述应该解释成包括短语“配置成”。所述配置成执行一项或多项任务的单元/电路/元件特意不适用35U. S. C. § 112的第六段的对单元/电路/元件的解释。
具体实施例方式现在转到图1,表示耦合到存储器12的集成电路10的一个实施例方块图。所示实施例中,集成电路10包括一个或多个处理器,如处理器14A-14B、二级(L2)缓存16、接口单元18、以及存储器控制器20。处理器14B的一部分更详细地显示在图1,以包括寄存器文件22和数据缓存24。处理器14A可以是相似的。存储器控制器20配置成耦合到存储器12,并且可以经接口耦合到接口单元18。如在图I显示的那样,接口可以包括请求、写数据和读数据、以及早期响应。接口单元18也经过写总线和读总线耦合到L2缓存16,该写总线被标记为“写”的,该读总线包括读请求和读数据。接口单元18还经仲裁信令耦合到L2缓存16,仲裁信令包括读仲裁(Read Arb)、同意(Gnt)、以及取消(Cxcl )。处理器14A-14B由接口耦合到L2缓存16,这些接口可以包括请求、写数据、以及读数据。时钟域边界也显示在图I为虚线26。处理器14A-14B可以配置成,执行加载和存储操作(更简明地这里称作加载和存储),并且可以配置成检测在它们的本地缓存(例如,在处理器14B的数据缓存24和在处理器14A的类似缓存)中的缓存未命中。对于加载,处理器14A-14B可以配置成将缓存填充请求传输到L2缓存16,以读取未命中缓存块。对于存储未命中,在某些实施例中,处理器14A-14B也可以配置成传输缓存填充请求。其它实施例中,处理器14A-14B可以配置成传输所述存储以更新L2缓存16和/或存储器12,但不可传输缓存填充来读取所述未命中缓存块。处理器14A-14B可以配置成将标识符(例如,事务标识符或TID)分配给每个缓存填充请求和由处理器14A-14B启动的每个其它事务。TID可以与事务的请求、数据等一起传送,以将所述传输识别为同一事务的部分。 如图I显示的那样,在处理器14B与L2缓存16之间的接口可以包括请求总线(例如,地址、命令等)和读/写数据总线。读和写数据总线可以是所示的分离单向总线,或者可以组合为双向数据总线。在某些实施例(未示在图I中),也可以有用来传输相干响应的响应总线。其它实施例可以使用其它接口,如分组接口,用来传输请求、响应、以及数据。处理器14A的接口可以与对于处理器14B的接口相似。处理器14A-14B可以配置成,传输在缓存填充请求中的缓存块的地址。地址可以包括加载的最低有效位,所述加载正是所检测的缓存未命中,以识别所述加载试图在缓存线之内访问的字。相应地,L2缓存16和存储器控制器20 (对于L2缓存未命中)可以提供有识别缓存块的哪部分应该最先返回的信息,以容许加载数据的转送。“字(word)”可以是由加载访问的数据量(例如,若干连续字节)。在某些指令集体系结构中,加载(load)可以定义为访问各种数据大小。所述字可以是所述数据大小之一,并且其它数据大小可以以字为单位表示(例如,访问字的一半的加载是半个字,一个字,访问两个相邻字的加载的双字等)。所述加载访问的所述字常常称作为缓存块“关键字(critical word)”,被提供给缓存填充,因为该字是在缓存块中对处理器的当前性能最重要的字。就是说,直到提供了关键字,处理器停滞在加载操作(并且对于加载的任何从属操作也停滞)。处理器在某些实施例中可以配置成,推测地执行其它的非依赖操作,但为了完成所述加载和其依赖操作,需要该关键字。如在图I显示的那样,读数据总线可以耦合到数据缓存24,以将缓存块写入到缓存中,也可以耦合到寄存器文件22,以将关键字写入到寄存器文件22。可以有多路复用(多路调制)或其它切换,以从读数据中选择要写入到寄存器文件22中的关键字(未表示在图I)。也可以有缓冲,以将来自读数据总线的数据串行输送到数据缓存24和/或寄存器文件22。缓存块可以从存储器控制器20传输到接口单元18,在所述接口多次传输。每个传输这里可以称作数据取字(beat of data)。例如,32字节缓存块可以作为8字节的4个取字而传输。取字的大小可以随实施例不同。较大取字可以在较宽数据总线传输,因而传输缓存块只需要更少次数的取字。另一方面,较宽数据总线可能更贵,就提供在集成电路10的相互连接(接线)(其它实施例中,在集成电路上的针)而论。相应地,取字的大小可以基于设计/性能折衷而随实施例不同。取字的大小在不同处也可以不同。例如,L2缓存16与接口单元18之间传输的取字、和处理器14A-14B与L2缓存16之间传输的取字,各自相对于接口单元18与存储器控制器20之间的取字可以大小不同(并且彼此也可以大小不同)。L2缓存16可以配置成,检查来自处理器14B的缓存填充请求的命中,并且可以配置成,当检测到缓存命中时,将缓存块(有初始取字中的关键字)返回到处理器14B。L2缓存16中的缓存命中不必转到接口单元18。L2缓存16可以包括用于从处理器14A-14B接收的请求的队列或其它缓冲,也可以包括用于传输到接口单元18的L2缓存未命中的队列/缓冲(未表示在图I)。所示实施例中,L2缓存16可以包括对接口单元18的写总线接口(在图I 一般表示为“写”)、和对接口单元18的读总线接口,读总线接口包括在图I表示的读请求和读数据总线。其它实施例可以使用用于读和写的单个总线接口(或各自可以传输读和写的多重总线接口)、或其它类型的接口,如分组接口。L2缓存16与接口单元18之间的接口也可以包括仲裁,所以接口单元18可以仲裁将数据转送到处理器14B,如以前提到和下面更详细描 述的那样。接口单元18可以配置成,仲裁转送关键字以及转送缓存块以用于缓存填充。L2缓存16也可能正在将L2缓存命中数据提供给处理器14A-14B,因而在L2缓存命中数据与来自接口单元18的数据传输之间的仲裁可以在竞争数据源之间提供适当的处理器总线的访问。在L2缓存未命中的情况下,L2缓存16可以配置成将读请求传输到接口单元18。接口单元18可以配置成,随后在接口将所述请求传输到存储器控制器20。接口单元18的一个实施例的另外细节下面关于图2讨论。所述接口在所示实施例中包括请求总线、写数据总线、以及读数据总线(尽管在其它实施例可以使用双向读/写数据总线,另外的其它实施例可以实施分组接口)。所示实施例中,从接口单元18到存储器控制器20的请求传输可以包括跨过时钟域边界,时钟域边界在图I由虚线26显示。就是说,线26以上的电路(处理器14A-14B、L2缓存16、以及接口单元18的一部分)在一个时钟域,存储器控制器20和与其连接接口可以在不同的时钟域。时钟域之内的时钟可以是同步的,因而时钟的上升和下降沿的关系可以是确定的(允许噪声和抖动)。时钟域之内的电路可以同一频率和相位而计时(即,逻辑上是同一时钟),或者以不同频率但彼此锁相而计时。另一方面,不同时钟域的时钟可以是彼此异步的。不同时钟域的时钟之间可能没有确定性相位关系。时钟可以在不同的频率,频率不具有彼此的任何依赖性。一个域的时钟可以独立于其它时钟域、并且不对其它时钟域的任何信令或其它通知而改变频率。相应地,接口单元18可以包括同步电路,以将信息(请求、数据等)安全地从一个时钟域传输到另一个。同步电路可以包括能够在一个时钟域中正确地捕获信息(例如,满足在源时钟域的计时要求)并且将信息正确地传输到其它时钟域(例如,满足在接收时钟域的计时要求)的任何电路。先进先出缓冲器(FIFO)下面用作例子,但可以使用任何同步电路。图I中在时钟域边界26以上的时钟域这里称作处理器时钟域,在时钟域边界下面的时钟域称作存储器时钟域。每个时钟域的对应时钟可以分别称作处理器时钟(一个或多个)和存储器时钟(一个或多个)。类似地,给定时钟域中的时钟周期可以分别称作处理器时钟周期和存储器时钟周期。时钟周期可以是对应时钟的一个周期。
存储器控制器20可以配置成读取用于缓存块的数据,读取所述取字(beat),该取字包括关键字,在其它数据之前。存储器控制器20可以配置成传输所述取字,该取字包括关键字,在缓存块的其它取字之前。为了简便起见,包括关键字的取字这里也可以称作关键字。接口单元18可以接收关键字,并且可以配置成传输用于L2缓存16的仲裁请求(Read Arb),以转送关键字。Read Arb请求也可以识别正在请求哪个处理器14A-14B。L2缓存16可以配置成,在接口单元18与来自在L2缓存16的缓存命中的数据之间仲裁,以确定哪些数据要在读数据总线上传输到处理器14B (对于处理器14A可以类似地仲裁)。如果L2缓存16同意接口单元18的请求,则L2缓存16可以配置成将同意传输到接口单元18。另外,L2缓存16可以准备从来自接口单元18的读数据总线至到处理器14B的读数据总线的转送路径28。路径28可以包括多路调制或其它切换,如果需要,也可以包括缓冲。接口单元18可以配置成传输所述数据。一般地,转送路径可以包括连线、缓冲、多路调制以及/ 或可以将数据从源传输到目的地的其它电路的任意组合。存储器控制器20也可以配置成返回用于缓存填充的早期响应,早期响应指示了期望关键字在传输该早期响应的存储器时钟周期(“早期响应时钟周期”)之后的存储器时钟周期中转送。早期响应可以包括缓存填充的TID,标识该早期响应为哪个事务而提供。在后续时钟周期与早期响应时钟周期之间的存储器时钟周期数量可以随实施例不同。一般地,存储器时钟周期的数量可以选择成为接口单元18、L2缓存16、以及处理器14A-14B提供准备转送数据的时间。一个或多个处理器时钟周期可以用来准备所述转送路径。例如,可能需要若干处理器时钟周期来传输请求、仲裁、返回同意以及实际准备路径。以这种方式,与没有早期响应并且当接收到关键字时进行L2的仲裁的情况相比,可以减小转送关键字的延迟。然而,如果在接收到同意时所述数据没有准备好转送(例如,因为下面的各种不确定性),则接口单元18可以取消数据传输,并可以在转送路径的再次仲裁之前,等待所述关键字。存储器控制器20可以配置成,在缓存填充的读取已经通过存储器控制器20中的命令点并且到存储器12的传输已经安排之后,返回所述早期响应。存储器控制器20在一个实施例中可以包括旁通路径,以在早期响应所指示的周期返回所述读取数据。在实施例中,接口到存储器12的物理层电路可以配置成,动态地调整数据返回延迟,以跟踪存储器12的操作。这样的实施例中,物理层电路可以配置成,将指示当前延迟的反馈提供给存储器控制器逻辑电路。存储器控制器20可以使用所述反馈来调整早期返回响应的输送。早期响应与关键字之间的存储器时钟周期数量也可以选择成,当处理器时钟正在其最低支持频率运行而存储器正在其最高频率运行时,容许数据路径的准备。在其它时钟频率设置下,早期响应可以比它(不然可能需要提供的时间)更早提供,但早期响应在时钟频率的任何配置是可用的。另外,早期响应与对应数据之间的存储器时钟周期数量可以选择成,为接口单元18提供对L2缓存16的仲裁的某种灵活性。接口单元18可以改变仲裁请求时序(与早期响应的传输相比),以考虑早期响应与对应数据之间的延迟的各种不确定源。接口单元18可以适应基于系统实际经历的延迟的仲裁请求时序,使转送路径的准备更密切地与关键字的到达相匹配,因而可以更多地以较短延迟成功转送关键字。如以上提到的那样,存在从早期响应到对应数据的延迟的不确定源。不确定性可以包括例如异步时钟域交叉的不确定性。依据数据到达时时钟的捕获边缘的相位关系,在各个时间点所述延迟可以相差一个处理器时钟周期。另外,任一时钟的时钟频率的变化可以是不确定源,直到接口单元18对于新延迟已经调整(如处理器时钟周期中测量的那样)。在处理器14A-14B、L2缓存16、接口单元18以及/或存储器控制器20中的流水线停滞可以是不确定源,如L2缓存16的仲裁延迟可以是不确定源。相应地,接口单元18可以配置成,监视在以前关键字转送操作中经历的延迟。接口单元18可以配置成,基于以前经历的延迟,预测对于当前关键字转送操作可能经历的延迟。就是说,接口单元18可以基于最近经历延迟来调整预测延迟。相应地,随着时间,接口单元18可以更精确地进行关键字转送,因为接口单元18适应了不确定性。处理器14A-14B可以实施任何指令体系结构。各个实施例中,处理器14A-14B可以实施任何微体系结构,包括超标量或标量、超流水线或流水线、无序或有序、推测或非推测等。根据需要,各个实施例可以采用微编码技术或者不采用。数据缓存24可以具有任何容量和配置(例如,集相关、直接映像等)。给定实施例中包括的处理器14A-14B的数量可以改变,包括具有一个处理器或多于两个处理器的实施例。寄存器文件22可以包括与任何数 量的寄存器相对应的存储装置。例如,寄存器文件22可以包括至少与处理器14A-14B实施的指令集体系结构中规定的通用寄存器的数量一样多的寄存器。在实施例中,寄存器文件22可以包括数量比通用寄存器的数量多的寄存器,以支持寄存器再命名、用于微代码使用的临时寄存器等。L2缓存16可以如希望的那样,具有任何容量和配置。L2缓存16可以包括数据缓存24,或者可以排除或不包括它。其它实施例可以不包括L2缓存16 (处理器14A-14B可以直接耦合到接口单元18)。另外的其它实施例可以包括另外的结构层级。存储器控制器20可以包括电路,该电路配置成接收存储器请求,并且配置成与存储器12接口以完成所述请求。各个实施例中,存储器控制器20可以配置成,接口到任何类型的存储器,例如,静态随机存取存储器(SRAM)或各种类型的动态RAM(DRAM),如同步DRAM(SDRAM)、双数据速率(DDR、DDR2、DDR3、DDR4 等)DRAM、低功率 DDR (LPDDR2 等)DRAM、RAMBUSDRAM 等。所示实施例中,处理器14A_14B、L2缓存16、接口单元18以及存储器控制器20全部集成到单个半导体基片,作为集成电路10。其它实施例可以实施其它集成级和/或分立元件。集成电路10也可以集成外围电路,以形成在芯片上系统(SOC)实施。例如,SOC还可以包括视频和/或声频处理电路、耦合到芯片外外围设备的芯片上外围设备和/或外围设备接口等。尽管一个时钟域边界26显示在图1,但其它实施例可以包括多个时钟域边界。在实施例中,处理器14A-14B可以是处理器装置的例子;L2缓存16可以是高速缓冲存储装置的例子;接口单元18可以是接口装置的例子;及存储器控制器20可以是存储器控制器装置的例子。每个装置可以是用来为对应元件提供以上描述的操作的装置。一般地,可以使用进行指定操作的组合的和/或顺序的逻辑电路。 其次转到图2,显示接口单元18的一个实施例的方块图。在所示实施例中,接口单元18包括写队列30、读请求队列32、读数据队列34、L2仲裁(Arb)电路36、请求控制电路38、计数器40、关键字转送控制电路42、延迟监视电路44、以及异步(async)FIFO 46A、46B、46C以及46D。写队列30耦合成从L2缓存16接收写操作,并且耦合到async FIFO 46A-46B和请求控制电路38。读请求队列32耦合成从L2缓存16接收读请求,并且耦合到请求控制电路38和async FIFO 46B。计数器40耦合到async FIFO 46B。读数据队列34耦合到对于L2缓存16的读数据接口、L2Arb电路36、以及async FIFO 46C。L2 Arb电路36耦合到对于L2缓存16的仲裁接口(读Arb、Gnt以及Cxcl)和关键字转送控制电路42。关键字转送控制电路42耦合到延迟监视电路44和async FIFO 46D。延迟监视电路44耦合到async FIFO 46C-46D。async FIFO 46A耦合到至存储器控制器20的写数据总线。asyncFIFO 46B耦合到至存储器控制器20的请求总线,并且耦合到async FIFO 46C-46D。asyncFIFO 46C耦合到来自存储器控制器20的读数据总线,并且async FIFO 46D耦合成从存储器控制器20接收早期响应。关键字转送控制电路42可以耦合成从存储器控制器20接收早期响应指示(经async FIFO 46D),并且可以配置成,确定何时推测地仲裁L2缓存16,以便转送与接收早期响应对应的关键字。更具体地说,关键字转送控制电路42可以配置成,在接收到早期响应之后的N个处理器时钟周期,产生仲裁转送路径28的请求,其中N是正整数(大于零)。时钟周期数“N”可以选择成,将转送路径的同意与其中关键字适于转送的时钟周期对准,从而可以减少对于关键字的延迟。更具体地,N的大小可以是由延迟监视电路44计算的延迟, 或者可以从所述延迟导出。关键字转送控制电路42可以向L2 Arb电路36发信令以请求仲裁,并且L2 Arb电路36可以响应地传输Read Arb。在一个实施例中,关键字转送控制电路42可以配置成同时跟踪多个早期响应。例如,关键字转送控制电路42可以包括状态机或其它逻辑电路的多个实例,每个实例可分配成跟踪单独的一个早期响应。关键字转送控制电路42可以配置成,当接收到早期响应时将闲置状态机分配给早期响应。存储器控制器20可以与其它读数据相似地将所述关键字提供给接口单元18,接口单元18可以使用async FIFO 46C使数据同步进入处理器时钟域。可以将数据提供给读数据队列34以便存储,并且可以从读数据队列34在读数据总线上转送到L2缓存16。在某些实施例中,关键字可以绕过读数据队列34,并且可适于提前一个处理器时钟周期转送。延迟监视电路44可以配置成,测量在早期响应与从async FIF046D和46C分别提供的对应数据之间的延迟,以检测实际经历的延迟(以处理器时钟周期计算)。当所测量延迟与以前测量延迟不同时,延迟监视电路44可以配置成,修改提供给关键字转送控制电路42的延迟。在一个实施例中,延迟监视电路可以调整所述延迟,但可以不立即将延迟设置成等于当前测量延迟。相反,延迟监视电路44可以将延迟修改成较接近当前测量延迟。随着时间,如果当前测量延迟保持稳定,则来自延迟监视电路44的延迟可以接近当前测量延迟。另一方面,当前测量延迟的短期变化不应过分地影响提供给关键字转送控制电路42的延迟。尽管延迟监视电路44可以测量从早期响应到实际接收数据的延迟,但各个实施例可以测量在早期响应与关键字的转送之间的延迟的任何部分,或者可以甚至测量整个延迟。所示实施例中,计数器40对于处理器时钟域的每个时钟周期可以增加1,并且可以用作读数据和早期响应的时间戳。计数器的当前值在每个时钟周期可以写到async FIFO46B (与来自读请求队列32或写队列30的读或写请求一起,如果有的话),并且在asyncFIFO 46B的输出提供为到async FIFO 46C和46D的输入。时间戳可以写到async FIFO46C-46D(分别与读数据和早期响应数据一起,如果有的话)。延迟监视电路44可以从asyncFIFO 46C-46D接收时间戳和TID。延迟监视电路44可以将同一 TID的时间戳之差当作延迟测量。其它实施例可以按其它方式测量延迟。另外,其它实施例可以使用其它同步电路,以使时间戳与存储器时钟域同步(即,代之以使用async FIF046B)。例如,图9是接口单元18的另一个实施例的方块图。图9的实施例中,计数器40耦合到灰度编码器160。灰度编码器160可以配置成灰度编码所述计数器值,并且将灰度编码值提供给同步器162。同步器162可以配置成,使灰度编码值与存储器时钟域同步。同步器162的输出耦合到灰度译码器164,灰度译码器164耦合成将时间戳提供给async FIFO 46C-46D。灰度译码器164可以译码灰度编码计数器值,并且将所述值作为时间戳供给到async FIFO 46C-46D。一般地,灰度编码可以设计成,每次所述值递增时,只有值的一比特变化。灰度编码可以保证,即使在时钟域边界26上有比特同步时序的变化,在存储器时钟域中采样了有效值。图9的同步电路可以用在例如仅当新请求将被传输到存储器控制器20时才写async FIFO 46B的实施中。就是说,计数器值可以连续地与存储器时钟域同步,而async FIFO 46B仅使有效请求与存储器时钟域同步(这不是每个时钟周期都发生)。async FIFO 46C-46D在本实施例中可以用作同步电路,使时钟域边界26上的信 息传输同步。一般地,async FIFO可以包括存储器,该存储器排列成多个入口 ;源时钟域中的写指针,该写指针指向入口之一,下条信息要从源时钟域写到这个入口 ;和接收时钟域中的读指针,该读指针指向另一个入口,接收时钟域中下条信息要从该另一个入口读取。通过保证读指针和写指针不指向同一入口(在某些情况下,保证在读和写指针之间有一个或多个入口),可以保证入口中的所述信息从响应读指针读之前的写开始在所述入口中是稳定的。所示实施例中,async FIFO 46A-46B可以配置成,使外出写数据和读/写请求(分另O)与存储器控制器20同步。更具体地,当从L2缓存16接收时,读请求可以在读请求队列32中排队,写请求和数据可以在写队列30中排列。请求控制电路38可以配置成,监视写队列30和读请求队列32,并且可以配置成,选择要传输到存储器控制器20的请求。选中的请求可以从队列30或32写到async FIFO 46B。读请求队列32中的一个示范入口被显示,包括地址字段(Addr),存储所述请求的地址;属性字段中的各种属性(Attr);及事务ID字段(TID),存储被分配给所述请求的TID。写队列入口可以是相似的,但还可以包括用于数据的数据字段(或者可以有独立的写数据队列)。请求地址、属性及TID被显示为在async FIFO46B中在示范入口中的请求字段(Req),与来自以前所讨论的计数器40的时间戳一起。写数据和TID也显示在async FIFO 46A的示范入口。async FIFO 46C-46D可以配置成,使进入读数据和分别来自存储器控制器20的早期响应相同步。在async FIFO 46C中的示范入口显示了读数据(Data)和TID字段以及时间戳字段(TS),该时间戳字段(TS)捕获来自async FIFO 46B的时间戳。来自async FIFO46C的数据可以写到读数据队列34,以便传输到L2缓存16。示范读数据队列入口显示数据字段(Data)和TID字段(TID)。async FIFO 46D显示示范入口,包括为其提供早期响应的所述读的TID以及时间戳字段(TS)。在实施例中,队列30、32及34可以是例如队列装置;L2 Arb电路36可以是例如仲裁装置;关键字转送控制电路42可以是例如关键字转送装置;延迟监视电路44可以是例如监视装置;计数器40可以是例如计数装置;请求控制电路38可以是例如请求控制装置;及async FIFO 46A-46D可以是例如同步装置。每个装置可以是为对应元件提供以上描述的操作的装置。一般地,可以使用进行规定操作的任何组合和/或顺序逻辑电路。要注意,接口单元18的其它实施例可以具有用于L2缓存16和/或存储器控制器20的不同接口,内部可以有其它差别。例如,在实施例中,到L2缓存16的写请求和写数据接口可以是分离的,到L2的仲裁接口可以用于读(如以前描述的那样)和写(提取写数据)。在实施例中,写请求和读请求可以在不同接口传输到存储器控制器20,并且可以有用于读和写请求的分离async FIFO。也可以有存储器控制器20的不同的写数据和写响应接口、和用于这些接口的分离asyncFIFO。任何配置可以用在各个实施例中。现在转到图3,所示流程图显示延迟监视电路44的一个实施例的操作,该延迟监视电路44测量延迟,并且基于测量的延迟调整提供给关键字转送控制电路42的延迟。尽 管方块为了理解容易按特定顺序表示,但可以使用其它顺序。在延迟监视电路44实施的组合逻辑中可以并行执行方块。方块、方块组合、以及/或作为整体的流程图可以在多个时钟周期按流水线进行。延迟监视电路44可以配置成实施在图3表示的操作。如果延迟监视电路44接收到早期响应(判定方块50的“是”分支),延迟监视电路44可以捕获来自async FIFO 46D的TID和时间戳(方块52)。延迟监视电路44可以配置成,同时跟踪多于一个早期响应。因而,延迟监视电路44可以包括捕获高达M个TID和时间戳的资源,其中M是大于零的正整数。如果在async FIFO 46C中接收到关键字(判定方块54的“是”分支),延迟监视电路44可以将所述关键字的TID与对于早期响应捕获的TID相比较。如果TID与所述关键字TID之一相匹配(判定方块56的“是”分支),延迟监视电路44可以确定测量延迟,如果测量延迟和输出延迟不同,可以调整到关键字转送控制电路42的输出延迟(方块58)。图4是流程图,显示在图3表示方块58的一个实施例。尽管方块为了理解容易按特定顺序表示,但可以使用其它顺序。在由延迟监视电路44实施的组合逻辑中可以并行执行方块。方块、方块组合、以及/或作为整体的流程图可以在多个时钟周期按流水线进行。延迟监视电路44可以配置成实施在图4表示的操作。延迟监视电路44可以计算所测量延迟为在关键字时间戳与来自匹配TID的早期响应时间戳之间的差(方块60)。延迟监视电路44可以计算误差为来自方块60的测量延迟减去输出到关键字转送控制电路42的当前延迟(方块62)。相应地,如果测量延迟大于当前输出延迟,误差是正的,如果测量延迟小于当前输出延迟,则误差是负的。延迟监视电路44可以将误差的1/2添加到当前输出延迟,以产生新的输出延迟(方块64)。因而,新延迟可以变动为在当前输出延迟与测量延迟之间差距的1/2。其它实施例可以使用其它调整机理,这些其它调整机理包括所述误差的不同分数。现在转到图5,所示流程图显示关键字转送控制电路42的一个实施例的操作。尽管方块为了理解容易按特定顺序表示,但可以使用其它顺序。在由关键字转送控制电路42实施的组合逻辑中可以并行地执行方块。方块、方块组合、以及/或作为整体的流程图可以在多个时钟周期按流水线进行。关键字转送控制电路42可以配置成实施在图5表示的操作。如果关键字转送控制电路42接收到早期响应(判定方块70的“是”分支),并且状态机可用于根据测量延迟推测地引发L2仲裁请求(判定方块72的“是”分支),关键字转送控制电路42可以将状态机分配给所述事务(方块74)。各个实施例可以实施任何数量的状态机,并且可以使用各种分配机理。例如,可以使用先到先得方案,将状态机分配给到达的第一关键字转送操作。其它实施例中,可以为每个处理器14A-14B保留一个或多个状态机,从而可以处置每个处理器14A-14B的至少一个关键字转送。剩余状态机,如果有的话,则可以先到先得地分配。某些实施例中,状态机的数量可以与待完成的缓存填充请求的最大数量相等,从而可以监视每个请求。图6是状态机的一个实施例的方块图,可以由关键字转送控制电路42实施,以推测地产生对L2缓存16的仲裁请求,以基于预测延迟转送关键字。如以前提到的那样,可以有状态机的多个实例,以同时跟踪多个关键字转送机会。关键字转送控制电路42可以包括实施状态机的电路。一般地,状态机可以保持在给定状态,直到检测到使状态机离开该状态的条件(例如,图6显示的箭头)。状态机可以在闲置状态80、在复位、或当状态机已经完成其关键字转送操作时开始。当响应早期响应而分配状态机时(方块74,图5),状态机可以转变到等待请求状态82。状态机可以保持在等待请求状态82,直到作出请求的预测时间期满、或者关键字到达并且 适于转送。如果关键字在预测时间期满之前到达,那么可以非推测地作出仲裁转送路径的请求。任一情况下,状态机可以转变到请求适用状态84。预测时间可以从来自延迟监视电路44的输出延迟导出。例如,所述预测时间与所述延迟时间相比小了仲裁请求与接口单元18的同意之间的周期数量(例如,这个实施例中的3个时钟周期)。可选择地,流水线延迟的额外时钟周期可以被包括在预测时间与输出延迟时间之差中。一般地,预测时间与延迟时间相比小了通过推测请求用于关键字的转送路径可以节省的时钟周期数量。某些实施例中,过高估计延迟(从而数据刚好在转送路径准备好之前到达)可能比过低估计延迟(从而转送路径比所述数据更早适用)有益。例如,如果转送路径适用,关键字没有准备好转送,则当数据适用时,接口单元18可能取消所述转送并且重新仲裁,失去了由推测仲裁节省的延迟。在请求适用状态84,关键字转送控制电路42可以产生对于L2Arb电路36的请求,以推测地仲裁所述转送路径。当发送读仲裁请求时,状态机可以转变到等待同意状态86,状态机保持在这,直到L2缓存16同意仲裁请求。状态机然后可以转变到关键字准备好状态88。如果关键字适于转送,状态机可以转变到转送关键字状态90,以转送关键字。在一个实施例中,状态机可以保持在状态90直到如果缓存填充已经完成、读请求在接口单元18中已经解队时,以防止解队。随后,当提供缓存块时,数据可以使用同一路径写到L2缓存16和数据缓存24。已经防止解队之后,关键字转送完成,状态机可以转变到闲置状态80。其它实施例中,在关键字状态90之后可以使用一组依次状态,以跟踪到解队的进行,并且在返回到闲置状态80之前抑制解队。另一方面,如果当状态机到达状态88时关键字没有准备好,则状态机可以取消转送(到L2缓存16的Cxcl),并且可以转变到等待数据状态92。状态机当接收到关键字时可以从状态92转变到状态84,并且可以非推测地转送关键字。可选择地,其它实施例中,状态机可以仅处置用于关键字转送的推测请求。如果推测失败,当关键字到达时,L2Arb电路36可以仲裁关键字。这样的实施例中,可以消除状态92,如果关键字没有准备好转送,则状态机可以从状态88返回到闲置状态80。
某些实施例中,也可能有另外转变。例如,在状态机也处置非推测关键字转送的实施例中,如果关键字到达,状态机可以从闲置状态80转变到请求适用状态84。图7是时序图,显示示范关键字转送的处理器时钟周期(由竖直虚线定界)。在标签SM对面,为每个时钟周期表示状态机的状态。在标签L2对面,显示接口单元18与L2缓存16之间的操作,在标签P对面,显示在处理器的操作。在第一时钟周期,状态机在闲置状态80,并且接收到早期响应,该早期响应使状态机被分配(箭头100)。状态机转变到等待请求状态82 (图7的W4R),并且开始计数用来作出推测请求的预测时间。在第五时钟周期,预测时间期满(箭头102),状态机转变到请求适用状态84(在图7的Req E1)。读仲裁请求在第六时钟周期中传输(箭头106),并且状态机转变到等待同意状态86(在图7的W4G)。L2缓存在第七时钟周期中仲裁,并且在第八时钟周期中将同意传输到接口单元18(箭头108)。状态机转变到关键字准备好状态88,并且关键字在读缓冲器34中可用以转送(箭头110)。关键字传输到转送路径中,并且在第十时钟
周期状态机转变到转送关键字状态90 (图7的F CO。这个时钟周期也是其中正常发送非推测读仲裁请求的时钟周期(虚线箭头112)。相应地,这个实施例中节省的延迟可以是这个实施例与箭头106和112相对应的时钟周期之差,或者所示例子的4个时钟周期。在这个实施例中,在L2缓存查阅命中检测的期间过去了几个时钟周期,对于关键字转送不进行所述命中检测。然而,这个例子中,同一流水线用来转送关键字,因而数据流过这些流水线级。数据通过L2转送(到L2的数据,附图标记114),然后转送到处理器(到P的数据,附图标记116)。状态机然后可以返回到闲置状态。转到图8,表不系统150的一个实施例的方块图。在所不实施例中,系统150包括耦合到外部存储器12的集成电路10的至少一个实例。集成电路10耦合到一个或多个外围设备154和外部存储器12。也提供电源156,电源156将电源电压供给到集成电路152,也将一个或多个电源电压供给到存储器12和/或外围设备154。在某些实施例中,可以包括集成电路10的多于一个实例(也可以包括多于一个外部存储器12)。外围设备154依据系统150的类型可以包括任何期望电路。例如,在一个实施例中,系统150可以是移动装置(例如,个人数字助手(PDA)、智能电话等),并且外围设备154可以包括用于各种类型的无线通信的装置,如用于wifi、Bluetooth、蜂窝、全球定位系统等。外围设备154也可以包括额外的存储装置,包括RAM存储装置、固状存储装置、或盘存储装置。外围设备154可以包括用户接口装置,如显示屏幕,包括触摸显示屏幕或多触摸显示屏幕、键盘或其它输入装置、麦克风、扬声器等。其它实施例中,系统150可以是任何类型的计算系统(例如,台式个人计算机、笔记本电脑、工作站、小型电脑等)。多种变更和修改对于本领域的技术人员,一旦充分地理解以上公开将成为显然的。如下权利要求书旨在解释成包容全部这样的变更和修改。
权利要求
1.一种接口单元,耦合成从存储器控制器接收与读请求相对应的数据被预期在未来时钟周期中被传输的指示,其中所述接口单元包括 控制电路,配置成产生将所述数据转送到所述读请求的源的请求,其中所述控制电路配置成,在从所述存储器控制器接收所述指示之后的N个时钟周期产生所述请求,以当在所述未来时钟周期中随后接收到所述数据时容许所述数据的转送,其中N是从以前延迟预测的正整数;以及 延迟监视电路,配置成监视从所述指示到转送所对应数据的时间的至少一部分的延迟,其中所述延迟监视电路配置成自适应地修改N,以考虑所述延迟中的不确定性。
2.根据权利要求I所述的接口单元,其中所述延迟监视电路和控制电路根据第一时钟而操作,并且其中以第一时钟的时钟周期来测量N,并且其中所述存储器控制器配置成根据与第一时钟异步的第二时钟而操作,其中所述延迟的不确定性的原因包括从与第二时钟相关联的第二时钟域到与第一时钟相关联的第一时钟域的同步。
3.根据权利要求I或2所述的接口单元,其中所述延迟的不确定性的另一个原因是第一时钟和第二时钟的至少一个的时钟频率的变化。
4.根据权利要求1-3任一项所述的接口单元,其中所述延迟的不确定性的原因是到所述读请求的源的流水线中的停滞。
5.根据权利要求1-4任一项所述的接口单元,还包括 一个或多个先进先出(FIFO)缓冲器,配置成实现所述同步;和 计数器,配置成根据第一时钟递增; 其中所述接口单元配置成,使所述计数器的值与第二时钟域同步,并且通过FIFO缓冲器而同步第二时钟域到第一时钟域,其中从FIFO缓冲器与所述指示同时接收的所述计数器的值和从FIFO缓冲器与所述数据同时接收的值之差是所述延迟的测量。
6.一种集成电路,包括 一个或多个处理器,每个处理器包括数据缓存,并且配置成响应在所述数据缓存中的缓存未命中而产生读操作; 第二级缓存,耦合到所述处理器,并且配置成将在第二级缓存中未命中的读操作传输到权利要求1-5任一项中所述的接口单元;及 其中所述接口单元耦合到所述第二级缓存并且耦合到所述存储器控制器,其中所述接口单元配置成,将所述读操作传输到所述存储器控制器,并且所述接口单元耦合成从所述存储器控制器接收早期响应,并且其中所述接口单元配置成,响应于与所述给定读操作相对应的早期响应,预测缓存块的关键字将可用于为给定读操作期间转送的未来时钟周期。
7.根据权利6所述的集成电路,其中所述接口单元配置成,预测第一数量时钟周期的延迟,并且其中所述接口单元配置成,确定所述第一数量与通过监视所述延迟而检测的第二数量的时钟周期之差,并且其中所述接口单元配置成,以所述差的一半来修改所述第一数量,以产生后续的预测。
8.根据权利6所述的集成电路,其中所述接口单元配置成,响应所述预测,推测地仲裁来自所述第二级缓存的所述转送路径。
9.一种方法,包括 在接口单元中,从存储器控制器接收预测将要提供缓存块填充的初始字的指示;所述接口单元预测一个后续的时钟周期,在该后续时钟周期将产生将所述初始字转送到发起所述缓存块填充的处理器的请求,以便在所述初始字如根据来自所述存储器控制器的所述指示所预期的那样被提供的情况下,传输所述初始字; 监视从所述指示到所述初始字的至少一部分时间的实际延迟;以及 响应于所述实际延迟,自适应地修改所述预测。
10.根据权利9所述的方法,还包括 在所述后续时钟周期中产生所述请求; 响应于所述请求,接收许可; 检测所述初始字如存储器控制器预测的那样被提供;以及 响应于所述许可,转送所述初始字。
11.根据权利9或10所述的方法,还包括 在接口单元中,从所述存储器控制器接收预测将要提供第二缓存块填充的第二初始字的第二指示; 所述接口单元预测第二后续时钟周期,在该第二后续时钟周期将产生将所述第二初始字转送到发起所述第二缓存块填充的处理器的第二请求,以便在第二初始字如所述存储器控制器预测的那样被提供的情况下,传输所述初始字; 在所述第二后续时钟周期中产生所述第二请求; 响应于所述第二请求,接收第二许可; 检测到第二初始字未如预测的那样被提供;及 响应于所述第二许可,传输取消。
12.根据权利11所述的方法,还包括 随后接收所述第二初始字; 响应接收到第二初始字,产生第三请求; 响应第三请求,接收第三许可 '及 响应所述接收,转送所述第二初始字。
13.根据权利9所述的方法,还包括 在接口单元中,从存储器控制器接收预测将要提供第二缓存块填充的第二初始字的第二指示; 接口单元预测第二后续时钟周期,在该第二后续时钟周期产生将所述第二初始字转送到发起所述第二缓存块填充的所述处理器的第二请求,以便在第二初始字如存储器控制器预测的那样被提供的情况下,传输所述初始字; 比预测更早地接收所述第二初始字; 响应于接收到第二初始字,产生所述第二请求; 响应于第二请求,接收第二许可; 响应所述许可,将第二初始字转送到所述处理器。
14.根据权利9所述的方法,还包括 监视在来自存储器控制器的各个指示与对应初始字之间的延迟; 以及 根据所述延迟,修改所述后续时钟周期的预测。
全文摘要
在实施例中,系统包括存储器控制器、处理器及对应缓存。系统可以包括不确定源,这些不确定源妨碍对处理器缓存中未命中的加载操作的数据转送的准确安排。存储器控制器可以提供早期响应,该早期响应指示数据应该在后续时钟周期提供。在存储器控制器与缓存/处理器之间的接口单元可以预测从当前接收的早期响应到对应数据的延迟,并且可以推测地准备转送数据,假如数据将如预测的那样可用。接口单元可以监视在早期响应与数据转送之间的延迟、或所述延迟的变化的至少一部分。基于所测量的延迟,接口单元可以修改随后预测的延迟。
文档编号G06F13/16GK102822810SQ201180016505
公开日2012年12月12日 申请日期2011年5月26日 优先权日2010年6月1日
发明者B·P·莉莉, J·M·卡索夫, 陈浩 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1