ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
[0001] Память для компьютерных систем традиционно была разделена на энергозависимую и энергонезависимую память. Энергозависимая память требует питания для поддержания данных, хранящихся в ней. Энергонезависимая память может удерживать данные, даже когда отсутствует питание. Ранее, компьютеры использовали как энергозависимую, так и энергонезависимую память, так как каждая обладала определенными преимуществами. Например, энергозависимая память, как правило, много быстрее энергонезависимой памяти, тогда как энергонезависимая память часто стоит много меньше из расчета на бит. Достижения в технологии энергонезависимой памяти сокращают разрыв в скорости между энергозависимой и энергонезависимой памятью, в то время как энергонезависимая память поддерживает преимущество сохранения данных во время потери питания.
[0002] Заявленный в данном документе изобретение не ограничивается вариантами осуществления, которые решают любые недостатки или которые работают только в средах, таких как те, что описаны выше. Наоборот, данные предпосылки создания изобретения предоставлены только для иллюстрации одной примерной области технологии, в которой могут быть реализованы на практике некоторые описываемые в данном документе варианты осуществления.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Вкратце, аспекты описываемого в данном документе изобретения, относятся к запоминающим системам и памяти с привязками. В аспектах, драйвер файловой системы или другой компонент может отправлять запрос контроллеру памяти на создание привязки (alias) между двумя блоками памяти. Один из блоков памяти может быть использован для основной памяти, тогда как другой из блоков памяти может быть использован для запоминающей системы. В ответ, контроллер памяти может создавать привязку между блоками памяти. До тех пор, пока привязка не разорвана, когда контроллер памяти принимает запрос данных из блока в основной памяти, контроллер памяти может отвечать с помощью данных из блока памяти, используемого для запоминающей системы. Контроллер памяти также может реализовывать другие действия, как описывается в данном документе.
[0004] Это краткое изложение сущности изобретения приведено для идентификации вкратце некоторых аспектов изобретения, которые дополнительно описываются ниже в Подробном Описании. Как не подразумевается, что данное краткое изложение сущности изобретения идентифицирует ключевые или неотъемлемые признаки заявленного изобретения, так и не подразумевается, что оно будет использовано для ограничения объема заявленного изобретения.
[0005] Фраза «описываемое в данном документе изобретение» относится к изобретению, которое описывается в Подробном Описании до тех пор, пока контекст явно не указывает иное. Понятие «аспекты» должно читаться как «по меньшей мере, один аспект». Не подразумевается, что идентификация аспектов изобретения, описываемого в Подробном Описании, идентифицирует ключевые или неотъемлемые признаки заявленного изобретения.
[0006] Описанные выше аспекты и прочие аспекты описываемого в данном документе изобретения иллюстрируются в качестве примера и не ограничиваются на сопроводительных фигурах, на которых подобные цифровые обозначения указывают сходные элементы и на которых:
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] Фигура 1 является структурной схемой, представляющей собой примерную вычислительную среду общего назначения, в которую может быть включено описываемое в данном документе изобретение;
[0008] Фиг. 2 и 5 являются структурными схемами, которые в целом представляют собой энергонезависимую память в соответствии с аспектами описываемого в данном документе изобретения;
[0009] Фиг. 3 является блок-схемой, которая в целом представляет собой различные состояния привязок между подблоками блоков памяти с Фиг. 2 в соответствии с аспектами описываемого в данном документе изобретения;
[0010] Фиг. 4 и 6 являются структурными схемами, которые в целом представляют собой примерные компоненты систем, выполненных в соответствии с аспектами описываемого в данном документе изобретения;
[0011] Фиг. 7 является блок-схемой, которая в целом представляет собой примерные действия, которые могут происходить в связи с созданием привязки с точки зрения контроллера памяти в соответствии с аспектами описываемого в данном документе изобретения;
[0012] Фиг. 8 является блок-схемой, которая в целом представляет собой примерные действия, которые могут происходить в связи с получением данных применительно к блоку с привязкой с точки зрения контроллера памяти в соответствии с аспектами описываемого в данном документе изобретения; и
[0013] Фиг. 9 является блок-схемой, которая показывает примерные действия, которые могут происходить на компоненте, который осуществляет доступ к памяти через контроллер памяти в соответствии с аспектами описываемого в данном документе изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
ОПРЕДЕЛЕНИЯ
[0014] Используемое в данном документе понятие «включает в себя» и его варианты должны читаться как открытые понятия, что означает «включает в себя, но не ограничивается». Понятие «или» должно читаться как «и/или» до тех пор, пока контекст явно не диктует иное. Понятие «на основании» должно читаться как «на основании, по меньшей мере, частично». Понятия «один вариант осуществления» и «вариант осуществления» должны читаться как «по меньшей мере, один вариант осуществления». Понятие «другой вариант осуществления» должен читаться как «по меньшей мере, один другой вариант осуществления».
[0015] Используемые в данном документе формы единственного числа являются включающими один или более из указываемого элемента или действия. В частности, в формуле изобретения ссылка на элемент в целом означает, что присутствует, по меньшей мере, один такой элемент, а ссылка на действие означает, что выполняется, по меньшей мере, один экземпляр действия.
[0016] Иногда в данном документе могут быть использованы понятия «первый», «второй», «третий» и т.д. Без дополнительного контекста, не подразумевается, что использование этих понятий в формуле изобретения предполагает очередность, а вместо этого используются в целях идентификации. Например, фраза «первая версия» и «вторая версия» не обязательно означает, что первая версия является самой первой версией или была создана до второй версии или даже, что первая версия запрашивается или работает перед второй версией. Наоборот, эти фразы используются для идентификации разных версий.
[0017] Заголовки используются только для удобства; информация по заданной теме может найдена за пределами раздела, чей заголовок указывает эту тему.
[0018] Прочие определения, явные или не явные, могут быть включены ниже.
ПРИМЕРНАЯ РАБОЧАЯ СРЕДА
[0019] Фиг. 1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой могут быть реализованы аспекты описываемого в данном документе изобретения. Среда 100 вычислительной системы является лишь одним примером подходящей вычислительной среды и не предполагается, что выдвигает любое ограничение как на объем использования, так и функциональность аспектов описываемого в данном документе изобретения. Вычислительная среда 100 не должна толковаться как имеющая какую-либо зависимость или требование, касающееся любого одного или сочетания компонентов, иллюстрируемых в примерной рабочей среде 100.
[0020] Аспекты описываемого в данном документе изобретения являются рабочими с многочисленными другими общего назначения или специализированными средами вычислительной системы или конфигурациями. Примеры общеизвестных вычислительных систем, сред, или конфигураций, которые могут быть подходящими для использования с аспектами описываемого в данном документе изобретения содержат: персональные компьютеры, серверные компьютеры -- либо в качестве «голого железа», либо в качестве виртуальных машин --, переносные или портативные устройства, микропроцессорные системы, основанные на микроконтроллерах системы, телевизионные абонентские приставки, программируемую или не программируемую потребительскую электронику, сетевые PC, микрокомпьютеры, компьютеры класса мэйнфрейм, персональные цифровые помощники (PDA), игровые устройства, принтеры, приборы, включающие в себя телевизионный абонентский блок, мультимедийный центр, или другие приборы, встроенные в автомобиль или прикрепляемые вычислительные устройства, прочие мобильные устройства, телефонные устройства, включая сотовые телефоны, беспроводные телефоны, и проводные телефоны, распределенные вычислительные среды, которые включают в себя любые из вышеприведенных систем или устройств, и подобное. Несмотря на то, что различные варианты осуществления могут быть ограничены одним или более вышеприведенными устройствами, подразумевается, что понятие компьютер охватывает вышеописанные устройства до тех пор, пока не указывается иное.
[0021] Аспекты описываемого в данном документе изобретения могут быть описаны в общем контексте исполняемых компьютером инструкций, таких как программные модули, исполняемые компьютером. В целом, программные модули включают в себя подпрограммы, программы, объекты, компоненты, структуры данных, и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Аспекты описываемого в данном документе изобретения также могут быть реализованы на практике в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые связаны посредством сети связи. В распределенной вычислительной среде, программные модули могут размещаться как на локальных, так и удаленных компьютерных запоминающих носителях информации, включая запоминающие устройства памяти.
[0022] В качестве альтернативы, или в дополнение, описываемая в данном документе функциональность может быть выполнена, по меньшей мере, частично посредством одного или более аппаратных логических компонентов. Например, и без ограничения, иллюстративные типы аппаратных логических компонентов, которые могут быть использованы, включают в себя Программируемые Вентильные Матрицы (FPGA), Проблемно-ориентированные Интегральные Микросхемы (ASIC), Проблемно-ориентированные Стандартные Продукты (ASSP), системы класса Система на Кристалле (SOC), Сложные Программируемые Логические Устройства, и подобное.
[0023] Со ссылкой на Фиг. 1, примерная система для реализации аспектов описываемого в данном документе изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компьютер может включать в себя любое электронное устройство, которое выполнено с возможностью исполнения инструкций. Компоненты компьютера 110 могут включать в себя компонент 120 обработки, системную память 130, и одну или более системные шины (представленные посредством системной шины 121), которая объединяет различные компоненты системы, включая системную память с компонентом 120 обработки. Системная шина 121 может быть любой из нескольких типов структур шины, включая шину памяти или контроллер памяти, периферийную шину, и локальную шину, используя любую из многообразия архитектур шины. В качестве примера, а не ограничения, такие архитектуры включают в себя шину Архитектуры Промышленного Стандарта (ISA), шину Микроканальной Архитектуры (MCA), шину Улучшенной ISA (EISA), локальную шину Ассоциации по Стандартизации в Области Видеотехники (VESA), шину Межсоединения Периферийных Компонентов (PCI), но также известную как шина второго уровня, шина Расширенного Межсоединения Периферийных Компонентов (PCI-X), Ускоренный Графический Порт (AGP), и экспресс PCI (PCIe).
[0024] Компонент 120 обработки может быть соединен с устройством 122 аппаратного обеспечения безопасности. Устройство 122 обеспечения безопасности может хранить и иметь возможность генерирования криптографических ключей, которые могут быть использованы для обеспечения безопасности различных аспектов компьютера 110. В одном варианте осуществления, устройство 122 обеспечения безопасности может быть выполнено в виде чипа Модуля Доверенной Платформы (TMP), Устройства Обеспечения Безопасности TPM или подобного.
[0025] Компьютер 110, как правило, включает в себя многообразие машиночитаемых носителей информации. Машиночитаемые носители информации могут быть любыми доступными носителями информации, доступ к которым может быть осуществлен посредством компьютера 110, и включают в себя энергозависимые и энергонезависимые носители информации, и съемные и несъемные носители информации. В качестве примера, а не ограничения, машиночитаемые носители информации могут быть выполнены в виде компьютерных запоминающих носителей информации и средств связи.
[0026] Компьютерные запоминающие носители информации включают в себя как энергозависимые, так и энергонезависимые, съемные и не съемные носители информации, реализованные любым способом или по любой технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули, или иные данные. Компьютерные запоминающие носители информации включают в себя RAM, ROM, EEPROM, твердотельное хранилище, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD), Blu-ray Диск (BD) или другое хранилище на оптическом диске, магнитные кассеты, магнитную ленту, хранилище на магнитном диске или другие магнитные запоминающие устройства, или любой другой носитель информации, который может быть использован для хранения требуемой информации, и доступ к которому может быть осуществлен посредством компьютера 110. Компьютерные запоминающие носители информации не включают в себя средства связи.
[0027] Средства связи, как правило, воплощают машиночитаемые инструкции, структуры данных, программные модули, или прочие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включают в себя любые средства доставки информации. Понятие «модулированный сигнал данных» означает сигнал, одна или более характеристики которого установлены или изменены таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводная сеть или прямое проводное соединение, и беспроводные средства, такие как акустические, RF, инфракрасные и прочие беспроводные средства. Сочетания любых из вышеприведенных также включаются в объем машиночитаемых носителей информации.
[0028] Системная память 130 может включать в себя компьютерные запоминающие носители информации в форме энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство 131 (ROM) и запоминающее устройство 132 с произвольной выборкой (RAM). Энергонезависимая память может быть заменена на некоторую или все из ROM 131 и/или RAM 132. Например, мемристорная память, память на фазовых переходах (PCM), или некий другой тип энергонезависимой памяти может быть использован вместо, или в дополнение к, ROM 131 и/или RAM 132.
[0029] Базовая система 133 ввода/вывода (BIOS), содержащая основные подпрограммы, которые способствуют переносу информации между элементами внутри компьютера 110, как например во время запуска, как правило хранится в ROM 131. RAM 132, как правило, содержит данные и/или программные модули, которые сразу доступны и/или которыми в настоящее время манипулирует компонент 120 обработки. В качестве примера, а не ограничения, Фиг. 1 иллюстрирует операционную систему 134, прикладные программы 135, прочие программные модули 136, и программные данные 137.
[0030] Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные запоминающие носители информации. Лишь в качестве примера, Фиг. 1 иллюстрирует накопитель 141 на жестком диске, который считывает с или записывает на несъемные, энергонезависимые магнитные носители информации, накопитель 151 на магнитном диске, который считывает с и записывает на съемный, энергонезависимый магнитный диск 152, и накопитель 152 на оптическом диске, который считывает с и записывает на съемный, энергонезависимый оптический диск 156, такой как CD ROM, DVD, BD, или другие оптические носители информации.
[0031] В одном варианте осуществления, мемристорная память, память на фазовых переходах, или некоторый другой тип энергонезависимой памяти может быть использован вместо, или в дополнение к, накопителю 141 на жестком диске.
[0032] Другие съемные/несъемные, энергозависимые/ энергонезависимые компьютерные запоминающие носители информации, которые могут быть использованы в примерной рабочей среде, включают в себя кассеты с магнитной лентой, карты флэш-памяти и другие твердотельные запоминающие устройства, цифровые универсальные диски, другие оптические диски, цифровые видеокассеты, твердотельное RAM, твердотельное ROM, и подобное. Накопитель 141 на жестком диске может быть соединен с системной шиной 121 посредством интерфейса 140, а накопитель 151 на магнитном диске и накопитель 155 на оптическом диске могут быть соединены с системной шиной 121 посредством интерфейса для съемной энергонезависимой памяти, такого как интерфейс 150.
[0033] Накопители и ассоциированные с ними компьютерные запоминающие носители информации, рассмотренные выше и проиллюстрированные на Фиг. 1, предоставляют хранилище машиночитаемых инструкций, структур данных, программных модулей, и прочих данных для компьютера 110. На Фиг. 1, например, накопитель 141 на жестком диске иллюстрируется как хранящий операционную систему 144, прикладные программы 145, прочие программные модули 146, и программные данные 147. Следует отметить, что эти компоненты могут либо быть точно такими же, либо отличаться от операционной системы 134, прикладных программ 135, прочих программных модулей 136, и программных данных 137. Операционной системе 144, прикладным программам 145, прочим программным модулям 146, и программным данным 147 даны другие номера в данном документе, чтобы проиллюстрировать то, что они могут быть разными копиями.
[0034] Пользователь может вводить команды и информацию в компьютер 110 посредством устройств ввода, таких как клавиатура 162 и координатно-указательное устройство 161, обычно именуемое мышью, шаровым манипулятором, или сенсорной панелью. Другие устройства ввода (не показано) могут включать в себя микрофон (например, для ввода голоса или другого аудио), игровой манипулятор, игровую панель, спутниковую антенну, сканер, сенсорный экран, планшет для письменного ввода, камеру (например, для ввода жестов или иного визуального ввода), или подобное. Эти и прочие устройства ввода часто соединены с компонентом 120 обработки посредством интерфейса 160 ввода пользователя, который связан с системной шиной, однако может быть соединен посредством другого интерфейса и структур шины, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
[0035] Посредством использования одного или более из выше идентифицированных устройств ввода может быть создан Естественный Интерфейс Пользователя (NUI). NUI, может основываться на распознавании речи, распознавании касания и стилуса, распознавании жеста как по экрану, так и рядом с экраном, жестов по воздуху, отслеживании головы и глаз, голосе и речи, зрении, касании, жестах, машинном интеллекте, и подобном. Некоторые примерные технологии NUI, которые могут быть использованы для взаимодействия с пользователем, включают в себя сенсорные дисплеи, распознавание голоса и речи, понимание намерения и цели, обнаружение жеста движения, используя камеры глубины (такие как системы стереоскопических камер, системы инфракрасных камер, системы RGB камер, и их сочетания), обнаружение жеста движения используя акселерометры/гироскопы, распознавание лица, 3D дисплеи, отслеживание головы, глаза и взгляда, системы многонаправленной дополненной реальности и виртуальной реальности, как впрочем и технологии для регистрации активности мозга, используя электроды регистрации электрического поля (EEG и связанные способы).
[0036] Монитор 191 или другой тип дисплейного устройства также соединен с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору, компьютеры также могут включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть соединены посредством периферийного интерфейса 195 вывода.
[0037] Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или более удаленными компьютерами, таким как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или общим сетевым узлом, и, как правило, включает в себя многие или все из элементов, описанных выше в отношении компьютера 110, несмотря на то, что только запоминающее устройство 181 памяти проиллюстрировано на Фиг. 1. Логические соединения, изображенные на Фиг. 1, включают в себя локальную сеть 171 (LAN) и глобальную сеть 173 (WAN), однако также могут включать в себя телефонные сети, сети ближнего поля, и другие сети. Такие сетевые среды имеют место в офисах, компьютерных сетях предприятия, интрасетях, и Интернет.
[0038] При использовании в сетевой среде LAN, компьютер 110 соединяется с LAN 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде WAN, компьютер 110 может включать в себя модем 172 или другое средство для создания связи через WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть соединен с системной шиной 121 через интерфейс 160 ввода пользователя или другой соответствующий механизм. В сетевой среде, программные модули, изображенные как относящиеся к компьютеру 110, или их части, могут храниться на удаленном запоминающем устройстве памяти. В качестве примера, а не ограничения, Фиг. 1 иллюстрирует удаленные прикладные программы 185 как размещенные в устройстве 181 памяти. Следует иметь в виду, что показанные сетевые соединения являются примерными и могут быть использованы прочие средства создания линии связи между компьютерами.
ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ
[0039] Как упомянуто ранее, применительно к энергонезависимой памяти был получен ряд достижений. В соответствии с аспектами описываемого в данном документе изобретения, операционная система может быть выполнена с возможностью использования преимуществ этих достижений. Фиг. 2 и 5 являются структурными схемами, которые в целом представляют собой энергонезависимую память в соответствии с аспектами описываемого в данном документе изобретения. Энергонезависимая память 205 может включать в себя массив запоминающих элементов памяти, доступ к которым может быть осуществлен посредством адресов. В одной реализации, обращение к устройству памяти, которое включает в себя энергонезависимую память 205, может быть выполнено, используя примитивы памяти. Примитивы памяти, используемые для осуществления доступа к энергонезависимой памяти 205, могут быть подобны или идентичны тем, что используются для осуществления доступа к энергозависимой памяти, такой как RAM.
[0040] Быстрая энергонезависимая память может быть присоединена к шине памяти. Например, в настоящее время, некоторые типы энергонезависимой памяти работаю в 2-4 раза медленнее RAM и на пару порядков быстрее флэш-памяти или хранилища на жестком диске. Эти типы энергонезависимой памяти могут иметь низкое время ожидания и высокие скорости пересылки данных, что может иметь еще большую выгоду при присоединении к шине памяти, чем при присоединении к шине хранилища.
[0041] Как иллюстрируется на Фиг. 2, энергонезависимая память 205 была разделена на область 210 файловой системы и область 211 памяти. Иллюстрируемые размеры этих областей являются лишь примерными. В других реализациях, например, эти размеры могут сильно варьироваться от размеров, показанных на Фиг. 2.
[0042] Кроме того, энергонезависимая память 205 может быть реализована, используя одну или более подсистем. Например, в том случае, если несколько типов энергонезависимой памяти размещается в системе, или в том случае, если несколько единиц памяти одного и того же или разных типов энергонезависимой памяти размещается в системе, система может включать в себя несколько подсистем для осуществления доступа к энергонезависимой памяти.
[0043] Несмотря на то, что в данном документе иногда используется понятие «файловая система», следует понимать, что данное понятие является лишь примерным и что идеи в данном документе также могут быть применены к другим типам запоминающих систем. Запоминающая система может включать в себя один или более компоненты аппаратного и/или программного обеспечения, которые организуют данные, которые удерживаются.
[0044] Размер области 210 файловой системы и размер области 211 памяти могут быть установлены или переустановлены, например, во время операции конфигурации. Операция конфигурации может происходить до или после инсталляции операционной системы для задания размера или повторного задания размера областям памяти по желанию. Операционная система может быть выполнена с возможностью поиска данных конфигурации в предварительно определенном местоположении энергонезависимой памяти 205. Данные конфигурации могут указывать то, каким образом энергонезависимая память должна быть разделена между данными файловой системы и памятью, доступной для других использований.
[0045] Область 211 памяти является частью энергонезависимой памяти 205, которая была установлена помимо прочего для предоставления дополнительной основной памяти для компьютера. Данная память может быть использована вместо, или в дополнение к, любому RAM или другой энергозависимой памяти компьютера.
[0046] Область 210 файловой системы является частью энергонезависимой памяти 205, которая была установлена помимо прочего для данных файловой системы. Несмотря на то, что физически доступ к элементам памяти в данной области может быть осуществлен точно таким же образом, как осуществляется доступ к элементам памяти в области 211 памяти, компоненты файловой системы, действуя совместно с аппаратным обеспечением памяти, могут обеспечивать соблюдение некоторых правил, касательно этих доступов, как более подробно описывается ниже.
[0047] В традиционных файловых системах, блок данных с жесткого диска может быть скопирован в основную память. При нахождении в основной памяти, данные могут быть модифицированы. В некоторый момент времени, блок данных как модифицированный записывается из основной памяти на жесткий диск.
[0048] В соответствии с аспектами описываемого в данном документе изобретения, файловая система может быть выполнена с возможностью избегать некоторого копирования, которое происходит в традиционных файловых системах. Например, обращаясь к Фиг. 2, приложение может стремиться получить данные, которые находятся в блоке 215. Вместо копирования данных в блоке 215 в память в блок 216, файловая система может запрашивать, чтобы аппаратное обеспечение памяти создавало привязку между блоком 216 и блоком 215. Когда привязка создан, операция, которая пытается считать блок 216, получает данные из блока 215, кроме случаев, когда соблюдаются некоторые условия.
[0049] После того как создается привязка, запись в блок 216 вызывает запись данных в блок 216. В одной реализации, аппаратное обеспечение памяти может ожидать копирования данных, записанных в блоке 216, в блок 215, до времени после записи данных в блок 216. В другой реализации, аппаратное обеспечение памяти может ожидать явной команды от файловой системы перед копированием данных, записанных в блок 216, в блок 215. Это позволяет файловой системе быть более задействованной, когда происходят записи в энергонезависимую память 205.
[0050] Как только произошла запись в блок 216, одна или более привязок от блока 216 к блоку 215 могут быть разорваны. Например, блок 215 может быть реализован посредством множества подблоков. В одной реализации, подблок может быть участком памяти малого фиксированного размера, доступ к которому может быть осуществлен по архитектуре памяти, которая использует энергонезависимую память 205. В одном варианте осуществления, блок может соответствовать странице памяти, в то время как подблок может соответствовать строке кэша.
[0051] В одной реализации, когда привязка устанавливается между блоком 216 и блоком 215, физически привязка может быть установлена между каждым подблоком блока 216 и его соответствующим подблоком блока 215. Это приводит к множеству привязок между элементами памяти блоков 216 и 215.
[0052] В одной реализации, когда часть блока 216 является записанной, подблоки, которые включают в себя эту часть, могут быть определены, и привязки, ассоциированные с этими подблоками могут быть разорваны. Данный разрыв может происходить в любое время перед последующим считыванием блока 216. Когда принимается последующее считывание в отношении блока 216, данные для считывания извлекаются из блока 215 в том случае, если привязки не были разорваны, и из блока 216 в том случае, если привязки были разорваны.
[0053] В другой реализации, когда часть блока 215 является записанной, подблоки, которые включают в себя часть, могут быть определены, и привязки, ассоциированные с этими подблоками могут быть разорваны. Данный разрыв может происходить в любое время перед последующим считыванием блока 216. Когда принимается последующее считывание в отношении блока 216, данные для считывания извлекаются из блока 215 в том случае, если привязки не были разорваны, и из блока 216 в том случае, если привязки были разорваны.
[0054] В связи с разрывом привязки между подблоком блока 216 и подблоком блока 215 и перед перезаписью данных в подблок блока 215, может осуществляться фиксация данных в подблоке блока 215 таким образом, чтобы они могли быть получены при осуществлении доступа к соответствующему подблоку блока 216 (или любому другому подблоку, который имеет привязку к подблоку блока 215). Фиксация данных может включать в себя, например, копирование данных в местоположение, распределенное для блока 216, копирование данных в новое местоположение и обновление привязки блока 216 на точку в этом новом местоположении, оставление данных в их текущем местоположении и обновление структур соответствия, ассоциированных с блоком 215 таким образом, что считывание блока 215 получает измененные данные, или подобное. Данное поведение оставляет неизменной возможность получения данных через блок 216, даже когда данные блока 215 меняются.
[0055] В одной реализации, когда часть блока 215 является записанной или когда часть блока 216 является записанной, привязки разрываются как описано выше. В другой реализации, привязки разрываются в ответ на запись в блок 216, но не в ответ на запись в блок 215. В другой реализации, привязки разрываются в ответ на запись в блок 215, но не в ответ на неудавшуюся запись в блок 216. Реализация, которой следуют в конкретной системе, может быть конфигурируемой через аппаратное или программное обеспечение, может быть зашитой или жестко закодированной, или подобное.
[0056] Фиг. 3 является структурной схемой, которая в целом представляет собой различные состояния привязок между подблоками блоков памяти с Фиг. 2 в соответствии с аспектами описываемого в данном документе изобретения. Когда привязка устанавливается между блоком 216 и блоком 215, это может вызывать установку множества привязок между подблоками блока 216 и подблоками блока 215. Когда в данном состоянии принимается запрос считывания в отношении данных, обращенный к блоку 216, считывание удовлетворяется из данных в блоке 215.
[0057] Блок 316 представляет собой блок 216 после того, как данные были записаны в блок 216. В частности, данные были записаны в подблоки 301-303. В связи с записью данных для создания блока 316, привязки для подблоков 301-303 были разорваны. Считывание, обращенное к блоку 316, будет извлекать данные из блока 215, в котором привязки не были разорваны, и будет извлекать данные из блока 316 в том случае, если привязки были разорваны (например, для подблоков 301-303). Контроллер памяти (например, контроллер 410 памяти с Фиг. 4) может включать в себя схему для извлечения данных из соответствующих местоположений, с учетом любых привязок, которые существуют.
[0058] Фиг. 4 и 6 являются структурными схемами, которые в целом представляют собой примерные компоненты систем, выполненных в соответствии с аспектами описываемого в данном документе изобретения. Компоненты, иллюстрируемые на Фиг. 4 и 6, являются примерными и не означают, что являются всеми включенными компонентами, которые могут быть необходимы или включены. Кроме того, количество компонентов может отличаться в других вариантах осуществления, не отступая от сущности или объема аспектов описываемого в данном документе изобретения. В некоторых вариантах осуществления, компоненты, описанные в связи с Фиг. 4 и 6 могут быть включены в другие компоненты (показанные или не показанные) или помещены в суб-компоненты, не отступая от сущности или объема аспектов описываемого в данной документе изобретения. В некоторых вариантах осуществления, компоненты и/или функции, описанные в связи с Фиг. 4 и 6, могут быть распределены между несколькими устройствами.
[0059] Кэш 415 может включать в себя элементы памяти, которые кэшируют данные из энергонезависимой памяти 205. В одной реализации, кэш может быть выполнен в виде динамического RAM (DRAM), статического RAM (SRAM), или некоторого другого типа энергозависимой или энергонезависимой памяти. В некоторых реализациях, кэш 415 может быть опущен. В некоторых реализациях, может присутствовать более одного уровня кэша.
[0060] Контроллер 410 памяти может включать в себя схему для осуществления доступа к данным в энергонезависимой памяти 205. Используемое в данном документе осуществление доступа может в включать в себя считывание данных, запись данных, удаление данных, обновление данных, сочетание, включающее в себя два или более из вышеприведенных действий, и подобное. В одной реализации, контроллер 410 памяти может осуществлять доступ к энергонезависимой памяти 205, используя только кэш 415. Другими словами, в данной реализации, всякий раз, когда контроллер 410 памяти считывает или записывает, он может отправлять считывание или запись на кэш 415. Применительно к считыванию, кэш 415 может затем предоставлять данные из кэша 415, если кэш имеет данные, или получать данные из энергонезависимой памяти 205 и затем предоставлять данные, если кэш не имеет данных. Применительно к записи, кэш 415 может хранить записанные данные в кэше 415 и может сбрасывать кэш на энергонезависимую память 205 в соответствии с политиками кэширования.
[0061] В другой реализации, контроллер 410 памяти также может выступать в роли контроллера для кэша 415 и может получать данные из кэша 415 или энергонезависимой памяти 205 при необходимости. В данной реализации, контроллер 410 памяти также может вызывать запись кэшем 415 данных в энергонезависимую память 205 в соответствии с политиками кэширования.
[0062] Контроллер 410 памяти может включать в себя интерфейс, посредством которого драйвер 405 файловой системы может отправлять запросы и принимать данные. В частности, данный интерфейс может обеспечивать связь, включающую в себя следующее:
[0063] 1. Запрос на создание привязки для энергонезависимой памяти. В одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса привязки блока памяти энергонезависимой памяти 205 к другому блоку памяти энергонезависимой памяти 205. После приема данного запроса, в одной реализации контроллер памяти 410 может создавать несколько привязок, если блок с привязкой охватывает два или более подблока.
[0064] В другой реализации, контроллер памяти 410 может создавать только одна привязка для каждого запроса привязки. В данной реализации, может ожидаться, что драйвер 405 файловой системы определяет, сколько привязок требуется для заданного блока памяти, и осуществляет связь с контроллером 410 памяти для создания каждой из привязок.
[0065] 2. Запрос на считывание блока памяти. В одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса на считывание блока памяти энергонезависимой памяти 205. Если блок включает в себя память с привязкой, контроллер 410 памяти может гарантировать, что данные с привязкой получаются из блока с привязкой (или его кэшированного представления). Если блок включает в себя память без привязки, контроллер 410 памяти может гарантировать, что данные с привязкой получаются от блока без привязки (или его кэшированного представления). Если запрошенный блок включает в себя как данные с привязкой, так и данные без привязки, контроллер 410 памяти может объединять данные с привязкой и без привязки в связи с ответом на запрос.
[0066] 3. Запрос на запись в блок памяти. В одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса на запись в блок памяти энергонезависимой памяти 205. Если блок памяти - с привязкой, контроллер 410 памяти может гарантировать, что привязки разорваны при необходимости, по меньшей мере, перед предоставлением данных в ответ на считывание блока с привязкой. Контроллер 410 памяти может предписывать запись записываемых данных в кэш. Контроллер 410 памяти может сбрасывать данные из кэша периодически, в соответствии с политиками кэширования или в ответ на явную команду от драйвера 405 файловой системы.
[0067] 4. Запрос на копирование блока энергонезависимой памяти в другое местоположение энергонезависимой памяти. В одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема команд копирования от драйвера 405 файловой системы. В ответ на команду копирования, контроллер 410 памяти может логически или физически копировать блок в другое местоположение энергонезависимой памяти 205. Физическое копирование блока в другое местоположение может задействовать считывание данных блока и копирования считанных данных в другое местоположение. Логически копирование блока может включать в себя, например, оставление данных там где они есть, но изменение элементов соответствия таким образом, чтобы эти данные выдавались, когда они запрашиваются, из этого нового местоположения.
[0068] Если части памяти для копирования по-прежнему находятся в кэше 415 и не были сброшены в энергонезависимую память 205, это может быть обработано различными способами. Например, в одной реализации, контроллер 410 памяти может гарантировать то, что данные в кэше 415 копируются в блок-получатель с или без сброса этих данных в блок-источник.
[0069] В другой реализации, драйвер 405 файловой системы может запрашивать то, чтобы любой недействительный кэш, задействованный в копирование, сбрасывался до выдачи команды копирования.
[0070] 5. Запрос на обнуление некоторой части или всей энергонезависимой памяти 205 при перезапуске. Операционная система может использовать часть энергонезависимой памяти 205 в качестве основной памяти в дополнение к или вместо использования RAM. Например, операционная система может загружать код и структуры данных в область 211 памяти с Фиг. 2. Поскольку энергонезависимая память 205 не теряет данные при потере питания, данный код и данные могут оставаться даже после перезапуска компьютера, который размещает энергонезависимую память 205. Наличие данных в области 211 памяти при перезапуске может вызвать различные проблемы.
[0071] В одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса обнуления-при-перезапуске. В ответ, контроллер 410 памяти может сохранять данные, указывающие данный запрос и, при перезапуске, логически или физически обнулять запрошенную часть энергонезависимой памяти 205 (например, область 211 памяти). Логическое обнуление запрошенной части может включать, например, маркировку того, что запрошенная часть обнуляется и затем ожидание физического обнуления блока до тех пор, пока не принимается запрос считывания или записи в отношении блока. Поскольку после перезапуска, когда драйвер 405 файловой системы запрашивает блок, помеченный для обнуления, драйвер 405 файловой системы принимает нули применительно к обнуленному блоку, может быть использована любая реализация, которая обеспечивает данную функциональность обнуления, не отступая от сущности или объема аспектов описываемого в данном документе изобретения.
[0072] В одной реализации, контроллер 410 памяти может использовать параллельность аппаратного обеспечения для обнуления частей блока параллельно. Данная параллельность аппаратного обеспечения может включать в себя один или более элементы схемы, которые выполнены с возможностью обнуления нескольких элементов памяти одновременно.
[0073] 6. Запрос переустановления привязки для блока, который в настоящий момент уже с привязкой. Операционная система или другой процесс, использующий энергонезависимую память 205, может, временами, желать переместить блок в энергонезависимой памяти 205 в другое местоположение в энергонезависимой памяти 205. Это может вызвать проблему, если память, которая перемещается, задействована в привязке. Например, обращаясь к Фиг. 5, процесс может запрашивать, чтобы данные в блоке 215 были перемещены в блок 505. Блок 216 памяти может быть с привязкой в точке в блоке 215 памяти.
[0074] Если привязка не меняется на новый блок 505, тогда данные в блоке 215 памяти меняются, и считывание данных в блоке 216 памяти может возвращать измененные данные. Это может вызвать проблемы если, например, программа ожидает, что блок 216 по-прежнему связан привязкой с данными, которые не изменились (например, данными в блоке 505).
[0075] Для решения этой и других проблем, контроллер 410 памяти может быть выполнен с возможностью приема запроса переустановления привязки для блока, который в настоящий момент уже с привязкой. Например, в одной реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса переустановления привязки для памяти в рамках заданного диапазона памяти к памяти в рамках другого заданного диапазона. В данной реализации, контроллер 410 памяти может определять все привязки, которые указывают на первый заданный диапазон, и переустанавливать эти привязки, чтобы они указывали на второй заданный диапазон.
[0076] В другой реализации, контроллер 410 памяти может быть выполнен с возможностью приема запроса переустановления привязки для конкретного привязки на новое местоположение. Например, обращаясь к Фиг. 3 и 4, контроллер 410 памяти может быть выполнен с возможностью приема запроса переустановления привязки в отношении одной из привязок для подблоков блока 215. В данной реализации, когда файловая система стремится переустановить набор привязок для части памяти, драйвер 405 файловой системы может включать в себя логику для определения всех привязок для части памяти в связи с отправкой в контроллер 410 памяти команд переустановления привязки каждой привязки.
[0077] Возвращаясь к Фиг. 5, когда запрос переустановления привязки принимается и обрабатывается, привязка, которая ранее указывала от блока 216 на блок 215, может быть заменена привязкой, которая указывает от блока 216 на блок 501. Контроллер памяти может быть выполнен с возможностью выполнения операции переустановления привязки «безопасным» образом. В данном контексте «безопасным» означает, что логически операция переустановления привязки выполняется перед выполнением других операций, которые были приняты вслед за запросом переустановления привязки. В одной реализации, контроллер памяти может физически выполнять другие операции до тех пор, пока драйвер 405 файловой системы не в состоянии, используя любой набор операций, обнаружить то, что операция переустановления привязки была выполнена вне очереди относительно того, когда она была принята.
[0078] Контроллер памяти может реализовывать переустановление привязки другими способами, не отступая от сущности или объема аспектов описываемого в данном документе изобретения. Например, в одной реализации, контроллер памяти может быть выполнен с возможностью приема команды перемещения блока и может автоматически переустанавливать привязки, которые указывают на блок, когда блок перемещается.
[0079] В другой реализации, контроллер памяти может быть выполнен с возможностью приема команды перемещения блока и модифицирования внутренних элементов соответствия для логического перемещения блока без физического копирования блока в другое местоположение. В некоторых реализациях, перемещение блока таким образом может сводить на нет необходимость выполнения переустановления привязки. Например, если привязка указывает на блок безотносительно информации соответствия, тогда при изменении информации соответствия для перемещения блока, привязка по-прежнему указывает на блок.
[0080] В другой реализации, контроллер памяти может быть выполнен с возможностью приема команды переустановления привязки, которая не является автоматически инициированной посредством команды перемещения блока. В данной реализации, драйвер 405 файловой системы может явным образом запрашивать переустановление привязки в дополнение к запросу перемещения блока при необходимости.
[0081] Не подразумевается, что вышеприведенные примеры являются всеми включенными или исчерпывающими способами, посредством которых контроллер памяти может быть выполнен с возможностью реализации команды переустановления привязки. На основании изложенных в данном документе идей, специалистам в соответствующей области будут очевидны другие реализации, которые могут быть использованы, не отступая от сущности или объема аспектов описываемого в данном документе изобретения.
[0082] Драйвер 405 файловой системы может быть компонентом программного и/или аппаратного обеспечения, который дает команды и принимает ответы от контроллера 410 памяти. Драйвер 405 файловой системы может быть частью стека хранилища файловой системы и драйвер 405 файловой системы может осуществлять связь с контроллером 410 памяти через системную шину или другую линию связи. Драйвер 405 файловой системы может предоставлять интерфейс стеку хранилища файловой системы, который обеспечивает энергонезависимой памяти 205 возможность выглядеть подобно другому хранилищу (например, жесткому диску, флэш-памяти, другой энергонезависимой или энергозависимой памяти, или подобному) доступному для стека хранилища.
[0083] Несмотря на то, что некоторые из примеров в данном документе описывали привязки и другие действия касательно энергонезависимой памяти, идеи в данном документе также могут быть применены к реализациям, в которых область файловой системы и область памяти реализуются, используя другие конфигурации памяти. Например, область файловой системы и/или область памяти могут быть реализованы с помощью энергозависимой, энергонезависимой, или сочетания энергозависимой и энергонезависимой памяти. Кроме того, область файловой системы может быть реализована на типе памяти отличном от области памяти.
[0084] В этих реализациях, идеи в данном документе могут быть применены, например, к привязкам от энергозависимой к энергозависимой памяти, привязкам от энергозависимой к энергонезависимой памяти, привязкам от энергонезависимой к энергозависимой памяти, системам, которые два или более разных типа привязок (например, энергонезависимый к энергонезависимому, энергозависимый к энергонезависимому, и т.д.), и подобному. Кроме того, контроллер памяти, такой как контроллер 410 памяти с Фиг. 4, может предоставлять интерфейс, который обеспечивает использование, создание, переустановление и т.д. привязок и выполнение других действий, описанных в данном документе, не отступая от сущности или объема аспектов описываемого в данном документе изобретения.
[0085] Возвращаясь к Фиг. 6, контроллер 605 памяти показан с интерфейсом 610 и примерными схемами 615-618. В одном варианте осуществления, схема может включать в себя только физические компоненты, такие как резистор, транзисторы, конденсаторы, источники напряжения, источники тока, переключатели, индукторы, и подобное. Один или более физические компоненты могут быть интегрированы в один или более чипы. В другом варианте осуществления, схема может включать в себя физические компоненты совместно с инструкциями, которые указывают на то, каким образом должны работать физические компоненты. Инструкции могут быть закодированы в энергозависимой или энергонезависимой памяти.
[0086] Схемы контроллера 605 памяти являются примерными и не означают, что являются всеми включенными схемами, которые могут быть необходимы или включены. Кроме того, количество схем может отличаться в других вариантах осуществления, не отступая от сущности и объема аспектов описываемого в данном документе изобретения. В некоторых вариантах осуществления, схемы, описанные в связи с Фиг. 6, могут быть включены в другие схемы или помещены в суб-схемы, не отступая от сущности или объема аспектов описываемого в данном документе изобретения.
[0087] Интерфейс 610 может включать в себя структуру, посредством которой драйвер 405 файловой системы может осуществлять связь с контроллером 605 памяти. Например, интерфейс 610 может позволять драйверу файловой системы осуществлять связь с контроллером 605 памяти через электрические, оптические, или другие сигналы, которые кодируют запросы и ответы на эти запросы. Интерфейс 610 также может быть выполнен с возможностью обеспечения связи, как указывается в связи с Фиг. 4.
[0088] Например, интерфейс 610 может быть выполнен с возможностью приема запроса на создание привязки между блоком памяти запоминающей системы и блоком памяти основной памяти. Блок памяти запоминающей системы может быть использован, например, при поддержании данных запоминающей системы и может соответствовать области 210 файловой системы с Фиг. 2, например. Блок основной памяти может быть использован для основной памяти компьютера и может соответствовать области 211 памяти с Фиг. 2.
[0089] Схема 615 установления привязок может быть выполнена с возможностью создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, как запрошено драйвером файловой системы. Как указано ранее, создание привязки между этими блоками памяти может включать в себя создание множества привязок между подблоками этих блоков. Схема 615 установления привязок может дополнительно быть выполнена с возможностью разрыва привязки с подблоком в ответ на запрос на запись в подблок. В одной реализации, схема 615 установления привязок может ожидать разрыва привязки с подблоком вплоть до момента перед обслуживанием запроса на чтение из подблока. Схема 615 установления привязок также может быть выполнена с возможностью переустановления привязки для блока с привязкой в ответ на запрос на перемещение блока с привязкой, например.
[0090] Схема 616 копирования может быть выполнена с возможностью ответа на запрос на копирование блока основной памяти в новое местоположение. В одной реализации, схема 616 копирования может отвечать посредством физического копирования данных в блоке основной памяти в новое местоположение. В другой реализации, схема 616 копирования может логически копировать данные в блоке основной памяти в новое местоположение, оставляя данные в блоке основной памяти и обновляя элементы соответствия, как описано ранее.
[0091] Схема 618 обнуления выполнена с возможностью ответа на запрос на обнуление запрошенного диапазона памяти. Запрошенный диапазон памяти может включать в себя некоторую часть или всю память, используемую для основной памяти. В одной реализации, схема 618 обнуления может обнулять запрошенный диапазон памяти маркируя то, что запрошенный диапазон обнуляется. В одном варианте осуществления, схема 618 обнуления может ждать физического обнуления части запрошенного диапазона до тех пор, пока контроллером 605 памяти не принимается запрос на чтение или запись в отношении части. В другом варианте осуществления, схема 618 обнуления может помещать нули в кэш считывания в ответ на считывание в отношении памяти, которая была промаркирована как обнуленная. В данном варианте осуществления, схема 618 обнуления может фактически не обнулять физически промаркированный диапазон, но считывание применительно к памяти возвращает нули, поскольку оно обслуживается из кэша считывания. В одной реализации, схема обнуления может ожидать обнуления (например, физического или логического) памяти вплоть до момента после приема указания перезапуска компьютера, размещающего основную память.
[0092] Схема 617 извлечения может быть выполнена с возможностью ответа на запрос считывания драйвера файловой системы. Если некоторые привязки были разорваны, схема 617 извлечения может отвечать на запрос посредством получения первых данных из подблоков блока запоминающей системы в том случае, если привязки не были разорваны, и получать вторые данные из подблоков блока основной памяти в том случае, если привязки были разорваны, и затем объединять первые данные и вторые данные, чтобы ответить на запрос считывания.
[0093] В одном примере, блок памяти основной памяти может включать в себя страницу памяти, которая может быть разбита на подблоки, при этом каждый подблок соответствует строке кэша.
[0094] Фиг. 7-9 являются блок-схемами, которые в целом представляют собой примерные действия, которые могут происходить в соответствии с аспектами описываемого в данном документе изобретения. Для простоты объяснения, методология, описанная в связи с Фиг. 7-9, изображается и описывается в качестве ряда действий. Следует понимать и иметь в виду, что аспекты описываемого в данном документе изобретения не ограничиваются иллюстрируемыми действиями и/или очередностью действий. В одном варианте осуществления, действия происходят в очередности как описывается ниже. Тем не менее, в других вариантах осуществления два или более действия могут происходить параллельно или в другой очередности. В других вариантах осуществления, одно или более действия могут происходить с другими действиями, не представленными и не описанными в данном документе. Кроме того, не все проиллюстрированные действия могут требоваться для реализации методологии в соответствии с аспектами описываемого в данном документе изобретения. В дополнение, специалисты в соответствующей области техники будут понимать и иметь в виду, что методология может быть альтернативно представлена в качестве ряда взаимосвязанных состояний через диаграмму состояний или событий.
[0095] Фиг. 7 является блок-схемой, которая в целом представляет собой примерные действия, которые могут происходить в связи с созданием привязки с точки зрения контроллера памяти в соответствии с аспектами описываемого в данном документе изобретения. В блоке 705, действия начинаются.
[0096] В блоке 710, принимается запрос на создание привязки. Например, обращаясь к Фиг. 6, контроллер 605 памяти может принимать запрос привязки для блока памяти через интерфейс 610. Данный запрос может исходить от драйвера 405 файловой системы. Запрос может быть запросом на создание привязки между блоком памяти запоминающей системы и блоком памяти основной памяти.
[0097] В блоке 715, могут быть созданы одна или более привязок. Например, обращаясь к Фиг. 6, схема 615 установления привязок может создавать привязку между двумя блоками памяти и/или может создавать привязки между соответствующими подблоками двух блоков памяти.
[0098] В блоке 720, могут быть выполнены другие действия, если имеются. Другие действия включают в себя, например, любые действия описанные в данном документе в отношении контроллера памяти.
[0099] Фиг. 8 является блок-схемой, которая в целом представляет собой примерные действия, которые могут происходить в связи с получением данных в отношении блока с привязкой с точки зрения контроллера памяти в соответствии с аспектами описываемого в данном документе изобретения. В блоке 805, действия начинаются.
[0100] В блоке 810, принимается запрос считывания в отношении блока с привязкой. Например, обращаясь к Фиг. 2 и 6, контроллер 605 памяти может принимать запрос на считывание данных в блоке 216. Запрос может исходить от драйвера 405 файловой системы и может быть сообщен через интерфейс 610.
[0101] В ответ на запрос, данные могут быть получены из соответствующего блока или подблоков. Например, обращаясь к Фиг. 3 и 6, если не был разорвана ни одна из привязок между подблоками блока 216 и 215, тогда схема 617 извлечения может получать данные из блока 215. Если привязки были разорваны, как показано на Фиг. 3, тогда схема 617 извлечения может получать данные из подблоков блока 215, в том случае если привязки не были разорваны, и из подблоков 301, 302, и 303 в том случае, если привязки были разорваны.
[0102] В блоке 820, данные объединяются при необходимости. Если некоторые, но не все привязки подблоков были разорваны, данные из подблоков, которые включены в разные блоки, могут быть объединены в ответ на запрос. Например, обращаясь к Фиг. 3 и 6, если ни одна из привязок между подблоками блоков 216 и 215 не разорвана, тогда схеме 617 извлечения может не требоваться объединение подблоков из разных блоков памяти; в противном случае, схема 617 извлечения может объединять данные из подблоков 301, 302, и 303 с данными из подблоков блока 215, где привязки не были разорваны.
[0103] В блоке 825, данные предоставляются в ответ на запрос. Например, обращаясь к Фиг. 6, контроллер 695 памяти может предоставлять данные драйверу 405 файловой системы через интерфейс 610.
[0104] В блоке 830, могут быть выполнены другие действия, если имеются.
[0105] Фиг. 9 является блок-схемой, которая показывает примерные действия, которые могут происходить на компоненте, который осуществляет доступ к памяти через контроллер памяти в соответствии с аспектами описываемого в данном документе изобретения. В блоке 905, действия начинаются.
[0106] В блоке 910, отправляется запрос на создание привязки. Например, обращаясь к Фиг. 6, драйвер 405 файловой системы может отправлять запрос на создание привязки между двумя блоками памяти. Данный запрос может быть отправлен контроллеру 605 памяти через интерфейс 610.
[0107] В блоке 915, после того как был отправлен запрос на создание привязки, может быть отправлен запрос в отношении данных с привязкой. Например, обращаясь к Фиг. 2 и 6, драйвер 405 файловой системы может отправить запрос, обращенный блоку 216. Данный запрос также может быть отправлен контроллеру 605 памяти через интерфейс 610.
[0108] В блоке 920, в ответ на запрос, могут быть приняты данные. Например, обращаясь к Фиг. 2 и 6, в ответ на ранее отправленный запрос, драйвер 405 файловой системы может принять данные, которые были получены из блока 215.
[0109] В блоке 925, выполняются другие действия, если имеются.
[0110] Как может быть видно из вышеприведенного подробного описания, были описаны аспекты, которые относятся к запоминающим системам и привязкам. Несмотря на то, что аспекты описываемого в данном документе изобретения восприимчивы к различным модификациям и альтернативным конструкциям, некоторые его иллюстрируемые варианты осуществления показаны на чертежах и были подробно описаны выше. Тем не менее, следует понимать, что отсутствует намерение ограничить аспекты заявленного изобретения конкретными раскрытыми формами, и наоборот, намерение состоит в охвате всех модификаций, альтернативных конструкций, и эквивалентов, лежащих в рамках сущности и объема различных аспектов описываемого в данном документе изобретения.
название | год | авторы | номер документа |
---|---|---|---|
ГЕНЕРИРОВАНИЕ И КЭШИРОВАНИЕ КОДА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ | 2013 |
|
RU2646329C2 |
КОНТРОЛЬНЫЕ ТОЧКИ ДЛЯ ФАЙЛОВОЙ СИСТЕМЫ | 2011 |
|
RU2554847C2 |
СОВМЕСТИМОСТЬ С РАСШИРЕНИЕМ РАЗМЕРА МАРКЕРА РАЗГРУЗКИ | 2013 |
|
RU2672789C2 |
ВЫГРУЗКА В ФАЙЛОВОЙ СИСТЕМЕ | 2014 |
|
RU2671049C2 |
СПОСОБ, УСТРОЙСТВО И СИСТЕМА УМЕНЬШЕНИЯ ВРЕМЕНИ ВОЗОБНОВЛЕНИЯ РАБОТЫ ДЛЯ КОРНЕВЫХ ПОРТОВ И КОНЕЧНЫХ ТОЧЕК, ИНТЕГРИРОВАННЫХ В КОРНЕВЫЕ ПОРТЫ | 2014 |
|
RU2645596C1 |
СПОСОБ, УСТРОЙСТВО И СИСТЕМА УМЕНЬШЕНИЯ ВРЕМЕНИ ВОЗОБНОВЛЕНИЯ РАБОТЫ ДЛЯ КОРНЕВЫХ ПОРТОВ И КОНЕЧНЫХ ТОЧЕК, ИНТЕГРИРОВАННЫХ В КОРНЕВЫЕ ПОРТЫ | 2014 |
|
RU2586022C2 |
УПРАВЛЕНИЕ ФАЙЛАМИ С ПОМОЩЬЮ ЗАПОЛНИТЕЛЕЙ | 2013 |
|
RU2646334C2 |
КОРРЕКТНОСТЬ БЕЗ ЗАВИСИМОСТИ ОТ УПОРЯДОЧЕННОСТИ | 2010 |
|
RU2560786C2 |
ПРОЗРАЧНОЕ ВОССТАНОВЛЕНИЕ ПОСЛЕ ОТКАЗА | 2012 |
|
RU2595903C2 |
ИСПОЛЬЗОВАНИЕ ВНЕШНИХ УСТРОЙСТВ ПАМЯТИ ДЛЯ УЛУЧШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СИСТЕМЫ | 2005 |
|
RU2395115C2 |
Изобретение относится к вычислительной технике. Технический результат заключается в снижение операционных расходов, связанных с копированием, при работе с данными в памяти. Контроллер памяти содержит схему для доступа к данным в энергонезависимой памяти; интерфейс, выполненный с возможностью принимать от драйвера файловой системы запрос на создание привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, при этом блок памяти запоминающей системы предназначен для использования при хранении данных запоминающей системы, а блок памяти основной системы предназначен для использования применительно к основной памяти компьютера; схему установления привязок для создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти; и схему извлечения для получения данных из блока запоминающей системы в ответ на запрос считывания в отношении данных блока памяти основной памяти, при этом схема установления привязок, будучи выполненной с возможностью создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, выполнена с возможностью создавать привязку от каждого подблока блока памяти основной памяти к каждому соответствующему подблоку блока памяти запоминающей системы и поддерживать каждую привязку до ее разрыва. 3 н. и 6 з.п. ф-лы, 9 ил.
1. Контроллер памяти, содержащий:
схему для доступа к данным в энергонезависимой памяти;
интерфейс, выполненный с возможностью принимать от драйвера файловой системы запрос на создание привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, при этом блок памяти запоминающей системы предназначен для использования при хранении данных запоминающей системы, а блок памяти основной системы предназначен для использования применительно к основной памяти компьютера;
схему установления привязок, выполненную с возможностью создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти; и
схему извлечения, выполненную с возможностью получения данных из блока запоминающей системы в ответ на запрос считывания в отношении данных блока памяти основной памяти,
при этом энергонезависимая память разделена на область файловой системы и область памяти, и при этом блок памяти запоминающей системы располагается в области файловой системы, а блок памяти основной памяти располагается в области памяти, причем элементы памяти в области файловой системы являются физически доступными таким же образом, как элементы памяти в области памяти,
при этом схема установления привязок, будучи выполненной с возможностью создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, выполнена с возможностью создавать привязку от каждого подблока блока памяти основной памяти к каждому соответствующему подблоку блока памяти запоминающей системы и поддерживать каждую привязку до ее разрыва.
2. Контроллер памяти по п.1, в котором схема извлечения дополнительно выполнена с возможностью, в ответ на запрос считывания, получать первые данные из подблоков блока памяти запоминающей системы, если привязки не были разорваны, и получать вторые данные из подблоков блока памяти основной памяти, если привязки были разорваны, причем схема извлечения дополнительно выполнена с возможностью объединения первых данных и вторых данных для ответа на запрос считывания.
3. Контроллер памяти по п.1, в котором схема установления привязок дополнительно выполнена с возможностью разрыва привязки от первого подблока ко второму подблоку в ответ на запрос на запись в первый подблок или на запись во второй подблок.
4. Контроллер памяти по п.3, в котором схема установления привязок дополнительно выполнена с возможностью разрыва привязки от первого подблока ко второму подблоку после запроса на запись и непосредственно перед обслуживанием запроса на считывание из первого подблока.
5. Контроллер памяти по п.1, дополнительно содержащий схему копирования, выполненную с возможностью ответа на запрос на копирование блока памяти основной памяти в новое местоположение, при этом схема копирования дополнительно выполнена с возможностью отвечать на запрос на копирование блока памяти основной памяти в новое местоположение посредством оставления данных в блоке памяти основной памяти и изменения элементов соответствия так, чтобы эти данные выдавались, когда они запрашиваются из упомянутого нового местоположения.
6. Контроллер памяти по п.1, дополнительно содержащий схему обнуления, выполненную с возможностью отвечать на запрос на обнуление запрошенного диапазона памяти, который включает в себя всю основную память или некоторую ее часть, при этом схема обнуления дополнительно выполнена с возможностью отвечать на запрос на обнуление запрошенного диапазона памяти посредством маркировки того, что запрошенный диапазон является обнуленным, и, впоследствии, в ответ на запрос считывания, который задействует запрошенный диапазон памяти, помещения нулей в кэш считывания.
7. Контроллер памяти по п.1, в котором схема установления привязок дополнительно выполнена с возможностью переустановления привязки блока с привязкой в ответ на запрос на перемещение этого блока с привязкой.
8. Способ создания привязки между блоками памяти, реализуемый, по меньшей мере, отчасти компьютером, при этом способ содержит этапы, на которых:
в интерфейсе контроллера памяти, выполненного с возможностью доступа к энергонезависимой памяти, принимают от драйвера файловой системы запрос на создание привязки между блоком памяти запоминающей системы и блоком памяти основной памяти, при этом блок памяти запоминающей системы предназначен для использования при хранении данных запоминающей системы, а блок памяти основной памяти предназначен для использования применительно к основной памяти компьютера;
обновляют схемную структуру для создания привязки между блоком памяти запоминающей системы и блоком памяти основной памяти; и
в ответ на запрос данных, каковой запрос указывает блок памяти основной памяти, предоставляют данные из блока памяти запоминающей системы,
при этом энергонезависимая память разделена на область файловой системы и область памяти, и при этом блок памяти запоминающей системы располагается в области файловой системы, а блок памяти основной памяти располагается в области памяти, причем элементы памяти в области файловой системы являются физически доступными таким же образом, как элементы памяти в области памяти,
при этом, при установлении привязки между блоком памяти основной памяти и блоком памяти запоминающей системы, физически привязку устанавливают между каждым подблоком блока памяти основной памяти и его соответствующим подблоком блока памяти запоминающей системы.
9. Компьютерный носитель информации с исполняемыми компьютером инструкциями, которые при их исполнении выполняют действия, содержащие:
отправку, от драйвера файловой системы операционной системы, запроса в интерфейс контроллера памяти, который выполнен с возможностью доступа к энергонезависимой памяти, причем данным запросом запрашивается создание привязки между первым блоком памяти и вторым блоком памяти, при этом первый блок памяти предназначен для использования при хранении данных запоминающей системы, а второй блок памяти предназначен для использования применительно к основной памяти компьютера;
отправку, от драйвера файловой системы в контроллер памяти, запроса данных, каковой запрос указывает первый блок памяти; и
прием от контроллера памяти, в ответ на этот запрос данных, данных из второго блока памяти,
при этом энергонезависимая память разделена на область файловой системы и область памяти, и при этом блок памяти запоминающей системы располагается в области файловой системы, а блок памяти основной памяти располагается в области памяти, причем элементы памяти в области файловой системы являются физически доступными таким же образом, как элементы памяти в области памяти,
при этом, при установлении привязки между блоком памяти основной памяти и блоком памяти запоминающей системы, физически привязка устанавливается между каждым подблоком блока памяти основной памяти и его соответствующим подблоком блока памяти запоминающей системы.
Станок для изготовления деревянных ниточных катушек из цилиндрических, снабженных осевым отверстием, заготовок | 1923 |
|
SU2008A1 |
Пресс для выдавливания из деревянных дисков заготовок для ниточных катушек | 1923 |
|
SU2007A1 |
US 6438672 B1, 20.08.2002 | |||
US 6625725 B1, 23.09.2003 | |||
УСТРОЙСТВО ДОСТУПА К ПОЛУПРОВОДНИКОВОЙ КАРТЕ ПАМЯТИ, КОМПЬЮТЕРНО-СЧИТЫВАЕМЫЙ НОСИТЕЛЬ ЗАПИСИ, СПОСОБ ИНИЦИАЛИЗАЦИИ И ПОЛУПРОВОДНИКОВАЯ КАРТА ПАМЯТИ | 2000 |
|
RU2257609C2 |
Авторы
Даты
2018-10-05—Публикация
2014-05-28—Подача