СОВМЕСТИМОСТЬ С РАСШИРЕНИЕМ РАЗМЕРА МАРКЕРА РАЗГРУЗКИ
COMPATIBILITY EXTENDING OFFLOAD TOKEN SIZE

УРОВЕНЬ ТЕХНИКИ
[0001] Одним механизмом передачи данных является считывание данных из файла исходного местоположения в оперативную память и запись данных из оперативной памяти в место назначения. Хотя в некоторых средах это может работать приемлемо для относительно небольшого количества данных, по мере увеличения количества данных время, которое необходимо для считывания данных и передачи данных в другое место, увеличивается. Кроме того, если доступ к данным происходит по сети, сеть может вносить дополнительные задержки в передачу данных из исходного места в место назначения. Кроме того, вопросы безопасности, в сочетании со сложностью схем хранения, могут усложнить передачу данных.
[0002] Изобретение, заявляемое в настоящем документе, не ограничивается вариантами воплощения, которые решают любые недостатки или которые работают только в таких средах, как описано выше. Скорее, это описание предшествующего уровня техники предусмотрено только для того, чтобы показать одну иллюстративную область технологий, где некоторые варианты воплощения, описанные в настоящем документе, могут применяться на практике.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Говоря кратко, аспекты изобретения, описанного в настоящем документе, относятся к технологии разгрузки. Согласно аспектам описан механизм, который позволяет поставщику разгрузки использовать большие маркеры. Больший маркер может быть физическим или виртуальным. В ответ на команду чтения для разгрузки может быть создан больший маркер, и данные из большего маркера могут быть разделены или вставлены в несколько маркеров меньшего размера. В ответ на команду записи для разгрузки данные из нескольких маркеров могут быть объединены в больший маркер и/или извлечены и использоваться для получения массива данных.
[0004] Это краткое изложение сущности изобретения приведено для того, чтобы кратко идентифицировать некоторые аспекты изобретения, которое дополнительно описывается ниже в подробном описании. Данное краткое изложение сущности изобретения не предназначено ни для идентификации главных или существенных признаков заявленного изобретения, ни для ограничения объема заявленного объекта изобретения.
[0005] Фраза "изобретение, описанное в настоящем документе" означает изобретение, описанное в подробном описании, если контекст ясно не указывает иное. Термин "аспекты" следует понимать, как "по меньшей мере один аспект". Идентификация аспектов изобретения, описанного в подробном описании, не предназначена для идентификации главных или существенных признаков заявленного изобретения.
[0006] Аспекты, описанные выше, и другие аспекты изобретения, описанного в настоящем документе, показаны в качестве примера и не ограничиваются в прилагаемых фигурах, на которых одинаковые номера позиций сквозным образом указывают подобные элементы и на которых:
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0007] Фиг. 1 является блок-схемой, представляющей собой иллюстративную универсальную вычислительную среду, в которую могут быть включены аспекты изобретения, описанного в настоящем документе;
[0008] фиг. 2-4 являются блок-схемами, которые представляют иллюстративные компоновки компонентов систем, в которых могут работать аспекты изобретения, описанного в настоящем документе;
[0009] фиг. 5 является схемой, которая иллюстрирует одну иллюстративную схему представления одного большего маркера с помощью одного или нескольких меньших подмаркеров в соответствии с аспектами изобретения, описанного в настоящем документе;
[0010] фиг. 6 является блок-схемой, которая представляет иллюстративную компоновку компонентов системы, в которой могут работать аспекты изобретения, описанного в настоящем документе; и
[0011] фиг. 7-9 являются блок-схемами последовательности операций, которые, в общем, представляют иллюстративные действия, которые могут происходить в соответствии с аспектами изобретения, описанного в настоящем документе.
ПОДРОБНОЕ ОПИСАНИЕ
Определения
[0012] Фраза "изобретение, описанное в настоящем документе" означает изобретение, описанное в подробном описании, если контекст явно не указывает иное. Термин "аспекты" следует понимать, как "по меньшей мере один аспект". Идентификация аспектов изобретения, описанного в подробном описании, не предназначена для идентификации главных или существенных признаков заявленного изобретения.
[0013] В настоящем документе термин "включает в себя" и его варианты следует понимать как неограничивающий термин, который означает "включает в себя, но не ограничивается только этим". Термин "или" следует понимать как "и/или", если контекст явно не указывает иное. Термин "на основании" следует понимать как "основанный по меньшей мере частично на". Термины "один вариант воплощения" и "вариант воплощения" следует понимать как "по меньшей мере один вариант воплощения". Термин "другой вариант воплощения" следует понимать как "по меньшей мере один другой вариант воплощения".
[0014] В настоящем документе такие термины как "один", "этот" и вообще единственное число включают в себя один или несколько из обозначенных элементов или действий. В частности, в формуле изобретения ссылка на элемент, в общем, означает, что по меньшей мере один такой элемент присутствует, а ссылка на действие означает, что по меньшей мере один раз это действие выполняется.
[0015] Иногда в настоящем документе могут использоваться термины "первый", "второй", "третий" и т.д. Без дополнительного контекста использование этих терминов в формуле изобретения не предназначено для обозначения порядка, а скорее используется с целью идентификации. Например, фразы "первая версия" и "вторая версия" необязательно означают, что первая версия является самой первой версией или что она была создана перед второй версией, или даже что первая версия необходима или исполняется перед второй версией. Скорее эти фразы используются для идентификации различных версий.
[0016] Заголовки даны только для удобства; информация по данной теме может быть найдена вне раздела, заголовок которого указывает эту тему.
[0017] Другие определения, явные и неявные, могут приводиться ниже.
Иллюстративная операционная среда
[0018] Фиг. 1 иллюстрирует пример подходящей среды 100 вычислительной системы, в которой могут быть реализованы аспекты изобретения, описанного в настоящем документе. Среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и не предназначена для предложения каких-либо ограничений относительно объема использования или функциональности аспектов изобретения, описанного в настоящем документе. Не следует также интерпретировать вычислительную среду 100 как имеющую какую-либо зависимость или требование, касающееся какого-либо одного или комбинации компонентов, показанных в иллюстративной операционной среде 100.
[0019] Аспекты изобретения, описанного в настоящем документе, могут работать в многочисленных других средах или конфигурациях вычислительных систем общего или специального назначения. Примеры хорошо известных вычислительных систем, сред или конфигураций, которые могут быть пригодными для использования с аспектами изобретения, описанного в настоящем документе, включают в себя персональные компьютеры, серверные компьютеры - на "голом железе" или в виде виртуальных машин, переносные или портативные устройства, многопроцессорные системы, системы на основе микроконтроллера, телевизионные абонентские приставки, программируемую и непрограммируемую бытовую электронику, сетевые персональные компьютеры (PC), миникомпьютеры, универсальные компьютеры, карманные персональные компьютеры (PDA), игровые устройства, принтеры, электронное оборудование, в том числе телевизионную приставку, медиацентр или другое электронное оборудование, встроенные или присоединяемые к автомобилю вычислительные устройства, другие мобильные устройства, телефонные устройства, в том числе сотовые телефоны, беспроводные телефоны и проводные телефоны, распределенные вычислительные среды, которые включают в себя любую из вышеупомянутых систем или устройств, и т.п.
[0020] Аспекты изобретения, описанного в настоящем документе, могут быть описаны в общем контексте исполняемых компьютером инструкций, таких как программные модули, исполняемые компьютером. В общем случае, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Аспекты изобретения, описанного в настоящем документе, могут также применяться на практике в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки, которые соединены через коммуникационную сеть. В распределенной вычислительной среде программные модули могут быть расположены в носителе данных и локального, и удаленного компьютера, в том числе запоминающих устройствах.
[0021] Альтернативно или дополнительно функциональность, описанная в настоящем документе, может выполняться, по меньшей мере частично, одним или несколькими компонентами аппаратной логики. Например, и не ограничиваясь только этим, иллюстративные типы компонентов аппаратной логики, которые могут использоваться, включают в себя программируемые пользователем вентильные матрицы (FPGA), специализированные интегральные схемы (ASIC), стандартные части специализированных ИС (ASSP), системы "система на микросхеме" (SOC), сложные программируемые логические устройства (CPLD) и т.п.
[0022] Со ссылкой на фиг. 1, иллюстративная система для реализации аспектов изобретения, описанного в настоящем документе, включает в себя универсальное вычислительное устройство в виде компьютера 110. Компьютер может включать в себя любое электронное устройство, которое способно выполнять инструкции. Компоненты компьютера 110 могут включать в себя блок 120 обработки данных, системную память 130 и одну или несколько системных шин (представленных системной шиной 121), которые соединяют различные компоненты системы, в том числе системную память с блоком 120 обработки данных. Системная шина 121 может быть любой из нескольких типов шинных структур, в том числе шиной памяти или контроллером памяти, периферийной шиной и локальной шиной, использующей любую из множества архитектур шин. В качестве примера, и не ограничиваясь только этим, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину усовершенствованного ISA (EISA), локальную шину ассоциации по стандартам в области видеоэлектроники (VESA), шину стандарта взаимодействие периферийных компонентов (PCI), также известную как шина расширения, шину расширенного стандарта взаимодействие периферийных компонентов (PCI-X), ускоренный графический порт (AGP) и экспресс PCI (PCIe).
[0023] Блок 120 обработки данных может быть соединен с устройством 122 аппаратной защиты. Устройство 122 защиты может хранить и иметь возможность генерировать криптографические ключи, которые могут использоваться для защиты различных аспектов компьютера 110. В одном варианте воплощения устройство 122 защиты может содержать микросхему доверительного модуля платформы (TPM), устройство защиты TPM и т.п.
[0024] Компьютер 110 обычно включает в себя множество машиночитаемых носителей. Машиночитаемые носители могут быть любыми доступными носителями, к которым может получить доступ компьютер 110, и включают в себя и энергозависимые, и энергонезависимые носители, и съемные, и несъемные носители. В качестве примера, и не ограничиваясь только этим, машиночитаемые носители могут включать в себя компьютерные носители информации и коммуникационную среду.
[0025] Компьютерные носители информации включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные в соответствии с любым способом или технологией, для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители информации включают в себя RAM, ROM, EEPROM, твердотельные накопители, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другие накопители на оптических дисках, магнитные кассеты, магнитную ленту, накопители на магнитных дисках, другие магнитные устройства хранения или любой другой носитель, который может использоваться для хранения требуемой информации и к которому может получить доступ компьютер 110. Компьютерные носители информации не включают в себя коммуникационную среду.
[0026] Коммуникационная среда обычно воплощает машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой транспортный механизм, и включает в себя любую среду доставки информации. Термин "модулированный сигнал данных" означает сигнал, одна или несколько характеристик которого задается или изменяется таким образом, чтобы закодировать информацию в сигнале. В качестве примера, и не ограничиваясь только этим, коммуникационная среда включает в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды. Любые комбинации вышеупомянутого также должны быть включены в рамки машиночитаемых носителей.
[0027] Системная память 130 включает в себя компьютерные носители информации в форме энергозависимой и/или энергонезависимой памяти, такой как постоянная память (ROM) 131 и память с произвольным доступом (RAM) 132. Базовая система 133 ввода-вывода (BIOS), содержащая основные процедуры, которые помогают передавать информацию между элементами в компьютере 110, например, во время запуска, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые непосредственно доступны и/или которые в настоящий момент обрабатываются блоком 120 обработки данных. В качестве примера, и не ограничиваясь только этим, фиг. 1 иллюстрирует операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.
[0028] Компьютер 110 может также включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации. Только в качестве примера фиг. 1 показывает привод 141 жесткого диска, который считывает или записывает на несъемный, энергонезависимый магнитный носитель, привод 151 магнитного диска, который считывает или записывает на съемный, энергонезависимый магнитный диск 152, и привод 155 оптического диска, который считывает или записывает на съемный, энергонезависимый оптический диск 156, такой как CD-ROM, DVD или другие оптические носители. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации, которые могут использоваться в иллюстративной операционной среде, включают в себя кассеты с магнитной лентой, карты флэш-памяти и другие твердотельные устройства хранения, цифровые универсальные диски, другие оптические диски, ленту цифрового видео, твердотельную RAM, твердотельную ROM и т.п. Привод 141 жесткого диска может быть соединен с системной шиной 121 через интерфейс 140, а привод 151 магнитного диска и привод 155 оптического диска могут быть соединены с системной шиной 121 с помощью интерфейса для съемной энергонезависимой памяти, такого как интерфейс 150.
[0029] Приводы и их соответствующие компьютерные носители информации, обсуждавшиеся выше и показанные на фиг. 1, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг. 1, например, показано, что привод 141 жесткого диска хранит операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что эти компоненты могут быть или такими же, или отличающимися от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ даны в настоящем документе другие номера, чтобы показать, что, как минимум, они являются другими копиями.
[0030] Пользователь может ввести команды и информацию в компьютер 110 через устройства ввода, такие как клавиатура 162 и указательное устройство 161, обычно называемое мышью, шаровым манипулятором или сенсорной панелью. Другие устройства ввода (не показаны) могут включать в себя микрофон (например, для ввода речи или другого звука), джойстик, игровой планшет, спутниковую антенну, сканер, сенсорный экран, планшет для записи, камеру (например, для ввода жестов или другой визуальной информации) и т.п. Эти и другие устройства ввода часто соединяются с блоком 120 обработки данных через пользовательский интерфейс 160 ввода, который соединен с системной шиной, но могут соединяться с помощью других интерфейсов и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
[0031] Путем использования одного или нескольких указанных выше устройств ввода может быть установлен естественный пользовательский интерфейс (NUI). NUI может основываться на распознавании речи, распознавании касаний и сенсорного пера, распознавании жестов и на экране, и рядом с экраном, жестов в воздухе, отслеживании головы и глаз, голосе и речи, зрении, касаниях, жестах, искусственном интеллекте и т.п. Некоторые примеры технологии NUI, которая может использоваться для взаимодействия с пользователем, включают в себя сенсорные дисплеи, распознавание голоса и речи, распознавание намерений и целей, обнаружение двигательных жестов с использованием камер глубины (таких как стереоскопические системы камер, инфракрасные системы камер, системы камер RGB и их комбинаций), обнаружение двигательных жестов c использованием акселерометров/гироскопов, распознавание лиц, 3D дисплеи, отслеживание головы, глаз и взгляда, создающие эффект присутствия системы дополненной и виртуальной реальности, а так же технологии для считывания мозговой активности с использованием электродов для зондирования электрического поля (ЭЭГ и родственные способы).
[0032] Монитор 191 или другой тип устройства отображения также соединен с системной шиной 121 через интерфейс, такой как видеоинтерфейс 190. В дополнение к монитору компьютеры могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут быть подсоединены через периферийный интерфейс 195 вывода.
[0033] Компьютер 110 может работать в сетевом окружении с использованием логических соединений с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК (PC), равноправным устройством или другим обычным узлом сети, и обычно он включает в себя многие или все элементы, описанные выше применительно к компьютеру 110, хотя на фиг. 1 было показано только запоминающее устройство 181. Логические соединения, изображенные на фиг. 1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но могут также включать в себя телефонные сети, сети ближнего поля и другие сети. Такие сетевые среды являются обычными в офисах, корпоративных компьютерных сетях, сетях интранет и в Интернете.
[0034] При использовании в сетевой среде LAN компьютер 110 соединен с LAN 171 через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN компьютер 110 может включать в себя модем 172 или другое средство для установления связи через WAN 173, такую как Интернет. Модем 172, который может быть внутренним или внешним, может быть соединен с системной шиной 121 через пользовательский интерфейс 160 ввода или другой соответствующий механизм. В сетевой среде программные модули, изображенные применительно к компьютеру 110 или его частям, могут быть сохранены в удаленном запоминающем устройстве. В качестве примера, и не ограничиваясь только этим, фиг. 1 показывает, что удаленные прикладные программы 185 находятся на запоминающем устройстве 181. Следует иметь в виду, что показанные сетевые соединения являются иллюстративными, и могут использоваться другие средства установления коммуникационного канала между компьютерами.
Операции чтения и записи для разгрузки
[0035] Как упоминалось ранее, некоторые традиционные операции по передаче данных могут быть не эффективны или вообще не работать в современных средах хранения.
[0036] Фиг. 2-4 и 6 являются блок-схемами, которые представляют иллюстративные компоновки компонентов систем, в которых могут работать аспекты изобретения, описанного в настоящем документе. Компоненты, показанные на фиг. 2-4 и 6, являются иллюстративными и не обязательно включают все компоненты, которые могут быть необходимы или входить в состав. В других вариантах воплощения компоненты и/или функции, описанные в отношении фиг. 2-4 и 6, могут содержаться в других компонентах (показанных или не показанных) или размещаться в субкомпонентах, не отступая от сущности или объема аспектов изобретения, описанного в настоящем документе. В некоторых вариантах воплощения компоненты и/или функции, описанные в отношении фиг. 2-4 и 6, могут быть распределены между несколькими устройствами.
[0037] Обращаясь к фиг. 2, система 205 может включать в себя инициатор 210, компоненты 215 доступа к данным, поставщика(ов) 225 маркера, хранилище 220 и другие компоненты (не показанные). Система 205 может быть реализована с помощью одного или нескольких вычислительных устройств. Такие устройства могут включать в себя, например, персональные компьютеры, серверные компьютеры, переносные или портативные устройства, многопроцессорные системы, системы на основе микроконтроллера, телевизионные абонентские приставки, программируемую бытовую электронику, сетевые персональные компьютеры (PC), миникомпьютеры, универсальные компьютеры, сотовые телефоны, карманные персональные компьютеры (PDA), игровые устройства, принтеры, электронное оборудование, в том числе телевизионную приставку, медиацентр или другое электронное оборудование, встроенные или присоединяемые к автомобилю вычислительные устройства, другие мобильные устройства, распределенные вычислительные среды, которые включают в себя любую из вышеупомянутых систем или устройств, и т.п.
[0038] Когда система 205 содержит одно устройство, иллюстративное устройство, которое может быть сконфигурировано действовать как система 205, содержит компьютер 110 по фиг. 1. Когда система 205 содержит несколько устройств, одно или несколько из многих устройств могут содержать компьютер 110 по фиг. 1, при этом многие устройства могут быть сконфигурированы аналогично или по-другому.
[0039] Компоненты 215 доступа к данным могут использоваться для передачи данных в и из хранилища 220. Компоненты 215 доступа к данным могут включать в себя, например, одно или несколько из: диспетчеры ввода-вывода (I/O), фильтры, драйверы, компоненты файлового сервера, компоненты в сети хранения данных (SAN) или другом устройстве хранения и другие компоненты (не показаны). В настоящем документе SAN может быть реализована, например, как устройство, которое представляет цели виртуальной памяти как сеть связи, которая включает в себя такие устройства, и т.п.
[0040] В одном варианте воплощения компонент доступа к данным может содержать любой компонент, которому дана возможность исследовать ввод-вывод (I/O) между инициатором 210 и хранилищем 220 и который имеет возможность изменять, завершать или отменять ввод-вывод (I/O), или выполнять другое, или не выполнять никакого действия на его основе. Например, когда система 205 находится на одном устройстве, компоненты 215 доступа к данным могут включать в себя любой объект в стеке ввода-вывода (I/O) между инициатором 210 и хранилищем 220. Когда система 205 реализована с помощью нескольких устройств, компоненты 215 доступа к данным могут включать в себя компоненты на устройстве, на котором размещен инициатор 210, компоненты на устройстве, которое обеспечивает доступ к хранилищу 220, и/или компоненты на других устройствах и т.п. В другом варианте воплощения компоненты 215 доступа к данным могут включать в себя любые компоненты (например, такие как услуга, база данных и т.п.), используемые компонентом, через который проходит ввод-вывод (I/O), даже если данные не проходят через используемые компоненты.
[0041] В настоящем документе термин компонент следует понимать, как включающий в себя аппаратные средства, такие как все или часть устройства, набор из одного или нескольких программных модулей или их частей, некоторую комбинацию одного или нескольких программных модулей или их частей и одного или нескольких устройств или их частей и т.п. Компонент может включать в себя или представлять собой код.
[0042] В настоящем документе термин машинный код следует понимать, как включающий в себя инструкции, которые указывают действия, которые должен предпринять компьютер. Эти инструкции могут содержаться на любых машиночитаемых носителях, энергозависимых или энергонезависимых.
[0043] В одном варианте воплощения хранилище 220 является любыми носителями данных, способными хранить данные. Хранилище 220 может включать в себя энергозависимую память (например, кэш) и энергонезависимую память (например, постоянную память). Термин "данные" следует понимать широко, как включающий в себя все, что может быть представлено одним или несколькими компьютерными запоминающими элементами. Логически, данные могут быть представлены как последовательность 1 и 0 в энергозависимой или энергонезависимой памяти. В компьютерах, которые имеют недвоичный носитель данных, данные могут быть представлены в соответствии с возможностями носителя данных. Данные могут быть организованы в различные типы структур данных, в том числе простые типы данных, такие как числа, буквы и т.п., иерархические, связанные или другие соответствующие типы данных, структуры данных, которые включают в себя несколько других структур данных или простые типы данных и т.п. Некоторые примеры данных включают в себя информацию, программный код, состояние программы, данные программы, команды, другие данные и т.п.
[0044] Хранилище 220 может содержать накопитель на жестких дисках, твердотельный накопитель или другую энергонезависимую память, энергозависимую память, такую как RAM, другой накопитель, некоторую комбинацию вышеупомянутого и т.п. и может быть распределено между несколькими устройствами (например, несколькими SAN, несколькими файловыми серверами, комбинацией неоднородных устройств и т.п.). Устройства, используемые для реализации хранилища 220, могут быть расположены физически вместе (например, на одном устройстве, в центре обработки данных и т.п.) или географически распределены. Хранилище 220 может быть организовано в конструкцию многоуровневого хранения данных или немногоуровневого хранения данных. Хранилище 220 может быть внешним, внутренним или включать в себя компоненты, которые являются и внутренними, и внешними относительно одного или нескольких устройств, которые реализуют систему 205. Хранилище 220 может быть форматированным (например, с файловой системой) или неформатированным (например, без файловой системы).
[0045] В другом варианте воплощения хранилище 220 может быть реализовано как контейнер для хранения, а не как непосредственно физический накопитель. Контейнер для хранения может включать в себя, например, файл, том, диск, виртуальный диск, логический элемент, логический диск, перезаписываемый клон, моментальный снимок тома, моментальный снимок логического диска, физический диск, твердотельный накопитель (SSD), жесткий диск, поток данных, альтернативный поток данных, поток метаданных и т.п. Например, хранилище 220 может быть реализовано с помощью сервера, имеющего несколько физических устройств хранения. В этом примере сервер может предоставлять интерфейс, который позволяет компоненту доступа к данным осуществлять доступ к данным хранилища, которое реализовано с использованием одного или нескольких физических устройств хранения или их частей этого сервера.
[0046] Уровень абстракции может быть повторен до любой произвольной глубины. Например, сервер, предоставляющий контейнер для хранения компонентам 215 доступа к данным, может также полагаться на контейнер для хранения для доступа к данным.
[0047] В другом варианте воплощения хранилище 220 может включать в себя компонент, который обеспечивает просмотр данных, которые могут сохраняться в энергонезависимой памяти или не сохраняться в энергонезависимой памяти.
[0048] Один или несколько компонентов 215 доступа к данным могут находиться на устройстве, которое содержит инициатор 210, в то время как один или несколько других компонентов 215 доступа к данным могут находиться на устройстве, которое содержит или обеспечивает доступ к хранилищу 220. Например, если инициатор 210 является приложением, которое выполняется на персональном компьютере, один или несколько компонентов 215 доступа к данным могут находиться в операционной системе, размещенной на персональном компьютере. Пример этого показан на фиг. 3.
[0049] В качестве другого примера, если хранилище 220 реализовано сетью хранения данных (SAN), один или несколько компонентов 215 доступа к данным могут реализовывать операционную систему накопителя, которая управляет и/или обеспечивает доступ к хранилищу 220. Когда инициатор 210 и хранилище 220 находятся на одном устройстве, все или многие из компонентов 215 доступа к данным могут также находиться на устройстве.
[0050] Операция чтения для разгрузки позволяет инициатору получить маркер, который представляет данные хранилища. Используя этот маркер, инициатор или другой инициатор могут запросить операцию записи для разгрузки. Операция записи для разгрузки позволяет инициатору заставить поставщика разгрузки записать некоторые или все из данных, представленных маркером.
[0051] В одном варианте воплощения маркер включает в себя криптографически стойкое число, которое получено посредством успешной операции чтения для разгрузки. В настоящее время одним примером криптографически стойкого числа является 256-битное число, генерируемое соответствующим образом (например, посредством создания случайного числа путем дискретизации некоторого случайного физического процесса). Некоторые иллюстративные процедуры для генерации криптографически стойких чисел описаны в предложении для обсуждения (RFC) 1750. С развитием технологий и длина стойкого числа, и процедура, используемая для генерации криптографически стойкого числа, могут изменяться, не отступая от сущности или объема аспектов изобретения, описанного в настоящем документе.
[0052] Маркер представляет собой данные, которые являются неизменными, пока маркер является действительным. Данные, которые представляет маркер, иногда называются массивом данных.
[0053] Поставщик разгрузки является субъектом (возможно, включающим в себя несколько компонентов, распределенных между несколькими устройствами), который обеспечивает непрямой доступ к данным, связанным с маркером. Логически поставщик разгрузки способен выполнять операцию чтения для разгрузки и/или операцию записи для разгрузки. Физически поставщик разгрузки может быть реализован с помощью одного или нескольких компонентов 215 доступа к данным и поставщика маркера.
[0054] При обслуживании операций чтения или записи для разгрузки поставщик разгрузки может логически выполнять операции над данными хранилища и/или над маркерами, ассоциированными с поставщиком маркера. Например, для операции чтения для разгрузки поставщик разгрузки может логически скопировать данные из логического контейнера для хранения, поддерживаемого данными хранилища, в маркер (который может также поддерживаться данными хранилища), в то время как для операции записи для разгрузки поставщик разгрузки может логически скопировать данные из маркера в логический контейнер для хранения, поддерживаемый данными хранилища.
[0055] Поставщик разгрузки может пересылать данные из исходного хранилища, записывать данные в целевое хранилище и сохранять данные, которые должны быть обеспечены при получении маркера, ассоциированного с данными. В некоторых реализациях поставщик разгрузки может указать, что команда операции записи для разгрузки завершена после того, как данные были логически записаны в целевое хранилище. Кроме того, поставщик разгрузки может указать, что команда операции записи для разгрузки завершена, но задержать физическую запись данных, ассоциированных с операцией записи для разгрузки, до удобного момента.
[0056] В некоторых реализациях поставщик разгрузки может обеспечивать обмен данными между первым логическим контейнером для хранения и вторым логическим контейнером для хранения и может обеспечивать обмен данными между маркером и контейнером для хранения. Поставщик разгрузки может прекратить обмен данными как часть выполнения записи в физические ячейки памяти хранилища, что в противном случае вызвало бы изменение более чем одного контейнера для хранения или в противном случае вызвало бы изменение данных, представленных маркером.
[0057] В некоторых реализациях поставщик разгрузки может выполнить логическое копирование из контейнера для хранения в маркер или логическое копирование из маркера в контейнер для хранения путем инициации обмена данными между маркером и контейнером для хранения. Например, поставщик разгрузки может выполнить операцию чтения для разгрузки путем логического копирования данных из исходного контейнера для хранения в маркер путем инициации обмена данными между исходным контейнером для хранения и маркером. В другом примере поставщик разгрузки может выполнить операцию записи для разгрузки путем логического копирования данных из маркера в целевой контейнер для хранения путем инициации обмена данными между маркером и целевым контейнером для хранения.
[0058] В некоторых реализациях поставщик разгрузки может аннулировать маркер, например, чтобы избежать обмена данными и/или избежать физического копирования данных. Например, поставщик разгрузки может выполнить операцию записи для разгрузки путем логического копирования данных из маркера в целевой контейнер для хранения путем обновления структур данных целевого контейнера для хранения, чтобы обратиться к физическим ячейкам памяти хранилища, на которое ссылается маркер, и в связи с этим логически аннулировать по меньшей мере часть маркера. Следует отметить, что это может, тем не менее, привести к обмену данными между исходным и целевыми контейнерами для хранения.
[0059] В некоторых реализациях поставщик разгрузки может инициировать обмен данными ячеек памяти между всеми маркерами и контейнерами для хранения, уже обменивающимися данными, и, кроме того, другим контейнером для хранения или маркером. Например, для обслуживания операции чтения для разгрузки поставщик разгрузки может инициировать обмен между исходным контейнером для хранения и маркером. Затем, для обслуживания операции записи для разгрузки с использованием маркера поставщик разгрузки может инициировать обмен между исходным контейнером для хранения, маркером и целевым контейнером для хранения. Если маркер позже аннулируется, обмен с маркером прекращается, но обмен между исходным и целевым контейнерами для хранения может продолжаться (например, пока не принята запись, которая указывает на эти данные).
[0060] В настоящем документе в одной реализации поставщик маркера является частью поставщика разгрузки. В этой реализации, когда поставщик маркера описывается как выполняющий действия, следует понимать, что поставщик разгрузки, который включает в себя поставщика маркера, выполняет эти действия. В другой реализации поставщик маркера может быть отдельным от поставщика разгрузки.
[0061] Чтобы инициировать операцию чтения для разгрузки данных хранилища 220, инициатор 210 может отправить запрос для получения маркера, представляющего данные, с использованием заранее определенной команды (например, через API). В ответ один или несколько компонентов 215 доступа к данным могут ответить инициатору 210 путем предоставления одного или нескольких маркеров, которые представляют данные или их подмножество. Маркер может быть представлен последовательностью байтов, которые используются для представления неизменных данных. Размер неизменных данных может быть больше, меньше или таким же, как размер маркера.
[0062] С маркером инициатор 210 может запросить, чтобы все или части данных, представленные маркером, были логически записаны. Иногда в настоящем документе эту операцию называют операцией записи для разгрузки. Инициатор 210 может сделать это путем отправки маркера вместе с одним или несколькими смещениями и длинами компонентам 215 доступа к данным.
[0063] Компоненты 215 доступа к данным могут быть реализованы как стек для хранения, где каждый уровень стека может выполнять различные функции. Например, компоненты доступа к данным могут разбивать данные, разделять запросы на операции чтения или записи для разгрузки, кэшировать данные, проверять данные, делать моментальный снимок данных и т.п.
[0064] Один или несколько уровней стека могут быть ассоциированы с поставщиком маркера. Поставщик маркера может включать в себя один или несколько компонентов, которые могут генерировать или получать маркеры, которые представляют части данных хранилища 220, и предоставлять эти маркеры инициатору.
[0065] Для части операции записи для разгрузки для используемого при этом маркера может быть указано смещение относительно маркера, а также смещение относительно места назначения. Оба или любое из смещений могут быть явными или неявными. Смещение относительно маркера может представлять собой, например, число байтов (или других единиц) с начала данных, представленных маркером. Смещение относительно места назначения может представлять собой число байтов (или других единиц) с начала данных в месте назначения. Длина может указывать число байтов (или других единиц), начиная с этого смещения.
[0066] Если компонент 215 доступа к данным не может выполнить операцию чтения или записи для разгрузки, может быть возвращен код ошибки, который позволяет другому компоненту доступа к данным или инициатору попробовать другой механизм для чтения или записи данных.
[0067] Фиг. 3 является блок-схемой, которая, в общем, представляет собой иллюстративную компоновку компонентов систем, в которых поставщик маркера размещен в устройстве, в котором размещено хранилище. Как показано, система 305 включает в себя инициатор 210 и хранилище 220 по фиг. 2. Компоненты 215 доступа к данным на фиг. 3 разделены между компонентами 310 доступа к данным, которые расположены на устройстве 330, в котором размещен инициатор 210, и компонентами 315 доступа к данным, которые расположены на устройстве 335, в котором размещено хранилище 220. В другом варианте воплощения, когда хранилище 220 является внешним относительно устройства 335, могут иметься дополнительные компоненты доступа к данным, которые обеспечивают доступ к хранилищу 220.
[0068] Устройство 335 может рассматриваться как один пример поставщика разгрузки, поскольку это устройство включает в себя компоненты для выполнения операций чтения и записи для разгрузки и управления маркерами.
[0069] Поставщик маркера 320 может генерировать, проверять и аннулировать маркеры. Например, когда инициатор 210 просит маркер для данных в хранилище 220, поставщик маркера 320 может сгенерировать маркер, который представляет данные. Этот маркер может затем отсылаться обратно инициатору 210 через компоненты 310 и 315 доступа к данным.
[0070] В связи с генерацией маркера поставщик маркера 320 может создать информационную запись в хранилище 325 маркеров. Эта запись может связывать маркер с данными, которые указывают, где в хранилище 220 могут быть найдены данные, представленные маркером. Запись может также включать в себя другие данные, используемые в управлении маркером, например, когда аннулировать маркер, время жизни для маркера, другие данные и т.п.
[0071] Когда инициатор 210 или любой другой субъект предоставляет маркер поставщику 320 маркера, поставщик 320 маркера может выполнить поиск в хранилище 325 маркеров, чтобы определить, существует ли маркер. Если маркер существует и действителен, поставщик 320 маркера может предоставить информацию о местоположении компонентам 315 доступа к данным, чтобы эти компоненты могли логически считать, записать или логически выполнить другие операции с данными, как было запрошено.
[0072] В другой иллюстративной компоновке, аналогичной компоновке на фиг. 3, поставщик 320 маркера и хранилище 325 маркеров могут входить в состав устройства 330, а компоненты 310 доступа к данным соединяться с поставщиком 320 маркера. Например, операционная система (OS) устройства 330 может включать в себя поставщика 320 маркера и хранилище 325 маркеров. В этом примере инициатор 210 может предположить существование поставщика маркера и хранилища маркеров для всего копирования, выполняемого инициатором 210. При этом предположении инициатор 210 может быть реализован опускать код, который возвращается к нормальному чтению и записи.
[0073] В приведенном выше примере OS может реализовывать операцию чтения для разгрузки путем логического чтения запрошенных данных из компонентов 315 доступа к данным и сохранения данных в накопителе (энергозависимом или энергонезависимом) устройства 330, создавая новое значение маркера и ассоциируя заново созданное значение маркера с данными чтения. OS может реализовывать операцию записи для разгрузки путем копирования (например, путем логической записи) данных, ассоциированных с маркером, в место назначения, указанное инициатором 210. В этом примере инициатор 210 может иметь необходимость повторить попытку копирования на этапе операции чтения для разгрузки в некоторых сценариях, но эта повторная попытка может быть менее обременительной для инициатора, чем возврат к нормальному чтению и записи.
[0074] Фиг. 4 является блок-схемой, которая, в общем, представляет другую иллюстративную среду, в которой могут быть реализованы аспекты изобретения, описанного в настоящем документе. Как показано, среда включает в себя исходный инициатор 405, целевой инициатор 406, исходный контейнер 410 для хранения, целевой контейнер 411 для хранения, исходное физическое хранилище 415, целевое физическое хранилище 416, поставщика 420 разгрузки и может включать в себя другие компоненты (не показанные).
[0075] Исходный инициатор 405 и целевой инициатор могут быть реализованы аналогично инициатору 210 на фиг. 2. Исходный инициатор 405 и целевой инициатор 406 могут быть двумя отдельными субъектами или одним субъектом.
[0076] Если исходный контейнер 410 для хранения и целевой контейнер 411 для хранения реализованы с помощью одной системы, поставщик 420 разгрузки может быть реализован как один или несколько компонентов системы, реализующей контейнеры для хранения. Если исходный контейнер 410 для хранения и целевой контейнер 411 для хранения реализованы с помощью различных систем, поставщик 420 разгрузки может быть реализован как один или несколько компонентов, которые распределены между системами, реализующими контейнеры для хранения.
[0077] Кроме того, может быть более двух экземпляров контейнеров для хранения и физических хранилищ. Например, для данного маркера, полученного из источника, может быть указано более одного места назначения. Например, может быть выдано несколько команд на операцию записи для разгрузки, которые ссылаются на один маркер, и каждая операция записи для разгрузки может успешно иметь целью любое место назначения, известное поставщику 420 разгрузки.
[0078] Исходное физическое хранилище 415 и целевое физическое хранилище 416 могут быть одним и тем же хранилищем или различными хранилищами. Эти физические хранилища хранят физические данные, которые поддерживают исходный и целевой контейнеры для хранения, и могут также поддерживать данные, представленные маркерами.
[0079] Хотя показано, что имеется только один контейнер для хранения между инициатором и физическим хранилищем, как упоминалось ранее, в других вариантах воплощения может быть несколько уровней контейнеров для хранения между инициатором и физическим хранилищем.
[0080] Исходный инициатор 405 может получить маркер путем выдачи команды чтения для разгрузки. В ответ поставщик 420 разгрузки может сгенерировать маркер и предоставить его исходному инициатору 405.
[0081] Если исходный инициатор 405 и целевой инициатор 406 являются отдельными объектами, исходный инициатор 405 может предоставить маркер целевому инициатору 406. Целевой инициатор 406 может затем использовать маркер, чтобы выдать команду на операцию записи для разгрузки целевому контейнеру 411 для хранения.
[0082] При приеме запроса записи для разгрузки поставщик 420 разгрузки может проверить маркер и логически записать данные в целевой контейнер 411 для хранения, как указано в запросе записи для разгрузки.
Увеличение размера маркера
[0083] Для технологии разгрузки стандарт или отрасль могут требовать некоторый фиксированный размер маркера. По различным причинам некоторые разработчики могут хотеть размер, который больше, чем стандартный фиксированный размер.
[0084] Для предоставления маркеров больших размеров стандарт может быть изменен так, чтобы позволять несколько маркеров. Маркер больше, чем фиксированный размер, может тогда быть представлен несколькими меньшими подмаркерами фиксированного размера. Например, один стандарт требует, чтобы маркер имел 512 байтов. В реализации для этого стандарта каждый подмаркер может иметь в точности 512 байтов, в то время как больший маркер может иметь больше, чем 512 байтов (например, 995, 2000, 4096 или некоторое другое число байтов).
[0085] Фиг. 5 является схемой, которая иллюстрирует одну иллюстративную схему для представления одного большего маркера с помощью одного или нескольких меньших подмаркеров в соответствии с аспектами изобретения, описанного в настоящем документе. Как показано, иллюстративный больший маркер 505 может иметь требуемые стандартом поля H, ID P поставщика, случайные данные R, данные V продавца и другие данные X.
[0086] Требуемое стандартом поле H может включать в себя любые поля, требуемые или иным образом указанные в стандарте. Например, требуемые стандартом поля H могут включать в себя одно или несколько из следующего: данные, которые указывают, когда маркер был сгенерирован, данные, которые указывают, когда истекает время действия маркера, данные, которые указывают, откуда маркер пришел, или другие данные, указанные в стандарте.
[0087] ID P поставщика может указывать экземпляр поставщика разгрузки, который сгенерировал маркер. ID P поставщика может использоваться в тесте на порог для определения того, должен ли маркер игнорироваться или нет. Если ID P поставщика не является ID поставщика, который должен быть обеспечен поставщиком разгрузки, поставщик разгрузки может вообще отклонить маркер. В противном случае, поставщик разгрузки может предпринять дополнительные меры, чтобы проверить маркер.
[0088] Данные V продавца могут включать в себя любые данные, которые может желать продавец, реализующий поставщика разгрузки. В качестве одного примера, продавец может включить информацию об адресе, которая указывает адрес поставщика разгрузки, который обеспечил маркер 505. В качестве другого примера, данные V продавца могут включать в себя хэш-ключ, дайджест, ключ поиска, метаданные, данные, относящиеся к массиву данных, данные, которые помогают идентифицировать или определить местоположение частей массива данных, другие данные и т.п.
[0089] Другие данные X могут включать в себя любые другие данные, которые включены в маркер 505.
[0090] Подмаркеры могут передаваться с помощью практически любого протокола. Например, в одном примере подмаркеры могут передаваться с помощью протокола интерфейса малых компьютерных систем (SCSI). В другом примере подмаркеры могут передаваться с помощью протокола совместного доступа к файлам, который передает данные файла с помощью блоков серверных сообщений. Один иллюстративный протокол совместного доступа к файлам включает в себя протокол блоков серверных сообщений (SMB). В другом примере подмаркеры могут передаваться с помощью протокола распределенной файловой системы, который основан на удаленных вызовах процедур для доступа к файлам. Один иллюстративный протокол, основанный на удаленных вызовах процедур, включает в себя протокол сетевой файловой системы (NFS).
[0091] Примеры выше не являются полным или исчерпывающим списком протоколов, которые могут использоваться. Действительно, на основании идей настоящего документа специалисты в области техники могут найти много других протоколов, которые могут использоваться, не отступая от сущности или объема аспектов изобретения, описанного в настоящем документе.
0
N1
0
N1
0
N1
0
N2
0
N3
0
N1
0
N2
0
N3
[0092] Подмаркеры 510-515 могут быть маркерами фиксированного размера (например, продиктованного стандартом), которые представляют маркер 505. Подмаркеры 510-515 могут включать в себя различные поля. Например, подмаркер может включать в себя поля (H, H, H...), требуемые стандартом, поле (P) ID поставщика, ID (T) маркера, данные последовательности (S, S, S...), число, которое указывает, сколько подмаркеров представляют маркер 505, и данные, соответствующие данным маркера 505. Эти другие данные представлены с помощью H, R-R, V-V и X-X, где H соответствует требуемым стандартом полям H в маркере 505, R-R соответствуют случайным данным R в маркере 505, V-V соответствуют данным V продавца в маркере 505, и X-X соответствуют другим данным X в маркере 505.
0
N1
0
N1
[0093] Поля (H, H, H...) могут включать в себя любые данные, требуемые или иным образом указанные в стандарте. Это может включать в себя, например, заголовок или другие поля, указанные в любой версии протокола SCSI. Поля (H, H, H...) могут встречаться до и/или после любых других полей, указанных на фиг. 5.
0
N1
[0094] Когда используется протокол SCSI, поля (H, H, H...) могут включать в себя, например, заголовок или другие поля, указанные в любой версии протокола SCSI. Некоторые иллюстративные поля включают в себя: время создания маркера, тип маркера (например, копию момента времени), адрес источника, данные, идентифицирующие представление типа маркера данных, данные, которые идентифицируют каждый из подмаркеров как маркер для передачи массива данных, не требуя, чтобы массив данных проходил через инициатора команды, который запросил передачу, другие поля, указанные в протоколе SCSI, и т.п.
0
N1
0
N1
[0095] Когда используются другие протоколы, поля (H, H, H...) могут включать в себя, например, поля, требуемые или позволяемые этими протоколами. В одной реализации поля (H, H, H...) могут быть вообще опущены.
0
N1
[0096] В некоторых реализациях поля (H, H, H...) могут также включать в себя, например, типы данных, указанные выше относительно требуемых стандартом полей H маркера 505.
[0097] ID P поставщика может указывать экземпляр поставщика разгрузки, который сгенерировал маркер, и может использоваться таким же образом, как указано выше.
[0098] ID T маркера может быть данными, которые идентифицируют подмаркер как принадлежащий группе подмаркеров, которые представляют собой больший маркер. Например, ID маркера в виде "ABCD" в каждом из полей T подмаркеров 510-515 может идентифицировать подмаркеры 510-515 как принадлежащие группе подмаркеров, которые представляют маркер 505. Если подмаркер имеет другой ID маркера, поставщик разгрузки может определить, что подмаркер не является частью группы подмаркеров, которые представляют маркер 505.
0
N1
[0099] Данные последовательности (S, S, S...) могут включать в себя данные, которые указывают порядок подмаркеров. Например, данные последовательности могут включать в себя увеличивающееся число (например, 1, 2, 3, 4 и т.д.), которое указывает порядок подмаркеров. Порядок может использоваться для объединения подмаркеров 510-515 для реконструкции маркера 505 или его части.
[00100] В одной реализации данные из полей подмаркеров 510-515 могут объединяться для создания всех данных, включенных в маркер 505. Например, в этой реализации объединенные данные подмаркеров 510-515 могут включать в себя по меньшей мере данные, включенные в маркер 505.
[00101] В другой реализации подмаркеры 510-515 не включают в себя все данные, которые включены в маркер 505. Например, подмаркеры 510-515 могут включать в себя достаточно данных, чтобы идентифицировать (например, с помощью таблицы поиска или другой структуры данных) данные в маркере 505. Например, подмаркеры 510-515 могут объединяться для получения R и информации об адресе. R и информация об адресе может затем использоваться поставщиком разгрузки для поиска другой информации, включенной в маркер 505.
[00102] В другом примере один или несколько подмаркеров 510-515 могут включать в себя данные, которые могут использоваться для отображения на случайные данные R. В этом примере случайные данные R не могут быть реконструированы из данных, найденных исключительно в подмаркерах 510-515, случайные данные R могут быть найдены (например, в таблице поиска) по случайным данным, включенным в один или несколько подмаркеров 510-515. В этом примере другие данные (например, данные об адресе маркера 505) могут быть включены в один или несколько подмаркеров 510-515. Данные об адресе могут затем использоваться для определения местоположения таблицы отображения, например, которая может использоваться для определения местоположения других данных, включенных в маркер 505.
[00103] Аналогичный механизм может также использоваться для нахождения других опущенных данных, которые физически не присутствуют в подмаркерах 510-515, но которые могут быть найдены с использованием данных, которые отображаются на опущенные данные.
[00104] В одном примере один из подмаркеров (иногда называемый в настоящем документе главным подмаркером) может включать в себя все случайные данные R, в то время как другие подмаркеры могут не включать в себя никаких данных, которые соответствуют случайным данным R. В другом примере каждый из подмаркеров 510-515 может включать в себя данные, которые соответствуют случайным данным R.
[00105] Для проверки маркера 505 могут использоваться различные механизмы. В одном примере, после того как маркер 505 реконструирован из подмаркеров 510-515, выполняется побитовое сравнение для определения, является ли маркер 505 в точности маркером, сгенерированным поставщиком разгрузки. Если биты в маркере равны битам, найденным для маркера, имеющего R, в хранилище маркеров, маркер 505 может быть определен как действительный.
[00106] В другом примере может быть вычислен дайджест маркера 505, и дайджест может сравниваться с дайджестами маркеров, сгенерированных поставщиком разгрузки. В этом примере может быть выбран дайджест, который имеет низкую или нулевую вероятность вступления в противоречие с другими дайджестами. В этом примере, если дайджест равен дайджесту маркера, сгенерированного поставщиком разгрузки, маркер 505 может быть определен как действительный.
[00107] В другом примере маркер 505 может быть определен как действительный, если R равно R маркера, сохраненного поставщиком разгрузки.
[00108] В одной реализации больший маркер 505 является маркером, который предоставлен, фактически существует и реализован как одна или несколько структур данных. Больший маркер 505 может быть физически разделен на несколько подмаркеров 510, которые могут также объединяться для формирования большего маркера 505.
[00109] В другой реализации больший маркер 505 содержит виртуальный маркер разгрузки, который логически включает в себя поля, показанные для маркера 505, но где все поля не могут фактически находиться в той же самой структуре данных. В этой реализации маркер 505 не проходит через период, где одна порция данных включает в себя все поля маркера 505. Вместо этого подмаркеры 510-515 включают в себя данные, соответствующие маркеру 505 (или данные, применимые для нахождения данных маркера 505), но подмаркеры 510-515 фактически не объединяются для формирования монолитной порции данных, которая включает в себя поля маркера 505. Аналогично, в этой реализации маркер 505 не создается, а затем делится на подмаркеры 510-515. Больший маркер 505 называется виртуальным маркером разгрузки, потому что он не существует физически и независимо от подмаркеров 510-515, но существует виртуально в данных подмаркеров 510-515. Следует понимать, что когда маркер 505 описывается в настоящем документе, подразумеваются обе реализации.
[00110] Фиг. 6 является блок-схемой, которая представляет собой иллюстративную компоновку компонентов системы, в которой могут работать аспекты изобретения, описанного в настоящем документе. Как показано, система включает в себя инициатора 605, исходный стек 610 для хранения, целевой стек 611 для хранения, разделитель/инжектор 615, объединитель/экстрактор 616 и поставщика 630 разгрузки.
[00111] Поставщик 630 разгрузки, как показано, разделен на исходного поставщика 635 разгрузки и целевого поставщика 636 разгрузки, чтобы указать, что компоненты поставщика 630 разгрузки могут быть на различных машинах, которые осуществляют связь друг с другом для выполнения функций поставщика 630 разгрузки. В другом примере, однако, исходный поставщик 635 разгрузки и целевой поставщик 636 разгрузки могут быть объединены и размещены в одном компьютере. В одной реализации исходный поставщик 635 разгрузки и целевой поставщик 636 разгрузки являются вообще различными поставщиками разгрузки, которые могут согласовывать передачу данных разгрузки в ответ на команду записи для разгрузки.
[00112] Инициатор 605 инициирует чтение или запись для разгрузки. В одном примере инициатор 605 может быть разделен на исходного инициатора и целевого инициатора (как показано на фиг. 4), где исходный инициатор инициирует операцию чтения для разгрузки и получает несколько подмаркеров в ответ на нее, а затем предоставляет подмаркеры целевому инициатору, который позже инициирует операцию записи для разгрузки. В другом примере инициатор 605 может непосредственно инициировать и операцию чтения для разгрузки, и операцию записи для разгрузки.
[00113] Следует понимать, что операция записи для разгрузки является операцией записи для разгрузки независимо от формы. Например, отправление маркера другой машине, которая в свою очередь выдает команду записи для разгрузки, является в действительности лишь другим способом для инициатора операции чтения для разгрузки инициировать операцию записи для разгрузки.
[00114] И исходный стек 610 для хранения, и целевой стек 611 для хранения могут быть реализованы с помощью одного или нескольких компонентов, расположенных уровнями, где каждый уровень может выполнять различные функции.
[00115] Разделитель/инжектор 615 может включать в себя один или несколько компонентов. Разделитель/инжектор 615 может принимать команду чтения для разгрузки от исходного стека 610 для хранения. В ответ разделитель/инжектор 615 может отправлять команду чтения для разгрузки исходному поставщику 635 разгрузки. В ответ на команду чтения для разгрузки исходный поставщик 635 разгрузки может обеспечить большой маркер. После приема большого маркера разделитель/инжектор 615 может разделить маркер на множество меньших маркеров и предоставить эти меньшие маркеры исходному стеку 610 для хранения. Подмаркеры могут, например, иметь фиксированный стандартный размер, как упоминалось ранее.
[00116] В одной реализации команда чтения для разгрузки может включать в себя число, которое указывает, сколько подмаркеров может быть предоставлено в ответ на операцию чтения для разгрузки. Это число может исходить от инициатора 605 или компонента исходного стека 610 для хранения.
[00117] Если разделитель/инжектор 615 определяет, что число является достаточно большим, разделитель/инжектор 615 может предоставить подмаркеры, как было запрошено исходным стеком 610 для хранения. В противном случае в одном примере разделитель/инжектор 615 может вернуть сообщение, которое указывает, сколько подмаркеров необходимо, чтобы ответить на запрос чтения для разгрузки. В другом примере разделитель/инжектор 615 может вернуть ошибку, которая указывает, что число не является достаточно большим, и может позволить инициатору 605 попробовать большее число(а), если инициатор 605 решает так сделать.
[00118] В другой реализации команда на операцию чтения для разгрузки может опустить число, которое указывает, сколько подмаркеров может быть предоставлено в ответ на операцию чтения для разгрузки. В этой реализации компонент, отправляющий команду чтения для разгрузки, может запрашивать подмаркеры, пока разделитель/инжектор 615 не укажет, что были предоставлены все подмаркеры для команды на операцию чтения для разгрузки.
[00119] В другой реализации разделитель/инжектор 615 может указать число подмаркеров, которые были сгенерированы в ответ на команду чтения для разгрузки. Компонент, который отправил команду чтения для разгрузки, может тогда отвечать за получение подмаркеров от разделителя/инжектора 615.
[00120] В команде записи для разгрузки с несколькими подмаркерами инициатор 605 может отправить подмаркеры целевому стеку 611 для хранения, который может отправить подмаркеры объединителю/экстрактору 616. Объединитель/экстрактор 616 может затем объединить подмаркеры в один большой маркер и предоставить один большой маркер целевому поставщику 636 разгрузки.
[00121] Подмаркеры могут быть предоставлены в одном сообщении или в нескольких сообщениях в зависимости от реализации.
[00122] В одной реализации разделитель/инжектор 615 может быть объединен с исходным поставщиком 635 разгрузки, а объединитель/экстрактор 616 может быть объединен с целевым поставщиком 636 разгрузки. По меньшей мере в этой реализации разделитель/инжектор 615 может вставить данные виртуального маркера разгрузки в подмаркеры, в то время как объединитель/экстрактор 616 может извлечь данные из подмаркеров, даже если больший маркер никогда не существовал как физическая структура данных.
[00123] Фиг. 7-9 являются блок-схемами последовательности операций, которые, в общем, представляют иллюстративные действия, которые могут происходить в соответствии с аспектами изобретения, описанного в настоящем документе. Для простоты объяснения методология, описанная в связи с фиг. 7-9, изображена и описана как последовательность действий. Следует понимать и принимать во внимание, что аспекты изобретения, описанного в настоящем документе, не ограничиваются иллюстрированными действиями и/или порядком действий. В одном варианте воплощения действия происходят в порядке, описанном ниже. Однако в других вариантах воплощения действия могут происходить параллельно, в другом порядке и/или вместе с другими действиями, не представленными и описанными в настоящем документе. Кроме того, не все иллюстрированные действия могут быть необходимы для реализации методологии в соответствии с аспектами изобретения, описанного в настоящем документе. Кроме того, специалисты в области техники поймут и примут во внимание, что методология может быть альтернативно представлена как последовательность взаимосвязанных состояний с помощью диаграммы состояний или как события.
[00124] Фиг. 7 является блок-схемой последовательности операций, которая, в общем, представляет собой иллюстративные действия, которые могут происходить в целевом поставщике разгрузки в соответствии с аспектами изобретения, описанного в настоящем документе. С блока 705 начинаются действия.
[00125] В блоке 710 принимается сообщение, которое указывает, что два или более подмаркеров представляют больший маркер. Каждый подмаркер имеет фиксированный размер (например, размер, указанный в стандарте). Больший маркер имеет размер, который больше, чем фиксированный размер. Это означает, что данные, содержащиеся в большем маркере, больше, чем может поместиться в одном из подмаркеров. Данные, соответствующие большему маркеру, сохраняются поставщиком разгрузки. Данные могут сохраняться в одной структуре данных, соответствующей большему маркеру, или в нескольких структурах данных (например, которые не объединяются). Больший маркер представляет собой данные, которые являются неизменными, пока данные в большем маркере являются действительными.
[00126] Например, обращаясь к фиг. 6, объединитель/экстрактор 616 может принять подмаркеры из целевого стека 611 для хранения. Подмаркеры могут быть обеспечены инициатором 605 в связи с операцией записи для разгрузки, направленной целевому стеку 611 для хранения.
[00127] В блоке 715 данные извлекаются из подмаркеров. Извлечение данных может включать в себя, например, объединение подмаркеров в больший маркер перед получением данных или получение данных из подмаркеров без объединения подмаркеров в больший маркер. Например, обращаясь к фиг. 6, объединитель/экстрактор 616 может объединить/извлечь данные из подмаркеров. Например, некоторые из извлеченных данных могут включать в себя число, которое ассоциирует маркер с данными, которые представляет маркер. Это число иногда называется ключом.
[00128] В блоке 720 ключ получается из одного или нескольких подмаркеров. Например, обращаясь к фиг. 6, после того, как объединитель/экстрактор 616 объединит подмаркеры, чтобы сформировать больший маркер, целевой поставщик 636 разгрузки может получить ключ из большего маркера. В качестве другого примера, без физического объединения данных подмаркеров объединитель/экстрактор 616 может извлечь ключ из виртуального маркера (например, одного или нескольких подмаркеров) без физического объединения всех данных подмаркеров.
[00129] В блоке 725 компоненту поставщика разгрузки предоставляется подтверждение ключа. С использованием подтверждения может быть проведена проверка действительности ключа как часть действий блока 725 или как отдельный набор действий. Предоставление подтверждения ключа может включать в себя, например:
[00130] 1. обеспечение самого ключа;
[00131] 2. обеспечение ключа и других данных (одного или нескольких полей) большего маркера;
[00132] 3. обеспечение дайджеста (например, хеш-функции) ключа;
[00133] 4. обеспечение дайджеста, полученного из ключа и других данных (одного или нескольких полей) большего маркера; или
[00134] 5. обеспечение другого подтверждения ключа и/или большего маркера.
[00135] Фиг. 8 является блок-схемой последовательности операций, которая, в общем, представляет иллюстративные действия, которые могут происходить в исходном поставщике разгрузки в соответствии с аспектами изобретения, описанного в настоящем документе. С блока 805 начинаются действия.
[00136] В блоке 810 принимается запрос чтения для разгрузки. Например, обращаясь к фиг. 6, исходный поставщик 635 разгрузки принимает запрос чтения для разгрузки, инициированный инициатором 605.
[00137] В блоке 815 в ответ на сообщение чтения для разгрузки генерируется ключ для возврата в ответ на сообщение чтения для разгрузки. Ключ помещается в маркер (физический или виртуальный), данные которого будут размещены в подмаркерах для возврата в ответ на сообщение операции чтения для разгрузки. Например, обращаясь к фиг. 6, исходный поставщик 635 разгрузки может сгенерировать маркер, который включает в себя ключ.
[00138] В блоке 820 данные маркера делятся/вставляются в подмаркеры. Например, обращаясь к фиг. 6, разделитель/инжектор 615 берет данные из маркера, сгенерированного в блоке 815, и разделяет/вставляет данные в подмаркеры, которые предоставляются исходному стеку 610 для хранения для доставки инициатору 605.
[00139] В блоке 825 принимается подтверждение ключа. Например, обращаясь к фиг. 6, компонент исходного поставщика 635 разгрузки принимает подтверждение ключа. В одном примере это подтверждение может быть принято, когда поставщик разгрузки 630 получает ключ из подмаркеров, принятых от объединителя/экстрактора 616. В другом примере компонент поставщика разгрузки в месте назначения операции записи для разгрузки (например, целевом поставщике 636 разгрузки) может получить ключ, содержащийся в подмаркерах, считать адрес, содержащийся там, использовать адрес, чтобы установить связь с компонентом (например, исходным поставщиком 635 разгрузки) поставщика разгрузки, который сгенерировал ключ, и предоставить ключ компоненту. В другом примере целевой поставщик разгрузки, который является другим поставщиком разгрузки, чем исходный поставщик разгрузки, может принять ключ и информацию об адресе, установить связь с исходным поставщиком разгрузки и предоставить ключ. Используя подтверждение, может быть проведена проверка действительности ключа как часть действий блока 825 или как отдельный набор действий.
[00140] В блоке 830 обеспечивается массив данных, соответствующий маркеру. Например, обращаясь к фиг. 6, исходный поставщик 635 разгрузки может предоставить часть или весь массив данных, соответствующий маркеру, целевому поставщику 636 разгрузки.
[00141] В блоке 835 могут быть выполнены другие действия, если таковые имеются.
[00142] Фиг. 9 является блок-схемой последовательности операций, которая, в общем, представляет иллюстративные действия, которые могут происходить в инициаторе разгрузки в соответствии с аспектами изобретения, описанного в настоящем документе. С блока 905 начинаются действия.
[00143] В блоке 910 инициируется запрос чтения для разгрузки путем осуществления связи с компонентом исходного стека для хранения. Например, обращаясь к фиг. 6, инициатор 605 может отправить запрос чтения для разгрузки исходному стеку 610 для хранения. В связи с запросом чтения для разгрузки может быть отправлено число, которое указывает максимальное число подмаркеров, которые можно вернуть в ответ на запрос чтения для разгрузки.
[00144] В блоке 915, в ответ на упомянутое сообщение, принимаются подмаркеры. Подмаркеры представляют маркер (физический или виртуальный), который больше, чем любой из подмаркеров по отдельности. Больший маркер представляет данные, которые являются неизменными, пока больший маркер является действительным. Например, обращаясь к фиг. 6, в ответ на запрос чтения для разгрузки инициатор принимает несколько подмаркеров. В связи с приемом подмаркеров может быть принято число, которое указывает, сколько подмаркеров было сгенерировано в ответ на запрос чтения для разгрузки.
[00145] В блоке 920 инициатор предоставляет подмаркеры компоненту целевого стека для хранения. Например, обращаясь к фиг. 6, инициатор 605 предоставляет подмаркеры компоненту целевого стека 611 для хранения.
[00146] В блоке 925 могут выполняться другие действия, если таковые имеются.
[00147] Как видно из предшествующего подробного описания, были описаны аспекты, относящиеся к технологии разгрузки. Хотя аспекты изобретения, описанного в настоящем документе, могут подвергаться различным модификациям и иметь альтернативные конструкции, некоторые иллюстрированные варианты его воплощения были показаны на чертежах и подробно описаны выше. Однако следует понимать, что нет намерения ограничить аспекты заявляемого изобретения конкретными раскрытыми формами, напротив, намерение состоит в том, чтобы охватить все модификации, альтернативные конструкции и эквиваленты, попадающие в рамки сущности и объема различных аспектов изобретения, описанного в настоящем документе.