ИСПОЛЬЗОВАНИЕ ЭНЕРГОЗАВИСИМОЙ ПАМЯТИ В КАЧЕСТВЕ ЭНЕРГОНЕЗАВИСИМОЙ ПАМЯТИ
USING VOLATILE MEMORY AS NONVOLATILE MEMORY

Область техники, к которой относится изобретение
[0001] Это изобретение относится, в общем, к работе модулей памяти в вычислительном устройстве. В частности, изобретение относится к системам, способам и компьютерным программным продуктам для использования энергозависимой памяти, чтобы предоставлять энергонезависимое хранилище для приложений, исполняющихся на вычислительном устройстве.
Уровень техники
[0002] Основная память вычислительного устройства типично основывается на модулях динамической памяти с произвольным доступом ("DRAM"). DRAM имеет различные свойства, подходящие для использования в качестве основной памяти, такие как низкая стоимость и высокая плотность хранения. Однако, модули DRAM-памяти типично содержат конденсаторы или другие схемы, которые требуют непрерывной, или почти непрерывной, подачи питания, чтобы предотвращать потерю данных. DRAM-память, следовательно, называется энергозависимой, поскольку данные, сохраненные в DRAM-памяти, теряются в случае, когда ее электропитание прерывается.
[0003] Другие типы памяти, такие как память с логическими элементами И-НЕ ("NAND"), могут называться энергонезависимой памятью, поскольку содержимое модуля NAND-памяти не теряется, если электропитание модуля прерывается. Однако, основная память компьютера типично не создается из модулей NAND-памяти, по различным причинам, таким как более высокая стоимость и более низкая плотность хранения по сравнению с модулями DRAM-памяти.
Сущность изобретения
[0004] Вычислительное устройство может содержать энергозависимую память и энергонезависимое устройство хранения. В то время как вычислительное устройство работает от сети энергоснабжения, вычислительное устройство может принимать информацию, указывающую, сколько энергии будет доступно вычислительному устройству, если энергоснабжение будет прервано. Вычислительное устройство может также определять, сколько энергии будет необходимо для переноса страницы энергозависимой памяти на энергонезависимое устройство хранения, и, с помощью этой информации, определять, сколько страниц памяти может быть сохранено, используя энергию, доступную в аккумуляторе. Основываясь, по меньшей мере, на части этой информации операционная система или микропрограммное обеспечение вычислительного устройства может идентифицировать число страниц энергозависимой памяти как энергонезависимых, так что приложения, исполняющиеся на вычислительном устройстве, могут хранить информацию в страницах энергозависимой памяти, как если бы страницы были энергонезависимыми.
[0005] Данная сущность предусмотрена для того, чтобы в упрощенной форме представить набор идей, которые дополнительно описываются ниже в подробном описании. Эта сущность не имеет намерением ни идентифицировать ключевые признаки или важнейшие признаки заявляемого предмета изобретения, ни использоваться так, чтобы ограничивать объем заявляемого предмета изобретения.
Краткое описание чертежей
[0006] Варианты осуществления настоящего изобретения будут описаны более полно далее в данном документе со ссылкой на сопровождающие чертежи, на которых:
[0007] Фиг. 1 - это блок-схема, которая изображает примерную вычислительную систему с энергозависимой памятью, идентифицированной операционной системой как энергонезависимая память.
[0008] Фиг. 2 - это блок-схема, которая изображает корректировку числа страниц, идентифицированных как энергонезависимые, на основе доступной мощности аккумулятора.
[0009] Фиг. 3 - это блок-схема, изображающая пример вычислительного устройства, идентифицирующего энергозависимую память как энергозависимую или энергонезависимую память.
[0010] Фиг. 4 изображает аккумулятор, совместно используемый множеством вычислительных устройств.
[0011] Фиг. 5 - это блок-схема последовательности операций, изображающая примерный процесс работы вычислительного устройства с энергозависимой памятью, идентифицированной в качестве энергонезависимой памяти.
[0012] Фиг. 6 - это блок-схема последовательности операций, изображающая пример процесса корректировки идентификации энергонезависимой памяти на основе параметров производительности приложения.
[0013] Фиг. 7 - это блок-схема, предоставляющая пример сохранения содержимого энергозависимой памяти.
[0014] Фиг. 8 - это блок-схема последовательности операций, изображающая примерный процесс сохранения содержимого энергозависимой памяти, идентифицированной как энергонезависимая.
[0015] Фиг. 9 - это блок-схема последовательности операций, изображающая пример управления подачей питания к ядру процессора во время сохранения памяти.
[0016] Фиг. 10 - это блок-схема последовательности операций, изображающая пример работы вычислительного устройства с модулями энергозависимой памяти, идентифицированной как энергонезависимая.
[0017] Фиг. 11 изображает примерное вычислительное окружение общего назначения, в котором технологии, описанные в данном документе, могут быть осуществлены.
Подробное описание изобретения
[0018] Вычислительное устройство может содержать процессор, основную память, содержащую энергозависимые модули памяти и энергонезависимое устройство хранения. Энергозависимые модули памяти могут быть памятью, содержимое которой теряется в случае потери питания. Энергозависимые модули памяти могут, в некоторых случаях, быть модулями памяти, долговечность которой, относительно хранения содержимого, сохраненного в памяти, является относительно низкой по сравнению с энергонезависимыми запоминающими устройствами.
[0019] Питание к вычислительному устройству может подаваться посредством некоторого сочетания энергоснабжения и питания от аккумулятора. Энергоснабжение может ссылаться на источники, такие как питание от электросети, подаваемое по энергетической системе. Энергоснабжение может также ссылаться на другие источники питания, которые могут, в целом, считаться устойчивыми или типично доступными, такие как локально генерируемая солнечная, ветровая или тепловая энергия. Энергоснабжение может иногда включать в себя аккумуляторные компоненты, такие как аккумуляторы, используемые в солнечных или ветровых системах питания, чтобы сохранять энергию, когда существует избыток, и предоставлять энергию, когда существует дефицит. Более обобщенно, энергоснабжение может ссылаться на любой источник питания, который является типично доступным в течение периода работы вычислительного устройства.
[0020] Питание от аккумулятора может ссылаться на резервный источник энергии, такой как устройство, содержащее аккумуляторные элементы, конденсаторы или другой механизм хранения энергии. Когда энергоснабжение является доступным, аккумулятор может заряжаться, и величина мощности, доступной вычислительному устройству, может увеличиваться. Когда энергоснабжение является недоступным, вычислительное устройство может работать от мощности аккумулятора, и величина мощности, доступной в аккумуляторе, может уменьшаться. Другие факторы, такие как температура, возраст аккумулятора и потребление мощности аккумулятора другими устройствами, могут также влиять на величину доступной мощности.
[0021] Операционная система или микропрограммное обеспечение устройства может представлять энергозависимую память приложениям, как если бы энергозависимая память была энергонезависимой. Объем энергозависимой памяти, которая может быть представлена, или идентифицирована, в качестве энергонезависимой, может быть определен на основе двух факторов. Первым фактором может быть количество энергии, доступное для использования вычислительным устройством в случае, когда электроснабжение прекращается. Вторым фактором может быть оценка величины мощности, требуемой для переноса страницы энергозависимой памяти на энергонезависимое устройство хранения. На основе этих факторов операционная система или микропрограммное обеспечение может определять оценку того, сколько страниц памяти может быть сохранено на устройство хранения, если электроснабжение будет прервано. Эти страницы могут тогда быть идентифицированы, операционной системой или микропрограммным обеспечением, как энергонезависимые.
[0022] Если энергоснабжение будет прервано, вычислительное устройство может входить в фазу сохранения памяти, в которой содержимое энергозависимой памяти, идентифицированной в качестве энергонезависимой, сохраняется. Во время этой фазы подача питания к компонентам вычислительного устройства может быть ограничена теми компонентами, которые необходимы для сохранения памяти. Это может предоставлять возможность большему объему энергозависимой памяти идентифицироваться в качестве энергонезависимой. Кроме того, состояние питания во время сохранения памяти может быть таким, что прогнозы потребления энергии и доступности по отношению друг к другу являются более надежными.
[0023] Фиг. 1 - это блок-схема, которая изображает примерную вычислительную систему с энергозависимой памятью, идентифицированной операционной системой как энергонезависимая память. Вычислительное устройство 100 может содержать запоминающие устройства, содержащие инструкции операционной системы 102 и микропрограммного обеспечения 104, процессор 106, модули 114 DRAM-памяти и энергонезависимое устройство 120 хранения.
[0024] Вычислительное устройство 100 может типично работать от источника 122 энергоснабжения. Временами, например, когда работа источника 116 энергоснабжения прерывается, вычислительное устройство 100 может работать от аккумуляторного источника 124 питания. Во время отключения энергоснабжения или другого сбоя, связанного с источником 122 энергоснабжения, вычислительное устройство может переключаться или переносить свой источник питания с источника 122 энергоснабжения на аккумуляторный источник 124 питания. В некоторых случаях аккумуляторный источник 124 питания может быть объединен в вычислительное устройство 100. В других случаях аккумуляторный источник питания может быть внешним по отношению к вычислительному устройству 100.
[0025] Процессор 106 может содержать различные подкомпоненты, включающие в себя ядро 108 и неядро 110. Потребление мощности процессором 102 может управляться, так что питание для ядра 108 и неядра 110 может прекращаться или поддерживаться независимо. Например, подача питания к ядру 108 может быть прекращена, в то время как питание неядра 110 может поддерживаться. Прекращение питания может содержать частичное или полное прерывание потока энергии к затронутому компоненту. Прекращение питания может также ссылаться на помещение компонента в состояние пониженной мощности. Типично, компонент, электропитание которого было временно приостановлено, не работает, пока электропитание временно приостановлено, но может возобновлять работу, после того как электропитание было восстановлено. Поддержание электропитания компонента может содержать доставку достаточной мощности к компоненту, так что компонент может оставаться работающим относительно, по меньшей мере, некоторых из своих функций.
[0026] Ядро 108 может содержать блок обработки процессора 106. Типично, процессор 106 может содержать множество ядер, хотя для простоты в представлении фиг. 1 изображает процессор 106 как имеющий одно ядро 108. В качестве блока обработки процессор 106 ядро 108 типично исполняет компьютерно-читаемые инструкции, такие как инструкции операционной системы 102 и микропрограммного обеспечения 104, и, тем самым, инструктирует вычислительному устройству выполнять различные операции.
[0027] Неядро 110 может включать в себя фрагменты процессора 106, которые относятся к фрагментам ядра 108, но не включены в него. В некоторых случаях процессор 106 может включать в себя одно неядро 110 и множество ядер, таких как изображенное ядро 108. Типично, неядро 110 может выполнять функции, связанные с поддержкой кэша L3, и включает в себя контроллер 112 памяти.
[0028] Контроллер 112 памяти может управлять доступом к данным, хранящимся в модулях 114 DRAM-памяти. Это может включать в себя выполнение операций прямого доступа к памяти ("DMA"). DMA-операция может подразумевать перенос содержимого памяти. Например, DMA-операция может подразумевать перенос содержимого модулей 114 DRAM-памяти на энергонезависимое устройство 120 хранения. DMA-операция может быть инициирована ядром 108, исполняющим инструкции операционной системы 102 или микропрограммного обеспечения 104. После того как DMA-операция была инициирована, ядро 108 может возобновлять другие операции или быть помещено в состояние пониженной мощности или состояние без питания, в то время как DMA-операция завершается.
[0029] Сигналы прерывания могут быть переданы процессору 106. Сигнал прерывания может включать в себя сигналы или другие передачи от компонентов вычислительного устройства 100, или внешнего устройства, такого как аккумуляторный источник 124 питания, в зависимости от случая. Примеры сигналов прерывания включают в себя сигналы, формируемые сетевыми компонентами, компонентами пользовательского интерфейса и т.д. Различные сигналы прерывания могут, в некоторых случаях, быть сформированы в ответ на ошибочные состояния или изменения статуса, которые могут возникать во время работы вычислительного устройства 100. Сигналы прерывания могут быть сформированы в отношении DMA-операций. Например, сигнал прерывания может быть сформирован в ответ на завершение DMA-операции. Некоторые прерывания, такие как прерывания, принадлежащие DMA-операциям, могут быть обработаны неядром 110.
[0030] Аккумуляторный источник 124 питания может также подавать сигналы прерываний, или другие данные, вычислительному устройству 100. Данные могут указывать изменения в состоянии аккумуляторного источника 124 питания. Информация о состоянии может, например, включать в себя информацию, указывающую, заряжается ли в настоящий момент аккумуляторный источник 124 питания от источника 122 энергоснабжения, и сколько мощности аккумулятора доступно вычислительному устройству 100. В некоторых случаях аккумуляторный источник 124 питания может подавать питание к множеству устройств, таким образом, величина мощности, доступной вычислительному устройству 100, может быть меньше суммарной величины мощности, накопленной в аккумуляторе.
[0031] Модули 114 DRAM-памяти могут подразделяться на блоки памяти, иногда называемые страницами. Страницы памяти могут быть ассоциированы с некоторыми характеристиками, такими как скорость памяти и энергозависимость. Например, модули 114 DRAM-памяти могут быть энергозависимым RAM, так что, если питание к модулям 114 DRAM-памяти прекращается, содержимое модулей 114 DRAM-памяти будет потеряно. Характеристики памяти могут быть переданы прикладным программам, которые исполняются на вычислительном устройстве 100. В некоторых случаях микропрограммное обеспечение 104 может определять характеристики модулей 114 DRAM-памяти во время первоначальной загрузки и передавать эту информацию операционной системе 102. Операционная система 102 может затем передавать эти характеристики прикладной программе.
[0032] Страница памяти, когда используется в данном документе, может ссылаться на участок памяти в модуле памяти. В некоторых случаях страница памяти, иногда называемая областью памяти или участком памяти, может быть сгруппирована или логически разделена по характеристике запоминающего устройства. Например, страница, область или участок памяти может соответствовать памяти, содержимое которой может быть считываемым или записываемым в одной операции. В другом примере страница, область или участок памяти может совместно использовать строку кэша. В других случаях границы страниц, областей или участков памяти могут быть логически разделены контроллером памяти, микропрограммным обеспечением или операционной системой.
[0033] Как отмечается, модули 114 DRAM-памяти могут быть энергозависимым RAM. Однако, микропрограммное обеспечение 104 и/или операционная система 102 может идентифицировать страницы энергозависимых модулей 114 DRAM-памяти как энергонезависимую память. Идентификация может содержать передачу информации о характеристиках памяти пользователю памяти. Например, микропрограммное обеспечение 104 может сообщать операционной системе 102, что некоторые страницы модулей 114 DRAM-памяти являются страницами энергонезависимой памяти. Это может, например, подразумевать обновление таблиц описания системы, таких как таблицы описания системы, определенные усовершенствованным интерфейсом управления конфигурированием и электропитанием ("ACPI"). Операционная система 102 может сообщать эту информацию приложению, которое работает на вычислительном устройстве 100. Приложение, работающее в операционной системе, может определять, что операционная система идентифицировала страницу памяти как энергонезависимую, вызывая прикладной программный интерфейс ("API") операционной системы, изучая таблицу описания системы ACPI, и т.д. Отметим, что в некоторых случаях идентификация памяти как энергонезависимой может подразумевать, что микропрограммное обеспечение или операционная система записывают, что страница памяти должна быть обработана как энергонезависимая, без явного или неявного уведомления пользователя страницы памяти.
[0034] Число страниц, идентифицированных как энергозависимые или энергонезависимые, может зависеть от множества факторов, включающих в себя величину мощности, доступной в аккумуляторном источнике 124 питания, и величину мощности, необходимой, чтобы сохранять содержимое страницы энергозависимой памяти, которая была идентифицирована как энергонезависимая. Соответственно, модуль 114 DRAM-памяти может содержать идентифицированный участок энергонезависимой памяти 116 и идентифицированный участок энергозависимой памяти 118.
[0035] Приложения, работающие на вычислительном устройстве 100, могут адаптировать свою обработку, например, записывая данные в память, идентифицированную как энергонезависимая память, без обязательного выполнения дополнительных этапов, чтобы гарантировать, что данные были зафиксированы. Приложения могут, в некоторых случаях, добиваться более высокой производительности, когда более значительные объемы памяти идентифицируются как находящиеся в режиме энергонезависимой фиксации. Приложение может, например, обходить обработку, связанную с гарантированием, что запись была зафиксирована, если запись была в область памяти, которая была идентифицирована как энергонезависимая.
[0036] Фиг. 2 - это блок-схема, которая изображает корректировку числа страниц, идентифицированных как энергонезависимые, на основе доступной мощности аккумулятора. Фиг. 2 изображает аккумулятор 200 и модули 208 DRAM-памяти. Показаны три состояния аккумулятора 200, соответствующих трем уровням 202, 204, 206 энергии. Пример на фиг. 2 предназначается, чтобы иллюстрировать вариант осуществления вычислительного устройства, такого как вычислительное устройство 100, изображенное на фиг. 1, которое корректирует объем памяти, идентифицированной как энергонезависимая, на основе энергии, доступной устройству. В примере на фиг. 2 вычислительное устройство 100 может работать от сети энергоснабжения, в то время как величина энергии, доступная в аккумуляторе 200, колеблется со временем. Хотя фиг. 2 изображает уменьшающуюся величину мощности аккумулятора, в некоторых случаях количество энергии может увеличиваться со временем, и принципы, аналогичные принципам, изображенным на фиг. 2, могут быть применены. Количество энергии может колебаться по различным причинам. Например, в некоторых случаях аккумулятор 200 может быть соединен с множеством вычислительных устройств, некоторые из которых могут потреблять мощность от аккумулятора 200, в то время как вычислительное устройство 100 остается на питании от аккумулятора. В другом примере температура или другие рабочие условия аккумулятора могут обусловливать количество доступной энергии. В другом примере максимальная емкость аккумулятора может деградировать со временем.
[0037] При уровне 202 энергии количество энергии в аккумуляторе 200 может быть достаточным, чтобы выполнять переносы памяти по некоторому числу страниц 220 памяти. На фиг. 2, например, количество энергии в аккумуляторе 200 при уровне 202 энергии может быть достаточным, чтобы переносить содержимое семи из десяти изображенных страниц 220 памяти. Операционная система или микропрограммное обеспечение может определять число страниц памяти, которые могут быть перенесены, на основе таких факторов как объем памяти в каждой странице, количество энергии, используемой, чтобы выполнять DMA-операцию, количество энергии, используемой устройствами, питание которой поддерживается во время операций переноса памяти, и т.д. Когда аккумулятор 200 имеет более значительное количество доступной энергии, большее число страниц может быть идентифицировано как энергонезависимая память 210, и меньшее число страниц может быть идентифицировано как энергозависимая память 212.
[0038] При пониженном уровне 204 энергии количество энергии, доступное для переноса содержимого страниц 220 памяти, может также быть снижено. Может, например, быть достаточно памяти для переноса четырех страниц памяти, используя доступную мощность аккумулятора. Операционная система или микропрограммное обеспечение может идентифицировать четыре страницы памяти в качестве энергонезависимой памяти 214 и шесть страниц, идентифицированных в качестве энергозависимой памяти 216.
[0039] Аналогично, при дополнительно пониженном уровне 206 энергии, аккумулятор 200 может не иметь способности подавать достаточную мощность аккумулятора для переноса каких-либо страниц модулей 208 DRAM-памяти на энергонезависимое устройство хранения. Операционная система или микропрограммное обеспечение может затем идентифицировать все страницы модулей 208 DRAM-памяти в качестве энергозависимой памяти 218.
[0040] Когда страница памяти была идентифицирована в качестве энергонезависимой памяти, ее содержимое может быть сохранено прежде идентификации впоследствии в качестве энергозависимой памяти. Например, когда количество энергии, доступное в аккумуляторе 200, было снижено с уровня 202 энергии до уровня 204 энергии, три страницы идентифицированной энергонезависимой памяти 210 могут затем переходить к идентификации в качестве энергозависимой памяти 216. Операционная система или микропрограммное обеспечение может переносить содержимое трех страниц ранее идентифицированной энергонезависимой памяти 210 в ответ на определение перехода страниц к идентификации в качестве энергозависимой памяти 216. Содержимое памяти может быть перенесено, в то время как вычислительное устройство 100 все еще использует энергоснабжение, и соответственно количество энергии, доступное в аккумуляторе 200, не подвергается влиянию переносов.
[0041] Если энергоснабжение отказало прежде завершения переносов, может не быть достаточно энергии, доступной для переноса всех страниц памяти, ранее идентифицированных в качестве энергонезависимой памяти 210. Риск этого происшествия может быть смягчен различными способами, включающими в себя, но не ограничивающимися, более частые корректировки в числе страниц памяти, которые идентифицируются в качестве энергонезависимых, и включение большего допуска к колебаниям аккумулятора в вычисления, используемые для определения числа страниц памяти для идентификации в качестве энергонезависимых. Например, число страниц для идентификации в качестве энергонезависимых может быть уменьшено в пропорции к величине колебания уровня мощности в аккумуляторе.
[0042] Фиг. 3 - это блок-схема, изображающая пример вычислительного устройства, идентифицирующего энергозависимую память как энергозависимую или энергонезависимую память. Вычислительное устройство 300 может содержать микропрограммное обеспечение 308, которое принимает данные от аккумулятора 310. Аккумулятор 310 может, например, отправлять данные, содержащие информацию о текущем состоянии энергоснабжения, количестве энергии, доступном в аккумуляторе 310, и т.д. В некоторых случаях аккумулятор 310 может предоставлять различные показатели и историческую информацию, такую как даты, времена и продолжительности прерываний энергоснабжения.
[0043] Микропрограммное обеспечение 308 может быть базовой системой ввода/вывода ("BIOS"). Микропрограммное обеспечение 308 может инициализировать различные аппаратные устройства и компоненты вычислительного устройства 300. Микропрограммное обеспечение 308 может также быть задействовано в различных аспектах операций во время работы. В некоторых случаях микропрограммное обеспечение 308 может предоставлять уровень абстракции для аппаратных компонентов вычислительного устройства 300, посредством которых операционная система 304 осуществляет доступ к аппаратным средствам вычислительного устройства 300.
[0044] Интерфейс 306 конфигурации и электропитания может предоставлять операционной системе 304 доступ к информации и обновлениям, принадлежащим к конфигурации памяти вычислительного устройства 300. В некоторых случаях интерфейс управления конфигурацией и электропитанием может содержать усовершенствованный интерфейс управления конфигурацией и электропитанием ("ACPI"). Микропрограммное обеспечение 308 может предоставлять таблицы конфигурации, через ACPI, которые описывают характеристики различных модулей памяти, установленных на вычислительном устройстве. В некоторых случаях эти таблицы могут описывать характеристики модулей памяти, как они есть - энергозависимая память сообщается как энергозависимая память, а энергонезависимая память сообщается как энергонезависимая. В других случаях таблицы могут быть использованы, чтобы указывать, что некоторая пропорциональная доля энергозависимых модулей памяти, включающих в себя потенциально все энергозависимые модули памяти, является энергонезависимыми. Таблицы, могут, в некоторых случаях, предоставлять указание, что энергонезависимая характеристика памяти имитируется посредством микропрограммного обеспечения или операционной системы. В других случаях таблица может не включать в себя указание, что энергонезависимая характеристика не является характеристикой самого модуля памяти.
[0045] Операционная система 304 может предоставлять возможность исполнения различных программ, процессов и подпроцессов. Они могут называться в данном документе приложениями, такими как приложение 302, изображенное на фиг. 3. Приложение 302 может использовать память, идентифицированную в качестве энергонезависимой, различными способами. В примере операционная система 304 может предоставлять приложению 302 доступ к памяти, которая идентифицируется как энергонезависимая, с помощью прикладного программного интерфейса ("API"). Это может содержать вызов API для создания "кучи" или распределения памяти и определения флага, указывающего, что возвращенная "куча" или сегмент памяти должен быть страницей энергонезависимой памяти. В некоторых случаях приложение может быть приспособлено указывать, могут или нет энергонезависимые характеристики предоставленной памяти быть предоставлены посредством операционной системы или микропрограммного обеспечения. В других случаях страницы, основанные на модулях энергозависимой памяти, могут быть предоставлены прозрачно, так что приложение может необязательно содержать инструкции, которые адаптируются к имитируемой энергонезависимости предоставленной памяти.
[0046] Данные, принадлежащие состоянию аккумулятора 310, могут распространяться различным компонентам вычислительного устройства 300, включающим в себя микропрограммное обеспечение 308. Микропрограммное обеспечение 308 может, например, принимать или иначе получать данные от аккумулятора 310. Микропрограммное обеспечение 308 может распространять информацию через интерфейс 306 управления конфигурацией и электропитанием операционной системе 304. Операционная система 304 может затем применять информацию, корректируя объем памяти, идентифицируемой в качестве энергонезависимой. Объем памяти, идентифицируемой в качестве энергонезависимой, может быть определен на основе различных факторов, таких как соотношение производительность-риск, оцениваемая вероятность и продолжительность прерываний энергоснабжения, техническое состояние аккумулятора, частота, с которой мощность аккумулятора колеблется, и т.п.
[0047] Операционная система 304 может реагировать на увеличения в количестве энергии, доступном для использования вычислительным устройством 300. Реакция может включать в себя увеличение объема памяти, идентифицируемой в качестве энергонезависимой. Например, операционная система 304 может выбирать дополнительные страницы модулей DRAM-памяти для идентификации в качестве страниц энергонезависимой памяти. Это может подразумевать предоставление приложению 302 доступа к странице выбранного DRAM-модуля, идентификацию страницы как энергонезависимой и инструктирование переноса содержимого страницы памяти на энергонезависимое устройство хранения в случае сбоя энергоснабжения или отключения системы. Содержимое памяти может также быть перенесено на энергонезависимое устройство хранения, чтобы создавать пространство для последующих операций записи в энергонезависимую память, или по другим причинам.
[0048] Операционная система 304 может реагировать на уменьшения в количестве энергии, доступном для использования вычислительным устройством 300. Аспекты реагирования могут включать в себя выбор страниц модулей DRAM-памяти, ранее идентифицированной в качестве энергонезависимой, и инструктирование идентификации этих страниц вместо этого как энергозависимых. Как отмечается, процесс идентификации может включать в себя обновление таблиц конфигурации системы, чтобы указывать, является ли страница памяти энергозависимой или энергонезависимой. Когда количество энергии, доступное в аккумуляторе 310, уменьшилось, таблица может быть обновлена, так что страницы, ранее указанные как энергонезависимые, указываются как энергозависимые. Другой аспект реагирования может включать в себя перенос содержимого этих отсеянных страниц на энергонезависимое устройство хранения. Отсеянная страница может иметь содержимое, еще несохраненное на энергонезависимом устройстве хранения, и, по существу, содержимое может быть сохранено, когда страница отсеивается. Этого можно избежать, когда несохраненные данные не были записаны в отсеянную страницу. По существу, в некоторых случаях, страницы, содержимое которых уже было сохранено, или в которые данные еще не были записаны, могут быть предпочтительными целями для отсеивания.
[0049] Аккумулятор 310 может совместно использоваться устройствами в дополнение к вычислительному устройству 300. Фиг. 4 изображает аккумулятор, совместно используемый множеством вычислительных устройств. Аккумулятор 400 может предоставлять резервную операционную мощность множеству вычислительных устройств 408, 410, 412. Аккумулятор 400 может также предоставлять, или разрешать доступ, данные, принадлежащие состоянию аккумулятора 400.
[0050] Доля мощности аккумулятора может быть зарезервирована для использования каждым из вычислительных устройств 408, 410, 412. Как изображено на фиг. 4, каждое из вычислительных устройств 408, 410, 412 может иметь зарезервированную долю 402, 404, 406 энергии. Зарезервированные доли 402, 404, 406 энергии могут быть зарезервированы для использования, соответствующими вычислительными устройствами 408, 410, 412, в случае, когда энергоснабжение прерывается. В некоторых обстоятельствах зарезервированные доли 402, 404, 406 энергии могут быть зарезервированы, в частности, для переноса содержимого модулей DRAM-памяти, которые были идентифицированы как энергонезависимые.
[0051] Количество энергии в зарезервированных долях 402, 404, 406 энергии может быть основано на таких факторах как целевой объем памяти, которая должна быть идентифицирована как энергонезависимая. Например, вычислительное устройство 408 может быть сконфигурировано, чтобы активно идентифицировать модули DRAM-памяти как энергонезависимые. По существу, зарезервированная доля 402 энергии для вычислительного устройства 408 может быть сделана больше доли других зарезервированных долей 404, 406 энергии. Другие факторы, которые могут быть объединены в количество резервируемой энергии, могут быть допуском риска, оцениваемой вероятностью потери энергоснабжения, техническим состоянием аккумуляторной батареи и т.д. Модель энергии, необходимой для переноса содержимого памяти, может быть использована вместе с моделью подачи энергии от аккумуляторной батареи. Каждое из вычислительных устройств 408, 410, 412 может использовать модели, чтобы определять, сколько памяти может быть идентифицировано в качестве энергонезависимой без помех требованиям питания других вычислительных устройств 408, 410, 412.
[0052] Энергия в аккумуляторе 400 может быть зарезервирована операционными системами или микропрограммным обеспечением вычислительных устройств 408, 410 и 412. Например, операционная система вычислительного устройства 408 может принимать или иначе получать информацию о других пользователях аккумулятора 400, таких как другие изображенные вычислительные устройства 410, 412. Информация может включать в себя факторы, которые могут влиять на количество энергии, зарезервированной для каждой доли. В случае, когда энергоснабжение прерывается, вычислительное устройство 400 может действовать в своем выделенном "бюджете мощности", например, используя только количество зарезервированной энергии 402, чтобы переносить содержимое памяти, идентифицированной как энергонезависимая.
[0053] Фиг. 5 - это блок-схема последовательности операций, изображающая примерный процесс работы вычислительного устройства с энергозависимой памятью, идентифицированной в качестве энергонезависимой памяти. Хотя фиг. 5 изображается как последовательность блоков, будет понятно, что изображенная последовательность не должна истолковываться как ограничивающая рамки настоящего изобретения вариантами осуществления, которые придерживаются изображенной последовательности. Кроме того, будет понятно, что, в некоторых вариантах осуществления настоящего изобретения, некоторые из операций, указанных посредством изображенных блоков, могут быть изменены, переупорядочены, выполняться параллельно или быть пропущены.
[0054] Во время работы вычислительного устройства, такого как вычислительное устройство 100, изображенное на фиг. 1, операционная система или микропрограммное обеспечение вычислительного устройства может периодически определять, сколько памяти может быть идентифицировано как энергонезависимая, основываясь, по меньшей мере частично, на количестве энергии, необходимого для переноса содержимого этой памяти на энергонезависимое устройство хранения. Блок 500 изображает определение текущей способности идентификации энергозависимых модулей памяти в качестве энергонезависимых, где способность может быть ограничена количеством энергии, доступным для сохранения содержимого памяти в случае, когда энергоснабжение прерывается.
[0055] Блок 502 изображает вычислительное устройство, работающее с множеством страниц энергозависимой памяти, идентифицированных как энергонезависимые во время фазы энергоснабжения. Фаза энергоснабжения может ссылаться на время, когда энергоснабжение является доступным вычислительному устройству. В некотором случае фаза энергоснабжения может включать в себя периоды времени, в которых энергоснабжение прерывается, но в течение интервала времени, который ниже порогового интервала времени. Пороговое значение может быть основано на оцениваемой вероятности, что питание будет восстановлено, прежде чем пороговый интервал времени пройдет. Фаза энергоснабжения может тогда продолжаться, если существуют сравнительно короткие периоды прерывания.
[0056] Операции блока 504 могут также быть выполнены во время фазы энергоснабжения. В течение этого времени, как изображено посредством блока 504, вычислительное устройство может наблюдать за емкостью аккумулятора и состоянием питания. Наблюдение за емкостью может подразумевать прием или иное получение информации о величине мощности, накопленной в аккумуляторе. Вычислительное устройство может, кроме того, наблюдать за величиной мощности, которая хранится в аккумуляторе и зарезервирована для использования вычислительным устройством в случае сбоя питания. Наблюдение за состоянием питания может подразумевать прием или иное получение информации, указывающей, снабжается или нет вычислительное устройство и/или аккумулятор в настоящее время электропитанием, или вызывает ли некоторое другое условие уменьшение доступного количества энергии в аккумуляторе.
[0057] Как изображено посредством блока 506, операции блоков 500-504 могут повторяться, пока фаза энергоснабжения продолжается. Если энергоснабжение отказывает или иначе прерывается, операции блоков 508 и 510 могут быть выполнены.
[0058] Как изображено посредством фиг. 5 и объяснено в данном документе, фаза энергоснабжения может быть ассоциирована с временными прерываниями в энергоснабжении. Однако, продолжительность перебоя может быть такова, что вычислительное устройство может входить в фазу, в которой его поведение адаптируется к использованию мощности аккумулятора. Блок 508 изображает вход в фазу питания от аккумулятора, в которой работа вычислительного устройства адаптируется к использованию мощности аккумулятора. Что касается идентификации энергозависимой памяти в качестве энергонезависимой памяти, работа вычислительного устройства может быть адаптирована различными способами. Например, вычислительное устройство может прекращать идентифицировать новые страницы энергозависимой памяти как энергонезависимые и может рационально отсеивать страницы энергозависимой памяти как энергонезависимые, когда содержимое этих страниц переносится на энергонезависимое устройство хранения. Степень, с которой это происходит, может быть основана на различных факторах, таких как параметры настройки, которые предоставляют возможность указания компромисса между риском и производительностью.
[0059] Операции блока 510 могут быть отложены до тех пор, пока количество энергии, доступное в аккумуляторе не уменьшится до точки, когда, в случае, когда расход аккумулятора должен продолжаться, может не быть достаточно энергии, доступной для сохранения содержимого энергозависимой памяти, которая была идентифицирована как энергонезависимая. Блок 510 изображает вход в фазу сохранения памяти для энергозависимой памяти, которая была идентифицирована как энергонезависимая. В этой фазе вычислительное устройство может входить в состояние, в котором потребление мощности, прежде всего, направляется на сохранение содержимого памяти, идентифицированной как энергонезависимая.
[0060] Объем памяти, идентифицированной как энергонезависимая, может иметь воздействие на производительность вычислительного устройства. Производительность приложения может быть увеличена, в некоторых обстоятельствах, посредством идентификации большего объема памяти как энергонезависимой и использования различных технологий, описанных в данном документе, чтобы гарантировать, что данные, записанные в энергозависимую память, сохраняются. Фиг. 6 - это блок-схема последовательности операций, изображающая пример процесса корректировки идентификации энергонезависимой памяти на основе параметров производительности приложения. Хотя изображается как последовательность блоков, будет понятно, что изображенная последовательность не должна истолковываться как ограничивающая рамки настоящего изобретения вариантами осуществления, которые придерживаются изображенной последовательности. Кроме того, будет понятно, что, в некоторых вариантах осуществления настоящего изобретения, некоторые из операций, указанных посредством изображенных блоков, могут быть изменены, переупорядочены, выполняться параллельно или быть пропущены.
[0061] Блок 600 изображает вычислительное устройство, принимающее указание доступной мощности аккумулятора. Указание может включать в себя информацию, достаточную, чтобы определять, сколько доступной мощности будет надежно доступно, если вычислительное устройство войдет в режим сохранения памяти, как изображено посредством блока 510 на фиг. 5.
[0062] Блок 602 изображает определение бюджета мощности и изменения бюджета мощности. Бюджет мощности может ссылаться на выделение мощности аккумулятора в случае, когда осуществляется вход в режим сохранения памяти. Например, бюджет мощности может включать в себя выделения доступной мощности аккумулятора для работы ядра, неядра, одного или более модулей памяти и энергонезависимого устройства хранения для того, чтобы сохранять содержимое памяти, идентифицированной как энергонезависимая. Бюджет мощности может также включать в себя распределения для других устройств.
[0063] Изменчивость бюджета мощности может ссылаться на оцениваемую достоверность бюджета мощности. Это может включать в себя корректировки для таких факторов как величина доступной мощности и величина мощности, которую объекты в бюджете мощности могут фактически потреблять во время фазы сохранения памяти. Например, более агрессивный бюджет мощности может предполагать, что некоторая процентная доля страниц памяти, идентифицированной как энергонезависимая, не будет фактически нуждаться в сохранении во время фазы сохранения памяти, поскольку они могут уже быть сохранены в ходе обычных операций, или они могут никогда не быть записаны и, таким образом, не содержат ничего, что должно быть сохранено. Однако, если эти предположения оказываются неточными, бюджет памяти может быть превышен.
[0064] Блок 604 изображает использование параметров настройки, чтобы уточнять бюджет мощности. Например, параметр настройки может быть элементом конфигурации операционной системы или микропрограммного обеспечения, который указывает, насколько агрессивно вычислительная система должна идентифицировать энергозависимую память как энергонезависимую. Например, в некоторых приложениях может быть приемлемо рисковать данными, теряемыми в случае сбоя системы. Бюджет мощности может тогда быть скорректирован, чтобы разрешать более значительным объемам энергозависимой памяти идентифицироваться как энергонезависимые. Для других приложений потеря данных может рассматриваться как неприемлемая. Для этих приложений элемент конфигурации операционной системы или микропрограммного обеспечения может указывать, что бюджет мощности должен быть вычислен на основе пессимистических проектов использования мощности во время фазы сохранения памяти.
[0065] В блоке 606 вычислительное устройство может назначать режимы фиксации страницам энергозависимой памяти. Другими словами, вычислительное устройство может определять идентификацию некоторых страниц энергозависимой памяти как имеющих режим энергонезависимой фиксации, в то время как другие страницы могут оставаться в режиме энергозависимой фиксации. Здесь, режим фиксации может ссылаться на то, может или нет запись рассматриваться как зафиксированная, т.е., постоянная, когда она записана в память.
[0066] Вычислительная система может выбирать страницы памяти для режима энергонезависимой фиксации на основе бюджета мощности. Это может включать в себя выбор вплоть до максимального числа страниц памяти, разрешенного бюджетом мощности, чтобы иметь режим энергонезависимой фиксации. Это может также включать в себя выбор страниц, чтобы максимизировать число страниц, которые могут быть ассоциированы с энергонезависимым режимом фиксации, в то же время оставаясь согласующимся с бюджетом мощности. В некоторых случаях выбранные страницы могут быть сгруппированы модулем памяти, так что суммарное число модулей памяти, имеющих страницы с энергонезависимым режимом фиксации, может быть уменьшено, и согласованность с бюджетом мощности может быть повышена.
[0067] Фиг. 7 - это блок-схема, предоставляющая пример сохранения содержимого энергозависимой памяти. Модуль 700 DRAM-памяти, имеющий характеристики энергозависимой памяти, может содержать множество страниц памяти. Поскольку изображенный модуль 700 DRAM-памяти является энергозависимым, все его составляющие страницы памяти являются энергозависимыми, т.е., их содержимое будет потеряно, если питание модуля 700 DRAM-памяти прерывается. Однако, как отмечается в данном документе, некоторые страницы могут быть идентифицированы как энергонезависимые, и, таким образом, обрабатываться как энергонезависимые приложениями, исполняющимися на вычислительном устройстве. Как изображено на фиг 7, модуль DRAM-памяти может содержать идентифицированные энергонезависимые страницы 704, 706. Из них некоторые страницы 704 памяти могут содержать несохраненное содержимое, в то время как другие страницы 706 памяти могут содержать содержимое, которое уже было сохранено, или эквивалентно страница 706 памяти может не быть когда-либо записана и, таким образом, не имеет ничего, что должно быть сохранено. Модуль 700 DRAM-памяти может также содержать страницы памяти 708, которые в настоящий момент не идентифицируются как энергозависимые.
[0068] В примере на фиг. 7 содержимое идентифицированной энергонезависимой страницы 706 может быть ранее сохранено посредством переноса содержимого страницы 706 в энергонезависимое устройство 702 хранения. Содержимое страницы 706 указывается как хранящееся на энергонезависимом устройстве 702 хранения посредством сохраненной записи 712 страницы.
[0069] Содержимое одной или более страниц памяти, идентифицированных как энергонезависимые, но еще не сохраненное 704, может быть сохранено на энергонезависимом устройстве хранения посредством операции 714 непосредственного переноса памяти. Например, процессор и контроллер памяти может инструктировать DMA-операцию для переноса содержимого страницы на энергонезависимое устройство 702 хранения.
[0070] Области энергонезависимого устройства 702 хранения могут удерживаться в резерве. Это изображается на фиг. 7 посредством элементов, озаглавленных как зарезервированное хранилище 710. Зарезервированное хранилище 710 может включать в себя области пространства, достаточного, чтобы хранить содержимое страниц памяти, идентифицированной как энергонезависимая 704 и 706. Объем памяти, идентифицированной как энергонезависимая, может, в некоторых случаях, быть основан частично на объеме пространства хранения, доступного на энергонезависимом устройстве 702 хранения, поскольку нехватка доступного пространства хранения может препятствовать сохранению содержимого памяти, идентифицированной как энергонезависимая.
[0071] Фаза сохранения памяти может начинаться входом в состояние пониженной мощности, адаптированное для сохранения содержимого энергозависимой памяти. Состояние пониженной мощности может разрешать Фиг. 8 - это блок-схема, изображающая примерный процесс сохранения содержимого энергозависимой памяти, идентифицированной как энергонезависимая. Хотя изображается как последовательность блоков, будет понятно, что изображенная последовательность не должна истолковываться как ограничивающая рамки настоящего изобретения вариантами осуществления, которые придерживаются изображенной последовательности. Кроме того, будет понятно, что, в некоторых вариантах осуществления настоящего изобретения, некоторые из операций, указанных посредством изображенных блоков, могут быть изменены, переупорядочены, выполняться параллельно или быть пропущены.
[0072] Блок 800 изображает вычислительное устройство, временно приостанавливающее виртуальные машины или другие приложения, такие как базы данных, для которых желателен период времени, чтобы становиться бездействующими. Например, при определении, что вычислительное устройство вошло в фазу сохранения памяти, или собирается войти, различные приложения, такие как виртуальные машины, могут быть уведомлены и получать управляемый период времени, в котором они могут сохранять столько незафиксированных данных, сколько возможно. Данные, записанные в памяти, идентифицированной как энергонезависимая, могут, в некоторых случаях, обрабатываться приложением, как если бы они были в зафиксированном состоянии, поскольку операционная система и/или микропрограммное обеспечение будет сохранять содержимое памяти во время фазы сохранения памяти.
[0073] На этапе 802 вычислительное устройство может начинать входить в состояние пониженной мощности, временно приостанавливая подачу питания к некоторым устройствам, ненужным во время оставшейся части фазы сохранения памяти. Эти устройства могут включать в себя графические карты, шины пользовательского интерфейса, сетевые карты и т.д.
[0074] Как изображено посредством блока 804, вычислительное устройство может также маскировать прерывания процессора. Например, все прерывания процессора могут быть маскированы за исключением тех, которые относятся к некоторым ошибкам, и тех, которые необходимы для обработки операций переноса памяти, таких как DMA-операции.
[0075] Блок 806 изображает, что подача питания к неиспользуемым процессорам, включающим в себя все ассоциированные ядра, неядра и другие компоненты процессора, может быть временно приостановлена. В этом контексте, неиспользуемые могут ссылаться на такие процессоры, которые не нужны для выполнения сохранения памяти. Например, в некоторых случаях один процессор, или одно ядро одного процессора, может быть достаточным, чтобы выполнять сохранение памяти. Подача питания к остальным процессорам вычислительной системы может, следовательно, быть временно приостановлена во время фазы сохранения памяти. Отметим, что в некоторых случаях прерывание может пробуждать процессор и инструктировать возобновление подачи питания. Маскирование прерывания, изображенное посредством блока 804, может предотвращать это событие и удерживать неиспользуемые процессоры в состоянии пониженной мощности или без питания.
[0076] Блок 808 изображает, что вычислительное устройство может также временно приостанавливать подачу питания к модулям энергозависимой памяти, которые не имеют страниц, идентифицированных как энергонезависимые. Вычислительное устройство может также временно приостанавливать питание любых модулей энергозависимой памяти, содержимое которой уже было сохранено. Кроме того, вычислительное устройство может также временно приостанавливать питание любых модулей памяти, которые являются, по существу, энергонезависимыми, таких как модули памяти с логическими элементами НЕ-И ("NAND").
[0077] В различных случаях вычислительное устройство может отдавать приоритет операциям переноса памяти, затрагивающим модули энергозависимой памяти, которые могут быть выполнены раньше всего. Например, вычислительное устройство может отдавать приоритет переносу содержимого первого модуля памяти над содержимым второго модуля памяти, если содержимое первого модуля памяти может быть сохранено более быстро, чем содержимое второго модуля памяти. Этот подход может предоставлять возможность временно приостанавливать подачу питания к первому модулю памяти быстрее, чем подачу питания ко второму модулю памяти, приводя в результате к общему уменьшению количества энергии, используемой в фазе сохранения памяти.
[0078] Блок 810 изображает, что вычислительное устройство может временно приостанавливать подачу питания к ядру процессора, в то же время сохраняя подачу питания к неядру процессора. Для многоядерных процессоров подача питания ко всем ядрам может быть временно приостановлена. Во время фазы сохранения памяти подача питания к одному или более ядрам может возобновляться периодически. При восстановлении ядро может быть использовано, чтобы инициировать операцию переноса памяти, после которой подача питания может снова быть временно приостановлена. Это изображается посредством блока 812. Между тем, подача питания к неядру процессора сохраняется. Неядро, содержащее контроллер памяти, может наблюдать за операцией переноса памяти и инструктировать возобновление подачи питания к ядру процессора, когда перенос завершен.
[0079] Как изображено посредством блока 814, подача питания к энергонезависимому устройству хранения, а также к любым интерфейсам или шинам передачи данных, требуемым для записи в устройство хранения, может поддерживаться во время фазы сохранения памяти, так что операции переноса памяти могут быть завершены.
[0080] Фиг. 9 - это блок-схема последовательности операций, изображающая пример управления подачей питания к ядру процессора во время сохранения памяти. Хотя изображается как последовательность блоков, будет понятно, что изображенная последовательность не должна истолковываться как ограничивающая рамки настоящего изобретения вариантами осуществления, которые придерживаются изображенной последовательности. Кроме того, будет понятно, что, в некоторых вариантах осуществления настоящего изобретения, некоторые из операций, указанных посредством изображенных блоков, могут быть изменены, переупорядочены, выполняться параллельно или быть пропущены.
[0081] Блок 900 изображает, что ядро процессора может исполнять инструкции, чтобы инициировать операцию прямого переноса памяти из модуля энергозависимой памяти на энергонезависимое устройство хранения. Операция прямого переноса памяти может копировать страницы модулей энергозависимой памяти, которые были идентифицированы как энергонезависимые, на энергонезависимое устройство хранения.
[0082] Блок 902 изображает приостановку питания ядра процессора, после того как оно инициировало операцию прямого переноса памяти. Операция прямого переноса памяти может происходить, пока питание временно приостановлено. Подача питания к неядру процессора может сохраняться в течение этого времени.
[0083] Как изображено посредством блока 904, прерывание может быть создано, чтобы указывать, что операция переноса памяти завершена. Прерывание может быть сформировано контроллером памяти неядра. Обработка сигнала прерывания может включать в себя инструктирование ядру пробуждаться посредством, по меньшей мере, возобновления подачи питания к ядру. Эта операция изображается посредством блока 900.
[0084] В блоке 908 пробужденное ядро может исполнять инструкции, чтобы определять, вся ли энергозависимая память, ранее идентифицированная как энергонезависимая, была сохранена. Это может содержать исполнение инструкций, которые изучают записи страниц энергозависимой памяти, идентифицированных как энергонезависимые, и информацию, указывающую, было ли уже сохранено содержимое соответствующих страниц, не требуют сохранения, поскольку они не были записаны, или все еще должны быть сохранены.
[0085] Если вся энергозависимая память, идентифицированная как энергонезависимая память, была сохранена, или не требует сохранения, система может выключаться, как изображено посредством блока 910. Иначе обработка может возобновляться в блоке 900, когда пробужденный процессор может инициировать дополнительную операцию переноса памяти.
[0086] Фиг. 10 - это блок-схема последовательности операций, изображающая пример работы вычислительного устройства с модулями энергозависимой памяти, идентифицированной как энергонезависимая. Хотя изображается как последовательность блоков, будет понятно, что изображенная последовательность не должна истолковываться как ограничивающая рамки настоящего изобретения вариантами осуществления, которые придерживаются изображенной последовательности. Кроме того, будет понятно, что, в некоторых вариантах осуществления настоящего изобретения, некоторые из операций, указанных посредством изображенных блоков, могут быть изменены, переупорядочены, выполняться параллельно или быть пропущены.
[0087] Блок 1000 изображает получение информации, указывающей оцениваемое количество энергии, которая будет использована для переноса содержимого страницы энергозависимой памяти в энергонезависимое устройство хранения. Информация может быть получена из наблюдения, экспериментирования, показателей, записанных во время работы вычислительного устройства, и т.д. Информация может, в некоторых случаях, быть предоставлена посредством параметров конфигурации. Информация может включать в себя количество энергии, используемой, чтобы выполнять операцию DMA-переноса в энергонезависимое устройство хранения. Информация может также включать в себя энергию, используемую ядром процессора, чтобы инициировать DMA-перенос, и количество энергии, потребляемой энергонезависимым устройством хранения. Другие факторы потребления энергии также могут быть включены.
[0088] Блок 1002 изображает получение информации, указывающей количество энергии, доступное в аккумуляторе. Информация может быть получена, например, из сообщений, отправленных от аккумулятора вычислительному устройству, или от опрашивающего механизма, инициированного вычислительным устройством. Эти примеры являются иллюстративными и не должны истолковываться как ограничивающие.
[0089] Блок 1004 изображает определение, что содержимое страницы памяти может быть перенесено на энергонезависимое устройство хранения, используя количество энергии, доступное в аккумуляторе.
[0090] Определение может быть основано на рабочих режимах, таких как режим производительности или режим безопасности данных. Рабочие режимы могут быть указаны посредством параметров или конфигурационных данных, например, рабочий режим может указывать уровень риска, который считается допустимым при вычислении максимального числа страниц энергозависимой памяти для идентификации в качестве энергонезависимой.
[0091] Определение может также быть основано на суммарном числе страниц, идентифицированных в настоящий момент как энергонезависимые, или числе страниц, которые были идентифицированы таким образом, и которые в настоящий момент имеют данные, требующие сохранения. Операционная система или микропрограммное обеспечение может определять количество энергии, доступное для каждой страницы, и сравнивать это значение с энергией, требуемой для сохранения страницы памяти. Если количество больше достаточного, большее число страниц может быть идентифицировано как энергонезависимые. Если количество является недостаточным, операционная система или микропрограммное обеспечение может предпринимать различные шаги, во время энергоснабжения, чтобы повторно идентифицировать достаточное число страниц в качестве энергозависимых. Вычислительная система может аналогично определять максимальное число страниц энергозависимой памяти, которые могут быть идентифицированы как энергонезависимые. Максимальное число может периодически повторно вычисляться.
[0092] Определение может быть основано на вычислении статистической вероятности, что, в случае прерывания энергоснабжения, участок энергозависимой памяти будет иметь возможность переноса в энергонезависимую память, используя доступное количество энергии.
[0093] Блок 1006 изображает конфигурирование операционной системы вычислительного устройства, чтобы обрабатывать страницу энергозависимой памяти в качестве энергонезависимой памяти, на основе определения. Обработка страницы энергозависимой памяти как энергонезависимой может включать в себя предоставление, приложению, исполняющемуся на вычислительном устройстве, информации, идентифицирующей режим фиксации, который поддерживается памятью. Режим фиксации может, например, указывать, что данные, записанные в память, немедленно фиксируются, т.е., немедленно делаются долговечными относительно вовлеченности приложения (т.к. операционная система или микропрограммное обеспечение будут предполагать ответственность за сохранение содержимого памяти, идентифицированной в качестве энергонезависимой).
[0094] Конфигурирование операционной системы может содержать обновление данных интерфейса конфигурации информацией, указывающей, что страница является энергонезависимой вместо энергозависимой. Например, микропрограммное обеспечение может обновлять ACPI-таблицы, так что память описывается для ее пользователей как энергонезависимая.
[0095] Блок 1008 изображает прием информации, указывающей вход в фазу сохранения памяти. Информация может, например, быть отправлена или иначе получена от аккумулятора, когда энергоснабжение было прервано. В ответ на прерывание энергоснабжения вычислительное устройство может переключаться на использование мощности аккумулятора и продолжать обычные операции. Однако, когда время проходит, доступная мощность в аккумуляторе может падать до момента, в который количество доступной энергии, если она будет дальше уменьшаться, будет недостаточным для сохранения содержимого всех страниц энергозависимой памяти, которые в настоящий момент идентифицируются как энергонезависимые, и которые имеют содержимое, которое должно быть сохранено. В это время вычислительное устройство может входить в фазу сохранения памяти, которая может подразумевать выключение потребления мощности, ненужной для сохранения памяти, и инициирование переносов памяти, требуемых для сохранения содержимого энергозависимой памяти, идентифицированной как энергонезависимая.
[0096] Содержимое страницы может быть перенесено в ответ на прием информации, указывающей уменьшение в количестве энергии, доступном в аккумуляторе. Уменьшение может, например, происходить вследствие потери энергоснабжения, ухудшения технического состояния аккумулятора, дополнительных устройств, присоединяемых к аккумулятору, и т.д.
[0097] Перед входом в фазу сохранения памяти операционная система или микропрограммное обеспечение вычислительного устройства может начинать списывать страницы энергозависимой памяти, которые были идентифицированы как энергонезависимые. Это может подразумевать сохранение содержимого памяти и повторную идентификацию страницы как энергозависимой. Например, в то время как при питании от аккумулятора, но обычной работе операционная система или микропрограммное обеспечение может наблюдать за такими факторами как время, после того как энергоснабжение было прервано, или количество доступной мощности аккумулятора, и начинать списание имитируемых энергонезависимых страниц при предположении, что фаза сохранения памяти становится вероятно увеличивающейся, но еще неопределенно. Параметр настройки или параметр производительности может быть использован, чтобы корректировать то, насколько быстро это должно происходить. Когда производительность вместо безопасности пользуется большим приоритетом, параметры могут указывать, что система должна продолжать обрабатывать энергозависимую память как энергонезависимую настолько долго, насколько возможно.
[0098] Блок 1010 изображает сохранение содержимого страницы памяти посредством переноса содержимого страницы на энергонезависимое устройство хранения. Содержимое может, например, быть перенесено посредством DMA-операции, как описано в данном документе. Вычислительное устройство может поддерживать зарезервированное пространство на энергонезависимом устройстве хранения, в котором может быть сохранено содержимое страницы.
[0099] В варианте осуществления вычислительное устройство может содержать:
[0100] энергозависимую память, логически разделенную на множество страниц:
[0101] энергонезависимое устройство хранения, в котором содержимое страницы из множества страниц является переносимым на энергонезависимое устройство хранения посредством операции переноса памяти;
[0102] операционную систему вычислительного устройства;
[0103] один или более процессоров, которые инструктируют вычислительному устройству, по меньшей мере:
[0104] принимать информацию, указывающую количество энергии в батарее, энергии, доступной для использования вычислительным устройством;
[0105] определять количество энергии, необходимое, чтобы выполнять операцию переноса памяти;
[0106] определять, основываясь, по меньшей мере частично, на количестве энергии, необходимого, чтобы выполнять операцию переноса памяти, число страниц из множества страниц, содержимое которых может быть перенесено в энергонезависимое устройство хранения, используя количество энергии, доступное для использования вычислительным устройством; и
[0107] конфигурировать операционную систему, чтобы обрабатывать одну или более страниц из множества страниц энергозависимой памяти в качестве энергонезависимой памяти, при этом число собственно одной или более страниц основано на определенном числе страниц.
[0108] В варианте осуществления один или более процессоров дополнительно инструктируют вычислительному устройству, по меньшей мере:
[0109] переносить содержимое одной или более страниц в зарезервированный участок энергонезависимого устройства хранения.
[0110] В варианте осуществления содержимое одной или более страниц переносится в ответ на прием информации, указывающей уменьшение в количестве энергии в аккумуляторе.
[0111] В варианте осуществления конфигурирование операционной системы содержит обновление данных интерфейса конфигурации информацией, указывающей одну или более страниц энергонезависимой памяти, соответствующих одной или более страницам энергозависимой памяти.
[0112] В варианте осуществления способ использования памяти вычислительного устройства содержит:
[0113] получение информации, указывающей количество энергии, необходимое для переноса содержимого страницы энергозависимой памяти в энергонезависимую память;
[0114] прием информации, указывающей количество энергии, доступное для переноса содержимого страницы энергозависимой памяти в энергонезависимую память;
[0115] определение, основываясь, по меньшей мере частично, на необходимом количестве энергии, что содержимое страницы энергозависимой памяти может быть перенесено в энергонезависимую память, используя доступное количество энергии; и
[0116] конфигурирование операционной системы вычислительного устройства, чтобы обрабатывать страницу энергозависимой памяти в качестве страницы энергонезависимой памяти.
[0117] В варианте осуществления способ дополнительно содержит:
[0118] перенос содержимого страницы энергозависимой памяти в зарезервированный участок энергонезависимой памяти.
[0119] В варианте осуществления способ дополнительно содержит:
[0120] перенос содержимого страницы энергозависимой памяти в зарезервированный участок энергонезависимой памяти в ответ на прием информации, указывающей уменьшение в количестве энергии, доступном для переноса содержимого страницы энергозависимой памяти в энергонезависимую память.
[0121] В варианте осуществления конфигурирование операционной системы содержит обновление данных интерфейса конфигурации информацией, указывающей одну или более страниц энергонезависимой памяти, соответствующих одной или более страницам энергозависимой памяти.
[0122] В варианте осуществления способ дополнительно содержит:
[0123] определение, что содержимое страницы энергозависимой памяти может быть перенесено в энергонезависимую память, основываясь, по меньшей мере частично, на информации, указывающей по меньшей мере одно из режима производительности или режима безопасности вычислительного устройства.
[0124] В варианте осуществления способ дополнительно содержит:
[0125] прием информации, указывающей, что вычислительное устройство переключилось с энергоснабжения на питание от аккумулятора;
[0126] конфигурирование операционной системы, чтобы обрабатывать страницу энергозависимой памяти в качестве энергозависимой памяти, основываясь, по меньшей мере частично, на продолжительности времени, с момента переключения вычислительного устройства с энергоснабжения на питание от аккумулятора; и
[0127] перенос содержимого страницы энергозависимой памяти в энергонезависимую память.
[0128] В варианте осуществления информация, указывающая количество энергии, необходимое для переноса содержимого страницы энергозависимой памяти в энергонезависимую память, основывается, по меньшей мере частично на энергии, потребляемой посредством выполнения переноса с прямым доступом к памяти со страницы энергозависимой памяти в энергонезависимую память.
[0129] В варианте осуществления информация, указывающая количество энергии, необходимое для переноса содержимого страницы энергозависимой памяти в энергонезависимую память, основывается, по меньшей мере частично на энергии, потребляемой процессором, инициирующим операцию переноса содержимого страницы.
[0130] В варианте осуществления способ дополнительно содержит:
[0131] определение того, что содержимое страницы энергозависимой памяти может быть перенесено, основываясь, по меньшей мере частично, на числе других страниц энергозависимой памяти, сконфигурированных, чтобы обрабатываться операционной системой в качестве страницы энергонезависимой памяти.
[0132] В варианте осуществления способ дополнительно содержит:
[0133] определение максимального числа страниц энергозависимой памяти, которые могут быть перенесены в энергонезависимую память, используя энергию, доступную для переноса содержимого страницы энергозависимой памяти в энергонезависимую память.
[0134] В варианте осуществления компьютерно-читаемый носитель хранения имеет сохраненные на нем компьютерно-исполняемые инструкции, которые, при исполнении компьютером, инструктируют компьютеру, по меньшей мере:
[0135] получать информацию, указывающую количество энергии, необходимое для переноса содержимого энергозависимой памяти в энергонезависимую память;
[0136] принимать информацию, указывающую количество энергии, доступное для переноса содержимого страницы энергозависимой памяти в энергонезависимую память;
[0137] идентифицировать, основываясь, по меньшей мере частично, на необходимом количестве энергии, участок энергозависимой памяти, который может быть перенесен в энергонезависимую память, используя доступное количество энергии; и
[0138] конфигурировать операционную систему компьютера, чтобы обрабатывать участок энергозависимой памяти в качестве энергонезависимой памяти.
[0139] В варианте осуществления компьютерно-читаемый носитель хранения дополнительно содержит инструкции, которые, при исполнении компьютером, инструктируют компьютеру, по меньшей мере:
[0140] идентифицировать участок энергозависимой памяти, который может быть перенесен в энергонезависимую память, по меньшей мере, посредством определения объема памяти, который может быть перенесен в энергонезависимую память, используя доступное количество энергии.
[0141] В варианте осуществления компьютерно-читаемый носитель хранения дополнительно содержит инструкции, которые, при исполнении компьютером, инструктируют компьютеру, по меньшей мере:
[0142] вычислять статистическую вероятность того, что, в случае прерывания энергоснабжения, участок энергозависимой памяти будет иметь возможность переноса в энергонезависимую память, используя доступное количество энергии.
[0143] В варианте осуществления компьютерно-читаемый носитель хранения дополнительно содержит дополнительные инструкции, которые, при исполнении компьютером, инструктируют компьютеру, по меньшей мере:
[0144] переносить участок энергозависимой памяти в зарезервированный участок энергонезависимой памяти в ответ на прием информации, указывающей уменьшение в количестве энергии, доступном для переноса содержимого энергозависимой памяти в энергонезависимую память.
[0145] В варианте осуществления операционная система конфигурируется, чтобы обрабатывать участок энергозависимой памяти в качестве энергонезависимой памяти посредством по меньшей мере обновления данных о конфигурации и интерфейсе, к которым осуществляет доступ операционная система.
[0146] В варианте осуществления участок энергозависимой памяти обрабатывается операционной системой как энергонезависимая память посредством, по меньшей мере, предоставления, приложению, исполняющемуся на компьютере, информации, указывающей режим фиксации, совместимый с данными, сохраненными в участке энергозависимой памяти.
[0147] Аспекты настоящего изобретения могут быть реализованы на одном или более вычислительных устройствах или окружениях. Фиг. 11 изображает примерное вычислительное окружение, в котором некоторые из технологий, описанных в данном документе, могут быть осуществлены. Вычислительное устройство 1102 является только одним примером подходящего вычислительного окружения и не предназначено для того, чтобы предлагать какое-либо ограничение на область использования или функциональность описываемого в настоящий момент предмета изучения. Изображение вычислительного окружения не должно интерпретироваться ни как подразумевающее какую-либо зависимость, ни требование, относящееся к любому одному или сочетанию компонентов, иллюстрированных в примерном вычислительном устройстве 1102. В некоторых вариантах осуществления различные изображенные вычислительные элементы могут включать в себя схемы, сконфигурированные, чтобы реализовывать конкретные аспекты настоящего изобретения. Например, термин "схема", используемый в описании изобретения, может включать в себя специализированные аппаратные компоненты, сконфигурированные, чтобы выполнять функцию(и) посредством микропрограммного обеспечения или переключателей. В других примерных вариантах осуществления термин "схема" может включать в себя блок обработки общего назначения, память и т.д., сконфигурированные посредством инструкций программного обеспечения, которые осуществляют логику, функционирующую, чтобы выполнять функцию(и). В примерных вариантах осуществления, когда схемы включают в себя сочетание аппаратных средств и программного обеспечения, конструктор может писать исходный код, осуществляющий логику, и исходный код может быть скомпилирован в машиночитаемый код, который может быть обработан блоком обработки общего назначения. Поскольку специалист в области техники может понять, что уровень техники эволюционировал до момента, когда существует небольшое различие между аппаратными средствами, программным обеспечением или сочетанием аппаратных средств/программного обеспечения, выбор аппаратных средств в противоположность программному обеспечению, чтобы совершать конкретные функции, является проектным решением, оставленным конструктору. Более конкретно, специалист в области техники может понять, что процесс программного обеспечения может быть преобразован в эквивалентную аппаратную структуру, а аппаратная структура может сама быть преобразована в эквивалентный процесс программного обеспечения. Таким образом, выбор аппаратной реализации в противоположность программной реализации является одним из проектных решений и оставляется конструктору.
[0148] Вычислительное устройство 1102, которое может включать в себя любое из мобильного устройства, смартфона, планшета, портативного компьютера, настольного компьютера и т.д., типично включает в себя множество компьютерно-читаемых носителей. Компьютерно-читаемыми носителями могут быть любые доступные носители, доступ к которым может быть осуществлен посредством вычислительного устройства 1102, и которые включают в себя и энергозависимые и энергонезависимые, съемные и несъемные носители. Когда используются в данном документе, носители и компьютерно-читаемые носители не включают в себя распространяющиеся или временные сигналы сами по себе.
[0149] Системная память 1122 включает в себя компьютерно-читаемые носители хранения в форме памяти, такой как постоянное запоминающее устройство ("ROM") 1123 и оперативное запоминающее устройство ("RAM") 1160. RAM-память 1160 может включать в себя модули энергозависимой памяти, такие как модули памяти с двухрядным расположением выводов ("DIMM"). Фрагмент RAM 1160 системной памяти 1122 может иногда называться основной памятью. RAM 1160 типично содержит данные и/или программные модули, которые являются непосредственно доступными для и/или в настоящий момент управляются посредством процессора 1159. В качестве примера, а не ограничения, фиг. 11 иллюстрирует операционную систему 1025, прикладные программы 1126, другие программные модули 1127 и программные данные 1128.
[0150] Процессор 1159 типично содержит по меньшей мере один первичный блок обработки, иногда называемый ядром, и по меньшей мере один системный агент, иногда называемый неядром. Ядро процессора 1159 типично исполняет компьютерно-исполняемые инструкции, в то время как неядро выполняет связанные задачи, которые могут включать в себя наблюдение переносов памяти и поддержание кэша процессора. Неядро может содержать контроллер памяти для взаимодействия между ядрами процессора 1159 и системной памятью 1122.
[0151] Базовая система 1124 ввода/вывода ("BIOS"), содержащая базовые программы, которые помогают передавать информацию между элементами в вычислительном устройстве 1102, например, во время запуска, типично хранится в ROM 1123. BIOS 1124 может быть заменен, в различных вариантах осуществления, другим микропрограммным обеспечением.
[0152] Вычислительное устройство 1102 может также включать в себя энергонезависимые устройства хранения. Только в качестве примера, фиг. 11 иллюстрирует накопитель 1138 на жестком диске, который считывает с или записывает на несъемные, энергонезависимые магнитные носители, и накопитель 1114 на оптическом диске, который считывает с или записывает на съемный, энергонезависимый оптический диск 1153, такой как CD ROM или другие оптические носители. Другие энергонезависимые устройства хранения, которые могут быть использованы в примерном операционном окружении, включают в себя, но не только, флэш-память, цифровые универсальные диски, накопители на твердотельных дисках и т.п. Накопитель 1138 на жестком диске типично соединяется с системной шиной 1121 через интерфейс несъемной памяти, такой как интерфейс 1134, а накопитель 1104 на оптическом диске типично соединяется с системной шиной 1121 посредством интерфейса съемной памяти, такого как интерфейс 1135.
[0153] Накопители и их ассоциированные компьютерные носители хранения, обсужденные выше и проиллюстрированные на фиг. 11, обеспечивают хранение компьютерно-читаемых инструкций, структур данных, программных модулей и других данных для вычислительного устройства 1102. На фиг. 1, например, накопитель 1138 на жестком диске иллюстрируется в качестве хранящего инструкции операционной системы 1158, прикладных программ 1157, других программных модулей 1156 и программные данные 1155. Отметим, что эти компоненты могут быть либо такими же, либо отличными от операционной системы 1125, прикладных программ 1126, других программных модулей 1127 и программных данных 1128. Операционная система 1158, прикладные программы 1157, другие программные модули 1156 и программные данные 1155 получают различные номера здесь, чтобы иллюстрировать, что, как минимум, они являются различными копиями. Пользователь может вводить команды и информацию в вычислительное устройство 1102 через устройство 1152 пользовательского ввода. Устройство 1152 пользовательского интерфейса может включать в себя, но не только, клавиатуры, сенсорные панели, компьютерные мыши, трекболы и т.д. Другие устройства ввода, также не показаны, могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер или т.п. Эти и другие устройства ввода часто подключены к процессору 1159 через пользовательский интерфейс 1136 ввода, который соединен с системной шиной, но могут быть подключены посредством других интерфейсов и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Экран 1142 или другой тип устройства отображения также соединяется через GPU 1129, хотя в некоторых случаях экран 1142 может приводиться в работу через системную шину 1121 или другой интерфейс. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства ввода/вывода, такие как динамики, принтеры и т.д., которые могут быть соединены через интерфейс 1133 ввода/вывода. Аккумулятор 1184 может также быть соединен с системой посредством интерфейса 1133 ввода/вывода. Аккумулятор 1184 может отправлять и принимать информацию через интерфейс 1133 ввода/вывода. Интерфейс может включать в себя информацию о состоянии, такую как количество энергии, доступное в аккумуляторе 1134, состояние энергоснабжения 1182, техническое состояние аккумулятора 1134 и т.д.
[0154] Источник 1180 питания может управлять подачей питания к компонентам вычислительного устройства 1102. Подача питания может, временами, быть временно приостановлена к отдельным компонентам, в то время как сохраняется для других компонентов. Временная приостановка питания может подразумевать общее или частичное прерывание потока энергии к действующему компоненту и может, следовательно, включать в себя инструктирование компоненту входить в состояние пониженной мощности.
[0155] Источник 1180 питания может принимать мощность от сети 1182 энергоснабжения или аккумулятора 1184. Сеть 1182 энергоснабжения может ссылаться на любой источник питания, который может рассматриваться как вообще доступный во время рабочего периода вычислительного устройства 1102. Аккумулятор 1184 может включать в себя любой источник питания, предназначенный, чтобы предоставлять резервную мощность в случае, когда энергоснабжение 1182 прерывается.
[0156] Вычислительное устройство 1102 может работать в сетевом окружении, используя логические соединения с одним или более удаленными компьютерами, такими как удаленный компьютер 1146. Удаленный компьютер 1146 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим вычислительным узлом и типично включает в себя многие или все элементы, описанные выше относительно вычислительного устройства 1102. Соединения, изображенные на фиг. 11, включают в себя сеть 1145, которая может включать в себя локальную, глобальную, сотовую и ячеистую сеть, или другие типы сетей.
[0157] Также будет понятно, что различные элементы иллюстрируются как хранящиеся в памяти или на устройстве хранения, пока используются, и что эти элементы или их части могут быть перенесены между памятью и другими устройствами хранения в целях управления памятью и целостности данных. Альтернативно, в других вариантах осуществления некоторые или все программные модули и/или системы могут исполняться в памяти на другом устройстве и связываться с иллюстрированными вычислительными системами посредством связи между компьютерами. Кроме того, в некоторых вариантах осуществления, некоторые или все системы и/или модули могут быть реализованы или предоставлены другими способами, такими как, по меньшей мере частично в микропрограммном обеспечении и/или аппаратных средствах, включающих в себя, но не только, одну или более специализированных интегральных схем (ASIC), стандартных интегральных схем, контроллеров (например, посредством исполнения соответствующих инструкций и включения в себя микроконтроллеров и/или встроенных контроллеров), программируемых пользователем вентильных матриц (FPGA), сложных программируемых логических устройств (CPLD) и т.д. Некоторые или все модули, системы и структуры данных могут также храниться (например, как инструкции программного обеспечения или структурированные данные) на компьютерно-читаемом носителе, таком как жесткий диск, память, сеть или переносные носители-изделия, которые должны считываться соответствующим накопителем или через соответствующее соединение. Системы, модули и структуры данных могут также быть переданы как сформированные информационные сигналы (например, как часть несущей волны или другого аналогового или цифрового распространяемого сигнала) во множестве компьютерно-читаемых сред передачи, включающих в себя беспроводную и проводную/кабельную среду, и может принимать множество форм (например, как часть единственного или мультиплексного аналогового сигнала или как множество дискретных цифровых пакетов или кадров).
Такие компьютерные программные продукты могут также принимать другие формы в других вариантах осуществления. Соответственно, настоящее изобретение может быть применено на практике с другими конфигурациями компьютерной системы.
[0158] Каждый из процессов, способов и алгоритмов, описанных в данном документе, может быть осуществлен в, и полностью или частично автоматизирован посредством, модулях, содержащих компьютерно-исполняемые инструкции, загруженные в память и исполняемые одним или более процессорами вычислительного устройства. Процессы и алгоритмы могут также быть реализованы целиком или частично в специализированной схеме. Результаты раскрытых процессов и этапы процессов могут быть сохранены, постоянно или иначе, в любом типе компьютерного устройства хранения, таком как, например, энергозависимое или энергонезависимое запоминающее устройство. Энергозависимое и энергонезависимое запоминающее устройство, когда используется в данном документе, исключает распространяющиеся или временные сигналы сами по себе.
[0159] Различные признаки и процессы, описанные в данном документе, могут быть использованы независимо друг от друга или могут быть объединены различными способами. Все возможные комбинации и подкомбинации предназначаются, чтобы попадать в рамки этого изобретения. Кроме того, некоторые элементы процессов, способов и алгоритмов могут быть пропущены в некоторых реализациях. Способы и процессы, описанные в данном документе, также не ограничиваются какой-либо конкретной последовательностью, и изображения, содержащие блоки или состояния, относящиеся к ним, могут быть выполнены в других последовательностях, которые являются подходящими. Например, описанные блоки или состояния могут быть выполнены в порядке, отличном от конкретно раскрытого, или множество блоков или состояний могут быть объединены в один блок или состояние. Примерные блоки или состояния могут выполняться последовательно, параллельно или некоторым другим образом. Блоки или состояния могут быть добавлены в или удалены из раскрытых примерных вариантов осуществления. Примерные системы и компоненты, описанные в данном документе, могут быть сконфигурированы по-другому, чем описано. Например, элементы могут быть добавлены в, удалены из ли повторно скомпонованы по сравнению с раскрытыми примерными вариантами осуществления.
[0160] Традиционный язык, используемый в данном документе, такой как, среди прочего, "мочь", "смочь", "иметь возможность", "быть вероятным", "например" и т.п., пока явно не установлено иное, или иначе понимается в контексте, который используется, как правило, предназначается, чтобы передавать, что некоторые варианты осуществления включают в себя, в то время как другие варианты осуществления не включают в себя, некоторые отличительные признаки, элементы и/или этапы. Таким образом, такой традиционный язык, в целом, не предназначен, чтобы подразумевать, что признаки, элементы и/или этапы каким-либо образом требуются для одного или более вариантов осуществления, или что один или более вариантов осуществления обязательно включает в себя логику для решения того, с или без пользовательского ввода или помощи, включены ли эти признаки, элементы и/или этапы или должны быть выполнены в каком-либо конкретном варианте осуществления. Термины "содержащий", "включающий в себя", "имеющий" и т.п. являются синонимами и используются включительно, в неограничивающей форме и не исключают дополнительных элементов, признаков, действий, операций и т.д. Также, термин "или" используется в своем включающем смысле (а не в своем исключающем смысле), так что, когда используется, например, чтобы соединять список элементов, термин "или" означает один, несколько или все элементы в списке.
[0161] Варианты осуществления, представленные в данном документе, таким образом, представляются в качестве примера, и не предназначаются, чтобы ограничивать рамки настоящего изобретения. Таким образом, ничто в вышеприведенном описании не предназначается, чтобы подразумевать, что любой конкретный признак, характеристика, этап, модуль или блок требуется, является необходимым или обязательным. Способы и системы, описанные в данном документе, могут быть осуществления во множестве форм. Различные пропуски, замены и изменения в форме способов и систем, описанных в данном документе, могут быть выполнены без отступления от духа того, что раскрывается в данном документе. Сопровождающая формула изобретения и ее эквиваленты предназначены, чтобы охватывать такие формы или модификации, как попадающие в рамки и дух некоторых вариантов осуществления, раскрытых в данном документе.
[0162] Хотя предмет изобретения был описан на языке, характерном для структурных признаков и/или действий, должно быть понятно, что предмет изобретения, определенный в прилагаемой формуле изобретения, не обязательно ограничен конкретными признаками или действиями, описанными выше. Скорее, конкретные признаки и действия, описанные выше, раскрываются в качестве примеров реализации формулы изобретения, и другие эквивалентные признаки и действия предназначаются, чтобы быть в рамках формулы изобретения.