Использование внешних устройств памяти для улучшения производительности системы

Иллюстрации

Показать все

Изобретение относится к компьютерным системам. Техническим результатом является улучшение производительности вычислительного устройства. Изобретение нацелено на систему и способ, который использует внешние устройства памяти, чтобы кэшировать секторы из запоминающего устройства с вращательным движением (например, накопителя на жестких дисках), для улучшения производительности системы. Когда внешнее устройство памяти (EMD) подсоединяется к вычислительному устройству или в сеть, к которой это вычислительное устройство подсоединено, система распознает это EMD и заполняет EMD дисковыми секторами. Система направляет I/O запросы чтения, направленные к дисковому сектору, к EMD кэшу вместо действительного дискового сектора. Использование устройств EMD увеличивает производительность и продуктивность в системах вычислительных устройств за стоимость, равную части стоимости добавления памяти к вычислительному устройству. 7 н. и 20 з.п. ф-лы, 4 ил.

Реферат

Область техники, к которой относится изобретение

Это изобретение относится, в общем, к компьютерным системам и, более конкретно, относится к улучшению производительности компьютерных систем.

Уровень техники

Вычислительные устройства, такие как персональные компьютеры, игровые пульты, интеллектуальные телефоны и подобное, часто используют отнимающий много времени процесс, чтобы загружать и кэшировать в памяти страницы, используемые приложениями. Страницы обычно хранятся в энергонезависимых носителях с вращательным движением, таких как магнитный жесткий диск (например, накопитель на жестких дисках). Однако процессор устройства исполняет инструкции только из адресуемой памяти, такой как DRAM или какой-то другой тип энергозависимой электронной памяти. Операционные системы, используемые в вычислительных устройствах, кэшируют в памяти страницы, используемые приложениями, так что приложения не должны часто загружать страницы из носителей с вращательным движением.

Передача страниц из накопителя на жестких дисках является медленной, особенно, когда приложение загружает большой файл. Это также преобладает при восстановлении компьютерной системы из спящего режима. Значимым фактором для времени передачи является скорость разгона привода дисков. Относительно небольшие диски, вращающиеся с относительно медленным RPM, требуют 5-6 секунд, чтобы разогнаться и стать готовым к использованию. Большие диски, такие как устройства с несколькими жесткими дисками внутри, и диски, вращающиеся при более быстрых величинах RPM, чтобы разогнаться, требуют 10-12 секунд или больше.

Эта проблема ухудшается по мере того, как приложения растут в размерах, чтобы включить в себя средства (fixes) безопасности и стать более надежными. Эти приложения для работы часто требуют больше памяти для работы без необходимости непрерывно переносить данные в и из хранящего носителя с вращательным движением. Однако обновление памяти машин часто является слишком дорогостоящим для осуществления для корпораций и конечных пользователей или находится за пределами уровня квалификации индивидуальных пользователей. Хотя стоимость самой памяти является низкой, труд и время простоя, связанные с физическим вскрытием каждой машины и добавлением RAM, могут стоить несколько сотен долларов.

Другая проблема, где обновление памяти машин часто является слишком дорогостоящим для осуществления, это когда от системы требуется только время от времени исполнять приложения, более большие и более сложные, чем обыкновенно. Например, бухгалтерии компании может потребоваться исполнять приложения объединения всего несколько раз в месяц. Чтобы работать эффективно, более большие и более сложные приложения требуют больше памяти. Хотя стоимость самой памяти является низкой, труд и время простоя, связанные с физическим вскрытием каждой машины и добавлением RAM, могут стоить несколько сотен долларов. Эта затрата может не оправдывать эту дополнительную память для того малого количества раз, когда приложение исполняется.

Сущность изобретения

