用于通用串行总线系统的高速缓存管理的系统和方法

文档序号:9510131阅读:382来源:国知局
用于通用串行总线系统的高速缓存管理的系统和方法
【专利说明】用于通用串行总线系统的高速缓存管理的系统和方法
[0001]相关串请的交叉引用
[0002]本公开要求于2013年6月7日提交的美国临时专利申请N0.61/832,207的优先权和权益,其全文通过引用结合于此。
技术领域
[0003]本专利文档中所描述的技术总体上涉及存储介质,尤其涉及高速缓存管理。
【背景技术】
[0004]通用串行总线(USB)被广泛用于主机和外设设备(即,USB设备)之间的数据传输。在USB系统中,主机和外设设备之间的数据传输由主机控制器进行控制,并且主机控制器和主机之间的通信在主机控制器接口(HCI)中被指定,例如“用于通用串行总线的可扩展主机控制器接口(xHCI)”。
[0005]通常,主机控制器执行USB操作以在主机存储器和设备端点之间移动数据,其中每个设备端点对应于USB设备中可唯一寻址的部分,该部分是主机和USB设备之间的通信流中的数据的源或汇。主机控制器可以使用某种数据结构一诸如传输请求块(TRB)—进行USB操作。例如,往来于USB设备的设备端点的传输使用包括一个或多个TRB的传输描述符(TD)来定义。TD经常通过驻留于主机存储器中的一个或多个传输环(即,TD的环形队列)进行管理,并且每个传输环对应于USB设备的活动设备端点。图1描绘了包括八个TRB的示例传输环。主机控制器也可以使用包括多个TRB的命令环和事件环进行USB操作。

【发明内容】

