具有多个虚拟队列的地址转换单元的制作方法

文档序号:6350961阅读:161来源:国知局

专利名称::具有多个虚拟队列的地址转换单元的制作方法
技术领域
:本发明涉及数字处理系统,更具体地说,涉及数字处理系统中的地址转换机构。
背景技术
:地址转换通常用在包括多个内存请求来源,和被所述多个来源共享的内存的系统中。所述来源可以包括处理器、代表各种外设行动的直接内存存取(DMA)单元,和/或外设本身。地址转换可用于确保不同的来源不会干扰彼此对内存的存取,提供比物理内存中的实际可用内存更大的虚拟内存(与软件一起根据需要把数据页入和页出内存),简化内存的动态分配(允许真实内存的分散页面表现为虚拟内存的连续块),等等。从而,给定来源可以传送带有虚拟地址的内存请求,以及地址转换机构可把该地址转换成对应的物理地址。一般来说,虚拟-物理地址转换以一组软件管理的页表的形式被保存在内存中。虚拟地址可用作索引(相对于页表的基地址),根据所述索引,读取一个或多个页表条目,以定位正确的转换。一些地址转换方案利用分级或者不分级方式的多次页表读取来定位转换。其它方案可以利用单次页表读取来定位转换。通过提供高速缓存最近使用的转换,以便响应来自来源的内存请求,进行快速存取的旁路转换缓冲器(TLB),能够降低进行转换的等待时间。不过,在一些常规的转换机构中,由于在多个来源之间共享TLB,因此对一个转换的TLB失败会增大另一个不相关的转换请求的等待时间。在一些系统中,这种类型的等待时间是不能接受的。
发明内容公开了包括多个虚拟队列的地址转换单元的各种实施例。在一个实施例中,转换单元包括旁路转换缓冲器(TLB)、失败队列和控制单元。TLB可被配置成保存多个地址转换。失败队列可被配置成保存在TLB中失败的接收的地址转换请求。失败队列包括多个条目。至少一些条目都可被配置成保存相应地址转换请求和对应标识符。给定条目的对应标识符识别失败队列中的保存另一个相应地址转换请求,比如下一个较年老的转换请求的另一个条目,所述另一个相应地址转换请求具有与给定条目中的相应地址转换请求的处理排序约束相同的处理排序约束。例如,具有相同的排序约束并且借助标识符链接在一起的地址转换属于相同的虚拟失败队列。控制单元可被配置成按照取决于每个相应地址转换请求的标识符的顺序,处理接收的地址转换请求。图I是包括一个或多个地址转换单元的系统的一个实施例的方框图。图2是图I中所示的地址转换单元的一个实施例的方框图。图3是图2中所示的地址转换单元失败队列的一个实施例的方框图。图4A是描述图2和图3的失败队列的实施例内的各个条目的示图。图4B是描述图2-图4A的失败队列的实施例的3个虚拟队列的链接条目的结构图。图5是描述图2和图3的失败队列的实施例内的条目的操作状态的状态图。图6是描述图2和图3中所示的地址转换单元的一个实施例的操作的流程图。虽然本发明可以有各种修改和备选形式,不过附图中举例示出了本发明的具体实施例,这里将详细说明所述具体实施例。不过应明白,附图及其详细说明并不意图把本发明局限于公开的特定形式,相反,本发明将覆盖在由附加权利要求限定的本发明的精神和范围内的所有修改、等同物和备选方案。这里使用的标题只是为了便于组织,并不意图用于限制说明的范围。在本申请中,词语“可以”是在许可的意义上(即,意味有可能),而不是在强制的意义上(即,意味必须)使用的。类似地,词语“包括”意味包括(但不限于)。各个单元、电路或其它组件可被描述成“配置成”执行一项或多项任务。在这样的上下文中,“配置成”是通常意味“具有在工作期间执行所述一项或多项任务的电路”的结构的广泛列举。因而,所述单元/电路/组件可被配置成即使当所述单元/电路/组件目前未接通时,也可执行所述任务。通常,形成与“配置成”对应的结构的电路可包括硬件电路。类似地,为了便于说明,各个单元/电路/组件可被描述成执行一项或多项任务。这样的说明应被解释成包括短语“配置成”。列举被配置成执行一项或多项任务的单元/电路/组件并不意图引用35U.S.C.§112,第6段对单元/电路/组件的解释。具体实施例方式现在参见图1,图中示出了系统10的一个实施例的方框图。系统10包括彩色液晶显示器(CIXD)显示控制器12、视频编码器14、混频器16、缩放器18、视频解码器20、着色器22、接口单元24、地址转换单元26、系统接口单元(SIU)28、一个或多个高性能外设30、直接内存存取(DMA)单元32、一个或多个其它外设34、第二地址转换单元36、一个或多个照片外设38、处理器40、和内存控制器42。如图I中所示,CIXD显示控制器12、视频编码器14、混频器16、缩放器18、视频解码器20和着色器22耦接到接口单元24,接口单元24再耦接到系统接口单元28。在图解说明的实施例中,接口单元24通过如图I中所示包括地址互连11、数据互连13和写入响应互连15的互连,耦接到系统接口单元28。地址转换单元26耦接到地址互连11并可被配置成转换由接口单元24传送给系统接口单元28的请求的地址。高性能外设30、DMA单元32、地址转换单元36、处理器40和内存控制器42耦接到系统接口单元28。DMA单元32耦接到高性能外设30和其它外设34。地址转换单元36耦接到照片外设38。内存控制器42耦接到内存(未示出)。CIXD显示控制器12耦接到CIXD(可能通过图I中未示出的其它组件)。在一个实施例中,如图I中图解所示的系统10可作为片上系统(SOC)集成到单个集成电路芯片上。在其它实施例中,可以采用两个或更多个集成电路来提供图I中图解所示的组件。在其它实施例中,系统10还包括CIXD、内存和各种其它组件(例如,耦接到外设接口的组件)。如前所述,地转转换单元26可以提供由耦接到接口单元24的组件中的一个或多个组件发起的请求的地址转换。例如,在一个实施例中,地转转换单元26可以提供CLCD显示控制器12、视频编码器14、混频器16、缩放器18和着色器22的地址转换。不过,视频解码器20可以采用内部地址转换机构。其它实施例可以根据需要把地转转换单元26用于组件的不同子集,或者所有组件的地址转换。通常,地址转换(或者更简要地,“转换”)的处理指的是把地址转换单元的虚拟地址输入修改成可用于访问内存的物理地址。物理地址通常可以在数字上不同于虚拟地址,尽管能够把虚拟地址映射成数字上相等的物理地址(通常称为一致映射)。转换是根据保存在内存中的一个或多个页表中的数据确定的,所述一个或多个页表以页面的粒度,把虚拟地址映射成物理地址。通过修改页表的内容,软件可控制虚拟地址到物理地址的映射。页面大小可以因实施例而异。例如,4行字节是典型的页面大小,不过在各个实施例中支持更大的页面大小,一直到兆字节的大小。未来可以支持甚至更大的页面大小。在一些实施例中,支持多种页面大小,并且可以编程选择多种页面大小,和/或可以存在同时使用的混合大小。从虚拟页面到物理页面的特定映射也可被称为转换。地址转换单元26可包括旁路转换缓冲器(例如,图2中所示的TLB70),旁路转换缓冲器可高速缓存地址转换单元26最近使用过的一个或多个转换。在一个实施例中,TLB可被实现成包括许多级的流水线结构。从而,对于在TLB中命中的虚拟地址,可以进行等待时间较小的转换,而对于在TLB中失败的虚拟地址,可以进行等待时间稍长的转换(因为为了获得所述转换,需要内存中的页表的表走查(tablewalk))。不过,如下进一步所述,地址转换单元26可以采用TLB失败队列(例如,图2的MQ64),通过允许同时进行在TLB中失败的许多转换请求,TLB失败队列可以降低与某些转换相关的等待时间。地址转换单元26为其提供地址转换的组件中的一个或多个组件可以是不能容忍TLB中的频繁失败的对等待时间敏感的组件。例如,CLCD显示控制器可从内存读取数据,以在CLCD显示器上显示图像(例如,帧缓冲数据)。这些内存读取操作的地址可由地址转换单元26转换。在显示控制器在显示器上显示图像供用户查看时,读取数据过程中的意外等待时间会在显示器上导致明显的影响。视频编码器14也对内存读取过程中的等待时间敏感,视频解码器20可能同样如此(尽管在本实施例中,视频解码器20包括它自己的地址转换单元)。在各个实施例中,任何视频处理单元可以对内存读取等待时间敏感。视频处理单元可以是处理视频数据的任何电路。例如,视频处理单元可以包括显示控制器12、视频编码器14、混频器16、缩放器18、视频解码器20和/或着色器22。视频处理单元还可以包括处理视频数据的任何其它电路。在本实施例中,显示控制器12和视频编码器14对内存读取延迟敏感,而其它组件对等待时间不敏感,或者包括它们自己的地址转换单元。其它实施例可以具有更多或者更少的对等待时间敏感的视频处理单元。因而,TLB失败队列(图2中所示)可以追踪进行中的TLB失败,从而便于在对于具有相同ARID的转换,或者所有写入转换之间强制实施转换请求排序约束的时候,同时处理转换请求。如以下结合图2-图6的说明更详细所述,失败队列可以在物理失败队列存储结构内采用许多虚拟失败队列(VMQ)。更具体地,在一个实施例中,存储单元可以包括保存转换请求的许多条目。失败队列中的每个条目可以保存属于任何VMQ的转换。每个VMQ可以被实现成其中可以把新的转换请求附加到适当VMQ的尾部的链表式数据结构。在一个实施例中,每个条目可以包括识别其中保存相同VMQ的下一个相继的转换请求的失败队列条目的指针。给定VMQ中的每个转换请求可以具有相同的处理排序约束,并可以按照由指针指定的顺序处理。不过,不同VMQ中的转换请求不会相互妨碍,通过利用诸如下面进一步说明的选择机构,可以选择就绪的请求。如图I中图解说明,地址转换单元26可接收地址互连11,地址互连11可包括地址、标识符和类型(例如,读取/写入)。在各个实施例中,各种其它信息(例如,大小)也可包括在请求中。在一种实现中,地址互连11可包括用于读取请求和写入请求的独立通道。因而,可存在读取地址、写入地址、读取标识符和写入标识符。根据通道中的哪些通道被用于传送请求,可以推断该请求的读取/写入性质。其它实施例可以使用其它互连、基于分组的互连,等等。例如,可以使用传送一个地址和读取/写入指示的地址互连。在各个实施例中,数据互连13可包括写入数据通道和读取数据通道,或者可以是双向互连。地址转换单元26可耦接到数据互连13,以便从TLB失败的走查表接收读取数据。写入响应互连15提供对写入请求的响应(例如,完成指示)。接口单元24可接收来自组件12、14、16、18、20和22的请求(或者请求随时可被传送的指示),并可被配置成当存在冲突时,在各个请求之间进行仲裁。接口单元24可被配置成在地址互连上传送请求,和往来于数据互连路由对应的写入数据和读取数据。接收的写入响应可被路由到对应写入请求的来源。系统接口单元28可以是连接系统10的各个组件和提供各个组件之间的通信的“顶层”接口。系统接口单元可具有与关于接口单元24所示相似的互连,以便耦接到系统10中的其它组件。CIXD显示控制器12被配置成控制显示在CIXD上的图像。例如,保存在内存中的帧缓冲器可保存识别显示器的每个像素应显示的颜色的数据,显示控制器12可读取帧缓冲器,从而把用帧缓冲器描述的图像显示在显示器上。虽然图I中图解说明了CIXD显示控制器,不过其它实施例可以实现配置成控制任意类型的显示器的任何显示控制器。视频编码器14可被配置成利用任何期望的编码方案,对视频流编码。编码方案可包括运动图像专家组(MPEG)版本1-4,或者任何后续版本,或者任何其它视频压缩或编码方案。类似地,视频解码器20可被配置成解码利用任何期望的编码方案编码的视频流。虽然在本实施例中,视频解码器20包括它自己的地址转换单元,不过其它实施例可包括利用地址转换单元26的视频解码器20。在这样的实施例中,视频解码器20也可以是对等待时间敏感的请求来源,并可具有在TLB内存的对等待时间敏感的分区中,分配给它的一条或多条路线。混频器16可被配置成进行视频混合操作。缩放器18可被配置成进行视频缩放操作。着色器22可被配置成进行像素着色操作。通常,混频、缩放和着色是生成显示用帧的一部分。高性能外设30可以包括至少与系统10中的其它外设相比,预期在系统接口单元28产生相当大的带宽的各种外设。例如,在一个实施例中,高性能外设可包括连网媒体接入控制器(MAC),比如以太网MAC、无线保真(WiFi)控制器和通用串行总线(USB)控制器。其它实施例可包括更多或更少的组件,并可以不同地分类和/或布置外设。例如,MAC和USB控制器可以是中等性能外设,而WiFi控制器可以是低性能外设。其它外设34可包括各种低带宽外设,比如音频子系统、闪速存储器接口、通用输入/输出(I/O)、定时器、片上密钥存储器、加密引擎等,或者它们的任意组合。DMA单元可被配置成代表高性能外设30和其它外设34,通过内存控制器42进行往来于内存的传送。地址转换单元36可被配置成转换来自照片外设38的地址,在一个实施例中,照片外设可包括照相机接口、联合图像专家组(JPEG)编码器/解码器(编解码器)和视频编码器。其它实施例可包括其它各组照片外设38。在一个实施例中,地址转换单元36可以利用与在地址转换单元26中使用的微体系结构类似的微体系结构实现,不过可以设想其它实现。处理器40可以实现任何指令集结构,并可被配置成执行所述指令集结构中的指令。处理器40可以采用任何微体系结构,包括标量、超标量、流水线、超流水线、无序、有序、推测性、非推测性体系结构等,或者它们的组合。处理器40可以包括电路,并且视情况可以实现微编码技术。内存控制器42可被配置成接收来自系统接口单元28的内存请求(系统接口单元28可能已从如图I中所示的一个或多个其它组件接收到所述请求)。内存控制器42可以访问内存,以完成所述请求(对写入请求来说,把接收的数据写入内存,或者响应读取请求,从内存提供数据)。内存控制器42可被配置成对接任意类型的内存,比如动态随机存取存储器(DRAM),异步DRAM(SDRAM),双倍数据速率(DDR,DDR2,DDR3等)SDRAM,RAMBUSDRAM(RDRAM),静态RAM(SRAM),等等。内存可被布置成多个存储体,比如双列直插内存模块(DIMM)等。注意其它实施例可包括组件的其它组合,包括图I中所示的组件和/或其它组件的子集或超集。虽然图I中示出了给定组件的一个实例,不过其它实施例可包括给定组件的一个或多个实例。另外,在其它各个实施例中,也可通过与接口单元24类似的接口单元(未示出),耦接可以耦接到系统接口单元28的其它组件,或者所述其它组件的各个部分。另一方面,可以消除接口单元24,从而可以使耦接到接口单元24的组件直接耦接到系统接口单元28。不过,在这种备选实施例中,连接的地址部分可包括地址转换单元26。现在参见图2,图中示出了地址转换单元26的一个实施例的方框图。在图2的实施例中,地址转换单元26包括控制单元60、多路复用器单元(mux)50、仲裁器52、失败队列(MQ)64,TLB70,和物理地址输出寄存器81和82。如图所示,控制单元60耦接到mux50。控制单元60和mux50都被耦接成接收读取地址和读取标识符(RID),及写入地址和写入标识符(WID),如上所述。mux50耦接到MQ64,以及mux选择输入端耦接到仲裁器52。MQ64耦接到TLB70,并且耦接到输出寄存器81和82。TLB70的输出端也耦接到输出寄存器81和82。最后,TLB70被耦接成接收来自SIU28的读取数据。控制单元60可在地址转换单元时钟的每个时钟周期中分配条目,以致在转换请求到达的情况下,条目已被分配。当从接口单元24接收到地址转换请求时,即使在TLB70中存在命中,当转换通过TLB流水线时,所述请求也持续几个周期被保存在MQ64中的分配条目中。如下结合图5的说明更详细所述,如果存在命中,那么当物理地址通过输出寄存器81和82被提供给SIU28时,该条目可以变成空闲状态。不过,如果存在TLB失败,那么在进行转换的时候,该转换可停留在MQ64中。当转换完成并且读取的数据被提供到TLB70中时,可以重试该转换。控制单元60可被告知TLB填充,作为响应,控制单元60可把对应条目转变成就绪或“排队”状态。在一个实施例中,可能存在几个就绪的转换。因而,每个周期,仲裁器52可根据诸如每个就绪的转换已有多久之类的因素,确定重试哪个就绪的转换。在一个实施例中,MQ64可包括许多条目。可利用MQ标识符(MQID)寻址MQ64,当每个转换进入地址转换单元26时,可向每个转换分配MQID。每个条目可保存任意类型的转换。不过,具有相同RID的读取地址转换请求,和所有的写入地址转换请求必须遵循某些排序约束。例如,在一个实施例中,具有给定RID值的所有读取地址传送必须按照和它们出现在接口24上的相同顺序出现在SIU28上,不管WID值的所有写入地址传送必须按照和它们出现在接口24上的相同顺序出现在SIU28上。因而,如下进一步所述,在一个实施例中,具有相同RID的读取转换可以被链接在一起,从而形成虚拟失败队列(VMQ)。类似地,所有写入转换请求可以被链接在一起,从而形成单个VMQ。从而,给定VMQ中的地址转换具有相同的排序约束,以及必须按照特定的顺序(例如,按照接收到它们的顺序)来处理。不过,不同VMQ中的转换请求则不这样。从而,在不同的VMQ之间,可以按照任意顺序处理转换请求。控制单元60可通过访问与每个条目相关的信息,明了给定VMQ中的每个转换的位置。如下结合图3的说明进一步所述,当转换被保存在MQ64中时,它可以和状态信息一起被保存,所述状态信息识别转换属于哪个RID或者WID,从而属于哪个VMQ。状态信息还可识别给定条目是否是VMQ的头部或者尾部。状态信息还可包括指示给定VMQ中的下一个较年老的转换的指针。参见图3,图中示出了图2的地址转换单元失败队列64的一个实施例的方框图。图3的MQ64是包括用于保存转换的许多条目的存储器。在图解所示的实施例中,MQ64包括编号0-15的16个条目。每个条目包括转换虚拟地址313、读取标识符(RID)301、写入指示符(Wr)、年龄指示符(Age)305、尾部指示符307、状态指示符309和VMQ指针(Ptr)311。在一个实施例中,由于所有的写入转换属于相同的VMQ,因此不需要独立的WID存储器。相反,可以使用单个写入比特。不过,在其它实施例中,代替Wr指示符,或者除了Wr指示符之外,可根据需要使用另外的WID存储器。在各个实施例中,构成MQ64的存储器可被实现成任何类型的存储器。例如,在一个实施例中,可以利用单端口16条目寄存器文件实现MQ64,不过可以使用其它数目的条目。如上所述,借助MQID,可以单独寻址每个条目。寄存器文件可以利用静态RAM系列中的随机存取存储器(RAM)阵列来实现,不过可以使用任意类型的存储装置。另外,虽然MQ64中的每个条目被表示成包括所有的信息字段,不过预期在一些实施例中,诸如VMQPtr311和RID301之类的一些信息可被保存在可利用每个条目同时访问的独立寄存器中。如上所述,控制单元60可利用MQID,访问MQ64。在图解说明的实施例中,MQID是4比特标识符,其各个计数对应于16个条目之一。RID301可指示给定条目属于哪个读取VMQ。如下进一步所述,在一个实施例中,具有相同RID的所有转换属于相同的VMQ,以及所有写入属于一个VMQ。Wr指示符303指示转换是否是写入转换。年龄指示符305指示每个条目相对于另一个条目的年龄。例如,在一个实施例中,年龄指示符305可以是与MQ64中的16个条目对应的4比特指示符。尾部指示符307可以指示条目是否是给定VMQ的尾部,以及在一个实施例中,尾部指示符307可以是单个比特。状态指示符309指示条目的当前状态。如下更详细所述,MQ64的每个条目可以处于6种状态之一。因而,在一个实施例中,状态指示符309可以是3比特指示符。地址313可保存转换请求的一定数目的虚拟地址比特。年龄指示符305可以跟踪每个条目的年龄,以致如果在MQ64中存在N个条目,那么年龄指示符305包含从O(最年轻的条目)到N-I(最年老的条目)的一系列值。因而,在一个实施例中,年龄指示符305可以是4比特值。当每个条目被链接到VMQ中时,该条目的年龄指示符305可被设定为0,以及所有其它有效条目的年龄指示符305被加I。当转换被消除时,比如当转换完成时,所有较年老的条目的年龄指示符305被减I。如上所述,具有相同RID的所有条目属于相同的VMQ,以及所有写入条目属于一个VMQ。从而,利用链表式结构中的指针,可把特定VMQ中的各个条目链接在一起。因而,Ptr311是具有指向给定VMQ内的下一个最年老条目的数值的VMQ指针。如果该条目是VMQ的头部,那么指针值指向它自己。如果该条目是VMQ的尾部,那么指针值指向该VMQ中的下一个较年老的条目。这种类型的指针机构可被称为反向指针,因为指针开始于尾部并在列表中向前指向下一个最年老的条目,直到到达头部为止。每次接收到属于具有MQ64中的条目的VMQ的转换时,新的转换可被附加到列表的尾部。例如,分配一个条目并保存地址。控制单元50重置先前的尾部条目的尾部指示符307,设定新条目的尾部指示符307,并使新条目的VMQPtr311值指向先前的尾部条目。当从队列中除去头部条目时,控制单元50更新该VMQ中的下一个较年轻条目的指针,并使VMQPtr311指向它自己。S卩,控制单元50把下一个较年轻条目的条目MQID值写入VMQPtr311中。预期在备选实施例中,链接VMQPtr311可指向VMQ中的下一个最年轻的条目。因而,在这样的实施例中,各个链接条目可起始于头部条目,并且相继指向下一个最年轻的条目,直到到达尾部为止。另外,代替尾部指示符,可以使用头部指示符,以及尾部条目的VMQ指针值可指向它自己。为了举例说明上面的反向VMQ条目链接,图4A中示出了MQ64的一个例证实施例。参见图4A,MQ64包括16个条目。不过,为了简单起见,这里只示出了该信息的子集。如图所示,MQ64包括都具有3个条目的3个有效虚拟失败队列。所述3个VMQ由RID值或者Wr指示符识别。更特别地,一个VMQ包括RID为I的3个条目(VMQl),第二个VMQ包括RID为5的条目(VMQ5),以及第三个VMQ包括具有被设定为逻辑值I的Wr指示符的条目(VMQW)。如图所示,VMQI的尾部条目位于条目4中,如设定的尾部指示符所证示。VMQPtr值为14,从而指向VMQI中的下一个最年老的条目。条目14中的VMQPtr值为0,它指向VMQI中且位于条目O中的下一个最年老的条目。条目O中的VMQPtr值为O。这指示条目O是VMQI的头部(在图4A中用“H”指示)。类似地,VMQ5的尾部条目位于条目15中,如设定的尾部指示符所证示。VMQPtr值为9,从而指向VMQI中的下一个最年老的条目。条目9中的VMQPtr值为1,它指向VMQI中并位于条目I中的下一个最年老的条目。条目I中的VMQPtr值为I。这指示条目I是VMQI的头部。在VMQW中,尾部条目位于条目8中,如设定的尾部指示符所证示。VMQPtr值为2,从而指向VMQW中的下一个最年老的条目。条目2中的VMQPtr值为5,它指向VMQW中且位于条目5中的下一个最年老的条目。条目5中的VMQPtr值为5。这指示条目5是VMQW的头部。此外,在每个VMQ内,尾部条目最年轻(即,具有最小的年龄值),而头部条目最年老(即,具有最大的年龄值)。在图4B中,示出了描述图4A的MQ64的实施例内的3个VMQ的链接条目的简化结构图。参见图4B,VMQI在顶部,VMQ5在中间,而VMQW在底部。每个方框代表MQ64中的一个条目,方框内的数目代表条目编号或者MQID,以及箭头编号表示图4A的VMQPtr311。如上所述和在图4B中所示,VMQI的尾部是条目4,条目4指向条目14,条目14指向条目0,条目O指向它自己,从而是VMQl的头部。剩余VMQ(例如,VMQ5和VMQW)是类似地链接的,从而不再进一步说明。参见图5,图中示出了描述MQ64的一个特定实施例内的条目的操作状态的状态图。如图中所示和如上所述,MQ64中的每个条目可处于6种状态之一。所述状态包括空闲501、分配503、初始505、页表条目(PTE)预取509、填充等待511和排队507。图2的控制单元60可以响应会改变条目状态的条件,更新每个条目中的状态指示符,如下进一步所述。当条目未跟踪转换时,可以使用空闲状态。空闲条目类似如果需要条目那么可被分配的空条目。处于分配状态的条目已被分配供控制单元使用,如果接收到转换请求的话。在一个实施例中,在每个周期,控制单元60可分配MQ64中的一个条目,以接受转换请求(如果将到达一个转换请求的话)。在一个实施例中,条目可持续一个周期停留在分配状态,以及如果不需要该条目,那么在该周期结束时,它可恢复成空闲状态。如果在条目处于分配状态的时候,转换请求到达,那么该条目会接受所述转换,从而该条目会转变成初始状态。在一个实施例中,每次转换进行TLB访问(不论是初始访问还是重试)时,都可重新计算状态。取决于TLB访问的结果,该条目将转变成4种状态之一(例如,空闲、PTE预取、填充等待或排队)。在转换请求沿着TLB流水线而行以检查TLB失败的时候,条目可持续多个周期停留在初始状态。在一个实施例中,条目可持续4个周期停留在初始状态,以等待命中或失败指示。取决于TLB访问的结果,处于初始状态的条目可转变成4种其它状态之一。更具体地,如果存在TLB命中并且转换结束,那么条目转变成空闲状态。如果存在TLB失败并且开始了PTE预取,那么条目转变成PTE预取状态。如果存在TLB失败,但是另外的某个条目处于等待预取相同PTE的PTE预取状态,那么该条目转变成填充等待状态。如果存在TLB命中,但是转换因诸如排序约束、总线繁忙之类原因而不能完成,那么该条目可以转变成排队状态。处于PTE预取状态的条目已向内存发送PTE预取请求,从而等待该请求的转换数据。当数据被返回给TLB时,TLB可用填充通知通报控制单元60。该条目可被转变成排队状态。处于排队状态的条目等待重新进行TLB的转换重试访问的时机。当发生TLB填充或者存在TLB命中时,该条目准备好重试,不过如上所述,该条目可能不是将被重试的下一个条目。一旦进行了重试并且完成了转换,那么该条目可转变成空闲状态。转变成填充等待状态的条目在等待TLB失败之后的TLB填充,不过另一个条目中的另一个转换请求已发出了对相同PTE的PTE预取。当转换数据被返回给TLB时,TLB可用填充通知通报控制单元60。该条目可被转变成排队状态。图6是描述在图2-图5中所示的地址转换单元的一个实施例的操作的流程图。共同参见图2-图6,并从图6的方框601开始,MQ64中的所有条目处于空闲状态。每个总线周期,在接收到转换请求的情况下,控制单元60可把MQ64中的一个条目(由仲裁器52选11择)转变成分配状态(方框603)。如果未接收到Rd或Wr转换请求(方框605),那么在该周期结束时,控制单元60可使该条目变回空闲状态(方框607)。不过,如果接收到转换请求(方框605),那么控制单元60可把该转换保存在分配的条目中(方框609),以及然后把该条目转变成初始状态。在该转换进入TLB流水线并且指示TLB70中的命中或失败的时候,该条目可停留在初始状态。在任意阶段,如果在第一个或者任何先前的转换在MQ64中的时候,接收到了具有相同RID的第二个或后续读取转换请求,或者第二个或后续写入转换(方框631),那么控制单元60被配置成把第二个或后续请求保存在MQ64的下一个分配条目中(方框633)。控制单元60随后写入条目状态信息,以把该条目转变成初始状态(方框635),然后通过把先前的尾部条目的MQID写入新条目的VMQPtr中,把该条目附加到适当VMQ的尾部(方框637)。控制单元60还使尾部指示符指示该新条目现在是尾部(方框634)。因而,用虚线表示方框631,以指示这可出现在操作流程中的任何地方。一旦新条目是现有VMQ的一部分,那么操作流程的剩余部分就适用于任何条目。如果存在TLB命中(方框613),并且完成了转换(方框615),那么控制单元60可把该条目转变回空闲状态(方框607)。如果该条目不是具有其它条目的VMQ的一部分(方框641),那么如上结合方框603所述地继续进行操作。不过,如果条目是具有其它条目的VMQ的一部分(方框641),那么控制单元60可访问VMQ中的下一个较年轻的条目,以及把该下一个较年轻条目的MQID写入VMQPtr311中,从而使该条目成为VMQ的头部(方框643)。如上结合方框603所述地继续进行操作。返回参见方框615,如果由于各种原因,比如上面所述的原因,未完成转换,那么控制单元60可把该条目转变成排队状态(方框617),在排队状态下,该条目可以等待TBL访问的重试(方框619)。一旦仲裁器52批准重试,转换就结束(方框621),并使该条目恢复成空闲状态(方框607)。在一个实施例中,当处于排队状态并且准备好重试对TLB70的转换访问的头部条目不止一个时,仲裁器52可利用Age指示符305,判定可以重试哪个条目。更特别地,在一个实施例中,可以首先重试最年老的就绪条目。如上结合方框641所述地继续进行操作。返回参见方框613,如果存在TLB失败,并且不存在就已进行对相同PTE的PTE预取的转换请求来说的其它条目(方框623),那么发出PTE预取,以及控制单元60可把该条目转变成PTE预取状态(方框625),以等待TLB填充,和转换数据返回到TLB70(方框627)。当转换数据到达TLB70时,控制单元60被告知TLB填充,以及控制单元60可把该条目转变成排队状态(方框617),以等待TLB的转换访问的重试(方框619)。当该转换完成时(方框621),控制单元60可把该条目转换成空闲状态(方框607)。如上结合方框603所述地继续进行操作。另一方面,如果存在TLB失败(方框613),并且另一个条目中的另一个转换请求已进行对相同PTE的PTE预取(方框623),那么控制单元60可把该条目转变成填充等待状态(方框629),以等待转换数据返回到TLB70(方框627)。当转换数据到达TLB70时,控制单元60被告知TLB填充,以及控制单元60可把该条目转变成排队状态(方框617),以等待TLB的转换访问的重试(方框619)。当该转换完成时(方框621),控制单元60可把该条目转换成空闲状态(方框607)。如上结合方框641所述地继续进行操作。注意尽管按照特定顺序说明和示出了操作流程,不过预期在其它实施例中,可根据需要按照不同的顺序进行在各个方框中描述的操作。虽然相当详细地说明了上面的实施例,不过一旦充分理解上面的公开内容,对本领域的技术人员来说,众多的变化和修改将变得明显。以下的权利要求意图包含所有这样的变化和修改。权利要求1.一种转换单元,包括配置成保存多个地址转换的旁路转换缓冲器(TLB);失败队列,所述失败队列与TLB耦接并被配置成保存在TLB中失败的接收的地址转换请求,其中失败队列包括多个条目,其中所述多个条目中的至少一些都被分别配置成保存相应地址转换请求和对应标识符,其中给定条目的对应标识符识别失败队列中的保存另一个相应地址转换请求的另一个条目,所述另一个相应地址转换请求具有与给定条目中的所述相应地址转换请求的处理排序约束相同的处理排序约束;和控制单元,所述控制单元与失败队列耦接并被配置成处理接收的地址转换请求,其中控制单元被配置成按照取决于每个相应地址转换请求的标识符的顺序,处理每个相应地址转换请求。2.按照权利要求I所述的转换单元,其中相应地址转换请求中的具有相同处理排序约束的一个或多个地址转换请求属于一个虚拟失败队列(VMQ)。3.按照权利要求2所述的转换单元,其中每个VMQ始于最年轻的相应地址转换请求,且止于最年老的相应地址转换请求。4.按照权利要求2所述的转换单元,其中每个相应地址转换请求通过标识符被链接到相同VMQ中的下一个较年老的相应地址转换。5.按照权利要求2所述的转换单元,其中与给定VMQ的最年轻的相应地址转换请求相关的条目进一步包括尾部标识符。6.按照权利要求2所述的转换单元,其中给定VMQ的最年老的相应地址转换请求的标识符识别失败队列中保存所述给定VMQ的最年老的相应地址转换请求的条目。7.按照权利要求2所述的转换单元,其中控制单元被配置成使每个VMQ中的每个转换请求保持多种状态之一,其中响应接收到对应于给定转换请求的地址转换已被保存在TLB中的通知,控制单元被进一步配置成使所述给定转换请求转变成排队状态。8.按照权利要求7所述的转换单元,进一步包括仲裁器,所述仲裁器耦接到失败队列并被配置成每个周期选择重试处于排队状态的所有转换请求中的最年老的转换请求。9.按照权利要求I所述的转换单元,其中每个条目进一步包括年龄指示符,所述年龄指示符指示失败队列中的每个条目相对于保存有效的相应地址转换请求的每个另一个条目的年龄。10.按照权利要求9所述的转换单元,进一步包括仲裁器,所述仲裁器耦接到失败队列并被配置成响应接收到对应于特定的相应地址转换请求的地址转换已被保存在TLB中的通知,选择重试所述特定的相应地址转换请求。11.按照权利要求10所述的转换单元,其中仲裁器被配置成根据多个相应地址转换请求中的每个地址转换请求的年龄指示符,在其对应的地址转换已被保存在TLB中的多个相应地址转换请求中进行选择。12.—种系统,包括一个或多个设备;按照前述权利要求1-11任意之一所述的转换单元。13.—种方法,包括旁路转换缓冲器(TLB)保存多个地址转换;2失败队列保存在TLB中失败的接收的地址转换请求,其中失败队列包括多个条目,其中所述多个条目中的至少一些保存相应地址转换请求和对应标识符,其中给定条目的对应标识符识别失败队列中的保存另一个相应地址转换请求的另一个条目,所述另一个相应地址转换请求具有与给定条目中的所述相应地址转换请求的处理排序约束相同的处理排序约束;和控制单元按照取决于每个相应地址转换请求的标识符的顺序,处理每个相应地址转换请求。14.按照权利要求13所述的方法,其中相应地址转换请求中的具有相同处理排序约束的一个或多个地址转换请求属于一个虚拟失败队列(VMQ)。15.按照权利要求14所述的方法,进一步包括通过使新的相应地址转换请求的标识符识别最年轻的相应地址转换请求,并使新的相应地址转换请求的第二标识符把新的相应地址转换请求识别成新的最年轻的转换请求,在每个VMQ内,把新的相应地址转换请求附加到最年轻的相应地址转换请求上。16.按照权利要求13所述的方法,进一步包括保持指示失败队列中的每个条目相对于失败队列中的每个其它条目的年龄的指示符。17.按照权利要求16所述的方法,进一步包括每个周期选择重试处于就绪状态的所有相应地址转换请求中的最年老的相应地址转换请求。全文摘要本发明涉及具有多个虚拟队列的地址转换单元。地址转换单元包括旁路转换缓冲器(TLB)、失败队列和控制单元。TLB可保存多个地址转换。失败队列可保存在TLB中失败的接收的地址转换请求。失败队列包括多个条目。至少一些条目可都保存相应地址转换请求和对应标识符。给定条目的对应标识符识别失败队列中的保存另一个相应地址转换请求的另一个条目,所述另一个相应地址转换请求具有与给定条目中的相应地址转换请求的处理排序约束相同的处理排序约束。借助标识符链接在一起的具有相同排序约束的地址转换属于相同的虚拟失败队列。控制单元可按照取决于标识符的顺序,处理接收的地址转换请求。文档编号G06F12/10GK102597971SQ201080048981公开日2012年7月18日申请日期2010年10月29日优先权日2009年10月29日发明者J·A·小培托里诺申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1