АГЕНТ МИКРОПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
FIRMWARE AGENT

Ссылка на родственную заявку
Настоящая заявка устанавливает приоритет заявки США №13/618 508 от 14 сентября 2012 г. под названием "Агент микропрограммного обеспечения".
Область техники, к которой относится изобретение
Эта заявка относится к области обработки данных, более конкретно, к способам, устройствам и носителям информации, связанным с предоставлением устройству микропрограммного обеспечения.
Уровень техники
Описание уровня техники приводится в этом документе для того, чтобы в общем виде представить контекст изобретения. Если в этом документе обратное не указано, то материалы, описанные в этом разделе, не являются ограничивающими для формулы изобретения, изложенной в этой заявке, и не предполагается, что эти материалы являются ограничивающими из-за их включения в этот раздел.
Обычно, микропрограммное обеспечение устройства часто предоставляют устройству посредством драйвера устройства. Тем не менее, перед тем как микропрограммное обеспечение может быть предоставлено устройству, между устройством и драйвером устройства должна быть установлена связь. Протокол установления связи зачастую является нетривиальным. Касательно приборов, чувствительных к потреблению энергии, напр., мобильных вычислительных устройств, устройство может часто выключаться. Например, декодер в планшете может выключаться сотни раз между декодированием групп видеокадров в ходе воспроизведения видео. Таким образом, подход известного уровня техники, при котором устройству предоставляют микропрограммное обеспечение с помощью драйвера устройства, является сравнительно неэффективным.
Краткое описание чертежей
Варианты осуществления настоящего изобретения будут описаны посредством типовых вариантов осуществления, но не ограничивающих, показанных на сопровождающих чертежах, на которых одинаковые ссылочные позиции обозначают аналогичные элементы и на которых:
на фиг. 1 показано общее представление устройства, содержащего агент микропрограммного обеспечения, предназначенный для предоставления микропрограммного обеспечения устройству, расположенному в рамках вычислительной среды, извне вычислительной среды;
на фиг. 2 показан процесс получения микропрограммного обеспечения устройства агентом микропрограммного обеспечения;
на фиг. 3 показан процесс предоставления микропрограммного обеспечения устройству с помощью агента микропрограммного обеспечения;
на фиг. 4 показан пример вычислительного устройства со встроенным агентом микропрограммного обеспечения;
на фиг. 5 приведен пример постоянного машинного носителя информации, на котором имеются команды, сконфигурированные так, чтобы выполнять все или выбранные аспекты потока действий агента микропрограммного обеспечения, показанного на фиг. 2-3; при этом все устроено в соответствии с вариантами осуществления настоящего изобретения.
Подробное описание изобретения
В этом разделе приведено описание способов, устройств и носителей информации, связанных с предоставления микропрограммного обеспечения устройству. В различных вариантах осуществления прибор, напр., чувствительный к потреблению энергии прибор, такой как планшет, может включать в себя устройство, напр., декодер, и процессор для поддерживания вычислительной среды, которая включает в себя устройство и драйвер устройства. Кроме того, прибор может включать в себя агент микропрограммного обеспечения, расположенный за пределами вычислительной среды, предназначенный для того, чтобы по команде драйвера устройства предоставлять устройству микропрограммное обеспечение при включении устройства. Соответственно, микропрограммное обеспечение может быть предоставлено устройству более эффективным способом, особенно, если устройство может часто отключаться в случае чувствительного к потреблению энергии прибора. Другие полезные эффекты и преимущества также могут быть описаны в последующем описании и/или они могут быть очевидны специалистам в этой области техники из последующего описания.
Различные аспекты примеров осуществления будут описаны с использованием выражений, применяемых обычно специалистами в области техники для сообщения сути их работы другим специалистам в области техники. Тем не менее, специалистам в данной области техники очевидно, что настоящее изобретение может быть реализовано на практике с применением только некоторых из описанных аспектов. Для целей объяснения конкретные числа, материалы и конфигурации изложены для того, чтобы обеспечить полное понимание примеров осуществления. Тем не менее, специалистам в данной области техники очевидно, что на практике можно реализовать альтернативные варианты осуществления без специфических деталей. В других случаях, хорошо известные признаки опущены или упрощены, чтобы не усложнять примеры осуществления.
Различные операции будут описаны как множество отдельных операций, а они, в свою очередь, будут описаны способом, наиболее полезным для понимания примеров осуществления; тем не менее, не следует считать, что порядок описания предполагает, что эти операции обязательно зависят от их порядка. В частности, эти операции не обязательно должны выполняться в том порядке, в котором они представлены. Кроме того, описание операций как отдельных операций не следует рассматривать как требование того, чтобы эти операции обязательно выполнялись независимо и/или отдельными объектами. Описания объектов и/или модулей в виде отдельных модулей также не следует истолковывать как требование того, чтобы эти модули были отдельными и/или выполняли отдельные операции. В различных вариантах осуществления показанные и/или описанные операции, объекты, данные и/или модули могут быть объединены, разделены на составные части и/или опущены.
Неоднократно используется фраза "в одном варианте осуществления" или "в варианте осуществления". Вообще, эта фраза не относится к одному и тому же варианту осуществления; тем не менее, может относиться. Выражения "содержащий", "имеющий" и "включающий в себя" являются синонимами, если из контекста не следует обратное. Фраза "А/В" означает "А или В". Фраза "А и/или В" означает "(А), (В) или (А и В)". Фраза "по меньшей мере одно из А, В и С" означает "(А), (В), (С), (А и В), (А и С), (В и С) или (А, В и С)".
2
На фиг. 1 показано общее представление устройства, содержащего агент микропрограммного обеспечения, предназначенный для предоставления микропрограммного обеспечения устройству, расположенному в рамках вычислительной среды, извне вычислительной среды в соответствии с различными вариантами осуществления. Как показано, устройство 100, например вычислительное устройство, может включать в себя вычислительную среду 102, поддерживаемую одним или несколькими процессорами 112, и модуль 108 безопасности, расположенный отдельно за пределами вычислительной среды 102 и соединенный с вычислительной средой 102, как показано. В дополнение к процессору(ам) 112, вычислительная среда 102 может также включать в себя запоминающее устройство 114, операционную систему (ОС) 116 и одно или несколько устройств 118. Кроме того, ОС 116 может включать в себя один или несколько драйверов 122 устройств для одного или нескольких устройств 118 и агент 124 управления питанием. А запоминающее устройство 114 может включать в себя микропрограммное обеспечение 126 одного или нескольких устройств 118. Модуль 108 безопасности может включать в себя агент 104 микропрограммного обеспечения и запоминающее устройство 106, также содержащее микропрограммное обеспечение одного или нескольких устройств 118, полученное из запоминающего устройства 114. В вариантах осуществления вычислительная среда 102 и модуль 108 безопасности могут быть соединены друг с другом посредством одной или нескольких шин, напр. посредством шины IC или шины взаимодействия периферийных компонент (PCI) и т.д.
Процессор(ы) 112 может представлять собой один из множества процессоров или процессорных ядер, известных при существующем уровне техники, напр. процессор архитектуры Intel от компании Intel Corporation, Санта-Клара, штат Калифорния. Запоминающее устройство 114 может представлять собой одно из множества магтштных, оптических или твердотельных запоминающих устройств, известных в технике. Аналогично, ОС 116 может представлять собой одну из множества ОС, известных в области техники, напр. одну из ОС семейства Windows от Microsoft Corporation, Редмонд, штат Вашингтон. Примеры устройств 118 могут включать в себя, но, не ограничиваясь, кодер, декодер, графический блок, трансивер, устройство системы глобального позиционирования и другие подобные устройства.
Модуль 108 безопасности, как было описано выше, может включать в себя агент 104 микропрограммного обеспечения и защищенное запоминающее устройство 106, соединенные друг с другом. Агент 104 микропрограммного обеспечения, как показано, может быть соединен с запоминающим устройством 114, ОС 116 и устройствами 118. Модуль 108 безопасности может представлять собой одну из множества доверенных вычислительных сред или защищенных встроенных вычислительных сред, отделенную и независимую от вычислительной среды 102. Как более подробно будет описано далее, агент 104 микропрограммного обеспечения может быть сконфигурирован так, чтобы предоставлять устройствам 118 их микропрограммное обеспечение 126 при обнаружении включения устройств 118. В некоторых вариантах осуществления агент 104 микропрограммного обеспечения может перехватывать сигналы включения/выключения от агента 124 управления питанием и передавать их устройствам 118. В других вариантах осуществления (не показаны) агент 104 микропрограммного обеспечения может быть соединен с путем прохождения сигнала между агентом 124 управления питанием и устройствами 118, чтобы обнаружить события включения/выключения питания. Как было описано ранее, предоставление микропрограммного обеспечения устройствам 118 посредством агента 104 микропрограммного обеспечения может быть более эффективным, чем при обычном подходе (т.е. посредством драйверов устройств), особенно для часто выключающихся устройств 118 в вычислительной среде, чувствительной к потреблению энергии. Аналогично запоминающему устройству 114, запоминающее устройство 106 может представлять собой одно из множества магнитных, оптических или твердотельных запоминающих устройств, известных в области техники.
В вариантах осуществления вычислительное устройство 100 может представлять собой устройство, чувствительное к потреблению энергии, такое как смартфон, карманный компьютер (PDA), планшет, ультрабук, устройство для чтения электронных книг, игровая консоль, приставка и т.д., но не ограничиваясь этим. В частности, агент 124 управления питанием может быть сконфигурирован так, чтобы отключать одно или несколько устройств 118, напр., всякий раз, когда они не используются, и включать одно или несколько устройств 118, напр., только тогда, когда они необходимы.
Прежде чем продолжить описание агента 104 микропрограммного обеспечения, следует отметить, что хотя для простоты понимания агент 104 микропрограммного обеспечения описывают как часть модуля 108 безопасности, в альтернативной, предъявляющей более мягкие требования к безопасности среде агент 104 микропрограммного обеспечения может быть расположен, напр., в обычном незащищенном встроенном контроллере. Кроме того, предполагается, что устройство 100 представляет широкий диапазон вычислительных устройств, известных в области техники. Примеры устройства 100 будут дополнительно описаны позднее со ссылкой на фиг. 4.
На фиг. 2 показан процесс получения микропрограммного обеспечения устройства агентом микропрограммного обеспечения в соответствии с вариантами осуществления настоящего изобретения. Как показано, для вариантов осуществления процесс 200 может начинаться с этапа 202. На этапе 202 вычислительное устройство 100 может быть включено. После этапа 202 процесс 200 может перейти к этапу 204. На этапе 204 агент 104 микропрограммного обеспечения может определить, имеет ли вычислительное устройство 100 новые устройства 118 или устройства 118 с обновленным микропрограммным обеспечением. Агент 104 микропрограммного обеспечения может определить наличие новых устройств 118 посредством множества известных технологий, напр., путем подсчета устройств, подключенных к различным шинам (не показаны) в вычислительной среде 102. Агент 104 микропрограммного обеспечения также может определить, было ли обновлено некоторое микропрограммное обеспечение, путем проверки с помощью ОС 116 и/или драйверов 122 устройств, или путем проверки структур данных, поддерживаемых ОС 116 и/или драйверами 122 устройств.
При определении либо наличия нового устройства, либо, по меньшей мере, одного обновленного микропрограммного обеспечения устройства процесс 200 может перейти к этапу 206. На этапе 206 агент 204 микропрограммного обеспечения может получить новое или обновленное микропрограммное обеспечение от драйвера(ов) 122 устройства или запоминающего устройства 114. В последнем случае местоположение(я) нового или обновленного микропрограммного обеспечения может быть предоставлено агенту 104 микропрограммного обеспечения драйвером(ами) 122 устройства.
После этапа 206 процесс 200 может, как вариант, перейти на этап 208, либо непосредственно на этап 210, не выполняя действия на этапе 208. На этапе 208 для более требовательных к безопасности вариантов осуществления агент 104 микропрограммного обеспечения может аутентифицировать предоставленное микропрограммное обеспечение. Аутентификация может быть выполнена с использованием любой из множества технологий аутентификации, известных в области техники. На этапе 210 после успешной аутентификации или без осуществления аутентификации в зависимости от реализации агент 104 микропрограммного обеспечения может сохранить предоставленное микропрограммное обеспечение в запоминающем устройстве 106 (которое в некоторых вариантах осуществления, как было описано ранее, может представлять собой защищенное запоминающее устройство).
После этапа 210 процесс 200 может вернуться на этап 204, чтобы определить, имеется ли дополнительное новое или обновленное микропрограммное обеспечение устройств, которое надо получить, и при необходимости повторить действия этапов 206-210. При определении, что (дополнительное) новое или обновленное микропрограммное обеспечение устройства отсутствует, процесс 200 может перейти на этап 212, на котором процесс может завершиться.
В альтернативных вариантах осуществления вместо агента 104 микропрограммного обеспечения, определяющего, не обновилось ли микропрограммное обеспечение одного или нескольких устройств, и действующего для получения обновленной версии с аутентификацией или без нее, обновление микропрограммного обеспечения 126, хранимого в запоминающем устройстве 106, может быть запущено соответствующим драйвером 122 устройства при приеме обновлений микропрограммного обеспечения 126, сохраненного в запоминающем устройстве 114.
На фиг. 3 показан процесс предоставления микропрограммного обеспечения устройству агентом микропрограммного обеспечения в соответствии с различными вариантами осуществления настоящего изобретения. Процесс может начаться на этапе 302. На этапе 302 агент 104 микропрограммного обеспечения может отслеживать события включения устройств 118. Если событий включения устройств не обнаружено, то процесс 300 может остаться на этапе 302 и находиться в цикле до тех пор, пока такое событие не будет обнаружено.
При обнаружении включения устройства 118 процесс 300 может перейти с этапа 302 на этап 304. На этапе 304 агент 104 микропрограммного обеспечения может извлечь микропрограммное обеспечение 126 устройства из запоминающего устройства 106 и предоставить микропрограммное обеспечение 126 устройству 118. Таким образом, микропрограммное обеспечение 126 может быть предоставлено устройству 118 более эффективно. В некоторых вариантах осуществления на этапе 304 перед извлечением и предоставлением микропрограммного обеспечения 126 устройству 118 агент 104 микропрограммного обеспечения может также передавать сигналы включения от агента 124 управления питания устройствам 118. В некоторых вариантах осуществления агент 104 микропрограммного обеспечения также может передавать сигналы выключения от агента 124 управления питанием устройствам 118 (не показано).
На фиг. 4 показан пример вычислительного устройства, содержащего агент микропрограммного обеспечения в соответствии с различными вариантами осуществления настоящего изобретения. Как показано, вычислительное устройство 400 может включать в себя несколько процессоров или процессорных ядер 402, сопроцессор(ы) 414 и системную память 404. Для целей этой заявки, включая формулу изобретения, выражения "процессор" и "процессорные ядра" можно рассматривать как синонимы, если из контекста не следует обратное. Помимо этого, вычислительное устройство 400 может включать в себя запоминающие устройства 406 большой емкости (такие как дискета, жесткий диск, постоянная память на компакт-диске (CD-ROM) и т.д.), устройства 408 ввода/вывода (такие как дисплей, клавиатура, устройство управления курсором и т.д.), интерфейсы 410 связи (такие как сетевые интерфейсные платы, модемы и т.д.) и модуль 416 безопасности (с агентом микропрограммного обеспечения и запоминающим устройством, как было описано ранее). Элементы могут быть соединены друг с другом через системную шину 412, которая может представлять собой одну или несколько шин. В случае нескольких шин они могут быть соединены через один или несколько шинных мостов (не показаны).
За исключением элемента 416 устройство этих элементов 402-414 известно и, соответственно, не будет далее описываться. Модуль 416 безопасности может представлять собой доверенную вычислительную среду или защищенный встроенный контроллер со своим собственным процессором или процессорами. Агент микропрограммного обеспечения в модуле 416 безопасности может быть реализован посредством инструкциями ассемблера, поддерживаемыми процессором(ами) модуля 416 безопасности, или посредством команд высокоуровневых языков, таких как, например, Си, которые могут быть скомпилированы в такие инструкции.
Программные команды могут быть размещены в модуле 416 безопасности при производстве или на местах, например, с помощью дистрибутивного носителя (не показан), такого как компакт-диск (CD), или через интерфейс 410 связи (с дистрибутивного сервера (не показан)). То есть, может использоваться одна или несколько дистрибутивных сред, содержащих агент микропрограммного обеспечения, чтобы упростить его распространение.
На фиг. 5 приведен пример постоянного машинного носителя информации, на котором имеются команды, сконфигурированные так, чтобы выполнять все или выбранные аспекты процессов, показанных на фиг. 2-3; в соответствии с различными вариантами осуществления настоящего изобретения. Как показано, постоянный машинный носитель 502 информации может включать в себя множество программных команд 504. Программные команды 504 могут быть сконфигурированы так, чтобы устройство, напр. вычислительное устройство 400, в ответ на исполнение программных команд выполняло различные действия различных потоков, показанных на фиг. 2-3. В альтернативных вариантах осуществления программные команды 504 могут быть расположены на нескольких постоянных машинных носителях 504 информации.
Таким образом, описанные варианты осуществления включают в себя прибор, содержащий устройство, и процессор, соединенный с устройством, предназначенный для поддерживания вычислительной среды, которая включает в себя устройство и драйвер устройства. Прибор может также включать в себя агент микропрограммного обеспечения, расположенный за пределами вычислительной среды и соединенный с устройством, предназначенный для того, чтобы по команде драйвера устройства предоставлять микропрограммное обеспечение устройству при включении устройства.
В вариантах осуществления устройство может представлять собой одно из следующего: кодер, декодер, графический блок, трансивер или устройство системы глобального позиционирования. Вычислительная среда может также включать в себя агент управления питанием, соединенный с устройством, предназначенный для того, чтобы включать или выключать устройство. Агент микропрограммного обеспечения может быть сконфигурирован так, чтобы предоставлять микропрограммное обеспечение устройству в ответ на включение устройства агентом управления питанием. Агент управления питанием может выключать устройство всякий раз, когда прибор переходит в режим энергосбережения, при котором потребляет меньше энергии, чем в нормальном режиме работы. Агент управления питанием может также выключать устройство всякий раз, когда устройство не используется в течение некоторого периода времени, и при этом прибор работает в нормальном режиме.
В вариантах осуществления вычислительная среда может также включать в себя операционную систему, которая содержит агент управления питанием. Агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы связывать агент управления питанием с устройством и передавать команды или сигналы включения или выключения от агента управления питанием устройству.
В вариантах осуществления агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы получать микропрограммное обеспечение от драйвера устройства при запуске прибора. Прибор может дополнительно включать в себя защищенное запоминающее устройство, расположенное за пределами вычислительной среды и соединенное с агентом микропрограммного обеспечения. А агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы сохранять микропрограммное обеспечение в защищенном запоминающем устройстве при получении микропрограммного обеспечения при запуске прибора и извлекать микропрограммное обеспечение из защищенного запоминающего устройства, чтобы предоставить его устройству при его включении. Агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы аутентифицировать микропрограммное обеспечение перед сохранением микропрограммного обеспечения в защищенном запоминающем устройстве. Прибор может дополнительно включать в себя модуль безопасности, расположенный за пределами вычислительной среды, при этом модуль безопасности включает в себя агент микропрограммного обеспечения. Прибор может представлять собой смартфон или планшет.
Описанные варианты осуществления также включают в себя, по меньшей мере, один постоянный машинный носитель информации, содержащий множество команд, причем при исполнении команд модулем безопасности вычислительного устройства команды реализуют агент микропрограммного обеспечения для вычислительного устройства, предназначенный для того, чтобы предоставлять микропрограммное обеспечение устройству при включении устройства, при этом устройство и драйвер устройства являются частью вычислительной среды, поддерживаемой процессором вычислительного устройства, а модуль безопасности, включая агент микропрограммного обеспечения, расположен за пределами вычислительной среды и соединен с устройством.
В вариантах осуществления вычислительная среда может также включать в себя агент управления питанием, соединенный с устройством, предназначенный для того, чтобы включать или выключать устройство. Агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы предоставлять микропрограммное обеспечение устройству в ответ на включение устройства агентом управления питанием. В вариантах осуществления агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы связывать агент управления питанием с устройством и передавать команды или сигналы включения или выключения от агента управления питанием устройству. В вариантах осуществления агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы получать микропрограммное обеспечение от драйвера устройства при запуске вычислительного устройства. Вычислительное устройство может дополнительно включать в себя защищенное запоминающее устройство, расположенное за пределами вычислительной среды и соединенное с агентом микропрограммного обеспечения. Агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы сохранять микропрограммное обеспечение в защищенном запоминающем устройстве при получении микропрограммного обеспечения при запуске вычислительного устройства и извлекать микропрограммное обеспечение из защищенного запоминающего устройства, чтобы предоставить его устройству при его включении. Агент микропрограммного обеспечения также может быть сконфигурирован так, чтобы аутентифицировать микропрограммное обеспечение перед сохранением микропрограммного обеспечения в защищенном запоминающем устройстве.
Описанные варианты осуществления также включают в себя способ предоставления микропрограммного обеспечения. Способ может включать в себя следующее: посредством агента микропрограммного обеспечения вычислительного устройства обнаруживают события включения устройства вычислительного устройства; и предоставляют микропрограммное обеспечение устройству с помощью агента микропрограммного обеспечения по команде драйвера устройства в ответ на обнаружение включения устройства. Устройство и драйвер устройства могут быть частью вычислительной среды, поддерживаемой процессором вычислительного устройства, а агент микропрограммного обеспечения может быть расположен за пределами вычислительной среды и соединен с устройством.
В вариантах осуществления вычислительная среда может также включать в себя агент управления питанием, соединенный с устройством, предназначенный для того, чтобы включать или выключать устройство. Процесс предоставления может включать в себя следующее: агент микропрограммного обеспечения предоставляет микропрограммное обеспечение устройству в ответ на включение устройства агентом управления питанием. Способ также может включать в себя следующее: агент микропрограммного обеспечения связывает агент управления питанием с устройством и передает команды или сигналы включения или выключения от агента управления питанием устройству. Способ также может включать в себя следующее: посредством агента микропрограммного обеспечения получают микропрограммное обеспечение от драйвера устройства во время запуска вычислительного устройства.
В вариантах осуществления вычислительное устройство может дополнительно включать в себя защищенное запоминающее устройство, расположенное за пределами основной вычислительной среды и соединенное с агентом микропрограммного обеспечения. Способ также может включать в себя следующее: с помощью агента микропрограммного обеспечения сохраняют микропрограммное обеспечение в защищенном запоминающем устройстве при получении микропрограммного обеспечения во время запуска вычислительного устройства и с помощью агента микропрограммного обеспечения извлекают микропрограммное обеспечение из защищенного запоминающего устройства, чтобы предоставить его устройству при его включении. Способ также может включать в себя следующее: с помощью агента микропрограммного обеспечения аутентифицируют микропрограммное обеспечение перед сохранением микропрограммного обеспечения в защищенном запоминающем устройстве.
Хотя в этом документе были показаны и описаны отдельные варианты осуществления, специалистам в этой области техники понятно, что показанные и описанные варианты можно заменить на альтернативные и/или эквивалентные реализации, не отклоняясь от объема вариантов осуществления настоящего изобретения. Предполагается, что данная заявка покрывает любые адаптации или изменения обсуждаемых в этом документе вариантов осуществления. Поэтому, явно полагается, что варианты осуществления настоящего изобретения ограничены только формулой изобретения.