Это изобретение ориентировано на улучшенную архитектуру администрирования памяти, которая предоставляет систему, способ и механизм, который использует внешние (энергозависимые или энергонезависимые) устройства памяти, чтобы кэшировать секторы из жесткого диска (т.е. дисковые секторы) и/или более медленных компонентов памяти, для улучшения производительности системы. Когда внешнее устройство памяти (EMD) подсоединяется к вычислительному устройству или к сети, к которой подсоединено вычислительное устройство, система распознает это EMD и заполняет это EMD дисковыми секторами и/или секторами памяти. Направленные к сектору I/O запросы чтения система направляет к EMD кэшу вместо действительного сектора. Если EMD подсоединено к локальной шине USB2, время доступа может быть в двадцать раз быстрее времени чтения из жесткого диска. Использование устройств EMD увеличивает производительность и продуктивность в системах вычислительных устройств за стоимость, равную доли стоимости добавления памяти к вычислительному устройству. Дополнительно, потребительские устройства, такие как Xbox®, могут исполнять программное обеспечение с более широкими возможностями с помощью памяти устройств EMD.

Система обнаруживает, когда некоторое EMD используется впервые по отношению к вычислительному устройству. Обнаруживается тип EMD, и устанавливается драйвер, который используется, чтобы кэшировать дисковые секторы в EMD. Драйвер использует EMD как асинхронный кэш, кэшируя секторы из любого диска и/или более медленного устройства памяти в системе. Если нет никакого предварительного знания о том, какие секторы являются ценными в смысле частого доступа, для заполнения EMD кэша система может использовать данные из вычислительной машины, чтобы определять, какие секторы используются. Альтернативно, система заполняет EMD кэш некоторым конкретным сектором, когда к этому конкретному сектору осуществляется доступ в течение работы. В следующий раз, когда к этому конкретному сектору должен осуществляться доступ для операции чтения, система направляет эту операцию чтения обращаться к копии из EMD.

Система может отслеживать шаблоны использования и определять, к каким дисковым секторам доступ осуществляется наиболее часто. При последующих использованиях EMD система кэширует в EMD те секторы, к которым доступ осуществляется наиболее часто. Если EMD присутствует, EMD может предварительно заполняться данными в течение запуска операционной системы, когда вычислительное устройство подключается к питанию.

Дополнительные признаки и преимущества этого изобретения будут видны из последующего подробного описания иллюстративных вариантов осуществления, которое продолжается со ссылкой на сопровождающие чертежи.

Краткое описание чертежей

Наряду с тем, что прилагаемая формула изобретения подробно излагает признаки настоящего изобретения, это изобретение вместе с его объектами и преимуществами может пониматься наилучшим образом из последующего подробного описания, взятого в связи с сопровождающими чертежами, из которых:

фиг.1 - это блок-схема, в общем, показывающая иллюстративную компьютерную систему, в которой может быть реализовано настоящее изобретение;

фиг.2 - это блок-схема, представляющая архитектуру администрирования памяти в соответствии с аспектом этого изобретения; и

фиг.3a-3b - это блок-схема последовательности операций, в общем, показывающая этапы, которые выполняет это изобретение при использовании внешних устройств памяти, чтобы улучшить производительность системы.

Осуществление изобретения

Это изобретение нацелено на улучшенную архитектуру администрирования памяти, которая предоставляет систему, способ и механизм, который использует внешние (энергозависимые или энергонезависимые) устройства памяти, чтобы кэшировать секторы из жесткого диска (т.е. дисковые секторы) или из более медленных устройств памяти, для улучшения производительности системы. Например, многие классы портативных вычислительных устройств не имеют никаких накопителей на жестких дисках или запоминающих устройств с вращательным движением, но все же реализуют иерархические архитектуры памяти. Эти портативные вычислительные устройства извлекут большую выгоду из этого изобретения в том, что оно позволит им исполнять более большие и более сложные приложения масштаба предприятия внутри офисного помещения. С появлением 802.11n, 200-500Мб беспроводное соединение будет доступным для любого беспроводного устройства, и использование внешних устройств памяти и/или серверов базирующейся на сети памяти улучшит производительность системы.

Внешняя память используется для кэширования данных из устройств, которые являются, в общем, более медленными в отношении доступа к данным, так что в отношении времени доступа к данным, используемым приложениями/операционными системами, доступ может осуществляться быстрее, тем самым улучшая производительность. Для более старых вычислительных устройств, в которых добавление фактического RAM является слишком дорогостоящим, использование внешних устройств памяти увеличит производительность и продуктивность на более старых устройствах за часть стоимости и даст возможность пользователям получить в качестве результата улучшение надежности, безопасности и продуктивности более новых программных приложений на существующем аппаратном обеспечении. Например, потребительские устройства, такие как Xbox®, выиграют, исполняя программное обеспечение с более широкими возможностями в смысле улучшенной графики и производительности. Дополнительно, количество памяти, требуемое для этой цели, вероятно намного меньше, чем количество памяти, требуемое для обновления системы до некоторого заданного уровня.

