用于usb异步通知能力的主机检测的系统和方法_2

文档序号:9510140阅读:来源:国知局
地,旧有的设备可以错误地报告其 具有可移除媒体(因此,要求连续的轮询),甚至在它们不具有这样的可移除媒体时。为了更 好地理解对于潜在的功率节省的各种不同的方面,考虑对各种不同的组件的影响可以是合 期望的: 集线器和棹制器考虎 在管理用于USB设备树的每个节点的功率的同时,特定节点的全部子节点在那个节点 自身可以被挂起之前必须被挂起。然后,当被连接到主机控制器的整个设备树已经被挂起 时,控制器自身可以被挂起。挂起的控制器不仅节省与保持其自己电路活跃相关联的功率, 其也可以由于控制器可以生成的中断的中止(cessation)而带来降低的主机CPU功率消 耗。
[0025] CPU 考虎 为了保持主机随时知晓具有可移除媒体的设备的当前的媒体状态,系统可以利用TEST UNIT READY (TUR)命令(例如,作为媒体轮询消息)来影响周期的轮询。这对应于在定时器 过程调用的上下文中的代码的周期执行,其倾向于会将CPU保持在更高的功率状态(由于 这个活跃性)。为了尝试最小化整体的系统功率消耗,考虑下列内容可以是合期望的: (1)主机通过TEST UNIT READY命令连续轮询报告可移除媒体的设备,以便检测在媒 体状态中的任何改变。这往往会消耗附加的功率,以保持USB设备树以及主机控制器和主 机CPU在没有实际数据I/O时不必要的活跃;以及 (2)在被连接到更多功率优化的主机的同时,总线供电的大容量存储设备可能发现其 自身相比于在之前的主机版本中,在更长的时间段上保持挂起。在挂起状态中的时间的这 个长度可以超过设备维持鲁棒操作所需的时间。在这样的环境中,设备会要求临时端口继 续执行,其中端口在允许该设备完成某组内部常规事务(housekeeping)任务的时间内保持 活跃。
[0026] 外闱/设备类铟 在本文的一些实施例中,作为实现所描述的机制的回报所获得的好处可以根据设备的 类型而变化。广泛地考虑可以影响结果的两类可移除性(设备可移除性和媒体可移除性)可 以是有益的。下文的表1示出了表示这两个属性的排列的各种不同的设备类型的示例: 表1 一设备分类和可移除性
[0027] 在分类1和3中的设备将往往会从排除TEST UNIT READY轮询中清楚地受益,然 而在分类2和4中的设备可以从远程唤醒端口的能力中更多地受益。附加地,考虑如下可 以是合期望的:分类1设备的用户能够简单地将其拔掉以节省功率,而分类3设备的用户不 会被给予相同的选择。还可以指出的是,不管可移除的媒体插槽是否被占用,分类3设备都 消耗系统功率。附加地,可以指出的是,普通的USB闪存驱动器出现在分类1和分类2两者 下。这是正确的,因为现有的闪存驱动器的大部分指定比特值I (TRUE)以用于可移除介质 比特(RMB)并且因此引起(induce) TEST UNIT READY轮询,而不管其不是可移除存储介质 的真正的载体。但是,某些闪存驱动器确实精确地表示它们的不可移除媒体(例如,经由被 设置为〇的可移除媒体比特(RMB),也就是说,RMB=0),并且对于所附着的主机系统而言,相 比于报告不精确值(RMB=I)的设备有效地帮助节省更多的功率。
[0028] 一个实施例 如所提到的,通过安全地排除USB闪存驱动器的这个不必要的媒体轮询所获得的好处 是多方面的: (1)连续的轮询往往会保持设备活跃,因此防止选择性的挂起。排除轮询可以允许设备 自己到达空闲状态,并且因此被置于低功率非活跃状态; (2) 这不仅可以影响设备,也可以影响整个USB设备树,这是因为除了 USB主机控制器 之外,所有介入的集线器设备往往会保持活跃;以及 (3) 连续轮询DPC定时器也可以往往保持CPU不必要的活跃。
[0029] 因此,通过影响真正可移除读取器设备相对于USB闪存驱动器的精确识别来安全 地排除轮询将是合期望的。附加地,做出错误的识别可以使得媒体改变被错过,因此可能导 致恶化的功能以及可能的数据损毁。
[0030] 图3描绘了可能影响USB 3. 0标准等的本系统(300)的一个示例性实施例。旧有 的USB大容量存储设备308包括存储介质316,处理组件314以及接口包310,其可以进一 步包括旧有接口 IN EP 310a和OUT EP 310b。
[0031] 在这个情况下,即使旧有的设备错误地指定其是否具有可移除媒体,系统都仍然 能够利用异步通知,USB大容量存储驱动器306期待将不会达到的这样的异步通知。如果 系统确实接收到来自存储设备的异步的通知消息,那么其往往会指示该存储设备不是旧有 设备,以及该系统可以相应地对待那个设备,包括在接收到这样的通知消息时,该系统可以 利用存储设备的ID或者其他与该存储设备相关联的元数据将数据库更新为该存储设备真 正具有可移除的媒体。这个数据和/或数据库可以进一步经由遥测或者其他方式与其他主 机系统进行共享。
[0032] 可以经由介质改变过程304a来将状态异步地传递到块存储驱动器304。最终,这 样的状态可以被进一步传递到上层文件系统驱动器堆栈302。块存储驱动器304可以进一 步包括处理器,或者能够访问足够的处理能力,以便执行介质改变过程或者一些足够的过 程来检测所连接的存储设备的状态以及就它们针对I/O处理的准备就绪状态或者RMB状态 对存储设备进行查询。
[0033] 为了影响这个节省功率的异步状态更新,本系统的若干实施例可以利用用于改进 可移除媒体的正确指定和/或检测的各种不同的技术和/或方法。
[0034] 仅用于一个示例,在载运产品之前整理数据是可能的。首先,相对于读取器设备识 别尽可能多已知的(旧有的或者其他的)USB闪存驱动器可能是可能的。关于这些读取器以 及设备的元数据可以被置于可搜索的表或者其他合适的数据库中。这个数据库可以被查阅 (consult)(例如,作为初始的表)并且该系统可以视情况来应用正确的轮询行为。
[0035] 但是,由于这个初始的表/数据库可以被限制,因为其既不是穷举的也不是前视 的,所以对于主机系统,使用某些下述启发式过程和/或方法以便进一步对其进行改进可 能是可能的,如下: (1) 在初始化期间,向报告RMB=I的一些或者所有旧有单元(LUN)发出一次TUR命令 (或者指示设备对于I/O处理已准备就绪的一些其他"准备就绪"命令)。如果至少一个LNU 以NOT READY-MEDIA NOT PRESENT来响应TUR,那么这是一个闪存卡读取器或者具有真正可 移除媒体的其他设备。该系统或者主机可以在后续相应地处理它,包括禁用对那个设备的 轮询和/或将该表/数据库更新为该设备真正具有可移除媒体。 (2) 如果所有都报告READY,那么可以期望进一步的证据以便做出精确的确定。在遥 测报告中,其可能上传、共享数据(例如,与其他主机一起更新设备勘误数据库)以便包括 设备的硬件ID (VID和PID)、LUN的数量以及每个LUN报告READY相对于NOT READY的次 数(这可以是合期望的,这是由于RMB=O设备的某些少数设备偶发地以及间歇性地报告NOT READY)〇 (3) 汇总遥测样本数据,并且相对于可能未被包括在初始表/数据库中的闪存卡读取 器设备,识别非常可能的UFD。这个复查过程可以帮助将任何极端情况(corner case)和反 常排除在考虑之外。 (4) 周期性地应用这个新信息以便更新该表/数据库以及动态地更新驱动器。
[0036] 如所提到的,实现异步通知的新的USB大容量存储设备可以经由被插入在暴露于 该主机的接口描述符包的附加的中断端点来这样做。旧有的(或者下层的)主机(其不知道 这个新的异步通知功能)可以简单地忽略该附加的端点,并且保持无法利用该新特征。
[0037] 但是,仅仅更新的主机系统能够识别和利用这个新的异步通知机制。它是通过如 下方式来这样做的:选择新的中断端点以及只要设备保持在活跃的DO功率状态就维持对 这个端点持续的、未完结的请求。在由设备生成任何媒体改变事件时,设备完成该请求。在 此之后,主机重新发出另一个中断端点请求来替换最近完成的请求。当设备转换到非活跃 D3功率状态时,主机系统取消这个对该中断端点的未完成请求。随后,在设备恢复到活跃的 DO功率状态时,或者作为对应于本地检测的在设备上的媒体改变的设备唤醒信令的结果或 者由于主机所发起的转换,该主机重新建立持续的中断端点异步通知请求。
[0038] 若干处理实施例 图4描绘了可以帮助在可以或不可以具有可移除媒体的旧有设备之间进行识别和/或 区分以及帮助节省功率的过程的一个流程图实施例(400)。
[0039] 在402处,设备可以被插入在集线器中,并且稍后,在404处,该系统可以发出询问 命令(即,某种准备就
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1