RU2348067C2 - Способы и устройства для упреждающего управления памятью - Google Patents
Способы и устройства для упреждающего управления памятью Download PDFInfo
- Publication number
- RU2348067C2 RU2348067C2 RU2003129662/09A RU2003129662A RU2348067C2 RU 2348067 C2 RU2348067 C2 RU 2348067C2 RU 2003129662/09 A RU2003129662/09 A RU 2003129662/09A RU 2003129662 A RU2003129662 A RU 2003129662A RU 2348067 C2 RU2348067 C2 RU 2348067C2
- Authority
- RU
- Russia
- Prior art keywords
- pages
- memory
- data
- page
- computer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Static Random-Access Memory (AREA)
- Debugging And Monitoring (AREA)
Abstract
Изобретение относится к системам и способам упреждающего, гибкого и самонастраивающегося управления памятью. Техническим результатом является повышение эффективности управления памятью за счет загрузки и поддержания данных, которые, вероятно, потребуются в памяти, прежде чем эти данные действительно потребуются. Система содержит механизмы, направленные на контроль предшествующего использования памяти, анализ использования памяти, обновление памяти страницами высокой значимости, эффективность упреждающей выборки ввода/вывода и агрессивное управление диском. На основе информации об использовании памяти страницам присваиваются приоритеты согласно относительной значимости, и механизмы действуют для осуществления упреждающей выборки и/или поддержания в памяти более значимых страниц. Страницы выбираются с упреждением и поддерживаются в резервном наборе страниц с присвоенными приоритетами, включающем ряд поднаборов, причем более значимые страницы сохраняются в памяти с приоритетом перед менее значимыми. Значимые данные, которые постранично выгружены, могут быть автоматически гибким образом загружены назад. 6 н. и 36 з.п. ф-лы, 1 табл., 6 ил.
Description
Ссылки на связанные заявки
Настоящее изобретение заявляет приоритет предварительной патентной заявки США № 60/416,115 от 4 октября 2002, включенной в настоящее описание посредством ссылки.
Область техники
Изобретение относится к управлению компьютерной памятью.
Предшествующий уровень техники
Современные вычислительные системы оснащены оперативной памятью или оперативным запоминающим устройством (ОЗУ) значительного объема, в настоящее время этот объем составляет порядка от 256 мегабайт до единиц гигабайт. Однако современные механизмы и способы управления памятью были спроектированы много лет назад, когда ОЗУ представляло собой относительно дефицитный вычислительный ресурс. Для обеспечения больших объемов виртуальной памяти для программной обработки, подобные механизмы управления памятью основывались на таких методах, как постраничная подкачка по запросу, по существу состоящая в переносе страниц данных из ОЗУ на дисковый накопитель, когда некоторый объем пространства ОЗУ требовался для другой обработки, и считывании этих данных назад с диска в ОЗУ, если перенесенные данные затем вновь требовались в соответствующем им процессе обработки.
При таком традиционном управлении памятью необходимые страницы часто отсутствуют в памяти, даже если общий объем кода и данных, к которому осуществляется обращение в типовых конфигурациях использования, является довольно постоянным во времени и малым относительно современных объемов памяти. Главным образом это является результатом двух факторов, состоящих в том, что система подвергается переходам, которые могут удалить необходимые страницы из памяти и/или быстро изменить набор требуемых страниц, и эрозии, когда страницы, не используемые активно, перезаписываются другими данными.
Примеры таких переходов включают начальную загрузку из состояния выключения питания, переключения с одного пользователя на другого, восстановление из резервного состояния или из режима пониженного энергопотребления, использование приложений, требующих большого объема памяти (например, игр) и затем переход в обычный режим использования системы, и возврат к работе на компьютере спустя длительное время задержки. Более того, в дополнение к операциям с нормальным быстродействием, пользователи очень хотели бы иметь быстродействующую установку системы и программ после таких переходов. Однако при современном управлении памятью в настоящее время это невозможно. Например, испытания показали, что вслед за восстановлением из режима пониженного энергопотребления запуск прикладной программы может потребовать времени от 9 до 11 секунд, несмотря на то, что большие объемы памяти не используются в это время. Это объясняется тем, что большая часть времени запуска тратится на переносы с диска при блокированном центральном процессорном блоке (ЦПБ), ожидая, пока необходимые коды и страницы данных будут считаны с диска, что, являясь результатом постраничной подкачки по запросу, по существу выполняется по одной станице в каждый данный момент времени. Короче говоря, после таких переходов, набор страниц, используемый в наибольшей степени, зачастую отсутствует в памяти, что приводит к осуществлению подкачки страниц по запросу, следствием которой является низкая эффективность работы пользователя ввиду больших значений времени переноса при вводе/выводе.
Хотя одни переходы связаны с преднамеренной откачкой (вытеснением) страниц из памяти, а другие приводят к внезапным запросам памяти, имеются и такие, в результате которых страницы переводятся в неактивное состояние и загружаются на диск. Более конкретно, страницы памяти, которые находятся в рабочих наборах, могут быть вырезаны и помещены в кэш страниц, которые не используются, к ним можно обращаться как к резервному набору страниц (например, резервный список в системах, основанный на Windows®), вместе со страницами файлов, которые закрыты. Для уменьшения числа считываний с диска и записей на диск, система управления памятью отслеживает, к каким страницам памяти в резервном наборе страниц имело место самое последнее обращение, и если требуется память, то выбирает те страницы для переноса на диск, по существу на основе очереди типа «первым пришел, первым вышел» (FIFO).
Хотя этот метод в некоторой степени обеспечивает уменьшение числа переносов на диск, поскольку в соответствии с ним страницы, которые использовались при обработке самыми последними, остаются в памяти, современным приложениям свойственны высокие требования к коду и данным. В результате, кратковременно страницы могут быть вызваны из этого резервного набора страниц, однако на длительное время, при обычном управлении памятью, простая очередь типа FIFO резервного набора страниц приводит к эрозии, когда страницы возможно высокой значимости (но не использовавшиеся в последнее время) перезаписываются менее значимыми (но использовавшимися позже по времени). Следовательно, необходимо значительно количество переносов ввода/вывода на диск и с диска. Даже в высокопроизводительных системах эти переносы ввода/вывода действуют как критический элемент («узкое место») в системе, причем система недоиспользует большой объем доступной памяти, оставляя ЦПБ в состоянии ожидания в течение длительного времени.
В итоге, современные программы требуют больших объемов оперативной памяти и средств высокоскоростной обработки, что обеспечивается современными вычислительными устройствами. Однако современная технология управления памятью не согласует адекватным образом эти ресурсы, поскольку современная система управления памятью была разработана в то время, когда имел место дефицит памяти, и поэтому она была разработана исходя из того, что существенное использование диска является неизбежным, но не обременительным, поскольку прикладные программы были невелики, а многозадачная работа была еще редкостью. Как таковое обычное управление памятью не направлено на ограничение использования диска, помимо сохранения в памяти страниц, обращение к которым было самым последним. В современных вычислениях это приводит к использованию диска в значительной степени, создавая тем самым узкое место в системе, которое снижает как реальные, так и воспринимаемые рабочие характеристики.
Сущность изобретения
Вкратце, настоящее изобретение направлено на усовершенствованную архитектуру управления памятью, включающую в себя системы, способы и механизмы, которые обеспечивают упреждающую, гибкую и самонастраивающуюся систему управления памятью. Система управления памятью функционирует для улучшения реальных и воспринимаемых рабочих характеристик при управлении памятью за счет загрузки и сохранения в памяти данных, которые по всей вероятности потребуются, прежде чем данные действительно потребуются. Страницам данных может быть присвоен приоритет с использованием значения/балла (оценки) в соответствии с различными факторами, включая их полезность, частоту использования, время последнего использования, простоту переноса данных и другую контекстно-основанную информацию. Механизмы действуют для выборки с упреждением и/или сохранения более значимых данных в памяти. Если данные необходимо выгрузить или перезаписать, данные могут быть автоматически переведены назад быстро восстанавливаемым способом, не в результате действительного запроса, а ввиду ожидаемого запроса.
За счет того, что память заполняется необходимыми данными раньше, чем эти страницы потребуются, система управления памятью существенным образом снижает или устраняет операции переноса на диск по запросу и тем самым сокращает или исключает «узкие места», связанные с вводом/выводом, во многих существенных потребительских сценариях. С этой целью, реализации настоящего изобретения включают в себя различные механизмы, направленные на контроль архивного использования памяти, анализ использования памяти, обновления памяти страницами высокой значимости (например, с высокой степенью использования), эффективность упреждающей выборки ввода/вывода и агрессивное управление диском.
Для получения информации, требуемой для присвоения значения странице, методами трассировки и сбора данных (регистрации) отслеживается набор всесторонней информации о каждой странице, предпочтительно за относительно длинный период времени. Эти измеренные данные обрабатываются для получения информации, подлежащей управлению, которая поддерживается и к которой обращаются в процессе принятия решения, который перенастраивает содержимое памяти в ответ на связанные с памятью события и/или на временной основе таким образом, чтобы в памяти сохранялось и/или предварительно отбиралось больше данных высокой значимости по сравнению с менее значимыми данными.
Значение приоритета позволяет присвоить приоритет резервному набору страниц (например, резервному списку в системе на основе Windows®) памяти, чтобы страницы в резервном наборе страниц могли иметь более высокий приоритет в терминах значения по отношению к другим страницам, независимо от того, когда к ним последний раз обращались, и поэтому сохранить в памяти приоритетным образом по отношению к другим страницам. Упреждающая и быстро восстанавливаемая (гибкая) предварительная выборка загружает высокозначимые страницы с диска в резервный набор страниц и в порядке, определенном приоритетом. Загрузка выполняется предпочтительно в низкоприоритетном фоновом переносе ввода/вывода во избежание помех нормальным пользовательским операциям, хотя она может также выполняться в приоритетной операции.
Как результат настоящего изобретения, использование ЦПБ существенно возрастает, не создавая помех нормальному использованию системы. Для многих пользователей компьютеров полный набор страниц памяти, используемый в действительности, достаточно мал, чтобы сохраняться в памяти, что приводит тому, что число безуспешных запросов (считывания необходимых данных с диска) сокращается до нуля или до значения, близкого к нулю.
В одной реализации механизм отслеживания (трассировки) наблюдает действия, связанные с памятью, а регистратор регистрирует результаты этих наблюдений. Интегратор объединяет текущие зарегистрированные результаты с предшествующими записями в базе данных информации страниц. Услуга поиска обращается к данным в базе данных информации страниц для разработки из них планов сценариев, причем планы сценариев анализируются для определения приоритетности страниц в списке. Затем список сортируется в соответствии со значением, вычисленным для каждой страницы, которое основано на наблюдениях использования памяти и, возможно, других факторах.
Средство перенастройки (повторного установления баланса), запускаемое событием (например, системным или генерируемым во времени) взаимодействует со средством планирования ввода/вывода для добавления страниц к упорядоченному по приоритетам резервному списку страниц, в порядке, определенном каждым вычисленным значением страницы. Резервный набор страниц, упорядоченный по приоритетам, включает в себя ряд поднаборов соответственно значениям для каждой страницы. Эти значения могут изменяться во времени и/или на основе действительного использования, и таким образом страницы могут при этом перемещаться логическим образом между поднаборами. В случае потребности в памяти, по запросу или для фоновой предварительной выборки, первыми удаляются страницы наименее приоритетных данных в поднаборе. Таким путем более значимые страницы, как определено наблюдениями действительного использования и измерениями, а также контекстной и другой информацией, автоматически вводятся в память способом, не создающим помех, и сохраняются в ней приоритетным образом по отношению к менее значимым страницам.
Другие преимущества будут очевидны из последующего детального описания, иллюстрируемого чертежами.
Краткое описание чертежей
Фиг.1 - блок-схема, представляющая в общем виде компьютерную систему, в которой может быть воплощено настоящее изобретение.
Фиг.2 и 3 - блок-схемы, представляющие базовое соотношение между компонентами системы в соответствии с одним из аспектов настоящего изобретения.
Фиг.4А и 4В - блок-схема, представляющая обобщенную архитектуру, пригодную для выполнения упреждающего управления памятью в соответствии с одним из аспектов настоящего изобретения.
Фиг.5А - блок-схема, иллюстрирующая возможный способ, которым резервный набор страниц может сохранять данные страниц.
Фиг.5В - блок-схема, представляющая альтернативный способ, которым резервный набор страниц с присвоенными приоритетами может сохранять данные страниц в поднаборах с присвоенными приоритетами, в соответствии с одним из аспектов настоящего изобретения.
Фиг.6 - блок-схема, представляющая ограничивающую систему для ограничения фоновых действий, чтобы ограничить помехи пользовательским прикладным программам, в соответствии с одним из аспектов настоящего изобретения.
Детальное описание
Примерная среда функционирования
Фиг.1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой может быть реализовано настоящее изобретение. Среда 100 вычислительной системы является лишь одним примером подходящей вычислительной среды и не предусматривает каких-либо ограничений объема использования или функциональных возможностей изобретения. Вычислительная среда 100 не должна также интерпретироваться как имеющая какую-либо зависимость или требование относительно любого компонента или комбинации компонентов, показанных в иллюстративной вычислительной среде 100.
Изобретение может быть реализовано в разнообразных других средах или конфигурациях универсальных или специализированных вычислительных систем. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут быть пригодны для использования изобретения, включают, без каких-либо ограничений, персональные компьютеры, компьютеры серверов, портативные или компактные переносные компьютеры, графические планшеты, мультипроцессорные системы, системы на основе микропроцессоров, телеприставки, программируемые приборы бытовой электроники, распределенные вычислительные среды, которые могут включать в себя любые из вышеуказанных систем или устройств и другое.
Изобретение может быть описано в обобщенном контексте выполняемых компьютером инструкций, таких как программные модули, выполняемые компьютером. В общем случае программные модули включают в себя стандартные подпрограммы, программы, объекты, компоненты, структуры данных и так далее, которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Изобретение также может быть реализовано в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны посредством коммуникационной сети. В распределенной вычислительной среде программные модули могут находиться в локальных и/или удаленных компьютерных средах для хранения информации, включая устройства хранения в памяти.
Как показано на фиг.1, приведенная для примера система для реализации изобретения содержит универсальное вычислительное устройство в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничиваться указанным, блок 120 обработки, системную память 130 и системную шину 121, которая связывает различные компоненты системы, включая системную память с блоком 120 обработки. Системная шина 121 может представлять собой любую из различных типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества шинных архитектур. В качестве примера, но не ограничения, такие архитектуры включают шину ISA (архитектура промышленного стандарта), шину MCA (микроканальная архитектура), расширенную шину ISA (EISA), локальную шину VESA (ассоциации стандартов по видеоэлектронике), шину PCI (межсоединений периферийных компонентов), также известная как шина Mezzanine.
Компьютер 110 в типовом случае содержит множество носителей для хранения информации, считываемых компьютером. Такие носители могут представлять собой любую доступную среду, к которой осуществляется локальный и/или удаленный доступ компьютером 110, и могут включать энергозависимые и энергонезависимые носители, съемные и несъемные носители. В качестве примера, но не ограничения, считываемые компьютером носители для хранения информации могут включать в себя компьютерные носители для хранения данных и среды передачи данных. Компьютерные носители для хранения данных включают в себя энергозависимые и энергонезависимые съемные и несъемные носители, реализованные любым методом или технологией хранения информации такой, как считываемые компьютером инструкции, структуры данных, программные модули или иные данные. Компьютерные носители для хранения данных включают в себя, но не ограничиваются указанным, оперативную память (ОЗУ), постоянную память (ПЗУ), электронно-стираемую программируемую постоянную память (ЭСППЗУ), флэш-память или иную технологию памяти, ПЗУ на компакт-дисках (CD-ROM), цифровые многоцелевые диски (DVD) или иные средства памяти на оптических дисках, память на магнитных кассетах, магнитных лентах, магнитных дисках или иные магнитные устройства памяти, или любой другой носитель, который может быть использован для хранения желательной информации и к которому может быть обеспечен доступ компьютером 110. Среда передачи информации в типовом случае воплощает считываемые компьютером инструкции, структуры данных, программные модули или иные данные в модулированном сигнале данных, таком как несущее колебание или иной транспортный механизм, и включает любую среду доставки информации. Термин «модулированный сигнал данных» означает сигнал, в котором одна или более его характеристик установлены или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, среда передачи включает проводные среды такие, как проводная сеть или прямое проводное соединение, и беспроводные среды такие, как акустическая, радиочастотная, инфракрасная и другие беспроводные среды.
Системная память 130 включает компьютерные носители информации в форме энергозависимой памяти и/или энергонезависимой памяти ПЗУ (ROM) 131, ОЗУ (RAM) 132. Базовая система ввода/вывода (BIOS) 133, содержащая базовые стандартные подпрограммы для обеспечения переноса информации между элементами в компьютере 110, например, в процессе запуска, в типовом случае сохранена в ПЗУ 131. ОЗУ 132 в типовом случае содержит данные и/или программные модули, которые являются непосредственно доступными для процессорного блока 120 и/или в текущее время обрабатываемыми им. В качестве примера, но не для ограничения, фиг.1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.
Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. В качестве примера, фиг.1 иллюстрирует накопитель 141 на жестких дисках, который считывает или записывает на несъемные энергонезависимые магнитные носители информации, накопитель 151 на магнитных дисках, который считывает или записывает на съемный, энергонезависимый магнитный диск 152, и накопитель 155 на оптических дисках, который считывает или записывает на съемный энергонезависимый оптический диск 156, такой как CD-ROM или иные оптические носители информации. Другие съемные/несъемные, энергозависимые/ энергонезависимые компьютерные носители информации, которые могут быть использованы в приведенной для примера среде функционирования, включают, но не ограничиваются указанным, кассеты на магнитных лентах, платы флэш-памяти, цифровые многоцелевые диски, цифровые видеомагнитные ленты, твердотельные ОЗУ, твердотельные ОЗУ и другое. Накопитель 141 на жестких дисках в типовом случае соединен с системной шиной 121 через интерфейс энергонезависимой памяти, такой как интерфейс 140, накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках в типовом случае соединены с системной шиной 121 интерфейсом съемной памяти, таким как интерфейс 150.
Накопители и связанные с ними считываемые компьютером носители, описанные выше и показанные на фиг.1, обеспечивают энергонезависимую память для считываемых компьютером инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, дисковод 141 для жестких дисков показан как предназначенный для хранения операционной системы 144, прикладных программ 145, других программных модулей 146 и программных данных 147. Заметим, что эти компоненты могут быть либо теми же самыми или отличаться от операционной системы 134, прикладных программ 135, других программных модулей 135 и программных данных 137. Операционная система 144, прикладные программы 145, другие программные модули 146 и программные данные 147 обозначены здесь другими ссылочными позициями, чтобы показать, что, как минимум, они являются отличающимися копиями. Пользователь может ввести команды и информацию в компьютер 110 через входные устройства, такие как графический планшет или цифровой преобразователь (дигитайзер) 146, микрофон 163, клавиатуру 162 и координатно-указательное устройство 161, на которое обычно ссылаются как на мышь, шаровой манипулятор (трекбол) или сенсорный планшет. Другие устройства ввода, не показанные на фиг.1, могут включать в себя джойстик, игровую панель, антенну спутниковой связи, сканер и т.п. Эти и другие устройства ввода часто подсоединяются к блоку 120 обработки через интерфейс 160 пользовательского ввода, который связан с системной шиной, но может быть подсоединен посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также соединено с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. Монитор 191 может также выполняться с панелью сенсорного экрана или с другим подобным средством. Заметим, что монитор и/или панель сенсорного экрана может быть физически связана с корпусом, в котором располагается вычислительное устройство 110, как в персональном компьютере типа графического планшета. Кроме того, компьютеры, такие как вычислительное устройство 110, могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 195 и принтер 196, которые могут быть подключены через интерфейс 194 периферийных устройств вывода или иное подобное средство.
Компьютер 110 может работать в сетевой среде с использованием логических соединений с одним или более удаленных компьютеров, таких как удаленный компьютер 180. Удаленный компьютер 180 может представлять собой персональный компьютер, сервер, маршрутизатор, сетевой персональный компьютер, одноранговый узел или другой обычный узел сети и в типовом случае может включать в себя многие или все из элементов, описанных выше в связи с компьютером 110, хотя на фиг.1 показано только устройство 181 памяти для хранения данных. Логические соединения, показанные на фиг.1, включают локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут включать и другие сети. Такие сетевые среды широко используются в офисах, компьютерных сетях предприятий, интранетах и в Интернете. Например, в настоящем изобретении компьютерная система 110 может содержать машину-источник, от которой перемещаются данные, и удаленный компьютер 180 может представлять машину-адресат. Заметим, однако, что машины, являющиеся источником и адресатом, не должны обязательно связываться сетью или какими-либо иными средствами; напротив, данные могут перемещаться посредством любой среды, запись на которую может осуществляться платформой-источником, и считывание с которой может производиться платформой или платформами-адресатами.
При использовании в сетевой среде LAN компьютер 110 подключен к локальной сети LAN 171 через соответствующий сетевой интерфейс или адаптер 170. При использовании в среде глобальной сети WAN компьютер 110 обычно включает в себя модем 172 или иное средство для установления связи в глобальной сети WAN 173 такой, как Интернет. Модем 172, который может быть внутренним или внешним, может соединяться с системной шиной 121 через интерфейс 160 пользовательского ввода или иной подходящий механизм. В сетевой среде программные модули, изображенные по отношению к компьютеру 110, или их части могут храниться в удаленных устройствах памяти для хранения данных. В качестве примера, но не для ограничения, фиг.1 иллюстрирует удаленные прикладные программы 185, хранящиеся в устройстве 181 памяти. Следует иметь в виду, что показанные сетевые соединения приведены лишь для примера и могут быть использованы другие средства для осуществления канала связи между компьютерами.
Упреждающее управление памятью
Один из аспектов настоящего изобретения, в частности, направлен в основном на усовершенствованную архитектуру управления памятью, содержащую системы, способы и механизмы, которые приводят к реальному и воспринимаемому повышению эффективности по отношению к основным аспектам пользовательского интерфейса, прикладных программ и программного обеспечения операционной системы. С этой целью, как показано на фиг.2, настоящее изобретение предусматривает упреждающую, гибкую, самонастраивающуюся систему 200 управления памятью, которая контролирует связанные с памятью действия и работу пользователя, чтобы обеспечить, по меньшей мере с относительно высокой вероятностью успеха, присутствие необходимых данных в оперативной памяти 202 (или просто «памяти», как будет использоваться далее), прежде чем данные потребуются, вместо считывания в память 202 по запросу с диска 204 (или другого эквивалентного вторичного механизма хранения, такого как флэш-память, сетевой источник данных, накопитель на магнитной ленте и/или виртуально любой тип памяти данных). Иными словами, упреждающее и гибкое управление памятью переносит потенциально полезные данные в память и пытается сохранить эти данные в памяти. Если полезные данные необходимо выгрузить или перезаписать, эти данные могут быть автоматически перенесены назад восстанавливаемым способом, не по причине действительного запроса, а просто ввиду ожидаемого запроса.
С этой целью настоящее изобретение по-новому использует большие объемы доступной в настоящее время памяти для поддержания в памяти рабочих наборов потенциально активных процессов обработки, и поддержания ведения записей (регистрации), структур данных и алгоритмов, которые система использует для выполнения упреждающего и гибкого управления памятью. Ожидается, что такое ведение записей, такие структуры данных и другие алгоритмы будут становиться более оптимальными с течением времени, однако современные реализации продемонстрировали существенное сокращение переносов ввода/вывода по требованию.
Как можно легко понять, имея память 202, заполненную подходящими данными (например, упорядоченными в страницы), прежде чем эти страницы потребуются, система 200 управления памятью, соответствующая настоящему изобретению, существенно сокращает или исключает операции переноса данных по требованию и тем самым сокращает или исключает узкие места ввода/вывода во многих важных пользовательских сценариях. Заметим, что, как использовано в настоящем описании, термин «страница» может относиться к наименьшим объемам данных, которые система 200 управления памятью обрабатывает как блок (например, 4096 байтов), однако здесь не предусматривается ограничение настоящего изобретения какими-либо фиксированными объемами данных, и поэтому «страница» данных может иметь некоторый другой фиксированный объем, или даже иметь переменный объем данных (например, один байт или несколько байтов), или даже представлять собой потоковый перенос данных. Таким образом, система управления памятью, которая может считывать/записывать/переносить потоком произвольные объемы данных, а не фиксированные объемы данных или, например, кратные им значения, продолжает оставаться эквивалентной системе, позволяющей считывать и записывать одну или более страниц.
Как описано ниже, реализации настоящего изобретения включают в себя различные механизмы, в том числе направленные на контроль архивного использования памяти, анализ использования памяти, обновления памяти страницами высокой значимости (например, с высокой степенью использования), эффективную упреждающую выборку ввода/вывода и агрессивное управление диском. В принципе, эти механизмы работают вместе как упреждающая система 200 управления памятью, чтобы гарантировать, что необходимые данные будут находиться в памяти, прежде чем они потребуются. С этой целью алгоритмы, поддерживающие структуры данных и методы, расширяют управление памятью для упреждающего функционирования за счет использования различных типов данных использования памяти и другой информации, которая может собираться непрерывно и/или в течение относительно длительного промежутка времени. Отметим, однако, что настоящее изобретение не требует какой-либо конкретной комбинации таких механизмов, а может обеспечить многочисленные и лучшим образом связанные с памятью преимущества при меньшем числе механизмов и/или с использованием альтернативных механизмов. Например, за счет определения значения, указывающего, какие страницы должны использоваться с большей вероятностью, чем другие, и за счет сохранения этих более значимых страниц в памяти, может быть обеспечено сокращение переносов ввода/вывода без какой-либо фоновой предварительной выборки страниц в память, и даже если информация, использованная для определения этого значения для тех страниц, собиралась прерывистым образом и/или только в течение относительно короткого периода времени.
Кроме того, методы и механизмы управления памятью, соответствующие настоящему изобретению, могут улучшить использование памяти, действуя не только в моменты, когда память заполнена, и необходимо принимать решения о перестановке данных (свопинге), но и на других уровнях использования памяти, включая то, когда память является относительно незаполненной. Например, частота, с которой осуществляется обращение к загруженным страницам, может измеряться независимо от того, находится ли система в условиях дефицита свободной памяти. Более того, вместо того, чтобы осуществлять управление тем, что в текущий момент находится в памяти, настоящее изобретение предусматривает глобальное управление памятью, включая то, что в текущий момент находится в памяти, и то (предпочтительно), что должно находиться в памяти, но в текущий момент находится на диске, и наоборот.
Настоящее изобретение представляет состояние памяти несколькими способами, включая добавление к информации, которая в текущий момент поддерживается для каждой страницы памяти. Такая новая информация может включать частотность использования каждой страницы во времени, а не просто косвенную или явную информацию о времени последнего использования. Примеры реализации также предусматривают поддержку информации о страницах, которые в текущий момент не находятся в памяти. Как описано ниже, структуры данных используются для организации свободной памяти, которая хранит или может сохранять потенциально полезные данные, и используются для контроля того, когда эта память становится доступной для альтернативных использований.
Для получения этой информации, обширное множество информации о каждой странице отслеживается методами трассировки и регистрации, предпочтительно на протяжении относительно длительного периода времени. Путем наблюдения различных страниц, используемых процессами, действующими на протяжении относительно длительных периодов, регистрируются код, к которому производится обращение, и файлы данных, которые считываются и записываются, обеспечивая важное измерение значения страницы, чтобы тем самым установить потенциальные рабочие наборы. В отношении этих измеренных данных осуществляется поддержка и обращение как часть процесса принятия решения, перенастраивающего содержимое памяти в ответ на события, связанные с памятью, и/или иным образом (например, периодически). Иными словами, обширное отслеживание данных приводит в результате к получению информации, анализ которой позволяет сохранять в памяти и/или выбирать с упреждением в память более значимые страницы по сравнению с менее значимыми страницами, независимо от того, определяется ли значимость по наибольшей вероятности оказаться требуемыми данными, простоте переноса, по контексту и/или иным критериям.
В принципе, настоящее изобретение предусматривает нетрадиционно более обширную информацию на каждую страницу памяти, чтобы получить относительную значимость страницы, для идентификации страниц как высокой значимости, так и низкой значимости, независимо от того, находится ли страница в текущий момент в памяти, или в другом хранилище. Эта обширная информация (включая данные структуры/частоты/группирования/контекста) поддерживается в памяти (и, таким образом, находится на постоянном хранении) для страниц в памяти, а также для страниц, которые больше не находятся в памяти (например, находятся в настоящее время на жестком или гибком диске, на CD-носителе, DVD-носителе, в сети, во флэш-памяти и так далее) или нигде больше в памяти. Эта информация используется, чтобы предварительно загрузить (или выбрать с упреждением) в память значимые страницы, которые не находятся в памяти, и/или поддерживать более значимые страницы по сравнению с менее значимыми страницами. Это может выполняться посредством механизма дополнения набора страниц, который сохраняет записи рабочих множеств, содержащие обширную информацию использования для страниц, которые больше не находятся в памяти, но действительны в адресном пространстве для рабочего набора. Другой путь - через расширенный резервный набор страниц (например, кэш страниц, которые не используются, например, резервный список в системе, основанной на Windows®), который формируется на основе механизма архива страниц файлов, где располагается больше физических дескрипторов и записей страниц, чем в физической памяти, и они используются для поддержания информации конфигурации, частоты, группирования и/или контекстной информации для страниц, которые выгружаются из памяти.
Отслеживаются различные статистические данные для получения опорных конфигураций и/или частоты использования, которые определяют вероятность того, что страница потребуется, такие как счет периода использования, время создания, время последнего обращения, как описано ниже. Эти типы статистических данных могут сохраняться в памяти по записям страниц или по группам/диапазонам, которые могут быть использованы для получения опорных конфигураций, частоты использования и т.д. Такими статистическими данными могут быть поддерживаемые записи и/или объекты для файлов, объекты отображения памяти или иные группирования страниц. Кроме того, конечные автоматы могут быть конфигурированы постранично или для группы страниц, которые имеют состояния за пределами битов срока выдержки, чтобы охватывать состояния, когда страница удалена из памяти и возвращена назад. Эта разнообразная информация может быть использована для присвоения приоритетов страницам в памяти в поднаборах и для защиты значимых страниц от переназначения таким образом, как в случае, когда программы обращаются к большим количествам страниц сразу или дважды. Присвоение приоритета может быть явным и не выведенным логически из местоположения в списке. Приоритет может периодически или случайным образом пересчитываться исходя из зафиксированных конфигураций использования, частоты, контекста, группирования и т.д.
Далее, затраты на перемещение конкретной страницы в память, могут представлять собой фактор, определяющий ее значимость, например, то, является ли страница файлом страничного обмена, в файле малого объема, или находится в числе других страниц для последовательного обращения/потокового ввода/вывода, может быть использовано для установления этого фактора значимости. Такая оценка может производиться на постраничной основе, но может быть и более компактной, например, за счет поддержания некоторой или всей обширной информации только по поднабору страниц, получения и/или ведения статистики и счета групп страниц, для файловых объектов, для разделов/отображений и т.д. Кроме того, могут быть получены данные состояния, и они могут быть использованы как часть расширенной информации страниц.
Например, путем наблюдения контекста, могут приниматься во внимание факторы, которые не учитываются обычно при принятии решений по управлению памяти, включая состояние питания и состояние диска. Также во внимание принимаются наблюдаемые события, чтобы предпринять действия, способствующие быстрому восстановлению из состояний резерва/возобновления, пониженного энергопотребления/возобновления и выполнения/завершения программ, которые, как известно, оказывают заметное влияние на память.
В дополнение к регистрации такой информации состояний, имеются и другие механизмы для обеспечения упреждающего управления памятью согласно настоящему изобретению. Например, прикладные программы могут определять некоторые данные как менее (или более) полезные, чем другие данные, например, данные, необходимые для исправления редких ошибок, могут определяться как маловероятные для повторного использования, при этом подобные данные являются верными кандидатами на присвоение или взвешивание с низкой значимостью. Пользователь может также указать некоторые низко- или высокоприоритетные данные, например, пользователь, который редко использует файл помощи прикладной программы, может вручную обеспечить установку, указывающую на его низкий приоритет для прикладной программы и/или операционной системы, или, наоборот, например, всегда сохранять данные помощи в памяти, если это возможно. С этой целью интерфейсы программирования прикладных программ (или другие подобные функции) для прикладных программ могут быть предусмотрены для обеспечения того, чтобы программы вносили вклад в управление системной памятью, например, путем определения, что страницы (например, область страниц) больше не являются значимыми или что другой набор страниц является значимым. Прикладные программы также могут определять контекст и операции, которые программа-менеджер памяти может использовать для отслеживания и группирования значимости страниц, на которые ссылаются в этих операциях. Таким путем прикладные программы могут маркировать операции, которые прикладная программа считает важными с точки зрения использования памяти, такие как отображение диалога «открыть/сохранить файл» или показ подокон задачи.
Значимость страниц также может быть использована для улучшения управления памятью другими путями. Например, если программа проходит через большие количества страниц файлов, которые используются однократно или двукратно, только подобные страницы допускаются к переназначению, а страницы более высокой значимости защищаются. Кроме того, также возможно сжатие некоторых страниц, например, таким образом, что страницы низкой и/или промежуточной значимости сжимаются в памяти, а не выгружаются на диск. Например, некоторая прикладная программа или механизм анализа может указать, что может быть желательным сжать некоторый большой блок (например, промежуточной или низкой значимости) данных, вместо того чтобы записывать их на диск в свободное пространство. Используемые методы отслеживания и регистрации обеспечивают новые возможности для записи данных использования памяти, которые выходят за пределы того, что известно в настоящее время. Новые алгоритмы могут обнаруживать эти данные и генерировать инструкции или планы сценариев для упреждающей выборки данных с диска эффективным способом и для поддержания данных в памяти на основе присвоения приоритета согласно значимости. Например, на основе имеющейся обширной информации резервному набору страниц памяти может быть присвоен приоритет вместо простого упорядочивания в очередь типа FIFO, где отсутствует количественно определенный приоритет. В соответствии с настоящим изобретением, страницы в резервном наборе страниц могут быть более высокого приоритета с точки зрения их значимости по отношению к другим страницам, независимо от времени последнего обращения к ним, и поэтому будут сохраняться в памяти с предпочтением перед другими страницами, включая страницы в памяти рабочего набора. Например, страницы определенного действующего процесса обработки, по всей вероятности, не будут использованы вновь, даже если эти страницы были использованы недавно, причем такие страницы имеют меньшую значимость, чем страницы, не использовавшиеся в течение весьма длительного времени, но потенциально являющиеся повторно используемыми.
Кроме того, помимо данных наблюдаемых состояний и результатов измерений, таких как реальная частота использования, время последнего использования и другие измеренные результаты, другие критерии могут быть использованы для определения значимости страниц. Например, концепция потери от замещения может быть использована для определения значимости страниц в памяти, например, перенос случайным образом рассредоточенных данных (прерывистым образом на диске) на диск и с диска является более дорогостоящим, чем соответствующий перенос последовательно непрерывных данных, и поэтому было бы более ценным сохранять случайным образом рассредоточенные данные в памяти, а переносить последовательные данные, если внезапно потребуется большой объем памяти. Таким образом, полезность данных может быть определена по стоимости переноса их ввода/вывода, вместе с трассировкой их предыстории использования, а также в машинном и ином контексте, включая соображения, связанные с питанием и с состоянием диска. Могут быть использованы и другие данные, такие как весовой фактор, который может быть присвоен определенным данным использующим их объектом (например, прикладной программой или пользователем).
В одной реализации использование памяти программ отслеживается на машине, например, по каждому пользователю, и устанавливается категория потенциальной полезности страниц как на диске, так и в памяти. Из этого отслеживания и категоризации может быть определен бюджет памяти, и на основе этого бюджета фоновый механизм ввода/вывода пытается заполнить память имеющимися страницами наивысшей полезности, как определено количественной оценкой значимости каждой страницы. Страницы памяти тем самым могут быть быстро восстановлены, например удалены, если необходимо, но автоматически восстановлены, когда пространство памяти вновь станет доступным. Заметим, что этот подход противоположен обычному подходу к управлению памятью, который основывается на страничном обмене в ответ на запрос (с ограниченной кластеризацией или упреждающей выборкой) для переноса страниц с диска только в момент использования в первый раз и сохранения их способом FIFO. В соответствии с настоящим изобретением, когда страницы находятся в памяти, структуры памяти сохраняют страницы в памяти на приоритетной основе, что может меняться во времени по мере их использования, так что страницы более высокой степени использования сохраняются в памяти, если только и до тех пор, пока память не потребуется для других текущих действий.
Для идентификации страниц высокой (а также низкой) значимости, значимость страниц и/или данные характера доступа переносятся и сохраняются в нерезидентной постоянной памяти, причем эта информация (например, включая данные структуры, частотности использования, контекста и/или группирования) продолжает сохраняться на протяжении загрузок. Заметим, что в дополнение к записи данных страниц в файлы, они также поддерживаются, включая интерпретирование данных, формирование новых оценок значимости и/или отыскание данных для отмены избыточных или ненужных данных, так что то, что сохраняется в постоянной памяти, содержит не просто данные использования страниц, но и различимые данные конфигураций. Как описано ниже, данные значимости страниц и данные конфигураций доступа, которые поддерживаются и используются при управлении памятью, регистрируются путем трассировки и/или опроса (сэмплирования) ссылок на страницы, вместе с другими контекстами и событиями (как описано ниже). В соответствии с настоящим изобретением, операция трассировки и опроса выходит за пределы простого сохранения счета и малого объема данных состояния на страницу в памяти. С этой целью механизмы трассировки и опроса включают трассировку битов обращения к записям таблицы страниц (РТЕ), которая регистрирует то, когда происходит сброс битов обращения. Заметим, что путем измерения и поддержания скорости, с которой данные обращения перемещаются и сбрасываются, ограничивается регистрируемый объем данных, например, для страниц, на которые ссылаются более часто, информация не регистрируется при каждом обращении, а вместо этого может поддерживаться скорость, с которой сбрасываются биты обращения PTE. Кроме того, могут регистрироваться сбои страниц (сбои аппаратного и программного обеспечения и сбои переходов) и запросы считывания и записи файлов. Механизмы для моментального фиксирования процесса рабочих наборов могут также получать данные значимости страниц, как и механизмы для трассировки страниц, когда они удаляются из памяти или когда они вырезаются из рабочих наборов.
С использованием этой информации страницы могут группироваться и может разыскиваться информация, как относящаяся к страницам в постоянном запоминающем устройстве и в памяти, по их временам последнего обращения, конфигурациям использования, частотности использования, виртуальному или физическому местоположению, по времени, когда страницы вырезались и т.д. Такое группирование может затем использоваться для эффективной выгрузки областей страниц одновременно, и может использоваться при компоновке в месте назначения, например, в страничном файле. Например, если используется мало страниц, то вся группа может быть перенесена эффективным образом. Механизмы также могут производить интеллектуальную кластеризацию путем использования постоянно хранящегося архива файлов/страниц, чтобы перенести весь файл одновременно и т.д. Кроме того, файлы могут также группироваться по тому, какие процессы их используют, в течение какой части времени существования процесса (например, запуск, отключение) используются страницы, при каких процессах страницы обнаруживали устойчивую неисправность в течение интервала времени (например, операции на границах диска). Другие способы группирования страниц включают страницы, ссылки на которые делались при включении задачи, щелчке мыши, зависании, активизации и других пользовательских вводах, использование на основе определенного времени, например в конкретное время суток и/или дней недели, процессами конкретного пользователя и другие контексты, включая контексты, определяемые прикладными программами.
В принципе, управление памятью в соответствии с настоящим изобретением может отслеживать и предпринимать действия на основе обширных наборов событий и контекстов, включая переключение задач, создание окон, диалог, смену активизации, неопределенные состояния и щелчки мыши и другие события пользовательского ввода. Другие события и контексты включают запуск и выключение прикладных программ, начальную загрузку системы, введение пароля, выключение, резервный режим/режим пониженного энергопотребления и восстановления, переключение между пользователями, события воспроизведения видео-, аудио- и/или иных носителей (например, начало и конец), смещение по времени видеовоспроизведения, дистанционное соединение с системой (включая удаленный рабочий стол (экранная интерактивная среда), сетевой теледоступ и т.д.) и определенные прикладными программами контексты.
В соответствии с одним из аспектов настоящего изобретения, не только более значимые страницы могут сохраняться в памяти по сравнению с менее значимыми страницами, но и более значимые страницы могут быть загружены в память (путем упреждающей выборки) по сравнению с менее значимыми данными или неиспользуемыми страницами (память автоматически заполняется), даже если нет действительного запроса на эти страницы. Такое заполнение и/или перенастройка могут быть сделаны в различные моменты времени и различными путями, включая после начальной загрузки, после того как большой объем памяти был освобожден, или даже в некоторой степени регулярно или по меньшей степени регулярно, предпочтительно как фоновая операция. Предпочтительно, механизм заполнения, используемый программой-менеджером, не создает препятствий и основывается на приоритетных вводах/выводах во время простоя и механизмах обнаружения состояния незанятости (простоя). Как описано ниже, это не является именно алгоритмом планирования, а может действовать методом дросселирования путем отслеживания входящих структур нормального ввода/вывода и планирования фонового ввода/вывода, когда маловероятно перекрытие или ожидание нормального ввода/вывода. Механизмы обнаружения незанятости (например, постановка в очередь в качестве холостой задачи) определяют, когда система находится в состоянии простоя, путем отслеживания пользовательского ввода, ЦПБ и диска, чтобы выполнить настройку (балансировку) памяти способом, не создающим препятствий нормальной работе. Тем не менее, приоритетное заполнение памяти также важно в некоторых случаях, и, тем самым, некоторая или вся предварительная загрузка памяти может быть высокоприоритетной.
В процессе упреждающей выборки операции ввода/вывода могут управляться таким образом, чтобы обеспечить эффективность за счет механизмов, которые ограничивают взаимные помехи между активными прикладными программами и программами, выполняющими фоновую работу. Например, переносы ввода/вывода могут сортироваться для сокращения времен поиска, и переносам ввода/вывода могут присваиваться приоритеты, чтобы фоновые операции (например, упреждающая выборка) не задерживали приоритетные операции и не создавали помех нормальному использованию системы пользователем. Кроме того, могут быть предусмотрены механизмы для присвоения категорий запросов ввода/вывода и передачи этой информации через стек драйверов, чтобы механизмы низкого уровня могли планировать ввод/вывод с надлежащим приоритетом. Это обеспечивает то, что категории ввода/вывода с низким приоритетом не создают помех категориям с высоким приоритетом, что может потребовать предотвращения возможных инверсий приоритетов, когда данная операция запрашивается много раз при различных категориях. Вводы/выводы из различных категорий могут диспетчеризоваться с использованием алгоритмов, которые пытаются распознать преобладающие конфигурации использования и минимизировать взаимные помехи. Одним из аспектов операции ввода/вывода является уравновешивание использования недоиспользованных ресурсов без ухудшения эффективности других действий пользователя и системы, однако могут возникнуть проблемы в считывании страниц файлов с высокой степенью использования с диска без взаимодействия с пользовательскими приоритетными прикладными программами. Одной такой проблемой является упреждающая выборка из файлов, которые пользователь открыл монопольным образом, таких как файлы регистрации и индекс кэша временных интернетовских файлов. В такой ситуации, когда файл уже открыт монопольным образом, данный файл не может быть открыт обычным образом для выполнения упреждающей выборки из него. Аналогичным образом, когда механизм управления памятью успешно открывает файл для упреждающей выборки и прикладная программа, которая требует монопольного доступа к файлу, пытается открыть его, то прикладная программа даст сбой, что может быть воспринято как случайные ошибки прикладной программы. Эта проблема может быть снята путем вызова специального API (интерфейса программирования прикладных программ) для открытия файла нетипичным способом, когда файловая система не обновляет совместно используемую информацию для данного файла.
Другая проблема, связанная с вводом/выводом, направлена на выдачу запросов ввода/вывода таким путем, чтобы не создавать взаимных помех с более высокоприоритетными запросами ввода/вывода в системе. Это может быть выполнено частично тем, что низкоприоритетный ввод/вывод не запускается, если диск не находится в состоянии простоя в течение достаточно продолжительного времени (например, 75 мс) с момента последнего нормального ввода/вывода. Однако это приводит к проблеме инверсии приоритета, которая может быть решена путем посылки фиктивного считывания со специальным флагом в стек ввода/вывода. Заметим, что посылка фиктивного пакета считывания является возможным способом информационного обмена со стеком ввода/вывода для уведомления его об инверсии приоритета, что работает, даже если действующий запрос разделяется на несколько подзапросов, которые рассредоточиваются в стеке таким образом, что их все невозможно достичь посредством обработки исходного запроса. Когда драйвер фильтра просматривает соответствующий IRP (пакет запроса ввода/вывода), он повышает приоритет всех своих ожидающих вводов/выводов, которые перекрываются с этим диапазоном, и IPR фиктивного считывания затем завершается без выполнения какой-либо реальной работы. Однако даже при таком исправлении, выдача большого списка вводы/выводы низкоприоритетного страничного обмена могут блокировать высокоприоритетный поток. Таким образом, это может быть предотвращено путем выдачи только малого числа вводов/выводов низкоприоритетного упреждающего выбора страниц, для одного файла в каждый данный момент времени, что значительно сокращает потенциал для инверсии приоритета и сокращает ее длительность. При таком усовершенствовании, как только идентифицированы файловые страницы с высокой степенью использования на диске и страницы с низкой степенью использования в памяти, запросы сразу же могут быть поставлены в очередь, не заботясь о возможных взаимных помехах текущим действиям пользователя. В результате данного аспекта настоящего изобретения, использование ЦПБ существенно увеличивается без взаимных помех нормальному использованию системы. Для большинства типовых пользователей весь набор действительно используемых резервированных файлов достаточно мал для поддержания их в памяти. Эти требуемые страницы могут быть предварительно загружены после начальной загрузки, а также восстановлены, если возникает высокая потребность в памяти и эти страницы потребовалось выгрузить на диск. Заметим, что если весь рабочий набор требуемой памяти слишком велик для заданного приложения и системы, то в памяти могут поддерживаться поднаборы рабочего набора, хотя настоящее изобретение направлено на обеспечение эффективности ввода/вывода для уравновешивания страниц.
Однако в процессе тестирования многих традиционных потребительских сценариев было показано, что полное число страниц, к которым обращаются в случае даже относительно сложных рабочих нагрузок, соответствует используемым в настоящее время объемам памяти. Например, как определено в множестве экспериментов, страницы, требуемые для некоторых очень значительных рабочих нагрузок, имели возможность размещения в памяти машин с оперативной памятью объемом 384 мегабайта, а многие соответствовали оперативной памяти объемом 256 мегабайт. Поскольку объем памяти больше, чем требуется, настоящее изобретение обеспечивает возможность предварительной загрузки соответствующих страниц и исключения сбоев страниц и тем самым обеспечивает возможность исполнения пользовательских приложений при полном использовании ЦПБ в ответ на пользовательский ввод. Как результат исключения (или состояния близкого к исключению) сбоев страниц, настоящее изобретение создает возможность более агрессивного управления дисковой памятью, чем это имеет место в настоящее время. Например, во многих случаях можно исключить ситуацию, когда восстановление из состояния резервирования задерживается на время раскручивания диска. Таким образом, значительное преимущество упреждающего и расширенного управления памятью в соответствии с настоящим изобретением состоит в том, что портативные устройства, такие как планшетные вычислительные устройства, компактные портативные компьютеры и другие подобные устройства могут работать в течение продолжительных периодов времени, не требуя считывания с диска. Поддержание диска в состоянии, не требующем раскручивания, при батарейном питании характеризует собой преимущество значительной экономии мощности питания для мобильных пользователей, так как диск, не раскручиваемый в течение увеличенных периодов времени, повышает срок службы батареи питания и в целом увеличивает срок службы диска.
В отсутствие считываний с диска, единственной причиной поддержания вращения диска является выполнение записей. Однако типовое действие записи включает повторные записи в одни и те же сектора диска, и число отдельных секторов, записываемых в течение длительных периодов времени в типовом случае является умеренным. В результате, простой кэш дискового сектора, при использовании памяти с батарейной поддержкой или другой энергонезависимой оперативной памяти, может в принципе обеспечить записи, как представлено на фиг.3, причем относительно малый объем дополнительной (как показано пунктирным блоком) энергонезависимой оперативной памяти 302 может являться частью полной энергонезависимой системы 300 хранения данных, которая позволяет диску оставаться остановленным, когда невозможно избежать некоторых записей или желательно их осуществить, например, когда пользователь сохраняет документ. В одной реализации энергонезависимая оперативная память объемом 32 мегабайта позволяла тестируемым системам избегать таких связанных с диском записей в течение относительно продолжительных периодов времени, в течение которых диск мог оставаться остановленным при выполнении обычных задач, таких как считывание электронной почты, просмотр web-страниц, редактирование и сохранение документов и т.д. Заметим, что энергонезависимая оперативная память 302 может управляться упреждающим способом дополнительной системой 304 упреждающего управления хранением данных (которая в некоторой степени подобна описанной здесь системе 200 упреждающего управления памятью) так, чтобы выгружать меньшее количество сохраненных страниц из энергонезависимой оперативной памяти 302 на диск 204, когда диск вращается, чтобы освободить пространство для использования, когда затем диск останавливается.
Хотя остановка диска вызывает серьезную проблему при первом требуемом обращении к диску, тщательное управление памятью и секторным кэшем позволит избежать синхронных задержек в большинстве ситуаций. Однако это будет не всегда возможно, и операционная система должна принимать стратегические решения о том, когда наиболее выгодно остановить и повторно запустить диск, и в некоторых случаях в будущем приложения будут содействовать переносам повторных запусков диска.
Таким образом, в принципе, настоящее изобретение направлено на методы управления памятью, которые существенным образом снижают потребность в использовании самого медленно действующего компонента, которым является диск, как фактора нормального использования системы. Настоящее изобретение, за счет нового упреждающего и гибкого подхода к управлению памятью, обеспечивает адекватное реагирование на важные операции, связанные с памятью, даже после загрузки, быстрое переключение пользователем или выход из больших приложений, таких как игровые программы. Надежные быстрые восстановления из резервного состояния, которые не испытывают задержки на раскручивание диска, также являются следствием настоящего изобретения, как и уменьшенные времена отклика в случае больших и дорогостоящих операций, которые в настоящее время связаны с диском, ввиду потребности в страничном обмене. Другие преимущества вытекают из самонастраивающегося кэширования памяти и автоматического структурирования файлов на диске, который адаптируется к конфигурациям использования системы и обеспечивает улучшенные рабочие характеристики в целом. Дополнительные преимущества включают значительное снижение медийных сбоев за счет защиты памяти и полосы диска, используемой в медийных приложениях, защиты от фоновых действий, таких как антивирусный анализ, индексирование файлов, запуски скриптов регистрации, что может нарушать целостность интерактивного отклика; а также увеличенный срок службы батарей питания, низкие шумы, низкие вибрации для мобильных устройств, что является следствием поддержания диска в остановленном состоянии в течение длительных периодов времени. Улучшенные возможности потокового режима для медийных приложений, а также приложений, подобных домашним (eHome) электронным приложениям, с множеством фоновых потоков, также являются результатом настоящего изобретения.
В нижеследующем разделе описаны различные реализации, приведенные в качестве примеров, которые являются лишь некоторыми из путей использования информации, которая может быть получена для управления памятью.
Примеры реализаций
По меньшей мере один пример реализации настоящего изобретения, описанный ниже, был осуществлен на базе модифицированной системы, исполняющей операционную систему Windows® XP SP1 компании Microsoft Corporation и файловую систему Windows® NTFS. Тем не менее, не предусматривается какое-либо ограничение настоящего изобретения конкретной операционной системой или типом управления памятью; напротив, предусматривается, что настоящее изобретение будет функционировать и обеспечивать преимущества при использовании с любым компьютером, имеющим память, управляемую системой управления памяти, так как настоящее изобретение спекулятивную («по предположению») и интеллектуальную схему управления кэшем. Более того, хотя был осуществлен пример реализации с накопителем на дисках в качестве вспомогательного запоминающего устройства, из которого производиться загрузка памяти, очевидно, что такое вспомогательное запоминающее устройство не обязательно должно представлять собой накопитель на дисках, а в качестве альтернативы включает использование флэш-памяти, сетевого источника данных, накопителя на магнитной ленте, и реально компьютерная система, которая полностью является бездисковой, может обеспечить значительную выгоду от применения настоящего изобретения.
В соответствии с одним из аспектов настоящего изобретения и по существу, как представлено в примере реализации 400 по фиг.4А и 4В, были разработаны различные механизмы, которые реализуют лежащий в основе настоящего изобретения метод упреждающего, гибкого и самонастраивающегося управления памятью. Такие механизмы предусматривают отслеживание и регистрацию страниц, к которым осуществлялось обращение, защиту более ценных страниц от эрозии и выборку и сохранение этих страниц в памяти после переносов. Эти механизмы исполняются как часть ядра (части исполняющей системы, управляющей процессором), но могут также включать в себя сервисы пользовательского (непривилегированного) режима.
Как описано выше, для отслеживания и регистрации использования памяти и других контекстных данных, настоящее изобретение предусматривает сбор информации для получения обширных данных, включая то, к каким страницам осуществляется обращение для текущих частых пользовательских действий. Например, может регистрироваться каждый доступ к страницам в отдельном процессе или во всей системе за определенный период времени. С этой целью, как представлено на фиг.4А на приведенном примере реализации 400, механизм 402 отслеживания (трассирования) или трассировщик отслеживает обращения к странницам путем контроля связанной со страницами операции 404, включая контроль битов доступа, которые соответствуют странице, к которой осуществляется доступ, и наблюдение того, когда страницы переносятся в память при сбое.
Также как показано на фиг.4А, информация трассировки сохраняется регистратором 406 в структурах данных (например, включая одну или более предыдущих регистраций 408 и исходных записей (регистраций) 410, как описано ниже), которые идентифицируют каждую страницу как пару «файл-офсет» (смещение) или, для конкретных страниц, таких как неупорядоченные массивы, как пару «рабочий набор-виртуальный адрес». Более конкретно, в одной реализации, механизм 402 отслеживания записывает связанные с процессом события виртуальной памяти в буферы ядра (не показаны), из которых затем осуществляется сборка исходных записей (регистраций) 410. Другая полезная часть информации, которая может быть получена механизмом 402, отслеживает, находилась ли страница (при обращении к ней) в памяти или при проявлении сбоя должна была быть записана с диска. События виртуальной памяти включают в себя начальные обращения к конкретным страницам адресного пространства и доступ к счетчикам, которые регистрируют частоту повторного обращения к странице. Также включается информация о состоянии машины и распознанных контекстах, действующих в момент трассировки. Для каждой страницы может поддерживаться дополнительная информация, например, о том, в каком из последних запусков сценария осуществлялось обращение к такой странице, и подобная информация о состоянии системы.
Таким образом, важной основой метода управления памятью согласно настоящему изобретению является регистрация событий управления памятью, наблюдаемых в системе, то есть представления обращений к частям виртуальных адресных пространств конкретными процессами. Может оказаться нереализуемой регистрация каждого обращения, и поэтому в описываемой реализации операция осуществляется с определенной гранулярностью страниц, чтобы зарегистрировать первые обращения и информацию о частоте последующих обращений.
Регистратор 406 работает путем использования трасс ядра и форматирования их как исходных записей 410. Функции регистратора включают обеспечение отслеживания пределов ресурсов таким образом, чтобы исходные записи не заполняли пользовательский диск. Трассы, зарегистрированные таким образом в исходных записях 410, представляют схемы (конфигурации) обращений для конкретной реализации процесса за некоторый приемлемо короткий интервал. Например, записи могут быть собраны за отдельную начальную загрузку или восстановление из режима пониженного энергопотребления, за период, следующий за некоторым пользовательским событием, таким как загрузка панели управления, за период, когда приложение является приоритетным приложением, за некоторый интервал времени, не поддерживаемый для конкретного события, и так далее.
В описываемой реализации записи включают в себя заголовок, который может содержать контекст, состояние памяти, временную информацию, а также могут включать в себя таблицу записей <источник, смещение, устойчивый отказ>, где источник представляет собой адресное пространство файла или процесса, к которому осуществляется обращение при заданном офсете (смещении), и устойчивый отказ указывает на то, были ли данные считаны с диска, что обеспечивает приближенную меру стоимости.
В дополнение к отслеживанию использования страниц для различных контекстов, также может поддерживаться информация о схемах (конфигурациях) обращения и времени существования отдельных страниц, которые находятся в памяти, обеспечивая возможность принятия лучших решений относительно использования страниц в рабочих наборах. Например, современные операционные системы поддерживают только два бита информации о времени существования на страницу, причем для программы-менеджера памяти все страницы, к которым недавно не было обращения (например, в последние несколько минут), будут представляться одинаковыми. В настоящем изобретении информация, к которой имеет доступ система управления памятью, может включать в себя ряд периодов (например, минут), в которые использовалась каждая страница, а также периодов, в которые каждая страница была создана и когда к ней имел место последний доступ. В соответствии с настоящим изобретением механизмы поддерживают эту информацию о страницах, даже когда эти страницы перемещаются на диск. Иными словами, страница отслеживается не только, когда она находится в памяти, но эта информация поддерживается и когда страница находится на диске. Эта дополнительная информация обеспечивает существенно более точную картину того, каким образом осуществлялось обращение к странице за время ее существования.
Механизм 402 отслеживания (трассировки) может работать одновременно по множеству действующих трасс. Эти трассы могут включать в себя непрерывные трассы, данные по которым, например, могут накапливаться одна за другой до тех пор, пока они не достигнут определенного объема (например, 100 000 записей), или до тех пор, пока они не составят конкретную длительность (например, интервал длительностью пять минут). Отметим, что один реализованный механизм трассировки имеет относительно низкие непроизводительные затраты (например, 0,1% ЦПБ с процессором на 450 МГц, плюс несколько мегабайт памяти для регистрации дня использования страницы), обеспечивая непрерывное отслеживание того, к каким страницам осуществлялось обращение, без нагружения системы. Трассировка может также выполняться как прерывистая операция типа взятия выборок, например, запускаемая автоматически или в ответ на запросы через инструментальные средства графического пользовательского интерфейса (ГПИ) для целей тестирования или обучения, что позволяет связать собранную информацию о страницах с конкретными операциями и переходами, такими как запуск приложения, быстрое переключение пользователем или восстановление из резервного состояния.
Заметим, что вместо запуска трассировки/регистрации из рабочей (временной) памяти для пользователя/системы, может быть выполнен некоторый объем предварительной тренировки (например, для других пользователей и систем). Это позволяет копировать некоторый предварительно сформированный файл и значение страницы и информационную базу данных в момент времени установки или другие подходящие моменты времени, например, когда инсталлируется прикладная программа. Такое статическое решение помогает ускорить кривую обучения (эффект обучения), которая в противном случае могла бы потребоваться всякий раз при добавлении нового пользователя, новой системы, новой версии операционной системы и/или новой программы. Таким образом, настоящее изобретение обеспечивает преимущества за счет основанной на значимости селективной или полной загрузки памяти, причем значимость определяется, по меньшей мере частично, на основе предварительного наблюдения, или отслеживанием предыстории использования, и/или обучением (включая моделирование, анализ кода, прогоны на другой машине и так далее). Для поддержания данных строится, используется и сохраняется постоянный репозиторий (система хранения) информации, который может находиться в любом файле, включая исполняемые файлы, документы и специализированные файлы данных и базы данных. Кроме того, отметим, что предварительно полученные знания также обеспечивают существенное сокращение в переносах ввода/вывода по запросу, даже без выполнения динамического сбора информации посредством регистрации и трассировки. Например, переносы ввода/вывода по запросу могут быть сокращены просто за счет обеспечения предварительно сформированных файлов группирования страниц, например, при неуспехе отображения панели управления пользователем на первой странице другие связанные страницы эффективно перемещаются в память с диска.
За счет механизма 402 трассировки и другой описываемой здесь обработки система управления памятью строит и поддерживает планы сценария (например, файлы) 422 (фиг.4В), которые содержат данные, которые могут использоваться для установления одной или более измеримых значимостей для страниц файлов, например, частоты использования. С этой целью различные компоненты могут обрабатывать данные с преобразованием их в подходящую форму для принятия решений по управлению памятью, включая интегратор 412, который по существу объединяет предыдущие записи 408 и исходные (необработанные) записи 410 в базу 414 данных информации страниц.
Интегратор 412, представленный на фиг.4А, представляет собой сервисную программу, которая может выполняться в процессе пользовательского уровня (когда доступ к ядру не требуется), который считывает исходные записи 410, обрабатывает их и объединяет информацию, которую они содержат, с информацией страниц для сходных контекстов, уже сохраненной в системе (например, в предыдущих записях 408). Первоначально не будет иметься предыдущей информации, но система быстро достигнет состояния, когда исходные трассы служат главным образом для обновления и уточнения информации, уже известной из предыдущих появлений конкретного контекста. Один простой интегратор 412, который был реализован, поддерживает вектор битов предыстории для каждой упомянутой страницы в трассах для заданного класса контекстов. Для интегрирования нового события, вектор битов предыстории получает смещение, и добавляется новый бит, представляющий наиболее поздний период времени. Страницы, которые появляются в новой записи, имеют «1» в качестве нового бита, в то время как остальные имеют «0». Страницы, которые появляются в первый раз, добавляются к базе 414 данных информации страниц, в то время как страницы, которые не были использованы в последнее время, могут быть удалены из базы 414 данных.
Таким образом, посредством интегратора 412, исходные записи 410, охватывающие конкретные события или интервалы, объединяются с предыдущими записями 408, содержащими известную информацию о предыдущих экземплярах сходных событий, таких как предыдущие прогоны той же самой программы, для создания базы 414 данных информации страниц. База 414 данных информации страниц по существу сжимает информацию, содержащуюся в записях, чтобы сократить объем памяти, требуемой для отслеживания этих данных, при реорганизации информации таким образом, чтобы сходные события группировались соответствующим образом, и выявлялась общность в файлах и страницах между исходной записью 410 и предыдущими записями 408.
Как показано на фиг.4А и 4В, информация в базе 414 данных информации страниц может быть извлечена (например, сервисной программой 420 извлечения) для формирования планов 422 сценария, которые показывают вероятную композицию будущих виртуальных адресных пространств и вероятность обращения к страницам в виртуальном пространстве в конкретных контекстах. Как описано ниже, эти планы 422 сценариев используются средством 424 перенастройки для прогнозирования будущих обращений для системы, и позволяют средству 424 перенастройки создавать новые планы управления памятью в ответ на события, наблюдаемые системой. Например, планы сценария могут быть сформированы из фиксированного набора файлов информации страниц, содержащих информацию, относящуюся к сценариям, известным как важные для системы, таким как начальная загрузка и завершение работы системы и восстановление из режима пониженного энергопотребления. Конкретные сообщения используются для установления контекстов. К этим данным может быть добавлена информация из сценариев, выбранных пользователем, например, через интерактивные графические инструментальные средства, и различным сценариям могут быть присвоены приоритеты по умолчанию, которые могут быть модифицированы за счет использования интерактивных инструментальных средств.
Когда планы 422 сценария изменяются, средство 426 присвоения приоритета страниц сценария (например, сервисная программа пользовательского режима, включенная или иным образом связанная c сервисной программой 420 извлечения) обрабатывает планы 422 сценариев для генерации списка страниц, которые должны быть загружены в память и защищены. Эта регенерация также может быть запущена на основе максимального прошедшего времени с момента последнего выполнения, чтобы гарантировать регенерацию планов по меньшей мере однократно каждые пятнадцать минут. В одной реализации, для выполнения присваивания приоритетов, каждой странице присваивается вычисленный отсчет приоритета. Когда эти отсчеты определены, страницы затем сортируются по вычисленным отсчетам для построения приоритетного списка 428 страниц.
Один фактор вычисления отсчета (скоринга), характеризующий частоту использования, определяется путем подсчета того, сколько раз эта страница была использована в течение последних интервалов времени, например, за последний час, последние восемь часов, последний день, последнюю неделю и так далее, в соответствии с файлами сценария данных. С этой целью средство 426 присвоения приоритета страниц отслеживает частоту использования страниц для различных временных интервалов, например, сегментов памяти для интервалов в один час, восемь часов, один день, три дня, одну неделю и три недели. На основе числа раз использования страницы в каждом из этих сегментов памяти, странице может быть присвоен отсчет в пределах от 0 до 127.
Каждый план сценария также может отслеживать то, в каком из последнего числа прогонов (например, тридцати двух) страница была использована, с временными метками для каждого запуска. Больший вес придается последним использованиям страницы. Кроме того, отсчеты для страниц, которые находятся в известных планах сценария, таких как план сценария, поддерживаемый для меню запуска, могут быть повышены для придания им более высокого приоритета.
Скоринг страниц может также принимать во внимание контекст, в котором наблюдалось использование страницы. Таким образом, отсчеты могут зависеть в совокупности от состояния машины, исполняемых приложений и последних операций пользователя. Такие усложненные подходы в присвоении приоритета страницам по всей вероятности будут уточняться с течением времени. Заметим, что поскольку каждый план сценария поддерживает информацию о времени и предыстории в отношении последнего числа прогонов (например, тридцати двух), в которых имело место обращение к страницам, то можно определить, как часто происходило обращение к конкретной странице файла в течение сценария по отношению к другим страницам, для которых зарегистрирована информация.
Для генерации событий, как показано на фиг.В, предусмотрено средство наблюдения или наблюдатель 430. Наблюдатель 430 предпочтительно содержит поток в ядре операционной системы, который контролирует состояние системы, включая явно выраженные изменения в физическом использовании памяти. Кроме того, вызовы в явном виде могут осуществляться для запуска оценки состояния, когда выполняются определенные действия, такие как начало завершения работы или режима пониженного энергопотребления. Кроме того, приложения могут осуществлять обращения в ядро для уведомления системы о потенциально интересующих изменениях состояния, к которым может быть применена выбранная приложением метка.
В одной реализации трассируемые события включают запуски приложений и прохождение распознанных сообщений управления окнами в ядро. Отслеживание сообщений управления окнами позволяет системе обнаруживать подсказки о том, что приложения или компоненты системы могут выполнять важные связанные с памятью операции, такие как запуск «меню запуска» или создание диалогов или окон для опций «открытие файла», «печать» или «панель управления». Во избежание избыточной трассировки частотных или тесно упакованных событий может быть использована эвристика. В ответ на эти события ядро отслеживает использование страниц для индивидуального процесса путем использования обращений к табличным записям битов на странице для страниц. Эти биты очищаются при начале трассировки и проверяются в конце трассы. Любые удаления или сбросы при трассировке битов, к которым осуществлено обращение, также регистрируется. Регистрируются страницы, к которым обращение было осуществлено через «считать файл» или «устойчивые отказы» при выполнении считывания с диска.
Когда наблюдается изменение в состоянии системы или вызов указывает на важное событие, генерируется событие 432, и состояние системы может быть обновлено с помощью сервисной программы 434 оценки состояния и обновления данных. Трассировка может быть вызвана или завершена, и/или в нее могут быть переданы данные 436 состояния (или другая информация памяти системы), и может быть запущена перенастройка, как представлено на фиг.4В. Состояние включает активные контексты, а также текущее распределение памяти между рабочими наборами, пустым списком, списком ожидания записи и резервным набором страниц. Информация о памяти системы включает размеры виртуальных адресов, размеры рабочих наборов, данные моментальных копий процесса, устойчивые отказы и нерегулярные сбои, биты аппаратно поддерживаемых обращений к памяти, информацию постраничного использования, полученную операционной системой, и любые другие измеренные данные или данные наблюдений, контексты и состояние, которые могут быть использованы для определения значимости страниц, как описано выше.
Как в общем описано выше, либо непрерывно, либо в конце трассировки, ядро формирует трассовый буфер, который включает в себя списки конкретных страниц, необходимых для различных файлов, а также множество счетчиков внутреннего управления памятью, таких как количество пустых/свободных страниц в системе и состав резервного набора страниц. Также как описано выше, трассовые буферы заполняются сервисами пользовательского уровня и используются для обновления файлов сценария, например, поддерживаются в каталоге упреждающей выборки. Имена файлов сценария могут основываться на трассируемом контексте, например, AppLaunch.WMPlayer.exe-…pfx или Shell.StartMenuCreate…pfx.
Таким способом системные события вызывают переоценку состояния системы и могут запускать перенастройку содержимого памяти. Контексты указываются маркерами, которые активизируются при выполнении конкретного системного кода, а также определяются приложениями через интерфейсы прикладного программирования или иные подобные средства. Приложения могут обеспечивать пользовательские интерфейсы, через которые пользователь может определить и маркировать свои персонализированные контексты. Другие системные события, которые могут вызвать переоценку, включают распределения и отмену распределений большой памяти, запуск процессов или обнаружение того, что пользователь перешел в состояние бездействия или возобновил работу. Таким образом, средство 424 управления памятью и перенастройки может воздействовать на запуски/события/контексты, так чтобы устанавливать приоритеты страниц, которые с большей вероятностью потребуются в текущем контексте, и оценивать их более высоко по отношению к другим, и предварительно загружать память на основе данного нового присваивания приоритетов. Эти контексты могут быть использованы процессором трассировки для категоризации и группирования данных использования трассируемых страниц. После идентификации страницы и группы страниц переупорядочиваются в памяти, так чтобы выгружать их, загружать все связанные страницы одновременно, когда в одной из них произошел сбой, и так далее.
Средство 424 перенастройки является промежуточным элементом между элементами пользовательского режима и режима ядра при выполнении метода упреждающей выборки в системе управления памятью. Как описано ниже, средство 424 перенастройки главным образом основывается на ядре для идентификации и упорядочивания страниц в резервном наборе страниц, для идентификации страниц низкой значимости и для защиты страниц высокой значимости. В дополнение к поддержке страниц высокой значимости, основным назначением средства 424 перенастройки является заполнение памяти страницами, которые выбрало средство 426 присвоения приоритета страница сценария, путем замены страниц низкой значимости страницами высокой значимости, как это определено отсчетами приоритета. С этой целью средство 424 перенастройки памяти отслеживает содержимое счетчиков средства 425 присвоения приоритета страницам сценария и памяти ядра для определения того, если потребуется предпринять какие-либо действия. Заметим, что счетчики содержимого памяти из ядра дают информацию о том, какое количество свободных/пустых страниц доступно, а также статистику для каждого резервного поднабора страниц (описаны ниже), и какое количество страниц переназначено ввиду слишком интенсивного использования памяти.
Таким образом, средство 424 перенастройки наблюдает текущее положение дел с памятью и может вызвать стандартные подпрограммы для правильной настройки памяти. Из этой информации средство 424 перенастройки затем определяет ресурс памяти, предназначающийся для использования в целях хранения данных упрежденной выборки. Пул (динамически распределяемая область) страниц, которая подлежит спекулятивному управлению, определяется путем идентификации страниц, которые обеспечивают низкую степень полезности, подобно страницам с пустым содержимым вне определенных границ, установленных для системы. Страницы низкой полезности могут также включать в себя страницы, имеющие действительное содержимое, которые не находятся в рабочих наборах, и которые не использовались в течение относительно длительного времени. Посредством средства 426 присвоения приоритета, средство 424 перенастройки таким образом использует информацию в планах 422 сценария для установки более идеального набора содержимого для памяти, в пределах ее ресурса. Оно может запрашивать (например, через интерфейсы прикладного программирования) для определения того, какое количество содержимого находится в памяти, и затем может модифицировать планы 422.
Если имеются свободные страницы или страницы низкой значимости, средство 424 перенастройки запрашивает ядро системы о заполнении их страницами более высокой значимости с использованием низкоприоритетной упреждающей выборки ввода/вывода до тех пор, пока страницы более высокой значимости не будут перенесены в память. С этой целью, как только средство 424 перенастройки установило список страниц согласно ресурсу, список желательных для загрузки страниц (и страниц для выгрузки) посылается в средство 440 планирования ввода/вывода. Эти инструкции ввода/вывода предпочтительно сортируются в очереди диска для минимизации поисков, результатом чего является намного более высокая пропускная способность диска. Если средство 424 перенастройки не в состоянии переместить в память столько страниц, сколько было бы необходимо, то средство 424 перенастройки запоминает свое местоположение в своем списке, и когда становится доступным большее количество страниц, то продолжает выполнять упреждающую выборку с этого места.
Всякий раз, когда средство 426 присвоения приоритета страницам сценария формирует новый перечень страниц или когда какая-либо из загруженных с упреждением (по гибкой процедуре) страниц, которые были введены в память, переназначается ввиду слишком интенсивного использования памяти, средство 424 перенастройки запускает упреждающую выборку с начала страницы. Перед тем как средство 424 перенастройки осуществит упреждающую выборку новой партии страниц, оно устанавливает в исходное состояние привилегии ранее выбранных с упреждением страниц, чтобы сделать их доступными.
Заметим, что средство 424 перенастройки может программироваться так, чтобы быть относительно консервативным по отношению к тому, какие страницы ему желательно ввести в память, чтобы избежать мешающего воздействия на пользовательские операции. С этой целью средство перенастройки устанавливается для выполнения низкоприоритетных операций ввода/вывода с помощью средства 440 планирования и может избегать выполнения действий, когда система находится в состоянии слишком интенсивного использования памяти. Например, средство 424 перенастройки может быть установлено так, чтобы только заменять страницы, которые не были использованы в течение относительно длительного времени и которые не были использованы довольно часто, и может не предпринимать никаких действий, если не имеется некоторого порогового объема доступной памяти в системе (например, 16 мегабайт), из которого определенная меньшая часть (например, 6 мегабайт) свободна или занята пустыми или другими страницами низкой степени полезности.
Средство 440 планирования ввода/вывода действует для загрузки желательного содержимого памяти путем выполнения вводов/выводов, но ограничено необходимостью избегать мешающего воздействия на другой ввод/вывод, осуществляемый в системе. Одним из способов выполнения этого является ожидание моментов времени относительно неинтенсивных действий ввода/вывода и разбиение задачи на относительно малые объемы переносов. Однако система может обеспечивать этот тип предотвращения мешающего воздействия путем реализации схемы приоритета. При этом средство 424 перенастройки, например, на периодической основе и/или при запуске принимает решение, какие страницы должны находиться в памяти, на основе ожидаемого использования, эффективности и так далее, как описано выше, а средство 440 планирования управляет переносами ввода/вывода для настройки содержимого памяти в соответствии с необходимостью, таким образом, чтобы попытаться минимизировать создание помех другим операциям ввода/вывода.
Как представлено на фиг.5А, при традиционном управлении памятью страницы, которые должны быть выгружены, сначала добавляются к резервному списку 500 страниц, который представляет собой просто список типа FIFO. Будучи списком типа FIFO, все страницы, добавленные к этому списку 500, обрабатываются одинаковым образом, без учета их важности. Это приводит в результате к ситуации, когда страница, которая была значимой страницей, переставляется перед другой страницей, использование которой когда-либо является маловероятным, но которая попала в список 500 позднее.
В соответствии с одним из аспектов настоящего изобретения и как представлено на фиг.5В, для улучшения данной схемы таким образом, чтобы защитить более значимые страницы, предусматривается резервный набор страниц с присвоенными приоритетами или кэш 502, который учитывает относительную значимость страниц, как это определено скорингом приоритета на основе трассировки. Как показано на фиг.5В, такой резервный набор страниц с присвоенным приоритетом включает в себя поднаборы 5020 - 50215, каждый из которых содержит одну или более страниц с назначенным конкретным приоритетом. Заметим, что на фиг.5В показано только малое количество таких поднаборов, однако легко понять, что возможно любое практически необходимое число таких поднаборов и что поднаборы могут быть различных размеров. Поднабор 5020 является незащищенным поднабором, который действует подобно существующему резервному набору 500 страниц по фиг.5А; страницы, которые не трассировались адекватным образом, могут попасть в этот список. Когда необходимо переназначить страницу из резервного набора 502 страниц с присвоенным приоритетом, страница берется из непустого поднабора с самым низким приоритетом.
Таким образом, когда файл закрывается или рабочий набор правильно настраивается, его страницы переходят в резервный набор 502 страниц, с определением того, в какой поднабор эти страницы должны быть введены, на основе дополнительной расширенной информации об использовании, например, сохраненной в записи базы данных с номером страничного блока системы управления памятью для данной страницы. Помимо полей времени существования страницы и частоты обращения, имеются поля, которые позволяют настраивать приоритет страниц на основе информации из баз данных сценария и текущего контекста системы.
Поток стратегии управления памятью системы перенастраивает (например, путем вызова средства 424 перенастройки по фиг.4В) время от времени резервный набор 502 страниц с присвоенными приоритетами, например, один раз в каждую секунду. Страницы, которые были введены в высокоприоритетные поднаборы, которые затем не использовались в течение продолжительных периодов, мигрируют в более низкоприоритетные поднаборы.
В одном варианте некоторые страницы помещаются в поднабор 50215 с наивысшим приоритетом, причем эти страницы никогда не переназначаются. Это обеспечивает механизм для удержания этих страниц в памяти даже при условиях высокоинтенсивного использования памяти. Заметим, что этот механизм является более действенным, чем VirtualLock (виртуальное блокирование), поскольку процессы, которые могут использовать его, имеют возможность перемещения вовне и возврата назад (и может быть, в действительности, еще должны быть созданы). Таким образом, в соответствии с настоящим изобретением эти механизмы обеспечивают возможность выбора страниц, которые желательно сохранить в памяти. Путем присвоения относительных приоритетов сценариям более важные страницы не просто переназначаются перед менее важными. Кроме того, может определяться набор малозначимых или не имеющих значимости страниц, которые могут быть заменены более значимыми страницами с диска.
В одной реализации система управления памятью делит резервный набор страниц на шестнадцать поднаборов, которые она использует для отсортировывания различных классов страниц и, путем упорядочивания поднаборов, придания большей степени защиты некоторым классам страниц. Как описано выше, страница, содержащая полезные данные (такая как файловая страница или динамически распределяемая область памяти для выполняемого процесса), но такая, которая не находится больше в каком-либо рабочем наборе 450 (фиг.4В), помещается в конкретный поднабор в резервном наборе 502 страниц с присвоенными приоритетами на основе предпочтения, установленного для него средством 424 перенастройки памяти, и/или на основе схемы (конфигурации) его использования, когда он находился в памяти. Как описано выше, для отслеживания использования страниц могут быть использованы выделенные сегменты памяти, например по десятисекундным блокам, вместе с отсчетом количества периодов, когда к странице имело место обращение с момента ее создания, и последним периодом, когда к странице имело место обращение, чтобы оценить время ее существования. ≤Периодически, например, один раз в секунду, средство 424 перенастройки проходит через часть резервного набора 502 страниц и осуществляет повторную оценку того, в каком поднаборе должна находиться конкретная страница. В принципе, страница, которая не использовалась в течение продолжительного периода времени, перемещается в соответствующий более низкоприоритетный поднабор.
В таблице 1 показано, каким образом в одной из реализаций определяется соответствующий поднабор для конкретной страницы. Если приложению требуется память, а свободных или пустых страниц не имеется, то резервный набор страниц будет переназначаться, начиная с низшего проиндексированного поднабора.
Таблица 1 Присвоение приоритетов резервным поднаборам |
|
Индекс поднабора | Описание |
15 | Для страниц, блокируемых в памяти (необязательно) |
14 | Страницы с обращением в 40+ периодах |
13 | Страницы с обращением в 40+ периодах, но не использованные в течение 4+ часов |
12 | Страницы упреждающей выборки, осуществленной при упреждающем управлении памятью |
11 | Страницы с обращением в 20-40 периодах |
10 | Страницы с обращением в 10-20 периодах |
9 | Страниц нового резервного поднабора данных с недостаточным количеством данных |
8 | Страницы с обращением в ≤4 периодах, но не использованные в течение последних 5 минут |
7 | Страницы с обращением в ≤8 периодах, но не использованные в течение последних 10 минут |
6 | Страницы с обращением в ≤16 периодах, но не использованные в течение последних 20 минут |
5 | Сгруппированные страницы упреждающей выборки, осуществленной при упреждающем управлении памятью |
4 | Страницы с обращением в ≤2 периодах, но не использованные в течение последнего 1 часа |
3 | Страницы с обращением в ≤2 периодах, но не использованные в течение последних 4 часов |
2 | Страницы с обращением в ≤16 периодах, но не использованные в течение последнего дня |
1 | Страницы с обращением в ≤2 периодах, но не использованные в течение последнего дня |
0 | Страницы, к которым не было обращения в течение последних 3 дней |
Кроме того, страницы рабочего набора, которые не использовались в течение 20 минут, удаляются из памяти 450 рабочего набора в резервный набор 502 страниц, чтобы обеспечить для него возможность управления с приоритизацией. Как показано на фиг.4В, программа-менеджер (система управления) 452 рабочего набора имеет возможность управления страницами, которые были использованы последними, как в традиционных системах с разделением по времени, в то время как управление резервным набором страниц через средство 424 перенастройки памяти управляет страницами в течение более продолжительных периодов времени.
Концептуально, как показано в таблице 1, в этом примере реализации система управления поднаборами использует категории «на основе последнего времени использования» и «на основе частоты использования» для управления резервным набором страниц, определяемого как временное отсеивание и цепное (многозвенное) повторное использование соответственно. Принцип временного отсеивания (как оно реализовано в поднаборах 5020-5028) и цепного повторного использования (как оно реализовано в поднаборах 50210 - 50214) состоит в том, что страницы, которые не использованы в последнее время, должны быть переназначены из резервного набора 502 страниц перед другими страницами, но что дополнительная защита должна быть предоставлена страницам, которые использовались весьма часто, хотя и не обязательно в самое последнее время. Страницы в резервном наборе 502 страниц организованы, таким образом, как последовательность поднаборов, и эти страницы будут периодически перемещаться из более защищенных поднаборов в менее защищенные поднаборы или, наоборот, на основе их недостаточного использования или действительного использования во времени. Таким образом, в предположении последней потребности в неиспользованной странице, неиспользованная страница будет перемещаться из поднабора «не использованные в течение 5 минут» в поднабор «не использованные в течение 10 минут», в поднабор «не использованные в течение 30 минут» и так далее, пока она не попадет в поднабор «не использованные в течение 3 дней» (или в какой-либо еще более низкий). Страницы, которые использовались несколько более часто в течение некоторого целесообразно выбранного интервала, будут, однако, проскакивать начальную часть каскада или могут удерживаться в некотором поднаборе в течение более продолжительного времени.
Категории временного отсеивания и многозвенной схемы повторного использования выполняют отделение страниц, которые были использованы только в течение краткого времени, от страниц, которые были использованы более часто, и затем присвоение приоритетов этим страницам в поднаборах соответствующих их категорий. Временное отсеивание действует по градиенту самого последнего использования, в то время как многозвенная схема повторного использования действует по градиенту на основе частоты использования. Разумеется, нет необходимости ограничивать градиенты какими-либо конкретными временами или частотами, на самом деле они могут изменяться на основе реальных условий, так что страницы перемещаются между поднаборами и удаляются из резервного набора страниц таким образом, как это подходит для конкретной системы.
Заметим, что страницы, которые считаны с диска в первый раз, должны быть помещены в поднаборы резервного поднабора 502 страниц. Классы страниц включают страницы упреждающей выборки (поднабор 50212), сгруппированные страницы с ординарными сбоями (поднабор 5029) и страницы, интерполированные в упреждающую выборку путем кластеризации (поднабор 5025). Эти классы страниц приоритизированы в таком порядке, что страницы упреждающей выборки помещены среди страниц многозвенной схемы повторного использования, интерполированные страницы упреждающей выборки помещены среди страниц временного отсеивания, и страницы ординарных сбоев помещены между страницами многозвенной схемы повторного использования и страницами временного отсеивания.
В итоге, страницы с более высокой степенью полезности, необходимые в памяти, помещаются в резервные поднаборы для защиты их от нормального высокоинтенсивного использования памяти, что приводит в результате к значительным выигрышам в рабочих характеристиках с принятием соответствующих решений в ключевых сценариях идентификации и присвоения приоритетов. Например, в системе с 256 МБ согласованная реакционная способность была обеспечена во многих обычных операциях в оболочке (пользовательском интерфейсе), компонентах и приложениях, даже после таких переходов, как начальная загрузка, скоростное переключение пользователем и высокоинтенсивное использование памяти со стороны большого приложения. Быстрое возвращение из резервного состояния (например, скорее двух секунд), без значительных задержек на ввод/вывод с диска, обеспечивается на постоянной основе. Кроме того, при использовании этих механизмов стратегия самонастройки и набор правил, которые могут непрерывно обрабатывать получаемую информацию сценария, могут быть реализованы для определения того, какие страницы должны находиться в памяти.
Как можно понять из приведенного выше описания, выигрыш в эффективности за счет упреждающей выборки и своевременности не может обеспечить практически мгновенный пользовательский опыт, ввиду абсолютного размера требуемых данных и большого числа местоположений на диске, которые необходимы для доступа. Вместо этого, для обеспечения значительно улучшенного опыта, настоящее изобретение основывается на том, что страницы для пользовательских самых полезных и наиболее частых сценариев должны быть перенесены в память заранее. Таким образом, как только система управления стратегией выявила набор страниц, которые должны быть помещены в память, должна быть осуществлена упреждающая выборка этих страниц с использованием неактивных периодов диска. Однако в высшей степени интенсивным использованием ресурсов является помещение в очередь большого числа (например, сотен) спекулятивных асинхронных вводов/выводов для страничного обмена; например, если приоритетное приложение требует чего-либо с диска в данный момент времени, запрос приложения будет блокирован в очереди диска, что потенциально проявится в очень больших временах (например, порядка секунд) отсутствия реакции. Одно только обнаружение ожидания (простоя) не является надежным средством избежать таких ситуаций, поскольку пользовательское приложение может принять сбой, произошедший точно в момент, когда оно приняло решение о постановке в очередь спекулятивных вводов/выводов, за проявление состояния ожидания диска.
Как описано выше, настоящее изобретение позволяет избежать этой проблемы путем обеспечения поддержки для высокоприоритетных вводов/выводов, причем если спекулятивная упреждающая выборка поставлена в низкоприоритетную очередь диска, она не будет вызывать значительных задержек для запроса страничного обмена из приоритетного приложения, которые поставлены в очередь с высоким приоритетом.
Более того, если высокоприоритетные вводы/выводы выводятся по одному в каждый данный момент времени, они могут перемежаться с низкоприоритетными вводами/выводами упреждающей выборки. Результирующая схема поисков будет значительно влиять на полосу диска и оказывать отрицательное воздействие на времена отклика. В результате, для правильного ограничения непроизводительных затрат на спекулятивный ввод/вывод упреждающей выборки, может потребоваться объединить поддержку приоритетного ввода/вывода с быстрым и самонастраивающимся обнаружением состояния ожидания, обучающимся из своих отказов и конфигураций изменений. Когда поддержка приоритетного ввода/вывода объединяется с механизмами идентификации и присвоения приоритетов обращения к памяти, система получает возможность защитить операцию процесса от помехового влияния со стороны других процессов в системе. Традиционно это пытались сделать изменением приоритета процессов ЦПБ, но такая приоритизация не выполнялась по очередям диска или управлению памятью, по меньшей мере не в универсальных операционных системах.
Система ограничений в основном показана на фиг.6, где блок 602 ограничений ограничивает фоновые операции, такие как антивирусный анализ, индексирование файлов и запуски скриптов регистрации, чтобы ограничить взаимные помехи пользовательским приложениям. Блок 602 ограничений может также защищать медийные приложения от взаимных помех со стороны диска и памяти, что является одной из причин сбоев в аудио- и видеопотоках, а также обеспечить интерактивный отклик на приоритетные приложения даже в условиях интенсивной системной нагрузки.
Интеграция усовершенствований в управлении памятью с поддержкой приоритетных вводов/выводов обеспечивает основу для высокочувствительной и предсказуемой системы. Заметим, что блок 602 ограничений сам не обеспечивает высокоточных (например, на суб-100 миллисекундном уровне) ресурсных гарантий, которые могла бы обеспечить более сложная система управления ресурсами, но ограничивает отрицательные воздействия помех временами реакции, так что система всегда будет представляться как обеспечивающая адекватный отклик.
Как описано выше, упреждающая выборка является механизмом, с помощью которого набор страниц может быть эффективным образом считан с диска в память и помещен в конкретный резервный поднабор. Упреждающая выборка действует путем постановки в очередь асинхронных вводов/выводов страничного обмена для набора страниц, которые отсутствуют в памяти. В настоящем изобретении поддерживается упреждающая выборка страниц каталогов и других метаданных файлов, а также страниц страничных файлов. За счет усовершенствованного механизма упреждающей выборки настоящее изобретение может эффективным образом помещать в память любую страницу, идентифицированную в трассах, включая страницу файла, приватную страницу (динамическую область памяти процесса, пул ядра) в страничном файле, страницу системного реестра или метаданные системного файла, такие как MFT (таблица главного файла) или каталог.
Как можно видеть из вышеизложенного, различные механизмы упреждающего управления памятью обеспечивают намного более улучшенный пользовательский опыт для новых машин с большими объемами памяти, включая мобильные устройства, такие как планшетные устройства, настольные и компактные компьютеры, за счет обеспечения того, что данные по существу всегда будут находиться в памяти заранее. Эти методы и механизмы являются упреждающими, связаны с глобальным управлением памятью (как в памяти, так и на диске) за счет получения обширной информации и управления памятью на всех уровнях использования. Также обеспечивается эффективность ввода/вывода, вместе с категориями ввода/вывода, для попыток оптимизации переносов ввода/вывода при минимизации взаимных помех. Более интеллектуальным образом управляемый резервный набор страниц с присвоенными приоритетами облегчает поддержание более значимых страниц приоритетным образом по отношению к менее значимым, а также действует в концепции оценки полезности. Трассировка определяет использование памяти более оптимальным образом, вместе с контекстами, включая определенные пользователем, определяемые приложением и определяемые системой контексты. Системы и способы всеобъемлющего управления памятью, соответствующие настоящему изобретению, обеспечивают, таким образом, значительные преимущества и выгоды, требуемые в современных вычислительных системах.
Хотя изобретение допускает различные модификации и альтернативные конфигурации, некоторые иллюстративные варианты осуществления показаны на чертежах и описаны выше детальным образом. Однако следует иметь в виду, что при этом не предполагается, что изобретение должно ограничиваться конкретными раскрытыми формами выполнения. Напротив, изобретение охватывает также все модификации, альтернативные конфигурации и эквиваленты, соответствующие сущности и объему изобретения.
Claims (42)
1. Материальный машиночитаемый носитель информации, содержащий исполняемые компьютером инструкции, сохраненные на нем, которые при исполнении выполняют этапы для выборки данных из ячейки хранения в память на основе ранжирования оцененной полезности для данных, содержащий наблюдение потребности для данных страниц, подлежащих сохранению в памяти;
определение значимости для упомянутых данных страниц на основе наблюдаемой потребности для данных страниц, причем каждая значимость представляет наблюдаемую потребность для этих данных страниц и независима от любой физической ячейки памяти; и
загрузку, по меньшей мере, некоторых данных страниц в память приоритизированным образом на основе определенных значимостей для данных страниц.
определение значимости для упомянутых данных страниц на основе наблюдаемой потребности для данных страниц, причем каждая значимость представляет наблюдаемую потребность для этих данных страниц и независима от любой физической ячейки памяти; и
загрузку, по меньшей мере, некоторых данных страниц в память приоритизированным образом на основе определенных значимостей для данных страниц.
2. Машиночитаемый носитель информации по п.1, причем загрузка, по меньшей мере, некоторых данных страниц в память содержит выбор данных страниц на основе определенных значимостей.
3. Машиночитаемый носитель информации по п.1, причем загрузка, по меньшей мере, некоторых данных страниц в память содержит загрузку всей памяти.
4. Машиночитаемый носитель информации по п.1, причем загрузка, по меньшей мере, некоторых данных страниц в память содержит загрузку данных страниц в память, которая свободна.
5. Машиночитаемый носитель информации по п.1, дополнительно содержащий идентификацию данных страниц низкой значимости в памяти, причем загрузка, по меньшей мере, некоторых из данных страниц в память содержит замену, по меньшей мере, некоторых из данных страниц низкой значимости.
6. Машиночитаемый носитель информации по п.1, в котором наблюдение потребности для данных страниц содержит отслеживание действительного использования данных страниц и/или обучение для определения вероятно требуемых данных страниц, которые могут быть сохранены в памяти.
7. Машиночитаемый носитель информации по п.1, в котором наблюдение потребности для данных, которые соответствуют страницам, включает в себя обучение для определения вероятно требуемых страниц, причем упомянутое обучение включает в себя выполнение, по меньшей мере, одного действия из набора действий, включающих в себя моделирование использования страниц, анализ кода и прогон программ на обучающей компьютерной системе и использование значимостей на другой компьютерной системе.
8. Машиночитаемый носитель информации по п.1, дополнительно включающий создание постоянного хранилища информации, включающей в себя определенные значимости, и сохранение постоянного хранилища в файле.
9. Машиночитаемый носитель информации по п.1, в котором определение значимостей включает в себя поддержание обширной информации об использовании, включающей в себя, по меньшей мере, одно из информации о конфигурации, частотности, группировании и контекстной информации для данных страниц, подлежащих сохранению в памяти.
10. Реализуемый компьютером способ для эффективного переноса блоков данных, соответствующих примерно размеру страницы памяти, или данных страницы из ячейки хранения в ячейку памяти и наоборот на основе определенного приоритета для упомянутых данных страницы, содержащий наблюдение потребности для одного или более наборов данных страниц, подлежащих сохранению в памяти; определение значимости для упомянутых данных страниц, причем каждая значимость основана на наблюдаемой потребности для соответствующего набора данных страниц и независима от любой физической ячейки памяти;
ассоциирование определенных значимостей с данными страниц и
определение, какой из одного или более наборов данных страниц загружать из ячейки хранения в ячейку памяти, на основе определенных значимостей, ассоциированных с одним или более наборами данных страниц.
ассоциирование определенных значимостей с данными страниц и
определение, какой из одного или более наборов данных страниц загружать из ячейки хранения в ячейку памяти, на основе определенных значимостей, ассоциированных с одним или более наборами данных страниц.
11. Реализуемый компьютером способ по п.10, в котором определение значимостей дополнительно содержит поддержание обширной информации об использовании, включающей, по меньшей мере, одно из информации о конфигурации, частотности, группировании и контекстной информации для данных страниц в одном или более наборах.
12. Реализуемый компьютером способ по п.11, дополнительно содержащий изменение приоритета данных страниц на основе упомянутой обширной информации об использовании.
13. Реализуемый компьютером способ по п.11, в котором поддержание обширной информации об использовании включает в себя поддержание записей рабочего набора, содержащего обширную информацию об использовании, и/или назначение дескрипторов и записей физических страниц для поддержания обширной информации об использовании для данных страниц, которые покидают память.
14. Реализуемый компьютером способ по п.10, дополнительно содержащий поддержание информации для данных страниц, которые находились, но больше не находятся в памяти, и для данных страниц, которые не были в памяти.
15. Реализуемый компьютером способ по п.10, в котором наблюдение потребности для наборов данных страниц включает в себя доступ к поддерживаемой статистике, из которой могут быть определены значимости, причем статистика включает в себя, по меньшей мере, одно из информации о конфигурации, частотности, группировании и контекстной информации.
16. Реализуемый компьютером способ по п.10, в котором доступ к поддерживаемой статистике включает в себя доступ к, по меньшей мере, одному статистическому элементу набора данных страниц, причем набор содержит по записям данных записи для групп данных страниц, записи для файлов и данные состояния.
17. Реализуемый компьютером способ по п.10, дополнительно содержащий использование определенных значимостей для приоритизации данных страниц в памяти в поднаборы.
18. Реализуемый компьютером способ по п.10, дополнительно содержащий использование определенных значимостей для защиты более значимых данных страниц от перезаписи менее значимыми данными страниц.
19. Реализуемый компьютером способ по п.10, в котором наблюдение потребности для одного или более наборов данных страниц содержит отслеживание действительного использования данных страниц и/или обучение для определения вероятно требуемых данных страниц.
20. Реализуемый компьютером способ по п.10, дополнительно содержащий идентификацию данных страниц низкой значимости, сохраненных в памяти, причем определение, какие наборы данных страниц загружать в память, на основе определенных значимостей, ассоциированных с данными страниц, содержит замену, по меньшей мере, некоторых из данных страниц низкой значимости в памяти наборами данных страниц, ассоциированных с более высокими определенными значимостями, чем данные страниц низкой значимости.
21. В компьютеризованной системе, содержащей память, которая разделена на одну или более ячеек страниц или страниц памяти, способ переноса данных или данных страниц из одной или более ячеек хранения в одну или более ячеек страниц на основе одного или более определений значимости данных страниц, так что к данным высокого приоритета обеспечивается доступ из одной или более страниц памяти, прежде чем они потребуются, содержащий идентификацию сохраненных данных, которые сохранены в одной или более страницах памяти; наблюдение посредством механизма отслеживания одного или более связанных с памятью действий для данных и регистрацию результатов наблюдений в информационной базе данных, причем информационная база данных включает в себя информацию, наблюдаемую для текущего и предшествующих действий памяти над идентифицированными данными; приоритизацию идентифицированных данных в список приоритизации на основании наблюдений, зарегистрированных в информационной базе данных, причем список приоритизации разделяет данные на множество наборов данных страниц, каждый из которых имеет уникальное значение приоритизации; и
замену данных страниц более низкой значимости в одной или более страницах памяти данными страниц более высокой значимости.
замену данных страниц более низкой значимости в одной или более страницах памяти данными страниц более высокой значимости.
22. Способ по п.21, дополнительно содержащий наблюдение дополнительных одного или более связанных с памятью действий для данных страниц высокой значимости в одной или более страницах памяти; переупорядочивание списка приоритизации так, что, по меньшей мере, некоторым из данных страниц высокой значимости в одной или более страницах памяти присваивается более низкое значение приоритета; и замену, по меньшей мере, одних из, по меньшей мере, некоторых из данных страниц высокой значимости данными страниц более высокой значимости в соответствующих одной или более страницах памяти.
23. Машиночитаемый носитель, содержащий исполняемые компьютером инструкции, которые при исполнении выполняют этапы для загрузки данных из ячейки хранения в память на основе ранжирования оцененной полезности для данных, содержащий наблюдение потребности для данных страниц памяти; определение значимости для упомянутых страниц на основе наблюдаемой потребности и загрузку, по меньшей мере, части памяти на основе значимостей страниц.
24. Машиночитаемый носитель по п.23, причем загрузка, по меньшей мере, части памяти содержит выбор страниц на основе значимостей.
25. Машиночитаемый носитель по п.23, причем загрузка, по меньшей мере, части памяти содержит загрузку всей памяти.
26. Машиночитаемый носитель по п.23, причем загрузка, по меньшей мере, части памяти содержит загрузку памяти, которая свободна.
27. Машиночитаемый носитель по п.23, дополнительно содержащий идентификацию страниц низкой значимости в памяти, причем загрузка, по меньшей мере, части памяти содержит замену, по меньшей мере, некоторых из страниц низкой значимости.
28. Машиночитаемый носитель по п.23, в котором наблюдение потребности для страниц содержит отслеживание действительного использования страниц и/или обучение для определения вероятно требуемых страниц.
29. Машиночитаемый носитель по п.23, в котором наблюдение потребности для страниц включает в себя обучение для определения вероятно требуемых страниц, причем упомянутое обучение включает в себя выполнение, по меньшей мере, одного действия из набора действий, включающих в себя моделирование использования страниц, анализ кода и прогон программ на обучающей компьютерной системе и использование значимостей на другой компьютерной системе.
30. Машиночитаемый носитель по п.23, дополнительно включающий создание постоянного хранилища информации, включающей в себя значимости, и сохранение постоянного хранилища в файле.
31. Реализуемый компьютером способ для эффективного переноса данных страниц из ячейки хранения в ячейку памяти и наоборот на основе определенного приоритета для данных страницы, содержащий идентификацию страниц низкой значимости и поддержание информации управления памятью в памяти, включающей в себя информацию о страницах низкой значимости.
32. Способ по п.31, в котором поддержание информации управления памятью содержит поддержание обширной информации об использовании, включающей, по меньшей мере, одно из информации о конфигурации, частотности, группировании и контекстной информации.
33. Способ по п.32, дополнительно содержащий изменение приоритета страниц в памяти на основе упомянутой обширной информации об использовании.
34. Способ по п.32, в котором поддержание обширной информации об использовании включает в себя поддержание записей рабочего набора, содержащих обширную информацию об использовании для страниц, которые больше не находятся в памяти, но действительны в адресном пространстве для рабочего набора.
35. Способ по п.32, в котором поддержание обширной информации об использовании включает в себя назначение дескрипторов и записей физических страниц для поддержания обширной информации об использовании для страниц, которые покидают память.
36. Способ по п.31, в котором поддержание информации управления памятью включает в себя поддержание данных для страниц, которые находились, но больше не находятся в памяти, и для страниц, которые не были в памяти.
37. Способ по п.31, в котором поддержание информации управления памятью включает в себя поддержание статистики в памяти, из которой может быть выведена обширная информация об использовании, включающая в себя, по меньшей мере, одно из информации о конфигурации, частотности, группировании и контекстной информации.
38. Способ по п.37, в котором поддержание статистики включает в себя поддержание, по меньшей мере, одного статистического элемента набора, причем набор содержит по записям страниц записи для групп страниц, записи для файлов и данные состояния, по меньшей мере, по одной странице.
39. Способ по п.31, дополнительно содержащий использование информации управления памятью для приоритизации страниц в памяти в поднаборы.
40. Способ по п.31, дополнительно содержащий использование информации управления памятью для защиты более значимых страниц от переназначения.
41. Машиночитаемый носитель, содержащий исполняемые компьютером инструкции, которые при исполнении выполняют этапы для приоритизации данных страниц для переноса из одной или более ячеек хранения в одну или более ячеек страниц на основе одного или более определений данных страниц, так что к данным высокого приоритета обеспечивается доступ из одной или более страниц памяти, прежде чем они потребуются, содержащий прием события, связанного с контекстом; и приоритизацию памяти в ответ на событие, так что страницы, наиболее вероятные для использования в контексте, имеют более высокую значимость по отношению к страницам, менее вероятным для использования.
42. Машиночитаемый носитель по п.41, в котором приоритизация памяти содержит выполнение, по меньшей мере, одного действия из набора, включающего в себя изменение поднабора, в который классифицирована страница памяти, загрузку в память, по меньшей мере, одной страницы из вспомогательного запоминающего устройства и замену страниц в памяти страницами из вспомогательного запоминающего устройства.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US41611502P | 2002-10-04 | 2002-10-04 | |
US60/416,115 | 2002-10-04 | ||
US10/325,591 | 2002-12-20 | ||
US10/325,591 US6910106B2 (en) | 2002-10-04 | 2002-12-20 | Methods and mechanisms for proactive memory management |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2008140263/08A Division RU2482535C2 (ru) | 2002-10-04 | 2003-10-06 | Способы и устройства для упреждающего управления памятью |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2003129662A RU2003129662A (ru) | 2005-03-27 |
RU2348067C2 true RU2348067C2 (ru) | 2009-02-27 |
Family
ID=31996938
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2003129662/09A RU2348067C2 (ru) | 2002-10-04 | 2003-10-06 | Способы и устройства для упреждающего управления памятью |
RU2008140263/08A RU2482535C2 (ru) | 2002-10-04 | 2003-10-06 | Способы и устройства для упреждающего управления памятью |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2008140263/08A RU2482535C2 (ru) | 2002-10-04 | 2003-10-06 | Способы и устройства для упреждающего управления памятью |
Country Status (12)
Country | Link |
---|---|
US (5) | US6910106B2 (ru) |
EP (1) | EP1406174B8 (ru) |
JP (1) | JP4724362B2 (ru) |
KR (1) | KR100972723B1 (ru) |
CN (1) | CN1327369C (ru) |
AT (1) | ATE526631T1 (ru) |
AU (2) | AU2003246330A1 (ru) |
BR (1) | BRPI0304297B1 (ru) |
CA (2) | CA2723077C (ru) |
ES (1) | ES2371454T3 (ru) |
MX (1) | MXPA03008766A (ru) |
RU (2) | RU2348067C2 (ru) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2554851C2 (ru) * | 2009-05-05 | 2015-06-27 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Захват и загрузка состояний операционной системы |
RU2607984C1 (ru) * | 2012-12-25 | 2017-01-11 | Хуавей Текнолоджиз Ко., Лтд. | Способ и соответствующее устройство для определения режима управления страницей совместно используемой виртуальной памяти |
RU2615682C2 (ru) * | 2014-07-04 | 2017-04-06 | Сяоми Инк. | Способ, устройство, сервер и терминал для посещения веб-страницы |
RU2662394C2 (ru) * | 2013-12-23 | 2018-07-25 | Интел Корпорейшн | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения |
RU2681409C1 (ru) * | 2015-02-04 | 2019-03-06 | Хуавей Текнолоджиз Ко., Лтд. | Система и способ синхронизации памяти в многоядерной системе |
Families Citing this family (303)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1345234A1 (en) * | 2002-03-11 | 2003-09-17 | STMicroelectronics S.r.l. | Semiconductor memory with self-refresh capability |
US20040025045A1 (en) * | 2002-07-30 | 2004-02-05 | Sentry Technologies Pte, Ltd. | Method for switching rapidly between computing modes |
US6910106B2 (en) * | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
AU2003303908A1 (en) * | 2003-02-12 | 2004-09-06 | Research In Motion Limited | An apparatus and methods for managing data used by a mobile device |
US7082508B2 (en) * | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US8386648B1 (en) | 2003-06-26 | 2013-02-26 | Nvidia Corporation | Hardware support system for accelerated disk I/O |
US8095511B2 (en) * | 2003-06-30 | 2012-01-10 | Microsoft Corporation | Database data recovery system and method |
US7900092B2 (en) * | 2003-07-11 | 2011-03-01 | Computer Associates Think, Inc. | Kernel-level method of flagging problems in applications |
US20050015728A1 (en) * | 2003-07-17 | 2005-01-20 | International Business Machines Corporation | Method, system, and program product for customizing a user interface |
US8683132B1 (en) | 2003-09-29 | 2014-03-25 | Nvidia Corporation | Memory controller for sequentially prefetching data for a processor of a computer system |
US7502891B2 (en) * | 2003-10-30 | 2009-03-10 | International Business Machines Corporation | Storage management based on worklist |
US8356142B1 (en) * | 2003-11-12 | 2013-01-15 | Nvidia Corporation | Memory controller for non-sequentially prefetching data for a processor of a computer system |
US8700808B2 (en) * | 2003-12-01 | 2014-04-15 | Nvidia Corporation | Hardware support system for accelerated disk I/O |
US7203854B2 (en) * | 2004-02-12 | 2007-04-10 | Microsoft Corporation | System for reconfiguring a computer between a high power and high functionality configuration and a low power and low functionality configuration |
US20110099053A1 (en) * | 2004-04-30 | 2011-04-28 | Irizarry Jr Robert T | Method and system for monitoring successful use of application software |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US8131674B2 (en) | 2004-06-25 | 2012-03-06 | Apple Inc. | Methods and systems for managing data |
US8538997B2 (en) * | 2004-06-25 | 2013-09-17 | Apple Inc. | Methods and systems for managing data |
JP2006011803A (ja) * | 2004-06-25 | 2006-01-12 | Hitachi Ltd | 情報処理システムおよびその制御方法 |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US8356143B1 (en) | 2004-10-22 | 2013-01-15 | NVIDIA Corporatin | Prefetch mechanism for bus master memory access |
US7613870B2 (en) * | 2004-11-18 | 2009-11-03 | International Business Machines Corporation | Efficient memory usage in systems including volatile and high-density memories |
US7360042B2 (en) * | 2004-12-20 | 2008-04-15 | Microsoft Corporation | Determining when to evict unused items from storage |
US7543119B2 (en) * | 2005-02-10 | 2009-06-02 | Richard Edward Hessel | Vector processor |
US7340686B2 (en) | 2005-03-22 | 2008-03-04 | Microsoft Corporation | Operating system program launch menu search |
US7512904B2 (en) * | 2005-03-22 | 2009-03-31 | Microsoft Corporation | Operating system launch menu program listing |
US7543244B2 (en) * | 2005-03-22 | 2009-06-02 | Microsoft Corporation | Determining and displaying a list of most commonly used items |
US7496722B2 (en) * | 2005-04-26 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Memory mapped page priorities |
US10013371B2 (en) | 2005-06-24 | 2018-07-03 | Google Llc | Configurable memory circuit system and method |
US8077535B2 (en) | 2006-07-31 | 2011-12-13 | Google Inc. | Memory refresh apparatus and method |
US7386656B2 (en) | 2006-07-31 | 2008-06-10 | Metaram, Inc. | Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit |
US8359187B2 (en) | 2005-06-24 | 2013-01-22 | Google Inc. | Simulating a different number of memory circuit devices |
US8089795B2 (en) | 2006-02-09 | 2012-01-03 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
US8041881B2 (en) | 2006-07-31 | 2011-10-18 | Google Inc. | Memory device with emulated characteristics |
US20080028136A1 (en) | 2006-07-31 | 2008-01-31 | Schakel Keith R | Method and apparatus for refresh management of memory modules |
US7590796B2 (en) * | 2006-07-31 | 2009-09-15 | Metaram, Inc. | System and method for power management in memory systems |
US8796830B1 (en) | 2006-09-01 | 2014-08-05 | Google Inc. | Stackable low-profile lead frame package |
US9542352B2 (en) | 2006-02-09 | 2017-01-10 | Google Inc. | System and method for reducing command scheduling constraints of memory circuits |
US8111566B1 (en) | 2007-11-16 | 2012-02-07 | Google, Inc. | Optimal channel design for memory devices for providing a high-speed memory interface |
US7392338B2 (en) | 2006-07-31 | 2008-06-24 | Metaram, Inc. | Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits |
US8130560B1 (en) | 2006-11-13 | 2012-03-06 | Google Inc. | Multi-rank partial width memory modules |
US9171585B2 (en) | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US20080082763A1 (en) | 2006-10-02 | 2008-04-03 | Metaram, Inc. | Apparatus and method for power management of memory circuits by a system or component thereof |
US8327104B2 (en) | 2006-07-31 | 2012-12-04 | Google Inc. | Adjusting the timing of signals associated with a memory system |
US9507739B2 (en) | 2005-06-24 | 2016-11-29 | Google Inc. | Configurable memory circuit system and method |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US8386722B1 (en) | 2008-06-23 | 2013-02-26 | Google Inc. | Stacked DIMM memory interface |
US8090897B2 (en) | 2006-07-31 | 2012-01-03 | Google Inc. | System and method for simulating an aspect of a memory circuit |
US8438328B2 (en) | 2008-02-21 | 2013-05-07 | Google Inc. | Emulation of abstracted DIMMs using abstracted DRAMs |
US8055833B2 (en) | 2006-10-05 | 2011-11-08 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8081474B1 (en) | 2007-12-18 | 2011-12-20 | Google Inc. | Embossed heat spreader |
US8244971B2 (en) | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US8060774B2 (en) | 2005-06-24 | 2011-11-15 | Google Inc. | Memory systems and memory modules |
US8335894B1 (en) | 2008-07-25 | 2012-12-18 | Google Inc. | Configurable memory system with interface circuit |
US20060294049A1 (en) * | 2005-06-27 | 2006-12-28 | Microsoft Corporation | Back-off mechanism for search |
US20070067455A1 (en) * | 2005-08-08 | 2007-03-22 | Microsoft Corporation | Dynamically adjusting resources |
US8392684B2 (en) * | 2005-08-12 | 2013-03-05 | Silver Peak Systems, Inc. | Data encryption in a network memory architecture for providing data based on local accessibility |
US8370583B2 (en) * | 2005-08-12 | 2013-02-05 | Silver Peak Systems, Inc. | Network memory architecture for providing data based on local accessibility |
US8171238B1 (en) | 2007-07-05 | 2012-05-01 | Silver Peak Systems, Inc. | Identification of data stored in memory |
US8095774B1 (en) | 2007-07-05 | 2012-01-10 | Silver Peak Systems, Inc. | Pre-fetching data into a memory |
WO2007028109A2 (en) | 2005-09-02 | 2007-03-08 | Metaram, Inc. | Methods and apparatus of stacking drams |
US8811431B2 (en) | 2008-11-20 | 2014-08-19 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data |
US8489562B1 (en) * | 2007-11-30 | 2013-07-16 | Silver Peak Systems, Inc. | Deferred data storage |
US8929402B1 (en) | 2005-09-29 | 2015-01-06 | Silver Peak Systems, Inc. | Systems and methods for compressing packet data by predicting subsequent data |
US20070088920A1 (en) * | 2005-10-19 | 2007-04-19 | Philip Garcia | Managing data for memory, a data store, and a storage device |
US20070124573A1 (en) * | 2005-10-28 | 2007-05-31 | Walker Phillip M | Method for rapid startup of a computer system |
KR100739760B1 (ko) | 2005-11-23 | 2007-07-13 | 삼성전자주식회사 | 컴퓨터의 메모리 사용에 대한 정보를 제공하는 시스템 및방법 |
US8019854B2 (en) * | 2005-11-25 | 2011-09-13 | Samsung Electronics Co., Ltd. | System and method of providing information on computer memory use |
US8914557B2 (en) * | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US9632929B2 (en) | 2006-02-09 | 2017-04-25 | Google Inc. | Translating an address associated with a command communicated between a system and memory circuits |
US8607005B2 (en) * | 2006-02-17 | 2013-12-10 | International Business Machines Corporation | Monitoring program execution to learn data blocks accessed by software process for facilitating efficient prefetching |
US7620784B2 (en) * | 2006-06-09 | 2009-11-17 | Microsoft Corporation | High speed nonvolatile memory device using parallel writing among a plurality of interfaces |
KR100801894B1 (ko) | 2006-06-15 | 2008-02-12 | 삼성전자주식회사 | 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법 |
EP1870813B1 (en) * | 2006-06-19 | 2013-01-30 | Texas Instruments France | Page processing circuits, devices, methods and systems for secure demand paging and other operations |
WO2007146970A2 (en) * | 2006-06-16 | 2007-12-21 | Texas Instruments Incorporated | Page processing circuits, devices, methods and systems for secure demand paging and other operations |
US7692660B2 (en) * | 2006-06-28 | 2010-04-06 | Microsoft Corporation | Guided performance optimization for graphics pipeline state management |
US8111260B2 (en) | 2006-06-28 | 2012-02-07 | Microsoft Corporation | Fast reconfiguration of graphics pipeline state |
US8954947B2 (en) * | 2006-06-29 | 2015-02-10 | Microsoft Corporation | Fast variable validation for state management of a graphics pipeline |
US7743216B2 (en) * | 2006-06-30 | 2010-06-22 | Seagate Technology Llc | Predicting accesses to non-requested data |
US7590800B2 (en) * | 2006-06-30 | 2009-09-15 | Seagate Technology Llc | 2D dynamic adaptive data caching |
US7724589B2 (en) | 2006-07-31 | 2010-05-25 | Google Inc. | System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits |
US7555621B1 (en) * | 2006-08-01 | 2009-06-30 | Kaspersky Lab, Zao | Disk access antiblocking system and method |
US8885632B2 (en) | 2006-08-02 | 2014-11-11 | Silver Peak Systems, Inc. | Communications scheduler |
US8755381B2 (en) | 2006-08-02 | 2014-06-17 | Silver Peak Systems, Inc. | Data matching using flow based packet data storage |
KR101128234B1 (ko) * | 2006-08-23 | 2012-03-23 | 엘지전자 주식회사 | 메모리 접근 제어 장치 및 방법 |
JP5245231B2 (ja) * | 2006-09-07 | 2013-07-24 | 日本電気株式会社 | メモリ管理方法、メモリ管理装置およびプログラム |
JP4864797B2 (ja) * | 2006-09-11 | 2012-02-01 | Kddi株式会社 | P−cscf高速ハンドオフシステム及びp−cscf高速ハンドオフ方法 |
WO2008063647A2 (en) * | 2006-11-24 | 2008-05-29 | Sandforce Inc. | Delaying an operation that reduces a lifetime of memory |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
US7827358B2 (en) * | 2007-01-07 | 2010-11-02 | Apple Inc. | Memory management methods and systems |
KR100866627B1 (ko) | 2007-01-29 | 2008-11-03 | 삼성전자주식회사 | 컨트롤 플로우를 이용한 페이지 프리로드 방법 및 그시스템 |
JP5094193B2 (ja) * | 2007-04-16 | 2012-12-12 | 株式会社日立製作所 | 記憶システム及びその制御方法 |
US8032699B2 (en) * | 2007-06-15 | 2011-10-04 | Seagate Technology Llc | System and method of monitoring data storage activity |
US8209479B2 (en) | 2007-07-18 | 2012-06-26 | Google Inc. | Memory circuit system and method |
US20090055132A1 (en) * | 2007-08-22 | 2009-02-26 | Samsung Electronics Co., Ltd. | Determining situational patterns of use for computing systems |
US8046454B2 (en) * | 2007-08-22 | 2011-10-25 | Samsung Electronics Co. Ltd. | Identifying and recommending potential communication states based on patterns of use |
US8032468B2 (en) * | 2007-08-22 | 2011-10-04 | Samsung Electronics Co., Ltd. | Identifying and recommending potential uses of computing systems based on their patterns of use |
US8080874B1 (en) | 2007-09-14 | 2011-12-20 | Google Inc. | Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween |
US7895242B2 (en) * | 2007-10-31 | 2011-02-22 | Microsoft Corporation | Compressed storage management |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
KR101420798B1 (ko) * | 2007-11-23 | 2014-07-17 | 삼성전자주식회사 | 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말 |
US8307115B1 (en) | 2007-11-30 | 2012-11-06 | Silver Peak Systems, Inc. | Network memory mirroring |
US8631203B2 (en) * | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8275945B2 (en) | 2008-02-05 | 2012-09-25 | Spansion Llc | Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer |
US8352671B2 (en) | 2008-02-05 | 2013-01-08 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US8442052B1 (en) | 2008-02-20 | 2013-05-14 | Silver Peak Systems, Inc. | Forward packet recovery |
US9600261B2 (en) | 2008-03-25 | 2017-03-21 | Qualcomm Incorporated | Apparatus and methods for widget update scheduling |
US9069575B2 (en) * | 2008-03-25 | 2015-06-30 | Qualcomm Incorporated | Apparatus and methods for widget-related memory management |
US9269059B2 (en) | 2008-03-25 | 2016-02-23 | Qualcomm Incorporated | Apparatus and methods for transport optimization for widget content delivery |
US9747141B2 (en) | 2008-03-25 | 2017-08-29 | Qualcomm Incorporated | Apparatus and methods for widget intercommunication in a wireless communication environment |
US9110685B2 (en) | 2008-03-25 | 2015-08-18 | Qualcomm, Incorporated | Apparatus and methods for managing widgets in a wireless communication environment |
GB2460464A (en) * | 2008-05-30 | 2009-12-02 | Symbian Software Ltd | Memory paging control method using two cache parts, each maintained using a FIFO algorithm |
US10164861B2 (en) | 2015-12-28 | 2018-12-25 | Silver Peak Systems, Inc. | Dynamic monitoring and visualization for network health characteristics |
US9717021B2 (en) | 2008-07-03 | 2017-07-25 | Silver Peak Systems, Inc. | Virtual network overlay |
US8743683B1 (en) | 2008-07-03 | 2014-06-03 | Silver Peak Systems, Inc. | Quality of service using multiple flows |
US10805840B2 (en) | 2008-07-03 | 2020-10-13 | Silver Peak Systems, Inc. | Data transmission via a virtual wide area network overlay |
US20100030963A1 (en) * | 2008-08-04 | 2010-02-04 | Sandisk Il Ltd. | Managing storage of cached content |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US8356128B2 (en) * | 2008-09-16 | 2013-01-15 | Nvidia Corporation | Method and system of reducing latencies associated with resource allocation by using multiple arbiters |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US9727473B2 (en) * | 2008-09-30 | 2017-08-08 | Intel Corporation | Methods to communicate a timestamp to a storage system |
US20100088459A1 (en) * | 2008-10-06 | 2010-04-08 | Siamak Arya | Improved Hybrid Drive |
US8370552B2 (en) * | 2008-10-14 | 2013-02-05 | Nvidia Corporation | Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions |
US9542431B2 (en) * | 2008-10-24 | 2017-01-10 | Microsoft Technology Licensing, Llc | Cyclic commit transaction protocol |
JP4764472B2 (ja) * | 2008-12-02 | 2011-09-07 | 株式会社日立製作所 | データベース管理方法、データベース管理プログラム、および、データベース管理装置 |
KR101618634B1 (ko) * | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
KR101056560B1 (ko) | 2009-02-11 | 2011-08-11 | (주)인디링스 | 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치 |
US20100241726A1 (en) * | 2009-03-23 | 2010-09-23 | Riverbed Technology, Inc. | Virtualized Data Storage Over Wide-Area Networks |
US8698823B2 (en) * | 2009-04-08 | 2014-04-15 | Nvidia Corporation | System and method for deadlock-free pipelining |
US8135912B2 (en) | 2009-05-18 | 2012-03-13 | Hola Networks, Ltd. | System and method of increasing cache size |
EP2433229A4 (en) * | 2009-05-21 | 2016-11-30 | Vijay Sathya | SYSTEM AND METHOD FOR ENABLING THE IDENTIFICATION OF A RIGHT EVENT TONE ACCORDING TO A PUSH-RELATED EVENT |
KR101562973B1 (ko) | 2009-05-22 | 2015-10-26 | 삼성전자 주식회사 | 메모리 장치 및 메모리 장치의 동작 방법 |
US8291503B2 (en) * | 2009-06-05 | 2012-10-16 | Microsoft Corporation | Preloading modules for performance improvements |
WO2010144624A1 (en) | 2009-06-09 | 2010-12-16 | Google Inc. | Programming of dimm termination resistance values |
US20100325372A1 (en) * | 2009-06-17 | 2010-12-23 | Housty Oswin E | Parallel training of dynamic random access memory channel controllers |
CN101656789B (zh) * | 2009-07-01 | 2012-09-05 | 中兴通讯股份有限公司 | 手机实现管理应用程序信息的方法及应用程序管理器 |
US8516166B2 (en) * | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US9223134B2 (en) | 2010-02-28 | 2015-12-29 | Microsoft Technology Licensing, Llc | Optical imperfections in a light transmissive illumination system for see-through near-eye display glasses |
US9097891B2 (en) | 2010-02-28 | 2015-08-04 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses including an auto-brightness control for the display brightness based on the brightness in the environment |
US8488246B2 (en) | 2010-02-28 | 2013-07-16 | Osterhout Group, Inc. | See-through near-eye display glasses including a curved polarizing film in the image source, a partially reflective, partially transmitting optical element and an optically flat film |
US9182596B2 (en) | 2010-02-28 | 2015-11-10 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses with the optical assembly including absorptive polarizers or anti-reflective coatings to reduce stray light |
US20120249797A1 (en) | 2010-02-28 | 2012-10-04 | Osterhout Group, Inc. | Head-worn adaptive display |
US10180572B2 (en) | 2010-02-28 | 2019-01-15 | Microsoft Technology Licensing, Llc | AR glasses with event and user action control of external applications |
US9341843B2 (en) | 2010-02-28 | 2016-05-17 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses with a small scale image source |
US8467133B2 (en) | 2010-02-28 | 2013-06-18 | Osterhout Group, Inc. | See-through display with an optical assembly including a wedge-shaped illumination system |
US9097890B2 (en) | 2010-02-28 | 2015-08-04 | Microsoft Technology Licensing, Llc | Grating in a light transmissive illumination system for see-through near-eye display glasses |
US9366862B2 (en) | 2010-02-28 | 2016-06-14 | Microsoft Technology Licensing, Llc | System and method for delivering content to a group of see-through near eye display eyepieces |
US9229227B2 (en) | 2010-02-28 | 2016-01-05 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses with a light transmissive wedge shaped illumination system |
US8477425B2 (en) | 2010-02-28 | 2013-07-02 | Osterhout Group, Inc. | See-through near-eye display glasses including a partially reflective, partially transmitting optical element |
US8482859B2 (en) | 2010-02-28 | 2013-07-09 | Osterhout Group, Inc. | See-through near-eye display glasses wherein image light is transmitted to and reflected from an optically flat film |
US9759917B2 (en) | 2010-02-28 | 2017-09-12 | Microsoft Technology Licensing, Llc | AR glasses with event and sensor triggered AR eyepiece interface to external devices |
US20150309316A1 (en) | 2011-04-06 | 2015-10-29 | Microsoft Technology Licensing, Llc | Ar glasses with predictive control of external device based on event input |
US9091851B2 (en) | 2010-02-28 | 2015-07-28 | Microsoft Technology Licensing, Llc | Light control in head mounted displays |
US9134534B2 (en) | 2010-02-28 | 2015-09-15 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses including a modular image source |
US9128281B2 (en) | 2010-09-14 | 2015-09-08 | Microsoft Technology Licensing, Llc | Eyepiece with uniformly illuminated reflective display |
US9285589B2 (en) | 2010-02-28 | 2016-03-15 | Microsoft Technology Licensing, Llc | AR glasses with event and sensor triggered control of AR eyepiece applications |
US8472120B2 (en) | 2010-02-28 | 2013-06-25 | Osterhout Group, Inc. | See-through near-eye display glasses with a small scale image source |
EP2539759A1 (en) | 2010-02-28 | 2013-01-02 | Osterhout Group, Inc. | Local advertising content on an interactive head-mounted eyepiece |
US9129295B2 (en) | 2010-02-28 | 2015-09-08 | Microsoft Technology Licensing, Llc | See-through near-eye display glasses with a fast response photochromic film system for quick transition from dark to clear |
US8712984B2 (en) * | 2010-03-04 | 2014-04-29 | Microsoft Corporation | Buffer pool extension for database server |
US9235531B2 (en) | 2010-03-04 | 2016-01-12 | Microsoft Technology Licensing, Llc | Multi-level buffer pool extensions |
US9229773B1 (en) * | 2010-06-30 | 2016-01-05 | Crimson Corporation | Determining when to perform a maintenance operation on a computing device based on status of a currently running process or application on the computing device |
US8380703B2 (en) * | 2010-07-26 | 2013-02-19 | International Business Machines Corporation | Feedback loop between a query optimizer and a cache manager |
KR20120041582A (ko) * | 2010-10-21 | 2012-05-02 | 삼성전자주식회사 | 스냅샷 이미지 분할 처리 장치 및 스냅샷 이미지 분할 처리 방법 |
US8812788B2 (en) | 2010-11-09 | 2014-08-19 | Lsi Corporation | Virtual cache window headers for long term access history |
US10394757B2 (en) | 2010-11-18 | 2019-08-27 | Microsoft Technology Licensing, Llc | Scalable chunk store for data deduplication |
US8244938B2 (en) * | 2010-11-23 | 2012-08-14 | International Business Machines Corporation | Sliding write window mechanism for writing data |
TWI417721B (zh) * | 2010-11-26 | 2013-12-01 | Etron Technology Inc | 衰減熱資料之方法 |
US8862845B2 (en) * | 2010-12-06 | 2014-10-14 | Xiotech Corporation | Application profiling in a data storage array |
US9235500B2 (en) | 2010-12-07 | 2016-01-12 | Microsoft Technology Licensing, Llc | Dynamic memory allocation and relocation to create low power regions |
US8959293B2 (en) * | 2010-12-14 | 2015-02-17 | Microsoft Corporation | Data deduplication in a virtualization environment |
US9336380B2 (en) * | 2010-12-15 | 2016-05-10 | Microsoft Technology Licensing Llc | Applying activity actions to frequent activities |
WO2012095901A1 (ja) * | 2011-01-12 | 2012-07-19 | パナソニック株式会社 | プログラム実行装置およびコンパイラシステム |
JP2012173870A (ja) * | 2011-02-18 | 2012-09-10 | Toshiba Corp | 半導体装置及びメモリ保護方法 |
WO2012114443A1 (ja) * | 2011-02-21 | 2012-08-30 | 富士通株式会社 | プロセッサ管理方法 |
US8818960B2 (en) * | 2011-03-18 | 2014-08-26 | Microsoft Corporation | Tracking redo completion at a page level |
US9886899B2 (en) * | 2011-05-17 | 2018-02-06 | Ignis Innovation Inc. | Pixel Circuits for AMOLED displays |
US8176437B1 (en) | 2011-07-18 | 2012-05-08 | Google Inc. | Responsiveness for application launch |
US9063775B2 (en) | 2011-09-01 | 2015-06-23 | Microsoft Technology Licensing, Llc | Event aggregation for background work execution |
US9032413B2 (en) | 2011-09-01 | 2015-05-12 | Microsoft Technology Licensing, Llc | Decoupling background work and foreground work |
US8990171B2 (en) | 2011-09-01 | 2015-03-24 | Microsoft Corporation | Optimization of a partially deduplicated file |
US20130067346A1 (en) * | 2011-09-09 | 2013-03-14 | Microsoft Corporation | Content User Experience |
JP2013061847A (ja) * | 2011-09-14 | 2013-04-04 | Sony Corp | 情報処理装置および情報処理方法 |
US9130991B2 (en) | 2011-10-14 | 2015-09-08 | Silver Peak Systems, Inc. | Processing data packets in performance enhancing proxy (PEP) environment |
US9626224B2 (en) | 2011-11-03 | 2017-04-18 | Silver Peak Systems, Inc. | Optimizing available computing resources within a virtual environment |
US9104606B2 (en) * | 2011-11-22 | 2015-08-11 | Landy Wang | Temporal standby list |
EP2798499B1 (en) | 2011-12-27 | 2020-11-18 | Intel Corporation | Methods and apparatus to manage workload memory allocation |
US9164803B2 (en) | 2012-01-20 | 2015-10-20 | Microsoft Technology Licensing, Llc | Background task resource control |
US9201810B2 (en) * | 2012-01-26 | 2015-12-01 | Microsoft Technology Licensing, Llc | Memory page eviction priority in mobile computing devices |
CN103377067B (zh) * | 2012-04-13 | 2019-01-25 | 富泰华工业(深圳)有限公司 | 应用程序加载系统及方法 |
KR101955978B1 (ko) * | 2012-05-23 | 2019-03-08 | 엘지전자 주식회사 | 영상 표시 장치 및 영상 표시 장치의 메모리 관리 방법 |
US8990534B2 (en) | 2012-05-31 | 2015-03-24 | Apple Inc. | Adaptive resource management of a data processing system |
US9032168B2 (en) * | 2012-05-31 | 2015-05-12 | Htc Corporation | Memory management methods and systems for mobile devices |
US8856447B2 (en) | 2012-07-17 | 2014-10-07 | Apple Inc. | Converting memory accesses near barriers into prefetches |
US9009401B2 (en) | 2012-07-27 | 2015-04-14 | International Business Machines Corporation | Multi-updatable least recently used mechanism |
US8930631B2 (en) * | 2012-08-20 | 2015-01-06 | International Business Machines Corporation | Efficient management of computer memory using memory page associations and memory |
US9043570B2 (en) * | 2012-09-11 | 2015-05-26 | Apple Inc. | System cache with quota-based control |
US20140082324A1 (en) * | 2012-09-14 | 2014-03-20 | Reuven Elhamias | Method and Storage Device for Using File System Data to Predict Host Device Operations |
US9069669B2 (en) | 2012-10-11 | 2015-06-30 | Industrial Technology Research Institute | Method and computer system for memory management on virtual machine |
US9489236B2 (en) | 2012-10-31 | 2016-11-08 | Microsoft Technology Licensing, Llc | Application prioritization |
US9195601B2 (en) | 2012-11-26 | 2015-11-24 | International Business Machines Corporation | Selective release-behind of pages based on repaging history in an information handling system |
US8812744B1 (en) | 2013-03-14 | 2014-08-19 | Microsoft Corporation | Assigning priorities to data for hybrid drives |
US9626126B2 (en) | 2013-04-24 | 2017-04-18 | Microsoft Technology Licensing, Llc | Power saving mode hybrid drive access management |
US9946495B2 (en) | 2013-04-25 | 2018-04-17 | Microsoft Technology Licensing, Llc | Dirty data management for hybrid drives |
US10102148B2 (en) | 2013-06-13 | 2018-10-16 | Microsoft Technology Licensing, Llc | Page-based compressed storage management |
US9286097B2 (en) | 2013-07-23 | 2016-03-15 | Intel Corporation | Switching a first OS in a foreground to a standby state in response to a system event and resuming a second OS from a background |
EP3025230A4 (en) * | 2013-07-23 | 2017-04-05 | Intel Corporation | Operating system switching method and apparatus |
US20150052326A1 (en) * | 2013-08-19 | 2015-02-19 | International Business Machines Corporation | User-controlled paging |
KR101489870B1 (ko) | 2013-08-19 | 2015-02-06 | 성균관대학교산학협력단 | 가상화 장치 및 그 메모리 관리 방법 |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US9569385B2 (en) | 2013-09-09 | 2017-02-14 | Nvidia Corporation | Memory transaction ordering |
US9317350B2 (en) | 2013-09-09 | 2016-04-19 | International Business Machines Corporation | Method and apparatus for faulty memory utilization |
US9645934B2 (en) | 2013-09-13 | 2017-05-09 | Samsung Electronics Co., Ltd. | System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer |
US9317421B2 (en) * | 2013-09-27 | 2016-04-19 | Intel Corporation | Memory management |
CN104572493A (zh) | 2013-10-23 | 2015-04-29 | 华为技术有限公司 | 一种存储器资源优化方法和装置 |
JP6064237B2 (ja) * | 2013-11-22 | 2017-01-25 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | メモリデータを移行するための方法、コンピュータ、および装置 |
KR102168169B1 (ko) | 2014-01-07 | 2020-10-20 | 삼성전자주식회사 | 비휘발성 메모리 시스템의 메모리 맵핑 방법 및 이를 제공하는 시스템 |
US20150242432A1 (en) * | 2014-02-21 | 2015-08-27 | Microsoft Corporation | Modified Memory Compression |
US9678797B2 (en) | 2014-03-10 | 2017-06-13 | Microsoft Technology Licensing, Llc | Dynamic resource management for multi-process applications |
US9684625B2 (en) * | 2014-03-21 | 2017-06-20 | Microsoft Technology Licensing, Llc | Asynchronously prefetching sharable memory pages |
US9460001B2 (en) * | 2014-03-21 | 2016-10-04 | Veritas Technologies Llc | Systems and methods for identifying access rate boundaries of workloads |
US10108622B2 (en) | 2014-03-26 | 2018-10-23 | International Business Machines Corporation | Autonomic regulation of a volatile database table attribute |
US9633233B2 (en) | 2014-05-07 | 2017-04-25 | Sandisk Technologies Llc | Method and computing device for encrypting data stored in swap memory |
US9710198B2 (en) * | 2014-05-07 | 2017-07-18 | Sandisk Technologies Llc | Method and computing device for controlling bandwidth of swap operations |
US9928169B2 (en) | 2014-05-07 | 2018-03-27 | Sandisk Technologies Llc | Method and system for improving swap performance |
US9665296B2 (en) | 2014-05-07 | 2017-05-30 | Sandisk Technologies Llc | Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications |
US20150324132A1 (en) * | 2014-05-07 | 2015-11-12 | Sandisk Technologies Inc. | Method and Computing Device for Fast Erase of Swap Memory |
KR102254099B1 (ko) | 2014-05-19 | 2021-05-20 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
KR102295769B1 (ko) | 2014-05-20 | 2021-08-30 | 삼성전자주식회사 | 스토리지 컨트롤러 및 상기 스토리지 컨트롤러의 동작 방법 |
CN108897761B (zh) * | 2014-05-27 | 2023-01-13 | 华为技术有限公司 | 一种聚簇存储方法及装置 |
US9948496B1 (en) | 2014-07-30 | 2018-04-17 | Silver Peak Systems, Inc. | Determining a transit appliance for data traffic to a software service |
US9696933B2 (en) * | 2014-08-15 | 2017-07-04 | International Business Machines Corporation | Virtual machine manager initiated page-in of kernel pages |
US9875344B1 (en) | 2014-09-05 | 2018-01-23 | Silver Peak Systems, Inc. | Dynamic monitoring and authorization of an optimization device |
WO2016057670A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Hardware-assisted memory compression management using page filter and system mmu |
WO2016057668A1 (en) | 2014-10-07 | 2016-04-14 | Google Inc. | Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption |
US9690928B2 (en) | 2014-10-25 | 2017-06-27 | Mcafee, Inc. | Computing platform security methods and apparatus |
US9558078B2 (en) | 2014-10-28 | 2017-01-31 | Microsoft Technology Licensing, Llc | Point in time database restore from storage snapshots |
US9880760B2 (en) * | 2014-10-30 | 2018-01-30 | Sandisk Technologies Llc | Managing data stored in a nonvolatile storage device |
US9846604B2 (en) | 2014-11-14 | 2017-12-19 | International Business Machines Corporation | Analyzing data sources for inactive data |
CN104503923B (zh) * | 2014-11-21 | 2017-08-11 | 华中科技大学 | 一种非对称磁盘阵列高速缓存调度方法 |
EP3200083B1 (en) * | 2014-12-23 | 2019-03-13 | Huawei Technologies Co. Ltd. | Resource scheduling method and related apparatus |
CA2876379A1 (en) | 2014-12-29 | 2016-06-29 | Adam J. Storm | Memory management in presence of asymmetrical memory transfer costs |
US9632924B2 (en) | 2015-03-02 | 2017-04-25 | Microsoft Technology Licensing, Llc | Using memory compression to reduce memory commit charge |
US9921977B2 (en) | 2015-03-11 | 2018-03-20 | International Business Machines Corporation | Privilege based memory pinning mechanism |
US9916264B2 (en) | 2015-03-11 | 2018-03-13 | International Business Machines Corporation | Privilege based memory pinning mechanism |
MA41915A (fr) * | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
US10037270B2 (en) | 2015-04-14 | 2018-07-31 | Microsoft Technology Licensing, Llc | Reducing memory commit charge when compressing memory |
US9898349B2 (en) | 2015-06-23 | 2018-02-20 | International Business Machines Corporation | Management of asynchronous and synchronous resource requests |
KR102443069B1 (ko) | 2015-08-12 | 2022-09-14 | 삼성전자주식회사 | 어플리케이션을 실행하기 위한 장치 및 방법 |
US9875058B2 (en) | 2015-11-05 | 2018-01-23 | International Business Machines Corporation | Prioritizing pages to transfer for memory sharing |
US9753670B2 (en) | 2015-11-05 | 2017-09-05 | International Business Machines Corporation | Prioritizing memory pages to copy for memory migration |
KR102529171B1 (ko) | 2016-02-26 | 2023-05-04 | 삼성전자주식회사 | 메모리 장치 진단 시스템 |
US9823854B2 (en) * | 2016-03-18 | 2017-11-21 | Qualcomm Incorporated | Priority-based access of compressed memory lines in memory in a processor-based system |
US10228855B2 (en) | 2016-03-30 | 2019-03-12 | International Business Machines Corporation | Tuning memory across database clusters for distributed query stability |
US10884950B2 (en) * | 2016-05-16 | 2021-01-05 | International Business Machines Corporation | Importance based page replacement |
US10432484B2 (en) | 2016-06-13 | 2019-10-01 | Silver Peak Systems, Inc. | Aggregating select network traffic statistics |
US10379862B2 (en) | 2016-06-28 | 2019-08-13 | International Business Machines Corporation | Effectiveness and prioritization of prefeteches |
US9967056B1 (en) | 2016-08-19 | 2018-05-08 | Silver Peak Systems, Inc. | Forward packet recovery with constrained overhead |
JP6786342B2 (ja) * | 2016-10-18 | 2020-11-18 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
US10539996B2 (en) * | 2016-11-28 | 2020-01-21 | Qualcomm Incorporated | WiFi memory power minimization |
US10481999B2 (en) * | 2016-12-05 | 2019-11-19 | Microsoft Technology Licensing, Llc | Partial process recording |
US10776408B2 (en) * | 2017-01-11 | 2020-09-15 | International Business Machines Corporation | Natural language search using facets |
WO2018136838A1 (en) * | 2017-01-19 | 2018-07-26 | Gill David C | Systems and methods for transferring musical drum samples from slow memory to fast memory |
US10771394B2 (en) | 2017-02-06 | 2020-09-08 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows on a first packet from DNS data |
US11044202B2 (en) | 2017-02-06 | 2021-06-22 | Silver Peak Systems, Inc. | Multi-level learning for predicting and classifying traffic flows from first packet data |
US10257082B2 (en) | 2017-02-06 | 2019-04-09 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows |
US10892978B2 (en) | 2017-02-06 | 2021-01-12 | Silver Peak Systems, Inc. | Multi-level learning for classifying traffic flows from first packet data |
US10540287B2 (en) * | 2017-05-12 | 2020-01-21 | Samsung Electronics Co., Ltd | Spatial memory streaming confidence mechanism |
US10824371B2 (en) | 2017-06-19 | 2020-11-03 | Micron Technology, Inc. | Managed NAND data compression |
JP7003470B2 (ja) | 2017-07-18 | 2022-01-20 | 富士通株式会社 | 情報処理装置、情報処理方法、及びプログラム |
US10561930B2 (en) | 2017-07-21 | 2020-02-18 | Spinner Systems, Inc. | Device to provide network access to entertainment machine |
EP4020940A1 (en) | 2017-08-28 | 2022-06-29 | Bright Data Ltd. | Content fetching by selecting tunnel devices |
US11190374B2 (en) | 2017-08-28 | 2021-11-30 | Bright Data Ltd. | System and method for improving content fetching by selecting tunnel devices |
KR20190026231A (ko) * | 2017-09-04 | 2019-03-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11212210B2 (en) | 2017-09-21 | 2021-12-28 | Silver Peak Systems, Inc. | Selective route exporting using source type |
US11698964B2 (en) * | 2017-12-13 | 2023-07-11 | Intel Corporation | Malware detection in memory |
JP6689471B2 (ja) | 2017-12-18 | 2020-04-28 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
US10637721B2 (en) | 2018-03-12 | 2020-04-28 | Silver Peak Systems, Inc. | Detecting path break conditions while minimizing network overhead |
CN110294372B (zh) * | 2018-03-23 | 2023-02-28 | 奥的斯电梯公司 | 一种无线信号装置、电梯服务请求系统和方法 |
CN109614050B (zh) * | 2018-12-11 | 2022-03-04 | 浪潮(北京)电子信息产业有限公司 | 磁盘休眠状态控制方法、装置、设备及可读存储介质 |
WO2020174460A2 (en) | 2019-02-25 | 2020-09-03 | Luminati Networks Ltd. | System and method for url fetching retry mechanism |
CN109977168B (zh) * | 2019-03-18 | 2021-11-05 | 武汉达梦数据库股份有限公司 | 基于数据页预加载的数据库数据同步方法及设备 |
EP3935792A4 (en) | 2019-04-02 | 2022-11-30 | Bright Data Ltd. | SYSTEM AND METHOD FOR MANAGING A NON-DIRECT URL RETRACTION SERVICE |
US10936480B2 (en) * | 2019-05-31 | 2021-03-02 | Microsoft Technology Licensing, Llc | Memory management for multiple process instances |
KR102116858B1 (ko) * | 2019-09-06 | 2020-05-29 | 한국과학기술정보연구원 | 스케줄링장치 및 그 동작 방법 |
CN113590500A (zh) * | 2020-04-30 | 2021-11-02 | 华为技术有限公司 | 一种内存管理方法及终端设备 |
US11321225B2 (en) * | 2020-05-22 | 2022-05-03 | International Business Machines Corporation | Reducing the memory load time for logic simulator by leveraging architecture simulator |
US11481281B2 (en) | 2020-06-11 | 2022-10-25 | International Business Machines Corporation | Predictive fog computing in an edge device |
US11836507B2 (en) * | 2020-06-18 | 2023-12-05 | Dell Products L.P. | Prioritizing the pre-loading of applications with a constrained memory budget using contextual information |
US11429590B2 (en) * | 2020-10-15 | 2022-08-30 | International Business Machines Corporation | Protecting against invalid memory references |
US20220171656A1 (en) * | 2020-12-02 | 2022-06-02 | Unifabrix Ltd. | Adjustable-precision multidimensional memory entropy sampling for optimizing memory resource allocation |
CN112486559B (zh) * | 2020-12-15 | 2023-06-20 | 青岛海尔科技有限公司 | 产品调整方法、装置和存储介质及电子装置 |
US11983532B2 (en) | 2020-12-30 | 2024-05-14 | International Business Machines Corporation | Optimize bound information accesses in buffer protection |
US11966331B2 (en) | 2020-12-30 | 2024-04-23 | International Business Machines Corporation | Dedicated bound information register file for protecting against out-of-bounds memory references |
US11700289B2 (en) * | 2021-05-31 | 2023-07-11 | Citrix Systems, Inc. | User experience analysis for multi-channel remote desktop environments |
CN114218153B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
CN115328751B (zh) * | 2022-08-10 | 2023-03-14 | 北京同创永益科技发展有限公司 | 一种面向混沌工程实验动态构建观测页面的方法 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US687266A (en) * | 1899-10-09 | 1901-11-26 | Albert Raymond | Pneumatic separator. |
SU737952A1 (ru) * | 1978-01-20 | 1980-05-30 | Предприятие П/Я А-3162 | Устройство управлени буферной пам тью |
JPS57161933A (en) * | 1981-03-31 | 1982-10-05 | Fujitsu Ltd | Automatic program editing system |
JPH06100981B2 (ja) * | 1983-12-28 | 1994-12-12 | 株式会社日立製作所 | 記憶階層制御方式 |
JPH02273843A (ja) * | 1989-04-14 | 1990-11-08 | Nec Corp | スワッピング装置 |
JPH03147157A (ja) * | 1989-11-02 | 1991-06-24 | Nec Eng Ltd | 情報処理装置 |
RU2010317C1 (ru) * | 1990-07-20 | 1994-03-30 | Институт точной механики и вычислительной техники им.С.А.Лебедева РАН | Устройство управления буферной памятью |
JPH04205634A (ja) * | 1990-11-30 | 1992-07-27 | Matsushita Electric Ind Co Ltd | 記憶装置制御方法 |
US5263136A (en) * | 1991-04-30 | 1993-11-16 | Optigraphics Corporation | System for managing tiled images using multiple resolutions |
JPH0559537U (ja) * | 1992-01-10 | 1993-08-06 | 三菱電機株式会社 | 計算機 |
US6185629B1 (en) | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
US5897660A (en) | 1995-04-07 | 1999-04-27 | Intel Corporation | Method for managing free physical pages that reduces trashing to improve system performance |
US5717954A (en) * | 1995-10-13 | 1998-02-10 | Compaq Computer Corporation | Locked exchange FIFO |
US5809280A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive ahead FIFO with LRU replacement |
US5758056A (en) * | 1996-02-08 | 1998-05-26 | Barr; Robert C. | Memory system having defective address identification and replacement |
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
FR2770952B1 (fr) * | 1997-11-12 | 2000-01-21 | Adl Systeme Sa | Dispositif de tele-ecriture |
US7007072B1 (en) | 1999-07-27 | 2006-02-28 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US6272534B1 (en) * | 1998-03-04 | 2001-08-07 | Storage Technology Corporation | Method and system for efficiently storing web pages for quick downloading at a remote device |
US6959318B1 (en) * | 1998-03-06 | 2005-10-25 | Intel Corporation | Method of proxy-assisted predictive pre-fetching with transcoding |
US6425057B1 (en) * | 1998-08-27 | 2002-07-23 | Hewlett-Packard Company | Caching protocol method and system based on request frequency and relative storage duration |
JP3175764B2 (ja) * | 1998-11-06 | 2001-06-11 | 日本電気株式会社 | メモリスケジューリング方法及びメモリスケジューリングプログラムを格納する記憶媒体 |
US6378043B1 (en) * | 1998-12-31 | 2002-04-23 | Oracle Corporation | Reward based cache management |
US6237065B1 (en) * | 1999-05-14 | 2001-05-22 | Hewlett-Packard Company | Preemptive replacement strategy for a caching dynamic translator |
US6317806B1 (en) * | 1999-05-20 | 2001-11-13 | International Business Machines Corporation | Static queue and index queue for storing values identifying static queue locations |
US6425097B1 (en) * | 1999-05-27 | 2002-07-23 | Sun Microsystems, Inc. | Method and apparatus for testing an impedance-controlled input/output (I/O) buffer in a highly efficient manner |
US6366996B1 (en) | 2000-01-24 | 2002-04-02 | Pmc-Sierra, Inc. | Page memory management in non time critical data buffering applications |
US6418510B1 (en) * | 2000-09-14 | 2002-07-09 | International Business Machines Corporation | Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD) |
RU2189073C2 (ru) * | 2000-10-13 | 2002-09-10 | Курский государственный технический университет | Система распределения ресурсов |
US7043524B2 (en) | 2000-11-06 | 2006-05-09 | Omnishift Technologies, Inc. | Network caching system for streamed applications |
US6651141B2 (en) * | 2000-12-29 | 2003-11-18 | Intel Corporation | System and method for populating cache servers with popular media contents |
US6546472B2 (en) * | 2000-12-29 | 2003-04-08 | Hewlett-Packard Development Company, L.P. | Fast suspend to disk |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
JP2002342037A (ja) * | 2001-05-22 | 2002-11-29 | Fujitsu Ltd | ディスク装置 |
KR100389867B1 (ko) | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6922765B2 (en) | 2001-06-21 | 2005-07-26 | International Business Machines Corporation | Method of allocating physical memory space having pinned and non-pinned regions |
US6742097B2 (en) | 2001-07-30 | 2004-05-25 | Rambus Inc. | Consolidation of allocated memory to reduce power consumption |
US20030110357A1 (en) * | 2001-11-14 | 2003-06-12 | Nguyen Phillip V. | Weight based disk cache replacement method |
US6782453B2 (en) * | 2002-02-12 | 2004-08-24 | Hewlett-Packard Development Company, L.P. | Storing data in memory |
JP3901002B2 (ja) * | 2002-04-23 | 2007-04-04 | 日本電気株式会社 | ページングシステム、ページング方法、および、ページングプログラム |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
-
2002
- 2002-12-20 US US10/325,591 patent/US6910106B2/en not_active Expired - Lifetime
-
2003
- 2003-09-16 AU AU2003246330A patent/AU2003246330A1/en not_active Abandoned
- 2003-09-22 CA CA2723077A patent/CA2723077C/en not_active Expired - Fee Related
- 2003-09-22 CA CA2442188A patent/CA2442188C/en not_active Expired - Fee Related
- 2003-09-26 MX MXPA03008766A patent/MXPA03008766A/es active IP Right Grant
- 2003-09-29 CN CNB031434061A patent/CN1327369C/zh not_active Expired - Fee Related
- 2003-09-30 BR BRPI0304297A patent/BRPI0304297B1/pt not_active IP Right Cessation
- 2003-10-02 AT AT03022573T patent/ATE526631T1/de not_active IP Right Cessation
- 2003-10-02 ES ES03022573T patent/ES2371454T3/es not_active Expired - Lifetime
- 2003-10-02 EP EP03022573A patent/EP1406174B8/en not_active Expired - Lifetime
- 2003-10-04 KR KR1020030069015A patent/KR100972723B1/ko active IP Right Grant
- 2003-10-06 RU RU2003129662/09A patent/RU2348067C2/ru not_active IP Right Cessation
- 2003-10-06 JP JP2003347507A patent/JP4724362B2/ja not_active Expired - Lifetime
- 2003-10-06 RU RU2008140263/08A patent/RU2482535C2/ru not_active IP Right Cessation
-
2005
- 2005-06-09 US US11/150,686 patent/US7698513B2/en not_active Expired - Fee Related
- 2005-06-09 US US11/150,728 patent/US7185155B2/en not_active Expired - Lifetime
-
2010
- 2010-04-13 US US12/759,536 patent/US8539186B2/en not_active Expired - Fee Related
- 2010-04-13 US US12/759,526 patent/US8032723B2/en not_active Expired - Fee Related
- 2010-04-29 AU AU2010201717A patent/AU2010201717B2/en not_active Ceased
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2554851C2 (ru) * | 2009-05-05 | 2015-06-27 | МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи | Захват и загрузка состояний операционной системы |
RU2607984C1 (ru) * | 2012-12-25 | 2017-01-11 | Хуавей Текнолоджиз Ко., Лтд. | Способ и соответствующее устройство для определения режима управления страницей совместно используемой виртуальной памяти |
US10019178B2 (en) | 2012-12-25 | 2018-07-10 | Huawei Technologies Co., Ltd. | Method and related device for determining management mode of shared virtual memory page |
RU2662394C2 (ru) * | 2013-12-23 | 2018-07-25 | Интел Корпорейшн | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения |
RU2615682C2 (ru) * | 2014-07-04 | 2017-04-06 | Сяоми Инк. | Способ, устройство, сервер и терминал для посещения веб-страницы |
RU2681409C1 (ru) * | 2015-02-04 | 2019-03-06 | Хуавей Текнолоджиз Ко., Лтд. | Система и способ синхронизации памяти в многоядерной системе |
US10452686B2 (en) | 2015-02-04 | 2019-10-22 | Huawei Technologies Co., Ltd. | System and method for memory synchronization of a multi-core system |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2348067C2 (ru) | Способы и устройства для упреждающего управления памятью | |
US8959515B2 (en) | Task scheduling policy for limited memory systems | |
US9767140B2 (en) | Deduplicating storage with enhanced frequent-block detection | |
US9058212B2 (en) | Combining memory pages having identical content | |
US8112755B2 (en) | Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources | |
US9864777B2 (en) | Table partitioning and storage in a database | |
RU2671049C2 (ru) | Выгрузка в файловой системе | |
US7194594B2 (en) | Storage area management method and system for assigning physical storage areas to multiple application programs | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US10210097B2 (en) | Memory system and method for operating the same | |
KR101051504B1 (ko) | 저전력과 입출력 성능 향상을 위한 n-블록 선반입 기반의 하이브리드 하드디스크 입출력 시스템 | |
KR102334237B1 (ko) | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 | |
BR122016001493B1 (pt) | Métodos e mecanismos para gerenciamento proativo de memória |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20201007 |