Обращаясь к чертежам, где одинаковые ссылочные позиции указывают на одинаковые элементы, это изобретение показывается как реализующееся в подходящей вычислительной среде. Хотя не это требуется, это изобретение будет описываться в общем контексте машинно-исполнимых инструкций, таких как программные модули, исполняемые персональным компьютером. В общем, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Более того, специалисты в данной области должны принять во внимание, что это изобретение может применяться на практике с другими конфигурациями компьютерных систем, включая сюда ручные устройства, многопроцессорные системы, микропроцессорную или программируемую бытовую электронику, сетевые PC, миникомпьютеры, компьютеры-мэйнфреймы и подобное. Это изобретение также может использоваться на практике в распределенных вычислительных средах, где задачи выполняются удаленными обрабатывающими устройствами, которые соединены через сеть связи. В распределенной вычислительной среде программные модули могут располагаться как в локальных, так и в удаленных запоминающих хранящих устройствах.

Фиг.1 показывает пример подходящей среды 100 вычислительной системы, в которой это изобретение может реализовываться. Среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и не предполагает предлагать какое-либо ограничение в отношении объема использования или функциональности этого изобретения. Также не должна вычислительная среда 100 интерпретироваться как имеющая какую-либо зависимость или требование, относящиеся к какому-либо или комбинации компонентов, показанных в иллюстративной операционной среде 100.

Это изобретение является работоспособным с многочисленными другими средами вычислительных систем или конфигурациями общего назначения или специального назначения. Примеры хорошо известных вычислительных систем, сред и/или конфигураций, которые могут подходить для использования с этим изобретением, включают в себя, но не ограничены этим: персональные компьютеры, серверные компьютеры, ручные или портативные устройства, планшетные устройства, многопроцессорные системы, микропроцессорные системы, приставки к телевизору, программируемую бытовую электронику, сетевые PC, игровые пульты, интеллектуальные телефоны, персональные помощники данных, миникомпьютеры, компьютеры-мэйнфреймы, распределенные вычислительные среды, которые включают в себя любые из вышеперечисленных систем или устройств, и подобное.

Это изобретение может описываться в общем контексте машинно-исполнимых инструкций, таких как программные модули, исполняемые компьютером. В общем, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Это изобретение также может использоваться на практике в распределенных вычислительных средах, где задачи выполняются удаленными обрабатывающими устройствами, которые соединены через сеть связи. В распределенной вычислительной среде программные модули могут располагаться в локальных и/или удаленных компьютерных запоминающих носителях, включая сюда запоминающие хранящие устройства.

Со ссылкой на Фиг.1 иллюстративная система для реализации этого изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не ограничены этим, обрабатывающее устройство 120, системную память 130 и системную шину 121, которая соединяет различные компоненты системы, включающие в себя системную память, с обрабатывающим устройством 120. Системная шина 121 может являться любым из нескольких типов структур шин, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из многообразия архитектур шин. В качестве примера, и не ограничения, такие архитектуры включают в себя шину промышленной стандартной архитектуры (ISA), шину микроканальной архитектуры (MCA), шину расширенной ISA (EISA), локальную шину ассоциации по стандартам в области видеоэлектроники (VESA), универсальную последовательную шину (USB) и шину соединения периферийных компонент (PCI), также известную как шина расширения.