[0006]依据这里所描述的教导,提供了用于高速缓存管理的系统和方法。一种示例系统包括高速缓存和高速缓存管理组件。该高速缓存包括对应于多个设备端点的多条高速缓存线路,设备端点包括通用串行总线(USB)设备的一部分。该高速缓存管理组件被配置为接收针对涉及到第一设备端点的数据传输的一个或多个第一传输请求块(TRB),并且确定该高速缓存中的高速缓存线路是否被分配给该第一设备端点。该高速缓存管理组件进一步被配置为响应于该高速缓存中没有高速缓存线路被分配给该第一设备端点而确定该高速缓存是否包括不包含有效TRB的空置高速缓存线路,并且响应于该高速缓存包括空置高速缓存线路,将该空置高速缓存线路分配给第一设备端点并且将该一个或多个第一 TRB存储到该空置高速缓存线路。此外,该高速缓存管理组件被配置为响应于该高速缓存并不包括空置高速缓存线路,将预定高速缓存线路分配给第一设备端点并且将一个或多个第一 TRB存储到该预定高速缓存线路。
[0007]在一个实施例中,提供了一种用于高速缓存管理的方法。接收针对涉及到第一设备端点的数据传输的一个或多个第一传输请求块(TRB),该第一设备端点包括第一通用串行总线(USB)设备的一部分。确定该高速缓存中的高速缓存线路是否被分配给该第一设备端点,该高速缓存包括对应于多个设备端点的多条高速缓存线路。响应于没有高速缓存线路被分配给该第一设备端点,确定该高速缓存是否包括不包含有效TRB的空置高速缓存线路。响应于该高速缓存包括空置高速缓存线路,将该空置高速缓存线路分配给第一设备端点并且将该一个或多个第一 TRB存储到该空置高速缓存线路。响应于该高速缓存并不包括空置高速缓存线路,将预定高速缓存线路分配给第一设备端点并且将该一个或多个第一TRB存储到该预定高速缓存线路。
[0008]在另一个实施例中,一种非瞬态计算机可读存储介质包括用于高速缓存管理的编程指令。该编程指令被配置为使得一个或多个数据处理器执行某些操作。接收针对涉及到第一设备端点的数据传输的一个或多个第一传输请求块(TRB),该第一设备端点包括第一通用串行总线(USB)设备的一部分。确定该高速缓存中的高速缓存线路是否被分配给该第一设备端点,该高速缓存包括对应于多个设备端点的多条高速缓存线路。响应于没有高速缓存线路被分配给该第一设备端点,确定该高速缓存是否包括不包含有效TRB的空置高速缓存线路。响应于该高速缓存包括空置高速缓存线路,将该空置高速缓存线路分配给第一设备端点并且将该一个或多个第一 TRB存储到该空置高速缓存线路。响应于该高速缓存并不包括空置高速缓存线路,将预定高速缓存线路分配给第一设备端点并且将该一个或多个第一 TRB存储到该预定高速缓存线路。
【附图说明】
[0009]图1描绘了包括八个TRB的示例传输环。
[0010]图2描绘了示例TRB高速缓存系统。
[0011]图3至图5描绘了示出高速缓存管理机制的示例示图。
[0012]图6描绘了示出从高速缓存获取TRB的调度器的示例示图。
[0013]图7(A)和图7(B)描绘了示出从高速缓存获取TRB的调度器的其它示例示图。
[0014]图8描绘了用于高速缓存管理的示例流程图。
【具体实施方式】
[0015]在USB系统中,主机控制器经常直接从主机存储器读取TRB以便在主机和设备端点之间进行数据传输。主机存储器访问的时延(例如,数十微秒到数毫秒)通常对系统性能造成不利影响。具有较短访问时延的高速缓存能够被用来从主机存储器预先取得并且存储多个TRB。这样,主机控制器可以直接从高速缓存而不是主机存储器读取TRB以改善系统性能。然而,高速缓存的容量经常是有限的,而主机存储器中则可能存在大量的环(例如,传输环)。因此,可能需要高速缓存管理机制来有效地将高速缓存用于与大量环相关联的数据传输。
[0016]图2描绘了示例的TRB高速缓存系统。如图2所示,TRB高速缓存系统100实施了高速缓存102,该高速缓存102包括多条高速缓存线路101,1042)…,和lO^m是正整数)。高速缓存管理组件106从特定环108k(n ^ k ^ 1)预先取得一个或多个TRB,基于高速缓存管理算法确定用于环108k的高速缓存线路,并且将预先取得的TRB存储到所确定的高速缓存线路。
[0017]特别地,每个环108” 1082,…,和108n对应于USB设备的设备端点。高速缓存组件106从对应于特定设备端点的环108k预先取得一个或多个TRB(例如,TD)。例如TRB在存储器中被构造以在主机存储器和主机控制器(图2中未示出)之间传输单个物理上连续的数据块。TRB可以包括4个双字或16个字节并且包含数据缓冲器指针、数据缓冲器的大小和控制信息。对于简单的单次缓冲器操作而言,单个TRB对应于一个TD,而对于大的多缓冲器操作而言,多个TRB可以进行链接以形成复杂TD。例如,多个环可以对应于单个USB设备的不同设备端点。
[0018]高速缓存管理组件106可以搜索高速缓存102中已经被分配给环108k的高速缓存线路。如果已经被分配给环108,的高速缓存线路被定位,则高速缓存管理组件106将预先取得的TRB存储到之前分配给环108k的高速缓存线路。如果还没有高速缓存线路被分配给环108k,则高速缓存管理组件106可以搜索并不包括任何有效TRB的空置高速缓存线路。例如,空置高速缓存线路中的所有TRB都是无效的。如图3所示,空置高速缓存线路302被定位,并且高速缓存管理组件106将空置高速缓存线路302分配给环10&并且将预先取得的TRB304存储到空置高速缓存线路302。例如,与将预先取得的TRB存储到空置高速缓存线路相关联的命中率大约为100%。
[0019]如果没有在高速缓存102中定位空置高速缓存线路,则高速缓存管理组件106可以将预定高速缓存线路402分配给环108k并且将预先取得的TRB 304存储到预定高速缓存线路402。在某些实施例中,该预定高速缓存线路可以是与用于控制与命令或状态操作相关的传输的控制端点相对应的控制高速缓存线路。在一些实施例中,该预定高速缓存线路对应于近期已经访问过的最近使用的高速缓存线路。如图5所示,高速缓存线路104?被确定为是最近使用的高速缓存线路,并且因此高速缓存管理组件106将高速缓存线路104?分配给环108k并且将预先取得的TRB 304存储到高速缓存线路104 ?。此外,高速缓存管理组件106从另一个环预先取得一个或多个TRB 502,并且确定高速缓存线路104?对应于最近使用的高速缓存线路。因此,高速缓存管理组件106将预先取得的TRB 502存储到高速缓存线路104?以替代之前存储在高速缓存线路104 ?中的TRB 304。例如,如果在主机存储器中有100个环并且在高速缓存102中有32条高速缓存线路,则与将预先取得的TRB存储到预定高速缓存线路相关联的命中率大约为31/100。
[0020]图6描绘了示出从高速缓存102获取TRB的调度器的示例示图。如图6所示,调度器602请求环108,的TRB。高速缓存102中的高速缓存线路104 3已经被分配给环108 u,并且一个或多个TRB已经从环108,中被预先取得并存储在高速缓存线路104 s中。如图6所示,高速缓存线路104s包括两个有效TRB以及两个无效TRB。针对涉及到对应于环108 u的设备端点的数据传输,单个有效TRB 604被从高速缓存线路1043获取并且被发送至调度器 602。
[0021]图7(A)和图7(B)描绘了示出从高速缓存102获取TRB的调度器的其它示例示图。如图7(A)所示,调度器606请求环108,的TRB,并且高速缓存102中的高速缓存线路104 r已经被分配给环108t。然而,高速缓存线路101中所包含的TRB全部是无效的。也就是说,高速缓存线路101对应于空置高速缓存线路。一个或多个TRB(例如,四个TRB)能够从环108t中被取得并存储在高速缓存线路104 r中。如图7(B)所示,针对涉及到对应于环108 t的设备端点的数据传输,单个TRB 608 (例如,有效或无效的)因此从高速缓存线路104r被获取并且被发送至调度器606。
[0022]图8描绘了示出用于高速缓存管理的方法的示例流程图。在702,针对涉及到设备端点的数据传输的一个或多个传输请求块(TRB)。该设备端点包括通用串行总线(USB)设备的一部分。在704,确定高速缓存中的高速缓存线路是否被分配给该设备端点。该高速缓存包括对应于多个设备端点的多条高速缓存线路。如果定位了被分配给该设备端点的高速缓存线路,则在708,将一个或多个第一 TRB存储到被分配给该设备端点的高速缓存线路。如果还没有高速缓存线路被分配给该设备端点,则在706,确定该高速缓存是否包括不包含有效TRB的空置高速缓存线路
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1