用于处理I/O地址转换高速缓存未命中的方法和系统技术方案

技术编号:2837370 阅读:159 留言:0更新日期:2012-04-11 18:40
本发明专利技术的实施例总体上提供了一种用于在CPU内处理由I/O命令引起的I/O地址转换高速缓存未命中的改进技术。对于某些实施例来说,CPU硬件可以在命令队列中缓存引起I/O地址转换高速缓存未命中的I/O命令,直到用必要的信息更新了I/O地址转换高速缓存为止。当I/O地址转换高速缓存已经被更新时,CPU可以从命令队列中重新发布I/O命令,在适当的时间转换I/O命令的地址,并且执行所述命令,就好像高速缓存未命中没有出现过一样。这样,I/O设备不需要处理来自CPU的错误响应,所述I/O命令由CPU来处理,并且不会丢弃I/O命令。

【技术实现步骤摘要】

本专利技术总体上涉及中央处理单元内的I/O地址转换。
技术介绍
计算系统往往包括中央处理单元(CPU)。通常,系统内的其它设备向CPU发出请求以执行命令。可能向CPU发出命令请求的设备的示例包括视频卡、声卡或者系统内的I/O(输入/输出)设备。I/O设备可以向CPU发送命令以便进行处理。来自I/O设备的命令可以把存储器地址作为目标,并且通过I/O虚拟存储器地址来引用该存储器地址。如果所述命令涉及I/O虚拟存储器地址,那么CPU必须在执行所述命令以前把I/O虚拟存储器地址转换为对应的物理存储器地址。为了提供对数据和指令的更为快速的访问,并且为了更好地利用CPU,CPU可以具有多个高速缓存。高速缓存是这样一种存储器,其通常小于计算机系统的主存储器,并且通常被制造在与处理器相同的小片(即,芯片)上。高速缓存存储器通常存储来自经常使用的主存储器单元的数据的副本。高速缓存还可以存储I/O虚拟存储器的I/O地址转换信息,诸如段表和页表,以便有助于把I/O虚拟存储器地址转换为对应的物理存储器地址。总体上讲,用于提供I/O地址转换的高速缓存结构通常被称为I/O地址转换高速缓存或者转换后援缓冲器。当处理器希望转换存储器地址时,处理器可能会首先检查I/O地址转换高速缓存,以便查看I/O地址转换表条目是否存在于高速缓存中。倘若如此,那么处理器使用高速缓存中的I/O地址转换表条目。如果I/O地址转换表条目存在于高速缓存中,那么它通常被称为“高速缓存命中”。如果I/O地址转换表条目没有存在于高速缓存中,那么它通常被称为“高速缓存未命中”。当出现高速缓存未命中时,必须从主存储器中取出所期望的数据。目前,当需要I/O地址转换的I/O命令引起高速缓存未命中时,在CPU内可能会产生中断。这种中断使正在CPU上执行的软件响应于I/O地址转换高速缓存未命中而执行某些功能。通常,CPU和/或软件将向已发送了需要I/O地址转换的命令的I/O设备发送错误响应。然后,响应于所述错误响应,I/O设备必须确定要采取什么行动。所述I/O设备可以决定重新发布命令,I/O设备软件可以决定重启I/O操作,或者I/O设备软件可以开始恢复操作。采用此方案的问题是软件处理异常并且向I/O设备指明转换表条目已经被加载而且可以重新发布命令所花费的时间量。采用此方案的另一问题在于当出现I/O地址转换未命中时,可能有多个来自I/O设备的命令正由CPU进行处理。当处理器告诉I/O设备它可以重新发布引起I/O地址转换高速缓存未命中的命令时,来自I/O设备的许多其它命令也许已经完成了。这样做可能会因引起I/O地址转换高速缓存未命中的命令而造成排序问题。因此,需要一种改进的方法和设备来处理因从I/O设备接收的命令引起的I/O地址转换高速缓存未命中。
技术实现思路
本专利技术总体上提供了能够使软件处理因从I/O设备接收的命令而引起的I/O地址转换高速缓存未命中的系统和方法。一个实施例提供了一种用于处理由一个或多个I/O命令引起的I/O地址转换高速缓存未命中的方法,所述一个或多个I/O命令是由一个或多个I/O设备发送至中央处理单元的。所述方法总体上包括在中央处理单元(CPU)内,在命令队列中缓存一个或多个I/O命令;从存储器中取出I/O地址转换表条目,并且把I/O地址转换表条目放置在I/O地址转换高速缓存中;以及,执行下述操作中的至少一个重新发布所述一个或多个I/O命令以便进行I/O地址转换,或者向发送所述一个或多个I/O命令至CPU的所述一个或多个I/O设备发送错误消息。另一个实施例提供了一种中央处理单元(CPU)。所述CPU总体上包括I/O地址转换高速缓存;一个或多个异常命令队列;以及命令处理逻辑。所述命令处理逻辑总体上被配置为在一个或多个异常命令队列中缓存引起I/O地址转换高速缓存未命中的一个或多个I/O命令,在软件控制下加载I/O地址转换高速缓存,并且执行下述操作中的至少一个重新发布所述一个或多个I/O命令以便进行I/O地址转换,或者向发送所述一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息。另一个实施例提供了一种系统,其总体上包括一个或多个输入/输出(I/O)设备;以及中央处理单元(CPU)。所述CPU总体上包括一个或多个异常命令队列,I/O地址转换高速缓存以及命令处理逻辑。所述命令处理逻辑总体上被配置为在一个或多个异常命令队列中缓存引起I/O地址转换高速缓存未命中的一个或多个I/O命令;在软件控制下加载I/O地址转换高速缓存;并且执行下述操作中的至少一个重新发布所述一个或多个I/O命令以便进行I/O地址转换,或者向发送所述一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息。附图说明通过参考在附图中举例说明的本专利技术的实施例,可以获得实现和更加详细地理解以上所述的本专利技术的特征、优点和目的的方式,以及对以上简要概括的本专利技术的更加具体的描述。然而,应该注意的是,附图仅仅举例说明了本专利技术的典型实施例,因此,不应将其视为对本专利技术范围的限制,本专利技术可以允许其它等效的实施例。图1是举例说明依照本专利技术一个实施例的计算环境的框图。图2是举例说明依照本专利技术一个实施例的涉及接收I/O设备命令和执行I/O地址转换的操作的流程图。图3A和3B是举例说明依照本专利技术一个实施例的涉及接收I/O设备命令和执行I/O地址转换的操作的流程图。具体实施例方式本专利技术的实施例总体上提供了一种改进的技术,其用于处理CPU内由I/O命令引起的I/O地址转换高速缓存未命中。对于某些实施例来说,CPU硬件可以在命令队列中缓存引起I/O地址转换高速缓存未命中的I/O命令,直到采用必要的信息更新了I/O地址转换高速缓存为止。当I/O地址转换高速缓存已经被更新时,CPU可以重新发布命令队列中的I/O命令,在适当的时间转换I/O命令的地址,并且执行所述命令,就好像高速缓存未命中没有出现过一样。这样,I/O设备不需要处理来自CPU的错误响应,所述I/O命令通过CPU来处理,并且不会丢弃I/O命令。在下文中,将描述本专利技术的实施例。然而,应该理解的是,本专利技术不局限于具体描述的实施例。相反,无论是否涉及不同的实施例,都可以设想到下列特征和元素的任何组合来实现并且实施本专利技术。此外,在各种实施例中,本专利技术提供了很多优于现有技术的优点。然而,虽然本专利技术的实施例可以实现优于其它可能的方案和/或现有技术的优点,但是,特定的优点是否由给定的实施例来实现,不会对本专利技术构成限制。由此,以下的方面、特征、实施例和优点仅仅是说明性的,并且除非在一个或多个权利要求中明确叙述了,否则就不应当被认为是所附权利要求的元素或者限制。同样地,对“本专利技术”的描述不应该被认为是对此处公开的任何专利技术主题的概括,并且不应该被认为是所附权利要求的元素或者限制,除非在一个或多个权利要求中明确叙述了。示例性的系统图1是举例说明依照本专利技术一个实施例的耦合至I/O设备104的中央处理单元(CPU)102的框图。在一个实施例中,所述CPU 102可以驻留在计算机系统100内,所述计算机系统100诸如为个人计算机或者游戏系统。所述I/O设备104也可以驻留在同一计算机系统内。在现代计算系统中,可以有多个附连于CPU 102的I/O设备104。例如,I/O设备10本文档来自技高网
...