Компьютер 110 обычно включает в себя многообразие машинно-читаемых носителей. Машинно-читаемые носители могут быть любыми доступными носителями, к которым компьютер 110 может осуществлять доступ, и включают в себя как энергозависимые, так и энергонезависимые носители, и съемные и несъемные носители. В качестве примера, и не ограничения, машинно-читаемые носители могут содержать компьютерные запоминающие носители и носители передачи данных. Компьютерные запоминающие носители включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машинно-читаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные запоминающие носители включают в себя, но не ограничены этим, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, универсальные цифровые диски (DVD) или другое оптическое дисковое хранилище, магнитные кассеты, магнитную ленту, магнитное дисковое хранилище или другие магнитные хранящие устройства, или любой другой носитель, который может использоваться для хранения требуемой информации и к которому компьютер 110 может осуществлять доступ. Носители передачи данных обычно реализуют машинно-читаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущее колебание, или другом транспортном механизме и включают в себя любые носители доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более своих характеристик установленными или измененными таким образом, чтобы кодировать информацию в этом сигнале. В качестве примера, и не ограничения, носители передачи данных включают в себя проводные носители, такие как проводная сеть или прямое проводное соединение, и беспроводные носители, такие как акустические, RF, инфракрасные и другие беспроводные носители. Комбинации любого из вышеперечисленного также должны включаться в рамки объема машинно-читаемых носителей.

Системная память 130 включает в себя компьютерные запоминающие носители в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ROM) 131 и оперативное запоминающее устройство (RAM) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые помогают переносить информацию между элементами внутри компьютера 110, как в течение запуска, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые непосредственно доступны для и/или в настоящем обрабатываются обрабатывающим устройством 120. В качестве примера, и не ограничения, Фиг.1 показывает операционную систему 134, прикладные программы 135, другие программные модули 136 и программные данные 137.

Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители. Только в качестве примера Фиг.1 показывает привод 141 жесткого диска, который считывает из или записывает на несъемные энергонезависимые магнитные носители привод 151 магнитного диска, который считывает из или записывает на съемный энергонезависимый магнитный диск 152, и привод 155 оптических дисков, который считывает из или записывает на съемный энергонезависимый оптический диск 156, такой как CD-ROM или другие оптические носители. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители, которые могут использоваться в иллюстративной операционной среде, включают в себя, но не ограничены этим, кассеты магнитной ленты, платы флэш-памяти, универсальные цифровые диски, цифровую видеоленту, твердотельное RAM, твердотельное ROM и подобное. Привод 141 жесткого диска обычно подсоединяется к системной шине 121 через интерфейс несъемной памяти, такой как интерфейс 140, и привод 151 магнитного диска и привод 155 оптических дисков обычно подсоединяются к системной шине 121 с помощью интерфейса съемной памяти, такого как интерфейс 150.

Приводы и их ассоциированные компьютерные запоминающие носители, обсуждавшиеся выше и показанные на Фиг.1, предоставляют хранилище машинно-читаемых инструкций, структур данных, программных модулей и других данных (например, мультимедиаданных, аудиоданных, видеоданных и т.д.) для компьютера 110. На Фиг.1, например, привод 141 жесткого диска показан как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и программные данные 147. Отметим, что эти компоненты могут либо быть такими же как, либо отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 здесь даны другие ссылочные позиции, чтобы показать, что, по меньшей мере, они являются другими копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162, указывающее устройство 161, обычно указываемое как мышь, шаровой указатель или сенсорная панель, микрофон 163 и планшетный или электронный цифровой преобразователь 164. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровую приставку, спутниковую параболическую антенну, сканер или подобное. Эти и другие устройства ввода часто подсоединяются к обрабатывающему устройству 120 через интерфейс 160 пользовательского ввода, который соединен с системной шиной, но могут подсоединяться с помощью другого интерфейса и структур шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также подсоединяется к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. Монитор 191 также может объединяться с панелью сенсорного экрана или подобным. Отметим, что монитор и/или панель сенсорного экрана может физически подсоединяться к корпусу, в котором заключено вычислительное устройство 110, как, например, в персональном компьютере планшетного типа. В дополнение, компьютеры, такие как вычислительное устройство 110, также могут включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут подсоединяться через периферийный интерфейс 194 вывода или подобное.

