Область техники, к которой относится изобретение
Настоящее изобретение относится в целом к области управления мощностью устройств. В частности, данное изобретение относится к системе и способу обеспечения управления мощностью в отношении одного или более аппаратных устройств, соединенных шиной, для выборочной приостановки этих устройств.
Предшествующий уровень техники
Периферийные аппаратные устройства соединены с персональными компьютерами через различные шинные архитектуры. К примеру, универсальная последовательная шина (УПШ, USB) соединяет такие устройства, как концентраторы, устройства взаимодействия с человеком (HID), громкоговорители и устройства пользовательского ввода. В некоторых известных системах операционные системы главной машины поддерживают подключенные устройства при полном энергопотреблении, пока система работает, даже если такие устройства не используются в данный момент. Помимо этого любые концентраторы или контроллеры остаются бесполезными на полном энергопотреблении, когда к ним не подключены устройства, не являющиеся концентраторами. Эти ограничения подразумевают для настольных компьютеров чрезмерное потребление мощности и выделение тепла и в особенности имеют значение в контексте энергосбережения батарей питания для переносных компьютеров.
Помимо этого в некоторых известных системах шинный контроллер для шины обращается к основной памяти в главной системе непрерывно, когда этот шинный контроллер не находится в состоянии приостановки. Это не дает главной системе переводить кэш системного процессора или основной кэш для основной памяти и процессора в состояние бездействия (например, С3). Далее некоторые известные системы переводят шинный контроллер в состояние бездействия, только если ничего не подключено к портам корневого концентратора этой шины.
Описанное ниже изобретение обращено на один или более из этих и иных недостатков.
Сущность изобретения
Изобретение в общем относится к обеспечению управления мощностью в отношении одного или более аппаратных устройств, соединенных через шину. В частности, изобретение включает в себя сигнализацию и ожидание с целью приостановки первого устройства, соединенного со вторым устройством. Первое устройство посылает ко второму устройству запрос на бездействие, когда первое устройство готово приостановиться. Затем первое устройство ожидает приема от второго устройства вызова функции обратного вызова, связанной с первым устройством, чтобы приостановить первое устройство.
Способ, воплощающий аспекты изобретения, приостанавливает дерево устройств, где одно или более устройств иерархически организованы в виде дерева как родительские устройства и дочерние устройства. Контроллер в корне этого дерева принимает запрос на бездействие от одного или более дочерних устройств и приостанавливает все устройства в дереве после приема запроса на бездействие от каждого из дочерних устройств.
Изобретение также позволяет шине, главному контроллеру и любым устройствам на этой шине, связанным с вычислительной системой, такой как переносной компьютер, входить в режим низкого энергопотребления, даже пока вычислительная система поддерживает полное рабочее энергопотребление. Режим низкого энергопотребления обеспечивает экономию энергии батарей питания в переносных компьютерах, особенно когда нет устройств УПШ, подключенных к системе, и дает выигрыш по сравнению с другими компьютерными системами в отношении инициатив по экономии энергии. Изобретение переводит главный контроллер в состояние бездействия, даже несмотря на то, что к портам корневого концентратора подключены дополнительные устройства, при условии, что драйверы класса или драйверы других устройств используют преимущества этого изобретения. Далее изобретение может приостановить шину, когда к этой шине подключено комбинированное устройство, независимо от того, является ли это комбинированное устройство единственным устройством или одним устройством в дереве устройств.
В другом варианте выполнения данное изобретение позволяет всей шине приостанавливаться сразу, потому что все устройства на этой шине могут регистрировать себя как находящиеся в состоянии бездействия и готовые приостановиться. Изобретение приостанавливает одноранговые устройства, у которых отсутствует независимое управление мощностью. Изобретение абстрагирует различия между разными контроллерами от драйвера класса. Далее с помощью этого изобретения производители оригинального оборудования могут добавлять встроенные устройства в свою вычислительную систему, позволяя главному контроллеру находиться в состоянии бездействия и позволяя процессорам и кэшам, связанным со встроенными устройствами, входить в режим приостановки.
Альтернативно изобретение может содержать разные иные способы и устройства.
Другие признаки будут частично понятны и частично показаны в последующем описании.
Перечень фигур чертежей
Фиг.1 - блок-схема одного варианта выполнения изобретения, иллюстрирующая аппаратную модель устройств, соединенных по универсальной последовательной шине.
Фиг.2 - блок-схема одного варианта выполнения изобретения, иллюстрирующая среду иллюстративной вычислительной системы, в которой может быть воплощено изобретение.
Фиг.3 - блок-схема одного варианта выполнения изобретения, иллюстрирующая программную модель устройств, соединенных по универсальной последовательной шине.
Фиг.4 - блок-схема алгоритма одного варианта выполнения изобретения, иллюстрирующая работу программного обеспечения драйвера для управления дочерним устройством УПШ.
Фиг.5 - блок-схема алгоритма одного варианта выполнения изобретения, иллюстрирующая работу программного обеспечения драйвера для управления родительским устройством УПШ.
Фиг.6 - блок-схема алгоритма одного варианта выполнения изобретения, иллюстрирующая работу программного обеспечения контроллера для приостановки дерева устройств.
Фиг.7 - блок-схема одного варианта выполнения изобретения, иллюстрирующая компонент сигнализации и компонент драйвера, связанные с программным обеспечением драйвера, для управления дочерним устройством УПШ в древовидной структуре.
Фиг.8 - блок-схема одного варианта выполнения изобретения, иллюстрирующая компонент интерфейса и компонент контроллера для обеспечения управления мощностью в отношении аппаратных устройств.
Фиг.9 - блок-схема одного варианта выполнения изобретения, иллюстрирующая запрос УВВ на бездействие.
Соответствующие ссылочные позиции указывают соответствующие части по всем чертежам.
Подробное описание изобретения
На чертежах настоящее изобретение обеспечивает управление мощностью в отношении одного или более аппаратных устройств, соединенных через шину, такую как универсальная последовательная шина (УПШ).
Фиг.1 иллюстрирует аппаратную модель устройств, соединенных через УПШ, в виде блок-схемы. В варианте выполнения по фиг.1 компьютер 82 включает в себя внутреннюю шину 84 PCI (локальную шину межсоединения периферийных устройств). Периферийные компоненты, включая, но не в ограничительном смысле те, которые описываются в связи с фиг.2, соединены с внутренней шиной 84 PCI. К примеру, периферийный компонент может быть комбинированным устройством (например, устройством со множеством интерфейсов), корневым концентратором, таким как корневой концентратор 88 УПШ, или контроллером, таким как главный контроллер 86 УПШ. На фиг.1 главный контроллер 86 УПШ в компьютере 82 подключен к шине 84 PCI. Главный контроллер 86 УПШ включает в себя корневой концентратор 88 УПШ, к которому могут быть подсоединены периферийные устройства через УПШ, обобщенно показанную позицией 89. В других вариантах выполнения корневой концентратор 88 УПШ является внешним по отношению к контроллеру 86 УПШ. На фиг.1 принтер 90 и джойстик 92 соединены с корневым концентратором 88 УПШ. В этом варианте выполнения принтер 90 включает в себя концентратор, т.к. он имеет подключенные к нему мышь 94 и громкоговорители 96.
Периферийные устройства в примере по фиг.1 иерархически организованы как узлы в древовидной структуре, в которой мышь 94 и громкоговорители 96 являются дочерними узлами или дочерними устройствами принтера 90. Если принтер 90 представляет собой комбинированное устройство, то печатающий компонент является «братом» для других компонентов (узлом, имеющим общего «родителя» с узлами других компонентов) в том же самом устройстве принтера 90. В другом варианте выполнения общее родительское устройство используется как родитель для комбинированного устройства, которое само не имеет минимальных функциональных возможностей. Аналогично принтер 90 и джойстик 92 являются дочерними узлами компьютера 82. В этом случае контроллер 86, корневой концентратор 88 или компьютер именуются родительским узлом для принтера 90 или джойстика 92. В целом, концентратор, контроллер или общее родительское устройство могут быть родительским узлом для одного или более дочерних узлов. Для простоты ссылочная позиция 98 относится к устройствам вообще, таким как один или более из принтера 90, джойстика 92, мыши 94, громкоговорителей 96 и т.п.
Специалисты в данной области техники отметят, что организация узлов на фиг.1 является просто примером и что изобретение действует с любым узлом из множества узлов в древовидной структуре, соединенной со вторым узлом. Далее, хотя шина на фиг.1 является УПШ, специалисты в данной области техники отметят, что изобретение действует с любым типом шинной или сетевой архитектуры, которая обеспечивает связь между устройствами или между устройствами и контроллером.
В некоторых известных системах для дочерних устройств комбинированных устройств нельзя независимо осуществлять управление мощностью, потому что эти дочерние устройства являются компонентами одного и того же физического устройства и как таковые используют общий источник энергии совместно друг с другом. Изобретение же обеспечивает независимое управление мощностью устройства 98, которое не имеет независимого управления мощностью в отношении любых подключенных дочерних устройств (например, мыши 94 и громкоговорителей 96). Реализация изобретения представляет собой взаимодействие между программным обеспечением драйверов, таких как драйверы устройств УПШ (например, драйверы класса) и базовым стеком УПШ. Хотя изобретение, как оно описано здесь, включает в себя иллюстративные ссылки на драйверы класса, специалисты в данной области техники отметят, что изобретение в общем действует с любым типом программного обеспечения драйверов устройств (то есть не ограничено драйверами класса). Согласно изобретению драйверы класса УПШ уведомляют базовый стек УПШ, что устройство 98 бездействует и больше не используется. Когда конкретное устройство 98 бездействует, драйверы могут пожелать перевести свои соответствующие устройства 98 в режим низкого энергопотребления. Этот режим низкого энергопотребления сохраняет энергию и мощность батарей питания, если они применяются. В дополнение к этому изобретение включает в себя механизм, посредством которого базовый стек УПШ уведомляет драйвер класса, что устройство 98 может быть безопасным образом переведено в режим низкого энергопотребления. Взаимодействие между драйверами и базовым стеком позволяет драйверам класса УПШ снижать мощность их устройств 98, когда драйверы обнаруживают, что их устройства 98 бездействуют и больше не используются.
При работе в соответствии с изобретением два независимых устройства с независимыми управлением вводом/выводом и функцией, но без независимого управления мощностью, могут стать бездействующими и готовыми к приостановке независимо. Эти два независимых устройства посылают сообщение третьему устройству, с которым они оба соединены, и приостанавливаются одновременно. Далее главный контроллер 86 может быть бездействующим, даже когда одно или более устройств подсоединены к одному или более портам корневого концентратора 88. Аналогично изобретение включает в себя способ независимой приостановки одного или более портов корневого концентратора, подключенных к шине. Изобретение также обеспечивает приостановку шины, когда только комбинированное устройство соединено с этой шиной. Аналогично изобретение позволяет компьютеру приостанавливать шинный контроллер, когда к шине не подключены никакие устройства.
Новый запрос управления вводом/выводом (УВВ, IOCTL) позволяет драйверу класса УПШ уведомить базовый стек УПШ, что устройство, связанное с драйвером класса УПШ, готово к приостановке. Драйвер класса УПШ посылает запрос УВВ в базовый стек УПШ, когда этот драйвер класса обнаруживает, что устройство 98 УПШ, для которого он загружен, бездействует и больше не используется. В одном варианте выполнения УВВ посылается в базовый стек УПШ через механизм пакета запроса ввода/вывода (ПЗВВ, IRP). Одним из параметров, передаваемых в базовый стек УПШ в запросе УВВ, является указатель на функцию обратного вызова в драйвере класса УПШ, который представляет запрос. Эта функция обратного вызова является действительной функцией в драйвере класса УПШ, которая будет представлять запрос перевести устройство 98 УПШ в режим низкого энергопотребления, когда ее вызывают с этой целью.
В одном варианте выполнения изобретения устройства 98 соединены через УПШ. Комбинированное устройство УПШ (например, принтер 90, громкоговорители 96) является типом устройства 98 УПШ, которое содержит более одного интерфейса, для которого необходимо загрузить более одного (или более одного экземпляра одного и того же) драйвера класса УПШ. К примеру, множество громкоговорящих устройств УПШ, таких как громкоговорители 96, являются на самом деле комбинированными устройствами УПШ, причем один интерфейс является действительным аудиокомпонентом УПШ, а другой интерфейс является набором средств управления устройств взаимодействия с человеком (HID), как правило, используемых для повышения/снижения уровня звука, выдаваемого громкоговорителями 96. Как правило, драйверу для устройства 98 УПШ не известно, загружается ли он для простого устройства УПШ или для интерфейса в комбинированном устройстве УПШ. В общем, комбинированное устройство УПШ предоставляет множество интерфейсов. Для устройств 98 УПШ программное обеспечение для управления HID или иным устройством УПШ также именуется драйвером класса УПШ. Аналогично для УПШ программное обеспечение для управления контроллером также именуется базовым стеком УПШ. Этот базовый стек УПШ включает в себя общий родительский драйвер, драйвер концентратора и драйвер контроллера. Например, базовый стек УПШ может включать в себя USBCCGP.SYS в качестве драйвера класса для комбинированных устройств УПШ и USBHUB.SYS в качестве драйвера класса для устройств концентратора УПШ и в качестве шинного драйвера для УПШ в целом. USBHUB.SYS создает объект физического устройства (ОФУ, PDO) для каждого устройства УПШ, подключенного к системе, как для простых, так и для комбинированных устройств. В случае комбинированного устройства USBCCGP.SYS загружается в качестве драйвера класса в ОФУ, созданный USBHUB.SYS.
В типичных реализациях УПШ имеются разные ограничения. В частности, в случае комбинированного устройства УПШ отдельный интерфейс не может входить в режим низкого энергопотребления без выполнения запроса в отношении всех остальных интерфейсов в том же самом комбинированном устройстве УПШ на переход в режим низкого энергопотребления. Далее интерфейс нельзя принудительно ввести в режим низкого энергопотребления без знания или разрешения от драйвера класса УПШ, связанного с этим интерфейсом.
Помимо этого некоторые типы драйверов класса УПШ, особенно те, что предназначены для устройств ввода УПШ (или HID), требуют извещения о пользовательском вводе или активности устройства, чтобы знать, когда ввести устройство УПШ обратно в режим полного энергопотребления. Для некоторых существующих главных контроллеров УПШ в контроллере имеется аппаратная ошибка, так что функциональная возможность извещения не функционирует, если только отдельный порт УПШ находится в режиме низкого энергопотребления, а сама аппаратура всего контроллера не находится в режиме низкого энергопотребления. К примеру, если бы мышь УПШ (например, мышь 94) была подсоединена к одному порту одного из подозрительных главных контроллеров УПШ (например, главного контроллера 86 УПШ) и другое устройство УПШ было подсоединено ко второму порту того же самого контроллера, тогда, если бы драйвер класса для мыши УПШ должен был ввести устройство в режим низкого энергопотребления, драйвер класса УПШ не был бы осведомлен о последующей активности устройства (т.е. что конечный пользователь переместил мышь или щелкнул кнопкой мыши). Таким образом, драйвер класса УПШ для мыши УПШ не установил бы это устройство в режим полного энергопотребления. Эффекты этой аппаратной ошибки для конечного пользователя проявились бы в том, что мышь УПШ стала бы неработающей. Из-за этих имеющих ошибки главных контроллеров УПШ другое ограничение при работе с УПШ состоит в том, что драйверам класса УПШ, загруженным для устройств УПШ, нельзя разрешить вводить устройство УПШ, для которого этот драйвер загружен, в режим низкого энергопотребления на основании одностороннего запроса от драйверов класса УПШ.
Работа программного обеспечения драйвера согласно изобретению иллюстрируется и описывается в связи с фиг.4 и 5. На фиг.4 программное обеспечение драйвера поддерживает устройство УПШ (например, HID), действующее как дочернее устройство в дереве иерархически организованных устройств. На фиг.5 программное обеспечение драйвера поддерживает комбинированное родительское устройство УПШ или устройство концентратора УПШ в дереве иерархически организованных устройств. Программное обеспечение драйвера согласно изобретению включает в себя оба аспекта программного обеспечения, проиллюстрированного на фиг.4 и 5.
На фиг.2 блок-схема иллюстрирует один пример пригодной среды 100 вычислительной системы, в которой может быть реализовано изобретение. Эта среда 100 вычислительной системы является лишь одним примером подходящей вычислительной или операционной среды и не предназначена налагать какое-либо ограничение на объем использования или функциональных возможностей изобретения. Среда 100 вычислительной системы не должна интерпретироваться как имеющая какую бы то ни было зависимость или требование, относящиеся к любому из компонентов, проиллюстрированных в иллюстративной среде 100 вычислительной системы, или к их комбинации.
Фиг.2 показывает один пример вычислительного устройства общего назначения в виде компьютера 130. В одном варианте выполнения изобретения компьютер, такой как компьютер 130, пригоден для использования на остальных чертежах, проиллюстрированных и описанных здесь. К примеру, компьютер, такой как компьютер 130, пригоден для использования в качестве компьютера 82.
Компьютер 130 имеет один или более процессоров или блоков 132 обработки и системную память 134. В проиллюстрированном варианте выполнения системная шина 136 связывает различные компоненты, в том числе системную память 134, с процессорами 132. Шина 136 представляет одну или более из любых нескольких типов шинных структур, в том числе шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и шину процессора или локальную шину, использующие любую из различных шинных архитектур. В качестве примера, а не ограничения, такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (МСА), усовершенствованную шину ISA (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и шину межсоединений периферийных компонентов (PCI), также известную как мезонинная шина.
Компьютер 130, как правило, имеет по меньшей мере некоторый вид машиночитаемого носителя данных. Машиночитаемый носитель данных, который включает в себя как энергозависимый, так и энергонезависимый носитель, как сменный, так и несменяемый носитель, может быть любым доступным носителем, к которому компьютер 130 может осуществить доступ. В качестве примера, а не ограничения, машиночитаемые носители данных содержат компьютерные носители данных и коммуникационные среды. Компьютерные носители данных включают в себя энергозависимые и энергонезависимые носители, сменные и несменяемые носители, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. К примеру, компьютерные носители данных включают в себя ОЗУ (RAM), ПЗУ (ROM), электрически стираемое перепрограммируемое ПЗУ (EEPROM), флэш-память или память другой технологии, компакт-диски (CD-ROM), цифровые многофункциональные диски (DVD) или другие запоминающие устройства на оптических дисках, магнитные кассеты, магнитные ленты, запоминающее устройство в виде магнитного диска или другие магнитные запоминающие устройства либо любой иной носитель данных, который может быть использован для хранения необходимой информации и к которому компьютер 130 может осуществить доступ.
Коммуникационные среды обычно воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в виде сигналов, модулированных данными, таких как несущее колебание или другой механизм передачи, и включают в себя любые среды доставки информации. Специалистам в данной области техники известен сигнал, модулированный данными, одна или более характеристик которого установлены или изменены таким образом, чтобы обеспечить кодирование информации в сигнале. Проводные среды, такие как проводная сеть или прямое кабельное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды, являются примерами коммуникационных сред. Сочетания любых из перечисленных выше носителей также включены в объем машиночитаемых носителей данных.
Системная память 134 включает в себя компьютерные носители данных в виде сменной или несменяемой, энергозависимой и/или энергонезависимой памяти. В проиллюстрированном варианте выполнения системная память 134 включает в себя постоянное запоминающее устройство 138 (ПЗУ) и оперативное запоминающее устройство 140 (ОЗУ). В ПЗУ 138 обычно хранится базовая система ввода-вывода 142 (BIOS), содержащая основные процедуры, которые помогают передавать информацию между элементами в компьютере 130, например, во время загрузки. ОЗУ 140 обычно содержит данные и/или программные модули, которые оперативно доступны и/или обрабатываются в текущий момент блоком 132 обработки. В качестве примера, но не ограничения, фиг.2 иллюстрирует операционную систему 144, прикладные программы 146, другие программные модули 148 и данные 150 программ.
Компьютер 130 также может включать в себя другие сменные/несменяемые энергозависимые/энергонезависимые компьютерные носители данных. Например, фиг.2 иллюстрирует накопитель 154 на жестких магнитных дисках, который считывает с несменяемого энергонезависимого магнитного носителя или записывает на него. Фиг.2 показывает также дисковод 156 для магнитного диска, который считывает со сменного энергонезависимого магнитного диска 158 или записывает на него, и дисковод 160 для оптического диска, который считывает со сменного энергонезависимого оптического диска 162, такого как компакт-диск или другой оптический носитель, или записывает на него. Другие сменные/несменяемые энергозависимые/энергонезависимые компьютерные носители данных, которые могут быть использованы в иллюстративной операционной среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, твердотельные ОЗУ, твердотельные ПЗУ и т.п. Накопитель 144 на жестких магнитных дисках, дисковод 156 для магнитного диска и дисковод 160 для оптического диска обычно соединены с системной шиной 136 интерфейсом энергонезависимой памяти, таким как интерфейс 166.
Дисководы или другие устройства хранения данных и связанные с ними компьютерные носители данных, обсужденные выше и проиллюстрированные на фиг.2, обеспечивают хранение машиночитаемых команд, структур данных, программных модулей и других данных для компьютера 130. На фиг.2, например, накопитель 154 на жестких магнитных дисках показан как хранящий операционную систему 170, прикладные программы 172, другие модули 174 и данные 176 программ. Отметим, что эти компоненты могут либо быть такими же, как и операционная система 144, прикладные программы 146, другие программные модули 148 и данные 150 программ, либо отличаться от них. Операционной системе 170, прикладным программам 172, другим программным модулям 174 и данным 176 программ здесь присвоены отличающиеся ссылочные позиции, чтобы показать как минимум то, что они являются другими копиями.
Пользователь может вводить команды и информацию в компьютер 130 через устройства ввода, такие как клавиатура 180 и указательное устройство 182 (например, мышь, шаровой манипулятор, перо или сенсорная панель). Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую приставку, спутниковую тарелку, сканер и т.п. Эти и другие устройства ввода соединены с блоком 132 обработки через интерфейс 184 пользовательского ввода, который связан с системной шиной 136, но могут быть подключены и посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (УПШ). Монитор 188 или другой тип устройства отображения также подключен к системной шине 136 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору 188 компьютеры часто включают в себя другие периферийные устройства вывода (не показаны), такие как принтер и громкоговорители, которые могут быть подключены через выходной периферийный интерфейс (не показан).
Компьютер 130 может работать в сетевой среде с использованием логических соединений с одним или более удаленными компьютерами, такими как удаленный компьютер 194. Удаленным компьютером 194 может быть персональный компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий сетевой узел, и обычно такой компьютер включает в себя множество или все элементы, описанные выше в отношении компьютера 130. Логические соединения, показанные на фиг.2, включают в себя локальную сеть 196 (ЛС, LAN) и глобальную сеть 198 (ГС, WAN), но также могут включать в себя и другие сети. Такие сетевые среды характерны для офисов, компьютерных сетей масштаба предприятия, интрасетей и глобальных компьютерных сетей (например, Интернет).
Когда используется локальная сетевая среда, компьютер 130 подключен к ЛС 196 через сетевой интерфейс или адаптер 186. Когда используется глобальная сетевая среда, компьютер 130 обычно включает в себя модем 178 или другое средство для установления связи через ГС 198, такую как Интернет. Модем 178, который может быть внутренним или внешним, подключается к системной шине 136 через интерфейс 194 пользовательского ввода или другой подходящий механизм. В сетевой среде программные модули, показанные для компьютера 130 или его части, могут храниться в удаленном запоминающем устройстве (не показано). В качестве примера, но не ограничения, фиг.2 иллюстрирует удаленные прикладные программы 192 как находящиеся на удаленном компьютере. Следует понимать, что показанные сетевые соединения являются иллюстративными, и для установления линии связи между компьютерами могут быть использованы другие средства.
В общем случае, процессоры данных в компьютере 130 программируются посредством команд, сохраненных в различные моменты времени на разных машиночитаемых носителях данных компьютера. Программы и операционные системы обычно распространяются, например, на дискетах или компакт-дисках. С них они устанавливаются или загружаются во вторичную память компьютера. При исполнении они загружаются, по меньшей мере частично, в первичную электронную память компьютера. Изобретение, описанное здесь, включает в себя эти и другие различные типы машиночитаемых носителей данных, когда такие носители содержат команды или программы для воплощения этапов, описанных ниже, в сочетании с микропроцессором или иным процессором данных. Изобретение также включает в себя сам компьютер, когда он запрограммирован согласно способам и методикам, описанным ниже.
Для целей иллюстрации программы и иные исполняемые программные компоненты, такие как операционные системы, иллюстрируются здесь как дискретные блоки. Понятно, однако, что такие программы и компоненты находятся в разные моменты времени на разных компонентах хранения данных компьютера и исполняются процессором(процессорами) данных в компьютере.
Далее на фиг.3 блок-схема иллюстрирует программную модель устройств, соединенных через УПШ, таких как проиллюстрированные и описанные в связи с фиг.1. Программная модель по фиг.3 показывает программные компоненты, связанные с иллюстративной конфигурацией устройств. Эта конфигурация устройств на фиг.3 отличается от конфигурации устройств по фиг.1. На фиг.3 аппаратные устройства, показанные пунктиром, связаны с программными компонентами, показанными вблизи устройств.
В этом варианте выполнения контроллер 302 УПШ соединен с шиной 304 PCI, связанной с компьютером (таким как компьютер 130). Контроллер 302 УПШ включает в себя корневой концентратор 306. Этот корневой концентратор 306 включает в себя один или более портов 308, показанных как Порт № 1 - Порт № N. Концентратор 310 соединен с одним из портов 308. Программное обеспечение для концентратора 310 включает в себя шинный драйвер 312 и клиентский драйвер 314. Общий родитель (или иное комбинированное устройство) 316 и HID 318 соединены с концентратором 310 в качестве дочерних устройств или узлов концентратора 310. Программное обеспечение для HID 318 включает в себя клиентский драйвер. В примерном варианте выполнения по фиг.3 HID 318 связано с мышью. Общий родитель 316 имеет два дочерних устройства: аудиокомпонент 320 и HID 322. Программные клиентские драйверы порознь связаны с аудиокомпонентом 320 и HID 322. В этом примере аудиокомпонент 320 связан с громкоговорителем. Далее HID 322 связано с одной или более кнопками громкоговорителя.
Далее на фиг.4 блок-схема алгоритма иллюстрирует примерную работу программного обеспечения драйвера для управления дочерним устройством УПШ, таким как HID 322. Это программное обеспечение драйвера включает в себя способ сигнализации и ожидания с целью приостановки устройства УПШ (например, общего родительского устройства или устройства концентратора), как описано в связи с фиг.1 и 3. Программное обеспечение драйвера, связанное с устройством УПШ, непрерывно определяет на этапе 402, бездействует ли это устройство УПШ. Программное обеспечение драйвера представляет запрос на бездействие или другие сигналы родительскому устройству (например, родительскому устройству 316) устройства УПШ на этапе 404, если программное обеспечение драйвера определяет, что устройство УПШ бездействует или иным образом готово к приостановке. К примеру, программное обеспечение драйвера посылает запрос к своему объекту физического устройства в программном обеспечении. В одном варианте выполнения представление или посылка запроса на бездействие включает в себя передачу запроса УВВ от устройства УПШ к родительскому устройству устройства УПШ. В одном варианте выполнения передача запроса УВВ включает в себя передачу пакета запроса ввода/вывода (ПЗВВ), содержащего запрос УВВ от устройства УПШ к родительскому устройству устройства УПШ. Например, устройство УПШ может быть главным контроллером УПШ, а родительское устройство устройства УПШ может быть компьютером. В данном примере главный контроллер УПШ сигнализирует компьютеру, что главный контроллер УПШ готов к приостановке. Компьютер может вслед за этим приостановить главный контроллер УПШ, даже если никакие иные устройства не подключены к главному контроллеру УПШ. Т.е. клиентский драйвер для корневого концентратора, который желает перейти в состояние бездействия, посылает запрос на бездействие к объекту физического устройства (ОФУ) для корневого концентратора. Затем ОФУ предписывает клиентскому драйверу приостановить корневой концентратор.
В одном варианте выполнения устройство УПШ имеет активное состояние и состояние бездействия. В этом примере устройство УПШ готово приостановиться, когда оно находится в состоянии бездействия. Изобретение предполагает другие варианты выполнения, в которых устройство УПШ может желать приостановиться, даже если это устройство УПШ не полностью бездействует. Например, устройство УПШ может выполнять операции, которые не требуют полного энергопотребления. Как таковое, это устройство УПШ может продолжать выполнение операций даже при вхождении в режим низкого энергопотребления или иное состояние приостановки. В варианте выполнения, в котором устройство УПШ имеет один или более дочерних узлов (см. фиг.5 ниже), это устройство УПШ готово приостановиться, когда устройство УПШ бездействует, и каждый из дочерних узлов этого устройства УПШ готов приостановиться. В этом примере каждый из дочерних узлов устройства УПШ должен был бы послать в устройство УПШ запрос на бездействие, служащий индикатором их готовности к приостановке.
После представления запроса на бездействие программное обеспечение драйвера ожидает на этапе 406 вызова его функции обратного вызова, предназначенной для снижения мощности, родительского устройства. После того, как из родительского устройства вызывается функция обратного вызова, предназначенная для снижения мощности, программное обеспечение драйвера для устройства УПШ исполняет эту функцию обратного вызова, предназначенную для снижения мощности, с целью приостановки устройства УПШ на этапе 408. После действий, не относящихся к состоянию бездействия, программное обеспечение драйвера «пробуждает», активирует, устройство УПШ на этапе 410. Устройство УПШ, любые один или более из множества дочерних узлов устройства УПШ, родительский узел устройства УПШ или программное обеспечение, связанное с контроллером (например, прикладные программы), могут выполнять действия, не относящиеся к состоянию бездействия, которые сигнализируют устройству УПШ о необходимости перейти в активное состояние. Например, если устройство УПШ является указывающим устройством, таким как мышь, то действием, не относящимся к состоянию бездействия, может быть перемещение этой мыши. Аналогично, если родительский узел является контроллером, а одно или более устройств являются громкоговорителями, то программное обеспечение, исполняемое на компьютере, связанном с этим контроллером, может выполнять действия, не относящиеся к состоянию бездействия, воспроизводя музыку через громкоговорители. Активация устройств включает в себя сброс запросов на бездействие, так что устройства имеют возможность представлять новые запросы на бездействие.
В варианте выполнения, где устройства соединены через УПШ, после приостановки устройства УПШ (и всего дерева устройств УПШ), имеются по меньшей мере два способа, посредством которых это устройство (а вслед за ним и все дерево устройств УПШ) может быть активировано и введено обратно в режим полного энергопотребления. Первый способ состоит в том, что любой драйвер класса УПШ может ввести свое дочернее устройство в режим полного энергопотребления путем представления соответствующего запроса на установку мощности для этого устройства. Второй способ осуществляют через действие удаленной активации на любом устройстве УПШ, которое поддерживает удаленную активацию и для которого поддержка удаленной активации была задействована до того, как устройство было введено в режим низкого энергопотребления. В каждом из этих случаев результатом предпринятого действия будет введение всего дерева устройств в режим полного энергопотребления, и драйверы класса УПШ для дочерних устройств после этого будут иметь возможность снова представлять новые запросы на бездействие, когда они обнаружат, что их дочернее устройство или интерфейс бездействуют и больше не используются, и весь цикл начнется снова.
Т.е. будучи приостановленным, устройство может быть активировано по меньшей мере двумя путями. Во-первых, пробуждение может произойти через возобновление сигнализации для удаленных устройств, способных к активации (т.е. ПЗВВ ожидания/пробуждения завершается успешно). Как правило, устройство устанавливается в рабочее состояние полного энергопотребления (например, состояние D0 энергопотребления) процедурой завершения ПЗВВ ожидания/пробуждения функционального драйвера. ПЗВВ ожидания/пробуждения используется, чтобы обеспечить устройство возможностью удаленного пробуждения. Во-вторых, пробуждение может произойти через новый запрос на открытие, инициированный клиентским программным обеспечением. Во время процесса пробуждения любые сообщения запросов на бездействие сбрасываются или отменяются иным образом.
В одном варианте выполнения изобретения драйвер может отменить запрос на бездействие для своего дочернего устройства или интерфейса путем отправки, до исполнения его функции обратного вызова, запроса на отмену в родительское устройство этого дочернего устройства, когда дочернее устройство больше не готово к приостановке. В общем случае запрос на отмену посылается дочерним устройством после отправки запроса на бездействие. Контроллер (например, базовый стек УПШ) отменяет любые переходы в состояние приостановки, имеющие место в текущее время, в ответ на запрос на отмену и отменяет любые другие невыполненные запросы на бездействие для любого другого устройства в дереве устройств.
Если запрос на отмену посылается после приостановки, то контроллер рассматривает этот запрос на отмену как действие, не относящееся к состоянию бездействия, которое требует активации всего дерева устройств.
Устройство УПШ и родительское устройство соединены через коммуникационную среду. Коммуникационная среда включает в себя, но не в ограничительном смысле, любые сети или шинные архитектуры, описанные в связи с фиг.2. Такие шинные архитектуры включают в себя иерархическую параллельную шину, беспроводную шину с древовидной связностью и УПШ. К примеру, узлы, обсуждавшиеся в связи с фиг.4, могут быть устройствами, подключенными через УПШ. В этом примере концентратор УПШ и/или контроллер УПШ также приостанавливаются, когда приостанавливаются другие устройства. Далее компьютер может приостановить контроллер УПШ, даже когда никакие иные устройства (внутренние или внешние для компьютера) не подключены к шине.
Изобретение включает в себя один или более машиночитаемых носителей данных, имеющих машиноисполняемые команды для выполнения способа, проиллюстрированного на фиг.4.
В одном варианте выполнения связь между устройствами осуществляется через программные представления устройств, внутренние по отношению к операционной системе. Например, когда контроллер принимает запрос на бездействие, этот запрос на бездействие принимает для контроллера соответствующий ему программный объект устройства. Специалисты в данной области техники отметят, что эта связь может также осуществляться через электрическую сигнализацию между физическими аппаратными устройствами. Далее специалисты в данной области техники отметят, что родительские и дочерние устройства для целей управления и функционирования могут быть логически разными, но не разными физически. Например, устройства могут включать в себя встроенный концентратор и два встроенных устройства или комбинированное устройство с двумя независимо управляемыми функциями.
Далее на фиг.5 блок-схема алгоритма иллюстрирует работу программного обеспечения драйвера по управлению родительским устройством УПШ (например, родителем 316). Это родительское устройство УПШ (например, общее родительское устройство или устройство концентратора) имеет одно или более дочерних устройств (например, аудиокомпонент 320 или HID 322), подключенных к родительскому устройству УПШ. Программное обеспечение драйвера для родительского устройства УПШ, делая цикл, неоднократно возвращается на этап 502, чтобы определить, принят ли запрос на бездействие от каждого дочернего устройства. Если запрос на бездействие принят от каждого дочернего устройства, то программное обеспечение драйвера определяет на этапе 504, находится ли само родительское устройство УПШ в бездействии. Программное обеспечение драйвера возвращается к определению на этапе 502, если родительское устройство УПШ не бездействует. Если же родительское устройство УПШ бездействует, то программное обеспечение драйвера определяет на этапе 506, является ли это родительское устройство корневым концентратором. Если родительское устройство УПШ не является корневым концентратором, то это родительское устройство УПШ распространяет принятые запросы на бездействие на этапе 508 путем представления запроса на бездействие в родительское устройство (например, концентратор 310) родительского устройства УПШ. В одном варианте выполнения представленный запрос на бездействие включает в себя все запросы на бездействие от дочерних устройств. Если дочерние устройства имеют дочерние устройства, подчиненные родительскому устройству УПШ в дереве, то представленный запрос на бездействие включает в себя все запросы на бездействие, представленные каждым из подчиненных дочерних устройств. Таким образом, запросы на бездействие распространяются от каждого устройства в дереве к корневому концентратору или иному контроллеру в корне дерева.
Родительское устройство УПШ приостанавливает дерево устройств на этапе 510, если родительское устройство УПШ является корневым концентратором (см. фиг.6). В варианте выполнения, где устройства соединены через УПШ, корневой концентратор управляет мощностью для этих устройств в дереве.
Специалисты в данной области техники отметят, что порядок, в котором выполняются определения бездействия, не ограничивается проиллюстрированным на фиг.5. Определения того, принят ли запрос на бездействие от каждого дочернего устройства и бездействует ли родительское устройство УПШ, могут происходить в любом порядке, при условии, что эти определения удовлетворяются до того, как дерево приостанавливается или родительское устройство УПШ распространяет запрос на бездействие к родительскому устройству родительского устройства УПШ. Т.е. распространение запроса на бездействие в общем случае включает в себя передачу принятого запроса на бездействие от первого устройства ко второму устройству (такому как родитель первого устройства), если первое устройство готово приостановиться и если первое устройство приняло запрос на бездействие от каждого из любых дочерних устройств первого устройства. Распространение запроса на бездействие включает в себя индуктивное прохождение древовидной структуры от первого устройства к контроллеру. В частности, распространение запроса на бездействие включает в себя определение того, приняло ли первое устройство запрос на бездействие от каждого из дочерних узлов первого устройства. Программное обеспечение драйвера ожидает приема запроса на бездействие от каждого из дочерних узлов, если запрос на бездействие от каждого из дочерних узлов не принят. Программное обеспечение драйвера представляет запрос на бездействие второму устройству, если первое устройство приняло запрос на бездействие от каждого из дочерних узлов.
Изобретение включает в себя один или более машиночитаемых носителей данных, имеющих машиноисполняемые команды для выполнения способа, проиллюстрированного на фиг.5.
Далее на фиг.6 блок-схема алгоритма иллюстрирует работу программного обеспечения контроллера для приостановки дерева устройств. В варианте выполнения, где устройства соединены через УПШ, фиг.6 иллюстрирует работу программного обеспечения для корневого концентратора (например, корневого концентратора 306), который управляет мощностью устройств в дереве. В других вариантах выполнения программное обеспечение контроллера может быть связано с компонентом в корне дерева иным, нежели корневой концентратор.
Касательно фиг.6, дерево включает в себя одно или более устройств, иерархически организованных как дочерние устройства и родительские устройства в виде дерева. В частности, корневой концентратор имеет одно или более дочерних устройств, соединенных с корневым концентратором и организованных в древовидную структуру. Программное обеспечение контроллера (например, базовый стек УПШ) принимает запросы на бездействие от дочерних устройств. Программное обеспечение контроллера для корневого концентратора, делая цикл, неоднократно возвращается на этап 602, чтобы определить, принят ли запрос на бездействие от каждого дочернего устройства. Если запрос на бездействие принят от каждого дочернего устройства, то программное обеспечение контроллера приостанавливает дерево устройств на этапе 604.
В одном варианте выполнения запросы на бездействие, принятые от дочерних устройств, включают в себя распространенные запросы на бездействие от дочерних устройств, далее подчиненных в древовидной структуре. Приостановка происходит за счет того, что родительское устройство в дереве вызывает функцию обратного вызова, предназначенную для снижения мощности каждого из его дочерних устройств. Это происходит через все дерево по маршруту, задействуемому запросами на бездействие, принятыми от дочерних устройств, и распространенными запросами на бездействие. Это распространение через дерево состоит в том, что программное обеспечение драйвера для каждого дочернего устройства в дереве принимает вызов к своей функции обратного вызова от родительского устройства этого дочернего устройства, а затем эта функция обратного вызова исполняется для приостановки этого дочернего устройства. Приостановка каждого дочернего устройства включает в себя исполнение функции обратного вызова, чтобы ввести дочернее устройство в режим низкого энергопотребления или иное состояние приостановки.
В альтернативном варианте выполнения корневой концентратор или другой контроллер принимает единственный запрос на бездействие от каждого из дочерних устройств, соединенных с корневым концентратором, где принятый запрос на бездействие не включает в себя запросы на бездействие от любых далее подчиненных дочерних устройств. В ответ на прием всех запросов на бездействие от дочерних устройств корневой концентратор приостанавливает все устройства в дереве путем обратного распространения функции обратного вызова, предназначенной для снижения мощности. Т.е. программное обеспечение контроллера для корневого концентратора вызывает функцию обратного вызова, предназначенную для снижения мощности каждого из дочерних устройств корневого концентратора, затем программное обеспечение драйвера для каждого дочернего устройства вызывает функцию обратного вызова, предназначенную для снижения мощности каждого из своих дочерних устройств, и т.д. Таким образом приостанавливается каждое устройство в дереве. Этот вариант выполнения предполагает, что программное обеспечение драйвера для каждого родительского устройства осведомлено о функции обратного вызова, предназначенной для снижения мощности, специфической для программного обеспечения драйвера каждого из любых дочерних устройств родительского устройства.
Изобретение включает в себя один или более машиночитаемых носителей данных, имеющих машиноисполняемые команды для выполнения способа, проиллюстрированного на фиг.6.
Далее на фиг.7 блок-схема иллюстрирует компонент 704 сигнализации и компонент 706 драйвера, связанные с программным обеспечением драйвера для управления HID в качестве дочернего устройства в древовидной структуре. Хотя дочернее устройство на фиг.7 описывается как HID, специалистам в данной области техники понятно, что дочернее устройство может быть любым шинным устройством (например, любым устройством УПШ). Дерево включает в себя одно или более устройств, иерархически организованных как родительские устройства и дочерние устройства. В одном варианте выполнения родительские устройства и дочерние устройства соединены через УПШ. Один или более машиночитаемых носителей 702 данных, связанных с HID, имеют машиноисполняемые компоненты для сигнализации и ожидания, чтобы приостановить HID. Эти компоненты включают в себя компонент 704 сигнализации и компонент 706 драйвера. Компонент 704 сигнализации посылает запрос на бездействие от HID к родительскому устройству HID, когда HID готово приостановиться. Запрос на бездействие распространяется через дерево от родительского устройства к устройству контроллера или корневого концентратора. Далее, если HID имеет хотя бы одно дочернее устройство, то компонент 704 сигнализации принимает запрос на бездействие от дочернего устройства и посылает принятый запрос на бездействие к родительскому устройству.
В одном варианте выполнения запрос на бездействие может быть отменен HID, если он послан до приостановки HID. В этом варианте выполнения компонент 704 сигнализации посылает запрос на отмену от HID к родительскому устройству в ответ на действия HID, не относящиеся к состоянию бездействия. Запрос на отмену распространяется к устройству контроллера или корневого концентратора, и вслед за этим отменяется запрос на бездействие, посланный компонентом 704 сигнализации. Если он послан после приостановки HID, то запрос на отмену рассматривается контроллером или родительским устройством как действие, не относящееся к состоянию бездействия, которое требует пробуждения всех устройств в дереве.
Компонент 706 драйвера ожидает вызова его функции обратного вызова из родительского устройства для приостановки УПИ. Компонент 704 сигнализации принимает вызов к своей функции обратного вызова из контроллера в ответ на распространение запроса на бездействие. Компонент 706 драйвера приостанавливает HID в ответ на исполнение функции обратного вызова, вызванной компонентом 704 сигнализации. В одном варианте выполнения функция обратного вызова исполняет функцию снижения мощности для снижения мощности HID. Далее функция снижения мощности может включать в себя функцию низкого энергопотребления для введения HID в режим низкого энергопотребления. Компонент 706 драйвера пробуждает HID в ответ на действие HID, сигнал от родительского устройства или сигнал от программного обеспечения, связанного с контроллером.
Далее на фиг.8 блок-схема иллюстрирует компонент 804 интерфейса и компонент 806 контроллера, связанные с контроллером. Специалисты в данной области техники отметят, что некоторые или все функциональные возможности контроллера, описанные здесь в общем и в отношении фиг.7 и 8 в частности, могут выполняться устройством корневого концентратора, действующим как дочернее устройство контроллера. Один или более машиночитаемых носителей 802 данных имеют машиноисполняемые компоненты для обеспечения управления мощностью в отношении дерева устройств посредством контроллера в корне дерева. Эти один или более машиночитаемых носителей 802 данных связаны с контроллером. Дерево включает в себя одно или более устройств, иерархически организованных как родительские устройства и дочерние устройства в виде дерева. В одном варианте выполнения родительское устройство и дочерние устройства соединены через УПШ. Эти компоненты включают в себя компонент 804 интерфейса и компонент 806 контроллера. Компонент 804 интерфейса принимает запрос на бездействие от одного или более дочерних устройств. Компонент 806 контроллера приостанавливает все устройства в дереве после приема запроса на бездействие от каждого из дочерних устройств. Контроллер вслед за этим активирует устройства в дереве в ответ на действия контроллера или любого из устройств либо обоих.
Далее на фиг.9 блок-схема иллюстрирует структуру данных в запросе УВВ на бездействие. Машиночитаемый носитель 902 данных хранит структуру 904 данных, представляющую запрос на бездействие, воплощенный в качестве запроса УВВ. Структура 904 данных включает в себя первое поле и второе поле. Первое поле хранит атрибут 906 процедуры, представляющий функцию обратного вызова. К примеру, атрибут 906 процедуры является указателем на функцию в дочернем драйвере, которая должна быть вызвана родителем, когда родитель желает уведомить дочернее устройство, что допустимо снизить мощность этого устройства. Второе поле хранит атрибут 908 контекста, представляющий контекст отзыва. Этот контекст отзыва передает функции обратного вызова в качестве аргумента, когда она вызывается, и обеспечивает среду для исполнения функции обратного вызова. Как описано здесь, первое устройство передает запрос на бездействие ко второму устройству через структуру 904 данных, когда первое устройство готово приостановиться. Функция обратного вызова исполняется, чтобы приостановить первое устройство в ответ на передачу запроса на бездействие, как описано в связи с фиг.4 и 5.
Первое устройство имеет один или более дочерних узлов, организованных в древовидную структуру. Более того, первое устройство имеет активное состояние и состояние бездействия. Первое устройство готово приостановиться, когда готов приостановиться каждый из одного или более дочерних узлов первого устройства. В одном варианте выполнения первое устройство и второе устройство соединены через универсальную последовательную шину.
Пример структуры 904 данных на фиг.9 показан ниже.
typedef VOID (*USB_IDLE_CALLBACK)(PVOID Context);
tepedef struct _USB_IDLE_CALLBACK_INFO
{USB_IDLE_CALLBACK IdleCallback;
PVOID IdleContext};
USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
Специалисты в данной области техники отметят, что описанные здесь устройства включают в себя, но не в ограничительном смысле, устройства, внешние для компьютера, и устройства, встроенные в компьютер. К примеру, устройства могут быть совместимыми с УПШ устройствами, встроенными в переносной компьютер. С помощью этого изобретения переносной компьютер позволяет кэш-памяти и процессору(процессорам), связанным со встроенными устройствами УПШ, в свою очередь связанным с этим переносным компьютером или связанным с другим встроенным устройством (например, контроллером), входить в состояние приостановки (например, С3).
Нижеследующий специфический для УПШ пример иллюстрирует изобретение. Когда драйвер класса УПШ определяет, что устройство УПШ, для которого он загружен, бездействует и больше не используется, драйвер класса УПШ посылает ПЗВВ, содержащий запрос УВВ на бездействие в базовый стек УПШ, чтобы уведомить этот базовый стек УПШ о том, что драйвер класса УПШ для устройства желает ввести это устройство в режим низкого энергопотребления. Запрос УВВ на бездействие именуется IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION. Запрос УВВ на бездействие посылается при уровне запроса прерывания (УЗП, IRQL), соответствующем PASSIVE_LEVEL. Когда базовый стек УПШ принимает этот запрос, драйвер базового стека УПШ отмечает, что дочернее устройство бездействует. Драйвер базового стека памяти, шины или порта УПШ устанавливает соответствующий статус ошибки, такой как STATUS_SUCCESS, в переменной, такой как Irp->IoStatus.Status. Затем драйвер базового стека УПШ проходит по списку всех дочерних устройств, чтобы определить, что все драйверы класса УПШ для всех остальных дочерних устройств уже запросили ввести их дочерние устройства в режим низкого энергопотребления. Если драйвер базового стека УПШ определяет, что действительно все дочерние устройства УПШ запросили вхождение в режим низкого энергопотребления посредством драйверов класса УПШ, загруженных для каждого устройства, тогда базовый стек УПШ представляет запрос на бездействие родительскому устройству этих дочерних устройств УПШ. Родительское устройство может быть общим родительским устройством УПШ, если дочернее устройство является комбинированным устройством УПШ. Аналогично родительское устройство может быть концентратором УПШ, если дочернее устройство является простым устройством УПШ. Родительское общее устройство УПШ или устройство концентратора УПШ бездействует, если бездействуют все его дочерние устройства.
После того, как запросы на бездействие распространены через дерево устройств УПШ и запрос на бездействие представлен устройству корневого концентратора УПШ, это устройство корневого концентратора УПШ вызывает затем функцию обратного вызова своих загруженных драйверов класса (USBHUB.SYS). Каждое родительское устройство УПШ, комбинированное устройство УПШ или устройство концентратора УПШ вызывает после этого функцию обратного вызова каждого из драйверов класса УПШ, загруженных для каждого из дочерних устройств или интерфейсов УПШ. Все такие драйверы запрашивают введение своего устройства или интерфейса УПШ в режим низкого энергопотребления, и тем самым все дерево устройств УПШ и корневой концентратор УПШ вводятся в режим низкого энергопотребления. Когда корневой концентратор УПШ вводится в режим низкого энергопотребления, главный контроллер УПШ вслед за этим тоже вводится в режим низкого энергопотребления. Если устройства или интерфейсы УПШ поддерживают удаленное пробуждение и не имеют запроса IRP_MN_WAIT_WAKE, ожидающего обработки, то процедуры обратного вызова для этих устройств или интерфейсов должны представить запрос IRP_MN_WAIT_WAKE в базовый стек УПШ до выключения устройства или интерфейса. Альтернативно функциональный драйвер представляет ПЗВВ ожидания/пробуждения стеку драйверов УПШ, когда становится ясно, что этот ПЗВВ будет запрошен, вместо того, чтобы делать это в процедуре обратного вызова.
Помимо этого драйвер концентратора завершает запрос на бездействие кодом статуса, служащим индикатором успеха, если устройство может быть установлено в рабочее состояние полного энергопотребления (т.е. D0). Это сообщает драйверам вышерасположенных уровней, что устройство больше не бездействует. Если, однако же, устройство удалено или остановлено, то драйвер концентратора завершает ПЗВВ запроса на бездействие соответствующим кодом ошибки.
Если функциональный драйвер отменяет ПЗВВ запроса на бездействие, то драйвер концентратора завершит ПЗВВ кодом ошибки. Когда процедура завершения в функциональном драйвере обнаруживает, что драйвер концентратора завершил ПЗВВ запроса на бездействие кодом ошибки иным, нежели STATUS_POWER_STATE_INVALID, то функциональный драйвер попытается включить устройство. В одном варианте выполнения драйвер концентратора не гарантирует, что устройство находится в состоянии с поданным питанием, всякий раз, когда он завершает ПЗВВ запроса на бездействие с ошибкой.
В соответствии с одним аспектом изобретения способ обеспечивает сигнализацию и ожидание c целью приостановки первого устройства. Первое устройство соединено со вторым устройством через коммуникационную среду. Способ включает в себя посылку запроса на бездействие от первого устройства ко второму устройству, когда первое устройство готово приостановиться. Способ дополнительно включает в себя ожидание первым устройством приема вызова от второго устройства к функции обратного вызова, связанной с первым устройством, чтобы приостановить первое устройство.
В соответствии с другим аспектом изобретения способ обеспечивает приостановку дерева устройств. Это дерево содержит одно или более устройств, иерархически организованных как родительские устройства и дочерние устройства в виде дерева. Дерево далее содержит контроллер в корне дерева. Способ включает в себя прием контроллером запроса на бездействие от одного или более дочерних устройств. Способ далее включает в себя приостановку контроллером всех устройств в дереве после приема запроса на бездействие от каждого из этих устройств в дереве.
В соответствии с еще одним аспектом изобретения один или более машиночитаемых носителей данных имеют машиноисполняемые компоненты для сигнализации и ожидания, чтобы приостановить устройство в дереве устройств. Это дерево содержит одно или более устройств, иерархически организованных как родительские устройства и дочерние устройства в виде дерева. Дерево содержит контроллер в корне дерева. Компоненты включают в себя компонент сигнализации для посылки запроса на бездействие от хотя бы одного дочернего устройства к родительскому устройству, когда это дочернее устройство готово приостановиться. Запрос на бездействие распространяется по дереву от родительского устройства к контроллеру. Компоненты также включают в себя компонент драйвера для ожидания приема дочерним устройством вызова от контроллера к функции обратного вызова, связанной с дочерним устройством, чтобы приостановить это дочернее устройство.
Один или более машиночитаемых носителей данных, реализующих аспекты изобретения, имеют машиноисполняемые компоненты для обеспечения управления мощностью в отношении дерева устройств посредством контроллера в корне дерева. Дерево содержит одно или более устройств, иерархически организованных как родительские устройства и дочерние устройства в виде дерева. Компоненты включают в себя компонент интерфейса для приема контроллером запроса на бездействие от одного или более дочерних устройств. Компоненты также включают в себя компонент контроллера для приостановки контроллером всех устройств в дереве после приема запроса на бездействие от каждого из дочерних устройств.
В еще одном варианте выполнения изобретения машиночитаемый носитель данных хранит структуру данных, представляющую запрос на бездействие. Эта структура данных содержит первое поле и второе поле. Первое поле хранит атрибут процедуры, представляющий функцию обратного вызова. Второе поле хранит атрибут контекста, представляющий контекст функции обратного вызова. Первое устройство передает запрос на бездействие ко второму устройству через упомянутую структуру данных, когда первое устройство готово приостановиться.
Хотя изобретение и описано в связи с иллюстративной средой вычислительной системы, включающей компьютер 130, изобретение работает со многими другими средами или конфигурациями вычислительных систем общего или специального назначения. Не предполагается, что среда вычислительной системы налагает какие-либо ограничения на объем использования или функциональных возможностей изобретения. Кроме того, среду вычислительной системы не следует интерпретировать как имеющую какую бы то ни было зависимость или требование, относящиеся к любому одному из компонентов, проиллюстрированных в примерной рабочей среде, или их комбинации. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть пригодны для использования с изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, серверные компьютеры, портативные или переносные устройства, мультипроцессорные системы, основанные на микропроцессорах системы, телеприставки, программируемые бытовые электронные приборы, сетевые ПК, мини-компьютеры, универсальные компьютеры, распределенные вычислительные среды, которые включают в себя любые из вышеупомянутых систем или устройств, и т.п.
Изобретение может быть описано в общем контексте исполняемых компьютером команд, таких как программные модули, исполняемые одним или более компьютерами или иными устройствами. В общем случае программные модули включают в себя, но не в ограничительном смысле, процедуры, программы, объекты, компоненты и структуры данных, которые выполняют конкретные задания или реализуют определенные абстрактные типы данных. Изобретение может также использоваться в распределенных вычислительных средах, где задания выполняются удаленными устройствами обработки, которые связаны через коммуникационную сеть. В распределенной вычислительной среде программные модули могут располагаться как в локальных, так и в удаленных компьютерных носителях, в том числе в запоминающих устройствах.
При введении элементов настоящего изобретения или их варианта(вариантов) выполнения подразумевается, что употребление элемента в единственном числе и употребление термина "упомянутый" в отношении элемента означает, что имеются один или более таких элементов. Подразумевается, что термины «содержащий», «включающий в себя» или «имеющий» являются охватывающими и означают, что могут быть дополнительные элементы иные, нежели перечисленные элементы.
Ввиду вышесказанного видно, что решаются несколько задач изобретения и достигаются другие выгодные результаты.
Поскольку различные изменения могут быть сделаны в вышеописанные продукты и способы, не выходя за рамки объема изобретения, считается, что весь материал, содержащийся в вышеприведенном описании и показанный на сопровождающих чертежах, должен интерпретироваться как иллюстративный, а не в ограничительном смысле.
Изобретение относится к устройствам обеспечения управления мощностью. Техническим результатом является обеспечение управления мощностью в отношении одного или более аппаратных устройств, соединенных шиной. Согласно способу и машиночитаемому носителю посылают запрос на бездействие от первого устройства ко второму устройству, когда первое устройство готово приостановиться; ожидают приема от второго устройства вызова функции обратного вызова, связанной с первым устройством, принимают первым устройством указанной функции обратного вызова и приостанавливают первое устройство. В другом варианте машиночитаемый носитель содержит структуру данных, состоящую из первого поля, хранящего атрибут процедуры, представляющей функцию обратного вызова, и второго поля, хранящего атрибут контекста, представляющего контекст функции обратного вызова. 3 н. и 15 з.п. ф-лы, 9 ил.
посылку запроса на бездействие от первого устройства ко второму устройству, когда первое устройство готово приостановиться; и
ожидание первым устройством приема от второго устройства вызова функции обратного вызова, связанной с первым устройством с целью приостановки первого устройства,
прием первым устройством от второго устройства вызова функции обратного вызова, связанной с первым устройством, и
приостановку первого устройства в ответ на исполнение принятой функции обратного вызова.
распространение запроса на бездействие путем индуктивного прохождения древовидной структуры от первого устройства к контроллеру,
передачу принятого запроса на бездействие от первого устройства ко второму устройству, если первое устройство готово приостановиться и если первое устройство приняло запрос на бездействие от каждого из дочерних узлов первого устройства,
определение того, приняло ли первое устройство запрос на бездействие от каждого из дочерних узлов первого устройства,
ожидание приема запроса на бездействие от каждого из дочерних узлов, если запрос на бездействие от каждого из дочерних узлов не принят, и
представление запроса на бездействие второму устройству, если первое устройство приняло запрос на бездействие от каждого из дочерних узлов.
компонент (704) сигнализации для посылки запроса на бездействие от, по меньшей мере, одного дочернего устройства к родительскому устройству, когда дочернее устройство готово приостановиться, при этом запрос на бездействие распространяется через дерево от родительского устройства к контроллеру; и
компонент (706) драйвера для
ожидания приема дочерним устройством от контроллера вызова функции обратного вызова, связанной с дочерним устройством с целью приостановки этого дочернего устройства,
приостановки дочернего устройства в ответ на исполнение функции обратного вызова, и
активации дочернего устройства в ответ на действие со стороны дочернего устройства или на сигнал от родительского устройства, либо и на то, и на другое.
компонент (804) интерфейса для приема контроллером запроса на бездействие от одного или более дочерних устройств; и
компонент (806) контроллера для приостановки контроллером всех устройств в дереве после приема запроса на бездействие от каждого из дочерних устройств.
прием запроса на бездействие от, по меньшей мере, одного дочернего устройства упомянутого дочернего устройства, при этом компонент (704) сигнализации посылает принятый запрос на бездействие к родительскому устройству,
прием вызова функции обратного вызова от контроллера в ответ на распространение запроса на бездействие, и
посылка запроса отмены от дочернего устройства к родительскому устройству в ответ на действие дочернего устройства, не относящееся к состоянию бездействия.
функция снижения мощности содержит функцию низкого энергопотребления для ввода дочернего устройства в режим низкого энергопотребления, и
родительские устройства и дочерние устройства соединены универсальной последовательной шиной.
дочернее устройство представляет собой устройство взаимодействия с пользователем (HID), или
дочернее устройство представляет собой устройство, встроенное в компьютер (82), и
родительские устройства и дочерние устройства соединены через универсальную последовательную шину.
первое поле, хранящее атрибут (906) процедуры, представляющий функцию обратного вызова; и
второе поле, хранящее атрибут (908) контекста, представляющий контекст функции обратного вызова, при этом первое устройство передает запрос на бездействие ко второму устройству через упомянутую структуру (904) данных, когда первое устройство готово приостановиться, причем упомянутая функция обратного вызова исполняется для приостановки первого устройства в ответ на передачу первым устройством запроса на бездействие, а упомянутый контекст функции обратного вызова обеспечивает среду для исполнения упомянутой функции обратного вызова.
US 6092209 А, 18.07.2000 | |||
US 5915119 А, 22.06.1999 | |||
МикроЭВМ | 1990 |
|
SU1817101A1 |
УСТРОЙСТВО ДЛЯ УПРАВЛЕНИЯ ПОТРЕБЛЕНИЕМ МОЩНОСТИ РАДИОПРИЕМНИКА И СПОСОБ УПРАВЛЕНИЯ РАДИОПРИЕМНИКОМ В СИСТЕМЕ РАДИОСВЯЗИ | 1994 |
|
RU2110889C1 |
Устройство для автоматического контроля качества радиоканалов | 1976 |
|
SU624377A1 |
Авторы
Даты
2007-08-10—Публикация
2002-10-30—Подача