ВИРТУАЛИЗАЦИЯ МАССОВОГО ЗАПОМИНАЮЩЕГО УСТРОЙСТВА ДЛЯ ОБЛАЧНЫХ ВЫЧИСЛЕНИЙ
MASS STORAGE VIRTUALIZATION FOR CLOUD COMPUTING

ИСПРАШИВАНИЕ ПРИОРИТЕТА
На настоящую заявку испрашивается преимущество приоритета по принадлежащей тому же правообладателю одновременно находящейся на рассмотрении обычной заявке на патент США с номером 14/135,213 на имя Roelof Roderick Colenbrander под названием "MASS STORAGE VIRTUALIZATION FOR CLOUD COMPUTING" (номер в патентном реестре SCEA13031US00), поданной 19 декабря 2013 г., содержимое которой целиком включено в настоящий документ посредством ссылки.
ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
Данная заявка соотносится с принадлежащей тому же правообладателю, одновременно находящейся на рассмотрении заявкой на патент США с номером 14/135,374 на имя Roelof Roderick Colenbrander под названием " VIDEO LATENCY REDUCTION" (номер в патентном реестре SCEA13037US00), поданной 19 декабря 2013 г., содержимое которой целиком включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
Аспекты настоящего раскрытия изобретения относятся к виртуализации запоминающего устройства. Другие аспекты настоящего раскрытия относятся к виртуализации запоминающего устройства для приложений облачных вычислений, разработанных для встроенных платформ.
УРОВЕНЬ ТЕХНИКИ
В условиях продолжающегося расширения диапазона передачи и повышения скоростей передачи данных телекоммуникационных систем потребность в современных вычислительных ресурсах часто смещается в сторону распределенных компьютерных систем на сетевой основе, получивших общее название "облачных вычислений". В общем смысле, облачные вычисления включают в себя передачу определенных задач компьютерных ресурсов одному или большему количеству удаленных компьютерных ресурсов и использование удаленных компьютерных ресурсов для предоставления сервисов локальному устройству. Облачные вычисления часто реализуются в виде модели "клиент-сервер", в которой удаленный сервер предоставляет требуемые возможности компьютерных ресурсов локальному клиентскому устройству, избавляя локальное клиентское устройство от необходимости выполнять определенные задачи компьютерных ресурсов своими силами. Во многих случаях компьютерные ресурсы могут быть перенесены на сервер целиком или почти целиком, и при этом клиент выполняет функции всего лишь или не более чем пользовательского интерфейса в отношении задачи облачных вычислений, предоставляя теоретическую возможность любому устройству, подключенному к Интернету, действовать в качестве клиента для конкретного приложения.
Облачные вычисления нашли применение в широком диапазоне компьютерных сервисов, включая решения по удаленному хранению данных, сервисы потоковой передачи музыки и видео и решения широкого разнообразия других задач потребительского и делового сектора. В целом, облачные вычисления обеспечивают ряд хорошо известных преимуществ, включая повышенную эффективность работы за счет использования общих ресурсов, повышенную гибкость при доступе к контенту без ограничений для конкретного устройства, уменьшенные начальные капитальные затраты при появлении обновлений аппаратных средств и другие преимущества.
Областью, в которой облачные вычисления имеют большие перспективы расширения применения, является неизменно популярная область компьютерных видеоигр. Видеоигры, включая игры на персональных компьютерах (ПК), домашние игровые приставки, мобильные игровые приставки и т.п., остаются популярным источником развлечений среди потребителей. В условиях большого и непрерывно расширяющегося разнообразия названий доступных видеоигр облачные вычисления являются особенно привлекательным решением по многим запросам на видеоигры. В идеальном случае пользователь в среде облачных игровых услуг должен иметь возможность моментально получать доступ к любому названию видеоигры среди огромной коллекции удаленно сохраняемых названий без необходимости физического копирования игры, без необходимости загрузки названия и без необходимости на месте иметь аппаратные средства или ресурсы для прогона игры. К сожалению, реализация данного типа сервиса в рамках традиционного построения сервера облачных вычислений связана с рядом технических проблем, которые до настоящего времени препятствовали широкомасштабному применению облачных игровых услуг в качестве платформ многих видеоигр.
Одна проблема состоит в том, что современные видеоигры очень динамичны по событиям и являются играми с активными действиями на основе современной графики, для работы которой требуется значительный объем компьютерных ресурсов. В частности, в конструкции сервера, являющегося основой для потоковой видеопередачи, в котором все игровые вычисления и вычисления по работе графики выполняются дистанционно, должна быть обеспечена возможность во время игры выполнять все эти задачи и доставлять сжатый поток аудио/видеосигналов клиентскому устройству с минимальной или практически неощутимой задержкой в ответ на управляющие входные сигналы. В противном случае может быть оборван отсчет времени для игрока и нарушена способность воспроизвести чувствительность игрового сеанса, традиционно реализуемого на локальном уровне.
Другая проблема проистекает из того, что традиционно существовало различие между, с одной стороны, играми на ПК, которые разработаны для их выполнения на персональных компьютерах, переносных компьютерах и в других компьютерных системах универсального характера, и, с другой стороны, консольными играми, которые разработаны для их выполнения в специализированных системах, известных под названием игровых видеоприставок. Игровые видеоприставки обычно конструируются в виде встраиваемых платформ, имеющих единственные в своем роде архитектуры компьютерных ресурсов, специально адаптированные к среде видеоигр. При использовании специализированных консольных аппаратных средств в качестве платформы для видеоигр обеспечивается ряд преимуществ, в частности, в части оптимизации аппаратных средств при высоких потребностях в вычислительных ресурсах со стороны процессов графического отображения и игровых вычислений, требуемых для реализации многих современных видеоигр. Как следствие этого, несмотря на приобретение играми на ПК определенной популярности, консольные игры заняли традиционно доминирующее положение на рынке видеоигр и могут продолжить это доминирование в будущем.
Однако адаптация видеоигровых приставок и других встраиваемых платформ к облачному потоковому сервису сопряжена с несколькими проблемами. Внесение масштабных изменений в архитектуру аппаратных средств или программного обеспечения специализированной платформы может вызвать проблемы совместимости с приложениями, разработанными для специализированной платформы. В результате традиционные методы виртуализации сервера хранения данных и запоминающего устройства не являются жизнеспособным решением для основывающейся на облачных сервисах потоковой передачи приложений, разработанных для многих из этих платформ.
Именно в данном контексте представляется настоящее раскрытие изобретения.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Вариант реализации раскрываемого здесь изобретения может включать в себя интерфейсное устройство, содержащее первый коммуникационный интерфейс, второй коммуникационный интерфейс и специализированный процессор, функционально связанный с указанными коммуникационными интерфейсами. Первый коммуникационный интерфейс представляет собой интерфейс массового запоминающего устройства. Второй коммуникационный интерфейс представляет собой интерфейс расширения. Специализированный процессор включает в себя контроллер массового запоминающего устройства, соединенный с первым коммуникационным интерфейсом, и подсистему прямого доступа к памяти (DMA), соединенную со вторым коммуникационным интерфейсом. Контроллер массового запоминающего устройства выполнен с возможностью приема запроса данных массового запоминающего устройства через первый коммуникационный интерфейс. Подсистема прямого доступа к памяти выполнена с возможностью уведомления хост-системы через второй коммуникационный интерфейс о запросе данных массового запоминающего устройства.
Другой вариант реализации раскрываемого здесь изобретения может включать в себя систему, содержащую центральное процессорное устройство; первый блок памяти, функционально связанный с центральным процессорным устройством; процесс сохранения данных, реализуемый в первом блоке памяти и исполняемый центральным процессорным устройством (ЦПУ); первый коммуникационный интерфейс и специализированный процессор, функционально связанный с первым коммуникационным интерфейсом. Первый коммуникационный интерфейс представляет собой интерфейс массового запоминающего устройства.
Специализированный процессор содержит контроллер массового запоминающего устройства, соединенный с первым коммуникационным интерфейсом, и интерфейс доступа к памяти, функционально связанный с ЦПУ. Контроллер массового запоминающего устройства выполнен с возможностью приема запроса данных массового запоминающего устройства через первый коммуникационный интерфейс. Интерфейс доступа к памяти выполнен с возможностью уведомления процесса сохранения данных о запросе данных массового запоминающего устройства. Процесс сохранения данных выполнен с возможностью обработки запроса данных путем доступа к системе хранения данных.
Еще один вариант реализации может представлять собой способ, включающий в себя: а) прием от первого вычислительного устройства запроса данных массового запоминающего устройства в контроллере массового запоминающего устройства; b) уведомление (с помощью интерфейса доступа к памяти, соединенного с контроллером массового запоминающего устройства) процесса сохранения данных, осуществляемого во втором вычислительном устройстве, о запросе данных; с) выполнение доступа (с помощью процесса сохранения данных из второго вычислительного устройства) к системе хранения данных, содержащей данные, соответствующие запросу данных; d) запоминание (с помощью процесса сохранения данных из второго вычислительного устройства) данных, соответствующих запросу данных, в первом блоке памяти; е) программирование (с помощью процесса сохранения данных из второго вычислительного устройства) контроллера массового запоминающего устройства на доступ к данным из первого блока памяти с целью выполнения запроса данных.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Идеи раскрываемого здесь изобретения могут быть легко усвоены путем рассмотрения следующего подробного описания в сочетании с сопроводительными чертежами, среди которых:
Фиг. 1 представляет собой схематическое изображение примера осуществления потоковой передачи в сети.
Фиг. 2 представляет собой схематическое изображение другого примера осуществления потоковой передачи в сети.
Фиг. 3 представляет собой схематическое изображение примера построения хост-системы, содержащей интерфейсную карту, обеспечивающую виртуализацию памяти для терминальной системы.
Фиг. 4А-4В представляют собой схематическое изображение примера компьютерной архитектуры для хост-системы, связанной с терминальной системой. Фиг. 4А представляет собой схематическое изображение примера архитектуры терминальной системы. Фиг. 4В представляет собой схематическое изображение архитектуры хост-системы и интерфейсной карты.
Фиг. 5 представляет собой схематическое изображение конструкции интерфейсной карты, содержащей специализированный процессор.
Фиг. 6 представляет собой схематическое изображение способа эмуляции массового запоминающего устройства.
ПОДРОБНОЕ ОПИСАНИЕ
Несмотря на то что следующее подробное описание содержит множество конкретных деталей в иллюстративных целях, любому специалисту со средним уровнем знаний в данной области техники будет понятно, что допускается множество вариаций и изменений указываемых далее деталей без отступления от области действия изобретения. Соответственно, описываемые далее примеры осуществления изобретения приводятся без отступления от общей идеи и без ввода ограничений в отношении изобретения, определяемого формулой изобретения.
Введение
Аспекты настоящего раскрытия изобретения относятся к системам и способам для виртуализации массового запоминающего устройства с использованием интерфейсной карты или другого специального аппаратного блока, функционально связанного с хост-системой. В различных вариантах осуществления интерфейсное устройство и хост-система могут совместно эмулировать массовое запоминающее устройство для другой "терминальной" вычислительной системы в форме, являющейся прозрачной для терминальной системы. Кроме того, в различных вариантах осуществления массовое запоминающее устройство может быть эмулировано способом, являющимся прозрачным для терминальной системы, без необходимости внесения изменений в аппаратные средства терминальной платформы или в архитектуру программного обеспечения.
Специалисты в данной области могут быть знакомы с программным обеспечением 'виртуальной машины', таким как VMWare, VirtualBox или Parallels, которое позволяет выполнять сеанс операционной системы давно известного типа (например, Windows ХР) внутри сеанса более новой операционной системы (например, Windows 7). Программное обеспечение виртуальной машины часто используется для имитации физических компонентов аппаратных средств, таких как дисководы, сетевые карты, видеокарты в программном обеспечении в целях совместимости. Согласно аспектам настоящего раскрытия специализированные аппаратные и программные средства имеют возможность виртуализировать массовое запоминающее устройство в ситуациях, когда использование для этой цели только программного обеспечения является непрактичным.
Подробности реализации
Для более понятной демонстрации различных аспектов настоящего раскрытия изобретения приводится первый иллюстративный пример распределенной вычислительной системы 100 на фиг. 1. Распределенная система 100, изображенная на фиг. 1, содержит множество вычислительных устройств 102, 104, соединенных через сеть 106, например сеть Интернет.
В примере распределенной системы потоковый сервер 102 выполняет программу 108 с целью обеспечить поток выходных данных программы в реальном времени дистанционно подключенному клиентскому устройству 104 по сети 106. В иллюстративном схематическом изображении на фиг. 1 программой 104 может являться программа видеоигры, которая обрабатывает входные управляющие сигналы, поступающие от клиентского устройства 104, и посылает сжатый поток аудио- и видеосигналов клиентскому устройству 104 в соответствии с выполнением программы 108. Пользователь, находящийся на клиентской стороне, может взаимодействовать с программой через пользовательский интерфейс клиентского устройства 104, например, путем выдачи управляющих входных сигналов и приема аудио- и видеовыходных игровых сигналов на дисплее и/или на динамиках, подсоединенных к клиентскому устройству 104. В примере на фиг. 1 вычислительная нагрузка для обработки входных сигналов, отображающих графику видеоигры, и подобная нагрузка могут быть целиком переданы потоковому серверу 102 для дистанционного выполнения. Чтобы реализовать облачные игровые сервисы с помощью системы 100, показанной на фиг. 1, потоковый сервер 102 может быть настроен не только на выполнение игровой программы 108, но потоковый сервер 102 может также осуществлять "процесс потокового сервера" 110, реализованный в сервере 102 и способный выполнять различные функции с целью координации входных/выходных данных программы для обеспечения связи между клиентским устройством 104 и потоковым сервером 102 по сети 106. Например, процесс 110 потокового сервера может быть реализован в одном или большем количестве приложений, выполняемых на потоковом сервере 102 во взаимодействии с игровым программным обеспечением 108. Дистанционное выполнение игровой программы 108 вместе с процессом 110 потокового сервера может быть обеспечено с минимальным или нулевым временем запаздывания между входными и выходными сигналами в клиентском устройстве 104 так, что в восприятии пользователя на клиентской стороне программа 108 выполняется в локальном режиме. Кроме того, доступной для выполнения может быть обширная коллекция дистанционно сохраненных программ. Например, в приложении облачного игрового сервиса пользователю понадобится способность выбрать любую игру, разработанную для соответствующей платформы видеоигр, и удаленный сервер окажется в состоянии загрузить игру, выполнить ее и осуществить потоковую передачу ее выходных сигналов клиентскому устройству в соответствии с входными сигналами, полученными от пользователя, без ощутимого времени запаздывания между принятыми входными сигналами и выходными аудио/видеосигналами.
В примере, иллюстрируемом фиг. 1, это может быть осуществлено путем выполнения как процесса 110 потокового сервера, так и игрового кода 108 в одном и том же вычислительном устройстве, например в потоковом сервере 102. Потоковый сервер может осуществлять выборку нужной программы теоретически из любого запоминающего устройства, такого как массовое запоминающее устройство с локальным подключением, сервер хранения данных, сетевой накопитель и т.п. с помощью соответствующего соединения. Для облачных игровых сервисов и других вариантов облачных вычислений это может быть легко реализовано, если программное приложение 108, выполняемое на сервере 102 для клиента 104, разработано для работы с архитектурой персонального компьютера (ПК) или другой компьютерной архитектурой, аналогичной архитектуре сервера Streamliner 102. В качестве примера, не подразумевающего никаких ограничений, можно использовать для реализации облачных игровых сервисов на ПК легкодоступный сервер на основе платформы х86 не только для реализации процесса 110 потокового сервера, но также для исполнения игровой программы 108 на ПК сразу после доступа к ней сервера 102.
Однако пример работы системы 100, проиллюстрированный фиг. 1, может не подходить для определенных вариантов применения, в которых программа 108 разработана для выполнения во встроенных платформах и других специализированных архитектурах. Например, если требуемая программа представляет собой программу видеоигры, разработанную для специализированной консольной программы, игровое программное обеспечение может оказаться не пригодным к выполнению в архитектуре сервера без определенного типа эмулятора. К сожалению, в среде облачных вычислений, в которой главным предметом заботы является минимизация времени запаздывания, программный эмулятор, выполненный на потоковом сервере, может быть нежелательным решением, особенно в приложениях с интенсивной графикой, в которых интерпретация кода эмулятором во время выполнения привела бы к внесению ощутимой задержки. Кроме того, во многих случаях было бы непрактичным создавать специализированный сервер применительно к каждой уникальной архитектуре, для которой требуется облачный сервис. В других ситуациях эмулятор мог бы быть желательным решением, но не удается получить соответствующий эмулятор.
С целью решения этих проблем может понадобиться использование дополнительного вычислительного устройства на стороне сервера для выполнения программы, причем дополнительное вычислительное устройство выполняет требуемую программу одновременно с тем, как связанный с ним потоковый сервер выполняет свои обычные функции по сопряжению с клиентским устройством. Пример, иллюстрирующий построение распределенной системы 200, в которой используется такой способ работы, приведен на фиг. 2, где "терминальная система" 212 соединена с потоковым сервером 202, и терминальная система выполняет требуемую прикладную программу 208.
Потоковый сервер способен обеспечить ресурсы для сетевого хранения и для сжатия видеосигналов в том случае, если в ином варианте терминальная система не обладает свободными ресурсами, достаточными для выполнения этих функций.
В определенных вариантах реализации терминальная система 212 может представлять собой встроенную систему или другую вычислительную систему, имеющую специализированную архитектуру, такую как архитектура видеоигровой приставки, в то время как основу потокового сервера 202 может оставлять любая архитектура вычислительного устройства, например архитектура с набором команд х86, адаптированная к предоставлению потоковых сервисов и необязательно являющаяся аналогом архитектуры терминальной системы 212. Потоковый сервер 202 может быть настроен на выполнение процесса 202 потокового сервера и предоставление обычных облачных сервисов для программы 208 терминальной системы, а вычислительные устройства на стороне сервера (например, потоковый сервер 202 и терминальная система 212) могут совместно работать по предоставлению потоковых сервисов видеоигр для клиентского устройства 204.
Конфигурация, схематически представленная в упрощенном виде на фиг. 2, может обеспечить практичное и гибкое решение для сервера, который в этом случае может быть легко приспособлен к множеству различных программных платформ, разработанных для множества различных компьютерных архитектур. Например, теоретически любой потоковый сервер 202 можно было бы адаптировать к потоковым программным приложениям, разработанным для множества различных компьютерных архитектур, путем локального подключения терминальной системы, выполняющей программное обеспечение.
Однако выполнение требуемого программного обеспечения в терминальной системе 212 на стороне сервера может привести к определенным проблемам внутри интегрированной среды облачных вычислений. Например, терминальная система 212 может быть способна к выполнению любой программы, выбираемой из множества различных программ, для текущего потокового сеанса аналогично процессу, описанному выше применительно к примеру построения, приведенному на фиг. 1. Аналогично, любые операции считывания/записи данных в запоминающем устройстве, требуемом программе 208, выполняемой в терминальной системе 212, можно было бы освободить от ограничений, сопутствующих работе терминальной системы с локальной памятью. Запросы данных запоминающего устройства обычно выполняются путем подключения массового запоминающего устройства в терминальной системе 212, например, через последовательный интерфейс присоединения по стандарту ATA (Advanced Technology Attachment; SATA) или через другой интерфейс массового ЗУ. Было бы желательно обеспечить решение по виртуализированному запоминающему устройству для терминальной системы без необходимости внесения изменений в архитектуру ее аппаратных средств или расходования дополнительных компьютерных ресурсов процессом виртуализации памяти.
Для более понятного изложения проблемы в контексте среды облачных игровых сервисов далее приводится пример, иллюстрирующий возможность использования сервера в комплектации, показанной на фиг. 2, в конкретном примере реализации облачных игровых сервисов. В частности, для сеанса игровых сервисов "облачной терминальной системе" 212 может быть назначен пользователь на клиентском устройстве 204. Когда пользователь запускает начало игры 208, он желает иметь доступ к игре в облачной терминальной системе 212. Аналогично, когда завершается игровой сеанс и пользователь отключается, терминальная система 212 должна быть возвращена в исходное состояние для возможности использования в следующем сеансе другим пользователем, возможно, с выбором другой игры.
К сожалению, виртуализация памяти игровых данных таким способом с использованием программного обеспечения виртуализации памяти внутри терминальной системы 212 привела бы к расходованию ценных компьютерных ресурсов (ЦПУ и памяти) и, возможно, к проблемам совместимости с игровыми сервисами. Кроме того, в приложении, связанном с высокой вычислительной нагрузкой, какая имеет место во многих современных видеоиграх, заключающих в себе задачи современной графики и другие задачи с интенсивным использованием ресурсов, расходование дополнительных ресурсов из терминальной системы для виртуализации памяти вряд ли является жизнеспособным решением.
Пример, иллюстрирующий методику виртуализации запоминающего устройства согласно различным реализациям раскрываемого здесь изобретения, приведен на фиг. 3. В примере методики виртуализации, представленном на фиг. 3, массовое запоминающее устройство эмулировано с использованием "хост-системы", содержащей специализированный набор аппаратных средств, такой при котором возможна эмуляция массового запоминающего устройства для терминальной системы, подключенной к хост-системе. Методика, пример которой представлен на фиг. 3, может быть реализована в облачном потоковом приложении, аналогичном тому, которое представлено на фиг. 2 и в котором терминальная система может представлять собой специализированную систему, выполняющую требуемую прикладную программу, а хост-системой для эмуляции массового запоминающего устройства является потоковый сервер. Однако следует понимать, что виртуализация запоминающего устройства в соответствии с изложенными здесь принципами может быть осуществлена в других контекстах, включающих в себя приложения облачных вычислений наряду с игровыми потоковыми операциями, и в режимах локальной реализации, в которых требуется виртуализация запоминающего устройства для вычислительного устройства, в частности, без внесения изменений в вычислительное устройство.
При более подробном рассмотрении фиг. 3 видно, что виртуализированное запоминающее устройство предоставляется терминальной системе 312 с использованием специализированного интерфейса 320, связанного с хост-системой 302 для интерфейсного устройства, каковым в данном случае является потоковый сервер. Интерфейсное устройство 320 совместно с процессом 322 сохранения данных, реализованным в хост-системе 302, может выполнять различные запросы данных массового запоминающего устройства, получаемые от терминальной системы 312. В примере, иллюстрируемом фиг. 3, интерфейсное устройство 320 может являться частью аппаратных средств, воспринимаемой терминальной системой в качестве реального массового запоминающего устройства, однако при более пристальном рассмотрении его данные могут поступать от сервера сохранения данных (не показан). Для обычного массового запоминающего устройства, как правило, используется соединение через интерфейс SATA или через другой стандартный интерфейс массового ЗУ. Чтобы эмулировать массовое запоминающее устройство и получать запросы данных, интерфейсное устройство 320, показанное на фиг. 3, может содержать аналогичное соединение через SATA или другой коммуникационный интерфейс массового ЗУ, совместимый с коммуникационным интерфейсом массового запоминающего устройства (ЗУ) терминальной системы, наряду с дополнительными компонентами, такими как специализированный процессор, память и другие компоненты.
Чтобы в различных вариантах реализации оптимизировать простое интегрирование функционала виртуализации запоминающего устройства в вычислительную систему, такую как потоковый сервер или другая "хост" система, интерфейсное устройство 320 может быть исполнено в виде расширительной карты, например расширительной платы PGI-Express, которая может быть подсоединена к хост-системе 302 через интерфейс расширения хост-системы. Во время работы интерфейс может принимать запросы чтения с диска и/или записи на диск от терминальной системы через свое соединение с массовым запоминающим устройством (например, через SATA-порт). Эти запросы доступа к данным могут быть в крайнем случае обработаны приложением 322 сохранения данных в хост-системе 302, и приложение сохранения данных может получать доступ к данным из файла, севера сохранения данных или из иного источника.
Возможно опциональное оснащение интерфейсного устройства 320 дополнительными компонентами для обеспечения дополнительного функционала, который может быть особо полезен в контексте облачных потоковых операций, хотя данная опция не требуется функционалу виртуализации запоминающего устройства. Например, для поддержки функционала потоковых операций в хост-системе возможно опциональное добавление в интерфейсное устройство 320 одного или большего количества дополнительных интерфейсов для передачи аудио- и/или видеоинформации, а также соответствующего функционала для поддержки потоковой передачи аудио/видео (A/V) информации посредством потокового процесса хост-системы 302 с целью поддержки облачных игровых сервисов или других вариантов реализации облачных вычислений. Опциональный A/V-интерфейс интерфейсного устройства 320 может быть совместим с терминальной системой 312 и может быть настроен в соответствии с любым из множества стандартов на A/V-интерфейс, таких как HDMI, интерфейс для композитного видеосигнала, интерфейс для компонентного видеосигнала, интерфейс для сигнала раздельного видео (S-video) или другой коммуникационный A/V интерфейс.
На фиг. 4А и 4В представлен более подробный обзор иллюстративной архитектуры аппаратных средств/программного обеспечения интерфейсного устройства и определенных вычислительных устройств согласно различным реализациям настоящего раскрытия изобретения. Фиг. 4А иллюстрирует архитектуру вычислительных устройств для примера терминальной системы в соответствии с различными аспектами настоящего раскрытия изобретения. Фиг. 4В иллюстрирует архитектуру вычислительных устройств для примера хост-системы, содержащей пример интерфейсного устройства согласно различным реализациям настоящего раскрытия изобретения. В некоторых реализациях терминальная система может представлять собой существующую встроенную систему, видеоигровую приставку или другое вычислительное устройство, имеющее специализированную архитектуру. В некоторых реализациях хост-системой может являться потоковый сервер, настроенный на потоковую передачу приложения, выполняемого в терминальной системе, клиентскому устройству, например, как показано на фиг. 2.
Пример терминальной системы 412 может включать в себя хост-контроллер 424 массового запоминающего устройства (именуемый также хост-адаптером или хост-адаптером шины), каковым может являться, например, хост-контроллер SATA (AHCI), хост-контроллер USB или хост-контроллер для другого стандарта на коммуникационный интерфейс массового ЗУ. Терминальная система 412 может содержать также соответствующий драйвер 426 массового запоминающего устройства, совместимый с хост-контроллером 424 массового ЗУ и облегчающий передачу через интерфейс ЗУ. Для подключения к массовому запоминающему устройству обычно следует подсоединять хост-контроллер 424 к массовому ЗУ с использованием соответствующего соединителя (такого, как соединитель SATA-кабеля, USB-кабеля или другой соединитель в зависимости от интерфейса массового ЗУ терминальной системы). В частности, хост-контроллер 424 следует подсоединять к контроллеру массового ЗУ (именуемому также иногда "контроллером диска", хотя массовым ЗУ может являться твердотельный накопитель или другое ЗУ, в котором не используется диск) конкретного массового ЗУ, к которому подсоединяется хост-контроллер. В примере системы, иллюстрируемом фиг. 4А-4В, хост-контроллер 424 вместо указанного выше соединения подсоединяется к интерфейсному устройству 420, которое вместе со своей хост-системой 402 эмулирует массовое запоминающее устройство для терминальной системы 412.
Интерфейсное устройство 420 может содержать коммуникационный интерфейс для соединений массового ЗУ, совместимый с коммуникационным интерфейсом памяти, используемым терминальной системой 412. Коммуникационный интерфейс интерфейсного устройства может содержать один или большее количество портов 414 массового запоминающего устройства, таких как один или большее количество SATA-портов, USB-портов или других совместимых аппаратных средств интерфейса массового ЗУ. Интерфейсное устройство 402 может содержать специализированный процессор, функционально связанный с аппаратным интерфейсом массового запоминающего устройства, причем специализированный процессор содержит логику 428, которая назначена выполнению функций, связанных с эмуляцией массового ЗУ, и опционально других функций для сигналов, получаемых через соединитель запоминающего устройства от терминальной системы 402. Логика 428 может поддерживать также связь с хост-системой 402 через дополнительный коммуникационный интерфейс, который может взаимодействовать с периферийной шиной хост-системы 402 с целью сопряжения с процессом сохранения данных, реализованным в хост-системе. В качестве примера, не подразумевающего никаких ограничений, интерфейсным устройством 420 может являться расширительная карта, взаимодействующая с шиной обработки данных хост-системы 402 через интерфейс расширения, такой как интерфейс межсоединения периферийных компонентов (peripheral component interconnect; PCI), расширенного PCI (PCI-eXtended; PCI-X), PCI-Express (PCIe) или другой интерфейс, облегчающий связь с хост-системой 402, например, по периферийной шине. Хост-система может содержать драйвер 426 интерфейсного устройства для поддержки обмена сигналами через интерфейсное устройство 420.
В определенных вариантах реализации специализированный процессор может быть выполнен в виде программируемой пользователем вентильной матрицы (FPGA), специализированной заказной интегральной схемы (ASIC) или другого специализированного блока обработки, содержащего выделенные элементы логики, сконфигурированные в соответствии с изложенными здесь принципами. Логические элементы 428 специализированного процессора могут также включать в себя специализированную логику, поддерживающую облачные поточные операции в дополнение к виртуализации запоминающего устройства, такие как считывание аудио/видеоинформации выходных данных из приложения 408, выполняемого в терминальной системе 402, что может облегчить потоковую передачу аудио/видеовыходной информации по сети посредством хост-системы 402 в вариантах реализации, включающих в себя облачные игровые сервисы. Интерфейсная карта 402 может включать в себя коммуникационный интерфейс аудио/видео (AV) передачи, например один или большее количество портов HDMI или других A/V-портов, а также совместимый A/V-приемник 430 для приема выходных A/V-сигналов приложения, выполняемого в терминальной системе, через соответствующий A/V-соединитель.
В примере, иллюстрируемом фиг. 4А-4В, контроллер массового запоминающего устройства, реализованный в логике 428 специализированного процессора, работает под управлением драйвера 426 интерфейсного устройства в хост-системе 402, и процесс 432 сохранения данных, реализованный в хост-системе 402, например программное приложение, выполняемое в центральном процессоре 404 может обеспечить сервисы пересылки данных для драйвера 426 интерфейсного устройства.
Например, если терминальная система 412 запрашивает считывание данных из своего дискового накопителя данных или из другого массового запоминающего устройства, подсоединенного к ней через интерфейс массового ЗУ, в данном запросе это может быть реализовано через хост-контроллер 424 массового ЗУ, контроллер массового ЗУ, содержащийся в логике 428, драйвер 426 интерфейсного устройства к процессу 432 сохранения данных, реализованному в хост-системе. Далее процесс 432 сохранения данных может выбирать данные, доступные ему из различных источников. Например, процесс 432 сохранения данных может извлекать данные из дискового накопителя или из другого массового запоминающего устройства, подсоединенного к главному компьютеру, или может извлекать данные из дисководов или серверов сохранения данных по сети. Независимо от того, какой способ используется процессом сохранения данных, этот способ прозрачен для терминальной системы 402.
В определенных вариантах реализации возможно опциональное использование в качестве хост-системы 402 потокового сервера, адаптированного к передаче по сети потока выходных данных от приложения 408, выполняемого в терминальной системе 412. Например, хост-система 402 может включать в себя аудио/видео (A/V) процесс 434, который может являться приложением, выполняемым в хост-системе 402. Процесс сбора A/V-данных может быть скоординирован с помощью специализированной логики 428 в специализированном процессоре для формирования A/V-потока, пересылаемого через A/V-соединитель, подсоединенный к интерфейсной карте 420. Потоковый сервер 402 может содержать адаптер Ethernet или другой сетевой адаптер 436 и соответствующий драйвер Ethernet или другой сетевой драйвер 438 для операционной системы хоста 402 с совместимой сетевой библиотекой 439, обеспечивающей поддержку протокола для передачи по сети. Хост-система может содержать также системную память 440, управляемую соответствующим драйвером 442 памяти (например, временного файлового хранилища) и поддерживаемую файловой системной библиотекой 444. Процесс 446 потокового сервера может быть реализован в хост-системе 402 для выполнения функций, связанных с предоставлением потока в реальном времени клиентскому устройству, подсоединенному к сети (не показано на фиг. 4А-4В).
В некоторых ситуациях память данных может быть исполнена с использованием комбинации удаленного сервера 448 сохранения данных (очерчен пунктирной линией на фиг. 4А), запоминающего устройства 440 и драйвера 442 запоминающего устройства. В качестве примера, не подразумевающего никаких ограничений, в некоторых вариантах реализации возможно лишь считывание данных из сервера 448 хранения данных и запись в запоминающее устройство 440 посредством драйвера 442 запоминающего устройства.
Терминальная система 412 может включать в себя различные другие компоненты для поддержки приложения 408, которое может являться, например, программным обеспечением видеоигр, разработанным для существующей встроенной платформы.
Терминальная система 412 может включать в себя уровень 427 файловой системы для доступа к запоминающему устройству, а также различные компоненты для поддержки вывода графики для приложения 408. В дополнение к центральному процессору (CPU) терминальная система 412 может содержать графический процессор (GPU) 450, который может приводиться в действие графическим драйвером 452 и поддерживаться графической библиотекой 454. Передатчик 456 аудио/видео (A/V) сигналов (например, HDMI-передатчик) может быть подключен для передачи аудио и/или видеовыходной информации интерфейсному устройству хоста в хост-системе через совместимый A/V-соединитель.
На фиг. 5 приведено схематическое изображение примера интерфейсного устройства 520, которое может быть исполнено на интерфейсной карте 420, показаны некоторые компоненты на ней и внутренние компоненты примера специализированного процессора 560 в соответствии с различными вариантами реализации настоящего раскрытия изобретения. В качестве примера, не подразумевающего никаких ограничений, интерфейсное устройство 520 может быть выполнено в виде расширительной карты, содержащей компоненты, подсоединенные к печатной плате (РСВ), и интерфейсная карта 520 может согласованно взаимодействовать с периферийной шиной хост-системы через аппаратный интерфейс 562 хоста, например расширительный порт периферийной шины или другой коммуникационный расширительный интерфейс, обеспечивающий возможность передачи по периферийной шине хост-системы в подключенном состоянии.
Пример специализированного процессора 560 может включать в себя различные элементы логики, назначенные специализированному функционалу в соответствии с различными аспектами настоящего раскрытия изобретения. Специализированный процессор может быть выполнен в виде, например, FPGA, ASIC или аналогичного специализированного блока обработки. Специализированный процессор 560 может содержать интерфейсный блок 564 хоста, реализующий часть стека протоколов в качестве коммуникационного интерфейса между интерфейсной картой 520 и периферийной шиной хост-системы (не показана на фиг. 5) для интерфейсного устройства 560.
Коммуникационные шины, такие как PCI-Express, можно представить в виде стека протоколов, имеющего несколько уровней. Различные коммуникационные протоколы различаются между собой по уровням. Как правило, вверху находится уровень приложений, посередине расположены уровни, связанные с транспортом данных, и внизу находится некоторый физический уровень. От интерфейсного блока 564 хоста не требуется реализация всех уровней такого стека протоколов. Вместо этого интерфейсный блок хоста может реализовывать физический уровень, отвечающий за ввод цифровой информации в канал передачи, например, в форме электрических или оптических сигналов. Интерфейсный блок хоста может отвечать также за часть "транспортных уровней" стека протоколов или, возможно, за все эти уровни, но не несет ответственность за уровень приложений.
В качестве примера, не подразумевающего никаких ограничений, интерфейсный блок 564 хоста может представлять собой аппаратный блок PCIe для передачи путем подключения к шине PCI-Express, который встраивает стек протоколов для интерфейса PCIe или другого интерфейса для доступа к локальной шине хост-системы. Интерфейсный блок 564 хоста может быть интегрирован в интерфейсный блок 566 доступа к памяти, который совместно с другими логическими элементами специализированного процессора 560 может напрямую осуществлять доступ к системному ЗУ хост-системы через аппаратный интерфейс 562 хоста, например, путем прерывания запроса к хост-системе.
В некоторых вариантах реализации интерфейс 566 доступа к памяти может включать в себя компоненты, обеспечивающие доступ к памяти и реализующие функционал прерывания. В частности, интерфейсный блок 564 может быть выполнен с возможностью установления соединения между межсоединениями на кристалле (an on-chip-interconnect) 572 и аппаратным интерфейсом 562 хоста способом, при котором любое расположенное на кристалле устройство становится доступным со стороны хост-системы с использованием распределенного ввода/вывода (I/O) данных памяти. Данный функционал предположительно предоставляет хост-системе возможность программирования любого устройства, подсоединенного к межсоединениям на кристалле 572, такого как контроллер 570 массового ЗУ, контроллер 576 памяти или GPIO 582.
Интерфейс 566 доступа к памяти может также включать в себя соединительный элемент 565 прерывания, позволяющий любому подсоединенному устройству (например, контроллеру 570 массового ЗУ) генерировать прерывание в ответ на появление события (например, запроса считывания из массового ЗУ). Реализация данного функционала интерфейсом доступа к памяти желательна, если имеется только одно устройство, сопряженное с аппаратными средствами 562 аппаратного интерфейса хоста.
Возможно также наличие (опциональное) в интерфейсе 566 доступа к памяти подсистемы 567 прямого доступа к памяти (DMA). В смысле, используемом здесь и общепринятом среди специалистов в данной области, под прямым доступом к памяти (DMA) понимается функция, позволяющая определенным подсистемам аппаратных средств внутри компьютера получать доступ к системной памяти независимо от центрального процессора (CPU) компьютера. Подсистема 567 DMA может выполнять операции переноса данных между интерфейсным блоком 564 хоста и аппаратным интерфейсом 562 хоста. В некоторых вариантах реализации интерфейсный блок 566 доступа к памяти может реализовывать части стека протоколов (например, PCI Express), не обеспечиваемые интерфейсным блоком 564 хоста, такие как подсоединение интерфейсного блока 564 хоста к межсоединениям на кристалле (on-chip-interconnect) 572.
В интересах функционала для виртуализации массового запоминающего устройства интерфейсное устройство 520 может содержать один или большее количество коммуникационных интерфейсов 568 массового ЗУ, которые могут быть исполнены в виде одного или большего количества SATA-портов 569 и/или соединителей либо другие коммуникационные интерфейсы массового ЗУ, которые могут быть присоединены к плате интерфейсного устройства 520. В качестве примера, не подразумевающего никаких ограничений, интерфейсная карта 520 может содержать два SATA-порта для облегчения подключения к двум терминальным системам, хотя следует заметить, что в разных вариантах исполнения интерфейсное устройство может содержать разное количество соединителей массового ЗУ с тем, чтобы одно интерфейсное устройство 520 имело возможность обслуживать разное количество терминальных систем. Для каждого из соединителей 568 массового запоминающего устройства может быть предусмотрен соответствующий контроллер 570 массового ЗУ, реализованный в специализированном процессоре 560 и являющийся совместимым с конкретным коммуникационным интерфейсом (например, SATA) массового ЗУ.
Возможно подключение одного или большего количества контроллеров 570 массового ЗУ к другим логическим элементам специализированного процессора 560 через межсоединения на кристалле 572, которые могут предоставить каждому из контроллеров 572 массового ЗУ доступ к компонентам интерфейса хост-системы (например, PCI-Express). Межсоединения на кристалле могут быть выполнены в виде внутрикристальной шины стандартной архитектуры с возможностью подсоединения функциональных блоков в специализированном процессоре (например, FPGA или ASIC). Например, если специализированным процессором 560 является FPGA, то компоненты специализированной обработки могут быть связаны между собой согласно архитектуре "главный-подчиненный", например расширенной шинной архитектуре для микроконтроллеров (АМВА), такой как AXI4 или AXI4-Lite, или другой подходящей архитектуре внутрикристальной шины. Архитектура AXI4 может быть использована для пересылки больших объемов данных, a AXI-Lite - для соединений при низкой производительности или в целях конфигурирования. Межсоединения на кристалле логических блоков специализированного процессора могут быть выполнены согласно конфигурации типа "главный-подчиненный", как показано на фиг. 5. На представленной схеме буква "М" и соответствующие жирные линии обозначают подключение главных блоков, "S" и соответствующие штриховые линии обозначают подключение подчиненных блоков, a "Ctrl" обозначает управление.
Интерфейсное устройство 520 может содержать один или большее количество блоков 574 памяти, которые могут работать под управлением контроллера 576 памяти, предусмотренного в логике специализированного процессора 560. Блок памяти может поддерживать пересылку данных между терминальной системой, подсоединенной через интерфейс 568 массового ЗУ, и хост-системой, подсоединенной через аппаратный интерфейс 562 хоста, в соответствии с запросами данных, выдаваемыми терминальной системой. Например, блок 574 памяти может представлять собой внутреннее ОЗУ (например, DDR3 RAM) или другой энергозависимый блок памяти с возможностью временного хранения данных, указываемых в запросах на считывание, выдаваемых терминальной системой, в соответствии с изложенными здесь принципами. Контроллер 576 памяти может быть подсоединен к архитектуре 572 внутрикристальной шины для выполнения операций записи/считывания в соответствии с сигналами, получаемыми от других логических элементов специализированного процессора 560.
Во время работы хост-контроллер массового ЗУ вычислительного устройства (не показан на фиг. 5), подсоединенный через интерфейс 560 запоминающего устройства, может посылать запросы контроллеру 570 массового ЗУ на выполнение операций записи, считывания и других операций. После получения такого запроса контроллер 570 массового ЗУ может посылать уведомление драйверу интерфейсного устройства и процессу сохранения данных в хост-системе (не показаны на фиг. 5), используя прерывание запроса, через аппаратный интерфейс 562 хоста, например PCI-Express. Далее компоненты программного обеспечения хост-системы могут принимать решение об обработке запроса.
Например, при поступлении от терминальной системы запроса на считывание данных приложение сохранения данных в хост-системе (не показано) может осуществить выборку этих данных из некоторого источника хранения данных и записать их в блок памяти 574 интерфейсного устройства через аппаратный интерфейс 562 хоста. После этого приложение сохранения данных в хост-системе может запрограммировать контроллер 570 массового ЗУ в специализированном процессоре 560 на выполнение запроса на считывание путем считывания данных из памяти 574 интерфейсного устройства. В качестве примера, не подразумевающего никаких ограничений, предположим, что хост-контроллером 424 массового ЗУ может являться контроллер SATA. Для выполнения SATA-транзакции (операций считывания/записи и других) хост-контроллер 424 массового ЗУ в потоковом сервере 402 генерирует прерывание. Хост-драйвер 426 массового ЗУ в потоковом сервере 402 проверяет состояние хост-контроллера 424 массового ЗУ. Если запрос определен в качестве "запроса записи", то хост-контроллер 424 массового ЗУ программируется на запись его данных в память 574 (например, память DDR3) в интерфейсном устройстве 520. Хост-контроллер 424 массового ЗУ может содержать для этой цели собственную встроенную подсистему прямого доступа к памяти (DMA) 567. Другое прерывание генерируется, когда данные записаны в память 574. Далее хост-драйвер 426 массового ЗУ генерирует запрос DMA с использованием подсистемы 567 для копирования из памяти 574 в память 440 хост-системы.
Буфер в памяти 440 хост-системы может быть напрямую доступен процессу сохранения данных для совместного использования. После выполнения DMA-транзакции в отношении памяти 440 хост-системы процесс сохранения данных уведомляется о запросе записи и вызывает завершение транзакции записи. Он может записать данные на диск, в сетевой накопитель данных или в любое удобное для него хранилище данных.
Следует заметить, что память 574 в интерфейсном устройстве 520 может не потребоваться для операций считывания или записи. Хост-контроллер 424 массового ЗУ может иметь возможность прямой записи в системную память 440 хоста. Например, интерфейсный блок 566 доступа к памяти мог бы обеспечить переход от PCI-Express к. AXI4 и также от AXI4 к PCI-Express. Данная функция позволила бы главному устройству AXI4 выполнять запись в память хост-системы.
Возможно опциональное оснащение интерфейсного устройства разными другими компонентами, обеспечивающими дополнительные функциональные возможности для потоковых приложений, выполняемых в терминальной системе, таких как потоковые приложения облачных игровых сервисов. Например, специализированный процессор 560 может также содержать один или большее количество блоков 578 сбора аудио и/или видео (A/V) информации для получения потока A/V данных от одной или большего количества терминальных систем. Каждый из логических блоков 578 сбора A/V информации, используемых в единственном или множественном числе, может быть функционально связан с соответствующим приемником 530 A/V данных, каждый из которых может быть в свою очередь подсоединен к соответствующему аппаратному интерфейсу 580 A/V передачи, такому как порт HDMI или другой соединительный порт A/V передачи, как показано на фиг. 5. Выходные A/V данные от терминальной системы могут быть пересланы приемнику 530 A/V данных через A/V-интерфейс 580 с использованием совместимого A/V-соединителя. Блок 578 сбора A/V данных может взаимодействовать с драйвером интерфейсного устройства и A/V-процессом в хост-системе через аппаратный интерфейс 562 хоста, который может быть подсоединен к шине хост-системы (например, периферийной Шине), и при этом хост-система может доставлять поток A/V данных клиентскому устройству по сети.
Интерфейсное устройство 582 может также содержать один или большее количество блоков универсального ввода/вывода (GPIO) для поддержки дополнительных функциональных возможностей. В качестве примера, не подразумевающего никаких ограничений, каждый из блоков GPIO может быть подсоединен к соответствующему блоку терминальной системы для обеспечения дополнительных функциональных возможностей, таких как регулировка мощности терминальных систем и другие функциональные возможности.
Как упоминалось выше, специализированный процессор 560 может быть выполнен, например, в виде FPGA, ASIC или другой интегральной схемы, имеющей блоки, назначенные определенным функционалам, таким как контроллер массового ЗУ, контроллер памяти, подсистема DMA т.п., в соответствии с различными аспектами настоящего раскрытия изобретения. В определенных вариантах реализации настоящего раскрытия изобретения один или большее количество этих блоков может быть реализовано в виде многократно используемых логических элементов или микросхем другой конструкции, известных специалистам в данной области под названием IP-блоков или IP-ядер.
На фиг. 6 приведен пример логической блок-схемы для эмуляции массового запоминающего устройства для терминальной системы 612 в соответствии с различными аспектами настоящего раскрытия изобретения. В примере, иллюстрируемом фиг. 6, интерфейсное устройство 620 и хост-система 602, функционально связанные между собой, выполнены с возможностью эмуляции массового ЗУ для терминальной системы 612. Независимо от того, что пример на фиг. 6 иллюстрирует в пояснительных целях эмуляцию для запроса на считывание, выданного терминальной системой, следует заметить, что раскрытое здесь изобретение может быть реализовано в вариантах с возможностью выполнения запросов записи и других запросов в отношении массового запоминающего устройства, выдаваемых терминальной системой, с использованием показанных компонентов.
Как показано на фиг. 6, массовое ЗУ может быть эмулировано для терминальной системы 612 или любой другой компьютерной системы, которая может иметь центральный процессор (CPU) 681 и блок памяти 682 с возможностью выполнения различных приложений (не показаны). Терминальная система 612 может осуществлять различные запросы на считывание, записи и другие запросы данных через соединитель массового запоминающего устройства с использованием контроллера 624 массового ЗУ. Обычно эти запросы выполняются локальным массовым ЗУ, имеющим соответствующий контроллер устройства. В примере на фиг. 6 эти запросы данных могут быть выполнены интерфейсным устройством 620 в коммуникационном взаимодействии с хостовой компьютерной системой 602, имеющей возможность доступа к некоторому другому накопительному источнику 699 для обработки различных запросов данных.
В иллюстрации на фиг. 6 запрос на считывание 684 выдается хост-контроллером 624 массового ЗУ терминальной системы 612 и принимается контроллером 670 массового ЗУ специализированного процессора 660. Контроллер 670 массового ЗУ уведомляет процесс сохранения данных 632, реализованный в хост-системе 602, путем прерывания запроса 684, например, посредством подсистемы 666 прямого доступа к памяти (DMA), как показано на фиг. 6. Процесс сохранения данных может представлять собой приложение, реализованное в системной памяти 640 хост-системы 602, которое может быть выполнено центральным процессором 686 хост-системы 602 для принятия решений об обработке запроса 684.
Как показано на фиг. 6, процесс сохранения данных может извлекать запрашиваемые данные 687 из некоторого другого источника хранения данных 699, такого как сервер хранения данных. Процесс сохранения данных может записывать извлеченные данные 689 в блок памяти 674 интерфейсного устройства, например, через интерфейс расширения (не показан), такой как PCI-е или другой интерфейс, для связи с периферийной шиной хост-системы 602. Следует заметить, что вместо исполнения в виде расширительной карты или другого периферийного компонента, осуществляющего связь с периферийной шиной через интерфейс расширения, в некоторых реализациях интерфейсное устройство 620 может быть исполнено в варианте со специализированным процессором 660, подсоединенным напрямую к периферийной шине хост-системы и являющимся встроенным элементом хост-системы 602.
В альтернативных вариантах реализации специализированный процессор 660 (например, FPGA, ASIC или эквивалентная интегральная схема) может быть установлен непосредственно на материнской плате потокового сервера 402 и подсоединен к периферийной шине в потоковом сервере. Специализированный процессор может быть подсоединен через PCI-Express.
Как только данные, извлеченные процессом сохранения данных, записываются в память 674 интерфейса, процесс сохранения данных может программировать контроллер 670 массового ЗУ на выполнение запроса путем доступа к данным 689, записанным в память интерфейса, и посылки их терминальной системе 612.
Во время операции считывания контроллер 670 массового ЗУ может генерировать прерывание (которое может быть переслано с помощью функционала прерывания, встроенного в подсистему 666 DMA) к драйверу запоминающего устройства в операционной системе хост-системы 602. Если запрос определен в качестве запроса 684 на считывание, драйвер запоминающего устройства посылает процессу 632 сохранения данных запрос на "считывание данных", записанных в память 640 хост-системы (эта память может использоваться совместно с драйвером запоминающего устройства). Сразу после считывания данных подсистема 666 DMA может быть запрограммирована на пересылку данных 689 от памяти 640 к памяти 674 интерфейса.
Заключение
Следует заметить, что аспекты настоящего раскрытия изобретения описаны со ссылкой на облачные игровые сервисы в качестве конкретного примера, в котором потребность в виртуализации массового запоминающего устройства может быть желательной в соответствии с различными вариантами реализации раскрытого здесь изобретения, но варианты реализации настоящего раскрытия изобретения этим не ограничиваются. Варианты реализации настоящего раскрытия изобретения могут обеспечить массовое запоминающее устройство для эмуляции, выполняемой любым вычислительным устройством, которое может быть не связано с облачными вычислениями или облачными игровыми сервисами.
Следует заметить, что в вариантах реализации настоящего раскрытия изобретения могут быть использованы любые среди разнообразных коммуникационных протоколов, включая SATA, USB, IDE, RS232, Firewire, Thunderbolt и любые другие стандарты на коммуникационный интерфейс массового ЗУ.
Следует заметить, что в вариантах реализации настоящего раскрытия изобретения могут быть использованы любые среди разнообразных стандартов на интерфейс для аудио и/или видеосигналов (A/V), таких как HDMI, S-Video, интерфейс для композитного видеосигнала, интерфейс для компонентного видеосигнала, Display Port, VGA, DVI и другие стандарты на коммуникационный A/V-интерфейс.
Несмотря на то что выше приведено полное описание предпочтительного варианта реализации настоящего изобретения, возможно использование различных альтернативных, измененных и эквивалентных вариантов. Поэтому объем настоящего изобретения следует определять не со ссылкой на приведенное выше описание, и руководствоваться вместо этого ссылкой на прилагаемую формулу изобретения в сочетании с полным набором эквивалентов пунктов этой формулы. Любой из описанных выше отличительных признаков независимо от того, является ли он предпочтительным, может быть объединен с любым другим описанным здесь отличительным признаком независимо от его предпочтительности. В прилагаемой формуле изобретения неопределенный артикль "а" или "an" обозначает один или большее количество элементов, указанных после артикля, если в явном виде не обозначено другое. Прилагаемые пункты формулы изобретения не следует считать включающими в себя ограничение "средство плюс функция", если такое ограничение не выражено в явном виде в заданном пункте с помощью фразы "средства для".