Компьютер 110 может работать в сетевой среде, используя логические связи с одним или более удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим общим сетевым узлом и обычно включает в себя многие или все элементы, описанные выше по отношению к компьютеру 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 устройства и находящийся в состоянии связи с администратором 204 внешних устройств памяти (EMD). EMD администратор 204 находится под администратором 200 памяти и над физическим аппаратным обеспечением 2061, 2062, 208 и сетью 210. Физическое аппаратное обеспечение может являться накопителем на жестких дисках, приводом мультимедиа, таким как CD привод, DVD приводом или приводом комбинации CD/DVD, оптическим диском и т.д., локально расположенным или удаленно доступным через сеть. Наряду с тем, что EMD администратор 204 показан отдельно, следует понимать, что EMD администратор 204 может быть объединен с администратором 200 памяти. EMD администратор 204 обнаруживает, когда внешнее устройство 212 памяти (EMD) является доступным, с помощью стандартных способов, таких как технология plug-n-play и подобное. EMD 212 может быть в форме съемного твердотельного энергонезависимого устройства памяти, которое может подсоединяться к вычислительному устройству, такого как устройство согласно спецификации CompactFlash, как поддерживается ассоциацией CompactFlash, или подобного. Оно также может быть в форме энергозависимого устройства памяти. EMD может фактически содержаться внутри существующих снаружи подсоединяемых изделий, таких как мышь, клавиатура или сетевое подсоединяемое устройство, и может иметься множество таких устройств, подсоединенных в одно и то же время. Другое альтернативное местоположение внешнего устройства памяти - это в удаленном местоположении в сети 210 или части сетевой инфраструктуры, такой как память в сервере.

Настоящее изобретение усиливает память, доступную для использования в EMD, для сохранения в памяти дисковых секторов, которые вероятно будут использоваться приложениями, и направляет I/O запросы, которые направлены к данным, находящимся в дисковых секторах, скопированных в EMD память, чтобы они считывались из EMD памяти вместо сектора на диске.

Со ссылкой на Фиг.3a и 3b теперь будут описываться этапы, которые выполняет это изобретение, чтобы использовать внешние устройства памяти. В последующем описании секторы, используемые для описания этого изобретения, будут постоянно находиться на накопителе 206 на жестких дисках. Наряду с тем, что это изобретение описывается в вышеуказанном контексте, оно не предполагается быть ограничивающим, так как специалисты в данной области должны понимать, что дисковые секторы из других устройств, для которых необходим разгон, таких как CD/DVD устройство 208 и подобных, могут кэшироваться на диск. Секторы, которые кэшируются, также могут постоянно находиться на более медленных устройствах памяти. Наряду с тем, что Фиг.3a и 3b показывают этапы последовательно, следует понимать, что эти этапы могут предприниматься в другом порядке и/или параллельно. EMD администратор 204 обнаруживает, когда EMD 212 является доступным (этап 300). Один подход, чтобы обнаруживать какое-либо EMD, это интерфейс обнаружения, описанный в патентной заявке США 10/837,986, зарегистрированной 3 мая 2004, озаглавленной "Non-Volatile Memory Cache Performance Improvement", этим включенной сюда по ссылке в ее полноте. Могут использоваться другие способы, такие как стандартные способы технологии plug and play. Определяется размер и тип памяти, доступной в EMD 212. Если EMD 212 используется в вычислительном устройстве в первый раз, для EMD 212 устанавливается драйвер (этап 302). Драйвер используется, чтобы осуществлять с EMD 212 связь, и использует EMD в качестве асинхронного блокового кэша, чтобы кэшировать секторы из дисков 206 в системе. Обновление кэша является асинхронным в случае, когда EMD может являться медленным, и ожидание, когда он будет обновлен, может иметь результатом увеличенное время ожидания для исходного запроса чтения.

Если другие EMD являются доступными для использования, система назначает приоритеты, как эти EMD будут заполняться кэширующими дисковыми секторами, которые более вероятно будут использоваться на устройствах EMD, которые имеют более лучшие пропускную способность и время ожидания по сравнению с другими доступными EMD (этап 304). Некоторые вычислительные устройства отслеживают использование диска, как например, к каким дисковым секторам наиболее часто осуществляют доступ операционная система и приложения, последние времена доступа, шаблоны доступа, частоту доступа и подобное. Если эта предыстория доступна, EMD заполняется, базируясь на этой предыстории (этап 306). Если предыстория не доступна, EMD заполняется дисковыми секторами, к которым осуществляют доступ приложения (или вычислительное устройство) в течение времени, когда приложение осуществляет чтение с диска (этап 308). Отметим, что EMD может заполняться в формате, который требуется этим EMD. Информация использования (т.е. предыстория) дисковых секторов отслеживается для определения, какие секторы должны зеркально отображаться в EMD в следующий раз, когда это EMD будет доступным для использования. Используемые алгоритмы аналогичны алгоритмам, используемым для упреждающего администрирования страничной памяти, как описывается в патентной заявке США номер 10/325,591, зарегистрированной 20 декабря 2002, озаглавленной "Methods and Mechanisms for Proactive Memory Management", которая этим включается сюда по ссылке в ее полноте. Различие состоит в том, что вместо определения, какие страницы в памяти являются полезными для кэширования, настоящее изобретение определяет, какие дисковые секторы являются полезными для кэширования.