【技术保护点】
一种用于处理由一个或多个I/O命令引起的I/O地址转换高速缓存未命中的方法,其中所述一个或多个I/O命令是由一个或多个I/O设备发送至中央处理单元的,所述方法包括:    在中央处理单元、即CPU内,在一个或多个命令队列中缓存一个或多个I/O命令;    从存储器中取出至少一个I/O地址转换表条目,并且把I/O地址转换表条目放置在I/O地址转换高速缓存中;并且    执行下述操作中的至少一个:重新发布一个或多个I/O命令以便进行I/O地址转换,或者向发送一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息。

【技术特征摘要】
US 2006-4-13 11/279,6141.一种用于处理由一个或多个I/O命令引起的I/O地址转换高速缓存未命中的方法,其中所述一个或多个I/O命令是由一个或多个I/O设备发送至中央处理单元的,所述方法包括在中央处理单元、即CPU内,在一个或多个命令队列中缓存一个或多个I/O命令;从存储器中取出至少一个I/O地址转换表条目,并且把I/O地址转换表条目放置在I/O地址转换高速缓存中;并且执行下述操作中的至少一个重新发布一个或多个I/O命令以便进行I/O地址转换,或者向发送一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息。2.如权利要求1所述的方法,还包括当一个或多个I/O命令引起I/O地址转换高速缓存未命中时,在中央处理单元中生成异常。3.如权利要求2所述的方法,还包括当一个或多个I/O命令引起I/O地址转换高速缓存未命中时,在异常状态寄存器中设置对应于在其上把一个或多个I/O命令发送给CPU的一个或多个虚拟通道的位。4.如权利要求1所述的方法,还包括响应于取出I/O地址转换表条目,软件清除异常状态寄存器中的位。5.如权利要求4所述的方法,还包括响应于软件清除异常状态寄存器中的位,而执行下述操作中的至少一个响应于软件清除异常状态位而重新发布一个或多个命令以便进行I/O地址转换,或者响应于软件设置故障拒绝位而向发送I/O命令至中央处理单元的一个或多个设备发送错误消息。6.如权利要求1所述的方法,其中,从存储器中取出I/O地址转换表条目并且将其放置在I/O地址转换高速缓存中是由软件处理的。7.如权利要求1所述的方法,其中,一个或多个命令队列存储与在其上把一个或多个I/O命令发送给中央处理单元的同一虚拟通道相对应的一个或多个I/O命令。8.如权利要求7所述的方法,其中,以虚拟通道为基础来重新发布一个或多个I/O命令。9.如权利要求7所述的方法,其中,向发送一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息的步骤还包括以每一虚拟通道为基础,从一个或多个命令队列中丢弃一个或多个命令。10.一种中央处理单元、即CPU,包括I/O地址转换高速缓存;一个或多个异常命令队列;以及命令处理逻辑,被配置为在一个或多个异常命令队列中缓存引起I/O地址转换高速缓存未命中的一个或多个I/O命令,并且在异常之后,在软件控制下,加载所述I/O地址转换高速缓存,并且执行下述操作中的至少一个重新发布一个或多个I/O命令以便进行I/O地址转换,或者向发送一个或多个I/O命令至CPU的一个或多个I/O设备发送错误消息。11.如权利要求10所述的CPU,其中所述命令处理逻辑还被配置为当一个或多个I/O命令引起I/O地址转换高速缓存未命中时,在CPU中生成异常,并且所述命令处理逻辑被配置为使软件处理高速缓存未命中;并且当一个或多个...

【专利技术属性】
技术研发人员:查德B麦克布里德安德鲁H沃特雷恩约翰D艾利史
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1