测量地址转换延迟的制作方法

文档序号:15307340发布日期:2018-08-31 21:13阅读:211来源:国知局
本技术涉及数据处理领域。
背景技术
::数据处理设备可处理指令。一些设备可包括用于在处理这些指令时测量处理设备的性能的机制。技术实现要素:至少一些示例提供了一种设备,包括:处理电路,用以处理指令;地址转换电路,用以响应于由处理电路处理的指令而转换地址;以及转换延迟测量电路,用以测量由地址转换电路响应于给定指令而执行的地址转换过程的至少部分的延迟。至少一些示例提供了一种设备,包括:用于处理指令的装置;用于响应于由用于处理的装置处理的指令而转换地址的装置;以及用于测量由用于转换的装置响应于给定指令而执行的地址转换过程的至少部分的延迟的装置。至少一些示例提供了一种方法,包括:处理指令;响应于被处理的指令而转换地址;以及测量响应于给定指令而执行的地址转换过程的至少部分的延迟。附图说明现在参考附图,仅通过示例描述本发明的实施例,其中:图1示意性地示出了处理管线的一个示例;图2示意性地示出了具有两个mmu的地址转换电路的一个示例;图3示出了多级页表移动的示例;图4示出了存在两个阶段的地址转换的多级页表移动的示例;图5示意性地示出了性能监测电路的一个示例;图6示出了在测量地址转换过程的延迟时可被考虑的不同的开始事件及结束事件的一个示例;图7示出了用于对指令进行采样的方法;图8示出了用于测量地址转换的延迟的方法。具体实施方式下文将讨论一些具体示例。将理解的是,本发明不限定于这些特定示例。数据处理设备可具有用于在处理指令时监测性能的机制。一些数据处理设备可包括响应于指令而转换地址的地址转换电路,且与执行地址转换相关联的延迟可为处理一些指令时影响整体性能的一个因素。用于识别由地址转换引起的性能问题的一个方法可为对特定事件的发生率进行计数,这些特定事件是例如,转换查找缓冲器(translationlookasidebuffer,tlb)中的未命中或对从存储器撷取的页表数据的请求。这种方法假定,如果存在大量tlb未命中或页表移动,则与存在较少tlb未命中或页表移动时相比性能较差。然而,发明人认识到,在一些系统中,执行地址转换所花费的时间可在全部经历同一种事件,例如,tlb未命中,的指令之间有相对较大程度的改变。根据本技术的设备包括转换延迟测量电路,以测量地址转换过程的至少部分的延迟。延迟提供了转换所用时长的更直接的指示,因此可做出更为精确的成本与性能的判定。除了测量地址转换延迟之外,还可对诸如tlb未命中或页表移动的事件进行计数。与地址转换相关联的延迟可在全部经历同一种事件(例如,tlb未命中)的指令之间改变的原因很多。存在多种本地高速缓存用于地址转换的一些信息的高速缓存策略(例如,可在数据高速缓存中高速缓存页表项,或可以使用步行高速缓存(walkcache)来高速缓存存储器中的页表项的地址以加速页表移动),因此延迟可取决于在何处高速缓存所需信息。在一些示例中,地址转换电路可使用两阶段转换将虚拟地址转换为物理地址,该两阶段转换包括从虚拟地址获取中间地址的第一阶段和从中间地址获取物理地址的第二阶段。这例如可适用于支持虚拟化,在虚拟化中,第一阶段由操作系统控制,第二阶段由管理程序(hypervisor)控制。当使用两个阶段的地址转换时,本技术尤其有利,因为两阶段转换引入了更多变量,地址转换延迟可由于这些变量而改变,因此转换延迟的直接测量可比仅对tlb未命中或页表移动的数目进行计数更有用。测量出的地址转换延迟可为与用于从给定虚拟地址获取物理地址的整体地址转换过程相关联的延迟的量度。当地址转换过程包括第一转换阶段及第二转换阶段时,延迟测量可为两个阶段的总延迟。或者,测量出的延迟可只是地址转换过程的部分,或者可对该过程的数个部分进行多个单独的延迟测量。例如,可排他地对转换阶段中的一者进行延迟测量,或可单独测量两个阶段的延迟以允许对哪一阶段造成潜在的性能问题进行更有针对性的识别。地址转换过程有时可通过使用数据存储装置(例如,存储器)中的页表执行页表移动来获取转换数据。例如,如果tlb中有未命中,则可执行页表移动。在一些情况下,页表可为单级页表,在单级页表中,对存储器的单次存取返回用于转换给定虚拟地址的转换数据。然而,在一些情况下,页表可具有层级结构。在这种情况下,单次页表移动可包括对不同级别的页表的多次存取。例如,可查找给定级别的页表以识别指向下一级别的页表的指针,且可遍历数个级别的页表来定位包括所需转换数据的最终级别的页表。这种层级结构可用于缩减存储器中的页表结构的总大小。当提供多级页表结构时,与页表移动相关联的延迟可能有更大的变动,因为取决于正在使用的高速缓存策略,移动的一些步骤可比其他步骤更快或可全部省略。因此,在提供层级页表结构的系统中,通过追踪地址转换延迟而非仅对事件进行计数来监测性能尤其有用。该设备还可包括指令选择电路以选择将由转换测量电路监测的指令子集,且转换延迟测量电路可在指令子集中的一个指令需要地址转换过程时测量地址转换的延迟。另一方面,当并非来自指令子集的指令需要地址转换时,转换延迟测量电路不可测量该指令的地址转换延迟。这样可以通过不追踪全部指令来帮助减少与转换延迟测量电路相关联的面积及功率开销。对特定指令子集进行采样以作为地址转换的候选也有助于将延迟测量归属于个别指令,比起仅对在整个程序执行期间发生多少事件进行计数,此举可提供更有针对性的诊断信息。尽管有人可能预计仅记录指令子集的延迟可能会错漏某些性能关键事件,但是对指令中某一部分进行采样可给出充足信息以提供对整个程序的性能的统计代表视图。指令选择电路可识别哪些指令为将以不同方式监测的子集的部分。例如,与指令自身相关联的标记值可用以指示指令属于还是不属于该子集。标记可与指令一起沿处理管线传递,且当转换延迟测量电路检测到具有设定值的标记的指令时,该转换延迟测量电路可测量针对该指令的地址转换延迟。另一选项可为使用与指令子集分开存储的标识符来识别子集。例如,每一指令可能已具有将其区别于其他指令的指令标识符,且指令选择电路可将识别哪些指令标识符属于子集的记录与指令自身分开储存,并且当转换延迟测量电路遇到其标识符被存储在记录中的指令时,该电路可测量延迟。另一选项可为使用这些方法的组合,例如,包括指令子集的指令组的单独存储的标识符,及与该组内将用作指令子集的特定指令相关联的标记;或与沿管线传递的指令组中的全部指令相关联的标记,及指定标记组中的哪些指令将被包括在子集中的一个或更多个单独标识符。也可对微型架构中的不同部分使用不同方法,例如,一些指令族可使用标记,而其他指令可使用标识符。此外,在一些情况下,可针对指令的使用寿命中的一个或多个部分进行标记,并用其他部分的记录对指令进行引用。例如,当指令在管线中时对指令进行标记,但当指令在队列(例如,加载/存储队列)中时可使用指令标识符的记录。在给定时间允许在管线中处于飞行状态的指令子集的最大数目在不同实施方式中可不同。一些系统可提供充足的资源来同时追踪多个指令的地址转换延迟,在此情况下,可将一个以上处于飞行状态的指令识别为在给定时间属于指令子集。然而,为减少电路开销,其他系统可将被监测指令的数目限制为每次一个处于飞行状态的指令。指令选择电路可被配置为在从选择前一指令起经过预定间隔之后,选择额外指令作为指令子集中的一个指令。如果间隔足够久,则此举可有效地将被监测的处于飞行状态的指令的数目限制到一次一个。间隔可由软件设定或可为硬连线的。此外,在经过间隔及选择另一指令之间可包括推迟(delay)——并非必须在间隔到期之后选择紧随其后的指令。例如,在经过预定间隔之后,指令选择电路可在选择子集的下一成员之前对随机确定的进一步间隔进行计数。随机改变选择指令以纳入子集的间隔可提供更佳的统计采样,因为采样间隔与程序循环重合的机会减小。可根据处理周期的数目或遇到的指令的数目来定义预定间隔。在一些示例中,当经过预定间隔时,指令选择电路可推迟选择另一指令作为子集中的一个指令,直至先前选择的指令已进展超过预定处理阶段为止。此预定阶段可为完成前一指令所需的任一地址转换的时间点,或预定阶段可为随后的处理阶段,例如,管线的回写(writeback)或弃置(retire)阶段。以此方式,即使软件例如,将采样间隔设定为相对较短的时间,转换延迟测量电路也可测量每次对应于单一指令的地址转换延迟,以避免需要提供额外电路(例如,计数器)用于追踪多个指令。设备可包括性能监测电路以监测对应于指令子集的其他信息项。其他信息项可结合地址转换延迟用于确定指令子集的性能度量。由此,地址转换延迟可能不是被监测的唯一信息,并且可能形成可影响个别指令的性能的更多问题中的部分问题。一般,可测量转换延迟作为开始事件与结束事件之间的延迟。在一些情况下,哪些特定事件用作开始/结束事件是可配置的,例如,通过使用软件在配置缓存器中设定信息。或者,一些系统可具有硬连线电路,该电路将由某一类型的开始事件或结束事件触发,使得使用者不可能改变哪些事件触发延迟测量的开始及结束。在一个示例中,转换延迟测量电路可响应于地址转换电路接收到针对给定指令的地址转换请求而检测开始事件。或者,可响应于发送至被配置为发送对地址转换的请求的功能电路单元的给定指令而检测开始事件。即使地址转换过程自身在指令被发送至有关功能电路单元之后的一段时间内不开始,如果指令到达功能电路单元与地址转换请求被发送之间的推迟对每一指令而言大体上恒定不变,则略早开始地址转换延迟测量仍然允许确定与不同指令相关联的相对的地址转换推迟(并非必须提供地址转换延迟的绝对测量)。在一些情况下,在硬件中检测在给定功能电路单元处接收到的指令可能比检测实际的地址转换请求更为高效。可响应于由地址转换电路返回的转换地址而检测结束事件。或者,可响应于数据存取请求而检测结束事件,该数据存取请求指定由地址转换电路获取并被发送至数据存储装置的转换地址。此外,尽管返回转换地址与发送数据存取请求之间的时间可能并非地址转换过程自身的部分,但如果该时间对于每一指令而言相对恒定,则在数据存取请求被发送之时停止地址转换测量可仅向每一测量增添固定偏移。由此,恰好在延迟测量开始及结束之时存在某种灵活范围,以在一些情况下允许更高效的电路实施。这些开始事件及结束事件的任何组合可用于给定延迟测量。同样,在存在多个阶段的转换的情况下,开始/结束事件可与个别阶段的地址转换的开始及结束有关。同时,在一些情况下,即使在已检测到给定的开始或结束事件时,在延迟测量实际开始/停止之前也可能有一定推迟。例如,为避免采样指令的实际处理的延迟(这会影响关键路径),延迟测量可在执行与指令处理自身相关的某个操作之后开始或停止。例如,可在开始延迟测量之前发送地址转换请求,或可在停止延迟测量之前将数据存取请求发送至存储器。有不同的方式记录延迟。设备可包括计数器以响应于开始事件而开始计数并响应于结束事件而停止计数,结束事件时的计数值对应于地址转换延迟。或者,时间戳器可在开始事件时记录时间戳并在结束事件时记录另一时间戳,且可根据时间戳之间的差来计算延迟。在使用时间戳时,表示地址转换延迟的一个或多个记录值可为开始/结束时间戳自身或时间戳之间的差。转换延迟测量电路可被配置为将测量出的延迟写入存储器位置。存储器位置可包括性能监测缓冲器,该缓冲器可存储通过监测给定指令而收集的其他数据及地址转换延迟。在一些情况下,当缓冲器变满时,可发信号通知软件处理缓冲器内容,使得缓冲器可被重写其他性能数据。存储器位置也可为分配用于存储性能监测数据的存储器区域。在每一指令之后,或周期性地在监测给定数目的指令之后,或在已获取某一量的监测数据之后(该数量的数据可能是用于多个指令的数据或与一个指令相关的数据子集),可将测量出的延迟(及可选地其他性能监测信息)写入存储器位置。例如,当芯片上提供的本地缓冲器变满时,可将数据写出至存储器。也可响应于其他种类的事件(并非仅缓冲器变满)而将来自缓冲器的数据写入存储器,该事件是例如,当指令完成时,可将对应数据写入存储器。例如,针对给定指令记录的其他信息可包括:给定指令的地址、识别与给定指令相关联的上下文的上下文标识符(例如,处理或虚拟机)、给定指令的指令类型、响应于给定指令而转换的地址、响应于给定指令而获取的转换地址、与给定指令的处理相关联的总延迟、对于给定指令的地址请求在转换查找缓冲器中是否命中的指示、或对于给定指令的数据请求在数据高速缓存中是否命中的指示。在一些情况下,可应用一些过滤来确定针对给定指令而监测的数据是否应该写入存储器位置。此过滤可能特定于地址转换延迟测量,或者可能影响针对给定指令而监测的全部数据。该过滤可能基于多种参数,例如,与处理指令相关联的总延迟(例如,从调度到弃置的总延迟)。然而,当正在测量地址转换延迟时,另一选项是基于地址转换延迟自身进行过滤。例如,可设定给定阈值,并且转换延迟测量电路可在测量出的延迟大于阈值时将测量出的延迟(及可能针对同一指令而监测出的其他数据)写入存储器位置。因此,对于地址转换延迟小于阈值(因为显著的性能问题,一般不会遇到此阈值)的指令而言,可禁止写入性能数据以节省存储器位置中的空间。图1示出了用于响应于指令而执行数据处理的处理管线10的示例。管线10包括用于解码接收到的指令的解码阶段100及用于向执行阶段104发送解码指令的发送阶段102。执行阶段104可包括数个执行单元以用于实现不同类型的处理操作。由执行阶段104执行的指令的操作数是从缓存器105中读取的。在回写阶段106,指令结果被回写至缓存器105。将理解的是,图1中所示的管线阶段的特定排列仅为一个示例,且可提供其他类型的阶段,如在解码与发送之间提供的调度阶段、或用于将指令指定的架构缓存器说明符映射至提供在硬件中的物理缓存器105的缓存器重命名阶段。将理解的是,处理管线10可是依序管线或无序管线,且处理管线10可并行处理多个指令(例如。通过从公共程序线程提供指令双发送或通过支持多个线程的并行执行)。提供存储器系统118用于存储数据。在此示例中,存储器系统118包括数据高速缓存120及存储器122,但将理解的是,可提供更多级别的高速缓存。当指令需要存取存储器中的数据时,在执行阶段104获取该数据的虚拟地址。执行阶段104引用对虚拟地址进行转换的地址转换电路114,以获取物理地址用于存取存储器系统118中的数据。地址转换电路可将虚拟地址与物理地址之间的映射本地存储在转换查找缓冲器(translationlookasidebuffer,tlb)116中,在此情况下,可相对迅速地返回物理地址。当所需映射没有被存储在tlb116中时,地址转换电路114引用存储在存储器系统118中的页表来获取所需转换数据。对数据高速缓存122及系统存储器120的存取通常比存取tlb116需要更多处理周期。图1的处理管线10还包括性能监测电路110,该性能监测电路可测量并记录关于由处理管线10处理的指令的统计数据。性能监测电路110可记录关于管线中任何阶段的指令处理的度量。在此示例中,性能监测电路110包括转换延迟测量电路112,以用于测量响应于某些指令而执行的地址转换的延迟。性能监测的一种方法可为对在管线对指令流的处理期间出现的离散事件的数目进行计数,例如,对高速缓存未命中、tlb命中等的数目进行计数。然而,尽管在整体程序处理期间遇到的事件的数目可给出性能是优良还是不良的某种指示,但事件自身并不给出关于潜在的性能损失的理由的很多信息。为改良代码性能,提供关于何处发生性能问题的信息可能更有用,如识别哪一指令、码行、类型、或模块具有性能问题,并识别该指令的调用堆栈和/或路径,或识别遇到性能问题时哪一数据、变量、数组、或对象正在被处理。因此,性能监测电路110可记录针对特定指令的处理检测到的事件或诊断信息(在某些实施例中,除了针对特定指令检测到的信息之外,还可针对整个程序收集信息)。然而,针对所有被处理的指令追踪这种逐个指令的信息对监测电路110的面积和功率成本及用于存储所聚集的性能信息的存储容量而言十分昂贵。可通过对指令进行采样以减少针对其聚集性能监测信息的指令的数目来降低此成本。处理管线10还包括指令选择电路108。指令选择电路可被配置为指示特定指令组,将针对该特定指令组来监测性能(例如,通过对沿管线传递的选定指令附加标记或存储哪些指令被选择的单独记录)。不监测未被指令选择电路108指示的其他指令。当已被指令选择电路指示的指令中的一者需要地址转换时,转换延迟测量电路112测量该转换的延迟。通过将性能分析的成本削减至更易管理的水平,指令采样具有的其他优势在于,使得对特定指令进行更复杂的测量可行,如依据针对同一指令的不同事件的相关性(例如,检测加载的调度/发送与弃置之间的总延迟,或检测tlb与高速缓存未命中之间的相关性),或在无序处理器中检测在所监测的指令下弃置的指令的数目。而且,此方法也允许性能数据向特定指令的更精确归因,例如,将性能信息与给定指令的程序计数器或正在存取的数据值的虚拟地址相关联。在一种实施方式中,指令选择电路108包括计数器,软件将采样间隔写入计数器。可在解码指令中测量该间隔,或可在经过的处理周期的数目或经过的时间中测量该间隔。当使能采样时,计数器针对每个解码指令或处理周期递减,或在经过给定时段之后递减。当计数器达到零时,选择指令用于概况分析(或者,可在零点初始化计数器并向上计数至给定阈值用于触发指令选择用于概况分析)。可选地,可使能随机扰动,在该种情况下,计数器可继续对又一随机时段进行计数(例如,随机数目的更多解码指令),然后选择指令用于概况分析。随机扰动降低了采样偏差出现的机会。例如,如果采样间隔与程序循环或程序循环的组合一致,则采样指令可变得重复,且可不提供对整个程序所达到的性能的统计多样视图。应注意的是,当采样间隔或随机的额外时段结束时,在采样点周围选择指令的选择可为任意的,只要该选择一致即可,以便不引入采样偏差。例如,所选指令可为经过了采样间隔的指令或下一指令。一旦选择指令,计数器可重置,且过程可重复。然后,所选指令在管线10内被性能监测电路110追踪,并且该指令的采样记录被捕捉。将理解的是,在图1的示例中,选择指令以用于在解码阶段进行概况分析。然而,不同的微型架构可选择不同点来决定何时采样指令。可同时被选择以用于在飞行中采样的指令的最大数目可能不同,但在一些实施方式中,此数目是一次仅一个指令。如果样本的最大数目在采样间隔结束的时刻仍处于飞行状态,则选择新样本可能导致与前一样本冲突,因此指令选择电路108不选择新样本,而是在选择另一采样指令之前重置采样计数器,并等到下个采样间隔到期为止。响应于冲突,指令选择电路可递增冲突计数器,该计数器记录冲突的数目(如果出现显著的冲突数目,则此计数器可指示采样间隔过短或采样指令遇到了显著的性能问题)。在一些系统中,接收到的用于解码阶段100的解码的指令与被随后阶段处理的指令之间可存在一对一的映射。然而,在其他示例中,如管线10的随后阶段102、104、106所见的“指令”可与从指令高速缓存或存储器中撷取并提供至解码阶段100的“指令”不是同一形式。所撷取的宏指令可具有根据给定指令设定架构的编码,但解码阶段100可将这些指令映射至将由执行阶段104处理的微操作(μ-ops)。例如,加载多指令(该指令用不同值加载多个缓存器位置)能够被映射到多个μ-ops,每个μ-ops用于用一值加载缓存器,且这些μ-ops中的每一者可能需要单独的地址转换。同样,架构中可能定义有其他复杂指令,这些指令可被解码阶段100映射至更简单的μ-ops。同时,解码阶段可融合两个架构指令到执行阶段104所支持的一个μ-ops中,例如,乘法指令并继之以使用乘法所得结果进行的加法可替换为乘加μ-ops(如果执行阶段104支持该种操作)。因此,指令选择电路108所使用的采样间隔在一些情况下可依据接收到的用于解码的宏指令的数目而被计数,而在其他情况下,采样间隔可根据解码阶段生成的μ-ops的数目而被计数。随后阶段中的后续性能监测可基于μ-ops。一般而言,下文中引用的术语“指令”可视作涵盖宏指令或μ-ops。图2示出了被配置为执行两阶段地址转换的地址转换电路114的示例。一些系统支持在不同特权级别下操作的软件。例如,虚拟化设备可运行在较高特权级别下操作的管理程序及在较低特权级别下运行的一个或多个操作系统,且每个操作系统可控制在更低特权级别下运行的应用程序。应用程序及操作系统可使用虚拟地址(virtualaddress,va)来识别要在存储器系统118中存取的地址,这些地址首先在第一阶段的地址转换中被转换为中间物理地址(intermediatephysicaladdress,ipa),然后ipa在第二阶段被转换为物理地址。通过提供两个级别的地址转换,操作系统可控制阶段1(va至ipa)转换的页表以控制地址空间中哪些部分被分配给其自身及每一应用程序6,且管理程序可控制阶段2(ipa至ipa)转换的页表以控制实体地址空间中哪些部分被分配给每个操作系统。由管理程序启动的数据存取将指定va并仅需要阶段1转换,因为阶段1转换生成的ipa可相当于用于存取存储器系统118的对应物理地址。因此,地址转换电路包括两个存储器管理单元(memorymanagementunit,mmu)、阶段1(s1)mmu302、及阶段2(s2)mmu304。s1mmu302被配置为将虚拟地址(virtualaddress,va)转换为中间物理地址(intermediatephysicaladdress,ipa),s2mmu304被配置以将ipa转换为物理地址(physicaladdress,pa)。s1mmu302具有级别1tlb306、级别2tlb310、及步行高速缓存(walkcache)308。tlb可高速缓存虚拟地址空间的数个最近存取页的页表项。每一页表项可包括虚拟地址到中间地址的映射,且可选地可包括定义某些软件过程是否允许读取/写入存取的信息。当给定虚拟地址所需的地址映射不在tlb306、310中的一者中时,可执行页表移动以从存储在存储器系统118中的页表撷取所需的转换数据。在一些情况下,所需的地址转换数据可被高速缓存在数据高速缓存122中,但如若非如此,则数据可从主存储器120中撷取。移动高速缓存308可高速缓存存储器系统118中存储的转换数据(与高速缓存转换数据自身相反)的位置的地址。s1mmu302也包括转换表基址缓存器(translationtablebaseregister,ttbr)312以用于指示识别阶段1页表在存储器系统118中的位置的中间物理地址。s2mmu304类似于s1mmu302,只不过s2mmu304被配置为将中间物理地址转换为物理地址,且s2mmu304的ttbr320指定识别阶段2页表的物理地址。尽管图2示出了每一mmu具有两个级别的tlb的示例,但其他示例可能提供仅一个级别的tlb或两个以上级别的tlb,且在一些情况下,s2mmu304可具有不同数目的tlb级别。尽管图2示出了在硬件中提供两个单独mmu302、304的示例,但在其他实施例中,单个电路可以实现这两个功能。例如,可共享tlb及/或步行高速缓存,且可对项进行标记以指示这些项与阶段1转换还是阶段2转换相关。也可提供两个单独的ttbr312。其他实施例可仅具有单个阶段的地址转换,在该种情况下,可提供单个mmu302用于将虚拟地址转换为物理地址。同时,其他实施例可能具有两个以上阶段的地址转换。图3示出了在没有一个tlb存储用于转换给定地址所需的转换数据的情况下,在单个阶段的地址转换中执行页表移动的一个示例。在此示例中,页表具有级层结构,该结构中提供了数个级别的页表。来自输入虚拟地址的不同部分的位用以索引至页表结构中的每一级别。在此示例中,地址具有n+1个位(即,位[n]是最高有效地址位——n可为固定值或由软件配置),且分别使用a位[n:39]、b位[38:30]、c位[29:21]、及d位[20:12]来索引级别0、1、2、及3表(将理解的是,用以索引至每个级别的页表的精确位子集在其他示例中可以不同——这将取决于由该级别中的项表示的地址范围的大小及每一级别中提供的项数目)。在页表移动中,首先读取ttbr312以识别级别0表的基址。虚拟地址的a位指示级别0表中存储有表描述符的位置,该表描述符包括指向下一表(级别1表)的基址的指针。因此,进行一次存储器存取,以撷取存储在级别0表中的表描述符。此表描述符指示下一表(级别1表)的位置,且虚拟地址的b位用以定位识别级别2表的基址的下一表描述符。对每个另外级别的页表重复此过程,且最终级别表(在此示例中为级别3)包括提供实际转换数据以用于转换所需页中地址的页表项,并所获得的页表项被返回且被高速缓存在l1tlb306中,使得对同一页中的地址的后续存取得以更迅速地处理。因此,在图3的示例中,在返回页表项之前需要四次存储器存取。在此示例中,页大小(与一个页表项相关联的地址区块)是4kb,但将理解的是,也可使用其他页大小。在使用诸如,图3所示的层级页表结构的系统中,执行完整的页表移动可能较为缓慢,因为可能需要数次存储器存取。存在可用以加速页表移动的多种高速缓存及存储结构。通常,最近存取的页表项被存储在tlb中。在此情况下,可转换虚拟地址而完全无需执行页表移动。在其他情况下,在除最终级别以外的级别的页表移动中存取的一些或全部表描述符数据可被本地存储在步行高速缓存308中。通过在步行高速缓存中存储一些级别的页表移动的地址,对地址空间中邻近区域的随后的页表移动可通过消除用于遍历层级结构的存储器存取中的至少一者而更快执行。例如,识别最终级别3表中的页表项的地址的级别2表描述符可被高速缓存在步行高速缓存中,以便下次存取同一页表项时仅需要对级别3表进行一次存储器存取。加速页表移动的另一方式是在数据高速缓存122中存储一些页表项或页表部分,与允许相比需从主存储器120中读取的方式更快的存取。根据当前的高速缓存策略,用以撷取在tlb中未命中的两个虚拟地址的页表项所花费的时间可能很大程度上取决于表或页描述符数据被存储在何处而不同。在如上所述的具有两阶段地址转换的系统中,这种延迟变动可能会加剧,因为如图4所示,每当获得作为阶段1地址转换的部分的表描述符(提供下一级别页表的基址)时,该描述符仅具有中间物理地址的形式。为存取下一级别表,此中间物理地址需要被转换为物理地址,因此需要阶段2转换。如果所需ipa在s2l1或l2tlb314、316中命中,则阶段2转换可相对较快。然而,在最坏的情况下,每当在s1页表移动中获得另一表描述符时,可能需要执行额外的s2页表移动。如果每一阶段使用n个级别的页表,则定位最终地址转换数据以用于将原始va转换至对应ipa所需的存储器存取的数目随着n的平方增长。这加剧了针对不同的地址转换执行页表移动所耗时间的可能变动。由于哪些数据对于地址转换电路易于得到或不易于得到可以有众多排列,因此对地址转换是否存储在tlb中的离散指示并不指示tlb未命中对性能的影响。如果步行高速缓存308或数据高速缓存122的大部分可用以避免最坏情况的页表移动的全部损失,则大量tlb未命中是可接受的。另一方面,指示仅存在少数tlb未命中的报告可表示数据处理设备正在有效执行。然而,如果这些未命中全部需要图4所示的全面页表移动,则仅未命中数目的指示确实反映最大程度的成本性能。图5示出了性能监测电路110的一个示例。性能监测电路110包括延迟计数器502、事件计数器504、时间戳器506、配置缓存器508、及缓冲器510。延迟计数器502及时间戳器506提供测量延迟的备选方法,任一方法可对应于图1中的转换延迟测量电路112。延迟计数器502可在开始事件与结束事件之间递增,或者开始事件与结束事件的时序可由时间戳器506记录。缓冲器510用以存储所记录的地址转换延迟及关于其他类型的指令的其他性能指示符。例如,缓冲器510也可用以存储:·与采样指令相关的时间戳;·发出指令时所依据的上下文、特权级别、及安全状态;·指令是否生成异常;·指令是否完成执行;·指令的程序计数器虚拟地址;·指令是否是分支、加载、存储、或其他;·指令是否是条件性的(条件性选择);·总延迟,即从指令被调度以用于发送到完成指令的周期计数;·发送延迟,即从指令被调度以用于发送到发送μ-ops的周期计数;·其他事件、延迟计数器、和/或地址的记录。对于加载、存储、或原子指令,缓冲器510也可记录:·正在存取的虚拟和物理地址。·指令类型。·地址转换延迟。·转换数据请求是否在tlb中命中。·数据存取是否在第一级别高速缓存中命中。·数据存取是否在任何其他级别高速缓存中命中。·存取是否存取多套接字系统中的另一套接字。·负载的数据源的指示符。可能具有所记录的地址转换延迟的其他指令可包括高速缓存维持指令或需要转换虚拟地址的任何其他种类的指令,其中,高速缓存维持指令用于使来自数据高速缓存122的数据无效或清除该数据,该数据高速缓存122对应于指定的虚拟地址或虚拟地址区块。分组化格式可用以将与给定指令相关联的数据写入缓冲器510。例如,不同的分组头可用以识别何种类型的性能监测信息被包括在每个分组中。在一些示例中,全部性能信息可在芯片上被存储在缓冲器510中,并可通过执行读取缓冲器的指令被读出,或者可以提供接口用于从外部装置存取缓冲器。然而,这可能需要相对较大的缓冲器,该较大的缓冲器就硬件而言可能十分昂贵,且可能可行地包括的缓冲器的大小仍将仅允许收集相对较小数目的样本。因此,另一方法可为提供芯片上缓冲器510以在捕捉到监测数据时暂存少量的监测数据,且在缓冲器510变满时触发数据被从缓冲器510读出并被写出至存储器系统118的异常,以使缓冲器510在更多数据被性能监测电路110捕捉到时能够被重写。这允许收集众多样本。配置缓存器508可包括控制位以指定将记录上述事件中的哪些事件。配置缓存器508可由软件可编程地设定,或在设备制造期间可为硬连线的。性能监测电路500还包括过滤电路512,该过滤电路被配置为过滤所记录的数据。可基于指令类型对收集的样本进行过滤。例如,可仅存储加载指令的记录,同时可以不存储从其他指令收集的任何数据,包括分支或存储指令。或者,可基于事件或事件组合,例如,误预测分支、tlb未命中存取、级别1高速缓存再充填存取、和/或弃置的指令进行过滤。配置缓存器508可指定将执行怎样的过滤。在一个示例中,过滤电路512基于延迟执行过滤,以便仅存储总延迟(例如,从调度到弃置)大于给定阈值的记录、或地址转换延迟大于可编程阈值的记录。当过滤电路512确定对应于采样指令的数据满足过滤要求时,数据可被存储在缓冲器510中,然后被写出至存储器系统。或者,对应于采样指令的全部数据可在最初被写入缓冲器,无论是否满足过滤标准,但随后过滤电路512可先过滤存储在缓冲器中的数据然后再将数据写入系统存储器。图6示出了与地址转换过程相关联的不同事件的示例,示例包括:·e1:在执行阶段104中,指令被提供至地址生成单元,用于生成所需的虚拟地址(在一些情况下,地址生成单元可为用于生成地址的专用功能单元,或者地址生成单元可仅为已提供用于处理其他任务的某种电路(例如,算术/逻辑单元),该这些电路也可生成地址(例如,通过向偏置添加基址));·e2:虚拟地址被地址生成单元生成;·e3:虚拟地址请求被发送至s1mmu;·e4:中间物理地址被s1mmu返回;·e5:中间物理地址被提供至s2mmu(应注意,在一些情况下,e4及e5可大体为同一事件);·e6:物理地址被s2mmu返回;及·e7:使用所获取的物理地址的数据存取请求被发送至存储器系统118。如图6所示,地址转换过程可对应于在e3虚拟地址请求被发送至mmu与在e6物理地址被返回之间执行的操作。因此,在一些情况下,可测量开始事件e3与结束事件e6之间的地址转换延迟。这些事件之间的时间取决于诸多因素,例如,转换数据是否存储在tlb中,页表项的地址是否被高速缓存在步行高速缓存中,或页表项是否被高速缓存在存储器中的数据高速缓存中,且可响应于不同的指令而较大程度地改变。因而,测量e3与e6之间的地址转换延迟以提供有用信息以用于诊断观测到的性能损失原因是有优势的。然而,在其他情况下,用于测量地址转换延迟的开始事件可能早于在e3处发送的虚拟地址请求。例如,尽管e3与e6之间的推迟在不同转换时可不同,但每一转换中e1与e3之间的推迟或e2与e3之间的推迟可相对恒定,例如,在时间e1(此时指令被提供至地址生成单元)与时间e3(此时虚拟地址请求被发送至mmu)之间没有指令队列的情况下。因此,其他示例可使用e1或e2作为开始事件,从该开始事件起测量延迟。尽管e1与e3之间的时段实际上可能不是地址转换过程的一部分,但在e1或e2开始计数在一些情况下可能更便于在电路中实施,并且如果e1与e3之间的时间对于不同指令不太可能有显著不同,则还将提供对由给定指令的地址转换导致的相对推迟的测量。类似地,用于测量地址转换延迟的结束事件不一定是在e6返回物理地址。相反,结束事件可能为在e7发送数据存取请求之时。此外,应注意的是,测量不一定从e3开始。相反,在测量于随后的时间e3'开始之前也可包括推迟。此举可用于允许任何性能关键过程,该过程会由于开始将首先启动的测量而变慢。只要e3与e3'之间的推迟在数个测量中恒定(例如,因为其取决于信号传播通过某一组逻辑门的推迟),则稍后在e3'开始计数延迟将仅导致与所记录的绝对延迟值的固定偏离,而不会影响针对不同转换测量出的相对延迟,这些相对延迟可能比绝对延迟更有用。同样,可在e6之后并在测量停止于e6'之前包括推迟。将理解的是,图6是可在地址转换过程的测量期间使用的事件的一个示例,且可改为使用其他事件。一般而言,可使用任何开始或结束事件,这些事件允许记录可代表地址转换过程中的至少部分的延迟的值。图6示出了两阶段地址转换过程的示例,在这种情况下,也可能记录事件e3与e4之间的延迟(对应于阶段1转换的延迟),或事件e5与e6之间的延迟(对应于阶段2转换的延迟),以作为唯一的延迟测量或与测量e1/e2/e3与e6/e7之间的总延迟相结合。在其他示例中,地址转换过程可包括单一阶段的虚拟至物理地址转换。尽管图6中未示出,但阶段1转换的事件e3与e4之间可能需要页表移动,或阶段2转换的事件e5与e6之间可能需要页表移动。在这种情况下,另一选项可使开始事件为页表移动的开始(例如,检测tlb未命中或发送页表项请求到存储器),而结束事件为页表移动的完成(例如,从存储器系统返回所需页表项)。因此,也可测量延迟,作为与地址转换过程的仅部分(例如,页表移动)相关联的延迟。图7示出了用于对指令进行采样的方法。在步骤700,重置计数器。然后,过程移至步骤702,在步骤702,过程对解码指令进行计数。在步骤704,检查计数器是否达到采样阈值。如果不是,则计数器返回对解码指令进行计数。另一方面,如果计数器达到采样阈值,则过程移至步骤706,在步骤706,计数器针对更多随机数目的指令递增或递减。此举是防止采样周期变得重复,从而导致采样的群体多样性较低。然后,在步骤708,检查先前选择的指令是否仍处于飞行状态(例如,先前选择的指令是否已到达回写阶段)。如果先前选择的指令不再处于飞行状态,则在步骤710选择下一解码指令作为用于性能监测的指令。然后,过程返回步骤700。此方法可由例如,图1中的指令选择电路108实施。如上文所述,不对解码的宏指令进行计数,计数器也可对生成的微操作的数目进行计数。同时,其他示例可对根据周期时间或数目(而非指令数目)定义的采样间隔进行计数。此外,计数器可从某开始值起计数,最高达给定阈值或最低至零。图8示出了用于执行转换延迟测量的方法。在步骤600中,转换延迟测量电路112监测针对所选指令的开始事件是否已出现。当开始事件出现时,过程移至步骤602,在该步骤中,计数器响应于开始事件而启动。计数器可在开始事件之后立即启动,或在启动计数器之前可出现固定延迟,如上文针对图6所述。在步骤604中,转换延迟测量电路112监测针对所选指令的结束事件是否出现。当结束事件出现时,过程移至步骤606并停止计数器。可包括可选步骤608,在此情况下,将延迟与阈值相比较,并且在延迟大于域值的情况下,在步骤610中将延迟写入缓冲器。或者,无论延迟为何都将延迟写入缓冲器510,但在延迟小于阈值的情况下阻止将延迟写入存储器。在步骤612中,过程重置计数器并返回步骤600。也可使用针对数个采样指令测量出的地址转换延迟来得出可用于分析给定程序的执行性能的其他信息。例如,可确定诸如,最小延迟、最大延迟、或平均延迟的参数。尽管有可能在芯片上得出这种额外信息,但实际上一旦从缓冲器510或存储器系统118中读出所捕捉的延迟值即在外部执行该操作更为简单。尽管未被采样的一些指令可能会遇到大于所确定的最大值或小于所确定的最小值的延迟,但是如果选择统计有效的采样群体,则基于采样指令确定的最小/最大量仍可仅提供对横跨整个程序的最小/最大延迟的合理估计。类似地,如果已测量过全部转换的延迟,则凭借统计有效的采样群体,通过对采样延迟进行平均而确定的平均延迟可提供对实际平均值的合理预估。也可以使用测量出的延迟及在给定时段中进行的转换总数目的计数来估计平均队列深度(在给定时间在地址转换电路114中待定的未完成转换的平均数目)。利特尓定律(little’slaw)说明,稳定系统中的顾客的长期平均数l等于长期平均有效到达率λ乘以顾客在该系统中花费的平均时间w,即l=λw。可提供转换计数器(或者在效能监测电路110或地址转换电路114(mmu)自身中),以对在给定数目n的周期中进行的转换的总数目t进行计数。长期平均有效到达率λ可被确定为t/n,因此平均队列深度l可被计算为tw/n,其中w是使用如上文所述的测量出的转换延迟确定的平均转换延迟。在本申请中,词语“被配置为”用以表示设备组件具有能够执行所定义的操作的配置。在本上下文中,“配置”是指硬件或软件的互连方式或排列。例如,该设备可具有提供所定义的操作的专用硬件,或处理器或其他处理装置可被编程为执行该功能。“被配置为”不暗示设备组件需要以任何方式变更以便提供所定义的操作。尽管这里已经参考附图对本发明的说明性实施例进行了详细描述,但将理解的是,本发明并不限定于这些精确实施例,且本领域技术人员可以在不背离所附权利要求限定的本发明的范围及精神的情况下在这些实施例中实现多种变更及修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1