В одном варианте осуществления, где вычислительное устройство находится в сетевой системе, сетевой сервер сохраняет информацию о вычислительном устройстве и применяет удаленные алгоритмы, которые помогают EMD администратору 204 в администрировании локальной памяти для вычислительного устройства. Этот вариант осуществления является особенно подходящим для клиентов нижнего класса, которые не имеют памяти или компьютерной мощности, чтобы определять, какие дисковые секторы должны кэшироваться. Удаленные алгоритмы выполняют детальный анализ шаблонов данных, шаблонов доступа и т.д. в клиенте и производят более оптимальные результаты, чем может производить клиент нижнего класса.

В течение работы приложение или вычислительное устройство могут записывать в дисковый сектор, который копируется в EMD. Приложение или вычислительное устройство никогда не записывает в EMD. Вместо этого, операция записи применяется к дисковому сектору. После того как операция записи завершается, дисковый сектор копируется назад в EMD (этап 310). Этот подход используется для того, чтобы, если EMD удаляется, никакие данные не потерялись, как, например, было бы в удаленной файловой системе, когда ссылка на удаленную файловую систему станет неработоспособной; вместо этого вычислительное устройство считывает с диска вместо EMD. Как результат, это изобретение является более устойчивым к проблемам соединения, таким как потерянные соединения, удаление устройств EMD и т.д.

Всякий раз, когда принимается I/O запрос чтения, EMD администратор 204 осуществляет проверку, чтобы определить, направлен ли запрос к дисковому сектору, который был скопирован в память устройства EMD 212. Если запрос чтения направлен к дисковому сектору, который был скопирован в память устройства EMD, EMD администратор 204 перенаправляет этот запрос чтения к EMD (этап 312). Результат состоит в том, что этот запрос чтения выполняется быстрее, чем если бы этот запрос чтения выполнялся на жестком диске 206.

EMD 212 может удаляться пользователем в любое время. Когда EMD удаляется, система обнаруживает это удаление. Если доступны другие устройства EMD, оставшиеся устройства EMD заполняются заново (этап 314), если EMD, которое было удалено, не являлось самым медленным доступным EMD. Если другие EMD не доступны (или, если EMD, которое было удалено, являлось самым медленным EMD), данные читаются из жесткого диска (этап 316). Этапы 300-316 повторяются всякий раз, когда некоторое EMD добавляется или удаляется, и этапы 310 и 312 повторяются так долго, пока EMD является доступным для использования.

Заметим, что если EMD является энергонезависимым, EMD память может предварительно заполняться секторами, содержащими конфигурационные данные, в течение выключения питания или в спящем режиме. В течение подключения к питанию или восстановления, содержимое EMD может считываться, пока диск разгоняется. Использование этой технологии может уменьшить время загрузки и время пробуждения из спящего режима для компьютерной системы. Дополнительные детали могут быть найдены в патентной заявке США номер 10/186,164, зарегистрированной 6/27/2002, озаглавленной "Apparatus and Method to Decrease Boot Time and Hibernate Awaken Time of a Computer System", этим включенной сюда по ссылке в ее полноте.

Теперь, когда все этапы описаны, будут обсуждаться улучшения производительности. Ключевые факторы, которые определяют улучшения производительности, которые можно ожидать от внешних устройств памяти, это время ожидания передачи и пропускная способность для EMD и его шины (например, USB1/2, PCMCIA, Ethernet 100BaseT и т.д.), размер внешней памяти, политики, используемые в администрировании кэша, и сценарии и рабочие нагрузки, относящиеся к тому, как внешняя память используется.

Время ожидания передачи и пропускная способность для большинства обычных шин, к которым EMD может подсоединяться, варьируют. Ожидается, что шина становится первичным узким местом для большинства операций, если EMD состоит из регулярного RAM, упакованного как устройство, которое может подсоединяться к конкретной шине. Время ожидания шины и пропускная способность для USB1, USB2 и PCI/PCMCIA оценивается с помощью выпуска небуферизованных дисковых вводов/выводов возрастающих размеров (4КБ, 8КБ, 16КБ, 32КБ и 64КБ), которые должны удачно обратиться к буферу дорожек (который обычно является регулярной памятью) диска, подсоединенного к этой шине. Следующие значения из таблицы 1 были выведены с помощью простой пригонки строки к временам для передачи размеров вводов/выводов.

Таблица 1
Тип шины Время установки (мкс) Время передачи каждого КБ после установки (мкс) Полное время передачи 4КБ (мкс)
PCI/PCMCIA (шина платы) 100 15 160
USB2 400 30 520
USB1 4000 1000 8000

Чтобы иметь смысл в качестве дискового кэша, копирование данных из EMD должно быть более быстрым, чем обращение за этим к диску. 4КБ произвольный дисковый I/O, который включает в себя поиск (seek), занимает в пределах от 5-15 мс на обычных дисках настольного компьютера и портативного компьютера. Предположим, что для 4КБ дискового I/O с поиском используется 10 мс, данные могли бы извлекаться в 60 раз быстрее из EMD кэша на PCMCIA или в 20 раз быстрее из EMD на USB2. В целом, USB2 кажется очень подходящей шиной для подсоединения устройств EMD.

Следует заметить, что одна проблема с USB1 состоит в том, что времена установки 4 мс сделают маловероятными какие-либо приросты производительности. Это можно обойти с помощью содержания изохронного канала передачи всегда открытым. Получение 4КБ из EMD на USB1 тогда обычно будет в два раза быстрее, чем получение их из диска с поиском. Вследствие низкой скорости пропускной способности через USB1, все еще будет быстрее обращаться к диску за 16КБ, 32КБ и 64КБ вводами/выводами, которые обычно встречаются на клиентских системах. Однако USB1 кэш, используемый только для страничного файла и метаданных файловой системы, к которым обычно осуществляется доступ с 4КБ произвольными вводами/выводами, может все же предоставлять увеличение производительности.

Принятие USB2 началось только после выпуска пакета обновления 1 (service pack 1) для Windows XP®. Большинство 64МБ и 128МБ систем, которые больше всего выиграют от EMD, обычно не имеют USB2. Однако эти системы обычно в действительности имеют сетевые платы 100BaseT Ethernet. Времена передачи, равные 10МБ/с, будут достаточными для значительного увеличения производительности от EMD. EMD может присоединяться в качестве пропускающего сетевого устройства для компьютера или даже может вставляться в сетевые коммутаторы для улучшения производительности малой сети компьютеров. Выход за пределы коммутатора приносит много проблем надежности и безопасности вследствие совместно используемой сетевой полосы пропускания, но может осуществляться.

Как с любым кэшем, фактические политики, используемые в управлении тем, какие данные содержать в кэше, являются важным фактором в определении результирующих приростов производительности. Если EMD используется как блоковый кэш для лежащих в основе дисков и других устройств, этот EMD кэш может заполняться, когда завершаются чтения из лежащего в основе устройства, так же, как когда издаются [запросы] записи из приложений и файловых систем. Как описывалось ранее, данные в EMD кэше должны обновляться асинхронно, чтобы избежать увеличения времени запросов исходного устройства. Если приходит запрос на некоторый диапазон, который является асинхронно обновляющимся, он может просто передаваться вниз лежащему в основе устройству. Если асинхронное обновление является ожидающим выполнения, для того же диапазона должен иметься очень недавний запрос, который инициировал это обновление, и данные для упомянутого диапазона, вероятно, будут кэшироваться в устройстве (например, буфере дорожек) или контроллере.

Обычно блоковые кэши адм